Merge 6.1.36 into android14-6.1-lts

Changes in 6.1.36
	drm/amd/display: Use dc_update_planes_and_stream
	drm/amd/display: Add wrapper to call planes and stream update
	drm/amd/display: fix the system hang while disable PSR
	tty: serial: fsl_lpuart: make rx_watermark configurable for different platforms
	tty: serial: fsl_lpuart: reduce RX watermark to 0 on LS1028A
	ata: libata-scsi: Avoid deadlock on rescan after device resume
	mm: Fix copy_from_user_nofault().
	tpm, tpm_tis: Claim locality in interrupt handler
	tpm_crb: Add support for CRB devices based on Pluton
	ksmbd: validate command payload size
	ksmbd: fix out-of-bound read in smb2_write
	ksmbd: validate session id and tree id in the compound request
	tick/common: Align tick period during sched_timer setup
	selftests: mptcp: remove duplicated entries in usage
	selftests: mptcp: join: fix ShellCheck warnings
	selftests: mptcp: lib: skip if missing symbol
	selftests: mptcp: connect: skip transp tests if not supported
	selftests: mptcp: connect: skip disconnect tests if not supported
	selftests: mptcp: pm nl: remove hardcoded default limits
	selftests: mptcp: pm nl: skip fullmesh flag checks if not supported
	selftests: mptcp: sockopt: relax expected returned size
	selftests: mptcp: sockopt: skip getsockopt checks if not supported
	selftests: mptcp: userspace pm: skip if 'ip' tool is unavailable
	selftests: mptcp: userspace pm: skip if not supported
	selftests: mptcp: lib: skip if not below kernel version
	selftests: mptcp: join: use 'iptables-legacy' if available
	selftests: mptcp: join: helpers to skip tests
	selftests: mptcp: join: skip check if MIB counter not supported
	selftests: mptcp: join: support local endpoint being tracked or not
	selftests: mptcp: join: skip Fastclose tests if not supported
	selftests: mptcp: join: support RM_ADDR for used endpoints or not
	selftests: mptcp: join: skip implicit tests if not supported
	selftests: mptcp: join: skip backup if set flag on ID not supported
	selftests: mptcp: join: skip fullmesh flag tests if not supported
	selftests: mptcp: join: skip MPC backups tests if not supported
	selftests/mount_setattr: fix redefine struct mount_attr build error
	selftests: mptcp: diag: skip listen tests if not supported
	selftests: mptcp: sockopt: skip TCP_INQ checks if not supported
	selftests: mptcp: join: skip test if iptables/tc cmds fail
	selftests: mptcp: join: skip userspace PM tests if not supported
	selftests: mptcp: join: skip fail tests if not supported
	selftests: mptcp: join: fix "userspace pm add & remove address"
	writeback: fix dereferencing NULL mapping->host on writeback_page_template
	scripts: fix the gfp flags header path in gfp-translate
	nilfs2: fix buffer corruption due to concurrent device reads
	ACPI: sleep: Avoid breaking S3 wakeup due to might_sleep()
	KVM: Avoid illegal stage2 mapping on invalid memory slot
	Drivers: hv: vmbus: Call hv_synic_free() if hv_synic_alloc() fails
	Drivers: hv: vmbus: Fix vmbus_wait_for_unload() to scan present CPUs
	PCI: hv: Fix a race condition bug in hv_pci_query_relations()
	Revert "PCI: hv: Fix a timing issue which causes kdump to fail occasionally"
	PCI: hv: Remove the useless hv_pcichild_state from struct hv_pci_dev
	PCI: hv: Fix a race condition in hv_irq_unmask() that can cause panic
	PCI: hv: Add a per-bus mutex state_lock
	io_uring/net: clear msg_controllen on partial sendmsg retry
	io_uring/net: disable partial retries for recvmsg with cmsg
	mptcp: handle correctly disconnect() failures
	mptcp: fix possible divide by zero in recvmsg()
	mptcp: fix possible list corruption on passive MPJ
	mptcp: consolidate fallback and non fallback state machine
	cgroup: Do not corrupt task iteration when rebinding subsystem
	cgroup,freezer: hold cpu_hotplug_lock before freezer_mutex in freezer_css_{online,offline}()
	mmc: litex_mmc: set PROBE_PREFER_ASYNCHRONOUS
	mmc: sdhci-msm: Disable broken 64-bit DMA on MSM8916
	mmc: meson-gx: remove redundant mmc_request_done() call from irq context
	mmc: mmci: stm32: fix max busy timeout calculation
	mmc: sdhci-spear: fix deferred probing
	mmc: bcm2835: fix deferred probing
	mmc: sunxi: fix deferred probing
	bpf: ensure main program has an extable
	wifi: iwlwifi: pcie: Handle SO-F device for PCI id 0x7AF0
	spi: spi-geni-qcom: correctly handle -EPROBE_DEFER from dma_request_chan()
	regulator: pca9450: Fix LDO3OUT and LDO4OUT MASK
	regmap: spi-avmm: Fix regmap_bus max_raw_write
	arm64: dts: rockchip: Fix rk356x PCIe register and range mappings
	io_uring/poll: serialize poll linked timer start with poll removal
	nilfs2: prevent general protection fault in nilfs_clear_dirty_page()
	x86/mm: Avoid using set_pgd() outside of real PGD pages
	memfd: check for non-NULL file_seals in memfd_create() syscall
	mmc: meson-gx: fix deferred probing
	ieee802154: hwsim: Fix possible memory leaks
	xfrm: Treat already-verified secpath entries as optional
	xfrm: interface: rename xfrm_interface.c to xfrm_interface_core.c
	xfrm: Ensure policies always checked on XFRM-I input path
	KVM: arm64: PMU: Restore the host's PMUSERENR_EL0
	bpf: track immediate values written to stack by BPF_ST instruction
	bpf: Fix verifier id tracking of scalars on spill
	xfrm: fix inbound ipv4/udp/esp packets to UDPv6 dualstack sockets
	bpf: Fix a bpf_jit_dump issue for x86_64 with sysctl bpf_jit_enable.
	selftests: net: tls: check if FIPS mode is enabled
	selftests: net: vrf-xfrm-tests: change authentication and encryption algos
	selftests: net: fcnal-test: check if FIPS mode is enabled
	xfrm: Linearize the skb after offloading if needed.
	net/mlx5: DR, Fix wrong action data allocation in decap action
	sfc: use budget for TX completions
	net: qca_spi: Avoid high load if QCA7000 is not available
	mmc: mtk-sd: fix deferred probing
	mmc: mvsdio: fix deferred probing
	mmc: omap: fix deferred probing
	mmc: omap_hsmmc: fix deferred probing
	mmc: owl: fix deferred probing
	mmc: sdhci-acpi: fix deferred probing
	mmc: sh_mmcif: fix deferred probing
	mmc: usdhi60rol0: fix deferred probing
	ipvs: align inner_mac_header for encapsulation
	net: dsa: mt7530: fix trapping frames on non-MT7621 SoC MT7530 switch
	net: dsa: mt7530: fix handling of BPDUs on MT7530 switch
	net: dsa: mt7530: fix handling of LLDP frames
	be2net: Extend xmit workaround to BE3 chip
	netfilter: nf_tables: fix chain binding transaction logic
	netfilter: nf_tables: add NFT_TRANS_PREPARE_ERROR to deal with bound set/chain
	netfilter: nf_tables: drop map element references from preparation phase
	netfilter: nft_set_pipapo: .walk does not deal with generations
	netfilter: nf_tables: disallow element updates of bound anonymous sets
	netfilter: nf_tables: reject unbound anonymous set before commit phase
	netfilter: nf_tables: reject unbound chain set before commit phase
	netfilter: nf_tables: disallow updates of anonymous sets
	netfilter: nfnetlink_osf: fix module autoload
	Revert "net: phy: dp83867: perform soft reset and retain established link"
	bpf/btf: Accept function names that contain dots
	bpf: Force kprobe multi expected_attach_type for kprobe_multi link
	io_uring/net: use the correct msghdr union member in io_sendmsg_copy_hdr
	selftests: forwarding: Fix race condition in mirror installation
	platform/x86/amd/pmf: Register notify handler only if SPS is enabled
	sch_netem: acquire qdisc lock in netem_change()
	revert "net: align SO_RCVMARK required privileges with SO_MARK"
	arm64: dts: rockchip: Enable GPU on SOQuartz CM4
	arm64: dts: rockchip: fix nEXTRST on SOQuartz
	gpiolib: Fix GPIO chip IRQ initialization restriction
	gpio: sifive: add missing check for platform_get_irq
	gpiolib: Fix irq_domain resource tracking for gpiochip_irqchip_add_domain()
	scsi: target: iscsi: Prevent login threads from racing between each other
	HID: wacom: Add error check to wacom_parse_and_register()
	arm64: Add missing Set/Way CMO encodings
	smb3: missing null check in SMB2_change_notify
	media: cec: core: disable adapter in cec_devnode_unregister
	media: cec: core: don't set last_initiator if tx in progress
	nfcsim.c: Fix error checking for debugfs_create_dir
	btrfs: fix an uninitialized variable warning in btrfs_log_inode
	usb: gadget: udc: fix NULL dereference in remove()
	nvme: double KA polling frequency to avoid KATO with TBKAS on
	nvme: check IO start time when deciding to defer KA
	nvme: improve handling of long keep alives
	Input: soc_button_array - add invalid acpi_index DMI quirk handling
	arm64: dts: qcom: sc7280-idp: drop incorrect dai-cells from WCD938x SDW
	arm64: dts: qcom: sc7280-qcard: drop incorrect dai-cells from WCD938x SDW
	s390/cio: unregister device when the only path is gone
	spi: lpspi: disable lpspi module irq in DMA mode
	ASoC: codecs: wcd938x-sdw: do not set can_multi_write flag
	ASoC: simple-card: Add missing of_node_put() in case of error
	soundwire: dmi-quirks: add new mapping for HP Spectre x360
	soundwire: qcom: add proper error paths in qcom_swrm_startup()
	ASoC: nau8824: Add quirk to active-high jack-detect
	ASoC: amd: yc: Add Thinkpad Neo14 to quirks list for acp6x
	gfs2: Don't get stuck writing page onto itself under direct I/O
	s390/purgatory: disable branch profiling
	ASoC: fsl_sai: Enable BCI bit if SAI works on synchronous mode with BYP asserted
	ALSA: hda/realtek: Add "Intel Reference board" and "NUC 13" SSID in the ALC256
	i2c: mchp-pci1xxxx: Avoid cast to incompatible function type
	ARM: dts: Fix erroneous ADS touchscreen polarities
	null_blk: Fix: memory release when memory_backed=1
	drm/exynos: vidi: fix a wrong error return
	drm/exynos: fix race condition UAF in exynos_g2d_exec_ioctl
	drm/radeon: fix race condition UAF in radeon_gem_set_domain_ioctl
	vhost_vdpa: tell vqs about the negotiated
	vhost_net: revert upend_idx only on retriable error
	KVM: arm64: Restore GICv2-on-GICv3 functionality
	x86/apic: Fix kernel panic when booting with intremap=off and x2apic_phys
	i2c: imx-lpi2c: fix type char overflow issue when calculating the clock cycle
	smb: move client and server files to common directory fs/smb
	Linux 6.1.36

Note, this "merges away" commit:
	679354bea008 ("KVM: arm64: Restore GICv2-on-GICv3 functionality")
because of the merge conflicts were too complex to resolve.  If this is
needed in the android tree it should be brought back as an individual
change in the future.

Change-Id: Iafee89e3fb40c8bd631e6cc22eaaf7453b82f727
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
diff --git a/.gitignore b/.gitignore
index 5da0048..861843b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -168,3 +168,7 @@
 
 # Rust analyzer configuration
 /rust-project.json
+
+# Android ABI build files
+abi_gki_protected_exports
+all_kmi_symbols
diff --git a/BUILD.bazel b/BUILD.bazel
new file mode 100644
index 0000000..786d7193
--- /dev/null
+++ b/BUILD.bazel
@@ -0,0 +1,629 @@
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (C) 2021 The Android Open Source Project
+
+load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir")
+load("//build/kernel/kleaf:common_kernels.bzl", "define_common_kernels", "define_db845c")
+load("//build/kernel/kleaf:kernel.bzl", "ddk_headers", "kernel_build", "kernel_images", "kernel_modules_install")
+load(":modules.bzl", "COMMON_GKI_MODULES_LIST")
+
+package(
+    default_visibility = [
+        "//visibility:public",
+    ],
+)
+
+_GKI_AARCH64_MAKE_GOALS = [
+    "Image",
+    "Image.lz4",
+    "Image.gz",
+    "modules",
+]
+
+_GKI_RISCV64_MAKE_GOALS = [
+    "Image",
+    "Image.lz4",
+    "Image.gz",
+    "modules",
+]
+
+_GKI_X86_64_MAKE_GOALS = [
+    "bzImage",
+    "modules",
+]
+
+filegroup(
+    name = "aarch64_additional_kmi_symbol_lists",
+    srcs = [
+        # keep sorted
+        "android/abi_gki_aarch64_db845c",
+        "android/abi_gki_aarch64_exynos",
+        "android/abi_gki_aarch64_galaxy",
+        "android/abi_gki_aarch64_honor",
+        "android/abi_gki_aarch64_imx",
+        "android/abi_gki_aarch64_mtk",
+        "android/abi_gki_aarch64_oplus",
+        "android/abi_gki_aarch64_pixel",
+        "android/abi_gki_aarch64_qcom",
+        "android/abi_gki_aarch64_unisoc",
+        "android/abi_gki_aarch64_virtual_device",
+        "android/abi_gki_aarch64_vivo",
+        "android/abi_gki_aarch64_xiaomi",
+    ],
+    visibility = ["//visibility:public"],
+)
+
+define_common_kernels(target_configs = {
+    "kernel_aarch64": {
+        "kmi_symbol_list_strict_mode": True,
+        "module_implicit_outs": COMMON_GKI_MODULES_LIST,
+        "kmi_symbol_list": "android/abi_gki_aarch64",
+        "additional_kmi_symbol_lists": [":aarch64_additional_kmi_symbol_lists"],
+        "protected_exports_list": "android/abi_gki_protected_exports_aarch64",
+        "protected_modules_list": "android/gki_aarch64_protected_modules",
+        "make_goals": _GKI_AARCH64_MAKE_GOALS,
+    },
+    "kernel_aarch64_16k": {
+        "kmi_symbol_list_strict_mode": False,
+        "module_implicit_outs": COMMON_GKI_MODULES_LIST,
+        "make_goals": _GKI_AARCH64_MAKE_GOALS,
+    },
+    "kernel_aarch64_debug": {
+        "kmi_symbol_list_strict_mode": False,
+        "module_implicit_outs": COMMON_GKI_MODULES_LIST,
+        "kmi_symbol_list": "android/abi_gki_aarch64",
+        "additional_kmi_symbol_lists": [":aarch64_additional_kmi_symbol_lists"],
+        "protected_exports_list": "android/abi_gki_protected_exports_aarch64",
+        "protected_modules_list": "android/gki_aarch64_protected_modules",
+        "make_goals": _GKI_AARCH64_MAKE_GOALS,
+    },
+    "kernel_riscv64": {
+        "kmi_symbol_list_strict_mode": False,
+        "module_implicit_outs": COMMON_GKI_MODULES_LIST,
+        "make_goals": _GKI_RISCV64_MAKE_GOALS,
+    },
+    "kernel_x86_64": {
+        "kmi_symbol_list_strict_mode": False,
+        "module_implicit_outs": COMMON_GKI_MODULES_LIST,
+        "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,
+        "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,
+    },
+})
+
+define_db845c(
+    name = "db845c",
+    outs = [
+        "arch/arm64/boot/dts/qcom/qrb5165-rb5.dtb",
+        "arch/arm64/boot/dts/qcom/sdm845-db845c.dtb",
+        "arch/arm64/boot/dts/qcom/sm8450-qrd.dtb",
+    ],
+    define_abi_targets = True,
+    kmi_symbol_list = "//common:android/abi_gki_aarch64_db845c",
+    make_goals = [
+        "modules",
+        "qcom/sdm845-db845c.dtb",
+        "qcom/qrb5165-rb5.dtb",
+        "qcom/sm8450-qrd.dtb",
+    ],
+    module_outs = [
+        # keep sorted
+        "crypto/michael_mic.ko",
+        "drivers/base/regmap/regmap-sdw.ko",
+        "drivers/base/regmap/regmap-slimbus.ko",
+        "drivers/bus/mhi/host/mhi.ko",
+        "drivers/clk/qcom/clk-qcom.ko",
+        "drivers/clk/qcom/clk-rpmh.ko",
+        "drivers/clk/qcom/clk-spmi-pmic-div.ko",
+        "drivers/clk/qcom/dispcc-sdm845.ko",
+        "drivers/clk/qcom/dispcc-sm8250.ko",
+        "drivers/clk/qcom/gcc-sdm845.ko",
+        "drivers/clk/qcom/gcc-sm8250.ko",
+        "drivers/clk/qcom/gcc-sm8450.ko",
+        "drivers/clk/qcom/gpucc-sdm845.ko",
+        "drivers/clk/qcom/gpucc-sm8250.ko",
+        "drivers/clk/qcom/lpass-gfm-sm8250.ko",
+        "drivers/clk/qcom/videocc-sdm845.ko",
+        "drivers/clk/qcom/videocc-sm8250.ko",
+        "drivers/cpufreq/qcom-cpufreq-hw.ko",
+        "drivers/dma-buf/heaps/system_heap.ko",
+        "drivers/dma/qcom/bam_dma.ko",
+        "drivers/dma/qcom/gpi.ko",
+        "drivers/extcon/extcon-usb-gpio.ko",
+        "drivers/firmware/qcom-scm.ko",
+        "drivers/gpio/gpio-wcd934x.ko",
+        "drivers/gpu/drm/bridge/display-connector.ko",
+        "drivers/gpu/drm/bridge/lontium-lt9611.ko",
+        "drivers/gpu/drm/bridge/lontium-lt9611uxc.ko",
+        "drivers/gpu/drm/display/drm_display_helper.ko",
+        "drivers/gpu/drm/display/drm_dp_aux_bus.ko",
+        "drivers/gpu/drm/msm/msm.ko",
+        "drivers/gpu/drm/scheduler/gpu-sched.ko",
+        "drivers/hwspinlock/qcom_hwspinlock.ko",
+        "drivers/i2c/busses/i2c-designware-core.ko",
+        "drivers/i2c/busses/i2c-designware-platform.ko",
+        "drivers/i2c/busses/i2c-qcom-geni.ko",
+        "drivers/i2c/busses/i2c-qup.ko",
+        "drivers/i2c/busses/i2c-rk3x.ko",
+        "drivers/i2c/i2c-dev.ko",
+        "drivers/i2c/i2c-mux.ko",
+        "drivers/i2c/muxes/i2c-mux-pca954x.ko",
+        "drivers/iio/adc/qcom-spmi-adc5.ko",
+        "drivers/iio/adc/qcom-vadc-common.ko",
+        "drivers/input/misc/pm8941-pwrkey.ko",
+        "drivers/interconnect/qcom/icc-bcm-voter.ko",
+        "drivers/interconnect/qcom/icc-osm-l3.ko",
+        "drivers/interconnect/qcom/icc-rpmh.ko",
+        "drivers/interconnect/qcom/qnoc-sdm845.ko",
+        "drivers/interconnect/qcom/qnoc-sm8250.ko",
+        "drivers/interconnect/qcom/qnoc-sm8450.ko",
+        "drivers/iommu/arm/arm-smmu/arm_smmu.ko",
+        "drivers/irqchip/qcom-pdc.ko",
+        "drivers/leds/rgb/leds-qcom-lpg.ko",
+        "drivers/mailbox/qcom-apcs-ipc-mailbox.ko",
+        "drivers/mailbox/qcom-ipcc.ko",
+        "drivers/media/platform/qcom/venus/venus-core.ko",
+        "drivers/media/platform/qcom/venus/venus-dec.ko",
+        "drivers/media/platform/qcom/venus/venus-enc.ko",
+        "drivers/mfd/qcom-spmi-pmic.ko",
+        "drivers/mfd/wcd934x.ko",
+        "drivers/misc/fastrpc.ko",
+        "drivers/mmc/host/cqhci.ko",
+        "drivers/mmc/host/sdhci-msm.ko",
+        "drivers/net/can/spi/mcp251xfd/mcp251xfd.ko",
+        "drivers/net/wireless/ath/ath.ko",
+        "drivers/net/wireless/ath/ath10k/ath10k_core.ko",
+        "drivers/net/wireless/ath/ath10k/ath10k_pci.ko",
+        "drivers/net/wireless/ath/ath10k/ath10k_snoc.ko",
+        "drivers/net/wireless/ath/ath11k/ath11k.ko",
+        "drivers/net/wireless/ath/ath11k/ath11k_ahb.ko",
+        "drivers/net/wireless/ath/ath11k/ath11k_pci.ko",
+        "drivers/nvmem/nvmem_qfprom.ko",
+        "drivers/phy/qualcomm/phy-qcom-qmp-combo.ko",
+        "drivers/phy/qualcomm/phy-qcom-qmp-pcie.ko",
+        "drivers/phy/qualcomm/phy-qcom-qmp-pcie-msm8996.ko",
+        "drivers/phy/qualcomm/phy-qcom-qmp-ufs.ko",
+        "drivers/phy/qualcomm/phy-qcom-qmp-usb.ko",
+        "drivers/phy/qualcomm/phy-qcom-qusb2.ko",
+        "drivers/phy/qualcomm/phy-qcom-snps-femto-v2.ko",
+        "drivers/phy/qualcomm/phy-qcom-usb-hs.ko",
+        "drivers/pinctrl/qcom/pinctrl-lpass-lpi.ko",
+        "drivers/pinctrl/qcom/pinctrl-msm.ko",
+        "drivers/pinctrl/qcom/pinctrl-sdm845.ko",
+        "drivers/pinctrl/qcom/pinctrl-sm8250.ko",
+        "drivers/pinctrl/qcom/pinctrl-sm8250-lpass-lpi.ko",
+        "drivers/pinctrl/qcom/pinctrl-sm8450.ko",
+        "drivers/pinctrl/qcom/pinctrl-spmi-gpio.ko",
+        "drivers/pinctrl/qcom/pinctrl-spmi-mpp.ko",
+        "drivers/power/reset/qcom-pon.ko",
+        "drivers/power/reset/reboot-mode.ko",
+        "drivers/power/reset/syscon-reboot-mode.ko",
+        "drivers/regulator/gpio-regulator.ko",
+        "drivers/regulator/qcom-rpmh-regulator.ko",
+        "drivers/regulator/qcom_spmi-regulator.ko",
+        "drivers/regulator/qcom_usb_vbus-regulator.ko",
+        "drivers/remoteproc/qcom_common.ko",
+        "drivers/remoteproc/qcom_pil_info.ko",
+        "drivers/remoteproc/qcom_q6v5.ko",
+        "drivers/remoteproc/qcom_q6v5_adsp.ko",
+        "drivers/remoteproc/qcom_q6v5_mss.ko",
+        "drivers/remoteproc/qcom_q6v5_pas.ko",
+        "drivers/remoteproc/qcom_q6v5_wcss.ko",
+        "drivers/remoteproc/qcom_sysmon.ko",
+        "drivers/reset/reset-qcom-aoss.ko",
+        "drivers/reset/reset-qcom-pdc.ko",
+        "drivers/rpmsg/qcom_glink.ko",
+        "drivers/rpmsg/qcom_glink_rpm.ko",
+        "drivers/rpmsg/qcom_glink_smem.ko",
+        "drivers/rpmsg/qcom_smd.ko",
+        "drivers/rpmsg/rpmsg_ns.ko",
+        "drivers/rtc/rtc-pm8xxx.ko",
+        "drivers/slimbus/slim-qcom-ngd-ctrl.ko",
+        "drivers/slimbus/slimbus.ko",
+        "drivers/soc/qcom/apr.ko",
+        "drivers/soc/qcom/cmd-db.ko",
+        "drivers/soc/qcom/cpr.ko",
+        "drivers/soc/qcom/llcc-qcom.ko",
+        "drivers/soc/qcom/mdt_loader.ko",
+        "drivers/soc/qcom/pdr_interface.ko",
+        "drivers/soc/qcom/qcom_aoss.ko",
+        "drivers/soc/qcom/qcom_rpmh.ko",
+        "drivers/soc/qcom/qmi_helpers.ko",
+        "drivers/soc/qcom/rmtfs_mem.ko",
+        "drivers/soc/qcom/rpmhpd.ko",
+        "drivers/soc/qcom/smem.ko",
+        "drivers/soc/qcom/smp2p.ko",
+        "drivers/soc/qcom/smsm.ko",
+        "drivers/soc/qcom/socinfo.ko",
+        "drivers/soc/qcom/spm.ko",
+        "drivers/soundwire/soundwire-bus.ko",
+        "drivers/soundwire/soundwire-qcom.ko",
+        "drivers/spi/spi-geni-qcom.ko",
+        "drivers/spi/spi-pl022.ko",
+        "drivers/spi/spi-qcom-qspi.ko",
+        "drivers/spi/spi-qup.ko",
+        "drivers/spmi/spmi-pmic-arb.ko",
+        "drivers/thermal/qcom/lmh.ko",
+        "drivers/thermal/qcom/qcom-spmi-adc-tm5.ko",
+        "drivers/thermal/qcom/qcom-spmi-temp-alarm.ko",
+        "drivers/thermal/qcom/qcom_tsens.ko",
+        "drivers/tty/serial/msm_serial.ko",
+        "drivers/ufs/host/ufs_qcom.ko",
+        "drivers/usb/common/ulpi.ko",
+        "drivers/usb/host/ohci-hcd.ko",
+        "drivers/usb/host/ohci-pci.ko",
+        "drivers/usb/host/ohci-platform.ko",
+        "drivers/usb/typec/qcom-pmic-typec.ko",
+        "drivers/watchdog/pm8916_wdt.ko",
+        "drivers/watchdog/qcom-wdt.ko",
+        "net/mac80211/mac80211.ko",
+        "net/qrtr/qrtr.ko",
+        "net/qrtr/qrtr-mhi.ko",
+        "net/qrtr/qrtr-smd.ko",
+        "net/qrtr/qrtr-tun.ko",
+        "net/wireless/cfg80211.ko",
+        "sound/soc/codecs/snd-soc-dmic.ko",
+        "sound/soc/codecs/snd-soc-hdmi-codec.ko",
+        "sound/soc/codecs/snd-soc-lpass-macro-common.ko",
+        "sound/soc/codecs/snd-soc-lpass-va-macro.ko",
+        "sound/soc/codecs/snd-soc-lpass-wsa-macro.ko",
+        "sound/soc/codecs/snd-soc-max98927.ko",
+        "sound/soc/codecs/snd-soc-rl6231.ko",
+        "sound/soc/codecs/snd-soc-rt5663.ko",
+        "sound/soc/codecs/snd-soc-wcd-mbhc.ko",
+        "sound/soc/codecs/snd-soc-wcd9335.ko",
+        "sound/soc/codecs/snd-soc-wcd934x.ko",
+        "sound/soc/codecs/snd-soc-wsa881x.ko",
+        "sound/soc/qcom/qdsp6/q6adm.ko",
+        "sound/soc/qcom/qdsp6/q6afe.ko",
+        "sound/soc/qcom/qdsp6/q6afe-clocks.ko",
+        "sound/soc/qcom/qdsp6/q6afe-dai.ko",
+        "sound/soc/qcom/qdsp6/q6apm-dai.ko",
+        "sound/soc/qcom/qdsp6/q6apm-lpass-dais.ko",
+        "sound/soc/qcom/qdsp6/q6asm.ko",
+        "sound/soc/qcom/qdsp6/q6asm-dai.ko",
+        "sound/soc/qcom/qdsp6/q6core.ko",
+        "sound/soc/qcom/qdsp6/q6prm.ko",
+        "sound/soc/qcom/qdsp6/q6prm-clocks.ko",
+        "sound/soc/qcom/qdsp6/q6routing.ko",
+        "sound/soc/qcom/qdsp6/snd-q6apm.ko",
+        "sound/soc/qcom/qdsp6/snd-q6dsp-common.ko",
+        "sound/soc/qcom/snd-soc-qcom-common.ko",
+        "sound/soc/qcom/snd-soc-qcom-sdw.ko",
+        "sound/soc/qcom/snd-soc-sdm845.ko",
+        "sound/soc/qcom/snd-soc-sm8250.ko",
+    ],
+)
+
+# TODO(b/258259749): Convert rockpi4 to mixed build
+kernel_build(
+    name = "rockpi4",
+    outs = [
+        "Image",
+        "System.map",
+        "modules.builtin",
+        "modules.builtin.modinfo",
+        "rk3399-rock-pi-4b.dtb",
+        "vmlinux",
+        "vmlinux.symvers",
+    ],
+    build_config = "build.config.rockpi4",
+    dtstree = "//common-modules/virtual-device:rockpi4_dts",
+    make_goals = [
+        "Image",
+        "modules",
+        "rk3399-rock-pi-4b.dtb",
+    ],
+    module_outs = COMMON_GKI_MODULES_LIST + [
+        # keep sorted
+        "drivers/block/virtio_blk.ko",
+        "drivers/char/hw_random/virtio-rng.ko",
+        "drivers/clk/clk-rk808.ko",
+        "drivers/cpufreq/cpufreq-dt.ko",
+        "drivers/dma/pl330.ko",
+        "drivers/gpu/drm/bridge/analogix/analogix_dp.ko",
+        "drivers/gpu/drm/bridge/synopsys/dw-hdmi.ko",
+        "drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.ko",
+        "drivers/gpu/drm/display/drm_display_helper.ko",
+        "drivers/gpu/drm/drm_dma_helper.ko",
+        "drivers/gpu/drm/rockchip/rockchipdrm.ko",
+        "drivers/i2c/busses/i2c-rk3x.ko",
+        "drivers/iio/adc/rockchip_saradc.ko",
+        "drivers/iio/buffer/industrialio-triggered-buffer.ko",
+        "drivers/iio/buffer/kfifo_buf.ko",
+        "drivers/mfd/rk808.ko",
+        "drivers/mmc/core/pwrseq_simple.ko",
+        "drivers/mmc/host/cqhci.ko",
+        "drivers/mmc/host/dw_mmc.ko",
+        "drivers/mmc/host/dw_mmc-pltfm.ko",
+        "drivers/mmc/host/dw_mmc-rockchip.ko",
+        "drivers/mmc/host/sdhci-of-arasan.ko",
+        "drivers/net/ethernet/stmicro/stmmac/dwmac-rk.ko",
+        "drivers/net/ethernet/stmicro/stmmac/stmmac.ko",
+        "drivers/net/ethernet/stmicro/stmmac/stmmac-platform.ko",
+        "drivers/net/net_failover.ko",
+        "drivers/net/pcs/pcs_xpcs.ko",
+        "drivers/net/virtio_net.ko",
+        "drivers/pci/controller/pcie-rockchip-host.ko",
+        "drivers/phy/rockchip/phy-rockchip-emmc.ko",
+        "drivers/phy/rockchip/phy-rockchip-inno-usb2.ko",
+        "drivers/phy/rockchip/phy-rockchip-pcie.ko",
+        "drivers/phy/rockchip/phy-rockchip-typec.ko",
+        "drivers/pwm/pwm-rockchip.ko",
+        "drivers/regulator/fan53555.ko",
+        "drivers/regulator/pwm-regulator.ko",
+        "drivers/regulator/rk808-regulator.ko",
+        "drivers/rtc/rtc-rk808.ko",
+        "drivers/soc/rockchip/io-domain.ko",
+        "drivers/thermal/rockchip_thermal.ko",
+        "drivers/usb/host/ohci-hcd.ko",
+        "drivers/usb/host/ohci-platform.ko",
+        "drivers/virtio/virtio_pci.ko",
+        "drivers/virtio/virtio_pci_legacy_dev.ko",
+        "drivers/virtio/virtio_pci_modern_dev.ko",
+        "drivers/watchdog/dw_wdt.ko",
+        "net/core/failover.ko",
+    ],
+)
+
+kernel_modules_install(
+    name = "rockpi4_modules_install",
+    kernel_build = "//common:rockpi4",
+)
+
+kernel_images(
+    name = "rockpi4_images",
+    build_initramfs = True,
+    kernel_build = "//common:rockpi4",
+    kernel_modules_install = "//common:rockpi4_modules_install",
+)
+
+copy_to_dist_dir(
+    name = "rockpi4_dist",
+    data = [
+        ":rockpi4",
+        ":rockpi4_images",
+        ":rockpi4_modules_install",
+    ],
+    dist_dir = "out/rockpi4/dist",
+    flat = True,
+)
+
+kernel_build(
+    name = "fips140",
+    outs = [],
+    base_kernel = ":kernel_aarch64",
+    build_config = "build.config.gki.aarch64.fips140",
+    module_outs = ["crypto/fips140.ko"],
+)
+
+copy_to_dist_dir(
+    name = "fips140_dist",
+    data = [
+        ":fips140",
+    ],
+    dist_dir = "out/fips140/dist",
+    flat = True,
+)
+
+# allmodconfig build tests.
+# These are build tests only, so:
+# - outs are intentionally set to empty to not copy anything to DIST_DIR
+# - --allow-undeclared-modules must be used so modules are not declared or copied.
+# - No dist target because these are build tests. We don't care about the artifacts.
+
+# tools/bazel build --allow_undeclared_modules //common:kernel_aarch64_allmodconfig
+kernel_build(
+    name = "kernel_aarch64_allmodconfig",
+    # Hack to actually check the build.
+    # Otherwise, Bazel thinks that there are no output files, and skip building.
+    outs = [".config"],
+    build_config = "build.config.allmodconfig.aarch64",
+    visibility = ["//visibility:private"],
+)
+
+# tools/bazel build --allow_undeclared_modules //common:kernel_x86_64_allmodconfig
+kernel_build(
+    name = "kernel_x86_64_allmodconfig",
+    # Hack to actually check the build.
+    # Otherwise, Bazel thinks that there are no output files, and skip building.
+    outs = [".config"],
+    build_config = "build.config.allmodconfig.x86_64",
+    visibility = ["//visibility:private"],
+)
+
+# tools/bazel build --allow_undeclared_modules //common:kernel_arm_allmodconfig
+kernel_build(
+    name = "kernel_arm_allmodconfig",
+    # Hack to actually check the build.
+    # Otherwise, Bazel thinks that there are no output files, and skip building.
+    outs = [".config"],
+    build_config = "build.config.allmodconfig.arm",
+    visibility = ["//visibility:private"],
+)
+
+# DDK Headers
+# All headers. These are the public targets for DDK modules to use.
+alias(
+    name = "all_headers",
+    actual = "all_headers_aarch64",
+    visibility = ["//visibility:public"],
+)
+
+ddk_headers(
+    name = "all_headers_aarch64",
+    hdrs = [":all_headers_allowlist_aarch64"] + select({
+        "//build/kernel/kleaf:allow_ddk_unsafe_headers_set": [":all_headers_unsafe"],
+        "//conditions:default": [],
+    }),
+    visibility = ["//visibility:public"],
+)
+
+ddk_headers(
+    name = "all_headers_arm",
+    hdrs = [":all_headers_allowlist_arm"] + select({
+        "//build/kernel/kleaf:allow_ddk_unsafe_headers_set": [":all_headers_unsafe"],
+        "//conditions:default": [],
+    }),
+    visibility = ["//visibility:public"],
+)
+
+ddk_headers(
+    name = "all_headers_riscv64",
+    hdrs = [":all_headers_allowlist_riscv64"] + select({
+        "//build/kernel/kleaf:allow_ddk_unsafe_headers_set": [":all_headers_unsafe"],
+        "//conditions:default": [],
+    }),
+    visibility = ["//visibility:public"],
+)
+
+ddk_headers(
+    name = "all_headers_x86_64",
+    hdrs = [":all_headers_allowlist_x86_64"] + select({
+        "//build/kernel/kleaf:allow_ddk_unsafe_headers_set": [":all_headers_unsafe"],
+        "//conditions:default": [],
+    }),
+    visibility = ["//visibility:public"],
+)
+
+# Implementation details for DDK headers. The targets below cannot be directly
+# depended on by DDK modules.
+
+# DDK headers allowlist. This is the list of all headers and include
+# directories that are safe to use in DDK modules.
+ddk_headers(
+    name = "all_headers_allowlist_aarch64",
+    hdrs = [
+        ":all_headers_allowlist_aarch64_globs",
+        ":all_headers_allowlist_common_globs",
+    ],
+    # The list of include directories where source files can #include headers
+    # from. In other words, these are the `-I` option to the C compiler.
+    # These are prepended to LINUXINCLUDE.
+    linux_includes = [
+        "arch/arm64/include",
+        "arch/arm64/include/uapi",
+        "include",
+        "include/uapi",
+    ],
+    visibility = ["//visibility:private"],
+)
+
+ddk_headers(
+    name = "all_headers_allowlist_arm",
+    hdrs = [
+        ":all_headers_allowlist_arm_globs",
+        ":all_headers_allowlist_common_globs",
+    ],
+    # The list of include directories where source files can #include headers
+    # from. In other words, these are the `-I` option to the C compiler.
+    # These are prepended to LINUXINCLUDE.
+    linux_includes = [
+        "arch/arm/include",
+        "arch/arm/include/uapi",
+        "include",
+        "include/uapi",
+    ],
+    visibility = ["//visibility:private"],
+)
+
+ddk_headers(
+    name = "all_headers_allowlist_riscv64",
+    hdrs = [
+        ":all_headers_allowlist_common_globs",
+        ":all_headers_allowlist_riscv64_globs",
+    ],
+    # The list of include directories where source files can #include headers
+    # from. In other words, these are the `-I` option to the C compiler.
+    # These are prepended to LINUXINCLUDE.
+    linux_includes = [
+        "arch/riscv/include",
+        "arch/riscv/include/uapi",
+        "include",
+        "include/uapi",
+    ],
+    visibility = ["//visibility:private"],
+)
+
+ddk_headers(
+    name = "all_headers_allowlist_x86_64",
+    hdrs = [
+        ":all_headers_allowlist_common_globs",
+        ":all_headers_allowlist_x86_64_globs",
+    ],
+    # The list of include directories where source files can #include headers
+    # from. In other words, these are the `-I` option to the C compiler.
+    # These are prepended to LINUXINCLUDE.
+    linux_includes = [
+        "arch/x86/include",
+        "arch/x86/include/uapi",
+        "include",
+        "include/uapi",
+    ],
+    visibility = ["//visibility:private"],
+)
+
+# List of DDK headers allowlist that are glob()-ed to avoid changes of BUILD
+# file when the list of files changes. All headers in these directories
+# are safe to use.
+# These are separate filegroup targets so the all_headers_allowlist_* are
+# more friendly to batch BUILD file update tools like buildozer.
+
+# globs() for arm64 only
+filegroup(
+    name = "all_headers_allowlist_aarch64_globs",
+    srcs = glob(["arch/arm64/include/**/*.h"]),
+    visibility = ["//visibility:private"],
+)
+
+# globs() for arm only
+filegroup(
+    name = "all_headers_allowlist_arm_globs",
+    srcs = glob(["arch/arm/include/**/*.h"]),
+    visibility = ["//visibility:private"],
+)
+
+# globs() for riscv64 only
+filegroup(
+    name = "all_headers_allowlist_riscv64_globs",
+    srcs = glob(["arch/riscv/include/**/*.h"]),
+    visibility = ["//visibility:private"],
+)
+
+# globs() for x86 only
+filegroup(
+    name = "all_headers_allowlist_x86_64_globs",
+    srcs = glob(["arch/x86/include/**/*.h"]),
+    visibility = ["//visibility:private"],
+)
+
+# globs() for all architectures
+filegroup(
+    name = "all_headers_allowlist_common_globs",
+    srcs = glob(["include/**/*.h"]),
+    visibility = ["//visibility:private"],
+)
+
+# DDK headers unsafe list. This is the list of all headers and include
+# directories that may be used during migration from kernel_module's, but
+# should be avoided in general.
+# Use with caution; items may:
+# - be removed without notice
+# - be moved into all_headers
+ddk_headers(
+    name = "all_headers_unsafe",
+    hdrs = [
+        "drivers/gpu/drm/virtio/virtgpu_trace.h",
+    ],
+    # The list of include directories where source files can #include headers
+    # from. In other words, these are the `-I` option to the C compiler.
+    # Unsafe include directories are appended to ccflags-y.
+    includes = [],
+    visibility = ["//visibility:private"],
+)
diff --git a/Documentation/ABI/stable/sysfs-module b/Documentation/ABI/stable/sysfs-module
index 41b1f16..47b8fd0 100644
--- a/Documentation/ABI/stable/sysfs-module
+++ b/Documentation/ABI/stable/sysfs-module
@@ -45,3 +45,21 @@
 Description:
 		If the module source has MODULE_VERSION, this file will contain
 		the version of the source code.
+
+What:		/sys/module/MODULENAME/scmversion
+Date:		November 2020
+KernelVersion:	5.12
+Contact:	Will McVicker <willmcvicker@google.com>
+Description:	This read-only file will appear if modpost was supplied with an
+		SCM version for the module. It can be enabled with the config
+		MODULE_SCMVERSION. The SCM version is retrieved by
+		scripts/setlocalversion, which means that the presence of this
+		file depends on CONFIG_LOCALVERSION_AUTO=y. When read, the SCM
+		version that the module was compiled with is returned. The SCM
+		version is returned in the following format::
+
+		===
+		Git:		g[a-f0-9]\+(-dirty)\?
+		Mercurial:	hg[a-f0-9]\+(-dirty)\?
+		Subversion:	svn[0-9]\+
+		===
diff --git a/Documentation/ABI/testing/configfs-usb-gadget-uvc b/Documentation/ABI/testing/configfs-usb-gadget-uvc
index feb3f2c..c25cc28 100644
--- a/Documentation/ABI/testing/configfs-usb-gadget-uvc
+++ b/Documentation/ABI/testing/configfs-usb-gadget-uvc
@@ -197,7 +197,7 @@
 					read-only
 		bmaControls		this format's data for bmaControls in
 					the streaming header
-		bmInterfaceFlags	specifies interlace information,
+		bmInterlaceFlags	specifies interlace information,
 					read-only
 		bAspectRatioY		the X dimension of the picture aspect
 					ratio, read-only
@@ -253,7 +253,7 @@
 					read-only
 		bmaControls		this format's data for bmaControls in
 					the streaming header
-		bmInterfaceFlags	specifies interlace information,
+		bmInterlaceFlags	specifies interlace information,
 					read-only
 		bAspectRatioY		the X dimension of the picture aspect
 					ratio, read-only
diff --git a/Documentation/ABI/testing/sysfs-bus-usb b/Documentation/ABI/testing/sysfs-bus-usb
index 568103d..d71ce6c 100644
--- a/Documentation/ABI/testing/sysfs-bus-usb
+++ b/Documentation/ABI/testing/sysfs-bus-usb
@@ -264,6 +264,16 @@
 		attached to the port will not be detected, initialized,
 		or enumerated.
 
+What:		/sys/bus/usb/devices/.../<hub_interface>/port<X>/state
+Date:		June 2023
+Contact:	Roy Luo <royluo@google.com>
+Description:
+		Indicates current state of the USB device attached to the port.
+		Valid states are: 'not-attached', 'attached', 'powered',
+		'reconnecting', 'unauthenticated', 'default', 'addressed',
+		'configured', and 'suspended'. This file supports poll() to
+		monitor the state change from user space.
+
 What:		/sys/bus/usb/devices/.../power/usb2_lpm_l1_timeout
 Date:		May 2013
 Contact:	Mathias Nyman <mathias.nyman@linux.intel.com>
diff --git a/Documentation/ABI/testing/sysfs-driver-typec-displayport b/Documentation/ABI/testing/sysfs-driver-typec-displayport
index 231471a..256c87c5 100644
--- a/Documentation/ABI/testing/sysfs-driver-typec-displayport
+++ b/Documentation/ABI/testing/sysfs-driver-typec-displayport
@@ -47,3 +47,18 @@
 		USB SuperSpeed protocol. From user perspective pin assignments C
 		and E are equal, where all channels on the connector are used
 		for carrying DisplayPort protocol (allowing higher resolutions).
+
+What:		/sys/bus/typec/devices/.../displayport/hpd
+Date:		Dec 2022
+Contact:	Badhri Jagan Sridharan <badhri@google.com>
+Description:
+		VESA DisplayPort Alt Mode on USB Type-C Standard defines how
+		HotPlugDetect(HPD) shall be supported on the USB-C connector when
+		operating in DisplayPort Alt Mode. This is a read only node which
+		reflects the current state of HPD.
+
+		Valid values:
+			- 1: when HPD’s logical state is high (HPD_High) as defined
+			     by VESA DisplayPort Alt Mode on USB Type-C Standard.
+			- 0 when HPD’s logical state is low (HPD_Low) as defined by
+			     VESA DisplayPort Alt Mode on USB Type-C Standard.
diff --git a/Documentation/ABI/testing/sysfs-fs-f2fs b/Documentation/ABI/testing/sysfs-fs-f2fs
index 483639f..8140fc9 100644
--- a/Documentation/ABI/testing/sysfs-fs-f2fs
+++ b/Documentation/ABI/testing/sysfs-fs-f2fs
@@ -49,16 +49,23 @@
 Description:	Controls the in-place-update policy.
 		updates in f2fs. User can set:
 
-		====  =================
-		0x01  F2FS_IPU_FORCE
-		0x02  F2FS_IPU_SSR
-		0x04  F2FS_IPU_UTIL
-		0x08  F2FS_IPU_SSR_UTIL
-		0x10  F2FS_IPU_FSYNC
-		0x20  F2FS_IPU_ASYNC
-		0x40  F2FS_IPU_NOCACHE
-		0x80  F2FS_IPU_HONOR_OPU_WRITE
-		====  =================
+		===== =============== ===================================================
+		value policy          description
+		0x00  DISABLE         disable IPU(=default option in LFS mode)
+		0x01  FORCE           all the time
+		0x02  SSR             if SSR mode is activated
+		0x04  UTIL            if FS utilization is over threashold
+		0x08  SSR_UTIL        if SSR mode is activated and FS utilization is over
+		                      threashold
+		0x10  FSYNC           activated in fsync path only for high performance
+		                      flash storages. IPU will be triggered only if the
+		                      # of dirty pages over min_fsync_blocks.
+		                      (=default option)
+		0x20  ASYNC           do IPU given by asynchronous write requests
+		0x40  NOCACHE         disable IPU bio cache
+		0x80  HONOR_OPU_WRITE use OPU write prior to IPU write if inode has
+		                      FI_OPU_WRITE flag
+		===== =============== ===================================================
 
 		Refer segment.h for details.
 
@@ -99,6 +106,12 @@
 		checkpoint is triggered, and issued during the checkpoint.
 		By default, it is disabled with 0.
 
+What:		/sys/fs/f2fs/<disk>/max_ordered_discard
+Date:		October 2022
+Contact:	"Yangtao Li" <frank.li@vivo.com>
+Description:	Controls the maximum ordered discard, the unit size is one block(4KB).
+		Set it to 16 by default.
+
 What:		/sys/fs/f2fs/<disk>/max_discard_request
 Date:		December 2021
 Contact:	"Konstantin Vyshetsky" <vkon@google.com>
@@ -132,7 +145,8 @@
 Description:	Controls discard granularity of inner discard thread. Inner thread
 		will not issue discards with size that is smaller than granularity.
 		The unit size is one block(4KB), now only support configuring
-		in range of [1, 512]. Default value is 4(=16KB).
+		in range of [1, 512]. Default value is 16.
+		For small devices, default value is 1.
 
 What:		/sys/fs/f2fs/<disk>/umount_discard_timeout
 Date:		January 2019
@@ -176,12 +190,6 @@
 		nat entries. By default, 1 is set, which indicates
 		10 MB / 1 GB RAM.
 
-What:		/sys/fs/f2fs/<disk>/batched_trim_sections
-Date:		February 2015
-Contact:	"Jaegeuk Kim" <jaegeuk@kernel.org>
-Description:	Controls the trimming rate in batch mode.
-		<deprecated>
-
 What:		/sys/fs/f2fs/<disk>/cp_interval
 Date:		October 2015
 Contact:	"Jaegeuk Kim" <jaegeuk@kernel.org>
@@ -235,7 +243,7 @@
 What:		/sys/fs/f2fs/<disk>/features
 Date:		July 2017
 Contact:	"Jaegeuk Kim" <jaegeuk@kernel.org>
-Description:	<deprecated: should use /sys/fs/f2fs/<disk>/feature_list/
+Description:	<deprecated: should use /sys/fs/f2fs/<disk>/feature_list/>
 		Shows all enabled features in current device.
 		Supported features:
 		encryption, blkzoned, extra_attr, projquota, inode_checksum,
@@ -592,10 +600,10 @@
 		in the length of 1..<max_fragment_hole> by turns. This value can be set
 		between 1..512 and the default value is 4.
 
-What:		/sys/fs/f2fs/<disk>/gc_urgent_high_remaining
-Date:		December 2021
-Contact:	"Daeho Jeong" <daehojeong@google.com>
-Description:	You can set the trial count limit for GC urgent high mode with this value.
+What:		/sys/fs/f2fs/<disk>/gc_remaining_trials
+Date:		October 2022
+Contact:	"Yangtao Li" <frank.li@vivo.com>
+Description:	You can set the trial count limit for GC urgent and idle mode with this value.
 		If GC thread gets to the limit, the mode will turn back to GC normal mode.
 		By default, the value is zero, which means there is no limit like before.
 
@@ -634,3 +642,101 @@
 Contact:	"Daeho Jeong" <daehojeong@google.com>
 Description:	Show the accumulated total revoked atomic write block count after boot.
 		If you write "0" here, you can initialize to "0".
+
+What:		/sys/fs/f2fs/<disk>/gc_mode
+Date:		October 2022
+Contact:	"Yangtao Li" <frank.li@vivo.com>
+Description:	Show the current gc_mode as a string.
+		This is a read-only entry.
+
+What:		/sys/fs/f2fs/<disk>/discard_urgent_util
+Date:		November 2022
+Contact:	"Yangtao Li" <frank.li@vivo.com>
+Description:	When space utilization exceeds this, do background DISCARD aggressively.
+		Does DISCARD forcibly in a period of given min_discard_issue_time when the number
+		of discards is not 0 and set discard granularity to 1.
+		Default: 80
+
+What:		/sys/fs/f2fs/<disk>/hot_data_age_threshold
+Date:		November 2022
+Contact:	"Ping Xiong" <xiongping1@xiaomi.com>
+Description:	When DATA SEPARATION is on, it controls the age threshold to indicate
+		the data blocks as hot. By default it was initialized as 262144 blocks
+		(equals to 1GB).
+
+What:		/sys/fs/f2fs/<disk>/warm_data_age_threshold
+Date:		November 2022
+Contact:	"Ping Xiong" <xiongping1@xiaomi.com>
+Description:	When DATA SEPARATION is on, it controls the age threshold to indicate
+		the data blocks as warm. By default it was initialized as 2621440 blocks
+		(equals to 10GB).
+
+What:		/sys/fs/f2fs/<disk>/fault_rate
+Date:		May 2016
+Contact:	"Sheng Yong" <shengyong@oppo.com>
+Contact:	"Chao Yu" <chao@kernel.org>
+Description:	Enable fault injection in all supported types with
+		specified injection rate.
+
+What:		/sys/fs/f2fs/<disk>/fault_type
+Date:		May 2016
+Contact:	"Sheng Yong" <shengyong@oppo.com>
+Contact:	"Chao Yu" <chao@kernel.org>
+Description:	Support configuring fault injection type, should be
+		enabled with fault_injection option, fault type value
+		is shown below, it supports single or combined type.
+
+		===================      ===========
+		Type_Name                Type_Value
+		===================      ===========
+		FAULT_KMALLOC            0x000000001
+		FAULT_KVMALLOC           0x000000002
+		FAULT_PAGE_ALLOC         0x000000004
+		FAULT_PAGE_GET           0x000000008
+		FAULT_ALLOC_BIO          0x000000010 (obsolete)
+		FAULT_ALLOC_NID          0x000000020
+		FAULT_ORPHAN             0x000000040
+		FAULT_BLOCK              0x000000080
+		FAULT_DIR_DEPTH          0x000000100
+		FAULT_EVICT_INODE        0x000000200
+		FAULT_TRUNCATE           0x000000400
+		FAULT_READ_IO            0x000000800
+		FAULT_CHECKPOINT         0x000001000
+		FAULT_DISCARD            0x000002000
+		FAULT_WRITE_IO           0x000004000
+		FAULT_SLAB_ALLOC         0x000008000
+		FAULT_DQUOT_INIT         0x000010000
+		FAULT_LOCK_OP            0x000020000
+		FAULT_BLKADDR            0x000040000
+		===================      ===========
+
+What:		/sys/fs/f2fs/<disk>/discard_io_aware_gran
+Date:		January 2023
+Contact:	"Yangtao Li" <frank.li@vivo.com>
+Description:	Controls background discard granularity of inner discard thread
+		when is not in idle. Inner thread will not issue discards with size that
+		is smaller than granularity. The unit size is one block(4KB), now only
+		support configuring in range of [0, 512].
+		Default: 512
+
+What:		/sys/fs/f2fs/<disk>/last_age_weight
+Date:		January 2023
+Contact:	"Ping Xiong" <xiongping1@xiaomi.com>
+Description:	When DATA SEPARATION is on, it controls the weight of last data block age.
+
+What:		/sys/fs/f2fs/<disk>/compress_watermark
+Date:		February 2023
+Contact:	"Yangtao Li" <frank.li@vivo.com>
+Description:	When compress cache is on, it controls free memory watermark
+		in order to limit caching compress page. If free memory is lower
+		than watermark, then deny caching compress page. The value should be in
+		range of (0, 100], by default it was initialized as 20(%).
+
+What:		/sys/fs/f2fs/<disk>/compress_percent
+Date:		February 2023
+Contact:	"Yangtao Li" <frank.li@vivo.com>
+Description:	When compress cache is on, it controls cached page
+		percent(compress pages / free_ram) in order to limit caching compress page.
+		If cached page percent exceed threshold, then deny caching compress page.
+		The value should be in range of (0, 100], by default it was initialized
+		as 20(%).
diff --git a/Documentation/ABI/testing/sysfs-fs-fuse b/Documentation/ABI/testing/sysfs-fs-fuse
new file mode 100644
index 0000000..b995684
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-fs-fuse
@@ -0,0 +1,19 @@
+What:		/sys/fs/fuse/features/fuse_bpf
+Date:		December 2022
+Contact:	Paul Lawrence <paullawrence@google.com>
+Description:
+		Read-only file that contains the word 'supported' if fuse-bpf is
+		supported, does not exist otherwise
+
+What:		/sys/fs/fuse/bpf_prog_type_fuse
+Date:		December 2022
+Contact:	Paul Lawrence <paullawrence@google.com>
+Description:
+		bpf_prog_type_fuse defines the program type of bpf programs that
+		may be passed to fuse-bpf. For upstream bpf program types, this
+		is a constant defined in a contiguous array of constants.
+		bpf_prog_type_fuse is appended to the end of the list, so it may
+		change and therefore its value must be read from this file.
+
+		Contents is ASCII decimal representation of bpf_prog_type_fuse
+
diff --git a/Documentation/ABI/testing/sysfs-fs-incfs b/Documentation/ABI/testing/sysfs-fs-incfs
new file mode 100644
index 0000000..e4e05f9
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-fs-incfs
@@ -0,0 +1,70 @@
+What:		/sys/fs/incremental-fs/features/corefs
+Date:		2019
+Contact:	Paul Lawrence <paullawrence@google.com>
+Description:	Reads 'supported'. Always present.
+
+What:		/sys/fs/incremental-fs/features/v2
+Date:		April 2021
+Contact:	Paul Lawrence <paullawrence@google.com>
+Description:	Reads 'supported'. Present if all v2 features of incfs are
+		supported.
+
+What:		/sys/fs/incremental-fs/features/zstd
+Date:		April 2021
+Contact:	Paul Lawrence <paullawrence@google.com>
+Description:	Reads 'supported'. Present if zstd compression is supported
+		for data blocks.
+
+What:		/sys/fs/incremental-fs/features/bugfix_throttling
+Date:		January 2023
+Contact:	Paul Lawrence <paullawrence@google.com>
+Description:	Reads 'supported'. Present if the throttling lock bug is fixed
+		https://android-review.git.corp.google.com/c/kernel/common/+/2381827
+
+What:		/sys/fs/incremental-fs/instances/[name]
+Date:		April 2021
+Contact:	Paul Lawrence <paullawrence@google.com>
+Description:	Folder created when incfs is mounted with the sysfs_name=[name]
+		option. If this option is used, the following values are created
+		in this folder.
+
+What:		/sys/fs/incremental-fs/instances/[name]/reads_delayed_min
+Date:		April 2021
+Contact:	Paul Lawrence <paullawrence@google.com>
+Description:	Returns a count of the number of reads that were delayed as a
+		result of the per UID read timeouts min time setting.
+
+What:		/sys/fs/incremental-fs/instances/[name]/reads_delayed_min_us
+Date:		April 2021
+Contact:	Paul Lawrence <paullawrence@google.com>
+Description:	Returns total delay time for all files since first mount as a
+		result of the per UID read timeouts min time setting.
+
+What:		/sys/fs/incremental-fs/instances/[name]/reads_delayed_pending
+Date:		April 2021
+Contact:	Paul Lawrence <paullawrence@google.com>
+Description:	Returns a count of the number of reads that were delayed as a
+		result of waiting for a pending read.
+
+What:		/sys/fs/incremental-fs/instances/[name]/reads_delayed_pending_us
+Date:		April 2021
+Contact:	Paul Lawrence <paullawrence@google.com>
+Description:	Returns total delay time for all files since first mount as a
+		result of waiting for a pending read.
+
+What:		/sys/fs/incremental-fs/instances/[name]/reads_failed_hash_verification
+Date:		April 2021
+Contact:	Paul Lawrence <paullawrence@google.com>
+Description:	Returns number of reads that failed because of hash verification
+		failures.
+
+What:		/sys/fs/incremental-fs/instances/[name]/reads_failed_other
+Date:		April 2021
+Contact:	Paul Lawrence <paullawrence@google.com>
+Description:	Returns number of reads that failed for reasons other than
+		timing out or hash failures.
+
+What:		/sys/fs/incremental-fs/instances/[name]/reads_failed_timed_out
+Date:		April 2021
+Contact:	Paul Lawrence <paullawrence@google.com>
+Description:	Returns number of reads that timed out.
diff --git a/Documentation/ABI/testing/sysfs-kernel-dmaheap b/Documentation/ABI/testing/sysfs-kernel-dmaheap
new file mode 100644
index 0000000..0fd7126
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-kernel-dmaheap
@@ -0,0 +1,7 @@
+What:		/sys/kernel/dma_heap/total_pools_kb
+Date:		Feb 2021
+KernelVersion:	5.10
+Contact:	T.J. Mercier <tjmercier@google.com>
+Description:
+		The total_pools_kb file is read-only and specifies how much
+		memory in KiB is allocated to DMA-BUF heap pools.
diff --git a/Documentation/ABI/testing/sysfs-kernel-wakeup_reasons b/Documentation/ABI/testing/sysfs-kernel-wakeup_reasons
new file mode 100644
index 0000000..acb19b9
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-kernel-wakeup_reasons
@@ -0,0 +1,16 @@
+What:		/sys/kernel/wakeup_reasons/last_resume_reason
+Date:		February 2014
+Contact:	Ruchi Kandoi <kandoiruchi@google.com>
+Description:
+		The /sys/kernel/wakeup_reasons/last_resume_reason is
+		used to report wakeup reasons after system exited suspend.
+
+What:		/sys/kernel/wakeup_reasons/last_suspend_time
+Date:		March 2015
+Contact:	jinqian <jinqian@google.com>
+Description:
+		The /sys/kernel/wakeup_reasons/last_suspend_time is
+		used to report time spent in last suspend cycle. It contains
+		two numbers (in seconds) separated by space. First number is
+		the time spent in suspend and resume processes. Second number
+		is the time spent in sleep state.
\ No newline at end of file
diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index 6b83886..9c078d3 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -1037,6 +1037,10 @@
 			can be useful when debugging issues that require an SLB
 			miss to occur.
 
+	disable_dma32=	[KNL]
+			Dynamically disable ZONE_DMA32 on kernels compiled with
+			CONFIG_ZONE_DMA32=y.
+
 	stress_slb	[PPC]
 			Limits the number of kernel SLB entries, and flushes
 			them frequently to increase the rate of SLB faults
@@ -1774,6 +1778,10 @@
 				If specified, z/VM IUCV HVC accepts connections
 				from listed z/VM user IDs only.
 
+	hvc_dcc.enable=	[ARM,ARM64]	Enable DCC driver at runtime. For GKI,
+				disabled at runtime by default to prevent
+				crashes in devices which do not support DCC.
+
 	hv_nopvspin	[X86,HYPER_V] Disables the paravirt spinlock optimizations
 				      which allow the hypervisor to 'idle' the
 				      guest on lock contention.
@@ -1784,6 +1792,10 @@
 			between unregistering the boot console and initializing
 			the real console.
 
+	kunit.enable=	[KUNIT] Enable executing KUnit tests in modules on load.
+			Requires CONFIG_KUNIT to be enabled.
+			Default is 0 (disabled)
+
 	i2c_bus=	[HW]	Override the default board specific I2C bus speed
 				or register an additional I2C bus that is not
 				registered from board initialization code.
@@ -2176,6 +2188,9 @@
 			1 - Bypass the IOMMU for DMA.
 			unset - Use value of CONFIG_IOMMU_DEFAULT_PASSTHROUGH.
 
+	ioremap_guard	[ARM64] enable the KVM MMIO guard functionality
+			if available.
+
 	io7=		[HW] IO7 for Marvel-based Alpha systems
 			See comment before marvel_specify_io7 in
 			arch/alpha/kernel/core_marvel.c.
@@ -2529,6 +2544,19 @@
 			for all guests.
 			Default is 1 (enabled) if in 64-bit or 32-bit PAE mode.
 
+	kvm-arm.force_nc
+			[KVM,ARM,ANDROID_ARM64_WORKAROUND_DMA_BEYOND_POC]
+
+			Enable hypercalls to remap host pages as normal
+			non-cacheable at stage-2 and issue these hypercalls
+			when installing non-cacheable ptes at stage-1. This
+			is useful to work around coherency issues on systems
+			with DMA peripherals integrated beyond the Point of
+			Coherency (PoC).
+
+			This option only applies when booting with
+			kvm-arm.mode=protected.
+
 	kvm-arm.mode=
 			[KVM,ARM] Select one of KVM/arm64's modes of operation.
 
@@ -2538,12 +2566,21 @@
 			      protected guests.
 
 			protected: nVHE-based mode with support for guests whose
-				   state is kept private from the host.
+				   state is kept private from the host. See
+				   Documentation/virt/kvm/arm/pkvm.rst for more
+				   information about this mode of operation.
 
 			Defaults to VHE/nVHE based on hardware support. Setting
 			mode to "protected" will disable kexec and hibernation
 			for the host.
 
+	kvm-arm.protected_modules=
+			[KVM,ARM] List of pKVM modules to load before the host
+			is deprevileged.
+
+			This option only applies when booting with
+			kvm-arm.mode=protected.
+
 	kvm-arm.vgic_v3_group0_trap=
 			[KVM,ARM] Trap guest accesses to GICv3 group-0
 			system registers
diff --git a/Documentation/arm64/silicon-errata.rst b/Documentation/arm64/silicon-errata.rst
index 55492fe..808ade4 100644
--- a/Documentation/arm64/silicon-errata.rst
+++ b/Documentation/arm64/silicon-errata.rst
@@ -170,8 +170,6 @@
 +----------------+-----------------+-----------------+-----------------------------+
 | NVIDIA         | Carmel Core     | N/A             | NVIDIA_CARMEL_CNP_ERRATUM   |
 +----------------+-----------------+-----------------+-----------------------------+
-| NVIDIA         | T241 GICv3/4.x  | T241-FABRIC-4   | N/A                         |
-+----------------+-----------------+-----------------+-----------------------------+
 +----------------+-----------------+-----------------+-----------------------------+
 | Freescale/NXP  | LS2080A/LS1043A | A-008585        | FSL_ERRATUM_A008585         |
 +----------------+-----------------+-----------------+-----------------------------+
diff --git a/Documentation/block/inline-encryption.rst b/Documentation/block/inline-encryption.rst
index f9bf18e..4fd2b11 100644
--- a/Documentation/block/inline-encryption.rst
+++ b/Documentation/block/inline-encryption.rst
@@ -77,10 +77,10 @@
 ============
 
 We introduce ``struct blk_crypto_key`` to represent an inline encryption key and
-how it will be used.  This includes the actual bytes of the key; the size of the
-key; the algorithm and data unit size the key will be used with; and the number
-of bytes needed to represent the maximum data unit number the key will be used
-with.
+how it will be used.  This includes the type of the key (standard or
+hardware-wrapped); the actual bytes of the key; the size of the key; the
+algorithm and data unit size the key will be used with; and the number of bytes
+needed to represent the maximum data unit number the key will be used with.
 
 We introduce ``struct bio_crypt_ctx`` to represent an encryption context.  It
 contains a data unit number and a pointer to a blk_crypto_key.  We add pointers
@@ -302,3 +302,216 @@
 When the crypto API fallback is enabled, this means that all bios with and
 encryption context will use the fallback, and IO will complete as usual.  When
 the fallback is disabled, a bio with an encryption context will be failed.
+
+.. _hardware_wrapped_keys:
+
+Hardware-wrapped keys
+=====================
+
+Motivation and threat model
+---------------------------
+
+Linux storage encryption (dm-crypt, fscrypt, eCryptfs, etc.) traditionally
+relies on the raw encryption key(s) being present in kernel memory so that the
+encryption can be performed.  This traditionally isn't seen as a problem because
+the key(s) won't be present during an offline attack, which is the main type of
+attack that storage encryption is intended to protect from.
+
+However, there is an increasing desire to also protect users' data from other
+types of attacks (to the extent possible), including:
+
+- Cold boot attacks, where an attacker with physical access to a system suddenly
+  powers it off, then immediately dumps the system memory to extract recently
+  in-use encryption keys, then uses these keys to decrypt user data on-disk.
+
+- Online attacks where the attacker is able to read kernel memory without fully
+  compromising the system, followed by an offline attack where any extracted
+  keys can be used to decrypt user data on-disk.  An example of such an online
+  attack would be if the attacker is able to run some code on the system that
+  exploits a Meltdown-like vulnerability but is unable to escalate privileges.
+
+- Online attacks where the attacker fully compromises the system, but their data
+  exfiltration is significantly time-limited and/or bandwidth-limited, so in
+  order to completely exfiltrate the data they need to extract the encryption
+  keys to use in a later offline attack.
+
+Hardware-wrapped keys are a feature of inline encryption hardware that is
+designed to protect users' data from the above attacks (to the extent possible),
+without introducing limitations such as a maximum number of keys.
+
+Note that it is impossible to **fully** protect users' data from these attacks.
+Even in the attacks where the attacker "just" gets read access to kernel memory,
+they can still extract any user data that is present in memory, including
+plaintext pagecache pages of encrypted files.  The focus here is just on
+protecting the encryption keys, as those instantly give access to **all** user
+data in any following offline attack, rather than just some of it (where which
+data is included in that "some" might not be controlled by the attacker).
+
+Solution overview
+-----------------
+
+Inline encryption hardware typically has "keyslots" into which software can
+program keys for the hardware to use; the contents of keyslots typically can't
+be read back by software.  As such, the above security goals could be achieved
+if the kernel simply erased its copy of the key(s) after programming them into
+keyslot(s) and thereafter only referred to them via keyslot number.
+
+However, that naive approach runs into the problem that it limits the number of
+unlocked keys to the number of keyslots, which typically is a small number.  In
+cases where there is only one encryption key system-wide (e.g., a full-disk
+encryption key), that can be tolerable.  However, in general there can be many
+logged-in users with many different keys, and/or many running applications with
+application-specific encrypted storage areas.  This is especially true if
+file-based encryption (e.g. fscrypt) is being used.
+
+Thus, it is important for the kernel to still have a way to "remind" the
+hardware about a key, without actually having the raw key itself.  This would
+ensure that the number of hardware keyslots only limits the number of active I/O
+requests, not other things such as the number of logged-in users, the number of
+running apps, or the number of encrypted storage areas that apps can create.
+
+Somewhat less importantly, it is also desirable that the raw keys are never
+visible to software at all, even while being initially unlocked.  This would
+ensure that a read-only compromise of system memory will never allow a key to be
+extracted to be used off-system, even if it occurs when a key is being unlocked.
+
+To solve all these problems, some vendors of inline encryption hardware have
+made their hardware support *hardware-wrapped keys*.  Hardware-wrapped keys
+are encrypted keys that can only be unwrapped (decrypted) and used by hardware
+-- either by the inline encryption hardware itself, or by a dedicated hardware
+block that can directly provision keys to the inline encryption hardware.
+
+(We refer to them as "hardware-wrapped keys" rather than simply "wrapped keys"
+to add some clarity in cases where there could be other types of wrapped keys,
+such as in file-based encryption.  Key wrapping is a commonly used technique.)
+
+The key which wraps (encrypts) hardware-wrapped keys is a hardware-internal key
+that is never exposed to software; it is either a persistent key (a "long-term
+wrapping key") or a per-boot key (an "ephemeral wrapping key").  The long-term
+wrapped form of the key is what is initially unlocked, but it is erased from
+memory as soon as it is converted into an ephemerally-wrapped key.  In-use
+hardware-wrapped keys are always ephemerally-wrapped, not long-term wrapped.
+
+As inline encryption hardware can only be used to encrypt/decrypt data on-disk,
+the hardware also includes a level of indirection; it doesn't use the unwrapped
+key directly for inline encryption, but rather derives both an inline encryption
+key and a "software secret" from it.  Software can use the "software secret" for
+tasks that can't use the inline encryption hardware, such as filenames
+encryption.  The software secret is not protected from memory compromise.
+
+Key hierarchy
+-------------
+
+Here is the key hierarchy for a hardware-wrapped key::
+
+                       Hardware-wrapped key
+                                |
+                                |
+                          <Hardware KDF>
+                                |
+                  -----------------------------
+                  |                           |
+        Inline encryption key           Software secret
+
+The components are:
+
+- *Hardware-wrapped key*: a key for the hardware's KDF (Key Derivation
+  Function), in ephemerally-wrapped form.  The key wrapping algorithm is a
+  hardware implementation detail that doesn't impact kernel operation, but a
+  strong authenticated encryption algorithm such as AES-256-GCM is recommended.
+
+- *Hardware KDF*: a KDF (Key Derivation Function) which the hardware uses to
+  derive subkeys after unwrapping the wrapped key.  The hardware's choice of KDF
+  doesn't impact kernel operation, but it does need to be known for testing
+  purposes, and it's also assumed to have at least a 256-bit security strength.
+  All known hardware uses the SP800-108 KDF in Counter Mode with AES-256-CMAC,
+  with a particular choice of labels and contexts; new hardware should use this
+  already-vetted KDF.
+
+- *Inline encryption key*: a derived key which the hardware directly provisions
+  to a keyslot of the inline encryption hardware, without exposing it to
+  software.  In all known hardware, this will always be an AES-256-XTS key.
+  However, in principle other encryption algorithms could be supported too.
+  Hardware must derive distinct subkeys for each supported encryption algorithm.
+
+- *Software secret*: a derived key which the hardware returns to software so
+  that software can use it for cryptographic tasks that can't use inline
+  encryption.  This value is cryptographically isolated from the inline
+  encryption key, i.e. knowing one doesn't reveal the other.  (The KDF ensures
+  this.)  Currently, the software secret is always 32 bytes and thus is suitable
+  for cryptographic applications that require up to a 256-bit security strength.
+  Some use cases (e.g. full-disk encryption) won't require the software secret.
+
+Example: in the case of fscrypt, the fscrypt master key (the key that protects a
+particular set of encrypted directories) is made hardware-wrapped.  The inline
+encryption key is used as the file contents encryption key, while the software
+secret (rather than the master key directly) is used to key fscrypt's KDF
+(HKDF-SHA512) to derive other subkeys such as filenames encryption keys.
+
+Note that currently this design assumes a single inline encryption key per
+hardware-wrapped key, without any further key derivation.  Thus, in the case of
+fscrypt, currently hardware-wrapped keys are only compatible with the "inline
+encryption optimized" settings, which use one file contents encryption key per
+encryption policy rather than one per file.  This design could be extended to
+make the hardware derive per-file keys using per-file nonces passed down the
+storage stack, and in fact some hardware already supports this; future work is
+planned to remove this limitation by adding the corresponding kernel support.
+
+Kernel support
+--------------
+
+The inline encryption support of the kernel's block layer ("blk-crypto") has
+been extended to support hardware-wrapped keys as an alternative to standard
+keys, when hardware support is available.  This works in the following way:
+
+- A ``key_types_supported`` field is added to the crypto capabilities in
+  ``struct blk_crypto_profile``.  This allows device drivers to declare that
+  they support standard keys, hardware-wrapped keys, or both.
+
+- ``struct blk_crypto_key`` can now contain a hardware-wrapped key as an
+  alternative to a standard key; a ``key_type`` field is added to
+  ``struct blk_crypto_config`` to distinguish between the different key types.
+  This allows users of blk-crypto to en/decrypt data using a hardware-wrapped
+  key in a way very similar to using a standard key.
+
+- A new method ``blk_crypto_ll_ops::derive_sw_secret`` is added.  Device drivers
+  that support hardware-wrapped keys must implement this method.  Users of
+  blk-crypto can call ``blk_crypto_derive_sw_secret()`` to access this method.
+
+- The programming and eviction of hardware-wrapped keys happens via
+  ``blk_crypto_ll_ops::keyslot_program`` and
+  ``blk_crypto_ll_ops::keyslot_evict``, just like it does for standard keys.  If
+  a driver supports hardware-wrapped keys, then it must handle hardware-wrapped
+  keys being passed to these methods.
+
+blk-crypto-fallback doesn't support hardware-wrapped keys.  Therefore,
+hardware-wrapped keys can only be used with actual inline encryption hardware.
+
+Currently, the kernel only works with hardware-wrapped keys in
+ephemerally-wrapped form.  No generic kernel interfaces are provided for
+generating or importing hardware-wrapped keys in the first place, or converting
+them to ephemerally-wrapped form.  In Android, SoC vendors are required to
+support these operations in their KeyMint implementation (a hardware abstraction
+layer in userspace); for details, see the `Android documentation
+<https://source.android.com/security/encryption/hw-wrapped-keys>`_.
+
+Testability
+-----------
+
+Both the hardware KDF and the inline encryption itself are well-defined
+algorithms that don't depend on any secrets other than the unwrapped key.
+Therefore, if the unwrapped key is known to software, these algorithms can be
+reproduced in software in order to verify the ciphertext that is written to disk
+by the inline encryption hardware.
+
+However, the unwrapped key will only be known to software for testing if the
+"import" functionality is used.  Proper testing is not possible in the
+"generate" case where the hardware generates the key itself.  The correct
+operation of the "generate" mode thus relies on the security and correctness of
+the hardware RNG and its use to generate the key, as well as the testing of the
+"import" mode as that should cover all parts other than the key generation.
+
+For an example of a test that verifies the ciphertext written to disk in the
+"import" mode, see the fscrypt hardware-wrapped key tests in xfstests, or
+`Android's vts_kernel_encryption_test
+<https://android.googlesource.com/platform/test/vts-testcase/kernel/+/refs/heads/master/encryption/>`_.
diff --git a/Documentation/dev-tools/kasan.rst b/Documentation/dev-tools/kasan.rst
index 5c93ab9..e66916a 100644
--- a/Documentation/dev-tools/kasan.rst
+++ b/Documentation/dev-tools/kasan.rst
@@ -140,6 +140,23 @@
 - ``kasan.vmalloc=off`` or ``=on`` disables or enables tagging of vmalloc
   allocations (default: ``on``).
 
+- ``kasan.page_alloc.sample=<sampling interval>`` makes KASAN tag only every
+  Nth page_alloc allocation with the order equal or greater than
+  ``kasan.page_alloc.sample.order``, where N is the value of the ``sample``
+  parameter (default: ``1``, or tag every such allocation).
+  This parameter is intended to mitigate the performance overhead introduced
+  by KASAN.
+  Note that enabling this parameter makes Hardware Tag-Based KASAN skip checks
+  of allocations chosen by sampling and thus miss bad accesses to these
+  allocations. Use the default value for accurate bug detection.
+
+- ``kasan.page_alloc.sample.order=<minimum page order>`` specifies the minimum
+  order of allocations that are affected by sampling (default: ``3``).
+  Only applies when ``kasan.page_alloc.sample`` is set to a value greater
+  than ``1``.
+  This parameter is intended to allow sampling only large page_alloc
+  allocations, which is the biggest source of the performance overhead.
+
 Error reports
 ~~~~~~~~~~~~~
 
diff --git a/Documentation/dev-tools/kunit/index.rst b/Documentation/dev-tools/kunit/index.rst
index f5d13f1..5dd538b 100644
--- a/Documentation/dev-tools/kunit/index.rst
+++ b/Documentation/dev-tools/kunit/index.rst
@@ -19,6 +19,15 @@
 	tips
 	running_tips
 
+.. warning::
+	AOSP only supports running tests loaded with modules. Built-in
+	test execution support has been disabled. In addition, in order
+	to fully enable running module loaded tests both CONFIG_KUNIT
+	needs to be enabled and kernel command line  argument
+	`kunit.enable` needs to be set to 1.
+
+	The remaining KUnit documentation has been left as-is.
+
 This section details the kernel unit testing framework.
 
 Introduction
diff --git a/Documentation/devicetree/bindings/firmware/gunyah-hypervisor.yaml b/Documentation/devicetree/bindings/firmware/gunyah-hypervisor.yaml
new file mode 100644
index 0000000..3fc0b04
--- /dev/null
+++ b/Documentation/devicetree/bindings/firmware/gunyah-hypervisor.yaml
@@ -0,0 +1,82 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/firmware/gunyah-hypervisor.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Gunyah Hypervisor
+
+maintainers:
+  - Prakruthi Deepak Heragu <quic_pheragu@quicinc.com>
+  - Elliot Berman <quic_eberman@quicinc.com>
+
+description: |+
+  Gunyah virtual machines use this information to determine the capability IDs
+  of the message queues used to communicate with the Gunyah Resource Manager.
+  See also: https://github.com/quic/gunyah-resource-manager/blob/develop/src/vm_creation/dto_construct.c
+
+properties:
+  compatible:
+    const: gunyah-hypervisor
+
+  "#address-cells":
+    description: Number of cells needed to represent 64-bit capability IDs.
+    const: 2
+
+  "#size-cells":
+    description: must be 0, because capability IDs are not memory address
+                  ranges and do not have a size.
+    const: 0
+
+patternProperties:
+  "^gunyah-resource-mgr(@.*)?":
+    type: object
+    description:
+      Resource Manager node which is required to communicate to Resource
+      Manager VM using Gunyah Message Queues.
+
+    properties:
+      compatible:
+        const: gunyah-resource-manager
+
+      reg:
+        items:
+          - description: Gunyah capability ID of the TX message queue
+          - description: Gunyah capability ID of the RX message queue
+
+      interrupts:
+        items:
+          - description: Interrupt for the TX message queue
+          - description: Interrupt for the RX message queue
+
+    additionalProperties: false
+
+    required:
+      - compatible
+      - reg
+      - interrupts
+
+additionalProperties: false
+
+required:
+  - compatible
+  - "#address-cells"
+  - "#size-cells"
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    hypervisor {
+        #address-cells = <2>;
+        #size-cells = <0>;
+        compatible = "gunyah-hypervisor";
+
+        gunyah-resource-mgr@0 {
+            compatible = "gunyah-resource-manager";
+            interrupts = <GIC_SPI 3 IRQ_TYPE_EDGE_RISING>, /* TX full IRQ */
+                         <GIC_SPI 4 IRQ_TYPE_EDGE_RISING>; /* RX empty IRQ */
+            reg = <0x00000000 0x00000000>, <0x00000000 0x00000001>;
+                  /* TX, RX cap ids */
+        };
+    };
diff --git a/Documentation/filesystems/f2fs.rst b/Documentation/filesystems/f2fs.rst
index 17df9a0..c577453 100644
--- a/Documentation/filesystems/f2fs.rst
+++ b/Documentation/filesystems/f2fs.rst
@@ -25,10 +25,14 @@
 
 - git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs-tools.git
 
-For reporting bugs and sending patches, please use the following mailing list:
+For sending patches, please use the following mailing list:
 
 - linux-f2fs-devel@lists.sourceforge.net
 
+For reporting bugs, please use the following f2fs bug tracker link:
+
+- https://bugzilla.kernel.org/enter_bug.cgi?product=File%20System&component=f2fs
+
 Background and Design issues
 ============================
 
@@ -154,6 +158,8 @@
 			 If this option is set, no cache_flush commands are issued
 			 but f2fs still guarantees the write ordering of all the
 			 data writes.
+barrier			 If this option is set, cache_flush commands are allowed to be
+			 issued.
 fastboot		 This option is used when a system wants to reduce mount
 			 time as much as possible, even though normal performance
 			 can be sacrificed.
@@ -199,6 +205,7 @@
 			 FAULT_SLAB_ALLOC	  0x000008000
 			 FAULT_DQUOT_INIT	  0x000010000
 			 FAULT_LOCK_OP		  0x000020000
+			 FAULT_BLKADDR		  0x000040000
 			 ===================	  ===========
 mode=%s			 Control block allocation mode which supports "adaptive"
 			 and "lfs". In "lfs" mode, there should be no random
@@ -257,7 +264,7 @@
 			 disabled, any unmounting or unexpected shutdowns will cause
 			 the filesystem contents to appear as they did when the
 			 filesystem was mounted with that option.
-			 While mounting with checkpoint=disabled, the filesystem must
+			 While mounting with checkpoint=disable, the filesystem must
 			 run garbage collection to ensure that all available space can
 			 be used. If this takes too much time, the mount may return
 			 EAGAIN. You may optionally add a value to indicate how much
@@ -340,6 +347,10 @@
 			 Because of the nature of low memory devices, in this mode, f2fs
 			 will try to save memory sometimes by sacrificing performance.
 			 "normal" mode is the default mode and same as before.
+age_extent_cache	 Enable an age extent cache based on rb-tree. It records
+			 data block update frequency of the extent per inode, in
+			 order to provide better temperature hints for data block
+			 allocation.
 ======================== ============================================================
 
 Debugfs Entries
diff --git a/Documentation/filesystems/fscrypt.rst b/Documentation/filesystems/fscrypt.rst
index 5ba5817..eccd327 100644
--- a/Documentation/filesystems/fscrypt.rst
+++ b/Documentation/filesystems/fscrypt.rst
@@ -338,6 +338,7 @@
 - AES-128-CBC for contents and AES-128-CTS-CBC for filenames
 - Adiantum for both contents and filenames
 - AES-256-XTS for contents and AES-256-HCTR2 for filenames (v2 policies only)
+- SM4-XTS for contents and SM4-CTS-CBC for filenames (v2 policies only)
 
 If unsure, you should use the (AES-256-XTS, AES-256-CTS-CBC) pair.
 
@@ -369,6 +370,12 @@
 POLYVAL should be enabled, e.g. CRYPTO_POLYVAL_ARM64_CE and
 CRYPTO_AES_ARM64_CE_BLK for ARM64.
 
+SM4 is a Chinese block cipher that is an alternative to AES.  It has
+not seen as much security review as AES, and it only has a 128-bit key
+size.  It may be useful in cases where its use is mandated.
+Otherwise, it should not be used.  For SM4 support to be available, it
+also needs to be enabled in the kernel crypto API.
+
 New encryption modes can be added relatively easily, without changes
 to individual filesystems.  However, authenticated encryption (AE)
 modes are not currently supported because of the difficulty of dealing
@@ -1270,8 +1277,8 @@
 
 For the read path (->read_folio()) of regular files, filesystems can
 read the ciphertext into the page cache and decrypt it in-place.  The
-page lock must be held until decryption has finished, to prevent the
-page from becoming visible to userspace prematurely.
+folio lock must be held until decryption has finished, to prevent the
+folio from becoming visible to userspace prematurely.
 
 For the write path (->writepage()) of regular files, filesystems
 cannot encrypt data in-place in the page cache, since the cached
diff --git a/Documentation/filesystems/fsverity.rst b/Documentation/filesystems/fsverity.rst
index cb8e757..ede672d 100644
--- a/Documentation/filesystems/fsverity.rst
+++ b/Documentation/filesystems/fsverity.rst
@@ -118,10 +118,11 @@
 - ``hash_algorithm`` must be the identifier for the hash algorithm to
   use for the Merkle tree, such as FS_VERITY_HASH_ALG_SHA256.  See
   ``include/uapi/linux/fsverity.h`` for the list of possible values.
-- ``block_size`` must be the Merkle tree block size.  Currently, this
-  must be equal to the system page size, which is usually 4096 bytes.
-  Other sizes may be supported in the future.  This value is not
-  necessarily the same as the filesystem block size.
+- ``block_size`` is the Merkle tree block size, in bytes.  In Linux
+  v6.3 and later, this can be any power of 2 between (inclusively)
+  1024 and the minimum of the system page size and the filesystem
+  block size.  In earlier versions, the page size was the only allowed
+  value.
 - ``salt_size`` is the size of the salt in bytes, or 0 if no salt is
   provided.  The salt is a value that is prepended to every hashed
   block; it can be used to personalize the hashing for a particular
@@ -161,6 +162,7 @@
 - ``EBUSY``: this ioctl is already running on the file
 - ``EEXIST``: the file already has verity enabled
 - ``EFAULT``: the caller provided inaccessible memory
+- ``EFBIG``: the file is too large to enable verity on
 - ``EINTR``: the operation was interrupted by a fatal signal
 - ``EINVAL``: unsupported version, hash algorithm, or block size; or
   reserved bits are set; or the file descriptor refers to neither a
@@ -495,9 +497,11 @@
 been formatted with ``-O verity`` or had ``tune2fs -O verity`` run on
 it.  "verity" is an RO_COMPAT filesystem feature, so once set, old
 kernels will only be able to mount the filesystem readonly, and old
-versions of e2fsck will be unable to check the filesystem.  Moreover,
-currently ext4 only supports mounting a filesystem with the "verity"
-feature when its block size is equal to PAGE_SIZE (often 4096 bytes).
+versions of e2fsck will be unable to check the filesystem.
+
+Originally, an ext4 filesystem with the "verity" feature could only be
+mounted when its block size was equal to the system page size
+(typically 4096 bytes).  In Linux v6.3, this limitation was removed.
 
 ext4 sets the EXT4_VERITY_FL on-disk inode flag on verity files.  It
 can only be set by `FS_IOC_ENABLE_VERITY`_, and it cannot be cleared.
@@ -518,9 +522,7 @@
 encrypting xattrs.  Note that the verity metadata *must* be encrypted
 when the file is, since it contains hashes of the plaintext data.
 
-Currently, ext4 verity only supports the case where the Merkle tree
-block size, filesystem block size, and page size are all the same.  It
-also only supports extent-based files.
+ext4 only allows verity on extent-based files.
 
 f2fs
 ----
@@ -538,11 +540,10 @@
 fsverity_descriptor) past the end of the file, starting at the first
 64K boundary beyond i_size.  See explanation for ext4 above.
 Moreover, f2fs supports at most 4096 bytes of xattr entries per inode
-which wouldn't be enough for even a single Merkle tree block.
+which usually wouldn't be enough for even a single Merkle tree block.
 
-Currently, f2fs verity only supports a Merkle tree block size of 4096.
-Also, f2fs doesn't support enabling verity on files that currently
-have atomic or volatile writes pending.
+f2fs doesn't support enabling verity on files that currently have
+atomic or volatile writes pending.
 
 btrfs
 -----
@@ -567,51 +568,48 @@
 ~~~~~~~~~
 
 For filesystems using Linux's pagecache, the ``->read_folio()`` and
-``->readahead()`` methods must be modified to verify pages before they
-are marked Uptodate.  Merely hooking ``->read_iter()`` would be
+``->readahead()`` methods must be modified to verify folios before
+they are marked Uptodate.  Merely hooking ``->read_iter()`` would be
 insufficient, since ``->read_iter()`` is not used for memory maps.
 
-Therefore, fs/verity/ provides a function fsverity_verify_page() which
-verifies a page that has been read into the pagecache of a verity
-inode, but is still locked and not Uptodate, so it's not yet readable
-by userspace.  As needed to do the verification,
-fsverity_verify_page() will call back into the filesystem to read
-Merkle tree pages via fsverity_operations::read_merkle_tree_page().
+Therefore, fs/verity/ provides the function fsverity_verify_blocks()
+which verifies data that has been read into the pagecache of a verity
+inode.  The containing folio must still be locked and not Uptodate, so
+it's not yet readable by userspace.  As needed to do the verification,
+fsverity_verify_blocks() will call back into the filesystem to read
+hash blocks via fsverity_operations::read_merkle_tree_page().
 
-fsverity_verify_page() returns false if verification failed; in this
-case, the filesystem must not set the page Uptodate.  Following this,
+fsverity_verify_blocks() returns false if verification failed; in this
+case, the filesystem must not set the folio Uptodate.  Following this,
 as per the usual Linux pagecache behavior, attempts by userspace to
-read() from the part of the file containing the page will fail with
-EIO, and accesses to the page within a memory map will raise SIGBUS.
+read() from the part of the file containing the folio will fail with
+EIO, and accesses to the folio within a memory map will raise SIGBUS.
 
-fsverity_verify_page() currently only supports the case where the
-Merkle tree block size is equal to PAGE_SIZE (often 4096 bytes).
-
-In principle, fsverity_verify_page() verifies the entire path in the
-Merkle tree from the data page to the root hash.  However, for
-efficiency the filesystem may cache the hash pages.  Therefore,
-fsverity_verify_page() only ascends the tree reading hash pages until
-an already-verified hash page is seen, as indicated by the PageChecked
-bit being set.  It then verifies the path to that page.
+In principle, verifying a data block requires verifying the entire
+path in the Merkle tree from the data block to the root hash.
+However, for efficiency the filesystem may cache the hash blocks.
+Therefore, fsverity_verify_blocks() only ascends the tree reading hash
+blocks until an already-verified hash block is seen.  It then verifies
+the path to that block.
 
 This optimization, which is also used by dm-verity, results in
 excellent sequential read performance.  This is because usually (e.g.
-127 in 128 times for 4K blocks and SHA-256) the hash page from the
+127 in 128 times for 4K blocks and SHA-256) the hash block from the
 bottom level of the tree will already be cached and checked from
-reading a previous data page.  However, random reads perform worse.
+reading a previous data block.  However, random reads perform worse.
 
 Block device based filesystems
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 Block device based filesystems (e.g. ext4 and f2fs) in Linux also use
 the pagecache, so the above subsection applies too.  However, they
-also usually read many pages from a file at once, grouped into a
+also usually read many data blocks from a file at once, grouped into a
 structure called a "bio".  To make it easier for these types of
 filesystems to support fs-verity, fs/verity/ also provides a function
-fsverity_verify_bio() which verifies all pages in a bio.
+fsverity_verify_bio() which verifies all data blocks in a bio.
 
 ext4 and f2fs also support encryption.  If a verity file is also
-encrypted, the pages must be decrypted before being verified.  To
+encrypted, the data must be decrypted before being verified.  To
 support this, these filesystems allocate a "post-read context" for
 each bio and store it in ``->bi_private``::
 
@@ -626,14 +624,14 @@
 verity, or both is enabled.  After the bio completes, for each needed
 postprocessing step the filesystem enqueues the bio_post_read_ctx on a
 workqueue, and then the workqueue work does the decryption or
-verification.  Finally, pages where no decryption or verity error
-occurred are marked Uptodate, and the pages are unlocked.
+verification.  Finally, folios where no decryption or verity error
+occurred are marked Uptodate, and the folios are unlocked.
 
 On many filesystems, files can contain holes.  Normally,
-``->readahead()`` simply zeroes holes and sets the corresponding pages
-Uptodate; no bios are issued.  To prevent this case from bypassing
-fs-verity, these filesystems use fsverity_verify_page() to verify hole
-pages.
+``->readahead()`` simply zeroes hole blocks and considers the
+corresponding data to be up-to-date; no bios are issued.  To prevent
+this case from bypassing fs-verity, filesystems use
+fsverity_verify_blocks() to verify hole blocks.
 
 Filesystems also disable direct I/O on verity files, since otherwise
 direct I/O would bypass fs-verity.
@@ -644,7 +642,7 @@
 This document focuses on the kernel, but a userspace utility for
 fs-verity can be found at:
 
-	https://git.kernel.org/pub/scm/linux/kernel/git/ebiggers/fsverity-utils.git
+	https://git.kernel.org/pub/scm/fs/fsverity/fsverity-utils.git
 
 See the README.md file in the fsverity-utils source tree for details,
 including examples of setting up fs-verity protected files.
@@ -793,9 +791,9 @@
 :A: There are many reasons why this is not possible or would be very
     difficult, including the following:
 
-    - To prevent bypassing verification, pages must not be marked
+    - To prevent bypassing verification, folios must not be marked
       Uptodate until they've been verified.  Currently, each
-      filesystem is responsible for marking pages Uptodate via
+      filesystem is responsible for marking folios Uptodate via
       ``->readahead()``.  Therefore, currently it's not possible for
       the VFS to do the verification on its own.  Changing this would
       require significant changes to the VFS and all filesystems.
diff --git a/Documentation/filesystems/incfs.rst b/Documentation/filesystems/incfs.rst
new file mode 100644
index 0000000..f0fb1d0
--- /dev/null
+++ b/Documentation/filesystems/incfs.rst
@@ -0,0 +1,85 @@
+.. SPDX-License-Identifier: GPL-2.0
+
+=================================================
+incfs: A stacked incremental filesystem for Linux
+=================================================
+
+/sys/fs interface
+=================
+
+Please update Documentation/ABI/testing/sysfs-fs-incfs if you update this
+section.
+
+incfs creates the following files in /sys/fs.
+
+Features
+--------
+
+/sys/fs/incremental-fs/features/corefs
+  Reads 'supported'. Always present.
+
+/sys/fs/incremental-fs/features/v2
+  Reads 'supported'. Present if all v2 features of incfs are supported. These
+  are:
+    fs-verity support
+    inotify support
+    ioclts:
+      INCFS_IOC_SET_READ_TIMEOUTS
+      INCFS_IOC_GET_READ_TIMEOUTS
+      INCFS_IOC_GET_BLOCK_COUNT
+      INCFS_IOC_CREATE_MAPPED_FILE
+    .incomplete folder
+    .blocks_written pseudo file
+    report_uid mount option
+
+/sys/fs/incremental-fs/features/zstd
+  Reads 'supported'. Present if zstd compression is supported for data blocks.
+
+/sys/fs/incremental-fs/features/bugfix_throttling
+  Reads 'supported'. Present if the throttling lock bug is fixed
+
+Optional per mount
+------------------
+
+For each incfs mount, the mount option sysfs_name=[name] creates a /sys/fs
+node called:
+
+/sys/fs/incremental-fs/instances/[name]
+
+This will contain the following files:
+
+/sys/fs/incremental-fs/instances/[name]/reads_delayed_min
+  Returns a count of the number of reads that were delayed as a result of the
+  per UID read timeouts min time setting.
+
+/sys/fs/incremental-fs/instances/[name]/reads_delayed_min_us
+  Returns total delay time for all files since first mount as a result of the
+  per UID read timeouts min time setting.
+
+/sys/fs/incremental-fs/instances/[name]/reads_delayed_pending
+  Returns a count of the number of reads that were delayed as a result of
+  waiting for a pending read.
+
+/sys/fs/incremental-fs/instances/[name]/reads_delayed_pending_us
+  Returns total delay time for all files since first mount as a result of
+  waiting for a pending read.
+
+/sys/fs/incremental-fs/instances/[name]/reads_failed_hash_verification
+  Returns number of reads that failed because of hash verification failures.
+
+/sys/fs/incremental-fs/instances/[name]/reads_failed_other
+  Returns number of reads that failed for reasons other than timing out or
+  hash failures.
+
+/sys/fs/incremental-fs/instances/[name]/reads_failed_timed_out
+  Returns number of reads that timed out.
+
+For reads_delayed_*** settings, note that a file can count for both
+reads_delayed_min and reads_delayed_pending if incfs first waits for a pending
+read then has to wait further for the min time. In that case, the time spent
+waiting is split between reads_delayed_pending_us, which is increased by the
+time spent waiting for the pending read, and reads_delayed_min_us, which is
+increased by the remainder of the time spent waiting.
+
+Reads that timed out are not added to the reads_delayed_pending or the
+reads_delayed_pending_us counters.
diff --git a/Documentation/filesystems/overlayfs.rst b/Documentation/filesystems/overlayfs.rst
index 4c76fda..6e316f8 100644
--- a/Documentation/filesystems/overlayfs.rst
+++ b/Documentation/filesystems/overlayfs.rst
@@ -195,7 +195,7 @@
 
 1. return EXDEV error: this error is returned by rename(2) when trying to
    move a file or directory across filesystem boundaries.  Hence
-   applications are usually prepared to hande this error (mv(1) for example
+   applications are usually prepared to handle this error (mv(1) for example
    recursively copies the directory tree).  This is the default behavior.
 
 2. If the "redirect_dir" feature is enabled, then the directory will be
@@ -324,6 +324,30 @@
 The resulting access permissions should be the same.  The difference is in
 the time of copy (on-demand vs. up-front).
 
+### Non overlapping credentials
+
+As noted above, all access to the upper, lower and work directories is the
+recorded mounter's MAC and DAC credentials.  The incoming accesses are
+checked against the caller's credentials.
+
+In the case where caller MAC or DAC credentials do not overlap the mounter, a
+use case available in older versions of the driver, the override_creds mount
+flag can be turned off.  For when the use pattern has caller with legitimate
+credentials where the mounter does not.  For example init may have been the
+mounter, but the caller would have execute or read MAC permissions where
+init would not.  override_creds off means all access, incoming, upper, lower
+or working, will be tested against the caller.
+
+Several unintended side effects will occur though.  The caller without certain
+key capabilities or lower privilege will not always be able to delete files or
+directories, create nodes, or search some restricted directories.  The ability
+to search and read a directory entry is spotty as a result of the cache
+mechanism not re-testing the credentials because of the assumption, a
+privileged caller can fill cache, then a lower privilege can read the directory
+cache.  The uneven security model where cache, upperdir and workdir are opened
+at privilege, but accessed without creating a form of privilege escalation,
+should only be used with strict understanding of the side effects and of the
+security policies.
 
 Multiple lower layers
 ---------------------
diff --git a/Documentation/kbuild/modules.rst b/Documentation/kbuild/modules.rst
index a1f3eb7..e9b6fe2 100644
--- a/Documentation/kbuild/modules.rst
+++ b/Documentation/kbuild/modules.rst
@@ -21,6 +21,7 @@
 	   --- 4.1 Kernel Includes
 	   --- 4.2 Single Subdirectory
 	   --- 4.3 Several Subdirectories
+	   --- 4.4 UAPI Headers Installation
 	=== 5. Module Installation
 	   --- 5.1 INSTALL_MOD_PATH
 	   --- 5.2 INSTALL_MOD_DIR
@@ -131,6 +132,10 @@
 		/lib/modules/<kernel_release>/extra/, but a prefix may
 		be added with INSTALL_MOD_PATH (discussed in section 5).
 
+	headers_install
+		Export headers in a format suitable for userspace. The default
+		location is $PWD/usr. INSTALL_HDR_PATH can change this path.
+
 	clean
 		Remove all generated files in the module directory only.
 
@@ -406,6 +411,17 @@
 	pointing to the directory where the currently executing kbuild
 	file is located.
 
+4.4 UAPI Headers Installation
+-----------------------------
+
+	External modules may export headers to userspace in a similar
+	fashion to the in-tree counterpart drivers. kbuild supports
+	running headers_install target in an out-of-tree. The location
+	where kbuild searches for headers is $(M)/include/uapi and
+	$(M)/arch/$(SRCARCH)/include/uapi.
+
+	See also Documentation/kbuild/headers_install.rst.
+
 
 5. Module Installation
 ======================
diff --git a/Documentation/mm/frontswap.rst b/Documentation/mm/frontswap.rst
index feecc5e..613716d 100644
--- a/Documentation/mm/frontswap.rst
+++ b/Documentation/mm/frontswap.rst
@@ -8,6 +8,12 @@
 In some environments, dramatic performance savings may be obtained because
 swapped pages are saved in RAM (or a RAM-like device) instead of a swap disk.
 
+(Note, frontswap -- and :ref:`cleancache` (merged at 3.0) -- are the "frontends"
+and the only necessary changes to the core kernel for transcendent memory;
+all other supporting code -- the "backends" -- is implemented as drivers.
+See the LWN.net article `Transcendent memory in a nutshell`_
+for a detailed overview of frontswap and related kernel parts)
+
 .. _Transcendent memory in a nutshell: https://lwn.net/Articles/454795/
 
 Frontswap is so named because it can be thought of as the opposite of
@@ -75,9 +81,11 @@
 and size (such as with compression) or secretly moved (as might be
 useful for write-balancing for some RAM-like devices).  Swap pages (and
 evicted page-cache pages) are a great use for this kind of slower-than-RAM-
-but-much-faster-than-disk "pseudo-RAM device".
+but-much-faster-than-disk "pseudo-RAM device" and the frontswap (and
+cleancache) interface to transcendent memory provides a nice way to read
+and write -- and indirectly "name" -- the pages.
 
-Frontswap with a fairly small impact on the kernel,
+Frontswap -- and cleancache -- with a fairly small impact on the kernel,
 provides a huge amount of flexibility for more dynamic, flexible RAM
 utilization in various system configurations:
 
diff --git a/Documentation/mm/multigen_lru.rst b/Documentation/mm/multigen_lru.rst
index d7062c6..5f1f6ec 100644
--- a/Documentation/mm/multigen_lru.rst
+++ b/Documentation/mm/multigen_lru.rst
@@ -89,15 +89,15 @@
 
 Generation numbers are truncated into ``order_base_2(MAX_NR_GENS+1)``
 bits in order to fit into the gen counter in ``folio->flags``. Each
-truncated generation number is an index to ``lrugen->lists[]``. The
+truncated generation number is an index to ``lrugen->folios[]``. The
 sliding window technique is used to track at least ``MIN_NR_GENS`` and
 at most ``MAX_NR_GENS`` generations. The gen counter stores a value
 within ``[1, MAX_NR_GENS]`` while a page is on one of
-``lrugen->lists[]``; otherwise it stores zero.
+``lrugen->folios[]``; otherwise it stores zero.
 
 Each generation is divided into multiple tiers. A page accessed ``N``
 times through file descriptors is in tier ``order_base_2(N)``. Unlike
-generations, tiers do not have dedicated ``lrugen->lists[]``. In
+generations, tiers do not have dedicated ``lrugen->folios[]``. In
 contrast to moving across generations, which requires the LRU lock,
 moving across tiers only involves atomic operations on
 ``folio->flags`` and therefore has a negligible cost. A feedback loop
@@ -127,7 +127,7 @@
 Eviction
 --------
 The eviction consumes old generations. Given an ``lruvec``, it
-increments ``min_seq`` when ``lrugen->lists[]`` indexed by
+increments ``min_seq`` when ``lrugen->folios[]`` indexed by
 ``min_seq%MAX_NR_GENS`` becomes empty. To select a type and a tier to
 evict from, it first compares ``min_seq[]`` to select the older type.
 If both types are equally old, it selects the one whose first tier has
@@ -141,9 +141,85 @@
 this end, the feedback loop uses the first tier as the baseline, for
 the reason stated earlier.
 
+Working set protection
+----------------------
+Each generation is timestamped at birth. If ``lru_gen_min_ttl`` is
+set, an ``lruvec`` is protected from the eviction when its oldest
+generation was born within ``lru_gen_min_ttl`` milliseconds. In other
+words, it prevents the working set of ``lru_gen_min_ttl`` milliseconds
+from getting evicted. The OOM killer is triggered if this working set
+cannot be kept in memory.
+
+This time-based approach has the following advantages:
+
+1. It is easier to configure because it is agnostic to applications
+   and memory sizes.
+2. It is more reliable because it is directly wired to the OOM killer.
+
+Rmap/PT walk feedback
+---------------------
+Searching the rmap for PTEs mapping each page on an LRU list (to test
+and clear the accessed bit) can be expensive because pages from
+different VMAs (PA space) are not cache friendly to the rmap (VA
+space). For workloads mostly using mapped pages, searching the rmap
+can incur the highest CPU cost in the reclaim path.
+
+``lru_gen_look_around()`` exploits spatial locality to reduce the
+trips into the rmap. It scans the adjacent PTEs of a young PTE and
+promotes hot pages. If the scan was done cacheline efficiently, it
+adds the PMD entry pointing to the PTE table to the Bloom filter. This
+forms a feedback loop between the eviction and the aging.
+
+Bloom Filters
+-------------
+Bloom filters are a space and memory efficient data structure for set
+membership test, i.e., test if an element is not in the set or may be
+in the set.
+
+In the eviction path, specifically, in ``lru_gen_look_around()``, if a
+PMD has a sufficient number of hot pages, its address is placed in the
+filter. In the aging path, set membership means that the PTE range
+will be scanned for young pages.
+
+Note that Bloom filters are probabilistic on set membership. If a test
+is false positive, the cost is an additional scan of a range of PTEs,
+which may yield hot pages anyway. Parameters of the filter itself can
+control the false positive rate in the limit.
+
+Memcg LRU
+---------
+An memcg LRU is a per-node LRU of memcgs. It is also an LRU of LRUs,
+since each node and memcg combination has an LRU of folios (see
+``mem_cgroup_lruvec()``). Its goal is to improve the scalability of
+global reclaim, which is critical to system-wide memory overcommit in
+data centers. Note that memcg LRU only applies to global reclaim.
+
+The basic structure of an memcg LRU can be understood by an analogy to
+the active/inactive LRU (of folios):
+
+1. It has the young and the old (generations), i.e., the counterparts
+   to the active and the inactive;
+2. The increment of ``max_seq`` triggers promotion, i.e., the
+   counterpart to activation;
+3. Other events trigger similar operations, e.g., offlining an memcg
+   triggers demotion, i.e., the counterpart to deactivation.
+
+In terms of global reclaim, it has two distinct features:
+
+1. Sharding, which allows each thread to start at a random memcg (in
+   the old generation) and improves parallelism;
+2. Eventual fairness, which allows direct reclaim to bail out at will
+   and reduces latency without affecting fairness over some time.
+
+In terms of traversing memcgs during global reclaim, it improves the
+best-case complexity from O(n) to O(1) and does not affect the
+worst-case complexity O(n). Therefore, on average, it has a sublinear
+complexity.
+
 Summary
 -------
-The multi-gen LRU can be disassembled into the following parts:
+The multi-gen LRU (of folios) can be disassembled into the following
+parts:
 
 * Generations
 * Rmap walks
diff --git a/Documentation/scheduler/sched-energy.rst b/Documentation/scheduler/sched-energy.rst
index 8fbce5e..83f1179 100644
--- a/Documentation/scheduler/sched-energy.rst
+++ b/Documentation/scheduler/sched-energy.rst
@@ -402,7 +402,7 @@
 because it is the only one providing some degree of consistency between
 frequency requests and energy predictions.
 
-Using EAS with any other governor than schedutil is not supported.
+Using EAS with any other governor than schedutil is not recommended.
 
 
 6.5 Scale-invariant utilization signals
diff --git a/Documentation/scsi/scsi_eh.rst b/Documentation/scsi/scsi_eh.rst
index bad624f..104d09e 100644
--- a/Documentation/scsi/scsi_eh.rst
+++ b/Documentation/scsi/scsi_eh.rst
@@ -92,14 +92,17 @@
  1. invokes optional hostt->eh_timed_out() callback.  Return value can
     be one of
 
-    - BLK_EH_RESET_TIMER
+    - SCSI_EH_RESET_TIMER
 	This indicates that more time is required to finish the
 	command.  Timer is restarted.
 
-    - BLK_EH_DONE
+    - SCSI_EH_NOT_HANDLED
         eh_timed_out() callback did not handle the command.
 	Step #2 is taken.
 
+    - SCSI_EH_DONE
+        eh_timed_out() completed the command.
+
  2. scsi_abort_command() is invoked to schedule an asynchronous abort which may
     issue a retry scmd->allowed + 1 times.  Asynchronous aborts are not invoked
     for commands for which the SCSI_EH_ABORT_SCHEDULED flag is set (this
diff --git a/Documentation/userspace-api/ioctl/ioctl-number.rst b/Documentation/userspace-api/ioctl/ioctl-number.rst
index 5f81e2a..a37f1b5 100644
--- a/Documentation/userspace-api/ioctl/ioctl-number.rst
+++ b/Documentation/userspace-api/ioctl/ioctl-number.rst
@@ -136,6 +136,7 @@
 'F'   DD     video/sstfb.h                                           conflict!
 'G'   00-3F  drivers/misc/sgi-gru/grulib.h                           conflict!
 'G'   00-0F  xen/gntalloc.h, xen/gntdev.h                            conflict!
+'G'   00-0F  linux/gunyah.h                                          conflict!
 'H'   00-7F  linux/hiddev.h                                          conflict!
 'H'   00-0F  linux/hidraw.h                                          conflict!
 'H'   01     linux/mei.h                                             conflict!
diff --git a/Documentation/userspace-api/media/v4l/pixfmt-compressed.rst b/Documentation/userspace-api/media/v4l/pixfmt-compressed.rst
index 506dd3c..06b78e55 100644
--- a/Documentation/userspace-api/media/v4l/pixfmt-compressed.rst
+++ b/Documentation/userspace-api/media/v4l/pixfmt-compressed.rst
@@ -88,6 +88,11 @@
       - ``V4L2_PIX_FMT_H263``
       - 'H263'
       - H263 video elementary stream.
+    * .. _V4L2-PIX-FMT-SPK:
+
+      - ``V4L2_PIX_FMT_SPK``
+      - 'SPK0'
+      - Sorenson Spark is an implementation of H.263 for use in Flash Video and Adobe Flash files
     * .. _V4L2-PIX-FMT-MPEG1:
 
       - ``V4L2_PIX_FMT_MPEG1``
@@ -232,6 +237,26 @@
         Metadata associated with the frame to decode is required to be passed
         through the ``V4L2_CID_STATELESS_FWHT_PARAMS`` control.
 	See the :ref:`associated Codec Control ID <codec-stateless-fwht>`.
+    * .. _V4L2-PIX-FMT-RV30:
+
+      - ``V4L2_PIX_FMT_RV30``
+      - 'RV30'
+      - RealVideo, or also spelled as Real Video, is a suite of
+        proprietary video compression formats developed by
+        RealNetworks - the specific format changes with the version.
+        RealVideo codecs are identified by four-character codes.
+        RV30 corresponds to RealVideo 8, suspected to be based
+        largely on an early draft of H.264
+    * .. _V4L2-PIX-FMT-RV40:
+
+      - ``V4L2_PIX_FMT_RV40``
+      - 'RV40'
+      - RV40 represents RealVideo 9 and RealVideo 10.
+        RealVideo 9, suspected to be based on H.264.
+        RealVideo 10, aka RV9 EHQ, This refers to an improved encoder
+        for the RV9 format that is fully backwards compatible with
+        RV9 players - the format and decoder did not change, only
+        the encoder did. As a result, it uses the same FourCC.
 
 .. raw:: latex
 
diff --git a/Documentation/userspace-api/media/v4l/pixfmt-yuv-planar.rst b/Documentation/userspace-api/media/v4l/pixfmt-yuv-planar.rst
index 10b1fee..f1d5bb7 100644
--- a/Documentation/userspace-api/media/v4l/pixfmt-yuv-planar.rst
+++ b/Documentation/userspace-api/media/v4l/pixfmt-yuv-planar.rst
@@ -273,7 +273,9 @@
 .. _V4L2-PIX-FMT-NV12-16L16:
 .. _V4L2-PIX-FMT-NV12-32L32:
 .. _V4L2-PIX-FMT-NV12M-8L128:
+.. _V4L2-PIX-FMT-NV12-8L128:
 .. _V4L2-PIX-FMT-NV12M-10BE-8L128:
+.. _V4L2-PIX-FMT-NV12-10BE-8L128:
 .. _V4L2-PIX-FMT-MM21:
 
 Tiled NV12
@@ -319,6 +321,9 @@
 The image height must be aligned to a multiple of 128.
 The layouts of the luma and chroma planes are identical.
 
+``V4L2_PIX_FMT_NV12_8L128`` is similar to ``V4L2_PIX_FMT_NV12M_8L128`` but stores
+two planes in one memory.
+
 ``V4L2_PIX_FMT_NV12M_10BE_8L128`` is similar to ``V4L2_PIX_FMT_NV12M`` but stores
 10 bits pixels in 2D 8x128 tiles, and stores tiles linearly in memory.
 the data is arranged in big endian order.
@@ -334,6 +339,9 @@
 byte 3: Y2(bits 5-0) Y3(bits 9-8)
 byte 4: Y3(bits 7-0)
 
+``V4L2_PIX_FMT_NV12_10BE_8L128`` is similar to ``V4L2_PIX_FMT_NV12M_10BE_8L128`` but stores
+two planes in one memory.
+
 ``V4L2_PIX_FMT_MM21`` store luma pixel in 16x32 tiles, and chroma pixels
 in 16x16 tiles. The line stride must be aligned to a multiple of 16 and the
 image height must be aligned to a multiple of 32. The number of luma and chroma
diff --git a/Documentation/virt/gunyah/index.rst b/Documentation/virt/gunyah/index.rst
new file mode 100644
index 0000000..70582498
--- /dev/null
+++ b/Documentation/virt/gunyah/index.rst
@@ -0,0 +1,114 @@
+.. SPDX-License-Identifier: GPL-2.0
+
+=================
+Gunyah Hypervisor
+=================
+
+.. toctree::
+   :maxdepth: 1
+
+   vm-manager
+   message-queue
+
+Gunyah is a Type-1 hypervisor which is independent of any OS kernel, and runs in
+a higher CPU privilege level. It does not depend on any lower-privileged operating system
+for its core functionality. This increases its security and can support a much smaller
+trusted computing base than a Type-2 hypervisor.
+
+Gunyah is an open source hypervisor. The source repo is available at
+https://github.com/quic/gunyah-hypervisor.
+
+Gunyah provides these following features.
+
+- Scheduling:
+
+  A scheduler for virtual CPUs (vCPUs) on physical CPUs enables time-sharing
+  of the CPUs. Gunyah supports two models of scheduling:
+
+    1. "Behind the back" scheduling in which Gunyah hypervisor schedules vCPUS on its own.
+    2. "Proxy" scheduling in which a delegated VM can donate part of one of its vCPU slice
+       to another VM's vCPU via a hypercall.
+
+- Memory Management:
+
+  APIs handling memory, abstracted as objects, limiting direct use of physical
+  addresses. Memory ownership and usage tracking of all memory under its control.
+  Memory partitioning between VMs is a fundamental security feature.
+
+- Interrupt Virtualization:
+
+  Uses CPU hardware interrupt virtualization capabilities. Interrupts are handled
+  in the hypervisor and routed to the assigned VM.
+
+- Inter-VM Communication:
+
+  There are several different mechanisms provided for communicating between VMs.
+
+- Virtual platform:
+
+  Architectural devices such as interrupt controllers and CPU timers are directly provided
+  by the hypervisor as well as core virtual platform devices and system APIs such as ARM PSCI.
+
+- Device Virtualization:
+
+  Para-virtualization of devices is supported using inter-VM communication.
+
+Architectures supported
+=======================
+AArch64 with a GIC
+
+Resources and Capabilities
+==========================
+
+Some services or resources provided by the Gunyah hypervisor are described to a virtual machine by
+capability IDs. For instance, inter-VM communication is performed with doorbells and message queues.
+Gunyah allows access to manipulate that doorbell via the capability ID. These resources are
+described in Linux as a struct gh_resource.
+
+High level management of these resources is performed by the resource manager VM. RM informs a
+guest VM about resources it can access through either the device tree or via guest-initiated RPC.
+
+For each virtual machine, Gunyah maintains a table of resources which can be accessed by that VM.
+An entry in this table is called a "capability" and VMs can only access resources via this
+capability table. Hence, virtual Gunyah resources are referenced by a "capability IDs" and not
+"resource IDs". If 2 VMs have access to the same resource, they might not be using the same
+capability ID to access that resource since the capability tables are independent per VM.
+
+Resource Manager
+================
+
+The resource manager (RM) is a privileged application VM supporting the Gunyah Hypervisor.
+It provides policy enforcement aspects of the virtualization system. The resource manager can
+be treated as an extension of the Hypervisor but is separated to its own partition to ensure
+that the hypervisor layer itself remains small and secure and to maintain a separation of policy
+and mechanism in the platform. RM runs at arm64 NS-EL1 similar to other virtual machines.
+
+Communication with the resource manager from each guest VM happens with message-queue.rst. Details
+about the specific messages can be found in drivers/virt/gunyah/rsc_mgr.c
+
+::
+
+  +-------+   +--------+   +--------+
+  |  RM   |   |  VM_A  |   |  VM_B  |
+  +-.-.-.-+   +---.----+   +---.----+
+    | |           |            |
+  +-.-.-----------.------------.----+
+  | | \==========/             |    |
+  |  \========================/     |
+  |            Gunyah               |
+  +---------------------------------+
+
+The source for the resource manager is available at https://github.com/quic/gunyah-resource-manager.
+
+The resource manager provides the following features:
+
+- VM lifecycle management: allocating a VM, starting VMs, destruction of VMs
+- VM access control policy, including memory sharing and lending
+- Interrupt routing configuration
+- Forwarding of system-level events (e.g. VM shutdown) to owner VM
+
+When booting a virtual machine which uses a devicetree such as Linux, resource manager overlays a
+/hypervisor node. This node can let Linux know it is running as a Gunyah guest VM,
+how to communicate with resource manager, and basic description and capabilities of
+this VM. See Documentation/devicetree/bindings/firmware/gunyah-hypervisor.yaml for a description
+of this node.
diff --git a/Documentation/virt/gunyah/message-queue.rst b/Documentation/virt/gunyah/message-queue.rst
new file mode 100644
index 0000000..70d82a4
--- /dev/null
+++ b/Documentation/virt/gunyah/message-queue.rst
@@ -0,0 +1,71 @@
+.. SPDX-License-Identifier: GPL-2.0
+
+Message Queues
+==============
+Message queue is a simple low-capacity IPC channel between two VMs. It is
+intended for sending small control and configuration messages. Each message
+queue is unidirectional, so a full-duplex IPC channel requires a pair of queues.
+
+Messages can be up to 240 bytes in length. Longer messages require a further
+protocol on top of the message queue messages themselves. For instance, communication
+with the resource manager adds a header field for sending longer messages via multiple
+message fragments.
+
+The diagram below shows how message queue works. A typical configuration involves
+2 message queues. Message queue 1 allows VM_A to send messages to VM_B. Message
+queue 2 allows VM_B to send messages to VM_A.
+
+1. VM_A sends a message of up to 240 bytes in length. It raises a hypercall
+   with the message to inform the hypervisor to add the message to
+   message queue 1's queue. The hypervisor copies memory into the internal
+   message queue representation; the memory doesn't need to be shared between
+   VM_A and VM_B.
+
+2. Gunyah raises the corresponding interrupt for VM_B (Rx vIRQ) when any of
+   these happens:
+
+   a. gh_msgq_send() has PUSH flag. Queue is immediately flushed. This is the typical case.
+   b. Explicility with gh_msgq_push command from VM_A.
+   c. Message queue has reached a threshold depth.
+
+3. VM_B calls gh_msgq_recv() and Gunyah copies message to requested buffer.
+
+4. Gunyah buffers messages in the queue. If the queue became full when VM_A added a message,
+   the return values for gh_msgq_send() include a flag that indicates the queue is full.
+   Once VM_B receives the message and, thus, there is space in the queue, Gunyah
+   will raise the Tx vIRQ on VM_A to indicate it can continue sending messages.
+
+For VM_B to send a message to VM_A, the process is identical, except that hypercalls
+reference message queue 2's capability ID. Each message queue has its own independent
+vIRQ: two TX message queues will have two vIRQs (and two capability IDs).
+
+::
+
+      +---------------+         +-----------------+         +---------------+
+      |      VM_A     |         |Gunyah hypervisor|         |      VM_B     |
+      |               |         |                 |         |               |
+      |               |         |                 |         |               |
+      |               |   Tx    |                 |         |               |
+      |               |-------->|                 | Rx vIRQ |               |
+      |gh_msgq_send() | Tx vIRQ |Message queue 1  |-------->|gh_msgq_recv() |
+      |               |<------- |                 |         |               |
+      |               |         |                 |         |               |
+      | Message Queue |         |                 |         | Message Queue |
+      | driver        |         |                 |         | driver        |
+      |               |         |                 |         |               |
+      |               |         |                 |         |               |
+      |               |         |                 |   Tx    |               |
+      |               | Rx vIRQ |                 |<--------|               |
+      |gh_msgq_recv() |<--------|Message queue 2  | Tx vIRQ |gh_msgq_send() |
+      |               |         |                 |-------->|               |
+      |               |         |                 |         |               |
+      |               |         |                 |         |               |
+      +---------------+         +-----------------+         +---------------+
+
+Gunyah message queues are exposed as mailboxes. To create the mailbox, create
+a mbox_client and call `gh_msgq_init()`. On receipt of the RX_READY interrupt,
+all messages in the RX message queue are read and pushed via the `rx_callback`
+of the registered mbox_client.
+
+.. kernel-doc:: drivers/mailbox/gunyah-msgq.c
+   :identifiers: gh_msgq_init
diff --git a/Documentation/virt/gunyah/vm-manager.rst b/Documentation/virt/gunyah/vm-manager.rst
new file mode 100644
index 0000000..415b112
--- /dev/null
+++ b/Documentation/virt/gunyah/vm-manager.rst
@@ -0,0 +1,143 @@
+.. SPDX-License-Identifier: GPL-2.0
+
+=======================
+Virtual Machine Manager
+=======================
+
+The Gunyah Virtual Machine Manager is a Linux driver to support launching
+virtual machines using Gunyah.
+
+Configuration of a Gunyah virtual machine is done via a devicetree. When the VM
+is launched, memory is provided by the host VM which contains the devictree.
+Gunyah reads the devicetree to configure the memory map and create resources
+such as vCPUs for the VM. Memory can be shared with the VM with
+`GH_VM_SET_USER_MEM_REGION`_. Userspace can interact with the resources in Linux
+by adding "functions" to the VM.
+
+Gunyah Functions
+================
+
+Components of a Gunyah VM's configuration that need kernel configuration are
+called "functions" and are built on top of a framework. Functions are identified
+by a string and have some argument(s) to configure them. They are typically
+created by the `GH_VM_ADD_FUNCTION`_ ioctl.
+
+Functions typically will always do at least one of these operations:
+
+1. Create resource ticket(s). Resource tickets allow a function to register
+   itself as the client for a Gunyah resource (e.g. doorbell or vCPU) and
+   the function is given the pointer to the &struct gh_resource when the
+   VM is starting.
+
+2. Register IO handler(s). IO handlers allow a function to handle stage-2 faults
+   from the virtual machine.
+
+Sample Userspace VMM
+====================
+
+A sample userspace VMM is included in samples/gunyah/ along with a minimal
+devicetree that can be used to launch a VM. To build this sample, enable
+CONFIG_SAMPLE_GUNYAH.
+
+IOCTLs and userspace VMM flows
+==============================
+
+The kernel exposes a char device interface at /dev/gunyah.
+
+To create a VM, use the `GH_CREATE_VM`_ ioctl. A successful call will return a
+"Gunyah VM" file descriptor.
+
+/dev/gunyah API Descriptions
+----------------------------
+
+GH_CREATE_VM
+~~~~~~~~~~~~
+
+Creates a Gunyah VM. The argument is reserved for future use and must be 0.
+A successful call will return a Gunyah VM file descriptor. See
+`Gunyah VM API Descriptions`_ for list of IOCTLs that can be made on this file
+file descriptor.
+
+Gunyah VM API Descriptions
+--------------------------
+
+GH_VM_SET_USER_MEM_REGION
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+This ioctl allows the user to create or delete a memory parcel for a guest
+virtual machine. Each memory region is uniquely identified by a label;
+attempting to create two regions with the same label is not allowed. Labels are
+unique per virtual machine.
+
+While VMM is guest-agnostic and allows runtime addition of memory regions,
+Linux guest virtual machines do not support accepting memory regions at runtime.
+Thus, for Linux guests, memory regions should be provided before starting the VM
+and the VM must be configured via the devicetree to accept these at boot-up.
+
+The guest physical address is used by Linux kernel to check that the requested
+user regions do not overlap and to help find the corresponding memory region
+for calls like `GH_VM_SET_DTB_CONFIG`_. It must be page aligned.
+
+To add a memory region, call `GH_VM_SET_USER_MEM_REGION`_ with fields set as
+described above.
+
+.. kernel-doc:: include/uapi/linux/gunyah.h
+   :identifiers: gh_userspace_memory_region gh_mem_flags
+
+GH_VM_SET_DTB_CONFIG
+~~~~~~~~~~~~~~~~~~~~
+
+This ioctl sets the location of the VM's devicetree blob and is used by Gunyah
+Resource Manager to allocate resources. The guest physical memory must be part
+of the primary memory parcel provided to the VM prior to GH_VM_START.
+
+.. kernel-doc:: include/uapi/linux/gunyah.h
+   :identifiers: gh_vm_dtb_config
+
+GH_VM_START
+~~~~~~~~~~~
+
+This ioctl starts the VM.
+
+GH_VM_ADD_FUNCTION
+~~~~~~~~~~~~~~~~~~
+
+This ioctl registers a Gunyah VM function with the VM manager. The VM function
+is described with a &struct gh_fn_desc.type and some arguments for that type.
+Typically, the function is added before the VM starts, but the function doesn't
+"operate" until the VM starts with `GH_VM_START`_. For example, vCPU ioctls will
+all return an error until the VM starts because the vCPUs don't exist until the
+VM is started. This allows the VMM to set up all the kernel functions needed for
+the VM *before* the VM starts.
+
+.. kernel-doc:: include/uapi/linux/gunyah.h
+   :identifiers: gh_fn_desc gh_fn_type
+
+The argument types are documented below:
+
+.. kernel-doc:: include/uapi/linux/gunyah.h
+   :identifiers: gh_fn_vcpu_arg gh_fn_irqfd_arg gh_irqfd_flags gh_fn_ioeventfd_arg gh_ioeventfd_flags
+
+Gunyah VCPU API Descriptions
+----------------------------
+
+A vCPU file descriptor is created after calling `GH_VM_ADD_FUNCTION` with the type `GH_FN_VCPU`.
+
+GH_VCPU_RUN
+~~~~~~~~~~~
+
+This ioctl is used to run a guest virtual cpu.  While there are no
+explicit parameters, there is an implicit parameter block that can be
+obtained by mmap()ing the vcpu fd at offset 0, with the size given by
+`GH_VCPU_MMAP_SIZE`_. The parameter block is formatted as a 'struct
+gh_vcpu_run' (see below).
+
+GH_VCPU_MMAP_SIZE
+~~~~~~~~~~~~~~~~~
+
+The `GH_VCPU_RUN`_ ioctl communicates with userspace via a shared
+memory region. This ioctl returns the size of that region. See the
+`GH_VCPU_RUN`_ documentation for details.
+
+.. kernel-doc:: include/uapi/linux/gunyah.h
+   :identifiers: gh_vcpu_exit gh_vcpu_run gh_vm_status gh_vm_exit_info
diff --git a/Documentation/virt/index.rst b/Documentation/virt/index.rst
index 2f1cffa..418d540 100644
--- a/Documentation/virt/index.rst
+++ b/Documentation/virt/index.rst
@@ -15,6 +15,7 @@
    acrn/index
    coco/sev-guest
    hyperv/index
+   gunyah/index
 
 .. only:: html and subproject
 
diff --git a/Documentation/virt/kvm/api.rst b/Documentation/virt/kvm/api.rst
index 1bc61bf..6cdc682 100644
--- a/Documentation/virt/kvm/api.rst
+++ b/Documentation/virt/kvm/api.rst
@@ -6433,6 +6433,13 @@
 KVM_EXIT_MMIO, but userspace has to emulate any change to the processing state
 if it decides to decode and emulate the instruction.
 
+This feature isn't available to protected VMs, as userspace does not
+have access to the state that is required to perform the emulation.
+Instead, a data abort exception is directly injected in the guest.
+Note that although KVM_CAP_ARM_NISV_TO_USER will be reported if
+queried outside of a protected VM context, the feature will not be
+exposed if queried on a protected VM file descriptor.
+
 ::
 
 		/* KVM_EXIT_X86_RDMSR / KVM_EXIT_X86_WRMSR */
diff --git a/Documentation/virt/kvm/arm/fw-pseudo-registers.rst b/Documentation/virt/kvm/arm/fw-pseudo-registers.rst
new file mode 100644
index 0000000..b90fd0b
--- /dev/null
+++ b/Documentation/virt/kvm/arm/fw-pseudo-registers.rst
@@ -0,0 +1,138 @@
+.. SPDX-License-Identifier: GPL-2.0
+
+=======================================
+ARM firmware pseudo-registers interface
+=======================================
+
+KVM handles the hypercall services as requested by the guests. New hypercall
+services are regularly made available by the ARM specification or by KVM (as
+vendor services) if they make sense from a virtualization point of view.
+
+This means that a guest booted on two different versions of KVM can observe
+two different "firmware" revisions. This could cause issues if a given guest
+is tied to a particular version of a hypercall service, or if a migration
+causes a different version to be exposed out of the blue to an unsuspecting
+guest.
+
+In order to remedy this situation, KVM exposes a set of "firmware
+pseudo-registers" that can be manipulated using the GET/SET_ONE_REG
+interface. These registers can be saved/restored by userspace, and set
+to a convenient value as required.
+
+The following registers are defined:
+
+* KVM_REG_ARM_PSCI_VERSION:
+
+  KVM implements the PSCI (Power State Coordination Interface)
+  specification in order to provide services such as CPU on/off, reset
+  and power-off to the guest.
+
+  - Only valid if the vcpu has the KVM_ARM_VCPU_PSCI_0_2 feature set
+    (and thus has already been initialized)
+  - Returns the current PSCI version on GET_ONE_REG (defaulting to the
+    highest PSCI version implemented by KVM and compatible with v0.2)
+  - Allows any PSCI version implemented by KVM and compatible with
+    v0.2 to be set with SET_ONE_REG
+  - Affects the whole VM (even if the register view is per-vcpu)
+
+* KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1:
+    Holds the state of the firmware support to mitigate CVE-2017-5715, as
+    offered by KVM to the guest via a HVC call. The workaround is described
+    under SMCCC_ARCH_WORKAROUND_1 in [1].
+
+  Accepted values are:
+
+    KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1_NOT_AVAIL:
+      KVM does not offer
+      firmware support for the workaround. The mitigation status for the
+      guest is unknown.
+    KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1_AVAIL:
+      The workaround HVC call is
+      available to the guest and required for the mitigation.
+    KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1_NOT_REQUIRED:
+      The workaround HVC call
+      is available to the guest, but it is not needed on this VCPU.
+
+* KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2:
+    Holds the state of the firmware support to mitigate CVE-2018-3639, as
+    offered by KVM to the guest via a HVC call. The workaround is described
+    under SMCCC_ARCH_WORKAROUND_2 in [1]_.
+
+  Accepted values are:
+
+    KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_NOT_AVAIL:
+      A workaround is not
+      available. KVM does not offer firmware support for the workaround.
+    KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_UNKNOWN:
+      The workaround state is
+      unknown. KVM does not offer firmware support for the workaround.
+    KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_AVAIL:
+      The workaround is available,
+      and can be disabled by a vCPU. If
+      KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_ENABLED is set, it is active for
+      this vCPU.
+    KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_NOT_REQUIRED:
+      The workaround is always active on this vCPU or it is not needed.
+
+
+Bitmap Feature Firmware Registers
+---------------------------------
+
+Contrary to the above registers, the following registers exposes the
+hypercall services in the form of a feature-bitmap to the userspace. This
+bitmap is translated to the services that are available to the guest.
+There is a register defined per service call owner and can be accessed via
+GET/SET_ONE_REG interface.
+
+By default, these registers are set with the upper limit of the features
+that are supported. This way userspace can discover all the usable
+hypercall services via GET_ONE_REG. The user-space can write-back the
+desired bitmap back via SET_ONE_REG. The features for the registers that
+are untouched, probably because userspace isn't aware of them, will be
+exposed as is to the guest.
+
+Note that KVM will not allow the userspace to configure the registers
+anymore once any of the vCPUs has run at least once. Instead, it will
+return a -EBUSY.
+
+The pseudo-firmware bitmap register are as follows:
+
+* KVM_REG_ARM_STD_BMAP:
+    Controls the bitmap of the ARM Standard Secure Service Calls.
+
+  The following bits are accepted:
+
+    Bit-0: KVM_REG_ARM_STD_BIT_TRNG_V1_0:
+      The bit represents the services offered under v1.0 of ARM True Random
+      Number Generator (TRNG) specification, ARM DEN0098.
+
+* KVM_REG_ARM_STD_HYP_BMAP:
+    Controls the bitmap of the ARM Standard Hypervisor Service Calls.
+
+  The following bits are accepted:
+
+    Bit-0: KVM_REG_ARM_STD_HYP_BIT_PV_TIME:
+      The bit represents the Paravirtualized Time service as represented by
+      ARM DEN0057A.
+
+* KVM_REG_ARM_VENDOR_HYP_BMAP:
+    Controls the bitmap of the Vendor specific Hypervisor Service Calls.
+
+  The following bits are accepted:
+
+    Bit-0: KVM_REG_ARM_VENDOR_HYP_BIT_FUNC_FEAT
+      The bit represents the ARM_SMCCC_VENDOR_HYP_KVM_FEATURES_FUNC_ID
+      and ARM_SMCCC_VENDOR_HYP_CALL_UID_FUNC_ID function-ids.
+
+    Bit-1: KVM_REG_ARM_VENDOR_HYP_BIT_PTP:
+      The bit represents the Precision Time Protocol KVM service.
+
+Errors:
+
+    =======  =============================================================
+    -ENOENT   Unknown register accessed.
+    -EBUSY    Attempt a 'write' to the register after the VM has started.
+    -EINVAL   Invalid bitmap written to the register.
+    =======  =============================================================
+
+.. [1] https://developer.arm.com/-/media/developer/pdf/ARM_DEN_0070A_Firmware_interfaces_for_mitigating_CVE-2017-5715.pdf
diff --git a/Documentation/virt/kvm/arm/hypercalls.rst b/Documentation/virt/kvm/arm/hypercalls.rst
index 3e23084..75a28b80 100644
--- a/Documentation/virt/kvm/arm/hypercalls.rst
+++ b/Documentation/virt/kvm/arm/hypercalls.rst
@@ -1,138 +1,152 @@
 .. SPDX-License-Identifier: GPL-2.0
 
-=======================
-ARM Hypercall Interface
-=======================
+===============================================
+KVM/arm64-specific hypercalls exposed to guests
+===============================================
 
-KVM handles the hypercall services as requested by the guests. New hypercall
-services are regularly made available by the ARM specification or by KVM (as
-vendor services) if they make sense from a virtualization point of view.
+This file documents the KVM/arm64-specific hypercalls which may be
+exposed by KVM/arm64 to guest operating systems. These hypercalls are
+issued using the HVC instruction according to version 1.1 of the Arm SMC
+Calling Convention (DEN0028/C):
 
-This means that a guest booted on two different versions of KVM can observe
-two different "firmware" revisions. This could cause issues if a given guest
-is tied to a particular version of a hypercall service, or if a migration
-causes a different version to be exposed out of the blue to an unsuspecting
-guest.
+https://developer.arm.com/docs/den0028/c
 
-In order to remedy this situation, KVM exposes a set of "firmware
-pseudo-registers" that can be manipulated using the GET/SET_ONE_REG
-interface. These registers can be saved/restored by userspace, and set
-to a convenient value as required.
+All KVM/arm64-specific hypercalls are allocated within the "Vendor
+Specific Hypervisor Service Call" range with a UID of
+``28b46fb6-2ec5-11e9-a9ca-4b564d003a74``. This UID should be queried by the
+guest using the standard "Call UID" function for the service range in
+order to determine that the KVM/arm64-specific hypercalls are available.
 
-The following registers are defined:
+``ARM_SMCCC_KVM_FUNC_FEATURES``
+---------------------------------------------
 
-* KVM_REG_ARM_PSCI_VERSION:
+Provides a discovery mechanism for other KVM/arm64 hypercalls.
 
-  KVM implements the PSCI (Power State Coordination Interface)
-  specification in order to provide services such as CPU on/off, reset
-  and power-off to the guest.
++---------------------+-------------------------------------------------------------+
+| Presence:           | Mandatory for the KVM/arm64 UID                             |
++---------------------+-------------------------------------------------------------+
+| Calling convention: | HVC32                                                       |
++---------------------+----------+--------------------------------------------------+
+| Function ID:        | (uint32) | 0x86000000                                       |
++---------------------+----------+--------------------------------------------------+
+| Arguments:          | None                                                        |
++---------------------+----------+----+---------------------------------------------+
+| Return Values:      | (uint32) | R0 | Bitmap of available function numbers 0-31   |
+|                     +----------+----+---------------------------------------------+
+|                     | (uint32) | R1 | Bitmap of available function numbers 32-63  |
+|                     +----------+----+---------------------------------------------+
+|                     | (uint32) | R2 | Bitmap of available function numbers 64-95  |
+|                     +----------+----+---------------------------------------------+
+|                     | (uint32) | R3 | Bitmap of available function numbers 96-127 |
++---------------------+----------+----+---------------------------------------------+
 
-  - Only valid if the vcpu has the KVM_ARM_VCPU_PSCI_0_2 feature set
-    (and thus has already been initialized)
-  - Returns the current PSCI version on GET_ONE_REG (defaulting to the
-    highest PSCI version implemented by KVM and compatible with v0.2)
-  - Allows any PSCI version implemented by KVM and compatible with
-    v0.2 to be set with SET_ONE_REG
-  - Affects the whole VM (even if the register view is per-vcpu)
+``ARM_SMCCC_KVM_FUNC_PTP``
+----------------------------------------
 
-* KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1:
-    Holds the state of the firmware support to mitigate CVE-2017-5715, as
-    offered by KVM to the guest via a HVC call. The workaround is described
-    under SMCCC_ARCH_WORKAROUND_1 in [1].
+See ptp_kvm.rst
 
-  Accepted values are:
+``ARM_SMCCC_KVM_FUNC_HYP_MEMINFO``
+----------------------------------
 
-    KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1_NOT_AVAIL:
-      KVM does not offer
-      firmware support for the workaround. The mitigation status for the
-      guest is unknown.
-    KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1_AVAIL:
-      The workaround HVC call is
-      available to the guest and required for the mitigation.
-    KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1_NOT_REQUIRED:
-      The workaround HVC call
-      is available to the guest, but it is not needed on this VCPU.
+Query the memory protection parameters for a protected virtual machine.
 
-* KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2:
-    Holds the state of the firmware support to mitigate CVE-2018-3639, as
-    offered by KVM to the guest via a HVC call. The workaround is described
-    under SMCCC_ARCH_WORKAROUND_2 in [1]_.
++---------------------+-------------------------------------------------------------+
+| Presence:           | Optional; protected guests only.                            |
++---------------------+-------------------------------------------------------------+
+| Calling convention: | HVC64                                                       |
++---------------------+----------+--------------------------------------------------+
+| Function ID:        | (uint32) | 0xC6000002                                       |
++---------------------+----------+----+---------------------------------------------+
+| Arguments:          | (uint64) | R1 | Reserved / Must be zero                     |
+|                     +----------+----+---------------------------------------------+
+|                     | (uint64) | R2 | Reserved / Must be zero                     |
+|                     +----------+----+---------------------------------------------+
+|                     | (uint64) | R3 | Reserved / Must be zero                     |
++---------------------+----------+----+---------------------------------------------+
+| Return Values:      | (int64)  | R0 | ``INVALID_PARAMETER (-3)`` on error, else   |
+|                     |          |    | memory protection granule in bytes          |
++---------------------+----------+----+---------------------------------------------+
 
-  Accepted values are:
+``ARM_SMCCC_KVM_FUNC_MEM_SHARE``
+--------------------------------
 
-    KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_NOT_AVAIL:
-      A workaround is not
-      available. KVM does not offer firmware support for the workaround.
-    KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_UNKNOWN:
-      The workaround state is
-      unknown. KVM does not offer firmware support for the workaround.
-    KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_AVAIL:
-      The workaround is available,
-      and can be disabled by a vCPU. If
-      KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_ENABLED is set, it is active for
-      this vCPU.
-    KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_NOT_REQUIRED:
-      The workaround is always active on this vCPU or it is not needed.
+Share a region of memory with the KVM host, granting it read, write and execute
+permissions. The size of the region is equal to the memory protection granule
+advertised by ``ARM_SMCCC_KVM_FUNC_HYP_MEMINFO``.
 
++---------------------+-------------------------------------------------------------+
+| Presence:           | Optional; protected guests only.                            |
++---------------------+-------------------------------------------------------------+
+| Calling convention: | HVC64                                                       |
++---------------------+----------+--------------------------------------------------+
+| Function ID:        | (uint32) | 0xC6000003                                       |
++---------------------+----------+----+---------------------------------------------+
+| Arguments:          | (uint64) | R1 | Base IPA of memory region to share          |
+|                     +----------+----+---------------------------------------------+
+|                     | (uint64) | R2 | Reserved / Must be zero                     |
+|                     +----------+----+---------------------------------------------+
+|                     | (uint64) | R3 | Reserved / Must be zero                     |
++---------------------+----------+----+---------------------------------------------+
+| Return Values:      | (int64)  | R0 | ``SUCCESS (0)``                             |
+|                     |          |    +---------------------------------------------+
+|                     |          |    | ``INVALID_PARAMETER (-3)``                  |
++---------------------+----------+----+---------------------------------------------+
 
-Bitmap Feature Firmware Registers
----------------------------------
+``ARM_SMCCC_KVM_FUNC_MEM_UNSHARE``
+----------------------------------
 
-Contrary to the above registers, the following registers exposes the
-hypercall services in the form of a feature-bitmap to the userspace. This
-bitmap is translated to the services that are available to the guest.
-There is a register defined per service call owner and can be accessed via
-GET/SET_ONE_REG interface.
+Revoke access permission from the KVM host to a memory region previously shared
+with ``ARM_SMCCC_KVM_FUNC_MEM_SHARE``. The size of the region is equal to the
+memory protection granule advertised by ``ARM_SMCCC_KVM_FUNC_HYP_MEMINFO``.
 
-By default, these registers are set with the upper limit of the features
-that are supported. This way userspace can discover all the usable
-hypercall services via GET_ONE_REG. The user-space can write-back the
-desired bitmap back via SET_ONE_REG. The features for the registers that
-are untouched, probably because userspace isn't aware of them, will be
-exposed as is to the guest.
++---------------------+-------------------------------------------------------------+
+| Presence:           | Optional; protected guests only.                            |
++---------------------+-------------------------------------------------------------+
+| Calling convention: | HVC64                                                       |
++---------------------+----------+--------------------------------------------------+
+| Function ID:        | (uint32) | 0xC6000004                                       |
++---------------------+----------+----+---------------------------------------------+
+| Arguments:          | (uint64) | R1 | Base IPA of memory region to unshare        |
+|                     +----------+----+---------------------------------------------+
+|                     | (uint64) | R2 | Reserved / Must be zero                     |
+|                     +----------+----+---------------------------------------------+
+|                     | (uint64) | R3 | Reserved / Must be zero                     |
++---------------------+----------+----+---------------------------------------------+
+| Return Values:      | (int64)  | R0 | ``SUCCESS (0)``                             |
+|                     |          |    +---------------------------------------------+
+|                     |          |    | ``INVALID_PARAMETER (-3)``                  |
++---------------------+----------+----+---------------------------------------------+
 
-Note that KVM will not allow the userspace to configure the registers
-anymore once any of the vCPUs has run at least once. Instead, it will
-return a -EBUSY.
+``ARM_SMCCC_KVM_FUNC_MEM_RELINQUISH``
+--------------------------------------
 
-The pseudo-firmware bitmap register are as follows:
+Cooperatively relinquish ownership of a memory region. The size of the
+region is equal to the memory protection granule advertised by
+``ARM_SMCCC_KVM_FUNC_HYP_MEMINFO``. If this hypercall is advertised
+then it is mandatory to call it before freeing memory via, for
+example, virtio balloon. If the caller is a protected VM, it is
+guaranteed that the memory region will be completely cleared before
+becoming visible to another VM.
 
-* KVM_REG_ARM_STD_BMAP:
-    Controls the bitmap of the ARM Standard Secure Service Calls.
++---------------------+-------------------------------------------------------------+
+| Presence:           | Optional.                                                   |
++---------------------+-------------------------------------------------------------+
+| Calling convention: | HVC64                                                       |
++---------------------+----------+--------------------------------------------------+
+| Function ID:        | (uint32) | 0xC6000009                                       |
++---------------------+----------+----+---------------------------------------------+
+| Arguments:          | (uint64) | R1 | Base IPA of memory region to relinquish     |
+|                     +----------+----+---------------------------------------------+
+|                     | (uint64) | R2 | Reserved / Must be zero                     |
+|                     +----------+----+---------------------------------------------+
+|                     | (uint64) | R3 | Reserved / Must be zero                     |
++---------------------+----------+----+---------------------------------------------+
+| Return Values:      | (int64)  | R0 | ``SUCCESS (0)``                             |
+|                     |          |    +---------------------------------------------+
+|                     |          |    | ``INVALID_PARAMETER (-3)``                  |
++---------------------+----------+----+---------------------------------------------+
 
-  The following bits are accepted:
+``ARM_SMCCC_KVM_FUNC_MMIO_GUARD_*``
+-----------------------------------
 
-    Bit-0: KVM_REG_ARM_STD_BIT_TRNG_V1_0:
-      The bit represents the services offered under v1.0 of ARM True Random
-      Number Generator (TRNG) specification, ARM DEN0098.
-
-* KVM_REG_ARM_STD_HYP_BMAP:
-    Controls the bitmap of the ARM Standard Hypervisor Service Calls.
-
-  The following bits are accepted:
-
-    Bit-0: KVM_REG_ARM_STD_HYP_BIT_PV_TIME:
-      The bit represents the Paravirtualized Time service as represented by
-      ARM DEN0057A.
-
-* KVM_REG_ARM_VENDOR_HYP_BMAP:
-    Controls the bitmap of the Vendor specific Hypervisor Service Calls.
-
-  The following bits are accepted:
-
-    Bit-0: KVM_REG_ARM_VENDOR_HYP_BIT_FUNC_FEAT
-      The bit represents the ARM_SMCCC_VENDOR_HYP_KVM_FEATURES_FUNC_ID
-      and ARM_SMCCC_VENDOR_HYP_CALL_UID_FUNC_ID function-ids.
-
-    Bit-1: KVM_REG_ARM_VENDOR_HYP_BIT_PTP:
-      The bit represents the Precision Time Protocol KVM service.
-
-Errors:
-
-    =======  =============================================================
-    -ENOENT   Unknown register accessed.
-    -EBUSY    Attempt a 'write' to the register after the VM has started.
-    -EINVAL   Invalid bitmap written to the register.
-    =======  =============================================================
-
-.. [1] https://developer.arm.com/-/media/developer/pdf/ARM_DEN_0070A_Firmware_interfaces_for_mitigating_CVE-2017-5715.pdf
+See mmio-guard.rst
diff --git a/Documentation/virt/kvm/arm/index.rst b/Documentation/virt/kvm/arm/index.rst
index e848484..4d795a7 100644
--- a/Documentation/virt/kvm/arm/index.rst
+++ b/Documentation/virt/kvm/arm/index.rst
@@ -7,7 +7,10 @@
 .. toctree::
    :maxdepth: 2
 
+   fw-pseudo-registers
    hyp-abi
    hypercalls
+   pkvm
    pvtime
    ptp_kvm
+   mmio-guard
diff --git a/Documentation/virt/kvm/arm/mmio-guard.rst b/Documentation/virt/kvm/arm/mmio-guard.rst
new file mode 100644
index 0000000..c1ba749
--- /dev/null
+++ b/Documentation/virt/kvm/arm/mmio-guard.rst
@@ -0,0 +1,74 @@
+.. SPDX-License-Identifier: GPL-2.0
+
+==============
+KVM MMIO guard
+==============
+
+KVM implements device emulation by handling translation faults to any
+IPA range that is not contained in a memory slot. Such a translation
+fault is in most cases passed on to userspace (or in rare cases to the
+host kernel) with the address, size and possibly data of the access
+for emulation.
+
+Should the guest exit with an address that is not one that corresponds
+to an emulatable device, userspace may take measures that are not the
+most graceful as far as the guest is concerned (such as terminating it
+or delivering a fatal exception).
+
+There is also an element of trust: by forwarding the request to
+userspace, the kernel assumes that the guest trusts userspace to do
+the right thing.
+
+The KVM MMIO guard offers a way to mitigate this last point: a guest
+can request that only certain regions of the IPA space are valid as
+MMIO. Only these regions will be handled as an MMIO, and any other
+will result in an exception being delivered to the guest.
+
+This relies on a set of hypercalls defined in the KVM-specific range,
+using the HVC64 calling convention.
+
+* ARM_SMCCC_KVM_FUNC_MMIO_GUARD_INFO
+
+    ==============    ========    ================================
+    Function ID:      (uint32)    0xC6000005
+    Arguments:        r1-r3       Reserved / Must be zero
+    Return Values:    (int64)     NOT_SUPPORTED(-1) on error, or
+                      (uint64)    Protection Granule (PG) size in
+                                  bytes (r0)
+    ==============    ========    ================================
+
+* ARM_SMCCC_KVM_FUNC_MMIO_GUARD_ENROLL
+
+    ==============    ========    ==============================
+    Function ID:      (uint32)    0xC6000006
+    Arguments:        none
+    Return Values:    (int64)     NOT_SUPPORTED(-1) on error, or
+                                  RET_SUCCESS(0) (r0)
+    ==============    ========    ==============================
+
+* ARM_SMCCC_KVM_FUNC_MMIO_GUARD_MAP
+
+    ==============    ========    ====================================
+    Function ID:      (uint32)    0xC6000007
+    Arguments:        (uint64)    The base of the PG-sized IPA range
+                                  that is allowed to be accessed as
+                                  MMIO. Must be aligned to the PG size
+                                  (r1)
+                      (uint64)    Index in the MAIR_EL1 register
+		                  providing the memory attribute that
+				  is used by the guest (r2)
+    Return Values:    (int64)     NOT_SUPPORTED(-1) on error, or
+                                  RET_SUCCESS(0) (r0)
+    ==============    ========    ====================================
+
+* ARM_SMCCC_KVM_FUNC_MMIO_GUARD_UNMAP
+
+    ==============    ========    ======================================
+    Function ID:      (uint32)    0xC6000008
+    Arguments:        (uint64)    PG-sized IPA range aligned to the PG
+                                  size which has been previously mapped.
+                                  Must be aligned to the PG size and
+                                  have been previously mapped (r1)
+    Return Values:    (int64)     NOT_SUPPORTED(-1) on error, or
+                                  RET_SUCCESS(0) (r0)
+    ==============    ========    ======================================
diff --git a/Documentation/virt/kvm/arm/pkvm.rst b/Documentation/virt/kvm/arm/pkvm.rst
new file mode 100644
index 0000000..64f099a
--- /dev/null
+++ b/Documentation/virt/kvm/arm/pkvm.rst
@@ -0,0 +1,96 @@
+.. SPDX-License-Identifier: GPL-2.0
+
+Protected virtual machines (pKVM)
+=================================
+
+Introduction
+------------
+
+Protected KVM (pKVM) is a KVM/arm64 extension which uses the two-stage
+translation capability of the Armv8 MMU to isolate guest memory from the host
+system. This allows for the creation of a confidential computing environment
+without relying on whizz-bang features in hardware, but still allowing room for
+complementary technologies such as memory encryption and hardware-backed
+attestation.
+
+The major implementation change brought about by pKVM is that the hypervisor
+code running at EL2 is now largely independent of (and isolated from) the rest
+of the host kernel running at EL1 and therefore additional hypercalls are
+introduced to manage manipulation of guest stage-2 page tables, creation of VM
+data structures and reclamation of memory on teardown. An immediate consequence
+of this change is that the host itself runs with an identity mapping enabled
+at stage-2, providing the hypervisor code with a mechanism to restrict host
+access to an arbitrary physical page.
+
+Enabling pKVM
+-------------
+
+The pKVM hypervisor is enabled by booting the host kernel at EL2 with
+"``kvm-arm.mode=protected``" on the command-line. Once enabled, VMs can be spawned
+in either protected or non-protected state, although the hypervisor is still
+responsible for managing most of the VM metadata in either case.
+
+Limitations
+-----------
+
+Enabling pKVM places some significant limitations on KVM guests, regardless of
+whether they are spawned in protected state. It is therefore recommended only
+to enable pKVM if protected VMs are required, with non-protected state acting
+primarily as a debug and development aid.
+
+If you're still keen, then here is an incomplete list of caveats that apply
+to all VMs running under pKVM:
+
+- Guest memory cannot be file-backed (with the exception of shmem/memfd) and is
+  pinned as it is mapped into the guest. This prevents the host from
+  swapping-out, migrating, merging or generally doing anything useful with the
+  guest pages. It also requires that the VMM has either ``CAP_IPC_LOCK`` or
+  sufficient ``RLIMIT_MEMLOCK`` to account for this pinned memory.
+
+- GICv2 is not supported and therefore GICv3 hardware is required in order
+  to expose a virtual GICv3 to the guest.
+
+- Read-only memslots are unsupported and therefore dirty logging cannot be
+  enabled.
+
+- Memslot configuration is fixed once a VM has started running, with subsequent
+  move or deletion requests being rejected with ``-EPERM``.
+
+- There are probably many others.
+
+Since the host is unable to tear down the hypervisor when pKVM is enabled,
+hibernation (``CONFIG_HIBERNATION``) and kexec (``CONFIG_KEXEC``) will fail
+with ``-EBUSY``.
+
+If you are not happy with these limitations, then please don't enable pKVM :)
+
+VM creation
+-----------
+
+When pKVM is enabled, protected VMs can be created by specifying the
+``KVM_VM_TYPE_ARM_PROTECTED`` flag in the machine type identifier parameter
+passed to ``KVM_CREATE_VM``.
+
+Protected VMs are instantiated according to a fixed vCPU configuration
+described by the ID register definitions in
+``arch/arm64/include/asm/kvm_pkvm.h``. Only a subset of the architectural
+features that may be available to the host are exposed to the guest and the
+capabilities advertised by ``KVM_CHECK_EXTENSION`` are limited accordingly,
+with the vCPU registers being initialised to their architecturally-defined
+values.
+
+Where not defined by the architecture, the registers of a protected vCPU
+are reset to zero with the exception of the PC and X0 which can be set
+either by the ``KVM_SET_ONE_REG`` interface or by a call to PSCI ``CPU_ON``.
+
+VM runtime
+----------
+
+By default, memory pages mapped into a protected guest are inaccessible to the
+host and any attempt by the host to access such a page will result in the
+injection of an abort at EL1 by the hypervisor. For accesses originating from
+EL0, the host will then terminate the current task with a ``SIGSEGV``.
+
+pKVM exposes additional hypercalls to protected guests, primarily for the
+purpose of establishing shared-memory regions with the host for communication
+and I/O. These hypercalls are documented in hypercalls.rst.
diff --git a/Documentation/virt/kvm/arm/ptp_kvm.rst b/Documentation/virt/kvm/arm/ptp_kvm.rst
index aecdc80..c8b01b7 100644
--- a/Documentation/virt/kvm/arm/ptp_kvm.rst
+++ b/Documentation/virt/kvm/arm/ptp_kvm.rst
@@ -7,19 +7,29 @@
 It relies on transferring the wall clock and counter value from the
 host to the guest using a KVM-specific hypercall.
 
-* ARM_SMCCC_VENDOR_HYP_KVM_PTP_FUNC_ID: 0x86000001
+``ARM_SMCCC_KVM_FUNC_PTP``
+----------------------------------------
 
-This hypercall uses the SMC32/HVC32 calling convention:
+Retrieve current time information for the specific counter. There are no
+endianness restrictions.
 
-ARM_SMCCC_VENDOR_HYP_KVM_PTP_FUNC_ID
-    ==============    ========    =====================================
-    Function ID:      (uint32)    0x86000001
-    Arguments:        (uint32)    KVM_PTP_VIRT_COUNTER(0)
-                                  KVM_PTP_PHYS_COUNTER(1)
-    Return Values:    (int32)     NOT_SUPPORTED(-1) on error, or
-                      (uint32)    Upper 32 bits of wall clock time (r0)
-                      (uint32)    Lower 32 bits of wall clock time (r1)
-                      (uint32)    Upper 32 bits of counter (r2)
-                      (uint32)    Lower 32 bits of counter (r3)
-    Endianness:                   No Restrictions.
-    ==============    ========    =====================================
++---------------------+-------------------------------------------------------+
+| Presence:           | Optional                                              |
++---------------------+-------------------------------------------------------+
+| Calling convention: | HVC32                                                 |
++---------------------+----------+--------------------------------------------+
+| Function ID:        | (uint32) | 0x86000001                                 |
++---------------------+----------+----+---------------------------------------+
+| Arguments:          | (uint32) | R1 | ``KVM_PTP_VIRT_COUNTER (0)``          |
+|                     |          |    +---------------------------------------+
+|                     |          |    | ``KVM_PTP_PHYS_COUNTER (1)``          |
++---------------------+----------+----+---------------------------------------+
+| Return Values:      | (int32)  | R0 | ``NOT_SUPPORTED (-1)`` on error, else |
+|                     |          |    | upper 32 bits of wall clock time      |
+|                     +----------+----+---------------------------------------+
+|                     | (uint32) | R1 | Lower 32 bits of wall clock time      |
+|                     +----------+----+---------------------------------------+
+|                     | (uint32) | R2 | Upper 32 bits of counter              |
+|                     +----------+----+---------------------------------------+
+|                     | (uint32) | R3 | Lower 32 bits of counter              |
++---------------------+----------+----+---------------------------------------+
diff --git a/Kconfig b/Kconfig
index 745bc77..57a142d 100644
--- a/Kconfig
+++ b/Kconfig
@@ -30,3 +30,6 @@
 source "lib/Kconfig.debug"
 
 source "Documentation/Kconfig"
+
+# ANDROID: Set KCONFIG_EXT_PREFIX to decend into an external project.
+source "$(KCONFIG_EXT_PREFIX)Kconfig.ext"
diff --git a/Kconfig.ext b/Kconfig.ext
new file mode 100644
index 0000000..48d805f
--- /dev/null
+++ b/Kconfig.ext
@@ -0,0 +1,3 @@
+# SPDX-License-Identifier: GPL-2.0
+# This file is intentionally empty. It's used as a placeholder for when
+# KCONFIG_EXT_PREFIX isn't defined.
diff --git a/MAINTAINERS b/MAINTAINERS
index 379387e..db2813b 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -5083,6 +5083,13 @@
 F:	include/linux/cfi.h
 F:	kernel/cfi.c
 
+CLEANCACHE API
+M:	Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
+L:	linux-kernel@vger.kernel.org
+S:	Maintained
+F:	include/linux/cleancache.h
+F:	mm/cleancache.c
+
 CLK API
 M:	Russell King <linux@armlinux.org.uk>
 L:	linux-clk@vger.kernel.org
@@ -7831,6 +7838,8 @@
 L:	linux-f2fs-devel@lists.sourceforge.net
 S:	Maintained
 W:	https://f2fs.wiki.kernel.org/
+Q:	https://patchwork.kernel.org/project/f2fs/list/
+B:	https://bugzilla.kernel.org/enter_bug.cgi?product=File%20System&component=f2fs
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git
 F:	Documentation/ABI/testing/sysfs-fs-f2fs
 F:	Documentation/filesystems/f2fs.rst
@@ -8934,6 +8943,19 @@
 S:	Maintained
 F:	block/partitions/efi.*
 
+GUNYAH HYPERVISOR DRIVER
+M:	Elliot Berman <quic_eberman@quicinc.com>
+M:	Prakruthi Deepak Heragu <quic_pheragu@quicinc.com>
+L:	linux-arm-msm@vger.kernel.org
+S:	Supported
+F:	Documentation/devicetree/bindings/firmware/gunyah-hypervisor.yaml
+F:	Documentation/virt/gunyah/
+F:	arch/arm64/gunyah/
+F:	drivers/mailbox/gunyah-msgq.c
+F:	drivers/virt/gunyah/
+F:	include/linux/gunyah*.h
+F:	samples/gunyah/
+
 HABANALABS PCI DRIVER
 M:	Oded Gabbay <ogabbay@kernel.org>
 S:	Supported
@@ -10022,6 +10044,13 @@
 F:	drivers/hwmon/ina2xx.c
 F:	include/linux/platform_data/ina2xx.h
 
+INCREMENTAL FILE SYSTEM
+M:	Paul Lawrence <paullawrence@google.com>
+L:	linux-unionfs@vger.kernel.org
+S:	Supported
+F:	fs/incfs/
+F:	tools/testing/selftests/filesystems/incfs/
+
 INDUSTRY PACK SUBSYSTEM (IPACK)
 M:	Samuel Iglesias Gonsalvez <siglesias@igalia.com>
 M:	Jens Taprogge <jens.taprogge@taprogge.org>
diff --git a/Makefile b/Makefile
index cffb83d7..e9bac20d 100644
--- a/Makefile
+++ b/Makefile
@@ -155,6 +155,24 @@
 
 export KBUILD_EXTMOD
 
+# ANDROID: set up mixed-build support. mixed-build allows device kernel modules
+# to be compiled against a GKI kernel. This approach still uses the headers and
+# Kbuild from device kernel, so care must be taken to ensure that those headers match.
+ifdef KBUILD_MIXED_TREE
+# Need vmlinux.symvers for modpost and System.map for depmod, check whether they exist in KBUILD_MIXED_TREE
+required_mixed_files=vmlinux.symvers System.map
+$(if $(filter-out $(words $(required_mixed_files)), \
+		$(words $(wildcard $(add-prefix $(KBUILD_MIXED_TREE)/,$(required_mixed_files))))),,\
+	$(error KBUILD_MIXED_TREE=$(KBUILD_MIXED_TREE) doesn't contain $(required_mixed_files)))
+endif
+
+mixed-build-prefix = $(if $(KBUILD_MIXED_TREE),$(KBUILD_MIXED_TREE)/)
+export KBUILD_MIXED_TREE
+# This is a hack for kleaf to set mixed-build-prefix within the execution of a make rule, e.g.
+# within __modinst_pre.
+# TODO(b/205893923): Revert this hack once it is properly handled.
+export mixed-build-prefix
+
 # Kbuild will save output files in the current working directory.
 # This does not need to match to the root of the kernel source tree.
 #
@@ -529,7 +547,7 @@
 KBZIP2		= bzip2
 KLZOP		= lzop
 LZMA		= lzma
-LZ4		= lz4c
+LZ4		= lz4
 XZ		= xz
 ZSTD		= zstd
 
@@ -755,11 +773,13 @@
 libs-y		:= lib/
 endif # KBUILD_EXTMOD
 
+ifndef KBUILD_MIXED_TREE
 # The all: target is the default when no target is given on the
 # command line.
 # This allow a user to issue only 'make' to build a kernel including modules
 # Defaults to vmlinux, but the arch makefile usually adds further targets
 all: vmlinux
+endif
 
 CFLAGS_GCOV	:= -fprofile-arcs -ftest-coverage
 ifdef CONFIG_CC_IS_GCC
@@ -973,8 +993,10 @@
 endif
 
 ifdef CONFIG_SHADOW_CALL_STACK
+ifndef CONFIG_DYNAMIC_SCS
 CC_FLAGS_SCS	:= -fsanitize=shadow-call-stack
 KBUILD_CFLAGS	+= $(CC_FLAGS_SCS)
+endif
 export CC_FLAGS_SCS
 endif
 
@@ -985,7 +1007,13 @@
 else
 CC_FLAGS_LTO	:= -flto
 endif
+
+ifeq ($(SRCARCH),x86)
+# Workaround for compiler / linker bug
 CC_FLAGS_LTO	+= -fvisibility=hidden
+else
+CC_FLAGS_LTO	+= -fvisibility=default
+endif
 
 # Limit inlining across translation units to reduce binary size
 KBUILD_LDFLAGS += -mllvm -import-instr-limit=5
@@ -1175,6 +1203,40 @@
 export MODORDER := $(extmod_prefix)modules.order
 export MODULES_NSDEPS := $(extmod_prefix)modules.nsdeps
 
+# ---------------------------------------------------------------------------
+# Kernel headers
+
+PHONY += headers
+
+#Default location for installed headers
+ifeq ($(KBUILD_EXTMOD),)
+PHONY += archheaders archscripts
+hdr-inst := -f $(srctree)/scripts/Makefile.headersinst obj
+headers: $(version_h) scripts_unifdef uapi-asm-generic archheaders archscripts
+else
+hdr-prefix = $(KBUILD_EXTMOD)/
+hdr-inst := -f $(srctree)/scripts/Makefile.headersinst dst=$(KBUILD_EXTMOD)/usr/include objtree=$(objtree)/$(KBUILD_EXTMOD) obj
+endif
+
+export INSTALL_HDR_PATH = $(objtree)/$(hdr-prefix)usr
+
+quiet_cmd_headers_install = INSTALL $(INSTALL_HDR_PATH)/include
+      cmd_headers_install = \
+	mkdir -p $(INSTALL_HDR_PATH); \
+	rsync -mrl --include='*/' --include='*\.h' --exclude='*' \
+	$(hdr-prefix)usr/include $(INSTALL_HDR_PATH);
+
+PHONY += headers_install
+headers_install: headers
+	$(call cmd,headers_install)
+
+headers:
+ifeq ($(KBUILD_EXTMOD),)
+	$(if $(filter um, $(SRCARCH)), $(error Headers not exportable for UML))
+endif
+	$(Q)$(MAKE) $(hdr-inst)=$(hdr-prefix)include/uapi
+	$(Q)$(MAKE) $(hdr-inst)=$(hdr-prefix)arch/$(SRCARCH)/include/uapi
+
 ifeq ($(KBUILD_EXTMOD),)
 
 build-dir	:= .
@@ -1231,6 +1293,7 @@
 vmlinux.a: $(KBUILD_VMLINUX_OBJS) scripts/head-object-list.txt autoksyms_recursive FORCE
 	$(call if_changed,ar_vmlinux.a)
 
+ifndef KBUILD_MIXED_TREE
 PHONY += vmlinux_o
 vmlinux_o: vmlinux.a $(KBUILD_VMLINUX_LIBS)
 	$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.vmlinux_o
@@ -1253,13 +1316,15 @@
 vmlinux: export LDFLAGS_vmlinux = $(_LDFLAGS_vmlinux)
 vmlinux: vmlinux.o $(KBUILD_LDS) modpost
 	$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.vmlinux
+endif
 
 # The actual objects are generated when descending,
 # make sure no implicit rule kicks in
 $(sort $(KBUILD_LDS) $(KBUILD_VMLINUX_OBJS) $(KBUILD_VMLINUX_LIBS)): . ;
 
 filechk_kernel.release = \
-	echo "$(KERNELVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))"
+	echo "$(KERNELVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion \
+		$(srctree) $(BRANCH) $(KMI_GENERATION))"
 
 # Store (new) KERNELRELEASE string in include/config/kernel.release
 include/config/kernel.release: FORCE
@@ -1359,32 +1424,6 @@
 	$(Q)find $(srctree)/include/ -name '*.h' | xargs --max-args 1 \
 	$(srctree)/scripts/headerdep.pl -I$(srctree)/include
 
-# ---------------------------------------------------------------------------
-# Kernel headers
-
-#Default location for installed headers
-export INSTALL_HDR_PATH = $(objtree)/usr
-
-quiet_cmd_headers_install = INSTALL $(INSTALL_HDR_PATH)/include
-      cmd_headers_install = \
-	mkdir -p $(INSTALL_HDR_PATH); \
-	rsync -mrl --include='*/' --include='*\.h' --exclude='*' \
-	usr/include $(INSTALL_HDR_PATH)
-
-PHONY += headers_install
-headers_install: headers
-	$(call cmd,headers_install)
-
-PHONY += archheaders archscripts
-
-hdr-inst := -f $(srctree)/scripts/Makefile.headersinst obj
-
-PHONY += headers
-headers: $(version_h) scripts_unifdef uapi-asm-generic archheaders archscripts
-	$(if $(filter um, $(SRCARCH)), $(error Headers not exportable for UML))
-	$(Q)$(MAKE) $(hdr-inst)=include/uapi
-	$(Q)$(MAKE) $(hdr-inst)=arch/$(SRCARCH)/include/uapi
-
 ifdef CONFIG_HEADERS_INSTALL
 prepare: headers
 endif
@@ -1462,7 +1501,9 @@
 # Devicetree files
 
 ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/boot/dts/),)
-dtstree := arch/$(SRCARCH)/boot/dts
+# ANDROID: allow this to be overridden by the build environment. This allows
+# one to compile a device tree that is located out-of-tree.
+dtstree ?= arch/$(SRCARCH)/boot/dts
 endif
 
 ifneq ($(dtstree),)
@@ -1537,7 +1578,7 @@
 # is an exception.
 ifdef CONFIG_DEBUG_INFO_BTF_MODULES
 KBUILD_BUILTIN := 1
-modules: vmlinux
+modules: $(mixed-build-prefix)vmlinux
 endif
 
 modules: modules_prepare
@@ -1577,8 +1618,8 @@
 		ln -s $(CURDIR) $(MODLIB)/build ; \
 	fi
 	@sed 's:^:kernel/:' modules.order > $(MODLIB)/modules.order
-	@cp -f modules.builtin $(MODLIB)/
-	@cp -f $(objtree)/modules.builtin.modinfo $(MODLIB)/
+	@cp -f $(mixed-build-prefix)modules.builtin $(MODLIB)/
+	@cp -f $(or $(mixed-build-prefix),$(objtree)/)modules.builtin.modinfo $(MODLIB)/
 
 endif # CONFIG_MODULES
 
@@ -1907,6 +1948,8 @@
 	@echo  ''
 	@echo  '  modules         - default target, build the module(s)'
 	@echo  '  modules_install - install the module'
+	@echo  '  headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH'
+	@echo  '                    (default: $(abspath $(INSTALL_HDR_PATH)))'
 	@echo  '  clean           - remove generated files in module directory only'
 	@echo  ''
 
@@ -1935,7 +1978,7 @@
 
 quiet_cmd_depmod = DEPMOD  $(MODLIB)
       cmd_depmod = $(CONFIG_SHELL) $(srctree)/scripts/depmod.sh $(DEPMOD) \
-                   $(KERNELRELEASE)
+                   $(KERNELRELEASE) $(mixed-build-prefix)
 
 modules_install:
 	$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modinst
@@ -1959,7 +2002,7 @@
 endif # CONFIG_MODULES
 
 PHONY += modpost
-modpost: $(if $(single-build),, $(if $(KBUILD_BUILTIN), vmlinux.o)) \
+modpost: $(if $(single-build),, $(if $(KBUILD_MIXED_TREE),,$(if $(KBUILD_BUILTIN), vmlinux.o))) \
 	 $(if $(KBUILD_MODULES), modules_check)
 	$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
 
@@ -2009,7 +2052,7 @@
 # Error messages still appears in the original language
 PHONY += $(build-dir)
 $(build-dir): prepare
-	$(Q)$(MAKE) $(build)=$@ need-builtin=1 need-modorder=1 $(single-goals)
+	$(Q)$(MAKE) $(build)=$@ $(if $(KBUILD_MIXED_TREE),,need-builtin=1) need-modorder=1 $(single-goals)
 
 clean-dirs := $(addprefix _clean_, $(clean-dirs))
 PHONY += $(clean-dirs) clean
@@ -2018,7 +2061,9 @@
 
 clean: $(clean-dirs)
 	$(call cmd,rmfiles)
-	@find $(or $(KBUILD_EXTMOD), .) $(RCS_FIND_IGNORE) \
+	@find $(or $(KBUILD_EXTMOD), .) \
+		$(if $(filter-out arch/$(SRCARCH)/boot/dts, $(dtstree)), $(dtstree)) \
+		$(RCS_FIND_IGNORE) \
 		\( -name '*.[aios]' -o -name '*.rsi' -o -name '*.ko' -o -name '.*.cmd' \
 		-o -name '*.ko.*' \
 		-o -name '*.dtb' -o -name '*.dtbo' -o -name '*.dtb.S' -o -name '*.dt.yaml' \
@@ -2057,7 +2102,7 @@
       cmd_gen_compile_commands = $(PYTHON3) $< -a $(AR) -o $@ $(filter-out $<, $(real-prereqs))
 
 $(extmod_prefix)compile_commands.json: scripts/clang-tools/gen_compile_commands.py \
-	$(if $(KBUILD_EXTMOD),, vmlinux.a $(KBUILD_VMLINUX_LIBS)) \
+	$(if $(KBUILD_EXTMOD)$(KBUILD_MIXED_TREE),, vmlinux.a $(KBUILD_VMLINUX_LIBS)) \
 	$(if $(CONFIG_MODULES), $(MODORDER)) FORCE
 	$(call if_changed,gen_compile_commands)
 
@@ -2114,7 +2159,8 @@
 	$(PERL) $(srctree)/scripts/checkstack.pl $(CHECKSTACK_ARCH)
 
 kernelrelease:
-	@echo "$(KERNELVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))"
+	@echo "$(KERNELVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion \
+		$(srctree) $(BRANCH) $(KMI_GENERATION))"
 
 kernelversion:
 	@echo $(KERNELVERSION)
diff --git a/OWNERS b/OWNERS
new file mode 100644
index 0000000..414594e
--- /dev/null
+++ b/OWNERS
@@ -0,0 +1,12 @@
+set noparent
+
+# GKI Dr. No Enforcement is active on this branch. Approval of one of the Dr.
+# No reviewers is required following a regular CodeReview+2 vote of a code
+# reviewer.
+#
+# See the GKI release documentation (go/gki-dr-no) for further details.
+#
+# The expanded list of reviewers can be found at:
+# https://android.googlesource.com/kernel/common/+/android-mainline/OWNERS_DrNo
+
+include kernel/common:android-mainline:/OWNERS_DrNo
diff --git a/OWNERS_DrNo b/OWNERS_DrNo
new file mode 100644
index 0000000..c4b8c0d5
--- /dev/null
+++ b/OWNERS_DrNo
@@ -0,0 +1,23 @@
+# Authoritative list of Dr. No reviewers to approve changes on GKI release
+# branches, such as android12-5.10.
+#
+# This file has no effect in this branch, but is referred to from release
+# branches. So, please do not move or rename.
+#
+# See the GKI release documentation (go/gki-dr-no) for further details.
+
+# Main reviewers
+adelva@google.com
+maennich@google.com
+saravanak@google.com
+vmartensson@google.com
+tkjos@google.com
+willdeacon@google.com
+
+# GKI Release Team
+howardsoc@google.com #{LAST_RESORT_SUGGESTION}
+szuweilin@google.com #{LAST_RESORT_SUGGESTION}
+
+# Backup
+sspatil@google.com #{LAST_RESORT_SUGGESTION}
+malchev@google.com #{LAST_RESORT_SUGGESTION}
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..4a1deb3
--- /dev/null
+++ b/README.md
@@ -0,0 +1,150 @@
+# How do I submit patches to Android Common Kernels
+
+1. BEST: Make all of your changes to upstream Linux. If appropriate, backport to the stable releases.
+   These patches will be merged automatically in the corresponding common kernels. If the patch is already
+   in upstream Linux, post a backport of the patch that conforms to the patch requirements below.
+   - Do not send patches upstream that contain only symbol exports. To be considered for upstream Linux,
+additions of `EXPORT_SYMBOL_GPL()` require an in-tree modular driver that uses the symbol -- so include
+the new driver or changes to an existing driver in the same patchset as the export.
+   - When sending patches upstream, the commit message must contain a clear case for why the patch
+is needed and beneficial to the community. Enabling out-of-tree drivers or functionality is not
+not a persuasive case.
+
+2. LESS GOOD: Develop your patches out-of-tree (from an upstream Linux point-of-view). Unless these are
+   fixing an Android-specific bug, these are very unlikely to be accepted unless they have been
+   coordinated with kernel-team@android.com. If you want to proceed, post a patch that conforms to the
+   patch requirements below.
+
+# Common Kernel patch requirements
+
+- All patches must conform to the Linux kernel coding standards and pass `scripts/checkpatch.pl`
+- Patches shall not break gki_defconfig or allmodconfig builds for arm, arm64, x86, x86_64 architectures
+(see  https://source.android.com/setup/build/building-kernels)
+- If the patch is not merged from an upstream branch, the subject must be tagged with the type of patch:
+`UPSTREAM:`, `BACKPORT:`, `FROMGIT:`, `FROMLIST:`, or `ANDROID:`.
+- All patches must have a `Change-Id:` tag (see https://gerrit-review.googlesource.com/Documentation/user-changeid.html)
+- If an Android bug has been assigned, there must be a `Bug:` tag.
+- All patches must have a `Signed-off-by:` tag by the author and the submitter
+
+Additional requirements are listed below based on patch type
+
+## Requirements for backports from mainline Linux: `UPSTREAM:`, `BACKPORT:`
+
+- If the patch is a cherry-pick from Linux mainline with no changes at all
+    - tag the patch subject with `UPSTREAM:`.
+    - add upstream commit information with a `(cherry picked from commit ...)` line
+    - Example:
+        - if the upstream commit message is
+```
+        important patch from upstream
+
+        This is the detailed description of the important patch
+
+        Signed-off-by: Fred Jones <fred.jones@foo.org>
+```
+>- then Joe Smith would upload the patch for the common kernel as
+```
+        UPSTREAM: important patch from upstream
+
+        This is the detailed description of the important patch
+
+        Signed-off-by: Fred Jones <fred.jones@foo.org>
+
+        Bug: 135791357
+        Change-Id: I4caaaa566ea080fa148c5e768bb1a0b6f7201c01
+        (cherry picked from commit c31e73121f4c1ec41143423ac6ce3ce6dafdcec1)
+        Signed-off-by: Joe Smith <joe.smith@foo.org>
+```
+
+- If the patch requires any changes from the upstream version, tag the patch with `BACKPORT:`
+instead of `UPSTREAM:`.
+    - use the same tags as `UPSTREAM:`
+    - add comments about the changes under the `(cherry picked from commit ...)` line
+    - Example:
+```
+        BACKPORT: important patch from upstream
+
+        This is the detailed description of the important patch
+
+        Signed-off-by: Fred Jones <fred.jones@foo.org>
+
+        Bug: 135791357
+        Change-Id: I4caaaa566ea080fa148c5e768bb1a0b6f7201c01
+        (cherry picked from commit c31e73121f4c1ec41143423ac6ce3ce6dafdcec1)
+        [joe: Resolved minor conflict in drivers/foo/bar.c ]
+        Signed-off-by: Joe Smith <joe.smith@foo.org>
+```
+
+## Requirements for other backports: `FROMGIT:`, `FROMLIST:`,
+
+- If the patch has been merged into an upstream maintainer tree, but has not yet
+been merged into Linux mainline
+    - tag the patch subject with `FROMGIT:`
+    - add info on where the patch came from as `(cherry picked from commit <sha1> <repo> <branch>)`. This
+must be a stable maintainer branch (not rebased, so don't use `linux-next` for example).
+    - if changes were required, use `BACKPORT: FROMGIT:`
+    - Example:
+        - if the commit message in the maintainer tree is
+```
+        important patch from upstream
+
+        This is the detailed description of the important patch
+
+        Signed-off-by: Fred Jones <fred.jones@foo.org>
+```
+>- then Joe Smith would upload the patch for the common kernel as
+```
+        FROMGIT: important patch from upstream
+
+        This is the detailed description of the important patch
+
+        Signed-off-by: Fred Jones <fred.jones@foo.org>
+
+        Bug: 135791357
+        (cherry picked from commit 878a2fd9de10b03d11d2f622250285c7e63deace
+         https://git.kernel.org/pub/scm/linux/kernel/git/foo/bar.git test-branch)
+        Change-Id: I4caaaa566ea080fa148c5e768bb1a0b6f7201c01
+        Signed-off-by: Joe Smith <joe.smith@foo.org>
+```
+
+
+- If the patch has been submitted to LKML, but not accepted into any maintainer tree
+    - tag the patch subject with `FROMLIST:`
+    - add a `Link:` tag with a link to the submittal on lore.kernel.org
+    - add a `Bug:` tag with the Android bug (required for patches not accepted into
+a maintainer tree)
+    - if changes were required, use `BACKPORT: FROMLIST:`
+    - Example:
+```
+        FROMLIST: important patch from upstream
+
+        This is the detailed description of the important patch
+
+        Signed-off-by: Fred Jones <fred.jones@foo.org>
+
+        Bug: 135791357
+        Link: https://lore.kernel.org/lkml/20190619171517.GA17557@someone.com/
+        Change-Id: I4caaaa566ea080fa148c5e768bb1a0b6f7201c01
+        Signed-off-by: Joe Smith <joe.smith@foo.org>
+```
+
+## Requirements for Android-specific patches: `ANDROID:`
+
+- If the patch is fixing a bug to Android-specific code
+    - tag the patch subject with `ANDROID:`
+    - add a `Fixes:` tag that cites the patch with the bug
+    - Example:
+```
+        ANDROID: fix android-specific bug in foobar.c
+
+        This is the detailed description of the important fix
+
+        Fixes: 1234abcd2468 ("foobar: add cool feature")
+        Change-Id: I4caaaa566ea080fa148c5e768bb1a0b6f7201c01
+        Signed-off-by: Joe Smith <joe.smith@foo.org>
+```
+
+- If the patch is a new feature
+    - tag the patch subject with `ANDROID:`
+    - add a `Bug:` tag with the Android bug (required for android-specific features)
+
diff --git a/android/abi_gki_aarch64 b/android/abi_gki_aarch64
new file mode 100644
index 0000000..57914f29
--- /dev/null
+++ b/android/abi_gki_aarch64
@@ -0,0 +1,4 @@
+[abi_symbol_list]
+# commonly used symbols
+  module_layout
+  __put_task_struct
diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg
new file mode 100644
index 0000000..2476e23
--- /dev/null
+++ b/android/abi_gki_aarch64.stg
@@ -0,0 +1,387686 @@
+version: 0x00000001
+root_id: 0x84ea5130
+void {
+  id: 0x48b5725f
+}
+variadic {
+  id: 0xa52a0930
+}
+pointer_reference {
+  id: 0x0006db1d
+  kind: POINTER
+  pointee_type_id: 0x2a5b8aea
+}
+pointer_reference {
+  id: 0x000a9d21
+  kind: POINTER
+  pointee_type_id: 0x2a6a9218
+}
+pointer_reference {
+  id: 0x000f0722
+  kind: POINTER
+  pointee_type_id: 0x2a7cfa14
+}
+pointer_reference {
+  id: 0x000fdfa4
+  kind: POINTER
+  pointee_type_id: 0x2a7f980e
+}
+pointer_reference {
+  id: 0x0015fed8
+  kind: POINTER
+  pointee_type_id: 0x2a171dff
+}
+pointer_reference {
+  id: 0x0017d23e
+  kind: POINTER
+  pointee_type_id: 0x2a1fae67
+}
+pointer_reference {
+  id: 0x0017d728
+  kind: POINTER
+  pointee_type_id: 0x2a1fba3e
+}
+pointer_reference {
+  id: 0x00187c65
+  kind: POINTER
+  pointee_type_id: 0x2a211709
+}
+pointer_reference {
+  id: 0x001e866e
+  kind: POINTER
+  pointee_type_id: 0x2a3aff26
+}
+pointer_reference {
+  id: 0x0020e339
+  kind: POINTER
+  pointee_type_id: 0x2ac36a79
+}
+pointer_reference {
+  id: 0x002136b3
+  kind: POINTER
+  pointee_type_id: 0x2ac43c51
+}
+pointer_reference {
+  id: 0x00227f55
+  kind: POINTER
+  pointee_type_id: 0x2ac91bcb
+}
+pointer_reference {
+  id: 0x00256a1d
+  kind: POINTER
+  pointee_type_id: 0x2ad54eeb
+}
+pointer_reference {
+  id: 0x0027dcc3
+  kind: POINTER
+  pointee_type_id: 0x2adf9592
+}
+pointer_reference {
+  id: 0x002ace73
+  kind: POINTER
+  pointee_type_id: 0x2aebdf52
+}
+pointer_reference {
+  id: 0x0036629d
+  kind: POINTER
+  pointee_type_id: 0x2a996cea
+}
+pointer_reference {
+  id: 0x00374d67
+  kind: POINTER
+  pointee_type_id: 0x2a9dd300
+}
+pointer_reference {
+  id: 0x003f56cd
+  kind: POINTER
+  pointee_type_id: 0x2abdbda9
+}
+pointer_reference {
+  id: 0x004b03fc
+  kind: POINTER
+  pointee_type_id: 0x2b6ce96f
+}
+pointer_reference {
+  id: 0x004d68b7
+  kind: POINTER
+  pointee_type_id: 0x2b754442
+}
+pointer_reference {
+  id: 0x00506ef6
+  kind: POINTER
+  pointee_type_id: 0x2b015d45
+}
+pointer_reference {
+  id: 0x005589aa
+  kind: POINTER
+  pointee_type_id: 0x2b16c036
+}
+pointer_reference {
+  id: 0x0057b869
+  kind: POINTER
+  pointee_type_id: 0x2b1e0739
+}
+pointer_reference {
+  id: 0x005aaa92
+  kind: POINTER
+  pointee_type_id: 0x2b2a4cd4
+}
+pointer_reference {
+  id: 0x006b8dfd
+  kind: POINTER
+  pointee_type_id: 0x2beed169
+}
+pointer_reference {
+  id: 0x006cda7e
+  kind: POINTER
+  pointee_type_id: 0x2bf38f66
+}
+pointer_reference {
+  id: 0x006efe32
+  kind: POINTER
+  pointee_type_id: 0x2bfb1e57
+}
+pointer_reference {
+  id: 0x0073fd4b
+  kind: POINTER
+  pointee_type_id: 0x2b8f13b3
+}
+pointer_reference {
+  id: 0x00769aa9
+  kind: POINTER
+  pointee_type_id: 0x2b9a8c39
+}
+pointer_reference {
+  id: 0x00836b76
+  kind: POINTER
+  pointee_type_id: 0x284d4b46
+}
+pointer_reference {
+  id: 0x00878020
+  kind: POINTER
+  pointee_type_id: 0x285ee61e
+}
+pointer_reference {
+  id: 0x0092c032
+  kind: POINTER
+  pointee_type_id: 0x280be654
+}
+pointer_reference {
+  id: 0x00a31be9
+  kind: POINTER
+  pointee_type_id: 0x28cc893a
+}
+pointer_reference {
+  id: 0x00a43052
+  kind: POINTER
+  pointee_type_id: 0x28d027d4
+}
+pointer_reference {
+  id: 0x00a8eb28
+  kind: POINTER
+  pointee_type_id: 0x28e34a3d
+}
+pointer_reference {
+  id: 0x00b7947f
+  kind: POINTER
+  pointee_type_id: 0x289eb761
+}
+pointer_reference {
+  id: 0x00b7a8fc
+  kind: POINTER
+  pointee_type_id: 0x289e456d
+}
+pointer_reference {
+  id: 0x00be4281
+  kind: POINTER
+  pointee_type_id: 0x28b9ec9a
+}
+pointer_reference {
+  id: 0x00c72527
+  kind: POINTER
+  pointee_type_id: 0x295c7202
+}
+pointer_reference {
+  id: 0x00c83ba6
+  kind: POINTER
+  pointee_type_id: 0x29600806
+}
+pointer_reference {
+  id: 0x00d1ba62
+  kind: POINTER
+  pointee_type_id: 0x29060f15
+}
+pointer_reference {
+  id: 0x00d82b18
+  kind: POINTER
+  pointee_type_id: 0x29204afd
+}
+pointer_reference {
+  id: 0x00daa23b
+  kind: POINTER
+  pointee_type_id: 0x292a6e73
+}
+pointer_reference {
+  id: 0x00dd92af
+  kind: POINTER
+  pointee_type_id: 0x2936ac20
+}
+pointer_reference {
+  id: 0x00defc2c
+  kind: POINTER
+  pointee_type_id: 0x293b162f
+}
+pointer_reference {
+  id: 0x00e66585
+  kind: POINTER
+  pointee_type_id: 0x29d9708a
+}
+pointer_reference {
+  id: 0x00e69949
+  kind: POINTER
+  pointee_type_id: 0x29da83bb
+}
+pointer_reference {
+  id: 0x00fde7ff
+  kind: POINTER
+  pointee_type_id: 0x29b77961
+}
+pointer_reference {
+  id: 0x00fe3621
+  kind: POINTER
+  pointee_type_id: 0x29b83e1a
+}
+pointer_reference {
+  id: 0x010934b0
+  kind: POINTER
+  pointee_type_id: 0x2e64345d
+}
+pointer_reference {
+  id: 0x0109e669
+  kind: POINTER
+  pointee_type_id: 0x2e677f39
+}
+pointer_reference {
+  id: 0x01109e7a
+  kind: POINTER
+  pointee_type_id: 0x2e029f76
+}
+pointer_reference {
+  id: 0x0110ab48
+  kind: POINTER
+  pointee_type_id: 0x2e024bbc
+}
+pointer_reference {
+  id: 0x0113dde3
+  kind: POINTER
+  pointee_type_id: 0x2e0f9112
+}
+pointer_reference {
+  id: 0x01151746
+  kind: POINTER
+  pointee_type_id: 0x2e14bb87
+}
+pointer_reference {
+  id: 0x011604f7
+  kind: POINTER
+  pointee_type_id: 0x2e18f543
+}
+pointer_reference {
+  id: 0x011d1743
+  kind: POINTER
+  pointee_type_id: 0x2e34bb92
+}
+pointer_reference {
+  id: 0x011d7b15
+  kind: POINTER
+  pointee_type_id: 0x2e350ac8
+}
+pointer_reference {
+  id: 0x01222f7d
+  kind: POINTER
+  pointee_type_id: 0x2ec85b6a
+}
+pointer_reference {
+  id: 0x01241c02
+  kind: POINTER
+  pointee_type_id: 0x2ed09696
+}
+pointer_reference {
+  id: 0x012aa36d
+  kind: POINTER
+  pointee_type_id: 0x2eea6b28
+}
+pointer_reference {
+  id: 0x012b06a4
+  kind: POINTER
+  pointee_type_id: 0x2eecfc0c
+}
+pointer_reference {
+  id: 0x012ee191
+  kind: POINTER
+  pointee_type_id: 0x2efb60da
+}
+pointer_reference {
+  id: 0x012f99be
+  kind: POINTER
+  pointee_type_id: 0x2efe8065
+}
+pointer_reference {
+  id: 0x0130219f
+  kind: POINTER
+  pointee_type_id: 0x2e8060e3
+}
+pointer_reference {
+  id: 0x01336e66
+  kind: POINTER
+  pointee_type_id: 0x2e8d5f05
+}
+pointer_reference {
+  id: 0x0135683b
+  kind: POINTER
+  pointee_type_id: 0x2e954673
+}
+pointer_reference {
+  id: 0x01367297
+  kind: POINTER
+  pointee_type_id: 0x2e992cc0
+}
+pointer_reference {
+  id: 0x014b8475
+  kind: POINTER
+  pointee_type_id: 0x2f6ef74a
+}
+pointer_reference {
+  id: 0x0155bbcc
+  kind: POINTER
+  pointee_type_id: 0x2f1609ae
+}
+pointer_reference {
+  id: 0x015c420e
+  kind: POINTER
+  pointee_type_id: 0x2f31eea6
+}
+pointer_reference {
+  id: 0x015f6fbc
+  kind: POINTER
+  pointee_type_id: 0x2f3d586f
+}
+pointer_reference {
+  id: 0x01783b47
+  kind: POINTER
+  pointee_type_id: 0x2fa00b83
+}
+pointer_reference {
+  id: 0x017ab87c
+  kind: POINTER
+  pointee_type_id: 0x2faa076d
+}
+pointer_reference {
+  id: 0x017d6bbb
+  kind: POINTER
+  pointee_type_id: 0x2fb54871
+}
+pointer_reference {
+  id: 0x017dfae3
+  kind: POINTER
+  pointee_type_id: 0x2fb70d10
+}
+pointer_reference {
+  id: 0x0188608c
+  kind: POINTER
+  pointee_type_id: 0x2c6164ac
+}
+pointer_reference {
+  id: 0x01891da5
+  kind: POINTER
+  pointee_type_id: 0x2c64900a
+}
+pointer_reference {
+  id: 0x0192373f
+  kind: POINTER
+  pointee_type_id: 0x2c083a61
+}
+pointer_reference {
+  id: 0x019356a9
+  kind: POINTER
+  pointee_type_id: 0x2c0dbc38
+}
+pointer_reference {
+  id: 0x01950729
+  kind: POINTER
+  pointee_type_id: 0x2c14fa3a
+}
+pointer_reference {
+  id: 0x019dcb45
+  kind: POINTER
+  pointee_type_id: 0x2c37cb88
+}
+pointer_reference {
+  id: 0x019e2530
+  kind: POINTER
+  pointee_type_id: 0x2c38725c
+}
+pointer_reference {
+  id: 0x01a57649
+  kind: POINTER
+  pointee_type_id: 0x2cd53fbb
+}
+pointer_reference {
+  id: 0x01a5f681
+  kind: POINTER
+  pointee_type_id: 0x2cd73c9a
+}
+pointer_reference {
+  id: 0x01a688ae
+  kind: POINTER
+  pointee_type_id: 0x2cdac427
+}
+pointer_reference {
+  id: 0x01ace255
+  kind: POINTER
+  pointee_type_id: 0x2cf36fc9
+}
+pointer_reference {
+  id: 0x01ae1e33
+  kind: POINTER
+  pointee_type_id: 0x2cf89e50
+}
+pointer_reference {
+  id: 0x01b63d17
+  kind: POINTER
+  pointee_type_id: 0x2c9812c2
+}
+pointer_reference {
+  id: 0x01ba2ceb
+  kind: POINTER
+  pointee_type_id: 0x2ca85530
+}
+pointer_reference {
+  id: 0x01bc81b8
+  kind: POINTER
+  pointee_type_id: 0x2cb2e07e
+}
+pointer_reference {
+  id: 0x01bd3c0f
+  kind: POINTER
+  pointee_type_id: 0x2cb416a0
+}
+pointer_reference {
+  id: 0x01c0c6f8
+  kind: POINTER
+  pointee_type_id: 0x2d43fd7f
+}
+pointer_reference {
+  id: 0x01c5a749
+  kind: POINTER
+  pointee_type_id: 0x2d567bb9
+}
+pointer_reference {
+  id: 0x01c77248
+  kind: POINTER
+  pointee_type_id: 0x2d5d2fbd
+}
+pointer_reference {
+  id: 0x01c7b63a
+  kind: POINTER
+  pointee_type_id: 0x2d5e3e76
+}
+pointer_reference {
+  id: 0x01c91228
+  kind: POINTER
+  pointee_type_id: 0x2d64ae3e
+}
+pointer_reference {
+  id: 0x01cecb1b
+  kind: POINTER
+  pointee_type_id: 0x2d7bcaf0
+}
+pointer_reference {
+  id: 0x01d1ae50
+  kind: POINTER
+  pointee_type_id: 0x2d065fdc
+}
+pointer_reference {
+  id: 0x01d3d77e
+  kind: POINTER
+  pointee_type_id: 0x2d0fbb66
+}
+pointer_reference {
+  id: 0x01d9df85
+  kind: POINTER
+  pointee_type_id: 0x2d27988b
+}
+pointer_reference {
+  id: 0x01de2d7a
+  kind: POINTER
+  pointee_type_id: 0x2d385376
+}
+pointer_reference {
+  id: 0x01de69b6
+  kind: POINTER
+  pointee_type_id: 0x2d394046
+}
+pointer_reference {
+  id: 0x01e0b0cf
+  kind: POINTER
+  pointee_type_id: 0x2dc225a0
+}
+pointer_reference {
+  id: 0x01e5fe4a
+  kind: POINTER
+  pointee_type_id: 0x2dd71fb4
+}
+pointer_reference {
+  id: 0x01e75c08
+  kind: POINTER
+  pointee_type_id: 0x2ddd96bf
+}
+pointer_reference {
+  id: 0x01ebfcdd
+  kind: POINTER
+  pointee_type_id: 0x2def15e8
+}
+pointer_reference {
+  id: 0x01f1fcec
+  kind: POINTER
+  pointee_type_id: 0x2d87152f
+}
+pointer_reference {
+  id: 0x01fee34e
+  kind: POINTER
+  pointee_type_id: 0x2dbb6ba4
+}
+pointer_reference {
+  id: 0x0200b127
+  kind: POINTER
+  pointee_type_id: 0x22422200
+}
+pointer_reference {
+  id: 0x02067bb4
+  kind: POINTER
+  pointee_type_id: 0x2259084f
+}
+pointer_reference {
+  id: 0x02067bf4
+  kind: POINTER
+  pointee_type_id: 0x2259094e
+}
+pointer_reference {
+  id: 0x0206e690
+  kind: POINTER
+  pointee_type_id: 0x225b7cde
+}
+pointer_reference {
+  id: 0x020c1a12
+  kind: POINTER
+  pointee_type_id: 0x22708ed7
+}
+pointer_reference {
+  id: 0x020f69fc
+  kind: POINTER
+  pointee_type_id: 0x227d416d
+}
+pointer_reference {
+  id: 0x02128e8a
+  kind: POINTER
+  pointee_type_id: 0x220adcb6
+}
+pointer_reference {
+  id: 0x022383b2
+  kind: POINTER
+  pointee_type_id: 0x22cee855
+}
+pointer_reference {
+  id: 0x02268d94
+  kind: POINTER
+  pointee_type_id: 0x22dad0cd
+}
+pointer_reference {
+  id: 0x0226d1ba
+  kind: POINTER
+  pointee_type_id: 0x22dba075
+}
+pointer_reference {
+  id: 0x02338c35
+  kind: POINTER
+  pointee_type_id: 0x228ed64b
+}
+pointer_reference {
+  id: 0x023b50cb
+  kind: POINTER
+  pointee_type_id: 0x22ada5b1
+}
+pointer_reference {
+  id: 0x023ce143
+  kind: POINTER
+  pointee_type_id: 0x22b36393
+}
+pointer_reference {
+  id: 0x023e1217
+  kind: POINTER
+  pointee_type_id: 0x22b8aec1
+}
+pointer_reference {
+  id: 0x023f86a4
+  kind: POINTER
+  pointee_type_id: 0x22befc0f
+}
+pointer_reference {
+  id: 0x0242c054
+  kind: POINTER
+  pointee_type_id: 0x234be7cd
+}
+pointer_reference {
+  id: 0x024b8608
+  kind: POINTER
+  pointee_type_id: 0x236efebd
+}
+pointer_reference {
+  id: 0x024ceae1
+  kind: POINTER
+  pointee_type_id: 0x23734d18
+}
+pointer_reference {
+  id: 0x02578e46
+  kind: POINTER
+  pointee_type_id: 0x231edf87
+}
+pointer_reference {
+  id: 0x0258f96e
+  kind: POINTER
+  pointee_type_id: 0x23230326
+}
+pointer_reference {
+  id: 0x025c6771
+  kind: POINTER
+  pointee_type_id: 0x23317b59
+}
+pointer_reference {
+  id: 0x026525e9
+  kind: POINTER
+  pointee_type_id: 0x23d47139
+}
+pointer_reference {
+  id: 0x026c3dea
+  kind: POINTER
+  pointee_type_id: 0x23f01134
+}
+pointer_reference {
+  id: 0x0272d86f
+  kind: POINTER
+  pointee_type_id: 0x238b8721
+}
+pointer_reference {
+  id: 0x0277bf8a
+  kind: POINTER
+  pointee_type_id: 0x239e18b5
+}
+pointer_reference {
+  id: 0x0283e1e3
+  kind: POINTER
+  pointee_type_id: 0x204f6110
+}
+pointer_reference {
+  id: 0x02862e14
+  kind: POINTER
+  pointee_type_id: 0x20585ece
+}
+pointer_reference {
+  id: 0x02888010
+  kind: POINTER
+  pointee_type_id: 0x2062e6df
+}
+pointer_reference {
+  id: 0x028fcf55
+  kind: POINTER
+  pointee_type_id: 0x207fdbcb
+}
+pointer_reference {
+  id: 0x02900546
+  kind: POINTER
+  pointee_type_id: 0x2000f384
+}
+pointer_reference {
+  id: 0x0292b875
+  kind: POINTER
+  pointee_type_id: 0x200a0749
+}
+pointer_reference {
+  id: 0x0296835f
+  kind: POINTER
+  pointee_type_id: 0x201aebe0
+}
+pointer_reference {
+  id: 0x029d7f27
+  kind: POINTER
+  pointee_type_id: 0x20351a02
+}
+pointer_reference {
+  id: 0x02a388d8
+  kind: POINTER
+  pointee_type_id: 0x20cec5ff
+}
+pointer_reference {
+  id: 0x02a57796
+  kind: POINTER
+  pointee_type_id: 0x20d538c6
+}
+pointer_reference {
+  id: 0x02a714aa
+  kind: POINTER
+  pointee_type_id: 0x20dcb434
+}
+pointer_reference {
+  id: 0x02a882fb
+  kind: POINTER
+  pointee_type_id: 0x20e2ed71
+}
+pointer_reference {
+  id: 0x02a8d0c9
+  kind: POINTER
+  pointee_type_id: 0x20e3a5b9
+}
+pointer_reference {
+  id: 0x02b3baf5
+  kind: POINTER
+  pointee_type_id: 0x208e0d4b
+}
+pointer_reference {
+  id: 0x02b8ad1f
+  kind: POINTER
+  pointee_type_id: 0x20a252e3
+}
+pointer_reference {
+  id: 0x02c35f57
+  kind: POINTER
+  pointee_type_id: 0x214d9bc0
+}
+pointer_reference {
+  id: 0x02cc0dbc
+  kind: POINTER
+  pointee_type_id: 0x2170d06d
+}
+pointer_reference {
+  id: 0x02dfb39a
+  kind: POINTER
+  pointee_type_id: 0x213e28f7
+}
+pointer_reference {
+  id: 0x02e98c8d
+  kind: POINTER
+  pointee_type_id: 0x21e6d4a8
+}
+pointer_reference {
+  id: 0x02eb105a
+  kind: POINTER
+  pointee_type_id: 0x21eca7f5
+}
+pointer_reference {
+  id: 0x02ed0755
+  kind: POINTER
+  pointee_type_id: 0x21f4fbc9
+}
+pointer_reference {
+  id: 0x02f4fda6
+  kind: POINTER
+  pointee_type_id: 0x21931005
+}
+pointer_reference {
+  id: 0x02f9a1f8
+  kind: POINTER
+  pointee_type_id: 0x21a6617d
+}
+pointer_reference {
+  id: 0x02fc8d1a
+  kind: POINTER
+  pointee_type_id: 0x21b2d2f4
+}
+pointer_reference {
+  id: 0x02fdb32f
+  kind: POINTER
+  pointee_type_id: 0x21b62a20
+}
+pointer_reference {
+  id: 0x03024adc
+  kind: POINTER
+  pointee_type_id: 0x2649cdec
+}
+pointer_reference {
+  id: 0x03038214
+  kind: POINTER
+  pointee_type_id: 0x264eeece
+}
+pointer_reference {
+  id: 0x03064599
+  kind: POINTER
+  pointee_type_id: 0x2659f0fb
+}
+pointer_reference {
+  id: 0x03069f1e
+  kind: POINTER
+  pointee_type_id: 0x265a9ae6
+}
+pointer_reference {
+  id: 0x030a0036
+  kind: POINTER
+  pointee_type_id: 0x2668e644
+}
+pointer_reference {
+  id: 0x030a4c62
+  kind: POINTER
+  pointee_type_id: 0x2669d715
+}
+pointer_reference {
+  id: 0x030b9acf
+  kind: POINTER
+  pointee_type_id: 0x266e8da3
+}
+pointer_reference {
+  id: 0x031a031e
+  kind: POINTER
+  pointee_type_id: 0x2628eae6
+}
+pointer_reference {
+  id: 0x0327ccee
+  kind: POINTER
+  pointee_type_id: 0x26dfd527
+}
+pointer_reference {
+  id: 0x03283c19
+  kind: POINTER
+  pointee_type_id: 0x26e016fa
+}
+pointer_reference {
+  id: 0x0335a07f
+  kind: POINTER
+  pointee_type_id: 0x26966763
+}
+pointer_reference {
+  id: 0x03371a37
+  kind: POINTER
+  pointee_type_id: 0x269c8e40
+}
+pointer_reference {
+  id: 0x0337b511
+  kind: POINTER
+  pointee_type_id: 0x269e32d8
+}
+pointer_reference {
+  id: 0x0341bd37
+  kind: POINTER
+  pointee_type_id: 0x27461240
+}
+pointer_reference {
+  id: 0x035330ac
+  kind: POINTER
+  pointee_type_id: 0x270c242d
+}
+pointer_reference {
+  id: 0x0355dc72
+  kind: POINTER
+  pointee_type_id: 0x27179756
+}
+pointer_reference {
+  id: 0x0356cddf
+  kind: POINTER
+  pointee_type_id: 0x271bd1e1
+}
+pointer_reference {
+  id: 0x0357d2dd
+  kind: POINTER
+  pointee_type_id: 0x271fade8
+}
+pointer_reference {
+  id: 0x0359763e
+  kind: POINTER
+  pointee_type_id: 0x27253e64
+}
+pointer_reference {
+  id: 0x035d664d
+  kind: POINTER
+  pointee_type_id: 0x27357fa9
+}
+pointer_reference {
+  id: 0x036435f8
+  kind: POINTER
+  pointee_type_id: 0x27d0317f
+}
+pointer_reference {
+  id: 0x0369215c
+  kind: POINTER
+  pointee_type_id: 0x27e463ec
+}
+pointer_reference {
+  id: 0x0374654c
+  kind: POINTER
+  pointee_type_id: 0x279173ae
+}
+pointer_reference {
+  id: 0x0379c823
+  kind: POINTER
+  pointee_type_id: 0x27a7c613
+}
+pointer_reference {
+  id: 0x0379fcff
+  kind: POINTER
+  pointee_type_id: 0x27a71563
+}
+pointer_reference {
+  id: 0x037dffe3
+  kind: POINTER
+  pointee_type_id: 0x27b71910
+}
+pointer_reference {
+  id: 0x0387a44d
+  kind: POINTER
+  pointee_type_id: 0x245e77a8
+}
+pointer_reference {
+  id: 0x038b6fa0
+  kind: POINTER
+  pointee_type_id: 0x246d581d
+}
+pointer_reference {
+  id: 0x038c310d
+  kind: POINTER
+  pointee_type_id: 0x247022a8
+}
+pointer_reference {
+  id: 0x038cb58c
+  kind: POINTER
+  pointee_type_id: 0x247230af
+}
+pointer_reference {
+  id: 0x038d519d
+  kind: POINTER
+  pointee_type_id: 0x2475a0e9
+}
+pointer_reference {
+  id: 0x038de60c
+  kind: POINTER
+  pointee_type_id: 0x24777eaf
+}
+pointer_reference {
+  id: 0x03965d61
+  kind: POINTER
+  pointee_type_id: 0x24199318
+}
+pointer_reference {
+  id: 0x0399ec3e
+  kind: POINTER
+  pointee_type_id: 0x24275666
+}
+pointer_reference {
+  id: 0x039cec64
+  kind: POINTER
+  pointee_type_id: 0x2433570e
+}
+pointer_reference {
+  id: 0x039df521
+  kind: POINTER
+  pointee_type_id: 0x24373219
+}
+pointer_reference {
+  id: 0x03a40599
+  kind: POINTER
+  pointee_type_id: 0x24d0f0fb
+}
+pointer_reference {
+  id: 0x03c12fc3
+  kind: POINTER
+  pointee_type_id: 0x25445990
+}
+pointer_reference {
+  id: 0x03c33b38
+  kind: POINTER
+  pointee_type_id: 0x254c0a7c
+}
+pointer_reference {
+  id: 0x03c8112b
+  kind: POINTER
+  pointee_type_id: 0x2560a232
+}
+pointer_reference {
+  id: 0x03caf08d
+  kind: POINTER
+  pointee_type_id: 0x256b24ab
+}
+pointer_reference {
+  id: 0x03cd78c6
+  kind: POINTER
+  pointee_type_id: 0x25750584
+}
+pointer_reference {
+  id: 0x03ce74cd
+  kind: POINTER
+  pointee_type_id: 0x257935aa
+}
+pointer_reference {
+  id: 0x03cf5188
+  kind: POINTER
+  pointee_type_id: 0x257da0bd
+}
+pointer_reference {
+  id: 0x03d5ac6b
+  kind: POINTER
+  pointee_type_id: 0x25165733
+}
+pointer_reference {
+  id: 0x03d7c287
+  kind: POINTER
+  pointee_type_id: 0x251fec82
+}
+pointer_reference {
+  id: 0x03e92bef
+  kind: POINTER
+  pointee_type_id: 0x25e44921
+}
+pointer_reference {
+  id: 0x03e98aeb
+  kind: POINTER
+  pointee_type_id: 0x25e6cd32
+}
+pointer_reference {
+  id: 0x03e9b5f9
+  kind: POINTER
+  pointee_type_id: 0x25e63179
+}
+pointer_reference {
+  id: 0x03ecaf94
+  kind: POINTER
+  pointee_type_id: 0x25f258cf
+}
+pointer_reference {
+  id: 0x03f70c68
+  kind: POINTER
+  pointee_type_id: 0x259cd73c
+}
+pointer_reference {
+  id: 0x03fd7ad9
+  kind: POINTER
+  pointee_type_id: 0x25b50dfa
+}
+pointer_reference {
+  id: 0x0400f16a
+  kind: POINTER
+  pointee_type_id: 0x3a432334
+}
+pointer_reference {
+  id: 0x0407035c
+  kind: POINTER
+  pointee_type_id: 0x3a5cebed
+}
+pointer_reference {
+  id: 0x040b3260
+  kind: POINTER
+  pointee_type_id: 0x3a6c2f1e
+}
+pointer_reference {
+  id: 0x040d1b01
+  kind: POINTER
+  pointee_type_id: 0x3a748a98
+}
+pointer_reference {
+  id: 0x04147d22
+  kind: POINTER
+  pointee_type_id: 0x3a111215
+}
+pointer_reference {
+  id: 0x04199996
+  kind: POINTER
+  pointee_type_id: 0x3a2680c6
+}
+pointer_reference {
+  id: 0x041d6b3e
+  kind: POINTER
+  pointee_type_id: 0x3a354a67
+}
+pointer_reference {
+  id: 0x041fb53e
+  kind: POINTER
+  pointee_type_id: 0x3a3e3264
+}
+pointer_reference {
+  id: 0x0425ae3c
+  kind: POINTER
+  pointee_type_id: 0x3ad65e6d
+}
+pointer_reference {
+  id: 0x042af17e
+  kind: POINTER
+  pointee_type_id: 0x3aeb2365
+}
+pointer_reference {
+  id: 0x042bd90b
+  kind: POINTER
+  pointee_type_id: 0x3aef82b0
+}
+pointer_reference {
+  id: 0x042c3ae5
+  kind: POINTER
+  pointee_type_id: 0x3af00d0a
+}
+pointer_reference {
+  id: 0x042ceafc
+  kind: POINTER
+  pointee_type_id: 0x3af34d6f
+}
+pointer_reference {
+  id: 0x042f596c
+  kind: POINTER
+  pointee_type_id: 0x3afd832e
+}
+pointer_reference {
+  id: 0x043574da
+  kind: POINTER
+  pointee_type_id: 0x3a9535f4
+}
+pointer_reference {
+  id: 0x043d1c33
+  kind: POINTER
+  pointee_type_id: 0x3ab49650
+}
+pointer_reference {
+  id: 0x043ecddb
+  kind: POINTER
+  pointee_type_id: 0x3abbd1f3
+}
+pointer_reference {
+  id: 0x044199b9
+  kind: POINTER
+  pointee_type_id: 0x3b468079
+}
+pointer_reference {
+  id: 0x044301a9
+  kind: POINTER
+  pointee_type_id: 0x3b4ce03a
+}
+pointer_reference {
+  id: 0x044ba8c8
+  kind: POINTER
+  pointee_type_id: 0x3b6e45be
+}
+pointer_reference {
+  id: 0x04537b8c
+  kind: POINTER
+  pointee_type_id: 0x3b0d08ae
+}
+pointer_reference {
+  id: 0x045ea05c
+  kind: POINTER
+  pointee_type_id: 0x3b3a67ec
+}
+pointer_reference {
+  id: 0x04676af8
+  kind: POINTER
+  pointee_type_id: 0x3bdd4d7d
+}
+pointer_reference {
+  id: 0x0469aa58
+  kind: POINTER
+  pointee_type_id: 0x3be64ffd
+}
+pointer_reference {
+  id: 0x0469d4d8
+  kind: POINTER
+  pointee_type_id: 0x3be7b5fc
+}
+pointer_reference {
+  id: 0x047bb30a
+  kind: POINTER
+  pointee_type_id: 0x3bae2ab4
+}
+pointer_reference {
+  id: 0x047e285e
+  kind: POINTER
+  pointee_type_id: 0x3bb847e5
+}
+pointer_reference {
+  id: 0x048090f0
+  kind: POINTER
+  pointee_type_id: 0x3842a55f
+}
+pointer_reference {
+  id: 0x04810ecd
+  kind: POINTER
+  pointee_type_id: 0x3844dda9
+}
+pointer_reference {
+  id: 0x0483e6f8
+  kind: POINTER
+  pointee_type_id: 0x384f7d7c
+}
+pointer_reference {
+  id: 0x0484940b
+  kind: POINTER
+  pointee_type_id: 0x3852b6b0
+}
+pointer_reference {
+  id: 0x04880557
+  kind: POINTER
+  pointee_type_id: 0x3860f3c0
+}
+pointer_reference {
+  id: 0x048ea3ea
+  kind: POINTER
+  pointee_type_id: 0x387a6934
+}
+pointer_reference {
+  id: 0x0490bb4a
+  kind: POINTER
+  pointee_type_id: 0x38020bb6
+}
+pointer_reference {
+  id: 0x049495ac
+  kind: POINTER
+  pointee_type_id: 0x3812b02e
+}
+pointer_reference {
+  id: 0x0495b93a
+  kind: POINTER
+  pointee_type_id: 0x38160275
+}
+pointer_reference {
+  id: 0x049a4979
+  kind: POINTER
+  pointee_type_id: 0x3829c378
+}
+pointer_reference {
+  id: 0x049d4e97
+  kind: POINTER
+  pointee_type_id: 0x3835dcc0
+}
+pointer_reference {
+  id: 0x049e6c75
+  kind: POINTER
+  pointee_type_id: 0x3839574b
+}
+pointer_reference {
+  id: 0x04a6a89c
+  kind: POINTER
+  pointee_type_id: 0x38da44ec
+}
+pointer_reference {
+  id: 0x04ac88c5
+  kind: POINTER
+  pointee_type_id: 0x38f2c58b
+}
+pointer_reference {
+  id: 0x04b193cc
+  kind: POINTER
+  pointee_type_id: 0x3886a9ae
+}
+pointer_reference {
+  id: 0x04bd6229
+  kind: POINTER
+  pointee_type_id: 0x38b56e39
+}
+pointer_reference {
+  id: 0x04c02b90
+  kind: POINTER
+  pointee_type_id: 0x394048de
+}
+pointer_reference {
+  id: 0x04c1427f
+  kind: POINTER
+  pointee_type_id: 0x3945ef63
+}
+pointer_reference {
+  id: 0x04c1fa3e
+  kind: POINTER
+  pointee_type_id: 0x39470e64
+}
+pointer_reference {
+  id: 0x04c27a37
+  kind: POINTER
+  pointee_type_id: 0x39490e40
+}
+pointer_reference {
+  id: 0x04ca9246
+  kind: POINTER
+  pointee_type_id: 0x396aaf86
+}
+pointer_reference {
+  id: 0x04d62c3f
+  kind: POINTER
+  pointee_type_id: 0x39185662
+}
+pointer_reference {
+  id: 0x04dad728
+  kind: POINTER
+  pointee_type_id: 0x392bba3e
+}
+pointer_reference {
+  id: 0x04e33c8c
+  kind: POINTER
+  pointee_type_id: 0x39cc14ac
+}
+pointer_reference {
+  id: 0x04e4820e
+  kind: POINTER
+  pointee_type_id: 0x39d2eea6
+}
+pointer_reference {
+  id: 0x04e620e7
+  kind: POINTER
+  pointee_type_id: 0x39d86502
+}
+pointer_reference {
+  id: 0x04ea42a7
+  kind: POINTER
+  pointee_type_id: 0x39e9ec01
+}
+pointer_reference {
+  id: 0x04f0669a
+  kind: POINTER
+  pointee_type_id: 0x39817cf5
+}
+pointer_reference {
+  id: 0x04f5f07a
+  kind: POINTER
+  pointee_type_id: 0x39972774
+}
+pointer_reference {
+  id: 0x04f728c1
+  kind: POINTER
+  pointee_type_id: 0x399c459b
+}
+pointer_reference {
+  id: 0x04f7a60d
+  kind: POINTER
+  pointee_type_id: 0x399e7ea8
+}
+pointer_reference {
+  id: 0x04f91f60
+  kind: POINTER
+  pointee_type_id: 0x39a49b1e
+}
+pointer_reference {
+  id: 0x04fb8f54
+  kind: POINTER
+  pointee_type_id: 0x39aedbce
+}
+pointer_reference {
+  id: 0x05003835
+  kind: POINTER
+  pointee_type_id: 0x3e40064a
+}
+pointer_reference {
+  id: 0x05042b1f
+  kind: POINTER
+  pointee_type_id: 0x3e504ae2
+}
+pointer_reference {
+  id: 0x0508b7df
+  kind: POINTER
+  pointee_type_id: 0x3e6239e1
+}
+pointer_reference {
+  id: 0x050d6bc0
+  kind: POINTER
+  pointee_type_id: 0x3e75499e
+}
+pointer_reference {
+  id: 0x0510f471
+  kind: POINTER
+  pointee_type_id: 0x3e03375b
+}
+pointer_reference {
+  id: 0x051414e1
+  kind: POINTER
+  pointee_type_id: 0x3e10b518
+}
+pointer_reference {
+  id: 0x0519611c
+  kind: POINTER
+  pointee_type_id: 0x3e2562ef
+}
+pointer_reference {
+  id: 0x0524edd8
+  kind: POINTER
+  pointee_type_id: 0x3ed351ff
+}
+pointer_reference {
+  id: 0x052e5823
+  kind: POINTER
+  pointee_type_id: 0x3ef98611
+}
+pointer_reference {
+  id: 0x052fac00
+  kind: POINTER
+  pointee_type_id: 0x3efe569e
+}
+pointer_reference {
+  id: 0x053432a7
+  kind: POINTER
+  pointee_type_id: 0x3e902c00
+}
+pointer_reference {
+  id: 0x0534557d
+  kind: POINTER
+  pointee_type_id: 0x3e91b36b
+}
+pointer_reference {
+  id: 0x0537192f
+  kind: POINTER
+  pointee_type_id: 0x3e9c8220
+}
+pointer_reference {
+  id: 0x0537eb7c
+  kind: POINTER
+  pointee_type_id: 0x3e9f4b6c
+}
+pointer_reference {
+  id: 0x0537fb37
+  kind: POINTER
+  pointee_type_id: 0x3e9f0a43
+}
+pointer_reference {
+  id: 0x054117f9
+  kind: POINTER
+  pointee_type_id: 0x3f44b979
+}
+pointer_reference {
+  id: 0x054f691a
+  kind: POINTER
+  pointee_type_id: 0x3f7d42f7
+}
+pointer_reference {
+  id: 0x05514b17
+  kind: POINTER
+  pointee_type_id: 0x3f05cac3
+}
+pointer_reference {
+  id: 0x05563a83
+  kind: POINTER
+  pointee_type_id: 0x3f180c93
+}
+pointer_reference {
+  id: 0x055e0c0c
+  kind: POINTER
+  pointee_type_id: 0x3f38d6ad
+}
+pointer_reference {
+  id: 0x055f6606
+  kind: POINTER
+  pointee_type_id: 0x3f3d7e85
+}
+pointer_reference {
+  id: 0x0561578b
+  kind: POINTER
+  pointee_type_id: 0x3fc5b8b3
+}
+pointer_reference {
+  id: 0x0562c566
+  kind: POINTER
+  pointee_type_id: 0x3fcbf304
+}
+pointer_reference {
+  id: 0x056a9b42
+  kind: POINTER
+  pointee_type_id: 0x3fea8b97
+}
+pointer_reference {
+  id: 0x056ad03f
+  kind: POINTER
+  pointee_type_id: 0x3feba660
+}
+pointer_reference {
+  id: 0x056cf603
+  kind: POINTER
+  pointee_type_id: 0x3ff33e91
+}
+pointer_reference {
+  id: 0x056dafae
+  kind: POINTER
+  pointee_type_id: 0x3ff65826
+}
+pointer_reference {
+  id: 0x056e14dc
+  kind: POINTER
+  pointee_type_id: 0x3ff8b5ef
+}
+pointer_reference {
+  id: 0x0570ebcb
+  kind: POINTER
+  pointee_type_id: 0x3f8349b2
+}
+pointer_reference {
+  id: 0x057af395
+  kind: POINTER
+  pointee_type_id: 0x3fab28c8
+}
+pointer_reference {
+  id: 0x057eb7eb
+  kind: POINTER
+  pointee_type_id: 0x3fba3933
+}
+pointer_reference {
+  id: 0x0581f50f
+  kind: POINTER
+  pointee_type_id: 0x3c4732a3
+}
+pointer_reference {
+  id: 0x0582a4cb
+  kind: POINTER
+  pointee_type_id: 0x3c4a75b2
+}
+pointer_reference {
+  id: 0x0582eecf
+  kind: POINTER
+  pointee_type_id: 0x3c4b5da3
+}
+pointer_reference {
+  id: 0x0586cc54
+  kind: POINTER
+  pointee_type_id: 0x3c5bd7ce
+}
+pointer_reference {
+  id: 0x0591125a
+  kind: POINTER
+  pointee_type_id: 0x3c04aff6
+}
+pointer_reference {
+  id: 0x05943b52
+  kind: POINTER
+  pointee_type_id: 0x3c100bd7
+}
+pointer_reference {
+  id: 0x0595878c
+  kind: POINTER
+  pointee_type_id: 0x3c16f8ae
+}
+pointer_reference {
+  id: 0x059988a7
+  kind: POINTER
+  pointee_type_id: 0x3c26c400
+}
+pointer_reference {
+  id: 0x0599eccf
+  kind: POINTER
+  pointee_type_id: 0x3c2755a3
+}
+pointer_reference {
+  id: 0x05a52bb0
+  kind: POINTER
+  pointee_type_id: 0x3cd4485f
+}
+pointer_reference {
+  id: 0x05a5cdba
+  kind: POINTER
+  pointee_type_id: 0x3cd7d077
+}
+pointer_reference {
+  id: 0x05b572ab
+  kind: POINTER
+  pointee_type_id: 0x3c952c30
+}
+pointer_reference {
+  id: 0x05c2a3ca
+  kind: POINTER
+  pointee_type_id: 0x3d4a69b5
+}
+pointer_reference {
+  id: 0x05cc5cbb
+  kind: POINTER
+  pointee_type_id: 0x3d719472
+}
+pointer_reference {
+  id: 0x05ccb60b
+  kind: POINTER
+  pointee_type_id: 0x3d723eb2
+}
+pointer_reference {
+  id: 0x05d8e3fb
+  kind: POINTER
+  pointee_type_id: 0x3d236973
+}
+pointer_reference {
+  id: 0x05dc2a7b
+  kind: POINTER
+  pointee_type_id: 0x3d304f71
+}
+pointer_reference {
+  id: 0x05e383b0
+  kind: POINTER
+  pointee_type_id: 0x3dcee85d
+}
+pointer_reference {
+  id: 0x05e80097
+  kind: POINTER
+  pointee_type_id: 0x3de0e4c3
+}
+pointer_reference {
+  id: 0x05f260a2
+  kind: POINTER
+  pointee_type_id: 0x3d896417
+}
+pointer_reference {
+  id: 0x05f487d6
+  kind: POINTER
+  pointee_type_id: 0x3d92f9c7
+}
+pointer_reference {
+  id: 0x05f50dbe
+  kind: POINTER
+  pointee_type_id: 0x3d94d064
+}
+pointer_reference {
+  id: 0x05f8f5c5
+  kind: POINTER
+  pointee_type_id: 0x3da33188
+}
+pointer_reference {
+  id: 0x0603671e
+  kind: POINTER
+  pointee_type_id: 0x324d7ae7
+}
+pointer_reference {
+  id: 0x0606153b
+  kind: POINTER
+  pointee_type_id: 0x3258b271
+}
+pointer_reference {
+  id: 0x060a022d
+  kind: POINTER
+  pointee_type_id: 0x3268ee29
+}
+pointer_reference {
+  id: 0x060bd86d
+  kind: POINTER
+  pointee_type_id: 0x326f872a
+}
+pointer_reference {
+  id: 0x060cf413
+  kind: POINTER
+  pointee_type_id: 0x327336d2
+}
+pointer_reference {
+  id: 0x060faad6
+  kind: POINTER
+  pointee_type_id: 0x327e4dc7
+}
+pointer_reference {
+  id: 0x0610b875
+  kind: POINTER
+  pointee_type_id: 0x32020749
+}
+pointer_reference {
+  id: 0x0611572c
+  kind: POINTER
+  pointee_type_id: 0x3205ba2f
+}
+pointer_reference {
+  id: 0x0622699d
+  kind: POINTER
+  pointee_type_id: 0x32c940eb
+}
+pointer_reference {
+  id: 0x0639b152
+  kind: POINTER
+  pointee_type_id: 0x32a623d7
+}
+pointer_reference {
+  id: 0x0642705a
+  kind: POINTER
+  pointee_type_id: 0x334927f6
+}
+pointer_reference {
+  id: 0x06433852
+  kind: POINTER
+  pointee_type_id: 0x334c07d5
+}
+pointer_reference {
+  id: 0x064599b7
+  kind: POINTER
+  pointee_type_id: 0x33568043
+}
+pointer_reference {
+  id: 0x064b31cb
+  kind: POINTER
+  pointee_type_id: 0x336c21b3
+}
+pointer_reference {
+  id: 0x064ca9d5
+  kind: POINTER
+  pointee_type_id: 0x337241c9
+}
+pointer_reference {
+  id: 0x064d6086
+  kind: POINTER
+  pointee_type_id: 0x33756485
+}
+pointer_reference {
+  id: 0x06500055
+  kind: POINTER
+  pointee_type_id: 0x3300e7cb
+}
+pointer_reference {
+  id: 0x06507df7
+  kind: POINTER
+  pointee_type_id: 0x33011141
+}
+pointer_reference {
+  id: 0x06541377
+  kind: POINTER
+  pointee_type_id: 0x3310ab43
+}
+pointer_reference {
+  id: 0x065a3ee7
+  kind: POINTER
+  pointee_type_id: 0x33281d02
+}
+pointer_reference {
+  id: 0x065bc4a9
+  kind: POINTER
+  pointee_type_id: 0x332ff439
+}
+pointer_reference {
+  id: 0x065d3f86
+  kind: POINTER
+  pointee_type_id: 0x33341885
+}
+pointer_reference {
+  id: 0x065e7be5
+  kind: POINTER
+  pointee_type_id: 0x33390909
+}
+pointer_reference {
+  id: 0x0660b958
+  kind: POINTER
+  pointee_type_id: 0x33c203fc
+}
+pointer_reference {
+  id: 0x0665e6b6
+  kind: POINTER
+  pointee_type_id: 0x33d77c47
+}
+pointer_reference {
+  id: 0x0666148e
+  kind: POINTER
+  pointee_type_id: 0x33d8b4a6
+}
+pointer_reference {
+  id: 0x066635bb
+  kind: POINTER
+  pointee_type_id: 0x33d83070
+}
+pointer_reference {
+  id: 0x0669d6b3
+  kind: POINTER
+  pointee_type_id: 0x33e7bc51
+}
+pointer_reference {
+  id: 0x066af716
+  kind: POINTER
+  pointee_type_id: 0x33eb3ac5
+}
+pointer_reference {
+  id: 0x066d2c35
+  kind: POINTER
+  pointee_type_id: 0x33f4564a
+}
+pointer_reference {
+  id: 0x066e14f5
+  kind: POINTER
+  pointee_type_id: 0x33f8b54b
+}
+pointer_reference {
+  id: 0x066f8d7f
+  kind: POINTER
+  pointee_type_id: 0x33fed362
+}
+pointer_reference {
+  id: 0x06709029
+  kind: POINTER
+  pointee_type_id: 0x3382a638
+}
+pointer_reference {
+  id: 0x0671e24f
+  kind: POINTER
+  pointee_type_id: 0x33876fa0
+}
+pointer_reference {
+  id: 0x0672ef2a
+  kind: POINTER
+  pointee_type_id: 0x338b5a35
+}
+pointer_reference {
+  id: 0x06835e9c
+  kind: POINTER
+  pointee_type_id: 0x304d9ced
+}
+pointer_reference {
+  id: 0x0687edf5
+  kind: POINTER
+  pointee_type_id: 0x305f514b
+}
+pointer_reference {
+  id: 0x06901f39
+  kind: POINTER
+  pointee_type_id: 0x30009a7a
+}
+pointer_reference {
+  id: 0x069a74ff
+  kind: POINTER
+  pointee_type_id: 0x30293561
+}
+pointer_reference {
+  id: 0x06afdad0
+  kind: POINTER
+  pointee_type_id: 0x30ff8ddd
+}
+pointer_reference {
+  id: 0x06b96242
+  kind: POINTER
+  pointee_type_id: 0x30a56f97
+}
+pointer_reference {
+  id: 0x06b9b8cb
+  kind: POINTER
+  pointee_type_id: 0x30a605b1
+}
+pointer_reference {
+  id: 0x06bbba49
+  kind: POINTER
+  pointee_type_id: 0x30ae0fb9
+}
+pointer_reference {
+  id: 0x06dcdc5a
+  kind: POINTER
+  pointee_type_id: 0x313397f7
+}
+pointer_reference {
+  id: 0x06de8565
+  kind: POINTER
+  pointee_type_id: 0x313af308
+}
+pointer_reference {
+  id: 0x06e9e1f4
+  kind: POINTER
+  pointee_type_id: 0x31e7614c
+}
+pointer_reference {
+  id: 0x06ee9840
+  kind: POINTER
+  pointee_type_id: 0x31fa879c
+}
+pointer_reference {
+  id: 0x06ef24ac
+  kind: POINTER
+  pointee_type_id: 0x31fc742e
+}
+pointer_reference {
+  id: 0x06f29f19
+  kind: POINTER
+  pointee_type_id: 0x318a9af9
+}
+pointer_reference {
+  id: 0x06fc21c3
+  kind: POINTER
+  pointee_type_id: 0x31b06191
+}
+pointer_reference {
+  id: 0x06fd503c
+  kind: POINTER
+  pointee_type_id: 0x31b5a66f
+}
+pointer_reference {
+  id: 0x07027638
+  kind: POINTER
+  pointee_type_id: 0x36493e7d
+}
+pointer_reference {
+  id: 0x0702ae23
+  kind: POINTER
+  pointee_type_id: 0x364a5e11
+}
+pointer_reference {
+  id: 0x070c84c2
+  kind: POINTER
+  pointee_type_id: 0x3672f594
+}
+pointer_reference {
+  id: 0x070e4031
+  kind: POINTER
+  pointee_type_id: 0x3679e659
+}
+pointer_reference {
+  id: 0x070fb3ab
+  kind: POINTER
+  pointee_type_id: 0x367e2831
+}
+pointer_reference {
+  id: 0x0716cdd6
+  kind: POINTER
+  pointee_type_id: 0x361bd1c4
+}
+pointer_reference {
+  id: 0x0717743d
+  kind: POINTER
+  pointee_type_id: 0x361d366b
+}
+pointer_reference {
+  id: 0x071da3d1
+  kind: POINTER
+  pointee_type_id: 0x363669db
+}
+pointer_reference {
+  id: 0x07272add
+  kind: POINTER
+  pointee_type_id: 0x36dc4de8
+}
+pointer_reference {
+  id: 0x0728dd63
+  kind: POINTER
+  pointee_type_id: 0x36e39310
+}
+pointer_reference {
+  id: 0x072c4dd8
+  kind: POINTER
+  pointee_type_id: 0x36f1d1fd
+}
+pointer_reference {
+  id: 0x073894f9
+  kind: POINTER
+  pointee_type_id: 0x36a2b57a
+}
+pointer_reference {
+  id: 0x0742e5b4
+  kind: POINTER
+  pointee_type_id: 0x374b704c
+}
+pointer_reference {
+  id: 0x07450c2a
+  kind: POINTER
+  pointee_type_id: 0x3754d634
+}
+pointer_reference {
+  id: 0x0745de2d
+  kind: POINTER
+  pointee_type_id: 0x37579e28
+}
+pointer_reference {
+  id: 0x074ac796
+  kind: POINTER
+  pointee_type_id: 0x376bf8c4
+}
+pointer_reference {
+  id: 0x074f1a14
+  kind: POINTER
+  pointee_type_id: 0x377c8ecf
+}
+pointer_reference {
+  id: 0x0756289d
+  kind: POINTER
+  pointee_type_id: 0x371844eb
+}
+pointer_reference {
+  id: 0x0759ae47
+  kind: POINTER
+  pointee_type_id: 0x37265f81
+}
+pointer_reference {
+  id: 0x07665a1f
+  kind: POINTER
+  pointee_type_id: 0x37d98ee3
+}
+pointer_reference {
+  id: 0x076b08a6
+  kind: POINTER
+  pointee_type_id: 0x37ecc407
+}
+pointer_reference {
+  id: 0x0770dca0
+  kind: POINTER
+  pointee_type_id: 0x3783941f
+}
+pointer_reference {
+  id: 0x0774d965
+  kind: POINTER
+  pointee_type_id: 0x3793830a
+}
+pointer_reference {
+  id: 0x07815e41
+  kind: POINTER
+  pointee_type_id: 0x34459f99
+}
+pointer_reference {
+  id: 0x078316ff
+  kind: POINTER
+  pointee_type_id: 0x344cbd63
+}
+pointer_reference {
+  id: 0x0783e3fb
+  kind: POINTER
+  pointee_type_id: 0x344f6972
+}
+pointer_reference {
+  id: 0x078c7808
+  kind: POINTER
+  pointee_type_id: 0x347106bd
+}
+pointer_reference {
+  id: 0x078cf94a
+  kind: POINTER
+  pointee_type_id: 0x347303b4
+}
+pointer_reference {
+  id: 0x078e3f47
+  kind: POINTER
+  pointee_type_id: 0x34781b82
+}
+pointer_reference {
+  id: 0x078fc7bc
+  kind: POINTER
+  pointee_type_id: 0x347ff86e
+}
+pointer_reference {
+  id: 0x07932141
+  kind: POINTER
+  pointee_type_id: 0x340c639a
+}
+pointer_reference {
+  id: 0x07941efa
+  kind: POINTER
+  pointee_type_id: 0x34109d77
+}
+pointer_reference {
+  id: 0x07944f4b
+  kind: POINTER
+  pointee_type_id: 0x3411dbb1
+}
+pointer_reference {
+  id: 0x07956982
+  kind: POINTER
+  pointee_type_id: 0x34154096
+}
+pointer_reference {
+  id: 0x0798f334
+  kind: POINTER
+  pointee_type_id: 0x34232a4f
+}
+pointer_reference {
+  id: 0x079ced0e
+  kind: POINTER
+  pointee_type_id: 0x343352a7
+}
+pointer_reference {
+  id: 0x079edd79
+  kind: POINTER
+  pointee_type_id: 0x343b9379
+}
+pointer_reference {
+  id: 0x079f969f
+  kind: POINTER
+  pointee_type_id: 0x343ebce3
+}
+pointer_reference {
+  id: 0x079ff791
+  kind: POINTER
+  pointee_type_id: 0x343f38db
+}
+pointer_reference {
+  id: 0x07a1ba80
+  kind: POINTER
+  pointee_type_id: 0x34c60c9d
+}
+pointer_reference {
+  id: 0x07a3ea55
+  kind: POINTER
+  pointee_type_id: 0x34cf4fc9
+}
+pointer_reference {
+  id: 0x07a6d412
+  kind: POINTER
+  pointee_type_id: 0x34dbb6d7
+}
+pointer_reference {
+  id: 0x07ab7e35
+  kind: POINTER
+  pointee_type_id: 0x34ed1e4a
+}
+pointer_reference {
+  id: 0x07b17cd6
+  kind: POINTER
+  pointee_type_id: 0x348515c6
+}
+pointer_reference {
+  id: 0x07b663b3
+  kind: POINTER
+  pointee_type_id: 0x34996851
+}
+pointer_reference {
+  id: 0x07bd3565
+  kind: POINTER
+  pointee_type_id: 0x34b43309
+}
+pointer_reference {
+  id: 0x07c58d49
+  kind: POINTER
+  pointee_type_id: 0x3556d3b8
+}
+pointer_reference {
+  id: 0x07cd6778
+  kind: POINTER
+  pointee_type_id: 0x35757b7f
+}
+pointer_reference {
+  id: 0x07cece0f
+  kind: POINTER
+  pointee_type_id: 0x357bdea2
+}
+pointer_reference {
+  id: 0x07dcdbe1
+  kind: POINTER
+  pointee_type_id: 0x35338919
+}
+pointer_reference {
+  id: 0x07ea77cd
+  kind: POINTER
+  pointee_type_id: 0x35e939a9
+}
+pointer_reference {
+  id: 0x07eb840a
+  kind: POINTER
+  pointee_type_id: 0x35eef6b5
+}
+pointer_reference {
+  id: 0x07f2af49
+  kind: POINTER
+  pointee_type_id: 0x358a5bb8
+}
+pointer_reference {
+  id: 0x07f5d8a3
+  kind: POINTER
+  pointee_type_id: 0x35978411
+}
+pointer_reference {
+  id: 0x07f9a52e
+  kind: POINTER
+  pointee_type_id: 0x35a67227
+}
+pointer_reference {
+  id: 0x07fec5e7
+  kind: POINTER
+  pointee_type_id: 0x35bbf101
+}
+pointer_reference {
+  id: 0x0801d1b2
+  kind: POINTER
+  pointee_type_id: 0x0a47a056
+}
+pointer_reference {
+  id: 0x08048e62
+  kind: POINTER
+  pointee_type_id: 0x0a52df14
+}
+pointer_reference {
+  id: 0x080fbe64
+  kind: POINTER
+  pointee_type_id: 0x0a7e1f0e
+}
+pointer_reference {
+  id: 0x08113aaf
+  kind: POINTER
+  pointee_type_id: 0x0a040c22
+}
+pointer_reference {
+  id: 0x0811b858
+  kind: POINTER
+  pointee_type_id: 0x0a0607fc
+}
+pointer_reference {
+  id: 0x0814e9f6
+  kind: POINTER
+  pointee_type_id: 0x0a134144
+}
+pointer_reference {
+  id: 0x08198c9a
+  kind: POINTER
+  pointee_type_id: 0x0a26d4f5
+}
+pointer_reference {
+  id: 0x0819c1d1
+  kind: POINTER
+  pointee_type_id: 0x0a27e1da
+}
+pointer_reference {
+  id: 0x08258287
+  kind: POINTER
+  pointee_type_id: 0x0ad6ec83
+}
+pointer_reference {
+  id: 0x082be49e
+  kind: POINTER
+  pointee_type_id: 0x0aef74e6
+}
+pointer_reference {
+  id: 0x08326638
+  kind: POINTER
+  pointee_type_id: 0x0a897e7f
+}
+pointer_reference {
+  id: 0x08378349
+  kind: POINTER
+  pointee_type_id: 0x0a9eebba
+}
+pointer_reference {
+  id: 0x083bdf25
+  kind: POINTER
+  pointee_type_id: 0x0aaf9a0a
+}
+pointer_reference {
+  id: 0x084d74bf
+  kind: POINTER
+  pointee_type_id: 0x0b753461
+}
+pointer_reference {
+  id: 0x084ef4c8
+  kind: POINTER
+  pointee_type_id: 0x0b7b35bf
+}
+pointer_reference {
+  id: 0x0858434c
+  kind: POINTER
+  pointee_type_id: 0x0b21ebae
+}
+pointer_reference {
+  id: 0x08592c37
+  kind: POINTER
+  pointee_type_id: 0x0b245640
+}
+pointer_reference {
+  id: 0x0859a0da
+  kind: POINTER
+  pointee_type_id: 0x0b2665f4
+}
+pointer_reference {
+  id: 0x08670159
+  kind: POINTER
+  pointee_type_id: 0x0bdce3f9
+}
+pointer_reference {
+  id: 0x086a88e1
+  kind: POINTER
+  pointee_type_id: 0x0beac51b
+}
+pointer_reference {
+  id: 0x086a94c1
+  kind: POINTER
+  pointee_type_id: 0x0beab59b
+}
+pointer_reference {
+  id: 0x086cc0f7
+  kind: POINTER
+  pointee_type_id: 0x0bf3e543
+}
+pointer_reference {
+  id: 0x08726ccc
+  kind: POINTER
+  pointee_type_id: 0x0b8955af
+}
+pointer_reference {
+  id: 0x0875ce41
+  kind: POINTER
+  pointee_type_id: 0x0b97df98
+}
+pointer_reference {
+  id: 0x087aa58e
+  kind: POINTER
+  pointee_type_id: 0x0baa70a7
+}
+pointer_reference {
+  id: 0x087ad34b
+  kind: POINTER
+  pointee_type_id: 0x0bababb1
+}
+pointer_reference {
+  id: 0x0886919f
+  kind: POINTER
+  pointee_type_id: 0x085aa0e0
+}
+pointer_reference {
+  id: 0x08932257
+  kind: POINTER
+  pointee_type_id: 0x080c6fc2
+}
+pointer_reference {
+  id: 0x08956bf0
+  kind: POINTER
+  pointee_type_id: 0x0815495d
+}
+pointer_reference {
+  id: 0x089ac080
+  kind: POINTER
+  pointee_type_id: 0x082be49e
+}
+pointer_reference {
+  id: 0x089b0ad3
+  kind: POINTER
+  pointee_type_id: 0x082ccdd1
+}
+pointer_reference {
+  id: 0x08a8dfa4
+  kind: POINTER
+  pointee_type_id: 0x08e3980f
+}
+pointer_reference {
+  id: 0x08ae8525
+  kind: POINTER
+  pointee_type_id: 0x08faf209
+}
+pointer_reference {
+  id: 0x08b3c132
+  kind: POINTER
+  pointee_type_id: 0x088fe257
+}
+pointer_reference {
+  id: 0x08ba388c
+  kind: POINTER
+  pointee_type_id: 0x08a804af
+}
+pointer_reference {
+  id: 0x08bd7371
+  kind: POINTER
+  pointee_type_id: 0x08b52b5b
+}
+pointer_reference {
+  id: 0x08c085d5
+  kind: POINTER
+  pointee_type_id: 0x0942f1ca
+}
+pointer_reference {
+  id: 0x08dcfb76
+  kind: POINTER
+  pointee_type_id: 0x09330b45
+}
+pointer_reference {
+  id: 0x08e43718
+  kind: POINTER
+  pointee_type_id: 0x09d03afd
+}
+pointer_reference {
+  id: 0x08e950e0
+  kind: POINTER
+  pointee_type_id: 0x09e5a51f
+}
+pointer_reference {
+  id: 0x08e97c95
+  kind: POINTER
+  pointee_type_id: 0x09e514cb
+}
+pointer_reference {
+  id: 0x08ea582b
+  kind: POINTER
+  pointee_type_id: 0x09e98633
+}
+pointer_reference {
+  id: 0x08ee566e
+  kind: POINTER
+  pointee_type_id: 0x09f9bf26
+}
+pointer_reference {
+  id: 0x08f34b70
+  kind: POINTER
+  pointee_type_id: 0x098dcb5d
+}
+pointer_reference {
+  id: 0x08f8b95d
+  kind: POINTER
+  pointee_type_id: 0x09a203e8
+}
+pointer_reference {
+  id: 0x08faf209
+  kind: POINTER
+  pointee_type_id: 0x09ab2eb8
+}
+pointer_reference {
+  id: 0x08fced89
+  kind: POINTER
+  pointee_type_id: 0x09b350b9
+}
+pointer_reference {
+  id: 0x09058aff
+  kind: POINTER
+  pointee_type_id: 0x0e56cd62
+}
+pointer_reference {
+  id: 0x090ad01a
+  kind: POINTER
+  pointee_type_id: 0x0e6ba6f7
+}
+pointer_reference {
+  id: 0x09145866
+  kind: POINTER
+  pointee_type_id: 0x0e118705
+}
+pointer_reference {
+  id: 0x0917901f
+  kind: POINTER
+  pointee_type_id: 0x0e1ea6e1
+}
+pointer_reference {
+  id: 0x091e447b
+  kind: POINTER
+  pointee_type_id: 0x0e39f770
+}
+pointer_reference {
+  id: 0x091f4a0b
+  kind: POINTER
+  pointee_type_id: 0x0e3dceb2
+}
+pointer_reference {
+  id: 0x092632cb
+  kind: POINTER
+  pointee_type_id: 0x0ed82db2
+}
+pointer_reference {
+  id: 0x0928cefb
+  kind: POINTER
+  pointee_type_id: 0x0ee3dd73
+}
+pointer_reference {
+  id: 0x09290a47
+  kind: POINTER
+  pointee_type_id: 0x0ee4cf81
+}
+pointer_reference {
+  id: 0x092a0312
+  kind: POINTER
+  pointee_type_id: 0x0ee8ead6
+}
+pointer_reference {
+  id: 0x093024fc
+  kind: POINTER
+  pointee_type_id: 0x0e80756d
+}
+pointer_reference {
+  id: 0x0930c6d9
+  kind: POINTER
+  pointee_type_id: 0x0e83fdf9
+}
+pointer_reference {
+  id: 0x09319f13
+  kind: POINTER
+  pointee_type_id: 0x0e869ad2
+}
+pointer_reference {
+  id: 0x09427c40
+  kind: POINTER
+  pointee_type_id: 0x0f49179e
+}
+pointer_reference {
+  id: 0x0942f1ca
+  kind: POINTER
+  pointee_type_id: 0x0f4b21b6
+}
+pointer_reference {
+  id: 0x09451098
+  kind: POINTER
+  pointee_type_id: 0x0f54a4fe
+}
+pointer_reference {
+  id: 0x09483d5e
+  kind: POINTER
+  pointee_type_id: 0x0f6013e7
+}
+pointer_reference {
+  id: 0x09484746
+  kind: POINTER
+  pointee_type_id: 0x0f61fb85
+}
+pointer_reference {
+  id: 0x094e2874
+  kind: POINTER
+  pointee_type_id: 0x0f78474f
+}
+pointer_reference {
+  id: 0x095a3c37
+  kind: POINTER
+  pointee_type_id: 0x0f281641
+}
+pointer_reference {
+  id: 0x09626b7f
+  kind: POINTER
+  pointee_type_id: 0x0fc94b61
+}
+pointer_reference {
+  id: 0x097315c2
+  kind: POINTER
+  pointee_type_id: 0x0f8cb195
+}
+pointer_reference {
+  id: 0x097a80cb
+  kind: POINTER
+  pointee_type_id: 0x0faae5b1
+}
+pointer_reference {
+  id: 0x0980a662
+  kind: POINTER
+  pointee_type_id: 0x0c427f17
+}
+pointer_reference {
+  id: 0x09840c73
+  kind: POINTER
+  pointee_type_id: 0x0c50d752
+}
+pointer_reference {
+  id: 0x099bbff0
+  kind: POINTER
+  pointee_type_id: 0x0c2e195c
+}
+pointer_reference {
+  id: 0x099fec03
+  kind: POINTER
+  pointee_type_id: 0x0c3f5690
+}
+pointer_reference {
+  id: 0x09a1684b
+  kind: POINTER
+  pointee_type_id: 0x0cc547b2
+}
+pointer_reference {
+  id: 0x09a83f1c
+  kind: POINTER
+  pointee_type_id: 0x0ce01aef
+}
+pointer_reference {
+  id: 0x09adb9f4
+  kind: POINTER
+  pointee_type_id: 0x0cf6014f
+}
+pointer_reference {
+  id: 0x09aeeb78
+  kind: POINTER
+  pointee_type_id: 0x0cfb4b7c
+}
+pointer_reference {
+  id: 0x09af8dc9
+  kind: POINTER
+  pointee_type_id: 0x0cfed1bb
+}
+pointer_reference {
+  id: 0x09bb9b7e
+  kind: POINTER
+  pointee_type_id: 0x0cae8b66
+}
+pointer_reference {
+  id: 0x09ca1cbc
+  kind: POINTER
+  pointee_type_id: 0x0d68946d
+}
+pointer_reference {
+  id: 0x09caea1f
+  kind: POINTER
+  pointee_type_id: 0x0d6b4ee3
+}
+pointer_reference {
+  id: 0x09cba26d
+  kind: POINTER
+  pointee_type_id: 0x0d6e6f2b
+}
+pointer_reference {
+  id: 0x09d43868
+  kind: POINTER
+  pointee_type_id: 0x0d10073d
+}
+pointer_reference {
+  id: 0x09e10e1f
+  kind: POINTER
+  pointee_type_id: 0x0dc4dee3
+}
+pointer_reference {
+  id: 0x09e67e75
+  kind: POINTER
+  pointee_type_id: 0x0dd91f48
+}
+pointer_reference {
+  id: 0x09f1b886
+  kind: POINTER
+  pointee_type_id: 0x0d860487
+}
+pointer_reference {
+  id: 0x09f23ef0
+  kind: POINTER
+  pointee_type_id: 0x0d881d5f
+}
+pointer_reference {
+  id: 0x09f6f4fd
+  kind: POINTER
+  pointee_type_id: 0x0d9b3569
+}
+pointer_reference {
+  id: 0x09f7911c
+  kind: POINTER
+  pointee_type_id: 0x0d9ea2ee
+}
+pointer_reference {
+  id: 0x0a0607fc
+  kind: POINTER
+  pointee_type_id: 0x0258f96e
+}
+pointer_reference {
+  id: 0x0a134144
+  kind: POINTER
+  pointee_type_id: 0x020de38d
+}
+pointer_reference {
+  id: 0x0a193bb7
+  kind: POINTER
+  pointee_type_id: 0x02240842
+}
+pointer_reference {
+  id: 0x0a1d1ec5
+  kind: POINTER
+  pointee_type_id: 0x02349d89
+}
+pointer_reference {
+  id: 0x0a1ec4ff
+  kind: POINTER
+  pointee_type_id: 0x023bf562
+}
+pointer_reference {
+  id: 0x0a1edf98
+  kind: POINTER
+  pointee_type_id: 0x023b98ff
+}
+pointer_reference {
+  id: 0x0a224652
+  kind: POINTER
+  pointee_type_id: 0x02c9ffd5
+}
+pointer_reference {
+  id: 0x0a22a423
+  kind: POINTER
+  pointee_type_id: 0x02ca7611
+}
+pointer_reference {
+  id: 0x0a2e002a
+  kind: POINTER
+  pointee_type_id: 0x02f8e635
+}
+pointer_reference {
+  id: 0x0a2e9ae5
+  kind: POINTER
+  pointee_type_id: 0x02fa8d0a
+}
+pointer_reference {
+  id: 0x0a47a056
+  kind: POINTER
+  pointee_type_id: 0x035e67c4
+}
+pointer_reference {
+  id: 0x0a4d20f4
+  kind: POINTER
+  pointee_type_id: 0x0374654c
+}
+pointer_reference {
+  id: 0x0a4e4698
+  kind: POINTER
+  pointee_type_id: 0x0379fcff
+}
+pointer_reference {
+  id: 0x0a52df14
+  kind: POINTER
+  pointee_type_id: 0x030b9acf
+}
+pointer_reference {
+  id: 0x0a539f05
+  kind: POINTER
+  pointee_type_id: 0x030e9a89
+}
+pointer_reference {
+  id: 0x0a5daefb
+  kind: POINTER
+  pointee_type_id: 0x03365d70
+}
+pointer_reference {
+  id: 0x0a63398f
+  kind: POINTER
+  pointee_type_id: 0x03cc00a2
+}
+pointer_reference {
+  id: 0x0a6c2073
+  kind: POINTER
+  pointee_type_id: 0x03f06751
+}
+pointer_reference {
+  id: 0x0a747547
+  kind: POINTER
+  pointee_type_id: 0x03913382
+}
+pointer_reference {
+  id: 0x0a749c2b
+  kind: POINTER
+  pointee_type_id: 0x03929630
+}
+pointer_reference {
+  id: 0x0a7642a8
+  kind: POINTER
+  pointee_type_id: 0x0399ec3e
+}
+pointer_reference {
+  id: 0x0a812782
+  kind: POINTER
+  pointee_type_id: 0x00447895
+}
+pointer_reference {
+  id: 0x0a85fcb6
+  kind: POINTER
+  pointee_type_id: 0x00571446
+}
+pointer_reference {
+  id: 0x0a8f9a9e
+  kind: POINTER
+  pointee_type_id: 0x007e8ce4
+}
+pointer_reference {
+  id: 0x0a93f86f
+  kind: POINTER
+  pointee_type_id: 0x000f0722
+}
+pointer_reference {
+  id: 0x0a9a051a
+  kind: POINTER
+  pointee_type_id: 0x0028f2f5
+}
+pointer_reference {
+  id: 0x0aa1f0ee
+  kind: POINTER
+  pointee_type_id: 0x00c72527
+}
+pointer_reference {
+  id: 0x0aa5309c
+  kind: POINTER
+  pointee_type_id: 0x00d424ec
+}
+pointer_reference {
+  id: 0x0aa6efc8
+  kind: POINTER
+  pointee_type_id: 0x00db59bc
+}
+pointer_reference {
+  id: 0x0ab1f084
+  kind: POINTER
+  pointee_type_id: 0x0087248c
+}
+pointer_reference {
+  id: 0x0ab21434
+  kind: POINTER
+  pointee_type_id: 0x0088b64d
+}
+pointer_reference {
+  id: 0x0ab98c04
+  kind: POINTER
+  pointee_type_id: 0x00a6d68e
+}
+pointer_reference {
+  id: 0x0ab9fa4c
+  kind: POINTER
+  pointee_type_id: 0x00a70faf
+}
+pointer_reference {
+  id: 0x0ac23bc5
+  kind: POINTER
+  pointee_type_id: 0x0148098b
+}
+pointer_reference {
+  id: 0x0acb01fe
+  kind: POINTER
+  pointee_type_id: 0x016ce165
+}
+pointer_reference {
+  id: 0x0acf471f
+  kind: POINTER
+  pointee_type_id: 0x017dfae3
+}
+pointer_reference {
+  id: 0x0ad8b278
+  kind: POINTER
+  pointee_type_id: 0x01222f7d
+}
+pointer_reference {
+  id: 0x0adae251
+  kind: POINTER
+  pointee_type_id: 0x012b6fd9
+}
+pointer_reference {
+  id: 0x0ade0ae7
+  kind: POINTER
+  pointee_type_id: 0x0138cd02
+}
+pointer_reference {
+  id: 0x0ae4a2c7
+  kind: POINTER
+  pointee_type_id: 0x01d26d83
+}
+pointer_reference {
+  id: 0x0ae4cc78
+  kind: POINTER
+  pointee_type_id: 0x01d3d77e
+}
+pointer_reference {
+  id: 0x0aee7ba0
+  kind: POINTER
+  pointee_type_id: 0x01f9081c
+}
+pointer_reference {
+  id: 0x0aee8ed6
+  kind: POINTER
+  pointee_type_id: 0x01faddc4
+}
+pointer_reference {
+  id: 0x0aeec5e6
+  kind: POINTER
+  pointee_type_id: 0x01fbf104
+}
+pointer_reference {
+  id: 0x0af69844
+  kind: POINTER
+  pointee_type_id: 0x019a878e
+}
+pointer_reference {
+  id: 0x0afbbe2b
+  kind: POINTER
+  pointee_type_id: 0x01ae1e33
+}
+pointer_reference {
+  id: 0x0b012462
+  kind: POINTER
+  pointee_type_id: 0x06447717
+}
+pointer_reference {
+  id: 0x0b036186
+  kind: POINTER
+  pointee_type_id: 0x064d6086
+}
+pointer_reference {
+  id: 0x0b06c88d
+  kind: POINTER
+  pointee_type_id: 0x065bc4a9
+}
+pointer_reference {
+  id: 0x0b0dddba
+  kind: POINTER
+  pointee_type_id: 0x06779076
+}
+pointer_reference {
+  id: 0x0b0f2b41
+  kind: POINTER
+  pointee_type_id: 0x067c4b9a
+}
+pointer_reference {
+  id: 0x0b11a1e3
+  kind: POINTER
+  pointee_type_id: 0x06066110
+}
+pointer_reference {
+  id: 0x0b131b04
+  kind: POINTER
+  pointee_type_id: 0x060c8a8c
+}
+pointer_reference {
+  id: 0x0b1c4148
+  kind: POINTER
+  pointee_type_id: 0x0631e3bf
+}
+pointer_reference {
+  id: 0x0b209cbf
+  kind: POINTER
+  pointee_type_id: 0x06c29462
+}
+pointer_reference {
+  id: 0x0b245640
+  kind: POINTER
+  pointee_type_id: 0x06d1bf9c
+}
+pointer_reference {
+  id: 0x0b2665f4
+  kind: POINTER
+  pointee_type_id: 0x06d9714e
+}
+pointer_reference {
+  id: 0x0b27dc43
+  kind: POINTER
+  pointee_type_id: 0x06df9791
+}
+pointer_reference {
+  id: 0x0b30e1c5
+  kind: POINTER
+  pointee_type_id: 0x0683618a
+}
+pointer_reference {
+  id: 0x0b30ee00
+  kind: POINTER
+  pointee_type_id: 0x06835e9c
+}
+pointer_reference {
+  id: 0x0b343e69
+  kind: POINTER
+  pointee_type_id: 0x06901f39
+}
+pointer_reference {
+  id: 0x0b3476b2
+  kind: POINTER
+  pointee_type_id: 0x06913c57
+}
+pointer_reference {
+  id: 0x0b395893
+  kind: POINTER
+  pointee_type_id: 0x06a584d3
+}
+pointer_reference {
+  id: 0x0b3a3706
+  kind: POINTER
+  pointee_type_id: 0x06a83a86
+}
+pointer_reference {
+  id: 0x0b45b380
+  kind: POINTER
+  pointee_type_id: 0x0756289d
+}
+pointer_reference {
+  id: 0x0b4ebfc7
+  kind: POINTER
+  pointee_type_id: 0x077a1980
+}
+pointer_reference {
+  id: 0x0b4f136e
+  kind: POINTER
+  pointee_type_id: 0x077cab24
+}
+pointer_reference {
+  id: 0x0b540cb3
+  kind: POINTER
+  pointee_type_id: 0x0710d451
+}
+pointer_reference {
+  id: 0x0b553223
+  kind: POINTER
+  pointee_type_id: 0x07142e13
+}
+pointer_reference {
+  id: 0x0b561305
+  kind: POINTER
+  pointee_type_id: 0x0718aa8b
+}
+pointer_reference {
+  id: 0x0b57ce4e
+  kind: POINTER
+  pointee_type_id: 0x071fdfa7
+}
+pointer_reference {
+  id: 0x0b59f310
+  kind: POINTER
+  pointee_type_id: 0x07272add
+}
+pointer_reference {
+  id: 0x0b70fc18
+  kind: POINTER
+  pointee_type_id: 0x078316ff
+}
+pointer_reference {
+  id: 0x0b716c32
+  kind: POINTER
+  pointee_type_id: 0x07855656
+}
+pointer_reference {
+  id: 0x0b71f929
+  kind: POINTER
+  pointee_type_id: 0x0787023a
+}
+pointer_reference {
+  id: 0x0b756bd6
+  kind: POINTER
+  pointee_type_id: 0x079549c7
+}
+pointer_reference {
+  id: 0x0b77f3e1
+  kind: POINTER
+  pointee_type_id: 0x079f291a
+}
+pointer_reference {
+  id: 0x0b79de66
+  kind: POINTER
+  pointee_type_id: 0x07a79f04
+}
+pointer_reference {
+  id: 0x0b7a0b83
+  kind: POINTER
+  pointee_type_id: 0x07a8c893
+}
+pointer_reference {
+  id: 0x0b7c4f67
+  kind: POINTER
+  pointee_type_id: 0x07b1db01
+}
+pointer_reference {
+  id: 0x0b85846c
+  kind: POINTER
+  pointee_type_id: 0x0456f72c
+}
+pointer_reference {
+  id: 0x0b8758d9
+  kind: POINTER
+  pointee_type_id: 0x045d85f9
+}
+pointer_reference {
+  id: 0x0b937f67
+  kind: POINTER
+  pointee_type_id: 0x040d1b01
+}
+pointer_reference {
+  id: 0x0b9eae09
+  kind: POINTER
+  pointee_type_id: 0x043a5ebb
+}
+pointer_reference {
+  id: 0x0b9f3953
+  kind: POINTER
+  pointee_type_id: 0x043c03d0
+}
+pointer_reference {
+  id: 0x0b9fe7dd
+  kind: POINTER
+  pointee_type_id: 0x043f79eb
+}
+pointer_reference {
+  id: 0x0baf61c0
+  kind: POINTER
+  pointee_type_id: 0x04fd619c
+}
+pointer_reference {
+  id: 0x0bb04528
+  kind: POINTER
+  pointee_type_id: 0x0481f23c
+}
+pointer_reference {
+  id: 0x0bb0c019
+  kind: POINTER
+  pointee_type_id: 0x0483e6f8
+}
+pointer_reference {
+  id: 0x0bb4e60f
+  kind: POINTER
+  pointee_type_id: 0x04937ea2
+}
+pointer_reference {
+  id: 0x0bba7efd
+  kind: POINTER
+  pointee_type_id: 0x04a91d68
+}
+pointer_reference {
+  id: 0x0bbc5d54
+  kind: POINTER
+  pointee_type_id: 0x04b193cc
+}
+pointer_reference {
+  id: 0x0bbe1c3e
+  kind: POINTER
+  pointee_type_id: 0x04b89667
+}
+pointer_reference {
+  id: 0x0bc3e3e1
+  kind: POINTER
+  pointee_type_id: 0x054f691a
+}
+pointer_reference {
+  id: 0x0bcce092
+  kind: POINTER
+  pointee_type_id: 0x057364d7
+}
+pointer_reference {
+  id: 0x0bd74aeb
+  kind: POINTER
+  pointee_type_id: 0x051dcd31
+}
+pointer_reference {
+  id: 0x0bdbd2a7
+  kind: POINTER
+  pointee_type_id: 0x052fac00
+}
+pointer_reference {
+  id: 0x0bdd2cf8
+  kind: POINTER
+  pointee_type_id: 0x0534557d
+}
+pointer_reference {
+  id: 0x0be1cf6e
+  kind: POINTER
+  pointee_type_id: 0x05c7db24
+}
+pointer_reference {
+  id: 0x0be3257b
+  kind: POINTER
+  pointee_type_id: 0x05cc7373
+}
+pointer_reference {
+  id: 0x0beab59b
+  kind: POINTER
+  pointee_type_id: 0x05ea30f1
+}
+pointer_reference {
+  id: 0x0beac51b
+  kind: POINTER
+  pointee_type_id: 0x05ebf2f3
+}
+pointer_reference {
+  id: 0x0bf1a65b
+  kind: POINTER
+  pointee_type_id: 0x05867ff1
+}
+pointer_reference {
+  id: 0x0bf2067d
+  kind: POINTER
+  pointee_type_id: 0x0588ff69
+}
+pointer_reference {
+  id: 0x0bf6beaf
+  kind: POINTER
+  pointee_type_id: 0x059a1c22
+}
+pointer_reference {
+  id: 0x0bfc9031
+  kind: POINTER
+  pointee_type_id: 0x05b2a65b
+}
+pointer_reference {
+  id: 0x0c06ce3c
+  kind: POINTER
+  pointee_type_id: 0x1a5bde6f
+}
+pointer_reference {
+  id: 0x0c0741c0
+  kind: POINTER
+  pointee_type_id: 0x1a5de19e
+}
+pointer_reference {
+  id: 0x0c080ab3
+  kind: POINTER
+  pointee_type_id: 0x1a60cc51
+}
+pointer_reference {
+  id: 0x0c08e6c9
+  kind: POINTER
+  pointee_type_id: 0x1a637dbb
+}
+pointer_reference {
+  id: 0x0c0aa344
+  kind: POINTER
+  pointee_type_id: 0x1a6a6b8f
+}
+pointer_reference {
+  id: 0x0c0ba82e
+  kind: POINTER
+  pointee_type_id: 0x1a6e4625
+}
+pointer_reference {
+  id: 0x0c0c13d2
+  kind: POINTER
+  pointee_type_id: 0x1a70a9d4
+}
+pointer_reference {
+  id: 0x0c0dfa25
+  kind: POINTER
+  pointee_type_id: 0x1a770e0b
+}
+pointer_reference {
+  id: 0x0c0e84bd
+  kind: POINTER
+  pointee_type_id: 0x1a7af469
+}
+pointer_reference {
+  id: 0x0c0edcf8
+  kind: POINTER
+  pointee_type_id: 0x1a7b957f
+}
+pointer_reference {
+  id: 0x0c0fd801
+  kind: POINTER
+  pointee_type_id: 0x1a7f8698
+}
+pointer_reference {
+  id: 0x0c12eb7b
+  kind: POINTER
+  pointee_type_id: 0x1a0b4b72
+}
+pointer_reference {
+  id: 0x0c142dcf
+  kind: POINTER
+  pointee_type_id: 0x1a1051a0
+}
+pointer_reference {
+  id: 0x0c15b27a
+  kind: POINTER
+  pointee_type_id: 0x1a162f77
+}
+pointer_reference {
+  id: 0x0c1663ae
+  kind: POINTER
+  pointee_type_id: 0x1a196826
+}
+pointer_reference {
+  id: 0x0c166597
+  kind: POINTER
+  pointee_type_id: 0x1a1970c3
+}
+pointer_reference {
+  id: 0x0c16b659
+  kind: POINTER
+  pointee_type_id: 0x1a1a3ffb
+}
+pointer_reference {
+  id: 0x0c17a1e0
+  kind: POINTER
+  pointee_type_id: 0x1a1e611d
+}
+pointer_reference {
+  id: 0x0c194751
+  kind: POINTER
+  pointee_type_id: 0x1a25fbdb
+}
+pointer_reference {
+  id: 0x0c1a25d8
+  kind: POINTER
+  pointee_type_id: 0x1a2871ff
+}
+pointer_reference {
+  id: 0x0c1b7d55
+  kind: POINTER
+  pointee_type_id: 0x1a2d13ca
+}
+pointer_reference {
+  id: 0x0c1c40a3
+  kind: POINTER
+  pointee_type_id: 0x1a31e412
+}
+pointer_reference {
+  id: 0x0c1efc10
+  kind: POINTER
+  pointee_type_id: 0x1a3b16dd
+}
+pointer_reference {
+  id: 0x0c23d1c8
+  kind: POINTER
+  pointee_type_id: 0x1acfa1bf
+}
+pointer_reference {
+  id: 0x0c24968f
+  kind: POINTER
+  pointee_type_id: 0x1ad2bca0
+}
+pointer_reference {
+  id: 0x0c24e6e5
+  kind: POINTER
+  pointee_type_id: 0x1ad37d09
+}
+pointer_reference {
+  id: 0x0c252e30
+  kind: POINTER
+  pointee_type_id: 0x1ad45e5f
+}
+pointer_reference {
+  id: 0x0c254fa0
+  kind: POINTER
+  pointee_type_id: 0x1ad5d81c
+}
+pointer_reference {
+  id: 0x0c27c566
+  kind: POINTER
+  pointee_type_id: 0x1adff305
+}
+pointer_reference {
+  id: 0x0c293c0a
+  kind: POINTER
+  pointee_type_id: 0x1ae416b5
+}
+pointer_reference {
+  id: 0x0c2a4dc8
+  kind: POINTER
+  pointee_type_id: 0x1ae9d1bd
+}
+pointer_reference {
+  id: 0x0c2e195c
+  kind: POINTER
+  pointee_type_id: 0x1af883ec
+}
+pointer_reference {
+  id: 0x0c2f924e
+  kind: POINTER
+  pointee_type_id: 0x1afeafa7
+}
+pointer_reference {
+  id: 0x0c303447
+  kind: POINTER
+  pointee_type_id: 0x1a803783
+}
+pointer_reference {
+  id: 0x0c307972
+  kind: POINTER
+  pointee_type_id: 0x1a810356
+}
+pointer_reference {
+  id: 0x0c313b7d
+  kind: POINTER
+  pointee_type_id: 0x1a840b6a
+}
+pointer_reference {
+  id: 0x0c3286fb
+  kind: POINTER
+  pointee_type_id: 0x1a8afd70
+}
+pointer_reference {
+  id: 0x0c337849
+  kind: POINTER
+  pointee_type_id: 0x1a8d07bb
+}
+pointer_reference {
+  id: 0x0c3509f9
+  kind: POINTER
+  pointee_type_id: 0x1a94c17b
+}
+pointer_reference {
+  id: 0x0c35a159
+  kind: POINTER
+  pointee_type_id: 0x1a9663f9
+}
+pointer_reference {
+  id: 0x0c397826
+  kind: POINTER
+  pointee_type_id: 0x1aa50604
+}
+pointer_reference {
+  id: 0x0c3ac0b1
+  kind: POINTER
+  pointee_type_id: 0x1aabe458
+}
+pointer_reference {
+  id: 0x0c3ae02c
+  kind: POINTER
+  pointee_type_id: 0x1aab662c
+}
+pointer_reference {
+  id: 0x0c3ce9b1
+  kind: POINTER
+  pointee_type_id: 0x1ab3405a
+}
+pointer_reference {
+  id: 0x0c3d2d88
+  kind: POINTER
+  pointee_type_id: 0x1ab450bd
+}
+pointer_reference {
+  id: 0x0c3e4ee6
+  kind: POINTER
+  pointee_type_id: 0x1ab9dd06
+}
+pointer_reference {
+  id: 0x0c3ee516
+  kind: POINTER
+  pointee_type_id: 0x1abb72c6
+}
+pointer_reference {
+  id: 0x0c3fa226
+  kind: POINTER
+  pointee_type_id: 0x1abe6e05
+}
+pointer_reference {
+  id: 0x0c412faf
+  kind: POINTER
+  pointee_type_id: 0x1b445821
+}
+pointer_reference {
+  id: 0x0c436bab
+  kind: POINTER
+  pointee_type_id: 0x1b4d4832
+}
+pointer_reference {
+  id: 0x0c43d124
+  kind: POINTER
+  pointee_type_id: 0x1b4fa20e
+}
+pointer_reference {
+  id: 0x0c45054d
+  kind: POINTER
+  pointee_type_id: 0x1b54f3ab
+}
+pointer_reference {
+  id: 0x0c451b60
+  kind: POINTER
+  pointee_type_id: 0x1b548b1c
+}
+pointer_reference {
+  id: 0x0c45539b
+  kind: POINTER
+  pointee_type_id: 0x1b55a8f2
+}
+pointer_reference {
+  id: 0x0c45f614
+  kind: POINTER
+  pointee_type_id: 0x1b573ecd
+}
+pointer_reference {
+  id: 0x0c467c34
+  kind: POINTER
+  pointee_type_id: 0x1b59164d
+}
+pointer_reference {
+  id: 0x0c472572
+  kind: POINTER
+  pointee_type_id: 0x1b5c7355
+}
+pointer_reference {
+  id: 0x0c475b25
+  kind: POINTER
+  pointee_type_id: 0x1b5d8a09
+}
+pointer_reference {
+  id: 0x0c4761b6
+  kind: POINTER
+  pointee_type_id: 0x1b5d6044
+}
+pointer_reference {
+  id: 0x0c47e7d1
+  kind: POINTER
+  pointee_type_id: 0x1b5f79d9
+}
+pointer_reference {
+  id: 0x0c485c36
+  kind: POINTER
+  pointee_type_id: 0x1b619644
+}
+pointer_reference {
+  id: 0x0c48c037
+  kind: POINTER
+  pointee_type_id: 0x1b63e640
+}
+pointer_reference {
+  id: 0x0c4921a9
+  kind: POINTER
+  pointee_type_id: 0x1b646039
+}
+pointer_reference {
+  id: 0x0c4a5150
+  kind: POINTER
+  pointee_type_id: 0x1b69a3de
+}
+pointer_reference {
+  id: 0x0c4b1d9d
+  kind: POINTER
+  pointee_type_id: 0x1b6c90e9
+}
+pointer_reference {
+  id: 0x0c4d6d1b
+  kind: POINTER
+  pointee_type_id: 0x1b7552f1
+}
+pointer_reference {
+  id: 0x0c4d6f90
+  kind: POINTER
+  pointee_type_id: 0x1b7558dd
+}
+pointer_reference {
+  id: 0x0c4dca68
+  kind: POINTER
+  pointee_type_id: 0x1b77cf3e
+}
+pointer_reference {
+  id: 0x0c55d62d
+  kind: POINTER
+  pointee_type_id: 0x1b17be29
+}
+pointer_reference {
+  id: 0x0c560434
+  kind: POINTER
+  pointee_type_id: 0x1b18f64e
+}
+pointer_reference {
+  id: 0x0c56e1ee
+  kind: POINTER
+  pointee_type_id: 0x1b1b6127
+}
+pointer_reference {
+  id: 0x0c577b6c
+  kind: POINTER
+  pointee_type_id: 0x1b1d0b2e
+}
+pointer_reference {
+  id: 0x0c596e35
+  kind: POINTER
+  pointee_type_id: 0x1b255e4a
+}
+pointer_reference {
+  id: 0x0c59c5c5
+  kind: POINTER
+  pointee_type_id: 0x1b27f18a
+}
+pointer_reference {
+  id: 0x0c5a56fb
+  kind: POINTER
+  pointee_type_id: 0x1b29bd73
+}
+pointer_reference {
+  id: 0x0c5d3f24
+  kind: POINTER
+  pointee_type_id: 0x1b341a0e
+}
+pointer_reference {
+  id: 0x0c5d6702
+  kind: POINTER
+  pointee_type_id: 0x1b357a97
+}
+pointer_reference {
+  id: 0x0c5e7fed
+  kind: POINTER
+  pointee_type_id: 0x1b39192a
+}
+pointer_reference {
+  id: 0x0c5ef833
+  kind: POINTER
+  pointee_type_id: 0x1b3b0652
+}
+pointer_reference {
+  id: 0x0c5f174a
+  kind: POINTER
+  pointee_type_id: 0x1b3cbbb4
+}
+pointer_reference {
+  id: 0x0c5f67dd
+  kind: POINTER
+  pointee_type_id: 0x1b3d79eb
+}
+pointer_reference {
+  id: 0x0c5fa023
+  kind: POINTER
+  pointee_type_id: 0x1b3e6610
+}
+pointer_reference {
+  id: 0x0c606113
+  kind: POINTER
+  pointee_type_id: 0x1bc162d2
+}
+pointer_reference {
+  id: 0x0c60f8c3
+  kind: POINTER
+  pointee_type_id: 0x1bc30592
+}
+pointer_reference {
+  id: 0x0c610495
+  kind: POINTER
+  pointee_type_id: 0x1bc4f4c8
+}
+pointer_reference {
+  id: 0x0c617cb4
+  kind: POINTER
+  pointee_type_id: 0x1bc5144e
+}
+pointer_reference {
+  id: 0x0c618ab8
+  kind: POINTER
+  pointee_type_id: 0x1bc6cc7f
+}
+pointer_reference {
+  id: 0x0c620fb9
+  kind: POINTER
+  pointee_type_id: 0x1bc8d87a
+}
+pointer_reference {
+  id: 0x0c6248d2
+  kind: POINTER
+  pointee_type_id: 0x1bc9c5d4
+}
+pointer_reference {
+  id: 0x0c631eb2
+  kind: POINTER
+  pointee_type_id: 0x1bcc9c54
+}
+pointer_reference {
+  id: 0x0c6351ef
+  kind: POINTER
+  pointee_type_id: 0x1bcda123
+}
+pointer_reference {
+  id: 0x0c63b27b
+  kind: POINTER
+  pointee_type_id: 0x1bce2f71
+}
+pointer_reference {
+  id: 0x0c645464
+  kind: POINTER
+  pointee_type_id: 0x1bd1b70e
+}
+pointer_reference {
+  id: 0x0c679fc6
+  kind: POINTER
+  pointee_type_id: 0x1bde9985
+}
+pointer_reference {
+  id: 0x0c699137
+  kind: POINTER
+  pointee_type_id: 0x1be6a241
+}
+pointer_reference {
+  id: 0x0c6bcde0
+  kind: POINTER
+  pointee_type_id: 0x1befd11c
+}
+pointer_reference {
+  id: 0x0c6c61ad
+  kind: POINTER
+  pointee_type_id: 0x1bf16028
+}
+pointer_reference {
+  id: 0x0c6d167e
+  kind: POINTER
+  pointee_type_id: 0x1bf4bf66
+}
+pointer_reference {
+  id: 0x0c6d8d57
+  kind: POINTER
+  pointee_type_id: 0x1bf6d3c0
+}
+pointer_reference {
+  id: 0x0c6f4368
+  kind: POINTER
+  pointee_type_id: 0x1bfdeb3d
+}
+pointer_reference {
+  id: 0x0c713f3f
+  kind: POINTER
+  pointee_type_id: 0x1b841a62
+}
+pointer_reference {
+  id: 0x0c74ddbe
+  kind: POINTER
+  pointee_type_id: 0x1b939067
+}
+pointer_reference {
+  id: 0x0c786e08
+  kind: POINTER
+  pointee_type_id: 0x1ba15ebc
+}
+pointer_reference {
+  id: 0x0c787416
+  kind: POINTER
+  pointee_type_id: 0x1ba136c5
+}
+pointer_reference {
+  id: 0x0c78d7b8
+  kind: POINTER
+  pointee_type_id: 0x1ba3b87d
+}
+pointer_reference {
+  id: 0x0c7a2294
+  kind: POINTER
+  pointee_type_id: 0x1ba86ccd
+}
+pointer_reference {
+  id: 0x0c7a5193
+  kind: POINTER
+  pointee_type_id: 0x1ba9a0d2
+}
+pointer_reference {
+  id: 0x0c7b1cf1
+  kind: POINTER
+  pointee_type_id: 0x1bac9559
+}
+pointer_reference {
+  id: 0x0c7ce901
+  kind: POINTER
+  pointee_type_id: 0x1bb3429a
+}
+pointer_reference {
+  id: 0x0c868f26
+  kind: POINTER
+  pointee_type_id: 0x185ada07
+}
+pointer_reference {
+  id: 0x0c86a1b1
+  kind: POINTER
+  pointee_type_id: 0x185a605b
+}
+pointer_reference {
+  id: 0x0c86b710
+  kind: POINTER
+  pointee_type_id: 0x185a3adc
+}
+pointer_reference {
+  id: 0x0c86f61b
+  kind: POINTER
+  pointee_type_id: 0x185b3ef2
+}
+pointer_reference {
+  id: 0x0c8766aa
+  kind: POINTER
+  pointee_type_id: 0x185d7c34
+}
+pointer_reference {
+  id: 0x0c87b6a9
+  kind: POINTER
+  pointee_type_id: 0x185e3c3b
+}
+pointer_reference {
+  id: 0x0c892400
+  kind: POINTER
+  pointee_type_id: 0x1864769e
+}
+pointer_reference {
+  id: 0x0c897676
+  kind: POINTER
+  pointee_type_id: 0x18653f44
+}
+pointer_reference {
+  id: 0x0c8d012c
+  kind: POINTER
+  pointee_type_id: 0x1874e22c
+}
+pointer_reference {
+  id: 0x0c8ded5e
+  kind: POINTER
+  pointee_type_id: 0x187753e7
+}
+pointer_reference {
+  id: 0x0c8eb859
+  kind: POINTER
+  pointee_type_id: 0x187a07fb
+}
+pointer_reference {
+  id: 0x0c93cbc1
+  kind: POINTER
+  pointee_type_id: 0x180fc99a
+}
+pointer_reference {
+  id: 0x0c957ac0
+  kind: POINTER
+  pointee_type_id: 0x18150d9f
+}
+pointer_reference {
+  id: 0x0c96a24a
+  kind: POINTER
+  pointee_type_id: 0x181a6fb5
+}
+pointer_reference {
+  id: 0x0c96fb14
+  kind: POINTER
+  pointee_type_id: 0x181b0acd
+}
+pointer_reference {
+  id: 0x0c975eef
+  kind: POINTER
+  pointee_type_id: 0x181d9d22
+}
+pointer_reference {
+  id: 0x0c97f018
+  kind: POINTER
+  pointee_type_id: 0x181f26fe
+}
+pointer_reference {
+  id: 0x0c98988d
+  kind: POINTER
+  pointee_type_id: 0x182284a8
+}
+pointer_reference {
+  id: 0x0c9ac346
+  kind: POINTER
+  pointee_type_id: 0x182beb86
+}
+pointer_reference {
+  id: 0x0c9af3aa
+  kind: POINTER
+  pointee_type_id: 0x182b2835
+}
+pointer_reference {
+  id: 0x0ca120c5
+  kind: POINTER
+  pointee_type_id: 0x18c46588
+}
+pointer_reference {
+  id: 0x0ca205d3
+  kind: POINTER
+  pointee_type_id: 0x18c8f1d0
+}
+pointer_reference {
+  id: 0x0ca27481
+  kind: POINTER
+  pointee_type_id: 0x18c93498
+}
+pointer_reference {
+  id: 0x0ca316ec
+  kind: POINTER
+  pointee_type_id: 0x18ccbd2c
+}
+pointer_reference {
+  id: 0x0ca42ad3
+  kind: POINTER
+  pointee_type_id: 0x18d04dd3
+}
+pointer_reference {
+  id: 0x0ca53ed1
+  kind: POINTER
+  pointee_type_id: 0x18d41dd9
+}
+pointer_reference {
+  id: 0x0ca5cbd8
+  kind: POINTER
+  pointee_type_id: 0x18d7c9fc
+}
+pointer_reference {
+  id: 0x0ca62e19
+  kind: POINTER
+  pointee_type_id: 0x18d85efa
+}
+pointer_reference {
+  id: 0x0ca6443d
+  kind: POINTER
+  pointee_type_id: 0x18d9f669
+}
+pointer_reference {
+  id: 0x0caaa31f
+  kind: POINTER
+  pointee_type_id: 0x18ea6ae3
+}
+pointer_reference {
+  id: 0x0caab0bd
+  kind: POINTER
+  pointee_type_id: 0x18ea2469
+}
+pointer_reference {
+  id: 0x0cadd9f1
+  kind: POINTER
+  pointee_type_id: 0x18f78159
+}
+pointer_reference {
+  id: 0x0cae1786
+  kind: POINTER
+  pointee_type_id: 0x18f8b885
+}
+pointer_reference {
+  id: 0x0cae44df
+  kind: POINTER
+  pointee_type_id: 0x18f9f5e3
+}
+pointer_reference {
+  id: 0x0caff987
+  kind: POINTER
+  pointee_type_id: 0x18ff0083
+}
+pointer_reference {
+  id: 0x0cb02071
+  kind: POINTER
+  pointee_type_id: 0x1880675b
+}
+pointer_reference {
+  id: 0x0cb1ee7b
+  kind: POINTER
+  pointee_type_id: 0x18875f70
+}
+pointer_reference {
+  id: 0x0cb1f3d5
+  kind: POINTER
+  pointee_type_id: 0x188729ca
+}
+pointer_reference {
+  id: 0x0cb21bf1
+  kind: POINTER
+  pointee_type_id: 0x1888895b
+}
+pointer_reference {
+  id: 0x0cb52986
+  kind: POINTER
+  pointee_type_id: 0x18944084
+}
+pointer_reference {
+  id: 0x0cb6ece1
+  kind: POINTER
+  pointee_type_id: 0x189b551a
+}
+pointer_reference {
+  id: 0x0cb7ac99
+  kind: POINTER
+  pointee_type_id: 0x189e54fa
+}
+pointer_reference {
+  id: 0x0cb928b9
+  kind: POINTER
+  pointee_type_id: 0x18a4447a
+}
+pointer_reference {
+  id: 0x0cba3d38
+  kind: POINTER
+  pointee_type_id: 0x18a8127c
+}
+pointer_reference {
+  id: 0x0cbaba94
+  kind: POINTER
+  pointee_type_id: 0x18aa0cce
+}
+pointer_reference {
+  id: 0x0cbb685c
+  kind: POINTER
+  pointee_type_id: 0x18ad47ee
+}
+pointer_reference {
+  id: 0x0cbb9c80
+  kind: POINTER
+  pointee_type_id: 0x18ae949f
+}
+pointer_reference {
+  id: 0x0cbdc3be
+  kind: POINTER
+  pointee_type_id: 0x18b7e866
+}
+pointer_reference {
+  id: 0x0cbe17fd
+  kind: POINTER
+  pointee_type_id: 0x18b8b96a
+}
+pointer_reference {
+  id: 0x0cbe24dc
+  kind: POINTER
+  pointee_type_id: 0x18b875ee
+}
+pointer_reference {
+  id: 0x0cbf60eb
+  kind: POINTER
+  pointee_type_id: 0x18bd6530
+}
+pointer_reference {
+  id: 0x0cc2a6e7
+  kind: POINTER
+  pointee_type_id: 0x194a7d01
+}
+pointer_reference {
+  id: 0x0cc386c1
+  kind: POINTER
+  pointee_type_id: 0x194efd9a
+}
+pointer_reference {
+  id: 0x0cc41004
+  kind: POINTER
+  pointee_type_id: 0x1950a68f
+}
+pointer_reference {
+  id: 0x0cc78943
+  kind: POINTER
+  pointee_type_id: 0x195ec392
+}
+pointer_reference {
+  id: 0x0cc8a431
+  kind: POINTER
+  pointee_type_id: 0x19627659
+}
+pointer_reference {
+  id: 0x0ccaa6cc
+  kind: POINTER
+  pointee_type_id: 0x196a7daf
+}
+pointer_reference {
+  id: 0x0ccb9b16
+  kind: POINTER
+  pointee_type_id: 0x196e8ac4
+}
+pointer_reference {
+  id: 0x0ccc6c48
+  kind: POINTER
+  pointee_type_id: 0x197157bd
+}
+pointer_reference {
+  id: 0x0cce6a6a
+  kind: POINTER
+  pointee_type_id: 0x19794f35
+}
+pointer_reference {
+  id: 0x0cd0749c
+  kind: POINTER
+  pointee_type_id: 0x190134ec
+}
+pointer_reference {
+  id: 0x0cd0a3a7
+  kind: POINTER
+  pointee_type_id: 0x19026802
+}
+pointer_reference {
+  id: 0x0cd1cfb6
+  kind: POINTER
+  pointee_type_id: 0x1907d847
+}
+pointer_reference {
+  id: 0x0cd3272c
+  kind: POINTER
+  pointee_type_id: 0x190c7a2d
+}
+pointer_reference {
+  id: 0x0cd48956
+  kind: POINTER
+  pointee_type_id: 0x1912c3c7
+}
+pointer_reference {
+  id: 0x0cd4a36d
+  kind: POINTER
+  pointee_type_id: 0x19126b2a
+}
+pointer_reference {
+  id: 0x0cd5af0d
+  kind: POINTER
+  pointee_type_id: 0x19165aaa
+}
+pointer_reference {
+  id: 0x0cd75860
+  kind: POINTER
+  pointee_type_id: 0x191d871c
+}
+pointer_reference {
+  id: 0x0cd878db
+  kind: POINTER
+  pointee_type_id: 0x192105f2
+}
+pointer_reference {
+  id: 0x0cd8cb41
+  kind: POINTER
+  pointee_type_id: 0x1923cb99
+}
+pointer_reference {
+  id: 0x0ce07e73
+  kind: POINTER
+  pointee_type_id: 0x19c11f53
+}
+pointer_reference {
+  id: 0x0ce09fd4
+  kind: POINTER
+  pointee_type_id: 0x19c299cd
+}
+pointer_reference {
+  id: 0x0ce121ef
+  kind: POINTER
+  pointee_type_id: 0x19c46120
+}
+pointer_reference {
+  id: 0x0ce1aff5
+  kind: POINTER
+  pointee_type_id: 0x19c6594b
+}
+pointer_reference {
+  id: 0x0ce1fce9
+  kind: POINTER
+  pointee_type_id: 0x19c71538
+}
+pointer_reference {
+  id: 0x0ce23619
+  kind: POINTER
+  pointee_type_id: 0x19c83efb
+}
+pointer_reference {
+  id: 0x0ce30d12
+  kind: POINTER
+  pointee_type_id: 0x19ccd2d6
+}
+pointer_reference {
+  id: 0x0ce5fdb2
+  kind: POINTER
+  pointee_type_id: 0x19d71054
+}
+pointer_reference {
+  id: 0x0ce674ad
+  kind: POINTER
+  pointee_type_id: 0x19d93429
+}
+pointer_reference {
+  id: 0x0ce9a2bb
+  kind: POINTER
+  pointee_type_id: 0x19e66c71
+}
+pointer_reference {
+  id: 0x0ce9d83b
+  kind: POINTER
+  pointee_type_id: 0x19e78670
+}
+pointer_reference {
+  id: 0x0cecd312
+  kind: POINTER
+  pointee_type_id: 0x19f3aad4
+}
+pointer_reference {
+  id: 0x0ced5e19
+  kind: POINTER
+  pointee_type_id: 0x19f59ef9
+}
+pointer_reference {
+  id: 0x0cef4974
+  kind: POINTER
+  pointee_type_id: 0x19fdc34f
+}
+pointer_reference {
+  id: 0x0cefb0c8
+  kind: POINTER
+  pointee_type_id: 0x19fe25be
+}
+pointer_reference {
+  id: 0x0cf07e3c
+  kind: POINTER
+  pointee_type_id: 0x19811e6e
+}
+pointer_reference {
+  id: 0x0cf0f1be
+  kind: POINTER
+  pointee_type_id: 0x19832066
+}
+pointer_reference {
+  id: 0x0cf80951
+  kind: POINTER
+  pointee_type_id: 0x19a0c3db
+}
+pointer_reference {
+  id: 0x0cfa41bd
+  kind: POINTER
+  pointee_type_id: 0x19a9e069
+}
+pointer_reference {
+  id: 0x0cfb4b7c
+  kind: POINTER
+  pointee_type_id: 0x19adcb6c
+}
+pointer_reference {
+  id: 0x0cfba1b9
+  kind: POINTER
+  pointee_type_id: 0x19ae6079
+}
+pointer_reference {
+  id: 0x0cfd9180
+  kind: POINTER
+  pointee_type_id: 0x19b6a09f
+}
+pointer_reference {
+  id: 0x0cfed1bb
+  kind: POINTER
+  pointee_type_id: 0x19bba071
+}
+pointer_reference {
+  id: 0x0cffb85e
+  kind: POINTER
+  pointee_type_id: 0x19be07e4
+}
+pointer_reference {
+  id: 0x0d02f9bc
+  kind: POINTER
+  pointee_type_id: 0x1e4b006d
+}
+pointer_reference {
+  id: 0x0d0374d5
+  kind: POINTER
+  pointee_type_id: 0x1e4d35c9
+}
+pointer_reference {
+  id: 0x0d05fda7
+  kind: POINTER
+  pointee_type_id: 0x1e571002
+}
+pointer_reference {
+  id: 0x0d066629
+  kind: POINTER
+  pointee_type_id: 0x1e597e38
+}
+pointer_reference {
+  id: 0x0d07014d
+  kind: POINTER
+  pointee_type_id: 0x1e5ce3ab
+}
+pointer_reference {
+  id: 0x0d07de88
+  kind: POINTER
+  pointee_type_id: 0x1e5f9cbf
+}
+pointer_reference {
+  id: 0x0d08a1bb
+  kind: POINTER
+  pointee_type_id: 0x1e626071
+}
+pointer_reference {
+  id: 0x0d08d17b
+  kind: POINTER
+  pointee_type_id: 0x1e63a370
+}
+pointer_reference {
+  id: 0x0d0c0bd8
+  kind: POINTER
+  pointee_type_id: 0x1e70c9ff
+}
+pointer_reference {
+  id: 0x0d0d2d0f
+  kind: POINTER
+  pointee_type_id: 0x1e7452a1
+}
+pointer_reference {
+  id: 0x0d0ed0eb
+  kind: POINTER
+  pointee_type_id: 0x1e7ba530
+}
+pointer_reference {
+  id: 0x0d0ed3b6
+  kind: POINTER
+  pointee_type_id: 0x1e7ba845
+}
+pointer_reference {
+  id: 0x0d0f38a7
+  kind: POINTER
+  pointee_type_id: 0x1e7c0401
+}
+pointer_reference {
+  id: 0x0d0f5510
+  kind: POINTER
+  pointee_type_id: 0x1e7db2dc
+}
+pointer_reference {
+  id: 0x0d10073d
+  kind: POINTER
+  pointee_type_id: 0x1e00fa69
+}
+pointer_reference {
+  id: 0x0d104a83
+  kind: POINTER
+  pointee_type_id: 0x1e01cc92
+}
+pointer_reference {
+  id: 0x0d107c2b
+  kind: POINTER
+  pointee_type_id: 0x1e011633
+}
+pointer_reference {
+  id: 0x0d10bc65
+  kind: POINTER
+  pointee_type_id: 0x1e02170b
+}
+pointer_reference {
+  id: 0x0d125723
+  kind: POINTER
+  pointee_type_id: 0x1e09ba11
+}
+pointer_reference {
+  id: 0x0d12f45b
+  kind: POINTER
+  pointee_type_id: 0x1e0b37f3
+}
+pointer_reference {
+  id: 0x0d13aee6
+  kind: POINTER
+  pointee_type_id: 0x1e0e5d07
+}
+pointer_reference {
+  id: 0x0d140f5f
+  kind: POINTER
+  pointee_type_id: 0x1e10dbe0
+}
+pointer_reference {
+  id: 0x0d1480d6
+  kind: POINTER
+  pointee_type_id: 0x1e12e5c6
+}
+pointer_reference {
+  id: 0x0d14b345
+  kind: POINTER
+  pointee_type_id: 0x1e122b88
+}
+pointer_reference {
+  id: 0x0d14f575
+  kind: POINTER
+  pointee_type_id: 0x1e133349
+}
+pointer_reference {
+  id: 0x0d15cee5
+  kind: POINTER
+  pointee_type_id: 0x1e17dd0a
+}
+pointer_reference {
+  id: 0x0d1a07e3
+  kind: POINTER
+  pointee_type_id: 0x1e28f911
+}
+pointer_reference {
+  id: 0x0d1baca2
+  kind: POINTER
+  pointee_type_id: 0x1e2e5417
+}
+pointer_reference {
+  id: 0x0d1ca42d
+  kind: POINTER
+  pointee_type_id: 0x1e327628
+}
+pointer_reference {
+  id: 0x0d1ce346
+  kind: POINTER
+  pointee_type_id: 0x1e336b85
+}
+pointer_reference {
+  id: 0x0d1e1a48
+  kind: POINTER
+  pointee_type_id: 0x1e388fbe
+}
+pointer_reference {
+  id: 0x0d1ea752
+  kind: POINTER
+  pointee_type_id: 0x1e3a7bd4
+}
+pointer_reference {
+  id: 0x0d1edb4c
+  kind: POINTER
+  pointee_type_id: 0x1e3b8bac
+}
+pointer_reference {
+  id: 0x0d20d38c
+  kind: POINTER
+  pointee_type_id: 0x1ec3a8ad
+}
+pointer_reference {
+  id: 0x0d21fdc9
+  kind: POINTER
+  pointee_type_id: 0x1ec711b9
+}
+pointer_reference {
+  id: 0x0d22c400
+  kind: POINTER
+  pointee_type_id: 0x1ecbf69d
+}
+pointer_reference {
+  id: 0x0d232330
+  kind: POINTER
+  pointee_type_id: 0x1ecc6a5d
+}
+pointer_reference {
+  id: 0x0d23c46d
+  kind: POINTER
+  pointee_type_id: 0x1ecff72b
+}
+pointer_reference {
+  id: 0x0d27055d
+  kind: POINTER
+  pointee_type_id: 0x1edcf3e9
+}
+pointer_reference {
+  id: 0x0d27cb7e
+  kind: POINTER
+  pointee_type_id: 0x1edfcb66
+}
+pointer_reference {
+  id: 0x0d2958f6
+  kind: POINTER
+  pointee_type_id: 0x1ee58544
+}
+pointer_reference {
+  id: 0x0d29cddd
+  kind: POINTER
+  pointee_type_id: 0x1ee7d1e8
+}
+pointer_reference {
+  id: 0x0d2a160e
+  kind: POINTER
+  pointee_type_id: 0x1ee8bea7
+}
+pointer_reference {
+  id: 0x0d2a9f3d
+  kind: POINTER
+  pointee_type_id: 0x1eea9a68
+}
+pointer_reference {
+  id: 0x0d2aaf9f
+  kind: POINTER
+  pointee_type_id: 0x1eea58e1
+}
+pointer_reference {
+  id: 0x0d2bbbbb
+  kind: POINTER
+  pointee_type_id: 0x1eee0872
+}
+pointer_reference {
+  id: 0x0d2ea08a
+  kind: POINTER
+  pointee_type_id: 0x1efa64b6
+}
+pointer_reference {
+  id: 0x0d301752
+  kind: POINTER
+  pointee_type_id: 0x1e80bbd4
+}
+pointer_reference {
+  id: 0x0d3022ff
+  kind: POINTER
+  pointee_type_id: 0x1e806d63
+}
+pointer_reference {
+  id: 0x0d302bb5
+  kind: POINTER
+  pointee_type_id: 0x1e80484b
+}
+pointer_reference {
+  id: 0x0d306b27
+  kind: POINTER
+  pointee_type_id: 0x1e814a02
+}
+pointer_reference {
+  id: 0x0d30b9c3
+  kind: POINTER
+  pointee_type_id: 0x1e820193
+}
+pointer_reference {
+  id: 0x0d313a47
+  kind: POINTER
+  pointee_type_id: 0x1e840f82
+}
+pointer_reference {
+  id: 0x0d322879
+  kind: POINTER
+  pointee_type_id: 0x1e884779
+}
+pointer_reference {
+  id: 0x0d32da14
+  kind: POINTER
+  pointee_type_id: 0x1e8b8ecc
+}
+pointer_reference {
+  id: 0x0d355191
+  kind: POINTER
+  pointee_type_id: 0x1e95a0da
+}
+pointer_reference {
+  id: 0x0d3576a9
+  kind: POINTER
+  pointee_type_id: 0x1e953c38
+}
+pointer_reference {
+  id: 0x0d359d60
+  kind: POINTER
+  pointee_type_id: 0x1e96931d
+}
+pointer_reference {
+  id: 0x0d364e53
+  kind: POINTER
+  pointee_type_id: 0x1e99dfd1
+}
+pointer_reference {
+  id: 0x0d36c060
+  kind: POINTER
+  pointee_type_id: 0x1e9be71c
+}
+pointer_reference {
+  id: 0x0d370eee
+  kind: POINTER
+  pointee_type_id: 0x1e9cdd26
+}
+pointer_reference {
+  id: 0x0d384575
+  kind: POINTER
+  pointee_type_id: 0x1ea1f34b
+}
+pointer_reference {
+  id: 0x0d3d3eae
+  kind: POINTER
+  pointee_type_id: 0x1eb41c27
+}
+pointer_reference {
+  id: 0x0d3dfaaf
+  kind: POINTER
+  pointee_type_id: 0x1eb70c20
+}
+pointer_reference {
+  id: 0x0d3e034c
+  kind: POINTER
+  pointee_type_id: 0x1eb8ebad
+}
+pointer_reference {
+  id: 0x0d3e48a3
+  kind: POINTER
+  pointee_type_id: 0x1eb9c413
+}
+pointer_reference {
+  id: 0x0d3fe44c
+  kind: POINTER
+  pointee_type_id: 0x1ebf77ae
+}
+pointer_reference {
+  id: 0x0d42842b
+  kind: POINTER
+  pointee_type_id: 0x1f4af633
+}
+pointer_reference {
+  id: 0x0d436e43
+  kind: POINTER
+  pointee_type_id: 0x1f4d5f93
+}
+pointer_reference {
+  id: 0x0d4378a0
+  kind: POINTER
+  pointee_type_id: 0x1f4d041c
+}
+pointer_reference {
+  id: 0x0d440f05
+  kind: POINTER
+  pointee_type_id: 0x1f50da89
+}
+pointer_reference {
+  id: 0x0d44ba38
+  kind: POINTER
+  pointee_type_id: 0x1f520e7e
+}
+pointer_reference {
+  id: 0x0d45505e
+  kind: POINTER
+  pointee_type_id: 0x1f55a7e6
+}
+pointer_reference {
+  id: 0x0d458514
+  kind: POINTER
+  pointee_type_id: 0x1f56f2cc
+}
+pointer_reference {
+  id: 0x0d45d6cd
+  kind: POINTER
+  pointee_type_id: 0x1f57bdaa
+}
+pointer_reference {
+  id: 0x0d4602bf
+  kind: POINTER
+  pointee_type_id: 0x1f58ec61
+}
+pointer_reference {
+  id: 0x0d466e97
+  kind: POINTER
+  pointee_type_id: 0x1f595cc0
+}
+pointer_reference {
+  id: 0x0d46dd1a
+  kind: POINTER
+  pointee_type_id: 0x1f5b92f5
+}
+pointer_reference {
+  id: 0x0d487fcc
+  kind: POINTER
+  pointee_type_id: 0x1f6119ad
+}
+pointer_reference {
+  id: 0x0d4a22cb
+  kind: POINTER
+  pointee_type_id: 0x1f686db1
+}
+pointer_reference {
+  id: 0x0d4a6a9f
+  kind: POINTER
+  pointee_type_id: 0x1f694ce0
+}
+pointer_reference {
+  id: 0x0d4c9f4f
+  kind: POINTER
+  pointee_type_id: 0x1f729ba1
+}
+pointer_reference {
+  id: 0x0d4cec11
+  kind: POINTER
+  pointee_type_id: 0x1f7356db
+}
+pointer_reference {
+  id: 0x0d4dacd3
+  kind: POINTER
+  pointee_type_id: 0x1f7655d2
+}
+pointer_reference {
+  id: 0x0d500e5d
+  kind: POINTER
+  pointee_type_id: 0x1f00dfeb
+}
+pointer_reference {
+  id: 0x0d51ba49
+  kind: POINTER
+  pointee_type_id: 0x1f060fb8
+}
+pointer_reference {
+  id: 0x0d53cd40
+  kind: POINTER
+  pointee_type_id: 0x1f0fd39d
+}
+pointer_reference {
+  id: 0x0d5547d5
+  kind: POINTER
+  pointee_type_id: 0x1f15f9ca
+}
+pointer_reference {
+  id: 0x0d554ba7
+  kind: POINTER
+  pointee_type_id: 0x1f15c803
+}
+pointer_reference {
+  id: 0x0d554dfb
+  kind: POINTER
+  pointee_type_id: 0x1f15d172
+}
+pointer_reference {
+  id: 0x0d561eb6
+  kind: POINTER
+  pointee_type_id: 0x1f189c45
+}
+pointer_reference {
+  id: 0x0d572692
+  kind: POINTER
+  pointee_type_id: 0x1f1c7cd5
+}
+pointer_reference {
+  id: 0x0d58335b
+  kind: POINTER
+  pointee_type_id: 0x1f202bf3
+}
+pointer_reference {
+  id: 0x0d5a6860
+  kind: POINTER
+  pointee_type_id: 0x1f29471f
+}
+pointer_reference {
+  id: 0x0d5b310c
+  kind: POINTER
+  pointee_type_id: 0x1f2c22ae
+}
+pointer_reference {
+  id: 0x0d5e3b67
+  kind: POINTER
+  pointee_type_id: 0x1f380b01
+}
+pointer_reference {
+  id: 0x0d5ea64d
+  kind: POINTER
+  pointee_type_id: 0x1f3a7fab
+}
+pointer_reference {
+  id: 0x0d5f1839
+  kind: POINTER
+  pointee_type_id: 0x1f3c8679
+}
+pointer_reference {
+  id: 0x0d5f3215
+  kind: POINTER
+  pointee_type_id: 0x1f3c2ec8
+}
+pointer_reference {
+  id: 0x0d621812
+  kind: POINTER
+  pointee_type_id: 0x1fc886d7
+}
+pointer_reference {
+  id: 0x0d6478af
+  kind: POINTER
+  pointee_type_id: 0x1fd10421
+}
+pointer_reference {
+  id: 0x0d65981e
+  kind: POINTER
+  pointee_type_id: 0x1fd686e6
+}
+pointer_reference {
+  id: 0x0d677682
+  kind: POINTER
+  pointee_type_id: 0x1fdd3c97
+}
+pointer_reference {
+  id: 0x0d679fed
+  kind: POINTER
+  pointee_type_id: 0x1fde992a
+}
+pointer_reference {
+  id: 0x0d6b4ee3
+  kind: POINTER
+  pointee_type_id: 0x1feddd12
+}
+pointer_reference {
+  id: 0x0d6bac1e
+  kind: POINTER
+  pointee_type_id: 0x1fee56e5
+}
+pointer_reference {
+  id: 0x0d6cb897
+  kind: POINTER
+  pointee_type_id: 0x1ff204c3
+}
+pointer_reference {
+  id: 0x0d6dc297
+  kind: POINTER
+  pointee_type_id: 0x1ff7ecc0
+}
+pointer_reference {
+  id: 0x0d70ef7c
+  kind: POINTER
+  pointee_type_id: 0x1f835b6f
+}
+pointer_reference {
+  id: 0x0d714d5c
+  kind: POINTER
+  pointee_type_id: 0x1f85d3ef
+}
+pointer_reference {
+  id: 0x0d745899
+  kind: POINTER
+  pointee_type_id: 0x1f9184fb
+}
+pointer_reference {
+  id: 0x0d747433
+  kind: POINTER
+  pointee_type_id: 0x1f913650
+}
+pointer_reference {
+  id: 0x0d74f0df
+  kind: POINTER
+  pointee_type_id: 0x1f9325e1
+}
+pointer_reference {
+  id: 0x0d78e7f9
+  kind: POINTER
+  pointee_type_id: 0x1fa37978
+}
+pointer_reference {
+  id: 0x0d7a1508
+  kind: POINTER
+  pointee_type_id: 0x1fa8b2bc
+}
+pointer_reference {
+  id: 0x0d7bcdce
+  kind: POINTER
+  pointee_type_id: 0x1fafd1a4
+}
+pointer_reference {
+  id: 0x0d7ce7cc
+  kind: POINTER
+  pointee_type_id: 0x1fb379af
+}
+pointer_reference {
+  id: 0x0d7d7298
+  kind: POINTER
+  pointee_type_id: 0x1fb52cfd
+}
+pointer_reference {
+  id: 0x0d806302
+  kind: POINTER
+  pointee_type_id: 0x1c416a95
+}
+pointer_reference {
+  id: 0x0d80c506
+  kind: POINTER
+  pointee_type_id: 0x1c43f286
+}
+pointer_reference {
+  id: 0x0d8116cb
+  kind: POINTER
+  pointee_type_id: 0x1c44bdb1
+}
+pointer_reference {
+  id: 0x0d817b8b
+  kind: POINTER
+  pointee_type_id: 0x1c4508b2
+}
+pointer_reference {
+  id: 0x0d81f9bf
+  kind: POINTER
+  pointee_type_id: 0x1c470062
+}
+pointer_reference {
+  id: 0x0d821a01
+  kind: POINTER
+  pointee_type_id: 0x1c488e9b
+}
+pointer_reference {
+  id: 0x0d829a1e
+  kind: POINTER
+  pointee_type_id: 0x1c4a8ee5
+}
+pointer_reference {
+  id: 0x0d82bfbc
+  kind: POINTER
+  pointee_type_id: 0x1c4a186e
+}
+pointer_reference {
+  id: 0x0d835382
+  kind: POINTER
+  pointee_type_id: 0x1c4da897
+}
+pointer_reference {
+  id: 0x0d84b99b
+  kind: POINTER
+  pointee_type_id: 0x1c5200f3
+}
+pointer_reference {
+  id: 0x0d84e7d0
+  kind: POINTER
+  pointee_type_id: 0x1c5379dd
+}
+pointer_reference {
+  id: 0x0d84f29b
+  kind: POINTER
+  pointee_type_id: 0x1c532cf2
+}
+pointer_reference {
+  id: 0x0d868bbd
+  kind: POINTER
+  pointee_type_id: 0x1c5ac86a
+}
+pointer_reference {
+  id: 0x0d879e14
+  kind: POINTER
+  pointee_type_id: 0x1c5e9ece
+}
+pointer_reference {
+  id: 0x0d881d5f
+  kind: POINTER
+  pointee_type_id: 0x1c6093e3
+}
+pointer_reference {
+  id: 0x0d885429
+  kind: POINTER
+  pointee_type_id: 0x1c61b639
+}
+pointer_reference {
+  id: 0x0d88e184
+  kind: POINTER
+  pointee_type_id: 0x1c63608e
+}
+pointer_reference {
+  id: 0x0d890895
+  kind: POINTER
+  pointee_type_id: 0x1c64c4cb
+}
+pointer_reference {
+  id: 0x0d89a697
+  kind: POINTER
+  pointee_type_id: 0x1c667cc1
+}
+pointer_reference {
+  id: 0x0d8b5128
+  kind: POINTER
+  pointee_type_id: 0x1c6da23d
+}
+pointer_reference {
+  id: 0x0d8bad22
+  kind: POINTER
+  pointee_type_id: 0x1c6e5215
+}
+pointer_reference {
+  id: 0x0d8c7798
+  kind: POINTER
+  pointee_type_id: 0x1c7138fe
+}
+pointer_reference {
+  id: 0x0d8d5ad3
+  kind: POINTER
+  pointee_type_id: 0x1c758dd1
+}
+pointer_reference {
+  id: 0x0d8e07a0
+  kind: POINTER
+  pointee_type_id: 0x1c78f81d
+}
+pointer_reference {
+  id: 0x0d8fd177
+  kind: POINTER
+  pointee_type_id: 0x1c7fa343
+}
+pointer_reference {
+  id: 0x0d904bff
+  kind: POINTER
+  pointee_type_id: 0x1c01c960
+}
+pointer_reference {
+  id: 0x0d910d7f
+  kind: POINTER
+  pointee_type_id: 0x1c04d361
+}
+pointer_reference {
+  id: 0x0d918eed
+  kind: POINTER
+  pointee_type_id: 0x1c06dd29
+}
+pointer_reference {
+  id: 0x0d92d3ed
+  kind: POINTER
+  pointee_type_id: 0x1c0ba928
+}
+pointer_reference {
+  id: 0x0d93a6e4
+  kind: POINTER
+  pointee_type_id: 0x1c0e7d0f
+}
+pointer_reference {
+  id: 0x0d947d59
+  kind: POINTER
+  pointee_type_id: 0x1c1113fb
+}
+pointer_reference {
+  id: 0x0d956bfc
+  kind: POINTER
+  pointee_type_id: 0x1c15496d
+}
+pointer_reference {
+  id: 0x0d956e67
+  kind: POINTER
+  pointee_type_id: 0x1c155f01
+}
+pointer_reference {
+  id: 0x0d97a2b2
+  kind: POINTER
+  pointee_type_id: 0x1c1e6c54
+}
+pointer_reference {
+  id: 0x0d97a54b
+  kind: POINTER
+  pointee_type_id: 0x1c1e73b0
+}
+pointer_reference {
+  id: 0x0d994043
+  kind: POINTER
+  pointee_type_id: 0x1c25e791
+}
+pointer_reference {
+  id: 0x0d9a8731
+  kind: POINTER
+  pointee_type_id: 0x1c2afa5a
+}
+pointer_reference {
+  id: 0x0d9c47fd
+  kind: POINTER
+  pointee_type_id: 0x1c31f969
+}
+pointer_reference {
+  id: 0x0d9c4ffe
+  kind: POINTER
+  pointee_type_id: 0x1c31d966
+}
+pointer_reference {
+  id: 0x0d9c53e8
+  kind: POINTER
+  pointee_type_id: 0x1c31a93c
+}
+pointer_reference {
+  id: 0x0d9db20b
+  kind: POINTER
+  pointee_type_id: 0x1c362eb2
+}
+pointer_reference {
+  id: 0x0d9ddaf9
+  kind: POINTER
+  pointee_type_id: 0x1c378d7a
+}
+pointer_reference {
+  id: 0x0d9e81b2
+  kind: POINTER
+  pointee_type_id: 0x1c3ae057
+}
+pointer_reference {
+  id: 0x0d9f5631
+  kind: POINTER
+  pointee_type_id: 0x1c3dbe5a
+}
+pointer_reference {
+  id: 0x0d9f6c71
+  kind: POINTER
+  pointee_type_id: 0x1c3d5759
+}
+pointer_reference {
+  id: 0x0d9f8286
+  kind: POINTER
+  pointee_type_id: 0x1c3eec85
+}
+pointer_reference {
+  id: 0x0da01896
+  kind: POINTER
+  pointee_type_id: 0x1cc084c7
+}
+pointer_reference {
+  id: 0x0da0e4a5
+  kind: POINTER
+  pointee_type_id: 0x1cc37408
+}
+pointer_reference {
+  id: 0x0da126bb
+  kind: POINTER
+  pointee_type_id: 0x1cc47c71
+}
+pointer_reference {
+  id: 0x0da147cb
+  kind: POINTER
+  pointee_type_id: 0x1cc5f9b2
+}
+pointer_reference {
+  id: 0x0da180ee
+  kind: POINTER
+  pointee_type_id: 0x1cc6e526
+}
+pointer_reference {
+  id: 0x0da193c0
+  kind: POINTER
+  pointee_type_id: 0x1cc6a99c
+}
+pointer_reference {
+  id: 0x0da19a24
+  kind: POINTER
+  pointee_type_id: 0x1cc68e0f
+}
+pointer_reference {
+  id: 0x0da22dc7
+  kind: POINTER
+  pointee_type_id: 0x1cc85181
+}
+pointer_reference {
+  id: 0x0da2fec2
+  kind: POINTER
+  pointee_type_id: 0x1ccb1d96
+}
+pointer_reference {
+  id: 0x0da371bb
+  kind: POINTER
+  pointee_type_id: 0x1ccd2072
+}
+pointer_reference {
+  id: 0x0da39a23
+  kind: POINTER
+  pointee_type_id: 0x1cce8e13
+}
+pointer_reference {
+  id: 0x0da4d640
+  kind: POINTER
+  pointee_type_id: 0x1cd3bf9e
+}
+pointer_reference {
+  id: 0x0da539e7
+  kind: POINTER
+  pointee_type_id: 0x1cd40102
+}
+pointer_reference {
+  id: 0x0da5e764
+  kind: POINTER
+  pointee_type_id: 0x1cd77b0d
+}
+pointer_reference {
+  id: 0x0da65d3f
+  kind: POINTER
+  pointee_type_id: 0x1cd99260
+}
+pointer_reference {
+  id: 0x0da690d2
+  kind: POINTER
+  pointee_type_id: 0x1cdaa5d6
+}
+pointer_reference {
+  id: 0x0da6c1c2
+  kind: POINTER
+  pointee_type_id: 0x1cdbe194
+}
+pointer_reference {
+  id: 0x0da985ba
+  kind: POINTER
+  pointee_type_id: 0x1ce6f074
+}
+pointer_reference {
+  id: 0x0daaa697
+  kind: POINTER
+  pointee_type_id: 0x1cea7cc2
+}
+pointer_reference {
+  id: 0x0daccc19
+  kind: POINTER
+  pointee_type_id: 0x1cf3d6fb
+}
+pointer_reference {
+  id: 0x0dad77a5
+  kind: POINTER
+  pointee_type_id: 0x1cf53808
+}
+pointer_reference {
+  id: 0x0daecbaf
+  kind: POINTER
+  pointee_type_id: 0x1cfbc822
+}
+pointer_reference {
+  id: 0x0dafe2c8
+  kind: POINTER
+  pointee_type_id: 0x1cff6dbd
+}
+pointer_reference {
+  id: 0x0db09993
+  kind: POINTER
+  pointee_type_id: 0x1c8280d3
+}
+pointer_reference {
+  id: 0x0db138df
+  kind: POINTER
+  pointee_type_id: 0x1c8405e0
+}
+pointer_reference {
+  id: 0x0db20eef
+  kind: POINTER
+  pointee_type_id: 0x1c88dd20
+}
+pointer_reference {
+  id: 0x0db25a6d
+  kind: POINTER
+  pointee_type_id: 0x1c898f28
+}
+pointer_reference {
+  id: 0x0db3ac0f
+  kind: POINTER
+  pointee_type_id: 0x1c8e56a3
+}
+pointer_reference {
+  id: 0x0db53d7a
+  kind: POINTER
+  pointee_type_id: 0x1c941374
+}
+pointer_reference {
+  id: 0x0db5f18a
+  kind: POINTER
+  pointee_type_id: 0x1c9720b7
+}
+pointer_reference {
+  id: 0x0db63e90
+  kind: POINTER
+  pointee_type_id: 0x1c981cde
+}
+pointer_reference {
+  id: 0x0db6c27b
+  kind: POINTER
+  pointee_type_id: 0x1c9bef72
+}
+pointer_reference {
+  id: 0x0db9efe5
+  kind: POINTER
+  pointee_type_id: 0x1ca75909
+}
+pointer_reference {
+  id: 0x0dbd6b37
+  kind: POINTER
+  pointee_type_id: 0x1cb54a41
+}
+pointer_reference {
+  id: 0x0dbe554c
+  kind: POINTER
+  pointee_type_id: 0x1cb9b3ad
+}
+pointer_reference {
+  id: 0x0dbf72e5
+  kind: POINTER
+  pointee_type_id: 0x1cbd2d0b
+}
+pointer_reference {
+  id: 0x0dbfb6c2
+  kind: POINTER
+  pointee_type_id: 0x1cbe3d95
+}
+pointer_reference {
+  id: 0x0dc35132
+  kind: POINTER
+  pointee_type_id: 0x1d4da256
+}
+pointer_reference {
+  id: 0x0dc4baf0
+  kind: POINTER
+  pointee_type_id: 0x1d520d5f
+}
+pointer_reference {
+  id: 0x0dc70534
+  kind: POINTER
+  pointee_type_id: 0x1d5cf24d
+}
+pointer_reference {
+  id: 0x0dc9e98b
+  kind: POINTER
+  pointee_type_id: 0x1d6740b1
+}
+pointer_reference {
+  id: 0x0dcbeae6
+  kind: POINTER
+  pointee_type_id: 0x1d6f4d07
+}
+pointer_reference {
+  id: 0x0dcc3894
+  kind: POINTER
+  pointee_type_id: 0x1d7004cd
+}
+pointer_reference {
+  id: 0x0dcd01f8
+  kind: POINTER
+  pointee_type_id: 0x1d74e17c
+}
+pointer_reference {
+  id: 0x0dd0f7ba
+  kind: POINTER
+  pointee_type_id: 0x1d033874
+}
+pointer_reference {
+  id: 0x0dd253dc
+  kind: POINTER
+  pointee_type_id: 0x1d09a9ef
+}
+pointer_reference {
+  id: 0x0dd261a1
+  kind: POINTER
+  pointee_type_id: 0x1d096019
+}
+pointer_reference {
+  id: 0x0dd5dc65
+  kind: POINTER
+  pointee_type_id: 0x1d179708
+}
+pointer_reference {
+  id: 0x0dd653d2
+  kind: POINTER
+  pointee_type_id: 0x1d19a9d5
+}
+pointer_reference {
+  id: 0x0dd70523
+  kind: POINTER
+  pointee_type_id: 0x1d1cf212
+}
+pointer_reference {
+  id: 0x0dd7b461
+  kind: POINTER
+  pointee_type_id: 0x1d1e3719
+}
+pointer_reference {
+  id: 0x0dd7b940
+  kind: POINTER
+  pointee_type_id: 0x1d1e039f
+}
+pointer_reference {
+  id: 0x0dd9ca98
+  kind: POINTER
+  pointee_type_id: 0x1d27ccfe
+}
+pointer_reference {
+  id: 0x0dd9f91d
+  kind: POINTER
+  pointee_type_id: 0x1d2702e8
+}
+pointer_reference {
+  id: 0x0dda7b97
+  kind: POINTER
+  pointee_type_id: 0x1d2908c3
+}
+pointer_reference {
+  id: 0x0dda9243
+  kind: POINTER
+  pointee_type_id: 0x1d2aaf92
+}
+pointer_reference {
+  id: 0x0ddb38e3
+  kind: POINTER
+  pointee_type_id: 0x1d2c0513
+}
+pointer_reference {
+  id: 0x0ddccb29
+  kind: POINTER
+  pointee_type_id: 0x1d33ca38
+}
+pointer_reference {
+  id: 0x0dde65b8
+  kind: POINTER
+  pointee_type_id: 0x1d39707c
+}
+pointer_reference {
+  id: 0x0de0f4a6
+  kind: POINTER
+  pointee_type_id: 0x1dc33407
+}
+pointer_reference {
+  id: 0x0de2370a
+  kind: POINTER
+  pointee_type_id: 0x1dc83ab4
+}
+pointer_reference {
+  id: 0x0de3ba50
+  kind: POINTER
+  pointee_type_id: 0x1dce0fdd
+}
+pointer_reference {
+  id: 0x0de45378
+  kind: POINTER
+  pointee_type_id: 0x1dd1ab7c
+}
+pointer_reference {
+  id: 0x0de4c6b1
+  kind: POINTER
+  pointee_type_id: 0x1dd3fc58
+}
+pointer_reference {
+  id: 0x0de6f1fd
+  kind: POINTER
+  pointee_type_id: 0x1ddb216a
+}
+pointer_reference {
+  id: 0x0de7a7a9
+  kind: POINTER
+  pointee_type_id: 0x1dde7839
+}
+pointer_reference {
+  id: 0x0de7ba15
+  kind: POINTER
+  pointee_type_id: 0x1dde0ec8
+}
+pointer_reference {
+  id: 0x0de80fb7
+  kind: POINTER
+  pointee_type_id: 0x1de0d842
+}
+pointer_reference {
+  id: 0x0de8f5e2
+  kind: POINTER
+  pointee_type_id: 0x1de33115
+}
+pointer_reference {
+  id: 0x0dec2294
+  kind: POINTER
+  pointee_type_id: 0x1df06cce
+}
+pointer_reference {
+  id: 0x0dee821b
+  kind: POINTER
+  pointee_type_id: 0x1dfaeef0
+}
+pointer_reference {
+  id: 0x0dee87ef
+  kind: POINTER
+  pointee_type_id: 0x1dfaf921
+}
+pointer_reference {
+  id: 0x0deebc77
+  kind: POINTER
+  pointee_type_id: 0x1dfa1740
+}
+pointer_reference {
+  id: 0x0def8d1d
+  kind: POINTER
+  pointee_type_id: 0x1dfed2eb
+}
+pointer_reference {
+  id: 0x0df13efa
+  kind: POINTER
+  pointee_type_id: 0x1d841d76
+}
+pointer_reference {
+  id: 0x0df8e7ff
+  kind: POINTER
+  pointee_type_id: 0x1da37962
+}
+pointer_reference {
+  id: 0x0dfb6f2d
+  kind: POINTER
+  pointee_type_id: 0x1dad5a2a
+}
+pointer_reference {
+  id: 0x0dfd7a00
+  kind: POINTER
+  pointee_type_id: 0x1db50e9d
+}
+pointer_reference {
+  id: 0x0dfe95f2
+  kind: POINTER
+  pointee_type_id: 0x1dbab156
+}
+pointer_reference {
+  id: 0x0dfeda6d
+  kind: POINTER
+  pointee_type_id: 0x1dbb8f2a
+}
+pointer_reference {
+  id: 0x0dffa8e9
+  kind: POINTER
+  pointee_type_id: 0x1dbe4538
+}
+pointer_reference {
+  id: 0x0e00c9b9
+  kind: POINTER
+  pointee_type_id: 0x1243c078
+}
+pointer_reference {
+  id: 0x0e017252
+  kind: POINTER
+  pointee_type_id: 0x12452fd6
+}
+pointer_reference {
+  id: 0x0e01e935
+  kind: POINTER
+  pointee_type_id: 0x1247424a
+}
+pointer_reference {
+  id: 0x0e044b9c
+  kind: POINTER
+  pointee_type_id: 0x1251c8ee
+}
+pointer_reference {
+  id: 0x0e045007
+  kind: POINTER
+  pointee_type_id: 0x1251a683
+}
+pointer_reference {
+  id: 0x0e04e400
+  kind: POINTER
+  pointee_type_id: 0x1253769c
+}
+pointer_reference {
+  id: 0x0e04e6a8
+  kind: POINTER
+  pointee_type_id: 0x12537c3f
+}
+pointer_reference {
+  id: 0x0e0742cb
+  kind: POINTER
+  pointee_type_id: 0x125dedb2
+}
+pointer_reference {
+  id: 0x0e078cd3
+  kind: POINTER
+  pointee_type_id: 0x125ed5d0
+}
+pointer_reference {
+  id: 0x0e09e4c0
+  kind: POINTER
+  pointee_type_id: 0x1267759f
+}
+pointer_reference {
+  id: 0x0e0a62af
+  kind: POINTER
+  pointee_type_id: 0x12696c21
+}
+pointer_reference {
+  id: 0x0e0c5a89
+  kind: POINTER
+  pointee_type_id: 0x12718cba
+}
+pointer_reference {
+  id: 0x0e0cae0f
+  kind: POINTER
+  pointee_type_id: 0x12725ea0
+}
+pointer_reference {
+  id: 0x0e0dc9f3
+  kind: POINTER
+  pointee_type_id: 0x1277c151
+}
+pointer_reference {
+  id: 0x0e0e584e
+  kind: POINTER
+  pointee_type_id: 0x127987a5
+}
+pointer_reference {
+  id: 0x0e12cbdd
+  kind: POINTER
+  pointee_type_id: 0x120bc9eb
+}
+pointer_reference {
+  id: 0x0e136ffa
+  kind: POINTER
+  pointee_type_id: 0x120d5977
+}
+pointer_reference {
+  id: 0x0e13b7f3
+  kind: POINTER
+  pointee_type_id: 0x120e3950
+}
+pointer_reference {
+  id: 0x0e14a6f1
+  kind: POINTER
+  pointee_type_id: 0x12127d58
+}
+pointer_reference {
+  id: 0x0e162262
+  kind: POINTER
+  pointee_type_id: 0x12186f16
+}
+pointer_reference {
+  id: 0x0e16c70e
+  kind: POINTER
+  pointee_type_id: 0x121bfaa4
+}
+pointer_reference {
+  id: 0x0e1719d7
+  kind: POINTER
+  pointee_type_id: 0x121c81c2
+}
+pointer_reference {
+  id: 0x0e1867ef
+  kind: POINTER
+  pointee_type_id: 0x12217922
+}
+pointer_reference {
+  id: 0x0e1b2a58
+  kind: POINTER
+  pointee_type_id: 0x122c4fff
+}
+pointer_reference {
+  id: 0x0e1db267
+  kind: POINTER
+  pointee_type_id: 0x12362f00
+}
+pointer_reference {
+  id: 0x0e1f07df
+  kind: POINTER
+  pointee_type_id: 0x123cf9e1
+}
+pointer_reference {
+  id: 0x0e1f8d92
+  kind: POINTER
+  pointee_type_id: 0x123ed0d5
+}
+pointer_reference {
+  id: 0x0e200b74
+  kind: POINTER
+  pointee_type_id: 0x12c0cb4c
+}
+pointer_reference {
+  id: 0x0e211c44
+  kind: POINTER
+  pointee_type_id: 0x12c4978f
+}
+pointer_reference {
+  id: 0x0e21dd6f
+  kind: POINTER
+  pointee_type_id: 0x12c79320
+}
+pointer_reference {
+  id: 0x0e22e25f
+  kind: POINTER
+  pointee_type_id: 0x12cb6fe0
+}
+pointer_reference {
+  id: 0x0e23f7e9
+  kind: POINTER
+  pointee_type_id: 0x12cf393a
+}
+pointer_reference {
+  id: 0x0e2469a6
+  kind: POINTER
+  pointee_type_id: 0x12d14004
+}
+pointer_reference {
+  id: 0x0e24c2f6
+  kind: POINTER
+  pointee_type_id: 0x12d3ed44
+}
+pointer_reference {
+  id: 0x0e2521ae
+  kind: POINTER
+  pointee_type_id: 0x12d46025
+}
+pointer_reference {
+  id: 0x0e2536c2
+  kind: POINTER
+  pointee_type_id: 0x12d43d94
+}
+pointer_reference {
+  id: 0x0e259468
+  kind: POINTER
+  pointee_type_id: 0x12d6b73d
+}
+pointer_reference {
+  id: 0x0e2680c2
+  kind: POINTER
+  pointee_type_id: 0x12dae594
+}
+pointer_reference {
+  id: 0x0e27774e
+  kind: POINTER
+  pointee_type_id: 0x12dd3ba6
+}
+pointer_reference {
+  id: 0x0e2924a0
+  kind: POINTER
+  pointee_type_id: 0x12e4741f
+}
+pointer_reference {
+  id: 0x0e2bd379
+  kind: POINTER
+  pointee_type_id: 0x12efab79
+}
+pointer_reference {
+  id: 0x0e2cae32
+  kind: POINTER
+  pointee_type_id: 0x12f25e54
+}
+pointer_reference {
+  id: 0x0e2fc7b3
+  kind: POINTER
+  pointee_type_id: 0x12fff850
+}
+pointer_reference {
+  id: 0x0e30e7f5
+  kind: POINTER
+  pointee_type_id: 0x1283794a
+}
+pointer_reference {
+  id: 0x0e361c9c
+  kind: POINTER
+  pointee_type_id: 0x129894ec
+}
+pointer_reference {
+  id: 0x0e37377c
+  kind: POINTER
+  pointee_type_id: 0x129c3b6f
+}
+pointer_reference {
+  id: 0x0e3794b2
+  kind: POINTER
+  pointee_type_id: 0x129eb456
+}
+pointer_reference {
+  id: 0x0e395200
+  kind: POINTER
+  pointee_type_id: 0x12a5ae9c
+}
+pointer_reference {
+  id: 0x0e3973a2
+  kind: POINTER
+  pointee_type_id: 0x12a52815
+}
+pointer_reference {
+  id: 0x0e3a40b2
+  kind: POINTER
+  pointee_type_id: 0x12a9e457
+}
+pointer_reference {
+  id: 0x0e3ac1af
+  kind: POINTER
+  pointee_type_id: 0x12abe021
+}
+pointer_reference {
+  id: 0x0e3cbe6a
+  kind: POINTER
+  pointee_type_id: 0x12b21f36
+}
+pointer_reference {
+  id: 0x0e3d09df
+  kind: POINTER
+  pointee_type_id: 0x12b4c1e0
+}
+pointer_reference {
+  id: 0x0e3d6026
+  kind: POINTER
+  pointee_type_id: 0x12b56605
+}
+pointer_reference {
+  id: 0x0e40b8fe
+  kind: POINTER
+  pointee_type_id: 0x13420565
+}
+pointer_reference {
+  id: 0x0e428484
+  kind: POINTER
+  pointee_type_id: 0x134af48c
+}
+pointer_reference {
+  id: 0x0e428b2e
+  kind: POINTER
+  pointee_type_id: 0x134aca27
+}
+pointer_reference {
+  id: 0x0e446c53
+  kind: POINTER
+  pointee_type_id: 0x135157d2
+}
+pointer_reference {
+  id: 0x0e44aca7
+  kind: POINTER
+  pointee_type_id: 0x13525403
+}
+pointer_reference {
+  id: 0x0e44f9f8
+  kind: POINTER
+  pointee_type_id: 0x1353017f
+}
+pointer_reference {
+  id: 0x0e452ad4
+  kind: POINTER
+  pointee_type_id: 0x13544dcf
+}
+pointer_reference {
+  id: 0x0e46caf3
+  kind: POINTER
+  pointee_type_id: 0x135bcd51
+}
+pointer_reference {
+  id: 0x0e47b932
+  kind: POINTER
+  pointee_type_id: 0x135e0256
+}
+pointer_reference {
+  id: 0x0e47bcdd
+  kind: POINTER
+  pointee_type_id: 0x135e15ea
+}
+pointer_reference {
+  id: 0x0e489060
+  kind: POINTER
+  pointee_type_id: 0x1362a71c
+}
+pointer_reference {
+  id: 0x0e490832
+  kind: POINTER
+  pointee_type_id: 0x1364c655
+}
+pointer_reference {
+  id: 0x0e493de2
+  kind: POINTER
+  pointee_type_id: 0x13641115
+}
+pointer_reference {
+  id: 0x0e4a72a9
+  kind: POINTER
+  pointee_type_id: 0x13692c3a
+}
+pointer_reference {
+  id: 0x0e4b7bf3
+  kind: POINTER
+  pointee_type_id: 0x136d0952
+}
+pointer_reference {
+  id: 0x0e4bb5c4
+  kind: POINTER
+  pointee_type_id: 0x136e318e
+}
+pointer_reference {
+  id: 0x0e4d1ea4
+  kind: POINTER
+  pointee_type_id: 0x13749c0f
+}
+pointer_reference {
+  id: 0x0e4d5c0b
+  kind: POINTER
+  pointee_type_id: 0x137596b0
+}
+pointer_reference {
+  id: 0x0e4e664a
+  kind: POINTER
+  pointee_type_id: 0x13797fb7
+}
+pointer_reference {
+  id: 0x0e4f7e58
+  kind: POINTER
+  pointee_type_id: 0x137d1ffc
+}
+pointer_reference {
+  id: 0x0e504c4f
+  kind: POINTER
+  pointee_type_id: 0x1301d7a2
+}
+pointer_reference {
+  id: 0x0e506d79
+  kind: POINTER
+  pointee_type_id: 0x13015378
+}
+pointer_reference {
+  id: 0x0e534115
+  kind: POINTER
+  pointee_type_id: 0x130de2cb
+}
+pointer_reference {
+  id: 0x0e5445cf
+  kind: POINTER
+  pointee_type_id: 0x1311f1a3
+}
+pointer_reference {
+  id: 0x0e56cd62
+  kind: POINTER
+  pointee_type_id: 0x131bd315
+}
+pointer_reference {
+  id: 0x0e59d199
+  kind: POINTER
+  pointee_type_id: 0x1327a0fb
+}
+pointer_reference {
+  id: 0x0e5c6698
+  kind: POINTER
+  pointee_type_id: 0x13317cfe
+}
+pointer_reference {
+  id: 0x0e5e6153
+  kind: POINTER
+  pointee_type_id: 0x133963d3
+}
+pointer_reference {
+  id: 0x0e5eb556
+  kind: POINTER
+  pointee_type_id: 0x133a33c5
+}
+pointer_reference {
+  id: 0x0e5f8a1a
+  kind: POINTER
+  pointee_type_id: 0x133ecef4
+}
+pointer_reference {
+  id: 0x0e5fdffa
+  kind: POINTER
+  pointee_type_id: 0x133f9977
+}
+pointer_reference {
+  id: 0x0e60e212
+  kind: POINTER
+  pointee_type_id: 0x13c36ed4
+}
+pointer_reference {
+  id: 0x0e627592
+  kind: POINTER
+  pointee_type_id: 0x13c930d6
+}
+pointer_reference {
+  id: 0x0e63dc40
+  kind: POINTER
+  pointee_type_id: 0x13cf979d
+}
+pointer_reference {
+  id: 0x0e64a1c8
+  kind: POINTER
+  pointee_type_id: 0x13d261bc
+}
+pointer_reference {
+  id: 0x0e65265f
+  kind: POINTER
+  pointee_type_id: 0x13d47fe3
+}
+pointer_reference {
+  id: 0x0e656e5d
+  kind: POINTER
+  pointee_type_id: 0x13d55fea
+}
+pointer_reference {
+  id: 0x0e6618c4
+  kind: POINTER
+  pointee_type_id: 0x13d8858f
+}
+pointer_reference {
+  id: 0x0e66fff2
+  kind: POINTER
+  pointee_type_id: 0x13db1955
+}
+pointer_reference {
+  id: 0x0e6713fe
+  kind: POINTER
+  pointee_type_id: 0x13dca967
+}
+pointer_reference {
+  id: 0x0e6750fa
+  kind: POINTER
+  pointee_type_id: 0x13dda576
+}
+pointer_reference {
+  id: 0x0e6861a8
+  kind: POINTER
+  pointee_type_id: 0x13e1603f
+}
+pointer_reference {
+  id: 0x0e68c604
+  kind: POINTER
+  pointee_type_id: 0x13e3fe8e
+}
+pointer_reference {
+  id: 0x0e68dab6
+  kind: POINTER
+  pointee_type_id: 0x13e38c46
+}
+pointer_reference {
+  id: 0x0e6ab35b
+  kind: POINTER
+  pointee_type_id: 0x13ea2bf1
+}
+pointer_reference {
+  id: 0x0e6b837a
+  kind: POINTER
+  pointee_type_id: 0x13eeeb77
+}
+pointer_reference {
+  id: 0x0e6ba6f7
+  kind: POINTER
+  pointee_type_id: 0x13ee7d42
+}
+pointer_reference {
+  id: 0x0e6c7d79
+  kind: POINTER
+  pointee_type_id: 0x13f11378
+}
+pointer_reference {
+  id: 0x0e6d7302
+  kind: POINTER
+  pointee_type_id: 0x13f52a95
+}
+pointer_reference {
+  id: 0x0e6de43c
+  kind: POINTER
+  pointee_type_id: 0x13f7766f
+}
+pointer_reference {
+  id: 0x0e6eb93c
+  kind: POINTER
+  pointee_type_id: 0x13fa026e
+}
+pointer_reference {
+  id: 0x0e708ec6
+  kind: POINTER
+  pointee_type_id: 0x1382dd85
+}
+pointer_reference {
+  id: 0x0e724a00
+  kind: POINTER
+  pointee_type_id: 0x1389ce9e
+}
+pointer_reference {
+  id: 0x0e72a800
+  kind: POINTER
+  pointee_type_id: 0x138a469e
+}
+pointer_reference {
+  id: 0x0e743897
+  kind: POINTER
+  pointee_type_id: 0x139004c0
+}
+pointer_reference {
+  id: 0x0e747c33
+  kind: POINTER
+  pointee_type_id: 0x13911651
+}
+pointer_reference {
+  id: 0x0e771961
+  kind: POINTER
+  pointee_type_id: 0x139c8318
+}
+pointer_reference {
+  id: 0x0e79b142
+  kind: POINTER
+  pointee_type_id: 0x13a62397
+}
+pointer_reference {
+  id: 0x0e7bcf6d
+  kind: POINTER
+  pointee_type_id: 0x13afdb2b
+}
+pointer_reference {
+  id: 0x0e7bdc3d
+  kind: POINTER
+  pointee_type_id: 0x13af966b
+}
+pointer_reference {
+  id: 0x0e7c01a4
+  kind: POINTER
+  pointee_type_id: 0x13b0e00f
+}
+pointer_reference {
+  id: 0x0e7c0293
+  kind: POINTER
+  pointee_type_id: 0x13b0ecd2
+}
+pointer_reference {
+  id: 0x0e7c0a8b
+  kind: POINTER
+  pointee_type_id: 0x13b0ccb3
+}
+pointer_reference {
+  id: 0x0e7d50ff
+  kind: POINTER
+  pointee_type_id: 0x13b5a562
+}
+pointer_reference {
+  id: 0x0e8010b3
+  kind: POINTER
+  pointee_type_id: 0x1040a452
+}
+pointer_reference {
+  id: 0x0e80c67d
+  kind: POINTER
+  pointee_type_id: 0x1043ff6b
+}
+pointer_reference {
+  id: 0x0e812745
+  kind: POINTER
+  pointee_type_id: 0x10447b88
+}
+pointer_reference {
+  id: 0x0e837004
+  kind: POINTER
+  pointee_type_id: 0x104d268f
+}
+pointer_reference {
+  id: 0x0e83c332
+  kind: POINTER
+  pointee_type_id: 0x104fea57
+}
+pointer_reference {
+  id: 0x0e846584
+  kind: POINTER
+  pointee_type_id: 0x1051708f
+}
+pointer_reference {
+  id: 0x0e8491e2
+  kind: POINTER
+  pointee_type_id: 0x1052a115
+}
+pointer_reference {
+  id: 0x0e84d111
+  kind: POINTER
+  pointee_type_id: 0x1053a2da
+}
+pointer_reference {
+  id: 0x0e84d226
+  kind: POINTER
+  pointee_type_id: 0x1053ae07
+}
+pointer_reference {
+  id: 0x0e851bf9
+  kind: POINTER
+  pointee_type_id: 0x10548979
+}
+pointer_reference {
+  id: 0x0e85b421
+  kind: POINTER
+  pointee_type_id: 0x10563618
+}
+pointer_reference {
+  id: 0x0e86946f
+  kind: POINTER
+  pointee_type_id: 0x105ab720
+}
+pointer_reference {
+  id: 0x0e86f8f4
+  kind: POINTER
+  pointee_type_id: 0x105b054f
+}
+pointer_reference {
+  id: 0x0e87d57a
+  kind: POINTER
+  pointee_type_id: 0x105fb374
+}
+pointer_reference {
+  id: 0x0e8833d6
+  kind: POINTER
+  pointee_type_id: 0x106029c6
+}
+pointer_reference {
+  id: 0x0e88668c
+  kind: POINTER
+  pointee_type_id: 0x10617cac
+}
+pointer_reference {
+  id: 0x0e88bc7d
+  kind: POINTER
+  pointee_type_id: 0x10621769
+}
+pointer_reference {
+  id: 0x0e8b1f30
+  kind: POINTER
+  pointee_type_id: 0x106c9a5c
+}
+pointer_reference {
+  id: 0x0e8c611e
+  kind: POINTER
+  pointee_type_id: 0x107162e7
+}
+pointer_reference {
+  id: 0x0e8de3e3
+  kind: POINTER
+  pointee_type_id: 0x10776911
+}
+pointer_reference {
+  id: 0x0e9068a5
+  kind: POINTER
+  pointee_type_id: 0x1001440a
+}
+pointer_reference {
+  id: 0x0e90717a
+  kind: POINTER
+  pointee_type_id: 0x10012374
+}
+pointer_reference {
+  id: 0x0e93a255
+  kind: POINTER
+  pointee_type_id: 0x100e6fc8
+}
+pointer_reference {
+  id: 0x0e943aa8
+  kind: POINTER
+  pointee_type_id: 0x10100c3c
+}
+pointer_reference {
+  id: 0x0e98fdb6
+  kind: POINTER
+  pointee_type_id: 0x10231046
+}
+pointer_reference {
+  id: 0x0e996219
+  kind: POINTER
+  pointee_type_id: 0x10256efa
+}
+pointer_reference {
+  id: 0x0e9993db
+  kind: POINTER
+  pointee_type_id: 0x1026a9f1
+}
+pointer_reference {
+  id: 0x0e99eb32
+  kind: POINTER
+  pointee_type_id: 0x10274a55
+}
+pointer_reference {
+  id: 0x0e9a2b80
+  kind: POINTER
+  pointee_type_id: 0x1028489f
+}
+pointer_reference {
+  id: 0x0e9bc1a8
+  kind: POINTER
+  pointee_type_id: 0x102fe03c
+}
+pointer_reference {
+  id: 0x0e9bcd61
+  kind: POINTER
+  pointee_type_id: 0x102fd31b
+}
+pointer_reference {
+  id: 0x0ea030ff
+  kind: POINTER
+  pointee_type_id: 0x10c02563
+}
+pointer_reference {
+  id: 0x0ea11ad5
+  kind: POINTER
+  pointee_type_id: 0x10c48dc9
+}
+pointer_reference {
+  id: 0x0ea330a0
+  kind: POINTER
+  pointee_type_id: 0x10cc241d
+}
+pointer_reference {
+  id: 0x0ea35c49
+  kind: POINTER
+  pointee_type_id: 0x10cd97b8
+}
+pointer_reference {
+  id: 0x0ea3bf3c
+  kind: POINTER
+  pointee_type_id: 0x10ce1a6e
+}
+pointer_reference {
+  id: 0x0ea41150
+  kind: POINTER
+  pointee_type_id: 0x10d0a3de
+}
+pointer_reference {
+  id: 0x0ea52fda
+  kind: POINTER
+  pointee_type_id: 0x10d459f4
+}
+pointer_reference {
+  id: 0x0ea7f74d
+  kind: POINTER
+  pointee_type_id: 0x10df3ba9
+}
+pointer_reference {
+  id: 0x0ea826cf
+  kind: POINTER
+  pointee_type_id: 0x10e07da0
+}
+pointer_reference {
+  id: 0x0ea91e0d
+  kind: POINTER
+  pointee_type_id: 0x10e49eaa
+}
+pointer_reference {
+  id: 0x0ea9795d
+  kind: POINTER
+  pointee_type_id: 0x10e503e9
+}
+pointer_reference {
+  id: 0x0eaa404f
+  kind: POINTER
+  pointee_type_id: 0x10e9e7a3
+}
+pointer_reference {
+  id: 0x0eaa77b7
+  kind: POINTER
+  pointee_type_id: 0x10e93841
+}
+pointer_reference {
+  id: 0x0eaba9b8
+  kind: POINTER
+  pointee_type_id: 0x10ee407c
+}
+pointer_reference {
+  id: 0x0eac4549
+  kind: POINTER
+  pointee_type_id: 0x10f1f3b8
+}
+pointer_reference {
+  id: 0x0eadc06c
+  kind: POINTER
+  pointee_type_id: 0x10f7e72f
+}
+pointer_reference {
+  id: 0x0eae11ad
+  kind: POINTER
+  pointee_type_id: 0x10f8a029
+}
+pointer_reference {
+  id: 0x0eae1965
+  kind: POINTER
+  pointee_type_id: 0x10f88309
+}
+pointer_reference {
+  id: 0x0eafcf90
+  kind: POINTER
+  pointee_type_id: 0x10ffd8df
+}
+pointer_reference {
+  id: 0x0eafeb8a
+  kind: POINTER
+  pointee_type_id: 0x10ff48b7
+}
+pointer_reference {
+  id: 0x0eb4c1f9
+  kind: POINTER
+  pointee_type_id: 0x1093e17a
+}
+pointer_reference {
+  id: 0x0eb62dc3
+  kind: POINTER
+  pointee_type_id: 0x10985193
+}
+pointer_reference {
+  id: 0x0eb6d039
+  kind: POINTER
+  pointee_type_id: 0x109ba67a
+}
+pointer_reference {
+  id: 0x0eb80ce3
+  kind: POINTER
+  pointee_type_id: 0x10a0d511
+}
+pointer_reference {
+  id: 0x0ebaa80a
+  kind: POINTER
+  pointee_type_id: 0x10aa46b4
+}
+pointer_reference {
+  id: 0x0ebaae79
+  kind: POINTER
+  pointee_type_id: 0x10aa5f7a
+}
+pointer_reference {
+  id: 0x0ebb9ddd
+  kind: POINTER
+  pointee_type_id: 0x10ae91e8
+}
+pointer_reference {
+  id: 0x0ebbc201
+  kind: POINTER
+  pointee_type_id: 0x10afee98
+}
+pointer_reference {
+  id: 0x0ebd5484
+  kind: POINTER
+  pointee_type_id: 0x10b5b48c
+}
+pointer_reference {
+  id: 0x0ebf01c0
+  kind: POINTER
+  pointee_type_id: 0x10bce19f
+}
+pointer_reference {
+  id: 0x0ec01381
+  kind: POINTER
+  pointee_type_id: 0x1140a899
+}
+pointer_reference {
+  id: 0x0ec1f4e9
+  kind: POINTER
+  pointee_type_id: 0x11473539
+}
+pointer_reference {
+  id: 0x0ec2dc62
+  kind: POINTER
+  pointee_type_id: 0x114b9716
+}
+pointer_reference {
+  id: 0x0ec6a54f
+  kind: POINTER
+  pointee_type_id: 0x115a73a0
+}
+pointer_reference {
+  id: 0x0ec895e7
+  kind: POINTER
+  pointee_type_id: 0x1162b103
+}
+pointer_reference {
+  id: 0x0ec899c2
+  kind: POINTER
+  pointee_type_id: 0x11628195
+}
+pointer_reference {
+  id: 0x0ec8cecd
+  kind: POINTER
+  pointee_type_id: 0x1163ddaa
+}
+pointer_reference {
+  id: 0x0ec90737
+  kind: POINTER
+  pointee_type_id: 0x1164fa41
+}
+pointer_reference {
+  id: 0x0ece1cac
+  kind: POINTER
+  pointee_type_id: 0x1178942c
+}
+pointer_reference {
+  id: 0x0eced1c1
+  kind: POINTER
+  pointee_type_id: 0x117ba19a
+}
+pointer_reference {
+  id: 0x0ecef1a9
+  kind: POINTER
+  pointee_type_id: 0x117b2038
+}
+pointer_reference {
+  id: 0x0ecfa2f0
+  kind: POINTER
+  pointee_type_id: 0x117e6d5e
+}
+pointer_reference {
+  id: 0x0ed04c60
+  kind: POINTER
+  pointee_type_id: 0x1101d71f
+}
+pointer_reference {
+  id: 0x0ed073a8
+  kind: POINTER
+  pointee_type_id: 0x1101283e
+}
+pointer_reference {
+  id: 0x0ed0ad54
+  kind: POINTER
+  pointee_type_id: 0x110253ce
+}
+pointer_reference {
+  id: 0x0ed129e6
+  kind: POINTER
+  pointee_type_id: 0x11044104
+}
+pointer_reference {
+  id: 0x0ed1d747
+  kind: POINTER
+  pointee_type_id: 0x1107bb82
+}
+pointer_reference {
+  id: 0x0ed29e69
+  kind: POINTER
+  pointee_type_id: 0x110a9f39
+}
+pointer_reference {
+  id: 0x0ed6e282
+  kind: POINTER
+  pointee_type_id: 0x111b6c97
+}
+pointer_reference {
+  id: 0x0ed76fdf
+  kind: POINTER
+  pointee_type_id: 0x111d59e3
+}
+pointer_reference {
+  id: 0x0ed82db2
+  kind: POINTER
+  pointee_type_id: 0x11205055
+}
+pointer_reference {
+  id: 0x0ed91a1b
+  kind: POINTER
+  pointee_type_id: 0x11248ef2
+}
+pointer_reference {
+  id: 0x0ed97d3b
+  kind: POINTER
+  pointee_type_id: 0x11251271
+}
+pointer_reference {
+  id: 0x0eda7457
+  kind: POINTER
+  pointee_type_id: 0x112937c0
+}
+pointer_reference {
+  id: 0x0edc065a
+  kind: POINTER
+  pointee_type_id: 0x1130fff4
+}
+pointer_reference {
+  id: 0x0edc9d68
+  kind: POINTER
+  pointee_type_id: 0x1132933c
+}
+pointer_reference {
+  id: 0x0edd74c9
+  kind: POINTER
+  pointee_type_id: 0x113535b8
+}
+pointer_reference {
+  id: 0x0ede182a
+  kind: POINTER
+  pointee_type_id: 0x11388634
+}
+pointer_reference {
+  id: 0x0edf2c30
+  kind: POINTER
+  pointee_type_id: 0x113c565d
+}
+pointer_reference {
+  id: 0x0edf648a
+  kind: POINTER
+  pointee_type_id: 0x113d74b5
+}
+pointer_reference {
+  id: 0x0ee00195
+  kind: POINTER
+  pointee_type_id: 0x11c0e0ca
+}
+pointer_reference {
+  id: 0x0ee01d19
+  kind: POINTER
+  pointee_type_id: 0x11c092fa
+}
+pointer_reference {
+  id: 0x0ee038bb
+  kind: POINTER
+  pointee_type_id: 0x11c00471
+}
+pointer_reference {
+  id: 0x0ee0d5d1
+  kind: POINTER
+  pointee_type_id: 0x11c3b1da
+}
+pointer_reference {
+  id: 0x0ee0e2a3
+  kind: POINTER
+  pointee_type_id: 0x11c36c13
+}
+pointer_reference {
+  id: 0x0ee13889
+  kind: POINTER
+  pointee_type_id: 0x11c404ba
+}
+pointer_reference {
+  id: 0x0ee222da
+  kind: POINTER
+  pointee_type_id: 0x11c86df7
+}
+pointer_reference {
+  id: 0x0ee2db52
+  kind: POINTER
+  pointee_type_id: 0x11cb8bd5
+}
+pointer_reference {
+  id: 0x0ee3c725
+  kind: POINTER
+  pointee_type_id: 0x11cffa09
+}
+pointer_reference {
+  id: 0x0ee3dd73
+  kind: POINTER
+  pointee_type_id: 0x11cf9350
+}
+pointer_reference {
+  id: 0x0ee450d7
+  kind: POINTER
+  pointee_type_id: 0x11d1a5c3
+}
+pointer_reference {
+  id: 0x0ee55270
+  kind: POINTER
+  pointee_type_id: 0x11d5af5e
+}
+pointer_reference {
+  id: 0x0ee5de95
+  kind: POINTER
+  pointee_type_id: 0x11d79ccb
+}
+pointer_reference {
+  id: 0x0ee5efc4
+  kind: POINTER
+  pointee_type_id: 0x11d7598d
+}
+pointer_reference {
+  id: 0x0ee99834
+  kind: POINTER
+  pointee_type_id: 0x11e6864c
+}
+pointer_reference {
+  id: 0x0eea07ff
+  kind: POINTER
+  pointee_type_id: 0x11e8f961
+}
+pointer_reference {
+  id: 0x0eee7907
+  kind: POINTER
+  pointee_type_id: 0x11f90280
+}
+pointer_reference {
+  id: 0x0ef35c55
+  kind: POINTER
+  pointee_type_id: 0x118d97cb
+}
+pointer_reference {
+  id: 0x0ef6d218
+  kind: POINTER
+  pointee_type_id: 0x119baefc
+}
+pointer_reference {
+  id: 0x0ef7c244
+  kind: POINTER
+  pointee_type_id: 0x119fef8e
+}
+pointer_reference {
+  id: 0x0ef8d1e2
+  kind: POINTER
+  pointee_type_id: 0x11a3a114
+}
+pointer_reference {
+  id: 0x0ef957a3
+  kind: POINTER
+  pointee_type_id: 0x11a5b810
+}
+pointer_reference {
+  id: 0x0efa0a60
+  kind: POINTER
+  pointee_type_id: 0x11a8cf1e
+}
+pointer_reference {
+  id: 0x0efa6637
+  kind: POINTER
+  pointee_type_id: 0x11a97e41
+}
+pointer_reference {
+  id: 0x0efbdbdb
+  kind: POINTER
+  pointee_type_id: 0x11af89f2
+}
+pointer_reference {
+  id: 0x0efc89b4
+  kind: POINTER
+  pointee_type_id: 0x11b2c04d
+}
+pointer_reference {
+  id: 0x0efc9002
+  kind: POINTER
+  pointee_type_id: 0x11b2a696
+}
+pointer_reference {
+  id: 0x0efccc31
+  kind: POINTER
+  pointee_type_id: 0x11b3d658
+}
+pointer_reference {
+  id: 0x0efd34ff
+  kind: POINTER
+  pointee_type_id: 0x11b43560
+}
+pointer_reference {
+  id: 0x0efedd0a
+  kind: POINTER
+  pointee_type_id: 0x11bb92b7
+}
+pointer_reference {
+  id: 0x0eff2677
+  kind: POINTER
+  pointee_type_id: 0x11bc7f41
+}
+pointer_reference {
+  id: 0x0effb461
+  kind: POINTER
+  pointee_type_id: 0x11be371a
+}
+pointer_reference {
+  id: 0x0effc5a1
+  kind: POINTER
+  pointee_type_id: 0x11bff01b
+}
+pointer_reference {
+  id: 0x0efff92a
+  kind: POINTER
+  pointee_type_id: 0x11bf0236
+}
+pointer_reference {
+  id: 0x0f00978d
+  kind: POINTER
+  pointee_type_id: 0x1642b8aa
+}
+pointer_reference {
+  id: 0x0f00ab39
+  kind: POINTER
+  pointee_type_id: 0x16424a7b
+}
+pointer_reference {
+  id: 0x0f014afc
+  kind: POINTER
+  pointee_type_id: 0x1645cd6c
+}
+pointer_reference {
+  id: 0x0f016270
+  kind: POINTER
+  pointee_type_id: 0x16456f5c
+}
+pointer_reference {
+  id: 0x0f019c55
+  kind: POINTER
+  pointee_type_id: 0x164697c8
+}
+pointer_reference {
+  id: 0x0f032feb
+  kind: POINTER
+  pointee_type_id: 0x164c5933
+}
+pointer_reference {
+  id: 0x0f04e0db
+  kind: POINTER
+  pointee_type_id: 0x165365f0
+}
+pointer_reference {
+  id: 0x0f04e7c1
+  kind: POINTER
+  pointee_type_id: 0x1653799a
+}
+pointer_reference {
+  id: 0x0f054e36
+  kind: POINTER
+  pointee_type_id: 0x1655de44
+}
+pointer_reference {
+  id: 0x0f0625fc
+  kind: POINTER
+  pointee_type_id: 0x1658716c
+}
+pointer_reference {
+  id: 0x0f07cf2c
+  kind: POINTER
+  pointee_type_id: 0x165fda2d
+}
+pointer_reference {
+  id: 0x0f07f6be
+  kind: POINTER
+  pointee_type_id: 0x165f3c66
+}
+pointer_reference {
+  id: 0x0f08e52a
+  kind: POINTER
+  pointee_type_id: 0x16637235
+}
+pointer_reference {
+  id: 0x0f0ac0ac
+  kind: POINTER
+  pointee_type_id: 0x166be42c
+}
+pointer_reference {
+  id: 0x0f0ae387
+  kind: POINTER
+  pointee_type_id: 0x166b6880
+}
+pointer_reference {
+  id: 0x0f0b2702
+  kind: POINTER
+  pointee_type_id: 0x166c7a96
+}
+pointer_reference {
+  id: 0x0f0c4873
+  kind: POINTER
+  pointee_type_id: 0x1671c751
+}
+pointer_reference {
+  id: 0x0f0deded
+  kind: POINTER
+  pointee_type_id: 0x16775128
+}
+pointer_reference {
+  id: 0x0f0e74c9
+  kind: POINTER
+  pointee_type_id: 0x167935b9
+}
+pointer_reference {
+  id: 0x0f0e8ef4
+  kind: POINTER
+  pointee_type_id: 0x167add4d
+}
+pointer_reference {
+  id: 0x0f0f3fa0
+  kind: POINTER
+  pointee_type_id: 0x167c181d
+}
+pointer_reference {
+  id: 0x0f161b41
+  kind: POINTER
+  pointee_type_id: 0x16188b98
+}
+pointer_reference {
+  id: 0x0f1628f0
+  kind: POINTER
+  pointee_type_id: 0x1618455d
+}
+pointer_reference {
+  id: 0x0f1728d9
+  kind: POINTER
+  pointee_type_id: 0x161c45fb
+}
+pointer_reference {
+  id: 0x0f18c71d
+  kind: POINTER
+  pointee_type_id: 0x1623faea
+}
+pointer_reference {
+  id: 0x0f1de512
+  kind: POINTER
+  pointee_type_id: 0x163772d7
+}
+pointer_reference {
+  id: 0x0f1efc7f
+  kind: POINTER
+  pointee_type_id: 0x163b1761
+}
+pointer_reference {
+  id: 0x0f20855e
+  kind: POINTER
+  pointee_type_id: 0x16c2f3e5
+}
+pointer_reference {
+  id: 0x0f2334f8
+  kind: POINTER
+  pointee_type_id: 0x16cc357f
+}
+pointer_reference {
+  id: 0x0f234ce1
+  kind: POINTER
+  pointee_type_id: 0x16cdd518
+}
+pointer_reference {
+  id: 0x0f241d93
+  kind: POINTER
+  pointee_type_id: 0x16d090d3
+}
+pointer_reference {
+  id: 0x0f2546f5
+  kind: POINTER
+  pointee_type_id: 0x16d5fd4b
+}
+pointer_reference {
+  id: 0x0f25e7fc
+  kind: POINTER
+  pointee_type_id: 0x16d7796c
+}
+pointer_reference {
+  id: 0x0f2679f1
+  kind: POINTER
+  pointee_type_id: 0x16d90158
+}
+pointer_reference {
+  id: 0x0f2735b4
+  kind: POINTER
+  pointee_type_id: 0x16dc304e
+}
+pointer_reference {
+  id: 0x0f27f3f4
+  kind: POINTER
+  pointee_type_id: 0x16df294f
+}
+pointer_reference {
+  id: 0x0f281641
+  kind: POINTER
+  pointee_type_id: 0x16e0bf9a
+}
+pointer_reference {
+  id: 0x0f283d10
+  kind: POINTER
+  pointee_type_id: 0x16e012de
+}
+pointer_reference {
+  id: 0x0f28eb1e
+  kind: POINTER
+  pointee_type_id: 0x16e34ae5
+}
+pointer_reference {
+  id: 0x0f295ab9
+  kind: POINTER
+  pointee_type_id: 0x16e58c7b
+}
+pointer_reference {
+  id: 0x0f2a6d84
+  kind: POINTER
+  pointee_type_id: 0x16e9508e
+}
+pointer_reference {
+  id: 0x0f2acb59
+  kind: POINTER
+  pointee_type_id: 0x16ebcbfa
+}
+pointer_reference {
+  id: 0x0f2ca5ce
+  kind: POINTER
+  pointee_type_id: 0x16f271a5
+}
+pointer_reference {
+  id: 0x0f2ccb0e
+  kind: POINTER
+  pointee_type_id: 0x16f3caa7
+}
+pointer_reference {
+  id: 0x0f2d8dda
+  kind: POINTER
+  pointee_type_id: 0x16f6d1f5
+}
+pointer_reference {
+  id: 0x0f2f59b0
+  kind: POINTER
+  pointee_type_id: 0x16fd805c
+}
+pointer_reference {
+  id: 0x0f2f95e7
+  kind: POINTER
+  pointee_type_id: 0x16feb101
+}
+pointer_reference {
+  id: 0x0f301293
+  kind: POINTER
+  pointee_type_id: 0x1680acd0
+}
+pointer_reference {
+  id: 0x0f3218c3
+  kind: POINTER
+  pointee_type_id: 0x16888592
+}
+pointer_reference {
+  id: 0x0f325746
+  kind: POINTER
+  pointee_type_id: 0x1689bb86
+}
+pointer_reference {
+  id: 0x0f33f4ac
+  kind: POINTER
+  pointee_type_id: 0x168f342d
+}
+pointer_reference {
+  id: 0x0f34b275
+  kind: POINTER
+  pointee_type_id: 0x16922f49
+}
+pointer_reference {
+  id: 0x0f36df47
+  kind: POINTER
+  pointee_type_id: 0x169b9b81
+}
+pointer_reference {
+  id: 0x0f377d1a
+  kind: POINTER
+  pointee_type_id: 0x169d12f4
+}
+pointer_reference {
+  id: 0x0f377e3a
+  kind: POINTER
+  pointee_type_id: 0x169d1e76
+}
+pointer_reference {
+  id: 0x0f388b6d
+  kind: POINTER
+  pointee_type_id: 0x16a2cb2b
+}
+pointer_reference {
+  id: 0x0f392d09
+  kind: POINTER
+  pointee_type_id: 0x16a452bb
+}
+pointer_reference {
+  id: 0x0f3a5c02
+  kind: POINTER
+  pointee_type_id: 0x16a99695
+}
+pointer_reference {
+  id: 0x0f3d78fb
+  kind: POINTER
+  pointee_type_id: 0x16b50572
+}
+pointer_reference {
+  id: 0x0f3dfb90
+  kind: POINTER
+  pointee_type_id: 0x16b708df
+}
+pointer_reference {
+  id: 0x0f3e5a8c
+  kind: POINTER
+  pointee_type_id: 0x16b98cae
+}
+pointer_reference {
+  id: 0x0f3e6082
+  kind: POINTER
+  pointee_type_id: 0x16b96494
+}
+pointer_reference {
+  id: 0x0f3ec6f4
+  kind: POINTER
+  pointee_type_id: 0x16bbfd4f
+}
+pointer_reference {
+  id: 0x0f434cf3
+  kind: POINTER
+  pointee_type_id: 0x174dd551
+}
+pointer_reference {
+  id: 0x0f4445e5
+  kind: POINTER
+  pointee_type_id: 0x1751f109
+}
+pointer_reference {
+  id: 0x0f445cde
+  kind: POINTER
+  pointee_type_id: 0x175195e4
+}
+pointer_reference {
+  id: 0x0f48bbc7
+  kind: POINTER
+  pointee_type_id: 0x17620981
+}
+pointer_reference {
+  id: 0x0f4b3297
+  kind: POINTER
+  pointee_type_id: 0x176c2cc0
+}
+pointer_reference {
+  id: 0x0f4b7529
+  kind: POINTER
+  pointee_type_id: 0x176d3238
+}
+pointer_reference {
+  id: 0x0f4dcd61
+  kind: POINTER
+  pointee_type_id: 0x1777d31b
+}
+pointer_reference {
+  id: 0x0f4ff759
+  kind: POINTER
+  pointee_type_id: 0x177f3bf9
+}
+pointer_reference {
+  id: 0x0f514133
+  kind: POINTER
+  pointee_type_id: 0x1705e250
+}
+pointer_reference {
+  id: 0x0f5a291c
+  kind: POINTER
+  pointee_type_id: 0x172842ec
+}
+pointer_reference {
+  id: 0x0f5acba0
+  kind: POINTER
+  pointee_type_id: 0x172bc81f
+}
+pointer_reference {
+  id: 0x0f5adb43
+  kind: POINTER
+  pointee_type_id: 0x172b8b93
+}
+pointer_reference {
+  id: 0x0f5b7e3a
+  kind: POINTER
+  pointee_type_id: 0x172d1e74
+}
+pointer_reference {
+  id: 0x0f5ba34e
+  kind: POINTER
+  pointee_type_id: 0x172e6ba7
+}
+pointer_reference {
+  id: 0x0f5e0dda
+  kind: POINTER
+  pointee_type_id: 0x1738d1f7
+}
+pointer_reference {
+  id: 0x0f5e5d84
+  kind: POINTER
+  pointee_type_id: 0x1739908d
+}
+pointer_reference {
+  id: 0x0f5f18a4
+  kind: POINTER
+  pointee_type_id: 0x173c840d
+}
+pointer_reference {
+  id: 0x0f5f599e
+  kind: POINTER
+  pointee_type_id: 0x173d80e7
+}
+pointer_reference {
+  id: 0x0f5f5d9d
+  kind: POINTER
+  pointee_type_id: 0x173d90e9
+}
+pointer_reference {
+  id: 0x0f61e7b5
+  kind: POINTER
+  pointee_type_id: 0x17c77849
+}
+pointer_reference {
+  id: 0x0f626ee5
+  kind: POINTER
+  pointee_type_id: 0x17c95d08
+}
+pointer_reference {
+  id: 0x0f627bc8
+  kind: POINTER
+  pointee_type_id: 0x17c909bc
+}
+pointer_reference {
+  id: 0x0f6379da
+  kind: POINTER
+  pointee_type_id: 0x17cd01f5
+}
+pointer_reference {
+  id: 0x0f63be8f
+  kind: POINTER
+  pointee_type_id: 0x17ce1ca0
+}
+pointer_reference {
+  id: 0x0f677ef9
+  kind: POINTER
+  pointee_type_id: 0x17dd1d78
+}
+pointer_reference {
+  id: 0x0f67b75e
+  kind: POINTER
+  pointee_type_id: 0x17de3be6
+}
+pointer_reference {
+  id: 0x0f687cbf
+  kind: POINTER
+  pointee_type_id: 0x17e11460
+}
+pointer_reference {
+  id: 0x0f69541a
+  kind: POINTER
+  pointee_type_id: 0x17e5b6f5
+}
+pointer_reference {
+  id: 0x0f6a1081
+  kind: POINTER
+  pointee_type_id: 0x17e8a499
+}
+pointer_reference {
+  id: 0x0f6a3544
+  kind: POINTER
+  pointee_type_id: 0x17e8338e
+}
+pointer_reference {
+  id: 0x0f6acd3e
+  kind: POINTER
+  pointee_type_id: 0x17ebd264
+}
+pointer_reference {
+  id: 0x0f6ef6cc
+  kind: POINTER
+  pointee_type_id: 0x17fb3dac
+}
+pointer_reference {
+  id: 0x0f6fc2f1
+  kind: POINTER
+  pointee_type_id: 0x17ffed59
+}
+pointer_reference {
+  id: 0x0f70080a
+  kind: POINTER
+  pointee_type_id: 0x1780c6b7
+}
+pointer_reference {
+  id: 0x0f7008a4
+  kind: POINTER
+  pointee_type_id: 0x1780c40c
+}
+pointer_reference {
+  id: 0x0f71fbf9
+  kind: POINTER
+  pointee_type_id: 0x1787097a
+}
+pointer_reference {
+  id: 0x0f72ddf9
+  kind: POINTER
+  pointee_type_id: 0x178b9178
+}
+pointer_reference {
+  id: 0x0f7414e8
+  kind: POINTER
+  pointee_type_id: 0x1790b53d
+}
+pointer_reference {
+  id: 0x0f74dfe9
+  kind: POINTER
+  pointee_type_id: 0x17939939
+}
+pointer_reference {
+  id: 0x0f765b6d
+  kind: POINTER
+  pointee_type_id: 0x17998b28
+}
+pointer_reference {
+  id: 0x0f77ab9d
+  kind: POINTER
+  pointee_type_id: 0x179e48e8
+}
+pointer_reference {
+  id: 0x0f78474f
+  kind: POINTER
+  pointee_type_id: 0x17a1fba0
+}
+pointer_reference {
+  id: 0x0f787c1e
+  kind: POINTER
+  pointee_type_id: 0x17a116e4
+}
+pointer_reference {
+  id: 0x0f78a6c8
+  kind: POINTER
+  pointee_type_id: 0x17a27dbe
+}
+pointer_reference {
+  id: 0x0f798713
+  kind: POINTER
+  pointee_type_id: 0x17a6fad3
+}
+pointer_reference {
+  id: 0x0f79fcf8
+  kind: POINTER
+  pointee_type_id: 0x17a7157e
+}
+pointer_reference {
+  id: 0x0f7a6de4
+  kind: POINTER
+  pointee_type_id: 0x17a9510e
+}
+pointer_reference {
+  id: 0x0f7ac5c1
+  kind: POINTER
+  pointee_type_id: 0x17abf19b
+}
+pointer_reference {
+  id: 0x0f7bbe5f
+  kind: POINTER
+  pointee_type_id: 0x17ae1fe2
+}
+pointer_reference {
+  id: 0x0f7bef07
+  kind: POINTER
+  pointee_type_id: 0x17af5a82
+}
+pointer_reference {
+  id: 0x0f7c26a0
+  kind: POINTER
+  pointee_type_id: 0x17b07c1e
+}
+pointer_reference {
+  id: 0x0f7d4a83
+  kind: POINTER
+  pointee_type_id: 0x17b5cc93
+}
+pointer_reference {
+  id: 0x0f7dbeee
+  kind: POINTER
+  pointee_type_id: 0x17b61d24
+}
+pointer_reference {
+  id: 0x0f7dcc52
+  kind: POINTER
+  pointee_type_id: 0x17b7d7d6
+}
+pointer_reference {
+  id: 0x0f7ddf45
+  kind: POINTER
+  pointee_type_id: 0x17b79b8a
+}
+pointer_reference {
+  id: 0x0f7fad31
+  kind: POINTER
+  pointee_type_id: 0x17be5258
+}
+pointer_reference {
+  id: 0x0f8438b2
+  kind: POINTER
+  pointee_type_id: 0x14500457
+}
+pointer_reference {
+  id: 0x0f84f077
+  kind: POINTER
+  pointee_type_id: 0x14532743
+}
+pointer_reference {
+  id: 0x0f8519f7
+  kind: POINTER
+  pointee_type_id: 0x14548140
+}
+pointer_reference {
+  id: 0x0f852e4a
+  kind: POINTER
+  pointee_type_id: 0x14545fb5
+}
+pointer_reference {
+  id: 0x0f869028
+  kind: POINTER
+  pointee_type_id: 0x145aa63c
+}
+pointer_reference {
+  id: 0x0f8765b2
+  kind: POINTER
+  pointee_type_id: 0x145d7056
+}
+pointer_reference {
+  id: 0x0f876a03
+  kind: POINTER
+  pointee_type_id: 0x145d4e91
+}
+pointer_reference {
+  id: 0x0f88e7f2
+  kind: POINTER
+  pointee_type_id: 0x14637955
+}
+pointer_reference {
+  id: 0x0f8dfc5e
+  kind: POINTER
+  pointee_type_id: 0x147717e5
+}
+pointer_reference {
+  id: 0x0f8e6cef
+  kind: POINTER
+  pointee_type_id: 0x14795522
+}
+pointer_reference {
+  id: 0x0f8ea330
+  kind: POINTER
+  pointee_type_id: 0x147a6a5d
+}
+pointer_reference {
+  id: 0x0f908012
+  kind: POINTER
+  pointee_type_id: 0x1402e6d4
+}
+pointer_reference {
+  id: 0x0f91dccc
+  kind: POINTER
+  pointee_type_id: 0x140795ac
+}
+pointer_reference {
+  id: 0x0f9357d8
+  kind: POINTER
+  pointee_type_id: 0x140db9fc
+}
+pointer_reference {
+  id: 0x0f93b3f4
+  kind: POINTER
+  pointee_type_id: 0x140e294e
+}
+pointer_reference {
+  id: 0x0f961e72
+  kind: POINTER
+  pointee_type_id: 0x14189f57
+}
+pointer_reference {
+  id: 0x0f9679ce
+  kind: POINTER
+  pointee_type_id: 0x141901a7
+}
+pointer_reference {
+  id: 0x0f972c3a
+  kind: POINTER
+  pointee_type_id: 0x141c5677
+}
+pointer_reference {
+  id: 0x0f985851
+  kind: POINTER
+  pointee_type_id: 0x142187db
+}
+pointer_reference {
+  id: 0x0f988369
+  kind: POINTER
+  pointee_type_id: 0x1422eb3a
+}
+pointer_reference {
+  id: 0x0f9a2667
+  kind: POINTER
+  pointee_type_id: 0x14287f03
+}
+pointer_reference {
+  id: 0x0f9e60f8
+  kind: POINTER
+  pointee_type_id: 0x1439657e
+}
+pointer_reference {
+  id: 0x0fa01494
+  kind: POINTER
+  pointee_type_id: 0x14c0b4cf
+}
+pointer_reference {
+  id: 0x0fa0559d
+  kind: POINTER
+  pointee_type_id: 0x14c1b0e8
+}
+pointer_reference {
+  id: 0x0fa14b4c
+  kind: POINTER
+  pointee_type_id: 0x14c5cbad
+}
+pointer_reference {
+  id: 0x0fa1856e
+  kind: POINTER
+  pointee_type_id: 0x14c6f325
+}
+pointer_reference {
+  id: 0x0fa1cf5a
+  kind: POINTER
+  pointee_type_id: 0x14c7dbf6
+}
+pointer_reference {
+  id: 0x0fa23f49
+  kind: POINTER
+  pointee_type_id: 0x14c81bbb
+}
+pointer_reference {
+  id: 0x0fa358e7
+  kind: POINTER
+  pointee_type_id: 0x14cd8502
+}
+pointer_reference {
+  id: 0x0fa64587
+  kind: POINTER
+  pointee_type_id: 0x14d9f083
+}
+pointer_reference {
+  id: 0x0fa767da
+  kind: POINTER
+  pointee_type_id: 0x14dd79f5
+}
+pointer_reference {
+  id: 0x0fa7f64c
+  kind: POINTER
+  pointee_type_id: 0x14df3fae
+}
+pointer_reference {
+  id: 0x0fa845a7
+  kind: POINTER
+  pointee_type_id: 0x14e1f000
+}
+pointer_reference {
+  id: 0x0fab66ce
+  kind: POINTER
+  pointee_type_id: 0x14ed7da4
+}
+pointer_reference {
+  id: 0x0fabaf3b
+  kind: POINTER
+  pointee_type_id: 0x14ee5a71
+}
+pointer_reference {
+  id: 0x0fac5cb3
+  kind: POINTER
+  pointee_type_id: 0x14f19451
+}
+pointer_reference {
+  id: 0x0faef4bf
+  kind: POINTER
+  pointee_type_id: 0x14fb3461
+}
+pointer_reference {
+  id: 0x0fb12072
+  kind: POINTER
+  pointee_type_id: 0x14846756
+}
+pointer_reference {
+  id: 0x0fb1d80a
+  kind: POINTER
+  pointee_type_id: 0x148786b7
+}
+pointer_reference {
+  id: 0x0fb2015e
+  kind: POINTER
+  pointee_type_id: 0x1488e3e7
+}
+pointer_reference {
+  id: 0x0fb79469
+  kind: POINTER
+  pointee_type_id: 0x149eb739
+}
+pointer_reference {
+  id: 0x0fb7be27
+  kind: POINTER
+  pointee_type_id: 0x149e1e01
+}
+pointer_reference {
+  id: 0x0fb82403
+  kind: POINTER
+  pointee_type_id: 0x14a07690
+}
+pointer_reference {
+  id: 0x0fbd3b84
+  kind: POINTER
+  pointee_type_id: 0x14b4088f
+}
+pointer_reference {
+  id: 0x0fbe677e
+  kind: POINTER
+  pointee_type_id: 0x14b97b66
+}
+pointer_reference {
+  id: 0x0fc0b18e
+  kind: POINTER
+  pointee_type_id: 0x154220a5
+}
+pointer_reference {
+  id: 0x0fc0d198
+  kind: POINTER
+  pointee_type_id: 0x1543a0fd
+}
+pointer_reference {
+  id: 0x0fc31877
+  kind: POINTER
+  pointee_type_id: 0x154c8742
+}
+pointer_reference {
+  id: 0x0fc38cea
+  kind: POINTER
+  pointee_type_id: 0x154ed535
+}
+pointer_reference {
+  id: 0x0fc46487
+  kind: POINTER
+  pointee_type_id: 0x15517480
+}
+pointer_reference {
+  id: 0x0fc6fef1
+  kind: POINTER
+  pointee_type_id: 0x155b1d5a
+}
+pointer_reference {
+  id: 0x0fc98f46
+  kind: POINTER
+  pointee_type_id: 0x1566db85
+}
+pointer_reference {
+  id: 0x0fc9cef8
+  kind: POINTER
+  pointee_type_id: 0x1567dd7e
+}
+pointer_reference {
+  id: 0x0fcb861f
+  kind: POINTER
+  pointee_type_id: 0x156efee0
+}
+pointer_reference {
+  id: 0x0fcc1a02
+  kind: POINTER
+  pointee_type_id: 0x15708e94
+}
+pointer_reference {
+  id: 0x0fcc2ee9
+  kind: POINTER
+  pointee_type_id: 0x15705d39
+}
+pointer_reference {
+  id: 0x0fcc8cc6
+  kind: POINTER
+  pointee_type_id: 0x1572d585
+}
+pointer_reference {
+  id: 0x0fce2ac8
+  kind: POINTER
+  pointee_type_id: 0x15784dbd
+}
+pointer_reference {
+  id: 0x0fce912b
+  kind: POINTER
+  pointee_type_id: 0x157aa231
+}
+pointer_reference {
+  id: 0x0fd14d12
+  kind: POINTER
+  pointee_type_id: 0x1505d2d7
+}
+pointer_reference {
+  id: 0x0fd19d4c
+  kind: POINTER
+  pointee_type_id: 0x150693ae
+}
+pointer_reference {
+  id: 0x0fd2c0d1
+  kind: POINTER
+  pointee_type_id: 0x150be5da
+}
+pointer_reference {
+  id: 0x0fd3f1ea
+  kind: POINTER
+  pointee_type_id: 0x150f2137
+}
+pointer_reference {
+  id: 0x0fd41724
+  kind: POINTER
+  pointee_type_id: 0x1510ba0d
+}
+pointer_reference {
+  id: 0x0fd62916
+  kind: POINTER
+  pointee_type_id: 0x151842c6
+}
+pointer_reference {
+  id: 0x0fd7dd3d
+  kind: POINTER
+  pointee_type_id: 0x151f9269
+}
+pointer_reference {
+  id: 0x0fe089de
+  kind: POINTER
+  pointee_type_id: 0x15c2c1e4
+}
+pointer_reference {
+  id: 0x0fe1720b
+  kind: POINTER
+  pointee_type_id: 0x15c52eb1
+}
+pointer_reference {
+  id: 0x0fe49d17
+  kind: POINTER
+  pointee_type_id: 0x15d292c2
+}
+pointer_reference {
+  id: 0x0fe70006
+  kind: POINTER
+  pointee_type_id: 0x15dce685
+}
+pointer_reference {
+  id: 0x0fe76e66
+  kind: POINTER
+  pointee_type_id: 0x15dd5f06
+}
+pointer_reference {
+  id: 0x0fe7f509
+  kind: POINTER
+  pointee_type_id: 0x15df32b8
+}
+pointer_reference {
+  id: 0x0fe90dc6
+  kind: POINTER
+  pointee_type_id: 0x15e4d187
+}
+pointer_reference {
+  id: 0x0fe9ffda
+  kind: POINTER
+  pointee_type_id: 0x15e719f6
+}
+pointer_reference {
+  id: 0x0fea155c
+  kind: POINTER
+  pointee_type_id: 0x15e8b3ee
+}
+pointer_reference {
+  id: 0x0fea61da
+  kind: POINTER
+  pointee_type_id: 0x15e961f4
+}
+pointer_reference {
+  id: 0x0feb1d85
+  kind: POINTER
+  pointee_type_id: 0x15ec908b
+}
+pointer_reference {
+  id: 0x0fec1dc1
+  kind: POINTER
+  pointee_type_id: 0x15f0919b
+}
+pointer_reference {
+  id: 0x0fec25a9
+  kind: POINTER
+  pointee_type_id: 0x15f07039
+}
+pointer_reference {
+  id: 0x0ff0075d
+  kind: POINTER
+  pointee_type_id: 0x1580fbe8
+}
+pointer_reference {
+  id: 0x0ff75938
+  kind: POINTER
+  pointee_type_id: 0x159d827c
+}
+pointer_reference {
+  id: 0x0ff7df67
+  kind: POINTER
+  pointee_type_id: 0x159f9b02
+}
+pointer_reference {
+  id: 0x0ff8963c
+  kind: POINTER
+  pointee_type_id: 0x15a2be6d
+}
+pointer_reference {
+  id: 0x0ff8ee0d
+  kind: POINTER
+  pointee_type_id: 0x15a35eaa
+}
+pointer_reference {
+  id: 0x0ff8f9af
+  kind: POINTER
+  pointee_type_id: 0x15a30023
+}
+pointer_reference {
+  id: 0x0ffdb990
+  kind: POINTER
+  pointee_type_id: 0x15b600dd
+}
+pointer_reference {
+  id: 0x0fff2047
+  kind: POINTER
+  pointee_type_id: 0x15bc6783
+}
+pointer_reference {
+  id: 0x100a15ee
+  kind: POINTER
+  pointee_type_id: 0x6a68b125
+}
+pointer_reference {
+  id: 0x10134e31
+  kind: POINTER
+  pointee_type_id: 0x6a0dde59
+}
+pointer_reference {
+  id: 0x1013df15
+  kind: POINTER
+  pointee_type_id: 0x6a0f9ac9
+}
+pointer_reference {
+  id: 0x1015bc71
+  kind: POINTER
+  pointee_type_id: 0x6a16175b
+}
+pointer_reference {
+  id: 0x10193e4a
+  kind: POINTER
+  pointee_type_id: 0x6a241fb6
+}
+pointer_reference {
+  id: 0x10199b0f
+  kind: POINTER
+  pointee_type_id: 0x6a268aa0
+}
+pointer_reference {
+  id: 0x101a7aa5
+  kind: POINTER
+  pointee_type_id: 0x6a290c0b
+}
+pointer_reference {
+  id: 0x101b9aaa
+  kind: POINTER
+  pointee_type_id: 0x6a2e8c34
+}
+pointer_reference {
+  id: 0x101ba464
+  kind: POINTER
+  pointee_type_id: 0x6a2e770c
+}
+pointer_reference {
+  id: 0x101cb45e
+  kind: POINTER
+  pointee_type_id: 0x6a3237e4
+}
+pointer_reference {
+  id: 0x101cb96a
+  kind: POINTER
+  pointee_type_id: 0x6a320335
+}
+pointer_reference {
+  id: 0x1023f4f6
+  kind: POINTER
+  pointee_type_id: 0x6acf3546
+}
+pointer_reference {
+  id: 0x102bb9c6
+  kind: POINTER
+  pointee_type_id: 0x6aee0185
+}
+pointer_reference {
+  id: 0x1030cbfb
+  kind: POINTER
+  pointee_type_id: 0x6a83c970
+}
+pointer_reference {
+  id: 0x10321094
+  kind: POINTER
+  pointee_type_id: 0x6a88a4ce
+}
+pointer_reference {
+  id: 0x10333bd2
+  kind: POINTER
+  pointee_type_id: 0x6a8c09d7
+}
+pointer_reference {
+  id: 0x1042c9d1
+  kind: POINTER
+  pointee_type_id: 0x6b4bc1db
+}
+pointer_reference {
+  id: 0x104d069a
+  kind: POINTER
+  pointee_type_id: 0x6b74fcf6
+}
+pointer_reference {
+  id: 0x104d72c1
+  kind: POINTER
+  pointee_type_id: 0x6b752d98
+}
+pointer_reference {
+  id: 0x105b358b
+  kind: POINTER
+  pointee_type_id: 0x6b2c30b0
+}
+pointer_reference {
+  id: 0x105b4e59
+  kind: POINTER
+  pointee_type_id: 0x6b2ddff9
+}
+pointer_reference {
+  id: 0x105c8027
+  kind: POINTER
+  pointee_type_id: 0x6b32e600
+}
+pointer_reference {
+  id: 0x106029c6
+  kind: POINTER
+  pointee_type_id: 0x6bc04187
+}
+pointer_reference {
+  id: 0x10617c73
+  kind: POINTER
+  pointee_type_id: 0x6bc51750
+}
+pointer_reference {
+  id: 0x10617cac
+  kind: POINTER
+  pointee_type_id: 0x6bc5142c
+}
+pointer_reference {
+  id: 0x10673339
+  kind: POINTER
+  pointee_type_id: 0x6bdc2a7a
+}
+pointer_reference {
+  id: 0x106a082a
+  kind: POINTER
+  pointee_type_id: 0x6be8c637
+}
+pointer_reference {
+  id: 0x107606b0
+  kind: POINTER
+  pointee_type_id: 0x6b98fc5d
+}
+pointer_reference {
+  id: 0x1076c35e
+  kind: POINTER
+  pointee_type_id: 0x6b9bebe6
+}
+pointer_reference {
+  id: 0x1077b920
+  kind: POINTER
+  pointee_type_id: 0x6b9e021d
+}
+pointer_reference {
+  id: 0x1084abd6
+  kind: POINTER
+  pointee_type_id: 0x685249c5
+}
+pointer_reference {
+  id: 0x10a6ed24
+  kind: POINTER
+  pointee_type_id: 0x68db520e
+}
+pointer_reference {
+  id: 0x10a757c8
+  kind: POINTER
+  pointee_type_id: 0x68ddb9bc
+}
+pointer_reference {
+  id: 0x10a78bb8
+  kind: POINTER
+  pointee_type_id: 0x68dec87d
+}
+pointer_reference {
+  id: 0x10afcfdf
+  kind: POINTER
+  pointee_type_id: 0x68ffd9e1
+}
+pointer_reference {
+  id: 0x10b2cf3a
+  kind: POINTER
+  pointee_type_id: 0x688bda75
+}
+pointer_reference {
+  id: 0x10c5646a
+  kind: POINTER
+  pointee_type_id: 0x69557734
+}
+pointer_reference {
+  id: 0x10c6675a
+  kind: POINTER
+  pointee_type_id: 0x69597bf4
+}
+pointer_reference {
+  id: 0x10cd97b8
+  kind: POINTER
+  pointee_type_id: 0x6976b87f
+}
+pointer_reference {
+  id: 0x10de2fab
+  kind: POINTER
+  pointee_type_id: 0x69385830
+}
+pointer_reference {
+  id: 0x10e15e7e
+  kind: POINTER
+  pointee_type_id: 0x69c59f65
+}
+pointer_reference {
+  id: 0x10e8c6af
+  kind: POINTER
+  pointee_type_id: 0x69e3fc22
+}
+pointer_reference {
+  id: 0x10f3dd9c
+  kind: POINTER
+  pointee_type_id: 0x698f90ec
+}
+pointer_reference {
+  id: 0x10f72c6d
+  kind: POINTER
+  pointee_type_id: 0x699c572b
+}
+pointer_reference {
+  id: 0x1115de80
+  kind: POINTER
+  pointee_type_id: 0x6e179c9e
+}
+pointer_reference {
+  id: 0x111e281f
+  kind: POINTER
+  pointee_type_id: 0x6e3846e1
+}
+pointer_reference {
+  id: 0x111ee6f8
+  kind: POINTER
+  pointee_type_id: 0x6e3b7d7f
+}
+pointer_reference {
+  id: 0x11281698
+  kind: POINTER
+  pointee_type_id: 0x6ee0bcff
+}
+pointer_reference {
+  id: 0x112f0014
+  kind: POINTER
+  pointee_type_id: 0x6efce6ce
+}
+pointer_reference {
+  id: 0x1132933c
+  kind: POINTER
+  pointee_type_id: 0x6e8aaa6e
+}
+pointer_reference {
+  id: 0x113a7e14
+  kind: POINTER
+  pointee_type_id: 0x6ea91ece
+}
+pointer_reference {
+  id: 0x1148ae81
+  kind: POINTER
+  pointee_type_id: 0x6f625c99
+}
+pointer_reference {
+  id: 0x11498f04
+  kind: POINTER
+  pointee_type_id: 0x6f66da8d
+}
+pointer_reference {
+  id: 0x114e61a5
+  kind: POINTER
+  pointee_type_id: 0x6f796009
+}
+pointer_reference {
+  id: 0x11575246
+  kind: POINTER
+  pointee_type_id: 0x6f1daf87
+}
+pointer_reference {
+  id: 0x115a10f4
+  kind: POINTER
+  pointee_type_id: 0x6f28a54f
+}
+pointer_reference {
+  id: 0x115dc206
+  kind: POINTER
+  pointee_type_id: 0x6f37ee87
+}
+pointer_reference {
+  id: 0x116785ed
+  kind: POINTER
+  pointee_type_id: 0x6fdef12a
+}
+pointer_reference {
+  id: 0x11690361
+  kind: POINTER
+  pointee_type_id: 0x6fe4eb19
+}
+pointer_reference {
+  id: 0x116d36b8
+  kind: POINTER
+  pointee_type_id: 0x6ff43c7f
+}
+pointer_reference {
+  id: 0x117a8adb
+  kind: POINTER
+  pointee_type_id: 0x6faacdf3
+}
+pointer_reference {
+  id: 0x117c83ec
+  kind: POINTER
+  pointee_type_id: 0x6fb2e92e
+}
+pointer_reference {
+  id: 0x117e2995
+  kind: POINTER
+  pointee_type_id: 0x6fb840c8
+}
+pointer_reference {
+  id: 0x118d97cb
+  kind: POINTER
+  pointee_type_id: 0x6c76b9b2
+}
+pointer_reference {
+  id: 0x11957c05
+  kind: POINTER
+  pointee_type_id: 0x6c15168b
+}
+pointer_reference {
+  id: 0x1196f2cb
+  kind: POINTER
+  pointee_type_id: 0x6c1b2db0
+}
+pointer_reference {
+  id: 0x119c80ef
+  kind: POINTER
+  pointee_type_id: 0x6c32e522
+}
+pointer_reference {
+  id: 0x11a649c9
+  kind: POINTER
+  pointee_type_id: 0x6cd9c1ba
+}
+pointer_reference {
+  id: 0x11a99d61
+  kind: POINTER
+  pointee_type_id: 0x6ce6931b
+}
+pointer_reference {
+  id: 0x11ae7e9f
+  kind: POINTER
+  pointee_type_id: 0x6cf91ce1
+}
+pointer_reference {
+  id: 0x11b2a696
+  kind: POINTER
+  pointee_type_id: 0x6c8a7cc4
+}
+pointer_reference {
+  id: 0x11b32828
+  kind: POINTER
+  pointee_type_id: 0x6c8c463d
+}
+pointer_reference {
+  id: 0x11b57133
+  kind: POINTER
+  pointee_type_id: 0x6c952252
+}
+pointer_reference {
+  id: 0x11bcc59d
+  kind: POINTER
+  pointee_type_id: 0x6cb3f0eb
+}
+pointer_reference {
+  id: 0x11c449ec
+  kind: POINTER
+  pointee_type_id: 0x6d51c12f
+}
+pointer_reference {
+  id: 0x11c8e8bf
+  kind: POINTER
+  pointee_type_id: 0x6d634461
+}
+pointer_reference {
+  id: 0x11c9e617
+  kind: POINTER
+  pointee_type_id: 0x6d677ec1
+}
+pointer_reference {
+  id: 0x11cf69d2
+  kind: POINTER
+  pointee_type_id: 0x6d7d41d4
+}
+pointer_reference {
+  id: 0x11cfee5a
+  kind: POINTER
+  pointee_type_id: 0x6d7f5ff6
+}
+pointer_reference {
+  id: 0x11cffa09
+  kind: POINTER
+  pointee_type_id: 0x6d7f0eb8
+}
+pointer_reference {
+  id: 0x11d941b8
+  kind: POINTER
+  pointee_type_id: 0x6d25e07f
+}
+pointer_reference {
+  id: 0x11dd441a
+  kind: POINTER
+  pointee_type_id: 0x6d35f6f5
+}
+pointer_reference {
+  id: 0x11e6864c
+  kind: POINTER
+  pointee_type_id: 0x6ddaffac
+}
+pointer_reference {
+  id: 0x11e6dfdf
+  kind: POINTER
+  pointee_type_id: 0x6ddb99e1
+}
+pointer_reference {
+  id: 0x11e9bcc8
+  kind: POINTER
+  pointee_type_id: 0x6de615bf
+}
+pointer_reference {
+  id: 0x11eda6ed
+  kind: POINTER
+  pointee_type_id: 0x6df67d28
+}
+pointer_reference {
+  id: 0x1200e2aa
+  kind: POINTER
+  pointee_type_id: 0x62436c35
+}
+pointer_reference {
+  id: 0x120540d1
+  kind: POINTER
+  pointee_type_id: 0x6255e5da
+}
+pointer_reference {
+  id: 0x12191e2a
+  kind: POINTER
+  pointee_type_id: 0x62249e35
+}
+pointer_reference {
+  id: 0x12209d55
+  kind: POINTER
+  pointee_type_id: 0x62c293ca
+}
+pointer_reference {
+  id: 0x122b36d6
+  kind: POINTER
+  pointee_type_id: 0x62ec3dc4
+}
+pointer_reference {
+  id: 0x1259e377
+  kind: POINTER
+  pointee_type_id: 0x63276b43
+}
+pointer_reference {
+  id: 0x125f621f
+  kind: POINTER
+  pointee_type_id: 0x633d6ee0
+}
+pointer_reference {
+  id: 0x126479b8
+  kind: POINTER
+  pointee_type_id: 0x63d1007f
+}
+pointer_reference {
+  id: 0x12651688
+  kind: POINTER
+  pointee_type_id: 0x63d4bcbd
+}
+pointer_reference {
+  id: 0x126add1c
+  kind: POINTER
+  pointee_type_id: 0x63eb92ec
+}
+pointer_reference {
+  id: 0x126ba7e3
+  kind: POINTER
+  pointee_type_id: 0x63ee7911
+}
+pointer_reference {
+  id: 0x127c410d
+  kind: POINTER
+  pointee_type_id: 0x63b1e2ab
+}
+pointer_reference {
+  id: 0x128371e2
+  kind: POINTER
+  pointee_type_id: 0x604d2116
+}
+pointer_reference {
+  id: 0x1285100d
+  kind: POINTER
+  pointee_type_id: 0x6054a6ab
+}
+pointer_reference {
+  id: 0x1291c430
+  kind: POINTER
+  pointee_type_id: 0x6007f65d
+}
+pointer_reference {
+  id: 0x129a6a0a
+  kind: POINTER
+  pointee_type_id: 0x60294eb6
+}
+pointer_reference {
+  id: 0x129cd18b
+  kind: POINTER
+  pointee_type_id: 0x6033a0b0
+}
+pointer_reference {
+  id: 0x12b82135
+  kind: POINTER
+  pointee_type_id: 0x60a0624a
+}
+pointer_reference {
+  id: 0x12bb35ff
+  kind: POINTER
+  pointee_type_id: 0x60ac3160
+}
+pointer_reference {
+  id: 0x12c0ba43
+  kind: POINTER
+  pointee_type_id: 0x61420f91
+}
+pointer_reference {
+  id: 0x12cddb4e
+  kind: POINTER
+  pointee_type_id: 0x61778ba5
+}
+pointer_reference {
+  id: 0x12d04cc7
+  kind: POINTER
+  pointee_type_id: 0x6101d583
+}
+pointer_reference {
+  id: 0x12e24ee1
+  kind: POINTER
+  pointee_type_id: 0x61c9dd1a
+}
+pointer_reference {
+  id: 0x12e6ffae
+  kind: POINTER
+  pointee_type_id: 0x61db1824
+}
+pointer_reference {
+  id: 0x12e75923
+  kind: POINTER
+  pointee_type_id: 0x61dd8212
+}
+pointer_reference {
+  id: 0x12eaeaa5
+  kind: POINTER
+  pointee_type_id: 0x61eb4c0a
+}
+pointer_reference {
+  id: 0x12ed9982
+  kind: POINTER
+  pointee_type_id: 0x61f68096
+}
+pointer_reference {
+  id: 0x12f15faf
+  kind: POINTER
+  pointee_type_id: 0x61859821
+}
+pointer_reference {
+  id: 0x13012dce
+  kind: POINTER
+  pointee_type_id: 0x664451a4
+}
+pointer_reference {
+  id: 0x13035e8b
+  kind: POINTER
+  pointee_type_id: 0x664d9cb2
+}
+pointer_reference {
+  id: 0x13185ce8
+  kind: POINTER
+  pointee_type_id: 0x6621953c
+}
+pointer_reference {
+  id: 0x13218759
+  kind: POINTER
+  pointee_type_id: 0x66c6fbfa
+}
+pointer_reference {
+  id: 0x1321a5b2
+  kind: POINTER
+  pointee_type_id: 0x66c67054
+}
+pointer_reference {
+  id: 0x1323af5e
+  kind: POINTER
+  pointee_type_id: 0x66ce5be5
+}
+pointer_reference {
+  id: 0x1323d62c
+  kind: POINTER
+  pointee_type_id: 0x66cfbe2d
+}
+pointer_reference {
+  id: 0x1330389b
+  kind: POINTER
+  pointee_type_id: 0x668004f3
+}
+pointer_reference {
+  id: 0x1333434c
+  kind: POINTER
+  pointee_type_id: 0x668debad
+}
+pointer_reference {
+  id: 0x1336ce53
+  kind: POINTER
+  pointee_type_id: 0x669bdfd1
+}
+pointer_reference {
+  id: 0x133f8d39
+  kind: POINTER
+  pointee_type_id: 0x66bed279
+}
+pointer_reference {
+  id: 0x1340339a
+  kind: POINTER
+  pointee_type_id: 0x674028f7
+}
+pointer_reference {
+  id: 0x1344d43c
+  kind: POINTER
+  pointee_type_id: 0x6753b66e
+}
+pointer_reference {
+  id: 0x1349e73e
+  kind: POINTER
+  pointee_type_id: 0x67677a67
+}
+pointer_reference {
+  id: 0x135282ce
+  kind: POINTER
+  pointee_type_id: 0x670aeda7
+}
+pointer_reference {
+  id: 0x13580d6c
+  kind: POINTER
+  pointee_type_id: 0x6720d32f
+}
+pointer_reference {
+  id: 0x135b2968
+  kind: POINTER
+  pointee_type_id: 0x672c433e
+}
+pointer_reference {
+  id: 0x13689f5b
+  kind: POINTER
+  pointee_type_id: 0x67e29bf0
+}
+pointer_reference {
+  id: 0x136a7f2f
+  kind: POINTER
+  pointee_type_id: 0x67e91a22
+}
+pointer_reference {
+  id: 0x136b7b0f
+  kind: POINTER
+  pointee_type_id: 0x67ed0aa3
+}
+pointer_reference {
+  id: 0x136dcbd8
+  kind: POINTER
+  pointee_type_id: 0x67f7c9ff
+}
+pointer_reference {
+  id: 0x137bbd4c
+  kind: POINTER
+  pointee_type_id: 0x67ae13ae
+}
+pointer_reference {
+  id: 0x1383598b
+  kind: POINTER
+  pointee_type_id: 0x644d80b1
+}
+pointer_reference {
+  id: 0x139300cd
+  kind: POINTER
+  pointee_type_id: 0x640ce5ab
+}
+pointer_reference {
+  id: 0x1393392e
+  kind: POINTER
+  pointee_type_id: 0x640c0226
+}
+pointer_reference {
+  id: 0x1396794c
+  kind: POINTER
+  pointee_type_id: 0x641903ae
+}
+pointer_reference {
+  id: 0x139e8957
+  kind: POINTER
+  pointee_type_id: 0x643ac3c2
+}
+pointer_reference {
+  id: 0x13a1ce2f
+  kind: POINTER
+  pointee_type_id: 0x64c7de23
+}
+pointer_reference {
+  id: 0x13a69eb7
+  kind: POINTER
+  pointee_type_id: 0x64da9c42
+}
+pointer_reference {
+  id: 0x13b93798
+  kind: POINTER
+  pointee_type_id: 0x64a438fc
+}
+pointer_reference {
+  id: 0x13ba025e
+  kind: POINTER
+  pointee_type_id: 0x64a8efe4
+}
+pointer_reference {
+  id: 0x13bdf349
+  kind: POINTER
+  pointee_type_id: 0x64b72bba
+}
+pointer_reference {
+  id: 0x13c70029
+  kind: POINTER
+  pointee_type_id: 0x655ce63a
+}
+pointer_reference {
+  id: 0x13d55fea
+  kind: POINTER
+  pointee_type_id: 0x65159935
+}
+pointer_reference {
+  id: 0x13e7e035
+  kind: POINTER
+  pointee_type_id: 0x65df6648
+}
+pointer_reference {
+  id: 0x13eb12a8
+  kind: POINTER
+  pointee_type_id: 0x65ecac3c
+}
+pointer_reference {
+  id: 0x13f3899f
+  kind: POINTER
+  pointee_type_id: 0x658ec0e0
+}
+pointer_reference {
+  id: 0x13f50292
+  kind: POINTER
+  pointee_type_id: 0x6594ecd4
+}
+pointer_reference {
+  id: 0x13f8b706
+  kind: POINTER
+  pointee_type_id: 0x65a23a84
+}
+pointer_reference {
+  id: 0x13fd63de
+  kind: POINTER
+  pointee_type_id: 0x65b569e7
+}
+pointer_reference {
+  id: 0x14191d75
+  kind: POINTER
+  pointee_type_id: 0x7a249348
+}
+pointer_reference {
+  id: 0x141d28a8
+  kind: POINTER
+  pointee_type_id: 0x7a34443c
+}
+pointer_reference {
+  id: 0x141e84b4
+  kind: POINTER
+  pointee_type_id: 0x7a3af44f
+}
+pointer_reference {
+  id: 0x141ef775
+  kind: POINTER
+  pointee_type_id: 0x7a3b3b4b
+}
+pointer_reference {
+  id: 0x14265d92
+  kind: POINTER
+  pointee_type_id: 0x7ad990d5
+}
+pointer_reference {
+  id: 0x14336664
+  kind: POINTER
+  pointee_type_id: 0x7a8d7f0c
+}
+pointer_reference {
+  id: 0x144208e8
+  kind: POINTER
+  pointee_type_id: 0x7b48c53f
+}
+pointer_reference {
+  id: 0x14518028
+  kind: POINTER
+  pointee_type_id: 0x7b06e63f
+}
+pointer_reference {
+  id: 0x14528516
+  kind: POINTER
+  pointee_type_id: 0x7b0af2c6
+}
+pointer_reference {
+  id: 0x14564b9e
+  kind: POINTER
+  pointee_type_id: 0x7b19c8e5
+}
+pointer_reference {
+  id: 0x1457cd38
+  kind: POINTER
+  pointee_type_id: 0x7b1fd27f
+}
+pointer_reference {
+  id: 0x145934af
+  kind: POINTER
+  pointee_type_id: 0x7b243421
+}
+pointer_reference {
+  id: 0x145f7b00
+  kind: POINTER
+  pointee_type_id: 0x7b3d0a9f
+}
+pointer_reference {
+  id: 0x1462a9ec
+  kind: POINTER
+  pointee_type_id: 0x7bca412c
+}
+pointer_reference {
+  id: 0x1464c1ed
+  kind: POINTER
+  pointee_type_id: 0x7bd3e128
+}
+pointer_reference {
+  id: 0x14671b3f
+  kind: POINTER
+  pointee_type_id: 0x7bdc8a60
+}
+pointer_reference {
+  id: 0x14731fc7
+  kind: POINTER
+  pointee_type_id: 0x7b8c9983
+}
+pointer_reference {
+  id: 0x1479c6e7
+  kind: POINTER
+  pointee_type_id: 0x7ba7fd02
+}
+pointer_reference {
+  id: 0x14925f4a
+  kind: POINTER
+  pointee_type_id: 0x78099bb5
+}
+pointer_reference {
+  id: 0x14abdd00
+  kind: POINTER
+  pointee_type_id: 0x78ef929d
+}
+pointer_reference {
+  id: 0x14b9453b
+  kind: POINTER
+  pointee_type_id: 0x78a5f271
+}
+pointer_reference {
+  id: 0x14c004e9
+  kind: POINTER
+  pointee_type_id: 0x7940f53b
+}
+pointer_reference {
+  id: 0x14c9b164
+  kind: POINTER
+  pointee_type_id: 0x7966230c
+}
+pointer_reference {
+  id: 0x14cbb87c
+  kind: POINTER
+  pointee_type_id: 0x796e076d
+}
+pointer_reference {
+  id: 0x14ce1d40
+  kind: POINTER
+  pointee_type_id: 0x7978939e
+}
+pointer_reference {
+  id: 0x14d112d9
+  kind: POINTER
+  pointee_type_id: 0x7904adfb
+}
+pointer_reference {
+  id: 0x14d4ab84
+  kind: POINTER
+  pointee_type_id: 0x7912488e
+}
+pointer_reference {
+  id: 0x14e7280b
+  kind: POINTER
+  pointee_type_id: 0x79dc46b1
+}
+pointer_reference {
+  id: 0x14e88d4b
+  kind: POINTER
+  pointee_type_id: 0x79e2d3b1
+}
+pointer_reference {
+  id: 0x14fb0ab0
+  kind: POINTER
+  pointee_type_id: 0x79accc5f
+}
+pointer_reference {
+  id: 0x14fe2ad8
+  kind: POINTER
+  pointee_type_id: 0x79b84dfe
+}
+pointer_reference {
+  id: 0x15182a18
+  kind: POINTER
+  pointee_type_id: 0x7e204efc
+}
+pointer_reference {
+  id: 0x151a9482
+  kind: POINTER
+  pointee_type_id: 0x7e2ab496
+}
+pointer_reference {
+  id: 0x151fca68
+  kind: POINTER
+  pointee_type_id: 0x7e3fcf3e
+}
+pointer_reference {
+  id: 0x1522d20b
+  kind: POINTER
+  pointee_type_id: 0x7ecbaeb2
+}
+pointer_reference {
+  id: 0x153b4245
+  kind: POINTER
+  pointee_type_id: 0x7eadef89
+}
+pointer_reference {
+  id: 0x153f0b1a
+  kind: POINTER
+  pointee_type_id: 0x7ebccaf7
+}
+pointer_reference {
+  id: 0x154aa8e2
+  kind: POINTER
+  pointee_type_id: 0x7f6a4515
+}
+pointer_reference {
+  id: 0x15517480
+  kind: POINTER
+  pointee_type_id: 0x7f05349f
+}
+pointer_reference {
+  id: 0x155b1d5a
+  kind: POINTER
+  pointee_type_id: 0x7f2c93f7
+}
+pointer_reference {
+  id: 0x155c66cc
+  kind: POINTER
+  pointee_type_id: 0x7f317daf
+}
+pointer_reference {
+  id: 0x15677165
+  kind: POINTER
+  pointee_type_id: 0x7fdd230a
+}
+pointer_reference {
+  id: 0x156a41de
+  kind: POINTER
+  pointee_type_id: 0x7fe9e1e4
+}
+pointer_reference {
+  id: 0x1582ab06
+  kind: POINTER
+  pointee_type_id: 0x7c4a4a84
+}
+pointer_reference {
+  id: 0x158752b5
+  kind: POINTER
+  pointee_type_id: 0x7c5dac4b
+}
+pointer_reference {
+  id: 0x1588b9ca
+  kind: POINTER
+  pointee_type_id: 0x7c6201b4
+}
+pointer_reference {
+  id: 0x1592957f
+  kind: POINTER
+  pointee_type_id: 0x7c0ab363
+}
+pointer_reference {
+  id: 0x159e1e10
+  kind: POINTER
+  pointee_type_id: 0x7c389ede
+}
+pointer_reference {
+  id: 0x15a2b6b2
+  kind: POINTER
+  pointee_type_id: 0x7cca3c54
+}
+pointer_reference {
+  id: 0x15a30023
+  kind: POINTER
+  pointee_type_id: 0x7ccce612
+}
+pointer_reference {
+  id: 0x15ae72ad
+  kind: POINTER
+  pointee_type_id: 0x7cf92c29
+}
+pointer_reference {
+  id: 0x15afc3b7
+  kind: POINTER
+  pointee_type_id: 0x7cffe843
+}
+pointer_reference {
+  id: 0x15b489df
+  kind: POINTER
+  pointee_type_id: 0x7c92c1e0
+}
+pointer_reference {
+  id: 0x15b54c6f
+  kind: POINTER
+  pointee_type_id: 0x7c95d721
+}
+pointer_reference {
+  id: 0x15c389f6
+  kind: POINTER
+  pointee_type_id: 0x7d4ec147
+}
+pointer_reference {
+  id: 0x15c52c92
+  kind: POINTER
+  pointee_type_id: 0x7d5454d7
+}
+pointer_reference {
+  id: 0x15c77315
+  kind: POINTER
+  pointee_type_id: 0x7d5d2acb
+}
+pointer_reference {
+  id: 0x15ec908b
+  kind: POINTER
+  pointee_type_id: 0x7df2a4b1
+}
+pointer_reference {
+  id: 0x15ec9e44
+  kind: POINTER
+  pointee_type_id: 0x7df29f8f
+}
+pointer_reference {
+  id: 0x15ecb64f
+  kind: POINTER
+  pointee_type_id: 0x7df23fa2
+}
+pointer_reference {
+  id: 0x15ee5719
+  kind: POINTER
+  pointee_type_id: 0x7df9baf9
+}
+pointer_reference {
+  id: 0x15f148f6
+  kind: POINTER
+  pointee_type_id: 0x7d85c545
+}
+pointer_reference {
+  id: 0x15f20052
+  kind: POINTER
+  pointee_type_id: 0x7d88e7d5
+}
+pointer_reference {
+  id: 0x15f235fd
+  kind: POINTER
+  pointee_type_id: 0x7d88316b
+}
+pointer_reference {
+  id: 0x15f4a5c7
+  kind: POINTER
+  pointee_type_id: 0x7d927183
+}
+pointer_reference {
+  id: 0x15fc2a9e
+  kind: POINTER
+  pointee_type_id: 0x7db04ce7
+}
+pointer_reference {
+  id: 0x160238dd
+  kind: POINTER
+  pointee_type_id: 0x724805ea
+}
+pointer_reference {
+  id: 0x160c256a
+  kind: POINTER
+  pointee_type_id: 0x72707335
+}
+pointer_reference {
+  id: 0x16166482
+  kind: POINTER
+  pointee_type_id: 0x72197497
+}
+pointer_reference {
+  id: 0x1617a6e2
+  kind: POINTER
+  pointee_type_id: 0x721e7d15
+}
+pointer_reference {
+  id: 0x1618455d
+  kind: POINTER
+  pointee_type_id: 0x7221f3e8
+}
+pointer_reference {
+  id: 0x16239d0c
+  kind: POINTER
+  pointee_type_id: 0x72ce92ac
+}
+pointer_reference {
+  id: 0x1625b3e2
+  kind: POINTER
+  pointee_type_id: 0x72d62916
+}
+pointer_reference {
+  id: 0x162c7a70
+  kind: POINTER
+  pointee_type_id: 0x72f10f5c
+}
+pointer_reference {
+  id: 0x162ee618
+  kind: POINTER
+  pointee_type_id: 0x72fb7efe
+}
+pointer_reference {
+  id: 0x164cb078
+  kind: POINTER
+  pointee_type_id: 0x7372277e
+}
+pointer_reference {
+  id: 0x1650be92
+  kind: POINTER
+  pointee_type_id: 0x73021cd7
+}
+pointer_reference {
+  id: 0x16598b41
+  kind: POINTER
+  pointee_type_id: 0x7326cb99
+}
+pointer_reference {
+  id: 0x165b541d
+  kind: POINTER
+  pointee_type_id: 0x732db6e9
+}
+pointer_reference {
+  id: 0x165dc292
+  kind: POINTER
+  pointee_type_id: 0x7337ecd4
+}
+pointer_reference {
+  id: 0x165ded06
+  kind: POINTER
+  pointee_type_id: 0x73375287
+}
+pointer_reference {
+  id: 0x1660fa38
+  kind: POINTER
+  pointee_type_id: 0x73c30e7c
+}
+pointer_reference {
+  id: 0x16665d14
+  kind: POINTER
+  pointee_type_id: 0x73d992cf
+}
+pointer_reference {
+  id: 0x16861be6
+  kind: POINTER
+  pointee_type_id: 0x70588905
+}
+pointer_reference {
+  id: 0x16886f92
+  kind: POINTER
+  pointee_type_id: 0x706158d6
+}
+pointer_reference {
+  id: 0x168ab9de
+  kind: POINTER
+  pointee_type_id: 0x706a01e7
+}
+pointer_reference {
+  id: 0x168d6de3
+  kind: POINTER
+  pointee_type_id: 0x70755111
+}
+pointer_reference {
+  id: 0x1692cf3f
+  kind: POINTER
+  pointee_type_id: 0x700bda61
+}
+pointer_reference {
+  id: 0x1696bc95
+  kind: POINTER
+  pointee_type_id: 0x701a14cb
+}
+pointer_reference {
+  id: 0x1698d083
+  kind: POINTER
+  pointee_type_id: 0x7023a491
+}
+pointer_reference {
+  id: 0x16a0ae81
+  kind: POINTER
+  pointee_type_id: 0x70c25c99
+}
+pointer_reference {
+  id: 0x16a379ef
+  kind: POINTER
+  pointee_type_id: 0x70cd0122
+}
+pointer_reference {
+  id: 0x16a4bcd4
+  kind: POINTER
+  pointee_type_id: 0x70d215cd
+}
+pointer_reference {
+  id: 0x16b3acfc
+  kind: POINTER
+  pointee_type_id: 0x708e556f
+}
+pointer_reference {
+  id: 0x16b3c998
+  kind: POINTER
+  pointee_type_id: 0x708fc0fe
+}
+pointer_reference {
+  id: 0x16b46fbd
+  kind: POINTER
+  pointee_type_id: 0x7091586a
+}
+pointer_reference {
+  id: 0x16c47ce6
+  kind: POINTER
+  pointee_type_id: 0x71511504
+}
+pointer_reference {
+  id: 0x16df644d
+  kind: POINTER
+  pointee_type_id: 0x713d77a9
+}
+pointer_reference {
+  id: 0x16ef799d
+  kind: POINTER
+  pointee_type_id: 0x71fd00eb
+}
+pointer_reference {
+  id: 0x16f22102
+  kind: POINTER
+  pointee_type_id: 0x71886297
+}
+pointer_reference {
+  id: 0x16f99983
+  kind: POINTER
+  pointee_type_id: 0x71a68091
+}
+pointer_reference {
+  id: 0x16ffe794
+  kind: POINTER
+  pointee_type_id: 0x71bf78cf
+}
+pointer_reference {
+  id: 0x17022457
+  kind: POINTER
+  pointee_type_id: 0x764877c2
+}
+pointer_reference {
+  id: 0x17047654
+  kind: POINTER
+  pointee_type_id: 0x76513fcc
+}
+pointer_reference {
+  id: 0x170b5163
+  kind: POINTER
+  pointee_type_id: 0x766da310
+}
+pointer_reference {
+  id: 0x170b7529
+  kind: POINTER
+  pointee_type_id: 0x766d3238
+}
+pointer_reference {
+  id: 0x1710671e
+  kind: POINTER
+  pointee_type_id: 0x76017ae6
+}
+pointer_reference {
+  id: 0x171be96c
+  kind: POINTER
+  pointee_type_id: 0x762f432d
+}
+pointer_reference {
+  id: 0x171ed6f4
+  kind: POINTER
+  pointee_type_id: 0x763bbd4c
+}
+pointer_reference {
+  id: 0x172847a8
+  kind: POINTER
+  pointee_type_id: 0x76e1f83e
+}
+pointer_reference {
+  id: 0x1729da91
+  kind: POINTER
+  pointee_type_id: 0x76e78cd9
+}
+pointer_reference {
+  id: 0x1740e61d
+  kind: POINTER
+  pointee_type_id: 0x77437ee8
+}
+pointer_reference {
+  id: 0x1741dd74
+  kind: POINTER
+  pointee_type_id: 0x7747934c
+}
+pointer_reference {
+  id: 0x1749fb69
+  kind: POINTER
+  pointee_type_id: 0x77670b3b
+}
+pointer_reference {
+  id: 0x174acf71
+  kind: POINTER
+  pointee_type_id: 0x776bdb5b
+}
+pointer_reference {
+  id: 0x175195e4
+  kind: POINTER
+  pointee_type_id: 0x7706b10e
+}
+pointer_reference {
+  id: 0x17535b44
+  kind: POINTER
+  pointee_type_id: 0x770d8b8c
+}
+pointer_reference {
+  id: 0x17693cee
+  kind: POINTER
+  pointee_type_id: 0x77e41525
+}
+pointer_reference {
+  id: 0x1769c4d8
+  kind: POINTER
+  pointee_type_id: 0x77e7f5fe
+}
+pointer_reference {
+  id: 0x176bad6c
+  kind: POINTER
+  pointee_type_id: 0x77ee532f
+}
+pointer_reference {
+  id: 0x176d3238
+  kind: POINTER
+  pointee_type_id: 0x77f42e7c
+}
+pointer_reference {
+  id: 0x176fc5b8
+  kind: POINTER
+  pointee_type_id: 0x77fff07e
+}
+pointer_reference {
+  id: 0x178226b2
+  kind: POINTER
+  pointee_type_id: 0x74487c54
+}
+pointer_reference {
+  id: 0x178c0a08
+  kind: POINTER
+  pointee_type_id: 0x7470cebd
+}
+pointer_reference {
+  id: 0x178c5d28
+  kind: POINTER
+  pointee_type_id: 0x7471923f
+}
+pointer_reference {
+  id: 0x178e5e46
+  kind: POINTER
+  pointee_type_id: 0x74799f87
+}
+pointer_reference {
+  id: 0x1790a02f
+  kind: POINTER
+  pointee_type_id: 0x74026623
+}
+pointer_reference {
+  id: 0x17a37c1c
+  kind: POINTER
+  pointee_type_id: 0x74cd16ec
+}
+pointer_reference {
+  id: 0x17a49e9b
+  kind: POINTER
+  pointee_type_id: 0x74d29cf1
+}
+pointer_reference {
+  id: 0x17a749ba
+  kind: POINTER
+  pointee_type_id: 0x74ddc074
+}
+pointer_reference {
+  id: 0x17a93606
+  kind: POINTER
+  pointee_type_id: 0x74e43e85
+}
+pointer_reference {
+  id: 0x17b08fbe
+  kind: POINTER
+  pointee_type_id: 0x7482d865
+}
+pointer_reference {
+  id: 0x17b2105b
+  kind: POINTER
+  pointee_type_id: 0x7488a7f3
+}
+pointer_reference {
+  id: 0x17b3f4e8
+  kind: POINTER
+  pointee_type_id: 0x748f353e
+}
+pointer_reference {
+  id: 0x17b5cc93
+  kind: POINTER
+  pointee_type_id: 0x7497d4d2
+}
+pointer_reference {
+  id: 0x17bc7156
+  kind: POINTER
+  pointee_type_id: 0x74b123c5
+}
+pointer_reference {
+  id: 0x17bdfa07
+  kind: POINTER
+  pointee_type_id: 0x74b70e80
+}
+pointer_reference {
+  id: 0x17c595e7
+  kind: POINTER
+  pointee_type_id: 0x7556b101
+}
+pointer_reference {
+  id: 0x17c6e036
+  kind: POINTER
+  pointee_type_id: 0x755b6647
+}
+pointer_reference {
+  id: 0x17dabdcd
+  kind: POINTER
+  pointee_type_id: 0x752a11a9
+}
+pointer_reference {
+  id: 0x17e11460
+  kind: POINTER
+  pointee_type_id: 0x75c4b71d
+}
+pointer_reference {
+  id: 0x17eb2338
+  kind: POINTER
+  pointee_type_id: 0x75ec6a7d
+}
+pointer_reference {
+  id: 0x17f10051
+  kind: POINTER
+  pointee_type_id: 0x7584e7da
+}
+pointer_reference {
+  id: 0x17f6518a
+  kind: POINTER
+  pointee_type_id: 0x7599a0b6
+}
+pointer_reference {
+  id: 0x17fa285b
+  kind: POINTER
+  pointee_type_id: 0x75a847f0
+}
+pointer_reference {
+  id: 0x18019702
+  kind: POINTER
+  pointee_type_id: 0x4a46ba94
+}
+pointer_reference {
+  id: 0x1801b4c1
+  kind: POINTER
+  pointee_type_id: 0x4a463598
+}
+pointer_reference {
+  id: 0x1803abce
+  kind: POINTER
+  pointee_type_id: 0x4a4e49a4
+}
+pointer_reference {
+  id: 0x18095f12
+  kind: POINTER
+  pointee_type_id: 0x4a659ad5
+}
+pointer_reference {
+  id: 0x180a82d6
+  kind: POINTER
+  pointee_type_id: 0x4a6aedc5
+}
+pointer_reference {
+  id: 0x180f2849
+  kind: POINTER
+  pointee_type_id: 0x4a7c47b9
+}
+pointer_reference {
+  id: 0x18150d9f
+  kind: POINTER
+  pointee_type_id: 0x4a14d0e0
+}
+pointer_reference {
+  id: 0x1818079c
+  kind: POINTER
+  pointee_type_id: 0x4a20f8ef
+}
+pointer_reference {
+  id: 0x18195af6
+  kind: POINTER
+  pointee_type_id: 0x4a258d46
+}
+pointer_reference {
+  id: 0x1819df28
+  kind: POINTER
+  pointee_type_id: 0x4a279a3e
+}
+pointer_reference {
+  id: 0x181b0acd
+  kind: POINTER
+  pointee_type_id: 0x4a2ccda9
+}
+pointer_reference {
+  id: 0x181ec3a6
+  kind: POINTER
+  pointee_type_id: 0x4a3be804
+}
+pointer_reference {
+  id: 0x181ee594
+  kind: POINTER
+  pointee_type_id: 0x4a3b70cf
+}
+pointer_reference {
+  id: 0x1826c2b2
+  kind: POINTER
+  pointee_type_id: 0x4adbec55
+}
+pointer_reference {
+  id: 0x18295f70
+  kind: POINTER
+  pointee_type_id: 0x4ae59b5c
+}
+pointer_reference {
+  id: 0x1830dd64
+  kind: POINTER
+  pointee_type_id: 0x4a83930e
+}
+pointer_reference {
+  id: 0x18374f23
+  kind: POINTER
+  pointee_type_id: 0x4a9dda12
+}
+pointer_reference {
+  id: 0x184052fc
+  kind: POINTER
+  pointee_type_id: 0x4b41ad6f
+}
+pointer_reference {
+  id: 0x18456730
+  kind: POINTER
+  pointee_type_id: 0x4b557a5c
+}
+pointer_reference {
+  id: 0x1847a854
+  kind: POINTER
+  pointee_type_id: 0x4b5e47ce
+}
+pointer_reference {
+  id: 0x184a111e
+  kind: POINTER
+  pointee_type_id: 0x4b68a2e4
+}
+pointer_reference {
+  id: 0x184ecba1
+  kind: POINTER
+  pointee_type_id: 0x4b7bc818
+}
+pointer_reference {
+  id: 0x1856a912
+  kind: POINTER
+  pointee_type_id: 0x4b1a42d7
+}
+pointer_reference {
+  id: 0x1858a1e0
+  kind: POINTER
+  pointee_type_id: 0x4b22611e
+}
+pointer_reference {
+  id: 0x1863edc5
+  kind: POINTER
+  pointee_type_id: 0x4bcf518b
+}
+pointer_reference {
+  id: 0x18719537
+  kind: POINTER
+  pointee_type_id: 0x4b86b241
+}
+pointer_reference {
+  id: 0x187832e1
+  kind: POINTER
+  pointee_type_id: 0x4ba02d1a
+}
+pointer_reference {
+  id: 0x187aeed8
+  kind: POINTER
+  pointee_type_id: 0x4bab5dfd
+}
+pointer_reference {
+  id: 0x187ed209
+  kind: POINTER
+  pointee_type_id: 0x4bbbaeb8
+}
+pointer_reference {
+  id: 0x188a5dc9
+  kind: POINTER
+  pointee_type_id: 0x486991ba
+}
+pointer_reference {
+  id: 0x188b9e81
+  kind: POINTER
+  pointee_type_id: 0x486e9c99
+}
+pointer_reference {
+  id: 0x1892eedc
+  kind: POINTER
+  pointee_type_id: 0x480b5dec
+}
+pointer_reference {
+  id: 0x18934663
+  kind: POINTER
+  pointee_type_id: 0x480dff10
+}
+pointer_reference {
+  id: 0x18a16691
+  kind: POINTER
+  pointee_type_id: 0x48c57cd9
+}
+pointer_reference {
+  id: 0x18a2fb63
+  kind: POINTER
+  pointee_type_id: 0x48cb0b10
+}
+pointer_reference {
+  id: 0x18a52576
+  kind: POINTER
+  pointee_type_id: 0x48d47344
+}
+pointer_reference {
+  id: 0x18b0eb5e
+  kind: POINTER
+  pointee_type_id: 0x48834be4
+}
+pointer_reference {
+  id: 0x18b27715
+  kind: POINTER
+  pointee_type_id: 0x48893aca
+}
+pointer_reference {
+  id: 0x18b875ee
+  kind: POINTER
+  pointee_type_id: 0x48a13124
+}
+pointer_reference {
+  id: 0x18ba5a88
+  kind: POINTER
+  pointee_type_id: 0x48a98cbe
+}
+pointer_reference {
+  id: 0x18bd6530
+  kind: POINTER
+  pointee_type_id: 0x48b5725f
+}
+pointer_reference {
+  id: 0x18c45142
+  kind: POINTER
+  pointee_type_id: 0x4951a397
+}
+pointer_reference {
+  id: 0x18cdf247
+  kind: POINTER
+  pointee_type_id: 0x49772f83
+}
+pointer_reference {
+  id: 0x18d413f1
+  kind: POINTER
+  pointee_type_id: 0x4910a95a
+}
+pointer_reference {
+  id: 0x18d82e82
+  kind: POINTER
+  pointee_type_id: 0x49205c94
+}
+pointer_reference {
+  id: 0x18ded2d3
+  kind: POINTER
+  pointee_type_id: 0x493badd2
+}
+pointer_reference {
+  id: 0x18e64f74
+  kind: POINTER
+  pointee_type_id: 0x49d9db4c
+}
+pointer_reference {
+  id: 0x18e738db
+  kind: POINTER
+  pointee_type_id: 0x49dc05f2
+}
+pointer_reference {
+  id: 0x18ea2d6b
+  kind: POINTER
+  pointee_type_id: 0x49e85332
+}
+pointer_reference {
+  id: 0x18ea6ae3
+  kind: POINTER
+  pointee_type_id: 0x49e94d11
+}
+pointer_reference {
+  id: 0x18efc3fd
+  kind: POINTER
+  pointee_type_id: 0x49ffe96b
+}
+pointer_reference {
+  id: 0x18f39e86
+  kind: POINTER
+  pointee_type_id: 0x498e9c84
+}
+pointer_reference {
+  id: 0x18f56498
+  kind: POINTER
+  pointee_type_id: 0x499574fe
+}
+pointer_reference {
+  id: 0x18f9f5e3
+  kind: POINTER
+  pointee_type_id: 0x49a73111
+}
+pointer_reference {
+  id: 0x18fb849f
+  kind: POINTER
+  pointee_type_id: 0x49aef4e2
+}
+pointer_reference {
+  id: 0x18fee010
+  kind: POINTER
+  pointee_type_id: 0x49bb66dc
+}
+pointer_reference {
+  id: 0x1906e68f
+  kind: POINTER
+  pointee_type_id: 0x4e5b7ca3
+}
+pointer_reference {
+  id: 0x190750ad
+  kind: POINTER
+  pointee_type_id: 0x4e5da42b
+}
+pointer_reference {
+  id: 0x19118777
+  kind: POINTER
+  pointee_type_id: 0x4e06fb40
+}
+pointer_reference {
+  id: 0x191de370
+  kind: POINTER
+  pointee_type_id: 0x4e376b5d
+}
+pointer_reference {
+  id: 0x19227de2
+  kind: POINTER
+  pointee_type_id: 0x4ec91117
+}
+pointer_reference {
+  id: 0x19341e7e
+  kind: POINTER
+  pointee_type_id: 0x4e909f64
+}
+pointer_reference {
+  id: 0x19357319
+  kind: POINTER
+  pointee_type_id: 0x4e952af8
+}
+pointer_reference {
+  id: 0x19466519
+  kind: POINTER
+  pointee_type_id: 0x4f5972f9
+}
+pointer_reference {
+  id: 0x19492e8d
+  kind: POINTER
+  pointee_type_id: 0x4f645cab
+}
+pointer_reference {
+  id: 0x195350a3
+  kind: POINTER
+  pointee_type_id: 0x4f0da411
+}
+pointer_reference {
+  id: 0x195cd703
+  kind: POINTER
+  pointee_type_id: 0x4f33ba92
+}
+pointer_reference {
+  id: 0x1964f783
+  kind: POINTER
+  pointee_type_id: 0x4fd33893
+}
+pointer_reference {
+  id: 0x19671b46
+  kind: POINTER
+  pointee_type_id: 0x4fdc8b87
+}
+pointer_reference {
+  id: 0x196e7066
+  kind: POINTER
+  pointee_type_id: 0x4ff92706
+}
+pointer_reference {
+  id: 0x1977e57b
+  kind: POINTER
+  pointee_type_id: 0x4f9f7373
+}
+pointer_reference {
+  id: 0x197d511c
+  kind: POINTER
+  pointee_type_id: 0x4fb5a2ed
+}
+pointer_reference {
+  id: 0x197dca09
+  kind: POINTER
+  pointee_type_id: 0x4fb7ceba
+}
+pointer_reference {
+  id: 0x198099dc
+  kind: POINTER
+  pointee_type_id: 0x4c4281ed
+}
+pointer_reference {
+  id: 0x1992ce85
+  kind: POINTER
+  pointee_type_id: 0x4c0bdc8a
+}
+pointer_reference {
+  id: 0x1997473c
+  kind: POINTER
+  pointee_type_id: 0x4c1dfa6d
+}
+pointer_reference {
+  id: 0x19989612
+  kind: POINTER
+  pointee_type_id: 0x4c22bed4
+}
+pointer_reference {
+  id: 0x199ad6e0
+  kind: POINTER
+  pointee_type_id: 0x4c2bbd1f
+}
+pointer_reference {
+  id: 0x19a4bd22
+  kind: POINTER
+  pointee_type_id: 0x4cd21214
+}
+pointer_reference {
+  id: 0x19a7a6e2
+  kind: POINTER
+  pointee_type_id: 0x4cde7d15
+}
+pointer_reference {
+  id: 0x19c00e70
+  kind: POINTER
+  pointee_type_id: 0x4d40df5c
+}
+pointer_reference {
+  id: 0x19c2748b
+  kind: POINTER
+  pointee_type_id: 0x4d4934b1
+}
+pointer_reference {
+  id: 0x19c32202
+  kind: POINTER
+  pointee_type_id: 0x4d4c6e96
+}
+pointer_reference {
+  id: 0x19c40476
+  kind: POINTER
+  pointee_type_id: 0x4d50f747
+}
+pointer_reference {
+  id: 0x19c60038
+  kind: POINTER
+  pointee_type_id: 0x4d58e67f
+}
+pointer_reference {
+  id: 0x19dcb9e2
+  kind: POINTER
+  pointee_type_id: 0x4d320115
+}
+pointer_reference {
+  id: 0x19e0c64c
+  kind: POINTER
+  pointee_type_id: 0x4dc3ffac
+}
+pointer_reference {
+  id: 0x19e61d64
+  kind: POINTER
+  pointee_type_id: 0x4dd8930e
+}
+pointer_reference {
+  id: 0x19e66c71
+  kind: POINTER
+  pointee_type_id: 0x4dd9575b
+}
+pointer_reference {
+  id: 0x19f48a47
+  kind: POINTER
+  pointee_type_id: 0x4d92cf80
+}
+pointer_reference {
+  id: 0x19f65b03
+  kind: POINTER
+  pointee_type_id: 0x4d998a91
+}
+pointer_reference {
+  id: 0x19fa9e98
+  kind: POINTER
+  pointee_type_id: 0x4daa9cfd
+}
+pointer_reference {
+  id: 0x19fcd5b2
+  kind: POINTER
+  pointee_type_id: 0x4db3b057
+}
+pointer_reference {
+  id: 0x1a080f6e
+  kind: POINTER
+  pointee_type_id: 0x4260db25
+}
+pointer_reference {
+  id: 0x1a1051a0
+  kind: POINTER
+  pointee_type_id: 0x4201a01e
+}
+pointer_reference {
+  id: 0x1a12b190
+  kind: POINTER
+  pointee_type_id: 0x420a20df
+}
+pointer_reference {
+  id: 0x1a13cfd7
+  kind: POINTER
+  pointee_type_id: 0x420fd9c2
+}
+pointer_reference {
+  id: 0x1a1563a0
+  kind: POINTER
+  pointee_type_id: 0x4215681c
+}
+pointer_reference {
+  id: 0x1a1575dd
+  kind: POINTER
+  pointee_type_id: 0x421531e8
+}
+pointer_reference {
+  id: 0x1a29773f
+  kind: POINTER
+  pointee_type_id: 0x42e53a63
+}
+pointer_reference {
+  id: 0x1a2983d6
+  kind: POINTER
+  pointee_type_id: 0x42e6e9c5
+}
+pointer_reference {
+  id: 0x1a2c7f0e
+  kind: POINTER
+  pointee_type_id: 0x42f11aa4
+}
+pointer_reference {
+  id: 0x1a3a7059
+  kind: POINTER
+  pointee_type_id: 0x42a927f9
+}
+pointer_reference {
+  id: 0x1a408053
+  kind: POINTER
+  pointee_type_id: 0x4342e7d0
+}
+pointer_reference {
+  id: 0x1a41d386
+  kind: POINTER
+  pointee_type_id: 0x4347a884
+}
+pointer_reference {
+  id: 0x1a420221
+  kind: POINTER
+  pointee_type_id: 0x4348ee1a
+}
+pointer_reference {
+  id: 0x1a42fd68
+  kind: POINTER
+  pointee_type_id: 0x434b133c
+}
+pointer_reference {
+  id: 0x1a443b67
+  kind: POINTER
+  pointee_type_id: 0x43500b01
+}
+pointer_reference {
+  id: 0x1a56a0ca
+  kind: POINTER
+  pointee_type_id: 0x431a65b6
+}
+pointer_reference {
+  id: 0x1a5d0549
+  kind: POINTER
+  pointee_type_id: 0x4334f3ba
+}
+pointer_reference {
+  id: 0x1a61f607
+  kind: POINTER
+  pointee_type_id: 0x43c73e81
+}
+pointer_reference {
+  id: 0x1a65e52c
+  kind: POINTER
+  pointee_type_id: 0x43d7722e
+}
+pointer_reference {
+  id: 0x1a6ea392
+  kind: POINTER
+  pointee_type_id: 0x43fa68d6
+}
+pointer_reference {
+  id: 0x1a7122b5
+  kind: POINTER
+  pointee_type_id: 0x43846c49
+}
+pointer_reference {
+  id: 0x1a73eb90
+  kind: POINTER
+  pointee_type_id: 0x438f48df
+}
+pointer_reference {
+  id: 0x1a8afd70
+  kind: POINTER
+  pointee_type_id: 0x406b135f
+}
+pointer_reference {
+  id: 0x1a8b04e5
+  kind: POINTER
+  pointee_type_id: 0x406cf50b
+}
+pointer_reference {
+  id: 0x1a8d1bcb
+  kind: POINTER
+  pointee_type_id: 0x407489b0
+}
+pointer_reference {
+  id: 0x1a8ea527
+  kind: POINTER
+  pointee_type_id: 0x407a7203
+}
+pointer_reference {
+  id: 0x1a8fcc43
+  kind: POINTER
+  pointee_type_id: 0x407fd792
+}
+pointer_reference {
+  id: 0x1a95dec0
+  kind: POINTER
+  pointee_type_id: 0x40179d9d
+}
+pointer_reference {
+  id: 0x1aa00f75
+  kind: POINTER
+  pointee_type_id: 0x40c0db4b
+}
+pointer_reference {
+  id: 0x1aae6e0f
+  kind: POINTER
+  pointee_type_id: 0x40f95ea3
+}
+pointer_reference {
+  id: 0x1ab46600
+  kind: POINTER
+  pointee_type_id: 0x40917e9e
+}
+pointer_reference {
+  id: 0x1ab89762
+  kind: POINTER
+  pointee_type_id: 0x40a2bb15
+}
+pointer_reference {
+  id: 0x1abb4311
+  kind: POINTER
+  pointee_type_id: 0x40adeada
+}
+pointer_reference {
+  id: 0x1aca7048
+  kind: POINTER
+  pointee_type_id: 0x416927bc
+}
+pointer_reference {
+  id: 0x1ad7b8dd
+  kind: POINTER
+  pointee_type_id: 0x411e05ea
+}
+pointer_reference {
+  id: 0x1ae38c59
+  kind: POINTER
+  pointee_type_id: 0x41ced7f8
+}
+pointer_reference {
+  id: 0x1aec4e7e
+  kind: POINTER
+  pointee_type_id: 0x41f1df67
+}
+pointer_reference {
+  id: 0x1aee9939
+  kind: POINTER
+  pointee_type_id: 0x41fa8278
+}
+pointer_reference {
+  id: 0x1aeeade4
+  kind: POINTER
+  pointee_type_id: 0x41fa510d
+}
+pointer_reference {
+  id: 0x1af05b1b
+  kind: POINTER
+  pointee_type_id: 0x41818af1
+}
+pointer_reference {
+  id: 0x1af273e3
+  kind: POINTER
+  pointee_type_id: 0x41892913
+}
+pointer_reference {
+  id: 0x1afb0146
+  kind: POINTER
+  pointee_type_id: 0x41ace385
+}
+pointer_reference {
+  id: 0x1b084782
+  kind: POINTER
+  pointee_type_id: 0x4661f894
+}
+pointer_reference {
+  id: 0x1b090e23
+  kind: POINTER
+  pointee_type_id: 0x4664de11
+}
+pointer_reference {
+  id: 0x1b115f4e
+  kind: POINTER
+  pointee_type_id: 0x46059ba5
+}
+pointer_reference {
+  id: 0x1b2ca025
+  kind: POINTER
+  pointee_type_id: 0x46f26608
+}
+pointer_reference {
+  id: 0x1b337410
+  kind: POINTER
+  pointee_type_id: 0x468d36dd
+}
+pointer_reference {
+  id: 0x1b3398cc
+  kind: POINTER
+  pointee_type_id: 0x468e85af
+}
+pointer_reference {
+  id: 0x1b3612f9
+  kind: POINTER
+  pointee_type_id: 0x4698ad78
+}
+pointer_reference {
+  id: 0x1b36c7a2
+  kind: POINTER
+  pointee_type_id: 0x469bf814
+}
+pointer_reference {
+  id: 0x1b44744f
+  kind: POINTER
+  pointee_type_id: 0x475137a2
+}
+pointer_reference {
+  id: 0x1b4ce091
+  kind: POINTER
+  pointee_type_id: 0x477364db
+}
+pointer_reference {
+  id: 0x1b55a8f2
+  kind: POINTER
+  pointee_type_id: 0x47164554
+}
+pointer_reference {
+  id: 0x1b5dc4bf
+  kind: POINTER
+  pointee_type_id: 0x4737f461
+}
+pointer_reference {
+  id: 0x1b686fa1
+  kind: POINTER
+  pointee_type_id: 0x47e1581b
+}
+pointer_reference {
+  id: 0x1b749a04
+  kind: POINTER
+  pointee_type_id: 0x47928e8c
+}
+pointer_reference {
+  id: 0x1b7b196f
+  kind: POINTER
+  pointee_type_id: 0x47ac8321
+}
+pointer_reference {
+  id: 0x1b8590a8
+  kind: POINTER
+  pointee_type_id: 0x4456a43e
+}
+pointer_reference {
+  id: 0x1b866383
+  kind: POINTER
+  pointee_type_id: 0x44596890
+}
+pointer_reference {
+  id: 0x1b9057c9
+  kind: POINTER
+  pointee_type_id: 0x4401b9b8
+}
+pointer_reference {
+  id: 0x1b960210
+  kind: POINTER
+  pointee_type_id: 0x4418eedd
+}
+pointer_reference {
+  id: 0x1b9904e3
+  kind: POINTER
+  pointee_type_id: 0x4424f511
+}
+pointer_reference {
+  id: 0x1b9b03f7
+  kind: POINTER
+  pointee_type_id: 0x442ce940
+}
+pointer_reference {
+  id: 0x1ba8b228
+  kind: POINTER
+  pointee_type_id: 0x44e22e3f
+}
+pointer_reference {
+  id: 0x1ba902d8
+  kind: POINTER
+  pointee_type_id: 0x44e4edff
+}
+pointer_reference {
+  id: 0x1ba9a0d2
+  kind: POINTER
+  pointee_type_id: 0x44e665d5
+}
+pointer_reference {
+  id: 0x1bab96d2
+  kind: POINTER
+  pointee_type_id: 0x44eebdd5
+}
+pointer_reference {
+  id: 0x1bb6a471
+  kind: POINTER
+  pointee_type_id: 0x449a775b
+}
+pointer_reference {
+  id: 0x1bba1b5d
+  kind: POINTER
+  pointee_type_id: 0x44a88bea
+}
+pointer_reference {
+  id: 0x1bc0f2e1
+  kind: POINTER
+  pointee_type_id: 0x45432d18
+}
+pointer_reference {
+  id: 0x1bc6afb1
+  kind: POINTER
+  pointee_type_id: 0x455a585a
+}
+pointer_reference {
+  id: 0x1bd69199
+  kind: POINTER
+  pointee_type_id: 0x451aa0f9
+}
+pointer_reference {
+  id: 0x1bd7361e
+  kind: POINTER
+  pointee_type_id: 0x451c3ee7
+}
+pointer_reference {
+  id: 0x1be24dc1
+  kind: POINTER
+  pointee_type_id: 0x45c9d199
+}
+pointer_reference {
+  id: 0x1be353bc
+  kind: POINTER
+  pointee_type_id: 0x45cda86d
+}
+pointer_reference {
+  id: 0x1bee337f
+  kind: POINTER
+  pointee_type_id: 0x45f82b62
+}
+pointer_reference {
+  id: 0x1bf16028
+  kind: POINTER
+  pointee_type_id: 0x4585663f
+}
+pointer_reference {
+  id: 0x1bf395c9
+  kind: POINTER
+  pointee_type_id: 0x458eb1b8
+}
+pointer_reference {
+  id: 0x1bfa1156
+  kind: POINTER
+  pointee_type_id: 0x45a8a3c4
+}
+pointer_reference {
+  id: 0x1c126813
+  kind: POINTER
+  pointee_type_id: 0x5a0946d3
+}
+pointer_reference {
+  id: 0x1c1627b0
+  kind: POINTER
+  pointee_type_id: 0x5a18785c
+}
+pointer_reference {
+  id: 0x1c1d029b
+  kind: POINTER
+  pointee_type_id: 0x5a34ecf3
+}
+pointer_reference {
+  id: 0x1c1e35e0
+  kind: POINTER
+  pointee_type_id: 0x5a38311c
+}
+pointer_reference {
+  id: 0x1c21e3c8
+  kind: POINTER
+  pointee_type_id: 0x5ac769bf
+}
+pointer_reference {
+  id: 0x1c275b9b
+  kind: POINTER
+  pointee_type_id: 0x5add88f0
+}
+pointer_reference {
+  id: 0x1c27fc93
+  kind: POINTER
+  pointee_type_id: 0x5adf14d3
+}
+pointer_reference {
+  id: 0x1c2d51c5
+  kind: POINTER
+  pointee_type_id: 0x5af5a18b
+}
+pointer_reference {
+  id: 0x1c2f6323
+  kind: POINTER
+  pointee_type_id: 0x5afd6a10
+}
+pointer_reference {
+  id: 0x1c31d99b
+  kind: POINTER
+  pointee_type_id: 0x5a8780f1
+}
+pointer_reference {
+  id: 0x1c34b0f2
+  kind: POINTER
+  pointee_type_id: 0x5a922555
+}
+pointer_reference {
+  id: 0x1c34c69b
+  kind: POINTER
+  pointee_type_id: 0x5a93fcf2
+}
+pointer_reference {
+  id: 0x1c4f6f14
+  kind: POINTER
+  pointee_type_id: 0x5b7d5acf
+}
+pointer_reference {
+  id: 0x1c50c4ad
+  kind: POINTER
+  pointee_type_id: 0x5b03f42b
+}
+pointer_reference {
+  id: 0x1c524c99
+  kind: POINTER
+  pointee_type_id: 0x5b09d4fb
+}
+pointer_reference {
+  id: 0x1c551dee
+  kind: POINTER
+  pointee_type_id: 0x5b149125
+}
+pointer_reference {
+  id: 0x1c5ceff7
+  kind: POINTER
+  pointee_type_id: 0x5b335943
+}
+pointer_reference {
+  id: 0x1c5f1ba0
+  kind: POINTER
+  pointee_type_id: 0x5b3c881c
+}
+pointer_reference {
+  id: 0x1c843062
+  kind: POINTER
+  pointee_type_id: 0x58502715
+}
+pointer_reference {
+  id: 0x1c8bf9fd
+  kind: POINTER
+  pointee_type_id: 0x586f016b
+}
+pointer_reference {
+  id: 0x1c934597
+  kind: POINTER
+  pointee_type_id: 0x580df0c3
+}
+pointer_reference {
+  id: 0x1c9f0c4b
+  kind: POINTER
+  pointee_type_id: 0x583cd7b3
+}
+pointer_reference {
+  id: 0x1ca06989
+  kind: POINTER
+  pointee_type_id: 0x58c140ba
+}
+pointer_reference {
+  id: 0x1ca50753
+  kind: POINTER
+  pointee_type_id: 0x58d4fbd3
+}
+pointer_reference {
+  id: 0x1ca9538a
+  kind: POINTER
+  pointee_type_id: 0x58e5a8b7
+}
+pointer_reference {
+  id: 0x1cb0d19b
+  kind: POINTER
+  pointee_type_id: 0x5883a0f3
+}
+pointer_reference {
+  id: 0x1cb472ce
+  kind: POINTER
+  pointee_type_id: 0x58912da5
+}
+pointer_reference {
+  id: 0x1cc18442
+  kind: POINTER
+  pointee_type_id: 0x5946f795
+}
+pointer_reference {
+  id: 0x1cc2e30b
+  kind: POINTER
+  pointee_type_id: 0x594b6ab2
+}
+pointer_reference {
+  id: 0x1cc3928a
+  kind: POINTER
+  pointee_type_id: 0x594eacb7
+}
+pointer_reference {
+  id: 0x1cc6bdca
+  kind: POINTER
+  pointee_type_id: 0x595a11b6
+}
+pointer_reference {
+  id: 0x1cce8023
+  kind: POINTER
+  pointee_type_id: 0x597ae613
+}
+pointer_reference {
+  id: 0x1cd1f459
+  kind: POINTER
+  pointee_type_id: 0x590737f8
+}
+pointer_reference {
+  id: 0x1cd322d1
+  kind: POINTER
+  pointee_type_id: 0x590c6dd8
+}
+pointer_reference {
+  id: 0x1cdba504
+  kind: POINTER
+  pointee_type_id: 0x592e728c
+}
+pointer_reference {
+  id: 0x1cdcdacb
+  kind: POINTER
+  pointee_type_id: 0x59338db0
+}
+pointer_reference {
+  id: 0x1cdd0a49
+  kind: POINTER
+  pointee_type_id: 0x5934cfbb
+}
+pointer_reference {
+  id: 0x1ce0cd04
+  kind: POINTER
+  pointee_type_id: 0x59c3d28f
+}
+pointer_reference {
+  id: 0x1ce3e83b
+  kind: POINTER
+  pointee_type_id: 0x59cf4672
+}
+pointer_reference {
+  id: 0x1ce51dde
+  kind: POINTER
+  pointee_type_id: 0x59d491e4
+}
+pointer_reference {
+  id: 0x1ce748dd
+  kind: POINTER
+  pointee_type_id: 0x59ddc5eb
+}
+pointer_reference {
+  id: 0x1cee95be
+  kind: POINTER
+  pointee_type_id: 0x59fab064
+}
+pointer_reference {
+  id: 0x1cf57c3c
+  kind: POINTER
+  pointee_type_id: 0x5995166f
+}
+pointer_reference {
+  id: 0x1cfbc822
+  kind: POINTER
+  pointee_type_id: 0x59afc616
+}
+pointer_reference {
+  id: 0x1cfd711c
+  kind: POINTER
+  pointee_type_id: 0x59b522ee
+}
+pointer_reference {
+  id: 0x1d0b22fc
+  kind: POINTER
+  pointee_type_id: 0x5e6c6d6c
+}
+pointer_reference {
+  id: 0x1d10c881
+  kind: POINTER
+  pointee_type_id: 0x5e03c49b
+}
+pointer_reference {
+  id: 0x1d12e85e
+  kind: POINTER
+  pointee_type_id: 0x5e0b47e5
+}
+pointer_reference {
+  id: 0x1d13ba95
+  kind: POINTER
+  pointee_type_id: 0x5e0e0cc8
+}
+pointer_reference {
+  id: 0x1d1533af
+  kind: POINTER
+  pointee_type_id: 0x5e142822
+}
+pointer_reference {
+  id: 0x1d157877
+  kind: POINTER
+  pointee_type_id: 0x5e150742
+}
+pointer_reference {
+  id: 0x1d19a9d5
+  kind: POINTER
+  pointee_type_id: 0x5e2641cb
+}
+pointer_reference {
+  id: 0x1d2416d3
+  kind: POINTER
+  pointee_type_id: 0x5ed0bdd0
+}
+pointer_reference {
+  id: 0x1d25f132
+  kind: POINTER
+  pointee_type_id: 0x5ed72256
+}
+pointer_reference {
+  id: 0x1d2bb1b6
+  kind: POINTER
+  pointee_type_id: 0x5eee2044
+}
+pointer_reference {
+  id: 0x1d33485a
+  kind: POINTER
+  pointee_type_id: 0x5e8dc7f4
+}
+pointer_reference {
+  id: 0x1d34847a
+  kind: POINTER
+  pointee_type_id: 0x5e92f774
+}
+pointer_reference {
+  id: 0x1d3c6aad
+  kind: POINTER
+  pointee_type_id: 0x5eb14c2a
+}
+pointer_reference {
+  id: 0x1d44326e
+  kind: POINTER
+  pointee_type_id: 0x5f502f26
+}
+pointer_reference {
+  id: 0x1d44eec5
+  kind: POINTER
+  pointee_type_id: 0x5f535d88
+}
+pointer_reference {
+  id: 0x1d46f863
+  kind: POINTER
+  pointee_type_id: 0x5f5b0712
+}
+pointer_reference {
+  id: 0x1d4da256
+  kind: POINTER
+  pointee_type_id: 0x5f766fc6
+}
+pointer_reference {
+  id: 0x1d4ed289
+  kind: POINTER
+  pointee_type_id: 0x5f7bacbb
+}
+pointer_reference {
+  id: 0x1d545cda
+  kind: POINTER
+  pointee_type_id: 0x5f1195f5
+}
+pointer_reference {
+  id: 0x1d5934ce
+  kind: POINTER
+  pointee_type_id: 0x5f2435a4
+}
+pointer_reference {
+  id: 0x1d5935e7
+  kind: POINTER
+  pointee_type_id: 0x5f243103
+}
+pointer_reference {
+  id: 0x1d5a7ac2
+  kind: POINTER
+  pointee_type_id: 0x5f290d96
+}
+pointer_reference {
+  id: 0x1d5bae2a
+  kind: POINTER
+  pointee_type_id: 0x5f2e5e34
+}
+pointer_reference {
+  id: 0x1d633c7d
+  kind: POINTER
+  pointee_type_id: 0x5fcc176b
+}
+pointer_reference {
+  id: 0x1d63cfed
+  kind: POINTER
+  pointee_type_id: 0x5fcfd92a
+}
+pointer_reference {
+  id: 0x1d65a00d
+  kind: POINTER
+  pointee_type_id: 0x5fd666ab
+}
+pointer_reference {
+  id: 0x1d65d221
+  kind: POINTER
+  pointee_type_id: 0x5fd7ae1b
+}
+pointer_reference {
+  id: 0x1d6e33e5
+  kind: POINTER
+  pointee_type_id: 0x5ff8290a
+}
+pointer_reference {
+  id: 0x1d749f2c
+  kind: POINTER
+  pointee_type_id: 0x5f929a2d
+}
+pointer_reference {
+  id: 0x1d7ca769
+  kind: POINTER
+  pointee_type_id: 0x5fb27b38
+}
+pointer_reference {
+  id: 0x1d7d5df2
+  kind: POINTER
+  pointee_type_id: 0x5fb59157
+}
+pointer_reference {
+  id: 0x1d841d76
+  kind: POINTER
+  pointee_type_id: 0x5c509347
+}
+pointer_reference {
+  id: 0x1d966a90
+  kind: POINTER
+  pointee_type_id: 0x5c194cde
+}
+pointer_reference {
+  id: 0x1da466a8
+  kind: POINTER
+  pointee_type_id: 0x5cd17c3c
+}
+pointer_reference {
+  id: 0x1daa6efa
+  kind: POINTER
+  pointee_type_id: 0x5ce95d77
+}
+pointer_reference {
+  id: 0x1daaaa3b
+  kind: POINTER
+  pointee_type_id: 0x5cea4e71
+}
+pointer_reference {
+  id: 0x1dafce59
+  kind: POINTER
+  pointee_type_id: 0x5cffdff9
+}
+pointer_reference {
+  id: 0x1db266e3
+  kind: POINTER
+  pointee_type_id: 0x5c897d11
+}
+pointer_reference {
+  id: 0x1db67a3b
+  kind: POINTER
+  pointee_type_id: 0x5c990e71
+}
+pointer_reference {
+  id: 0x1dc3d428
+  kind: POINTER
+  pointee_type_id: 0x5d4fb63f
+}
+pointer_reference {
+  id: 0x1dc9ac6f
+  kind: POINTER
+  pointee_type_id: 0x5d665720
+}
+pointer_reference {
+  id: 0x1dcc0874
+  kind: POINTER
+  pointee_type_id: 0x5d70c74d
+}
+pointer_reference {
+  id: 0x1dce0fdd
+  kind: POINTER
+  pointee_type_id: 0x5d78d9e8
+}
+pointer_reference {
+  id: 0x1dcfe80e
+  kind: POINTER
+  pointee_type_id: 0x5d7f46a5
+}
+pointer_reference {
+  id: 0x1dd03438
+  kind: POINTER
+  pointee_type_id: 0x5d00367f
+}
+pointer_reference {
+  id: 0x1dd39b22
+  kind: POINTER
+  pointee_type_id: 0x5d0e8a16
+}
+pointer_reference {
+  id: 0x1dd474ea
+  kind: POINTER
+  pointee_type_id: 0x5d113536
+}
+pointer_reference {
+  id: 0x1dd82254
+  kind: POINTER
+  pointee_type_id: 0x5d206fcd
+}
+pointer_reference {
+  id: 0x1ddac82a
+  kind: POINTER
+  pointee_type_id: 0x5d2bc636
+}
+pointer_reference {
+  id: 0x1dde0ec8
+  kind: POINTER
+  pointee_type_id: 0x5d38ddbe
+}
+pointer_reference {
+  id: 0x1ddf3f71
+  kind: POINTER
+  pointee_type_id: 0x5d3c1b59
+}
+pointer_reference {
+  id: 0x1de57f85
+  kind: POINTER
+  pointee_type_id: 0x5dd5188a
+}
+pointer_reference {
+  id: 0x1de7ec7c
+  kind: POINTER
+  pointee_type_id: 0x5ddf576c
+}
+pointer_reference {
+  id: 0x1de9dcec
+  kind: POINTER
+  pointee_type_id: 0x5de7952d
+}
+pointer_reference {
+  id: 0x1defcbb1
+  kind: POINTER
+  pointee_type_id: 0x5dffc859
+}
+pointer_reference {
+  id: 0x1df06cce
+  kind: POINTER
+  pointee_type_id: 0x5d8155a5
+}
+pointer_reference {
+  id: 0x1df083fd
+  kind: POINTER
+  pointee_type_id: 0x5d82e969
+}
+pointer_reference {
+  id: 0x1df3d475
+  kind: POINTER
+  pointee_type_id: 0x5d8fb74a
+}
+pointer_reference {
+  id: 0x1df5af16
+  kind: POINTER
+  pointee_type_id: 0x5d965ac4
+}
+pointer_reference {
+  id: 0x1dfd3616
+  kind: POINTER
+  pointee_type_id: 0x5db43ec6
+}
+pointer_reference {
+  id: 0x1dfe0dc3
+  kind: POINTER
+  pointee_type_id: 0x5db8d191
+}
+pointer_reference {
+  id: 0x1dfe3eb6
+  kind: POINTER
+  pointee_type_id: 0x5db81c44
+}
+pointer_reference {
+  id: 0x1e0272bf
+  kind: POINTER
+  pointee_type_id: 0x52492c62
+}
+pointer_reference {
+  id: 0x1e0822f2
+  kind: POINTER
+  pointee_type_id: 0x52606d54
+}
+pointer_reference {
+  id: 0x1e20e7eb
+  kind: POINTER
+  pointee_type_id: 0x52c37930
+}
+pointer_reference {
+  id: 0x1e246ce3
+  kind: POINTER
+  pointee_type_id: 0x52d15510
+}
+pointer_reference {
+  id: 0x1e2533ab
+  kind: POINTER
+  pointee_type_id: 0x52d42832
+}
+pointer_reference {
+  id: 0x1e2b9d4a
+  kind: POINTER
+  pointee_type_id: 0x52ee93b7
+}
+pointer_reference {
+  id: 0x1e2f3f3a
+  kind: POINTER
+  pointee_type_id: 0x52fc1a74
+}
+pointer_reference {
+  id: 0x1e2ffa47
+  kind: POINTER
+  pointee_type_id: 0x52ff0f82
+}
+pointer_reference {
+  id: 0x1e306968
+  kind: POINTER
+  pointee_type_id: 0x5281433c
+}
+pointer_reference {
+  id: 0x1e399fbd
+  kind: POINTER
+  pointee_type_id: 0x52a69869
+}
+pointer_reference {
+  id: 0x1e3c909a
+  kind: POINTER
+  pointee_type_id: 0x52b2a4f5
+}
+pointer_reference {
+  id: 0x1e3d3b89
+  kind: POINTER
+  pointee_type_id: 0x52b408ba
+}
+pointer_reference {
+  id: 0x1e4bcad9
+  kind: POINTER
+  pointee_type_id: 0x536fcdfa
+}
+pointer_reference {
+  id: 0x1e5f193e
+  kind: POINTER
+  pointee_type_id: 0x533c8264
+}
+pointer_reference {
+  id: 0x1e5f9cbf
+  kind: POINTER
+  pointee_type_id: 0x533e9463
+}
+pointer_reference {
+  id: 0x1e62d0f5
+  kind: POINTER
+  pointee_type_id: 0x53cba54b
+}
+pointer_reference {
+  id: 0x1e641f1b
+  kind: POINTER
+  pointee_type_id: 0x53d09af0
+}
+pointer_reference {
+  id: 0x1e7a7830
+  kind: POINTER
+  pointee_type_id: 0x53a9065e
+}
+pointer_reference {
+  id: 0x1e7ab397
+  kind: POINTER
+  pointee_type_id: 0x53aa28c1
+}
+pointer_reference {
+  id: 0x1e820193
+  kind: POINTER
+  pointee_type_id: 0x5048e0d1
+}
+pointer_reference {
+  id: 0x1e840846
+  kind: POINTER
+  pointee_type_id: 0x5050c787
+}
+pointer_reference {
+  id: 0x1e85ebec
+  kind: POINTER
+  pointee_type_id: 0x5057492d
+}
+pointer_reference {
+  id: 0x1e870478
+  kind: POINTER
+  pointee_type_id: 0x505cf77f
+}
+pointer_reference {
+  id: 0x1e881fcb
+  kind: POINTER
+  pointee_type_id: 0x506099b0
+}
+pointer_reference {
+  id: 0x1e8db3c4
+  kind: POINTER
+  pointee_type_id: 0x5076298e
+}
+pointer_reference {
+  id: 0x1e8e5a79
+  kind: POINTER
+  pointee_type_id: 0x50798f79
+}
+pointer_reference {
+  id: 0x1e93567a
+  kind: POINTER
+  pointee_type_id: 0x500dbf75
+}
+pointer_reference {
+  id: 0x1e95b182
+  kind: POINTER
+  pointee_type_id: 0x50162095
+}
+pointer_reference {
+  id: 0x1e9705eb
+  kind: POINTER
+  pointee_type_id: 0x501cf133
+}
+pointer_reference {
+  id: 0x1e9745d3
+  kind: POINTER
+  pointee_type_id: 0x501df1d2
+}
+pointer_reference {
+  id: 0x1e981dc6
+  kind: POINTER
+  pointee_type_id: 0x50209186
+}
+pointer_reference {
+  id: 0x1e9b2283
+  kind: POINTER
+  pointee_type_id: 0x502c6c93
+}
+pointer_reference {
+  id: 0x1e9f31fe
+  kind: POINTER
+  pointee_type_id: 0x503c2166
+}
+pointer_reference {
+  id: 0x1ea5c473
+  kind: POINTER
+  pointee_type_id: 0x50d7f752
+}
+pointer_reference {
+  id: 0x1eafa420
+  kind: POINTER
+  pointee_type_id: 0x50fe761e
+}
+pointer_reference {
+  id: 0x1eafac69
+  kind: POINTER
+  pointee_type_id: 0x50fe5738
+}
+pointer_reference {
+  id: 0x1eb02e8b
+  kind: POINTER
+  pointee_type_id: 0x50805cb3
+}
+pointer_reference {
+  id: 0x1eb28e53
+  kind: POINTER
+  pointee_type_id: 0x508adfd0
+}
+pointer_reference {
+  id: 0x1eb29fb8
+  kind: POINTER
+  pointee_type_id: 0x508a987d
+}
+pointer_reference {
+  id: 0x1eb5853e
+  kind: POINTER
+  pointee_type_id: 0x5096f267
+}
+pointer_reference {
+  id: 0x1eb70c20
+  kind: POINTER
+  pointee_type_id: 0x509cd61e
+}
+pointer_reference {
+  id: 0x1eba2d88
+  kind: POINTER
+  pointee_type_id: 0x50a850bc
+}
+pointer_reference {
+  id: 0x1ebe4388
+  kind: POINTER
+  pointee_type_id: 0x50b9e8bd
+}
+pointer_reference {
+  id: 0x1ed6200d
+  kind: POINTER
+  pointee_type_id: 0x511866ab
+}
+pointer_reference {
+  id: 0x1edbd939
+  kind: POINTER
+  pointee_type_id: 0x512f8279
+}
+pointer_reference {
+  id: 0x1ede947f
+  kind: POINTER
+  pointee_type_id: 0x513ab761
+}
+pointer_reference {
+  id: 0x1ee3d534
+  kind: POINTER
+  pointee_type_id: 0x51cfb24c
+}
+pointer_reference {
+  id: 0x1ee5277b
+  kind: POINTER
+  pointee_type_id: 0x51d47b72
+}
+pointer_reference {
+  id: 0x1eecdc16
+  kind: POINTER
+  pointee_type_id: 0x51f396c6
+}
+pointer_reference {
+  id: 0x1f004fc8
+  kind: POINTER
+  pointee_type_id: 0x5641d9bd
+}
+pointer_reference {
+  id: 0x1f160413
+  kind: POINTER
+  pointee_type_id: 0x5618f6d1
+}
+pointer_reference {
+  id: 0x1f1bbebc
+  kind: POINTER
+  pointee_type_id: 0x562e1c6f
+}
+pointer_reference {
+  id: 0x1f204c4e
+  kind: POINTER
+  pointee_type_id: 0x56c1d7a5
+}
+pointer_reference {
+  id: 0x1f2b89de
+  kind: POINTER
+  pointee_type_id: 0x56eec1e5
+}
+pointer_reference {
+  id: 0x1f305080
+  kind: POINTER
+  pointee_type_id: 0x5681a49c
+}
+pointer_reference {
+  id: 0x1f3595db
+  kind: POINTER
+  pointee_type_id: 0x5696b1f1
+}
+pointer_reference {
+  id: 0x1f383ecc
+  kind: POINTER
+  pointee_type_id: 0x56a01dac
+}
+pointer_reference {
+  id: 0x1f3be1a4
+  kind: POINTER
+  pointee_type_id: 0x56af600e
+}
+pointer_reference {
+  id: 0x1f3cda4b
+  kind: POINTER
+  pointee_type_id: 0x56b38fb3
+}
+pointer_reference {
+  id: 0x1f4342e3
+  kind: POINTER
+  pointee_type_id: 0x574ded10
+}
+pointer_reference {
+  id: 0x1f48062a
+  kind: POINTER
+  pointee_type_id: 0x5760fe36
+}
+pointer_reference {
+  id: 0x1f4b4149
+  kind: POINTER
+  pointee_type_id: 0x576de3ba
+}
+pointer_reference {
+  id: 0x1f4de39e
+  kind: POINTER
+  pointee_type_id: 0x577768e5
+}
+pointer_reference {
+  id: 0x1f50b278
+  kind: POINTER
+  pointee_type_id: 0x57022f7c
+}
+pointer_reference {
+  id: 0x1f55a510
+  kind: POINTER
+  pointee_type_id: 0x571672df
+}
+pointer_reference {
+  id: 0x1f5c397b
+  kind: POINTER
+  pointee_type_id: 0x57300370
+}
+pointer_reference {
+  id: 0x1f5e6890
+  kind: POINTER
+  pointee_type_id: 0x573944de
+}
+pointer_reference {
+  id: 0x1f601480
+  kind: POINTER
+  pointee_type_id: 0x57c0b49d
+}
+pointer_reference {
+  id: 0x1f663182
+  kind: POINTER
+  pointee_type_id: 0x57d82096
+}
+pointer_reference {
+  id: 0x1f66cd75
+  kind: POINTER
+  pointee_type_id: 0x57dbd34b
+}
+pointer_reference {
+  id: 0x1f68ccf9
+  kind: POINTER
+  pointee_type_id: 0x57e3d57b
+}
+pointer_reference {
+  id: 0x1f6aa100
+  kind: POINTER
+  pointee_type_id: 0x57ea629c
+}
+pointer_reference {
+  id: 0x1f6d4933
+  kind: POINTER
+  pointee_type_id: 0x57f5c250
+}
+pointer_reference {
+  id: 0x1f718836
+  kind: POINTER
+  pointee_type_id: 0x5786c646
+}
+pointer_reference {
+  id: 0x1f73dead
+  kind: POINTER
+  pointee_type_id: 0x578f9c2b
+}
+pointer_reference {
+  id: 0x1f755ae3
+  kind: POINTER
+  pointee_type_id: 0x57958d13
+}
+pointer_reference {
+  id: 0x1f7be706
+  kind: POINTER
+  pointee_type_id: 0x57af7a85
+}
+pointer_reference {
+  id: 0x1f8dbf97
+  kind: POINTER
+  pointee_type_id: 0x547618c2
+}
+pointer_reference {
+  id: 0x1f94afa4
+  kind: POINTER
+  pointee_type_id: 0x5412580f
+}
+pointer_reference {
+  id: 0x1f97e1e4
+  kind: POINTER
+  pointee_type_id: 0x541f610f
+}
+pointer_reference {
+  id: 0x1f9da9a8
+  kind: POINTER
+  pointee_type_id: 0x5436403f
+}
+pointer_reference {
+  id: 0x1fa347d9
+  kind: POINTER
+  pointee_type_id: 0x54cdf9fa
+}
+pointer_reference {
+  id: 0x1fa7df7c
+  kind: POINTER
+  pointee_type_id: 0x54df9b6e
+}
+pointer_reference {
+  id: 0x1fb52cfd
+  kind: POINTER
+  pointee_type_id: 0x54945569
+}
+pointer_reference {
+  id: 0x1fba7d3d
+  kind: POINTER
+  pointee_type_id: 0x54a91269
+}
+pointer_reference {
+  id: 0x1fc1dca8
+  kind: POINTER
+  pointee_type_id: 0x5547943d
+}
+pointer_reference {
+  id: 0x1fc34bc2
+  kind: POINTER
+  pointee_type_id: 0x554dc994
+}
+pointer_reference {
+  id: 0x1fcb234b
+  kind: POINTER
+  pointee_type_id: 0x556c6bb0
+}
+pointer_reference {
+  id: 0x1fd545e0
+  kind: POINTER
+  pointee_type_id: 0x5515f11d
+}
+pointer_reference {
+  id: 0x1fd779eb
+  kind: POINTER
+  pointee_type_id: 0x551d0131
+}
+pointer_reference {
+  id: 0x1fe51930
+  kind: POINTER
+  pointee_type_id: 0x55d4825e
+}
+pointer_reference {
+  id: 0x1fe7f40f
+  kind: POINTER
+  pointee_type_id: 0x55df36a2
+}
+pointer_reference {
+  id: 0x1ff83538
+  kind: POINTER
+  pointee_type_id: 0x55a0327c
+}
+pointer_reference {
+  id: 0x1fff8df6
+  kind: POINTER
+  pointee_type_id: 0x55bed144
+}
+pointer_reference {
+  id: 0x20007040
+  kind: POINTER
+  pointee_type_id: 0xaa41279c
+}
+pointer_reference {
+  id: 0x20054a7b
+  kind: POINTER
+  pointee_type_id: 0xaa55cf70
+}
+pointer_reference {
+  id: 0x2025e257
+  kind: POINTER
+  pointee_type_id: 0xaad76fc1
+}
+pointer_reference {
+  id: 0x20297ce4
+  kind: POINTER
+  pointee_type_id: 0xaae5150f
+}
+pointer_reference {
+  id: 0x2033e582
+  kind: POINTER
+  pointee_type_id: 0xaa8f7095
+}
+pointer_reference {
+  id: 0x2035145b
+  kind: POINTER
+  pointee_type_id: 0xaa94b7f2
+}
+pointer_reference {
+  id: 0x20351a02
+  kind: POINTER
+  pointee_type_id: 0xaa948e95
+}
+pointer_reference {
+  id: 0x2035a67f
+  kind: POINTER
+  pointee_type_id: 0xaa967f61
+}
+pointer_reference {
+  id: 0x20394568
+  kind: POINTER
+  pointee_type_id: 0xaaa5f33f
+}
+pointer_reference {
+  id: 0x203c0fc1
+  kind: POINTER
+  pointee_type_id: 0xaab0d999
+}
+pointer_reference {
+  id: 0x203cd5eb
+  kind: POINTER
+  pointee_type_id: 0xaab3b130
+}
+pointer_reference {
+  id: 0x203e14bb
+  kind: POINTER
+  pointee_type_id: 0xaab8b473
+}
+pointer_reference {
+  id: 0x203f3220
+  kind: POINTER
+  pointee_type_id: 0xaabc2e1f
+}
+pointer_reference {
+  id: 0x204e55e5
+  kind: POINTER
+  pointee_type_id: 0xab79b10b
+}
+pointer_reference {
+  id: 0x2054dcff
+  kind: POINTER
+  pointee_type_id: 0xab139560
+}
+pointer_reference {
+  id: 0x205789b5
+  kind: POINTER
+  pointee_type_id: 0xab1ec04a
+}
+pointer_reference {
+  id: 0x205f4b01
+  kind: POINTER
+  pointee_type_id: 0xab3dca9b
+}
+pointer_reference {
+  id: 0x2060db23
+  kind: POINTER
+  pointee_type_id: 0xabc38a13
+}
+pointer_reference {
+  id: 0x206bf782
+  kind: POINTER
+  pointee_type_id: 0xabef3896
+}
+pointer_reference {
+  id: 0x207717c7
+  kind: POINTER
+  pointee_type_id: 0xab9cb981
+}
+pointer_reference {
+  id: 0x20782fb2
+  kind: POINTER
+  pointee_type_id: 0xaba05857
+}
+pointer_reference {
+  id: 0x2078aea9
+  kind: POINTER
+  pointee_type_id: 0xaba25c38
+}
+pointer_reference {
+  id: 0x2087fb8b
+  kind: POINTER
+  pointee_type_id: 0xa85f08b1
+}
+pointer_reference {
+  id: 0x20937fbf
+  kind: POINTER
+  pointee_type_id: 0xa80d1860
+}
+pointer_reference {
+  id: 0x209886d0
+  kind: POINTER
+  pointee_type_id: 0xa822fddc
+}
+pointer_reference {
+  id: 0x209cbdcc
+  kind: POINTER
+  pointee_type_id: 0xa83211ac
+}
+pointer_reference {
+  id: 0x20a3c757
+  kind: POINTER
+  pointee_type_id: 0xa8cffbc3
+}
+pointer_reference {
+  id: 0x20a576d4
+  kind: POINTER
+  pointee_type_id: 0xa8d53dcc
+}
+pointer_reference {
+  id: 0x20a66919
+  kind: POINTER
+  pointee_type_id: 0xa8d942fb
+}
+pointer_reference {
+  id: 0x20b9211e
+  kind: POINTER
+  pointee_type_id: 0xa8a462e4
+}
+pointer_reference {
+  id: 0x20d23755
+  kind: POINTER
+  pointee_type_id: 0xa9083bc9
+}
+pointer_reference {
+  id: 0x20e2ed71
+  kind: POINTER
+  pointee_type_id: 0xa9cb5358
+}
+pointer_reference {
+  id: 0x20e58ff6
+  kind: POINTER
+  pointee_type_id: 0xa9d6d944
+}
+pointer_reference {
+  id: 0x20e8fc5a
+  kind: POINTER
+  pointee_type_id: 0xa9e317f6
+}
+pointer_reference {
+  id: 0x21003da7
+  kind: POINTER
+  pointee_type_id: 0xae401000
+}
+pointer_reference {
+  id: 0x2101ca02
+  kind: POINTER
+  pointee_type_id: 0xae47ce96
+}
+pointer_reference {
+  id: 0x2105ad7e
+  kind: POINTER
+  pointee_type_id: 0xae565365
+}
+pointer_reference {
+  id: 0x21069feb
+  kind: POINTER
+  pointee_type_id: 0xae5a9933
+}
+pointer_reference {
+  id: 0x2107c9ab
+  kind: POINTER
+  pointee_type_id: 0xae5fc030
+}
+pointer_reference {
+  id: 0x21082bfc
+  kind: POINTER
+  pointee_type_id: 0xae60496e
+}
+pointer_reference {
+  id: 0x210b9681
+  kind: POINTER
+  pointee_type_id: 0xae6ebc99
+}
+pointer_reference {
+  id: 0x210bdbea
+  kind: POINTER
+  pointee_type_id: 0xae6f8936
+}
+pointer_reference {
+  id: 0x210dc160
+  kind: POINTER
+  pointee_type_id: 0xae77e31e
+}
+pointer_reference {
+  id: 0x2110e8dc
+  kind: POINTER
+  pointee_type_id: 0xae0345ef
+}
+pointer_reference {
+  id: 0x2115ac15
+  kind: POINTER
+  pointee_type_id: 0xae1656c9
+}
+pointer_reference {
+  id: 0x2115f462
+  kind: POINTER
+  pointee_type_id: 0xae173716
+}
+pointer_reference {
+  id: 0x21207103
+  kind: POINTER
+  pointee_type_id: 0xaec12290
+}
+pointer_reference {
+  id: 0x2122dbcf
+  kind: POINTER
+  pointee_type_id: 0xaecb89a0
+}
+pointer_reference {
+  id: 0x2124c9f1
+  kind: POINTER
+  pointee_type_id: 0xaed3c159
+}
+pointer_reference {
+  id: 0x2126fcd8
+  kind: POINTER
+  pointee_type_id: 0xaedb15fc
+}
+pointer_reference {
+  id: 0x212a866f
+  kind: POINTER
+  pointee_type_id: 0xaeeaff23
+}
+pointer_reference {
+  id: 0x2131312a
+  kind: POINTER
+  pointee_type_id: 0xae842235
+}
+pointer_reference {
+  id: 0x213211e8
+  kind: POINTER
+  pointee_type_id: 0xae88a13d
+}
+pointer_reference {
+  id: 0x2133d178
+  kind: POINTER
+  pointee_type_id: 0xae8fa37e
+}
+pointer_reference {
+  id: 0x21397e56
+  kind: POINTER
+  pointee_type_id: 0xaea51fc6
+}
+pointer_reference {
+  id: 0x213e084f
+  kind: POINTER
+  pointee_type_id: 0xaeb8c7a1
+}
+pointer_reference {
+  id: 0x213e28f7
+  kind: POINTER
+  pointee_type_id: 0xaeb84542
+}
+pointer_reference {
+  id: 0x21450ae9
+  kind: POINTER
+  pointee_type_id: 0xaf54cd38
+}
+pointer_reference {
+  id: 0x2145f7aa
+  kind: POINTER
+  pointee_type_id: 0xaf573835
+}
+pointer_reference {
+  id: 0x214fd672
+  kind: POINTER
+  pointee_type_id: 0xaf7fbf57
+}
+pointer_reference {
+  id: 0x21530c77
+  kind: POINTER
+  pointee_type_id: 0xaf0cd741
+}
+pointer_reference {
+  id: 0x2154832c
+  kind: POINTER
+  pointee_type_id: 0xaf12ea2c
+}
+pointer_reference {
+  id: 0x2159351a
+  kind: POINTER
+  pointee_type_id: 0xaf2432f4
+}
+pointer_reference {
+  id: 0x215a6e18
+  kind: POINTER
+  pointee_type_id: 0xaf295eff
+}
+pointer_reference {
+  id: 0x215cce2d
+  kind: POINTER
+  pointee_type_id: 0xaf33de29
+}
+pointer_reference {
+  id: 0x2170d06d
+  kind: POINTER
+  pointee_type_id: 0xaf83a728
+}
+pointer_reference {
+  id: 0x2171bdb8
+  kind: POINTER
+  pointee_type_id: 0xaf86107e
+}
+pointer_reference {
+  id: 0x217dc8c4
+  kind: POINTER
+  pointee_type_id: 0xafb7c58e
+}
+pointer_reference {
+  id: 0x217f99ba
+  kind: POINTER
+  pointee_type_id: 0xafbe8077
+}
+pointer_reference {
+  id: 0x219262d4
+  kind: POINTER
+  pointee_type_id: 0xac096dcc
+}
+pointer_reference {
+  id: 0x21936a6e
+  kind: POINTER
+  pointee_type_id: 0xac0d4f27
+}
+pointer_reference {
+  id: 0x21951c89
+  kind: POINTER
+  pointee_type_id: 0xac1494ba
+}
+pointer_reference {
+  id: 0x21b2d2f4
+  kind: POINTER
+  pointee_type_id: 0xac8bad4e
+}
+pointer_reference {
+  id: 0x21b9b50c
+  kind: POINTER
+  pointee_type_id: 0xaca632ad
+}
+pointer_reference {
+  id: 0x21c08bd1
+  kind: POINTER
+  pointee_type_id: 0xad42c9db
+}
+pointer_reference {
+  id: 0x21c1b566
+  kind: POINTER
+  pointee_type_id: 0xad463304
+}
+pointer_reference {
+  id: 0x21d7b2e4
+  kind: POINTER
+  pointee_type_id: 0xad1e2d0f
+}
+pointer_reference {
+  id: 0x21de2259
+  kind: POINTER
+  pointee_type_id: 0xad386ff8
+}
+pointer_reference {
+  id: 0x21df69d0
+  kind: POINTER
+  pointee_type_id: 0xad3d41de
+}
+pointer_reference {
+  id: 0x21e074e8
+  kind: POINTER
+  pointee_type_id: 0xadc1353c
+}
+pointer_reference {
+  id: 0x21e0c6ee
+  kind: POINTER
+  pointee_type_id: 0xadc3fd26
+}
+pointer_reference {
+  id: 0x21e26633
+  kind: POINTER
+  pointee_type_id: 0xadc97e53
+}
+pointer_reference {
+  id: 0x21e5ca8a
+  kind: POINTER
+  pointee_type_id: 0xadd7ccb6
+}
+pointer_reference {
+  id: 0x21e6cb2c
+  kind: POINTER
+  pointee_type_id: 0xaddbca2c
+}
+pointer_reference {
+  id: 0x21ebac93
+  kind: POINTER
+  pointee_type_id: 0xadee54d0
+}
+pointer_reference {
+  id: 0x21ee065a
+  kind: POINTER
+  pointee_type_id: 0xadf8fff6
+}
+pointer_reference {
+  id: 0x21f16d77
+  kind: POINTER
+  pointee_type_id: 0xad855341
+}
+pointer_reference {
+  id: 0x2208f89a
+  kind: POINTER
+  pointee_type_id: 0xa26304f7
+}
+pointer_reference {
+  id: 0x2215f16e
+  kind: POINTER
+  pointee_type_id: 0xa2172324
+}
+pointer_reference {
+  id: 0x221732c5
+  kind: POINTER
+  pointee_type_id: 0xa21c2d88
+}
+pointer_reference {
+  id: 0x22198273
+  kind: POINTER
+  pointee_type_id: 0xa226ef51
+}
+pointer_reference {
+  id: 0x221a7c5c
+  kind: POINTER
+  pointee_type_id: 0xa22917ec
+}
+pointer_reference {
+  id: 0x221aed72
+  kind: POINTER
+  pointee_type_id: 0xa22b5357
+}
+pointer_reference {
+  id: 0x2230f0e3
+  kind: POINTER
+  pointee_type_id: 0xa2832510
+}
+pointer_reference {
+  id: 0x22329a57
+  kind: POINTER
+  pointee_type_id: 0xa28a8fc1
+}
+pointer_reference {
+  id: 0x223fb206
+  kind: POINTER
+  pointee_type_id: 0xa2be2e87
+}
+pointer_reference {
+  id: 0x224973b2
+  kind: POINTER
+  pointee_type_id: 0xa3652854
+}
+pointer_reference {
+  id: 0x2259084f
+  kind: POINTER
+  pointee_type_id: 0xa324c7a3
+}
+pointer_reference {
+  id: 0x22635bb2
+  kind: POINTER
+  pointee_type_id: 0xa3cd8855
+}
+pointer_reference {
+  id: 0x22669bc4
+  kind: POINTER
+  pointee_type_id: 0xa3da898e
+}
+pointer_reference {
+  id: 0x2272a319
+  kind: POINTER
+  pointee_type_id: 0xa38a6af8
+}
+pointer_reference {
+  id: 0x2274f708
+  kind: POINTER
+  pointee_type_id: 0xa3933abf
+}
+pointer_reference {
+  id: 0x227b260f
+  kind: POINTER
+  pointee_type_id: 0xa3ac7ea1
+}
+pointer_reference {
+  id: 0x227b563c
+  kind: POINTER
+  pointee_type_id: 0xa3adbe6c
+}
+pointer_reference {
+  id: 0x228d1fdb
+  kind: POINTER
+  pointee_type_id: 0xa07499f1
+}
+pointer_reference {
+  id: 0x228d4605
+  kind: POINTER
+  pointee_type_id: 0xa075fe88
+}
+pointer_reference {
+  id: 0x229023df
+  kind: POINTER
+  pointee_type_id: 0xa00069e0
+}
+pointer_reference {
+  id: 0x22aebb74
+  kind: POINTER
+  pointee_type_id: 0xa0fa0b4e
+}
+pointer_reference {
+  id: 0x22af47d0
+  kind: POINTER
+  pointee_type_id: 0xa0fdf9dd
+}
+pointer_reference {
+  id: 0x22b06ce2
+  kind: POINTER
+  pointee_type_id: 0xa0815516
+}
+pointer_reference {
+  id: 0x22b3ece7
+  kind: POINTER
+  pointee_type_id: 0xa08f5503
+}
+pointer_reference {
+  id: 0x22b74923
+  kind: POINTER
+  pointee_type_id: 0xa09dc212
+}
+pointer_reference {
+  id: 0x22bb3fbf
+  kind: POINTER
+  pointee_type_id: 0xa0ac1862
+}
+pointer_reference {
+  id: 0x22c0624b
+  kind: POINTER
+  pointee_type_id: 0xa1416fb0
+}
+pointer_reference {
+  id: 0x22c8bf71
+  kind: POINTER
+  pointee_type_id: 0xa1621b58
+}
+pointer_reference {
+  id: 0x22ce5396
+  kind: POINTER
+  pointee_type_id: 0xa179a8c5
+}
+pointer_reference {
+  id: 0x22cee855
+  kind: POINTER
+  pointee_type_id: 0xa17b47ca
+}
+pointer_reference {
+  id: 0x22d082e5
+  kind: POINTER
+  pointee_type_id: 0xa102ed0b
+}
+pointer_reference {
+  id: 0x22d3e112
+  kind: POINTER
+  pointee_type_id: 0xa10f62d5
+}
+pointer_reference {
+  id: 0x22d89eed
+  kind: POINTER
+  pointee_type_id: 0xa1229d28
+}
+pointer_reference {
+  id: 0x22da9c00
+  kind: POINTER
+  pointee_type_id: 0xa12a969e
+}
+pointer_reference {
+  id: 0x22e58417
+  kind: POINTER
+  pointee_type_id: 0xa1d6f6c0
+}
+pointer_reference {
+  id: 0x22f6cb5b
+  kind: POINTER
+  pointee_type_id: 0xa19bcbf3
+}
+pointer_reference {
+  id: 0x23006385
+  kind: POINTER
+  pointee_type_id: 0xa641688a
+}
+pointer_reference {
+  id: 0x2302df05
+  kind: POINTER
+  pointee_type_id: 0xa64b9a8a
+}
+pointer_reference {
+  id: 0x230825f0
+  kind: POINTER
+  pointee_type_id: 0xa660715d
+}
+pointer_reference {
+  id: 0x2309ad3e
+  kind: POINTER
+  pointee_type_id: 0xa6665265
+}
+pointer_reference {
+  id: 0x230a3153
+  kind: POINTER
+  pointee_type_id: 0xa66823d2
+}
+pointer_reference {
+  id: 0x23110b14
+  kind: POINTER
+  pointee_type_id: 0xa604cacc
+}
+pointer_reference {
+  id: 0x2314b69f
+  kind: POINTER
+  pointee_type_id: 0xa6123ce2
+}
+pointer_reference {
+  id: 0x23167dcb
+  kind: POINTER
+  pointee_type_id: 0xa61911b2
+}
+pointer_reference {
+  id: 0x23295076
+  kind: POINTER
+  pointee_type_id: 0xa6e5a744
+}
+pointer_reference {
+  id: 0x232dc51f
+  kind: POINTER
+  pointee_type_id: 0xa6f7f2e2
+}
+pointer_reference {
+  id: 0x23384fd2
+  kind: POINTER
+  pointee_type_id: 0xa6a1d9d7
+}
+pointer_reference {
+  id: 0x234757ce
+  kind: POINTER
+  pointee_type_id: 0xa75db9a5
+}
+pointer_reference {
+  id: 0x234c60dd
+  kind: POINTER
+  pointee_type_id: 0xa77165e8
+}
+pointer_reference {
+  id: 0x2351f077
+  kind: POINTER
+  pointee_type_id: 0xa7072742
+}
+pointer_reference {
+  id: 0x23543beb
+  kind: POINTER
+  pointee_type_id: 0xa7100932
+}
+pointer_reference {
+  id: 0x235889e8
+  kind: POINTER
+  pointee_type_id: 0xa722c13e
+}
+pointer_reference {
+  id: 0x235e4819
+  kind: POINTER
+  pointee_type_id: 0xa739c6fb
+}
+pointer_reference {
+  id: 0x2360e10b
+  kind: POINTER
+  pointee_type_id: 0xa7c362b0
+}
+pointer_reference {
+  id: 0x236d6a86
+  kind: POINTER
+  pointee_type_id: 0xa7f54c85
+}
+pointer_reference {
+  id: 0x237169c8
+  kind: POINTER
+  pointee_type_id: 0xa78541bf
+}
+pointer_reference {
+  id: 0x238091f9
+  kind: POINTER
+  pointee_type_id: 0xa442a17b
+}
+pointer_reference {
+  id: 0x238b8721
+  kind: POINTER
+  pointee_type_id: 0xa46efa19
+}
+pointer_reference {
+  id: 0x239164bc
+  kind: POINTER
+  pointee_type_id: 0xa405746d
+}
+pointer_reference {
+  id: 0x23947191
+  kind: POINTER
+  pointee_type_id: 0xa41120db
+}
+pointer_reference {
+  id: 0x239cbb42
+  kind: POINTER
+  pointee_type_id: 0xa4320b94
+}
+pointer_reference {
+  id: 0x239e18b5
+  kind: POINTER
+  pointee_type_id: 0xa4388448
+}
+pointer_reference {
+  id: 0x23a73732
+  kind: POINTER
+  pointee_type_id: 0xa4dc3a54
+}
+pointer_reference {
+  id: 0x23bd1038
+  kind: POINTER
+  pointee_type_id: 0xa4b4a67c
+}
+pointer_reference {
+  id: 0x23c30672
+  kind: POINTER
+  pointee_type_id: 0xa54cff55
+}
+pointer_reference {
+  id: 0x23c56cdf
+  kind: POINTER
+  pointee_type_id: 0xa55555e2
+}
+pointer_reference {
+  id: 0x23cf7ec9
+  kind: POINTER
+  pointee_type_id: 0xa57d1db8
+}
+pointer_reference {
+  id: 0x23d902f6
+  kind: POINTER
+  pointee_type_id: 0xa524ed45
+}
+pointer_reference {
+  id: 0x23d957b7
+  kind: POINTER
+  pointee_type_id: 0xa525b840
+}
+pointer_reference {
+  id: 0x23da1e1b
+  kind: POINTER
+  pointee_type_id: 0xa5289ef2
+}
+pointer_reference {
+  id: 0x23dd1ac6
+  kind: POINTER
+  pointee_type_id: 0xa5348d85
+}
+pointer_reference {
+  id: 0x23e765f6
+  kind: POINTER
+  pointee_type_id: 0xa5dd7147
+}
+pointer_reference {
+  id: 0x23e856d0
+  kind: POINTER
+  pointee_type_id: 0xa5e1bddf
+}
+pointer_reference {
+  id: 0x23f09c34
+  kind: POINTER
+  pointee_type_id: 0xa582964d
+}
+pointer_reference {
+  id: 0x23f5bb5c
+  kind: POINTER
+  pointee_type_id: 0xa5960bec
+}
+pointer_reference {
+  id: 0x23f6f3f6
+  kind: POINTER
+  pointee_type_id: 0xa59b2946
+}
+pointer_reference {
+  id: 0x23f93cc0
+  kind: POINTER
+  pointee_type_id: 0xa5a4159e
+}
+pointer_reference {
+  id: 0x24159bc9
+  kind: POINTER
+  pointee_type_id: 0xba1689b9
+}
+pointer_reference {
+  id: 0x24265283
+  kind: POINTER
+  pointee_type_id: 0xbad9ac93
+}
+pointer_reference {
+  id: 0x242fbc95
+  kind: POINTER
+  pointee_type_id: 0xbafe14c8
+}
+pointer_reference {
+  id: 0x24373219
+  kind: POINTER
+  pointee_type_id: 0xba9c2ef8
+}
+pointer_reference {
+  id: 0x24401166
+  kind: POINTER
+  pointee_type_id: 0xbb40a305
+}
+pointer_reference {
+  id: 0x244b9b37
+  kind: POINTER
+  pointee_type_id: 0xbb6e8a40
+}
+pointer_reference {
+  id: 0x2456537c
+  kind: POINTER
+  pointee_type_id: 0xbb19ab6d
+}
+pointer_reference {
+  id: 0x245d6a13
+  kind: POINTER
+  pointee_type_id: 0xbb354ed2
+}
+pointer_reference {
+  id: 0x246c8973
+  kind: POINTER
+  pointee_type_id: 0xbbf2c351
+}
+pointer_reference {
+  id: 0x246cd286
+  kind: POINTER
+  pointee_type_id: 0xbbf3ac86
+}
+pointer_reference {
+  id: 0x246dc7d4
+  kind: POINTER
+  pointee_type_id: 0xbbf7f9cc
+}
+pointer_reference {
+  id: 0x24706e28
+  kind: POINTER
+  pointee_type_id: 0xbb815e3f
+}
+pointer_reference {
+  id: 0x24733af8
+  kind: POINTER
+  pointee_type_id: 0xbb8c0d7e
+}
+pointer_reference {
+  id: 0x247c3922
+  kind: POINTER
+  pointee_type_id: 0xbbb00216
+}
+pointer_reference {
+  id: 0x247e1ebf
+  kind: POINTER
+  pointee_type_id: 0xbbb89c61
+}
+pointer_reference {
+  id: 0x2488f94c
+  kind: POINTER
+  pointee_type_id: 0xb86303af
+}
+pointer_reference {
+  id: 0x248a9244
+  kind: POINTER
+  pointee_type_id: 0xb86aaf8f
+}
+pointer_reference {
+  id: 0x248ee4b0
+  kind: POINTER
+  pointee_type_id: 0xb87b745c
+}
+pointer_reference {
+  id: 0x24941b6f
+  kind: POINTER
+  pointee_type_id: 0xb8108b21
+}
+pointer_reference {
+  id: 0x24954792
+  kind: POINTER
+  pointee_type_id: 0xb815f8d7
+}
+pointer_reference {
+  id: 0x249959de
+  kind: POINTER
+  pointee_type_id: 0xb82581e5
+}
+pointer_reference {
+  id: 0x249b55ac
+  kind: POINTER
+  pointee_type_id: 0xb82db02e
+}
+pointer_reference {
+  id: 0x249da67c
+  kind: POINTER
+  pointee_type_id: 0xb8367f6d
+}
+pointer_reference {
+  id: 0x249dc0ec
+  kind: POINTER
+  pointee_type_id: 0xb837e52e
+}
+pointer_reference {
+  id: 0x24bbc433
+  kind: POINTER
+  pointee_type_id: 0xb8aff650
+}
+pointer_reference {
+  id: 0x24c1f7c9
+  kind: POINTER
+  pointee_type_id: 0xb94739b9
+}
+pointer_reference {
+  id: 0x24c6c7eb
+  kind: POINTER
+  pointee_type_id: 0xb95bf932
+}
+pointer_reference {
+  id: 0x24cb3ae4
+  kind: POINTER
+  pointee_type_id: 0xb96c0d0e
+}
+pointer_reference {
+  id: 0x24cb72c4
+  kind: POINTER
+  pointee_type_id: 0xb96d2d8e
+}
+pointer_reference {
+  id: 0x24d23255
+  kind: POINTER
+  pointee_type_id: 0xb9082fcb
+}
+pointer_reference {
+  id: 0x24d4b888
+  kind: POINTER
+  pointee_type_id: 0xb91204bf
+}
+pointer_reference {
+  id: 0x24d65b62
+  kind: POINTER
+  pointee_type_id: 0xb9198b14
+}
+pointer_reference {
+  id: 0x24d8c7ab
+  kind: POINTER
+  pointee_type_id: 0xb923f832
+}
+pointer_reference {
+  id: 0x24dff7bd
+  kind: POINTER
+  pointee_type_id: 0xb93f386b
+}
+pointer_reference {
+  id: 0x24e24923
+  kind: POINTER
+  pointee_type_id: 0xb9c9c211
+}
+pointer_reference {
+  id: 0x24f58c44
+  kind: POINTER
+  pointee_type_id: 0xb996d78c
+}
+pointer_reference {
+  id: 0x24f7f3ca
+  kind: POINTER
+  pointee_type_id: 0xb99f29b6
+}
+pointer_reference {
+  id: 0x250095e2
+  kind: POINTER
+  pointee_type_id: 0xbe42b117
+}
+pointer_reference {
+  id: 0x2524545c
+  kind: POINTER
+  pointee_type_id: 0xbed1b7ef
+}
+pointer_reference {
+  id: 0x25296a8e
+  kind: POINTER
+  pointee_type_id: 0xbee54ca4
+}
+pointer_reference {
+  id: 0x2542055c
+  kind: POINTER
+  pointee_type_id: 0xbf48f3ec
+}
+pointer_reference {
+  id: 0x254e080a
+  kind: POINTER
+  pointee_type_id: 0xbf78c6b4
+}
+pointer_reference {
+  id: 0x25520d15
+  kind: POINTER
+  pointee_type_id: 0xbf08d2c8
+}
+pointer_reference {
+  id: 0x2560a232
+  kind: POINTER
+  pointee_type_id: 0xbfc26e57
+}
+pointer_reference {
+  id: 0x256444f7
+  kind: POINTER
+  pointee_type_id: 0xbfd1f543
+}
+pointer_reference {
+  id: 0x25653b02
+  kind: POINTER
+  pointee_type_id: 0xbfd40a95
+}
+pointer_reference {
+  id: 0x2575f320
+  kind: POINTER
+  pointee_type_id: 0xbf972a1c
+}
+pointer_reference {
+  id: 0x25782362
+  kind: POINTER
+  pointee_type_id: 0xbfa06b14
+}
+pointer_reference {
+  id: 0x257d12af
+  kind: POINTER
+  pointee_type_id: 0xbfb4ac23
+}
+pointer_reference {
+  id: 0x2599d0b6
+  kind: POINTER
+  pointee_type_id: 0xbc27a444
+}
+pointer_reference {
+  id: 0x25a39938
+  kind: POINTER
+  pointee_type_id: 0xbcce827e
+}
+pointer_reference {
+  id: 0x25aa41dd
+  kind: POINTER
+  pointee_type_id: 0xbce9e1eb
+}
+pointer_reference {
+  id: 0x25ab49bb
+  kind: POINTER
+  pointee_type_id: 0xbcedc070
+}
+pointer_reference {
+  id: 0x25ab8941
+  kind: POINTER
+  pointee_type_id: 0xbceec39a
+}
+pointer_reference {
+  id: 0x25b57283
+  kind: POINTER
+  pointee_type_id: 0xbc952c91
+}
+pointer_reference {
+  id: 0x25b73daa
+  kind: POINTER
+  pointee_type_id: 0xbc9c1035
+}
+pointer_reference {
+  id: 0x25b78558
+  kind: POINTER
+  pointee_type_id: 0xbc9ef3fd
+}
+pointer_reference {
+  id: 0x25c2b7b5
+  kind: POINTER
+  pointee_type_id: 0xbd4a3848
+}
+pointer_reference {
+  id: 0x25c5b309
+  kind: POINTER
+  pointee_type_id: 0xbd562aba
+}
+pointer_reference {
+  id: 0x25c6650b
+  kind: POINTER
+  pointee_type_id: 0xbd5972b1
+}
+pointer_reference {
+  id: 0x25c97cc9
+  kind: POINTER
+  pointee_type_id: 0xbd6515b8
+}
+pointer_reference {
+  id: 0x25db57c0
+  kind: POINTER
+  pointee_type_id: 0xbd2db99f
+}
+pointer_reference {
+  id: 0x25e44921
+  kind: POINTER
+  pointee_type_id: 0xbdd1c219
+}
+pointer_reference {
+  id: 0x25e45be7
+  kind: POINTER
+  pointee_type_id: 0xbdd18903
+}
+pointer_reference {
+  id: 0x25e63179
+  kind: POINTER
+  pointee_type_id: 0xbdd82378
+}
+pointer_reference {
+  id: 0x25e982e5
+  kind: POINTER
+  pointee_type_id: 0xbde6ed0a
+}
+pointer_reference {
+  id: 0x25f5cdb3
+  kind: POINTER
+  pointee_type_id: 0xbd97d052
+}
+pointer_reference {
+  id: 0x25fa8fb1
+  kind: POINTER
+  pointee_type_id: 0xbdaad85b
+}
+pointer_reference {
+  id: 0x25fbbcbe
+  kind: POINTER
+  pointee_type_id: 0xbdae1466
+}
+pointer_reference {
+  id: 0x25ffeea5
+  kind: POINTER
+  pointee_type_id: 0xbdbf5c0a
+}
+pointer_reference {
+  id: 0x2628eae6
+  kind: POINTER
+  pointee_type_id: 0xb2e34d06
+}
+pointer_reference {
+  id: 0x263062c2
+  kind: POINTER
+  pointee_type_id: 0xb2816d95
+}
+pointer_reference {
+  id: 0x2634304b
+  kind: POINTER
+  pointee_type_id: 0xb29027b3
+}
+pointer_reference {
+  id: 0x263fbcc9
+  kind: POINTER
+  pointee_type_id: 0xb2be15b9
+}
+pointer_reference {
+  id: 0x2650a028
+  kind: POINTER
+  pointee_type_id: 0xb302663f
+}
+pointer_reference {
+  id: 0x265125cd
+  kind: POINTER
+  pointee_type_id: 0xb30471a8
+}
+pointer_reference {
+  id: 0x26554526
+  kind: POINTER
+  pointee_type_id: 0xb315f206
+}
+pointer_reference {
+  id: 0x2658f937
+  kind: POINTER
+  pointee_type_id: 0xb3230240
+}
+pointer_reference {
+  id: 0x265fc1e0
+  kind: POINTER
+  pointee_type_id: 0xb33fe11e
+}
+pointer_reference {
+  id: 0x2662a905
+  kind: POINTER
+  pointee_type_id: 0xb3ca4288
+}
+pointer_reference {
+  id: 0x266595fc
+  kind: POINTER
+  pointee_type_id: 0xb3d6b16f
+}
+pointer_reference {
+  id: 0x2668e644
+  kind: POINTER
+  pointee_type_id: 0xb3e37f8f
+}
+pointer_reference {
+  id: 0x2669d715
+  kind: POINTER
+  pointee_type_id: 0xb3e7bac9
+}
+pointer_reference {
+  id: 0x266bc5f5
+  kind: POINTER
+  pointee_type_id: 0xb3eff14b
+}
+pointer_reference {
+  id: 0x2677b70d
+  kind: POINTER
+  pointee_type_id: 0xb39e3aab
+}
+pointer_reference {
+  id: 0x2678c091
+  kind: POINTER
+  pointee_type_id: 0xb3a3e4db
+}
+pointer_reference {
+  id: 0x26795a38
+  kind: POINTER
+  pointee_type_id: 0xb3a58e7e
+}
+pointer_reference {
+  id: 0x267a5962
+  kind: POINTER
+  pointee_type_id: 0xb3a98317
+}
+pointer_reference {
+  id: 0x268136e5
+  kind: POINTER
+  pointee_type_id: 0xb0443d0a
+}
+pointer_reference {
+  id: 0x26847863
+  kind: POINTER
+  pointee_type_id: 0xb0510713
+}
+pointer_reference {
+  id: 0x26927abb
+  kind: POINTER
+  pointee_type_id: 0xb0090c73
+}
+pointer_reference {
+  id: 0x269af4e9
+  kind: POINTER
+  pointee_type_id: 0xb02b353a
+}
+pointer_reference {
+  id: 0x269b42b4
+  kind: POINTER
+  pointee_type_id: 0xb02dec4e
+}
+pointer_reference {
+  id: 0x269c8e40
+  kind: POINTER
+  pointee_type_id: 0xb032df9d
+}
+pointer_reference {
+  id: 0x269dd0f7
+  kind: POINTER
+  pointee_type_id: 0xb037a540
+}
+pointer_reference {
+  id: 0x269e32d8
+  kind: POINTER
+  pointee_type_id: 0xb0382dfd
+}
+pointer_reference {
+  id: 0x269ec837
+  kind: POINTER
+  pointee_type_id: 0xb03bc640
+}
+pointer_reference {
+  id: 0x26a22eee
+  kind: POINTER
+  pointee_type_id: 0xb0c85d25
+}
+pointer_reference {
+  id: 0x26a490c7
+  kind: POINTER
+  pointee_type_id: 0xb0d2a582
+}
+pointer_reference {
+  id: 0x26a75523
+  kind: POINTER
+  pointee_type_id: 0xb0ddb211
+}
+pointer_reference {
+  id: 0x26a80a21
+  kind: POINTER
+  pointee_type_id: 0xb0e0ce1a
+}
+pointer_reference {
+  id: 0x26ad5dc1
+  kind: POINTER
+  pointee_type_id: 0xb0f5919b
+}
+pointer_reference {
+  id: 0x26b34615
+  kind: POINTER
+  pointee_type_id: 0xb08dfec9
+}
+pointer_reference {
+  id: 0x26b864aa
+  kind: POINTER
+  pointee_type_id: 0xb0a17437
+}
+pointer_reference {
+  id: 0x26bbdddb
+  kind: POINTER
+  pointee_type_id: 0xb0af91f1
+}
+pointer_reference {
+  id: 0x26be1aee
+  kind: POINTER
+  pointee_type_id: 0xb0b88d26
+}
+pointer_reference {
+  id: 0x26cfffd7
+  kind: POINTER
+  pointee_type_id: 0xb17f19c3
+}
+pointer_reference {
+  id: 0x26d05e01
+  kind: POINTER
+  pointee_type_id: 0xb1019e99
+}
+pointer_reference {
+  id: 0x26d8ba52
+  kind: POINTER
+  pointee_type_id: 0xb1220fd7
+}
+pointer_reference {
+  id: 0x26d9bda3
+  kind: POINTER
+  pointee_type_id: 0xb1261013
+}
+pointer_reference {
+  id: 0x26dfa568
+  kind: POINTER
+  pointee_type_id: 0xb13e733c
+}
+pointer_reference {
+  id: 0x26e55184
+  kind: POINTER
+  pointee_type_id: 0xb1d5a08f
+}
+pointer_reference {
+  id: 0x26ee682a
+  kind: POINTER
+  pointee_type_id: 0xb1f94634
+}
+pointer_reference {
+  id: 0x26f99b29
+  kind: POINTER
+  pointee_type_id: 0xb1a68a3b
+}
+pointer_reference {
+  id: 0x270252a3
+  kind: POINTER
+  pointee_type_id: 0xb649ac13
+}
+pointer_reference {
+  id: 0x2705b338
+  kind: POINTER
+  pointee_type_id: 0xb6562a7c
+}
+pointer_reference {
+  id: 0x2706dc09
+  kind: POINTER
+  pointee_type_id: 0xb65b96b8
+}
+pointer_reference {
+  id: 0x2707627c
+  kind: POINTER
+  pointee_type_id: 0xb65d6f6d
+}
+pointer_reference {
+  id: 0x270c2906
+  kind: POINTER
+  pointee_type_id: 0xb6704284
+}
+pointer_reference {
+  id: 0x2712b6f9
+  kind: POINTER
+  pointee_type_id: 0xb60a3d7a
+}
+pointer_reference {
+  id: 0x2731dd86
+  kind: POINTER
+  pointee_type_id: 0xb6879087
+}
+pointer_reference {
+  id: 0x2736319a
+  kind: POINTER
+  pointee_type_id: 0xb69820f6
+}
+pointer_reference {
+  id: 0x2738d6de
+  kind: POINTER
+  pointee_type_id: 0xb6a3bde6
+}
+pointer_reference {
+  id: 0x274194ac
+  kind: POINTER
+  pointee_type_id: 0xb746b42c
+}
+pointer_reference {
+  id: 0x27421971
+  kind: POINTER
+  pointee_type_id: 0xb7488359
+}
+pointer_reference {
+  id: 0x27459bea
+  kind: POINTER
+  pointee_type_id: 0xb7568934
+}
+pointer_reference {
+  id: 0x2746100c
+  kind: POINTER
+  pointee_type_id: 0xb758a6ae
+}
+pointer_reference {
+  id: 0x27461240
+  kind: POINTER
+  pointee_type_id: 0xb758af9d
+}
+pointer_reference {
+  id: 0x275ab027
+  kind: POINTER
+  pointee_type_id: 0xb72a2600
+}
+pointer_reference {
+  id: 0x276a1779
+  kind: POINTER
+  pointee_type_id: 0xb7e8bb7b
+}
+pointer_reference {
+  id: 0x276d3cfb
+  kind: POINTER
+  pointee_type_id: 0xb7f41573
+}
+pointer_reference {
+  id: 0x277e5e23
+  kind: POINTER
+  pointee_type_id: 0xb7b99e10
+}
+pointer_reference {
+  id: 0x2780ad74
+  kind: POINTER
+  pointee_type_id: 0xb442534e
+}
+pointer_reference {
+  id: 0x27847a9a
+  kind: POINTER
+  pointee_type_id: 0xb4510cf7
+}
+pointer_reference {
+  id: 0x2786bbc8
+  kind: POINTER
+  pointee_type_id: 0xb45a09be
+}
+pointer_reference {
+  id: 0x27a9d46c
+  kind: POINTER
+  pointee_type_id: 0xb4e7b72e
+}
+pointer_reference {
+  id: 0x27ad0443
+  kind: POINTER
+  pointee_type_id: 0xb4f4f790
+}
+pointer_reference {
+  id: 0x27b5ed37
+  kind: POINTER
+  pointee_type_id: 0xb4975242
+}
+pointer_reference {
+  id: 0x27b71910
+  kind: POINTER
+  pointee_type_id: 0xb49c82de
+}
+pointer_reference {
+  id: 0x27b8a069
+  kind: POINTER
+  pointee_type_id: 0xb4a26738
+}
+pointer_reference {
+  id: 0x27cf73eb
+  kind: POINTER
+  pointee_type_id: 0xb57d2931
+}
+pointer_reference {
+  id: 0x27d0317f
+  kind: POINTER
+  pointee_type_id: 0xb5002363
+}
+pointer_reference {
+  id: 0x27d16870
+  kind: POINTER
+  pointee_type_id: 0xb505475d
+}
+pointer_reference {
+  id: 0x27d4bd81
+  kind: POINTER
+  pointee_type_id: 0xb512109a
+}
+pointer_reference {
+  id: 0x27dafe16
+  kind: POINTER
+  pointee_type_id: 0xb52b1ec7
+}
+pointer_reference {
+  id: 0x27f7746a
+  kind: POINTER
+  pointee_type_id: 0xb59d3734
+}
+pointer_reference {
+  id: 0x2809dbcb
+  kind: POINTER
+  pointee_type_id: 0x8a6789b1
+}
+pointer_reference {
+  id: 0x28136e4b
+  kind: POINTER
+  pointee_type_id: 0x8a0d5fb1
+}
+pointer_reference {
+  id: 0x281af600
+  kind: POINTER
+  pointee_type_id: 0x8a2b3e9d
+}
+pointer_reference {
+  id: 0x2821daec
+  kind: POINTER
+  pointee_type_id: 0x8ac78d2d
+}
+pointer_reference {
+  id: 0x28224175
+  kind: POINTER
+  pointee_type_id: 0x8ac9e348
+}
+pointer_reference {
+  id: 0x282bc8d6
+  kind: POINTER
+  pointee_type_id: 0x8aefc5c6
+}
+pointer_reference {
+  id: 0x282d39ce
+  kind: POINTER
+  pointee_type_id: 0x8af401a4
+}
+pointer_reference {
+  id: 0x2836877a
+  kind: POINTER
+  pointee_type_id: 0x8a9afb74
+}
+pointer_reference {
+  id: 0x283d9b05
+  kind: POINTER
+  pointee_type_id: 0x8ab68a8a
+}
+pointer_reference {
+  id: 0x2849a9bf
+  kind: POINTER
+  pointee_type_id: 0x8b664062
+}
+pointer_reference {
+  id: 0x284dc6d3
+  kind: POINTER
+  pointee_type_id: 0x8b77fdd1
+}
+pointer_reference {
+  id: 0x2859d899
+  kind: POINTER
+  pointee_type_id: 0x8b2784f9
+}
+pointer_reference {
+  id: 0x285f28a0
+  kind: POINTER
+  pointee_type_id: 0x8b3c441e
+}
+pointer_reference {
+  id: 0x2862f859
+  kind: POINTER
+  pointee_type_id: 0x8bcb07f8
+}
+pointer_reference {
+  id: 0x286575ec
+  kind: POINTER
+  pointee_type_id: 0x8bd5312d
+}
+pointer_reference {
+  id: 0x287406a7
+  kind: POINTER
+  pointee_type_id: 0x8b90fc01
+}
+pointer_reference {
+  id: 0x287dadb4
+  kind: POINTER
+  pointee_type_id: 0x8bb6504d
+}
+pointer_reference {
+  id: 0x2895c04c
+  kind: POINTER
+  pointee_type_id: 0x8817e7ae
+}
+pointer_reference {
+  id: 0x28a1c669
+  kind: POINTER
+  pointee_type_id: 0x88c7ff3b
+}
+pointer_reference {
+  id: 0x28ac1164
+  kind: POINTER
+  pointee_type_id: 0x88f0a30c
+}
+pointer_reference {
+  id: 0x28b7a3b7
+  kind: POINTER
+  pointee_type_id: 0x889e6843
+}
+pointer_reference {
+  id: 0x28bad41a
+  kind: POINTER
+  pointee_type_id: 0x88abb6f7
+}
+pointer_reference {
+  id: 0x28bd8ba6
+  kind: POINTER
+  pointee_type_id: 0x88b6c805
+}
+pointer_reference {
+  id: 0x28ced72f
+  kind: POINTER
+  pointee_type_id: 0x897bba23
+}
+pointer_reference {
+  id: 0x28d14c07
+  kind: POINTER
+  pointee_type_id: 0x8905d682
+}
+pointer_reference {
+  id: 0x28dbcbe3
+  kind: POINTER
+  pointee_type_id: 0x892fc913
+}
+pointer_reference {
+  id: 0x28ddd932
+  kind: POINTER
+  pointee_type_id: 0x89378254
+}
+pointer_reference {
+  id: 0x28e1a5ae
+  kind: POINTER
+  pointee_type_id: 0x89c67026
+}
+pointer_reference {
+  id: 0x28e1b8de
+  kind: POINTER
+  pointee_type_id: 0x89c605e5
+}
+pointer_reference {
+  id: 0x28eb23d4
+  kind: POINTER
+  pointee_type_id: 0x89ec69cf
+}
+pointer_reference {
+  id: 0x28eba3b0
+  kind: POINTER
+  pointee_type_id: 0x89ee685d
+}
+pointer_reference {
+  id: 0x28f21f89
+  kind: POINTER
+  pointee_type_id: 0x898898b9
+}
+pointer_reference {
+  id: 0x28f2cf66
+  kind: POINTER
+  pointee_type_id: 0x898bdb04
+}
+pointer_reference {
+  id: 0x28f4ee78
+  kind: POINTER
+  pointee_type_id: 0x89935f7e
+}
+pointer_reference {
+  id: 0x28f8e782
+  kind: POINTER
+  pointee_type_id: 0x89a37894
+}
+pointer_reference {
+  id: 0x28fbecf4
+  kind: POINTER
+  pointee_type_id: 0x89af554e
+}
+pointer_reference {
+  id: 0x28fd91b1
+  kind: POINTER
+  pointee_type_id: 0x89b6a05a
+}
+pointer_reference {
+  id: 0x28fe5710
+  kind: POINTER
+  pointee_type_id: 0x89b9badd
+}
+pointer_reference {
+  id: 0x2900e118
+  kind: POINTER
+  pointee_type_id: 0x8e4362ff
+}
+pointer_reference {
+  id: 0x29020aff
+  kind: POINTER
+  pointee_type_id: 0x8e48cd62
+}
+pointer_reference {
+  id: 0x290604c6
+  kind: POINTER
+  pointee_type_id: 0x8e58f584
+}
+pointer_reference {
+  id: 0x29063754
+  kind: POINTER
+  pointee_type_id: 0x8e583bcd
+}
+pointer_reference {
+  id: 0x29082583
+  kind: POINTER
+  pointee_type_id: 0x8e607093
+}
+pointer_reference {
+  id: 0x2909aa5b
+  kind: POINTER
+  pointee_type_id: 0x8e664ff3
+}
+pointer_reference {
+  id: 0x29147595
+  kind: POINTER
+  pointee_type_id: 0x8e1130cb
+}
+pointer_reference {
+  id: 0x2914a36c
+  kind: POINTER
+  pointee_type_id: 0x8e126b2d
+}
+pointer_reference {
+  id: 0x2918bc1b
+  kind: POINTER
+  pointee_type_id: 0x8e2216f3
+}
+pointer_reference {
+  id: 0x291e8a5b
+  kind: POINTER
+  pointee_type_id: 0x8e3acff3
+}
+pointer_reference {
+  id: 0x2922a3d0
+  kind: POINTER
+  pointee_type_id: 0x8eca69de
+}
+pointer_reference {
+  id: 0x292ab2e2
+  kind: POINTER
+  pointee_type_id: 0x8eea2d16
+}
+pointer_reference {
+  id: 0x292cb268
+  kind: POINTER
+  pointee_type_id: 0x8ef22f3d
+}
+pointer_reference {
+  id: 0x292e42d8
+  kind: POINTER
+  pointee_type_id: 0x8ef9edfd
+}
+pointer_reference {
+  id: 0x2936263d
+  kind: POINTER
+  pointee_type_id: 0x8e987e6b
+}
+pointer_reference {
+  id: 0x293d5439
+  kind: POINTER
+  pointee_type_id: 0x8eb5b67a
+}
+pointer_reference {
+  id: 0x293f2663
+  kind: POINTER
+  pointee_type_id: 0x8ebc7f13
+}
+pointer_reference {
+  id: 0x2941252f
+  kind: POINTER
+  pointee_type_id: 0x8f447221
+}
+pointer_reference {
+  id: 0x29459f81
+  kind: POINTER
+  pointee_type_id: 0x8f56989a
+}
+pointer_reference {
+  id: 0x2953a412
+  kind: POINTER
+  pointee_type_id: 0x8f0e76d7
+}
+pointer_reference {
+  id: 0x29563010
+  kind: POINTER
+  pointee_type_id: 0x8f1826df
+}
+pointer_reference {
+  id: 0x2966bf52
+  kind: POINTER
+  pointee_type_id: 0x8fda1bd5
+}
+pointer_reference {
+  id: 0x2974a3dd
+  kind: POINTER
+  pointee_type_id: 0x8f9269e8
+}
+pointer_reference {
+  id: 0x2974d0f5
+  kind: POINTER
+  pointee_type_id: 0x8f93a54b
+}
+pointer_reference {
+  id: 0x297c9572
+  kind: POINTER
+  pointee_type_id: 0x8fb2b355
+}
+pointer_reference {
+  id: 0x29916716
+  kind: POINTER
+  pointee_type_id: 0x8c057ac5
+}
+pointer_reference {
+  id: 0x299bc178
+  kind: POINTER
+  pointee_type_id: 0x8c2fe37e
+}
+pointer_reference {
+  id: 0x299e6303
+  kind: POINTER
+  pointee_type_id: 0x8c396a91
+}
+pointer_reference {
+  id: 0x299e7b2a
+  kind: POINTER
+  pointee_type_id: 0x8c390a37
+}
+pointer_reference {
+  id: 0x29a77f06
+  kind: POINTER
+  pointee_type_id: 0x8cdd1a87
+}
+pointer_reference {
+  id: 0x29a8570f
+  kind: POINTER
+  pointee_type_id: 0x8ce1baa0
+}
+pointer_reference {
+  id: 0x29ab3bdd
+  kind: POINTER
+  pointee_type_id: 0x8cec09e9
+}
+pointer_reference {
+  id: 0x29b1eb4b
+  kind: POINTER
+  pointee_type_id: 0x8c874bb3
+}
+pointer_reference {
+  id: 0x29b21979
+  kind: POINTER
+  pointee_type_id: 0x8c888378
+}
+pointer_reference {
+  id: 0x29b2544e
+  kind: POINTER
+  pointee_type_id: 0x8c89b7a5
+}
+pointer_reference {
+  id: 0x29bb2b33
+  kind: POINTER
+  pointee_type_id: 0x8cac4a52
+}
+pointer_reference {
+  id: 0x29bbceec
+  kind: POINTER
+  pointee_type_id: 0x8cafdd2d
+}
+pointer_reference {
+  id: 0x29c4a9fa
+  kind: POINTER
+  pointee_type_id: 0x8d524175
+}
+pointer_reference {
+  id: 0x29c600bb
+  kind: POINTER
+  pointee_type_id: 0x8d58e470
+}
+pointer_reference {
+  id: 0x29ccb7ed
+  kind: POINTER
+  pointee_type_id: 0x8d723929
+}
+pointer_reference {
+  id: 0x29d29128
+  kind: POINTER
+  pointee_type_id: 0x8d0aa23e
+}
+pointer_reference {
+  id: 0x29ddeb4c
+  kind: POINTER
+  pointee_type_id: 0x8d374bac
+}
+pointer_reference {
+  id: 0x29de0844
+  kind: POINTER
+  pointee_type_id: 0x8d38c78e
+}
+pointer_reference {
+  id: 0x29e9cbd8
+  kind: POINTER
+  pointee_type_id: 0x8de7c9fe
+}
+pointer_reference {
+  id: 0x29f9c70b
+  kind: POINTER
+  pointee_type_id: 0x8da7fab2
+}
+pointer_reference {
+  id: 0x2a0586b2
+  kind: POINTER
+  pointee_type_id: 0x8256fc56
+}
+pointer_reference {
+  id: 0x2a0a605f
+  kind: POINTER
+  pointee_type_id: 0x826967e0
+}
+pointer_reference {
+  id: 0x2a1900ce
+  kind: POINTER
+  pointee_type_id: 0x8224e5a5
+}
+pointer_reference {
+  id: 0x2a1c3bdd
+  kind: POINTER
+  pointee_type_id: 0x823009ea
+}
+pointer_reference {
+  id: 0x2a1fae67
+  kind: POINTER
+  pointee_type_id: 0x823e5f02
+}
+pointer_reference {
+  id: 0x2a285513
+  kind: POINTER
+  pointee_type_id: 0x82e1b2d2
+}
+pointer_reference {
+  id: 0x2a2f302f
+  kind: POINTER
+  pointee_type_id: 0x82fc2620
+}
+pointer_reference {
+  id: 0x2a316b68
+  kind: POINTER
+  pointee_type_id: 0x82854b3f
+}
+pointer_reference {
+  id: 0x2a40fc09
+  kind: POINTER
+  pointee_type_id: 0x834316b8
+}
+pointer_reference {
+  id: 0x2a468f3d
+  kind: POINTER
+  pointee_type_id: 0x835ada6a
+}
+pointer_reference {
+  id: 0x2a47192f
+  kind: POINTER
+  pointee_type_id: 0x835c8221
+}
+pointer_reference {
+  id: 0x2a47aff0
+  kind: POINTER
+  pointee_type_id: 0x835e595c
+}
+pointer_reference {
+  id: 0x2a48f3d0
+  kind: POINTER
+  pointee_type_id: 0x836329dc
+}
+pointer_reference {
+  id: 0x2a4c6b85
+  kind: POINTER
+  pointee_type_id: 0x83714889
+}
+pointer_reference {
+  id: 0x2a52de6b
+  kind: POINTER
+  pointee_type_id: 0x830b9f30
+}
+pointer_reference {
+  id: 0x2a573d9c
+  kind: POINTER
+  pointee_type_id: 0x831c10ec
+}
+pointer_reference {
+  id: 0x2a5a21f9
+  kind: POINTER
+  pointee_type_id: 0x83286178
+}
+pointer_reference {
+  id: 0x2a5ed1c1
+  kind: POINTER
+  pointee_type_id: 0x833ba199
+}
+pointer_reference {
+  id: 0x2a64866d
+  kind: POINTER
+  pointee_type_id: 0x83d2ff29
+}
+pointer_reference {
+  id: 0x2a653aa6
+  kind: POINTER
+  pointee_type_id: 0x83d40c06
+}
+pointer_reference {
+  id: 0x2a670b41
+  kind: POINTER
+  pointee_type_id: 0x83dccb99
+}
+pointer_reference {
+  id: 0x2a79f2e5
+  kind: POINTER
+  pointee_type_id: 0x83a72d08
+}
+pointer_reference {
+  id: 0x2a9beac2
+  kind: POINTER
+  pointee_type_id: 0x802f4d96
+}
+pointer_reference {
+  id: 0x2aa0b9bb
+  kind: POINTER
+  pointee_type_id: 0x80c20070
+}
+pointer_reference {
+  id: 0x2abdbda9
+  kind: POINTER
+  pointee_type_id: 0x80b6103a
+}
+pointer_reference {
+  id: 0x2abfc5ab
+  kind: POINTER
+  pointee_type_id: 0x80bff031
+}
+pointer_reference {
+  id: 0x2ac2dd67
+  kind: POINTER
+  pointee_type_id: 0x814b9302
+}
+pointer_reference {
+  id: 0x2ac65c83
+  kind: POINTER
+  pointee_type_id: 0x81599490
+}
+pointer_reference {
+  id: 0x2ac89539
+  kind: POINTER
+  pointee_type_id: 0x8162b279
+}
+pointer_reference {
+  id: 0x2ad2338c
+  kind: POINTER
+  pointee_type_id: 0x810828ae
+}
+pointer_reference {
+  id: 0x2adb24e6
+  kind: POINTER
+  pointee_type_id: 0x812c7505
+}
+pointer_reference {
+  id: 0x2af61910
+  kind: POINTER
+  pointee_type_id: 0x819882dc
+}
+pointer_reference {
+  id: 0x2afd4765
+  kind: POINTER
+  pointee_type_id: 0x81b5fb0b
+}
+pointer_reference {
+  id: 0x2afee447
+  kind: POINTER
+  pointee_type_id: 0x81bb7781
+}
+pointer_reference {
+  id: 0x2b0e3ff1
+  kind: POINTER
+  pointee_type_id: 0x86781959
+}
+pointer_reference {
+  id: 0x2b119ef2
+  kind: POINTER
+  pointee_type_id: 0x86069d56
+}
+pointer_reference {
+  id: 0x2b153704
+  kind: POINTER
+  pointee_type_id: 0x86143a8c
+}
+pointer_reference {
+  id: 0x2b16c036
+  kind: POINTER
+  pointee_type_id: 0x861be646
+}
+pointer_reference {
+  id: 0x2b1e820c
+  kind: POINTER
+  pointee_type_id: 0x863aeeaf
+}
+pointer_reference {
+  id: 0x2b1ef221
+  kind: POINTER
+  pointee_type_id: 0x863b2e1a
+}
+pointer_reference {
+  id: 0x2b20aa80
+  kind: POINTER
+  pointee_type_id: 0x86c24c9e
+}
+pointer_reference {
+  id: 0x2b21a696
+  kind: POINTER
+  pointee_type_id: 0x86c67cc5
+}
+pointer_reference {
+  id: 0x2b2329dc
+  kind: POINTER
+  pointee_type_id: 0x86cc41ed
+}
+pointer_reference {
+  id: 0x2b347456
+  kind: POINTER
+  pointee_type_id: 0x869137c4
+}
+pointer_reference {
+  id: 0x2b3810bf
+  kind: POINTER
+  pointee_type_id: 0x86a0a463
+}
+pointer_reference {
+  id: 0x2b3a75d9
+  kind: POINTER
+  pointee_type_id: 0x86a931f9
+}
+pointer_reference {
+  id: 0x2b3a7da8
+  kind: POINTER
+  pointee_type_id: 0x86a9103f
+}
+pointer_reference {
+  id: 0x2b584612
+  kind: POINTER
+  pointee_type_id: 0x8721fed4
+}
+pointer_reference {
+  id: 0x2b5d1190
+  kind: POINTER
+  pointee_type_id: 0x8734a0df
+}
+pointer_reference {
+  id: 0x2b603afb
+  kind: POINTER
+  pointee_type_id: 0x87c00d71
+}
+pointer_reference {
+  id: 0x2b7121a1
+  kind: POINTER
+  pointee_type_id: 0x8784601b
+}
+pointer_reference {
+  id: 0x2b754442
+  kind: POINTER
+  pointee_type_id: 0x8795f794
+}
+pointer_reference {
+  id: 0x2b79f509
+  kind: POINTER
+  pointee_type_id: 0x87a732ba
+}
+pointer_reference {
+  id: 0x2b7be833
+  kind: POINTER
+  pointee_type_id: 0x87af4650
+}
+pointer_reference {
+  id: 0x2b7ccd9e
+  kind: POINTER
+  pointee_type_id: 0x87b3d0e4
+}
+pointer_reference {
+  id: 0x2b820c5e
+  kind: POINTER
+  pointee_type_id: 0x8448d7e4
+}
+pointer_reference {
+  id: 0x2b8a97e8
+  kind: POINTER
+  pointee_type_id: 0x846ab93f
+}
+pointer_reference {
+  id: 0x2b8cd86f
+  kind: POINTER
+  pointee_type_id: 0x84738720
+}
+pointer_reference {
+  id: 0x2b8f13b3
+  kind: POINTER
+  pointee_type_id: 0x847ca850
+}
+pointer_reference {
+  id: 0x2b8fbb20
+  kind: POINTER
+  pointee_type_id: 0x847e0a1c
+}
+pointer_reference {
+  id: 0x2b91dce8
+  kind: POINTER
+  pointee_type_id: 0x8407953d
+}
+pointer_reference {
+  id: 0x2b99fd3e
+  kind: POINTER
+  pointee_type_id: 0x84271264
+}
+pointer_reference {
+  id: 0x2b9b3aed
+  kind: POINTER
+  pointee_type_id: 0x842c0d29
+}
+pointer_reference {
+  id: 0x2b9c9439
+  kind: POINTER
+  pointee_type_id: 0x8432b67b
+}
+pointer_reference {
+  id: 0x2b9d590c
+  kind: POINTER
+  pointee_type_id: 0x843582ad
+}
+pointer_reference {
+  id: 0x2b9ed6ff
+  kind: POINTER
+  pointee_type_id: 0x843bbd62
+}
+pointer_reference {
+  id: 0x2ba06eea
+  kind: POINTER
+  pointee_type_id: 0x84c15d35
+}
+pointer_reference {
+  id: 0x2ba5754c
+  kind: POINTER
+  pointee_type_id: 0x84d533ac
+}
+pointer_reference {
+  id: 0x2babdcfa
+  kind: POINTER
+  pointee_type_id: 0x84ef9574
+}
+pointer_reference {
+  id: 0x2bb01e4c
+  kind: POINTER
+  pointee_type_id: 0x84809fac
+}
+pointer_reference {
+  id: 0x2bb39ba6
+  kind: POINTER
+  pointee_type_id: 0x848e8806
+}
+pointer_reference {
+  id: 0x2bb46c25
+  kind: POINTER
+  pointee_type_id: 0x84915608
+}
+pointer_reference {
+  id: 0x2bb8cefc
+  kind: POINTER
+  pointee_type_id: 0x84a3dd6c
+}
+pointer_reference {
+  id: 0x2bbf9982
+  kind: POINTER
+  pointee_type_id: 0x84be8096
+}
+pointer_reference {
+  id: 0x2bc93f35
+  kind: POINTER
+  pointee_type_id: 0x85641a49
+}
+pointer_reference {
+  id: 0x2bcf25d1
+  kind: POINTER
+  pointee_type_id: 0x857c71d8
+}
+pointer_reference {
+  id: 0x2bdd20a6
+  kind: POINTER
+  pointee_type_id: 0x85346405
+}
+pointer_reference {
+  id: 0x2be0e2d8
+  kind: POINTER
+  pointee_type_id: 0x85c36dfe
+}
+pointer_reference {
+  id: 0x2be568af
+  kind: POINTER
+  pointee_type_id: 0x85d54423
+}
+pointer_reference {
+  id: 0x2bf214c5
+  kind: POINTER
+  pointee_type_id: 0x8588b58b
+}
+pointer_reference {
+  id: 0x2bf3f6bc
+  kind: POINTER
+  pointee_type_id: 0x858f3c6d
+}
+pointer_reference {
+  id: 0x2bfa82e1
+  kind: POINTER
+  pointee_type_id: 0x85aaed18
+}
+pointer_reference {
+  id: 0x2bfae072
+  kind: POINTER
+  pointee_type_id: 0x85ab6757
+}
+pointer_reference {
+  id: 0x2bfcac2d
+  kind: POINTER
+  pointee_type_id: 0x85b25628
+}
+pointer_reference {
+  id: 0x2c008b47
+  kind: POINTER
+  pointee_type_id: 0x9a42cb81
+}
+pointer_reference {
+  id: 0x2c0095a2
+  kind: POINTER
+  pointee_type_id: 0x9a42b014
+}
+pointer_reference {
+  id: 0x2c00ba53
+  kind: POINTER
+  pointee_type_id: 0x9a420fd3
+}
+pointer_reference {
+  id: 0x2c00de85
+  kind: POINTER
+  pointee_type_id: 0x9a439c8b
+}
+pointer_reference {
+  id: 0x2c00ffd6
+  kind: POINTER
+  pointee_type_id: 0x9a4319c6
+}
+pointer_reference {
+  id: 0x2c017765
+  kind: POINTER
+  pointee_type_id: 0x9a453b0a
+}
+pointer_reference {
+  id: 0x2c01cf9c
+  kind: POINTER
+  pointee_type_id: 0x9a47d8ec
+}
+pointer_reference {
+  id: 0x2c0486d3
+  kind: POINTER
+  pointee_type_id: 0x9a52fdd2
+}
+pointer_reference {
+  id: 0x2c073044
+  kind: POINTER
+  pointee_type_id: 0x9a5c278c
+}
+pointer_reference {
+  id: 0x2c07bcbe
+  kind: POINTER
+  pointee_type_id: 0x9a5e1466
+}
+pointer_reference {
+  id: 0x2c07daab
+  kind: POINTER
+  pointee_type_id: 0x9a5f8c33
+}
+pointer_reference {
+  id: 0x2c0a55f9
+  kind: POINTER
+  pointee_type_id: 0x9a69b179
+}
+pointer_reference {
+  id: 0x2c0aa9ee
+  kind: POINTER
+  pointee_type_id: 0x9a6a4125
+}
+pointer_reference {
+  id: 0x2c0bb831
+  kind: POINTER
+  pointee_type_id: 0x9a6e0659
+}
+pointer_reference {
+  id: 0x2c0c3210
+  kind: POINTER
+  pointee_type_id: 0x9a702edf
+}
+pointer_reference {
+  id: 0x2c0c6644
+  kind: POINTER
+  pointee_type_id: 0x9a717f8d
+}
+pointer_reference {
+  id: 0x2c0d2028
+  kind: POINTER
+  pointee_type_id: 0x9a74663c
+}
+pointer_reference {
+  id: 0x2c0e5ceb
+  kind: POINTER
+  pointee_type_id: 0x9a799531
+}
+pointer_reference {
+  id: 0x2c0e9768
+  kind: POINTER
+  pointee_type_id: 0x9a7abb3d
+}
+pointer_reference {
+  id: 0x2c10e084
+  kind: POINTER
+  pointee_type_id: 0x9a03648c
+}
+pointer_reference {
+  id: 0x2c11e613
+  kind: POINTER
+  pointee_type_id: 0x9a077ed2
+}
+pointer_reference {
+  id: 0x2c14ed8e
+  kind: POINTER
+  pointee_type_id: 0x9a1350a4
+}
+pointer_reference {
+  id: 0x2c16a860
+  kind: POINTER
+  pointee_type_id: 0x9a1a471c
+}
+pointer_reference {
+  id: 0x2c16e301
+  kind: POINTER
+  pointee_type_id: 0x9a1b6a9a
+}
+pointer_reference {
+  id: 0x2c1738cf
+  kind: POINTER
+  pointee_type_id: 0x9a1c05a3
+}
+pointer_reference {
+  id: 0x2c182175
+  kind: POINTER
+  pointee_type_id: 0x9a20634b
+}
+pointer_reference {
+  id: 0x2c18712b
+  kind: POINTER
+  pointee_type_id: 0x9a212231
+}
+pointer_reference {
+  id: 0x2c18d6ee
+  kind: POINTER
+  pointee_type_id: 0x9a23bd25
+}
+pointer_reference {
+  id: 0x2c197132
+  kind: POINTER
+  pointee_type_id: 0x9a252255
+}
+pointer_reference {
+  id: 0x2c1a4564
+  kind: POINTER
+  pointee_type_id: 0x9a29f30e
+}
+pointer_reference {
+  id: 0x2c1bc9fd
+  kind: POINTER
+  pointee_type_id: 0x9a2fc16a
+}
+pointer_reference {
+  id: 0x2c1d5295
+  kind: POINTER
+  pointee_type_id: 0x9a35acc8
+}
+pointer_reference {
+  id: 0x2c1d55b6
+  kind: POINTER
+  pointee_type_id: 0x9a35b045
+}
+pointer_reference {
+  id: 0x2c1e05fb
+  kind: POINTER
+  pointee_type_id: 0x9a38f171
+}
+pointer_reference {
+  id: 0x2c1e7e89
+  kind: POINTER
+  pointee_type_id: 0x9a391cba
+}
+pointer_reference {
+  id: 0x2c207521
+  kind: POINTER
+  pointee_type_id: 0x9ac13218
+}
+pointer_reference {
+  id: 0x2c210d23
+  kind: POINTER
+  pointee_type_id: 0x9ac4d210
+}
+pointer_reference {
+  id: 0x2c2228e1
+  kind: POINTER
+  pointee_type_id: 0x9ac8451b
+}
+pointer_reference {
+  id: 0x2c223dc4
+  kind: POINTER
+  pointee_type_id: 0x9ac8118c
+}
+pointer_reference {
+  id: 0x2c230e2b
+  kind: POINTER
+  pointee_type_id: 0x9accde33
+}
+pointer_reference {
+  id: 0x2c24415e
+  kind: POINTER
+  pointee_type_id: 0x9ad1e3e7
+}
+pointer_reference {
+  id: 0x2c24424a
+  kind: POINTER
+  pointee_type_id: 0x9ad1efb4
+}
+pointer_reference {
+  id: 0x2c259220
+  kind: POINTER
+  pointee_type_id: 0x9ad6ae1c
+}
+pointer_reference {
+  id: 0x2c277f2e
+  kind: POINTER
+  pointee_type_id: 0x9add1a24
+}
+pointer_reference {
+  id: 0x2c27cb1a
+  kind: POINTER
+  pointee_type_id: 0x9adfcaf5
+}
+pointer_reference {
+  id: 0x2c297347
+  kind: POINTER
+  pointee_type_id: 0x9ae52b81
+}
+pointer_reference {
+  id: 0x2c2aca57
+  kind: POINTER
+  pointee_type_id: 0x9aebcfc2
+}
+pointer_reference {
+  id: 0x2c2bf57a
+  kind: POINTER
+  pointee_type_id: 0x9aef3374
+}
+pointer_reference {
+  id: 0x2c2c19eb
+  kind: POINTER
+  pointee_type_id: 0x9af08132
+}
+pointer_reference {
+  id: 0x2c2c3c2e
+  kind: POINTER
+  pointee_type_id: 0x9af01625
+}
+pointer_reference {
+  id: 0x2c2ce191
+  kind: POINTER
+  pointee_type_id: 0x9af360d8
+}
+pointer_reference {
+  id: 0x2c2f07d2
+  kind: POINTER
+  pointee_type_id: 0x9afcf9d4
+}
+pointer_reference {
+  id: 0x2c2f5a48
+  kind: POINTER
+  pointee_type_id: 0x9afd8fbd
+}
+pointer_reference {
+  id: 0x2c302bdf
+  kind: POINTER
+  pointee_type_id: 0x9a8049e0
+}
+pointer_reference {
+  id: 0x2c312b62
+  kind: POINTER
+  pointee_type_id: 0x9a844b16
+}
+pointer_reference {
+  id: 0x2c316317
+  kind: POINTER
+  pointee_type_id: 0x9a856ac3
+}
+pointer_reference {
+  id: 0x2c31fe8f
+  kind: POINTER
+  pointee_type_id: 0x9a871ca2
+}
+pointer_reference {
+  id: 0x2c32dd96
+  kind: POINTER
+  pointee_type_id: 0x9a8b90c4
+}
+pointer_reference {
+  id: 0x2c34814b
+  kind: POINTER
+  pointee_type_id: 0x9a92e3b1
+}
+pointer_reference {
+  id: 0x2c377e3c
+  kind: POINTER
+  pointee_type_id: 0x9a9d1e6d
+}
+pointer_reference {
+  id: 0x2c388dae
+  kind: POINTER
+  pointee_type_id: 0x9aa2d024
+}
+pointer_reference {
+  id: 0x2c389b05
+  kind: POINTER
+  pointee_type_id: 0x9aa28a8b
+}
+pointer_reference {
+  id: 0x2c38d7ab
+  kind: POINTER
+  pointee_type_id: 0x9aa3b833
+}
+pointer_reference {
+  id: 0x2c397e45
+  kind: POINTER
+  pointee_type_id: 0x9aa51f8b
+}
+pointer_reference {
+  id: 0x2c39999b
+  kind: POINTER
+  pointee_type_id: 0x9aa680f1
+}
+pointer_reference {
+  id: 0x2c39cb61
+  kind: POINTER
+  pointee_type_id: 0x9aa7cb1a
+}
+pointer_reference {
+  id: 0x2c3a0a0f
+  kind: POINTER
+  pointee_type_id: 0x9aa8cea2
+}
+pointer_reference {
+  id: 0x2c3a11c9
+  kind: POINTER
+  pointee_type_id: 0x9aa8a1ba
+}
+pointer_reference {
+  id: 0x2c3a4f8a
+  kind: POINTER
+  pointee_type_id: 0x9aa9d8b7
+}
+pointer_reference {
+  id: 0x2c3b1526
+  kind: POINTER
+  pointee_type_id: 0x9aacb204
+}
+pointer_reference {
+  id: 0x2c3b9241
+  kind: POINTER
+  pointee_type_id: 0x9aaeaf98
+}
+pointer_reference {
+  id: 0x2c3be0fd
+  kind: POINTER
+  pointee_type_id: 0x9aaf656a
+}
+pointer_reference {
+  id: 0x2c3beb57
+  kind: POINTER
+  pointee_type_id: 0x9aaf4bc3
+}
+pointer_reference {
+  id: 0x2c3ce96e
+  kind: POINTER
+  pointee_type_id: 0x9ab34327
+}
+pointer_reference {
+  id: 0x2c3d379d
+  kind: POINTER
+  pointee_type_id: 0x9ab438eb
+}
+pointer_reference {
+  id: 0x2c3d3de2
+  kind: POINTER
+  pointee_type_id: 0x9ab41117
+}
+pointer_reference {
+  id: 0x2c3d808a
+  kind: POINTER
+  pointee_type_id: 0x9ab6e4b7
+}
+pointer_reference {
+  id: 0x2c3d92f0
+  kind: POINTER
+  pointee_type_id: 0x9ab6ad5e
+}
+pointer_reference {
+  id: 0x2c3e358c
+  kind: POINTER
+  pointee_type_id: 0x9ab830ae
+}
+pointer_reference {
+  id: 0x2c3e50b1
+  kind: POINTER
+  pointee_type_id: 0x9ab9a458
+}
+pointer_reference {
+  id: 0x2c3f2dba
+  kind: POINTER
+  pointee_type_id: 0x9abc5077
+}
+pointer_reference {
+  id: 0x2c3fa2e5
+  kind: POINTER
+  pointee_type_id: 0x9abe6d0a
+}
+pointer_reference {
+  id: 0x2c3fed4f
+  kind: POINTER
+  pointee_type_id: 0x9abf53a3
+}
+pointer_reference {
+  id: 0x2c4043e6
+  kind: POINTER
+  pointee_type_id: 0x9b41e906
+}
+pointer_reference {
+  id: 0x2c4055cf
+  kind: POINTER
+  pointee_type_id: 0x9b41b1a1
+}
+pointer_reference {
+  id: 0x2c40c92f
+  kind: POINTER
+  pointee_type_id: 0x9b43c222
+}
+pointer_reference {
+  id: 0x2c40d6f8
+  kind: POINTER
+  pointee_type_id: 0x9b43bd7f
+}
+pointer_reference {
+  id: 0x2c414371
+  kind: POINTER
+  pointee_type_id: 0x9b45eb5a
+}
+pointer_reference {
+  id: 0x2c414688
+  kind: POINTER
+  pointee_type_id: 0x9b45fcbe
+}
+pointer_reference {
+  id: 0x2c418822
+  kind: POINTER
+  pointee_type_id: 0x9b46c616
+}
+pointer_reference {
+  id: 0x2c41da11
+  kind: POINTER
+  pointee_type_id: 0x9b478eda
+}
+pointer_reference {
+  id: 0x2c41e916
+  kind: POINTER
+  pointee_type_id: 0x9b4742c5
+}
+pointer_reference {
+  id: 0x2c4285f7
+  kind: POINTER
+  pointee_type_id: 0x9b4af141
+}
+pointer_reference {
+  id: 0x2c42cb6e
+  kind: POINTER
+  pointee_type_id: 0x9b4bcb26
+}
+pointer_reference {
+  id: 0x2c42cc74
+  kind: POINTER
+  pointee_type_id: 0x9b4bd74c
+}
+pointer_reference {
+  id: 0x2c436299
+  kind: POINTER
+  pointee_type_id: 0x9b4d6cf8
+}
+pointer_reference {
+  id: 0x2c43d08a
+  kind: POINTER
+  pointee_type_id: 0x9b4fa4b7
+}
+pointer_reference {
+  id: 0x2c44b6b7
+  kind: POINTER
+  pointee_type_id: 0x9b523c43
+}
+pointer_reference {
+  id: 0x2c44e44d
+  kind: POINTER
+  pointee_type_id: 0x9b5377a8
+}
+pointer_reference {
+  id: 0x2c450120
+  kind: POINTER
+  pointee_type_id: 0x9b54e21c
+}
+pointer_reference {
+  id: 0x2c450344
+  kind: POINTER
+  pointee_type_id: 0x9b54eb8f
+}
+pointer_reference {
+  id: 0x2c451522
+  kind: POINTER
+  pointee_type_id: 0x9b54b215
+}
+pointer_reference {
+  id: 0x2c455be3
+  kind: POINTER
+  pointee_type_id: 0x9b558913
+}
+pointer_reference {
+  id: 0x2c456e3b
+  kind: POINTER
+  pointee_type_id: 0x9b555e72
+}
+pointer_reference {
+  id: 0x2c45eb05
+  kind: POINTER
+  pointee_type_id: 0x9b574a89
+}
+pointer_reference {
+  id: 0x2c45ed77
+  kind: POINTER
+  pointee_type_id: 0x9b575341
+}
+pointer_reference {
+  id: 0x2c45ef00
+  kind: POINTER
+  pointee_type_id: 0x9b575a9f
+}
+pointer_reference {
+  id: 0x2c45ef73
+  kind: POINTER
+  pointee_type_id: 0x9b575b53
+}
+pointer_reference {
+  id: 0x2c45f2d3
+  kind: POINTER
+  pointee_type_id: 0x9b572dd0
+}
+pointer_reference {
+  id: 0x2c461b90
+  kind: POINTER
+  pointee_type_id: 0x9b5888dd
+}
+pointer_reference {
+  id: 0x2c47183e
+  kind: POINTER
+  pointee_type_id: 0x9b5c8666
+}
+pointer_reference {
+  id: 0x2c479eef
+  kind: POINTER
+  pointee_type_id: 0x9b5e9d20
+}
+pointer_reference {
+  id: 0x2c47b0fa
+  kind: POINTER
+  pointee_type_id: 0x9b5e2574
+}
+pointer_reference {
+  id: 0x2c480a05
+  kind: POINTER
+  pointee_type_id: 0x9b60ce8b
+}
+pointer_reference {
+  id: 0x2c481630
+  kind: POINTER
+  pointee_type_id: 0x9b60be5e
+}
+pointer_reference {
+  id: 0x2c485866
+  kind: POINTER
+  pointee_type_id: 0x9b618705
+}
+pointer_reference {
+  id: 0x2c4869a2
+  kind: POINTER
+  pointee_type_id: 0x9b614016
+}
+pointer_reference {
+  id: 0x2c487571
+  kind: POINTER
+  pointee_type_id: 0x9b613358
+}
+pointer_reference {
+  id: 0x2c494e22
+  kind: POINTER
+  pointee_type_id: 0x9b65de16
+}
+pointer_reference {
+  id: 0x2c497716
+  kind: POINTER
+  pointee_type_id: 0x9b653ac7
+}
+pointer_reference {
+  id: 0x2c49bb6c
+  kind: POINTER
+  pointee_type_id: 0x9b660b2c
+}
+pointer_reference {
+  id: 0x2c49e996
+  kind: POINTER
+  pointee_type_id: 0x9b6740c7
+}
+pointer_reference {
+  id: 0x2c4a1698
+  kind: POINTER
+  pointee_type_id: 0x9b68bcfc
+}
+pointer_reference {
+  id: 0x2c4a4aa0
+  kind: POINTER
+  pointee_type_id: 0x9b69cc1e
+}
+pointer_reference {
+  id: 0x2c4aa19f
+  kind: POINTER
+  pointee_type_id: 0x9b6a60e1
+}
+pointer_reference {
+  id: 0x2c4add43
+  kind: POINTER
+  pointee_type_id: 0x9b6b9392
+}
+pointer_reference {
+  id: 0x2c4bc142
+  kind: POINTER
+  pointee_type_id: 0x9b6fe394
+}
+pointer_reference {
+  id: 0x2c4c0247
+  kind: POINTER
+  pointee_type_id: 0x9b70ef80
+}
+pointer_reference {
+  id: 0x2c4d086f
+  kind: POINTER
+  pointee_type_id: 0x9b74c720
+}
+pointer_reference {
+  id: 0x2c4d6bfe
+  kind: POINTER
+  pointee_type_id: 0x9b754965
+}
+pointer_reference {
+  id: 0x2c4d76f3
+  kind: POINTER
+  pointee_type_id: 0x9b753d50
+}
+pointer_reference {
+  id: 0x2c4d7f49
+  kind: POINTER
+  pointee_type_id: 0x9b751bbb
+}
+pointer_reference {
+  id: 0x2c4d8b7c
+  kind: POINTER
+  pointee_type_id: 0x9b76cb6e
+}
+pointer_reference {
+  id: 0x2c4d9c82
+  kind: POINTER
+  pointee_type_id: 0x9b769496
+}
+pointer_reference {
+  id: 0x2c4dbd17
+  kind: POINTER
+  pointee_type_id: 0x9b7612c0
+}
+pointer_reference {
+  id: 0x2c4dbd20
+  kind: POINTER
+  pointee_type_id: 0x9b76121f
+}
+pointer_reference {
+  id: 0x2c4dcebb
+  kind: POINTER
+  pointee_type_id: 0x9b77dc72
+}
+pointer_reference {
+  id: 0x2c4e3e92
+  kind: POINTER
+  pointee_type_id: 0x9b781cd5
+}
+pointer_reference {
+  id: 0x2c4e44e3
+  kind: POINTER
+  pointee_type_id: 0x9b79f513
+}
+pointer_reference {
+  id: 0x2c4ec769
+  kind: POINTER
+  pointee_type_id: 0x9b7bfb3b
+}
+pointer_reference {
+  id: 0x2c4f223a
+  kind: POINTER
+  pointee_type_id: 0x9b7c6e74
+}
+pointer_reference {
+  id: 0x2c50b20c
+  kind: POINTER
+  pointee_type_id: 0x9b022eae
+}
+pointer_reference {
+  id: 0x2c510476
+  kind: POINTER
+  pointee_type_id: 0x9b04f747
+}
+pointer_reference {
+  id: 0x2c52639a
+  kind: POINTER
+  pointee_type_id: 0x9b0968f7
+}
+pointer_reference {
+  id: 0x2c538ce7
+  kind: POINTER
+  pointee_type_id: 0x9b0ed502
+}
+pointer_reference {
+  id: 0x2c53b465
+  kind: POINTER
+  pointee_type_id: 0x9b0e3709
+}
+pointer_reference {
+  id: 0x2c53cae5
+  kind: POINTER
+  pointee_type_id: 0x9b0fcd09
+}
+pointer_reference {
+  id: 0x2c53e69f
+  kind: POINTER
+  pointee_type_id: 0x9b0f7ce2
+}
+pointer_reference {
+  id: 0x2c5484bc
+  kind: POINTER
+  pointee_type_id: 0x9b12f46e
+}
+pointer_reference {
+  id: 0x2c54f8f3
+  kind: POINTER
+  pointee_type_id: 0x9b130553
+}
+pointer_reference {
+  id: 0x2c552b02
+  kind: POINTER
+  pointee_type_id: 0x9b144a97
+}
+pointer_reference {
+  id: 0x2c557718
+  kind: POINTER
+  pointee_type_id: 0x9b153afe
+}
+pointer_reference {
+  id: 0x2c55ce72
+  kind: POINTER
+  pointee_type_id: 0x9b17df57
+}
+pointer_reference {
+  id: 0x2c55cfca
+  kind: POINTER
+  pointee_type_id: 0x9b17d9b6
+}
+pointer_reference {
+  id: 0x2c5718f8
+  kind: POINTER
+  pointee_type_id: 0x9b1c857c
+}
+pointer_reference {
+  id: 0x2c571980
+  kind: POINTER
+  pointee_type_id: 0x9b1c809c
+}
+pointer_reference {
+  id: 0x2c581e22
+  kind: POINTER
+  pointee_type_id: 0x9b209e15
+}
+pointer_reference {
+  id: 0x2c582e60
+  kind: POINTER
+  pointee_type_id: 0x9b205f1f
+}
+pointer_reference {
+  id: 0x2c5882f1
+  kind: POINTER
+  pointee_type_id: 0x9b22ed59
+}
+pointer_reference {
+  id: 0x2c59231c
+  kind: POINTER
+  pointee_type_id: 0x9b246aef
+}
+pointer_reference {
+  id: 0x2c5a1fd7
+  kind: POINTER
+  pointee_type_id: 0x9b2899c2
+}
+pointer_reference {
+  id: 0x2c5a5d26
+  kind: POINTER
+  pointee_type_id: 0x9b299206
+}
+pointer_reference {
+  id: 0x2c5b1d58
+  kind: POINTER
+  pointee_type_id: 0x9b2c93fd
+}
+pointer_reference {
+  id: 0x2c5b9720
+  kind: POINTER
+  pointee_type_id: 0x9b2eba1d
+}
+pointer_reference {
+  id: 0x2c5bc41e
+  kind: POINTER
+  pointee_type_id: 0x9b2ff6e6
+}
+pointer_reference {
+  id: 0x2c5c850c
+  kind: POINTER
+  pointee_type_id: 0x9b32f2ad
+}
+pointer_reference {
+  id: 0x2c5ea5d6
+  kind: POINTER
+  pointee_type_id: 0x9b3a71c6
+}
+pointer_reference {
+  id: 0x2c5ee8ff
+  kind: POINTER
+  pointee_type_id: 0x9b3b4561
+}
+pointer_reference {
+  id: 0x2c5eebb2
+  kind: POINTER
+  pointee_type_id: 0x9b3b4856
+}
+pointer_reference {
+  id: 0x2c5f552b
+  kind: POINTER
+  pointee_type_id: 0x9b3db232
+}
+pointer_reference {
+  id: 0x2c5f55bd
+  kind: POINTER
+  pointee_type_id: 0x9b3db069
+}
+pointer_reference {
+  id: 0x2c5fa0f5
+  kind: POINTER
+  pointee_type_id: 0x9b3e6548
+}
+pointer_reference {
+  id: 0x2c5fa655
+  kind: POINTER
+  pointee_type_id: 0x9b3e7fcb
+}
+pointer_reference {
+  id: 0x2c5fd712
+  kind: POINTER
+  pointee_type_id: 0x9b3fbad6
+}
+pointer_reference {
+  id: 0x2c5ff544
+  kind: POINTER
+  pointee_type_id: 0x9b3f338e
+}
+pointer_reference {
+  id: 0x2c60346b
+  kind: POINTER
+  pointee_type_id: 0x9bc03733
+}
+pointer_reference {
+  id: 0x2c60346d
+  kind: POINTER
+  pointee_type_id: 0x9bc0372a
+}
+pointer_reference {
+  id: 0x2c60498c
+  kind: POINTER
+  pointee_type_id: 0x9bc1c0ac
+}
+pointer_reference {
+  id: 0x2c604edc
+  kind: POINTER
+  pointee_type_id: 0x9bc1dded
+}
+pointer_reference {
+  id: 0x2c60e579
+  kind: POINTER
+  pointee_type_id: 0x9bc3737b
+}
+pointer_reference {
+  id: 0x2c60f2f5
+  kind: POINTER
+  pointee_type_id: 0x9bc32d4a
+}
+pointer_reference {
+  id: 0x2c610c70
+  kind: POINTER
+  pointee_type_id: 0x9bc4d75d
+}
+pointer_reference {
+  id: 0x2c61a903
+  kind: POINTER
+  pointee_type_id: 0x9bc64292
+}
+pointer_reference {
+  id: 0x2c61df5b
+  kind: POINTER
+  pointee_type_id: 0x9bc79bf3
+}
+pointer_reference {
+  id: 0x2c6242f1
+  kind: POINTER
+  pointee_type_id: 0x9bc9ed5a
+}
+pointer_reference {
+  id: 0x2c62f07a
+  kind: POINTER
+  pointee_type_id: 0x9bcb2775
+}
+pointer_reference {
+  id: 0x2c636a5a
+  kind: POINTER
+  pointee_type_id: 0x9bcd4ff7
+}
+pointer_reference {
+  id: 0x2c63cb53
+  kind: POINTER
+  pointee_type_id: 0x9bcfcbd0
+}
+pointer_reference {
+  id: 0x2c6469ba
+  kind: POINTER
+  pointee_type_id: 0x9bd14074
+}
+pointer_reference {
+  id: 0x2c64a150
+  kind: POINTER
+  pointee_type_id: 0x9bd263dd
+}
+pointer_reference {
+  id: 0x2c64bf05
+  kind: POINTER
+  pointee_type_id: 0x9bd21a8b
+}
+pointer_reference {
+  id: 0x2c64ebe5
+  kind: POINTER
+  pointee_type_id: 0x9bd3490a
+}
+pointer_reference {
+  id: 0x2c64ed10
+  kind: POINTER
+  pointee_type_id: 0x9bd352dd
+}
+pointer_reference {
+  id: 0x2c6504f9
+  kind: POINTER
+  pointee_type_id: 0x9bd4f579
+}
+pointer_reference {
+  id: 0x2c6508b7
+  kind: POINTER
+  pointee_type_id: 0x9bd4c440
+}
+pointer_reference {
+  id: 0x2c651ca7
+  kind: POINTER
+  pointee_type_id: 0x9bd49403
+}
+pointer_reference {
+  id: 0x2c651f2c
+  kind: POINTER
+  pointee_type_id: 0x9bd49a2f
+}
+pointer_reference {
+  id: 0x2c65252d
+  kind: POINTER
+  pointee_type_id: 0x9bd4722a
+}
+pointer_reference {
+  id: 0x2c65289d
+  kind: POINTER
+  pointee_type_id: 0x9bd444ea
+}
+pointer_reference {
+  id: 0x2c652980
+  kind: POINTER
+  pointee_type_id: 0x9bd4409d
+}
+pointer_reference {
+  id: 0x2c652e34
+  kind: POINTER
+  pointee_type_id: 0x9bd45e4e
+}
+pointer_reference {
+  id: 0x2c6537e9
+  kind: POINTER
+  pointee_type_id: 0x9bd4393a
+}
+pointer_reference {
+  id: 0x2c654423
+  kind: POINTER
+  pointee_type_id: 0x9bd5f612
+}
+pointer_reference {
+  id: 0x2c65452b
+  kind: POINTER
+  pointee_type_id: 0x9bd5f230
+}
+pointer_reference {
+  id: 0x2c654951
+  kind: POINTER
+  pointee_type_id: 0x9bd5c3da
+}
+pointer_reference {
+  id: 0x2c6550de
+  kind: POINTER
+  pointee_type_id: 0x9bd5a5e6
+}
+pointer_reference {
+  id: 0x2c656cdf
+  kind: POINTER
+  pointee_type_id: 0x9bd555e1
+}
+pointer_reference {
+  id: 0x2c659c2f
+  kind: POINTER
+  pointee_type_id: 0x9bd69623
+}
+pointer_reference {
+  id: 0x2c65a66d
+  kind: POINTER
+  pointee_type_id: 0x9bd67f28
+}
+pointer_reference {
+  id: 0x2c65baf1
+  kind: POINTER
+  pointee_type_id: 0x9bd60d5a
+}
+pointer_reference {
+  id: 0x2c65bf81
+  kind: POINTER
+  pointee_type_id: 0x9bd6189b
+}
+pointer_reference {
+  id: 0x2c65cac4
+  kind: POINTER
+  pointee_type_id: 0x9bd7cd8d
+}
+pointer_reference {
+  id: 0x2c65ceb4
+  kind: POINTER
+  pointee_type_id: 0x9bd7dc4e
+}
+pointer_reference {
+  id: 0x2c661aa7
+  kind: POINTER
+  pointee_type_id: 0x9bd88c03
+}
+pointer_reference {
+  id: 0x2c6633cf
+  kind: POINTER
+  pointee_type_id: 0x9bd829a3
+}
+pointer_reference {
+  id: 0x2c6649d9
+  kind: POINTER
+  pointee_type_id: 0x9bd9c1f9
+}
+pointer_reference {
+  id: 0x2c6657b6
+  kind: POINTER
+  pointee_type_id: 0x9bd9b846
+}
+pointer_reference {
+  id: 0x2c6661c1
+  kind: POINTER
+  pointee_type_id: 0x9bd9619b
+}
+pointer_reference {
+  id: 0x2c66a9e0
+  kind: POINTER
+  pointee_type_id: 0x9bda411e
+}
+pointer_reference {
+  id: 0x2c66b44f
+  kind: POINTER
+  pointee_type_id: 0x9bda37a0
+}
+pointer_reference {
+  id: 0x2c66d8fe
+  kind: POINTER
+  pointee_type_id: 0x9bdb8566
+}
+pointer_reference {
+  id: 0x2c66db33
+  kind: POINTER
+  pointee_type_id: 0x9bdb8a52
+}
+pointer_reference {
+  id: 0x2c66e86b
+  kind: POINTER
+  pointee_type_id: 0x9bdb4731
+}
+pointer_reference {
+  id: 0x2c66e8e6
+  kind: POINTER
+  pointee_type_id: 0x9bdb4504
+}
+pointer_reference {
+  id: 0x2c66e9eb
+  kind: POINTER
+  pointee_type_id: 0x9bdb4132
+}
+pointer_reference {
+  id: 0x2c672571
+  kind: POINTER
+  pointee_type_id: 0x9bdc735b
+}
+pointer_reference {
+  id: 0x2c67259f
+  kind: POINTER
+  pointee_type_id: 0x9bdc70e1
+}
+pointer_reference {
+  id: 0x2c6725f7
+  kind: POINTER
+  pointee_type_id: 0x9bdc7143
+}
+pointer_reference {
+  id: 0x2c67289d
+  kind: POINTER
+  pointee_type_id: 0x9bdc44e8
+}
+pointer_reference {
+  id: 0x2c67422c
+  kind: POINTER
+  pointee_type_id: 0x9bddee2d
+}
+pointer_reference {
+  id: 0x2c67561c
+  kind: POINTER
+  pointee_type_id: 0x9bddbeed
+}
+pointer_reference {
+  id: 0x2c6757ed
+  kind: POINTER
+  pointee_type_id: 0x9bddb929
+}
+pointer_reference {
+  id: 0x2c675b4f
+  kind: POINTER
+  pointee_type_id: 0x9bdd8ba2
+}
+pointer_reference {
+  id: 0x2c676160
+  kind: POINTER
+  pointee_type_id: 0x9bdd631f
+}
+pointer_reference {
+  id: 0x2c67759b
+  kind: POINTER
+  pointee_type_id: 0x9bdd30f1
+}
+pointer_reference {
+  id: 0x2c679907
+  kind: POINTER
+  pointee_type_id: 0x9bde8280
+}
+pointer_reference {
+  id: 0x2c67a5b1
+  kind: POINTER
+  pointee_type_id: 0x9bde705b
+}
+pointer_reference {
+  id: 0x2c67a7e3
+  kind: POINTER
+  pointee_type_id: 0x9bde7910
+}
+pointer_reference {
+  id: 0x2c67ba27
+  kind: POINTER
+  pointee_type_id: 0x9bde0e00
+}
+pointer_reference {
+  id: 0x2c67ca15
+  kind: POINTER
+  pointee_type_id: 0x9bdfcecb
+}
+pointer_reference {
+  id: 0x2c67cc94
+  kind: POINTER
+  pointee_type_id: 0x9bdfd4cc
+}
+pointer_reference {
+  id: 0x2c67d0a1
+  kind: POINTER
+  pointee_type_id: 0x9bdfa419
+}
+pointer_reference {
+  id: 0x2c685816
+  kind: POINTER
+  pointee_type_id: 0x9be186c4
+}
+pointer_reference {
+  id: 0x2c691a2f
+  kind: POINTER
+  pointee_type_id: 0x9be48e21
+}
+pointer_reference {
+  id: 0x2c691ecf
+  kind: POINTER
+  pointee_type_id: 0x9be49da2
+}
+pointer_reference {
+  id: 0x2c693aa6
+  kind: POINTER
+  pointee_type_id: 0x9be40c05
+}
+pointer_reference {
+  id: 0x2c6964fd
+  kind: POINTER
+  pointee_type_id: 0x9be57568
+}
+pointer_reference {
+  id: 0x2c69751f
+  kind: POINTER
+  pointee_type_id: 0x9be532e0
+}
+pointer_reference {
+  id: 0x2c6a18d1
+  kind: POINTER
+  pointee_type_id: 0x9be885da
+}
+pointer_reference {
+  id: 0x2c6a38d1
+  kind: POINTER
+  pointee_type_id: 0x9be805d9
+}
+pointer_reference {
+  id: 0x2c6a6c66
+  kind: POINTER
+  pointee_type_id: 0x9be95705
+}
+pointer_reference {
+  id: 0x2c6a9388
+  kind: POINTER
+  pointee_type_id: 0x9beaa8bf
+}
+pointer_reference {
+  id: 0x2c6ba7f6
+  kind: POINTER
+  pointee_type_id: 0x9bee7944
+}
+pointer_reference {
+  id: 0x2c6c412b
+  kind: POINTER
+  pointee_type_id: 0x9bf1e232
+}
+pointer_reference {
+  id: 0x2c6ce7f6
+  kind: POINTER
+  pointee_type_id: 0x9bf37946
+}
+pointer_reference {
+  id: 0x2c6e3132
+  kind: POINTER
+  pointee_type_id: 0x9bf82255
+}
+pointer_reference {
+  id: 0x2c6e5d0f
+  kind: POINTER
+  pointee_type_id: 0x9bf992a2
+}
+pointer_reference {
+  id: 0x2c6e66df
+  kind: POINTER
+  pointee_type_id: 0x9bf97de0
+}
+pointer_reference {
+  id: 0x2c6f4dd1
+  kind: POINTER
+  pointee_type_id: 0x9bfdd1d8
+}
+pointer_reference {
+  id: 0x2c70ed88
+  kind: POINTER
+  pointee_type_id: 0x9b8350bf
+}
+pointer_reference {
+  id: 0x2c70f3e8
+  kind: POINTER
+  pointee_type_id: 0x9b83293d
+}
+pointer_reference {
+  id: 0x2c71497c
+  kind: POINTER
+  pointee_type_id: 0x9b85c36d
+}
+pointer_reference {
+  id: 0x2c715cf2
+  kind: POINTER
+  pointee_type_id: 0x9b859556
+}
+pointer_reference {
+  id: 0x2c71a392
+  kind: POINTER
+  pointee_type_id: 0x9b8668d4
+}
+pointer_reference {
+  id: 0x2c71c47e
+  kind: POINTER
+  pointee_type_id: 0x9b87f766
+}
+pointer_reference {
+  id: 0x2c724f21
+  kind: POINTER
+  pointee_type_id: 0x9b89da18
+}
+pointer_reference {
+  id: 0x2c7292f9
+  kind: POINTER
+  pointee_type_id: 0x9b8aad7a
+}
+pointer_reference {
+  id: 0x2c747be9
+  kind: POINTER
+  pointee_type_id: 0x9b91093a
+}
+pointer_reference {
+  id: 0x2c74b483
+  kind: POINTER
+  pointee_type_id: 0x9b923492
+}
+pointer_reference {
+  id: 0x2c74dbc6
+  kind: POINTER
+  pointee_type_id: 0x9b938987
+}
+pointer_reference {
+  id: 0x2c74fe37
+  kind: POINTER
+  pointee_type_id: 0x9b931e43
+}
+pointer_reference {
+  id: 0x2c756772
+  kind: POINTER
+  pointee_type_id: 0x9b957b56
+}
+pointer_reference {
+  id: 0x2c770a76
+  kind: POINTER
+  pointee_type_id: 0x9b9ccf45
+}
+pointer_reference {
+  id: 0x2c772f1b
+  kind: POINTER
+  pointee_type_id: 0x9b9c5af1
+}
+pointer_reference {
+  id: 0x2c777de1
+  kind: POINTER
+  pointee_type_id: 0x9b9d111a
+}
+pointer_reference {
+  id: 0x2c778560
+  kind: POINTER
+  pointee_type_id: 0x9b9ef31d
+}
+pointer_reference {
+  id: 0x2c7820c5
+  kind: POINTER
+  pointee_type_id: 0x9ba0658b
+}
+pointer_reference {
+  id: 0x2c784c2d
+  kind: POINTER
+  pointee_type_id: 0x9ba1d628
+}
+pointer_reference {
+  id: 0x2c7883e9
+  kind: POINTER
+  pointee_type_id: 0x9ba2e939
+}
+pointer_reference {
+  id: 0x2c78b884
+  kind: POINTER
+  pointee_type_id: 0x9ba2048f
+}
+pointer_reference {
+  id: 0x2c78d676
+  kind: POINTER
+  pointee_type_id: 0x9ba3bf47
+}
+pointer_reference {
+  id: 0x2c78dfde
+  kind: POINTER
+  pointee_type_id: 0x9ba399e4
+}
+pointer_reference {
+  id: 0x2c78fcb4
+  kind: POINTER
+  pointee_type_id: 0x9ba3144f
+}
+pointer_reference {
+  id: 0x2c794b1f
+  kind: POINTER
+  pointee_type_id: 0x9ba5cae2
+}
+pointer_reference {
+  id: 0x2c799285
+  kind: POINTER
+  pointee_type_id: 0x9ba6ac88
+}
+pointer_reference {
+  id: 0x2c799599
+  kind: POINTER
+  pointee_type_id: 0x9ba6b0f8
+}
+pointer_reference {
+  id: 0x2c7a6df5
+  kind: POINTER
+  pointee_type_id: 0x9ba95149
+}
+pointer_reference {
+  id: 0x2c7b6f3a
+  kind: POINTER
+  pointee_type_id: 0x9bad5a77
+}
+pointer_reference {
+  id: 0x2c7b75e1
+  kind: POINTER
+  pointee_type_id: 0x9bad311a
+}
+pointer_reference {
+  id: 0x2c7bd73f
+  kind: POINTER
+  pointee_type_id: 0x9bafba63
+}
+pointer_reference {
+  id: 0x2c7c70ad
+  kind: POINTER
+  pointee_type_id: 0x9bb12429
+}
+pointer_reference {
+  id: 0x2c7cb6d1
+  kind: POINTER
+  pointee_type_id: 0x9bb23dd9
+}
+pointer_reference {
+  id: 0x2c7db2d9
+  kind: POINTER
+  pointee_type_id: 0x9bb62df9
+}
+pointer_reference {
+  id: 0x2c7e042e
+  kind: POINTER
+  pointee_type_id: 0x9bb8f626
+}
+pointer_reference {
+  id: 0x2c7e1c98
+  kind: POINTER
+  pointee_type_id: 0x9bb894fd
+}
+pointer_reference {
+  id: 0x2c7e27c6
+  kind: POINTER
+  pointee_type_id: 0x9bb87987
+}
+pointer_reference {
+  id: 0x2c7e6442
+  kind: POINTER
+  pointee_type_id: 0x9bb97795
+}
+pointer_reference {
+  id: 0x2c7e659b
+  kind: POINTER
+  pointee_type_id: 0x9bb970f2
+}
+pointer_reference {
+  id: 0x2c7ea7c2
+  kind: POINTER
+  pointee_type_id: 0x9bba7997
+}
+pointer_reference {
+  id: 0x2c7f05e6
+  kind: POINTER
+  pointee_type_id: 0x9bbcf106
+}
+pointer_reference {
+  id: 0x2c7f5725
+  kind: POINTER
+  pointee_type_id: 0x9bbdba09
+}
+pointer_reference {
+  id: 0x2c7ffaf6
+  kind: POINTER
+  pointee_type_id: 0x9bbf0d46
+}
+pointer_reference {
+  id: 0x2c803af0
+  kind: POINTER
+  pointee_type_id: 0x98400d5f
+}
+pointer_reference {
+  id: 0x2c80456f
+  kind: POINTER
+  pointee_type_id: 0x9841f322
+}
+pointer_reference {
+  id: 0x2c804609
+  kind: POINTER
+  pointee_type_id: 0x9841feba
+}
+pointer_reference {
+  id: 0x2c80812c
+  kind: POINTER
+  pointee_type_id: 0x9842e22e
+}
+pointer_reference {
+  id: 0x2c808592
+  kind: POINTER
+  pointee_type_id: 0x9842f0d6
+}
+pointer_reference {
+  id: 0x2c808fce
+  kind: POINTER
+  pointee_type_id: 0x9842d9a4
+}
+pointer_reference {
+  id: 0x2c809813
+  kind: POINTER
+  pointee_type_id: 0x984286d0
+}
+pointer_reference {
+  id: 0x2c8159e1
+  kind: POINTER
+  pointee_type_id: 0x98458118
+}
+pointer_reference {
+  id: 0x2c815a87
+  kind: POINTER
+  pointee_type_id: 0x98458c80
+}
+pointer_reference {
+  id: 0x2c81f551
+  kind: POINTER
+  pointee_type_id: 0x984733d8
+}
+pointer_reference {
+  id: 0x2c81fb24
+  kind: POINTER
+  pointee_type_id: 0x98470a0f
+}
+pointer_reference {
+  id: 0x2c82fcfe
+  kind: POINTER
+  pointee_type_id: 0x984b1567
+}
+pointer_reference {
+  id: 0x2c831d6e
+  kind: POINTER
+  pointee_type_id: 0x984c9324
+}
+pointer_reference {
+  id: 0x2c83536f
+  kind: POINTER
+  pointee_type_id: 0x984dab21
+}
+pointer_reference {
+  id: 0x2c8534d8
+  kind: POINTER
+  pointee_type_id: 0x985435fe
+}
+pointer_reference {
+  id: 0x2c853d90
+  kind: POINTER
+  pointee_type_id: 0x985410df
+}
+pointer_reference {
+  id: 0x2c855ab0
+  kind: POINTER
+  pointee_type_id: 0x98558c5c
+}
+pointer_reference {
+  id: 0x2c85f481
+  kind: POINTER
+  pointee_type_id: 0x98573499
+}
+pointer_reference {
+  id: 0x2c87681b
+  kind: POINTER
+  pointee_type_id: 0x985d46f1
+}
+pointer_reference {
+  id: 0x2c876a31
+  kind: POINTER
+  pointee_type_id: 0x985d4e58
+}
+pointer_reference {
+  id: 0x2c882bac
+  kind: POINTER
+  pointee_type_id: 0x9860482f
+}
+pointer_reference {
+  id: 0x2c8949db
+  kind: POINTER
+  pointee_type_id: 0x9865c1f0
+}
+pointer_reference {
+  id: 0x2c8a36ad
+  kind: POINTER
+  pointee_type_id: 0x98683c28
+}
+pointer_reference {
+  id: 0x2c8ab1ff
+  kind: POINTER
+  pointee_type_id: 0x986a2160
+}
+pointer_reference {
+  id: 0x2c8b0a9f
+  kind: POINTER
+  pointee_type_id: 0x986ccce1
+}
+pointer_reference {
+  id: 0x2c8c423d
+  kind: POINTER
+  pointee_type_id: 0x9871ee6b
+}
+pointer_reference {
+  id: 0x2c8e1aaa
+  kind: POINTER
+  pointee_type_id: 0x98788c37
+}
+pointer_reference {
+  id: 0x2c8f5b5b
+  kind: POINTER
+  pointee_type_id: 0x987d8bf3
+}
+pointer_reference {
+  id: 0x2c8fa3e9
+  kind: POINTER
+  pointee_type_id: 0x987e6939
+}
+pointer_reference {
+  id: 0x2c912323
+  kind: POINTER
+  pointee_type_id: 0x98046a12
+}
+pointer_reference {
+  id: 0x2c915a58
+  kind: POINTER
+  pointee_type_id: 0x98058ffc
+}
+pointer_reference {
+  id: 0x2c923b8b
+  kind: POINTER
+  pointee_type_id: 0x980808b1
+}
+pointer_reference {
+  id: 0x2c925e2c
+  kind: POINTER
+  pointee_type_id: 0x98099e2c
+}
+pointer_reference {
+  id: 0x2c930d22
+  kind: POINTER
+  pointee_type_id: 0x980cd217
+}
+pointer_reference {
+  id: 0x2c948101
+  kind: POINTER
+  pointee_type_id: 0x9812e29b
+}
+pointer_reference {
+  id: 0x2c94ec7e
+  kind: POINTER
+  pointee_type_id: 0x98135766
+}
+pointer_reference {
+  id: 0x2c952810
+  kind: POINTER
+  pointee_type_id: 0x981446df
+}
+pointer_reference {
+  id: 0x2c952bec
+  kind: POINTER
+  pointee_type_id: 0x9814492e
+}
+pointer_reference {
+  id: 0x2c957f2f
+  kind: POINTER
+  pointee_type_id: 0x98151a23
+}
+pointer_reference {
+  id: 0x2c95ba59
+  kind: POINTER
+  pointee_type_id: 0x98160ff9
+}
+pointer_reference {
+  id: 0x2c95d007
+  kind: POINTER
+  pointee_type_id: 0x9817a683
+}
+pointer_reference {
+  id: 0x2c95dd45
+  kind: POINTER
+  pointee_type_id: 0x9817938b
+}
+pointer_reference {
+  id: 0x2c963e7a
+  kind: POINTER
+  pointee_type_id: 0x98181f74
+}
+pointer_reference {
+  id: 0x2c966c80
+  kind: POINTER
+  pointee_type_id: 0x9819549f
+}
+pointer_reference {
+  id: 0x2c96a06f
+  kind: POINTER
+  pointee_type_id: 0x981a6720
+}
+pointer_reference {
+  id: 0x2c975498
+  kind: POINTER
+  pointee_type_id: 0x981db4ff
+}
+pointer_reference {
+  id: 0x2c97b369
+  kind: POINTER
+  pointee_type_id: 0x981e2b3a
+}
+pointer_reference {
+  id: 0x2c97ec3b
+  kind: POINTER
+  pointee_type_id: 0x981f5671
+}
+pointer_reference {
+  id: 0x2c97f35a
+  kind: POINTER
+  pointee_type_id: 0x981f2bf6
+}
+pointer_reference {
+  id: 0x2c982451
+  kind: POINTER
+  pointee_type_id: 0x982077da
+}
+pointer_reference {
+  id: 0x2c9b36f2
+  kind: POINTER
+  pointee_type_id: 0x982c3d56
+}
+pointer_reference {
+  id: 0x2c9bf198
+  kind: POINTER
+  pointee_type_id: 0x982f20ff
+}
+pointer_reference {
+  id: 0x2c9f2c07
+  kind: POINTER
+  pointee_type_id: 0x983c5682
+}
+pointer_reference {
+  id: 0x2ca12e1a
+  kind: POINTER
+  pointee_type_id: 0x98c45ef6
+}
+pointer_reference {
+  id: 0x2ca14096
+  kind: POINTER
+  pointee_type_id: 0x98c5e4c7
+}
+pointer_reference {
+  id: 0x2ca14b1f
+  kind: POINTER
+  pointee_type_id: 0x98c5cae2
+}
+pointer_reference {
+  id: 0x2ca1690d
+  kind: POINTER
+  pointee_type_id: 0x98c542aa
+}
+pointer_reference {
+  id: 0x2ca1d644
+  kind: POINTER
+  pointee_type_id: 0x98c7bf8d
+}
+pointer_reference {
+  id: 0x2ca1d9a6
+  kind: POINTER
+  pointee_type_id: 0x98c78004
+}
+pointer_reference {
+  id: 0x2ca1eaea
+  kind: POINTER
+  pointee_type_id: 0x98c74d34
+}
+pointer_reference {
+  id: 0x2ca1ff18
+  kind: POINTER
+  pointee_type_id: 0x98c71afc
+}
+pointer_reference {
+  id: 0x2ca6a571
+  kind: POINTER
+  pointee_type_id: 0x98da7358
+}
+pointer_reference {
+  id: 0x2ca7a402
+  kind: POINTER
+  pointee_type_id: 0x98de7695
+}
+pointer_reference {
+  id: 0x2ca8f248
+  kind: POINTER
+  pointee_type_id: 0x98e32fbd
+}
+pointer_reference {
+  id: 0x2ca91a7b
+  kind: POINTER
+  pointee_type_id: 0x98e48f72
+}
+pointer_reference {
+  id: 0x2ca92d96
+  kind: POINTER
+  pointee_type_id: 0x98e450c7
+}
+pointer_reference {
+  id: 0x2ca9d982
+  kind: POINTER
+  pointee_type_id: 0x98e78094
+}
+pointer_reference {
+  id: 0x2caa8c20
+  kind: POINTER
+  pointee_type_id: 0x98ead61c
+}
+pointer_reference {
+  id: 0x2caadeda
+  kind: POINTER
+  pointee_type_id: 0x98eb9df7
+}
+pointer_reference {
+  id: 0x2cab1418
+  kind: POINTER
+  pointee_type_id: 0x98ecb6ff
+}
+pointer_reference {
+  id: 0x2caba586
+  kind: POINTER
+  pointee_type_id: 0x98ee7087
+}
+pointer_reference {
+  id: 0x2cac39f3
+  kind: POINTER
+  pointee_type_id: 0x98f00152
+}
+pointer_reference {
+  id: 0x2cac4934
+  kind: POINTER
+  pointee_type_id: 0x98f1c24f
+}
+pointer_reference {
+  id: 0x2cac4c27
+  kind: POINTER
+  pointee_type_id: 0x98f1d602
+}
+pointer_reference {
+  id: 0x2caea882
+  kind: POINTER
+  pointee_type_id: 0x98fa4494
+}
+pointer_reference {
+  id: 0x2caf2169
+  kind: POINTER
+  pointee_type_id: 0x98fc633b
+}
+pointer_reference {
+  id: 0x2cb0b1c0
+  kind: POINTER
+  pointee_type_id: 0x9882219f
+}
+pointer_reference {
+  id: 0x2cb1867e
+  kind: POINTER
+  pointee_type_id: 0x9886ff64
+}
+pointer_reference {
+  id: 0x2cb20dcc
+  kind: POINTER
+  pointee_type_id: 0x9888d1ad
+}
+pointer_reference {
+  id: 0x2cb23e2c
+  kind: POINTER
+  pointee_type_id: 0x98881e2d
+}
+pointer_reference {
+  id: 0x2cb3cf30
+  kind: POINTER
+  pointee_type_id: 0x988fda5f
+}
+pointer_reference {
+  id: 0x2cb45ae6
+  kind: POINTER
+  pointee_type_id: 0x98918d07
+}
+pointer_reference {
+  id: 0x2cb4fa3a
+  kind: POINTER
+  pointee_type_id: 0x98930e77
+}
+pointer_reference {
+  id: 0x2cb5196e
+  kind: POINTER
+  pointee_type_id: 0x98948325
+}
+pointer_reference {
+  id: 0x2cb576ea
+  kind: POINTER
+  pointee_type_id: 0x98953d35
+}
+pointer_reference {
+  id: 0x2cb597e1
+  kind: POINTER
+  pointee_type_id: 0x9896b919
+}
+pointer_reference {
+  id: 0x2cb62bf2
+  kind: POINTER
+  pointee_type_id: 0x98984954
+}
+pointer_reference {
+  id: 0x2cb66c54
+  kind: POINTER
+  pointee_type_id: 0x989957cd
+}
+pointer_reference {
+  id: 0x2cb8b225
+  kind: POINTER
+  pointee_type_id: 0x98a22e08
+}
+pointer_reference {
+  id: 0x2cba2cd4
+  kind: POINTER
+  pointee_type_id: 0x98a855cd
+}
+pointer_reference {
+  id: 0x2cbacf8c
+  kind: POINTER
+  pointee_type_id: 0x98abd8af
+}
+pointer_reference {
+  id: 0x2cbb953f
+  kind: POINTER
+  pointee_type_id: 0x98aeb261
+}
+pointer_reference {
+  id: 0x2cbccbe7
+  kind: POINTER
+  pointee_type_id: 0x98b3c900
+}
+pointer_reference {
+  id: 0x2cbe4f96
+  kind: POINTER
+  pointee_type_id: 0x98b9d8c5
+}
+pointer_reference {
+  id: 0x2cbeba93
+  kind: POINTER
+  pointee_type_id: 0x98ba0cd1
+}
+pointer_reference {
+  id: 0x2cbec2a2
+  kind: POINTER
+  pointee_type_id: 0x98bbec16
+}
+pointer_reference {
+  id: 0x2cbedfd4
+  kind: POINTER
+  pointee_type_id: 0x98bb99ce
+}
+pointer_reference {
+  id: 0x2cbf0dea
+  kind: POINTER
+  pointee_type_id: 0x98bcd137
+}
+pointer_reference {
+  id: 0x2cc03484
+  kind: POINTER
+  pointee_type_id: 0x9940348d
+}
+pointer_reference {
+  id: 0x2cc06451
+  kind: POINTER
+  pointee_type_id: 0x994177db
+}
+pointer_reference {
+  id: 0x2cc09ac5
+  kind: POINTER
+  pointee_type_id: 0x99428d89
+}
+pointer_reference {
+  id: 0x2cc0f57b
+  kind: POINTER
+  pointee_type_id: 0x99433372
+}
+pointer_reference {
+  id: 0x2cc185a2
+  kind: POINTER
+  pointee_type_id: 0x9946f014
+}
+pointer_reference {
+  id: 0x2cc302e5
+  kind: POINTER
+  pointee_type_id: 0x994ced09
+}
+pointer_reference {
+  id: 0x2cc33558
+  kind: POINTER
+  pointee_type_id: 0x994c33fc
+}
+pointer_reference {
+  id: 0x2cc3e4c8
+  kind: POINTER
+  pointee_type_id: 0x994f75bf
+}
+pointer_reference {
+  id: 0x2cc4a2bb
+  kind: POINTER
+  pointee_type_id: 0x99526c70
+}
+pointer_reference {
+  id: 0x2cc4c59b
+  kind: POINTER
+  pointee_type_id: 0x9953f0f3
+}
+pointer_reference {
+  id: 0x2cc63051
+  kind: POINTER
+  pointee_type_id: 0x995827da
+}
+pointer_reference {
+  id: 0x2cc6325b
+  kind: POINTER
+  pointee_type_id: 0x99582ff3
+}
+pointer_reference {
+  id: 0x2cc7a300
+  kind: POINTER
+  pointee_type_id: 0x995e6a9d
+}
+pointer_reference {
+  id: 0x2cc801ba
+  kind: POINTER
+  pointee_type_id: 0x9960e077
+}
+pointer_reference {
+  id: 0x2cc82fd6
+  kind: POINTER
+  pointee_type_id: 0x996059c4
+}
+pointer_reference {
+  id: 0x2cca5ab2
+  kind: POINTER
+  pointee_type_id: 0x99698c57
+}
+pointer_reference {
+  id: 0x2ccaf0a5
+  kind: POINTER
+  pointee_type_id: 0x996b2409
+}
+pointer_reference {
+  id: 0x2ccbaf5c
+  kind: POINTER
+  pointee_type_id: 0x996e5bee
+}
+pointer_reference {
+  id: 0x2ccc936a
+  kind: POINTER
+  pointee_type_id: 0x9972ab36
+}
+pointer_reference {
+  id: 0x2ccfa873
+  kind: POINTER
+  pointee_type_id: 0x997e4751
+}
+pointer_reference {
+  id: 0x2cd032dd
+  kind: POINTER
+  pointee_type_id: 0x99002deb
+}
+pointer_reference {
+  id: 0x2cd05561
+  kind: POINTER
+  pointee_type_id: 0x9901b31b
+}
+pointer_reference {
+  id: 0x2cd10095
+  kind: POINTER
+  pointee_type_id: 0x9904e4cb
+}
+pointer_reference {
+  id: 0x2cd10398
+  kind: POINTER
+  pointee_type_id: 0x9904e8fd
+}
+pointer_reference {
+  id: 0x2cd20a31
+  kind: POINTER
+  pointee_type_id: 0x9908ce5a
+}
+pointer_reference {
+  id: 0x2cd29ed4
+  kind: POINTER
+  pointee_type_id: 0x990a9dcc
+}
+pointer_reference {
+  id: 0x2cd2a48a
+  kind: POINTER
+  pointee_type_id: 0x990a74b4
+}
+pointer_reference {
+  id: 0x2cd31328
+  kind: POINTER
+  pointee_type_id: 0x990caa3e
+}
+pointer_reference {
+  id: 0x2cd59b11
+  kind: POINTER
+  pointee_type_id: 0x99168ad9
+}
+pointer_reference {
+  id: 0x2cd5f6d3
+  kind: POINTER
+  pointee_type_id: 0x99173dd0
+}
+pointer_reference {
+  id: 0x2cd5fc31
+  kind: POINTER
+  pointee_type_id: 0x9917165a
+}
+pointer_reference {
+  id: 0x2cda29dd
+  kind: POINTER
+  pointee_type_id: 0x992841ea
+}
+pointer_reference {
+  id: 0x2cdbb77a
+  kind: POINTER
+  pointee_type_id: 0x992e3b77
+}
+pointer_reference {
+  id: 0x2cdc0ac8
+  kind: POINTER
+  pointee_type_id: 0x9930cdbf
+}
+pointer_reference {
+  id: 0x2cdcb5ec
+  kind: POINTER
+  pointee_type_id: 0x9932312d
+}
+pointer_reference {
+  id: 0x2cdccc49
+  kind: POINTER
+  pointee_type_id: 0x9933d7b8
+}
+pointer_reference {
+  id: 0x2cdce716
+  kind: POINTER
+  pointee_type_id: 0x99337ac6
+}
+pointer_reference {
+  id: 0x2cde74fe
+  kind: POINTER
+  pointee_type_id: 0x99393567
+}
+pointer_reference {
+  id: 0x2cdf0c56
+  kind: POINTER
+  pointee_type_id: 0x993cd7c7
+}
+pointer_reference {
+  id: 0x2cdf1523
+  kind: POINTER
+  pointee_type_id: 0x993cb213
+}
+pointer_reference {
+  id: 0x2cdf41d9
+  kind: POINTER
+  pointee_type_id: 0x993de1fb
+}
+pointer_reference {
+  id: 0x2cdf5477
+  kind: POINTER
+  pointee_type_id: 0x993db742
+}
+pointer_reference {
+  id: 0x2cdf7f67
+  kind: POINTER
+  pointee_type_id: 0x993d1b03
+}
+pointer_reference {
+  id: 0x2cdf9930
+  kind: POINTER
+  pointee_type_id: 0x993e825c
+}
+pointer_reference {
+  id: 0x2cdfb1cf
+  kind: POINTER
+  pointee_type_id: 0x993e21a1
+}
+pointer_reference {
+  id: 0x2cdfc434
+  kind: POINTER
+  pointee_type_id: 0x993ff64f
+}
+pointer_reference {
+  id: 0x2ce07cab
+  kind: POINTER
+  pointee_type_id: 0x99c11430
+}
+pointer_reference {
+  id: 0x2ce315c4
+  kind: POINTER
+  pointee_type_id: 0x99ccb18c
+}
+pointer_reference {
+  id: 0x2ce4a441
+  kind: POINTER
+  pointee_type_id: 0x99d27798
+}
+pointer_reference {
+  id: 0x2ce4a9f3
+  kind: POINTER
+  pointee_type_id: 0x99d24151
+}
+pointer_reference {
+  id: 0x2ce527ad
+  kind: POINTER
+  pointee_type_id: 0x99d47829
+}
+pointer_reference {
+  id: 0x2ce64f50
+  kind: POINTER
+  pointee_type_id: 0x99d9dbde
+}
+pointer_reference {
+  id: 0x2ce663d9
+  kind: POINTER
+  pointee_type_id: 0x99d969f9
+}
+pointer_reference {
+  id: 0x2ce67932
+  kind: POINTER
+  pointee_type_id: 0x99d90254
+}
+pointer_reference {
+  id: 0x2ce767e3
+  kind: POINTER
+  pointee_type_id: 0x99dd7911
+}
+pointer_reference {
+  id: 0x2ce7bbdc
+  kind: POINTER
+  pointee_type_id: 0x99de09ef
+}
+pointer_reference {
+  id: 0x2ce8041f
+  kind: POINTER
+  pointee_type_id: 0x99e0f6e0
+}
+pointer_reference {
+  id: 0x2ce866aa
+  kind: POINTER
+  pointee_type_id: 0x99e17c37
+}
+pointer_reference {
+  id: 0x2ce982de
+  kind: POINTER
+  pointee_type_id: 0x99e6ede5
+}
+pointer_reference {
+  id: 0x2ce9f40c
+  kind: POINTER
+  pointee_type_id: 0x99e736ad
+}
+pointer_reference {
+  id: 0x2cea8346
+  kind: POINTER
+  pointee_type_id: 0x99eaeb86
+}
+pointer_reference {
+  id: 0x2cea8a63
+  kind: POINTER
+  pointee_type_id: 0x99eacf10
+}
+pointer_reference {
+  id: 0x2ceb7df5
+  kind: POINTER
+  pointee_type_id: 0x99ed1149
+}
+pointer_reference {
+  id: 0x2cec8a4c
+  kind: POINTER
+  pointee_type_id: 0x99f2cfac
+}
+pointer_reference {
+  id: 0x2cecc79b
+  kind: POINTER
+  pointee_type_id: 0x99f3f8f0
+}
+pointer_reference {
+  id: 0x2ced036e
+  kind: POINTER
+  pointee_type_id: 0x99f4eb25
+}
+pointer_reference {
+  id: 0x2ced2dfa
+  kind: POINTER
+  pointee_type_id: 0x99f45176
+}
+pointer_reference {
+  id: 0x2ced3956
+  kind: POINTER
+  pointee_type_id: 0x99f403c5
+}
+pointer_reference {
+  id: 0x2ced6bd4
+  kind: POINTER
+  pointee_type_id: 0x99f549cf
+}
+pointer_reference {
+  id: 0x2ced7c4b
+  kind: POINTER
+  pointee_type_id: 0x99f517b1
+}
+pointer_reference {
+  id: 0x2ced8019
+  kind: POINTER
+  pointee_type_id: 0x99f6e6fb
+}
+pointer_reference {
+  id: 0x2cede4c3
+  kind: POINTER
+  pointee_type_id: 0x99f77593
+}
+pointer_reference {
+  id: 0x2cee149a
+  kind: POINTER
+  pointee_type_id: 0x99f8b4f4
+}
+pointer_reference {
+  id: 0x2cee6908
+  kind: POINTER
+  pointee_type_id: 0x99f942bc
+}
+pointer_reference {
+  id: 0x2cef4a4d
+  kind: POINTER
+  pointee_type_id: 0x99fdcfa9
+}
+pointer_reference {
+  id: 0x2cf01ac3
+  kind: POINTER
+  pointee_type_id: 0x99808d91
+}
+pointer_reference {
+  id: 0x2cf17602
+  kind: POINTER
+  pointee_type_id: 0x99853e95
+}
+pointer_reference {
+  id: 0x2cf26143
+  kind: POINTER
+  pointee_type_id: 0x99896390
+}
+pointer_reference {
+  id: 0x2cf289fa
+  kind: POINTER
+  pointee_type_id: 0x998ac175
+}
+pointer_reference {
+  id: 0x2cf2c077
+  kind: POINTER
+  pointee_type_id: 0x998be740
+}
+pointer_reference {
+  id: 0x2cf3d4c9
+  kind: POINTER
+  pointee_type_id: 0x998fb5b9
+}
+pointer_reference {
+  id: 0x2cf42df1
+  kind: POINTER
+  pointee_type_id: 0x9990515b
+}
+pointer_reference {
+  id: 0x2cf480b7
+  kind: POINTER
+  pointee_type_id: 0x9992e443
+}
+pointer_reference {
+  id: 0x2cf48897
+  kind: POINTER
+  pointee_type_id: 0x9992c4c3
+}
+pointer_reference {
+  id: 0x2cf4b27a
+  kind: POINTER
+  pointee_type_id: 0x99922f74
+}
+pointer_reference {
+  id: 0x2cf602c9
+  kind: POINTER
+  pointee_type_id: 0x9998edbb
+}
+pointer_reference {
+  id: 0x2cf603f0
+  kind: POINTER
+  pointee_type_id: 0x9998e95e
+}
+pointer_reference {
+  id: 0x2cf616a6
+  kind: POINTER
+  pointee_type_id: 0x9998bc04
+}
+pointer_reference {
+  id: 0x2cf6809c
+  kind: POINTER
+  pointee_type_id: 0x999ae4ec
+}
+pointer_reference {
+  id: 0x2cf6d46d
+  kind: POINTER
+  pointee_type_id: 0x999bb728
+}
+pointer_reference {
+  id: 0x2cf84bd1
+  kind: POINTER
+  pointee_type_id: 0x99a1c9da
+}
+pointer_reference {
+  id: 0x2cfae592
+  kind: POINTER
+  pointee_type_id: 0x99ab70d7
+}
+pointer_reference {
+  id: 0x2cfb7c19
+  kind: POINTER
+  pointee_type_id: 0x99ad16f8
+}
+pointer_reference {
+  id: 0x2cfb93fc
+  kind: POINTER
+  pointee_type_id: 0x99aea96e
+}
+pointer_reference {
+  id: 0x2cfc2b94
+  kind: POINTER
+  pointee_type_id: 0x99b048cf
+}
+pointer_reference {
+  id: 0x2cfc36ab
+  kind: POINTER
+  pointee_type_id: 0x99b03c33
+}
+pointer_reference {
+  id: 0x2cfc474d
+  kind: POINTER
+  pointee_type_id: 0x99b1fba8
+}
+pointer_reference {
+  id: 0x2cfc5841
+  kind: POINTER
+  pointee_type_id: 0x99b1879b
+}
+pointer_reference {
+  id: 0x2cfc979f
+  kind: POINTER
+  pointee_type_id: 0x99b2b8e3
+}
+pointer_reference {
+  id: 0x2cfd324f
+  kind: POINTER
+  pointee_type_id: 0x99b42fa2
+}
+pointer_reference {
+  id: 0x2cfdd5a1
+  kind: POINTER
+  pointee_type_id: 0x99b7b018
+}
+pointer_reference {
+  id: 0x2cfde7bd
+  kind: POINTER
+  pointee_type_id: 0x99b7786a
+}
+pointer_reference {
+  id: 0x2cfe0bd5
+  kind: POINTER
+  pointee_type_id: 0x99b8c9c9
+}
+pointer_reference {
+  id: 0x2cfe500b
+  kind: POINTER
+  pointee_type_id: 0x99b9a6b1
+}
+pointer_reference {
+  id: 0x2cff3331
+  kind: POINTER
+  pointee_type_id: 0x99bc2a5b
+}
+pointer_reference {
+  id: 0x2cff36be
+  kind: POINTER
+  pointee_type_id: 0x99bc3c65
+}
+pointer_reference {
+  id: 0x2cff7264
+  kind: POINTER
+  pointee_type_id: 0x99bd2f0c
+}
+pointer_reference {
+  id: 0x2cff9b8f
+  kind: POINTER
+  pointee_type_id: 0x99be88a0
+}
+pointer_reference {
+  id: 0x2d008d0e
+  kind: POINTER
+  pointee_type_id: 0x9e42d2a7
+}
+pointer_reference {
+  id: 0x2d011a2d
+  kind: POINTER
+  pointee_type_id: 0x9e448e2a
+}
+pointer_reference {
+  id: 0x2d0240fc
+  kind: POINTER
+  pointee_type_id: 0x9e49e56e
+}
+pointer_reference {
+  id: 0x2d036f50
+  kind: POINTER
+  pointee_type_id: 0x9e4d5bdd
+}
+pointer_reference {
+  id: 0x2d04a781
+  kind: POINTER
+  pointee_type_id: 0x9e52789b
+}
+pointer_reference {
+  id: 0x2d06e5cd
+  kind: POINTER
+  pointee_type_id: 0x9e5b71a8
+}
+pointer_reference {
+  id: 0x2d076786
+  kind: POINTER
+  pointee_type_id: 0x9e5d7885
+}
+pointer_reference {
+  id: 0x2d078518
+  kind: POINTER
+  pointee_type_id: 0x9e5ef2fc
+}
+pointer_reference {
+  id: 0x2d08a576
+  kind: POINTER
+  pointee_type_id: 0x9e627346
+}
+pointer_reference {
+  id: 0x2d08fece
+  kind: POINTER
+  pointee_type_id: 0x9e631da5
+}
+pointer_reference {
+  id: 0x2d09b62e
+  kind: POINTER
+  pointee_type_id: 0x9e663e24
+}
+pointer_reference {
+  id: 0x2d0b7a8e
+  kind: POINTER
+  pointee_type_id: 0x9e6d0ca6
+}
+pointer_reference {
+  id: 0x2d0cf1ad
+  kind: POINTER
+  pointee_type_id: 0x9e732029
+}
+pointer_reference {
+  id: 0x2d0d996b
+  kind: POINTER
+  pointee_type_id: 0x9e768332
+}
+pointer_reference {
+  id: 0x2d0e5e97
+  kind: POINTER
+  pointee_type_id: 0x9e799cc0
+}
+pointer_reference {
+  id: 0x2d0e725e
+  kind: POINTER
+  pointee_type_id: 0x9e792fe6
+}
+pointer_reference {
+  id: 0x2d0fdd7c
+  kind: POINTER
+  pointee_type_id: 0x9e7f936c
+}
+pointer_reference {
+  id: 0x2d1002b8
+  kind: POINTER
+  pointee_type_id: 0x9e00ec7d
+}
+pointer_reference {
+  id: 0x2d1004bb
+  kind: POINTER
+  pointee_type_id: 0x9e00f472
+}
+pointer_reference {
+  id: 0x2d100adf
+  kind: POINTER
+  pointee_type_id: 0x9e00cde1
+}
+pointer_reference {
+  id: 0x2d100c08
+  kind: POINTER
+  pointee_type_id: 0x9e00d6be
+}
+pointer_reference {
+  id: 0x2d10204b
+  kind: POINTER
+  pointee_type_id: 0x9e0067b1
+}
+pointer_reference {
+  id: 0x2d10a2fa
+  kind: POINTER
+  pointee_type_id: 0x9e026d74
+}
+pointer_reference {
+  id: 0x2d126960
+  kind: POINTER
+  pointee_type_id: 0x9e09431f
+}
+pointer_reference {
+  id: 0x2d1357a0
+  kind: POINTER
+  pointee_type_id: 0x9e0db81f
+}
+pointer_reference {
+  id: 0x2d144db5
+  kind: POINTER
+  pointee_type_id: 0x9e11d049
+}
+pointer_reference {
+  id: 0x2d164af6
+  kind: POINTER
+  pointee_type_id: 0x9e19cd45
+}
+pointer_reference {
+  id: 0x2d1660e0
+  kind: POINTER
+  pointee_type_id: 0x9e19651e
+}
+pointer_reference {
+  id: 0x2d16b2fd
+  kind: POINTER
+  pointee_type_id: 0x9e1a2d6b
+}
+pointer_reference {
+  id: 0x2d174c02
+  kind: POINTER
+  pointee_type_id: 0x9e1dd697
+}
+pointer_reference {
+  id: 0x2d180989
+  kind: POINTER
+  pointee_type_id: 0x9e20c0b8
+}
+pointer_reference {
+  id: 0x2d194ccc
+  kind: POINTER
+  pointee_type_id: 0x9e25d5af
+}
+pointer_reference {
+  id: 0x2d196253
+  kind: POINTER
+  pointee_type_id: 0x9e256fd0
+}
+pointer_reference {
+  id: 0x2d19e791
+  kind: POINTER
+  pointee_type_id: 0x9e2778da
+}
+pointer_reference {
+  id: 0x2d1a07ad
+  kind: POINTER
+  pointee_type_id: 0x9e28f828
+}
+pointer_reference {
+  id: 0x2d1a4a37
+  kind: POINTER
+  pointee_type_id: 0x9e29ce42
+}
+pointer_reference {
+  id: 0x2d1a7e0d
+  kind: POINTER
+  pointee_type_id: 0x9e291eaa
+}
+pointer_reference {
+  id: 0x2d1b205b
+  kind: POINTER
+  pointee_type_id: 0x9e2c67f2
+}
+pointer_reference {
+  id: 0x2d1b3b77
+  kind: POINTER
+  pointee_type_id: 0x9e2c0b42
+}
+pointer_reference {
+  id: 0x2d1b84fa
+  kind: POINTER
+  pointee_type_id: 0x9e2ef574
+}
+pointer_reference {
+  id: 0x2d1c7478
+  kind: POINTER
+  pointee_type_id: 0x9e31377c
+}
+pointer_reference {
+  id: 0x2d1dd165
+  kind: POINTER
+  pointee_type_id: 0x9e37a309
+}
+pointer_reference {
+  id: 0x2d1f457b
+  kind: POINTER
+  pointee_type_id: 0x9e3df373
+}
+pointer_reference {
+  id: 0x2d1f7140
+  kind: POINTER
+  pointee_type_id: 0x9e3d239f
+}
+pointer_reference {
+  id: 0x2d1f7f94
+  kind: POINTER
+  pointee_type_id: 0x9e3d18cf
+}
+pointer_reference {
+  id: 0x2d1ffd36
+  kind: POINTER
+  pointee_type_id: 0x9e3f1247
+}
+pointer_reference {
+  id: 0x2d214d35
+  kind: POINTER
+  pointee_type_id: 0x9ec5d248
+}
+pointer_reference {
+  id: 0x2d21ed4d
+  kind: POINTER
+  pointee_type_id: 0x9ec753a8
+}
+pointer_reference {
+  id: 0x2d222ff1
+  kind: POINTER
+  pointee_type_id: 0x9ec85959
+}
+pointer_reference {
+  id: 0x2d226196
+  kind: POINTER
+  pointee_type_id: 0x9ec960c7
+}
+pointer_reference {
+  id: 0x2d229b41
+  kind: POINTER
+  pointee_type_id: 0x9eca8b9b
+}
+pointer_reference {
+  id: 0x2d232ccd
+  kind: POINTER
+  pointee_type_id: 0x9ecc55aa
+}
+pointer_reference {
+  id: 0x2d237863
+  kind: POINTER
+  pointee_type_id: 0x9ecd0712
+}
+pointer_reference {
+  id: 0x2d23dfc1
+  kind: POINTER
+  pointee_type_id: 0x9ecf9998
+}
+pointer_reference {
+  id: 0x2d23ea40
+  kind: POINTER
+  pointee_type_id: 0x9ecf4f9e
+}
+pointer_reference {
+  id: 0x2d244fcd
+  kind: POINTER
+  pointee_type_id: 0x9ed1d9aa
+}
+pointer_reference {
+  id: 0x2d24593d
+  kind: POINTER
+  pointee_type_id: 0x9ed1826a
+}
+pointer_reference {
+  id: 0x2d254722
+  kind: POINTER
+  pointee_type_id: 0x9ed5fa16
+}
+pointer_reference {
+  id: 0x2d255333
+  kind: POINTER
+  pointee_type_id: 0x9ed5aa51
+}
+pointer_reference {
+  id: 0x2d25997b
+  kind: POINTER
+  pointee_type_id: 0x9ed68372
+}
+pointer_reference {
+  id: 0x2d269d7d
+  kind: POINTER
+  pointee_type_id: 0x9eda9368
+}
+pointer_reference {
+  id: 0x2d271bc7
+  kind: POINTER
+  pointee_type_id: 0x9edc8980
+}
+pointer_reference {
+  id: 0x2d2736e0
+  kind: POINTER
+  pointee_type_id: 0x9edc3d1c
+}
+pointer_reference {
+  id: 0x2d28e8bc
+  kind: POINTER
+  pointee_type_id: 0x9ee3446f
+}
+pointer_reference {
+  id: 0x2d290ab9
+  kind: POINTER
+  pointee_type_id: 0x9ee4cc7b
+}
+pointer_reference {
+  id: 0x2d29646e
+  kind: POINTER
+  pointee_type_id: 0x9ee57725
+}
+pointer_reference {
+  id: 0x2d2980e7
+  kind: POINTER
+  pointee_type_id: 0x9ee6e502
+}
+pointer_reference {
+  id: 0x2d29c3b1
+  kind: POINTER
+  pointee_type_id: 0x9ee7e85b
+}
+pointer_reference {
+  id: 0x2d29d09d
+  kind: POINTER
+  pointee_type_id: 0x9ee7a4e9
+}
+pointer_reference {
+  id: 0x2d2b09a5
+  kind: POINTER
+  pointee_type_id: 0x9eecc00b
+}
+pointer_reference {
+  id: 0x2d2b1c2c
+  kind: POINTER
+  pointee_type_id: 0x9eec962e
+}
+pointer_reference {
+  id: 0x2d2b3bac
+  kind: POINTER
+  pointee_type_id: 0x9eec082c
+}
+pointer_reference {
+  id: 0x2d2b45aa
+  kind: POINTER
+  pointee_type_id: 0x9eedf034
+}
+pointer_reference {
+  id: 0x2d2b5fad
+  kind: POINTER
+  pointee_type_id: 0x9eed9829
+}
+pointer_reference {
+  id: 0x2d2c3400
+  kind: POINTER
+  pointee_type_id: 0x9ef0369c
+}
+pointer_reference {
+  id: 0x2d2c5320
+  kind: POINTER
+  pointee_type_id: 0x9ef1aa1f
+}
+pointer_reference {
+  id: 0x2d2c8ea1
+  kind: POINTER
+  pointee_type_id: 0x9ef2dc18
+}
+pointer_reference {
+  id: 0x2d2c9ff4
+  kind: POINTER
+  pointee_type_id: 0x9ef2994d
+}
+pointer_reference {
+  id: 0x2d2d19a5
+  kind: POINTER
+  pointee_type_id: 0x9ef48009
+}
+pointer_reference {
+  id: 0x2d2e1d2d
+  kind: POINTER
+  pointee_type_id: 0x9ef8922a
+}
+pointer_reference {
+  id: 0x2d2e32aa
+  kind: POINTER
+  pointee_type_id: 0x9ef82c36
+}
+pointer_reference {
+  id: 0x2d2e4d07
+  kind: POINTER
+  pointee_type_id: 0x9ef9d283
+}
+pointer_reference {
+  id: 0x2d2eb8ed
+  kind: POINTER
+  pointee_type_id: 0x9efa0528
+}
+pointer_reference {
+  id: 0x2d2eeaab
+  kind: POINTER
+  pointee_type_id: 0x9efb4c32
+}
+pointer_reference {
+  id: 0x2d2f0f4a
+  kind: POINTER
+  pointee_type_id: 0x9efcdbb6
+}
+pointer_reference {
+  id: 0x2d30dbe4
+  kind: POINTER
+  pointee_type_id: 0x9e83890f
+}
+pointer_reference {
+  id: 0x2d310635
+  kind: POINTER
+  pointee_type_id: 0x9e84fe49
+}
+pointer_reference {
+  id: 0x2d31c182
+  kind: POINTER
+  pointee_type_id: 0x9e87e095
+}
+pointer_reference {
+  id: 0x2d32eaff
+  kind: POINTER
+  pointee_type_id: 0x9e8b4d60
+}
+pointer_reference {
+  id: 0x2d32ee3e
+  kind: POINTER
+  pointee_type_id: 0x9e8b5e66
+}
+pointer_reference {
+  id: 0x2d33cc55
+  kind: POINTER
+  pointee_type_id: 0x9e8fd7cb
+}
+pointer_reference {
+  id: 0x2d3466af
+  kind: POINTER
+  pointee_type_id: 0x9e917c22
+}
+pointer_reference {
+  id: 0x2d3484af
+  kind: POINTER
+  pointee_type_id: 0x9e92f422
+}
+pointer_reference {
+  id: 0x2d351be6
+  kind: POINTER
+  pointee_type_id: 0x9e948905
+}
+pointer_reference {
+  id: 0x2d36a269
+  kind: POINTER
+  pointee_type_id: 0x9e9a6f39
+}
+pointer_reference {
+  id: 0x2d3944dd
+  kind: POINTER
+  pointee_type_id: 0x9ea5f5ea
+}
+pointer_reference {
+  id: 0x2d396b93
+  kind: POINTER
+  pointee_type_id: 0x9ea548d2
+}
+pointer_reference {
+  id: 0x2d3a2624
+  kind: POINTER
+  pointee_type_id: 0x9ea87e0f
+}
+pointer_reference {
+  id: 0x2d3b4fc6
+  kind: POINTER
+  pointee_type_id: 0x9eadd986
+}
+pointer_reference {
+  id: 0x2d3c60b9
+  kind: POINTER
+  pointee_type_id: 0x9eb16478
+}
+pointer_reference {
+  id: 0x2d3dc1f0
+  kind: POINTER
+  pointee_type_id: 0x9eb7e15e
+}
+pointer_reference {
+  id: 0x2d3df092
+  kind: POINTER
+  pointee_type_id: 0x9eb724d7
+}
+pointer_reference {
+  id: 0x2d3f3c92
+  kind: POINTER
+  pointee_type_id: 0x9ebc14d6
+}
+pointer_reference {
+  id: 0x2d3f9ded
+  kind: POINTER
+  pointee_type_id: 0x9ebe912b
+}
+pointer_reference {
+  id: 0x2d3fc2fb
+  kind: POINTER
+  pointee_type_id: 0x9ebfed71
+}
+pointer_reference {
+  id: 0x2d4051be
+  kind: POINTER
+  pointee_type_id: 0x9f41a065
+}
+pointer_reference {
+  id: 0x2d41fdff
+  kind: POINTER
+  pointee_type_id: 0x9f471160
+}
+pointer_reference {
+  id: 0x2d42007e
+  kind: POINTER
+  pointee_type_id: 0x9f48e764
+}
+pointer_reference {
+  id: 0x2d427ca8
+  kind: POINTER
+  pointee_type_id: 0x9f49143f
+}
+pointer_reference {
+  id: 0x2d44d644
+  kind: POINTER
+  pointee_type_id: 0x9f53bf8e
+}
+pointer_reference {
+  id: 0x2d4644f3
+  kind: POINTER
+  pointee_type_id: 0x9f59f553
+}
+pointer_reference {
+  id: 0x2d465828
+  kind: POINTER
+  pointee_type_id: 0x9f59863d
+}
+pointer_reference {
+  id: 0x2d46eb69
+  kind: POINTER
+  pointee_type_id: 0x9f5b4b3a
+}
+pointer_reference {
+  id: 0x2d4717af
+  kind: POINTER
+  pointee_type_id: 0x9f5cb823
+}
+pointer_reference {
+  id: 0x2d47adc9
+  kind: POINTER
+  pointee_type_id: 0x9f5e51ba
+}
+pointer_reference {
+  id: 0x2d47c59a
+  kind: POINTER
+  pointee_type_id: 0x9f5ff0f6
+}
+pointer_reference {
+  id: 0x2d47d08a
+  kind: POINTER
+  pointee_type_id: 0x9f5fa4b7
+}
+pointer_reference {
+  id: 0x2d48c4b4
+  kind: POINTER
+  pointee_type_id: 0x9f63f44d
+}
+pointer_reference {
+  id: 0x2d48ede8
+  kind: POINTER
+  pointee_type_id: 0x9f63513c
+}
+pointer_reference {
+  id: 0x2d490a9d
+  kind: POINTER
+  pointee_type_id: 0x9f64cceb
+}
+pointer_reference {
+  id: 0x2d4915c7
+  kind: POINTER
+  pointee_type_id: 0x9f64b182
+}
+pointer_reference {
+  id: 0x2d496dd4
+  kind: POINTER
+  pointee_type_id: 0x9f6551cf
+}
+pointer_reference {
+  id: 0x2d4aba78
+  kind: POINTER
+  pointee_type_id: 0x9f6a0f7c
+}
+pointer_reference {
+  id: 0x2d4ad411
+  kind: POINTER
+  pointee_type_id: 0x9f6bb6d8
+}
+pointer_reference {
+  id: 0x2d4bbf27
+  kind: POINTER
+  pointee_type_id: 0x9f6e1a01
+}
+pointer_reference {
+  id: 0x2d4be55c
+  kind: POINTER
+  pointee_type_id: 0x9f6f73ed
+}
+pointer_reference {
+  id: 0x2d4eaa35
+  kind: POINTER
+  pointee_type_id: 0x9f7a4e49
+}
+pointer_reference {
+  id: 0x2d4f78f9
+  kind: POINTER
+  pointee_type_id: 0x9f7d0578
+}
+pointer_reference {
+  id: 0x2d4fc86f
+  kind: POINTER
+  pointee_type_id: 0x9f7fc723
+}
+pointer_reference {
+  id: 0x2d50c295
+  kind: POINTER
+  pointee_type_id: 0x9f03ecc8
+}
+pointer_reference {
+  id: 0x2d513578
+  kind: POINTER
+  pointee_type_id: 0x9f04337e
+}
+pointer_reference {
+  id: 0x2d51ec95
+  kind: POINTER
+  pointee_type_id: 0x9f0754c9
+}
+pointer_reference {
+  id: 0x2d53a79e
+  kind: POINTER
+  pointee_type_id: 0x9f0e78e6
+}
+pointer_reference {
+  id: 0x2d54a581
+  kind: POINTER
+  pointee_type_id: 0x9f12709b
+}
+pointer_reference {
+  id: 0x2d555684
+  kind: POINTER
+  pointee_type_id: 0x9f15bc8d
+}
+pointer_reference {
+  id: 0x2d56151a
+  kind: POINTER
+  pointee_type_id: 0x9f18b2f6
+}
+pointer_reference {
+  id: 0x2d574b1d
+  kind: POINTER
+  pointee_type_id: 0x9f1dcaea
+}
+pointer_reference {
+  id: 0x2d59c606
+  kind: POINTER
+  pointee_type_id: 0x9f27fe87
+}
+pointer_reference {
+  id: 0x2d5b56ca
+  kind: POINTER
+  pointee_type_id: 0x9f2dbdb4
+}
+pointer_reference {
+  id: 0x2d5b9ec8
+  kind: POINTER
+  pointee_type_id: 0x9f2e9dbc
+}
+pointer_reference {
+  id: 0x2d5bf24a
+  kind: POINTER
+  pointee_type_id: 0x9f2f2fb7
+}
+pointer_reference {
+  id: 0x2d5d06f7
+  kind: POINTER
+  pointee_type_id: 0x9f34fd43
+}
+pointer_reference {
+  id: 0x2d5e3e76
+  kind: POINTER
+  pointee_type_id: 0x9f381f44
+}
+pointer_reference {
+  id: 0x2d5e4b40
+  kind: POINTER
+  pointee_type_id: 0x9f39cb9e
+}
+pointer_reference {
+  id: 0x2d5f468e
+  kind: POINTER
+  pointee_type_id: 0x9f3dfca4
+}
+pointer_reference {
+  id: 0x2d5f78ff
+  kind: POINTER
+  pointee_type_id: 0x9f3d0562
+}
+pointer_reference {
+  id: 0x2d5f9fa6
+  kind: POINTER
+  pointee_type_id: 0x9f3e9807
+}
+pointer_reference {
+  id: 0x2d5faaca
+  kind: POINTER
+  pointee_type_id: 0x9f3e4db7
+}
+pointer_reference {
+  id: 0x2d60a5cb
+  kind: POINTER
+  pointee_type_id: 0x9fc271b0
+}
+pointer_reference {
+  id: 0x2d61443f
+  kind: POINTER
+  pointee_type_id: 0x9fc5f660
+}
+pointer_reference {
+  id: 0x2d615105
+  kind: POINTER
+  pointee_type_id: 0x9fc5a289
+}
+pointer_reference {
+  id: 0x2d620fe2
+  kind: POINTER
+  pointee_type_id: 0x9fc8d916
+}
+pointer_reference {
+  id: 0x2d62401c
+  kind: POINTER
+  pointee_type_id: 0x9fc9e6ec
+}
+pointer_reference {
+  id: 0x2d62ee59
+  kind: POINTER
+  pointee_type_id: 0x9fcb5ff8
+}
+pointer_reference {
+  id: 0x2d630d01
+  kind: POINTER
+  pointee_type_id: 0x9fccd299
+}
+pointer_reference {
+  id: 0x2d63aa98
+  kind: POINTER
+  pointee_type_id: 0x9fce4cfe
+}
+pointer_reference {
+  id: 0x2d63ca24
+  kind: POINTER
+  pointee_type_id: 0x9fcfce0d
+}
+pointer_reference {
+  id: 0x2d63ff5b
+  kind: POINTER
+  pointee_type_id: 0x9fcf1bf3
+}
+pointer_reference {
+  id: 0x2d6426a8
+  kind: POINTER
+  pointee_type_id: 0x9fd07c3f
+}
+pointer_reference {
+  id: 0x2d645065
+  kind: POINTER
+  pointee_type_id: 0x9fd1a709
+}
+pointer_reference {
+  id: 0x2d646f41
+  kind: POINTER
+  pointee_type_id: 0x9fd15b99
+}
+pointer_reference {
+  id: 0x2d65237b
+  kind: POINTER
+  pointee_type_id: 0x9fd46b71
+}
+pointer_reference {
+  id: 0x2d65db46
+  kind: POINTER
+  pointee_type_id: 0x9fd78b86
+}
+pointer_reference {
+  id: 0x2d6627db
+  kind: POINTER
+  pointee_type_id: 0x9fd879f0
+}
+pointer_reference {
+  id: 0x2d664268
+  kind: POINTER
+  pointee_type_id: 0x9fd9ef3d
+}
+pointer_reference {
+  id: 0x2d66740a
+  kind: POINTER
+  pointee_type_id: 0x9fd936b6
+}
+pointer_reference {
+  id: 0x2d66bab9
+  kind: POINTER
+  pointee_type_id: 0x9fda0c79
+}
+pointer_reference {
+  id: 0x2d66cc37
+  kind: POINTER
+  pointee_type_id: 0x9fdbd641
+}
+pointer_reference {
+  id: 0x2d66d7c6
+  kind: POINTER
+  pointee_type_id: 0x9fdbb984
+}
+pointer_reference {
+  id: 0x2d6793d4
+  kind: POINTER
+  pointee_type_id: 0x9fdea9ce
+}
+pointer_reference {
+  id: 0x2d684c21
+  kind: POINTER
+  pointee_type_id: 0x9fe1d618
+}
+pointer_reference {
+  id: 0x2d69b3f9
+  kind: POINTER
+  pointee_type_id: 0x9fe6297b
+}
+pointer_reference {
+  id: 0x2d6a829d
+  kind: POINTER
+  pointee_type_id: 0x9feaece8
+}
+pointer_reference {
+  id: 0x2d6afa47
+  kind: POINTER
+  pointee_type_id: 0x9feb0f83
+}
+pointer_reference {
+  id: 0x2d6bb6d0
+  kind: POINTER
+  pointee_type_id: 0x9fee3ddf
+}
+pointer_reference {
+  id: 0x2d6bc861
+  kind: POINTER
+  pointee_type_id: 0x9fefc71b
+}
+pointer_reference {
+  id: 0x2d6e0972
+  kind: POINTER
+  pointee_type_id: 0x9ff8c355
+}
+pointer_reference {
+  id: 0x2d6e202e
+  kind: POINTER
+  pointee_type_id: 0x9ff86624
+}
+pointer_reference {
+  id: 0x2d6eb754
+  kind: POINTER
+  pointee_type_id: 0x9ffa3bcc
+}
+pointer_reference {
+  id: 0x2d701266
+  kind: POINTER
+  pointee_type_id: 0x9f80af06
+}
+pointer_reference {
+  id: 0x2d701a82
+  kind: POINTER
+  pointee_type_id: 0x9f808c95
+}
+pointer_reference {
+  id: 0x2d701caf
+  kind: POINTER
+  pointee_type_id: 0x9f809421
+}
+pointer_reference {
+  id: 0x2d715b45
+  kind: POINTER
+  pointee_type_id: 0x9f858b89
+}
+pointer_reference {
+  id: 0x2d71d7a2
+  kind: POINTER
+  pointee_type_id: 0x9f87b817
+}
+pointer_reference {
+  id: 0x2d7549b3
+  kind: POINTER
+  pointee_type_id: 0x9f95c053
+}
+pointer_reference {
+  id: 0x2d75c4b5
+  kind: POINTER
+  pointee_type_id: 0x9f97f44a
+}
+pointer_reference {
+  id: 0x2d767327
+  kind: POINTER
+  pointee_type_id: 0x9f992a00
+}
+pointer_reference {
+  id: 0x2d76854c
+  kind: POINTER
+  pointee_type_id: 0x9f9af3ae
+}
+pointer_reference {
+  id: 0x2d771732
+  kind: POINTER
+  pointee_type_id: 0x9f9cba56
+}
+pointer_reference {
+  id: 0x2d775d88
+  kind: POINTER
+  pointee_type_id: 0x9f9d90bf
+}
+pointer_reference {
+  id: 0x2d7870f7
+  kind: POINTER
+  pointee_type_id: 0x9fa12542
+}
+pointer_reference {
+  id: 0x2d78d46f
+  kind: POINTER
+  pointee_type_id: 0x9fa3b723
+}
+pointer_reference {
+  id: 0x2d797d9d
+  kind: POINTER
+  pointee_type_id: 0x9fa510e8
+}
+pointer_reference {
+  id: 0x2d797f87
+  kind: POINTER
+  pointee_type_id: 0x9fa51880
+}
+pointer_reference {
+  id: 0x2d7ae3a5
+  kind: POINTER
+  pointee_type_id: 0x9fab680a
+}
+pointer_reference {
+  id: 0x2d7b3248
+  kind: POINTER
+  pointee_type_id: 0x9fac2fbc
+}
+pointer_reference {
+  id: 0x2d7be27a
+  kind: POINTER
+  pointee_type_id: 0x9faf6f77
+}
+pointer_reference {
+  id: 0x2d7c118b
+  kind: POINTER
+  pointee_type_id: 0x9fb0a0b3
+}
+pointer_reference {
+  id: 0x2d7c4530
+  kind: POINTER
+  pointee_type_id: 0x9fb1f25d
+}
+pointer_reference {
+  id: 0x2d7c4e7c
+  kind: POINTER
+  pointee_type_id: 0x9fb1df6d
+}
+pointer_reference {
+  id: 0x2d7c4ebb
+  kind: POINTER
+  pointee_type_id: 0x9fb1dc71
+}
+pointer_reference {
+  id: 0x2d7ca4c3
+  kind: POINTER
+  pointee_type_id: 0x9fb27590
+}
+pointer_reference {
+  id: 0x2d7cd0a0
+  kind: POINTER
+  pointee_type_id: 0x9fb3a41e
+}
+pointer_reference {
+  id: 0x2d7d9cfc
+  kind: POINTER
+  pointee_type_id: 0x9fb6956c
+}
+pointer_reference {
+  id: 0x2d7ddef8
+  kind: POINTER
+  pointee_type_id: 0x9fb79d7e
+}
+pointer_reference {
+  id: 0x2d7dea63
+  kind: POINTER
+  pointee_type_id: 0x9fb74f10
+}
+pointer_reference {
+  id: 0x2d7e08ba
+  kind: POINTER
+  pointee_type_id: 0x9fb8c474
+}
+pointer_reference {
+  id: 0x2d7e9462
+  kind: POINTER
+  pointee_type_id: 0x9fbab717
+}
+pointer_reference {
+  id: 0x2d7ea466
+  kind: POINTER
+  pointee_type_id: 0x9fba7706
+}
+pointer_reference {
+  id: 0x2d816bb9
+  kind: POINTER
+  pointee_type_id: 0x9c454878
+}
+pointer_reference {
+  id: 0x2d8185ba
+  kind: POINTER
+  pointee_type_id: 0x9c46f075
+}
+pointer_reference {
+  id: 0x2d828440
+  kind: POINTER
+  pointee_type_id: 0x9c4af79e
+}
+pointer_reference {
+  id: 0x2d82cfe3
+  kind: POINTER
+  pointee_type_id: 0x9c4bd910
+}
+pointer_reference {
+  id: 0x2d834d74
+  kind: POINTER
+  pointee_type_id: 0x9c4dd34d
+}
+pointer_reference {
+  id: 0x2d845a47
+  kind: POINTER
+  pointee_type_id: 0x9c518f81
+}
+pointer_reference {
+  id: 0x2d847a7b
+  kind: POINTER
+  pointee_type_id: 0x9c510f73
+}
+pointer_reference {
+  id: 0x2d883003
+  kind: POINTER
+  pointee_type_id: 0x9c602690
+}
+pointer_reference {
+  id: 0x2d883419
+  kind: POINTER
+  pointee_type_id: 0x9c6036fa
+}
+pointer_reference {
+  id: 0x2d89ba82
+  kind: POINTER
+  pointee_type_id: 0x9c660c95
+}
+pointer_reference {
+  id: 0x2d8a4341
+  kind: POINTER
+  pointee_type_id: 0x9c69eb9b
+}
+pointer_reference {
+  id: 0x2d8abcdd
+  kind: POINTER
+  pointee_type_id: 0x9c6a15ea
+}
+pointer_reference {
+  id: 0x2d8abd6e
+  kind: POINTER
+  pointee_type_id: 0x9c6a1325
+}
+pointer_reference {
+  id: 0x2d8ac69c
+  kind: POINTER
+  pointee_type_id: 0x9c6bfced
+}
+pointer_reference {
+  id: 0x2d8b2731
+  kind: POINTER
+  pointee_type_id: 0x9c6c7a58
+}
+pointer_reference {
+  id: 0x2d8b2de8
+  kind: POINTER
+  pointee_type_id: 0x9c6c513c
+}
+pointer_reference {
+  id: 0x2d8b6549
+  kind: POINTER
+  pointee_type_id: 0x9c6d73ba
+}
+pointer_reference {
+  id: 0x2d8b7bcb
+  kind: POINTER
+  pointee_type_id: 0x9c6d09b1
+}
+pointer_reference {
+  id: 0x2d8c500f
+  kind: POINTER
+  pointee_type_id: 0x9c71a6a0
+}
+pointer_reference {
+  id: 0x2d8ced22
+  kind: POINTER
+  pointee_type_id: 0x9c735216
+}
+pointer_reference {
+  id: 0x2d8e7d63
+  kind: POINTER
+  pointee_type_id: 0x9c791312
+}
+pointer_reference {
+  id: 0x2d8ec3ec
+  kind: POINTER
+  pointee_type_id: 0x9c7be92f
+}
+pointer_reference {
+  id: 0x2d8ee262
+  kind: POINTER
+  pointee_type_id: 0x9c7b6f16
+}
+pointer_reference {
+  id: 0x2d8f2b98
+  kind: POINTER
+  pointee_type_id: 0x9c7c48fd
+}
+pointer_reference {
+  id: 0x2d8f671b
+  kind: POINTER
+  pointee_type_id: 0x9c7d7af2
+}
+pointer_reference {
+  id: 0x2d8fdd2c
+  kind: POINTER
+  pointee_type_id: 0x9c7f922c
+}
+pointer_reference {
+  id: 0x2d900b9c
+  kind: POINTER
+  pointee_type_id: 0x9c00c8ec
+}
+pointer_reference {
+  id: 0x2d90ce2d
+  kind: POINTER
+  pointee_type_id: 0x9c03de2b
+}
+pointer_reference {
+  id: 0x2d933cca
+  kind: POINTER
+  pointee_type_id: 0x9c0c15b5
+}
+pointer_reference {
+  id: 0x2d9457a5
+  kind: POINTER
+  pointee_type_id: 0x9c11b809
+}
+pointer_reference {
+  id: 0x2d95659b
+  kind: POINTER
+  pointee_type_id: 0x9c1570f2
+}
+pointer_reference {
+  id: 0x2d957119
+  kind: POINTER
+  pointee_type_id: 0x9c1522fa
+}
+pointer_reference {
+  id: 0x2d95a459
+  kind: POINTER
+  pointee_type_id: 0x9c1677f9
+}
+pointer_reference {
+  id: 0x2d95c24c
+  kind: POINTER
+  pointee_type_id: 0x9c17efac
+}
+pointer_reference {
+  id: 0x2d95d9be
+  kind: POINTER
+  pointee_type_id: 0x9c178065
+}
+pointer_reference {
+  id: 0x2d963c99
+  kind: POINTER
+  pointee_type_id: 0x9c1814f8
+}
+pointer_reference {
+  id: 0x2d96b65e
+  kind: POINTER
+  pointee_type_id: 0x9c1a3fe6
+}
+pointer_reference {
+  id: 0x2d9737d2
+  kind: POINTER
+  pointee_type_id: 0x9c1c39d4
+}
+pointer_reference {
+  id: 0x2d976e39
+  kind: POINTER
+  pointee_type_id: 0x9c1d5e78
+}
+pointer_reference {
+  id: 0x2d99009f
+  kind: POINTER
+  pointee_type_id: 0x9c24e4e1
+}
+pointer_reference {
+  id: 0x2d9ade31
+  kind: POINTER
+  pointee_type_id: 0x9c2b9e5b
+}
+pointer_reference {
+  id: 0x2d9af8f5
+  kind: POINTER
+  pointee_type_id: 0x9c2b054b
+}
+pointer_reference {
+  id: 0x2d9b0dd0
+  kind: POINTER
+  pointee_type_id: 0x9c2cd1de
+}
+pointer_reference {
+  id: 0x2d9b3898
+  kind: POINTER
+  pointee_type_id: 0x9c2c04fd
+}
+pointer_reference {
+  id: 0x2d9b5866
+  kind: POINTER
+  pointee_type_id: 0x9c2d8704
+}
+pointer_reference {
+  id: 0x2d9d49f8
+  kind: POINTER
+  pointee_type_id: 0x9c35c17d
+}
+pointer_reference {
+  id: 0x2d9f80d6
+  kind: POINTER
+  pointee_type_id: 0x9c3ee5c7
+}
+pointer_reference {
+  id: 0x2da0c3ca
+  kind: POINTER
+  pointee_type_id: 0x9cc3e9b6
+}
+pointer_reference {
+  id: 0x2da22ee3
+  kind: POINTER
+  pointee_type_id: 0x9cc85d11
+}
+pointer_reference {
+  id: 0x2da28064
+  kind: POINTER
+  pointee_type_id: 0x9ccae70d
+}
+pointer_reference {
+  id: 0x2da2b44e
+  kind: POINTER
+  pointee_type_id: 0x9cca37a5
+}
+pointer_reference {
+  id: 0x2da2bcc0
+  kind: POINTER
+  pointee_type_id: 0x9cca159d
+}
+pointer_reference {
+  id: 0x2da2fbac
+  kind: POINTER
+  pointee_type_id: 0x9ccb082f
+}
+pointer_reference {
+  id: 0x2da3a535
+  kind: POINTER
+  pointee_type_id: 0x9cce7248
+}
+pointer_reference {
+  id: 0x2da3cc79
+  kind: POINTER
+  pointee_type_id: 0x9ccfd77b
+}
+pointer_reference {
+  id: 0x2da3e1a0
+  kind: POINTER
+  pointee_type_id: 0x9ccf601f
+}
+pointer_reference {
+  id: 0x2da42901
+  kind: POINTER
+  pointee_type_id: 0x9cd04299
+}
+pointer_reference {
+  id: 0x2da469fc
+  kind: POINTER
+  pointee_type_id: 0x9cd1416e
+}
+pointer_reference {
+  id: 0x2da4a204
+  kind: POINTER
+  pointee_type_id: 0x9cd26e8d
+}
+pointer_reference {
+  id: 0x2da4f7fd
+  kind: POINTER
+  pointee_type_id: 0x9cd33969
+}
+pointer_reference {
+  id: 0x2da59bbd
+  kind: POINTER
+  pointee_type_id: 0x9cd6886b
+}
+pointer_reference {
+  id: 0x2da5a6af
+  kind: POINTER
+  pointee_type_id: 0x9cd67c20
+}
+pointer_reference {
+  id: 0x2da631b6
+  kind: POINTER
+  pointee_type_id: 0x9cd82046
+}
+pointer_reference {
+  id: 0x2da6ce0c
+  kind: POINTER
+  pointee_type_id: 0x9cdbdeaf
+}
+pointer_reference {
+  id: 0x2da7a75a
+  kind: POINTER
+  pointee_type_id: 0x9cde7bf7
+}
+pointer_reference {
+  id: 0x2da83e0f
+  kind: POINTER
+  pointee_type_id: 0x9ce01ea2
+}
+pointer_reference {
+  id: 0x2da8853f
+  kind: POINTER
+  pointee_type_id: 0x9ce2f262
+}
+pointer_reference {
+  id: 0x2da8a40a
+  kind: POINTER
+  pointee_type_id: 0x9ce276b7
+}
+pointer_reference {
+  id: 0x2da928f1
+  kind: POINTER
+  pointee_type_id: 0x9ce4455a
+}
+pointer_reference {
+  id: 0x2da94cfa
+  kind: POINTER
+  pointee_type_id: 0x9ce5d577
+}
+pointer_reference {
+  id: 0x2da9c5ad
+  kind: POINTER
+  pointee_type_id: 0x9ce7f02a
+}
+pointer_reference {
+  id: 0x2da9de5f
+  kind: POINTER
+  pointee_type_id: 0x9ce79fe2
+}
+pointer_reference {
+  id: 0x2daa7e80
+  kind: POINTER
+  pointee_type_id: 0x9ce91c9d
+}
+pointer_reference {
+  id: 0x2daa8706
+  kind: POINTER
+  pointee_type_id: 0x9ceafa84
+}
+pointer_reference {
+  id: 0x2daab788
+  kind: POINTER
+  pointee_type_id: 0x9cea38bd
+}
+pointer_reference {
+  id: 0x2dab4556
+  kind: POINTER
+  pointee_type_id: 0x9cedf3c4
+}
+pointer_reference {
+  id: 0x2dabc2a7
+  kind: POINTER
+  pointee_type_id: 0x9cefec01
+}
+pointer_reference {
+  id: 0x2dac2b50
+  kind: POINTER
+  pointee_type_id: 0x9cf04bdd
+}
+pointer_reference {
+  id: 0x2dac6659
+  kind: POINTER
+  pointee_type_id: 0x9cf17ffb
+}
+pointer_reference {
+  id: 0x2dacda34
+  kind: POINTER
+  pointee_type_id: 0x9cf38e4c
+}
+pointer_reference {
+  id: 0x2dace37d
+  kind: POINTER
+  pointee_type_id: 0x9cf36b6a
+}
+pointer_reference {
+  id: 0x2dad193a
+  kind: POINTER
+  pointee_type_id: 0x9cf48276
+}
+pointer_reference {
+  id: 0x2dae560d
+  kind: POINTER
+  pointee_type_id: 0x9cf9beaa
+}
+pointer_reference {
+  id: 0x2db06a79
+  kind: POINTER
+  pointee_type_id: 0x9c814f78
+}
+pointer_reference {
+  id: 0x2db0f133
+  kind: POINTER
+  pointee_type_id: 0x9c832251
+}
+pointer_reference {
+  id: 0x2db10b11
+  kind: POINTER
+  pointee_type_id: 0x9c84cad9
+}
+pointer_reference {
+  id: 0x2db2376c
+  kind: POINTER
+  pointee_type_id: 0x9c883b2c
+}
+pointer_reference {
+  id: 0x2db26b70
+  kind: POINTER
+  pointee_type_id: 0x9c894b5c
+}
+pointer_reference {
+  id: 0x2db325ff
+  kind: POINTER
+  pointee_type_id: 0x9c8c7161
+}
+pointer_reference {
+  id: 0x2db37f37
+  kind: POINTER
+  pointee_type_id: 0x9c8d1a40
+}
+pointer_reference {
+  id: 0x2db71389
+  kind: POINTER
+  pointee_type_id: 0x9c9ca8bb
+}
+pointer_reference {
+  id: 0x2db72cae
+  kind: POINTER
+  pointee_type_id: 0x9c9c5425
+}
+pointer_reference {
+  id: 0x2db75163
+  kind: POINTER
+  pointee_type_id: 0x9c9da313
+}
+pointer_reference {
+  id: 0x2db82df0
+  kind: POINTER
+  pointee_type_id: 0x9ca0515d
+}
+pointer_reference {
+  id: 0x2db834f5
+  kind: POINTER
+  pointee_type_id: 0x9ca03549
+}
+pointer_reference {
+  id: 0x2db85d20
+  kind: POINTER
+  pointee_type_id: 0x9ca1921c
+}
+pointer_reference {
+  id: 0x2db8af94
+  kind: POINTER
+  pointee_type_id: 0x9ca258ce
+}
+pointer_reference {
+  id: 0x2db8f717
+  kind: POINTER
+  pointee_type_id: 0x9ca33ac1
+}
+pointer_reference {
+  id: 0x2db90ad8
+  kind: POINTER
+  pointee_type_id: 0x9ca4cdfd
+}
+pointer_reference {
+  id: 0x2db9a683
+  kind: POINTER
+  pointee_type_id: 0x9ca67c93
+}
+pointer_reference {
+  id: 0x2db9b3cf
+  kind: POINTER
+  pointee_type_id: 0x9ca629a0
+}
+pointer_reference {
+  id: 0x2dba3465
+  kind: POINTER
+  pointee_type_id: 0x9ca83708
+}
+pointer_reference {
+  id: 0x2dbae528
+  kind: POINTER
+  pointee_type_id: 0x9cab723c
+}
+pointer_reference {
+  id: 0x2dbc34c4
+  kind: POINTER
+  pointee_type_id: 0x9cb0358f
+}
+pointer_reference {
+  id: 0x2dbd49c7
+  kind: POINTER
+  pointee_type_id: 0x9cb5c182
+}
+pointer_reference {
+  id: 0x2dbdca1b
+  kind: POINTER
+  pointee_type_id: 0x9cb7cef1
+}
+pointer_reference {
+  id: 0x2dbdd7fc
+  kind: POINTER
+  pointee_type_id: 0x9cb7b96f
+}
+pointer_reference {
+  id: 0x2dbdf774
+  kind: POINTER
+  pointee_type_id: 0x9cb73b4e
+}
+pointer_reference {
+  id: 0x2dbed6d8
+  kind: POINTER
+  pointee_type_id: 0x9cbbbdfe
+}
+pointer_reference {
+  id: 0x2dbefbf2
+  kind: POINTER
+  pointee_type_id: 0x9cbb0956
+}
+pointer_reference {
+  id: 0x2dbf7b0c
+  kind: POINTER
+  pointee_type_id: 0x9cbd0aac
+}
+pointer_reference {
+  id: 0x2dc013c2
+  kind: POINTER
+  pointee_type_id: 0x9d40a997
+}
+pointer_reference {
+  id: 0x2dc04aa1
+  kind: POINTER
+  pointee_type_id: 0x9d41cc1a
+}
+pointer_reference {
+  id: 0x2dc1540f
+  kind: POINTER
+  pointee_type_id: 0x9d45b6a2
+}
+pointer_reference {
+  id: 0x2dc1e409
+  kind: POINTER
+  pointee_type_id: 0x9d4776b9
+}
+pointer_reference {
+  id: 0x2dc1eedf
+  kind: POINTER
+  pointee_type_id: 0x9d475de3
+}
+pointer_reference {
+  id: 0x2dc23571
+  kind: POINTER
+  pointee_type_id: 0x9d483358
+}
+pointer_reference {
+  id: 0x2dc27cc9
+  kind: POINTER
+  pointee_type_id: 0x9d4915b9
+}
+pointer_reference {
+  id: 0x2dc2cfb0
+  kind: POINTER
+  pointee_type_id: 0x9d4bd85c
+}
+pointer_reference {
+  id: 0x2dc2fdbe
+  kind: POINTER
+  pointee_type_id: 0x9d4b1066
+}
+pointer_reference {
+  id: 0x2dc33a95
+  kind: POINTER
+  pointee_type_id: 0x9d4c0cca
+}
+pointer_reference {
+  id: 0x2dc3988e
+  kind: POINTER
+  pointee_type_id: 0x9d4e84a4
+}
+pointer_reference {
+  id: 0x2dc3a972
+  kind: POINTER
+  pointee_type_id: 0x9d4e4357
+}
+pointer_reference {
+  id: 0x2dc3dd18
+  kind: POINTER
+  pointee_type_id: 0x9d4f92fc
+}
+pointer_reference {
+  id: 0x2dc3e8af
+  kind: POINTER
+  pointee_type_id: 0x9d4f4423
+}
+pointer_reference {
+  id: 0x2dc5db7f
+  kind: POINTER
+  pointee_type_id: 0x9d578b63
+}
+pointer_reference {
+  id: 0x2dc68f01
+  kind: POINTER
+  pointee_type_id: 0x9d5ada98
+}
+pointer_reference {
+  id: 0x2dc9cc30
+  kind: POINTER
+  pointee_type_id: 0x9d67d65f
+}
+pointer_reference {
+  id: 0x2dcb0b83
+  kind: POINTER
+  pointee_type_id: 0x9d6cc891
+}
+pointer_reference {
+  id: 0x2dcc74e8
+  kind: POINTER
+  pointee_type_id: 0x9d71353d
+}
+pointer_reference {
+  id: 0x2dccb849
+  kind: POINTER
+  pointee_type_id: 0x9d7207b9
+}
+pointer_reference {
+  id: 0x2dcd339f
+  kind: POINTER
+  pointee_type_id: 0x9d7428e0
+}
+pointer_reference {
+  id: 0x2dcd7de4
+  kind: POINTER
+  pointee_type_id: 0x9d75110e
+}
+pointer_reference {
+  id: 0x2dcd9764
+  kind: POINTER
+  pointee_type_id: 0x9d76bb0d
+}
+pointer_reference {
+  id: 0x2dcdf414
+  kind: POINTER
+  pointee_type_id: 0x9d7736cf
+}
+pointer_reference {
+  id: 0x2dcdf853
+  kind: POINTER
+  pointee_type_id: 0x9d7707d1
+}
+pointer_reference {
+  id: 0x2dcf4a13
+  kind: POINTER
+  pointee_type_id: 0x9d7dced1
+}
+pointer_reference {
+  id: 0x2dcf71aa
+  kind: POINTER
+  pointee_type_id: 0x9d7d2035
+}
+pointer_reference {
+  id: 0x2dd03fae
+  kind: POINTER
+  pointee_type_id: 0x9d001826
+}
+pointer_reference {
+  id: 0x2dd0b9c3
+  kind: POINTER
+  pointee_type_id: 0x9d020190
+}
+pointer_reference {
+  id: 0x2dd11a2c
+  kind: POINTER
+  pointee_type_id: 0x9d048e2e
+}
+pointer_reference {
+  id: 0x2dd156ff
+  kind: POINTER
+  pointee_type_id: 0x9d05bd62
+}
+pointer_reference {
+  id: 0x2dd3995b
+  kind: POINTER
+  pointee_type_id: 0x9d0e83f2
+}
+pointer_reference {
+  id: 0x2dd3a74c
+  kind: POINTER
+  pointee_type_id: 0x9d0e7bae
+}
+pointer_reference {
+  id: 0x2dd3c39a
+  kind: POINTER
+  pointee_type_id: 0x9d0fe8f6
+}
+pointer_reference {
+  id: 0x2dd3eb1c
+  kind: POINTER
+  pointee_type_id: 0x9d0f4aee
+}
+pointer_reference {
+  id: 0x2dd439ad
+  kind: POINTER
+  pointee_type_id: 0x9d100029
+}
+pointer_reference {
+  id: 0x2dd44e42
+  kind: POINTER
+  pointee_type_id: 0x9d11df94
+}
+pointer_reference {
+  id: 0x2dd4892b
+  kind: POINTER
+  pointee_type_id: 0x9d12c230
+}
+pointer_reference {
+  id: 0x2dd54b4b
+  kind: POINTER
+  pointee_type_id: 0x9d15cbb3
+}
+pointer_reference {
+  id: 0x2dd570e6
+  kind: POINTER
+  pointee_type_id: 0x9d152505
+}
+pointer_reference {
+  id: 0x2dd58efa
+  kind: POINTER
+  pointee_type_id: 0x9d16dd74
+}
+pointer_reference {
+  id: 0x2dd6097a
+  kind: POINTER
+  pointee_type_id: 0x9d18c376
+}
+pointer_reference {
+  id: 0x2dd6440a
+  kind: POINTER
+  pointee_type_id: 0x9d19f6b6
+}
+pointer_reference {
+  id: 0x2dd65dd5
+  kind: POINTER
+  pointee_type_id: 0x9d1991c8
+}
+pointer_reference {
+  id: 0x2dd67f29
+  kind: POINTER
+  pointee_type_id: 0x9d191a3a
+}
+pointer_reference {
+  id: 0x2dd7683e
+  kind: POINTER
+  pointee_type_id: 0x9d1d4664
+}
+pointer_reference {
+  id: 0x2dd76e4f
+  kind: POINTER
+  pointee_type_id: 0x9d1d5fa3
+}
+pointer_reference {
+  id: 0x2dd7cacf
+  kind: POINTER
+  pointee_type_id: 0x9d1fcda3
+}
+pointer_reference {
+  id: 0x2dd8ba7a
+  kind: POINTER
+  pointee_type_id: 0x9d220f74
+}
+pointer_reference {
+  id: 0x2dd94973
+  kind: POINTER
+  pointee_type_id: 0x9d25c351
+}
+pointer_reference {
+  id: 0x2dd9a3d6
+  kind: POINTER
+  pointee_type_id: 0x9d2669c7
+}
+pointer_reference {
+  id: 0x2dd9b35c
+  kind: POINTER
+  pointee_type_id: 0x9d262bee
+}
+pointer_reference {
+  id: 0x2dd9d6a6
+  kind: POINTER
+  pointee_type_id: 0x9d27bc05
+}
+pointer_reference {
+  id: 0x2ddb3c91
+  kind: POINTER
+  pointee_type_id: 0x9d2c14da
+}
+pointer_reference {
+  id: 0x2ddb8bbd
+  kind: POINTER
+  pointee_type_id: 0x9d2ec868
+}
+pointer_reference {
+  id: 0x2ddc072f
+  kind: POINTER
+  pointee_type_id: 0x9d30fa23
+}
+pointer_reference {
+  id: 0x2ddc3b19
+  kind: POINTER
+  pointee_type_id: 0x9d300afb
+}
+pointer_reference {
+  id: 0x2ddc85f9
+  kind: POINTER
+  pointee_type_id: 0x9d32f179
+}
+pointer_reference {
+  id: 0x2ddda601
+  kind: POINTER
+  pointee_type_id: 0x9d367e98
+}
+pointer_reference {
+  id: 0x2dde023d
+  kind: POINTER
+  pointee_type_id: 0x9d38ee69
+}
+pointer_reference {
+  id: 0x2dde5a86
+  kind: POINTER
+  pointee_type_id: 0x9d398c85
+}
+pointer_reference {
+  id: 0x2dde8ffd
+  kind: POINTER
+  pointee_type_id: 0x9d3ad96b
+}
+pointer_reference {
+  id: 0x2dded119
+  kind: POINTER
+  pointee_type_id: 0x9d3ba2fa
+}
+pointer_reference {
+  id: 0x2ddee198
+  kind: POINTER
+  pointee_type_id: 0x9d3b60fc
+}
+pointer_reference {
+  id: 0x2ddef933
+  kind: POINTER
+  pointee_type_id: 0x9d3b0250
+}
+pointer_reference {
+  id: 0x2ddf4eb6
+  kind: POINTER
+  pointee_type_id: 0x9d3ddc46
+}
+pointer_reference {
+  id: 0x2ddf5318
+  kind: POINTER
+  pointee_type_id: 0x9d3daafc
+}
+pointer_reference {
+  id: 0x2ddf78be
+  kind: POINTER
+  pointee_type_id: 0x9d3d0467
+}
+pointer_reference {
+  id: 0x2ddfa3bd
+  kind: POINTER
+  pointee_type_id: 0x9d3e6869
+}
+pointer_reference {
+  id: 0x2de01d44
+  kind: POINTER
+  pointee_type_id: 0x9dc0938f
+}
+pointer_reference {
+  id: 0x2de07a68
+  kind: POINTER
+  pointee_type_id: 0x9dc10f3e
+}
+pointer_reference {
+  id: 0x2de090d3
+  kind: POINTER
+  pointee_type_id: 0x9dc2a5d0
+}
+pointer_reference {
+  id: 0x2de1113a
+  kind: POINTER
+  pointee_type_id: 0x9dc4a276
+}
+pointer_reference {
+  id: 0x2de16a22
+  kind: POINTER
+  pointee_type_id: 0x9dc54e14
+}
+pointer_reference {
+  id: 0x2de17471
+  kind: POINTER
+  pointee_type_id: 0x9dc5375b
+}
+pointer_reference {
+  id: 0x2de1d645
+  kind: POINTER
+  pointee_type_id: 0x9dc7bf88
+}
+pointer_reference {
+  id: 0x2de1dbe2
+  kind: POINTER
+  pointee_type_id: 0x9dc78915
+}
+pointer_reference {
+  id: 0x2de1ef0b
+  kind: POINTER
+  pointee_type_id: 0x9dc75ab3
+}
+pointer_reference {
+  id: 0x2de218bf
+  kind: POINTER
+  pointee_type_id: 0x9dc88463
+}
+pointer_reference {
+  id: 0x2de25c2c
+  kind: POINTER
+  pointee_type_id: 0x9dc9962d
+}
+pointer_reference {
+  id: 0x2de2b0d1
+  kind: POINTER
+  pointee_type_id: 0x9dca25da
+}
+pointer_reference {
+  id: 0x2de347ce
+  kind: POINTER
+  pointee_type_id: 0x9dcdf9a5
+}
+pointer_reference {
+  id: 0x2de377d3
+  kind: POINTER
+  pointee_type_id: 0x9dcd39d1
+}
+pointer_reference {
+  id: 0x2de3e088
+  kind: POINTER
+  pointee_type_id: 0x9dcf64bf
+}
+pointer_reference {
+  id: 0x2de44294
+  kind: POINTER
+  pointee_type_id: 0x9dd1eccf
+}
+pointer_reference {
+  id: 0x2de52c27
+  kind: POINTER
+  pointee_type_id: 0x9dd45602
+}
+pointer_reference {
+  id: 0x2de5f797
+  kind: POINTER
+  pointee_type_id: 0x9dd738c0
+}
+pointer_reference {
+  id: 0x2de685e6
+  kind: POINTER
+  pointee_type_id: 0x9ddaf106
+}
+pointer_reference {
+  id: 0x2de69f48
+  kind: POINTER
+  pointee_type_id: 0x9dda9bbe
+}
+pointer_reference {
+  id: 0x2de702ff
+  kind: POINTER
+  pointee_type_id: 0x9ddced60
+}
+pointer_reference {
+  id: 0x2de72ceb
+  kind: POINTER
+  pointee_type_id: 0x9ddc5532
+}
+pointer_reference {
+  id: 0x2de77eca
+  kind: POINTER
+  pointee_type_id: 0x9ddd1db7
+}
+pointer_reference {
+  id: 0x2de7875a
+  kind: POINTER
+  pointee_type_id: 0x9ddefbf5
+}
+pointer_reference {
+  id: 0x2de7e95d
+  kind: POINTER
+  pointee_type_id: 0x9ddf43ea
+}
+pointer_reference {
+  id: 0x2de8ff3d
+  kind: POINTER
+  pointee_type_id: 0x9de31a69
+}
+pointer_reference {
+  id: 0x2de9a54b
+  kind: POINTER
+  pointee_type_id: 0x9de673b1
+}
+pointer_reference {
+  id: 0x2de9ae36
+  kind: POINTER
+  pointee_type_id: 0x9de65e45
+}
+pointer_reference {
+  id: 0x2de9e33f
+  kind: POINTER
+  pointee_type_id: 0x9de76a63
+}
+pointer_reference {
+  id: 0x2dea3634
+  kind: POINTER
+  pointee_type_id: 0x9de83e4d
+}
+pointer_reference {
+  id: 0x2dec5b18
+  kind: POINTER
+  pointee_type_id: 0x9df18afd
+}
+pointer_reference {
+  id: 0x2dec91ef
+  kind: POINTER
+  pointee_type_id: 0x9df2a123
+}
+pointer_reference {
+  id: 0x2dece89f
+  kind: POINTER
+  pointee_type_id: 0x9df344e2
+}
+pointer_reference {
+  id: 0x2def51c6
+  kind: POINTER
+  pointee_type_id: 0x9dfda184
+}
+pointer_reference {
+  id: 0x2defe351
+  kind: POINTER
+  pointee_type_id: 0x9dff6bd8
+}
+pointer_reference {
+  id: 0x2defe71a
+  kind: POINTER
+  pointee_type_id: 0x9dff7af4
+}
+pointer_reference {
+  id: 0x2df0016c
+  kind: POINTER
+  pointee_type_id: 0x9d80e32f
+}
+pointer_reference {
+  id: 0x2df0fc96
+  kind: POINTER
+  pointee_type_id: 0x9d8314c6
+}
+pointer_reference {
+  id: 0x2df10d7a
+  kind: POINTER
+  pointee_type_id: 0x9d84d375
+}
+pointer_reference {
+  id: 0x2df2d483
+  kind: POINTER
+  pointee_type_id: 0x9d8bb490
+}
+pointer_reference {
+  id: 0x2df3dec7
+  kind: POINTER
+  pointee_type_id: 0x9d8f9d80
+}
+pointer_reference {
+  id: 0x2df43e6f
+  kind: POINTER
+  pointee_type_id: 0x9d901f21
+}
+pointer_reference {
+  id: 0x2df5596b
+  kind: POINTER
+  pointee_type_id: 0x9d958331
+}
+pointer_reference {
+  id: 0x2df5d84f
+  kind: POINTER
+  pointee_type_id: 0x9d9787a1
+}
+pointer_reference {
+  id: 0x2df69197
+  kind: POINTER
+  pointee_type_id: 0x9d9aa0c3
+}
+pointer_reference {
+  id: 0x2df7eefe
+  kind: POINTER
+  pointee_type_id: 0x9d9f5d67
+}
+pointer_reference {
+  id: 0x2df82d01
+  kind: POINTER
+  pointee_type_id: 0x9da05299
+}
+pointer_reference {
+  id: 0x2df9d3a1
+  kind: POINTER
+  pointee_type_id: 0x9da7a81a
+}
+pointer_reference {
+  id: 0x2dfaa8d2
+  kind: POINTER
+  pointee_type_id: 0x9daa45d7
+}
+pointer_reference {
+  id: 0x2dfacfb6
+  kind: POINTER
+  pointee_type_id: 0x9dabd844
+}
+pointer_reference {
+  id: 0x2dfb782b
+  kind: POINTER
+  pointee_type_id: 0x9dad0630
+}
+pointer_reference {
+  id: 0x2dfc9938
+  kind: POINTER
+  pointee_type_id: 0x9db2827f
+}
+pointer_reference {
+  id: 0x2dfc9a8f
+  kind: POINTER
+  pointee_type_id: 0x9db28ca2
+}
+pointer_reference {
+  id: 0x2dfdd846
+  kind: POINTER
+  pointee_type_id: 0x9db78784
+}
+pointer_reference {
+  id: 0x2dfe3e0e
+  kind: POINTER
+  pointee_type_id: 0x9db81ea7
+}
+pointer_reference {
+  id: 0x2dfe40a9
+  kind: POINTER
+  pointee_type_id: 0x9db9e43a
+}
+pointer_reference {
+  id: 0x2dfe4ed2
+  kind: POINTER
+  pointee_type_id: 0x9db9ddd5
+}
+pointer_reference {
+  id: 0x2dfe56bd
+  kind: POINTER
+  pointee_type_id: 0x9db9bc69
+}
+pointer_reference {
+  id: 0x2dfe5b0e
+  kind: POINTER
+  pointee_type_id: 0x9db98aa7
+}
+pointer_reference {
+  id: 0x2dff0bbc
+  kind: POINTER
+  pointee_type_id: 0x9dbcc86d
+}
+pointer_reference {
+  id: 0x2dff40fc
+  kind: POINTER
+  pointee_type_id: 0x9dbde56f
+}
+pointer_reference {
+  id: 0x2dff78b7
+  kind: POINTER
+  pointee_type_id: 0x9dbd0440
+}
+pointer_reference {
+  id: 0x2dffae1a
+  kind: POINTER
+  pointee_type_id: 0x9dbe5ef7
+}
+pointer_reference {
+  id: 0x2dffe4a8
+  kind: POINTER
+  pointee_type_id: 0x9dbf743c
+}
+pointer_reference {
+  id: 0x2dfff216
+  kind: POINTER
+  pointee_type_id: 0x9dbf2ec6
+}
+pointer_reference {
+  id: 0x2e00d3ff
+  kind: POINTER
+  pointee_type_id: 0x9243a962
+}
+pointer_reference {
+  id: 0x2e01c1b5
+  kind: POINTER
+  pointee_type_id: 0x9247e04a
+}
+pointer_reference {
+  id: 0x2e01dff0
+  kind: POINTER
+  pointee_type_id: 0x9247995d
+}
+pointer_reference {
+  id: 0x2e025034
+  kind: POINTER
+  pointee_type_id: 0x9249a64d
+}
+pointer_reference {
+  id: 0x2e029208
+  kind: POINTER
+  pointee_type_id: 0x924aaebf
+}
+pointer_reference {
+  id: 0x2e029697
+  kind: POINTER
+  pointee_type_id: 0x924abcc2
+}
+pointer_reference {
+  id: 0x2e029f76
+  kind: POINTER
+  pointee_type_id: 0x924a9b47
+}
+pointer_reference {
+  id: 0x2e035005
+  kind: POINTER
+  pointee_type_id: 0x924da688
+}
+pointer_reference {
+  id: 0x2e037cf1
+  kind: POINTER
+  pointee_type_id: 0x924d155a
+}
+pointer_reference {
+  id: 0x2e0761ed
+  kind: POINTER
+  pointee_type_id: 0x925d6128
+}
+pointer_reference {
+  id: 0x2e083ab8
+  kind: POINTER
+  pointee_type_id: 0x92600c7c
+}
+pointer_reference {
+  id: 0x2e08aceb
+  kind: POINTER
+  pointee_type_id: 0x92625532
+}
+pointer_reference {
+  id: 0x2e0903c3
+  kind: POINTER
+  pointee_type_id: 0x9264e992
+}
+pointer_reference {
+  id: 0x2e0948aa
+  kind: POINTER
+  pointee_type_id: 0x9265c435
+}
+pointer_reference {
+  id: 0x2e09860c
+  kind: POINTER
+  pointee_type_id: 0x9266fead
+}
+pointer_reference {
+  id: 0x2e0a4508
+  kind: POINTER
+  pointee_type_id: 0x9269f2bc
+}
+pointer_reference {
+  id: 0x2e0ac0be
+  kind: POINTER
+  pointee_type_id: 0x926be467
+}
+pointer_reference {
+  id: 0x2e0b4b4b
+  kind: POINTER
+  pointee_type_id: 0x926dcbb0
+}
+pointer_reference {
+  id: 0x2e0b807c
+  kind: POINTER
+  pointee_type_id: 0x926ee76e
+}
+pointer_reference {
+  id: 0x2e0bc86e
+  kind: POINTER
+  pointee_type_id: 0x926fc724
+}
+pointer_reference {
+  id: 0x2e0ce687
+  kind: POINTER
+  pointee_type_id: 0x92737c80
+}
+pointer_reference {
+  id: 0x2e0d4ac8
+  kind: POINTER
+  pointee_type_id: 0x9275cdbe
+}
+pointer_reference {
+  id: 0x2e0d5789
+  kind: POINTER
+  pointee_type_id: 0x9275b8b9
+}
+pointer_reference {
+  id: 0x2e103219
+  kind: POINTER
+  pointee_type_id: 0x92002ef9
+}
+pointer_reference {
+  id: 0x2e106394
+  kind: POINTER
+  pointee_type_id: 0x920168ce
+}
+pointer_reference {
+  id: 0x2e110a3d
+  kind: POINTER
+  pointee_type_id: 0x9204ce69
+}
+pointer_reference {
+  id: 0x2e11757b
+  kind: POINTER
+  pointee_type_id: 0x92053373
+}
+pointer_reference {
+  id: 0x2e11eea4
+  kind: POINTER
+  pointee_type_id: 0x92075c0f
+}
+pointer_reference {
+  id: 0x2e136b7a
+  kind: POINTER
+  pointee_type_id: 0x920d4b76
+}
+pointer_reference {
+  id: 0x2e152fbb
+  kind: POINTER
+  pointee_type_id: 0x92145871
+}
+pointer_reference {
+  id: 0x2e154904
+  kind: POINTER
+  pointee_type_id: 0x9215c28e
+}
+pointer_reference {
+  id: 0x2e160375
+  kind: POINTER
+  pointee_type_id: 0x9218eb49
+}
+pointer_reference {
+  id: 0x2e1622f2
+  kind: POINTER
+  pointee_type_id: 0x92186d57
+}
+pointer_reference {
+  id: 0x2e1817c8
+  kind: POINTER
+  pointee_type_id: 0x9220b9bd
+}
+pointer_reference {
+  id: 0x2e1824d3
+  kind: POINTER
+  pointee_type_id: 0x922075d2
+}
+pointer_reference {
+  id: 0x2e18982d
+  kind: POINTER
+  pointee_type_id: 0x92228628
+}
+pointer_reference {
+  id: 0x2e18b2bb
+  kind: POINTER
+  pointee_type_id: 0x92222c71
+}
+pointer_reference {
+  id: 0x2e18f543
+  kind: POINTER
+  pointee_type_id: 0x92233392
+}
+pointer_reference {
+  id: 0x2e19d469
+  kind: POINTER
+  pointee_type_id: 0x9227b73b
+}
+pointer_reference {
+  id: 0x2e1a997c
+  kind: POINTER
+  pointee_type_id: 0x922a836c
+}
+pointer_reference {
+  id: 0x2e1b3edd
+  kind: POINTER
+  pointee_type_id: 0x922c1de8
+}
+pointer_reference {
+  id: 0x2e1b56db
+  kind: POINTER
+  pointee_type_id: 0x922dbdf3
+}
+pointer_reference {
+  id: 0x2e1b59dd
+  kind: POINTER
+  pointee_type_id: 0x922d81eb
+}
+pointer_reference {
+  id: 0x2e1d1da3
+  kind: POINTER
+  pointee_type_id: 0x92349012
+}
+pointer_reference {
+  id: 0x2e1f1dc5
+  kind: POINTER
+  pointee_type_id: 0x923c918a
+}
+pointer_reference {
+  id: 0x2e1ffbf8
+  kind: POINTER
+  pointee_type_id: 0x923f097c
+}
+pointer_reference {
+  id: 0x2e208fbc
+  kind: POINTER
+  pointee_type_id: 0x92c2d86d
+}
+pointer_reference {
+  id: 0x2e215a2d
+  kind: POINTER
+  pointee_type_id: 0x92c58e2b
+}
+pointer_reference {
+  id: 0x2e21b136
+  kind: POINTER
+  pointee_type_id: 0x92c62246
+}
+pointer_reference {
+  id: 0x2e23b4b1
+  kind: POINTER
+  pointee_type_id: 0x92ce345a
+}
+pointer_reference {
+  id: 0x2e24d7bb
+  kind: POINTER
+  pointee_type_id: 0x92d3b873
+}
+pointer_reference {
+  id: 0x2e27223f
+  kind: POINTER
+  pointee_type_id: 0x92dc6e62
+}
+pointer_reference {
+  id: 0x2e27d122
+  kind: POINTER
+  pointee_type_id: 0x92dfa217
+}
+pointer_reference {
+  id: 0x2e280a68
+  kind: POINTER
+  pointee_type_id: 0x92e0cf3e
+}
+pointer_reference {
+  id: 0x2e2855ee
+  kind: POINTER
+  pointee_type_id: 0x92e1b125
+}
+pointer_reference {
+  id: 0x2e2ad1d9
+  kind: POINTER
+  pointee_type_id: 0x92eba1f9
+}
+pointer_reference {
+  id: 0x2e2b1856
+  kind: POINTER
+  pointee_type_id: 0x92ec87c7
+}
+pointer_reference {
+  id: 0x2e2c982d
+  kind: POINTER
+  pointee_type_id: 0x92f28628
+}
+pointer_reference {
+  id: 0x2e2cf703
+  kind: POINTER
+  pointee_type_id: 0x92f33a91
+}
+pointer_reference {
+  id: 0x2e2d1155
+  kind: POINTER
+  pointee_type_id: 0x92f4a3cb
+}
+pointer_reference {
+  id: 0x2e2ff28a
+  kind: POINTER
+  pointee_type_id: 0x92ff2cb6
+}
+pointer_reference {
+  id: 0x2e30e88b
+  kind: POINTER
+  pointee_type_id: 0x928344b1
+}
+pointer_reference {
+  id: 0x2e3185e3
+  kind: POINTER
+  pointee_type_id: 0x9286f110
+}
+pointer_reference {
+  id: 0x2e319483
+  kind: POINTER
+  pointee_type_id: 0x9286b490
+}
+pointer_reference {
+  id: 0x2e31daf3
+  kind: POINTER
+  pointee_type_id: 0x92878d53
+}
+pointer_reference {
+  id: 0x2e334b9e
+  kind: POINTER
+  pointee_type_id: 0x928dc8e5
+}
+pointer_reference {
+  id: 0x2e359c9f
+  kind: POINTER
+  pointee_type_id: 0x929694e1
+}
+pointer_reference {
+  id: 0x2e35f909
+  kind: POINTER
+  pointee_type_id: 0x929702b9
+}
+pointer_reference {
+  id: 0x2e36aac4
+  kind: POINTER
+  pointee_type_id: 0x929a4d8e
+}
+pointer_reference {
+  id: 0x2e37c006
+  kind: POINTER
+  pointee_type_id: 0x929fe685
+}
+pointer_reference {
+  id: 0x2e390d5b
+  kind: POINTER
+  pointee_type_id: 0x92a4d3f0
+}
+pointer_reference {
+  id: 0x2e3a32dd
+  kind: POINTER
+  pointee_type_id: 0x92a82deb
+}
+pointer_reference {
+  id: 0x2e3afbd5
+  kind: POINTER
+  pointee_type_id: 0x92ab09cb
+}
+pointer_reference {
+  id: 0x2e3b0b9f
+  kind: POINTER
+  pointee_type_id: 0x92acc8e1
+}
+pointer_reference {
+  id: 0x2e3bacd4
+  kind: POINTER
+  pointee_type_id: 0x92ae55cd
+}
+pointer_reference {
+  id: 0x2e3de161
+  kind: POINTER
+  pointee_type_id: 0x92b76318
+}
+pointer_reference {
+  id: 0x2e3fe61b
+  kind: POINTER
+  pointee_type_id: 0x92bf7ef1
+}
+pointer_reference {
+  id: 0x2e4001ea
+  kind: POINTER
+  pointee_type_id: 0x9340e134
+}
+pointer_reference {
+  id: 0x2e407ccb
+  kind: POINTER
+  pointee_type_id: 0x934115b2
+}
+pointer_reference {
+  id: 0x2e412de2
+  kind: POINTER
+  pointee_type_id: 0x93445117
+}
+pointer_reference {
+  id: 0x2e43a9f5
+  kind: POINTER
+  pointee_type_id: 0x934e4149
+}
+pointer_reference {
+  id: 0x2e449240
+  kind: POINTER
+  pointee_type_id: 0x9352af9c
+}
+pointer_reference {
+  id: 0x2e47a18c
+  kind: POINTER
+  pointee_type_id: 0x935e60af
+}
+pointer_reference {
+  id: 0x2e48a65f
+  kind: POINTER
+  pointee_type_id: 0x93627fe0
+}
+pointer_reference {
+  id: 0x2e491408
+  kind: POINTER
+  pointee_type_id: 0x9364b6bd
+}
+pointer_reference {
+  id: 0x2e4a2777
+  kind: POINTER
+  pointee_type_id: 0x93687b43
+}
+pointer_reference {
+  id: 0x2e4b10a5
+  kind: POINTER
+  pointee_type_id: 0x936ca40b
+}
+pointer_reference {
+  id: 0x2e4b2eee
+  kind: POINTER
+  pointee_type_id: 0x936c5d25
+}
+pointer_reference {
+  id: 0x2e4d83a3
+  kind: POINTER
+  pointee_type_id: 0x9376e812
+}
+pointer_reference {
+  id: 0x2e4e1a59
+  kind: POINTER
+  pointee_type_id: 0x93788ff8
+}
+pointer_reference {
+  id: 0x2e4fd1e7
+  kind: POINTER
+  pointee_type_id: 0x937fa102
+}
+pointer_reference {
+  id: 0x2e50e215
+  kind: POINTER
+  pointee_type_id: 0x93036ec8
+}
+pointer_reference {
+  id: 0x2e519115
+  kind: POINTER
+  pointee_type_id: 0x9306a2ca
+}
+pointer_reference {
+  id: 0x2e52386e
+  kind: POINTER
+  pointee_type_id: 0x93080724
+}
+pointer_reference {
+  id: 0x2e525083
+  kind: POINTER
+  pointee_type_id: 0x9309a490
+}
+pointer_reference {
+  id: 0x2e52ac79
+  kind: POINTER
+  pointee_type_id: 0x930a577a
+}
+pointer_reference {
+  id: 0x2e52d9da
+  kind: POINTER
+  pointee_type_id: 0x930b81f5
+}
+pointer_reference {
+  id: 0x2e5372aa
+  kind: POINTER
+  pointee_type_id: 0x930d2c35
+}
+pointer_reference {
+  id: 0x2e53e24a
+  kind: POINTER
+  pointee_type_id: 0x930f6fb6
+}
+pointer_reference {
+  id: 0x2e5473cd
+  kind: POINTER
+  pointee_type_id: 0x931129aa
+}
+pointer_reference {
+  id: 0x2e54c22d
+  kind: POINTER
+  pointee_type_id: 0x9313ee2a
+}
+pointer_reference {
+  id: 0x2e54d3eb
+  kind: POINTER
+  pointee_type_id: 0x9313a933
+}
+pointer_reference {
+  id: 0x2e5535c9
+  kind: POINTER
+  pointee_type_id: 0x931431b9
+}
+pointer_reference {
+  id: 0x2e5554e5
+  kind: POINTER
+  pointee_type_id: 0x9315b50b
+}
+pointer_reference {
+  id: 0x2e558249
+  kind: POINTER
+  pointee_type_id: 0x9316efbb
+}
+pointer_reference {
+  id: 0x2e55b99c
+  kind: POINTER
+  pointee_type_id: 0x931600ed
+}
+pointer_reference {
+  id: 0x2e55e7a6
+  kind: POINTER
+  pointee_type_id: 0x93177804
+}
+pointer_reference {
+  id: 0x2e56380d
+  kind: POINTER
+  pointee_type_id: 0x931806a8
+}
+pointer_reference {
+  id: 0x2e56b2c6
+  kind: POINTER
+  pointee_type_id: 0x931a2d85
+}
+pointer_reference {
+  id: 0x2e589dc4
+  kind: POINTER
+  pointee_type_id: 0x9322918f
+}
+pointer_reference {
+  id: 0x2e58ef27
+  kind: POINTER
+  pointee_type_id: 0x93235a02
+}
+pointer_reference {
+  id: 0x2e593e8e
+  kind: POINTER
+  pointee_type_id: 0x93241ca5
+}
+pointer_reference {
+  id: 0x2e5c2b4c
+  kind: POINTER
+  pointee_type_id: 0x93304bad
+}
+pointer_reference {
+  id: 0x2e5d0187
+  kind: POINTER
+  pointee_type_id: 0x9334e080
+}
+pointer_reference {
+  id: 0x2e5dc389
+  kind: POINTER
+  pointee_type_id: 0x9337e8bb
+}
+pointer_reference {
+  id: 0x2e5de10a
+  kind: POINTER
+  pointee_type_id: 0x933762b6
+}
+pointer_reference {
+  id: 0x2e5e3e94
+  kind: POINTER
+  pointee_type_id: 0x93381cce
+}
+pointer_reference {
+  id: 0x2e5f7dbc
+  kind: POINTER
+  pointee_type_id: 0x933d106c
+}
+pointer_reference {
+  id: 0x2e60a6b2
+  kind: POINTER
+  pointee_type_id: 0x93c27c54
+}
+pointer_reference {
+  id: 0x2e614abb
+  kind: POINTER
+  pointee_type_id: 0x93c5cc72
+}
+pointer_reference {
+  id: 0x2e619920
+  kind: POINTER
+  pointee_type_id: 0x93c6821c
+}
+pointer_reference {
+  id: 0x2e61f032
+  kind: POINTER
+  pointee_type_id: 0x93c72655
+}
+pointer_reference {
+  id: 0x2e64e8af
+  kind: POINTER
+  pointee_type_id: 0x93d34421
+}
+pointer_reference {
+  id: 0x2e65e8c2
+  kind: POINTER
+  pointee_type_id: 0x93d74597
+}
+pointer_reference {
+  id: 0x2e66ff23
+  kind: POINTER
+  pointee_type_id: 0x93db1a11
+}
+pointer_reference {
+  id: 0x2e679d4e
+  kind: POINTER
+  pointee_type_id: 0x93de93a5
+}
+pointer_reference {
+  id: 0x2e67d166
+  kind: POINTER
+  pointee_type_id: 0x93dfa305
+}
+pointer_reference {
+  id: 0x2e67f25c
+  kind: POINTER
+  pointee_type_id: 0x93df2fed
+}
+pointer_reference {
+  id: 0x2e6a004b
+  kind: POINTER
+  pointee_type_id: 0x93e8e7b0
+}
+pointer_reference {
+  id: 0x2e6ac856
+  kind: POINTER
+  pointee_type_id: 0x93ebc7c6
+}
+pointer_reference {
+  id: 0x2e6c8788
+  kind: POINTER
+  pointee_type_id: 0x93f2f8bd
+}
+pointer_reference {
+  id: 0x2e6f560a
+  kind: POINTER
+  pointee_type_id: 0x93fdbeb6
+}
+pointer_reference {
+  id: 0x2e6ffe1b
+  kind: POINTER
+  pointee_type_id: 0x93ff1ef0
+}
+pointer_reference {
+  id: 0x2e7062fc
+  kind: POINTER
+  pointee_type_id: 0x93816d6d
+}
+pointer_reference {
+  id: 0x2e71b7d0
+  kind: POINTER
+  pointee_type_id: 0x938639de
+}
+pointer_reference {
+  id: 0x2e733fe2
+  kind: POINTER
+  pointee_type_id: 0x938c1916
+}
+pointer_reference {
+  id: 0x2e73c057
+  kind: POINTER
+  pointee_type_id: 0x938fe7c2
+}
+pointer_reference {
+  id: 0x2e7404d6
+  kind: POINTER
+  pointee_type_id: 0x9390f5c5
+}
+pointer_reference {
+  id: 0x2e742439
+  kind: POINTER
+  pointee_type_id: 0x93907678
+}
+pointer_reference {
+  id: 0x2e76071a
+  kind: POINTER
+  pointee_type_id: 0x9398faf7
+}
+pointer_reference {
+  id: 0x2e760e50
+  kind: POINTER
+  pointee_type_id: 0x9398dfdf
+}
+pointer_reference {
+  id: 0x2e763bfd
+  kind: POINTER
+  pointee_type_id: 0x93980968
+}
+pointer_reference {
+  id: 0x2e766833
+  kind: POINTER
+  pointee_type_id: 0x93994651
+}
+pointer_reference {
+  id: 0x2e789152
+  kind: POINTER
+  pointee_type_id: 0x93a2a3d7
+}
+pointer_reference {
+  id: 0x2e789ea8
+  kind: POINTER
+  pointee_type_id: 0x93a29c3d
+}
+pointer_reference {
+  id: 0x2e790da0
+  kind: POINTER
+  pointee_type_id: 0x93a4d01f
+}
+pointer_reference {
+  id: 0x2e7c1d11
+  kind: POINTER
+  pointee_type_id: 0x93b092da
+}
+pointer_reference {
+  id: 0x2e7d2876
+  kind: POINTER
+  pointee_type_id: 0x93b44747
+}
+pointer_reference {
+  id: 0x2e7d420e
+  kind: POINTER
+  pointee_type_id: 0x93b5eea7
+}
+pointer_reference {
+  id: 0x2e7e69da
+  kind: POINTER
+  pointee_type_id: 0x93b941f7
+}
+pointer_reference {
+  id: 0x2e804bb7
+  kind: POINTER
+  pointee_type_id: 0x9041c842
+}
+pointer_reference {
+  id: 0x2e806df9
+  kind: POINTER
+  pointee_type_id: 0x90415178
+}
+pointer_reference {
+  id: 0x2e820213
+  kind: POINTER
+  pointee_type_id: 0x9048eed1
+}
+pointer_reference {
+  id: 0x2e82a19a
+  kind: POINTER
+  pointee_type_id: 0x904a60f7
+}
+pointer_reference {
+  id: 0x2e84d59a
+  kind: POINTER
+  pointee_type_id: 0x9053b0f5
+}
+pointer_reference {
+  id: 0x2e84e452
+  kind: POINTER
+  pointee_type_id: 0x905377d7
+}
+pointer_reference {
+  id: 0x2e87c7b8
+  kind: POINTER
+  pointee_type_id: 0x905ff87d
+}
+pointer_reference {
+  id: 0x2e895f6c
+  kind: POINTER
+  pointee_type_id: 0x90659b2d
+}
+pointer_reference {
+  id: 0x2e89ce21
+  kind: POINTER
+  pointee_type_id: 0x9067de1b
+}
+pointer_reference {
+  id: 0x2e8a143b
+  kind: POINTER
+  pointee_type_id: 0x9068b671
+}
+pointer_reference {
+  id: 0x2e8aa11f
+  kind: POINTER
+  pointee_type_id: 0x906a62e2
+}
+pointer_reference {
+  id: 0x2e8ad82b
+  kind: POINTER
+  pointee_type_id: 0x906b8630
+}
+pointer_reference {
+  id: 0x2e8aef4d
+  kind: POINTER
+  pointee_type_id: 0x906b5bab
+}
+pointer_reference {
+  id: 0x2e8b2d57
+  kind: POINTER
+  pointee_type_id: 0x906c53c0
+}
+pointer_reference {
+  id: 0x2e8c7bd9
+  kind: POINTER
+  pointee_type_id: 0x907109f8
+}
+pointer_reference {
+  id: 0x2e8d5f05
+  kind: POINTER
+  pointee_type_id: 0x90759a8b
+}
+pointer_reference {
+  id: 0x2e8dc6ee
+  kind: POINTER
+  pointee_type_id: 0x9077fd27
+}
+pointer_reference {
+  id: 0x2e8e1000
+  kind: POINTER
+  pointee_type_id: 0x9078a69f
+}
+pointer_reference {
+  id: 0x2e8ed696
+  kind: POINTER
+  pointee_type_id: 0x907bbcc4
+}
+pointer_reference {
+  id: 0x2e9080a1
+  kind: POINTER
+  pointee_type_id: 0x9002e418
+}
+pointer_reference {
+  id: 0x2e9195ef
+  kind: POINTER
+  pointee_type_id: 0x9006b123
+}
+pointer_reference {
+  id: 0x2e9269e0
+  kind: POINTER
+  pointee_type_id: 0x9009411d
+}
+pointer_reference {
+  id: 0x2e92af98
+  kind: POINTER
+  pointee_type_id: 0x900a58fc
+}
+pointer_reference {
+  id: 0x2e936ee9
+  kind: POINTER
+  pointee_type_id: 0x900d5d3b
+}
+pointer_reference {
+  id: 0x2e93f0ca
+  kind: POINTER
+  pointee_type_id: 0x900f25b4
+}
+pointer_reference {
+  id: 0x2e94a1e1
+  kind: POINTER
+  pointee_type_id: 0x9012611a
+}
+pointer_reference {
+  id: 0x2e968ae1
+  kind: POINTER
+  pointee_type_id: 0x901acd1a
+}
+pointer_reference {
+  id: 0x2e9a2263
+  kind: POINTER
+  pointee_type_id: 0x90286f13
+}
+pointer_reference {
+  id: 0x2e9bbd8d
+  kind: POINTER
+  pointee_type_id: 0x902e10a9
+}
+pointer_reference {
+  id: 0x2e9e4338
+  kind: POINTER
+  pointee_type_id: 0x9039ea7d
+}
+pointer_reference {
+  id: 0x2e9f98e1
+  kind: POINTER
+  pointee_type_id: 0x903e851b
+}
+pointer_reference {
+  id: 0x2e9fe637
+  kind: POINTER
+  pointee_type_id: 0x903f7e42
+}
+pointer_reference {
+  id: 0x2ea0085b
+  kind: POINTER
+  pointee_type_id: 0x90c0c7f2
+}
+pointer_reference {
+  id: 0x2ea27fd7
+  kind: POINTER
+  pointee_type_id: 0x90c919c0
+}
+pointer_reference {
+  id: 0x2ea3678a
+  kind: POINTER
+  pointee_type_id: 0x90cd78b7
+}
+pointer_reference {
+  id: 0x2ea52095
+  kind: POINTER
+  pointee_type_id: 0x90d464ca
+}
+pointer_reference {
+  id: 0x2ea66283
+  kind: POINTER
+  pointee_type_id: 0x90d96c90
+}
+pointer_reference {
+  id: 0x2ea6d809
+  kind: POINTER
+  pointee_type_id: 0x90db86bb
+}
+pointer_reference {
+  id: 0x2ea6f36d
+  kind: POINTER
+  pointee_type_id: 0x90db2b2a
+}
+pointer_reference {
+  id: 0x2ea74ad2
+  kind: POINTER
+  pointee_type_id: 0x90ddcdd6
+}
+pointer_reference {
+  id: 0x2ea8d96e
+  kind: POINTER
+  pointee_type_id: 0x90e38325
+}
+pointer_reference {
+  id: 0x2eab5b8a
+  kind: POINTER
+  pointee_type_id: 0x90ed88b5
+}
+pointer_reference {
+  id: 0x2ead5060
+  kind: POINTER
+  pointee_type_id: 0x90f5a71f
+}
+pointer_reference {
+  id: 0x2ead6653
+  kind: POINTER
+  pointee_type_id: 0x90f57fd0
+}
+pointer_reference {
+  id: 0x2eae2318
+  kind: POINTER
+  pointee_type_id: 0x90f86afe
+}
+pointer_reference {
+  id: 0x2eaed94d
+  kind: POINTER
+  pointee_type_id: 0x90fb83a9
+}
+pointer_reference {
+  id: 0x2eafb82c
+  kind: POINTER
+  pointee_type_id: 0x90fe062f
+}
+pointer_reference {
+  id: 0x2eb11cd7
+  kind: POINTER
+  pointee_type_id: 0x908495c3
+}
+pointer_reference {
+  id: 0x2eb152dc
+  kind: POINTER
+  pointee_type_id: 0x9085adec
+}
+pointer_reference {
+  id: 0x2eb1d300
+  kind: POINTER
+  pointee_type_id: 0x9087aa9c
+}
+pointer_reference {
+  id: 0x2eb38aa4
+  kind: POINTER
+  pointee_type_id: 0x908ecc0f
+}
+pointer_reference {
+  id: 0x2eb40691
+  kind: POINTER
+  pointee_type_id: 0x9090fcd9
+}
+pointer_reference {
+  id: 0x2eb4795d
+  kind: POINTER
+  pointee_type_id: 0x909103e9
+}
+pointer_reference {
+  id: 0x2eb5418d
+  kind: POINTER
+  pointee_type_id: 0x9095e0a9
+}
+pointer_reference {
+  id: 0x2eb6ced9
+  kind: POINTER
+  pointee_type_id: 0x909bddf8
+}
+pointer_reference {
+  id: 0x2eb71c0e
+  kind: POINTER
+  pointee_type_id: 0x909c96a5
+}
+pointer_reference {
+  id: 0x2eb8b95d
+  kind: POINTER
+  pointee_type_id: 0x90a203ea
+}
+pointer_reference {
+  id: 0x2eba80af
+  kind: POINTER
+  pointee_type_id: 0x90aae420
+}
+pointer_reference {
+  id: 0x2ebb318f
+  kind: POINTER
+  pointee_type_id: 0x90ac20a2
+}
+pointer_reference {
+  id: 0x2ebb56af
+  kind: POINTER
+  pointee_type_id: 0x90adbc21
+}
+pointer_reference {
+  id: 0x2ebb6897
+  kind: POINTER
+  pointee_type_id: 0x90ad44c2
+}
+pointer_reference {
+  id: 0x2ebb9477
+  kind: POINTER
+  pointee_type_id: 0x90aeb741
+}
+pointer_reference {
+  id: 0x2ebcf7aa
+  kind: POINTER
+  pointee_type_id: 0x90b33834
+}
+pointer_reference {
+  id: 0x2ebd1774
+  kind: POINTER
+  pointee_type_id: 0x90b4bb4c
+}
+pointer_reference {
+  id: 0x2ebd4382
+  kind: POINTER
+  pointee_type_id: 0x90b5e896
+}
+pointer_reference {
+  id: 0x2ebd4ff0
+  kind: POINTER
+  pointee_type_id: 0x90b5d95f
+}
+pointer_reference {
+  id: 0x2ebd5128
+  kind: POINTER
+  pointee_type_id: 0x90b5a23e
+}
+pointer_reference {
+  id: 0x2ebd64f9
+  kind: POINTER
+  pointee_type_id: 0x90b57579
+}
+pointer_reference {
+  id: 0x2ebdc32e
+  kind: POINTER
+  pointee_type_id: 0x90b7ea24
+}
+pointer_reference {
+  id: 0x2ebfd057
+  kind: POINTER
+  pointee_type_id: 0x90bfa7c3
+}
+pointer_reference {
+  id: 0x2ec0a712
+  kind: POINTER
+  pointee_type_id: 0x91427ad6
+}
+pointer_reference {
+  id: 0x2ec0d114
+  kind: POINTER
+  pointee_type_id: 0x9143a2cf
+}
+pointer_reference {
+  id: 0x2ec0d6c8
+  kind: POINTER
+  pointee_type_id: 0x9143bdbc
+}
+pointer_reference {
+  id: 0x2ec0f499
+  kind: POINTER
+  pointee_type_id: 0x914334fa
+}
+pointer_reference {
+  id: 0x2ec1963f
+  kind: POINTER
+  pointee_type_id: 0x9146be60
+}
+pointer_reference {
+  id: 0x2ec1fdbb
+  kind: POINTER
+  pointee_type_id: 0x91471071
+}
+pointer_reference {
+  id: 0x2ec2de34
+  kind: POINTER
+  pointee_type_id: 0x914b9e4e
+}
+pointer_reference {
+  id: 0x2ec3152f
+  kind: POINTER
+  pointee_type_id: 0x914cb221
+}
+pointer_reference {
+  id: 0x2ec34144
+  kind: POINTER
+  pointee_type_id: 0x914de38d
+}
+pointer_reference {
+  id: 0x2ec35622
+  kind: POINTER
+  pointee_type_id: 0x914dbe16
+}
+pointer_reference {
+  id: 0x2ec35650
+  kind: POINTER
+  pointee_type_id: 0x914dbfdc
+}
+pointer_reference {
+  id: 0x2ec36b1e
+  kind: POINTER
+  pointee_type_id: 0x914d4ae5
+}
+pointer_reference {
+  id: 0x2ec4955f
+  kind: POINTER
+  pointee_type_id: 0x9152b3e3
+}
+pointer_reference {
+  id: 0x2ec4b6b1
+  kind: POINTER
+  pointee_type_id: 0x91523c59
+}
+pointer_reference {
+  id: 0x2ec56fe9
+  kind: POINTER
+  pointee_type_id: 0x9155593a
+}
+pointer_reference {
+  id: 0x2ec5c016
+  kind: POINTER
+  pointee_type_id: 0x9157e6c5
+}
+pointer_reference {
+  id: 0x2ec64fad
+  kind: POINTER
+  pointee_type_id: 0x9159d829
+}
+pointer_reference {
+  id: 0x2ec6e9a9
+  kind: POINTER
+  pointee_type_id: 0x915b403a
+}
+pointer_reference {
+  id: 0x2ec73a64
+  kind: POINTER
+  pointee_type_id: 0x915c0f0d
+}
+pointer_reference {
+  id: 0x2ec82b0f
+  kind: POINTER
+  pointee_type_id: 0x91604aa1
+}
+pointer_reference {
+  id: 0x2ec99d29
+  kind: POINTER
+  pointee_type_id: 0x9166923b
+}
+pointer_reference {
+  id: 0x2ec9b6ec
+  kind: POINTER
+  pointee_type_id: 0x91663d2f
+}
+pointer_reference {
+  id: 0x2eca5b37
+  kind: POINTER
+  pointee_type_id: 0x91698a42
+}
+pointer_reference {
+  id: 0x2eca967d
+  kind: POINTER
+  pointee_type_id: 0x916abf69
+}
+pointer_reference {
+  id: 0x2ecacc9e
+  kind: POINTER
+  pointee_type_id: 0x916bd4e5
+}
+pointer_reference {
+  id: 0x2ecbd65d
+  kind: POINTER
+  pointee_type_id: 0x916fbfe8
+}
+pointer_reference {
+  id: 0x2ecc02be
+  kind: POINTER
+  pointee_type_id: 0x9170ec67
+}
+pointer_reference {
+  id: 0x2ecc449d
+  kind: POINTER
+  pointee_type_id: 0x9171f4eb
+}
+pointer_reference {
+  id: 0x2ecc6701
+  kind: POINTER
+  pointee_type_id: 0x91717a9b
+}
+pointer_reference {
+  id: 0x2ecc93f3
+  kind: POINTER
+  pointee_type_id: 0x9172a951
+}
+pointer_reference {
+  id: 0x2ecd86e5
+  kind: POINTER
+  pointee_type_id: 0x9176fd0b
+}
+pointer_reference {
+  id: 0x2ecd9a2a
+  kind: POINTER
+  pointee_type_id: 0x91768e36
+}
+pointer_reference {
+  id: 0x2ecdbda3
+  kind: POINTER
+  pointee_type_id: 0x91761011
+}
+pointer_reference {
+  id: 0x2ecddbf2
+  kind: POINTER
+  pointee_type_id: 0x91778957
+}
+pointer_reference {
+  id: 0x2ecde42d
+  kind: POINTER
+  pointee_type_id: 0x9177762b
+}
+pointer_reference {
+  id: 0x2ece191f
+  kind: POINTER
+  pointee_type_id: 0x917882e1
+}
+pointer_reference {
+  id: 0x2ecec671
+  kind: POINTER
+  pointee_type_id: 0x917bff5a
+}
+pointer_reference {
+  id: 0x2ecf465d
+  kind: POINTER
+  pointee_type_id: 0x917dffe9
+}
+pointer_reference {
+  id: 0x2ecfa784
+  kind: POINTER
+  pointee_type_id: 0x917e788d
+}
+pointer_reference {
+  id: 0x2ed04d51
+  kind: POINTER
+  pointee_type_id: 0x9101d3da
+}
+pointer_reference {
+  id: 0x2ed189e4
+  kind: POINTER
+  pointee_type_id: 0x9106c10c
+}
+pointer_reference {
+  id: 0x2ed1a3e1
+  kind: POINTER
+  pointee_type_id: 0x9106691b
+}
+pointer_reference {
+  id: 0x2ed26c2f
+  kind: POINTER
+  pointee_type_id: 0x91095623
+}
+pointer_reference {
+  id: 0x2ed335c2
+  kind: POINTER
+  pointee_type_id: 0x910c3195
+}
+pointer_reference {
+  id: 0x2ed37308
+  kind: POINTER
+  pointee_type_id: 0x910d2abd
+}
+pointer_reference {
+  id: 0x2ed38d27
+  kind: POINTER
+  pointee_type_id: 0x910ed203
+}
+pointer_reference {
+  id: 0x2ed391e2
+  kind: POINTER
+  pointee_type_id: 0x910ea117
+}
+pointer_reference {
+  id: 0x2ed3be65
+  kind: POINTER
+  pointee_type_id: 0x910e1f0a
+}
+pointer_reference {
+  id: 0x2ed46467
+  kind: POINTER
+  pointee_type_id: 0x91117703
+}
+pointer_reference {
+  id: 0x2ed55948
+  kind: POINTER
+  pointee_type_id: 0x911583bf
+}
+pointer_reference {
+  id: 0x2ed5bccc
+  kind: POINTER
+  pointee_type_id: 0x911615ad
+}
+pointer_reference {
+  id: 0x2ed5bd34
+  kind: POINTER
+  pointee_type_id: 0x9116124f
+}
+pointer_reference {
+  id: 0x2ed647c7
+  kind: POINTER
+  pointee_type_id: 0x9119f980
+}
+pointer_reference {
+  id: 0x2ed66750
+  kind: POINTER
+  pointee_type_id: 0x91197bdc
+}
+pointer_reference {
+  id: 0x2ed69b9a
+  kind: POINTER
+  pointee_type_id: 0x911a88f6
+}
+pointer_reference {
+  id: 0x2ed83449
+  kind: POINTER
+  pointee_type_id: 0x912037b8
+}
+pointer_reference {
+  id: 0x2ed842b7
+  kind: POINTER
+  pointee_type_id: 0x9121ec42
+}
+pointer_reference {
+  id: 0x2ed870a7
+  kind: POINTER
+  pointee_type_id: 0x91212402
+}
+pointer_reference {
+  id: 0x2ed8b8f9
+  kind: POINTER
+  pointee_type_id: 0x9122057b
+}
+pointer_reference {
+  id: 0x2ed8dfef
+  kind: POINTER
+  pointee_type_id: 0x91239923
+}
+pointer_reference {
+  id: 0x2ed940de
+  kind: POINTER
+  pointee_type_id: 0x9125e5e5
+}
+pointer_reference {
+  id: 0x2eda6351
+  kind: POINTER
+  pointee_type_id: 0x91296bda
+}
+pointer_reference {
+  id: 0x2eda8228
+  kind: POINTER
+  pointee_type_id: 0x912aee3c
+}
+pointer_reference {
+  id: 0x2edacd6a
+  kind: POINTER
+  pointee_type_id: 0x912bd335
+}
+pointer_reference {
+  id: 0x2edb1db2
+  kind: POINTER
+  pointee_type_id: 0x912c9057
+}
+pointer_reference {
+  id: 0x2edba639
+  kind: POINTER
+  pointee_type_id: 0x912e7e7b
+}
+pointer_reference {
+  id: 0x2edcab9e
+  kind: POINTER
+  pointee_type_id: 0x913248e6
+}
+pointer_reference {
+  id: 0x2edd9d94
+  kind: POINTER
+  pointee_type_id: 0x913690cd
+}
+pointer_reference {
+  id: 0x2eddd615
+  kind: POINTER
+  pointee_type_id: 0x9137bec9
+}
+pointer_reference {
+  id: 0x2edde302
+  kind: POINTER
+  pointee_type_id: 0x91376a97
+}
+pointer_reference {
+  id: 0x2ede10b7
+  kind: POINTER
+  pointee_type_id: 0x9138a441
+}
+pointer_reference {
+  id: 0x2edea7d5
+  kind: POINTER
+  pointee_type_id: 0x913a79c8
+}
+pointer_reference {
+  id: 0x2edf2c38
+  kind: POINTER
+  pointee_type_id: 0x913c567e
+}
+pointer_reference {
+  id: 0x2edf50aa
+  kind: POINTER
+  pointee_type_id: 0x913da434
+}
+pointer_reference {
+  id: 0x2edfae47
+  kind: POINTER
+  pointee_type_id: 0x913e5f80
+}
+pointer_reference {
+  id: 0x2ee07f41
+  kind: POINTER
+  pointee_type_id: 0x91c11b9a
+}
+pointer_reference {
+  id: 0x2ee07f9d
+  kind: POINTER
+  pointee_type_id: 0x91c118ea
+}
+pointer_reference {
+  id: 0x2ee126d9
+  kind: POINTER
+  pointee_type_id: 0x91c47df8
+}
+pointer_reference {
+  id: 0x2ee1b2db
+  kind: POINTER
+  pointee_type_id: 0x91c62df0
+}
+pointer_reference {
+  id: 0x2ee1d7a6
+  kind: POINTER
+  pointee_type_id: 0x91c7b807
+}
+pointer_reference {
+  id: 0x2ee1f497
+  kind: POINTER
+  pointee_type_id: 0x91c734c3
+}
+pointer_reference {
+  id: 0x2ee2a594
+  kind: POINTER
+  pointee_type_id: 0x91ca70cf
+}
+pointer_reference {
+  id: 0x2ee2b147
+  kind: POINTER
+  pointee_type_id: 0x91ca2380
+}
+pointer_reference {
+  id: 0x2ee2b162
+  kind: POINTER
+  pointee_type_id: 0x91ca2317
+}
+pointer_reference {
+  id: 0x2ee2bdd7
+  kind: POINTER
+  pointee_type_id: 0x91ca11c2
+}
+pointer_reference {
+  id: 0x2ee31e41
+  kind: POINTER
+  pointee_type_id: 0x91cc9f9b
+}
+pointer_reference {
+  id: 0x2ee3cbcb
+  kind: POINTER
+  pointee_type_id: 0x91cfc9b1
+}
+pointer_reference {
+  id: 0x2ee5b68c
+  kind: POINTER
+  pointee_type_id: 0x91d63caf
+}
+pointer_reference {
+  id: 0x2ee5ba60
+  kind: POINTER
+  pointee_type_id: 0x91d60f1d
+}
+pointer_reference {
+  id: 0x2ee5cce7
+  kind: POINTER
+  pointee_type_id: 0x91d7d502
+}
+pointer_reference {
+  id: 0x2ee6075d
+  kind: POINTER
+  pointee_type_id: 0x91d8fbe8
+}
+pointer_reference {
+  id: 0x2ee63439
+  kind: POINTER
+  pointee_type_id: 0x91d8367b
+}
+pointer_reference {
+  id: 0x2ee76b64
+  kind: POINTER
+  pointee_type_id: 0x91dd4b0e
+}
+pointer_reference {
+  id: 0x2ee8b8bf
+  kind: POINTER
+  pointee_type_id: 0x91e20463
+}
+pointer_reference {
+  id: 0x2ee8bd35
+  kind: POINTER
+  pointee_type_id: 0x91e2124a
+}
+pointer_reference {
+  id: 0x2ee8bed5
+  kind: POINTER
+  pointee_type_id: 0x91e21dcb
+}
+pointer_reference {
+  id: 0x2ee8c572
+  kind: POINTER
+  pointee_type_id: 0x91e3f355
+}
+pointer_reference {
+  id: 0x2ee8e003
+  kind: POINTER
+  pointee_type_id: 0x91e36693
+}
+pointer_reference {
+  id: 0x2ee94408
+  kind: POINTER
+  pointee_type_id: 0x91e5f6bf
+}
+pointer_reference {
+  id: 0x2ee95f08
+  kind: POINTER
+  pointee_type_id: 0x91e59abf
+}
+pointer_reference {
+  id: 0x2eea222c
+  kind: POINTER
+  pointee_type_id: 0x91e86e2c
+}
+pointer_reference {
+  id: 0x2eea35ba
+  kind: POINTER
+  pointee_type_id: 0x91e83077
+}
+pointer_reference {
+  id: 0x2eeae0b6
+  kind: POINTER
+  pointee_type_id: 0x91eb6447
+}
+pointer_reference {
+  id: 0x2eeb5b0a
+  kind: POINTER
+  pointee_type_id: 0x91ed8ab4
+}
+pointer_reference {
+  id: 0x2eeba30b
+  kind: POINTER
+  pointee_type_id: 0x91ee6ab2
+}
+pointer_reference {
+  id: 0x2eebfa52
+  kind: POINTER
+  pointee_type_id: 0x91ef0fd5
+}
+pointer_reference {
+  id: 0x2eec15a8
+  kind: POINTER
+  pointee_type_id: 0x91f0b03c
+}
+pointer_reference {
+  id: 0x2eec465d
+  kind: POINTER
+  pointee_type_id: 0x91f1ffe8
+}
+pointer_reference {
+  id: 0x2eec4b41
+  kind: POINTER
+  pointee_type_id: 0x91f1cb99
+}
+pointer_reference {
+  id: 0x2eec9396
+  kind: POINTER
+  pointee_type_id: 0x91f2a8c5
+}
+pointer_reference {
+  id: 0x2eedaed0
+  kind: POINTER
+  pointee_type_id: 0x91f65dde
+}
+pointer_reference {
+  id: 0x2eedbcd7
+  kind: POINTER
+  pointee_type_id: 0x91f615c2
+}
+pointer_reference {
+  id: 0x2eeddd14
+  kind: POINTER
+  pointee_type_id: 0x91f792ce
+}
+pointer_reference {
+  id: 0x2eee0119
+  kind: POINTER
+  pointee_type_id: 0x91f8e2fb
+}
+pointer_reference {
+  id: 0x2eee0f8f
+  kind: POINTER
+  pointee_type_id: 0x91f8d8a0
+}
+pointer_reference {
+  id: 0x2eef767c
+  kind: POINTER
+  pointee_type_id: 0x91fd3f6c
+}
+pointer_reference {
+  id: 0x2eef9a5c
+  kind: POINTER
+  pointee_type_id: 0x91fe8fed
+}
+pointer_reference {
+  id: 0x2eefa915
+  kind: POINTER
+  pointee_type_id: 0x91fe42c8
+}
+pointer_reference {
+  id: 0x2ef03743
+  kind: POINTER
+  pointee_type_id: 0x91803b93
+}
+pointer_reference {
+  id: 0x2ef0956f
+  kind: POINTER
+  pointee_type_id: 0x9182b323
+}
+pointer_reference {
+  id: 0x2ef0ccaf
+  kind: POINTER
+  pointee_type_id: 0x9183d422
+}
+pointer_reference {
+  id: 0x2ef14f1a
+  kind: POINTER
+  pointee_type_id: 0x9185daf6
+}
+pointer_reference {
+  id: 0x2ef22e9f
+  kind: POINTER
+  pointee_type_id: 0x91885ce3
+}
+pointer_reference {
+  id: 0x2ef24e68
+  kind: POINTER
+  pointee_type_id: 0x9189df3d
+}
+pointer_reference {
+  id: 0x2ef24f54
+  kind: POINTER
+  pointee_type_id: 0x9189dbcd
+}
+pointer_reference {
+  id: 0x2ef36257
+  kind: POINTER
+  pointee_type_id: 0x918d6fc0
+}
+pointer_reference {
+  id: 0x2ef36b70
+  kind: POINTER
+  pointee_type_id: 0x918d4b5c
+}
+pointer_reference {
+  id: 0x2ef43f67
+  kind: POINTER
+  pointee_type_id: 0x91901b03
+}
+pointer_reference {
+  id: 0x2ef52cf8
+  kind: POINTER
+  pointee_type_id: 0x9194557d
+}
+pointer_reference {
+  id: 0x2ef52eb4
+  kind: POINTER
+  pointee_type_id: 0x91945c4f
+}
+pointer_reference {
+  id: 0x2ef616cf
+  kind: POINTER
+  pointee_type_id: 0x9198bda0
+}
+pointer_reference {
+  id: 0x2ef68e02
+  kind: POINTER
+  pointee_type_id: 0x919ade96
+}
+pointer_reference {
+  id: 0x2ef68e56
+  kind: POINTER
+  pointee_type_id: 0x919adfc7
+}
+pointer_reference {
+  id: 0x2ef6a48a
+  kind: POINTER
+  pointee_type_id: 0x919a74b7
+}
+pointer_reference {
+  id: 0x2ef6a56f
+  kind: POINTER
+  pointee_type_id: 0x919a7322
+}
+pointer_reference {
+  id: 0x2ef8b832
+  kind: POINTER
+  pointee_type_id: 0x91a20657
+}
+pointer_reference {
+  id: 0x2ef8d5bf
+  kind: POINTER
+  pointee_type_id: 0x91a3b063
+}
+pointer_reference {
+  id: 0x2ef976f3
+  kind: POINTER
+  pointee_type_id: 0x91a53d53
+}
+pointer_reference {
+  id: 0x2ef99a6d
+  kind: POINTER
+  pointee_type_id: 0x91a68f29
+}
+pointer_reference {
+  id: 0x2ef9bd9c
+  kind: POINTER
+  pointee_type_id: 0x91a610ef
+}
+pointer_reference {
+  id: 0x2ef9d78d
+  kind: POINTER
+  pointee_type_id: 0x91a7b8a9
+}
+pointer_reference {
+  id: 0x2ef9f6ce
+  kind: POINTER
+  pointee_type_id: 0x91a73da4
+}
+pointer_reference {
+  id: 0x2efa14a9
+  kind: POINTER
+  pointee_type_id: 0x91a8b43b
+}
+pointer_reference {
+  id: 0x2efa61a4
+  kind: POINTER
+  pointee_type_id: 0x91a9600d
+}
+pointer_reference {
+  id: 0x2efa73f5
+  kind: POINTER
+  pointee_type_id: 0x91a92948
+}
+pointer_reference {
+  id: 0x2efa9e52
+  kind: POINTER
+  pointee_type_id: 0x91aa9fd5
+}
+pointer_reference {
+  id: 0x2efb4798
+  kind: POINTER
+  pointee_type_id: 0x91adf8fd
+}
+pointer_reference {
+  id: 0x2efbf414
+  kind: POINTER
+  pointee_type_id: 0x91af36cd
+}
+pointer_reference {
+  id: 0x2efc853f
+  kind: POINTER
+  pointee_type_id: 0x91b2f262
+}
+pointer_reference {
+  id: 0x2efd41f1
+  kind: POINTER
+  pointee_type_id: 0x91b5e15a
+}
+pointer_reference {
+  id: 0x2efd5036
+  kind: POINTER
+  pointee_type_id: 0x91b5a647
+}
+pointer_reference {
+  id: 0x2efda0ad
+  kind: POINTER
+  pointee_type_id: 0x91b6642a
+}
+pointer_reference {
+  id: 0x2efdce55
+  kind: POINTER
+  pointee_type_id: 0x91b7dfcb
+}
+pointer_reference {
+  id: 0x2efe4971
+  kind: POINTER
+  pointee_type_id: 0x91b9c359
+}
+pointer_reference {
+  id: 0x2efe8065
+  kind: POINTER
+  pointee_type_id: 0x91bae70a
+}
+pointer_reference {
+  id: 0x2effd3d1
+  kind: POINTER
+  pointee_type_id: 0x91bfa9d8
+}
+pointer_reference {
+  id: 0x2effde7d
+  kind: POINTER
+  pointee_type_id: 0x91bf9f6b
+}
+pointer_reference {
+  id: 0x2effe7f2
+  kind: POINTER
+  pointee_type_id: 0x91bf7954
+}
+pointer_reference {
+  id: 0x2f007136
+  kind: POINTER
+  pointee_type_id: 0x96412245
+}
+pointer_reference {
+  id: 0x2f031c3f
+  kind: POINTER
+  pointee_type_id: 0x964c9660
+}
+pointer_reference {
+  id: 0x2f0329e2
+  kind: POINTER
+  pointee_type_id: 0x964c4117
+}
+pointer_reference {
+  id: 0x2f0359bb
+  kind: POINTER
+  pointee_type_id: 0x964d8070
+}
+pointer_reference {
+  id: 0x2f03dabb
+  kind: POINTER
+  pointee_type_id: 0x964f8c71
+}
+pointer_reference {
+  id: 0x2f054704
+  kind: POINTER
+  pointee_type_id: 0x9655fa8e
+}
+pointer_reference {
+  id: 0x2f05fd8b
+  kind: POINTER
+  pointee_type_id: 0x965710b2
+}
+pointer_reference {
+  id: 0x2f070300
+  kind: POINTER
+  pointee_type_id: 0x965cea9d
+}
+pointer_reference {
+  id: 0x2f083be9
+  kind: POINTER
+  pointee_type_id: 0x96600939
+}
+pointer_reference {
+  id: 0x2f0e69de
+  kind: POINTER
+  pointee_type_id: 0x967941e5
+}
+pointer_reference {
+  id: 0x2f0ef70e
+  kind: POINTER
+  pointee_type_id: 0x967b3aa7
+}
+pointer_reference {
+  id: 0x2f0f52dd
+  kind: POINTER
+  pointee_type_id: 0x967dadeb
+}
+pointer_reference {
+  id: 0x2f107f13
+  kind: POINTER
+  pointee_type_id: 0x96011ad3
+}
+pointer_reference {
+  id: 0x2f1272b3
+  kind: POINTER
+  pointee_type_id: 0x96092c51
+}
+pointer_reference {
+  id: 0x2f184276
+  kind: POINTER
+  pointee_type_id: 0x9621ef47
+}
+pointer_reference {
+  id: 0x2f18acee
+  kind: POINTER
+  pointee_type_id: 0x96225525
+}
+pointer_reference {
+  id: 0x2f194b72
+  kind: POINTER
+  pointee_type_id: 0x9625cb57
+}
+pointer_reference {
+  id: 0x2f1a6bce
+  kind: POINTER
+  pointee_type_id: 0x962949a5
+}
+pointer_reference {
+  id: 0x2f1af790
+  kind: POINTER
+  pointee_type_id: 0x962b38df
+}
+pointer_reference {
+  id: 0x2f1b138b
+  kind: POINTER
+  pointee_type_id: 0x962ca8b2
+}
+pointer_reference {
+  id: 0x2f1b9487
+  kind: POINTER
+  pointee_type_id: 0x962eb483
+}
+pointer_reference {
+  id: 0x2f1ba27c
+  kind: POINTER
+  pointee_type_id: 0x962e6f6d
+}
+pointer_reference {
+  id: 0x2f1d40ee
+  kind: POINTER
+  pointee_type_id: 0x9635e526
+}
+pointer_reference {
+  id: 0x2f1d9bf5
+  kind: POINTER
+  pointee_type_id: 0x9636894a
+}
+pointer_reference {
+  id: 0x2f1f19f7
+  kind: POINTER
+  pointee_type_id: 0x963c8142
+}
+pointer_reference {
+  id: 0x2f1f429a
+  kind: POINTER
+  pointee_type_id: 0x963decf6
+}
+pointer_reference {
+  id: 0x2f1fe96a
+  kind: POINTER
+  pointee_type_id: 0x963f4336
+}
+pointer_reference {
+  id: 0x2f2111b8
+  kind: POINTER
+  pointee_type_id: 0x96c4a07c
+}
+pointer_reference {
+  id: 0x2f211810
+  kind: POINTER
+  pointee_type_id: 0x96c486df
+}
+pointer_reference {
+  id: 0x2f21d730
+  kind: POINTER
+  pointee_type_id: 0x96c7ba5c
+}
+pointer_reference {
+  id: 0x2f2278cb
+  kind: POINTER
+  pointee_type_id: 0x96c905b2
+}
+pointer_reference {
+  id: 0x2f242316
+  kind: POINTER
+  pointee_type_id: 0x96d06ac6
+}
+pointer_reference {
+  id: 0x2f244c08
+  kind: POINTER
+  pointee_type_id: 0x96d1d6be
+}
+pointer_reference {
+  id: 0x2f247013
+  kind: POINTER
+  pointee_type_id: 0x96d126d3
+}
+pointer_reference {
+  id: 0x2f25d7c2
+  kind: POINTER
+  pointee_type_id: 0x96d7b994
+}
+pointer_reference {
+  id: 0x2f268c34
+  kind: POINTER
+  pointee_type_id: 0x96dad64f
+}
+pointer_reference {
+  id: 0x2f2691e9
+  kind: POINTER
+  pointee_type_id: 0x96daa13b
+}
+pointer_reference {
+  id: 0x2f27501b
+  kind: POINTER
+  pointee_type_id: 0x96dda6f2
+}
+pointer_reference {
+  id: 0x2f288c5c
+  kind: POINTER
+  pointee_type_id: 0x96e2d7ed
+}
+pointer_reference {
+  id: 0x2f294863
+  kind: POINTER
+  pointee_type_id: 0x96e5c711
+}
+pointer_reference {
+  id: 0x2f2a0ed9
+  kind: POINTER
+  pointee_type_id: 0x96e8ddfa
+}
+pointer_reference {
+  id: 0x2f2a1fcd
+  kind: POINTER
+  pointee_type_id: 0x96e899a8
+}
+pointer_reference {
+  id: 0x2f2a3e16
+  kind: POINTER
+  pointee_type_id: 0x96e81ec5
+}
+pointer_reference {
+  id: 0x2f2aa245
+  kind: POINTER
+  pointee_type_id: 0x96ea6f8b
+}
+pointer_reference {
+  id: 0x2f2b3ad1
+  kind: POINTER
+  pointee_type_id: 0x96ec0dda
+}
+pointer_reference {
+  id: 0x2f2bcae6
+  kind: POINTER
+  pointee_type_id: 0x96efcd05
+}
+pointer_reference {
+  id: 0x2f2bdc35
+  kind: POINTER
+  pointee_type_id: 0x96ef964a
+}
+pointer_reference {
+  id: 0x2f2c9c0e
+  kind: POINTER
+  pointee_type_id: 0x96f296a4
+}
+pointer_reference {
+  id: 0x2f30a05a
+  kind: POINTER
+  pointee_type_id: 0x968267f4
+}
+pointer_reference {
+  id: 0x2f324891
+  kind: POINTER
+  pointee_type_id: 0x9689c4da
+}
+pointer_reference {
+  id: 0x2f3288e0
+  kind: POINTER
+  pointee_type_id: 0x968ac51c
+}
+pointer_reference {
+  id: 0x2f36a854
+  kind: POINTER
+  pointee_type_id: 0x969a47cd
+}
+pointer_reference {
+  id: 0x2f37042d
+  kind: POINTER
+  pointee_type_id: 0x969cf62b
+}
+pointer_reference {
+  id: 0x2f38c503
+  kind: POINTER
+  pointee_type_id: 0x96a3f292
+}
+pointer_reference {
+  id: 0x2f396978
+  kind: POINTER
+  pointee_type_id: 0x96a5437c
+}
+pointer_reference {
+  id: 0x2f3a36f7
+  kind: POINTER
+  pointee_type_id: 0x96a83d40
+}
+pointer_reference {
+  id: 0x2f3ac5ae
+  kind: POINTER
+  pointee_type_id: 0x96abf026
+}
+pointer_reference {
+  id: 0x2f3b3749
+  kind: POINTER
+  pointee_type_id: 0x96ac3bba
+}
+pointer_reference {
+  id: 0x2f3c3f20
+  kind: POINTER
+  pointee_type_id: 0x96b01a1d
+}
+pointer_reference {
+  id: 0x2f3d305e
+  kind: POINTER
+  pointee_type_id: 0x96b427e5
+}
+pointer_reference {
+  id: 0x2f3d6801
+  kind: POINTER
+  pointee_type_id: 0x96b5469b
+}
+pointer_reference {
+  id: 0x2f3dfe58
+  kind: POINTER
+  pointee_type_id: 0x96b71ffd
+}
+pointer_reference {
+  id: 0x2f3e1dbd
+  kind: POINTER
+  pointee_type_id: 0x96b8906b
+}
+pointer_reference {
+  id: 0x2f3e5017
+  kind: POINTER
+  pointee_type_id: 0x96b9a6c2
+}
+pointer_reference {
+  id: 0x2f3f4baa
+  kind: POINTER
+  pointee_type_id: 0x96bdc834
+}
+pointer_reference {
+  id: 0x2f40452b
+  kind: POINTER
+  pointee_type_id: 0x9741f230
+}
+pointer_reference {
+  id: 0x2f415732
+  kind: POINTER
+  pointee_type_id: 0x9745ba54
+}
+pointer_reference {
+  id: 0x2f416d6f
+  kind: POINTER
+  pointee_type_id: 0x97455322
+}
+pointer_reference {
+  id: 0x2f41bf29
+  kind: POINTER
+  pointee_type_id: 0x97461a3a
+}
+pointer_reference {
+  id: 0x2f42683f
+  kind: POINTER
+  pointee_type_id: 0x97494660
+}
+pointer_reference {
+  id: 0x2f434d15
+  kind: POINTER
+  pointee_type_id: 0x974dd2c8
+}
+pointer_reference {
+  id: 0x2f43a458
+  kind: POINTER
+  pointee_type_id: 0x974e77ff
+}
+pointer_reference {
+  id: 0x2f46ac84
+  kind: POINTER
+  pointee_type_id: 0x975a548f
+}
+pointer_reference {
+  id: 0x2f4ac19c
+  kind: POINTER
+  pointee_type_id: 0x976be0ec
+}
+pointer_reference {
+  id: 0x2f4d85b2
+  kind: POINTER
+  pointee_type_id: 0x9776f057
+}
+pointer_reference {
+  id: 0x2f4eca66
+  kind: POINTER
+  pointee_type_id: 0x977bcf07
+}
+pointer_reference {
+  id: 0x2f4f9f95
+  kind: POINTER
+  pointee_type_id: 0x977e98cb
+}
+pointer_reference {
+  id: 0x2f4fa9c1
+  kind: POINTER
+  pointee_type_id: 0x977e419a
+}
+pointer_reference {
+  id: 0x2f5073a5
+  kind: POINTER
+  pointee_type_id: 0x97012809
+}
+pointer_reference {
+  id: 0x2f509af6
+  kind: POINTER
+  pointee_type_id: 0x97028d47
+}
+pointer_reference {
+  id: 0x2f50a983
+  kind: POINTER
+  pointee_type_id: 0x97024092
+}
+pointer_reference {
+  id: 0x2f515c44
+  kind: POINTER
+  pointee_type_id: 0x9705978c
+}
+pointer_reference {
+  id: 0x2f534341
+  kind: POINTER
+  pointee_type_id: 0x970deb9a
+}
+pointer_reference {
+  id: 0x2f53e65e
+  kind: POINTER
+  pointee_type_id: 0x970f7fe5
+}
+pointer_reference {
+  id: 0x2f53f19b
+  kind: POINTER
+  pointee_type_id: 0x970f20f0
+}
+pointer_reference {
+  id: 0x2f54171f
+  kind: POINTER
+  pointee_type_id: 0x9710bae0
+}
+pointer_reference {
+  id: 0x2f575961
+  kind: POINTER
+  pointee_type_id: 0x971d831a
+}
+pointer_reference {
+  id: 0x2f582494
+  kind: POINTER
+  pointee_type_id: 0x972074cd
+}
+pointer_reference {
+  id: 0x2f58e605
+  kind: POINTER
+  pointee_type_id: 0x97237e8b
+}
+pointer_reference {
+  id: 0x2f595b5a
+  kind: POINTER
+  pointee_type_id: 0x97258bf7
+}
+pointer_reference {
+  id: 0x2f5d12e5
+  kind: POINTER
+  pointee_type_id: 0x9734ad0b
+}
+pointer_reference {
+  id: 0x2f5d21aa
+  kind: POINTER
+  pointee_type_id: 0x97346037
+}
+pointer_reference {
+  id: 0x2f5d51fa
+  kind: POINTER
+  pointee_type_id: 0x9735a176
+}
+pointer_reference {
+  id: 0x2f5e345a
+  kind: POINTER
+  pointee_type_id: 0x973837f7
+}
+pointer_reference {
+  id: 0x2f5ea9dc
+  kind: POINTER
+  pointee_type_id: 0x973a41ee
+}
+pointer_reference {
+  id: 0x2f5f6076
+  kind: POINTER
+  pointee_type_id: 0x973d6744
+}
+pointer_reference {
+  id: 0x2f5f6e87
+  kind: POINTER
+  pointee_type_id: 0x973d5c81
+}
+pointer_reference {
+  id: 0x2f5f8053
+  kind: POINTER
+  pointee_type_id: 0x973ee7d0
+}
+pointer_reference {
+  id: 0x2f5fcbf3
+  kind: POINTER
+  pointee_type_id: 0x973fc952
+}
+pointer_reference {
+  id: 0x2f5fce77
+  kind: POINTER
+  pointee_type_id: 0x973fdf40
+}
+pointer_reference {
+  id: 0x2f606668
+  kind: POINTER
+  pointee_type_id: 0x97c17f3f
+}
+pointer_reference {
+  id: 0x2f60ff16
+  kind: POINTER
+  pointee_type_id: 0x97c31ac6
+}
+pointer_reference {
+  id: 0x2f61e9c9
+  kind: POINTER
+  pointee_type_id: 0x97c741b9
+}
+pointer_reference {
+  id: 0x2f63630f
+  kind: POINTER
+  pointee_type_id: 0x97cd6aa0
+}
+pointer_reference {
+  id: 0x2f645894
+  kind: POINTER
+  pointee_type_id: 0x97d184cf
+}
+pointer_reference {
+  id: 0x2f649478
+  kind: POINTER
+  pointee_type_id: 0x97d2b77c
+}
+pointer_reference {
+  id: 0x2f64b394
+  kind: POINTER
+  pointee_type_id: 0x97d228cf
+}
+pointer_reference {
+  id: 0x2f64bd24
+  kind: POINTER
+  pointee_type_id: 0x97d2120d
+}
+pointer_reference {
+  id: 0x2f65c64c
+  kind: POINTER
+  pointee_type_id: 0x97d7ffaf
+}
+pointer_reference {
+  id: 0x2f6628e3
+  kind: POINTER
+  pointee_type_id: 0x97d84511
+}
+pointer_reference {
+  id: 0x2f67350a
+  kind: POINTER
+  pointee_type_id: 0x97dc32b4
+}
+pointer_reference {
+  id: 0x2f6a769c
+  kind: POINTER
+  pointee_type_id: 0x97e93cee
+}
+pointer_reference {
+  id: 0x2f6c6167
+  kind: POINTER
+  pointee_type_id: 0x97f16301
+}
+pointer_reference {
+  id: 0x2f6cfd5c
+  kind: POINTER
+  pointee_type_id: 0x97f313ee
+}
+pointer_reference {
+  id: 0x2f6e7045
+  kind: POINTER
+  pointee_type_id: 0x97f9278b
+}
+pointer_reference {
+  id: 0x2f6ef74a
+  kind: POINTER
+  pointee_type_id: 0x97fb3bb6
+}
+pointer_reference {
+  id: 0x2f6f95a3
+  kind: POINTER
+  pointee_type_id: 0x97feb011
+}
+pointer_reference {
+  id: 0x2f70aaf0
+  kind: POINTER
+  pointee_type_id: 0x97824d5d
+}
+pointer_reference {
+  id: 0x2f72cbf9
+  kind: POINTER
+  pointee_type_id: 0x978bc97a
+}
+pointer_reference {
+  id: 0x2f73a0d7
+  kind: POINTER
+  pointee_type_id: 0x978e65c1
+}
+pointer_reference {
+  id: 0x2f73da3b
+  kind: POINTER
+  pointee_type_id: 0x978f8e70
+}
+pointer_reference {
+  id: 0x2f742e16
+  kind: POINTER
+  pointee_type_id: 0x97905ec6
+}
+pointer_reference {
+  id: 0x2f756415
+  kind: POINTER
+  pointee_type_id: 0x979576c8
+}
+pointer_reference {
+  id: 0x2f764d18
+  kind: POINTER
+  pointee_type_id: 0x9799d2fd
+}
+pointer_reference {
+  id: 0x2f78c9b9
+  kind: POINTER
+  pointee_type_id: 0x97a3c07a
+}
+pointer_reference {
+  id: 0x2f7a4465
+  kind: POINTER
+  pointee_type_id: 0x97a9f709
+}
+pointer_reference {
+  id: 0x2f7b7919
+  kind: POINTER
+  pointee_type_id: 0x97ad02f9
+}
+pointer_reference {
+  id: 0x2f7be10e
+  kind: POINTER
+  pointee_type_id: 0x97af62a4
+}
+pointer_reference {
+  id: 0x2f7c9793
+  kind: POINTER
+  pointee_type_id: 0x97b2b8d0
+}
+pointer_reference {
+  id: 0x2f7f5489
+  kind: POINTER
+  pointee_type_id: 0x97bdb4b8
+}
+pointer_reference {
+  id: 0x2f805571
+  kind: POINTER
+  pointee_type_id: 0x9441b35b
+}
+pointer_reference {
+  id: 0x2f80ed7b
+  kind: POINTER
+  pointee_type_id: 0x94435373
+}
+pointer_reference {
+  id: 0x2f814207
+  kind: POINTER
+  pointee_type_id: 0x9445ee80
+}
+pointer_reference {
+  id: 0x2f81f017
+  kind: POINTER
+  pointee_type_id: 0x944726c2
+}
+pointer_reference {
+  id: 0x2f82f95c
+  kind: POINTER
+  pointee_type_id: 0x944b03ec
+}
+pointer_reference {
+  id: 0x2f830764
+  kind: POINTER
+  pointee_type_id: 0x944cfb0d
+}
+pointer_reference {
+  id: 0x2f830879
+  kind: POINTER
+  pointee_type_id: 0x944cc77b
+}
+pointer_reference {
+  id: 0x2f840787
+  kind: POINTER
+  pointee_type_id: 0x9450f880
+}
+pointer_reference {
+  id: 0x2f8442f1
+  kind: POINTER
+  pointee_type_id: 0x9451ed5a
+}
+pointer_reference {
+  id: 0x2f8466bd
+  kind: POINTER
+  pointee_type_id: 0x94517c6b
+}
+pointer_reference {
+  id: 0x2f85fa56
+  kind: POINTER
+  pointee_type_id: 0x94570fc4
+}
+pointer_reference {
+  id: 0x2f892792
+  kind: POINTER
+  pointee_type_id: 0x946478d7
+}
+pointer_reference {
+  id: 0x2f8a19c1
+  kind: POINTER
+  pointee_type_id: 0x94688199
+}
+pointer_reference {
+  id: 0x2f8aae7a
+  kind: POINTER
+  pointee_type_id: 0x946a5f74
+}
+pointer_reference {
+  id: 0x2f8ce7d9
+  kind: POINTER
+  pointee_type_id: 0x947379f8
+}
+pointer_reference {
+  id: 0x2f8d0c79
+  kind: POINTER
+  pointee_type_id: 0x9474d77b
+}
+pointer_reference {
+  id: 0x2f8df7dd
+  kind: POINTER
+  pointee_type_id: 0x947739e9
+}
+pointer_reference {
+  id: 0x2f8e960d
+  kind: POINTER
+  pointee_type_id: 0x947abeaa
+}
+pointer_reference {
+  id: 0x2f8ebbca
+  kind: POINTER
+  pointee_type_id: 0x947a09b6
+}
+pointer_reference {
+  id: 0x2f9124d1
+  kind: POINTER
+  pointee_type_id: 0x940475db
+}
+pointer_reference {
+  id: 0x2f9174cf
+  kind: POINTER
+  pointee_type_id: 0x940535a0
+}
+pointer_reference {
+  id: 0x2f9177d3
+  kind: POINTER
+  pointee_type_id: 0x940539d2
+}
+pointer_reference {
+  id: 0x2f919e03
+  kind: POINTER
+  pointee_type_id: 0x94069e92
+}
+pointer_reference {
+  id: 0x2f91cf68
+  kind: POINTER
+  pointee_type_id: 0x9407db3f
+}
+pointer_reference {
+  id: 0x2f91f200
+  kind: POINTER
+  pointee_type_id: 0x94072e9c
+}
+pointer_reference {
+  id: 0x2f9207f1
+  kind: POINTER
+  pointee_type_id: 0x9408f958
+}
+pointer_reference {
+  id: 0x2f928fc2
+  kind: POINTER
+  pointee_type_id: 0x940ad996
+}
+pointer_reference {
+  id: 0x2f92a922
+  kind: POINTER
+  pointee_type_id: 0x940a4214
+}
+pointer_reference {
+  id: 0x2f932a1e
+  kind: POINTER
+  pointee_type_id: 0x940c4ee6
+}
+pointer_reference {
+  id: 0x2f94b64f
+  kind: POINTER
+  pointee_type_id: 0x94123fa1
+}
+pointer_reference {
+  id: 0x2f950b83
+  kind: POINTER
+  pointee_type_id: 0x9414c891
+}
+pointer_reference {
+  id: 0x2f9515bf
+  kind: POINTER
+  pointee_type_id: 0x9414b060
+}
+pointer_reference {
+  id: 0x2f988f89
+  kind: POINTER
+  pointee_type_id: 0x9422d8b9
+}
+pointer_reference {
+  id: 0x2f99c0f3
+  kind: POINTER
+  pointee_type_id: 0x9427e550
+}
+pointer_reference {
+  id: 0x2f99c988
+  kind: POINTER
+  pointee_type_id: 0x9427c0bf
+}
+pointer_reference {
+  id: 0x2f99f236
+  kind: POINTER
+  pointee_type_id: 0x94272e47
+}
+pointer_reference {
+  id: 0x2f9a9ee6
+  kind: POINTER
+  pointee_type_id: 0x942a9d07
+}
+pointer_reference {
+  id: 0x2f9ae186
+  kind: POINTER
+  pointee_type_id: 0x942b6084
+}
+pointer_reference {
+  id: 0x2f9ce49f
+  kind: POINTER
+  pointee_type_id: 0x943374e3
+}
+pointer_reference {
+  id: 0x2f9d83f0
+  kind: POINTER
+  pointee_type_id: 0x9436e95e
+}
+pointer_reference {
+  id: 0x2f9e5474
+  kind: POINTER
+  pointee_type_id: 0x9439b74e
+}
+pointer_reference {
+  id: 0x2f9ee7ee
+  kind: POINTER
+  pointee_type_id: 0x943b7925
+}
+pointer_reference {
+  id: 0x2f9f3d56
+  kind: POINTER
+  pointee_type_id: 0x943c13c4
+}
+pointer_reference {
+  id: 0x2fa0c176
+  kind: POINTER
+  pointee_type_id: 0x94c3e345
+}
+pointer_reference {
+  id: 0x2fa300bc
+  kind: POINTER
+  pointee_type_id: 0x94cce46c
+}
+pointer_reference {
+  id: 0x2fa46622
+  kind: POINTER
+  pointee_type_id: 0x94d17e14
+}
+pointer_reference {
+  id: 0x2fa483c8
+  kind: POINTER
+  pointee_type_id: 0x94d2e9bf
+}
+pointer_reference {
+  id: 0x2fa521bd
+  kind: POINTER
+  pointee_type_id: 0x94d4606a
+}
+pointer_reference {
+  id: 0x2fa652dc
+  kind: POINTER
+  pointee_type_id: 0x94d9adef
+}
+pointer_reference {
+  id: 0x2fa6e63d
+  kind: POINTER
+  pointee_type_id: 0x94db7e69
+}
+pointer_reference {
+  id: 0x2fa73aae
+  kind: POINTER
+  pointee_type_id: 0x94dc0c27
+}
+pointer_reference {
+  id: 0x2fa7835a
+  kind: POINTER
+  pointee_type_id: 0x94deebf7
+}
+pointer_reference {
+  id: 0x2fa7d046
+  kind: POINTER
+  pointee_type_id: 0x94dfa784
+}
+pointer_reference {
+  id: 0x2fa7f388
+  kind: POINTER
+  pointee_type_id: 0x94df28bf
+}
+pointer_reference {
+  id: 0x2fa88d73
+  kind: POINTER
+  pointee_type_id: 0x94e2d352
+}
+pointer_reference {
+  id: 0x2fa919f1
+  kind: POINTER
+  pointee_type_id: 0x94e48158
+}
+pointer_reference {
+  id: 0x2fa99c67
+  kind: POINTER
+  pointee_type_id: 0x94e69702
+}
+pointer_reference {
+  id: 0x2fa9a916
+  kind: POINTER
+  pointee_type_id: 0x94e642c6
+}
+pointer_reference {
+  id: 0x2faa1246
+  kind: POINTER
+  pointee_type_id: 0x94e8af84
+}
+pointer_reference {
+  id: 0x2faa19f5
+  kind: POINTER
+  pointee_type_id: 0x94e8814a
+}
+pointer_reference {
+  id: 0x2faac623
+  kind: POINTER
+  pointee_type_id: 0x94ebfe13
+}
+pointer_reference {
+  id: 0x2faaffbd
+  kind: POINTER
+  pointee_type_id: 0x94eb1868
+}
+pointer_reference {
+  id: 0x2fab08ae
+  kind: POINTER
+  pointee_type_id: 0x94ecc425
+}
+pointer_reference {
+  id: 0x2fab72b6
+  kind: POINTER
+  pointee_type_id: 0x94ed2c45
+}
+pointer_reference {
+  id: 0x2fac8db0
+  kind: POINTER
+  pointee_type_id: 0x94f2d05c
+}
+pointer_reference {
+  id: 0x2fae1014
+  kind: POINTER
+  pointee_type_id: 0x94f8a6cc
+}
+pointer_reference {
+  id: 0x2fb00ad9
+  kind: POINTER
+  pointee_type_id: 0x9480cdfa
+}
+pointer_reference {
+  id: 0x2fb1b820
+  kind: POINTER
+  pointee_type_id: 0x9486061c
+}
+pointer_reference {
+  id: 0x2fb2b385
+  kind: POINTER
+  pointee_type_id: 0x948a2888
+}
+pointer_reference {
+  id: 0x2fb389b8
+  kind: POINTER
+  pointee_type_id: 0x948ec07f
+}
+pointer_reference {
+  id: 0x2fb495bb
+  kind: POINTER
+  pointee_type_id: 0x9492b073
+}
+pointer_reference {
+  id: 0x2fb5a9f3
+  kind: POINTER
+  pointee_type_id: 0x94964152
+}
+pointer_reference {
+  id: 0x2fb647c0
+  kind: POINTER
+  pointee_type_id: 0x9499f99d
+}
+pointer_reference {
+  id: 0x2fb6989d
+  kind: POINTER
+  pointee_type_id: 0x949a84eb
+}
+pointer_reference {
+  id: 0x2fb7d1ee
+  kind: POINTER
+  pointee_type_id: 0x949fa126
+}
+pointer_reference {
+  id: 0x2fb994f1
+  kind: POINTER
+  pointee_type_id: 0x94a6b558
+}
+pointer_reference {
+  id: 0x2fbbbd2f
+  kind: POINTER
+  pointee_type_id: 0x94ae1223
+}
+pointer_reference {
+  id: 0x2fbc3f70
+  kind: POINTER
+  pointee_type_id: 0x94b01b5e
+}
+pointer_reference {
+  id: 0x2fbd4bba
+  kind: POINTER
+  pointee_type_id: 0x94b5c877
+}
+pointer_reference {
+  id: 0x2fbd64da
+  kind: POINTER
+  pointee_type_id: 0x94b575f7
+}
+pointer_reference {
+  id: 0x2fbd760b
+  kind: POINTER
+  pointee_type_id: 0x94b53eb0
+}
+pointer_reference {
+  id: 0x2fbe6814
+  kind: POINTER
+  pointee_type_id: 0x94b946cc
+}
+pointer_reference {
+  id: 0x2fc06ea0
+  kind: POINTER
+  pointee_type_id: 0x95415c1d
+}
+pointer_reference {
+  id: 0x2fc09bbf
+  kind: POINTER
+  pointee_type_id: 0x95428860
+}
+pointer_reference {
+  id: 0x2fc0a389
+  kind: POINTER
+  pointee_type_id: 0x954268bb
+}
+pointer_reference {
+  id: 0x2fc0f095
+  kind: POINTER
+  pointee_type_id: 0x954324c8
+}
+pointer_reference {
+  id: 0x2fc1720f
+  kind: POINTER
+  pointee_type_id: 0x95452ea3
+}
+pointer_reference {
+  id: 0x2fc18808
+  kind: POINTER
+  pointee_type_id: 0x9546c6bc
+}
+pointer_reference {
+  id: 0x2fc2aeab
+  kind: POINTER
+  pointee_type_id: 0x954a5c30
+}
+pointer_reference {
+  id: 0x2fc40311
+  kind: POINTER
+  pointee_type_id: 0x9550eada
+}
+pointer_reference {
+  id: 0x2fc40583
+  kind: POINTER
+  pointee_type_id: 0x9550f091
+}
+pointer_reference {
+  id: 0x2fc4a4b7
+  kind: POINTER
+  pointee_type_id: 0x95527441
+}
+pointer_reference {
+  id: 0x2fc4c761
+  kind: POINTER
+  pointee_type_id: 0x9553fb18
+}
+pointer_reference {
+  id: 0x2fc4e84d
+  kind: POINTER
+  pointee_type_id: 0x955347a9
+}
+pointer_reference {
+  id: 0x2fc57d27
+  kind: POINTER
+  pointee_type_id: 0x95551200
+}
+pointer_reference {
+  id: 0x2fc6747c
+  kind: POINTER
+  pointee_type_id: 0x9559376c
+}
+pointer_reference {
+  id: 0x2fc68c73
+  kind: POINTER
+  pointee_type_id: 0x955ad750
+}
+pointer_reference {
+  id: 0x2fc7c937
+  kind: POINTER
+  pointee_type_id: 0x955fc241
+}
+pointer_reference {
+  id: 0x2fc7e631
+  kind: POINTER
+  pointee_type_id: 0x955f7e5a
+}
+pointer_reference {
+  id: 0x2fc964c0
+  kind: POINTER
+  pointee_type_id: 0x9565759f
+}
+pointer_reference {
+  id: 0x2fcafc05
+  kind: POINTER
+  pointee_type_id: 0x956b1688
+}
+pointer_reference {
+  id: 0x2fcc6bd6
+  kind: POINTER
+  pointee_type_id: 0x957149c4
+}
+pointer_reference {
+  id: 0x2fccc15b
+  kind: POINTER
+  pointee_type_id: 0x9573e3f3
+}
+pointer_reference {
+  id: 0x2fcf08af
+  kind: POINTER
+  pointee_type_id: 0x957cc422
+}
+pointer_reference {
+  id: 0x2fd17240
+  kind: POINTER
+  pointee_type_id: 0x95052f9e
+}
+pointer_reference {
+  id: 0x2fd46ff4
+  kind: POINTER
+  pointee_type_id: 0x9511594d
+}
+pointer_reference {
+  id: 0x2fd86c98
+  kind: POINTER
+  pointee_type_id: 0x952154fc
+}
+pointer_reference {
+  id: 0x2fdb05a5
+  kind: POINTER
+  pointee_type_id: 0x952cf00a
+}
+pointer_reference {
+  id: 0x2fdb6288
+  kind: POINTER
+  pointee_type_id: 0x952d6cbd
+}
+pointer_reference {
+  id: 0x2fdbb151
+  kind: POINTER
+  pointee_type_id: 0x952e23d9
+}
+pointer_reference {
+  id: 0x2fdd4e21
+  kind: POINTER
+  pointee_type_id: 0x9535de1a
+}
+pointer_reference {
+  id: 0x2fddaeaf
+  kind: POINTER
+  pointee_type_id: 0x95365c21
+}
+pointer_reference {
+  id: 0x2fdf50ac
+  kind: POINTER
+  pointee_type_id: 0x953da42f
+}
+pointer_reference {
+  id: 0x2fe002b6
+  kind: POINTER
+  pointee_type_id: 0x95c0ec46
+}
+pointer_reference {
+  id: 0x2fe06892
+  kind: POINTER
+  pointee_type_id: 0x95c144d5
+}
+pointer_reference {
+  id: 0x2fe0e0ec
+  kind: POINTER
+  pointee_type_id: 0x95c3652e
+}
+pointer_reference {
+  id: 0x2fe2063c
+  kind: POINTER
+  pointee_type_id: 0x95c8fe6f
+}
+pointer_reference {
+  id: 0x2fe2067c
+  kind: POINTER
+  pointee_type_id: 0x95c8ff6f
+}
+pointer_reference {
+  id: 0x2fe25883
+  kind: POINTER
+  pointee_type_id: 0x95c98491
+}
+pointer_reference {
+  id: 0x2fe3d7ba
+  kind: POINTER
+  pointee_type_id: 0x95cfb877
+}
+pointer_reference {
+  id: 0x2fe3def6
+  kind: POINTER
+  pointee_type_id: 0x95cf9d45
+}
+pointer_reference {
+  id: 0x2fe5b8b9
+  kind: POINTER
+  pointee_type_id: 0x95d60479
+}
+pointer_reference {
+  id: 0x2fe5cd8e
+  kind: POINTER
+  pointee_type_id: 0x95d7d0a4
+}
+pointer_reference {
+  id: 0x2fe70c6a
+  kind: POINTER
+  pointee_type_id: 0x95dcd734
+}
+pointer_reference {
+  id: 0x2fe9613c
+  kind: POINTER
+  pointee_type_id: 0x95e5626e
+}
+pointer_reference {
+  id: 0x2fe9a253
+  kind: POINTER
+  pointee_type_id: 0x95e66fd0
+}
+pointer_reference {
+  id: 0x2feb5e20
+  kind: POINTER
+  pointee_type_id: 0x95ed9e1c
+}
+pointer_reference {
+  id: 0x2fec9986
+  kind: POINTER
+  pointee_type_id: 0x95f28084
+}
+pointer_reference {
+  id: 0x2fed2c49
+  kind: POINTER
+  pointee_type_id: 0x95f457b8
+}
+pointer_reference {
+  id: 0x2fee15d8
+  kind: POINTER
+  pointee_type_id: 0x95f8b1fc
+}
+pointer_reference {
+  id: 0x2fee58d9
+  kind: POINTER
+  pointee_type_id: 0x95f985fa
+}
+pointer_reference {
+  id: 0x2ff1e3a6
+  kind: POINTER
+  pointee_type_id: 0x95876807
+}
+pointer_reference {
+  id: 0x2ff3684e
+  kind: POINTER
+  pointee_type_id: 0x958d47a6
+}
+pointer_reference {
+  id: 0x2ff45622
+  kind: POINTER
+  pointee_type_id: 0x9591be17
+}
+pointer_reference {
+  id: 0x2ff4fd81
+  kind: POINTER
+  pointee_type_id: 0x9593109b
+}
+pointer_reference {
+  id: 0x2ff5fc59
+  kind: POINTER
+  pointee_type_id: 0x959717f8
+}
+pointer_reference {
+  id: 0x2ff60cde
+  kind: POINTER
+  pointee_type_id: 0x9598d5e7
+}
+pointer_reference {
+  id: 0x2ff71c8a
+  kind: POINTER
+  pointee_type_id: 0x959c94b6
+}
+pointer_reference {
+  id: 0x2ff754b4
+  kind: POINTER
+  pointee_type_id: 0x959db44f
+}
+pointer_reference {
+  id: 0x2ff84127
+  kind: POINTER
+  pointee_type_id: 0x95a1e201
+}
+pointer_reference {
+  id: 0x2ff90df1
+  kind: POINTER
+  pointee_type_id: 0x95a4d158
+}
+pointer_reference {
+  id: 0x2ff91b8e
+  kind: POINTER
+  pointee_type_id: 0x95a488a5
+}
+pointer_reference {
+  id: 0x2ff974a7
+  kind: POINTER
+  pointee_type_id: 0x95a53402
+}
+pointer_reference {
+  id: 0x2ff9c73d
+  kind: POINTER
+  pointee_type_id: 0x95a7fa69
+}
+pointer_reference {
+  id: 0x2ffa1686
+  kind: POINTER
+  pointee_type_id: 0x95a8bc86
+}
+pointer_reference {
+  id: 0x2ffa59cf
+  kind: POINTER
+  pointee_type_id: 0x95a981a1
+}
+pointer_reference {
+  id: 0x2ffb7fc6
+  kind: POINTER
+  pointee_type_id: 0x95ad1987
+}
+pointer_reference {
+  id: 0x2ffbaa79
+  kind: POINTER
+  pointee_type_id: 0x95ae4f7b
+}
+pointer_reference {
+  id: 0x2ffbc6e3
+  kind: POINTER
+  pointee_type_id: 0x95affd11
+}
+pointer_reference {
+  id: 0x2ffc1197
+  kind: POINTER
+  pointee_type_id: 0x95b0a0c0
+}
+pointer_reference {
+  id: 0x2ffee963
+  kind: POINTER
+  pointee_type_id: 0x95bb4313
+}
+pointer_reference {
+  id: 0x2fff06aa
+  kind: POINTER
+  pointee_type_id: 0x95bcfc36
+}
+pointer_reference {
+  id: 0x2fff8fbe
+  kind: POINTER
+  pointee_type_id: 0x95bed865
+}
+pointer_reference {
+  id: 0x2fffbd5a
+  kind: POINTER
+  pointee_type_id: 0x95be13f6
+}
+pointer_reference {
+  id: 0x3000402d
+  kind: POINTER
+  pointee_type_id: 0xea41e62a
+}
+pointer_reference {
+  id: 0x300362f0
+  kind: POINTER
+  pointee_type_id: 0xea4d6d5e
+}
+pointer_reference {
+  id: 0x3003845d
+  kind: POINTER
+  pointee_type_id: 0xea4ef7ea
+}
+pointer_reference {
+  id: 0x3007ebd9
+  kind: POINTER
+  pointee_type_id: 0xea5f49fa
+}
+pointer_reference {
+  id: 0x30092723
+  kind: POINTER
+  pointee_type_id: 0xea647a11
+}
+pointer_reference {
+  id: 0x300966b8
+  kind: POINTER
+  pointee_type_id: 0xea657c7f
+}
+pointer_reference {
+  id: 0x300fdc99
+  kind: POINTER
+  pointee_type_id: 0xea7f94f9
+}
+pointer_reference {
+  id: 0x3017223b
+  kind: POINTER
+  pointee_type_id: 0xea1c6e71
+}
+pointer_reference {
+  id: 0x301e0f4d
+  kind: POINTER
+  pointee_type_id: 0xea38dbab
+}
+pointer_reference {
+  id: 0x301f8bca
+  kind: POINTER
+  pointee_type_id: 0xea3ec9b4
+}
+pointer_reference {
+  id: 0x302719e7
+  kind: POINTER
+  pointee_type_id: 0xeadc8100
+}
+pointer_reference {
+  id: 0x3029eaf7
+  kind: POINTER
+  pointee_type_id: 0xeae74d43
+}
+pointer_reference {
+  id: 0x302f894e
+  kind: POINTER
+  pointee_type_id: 0xeafec3a6
+}
+pointer_reference {
+  id: 0x30303d50
+  kind: POINTER
+  pointee_type_id: 0xea8013dd
+}
+pointer_reference {
+  id: 0x3033e9c6
+  kind: POINTER
+  pointee_type_id: 0xea8f4184
+}
+pointer_reference {
+  id: 0x30351611
+  kind: POINTER
+  pointee_type_id: 0xea94bed9
+}
+pointer_reference {
+  id: 0x30383293
+  kind: POINTER
+  pointee_type_id: 0xeaa02cd0
+}
+pointer_reference {
+  id: 0x303ac854
+  kind: POINTER
+  pointee_type_id: 0xeaabc7cc
+}
+pointer_reference {
+  id: 0x303f8188
+  kind: POINTER
+  pointee_type_id: 0xeabee0bd
+}
+pointer_reference {
+  id: 0x3043f6b1
+  kind: POINTER
+  pointee_type_id: 0xeb4f3c58
+}
+pointer_reference {
+  id: 0x30464b44
+  kind: POINTER
+  pointee_type_id: 0xeb59cb8e
+}
+pointer_reference {
+  id: 0x30474302
+  kind: POINTER
+  pointee_type_id: 0xeb5dea97
+}
+pointer_reference {
+  id: 0x30484bfe
+  kind: POINTER
+  pointee_type_id: 0xeb61c965
+}
+pointer_reference {
+  id: 0x304cc3d6
+  kind: POINTER
+  pointee_type_id: 0xeb73e9c6
+}
+pointer_reference {
+  id: 0x304f6b42
+  kind: POINTER
+  pointee_type_id: 0xeb7d4b96
+}
+pointer_reference {
+  id: 0x3053e2de
+  kind: POINTER
+  pointee_type_id: 0xeb0f6de6
+}
+pointer_reference {
+  id: 0x3054f2d7
+  kind: POINTER
+  pointee_type_id: 0xeb132dc2
+}
+pointer_reference {
+  id: 0x3058262d
+  kind: POINTER
+  pointee_type_id: 0xeb207e2b
+}
+pointer_reference {
+  id: 0x3058b017
+  kind: POINTER
+  pointee_type_id: 0xeb2226c1
+}
+pointer_reference {
+  id: 0x30600191
+  kind: POINTER
+  pointee_type_id: 0xebc0e0d9
+}
+pointer_reference {
+  id: 0x30635134
+  kind: POINTER
+  pointee_type_id: 0xebcda24f
+}
+pointer_reference {
+  id: 0x3064005c
+  kind: POINTER
+  pointee_type_id: 0xebd0e7ee
+}
+pointer_reference {
+  id: 0x30650ba6
+  kind: POINTER
+  pointee_type_id: 0xebd4c806
+}
+pointer_reference {
+  id: 0x30658794
+  kind: POINTER
+  pointee_type_id: 0xebd6f8cf
+}
+pointer_reference {
+  id: 0x3068cb56
+  kind: POINTER
+  pointee_type_id: 0xebe3cbc6
+}
+pointer_reference {
+  id: 0x306ea2b8
+  kind: POINTER
+  pointee_type_id: 0xebfa6c7c
+}
+pointer_reference {
+  id: 0x306fdf04
+  kind: POINTER
+  pointee_type_id: 0xebff9a8c
+}
+pointer_reference {
+  id: 0x3072a882
+  kind: POINTER
+  pointee_type_id: 0xeb8a4494
+}
+pointer_reference {
+  id: 0x3074b701
+  kind: POINTER
+  pointee_type_id: 0xeb923a9b
+}
+pointer_reference {
+  id: 0x30791928
+  kind: POINTER
+  pointee_type_id: 0xeba4823c
+}
+pointer_reference {
+  id: 0x30887d17
+  kind: POINTER
+  pointee_type_id: 0xe86112c3
+}
+pointer_reference {
+  id: 0x308ee26c
+  kind: POINTER
+  pointee_type_id: 0xe87b6f2e
+}
+pointer_reference {
+  id: 0x30901634
+  kind: POINTER
+  pointee_type_id: 0xe800be4e
+}
+pointer_reference {
+  id: 0x3090e9a7
+  kind: POINTER
+  pointee_type_id: 0xe8034002
+}
+pointer_reference {
+  id: 0x30924432
+  kind: POINTER
+  pointee_type_id: 0xe809f657
+}
+pointer_reference {
+  id: 0x30934160
+  kind: POINTER
+  pointee_type_id: 0xe80de31f
+}
+pointer_reference {
+  id: 0x30984542
+  kind: POINTER
+  pointee_type_id: 0xe821f397
+}
+pointer_reference {
+  id: 0x3098de41
+  kind: POINTER
+  pointee_type_id: 0xe8239f98
+}
+pointer_reference {
+  id: 0x309ac349
+  kind: POINTER
+  pointee_type_id: 0xe82bebbb
+}
+pointer_reference {
+  id: 0x309c8746
+  kind: POINTER
+  pointee_type_id: 0xe832fb84
+}
+pointer_reference {
+  id: 0x309d6e18
+  kind: POINTER
+  pointee_type_id: 0xe8355efc
+}
+pointer_reference {
+  id: 0x309e18ad
+  kind: POINTER
+  pointee_type_id: 0xe838842a
+}
+pointer_reference {
+  id: 0x30a17e95
+  kind: POINTER
+  pointee_type_id: 0xe8c51ccb
+}
+pointer_reference {
+  id: 0x30a18a98
+  kind: POINTER
+  pointee_type_id: 0xe8c6ccfe
+}
+pointer_reference {
+  id: 0x30a3a723
+  kind: POINTER
+  pointee_type_id: 0xe8ce7a11
+}
+pointer_reference {
+  id: 0x30a56f97
+  kind: POINTER
+  pointee_type_id: 0xe8d558c0
+}
+pointer_reference {
+  id: 0x30a72d5c
+  kind: POINTER
+  pointee_type_id: 0xe8dc53ed
+}
+pointer_reference {
+  id: 0x30a8c2de
+  kind: POINTER
+  pointee_type_id: 0xe8e3ede4
+}
+pointer_reference {
+  id: 0x30ae0fb9
+  kind: POINTER
+  pointee_type_id: 0xe8f8d87a
+}
+pointer_reference {
+  id: 0x30afcff2
+  kind: POINTER
+  pointee_type_id: 0xe8ffd957
+}
+pointer_reference {
+  id: 0x30b384f8
+  kind: POINTER
+  pointee_type_id: 0xe88ef57f
+}
+pointer_reference {
+  id: 0x30b52230
+  kind: POINTER
+  pointee_type_id: 0xe8946e5d
+}
+pointer_reference {
+  id: 0x30ba0612
+  kind: POINTER
+  pointee_type_id: 0xe8a8fed4
+}
+pointer_reference {
+  id: 0x30bd8a92
+  kind: POINTER
+  pointee_type_id: 0xe8b6ccd5
+}
+pointer_reference {
+  id: 0x30c99424
+  kind: POINTER
+  pointee_type_id: 0xe966b60f
+}
+pointer_reference {
+  id: 0x30cae1c6
+  kind: POINTER
+  pointee_type_id: 0xe96b6185
+}
+pointer_reference {
+  id: 0x30ccee09
+  kind: POINTER
+  pointee_type_id: 0xe9735eb8
+}
+pointer_reference {
+  id: 0x30cf9722
+  kind: POINTER
+  pointee_type_id: 0xe97eba14
+}
+pointer_reference {
+  id: 0x30cfc1c2
+  kind: POINTER
+  pointee_type_id: 0xe97fe194
+}
+pointer_reference {
+  id: 0x30d28b09
+  kind: POINTER
+  pointee_type_id: 0xe90acabb
+}
+pointer_reference {
+  id: 0x30d2f50a
+  kind: POINTER
+  pointee_type_id: 0xe90b32b7
+}
+pointer_reference {
+  id: 0x30d5aa47
+  kind: POINTER
+  pointee_type_id: 0xe9164f81
+}
+pointer_reference {
+  id: 0x30d66cd4
+  kind: POINTER
+  pointee_type_id: 0xe91955ce
+}
+pointer_reference {
+  id: 0x30d9f406
+  kind: POINTER
+  pointee_type_id: 0xe9273684
+}
+pointer_reference {
+  id: 0x30da8694
+  kind: POINTER
+  pointee_type_id: 0xe92afccd
+}
+pointer_reference {
+  id: 0x30dd91a5
+  kind: POINTER
+  pointee_type_id: 0xe936a00b
+}
+pointer_reference {
+  id: 0x30ddb79e
+  kind: POINTER
+  pointee_type_id: 0xe93638e4
+}
+pointer_reference {
+  id: 0x30e68a3c
+  kind: POINTER
+  pointee_type_id: 0xe9dace6e
+}
+pointer_reference {
+  id: 0x30f06408
+  kind: POINTER
+  pointee_type_id: 0xe98176bf
+}
+pointer_reference {
+  id: 0x30f1da89
+  kind: POINTER
+  pointee_type_id: 0xe9878cb9
+}
+pointer_reference {
+  id: 0x30fbef83
+  kind: POINTER
+  pointee_type_id: 0xe9af5892
+}
+pointer_reference {
+  id: 0x30ff2c92
+  kind: POINTER
+  pointee_type_id: 0xe9bc54d7
+}
+pointer_reference {
+  id: 0x3104c07e
+  kind: POINTER
+  pointee_type_id: 0xee53e764
+}
+pointer_reference {
+  id: 0x3104f372
+  kind: POINTER
+  pointee_type_id: 0xee532b56
+}
+pointer_reference {
+  id: 0x31066a10
+  kind: POINTER
+  pointee_type_id: 0xee594edc
+}
+pointer_reference {
+  id: 0x3107960e
+  kind: POINTER
+  pointee_type_id: 0xee5ebea5
+}
+pointer_reference {
+  id: 0x3107a2d8
+  kind: POINTER
+  pointee_type_id: 0xee5e6dfc
+}
+pointer_reference {
+  id: 0x310e711e
+  kind: POINTER
+  pointee_type_id: 0xee7922e7
+}
+pointer_reference {
+  id: 0x310ec01d
+  kind: POINTER
+  pointee_type_id: 0xee7be6ea
+}
+pointer_reference {
+  id: 0x3110588d
+  kind: POINTER
+  pointee_type_id: 0xee0184a9
+}
+pointer_reference {
+  id: 0x31114896
+  kind: POINTER
+  pointee_type_id: 0xee05c4c5
+}
+pointer_reference {
+  id: 0x3116d11e
+  kind: POINTER
+  pointee_type_id: 0xee1ba2e7
+}
+pointer_reference {
+  id: 0x31210d51
+  kind: POINTER
+  pointee_type_id: 0xeec4d3d8
+}
+pointer_reference {
+  id: 0x31287056
+  kind: POINTER
+  pointee_type_id: 0xeee127c5
+}
+pointer_reference {
+  id: 0x31295d27
+  kind: POINTER
+  pointee_type_id: 0xeee59200
+}
+pointer_reference {
+  id: 0x312aa7d5
+  kind: POINTER
+  pointee_type_id: 0xeeea79ca
+}
+pointer_reference {
+  id: 0x312b639e
+  kind: POINTER
+  pointee_type_id: 0xeeed68e6
+}
+pointer_reference {
+  id: 0x312cdc9e
+  kind: POINTER
+  pointee_type_id: 0xeef394e6
+}
+pointer_reference {
+  id: 0x312e431a
+  kind: POINTER
+  pointee_type_id: 0xeef9eaf5
+}
+pointer_reference {
+  id: 0x312fcf8b
+  kind: POINTER
+  pointee_type_id: 0xeeffd8b3
+}
+pointer_reference {
+  id: 0x3131917d
+  kind: POINTER
+  pointee_type_id: 0xee86a368
+}
+pointer_reference {
+  id: 0x3132887a
+  kind: POINTER
+  pointee_type_id: 0xee8ac777
+}
+pointer_reference {
+  id: 0x3132930f
+  kind: POINTER
+  pointee_type_id: 0xee8aaaa0
+}
+pointer_reference {
+  id: 0x313780ff
+  kind: POINTER
+  pointee_type_id: 0xee9ee560
+}
+pointer_reference {
+  id: 0x313bf3b2
+  kind: POINTER
+  pointee_type_id: 0xeeaf2857
+}
+pointer_reference {
+  id: 0x313ef354
+  kind: POINTER
+  pointee_type_id: 0xeebb2bcf
+}
+pointer_reference {
+  id: 0x31433284
+  kind: POINTER
+  pointee_type_id: 0xef4c2c8d
+}
+pointer_reference {
+  id: 0x314812c5
+  kind: POINTER
+  pointee_type_id: 0xef60ad88
+}
+pointer_reference {
+  id: 0x3155eebe
+  kind: POINTER
+  pointee_type_id: 0xef175c64
+}
+pointer_reference {
+  id: 0x31591df6
+  kind: POINTER
+  pointee_type_id: 0xef249147
+}
+pointer_reference {
+  id: 0x31596a61
+  kind: POINTER
+  pointee_type_id: 0xef254f1b
+}
+pointer_reference {
+  id: 0x31598e0f
+  kind: POINTER
+  pointee_type_id: 0xef26dea0
+}
+pointer_reference {
+  id: 0x315a277e
+  kind: POINTER
+  pointee_type_id: 0xef287b65
+}
+pointer_reference {
+  id: 0x315b7e01
+  kind: POINTER
+  pointee_type_id: 0xef2d1e99
+}
+pointer_reference {
+  id: 0x315c34cb
+  kind: POINTER
+  pointee_type_id: 0xef3035b0
+}
+pointer_reference {
+  id: 0x31600266
+  kind: POINTER
+  pointee_type_id: 0xefc0ef04
+}
+pointer_reference {
+  id: 0x3162e876
+  kind: POINTER
+  pointee_type_id: 0xefcb4746
+}
+pointer_reference {
+  id: 0x31675062
+  kind: POINTER
+  pointee_type_id: 0xefdda716
+}
+pointer_reference {
+  id: 0x316cc8eb
+  kind: POINTER
+  pointee_type_id: 0xeff3c532
+}
+pointer_reference {
+  id: 0x3176a085
+  kind: POINTER
+  pointee_type_id: 0xef9a648b
+}
+pointer_reference {
+  id: 0x31829648
+  kind: POINTER
+  pointee_type_id: 0xec4abfbd
+}
+pointer_reference {
+  id: 0x3185812b
+  kind: POINTER
+  pointee_type_id: 0xec56e233
+}
+pointer_reference {
+  id: 0x3186d48b
+  kind: POINTER
+  pointee_type_id: 0xec5bb4b1
+}
+pointer_reference {
+  id: 0x318983a1
+  kind: POINTER
+  pointee_type_id: 0xec66e818
+}
+pointer_reference {
+  id: 0x318f8bcb
+  kind: POINTER
+  pointee_type_id: 0xec7ec9b2
+}
+pointer_reference {
+  id: 0x319266e1
+  kind: POINTER
+  pointee_type_id: 0xec097d1b
+}
+pointer_reference {
+  id: 0x31926949
+  kind: POINTER
+  pointee_type_id: 0xec0943ba
+}
+pointer_reference {
+  id: 0x31a2d17a
+  kind: POINTER
+  pointee_type_id: 0xeccba377
+}
+pointer_reference {
+  id: 0x31ad3cde
+  kind: POINTER
+  pointee_type_id: 0xecf415e4
+}
+pointer_reference {
+  id: 0x31aed623
+  kind: POINTER
+  pointee_type_id: 0xecfbbe11
+}
+pointer_reference {
+  id: 0x31b06191
+  kind: POINTER
+  pointee_type_id: 0xec8160d9
+}
+pointer_reference {
+  id: 0x31b3e3b8
+  kind: POINTER
+  pointee_type_id: 0xec8f687e
+}
+pointer_reference {
+  id: 0x31b5a66f
+  kind: POINTER
+  pointee_type_id: 0xec967f20
+}
+pointer_reference {
+  id: 0x31b5ca26
+  kind: POINTER
+  pointee_type_id: 0xec97ce04
+}
+pointer_reference {
+  id: 0x31b96ec5
+  kind: POINTER
+  pointee_type_id: 0xeca55d89
+}
+pointer_reference {
+  id: 0x31c05a21
+  kind: POINTER
+  pointee_type_id: 0xed418e18
+}
+pointer_reference {
+  id: 0x31c0ce8c
+  kind: POINTER
+  pointee_type_id: 0xed43dcaf
+}
+pointer_reference {
+  id: 0x31c2530c
+  kind: POINTER
+  pointee_type_id: 0xed49aaad
+}
+pointer_reference {
+  id: 0x31c4b2bb
+  kind: POINTER
+  pointee_type_id: 0xed522c73
+}
+pointer_reference {
+  id: 0x31c7da28
+  kind: POINTER
+  pointee_type_id: 0xed5f8e3e
+}
+pointer_reference {
+  id: 0x31c8b544
+  kind: POINTER
+  pointee_type_id: 0xed62338c
+}
+pointer_reference {
+  id: 0x31c93a7f
+  kind: POINTER
+  pointee_type_id: 0xed640f62
+}
+pointer_reference {
+  id: 0x31cb364e
+  kind: POINTER
+  pointee_type_id: 0xed6c3fa4
+}
+pointer_reference {
+  id: 0x31cbe3b8
+  kind: POINTER
+  pointee_type_id: 0xed6f687f
+}
+pointer_reference {
+  id: 0x31cd5f14
+  kind: POINTER
+  pointee_type_id: 0xed759acf
+}
+pointer_reference {
+  id: 0x31d242e7
+  kind: POINTER
+  pointee_type_id: 0xed09ed00
+}
+pointer_reference {
+  id: 0x31d250f7
+  kind: POINTER
+  pointee_type_id: 0xed09a540
+}
+pointer_reference {
+  id: 0x31d383cf
+  kind: POINTER
+  pointee_type_id: 0xed0ee9a0
+}
+pointer_reference {
+  id: 0x31d8aec5
+  kind: POINTER
+  pointee_type_id: 0xed225d89
+}
+pointer_reference {
+  id: 0x31da1e83
+  kind: POINTER
+  pointee_type_id: 0xed289c91
+}
+pointer_reference {
+  id: 0x31dafbc4
+  kind: POINTER
+  pointee_type_id: 0xed2b098c
+}
+pointer_reference {
+  id: 0x31dc8106
+  kind: POINTER
+  pointee_type_id: 0xed32e285
+}
+pointer_reference {
+  id: 0x31e0e6c6
+  kind: POINTER
+  pointee_type_id: 0xedc37d87
+}
+pointer_reference {
+  id: 0x31e1b230
+  kind: POINTER
+  pointee_type_id: 0xedc62e5c
+}
+pointer_reference {
+  id: 0x31e374a8
+  kind: POINTER
+  pointee_type_id: 0xedcd343f
+}
+pointer_reference {
+  id: 0x31e58fe0
+  kind: POINTER
+  pointee_type_id: 0xedd6d91c
+}
+pointer_reference {
+  id: 0x31e5e879
+  kind: POINTER
+  pointee_type_id: 0xedd7477a
+}
+pointer_reference {
+  id: 0x31eca449
+  kind: POINTER
+  pointee_type_id: 0xedf277ba
+}
+pointer_reference {
+  id: 0x31ed7307
+  kind: POINTER
+  pointee_type_id: 0xedf52a83
+}
+pointer_reference {
+  id: 0x31f12dcf
+  kind: POINTER
+  pointee_type_id: 0xed8451a2
+}
+pointer_reference {
+  id: 0x31f1630d
+  kind: POINTER
+  pointee_type_id: 0xed856aa8
+}
+pointer_reference {
+  id: 0x31f49752
+  kind: POINTER
+  pointee_type_id: 0xed92bbd4
+}
+pointer_reference {
+  id: 0x31f516c7
+  kind: POINTER
+  pointee_type_id: 0xed94bd83
+}
+pointer_reference {
+  id: 0x31fa879c
+  kind: POINTER
+  pointee_type_id: 0xedaaf8ed
+}
+pointer_reference {
+  id: 0x31fd1948
+  kind: POINTER
+  pointee_type_id: 0xedb483bf
+}
+pointer_reference {
+  id: 0x31fe2b41
+  kind: POINTER
+  pointee_type_id: 0xedb84b9b
+}
+pointer_reference {
+  id: 0x320871e3
+  kind: POINTER
+  pointee_type_id: 0xe2612112
+}
+pointer_reference {
+  id: 0x320f5cef
+  kind: POINTER
+  pointee_type_id: 0xe27d9520
+}
+pointer_reference {
+  id: 0x32121e0d
+  kind: POINTER
+  pointee_type_id: 0xe2089ea9
+}
+pointer_reference {
+  id: 0x321c87ab
+  kind: POINTER
+  pointee_type_id: 0xe232f831
+}
+pointer_reference {
+  id: 0x322396fa
+  kind: POINTER
+  pointee_type_id: 0xe2cebd77
+}
+pointer_reference {
+  id: 0x322509a0
+  kind: POINTER
+  pointee_type_id: 0xe2d4c01c
+}
+pointer_reference {
+  id: 0x322c8c4b
+  kind: POINTER
+  pointee_type_id: 0xe2f2d7b1
+}
+pointer_reference {
+  id: 0x3232d45e
+  kind: POINTER
+  pointee_type_id: 0xe28bb7e5
+}
+pointer_reference {
+  id: 0x32343051
+  kind: POINTER
+  pointee_type_id: 0xe29027da
+}
+pointer_reference {
+  id: 0x32343a4a
+  kind: POINTER
+  pointee_type_id: 0xe2900fb4
+}
+pointer_reference {
+  id: 0x32360795
+  kind: POINTER
+  pointee_type_id: 0xe298f8c9
+}
+pointer_reference {
+  id: 0x323908e0
+  kind: POINTER
+  pointee_type_id: 0xe2a4c51e
+}
+pointer_reference {
+  id: 0x3239f388
+  kind: POINTER
+  pointee_type_id: 0xe2a728bc
+}
+pointer_reference {
+  id: 0x3240bbe7
+  kind: POINTER
+  pointee_type_id: 0xe3420903
+}
+pointer_reference {
+  id: 0x324a2d7b
+  kind: POINTER
+  pointee_type_id: 0xe3685372
+}
+pointer_reference {
+  id: 0x324e6996
+  kind: POINTER
+  pointee_type_id: 0xe37940c7
+}
+pointer_reference {
+  id: 0x324e7f0f
+  kind: POINTER
+  pointee_type_id: 0xe3791aa0
+}
+pointer_reference {
+  id: 0x32558241
+  kind: POINTER
+  pointee_type_id: 0xe316ef9b
+}
+pointer_reference {
+  id: 0x3258b271
+  kind: POINTER
+  pointee_type_id: 0xe3222f5b
+}
+pointer_reference {
+  id: 0x325a2b75
+  kind: POINTER
+  pointee_type_id: 0xe3284b4b
+}
+pointer_reference {
+  id: 0x325bd10a
+  kind: POINTER
+  pointee_type_id: 0xe32fa2b6
+}
+pointer_reference {
+  id: 0x326663cd
+  kind: POINTER
+  pointee_type_id: 0xe3d969a8
+}
+pointer_reference {
+  id: 0x3267a784
+  kind: POINTER
+  pointee_type_id: 0xe3de788c
+}
+pointer_reference {
+  id: 0x326a19f7
+  kind: POINTER
+  pointee_type_id: 0xe3e88141
+}
+pointer_reference {
+  id: 0x326a784b
+  kind: POINTER
+  pointee_type_id: 0xe3e907b3
+}
+pointer_reference {
+  id: 0x326c4938
+  kind: POINTER
+  pointee_type_id: 0xe3f1c27c
+}
+pointer_reference {
+  id: 0x326dfde1
+  kind: POINTER
+  pointee_type_id: 0xe3f71118
+}
+pointer_reference {
+  id: 0x3282112a
+  kind: POINTER
+  pointee_type_id: 0xe048a234
+}
+pointer_reference {
+  id: 0x3283492b
+  kind: POINTER
+  pointee_type_id: 0xe04dc232
+}
+pointer_reference {
+  id: 0x3283ded6
+  kind: POINTER
+  pointee_type_id: 0xe04f9dc7
+}
+pointer_reference {
+  id: 0x3286774f
+  kind: POINTER
+  pointee_type_id: 0xe0593ba2
+}
+pointer_reference {
+  id: 0x328870e8
+  kind: POINTER
+  pointee_type_id: 0xe061253c
+}
+pointer_reference {
+  id: 0x32941b2b
+  kind: POINTER
+  pointee_type_id: 0xe0108a33
+}
+pointer_reference {
+  id: 0x3297cf62
+  kind: POINTER
+  pointee_type_id: 0xe01fdb16
+}
+pointer_reference {
+  id: 0x3297e876
+  kind: POINTER
+  pointee_type_id: 0xe01f4745
+}
+pointer_reference {
+  id: 0x329bbc92
+  kind: POINTER
+  pointee_type_id: 0xe02e14d6
+}
+pointer_reference {
+  id: 0x329c102a
+  kind: POINTER
+  pointee_type_id: 0xe030a634
+}
+pointer_reference {
+  id: 0x329e29fd
+  kind: POINTER
+  pointee_type_id: 0xe038416b
+}
+pointer_reference {
+  id: 0x329f1a5f
+  kind: POINTER
+  pointee_type_id: 0xe03c8fe2
+}
+pointer_reference {
+  id: 0x329fbf2a
+  kind: POINTER
+  pointee_type_id: 0xe03e1a37
+}
+pointer_reference {
+  id: 0x32a063f3
+  kind: POINTER
+  pointee_type_id: 0xe0c16951
+}
+pointer_reference {
+  id: 0x32a56f32
+  kind: POINTER
+  pointee_type_id: 0xe0d55a56
+}
+pointer_reference {
+  id: 0x32a623d7
+  kind: POINTER
+  pointee_type_id: 0xe0d869c2
+}
+pointer_reference {
+  id: 0x32abd75b
+  kind: POINTER
+  pointee_type_id: 0xe0efbbf1
+}
+pointer_reference {
+  id: 0x32ad7138
+  kind: POINTER
+  pointee_type_id: 0xe0f5227f
+}
+pointer_reference {
+  id: 0x32aedf85
+  kind: POINTER
+  pointee_type_id: 0xe0fb9888
+}
+pointer_reference {
+  id: 0x32af5236
+  kind: POINTER
+  pointee_type_id: 0xe0fdae45
+}
+pointer_reference {
+  id: 0x32b15eb1
+  kind: POINTER
+  pointee_type_id: 0xe0859c58
+}
+pointer_reference {
+  id: 0x32b1bbe6
+  kind: POINTER
+  pointee_type_id: 0xe0860905
+}
+pointer_reference {
+  id: 0x32b309a8
+  kind: POINTER
+  pointee_type_id: 0xe08cc03f
+}
+pointer_reference {
+  id: 0x32b54b11
+  kind: POINTER
+  pointee_type_id: 0xe095cad8
+}
+pointer_reference {
+  id: 0x32bb7cf5
+  kind: POINTER
+  pointee_type_id: 0xe0ad154a
+}
+pointer_reference {
+  id: 0x32bd639f
+  kind: POINTER
+  pointee_type_id: 0xe0b568e1
+}
+pointer_reference {
+  id: 0x32bee099
+  kind: POINTER
+  pointee_type_id: 0xe0bb64fa
+}
+pointer_reference {
+  id: 0x32c03da9
+  kind: POINTER
+  pointee_type_id: 0xe1401038
+}
+pointer_reference {
+  id: 0x32c156ea
+  kind: POINTER
+  pointee_type_id: 0xe145bd36
+}
+pointer_reference {
+  id: 0x32c23ae3
+  kind: POINTER
+  pointee_type_id: 0xe1480d10
+}
+pointer_reference {
+  id: 0x32c40901
+  kind: POINTER
+  pointee_type_id: 0xe150c299
+}
+pointer_reference {
+  id: 0x32c6e924
+  kind: POINTER
+  pointee_type_id: 0xe15b420e
+}
+pointer_reference {
+  id: 0x32caaf24
+  kind: POINTER
+  pointee_type_id: 0xe16a5a0c
+}
+pointer_reference {
+  id: 0x32cc2bc8
+  kind: POINTER
+  pointee_type_id: 0xe17049bf
+}
+pointer_reference {
+  id: 0x32cf602c
+  kind: POINTER
+  pointee_type_id: 0xe17d662d
+}
+pointer_reference {
+  id: 0x32d02e17
+  kind: POINTER
+  pointee_type_id: 0xe1005ec3
+}
+pointer_reference {
+  id: 0x32d4e594
+  kind: POINTER
+  pointee_type_id: 0xe11370cc
+}
+pointer_reference {
+  id: 0x32d896eb
+  kind: POINTER
+  pointee_type_id: 0xe122bd33
+}
+pointer_reference {
+  id: 0x32da4522
+  kind: POINTER
+  pointee_type_id: 0xe129f216
+}
+pointer_reference {
+  id: 0x32daa2f4
+  kind: POINTER
+  pointee_type_id: 0xe12a6d4e
+}
+pointer_reference {
+  id: 0x32e20efe
+  kind: POINTER
+  pointee_type_id: 0xe1c8dd66
+}
+pointer_reference {
+  id: 0x32e263d5
+  kind: POINTER
+  pointee_type_id: 0xe1c969cb
+}
+pointer_reference {
+  id: 0x32e49390
+  kind: POINTER
+  pointee_type_id: 0xe1d2a8dc
+}
+pointer_reference {
+  id: 0x32ec08f2
+  kind: POINTER
+  pointee_type_id: 0xe1f0c556
+}
+pointer_reference {
+  id: 0x32ee05c2
+  kind: POINTER
+  pointee_type_id: 0xe1f8f196
+}
+pointer_reference {
+  id: 0x32ee063f
+  kind: POINTER
+  pointee_type_id: 0xe1f8fe60
+}
+pointer_reference {
+  id: 0x32ef516c
+  kind: POINTER
+  pointee_type_id: 0xe1fda32d
+}
+pointer_reference {
+  id: 0x32f0db7d
+  kind: POINTER
+  pointee_type_id: 0xe1838b6b
+}
+pointer_reference {
+  id: 0x32f2aa1d
+  kind: POINTER
+  pointee_type_id: 0xe18a4ee9
+}
+pointer_reference {
+  id: 0x32f2aeac
+  kind: POINTER
+  pointee_type_id: 0xe18a5c2e
+}
+pointer_reference {
+  id: 0x32f690bf
+  kind: POINTER
+  pointee_type_id: 0xe19aa462
+}
+pointer_reference {
+  id: 0x32f8fd7b
+  kind: POINTER
+  pointee_type_id: 0xe1a31370
+}
+pointer_reference {
+  id: 0x32fddfe5
+  kind: POINTER
+  pointee_type_id: 0xe1b79909
+}
+pointer_reference {
+  id: 0x33011141
+  kind: POINTER
+  pointee_type_id: 0xe644a39b
+}
+pointer_reference {
+  id: 0x330db442
+  kind: POINTER
+  pointee_type_id: 0xe6763795
+}
+pointer_reference {
+  id: 0x3316fc74
+  kind: POINTER
+  pointee_type_id: 0xe61b174c
+}
+pointer_reference {
+  id: 0x33180474
+  kind: POINTER
+  pointee_type_id: 0xe620f74f
+}
+pointer_reference {
+  id: 0x33180476
+  kind: POINTER
+  pointee_type_id: 0xe620f747
+}
+pointer_reference {
+  id: 0x331a85e3
+  kind: POINTER
+  pointee_type_id: 0xe62af112
+}
+pointer_reference {
+  id: 0x331b3d77
+  kind: POINTER
+  pointee_type_id: 0xe62c1341
+}
+pointer_reference {
+  id: 0x331b9666
+  kind: POINTER
+  pointee_type_id: 0xe62ebf07
+}
+pointer_reference {
+  id: 0x331e2c82
+  kind: POINTER
+  pointee_type_id: 0xe6385497
+}
+pointer_reference {
+  id: 0x331fc64d
+  kind: POINTER
+  pointee_type_id: 0xe63fffaa
+}
+pointer_reference {
+  id: 0x3323a6aa
+  kind: POINTER
+  pointee_type_id: 0xe6ce7c37
+}
+pointer_reference {
+  id: 0x3325f40b
+  kind: POINTER
+  pointee_type_id: 0xe6d736b2
+}
+pointer_reference {
+  id: 0x332c0287
+  kind: POINTER
+  pointee_type_id: 0xe6f0ec83
+}
+pointer_reference {
+  id: 0x332cb633
+  kind: POINTER
+  pointee_type_id: 0xe6f23e50
+}
+pointer_reference {
+  id: 0x332d413e
+  kind: POINTER
+  pointee_type_id: 0xe6f5e267
+}
+pointer_reference {
+  id: 0x332d6166
+  kind: POINTER
+  pointee_type_id: 0xe6f56304
+}
+pointer_reference {
+  id: 0x332e04da
+  kind: POINTER
+  pointee_type_id: 0xe6f8f5f5
+}
+pointer_reference {
+  id: 0x332fd615
+  kind: POINTER
+  pointee_type_id: 0xe6ffbec8
+}
+pointer_reference {
+  id: 0x33310de5
+  kind: POINTER
+  pointee_type_id: 0xe684d10a
+}
+pointer_reference {
+  id: 0x3331b650
+  kind: POINTER
+  pointee_type_id: 0xe6863fdc
+}
+pointer_reference {
+  id: 0x3332797f
+  kind: POINTER
+  pointee_type_id: 0xe6890363
+}
+pointer_reference {
+  id: 0x3336a72b
+  kind: POINTER
+  pointee_type_id: 0xe69a7a33
+}
+pointer_reference {
+  id: 0x33390909
+  kind: POINTER
+  pointee_type_id: 0xe6a4c2b9
+}
+pointer_reference {
+  id: 0x333a16a5
+  kind: POINTER
+  pointee_type_id: 0xe6a8bc0b
+}
+pointer_reference {
+  id: 0x333c033c
+  kind: POINTER
+  pointee_type_id: 0xe6b0ea6f
+}
+pointer_reference {
+  id: 0x333c4bc7
+  kind: POINTER
+  pointee_type_id: 0xe6b1c981
+}
+pointer_reference {
+  id: 0x333c957a
+  kind: POINTER
+  pointee_type_id: 0xe6b2b374
+}
+pointer_reference {
+  id: 0x3342d461
+  kind: POINTER
+  pointee_type_id: 0xe74bb71b
+}
+pointer_reference {
+  id: 0x33446e12
+  kind: POINTER
+  pointee_type_id: 0xe7515ed6
+}
+pointer_reference {
+  id: 0x334820f1
+  kind: POINTER
+  pointee_type_id: 0xe7606559
+}
+pointer_reference {
+  id: 0x334927f6
+  kind: POINTER
+  pointee_type_id: 0xe7647945
+}
+pointer_reference {
+  id: 0x334936b8
+  kind: POINTER
+  pointee_type_id: 0xe7643c7c
+}
+pointer_reference {
+  id: 0x334b2254
+  kind: POINTER
+  pointee_type_id: 0xe76c6fcf
+}
+pointer_reference {
+  id: 0x334c0532
+  kind: POINTER
+  pointee_type_id: 0xe770f257
+}
+pointer_reference {
+  id: 0x334c07d5
+  kind: POINTER
+  pointee_type_id: 0xe770f9ca
+}
+pointer_reference {
+  id: 0x334da6fb
+  kind: POINTER
+  pointee_type_id: 0xe7767d72
+}
+pointer_reference {
+  id: 0x334f6bdc
+  kind: POINTER
+  pointee_type_id: 0xe77d49ec
+}
+pointer_reference {
+  id: 0x3350b8d6
+  kind: POINTER
+  pointee_type_id: 0xe70205c6
+}
+pointer_reference {
+  id: 0x33539f31
+  kind: POINTER
+  pointee_type_id: 0xe70e9a5b
+}
+pointer_reference {
+  id: 0x335d253d
+  kind: POINTER
+  pointee_type_id: 0xe734726a
+}
+pointer_reference {
+  id: 0x335f1543
+  kind: POINTER
+  pointee_type_id: 0xe73cb391
+}
+pointer_reference {
+  id: 0x3360dff4
+  kind: POINTER
+  pointee_type_id: 0xe7c3994d
+}
+pointer_reference {
+  id: 0x33657329
+  kind: POINTER
+  pointee_type_id: 0xe7d52a38
+}
+pointer_reference {
+  id: 0x33658188
+  kind: POINTER
+  pointee_type_id: 0xe7d6e0bf
+}
+pointer_reference {
+  id: 0x33673679
+  kind: POINTER
+  pointee_type_id: 0xe7dc3f7b
+}
+pointer_reference {
+  id: 0x336955b0
+  kind: POINTER
+  pointee_type_id: 0xe7e5b05e
+}
+pointer_reference {
+  id: 0x336c14b5
+  kind: POINTER
+  pointee_type_id: 0xe7f0b44a
+}
+pointer_reference {
+  id: 0x336c4b19
+  kind: POINTER
+  pointee_type_id: 0xe7f1cafa
+}
+pointer_reference {
+  id: 0x336e8c54
+  kind: POINTER
+  pointee_type_id: 0xe7fad7ce
+}
+pointer_reference {
+  id: 0x33704847
+  kind: POINTER
+  pointee_type_id: 0xe781c782
+}
+pointer_reference {
+  id: 0x3370a453
+  kind: POINTER
+  pointee_type_id: 0xe78277d2
+}
+pointer_reference {
+  id: 0x3372e15b
+  kind: POINTER
+  pointee_type_id: 0xe78b63f2
+}
+pointer_reference {
+  id: 0x337a1bef
+  kind: POINTER
+  pointee_type_id: 0xe7a88922
+}
+pointer_reference {
+  id: 0x337b7b81
+  kind: POINTER
+  pointee_type_id: 0xe7ad089b
+}
+pointer_reference {
+  id: 0x337f6d5e
+  kind: POINTER
+  pointee_type_id: 0xe7bd53e7
+}
+pointer_reference {
+  id: 0x3382a638
+  kind: POINTER
+  pointee_type_id: 0xe44a7e7f
+}
+pointer_reference {
+  id: 0x338b6c2e
+  kind: POINTER
+  pointee_type_id: 0xe46d5624
+}
+pointer_reference {
+  id: 0x33967786
+  kind: POINTER
+  pointee_type_id: 0xe4193887
+}
+pointer_reference {
+  id: 0x3398263c
+  kind: POINTER
+  pointee_type_id: 0xe4207e6d
+}
+pointer_reference {
+  id: 0x3399c453
+  kind: POINTER
+  pointee_type_id: 0xe427f7d2
+}
+pointer_reference {
+  id: 0x339b64c6
+  kind: POINTER
+  pointee_type_id: 0xe42d7586
+}
+pointer_reference {
+  id: 0x339ebb61
+  kind: POINTER
+  pointee_type_id: 0xe43a0b1b
+}
+pointer_reference {
+  id: 0x33a1f2d7
+  kind: POINTER
+  pointee_type_id: 0xe4c72dc2
+}
+pointer_reference {
+  id: 0x33a9a547
+  kind: POINTER
+  pointee_type_id: 0xe4e67381
+}
+pointer_reference {
+  id: 0x33a9d455
+  kind: POINTER
+  pointee_type_id: 0xe4e7b7c8
+}
+pointer_reference {
+  id: 0x33ad36d3
+  kind: POINTER
+  pointee_type_id: 0xe4f43dd3
+}
+pointer_reference {
+  id: 0x33b32811
+  kind: POINTER
+  pointee_type_id: 0xe48c46d9
+}
+pointer_reference {
+  id: 0x33b77109
+  kind: POINTER
+  pointee_type_id: 0xe49d22b8
+}
+pointer_reference {
+  id: 0x33b88d23
+  kind: POINTER
+  pointee_type_id: 0xe4a2d212
+}
+pointer_reference {
+  id: 0x33b896f4
+  kind: POINTER
+  pointee_type_id: 0xe4a2bd4c
+}
+pointer_reference {
+  id: 0x33baebd5
+  kind: POINTER
+  pointee_type_id: 0xe4ab49c8
+}
+pointer_reference {
+  id: 0x33c0cfd5
+  kind: POINTER
+  pointee_type_id: 0xe543d9ca
+}
+pointer_reference {
+  id: 0x33c1248a
+  kind: POINTER
+  pointee_type_id: 0xe54474b6
+}
+pointer_reference {
+  id: 0x33c1a827
+  kind: POINTER
+  pointee_type_id: 0xe5464603
+}
+pointer_reference {
+  id: 0x33c666d4
+  kind: POINTER
+  pointee_type_id: 0xe5597dce
+}
+pointer_reference {
+  id: 0x33c72b70
+  kind: POINTER
+  pointee_type_id: 0xe55c4b5e
+}
+pointer_reference {
+  id: 0x33ca3e79
+  kind: POINTER
+  pointee_type_id: 0xe5681f7a
+}
+pointer_reference {
+  id: 0x33cabddd
+  kind: POINTER
+  pointee_type_id: 0xe56a11e9
+}
+pointer_reference {
+  id: 0x33cb83c2
+  kind: POINTER
+  pointee_type_id: 0xe56ee997
+}
+pointer_reference {
+  id: 0x33cf5b9c
+  kind: POINTER
+  pointee_type_id: 0xe57d88ef
+}
+pointer_reference {
+  id: 0x33d0e528
+  kind: POINTER
+  pointee_type_id: 0xe503723d
+}
+pointer_reference {
+  id: 0x33d50b40
+  kind: POINTER
+  pointee_type_id: 0xe514cb9c
+}
+pointer_reference {
+  id: 0x33db0a65
+  kind: POINTER
+  pointee_type_id: 0xe52ccf08
+}
+pointer_reference {
+  id: 0x33dd2e45
+  kind: POINTER
+  pointee_type_id: 0xe5345f8a
+}
+pointer_reference {
+  id: 0x33ddb110
+  kind: POINTER
+  pointee_type_id: 0xe53622dc
+}
+pointer_reference {
+  id: 0x33de7348
+  kind: POINTER
+  pointee_type_id: 0xe5392bbd
+}
+pointer_reference {
+  id: 0x33df40aa
+  kind: POINTER
+  pointee_type_id: 0xe53de437
+}
+pointer_reference {
+  id: 0x33e0857d
+  kind: POINTER
+  pointee_type_id: 0xe5c2f369
+}
+pointer_reference {
+  id: 0x33e46293
+  kind: POINTER
+  pointee_type_id: 0xe5d16cd3
+}
+pointer_reference {
+  id: 0x33e53462
+  kind: POINTER
+  pointee_type_id: 0xe5d43714
+}
+pointer_reference {
+  id: 0x33e9627e
+  kind: POINTER
+  pointee_type_id: 0xe5e56f65
+}
+pointer_reference {
+  id: 0x33f8a50c
+  kind: POINTER
+  pointee_type_id: 0xe5a272af
+}
+pointer_reference {
+  id: 0x33f8b54b
+  kind: POINTER
+  pointee_type_id: 0xe5a233b0
+}
+pointer_reference {
+  id: 0x33fb178b
+  kind: POINTER
+  pointee_type_id: 0xe5acb8b1
+}
+pointer_reference {
+  id: 0x33fb2978
+  kind: POINTER
+  pointee_type_id: 0xe5ac437d
+}
+pointer_reference {
+  id: 0x34016e82
+  kind: POINTER
+  pointee_type_id: 0xfa455c97
+}
+pointer_reference {
+  id: 0x3403910f
+  kind: POINTER
+  pointee_type_id: 0xfa4ea2a2
+}
+pointer_reference {
+  id: 0x3407aa14
+  kind: POINTER
+  pointee_type_id: 0xfa5e4ecd
+}
+pointer_reference {
+  id: 0x340bec45
+  kind: POINTER
+  pointee_type_id: 0xfa6f578b
+}
+pointer_reference {
+  id: 0x340c639a
+  kind: POINTER
+  pointee_type_id: 0xfa7168f4
+}
+pointer_reference {
+  id: 0x340dea21
+  kind: POINTER
+  pointee_type_id: 0xfa774e1b
+}
+pointer_reference {
+  id: 0x3411dbb1
+  kind: POINTER
+  pointee_type_id: 0xfa078858
+}
+pointer_reference {
+  id: 0x341220bc
+  kind: POINTER
+  pointee_type_id: 0xfa08646d
+}
+pointer_reference {
+  id: 0x3413ca0c
+  kind: POINTER
+  pointee_type_id: 0xfa0fceaf
+}
+pointer_reference {
+  id: 0x3413d17b
+  kind: POINTER
+  pointee_type_id: 0xfa0fa371
+}
+pointer_reference {
+  id: 0x34192ccc
+  kind: POINTER
+  pointee_type_id: 0xfa2455af
+}
+pointer_reference {
+  id: 0x34197b6b
+  kind: POINTER
+  pointee_type_id: 0xfa250b30
+}
+pointer_reference {
+  id: 0x341a7034
+  kind: POINTER
+  pointee_type_id: 0xfa29264d
+}
+pointer_reference {
+  id: 0x34258007
+  kind: POINTER
+  pointee_type_id: 0xfad6e683
+}
+pointer_reference {
+  id: 0x342a1515
+  kind: POINTER
+  pointee_type_id: 0xfae8b2ca
+}
+pointer_reference {
+  id: 0x342a8622
+  kind: POINTER
+  pointee_type_id: 0xfaeafe16
+}
+pointer_reference {
+  id: 0x34334e6d
+  kind: POINTER
+  pointee_type_id: 0xfa8ddf2a
+}
+pointer_reference {
+  id: 0x34363f4c
+  kind: POINTER
+  pointee_type_id: 0xfa981bae
+}
+pointer_reference {
+  id: 0x3438bc82
+  kind: POINTER
+  pointee_type_id: 0xfaa21496
+}
+pointer_reference {
+  id: 0x343d847e
+  kind: POINTER
+  pointee_type_id: 0xfab6f766
+}
+pointer_reference {
+  id: 0x343ebce3
+  kind: POINTER
+  pointee_type_id: 0xfaba1511
+}
+pointer_reference {
+  id: 0x34407506
+  kind: POINTER
+  pointee_type_id: 0xfb413284
+}
+pointer_reference {
+  id: 0x3442a45d
+  kind: POINTER
+  pointee_type_id: 0xfb4a77e8
+}
+pointer_reference {
+  id: 0x34434827
+  kind: POINTER
+  pointee_type_id: 0xfb4dc602
+}
+pointer_reference {
+  id: 0x3443caef
+  kind: POINTER
+  pointee_type_id: 0xfb4fcd23
+}
+pointer_reference {
+  id: 0x344a8f68
+  kind: POINTER
+  pointee_type_id: 0xfb6adb3d
+}
+pointer_reference {
+  id: 0x344c87c1
+  kind: POINTER
+  pointee_type_id: 0xfb72f99a
+}
+pointer_reference {
+  id: 0x344f6972
+  kind: POINTER
+  pointee_type_id: 0xfb7d4357
+}
+pointer_reference {
+  id: 0x3451622a
+  kind: POINTER
+  pointee_type_id: 0xfb056e34
+}
+pointer_reference {
+  id: 0x34525023
+  kind: POINTER
+  pointee_type_id: 0xfb09a610
+}
+pointer_reference {
+  id: 0x3453a47a
+  kind: POINTER
+  pointee_type_id: 0xfb0e7776
+}
+pointer_reference {
+  id: 0x34543a8d
+  kind: POINTER
+  pointee_type_id: 0xfb100ca9
+}
+pointer_reference {
+  id: 0x34544a3f
+  kind: POINTER
+  pointee_type_id: 0xfb11ce60
+}
+pointer_reference {
+  id: 0x345745bd
+  kind: POINTER
+  pointee_type_id: 0xfb1df068
+}
+pointer_reference {
+  id: 0x34579ace
+  kind: POINTER
+  pointee_type_id: 0xfb1e8da7
+}
+pointer_reference {
+  id: 0x345a9df3
+  kind: POINTER
+  pointee_type_id: 0xfb2a9153
+}
+pointer_reference {
+  id: 0x3460ff38
+  kind: POINTER
+  pointee_type_id: 0xfbc31a7e
+}
+pointer_reference {
+  id: 0x346113fd
+  kind: POINTER
+  pointee_type_id: 0xfbc4a969
+}
+pointer_reference {
+  id: 0x3462d6fc
+  kind: POINTER
+  pointee_type_id: 0xfbcbbd6c
+}
+pointer_reference {
+  id: 0x3467ed98
+  kind: POINTER
+  pointee_type_id: 0xfbdf50fc
+}
+pointer_reference {
+  id: 0x346d8a0d
+  kind: POINTER
+  pointee_type_id: 0xfbf6cea8
+}
+pointer_reference {
+  id: 0x346f60ba
+  kind: POINTER
+  pointee_type_id: 0xfbfd6476
+}
+pointer_reference {
+  id: 0x346f8b7b
+  kind: POINTER
+  pointee_type_id: 0xfbfecb73
+}
+pointer_reference {
+  id: 0x3470c1da
+  kind: POINTER
+  pointee_type_id: 0xfb83e1f5
+}
+pointer_reference {
+  id: 0x347303b4
+  kind: POINTER
+  pointee_type_id: 0xfb8ce84e
+}
+pointer_reference {
+  id: 0x3475a06a
+  kind: POINTER
+  pointee_type_id: 0xfb966736
+}
+pointer_reference {
+  id: 0x34782f35
+  kind: POINTER
+  pointee_type_id: 0xfba05a49
+}
+pointer_reference {
+  id: 0x347de8b1
+  kind: POINTER
+  pointee_type_id: 0xfbb74458
+}
+pointer_reference {
+  id: 0x34809932
+  kind: POINTER
+  pointee_type_id: 0xf8428255
+}
+pointer_reference {
+  id: 0x3481766c
+  kind: POINTER
+  pointee_type_id: 0xf8453f2e
+}
+pointer_reference {
+  id: 0x3486508f
+  kind: POINTER
+  pointee_type_id: 0xf859a4a2
+}
+pointer_reference {
+  id: 0x3486f55a
+  kind: POINTER
+  pointee_type_id: 0xf85b33f6
+}
+pointer_reference {
+  id: 0x348822f4
+  kind: POINTER
+  pointee_type_id: 0xf8606d4e
+}
+pointer_reference {
+  id: 0x348873b3
+  kind: POINTER
+  pointee_type_id: 0xf8612850
+}
+pointer_reference {
+  id: 0x34894aac
+  kind: POINTER
+  pointee_type_id: 0xf865cc2f
+}
+pointer_reference {
+  id: 0x348ad8b0
+  kind: POINTER
+  pointee_type_id: 0xf86b845e
+}
+pointer_reference {
+  id: 0x348b5e76
+  kind: POINTER
+  pointee_type_id: 0xf86d9f44
+}
+pointer_reference {
+  id: 0x348f18ab
+  kind: POINTER
+  pointee_type_id: 0xf87c8433
+}
+pointer_reference {
+  id: 0x348f359a
+  kind: POINTER
+  pointee_type_id: 0xf87c30f6
+}
+pointer_reference {
+  id: 0x348f6886
+  kind: POINTER
+  pointee_type_id: 0xf87d4486
+}
+pointer_reference {
+  id: 0x348f9528
+  kind: POINTER
+  pointee_type_id: 0xf87eb23d
+}
+pointer_reference {
+  id: 0x348fecbf
+  kind: POINTER
+  pointee_type_id: 0xf87f5460
+}
+pointer_reference {
+  id: 0x3491860b
+  kind: POINTER
+  pointee_type_id: 0xf806feb1
+}
+pointer_reference {
+  id: 0x3493e68d
+  kind: POINTER
+  pointee_type_id: 0xf80f7ca9
+}
+pointer_reference {
+  id: 0x34961042
+  kind: POINTER
+  pointee_type_id: 0xf818a797
+}
+pointer_reference {
+  id: 0x34990483
+  kind: POINTER
+  pointee_type_id: 0xf824f490
+}
+pointer_reference {
+  id: 0x349b6850
+  kind: POINTER
+  pointee_type_id: 0xf82d47dc
+}
+pointer_reference {
+  id: 0x34a05394
+  kind: POINTER
+  pointee_type_id: 0xf8c1a8ce
+}
+pointer_reference {
+  id: 0x34a79572
+  kind: POINTER
+  pointee_type_id: 0xf8deb354
+}
+pointer_reference {
+  id: 0x34aa6f4a
+  kind: POINTER
+  pointee_type_id: 0xf8e95bb4
+}
+pointer_reference {
+  id: 0x34aad408
+  kind: POINTER
+  pointee_type_id: 0xf8ebb6bc
+}
+pointer_reference {
+  id: 0x34ab5728
+  kind: POINTER
+  pointee_type_id: 0xf8edba3f
+}
+pointer_reference {
+  id: 0x34ae24a9
+  kind: POINTER
+  pointee_type_id: 0xf8f87438
+}
+pointer_reference {
+  id: 0x34bb6aad
+  kind: POINTER
+  pointee_type_id: 0xf8ad4c28
+}
+pointer_reference {
+  id: 0x34bcb6d5
+  kind: POINTER
+  pointee_type_id: 0xf8b23dcb
+}
+pointer_reference {
+  id: 0x34bd88ad
+  kind: POINTER
+  pointee_type_id: 0xf8b6c42b
+}
+pointer_reference {
+  id: 0x34c137dc
+  kind: POINTER
+  pointee_type_id: 0xf94439ee
+}
+pointer_reference {
+  id: 0x34c92288
+  kind: POINTER
+  pointee_type_id: 0xf9646cbc
+}
+pointer_reference {
+  id: 0x34ce1f23
+  kind: POINTER
+  pointee_type_id: 0xf9789a11
+}
+pointer_reference {
+  id: 0x34d10f7f
+  kind: POINTER
+  pointee_type_id: 0xf904db60
+}
+pointer_reference {
+  id: 0x34d3469d
+  kind: POINTER
+  pointee_type_id: 0xf90dfce8
+}
+pointer_reference {
+  id: 0x34d42b26
+  kind: POINTER
+  pointee_type_id: 0xf9104a06
+}
+pointer_reference {
+  id: 0x34d64015
+  kind: POINTER
+  pointee_type_id: 0xf919e6cb
+}
+pointer_reference {
+  id: 0x34d79405
+  kind: POINTER
+  pointee_type_id: 0xf91eb689
+}
+pointer_reference {
+  id: 0x34dbb6d7
+  kind: POINTER
+  pointee_type_id: 0xf92e3dc3
+}
+pointer_reference {
+  id: 0x34de6732
+  kind: POINTER
+  pointee_type_id: 0xf9397a55
+}
+pointer_reference {
+  id: 0x34def0b7
+  kind: POINTER
+  pointee_type_id: 0xf93b2442
+}
+pointer_reference {
+  id: 0x34df9ab6
+  kind: POINTER
+  pointee_type_id: 0xf93e8c44
+}
+pointer_reference {
+  id: 0x34e4504f
+  kind: POINTER
+  pointee_type_id: 0xf9d1a7a0
+}
+pointer_reference {
+  id: 0x34e51224
+  kind: POINTER
+  pointee_type_id: 0xf9d4ae0e
+}
+pointer_reference {
+  id: 0x34e62f02
+  kind: POINTER
+  pointee_type_id: 0xf9d85a97
+}
+pointer_reference {
+  id: 0x34ecba28
+  kind: POINTER
+  pointee_type_id: 0xf9f20e3e
+}
+pointer_reference {
+  id: 0x34ed1e4a
+  kind: POINTER
+  pointee_type_id: 0xf9f49fb7
+}
+pointer_reference {
+  id: 0x34ed6c40
+  kind: POINTER
+  pointee_type_id: 0xf9f5579f
+}
+pointer_reference {
+  id: 0x34edbc82
+  kind: POINTER
+  pointee_type_id: 0xf9f61494
+}
+pointer_reference {
+  id: 0x34ef1514
+  kind: POINTER
+  pointee_type_id: 0xf9fcb2cf
+}
+pointer_reference {
+  id: 0x3500e23a
+  kind: POINTER
+  pointee_type_id: 0xfe436e74
+}
+pointer_reference {
+  id: 0x35041fa7
+  kind: POINTER
+  pointee_type_id: 0xfe509802
+}
+pointer_reference {
+  id: 0x35082291
+  kind: POINTER
+  pointee_type_id: 0xfe606cdb
+}
+pointer_reference {
+  id: 0x350996ca
+  kind: POINTER
+  pointee_type_id: 0xfe66bdb7
+}
+pointer_reference {
+  id: 0x350dc3e7
+  kind: POINTER
+  pointee_type_id: 0xfe77e903
+}
+pointer_reference {
+  id: 0x351465bc
+  kind: POINTER
+  pointee_type_id: 0xfe11706f
+}
+pointer_reference {
+  id: 0x35152dab
+  kind: POINTER
+  pointee_type_id: 0xfe145033
+}
+pointer_reference {
+  id: 0x351641b0
+  kind: POINTER
+  pointee_type_id: 0xfe19e05e
+}
+pointer_reference {
+  id: 0x35181bef
+  kind: POINTER
+  pointee_type_id: 0xfe208923
+}
+pointer_reference {
+  id: 0x3518289c
+  kind: POINTER
+  pointee_type_id: 0xfe2044ec
+}
+pointer_reference {
+  id: 0x3518a6ab
+  kind: POINTER
+  pointee_type_id: 0xfe227c33
+}
+pointer_reference {
+  id: 0x351ca0f0
+  kind: POINTER
+  pointee_type_id: 0xfe32655f
+}
+pointer_reference {
+  id: 0x351da44b
+  kind: POINTER
+  pointee_type_id: 0xfe3677b2
+}
+pointer_reference {
+  id: 0x351e2925
+  kind: POINTER
+  pointee_type_id: 0xfe38420a
+}
+pointer_reference {
+  id: 0x351f2e4f
+  kind: POINTER
+  pointee_type_id: 0xfe3c5fa3
+}
+pointer_reference {
+  id: 0x3521907a
+  kind: POINTER
+  pointee_type_id: 0xfec6a776
+}
+pointer_reference {
+  id: 0x3525c695
+  kind: POINTER
+  pointee_type_id: 0xfed7fcc9
+}
+pointer_reference {
+  id: 0x3526936a
+  kind: POINTER
+  pointee_type_id: 0xfedaab36
+}
+pointer_reference {
+  id: 0x352b5569
+  kind: POINTER
+  pointee_type_id: 0xfeedb339
+}
+pointer_reference {
+  id: 0x352b91a8
+  kind: POINTER
+  pointee_type_id: 0xfeeea03f
+}
+pointer_reference {
+  id: 0x35304fb1
+  kind: POINTER
+  pointee_type_id: 0xfe81d85b
+}
+pointer_reference {
+  id: 0x35324dc4
+  kind: POINTER
+  pointee_type_id: 0xfe89d18d
+}
+pointer_reference {
+  id: 0x3536f126
+  kind: POINTER
+  pointee_type_id: 0xfe9b2205
+}
+pointer_reference {
+  id: 0x35392f66
+  kind: POINTER
+  pointee_type_id: 0xfea45b04
+}
+pointer_reference {
+  id: 0x353b375a
+  kind: POINTER
+  pointee_type_id: 0xfeac3bf4
+}
+pointer_reference {
+  id: 0x353f5bda
+  kind: POINTER
+  pointee_type_id: 0xfebd89f4
+}
+pointer_reference {
+  id: 0x353f6734
+  kind: POINTER
+  pointee_type_id: 0xfebd7a4e
+}
+pointer_reference {
+  id: 0x35403ce3
+  kind: POINTER
+  pointee_type_id: 0xff401512
+}
+pointer_reference {
+  id: 0x3542336e
+  kind: POINTER
+  pointee_type_id: 0xff482b27
+}
+pointer_reference {
+  id: 0x35448f63
+  kind: POINTER
+  pointee_type_id: 0xff52db13
+}
+pointer_reference {
+  id: 0x35467ab6
+  kind: POINTER
+  pointee_type_id: 0xff590c44
+}
+pointer_reference {
+  id: 0x35480f68
+  kind: POINTER
+  pointee_type_id: 0xff60db3e
+}
+pointer_reference {
+  id: 0x354de58d
+  kind: POINTER
+  pointee_type_id: 0xff7770a8
+}
+pointer_reference {
+  id: 0x35555629
+  kind: POINTER
+  pointee_type_id: 0xff15be3a
+}
+pointer_reference {
+  id: 0x35592596
+  kind: POINTER
+  pointee_type_id: 0xff2470c7
+}
+pointer_reference {
+  id: 0x355e866a
+  kind: POINTER
+  pointee_type_id: 0xff3aff36
+}
+pointer_reference {
+  id: 0x35612b46
+  kind: POINTER
+  pointee_type_id: 0xffc44b84
+}
+pointer_reference {
+  id: 0x3564a5a2
+  kind: POINTER
+  pointee_type_id: 0xffd27017
+}
+pointer_reference {
+  id: 0x3564ca1f
+  kind: POINTER
+  pointee_type_id: 0xffd3cee2
+}
+pointer_reference {
+  id: 0x35663efe
+  kind: POINTER
+  pointee_type_id: 0xffd81d66
+}
+pointer_reference {
+  id: 0x356691bc
+  kind: POINTER
+  pointee_type_id: 0xffdaa06d
+}
+pointer_reference {
+  id: 0x356ba728
+  kind: POINTER
+  pointee_type_id: 0xffee7a3d
+}
+pointer_reference {
+  id: 0x356d401a
+  kind: POINTER
+  pointee_type_id: 0xfff5e6f7
+}
+pointer_reference {
+  id: 0x35737846
+  kind: POINTER
+  pointee_type_id: 0xff8d0786
+}
+pointer_reference {
+  id: 0x35761627
+  kind: POINTER
+  pointee_type_id: 0xff98be03
+}
+pointer_reference {
+  id: 0x357909b2
+  kind: POINTER
+  pointee_type_id: 0xffa4c057
+}
+pointer_reference {
+  id: 0x357bb44d
+  kind: POINTER
+  pointee_type_id: 0xffae37a8
+}
+pointer_reference {
+  id: 0x357dc529
+  kind: POINTER
+  pointee_type_id: 0xffb7f238
+}
+pointer_reference {
+  id: 0x357e91ee
+  kind: POINTER
+  pointee_type_id: 0xffbaa126
+}
+pointer_reference {
+  id: 0x3580c00a
+  kind: POINTER
+  pointee_type_id: 0xfc43e6b5
+}
+pointer_reference {
+  id: 0x3584c045
+  kind: POINTER
+  pointee_type_id: 0xfc53e789
+}
+pointer_reference {
+  id: 0x358a1c52
+  kind: POINTER
+  pointee_type_id: 0xfc6897d7
+}
+pointer_reference {
+  id: 0x358ed535
+  kind: POINTER
+  pointee_type_id: 0xfc7bb24b
+}
+pointer_reference {
+  id: 0x358ff5b7
+  kind: POINTER
+  pointee_type_id: 0xfc7f3042
+}
+pointer_reference {
+  id: 0x3590285d
+  kind: POINTER
+  pointee_type_id: 0xfc0047ea
+}
+pointer_reference {
+  id: 0x3593bec8
+  kind: POINTER
+  pointee_type_id: 0xfc0e1dbd
+}
+pointer_reference {
+  id: 0x359862c8
+  kind: POINTER
+  pointee_type_id: 0xfc216dbe
+}
+pointer_reference {
+  id: 0x35a0b0e9
+  kind: POINTER
+  pointee_type_id: 0xfcc22539
+}
+pointer_reference {
+  id: 0x35a0b70a
+  kind: POINTER
+  pointee_type_id: 0xfcc23ab7
+}
+pointer_reference {
+  id: 0x35ab6b03
+  kind: POINTER
+  pointee_type_id: 0xfced4a93
+}
+pointer_reference {
+  id: 0x35abdbf6
+  kind: POINTER
+  pointee_type_id: 0xfcef8945
+}
+pointer_reference {
+  id: 0x35ac1d88
+  kind: POINTER
+  pointee_type_id: 0xfcf090be
+}
+pointer_reference {
+  id: 0x35acf54c
+  kind: POINTER
+  pointee_type_id: 0xfcf333ad
+}
+pointer_reference {
+  id: 0x35ad08a2
+  kind: POINTER
+  pointee_type_id: 0xfcf4c414
+}
+pointer_reference {
+  id: 0x35ad7e6f
+  kind: POINTER
+  pointee_type_id: 0xfcf51f22
+}
+pointer_reference {
+  id: 0x35af180e
+  kind: POINTER
+  pointee_type_id: 0xfcfc86a7
+}
+pointer_reference {
+  id: 0x35b2d093
+  kind: POINTER
+  pointee_type_id: 0xfc8ba4d2
+}
+pointer_reference {
+  id: 0x35bad1e5
+  kind: POINTER
+  pointee_type_id: 0xfcaba10a
+}
+pointer_reference {
+  id: 0x35bcf3f4
+  kind: POINTER
+  pointee_type_id: 0xfcb3294d
+}
+pointer_reference {
+  id: 0x35bf21bb
+  kind: POINTER
+  pointee_type_id: 0xfcbc6072
+}
+pointer_reference {
+  id: 0x35bff718
+  kind: POINTER
+  pointee_type_id: 0xfcbf3afc
+}
+pointer_reference {
+  id: 0x35c3dd06
+  kind: POINTER
+  pointee_type_id: 0xfd4f9284
+}
+pointer_reference {
+  id: 0x35c838ae
+  kind: POINTER
+  pointee_type_id: 0xfd600427
+}
+pointer_reference {
+  id: 0x35cc4540
+  kind: POINTER
+  pointee_type_id: 0xfd71f39d
+}
+pointer_reference {
+  id: 0x35d0c5ee
+  kind: POINTER
+  pointee_type_id: 0xfd03f127
+}
+pointer_reference {
+  id: 0x35d17e4b
+  kind: POINTER
+  pointee_type_id: 0xfd051fb3
+}
+pointer_reference {
+  id: 0x35d1f0b8
+  kind: POINTER
+  pointee_type_id: 0xfd07247d
+}
+pointer_reference {
+  id: 0x35d37abd
+  kind: POINTER
+  pointee_type_id: 0xfd0d0c6a
+}
+pointer_reference {
+  id: 0x35d3884a
+  kind: POINTER
+  pointee_type_id: 0xfd0ec7b6
+}
+pointer_reference {
+  id: 0x35d510c3
+  kind: POINTER
+  pointee_type_id: 0xfd14a591
+}
+pointer_reference {
+  id: 0x35dabb98
+  kind: POINTER
+  pointee_type_id: 0xfd2a08ff
+}
+pointer_reference {
+  id: 0x35dbb7d3
+  kind: POINTER
+  pointee_type_id: 0xfd2e39d2
+}
+pointer_reference {
+  id: 0x35dbe029
+  kind: POINTER
+  pointee_type_id: 0xfd2f663a
+}
+pointer_reference {
+  id: 0x35dc1d5d
+  kind: POINTER
+  pointee_type_id: 0xfd3093eb
+}
+pointer_reference {
+  id: 0x35e13364
+  kind: POINTER
+  pointee_type_id: 0xfdc42b0e
+}
+pointer_reference {
+  id: 0x35e1bdb7
+  kind: POINTER
+  pointee_type_id: 0xfdc61042
+}
+pointer_reference {
+  id: 0x35e708c2
+  kind: POINTER
+  pointee_type_id: 0xfddcc595
+}
+pointer_reference {
+  id: 0x35e7630d
+  kind: POINTER
+  pointee_type_id: 0xfddd6aa8
+}
+pointer_reference {
+  id: 0x35e7d4e0
+  kind: POINTER
+  pointee_type_id: 0xfddfb51c
+}
+pointer_reference {
+  id: 0x35e844ce
+  kind: POINTER
+  pointee_type_id: 0xfde1f5a7
+}
+pointer_reference {
+  id: 0x35ee4c1c
+  kind: POINTER
+  pointee_type_id: 0xfdf9d6ed
+}
+pointer_reference {
+  id: 0x35ef2eea
+  kind: POINTER
+  pointee_type_id: 0xfdfc5d34
+}
+pointer_reference {
+  id: 0x35f64996
+  kind: POINTER
+  pointee_type_id: 0xfd99c0c6
+}
+pointer_reference {
+  id: 0x35f7f02e
+  kind: POINTER
+  pointee_type_id: 0xfd9f2624
+}
+pointer_reference {
+  id: 0x35f82503
+  kind: POINTER
+  pointee_type_id: 0xfda07293
+}
+pointer_reference {
+  id: 0x35f8cea5
+  kind: POINTER
+  pointee_type_id: 0xfda3dc09
+}
+pointer_reference {
+  id: 0x35f9166d
+  kind: POINTER
+  pointee_type_id: 0xfda4bf28
+}
+pointer_reference {
+  id: 0x36042134
+  kind: POINTER
+  pointee_type_id: 0xf250624e
+}
+pointer_reference {
+  id: 0x36076ff8
+  kind: POINTER
+  pointee_type_id: 0xf25d597f
+}
+pointer_reference {
+  id: 0x360c66c5
+  kind: POINTER
+  pointee_type_id: 0xf2717d88
+}
+pointer_reference {
+  id: 0x360d16d9
+  kind: POINTER
+  pointee_type_id: 0xf274bdf9
+}
+pointer_reference {
+  id: 0x36106ed4
+  kind: POINTER
+  pointee_type_id: 0xf2015dce
+}
+pointer_reference {
+  id: 0x36194830
+  kind: POINTER
+  pointee_type_id: 0xf225c65d
+}
+pointer_reference {
+  id: 0x36198464
+  kind: POINTER
+  pointee_type_id: 0xf226f70c
+}
+pointer_reference {
+  id: 0x361b0907
+  kind: POINTER
+  pointee_type_id: 0xf22cc280
+}
+pointer_reference {
+  id: 0x361bb89d
+  kind: POINTER
+  pointee_type_id: 0xf22e04eb
+}
+pointer_reference {
+  id: 0x3620c1a6
+  kind: POINTER
+  pointee_type_id: 0xf2c3e006
+}
+pointer_reference {
+  id: 0x3621da99
+  kind: POINTER
+  pointee_type_id: 0xf2c78cfb
+}
+pointer_reference {
+  id: 0x3626871f
+  kind: POINTER
+  pointee_type_id: 0xf2dafae3
+}
+pointer_reference {
+  id: 0x362c25fa
+  kind: POINTER
+  pointee_type_id: 0xf2f07175
+}
+pointer_reference {
+  id: 0x362c7d0e
+  kind: POINTER
+  pointee_type_id: 0xf2f112a6
+}
+pointer_reference {
+  id: 0x3632646e
+  kind: POINTER
+  pointee_type_id: 0xf2897725
+}
+pointer_reference {
+  id: 0x36337082
+  kind: POINTER
+  pointee_type_id: 0xf28d2496
+}
+pointer_reference {
+  id: 0x3638cdb9
+  kind: POINTER
+  pointee_type_id: 0xf2a3d079
+}
+pointer_reference {
+  id: 0x363b9249
+  kind: POINTER
+  pointee_type_id: 0xf2aeafb9
+}
+pointer_reference {
+  id: 0x363f43e7
+  kind: POINTER
+  pointee_type_id: 0xf2bde902
+}
+pointer_reference {
+  id: 0x3640c1e2
+  kind: POINTER
+  pointee_type_id: 0xf343e116
+}
+pointer_reference {
+  id: 0x3643e527
+  kind: POINTER
+  pointee_type_id: 0xf34f7202
+}
+pointer_reference {
+  id: 0x364efcf0
+  kind: POINTER
+  pointee_type_id: 0xf37b155d
+}
+pointer_reference {
+  id: 0x3654c061
+  kind: POINTER
+  pointee_type_id: 0xf313e71a
+}
+pointer_reference {
+  id: 0x3658bbe5
+  kind: POINTER
+  pointee_type_id: 0xf3220908
+}
+pointer_reference {
+  id: 0x366793f0
+  kind: POINTER
+  pointee_type_id: 0xf3dea95c
+}
+pointer_reference {
+  id: 0x3668642a
+  kind: POINTER
+  pointee_type_id: 0xf3e17637
+}
+pointer_reference {
+  id: 0x36691375
+  kind: POINTER
+  pointee_type_id: 0xf3e4ab4a
+}
+pointer_reference {
+  id: 0x366e6ff4
+  kind: POINTER
+  pointee_type_id: 0xf3f9594e
+}
+pointer_reference {
+  id: 0x366f080d
+  kind: POINTER
+  pointee_type_id: 0xf3fcc6aa
+}
+pointer_reference {
+  id: 0x366f4294
+  kind: POINTER
+  pointee_type_id: 0xf3fdeccf
+}
+pointer_reference {
+  id: 0x36708ba9
+  kind: POINTER
+  pointee_type_id: 0xf382c83a
+}
+pointer_reference {
+  id: 0x3674251b
+  kind: POINTER
+  pointee_type_id: 0xf39072f0
+}
+pointer_reference {
+  id: 0x36773660
+  kind: POINTER
+  pointee_type_id: 0xf39c3f1e
+}
+pointer_reference {
+  id: 0x36841126
+  kind: POINTER
+  pointee_type_id: 0xf050a204
+}
+pointer_reference {
+  id: 0x368487be
+  kind: POINTER
+  pointee_type_id: 0xf052f867
+}
+pointer_reference {
+  id: 0x368daf92
+  kind: POINTER
+  pointee_type_id: 0xf07658d4
+}
+pointer_reference {
+  id: 0x368f679b
+  kind: POINTER
+  pointee_type_id: 0xf07d78f3
+}
+pointer_reference {
+  id: 0x3690011f
+  kind: POINTER
+  pointee_type_id: 0xf000e2e0
+}
+pointer_reference {
+  id: 0x369152be
+  kind: POINTER
+  pointee_type_id: 0xf005ac66
+}
+pointer_reference {
+  id: 0x36937f0f
+  kind: POINTER
+  pointee_type_id: 0xf00d1aa1
+}
+pointer_reference {
+  id: 0x3694d3c2
+  kind: POINTER
+  pointee_type_id: 0xf013a996
+}
+pointer_reference {
+  id: 0x369662d6
+  kind: POINTER
+  pointee_type_id: 0xf0196dc4
+}
+pointer_reference {
+  id: 0x369be551
+  kind: POINTER
+  pointee_type_id: 0xf02f73da
+}
+pointer_reference {
+  id: 0x369bf18f
+  kind: POINTER
+  pointee_type_id: 0xf02f20a3
+}
+pointer_reference {
+  id: 0x369da151
+  kind: POINTER
+  pointee_type_id: 0xf03663da
+}
+pointer_reference {
+  id: 0x36a2b57a
+  kind: POINTER
+  pointee_type_id: 0xf0ca3374
+}
+pointer_reference {
+  id: 0x36a41f54
+  kind: POINTER
+  pointee_type_id: 0xf0d09bcf
+}
+pointer_reference {
+  id: 0x36a52079
+  kind: POINTER
+  pointee_type_id: 0xf0d4677b
+}
+pointer_reference {
+  id: 0x36a6b8e5
+  kind: POINTER
+  pointee_type_id: 0xf0da0508
+}
+pointer_reference {
+  id: 0x36aab51f
+  kind: POINTER
+  pointee_type_id: 0xf0ea32e0
+}
+pointer_reference {
+  id: 0x36ad2dd6
+  kind: POINTER
+  pointee_type_id: 0xf0f451c7
+}
+pointer_reference {
+  id: 0x36afd129
+  kind: POINTER
+  pointee_type_id: 0xf0ffa23a
+}
+pointer_reference {
+  id: 0x36b637f1
+  kind: POINTER
+  pointee_type_id: 0xf098395b
+}
+pointer_reference {
+  id: 0x36b94cf6
+  kind: POINTER
+  pointee_type_id: 0xf0a5d546
+}
+pointer_reference {
+  id: 0x36bbfcd7
+  kind: POINTER
+  pointee_type_id: 0xf0af15c1
+}
+pointer_reference {
+  id: 0x36bdcf10
+  kind: POINTER
+  pointee_type_id: 0xf0b7dadd
+}
+pointer_reference {
+  id: 0x36bf205a
+  kind: POINTER
+  pointee_type_id: 0xf0bc67f4
+}
+pointer_reference {
+  id: 0x36c066a0
+  kind: POINTER
+  pointee_type_id: 0xf1417c1e
+}
+pointer_reference {
+  id: 0x36c97631
+  kind: POINTER
+  pointee_type_id: 0xf1653e58
+}
+pointer_reference {
+  id: 0x36cb77db
+  kind: POINTER
+  pointee_type_id: 0xf16d39f2
+}
+pointer_reference {
+  id: 0x36cd1433
+  kind: POINTER
+  pointee_type_id: 0xf174b653
+}
+pointer_reference {
+  id: 0x36d078a0
+  kind: POINTER
+  pointee_type_id: 0xf101041f
+}
+pointer_reference {
+  id: 0x36d130d1
+  kind: POINTER
+  pointee_type_id: 0xf10425d9
+}
+pointer_reference {
+  id: 0x36d15200
+  kind: POINTER
+  pointee_type_id: 0xf105ae9f
+}
+pointer_reference {
+  id: 0x36d2de0e
+  kind: POINTER
+  pointee_type_id: 0xf10b9ea7
+}
+pointer_reference {
+  id: 0x36d55eab
+  kind: POINTER
+  pointee_type_id: 0xf1159c31
+}
+pointer_reference {
+  id: 0x36d81bb6
+  kind: POINTER
+  pointee_type_id: 0xf1208847
+}
+pointer_reference {
+  id: 0x36d86941
+  kind: POINTER
+  pointee_type_id: 0xf1214399
+}
+pointer_reference {
+  id: 0x36dc9e6f
+  kind: POINTER
+  pointee_type_id: 0xf1329f23
+}
+pointer_reference {
+  id: 0x36e2aac5
+  kind: POINTER
+  pointee_type_id: 0xf1ca4d88
+}
+pointer_reference {
+  id: 0x36e4aebb
+  kind: POINTER
+  pointee_type_id: 0xf1d25c72
+}
+pointer_reference {
+  id: 0x36e679f4
+  kind: POINTER
+  pointee_type_id: 0xf1d9014d
+}
+pointer_reference {
+  id: 0x36e6f1cb
+  kind: POINTER
+  pointee_type_id: 0xf1db21b0
+}
+pointer_reference {
+  id: 0x36e719d0
+  kind: POINTER
+  pointee_type_id: 0xf1dc81dc
+}
+pointer_reference {
+  id: 0x36e75420
+  kind: POINTER
+  pointee_type_id: 0xf1ddb61f
+}
+pointer_reference {
+  id: 0x36ef2158
+  kind: POINTER
+  pointee_type_id: 0xf1fc63fc
+}
+pointer_reference {
+  id: 0x36f0205d
+  kind: POINTER
+  pointee_type_id: 0xf18067ea
+}
+pointer_reference {
+  id: 0x36f0529f
+  kind: POINTER
+  pointee_type_id: 0xf181ace2
+}
+pointer_reference {
+  id: 0x36f0c7ee
+  kind: POINTER
+  pointee_type_id: 0xf183f924
+}
+pointer_reference {
+  id: 0x36f0fd32
+  kind: POINTER
+  pointee_type_id: 0xf1831254
+}
+pointer_reference {
+  id: 0x36f19439
+  kind: POINTER
+  pointee_type_id: 0xf186b679
+}
+pointer_reference {
+  id: 0x36f3049d
+  kind: POINTER
+  pointee_type_id: 0xf18cf4eb
+}
+pointer_reference {
+  id: 0x36f45072
+  kind: POINTER
+  pointee_type_id: 0xf191a756
+}
+pointer_reference {
+  id: 0x36f4db1f
+  kind: POINTER
+  pointee_type_id: 0xf1938ae0
+}
+pointer_reference {
+  id: 0x36f998d3
+  kind: POINTER
+  pointee_type_id: 0xf1a685d1
+}
+pointer_reference {
+  id: 0x36fb5a3c
+  kind: POINTER
+  pointee_type_id: 0xf1ad8e6c
+}
+pointer_reference {
+  id: 0x36fb960a
+  kind: POINTER
+  pointee_type_id: 0xf1aebeb7
+}
+pointer_reference {
+  id: 0x36fc2198
+  kind: POINTER
+  pointee_type_id: 0xf1b060ff
+}
+pointer_reference {
+  id: 0x36fd3e2d
+  kind: POINTER
+  pointee_type_id: 0xf1b41e2b
+}
+pointer_reference {
+  id: 0x36ffb4de
+  kind: POINTER
+  pointee_type_id: 0xf1be35e6
+}
+pointer_reference {
+  id: 0x37030053
+  kind: POINTER
+  pointee_type_id: 0xf64ce7d1
+}
+pointer_reference {
+  id: 0x3704906b
+  kind: POINTER
+  pointee_type_id: 0xf652a731
+}
+pointer_reference {
+  id: 0x3705a40d
+  kind: POINTER
+  pointee_type_id: 0xf65676a9
+}
+pointer_reference {
+  id: 0x370a664e
+  kind: POINTER
+  pointee_type_id: 0xf6697fa6
+}
+pointer_reference {
+  id: 0x370b11b2
+  kind: POINTER
+  pointee_type_id: 0xf66ca055
+}
+pointer_reference {
+  id: 0x370ed8aa
+  kind: POINTER
+  pointee_type_id: 0xf67b8436
+}
+pointer_reference {
+  id: 0x370f3379
+  kind: POINTER
+  pointee_type_id: 0xf67c2b7b
+}
+pointer_reference {
+  id: 0x37116b4c
+  kind: POINTER
+  pointee_type_id: 0xf6054bae
+}
+pointer_reference {
+  id: 0x3713b7b1
+  kind: POINTER
+  pointee_type_id: 0xf60e3859
+}
+pointer_reference {
+  id: 0x371523a8
+  kind: POINTER
+  pointee_type_id: 0xf614683f
+}
+pointer_reference {
+  id: 0x371817c7
+  kind: POINTER
+  pointee_type_id: 0xf620b983
+}
+pointer_reference {
+  id: 0x37185c4a
+  kind: POINTER
+  pointee_type_id: 0xf62197b5
+}
+pointer_reference {
+  id: 0x3719a0ef
+  kind: POINTER
+  pointee_type_id: 0xf6266522
+}
+pointer_reference {
+  id: 0x3719ef1e
+  kind: POINTER
+  pointee_type_id: 0xf6275ae5
+}
+pointer_reference {
+  id: 0x371b7fd6
+  kind: POINTER
+  pointee_type_id: 0xf62d19c5
+}
+pointer_reference {
+  id: 0x372be6f8
+  kind: POINTER
+  pointee_type_id: 0xf6ef7d7c
+}
+pointer_reference {
+  id: 0x372d02a8
+  kind: POINTER
+  pointee_type_id: 0xf6f4ec3e
+}
+pointer_reference {
+  id: 0x372f54f8
+  kind: POINTER
+  pointee_type_id: 0xf6fdb57c
+}
+pointer_reference {
+  id: 0x373173b7
+  kind: POINTER
+  pointee_type_id: 0xf6852843
+}
+pointer_reference {
+  id: 0x373912ec
+  kind: POINTER
+  pointee_type_id: 0xf6a4ad2f
+}
+pointer_reference {
+  id: 0x37393a51
+  kind: POINTER
+  pointee_type_id: 0xf6a40fd8
+}
+pointer_reference {
+  id: 0x374090df
+  kind: POINTER
+  pointee_type_id: 0xf742a5e3
+}
+pointer_reference {
+  id: 0x37429bf2
+  kind: POINTER
+  pointee_type_id: 0xf74a8956
+}
+pointer_reference {
+  id: 0x37439484
+  kind: POINTER
+  pointee_type_id: 0xf74eb48d
+}
+pointer_reference {
+  id: 0x3743b750
+  kind: POINTER
+  pointee_type_id: 0xf74e3bdc
+}
+pointer_reference {
+  id: 0x3747dc62
+  kind: POINTER
+  pointee_type_id: 0xf75f9714
+}
+pointer_reference {
+  id: 0x3748519c
+  kind: POINTER
+  pointee_type_id: 0xf761a0ed
+}
+pointer_reference {
+  id: 0x37493e04
+  kind: POINTER
+  pointee_type_id: 0xf7641e8f
+}
+pointer_reference {
+  id: 0x374bfb14
+  kind: POINTER
+  pointee_type_id: 0xf76f0acc
+}
+pointer_reference {
+  id: 0x374ce5e7
+  kind: POINTER
+  pointee_type_id: 0xf7737100
+}
+pointer_reference {
+  id: 0x374de623
+  kind: POINTER
+  pointee_type_id: 0xf7777e11
+}
+pointer_reference {
+  id: 0x374e1049
+  kind: POINTER
+  pointee_type_id: 0xf778a7ba
+}
+pointer_reference {
+  id: 0x3751334b
+  kind: POINTER
+  pointee_type_id: 0xf7042bb3
+}
+pointer_reference {
+  id: 0x3753f2b0
+  kind: POINTER
+  pointee_type_id: 0xf70f2c5c
+}
+pointer_reference {
+  id: 0x3754d634
+  kind: POINTER
+  pointee_type_id: 0xf713be4d
+}
+pointer_reference {
+  id: 0x37556446
+  kind: POINTER
+  pointee_type_id: 0xf7157787
+}
+pointer_reference {
+  id: 0x3757c9e4
+  kind: POINTER
+  pointee_type_id: 0xf71fc10e
+}
+pointer_reference {
+  id: 0x375bae2f
+  kind: POINTER
+  pointee_type_id: 0xf72e5e23
+}
+pointer_reference {
+  id: 0x375cc7da
+  kind: POINTER
+  pointee_type_id: 0xf733f9f6
+}
+pointer_reference {
+  id: 0x375e894e
+  kind: POINTER
+  pointee_type_id: 0xf73ac3a4
+}
+pointer_reference {
+  id: 0x3760766d
+  kind: POINTER
+  pointee_type_id: 0xf7c13f2a
+}
+pointer_reference {
+  id: 0x376789dd
+  kind: POINTER
+  pointee_type_id: 0xf7dec1ea
+}
+pointer_reference {
+  id: 0x37688119
+  kind: POINTER
+  pointee_type_id: 0xf7e2e2fa
+}
+pointer_reference {
+  id: 0x376d0d4f
+  kind: POINTER
+  pointee_type_id: 0xf7f4d3a0
+}
+pointer_reference {
+  id: 0x377043cf
+  kind: POINTER
+  pointee_type_id: 0xf781e9a2
+}
+pointer_reference {
+  id: 0x377127f9
+  kind: POINTER
+  pointee_type_id: 0xf784797b
+}
+pointer_reference {
+  id: 0x3771322e
+  kind: POINTER
+  pointee_type_id: 0xf7842e25
+}
+pointer_reference {
+  id: 0x3771eb5c
+  kind: POINTER
+  pointee_type_id: 0xf7874bee
+}
+pointer_reference {
+  id: 0x37765a7c
+  kind: POINTER
+  pointee_type_id: 0xf7998f6d
+}
+pointer_reference {
+  id: 0x3776a166
+  kind: POINTER
+  pointee_type_id: 0xf79a6305
+}
+pointer_reference {
+  id: 0x37792593
+  kind: POINTER
+  pointee_type_id: 0xf7a470d0
+}
+pointer_reference {
+  id: 0x3783c640
+  kind: POINTER
+  pointee_type_id: 0xf44fff9f
+}
+pointer_reference {
+  id: 0x378860ff
+  kind: POINTER
+  pointee_type_id: 0xf4616560
+}
+pointer_reference {
+  id: 0x37944814
+  kind: POINTER
+  pointee_type_id: 0xf411c6cf
+}
+pointer_reference {
+  id: 0x379645d8
+  kind: POINTER
+  pointee_type_id: 0xf419f1fe
+}
+pointer_reference {
+  id: 0x379acd09
+  kind: POINTER
+  pointee_type_id: 0xf42bd2bb
+}
+pointer_reference {
+  id: 0x379bfe28
+  kind: POINTER
+  pointee_type_id: 0xf42f1e3d
+}
+pointer_reference {
+  id: 0x379d63b0
+  kind: POINTER
+  pointee_type_id: 0xf435685e
+}
+pointer_reference {
+  id: 0x379f8c10
+  kind: POINTER
+  pointee_type_id: 0xf43ed6df
+}
+pointer_reference {
+  id: 0x37a5cb14
+  kind: POINTER
+  pointee_type_id: 0xf4d7cace
+}
+pointer_reference {
+  id: 0x37a89a4a
+  kind: POINTER
+  pointee_type_id: 0xf4e28fb7
+}
+pointer_reference {
+  id: 0x37b4f743
+  kind: POINTER
+  pointee_type_id: 0xf4933b90
+}
+pointer_reference {
+  id: 0x37b51a1e
+  kind: POINTER
+  pointee_type_id: 0xf4948ee4
+}
+pointer_reference {
+  id: 0x37b8f80f
+  kind: POINTER
+  pointee_type_id: 0xf4a306a1
+}
+pointer_reference {
+  id: 0x37c1fe6c
+  kind: POINTER
+  pointee_type_id: 0xf5471f2f
+}
+pointer_reference {
+  id: 0x37c32df2
+  kind: POINTER
+  pointee_type_id: 0xf54c5154
+}
+pointer_reference {
+  id: 0x37c41f38
+  kind: POINTER
+  pointee_type_id: 0xf5509a7e
+}
+pointer_reference {
+  id: 0x37cc6bab
+  kind: POINTER
+  pointee_type_id: 0xf5714831
+}
+pointer_reference {
+  id: 0x37cc86e2
+  kind: POINTER
+  pointee_type_id: 0xf572fd14
+}
+pointer_reference {
+  id: 0x37d06578
+  kind: POINTER
+  pointee_type_id: 0xf501737c
+}
+pointer_reference {
+  id: 0x37d53ac5
+  kind: POINTER
+  pointee_type_id: 0xf5140d8a
+}
+pointer_reference {
+  id: 0x37d5545e
+  kind: POINTER
+  pointee_type_id: 0xf515b7e4
+}
+pointer_reference {
+  id: 0x37d7ca8b
+  kind: POINTER
+  pointee_type_id: 0xf51fccb0
+}
+pointer_reference {
+  id: 0x37d8983e
+  kind: POINTER
+  pointee_type_id: 0xf5228665
+}
+pointer_reference {
+  id: 0x37d96371
+  kind: POINTER
+  pointee_type_id: 0xf5256b58
+}
+pointer_reference {
+  id: 0x37dafd0a
+  kind: POINTER
+  pointee_type_id: 0xf52b12b6
+}
+pointer_reference {
+  id: 0x37dc7251
+  kind: POINTER
+  pointee_type_id: 0xf5312fdb
+}
+pointer_reference {
+  id: 0x37dd86d6
+  kind: POINTER
+  pointee_type_id: 0xf536fdc7
+}
+pointer_reference {
+  id: 0x37df84bf
+  kind: POINTER
+  pointee_type_id: 0xf53ef460
+}
+pointer_reference {
+  id: 0x37e14c8b
+  kind: POINTER
+  pointee_type_id: 0xf5c5d4b2
+}
+pointer_reference {
+  id: 0x37e3ffd7
+  kind: POINTER
+  pointee_type_id: 0xf5cf19c0
+}
+pointer_reference {
+  id: 0x37e42403
+  kind: POINTER
+  pointee_type_id: 0xf5d07691
+}
+pointer_reference {
+  id: 0x37e7a473
+  kind: POINTER
+  pointee_type_id: 0xf5de7750
+}
+pointer_reference {
+  id: 0x37e8a64c
+  kind: POINTER
+  pointee_type_id: 0xf5e27faf
+}
+pointer_reference {
+  id: 0x37ecc407
+  kind: POINTER
+  pointee_type_id: 0xf5f3f682
+}
+pointer_reference {
+  id: 0x37edd07b
+  kind: POINTER
+  pointee_type_id: 0xf5f7a771
+}
+pointer_reference {
+  id: 0x37f227e9
+  kind: POINTER
+  pointee_type_id: 0xf588793b
+}
+pointer_reference {
+  id: 0x37f2a61c
+  kind: POINTER
+  pointee_type_id: 0xf58a7eed
+}
+pointer_reference {
+  id: 0x37f43f67
+  kind: POINTER
+  pointee_type_id: 0xf5901b02
+}
+pointer_reference {
+  id: 0x37f564a2
+  kind: POINTER
+  pointee_type_id: 0xf5957414
+}
+pointer_reference {
+  id: 0x37f5d3d4
+  kind: POINTER
+  pointee_type_id: 0xf597a9ce
+}
+pointer_reference {
+  id: 0x37f9935b
+  kind: POINTER
+  pointee_type_id: 0xf5a6abf0
+}
+pointer_reference {
+  id: 0x37f9fd94
+  kind: POINTER
+  pointee_type_id: 0xf5a710cd
+}
+pointer_reference {
+  id: 0x37fc3fc4
+  kind: POINTER
+  pointee_type_id: 0xf5b0198f
+}
+pointer_reference {
+  id: 0x37fc9b61
+  kind: POINTER
+  pointee_type_id: 0xf5b28b19
+}
+pointer_reference {
+  id: 0x37fdbcb1
+  kind: POINTER
+  pointee_type_id: 0xf5b61458
+}
+pointer_reference {
+  id: 0x3801e3d4
+  kind: POINTER
+  pointee_type_id: 0xca4769cf
+}
+pointer_reference {
+  id: 0x3803ecae
+  kind: POINTER
+  pointee_type_id: 0xca4f5426
+}
+pointer_reference {
+  id: 0x38040a6c
+  kind: POINTER
+  pointee_type_id: 0xca50cf2d
+}
+pointer_reference {
+  id: 0x3805773d
+  kind: POINTER
+  pointee_type_id: 0xca553a6b
+}
+pointer_reference {
+  id: 0x3806390a
+  kind: POINTER
+  pointee_type_id: 0xca5802b6
+}
+pointer_reference {
+  id: 0x3806a5e7
+  kind: POINTER
+  pointee_type_id: 0xca5a7101
+}
+pointer_reference {
+  id: 0x3808938b
+  kind: POINTER
+  pointee_type_id: 0xca62a8b3
+}
+pointer_reference {
+  id: 0x380a78f0
+  kind: POINTER
+  pointee_type_id: 0xca69055f
+}
+pointer_reference {
+  id: 0x381472e2
+  kind: POINTER
+  pointee_type_id: 0xca112d16
+}
+pointer_reference {
+  id: 0x3815e999
+  kind: POINTER
+  pointee_type_id: 0xca1740f9
+}
+pointer_reference {
+  id: 0x381aadcc
+  kind: POINTER
+  pointee_type_id: 0xca2a51af
+}
+pointer_reference {
+  id: 0x381b3a0b
+  kind: POINTER
+  pointee_type_id: 0xca2c0eb3
+}
+pointer_reference {
+  id: 0x381f3165
+  kind: POINTER
+  pointee_type_id: 0xca3c230a
+}
+pointer_reference {
+  id: 0x38264f07
+  kind: POINTER
+  pointee_type_id: 0xcad9da82
+}
+pointer_reference {
+  id: 0x382837f5
+  kind: POINTER
+  pointee_type_id: 0xcae03949
+}
+pointer_reference {
+  id: 0x3829c378
+  kind: POINTER
+  pointee_type_id: 0xcae7eb7d
+}
+pointer_reference {
+  id: 0x383098d7
+  kind: POINTER
+  pointee_type_id: 0xca8285c3
+}
+pointer_reference {
+  id: 0x383208c1
+  kind: POINTER
+  pointee_type_id: 0xca88c599
+}
+pointer_reference {
+  id: 0x38323bdd
+  kind: POINTER
+  pointee_type_id: 0xca8809e9
+}
+pointer_reference {
+  id: 0x38342a1b
+  kind: POINTER
+  pointee_type_id: 0xca904ef0
+}
+pointer_reference {
+  id: 0x38369fac
+  kind: POINTER
+  pointee_type_id: 0xca9a982e
+}
+pointer_reference {
+  id: 0x383b946e
+  kind: POINTER
+  pointee_type_id: 0xcaaeb726
+}
+pointer_reference {
+  id: 0x383bcea3
+  kind: POINTER
+  pointee_type_id: 0xcaafdc12
+}
+pointer_reference {
+  id: 0x383c223a
+  kind: POINTER
+  pointee_type_id: 0xcab06e77
+}
+pointer_reference {
+  id: 0x383c3ac0
+  kind: POINTER
+  pointee_type_id: 0xcab00d9e
+}
+pointer_reference {
+  id: 0x383f5be0
+  kind: POINTER
+  pointee_type_id: 0xcabd891e
+}
+pointer_reference {
+  id: 0x3842259a
+  kind: POINTER
+  pointee_type_id: 0xcb4870f7
+}
+pointer_reference {
+  id: 0x3845c003
+  kind: POINTER
+  pointee_type_id: 0xcb57e692
+}
+pointer_reference {
+  id: 0x384684b1
+  kind: POINTER
+  pointee_type_id: 0xcb5af459
+}
+pointer_reference {
+  id: 0x3846864c
+  kind: POINTER
+  pointee_type_id: 0xcb5affae
+}
+pointer_reference {
+  id: 0x384b5b60
+  kind: POINTER
+  pointee_type_id: 0xcb6d8b1d
+}
+pointer_reference {
+  id: 0x384c5795
+  kind: POINTER
+  pointee_type_id: 0xcb71b8cb
+}
+pointer_reference {
+  id: 0x384cb9bb
+  kind: POINTER
+  pointee_type_id: 0xcb720070
+}
+pointer_reference {
+  id: 0x384ff235
+  kind: POINTER
+  pointee_type_id: 0xcb7f2e4a
+}
+pointer_reference {
+  id: 0x38514bfb
+  kind: POINTER
+  pointee_type_id: 0xcb05c973
+}
+pointer_reference {
+  id: 0x38531dd4
+  kind: POINTER
+  pointee_type_id: 0xcb0c91cc
+}
+pointer_reference {
+  id: 0x38564622
+  kind: POINTER
+  pointee_type_id: 0xcb19fe14
+}
+pointer_reference {
+  id: 0x385779d3
+  kind: POINTER
+  pointee_type_id: 0xcb1d01d1
+}
+pointer_reference {
+  id: 0x3858448c
+  kind: POINTER
+  pointee_type_id: 0xcb21f4ad
+}
+pointer_reference {
+  id: 0x3860f3c0
+  kind: POINTER
+  pointee_type_id: 0xcbc3299e
+}
+pointer_reference {
+  id: 0x3861403d
+  kind: POINTER
+  pointee_type_id: 0xcbc5e66b
+}
+pointer_reference {
+  id: 0x3863a91c
+  kind: POINTER
+  pointee_type_id: 0xcbce42ed
+}
+pointer_reference {
+  id: 0x386883b9
+  kind: POINTER
+  pointee_type_id: 0xcbe2e878
+}
+pointer_reference {
+  id: 0x3868bf5d
+  kind: POINTER
+  pointee_type_id: 0xcbe21be8
+}
+pointer_reference {
+  id: 0x386badcf
+  kind: POINTER
+  pointee_type_id: 0xcbee51a2
+}
+pointer_reference {
+  id: 0x386effc9
+  kind: POINTER
+  pointee_type_id: 0xcbfb19ba
+}
+pointer_reference {
+  id: 0x386f9e42
+  kind: POINTER
+  pointee_type_id: 0xcbfe9f94
+}
+pointer_reference {
+  id: 0x38751b21
+  kind: POINTER
+  pointee_type_id: 0xcb948a18
+}
+pointer_reference {
+  id: 0x387626d3
+  kind: POINTER
+  pointee_type_id: 0xcb987dd0
+}
+pointer_reference {
+  id: 0x387bec7d
+  kind: POINTER
+  pointee_type_id: 0xcbaf5769
+}
+pointer_reference {
+  id: 0x387c15ae
+  kind: POINTER
+  pointee_type_id: 0xcbb0b027
+}
+pointer_reference {
+  id: 0x387cf974
+  kind: POINTER
+  pointee_type_id: 0xcbb3034f
+}
+pointer_reference {
+  id: 0x3885e219
+  kind: POINTER
+  pointee_type_id: 0xc8576ef8
+}
+pointer_reference {
+  id: 0x38865602
+  kind: POINTER
+  pointee_type_id: 0xc859be95
+}
+pointer_reference {
+  id: 0x38883fc7
+  kind: POINTER
+  pointee_type_id: 0xc8601982
+}
+pointer_reference {
+  id: 0x388a169b
+  kind: POINTER
+  pointee_type_id: 0xc868bcf0
+}
+pointer_reference {
+  id: 0x388aeada
+  kind: POINTER
+  pointee_type_id: 0xc86b4df4
+}
+pointer_reference {
+  id: 0x3890ccc2
+  kind: POINTER
+  pointee_type_id: 0xc803d596
+}
+pointer_reference {
+  id: 0x38936843
+  kind: POINTER
+  pointee_type_id: 0xc80d4793
+}
+pointer_reference {
+  id: 0x389be24f
+  kind: POINTER
+  pointee_type_id: 0xc82f6fa3
+}
+pointer_reference {
+  id: 0x389ecc4e
+  kind: POINTER
+  pointee_type_id: 0xc83bd7a5
+}
+pointer_reference {
+  id: 0x38a09850
+  kind: POINTER
+  pointee_type_id: 0xc8c287df
+}
+pointer_reference {
+  id: 0x38a2dee9
+  kind: POINTER
+  pointee_type_id: 0xc8cb9d39
+}
+pointer_reference {
+  id: 0x38aab014
+  kind: POINTER
+  pointee_type_id: 0xc8ea26cd
+}
+pointer_reference {
+  id: 0x38ad304a
+  kind: POINTER
+  pointee_type_id: 0xc8f427b7
+}
+pointer_reference {
+  id: 0x38ad83d0
+  kind: POINTER
+  pointee_type_id: 0xc8f6e9dd
+}
+pointer_reference {
+  id: 0x38af3519
+  kind: POINTER
+  pointee_type_id: 0xc8fc32f8
+}
+pointer_reference {
+  id: 0x38b136d3
+  kind: POINTER
+  pointee_type_id: 0xc8843dd2
+}
+pointer_reference {
+  id: 0x38b368bf
+  kind: POINTER
+  pointee_type_id: 0xc88d4460
+}
+pointer_reference {
+  id: 0x38b66a59
+  kind: POINTER
+  pointee_type_id: 0xc8994ffb
+}
+pointer_reference {
+  id: 0x38bc670e
+  kind: POINTER
+  pointee_type_id: 0xc8b17aa7
+}
+pointer_reference {
+  id: 0x38bffa98
+  kind: POINTER
+  pointee_type_id: 0xc8bf0cfd
+}
+pointer_reference {
+  id: 0x38c3714d
+  kind: POINTER
+  pointee_type_id: 0xc94d23ab
+}
+pointer_reference {
+  id: 0x38c5be1f
+  kind: POINTER
+  pointee_type_id: 0xc9561ee1
+}
+pointer_reference {
+  id: 0x38ce9779
+  kind: POINTER
+  pointee_type_id: 0xc97abb78
+}
+pointer_reference {
+  id: 0x38cec2ca
+  kind: POINTER
+  pointee_type_id: 0xc97bedb7
+}
+pointer_reference {
+  id: 0x38d14fe7
+  kind: POINTER
+  pointee_type_id: 0xc905d903
+}
+pointer_reference {
+  id: 0x38d23361
+  kind: POINTER
+  pointee_type_id: 0xc9082b19
+}
+pointer_reference {
+  id: 0x38de861f
+  kind: POINTER
+  pointee_type_id: 0xc93afee2
+}
+pointer_reference {
+  id: 0x38df6aa0
+  kind: POINTER
+  pointee_type_id: 0xc93d4c1c
+}
+pointer_reference {
+  id: 0x38dfb9f9
+  kind: POINTER
+  pointee_type_id: 0xc93e017b
+}
+pointer_reference {
+  id: 0x38e33441
+  kind: POINTER
+  pointee_type_id: 0xc9cc379b
+}
+pointer_reference {
+  id: 0x38e86333
+  kind: POINTER
+  pointee_type_id: 0xc9e16a53
+}
+pointer_reference {
+  id: 0x38ec2eab
+  kind: POINTER
+  pointee_type_id: 0xc9f05c33
+}
+pointer_reference {
+  id: 0x38ed0788
+  kind: POINTER
+  pointee_type_id: 0xc9f4f8be
+}
+pointer_reference {
+  id: 0x38f320f1
+  kind: POINTER
+  pointee_type_id: 0xc98c655a
+}
+pointer_reference {
+  id: 0x38f39751
+  kind: POINTER
+  pointee_type_id: 0xc98ebbd8
+}
+pointer_reference {
+  id: 0x38fa32ef
+  kind: POINTER
+  pointee_type_id: 0xc9a82d21
+}
+pointer_reference {
+  id: 0x38fdd541
+  kind: POINTER
+  pointee_type_id: 0xc9b7b39b
+}
+pointer_reference {
+  id: 0x38feef7f
+  kind: POINTER
+  pointee_type_id: 0xc9bb5b62
+}
+pointer_reference {
+  id: 0x3909df7b
+  kind: POINTER
+  pointee_type_id: 0xce679b71
+}
+pointer_reference {
+  id: 0x390ad61e
+  kind: POINTER
+  pointee_type_id: 0xce6bbee6
+}
+pointer_reference {
+  id: 0x390b641d
+  kind: POINTER
+  pointee_type_id: 0xce6d76ea
+}
+pointer_reference {
+  id: 0x391289e8
+  kind: POINTER
+  pointee_type_id: 0xce0ac13e
+}
+pointer_reference {
+  id: 0x3912ab06
+  kind: POINTER
+  pointee_type_id: 0xce0a4a84
+}
+pointer_reference {
+  id: 0x3912dbd4
+  kind: POINTER
+  pointee_type_id: 0xce0b89cc
+}
+pointer_reference {
+  id: 0x39182992
+  kind: POINTER
+  pointee_type_id: 0xce2040d6
+}
+pointer_reference {
+  id: 0x39185662
+  kind: POINTER
+  pointee_type_id: 0xce21bf14
+}
+pointer_reference {
+  id: 0x39194436
+  kind: POINTER
+  pointee_type_id: 0xce25f646
+}
+pointer_reference {
+  id: 0x391e6bd6
+  kind: POINTER
+  pointee_type_id: 0xce3949c4
+}
+pointer_reference {
+  id: 0x391f15ea
+  kind: POINTER
+  pointee_type_id: 0xce3cb135
+}
+pointer_reference {
+  id: 0x3922fa08
+  kind: POINTER
+  pointee_type_id: 0xcecb0ebd
+}
+pointer_reference {
+  id: 0x392664de
+  kind: POINTER
+  pointee_type_id: 0xced975e5
+}
+pointer_reference {
+  id: 0x3926e619
+  kind: POINTER
+  pointee_type_id: 0xcedb7efb
+}
+pointer_reference {
+  id: 0x39290604
+  kind: POINTER
+  pointee_type_id: 0xcee4fe8d
+}
+pointer_reference {
+  id: 0x392b09db
+  kind: POINTER
+  pointee_type_id: 0xceecc1f0
+}
+pointer_reference {
+  id: 0x392d9f5e
+  kind: POINTER
+  pointee_type_id: 0xcef69be4
+}
+pointer_reference {
+  id: 0x39302196
+  kind: POINTER
+  pointee_type_id: 0xce8060c4
+}
+pointer_reference {
+  id: 0x3930a655
+  kind: POINTER
+  pointee_type_id: 0xce827fcb
+}
+pointer_reference {
+  id: 0x39374fc5
+  kind: POINTER
+  pointee_type_id: 0xce9dd989
+}
+pointer_reference {
+  id: 0x393f044a
+  kind: POINTER
+  pointee_type_id: 0xcebcf7b7
+}
+pointer_reference {
+  id: 0x39450091
+  kind: POINTER
+  pointee_type_id: 0xcf54e4d8
+}
+pointer_reference {
+  id: 0x39487d35
+  kind: POINTER
+  pointee_type_id: 0xcf611249
+}
+pointer_reference {
+  id: 0x3948db4a
+  kind: POINTER
+  pointee_type_id: 0xcf638bb6
+}
+pointer_reference {
+  id: 0x394abf8d
+  kind: POINTER
+  pointee_type_id: 0xcf6a18a8
+}
+pointer_reference {
+  id: 0x394b6e9f
+  kind: POINTER
+  pointee_type_id: 0xcf6d5ce3
+}
+pointer_reference {
+  id: 0x3950568f
+  kind: POINTER
+  pointee_type_id: 0xcf01bca1
+}
+pointer_reference {
+  id: 0x39560186
+  kind: POINTER
+  pointee_type_id: 0xcf18e084
+}
+pointer_reference {
+  id: 0x3957e73b
+  kind: POINTER
+  pointee_type_id: 0xcf1f7a70
+}
+pointer_reference {
+  id: 0x395e9ae2
+  kind: POINTER
+  pointee_type_id: 0xcf3a8d16
+}
+pointer_reference {
+  id: 0x3960a5fc
+  kind: POINTER
+  pointee_type_id: 0xcfc2716e
+}
+pointer_reference {
+  id: 0x396151a4
+  kind: POINTER
+  pointee_type_id: 0xcfc5a00e
+}
+pointer_reference {
+  id: 0x39682308
+  kind: POINTER
+  pointee_type_id: 0xcfe06abf
+}
+pointer_reference {
+  id: 0x3969a52e
+  kind: POINTER
+  pointee_type_id: 0xcfe67224
+}
+pointer_reference {
+  id: 0x396c11e9
+  kind: POINTER
+  pointee_type_id: 0xcff0a13b
+}
+pointer_reference {
+  id: 0x396f8ae8
+  kind: POINTER
+  pointee_type_id: 0xcffecd3e
+}
+pointer_reference {
+  id: 0x396f8e0f
+  kind: POINTER
+  pointee_type_id: 0xcffedea2
+}
+pointer_reference {
+  id: 0x396fe4f8
+  kind: POINTER
+  pointee_type_id: 0xcfff757d
+}
+pointer_reference {
+  id: 0x3970a02f
+  kind: POINTER
+  pointee_type_id: 0xcf826620
+}
+pointer_reference {
+  id: 0x3971988d
+  kind: POINTER
+  pointee_type_id: 0xcf8684a8
+}
+pointer_reference {
+  id: 0x397a812c
+  kind: POINTER
+  pointee_type_id: 0xcfaae22f
+}
+pointer_reference {
+  id: 0x397d00ab
+  kind: POINTER
+  pointee_type_id: 0xcfb4e430
+}
+pointer_reference {
+  id: 0x397d1060
+  kind: POINTER
+  pointee_type_id: 0xcfb4a71c
+}
+pointer_reference {
+  id: 0x398b30f2
+  kind: POINTER
+  pointee_type_id: 0xcc6c2554
+}
+pointer_reference {
+  id: 0x398da40b
+  kind: POINTER
+  pointee_type_id: 0xcc7676b2
+}
+pointer_reference {
+  id: 0x39911d6a
+  kind: POINTER
+  pointee_type_id: 0xcc049335
+}
+pointer_reference {
+  id: 0x399122ef
+  kind: POINTER
+  pointee_type_id: 0xcc046d22
+}
+pointer_reference {
+  id: 0x39915f84
+  kind: POINTER
+  pointee_type_id: 0xcc05988c
+}
+pointer_reference {
+  id: 0x3992f3fa
+  kind: POINTER
+  pointee_type_id: 0xcc0b2975
+}
+pointer_reference {
+  id: 0x39947122
+  kind: POINTER
+  pointee_type_id: 0xcc112216
+}
+pointer_reference {
+  id: 0x3994adc8
+  kind: POINTER
+  pointee_type_id: 0xcc1251bf
+}
+pointer_reference {
+  id: 0x399f63b7
+  kind: POINTER
+  pointee_type_id: 0xcc3d6841
+}
+pointer_reference {
+  id: 0x39a49b1e
+  kind: POINTER
+  pointee_type_id: 0xccd28ae5
+}
+pointer_reference {
+  id: 0x39a4e83f
+  kind: POINTER
+  pointee_type_id: 0xccd34661
+}
+pointer_reference {
+  id: 0x39a83127
+  kind: POINTER
+  pointee_type_id: 0xcce02202
+}
+pointer_reference {
+  id: 0x39a8be0c
+  kind: POINTER
+  pointee_type_id: 0xcce21ead
+}
+pointer_reference {
+  id: 0x39a9add7
+  kind: POINTER
+  pointee_type_id: 0xcce651c2
+}
+pointer_reference {
+  id: 0x39ab3cd0
+  kind: POINTER
+  pointee_type_id: 0xccec15dd
+}
+pointer_reference {
+  id: 0x39b05793
+  kind: POINTER
+  pointee_type_id: 0xcc81b8d3
+}
+pointer_reference {
+  id: 0x39b425bc
+  kind: POINTER
+  pointee_type_id: 0xcc90706c
+}
+pointer_reference {
+  id: 0x39b6e021
+  kind: POINTER
+  pointee_type_id: 0xcc9b6618
+}
+pointer_reference {
+  id: 0x39b79b30
+  kind: POINTER
+  pointee_type_id: 0xcc9e8a5e
+}
+pointer_reference {
+  id: 0x39bbc694
+  kind: POINTER
+  pointee_type_id: 0xccaffccc
+}
+pointer_reference {
+  id: 0x39bf00bd
+  kind: POINTER
+  pointee_type_id: 0xccbce468
+}
+pointer_reference {
+  id: 0x39bf4a63
+  kind: POINTER
+  pointee_type_id: 0xccbdcf13
+}
+pointer_reference {
+  id: 0x39c0701e
+  kind: POINTER
+  pointee_type_id: 0xcd4126e4
+}
+pointer_reference {
+  id: 0x39c3bcd2
+  kind: POINTER
+  pointee_type_id: 0xcd4e15d4
+}
+pointer_reference {
+  id: 0x39c49895
+  kind: POINTER
+  pointee_type_id: 0xcd5284cb
+}
+pointer_reference {
+  id: 0x39c6a784
+  kind: POINTER
+  pointee_type_id: 0xcd5a788e
+}
+pointer_reference {
+  id: 0x39c7d4d7
+  kind: POINTER
+  pointee_type_id: 0xcd5fb5c3
+}
+pointer_reference {
+  id: 0x39c825ca
+  kind: POINTER
+  pointee_type_id: 0xcd6071b7
+}
+pointer_reference {
+  id: 0x39cc14ac
+  kind: POINTER
+  pointee_type_id: 0xcd70b42d
+}
+pointer_reference {
+  id: 0x39cdabcf
+  kind: POINTER
+  pointee_type_id: 0xcd7649a1
+}
+pointer_reference {
+  id: 0x39cdf888
+  kind: POINTER
+  pointee_type_id: 0xcd7704bf
+}
+pointer_reference {
+  id: 0x39cfb49e
+  kind: POINTER
+  pointee_type_id: 0xcd7e34e4
+}
+pointer_reference {
+  id: 0x39d1288c
+  kind: POINTER
+  pointee_type_id: 0xcd0444ad
+}
+pointer_reference {
+  id: 0x39d1626d
+  kind: POINTER
+  pointee_type_id: 0xcd056f28
+}
+pointer_reference {
+  id: 0x39d2dd7d
+  kind: POINTER
+  pointee_type_id: 0xcd0b936a
+}
+pointer_reference {
+  id: 0x39d30e9a
+  kind: POINTER
+  pointee_type_id: 0xcd0cdcf7
+}
+pointer_reference {
+  id: 0x39d60e4a
+  kind: POINTER
+  pointee_type_id: 0xcd18dfb6
+}
+pointer_reference {
+  id: 0x39db4e33
+  kind: POINTER
+  pointee_type_id: 0xcd2dde52
+}
+pointer_reference {
+  id: 0x39dc346c
+  kind: POINTER
+  pointee_type_id: 0xcd30372f
+}
+pointer_reference {
+  id: 0x39e76e0a
+  kind: POINTER
+  pointee_type_id: 0xcddd5eb6
+}
+pointer_reference {
+  id: 0x39e9ff6b
+  kind: POINTER
+  pointee_type_id: 0xcde71b33
+}
+pointer_reference {
+  id: 0x39ecc151
+  kind: POINTER
+  pointee_type_id: 0xcdf3e3db
+}
+pointer_reference {
+  id: 0x39ee1a91
+  kind: POINTER
+  pointee_type_id: 0xcdf88cda
+}
+pointer_reference {
+  id: 0x39ee8afd
+  kind: POINTER
+  pointee_type_id: 0xcdfacd6a
+}
+pointer_reference {
+  id: 0x39ee9172
+  kind: POINTER
+  pointee_type_id: 0xcdfaa356
+}
+pointer_reference {
+  id: 0x39f008d1
+  kind: POINTER
+  pointee_type_id: 0xcd80c5db
+}
+pointer_reference {
+  id: 0x39f4bcfa
+  kind: POINTER
+  pointee_type_id: 0xcd921577
+}
+pointer_reference {
+  id: 0x3a056647
+  kind: POINTER
+  pointee_type_id: 0xc2557f81
+}
+pointer_reference {
+  id: 0x3a0d2650
+  kind: POINTER
+  pointee_type_id: 0xc2747fdf
+}
+pointer_reference {
+  id: 0x3a1b117d
+  kind: POINTER
+  pointee_type_id: 0xc22ca369
+}
+pointer_reference {
+  id: 0x3a1e1de8
+  kind: POINTER
+  pointee_type_id: 0xc238913e
+}
+pointer_reference {
+  id: 0x3a232845
+  kind: POINTER
+  pointee_type_id: 0xc2cc478a
+}
+pointer_reference {
+  id: 0x3a33db75
+  kind: POINTER
+  pointee_type_id: 0xc28f8b49
+}
+pointer_reference {
+  id: 0x3a3e3264
+  kind: POINTER
+  pointee_type_id: 0xc2b82f0e
+}
+pointer_reference {
+  id: 0x3a40dd6c
+  kind: POINTER
+  pointee_type_id: 0xc343932d
+}
+pointer_reference {
+  id: 0x3a40fc42
+  kind: POINTER
+  pointee_type_id: 0xc3431795
+}
+pointer_reference {
+  id: 0x3a410782
+  kind: POINTER
+  pointee_type_id: 0xc344f897
+}
+pointer_reference {
+  id: 0x3a42306c
+  kind: POINTER
+  pointee_type_id: 0xc348272f
+}
+pointer_reference {
+  id: 0x3a433e0e
+  kind: POINTER
+  pointee_type_id: 0xc34c1ea7
+}
+pointer_reference {
+  id: 0x3a44a1d1
+  kind: POINTER
+  pointee_type_id: 0xc35261da
+}
+pointer_reference {
+  id: 0x3a452bd5
+  kind: POINTER
+  pointee_type_id: 0xc35449c9
+}
+pointer_reference {
+  id: 0x3a47ea7a
+  kind: POINTER
+  pointee_type_id: 0xc35f4f74
+}
+pointer_reference {
+  id: 0x3a4ae2d4
+  kind: POINTER
+  pointee_type_id: 0xc36b6dcd
+}
+pointer_reference {
+  id: 0x3a4b6a66
+  kind: POINTER
+  pointee_type_id: 0xc36d4f04
+}
+pointer_reference {
+  id: 0x3a5262d4
+  kind: POINTER
+  pointee_type_id: 0xc3096dcf
+}
+pointer_reference {
+  id: 0x3a534a58
+  kind: POINTER
+  pointee_type_id: 0xc30dcffc
+}
+pointer_reference {
+  id: 0x3a54c5e0
+  kind: POINTER
+  pointee_type_id: 0xc313f11d
+}
+pointer_reference {
+  id: 0x3a583251
+  kind: POINTER
+  pointee_type_id: 0xc3202fd8
+}
+pointer_reference {
+  id: 0x3a58a89b
+  kind: POINTER
+  pointee_type_id: 0xc32244f1
+}
+pointer_reference {
+  id: 0x3a5cf71b
+  kind: POINTER
+  pointee_type_id: 0xc3333af0
+}
+pointer_reference {
+  id: 0x3a6106d5
+  kind: POINTER
+  pointee_type_id: 0xc3c4fdc9
+}
+pointer_reference {
+  id: 0x3a62e69e
+  kind: POINTER
+  pointee_type_id: 0xc3cb7ce7
+}
+pointer_reference {
+  id: 0x3a6574c9
+  kind: POINTER
+  pointee_type_id: 0xc3d535bb
+}
+pointer_reference {
+  id: 0x3a667404
+  kind: POINTER
+  pointee_type_id: 0xc3d9368e
+}
+pointer_reference {
+  id: 0x3a6a6a5b
+  kind: POINTER
+  pointee_type_id: 0xc3e94ff2
+}
+pointer_reference {
+  id: 0x3a6b0163
+  kind: POINTER
+  pointee_type_id: 0xc3ece312
+}
+pointer_reference {
+  id: 0x3a7f8e60
+  kind: POINTER
+  pointee_type_id: 0xc3bedf1f
+}
+pointer_reference {
+  id: 0x3a813c8c
+  kind: POINTER
+  pointee_type_id: 0xc04414ae
+}
+pointer_reference {
+  id: 0x3a83b85f
+  kind: POINTER
+  pointee_type_id: 0xc04e07e1
+}
+pointer_reference {
+  id: 0x3a88a91e
+  kind: POINTER
+  pointee_type_id: 0xc06242e6
+}
+pointer_reference {
+  id: 0x3a88ea63
+  kind: POINTER
+  pointee_type_id: 0xc0634f13
+}
+pointer_reference {
+  id: 0x3a8e2ac6
+  kind: POINTER
+  pointee_type_id: 0xc0784d86
+}
+pointer_reference {
+  id: 0x3a901e7f
+  kind: POINTER
+  pointee_type_id: 0xc0009f60
+}
+pointer_reference {
+  id: 0x3a91ca5f
+  kind: POINTER
+  pointee_type_id: 0xc007cfe3
+}
+pointer_reference {
+  id: 0x3a993d2d
+  kind: POINTER
+  pointee_type_id: 0xc0241229
+}
+pointer_reference {
+  id: 0x3a99572b
+  kind: POINTER
+  pointee_type_id: 0xc025ba33
+}
+pointer_reference {
+  id: 0x3a9c855e
+  kind: POINTER
+  pointee_type_id: 0xc032f3e5
+}
+pointer_reference {
+  id: 0x3aac87ab
+  kind: POINTER
+  pointee_type_id: 0xc0f2f833
+}
+pointer_reference {
+  id: 0x3ab13613
+  kind: POINTER
+  pointee_type_id: 0xc0843ed1
+}
+pointer_reference {
+  id: 0x3ab47ff9
+  kind: POINTER
+  pointee_type_id: 0xc0911979
+}
+pointer_reference {
+  id: 0x3ab71747
+  kind: POINTER
+  pointee_type_id: 0xc09cbb81
+}
+pointer_reference {
+  id: 0x3ab76acd
+  kind: POINTER
+  pointee_type_id: 0xc09d4dab
+}
+pointer_reference {
+  id: 0x3aba8aa9
+  kind: POINTER
+  pointee_type_id: 0xc0aacc3a
+}
+pointer_reference {
+  id: 0x3ac2a209
+  kind: POINTER
+  pointee_type_id: 0xc14a6eb8
+}
+pointer_reference {
+  id: 0x3ac7788d
+  kind: POINTER
+  pointee_type_id: 0xc15d04a9
+}
+pointer_reference {
+  id: 0x3acf0cc8
+  kind: POINTER
+  pointee_type_id: 0xc17cd5be
+}
+pointer_reference {
+  id: 0x3ad0ee83
+  kind: POINTER
+  pointee_type_id: 0xc1035c93
+}
+pointer_reference {
+  id: 0x3ad18ab6
+  kind: POINTER
+  pointee_type_id: 0xc106cc47
+}
+pointer_reference {
+  id: 0x3ad73636
+  kind: POINTER
+  pointee_type_id: 0xc11c3e45
+}
+pointer_reference {
+  id: 0x3ad81610
+  kind: POINTER
+  pointee_type_id: 0xc120bede
+}
+pointer_reference {
+  id: 0x3ada60b4
+  kind: POINTER
+  pointee_type_id: 0xc129644e
+}
+pointer_reference {
+  id: 0x3ada915e
+  kind: POINTER
+  pointee_type_id: 0xc12aa3e6
+}
+pointer_reference {
+  id: 0x3ade9091
+  kind: POINTER
+  pointee_type_id: 0xc13aa4db
+}
+pointer_reference {
+  id: 0x3ae3ff84
+  kind: POINTER
+  pointee_type_id: 0xc1cf188c
+}
+pointer_reference {
+  id: 0x3aeb5c03
+  kind: POINTER
+  pointee_type_id: 0xc1ed9692
+}
+pointer_reference {
+  id: 0x3af1bd6d
+  kind: POINTER
+  pointee_type_id: 0xc1861329
+}
+pointer_reference {
+  id: 0x3af34d6f
+  kind: POINTER
+  pointee_type_id: 0xc18dd320
+}
+pointer_reference {
+  id: 0x3af3fd37
+  kind: POINTER
+  pointee_type_id: 0xc18f1240
+}
+pointer_reference {
+  id: 0x3aff5796
+  kind: POINTER
+  pointee_type_id: 0xc1bdb8c5
+}
+pointer_reference {
+  id: 0x3b0104f9
+  kind: POINTER
+  pointee_type_id: 0xc644f578
+}
+pointer_reference {
+  id: 0x3b03e024
+  kind: POINTER
+  pointee_type_id: 0xc64f660e
+}
+pointer_reference {
+  id: 0x3b04bead
+  kind: POINTER
+  pointee_type_id: 0xc6521c28
+}
+pointer_reference {
+  id: 0x3b050890
+  kind: POINTER
+  pointee_type_id: 0xc654c4df
+}
+pointer_reference {
+  id: 0x3b08eb03
+  kind: POINTER
+  pointee_type_id: 0xc6634a90
+}
+pointer_reference {
+  id: 0x3b0a5ea0
+  kind: POINTER
+  pointee_type_id: 0xc6699c1e
+}
+pointer_reference {
+  id: 0x3b0b4c9d
+  kind: POINTER
+  pointee_type_id: 0xc66dd4eb
+}
+pointer_reference {
+  id: 0x3b12c8e0
+  kind: POINTER
+  pointee_type_id: 0xc60bc51e
+}
+pointer_reference {
+  id: 0x3b15fe1d
+  kind: POINTER
+  pointee_type_id: 0xc6171ee9
+}
+pointer_reference {
+  id: 0x3b19ae48
+  kind: POINTER
+  pointee_type_id: 0xc6265fbd
+}
+pointer_reference {
+  id: 0x3b1d2a91
+  kind: POINTER
+  pointee_type_id: 0xc6344cd8
+}
+pointer_reference {
+  id: 0x3b1e48cc
+  kind: POINTER
+  pointee_type_id: 0xc639c5af
+}
+pointer_reference {
+  id: 0x3b1eb90c
+  kind: POINTER
+  pointee_type_id: 0xc63a02ae
+}
+pointer_reference {
+  id: 0x3b20fed2
+  kind: POINTER
+  pointee_type_id: 0xc6c31dd4
+}
+pointer_reference {
+  id: 0x3b289488
+  kind: POINTER
+  pointee_type_id: 0xc6e2b4bc
+}
+pointer_reference {
+  id: 0x3b2ca4e8
+  kind: POINTER
+  pointee_type_id: 0xc6f2753e
+}
+pointer_reference {
+  id: 0x3b2d7e64
+  kind: POINTER
+  pointee_type_id: 0xc6f51f0f
+}
+pointer_reference {
+  id: 0x3b2ef32b
+  kind: POINTER
+  pointee_type_id: 0xc6fb2a33
+}
+pointer_reference {
+  id: 0x3b2fe314
+  kind: POINTER
+  pointee_type_id: 0xc6ff6acc
+}
+pointer_reference {
+  id: 0x3b3557ba
+  kind: POINTER
+  pointee_type_id: 0xc695b875
+}
+pointer_reference {
+  id: 0x3b36aa0c
+  kind: POINTER
+  pointee_type_id: 0xc69a4eaf
+}
+pointer_reference {
+  id: 0x3b37e5fa
+  kind: POINTER
+  pointee_type_id: 0xc69f7174
+}
+pointer_reference {
+  id: 0x3b38b19b
+  kind: POINTER
+  pointee_type_id: 0xc6a220f3
+}
+pointer_reference {
+  id: 0x3b399f9e
+  kind: POINTER
+  pointee_type_id: 0xc6a698e7
+}
+pointer_reference {
+  id: 0x3b40190b
+  kind: POINTER
+  pointee_type_id: 0xc74082b2
+}
+pointer_reference {
+  id: 0x3b416cd7
+  kind: POINTER
+  pointee_type_id: 0xc74555c2
+}
+pointer_reference {
+  id: 0x3b43b730
+  kind: POINTER
+  pointee_type_id: 0xc74e3a5f
+}
+pointer_reference {
+  id: 0x3b461cc8
+  kind: POINTER
+  pointee_type_id: 0xc75895bd
+}
+pointer_reference {
+  id: 0x3b47fa59
+  kind: POINTER
+  pointee_type_id: 0xc75f0ff8
+}
+pointer_reference {
+  id: 0x3b49ed35
+  kind: POINTER
+  pointee_type_id: 0xc7675249
+}
+pointer_reference {
+  id: 0x3b4ce03a
+  kind: POINTER
+  pointee_type_id: 0xc7736674
+}
+pointer_reference {
+  id: 0x3b4d47fa
+  kind: POINTER
+  pointee_type_id: 0xc775f975
+}
+pointer_reference {
+  id: 0x3b4d885a
+  kind: POINTER
+  pointee_type_id: 0xc776c7f6
+}
+pointer_reference {
+  id: 0x3b4e90b8
+  kind: POINTER
+  pointee_type_id: 0xc77aa47c
+}
+pointer_reference {
+  id: 0x3b54fdd3
+  kind: POINTER
+  pointee_type_id: 0xc71311d1
+}
+pointer_reference {
+  id: 0x3b55ca81
+  kind: POINTER
+  pointee_type_id: 0xc717cc99
+}
+pointer_reference {
+  id: 0x3b567d85
+  kind: POINTER
+  pointee_type_id: 0xc719108a
+}
+pointer_reference {
+  id: 0x3b569cc2
+  kind: POINTER
+  pointee_type_id: 0xc71a9595
+}
+pointer_reference {
+  id: 0x3b5cc110
+  kind: POINTER
+  pointee_type_id: 0xc733e2de
+}
+pointer_reference {
+  id: 0x3b66c89b
+  kind: POINTER
+  pointee_type_id: 0xc7dbc4f1
+}
+pointer_reference {
+  id: 0x3b68ec61
+  kind: POINTER
+  pointee_type_id: 0xc7e35718
+}
+pointer_reference {
+  id: 0x3b70706d
+  kind: POINTER
+  pointee_type_id: 0xc7812729
+}
+pointer_reference {
+  id: 0x3b773187
+  kind: POINTER
+  pointee_type_id: 0xc79c2080
+}
+pointer_reference {
+  id: 0x3b7c5d08
+  kind: POINTER
+  pointee_type_id: 0xc7b192bd
+}
+pointer_reference {
+  id: 0x3b7f3a35
+  kind: POINTER
+  pointee_type_id: 0xc7bc0e4a
+}
+pointer_reference {
+  id: 0x3b806236
+  kind: POINTER
+  pointee_type_id: 0xc4416e46
+}
+pointer_reference {
+  id: 0x3b83ec24
+  kind: POINTER
+  pointee_type_id: 0xc44f560e
+}
+pointer_reference {
+  id: 0x3b845f97
+  kind: POINTER
+  pointee_type_id: 0xc45198c2
+}
+pointer_reference {
+  id: 0x3b8a7aa2
+  kind: POINTER
+  pointee_type_id: 0xc4690c15
+}
+pointer_reference {
+  id: 0x3b91d78c
+  kind: POINTER
+  pointee_type_id: 0xc407b8af
+}
+pointer_reference {
+  id: 0x3b94d9f5
+  kind: POINTER
+  pointee_type_id: 0xc4138148
+}
+pointer_reference {
+  id: 0x3b97c648
+  kind: POINTER
+  pointee_type_id: 0xc41fffbd
+}
+pointer_reference {
+  id: 0x3b991d29
+  kind: POINTER
+  pointee_type_id: 0xc4249239
+}
+pointer_reference {
+  id: 0x3b9c6e49
+  kind: POINTER
+  pointee_type_id: 0xc4315fb9
+}
+pointer_reference {
+  id: 0x3b9d17e6
+  kind: POINTER
+  pointee_type_id: 0xc434b906
+}
+pointer_reference {
+  id: 0x3ba05ad7
+  kind: POINTER
+  pointee_type_id: 0xc4c18dc3
+}
+pointer_reference {
+  id: 0x3ba261b0
+  kind: POINTER
+  pointee_type_id: 0xc4c9605c
+}
+pointer_reference {
+  id: 0x3ba6347b
+  kind: POINTER
+  pointee_type_id: 0xc4d83772
+}
+pointer_reference {
+  id: 0x3ba8f155
+  kind: POINTER
+  pointee_type_id: 0xc4e323c9
+}
+pointer_reference {
+  id: 0x3baacc82
+  kind: POINTER
+  pointee_type_id: 0xc4ebd496
+}
+pointer_reference {
+  id: 0x3bad809b
+  kind: POINTER
+  pointee_type_id: 0xc4f6e4f3
+}
+pointer_reference {
+  id: 0x3bb11c92
+  kind: POINTER
+  pointee_type_id: 0xc48494d4
+}
+pointer_reference {
+  id: 0x3bc2a7f0
+  kind: POINTER
+  pointee_type_id: 0xc54a795e
+}
+pointer_reference {
+  id: 0x3bc62241
+  kind: POINTER
+  pointee_type_id: 0xc5586f9b
+}
+pointer_reference {
+  id: 0x3bc90e1f
+  kind: POINTER
+  pointee_type_id: 0xc564dee2
+}
+pointer_reference {
+  id: 0x3bc93aed
+  kind: POINTER
+  pointee_type_id: 0xc5640d2a
+}
+pointer_reference {
+  id: 0x3bcbf8c5
+  kind: POINTER
+  pointee_type_id: 0xc56f0588
+}
+pointer_reference {
+  id: 0x3bccaec1
+  kind: POINTER
+  pointee_type_id: 0xc5725d9a
+}
+pointer_reference {
+  id: 0x3bd2bf42
+  kind: POINTER
+  pointee_type_id: 0xc50a1b96
+}
+pointer_reference {
+  id: 0x3bd9eb0b
+  kind: POINTER
+  pointee_type_id: 0xc5274ab2
+}
+pointer_reference {
+  id: 0x3bdbd647
+  kind: POINTER
+  pointee_type_id: 0xc52fbf81
+}
+pointer_reference {
+  id: 0x3bdc1cb2
+  kind: POINTER
+  pointee_type_id: 0xc5309455
+}
+pointer_reference {
+  id: 0x3bde0140
+  kind: POINTER
+  pointee_type_id: 0xc538e39d
+}
+pointer_reference {
+  id: 0x3be4ec15
+  kind: POINTER
+  pointee_type_id: 0xc5d356cb
+}
+pointer_reference {
+  id: 0x3be64ffd
+  kind: POINTER
+  pointee_type_id: 0xc5d9d969
+}
+pointer_reference {
+  id: 0x3be8a71a
+  kind: POINTER
+  pointee_type_id: 0xc5e27af4
+}
+pointer_reference {
+  id: 0x3bedc96c
+  kind: POINTER
+  pointee_type_id: 0xc5f7c32f
+}
+pointer_reference {
+  id: 0x3bf581e3
+  kind: POINTER
+  pointee_type_id: 0xc596e113
+}
+pointer_reference {
+  id: 0x3bfbd7cf
+  kind: POINTER
+  pointee_type_id: 0xc5afb9a0
+}
+pointer_reference {
+  id: 0x3bfc68fb
+  kind: POINTER
+  pointee_type_id: 0xc5b14572
+}
+pointer_reference {
+  id: 0x3c01aef6
+  kind: POINTER
+  pointee_type_id: 0xda465d46
+}
+pointer_reference {
+  id: 0x3c04a29e
+  kind: POINTER
+  pointee_type_id: 0xda526ce5
+}
+pointer_reference {
+  id: 0x3c0604da
+  kind: POINTER
+  pointee_type_id: 0xda58f5f7
+}
+pointer_reference {
+  id: 0x3c07fb40
+  kind: POINTER
+  pointee_type_id: 0xda5f0b9e
+}
+pointer_reference {
+  id: 0x3c0803ce
+  kind: POINTER
+  pointee_type_id: 0xda60e9a6
+}
+pointer_reference {
+  id: 0x3c0933ca
+  kind: POINTER
+  pointee_type_id: 0xda6429b7
+}
+pointer_reference {
+  id: 0x3c0e9e79
+  kind: POINTER
+  pointee_type_id: 0xda7a9f79
+}
+pointer_reference {
+  id: 0x3c128e24
+  kind: POINTER
+  pointee_type_id: 0xda0ade0d
+}
+pointer_reference {
+  id: 0x3c18d186
+  kind: POINTER
+  pointee_type_id: 0xda23a084
+}
+pointer_reference {
+  id: 0x3c18eeed
+  kind: POINTER
+  pointee_type_id: 0xda235d29
+}
+pointer_reference {
+  id: 0x3c1f949c
+  kind: POINTER
+  pointee_type_id: 0xda3eb4ee
+}
+pointer_reference {
+  id: 0x3c21809c
+  kind: POINTER
+  pointee_type_id: 0xdac6e4ed
+}
+pointer_reference {
+  id: 0x3c24585d
+  kind: POINTER
+  pointee_type_id: 0xdad187e9
+}
+pointer_reference {
+  id: 0x3c2755a3
+  kind: POINTER
+  pointee_type_id: 0xdaddb011
+}
+pointer_reference {
+  id: 0x3c277b43
+  kind: POINTER
+  pointee_type_id: 0xdadd0b91
+}
+pointer_reference {
+  id: 0x3c2dd1ca
+  kind: POINTER
+  pointee_type_id: 0xdaf7a1b4
+}
+pointer_reference {
+  id: 0x3c38843b
+  kind: POINTER
+  pointee_type_id: 0xdaa2f673
+}
+pointer_reference {
+  id: 0x3c3fe9a7
+  kind: POINTER
+  pointee_type_id: 0xdabf4001
+}
+pointer_reference {
+  id: 0x3c4114bd
+  kind: POINTER
+  pointee_type_id: 0xdb44b469
+}
+pointer_reference {
+  id: 0x3c41c19b
+  kind: POINTER
+  pointee_type_id: 0xdb47e0f3
+}
+pointer_reference {
+  id: 0x3c44a21c
+  kind: POINTER
+  pointee_type_id: 0xdb526eee
+}
+pointer_reference {
+  id: 0x3c455255
+  kind: POINTER
+  pointee_type_id: 0xdb55afca
+}
+pointer_reference {
+  id: 0x3c468c18
+  kind: POINTER
+  pointee_type_id: 0xdb5ad6ff
+}
+pointer_reference {
+  id: 0x3c47a762
+  kind: POINTER
+  pointee_type_id: 0xdb5e7b14
+}
+pointer_reference {
+  id: 0x3c4ed50c
+  kind: POINTER
+  pointee_type_id: 0xdb7bb2af
+}
+pointer_reference {
+  id: 0x3c4fd6a2
+  kind: POINTER
+  pointee_type_id: 0xdb7fbc17
+}
+pointer_reference {
+  id: 0x3c5315c3
+  kind: POINTER
+  pointee_type_id: 0xdb0cb193
+}
+pointer_reference {
+  id: 0x3c5396d4
+  kind: POINTER
+  pointee_type_id: 0xdb0ebdcd
+}
+pointer_reference {
+  id: 0x3c53eefd
+  kind: POINTER
+  pointee_type_id: 0xdb0f5d6b
+}
+pointer_reference {
+  id: 0x3c5401fe
+  kind: POINTER
+  pointee_type_id: 0xdb10e164
+}
+pointer_reference {
+  id: 0x3c540ff9
+  kind: POINTER
+  pointee_type_id: 0xdb10d97a
+}
+pointer_reference {
+  id: 0x3c57992a
+  kind: POINTER
+  pointee_type_id: 0xdb1e8234
+}
+pointer_reference {
+  id: 0x3c59dbe9
+  kind: POINTER
+  pointee_type_id: 0xdb27893a
+}
+pointer_reference {
+  id: 0x3c5b16b9
+  kind: POINTER
+  pointee_type_id: 0xdb2cbc7a
+}
+pointer_reference {
+  id: 0x3c5bd7ce
+  kind: POINTER
+  pointee_type_id: 0xdb2fb9a5
+}
+pointer_reference {
+  id: 0x3c5cda3d
+  kind: POINTER
+  pointee_type_id: 0xdb338e68
+}
+pointer_reference {
+  id: 0x3c5f865b
+  kind: POINTER
+  pointee_type_id: 0xdb3efff0
+}
+pointer_reference {
+  id: 0x3c621598
+  kind: POINTER
+  pointee_type_id: 0xdbc8b0ff
+}
+pointer_reference {
+  id: 0x3c63caea
+  kind: POINTER
+  pointee_type_id: 0xdbcfcd34
+}
+pointer_reference {
+  id: 0x3c6958c4
+  kind: POINTER
+  pointee_type_id: 0xdbe5858f
+}
+pointer_reference {
+  id: 0x3c6a6bbc
+  kind: POINTER
+  pointee_type_id: 0xdbe9486d
+}
+pointer_reference {
+  id: 0x3c6aba87
+  kind: POINTER
+  pointee_type_id: 0xdbea0c83
+}
+pointer_reference {
+  id: 0x3c6f7555
+  kind: POINTER
+  pointee_type_id: 0xdbfd33c9
+}
+pointer_reference {
+  id: 0x3c744d69
+  kind: POINTER
+  pointee_type_id: 0xdb91d338
+}
+pointer_reference {
+  id: 0x3c792b1b
+  kind: POINTER
+  pointee_type_id: 0xdba44af3
+}
+pointer_reference {
+  id: 0x3c83e85d
+  kind: POINTER
+  pointee_type_id: 0xd84f47eb
+}
+pointer_reference {
+  id: 0x3c88afe7
+  kind: POINTER
+  pointee_type_id: 0xd8625902
+}
+pointer_reference {
+  id: 0x3c88bbfa
+  kind: POINTER
+  pointee_type_id: 0xd8620976
+}
+pointer_reference {
+  id: 0x3c894cca
+  kind: POINTER
+  pointee_type_id: 0xd865d5b5
+}
+pointer_reference {
+  id: 0x3c8cb790
+  kind: POINTER
+  pointee_type_id: 0xd87238de
+}
+pointer_reference {
+  id: 0x3c8db9ff
+  kind: POINTER
+  pointee_type_id: 0xd8760162
+}
+pointer_reference {
+  id: 0x3c8e29f7
+  kind: POINTER
+  pointee_type_id: 0xd8784143
+}
+pointer_reference {
+  id: 0x3c926729
+  kind: POINTER
+  pointee_type_id: 0xd8097a3b
+}
+pointer_reference {
+  id: 0x3c945dac
+  kind: POINTER
+  pointee_type_id: 0xd811902c
+}
+pointer_reference {
+  id: 0x3c952c30
+  kind: POINTER
+  pointee_type_id: 0xd814565e
+}
+pointer_reference {
+  id: 0x3c9a9fb2
+  kind: POINTER
+  pointee_type_id: 0xd82a9856
+}
+pointer_reference {
+  id: 0x3c9ce28f
+  kind: POINTER
+  pointee_type_id: 0xd8336ca1
+}
+pointer_reference {
+  id: 0x3ca2533c
+  kind: POINTER
+  pointee_type_id: 0xd8c9aa6d
+}
+pointer_reference {
+  id: 0x3ca7539e
+  kind: POINTER
+  pointee_type_id: 0xd8dda8e5
+}
+pointer_reference {
+  id: 0x3ca8bc60
+  kind: POINTER
+  pointee_type_id: 0xd8e2171e
+}
+pointer_reference {
+  id: 0x3caa7a0b
+  kind: POINTER
+  pointee_type_id: 0xd8e90eb3
+}
+pointer_reference {
+  id: 0x3cab5b8b
+  kind: POINTER
+  pointee_type_id: 0xd8ed88b2
+}
+pointer_reference {
+  id: 0x3caf1899
+  kind: POINTER
+  pointee_type_id: 0xd8fc84fa
+}
+pointer_reference {
+  id: 0x3cb1656a
+  kind: POINTER
+  pointee_type_id: 0xd8857337
+}
+pointer_reference {
+  id: 0x3cb3f183
+  kind: POINTER
+  pointee_type_id: 0xd88f2091
+}
+pointer_reference {
+  id: 0x3cc5d159
+  kind: POINTER
+  pointee_type_id: 0xd957a3fb
+}
+pointer_reference {
+  id: 0x3cc89d58
+  kind: POINTER
+  pointee_type_id: 0xd96293fe
+}
+pointer_reference {
+  id: 0x3ccb45cc
+  kind: POINTER
+  pointee_type_id: 0xd96df1ac
+}
+pointer_reference {
+  id: 0x3ccbbab7
+  kind: POINTER
+  pointee_type_id: 0xd96e0c40
+}
+pointer_reference {
+  id: 0x3ccbe06d
+  kind: POINTER
+  pointee_type_id: 0xd96f672b
+}
+pointer_reference {
+  id: 0x3cce5030
+  kind: POINTER
+  pointee_type_id: 0xd979a65e
+}
+pointer_reference {
+  id: 0x3cd1ad37
+  kind: POINTER
+  pointee_type_id: 0xd9065242
+}
+pointer_reference {
+  id: 0x3cd81844
+  kind: POINTER
+  pointee_type_id: 0xd920878f
+}
+pointer_reference {
+  id: 0x3ce1bbd3
+  kind: POINTER
+  pointee_type_id: 0xd9c609d0
+}
+pointer_reference {
+  id: 0x3cf60872
+  kind: POINTER
+  pointee_type_id: 0xd998c757
+}
+pointer_reference {
+  id: 0x3cf7396b
+  kind: POINTER
+  pointee_type_id: 0xd99c0331
+}
+pointer_reference {
+  id: 0x3cfc8982
+  kind: POINTER
+  pointee_type_id: 0xd9b2c095
+}
+pointer_reference {
+  id: 0x3cfe7778
+  kind: POINTER
+  pointee_type_id: 0xd9b93b7c
+}
+pointer_reference {
+  id: 0x3d09670a
+  kind: POINTER
+  pointee_type_id: 0xde657ab4
+}
+pointer_reference {
+  id: 0x3d0a3be5
+  kind: POINTER
+  pointee_type_id: 0xde680909
+}
+pointer_reference {
+  id: 0x3d1ec847
+  kind: POINTER
+  pointee_type_id: 0xde3bc780
+}
+pointer_reference {
+  id: 0x3d278a00
+  kind: POINTER
+  pointee_type_id: 0xdedece9f
+}
+pointer_reference {
+  id: 0x3d2ef874
+  kind: POINTER
+  pointee_type_id: 0xdefb074e
+}
+pointer_reference {
+  id: 0x3d30320d
+  kind: POINTER
+  pointee_type_id: 0xde802eab
+}
+pointer_reference {
+  id: 0x3d3b5dd7
+  kind: POINTER
+  pointee_type_id: 0xdead91c2
+}
+pointer_reference {
+  id: 0x3d3d3926
+  kind: POINTER
+  pointee_type_id: 0xdeb40206
+}
+pointer_reference {
+  id: 0x3d3ea9eb
+  kind: POINTER
+  pointee_type_id: 0xdeba4131
+}
+pointer_reference {
+  id: 0x3d4134dc
+  kind: POINTER
+  pointee_type_id: 0xdf4435ed
+}
+pointer_reference {
+  id: 0x3d4280e0
+  kind: POINTER
+  pointee_type_id: 0xdf4ae51c
+}
+pointer_reference {
+  id: 0x3d435d11
+  kind: POINTER
+  pointee_type_id: 0xdf4d92db
+}
+pointer_reference {
+  id: 0x3d4bf55f
+  kind: POINTER
+  pointee_type_id: 0xdf6f33e0
+}
+pointer_reference {
+  id: 0x3d4c764a
+  kind: POINTER
+  pointee_type_id: 0xdf713fb7
+}
+pointer_reference {
+  id: 0x3d5133eb
+  kind: POINTER
+  pointee_type_id: 0xdf042930
+}
+pointer_reference {
+  id: 0x3d551c03
+  kind: POINTER
+  pointee_type_id: 0xdf149691
+}
+pointer_reference {
+  id: 0x3d5b22db
+  kind: POINTER
+  pointee_type_id: 0xdf2c6df1
+}
+pointer_reference {
+  id: 0x3d5e73a1
+  kind: POINTER
+  pointee_type_id: 0xdf392819
+}
+pointer_reference {
+  id: 0x3d610880
+  kind: POINTER
+  pointee_type_id: 0xdfc4c49d
+}
+pointer_reference {
+  id: 0x3d669bc4
+  kind: POINTER
+  pointee_type_id: 0xdfda898c
+}
+pointer_reference {
+  id: 0x3d67a7b2
+  kind: POINTER
+  pointee_type_id: 0xdfde7856
+}
+pointer_reference {
+  id: 0x3d723536
+  kind: POINTER
+  pointee_type_id: 0xdf883247
+}
+pointer_reference {
+  id: 0x3d72b431
+  kind: POINTER
+  pointee_type_id: 0xdf8a3659
+}
+pointer_reference {
+  id: 0x3d72bdb1
+  kind: POINTER
+  pointee_type_id: 0xdf8a1059
+}
+pointer_reference {
+  id: 0x3d739fcb
+  kind: POINTER
+  pointee_type_id: 0xdf8e99b1
+}
+pointer_reference {
+  id: 0x3d75d87c
+  kind: POINTER
+  pointee_type_id: 0xdf97876e
+}
+pointer_reference {
+  id: 0x3d77643f
+  kind: POINTER
+  pointee_type_id: 0xdf9d7663
+}
+pointer_reference {
+  id: 0x3d78ca8c
+  kind: POINTER
+  pointee_type_id: 0xdfa3ccae
+}
+pointer_reference {
+  id: 0x3d7c93df
+  kind: POINTER
+  pointee_type_id: 0xdfb2a9e2
+}
+pointer_reference {
+  id: 0x3d7e4e89
+  kind: POINTER
+  pointee_type_id: 0xdfb9dcb9
+}
+pointer_reference {
+  id: 0x3d7eb07a
+  kind: POINTER
+  pointee_type_id: 0xdfba2774
+}
+pointer_reference {
+  id: 0x3d828cd9
+  kind: POINTER
+  pointee_type_id: 0xdc4ad5fb
+}
+pointer_reference {
+  id: 0x3d8951f4
+  kind: POINTER
+  pointee_type_id: 0xdc65a14c
+}
+pointer_reference {
+  id: 0x3d896417
+  kind: POINTER
+  pointee_type_id: 0xdc6576c2
+}
+pointer_reference {
+  id: 0x3d8b1920
+  kind: POINTER
+  pointee_type_id: 0xdc6c821c
+}
+pointer_reference {
+  id: 0x3d8deab7
+  kind: POINTER
+  pointee_type_id: 0xdc774c41
+}
+pointer_reference {
+  id: 0x3d8debd3
+  kind: POINTER
+  pointee_type_id: 0xdc7749d3
+}
+pointer_reference {
+  id: 0x3d902adb
+  kind: POINTER
+  pointee_type_id: 0xdc004df3
+}
+pointer_reference {
+  id: 0x3d905687
+  kind: POINTER
+  pointee_type_id: 0xdc01bc80
+}
+pointer_reference {
+  id: 0x3d9194c3
+  kind: POINTER
+  pointee_type_id: 0xdc06b593
+}
+pointer_reference {
+  id: 0x3d92f9c7
+  kind: POINTER
+  pointee_type_id: 0xdc0b0182
+}
+pointer_reference {
+  id: 0x3d9d0240
+  kind: POINTER
+  pointee_type_id: 0xdc34ef9e
+}
+pointer_reference {
+  id: 0x3da0560e
+  kind: POINTER
+  pointee_type_id: 0xdcc1bea7
+}
+pointer_reference {
+  id: 0x3da0a8e3
+  kind: POINTER
+  pointee_type_id: 0xdcc24511
+}
+pointer_reference {
+  id: 0x3da548f2
+  kind: POINTER
+  pointee_type_id: 0xdcd5c554
+}
+pointer_reference {
+  id: 0x3da9f5e9
+  kind: POINTER
+  pointee_type_id: 0xdce73138
+}
+pointer_reference {
+  id: 0x3dad0f70
+  kind: POINTER
+  pointee_type_id: 0xdcf4db5f
+}
+pointer_reference {
+  id: 0x3dad9aa1
+  kind: POINTER
+  pointee_type_id: 0xdcf68c1a
+}
+pointer_reference {
+  id: 0x3daf8dd1
+  kind: POINTER
+  pointee_type_id: 0xdcfed1d8
+}
+pointer_reference {
+  id: 0x3db7fb40
+  kind: POINTER
+  pointee_type_id: 0xdc9f0b9d
+}
+pointer_reference {
+  id: 0x3db894b0
+  kind: POINTER
+  pointee_type_id: 0xdca2b45d
+}
+pointer_reference {
+  id: 0x3db8dd32
+  kind: POINTER
+  pointee_type_id: 0xdca39257
+}
+pointer_reference {
+  id: 0x3db932c3
+  kind: POINTER
+  pointee_type_id: 0xdca42d92
+}
+pointer_reference {
+  id: 0x3db9d204
+  kind: POINTER
+  pointee_type_id: 0xdca7ae8d
+}
+pointer_reference {
+  id: 0x3dbc6f10
+  kind: POINTER
+  pointee_type_id: 0xdcb15adf
+}
+pointer_reference {
+  id: 0x3dbcdeab
+  kind: POINTER
+  pointee_type_id: 0xdcb39c32
+}
+pointer_reference {
+  id: 0x3dc59b1f
+  kind: POINTER
+  pointee_type_id: 0xdd568ae3
+}
+pointer_reference {
+  id: 0x3dcae1c0
+  kind: POINTER
+  pointee_type_id: 0xdd6b619e
+}
+pointer_reference {
+  id: 0x3dcbc303
+  kind: POINTER
+  pointee_type_id: 0xdd6fea91
+}
+pointer_reference {
+  id: 0x3dcee85d
+  kind: POINTER
+  pointee_type_id: 0xdd7b47eb
+}
+pointer_reference {
+  id: 0x3dd07f10
+  kind: POINTER
+  pointee_type_id: 0xdd011adf
+}
+pointer_reference {
+  id: 0x3dd383a6
+  kind: POINTER
+  pointee_type_id: 0xdd0ee806
+}
+pointer_reference {
+  id: 0x3dd3c852
+  kind: POINTER
+  pointee_type_id: 0xdd0fc7d7
+}
+pointer_reference {
+  id: 0x3dd5da6c
+  kind: POINTER
+  pointee_type_id: 0xdd178f2d
+}
+pointer_reference {
+  id: 0x3dd71310
+  kind: POINTER
+  pointee_type_id: 0xdd1caade
+}
+pointer_reference {
+  id: 0x3dd75e25
+  kind: POINTER
+  pointee_type_id: 0xdd1d9e08
+}
+pointer_reference {
+  id: 0x3ddc3e92
+  kind: POINTER
+  pointee_type_id: 0xdd301cd7
+}
+pointer_reference {
+  id: 0x3ddc5dec
+  kind: POINTER
+  pointee_type_id: 0xdd31912d
+}
+pointer_reference {
+  id: 0x3ddc969e
+  kind: POINTER
+  pointee_type_id: 0xdd32bce5
+}
+pointer_reference {
+  id: 0x3ddd7525
+  kind: POINTER
+  pointee_type_id: 0xdd35320a
+}
+pointer_reference {
+  id: 0x3dde7e3f
+  kind: POINTER
+  pointee_type_id: 0xdd391e61
+}
+pointer_reference {
+  id: 0x3dded319
+  kind: POINTER
+  pointee_type_id: 0xdd3baaf8
+}
+pointer_reference {
+  id: 0x3ddfcba9
+  kind: POINTER
+  pointee_type_id: 0xdd3fc83b
+}
+pointer_reference {
+  id: 0x3de01d60
+  kind: POINTER
+  pointee_type_id: 0xddc0931f
+}
+pointer_reference {
+  id: 0x3de3e357
+  kind: POINTER
+  pointee_type_id: 0xddcf6bc2
+}
+pointer_reference {
+  id: 0x3de3f5a1
+  kind: POINTER
+  pointee_type_id: 0xddcf3019
+}
+pointer_reference {
+  id: 0x3de54f8a
+  kind: POINTER
+  pointee_type_id: 0xddd5d8b6
+}
+pointer_reference {
+  id: 0x3de947e9
+  kind: POINTER
+  pointee_type_id: 0xdde5f938
+}
+pointer_reference {
+  id: 0x3debf664
+  kind: POINTER
+  pointee_type_id: 0xddef3f0e
+}
+pointer_reference {
+  id: 0x3deeb8f4
+  kind: POINTER
+  pointee_type_id: 0xddfa054d
+}
+pointer_reference {
+  id: 0x3df7e337
+  kind: POINTER
+  pointee_type_id: 0xdd9f6a40
+}
+pointer_reference {
+  id: 0x3df9bbb6
+  kind: POINTER
+  pointee_type_id: 0xdda60846
+}
+pointer_reference {
+  id: 0x3e001c39
+  kind: POINTER
+  pointee_type_id: 0xd240967a
+}
+pointer_reference {
+  id: 0x3e02e685
+  kind: POINTER
+  pointee_type_id: 0xd24b7c89
+}
+pointer_reference {
+  id: 0x3e03375b
+  kind: POINTER
+  pointee_type_id: 0xd24c3bf1
+}
+pointer_reference {
+  id: 0x3e04ad29
+  kind: POINTER
+  pointee_type_id: 0xd2525239
+}
+pointer_reference {
+  id: 0x3e096c25
+  kind: POINTER
+  pointee_type_id: 0xd265560b
+}
+pointer_reference {
+  id: 0x3e0d6ef0
+  kind: POINTER
+  pointee_type_id: 0xd2755d5f
+}
+pointer_reference {
+  id: 0x3e0d8696
+  kind: POINTER
+  pointee_type_id: 0xd276fcc4
+}
+pointer_reference {
+  id: 0x3e0e96d0
+  kind: POINTER
+  pointee_type_id: 0xd27abdde
+}
+pointer_reference {
+  id: 0x3e0f217a
+  kind: POINTER
+  pointee_type_id: 0xd27c6376
+}
+pointer_reference {
+  id: 0x3e10b518
+  kind: POINTER
+  pointee_type_id: 0xd20232fd
+}
+pointer_reference {
+  id: 0x3e146274
+  kind: POINTER
+  pointee_type_id: 0xd2116f4f
+}
+pointer_reference {
+  id: 0x3e17a54c
+  kind: POINTER
+  pointee_type_id: 0xd21e73ad
+}
+pointer_reference {
+  id: 0x3e190264
+  kind: POINTER
+  pointee_type_id: 0xd224ef0f
+}
+pointer_reference {
+  id: 0x3e19e681
+  kind: POINTER
+  pointee_type_id: 0xd2277c99
+}
+pointer_reference {
+  id: 0x3e1a0886
+  kind: POINTER
+  pointee_type_id: 0xd228c484
+}
+pointer_reference {
+  id: 0x3e1c2855
+  kind: POINTER
+  pointee_type_id: 0xd23047c9
+}
+pointer_reference {
+  id: 0x3e279e0a
+  kind: POINTER
+  pointee_type_id: 0xd2de9eb7
+}
+pointer_reference {
+  id: 0x3e28122a
+  kind: POINTER
+  pointee_type_id: 0xd2e0ae36
+}
+pointer_reference {
+  id: 0x3e29be7b
+  kind: POINTER
+  pointee_type_id: 0xd2e61f73
+}
+pointer_reference {
+  id: 0x3e2de599
+  kind: POINTER
+  pointee_type_id: 0xd2f770f8
+}
+pointer_reference {
+  id: 0x3e2fe44b
+  kind: POINTER
+  pointee_type_id: 0xd2ff77b3
+}
+pointer_reference {
+  id: 0x3e360385
+  kind: POINTER
+  pointee_type_id: 0xd298e888
+}
+pointer_reference {
+  id: 0x3e3a4a9e
+  kind: POINTER
+  pointee_type_id: 0xd2a9cce7
+}
+pointer_reference {
+  id: 0x3e44cfd7
+  kind: POINTER
+  pointee_type_id: 0xd353d9c3
+}
+pointer_reference {
+  id: 0x3e4cb008
+  kind: POINTER
+  pointee_type_id: 0xd37226bc
+}
+pointer_reference {
+  id: 0x3e4e8ffc
+  kind: POINTER
+  pointee_type_id: 0xd37ad96d
+}
+pointer_reference {
+  id: 0x3e59d1e6
+  kind: POINTER
+  pointee_type_id: 0xd327a107
+}
+pointer_reference {
+  id: 0x3e600958
+  kind: POINTER
+  pointee_type_id: 0xd3c0c3fc
+}
+pointer_reference {
+  id: 0x3e6239e1
+  kind: POINTER
+  pointee_type_id: 0xd3c80119
+}
+pointer_reference {
+  id: 0x3e6396e0
+  kind: POINTER
+  pointee_type_id: 0xd3cebd1f
+}
+pointer_reference {
+  id: 0x3e6884d4
+  kind: POINTER
+  pointee_type_id: 0xd3e2f5cd
+}
+pointer_reference {
+  id: 0x3e75499e
+  kind: POINTER
+  pointee_type_id: 0xd395c0e4
+}
+pointer_reference {
+  id: 0x3e7afc58
+  kind: POINTER
+  pointee_type_id: 0xd3ab17fd
+}
+pointer_reference {
+  id: 0x3e7f4a71
+  kind: POINTER
+  pointee_type_id: 0xd3bdcf5a
+}
+pointer_reference {
+  id: 0x3e816a4b
+  kind: POINTER
+  pointee_type_id: 0xd0454fb3
+}
+pointer_reference {
+  id: 0x3e884e72
+  kind: POINTER
+  pointee_type_id: 0xd061df55
+}
+pointer_reference {
+  id: 0x3e8b410d
+  kind: POINTER
+  pointee_type_id: 0xd06de2a9
+}
+pointer_reference {
+  id: 0x3e8e572f
+  kind: POINTER
+  pointee_type_id: 0xd079ba20
+}
+pointer_reference {
+  id: 0x3e909b01
+  kind: POINTER
+  pointee_type_id: 0xd0028a99
+}
+pointer_reference {
+  id: 0x3e952bc6
+  kind: POINTER
+  pointee_type_id: 0xd0144986
+}
+pointer_reference {
+  id: 0x3e96314f
+  kind: POINTER
+  pointee_type_id: 0xd01823a1
+}
+pointer_reference {
+  id: 0x3e9e0b34
+  kind: POINTER
+  pointee_type_id: 0xd038ca4f
+}
+pointer_reference {
+  id: 0x3ea2e6c1
+  kind: POINTER
+  pointee_type_id: 0xd0cb7d9a
+}
+pointer_reference {
+  id: 0x3ea31487
+  kind: POINTER
+  pointee_type_id: 0xd0ccb483
+}
+pointer_reference {
+  id: 0x3ea63461
+  kind: POINTER
+  pointee_type_id: 0xd0d8371a
+}
+pointer_reference {
+  id: 0x3ea6bd8c
+  kind: POINTER
+  pointee_type_id: 0xd0da10ac
+}
+pointer_reference {
+  id: 0x3eaa642b
+  kind: POINTER
+  pointee_type_id: 0xd0e97631
+}
+pointer_reference {
+  id: 0x3eacd4c8
+  kind: POINTER
+  pointee_type_id: 0xd0f3b5bf
+}
+pointer_reference {
+  id: 0x3eafc7e2
+  kind: POINTER
+  pointee_type_id: 0xd0fff916
+}
+pointer_reference {
+  id: 0x3eb09d4a
+  kind: POINTER
+  pointee_type_id: 0xd08293b6
+}
+pointer_reference {
+  id: 0x3eb2babd
+  kind: POINTER
+  pointee_type_id: 0xd08a0c68
+}
+pointer_reference {
+  id: 0x3eb4196d
+  kind: POINTER
+  pointee_type_id: 0xd0908329
+}
+pointer_reference {
+  id: 0x3eb9b5ea
+  kind: POINTER
+  pointee_type_id: 0xd0a63136
+}
+pointer_reference {
+  id: 0x3eb9d280
+  kind: POINTER
+  pointee_type_id: 0xd0a7ac9f
+}
+pointer_reference {
+  id: 0x3ebb35fd
+  kind: POINTER
+  pointee_type_id: 0xd0ac3169
+}
+pointer_reference {
+  id: 0x3ebcd127
+  kind: POINTER
+  pointee_type_id: 0xd0b3a203
+}
+pointer_reference {
+  id: 0x3ec19393
+  kind: POINTER
+  pointee_type_id: 0xd146a8d0
+}
+pointer_reference {
+  id: 0x3ec65828
+  kind: POINTER
+  pointee_type_id: 0xd159863f
+}
+pointer_reference {
+  id: 0x3ec77a5e
+  kind: POINTER
+  pointee_type_id: 0xd15d0fe4
+}
+pointer_reference {
+  id: 0x3ec7cfc4
+  kind: POINTER
+  pointee_type_id: 0xd15fd98f
+}
+pointer_reference {
+  id: 0x3ecd3a8e
+  kind: POINTER
+  pointee_type_id: 0xd1740ca6
+}
+pointer_reference {
+  id: 0x3ed39c44
+  kind: POINTER
+  pointee_type_id: 0xd10e978e
+}
+pointer_reference {
+  id: 0x3ed52bb5
+  kind: POINTER
+  pointee_type_id: 0xd114484a
+}
+pointer_reference {
+  id: 0x3edac04c
+  kind: POINTER
+  pointee_type_id: 0xd12be7af
+}
+pointer_reference {
+  id: 0x3edc1393
+  kind: POINTER
+  pointee_type_id: 0xd130a8d3
+}
+pointer_reference {
+  id: 0x3edc7b4c
+  kind: POINTER
+  pointee_type_id: 0xd1310bad
+}
+pointer_reference {
+  id: 0x3edf9e36
+  kind: POINTER
+  pointee_type_id: 0xd13e9e44
+}
+pointer_reference {
+  id: 0x3ee14b79
+  kind: POINTER
+  pointee_type_id: 0xd1c5cb7b
+}
+pointer_reference {
+  id: 0x3ee42466
+  kind: POINTER
+  pointee_type_id: 0xd1d07704
+}
+pointer_reference {
+  id: 0x3ee4fd9f
+  kind: POINTER
+  pointee_type_id: 0xd1d310e1
+}
+pointer_reference {
+  id: 0x3ee507c8
+  kind: POINTER
+  pointee_type_id: 0xd1d4f9bc
+}
+pointer_reference {
+  id: 0x3ee52b5e
+  kind: POINTER
+  pointee_type_id: 0xd1d44be6
+}
+pointer_reference {
+  id: 0x3ee88c45
+  kind: POINTER
+  pointee_type_id: 0xd1e2d78b
+}
+pointer_reference {
+  id: 0x3eeac861
+  kind: POINTER
+  pointee_type_id: 0xd1ebc718
+}
+pointer_reference {
+  id: 0x3eed77c0
+  kind: POINTER
+  pointee_type_id: 0xd1f5399e
+}
+pointer_reference {
+  id: 0x3ef473d4
+  kind: POINTER
+  pointee_type_id: 0xd19129ce
+}
+pointer_reference {
+  id: 0x3ef55b88
+  kind: POINTER
+  pointee_type_id: 0xd19588be
+}
+pointer_reference {
+  id: 0x3ef6368b
+  kind: POINTER
+  pointee_type_id: 0xd1983cb3
+}
+pointer_reference {
+  id: 0x3ef80973
+  kind: POINTER
+  pointee_type_id: 0xd1a0c350
+}
+pointer_reference {
+  id: 0x3ef953b0
+  kind: POINTER
+  pointee_type_id: 0xd1a5a85f
+}
+pointer_reference {
+  id: 0x3ef98611
+  kind: POINTER
+  pointee_type_id: 0xd1a6fed8
+}
+pointer_reference {
+  id: 0x3efc1e40
+  kind: POINTER
+  pointee_type_id: 0xd1b09f9e
+}
+pointer_reference {
+  id: 0x3f015031
+  kind: POINTER
+  pointee_type_id: 0xd645a65a
+}
+pointer_reference {
+  id: 0x3f0185ef
+  kind: POINTER
+  pointee_type_id: 0xd646f122
+}
+pointer_reference {
+  id: 0x3f02424f
+  kind: POINTER
+  pointee_type_id: 0xd649efa3
+}
+pointer_reference {
+  id: 0x3f063da2
+  kind: POINTER
+  pointee_type_id: 0xd6581015
+}
+pointer_reference {
+  id: 0x3f093508
+  kind: POINTER
+  pointee_type_id: 0xd66432be
+}
+pointer_reference {
+  id: 0x3f095459
+  kind: POINTER
+  pointee_type_id: 0xd665b7fb
+}
+pointer_reference {
+  id: 0x3f0ff1b1
+  kind: POINTER
+  pointee_type_id: 0xd67f2058
+}
+pointer_reference {
+  id: 0x3f15d20a
+  kind: POINTER
+  pointee_type_id: 0xd617aeb6
+}
+pointer_reference {
+  id: 0x3f1a5886
+  kind: POINTER
+  pointee_type_id: 0xd6298487
+}
+pointer_reference {
+  id: 0x3f1cd3a6
+  kind: POINTER
+  pointee_type_id: 0xd633a805
+}
+pointer_reference {
+  id: 0x3f21336c
+  kind: POINTER
+  pointee_type_id: 0xd6c42b2c
+}
+pointer_reference {
+  id: 0x3f222c68
+  kind: POINTER
+  pointee_type_id: 0xd6c8573e
+}
+pointer_reference {
+  id: 0x3f28acc9
+  kind: POINTER
+  pointee_type_id: 0xd6e255bb
+}
+pointer_reference {
+  id: 0x3f2b0487
+  kind: POINTER
+  pointee_type_id: 0xd6ecf482
+}
+pointer_reference {
+  id: 0x3f2e25a0
+  kind: POINTER
+  pointee_type_id: 0xd6f8701c
+}
+pointer_reference {
+  id: 0x3f358038
+  kind: POINTER
+  pointee_type_id: 0xd696e67d
+}
+pointer_reference {
+  id: 0x3f37d9d5
+  kind: POINTER
+  pointee_type_id: 0xd69f81c9
+}
+pointer_reference {
+  id: 0x3f3cd89a
+  kind: POINTER
+  pointee_type_id: 0xd6b384f7
+}
+pointer_reference {
+  id: 0x3f431b32
+  kind: POINTER
+  pointee_type_id: 0xd74c8a57
+}
+pointer_reference {
+  id: 0x3f44b979
+  kind: POINTER
+  pointee_type_id: 0xd752037b
+}
+pointer_reference {
+  id: 0x3f498f10
+  kind: POINTER
+  pointee_type_id: 0xd766dade
+}
+pointer_reference {
+  id: 0x3f4ebacb
+  kind: POINTER
+  pointee_type_id: 0xd77a0db3
+}
+pointer_reference {
+  id: 0x3f50ab44
+  kind: POINTER
+  pointee_type_id: 0xd7024b8e
+}
+pointer_reference {
+  id: 0x3f5329f7
+  kind: POINTER
+  pointee_type_id: 0xd70c4142
+}
+pointer_reference {
+  id: 0x3f54a013
+  kind: POINTER
+  pointee_type_id: 0xd71266d3
+}
+pointer_reference {
+  id: 0x3f55ac9d
+  kind: POINTER
+  pointee_type_id: 0xd71654e9
+}
+pointer_reference {
+  id: 0x3f55d498
+  kind: POINTER
+  pointee_type_id: 0xd717b4fc
+}
+pointer_reference {
+  id: 0x3f59ee8d
+  kind: POINTER
+  pointee_type_id: 0xd7275cab
+}
+pointer_reference {
+  id: 0x3f72018a
+  kind: POINTER
+  pointee_type_id: 0xd788e0b5
+}
+pointer_reference {
+  id: 0x3f74bbde
+  kind: POINTER
+  pointee_type_id: 0xd79209e6
+}
+pointer_reference {
+  id: 0x3f75f4e8
+  kind: POINTER
+  pointee_type_id: 0xd797353d
+}
+pointer_reference {
+  id: 0x3f774ccb
+  kind: POINTER
+  pointee_type_id: 0xd79dd5b3
+}
+pointer_reference {
+  id: 0x3f796883
+  kind: POINTER
+  pointee_type_id: 0xd7a54493
+}
+pointer_reference {
+  id: 0x3f80d49e
+  kind: POINTER
+  pointee_type_id: 0xd443b4e5
+}
+pointer_reference {
+  id: 0x3f80e65f
+  kind: POINTER
+  pointee_type_id: 0xd4437fe1
+}
+pointer_reference {
+  id: 0x3f84ee3c
+  kind: POINTER
+  pointee_type_id: 0xd4535e6d
+}
+pointer_reference {
+  id: 0x3f86a385
+  kind: POINTER
+  pointee_type_id: 0xd45a688b
+}
+pointer_reference {
+  id: 0x3f8f206d
+  kind: POINTER
+  pointee_type_id: 0xd47c672a
+}
+pointer_reference {
+  id: 0x3f9286b5
+  kind: POINTER
+  pointee_type_id: 0xd40afc48
+}
+pointer_reference {
+  id: 0x3f949c69
+  kind: POINTER
+  pointee_type_id: 0xd412973b
+}
+pointer_reference {
+  id: 0x3f979b84
+  kind: POINTER
+  pointee_type_id: 0xd41e888f
+}
+pointer_reference {
+  id: 0x3f9adc09
+  kind: POINTER
+  pointee_type_id: 0xd42b96b9
+}
+pointer_reference {
+  id: 0x3fa672fd
+  kind: POINTER
+  pointee_type_id: 0xd4d92d6b
+}
+pointer_reference {
+  id: 0x3fa905dc
+  kind: POINTER
+  pointee_type_id: 0xd4e4f1ec
+}
+pointer_reference {
+  id: 0x3fab28c8
+  kind: POINTER
+  pointee_type_id: 0xd4ec45bf
+}
+pointer_reference {
+  id: 0x3fac1d22
+  kind: POINTER
+  pointee_type_id: 0xd4f09215
+}
+pointer_reference {
+  id: 0x3faf127d
+  kind: POINTER
+  pointee_type_id: 0xd4fcaf6b
+}
+pointer_reference {
+  id: 0x3faf3b41
+  kind: POINTER
+  pointee_type_id: 0xd4fc0b98
+}
+pointer_reference {
+  id: 0x3fafb631
+  kind: POINTER
+  pointee_type_id: 0xd4fe3e59
+}
+pointer_reference {
+  id: 0x3fb1217f
+  kind: POINTER
+  pointee_type_id: 0xd4846363
+}
+pointer_reference {
+  id: 0x3fb55e9f
+  kind: POINTER
+  pointee_type_id: 0xd4959ce2
+}
+pointer_reference {
+  id: 0x3fc475cd
+  kind: POINTER
+  pointee_type_id: 0xd55131a8
+}
+pointer_reference {
+  id: 0x3fc670b8
+  kind: POINTER
+  pointee_type_id: 0xd559247f
+}
+pointer_reference {
+  id: 0x3fd0b78c
+  kind: POINTER
+  pointee_type_id: 0xd50238af
+}
+pointer_reference {
+  id: 0x3fdb8740
+  kind: POINTER
+  pointee_type_id: 0xd52efb9f
+}
+pointer_reference {
+  id: 0x3fdb8af3
+  kind: POINTER
+  pointee_type_id: 0xd52ecd52
+}
+pointer_reference {
+  id: 0x3fe284cc
+  kind: POINTER
+  pointee_type_id: 0xd5caf5af
+}
+pointer_reference {
+  id: 0x3fe31e81
+  kind: POINTER
+  pointee_type_id: 0xd5cc9c9a
+}
+pointer_reference {
+  id: 0x3fe7e06b
+  kind: POINTER
+  pointee_type_id: 0xd5df6730
+}
+pointer_reference {
+  id: 0x3fe8ca70
+  kind: POINTER
+  pointee_type_id: 0xd5e3cf5e
+}
+pointer_reference {
+  id: 0x3feab580
+  kind: POINTER
+  pointee_type_id: 0xd5ea309d
+}
+pointer_reference {
+  id: 0x3fed1cc2
+  kind: POINTER
+  pointee_type_id: 0xd5f49594
+}
+pointer_reference {
+  id: 0x3fee8efa
+  kind: POINTER
+  pointee_type_id: 0xd5fadd76
+}
+pointer_reference {
+  id: 0x3feebefb
+  kind: POINTER
+  pointee_type_id: 0xd5fa1d70
+}
+pointer_reference {
+  id: 0x3fefb42f
+  kind: POINTER
+  pointee_type_id: 0xd5fe3622
+}
+pointer_reference {
+  id: 0x3ffd24b9
+  kind: POINTER
+  pointee_type_id: 0xd5b4747a
+}
+typedef {
+  id: 0x84ef9574
+  name: "Byte"
+  referred_type_id: 0x5d8155a5
+}
+typedef {
+  id: 0x359b7f43
+  name: "Elf64_Addr"
+  referred_type_id: 0xedf277ba
+}
+typedef {
+  id: 0xcc10cada
+  name: "Elf64_Half"
+  referred_type_id: 0xe8034002
+}
+typedef {
+  id: 0xe7515ed6
+  name: "Elf64_Sym"
+  referred_type_id: 0xf1f1e1cf
+}
+typedef {
+  id: 0x4ac165eb
+  name: "Elf64_Word"
+  referred_type_id: 0xe62ebf07
+}
+typedef {
+  id: 0xcd4f25ac
+  name: "Elf64_Xword"
+  referred_type_id: 0xedf277ba
+}
+typedef {
+  id: 0xaaee57c0
+  name: "__addrpair"
+  referred_type_id: 0xedf277ba
+}
+typedef {
+  id: 0x7584e7da
+  name: "__be16"
+  referred_type_id: 0xe8034002
+}
+typedef {
+  id: 0xe276adef
+  name: "__be32"
+  referred_type_id: 0xe62ebf07
+}
+typedef {
+  id: 0x7877cd32
+  name: "__be64"
+  referred_type_id: 0xedf277ba
+}
+typedef {
+  id: 0xbf891a41
+  name: "__builtin_va_list"
+  referred_type_id: 0xb51bbadb
+}
+typedef {
+  id: 0xe3186d0a
+  name: "__kernel_clock_t"
+  referred_type_id: 0x68035002
+}
+typedef {
+  id: 0xa53710f6
+  name: "__kernel_clockid_t"
+  referred_type_id: 0x6720d32f
+}
+typedef {
+  id: 0xe83041c0
+  name: "__kernel_dev_t"
+  referred_type_id: 0xc9082b19
+}
+typedef {
+  id: 0x891aa0dd
+  name: "__kernel_fsid_t"
+  referred_type_id: 0x0bb4a730
+}
+typedef {
+  id: 0x012a99e5
+  name: "__kernel_gid32_t"
+  referred_type_id: 0x4585663f
+}
+typedef {
+  id: 0xbf704b80
+  name: "__kernel_loff_t"
+  referred_type_id: 0x39470e64
+}
+typedef {
+  id: 0x68035002
+  name: "__kernel_long_t"
+  referred_type_id: 0xfc0e1dbd
+}
+typedef {
+  id: 0x77c91bd4
+  name: "__kernel_mqd_t"
+  referred_type_id: 0x6720d32f
+}
+typedef {
+  id: 0x2d60633e
+  name: "__kernel_off_t"
+  referred_type_id: 0x68035002
+}
+typedef {
+  id: 0x763389c7
+  name: "__kernel_pid_t"
+  referred_type_id: 0x6720d32f
+}
+typedef {
+  id: 0x8dcc45f7
+  name: "__kernel_rwf_t"
+  referred_type_id: 0x6720d32f
+}
+typedef {
+  id: 0xe0705941
+  name: "__kernel_sa_family_t"
+  referred_type_id: 0xc93e017b
+}
+typedef {
+  id: 0x5b3d9d36
+  name: "__kernel_size_t"
+  referred_type_id: 0x21d43a7b
+}
+typedef {
+  id: 0x2da051ab
+  name: "__kernel_ssize_t"
+  referred_type_id: 0x68035002
+}
+typedef {
+  id: 0x4dbc8d50
+  name: "__kernel_time64_t"
+  referred_type_id: 0x39470e64
+}
+typedef {
+  id: 0xba229b88
+  name: "__kernel_timer_t"
+  referred_type_id: 0x6720d32f
+}
+typedef {
+  id: 0xba3f457a
+  name: "__kernel_uid32_t"
+  referred_type_id: 0x4585663f
+}
+typedef {
+  id: 0x21d43a7b
+  name: "__kernel_ulong_t"
+  referred_type_id: 0x33756485
+}
+typedef {
+  id: 0x9bd401b6
+  name: "__le16"
+  referred_type_id: 0xe8034002
+}
+typedef {
+  id: 0x0baa70a7
+  name: "__le32"
+  referred_type_id: 0xe62ebf07
+}
+typedef {
+  id: 0x78f4e574
+  name: "__le64"
+  referred_type_id: 0xedf277ba
+}
+typedef {
+  id: 0xe532a446
+  name: "__pad_after_uframe"
+  referred_type_id: 0xca2a51af
+}
+typedef {
+  id: 0x3a8cf6d8
+  name: "__pad_before_uframe"
+  referred_type_id: 0xca2a51af
+}
+typedef {
+  id: 0xb94e10c7
+  name: "__poll_t"
+  referred_type_id: 0x4585663f
+}
+typedef {
+  id: 0x2f062198
+  name: "__portpair"
+  referred_type_id: 0xe62ebf07
+}
+typedef {
+  id: 0x52d15510
+  name: "__restorefn_t"
+  referred_type_id: 0x10985193
+}
+typedef {
+  id: 0x007e8ce4
+  name: "__s16"
+  referred_type_id: 0xb0312d5a
+}
+typedef {
+  id: 0x0faae5b1
+  name: "__s32"
+  referred_type_id: 0x6720d32f
+}
+typedef {
+  id: 0xdd6eef0a
+  name: "__s64"
+  referred_type_id: 0x39470e64
+}
+typedef {
+  id: 0x901eaf6a
+  name: "__s8"
+  referred_type_id: 0x5ab350f8
+}
+typedef {
+  id: 0x20e98e97
+  name: "__sighandler_t"
+  referred_type_id: 0x0742e5b4
+}
+typedef {
+  id: 0x374b704c
+  name: "__signalfn_t"
+  referred_type_id: 0x09506558
+}
+typedef {
+  id: 0x5a722500
+  name: "__sigrestore_t"
+  referred_type_id: 0x1e246ce3
+}
+typedef {
+  id: 0xd1f94ea7
+  name: "__sum16"
+  referred_type_id: 0xe8034002
+}
+typedef {
+  id: 0xe8034002
+  name: "__u16"
+  referred_type_id: 0xc93e017b
+}
+typedef {
+  id: 0xe62ebf07
+  name: "__u32"
+  referred_type_id: 0x4585663f
+}
+typedef {
+  id: 0xedf277ba
+  name: "__u64"
+  referred_type_id: 0xd5df6730
+}
+typedef {
+  id: 0xb3e7bac9
+  name: "__u8"
+  referred_type_id: 0x5d8155a5
+}
+typedef {
+  id: 0xabb9fdec
+  name: "__uint128_t"
+  referred_type_id: 0x7c89493c
+}
+typedef {
+  id: 0x16749208
+  name: "__virtio16"
+  referred_type_id: 0xe8034002
+}
+typedef {
+  id: 0x768d1bed
+  name: "__virtio32"
+  referred_type_id: 0xe62ebf07
+}
+typedef {
+  id: 0x8b543b26
+  name: "__virtio64"
+  referred_type_id: 0xedf277ba
+}
+typedef {
+  id: 0xa9403390
+  name: "__wsum"
+  referred_type_id: 0xe62ebf07
+}
+typedef {
+  id: 0xafafde12
+  name: "action_destr"
+  referred_type_id: 0x0f3dfb90
+}
+typedef {
+  id: 0x5d9d731c
+  name: "activate_complete"
+  referred_type_id: 0x0f5adb43
+}
+typedef {
+  id: 0xac87892b
+  name: "arch_msi_msg_addr_hi_t"
+  referred_type_id: 0x1f74cf52
+}
+typedef {
+  id: 0xa22d9a63
+  name: "arch_msi_msg_addr_lo_t"
+  referred_type_id: 0x446f0478
+}
+typedef {
+  id: 0x5ca801dd
+  name: "arch_msi_msg_data_t"
+  referred_type_id: 0x5a700aa3
+}
+typedef {
+  id: 0x4329595f
+  name: "arch_rwlock_t"
+  referred_type_id: 0xed946547
+}
+typedef {
+  id: 0x638752c9
+  name: "arch_spinlock_t"
+  referred_type_id: 0xeea291c0
+}
+typedef {
+  id: 0x66ba4c2f
+  name: "assert_format_t"
+  referred_type_id: 0x0dd253dc
+}
+typedef {
+  id: 0x79be7582
+  name: "async_cookie_t"
+  referred_type_id: 0x92233392
+}
+typedef {
+  id: 0x2c194586
+  name: "async_func_t"
+  referred_type_id: 0x0f4445e5
+}
+typedef {
+  id: 0x1f4573ef
+  name: "atomic64_t"
+  referred_type_id: 0x106c15fd
+}
+typedef {
+  id: 0xb02b353a
+  name: "atomic_long_t"
+  referred_type_id: 0x1f4573ef
+}
+typedef {
+  id: 0x74d29cf1
+  name: "atomic_t"
+  referred_type_id: 0x107e5e2d
+}
+typedef {
+  id: 0xa61911b2
+  name: "bdaddr_t"
+  referred_type_id: 0x0b690cd3
+}
+typedef {
+  id: 0x117ba19a
+  name: "bh_end_io_t"
+  referred_type_id: 0x17592b81
+}
+typedef {
+  id: 0x95ef30d6
+  name: "binder_size_t"
+  referred_type_id: 0xedf277ba
+}
+typedef {
+  id: 0x86d95287
+  name: "binder_uintptr_t"
+  referred_type_id: 0xedf277ba
+}
+typedef {
+  id: 0x766d3238
+  name: "bio_end_io_t"
+  referred_type_id: 0x15f0919b
+}
+typedef {
+  id: 0xf3f948a5
+  name: "blist_flags_t"
+  referred_type_id: 0xedf277ba
+}
+typedef {
+  id: 0x499ec4e1
+  name: "blk_mq_req_flags_t"
+  referred_type_id: 0xe62ebf07
+}
+typedef {
+  id: 0x7b64642a
+  name: "blk_opf_t"
+  referred_type_id: 0xe62ebf07
+}
+typedef {
+  id: 0x3cc4e4dd
+  name: "blk_qc_t"
+  referred_type_id: 0x4585663f
+}
+typedef {
+  id: 0x7be80061
+  name: "blk_status_t"
+  referred_type_id: 0x295c7202
+}
+typedef {
+  id: 0xc22ca369
+  name: "blkcg_pol_alloc_cpd_fn"
+  referred_type_id: 0xa69e8d8a
+}
+typedef {
+  id: 0x8b77fdd1
+  name: "blkcg_pol_alloc_pd_fn"
+  referred_type_id: 0xd742e545
+}
+typedef {
+  id: 0xea3ec9b4
+  name: "blkcg_pol_bind_cpd_fn"
+  referred_type_id: 0x1d1e93d2
+}
+typedef {
+  id: 0x583cd7b3
+  name: "blkcg_pol_free_cpd_fn"
+  referred_type_id: 0x1d1e93d2
+}
+typedef {
+  id: 0xbd5972b1
+  name: "blkcg_pol_free_pd_fn"
+  referred_type_id: 0x193306e3
+}
+typedef {
+  id: 0xadee54d0
+  name: "blkcg_pol_init_cpd_fn"
+  referred_type_id: 0x1d1e93d2
+}
+typedef {
+  id: 0x7978939e
+  name: "blkcg_pol_init_pd_fn"
+  referred_type_id: 0x193306e3
+}
+typedef {
+  id: 0xed0ee9a0
+  name: "blkcg_pol_offline_pd_fn"
+  referred_type_id: 0x193306e3
+}
+typedef {
+  id: 0x9376e812
+  name: "blkcg_pol_online_pd_fn"
+  referred_type_id: 0x193306e3
+}
+typedef {
+  id: 0x66cfbe2d
+  name: "blkcg_pol_reset_pd_stats_fn"
+  referred_type_id: 0x193306e3
+}
+typedef {
+  id: 0x4d320115
+  name: "blkcg_pol_stat_pd_fn"
+  referred_type_id: 0x192a9179
+}
+typedef {
+  id: 0x022008d0
+  name: "blkcnt_t"
+  referred_type_id: 0x92233392
+}
+typedef {
+  id: 0x6d7f5ff6
+  name: "bool"
+  referred_type_id: 0xb2307ca0
+}
+typedef {
+  id: 0xd9fefea9
+  name: "bpf_callback_t"
+  referred_type_id: 0x16df644d
+}
+typedef {
+  id: 0x8c6218b1
+  name: "bpf_func_t"
+  referred_type_id: 0x3a88ea63
+}
+typedef {
+  id: 0x6bf170af
+  name: "bpf_iter_fini_seq_priv_t"
+  referred_type_id: 0x0f3dfb90
+}
+typedef {
+  id: 0x3292450a
+  name: "bpf_iter_init_seq_priv_t"
+  referred_type_id: 0x2c693aa6
+}
+typedef {
+  id: 0x87cd136d
+  name: "bpfptr_t"
+  referred_type_id: 0xe61f67ea
+}
+typedef {
+  id: 0x4fb7ceba
+  name: "bsg_job_fn"
+  referred_type_id: 0x9342d9ef
+}
+typedef {
+  id: 0xf67c2b7b
+  name: "bsg_sg_io_fn"
+  referred_type_id: 0x9ffa167c
+}
+typedef {
+  id: 0x655ce63a
+  name: "bsg_timeout_fn"
+  referred_type_id: 0x7904adfb
+}
+typedef {
+  id: 0xfe711d43
+  name: "btf_dtor_kfunc_t"
+  referred_type_id: 0x0f3dfb90
+}
+typedef {
+  id: 0x17998b28
+  name: "busy_tag_iter_fn"
+  referred_type_id: 0xf9662ef4
+}
+typedef {
+  id: 0x89ea5acf
+  name: "byte_t"
+  referred_type_id: 0xb3e7bac9
+}
+typedef {
+  id: 0x0e3dceb2
+  name: "call_rcu_func_t"
+  referred_type_id: 0x0d1ce346
+}
+typedef {
+  id: 0xec722edd
+  name: "call_single_data_t"
+  referred_type_id: 0xac1494ba
+}
+typedef {
+  id: 0x6f23eca1
+  name: "canid_t"
+  referred_type_id: 0xe62ebf07
+}
+typedef {
+  id: 0x6934ad2c
+  name: "cc_t"
+  referred_type_id: 0x5d8155a5
+}
+typedef {
+  id: 0x58e5a8b7
+  name: "cisco_proto"
+  referred_type_id: 0x0a19ea99
+}
+typedef {
+  id: 0x4478ba6b
+  name: "clockid_t"
+  referred_type_id: 0xa53710f6
+}
+typedef {
+  id: 0x3256c3cc
+  name: "cmp_func_t"
+  referred_type_id: 0x2e58ef27
+}
+typedef {
+  id: 0x9f7c35c8
+  name: "compat_long_t"
+  referred_type_id: 0xd41e888f
+}
+typedef {
+  id: 0x65d1b07a
+  name: "compat_uptr_t"
+  referred_type_id: 0xc9082b19
+}
+typedef {
+  id: 0x9e5c24fd
+  name: "config_clks_t"
+  referred_type_id: 0x2df3dec7
+}
+typedef {
+  id: 0x1686b119
+  name: "config_regulators_t"
+  referred_type_id: 0x2dcdf853
+}
+typedef {
+  id: 0x92b210b3
+  name: "cpu_stop_fn_t"
+  referred_type_id: 0x2c7bd73f
+}
+typedef {
+  id: 0x1c04d361
+  name: "cpumask_t"
+  referred_type_id: 0xc9a82d21
+}
+typedef {
+  id: 0x99caa0ae
+  name: "cpumask_var_t"
+  referred_type_id: 0x87a3edc2
+}
+typedef {
+  id: 0xbe8b269f
+  name: "crypto_completion_t"
+  referred_type_id: 0x0e943aa8
+}
+typedef {
+  id: 0x096158f8
+  name: "data_exchange_cb_t"
+  referred_type_id: 0x0f3ec6f4
+}
+typedef {
+  id: 0x9519135f
+  name: "depot_stack_handle_t"
+  referred_type_id: 0xc9082b19
+}
+typedef {
+  id: 0xeb0f6de6
+  name: "dev_t"
+  referred_type_id: 0xe83041c0
+}
+typedef {
+  id: 0xe02e14d6
+  name: "dma_addr_t"
+  referred_type_id: 0x92233392
+}
+typedef {
+  id: 0xeb1a482b
+  name: "dma_async_tx_callback"
+  referred_type_id: 0x0f3dfb90
+}
+typedef {
+  id: 0x5e5eaa16
+  name: "dma_async_tx_callback_result"
+  referred_type_id: 0x0f0ae387
+}
+typedef {
+  id: 0xa7066cce
+  name: "dma_cap_mask_t"
+  referred_type_id: 0x2d9765d2
+}
+typedef {
+  id: 0x4faa9b63
+  name: "dma_cookie_t"
+  referred_type_id: 0xd41e888f
+}
+typedef {
+  id: 0xa9e8970d
+  name: "dma_fence_func_t"
+  referred_type_id: 0x0ea030ff
+}
+typedef {
+  id: 0xd25c011d
+  name: "dma_filter_fn"
+  referred_type_id: 0x36841126
+}
+typedef {
+  id: 0x92cb2337
+  name: "dr_match_t"
+  referred_type_id: 0x2dccb849
+}
+typedef {
+  id: 0x548dee2a
+  name: "dr_release_t"
+  referred_type_id: 0x0e8b1f30
+}
+typedef {
+  id: 0x198b3170
+  name: "drm_flip_func_t"
+  referred_type_id: 0x0cc41004
+}
+typedef {
+  id: 0x18b7e866
+  name: "drm_ioctl_t"
+  referred_type_id: 0x932780af
+}
+typedef {
+  id: 0x90dafee5
+  name: "drm_magic_t"
+  referred_type_id: 0x4585663f
+}
+typedef {
+  id: 0x79c50b39
+  name: "drmres_release_t"
+  referred_type_id: 0x0d1edb4c
+}
+typedef {
+  id: 0x160ba102
+  name: "errseq_t"
+  referred_type_id: 0xc9082b19
+}
+typedef {
+  id: 0x3aaabb17
+  name: "filldir_t"
+  referred_type_id: 0x36ef2158
+}
+typedef {
+  id: 0x73021cd7
+  name: "filler_t"
+  referred_type_id: 0x9b3fbad6
+}
+typedef {
+  id: 0x8fd1c081
+  name: "fl_owner_t"
+  referred_type_id: 0x18bd6530
+}
+typedef {
+  id: 0x580df0c3
+  name: "flow_setup_cb_t"
+  referred_type_id: 0x944e647e
+}
+typedef {
+  id: 0x9547a3da
+  name: "fmode_t"
+  referred_type_id: 0x4585663f
+}
+typedef {
+  id: 0x39972774
+  name: "fr_proto"
+  referred_type_id: 0x2880e524
+}
+typedef {
+  id: 0x2b2a4cd4
+  name: "fr_proto_pvc"
+  referred_type_id: 0x1ebf2a58
+}
+typedef {
+  id: 0x3a6c2f1e
+  name: "fr_proto_pvc_info"
+  referred_type_id: 0x1eb1a566
+}
+typedef {
+  id: 0x7482d865
+  name: "free_page_t"
+  referred_type_id: 0x11f553a6
+}
+typedef {
+  id: 0x247230af
+  name: "free_work_fn"
+  referred_type_id: 0x98c7b724
+}
+typedef {
+  id: 0x72f10f5c
+  name: "fs_param_type"
+  referred_type_id: 0x96b04c18
+}
+typedef {
+  id: 0x0a9eebba
+  name: "fsnotify_connp_t"
+  referred_type_id: 0x3bd2bf42
+}
+typedef {
+  id: 0x911caf51
+  name: "genpd_xlate_t"
+  referred_type_id: 0x24733af8
+}
+typedef {
+  id: 0xc7f025a7
+  name: "genpool_algo_t"
+  referred_type_id: 0x06afdad0
+}
+typedef {
+  id: 0x244afa25
+  name: "gfn_t"
+  referred_type_id: 0x92233392
+}
+typedef {
+  id: 0xf1a6dfed
+  name: "gfp_t"
+  referred_type_id: 0x4585663f
+}
+typedef {
+  id: 0x96361f7e
+  name: "gid_t"
+  referred_type_id: 0x012a99e5
+}
+typedef {
+  id: 0x1b4ba19a
+  name: "gpa_t"
+  referred_type_id: 0x92233392
+}
+typedef {
+  id: 0xa98dedee
+  name: "gro_result_t"
+  referred_type_id: 0xcc8a47b3
+}
+typedef {
+  id: 0xbb354ed2
+  name: "guid_t"
+  referred_type_id: 0x0b526877
+}
+typedef {
+  id: 0x30c17c17
+  name: "hci_cmd_sync_work_destroy_t"
+  referred_type_id: 0x0f74dfe9
+}
+typedef {
+  id: 0x59cee86b
+  name: "hci_cmd_sync_work_func_t"
+  referred_type_id: 0x2c34814b
+}
+typedef {
+  id: 0x953457e9
+  name: "hci_conn_flags_t"
+  referred_type_id: 0x295c7202
+}
+typedef {
+  id: 0x5db53aa1
+  name: "hfn_t"
+  referred_type_id: 0x92233392
+}
+typedef {
+  id: 0x7e8f5c14
+  name: "int32"
+  referred_type_id: 0xe62ebf07
+}
+typedef {
+  id: 0x5171d297
+  name: "int32_t"
+  referred_type_id: 0xd41e888f
+}
+typedef {
+  id: 0x7533d9d0
+  name: "int64_t"
+  referred_type_id: 0x2e0f9112
+}
+typedef {
+  id: 0xab2332a3
+  name: "io_req_tw_func_t"
+  referred_type_id: 0x0fa64587
+}
+typedef {
+  id: 0x20d538c6
+  name: "io_wq_work_fn"
+  referred_type_id: 0x12e01214
+}
+typedef {
+  id: 0x1e41b656
+  name: "ioasid_t"
+  referred_type_id: 0x4585663f
+}
+typedef {
+  id: 0x47c11668
+  name: "iommu_dev_fault_handler_t"
+  referred_type_id: 0x2c803af0
+}
+typedef {
+  id: 0x907538bd
+  name: "iommu_fault_handler_t"
+  referred_type_id: 0x2f184276
+}
+typedef {
+  id: 0xb0c2eb21
+  name: "irq_flow_handler_t"
+  referred_type_id: 0x0d82bfbc
+}
+typedef {
+  id: 0xd92b1d75
+  name: "irq_handler_t"
+  referred_type_id: 0x044ba8c8
+}
+typedef {
+  id: 0x22b36393
+  name: "irq_hw_number_t"
+  referred_type_id: 0x33756485
+}
+typedef {
+  id: 0xc2683cd4
+  name: "irq_write_msi_msg_t"
+  referred_type_id: 0x0e771961
+}
+typedef {
+  id: 0x40e51470
+  name: "irqreturn_t"
+  referred_type_id: 0x7a89ec15
+}
+typedef {
+  id: 0xfe028135
+  name: "isolate_mode_t"
+  referred_type_id: 0x4585663f
+}
+typedef {
+  id: 0xc6154084
+  name: "iw_handler"
+  referred_type_id: 0x2efa9e52
+}
+typedef {
+  id: 0xd9449876
+  name: "kernel_cap_t"
+  referred_type_id: 0xa8da1c83
+}
+typedef {
+  id: 0x91f1cb99
+  name: "kernel_siginfo_t"
+  referred_type_id: 0xcad9da82
+}
+typedef {
+  id: 0x42af4f5c
+  name: "kernel_ulong_t"
+  referred_type_id: 0x33756485
+}
+typedef {
+  id: 0xc14619eb
+  name: "key_perm_t"
+  referred_type_id: 0x1c3dbe5a
+}
+typedef {
+  id: 0x3a800090
+  name: "key_ref_t"
+  referred_type_id: 0x0fff2047
+}
+typedef {
+  id: 0xfe996b2d
+  name: "key_restrict_link_func_t"
+  referred_type_id: 0x2dd3995b
+}
+typedef {
+  id: 0xe2836f7f
+  name: "key_serial_t"
+  referred_type_id: 0x5171d297
+}
+typedef {
+  id: 0xb0ddb211
+  name: "kgid_t"
+  referred_type_id: 0x0b8c72ea
+}
+typedef {
+  id: 0xf6ef7d7c
+  name: "kprobe_opcode_t"
+  referred_type_id: 0xc9082b19
+}
+typedef {
+  id: 0x322703cf
+  name: "kprobe_post_handler_t"
+  referred_type_id: 0x0dd7b461
+}
+typedef {
+  id: 0xad2da76c
+  name: "kprobe_pre_handler_t"
+  referred_type_id: 0x2e92af98
+}
+typedef {
+  id: 0x59338db0
+  name: "kprojid_t"
+  referred_type_id: 0x0bb5b6b9
+}
+typedef {
+  id: 0x70751a0e
+  name: "kretprobe_handler_t"
+  referred_type_id: 0x2de9a54b
+}
+typedef {
+  id: 0x7fcfc28a
+  name: "kthread_work_func_t"
+  referred_type_id: 0x0efff92a
+}
+typedef {
+  id: 0x11c404ba
+  name: "ktime_t"
+  referred_type_id: 0x2e0f9112
+}
+typedef {
+  id: 0xe90b32b7
+  name: "kuid_t"
+  referred_type_id: 0x0b817a1b
+}
+typedef {
+  id: 0xd9ed81e9
+  name: "kunit_try_catch_func_t"
+  referred_type_id: 0x0f3dfb90
+}
+typedef {
+  id: 0x480dff10
+  name: "kvm_nvhe_reloc_t"
+  referred_type_id: 0xd41e888f
+}
+typedef {
+  id: 0x584c13f3
+  name: "kvm_pfn_t"
+  referred_type_id: 0x5db53aa1
+}
+typedef {
+  id: 0x7eadb465
+  name: "kvm_pgtable_force_pte_cb_t"
+  referred_type_id: 0x3c88afe7
+}
+typedef {
+  id: 0xf2ecf779
+  name: "kvm_pgtable_pte_is_counted_cb_t"
+  referred_type_id: 0x331e2c82
+}
+typedef {
+  id: 0x6ee0bcff
+  name: "kvm_pte_t"
+  referred_type_id: 0x92233392
+}
+typedef {
+  id: 0x96c1925d
+  name: "l2cap_chan_func_t"
+  referred_type_id: 0x0e9bcd61
+}
+typedef {
+  id: 0x87d0a514
+  name: "list_cmp_func_t"
+  referred_type_id: 0x2c487571
+}
+typedef {
+  id: 0x09f9643d
+  name: "local64_t"
+  referred_type_id: 0x3850c6cc
+}
+typedef {
+  id: 0x1e29c48b
+  name: "local_lock_t"
+  referred_type_id: 0x186c44db
+}
+typedef {
+  id: 0x299c4193
+  name: "local_t"
+  referred_type_id: 0x3876ab11
+}
+typedef {
+  id: 0x4f05a9fd
+  name: "lockdep_map_p"
+  referred_type_id: 0x186c44db
+}
+typedef {
+  id: 0x27a7c613
+  name: "loff_t"
+  referred_type_id: 0xbf704b80
+}
+typedef {
+  id: 0x5fd666ab
+  name: "mempool_alloc_t"
+  referred_type_id: 0x6a9df39e
+}
+typedef {
+  id: 0xdb7fbc17
+  name: "mempool_free_t"
+  referred_type_id: 0x16d5fd4b
+}
+typedef {
+  id: 0xe97fe194
+  name: "mempool_t"
+  referred_type_id: 0x3df30456
+}
+typedef {
+  id: 0x49f541d1
+  name: "mhp_t"
+  referred_type_id: 0x6720d32f
+}
+typedef {
+  id: 0x3dc01f54
+  name: "mm_context_t"
+  referred_type_id: 0x2b5e86f9
+}
+typedef {
+  id: 0x3c2fe980
+  name: "mmc_pm_flag_t"
+  referred_type_id: 0x4585663f
+}
+typedef {
+  id: 0xad6ae097
+  name: "mqd_t"
+  referred_type_id: 0x77c91bd4
+}
+typedef {
+  id: 0xa5e1bddf
+  name: "msi_alloc_info_t"
+  referred_type_id: 0x986b89cb
+}
+typedef {
+  id: 0x80e63dcd
+  name: "ndctl_fn"
+  referred_type_id: 0x2defe351
+}
+typedef {
+  id: 0x2584a3b9
+  name: "netdev_features_t"
+  referred_type_id: 0x92233392
+}
+typedef {
+  id: 0x8276e5b6
+  name: "netdev_tx_t"
+  referred_type_id: 0xb9637b4a
+}
+typedef {
+  id: 0xc76fa419
+  name: "netdevice_tracker"
+  referred_type_id: 0x186c44db
+}
+typedef {
+  id: 0xf5c6a82e
+  name: "netns_tracker"
+  referred_type_id: 0x186c44db
+}
+typedef {
+  id: 0x77437ee8
+  name: "new_page_t"
+  referred_type_id: 0xbcf5f2b5
+}
+typedef {
+  id: 0x5e03c49b
+  name: "nf_hookfn"
+  referred_type_id: 0xc8eda6b8
+}
+typedef {
+  id: 0x6a88a4ce
+  name: "nf_logfn"
+  referred_type_id: 0x138ba23f
+}
+typedef {
+  id: 0x05f9f5e9
+  name: "nlink_t"
+  referred_type_id: 0xc9082b19
+}
+typedef {
+  id: 0x948a2888
+  name: "nodemask_t"
+  referred_type_id: 0x2d9765d2
+}
+typedef {
+  id: 0x0aeefe2d
+  name: "notifier_fn_t"
+  referred_type_id: 0x2c799599
+}
+typedef {
+  id: 0x208118b2
+  name: "nvmem_cell_post_process_t"
+  referred_type_id: 0x2c418822
+}
+typedef {
+  id: 0x68aafef4
+  name: "nvmem_reg_read_t"
+  referred_type_id: 0x2c3f2dba
+}
+typedef {
+  id: 0xbf71f27b
+  name: "nvmem_reg_write_t"
+  referred_type_id: 0x2c3f2dba
+}
+typedef {
+  id: 0xdb566935
+  name: "off_t"
+  referred_type_id: 0x2d60633e
+}
+typedef {
+  id: 0xbbe369d4
+  name: "old_time32_t"
+  referred_type_id: 0xd41e888f
+}
+typedef {
+  id: 0x58545d97
+  name: "p4d_t"
+  referred_type_id: 0x148546d4
+}
+typedef {
+  id: 0x8ef19fe7
+  name: "pci_bus_flags_t"
+  referred_type_id: 0xc93e017b
+}
+typedef {
+  id: 0x67293002
+  name: "pci_channel_state_t"
+  referred_type_id: 0x4585663f
+}
+typedef {
+  id: 0xee5ea0c4
+  name: "pci_dev_flags_t"
+  referred_type_id: 0xc93e017b
+}
+typedef {
+  id: 0x774358c9
+  name: "pci_ers_result_t"
+  referred_type_id: 0x4585663f
+}
+typedef {
+  id: 0x1e351120
+  name: "pci_power_t"
+  referred_type_id: 0x6720d32f
+}
+typedef {
+  id: 0xed92bbd4
+  name: "percpu_ref_func_t"
+  referred_type_id: 0x11d85f9e
+}
+typedef {
+  id: 0xa6a5c913
+  name: "perf_copy_f"
+  referred_type_id: 0x074ac796
+}
+typedef {
+  id: 0x74a50355
+  name: "perf_overflow_handler_t"
+  referred_type_id: 0x0f7008a4
+}
+typedef {
+  id: 0x89ec69cf
+  name: "pfn_t"
+  referred_type_id: 0x0b8d77a1
+}
+typedef {
+  id: 0xaf12ea2c
+  name: "pgd_t"
+  referred_type_id: 0x1496620e
+}
+typedef {
+  id: 0xe381831a
+  name: "pgdval_t"
+  referred_type_id: 0x92233392
+}
+typedef {
+  id: 0x9cf21ab5
+  name: "pgprot_t"
+  referred_type_id: 0x37f08244
+}
+typedef {
+  id: 0xf0d2310e
+  name: "pgtable_t"
+  referred_type_id: 0x06835e9c
+}
+typedef {
+  id: 0x1c30a9ad
+  name: "phandle"
+  referred_type_id: 0xc9082b19
+}
+typedef {
+  id: 0xeeed68e6
+  name: "phy_interface_t"
+  referred_type_id: 0x772e934b
+}
+typedef {
+  id: 0xbdd18903
+  name: "phys_addr_t"
+  referred_type_id: 0x92233392
+}
+typedef {
+  id: 0x49b889e7
+  name: "pid_t"
+  referred_type_id: 0x763389c7
+}
+typedef {
+  id: 0x16864222
+  name: "pkvm_handle_t"
+  referred_type_id: 0x4585663f
+}
+typedef {
+  id: 0xf017819f
+  name: "pm_message_t"
+  referred_type_id: 0x4eef2f1a
+}
+typedef {
+  id: 0xae60496e
+  name: "pmd_t"
+  referred_type_id: 0x0dcb7fb1
+}
+typedef {
+  id: 0xde7f96df
+  name: "pmdval_t"
+  referred_type_id: 0x92233392
+}
+typedef {
+  id: 0x736f9228
+  name: "pn_t"
+  referred_type_id: 0x0f15c20c
+}
+typedef {
+  id: 0xac7cd8b5
+  name: "poll_queue_proc"
+  referred_type_id: 0x0f301293
+}
+typedef {
+  id: 0x89378254
+  name: "poll_table"
+  referred_type_id: 0x9122057b
+}
+typedef {
+  id: 0xb335d16f
+  name: "possible_net_t"
+  referred_type_id: 0x04ecbf8c
+}
+typedef {
+  id: 0x431a65b6
+  name: "probe_opcode_t"
+  referred_type_id: 0xc9082b19
+}
+typedef {
+  id: 0xa102ed0b
+  name: "probes_handler_t"
+  referred_type_id: 0x212a2ba8
+}
+typedef {
+  id: 0x7599a0b6
+  name: "proc_handler"
+  referred_type_id: 0x91cb6689
+}
+typedef {
+  id: 0x6bc75709
+  name: "proc_write_t"
+  referred_type_id: 0x2c756772
+}
+typedef {
+  id: 0x712753fa
+  name: "projid_t"
+  referred_type_id: 0xba3f457a
+}
+typedef {
+  id: 0xf9fcb2cf
+  name: "pstate_check_t"
+  referred_type_id: 0xf2790225
+}
+typedef {
+  id: 0xe0bb64fa
+  name: "pte_t"
+  referred_type_id: 0x300fd8c1
+}
+typedef {
+  id: 0xc32dc55c
+  name: "pteval_t"
+  referred_type_id: 0x92233392
+}
+typedef {
+  id: 0x7bd3e128
+  name: "pud_t"
+  referred_type_id: 0x278b52be
+}
+typedef {
+  id: 0x6b98fc5d
+  name: "qsize_t"
+  referred_type_id: 0x39470e64
+}
+typedef {
+  id: 0x9e4d5bdd
+  name: "raw_hdlc_proto"
+  referred_type_id: 0x02c70092
+}
+typedef {
+  id: 0xc8b17aa7
+  name: "raw_spinlock_t"
+  referred_type_id: 0x6a35bdd9
+}
+typedef {
+  id: 0x7ca48629
+  name: "rb_time_t"
+  referred_type_id: 0x4fb3e0ce
+}
+typedef {
+  id: 0x8f45a284
+  name: "rcu_callback_t"
+  referred_type_id: 0x0d93a6e4
+}
+typedef {
+  id: 0xf1dc81dc
+  name: "read_block_fn"
+  referred_type_id: 0x9bbe177b
+}
+typedef {
+  id: 0x92a4d3f0
+  name: "read_descriptor_t"
+  referred_type_id: 0x23e6957b
+}
+typedef {
+  id: 0xa722c13e
+  name: "refcount_t"
+  referred_type_id: 0x73bf28be
+}
+typedef {
+  id: 0x8cb291cd
+  name: "regex_match_func"
+  referred_type_id: 0x2db06a79
+}
+typedef {
+  id: 0xa03fee97
+  name: "regmap_hw_async_alloc"
+  referred_type_id: 0x0e2fc7b3
+}
+typedef {
+  id: 0x9e8abf4f
+  name: "regmap_hw_async_write"
+  referred_type_id: 0x2c4dbd17
+}
+typedef {
+  id: 0x23826b7b
+  name: "regmap_hw_free_context"
+  referred_type_id: 0x0f3dfb90
+}
+typedef {
+  id: 0x1838bac7
+  name: "regmap_hw_gather_write"
+  referred_type_id: 0x2c4dbd20
+}
+typedef {
+  id: 0x3b2e3c42
+  name: "regmap_hw_read"
+  referred_type_id: 0x2c4d9c82
+}
+typedef {
+  id: 0xb52c47f1
+  name: "regmap_hw_reg_noinc_read"
+  referred_type_id: 0x2c3f2dba
+}
+typedef {
+  id: 0xf71b6f7a
+  name: "regmap_hw_reg_noinc_write"
+  referred_type_id: 0x2c3d379d
+}
+typedef {
+  id: 0x321675e0
+  name: "regmap_hw_reg_read"
+  referred_type_id: 0x2c3fed4f
+}
+typedef {
+  id: 0x2d75128d
+  name: "regmap_hw_reg_update_bits"
+  referred_type_id: 0x2c3a4f8a
+}
+typedef {
+  id: 0x7dc25cb9
+  name: "regmap_hw_reg_write"
+  referred_type_id: 0x2c3a0a0f
+}
+typedef {
+  id: 0x6399c10b
+  name: "regmap_hw_write"
+  referred_type_id: 0x2c4d8b7c
+}
+typedef {
+  id: 0xcb507f7c
+  name: "regmap_lock"
+  referred_type_id: 0x0f3dfb90
+}
+typedef {
+  id: 0x034519e3
+  name: "regmap_unlock"
+  referred_type_id: 0x0f3dfb90
+}
+typedef {
+  id: 0xfc2c3062
+  name: "report_zones_cb"
+  referred_type_id: 0x2dd439ad
+}
+typedef {
+  id: 0x9e3964d1
+  name: "req_flags_t"
+  referred_type_id: 0xe62ebf07
+}
+typedef {
+  id: 0x9209d54f
+  name: "request_key_actor_t"
+  referred_type_id: 0x2df2d483
+}
+typedef {
+  id: 0x9565759f
+  name: "resource_size_t"
+  referred_type_id: 0xbdd18903
+}
+typedef {
+  id: 0x11a71cb1
+  name: "rht_hashfn_t"
+  referred_type_id: 0x18ba5a88
+}
+typedef {
+  id: 0x7bf65b97
+  name: "rht_obj_cmpfn_t"
+  referred_type_id: 0x2c14ed8e
+}
+typedef {
+  id: 0xc4926ac8
+  name: "rht_obj_hashfn_t"
+  referred_type_id: 0x18ba5a88
+}
+typedef {
+  id: 0x0cc416fe
+  name: "rpmsg_rx_cb_t"
+  referred_type_id: 0x2fb5a9f3
+}
+typedef {
+  id: 0xc733e2de
+  name: "rq_end_io_fn"
+  referred_type_id: 0x257f9ff4
+}
+typedef {
+  id: 0xc82f6fa3
+  name: "rsrc_put_fn"
+  referred_type_id: 0x14501eec
+}
+typedef {
+  id: 0x9d2a986c
+  name: "rtnl_doit_func"
+  referred_type_id: 0x2db72cae
+}
+typedef {
+  id: 0x206cc358
+  name: "rtnl_dumpit_func"
+  referred_type_id: 0x2d883419
+}
+typedef {
+  id: 0xf4933b90
+  name: "rwlock_t"
+  referred_type_id: 0x0b90f9fe
+}
+typedef {
+  id: 0x3e504ae2
+  name: "rx_handler_func_t"
+  referred_type_id: 0x74516256
+}
+typedef {
+  id: 0x7b59fac9
+  name: "rx_handler_result_t"
+  referred_type_id: 0x62deda67
+}
+typedef {
+  id: 0x29bf06ba
+  name: "s16"
+  referred_type_id: 0x007e8ce4
+}
+typedef {
+  id: 0xd41e888f
+  name: "s32"
+  referred_type_id: 0x0faae5b1
+}
+typedef {
+  id: 0x2e0f9112
+  name: "s64"
+  referred_type_id: 0xdd6eef0a
+}
+typedef {
+  id: 0x29b77961
+  name: "s8"
+  referred_type_id: 0x901eaf6a
+}
+typedef {
+  id: 0x3032dbe6
+  name: "sa_family_t"
+  referred_type_id: 0xe0705941
+}
+typedef {
+  id: 0x4aaca7b4
+  name: "salt_t"
+  referred_type_id: 0x1deb8a5f
+}
+typedef {
+  id: 0xcdc0f9fc
+  name: "sci_t"
+  referred_type_id: 0x92233392
+}
+typedef {
+  id: 0x5a02345c
+  name: "scmi_prot_init_ph_fn_t"
+  referred_type_id: 0x2e30e88b
+}
+typedef {
+  id: 0x86a9103f
+  name: "sdio_irq_handler_t"
+  referred_type_id: 0x1402e6d4
+}
+typedef {
+  id: 0xe342b1c2
+  name: "se_io_cb_t"
+  referred_type_id: 0x0f3218c3
+}
+typedef {
+  id: 0xd0b3a203
+  name: "sector_t"
+  referred_type_id: 0x92233392
+}
+typedef {
+  id: 0xb55a3dee
+  name: "seqcount_raw_spinlock_t"
+  referred_type_id: 0xd3efa1da
+}
+typedef {
+  id: 0xeb90906e
+  name: "seqcount_spinlock_t"
+  referred_type_id: 0x39db9027
+}
+typedef {
+  id: 0xd0e93144
+  name: "seqcount_t"
+  referred_type_id: 0xe5e17f59
+}
+typedef {
+  id: 0x000ff4a8
+  name: "seqlock_t"
+  referred_type_id: 0x1a7baa87
+}
+typedef {
+  id: 0x02097f03
+  name: "sigset_t"
+  referred_type_id: 0x0abef6e6
+}
+typedef {
+  id: 0x57fec3c8
+  name: "sigval_t"
+  referred_type_id: 0x23cef90c
+}
+typedef {
+  id: 0x4edec64c
+  name: "siphash_key_t"
+  referred_type_id: 0x106bce13
+}
+typedef {
+  id: 0xf435685e
+  name: "size_t"
+  referred_type_id: 0x5b3d9d36
+}
+typedef {
+  id: 0x86265fdc
+  name: "sk_buff_data_t"
+  referred_type_id: 0x4585663f
+}
+typedef {
+  id: 0xbb4db7bb
+  name: "sk_read_actor_t"
+  referred_type_id: 0x2f1272b3
+}
+typedef {
+  id: 0x1469952b
+  name: "skb_read_actor_t"
+  referred_type_id: 0x2c210d23
+}
+typedef {
+  id: 0x4466c59f
+  name: "slab_flags_t"
+  referred_type_id: 0x4585663f
+}
+typedef {
+  id: 0x498e6bfd
+  name: "smp_call_func_t"
+  referred_type_id: 0x0f3dfb90
+}
+typedef {
+  id: 0x603895d5
+  name: "smp_cond_func_t"
+  referred_type_id: 0x33539f31
+}
+typedef {
+  id: 0xf8c43e2a
+  name: "snd_ctl_elem_iface_t"
+  referred_type_id: 0x6720d32f
+}
+typedef {
+  id: 0xce5d1786
+  name: "snd_ctl_elem_type_t"
+  referred_type_id: 0x6720d32f
+}
+typedef {
+  id: 0xe030a634
+  name: "snd_kcontrol_get_t"
+  referred_type_id: 0x973a41ee
+}
+typedef {
+  id: 0xf9f61494
+  name: "snd_kcontrol_info_t"
+  referred_type_id: 0x9710bae0
+}
+typedef {
+  id: 0xd5fadd76
+  name: "snd_kcontrol_put_t"
+  referred_type_id: 0x973a41ee
+}
+typedef {
+  id: 0xe232f831
+  name: "snd_kcontrol_tlv_rw_t"
+  referred_type_id: 0x96eeaa13
+}
+typedef {
+  id: 0x65edbf10
+  name: "snd_pcm_access_t"
+  referred_type_id: 0x6720d32f
+}
+typedef {
+  id: 0xc714b5b1
+  name: "snd_pcm_format_t"
+  referred_type_id: 0x6720d32f
+}
+typedef {
+  id: 0x78662640
+  name: "snd_pcm_hw_param_t"
+  referred_type_id: 0x6720d32f
+}
+typedef {
+  id: 0x6439f5ee
+  name: "snd_pcm_hw_rule_func_t"
+  referred_type_id: 0x2f30a05a
+}
+typedef {
+  id: 0x64a5f25f
+  name: "snd_pcm_sframes_t"
+  referred_type_id: 0xfc0e1dbd
+}
+typedef {
+  id: 0x1205844a
+  name: "snd_pcm_state_t"
+  referred_type_id: 0x6720d32f
+}
+typedef {
+  id: 0x5f61296d
+  name: "snd_pcm_subformat_t"
+  referred_type_id: 0x6720d32f
+}
+typedef {
+  id: 0xa8fff47c
+  name: "snd_pcm_uframes_t"
+  referred_type_id: 0x33756485
+}
+typedef {
+  id: 0x59b315be
+  name: "socket_lock_t"
+  referred_type_id: 0x0b0bf9b4
+}
+typedef {
+  id: 0x8113f984
+  name: "socket_state"
+  referred_type_id: 0x53d434a6
+}
+typedef {
+  id: 0xe61f67ea
+  name: "sockptr_t"
+  referred_type_id: 0x15aafb87
+}
+typedef {
+  id: 0x96c0c5e1
+  name: "speed_t"
+  referred_type_id: 0x4585663f
+}
+typedef {
+  id: 0xf313e71a
+  name: "spinlock_t"
+  referred_type_id: 0x08dbd935
+}
+typedef {
+  id: 0xcd0b936a
+  name: "splice_actor"
+  referred_type_id: 0x9fd8b4a4
+}
+typedef {
+  id: 0x69ddccfa
+  name: "ssci_t"
+  referred_type_id: 0xc9082b19
+}
+typedef {
+  id: 0xd5cc9c9a
+  name: "ssize_t"
+  referred_type_id: 0x2da051ab
+}
+typedef {
+  id: 0x6c15168b
+  name: "substring_t"
+  referred_type_id: 0x279cfd35
+}
+typedef {
+  id: 0xba5444a6
+  name: "suspend_state_t"
+  referred_type_id: 0x6720d32f
+}
+typedef {
+  id: 0x8dd95c5e
+  name: "swap_func_t"
+  referred_type_id: 0x0f2334f8
+}
+typedef {
+  id: 0x27162aac
+  name: "swp_entry_t"
+  referred_type_id: 0x0ba52234
+}
+typedef {
+  id: 0x3839574b
+  name: "sync_serial_settings"
+  referred_type_id: 0x247e8a26
+}
+typedef {
+  id: 0x76017ae6
+  name: "tc_action_priv_destructor"
+  referred_type_id: 0x0f3dfb90
+}
+typedef {
+  id: 0xb5f6a62b
+  name: "tcflag_t"
+  referred_type_id: 0x4585663f
+}
+typedef {
+  id: 0xafb7c58e
+  name: "te1_settings"
+  referred_type_id: 0x247e8a06
+}
+typedef {
+  id: 0x865acc96
+  name: "time64_t"
+  referred_type_id: 0xdd6eef0a
+}
+typedef {
+  id: 0x385bd9b4
+  name: "timeu64_t"
+  referred_type_id: 0xedf277ba
+}
+typedef {
+  id: 0x7bf61b84
+  name: "trace_print_func"
+  referred_type_id: 0x16ef799d
+}
+typedef {
+  id: 0xc77aa47c
+  name: "tracepoint_ptr_t"
+  referred_type_id: 0xc5d9d969
+}
+typedef {
+  id: 0x4086b7da
+  name: "typec_mux_set_fn_t"
+  referred_type_id: 0x2ecddbf2
+}
+typedef {
+  id: 0xde10b0fd
+  name: "typec_retimer_set_fn_t"
+  referred_type_id: 0x2f9515bf
+}
+typedef {
+  id: 0x327f656b
+  name: "typec_switch_set_fn_t"
+  referred_type_id: 0x2d7ca4c3
+}
+typedef {
+  id: 0x914dbfdc
+  name: "u16"
+  referred_type_id: 0xe8034002
+}
+typedef {
+  id: 0xc9082b19
+  name: "u32"
+  referred_type_id: 0xe62ebf07
+}
+typedef {
+  id: 0x92233392
+  name: "u64"
+  referred_type_id: 0xedf277ba
+}
+typedef {
+  id: 0x3a3eb2f9
+  name: "u64_stats_t"
+  referred_type_id: 0x1261d033
+}
+typedef {
+  id: 0x295c7202
+  name: "u8"
+  referred_type_id: 0xb3e7bac9
+}
+typedef {
+  id: 0x3fa31951
+  name: "uLong"
+  referred_type_id: 0x33756485
+}
+typedef {
+  id: 0x69318e08
+  name: "u_char"
+  referred_type_id: 0x5d8155a5
+}
+typedef {
+  id: 0xe2ce8d42
+  name: "u_int16_t"
+  referred_type_id: 0x914dbfdc
+}
+typedef {
+  id: 0x35fdd62d
+  name: "u_int32_t"
+  referred_type_id: 0xc9082b19
+}
+typedef {
+  id: 0x1dd8e392
+  name: "u_int64_t"
+  referred_type_id: 0x92233392
+}
+typedef {
+  id: 0x0abe9fd1
+  name: "u_int8_t"
+  referred_type_id: 0x295c7202
+}
+typedef {
+  id: 0x1ea629c9
+  name: "udp_tunnel_encap_destroy_t"
+  referred_type_id: 0x0f626ee5
+}
+typedef {
+  id: 0xc212c7e6
+  name: "udp_tunnel_encap_err_lookup_t"
+  referred_type_id: 0x2c210d23
+}
+typedef {
+  id: 0x409cc465
+  name: "udp_tunnel_encap_err_rcv_t"
+  referred_type_id: 0x0f6379da
+}
+typedef {
+  id: 0x1f7ab146
+  name: "udp_tunnel_encap_rcv_t"
+  referred_type_id: 0x2c210d23
+}
+typedef {
+  id: 0xd540e986
+  name: "udp_tunnel_gro_complete_t"
+  referred_type_id: 0x2c277f2e
+}
+typedef {
+  id: 0x5bd86350
+  name: "udp_tunnel_gro_receive_t"
+  referred_type_id: 0x115dc206
+}
+typedef {
+  id: 0xa215d8bb
+  name: "uid_t"
+  referred_type_id: 0xba3f457a
+}
+typedef {
+  id: 0xac0d3a85
+  name: "uint"
+  referred_type_id: 0x4585663f
+}
+typedef {
+  id: 0xb3a3e4db
+  name: "uint16_t"
+  referred_type_id: 0x914dbfdc
+}
+typedef {
+  id: 0x1c3dbe5a
+  name: "uint32_t"
+  referred_type_id: 0xc9082b19
+}
+typedef {
+  id: 0x1c898f28
+  name: "uint64_t"
+  referred_type_id: 0x92233392
+}
+typedef {
+  id: 0x43e910ce
+  name: "uint8_t"
+  referred_type_id: 0x295c7202
+}
+typedef {
+  id: 0x6ecf2641
+  name: "uintptr_t"
+  referred_type_id: 0x33756485
+}
+typedef {
+  id: 0x1253769c
+  name: "umode_t"
+  referred_type_id: 0xc93e017b
+}
+typedef {
+  id: 0x04e70a8b
+  name: "upf_t"
+  referred_type_id: 0x92233392
+}
+typedef {
+  id: 0xe2f9425b
+  name: "upstat_t"
+  referred_type_id: 0x4585663f
+}
+typedef {
+  id: 0xba215158
+  name: "usb_complete_t"
+  referred_type_id: 0x0ea52fda
+}
+typedef {
+  id: 0x2ab66166
+  name: "usb_role_switch_get_t"
+  referred_type_id: 0x2c18d6ee
+}
+typedef {
+  id: 0x4bf0729d
+  name: "usb_role_switch_set_t"
+  referred_type_id: 0x2e9a2263
+}
+typedef {
+  id: 0x53cba54b
+  name: "uuid_t"
+  referred_type_id: 0x0b526877
+}
+typedef {
+  id: 0x7c355df7
+  name: "v4l2_ctrl_notify_fnc"
+  referred_type_id: 0x0def8d1d
+}
+typedef {
+  id: 0x16f3caa7
+  name: "v4l2_std_id"
+  referred_type_id: 0xedf277ba
+}
+typedef {
+  id: 0xe5e56f65
+  name: "va_list"
+  referred_type_id: 0xbf891a41
+}
+typedef {
+  id: 0x83ea5ff2
+  name: "vb2_thread_fnc"
+  referred_type_id: 0x2f2278cb
+}
+typedef {
+  id: 0x9ea3b209
+  name: "vfsgid_t"
+  referred_type_id: 0x0b8c72ea
+}
+typedef {
+  id: 0x7c96d56f
+  name: "vfsuid_t"
+  referred_type_id: 0x0b817a1b
+}
+typedef {
+  id: 0xb61e350c
+  name: "vhost_work_fn_t"
+  referred_type_id: 0x0d3e48a3
+}
+typedef {
+  id: 0x65d74a06
+  name: "vm_fault_t"
+  referred_type_id: 0x4585663f
+}
+typedef {
+  id: 0x3b1bfa21
+  name: "vm_flags_t"
+  referred_type_id: 0x33756485
+}
+typedef {
+  id: 0xf5f3f682
+  name: "vq_callback_t"
+  referred_type_id: 0x1ce6f074
+}
+typedef {
+  id: 0x79accc5f
+  name: "vring_avail_t"
+  referred_type_id: 0xdf09be6b
+}
+typedef {
+  id: 0x6b752d98
+  name: "vring_desc_t"
+  referred_type_id: 0xbca949ee
+}
+typedef {
+  id: 0xd690a3f8
+  name: "vring_used_elem_t"
+  referred_type_id: 0x84be8096
+}
+typedef {
+  id: 0xcc3d6841
+  name: "vring_used_t"
+  referred_type_id: 0x6cc1b619
+}
+typedef {
+  id: 0xe78277d2
+  name: "wait_bit_action_f"
+  referred_type_id: 0x9ad0bd67
+}
+typedef {
+  id: 0x347ff86e
+  name: "wait_queue_entry_t"
+  referred_type_id: 0x35a67227
+}
+typedef {
+  id: 0x12546c43
+  name: "wait_queue_func_t"
+  referred_type_id: 0x2dcc74e8
+}
+typedef {
+  id: 0x03913382
+  name: "wait_queue_head_t"
+  referred_type_id: 0x76e1f83e
+}
+typedef {
+  id: 0x0dfb7909
+  name: "wchar_t"
+  referred_type_id: 0x914dbfdc
+}
+typedef {
+  id: 0xa2114faf
+  name: "work_func_t"
+  referred_type_id: 0x0e63dc40
+}
+typedef {
+  id: 0xd146a8d0
+  name: "x25_hdlc_proto"
+  referred_type_id: 0x3c727de1
+}
+typedef {
+  id: 0x7f7172c7
+  name: "xa_mark_t"
+  referred_type_id: 0x4585663f
+}
+typedef {
+  id: 0x313397f7
+  name: "xfrm_address_t"
+  referred_type_id: 0x6e8ae78e
+}
+typedef {
+  id: 0xdb6afbca
+  name: "xhci_get_quirks_t"
+  referred_type_id: 0x0e812745
+}
+typedef {
+  id: 0xc0f2f833
+  name: "z_stream"
+  referred_type_id: 0x01c06930
+}
+typedef {
+  id: 0x732d9646
+  name: "z_streamp"
+  referred_type_id: 0x3aac87ab
+}
+qualified {
+  id: 0x837627e4
+  qualifier: VOLATILE
+  qualified_type_id: 0x5d8155a5
+}
+qualified {
+  id: 0x863b2e1a
+  qualifier: VOLATILE
+  qualified_type_id: 0x48b5725f
+}
+qualified {
+  id: 0xc0009f60
+  qualifier: CONST
+  qualified_type_id: 0x7045cb0a
+}
+qualified {
+  id: 0xc007cfe3
+  qualifier: CONST
+  qualified_type_id: 0x70588905
+}
+qualified {
+  id: 0xc025ba33
+  qualifier: CONST
+  qualified_type_id: 0x70d15e47
+}
+qualified {
+  id: 0xc04414ae
+  qualifier: CONST
+  qualified_type_id: 0x7157e430
+}
+qualified {
+  id: 0xc04e07e1
+  qualifier: CONST
+  qualified_type_id: 0x717fa90c
+}
+qualified {
+  id: 0xc0784d86
+  qualifier: CONST
+  qualified_type_id: 0x71a68091
+}
+qualified {
+  id: 0xc0911979
+  qualifier: CONST
+  qualified_type_id: 0x7203d36f
+}
+qualified {
+  id: 0xc0aacc3a
+  qualifier: CONST
+  qualified_type_id: 0x72ec8660
+}
+qualified {
+  id: 0xc12aa3e6
+  qualifier: CONST
+  qualified_type_id: 0x74ed3911
+}
+qualified {
+  id: 0xc15d04a9
+  qualifier: CONST
+  qualified_type_id: 0x7533a42d
+}
+qualified {
+  id: 0xc1861329
+  qualifier: CONST
+  qualified_type_id: 0x765ffa2c
+}
+qualified {
+  id: 0xc18dd320
+  qualifier: CONST
+  qualified_type_id: 0x7670fa09
+}
+qualified {
+  id: 0xc1bdb8c5
+  qualifier: CONST
+  qualified_type_id: 0x76b1559f
+}
+qualified {
+  id: 0xc1ed9692
+  qualifier: CONST
+  qualified_type_id: 0x77f1ecc1
+}
+qualified {
+  id: 0xc238913e
+  qualifier: CONST
+  qualified_type_id: 0x78a5f271
+}
+qualified {
+  id: 0xc2557f81
+  qualifier: CONST
+  qualified_type_id: 0x7912488e
+}
+qualified {
+  id: 0xc2747fdf
+  qualifier: CONST
+  qualified_type_id: 0x799649f7
+}
+qualified {
+  id: 0xc3096dcf
+  qualifier: CONST
+  qualified_type_id: 0x7c6201b4
+}
+qualified {
+  id: 0xc313f11d
+  qualifier: CONST
+  qualified_type_id: 0x7c0872fc
+}
+qualified {
+  id: 0xc32244f1
+  qualifier: CONST
+  qualified_type_id: 0x7ccea54c
+}
+qualified {
+  id: 0xc3431795
+  qualifier: CONST
+  qualified_type_id: 0x7d4be8dc
+}
+qualified {
+  id: 0xc343932d
+  qualifier: CONST
+  qualified_type_id: 0x7d49fa3c
+}
+qualified {
+  id: 0xc344f897
+  qualifier: CONST
+  qualified_type_id: 0x7d5454d7
+}
+qualified {
+  id: 0xc35261da
+  qualifier: CONST
+  qualified_type_id: 0x7d0e31e2
+}
+qualified {
+  id: 0xc35449c9
+  qualifier: CONST
+  qualified_type_id: 0x7d1691af
+}
+qualified {
+  id: 0xc3bedf1f
+  qualifier: CONST
+  qualified_type_id: 0x7ebccaf7
+}
+qualified {
+  id: 0xc3cb7ce7
+  qualifier: CONST
+  qualified_type_id: 0x7f6a4515
+}
+qualified {
+  id: 0xc3d535bb
+  qualifier: CONST
+  qualified_type_id: 0x7f136064
+}
+qualified {
+  id: 0xc407b8af
+  qualifier: CONST
+  qualified_type_id: 0x60595437
+}
+qualified {
+  id: 0xc4138148
+  qualifier: CONST
+  qualified_type_id: 0x6009b3a8
+}
+qualified {
+  id: 0xc4249239
+  qualifier: CONST
+  qualified_type_id: 0x60d5fe6e
+}
+qualified {
+  id: 0xc434b906
+  qualifier: CONST
+  qualified_type_id: 0x60955293
+}
+qualified {
+  id: 0xc4416e46
+  qualifier: CONST
+  qualified_type_id: 0x61420f91
+}
+qualified {
+  id: 0xc44f560e
+  qualifier: CONST
+  qualified_type_id: 0x617aeeb3
+}
+qualified {
+  id: 0xc45198c2
+  qualifier: CONST
+  qualified_type_id: 0x6101d583
+}
+qualified {
+  id: 0xc48494d4
+  qualifier: CONST
+  qualified_type_id: 0x6255e5da
+}
+qualified {
+  id: 0xc4d83772
+  qualifier: CONST
+  qualified_type_id: 0x63276b43
+}
+qualified {
+  id: 0xc4ebd496
+  qualifier: CONST
+  qualified_type_id: 0x63e8e4d3
+}
+qualified {
+  id: 0xc4f6e4f3
+  qualifier: CONST
+  qualified_type_id: 0x639c2545
+}
+qualified {
+  id: 0xc5274ab2
+  qualifier: CONST
+  qualified_type_id: 0x64da9c42
+}
+qualified {
+  id: 0xc538e39d
+  qualifier: CONST
+  qualified_type_id: 0x64a438fc
+}
+qualified {
+  id: 0xc54a795e
+  qualifier: CONST
+  qualified_type_id: 0x656e53f1
+}
+qualified {
+  id: 0xc5640d2a
+  qualifier: CONST
+  qualified_type_id: 0x65d78220
+}
+qualified {
+  id: 0xc56f0588
+  qualifier: CONST
+  qualified_type_id: 0x65fba0a9
+}
+qualified {
+  id: 0xc5725d9a
+  qualifier: CONST
+  qualified_type_id: 0x658ec0e0
+}
+qualified {
+  id: 0xc596e113
+  qualifier: CONST
+  qualified_type_id: 0x661c32c6
+}
+qualified {
+  id: 0xc5b14572
+  qualifier: CONST
+  qualified_type_id: 0x6682a341
+}
+qualified {
+  id: 0xc5d356cb
+  qualifier: CONST
+  qualified_type_id: 0x670aeda7
+}
+qualified {
+  id: 0xc5d9d969
+  qualifier: CONST
+  qualified_type_id: 0x6720d32f
+}
+qualified {
+  id: 0xc5e27af4
+  qualifier: CONST
+  qualified_type_id: 0x67ce5d5b
+}
+qualified {
+  id: 0xc5f7c32f
+  qualifier: CONST
+  qualified_type_id: 0x6798ba36
+}
+qualified {
+  id: 0xc6265fbd
+  qualifier: CONST
+  qualified_type_id: 0x68dec87d
+}
+qualified {
+  id: 0xc6344cd8
+  qualifier: CONST
+  qualified_type_id: 0x689685e8
+}
+qualified {
+  id: 0xc63a02ae
+  qualifier: CONST
+  qualified_type_id: 0x68afbc33
+}
+qualified {
+  id: 0xc644f578
+  qualifier: CONST
+  qualified_type_id: 0x69546368
+}
+qualified {
+  id: 0xc64f660e
+  qualifier: CONST
+  qualified_type_id: 0x697a2eb1
+}
+qualified {
+  id: 0xc654c4df
+  qualifier: CONST
+  qualified_type_id: 0x6914a5f7
+}
+qualified {
+  id: 0xc6699c1e
+  qualifier: CONST
+  qualified_type_id: 0x69e1c6f0
+}
+qualified {
+  id: 0xc69a4eaf
+  qualifier: CONST
+  qualified_type_id: 0x6a2e8c34
+}
+qualified {
+  id: 0xc69f7174
+  qualifier: CONST
+  qualified_type_id: 0x6a3a735b
+}
+qualified {
+  id: 0xc6a220f3
+  qualifier: CONST
+  qualified_type_id: 0x6acf3546
+}
+qualified {
+  id: 0xc6c31dd4
+  qualifier: CONST
+  qualified_type_id: 0x6b4bc1db
+}
+qualified {
+  id: 0xc6f2753e
+  qualifier: CONST
+  qualified_type_id: 0x6b8e6272
+}
+qualified {
+  id: 0xc6fb2a33
+  qualifier: CONST
+  qualified_type_id: 0x6bab1e44
+}
+qualified {
+  id: 0xc717cc99
+  qualifier: CONST
+  qualified_type_id: 0x6c1884ef
+}
+qualified {
+  id: 0xc74082b2
+  qualifier: CONST
+  qualified_type_id: 0x6d45bc40
+}
+qualified {
+  id: 0xc74555c2
+  qualifier: CONST
+  qualified_type_id: 0x6d52e181
+}
+qualified {
+  id: 0xc74e3a5f
+  qualifier: CONST
+  qualified_type_id: 0x6d7f5ff6
+}
+qualified {
+  id: 0xc75895bd
+  qualifier: CONST
+  qualified_type_id: 0x6d25e07f
+}
+qualified {
+  id: 0xc7675249
+  qualifier: CONST
+  qualified_type_id: 0x6ddaffac
+}
+qualified {
+  id: 0xc79c2080
+  qualifier: CONST
+  qualified_type_id: 0x6e373489
+}
+qualified {
+  id: 0xc7dbc4f1
+  qualifier: CONST
+  qualified_type_id: 0x6f28a54f
+}
+qualified {
+  id: 0xc803d596
+  qualifier: CONST
+  qualified_type_id: 0x5048e0d1
+}
+qualified {
+  id: 0xc80d4793
+  qualifier: CONST
+  qualified_type_id: 0x5072a8c6
+}
+qualified {
+  id: 0xc8576ef8
+  qualifier: CONST
+  qualified_type_id: 0x511a0d69
+}
+qualified {
+  id: 0xc86b4df4
+  qualifier: CONST
+  qualified_type_id: 0x51ea8158
+}
+qualified {
+  id: 0xc8bf0cfd
+  qualifier: CONST
+  qualified_type_id: 0x52bb857d
+}
+qualified {
+  id: 0xc8c287df
+  qualifier: CONST
+  qualified_type_id: 0x534da9f4
+}
+qualified {
+  id: 0xc8e304f0
+  qualifier: CONST
+  qualified_type_id: 0x53cba54b
+}
+qualified {
+  id: 0xc8ea26cd
+  qualifier: CONST
+  qualified_type_id: 0x53ef2dbf
+}
+qualified {
+  id: 0xc8f6e9dd
+  qualifier: CONST
+  qualified_type_id: 0x539c11fe
+}
+qualified {
+  id: 0xc8fc32f8
+  qualifier: CONST
+  qualified_type_id: 0x53b77d6a
+}
+qualified {
+  id: 0xc93afee2
+  qualifier: CONST
+  qualified_type_id: 0x54ac4d03
+}
+qualified {
+  id: 0xc94d23ab
+  qualifier: CONST
+  qualified_type_id: 0x55733825
+}
+qualified {
+  id: 0xc97bedb7
+  qualifier: CONST
+  qualified_type_id: 0x55a80057
+}
+qualified {
+  id: 0xc9cc379b
+  qualifier: CONST
+  qualified_type_id: 0x577768e5
+}
+qualified {
+  id: 0xc9f05c33
+  qualifier: CONST
+  qualified_type_id: 0x5786c646
+}
+qualified {
+  id: 0xca2c0eb3
+  qualifier: CONST
+  qualified_type_id: 0x58f78c47
+}
+qualified {
+  id: 0xca4769cf
+  qualifier: CONST
+  qualified_type_id: 0x595a11b6
+}
+qualified {
+  id: 0xca4f5426
+  qualifier: CONST
+  qualified_type_id: 0x597ae613
+}
+qualified {
+  id: 0xca50cf2d
+  qualifier: CONST
+  qualified_type_id: 0x59048a3d
+}
+qualified {
+  id: 0xca5a7101
+  qualifier: CONST
+  qualified_type_id: 0x592e728c
+}
+qualified {
+  id: 0xca8285c3
+  qualifier: CONST
+  qualified_type_id: 0x5a4da184
+}
+qualified {
+  id: 0xca8809e9
+  qualifier: CONST
+  qualified_type_id: 0x5a67912c
+}
+qualified {
+  id: 0xca904ef0
+  qualifier: CONST
+  qualified_type_id: 0x5a068d4a
+}
+qualified {
+  id: 0xca9160b5
+  qualifier: CONST
+  qualified_type_id: 0x5a02345c
+}
+qualified {
+  id: 0xca9a982e
+  qualifier: CONST
+  qualified_type_id: 0x5a2dd630
+}
+qualified {
+  id: 0xcaaeb726
+  qualifier: CONST
+  qualified_type_id: 0x5afd6a10
+}
+qualified {
+  id: 0xcaafdc12
+  qualifier: CONST
+  qualified_type_id: 0x5af8c6c3
+}
+qualified {
+  id: 0xcab00d9e
+  qualifier: CONST
+  qualified_type_id: 0x5a8780f1
+}
+qualified {
+  id: 0xcab06e77
+  qualifier: CONST
+  qualified_type_id: 0x5a860f56
+}
+qualified {
+  id: 0xcae03949
+  qualifier: CONST
+  qualified_type_id: 0x5bc753ae
+}
+qualified {
+  id: 0xcb05c973
+  qualifier: CONST
+  qualified_type_id: 0x5c509347
+}
+qualified {
+  id: 0xcb0c91cc
+  qualifier: CONST
+  qualified_type_id: 0x5c75f1b8
+}
+qualified {
+  id: 0xcb19fe14
+  qualifier: CONST
+  qualified_type_id: 0x5c204eda
+}
+qualified {
+  id: 0xcb1d01d1
+  qualifier: CONST
+  qualified_type_id: 0x5c33b1ce
+}
+qualified {
+  id: 0xcb4870f7
+  qualifier: CONST
+  qualified_type_id: 0x5d667554
+}
+qualified {
+  id: 0xcb57e692
+  qualifier: CONST
+  qualified_type_id: 0x5d182cc1
+}
+qualified {
+  id: 0xcb5af459
+  qualifier: CONST
+  qualified_type_id: 0x5d2c67ec
+}
+qualified {
+  id: 0xcb71b8cb
+  qualifier: CONST
+  qualified_type_id: 0x5d8155a5
+}
+qualified {
+  id: 0xcb720070
+  qualifier: CONST
+  qualified_type_id: 0x5d8fb74a
+}
+qualified {
+  id: 0xcb987dd0
+  qualifier: CONST
+  qualified_type_id: 0x5e2641cb
+}
+qualified {
+  id: 0xcbaf5769
+  qualifier: CONST
+  qualified_type_id: 0x5efaeb2e
+}
+qualified {
+  id: 0xcbb0b027
+  qualifier: CONST
+  qualified_type_id: 0x5e857614
+}
+qualified {
+  id: 0xcbc5e66b
+  qualifier: CONST
+  qualified_type_id: 0x5f502f26
+}
+qualified {
+  id: 0xcbe21be8
+  qualifier: CONST
+  qualified_type_id: 0x5fcfd92a
+}
+qualified {
+  id: 0xcbe2e878
+  qualifier: CONST
+  qualified_type_id: 0x5fcc176b
+}
+qualified {
+  id: 0xcbfb19ba
+  qualifier: CONST
+  qualified_type_id: 0x5fabd062
+}
+qualified {
+  id: 0xcbfe9f94
+  qualifier: CONST
+  qualified_type_id: 0x5fbdc8d9
+}
+qualified {
+  id: 0xcc049335
+  qualifier: CONST
+  qualified_type_id: 0x4055fa5e
+}
+qualified {
+  id: 0xcc05988c
+  qualifier: CONST
+  qualified_type_id: 0x4051d4ba
+}
+qualified {
+  id: 0xcc0b2975
+  qualifier: CONST
+  qualified_type_id: 0x406b135f
+}
+qualified {
+  id: 0xcc112216
+  qualifier: CONST
+  qualified_type_id: 0x40033ed1
+}
+qualified {
+  id: 0xcc9b6618
+  qualifier: CONST
+  qualified_type_id: 0x422a2ee9
+}
+qualified {
+  id: 0xccaffccc
+  qualifier: CONST
+  qualified_type_id: 0x42f845b9
+}
+qualified {
+  id: 0xcce02202
+  qualifier: CONST
+  qualified_type_id: 0x43c73e81
+}
+qualified {
+  id: 0xcd0444ad
+  qualifier: CONST
+  qualified_type_id: 0x4456a43e
+}
+qualified {
+  id: 0xcd0cdcf7
+  qualifier: CONST
+  qualified_type_id: 0x4474c556
+}
+qualified {
+  id: 0xcd2dde52
+  qualifier: CONST
+  qualified_type_id: 0x44f0cfc0
+}
+qualified {
+  id: 0xcd30372f
+  qualifier: CONST
+  qualified_type_id: 0x44876a34
+}
+qualified {
+  id: 0xcd4126e4
+  qualifier: CONST
+  qualified_type_id: 0x45432d18
+}
+qualified {
+  id: 0xcd5fb5c3
+  qualifier: CONST
+  qualified_type_id: 0x45396185
+}
+qualified {
+  id: 0xcd70b42d
+  qualifier: CONST
+  qualified_type_id: 0x4585663f
+}
+qualified {
+  id: 0xcd7649a1
+  qualifier: CONST
+  qualified_type_id: 0x459e900e
+}
+qualified {
+  id: 0xcd80c5db
+  qualifier: CONST
+  qualified_type_id: 0x4644a1e5
+}
+qualified {
+  id: 0xcddd5eb6
+  qualifier: CONST
+  qualified_type_id: 0x4732cc52
+}
+qualified {
+  id: 0xcde71b33
+  qualifier: CONST
+  qualified_type_id: 0x47dbda46
+}
+qualified {
+  id: 0xcdf88cda
+  qualifier: CONST
+  qualified_type_id: 0x47a585e3
+}
+qualified {
+  id: 0xcdfacd6a
+  qualifier: CONST
+  qualified_type_id: 0x47ac8321
+}
+qualified {
+  id: 0xce0a4a84
+  qualifier: CONST
+  qualified_type_id: 0x486e9c99
+}
+qualified {
+  id: 0xce0b89cc
+  qualifier: CONST
+  qualified_type_id: 0x486991ba
+}
+qualified {
+  id: 0xce3cb135
+  qualifier: CONST
+  qualified_type_id: 0x48b5725f
+}
+qualified {
+  id: 0xce679b71
+  qualifier: CONST
+  qualified_type_id: 0x49d9db4c
+}
+qualified {
+  id: 0xce6bbee6
+  qualifier: CONST
+  qualified_type_id: 0x49e94d11
+}
+qualified {
+  id: 0xce6d76ea
+  qualifier: CONST
+  qualified_type_id: 0x49f26d22
+}
+qualified {
+  id: 0xce8060c4
+  qualifier: CONST
+  qualified_type_id: 0x4a463598
+}
+qualified {
+  id: 0xce827fcb
+  qualifier: CONST
+  qualified_type_id: 0x4a4e49a4
+}
+qualified {
+  id: 0xce9dd989
+  qualifier: CONST
+  qualified_type_id: 0x4a30d0ac
+}
+qualified {
+  id: 0xced975e5
+  qualifier: CONST
+  qualified_type_id: 0x4b22611e
+}
+qualified {
+  id: 0xcf611249
+  qualifier: CONST
+  qualified_type_id: 0x4dc3ffac
+}
+qualified {
+  id: 0xcf826620
+  qualifier: CONST
+  qualified_type_id: 0x4e4e2e09
+}
+qualified {
+  id: 0xcf8684a8
+  qualifier: CONST
+  qualified_type_id: 0x4e5da42b
+}
+qualified {
+  id: 0xcfb4a71c
+  qualifier: CONST
+  qualified_type_id: 0x4e952af8
+}
+qualified {
+  id: 0xcfc5a00e
+  qualifier: CONST
+  qualified_type_id: 0x4f5136b2
+}
+qualified {
+  id: 0xcfe06abf
+  qualifier: CONST
+  qualified_type_id: 0x4fc61c75
+}
+qualified {
+  id: 0xd0028a99
+  qualifier: CONST
+  qualified_type_id: 0x304d9ced
+}
+qualified {
+  id: 0xd0144986
+  qualifier: CONST
+  qualified_type_id: 0x30169091
+}
+qualified {
+  id: 0xd01823a1
+  qualifier: CONST
+  qualified_type_id: 0x3027380c
+}
+qualified {
+  id: 0xd038ca4f
+  qualifier: CONST
+  qualified_type_id: 0x30a49fb4
+}
+qualified {
+  id: 0xd08a0c68
+  qualifier: CONST
+  qualified_type_id: 0x326f872a
+}
+qualified {
+  id: 0xd0908329
+  qualifier: CONST
+  qualified_type_id: 0x3205ba2f
+}
+qualified {
+  id: 0xd0a63136
+  qualifier: CONST
+  qualified_type_id: 0x32df7251
+}
+qualified {
+  id: 0xd0ac3169
+  qualifier: CONST
+  qualified_type_id: 0x32f7732d
+}
+qualified {
+  id: 0xd0ccb483
+  qualifier: CONST
+  qualified_type_id: 0x33756485
+}
+qualified {
+  id: 0xd0d8371a
+  qualifier: CONST
+  qualified_type_id: 0x33276ae3
+}
+qualified {
+  id: 0xd0da10ac
+  qualifier: CONST
+  qualified_type_id: 0x332ff439
+}
+qualified {
+  id: 0xd10e978e
+  qualifier: CONST
+  qualified_type_id: 0x347de8b1
+}
+qualified {
+  id: 0xd12be7af
+  qualifier: CONST
+  qualified_type_id: 0x34e82837
+}
+qualified {
+  id: 0xd130a8d3
+  qualifier: CONST
+  qualified_type_id: 0x348515c6
+}
+qualified {
+  id: 0xd1310bad
+  qualifier: CONST
+  qualified_type_id: 0x3483983e
+}
+qualified {
+  id: 0xd13e9e44
+  qualifier: CONST
+  qualified_type_id: 0x34bdcf99
+}
+qualified {
+  id: 0xd15d0fe4
+  qualifier: CONST
+  qualified_type_id: 0x35338919
+}
+qualified {
+  id: 0xd1740ca6
+  qualifier: CONST
+  qualified_type_id: 0x35978411
+}
+qualified {
+  id: 0xd1a6fed8
+  qualifier: CONST
+  qualified_type_id: 0x36dc4de8
+}
+qualified {
+  id: 0xd1d310e1
+  qualifier: CONST
+  qualified_type_id: 0x370bf50e
+}
+qualified {
+  id: 0xd1d44be6
+  qualifier: CONST
+  qualified_type_id: 0x37169913
+}
+qualified {
+  id: 0xd1d4f9bc
+  qualifier: CONST
+  qualified_type_id: 0x37145079
+}
+qualified {
+  id: 0xd1f5399e
+  qualifier: CONST
+  qualified_type_id: 0x379350f1
+}
+qualified {
+  id: 0xd20232fd
+  qualifier: CONST
+  qualified_type_id: 0x384f7d7c
+}
+qualified {
+  id: 0xd2116f4f
+  qualifier: CONST
+  qualified_type_id: 0x38020bb6
+}
+qualified {
+  id: 0xd21e73ad
+  qualifier: CONST
+  qualified_type_id: 0x383e783f
+}
+qualified {
+  id: 0xd224ef0f
+  qualifier: CONST
+  qualified_type_id: 0x38d40ab5
+}
+qualified {
+  id: 0xd2277c99
+  qualifier: CONST
+  qualified_type_id: 0x38da44ec
+}
+qualified {
+  id: 0xd228c484
+  qualifier: CONST
+  qualified_type_id: 0x38e4a499
+}
+qualified {
+  id: 0xd23047c9
+  qualifier: CONST
+  qualified_type_id: 0x3886a9ae
+}
+qualified {
+  id: 0xd240967a
+  qualifier: CONST
+  qualified_type_id: 0x3945ef63
+}
+qualified {
+  id: 0xd2525239
+  qualifier: CONST
+  qualified_type_id: 0x390efe6c
+}
+qualified {
+  id: 0xd265560b
+  qualifier: CONST
+  qualified_type_id: 0x39d2eea6
+}
+qualified {
+  id: 0xd276fcc4
+  qualifier: CONST
+  qualified_type_id: 0x399c459b
+}
+qualified {
+  id: 0xd2a9cce7
+  qualifier: CONST
+  qualified_type_id: 0x3ae08515
+}
+qualified {
+  id: 0xd2d7132a
+  qualifier: CONST
+  qualified_type_id: 0x3b1bfa21
+}
+qualified {
+  id: 0xd2e0ae36
+  qualifier: CONST
+  qualified_type_id: 0x3bc50e53
+}
+qualified {
+  id: 0xd2f770f8
+  qualifier: CONST
+  qualified_type_id: 0x3b9a7569
+}
+qualified {
+  id: 0xd327a107
+  qualifier: CONST
+  qualified_type_id: 0x3cd93294
+}
+qualified {
+  id: 0xd353d9c3
+  qualifier: CONST
+  qualified_type_id: 0x3d08d184
+}
+qualified {
+  id: 0xd37ad96d
+  qualifier: CONST
+  qualified_type_id: 0x3dacd33f
+}
+qualified {
+  id: 0xd395c0e4
+  qualifier: CONST
+  qualified_type_id: 0x3e10b518
+}
+qualified {
+  id: 0xd3b92883
+  qualifier: CONST
+  qualified_type_id: 0x3ea31487
+}
+qualified {
+  id: 0xd3bdcf5a
+  qualifier: CONST
+  qualified_type_id: 0x3eb08be2
+}
+qualified {
+  id: 0xd3c0c3fc
+  qualifier: CONST
+  qualified_type_id: 0x3f44b979
+}
+qualified {
+  id: 0xd3cebd1f
+  qualifier: CONST
+  qualified_type_id: 0x3f7d42f7
+}
+qualified {
+  id: 0xd3e2f5cd
+  qualifier: CONST
+  qualified_type_id: 0x3fcc61be
+}
+qualified {
+  id: 0xd40afc48
+  qualifier: CONST
+  qualified_type_id: 0x206c47aa
+}
+qualified {
+  id: 0xd42b96b9
+  qualifier: CONST
+  qualified_type_id: 0x20e9ec6e
+}
+qualified {
+  id: 0xd443b4e5
+  qualifier: CONST
+  qualified_type_id: 0x2149651e
+}
+qualified {
+  id: 0xd45a688b
+  qualifier: CONST
+  qualified_type_id: 0x212e14a6
+}
+qualified {
+  id: 0xd47c672a
+  qualifier: CONST
+  qualified_type_id: 0x21b62a20
+}
+qualified {
+  id: 0xd4846363
+  qualifier: CONST
+  qualified_type_id: 0x22563b05
+}
+qualified {
+  id: 0xd4959ce2
+  qualifier: CONST
+  qualified_type_id: 0x2211c501
+}
+qualified {
+  id: 0xd4d92d6b
+  qualifier: CONST
+  qualified_type_id: 0x23230326
+}
+qualified {
+  id: 0xd4e4f1ec
+  qualifier: CONST
+  qualified_type_id: 0x23d47139
+}
+qualified {
+  id: 0xd4fc0b98
+  qualifier: CONST
+  qualified_type_id: 0x23b798e8
+}
+qualified {
+  id: 0xd50238af
+  qualifier: CONST
+  qualified_type_id: 0x244f5434
+}
+qualified {
+  id: 0xd52ecd52
+  qualifier: CONST
+  qualified_type_id: 0x24fc83c0
+}
+qualified {
+  id: 0xd559247f
+  qualifier: CONST
+  qualified_type_id: 0x25232774
+}
+qualified {
+  id: 0xd5b4747a
+  qualifier: CONST
+  qualified_type_id: 0x26966763
+}
+qualified {
+  id: 0xd5f49594
+  qualifier: CONST
+  qualified_type_id: 0x2795e0da
+}
+qualified {
+  id: 0xd617aeb6
+  qualifier: CONST
+  qualified_type_id: 0x28190c52
+}
+qualified {
+  id: 0xd633a805
+  qualifier: CONST
+  qualified_type_id: 0x2889169c
+}
+qualified {
+  id: 0xd646f122
+  qualifier: CONST
+  qualified_type_id: 0x295c7202
+}
+qualified {
+  id: 0xd649efa3
+  qualifier: CONST
+  qualified_type_id: 0x29600806
+}
+qualified {
+  id: 0xd66432be
+  qualifier: CONST
+  qualified_type_id: 0x29d77c73
+}
+qualified {
+  id: 0xd665b7fb
+  qualifier: CONST
+  qualified_type_id: 0x29d16967
+}
+qualified {
+  id: 0xd6b384f7
+  qualifier: CONST
+  qualified_type_id: 0x2a89a555
+}
+qualified {
+  id: 0xd6ecf482
+  qualifier: CONST
+  qualified_type_id: 0x2bf46481
+}
+qualified {
+  id: 0xd6f8701c
+  qualifier: CONST
+  qualified_type_id: 0x2ba676fa
+}
+qualified {
+  id: 0xd7024b8e
+  qualifier: CONST
+  qualified_type_id: 0x2c4e98b1
+}
+qualified {
+  id: 0xd70c4142
+  qualifier: CONST
+  qualified_type_id: 0x2c76b380
+}
+qualified {
+  id: 0xd71266d3
+  qualifier: CONST
+  qualified_type_id: 0x2c0e2dc4
+}
+qualified {
+  id: 0xd71654e9
+  qualifier: CONST
+  qualified_type_id: 0x2c1ee52f
+}
+qualified {
+  id: 0xd717b4fc
+  qualifier: CONST
+  qualified_type_id: 0x2c196579
+}
+qualified {
+  id: 0xd71e60c1
+  qualifier: CONST
+  qualified_type_id: 0x2c3e358c
+}
+qualified {
+  id: 0xd7275cab
+  qualifier: CONST
+  qualified_type_id: 0x2cdac427
+}
+qualified {
+  id: 0xd74c8a57
+  qualifier: CONST
+  qualified_type_id: 0x2d759fd7
+}
+qualified {
+  id: 0xd752037b
+  qualifier: CONST
+  qualified_type_id: 0x2d0fbb66
+}
+qualified {
+  id: 0xd788e0b5
+  qualifier: CONST
+  qualified_type_id: 0x2e64345d
+}
+qualified {
+  id: 0xd79209e6
+  qualifier: CONST
+  qualified_type_id: 0x2e0f9112
+}
+qualified {
+  id: 0xd7e22f89
+  qualifier: CONST
+  qualified_type_id: 0x2fcf08af
+}
+qualified {
+  id: 0xd7ef6803
+  qualifier: CONST
+  qualified_type_id: 0x2ffa1686
+}
+qualified {
+  id: 0xd8097a3b
+  qualifier: CONST
+  qualified_type_id: 0x10625e67
+}
+qualified {
+  id: 0xd811902c
+  qualifier: CONST
+  qualified_type_id: 0x1001f639
+}
+qualified {
+  id: 0xd814565e
+  qualifier: CONST
+  qualified_type_id: 0x1016eff1
+}
+qualified {
+  id: 0xd8620976
+  qualifier: CONST
+  qualified_type_id: 0x11cf9350
+}
+qualified {
+  id: 0xd865d5b5
+  qualifier: CONST
+  qualified_type_id: 0x11d0e05d
+}
+qualified {
+  id: 0xd8857337
+  qualifier: CONST
+  qualified_type_id: 0x12527a54
+}
+qualified {
+  id: 0xd88f2091
+  qualifier: CONST
+  qualified_type_id: 0x127b34cf
+}
+qualified {
+  id: 0xd8dda8e5
+  qualifier: CONST
+  qualified_type_id: 0x1331151e
+}
+qualified {
+  id: 0xd8e2171e
+  qualifier: CONST
+  qualified_type_id: 0x13cfeaf0
+}
+qualified {
+  id: 0xd8e90eb3
+  qualifier: CONST
+  qualified_type_id: 0x13e38c46
+}
+qualified {
+  id: 0xd8fc84fa
+  qualifier: CONST
+  qualified_type_id: 0x13b5a562
+}
+qualified {
+  id: 0xd957a3fb
+  qualifier: CONST
+  qualified_type_id: 0x15193966
+}
+qualified {
+  id: 0xd96293fe
+  qualifier: CONST
+  qualified_type_id: 0x15cdf971
+}
+qualified {
+  id: 0xd96df1ac
+  qualifier: CONST
+  qualified_type_id: 0x15f07039
+}
+qualified {
+  id: 0xd96e0c40
+  qualifier: CONST
+  qualified_type_id: 0x15ff878a
+}
+qualified {
+  id: 0xd96f672b
+  qualifier: CONST
+  qualified_type_id: 0x15fa2a27
+}
+qualified {
+  id: 0xd979a65e
+  qualifier: CONST
+  qualified_type_id: 0x15a12ff1
+}
+qualified {
+  id: 0xd998c757
+  qualifier: CONST
+  qualified_type_id: 0x1624abd5
+}
+qualified {
+  id: 0xd99c0331
+  qualifier: CONST
+  qualified_type_id: 0x1637ba4d
+}
+qualified {
+  id: 0xda235d29
+  qualifier: CONST
+  qualified_type_id: 0x18cac22d
+}
+qualified {
+  id: 0xda23a084
+  qualifier: CONST
+  qualified_type_id: 0x18c93498
+}
+qualified {
+  id: 0xda3eb4ee
+  qualifier: CONST
+  qualified_type_id: 0x18bd6530
+}
+qualified {
+  id: 0xda465d46
+  qualifier: CONST
+  qualified_type_id: 0x195ec392
+}
+qualified {
+  id: 0xda526ce5
+  qualifier: CONST
+  qualified_type_id: 0x190e051e
+}
+qualified {
+  id: 0xda6429b7
+  qualifier: CONST
+  qualified_type_id: 0x19d71054
+}
+qualified {
+  id: 0xda7a9f79
+  qualifier: CONST
+  qualified_type_id: 0x19adcb6c
+}
+qualified {
+  id: 0xdad187e9
+  qualifier: CONST
+  qualified_type_id: 0x1b01a92d
+}
+qualified {
+  id: 0xdadd0b91
+  qualifier: CONST
+  qualified_type_id: 0x1b3398cc
+}
+qualified {
+  id: 0xdb0cb193
+  qualifier: CONST
+  qualified_type_id: 0x1c7570c6
+}
+qualified {
+  id: 0xdb0f5d6b
+  qualifier: CONST
+  qualified_type_id: 0x1c7ac324
+}
+qualified {
+  id: 0xdb10d97a
+  qualifier: CONST
+  qualified_type_id: 0x1c04d361
+}
+qualified {
+  id: 0xdb1e8234
+  qualifier: CONST
+  qualified_type_id: 0x1c3dbe5a
+}
+qualified {
+  id: 0xdb27893a
+  qualifier: CONST
+  qualified_type_id: 0x1cd99260
+}
+qualified {
+  id: 0xdb2cbc7a
+  qualifier: CONST
+  qualified_type_id: 0x1cf54760
+}
+qualified {
+  id: 0xdb338e68
+  qualifier: CONST
+  qualified_type_id: 0x1c898f28
+}
+qualified {
+  id: 0xdb55afca
+  qualifier: CONST
+  qualified_type_id: 0x1d1109a0
+}
+qualified {
+  id: 0xdb5e7b14
+  qualifier: CONST
+  qualified_type_id: 0x1d3e5adb
+}
+qualified {
+  id: 0xdb91d338
+  qualifier: CONST
+  qualified_type_id: 0x1e00fa69
+}
+qualified {
+  id: 0xdbe9486d
+  qualifier: CONST
+  qualified_type_id: 0x1fe2973f
+}
+qualified {
+  id: 0xdbea0c83
+  qualifier: CONST
+  qualified_type_id: 0x1fef8485
+}
+qualified {
+  id: 0xdbfd33c9
+  qualifier: CONST
+  qualified_type_id: 0x1fb379af
+}
+qualified {
+  id: 0xdc004df3
+  qualifier: CONST
+  qualified_type_id: 0x00468147
+}
+qualified {
+  id: 0xdc01bc80
+  qualifier: CONST
+  qualified_type_id: 0x00414489
+}
+qualified {
+  id: 0xdc06b593
+  qualifier: CONST
+  qualified_type_id: 0x005d60c6
+}
+qualified {
+  id: 0xdc34ef9e
+  qualifier: CONST
+  qualified_type_id: 0x009408f1
+}
+qualified {
+  id: 0xdc4ad5fb
+  qualifier: CONST
+  qualified_type_id: 0x016ce165
+}
+qualified {
+  id: 0xdc6576c2
+  qualifier: CONST
+  qualified_type_id: 0x01d26d83
+}
+qualified {
+  id: 0xdc7749d3
+  qualifier: CONST
+  qualified_type_id: 0x019a91c4
+}
+qualified {
+  id: 0xdc774c41
+  qualifier: CONST
+  qualified_type_id: 0x019a878e
+}
+qualified {
+  id: 0xdc9f0b9d
+  qualifier: CONST
+  qualified_type_id: 0x023b98ff
+}
+qualified {
+  id: 0xdca2b45d
+  qualifier: CONST
+  qualified_type_id: 0x02cd67fc
+}
+qualified {
+  id: 0xdca39257
+  qualifier: CONST
+  qualified_type_id: 0x02c9ffd5
+}
+qualified {
+  id: 0xdca42d92
+  qualifier: CONST
+  qualified_type_id: 0x02d700c1
+}
+qualified {
+  id: 0xdca7ae8d
+  qualifier: CONST
+  qualified_type_id: 0x02d90cbd
+}
+qualified {
+  id: 0xdcf4db5f
+  qualifier: CONST
+  qualified_type_id: 0x0394dbf7
+}
+qualified {
+  id: 0xdd011adf
+  qualifier: CONST
+  qualified_type_id: 0x0443ddf6
+}
+qualified {
+  id: 0xdd0ee806
+  qualifier: CONST
+  qualified_type_id: 0x047c1691
+}
+qualified {
+  id: 0xdd0fc7d7
+  qualifier: CONST
+  qualified_type_id: 0x0478a9d4
+}
+qualified {
+  id: 0xdd1caade
+  qualifier: CONST
+  qualified_type_id: 0x04351df2
+}
+qualified {
+  id: 0xdd31912d
+  qualifier: CONST
+  qualified_type_id: 0x0481f23c
+}
+qualified {
+  id: 0xdd35320a
+  qualifier: CONST
+  qualified_type_id: 0x04937ea2
+}
+qualified {
+  id: 0xdd391e61
+  qualifier: CONST
+  qualified_type_id: 0x04a3cf0f
+}
+qualified {
+  id: 0xdd3baaf8
+  qualifier: CONST
+  qualified_type_id: 0x04a91d68
+}
+qualified {
+  id: 0xdd3fc83b
+  qualifier: CONST
+  qualified_type_id: 0x04b89667
+}
+qualified {
+  id: 0xdd568ae3
+  qualifier: CONST
+  qualified_type_id: 0x051d9d04
+}
+qualified {
+  id: 0xdd6b619e
+  qualifier: CONST
+  qualified_type_id: 0x05ea30f1
+}
+qualified {
+  id: 0xdd9f6a40
+  qualifier: CONST
+  qualified_type_id: 0x063a1f8b
+}
+qualified {
+  id: 0xdda60846
+  qualifier: CONST
+  qualified_type_id: 0x06df9791
+}
+qualified {
+  id: 0xddcf6bc2
+  qualifier: CONST
+  qualified_type_id: 0x077a1980
+}
+qualified {
+  id: 0xddd5d8b6
+  qualifier: CONST
+  qualified_type_id: 0x0710d451
+}
+qualified {
+  id: 0xddfa054d
+  qualifier: CONST
+  qualified_type_id: 0x07afa3be
+}
+qualified {
+  id: 0xde3bc780
+  qualifier: CONST
+  qualified_type_id: 0x08a8a88b
+}
+qualified {
+  id: 0xde657ab4
+  qualifier: CONST
+  qualified_type_id: 0x09d25c5b
+}
+qualified {
+  id: 0xde680909
+  qualifier: CONST
+  qualified_type_id: 0x09e792ae
+}
+qualified {
+  id: 0xde802eab
+  qualifier: CONST
+  qualified_type_id: 0x0a470c27
+}
+qualified {
+  id: 0xdeb40206
+  qualifier: CONST
+  qualified_type_id: 0x0a97be91
+}
+qualified {
+  id: 0xdeba4131
+  qualifier: CONST
+  qualified_type_id: 0x0aaeb24e
+}
+qualified {
+  id: 0xdedece9f
+  qualifier: CONST
+  qualified_type_id: 0x0b3c8cf4
+}
+qualified {
+  id: 0xdefb074e
+  qualifier: CONST
+  qualified_type_id: 0x0bababb1
+}
+qualified {
+  id: 0xdf2c6df1
+  qualifier: CONST
+  qualified_type_id: 0x0cf6014f
+}
+qualified {
+  id: 0xdf392819
+  qualifier: CONST
+  qualified_type_id: 0x0ca316ec
+}
+qualified {
+  id: 0xdf4ae51c
+  qualifier: CONST
+  qualified_type_id: 0x0d6c22fa
+}
+qualified {
+  id: 0xdf6f33e0
+  qualifier: CONST
+  qualified_type_id: 0x0dfb7909
+}
+qualified {
+  id: 0xdf8a1059
+  qualifier: CONST
+  qualified_type_id: 0x0e6ff7ef
+}
+qualified {
+  id: 0xdf8e99b1
+  qualifier: CONST
+  qualified_type_id: 0x0e7dd04d
+}
+qualified {
+  id: 0xdf97876e
+  qualifier: CONST
+  qualified_type_id: 0x0e19ab30
+}
+qualified {
+  id: 0xdf9d7663
+  qualifier: CONST
+  qualified_type_id: 0x0e326f05
+}
+qualified {
+  id: 0xdfa3ccae
+  qualifier: CONST
+  qualified_type_id: 0x0ec88431
+}
+qualified {
+  id: 0xdfc4c49d
+  qualifier: CONST
+  qualified_type_id: 0x0f54a4fe
+}
+qualified {
+  id: 0xdfda898c
+  qualifier: CONST
+  qualified_type_id: 0x0f2d90b9
+}
+qualified {
+  id: 0xdfde7856
+  qualifier: CONST
+  qualified_type_id: 0x0f3e57d3
+}
+qualified {
+  id: 0xe03e1a37
+  qualifier: CONST
+  qualified_type_id: 0xf0bfde54
+}
+qualified {
+  id: 0xe048a234
+  qualifier: CONST
+  qualified_type_id: 0xf1653e58
+}
+qualified {
+  id: 0xe04dc232
+  qualifier: CONST
+  qualified_type_id: 0xf170be41
+}
+qualified {
+  id: 0xe0785a59
+  qualifier: CONST
+  qualified_type_id: 0xf1a6dfed
+}
+qualified {
+  id: 0xe08cc03f
+  qualifier: CONST
+  qualified_type_id: 0xf274b676
+}
+qualified {
+  id: 0xe095cad8
+  qualifier: CONST
+  qualified_type_id: 0xf2109de8
+}
+qualified {
+  id: 0xe0b568e1
+  qualifier: CONST
+  qualified_type_id: 0xf292150d
+}
+qualified {
+  id: 0xe0c16951
+  qualifier: CONST
+  qualified_type_id: 0xf34213cc
+}
+qualified {
+  id: 0xe0efbbf1
+  qualifier: CONST
+  qualified_type_id: 0xf3f9594e
+}
+qualified {
+  id: 0xe0fb9888
+  qualifier: CONST
+  qualified_type_id: 0xf3a9d4a8
+}
+qualified {
+  id: 0xe0fdae45
+  qualifier: CONST
+  qualified_type_id: 0xf3b10f9e
+}
+qualified {
+  id: 0xe1005ec3
+  qualifier: CONST
+  qualified_type_id: 0xf446cd86
+}
+qualified {
+  id: 0xe122bd33
+  qualifier: CONST
+  qualified_type_id: 0xf4cd4246
+}
+qualified {
+  id: 0xe1401038
+  qualifier: CONST
+  qualified_type_id: 0xf547f66b
+}
+qualified {
+  id: 0xe17049bf
+  qualifier: CONST
+  qualified_type_id: 0xf5869074
+}
+qualified {
+  id: 0xe17d662d
+  qualifier: CONST
+  qualified_type_id: 0xf5b22e3c
+}
+qualified {
+  id: 0xe1838b6b
+  qualifier: CONST
+  qualified_type_id: 0xf6499b27
+}
+qualified {
+  id: 0xe18a5c2e
+  qualifier: CONST
+  qualified_type_id: 0xf66ec631
+}
+qualified {
+  id: 0xe19aa462
+  qualifier: CONST
+  qualified_type_id: 0xf62d2702
+}
+qualified {
+  id: 0xe1c8dd66
+  qualifier: CONST
+  qualified_type_id: 0xf764c311
+}
+qualified {
+  id: 0xe1c969cb
+  qualifier: CONST
+  qualified_type_id: 0xf76211a5
+}
+qualified {
+  id: 0xe1d2a8dc
+  qualifier: CONST
+  qualified_type_id: 0xf70d15f8
+}
+qualified {
+  id: 0xe1f8f196
+  qualifier: CONST
+  qualified_type_id: 0xf7a470d0
+}
+qualified {
+  id: 0xe1fda32d
+  qualifier: CONST
+  qualified_type_id: 0xf7b13a3e
+}
+qualified {
+  id: 0xe2089ea9
+  qualifier: CONST
+  qualified_type_id: 0xf865cc2f
+}
+qualified {
+  id: 0xe28bb7e5
+  qualifier: CONST
+  qualified_type_id: 0xfa69691f
+}
+qualified {
+  id: 0xe2900fb4
+  qualifier: CONST
+  qualified_type_id: 0xfa078858
+}
+qualified {
+  id: 0xe29027da
+  qualifier: CONST
+  qualified_type_id: 0xfa0729e1
+}
+qualified {
+  id: 0xe298f8c9
+  qualifier: CONST
+  qualified_type_id: 0xfa2455af
+}
+qualified {
+  id: 0xe2cebd77
+  qualifier: CONST
+  qualified_type_id: 0xfb7d4357
+}
+qualified {
+  id: 0xe2f2d7b1
+  qualifier: CONST
+  qualified_type_id: 0xfb8ce84e
+}
+qualified {
+  id: 0xe3284b4b
+  qualifier: CONST
+  qualified_type_id: 0xfce69ba4
+}
+qualified {
+  id: 0xe32fa2b6
+  qualifier: CONST
+  qualified_type_id: 0xfcf93c50
+}
+qualified {
+  id: 0xe3420903
+  qualifier: CONST
+  qualified_type_id: 0xfd4f9284
+}
+qualified {
+  id: 0xe3685372
+  qualifier: CONST
+  qualified_type_id: 0xfde6fb43
+}
+qualified {
+  id: 0xe3791aa0
+  qualifier: CONST
+  qualified_type_id: 0xfda3dc09
+}
+qualified {
+  id: 0xe37940c7
+  qualifier: CONST
+  qualified_type_id: 0xfda2b595
+}
+qualified {
+  id: 0xe3e88141
+  qualifier: CONST
+  qualified_type_id: 0xffe5b38c
+}
+qualified {
+  id: 0xe3f71118
+  qualifier: CONST
+  qualified_type_id: 0xff9bf2eb
+}
+qualified {
+  id: 0xe4193887
+  qualifier: CONST
+  qualified_type_id: 0xe0235496
+}
+qualified {
+  id: 0xe4207e6d
+  qualifier: CONST
+  qualified_type_id: 0xe0c64f3d
+}
+qualified {
+  id: 0xe427f7d2
+  qualifier: CONST
+  qualified_type_id: 0xe0d869c2
+}
+qualified {
+  id: 0xe42d7586
+  qualifier: CONST
+  qualified_type_id: 0xe0f26092
+}
+qualified {
+  id: 0xe46d5624
+  qualifier: CONST
+  qualified_type_id: 0xe1f2ee1b
+}
+qualified {
+  id: 0xe48c46d9
+  qualifier: CONST
+  qualified_type_id: 0xe276adef
+}
+qualified {
+  id: 0xe4c72dc2
+  qualifier: CONST
+  qualified_type_id: 0xe35b0180
+}
+qualified {
+  id: 0xe4e67381
+  qualifier: CONST
+  qualified_type_id: 0xe3de788c
+}
+qualified {
+  id: 0xe4e7b7c8
+  qualifier: CONST
+  qualified_type_id: 0xe3d969a8
+}
+qualified {
+  id: 0xe503723d
+  qualifier: CONST
+  qualified_type_id: 0xe44a7e7f
+}
+qualified {
+  id: 0xe514cb9c
+  qualifier: CONST
+  qualified_type_id: 0xe41498f8
+}
+qualified {
+  id: 0xe52ccf08
+  qualifier: CONST
+  qualified_type_id: 0xe4f48aa8
+}
+qualified {
+  id: 0xe5345f8a
+  qualifier: CONST
+  qualified_type_id: 0xe496c8a2
+}
+qualified {
+  id: 0xe53622dc
+  qualifier: CONST
+  qualified_type_id: 0xe49f3dfa
+}
+qualified {
+  id: 0xe53de437
+  qualifier: CONST
+  qualified_type_id: 0xe4b02656
+}
+qualified {
+  id: 0xe54474b6
+  qualifier: CONST
+  qualified_type_id: 0xe5566452
+}
+qualified {
+  id: 0xe5681f7a
+  qualifier: CONST
+  qualified_type_id: 0xe5e7cb60
+}
+qualified {
+  id: 0xe5a272af
+  qualifier: CONST
+  qualified_type_id: 0xe6ce7c37
+}
+qualified {
+  id: 0xe5ac437d
+  qualifier: CONST
+  qualified_type_id: 0xe6f6bb7d
+}
+qualified {
+  id: 0xe5d16cd3
+  qualifier: CONST
+  qualified_type_id: 0xe70205c6
+}
+qualified {
+  id: 0xe5d43714
+  qualifier: CONST
+  qualified_type_id: 0xe7176adb
+}
+qualified {
+  id: 0xe61b174c
+  qualifier: CONST
+  qualified_type_id: 0xe82bebbb
+}
+qualified {
+  id: 0xe644a39b
+  qualifier: CONST
+  qualified_type_id: 0xe95538e7
+}
+qualified {
+  id: 0xe6763795
+  qualifier: CONST
+  qualified_type_id: 0xe99f68dc
+}
+qualified {
+  id: 0xe6863fdc
+  qualifier: CONST
+  qualified_type_id: 0xea5f49fa
+}
+qualified {
+  id: 0xe6b1c981
+  qualifier: CONST
+  qualified_type_id: 0xea80908f
+}
+qualified {
+  id: 0xe6f56304
+  qualifier: CONST
+  qualified_type_id: 0xeb923a9b
+}
+qualified {
+  id: 0xe6f8f5f5
+  qualifier: CONST
+  qualified_type_id: 0xeba4615d
+}
+qualified {
+  id: 0xe6ffbec8
+  qualifier: CONST
+  qualified_type_id: 0xebb94dab
+}
+qualified {
+  id: 0xe734726a
+  qualifier: CONST
+  qualified_type_id: 0xec967f20
+}
+qualified {
+  id: 0xe73cb391
+  qualifier: CONST
+  qualified_type_id: 0xecb578cc
+}
+qualified {
+  id: 0xe74bb71b
+  qualifier: CONST
+  qualified_type_id: 0xed696ae5
+}
+qualified {
+  id: 0xe7606559
+  qualifier: CONST
+  qualified_type_id: 0xedc623ec
+}
+qualified {
+  id: 0xe7643c7c
+  qualifier: CONST
+  qualified_type_id: 0xedd7477a
+}
+qualified {
+  id: 0xe770f9ca
+  qualifier: CONST
+  qualified_type_id: 0xed8451a2
+}
+qualified {
+  id: 0xe7767d72
+  qualifier: CONST
+  qualified_type_id: 0xed9e4341
+}
+qualified {
+  id: 0xe781c782
+  qualifier: CONST
+  qualified_type_id: 0xee40a882
+}
+qualified {
+  id: 0xe7a88922
+  qualifier: CONST
+  qualified_type_id: 0xeee59200
+}
+qualified {
+  id: 0xe7ad089b
+  qualifier: CONST
+  qualified_type_id: 0xeef394e6
+}
+qualified {
+  id: 0xe7bd53e7
+  qualifier: CONST
+  qualified_type_id: 0xeeb2f917
+}
+qualified {
+  id: 0xe7d52a38
+  qualifier: CONST
+  qualified_type_id: 0xef131e69
+}
+qualified {
+  id: 0xe7dc3f7b
+  qualifier: CONST
+  qualified_type_id: 0xef374b64
+}
+qualified {
+  id: 0xe7f1cafa
+  qualifier: CONST
+  qualified_type_id: 0xef809d63
+}
+qualified {
+  id: 0xe800be4e
+  qualifier: CONST
+  qualified_type_id: 0xd0454fb3
+}
+qualified {
+  id: 0xe8239f98
+  qualifier: CONST
+  qualified_type_id: 0xd0c9c8ea
+}
+qualified {
+  id: 0xe88ef57f
+  qualifier: CONST
+  qualified_type_id: 0xd27c6376
+}
+qualified {
+  id: 0xe8946e5d
+  qualifier: CONST
+  qualified_type_id: 0xd2160ffc
+}
+qualified {
+  id: 0xe8a8fed4
+  qualifier: CONST
+  qualified_type_id: 0xd2e44dd9
+}
+qualified {
+  id: 0xe8c51ccb
+  qualifier: CONST
+  qualified_type_id: 0xd353c5a7
+}
+qualified {
+  id: 0xe8c6ccfe
+  qualifier: CONST
+  qualified_type_id: 0xd35c8571
+}
+qualified {
+  id: 0xe8ce7a11
+  qualifier: CONST
+  qualified_type_id: 0xd37e5ece
+}
+qualified {
+  id: 0xe8dc53ed
+  qualifier: CONST
+  qualified_type_id: 0xd336f93c
+}
+qualified {
+  id: 0xe8e3ede4
+  qualifier: CONST
+  qualified_type_id: 0xd3c80119
+}
+qualified {
+  id: 0xe8ffd957
+  qualifier: CONST
+  qualified_type_id: 0xd3b8d3d4
+}
+qualified {
+  id: 0xe9164f81
+  qualifier: CONST
+  qualified_type_id: 0xd41e888f
+}
+qualified {
+  id: 0xe9273684
+  qualifier: CONST
+  qualified_type_id: 0xd4db6c9b
+}
+qualified {
+  id: 0xe92afccd
+  qualifier: CONST
+  qualified_type_id: 0xd4ec45bf
+}
+qualified {
+  id: 0xe966346e
+  qualifier: CONST
+  qualified_type_id: 0xd5df6730
+}
+qualified {
+  id: 0xe96b6185
+  qualifier: CONST
+  qualified_type_id: 0xd5ea309d
+}
+qualified {
+  id: 0xe9878cb9
+  qualifier: CONST
+  qualified_type_id: 0xd659846e
+}
+qualified {
+  id: 0xe9af5892
+  qualifier: CONST
+  qualified_type_id: 0xd6fad4c2
+}
+qualified {
+  id: 0xe9bc54d7
+  qualifier: CONST
+  qualified_type_id: 0xd6b6e5d5
+}
+qualified {
+  id: 0xe9dace6e
+  qualifier: CONST
+  qualified_type_id: 0xd72c8f32
+}
+qualified {
+  id: 0xea41e62a
+  qualifier: CONST
+  qualified_type_id: 0xd9402e22
+}
+qualified {
+  id: 0xea647a11
+  qualifier: CONST
+  qualified_type_id: 0xd9d65ece
+}
+qualified {
+  id: 0xea7f94f9
+  qualifier: CONST
+  qualified_type_id: 0xd9b9e56c
+}
+qualified {
+  id: 0xea94bed9
+  qualifier: CONST
+  qualified_type_id: 0xda154dec
+}
+qualified {
+  id: 0xeaa02cd0
+  qualifier: CONST
+  qualified_type_id: 0xdac705ca
+}
+qualified {
+  id: 0xeabee0bd
+  qualifier: CONST
+  qualified_type_id: 0xdabc347f
+}
+qualified {
+  id: 0xeae74d43
+  qualifier: CONST
+  qualified_type_id: 0xdbda8385
+}
+qualified {
+  id: 0xeafec3a6
+  qualifier: CONST
+  qualified_type_id: 0xdbbcb810
+}
+qualified {
+  id: 0xeb132dc2
+  qualifier: CONST
+  qualified_type_id: 0xdc0b0182
+}
+qualified {
+  id: 0xeb2226c1
+  qualifier: CONST
+  qualified_type_id: 0xdccf2d8f
+}
+qualified {
+  id: 0xeb4f3c58
+  qualifier: CONST
+  qualified_type_id: 0xdd7b47eb
+}
+qualified {
+  id: 0xeb59cb8e
+  qualifier: CONST
+  qualified_type_id: 0xdd2098b1
+}
+qualified {
+  id: 0xeb5dea97
+  qualifier: CONST
+  qualified_type_id: 0xdd301cd7
+}
+qualified {
+  id: 0xeb61c965
+  qualifier: CONST
+  qualified_type_id: 0xddc0931f
+}
+qualified {
+  id: 0xeb73e9c6
+  qualifier: CONST
+  qualified_type_id: 0xdd881191
+}
+qualified {
+  id: 0xeba4823c
+  qualifier: CONST
+  qualified_type_id: 0xded5be7b
+}
+qualified {
+  id: 0xebc0e0d9
+  qualifier: CONST
+  qualified_type_id: 0xdf4435ed
+}
+qualified {
+  id: 0xebcda24f
+  qualifier: CONST
+  qualified_type_id: 0xdf713fb7
+}
+qualified {
+  id: 0xebd0e7ee
+  qualifier: CONST
+  qualified_type_id: 0xdf042930
+}
+qualified {
+  id: 0xebd4c806
+  qualifier: CONST
+  qualified_type_id: 0xdf149691
+}
+qualified {
+  id: 0xebd6f8cf
+  qualifier: CONST
+  qualified_type_id: 0xdf1c55b5
+}
+qualified {
+  id: 0xebe3cbc6
+  qualifier: CONST
+  qualified_type_id: 0xdfc89992
+}
+qualified {
+  id: 0xebfa6c7c
+  qualifier: CONST
+  qualified_type_id: 0xdfae077a
+}
+qualified {
+  id: 0xebff9a8c
+  qualifier: CONST
+  qualified_type_id: 0xdfb9dcb9
+}
+qualified {
+  id: 0xec0943ba
+  qualifier: CONST
+  qualified_type_id: 0xc062b862
+}
+qualified {
+  id: 0xec097d1b
+  qualifier: CONST
+  qualified_type_id: 0xc06242e6
+}
+qualified {
+  id: 0xec4abfbd
+  qualifier: CONST
+  qualified_type_id: 0xc16d487e
+}
+qualified {
+  id: 0xec56e233
+  qualifier: CONST
+  qualified_type_id: 0xc11c3e45
+}
+qualified {
+  id: 0xec5bb4b1
+  qualifier: CONST
+  qualified_type_id: 0xc129644e
+}
+qualified {
+  id: 0xec66e818
+  qualifier: CONST
+  qualified_type_id: 0xc1dc16e9
+}
+qualified {
+  id: 0xec8160d9
+  qualifier: CONST
+  qualified_type_id: 0xc24235ee
+}
+qualified {
+  id: 0xec97ce04
+  qualifier: CONST
+  qualified_type_id: 0xc2188e98
+}
+qualified {
+  id: 0xeca55d89
+  qualifier: CONST
+  qualified_type_id: 0xc2d2c0ac
+}
+qualified {
+  id: 0xeccba377
+  qualifier: CONST
+  qualified_type_id: 0xc3693b57
+}
+qualified {
+  id: 0xecf415e4
+  qualifier: CONST
+  qualified_type_id: 0xc397e11a
+}
+qualified {
+  id: 0xecfbbe11
+  qualifier: CONST
+  qualified_type_id: 0xc3a94ecd
+}
+qualified {
+  id: 0xed09ed00
+  qualifier: CONST
+  qualified_type_id: 0xc460028a
+}
+qualified {
+  id: 0xed32e285
+  qualifier: CONST
+  qualified_type_id: 0xc48c3c9d
+}
+qualified {
+  id: 0xed522c73
+  qualifier: CONST
+  qualified_type_id: 0xc50f0744
+}
+qualified {
+  id: 0xed640f62
+  qualifier: CONST
+  qualified_type_id: 0xc5d78b03
+}
+qualified {
+  id: 0xed6c3fa4
+  qualifier: CONST
+  qualified_type_id: 0xc5f74818
+}
+qualified {
+  id: 0xed856aa8
+  qualifier: CONST
+  qualified_type_id: 0xc6521c28
+}
+qualified {
+  id: 0xed94bd83
+  qualifier: CONST
+  qualified_type_id: 0xc6154084
+}
+qualified {
+  id: 0xedb483bf
+  qualifier: CONST
+  qualified_type_id: 0xc695b875
+}
+qualified {
+  id: 0xedb84b9b
+  qualifier: CONST
+  qualified_type_id: 0xc6a698e7
+}
+qualified {
+  id: 0xedc62e5c
+  qualifier: CONST
+  qualified_type_id: 0xc75f0ff8
+}
+qualified {
+  id: 0xedcd343f
+  qualifier: CONST
+  qualified_type_id: 0xc7736674
+}
+qualified {
+  id: 0xedf52a83
+  qualifier: CONST
+  qualified_type_id: 0xc7931c84
+}
+qualified {
+  id: 0xee1ba2e7
+  qualifier: CONST
+  qualified_type_id: 0xc8293d17
+}
+qualified {
+  id: 0xee53e764
+  qualifier: CONST
+  qualified_type_id: 0xc9082b19
+}
+qualified {
+  id: 0xee594edc
+  qualifier: CONST
+  qualified_type_id: 0xc9228df8
+}
+qualified {
+  id: 0xee5e6dfc
+  qualifier: CONST
+  qualified_type_id: 0xc93e017b
+}
+qualified {
+  id: 0xee5ebea5
+  qualifier: CONST
+  qualified_type_id: 0xc93d4c1c
+}
+qualified {
+  id: 0xee7be6ea
+  qualifier: CONST
+  qualified_type_id: 0xc9a82d21
+}
+qualified {
+  id: 0xee86a368
+  qualifier: CONST
+  qualified_type_id: 0xca5d3b28
+}
+qualified {
+  id: 0xee9ee560
+  qualifier: CONST
+  qualified_type_id: 0xca3c230a
+}
+qualified {
+  id: 0xeeaf2857
+  qualifier: CONST
+  qualified_type_id: 0xcafb17d7
+}
+qualified {
+  id: 0xeebb2bcf
+  qualifier: CONST
+  qualified_type_id: 0xcaab19b4
+}
+qualified {
+  id: 0xeee127c5
+  qualifier: CONST
+  qualified_type_id: 0xcbc3299e
+}
+qualified {
+  id: 0xeeea79ca
+  qualifier: CONST
+  qualified_type_id: 0xcbee51a2
+}
+qualified {
+  id: 0xef175c64
+  qualifier: CONST
+  qualified_type_id: 0xcc1ac719
+}
+qualified {
+  id: 0xef254f1b
+  qualifier: CONST
+  qualified_type_id: 0xccd28ae5
+}
+qualified {
+  id: 0xef26dea0
+  qualifier: CONST
+  qualified_type_id: 0xccdccc08
+}
+qualified {
+  id: 0xef287b65
+  qualifier: CONST
+  qualified_type_id: 0xcce65b1e
+}
+qualified {
+  id: 0xef3035b0
+  qualifier: CONST
+  qualified_type_id: 0xcc87604a
+}
+qualified {
+  id: 0xef4c2c8d
+  qualifier: CONST
+  qualified_type_id: 0xcd7704bf
+}
+qualified {
+  id: 0xefcb4746
+  qualifier: CONST
+  qualified_type_id: 0xcf6aab90
+}
+qualified {
+  id: 0xeff3c532
+  qualifier: CONST
+  qualified_type_id: 0xcf88a243
+}
+qualified {
+  id: 0xf000e2e0
+  qualifier: CONST
+  qualified_type_id: 0xb0443d0a
+}
+qualified {
+  id: 0xf005ac66
+  qualifier: CONST
+  qualified_type_id: 0xb0510713
+}
+qualified {
+  id: 0xf013a996
+  qualifier: CONST
+  qualified_type_id: 0xb00910d2
+}
+qualified {
+  id: 0xf02f20a3
+  qualifier: CONST
+  qualified_type_id: 0xb0fb3405
+}
+qualified {
+  id: 0xf07d78f3
+  qualifier: CONST
+  qualified_type_id: 0xb1b25547
+}
+qualified {
+  id: 0xf0f451c7
+  qualifier: CONST
+  qualified_type_id: 0xb396f194
+}
+qualified {
+  id: 0xf101041f
+  qualifier: CONST
+  qualified_type_id: 0xb443a6f5
+}
+qualified {
+  id: 0xf10425d9
+  qualifier: CONST
+  qualified_type_id: 0xb45721ec
+}
+qualified {
+  id: 0xf105ae9f
+  qualifier: CONST
+  qualified_type_id: 0xb4510cf7
+}
+qualified {
+  id: 0xf10b9ea7
+  qualifier: CONST
+  qualified_type_id: 0xb469cc14
+}
+qualified {
+  id: 0xf16d39f2
+  qualifier: CONST
+  qualified_type_id: 0xb5f35143
+}
+qualified {
+  id: 0xf174b653
+  qualifier: CONST
+  qualified_type_id: 0xb5956fc5
+}
+qualified {
+  id: 0xf186b679
+  qualifier: CONST
+  qualified_type_id: 0xb65d6f6d
+}
+qualified {
+  id: 0xf1938ae0
+  qualifier: CONST
+  qualified_type_id: 0xb6099d09
+}
+qualified {
+  id: 0xf1aebeb7
+  qualifier: CONST
+  qualified_type_id: 0xb6fd4c56
+}
+qualified {
+  id: 0xf1ca4d88
+  qualifier: CONST
+  qualified_type_id: 0xb76e80ab
+}
+qualified {
+  id: 0xf1ddb61f
+  qualifier: CONST
+  qualified_type_id: 0xb7316ef5
+}
+qualified {
+  id: 0xf226f70c
+  qualifier: CONST
+  qualified_type_id: 0xb8dc6abb
+}
+qualified {
+  id: 0xf274bdf9
+  qualifier: CONST
+  qualified_type_id: 0xb995416c
+}
+qualified {
+  id: 0xf2dcbe16
+  qualifier: CONST
+  qualified_type_id: 0xbb354ed2
+}
+qualified {
+  id: 0xf2f07175
+  qualifier: CONST
+  qualified_type_id: 0xbb86735c
+}
+qualified {
+  id: 0xf34f7202
+  qualifier: CONST
+  qualified_type_id: 0xbd7a7e80
+}
+qualified {
+  id: 0xf39072f0
+  qualifier: CONST
+  qualified_type_id: 0xbe067d4b
+}
+qualified {
+  id: 0xf3e17637
+  qualifier: CONST
+  qualified_type_id: 0xbfc26e57
+}
+qualified {
+  id: 0xf3fcc6aa
+  qualifier: CONST
+  qualified_type_id: 0xbfb4ac23
+}
+qualified {
+  id: 0xf3fdeccf
+  qualifier: CONST
+  qualified_type_id: 0xbfb005b6
+}
+qualified {
+  id: 0xf411c6cf
+  qualifier: CONST
+  qualified_type_id: 0xa000adb4
+}
+qualified {
+  id: 0xf42bd2bb
+  qualifier: CONST
+  qualified_type_id: 0xa0e8fc65
+}
+qualified {
+  id: 0xf43ed6df
+  qualifier: CONST
+  qualified_type_id: 0xa0bcedf5
+}
+qualified {
+  id: 0xf4a306a1
+  qualifier: CONST
+  qualified_type_id: 0xa2cbac0e
+}
+qualified {
+  id: 0xf4d7cace
+  qualifier: CONST
+  qualified_type_id: 0xa3189db3
+}
+qualified {
+  id: 0xf4e28fb7
+  qualifier: CONST
+  qualified_type_id: 0xa3cd8855
+}
+qualified {
+  id: 0xf51fccb0
+  qualifier: CONST
+  qualified_type_id: 0xa4388448
+}
+qualified {
+  id: 0xf5228665
+  qualifier: CONST
+  qualified_type_id: 0xa4cdaf1d
+}
+qualified {
+  id: 0xf5256b58
+  qualifier: CONST
+  qualified_type_id: 0xa4d21be9
+}
+qualified {
+  id: 0xf52b12b6
+  qualifier: CONST
+  qualified_type_id: 0xa4ebfc51
+}
+qualified {
+  id: 0xf54c5154
+  qualifier: CONST
+  qualified_type_id: 0xa576f3da
+}
+qualified {
+  id: 0xf5714831
+  qualifier: CONST
+  qualified_type_id: 0xa582964d
+}
+qualified {
+  id: 0xf588793b
+  qualifier: CONST
+  qualified_type_id: 0xa6665265
+}
+qualified {
+  id: 0xf58a7eed
+  qualifier: CONST
+  qualified_type_id: 0xa66e4d3d
+}
+qualified {
+  id: 0xf5901b02
+  qualifier: CONST
+  qualified_type_id: 0xa607da82
+}
+qualified {
+  id: 0xf5957414
+  qualifier: CONST
+  qualified_type_id: 0xa61266da
+}
+qualified {
+  id: 0xf597a9ce
+  qualifier: CONST
+  qualified_type_id: 0xa61911b2
+}
+qualified {
+  id: 0xf5a710cd
+  qualifier: CONST
+  qualified_type_id: 0xa6dbf5bd
+}
+qualified {
+  id: 0xf5b0198f
+  qualifier: CONST
+  qualified_type_id: 0xa687d0b4
+}
+qualified {
+  id: 0xf5b28b19
+  qualifier: CONST
+  qualified_type_id: 0xa68d9aed
+}
+qualified {
+  id: 0xf5d07691
+  qualifier: CONST
+  qualified_type_id: 0xa7066cce
+}
+qualified {
+  id: 0xf5de7750
+  qualifier: CONST
+  qualified_type_id: 0xa73e6bcb
+}
+qualified {
+  id: 0xf5e27faf
+  qualifier: CONST
+  qualified_type_id: 0xa7ce4837
+}
+qualified {
+  id: 0xf5f7a771
+  qualifier: CONST
+  qualified_type_id: 0xa7992b4c
+}
+qualified {
+  id: 0xf60e3859
+  qualifier: CONST
+  qualified_type_id: 0xa87f57ec
+}
+qualified {
+  id: 0xf620b983
+  qualifier: CONST
+  qualified_type_id: 0xa8c55087
+}
+qualified {
+  id: 0xf6275ae5
+  qualifier: CONST
+  qualified_type_id: 0xa8dadd1d
+}
+qualified {
+  id: 0xf64ce7d1
+  qualifier: CONST
+  qualified_type_id: 0xa97429ce
+}
+qualified {
+  id: 0xf652a731
+  qualifier: CONST
+  qualified_type_id: 0xa90d2a4f
+}
+qualified {
+  id: 0xf6a40fd8
+  qualifier: CONST
+  qualified_type_id: 0xaad789ea
+}
+qualified {
+  id: 0xf6fdb57c
+  qualifier: CONST
+  qualified_type_id: 0xabb1637b
+}
+qualified {
+  id: 0xf73ac3a4
+  qualifier: CONST
+  qualified_type_id: 0xacacb81b
+}
+qualified {
+  id: 0xf74a8956
+  qualifier: CONST
+  qualified_type_id: 0xad6d93d1
+}
+qualified {
+  id: 0xf74e3bdc
+  qualifier: CONST
+  qualified_type_id: 0xad7f59fb
+}
+qualified {
+  id: 0xf761a0ed
+  qualifier: CONST
+  qualified_type_id: 0xadc1353c
+}
+qualified {
+  id: 0xf7641e8f
+  qualifier: CONST
+  qualified_type_id: 0xadd7ccb6
+}
+qualified {
+  id: 0xf778a7ba
+  qualifier: CONST
+  qualified_type_id: 0xada52861
+}
+qualified {
+  id: 0xf781e9a2
+  qualifier: CONST
+  qualified_type_id: 0xae401000
+}
+qualified {
+  id: 0xf7842e25
+  qualifier: CONST
+  qualified_type_id: 0xae570e1f
+}
+qualified {
+  id: 0xf784797b
+  qualifier: CONST
+  qualified_type_id: 0xae565365
+}
+qualified {
+  id: 0xf7874bee
+  qualifier: CONST
+  qualified_type_id: 0xae5a9933
+}
+qualified {
+  id: 0xf824f490
+  qualifier: CONST
+  qualified_type_id: 0x90d464ca
+}
+qualified {
+  id: 0xf8428255
+  qualifier: CONST
+  qualified_type_id: 0x914dbfdc
+}
+qualified {
+  id: 0xf859a4a2
+  qualifier: CONST
+  qualified_type_id: 0x91212402
+}
+qualified {
+  id: 0xf8606d4e
+  qualifier: CONST
+  qualified_type_id: 0x91c603b0
+}
+qualified {
+  id: 0xf8612850
+  qualifier: CONST
+  qualified_type_id: 0x91c317c8
+}
+qualified {
+  id: 0xf86d9f44
+  qualifier: CONST
+  qualified_type_id: 0x91f1cb99
+}
+qualified {
+  id: 0xf87c8433
+  qualifier: CONST
+  qualified_type_id: 0x91b5a647
+}
+qualified {
+  id: 0xf87f5460
+  qualifier: CONST
+  qualified_type_id: 0x91bae70a
+}
+qualified {
+  id: 0xf8992146
+  qualifier: CONST
+  qualified_type_id: 0x92233392
+}
+qualified {
+  id: 0xf8ad4c28
+  qualifier: CONST
+  qualified_type_id: 0x92f28628
+}
+qualified {
+  id: 0xf8b6c42b
+  qualifier: CONST
+  qualified_type_id: 0x929ca626
+}
+qualified {
+  id: 0xf8c1a8ce
+  qualifier: CONST
+  qualified_type_id: 0x934115b2
+}
+qualified {
+  id: 0xf8ebb6bc
+  qualifier: CONST
+  qualified_type_id: 0x93e96c7b
+}
+qualified {
+  id: 0xf8f87438
+  qualifier: CONST
+  qualified_type_id: 0x93a6666a
+}
+qualified {
+  id: 0xf9104a06
+  qualifier: CONST
+  qualified_type_id: 0x94069e92
+}
+qualified {
+  id: 0xf9397a55
+  qualifier: CONST
+  qualified_type_id: 0x94a25fdd
+}
+qualified {
+  id: 0xf93b2442
+  qualifier: CONST
+  qualified_type_id: 0x94ab2780
+}
+qualified {
+  id: 0xf94439ee
+  qualifier: CONST
+  qualified_type_id: 0x95575131
+}
+qualified {
+  id: 0xf958c0c2
+  qualifier: CONST
+  qualified_type_id: 0x9524b580
+}
+qualified {
+  id: 0xf9646cbc
+  qualifier: CONST
+  qualified_type_id: 0x95d60479
+}
+qualified {
+  id: 0xf9789a11
+  qualifier: CONST
+  qualified_type_id: 0x95a5decf
+}
+qualified {
+  id: 0xf9d1a7a0
+  qualifier: CONST
+  qualified_type_id: 0x97012809
+}
+qualified {
+  id: 0xf9f20e3e
+  qualifier: CONST
+  qualified_type_id: 0x978f8e70
+}
+qualified {
+  id: 0xfa08646d
+  qualifier: CONST
+  qualified_type_id: 0x9866273d
+}
+qualified {
+  id: 0xfa0fa371
+  qualifier: CONST
+  qualified_type_id: 0x98793b4d
+}
+qualified {
+  id: 0xfa0fceaf
+  qualifier: CONST
+  qualified_type_id: 0x98788c37
+}
+qualified {
+  id: 0xfa29264d
+  qualifier: CONST
+  qualified_type_id: 0x98e32fbd
+}
+qualified {
+  id: 0xfa455c97
+  qualifier: CONST
+  qualified_type_id: 0x9952c4d4
+}
+qualified {
+  id: 0xfa4ea2a2
+  qualifier: CONST
+  qualified_type_id: 0x997d3c01
+}
+qualified {
+  id: 0xfa5e4ecd
+  qualifier: CONST
+  qualified_type_id: 0x993e8dbd
+}
+qualified {
+  id: 0xfa774e1b
+  qualifier: CONST
+  qualified_type_id: 0x999a8ee6
+}
+qualified {
+  id: 0xfa8ddf2a
+  qualifier: CONST
+  qualified_type_id: 0x9a70ca20
+}
+qualified {
+  id: 0xfa981bae
+  qualifier: CONST
+  qualified_type_id: 0x9a27d833
+}
+qualified {
+  id: 0xfad6e683
+  qualifier: CONST
+  qualified_type_id: 0x9b1c2c87
+}
+qualified {
+  id: 0xfb0e7776
+  qualifier: CONST
+  qualified_type_id: 0x9c7e6b50
+}
+qualified {
+  id: 0xfb100ca9
+  qualifier: CONST
+  qualified_type_id: 0x9c07842f
+}
+qualified {
+  id: 0xfb1e8da7
+  qualifier: CONST
+  qualified_type_id: 0x9c3d8016
+}
+qualified {
+  id: 0xfb2a9153
+  qualifier: CONST
+  qualified_type_id: 0x9cedf3c4
+}
+qualified {
+  id: 0xfb4dc602
+  qualifier: CONST
+  qualified_type_id: 0x9d70ae83
+}
+qualified {
+  id: 0xfb4fcd23
+  qualifier: CONST
+  qualified_type_id: 0x9d788207
+}
+qualified {
+  id: 0xfb6adb3d
+  qualifier: CONST
+  qualified_type_id: 0x9decda7d
+}
+qualified {
+  id: 0xfb72f99a
+  qualifier: CONST
+  qualified_type_id: 0x9d8c50e2
+}
+qualified {
+  id: 0xfbc31a7e
+  qualifier: CONST
+  qualified_type_id: 0x9f4bdf73
+}
+qualified {
+  id: 0xfbc4a969
+  qualifier: CONST
+  qualified_type_id: 0x9f55132d
+}
+qualified {
+  id: 0xfbdf50fc
+  qualifier: CONST
+  qualified_type_id: 0x9f3af57a
+}
+qualified {
+  id: 0xfbf6cea8
+  qualifier: CONST
+  qualified_type_id: 0x9f9c8c2b
+}
+qualified {
+  id: 0xfc216dbe
+  qualifier: CONST
+  qualified_type_id: 0x80c20070
+}
+qualified {
+  id: 0xfc53e789
+  qualifier: CONST
+  qualified_type_id: 0x810828ae
+}
+qualified {
+  id: 0xfc6ce31e
+  qualifier: CONST
+  qualified_type_id: 0x81f43af3
+}
+qualified {
+  id: 0xfc7f3042
+  qualifier: CONST
+  qualified_type_id: 0x81bb7781
+}
+qualified {
+  id: 0xfcaba10a
+  qualifier: CONST
+  qualified_type_id: 0x82e932a0
+}
+qualified {
+  id: 0xfcbc6072
+  qualifier: CONST
+  qualified_type_id: 0x82b63741
+}
+qualified {
+  id: 0xfcbf3afc
+  qualifier: CONST
+  qualified_type_id: 0x82bb5d79
+}
+qualified {
+  id: 0xfcc23ab7
+  qualifier: CONST
+  qualified_type_id: 0x834f5c57
+}
+qualified {
+  id: 0xfd03f127
+  qualifier: CONST
+  qualified_type_id: 0x84487217
+}
+qualified {
+  id: 0xfd07247d
+  qualifier: CONST
+  qualified_type_id: 0x845b277e
+}
+qualified {
+  id: 0xfd0d0c6a
+  qualifier: CONST
+  qualified_type_id: 0x84738720
+}
+qualified {
+  id: 0xfd0ec7b6
+  qualifier: CONST
+  qualified_type_id: 0x847ca850
+}
+qualified {
+  id: 0xfd2a08ff
+  qualifier: CONST
+  qualified_type_id: 0x84ef9574
+}
+qualified {
+  id: 0xfd2e39d2
+  qualifier: CONST
+  qualified_type_id: 0x84ff51c0
+}
+qualified {
+  id: 0xfd3093eb
+  qualifier: CONST
+  qualified_type_id: 0x8485f927
+}
+qualified {
+  id: 0xfd9f2624
+  qualifier: CONST
+  qualified_type_id: 0x863b2e1a
+}
+qualified {
+  id: 0xfda07293
+  qualifier: CONST
+  qualified_type_id: 0x86c67cc5
+}
+qualified {
+  id: 0xfddcc595
+  qualifier: CONST
+  qualified_type_id: 0x8734a0df
+}
+qualified {
+  id: 0xfdfc5d34
+  qualifier: CONST
+  qualified_type_id: 0x87b6c259
+}
+qualified {
+  id: 0xfe208923
+  qualifier: CONST
+  qualified_type_id: 0x88c59206
+}
+qualified {
+  id: 0xfe3677b2
+  qualifier: CONST
+  qualified_type_id: 0x889e6843
+}
+qualified {
+  id: 0xfe3c5fa3
+  qualifier: CONST
+  qualified_type_id: 0x88b6c805
+}
+qualified {
+  id: 0xfe509802
+  qualifier: CONST
+  qualified_type_id: 0x8905d682
+}
+qualified {
+  id: 0xfe606cdb
+  qualifier: CONST
+  qualified_type_id: 0x89c605e5
+}
+qualified {
+  id: 0xfe9b2205
+  qualifier: CONST
+  qualified_type_id: 0x8a2b3e9d
+}
+qualified {
+  id: 0xfebd89f4
+  qualifier: CONST
+  qualified_type_id: 0x8ab1915b
+}
+qualified {
+  id: 0xfec6a776
+  qualifier: CONST
+  qualified_type_id: 0x8b5d2b50
+}
+qualified {
+  id: 0xfedaab36
+  qualifier: CONST
+  qualified_type_id: 0x8b2d1a51
+}
+qualified {
+  id: 0xff3aff36
+  qualifier: CONST
+  qualified_type_id: 0x8cac4a52
+}
+qualified {
+  id: 0xff401512
+  qualifier: CONST
+  qualified_type_id: 0x8d47e2c1
+}
+qualified {
+  id: 0xff482b27
+  qualifier: CONST
+  qualified_type_id: 0x8d671a17
+}
+qualified {
+  id: 0xff52db13
+  qualifier: CONST
+  qualified_type_id: 0x8d0cdac4
+}
+qualified {
+  id: 0xff590c44
+  qualifier: CONST
+  qualified_type_id: 0x8d238799
+}
+qualified {
+  id: 0xff7770a8
+  qualifier: CONST
+  qualified_type_id: 0x8d9a7429
+}
+qualified {
+  id: 0xff98be03
+  qualifier: CONST
+  qualified_type_id: 0x8e254e86
+}
+qualified {
+  id: 0xffb7f238
+  qualifier: CONST
+  qualified_type_id: 0x8e987e6b
+}
+qualified {
+  id: 0xffc44b84
+  qualifier: CONST
+  qualified_type_id: 0x8f56989a
+}
+qualified {
+  id: 0xffd27017
+  qualifier: CONST
+  qualified_type_id: 0x8f0e76d7
+}
+qualified {
+  id: 0xffdaa06d
+  qualifier: CONST
+  qualified_type_id: 0x8f2d373e
+}
+qualified {
+  id: 0xffee7a3d
+  qualifier: CONST
+  qualified_type_id: 0x8ffe5e7d
+}
+qualified {
+  id: 0xfff5e6f7
+  qualifier: CONST
+  qualified_type_id: 0x8f902d54
+}
+primitive {
+  id: 0x15053314
+  name: "double"
+  encoding: REAL_NUMBER
+  bytesize: 0x00000008
+}
+primitive {
+  id: 0x33756485
+  name: "unsigned long"
+  encoding: UNSIGNED_INTEGER
+  bytesize: 0x00000008
+}
+primitive {
+  id: 0x384f7d7c
+  name: "char"
+  encoding: UNSIGNED_CHARACTER
+  bytesize: 0x00000001
+}
+primitive {
+  id: 0x39470e64
+  name: "long long"
+  encoding: SIGNED_INTEGER
+  bytesize: 0x00000008
+}
+primitive {
+  id: 0x4585663f
+  name: "unsigned int"
+  encoding: UNSIGNED_INTEGER
+  bytesize: 0x00000004
+}
+primitive {
+  id: 0x5ab350f8
+  name: "signed char"
+  encoding: SIGNED_CHARACTER
+  bytesize: 0x00000001
+}
+primitive {
+  id: 0x5d8155a5
+  name: "unsigned char"
+  encoding: UNSIGNED_CHARACTER
+  bytesize: 0x00000001
+}
+primitive {
+  id: 0x6720d32f
+  name: "int"
+  encoding: SIGNED_INTEGER
+  bytesize: 0x00000004
+}
+primitive {
+  id: 0x7c89493c
+  name: "unsigned __int128"
+  encoding: UNSIGNED_INTEGER
+  bytesize: 0x00000010
+}
+primitive {
+  id: 0xb0312d5a
+  name: "short"
+  encoding: SIGNED_INTEGER
+  bytesize: 0x00000002
+}
+primitive {
+  id: 0xb2307ca0
+  name: "_Bool"
+  encoding: BOOLEAN
+  bytesize: 0x00000001
+}
+primitive {
+  id: 0xc93e017b
+  name: "unsigned short"
+  encoding: UNSIGNED_INTEGER
+  bytesize: 0x00000002
+}
+primitive {
+  id: 0xd5df6730
+  name: "unsigned long long"
+  encoding: UNSIGNED_INTEGER
+  bytesize: 0x00000008
+}
+primitive {
+  id: 0xfc0e1dbd
+  name: "long"
+  encoding: SIGNED_INTEGER
+  bytesize: 0x00000008
+}
+array {
+  id: 0x0121d57c
+  number_of_elements: 56
+  element_type_id: 0x384f7d7c
+}
+array {
+  id: 0x01e90d51
+  number_of_elements: 64
+  element_type_id: 0xc9082b19
+}
+array {
+  id: 0x01ef5f77
+  number_of_elements: 80
+  element_type_id: 0x384f7d7c
+}
+array {
+  id: 0x02fc92e9
+  number_of_elements: 24
+  element_type_id: 0x5d8155a5
+}
+array {
+  id: 0x0311b8dc
+  number_of_elements: 3
+  element_type_id: 0x475137a2
+}
+array {
+  id: 0x03a4acbb
+  number_of_elements: 3
+  element_type_id: 0x4585663f
+}
+array {
+  id: 0x04048b89
+  number_of_elements: 3
+  element_type_id: 0x5b05faf7
+}
+array {
+  id: 0x056516a3
+  number_of_elements: 56
+  element_type_id: 0x295c7202
+}
+array {
+  id: 0x056684c9
+  number_of_elements: 3
+  element_type_id: 0x5e8dc7f4
+}
+array {
+  id: 0x05a5a05d
+  number_of_elements: 3
+  element_type_id: 0x5d8155a5
+}
+array {
+  id: 0x05b4d9be
+  number_of_elements: 64
+  element_type_id: 0xd87f78a5
+}
+array {
+  id: 0x06ed5af3
+  number_of_elements: 3
+  element_type_id: 0x50a2bf1c
+}
+array {
+  id: 0x0772f61b
+  number_of_elements: 101
+  element_type_id: 0xe8a3d932
+}
+array {
+  id: 0x08354f2e
+  number_of_elements: 64
+  element_type_id: 0xee7922e7
+}
+array {
+  id: 0x09e0bda0
+  number_of_elements: 3
+  element_type_id: 0x6c952252
+}
+array {
+  id: 0x0aba0b5b
+  number_of_elements: 48
+  element_type_id: 0x6720d32f
+}
+array {
+  id: 0x0aba1232
+  number_of_elements: 128
+  element_type_id: 0x9152b3e3
+}
+array {
+  id: 0x0abdd13d
+  number_of_elements: 128
+  element_type_id: 0x914dbfdc
+}
+array {
+  id: 0x0ae9f863
+  number_of_elements: 20
+  element_type_id: 0x74d29cf1
+}
+array {
+  id: 0x0b0dc1ff
+  number_of_elements: 3
+  element_type_id: 0x6720d32f
+}
+array {
+  id: 0x0b5f07f4
+  number_of_elements: 3
+  element_type_id: 0x666bcb01
+}
+array {
+  id: 0x0c85bb61
+  number_of_elements: 3
+  element_type_id: 0x79013954
+}
+array {
+  id: 0x0d878f24
+  number_of_elements: 3
+  element_type_id: 0x7d09e840
+}
+array {
+  id: 0x0e156b94
+  number_of_elements: 20
+  element_type_id: 0x6720d32f
+}
+array {
+  id: 0x0f3cf07d
+  number_of_elements: 3
+  element_type_id: 0x77e41525
+}
+array {
+  id: 0x102f691d
+  number_of_elements: 3
+  element_type_id: 0x0baa70a7
+}
+array {
+  id: 0x108178f0
+  number_of_elements: 64
+  element_type_id: 0x8ca9fd9e
+}
+array {
+  id: 0x10837250
+  number_of_elements: 3
+  element_type_id: 0x091a1d90
+}
+array {
+  id: 0x1162409a
+  number_of_elements: 126
+  element_type_id: 0x384f7d7c
+}
+array {
+  id: 0x11ed39a5
+  number_of_elements: 128
+  element_type_id: 0xfc0e1dbd
+}
+array {
+  id: 0x11f20613
+  number_of_elements: 20
+  element_type_id: 0x18bd6530
+}
+array {
+  id: 0x12b100eb
+  number_of_elements: 3
+  element_type_id: 0x01d3d77e
+}
+array {
+  id: 0x13652d56
+  number_of_elements: 3
+  element_type_id: 0x0683618a
+}
+array {
+  id: 0x1365e9fc
+  number_of_elements: 46
+  element_type_id: 0x33756485
+}
+array {
+  id: 0x13735712
+  number_of_elements: 20
+  element_type_id: 0x12b82135
+}
+array {
+  id: 0x139a58ce
+  number_of_elements: 3
+  element_type_id: 0x057eb7eb
+}
+array {
+  id: 0x13acc6e4
+  number_of_elements: 126
+  element_type_id: 0x33756485
+}
+array {
+  id: 0x13ca4642
+  number_of_elements: 3
+  element_type_id: 0x043ecddb
+}
+array {
+  id: 0x13e50c8a
+  number_of_elements: 3
+  element_type_id: 0x0483e6f8
+}
+array {
+  id: 0x1424911e
+  number_of_elements: 3
+  element_type_id: 0x1b8590a8
+}
+array {
+  id: 0x14699413
+  number_of_elements: 18
+  element_type_id: 0x295c7202
+}
+array {
+  id: 0x147d5006
+  number_of_elements: 48
+  element_type_id: 0x1c3dbe5a
+}
+array {
+  id: 0x14b63a09
+  number_of_elements: 241
+  element_type_id: 0x0baa70a7
+}
+array {
+  id: 0x1537c376
+  number_of_elements: 20
+  element_type_id: 0x0baa70a7
+}
+array {
+  id: 0x16b4f41a
+  number_of_elements: 3
+  element_type_id: 0x11c404ba
+}
+array {
+  id: 0x1723cb73
+  number_of_elements: 64
+  element_type_id: 0x92233392
+}
+array {
+  id: 0x174bc012
+  number_of_elements: 35
+  element_type_id: 0x384f7d7c
+}
+array {
+  id: 0x17a1506b
+  number_of_elements: 3
+  element_type_id: 0x1592957f
+}
+array {
+  id: 0x17d3ae97
+  number_of_elements: 28
+  element_type_id: 0x33756485
+}
+array {
+  id: 0x184e9c69
+  number_of_elements: 29
+  element_type_id: 0x33756485
+}
+array {
+  id: 0x187c77a8
+  number_of_elements: 96
+  element_type_id: 0xd9b9e56c
+}
+array {
+  id: 0x1892e9b4
+  number_of_elements: 3
+  element_type_id: 0x295c7202
+}
+array {
+  id: 0x18e7b37e
+  number_of_elements: 20
+  element_type_id: 0x3cebb086
+}
+array {
+  id: 0x191c3876
+  number_of_elements: 3
+  element_type_id: 0x2f67350a
+}
+array {
+  id: 0x19252310
+  number_of_elements: 48
+  element_type_id: 0x295c7202
+}
+array {
+  id: 0x1997574a
+  number_of_elements: 3
+  element_type_id: 0x2d4a89fa
+}
+array {
+  id: 0x19ce8000
+  number_of_elements: 20
+  element_type_id: 0x384f7d7c
+}
+array {
+  id: 0x1a47cb12
+  number_of_elements: 3
+  element_type_id: 0x2208f89a
+}
+array {
+  id: 0x1a801a17
+  number_of_elements: 29
+  element_type_id: 0x384f7d7c
+}
+array {
+  id: 0x1ab0fbaa
+  number_of_elements: 3
+  element_type_id: 0x21d43a7b
+}
+array {
+  id: 0x1b8f18df
+  number_of_elements: 24
+  element_type_id: 0x384f7d7c
+}
+array {
+  id: 0x1cd62a6b
+  number_of_elements: 3
+  element_type_id: 0x384f7d7c
+}
+array {
+  id: 0x1d61e0cf
+  number_of_elements: 48
+  element_type_id: 0x384f7d7c
+}
+array {
+  id: 0x1d8a43df
+  number_of_elements: 20
+  element_type_id: 0x295c7202
+}
+array {
+  id: 0x1dbd085c
+  number_of_elements: 3
+  element_type_id: 0x3de3f5a1
+}
+array {
+  id: 0x1df89e56
+  number_of_elements: 27
+  element_type_id: 0x92233392
+}
+array {
+  id: 0x1e18ac15
+  number_of_elements: 3
+  element_type_id: 0x33756485
+}
+array {
+  id: 0x1e937ceb
+  number_of_elements: 3
+  element_type_id: 0x315a277e
+}
+array {
+  id: 0x1ed32840
+  number_of_elements: 3
+  element_type_id: 0x305b75d3
+}
+array {
+  id: 0x1ef2915d
+  number_of_elements: 3
+  element_type_id: 0x30dd91a5
+}
+array {
+  id: 0x1f52e925
+  number_of_elements: 64
+  element_type_id: 0xb3e7bac9
+}
+array {
+  id: 0x1f927ee0
+  number_of_elements: 3
+  element_type_id: 0x355e2f50
+}
+array {
+  id: 0x1f94d6ec
+  number_of_elements: 3
+  element_type_id: 0x35448f63
+}
+array {
+  id: 0x2087fff2
+  number_of_elements: 3
+  element_type_id: 0xc9082b19
+}
+array {
+  id: 0x208a756a
+  number_of_elements: 3
+  element_type_id: 0xc93e017b
+}
+array {
+  id: 0x20f42c9c
+  number_of_elements: 3
+  element_type_id: 0xc8c766a0
+}
+array {
+  id: 0x20fd6195
+  number_of_elements: 128
+  element_type_id: 0x384f7d7c
+}
+array {
+  id: 0x22c6e8be
+  number_of_elements: 3
+  element_type_id: 0xc00c762a
+}
+array {
+  id: 0x235dd3e0
+  number_of_elements: 20
+  element_type_id: 0xd20232fd
+}
+array {
+  id: 0x23ac68c7
+  number_of_elements: 96
+  element_type_id: 0x36f998d3
+}
+array {
+  id: 0x23cbe491
+  number_of_elements: 56
+  element_type_id: 0xb3e7bac9
+}
+array {
+  id: 0x2408766a
+  number_of_elements: 64
+  element_type_id: 0x5e8dc7f4
+}
+array {
+  id: 0x24b9a24a
+  number_of_elements: 128
+  element_type_id: 0x295c7202
+}
+array {
+  id: 0x24cb52fe
+  number_of_elements: 64
+  element_type_id: 0x5d8155a5
+}
+array {
+  id: 0x259984de
+  number_of_elements: 3
+  element_type_id: 0xdd71c7aa
+}
+array {
+  id: 0x2637f572
+  number_of_elements: 3
+  element_type_id: 0xd3c80119
+}
+array {
+  id: 0x273ad3f4
+  number_of_elements: 3
+  element_type_id: 0xd7fc9b01
+}
+array {
+  id: 0x28c52534
+  number_of_elements: 3
+  element_type_id: 0xe8034002
+}
+array {
+  id: 0x28f83d47
+  number_of_elements: 1024
+  element_type_id: 0x5e8dc7f4
+}
+array {
+  id: 0x29dd29f0
+  number_of_elements: 128
+  element_type_id: 0x1cce5ceb
+}
+array {
+  id: 0x2a585e4f
+  number_of_elements: 3
+  element_type_id: 0xe276adef
+}
+array {
+  id: 0x2a63335c
+  number_of_elements: 64
+  element_type_id: 0x6720d32f
+}
+array {
+  id: 0x2a9fbfe4
+  number_of_elements: 128
+  element_type_id: 0x11c404ba
+}
+array {
+  id: 0x2b4e5af5
+  number_of_elements: 3
+  element_type_id: 0xe62ebf07
+}
+array {
+  id: 0x2bc4f74a
+  number_of_elements: 3
+  element_type_id: 0xe40409fa
+}
+array {
+  id: 0x2c095c7b
+  number_of_elements: 40
+  element_type_id: 0x384f7d7c
+}
+array {
+  id: 0x2cfdf4b9
+  number_of_elements: 3
+  element_type_id: 0xf8e00636
+}
+array {
+  id: 0x2f4e696d
+  number_of_elements: 128
+  element_type_id: 0x06835e9c
+}
+array {
+  id: 0x2f6759fd
+  number_of_elements: 27
+  element_type_id: 0x585c2d3c
+}
+array {
+  id: 0x2f9c1780
+  number_of_elements: 24
+  element_type_id: 0xe8034002
+}
+array {
+  id: 0x314893e5
+  number_of_elements: 1024
+  element_type_id: 0x384f7d7c
+}
+array {
+  id: 0x31d34410
+  number_of_elements: 64
+  element_type_id: 0x09e10e1f
+}
+array {
+  id: 0x32876364
+  number_of_elements: 64
+  element_type_id: 0x04b193cc
+}
+array {
+  id: 0x328bfe29
+  number_of_elements: 64
+  element_type_id: 0x0483e6f8
+}
+array {
+  id: 0x32eb3b69
+  number_of_elements: 30
+  element_type_id: 0x25c5b309
+}
+array {
+  id: 0x33415e6f
+  number_of_elements: 46
+  element_type_id: 0xb3e7bac9
+}
+array {
+  id: 0x3390b1b4
+  number_of_elements: 1024
+  element_type_id: 0x332ff439
+}
+array {
+  id: 0x3448bb1c
+  number_of_elements: 240
+  element_type_id: 0xb3e7bac9
+}
+array {
+  id: 0x3456a883
+  number_of_elements: 64
+  element_type_id: 0x1ff6bc52
+}
+array {
+  id: 0x3489645d
+  number_of_elements: 64
+  element_type_id: 0x1c898f28
+}
+array {
+  id: 0x35845edb
+  number_of_elements: 64
+  element_type_id: 0x18bd6530
+}
+array {
+  id: 0x35919d2f
+  number_of_elements: 64
+  element_type_id: 0x18ea6ae3
+}
+array {
+  id: 0x3624319f
+  number_of_elements: 30
+  element_type_id: 0x36f998d3
+}
+array {
+  id: 0x364d39d0
+  number_of_elements: 3
+  element_type_id: 0x92233392
+}
+array {
+  id: 0x37638ded
+  number_of_elements: 27
+  element_type_id: 0x384f7d7c
+}
+array {
+  id: 0x3880149e
+  number_of_elements: 64
+  element_type_id: 0x2cac4c27
+}
+array {
+  id: 0x3932c547
+  number_of_elements: 64
+  element_type_id: 0x2a670b41
+}
+array {
+  id: 0x394dcf37
+  number_of_elements: 128
+  element_type_id: 0x5e8dc7f4
+}
+array {
+  id: 0x39652932
+  number_of_elements: 24
+  element_type_id: 0xb3e7bac9
+}
+array {
+  id: 0x398eeba3
+  number_of_elements: 128
+  element_type_id: 0x5d8155a5
+}
+array {
+  id: 0x39fc1b17
+  number_of_elements: 64
+  element_type_id: 0x295c7202
+}
+array {
+  id: 0x3b24b1ed
+  number_of_elements: 20
+  element_type_id: 0xb3e7bac9
+}
+array {
+  id: 0x3b935135
+  number_of_elements: 61
+  element_type_id: 0x384f7d7c
+}
+array {
+  id: 0x3c0c289f
+  number_of_elements: 76
+  element_type_id: 0x384f7d7c
+}
+array {
+  id: 0x3c80dade
+  number_of_elements: 3
+  element_type_id: 0xb914bfab
+}
+array {
+  id: 0x3db8d8c8
+  number_of_elements: 64
+  element_type_id: 0x384f7d7c
+}
+array {
+  id: 0x3dfac40e
+  number_of_elements: 64
+  element_type_id: 0x39470e64
+}
+array {
+  id: 0x3e14faf9
+  number_of_elements: 128
+  element_type_id: 0x43e910ce
+}
+array {
+  id: 0x3e3c1b86
+  number_of_elements: 3
+  element_type_id: 0xb3e7bac9
+}
+array {
+  id: 0x3f2589d8
+  number_of_elements: 248
+  element_type_id: 0xb3e7bac9
+}
+array {
+  id: 0x3f60fa99
+  number_of_elements: 64
+  element_type_id: 0x332ff439
+}
+array {
+  id: 0x3f6a85f3
+  number_of_elements: 1024
+  element_type_id: 0x00c72527
+}
+array {
+  id: 0x3f8bd122
+  number_of_elements: 48
+  element_type_id: 0xb3e7bac9
+}
+array {
+  id: 0x3f8fe745
+  number_of_elements: 128
+  element_type_id: 0x4585663f
+}
+array {
+  id: 0x4050ae51
+  number_of_elements: 2
+  element_type_id: 0xb3e7bac9
+}
+array {
+  id: 0x407ae5fe
+  number_of_elements: 2
+  element_type_id: 0xb34e9475
+}
+array {
+  id: 0x409e2c67
+  number_of_elements: 2
+  element_type_id: 0xb0ddb211
+}
+array {
+  id: 0x40bde449
+  number_of_elements: 2
+  element_type_id: 0xb05292aa
+}
+array {
+  id: 0x40ee9bb0
+  number_of_elements: 16
+  element_type_id: 0x33756485
+}
+array {
+  id: 0x41195943
+  number_of_elements: 16
+  element_type_id: 0x34aa6f4a
+}
+array {
+  id: 0x416d2f82
+  number_of_elements: 16
+  element_type_id: 0x357bb44d
+}
+array {
+  id: 0x41ffca26
+  number_of_elements: 2
+  element_type_id: 0xb55a2b15
+}
+array {
+  id: 0x42201dce
+  number_of_elements: 16
+  element_type_id: 0x384f7d7c
+}
+array {
+  id: 0x4239b24f
+  number_of_elements: 16
+  element_type_id: 0x3829c378
+}
+array {
+  id: 0x42868434
+  number_of_elements: 2
+  element_type_id: 0xb8bf135c
+}
+array {
+  id: 0x439230ff
+  number_of_elements: 2
+  element_type_id: 0xbcedc070
+}
+array {
+  id: 0x43acdd98
+  number_of_elements: 32
+  element_type_id: 0x5d8155a5
+}
+array {
+  id: 0x43bcc470
+  number_of_elements: 16
+  element_type_id: 0x3e3c1b86
+}
+array {
+  id: 0x43d1d3ca
+  number_of_elements: 33
+  element_type_id: 0x6720d32f
+}
+array {
+  id: 0x43d5daeb
+  number_of_elements: 10
+  element_type_id: 0xd0fff916
+}
+array {
+  id: 0x442bf459
+  number_of_elements: 16
+  element_type_id: 0x2060db23
+}
+array {
+  id: 0x44377683
+  number_of_elements: 7
+  element_type_id: 0xb3e7bac9
+}
+array {
+  id: 0x4449c48b
+  number_of_elements: 32
+  element_type_id: 0x421531e8
+}
+array {
+  id: 0x4472656b
+  number_of_elements: 16
+  element_type_id: 0x21069feb
+}
+array {
+  id: 0x44b60e20
+  number_of_elements: 16
+  element_type_id: 0x221732c5
+}
+array {
+  id: 0x44b8b776
+  number_of_elements: 2
+  element_type_id: 0xa047de54
+}
+array {
+  id: 0x44c5e79a
+  number_of_elements: 32
+  element_type_id: 0x4025bdaf
+}
+array {
+  id: 0x44ef98e3
+  number_of_elements: 16
+  element_type_id: 0x237169c8
+}
+array {
+  id: 0x44f91b0f
+  number_of_elements: 2
+  element_type_id: 0xa1416fb0
+}
+array {
+  id: 0x45a82e68
+  number_of_elements: 10
+  element_type_id: 0xc9082b19
+}
+array {
+  id: 0x4664de11
+  number_of_elements: 16
+  element_type_id: 0x295c7202
+}
+array {
+  id: 0x48218c07
+  number_of_elements: 2
+  element_type_id: 0x92233392
+}
+array {
+  id: 0x48aeeb39
+  number_of_elements: 2
+  element_type_id: 0x901eaf6a
+}
+array {
+  id: 0x48c9c244
+  number_of_elements: 2
+  element_type_id: 0x91820a9c
+}
+array {
+  id: 0x48e9a3c1
+  number_of_elements: 10
+  element_type_id: 0xfc0e1dbd
+}
+array {
+  id: 0x48fa2f14
+  number_of_elements: 2
+  element_type_id: 0x914dbfdc
+}
+array {
+  id: 0x49960bbd
+  number_of_elements: 37
+  element_type_id: 0x92233392
+}
+array {
+  id: 0x49c80917
+  number_of_elements: 2
+  element_type_id: 0x958527d1
+}
+array {
+  id: 0x4a095829
+  number_of_elements: 16
+  element_type_id: 0x18ea6ae3
+}
+array {
+  id: 0x4a835590
+  number_of_elements: 2
+  element_type_id: 0x98a855cd
+}
+array {
+  id: 0x4a8e2638
+  number_of_elements: 2
+  element_type_id: 0x989d9b6e
+}
+array {
+  id: 0x4ae542ed
+  number_of_elements: 2
+  element_type_id: 0x99300838
+}
+array {
+  id: 0x4b27ac3d
+  number_of_elements: 16
+  element_type_id: 0x1c51bab0
+}
+array {
+  id: 0x4b395ad9
+  number_of_elements: 256
+  element_type_id: 0xcb71b8cb
+}
+array {
+  id: 0x4b3cad07
+  number_of_elements: 16
+  element_type_id: 0x1c3dbe5a
+}
+array {
+  id: 0x4b404166
+  number_of_elements: 16
+  element_type_id: 0x1dce0fdd
+}
+array {
+  id: 0x4b6441c7
+  number_of_elements: 2
+  element_type_id: 0x9f340492
+}
+array {
+  id: 0x4b75a8e4
+  number_of_elements: 16
+  element_type_id: 0x1d19a9d5
+}
+array {
+  id: 0x4b7eaad9
+  number_of_elements: 2
+  element_type_id: 0x9f5fa8e8
+}
+array {
+  id: 0x4ba73e2d
+  number_of_elements: 256
+  element_type_id: 0xc9082b19
+}
+array {
+  id: 0x4c3e1687
+  number_of_elements: 2
+  element_type_id: 0x825d5993
+}
+array {
+  id: 0x4c4654d5
+  number_of_elements: 7
+  element_type_id: 0x92233392
+}
+array {
+  id: 0x4c7a3065
+  number_of_elements: 13
+  element_type_id: 0x295c7202
+}
+array {
+  id: 0x4c8d526d
+  number_of_elements: 2
+  element_type_id: 0x80904a3b
+}
+array {
+  id: 0x4cd5b99e
+  number_of_elements: 16
+  element_type_id: 0x0399ec3e
+}
+array {
+  id: 0x4d04b785
+  number_of_elements: 2
+  element_type_id: 0x86b7dd9a
+}
+array {
+  id: 0x4d04bc3a
+  number_of_elements: 32
+  element_type_id: 0x6720d32f
+}
+array {
+  id: 0x4d133b2f
+  number_of_elements: 16
+  element_type_id: 0x0483e6f8
+}
+array {
+  id: 0x4d65b854
+  number_of_elements: 256
+  element_type_id: 0xd20232fd
+}
+array {
+  id: 0x4deaf4ae
+  number_of_elements: 10
+  element_type_id: 0xe8034002
+}
+array {
+  id: 0x4df2aa7b
+  number_of_elements: 257
+  element_type_id: 0xfe192c0c
+}
+array {
+  id: 0x4e23f15d
+  number_of_elements: 2
+  element_type_id: 0x8a2ac6fa
+}
+array {
+  id: 0x4e60cea9
+  number_of_elements: 16
+  element_type_id: 0x094c30e0
+}
+array {
+  id: 0x4f77c35e
+  number_of_elements: 16
+  element_type_id: 0x0d10073d
+}
+array {
+  id: 0x4f935f0c
+  number_of_elements: 32
+  element_type_id: 0x6d7f5ff6
+}
+array {
+  id: 0x4fc3f305
+  number_of_elements: 60
+  element_type_id: 0xc9082b19
+}
+array {
+  id: 0x4fe13007
+  number_of_elements: 32
+  element_type_id: 0x6cb6e3da
+}
+array {
+  id: 0x4fedf57f
+  number_of_elements: 10
+  element_type_id: 0xe01f4745
+}
+array {
+  id: 0x50930294
+  number_of_elements: 32
+  element_type_id: 0x117e2995
+}
+array {
+  id: 0x51090cbc
+  number_of_elements: 2
+  element_type_id: 0xf681317f
+}
+array {
+  id: 0x514537f0
+  number_of_elements: 7
+  element_type_id: 0xe62ebf07
+}
+array {
+  id: 0x51d54e3e
+  number_of_elements: 32
+  element_type_id: 0x14671b3f
+}
+array {
+  id: 0x5244d25a
+  number_of_elements: 32
+  element_type_id: 0x1a216aaf
+}
+array {
+  id: 0x52701409
+  number_of_elements: 32
+  element_type_id: 0x1af273e3
+}
+array {
+  id: 0x52f90395
+  number_of_elements: 2
+  element_type_id: 0xf9410dda
+}
+array {
+  id: 0x53171385
+  number_of_elements: 251
+  element_type_id: 0xb3e7bac9
+}
+array {
+  id: 0x5362e84a
+  number_of_elements: 10
+  element_type_id: 0x92233392
+}
+array {
+  id: 0x53bf0b06
+  number_of_elements: 32
+  element_type_id: 0x1dce0fdd
+}
+array {
+  id: 0x5408a5f2
+  number_of_elements: 2
+  element_type_id: 0xe2879445
+}
+array {
+  id: 0x5413165d
+  number_of_elements: 16
+  element_type_id: 0x60835333
+}
+array {
+  id: 0x5434eb98
+  number_of_elements: 2
+  element_type_id: 0xe276adef
+}
+array {
+  id: 0x54a3a89f
+  number_of_elements: 32
+  element_type_id: 0x01bc81b8
+}
+array {
+  id: 0x54d32bc8
+  number_of_elements: 32
+  element_type_id: 0x007e8ce4
+}
+array {
+  id: 0x5522ef22
+  number_of_elements: 2
+  element_type_id: 0xe62ebf07
+}
+array {
+  id: 0x55c579f2
+  number_of_elements: 2
+  element_type_id: 0xe5b0e446
+}
+array {
+  id: 0x55fbf65a
+  number_of_elements: 16
+  element_type_id: 0x6720d32f
+}
+array {
+  id: 0x5618bcc1
+  number_of_elements: 10
+  element_type_id: 0x87ca61bd
+}
+array {
+  id: 0x561e60a3
+  number_of_elements: 2
+  element_type_id: 0xeadc8100
+}
+array {
+  id: 0x562614d8
+  number_of_elements: 32
+  element_type_id: 0x0baa70a7
+}
+array {
+  id: 0x56a990e3
+  number_of_elements: 2
+  element_type_id: 0xe8034002
+}
+array {
+  id: 0x576c156c
+  number_of_elements: 16
+  element_type_id: 0x6d7f5ff6
+}
+array {
+  id: 0x57d5dd0d
+  number_of_elements: 2
+  element_type_id: 0xedf277ba
+}
+array {
+  id: 0x5811d1d0
+  number_of_elements: 32
+  element_type_id: 0x33756485
+}
+array {
+  id: 0x585b40a5
+  number_of_elements: 2
+  element_type_id: 0xd3c80119
+}
+array {
+  id: 0x585f1baf
+  number_of_elements: 2
+  element_type_id: 0xd3d96d30
+}
+array {
+  id: 0x59366056
+  number_of_elements: 2
+  element_type_id: 0xd67c82d4
+}
+array {
+  id: 0x59edcd80
+  number_of_elements: 32
+  element_type_id: 0x348515c6
+}
+array {
+  id: 0x5a8c92f7
+  number_of_elements: 7
+  element_type_id: 0xc9082b19
+}
+array {
+  id: 0x5adf57ae
+  number_of_elements: 32
+  element_type_id: 0x384f7d7c
+}
+array {
+  id: 0x5af23c9d
+  number_of_elements: 2
+  element_type_id: 0xd96df1fa
+}
+array {
+  id: 0x5b13ca1c
+  number_of_elements: 10
+  element_type_id: 0xb3e7bac9
+}
+array {
+  id: 0x5b5397f8
+  number_of_elements: 16
+  element_type_id: 0x5d8155a5
+}
+array {
+  id: 0x5b90b36c
+  number_of_elements: 16
+  element_type_id: 0x5e8dc7f4
+}
+array {
+  id: 0x5be0e9e0
+  number_of_elements: 10
+  element_type_id: 0xb02b353a
+}
+array {
+  id: 0x5c0aa325
+  number_of_elements: 2
+  element_type_id: 0xc28f8f19
+}
+array {
+  id: 0x5c3c9877
+  number_of_elements: 7
+  element_type_id: 0xd3c80119
+}
+array {
+  id: 0x5c8d2f0b
+  number_of_elements: 32
+  element_type_id: 0x21069feb
+}
+array {
+  id: 0x5d2762c3
+  number_of_elements: 2
+  element_type_id: 0xc6388883
+}
+array {
+  id: 0x5e18785f
+  number_of_elements: 16
+  element_type_id: 0x48aeeb39
+}
+array {
+  id: 0x5e9b9471
+  number_of_elements: 32
+  element_type_id: 0x295c7202
+}
+array {
+  id: 0x5eeb4a25
+  number_of_elements: 2
+  element_type_id: 0xc9082b19
+}
+array {
+  id: 0x5f9de25a
+  number_of_elements: 2
+  element_type_id: 0xccd28ae5
+}
+array {
+  id: 0x5fa20088
+  number_of_elements: 16
+  element_type_id: 0x4e470864
+}
+array {
+  id: 0x5fcc7e0d
+  number_of_elements: 256
+  element_type_id: 0x98a52b9a
+}
+array {
+  id: 0x60282e68
+  number_of_elements: 2
+  element_type_id: 0x3205ba2f
+}
+array {
+  id: 0x6049e96d
+  number_of_elements: 2
+  element_type_id: 0x3382a638
+}
+array {
+  id: 0x607419c2
+  number_of_elements: 2
+  element_type_id: 0x33756485
+}
+array {
+  id: 0x6075f8b5
+  number_of_elements: 2
+  element_type_id: 0x3372e15b
+}
+array {
+  id: 0x607a4116
+  number_of_elements: 2
+  element_type_id: 0x334c07d5
+}
+array {
+  id: 0x60ca2c23
+  number_of_elements: 16
+  element_type_id: 0xb3e7bac9
+}
+array {
+  id: 0x620b283c
+  number_of_elements: 7
+  element_type_id: 0x2b16c036
+}
+array {
+  id: 0x629984b1
+  number_of_elements: 7
+  element_type_id: 0x295c7202
+}
+array {
+  id: 0x62e6d4e3
+  number_of_elements: 34
+  element_type_id: 0xb3e7bac9
+}
+array {
+  id: 0x630d1806
+  number_of_elements: 37
+  element_type_id: 0x384f7d7c
+}
+array {
+  id: 0x63164773
+  number_of_elements: 2
+  element_type_id: 0x3efc1e40
+}
+array {
+  id: 0x63264602
+  number_of_elements: 2
+  element_type_id: 0x3e3c1b86
+}
+array {
+  id: 0x632d6da5
+  number_of_elements: 2
+  element_type_id: 0x3e10b518
+}
+array {
+  id: 0x635d6d00
+  number_of_elements: 2
+  element_type_id: 0x3fd0b78c
+}
+array {
+  id: 0x64408d2f
+  number_of_elements: 2
+  element_type_id: 0x23a73732
+}
+array {
+  id: 0x64bca28e
+  number_of_elements: 2
+  element_type_id: 0x205789b5
+}
+array {
+  id: 0x65dffcdd
+  number_of_elements: 256
+  element_type_id: 0x70eb20da
+}
+array {
+  id: 0x667c66a3
+  number_of_elements: 2
+  element_type_id: 0x2b549901
+}
+array {
+  id: 0x668b7d21
+  number_of_elements: 10
+  element_type_id: 0x4585663f
+}
+array {
+  id: 0x668e8237
+  number_of_elements: 32
+  element_type_id: 0xc9082b19
+}
+array {
+  id: 0x66ce5087
+  number_of_elements: 2
+  element_type_id: 0x299c4193
+}
+array {
+  id: 0x66e26c79
+  number_of_elements: 2
+  element_type_id: 0x292cb268
+}
+array {
+  id: 0x66fe5c63
+  number_of_elements: 2
+  element_type_id: 0x295c7202
+}
+array {
+  id: 0x67419ed0
+  number_of_elements: 7
+  element_type_id: 0x3e3c1b86
+}
+array {
+  id: 0x674e4503
+  number_of_elements: 2
+  element_type_id: 0x2f9c1780
+}
+array {
+  id: 0x6758a90c
+  number_of_elements: 32
+  element_type_id: 0xce5087f5
+}
+array {
+  id: 0x67d80db6
+  number_of_elements: 256
+  element_type_id: 0x78f4e574
+}
+array {
+  id: 0x67e28331
+  number_of_elements: 2
+  element_type_id: 0x2d2f0f4a
+}
+array {
+  id: 0x6834694b
+  number_of_elements: 16
+  element_type_id: 0x901eaf6a
+}
+array {
+  id: 0x6860ad66
+  number_of_elements: 16
+  element_type_id: 0x914dbfdc
+}
+array {
+  id: 0x68bb0e75
+  number_of_elements: 16
+  element_type_id: 0x92233392
+}
+array {
+  id: 0x68c58af7
+  number_of_elements: 256
+  element_type_id: 0x4482f870
+}
+array {
+  id: 0x68d841cd
+  number_of_elements: 2
+  element_type_id: 0x11c404ba
+}
+array {
+  id: 0x693364cb
+  number_of_elements: 928
+  element_type_id: 0xb3e7bac9
+}
+array {
+  id: 0x6a240418
+  number_of_elements: 7
+  element_type_id: 0x0baa70a7
+}
+array {
+  id: 0x6a28d5f7
+  number_of_elements: 2
+  element_type_id: 0x1a065450
+}
+array {
+  id: 0x6a8619af
+  number_of_elements: 2
+  element_type_id: 0x18bd6530
+}
+array {
+  id: 0x6afc5176
+  number_of_elements: 252
+  element_type_id: 0xb3e7bac9
+}
+array {
+  id: 0x6b2f6be6
+  number_of_elements: 2
+  element_type_id: 0x1e18ac15
+}
+array {
+  id: 0x6b3ea7cc
+  number_of_elements: 2
+  element_type_id: 0x1e5f9cbf
+}
+array {
+  id: 0x6b7dfaaa
+  number_of_elements: 2
+  element_type_id: 0x1f52e925
+}
+array {
+  id: 0x6bd55bd0
+  number_of_elements: 2
+  element_type_id: 0x1df06cce
+}
+array {
+  id: 0x6bdac314
+  number_of_elements: 2
+  element_type_id: 0x1dce0fdd
+}
+array {
+  id: 0x6c542f76
+  number_of_elements: 7
+  element_type_id: 0x126add1c
+}
+array {
+  id: 0x6cb6e3da
+  number_of_elements: 2
+  element_type_id: 0x007e8ce4
+}
+array {
+  id: 0x6ce54884
+  number_of_elements: 2
+  element_type_id: 0x0130219f
+}
+array {
+  id: 0x6d099744
+  number_of_elements: 2
+  element_type_id: 0x06835e9c
+}
+array {
+  id: 0x6d099881
+  number_of_elements: 2
+  element_type_id: 0x0683618a
+}
+array {
+  id: 0x6d3a18c2
+  number_of_elements: 2
+  element_type_id: 0x064d6086
+}
+array {
+  id: 0x6d4372c7
+  number_of_elements: 2
+  element_type_id: 0x07a8c893
+}
+array {
+  id: 0x6d472730
+  number_of_elements: 32
+  element_type_id: 0xe62ebf07
+}
+array {
+  id: 0x6d852410
+  number_of_elements: 2
+  element_type_id: 0x04b193cc
+}
+array {
+  id: 0x6e06e717
+  number_of_elements: 2
+  element_type_id: 0x0abe9fd1
+}
+array {
+  id: 0x6e1fde8f
+  number_of_elements: 127
+  element_type_id: 0x33756485
+}
+array {
+  id: 0x6e2ef705
+  number_of_elements: 2
+  element_type_id: 0x0a1edf98
+}
+array {
+  id: 0x6e43dcca
+  number_of_elements: 2
+  element_type_id: 0x0baa70a7
+}
+array {
+  id: 0x6e464516
+  number_of_elements: 256
+  element_type_id: 0x5e8dc7f4
+}
+array {
+  id: 0x6e8341c8
+  number_of_elements: 2
+  element_type_id: 0x08a804af
+}
+array {
+  id: 0x6ece91e0
+  number_of_elements: 52
+  element_type_id: 0xb3e7bac9
+}
+array {
+  id: 0x6f43f98f
+  number_of_elements: 2
+  element_type_id: 0x0faae5b1
+}
+array {
+  id: 0x6f48b334
+  number_of_elements: 7
+  element_type_id: 0x1e18ac15
+}
+array {
+  id: 0x6fb0151f
+  number_of_elements: 32
+  element_type_id: 0xedf277ba
+}
+array {
+  id: 0x6fde7229
+  number_of_elements: 2
+  element_type_id: 0x0ddccb29
+}
+array {
+  id: 0x70444415
+  number_of_elements: 32
+  element_type_id: 0x92233392
+}
+array {
+  id: 0x70bb96a6
+  number_of_elements: 7
+  element_type_id: 0x61d43a5c
+}
+array {
+  id: 0x70e54b38
+  number_of_elements: 10
+  element_type_id: 0x1c3dbe5a
+}
+array {
+  id: 0x70eedbce
+  number_of_elements: 256
+  element_type_id: 0x242fbc95
+}
+array {
+  id: 0x7100288f
+  number_of_elements: 256
+  element_type_id: 0x23947191
+}
+array {
+  id: 0x71c87915
+  number_of_elements: 2
+  element_type_id: 0x7584e7da
+}
+array {
+  id: 0x720f65ea
+  number_of_elements: 7
+  element_type_id: 0x6b07f76e
+}
+array {
+  id: 0x724fe209
+  number_of_elements: 256
+  element_type_id: 0x2eab5b8a
+}
+array {
+  id: 0x7349866a
+  number_of_elements: 49
+  element_type_id: 0xfc0e1dbd
+}
+array {
+  id: 0x7392269c
+  number_of_elements: 60
+  element_type_id: 0x384f7d7c
+}
+array {
+  id: 0x73aafd73
+  number_of_elements: 256
+  element_type_id: 0x293f2663
+}
+array {
+  id: 0x73be2bf1
+  number_of_elements: 2
+  element_type_id: 0x7c5dac4b
+}
+array {
+  id: 0x73c39fe7
+  number_of_elements: 10
+  element_type_id: 0x10a6ed24
+}
+array {
+  id: 0x73c9873d
+  number_of_elements: 32
+  element_type_id: 0x9c143f30
+}
+array {
+  id: 0x7460d163
+  number_of_elements: 2
+  element_type_id: 0x63264602
+}
+array {
+  id: 0x749f40ec
+  number_of_elements: 39
+  element_type_id: 0xd79dd5b3
+}
+array {
+  id: 0x75386dca
+  number_of_elements: 256
+  element_type_id: 0x33756485
+}
+array {
+  id: 0x75617428
+  number_of_elements: 2
+  element_type_id: 0x6720d32f
+}
+array {
+  id: 0x75b86d50
+  number_of_elements: 16
+  element_type_id: 0xe62ebf07
+}
+array {
+  id: 0x75fa3f0d
+  number_of_elements: 7
+  element_type_id: 0x74d29cf1
+}
+array {
+  id: 0x764913b9
+  number_of_elements: 256
+  element_type_id: 0x3eb09d4a
+}
+array {
+  id: 0x76597acb
+  number_of_elements: 2
+  element_type_id: 0x6bc0e8a0
+}
+array {
+  id: 0x774f5f7f
+  number_of_elements: 16
+  element_type_id: 0xedf277ba
+}
+array {
+  id: 0x77f6971e
+  number_of_elements: 2
+  element_type_id: 0x6d7f5ff6
+}
+array {
+  id: 0x77f6ebb4
+  number_of_elements: 256
+  element_type_id: 0x384f7d7c
+}
+array {
+  id: 0x78356643
+  number_of_elements: 32
+  element_type_id: 0xb3e7bac9
+}
+array {
+  id: 0x78b34e2e
+  number_of_elements: 16
+  element_type_id: 0xd20232fd
+}
+array {
+  id: 0x790929c4
+  number_of_elements: 2
+  element_type_id: 0x5681a49c
+}
+array {
+  id: 0x7a6db264
+  number_of_elements: 2
+  element_type_id: 0x5b13ca1c
+}
+array {
+  id: 0x7a7fc5d0
+  number_of_elements: 2
+  element_type_id: 0x5b5a14cd
+}
+array {
+  id: 0x7ab67cad
+  number_of_elements: 16
+  element_type_id: 0xda16f8f0
+}
+array {
+  id: 0x7affc48e
+  number_of_elements: 2
+  element_type_id: 0x595a11b6
+}
+array {
+  id: 0x7b0fa8c2
+  number_of_elements: 256
+  element_type_id: 0x0baa70a7
+}
+array {
+  id: 0x7b377d8f
+  number_of_elements: 10
+  element_type_id: 0x33756485
+}
+array {
+  id: 0x7ba14494
+  number_of_elements: 16
+  element_type_id: 0xde4a1814
+}
+array {
+  id: 0x7bd19a3a
+  number_of_elements: 32
+  element_type_id: 0xbc744b2f
+}
+array {
+  id: 0x7c029334
+  number_of_elements: 2
+  element_type_id: 0x42af4f5c
+}
+array {
+  id: 0x7c4687a5
+  number_of_elements: 2
+  element_type_id: 0x43bf1d1a
+}
+array {
+  id: 0x7c5bd3c4
+  number_of_elements: 2
+  element_type_id: 0x43ca4c9d
+}
+array {
+  id: 0x7cbd6b77
+  number_of_elements: 2
+  element_type_id: 0x4050ae51
+}
+array {
+  id: 0x7dbd382e
+  number_of_elements: 10
+  element_type_id: 0x295c7202
+}
+array {
+  id: 0x7dc8196c
+  number_of_elements: 2
+  element_type_id: 0x4585663f
+}
+array {
+  id: 0x7e22f78a
+  number_of_elements: 32
+  element_type_id: 0xabb9fdec
+}
+array {
+  id: 0x7e71c857
+  number_of_elements: 16
+  element_type_id: 0xc9082b19
+}
+array {
+  id: 0x7ec08ca7
+  number_of_elements: 2
+  element_type_id: 0x49a73111
+}
+array {
+  id: 0x7eefbee1
+  number_of_elements: 16
+  element_type_id: 0xcb71f1c0
+}
+array {
+  id: 0x7f06f597
+  number_of_elements: 16
+  element_type_id: 0xccd4dc1a
+}
+array {
+  id: 0x7f1ef170
+  number_of_elements: 2
+  element_type_id: 0x4edec64c
+}
+array {
+  id: 0x7f21bcb4
+  number_of_elements: 2
+  element_type_id: 0x4e23f15d
+}
+array {
+  id: 0x7f8808fc
+  number_of_elements: 2
+  element_type_id: 0x4c85207f
+}
+array {
+  id: 0x7fb8d5d6
+  number_of_elements: 2
+  element_type_id: 0x4c4654d5
+}
+array {
+  id: 0x801159da
+  number_of_elements: 100
+  element_type_id: 0x384f7d7c
+}
+array {
+  id: 0x80904a3b
+  number_of_elements: 4
+  element_type_id: 0x33756485
+}
+array {
+  id: 0x809e12ef
+  number_of_elements: 4
+  element_type_id: 0x334c07d5
+}
+array {
+  id: 0x80c9c878
+  number_of_elements: 12
+  element_type_id: 0x33756485
+}
+array {
+  id: 0x80dc069a
+  number_of_elements: 31
+  element_type_id: 0x33756485
+}
+array {
+  id: 0x818a3ee6
+  number_of_elements: 6
+  element_type_id: 0x80adb538
+}
+array {
+  id: 0x81facbaa
+  number_of_elements: 1
+  element_type_id: 0xd0ccb483
+}
+array {
+  id: 0x82074e06
+  number_of_elements: 12
+  element_type_id: 0x384f7d7c
+}
+array {
+  id: 0x82552fea
+  number_of_elements: 4
+  element_type_id: 0x3860f3c0
+}
+array {
+  id: 0x825ecc45
+  number_of_elements: 4
+  element_type_id: 0x384f7d7c
+}
+array {
+  id: 0x829e2b14
+  number_of_elements: 4
+  element_type_id: 0x3b4ce03a
+}
+array {
+  id: 0x839f12d6
+  number_of_elements: 17
+  element_type_id: 0x1d841d76
+}
+array {
+  id: 0x83f3a37a
+  number_of_elements: 31
+  element_type_id: 0x3fcbf304
+}
+array {
+  id: 0x84f80ecf
+  number_of_elements: 6
+  element_type_id: 0x9565759f
+}
+array {
+  id: 0x85299f4c
+  number_of_elements: 6
+  element_type_id: 0x92233392
+}
+array {
+  id: 0x861a0f9a
+  number_of_elements: 4
+  element_type_id: 0x295c7202
+}
+array {
+  id: 0x86438dd9
+  number_of_elements: 12
+  element_type_id: 0x295c7202
+}
+array {
+  id: 0x8656433b
+  number_of_elements: 31
+  element_type_id: 0x295c7202
+}
+array {
+  id: 0x87148e18
+  number_of_elements: 4
+  element_type_id: 0x2d66740a
+}
+array {
+  id: 0x872e6f07
+  number_of_elements: 4
+  element_type_id: 0x2d8df075
+}
+array {
+  id: 0x87394241
+  number_of_elements: 9
+  element_type_id: 0xb02b353a
+}
+array {
+  id: 0x87a3edc2
+  number_of_elements: 1
+  element_type_id: 0xc9a82d21
+}
+array {
+  id: 0x87a74aa9
+  number_of_elements: 36
+  element_type_id: 0x384f7d7c
+}
+array {
+  id: 0x87ca61bd
+  number_of_elements: 9
+  element_type_id: 0xb3e7bac9
+}
+array {
+  id: 0x87d617d1
+  number_of_elements: 31
+  element_type_id: 0x2f5d21aa
+}
+array {
+  id: 0x8840c268
+  number_of_elements: 98
+  element_type_id: 0x33756485
+}
+array {
+  id: 0x88659077
+  number_of_elements: 12
+  element_type_id: 0x11c404ba
+}
+array {
+  id: 0x8a2ac6fa
+  number_of_elements: 6
+  element_type_id: 0xae2e5549
+}
+array {
+  id: 0x8a5c4ad6
+  number_of_elements: 4
+  element_type_id: 0x18456730
+}
+array {
+  id: 0x8a624a56
+  number_of_elements: 4
+  element_type_id: 0x18bd6530
+}
+array {
+  id: 0x8a71b935
+  number_of_elements: 17
+  element_type_id: 0x3a3eb2f9
+}
+array {
+  id: 0x8a82103e
+  number_of_elements: 9
+  element_type_id: 0x86c67cc5
+}
+array {
+  id: 0x8aefc272
+  number_of_elements: 4
+  element_type_id: 0x1a8b45a0
+}
+array {
+  id: 0x8bda1c0f
+  number_of_elements: 6
+  element_type_id: 0xa9ed3e9e
+}
+array {
+  id: 0x8c42494b
+  number_of_elements: 1
+  element_type_id: 0xe62ebf07
+}
+array {
+  id: 0x8c52b023
+  number_of_elements: 4
+  element_type_id: 0x007e8ce4
+}
+array {
+  id: 0x8ca7b4cd
+  number_of_elements: 2048
+  element_type_id: 0x384f7d7c
+}
+array {
+  id: 0x8ca95ffa
+  number_of_elements: 4
+  element_type_id: 0x03913382
+}
+array {
+  id: 0x8cbe1332
+  number_of_elements: 4
+  element_type_id: 0x03cc00a2
+}
+array {
+  id: 0x8d2872f9
+  number_of_elements: 4
+  element_type_id: 0x0595878c
+}
+array {
+  id: 0x8d536703
+  number_of_elements: 512
+  element_type_id: 0xf313e71a
+}
+array {
+  id: 0x8d58bd1a
+  number_of_elements: 6
+  element_type_id: 0xb3e7bac9
+}
+array {
+  id: 0x8d724b7d
+  number_of_elements: 4
+  element_type_id: 0x04fd619c
+}
+array {
+  id: 0x8dab9ee6
+  number_of_elements: 6
+  element_type_id: 0xb02b353a
+}
+array {
+  id: 0x8dcc9654
+  number_of_elements: 4
+  element_type_id: 0x0606153b
+}
+array {
+  id: 0x8e7b8b93
+  number_of_elements: 4096
+  element_type_id: 0x384f7d7c
+}
+array {
+  id: 0x8ea78f33
+  number_of_elements: 4
+  element_type_id: 0x0baa70a7
+}
+array {
+  id: 0x8eb57b64
+  number_of_elements: 1
+  element_type_id: 0xedf277ba
+}
+array {
+  id: 0x8ee19617
+  number_of_elements: 4
+  element_type_id: 0x0ab21434
+}
+array {
+  id: 0x8f5ceaee
+  number_of_elements: 4
+  element_type_id: 0x0c47e7d1
+}
+array {
+  id: 0x8fc9368a
+  number_of_elements: 1
+  element_type_id: 0xe8034002
+}
+array {
+  id: 0x8ff52d56
+  number_of_elements: 4
+  element_type_id: 0x0ee0f933
+}
+array {
+  id: 0x904f12e1
+  number_of_elements: 9
+  element_type_id: 0xedf277ba
+}
+array {
+  id: 0x91412a6e
+  number_of_elements: 1
+  element_type_id: 0x92233392
+}
+array {
+  id: 0x9179b426
+  number_of_elements: 4
+  element_type_id: 0x74d29cf1
+}
+array {
+  id: 0x91820a9c
+  number_of_elements: 9
+  element_type_id: 0xeac6164c
+}
+array {
+  id: 0x92b820ce
+  number_of_elements: 9
+  element_type_id: 0xe62ebf07
+}
+array {
+  id: 0x93857c37
+  number_of_elements: 4
+  element_type_id: 0x7f21bcb4
+}
+array {
+  id: 0x93e3596e
+  number_of_elements: 6
+  element_type_id: 0xc9082b19
+}
+array {
+  id: 0x9457d4c7
+  number_of_elements: 512
+  element_type_id: 0x97012809
+}
+array {
+  id: 0x94a6f18b
+  number_of_elements: 6
+  element_type_id: 0xd41e888f
+}
+array {
+  id: 0x95171a6f
+  number_of_elements: 2048
+  element_type_id: 0x5e8dc7f4
+}
+array {
+  id: 0x955353ee
+  number_of_elements: 6
+  element_type_id: 0xd3c80119
+}
+array {
+  id: 0x958527d1
+  number_of_elements: 4
+  element_type_id: 0x6720d32f
+}
+array {
+  id: 0x964dc71a
+  number_of_elements: 4
+  element_type_id: 0x68035002
+}
+array {
+  id: 0x9699a1e3
+  number_of_elements: 6
+  element_type_id: 0xdce3c92e
+}
+array {
+  id: 0x9819cf84
+  number_of_elements: 1
+  element_type_id: 0xb740a439
+}
+array {
+  id: 0x982afc69
+  number_of_elements: 6
+  element_type_id: 0xe62ebf07
+}
+array {
+  id: 0x99300838
+  number_of_elements: 1
+  element_type_id: 0xb3e7bac9
+}
+array {
+  id: 0x997185c9
+  number_of_elements: 9
+  element_type_id: 0xc9082b19
+}
+array {
+  id: 0x9a1c0141
+  number_of_elements: 31
+  element_type_id: 0x58757be8
+}
+array {
+  id: 0x9addce46
+  number_of_elements: 6
+  element_type_id: 0xedf277ba
+}
+array {
+  id: 0x9b2d4673
+  number_of_elements: 4
+  element_type_id: 0x5d8155a5
+}
+array {
+  id: 0x9ba183a8
+  number_of_elements: 6
+  element_type_id: 0xe8034002
+}
+array {
+  id: 0x9bee62e7
+  number_of_elements: 4
+  element_type_id: 0x5e8dc7f4
+}
+array {
+  id: 0x9c404df6
+  number_of_elements: 6
+  element_type_id: 0xf784797b
+}
+array {
+  id: 0x9c44ff2a
+  number_of_elements: 4
+  element_type_id: 0x4027b0c0
+}
+array {
+  id: 0x9c53aa65
+  number_of_elements: 4
+  element_type_id: 0x407ae5fe
+}
+array {
+  id: 0x9c59388e
+  number_of_elements: 4
+  element_type_id: 0x4050ae51
+}
+array {
+  id: 0x9cbf428e
+  number_of_elements: 12
+  element_type_id: 0x42af4f5c
+}
+array {
+  id: 0x9cecb217
+  number_of_elements: 4
+  element_type_id: 0x42868434
+}
+array {
+  id: 0x9d2c4a95
+  number_of_elements: 4
+  element_type_id: 0x4585663f
+}
+array {
+  id: 0x9d9d538b
+  number_of_elements: 512
+  element_type_id: 0xb02b353a
+}
+array {
+  id: 0x9e24df5e
+  number_of_elements: 4
+  element_type_id: 0x49a73111
+}
+array {
+  id: 0x9e3f115f
+  number_of_elements: 4
+  element_type_id: 0x49c80917
+}
+array {
+  id: 0x9e96e428
+  number_of_elements: 1
+  element_type_id: 0xad7c0a89
+}
+array {
+  id: 0x9ea2d4c7
+  number_of_elements: 6
+  element_type_id: 0xfc0e1dbd
+}
+array {
+  id: 0x9f5fa8e8
+  number_of_elements: 9
+  element_type_id: 0xd1b09f9e
+}
+array {
+  id: 0xa047de54
+  number_of_elements: 4
+  element_type_id: 0xb02b353a
+}
+array {
+  id: 0xa0b4fda8
+  number_of_elements: 4
+  element_type_id: 0xb3e7bac9
+}
+array {
+  id: 0xa0ed7feb
+  number_of_elements: 12
+  element_type_id: 0xb3e7bac9
+}
+array {
+  id: 0xa0f8b109
+  number_of_elements: 31
+  element_type_id: 0xb3e7bac9
+}
+array {
+  id: 0xa13264c9
+  number_of_elements: 12
+  element_type_id: 0xb49bd643
+}
+array {
+  id: 0xa164938f
+  number_of_elements: 9
+  element_type_id: 0x295c7202
+}
+array {
+  id: 0xa18ea868
+  number_of_elements: 672
+  element_type_id: 0xb3e7bac9
+}
+array {
+  id: 0xa19e72f5
+  number_of_elements: 512
+  element_type_id: 0x4027b0c0
+}
+array {
+  id: 0xa1dc2b4a
+  number_of_elements: 1
+  element_type_id: 0x50573700
+}
+array {
+  id: 0xa3440799
+  number_of_elements: 9
+  element_type_id: 0x21de2259
+}
+array {
+  id: 0xa43786af
+  number_of_elements: 6
+  element_type_id: 0x165b541d
+}
+array {
+  id: 0xa4573b42
+  number_of_elements: 4
+  element_type_id: 0xa068a162
+}
+array {
+  id: 0xa4764ce0
+  number_of_elements: 4
+  element_type_id: 0xa0ed7feb
+}
+array {
+  id: 0xa4a6d75b
+  number_of_elements: 200
+  element_type_id: 0xb3e7bac9
+}
+array {
+  id: 0xa4b7a249
+  number_of_elements: 9
+  element_type_id: 0x3e10b518
+}
+array {
+  id: 0xa4e7cb57
+  number_of_elements: 1
+  element_type_id: 0x44b8b776
+}
+array {
+  id: 0xa54c07dd
+  number_of_elements: 23
+  element_type_id: 0x5e8dc7f4
+}
+array {
+  id: 0xa562355d
+  number_of_elements: 1
+  element_type_id: 0x42af4f5c
+}
+array {
+  id: 0xa634ef38
+  number_of_elements: 512
+  element_type_id: 0x5e8dc7f4
+}
+array {
+  id: 0xa675e9e1
+  number_of_elements: 6
+  element_type_id: 0x1f52e925
+}
+array {
+  id: 0xa6f7cbac
+  number_of_elements: 512
+  element_type_id: 0x5d8155a5
+}
+array {
+  id: 0xa80a04d8
+  number_of_elements: 6
+  element_type_id: 0x26ad5dc1
+}
+array {
+  id: 0xa80ed513
+  number_of_elements: 6
+  element_type_id: 0x26be1aee
+}
+array {
+  id: 0xa81e7ced
+  number_of_elements: 4
+  element_type_id: 0x914dbfdc
+}
+array {
+  id: 0xa824a6c9
+  number_of_elements: 4
+  element_type_id: 0x91a6d74c
+}
+array {
+  id: 0xa84ab8c0
+  number_of_elements: 4
+  element_type_id: 0x901eaf6a
+}
+array {
+  id: 0xa889935f
+  number_of_elements: 31
+  element_type_id: 0x92233392
+}
+array {
+  id: 0xa8c5dffe
+  number_of_elements: 4
+  element_type_id: 0x92233392
+}
+array {
+  id: 0xa8f97b24
+  number_of_elements: 6
+  element_type_id: 0x2560a232
+}
+array {
+  id: 0xabf64f28
+  number_of_elements: 6
+  element_type_id: 0x295c7202
+}
+array {
+  id: 0xac2791e9
+  number_of_elements: 6
+  element_type_id: 0x361b0907
+}
+array {
+  id: 0xad7c0a89
+  number_of_elements: 6
+  element_type_id: 0x33756485
+}
+array {
+  id: 0xada50e68
+  number_of_elements: 12
+  element_type_id: 0x86c67cc5
+}
+array {
+  id: 0xadbf8b75
+  number_of_elements: 4
+  element_type_id: 0x87ca61bd
+}
+array {
+  id: 0xae2e5549
+  number_of_elements: 6
+  element_type_id: 0x3e3c1b86
+}
+array {
+  id: 0xae4d8520
+  number_of_elements: 2048
+  element_type_id: 0xb3e7bac9
+}
+array {
+  id: 0xae993a3b
+  number_of_elements: 1
+  element_type_id: 0x6d4372c7
+}
+array {
+  id: 0xaf023c73
+  number_of_elements: 1
+  element_type_id: 0x6b2f6be6
+}
+array {
+  id: 0xafb28cf7
+  number_of_elements: 6
+  element_type_id: 0x384f7d7c
+}
+array {
+  id: 0xb00c15cd
+  number_of_elements: 17
+  element_type_id: 0xd3c80119
+}
+array {
+  id: 0xb02924b2
+  number_of_elements: 4
+  element_type_id: 0xf190dea2
+}
+array {
+  id: 0xb06c58f2
+  number_of_elements: 9
+  element_type_id: 0x6d7f5ff6
+}
+array {
+  id: 0xb07e9934
+  number_of_elements: 17
+  element_type_id: 0xd20232fd
+}
+array {
+  id: 0xb0c00a27
+  number_of_elements: 6
+  element_type_id: 0x4585663f
+}
+array {
+  id: 0xb19844ea
+  number_of_elements: 23
+  element_type_id: 0x0ddccb29
+}
+array {
+  id: 0xb2c19e78
+  number_of_elements: 1
+  element_type_id: 0x1c21e3c8
+}
+array {
+  id: 0xb2fbbbc4
+  number_of_elements: 9
+  element_type_id: 0x6720d32f
+}
+array {
+  id: 0xb34e9475
+  number_of_elements: 4
+  element_type_id: 0xfc0e1dbd
+}
+array {
+  id: 0xb3b6ef0f
+  number_of_elements: 4
+  element_type_id: 0xffeff056
+}
+array {
+  id: 0xb4693ee8
+  number_of_elements: 1
+  element_type_id: 0x0683618a
+}
+array {
+  id: 0xb4d0b861
+  number_of_elements: 4
+  element_type_id: 0xe276adef
+}
+array {
+  id: 0xb5054efe
+  number_of_elements: 4
+  element_type_id: 0xe5217790
+}
+array {
+  id: 0xb522cc16
+  number_of_elements: 17
+  element_type_id: 0xc7736674
+}
+array {
+  id: 0xb5c6bcdb
+  number_of_elements: 4
+  element_type_id: 0xe62ebf07
+}
+array {
+  id: 0xb6bc1f4d
+  number_of_elements: 17
+  element_type_id: 0xc9082b19
+}
+array {
+  id: 0xb6c106c1
+  number_of_elements: 6
+  element_type_id: 0x5d8155a5
+}
+array {
+  id: 0xb717646a
+  number_of_elements: 1
+  element_type_id: 0x0b7a0b83
+}
+array {
+  id: 0xb7237aa3
+  number_of_elements: 1
+  element_type_id: 0x0baa70a7
+}
+array {
+  id: 0xb7318ef4
+  number_of_elements: 4
+  element_type_id: 0xedf277ba
+}
+array {
+  id: 0xb740a439
+  number_of_elements: 988
+  element_type_id: 0x6720d32f
+}
+array {
+  id: 0xb77dc255
+  number_of_elements: 31
+  element_type_id: 0xedf277ba
+}
+array {
+  id: 0xb7fefe6a
+  number_of_elements: 4
+  element_type_id: 0xeecfb5c0
+}
+array {
+  id: 0xb8696763
+  number_of_elements: 6
+  element_type_id: 0x6720d32f
+}
+array {
+  id: 0xb8b86aa0
+  number_of_elements: 23
+  element_type_id: 0x295c7202
+}
+array {
+  id: 0xb8bf135c
+  number_of_elements: 4
+  element_type_id: 0xd3c80119
+}
+array {
+  id: 0xb914bfab
+  number_of_elements: 1
+  element_type_id: 0x33756485
+}
+array {
+  id: 0xb993d8a0
+  number_of_elements: 6
+  element_type_id: 0x60ca2c23
+}
+array {
+  id: 0xb9c7723b
+  number_of_elements: 4
+  element_type_id: 0xd6298487
+}
+array {
+  id: 0xba4dcbcc
+  number_of_elements: 1
+  element_type_id: 0x3e10b518
+}
+array {
+  id: 0xba52d680
+  number_of_elements: 9
+  element_type_id: 0x4585663f
+}
+array {
+  id: 0xbaadb024
+  number_of_elements: 1
+  element_type_id: 0x3d915ab9
+}
+array {
+  id: 0xbaf086c3
+  number_of_elements: 100
+  element_type_id: 0xd3c80119
+}
+array {
+  id: 0xbbc08245
+  number_of_elements: 512
+  element_type_id: 0x295c7202
+}
+array {
+  id: 0xbbda39d5
+  number_of_elements: 1
+  element_type_id: 0x384f7d7c
+}
+array {
+  id: 0xbbe142cb
+  number_of_elements: 4
+  element_type_id: 0xdeb14747
+}
+array {
+  id: 0xbbed302a
+  number_of_elements: 6
+  element_type_id: 0x69318e08
+}
+array {
+  id: 0xbd62e703
+  number_of_elements: 12
+  element_type_id: 0xc5d9d969
+}
+array {
+  id: 0xbe0f19dc
+  number_of_elements: 4
+  element_type_id: 0xc9082b19
+}
+array {
+  id: 0xbe2ea865
+  number_of_elements: 12
+  element_type_id: 0xc8e8e4f1
+}
+array {
+  id: 0xbe4edfe5
+  number_of_elements: 31
+  element_type_id: 0xc93e017b
+}
+array {
+  id: 0xbf0a1b8d
+  number_of_elements: 147
+  element_type_id: 0x5d8155a5
+}
+array {
+  id: 0xbf84419a
+  number_of_elements: 512
+  element_type_id: 0x384f7d7c
+}
+array {
+  id: 0xbf9efa0a
+  number_of_elements: 1
+  element_type_id: 0x295c7202
+}
+array {
+  id: 0xc0330c41
+  number_of_elements: 8
+  element_type_id: 0x9036114e
+}
+array {
+  id: 0xc0606f8b
+  element_type_id: 0x116785ed
+}
+array {
+  id: 0xc06de7e5
+  number_of_elements: 8
+  element_type_id: 0x914dbfdc
+}
+array {
+  id: 0xc0873542
+  element_type_id: 0x12faeeca
+}
+array {
+  id: 0xc0b644f6
+  number_of_elements: 8
+  element_type_id: 0x92233392
+}
+array {
+  id: 0xc0ded7fc
+  number_of_elements: 22
+  element_type_id: 0xb3e7bac9
+}
+array {
+  id: 0xc1a4aa72
+  element_type_id: 0x16749208
+}
+array {
+  id: 0xc1b820cc
+  element_type_id: 0x1606b8f1
+}
+array {
+  id: 0xc2031448
+  element_type_id: 0x18ea6ae3
+}
+array {
+  id: 0xc211d754
+  element_type_id: 0x18a16691
+}
+array {
+  id: 0xc216d7bc
+  element_type_id: 0x18bd6530
+}
+array {
+  id: 0xc227cae4
+  element_type_id: 0x18791053
+}
+array {
+  id: 0xc28f8f19
+  number_of_elements: 19
+  element_type_id: 0xb3e7bac9
+}
+array {
+  id: 0xc2903910
+  number_of_elements: 11
+  element_type_id: 0x29b77961
+}
+array {
+  id: 0xc2aafbc8
+  number_of_elements: 11
+  element_type_id: 0x295c7202
+}
+array {
+  id: 0xc3386ef4
+  element_type_id: 0x1c078010
+}
+array {
+  id: 0xc34e0d42
+  element_type_id: 0x1dde0ec8
+}
+array {
+  id: 0xc368826b
+  element_type_id: 0x1d44326e
+}
+array {
+  id: 0xc3a2e295
+  number_of_elements: 8
+  element_type_id: 0x9e71aa1e
+}
+array {
+  id: 0xc3ac8280
+  element_type_id: 0x1e5431c2
+}
+array {
+  id: 0xc3f77699
+  element_type_id: 0x1f3be1a4
+}
+array {
+  id: 0xc4104d1b
+  element_type_id: 0x00a70faf
+}
+array {
+  id: 0xc49c902c
+  number_of_elements: 15
+  element_type_id: 0xc9082b19
+}
+array {
+  id: 0xc4fb6843
+  element_type_id: 0x030b9acf
+}
+array {
+  id: 0xc505c003
+  number_of_elements: 5
+  element_type_id: 0xb3e7bac9
+}
+array {
+  id: 0xc58b1858
+  number_of_elements: 123
+  element_type_id: 0x92233392
+}
+array {
+  id: 0xc58bfbc7
+  number_of_elements: 14
+  element_type_id: 0x6720d32f
+}
+array {
+  id: 0xc6be3916
+  element_type_id: 0x0a1edf98
+}
+array {
+  id: 0xc6c4215b
+  element_type_id: 0x0bf6beaf
+}
+array {
+  id: 0xc6cbbd05
+  element_type_id: 0x0bc8cfd5
+}
+array {
+  id: 0xc6e69d29
+  element_type_id: 0x0b7c4f67
+}
+array {
+  id: 0xc72a241a
+  number_of_elements: 8
+  element_type_id: 0x8c52b023
+}
+array {
+  id: 0xc73ad3a1
+  number_of_elements: 11
+  element_type_id: 0x3f1cd3a6
+}
+array {
+  id: 0xc7fa214e
+  number_of_elements: 5
+  element_type_id: 0xb8183ffd
+}
+array {
+  id: 0xc81b91b5
+  element_type_id: 0x30887d17
+}
+array {
+  id: 0xc8c766a0
+  number_of_elements: 8
+  element_type_id: 0xb3e7bac9
+}
+array {
+  id: 0xc8e4d7d1
+  element_type_id: 0x33756485
+}
+array {
+  id: 0xc8f8a046
+  element_type_id: 0x3304badb
+}
+array {
+  id: 0xc918cb81
+  element_type_id: 0x348515c6
+}
+array {
+  id: 0xc9ff5105
+  element_type_id: 0x371b7fd6
+}
+array {
+  id: 0xca2a51af
+  element_type_id: 0x384f7d7c
+}
+array {
+  id: 0xca8f8b74
+  element_type_id: 0x3ad81610
+}
+array {
+  id: 0xcaaeb336
+  element_type_id: 0x3a5cf71b
+}
+array {
+  id: 0xcac5c418
+  number_of_elements: 8
+  element_type_id: 0xbbed302a
+}
+array {
+  id: 0xcb386ed4
+  number_of_elements: 26
+  element_type_id: 0x295c7202
+}
+array {
+  id: 0xcbd8574f
+  element_type_id: 0x3f8766fd
+}
+array {
+  id: 0xcc357790
+  element_type_id: 0x2033e582
+}
+array {
+  id: 0xcc8611b3
+  number_of_elements: 11
+  element_type_id: 0x11efdbed
+}
+array {
+  id: 0xcd229683
+  number_of_elements: 14
+  element_type_id: 0x4585663f
+}
+array {
+  id: 0xcd2b46c2
+  number_of_elements: 8
+  element_type_id: 0xa4573b42
+}
+array {
+  id: 0xcd61a67c
+  element_type_id: 0x2560a232
+}
+array {
+  id: 0xcd74e255
+  number_of_elements: 5
+  element_type_id: 0x92233392
+}
+array {
+  id: 0xcd9c1728
+  element_type_id: 0x26966763
+}
+array {
+  id: 0xce3ad630
+  number_of_elements: 8
+  element_type_id: 0xa811788b
+}
+array {
+  id: 0xce433191
+  number_of_elements: 15
+  element_type_id: 0xe276adef
+}
+array {
+  id: 0xce6e156f
+  element_type_id: 0x295e6e7f
+}
+array {
+  id: 0xce6e9270
+  element_type_id: 0x295c7202
+}
+array {
+  id: 0xceee2795
+  element_type_id: 0x2b5ea595
+}
+array {
+  id: 0xceef9f74
+  element_type_id: 0x2b584612
+}
+array {
+  id: 0xcf055502
+  element_type_id: 0x2cf36fc9
+}
+array {
+  id: 0xcf55352b
+  number_of_elements: 15
+  element_type_id: 0xe62ebf07
+}
+array {
+  id: 0xcf7fd541
+  element_type_id: 0x2d196ec6
+}
+array {
+  id: 0xcfd0c777
+  number_of_elements: 15
+  element_type_id: 0xe4397676
+}
+array {
+  id: 0xd00684ec
+  element_type_id: 0x50fc2872
+}
+array {
+  id: 0xd0778170
+  number_of_elements: 5
+  element_type_id: 0xe62ebf07
+}
+array {
+  id: 0xd09d338b
+  element_type_id: 0x5292f5ee
+}
+array {
+  id: 0xd0a80358
+  element_type_id: 0x524636a2
+}
+array {
+  id: 0xd0aa0537
+  number_of_elements: 255
+  element_type_id: 0x0faae5b1
+}
+array {
+  id: 0xd0adbf31
+  number_of_elements: 5
+  element_type_id: 0xe5464603
+}
+array {
+  id: 0xd0cc8854
+  number_of_elements: 8
+  element_type_id: 0xd3c80119
+}
+array {
+  id: 0xd0d5f663
+  number_of_elements: 65
+  element_type_id: 0x81facbaa
+}
+array {
+  id: 0xd1341eff
+  element_type_id: 0x5436403f
+}
+array {
+  id: 0xd2022e7c
+  number_of_elements: 5
+  element_type_id: 0xeff80337
+}
+array {
+  id: 0xd2501053
+  number_of_elements: 14
+  element_type_id: 0x384f7d7c
+}
+array {
+  id: 0xd2fe57e5
+  element_type_id: 0x5b1f6457
+}
+array {
+  id: 0xd3067a59
+  number_of_elements: 8
+  element_type_id: 0xdce3c92e
+}
+array {
+  id: 0xd32daa21
+  element_type_id: 0x5c509347
+}
+array {
+  id: 0xd359db99
+  element_type_id: 0x5d8155a5
+}
+array {
+  id: 0xd39aff0d
+  element_type_id: 0x5e8dc7f4
+}
+array {
+  id: 0xd3d96d30
+  number_of_elements: 8
+  element_type_id: 0xdf9f948b
+}
+array {
+  id: 0xd4f174a6
+  number_of_elements: 5
+  element_type_id: 0xf435685e
+}
+array {
+  id: 0xd614d38c
+  number_of_elements: 14
+  element_type_id: 0x295c7202
+}
+array {
+  id: 0xd657a70f
+  element_type_id: 0x49b8a7fd
+}
+array {
+  id: 0xd671084c
+  number_of_elements: 8
+  element_type_id: 0xc93e017b
+}
+array {
+  id: 0xd67c82d4
+  number_of_elements: 8
+  element_type_id: 0xc9082b19
+}
+array {
+  id: 0xd6e2e620
+  number_of_elements: 8
+  element_type_id: 0xcb71b8cb
+}
+array {
+  id: 0xd731b823
+  number_of_elements: 11
+  element_type_id: 0x7f317daf
+}
+array {
+  id: 0xd7fc9b01
+  number_of_elements: 14
+  element_type_id: 0x2efd5036
+}
+array {
+  id: 0xd898a5c1
+  number_of_elements: 255
+  element_type_id: 0x2f606668
+}
+array {
+  id: 0xd91ba70c
+  element_type_id: 0x7488a7f3
+}
+array {
+  id: 0xd9516bf6
+  number_of_elements: 8
+  element_type_id: 0xf5bf8f91
+}
+array {
+  id: 0xd97383e4
+  element_type_id: 0x75283450
+}
+array {
+  id: 0xd9c2196b
+  element_type_id: 0x77ee5e6d
+}
+array {
+  id: 0xda277458
+  number_of_elements: 15
+  element_type_id: 0xb3e7bac9
+}
+array {
+  id: 0xda50e95d
+  number_of_elements: 42
+  element_type_id: 0x29b77961
+}
+array {
+  id: 0xdabe6369
+  element_type_id: 0x7a1fb665
+}
+array {
+  id: 0xdc00bdae
+  number_of_elements: 5
+  element_type_id: 0xd7f24c7d
+}
+array {
+  id: 0xdc2b0406
+  element_type_id: 0x604a2bda
+}
+array {
+  id: 0xdc4d09b0
+  number_of_elements: 75
+  element_type_id: 0x733f1f0f
+}
+array {
+  id: 0xdd0e2ef7
+  number_of_elements: 5
+  element_type_id: 0xd3c80119
+}
+array {
+  id: 0xdd536304
+  number_of_elements: 255
+  element_type_id: 0x384f7d7c
+}
+array {
+  id: 0xddb527d3
+  number_of_elements: 8
+  element_type_id: 0xe62ebf07
+}
+array {
+  id: 0xddb93ca3
+  number_of_elements: 5
+  element_type_id: 0xd114484a
+}
+array {
+  id: 0xdddc2873
+  element_type_id: 0x67969a0f
+}
+array {
+  id: 0xdddee2d3
+  element_type_id: 0x679db08d
+}
+array {
+  id: 0xddf1ba3b
+  element_type_id: 0x6720d32f
+}
+array {
+  id: 0xdf3537b8
+  element_type_id: 0x6c32e522
+}
+array {
+  id: 0xdf3ea43b
+  number_of_elements: 1016
+  element_type_id: 0x0baa70a7
+}
+array {
+  id: 0xdf3f459c
+  element_type_id: 0x6c1b2db0
+}
+array {
+  id: 0xdfed0371
+  element_type_id: 0x6f523604
+}
+array {
+  id: 0xe06ae107
+  element_type_id: 0x914dbfdc
+}
+array {
+  id: 0xe09ad666
+  element_type_id: 0x928d625a
+}
+array {
+  id: 0xe0f63c72
+  element_type_id: 0x933eca09
+}
+array {
+  id: 0xe1becf83
+  number_of_elements: 15
+  element_type_id: 0x5d8155a5
+}
+array {
+  id: 0xe234e611
+  number_of_elements: 22
+  element_type_id: 0x384f7d7c
+}
+array {
+  id: 0xe275c051
+  element_type_id: 0x99313a85
+}
+array {
+  id: 0xe2f7ef45
+  number_of_elements: 5
+  element_type_id: 0x2c2f07d2
+}
+array {
+  id: 0xe3ab3231
+  number_of_elements: 5
+  element_type_id: 0x295c7202
+}
+array {
+  id: 0xe40409fa
+  number_of_elements: 11
+  element_type_id: 0xb3e7bac9
+}
+array {
+  id: 0xe42b6608
+  number_of_elements: 8
+  element_type_id: 0x0057b869
+}
+array {
+  id: 0xe4a8b649
+  number_of_elements: 8
+  element_type_id: 0x0258f96e
+}
+array {
+  id: 0xe4f72a06
+  number_of_elements: 11
+  element_type_id: 0xb02b353a
+}
+array {
+  id: 0xe51e71ac
+  number_of_elements: 8
+  element_type_id: 0x0483e6f8
+}
+array {
+  id: 0xe5217790
+  number_of_elements: 5
+  element_type_id: 0x33756485
+}
+array {
+  id: 0xe52a3418
+  number_of_elements: 44
+  element_type_id: 0x384f7d7c
+}
+array {
+  id: 0xe52f2f44
+  number_of_elements: 5
+  element_type_id: 0x334c07d5
+}
+array {
+  id: 0xe575a4be
+  number_of_elements: 26
+  element_type_id: 0x906b5bab
+}
+array {
+  id: 0xe59e5fb5
+  number_of_elements: 8
+  element_type_id: 0x06835e9c
+}
+array {
+  id: 0xe5b0e446
+  number_of_elements: 8
+  element_type_id: 0x0639b152
+}
+array {
+  id: 0xe68e6b4d
+  element_type_id: 0x8adf96f5
+}
+array {
+  id: 0xe6d2b814
+  number_of_elements: 8
+  element_type_id: 0x0bb0c019
+}
+array {
+  id: 0xe6d4143b
+  number_of_elements: 8
+  element_type_id: 0x0baa70a7
+}
+array {
+  id: 0xe7c8a269
+  number_of_elements: 5
+  element_type_id: 0x38d23361
+}
+array {
+  id: 0xe80ee274
+  element_type_id: 0xb0ddb211
+}
+array {
+  id: 0xe83343be
+  element_type_id: 0xb02b353a
+}
+array {
+  id: 0xe8a3834b
+  number_of_elements: 5
+  element_type_id: 0x057eb7eb
+}
+array {
+  id: 0xe8c06042
+  element_type_id: 0xb3e7bac9
+}
+array {
+  id: 0xe8c376d6
+  number_of_elements: 5
+  element_type_id: 0x04fd619c
+}
+array {
+  id: 0xe8e3d133
+  number_of_elements: 8
+  element_type_id: 0x33756485
+}
+array {
+  id: 0xe91636fe
+  element_type_id: 0xb4bee03b
+}
+array {
+  id: 0xea2d574d
+  number_of_elements: 8
+  element_type_id: 0x384f7d7c
+}
+array {
+  id: 0xea3b088f
+  number_of_elements: 8
+  element_type_id: 0x38160275
+}
+array {
+  id: 0xea789c46
+  number_of_elements: 5
+  element_type_id: 0x0e12cbdd
+}
+array {
+  id: 0xeb16b298
+  number_of_elements: 5
+  element_type_id: 0x0baa70a7
+}
+array {
+  id: 0xeb21f1bb
+  element_type_id: 0xbc61fd2c
+}
+array {
+  id: 0xeb5338e6
+  element_type_id: 0xbdaad85b
+}
+array {
+  id: 0xebbaa9d5
+  number_of_elements: 5
+  element_type_id: 0x091a1d90
+}
+array {
+  id: 0xebbfa31c
+  number_of_elements: 15
+  element_type_id: 0x7584e7da
+}
+array {
+  id: 0xebdb30a1
+  number_of_elements: 15
+  element_type_id: 0x7416a92c
+}
+array {
+  id: 0xec7c6db2
+  number_of_elements: 8
+  element_type_id: 0x210b9681
+}
+array {
+  id: 0xed223076
+  element_type_id: 0xa46efa19
+}
+array {
+  id: 0xee246fac
+  number_of_elements: 25
+  element_type_id: 0x295c7202
+}
+array {
+  id: 0xee2d724a
+  number_of_elements: 5
+  element_type_id: 0x1f4573ef
+}
+array {
+  id: 0xee699492
+  number_of_elements: 8
+  element_type_id: 0x295c7202
+}
+array {
+  id: 0xeec04f87
+  number_of_elements: 8
+  element_type_id: 0x2bfb1e57
+}
+array {
+  id: 0xeecfb5c0
+  number_of_elements: 8
+  element_type_id: 0x2bc4f74a
+}
+array {
+  id: 0xeeea5855
+  number_of_elements: 11
+  element_type_id: 0x985efc75
+}
+array {
+  id: 0xef3eb06a
+  number_of_elements: 42
+  element_type_id: 0xfc0e1dbd
+}
+array {
+  id: 0xf0341a7a
+  number_of_elements: 5
+  element_type_id: 0x6720d32f
+}
+array {
+  id: 0xf06dacd5
+  element_type_id: 0xd1508894
+}
+array {
+  id: 0xf0b9024f
+  element_type_id: 0xd20232fd
+}
+array {
+  id: 0xf0ba21be
+  number_of_elements: 14
+  element_type_id: 0xb3e7bac9
+}
+array {
+  id: 0xf114c9a4
+  element_type_id: 0xd4b51d53
+}
+array {
+  id: 0xf15ca227
+  number_of_elements: 11
+  element_type_id: 0xe68515bf
+}
+array {
+  id: 0xf15f38fe
+  number_of_elements: 8
+  element_type_id: 0x5586c3b0
+}
+array {
+  id: 0xf1764889
+  number_of_elements: 11
+  element_type_id: 0xe62ebf07
+}
+array {
+  id: 0xf1797553
+  element_type_id: 0xd503ee8c
+}
+array {
+  id: 0xf19da60e
+  element_type_id: 0xd690a3f8
+}
+array {
+  id: 0xf28e5a9a
+  number_of_elements: 15
+  element_type_id: 0x114301c2
+}
+array {
+  id: 0xf342c697
+  number_of_elements: 19
+  element_type_id: 0x74d29cf1
+}
+array {
+  id: 0xf35edd7b
+  number_of_elements: 8
+  element_type_id: 0x5d8155a5
+}
+array {
+  id: 0xf43b4ae0
+  number_of_elements: 19
+  element_type_id: 0x6934ad2c
+}
+array {
+  id: 0xf529a205
+  number_of_elements: 19
+  element_type_id: 0x6d7f0eb8
+}
+array {
+  id: 0xf5342386
+  number_of_elements: 15
+  element_type_id: 0x0faae5b1
+}
+array {
+  id: 0xf55fd19d
+  number_of_elements: 8
+  element_type_id: 0x4585663f
+}
+array {
+  id: 0xf58a026d
+  number_of_elements: 26
+  element_type_id: 0xd395c0e4
+}
+array {
+  id: 0xf67b8436
+  element_type_id: 0xc9082b19
+}
+array {
+  id: 0xf77e4d4d
+  number_of_elements: 15
+  element_type_id: 0x06835e9c
+}
+array {
+  id: 0xf810a0fb
+  number_of_elements: 14
+  element_type_id: 0x914dbfdc
+}
+array {
+  id: 0xf89d773e
+  number_of_elements: 5
+  element_type_id: 0x4585663f
+}
+array {
+  id: 0xf8b57ade
+  element_type_id: 0xf233d0b8
+}
+array {
+  id: 0xf8cd45b5
+  number_of_elements: 15
+  element_type_id: 0x384f7d7c
+}
+array {
+  id: 0xf95fb1e4
+  number_of_elements: 8
+  element_type_id: 0x7584e7da
+}
+array {
+  id: 0xf9a66782
+  number_of_elements: 15
+  element_type_id: 0x3de3f5a1
+}
+array {
+  id: 0xf9e80525
+  number_of_elements: 5
+  element_type_id: 0x4050ae51
+}
+array {
+  id: 0xfa03c3cb
+  number_of_elements: 15
+  element_type_id: 0x33756485
+}
+array {
+  id: 0xfa349bf7
+  number_of_elements: 8
+  element_type_id: 0x78284f97
+}
+array {
+  id: 0xfa7638a9
+  element_type_id: 0xf93ed965
+}
+array {
+  id: 0xfb3a099f
+  element_type_id: 0xfc0e1dbd
+}
+array {
+  id: 0xfbe43829
+  number_of_elements: 8
+  element_type_id: 0x7f6ac0ec
+}
+array {
+  id: 0xfc320bc5
+  element_type_id: 0xe02e14d6
+}
+array {
+  id: 0xfc37fa4b
+  number_of_elements: 42
+  element_type_id: 0xb02b353a
+}
+array {
+  id: 0xfc59be2e
+  number_of_elements: 44
+  element_type_id: 0x5d8155a5
+}
+array {
+  id: 0xfd17183f
+  element_type_id: 0xe4ba5b3d
+}
+array {
+  id: 0xfdb22131
+  element_type_id: 0xe62ebf07
+}
+array {
+  id: 0xfdf6bcd9
+  number_of_elements: 8
+  element_type_id: 0x6720d32f
+}
+array {
+  id: 0xfe384bcc
+  number_of_elements: 5
+  element_type_id: 0x5f1195f5
+}
+array {
+  id: 0xfe72eb90
+  number_of_elements: 8
+  element_type_id: 0x69318e08
+}
+array {
+  id: 0xfeb89bd6
+  number_of_elements: 65
+  element_type_id: 0x384f7d7c
+}
+array {
+  id: 0xff45131e
+  element_type_id: 0xedf277ba
+}
+array {
+  id: 0xff615fef
+  number_of_elements: 8
+  element_type_id: 0x6d7f5ff6
+}
+array {
+  id: 0xff7222f6
+  number_of_elements: 5
+  element_type_id: 0x5a38311c
+}
+array {
+  id: 0xffdb6969
+  element_type_id: 0xef8b9e67
+}
+member {
+  id: 0x205fa3df
+  type_id: 0x0e50ff6f
+}
+member {
+  id: 0x20748443
+  type_id: 0x0efc611f
+}
+member {
+  id: 0x2098ac9a
+  type_id: 0x0d4ccc92
+  offset: 832
+}
+member {
+  id: 0x209db56e
+  type_id: 0x0d58a5a8
+}
+member {
+  id: 0x20da7038
+  type_id: 0x0c479d40
+  offset: 840
+}
+member {
+  id: 0x20fd5371
+  type_id: 0x0cdb3dd6
+}
+member {
+  id: 0x2100940b
+  type_id: 0x0b2c203c
+}
+member {
+  id: 0x21034835
+  type_id: 0x0b2350c4
+}
+member {
+  id: 0x2104906c
+  type_id: 0x0b3c31a1
+}
+member {
+  id: 0x210bb47b
+  type_id: 0x0b00a1fe
+}
+member {
+  id: 0x213cb4e4
+  type_id: 0x0bdca382
+}
+member {
+  id: 0x21832044
+  type_id: 0x0922f100
+}
+member {
+  id: 0x219f0b9e
+  type_id: 0x09525e6b
+}
+member {
+  id: 0x21ff060a
+  type_id: 0x08d2683b
+}
+member {
+  id: 0x223fa1fa
+  type_id: 0x07d0e9f2
+  offset: 2048
+}
+member {
+  id: 0x22678130
+  type_id: 0x06b074d3
+}
+member {
+  id: 0x226947a6
+  type_id: 0x068b6e8b
+}
+member {
+  id: 0x2282ae92
+  type_id: 0x0524ca5a
+}
+member {
+  id: 0x22b4d212
+  type_id: 0x05fd3859
+}
+member {
+  id: 0x22c0fbbc
+  type_id: 0x042d9ee3
+}
+member {
+  id: 0x22ce0593
+  type_id: 0x0416665f
+}
+member {
+  id: 0x22e86cdc
+  type_id: 0x048fc360
+}
+member {
+  id: 0x230f36dc
+  type_id: 0x0312ab60
+}
+member {
+  id: 0x233f54d1
+  type_id: 0x03d32356
+}
+member {
+  id: 0x2380a48f
+  type_id: 0x012ce22f
+}
+member {
+  id: 0x2392bf81
+  type_id: 0x01648e16
+}
+member {
+  id: 0x23e47945
+  type_id: 0x00bf9506
+}
+member {
+  id: 0x23eda52b
+  type_id: 0x0098e4bc
+}
+member {
+  id: 0x2401b002
+  type_id: 0x1f289602
+  offset: 5632
+}
+member {
+  id: 0x24274642
+  type_id: 0x1fb359b5
+  offset: 4096
+}
+member {
+  id: 0x242c75d0
+  type_id: 0x1f9fa751
+}
+member {
+  id: 0x2456788b
+  type_id: 0x1e77923d
+}
+member {
+  id: 0x246f2632
+  type_id: 0x1e92c4b8
+  offset: 512
+}
+member {
+  id: 0x24894b45
+  type_id: 0x1d0b5d04
+}
+member {
+  id: 0x249af93b
+  type_id: 0x1d4594fc
+}
+member {
+  id: 0x24c431ea
+  type_id: 0x1c3eb7b9
+}
+member {
+  id: 0x24c43243
+  type_id: 0x1c3eb91d
+}
+member {
+  id: 0x24ca61cb
+  type_id: 0x1c07f73e
+}
+member {
+  id: 0x24e087c3
+  type_id: 0x1cac6f1f
+}
+member {
+  id: 0x2503427d
+  type_id: 0x1b2379e7
+}
+member {
+  id: 0x25060e06
+  type_id: 0x1b36480a
+}
+member {
+  id: 0x25298ce3
+  type_id: 0x1b88439e
+}
+member {
+  id: 0x252e0491
+  type_id: 0x1b966255
+}
+member {
+  id: 0x25ab4212
+  type_id: 0x1983785b
+}
+member {
+  id: 0x2612b435
+  type_id: 0x1764a0c5
+}
+member {
+  id: 0x2634e12c
+  type_id: 0x17fdeaab
+  offset: 2048
+}
+member {
+  id: 0x26428415
+  type_id: 0x16246045
+}
+member {
+  id: 0x266c1567
+  type_id: 0x169e258d
+}
+member {
+  id: 0x26977e15
+  type_id: 0x15738845
+}
+member {
+  id: 0x26c145c8
+  type_id: 0x142b6733
+}
+member {
+  id: 0x26c9c4e4
+  type_id: 0x14096380
+}
+member {
+  id: 0x26da8cc1
+  type_id: 0x14444314
+}
+member {
+  id: 0x26e6f511
+  type_id: 0x14b5a454
+}
+member {
+  id: 0x27031642
+  type_id: 0x13222919
+}
+member {
+  id: 0x27060459
+  type_id: 0x13366176
+}
+member {
+  id: 0x270727dd
+  type_id: 0x1332ef66
+}
+member {
+  id: 0x270bfa1f
+  type_id: 0x1301986c
+}
+member {
+  id: 0x270d1dfb
+  type_id: 0x131a07fe
+}
+member {
+  id: 0x27104b59
+  type_id: 0x136f5d75
+}
+member {
+  id: 0x2710bef2
+  type_id: 0x136c8bd8
+}
+member {
+  id: 0x27240f80
+  type_id: 0x13be4e13
+}
+member {
+  id: 0x27604dcc
+  type_id: 0x12af4722
+}
+member {
+  id: 0x277f4bd0
+  type_id: 0x12d35f52
+}
+member {
+  id: 0x27d75559
+  type_id: 0x10732577
+}
+member {
+  id: 0x27e3d457
+  type_id: 0x10a1214c
+}
+member {
+  id: 0x28026f1f
+  type_id: 0x2f27cc6c
+}
+member {
+  id: 0x286e0992
+  type_id: 0x2e965658
+}
+member {
+  id: 0x288e28bc
+  type_id: 0x2d16d2e0
+}
+member {
+  id: 0x288e89a5
+  type_id: 0x2d145686
+}
+member {
+  id: 0x289e68d9
+  type_id: 0x2d57d375
+}
+member {
+  id: 0x28acbbd7
+  type_id: 0x2d9c9f4f
+}
+member {
+  id: 0x28cca42f
+  type_id: 0x2c1ce0af
+}
+member {
+  id: 0x290dbbd8
+  type_id: 0x2b189f72
+}
+member {
+  id: 0x2961aaa2
+  type_id: 0x2aa8f2af
+  offset: 4608
+}
+member {
+  id: 0x2a406106
+  type_id: 0x262ff409
+}
+member {
+  id: 0x2a426327
+  type_id: 0x2627fc8d
+}
+member {
+  id: 0x2a513f2f
+  type_id: 0x266a8cae
+}
+member {
+  id: 0x2a99a59c
+  type_id: 0x2548e662
+}
+member {
+  id: 0x2ad966ef
+  type_id: 0x244bebad
+}
+member {
+  id: 0x2b0900e1
+  type_id: 0x230a7397
+}
+member {
+  id: 0x2b33b39f
+  type_id: 0x23e0a7c8
+  offset: 3584
+}
+member {
+  id: 0x2b37476e
+  type_id: 0x23f36daa
+}
+member {
+  id: 0x2b75dcb3
+  type_id: 0x22f902de
+}
+member {
+  id: 0x2bc5541a
+  type_id: 0x203b2079
+}
+member {
+  id: 0x2befc6c5
+  type_id: 0x20914098
+  offset: 1536
+}
+member {
+  id: 0x2bfbe1fc
+  type_id: 0x20c1f7e3
+}
+member {
+  id: 0x2c14bb60
+  type_id: 0x3f7c9d91
+}
+member {
+  id: 0x2c4c86e7
+  type_id: 0x3e1c6b8c
+}
+member {
+  id: 0x2c4f5ed4
+  type_id: 0x3e130b41
+}
+member {
+  id: 0x2c717118
+  type_id: 0x3eebb471
+}
+member {
+  id: 0x2c7b0ccb
+  type_id: 0x3ec2433c
+}
+member {
+  id: 0x2c96db22
+  type_id: 0x3d751c99
+}
+member {
+  id: 0x2d16b3a0
+  type_id: 0x3b74be91
+}
+member {
+  id: 0x2d400d39
+  type_id: 0x3a2e44f7
+}
+member {
+  id: 0x2d6cb85c
+  type_id: 0x3a9c9162
+}
+member {
+  id: 0x2d71506c
+  type_id: 0x3aeb31a3
+}
+member {
+  id: 0x2d9a297e
+  type_id: 0x3946d5eb
+}
+member {
+  id: 0x2db2c8b0
+  type_id: 0x39e552d0
+}
+member {
+  id: 0x2dc9a82f
+  type_id: 0x3808d0ae
+}
+member {
+  id: 0x2dd55573
+  type_id: 0x387b25de
+}
+member {
+  id: 0x2de93550
+  type_id: 0x388aa551
+}
+member {
+  id: 0x2e080f29
+  type_id: 0x370e4cb6
+}
+member {
+  id: 0x2e0a69cb
+  type_id: 0x3707d73e
+}
+member {
+  id: 0x2e1fd5ab
+  type_id: 0x375126bc
+}
+member {
+  id: 0x2e407ff3
+  type_id: 0x362f8fdc
+}
+member {
+  id: 0x2e898e1e
+  type_id: 0x3508486b
+}
+member {
+  id: 0x2ee1d79b
+  type_id: 0x34a92e7f
+}
+member {
+  id: 0x2f5313ba
+  type_id: 0x32623873
+  offset: 2560
+}
+member {
+  id: 0x2f71fc30
+  type_id: 0x32e980d1
+}
+member {
+  id: 0x2f731943
+  type_id: 0x32e2151e
+}
+member {
+  id: 0x2f7cad73
+  type_id: 0x32dcc5dc
+}
+member {
+  id: 0x2fbbfd62
+  type_id: 0x31c1859a
+}
+member {
+  id: 0x2fcec0ac
+  type_id: 0x301572a3
+}
+member {
+  id: 0x300353c5
+  type_id: 0x4f2326f3
+  offset: 1280
+}
+member {
+  id: 0x300b75af
+  type_id: 0x4f03a6ae
+}
+member {
+  id: 0x300f892a
+  type_id: 0x4f10779f
+  offset: 192
+}
+member {
+  id: 0x302f914f
+  type_id: 0x4f903dda
+  offset: 704
+}
+member {
+  id: 0x30345aac
+  type_id: 0x4fff3cac
+  offset: 96
+}
+member {
+  id: 0x303584ad
+  type_id: 0x4ff869b4
+  offset: 1216
+}
+member {
+  id: 0x303da1de
+  type_id: 0x4fd8e877
+  offset: 320
+}
+member {
+  id: 0x304242fd
+  type_id: 0x4e276861
+  offset: 64
+}
+member {
+  id: 0x304c3a6e
+  type_id: 0x4e1eb3a6
+  offset: 1344
+}
+member {
+  id: 0x30706b35
+  type_id: 0x4eefeb47
+  offset: 160
+}
+member {
+  id: 0x30708031
+  type_id: 0x4eec63b3
+  offset: 288
+}
+member {
+  id: 0x3075d67f
+  type_id: 0x4ef90480
+  offset: 1456
+}
+member {
+  id: 0x307b36dc
+  type_id: 0x4ec29f8c
+  offset: 32
+}
+member {
+  id: 0x309d59f5
+  type_id: 0x4d5b17c5
+}
+member {
+  id: 0x309f343f
+  type_id: 0x4d52b36b
+  offset: 64
+}
+member {
+  id: 0x30a4eaaa
+  type_id: 0x4dbdfdb0
+  offset: 128
+}
+member {
+  id: 0x30a73d6c
+  type_id: 0x4db29c07
+  offset: 3584
+}
+member {
+  id: 0x30c18aff
+  type_id: 0x4c287de0
+  offset: 96
+}
+member {
+  id: 0x30d0761f
+  type_id: 0x4c6fa86e
+}
+member {
+  id: 0x30d4ec9b
+  type_id: 0x4c7dc96d
+  offset: 1216
+}
+member {
+  id: 0x30e75ef9
+  type_id: 0x4cb3162b
+  offset: 448
+}
+member {
+  id: 0x30e851a7
+  type_id: 0x4c8f250a
+  offset: 64
+}
+member {
+  id: 0x30eeaef7
+  type_id: 0x4c94e8e8
+  offset: 192
+}
+member {
+  id: 0x310f528c
+  type_id: 0x4b1329a6
+  offset: 64
+}
+member {
+  id: 0x312862eb
+  type_id: 0x4b8fdcb5
+  offset: 128
+}
+member {
+  id: 0x3154e149
+  type_id: 0x4a7de6b3
+  offset: 64
+}
+member {
+  id: 0x315b0268
+  type_id: 0x4a427b1f
+  offset: 256
+}
+member {
+  id: 0x31669da2
+  type_id: 0x4ab41985
+  offset: 320
+}
+member {
+  id: 0x318695b6
+  type_id: 0x49340c50
+  offset: 896
+}
+member {
+  id: 0x31884a91
+  type_id: 0x490f5a55
+}
+member {
+  id: 0x318fd08b
+  type_id: 0x49113092
+  offset: 256
+}
+member {
+  id: 0x3190e1a6
+  type_id: 0x496df688
+}
+member {
+  id: 0x31aa1057
+  type_id: 0x49861740
+  offset: 96
+}
+member {
+  id: 0x31b40958
+  type_id: 0x49fe71bd
+  offset: 3136
+}
+member {
+  id: 0x31bc7886
+  type_id: 0x49df90a7
+  offset: 256
+}
+member {
+  id: 0x31d2390d
+  type_id: 0x4866b1cb
+  offset: 6656
+}
+member {
+  id: 0x31e4dfba
+  type_id: 0x48bd0268
+  offset: 224
+}
+member {
+  id: 0x31f470a9
+  type_id: 0x48ff9190
+  offset: 192
+}
+member {
+  id: 0x321ecf49
+  type_id: 0x47554d36
+}
+member {
+  id: 0x323da4b5
+  type_id: 0x47d8e06a
+  offset: 256
+}
+member {
+  id: 0x3265794f
+  type_id: 0x46bb9e3e
+  offset: 1216
+}
+member {
+  id: 0x326ba67e
+  type_id: 0x4680cff3
+  offset: 5632
+}
+member {
+  id: 0x32814327
+  type_id: 0x452b7c8e
+}
+member {
+  id: 0x32a8ea3c
+  type_id: 0x458dfb2e
+  offset: 960
+}
+member {
+  id: 0x32a95def
+  type_id: 0x458b21a2
+  offset: 96
+}
+member {
+  id: 0x32ae3ded
+  type_id: 0x459687a6
+}
+member {
+  id: 0x32b11489
+  type_id: 0x45ea05f9
+  offset: 2240
+}
+member {
+  id: 0x32de102a
+  type_id: 0x445630b8
+}
+member {
+  id: 0x32eac224
+  type_id: 0x4485655c
+  offset: 448
+}
+member {
+  id: 0x32ed40bb
+  type_id: 0x449b5046
+  offset: 768
+}
+member {
+  id: 0x32f3b9e8
+  type_id: 0x44e0bbd2
+  offset: 512
+}
+member {
+  id: 0x32f872a3
+  type_id: 0x44cf9d95
+  offset: 128
+}
+member {
+  id: 0x32f92d43
+  type_id: 0x44cad962
+  offset: 1024
+}
+member {
+  id: 0x330a99ba
+  type_id: 0x430409e7
+  offset: 320
+}
+member {
+  id: 0x330ec5e1
+  type_id: 0x4315409c
+  offset: 128
+}
+member {
+  id: 0x33293591
+  type_id: 0x438a815f
+  offset: 128
+}
+member {
+  id: 0x332df434
+  type_id: 0x4399942e
+  offset: 32
+}
+member {
+  id: 0x333ad0b9
+  type_id: 0x43c532f4
+}
+member {
+  id: 0x333aded0
+  type_id: 0x43c518d7
+  offset: 64
+}
+member {
+  id: 0x334ced9f
+  type_id: 0x421dce9b
+  offset: 704
+}
+member {
+  id: 0x336ede77
+  type_id: 0x42950f87
+  offset: 384
+}
+member {
+  id: 0x339f527f
+  type_id: 0x415339ed
+}
+member {
+  id: 0x33adf6e7
+  type_id: 0x41998d82
+  offset: 96
+}
+member {
+  id: 0x33ae9a78
+  type_id: 0x41943ad5
+  offset: 192
+}
+member {
+  id: 0x33af0a5f
+  type_id: 0x41925f27
+  offset: 384
+}
+member {
+  id: 0x33b8905f
+  type_id: 0x41cc22eb
+  offset: 64
+}
+member {
+  id: 0x33d3db2f
+  type_id: 0x40610f28
+  offset: 64
+}
+member {
+  id: 0x33f3b67a
+  type_id: 0x40e0a9fa
+}
+member {
+  id: 0x33f5d799
+  type_id: 0x40f9097c
+  offset: 128
+}
+member {
+  id: 0x33fa5fab
+  type_id: 0x40c70ebd
+}
+member {
+  id: 0x34016e97
+  type_id: 0x5f2be968
+  offset: 192
+}
+member {
+  id: 0x3403549d
+  type_id: 0x5f233302
+  offset: 352
+}
+member {
+  id: 0x34061209
+  type_id: 0x5f360cda
+  offset: 32
+}
+member {
+  id: 0x34066868
+  type_id: 0x5f37d1b0
+}
+member {
+  id: 0x34074a76
+  type_id: 0x5f3359ca
+}
+member {
+  id: 0x34079a50
+  type_id: 0x5f300ad4
+  offset: 64
+}
+member {
+  id: 0x3418b8d7
+  type_id: 0x5f4cb447
+  offset: 128
+}
+member {
+  id: 0x3419ac05
+  type_id: 0x5f48d381
+  offset: 64
+}
+member {
+  id: 0x341df286
+  type_id: 0x5f59bc43
+  offset: 384
+}
+member {
+  id: 0x34206e86
+  type_id: 0x5fafd98d
+  offset: 64
+}
+member {
+  id: 0x342cad37
+  type_id: 0x5f9cd74b
+  offset: 64
+}
+member {
+  id: 0x34350253
+  type_id: 0x5ffa422f
+  offset: 1152
+}
+member {
+  id: 0x3435281c
+  type_id: 0x5ffaf768
+  offset: 128
+}
+member {
+  id: 0x34366909
+  type_id: 0x5ff7d434
+}
+member {
+  id: 0x343d2c0f
+  type_id: 0x5fdadf32
+  offset: 320
+}
+member {
+  id: 0x343eab32
+  type_id: 0x5fd4dcd8
+}
+member {
+  id: 0x343f0acd
+  type_id: 0x5fd242c1
+  offset: 640
+}
+member {
+  id: 0x34437040
+  type_id: 0x5e23b110
+}
+member {
+  id: 0x3448034d
+  type_id: 0x5e0e7f88
+  offset: 256
+}
+member {
+  id: 0x34488f39
+  type_id: 0x5e0c51b7
+  offset: 1472
+}
+member {
+  id: 0x3451258d
+  type_id: 0x5e6ae626
+}
+member {
+  id: 0x3451a149
+  type_id: 0x5e68e6b1
+  offset: 64
+}
+member {
+  id: 0x345b10fd
+  type_id: 0x5e422cfb
+  offset: 320
+}
+member {
+  id: 0x345b12e5
+  type_id: 0x5e4227fb
+  offset: 1024
+}
+member {
+  id: 0x345f6930
+  type_id: 0x5e53dc24
+  offset: 704
+}
+member {
+  id: 0x34606826
+  type_id: 0x5eaff3ae
+  offset: 192
+}
+member {
+  id: 0x346c3fde
+  type_id: 0x5e9e8f68
+}
+member {
+  id: 0x347a54ed
+  type_id: 0x5ec718db
+  offset: 544
+}
+member {
+  id: 0x347e5155
+  type_id: 0x5ed73544
+}
+member {
+  id: 0x34805b66
+  type_id: 0x5d2f0e0f
+  offset: 64
+}
+member {
+  id: 0x34899d6a
+  type_id: 0x5d08323b
+  offset: 160
+}
+member {
+  id: 0x348f5d6c
+  type_id: 0x5d131624
+  offset: 64
+}
+member {
+  id: 0x349c23b4
+  type_id: 0x5d5ed2a3
+  offset: 512
+}
+member {
+  id: 0x34a07297
+  type_id: 0x5dafba4f
+}
+member {
+  id: 0x34a3e933
+  type_id: 0x5da1f3d6
+  offset: 128
+}
+member {
+  id: 0x34a73897
+  type_id: 0x5db28e31
+  offset: 1024
+}
+member {
+  id: 0x34aa3f0a
+  type_id: 0x5d86aa37
+  offset: 96
+}
+member {
+  id: 0x34be27ed
+  type_id: 0x5dd6efa4
+}
+member {
+  id: 0x34c421be
+  type_id: 0x5c3ef0a3
+  offset: 384
+}
+member {
+  id: 0x34d349be
+  type_id: 0x5c637323
+  offset: 576
+}
+member {
+  id: 0x34dc7c7e
+  type_id: 0x5c5fa7e4
+  offset: 96
+}
+member {
+  id: 0x34e08151
+  type_id: 0x5cac5fcc
+  offset: 896
+}
+member {
+  id: 0x34fb349d
+  type_id: 0x5cc2a264
+}
+member {
+  id: 0x34fb9312
+  type_id: 0x5cc01b50
+  offset: 128
+}
+member {
+  id: 0x34fced0e
+  type_id: 0x5cdddb34
+  offset: 320
+}
+member {
+  id: 0x350e85d0
+  type_id: 0x5b144298
+  offset: 576
+}
+member {
+  id: 0x351d74b1
+  type_id: 0x5b5b8eb5
+  offset: 512
+}
+member {
+  id: 0x3522cd70
+  type_id: 0x5ba545d0
+}
+member {
+  id: 0x353b064f
+  type_id: 0x5bc27631
+  offset: 320
+}
+member {
+  id: 0x353d48f5
+  type_id: 0x5bdb70e0
+  offset: 192
+}
+member {
+  id: 0x3551435a
+  type_id: 0x5a6b6efc
+  offset: 64
+}
+member {
+  id: 0x3568359b
+  type_id: 0x5a8e8177
+  offset: 128
+}
+member {
+  id: 0x357170d2
+  type_id: 0x5aebb510
+  offset: 384
+}
+member {
+  id: 0x3572b0d9
+  type_id: 0x5ae4b375
+}
+member {
+  id: 0x35af4bad
+  type_id: 0x59934750
+  offset: 1280
+}
+member {
+  id: 0x35b130ba
+  type_id: 0x59eaab0f
+  offset: 1280
+}
+member {
+  id: 0x35b86f03
+  type_id: 0x59cfcc1c
+}
+member {
+  id: 0x35c171e2
+  type_id: 0x582ba361
+  offset: 2688
+}
+member {
+  id: 0x35cd5ee6
+  type_id: 0x581b0b88
+}
+member {
+  id: 0x35cdb84a
+  type_id: 0x5818bd5b
+  offset: 512
+}
+member {
+  id: 0x35ea5b97
+  type_id: 0x58870dc8
+  offset: 64
+}
+member {
+  id: 0x36245558
+  type_id: 0x57bf00b8
+  offset: 576
+}
+member {
+  id: 0x364ab1f7
+  type_id: 0x56048ec7
+  offset: 2112
+}
+member {
+  id: 0x364b4150
+  type_id: 0x56037e9c
+  offset: 1408
+}
+member {
+  id: 0x36752018
+  type_id: 0x56faddc1
+  offset: 840
+}
+member {
+  id: 0x36961302
+  type_id: 0x557609c1
+  offset: 1088
+}
+member {
+  id: 0x369a12d0
+  type_id: 0x554628d6
+  offset: 64
+}
+member {
+  id: 0x369a926b
+  type_id: 0x55442a38
+  offset: 64
+}
+member {
+  id: 0x36a51755
+  type_id: 0x55ba3ec3
+  offset: 64
+}
+member {
+  id: 0x36ade005
+  type_id: 0x5599d322
+  offset: 192
+}
+member {
+  id: 0x36c08cca
+  type_id: 0x542c6f59
+  offset: 512
+}
+member {
+  id: 0x36c41f11
+  type_id: 0x543e0a1c
+  offset: 384
+}
+member {
+  id: 0x36c9824c
+  type_id: 0x54087a69
+  offset: 992
+}
+member {
+  id: 0x36c9c189
+  type_id: 0x5409672a
+  offset: 6976
+}
+member {
+  id: 0x36d168ea
+  type_id: 0x546bc03d
+  offset: 64
+}
+member {
+  id: 0x36e6413b
+  type_id: 0x54b76778
+  offset: 64
+}
+member {
+  id: 0x36fb8f0a
+  type_id: 0x54c04e96
+  offset: 256
+}
+member {
+  id: 0x371515be
+  type_id: 0x537a3f0f
+  offset: 640
+}
+member {
+  id: 0x3726cc57
+  type_id: 0x53b5414d
+}
+member {
+  id: 0x37465748
+  type_id: 0x52370a3a
+  offset: 128
+}
+member {
+  id: 0x3766a4dd
+  type_id: 0x52b4e365
+}
+member {
+  id: 0x3769db75
+  type_id: 0x52891b8e
+  offset: 384
+}
+member {
+  id: 0x376caae5
+  type_id: 0x529cdb86
+}
+member {
+  id: 0x376f5eba
+  type_id: 0x52930afb
+}
+member {
+  id: 0x37be6f93
+  type_id: 0x51d7edf0
+  offset: 10432
+}
+member {
+  id: 0x37c98b2e
+  type_id: 0x50085a6b
+  offset: 480
+}
+member {
+  id: 0x37e17339
+  type_id: 0x50ab9f3a
+  offset: 960
+}
+member {
+  id: 0x37e177b8
+  type_id: 0x50aba8bb
+  offset: 384
+}
+member {
+  id: 0x37f149da
+  type_id: 0x50eb577a
+}
+member {
+  id: 0x37f52c8e
+  type_id: 0x50fafc25
+  offset: 66880
+}
+member {
+  id: 0x3801ddd5
+  type_id: 0x6f2909ad
+  offset: 832
+}
+member {
+  id: 0x38620a39
+  type_id: 0x6ea6707c
+  offset: 22272
+}
+member {
+  id: 0x3866bc41
+  type_id: 0x6eb4b694
+  offset: 160
+}
+member {
+  id: 0x386d7ab3
+  type_id: 0x6e9b8bbb
+  offset: 352
+}
+member {
+  id: 0x3875cd22
+  type_id: 0x6ef94499
+}
+member {
+  id: 0x38a2ba12
+  type_id: 0x6da4bf51
+  offset: 128
+}
+member {
+  id: 0x38be6a3c
+  type_id: 0x6dd7c107
+  offset: 640
+}
+member {
+  id: 0x38c01e38
+  type_id: 0x6c2e2493
+  offset: 512
+}
+member {
+  id: 0x38c4c69b
+  type_id: 0x6c3d6f5d
+  offset: 4416
+}
+member {
+  id: 0x38e67335
+  type_id: 0x6cb7a0bb
+  offset: 1024
+}
+member {
+  id: 0x38f9d2be
+  type_id: 0x6cc91de2
+  offset: 128
+}
+member {
+  id: 0x39193c98
+  type_id: 0x6b4a8270
+}
+member {
+  id: 0x394b4495
+  type_id: 0x6a0371c1
+  offset: 64
+}
+member {
+  id: 0x395e097c
+  type_id: 0x6a5655e1
+}
+member {
+  id: 0x397f1ce9
+  type_id: 0x6ad203b6
+}
+member {
+  id: 0x3987082b
+  type_id: 0x6932433a
+  offset: 64
+}
+member {
+  id: 0x398a03cc
+  type_id: 0x69066ca6
+  offset: 64
+}
+member {
+  id: 0x398b7926
+  type_id: 0x6903870d
+  offset: 64
+}
+member {
+  id: 0x39a6859a
+  type_id: 0x69b475fe
+  offset: 64
+}
+member {
+  id: 0x39a7da61
+  type_id: 0x69b13f9a
+  offset: 96
+}
+member {
+  id: 0x39b53975
+  type_id: 0x69fa9768
+  offset: 256
+}
+member {
+  id: 0x39e9b87f
+  type_id: 0x6888b6e5
+  offset: 128
+}
+member {
+  id: 0x39ff19b6
+  type_id: 0x68d21466
+  offset: 256
+}
+member {
+  id: 0x3a3e30f1
+  type_id: 0x67d69fb5
+  offset: 512
+}
+member {
+  id: 0x3a3e9211
+  type_id: 0x67d43857
+}
+member {
+  id: 0x3a7ed482
+  type_id: 0x66d53bfd
+  offset: 640
+}
+member {
+  id: 0x3a81b82a
+  type_id: 0x6528bf21
+  offset: 8
+}
+member {
+  id: 0x3a8b0ed7
+  type_id: 0x65024d05
+  offset: 384
+}
+member {
+  id: 0x3a91b492
+  type_id: 0x65688551
+  offset: 128
+}
+member {
+  id: 0x3a931eaa
+  type_id: 0x6562193e
+  offset: 64
+}
+member {
+  id: 0x3aa631b9
+  type_id: 0x65b6b45a
+  offset: 256
+}
+member {
+  id: 0x3ab4cae6
+  type_id: 0x65fd480f
+  offset: 64
+}
+member {
+  id: 0x3abe25ae
+  type_id: 0x65d6c360
+  offset: 576
+}
+member {
+  id: 0x3ade5d50
+  type_id: 0x645716d5
+  offset: 64
+}
+member {
+  id: 0x3adf0b6e
+  type_id: 0x6452444e
+  offset: 640
+}
+member {
+  id: 0x3b09e1df
+  type_id: 0x6309d066
+  offset: 128
+}
+member {
+  id: 0x3b12171b
+  type_id: 0x6366329e
+  offset: 8320
+}
+member {
+  id: 0x3b233b1b
+  type_id: 0x63a2a892
+  offset: 32
+}
+member {
+  id: 0x3b3d4f5b
+  type_id: 0x63db5ef9
+  offset: 64
+}
+member {
+  id: 0x3b3d55bb
+  type_id: 0x63db26fc
+}
+member {
+  id: 0x3b65917c
+  type_id: 0x62b835e0
+}
+member {
+  id: 0x3b659256
+  type_id: 0x62b8394b
+}
+member {
+  id: 0x3b659257
+  type_id: 0x62b8394c
+}
+member {
+  id: 0x3b82c26c
+  type_id: 0x61255a86
+  offset: 192
+}
+member {
+  id: 0x3b87518b
+  type_id: 0x61331134
+  offset: 128
+}
+member {
+  id: 0x3b8dd38d
+  type_id: 0x611904de
+  offset: 16
+}
+member {
+  id: 0x3b9c7f08
+  type_id: 0x615fb8dc
+  offset: 32
+}
+member {
+  id: 0x3ba19b7e
+  type_id: 0x61a83f50
+  offset: 768
+}
+member {
+  id: 0x3bb33d1d
+  type_id: 0x61e297e1
+  offset: 64
+}
+member {
+  id: 0x3bc43305
+  type_id: 0x603e99d0
+  offset: 2368
+}
+member {
+  id: 0x3bd41d95
+  type_id: 0x607e3493
+  offset: 11776
+}
+member {
+  id: 0x3bd94fab
+  type_id: 0x604b5d38
+  offset: 64
+}
+member {
+  id: 0x3bde97bc
+  type_id: 0x60542ee3
+}
+member {
+  id: 0x3be2aae8
+  type_id: 0x60a4ff34
+  offset: 1056
+}
+member {
+  id: 0x3be5ec8e
+  type_id: 0x60b9d14d
+  offset: 288
+}
+member {
+  id: 0x3be967b6
+  type_id: 0x608bfd4c
+  offset: 64
+}
+member {
+  id: 0x3c006bca
+  type_id: 0x7f2fc026
+  offset: 320
+}
+member {
+  id: 0x3c05c887
+  type_id: 0x7f397688
+  offset: 1056
+}
+member {
+  id: 0x3c0aea42
+  type_id: 0x7f05fffa
+  offset: 1600
+}
+member {
+  id: 0x3c0f0a11
+  type_id: 0x7f1262ac
+  offset: 16
+}
+member {
+  id: 0x3c3b7173
+  type_id: 0x7fc392d6
+  offset: 128
+}
+member {
+  id: 0x3c430170
+  type_id: 0x7e22739a
+  offset: 384
+}
+member {
+  id: 0x3c4aa836
+  type_id: 0x7e04d0cb
+}
+member {
+  id: 0x3c5a40db
+  type_id: 0x7e47737d
+}
+member {
+  id: 0x3c5ee17e
+  type_id: 0x7e55c032
+  offset: 1088
+}
+member {
+  id: 0x3c5f2e17
+  type_id: 0x7e52fca0
+  offset: 32
+}
+member {
+  id: 0x3c66e6e0
+  type_id: 0x7eb5f266
+  offset: 1280
+}
+member {
+  id: 0x3c73293a
+  type_id: 0x7ee2c77e
+  offset: 64
+}
+member {
+  id: 0x3c74448b
+  type_id: 0x7eff4537
+  offset: 128
+}
+member {
+  id: 0x3c767a21
+  type_id: 0x7ef7bf9e
+  offset: 128
+}
+member {
+  id: 0x3c7d4866
+  type_id: 0x7edb420c
+  offset: 64
+}
+member {
+  id: 0x3c7d48fe
+  type_id: 0x7edb75e7
+  offset: 96
+}
+member {
+  id: 0x3cac7aec
+  type_id: 0x7d9f9ba1
+}
+member {
+  id: 0x3caf7635
+  type_id: 0x7d93a8c7
+}
+member {
+  id: 0x3ce71ba5
+  type_id: 0x7cb21c2a
+  offset: 256
+}
+member {
+  id: 0x3cedf871
+  type_id: 0x7c998251
+  offset: 64
+}
+member {
+  id: 0x3cfc75af
+  type_id: 0x7cdf9376
+  offset: 1088
+}
+member {
+  id: 0x3d036096
+  type_id: 0x7b23ef96
+  offset: 448
+}
+member {
+  id: 0x3d1a48d1
+  type_id: 0x7b4751fa
+  offset: 256
+}
+member {
+  id: 0x3d2323b2
+  type_id: 0x7ba2ddfd
+  offset: 192
+}
+member {
+  id: 0x3d264381
+  type_id: 0x7bb7591e
+  offset: 128
+}
+member {
+  id: 0x3d4ad86e
+  type_id: 0x7a05328e
+  offset: 192
+}
+member {
+  id: 0x3d6f3f3c
+  type_id: 0x7a92abe9
+  offset: 128
+}
+member {
+  id: 0x3d830300
+  type_id: 0x79227c12
+}
+member {
+  id: 0x3d8d751b
+  type_id: 0x791ba47c
+}
+member {
+  id: 0x3d958b01
+  type_id: 0x797868f8
+  offset: 32
+}
+member {
+  id: 0x3dbd80ff
+  type_id: 0x79d85976
+  offset: 896
+}
+member {
+  id: 0x3dccc171
+  type_id: 0x781d56f3
+  offset: 192
+}
+member {
+  id: 0x3ddcd715
+  type_id: 0x785d3fc1
+  offset: 64
+}
+member {
+  id: 0x3df96135
+  type_id: 0x78cbc02a
+  offset: 32
+}
+member {
+  id: 0x3e1ae96f
+  type_id: 0x7745c8ef
+  offset: 1472
+}
+member {
+  id: 0x3e2f835f
+  type_id: 0x7790432b
+  offset: 3072
+}
+member {
+  id: 0x3e4f626d
+  type_id: 0x7613f9a7
+}
+member {
+  id: 0x3e5d0376
+  type_id: 0x765a5eef
+  offset: 192
+}
+member {
+  id: 0x3e670f18
+  type_id: 0x76b2536c
+  offset: 320
+}
+member {
+  id: 0x3e69e790
+  type_id: 0x7689fdd5
+  offset: 64
+}
+member {
+  id: 0x3e7e5067
+  type_id: 0x76d7220a
+  offset: 64
+}
+member {
+  id: 0x3e89384c
+  type_id: 0x750a938f
+  offset: 256
+}
+member {
+  id: 0x3e9c69fd
+  type_id: 0x755ff98b
+  offset: 25600
+}
+member {
+  id: 0x3ea9d836
+  type_id: 0x758936c4
+  offset: 96
+}
+member {
+  id: 0x3eb1b037
+  type_id: 0x75e896c0
+  offset: 96
+}
+member {
+  id: 0x3eb58aae
+  type_id: 0x75f86d28
+  offset: 160
+}
+member {
+  id: 0x3ebdb54f
+  type_id: 0x75d88f20
+  offset: 1344
+}
+member {
+  id: 0x3ec11e42
+  type_id: 0x742a145b
+  offset: 1472
+}
+member {
+  id: 0x3ec4525e
+  type_id: 0x743f3706
+  offset: 5248
+}
+member {
+  id: 0x3ec9f2e1
+  type_id: 0x7409a812
+  offset: 64
+}
+member {
+  id: 0x3eea17c5
+  type_id: 0x748621ee
+  offset: 832
+}
+member {
+  id: 0x3ef88201
+  type_id: 0x74cc5f1e
+  offset: 128
+}
+member {
+  id: 0x3efb7088
+  type_id: 0x74c3ae4c
+  offset: 1024
+}
+member {
+  id: 0x3f0e6b4d
+  type_id: 0x7317df8a
+  offset: 256
+}
+member {
+  id: 0x3f155004
+  type_id: 0x737b0daa
+  offset: 2816
+}
+member {
+  id: 0x3f170cb1
+  type_id: 0x73725cdd
+  offset: 2048
+}
+member {
+  id: 0x3f1a9be2
+  type_id: 0x73443d22
+  offset: 768
+}
+member {
+  id: 0x3f25e3b3
+  type_id: 0x73b9d605
+  offset: 5120
+}
+member {
+  id: 0x3f37220a
+  type_id: 0x73f2da81
+  offset: 768
+}
+member {
+  id: 0x3f4dfae4
+  type_id: 0x7219af6f
+  offset: 32
+}
+member {
+  id: 0x3f510463
+  type_id: 0x726a721b
+  offset: 64
+}
+member {
+  id: 0x3f5111eb
+  type_id: 0x726a0350
+  offset: 32
+}
+member {
+  id: 0x3f556da1
+  type_id: 0x727bf591
+  offset: 48
+}
+member {
+  id: 0x3f558b0b
+  type_id: 0x72784323
+  offset: 320
+}
+member {
+  id: 0x3f591033
+  type_id: 0x724a30dd
+}
+member {
+  id: 0x3f60dd39
+  type_id: 0x72ad065b
+  offset: 256
+}
+member {
+  id: 0x3f6251d7
+  type_id: 0x72a72a93
+  offset: 448
+}
+member {
+  id: 0x3f6281e0
+  type_id: 0x72a47c5c
+  offset: 1408
+}
+member {
+  id: 0x3f659a69
+  type_id: 0x72b8332f
+  offset: 896
+}
+member {
+  id: 0x3f6beef1
+  type_id: 0x7281f2df
+  offset: 2112
+}
+member {
+  id: 0x3f79f6bc
+  type_id: 0x72c9a84f
+  offset: 256
+}
+member {
+  id: 0x3f7d3152
+  type_id: 0x72da9250
+  offset: 128
+}
+member {
+  id: 0x3f7ffccd
+  type_id: 0x72d190a3
+  offset: 64
+}
+member {
+  id: 0x3f855871
+  type_id: 0x713b2aa5
+  offset: 1152
+}
+member {
+  id: 0x3fc4fd06
+  type_id: 0x703d8408
+}
+member {
+  id: 0x3fccc8c0
+  type_id: 0x701d5f83
+  offset: 224
+}
+member {
+  id: 0x3fd6133e
+  type_id: 0x70763ce9
+}
+member {
+  id: 0x3fee6444
+  type_id: 0x7097e100
+}
+member {
+  id: 0x3ff2757d
+  type_id: 0x70e783e8
+  offset: 96
+}
+member {
+  id: 0x70e5811c
+  name: "APP_data"
+  type_id: 0x7392269c
+  offset: 96
+}
+member {
+  id: 0x6e76d493
+  name: "APP_len"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x8750736d
+  name: "APPn"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x0147efbb
+  name: "ASS_poll_count"
+  type_id: 0x6720d32f
+  offset: 1440
+}
+member {
+  id: 0x6012493f
+  name: "AlignmentErrors"
+  type_id: 0x92233392
+  offset: 320
+}
+member {
+  id: 0xf6aa09ff
+  name: "BroadcastFramesReceivedOK"
+  type_id: 0x92233392
+  offset: 1152
+}
+member {
+  id: 0xeddb500a
+  name: "BroadcastFramesXmittedOK"
+  type_id: 0x92233392
+  offset: 960
+}
+member {
+  id: 0xdb523a9f
+  name: "COM_data"
+  type_id: 0x7392269c
+  offset: 608
+}
+member {
+  id: 0xbafda30b
+  name: "COM_len"
+  type_id: 0x6720d32f
+  offset: 576
+}
+member {
+  id: 0xa49bcaed
+  name: "CarrierSenseErrors"
+  type_id: 0x92233392
+  offset: 704
+}
+member {
+  id: 0xc39ac173
+  name: "ContainerID"
+  type_id: 0x60ca2c23
+  offset: 32
+}
+member {
+  id: 0xb54e06e6
+  name: "FrameCheckSequenceErrors"
+  type_id: 0x92233392
+  offset: 256
+}
+member {
+  id: 0xecb7e052
+  name: "FrameTooLongErrors"
+  type_id: 0x92233392
+  offset: 1344
+}
+member {
+  id: 0xca8b5878
+  name: "FramesAbortedDueToXSColls"
+  type_id: 0x92233392
+  offset: 576
+}
+member {
+  id: 0x54ec9758
+  name: "FramesLostDueToIntMACRcvError"
+  type_id: 0x92233392
+  offset: 832
+}
+member {
+  id: 0x96dabdda
+  name: "FramesLostDueToIntMACXmitError"
+  type_id: 0x92233392
+  offset: 640
+}
+member {
+  id: 0x40d066e8
+  name: "FramesReceivedOK"
+  type_id: 0x92233392
+  offset: 192
+}
+member {
+  id: 0x9dd761bd
+  name: "FramesTransmittedOK"
+  type_id: 0x92233392
+}
+member {
+  id: 0x4763bb60
+  name: "FramesWithDeferredXmissions"
+  type_id: 0x92233392
+  offset: 448
+}
+member {
+  id: 0x29c0ac93
+  name: "FramesWithExcessiveDeferral"
+  type_id: 0x92233392
+  offset: 1024
+}
+member {
+  id: 0xc31a401f
+  name: "InOctetsDecrypted"
+  type_id: 0xedf277ba
+  offset: 64
+}
+member {
+  id: 0xfacb73b6
+  name: "InOctetsValidated"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x2c50828d
+  name: "InPktsBadTag"
+  type_id: 0xedf277ba
+  offset: 256
+}
+member {
+  id: 0xefc28b54
+  name: "InPktsDelayed"
+  type_id: 0xedf277ba
+  offset: 192
+}
+member {
+  id: 0xf7a437c5
+  name: "InPktsInvalid"
+  type_id: 0xedf277ba
+  offset: 320
+}
+member {
+  id: 0xf7afe1f1
+  name: "InPktsInvalid"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xceb56fc2
+  name: "InPktsLate"
+  type_id: 0xedf277ba
+  offset: 384
+}
+member {
+  id: 0x1dd80c1f
+  name: "InPktsNoSCI"
+  type_id: 0xedf277ba
+  offset: 384
+}
+member {
+  id: 0x2c901a70
+  name: "InPktsNoTag"
+  type_id: 0xedf277ba
+  offset: 192
+}
+member {
+  id: 0x1a2534fc
+  name: "InPktsNotUsingSA"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x1a2eeaaf
+  name: "InPktsNotUsingSA"
+  type_id: 0xedf277ba
+  offset: 512
+}
+member {
+  id: 0xdfa2ebaf
+  name: "InPktsNotValid"
+  type_id: 0xedf277ba
+  offset: 448
+}
+member {
+  id: 0xdfa934f1
+  name: "InPktsNotValid"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xd0818ab0
+  name: "InPktsOK"
+  type_id: 0xedf277ba
+  offset: 256
+}
+member {
+  id: 0xd08a56d3
+  name: "InPktsOK"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x40b96a74
+  name: "InPktsOverrun"
+  type_id: 0xedf277ba
+  offset: 448
+}
+member {
+  id: 0x194a3117
+  name: "InPktsUnchecked"
+  type_id: 0xedf277ba
+  offset: 128
+}
+member {
+  id: 0xfcd57d78
+  name: "InPktsUnknownSCI"
+  type_id: 0xedf277ba
+  offset: 320
+}
+member {
+  id: 0x002015f1
+  name: "InPktsUntagged"
+  type_id: 0xedf277ba
+  offset: 64
+}
+member {
+  id: 0xc7418cf7
+  name: "InPktsUnusedSA"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0xc74a508f
+  name: "InPktsUnusedSA"
+  type_id: 0xedf277ba
+  offset: 576
+}
+member {
+  id: 0xa227ee08
+  name: "InRangeLengthErrors"
+  type_id: 0x92233392
+  offset: 1216
+}
+member {
+  id: 0x029c2afc
+  name: "LateCollisions"
+  type_id: 0x92233392
+  offset: 512
+}
+member {
+  id: 0xf02eff79
+  name: "MACControlFramesReceived"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0xcda73178
+  name: "MACControlFramesTransmitted"
+  type_id: 0x92233392
+}
+member {
+  id: 0x0784653e
+  name: "MaxPower"
+  type_id: 0x914dbfdc
+  offset: 352
+}
+member {
+  id: 0xd467f274
+  name: "MulticastFramesReceivedOK"
+  type_id: 0x92233392
+  offset: 1088
+}
+member {
+  id: 0xdc2f6254
+  name: "MulticastFramesXmittedOK"
+  type_id: 0x92233392
+  offset: 896
+}
+member {
+  id: 0x97a613b0
+  name: "MultipleCollisionFrames"
+  type_id: 0x92233392
+  offset: 128
+}
+member {
+  id: 0xfabdd592
+  name: "OctetsReceivedOK"
+  type_id: 0x92233392
+  offset: 768
+}
+member {
+  id: 0xc9d71d9b
+  name: "OctetsTransmittedOK"
+  type_id: 0x92233392
+  offset: 384
+}
+member {
+  id: 0xd590f436
+  name: "OutOctetsEncrypted"
+  type_id: 0xedf277ba
+  offset: 192
+}
+member {
+  id: 0x0606d979
+  name: "OutOctetsProtected"
+  type_id: 0xedf277ba
+  offset: 128
+}
+member {
+  id: 0x864b662d
+  name: "OutOfRangeLengthField"
+  type_id: 0x92233392
+  offset: 1280
+}
+member {
+  id: 0x558027a1
+  name: "OutPktsEncrypted"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x558bf2b3
+  name: "OutPktsEncrypted"
+  type_id: 0xedf277ba
+  offset: 64
+}
+member {
+  id: 0xaf324578
+  name: "OutPktsProtected"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xaf3999b0
+  name: "OutPktsProtected"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x5c9b797b
+  name: "OutPktsTooLong"
+  type_id: 0xedf277ba
+  offset: 128
+}
+member {
+  id: 0x7efa8968
+  name: "OutPktsUntagged"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0xbaeeecf8
+  name: "PSS_poll_count"
+  type_id: 0x6720d32f
+  offset: 1408
+}
+member {
+  id: 0x1b168134
+  name: "S"
+  type_id: 0x4ba73e2d
+}
+member {
+  id: 0xdaf9bd67
+  name: "SAK_work"
+  type_id: 0x1f3c8679
+  offset: 6080
+}
+member {
+  id: 0x7c8807d5
+  name: "SingleCollisionFrames"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0x71c66907
+  name: "SymbolErrorDuringCarrier"
+  type_id: 0x92233392
+}
+member {
+  id: 0xe8b65c9e
+  name: "TX_BUF_BYTE_x_hidden"
+  type_id: 0x5d8155a5
+  offset: 64
+  bitsize: 1
+}
+member {
+  id: 0x107e7ca8
+  name: "UnsupportedOpcodesReceived"
+  type_id: 0x92233392
+  offset: 128
+}
+member {
+  id: 0xc7e42e59
+  name: "_160"
+  type_id: 0x312fa971
+  offset: 24
+}
+member {
+  id: 0x0ff0634e
+  name: "_320"
+  type_id: 0x312fa971
+  offset: 48
+}
+member {
+  id: 0x426f7b70
+  name: "_80"
+  type_id: 0x312fa971
+}
+member {
+  id: 0xfc4129b1
+  name: "____srcu_idx"
+  type_id: 0x6720d32f
+  offset: 352
+}
+member {
+  id: 0x36aedf4a
+  name: "__align"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0x7842c32a
+  name: "__bi_cnt"
+  type_id: 0x74d29cf1
+  offset: 896
+}
+member {
+  id: 0x5135346a
+  name: "__bi_remaining"
+  type_id: 0x74d29cf1
+  offset: 224
+}
+member {
+  id: 0x1937cd0c
+  name: "__cloned_offset"
+  type_id: 0xe8c06042
+  offset: 1008
+}
+member {
+  id: 0xe4f4148f
+  name: "__collisions"
+  type_id: 0xb02b353a
+}
+member {
+  id: 0xb62baaf3
+  name: "__count"
+  type_id: 0xa722c13e
+}
+member {
+  id: 0x581df983
+  name: "__crt_alg"
+  type_id: 0x00defc2c
+  offset: 128
+}
+member {
+  id: 0x80836247
+  name: "__crt_ctx"
+  type_id: 0xc216d7bc
+  offset: 512
+}
+member {
+  id: 0x759069c8
+  name: "__ctx"
+  type_id: 0xc216d7bc
+  offset: 64
+}
+member {
+  id: 0x75906a36
+  name: "__ctx"
+  type_id: 0xc216d7bc
+  offset: 1024
+}
+member {
+  id: 0x75906b40
+  name: "__ctx"
+  type_id: 0xc216d7bc
+  offset: 3584
+}
+member {
+  id: 0xf46b8ff9
+  name: "__data"
+  type_id: 0x1162409a
+  offset: 16
+}
+member {
+  id: 0xf4b20642
+  name: "__data"
+  type_id: 0xc8e4d7d1
+  offset: 384
+}
+member {
+  id: 0xb47ed33a
+  name: "__data_len"
+  type_id: 0x4585663f
+  offset: 352
+}
+member {
+  id: 0xf4d5cba6
+  name: "__devices"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0x6d24d29f
+  name: "__empty_array"
+  type_id: 0x186c44db
+}
+member {
+  id: 0x3cf3a247
+  name: "__empty_bufs"
+  type_id: 0x186c44db
+}
+member {
+  id: 0x2cf33eb6
+  name: "__empty_data"
+  type_id: 0x186c44db
+}
+member {
+  id: 0x156970b1
+  name: "__empty_insns"
+  type_id: 0x186c44db
+}
+member {
+  id: 0xee58a827
+  name: "__empty_insnsi"
+  type_id: 0x186c44db
+}
+member {
+  id: 0x4d7a62a3
+  name: "__empty_ptr"
+  type_id: 0x186c44db
+}
+member {
+  id: 0xbdb59ae1
+  name: "__filler"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0x183ffc0d
+  name: "__fl_common"
+  type_id: 0x5a0946d3
+}
+member {
+  id: 0xb84bd82e
+  name: "__flags"
+  type_id: 0x4585663f
+  offset: 512
+}
+member {
+  id: 0x87c6ed94
+  name: "__gr_offs"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0xb4bbd2af
+  name: "__gr_top"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0x3482fa57
+  name: "__head"
+  type_id: 0x33756485
+  offset: 576
+}
+member {
+  id: 0x983c1d18
+  name: "__hyp_running_vcpu"
+  type_id: 0x08dcfb76
+  offset: 14528
+}
+member {
+  id: 0x841d3835
+  name: "__i_nlink"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x1d90045d
+  name: "__iter_idx"
+  type_id: 0x33756485
+  offset: 640
+}
+member {
+  id: 0xa7e1214e
+  name: "__link_ext_substate"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x5f19e504
+  name: "__lock"
+  type_id: 0xc8b17aa7
+}
+member {
+  id: 0x5cfa992f
+  name: "__lruvec"
+  type_id: 0xce2040d6
+  offset: 56064
+}
+member {
+  id: 0xf63f2604
+  name: "__lstate"
+  type_id: 0x1892e9b4
+  offset: 8
+}
+member {
+  id: 0xf0778c7b
+  name: "__memslots"
+  type_id: 0xae993a3b
+  offset: 960
+}
+member {
+  id: 0x12f2249e
+  name: "__multicast"
+  type_id: 0xb02b353a
+}
+member {
+  id: 0xd6544089
+  name: "__nents"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0xc815302a
+  name: "__nfct_init_offset"
+  type_id: 0x186c44db
+  offset: 1280
+}
+member {
+  id: 0x4ba3f52c
+  name: "__offset"
+  type_id: 0x4585663f
+  offset: 448
+}
+member {
+  id: 0xe51e511b
+  name: "__pad"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0xe548408d
+  name: "__pad"
+  type_id: 0xb0312d5a
+  offset: 848
+}
+member {
+  id: 0xe54b97ac
+  name: "__pad"
+  type_id: 0xb3e7bac9
+  offset: 40
+}
+member {
+  id: 0xc46d15c4
+  name: "__pad1"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xc4b1bab6
+  name: "__pad1"
+  type_id: 0x3a8cf6d8
+}
+member {
+  id: 0xc4b1be57
+  name: "__pad1"
+  type_id: 0x3a8cf6d8
+  offset: 64
+}
+member {
+  id: 0x86715b21
+  name: "__pad2"
+  type_id: 0x3a8cf6d8
+  offset: 64
+}
+member {
+  id: 0x86aee850
+  name: "__pad2"
+  type_id: 0xe532a446
+  offset: 128
+}
+member {
+  id: 0x86c562ac
+  name: "__pad2"
+  type_id: 0x8eb57b64
+  offset: 64
+}
+member {
+  id: 0x4730f2b3
+  name: "__pad3"
+  type_id: 0x3a8cf6d8
+  offset: 64
+}
+member {
+  id: 0x4785bd2c
+  name: "__pad3"
+  type_id: 0x8fc9368a
+  offset: 16
+}
+member {
+  id: 0x0e2c03cf
+  name: "__pad4"
+  type_id: 0xe532a446
+  offset: 128
+}
+member {
+  id: 0xddf65eaa
+  name: "__page_flags"
+  type_id: 0x33756485
+}
+member {
+  id: 0xa765e551
+  name: "__page_refcount"
+  type_id: 0x74d29cf1
+  offset: 416
+}
+member {
+  id: 0xd18542dd
+  name: "__pg_advance"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x75979878
+  name: "__pkt_type_offset"
+  type_id: 0xe8c06042
+}
+member {
+  id: 0x434399f9
+  name: "__pkt_vlan_present_offset"
+  type_id: 0xe8c06042
+  offset: 16
+}
+member {
+  id: 0x980ba38a
+  name: "__rb_parent_color"
+  type_id: 0x33756485
+}
+member {
+  id: 0xb3bfc1c1
+  name: "__rcu_head"
+  type_id: 0xe3222f5b
+}
+member {
+  id: 0x021ee2b5
+  name: "__rcu_icq_cache"
+  type_id: 0x2efd5036
+}
+member {
+  id: 0x26d9f5f6
+  name: "__refcnt"
+  type_id: 0x74d29cf1
+  offset: 512
+}
+member {
+  id: 0x701327dc
+  name: "__remaining"
+  type_id: 0x4585663f
+  offset: 480
+}
+member {
+  id: 0x44af06da
+  name: "__req_common"
+  type_id: 0x61a74d47
+}
+member {
+  id: 0x2574fc12
+  name: "__res0"
+  type_id: 0xb3e7bac9
+  offset: 48
+}
+member {
+  id: 0x4d351f5a
+  name: "__res1"
+  type_id: 0xb3e7bac9
+  offset: 56
+}
+member {
+  id: 0x5e084727
+  name: "__reserved"
+  type_id: 0x78356643
+}
+member {
+  id: 0x5e19498b
+  name: "__reserved"
+  type_id: 0x693364cb
+  offset: 768
+}
+member {
+  id: 0x5e255be6
+  name: "__reserved"
+  type_id: 0x5522ef22
+  offset: 4160
+}
+member {
+  id: 0x5e9651c5
+  name: "__reserved"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x5ed0cb87
+  name: "__reserved"
+  type_id: 0xa0b4fda8
+  offset: 32
+}
+member {
+  id: 0x5ee63f2d
+  name: "__reserved"
+  type_id: 0x964dc71a
+  offset: 256
+}
+member {
+  id: 0xa8994d6f
+  name: "__reserved"
+  type_id: 0xc9082b19
+  bitsize: 19
+}
+member {
+  id: 0x75b365a3
+  name: "__reserved1"
+  type_id: 0x5434eb98
+  offset: 192
+}
+member {
+  id: 0x348ee187
+  name: "__reserved2"
+  type_id: 0x2a585e4f
+  offset: 160
+}
+member {
+  id: 0x42248362
+  name: "__reserved_1"
+  type_id: 0xedf277ba
+  offset: 358
+  bitsize: 26
+}
+member {
+  id: 0x9ded1b85
+  name: "__reserved_1"
+  type_id: 0xe62ebf07
+  offset: 608
+}
+member {
+  id: 0xd5acdefc
+  name: "__reserved_2"
+  type_id: 0xe8034002
+  offset: 880
+}
+member {
+  id: 0x146e52b1
+  name: "__reserved_3"
+  type_id: 0xe62ebf07
+  offset: 928
+}
+member {
+  id: 0x139acaa4
+  name: "__rx_bytes"
+  type_id: 0xb02b353a
+}
+member {
+  id: 0x8751d772
+  name: "__rx_compressed"
+  type_id: 0xb02b353a
+}
+member {
+  id: 0x188c1100
+  name: "__rx_crc_errors"
+  type_id: 0xb02b353a
+}
+member {
+  id: 0xdaaa2fd5
+  name: "__rx_dropped"
+  type_id: 0xb02b353a
+}
+member {
+  id: 0xc43734c7
+  name: "__rx_errors"
+  type_id: 0xb02b353a
+}
+member {
+  id: 0xfecef22b
+  name: "__rx_fifo_errors"
+  type_id: 0xb02b353a
+}
+member {
+  id: 0x7cb52b3e
+  name: "__rx_frame_errors"
+  type_id: 0xb02b353a
+}
+member {
+  id: 0x491cb80e
+  name: "__rx_length_errors"
+  type_id: 0xb02b353a
+}
+member {
+  id: 0xebdd3968
+  name: "__rx_missed_errors"
+  type_id: 0xb02b353a
+}
+member {
+  id: 0xca60e328
+  name: "__rx_over_errors"
+  type_id: 0xb02b353a
+}
+member {
+  id: 0xc5ebe684
+  name: "__rx_packets"
+  type_id: 0xb02b353a
+}
+member {
+  id: 0x2e2d509e
+  name: "__sector"
+  type_id: 0xd0b3a203
+  offset: 384
+}
+member {
+  id: 0x8ca3627c
+  name: "__sk_common"
+  type_id: 0x61a74d47
+}
+member {
+  id: 0x11319dfd
+  name: "__stack"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0xa175f0a0
+  name: "__state"
+  type_id: 0x4585663f
+  offset: 384
+}
+member {
+  id: 0xf30556e2
+  name: "__store"
+  type_id: 0x80c20070
+  offset: 512
+}
+member {
+  id: 0x016b62b4
+  name: "__subtree_last"
+  type_id: 0x92233392
+  offset: 640
+}
+member {
+  id: 0x016b69bb
+  name: "__subtree_last"
+  type_id: 0x92233392
+  offset: 1088
+}
+member {
+  id: 0x01ca355d
+  name: "__subtree_last"
+  type_id: 0x33756485
+  offset: 320
+}
+member {
+  id: 0x5c60dedf
+  name: "__targets"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0x5c6f393c
+  name: "__tmp"
+  type_id: 0x92233392
+}
+member {
+  id: 0x403c1936
+  name: "__tx_aborted_errors"
+  type_id: 0xb02b353a
+}
+member {
+  id: 0x2f065dcc
+  name: "__tx_bytes"
+  type_id: 0xb02b353a
+}
+member {
+  id: 0xe0feb68b
+  name: "__tx_carrier_errors"
+  type_id: 0xb02b353a
+}
+member {
+  id: 0xdf160d99
+  name: "__tx_compressed"
+  type_id: 0xb02b353a
+}
+member {
+  id: 0x312d72de
+  name: "__tx_dropped"
+  type_id: 0xb02b353a
+}
+member {
+  id: 0x179bf477
+  name: "__tx_errors"
+  type_id: 0xb02b353a
+}
+member {
+  id: 0x5613a1d4
+  name: "__tx_fifo_errors"
+  type_id: 0xb02b353a
+}
+member {
+  id: 0x888be014
+  name: "__tx_heartbeat_errors"
+  type_id: 0xb02b353a
+}
+member {
+  id: 0x446f5470
+  name: "__tx_packets"
+  type_id: 0xb02b353a
+}
+member {
+  id: 0x9d7943a7
+  name: "__tx_window_errors"
+  type_id: 0xb02b353a
+}
+member {
+  id: 0x87aab722
+  name: "__unused"
+  type_id: 0x914dbfdc
+  offset: 242
+  bitsize: 14
+}
+member {
+  id: 0x9086e58b
+  name: "__unused"
+  type_id: 0x4585663f
+  offset: 384
+}
+member {
+  id: 0x206928e2
+  name: "__use"
+  type_id: 0x6720d32f
+  offset: 544
+}
+member {
+  id: 0xfbf767cc
+  name: "__vm_flags"
+  type_id: 0x3b1bfa21
+}
+member {
+  id: 0x9aaa3037
+  name: "__vr_offs"
+  type_id: 0x6720d32f
+  offset: 224
+}
+member {
+  id: 0x8e6c4f6e
+  name: "__vr_top"
+  type_id: 0x18bd6530
+  offset: 128
+}
+member {
+  id: 0xd3a2d9f3
+  name: "_addr"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0x5a01ffcb
+  name: "_addr_bnd"
+  type_id: 0x03a4fa40
+}
+member {
+  id: 0x36e2594d
+  name: "_addr_lsb"
+  type_id: 0xb0312d5a
+}
+member {
+  id: 0xf6e79dd5
+  name: "_addr_pkey"
+  type_id: 0x277164cf
+}
+member {
+  id: 0xdf6a20ec
+  name: "_arch"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x872b7759
+  name: "_band"
+  type_id: 0xfc0e1dbd
+}
+member {
+  id: 0x3c39b2b2
+  name: "_batch_count"
+  type_id: 0x4585663f
+  offset: 288
+}
+member {
+  id: 0x14c8c4f0
+  name: "_call_addr"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0xbc8df851
+  name: "_compound_pad_1"
+  type_id: 0x33756485
+}
+member {
+  id: 0x78c8ec18
+  name: "_compound_pad_2"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xd8ff7fa3
+  name: "_data"
+  type_id: 0x33756485
+}
+member {
+  id: 0x6f364740
+  name: "_dummy_bnd"
+  type_id: 0xea2d574d
+}
+member {
+  id: 0xfc935744
+  name: "_dummy_pkey"
+  type_id: 0xea2d574d
+}
+member {
+  id: 0x3d20f367
+  name: "_f"
+  type_id: 0xca2a51af
+  offset: 864
+}
+member {
+  id: 0xabeba8c6
+  name: "_fd"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x55466c91
+  name: "_flags"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x559335d4
+  name: "_flags"
+  type_id: 0x33756485
+  offset: 1856
+}
+member {
+  id: 0xc196ead9
+  name: "_flags_1"
+  type_id: 0x33756485
+  offset: 512
+}
+member {
+  id: 0x73f4e935
+  name: "_folio_dtor"
+  type_id: 0x5d8155a5
+  offset: 640
+}
+member {
+  id: 0xb4a7dfee
+  name: "_folio_nr_pages"
+  type_id: 0x4585663f
+  offset: 736
+}
+member {
+  id: 0x110adfeb
+  name: "_folio_order"
+  type_id: 0x5d8155a5
+  offset: 648
+}
+member {
+  id: 0x6d2dba43
+  name: "_index"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0xf6a502a9
+  name: "_key"
+  type_id: 0xb94e10c7
+  offset: 64
+}
+member {
+  id: 0x382a0c12
+  name: "_kill"
+  type_id: 0x068b6444
+}
+member {
+  id: 0xb74e1877
+  name: "_lock"
+  type_id: 0xa7c362b0
+}
+member {
+  id: 0x141fddc5
+  name: "_lower"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0xa3c1e262
+  name: "_mapcount"
+  type_id: 0x74d29cf1
+}
+member {
+  id: 0xa3c1e3f0
+  name: "_mapcount"
+  type_id: 0x74d29cf1
+  offset: 384
+}
+member {
+  id: 0xf0757ecd
+  name: "_metrics"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0xbd981866
+  name: "_msg"
+  type_id: 0x3e10b518
+}
+member {
+  id: 0x3e759921
+  name: "_net"
+  type_id: 0xb335d16f
+  offset: 10816
+}
+member {
+  id: 0x3e759bfb
+  name: "_net"
+  type_id: 0xb335d16f
+  offset: 9216
+}
+member {
+  id: 0x3e759d99
+  name: "_net"
+  type_id: 0xb335d16f
+  offset: 320
+}
+member {
+  id: 0x6713c24e
+  name: "_nfct"
+  type_id: 0x33756485
+  offset: 832
+}
+member {
+  id: 0x2c95e938
+  name: "_nr_pages"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0x82e2b777
+  name: "_overrun"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0xcb455660
+  name: "_pad1_"
+  type_id: 0xadc524dd
+  offset: 512
+}
+member {
+  id: 0xcb45579f
+  name: "_pad1_"
+  type_id: 0xadc524dd
+  offset: 1536
+}
+member {
+  id: 0xcb455b08
+  name: "_pad1_"
+  type_id: 0xadc524dd
+  offset: 12800
+}
+member {
+  id: 0xcb455f52
+  name: "_pad1_"
+  type_id: 0xadc524dd
+  offset: 55808
+}
+member {
+  id: 0x1aacf678
+  name: "_pad2_"
+  type_id: 0xadc524dd
+  offset: 1024
+}
+member {
+  id: 0x1aacf6ee
+  name: "_pad2_"
+  type_id: 0xadc524dd
+  offset: 11264
+}
+member {
+  id: 0x1aacf90c
+  name: "_pad2_"
+  type_id: 0xadc524dd
+  offset: 70656
+}
+member {
+  id: 0x1aacf97b
+  name: "_pad2_"
+  type_id: 0xadc524dd
+  offset: 14848
+}
+member {
+  id: 0x1e2ef2aa
+  name: "_pad3_"
+  type_id: 0xadc524dd
+  offset: 11776
+}
+member {
+  id: 0xbed29020
+  name: "_perf"
+  type_id: 0x2e56cf79
+}
+member {
+  id: 0x1517dd06
+  name: "_pflags"
+  type_id: 0x33756485
+  offset: 384
+}
+member {
+  id: 0x7b851b7b
+  name: "_pid"
+  type_id: 0x763389c7
+}
+member {
+  id: 0xc9573605
+  name: "_pincount"
+  type_id: 0x74d29cf1
+  offset: 704
+}
+member {
+  id: 0xe7d715f9
+  name: "_pkey"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x622cd598
+  name: "_pp_mapping_pad"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0xb9c33f00
+  name: "_pt_pad_1"
+  type_id: 0x33756485
+}
+member {
+  id: 0xea06fe30
+  name: "_pt_pad_2"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0xebd725d9
+  name: "_qproc"
+  type_id: 0xac7cd8b5
+}
+member {
+  id: 0x5f094371
+  name: "_refcount"
+  type_id: 0x74d29cf1
+  offset: 416
+}
+member {
+  id: 0x0c5ee3fd
+  name: "_resv"
+  type_id: 0xb7568934
+  offset: 2048
+}
+member {
+  id: 0x37e5cb8e
+  name: "_rt"
+  type_id: 0x068b4f89
+}
+member {
+  id: 0x24d59e7d
+  name: "_rx"
+  type_id: 0x312fcf8b
+  offset: 6208
+}
+member {
+  id: 0xfdc1a7ec
+  name: "_sifields"
+  type_id: 0xa4c2ec96
+  offset: 128
+}
+member {
+  id: 0xaf421d98
+  name: "_sigchld"
+  type_id: 0x068b7aef
+}
+member {
+  id: 0x85b2141a
+  name: "_sigfault"
+  type_id: 0x2c8b6d33
+}
+member {
+  id: 0xfce8408c
+  name: "_sigpoll"
+  type_id: 0x398c63e7
+}
+member {
+  id: 0x72a93276
+  name: "_sigsys"
+  type_id: 0x1d7af2d8
+}
+member {
+  id: 0xaf3705dd
+  name: "_sigval"
+  type_id: 0x57fec3c8
+  offset: 64
+}
+member {
+  id: 0x9e35fa9f
+  name: "_sk_redir"
+  type_id: 0x33756485
+}
+member {
+  id: 0x7b38bd8d
+  name: "_skb_refdst"
+  type_id: 0x33756485
+}
+member {
+  id: 0x313ff873
+  name: "_softexpires"
+  type_id: 0x11c404ba
+  offset: 256
+}
+member {
+  id: 0x7afc4437
+  name: "_status"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x40d10a15
+  name: "_stime"
+  type_id: 0xe3186d0a
+  offset: 192
+}
+member {
+  id: 0xb58138eb
+  name: "_sys_private"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x92c39741
+  name: "_syscall"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x6ca8534e
+  name: "_tid"
+  type_id: 0xba229b88
+}
+member {
+  id: 0xde4c0a2f
+  name: "_timer"
+  type_id: 0x0366c345
+}
+member {
+  id: 0x26ca4134
+  name: "_total_mapcount"
+  type_id: 0x74d29cf1
+  offset: 672
+}
+member {
+  id: 0x80814781
+  name: "_trapno"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xdc77e8ad
+  name: "_tx"
+  type_id: 0x1a7122b5
+  offset: 7680
+}
+member {
+  id: 0x15046cb1
+  name: "_type"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x199905f2
+  name: "_uid"
+  type_id: 0xba3f457a
+  offset: 32
+}
+member {
+  id: 0xa2f022cd
+  name: "_upper"
+  type_id: 0x18bd6530
+  offset: 128
+}
+member {
+  id: 0x53829adc
+  name: "_utime"
+  type_id: 0xe3186d0a
+  offset: 128
+}
+member {
+  id: 0x07981254
+  name: "_watermark"
+  type_id: 0x80904a3b
+}
+member {
+  id: 0xa8b889e9
+  name: "_workingset"
+  type_id: 0x6d7f5ff6
+  offset: 320
+}
+member {
+  id: 0x2749087a
+  name: "_xmit_lock"
+  type_id: 0xf313e71a
+  offset: 1536
+}
+member {
+  id: 0xf521d76a
+  name: "_zonerefs"
+  type_id: 0xd2022e7c
+}
+member {
+  id: 0x806bbf2b
+  name: "a"
+  type_id: 0xb02b353a
+}
+member {
+  id: 0x80f2085f
+  name: "a"
+  type_id: 0x299c4193
+}
+member {
+  id: 0xb4d7eeee
+  name: "a2mp_chan"
+  type_id: 0x0355dc72
+  offset: 192
+}
+member {
+  id: 0xe1a7b52a
+  name: "a4"
+  type_id: 0xe276adef
+}
+member {
+  id: 0x6773cd7f
+  name: "a6"
+  type_id: 0xb4d0b861
+}
+member {
+  id: 0xfb59b28c
+  name: "a_alt_hnp_support"
+  type_id: 0x4585663f
+  offset: 8453
+  bitsize: 1
+}
+member {
+  id: 0x64cf71ba
+  name: "a_count"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0x4484f193
+  name: "a_entries"
+  type_id: 0xd657a70f
+  offset: 224
+}
+member {
+  id: 0xcdb4f4c5
+  name: "a_flags"
+  type_id: 0x74d29cf1
+}
+member {
+  id: 0xc46b83a7
+  name: "a_hnp_support"
+  type_id: 0x4585663f
+  offset: 8452
+  bitsize: 1
+}
+member {
+  id: 0x86b09ac5
+  name: "a_ops"
+  type_id: 0x3a0d2650
+  offset: 1536
+}
+member {
+  id: 0xcb089e43
+  name: "a_rcu"
+  type_id: 0xe3222f5b
+  offset: 64
+}
+member {
+  id: 0x47a3d1ab
+  name: "a_refcount"
+  type_id: 0xa722c13e
+}
+member {
+  id: 0xefb2b8bf
+  name: "aalg"
+  type_id: 0x0f28eb1e
+  offset: 2624
+}
+member {
+  id: 0x5be2eb25
+  name: "aalgo"
+  type_id: 0x295c7202
+  offset: 48
+}
+member {
+  id: 0x215128c9
+  name: "aalgos"
+  type_id: 0xc9082b19
+  offset: 416
+}
+member {
+  id: 0xb757a5d6
+  name: "abi"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0xb7b1f0ea
+  name: "abi"
+  type_id: 0x0baa70a7
+  offset: 32
+}
+member {
+  id: 0xb41bc738
+  name: "abi_rev"
+  type_id: 0xc9082b19
+  offset: 1152
+}
+member {
+  id: 0x370a3acc
+  name: "abort"
+  type_id: 0xedf277ba
+  offset: 131
+  bitsize: 1
+}
+member {
+  id: 0xa8bac25e
+  name: "abort_completion"
+  type_id: 0x6d7f5ff6
+  offset: 1088
+}
+member {
+  id: 0x872ff227
+  name: "abort_work"
+  type_id: 0xf1159c31
+  offset: 192
+}
+member {
+  id: 0x46f5493a
+  name: "above"
+  type_id: 0xd5df6730
+  offset: 192
+}
+member {
+  id: 0x2bc3fdd0
+  name: "abs"
+  type_id: 0xc58bfbc7
+}
+member {
+  id: 0x96fedfda
+  name: "abs_timeout"
+  type_id: 0x399c459b
+  offset: 192
+}
+member {
+  id: 0x2486e5e7
+  name: "absbit"
+  type_id: 0xa562355d
+  offset: 1024
+}
+member {
+  id: 0x249a96b6
+  name: "absbit"
+  type_id: 0xb914bfab
+  offset: 1216
+}
+member {
+  id: 0x4e736bf5
+  name: "absinfo"
+  type_id: 0x3ade9091
+  offset: 2752
+}
+member {
+  id: 0x9753362a
+  name: "ac"
+  type_id: 0x08e3980f
+}
+member {
+  id: 0xaee9181f
+  name: "ac_btime"
+  type_id: 0xe62ebf07
+  offset: 1088
+}
+member {
+  id: 0x564b914e
+  name: "ac_btime64"
+  type_id: 0xedf277ba
+  offset: 2752
+}
+member {
+  id: 0x073c5f1d
+  name: "ac_comm"
+  type_id: 0x5adf57ae
+  offset: 640
+}
+member {
+  id: 0x3bc5d39e
+  name: "ac_etime"
+  type_id: 0xedf277ba
+  offset: 1152
+}
+member {
+  id: 0x92cb5463
+  name: "ac_exe_dev"
+  type_id: 0xedf277ba
+  offset: 3072
+}
+member {
+  id: 0x67d1ded9
+  name: "ac_exe_inode"
+  type_id: 0xedf277ba
+  offset: 3136
+}
+member {
+  id: 0xcf6aa179
+  name: "ac_exitcode"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xa71c6eec
+  name: "ac_flag"
+  type_id: 0xb3e7bac9
+  offset: 64
+}
+member {
+  id: 0x3c8847ee
+  name: "ac_gid"
+  type_id: 0xe62ebf07
+  offset: 992
+}
+member {
+  id: 0x846096f3
+  name: "ac_list"
+  type_id: 0x285f28a0
+  offset: 6912
+}
+member {
+  id: 0x093799df
+  name: "ac_majflt"
+  type_id: 0xedf277ba
+  offset: 1408
+}
+member {
+  id: 0xb24975c2
+  name: "ac_minflt"
+  type_id: 0xedf277ba
+  offset: 1344
+}
+member {
+  id: 0x74567cc3
+  name: "ac_nice"
+  type_id: 0xb3e7bac9
+  offset: 72
+}
+member {
+  id: 0x6bb45bd3
+  name: "ac_pad"
+  type_id: 0x3e3c1b86
+  offset: 904
+}
+member {
+  id: 0x0cdf3804
+  name: "ac_pid"
+  type_id: 0xe62ebf07
+  offset: 1024
+}
+member {
+  id: 0xc7b479d1
+  name: "ac_ppid"
+  type_id: 0xe62ebf07
+  offset: 1056
+}
+member {
+  id: 0xc416a30c
+  name: "ac_sched"
+  type_id: 0xb3e7bac9
+  offset: 896
+}
+member {
+  id: 0xcbf0bbf1
+  name: "ac_stime"
+  type_id: 0xedf277ba
+  offset: 1280
+}
+member {
+  id: 0x056f8f7d
+  name: "ac_stimescaled"
+  type_id: 0xedf277ba
+  offset: 2368
+}
+member {
+  id: 0x5c44908a
+  name: "ac_tgetime"
+  type_id: 0xedf277ba
+  offset: 3008
+}
+member {
+  id: 0x1cdea3d3
+  name: "ac_tgid"
+  type_id: 0xe62ebf07
+  offset: 2944
+}
+member {
+  id: 0xd163e5f2
+  name: "ac_uid"
+  type_id: 0xe62ebf07
+  offset: 960
+}
+member {
+  id: 0x84fe4b9a
+  name: "ac_utime"
+  type_id: 0xedf277ba
+  offset: 1216
+}
+member {
+  id: 0x1cb78f52
+  name: "ac_utimescaled"
+  type_id: 0xedf277ba
+  offset: 2304
+}
+member {
+  id: 0x39c0643f
+  name: "aca_addr"
+  type_id: 0x6d25e07f
+}
+member {
+  id: 0x6dabf00a
+  name: "aca_addr_lst"
+  type_id: 0x49a73111
+  offset: 256
+}
+member {
+  id: 0xdb5e306b
+  name: "aca_cstamp"
+  type_id: 0x33756485
+  offset: 448
+}
+member {
+  id: 0xe7429092
+  name: "aca_max"
+  type_id: 0x4585663f
+  offset: 224
+}
+member {
+  id: 0x9e8ac6c8
+  name: "aca_min"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0x55b111b3
+  name: "aca_next"
+  type_id: 0x285f28a0
+  offset: 192
+}
+member {
+  id: 0x17e676e5
+  name: "aca_refcnt"
+  type_id: 0xa722c13e
+  offset: 416
+}
+member {
+  id: 0x6fcbaed1
+  name: "aca_rt"
+  type_id: 0x238091f9
+  offset: 128
+}
+member {
+  id: 0x892066a3
+  name: "aca_tstamp"
+  type_id: 0x33756485
+  offset: 512
+}
+member {
+  id: 0x971567cb
+  name: "aca_users"
+  type_id: 0x6720d32f
+  offset: 384
+}
+member {
+  id: 0x2d0aa21d
+  name: "accel"
+  type_id: 0xe62ebf07
+  offset: 544
+}
+member {
+  id: 0x2b4308db
+  name: "accel_flags"
+  type_id: 0xe62ebf07
+  offset: 768
+}
+member {
+  id: 0x8fd5a073
+  name: "accept"
+  type_id: 0x2ce07cab
+  offset: 384
+}
+member {
+  id: 0x8fe9720d
+  name: "accept"
+  type_id: 0x10333bd2
+  offset: 256
+}
+member {
+  id: 0xe3f0356b
+  name: "accept_dad"
+  type_id: 0x0faae5b1
+  offset: 1216
+}
+member {
+  id: 0x623e5072
+  name: "accept_fds"
+  type_id: 0x295c7202
+  offset: 3
+  bitsize: 1
+}
+member {
+  id: 0x83de1f5d
+  name: "accept_flags"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xe71cc1d9
+  name: "accept_list"
+  type_id: 0xd3c80119
+  offset: 29440
+}
+member {
+  id: 0x09a04ae8
+  name: "accept_queue"
+  type_id: 0xd3c80119
+  offset: 7808
+}
+member {
+  id: 0x0b8c62ff
+  name: "accept_ra"
+  type_id: 0x0faae5b1
+  offset: 96
+}
+member {
+  id: 0x375f3296
+  name: "accept_ra_defrtr"
+  type_id: 0x0faae5b1
+  offset: 640
+}
+member {
+  id: 0xb9bb501c
+  name: "accept_ra_from_local"
+  type_id: 0x0faae5b1
+  offset: 1024
+}
+member {
+  id: 0x32d8bd34
+  name: "accept_ra_min_hop_limit"
+  type_id: 0x0faae5b1
+  offset: 704
+}
+member {
+  id: 0x2c2f941d
+  name: "accept_ra_mtu"
+  type_id: 0x0faae5b1
+  offset: 1344
+}
+member {
+  id: 0x6b9db8d7
+  name: "accept_ra_pinfo"
+  type_id: 0x0faae5b1
+  offset: 736
+}
+member {
+  id: 0xf4aca695
+  name: "accept_ra_rt_info_max_plen"
+  type_id: 0x0faae5b1
+  offset: 896
+}
+member {
+  id: 0xeb68f3df
+  name: "accept_ra_rt_info_min_plen"
+  type_id: 0x0faae5b1
+  offset: 864
+}
+member {
+  id: 0xfcbcc1a2
+  name: "accept_ra_rt_table"
+  type_id: 0x0faae5b1
+  offset: 928
+}
+member {
+  id: 0xf4943255
+  name: "accept_ra_rtr_pref"
+  type_id: 0x0faae5b1
+  offset: 800
+}
+member {
+  id: 0x6b1f84cb
+  name: "accept_redirects"
+  type_id: 0x0faae5b1
+  offset: 128
+}
+member {
+  id: 0x45f850b1
+  name: "accept_source_route"
+  type_id: 0x0faae5b1
+  offset: 992
+}
+member {
+  id: 0x35668112
+  name: "accept_untracked_na"
+  type_id: 0x0faae5b1
+  offset: 1408
+}
+member {
+  id: 0x6c0759df
+  name: "access"
+  type_id: 0x0baa70a7
+  offset: 416
+}
+member {
+  id: 0x6c219058
+  name: "access"
+  type_id: 0x2d63aa98
+  offset: 704
+}
+member {
+  id: 0x6c303a84
+  name: "access"
+  type_id: 0x3ccbe06d
+  offset: 256
+}
+member {
+  id: 0x6c497048
+  name: "access"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x6c49778d
+  name: "access"
+  type_id: 0x4585663f
+  offset: 224
+}
+member {
+  id: 0x6c497a76
+  name: "access"
+  type_id: 0x4585663f
+  offset: 544
+}
+member {
+  id: 0x6c6914de
+  name: "access"
+  type_id: 0x65edbf10
+  offset: 768
+}
+member {
+  id: 0x6cab3090
+  name: "access"
+  type_id: 0xa7c362b0
+  offset: 704
+}
+member {
+  id: 0xefe4e2af
+  name: "access_align"
+  type_id: 0xc9082b19
+  offset: 192
+}
+member {
+  id: 0xb2f2c4ad
+  name: "access_count"
+  type_id: 0x4585663f
+  offset: 384
+}
+member {
+  id: 0xcb7a7a49
+  name: "access_flags"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x4d798a84
+  name: "access_memory"
+  type_id: 0x2f8442f1
+  offset: 768
+}
+member {
+  id: 0x03d4ab2a
+  name: "access_state"
+  type_id: 0x5d8155a5
+  offset: 19520
+}
+member {
+  id: 0x6311fd99
+  name: "accessory"
+  type_id: 0x22c6e8be
+  offset: 160
+}
+member {
+  id: 0x63f336f5
+  name: "accessory"
+  type_id: 0xc00c762a
+  offset: 7424
+}
+member {
+  id: 0x63f337dc
+  name: "accessory"
+  type_id: 0xc00c762a
+  offset: 32
+}
+member {
+  id: 0x384f10b1
+  name: "accounting"
+  type_id: 0x6720d32f
+  offset: 160
+}
+member {
+  id: 0x1db35d8c
+  name: "accounting_time"
+  type_id: 0x92233392
+  offset: 11648
+}
+member {
+  id: 0x7fdc61f1
+  name: "accounting_timestamp"
+  type_id: 0x92233392
+  offset: 2432
+}
+member {
+  id: 0x542cf718
+  name: "acct"
+  type_id: 0x7a7fc5d0
+  offset: 64
+}
+member {
+  id: 0x2dfe16f9
+  name: "acct_pages"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0x89aca753
+  name: "acct_rss_mem1"
+  type_id: 0x92233392
+  offset: 20288
+}
+member {
+  id: 0x48e00c7e
+  name: "acct_timexpd"
+  type_id: 0x92233392
+  offset: 20416
+}
+member {
+  id: 0xbfffdb12
+  name: "acct_vm_mem1"
+  type_id: 0x92233392
+  offset: 20352
+}
+member {
+  id: 0x6b47fdc8
+  name: "accuracy"
+  type_id: 0x33756485
+  offset: 1216
+}
+member {
+  id: 0x6bbd8f78
+  name: "accuracy"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0xee7fc88b
+  name: "accuracy_report"
+  type_id: 0xc9082b19
+  offset: 5
+  bitsize: 1
+}
+member {
+  id: 0x87ee0bdf
+  name: "ack"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0x87f183b9
+  name: "ack"
+  type_id: 0x2cf2c077
+  offset: 2304
+}
+member {
+  id: 0x87f183df
+  name: "ack"
+  type_id: 0x2cf3d4c9
+  offset: 640
+}
+member {
+  id: 0x87f1c514
+  name: "ack"
+  type_id: 0x2cbb953f
+  offset: 960
+}
+member {
+  id: 0x87f1d7e6
+  name: "ack"
+  type_id: 0x2caa8c20
+  offset: 512
+}
+member {
+  id: 0x87f1dad5
+  name: "ack"
+  type_id: 0x2caadeda
+  offset: 640
+}
+member {
+  id: 0xda94cb14
+  name: "ack"
+  type_id: 0xe8034002
+  offset: 108
+  bitsize: 1
+}
+member {
+  id: 0xf355e9cd
+  name: "ack_base"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0x3804cc00
+  name: "ack_invert"
+  type_id: 0x4585663f
+  offset: 612
+  bitsize: 1
+}
+member {
+  id: 0xc3c10aac
+  name: "ack_list_head"
+  type_id: 0xd3c80119
+  offset: 2944
+}
+member {
+  id: 0xa64a78f5
+  name: "ack_request"
+  type_id: 0x914dbfdc
+  offset: 5
+  bitsize: 1
+}
+member {
+  id: 0x9c7969bf
+  name: "ack_sdio_irq"
+  type_id: 0x0dd7b940
+  offset: 512
+}
+member {
+  id: 0xecf1f48f
+  name: "ack_seq"
+  type_id: 0xe276adef
+  offset: 64
+}
+member {
+  id: 0xc0c7b6ad
+  name: "ack_timer"
+  type_id: 0xf1159c31
+  offset: 5440
+}
+member {
+  id: 0xbe09938e
+  name: "ack_win"
+  type_id: 0xe8034002
+  offset: 1120
+}
+member {
+  id: 0xf4cc6454
+  name: "acked_backend_features"
+  type_id: 0x92233392
+  offset: 142400
+}
+member {
+  id: 0x60b77d15
+  name: "acked_features"
+  type_id: 0x92233392
+  offset: 142336
+}
+member {
+  id: 0x5a726862
+  name: "acked_sacked"
+  type_id: 0xc9082b19
+  offset: 416
+}
+member {
+  id: 0x0c061780
+  name: "ackreq"
+  type_id: 0x6d7f5ff6
+  offset: 688
+}
+member {
+  id: 0xf17c8f4c
+  name: "acl_cnt"
+  type_id: 0x4585663f
+  offset: 13024
+}
+member {
+  id: 0x5d7bb2c5
+  name: "acl_entries"
+  type_id: 0x020f69fc
+  offset: 128
+}
+member {
+  id: 0xdc1b3211
+  name: "acl_last_tx"
+  type_id: 0x33756485
+  offset: 13504
+}
+member {
+  id: 0x12517395
+  name: "acl_mtu"
+  type_id: 0x4585663f
+  offset: 13152
+}
+member {
+  id: 0xe08e16a4
+  name: "acl_num"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0xd28bda77
+  name: "acl_pkts"
+  type_id: 0x4585663f
+  offset: 13280
+}
+member {
+  id: 0x455f4f04
+  name: "acl_rx"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0x4da05652
+  name: "acl_tx"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0x1cafacfd
+  name: "acpi_cpuid"
+  type_id: 0x33756485
+  offset: 4416
+}
+member {
+  id: 0x4ff7664a
+  name: "acpi_match"
+  type_id: 0x3d0a3be5
+  offset: 768
+}
+member {
+  id: 0xf0b9c32d
+  name: "acpi_match_table"
+  type_id: 0x32f0db7d
+  offset: 384
+}
+member {
+  id: 0x54cf8c37
+  name: "acpt_newsess"
+  type_id: 0x6d7f5ff6
+  offset: 288
+}
+member {
+  id: 0xb2f1e437
+  name: "acquire_ctx"
+  type_id: 0x038de60c
+  offset: 576
+}
+member {
+  id: 0xb2f1e5b6
+  name: "acquire_ctx"
+  type_id: 0x038de60c
+  offset: 960
+}
+member {
+  id: 0x18853772
+  name: "acquire_dquot"
+  type_id: 0x2e103219
+  offset: 192
+}
+member {
+  id: 0x44577e67
+  name: "acquire_key"
+  type_id: 0x475137a2
+  offset: 64
+}
+member {
+  id: 0x27ba3fc4
+  name: "acquire_name"
+  type_id: 0x3e10b518
+  offset: 64
+}
+member {
+  id: 0xa95e659c
+  name: "acquired"
+  type_id: 0x6d7f5ff6
+  offset: 256
+}
+member {
+  id: 0xa97696cc
+  name: "acquired"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0xb4a0bce8
+  name: "acquired_refs"
+  type_id: 0x6720d32f
+  offset: 10912
+}
+member {
+  id: 0xcdcc063f
+  name: "acr"
+  type_id: 0x5d8155a5
+  offset: 4896
+}
+member {
+  id: 0x4120ef8b
+  name: "acs_cap"
+  type_id: 0x914dbfdc
+  offset: 25696
+}
+member {
+  id: 0x483ea176
+  name: "act"
+  type_id: 0x2d96b65e
+  offset: 448
+}
+member {
+  id: 0xfff2923c
+  name: "act_cookie"
+  type_id: 0x09bb9b7e
+  offset: 1408
+}
+member {
+  id: 0x086a8c91
+  name: "act_id"
+  type_id: 0x72d96628
+}
+member {
+  id: 0x2b4d96be
+  name: "actconfig"
+  type_id: 0x301e0f4d
+  offset: 8960
+}
+member {
+  id: 0xc031132b
+  name: "action"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xc0311be2
+  name: "action"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0xc046b22b
+  name: "action"
+  type_id: 0x108178f0
+  offset: 256
+}
+member {
+  id: 0xc062118d
+  name: "action"
+  type_id: 0x342a8622
+  offset: 960
+}
+member {
+  id: 0xc07aed3e
+  name: "action"
+  type_id: 0x2cdf5477
+  offset: 384
+}
+member {
+  id: 0xc07f66b0
+  name: "action"
+  type_id: 0x295c7202
+  offset: 3216
+}
+member {
+  id: 0xc07f684d
+  name: "action"
+  type_id: 0x295c7202
+  offset: 320
+}
+member {
+  id: 0xc09e96cd
+  name: "action"
+  type_id: 0xc8adfcbd
+  offset: 192
+}
+member {
+  id: 0xc0e5d54f
+  name: "action"
+  type_id: 0xb3e7bac9
+  offset: 56
+}
+member {
+  id: 0xa14c735e
+  name: "action_idr"
+  type_id: 0x04b89667
+  offset: 384
+}
+member {
+  id: 0xf964a830
+  name: "action_refcnt"
+  type_id: 0x4585663f
+  offset: 704
+}
+member {
+  id: 0x0d5b572a
+  name: "actions"
+  type_id: 0x057af395
+  offset: 64
+}
+member {
+  id: 0xdc3d085b
+  name: "activate"
+  type_id: 0xe62ebf07
+  offset: 672
+}
+member {
+  id: 0xdcf4dd14
+  name: "activate"
+  type_id: 0x2ffbc6e3
+  offset: 448
+}
+member {
+  id: 0xdcf5deda
+  name: "activate"
+  type_id: 0x2ef8b832
+  offset: 320
+}
+member {
+  id: 0xdcf5f9ef
+  name: "activate"
+  type_id: 0x2edcab9e
+  offset: 64
+}
+member {
+  id: 0xdcf6e716
+  name: "activate"
+  type_id: 0x2dcf71aa
+  offset: 128
+}
+member {
+  id: 0xdcf6f707
+  name: "activate"
+  type_id: 0x2dd58efa
+  offset: 1664
+}
+member {
+  id: 0xdcf75157
+  name: "activate"
+  type_id: 0x2c778560
+  offset: 448
+}
+member {
+  id: 0xdcf75696
+  name: "activate"
+  type_id: 0x2c7ffaf6
+  offset: 192
+}
+member {
+  id: 0xcb4dc205
+  name: "activate_result"
+  type_id: 0x1db67a3b
+  offset: 64
+}
+member {
+  id: 0x8e9d1882
+  name: "activate_state"
+  type_id: 0x09f7911c
+}
+member {
+  id: 0x8e9f6a97
+  name: "activate_state"
+  type_id: 0x0b85846c
+}
+member {
+  id: 0x29e19b98
+  name: "activate_target"
+  type_id: 0x2dbefbf2
+  offset: 384
+}
+member {
+  id: 0xbe478d0e
+  name: "activated"
+  type_id: 0x6d7f5ff6
+  offset: 2880
+}
+member {
+  id: 0x1acef530
+  name: "active"
+  type_id: 0x4585663f
+  offset: 7392
+  bitsize: 1
+}
+member {
+  id: 0x1acefba0
+  name: "active"
+  type_id: 0x4585663f
+  offset: 16
+  bitsize: 1
+}
+member {
+  id: 0x1ad6f7a9
+  name: "active"
+  type_id: 0x5d8155a5
+  offset: 737
+  bitsize: 1
+}
+member {
+  id: 0x1ae6069f
+  name: "active"
+  type_id: 0x6d7f5ff6
+  offset: 1600
+  bitsize: 1
+}
+member {
+  id: 0x220cbd53
+  name: "active"
+  type_id: 0x2ee387f4
+}
+member {
+  id: 0x2231011e
+  name: "active"
+  type_id: 0x13580d6c
+  offset: 320
+}
+member {
+  id: 0x224f203b
+  name: "active"
+  type_id: 0x6d7f5ff6
+  offset: 480
+}
+member {
+  id: 0x224f218b
+  name: "active"
+  type_id: 0x6d7f5ff6
+}
+member {
+  id: 0x224f240b
+  name: "active"
+  type_id: 0x6d7f5ff6
+  offset: 496
+}
+member {
+  id: 0x224f2849
+  name: "active"
+  type_id: 0x6d7f5ff6
+  offset: 128
+}
+member {
+  id: 0x224f2dfa
+  name: "active"
+  type_id: 0x6d7f5ff6
+  offset: 72
+}
+member {
+  id: 0x224f2ff3
+  name: "active"
+  type_id: 0x6d7f5ff6
+  offset: 264
+}
+member {
+  id: 0x22568173
+  name: "active"
+  type_id: 0x74d29cf1
+  offset: 32
+}
+member {
+  id: 0x225682c9
+  name: "active"
+  type_id: 0x74d29cf1
+  offset: 1696
+}
+member {
+  id: 0x2267dc75
+  name: "active"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0x2267f08f
+  name: "active"
+  type_id: 0x45ae5b04
+}
+member {
+  id: 0x22776f34
+  name: "active"
+  type_id: 0x55314bfb
+  offset: 256
+}
+member {
+  id: 0x229b106f
+  name: "active"
+  type_id: 0xb94e10c7
+  offset: 256
+}
+member {
+  id: 0x22f19112
+  name: "active"
+  type_id: 0xd3c80119
+  offset: 320
+}
+member {
+  id: 0xfbe129c1
+  name: "active_aspect"
+  type_id: 0x9bb709db
+  offset: 192
+}
+member {
+  id: 0x732856f5
+  name: "active_balance"
+  type_id: 0x6720d32f
+  offset: 23616
+}
+member {
+  id: 0xd64f6769
+  name: "active_balance_work"
+  type_id: 0x5b09d4fb
+  offset: 23680
+}
+member {
+  id: 0xf4838cd1
+  name: "active_bases"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x26bc475d
+  name: "active_changed"
+  type_id: 0x6d7f5ff6
+  offset: 82
+  bitsize: 1
+}
+member {
+  id: 0x03338cac
+  name: "active_cnt"
+  type_id: 0x914dbfdc
+  offset: 880
+}
+member {
+  id: 0xcb648c91
+  name: "active_count"
+  type_id: 0x33756485
+  offset: 1280
+}
+member {
+  id: 0x3528331b
+  name: "active_ctx_list"
+  type_id: 0xd3c80119
+  offset: 512
+}
+member {
+  id: 0x16c05d36
+  name: "active_discharge"
+  type_id: 0x4585663f
+  offset: 1696
+}
+member {
+  id: 0x515945bc
+  name: "active_discharge_mask"
+  type_id: 0x4585663f
+  offset: 1856
+}
+member {
+  id: 0x116d1ab2
+  name: "active_discharge_off"
+  type_id: 0x4585663f
+  offset: 1824
+}
+member {
+  id: 0xdc85982e
+  name: "active_discharge_on"
+  type_id: 0x4585663f
+  offset: 1792
+}
+member {
+  id: 0xf8d3f2a1
+  name: "active_discharge_reg"
+  type_id: 0x4585663f
+  offset: 1888
+}
+member {
+  id: 0x1bcf24f2
+  name: "active_duration"
+  type_id: 0x33756485
+  offset: 11712
+}
+member {
+  id: 0x5292e53f
+  name: "active_entry"
+  type_id: 0xd3c80119
+  offset: 896
+}
+member {
+  id: 0xa72ba76c
+  name: "active_eps"
+  type_id: 0x6720d32f
+  offset: 5504
+}
+member {
+  id: 0x626cc8bb
+  name: "active_extensions"
+  type_id: 0xb3e7bac9
+  offset: 1016
+}
+member {
+  id: 0x35ffcd52
+  name: "active_fec"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x2e95fdeb
+  name: "active_invalidate_ranges"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0x945c0ae1
+  name: "active_list"
+  type_id: 0xd3c80119
+  offset: 256
+}
+member {
+  id: 0xe9c3df3a
+  name: "active_list_head"
+  type_id: 0xd3c80119
+  offset: 2816
+}
+member {
+  id: 0x9c81b085
+  name: "active_mask"
+  type_id: 0x33756485
+  offset: 44352
+}
+member {
+  id: 0x787940b4
+  name: "active_memcg"
+  type_id: 0x1d5bae2a
+  offset: 23168
+}
+member {
+  id: 0xb6958d8f
+  name: "active_mm"
+  type_id: 0x1b36c7a2
+  offset: 11584
+}
+member {
+  id: 0x680cbe82
+  name: "active_mode"
+  type_id: 0x4585663f
+  offset: 4352
+  bitsize: 2
+}
+member {
+  id: 0x7d99680b
+  name: "active_nodes"
+  type_id: 0x74d29cf1
+  offset: 49184
+}
+member {
+  id: 0x5adc2ffa
+  name: "active_objs"
+  type_id: 0x33756485
+}
+member {
+  id: 0x173bb389
+  name: "active_oncpu"
+  type_id: 0x6720d32f
+  offset: 2432
+}
+member {
+  id: 0x6c85fe0a
+  name: "active_power"
+  type_id: 0x2dd3a74c
+}
+member {
+  id: 0x5ac542d5
+  name: "active_queues"
+  type_id: 0x74d29cf1
+  offset: 64
+}
+member {
+  id: 0xa3c1586b
+  name: "active_ref"
+  type_id: 0x74d29cf1
+  offset: 64
+}
+member {
+  id: 0x71a4e651
+  name: "active_req"
+  type_id: 0x18bd6530
+  offset: 448
+}
+member {
+  id: 0xaf5b779f
+  name: "active_reqs"
+  type_id: 0x6720d32f
+  offset: 2208
+}
+member {
+  id: 0xaf5b7a5c
+  name: "active_reqs"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xafef966f
+  name: "active_reqs"
+  type_id: 0xd3c80119
+  offset: 64
+}
+member {
+  id: 0xa4e63499
+  name: "active_rgn"
+  type_id: 0x7584e7da
+}
+member {
+  id: 0x35d5530e
+  name: "active_rgn_cnt"
+  type_id: 0x295c7202
+  offset: 208
+}
+member {
+  id: 0x692031ff
+  name: "active_scan_mask"
+  type_id: 0x3ea31487
+  offset: 8000
+}
+member {
+  id: 0x0ea82549
+  name: "active_slabs"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x8f0fcc44
+  name: "active_source"
+  type_id: 0x295c7202
+  offset: 680
+}
+member {
+  id: 0xfa0d6c00
+  name: "active_spin_lock"
+  type_id: 0xc9082b19
+  offset: 672
+}
+member {
+  id: 0x943de2d1
+  name: "active_srgn"
+  type_id: 0x7584e7da
+  offset: 16
+}
+member {
+  id: 0x8c1424f8
+  name: "active_state"
+  type_id: 0x12651688
+  offset: 2560
+}
+member {
+  id: 0x8558d7df
+  name: "active_target"
+  type_id: 0x0d107c2b
+  offset: 7552
+}
+member {
+  id: 0xc3c37835
+  name: "active_time"
+  type_id: 0x92233392
+  offset: 2304
+}
+member {
+  id: 0x0e1527d7
+  name: "active_timer"
+  type_id: 0x39cdf888
+  offset: 1152
+}
+member {
+  id: 0x646ca433
+  name: "active_uic_cmd"
+  type_id: 0x1858a1e0
+  offset: 3392
+}
+member {
+  id: 0xab159568
+  name: "active_uprobe"
+  type_id: 0x282bc8d6
+  offset: 256
+}
+member {
+  id: 0x258e7f73
+  name: "actor"
+  type_id: 0x3aaabb17
+}
+member {
+  id: 0x92f98fb9
+  name: "actual"
+  type_id: 0x4585663f
+  offset: 704
+}
+member {
+  id: 0x27cf8be2
+  name: "actual_clock"
+  type_id: 0x4585663f
+  offset: 12032
+}
+member {
+  id: 0x81433876
+  name: "actual_length"
+  type_id: 0x4585663f
+  offset: 416
+}
+member {
+  id: 0x81433ef7
+  name: "actual_length"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x81cfbe7a
+  name: "actual_length"
+  type_id: 0xc9082b19
+  offset: 1056
+}
+member {
+  id: 0x025c9ea4
+  name: "actual_type"
+  type_id: 0xc9082b19
+  offset: 1
+  bitsize: 4
+}
+member {
+  id: 0x0772676d
+  name: "adap"
+  type_id: 0x3806390a
+  offset: 256
+}
+member {
+  id: 0x077267c6
+  name: "adap"
+  type_id: 0x3806390a
+}
+member {
+  id: 0x89f78068
+  name: "adap_configured"
+  type_id: 0x0d5b310c
+  offset: 256
+}
+member {
+  id: 0x142a1f06
+  name: "adap_controls_phys_addr"
+  type_id: 0x6d7f5ff6
+  offset: 11440
+}
+member {
+  id: 0xdb0b437c
+  name: "adap_enable"
+  type_id: 0x2e1d1da3
+}
+member {
+  id: 0x9deaadb0
+  name: "adap_free"
+  type_id: 0x0d364e53
+  offset: 448
+}
+member {
+  id: 0x6fa8f57f
+  name: "adap_log_addr"
+  type_id: 0x2e593e8e
+  offset: 192
+}
+member {
+  id: 0x957125b1
+  name: "adap_monitor_all_enable"
+  type_id: 0x2e1d1da3
+  offset: 64
+}
+member {
+  id: 0x6530995c
+  name: "adap_monitor_pin_enable"
+  type_id: 0x2e1d1da3
+  offset: 128
+}
+member {
+  id: 0xbbe6fd95
+  name: "adap_status"
+  type_id: 0x0d302bb5
+  offset: 384
+}
+member {
+  id: 0xeea0fd9b
+  name: "adap_transmit"
+  type_id: 0x2e55b99c
+  offset: 320
+}
+member {
+  id: 0xbdffad6c
+  name: "adapter"
+  type_id: 0x249959de
+  offset: 192
+}
+member {
+  id: 0x28edb9cb
+  name: "adapter_id"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xc71d7293
+  name: "add"
+  type_id: 0x2c4bc142
+  offset: 1088
+}
+member {
+  id: 0xc71e0d4d
+  name: "add"
+  type_id: 0x2f396978
+}
+member {
+  id: 0xc73a936f
+  name: "add"
+  type_id: 0x0baa70a7
+  offset: 32
+}
+member {
+  id: 0x733b5607
+  name: "add_bus"
+  type_id: 0x2fc09bbf
+}
+member {
+  id: 0xc5890632
+  name: "add_consumer"
+  type_id: 0x2ce767e3
+  offset: 256
+}
+member {
+  id: 0x34f9daac
+  name: "add_dai_link"
+  type_id: 0x2c41da11
+  offset: 2560
+}
+member {
+  id: 0x69f066fe
+  name: "add_dev"
+  type_id: 0x2dd6440a
+  offset: 192
+}
+member {
+  id: 0xcacf13d8
+  name: "add_endpoint"
+  type_id: 0x2faac623
+  offset: 192
+}
+member {
+  id: 0xcacf1995
+  name: "add_endpoint"
+  type_id: 0x2faac623
+  offset: 1984
+}
+member {
+  id: 0xa4960aeb
+  name: "add_links"
+  type_id: 0x2db90ad8
+  offset: 1344
+}
+member {
+  id: 0xfbf6c3d8
+  name: "add_lock"
+  type_id: 0xa7c362b0
+  offset: 8192
+}
+member {
+  id: 0xddf9cb86
+  name: "add_pin_ranges"
+  type_id: 0x2c7e659b
+  offset: 1152
+}
+member {
+  id: 0x4dcf2c11
+  name: "add_producer"
+  type_id: 0x2e7e69da
+  offset: 192
+}
+member {
+  id: 0x55a689b2
+  name: "add_time"
+  type_id: 0xedf277ba
+  offset: 128
+}
+member {
+  id: 0xe8d5235e
+  name: "add_virtual_intf"
+  type_id: 0x2f515c44
+  offset: 256
+}
+member {
+  id: 0xdcc4bf94
+  name: "add_virtual_intf_deprecated"
+  type_id: 0x372d02a8
+}
+member {
+  id: 0x14c9b565
+  name: "additional_len"
+  type_id: 0x295c7202
+  offset: 184
+}
+member {
+  id: 0x69f61b6c
+  name: "additional_length"
+  type_id: 0x295c7202
+  offset: 56
+}
+member {
+  id: 0x24048314
+  name: "addr"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x241316d1
+  name: "addr"
+  type_id: 0x3ecd56c2
+  offset: 64
+}
+member {
+  id: 0x241af347
+  name: "addr"
+  type_id: 0x372be6f8
+  offset: 320
+}
+member {
+  id: 0x241eaa02
+  name: "addr"
+  type_id: 0x33756485
+}
+member {
+  id: 0x2425a5c3
+  name: "addr"
+  type_id: 0x087aa58e
+}
+member {
+  id: 0x242d1843
+  name: "addr"
+  type_id: 0x00c72527
+}
+member {
+  id: 0x24356203
+  name: "addr"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0x243562a8
+  name: "addr"
+  type_id: 0x18bd6530
+  offset: 256
+}
+member {
+  id: 0x243566e2
+  name: "addr"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0x24356aca
+  name: "addr"
+  type_id: 0x18bd6530
+  offset: 192
+}
+member {
+  id: 0x243694c7
+  name: "addr"
+  type_id: 0x1b4ba19a
+}
+member {
+  id: 0x2440fa86
+  name: "addr"
+  type_id: 0x6d25e07f
+}
+member {
+  id: 0x24481993
+  name: "addr"
+  type_id: 0x65cbce23
+  offset: 32
+}
+member {
+  id: 0x244af250
+  name: "addr"
+  type_id: 0x6720d32f
+  offset: 7808
+}
+member {
+  id: 0x244affb5
+  name: "addr"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x24552b83
+  name: "addr"
+  type_id: 0x78f4e574
+}
+member {
+  id: 0x24862929
+  name: "addr"
+  type_id: 0xabf64f28
+}
+member {
+  id: 0x24900a0e
+  name: "addr"
+  type_id: 0xbdd18903
+  offset: 64
+}
+member {
+  id: 0x2493d07f
+  name: "addr"
+  type_id: 0xbe0f19dc
+}
+member {
+  id: 0x24a68b5d
+  name: "addr"
+  type_id: 0x8b543b26
+}
+member {
+  id: 0x24bc951e
+  name: "addr"
+  type_id: 0x914dbfdc
+  offset: 320
+}
+member {
+  id: 0x24bff74d
+  name: "addr"
+  type_id: 0x92233392
+  offset: 512
+}
+member {
+  id: 0x24bffc55
+  name: "addr"
+  type_id: 0x92233392
+}
+member {
+  id: 0x24bffdc7
+  name: "addr"
+  type_id: 0x92233392
+  offset: 384
+}
+member {
+  id: 0x24c024d3
+  name: "addr"
+  type_id: 0xedf277ba
+  offset: 128
+}
+member {
+  id: 0x24c02d11
+  name: "addr"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x24c5dc26
+  name: "addr"
+  type_id: 0xe8034002
+}
+member {
+  id: 0x24cd9978
+  name: "addr"
+  type_id: 0xe04f9dc7
+  offset: 96
+}
+member {
+  id: 0x24cdf172
+  name: "addr"
+  type_id: 0xe02e14d6
+}
+member {
+  id: 0x24cdf1d9
+  name: "addr"
+  type_id: 0xe02e14d6
+  offset: 256
+}
+member {
+  id: 0x24d1edc6
+  name: "addr"
+  type_id: 0xfc320bc5
+  offset: 256
+}
+member {
+  id: 0x24d4d29a
+  name: "addr"
+  type_id: 0xf90dfce8
+}
+member {
+  id: 0x24e4d74d
+  name: "addr"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x24e4de3f
+  name: "addr"
+  type_id: 0xc9082b19
+  offset: 576
+}
+member {
+  id: 0x24e4e5b0
+  name: "addr"
+  type_id: 0xc93e017b
+  offset: 176
+}
+member {
+  id: 0x24e4efd9
+  name: "addr"
+  type_id: 0xc93e017b
+  offset: 16
+}
+member {
+  id: 0xf53a09be
+  name: "addr2"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x8862d6e8
+  name: "addr2msg"
+  type_id: 0x2d8abcdd
+  offset: 256
+}
+member {
+  id: 0x29cfb070
+  name: "addr2str"
+  type_id: 0x2edacd6a
+  offset: 192
+}
+member {
+  id: 0x34f9f71a
+  name: "addr3"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x6f604d48
+  name: "addr_assign_type"
+  type_id: 0x5d8155a5
+  offset: 4640
+}
+member {
+  id: 0xb6de9163
+  name: "addr_chk_work"
+  type_id: 0xf1159c31
+  offset: 5120
+}
+member {
+  id: 0x8d202029
+  name: "addr_dest"
+  type_id: 0xb3e7bac9
+  offset: 8
+}
+member {
+  id: 0x631e0373
+  name: "addr_filter_ranges"
+  type_id: 0x3e29be7b
+  offset: 7296
+}
+member {
+  id: 0x1c049182
+  name: "addr_filters"
+  type_id: 0x18bd6530
+  offset: 832
+}
+member {
+  id: 0x1cd06928
+  name: "addr_filters"
+  type_id: 0xcc4284be
+  offset: 7104
+}
+member {
+  id: 0xf0d79630
+  name: "addr_filters_gen"
+  type_id: 0x33756485
+  offset: 896
+}
+member {
+  id: 0xf0d79dde
+  name: "addr_filters_gen"
+  type_id: 0x33756485
+  offset: 7360
+}
+member {
+  id: 0x29fead99
+  name: "addr_filters_sync"
+  type_id: 0x0f6acd3e
+  offset: 2112
+}
+member {
+  id: 0xd7f9a0e8
+  name: "addr_filters_validate"
+  type_id: 0x2e1622f2
+  offset: 2048
+}
+member {
+  id: 0xf3e39e64
+  name: "addr_gen_mode"
+  type_id: 0xe62ebf07
+  offset: 1728
+}
+member {
+  id: 0x990f3822
+  name: "addr_len"
+  type_id: 0x5d8155a5
+  offset: 4648
+}
+member {
+  id: 0x99babbd5
+  name: "addr_len"
+  type_id: 0xe8034002
+}
+member {
+  id: 0x7ee20f50
+  name: "addr_list"
+  type_id: 0xd3c80119
+  offset: 64
+}
+member {
+  id: 0xfaaae8b9
+  name: "addr_list_lock"
+  type_id: 0xf313e71a
+  offset: 4736
+}
+member {
+  id: 0xc9e61d51
+  name: "addr_mask"
+  type_id: 0xabf64f28
+  offset: 432
+}
+member {
+  id: 0x42758017
+  name: "addr_recv"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0x64284bb0
+  name: "addr_size"
+  type_id: 0x6720d32f
+  offset: 224
+}
+member {
+  id: 0x64bb5ae8
+  name: "addr_size"
+  type_id: 0xf435685e
+  offset: 320
+}
+member {
+  id: 0xbf9e6a1c
+  name: "addr_width"
+  type_id: 0x5258ec21
+  offset: 64
+}
+member {
+  id: 0x437b82b7
+  name: "addrconf_hash_lock"
+  type_id: 0xf313e71a
+  offset: 5056
+}
+member {
+  id: 0x30181c04
+  name: "address"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0x30182ed7
+  name: "address"
+  type_id: 0xc93e017b
+  offset: 32
+}
+member {
+  id: 0x30433ede
+  name: "address"
+  type_id: 0x92233392
+}
+member {
+  id: 0x307aeb70
+  name: "address"
+  type_id: 0xabf64f28
+  offset: 992
+}
+member {
+  id: 0x30dab74f
+  name: "address"
+  type_id: 0x0baa70a7
+  offset: 992
+}
+member {
+  id: 0x30e26040
+  name: "address"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0x30e2614b
+  name: "address"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x30e26391
+  name: "address"
+  type_id: 0x33756485
+  offset: 512
+}
+member {
+  id: 0x30e26c68
+  name: "address"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x30f84189
+  name: "address"
+  type_id: 0x295c7202
+  offset: 424
+}
+member {
+  id: 0x4ab853e8
+  name: "address0_mutex"
+  type_id: 0x2360e10b
+  offset: 4864
+}
+member {
+  id: 0x2bbb15d8
+  name: "address_device"
+  type_id: 0x2faaffbd
+  offset: 512
+}
+member {
+  id: 0x2bbb1733
+  name: "address_device"
+  type_id: 0x2faaffbd
+  offset: 2240
+}
+member {
+  id: 0xa2ec9b89
+  name: "address_hi"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xb406a310
+  name: "address_list"
+  type_id: 0x3107a2d8
+  offset: 1984
+}
+member {
+  id: 0xda57f983
+  name: "address_lo"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x4e4e54e1
+  name: "addresses"
+  type_id: 0x17c6e036
+  offset: 512
+}
+member {
+  id: 0xc41c28c8
+  name: "addrs"
+  type_id: 0xedf277ba
+  offset: 128
+}
+member {
+  id: 0xc4d7b9f1
+  name: "addrs"
+  type_id: 0x266a8cae
+}
+member {
+  id: 0xc4e9693d
+  name: "addrs"
+  type_id: 0x18bd6530
+  offset: 1728
+}
+member {
+  id: 0xc4e96e18
+  name: "addrs"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0x0115fbe0
+  name: "addrs_cnt"
+  type_id: 0x92233392
+  offset: 1408
+}
+member {
+  id: 0x5a20b8b0
+  name: "addrslots"
+  type_id: 0x80904a3b
+  offset: 128
+}
+member {
+  id: 0x92d3d6a1
+  name: "addrtype"
+  type_id: 0x5d8155a5
+  offset: 16
+}
+member {
+  id: 0xa25c6094
+  name: "adev"
+  type_id: 0x38d14fe7
+  offset: 128
+}
+member {
+  id: 0x96570ed4
+  name: "adj_limit"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xecd28cfb
+  name: "adj_list"
+  type_id: 0x1ac12b77
+  offset: 1280
+}
+member {
+  id: 0x58ceae8a
+  name: "adj_off"
+  type_id: 0x295c7202
+  offset: 392
+}
+member {
+  id: 0x83880008
+  name: "adjfine"
+  type_id: 0x2f53f19b
+  offset: 576
+}
+member {
+  id: 0xac8ff6e3
+  name: "adjfreq"
+  type_id: 0x2f7be10e
+  offset: 640
+}
+member {
+  id: 0xc543c9fe
+  name: "adjphase"
+  type_id: 0x2f7be10e
+  offset: 704
+}
+member {
+  id: 0x593e57da
+  name: "adjtime"
+  type_id: 0x2f81f017
+  offset: 768
+}
+member {
+  id: 0x71e66c06
+  name: "adjust_link"
+  type_id: 0x0d9c4ffe
+  offset: 12864
+}
+member {
+  id: 0xbc9ff97c
+  name: "adjust_op_size"
+  type_id: 0x2de8ff3d
+}
+member {
+  id: 0xb9f30be1
+  name: "adjust_perf"
+  type_id: 0x0ade0ae7
+  offset: 640
+}
+member {
+  id: 0xeab20c1b
+  name: "adjusted_mode"
+  type_id: 0x81bb7781
+  offset: 192
+}
+member {
+  id: 0x30f9aa2f
+  name: "adler"
+  type_id: 0x3fa31951
+  offset: 640
+}
+member {
+  id: 0x275b6306
+  name: "adma_addr"
+  type_id: 0xe02e14d6
+  offset: 7808
+}
+member {
+  id: 0xbc224fc4
+  name: "adma_table"
+  type_id: 0x18bd6530
+  offset: 7552
+}
+member {
+  id: 0x0c3c6154
+  name: "adma_table_cnt"
+  type_id: 0xc9082b19
+  offset: 10208
+}
+member {
+  id: 0x8dfc4474
+  name: "adma_table_sz"
+  type_id: 0xf435685e
+  offset: 7680
+}
+member {
+  id: 0xe100eb29
+  name: "adma_workaround"
+  type_id: 0x0de8f5e2
+  offset: 1472
+}
+member {
+  id: 0x657604fd
+  name: "adma_write_desc"
+  type_id: 0x0d232330
+  offset: 1664
+}
+member {
+  id: 0xd97f8733
+  name: "adp_support"
+  type_id: 0x6d7f5ff6
+  offset: 32
+}
+member {
+  id: 0x6e613216
+  name: "adr"
+  type_id: 0xe966346e
+  offset: 64
+}
+member {
+  id: 0xfd7bf76c
+  name: "adrp"
+  type_id: 0x0baa70a7
+}
+member {
+  id: 0xc6d6a32c
+  name: "adv_addr_type"
+  type_id: 0xb3e7bac9
+  offset: 912
+}
+member {
+  id: 0x71a815c7
+  name: "adv_data"
+  type_id: 0x53171385
+  offset: 39120
+}
+member {
+  id: 0x5d9e95ae
+  name: "adv_data_len"
+  type_id: 0xb3e7bac9
+  offset: 41128
+}
+member {
+  id: 0xb2cd9d5d
+  name: "adv_encoder_option"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x1e54b3af
+  name: "adv_encoder_option2"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x99b1c526
+  name: "adv_instance"
+  type_id: 0xb3e7bac9
+  offset: 384
+}
+member {
+  id: 0x003ea69f
+  name: "adv_instance_cnt"
+  type_id: 0x4585663f
+  offset: 45312
+}
+member {
+  id: 0xaa882ed4
+  name: "adv_instance_expire"
+  type_id: 0xf1159c31
+  offset: 45376
+}
+member {
+  id: 0x030b0ab6
+  name: "adv_instance_timeout"
+  type_id: 0xe8034002
+  offset: 45360
+}
+member {
+  id: 0x86b94497
+  name: "adv_instances"
+  type_id: 0xd3c80119
+  offset: 45184
+}
+member {
+  id: 0x546851f2
+  name: "adv_monitors_cnt"
+  type_id: 0x4585663f
+  offset: 46656
+}
+member {
+  id: 0xff86bb58
+  name: "adv_monitors_idr"
+  type_id: 0x04b89667
+  offset: 46464
+}
+member {
+  id: 0xfef7071c
+  name: "adv_old"
+  type_id: 0x607419c2
+  offset: 9984
+}
+member {
+  id: 0x105c3c4d
+  name: "adv_tx_power"
+  type_id: 0x901eaf6a
+  offset: 39112
+}
+member {
+  id: 0x686a7031
+  name: "advertised"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x9f11b376
+  name: "advertising"
+  type_id: 0x607419c2
+  offset: 128
+}
+member {
+  id: 0x9f11b6a5
+  name: "advertising"
+  type_id: 0x607419c2
+  offset: 9728
+}
+member {
+  id: 0x9f11bab4
+  name: "advertising"
+  type_id: 0x607419c2
+}
+member {
+  id: 0x9f16e345
+  name: "advertising"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x9f97e4f3
+  name: "advertising"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x6e09ac61
+  name: "advertising_old_state"
+  type_id: 0x6720d32f
+  offset: 28288
+}
+member {
+  id: 0x4821ea2b
+  name: "advertising_paused"
+  type_id: 0x6d7f5ff6
+  offset: 28320
+}
+member {
+  id: 0xcc74652e
+  name: "advmon_allowlist_duration"
+  type_id: 0xe8034002
+  offset: 6720
+}
+member {
+  id: 0xe88abc76
+  name: "advmon_no_filter_duration"
+  type_id: 0xe8034002
+  offset: 6736
+}
+member {
+  id: 0xaaa3fd42
+  name: "advmon_pend_notify"
+  type_id: 0x6d7f5ff6
+  offset: 50368
+}
+member {
+  id: 0x1ffcf224
+  name: "ae"
+  type_id: 0x25802b70
+}
+member {
+  id: 0x59bfd6c9
+  name: "aead"
+  type_id: 0x35e7d4e0
+  offset: 2816
+}
+member {
+  id: 0x405b6024
+  name: "aer_cap"
+  type_id: 0x914dbfdc
+  offset: 592
+}
+member {
+  id: 0xb0533aa4
+  name: "aer_stats"
+  type_id: 0x23543beb
+  offset: 640
+}
+member {
+  id: 0x5b7ffe05
+  name: "af"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xb375ae2c
+  name: "af_packet_net"
+  type_id: 0x0ca27481
+  offset: 320
+}
+member {
+  id: 0x0dd88be0
+  name: "af_packet_priv"
+  type_id: 0x18bd6530
+  offset: 384
+}
+member {
+  id: 0x9aeabf13
+  name: "afc"
+  type_id: 0x0faae5b1
+  offset: 512
+}
+member {
+  id: 0xf3275b98
+  name: "affinity"
+  type_id: 0x99caa0ae
+  offset: 192
+}
+member {
+  id: 0xf3917ce2
+  name: "affinity"
+  type_id: 0x2fe5b8b9
+  offset: 256
+}
+member {
+  id: 0xcea29a17
+  name: "affinity_hint"
+  type_id: 0x310ec01d
+  offset: 1536
+}
+member {
+  id: 0x114047a0
+  name: "affinity_notify"
+  type_id: 0x328870e8
+  offset: 1600
+}
+member {
+  id: 0x8ee7990f
+  name: "afs"
+  type_id: 0x0d2bad9a
+}
+member {
+  id: 0xd7bdf897
+  name: "aggregate"
+  type_id: 0x2dd03fae
+  offset: 320
+}
+member {
+  id: 0x9b642e7a
+  name: "ah_ip4_spec"
+  type_id: 0x76713e01
+}
+member {
+  id: 0x5d08a357
+  name: "ah_ip6_spec"
+  type_id: 0x6df98672
+}
+member {
+  id: 0x22e9c7ff
+  name: "ahb_clks"
+  type_id: 0x5f9de25a
+  offset: 128
+}
+member {
+  id: 0xadeefc03
+  name: "ahit"
+  type_id: 0xc9082b19
+  offset: 800
+}
+member {
+  id: 0x596040ee
+  name: "aid"
+  type_id: 0x4664de11
+  offset: 32
+}
+member {
+  id: 0x953e7334
+  name: "aid_len"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x81cbc424
+  name: "aie_timer"
+  type_id: 0x3050a963
+  offset: 9600
+}
+member {
+  id: 0xb70ae771
+  name: "aifsn"
+  type_id: 0x295c7202
+  offset: 48
+}
+member {
+  id: 0xa62eacfd
+  name: "ainsn"
+  type_id: 0x324af871
+  offset: 704
+}
+member {
+  id: 0xbf6035d5
+  name: "aio_ring_file"
+  type_id: 0x18ea6ae3
+  offset: 4608
+}
+member {
+  id: 0x262fa271
+  name: "akm_suites"
+  type_id: 0x3104c07e
+  offset: 64
+}
+member {
+  id: 0x262fa463
+  name: "akm_suites"
+  type_id: 0x3104c07e
+  offset: 1408
+}
+member {
+  id: 0xa750b903
+  name: "alac_d"
+  type_id: 0xca95e0dc
+}
+member {
+  id: 0x60b1b6c0
+  name: "alarm_irq_enable"
+  type_id: 0x2d900b9c
+  offset: 384
+}
+member {
+  id: 0xaa638556
+  name: "alb_count"
+  type_id: 0x4585663f
+  offset: 1664
+}
+member {
+  id: 0x451d8c76
+  name: "alb_failed"
+  type_id: 0x4585663f
+  offset: 1696
+}
+member {
+  id: 0x336c46f0
+  name: "alb_pushed"
+  type_id: 0x4585663f
+  offset: 1728
+}
+member {
+  id: 0x8778e04f
+  name: "alert"
+  type_id: 0x0da371bb
+  offset: 320
+}
+member {
+  id: 0xa9ecb908
+  name: "alert_high_temp_charge_current_ua"
+  type_id: 0x6720d32f
+  offset: 608
+}
+member {
+  id: 0x376bb0df
+  name: "alert_high_temp_charge_voltage_uv"
+  type_id: 0x6720d32f
+  offset: 640
+}
+member {
+  id: 0x75e92ccd
+  name: "alert_low_temp_charge_current_ua"
+  type_id: 0x6720d32f
+  offset: 544
+}
+member {
+  id: 0x6fcc5574
+  name: "alert_low_temp_charge_voltage_uv"
+  type_id: 0x6720d32f
+  offset: 576
+}
+member {
+  id: 0x2784b70a
+  name: "alg"
+  type_id: 0x293b162f
+}
+member {
+  id: 0x27ad5b22
+  name: "alg"
+  type_id: 0x00defc2c
+  offset: 128
+}
+member {
+  id: 0xc3ae1168
+  name: "alg_icv_len"
+  type_id: 0x4585663f
+  offset: 544
+}
+member {
+  id: 0x85ee3a23
+  name: "alg_key"
+  type_id: 0xca2a51af
+  offset: 576
+}
+member {
+  id: 0x85ee3d8e
+  name: "alg_key"
+  type_id: 0xca2a51af
+  offset: 544
+}
+member {
+  id: 0x7206c84a
+  name: "alg_key_len"
+  type_id: 0x4585663f
+  offset: 512
+}
+member {
+  id: 0xd6a9de4e
+  name: "alg_name"
+  type_id: 0x3db8d8c8
+}
+member {
+  id: 0x38fafdc0
+  name: "alg_trunc_len"
+  type_id: 0x4585663f
+  offset: 544
+}
+member {
+  id: 0x5a1dac3a
+  name: "algo"
+  type_id: 0x09f65231
+  offset: 96
+}
+member {
+  id: 0x5a21819e
+  name: "algo"
+  type_id: 0x35dbb7d3
+  offset: 128
+}
+member {
+  id: 0x5ad3a365
+  name: "algo"
+  type_id: 0xc7f025a7
+  offset: 256
+}
+member {
+  id: 0x3c8dab57
+  name: "algo_data"
+  type_id: 0x18bd6530
+  offset: 192
+}
+member {
+  id: 0x35b264f0
+  name: "algo_id"
+  type_id: 0x943e0549
+  offset: 768
+}
+member {
+  id: 0x71df6098
+  name: "algorithm_id"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x33075cab
+  name: "align"
+  type_id: 0xe62ebf07
+  offset: 320
+}
+member {
+  id: 0x331547cc
+  name: "align"
+  type_id: 0xf435685e
+  offset: 448
+}
+member {
+  id: 0x3324a589
+  name: "align"
+  type_id: 0xc5d9d969
+  offset: 96
+}
+member {
+  id: 0x33a4f7f4
+  name: "align"
+  type_id: 0x4585663f
+  offset: 672
+}
+member {
+  id: 0x33d2001c
+  name: "align"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0x33d20dd1
+  name: "align"
+  type_id: 0x33756485
+  offset: 8128
+}
+member {
+  id: 0x5086642c
+  name: "align_addr"
+  type_id: 0xe02e14d6
+  offset: 7872
+}
+member {
+  id: 0x18c64942
+  name: "align_buffer"
+  type_id: 0x18bd6530
+  offset: 7616
+}
+member {
+  id: 0x83ff8934
+  name: "align_buffer_sz"
+  type_id: 0xf435685e
+  offset: 7744
+}
+member {
+  id: 0x5b337c99
+  name: "align_resource"
+  type_id: 0x0b395893
+  offset: 8192
+}
+member {
+  id: 0x361dfe02
+  name: "alignment"
+  type_id: 0x92233392
+  offset: 128
+}
+member {
+  id: 0x36a68d1e
+  name: "alignment"
+  type_id: 0x295c7202
+  offset: 2176
+}
+member {
+  id: 0x1ede05af
+  name: "alignment_offset"
+  type_id: 0x4585663f
+  offset: 416
+}
+member {
+  id: 0xe88dc597
+  name: "alive"
+  type_id: 0x2e9195ef
+  offset: 448
+}
+member {
+  id: 0xee089993
+  name: "all"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xee1a3da7
+  name: "all"
+  type_id: 0x7584e7da
+}
+member {
+  id: 0xeebc7141
+  name: "all"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0xeebc75a0
+  name: "all"
+  type_id: 0xd3c80119
+  offset: 64
+}
+member {
+  id: 0xeeda7ffc
+  name: "all"
+  type_id: 0xb5c6bcdb
+}
+member {
+  id: 0x339d88ff
+  name: "all_blkcgs_node"
+  type_id: 0xd3c80119
+  offset: 2560
+}
+member {
+  id: 0x5dec83ca
+  name: "all_bpp"
+  type_id: 0x6d7f5ff6
+  offset: 16
+}
+member {
+  id: 0x25e1f497
+  name: "all_device_types"
+  type_id: 0xa0b4fda8
+  offset: 312
+}
+member {
+  id: 0xd22cb699
+  name: "all_ibis_handled"
+  type_id: 0x3fcbf304
+}
+member {
+  id: 0x8903ccb4
+  name: "all_list"
+  type_id: 0xd3c80119
+  offset: 960
+}
+member {
+  id: 0x88ca1362
+  name: "allalgs"
+  type_id: 0x295c7202
+  offset: 408
+}
+member {
+  id: 0xb047108d
+  name: "allmulti"
+  type_id: 0x4585663f
+  offset: 5664
+}
+member {
+  id: 0x45188eb1
+  name: "alloc"
+  type_id: 0xf435685e
+}
+member {
+  id: 0x453de491
+  name: "alloc"
+  type_id: 0xd159863f
+  offset: 3392
+}
+member {
+  id: 0x4561e8d7
+  name: "alloc"
+  type_id: 0x8d548cbf
+  offset: 2048
+}
+member {
+  id: 0x458b9289
+  name: "alloc"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0x45a9377d
+  name: "alloc"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x45c087f5
+  name: "alloc"
+  type_id: 0x2c3beb57
+  offset: 320
+}
+member {
+  id: 0x45c37c3f
+  name: "alloc"
+  type_id: 0x2fc7e631
+}
+member {
+  id: 0x45c3c732
+  name: "alloc"
+  type_id: 0x2f764d18
+  offset: 896
+}
+member {
+  id: 0x45c97ff8
+  name: "alloc"
+  type_id: 0x25c5b309
+  offset: 384
+}
+member {
+  id: 0x45d27548
+  name: "alloc"
+  type_id: 0x3ec65828
+  offset: 192
+}
+member {
+  id: 0x45d92b5a
+  name: "alloc"
+  type_id: 0x3590285d
+  offset: 256
+}
+member {
+  id: 0x45dfc97a
+  name: "alloc"
+  type_id: 0x33756485
+  offset: 320
+}
+member {
+  id: 0x45ecb8fc
+  name: "alloc"
+  type_id: 0x000a9d21
+  offset: 1600
+}
+member {
+  id: 0x45f145e7
+  name: "alloc"
+  type_id: 0x1dfe3eb6
+}
+member {
+  id: 0x45f1ded2
+  name: "alloc"
+  type_id: 0x1d65a00d
+  offset: 256
+}
+member {
+  id: 0x45f358cc
+  name: "alloc"
+  type_id: 0x1fe7f40f
+  offset: 64
+}
+member {
+  id: 0x21677719
+  name: "alloc_contig"
+  type_id: 0x6d7f5ff6
+  offset: 992
+}
+member {
+  id: 0x18a991e6
+  name: "alloc_cpu"
+  type_id: 0x914dbfdc
+  offset: 256
+}
+member {
+  id: 0xfd6395d5
+  name: "alloc_desc_sz"
+  type_id: 0x4585663f
+  offset: 7968
+}
+member {
+  id: 0x01677e52
+  name: "alloc_dev"
+  type_id: 0x2faaffbd
+  offset: 1728
+}
+member {
+  id: 0x44c49663
+  name: "alloc_devs"
+  type_id: 0xe4a8b649
+  offset: 832
+}
+member {
+  id: 0xaf25a3f3
+  name: "alloc_dquot"
+  type_id: 0x2d254722
+  offset: 64
+}
+member {
+  id: 0xa75f1fbf
+  name: "alloc_flags"
+  type_id: 0xf1a6dfed
+  offset: 576
+}
+member {
+  id: 0xa763c31c
+  name: "alloc_flags"
+  type_id: 0xcd70b42d
+  offset: 832
+}
+member {
+  id: 0x8e2f4601
+  name: "alloc_func"
+  type_id: 0x0db53d7a
+  offset: 320
+}
+member {
+  id: 0x8fa6244d
+  name: "alloc_hint"
+  type_id: 0x1bf16028
+  offset: 192
+}
+member {
+  id: 0x8ff85140
+  name: "alloc_hint"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x5acf0712
+  name: "alloc_inode"
+  type_id: 0x0e259468
+}
+member {
+  id: 0x1ab9e524
+  name: "alloc_inst"
+  type_id: 0x0672ef2a
+  offset: 256
+}
+member {
+  id: 0x987014f9
+  name: "alloc_len"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xa2fdf321
+  name: "alloc_list"
+  type_id: 0xd3c80119
+  offset: 7680
+}
+member {
+  id: 0xeabbfa31
+  name: "alloc_lock"
+  type_id: 0xf313e71a
+  offset: 18688
+}
+member {
+  id: 0x7b7aaacc
+  name: "alloc_module_va"
+  type_id: 0x1617a6e2
+  offset: 64
+}
+member {
+  id: 0xb126ee46
+  name: "alloc_noncontiguous"
+  type_id: 0x1a12b190
+  offset: 320
+}
+member {
+  id: 0xaf409590
+  name: "alloc_notifier"
+  type_id: 0x004b03fc
+  offset: 512
+}
+member {
+  id: 0x75fd54b0
+  name: "alloc_pages"
+  type_id: 0x2524545c
+  offset: 192
+}
+member {
+  id: 0x179f1e50
+  name: "alloc_request"
+  type_id: 0x03a40599
+  offset: 192
+}
+member {
+  id: 0x2fd193ed
+  name: "alloc_size"
+  type_id: 0xf435685e
+  offset: 64
+}
+member {
+  id: 0xc15a5f1e
+  name: "alloc_skb"
+  type_id: 0x10b2cf3a
+  offset: 832
+}
+member {
+  id: 0x32b9bad9
+  name: "alloc_streams"
+  type_id: 0x2faa19f5
+  offset: 1856
+}
+member {
+  id: 0xefdc36ea
+  name: "alloc_time_ns"
+  type_id: 0x92233392
+  offset: 768
+}
+member {
+  id: 0x7fa1c349
+  name: "allocate"
+  type_id: 0x18efc3fd
+}
+member {
+  id: 0x416117c9
+  name: "allocated"
+  type_id: 0x6d7f5ff6
+}
+member {
+  id: 0x41b3ffd4
+  name: "allocated_buffers"
+  type_id: 0xeb923a9b
+  offset: 768
+}
+member {
+  id: 0x58b5d7ca
+  name: "allocated_stack"
+  type_id: 0x6720d32f
+  offset: 11008
+}
+member {
+  id: 0x17497109
+  name: "allocation"
+  type_id: 0xf435685e
+  offset: 320
+}
+member {
+  id: 0xc34f971c
+  name: "alloced"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x67471310
+  name: "allocflags"
+  type_id: 0xf1a6dfed
+  offset: 480
+}
+member {
+  id: 0xaf17c0dc
+  name: "allocs"
+  type_id: 0x33756485
+}
+member {
+  id: 0x3722a24f
+  name: "allow_add"
+  type_id: 0x36076ff8
+  offset: 576
+}
+member {
+  id: 0xbea682a9
+  name: "allow_cache_hints"
+  type_id: 0x4585663f
+  offset: 201
+  bitsize: 1
+}
+member {
+  id: 0x595cd86a
+  name: "allow_compat"
+  type_id: 0xe8e3d133
+  offset: 512
+}
+member {
+  id: 0x14e2bc0d
+  name: "allow_connect"
+  type_id: 0x6d7f5ff6
+  offset: 7568
+}
+member {
+  id: 0x1098af81
+  name: "allow_instances"
+  type_id: 0x6d7f5ff6
+  offset: 1192
+}
+member {
+  id: 0x491f6334
+  name: "allow_link"
+  type_id: 0x2cd032dd
+  offset: 64
+}
+member {
+  id: 0xebdedfa9
+  name: "allow_merge"
+  type_id: 0x35b2d093
+  offset: 320
+}
+member {
+  id: 0x56151729
+  name: "allow_modeset"
+  type_id: 0x6d7f5ff6
+  offset: 128
+  bitsize: 1
+}
+member {
+  id: 0xfe9aa001
+  name: "allow_native"
+  type_id: 0xe8e3d133
+}
+member {
+  id: 0xf70eac77
+  name: "allow_peer2peer"
+  type_id: 0x6d7f5ff6
+}
+member {
+  id: 0x2f8eac26
+  name: "allow_ptr_leaks"
+  type_id: 0x6d7f5ff6
+  offset: 12904
+}
+member {
+  id: 0x84434cb2
+  name: "allow_ptr_to_map_access"
+  type_id: 0x6d7f5ff6
+  offset: 12920
+}
+member {
+  id: 0x4ffaf366
+  name: "allow_reinit"
+  type_id: 0x6d7f5ff6
+  offset: 193
+  bitsize: 1
+}
+member {
+  id: 0x611d304f
+  name: "allow_res_evict"
+  type_id: 0x6d7f5ff6
+  offset: 24
+}
+member {
+  id: 0xac14ca9c
+  name: "allow_restart"
+  type_id: 0x4585663f
+  offset: 2811
+  bitsize: 1
+}
+member {
+  id: 0x4ceb995d
+  name: "allow_single_roothub"
+  type_id: 0x4585663f
+  offset: 58114
+  bitsize: 1
+}
+member {
+  id: 0x26d55fa9
+  name: "allow_uninit_stack"
+  type_id: 0x6d7f5ff6
+  offset: 12912
+}
+member {
+  id: 0x2aaa0939
+  name: "allow_unknown"
+  type_id: 0x4585663f
+  offset: 4705
+  bitsize: 1
+}
+member {
+  id: 0xd57865fa
+  name: "allow_user_free"
+  type_id: 0x4585663f
+  offset: 322
+  bitsize: 1
+}
+member {
+  id: 0x408deb05
+  name: "allow_userspace_control"
+  type_id: 0x6d7f5ff6
+  offset: 8064
+}
+member {
+  id: 0x408dedf8
+  name: "allow_userspace_control"
+  type_id: 0x6d7f5ff6
+  offset: 384
+}
+member {
+  id: 0x4fbe8fdc
+  name: "allow_zero_bytesused"
+  type_id: 0x4585663f
+  offset: 195
+  bitsize: 1
+}
+member {
+  id: 0xcf3ce574
+  name: "allowed"
+  type_id: 0x6720d32f
+  offset: 1568
+}
+member {
+  id: 0xcf6dc9bd
+  name: "allowed"
+  type_id: 0x36042134
+  offset: 704
+}
+member {
+  id: 0xcf92c78a
+  name: "allowed"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x0a18e81e
+  name: "allowed_protocols"
+  type_id: 0x92233392
+  offset: 8960
+}
+member {
+  id: 0x5205e770
+  name: "allowed_wakeup_protocols"
+  type_id: 0x92233392
+  offset: 9088
+}
+member {
+  id: 0x4519db18
+  name: "alpha"
+  type_id: 0x914dbfdc
+  offset: 512
+}
+member {
+  id: 0xbb80039d
+  name: "alpha2"
+  type_id: 0x1cd62a6b
+  offset: 224
+}
+member {
+  id: 0xbb800d59
+  name: "alpha2"
+  type_id: 0x1cd62a6b
+  offset: 160
+}
+member {
+  id: 0xed803b5e
+  name: "alpha_property"
+  type_id: 0x2a670b41
+  offset: 10112
+}
+member {
+  id: 0xe458432a
+  name: "alt"
+  type_id: 0x36f998d3
+}
+member {
+  id: 0x0d5db932
+  name: "alt_frame_ts"
+  type_id: 0xedf277ba
+  offset: 1152
+}
+member {
+  id: 0x0d5dbbff
+  name: "alt_frame_ts"
+  type_id: 0xedf277ba
+  offset: 9728
+}
+member {
+  id: 0x8b1beac9
+  name: "alt_len"
+  type_id: 0x295c7202
+  offset: 88
+}
+member {
+  id: 0x0d03df3e
+  name: "alt_offset"
+  type_id: 0xd41e888f
+  offset: 32
+}
+member {
+  id: 0xf1ba528d
+  name: "altcookie"
+  type_id: 0x92233392
+  offset: 128
+}
+member {
+  id: 0x0d67515b
+  name: "alternative_gpt_sector"
+  type_id: 0x2fddaeaf
+  offset: 1152
+}
+member {
+  id: 0x011dff57
+  name: "altmap"
+  type_id: 0x4f809dfe
+}
+member {
+  id: 0x82e662b1
+  name: "altmode_desc"
+  type_id: 0x187c77a8
+  offset: 352
+}
+member {
+  id: 0x34e776fc
+  name: "altmodes"
+  type_id: 0x6720d32f
+  offset: 320
+}
+member {
+  id: 0xed0f8396
+  name: "altset"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0xaae12e05
+  name: "altset_idx"
+  type_id: 0x5d8155a5
+  offset: 344
+}
+member {
+  id: 0x9254b4e3
+  name: "altsetting"
+  type_id: 0xcf055502
+  offset: 64
+}
+member {
+  id: 0x929a19b5
+  name: "altsetting"
+  type_id: 0x01ace255
+}
+member {
+  id: 0x92c6375b
+  name: "altsetting"
+  type_id: 0x5d8155a5
+  offset: 328
+}
+member {
+  id: 0xb5e94c16
+  name: "alu_limit"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x5e00c911
+  name: "alu_state"
+  type_id: 0x295c7202
+  offset: 336
+}
+member {
+  id: 0x7f18817a
+  name: "always_defer_done"
+  type_id: 0x6d7f5ff6
+  offset: 6352
+}
+member {
+  id: 0x29e86768
+  name: "always_on"
+  type_id: 0x4585663f
+  offset: 1728
+  bitsize: 1
+}
+member {
+  id: 0x29e86884
+  name: "always_on"
+  type_id: 0x4585663f
+  offset: 192
+  bitsize: 1
+}
+member {
+  id: 0xfde7bab3
+  name: "always_on"
+  type_id: 0x6d7f5ff6
+  offset: 128
+}
+member {
+  id: 0xb94e4d1e
+  name: "ambient"
+  type_id: 0xd9449876
+  offset: 192
+}
+member {
+  id: 0x86b9e856
+  name: "amd_pll_fix"
+  type_id: 0x4585663f
+  offset: 5609
+  bitsize: 1
+}
+member {
+  id: 0xb7d6c67c
+  name: "amd_resume_bug"
+  type_id: 0x4585663f
+  offset: 3368
+  bitsize: 1
+}
+member {
+  id: 0x7dedd401
+  name: "amp"
+  type_id: 0x6d7f5ff6
+  offset: 488
+}
+member {
+  id: 0x46147565
+  name: "amp_assoc_size"
+  type_id: 0xe8034002
+  offset: 7328
+}
+member {
+  id: 0x7bdded34
+  name: "amp_be_flush_to"
+  type_id: 0xe62ebf07
+  offset: 7392
+}
+member {
+  id: 0x78b943ee
+  name: "amp_ctrls"
+  type_id: 0xd3c80119
+  offset: 512
+}
+member {
+  id: 0xa4e8e54d
+  name: "amp_ctrls_lock"
+  type_id: 0xa7c362b0
+  offset: 640
+}
+member {
+  id: 0x3c187ce2
+  name: "amp_max_bw"
+  type_id: 0xe62ebf07
+  offset: 7200
+}
+member {
+  id: 0x4c7cf425
+  name: "amp_max_flush_to"
+  type_id: 0xe62ebf07
+  offset: 7360
+}
+member {
+  id: 0x216e6075
+  name: "amp_max_pdu"
+  type_id: 0xe62ebf07
+  offset: 7264
+}
+member {
+  id: 0x13050033
+  name: "amp_mgr"
+  type_id: 0x3957e73b
+  offset: 16576
+}
+member {
+  id: 0x2fadbc0c
+  name: "amp_min_latency"
+  type_id: 0xe62ebf07
+  offset: 7232
+}
+member {
+  id: 0x183c286e
+  name: "amp_num"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0x5770d188
+  name: "amp_pal_cap"
+  type_id: 0xe8034002
+  offset: 7312
+}
+member {
+  id: 0xfc24f02b
+  name: "amp_status"
+  type_id: 0xb3e7bac9
+  offset: 7136
+}
+member {
+  id: 0xf06982b8
+  name: "amp_total_bw"
+  type_id: 0xe62ebf07
+  offset: 7168
+}
+member {
+  id: 0x09bd16a3
+  name: "amp_type"
+  type_id: 0xb3e7bac9
+  offset: 7296
+}
+member {
+  id: 0xc59f8c99
+  name: "ampdu_density"
+  type_id: 0x295c7202
+  offset: 32
+}
+member {
+  id: 0x48e14a83
+  name: "ampdu_factor"
+  type_id: 0x295c7202
+  offset: 24
+}
+member {
+  id: 0xa985cfb6
+  name: "ampdu_params_info"
+  type_id: 0x295c7202
+  offset: 16
+}
+member {
+  id: 0x27728fa6
+  name: "ams"
+  type_id: 0x31aab745
+  offset: 34112
+}
+member {
+  id: 0x31fec685
+  name: "an_complete"
+  type_id: 0x4585663f
+  offset: 418
+  bitsize: 1
+}
+member {
+  id: 0x60f1e8e8
+  name: "an_enabled"
+  type_id: 0x4585663f
+  offset: 417
+  bitsize: 1
+}
+member {
+  id: 0x5bdafb13
+  name: "analog_filter_cutoff_freq_hz"
+  type_id: 0xc9082b19
+  offset: 224
+}
+member {
+  id: 0xf40c955f
+  name: "aname"
+  type_id: 0x33c1a827
+  offset: 192
+}
+member {
+  id: 0xd29087ca
+  name: "ancestors"
+  type_id: 0xc211d754
+  offset: 13440
+}
+member {
+  id: 0xcc098f06
+  name: "anchor"
+  type_id: 0x345745bd
+  offset: 448
+}
+member {
+  id: 0xccc355f4
+  name: "anchor"
+  type_id: 0xfe81d85b
+  offset: 512
+}
+member {
+  id: 0x3433cf74
+  name: "anchor_list"
+  type_id: 0xd3c80119
+  offset: 320
+}
+member {
+  id: 0xb26b870d
+  name: "android_backport_reserved1"
+  type_id: 0x92233392
+  offset: 128
+}
+member {
+  id: 0xb26b8f5d
+  name: "android_backport_reserved1"
+  type_id: 0x92233392
+  offset: 384
+}
+member {
+  id: 0x71aeb5ba
+  name: "android_backport_reserved2"
+  type_id: 0x92233392
+  offset: 448
+}
+member {
+  id: 0x71aeba04
+  name: "android_backport_reserved2"
+  type_id: 0x92233392
+  offset: 192
+}
+member {
+  id: 0x30eed4f0
+  name: "android_backport_reserved3"
+  type_id: 0x92233392
+  offset: 256
+}
+member {
+  id: 0x30eedf43
+  name: "android_backport_reserved3"
+  type_id: 0x92233392
+  offset: 512
+}
+member {
+  id: 0xf02995d4
+  name: "android_backport_reserved4"
+  type_id: 0x92233392
+  offset: 576
+}
+member {
+  id: 0xf0299b61
+  name: "android_backport_reserved4"
+  type_id: 0x92233392
+  offset: 320
+}
+member {
+  id: 0xb16e1f4b
+  name: "android_backport_reserved5"
+  type_id: 0x92233392
+  offset: 640
+}
+member {
+  id: 0x72ed70ff
+  name: "android_backport_reserved6"
+  type_id: 0x92233392
+  offset: 704
+}
+member {
+  id: 0x322cd2d8
+  name: "android_backport_reserved7"
+  type_id: 0x92233392
+  offset: 768
+}
+member {
+  id: 0xe92a5365
+  name: "android_backport_reserved8"
+  type_id: 0x92233392
+  offset: 832
+}
+member {
+  id: 0xedc9a6ac
+  name: "android_kabi_reserved0"
+  type_id: 0x92233392
+  offset: 2816
+}
+member {
+  id: 0x2d08100c
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 2688
+}
+member {
+  id: 0x2d08103a
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 3968
+}
+member {
+  id: 0x2d0810ba
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 2432
+}
+member {
+  id: 0x2d0810f8
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 4864
+}
+member {
+  id: 0x2d081102
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 5056
+}
+member {
+  id: 0x2d081124
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 7488
+}
+member {
+  id: 0x2d08116a
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 10880
+}
+member {
+  id: 0x2d0811bf
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 6912
+}
+member {
+  id: 0x2d0811cb
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 2496
+}
+member {
+  id: 0x2d0811d3
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 59264
+}
+member {
+  id: 0x2d0811f9
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 7936
+}
+member {
+  id: 0x2d081217
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 1728
+}
+member {
+  id: 0x2d081229
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 10112
+}
+member {
+  id: 0x2d08122d
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 1024
+}
+member {
+  id: 0x2d081239
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 2304
+}
+member {
+  id: 0x2d081245
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 448
+}
+member {
+  id: 0x2d08125d
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 8064
+}
+member {
+  id: 0x2d081262
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 1472
+}
+member {
+  id: 0x2d081265
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 21312
+}
+member {
+  id: 0x2d081269
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 10048
+}
+member {
+  id: 0x2d081272
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 3328
+}
+member {
+  id: 0x2d0812b0
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 2048
+}
+member {
+  id: 0x2d0812f5
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 320
+}
+member {
+  id: 0x2d08133a
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 3008
+}
+member {
+  id: 0x2d08134b
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 640
+}
+member {
+  id: 0x2d08134c
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 17024
+}
+member {
+  id: 0x2d08134f
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 1280
+}
+member {
+  id: 0x2d081384
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 30400
+}
+member {
+  id: 0x2d081398
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 7616
+}
+member {
+  id: 0x2d0813a7
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 7040
+}
+member {
+  id: 0x2d0813c0
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 4032
+}
+member {
+  id: 0x2d0813e8
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 5760
+}
+member {
+  id: 0x2d08147a
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 4416
+}
+member {
+  id: 0x2d08147b
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 7360
+}
+member {
+  id: 0x2d081490
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 2560
+}
+member {
+  id: 0x2d081497
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 9216
+}
+member {
+  id: 0x2d0814a0
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 384
+}
+member {
+  id: 0x2d0814ec
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 1920
+}
+member {
+  id: 0x2d0814f1
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 14336
+}
+member {
+  id: 0x2d081532
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+}
+member {
+  id: 0x2d08155b
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 14976
+}
+member {
+  id: 0x2d081576
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 62784
+}
+member {
+  id: 0x2d081599
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 256
+}
+member {
+  id: 0x2d08159e
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 3712
+}
+member {
+  id: 0x2d0815a4
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 8256
+}
+member {
+  id: 0x2d0815b5
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 12608
+}
+member {
+  id: 0x2d0815f4
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 4480
+}
+member {
+  id: 0x2d08160f
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 2752
+}
+member {
+  id: 0x2d08161e
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 1664
+}
+member {
+  id: 0x2d081673
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 19776
+}
+member {
+  id: 0x2d081688
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 832
+}
+member {
+  id: 0x2d08170f
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 704
+}
+member {
+  id: 0x2d081767
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 28800
+}
+member {
+  id: 0x2d0817b6
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 1984
+}
+member {
+  id: 0x2d0817c1
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 1408
+}
+member {
+  id: 0x2d0817f6
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 1216
+}
+member {
+  id: 0x2d081844
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 1088
+}
+member {
+  id: 0x2d08184a
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 9344
+}
+member {
+  id: 0x2d081854
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 8128
+}
+member {
+  id: 0x2d0818b7
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 51456
+}
+member {
+  id: 0x2d0818d7
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 7808
+}
+member {
+  id: 0x2d081919
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 4096
+}
+member {
+  id: 0x2d08193b
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 20288
+}
+member {
+  id: 0x2d08193e
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 12096
+}
+member {
+  id: 0x2d08194b
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 45952
+}
+member {
+  id: 0x2d081971
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 8768
+}
+member {
+  id: 0x2d0819a8
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 5312
+}
+member {
+  id: 0x2d0819ac
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 9600
+}
+member {
+  id: 0x2d0819d8
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 26048
+}
+member {
+  id: 0x2d0819dd
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 8000
+}
+member {
+  id: 0x2d0819fe
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 11968
+}
+member {
+  id: 0x2d081a02
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 3200
+}
+member {
+  id: 0x2d081aa3
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 3072
+}
+member {
+  id: 0x2d081ab8
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 12480
+}
+member {
+  id: 0x2d081b50
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 6528
+}
+member {
+  id: 0x2d081b70
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 2112
+}
+member {
+  id: 0x2d081bb0
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 10944
+}
+member {
+  id: 0x2d081bb1
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 6784
+}
+member {
+  id: 0x2d081bb8
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 17152
+}
+member {
+  id: 0x2d081bb9
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 2880
+}
+member {
+  id: 0x2d081be0
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 8704
+}
+member {
+  id: 0x2d081be5
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 10368
+}
+member {
+  id: 0x2d081bee
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 1152
+}
+member {
+  id: 0x2d081c0d
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 8448
+}
+member {
+  id: 0x2d081c28
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 6400
+}
+member {
+  id: 0x2d081c2c
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 8512
+}
+member {
+  id: 0x2d081c3a
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 3520
+}
+member {
+  id: 0x2d081c40
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 576
+}
+member {
+  id: 0x2d081c47
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 2368
+}
+member {
+  id: 0x2d081c49
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 6656
+}
+member {
+  id: 0x2d081c68
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 2624
+}
+member {
+  id: 0x2d081c69
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 2944
+}
+member {
+  id: 0x2d081c8a
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 1600
+}
+member {
+  id: 0x2d081cf0
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 128
+}
+member {
+  id: 0x2d081d4f
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 14656
+}
+member {
+  id: 0x2d081d78
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 11328
+}
+member {
+  id: 0x2d081d9c
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 768
+}
+member {
+  id: 0x2d081daa
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 3648
+}
+member {
+  id: 0x2d081db8
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 7552
+}
+member {
+  id: 0x2d081dc1
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 960
+}
+member {
+  id: 0x2d081dc5
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 12416
+}
+member {
+  id: 0x2d081dd2
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 14528
+}
+member {
+  id: 0x2d081dd9
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 10432
+}
+member {
+  id: 0x2d081dfb
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 192
+}
+member {
+  id: 0x2d081e12
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 12992
+}
+member {
+  id: 0x2d081e2a
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 512
+}
+member {
+  id: 0x2d081e2f
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 1856
+}
+member {
+  id: 0x2d081eb7
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 7168
+}
+member {
+  id: 0x2d081ecd
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 9024
+}
+member {
+  id: 0x2d081ed3
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 17600
+}
+member {
+  id: 0x2d081f04
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 5120
+}
+member {
+  id: 0x2d081f2c
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 4544
+}
+member {
+  id: 0x2d081f3f
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 4608
+}
+member {
+  id: 0x2d081f5d
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 20096
+}
+member {
+  id: 0x2d081f8d
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 5504
+}
+member {
+  id: 0x2d081f94
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 896
+}
+member {
+  id: 0x2d081fab
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 10240
+}
+member {
+  id: 0x2d081fb1
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 1344
+}
+member {
+  id: 0x2d081fcf
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 6336
+}
+member {
+  id: 0x2d081fd5
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 77056
+}
+member {
+  id: 0x2d081fd6
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 1536
+}
+member {
+  id: 0x2d081ffd
+  name: "android_kabi_reserved1"
+  type_id: 0x92233392
+  offset: 10304
+}
+member {
+  id: 0x4f087fbc
+  name: "android_kabi_reserved10"
+  type_id: 0x92233392
+  offset: 2624
+}
+member {
+  id: 0x0bcb068c
+  name: "android_kabi_reserved11"
+  type_id: 0x92233392
+  offset: 2688
+}
+member {
+  id: 0xca84ad27
+  name: "android_kabi_reserved12"
+  type_id: 0x92233392
+  offset: 2752
+}
+member {
+  id: 0x894b5994
+  name: "android_kabi_reserved13"
+  type_id: 0x92233392
+  offset: 2816
+}
+member {
+  id: 0x480bfaa2
+  name: "android_kabi_reserved14"
+  type_id: 0x92233392
+  offset: 2880
+}
+member {
+  id: 0xe6ca9dc4
+  name: "android_kabi_reserved15"
+  type_id: 0x92233392
+  offset: 2944
+}
+member {
+  id: 0x27853b51
+  name: "android_kabi_reserved16"
+  type_id: 0x92233392
+  offset: 3008
+}
+member {
+  id: 0x64469672
+  name: "android_kabi_reserved17"
+  type_id: 0x92233392
+  offset: 3072
+}
+member {
+  id: 0xa5057e87
+  name: "android_kabi_reserved18"
+  type_id: 0x92233392
+  offset: 3136
+}
+member {
+  id: 0xedc43970
+  name: "android_kabi_reserved19"
+  type_id: 0x92233392
+  offset: 3200
+}
+member {
+  id: 0x6376001a
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 1600
+}
+member {
+  id: 0x63760032
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 6592
+}
+member {
+  id: 0x6376007a
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 6464
+}
+member {
+  id: 0x63760091
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 3136
+}
+member {
+  id: 0x63760097
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 11392
+}
+member {
+  id: 0x637600b8
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 6400
+}
+member {
+  id: 0x637600d0
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 576
+}
+member {
+  id: 0x637600d7
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 2368
+}
+member {
+  id: 0x637600f9
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 2944
+}
+member {
+  id: 0x637600fb
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 77120
+}
+member {
+  id: 0x6376010c
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 768
+}
+member {
+  id: 0x6376014c
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 5568
+}
+member {
+  id: 0x63760151
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 960
+}
+member {
+  id: 0x637601c1
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 62848
+}
+member {
+  id: 0x637602ba
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 512
+}
+member {
+  id: 0x637602d1
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 10496
+}
+member {
+  id: 0x637602ea
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 4160
+}
+member {
+  id: 0x63760304
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 896
+}
+member {
+  id: 0x63760321
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 1344
+}
+member {
+  id: 0x63760345
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 1536
+}
+member {
+  id: 0x63760394
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 5120
+}
+member {
+  id: 0x6376039c
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 6720
+}
+member {
+  id: 0x637603bc
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 4544
+}
+member {
+  id: 0x637603cd
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 3264
+}
+member {
+  id: 0x63760473
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 3776
+}
+member {
+  id: 0x637604d1
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 20160
+}
+member {
+  id: 0x637604d4
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 1088
+}
+member {
+  id: 0x63760531
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 28864
+}
+member {
+  id: 0x6376054d
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 8000
+}
+member {
+  id: 0x6376055e
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 13056
+}
+member {
+  id: 0x63760589
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 4096
+}
+member {
+  id: 0x6376059d
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 9664
+}
+member {
+  id: 0x63760628
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 12480
+}
+member {
+  id: 0x6376065f
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 15040
+}
+member {
+  id: 0x637606ba
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 4928
+}
+member {
+  id: 0x637606c8
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 2816
+}
+member {
+  id: 0x637606cf
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 21376
+}
+member {
+  id: 0x63760733
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 8832
+}
+member {
+  id: 0x63760775
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 10368
+}
+member {
+  id: 0x6376079f
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 26112
+}
+member {
+  id: 0x637607e0
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 2112
+}
+member {
+  id: 0x63760830
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 384
+}
+member {
+  id: 0x6376087c
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 1920
+}
+member {
+  id: 0x637608bd
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 51520
+}
+member {
+  id: 0x637608ca
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 5184
+}
+member {
+  id: 0x6376090e
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 3712
+}
+member {
+  id: 0x63760917
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 59328
+}
+member {
+  id: 0x6376095f
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 46016
+}
+member {
+  id: 0x63760964
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 4480
+}
+member {
+  id: 0x637609a2
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+}
+member {
+  id: 0x63760a11
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 12544
+}
+member {
+  id: 0x63760a18
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 832
+}
+member {
+  id: 0x63760a4f
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 9280
+}
+member {
+  id: 0x63760a55
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 14592
+}
+member {
+  id: 0x63760a8e
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 1664
+}
+member {
+  id: 0x63760a9a
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 17088
+}
+member {
+  id: 0x63760a9f
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 2752
+}
+member {
+  id: 0x63760aa1
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 30464
+}
+member {
+  id: 0x63760b0c
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 9088
+}
+member {
+  id: 0x63760b51
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 1408
+}
+member {
+  id: 0x63760b66
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 1216
+}
+member {
+  id: 0x63760b9f
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 704
+}
+member {
+  id: 0x63760c18
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 12672
+}
+member {
+  id: 0x63760c2a
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 2432
+}
+member {
+  id: 0x63760c3d
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 2176
+}
+member {
+  id: 0x63760c9c
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 2688
+}
+member {
+  id: 0x63760ccb
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 6848
+}
+member {
+  id: 0x63760ce7
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 20352
+}
+member {
+  id: 0x63760d53
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 7104
+}
+member {
+  id: 0x63760d5b
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 2496
+}
+member {
+  id: 0x63760e1a
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 8320
+}
+member {
+  id: 0x63760e20
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 2048
+}
+member {
+  id: 0x63760e65
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 320
+}
+member {
+  id: 0x63760ea3
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 8192
+}
+member {
+  id: 0x63760eb4
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 14720
+}
+member {
+  id: 0x63760eb9
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 10112
+}
+member {
+  id: 0x63760ebd
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 1024
+}
+member {
+  id: 0x63760ecd
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 8064
+}
+member {
+  id: 0x63760ed5
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 448
+}
+member {
+  id: 0x63760ef2
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 1472
+}
+member {
+  id: 0x63760f6c
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 3392
+}
+member {
+  id: 0x63760f99
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 5376
+}
+member {
+  id: 0x63760faa
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 3008
+}
+member {
+  id: 0x63760fdb
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 640
+}
+member {
+  id: 0x63760fdf
+  name: "android_kabi_reserved2"
+  type_id: 0x92233392
+  offset: 1280
+}
+member {
+  id: 0x8b2affdb
+  name: "android_kabi_reserved20"
+  type_id: 0x92233392
+  offset: 3264
+}
+member {
+  id: 0x4a6d6ba0
+  name: "android_kabi_reserved21"
+  type_id: 0x92233392
+  offset: 3328
+}
+member {
+  id: 0x06aa1a3a
+  name: "android_kabi_reserved22"
+  type_id: 0x92233392
+  offset: 3392
+}
+member {
+  id: 0xc7eaba0a
+  name: "android_kabi_reserved23"
+  type_id: 0x92233392
+  offset: 3456
+}
+member {
+  id: 0x982b4b61
+  name: "android_kabi_reserved24"
+  type_id: 0x92233392
+  offset: 3520
+}
+member {
+  id: 0x596bf84a
+  name: "android_kabi_reserved25"
+  type_id: 0x92233392
+  offset: 3584
+}
+member {
+  id: 0x1bf49b41
+  name: "android_kabi_reserved26"
+  type_id: 0x92233392
+  offset: 3648
+}
+member {
+  id: 0xda2b77e3
+  name: "android_kabi_reserved27"
+  type_id: 0x92233392
+  offset: 3712
+}
+member {
+  id: 0x812e3c37
+  name: "android_kabi_reserved28"
+  type_id: 0x92233392
+  offset: 3776
+}
+member {
+  id: 0x406e4055
+  name: "android_kabi_reserved29"
+  type_id: 0x92233392
+  offset: 3840
+}
+member {
+  id: 0xac894051
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 3840
+}
+member {
+  id: 0xac89408e
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 6464
+}
+member {
+  id: 0xac8940d0
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 5632
+}
+member {
+  id: 0xac8940ee
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 1600
+}
+member {
+  id: 0xac894182
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 8896
+}
+member {
+  id: 0xac8941f8
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 768
+}
+member {
+  id: 0xac894244
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 59392
+}
+member {
+  id: 0xac89424e
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 512
+}
+member {
+  id: 0xac89431c
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 3456
+}
+member {
+  id: 0xac894348
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 4544
+}
+member {
+  id: 0xac89435b
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 4608
+}
+member {
+  id: 0xac89436d
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 26176
+}
+member {
+  id: 0xac8943b1
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 1536
+}
+member {
+  id: 0xac8943f0
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 896
+}
+member {
+  id: 0xac894420
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 1088
+}
+member {
+  id: 0xac894430
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 8128
+}
+member {
+  id: 0xac894467
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 51584
+}
+member {
+  id: 0xac894653
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 12736
+}
+member {
+  id: 0xac89465b
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 14784
+}
+member {
+  id: 0xac894666
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 3200
+}
+member {
+  id: 0xac8946c7
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 3072
+}
+member {
+  id: 0xac894734
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 6528
+}
+member {
+  id: 0xac894736
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 30528
+}
+member {
+  id: 0xac894774
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 9152
+}
+member {
+  id: 0xac89478a
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 1152
+}
+member {
+  id: 0xac8947dc
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 17152
+}
+member {
+  id: 0xac8947dd
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 2880
+}
+member {
+  id: 0xac8948c4
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 384
+}
+member {
+  id: 0xac8948f4
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 2560
+}
+member {
+  id: 0xac894975
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 20224
+}
+member {
+  id: 0xac8949c0
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 8256
+}
+member {
+  id: 0xac8949d1
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 12608
+}
+member {
+  id: 0xac894a2b
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 4992
+}
+member {
+  id: 0xac894a6b
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 2752
+}
+member {
+  id: 0xac894a7a
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 1664
+}
+member {
+  id: 0xac894ae5
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 12544
+}
+member {
+  id: 0xac894aec
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 832
+}
+member {
+  id: 0xac894b6b
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 704
+}
+member {
+  id: 0xac894bd2
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 1984
+}
+member {
+  id: 0xac894c0c
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 13120
+}
+member {
+  id: 0xac894c1c
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 10176
+}
+member {
+  id: 0xac894c5e
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 20416
+}
+member {
+  id: 0xac894cc9
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 2176
+}
+member {
+  id: 0xac894d81
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 5440
+}
+member {
+  id: 0xac894ddb
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 6912
+}
+member {
+  id: 0xac894e06
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 1472
+}
+member {
+  id: 0xac894e16
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 3328
+}
+member {
+  id: 0xac894e21
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 448
+}
+member {
+  id: 0xac894e49
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 1024
+}
+member {
+  id: 0xac894e73
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 1728
+}
+member {
+  id: 0xac894e97
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 28928
+}
+member {
+  id: 0xac894f0c
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 46080
+}
+member {
+  id: 0xac894f2b
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 1280
+}
+member {
+  id: 0xac894f2f
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 640
+}
+member {
+  id: 0xac894f5e
+  name: "android_kabi_reserved3"
+  type_id: 0x92233392
+  offset: 3008
+}
+member {
+  id: 0x031a13a1
+  name: "android_kabi_reserved30"
+  type_id: 0x92233392
+  offset: 3904
+}
+member {
+  id: 0x4fda68d3
+  name: "android_kabi_reserved31"
+  type_id: 0x92233392
+  offset: 3968
+}
+member {
+  id: 0x819947e3
+  name: "android_kabi_reserved32"
+  type_id: 0x92233392
+  offset: 4032
+}
+member {
+  id: 0xe0f6300c
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 6976
+}
+member {
+  id: 0xe0f6307b
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 5056
+}
+member {
+  id: 0xe0f630f5
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 5696
+}
+member {
+  id: 0xe0f63158
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 59456
+}
+member {
+  id: 0xe0f631f1
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 12672
+}
+member {
+  id: 0xe0f63226
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 26240
+}
+member {
+  id: 0xe0f63238
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 1792
+}
+member {
+  id: 0xe0f6323b
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 12800
+}
+member {
+  id: 0xe0f63243
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 8960
+}
+member {
+  id: 0xe0f63285
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 3392
+}
+member {
+  id: 0xe0f632f5
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 30592
+}
+member {
+  id: 0xe0f6332d
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 13184
+}
+member {
+  id: 0xe0f6333c
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 448
+}
+member {
+  id: 0xe0f6334a
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 8192
+}
+member {
+  id: 0xe0f6336e
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 1728
+}
+member {
+  id: 0xe0f633c9
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 2048
+}
+member {
+  id: 0xe0f633f3
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 8320
+}
+member {
+  id: 0xe0f634cc
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 12608
+}
+member {
+  id: 0xe0f6350c
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 4672
+}
+member {
+  id: 0xe0f635ee
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 9216
+}
+member {
+  id: 0xe0f63676
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 704
+}
+member {
+  id: 0xe0f6368f
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 1216
+}
+member {
+  id: 0xe0f6369b
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 3904
+}
+member {
+  id: 0xe0f63767
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 1664
+}
+member {
+  id: 0xe0f637f1
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 832
+}
+member {
+  id: 0xe0f6381a
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 46144
+}
+member {
+  id: 0xe0f63842
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 20288
+}
+member {
+  id: 0xe0f6393d
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 1088
+}
+member {
+  id: 0xe0f63a29
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 6528
+}
+member {
+  id: 0xe0f63a97
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 1152
+}
+member {
+  id: 0xe0f63b21
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 2816
+}
+member {
+  id: 0xe0f63bda
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 3072
+}
+member {
+  id: 0xe0f63bdb
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 17216
+}
+member {
+  id: 0xe0f63c57
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 14848
+}
+member {
+  id: 0xe0f63cb8
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 960
+}
+member {
+  id: 0xe0f63ce5
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 768
+}
+member {
+  id: 0xe0f63d10
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 2944
+}
+member {
+  id: 0xe0f63d11
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 2624
+}
+member {
+  id: 0xe0f63d39
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 576
+}
+member {
+  id: 0xe0f63d43
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 3520
+}
+member {
+  id: 0xe0f63d78
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 3136
+}
+member {
+  id: 0xe0f63db8
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 2240
+}
+member {
+  id: 0xe0f63ddb
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 6592
+}
+member {
+  id: 0xe0f63df3
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 1600
+}
+member {
+  id: 0xe0f63e24
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 3264
+}
+member {
+  id: 0xe0f63e46
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 4608
+}
+member {
+  id: 0xe0f63eac
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 1536
+}
+member {
+  id: 0xe0f63ec8
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 1344
+}
+member {
+  id: 0xe0f63ed2
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 10240
+}
+member {
+  id: 0xe0f63eed
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 896
+}
+member {
+  id: 0xe0f63ef4
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 5504
+}
+member {
+  id: 0xe0f63f30
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 51648
+}
+member {
+  id: 0xe0f63f53
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 512
+}
+member {
+  id: 0xe0f63f6c
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 20480
+}
+member {
+  id: 0xe0f63fac
+  name: "android_kabi_reserved4"
+  type_id: 0x92233392
+  offset: 28992
+}
+member {
+  id: 0x22369248
+  name: "android_kabi_reserved5"
+  type_id: 0x92233392
+  offset: 7040
+}
+member {
+  id: 0x223693d6
+  name: "android_kabi_reserved5"
+  type_id: 0x92233392
+  offset: 2304
+}
+member {
+  id: 0x223696d4
+  name: "android_kabi_reserved5"
+  type_id: 0x92233392
+  offset: 20544
+}
+member {
+  id: 0x22369867
+  name: "android_kabi_reserved5"
+  type_id: 0x92233392
+  offset: 29056
+}
+member {
+  id: 0x22369d4d
+  name: "android_kabi_reserved5"
+  type_id: 0x92233392
+  offset: 6592
+}
+member {
+  id: 0x22369eeb
+  name: "android_kabi_reserved5"
+  type_id: 0x92233392
+  offset: 5120
+}
+member {
+  id: 0x66775644
+  name: "android_kabi_reserved6"
+  type_id: 0x92233392
+  offset: 6656
+}
+member {
+  id: 0x6677564a
+  name: "android_kabi_reserved6"
+  type_id: 0x92233392
+  offset: 2368
+}
+member {
+  id: 0x66775aa9
+  name: "android_kabi_reserved6"
+  type_id: 0x92233392
+  offset: 20608
+}
+member {
+  id: 0x66775bce
+  name: "android_kabi_reserved6"
+  type_id: 0x92233392
+  offset: 7104
+}
+member {
+  id: 0x66775c88
+  name: "android_kabi_reserved6"
+  type_id: 0x92233392
+  offset: 29120
+}
+member {
+  id: 0x66775e57
+  name: "android_kabi_reserved6"
+  type_id: 0x92233392
+  offset: 5184
+}
+member {
+  id: 0xa1b7d0b3
+  name: "android_kabi_reserved7"
+  type_id: 0x92233392
+  offset: 6720
+}
+member {
+  id: 0xa1b7d108
+  name: "android_kabi_reserved7"
+  type_id: 0x92233392
+  offset: 7168
+}
+member {
+  id: 0xa1b7d363
+  name: "android_kabi_reserved7"
+  type_id: 0x92233392
+  offset: 20672
+}
+member {
+  id: 0xa1b7d7ff
+  name: "android_kabi_reserved7"
+  type_id: 0x92233392
+  offset: 29184
+}
+member {
+  id: 0xa1b7d916
+  name: "android_kabi_reserved7"
+  type_id: 0x92233392
+  offset: 5248
+}
+member {
+  id: 0xa1b7df05
+  name: "android_kabi_reserved7"
+  type_id: 0x92233392
+  offset: 2432
+}
+member {
+  id: 0xe3f4b23a
+  name: "android_kabi_reserved8"
+  type_id: 0x92233392
+  offset: 29248
+}
+member {
+  id: 0xe3f4b2ad
+  name: "android_kabi_reserved8"
+  type_id: 0x92233392
+  offset: 2496
+}
+member {
+  id: 0xe3f4b3b0
+  name: "android_kabi_reserved8"
+  type_id: 0x92233392
+  offset: 20736
+}
+member {
+  id: 0xe3f4b8d7
+  name: "android_kabi_reserved8"
+  type_id: 0x92233392
+  offset: 6784
+}
+member {
+  id: 0xe3f4b91a
+  name: "android_kabi_reserved8"
+  type_id: 0x92233392
+  offset: 7232
+}
+member {
+  id: 0xe3f4bace
+  name: "android_kabi_reserved8"
+  type_id: 0x92233392
+  offset: 5312
+}
+member {
+  id: 0x2734d962
+  name: "android_kabi_reserved9"
+  type_id: 0x92233392
+  offset: 2560
+}
+member {
+  id: 0x6fc674e0
+  name: "android_netlink_getneigh"
+  type_id: 0x6d7f5ff6
+  offset: 96
+}
+member {
+  id: 0x6fcc260e
+  name: "android_netlink_getneigh"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x395073a8
+  name: "android_netlink_route"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x395a2e99
+  name: "android_netlink_route"
+  type_id: 0x6d7f5ff6
+  offset: 88
+}
+member {
+  id: 0xd64b23bb
+  name: "android_oem_data1"
+  type_id: 0xa8c5dffe
+  offset: 832
+}
+member {
+  id: 0xd666cd53
+  name: "android_oem_data1"
+  type_id: 0x85299f4c
+  offset: 28352
+}
+member {
+  id: 0xd671c04e
+  name: "android_oem_data1"
+  type_id: 0x92233392
+  offset: 6272
+}
+member {
+  id: 0xd671c0e5
+  name: "android_oem_data1"
+  type_id: 0x92233392
+  offset: 8960
+}
+member {
+  id: 0xd671c12a
+  name: "android_oem_data1"
+  type_id: 0x92233392
+  offset: 320
+}
+member {
+  id: 0xd671c19a
+  name: "android_oem_data1"
+  type_id: 0x92233392
+  offset: 448
+}
+member {
+  id: 0xd671c406
+  name: "android_oem_data1"
+  type_id: 0x92233392
+  offset: 42624
+}
+member {
+  id: 0xd671c469
+  name: "android_oem_data1"
+  type_id: 0x92233392
+  offset: 1984
+}
+member {
+  id: 0xd671cb34
+  name: "android_oem_data1"
+  type_id: 0x92233392
+  offset: 55040
+}
+member {
+  id: 0xd671cb9b
+  name: "android_oem_data1"
+  type_id: 0x92233392
+  offset: 1088
+}
+member {
+  id: 0xd671ce1e
+  name: "android_oem_data1"
+  type_id: 0x92233392
+  offset: 960
+}
+member {
+  id: 0xd68b5760
+  name: "android_oem_data1"
+  type_id: 0x68bb0e75
+  offset: 29376
+}
+member {
+  id: 0xd6abc4f9
+  name: "android_oem_data1"
+  type_id: 0x48218c07
+  offset: 256
+}
+member {
+  id: 0xd6abc5c0
+  name: "android_oem_data1"
+  type_id: 0x48218c07
+  offset: 384
+}
+member {
+  id: 0xd6abc924
+  name: "android_oem_data1"
+  type_id: 0x48218c07
+  offset: 1088
+}
+member {
+  id: 0xd6abc98b
+  name: "android_oem_data1"
+  type_id: 0x48218c07
+  offset: 18176
+}
+member {
+  id: 0x9170c461
+  name: "android_quirks"
+  type_id: 0x4585663f
+  offset: 1664
+}
+member {
+  id: 0xed4ae90a
+  name: "android_vendor_data1"
+  type_id: 0xa8c5dffe
+  offset: 3456
+}
+member {
+  id: 0xed700225
+  name: "android_vendor_data1"
+  type_id: 0x92233392
+  offset: 11264
+}
+member {
+  id: 0xed70026b
+  name: "android_vendor_data1"
+  type_id: 0x92233392
+  offset: 320
+}
+member {
+  id: 0xed7002a7
+  name: "android_vendor_data1"
+  type_id: 0x92233392
+  offset: 2304
+}
+member {
+  id: 0xed7002b3
+  name: "android_vendor_data1"
+  type_id: 0x92233392
+  offset: 1024
+}
+member {
+  id: 0xed700637
+  name: "android_vendor_data1"
+  type_id: 0x92233392
+  offset: 5248
+}
+member {
+  id: 0xed700c6e
+  name: "android_vendor_data1"
+  type_id: 0x92233392
+  offset: 128
+}
+member {
+  id: 0xed700cd7
+  name: "android_vendor_data1"
+  type_id: 0x92233392
+  offset: 6656
+}
+member {
+  id: 0xed700d34
+  name: "android_vendor_data1"
+  type_id: 0x92233392
+  offset: 3648
+}
+member {
+  id: 0xed700f2f
+  name: "android_vendor_data1"
+  type_id: 0x92233392
+  offset: 1344
+}
+member {
+  id: 0xed736442
+  name: "android_vendor_data1"
+  type_id: 0x91412a6e
+  offset: 14592
+}
+member {
+  id: 0xed736627
+  name: "android_vendor_data1"
+  type_id: 0x91412a6e
+  offset: 384
+}
+member {
+  id: 0xed73670e
+  name: "android_vendor_data1"
+  type_id: 0x91412a6e
+  offset: 29312
+}
+member {
+  id: 0xedf50137
+  name: "android_vendor_data1"
+  type_id: 0x1723cb73
+  offset: 24256
+}
+member {
+  id: 0xb4368049
+  name: "aneg_done"
+  type_id: 0x2ee76b64
+  offset: 2368
+}
+member {
+  id: 0xc31d0816
+  name: "announce"
+  type_id: 0x6d7f5ff6
+  offset: 7808
+}
+member {
+  id: 0x986024a1
+  name: "announce_create"
+  type_id: 0x2fab72b6
+  offset: 192
+}
+member {
+  id: 0xc43dd881
+  name: "announce_destroy"
+  type_id: 0x2fab72b6
+  offset: 256
+}
+member {
+  id: 0xcabb31d9
+  name: "anon_cost"
+  type_id: 0x33756485
+  offset: 704
+}
+member {
+  id: 0x4326a309
+  name: "anon_inode"
+  type_id: 0x1b8590a8
+  offset: 832
+}
+member {
+  id: 0x3abde08a
+  name: "anon_name"
+  type_id: 0x0d956bfc
+}
+member {
+  id: 0x320ccb8c
+  name: "anon_vma"
+  type_id: 0x055f6606
+  offset: 896
+}
+member {
+  id: 0xc1516075
+  name: "anon_vma_chain"
+  type_id: 0xd3c80119
+  offset: 768
+}
+member {
+  id: 0x2b0830f7
+  name: "answer_flags"
+  type_id: 0x914dbfdc
+  offset: 464
+}
+member {
+  id: 0xa16ca1b7
+  name: "antenna_selection_info"
+  type_id: 0x295c7202
+  offset: 200
+}
+member {
+  id: 0xae1c4f36
+  name: "any"
+  type_id: 0x0f5b0825
+}
+member {
+  id: 0xae7e6b61
+  name: "any"
+  type_id: 0x6d7f5ff6
+}
+member {
+  id: 0xae965b06
+  name: "any"
+  type_id: 0x854f38c5
+}
+member {
+  id: 0xe3738d62
+  name: "anycast_src_echo_reply"
+  type_id: 0x295c7202
+  offset: 1024
+}
+member {
+  id: 0xd4031571
+  name: "ap"
+  type_id: 0x22a43d8f
+}
+member {
+  id: 0xd4387acc
+  name: "ap"
+  type_id: 0x19cb80a6
+}
+member {
+  id: 0xd49198c3
+  name: "ap"
+  type_id: 0xb02924b2
+  offset: 256
+}
+member {
+  id: 0x445f83fb
+  name: "ap_addr"
+  type_id: 0xf90dfce8
+}
+member {
+  id: 0xd96ad022
+  name: "ap_list"
+  type_id: 0xd3c80119
+  offset: 192
+}
+member {
+  id: 0x18b67de8
+  name: "ap_list_head"
+  type_id: 0xd3c80119
+  offset: 31232
+}
+member {
+  id: 0xc8f35c78
+  name: "ap_list_lock"
+  type_id: 0xc8b17aa7
+  offset: 31168
+}
+member {
+  id: 0x6892c863
+  name: "ap_sme_capa"
+  type_id: 0xc9082b19
+  offset: 992
+}
+member {
+  id: 0x7f0861f0
+  name: "ap_unexpected_nlportid"
+  type_id: 0xc9082b19
+  offset: 1952
+}
+member {
+  id: 0x13b6007c
+  name: "apda"
+  type_id: 0xe93b4eda
+  offset: 256
+}
+member {
+  id: 0x4ff6bc3d
+  name: "apdb"
+  type_id: 0xe93b4eda
+  offset: 384
+}
+member {
+  id: 0xaea74699
+  name: "ape_d"
+  type_id: 0x28abbcf7
+}
+member {
+  id: 0xaafcf649
+  name: "aperture_end"
+  type_id: 0xe02e14d6
+  offset: 64
+}
+member {
+  id: 0x7d5f705c
+  name: "aperture_start"
+  type_id: 0xe02e14d6
+}
+member {
+  id: 0xfc238ba4
+  name: "apertures"
+  type_id: 0x37556446
+  offset: 6016
+}
+member {
+  id: 0x1db23a75
+  name: "apga"
+  type_id: 0xe93b4eda
+  offset: 512
+}
+member {
+  id: 0x396b4bac
+  name: "api"
+  type_id: 0xd5b8fab8
+}
+member {
+  id: 0x396b4f4d
+  name: "api"
+  type_id: 0xd5b8fab8
+  offset: 64
+}
+member {
+  id: 0x81567db7
+  name: "api_version"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x3a433cd0
+  name: "apia"
+  type_id: 0xe93b4eda
+}
+member {
+  id: 0xfa83aed4
+  name: "apib"
+  type_id: 0xe93b4eda
+  offset: 128
+}
+member {
+  id: 0x5ba521f2
+  name: "apic_base"
+  type_id: 0xedf277ba
+  offset: 192
+}
+member {
+  id: 0x5581205d
+  name: "apoll"
+  type_id: 0x05a5cdba
+  offset: 1344
+}
+member {
+  id: 0x394b519d
+  name: "apoll_cache"
+  type_id: 0xa2b31df2
+  offset: 2304
+}
+member {
+  id: 0x4f58f660
+  name: "apoll_events"
+  type_id: 0xb94e10c7
+}
+member {
+  id: 0x6e3edc08
+  name: "appearance"
+  type_id: 0xe8034002
+  offset: 4912
+}
+member {
+  id: 0x7b340b5f
+  name: "appl_ptr"
+  type_id: 0xa8fff47c
+}
+member {
+  id: 0x96471a5c
+  name: "apple_dart_cfg"
+  type_id: 0x390911ef
+}
+member {
+  id: 0xe66b33da
+  name: "application"
+  type_id: 0x4585663f
+  offset: 512
+}
+member {
+  id: 0xe66b3c23
+  name: "application"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xe66b3fb5
+  name: "application"
+  type_id: 0x4585663f
+  offset: 448
+}
+member {
+  id: 0x8e5f864b
+  name: "apply"
+  type_id: 0x2f92a922
+  offset: 192
+}
+member {
+  id: 0x30ddf99c
+  name: "apply_bit"
+  type_id: 0x4585663f
+  offset: 1472
+}
+member {
+  id: 0x893396e4
+  name: "apply_bytes"
+  type_id: 0xc9082b19
+  offset: 5248
+}
+member {
+  id: 0x89339cbd
+  name: "apply_bytes"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0x31fe6515
+  name: "apply_dev_quirks"
+  type_id: 0x2d883003
+  offset: 768
+}
+member {
+  id: 0xca44b9a5
+  name: "apply_rc"
+  type_id: 0x2e5de10a
+  offset: 320
+}
+member {
+  id: 0x06fd5f89
+  name: "apply_reg"
+  type_id: 0x4585663f
+  offset: 1440
+}
+member {
+  id: 0xcc3f523d
+  name: "apply_uV"
+  type_id: 0x4585663f
+  offset: 1730
+  bitsize: 1
+}
+member {
+  id: 0x4a120f63
+  name: "ar"
+  type_id: 0xb3e7bac9
+  offset: 64
+}
+member {
+  id: 0xa86038b6
+  name: "arbitration_lost"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0xb81bb253
+  name: "arch"
+  type_id: 0xb16454d0
+  offset: 2048
+}
+member {
+  id: 0xb81eae99
+  name: "arch"
+  type_id: 0xb47f1c0e
+}
+member {
+  id: 0xb83316b3
+  name: "arch"
+  type_id: 0x99ce8ef3
+  offset: 1600
+}
+member {
+  id: 0xb857a998
+  name: "arch"
+  type_id: 0xfd71f39d
+  offset: 20672
+}
+member {
+  id: 0xb864f388
+  name: "arch"
+  type_id: 0xce25286b
+  offset: 1728
+}
+member {
+  id: 0xb89f1d6b
+  name: "arch"
+  type_id: 0x35cc4540
+  offset: 256
+}
+member {
+  id: 0xb8cdfbab
+  name: "arch"
+  type_id: 0x6720d32f
+  offset: 6336
+}
+member {
+  id: 0xb8dfb29f
+  name: "arch"
+  type_id: 0x7565ef4f
+  offset: 4352
+}
+member {
+  id: 0x4c1e0f53
+  name: "arch_addr_hi"
+  type_id: 0xac87892b
+}
+member {
+  id: 0xec350adc
+  name: "arch_addr_lo"
+  type_id: 0xa22d9a63
+}
+member {
+  id: 0xa98605e2
+  name: "arch_data"
+  type_id: 0x33756485
+}
+member {
+  id: 0xa9e9d887
+  name: "arch_data"
+  type_id: 0x5ca801dd
+}
+member {
+  id: 0x57601368
+  name: "archdata"
+  type_id: 0x308c0299
+  offset: 7936
+}
+member {
+  id: 0x5780e821
+  name: "archdata"
+  type_id: 0xd0721420
+  offset: 5952
+}
+member {
+  id: 0xa6d82885
+  name: "area"
+  type_id: 0x1df06cce
+  offset: 192
+}
+member {
+  id: 0xb5aea22c
+  name: "area_nslabs"
+  type_id: 0x4585663f
+  offset: 448
+}
+member {
+  id: 0xa9845e3d
+  name: "area_type"
+  type_id: 0x6720d32f
+  offset: 4096
+}
+member {
+  id: 0xa9a6f37a
+  name: "area_type"
+  type_id: 0x4585663f
+  offset: 288
+}
+member {
+  id: 0xc5c94b61
+  name: "areas"
+  type_id: 0x2eb5418d
+  offset: 512
+}
+member {
+  id: 0xa919734a
+  name: "arg"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0xa9197700
+  name: "arg"
+  type_id: 0x18bd6530
+  offset: 256
+}
+member {
+  id: 0xa91977ab
+  name: "arg"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0xa9197e69
+  name: "arg"
+  type_id: 0x18bd6530
+  offset: 128
+}
+member {
+  id: 0xa97181e3
+  name: "arg"
+  type_id: 0x7042efa8
+  offset: 128
+}
+member {
+  id: 0xa9a422b1
+  name: "arg"
+  type_id: 0xa5e1bddf
+  offset: 128
+}
+member {
+  id: 0xa9c8cfde
+  name: "arg"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0xd50e20b2
+  name: "arg1_btf_id"
+  type_id: 0x38d23361
+}
+member {
+  id: 0xd753aadb
+  name: "arg1_size"
+  type_id: 0xf435685e
+}
+member {
+  id: 0x3b1f1c3f
+  name: "arg1_type"
+  type_id: 0xb8183ffd
+}
+member {
+  id: 0xe4058d71
+  name: "arg2_btf_id"
+  type_id: 0x38d23361
+  offset: 64
+}
+member {
+  id: 0x9083fd2a
+  name: "arg2_size"
+  type_id: 0xf435685e
+  offset: 64
+}
+member {
+  id: 0xd6182a87
+  name: "arg2_type"
+  type_id: 0xb8183ffd
+  offset: 32
+}
+member {
+  id: 0x7d008e06
+  name: "arg3_btf_id"
+  type_id: 0x38d23361
+  offset: 128
+}
+member {
+  id: 0x47dc7b9d
+  name: "arg3_size"
+  type_id: 0xf435685e
+  offset: 128
+}
+member {
+  id: 0x817134c1
+  name: "arg3_type"
+  type_id: 0xb8183ffd
+  offset: 64
+}
+member {
+  id: 0xd140038d
+  name: "arg4_btf_id"
+  type_id: 0x38d23361
+  offset: 192
+}
+member {
+  id: 0xab0a12e6
+  name: "arg4_size"
+  type_id: 0xf435685e
+  offset: 192
+}
+member {
+  id: 0x3e324f32
+  name: "arg4_type"
+  type_id: 0xb8183ffd
+  offset: 96
+}
+member {
+  id: 0x5a9199d6
+  name: "arg5_btf_id"
+  type_id: 0x38d23361
+  offset: 256
+}
+member {
+  id: 0xcd5f06f7
+  name: "arg5_size"
+  type_id: 0xf435685e
+  offset: 256
+}
+member {
+  id: 0xbac70c88
+  name: "arg5_type"
+  type_id: 0xb8183ffd
+  offset: 128
+}
+member {
+  id: 0x121b286f
+  name: "arg_btf_id"
+  type_id: 0xe7c8a269
+}
+member {
+  id: 0x3d3f0948
+  name: "arg_end"
+  type_id: 0x33756485
+  offset: 2624
+}
+member {
+  id: 0x6581ff43
+  name: "arg_flags"
+  type_id: 0x86438dd9
+  offset: 112
+}
+member {
+  id: 0xe3db663c
+  name: "arg_lock"
+  type_id: 0xf313e71a
+  offset: 2080
+}
+member {
+  id: 0xed87343a
+  name: "arg_size"
+  type_id: 0x86438dd9
+  offset: 16
+}
+member {
+  id: 0xedd5887d
+  name: "arg_size"
+  type_id: 0xd4f174a6
+}
+member {
+  id: 0xf6d4aa2a
+  name: "arg_start"
+  type_id: 0x33756485
+  offset: 2560
+}
+member {
+  id: 0xb5b37ce8
+  name: "arg_type"
+  type_id: 0xc7fa214e
+}
+member {
+  id: 0x20571d45
+  name: "argc"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x20571f78
+  name: "argc"
+  type_id: 0x6720d32f
+  offset: 704
+}
+member {
+  id: 0x6fcff76c
+  name: "argmin"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0x340514a3
+  name: "args"
+  type_id: 0x3ea9cea9
+  offset: 320
+}
+member {
+  id: 0x3423032e
+  name: "args"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0x343f35e0
+  name: "args"
+  type_id: 0x0483e6f8
+  offset: 6080
+}
+member {
+  id: 0x34708f84
+  name: "args"
+  type_id: 0x4b3cad07
+  offset: 96
+}
+member {
+  id: 0x3496cf62
+  name: "args"
+  type_id: 0xad7c0a89
+  offset: 128
+}
+member {
+  id: 0x34a16385
+  name: "args"
+  type_id: 0x9addce46
+  offset: 64
+}
+member {
+  id: 0x34a5187e
+  name: "args"
+  type_id: 0x9ea2d4c7
+}
+member {
+  id: 0x34a51c9f
+  name: "args"
+  type_id: 0x9ea2d4c7
+  offset: 64
+}
+member {
+  id: 0x34abfc7a
+  name: "args"
+  type_id: 0x904f12e1
+  offset: 128
+}
+member {
+  id: 0x34fb052c
+  name: "args"
+  type_id: 0xc0b644f6
+  offset: 128
+}
+member {
+  id: 0xd4fa37b3
+  name: "args_count"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0xcb9ebca9
+  name: "argsz"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x51767e64
+  name: "argument1"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x97b766ac
+  name: "argument2"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0xd3f7ab38
+  name: "argument3"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0xe86b095d
+  name: "argv"
+  type_id: 0x13e50c8a
+}
+member {
+  id: 0xe8f87d89
+  name: "argv"
+  type_id: 0x80904a3b
+  offset: 384
+}
+member {
+  id: 0xafe23112
+  name: "ari_enabled"
+  type_id: 0x4585663f
+  offset: 22102
+  bitsize: 1
+}
+member {
+  id: 0x34ac7d37
+  name: "arm"
+  type_id: 0x2f40452b
+  offset: 128
+}
+member {
+  id: 0x0b255eca
+  name: "arm_lpae_s1_cfg"
+  type_id: 0x391f3c9e
+}
+member {
+  id: 0x36c6e162
+  name: "arm_lpae_s2_cfg"
+  type_id: 0x3eeed082
+}
+member {
+  id: 0x41b5cb45
+  name: "arm_mali_lpae_cfg"
+  type_id: 0x34992343
+}
+member {
+  id: 0xdabb1c55
+  name: "arm_nisv"
+  type_id: 0x102e0991
+}
+member {
+  id: 0xce7b08c8
+  name: "arm_pmu"
+  type_id: 0x331b3d77
+  offset: 3008
+}
+member {
+  id: 0xc71d2276
+  name: "arm_v7s_cfg"
+  type_id: 0x3909db3d
+}
+member {
+  id: 0x282498ec
+  name: "arp_parms"
+  type_id: 0x31c05a21
+  offset: 1728
+}
+member {
+  id: 0x6d627c05
+  name: "arp_queue"
+  type_id: 0x578f9c2b
+  offset: 448
+}
+member {
+  id: 0xfe387221
+  name: "arp_queue_len_bytes"
+  type_id: 0x4585663f
+  offset: 416
+}
+member {
+  id: 0x79fe8097
+  name: "arr"
+  type_id: 0x379f8c10
+}
+member {
+  id: 0xdf51de32
+  name: "array"
+  type_id: 0xf67b8436
+  offset: 32
+}
+member {
+  id: 0xdf6c70da
+  name: "array"
+  type_id: 0xcbd8574f
+}
+member {
+  id: 0xdf8d01f6
+  name: "array"
+  type_id: 0x2aa0b9bb
+  offset: 128
+}
+member {
+  id: 0xdf9f7abe
+  name: "array"
+  type_id: 0x38d23361
+}
+member {
+  id: 0xdfcad7c4
+  name: "array"
+  type_id: 0x6d7f5ff6
+  offset: 272
+}
+member {
+  id: 0xf219767a
+  name: "array_buffer"
+  type_id: 0x18b27715
+  offset: 128
+}
+member {
+  id: 0xf2494c3c
+  name: "array_buffer"
+  type_id: 0x48893aca
+  offset: 192
+}
+member {
+  id: 0x2ea5323b
+  name: "as_id"
+  type_id: 0x914dbfdc
+  offset: 1712
+}
+member {
+  id: 0xfc6203f3
+  name: "asap"
+  type_id: 0x295c7202
+  offset: 81
+  bitsize: 1
+}
+member {
+  id: 0x33304170
+  name: "asc"
+  type_id: 0x295c7202
+  offset: 16
+}
+member {
+  id: 0x3922b866
+  name: "ascii"
+  type_id: 0xf0ba21be
+  offset: 576
+}
+member {
+  id: 0x5a1e7550
+  name: "ascq"
+  type_id: 0x295c7202
+  offset: 24
+}
+member {
+  id: 0x73e738e5
+  name: "asd"
+  type_id: 0x3c2dd1ca
+  offset: 2240
+}
+member {
+  id: 0xc3695bc2
+  name: "asd_list"
+  type_id: 0xd3c80119
+  offset: 256
+}
+member {
+  id: 0xb5dc85c7
+  name: "aspect_ratio_allowed"
+  type_id: 0x6d7f5ff6
+  offset: 32
+}
+member {
+  id: 0x0b2f2664
+  name: "aspect_ratio_property"
+  type_id: 0x2a670b41
+  offset: 8384
+}
+member {
+  id: 0x45b3ddb1
+  name: "aspm_capable"
+  type_id: 0xc9082b19
+  offset: 398
+  bitsize: 7
+}
+member {
+  id: 0x0a8e2cf2
+  name: "aspm_default"
+  type_id: 0xc9082b19
+  offset: 405
+  bitsize: 7
+}
+member {
+  id: 0x9750a322
+  name: "aspm_disable"
+  type_id: 0xc9082b19
+  offset: 416
+  bitsize: 7
+}
+member {
+  id: 0x6b4d3f19
+  name: "aspm_enabled"
+  type_id: 0xc9082b19
+  offset: 391
+  bitsize: 7
+}
+member {
+  id: 0x2bdb287b
+  name: "aspm_support"
+  type_id: 0xc9082b19
+  offset: 384
+  bitsize: 7
+}
+member {
+  id: 0xe50c7216
+  name: "assert"
+  type_id: 0x2fed2c49
+  offset: 64
+}
+member {
+  id: 0xab14475a
+  name: "assert_off_tu"
+  type_id: 0xec2499ed
+  offset: 64
+}
+member {
+  id: 0xdcb6347e
+  name: "assert_sequence"
+  type_id: 0xe62ebf07
+  offset: 1088
+}
+member {
+  id: 0x0cca1d03
+  name: "assert_tu"
+  type_id: 0xec2499ed
+  offset: 1152
+}
+member {
+  id: 0xcf8b09e9
+  name: "assoc_num"
+  type_id: 0x5d8155a5
+}
+member {
+  id: 0x4c81bbc3
+  name: "assoclen"
+  type_id: 0x4585663f
+  offset: 384
+}
+member {
+  id: 0xfa508d60
+  name: "asym_eds_op"
+  type_id: 0x2f434d15
+  offset: 1088
+}
+member {
+  id: 0xaa605258
+  name: "asym_pause"
+  type_id: 0x6720d32f
+  offset: 9536
+}
+member {
+  id: 0x2059f065
+  name: "asym_prefer_cpu"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0xe135719d
+  name: "asym_query"
+  type_id: 0x2e87c7b8
+  offset: 1024
+}
+member {
+  id: 0xf529298c
+  name: "asym_verify_signature"
+  type_id: 0x2f415732
+  offset: 1152
+}
+member {
+  id: 0xf51c9ccb
+  name: "async"
+  type_id: 0x6d7f5ff6
+  offset: 1600
+}
+member {
+  id: 0xf5749b19
+  name: "async"
+  type_id: 0x0570ebcb
+  offset: 1920
+}
+member {
+  id: 0x289bd1af
+  name: "async_alloc"
+  type_id: 0xa03fee97
+  offset: 704
+}
+member {
+  id: 0xf24f7f46
+  name: "async_bio_lock"
+  type_id: 0xf313e71a
+  offset: 1856
+}
+member {
+  id: 0x96a863d7
+  name: "async_bio_work"
+  type_id: 0x1f3c8679
+}
+member {
+  id: 0x0a70beb4
+  name: "async_bios"
+  type_id: 0x59cf4672
+  offset: 1920
+}
+member {
+  id: 0x4b2c185a
+  name: "async_count"
+  type_id: 0x4585663f
+  offset: 2336
+}
+member {
+  id: 0x82cdc39d
+  name: "async_data"
+  type_id: 0x18bd6530
+  offset: 1408
+}
+member {
+  id: 0xb4b6a5b9
+  name: "async_done"
+  type_id: 0x0562c566
+  offset: 704
+}
+member {
+  id: 0xef977908
+  name: "async_driver"
+  type_id: 0x3267a784
+  offset: 1472
+}
+member {
+  id: 0x4379006a
+  name: "async_entry_cnt"
+  type_id: 0xc9082b19
+  offset: 10656
+}
+member {
+  id: 0x9bb4f872
+  name: "async_flip"
+  type_id: 0x6d7f5ff6
+  offset: 2400
+}
+member {
+  id: 0xc07c1d36
+  name: "async_free"
+  type_id: 0xd3c80119
+  offset: 1984
+}
+member {
+  id: 0x34d9610c
+  name: "async_idle"
+  type_id: 0xd3c80119
+  offset: 2176
+}
+member {
+  id: 0xec1ec1ff
+  name: "async_list"
+  type_id: 0xd3c80119
+  offset: 1856
+}
+member {
+  id: 0xec1ec4a0
+  name: "async_list"
+  type_id: 0xd3c80119
+  offset: 2112
+}
+member {
+  id: 0x0081d531
+  name: "async_lock"
+  type_id: 0xf313e71a
+  offset: 1632
+}
+member {
+  id: 0x5a437881
+  name: "async_next"
+  type_id: 0xc9082b19
+  offset: 192
+}
+member {
+  id: 0x0effad0a
+  name: "async_page_flip"
+  type_id: 0x6d7f5ff6
+  offset: 9560
+}
+member {
+  id: 0xa14e3ebe
+  name: "async_probe_requested"
+  type_id: 0x6d7f5ff6
+  offset: 2832
+}
+member {
+  id: 0x09004179
+  name: "async_put_work"
+  type_id: 0x1f3c8679
+  offset: 6976
+}
+member {
+  id: 0xc017aa62
+  name: "async_queue"
+  type_id: 0x25e44921
+  offset: 2944
+}
+member {
+  id: 0xc017ae41
+  name: "async_queue"
+  type_id: 0x25e44921
+  offset: 9344
+}
+member {
+  id: 0xc017af2b
+  name: "async_queue"
+  type_id: 0x25e44921
+  offset: 7424
+}
+member {
+  id: 0xc98f1d6c
+  name: "async_recv"
+  type_id: 0x6d7f5ff6
+  offset: 920
+}
+member {
+  id: 0x4acca2d3
+  name: "async_ret"
+  type_id: 0x6720d32f
+  offset: 2112
+}
+member {
+  id: 0x950f4912
+  name: "async_scan"
+  type_id: 0x4585663f
+  offset: 4357
+  bitsize: 1
+}
+member {
+  id: 0x847796c6
+  name: "async_size"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x88efd55b
+  name: "async_suspend"
+  type_id: 0x4585663f
+  offset: 33
+  bitsize: 1
+}
+member {
+  id: 0x8c7d72a4
+  name: "async_todo"
+  type_id: 0xd3c80119
+  offset: 896
+}
+member {
+  id: 0x5d12d026
+  name: "async_transaction"
+  type_id: 0x4585663f
+  offset: 323
+  bitsize: 1
+}
+member {
+  id: 0xc84230fd
+  name: "async_unlink"
+  type_id: 0xd3c80119
+  offset: 2048
+}
+member {
+  id: 0xc476909c
+  name: "async_unlink_cycle"
+  type_id: 0x4585663f
+  offset: 2304
+}
+member {
+  id: 0x0e9f9373
+  name: "async_unlinking"
+  type_id: 0x6d7f5ff6
+  offset: 1828
+  bitsize: 1
+}
+member {
+  id: 0x31cc2a94
+  name: "async_update"
+  type_id: 0x6d7f5ff6
+  offset: 130
+  bitsize: 1
+}
+member {
+  id: 0x2f4affb6
+  name: "async_waitq"
+  type_id: 0x03913382
+  offset: 1664
+}
+member {
+  id: 0xd30a725f
+  name: "async_write"
+  type_id: 0x2f4d85b2
+  offset: 128
+}
+member {
+  id: 0xd3bbb46e
+  name: "async_write"
+  type_id: 0x9e8abf4f
+  offset: 192
+}
+member {
+  id: 0xd1b258a6
+  name: "at"
+  type_id: 0x92233392
+  offset: 128
+}
+member {
+  id: 0x6483b863
+  name: "atime"
+  type_id: 0x399c459b
+  offset: 512
+}
+member {
+  id: 0x176dead7
+  name: "atomic"
+  type_id: 0x6d7f5ff6
+  offset: 24
+}
+member {
+  id: 0xc9ae60b9
+  name: "atomic_async_check"
+  type_id: 0x2c63cb53
+  offset: 320
+}
+member {
+  id: 0xc6f54e00
+  name: "atomic_async_update"
+  type_id: 0x0f25e7fc
+  offset: 384
+}
+member {
+  id: 0xdf51424e
+  name: "atomic_begin"
+  type_id: 0x0d829a1e
+  offset: 704
+}
+member {
+  id: 0x194c109a
+  name: "atomic_best_encoder"
+  type_id: 0x3a4b6a66
+  offset: 320
+}
+member {
+  id: 0x5a4c0bbd
+  name: "atomic_bitflags"
+  type_id: 0x33756485
+  offset: 1920
+}
+member {
+  id: 0xd0a0479f
+  name: "atomic_check"
+  type_id: 0x2ec4b6b1
+  offset: 640
+}
+member {
+  id: 0xd0a04e99
+  name: "atomic_check"
+  type_id: 0x2eca5b37
+  offset: 384
+}
+member {
+  id: 0xd0a0e4b1
+  name: "atomic_check"
+  type_id: 0x2e614abb
+  offset: 256
+}
+member {
+  id: 0xd0a11902
+  name: "atomic_check"
+  type_id: 0x2f9124d1
+  offset: 1088
+}
+member {
+  id: 0xd0a1aaae
+  name: "atomic_check"
+  type_id: 0x2f27501b
+  offset: 768
+}
+member {
+  id: 0xd0a2ef59
+  name: "atomic_check"
+  type_id: 0x2c63cb53
+  offset: 128
+}
+member {
+  id: 0xa1d2ba18
+  name: "atomic_commit"
+  type_id: 0x0d8c7798
+  offset: 448
+}
+member {
+  id: 0xa1f15142
+  name: "atomic_commit"
+  type_id: 0x2e679d4e
+  offset: 320
+}
+member {
+  id: 0xb46af7c5
+  name: "atomic_commit_setup"
+  type_id: 0x2fe002b6
+  offset: 64
+}
+member {
+  id: 0xcf36cc02
+  name: "atomic_commit_tail"
+  type_id: 0x0ca62e19
+}
+member {
+  id: 0xa339f662
+  name: "atomic_destroy_state"
+  type_id: 0x0f2acb59
+  offset: 384
+}
+member {
+  id: 0xa33a0314
+  name: "atomic_destroy_state"
+  type_id: 0x0cd48956
+  offset: 896
+}
+member {
+  id: 0xa33a736a
+  name: "atomic_destroy_state"
+  type_id: 0x0caab0bd
+  offset: 64
+}
+member {
+  id: 0xa33b4646
+  name: "atomic_destroy_state"
+  type_id: 0x0d994043
+  offset: 704
+}
+member {
+  id: 0xa33b5abb
+  name: "atomic_destroy_state"
+  type_id: 0x0d81f9bf
+  offset: 640
+}
+member {
+  id: 0x09a82e5f
+  name: "atomic_disable"
+  type_id: 0x0d829a1e
+  offset: 896
+}
+member {
+  id: 0x09a970d7
+  name: "atomic_disable"
+  type_id: 0x0cd48956
+  offset: 704
+}
+member {
+  id: 0x09a9d515
+  name: "atomic_disable"
+  type_id: 0x0c786e08
+  offset: 512
+}
+member {
+  id: 0x09aa832f
+  name: "atomic_disable"
+  type_id: 0x0f25e7fc
+  offset: 256
+}
+member {
+  id: 0x604df296
+  name: "atomic_duplicate_state"
+  type_id: 0x304f6b42
+  offset: 640
+}
+member {
+  id: 0x6056c08e
+  name: "atomic_duplicate_state"
+  type_id: 0x2b7ccd9e
+  offset: 320
+}
+member {
+  id: 0x6056caa5
+  name: "atomic_duplicate_state"
+  type_id: 0x2b7121a1
+}
+member {
+  id: 0x606ec94b
+  name: "atomic_duplicate_state"
+  type_id: 0x137bbd4c
+  offset: 576
+}
+member {
+  id: 0x607d5ea7
+  name: "atomic_duplicate_state"
+  type_id: 0x00e69949
+  offset: 832
+}
+member {
+  id: 0x2d7aa261
+  name: "atomic_enable"
+  type_id: 0x0d829a1e
+  offset: 832
+}
+member {
+  id: 0x2d7b525d
+  name: "atomic_enable"
+  type_id: 0x0c786e08
+  offset: 576
+}
+member {
+  id: 0x2d7bf1b1
+  name: "atomic_enable"
+  type_id: 0x0cd48956
+  offset: 640
+}
+member {
+  id: 0x6461b06f
+  name: "atomic_flags"
+  type_id: 0x33756485
+  offset: 12160
+}
+member {
+  id: 0xdb2022b4
+  name: "atomic_flush"
+  type_id: 0x0d829a1e
+  offset: 768
+}
+member {
+  id: 0xf5a4a017
+  name: "atomic_get_input_bus_fmts"
+  type_id: 0x101cb96a
+  offset: 1024
+}
+member {
+  id: 0x98dcfed0
+  name: "atomic_get_output_bus_fmts"
+  type_id: 0x101cb45e
+  offset: 960
+}
+member {
+  id: 0xb9841fe2
+  name: "atomic_get_property"
+  type_id: 0x2c74dbc6
+  offset: 512
+}
+member {
+  id: 0xb986b500
+  name: "atomic_get_property"
+  type_id: 0x2ed69b9a
+  offset: 832
+}
+member {
+  id: 0xb986b56c
+  name: "atomic_get_property"
+  type_id: 0x2edde302
+  offset: 768
+}
+member {
+  id: 0x583f2842
+  name: "atomic_mode_set"
+  type_id: 0x0c617cb4
+  offset: 384
+}
+member {
+  id: 0xbc21a604
+  name: "atomic_open"
+  type_id: 0x2c5b9720
+  offset: 1152
+}
+member {
+  id: 0xba3a0b2d
+  name: "atomic_post_disable"
+  type_id: 0x0cd48956
+  offset: 768
+}
+member {
+  id: 0x210c63b1
+  name: "atomic_pre_enable"
+  type_id: 0x0cd48956
+  offset: 576
+}
+member {
+  id: 0x2b4ba814
+  name: "atomic_print_state"
+  type_id: 0x0c3ce9b1
+  offset: 128
+}
+member {
+  id: 0x2b4baa0b
+  name: "atomic_print_state"
+  type_id: 0x0c3509f9
+  offset: 704
+}
+member {
+  id: 0x2b4bab24
+  name: "atomic_print_state"
+  type_id: 0x0c35a159
+  offset: 832
+}
+member {
+  id: 0x2b4bafcf
+  name: "atomic_print_state"
+  type_id: 0x0c303447
+  offset: 1216
+}
+member {
+  id: 0xb10210ae
+  name: "atomic_reset"
+  type_id: 0x00e69949
+  offset: 1152
+}
+member {
+  id: 0x6dc0e610
+  name: "atomic_set_property"
+  type_id: 0x2c6e5d0f
+  offset: 448
+}
+member {
+  id: 0x6dc24868
+  name: "atomic_set_property"
+  type_id: 0x2ec56fe9
+  offset: 704
+}
+member {
+  id: 0x6dc25a42
+  name: "atomic_set_property"
+  type_id: 0x2eddd615
+  offset: 768
+}
+member {
+  id: 0x1fceb182
+  name: "atomic_state_alloc"
+  type_id: 0x195cd703
+  offset: 384
+}
+member {
+  id: 0x08a59c67
+  name: "atomic_state_clear"
+  type_id: 0x0ca62e19
+  offset: 448
+}
+member {
+  id: 0x8a1a23fb
+  name: "atomic_state_free"
+  type_id: 0x0ca62e19
+  offset: 512
+}
+member {
+  id: 0x09c0449c
+  name: "atomic_update"
+  type_id: 0x0f25e7fc
+  offset: 192
+}
+member {
+  id: 0xf1ad7caa
+  name: "atomic_write_len"
+  type_id: 0xf435685e
+  offset: 1280
+}
+member {
+  id: 0xf1ad7da0
+  name: "atomic_write_len"
+  type_id: 0xf435685e
+  offset: 448
+}
+member {
+  id: 0xa6bbf04b
+  name: "atomic_write_lock"
+  type_id: 0xa7c362b0
+  offset: 768
+}
+member {
+  id: 0xd1959486
+  name: "ats_cap"
+  type_id: 0x914dbfdc
+  offset: 25664
+}
+member {
+  id: 0xf07c1a9d
+  name: "ats_enabled"
+  type_id: 0x4585663f
+  offset: 22103
+  bitsize: 1
+}
+member {
+  id: 0x1f35fc7a
+  name: "ats_stu"
+  type_id: 0x295c7202
+  offset: 25680
+}
+member {
+  id: 0x96184eda
+  name: "attach"
+  type_id: 0x2de1dbe2
+  offset: 64
+}
+member {
+  id: 0x9619b60e
+  name: "attach"
+  type_id: 0x2c18712b
+  offset: 2176
+}
+member {
+  id: 0x961a0bf7
+  name: "attach"
+  type_id: 0x2fa7d046
+  offset: 320
+}
+member {
+  id: 0x961a45b8
+  name: "attach"
+  type_id: 0x2fee58d9
+}
+member {
+  id: 0x961aa4b2
+  name: "attach"
+  type_id: 0x2f0f52dd
+}
+member {
+  id: 0x961aa8fc
+  name: "attach"
+  type_id: 0x2f031c3f
+}
+member {
+  id: 0x961ac72a
+  name: "attach"
+  type_id: 0x2f6c6167
+  offset: 256
+}
+member {
+  id: 0x96388e5d
+  name: "attach"
+  type_id: 0x0d23c46d
+  offset: 640
+}
+member {
+  id: 0x9639fdb6
+  name: "attach"
+  type_id: 0x0c5ef833
+  offset: 768
+}
+member {
+  id: 0x963a9698
+  name: "attach"
+  type_id: 0x0f3d78fb
+}
+member {
+  id: 0x2aea5254
+  name: "attach_bpf_fd"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x51a77605
+  name: "attach_btf"
+  type_id: 0x010934b0
+  offset: 512
+}
+member {
+  id: 0x05cddd5b
+  name: "attach_btf_id"
+  type_id: 0xe62ebf07
+  offset: 864
+}
+member {
+  id: 0x05e2f95b
+  name: "attach_btf_id"
+  type_id: 0xc9082b19
+  offset: 352
+}
+member {
+  id: 0x63f03d1c
+  name: "attach_btf_obj_fd"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x133bf735
+  name: "attach_btf_trace"
+  type_id: 0x6d7f5ff6
+  offset: 1232
+}
+member {
+  id: 0xce6d239f
+  name: "attach_dev"
+  type_id: 0x2d9b5866
+  offset: 11200
+}
+member {
+  id: 0xce6fa034
+  name: "attach_dev"
+  type_id: 0x2f1b138b
+}
+member {
+  id: 0x49f2e487
+  name: "attach_dmabuf"
+  type_id: 0x1dfd3616
+  offset: 448
+}
+member {
+  id: 0x5cd877ef
+  name: "attach_flags"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x541c67d0
+  name: "attach_func_name"
+  type_id: 0x3e10b518
+  offset: 1344
+}
+member {
+  id: 0xf7434e08
+  name: "attach_func_proto"
+  type_id: 0x3992f3fa
+  offset: 1280
+}
+member {
+  id: 0x2bbedee9
+  name: "attach_i2c_dev"
+  type_id: 0x2c70f3e8
+  offset: 576
+}
+member {
+  id: 0x225ec8a2
+  name: "attach_i3c_dev"
+  type_id: 0x2d1660e0
+  offset: 128
+}
+member {
+  id: 0x2939f808
+  name: "attach_prog_fd"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x44407a1a
+  name: "attach_regulator"
+  type_id: 0x2f58e605
+  offset: 128
+}
+member {
+  id: 0x825aa415
+  name: "attach_state"
+  type_id: 0x4585663f
+  offset: 1376
+}
+member {
+  id: 0x64b75781
+  name: "attach_type"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x64b75aba
+  name: "attach_type"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x64b75e5b
+  name: "attach_type"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x09df7a39
+  name: "attached"
+  type_id: 0x6d7f5ff6
+  offset: 2144
+}
+member {
+  id: 0x57f5e518
+  name: "attached"
+  type_id: 0x5d8155a5
+  offset: 289
+  bitsize: 1
+}
+member {
+  id: 0x95a2a074
+  name: "attached_dev"
+  type_id: 0x32a623d7
+  offset: 12544
+}
+member {
+  id: 0x5f81013f
+  name: "attached_entry"
+  type_id: 0xd3c80119
+  offset: 1344
+}
+member {
+  id: 0xf3acaabf
+  name: "attached_own_device"
+  type_id: 0x6d7f5ff6
+  offset: 10496
+}
+member {
+  id: 0x3a9e1210
+  name: "attachments"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0x6a5b1d5e
+  name: "attack_length"
+  type_id: 0xe8034002
+}
+member {
+  id: 0x9cf83c82
+  name: "attack_level"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0xe5043b9d
+  name: "attempt"
+  type_id: 0xb3e7bac9
+  offset: 480
+}
+member {
+  id: 0x6b2d7853
+  name: "attempts"
+  type_id: 0x295c7202
+  offset: 2176
+}
+member {
+  id: 0x92699037
+  name: "attention"
+  type_id: 0x0d10bc65
+  offset: 128
+}
+member {
+  id: 0x8c09af1b
+  name: "attr"
+  type_id: 0x0d07de88
+  offset: 1408
+}
+member {
+  id: 0x8c0a4029
+  name: "attr"
+  type_id: 0x0ee3dd73
+  offset: 128
+}
+member {
+  id: 0x8c1565a5
+  name: "attr"
+  type_id: 0x11cf9350
+}
+member {
+  id: 0x8c156d0b
+  name: "attr"
+  type_id: 0x11cf9350
+  offset: 768
+}
+member {
+  id: 0x8c29a58d
+  name: "attr"
+  type_id: 0x2d0fbb66
+}
+member {
+  id: 0x8c2a0595
+  name: "attr"
+  type_id: 0x2ea52095
+  offset: 7296
+}
+member {
+  id: 0x8c58fa0e
+  name: "attr"
+  type_id: 0x5c509347
+  offset: 256
+}
+member {
+  id: 0x8c9fd173
+  name: "attr"
+  type_id: 0x9b7b4548
+}
+member {
+  id: 0x8cbf5ebf
+  name: "attr"
+  type_id: 0xbbf3ac86
+  offset: 1728
+}
+member {
+  id: 0x8ccdaf26
+  name: "attr"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x8cd8119b
+  name: "attr"
+  type_id: 0xdcbf4c2a
+  offset: 64
+}
+member {
+  id: 0x8ce95ca0
+  name: "attr"
+  type_id: 0xedf277ba
+  offset: 64
+}
+member {
+  id: 0xa59eb82e
+  name: "attr_g"
+  type_id: 0xed8451a2
+  offset: 128
+}
+member {
+  id: 0x465f0653
+  name: "attr_g_muex"
+  type_id: 0xed8451a2
+  offset: 8320
+}
+member {
+  id: 0xc5717af6
+  name: "attr_group"
+  type_id: 0x31f12dcf
+  offset: 3008
+}
+member {
+  id: 0xf8037d37
+  name: "attr_groups"
+  type_id: 0xe52f2f44
+  offset: 4032
+}
+member {
+  id: 0xf8e01779
+  name: "attr_groups"
+  type_id: 0x06433852
+  offset: 256
+}
+member {
+  id: 0xf8e017d2
+  name: "attr_groups"
+  type_id: 0x06433852
+}
+member {
+  id: 0xf8e01f1b
+  name: "attr_groups"
+  type_id: 0x06433852
+  offset: 192
+}
+member {
+  id: 0x99991b53
+  name: "attr_grp"
+  type_id: 0x06433852
+  offset: 192
+}
+member {
+  id: 0xda81cdaa
+  name: "attr_map"
+  type_id: 0xc9ff5105
+  offset: 192
+}
+member {
+  id: 0x2332c53e
+  name: "attr_name"
+  type_id: 0x19ce8000
+  offset: 576
+}
+member {
+  id: 0x233aca28
+  name: "attr_name"
+  type_id: 0x11cf9350
+  offset: 448
+}
+member {
+  id: 0x2ae4a5b7
+  name: "attr_set"
+  type_id: 0xb94739b9
+}
+member {
+  id: 0xd16312b5
+  name: "attr_state"
+  type_id: 0x11cf9350
+  offset: 704
+}
+member {
+  id: 0xef73ee2a
+  name: "attr_update"
+  type_id: 0x06433852
+  offset: 320
+}
+member {
+  id: 0x7efaba55
+  name: "attribs"
+  type_id: 0x079ced0e
+  offset: 2880
+}
+member {
+  id: 0xa926c7e0
+  name: "attribute"
+  type_id: 0x5d8155a5
+  offset: 72
+}
+member {
+  id: 0x031bf6f0
+  name: "attributes"
+  type_id: 0x5d8155a5
+  offset: 352
+}
+member {
+  id: 0x038f7bd7
+  name: "attributes"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x03d4590d
+  name: "attributes"
+  type_id: 0x92233392
+  offset: 128
+}
+member {
+  id: 0xc9a20fe4
+  name: "attributes_mask"
+  type_id: 0x92233392
+  offset: 192
+}
+member {
+  id: 0x4d50f0eb
+  name: "attrs"
+  type_id: 0x334c07d5
+  offset: 64
+}
+member {
+  id: 0x4d61cf19
+  name: "attrs"
+  type_id: 0x0277bf8a
+  offset: 256
+}
+member {
+  id: 0x4d66fbde
+  name: "attrs"
+  type_id: 0x054117f9
+  offset: 1216
+}
+member {
+  id: 0x4d695408
+  name: "attrs"
+  type_id: 0x0ae4cc78
+  offset: 192
+}
+member {
+  id: 0x4d6a99b1
+  name: "attrs"
+  type_id: 0x0928cefb
+  offset: 576
+}
+member {
+  id: 0x4d7101fe
+  name: "attrs"
+  type_id: 0x12b100eb
+  offset: 960
+}
+member {
+  id: 0x4d7b531f
+  name: "attrs"
+  type_id: 0x18ea2d6b
+  offset: 6016
+}
+member {
+  id: 0x4d9b2187
+  name: "attrs"
+  type_id: 0xf8992146
+  offset: 256
+}
+member {
+  id: 0x4db09c65
+  name: "attrs"
+  type_id: 0xd32daa21
+  offset: 128
+}
+member {
+  id: 0x4db3119c
+  name: "attrs"
+  type_id: 0xd0a80358
+  offset: 384
+}
+member {
+  id: 0x4db3bf1b
+  name: "attrs"
+  type_id: 0xd00684ec
+  offset: 384
+}
+member {
+  id: 0x4dd44edb
+  name: "attrs"
+  type_id: 0xb7fdce5e
+  offset: 512
+}
+member {
+  id: 0x4ded783f
+  name: "attrs"
+  type_id: 0x8ec6fcdc
+  offset: 7872
+}
+member {
+  id: 0xfe59a021
+  name: "attrs_muex"
+  type_id: 0x0ae4cc78
+  offset: 8640
+}
+member {
+  id: 0x2fd2bd43
+  name: "attrs_set"
+  type_id: 0x295c7202
+  offset: 992
+  bitsize: 1
+}
+member {
+  id: 0x273999e2
+  name: "atu_base"
+  type_id: 0x18bd6530
+  offset: 192
+}
+member {
+  id: 0xefc38562
+  name: "atu_size"
+  type_id: 0xf435685e
+  offset: 256
+}
+member {
+  id: 0x139a7b25
+  name: "au"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xe5495956
+  name: "audio"
+  type_id: 0x994177db
+}
+member {
+  id: 0xe5e12f10
+  name: "audio"
+  type_id: 0x313ef354
+  offset: 128
+}
+member {
+  id: 0x8479dd5f
+  name: "audio_latency"
+  type_id: 0x75617428
+  offset: 14496
+}
+member {
+  id: 0x211fd663
+  name: "audio_tstamp"
+  type_id: 0x9998edbb
+  offset: 320
+}
+member {
+  id: 0xc8a91dc8
+  name: "audio_tstamp_config"
+  type_id: 0xaabc2e1f
+  offset: 6432
+}
+member {
+  id: 0x92a1d54f
+  name: "audio_tstamp_report"
+  type_id: 0x06779076
+  offset: 6464
+}
+member {
+  id: 0x62ee79f4
+  name: "audioset"
+  type_id: 0xe62ebf07
+  offset: 320
+}
+member {
+  id: 0x7b2aad72
+  name: "audit_context"
+  type_id: 0x044199b9
+  offset: 18304
+}
+member {
+  id: 0x5c6d0558
+  name: "audit_tty"
+  type_id: 0x4585663f
+  offset: 7616
+}
+member {
+  id: 0x242a71d3
+  name: "auditallow"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x3a9cc23a
+  name: "auditdeny"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x56e37738
+  name: "audmode"
+  type_id: 0xe62ebf07
+  offset: 448
+}
+member {
+  id: 0xaa694b5b
+  name: "autask"
+  type_id: 0x3aeecf43
+}
+member {
+  id: 0xf4dca130
+  name: "auth_ids"
+  type_id: 0x191c3876
+}
+member {
+  id: 0x68e4e565
+  name: "auth_payload_timeout"
+  type_id: 0xe8034002
+  offset: 896
+}
+member {
+  id: 0x68e4ed9e
+  name: "auth_payload_timeout"
+  type_id: 0xe8034002
+  offset: 6624
+}
+member {
+  id: 0xc3d3954f
+  name: "auth_type"
+  type_id: 0xb3e7bac9
+  offset: 744
+}
+member {
+  id: 0x2ccc7a5c
+  name: "authenticated"
+  type_id: 0x6d7f5ff6
+}
+member {
+  id: 0x86d7f4fb
+  name: "authenticated"
+  type_id: 0x4585663f
+  offset: 11181
+  bitsize: 1
+}
+member {
+  id: 0x14fe6405
+  name: "authorized"
+  type_id: 0x4585663f
+  offset: 11180
+  bitsize: 1
+}
+member {
+  id: 0x14fe6fd9
+  name: "authorized"
+  type_id: 0x4585663f
+  offset: 327
+  bitsize: 1
+}
+member {
+  id: 0x0379674b
+  name: "authsize"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xa34b4567
+  name: "auto_accept_delay"
+  type_id: 0x4585663f
+  offset: 12896
+}
+member {
+  id: 0xd58c5c2c
+  name: "auto_accept_work"
+  type_id: 0xf1159c31
+  offset: 5312
+}
+member {
+  id: 0x7bdd8289
+  name: "auto_bkops_en"
+  type_id: 0x6d7f5ff6
+  offset: 784
+}
+member {
+  id: 0xe7bc06c5
+  name: "auto_bkops_enabled"
+  type_id: 0x6d7f5ff6
+  offset: 21056
+}
+member {
+  id: 0x5fd282b8
+  name: "auto_boot"
+  type_id: 0x6d7f5ff6
+  offset: 10120
+}
+member {
+  id: 0x7db25385
+  name: "auto_discharge_disconnect"
+  type_id: 0x5d8155a5
+  offset: 65
+  bitsize: 1
+}
+member {
+  id: 0xaa0ea302
+  name: "auto_flowlabels"
+  type_id: 0x295c7202
+  offset: 632
+}
+member {
+  id: 0xc5fa3041
+  name: "auto_runtime_pm"
+  type_id: 0x6d7f5ff6
+  offset: 10600
+}
+member {
+  id: 0xeee1b9c5
+  name: "auto_selectable_formats"
+  type_id: 0x2e18f543
+  offset: 1344
+}
+member {
+  id: 0x01610524
+  name: "auto_vbus_discharge_enabled"
+  type_id: 0x6d7f5ff6
+  offset: 34184
+}
+member {
+  id: 0xbdb80151
+  name: "autoclock"
+  type_id: 0x6d7f5ff6
+  offset: 3112
+}
+member {
+  id: 0x2133b79d
+  name: "autoconf"
+  type_id: 0x0faae5b1
+  offset: 160
+}
+member {
+  id: 0xb2dd57f2
+  name: "autoconf"
+  type_id: 0xb3e7bac9
+  offset: 30
+  bitsize: 1
+}
+member {
+  id: 0x400af110
+  name: "autodisable"
+  type_id: 0x4585663f
+  offset: 256
+  bitsize: 1
+}
+member {
+  id: 0xf1e86eba
+  name: "automatic_shrinking"
+  type_id: 0x6d7f5ff6
+  offset: 112
+}
+member {
+  id: 0xa20a923e
+  name: "autoneg"
+  type_id: 0x4585663f
+  offset: 9260
+  bitsize: 1
+}
+member {
+  id: 0xbe288597
+  name: "autoneg"
+  type_id: 0x4e2542af
+}
+member {
+  id: 0xbe808351
+  name: "autoneg"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xbed54502
+  name: "autoneg"
+  type_id: 0xb3e7bac9
+  offset: 144
+}
+member {
+  id: 0xbed548e9
+  name: "autoneg"
+  type_id: 0xb3e7bac9
+  offset: 88
+}
+member {
+  id: 0x76c2c4ca
+  name: "autoneg_complete"
+  type_id: 0x4585663f
+  offset: 9262
+  bitsize: 1
+}
+member {
+  id: 0x52191cde
+  name: "autosleep_enabled"
+  type_id: 0x6d7f5ff6
+  offset: 1601
+  bitsize: 1
+}
+member {
+  id: 0x1ca4299b
+  name: "autosuspend_delay"
+  type_id: 0x6720d32f
+  offset: 2176
+}
+member {
+  id: 0x79892c1b
+  name: "aux"
+  type_id: 0x069a74ff
+  offset: 5696
+}
+member {
+  id: 0x79895a82
+  name: "aux"
+  type_id: 0x06ef24ac
+  offset: 448
+}
+member {
+  id: 0x7997077d
+  name: "aux"
+  type_id: 0x18bd6530
+  offset: 192
+}
+member {
+  id: 0x3771732b
+  name: "aux_cnt"
+  type_id: 0xee2d724a
+  offset: 1600
+}
+member {
+  id: 0x935a4418
+  name: "aux_comp_list"
+  type_id: 0xd3c80119
+  offset: 3328
+}
+member {
+  id: 0x3603bd3a
+  name: "aux_dev"
+  type_id: 0x1692cf3f
+  offset: 3200
+}
+member {
+  id: 0xc99a1792
+  name: "aux_event"
+  type_id: 0x1dce0fdd
+  offset: 7424
+}
+member {
+  id: 0x8557c146
+  name: "aux_flags"
+  type_id: 0x92233392
+  offset: 256
+}
+member {
+  id: 0x6cc0b10a
+  name: "aux_head"
+  type_id: 0xedf277ba
+  offset: 8448
+}
+member {
+  id: 0x6cd14a83
+  name: "aux_head"
+  type_id: 0xfc0e1dbd
+  offset: 1152
+}
+member {
+  id: 0xb21d59f4
+  name: "aux_in_sampling"
+  type_id: 0x6720d32f
+  offset: 1696
+}
+member {
+  id: 0x805a87f5
+  name: "aux_mmap_count"
+  type_id: 0x74d29cf1
+  offset: 1472
+}
+member {
+  id: 0x76bb7cc3
+  name: "aux_mmap_locked"
+  type_id: 0x33756485
+  offset: 1536
+}
+member {
+  id: 0x32e43d34
+  name: "aux_nest"
+  type_id: 0x4585663f
+  offset: 1216
+}
+member {
+  id: 0x962230ca
+  name: "aux_nr_pages"
+  type_id: 0x6720d32f
+  offset: 1408
+}
+member {
+  id: 0x4751f029
+  name: "aux_offset"
+  type_id: 0xedf277ba
+  offset: 8576
+}
+member {
+  id: 0xf9cc30a6
+  name: "aux_output"
+  type_id: 0xedf277ba
+  offset: 351
+  bitsize: 1
+}
+member {
+  id: 0x77fe3544
+  name: "aux_output_match"
+  type_id: 0x2c2ce191
+  offset: 2176
+}
+member {
+  id: 0xdf98d9cb
+  name: "aux_overwrite"
+  type_id: 0x6720d32f
+  offset: 1440
+}
+member {
+  id: 0xf3d07746
+  name: "aux_pages"
+  type_id: 0x0cbf60eb
+  offset: 1728
+}
+member {
+  id: 0x0328ce0a
+  name: "aux_pgoff"
+  type_id: 0x33756485
+  offset: 1344
+}
+member {
+  id: 0x3274e485
+  name: "aux_pids"
+  type_id: 0x069a74ff
+  offset: 5760
+}
+member {
+  id: 0x80cba19d
+  name: "aux_priv"
+  type_id: 0x18bd6530
+  offset: 1792
+}
+member {
+  id: 0xffacf641
+  name: "aux_refcount"
+  type_id: 0xa722c13e
+  offset: 1664
+}
+member {
+  id: 0xbb9e3707
+  name: "aux_sample_size"
+  type_id: 0xe62ebf07
+  offset: 896
+}
+member {
+  id: 0x9315bbc5
+  name: "aux_size"
+  type_id: 0xedf277ba
+  offset: 8640
+}
+member {
+  id: 0x936a6857
+  name: "aux_size"
+  type_id: 0x92233392
+  offset: 1024
+}
+member {
+  id: 0x5c827059
+  name: "aux_tail"
+  type_id: 0xedf277ba
+  offset: 8512
+}
+member {
+  id: 0xb8cc16b4
+  name: "aux_wakeup"
+  type_id: 0xfc0e1dbd
+  offset: 1280
+}
+member {
+  id: 0x182e5f5b
+  name: "aux_watermark"
+  type_id: 0xfc0e1dbd
+  offset: 704
+}
+member {
+  id: 0x18347e7e
+  name: "aux_watermark"
+  type_id: 0xe62ebf07
+  offset: 832
+}
+member {
+  id: 0x99141802
+  name: "aux_work"
+  type_id: 0x26dfd527
+  offset: 44480
+}
+member {
+  id: 0xe1383335
+  name: "avail"
+  type_id: 0x14fb0ab0
+  offset: 576
+}
+member {
+  id: 0xe19ce3ba
+  name: "avail"
+  type_id: 0xb02b353a
+  offset: 128
+}
+member {
+  id: 0x6cb75b2a
+  name: "avail_idx"
+  type_id: 0x914dbfdc
+  offset: 2576
+}
+member {
+  id: 0xa5199b09
+  name: "avail_in"
+  type_id: 0x3fa31951
+  offset: 64
+}
+member {
+  id: 0xaa88e059
+  name: "avail_lists"
+  type_id: 0xdf3537b8
+  offset: 2368
+}
+member {
+  id: 0x78e33d00
+  name: "avail_max"
+  type_id: 0xa8fff47c
+  offset: 320
+}
+member {
+  id: 0xc04b62b9
+  name: "avail_min"
+  type_id: 0xa8fff47c
+  offset: 64
+}
+member {
+  id: 0x0f7c0a90
+  name: "avail_out"
+  type_id: 0x3fa31951
+  offset: 256
+}
+member {
+  id: 0xe376e784
+  name: "available"
+  type_id: 0x6d7f5ff6
+  offset: 160
+}
+member {
+  id: 0xe3c85a25
+  name: "available"
+  type_id: 0xd3c80119
+  offset: 1024
+}
+member {
+  id: 0x938ebdeb
+  name: "available_antennas_rx"
+  type_id: 0xc9082b19
+  offset: 2176
+}
+member {
+  id: 0x26380876
+  name: "available_antennas_tx"
+  type_id: 0xc9082b19
+  offset: 2144
+}
+member {
+  id: 0xec2cf306
+  name: "available_log_addrs"
+  type_id: 0x295c7202
+  offset: 11360
+}
+member {
+  id: 0x01624dd9
+  name: "available_scan_masks"
+  type_id: 0x3ea31487
+  offset: 7872
+}
+member {
+  id: 0xada3cb19
+  name: "avbps"
+  type_id: 0x92233392
+  offset: 512
+}
+member {
+  id: 0x0a770fbf
+  name: "avc"
+  type_id: 0x38883fc7
+  offset: 576
+}
+member {
+  id: 0x4133d93e
+  name: "avc_cache"
+  type_id: 0x22e22107
+  offset: 64
+}
+member {
+  id: 0xac537364
+  name: "avc_cache_threshold"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xce3c6bac
+  name: "avd"
+  type_id: 0xb65e540b
+  offset: 96
+}
+member {
+  id: 0x0f22186f
+  name: "avg"
+  type_id: 0x6f48b334
+  offset: 3136
+}
+member {
+  id: 0x0f8451c4
+  name: "avg"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x0f961616
+  name: "avg"
+  type_id: 0xdb451e9a
+  offset: 1536
+}
+member {
+  id: 0x0f961bee
+  name: "avg"
+  type_id: 0xdb451e9a
+  offset: 1024
+}
+member {
+  id: 0x28b85d24
+  name: "avg_buckets"
+  type_id: 0x48c9c244
+  offset: 4224
+}
+member {
+  id: 0xf1705556
+  name: "avg_bw"
+  type_id: 0xc9082b19
+  offset: 320
+}
+member {
+  id: 0xf1705a3f
+  name: "avg_bw"
+  type_id: 0xc9082b19
+  offset: 768
+}
+member {
+  id: 0xf1fcdb3d
+  name: "avg_bw"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xf0001df5
+  name: "avg_dl"
+  type_id: 0xdb451e9a
+  offset: 25088
+}
+member {
+  id: 0x28fcb87d
+  name: "avg_idle"
+  type_id: 0x92233392
+  offset: 26688
+}
+member {
+  id: 0x3b9f53ff
+  name: "avg_irq"
+  type_id: 0xdb451e9a
+  offset: 25600
+}
+member {
+  id: 0x30ff6943
+  name: "avg_last_update"
+  type_id: 0x92233392
+  offset: 1024
+}
+member {
+  id: 0x38425ca8
+  name: "avg_mutex"
+  type_id: 0xa7c362b0
+  offset: 1152
+}
+member {
+  id: 0xca15f443
+  name: "avg_next_update"
+  type_id: 0x92233392
+  offset: 1088
+}
+member {
+  id: 0x83570183
+  name: "avg_refaulted"
+  type_id: 0x4c8d526d
+  offset: 6592
+}
+member {
+  id: 0x9f9132df
+  name: "avg_rt"
+  type_id: 0xdb451e9a
+  offset: 24576
+}
+member {
+  id: 0xaaa0430b
+  name: "avg_scan_cost"
+  type_id: 0x92233392
+  offset: 832
+}
+member {
+  id: 0xe6582ece
+  name: "avg_thermal"
+  type_id: 0xdb451e9a
+  offset: 26112
+}
+member {
+  id: 0x78e63cf1
+  name: "avg_total"
+  type_id: 0x4c4654d5
+  offset: 576
+}
+member {
+  id: 0x78e6fa74
+  name: "avg_total"
+  type_id: 0x4c8d526d
+  offset: 7104
+}
+member {
+  id: 0x027dc0a5
+  name: "avg_write_bandwidth"
+  type_id: 0x33756485
+  offset: 2304
+}
+member {
+  id: 0x216040a6
+  name: "avgs_lock"
+  type_id: 0xa7c362b0
+  offset: 128
+}
+member {
+  id: 0x5e2ae57d
+  name: "avgs_work"
+  type_id: 0xf1159c31
+  offset: 1152
+}
+member {
+  id: 0x8daa6408
+  name: "avi"
+  type_id: 0x62436c35
+}
+member {
+  id: 0x66d9b736
+  name: "avpps"
+  type_id: 0x92233392
+  offset: 448
+}
+member {
+  id: 0xefd35f2c
+  name: "avrate"
+  type_id: 0xc9082b19
+  offset: 192
+}
+member {
+  id: 0x4c152021
+  name: "b"
+  type_id: 0x8d58bd1a
+}
+member {
+  id: 0x4ca0a7d8
+  name: "b"
+  type_id: 0x38df449f
+}
+member {
+  id: 0x4cf8b2b0
+  name: "b"
+  type_id: 0x60ca2c23
+}
+member {
+  id: 0xeeab7a86
+  name: "bAlternateSetting"
+  type_id: 0xb3e7bac9
+  offset: 24
+}
+member {
+  id: 0xa7b8c4d1
+  name: "bChannelIndex"
+  type_id: 0xb3e7bac9
+  offset: 40
+}
+member {
+  id: 0xc2707355
+  name: "bCharFormat"
+  type_id: 0xb3e7bac9
+  offset: 32
+}
+member {
+  id: 0xe87e5e05
+  name: "bConfigurationValue"
+  type_id: 0xb3e7bac9
+  offset: 40
+}
+member {
+  id: 0xe8e4e058
+  name: "bConfigurationValue"
+  type_id: 0x295c7202
+  offset: 320
+}
+member {
+  id: 0xd8483312
+  name: "bDataBits"
+  type_id: 0xb3e7bac9
+  offset: 48
+}
+member {
+  id: 0x0fdfca44
+  name: "bDataInterface"
+  type_id: 0xb3e7bac9
+  offset: 32
+}
+member {
+  id: 0x621a5fb2
+  name: "bDescriptorSubType"
+  type_id: 0xb3e7bac9
+  offset: 16
+}
+member {
+  id: 0xfaa868ba
+  name: "bDescriptorSubtype"
+  type_id: 0xb3e7bac9
+  offset: 16
+}
+member {
+  id: 0xfab9d95b
+  name: "bDescriptorType"
+  type_id: 0xb3e7bac9
+  offset: 8
+}
+member {
+  id: 0x271d5ab9
+  name: "bDetailData"
+  type_id: 0xe8c06042
+  offset: 32
+}
+member {
+  id: 0x44bf4180
+  name: "bDevCapabilityType"
+  type_id: 0xb3e7bac9
+  offset: 16
+}
+member {
+  id: 0xfdd5b655
+  name: "bDeviceClass"
+  type_id: 0xb3e7bac9
+  offset: 32
+}
+member {
+  id: 0xfdd5bff2
+  name: "bDeviceClass"
+  type_id: 0xb3e7bac9
+  offset: 80
+}
+member {
+  id: 0x1a3b0b1b
+  name: "bDeviceProtocol"
+  type_id: 0xb3e7bac9
+  offset: 96
+}
+member {
+  id: 0x1a3b0e59
+  name: "bDeviceProtocol"
+  type_id: 0xb3e7bac9
+  offset: 48
+}
+member {
+  id: 0x266be4d9
+  name: "bDeviceSubClass"
+  type_id: 0xb3e7bac9
+  offset: 40
+}
+member {
+  id: 0x266be90d
+  name: "bDeviceSubClass"
+  type_id: 0xb3e7bac9
+  offset: 88
+}
+member {
+  id: 0x9f5dfe15
+  name: "bEndpointAddress"
+  type_id: 0x295c7202
+  offset: 64
+}
+member {
+  id: 0x9fc74f82
+  name: "bEndpointAddress"
+  type_id: 0xb3e7bac9
+  offset: 16
+}
+member {
+  id: 0xde552fb9
+  name: "bEntityId"
+  type_id: 0xb3e7bac9
+  offset: 24
+}
+member {
+  id: 0x1a9ce8d2
+  name: "bFirstInterface"
+  type_id: 0xb3e7bac9
+  offset: 16
+}
+member {
+  id: 0xaad8b184
+  name: "bFunctionClass"
+  type_id: 0xb3e7bac9
+  offset: 32
+}
+member {
+  id: 0xb40b1915
+  name: "bFunctionLength"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0xed6b3e84
+  name: "bFunctionProtocol"
+  type_id: 0xb3e7bac9
+  offset: 48
+}
+member {
+  id: 0x24451e91
+  name: "bFunctionSubClass"
+  type_id: 0xb3e7bac9
+  offset: 40
+}
+member {
+  id: 0xdc4d18d7
+  name: "bFunctionalitySupport"
+  type_id: 0xb3e7bac9
+  offset: 48
+}
+member {
+  id: 0x80b709f0
+  name: "bGUID"
+  type_id: 0x60ca2c23
+  offset: 40
+}
+member {
+  id: 0xbe7ef6db
+  name: "bGuidDescriptorType"
+  type_id: 0xb3e7bac9
+  offset: 24
+}
+member {
+  id: 0xff57285d
+  name: "bInterfaceClass"
+  type_id: 0xb3e7bac9
+  offset: 104
+}
+member {
+  id: 0xff5729af
+  name: "bInterfaceClass"
+  type_id: 0xb3e7bac9
+  offset: 40
+}
+member {
+  id: 0x56212c03
+  name: "bInterfaceCount"
+  type_id: 0xb3e7bac9
+  offset: 24
+}
+member {
+  id: 0x54ab1033
+  name: "bInterfaceNumber"
+  type_id: 0xb3e7bac9
+  offset: 128
+}
+member {
+  id: 0x54ab174f
+  name: "bInterfaceNumber"
+  type_id: 0xb3e7bac9
+  offset: 16
+}
+member {
+  id: 0x0d79ba3f
+  name: "bInterfaceProtocol"
+  type_id: 0xb3e7bac9
+  offset: 56
+}
+member {
+  id: 0x0d79bf14
+  name: "bInterfaceProtocol"
+  type_id: 0xb3e7bac9
+  offset: 120
+}
+member {
+  id: 0xdcfce301
+  name: "bInterfaceSubClass"
+  type_id: 0xb3e7bac9
+  offset: 48
+}
+member {
+  id: 0xdcfce30d
+  name: "bInterfaceSubClass"
+  type_id: 0xb3e7bac9
+  offset: 112
+}
+member {
+  id: 0x788f1d18
+  name: "bInterval"
+  type_id: 0xb3e7bac9
+  offset: 48
+}
+member {
+  id: 0xe74b71e2
+  name: "bLength"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0x3fa47d82
+  name: "bMasterInterface0"
+  type_id: 0xb3e7bac9
+  offset: 24
+}
+member {
+  id: 0x4741b29e
+  name: "bMaxBurst"
+  type_id: 0xb3e7bac9
+  offset: 16
+}
+member {
+  id: 0x6dc343b7
+  name: "bMaxFilterSize"
+  type_id: 0xb3e7bac9
+  offset: 64
+}
+member {
+  id: 0x75825832
+  name: "bMaxOutstandingCommandMessages"
+  type_id: 0xb3e7bac9
+  offset: 40
+}
+member {
+  id: 0x9dc6a977
+  name: "bMaxPacketSize0"
+  type_id: 0xb3e7bac9
+  offset: 56
+}
+member {
+  id: 0x216b433b
+  name: "bMaxPower"
+  type_id: 0xb3e7bac9
+  offset: 64
+}
+member {
+  id: 0xd8aa6512
+  name: "bNumConfigurations"
+  type_id: 0xb3e7bac9
+  offset: 136
+}
+member {
+  id: 0x6f203337
+  name: "bNumDeviceCaps"
+  type_id: 0xb3e7bac9
+  offset: 32
+}
+member {
+  id: 0x61b6ff99
+  name: "bNumEndpoints"
+  type_id: 0xb3e7bac9
+  offset: 32
+}
+member {
+  id: 0xea61f760
+  name: "bNumInterfaces"
+  type_id: 0xb3e7bac9
+  offset: 32
+}
+member {
+  id: 0x6ac807c2
+  name: "bNumberFilters"
+  type_id: 0xb3e7bac9
+  offset: 56
+}
+member {
+  id: 0x68fc8a5e
+  name: "bNumberPowerFilters"
+  type_id: 0xb3e7bac9
+  offset: 96
+}
+member {
+  id: 0xcea9a8fa
+  name: "bParityType"
+  type_id: 0xb3e7bac9
+  offset: 40
+}
+member {
+  id: 0x1c1dff1a
+  name: "bPhysicalInterface"
+  type_id: 0xb3e7bac9
+  offset: 48
+}
+member {
+  id: 0x5f38a7e3
+  name: "bRefresh"
+  type_id: 0xb3e7bac9
+  offset: 56
+}
+member {
+  id: 0xbd733e2a
+  name: "bRequest"
+  type_id: 0xb3e7bac9
+  offset: 8
+}
+member {
+  id: 0x4a455418
+  name: "bRequestType"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0x8adb19a1
+  name: "bReserved"
+  type_id: 0xb3e7bac9
+  offset: 24
+}
+member {
+  id: 0x6558ecdc
+  name: "bSlaveInterface0"
+  type_id: 0xb3e7bac9
+  offset: 32
+}
+member {
+  id: 0xc83fcbb8
+  name: "bSynchAddress"
+  type_id: 0xb3e7bac9
+  offset: 64
+}
+member {
+  id: 0x4cea40ec
+  name: "bU1devExitLat"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0x4cea41e1
+  name: "bU1devExitLat"
+  type_id: 0xb3e7bac9
+  offset: 56
+}
+member {
+  id: 0xbd80152e
+  name: "bU2DevExitLat"
+  type_id: 0x9bd401b6
+  offset: 16
+}
+member {
+  id: 0xbd801f71
+  name: "bU2DevExitLat"
+  type_id: 0x9bd401b6
+  offset: 64
+}
+member {
+  id: 0xaa664cd0
+  name: "b_advanced_rpmb_en"
+  type_id: 0x6d7f5ff6
+  offset: 256
+}
+member {
+  id: 0x4ac7ce86
+  name: "b_assoc_buffers"
+  type_id: 0xd3c80119
+  offset: 576
+}
+member {
+  id: 0x625b4aeb
+  name: "b_assoc_map"
+  type_id: 0x1582ab06
+  offset: 704
+}
+member {
+  id: 0xb4d5a05a
+  name: "b_attached"
+  type_id: 0xd3c80119
+  offset: 6400
+}
+member {
+  id: 0x9cc802bc
+  name: "b_bdev"
+  type_id: 0x0c2e195c
+  offset: 384
+}
+member {
+  id: 0x826708f1
+  name: "b_blocknr"
+  type_id: 0xd0b3a203
+  offset: 192
+}
+member {
+  id: 0x6aa843fc
+  name: "b_count"
+  type_id: 0x74d29cf1
+  offset: 768
+}
+member {
+  id: 0xae00129e
+  name: "b_data"
+  type_id: 0x0483e6f8
+  offset: 320
+}
+member {
+  id: 0x1f901c77
+  name: "b_dirty"
+  type_id: 0xd3c80119
+  offset: 192
+}
+member {
+  id: 0x48ab5cc3
+  name: "b_dirty_time"
+  type_id: 0xd3c80119
+  offset: 576
+}
+member {
+  id: 0x1fe9d8c7
+  name: "b_end_io"
+  type_id: 0x0eced1c1
+  offset: 448
+}
+member {
+  id: 0x06ed160b
+  name: "b_ext_iid_en"
+  type_id: 0x6d7f5ff6
+  offset: 264
+}
+member {
+  id: 0x66b3d9d9
+  name: "b_hnp_enable"
+  type_id: 0x4585663f
+  offset: 8451
+  bitsize: 1
+}
+member {
+  id: 0x66b3ddbd
+  name: "b_hnp_enable"
+  type_id: 0x4585663f
+  offset: 273
+  bitsize: 1
+}
+member {
+  id: 0x0ac3f92d
+  name: "b_io"
+  type_id: 0xd3c80119
+  offset: 320
+}
+member {
+  id: 0x6824841c
+  name: "b_more_io"
+  type_id: 0xd3c80119
+  offset: 448
+}
+member {
+  id: 0x1ac12dfc
+  name: "b_page"
+  type_id: 0x06835e9c
+  offset: 128
+}
+member {
+  id: 0x23294895
+  name: "b_presrv_uspc_en"
+  type_id: 0x295c7202
+  offset: 248
+}
+member {
+  id: 0x2e6929bb
+  name: "b_private"
+  type_id: 0x18bd6530
+  offset: 512
+}
+member {
+  id: 0xe5169cd4
+  name: "b_rpm_dev_flush_capable"
+  type_id: 0x6d7f5ff6
+  offset: 240
+}
+member {
+  id: 0x1a41bbef
+  name: "b_size"
+  type_id: 0xf435685e
+  offset: 256
+}
+member {
+  id: 0x367bb6e9
+  name: "b_state"
+  type_id: 0x33756485
+}
+member {
+  id: 0x0a989be5
+  name: "b_this_page"
+  type_id: 0x1977e57b
+  offset: 64
+}
+member {
+  id: 0x4c017f4b
+  name: "b_uptodate_lock"
+  type_id: 0xf313e71a
+  offset: 800
+}
+member {
+  id: 0x29f1499b
+  name: "b_vendor_code"
+  type_id: 0x295c7202
+  offset: 368
+}
+member {
+  id: 0xcc435814
+  name: "back"
+  type_id: 0x102bb9c6
+  offset: 320
+}
+member {
+  id: 0x45455f3a
+  name: "back_pad"
+  type_id: 0x4585663f
+  offset: 1344
+}
+member {
+  id: 0x68e3e0c5
+  name: "backing_dev_info"
+  type_id: 0x28f4ee78
+  offset: 19392
+}
+member {
+  id: 0x77827b72
+  name: "backlight"
+  type_id: 0x309d6e18
+  offset: 64
+}
+member {
+  id: 0x603118f2
+  name: "backlog"
+  type_id: 0x4a46ba94
+  offset: 2176
+}
+member {
+  id: 0x6045302c
+  name: "backlog"
+  type_id: 0x3e6239e1
+  offset: 128
+}
+member {
+  id: 0x609d75c3
+  name: "backlog"
+  type_id: 0xe62ebf07
+  offset: 256
+}
+member {
+  id: 0x609d7853
+  name: "backlog"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x4af5295f
+  name: "backlog_rcv"
+  type_id: 0x2c210d23
+  offset: 1152
+}
+member {
+  id: 0x3a9ba983
+  name: "backward_ref_ts"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0xa01f6dc5
+  name: "bad_attr"
+  type_id: 0x37d7ca8b
+  offset: 64
+}
+member {
+  id: 0x6941f7ca
+  name: "bad_edid_counter"
+  type_id: 0x4585663f
+  offset: 14688
+}
+member {
+  id: 0x0ec19a8b
+  name: "bad_lun_okay"
+  type_id: 0x4585663f
+  offset: 3268
+  bitsize: 1
+}
+member {
+  id: 0xc641f774
+  name: "bad_signal_integrity"
+  type_id: 0x8b205321
+}
+member {
+  id: 0x8cb594de
+  name: "badd_profile"
+  type_id: 0x6720d32f
+  offset: 2176
+}
+member {
+  id: 0x9d72d2d7
+  name: "badrange"
+  type_id: 0x96bbe95c
+  offset: 8320
+}
+member {
+  id: 0x45a7f04a
+  name: "balance"
+  type_id: 0x2f0ef70e
+  offset: 576
+}
+member {
+  id: 0xbe7ada8f
+  name: "balance_callback"
+  type_id: 0x0519611c
+  offset: 23424
+}
+member {
+  id: 0xab9a8761
+  name: "balance_interval"
+  type_id: 0x4585663f
+  offset: 640
+}
+member {
+  id: 0x91350bc0
+  name: "balance_voltage"
+  type_id: 0x2f534341
+  offset: 256
+}
+member {
+  id: 0x24f5ee49
+  name: "balanced_dirty_ratelimit"
+  type_id: 0x33756485
+  offset: 2432
+}
+member {
+  id: 0x398cd2f3
+  name: "band"
+  type_id: 0xa28f9420
+  offset: 128
+}
+member {
+  id: 0x398cdb31
+  name: "band"
+  type_id: 0xa28f9420
+}
+member {
+  id: 0x88082bb8
+  name: "bands"
+  type_id: 0xa43786af
+  offset: 2624
+}
+member {
+  id: 0x0491a57b
+  name: "bandwidth"
+  type_id: 0x39fc1b17
+  offset: 5712
+}
+member {
+  id: 0x04acb031
+  name: "bandwidth"
+  type_id: 0x04e620e7
+  offset: 448
+}
+member {
+  id: 0x04edd2cd
+  name: "bandwidth"
+  type_id: 0x4585663f
+  offset: 864
+}
+member {
+  id: 0xfeb54b09
+  name: "bandwidth_allocated"
+  type_id: 0x6720d32f
+  offset: 1024
+}
+member {
+  id: 0x3cd3d123
+  name: "bandwidth_int_reqs"
+  type_id: 0x6720d32f
+  offset: 1056
+}
+member {
+  id: 0x1d9b11ef
+  name: "bandwidth_isoc_reqs"
+  type_id: 0x6720d32f
+  offset: 1088
+}
+member {
+  id: 0xbf5f26d7
+  name: "bandwidth_mutex"
+  type_id: 0x2360e10b
+  offset: 4928
+}
+member {
+  id: 0x6b87e46d
+  name: "bandwidths"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0xf1deb46e
+  name: "bank"
+  type_id: 0x0fa01494
+}
+member {
+  id: 0xf1f84479
+  name: "bank"
+  type_id: 0x295c7202
+  offset: 72
+}
+member {
+  id: 0x31826e55
+  name: "bar_fixed_64bit"
+  type_id: 0x295c7202
+  offset: 16
+}
+member {
+  id: 0x99a4a25a
+  name: "bar_fixed_size"
+  type_id: 0x85299f4c
+  offset: 64
+}
+member {
+  id: 0x96b7498e
+  name: "bar_to_atu"
+  type_id: 0xabf64f28
+  offset: 448
+}
+member {
+  id: 0xf2e9a899
+  name: "barno"
+  type_id: 0x791165e9
+  offset: 192
+}
+member {
+  id: 0xfbaa52b5
+  name: "barsz"
+  type_id: 0x84f80ecf
+  offset: 576
+}
+member {
+  id: 0x85112da2
+  name: "base"
+  type_id: 0xcbc3299e
+}
+member {
+  id: 0x85339417
+  name: "base"
+  type_id: 0xe9735eb8
+  offset: 128
+}
+member {
+  id: 0x8533951c
+  name: "base"
+  type_id: 0xe9735eb8
+  offset: 192
+}
+member {
+  id: 0x853396cd
+  name: "base"
+  type_id: 0xe9735eb8
+  offset: 512
+}
+member {
+  id: 0x85339773
+  name: "base"
+  type_id: 0xe9735eb8
+  offset: 896
+}
+member {
+  id: 0x85339dd5
+  name: "base"
+  type_id: 0xe9735eb8
+}
+member {
+  id: 0x85339e6f
+  name: "base"
+  type_id: 0xe9735eb8
+  offset: 832
+}
+member {
+  id: 0x853678f4
+  name: "base"
+  type_id: 0xec967f20
+}
+member {
+  id: 0x85481c0d
+  name: "base"
+  type_id: 0x92f28628
+}
+member {
+  id: 0x854f8bfe
+  name: "base"
+  type_id: 0x9565759f
+}
+member {
+  id: 0x855f2db2
+  name: "base"
+  type_id: 0x85c33988
+}
+member {
+  id: 0x85673fa9
+  name: "base"
+  type_id: 0xbdd18903
+  offset: 256
+}
+member {
+  id: 0x8575e25c
+  name: "base"
+  type_id: 0xaf0cd741
+}
+member {
+  id: 0x857d2de9
+  name: "base"
+  type_id: 0xa7c362b0
+}
+member {
+  id: 0x8590ce73
+  name: "base"
+  type_id: 0x4a20f8ef
+}
+member {
+  id: 0x8597b564
+  name: "base"
+  type_id: 0x4d50f747
+  offset: 512
+}
+member {
+  id: 0x8597b963
+  name: "base"
+  type_id: 0x4d50f747
+  offset: 1024
+}
+member {
+  id: 0x8597be7c
+  name: "base"
+  type_id: 0x4d50f747
+}
+member {
+  id: 0x859f626e
+  name: "base"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x859f68c9
+  name: "base"
+  type_id: 0x4585663f
+  offset: 224
+}
+member {
+  id: 0x85bdc08a
+  name: "base"
+  type_id: 0x6720d32f
+  offset: 8704
+}
+member {
+  id: 0x85bdc4db
+  name: "base"
+  type_id: 0x6720d32f
+  offset: 1344
+}
+member {
+  id: 0x85bdc79a
+  name: "base"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x85c18f1d
+  name: "base"
+  type_id: 0x1b619644
+}
+member {
+  id: 0x85c1a1cb
+  name: "base"
+  type_id: 0x1b4ba19a
+  offset: 64
+}
+member {
+  id: 0x85c253ee
+  name: "base"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0x85c2570f
+  name: "base"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0x85c25a2c
+  name: "base"
+  type_id: 0x18bd6530
+  offset: 128
+}
+member {
+  id: 0x85c2e109
+  name: "base"
+  type_id: 0x180f82e8
+}
+member {
+  id: 0x85d6188a
+  name: "base"
+  type_id: 0x0cf6014f
+}
+member {
+  id: 0x85da81e7
+  name: "base"
+  type_id: 0x006efe32
+  offset: 384
+}
+member {
+  id: 0x85e1e328
+  name: "base"
+  type_id: 0x3b0d08ae
+  offset: 256
+}
+member {
+  id: 0x85e1e383
+  name: "base"
+  type_id: 0x3b0d08ae
+}
+member {
+  id: 0x85e99dbc
+  name: "base"
+  type_id: 0x33756485
+  offset: 4800
+}
+member {
+  id: 0x85eca7b5
+  name: "base"
+  type_id: 0x36493e7d
+}
+member {
+  id: 0x85f02375
+  name: "base"
+  type_id: 0x2ac43c51
+  offset: 128
+}
+member {
+  id: 0x85f3de85
+  name: "base"
+  type_id: 0x293b162f
+  offset: 512
+}
+member {
+  id: 0x85f3df7a
+  name: "base"
+  type_id: 0x293b162f
+  offset: 1536
+}
+member {
+  id: 0x85fc8006
+  name: "base"
+  type_id: 0x266e8da3
+}
+member {
+  id: 0x85fdcbb5
+  name: "base"
+  type_id: 0x27253e64
+}
+member {
+  id: 0xf93eb8d5
+  name: "base_addr"
+  type_id: 0xc93e017b
+  offset: 128
+}
+member {
+  id: 0xf9c4fbe0
+  name: "base_addr"
+  type_id: 0x33756485
+  offset: 384
+}
+member {
+  id: 0xf9ecc4b7
+  name: "base_addr"
+  type_id: 0x1b4ba19a
+}
+member {
+  id: 0x26b2f753
+  name: "base_btf"
+  type_id: 0x010934b0
+  offset: 1024
+}
+member {
+  id: 0xa4e8c53f
+  name: "base_dev"
+  type_id: 0x0258f96e
+  offset: 1152
+}
+member {
+  id: 0xa4e8cce2
+  name: "base_dev"
+  type_id: 0x0258f96e
+  offset: 8192
+}
+member {
+  id: 0x12bc1e7d
+  name: "base_gfn"
+  type_id: 0x244afa25
+  offset: 1408
+}
+member {
+  id: 0x41fdd0f0
+  name: "base_id"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x2d6eaa34
+  name: "base_pfn"
+  type_id: 0x33756485
+}
+member {
+  id: 0x27e716ec
+  name: "base_q_idx"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0x1b7c9f4d
+  name: "baseclass_code"
+  type_id: 0x295c7202
+  offset: 56
+}
+member {
+  id: 0x9232ba55
+  name: "baser_coll_table"
+  type_id: 0x92233392
+  offset: 576
+}
+member {
+  id: 0x58199dc6
+  name: "baser_device_table"
+  type_id: 0x92233392
+  offset: 512
+}
+member {
+  id: 0x70cac30d
+  name: "bases"
+  type_id: 0x06ed5af3
+}
+member {
+  id: 0xfff2aea5
+  name: "basetime"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0x4a247549
+  name: "batch"
+  type_id: 0x6720d32f
+  offset: 1056
+}
+member {
+  id: 0x4a2475eb
+  name: "batch"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0x4a42d9c0
+  name: "batch"
+  type_id: 0x01857b68
+}
+member {
+  id: 0x4abf5b64
+  name: "batch"
+  type_id: 0xfc0e1dbd
+  offset: 128
+}
+member {
+  id: 0x4ad17f23
+  name: "batch"
+  type_id: 0x92233392
+  offset: 256
+}
+member {
+  id: 0x6a137549
+  name: "batch_size"
+  type_id: 0xe62ebf07
+  offset: 576
+}
+member {
+  id: 0x6d47c90b
+  name: "batchcount"
+  type_id: 0x4585663f
+  offset: 352
+}
+member {
+  id: 0xa5be4038
+  name: "batched"
+  type_id: 0x6720d32f
+  offset: 1408
+}
+member {
+  id: 0x54126407
+  name: "battery"
+  type_id: 0x18150d9f
+  offset: 58816
+}
+member {
+  id: 0x7d9c785a
+  name: "battery_avoid_query"
+  type_id: 0x6d7f5ff6
+  offset: 59072
+}
+member {
+  id: 0x2b3e3bb1
+  name: "battery_capacity"
+  type_id: 0x0faae5b1
+  offset: 58880
+}
+member {
+  id: 0x68976a7a
+  name: "battery_max"
+  type_id: 0x0faae5b1
+  offset: 58944
+}
+member {
+  id: 0xd382ab7e
+  name: "battery_min"
+  type_id: 0x0faae5b1
+  offset: 58912
+}
+member {
+  id: 0xc2bf0459
+  name: "battery_ratelimit_time"
+  type_id: 0x11c404ba
+  offset: 59136
+}
+member {
+  id: 0x7c54d5f8
+  name: "battery_report_id"
+  type_id: 0x0faae5b1
+  offset: 59008
+}
+member {
+  id: 0xbbbc650d
+  name: "battery_report_type"
+  type_id: 0x0faae5b1
+  offset: 58976
+}
+member {
+  id: 0x73492b8d
+  name: "battery_status"
+  type_id: 0x74acd685
+  offset: 59040
+}
+member {
+  id: 0x00221f9d
+  name: "battr"
+  type_id: 0x5c509347
+}
+member {
+  id: 0xd3c09bbc
+  name: "baud_base"
+  type_id: 0x6720d32f
+  offset: 224
+}
+member {
+  id: 0xd5092a04
+  name: "bb"
+  type_id: 0x06541377
+  offset: 4224
+}
+member {
+  id: 0xd53c6ced
+  name: "bb"
+  type_id: 0x3310ab43
+  offset: 8704
+}
+member {
+  id: 0x1103ab36
+  name: "bb_state"
+  type_id: 0x3a534a58
+  offset: 8640
+}
+member {
+  id: 0x1453f328
+  name: "bbr"
+  type_id: 0x4a4120f1
+}
+member {
+  id: 0x99cfc600
+  name: "bbr_bw_hi"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x2688a553
+  name: "bbr_bw_lo"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x8901d5be
+  name: "bbr_cwnd_gain"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0x2aa457a0
+  name: "bbr_min_rtt"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x7a50d16f
+  name: "bbr_pacing_gain"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x95bc92f9
+  name: "bc"
+  type_id: 0xf342c697
+  offset: 640
+}
+member {
+  id: 0x80690d75
+  name: "bc_ackers"
+  type_id: 0x914dbfdc
+  offset: 928
+}
+member {
+  id: 0x8f151ef9
+  name: "bc_dun"
+  type_id: 0xa8c5dffe
+  offset: 64
+}
+member {
+  id: 0x4fd58db3
+  name: "bc_key"
+  type_id: 0x3be4ec15
+}
+member {
+  id: 0xe0530296
+  name: "bc_snd_nxt"
+  type_id: 0x914dbfdc
+  offset: 912
+}
+member {
+  id: 0xb1760162
+  name: "bc_version"
+  type_id: 0x914dbfdc
+  offset: 80
+}
+member {
+  id: 0xb7810e3a
+  name: "bcast_addr"
+  type_id: 0xe04f9dc7
+  offset: 704
+}
+member {
+  id: 0x638c2bea
+  name: "bcdCDC"
+  type_id: 0x9bd401b6
+  offset: 24
+}
+member {
+  id: 0x4cb62a42
+  name: "bcdDevice"
+  type_id: 0x9bd401b6
+  offset: 96
+}
+member {
+  id: 0x6d668bf4
+  name: "bcdDevice_hi"
+  type_id: 0xe8034002
+  offset: 64
+}
+member {
+  id: 0xce1028be
+  name: "bcdDevice_lo"
+  type_id: 0xe8034002
+  offset: 48
+}
+member {
+  id: 0x01f53df9
+  name: "bcdMBIMExtendedVersion"
+  type_id: 0x9bd401b6
+  offset: 24
+}
+member {
+  id: 0xc7d241c6
+  name: "bcdMBIMVersion"
+  type_id: 0x9bd401b6
+  offset: 24
+}
+member {
+  id: 0xdb28e038
+  name: "bcdNcmVersion"
+  type_id: 0x9bd401b6
+  offset: 24
+}
+member {
+  id: 0x6db65ab2
+  name: "bcdUSB"
+  type_id: 0x9bd401b6
+  offset: 16
+}
+member {
+  id: 0x3e045e5e
+  name: "bcdVersion"
+  type_id: 0xe8034002
+  offset: 24
+}
+member {
+  id: 0x3e77891f
+  name: "bcdVersion"
+  type_id: 0x9bd401b6
+  offset: 24
+}
+member {
+  id: 0xed59899f
+  name: "bclk_provider"
+  type_id: 0xb3e7bac9
+  offset: 120
+}
+member {
+  id: 0x9d00c69c
+  name: "bclk_rate"
+  type_id: 0x0baa70a7
+  offset: 192
+}
+member {
+  id: 0x5616c4c1
+  name: "bcmproc_dir"
+  type_id: 0x184052fc
+  offset: 576
+}
+member {
+  id: 0x924bde0a
+  name: "bcr"
+  type_id: 0x295c7202
+  offset: 64
+}
+member {
+  id: 0xeedf7147
+  name: "bctimer"
+  type_id: 0x4585663f
+  offset: 128
+  bitsize: 1
+}
+member {
+  id: 0x8586c80c
+  name: "bd_claiming"
+  type_id: 0x18bd6530
+  offset: 512
+}
+member {
+  id: 0xf75c89bb
+  name: "bd_dev"
+  type_id: 0xeb0f6de6
+  offset: 288
+}
+member {
+  id: 0xbd6420de
+  name: "bd_device"
+  type_id: 0x23230326
+  offset: 576
+}
+member {
+  id: 0x93fbf95e
+  name: "bd_disk"
+  type_id: 0x2131312a
+  offset: 8128
+}
+member {
+  id: 0x56ccb8e7
+  name: "bd_fsfreeze_count"
+  type_id: 0x6720d32f
+  offset: 8256
+}
+member {
+  id: 0x218db134
+  name: "bd_fsfreeze_mutex"
+  type_id: 0xa7c362b0
+  offset: 8320
+}
+member {
+  id: 0x32f4d4f1
+  name: "bd_fsfreeze_sb"
+  type_id: 0x26ee682a
+  offset: 8704
+}
+member {
+  id: 0xd9cac2dd
+  name: "bd_holder"
+  type_id: 0x18bd6530
+  offset: 7872
+}
+member {
+  id: 0xb19a72aa
+  name: "bd_holder_dir"
+  type_id: 0x23f09c34
+  offset: 8000
+}
+member {
+  id: 0xb95802d5
+  name: "bd_holders"
+  type_id: 0x6720d32f
+  offset: 7936
+}
+member {
+  id: 0x90d12200
+  name: "bd_inode"
+  type_id: 0x1b8590a8
+  offset: 384
+}
+member {
+  id: 0x8bcc0488
+  name: "bd_meta_info"
+  type_id: 0x2900e118
+  offset: 8768
+}
+member {
+  id: 0x436ef75e
+  name: "bd_nr_sectors"
+  type_id: 0xd0b3a203
+  offset: 64
+}
+member {
+  id: 0x8e5fee32
+  name: "bd_openers"
+  type_id: 0x74d29cf1
+  offset: 320
+}
+member {
+  id: 0xe47790ac
+  name: "bd_partno"
+  type_id: 0x295c7202
+  offset: 8064
+}
+member {
+  id: 0x9fd36d3a
+  name: "bd_queue"
+  type_id: 0x09427c40
+  offset: 8192
+}
+member {
+  id: 0xaad8a036
+  name: "bd_read_only"
+  type_id: 0x6d7f5ff6
+  offset: 256
+}
+member {
+  id: 0x8e663da7
+  name: "bd_size_lock"
+  type_id: 0xf313e71a
+  offset: 8096
+}
+member {
+  id: 0x399849b4
+  name: "bd_stamp"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0x074e7d10
+  name: "bd_start_sect"
+  type_id: 0xd0b3a203
+}
+member {
+  id: 0x03a6ea04
+  name: "bd_stats"
+  type_id: 0x07a1ba80
+  offset: 128
+}
+member {
+  id: 0xf51d2231
+  name: "bd_super"
+  type_id: 0x26ee682a
+  offset: 448
+}
+member {
+  id: 0x572a1057
+  name: "bd_write_holder"
+  type_id: 0x6d7f5ff6
+  offset: 7968
+}
+member {
+  id: 0x17ebad26
+  name: "bdaddr"
+  type_id: 0xa61911b2
+  offset: 672
+}
+member {
+  id: 0x51ec111d
+  name: "bdev"
+  type_id: 0x10134e31
+  offset: 64
+}
+member {
+  id: 0x51ec1a96
+  name: "bdev"
+  type_id: 0x10134e31
+  offset: 2816
+}
+member {
+  id: 0x51f02800
+  name: "bdev"
+  type_id: 0x0c2e195c
+  offset: 256
+}
+member {
+  id: 0x51f028ab
+  name: "bdev"
+  type_id: 0x0c2e195c
+}
+member {
+  id: 0x51f02ed6
+  name: "bdev"
+  type_id: 0x0c2e195c
+  offset: 1280
+}
+member {
+  id: 0xd5c6c481
+  name: "bdi"
+  type_id: 0x28f4ee78
+}
+member {
+  id: 0xd5c6cecb
+  name: "bdi"
+  type_id: 0x28f4ee78
+  offset: 3456
+}
+member {
+  id: 0xc1d6024c
+  name: "bdi_id"
+  type_id: 0x92233392
+}
+member {
+  id: 0x7156e11d
+  name: "bdi_list"
+  type_id: 0xd3c80119
+  offset: 256
+}
+member {
+  id: 0x43019f87
+  name: "bdi_node"
+  type_id: 0xd3c80119
+  offset: 5376
+}
+member {
+  id: 0x09a85b04
+  name: "be"
+  type_id: 0x6d7f5ff6
+  offset: 128
+}
+member {
+  id: 0xd4e45e24
+  name: "be_bits"
+  type_id: 0x6d7f5ff6
+  offset: 1664
+}
+member {
+  id: 0xc4d45729
+  name: "be_clients"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0x9edaec2b
+  name: "be_hw_params_fixup"
+  type_id: 0x2d8b6549
+  offset: 832
+}
+member {
+  id: 0x9edaecac
+  name: "be_hw_params_fixup"
+  type_id: 0x2d8b6549
+  offset: 2752
+}
+member {
+  id: 0x4229ebcc
+  name: "be_pause"
+  type_id: 0x6720d32f
+  offset: 5376
+}
+member {
+  id: 0xf85cf421
+  name: "be_pcm_base"
+  type_id: 0x6720d32f
+  offset: 2848
+}
+member {
+  id: 0x58a658cc
+  name: "be_start"
+  type_id: 0x6720d32f
+  offset: 5344
+}
+member {
+  id: 0x4724f9be
+  name: "beacon"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x813cc5f8
+  name: "beacon_found"
+  type_id: 0x6d7f5ff6
+  offset: 224
+}
+member {
+  id: 0xcdc0c2e4
+  name: "beacon_int_infra_match"
+  type_id: 0x6d7f5ff6
+  offset: 120
+}
+member {
+  id: 0x0d748c66
+  name: "beacon_int_min_gcd"
+  type_id: 0xc9082b19
+  offset: 160
+}
+member {
+  id: 0xeb4e2a5c
+  name: "beacon_interval"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xeb6c882e
+  name: "beacon_interval"
+  type_id: 0x6720d32f
+  offset: 320
+}
+member {
+  id: 0xeb6c8fe9
+  name: "beacon_interval"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x342ee534
+  name: "bearer_id"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x90edb7b4
+  name: "before_stamp"
+  type_id: 0x7ca48629
+  offset: 1920
+}
+member {
+  id: 0x38212036
+  name: "begin"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0x38340c3f
+  name: "begin"
+  type_id: 0x26554526
+  offset: 64
+}
+member {
+  id: 0x383c84d4
+  name: "begin"
+  type_id: 0x2eda6351
+  offset: 1664
+}
+member {
+  id: 0x21bcbcbc
+  name: "begin_cpu_access"
+  type_id: 0x2d310635
+  offset: 512
+}
+member {
+  id: 0xedb63a93
+  name: "begin_cpu_access_partial"
+  type_id: 0x2d351be6
+  offset: 576
+}
+member {
+  id: 0x63cd6f18
+  name: "begin_enable_verity"
+  type_id: 0x2c7ea7c2
+}
+member {
+  id: 0x8b969425
+  name: "behavior"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xdcf27b4a
+  name: "below"
+  type_id: 0xd5df6730
+  offset: 256
+}
+member {
+  id: 0x69011a3e
+  name: "besl"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x27a19177
+  name: "besl_baseline"
+  type_id: 0xb3e7bac9
+  offset: 32
+}
+member {
+  id: 0xc73982ff
+  name: "besl_deep"
+  type_id: 0xb3e7bac9
+  offset: 40
+}
+member {
+  id: 0xe9fd6490
+  name: "bespoke_trigger"
+  type_id: 0x2cdce716
+  offset: 1216
+}
+member {
+  id: 0x7c0e6ec0
+  name: "best_encoder"
+  type_id: 0x2ef43f67
+  offset: 128
+}
+member {
+  id: 0x7c1af9fc
+  name: "best_encoder"
+  type_id: 0x3a6a6a5b
+  offset: 256
+}
+member {
+  id: 0x7c380860
+  name: "best_parent_hw"
+  type_id: 0x0ae4a2c7
+  offset: 256
+}
+member {
+  id: 0x5c798f4b
+  name: "best_parent_rate"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0x206fab2f
+  name: "bg_color"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0xd0847011
+  name: "bg_timer"
+  type_id: 0xcd7704bf
+  offset: 1664
+}
+member {
+  id: 0x29a6b069
+  name: "bgid"
+  type_id: 0xe8034002
+  offset: 128
+}
+member {
+  id: 0x29a6bbbc
+  name: "bgid"
+  type_id: 0xe8034002
+  offset: 240
+}
+member {
+  id: 0x95185f9f
+  name: "bgpio_bits"
+  type_id: 0x6720d32f
+  offset: 2080
+}
+member {
+  id: 0x6d19b14d
+  name: "bgpio_data"
+  type_id: 0x33756485
+  offset: 2176
+}
+member {
+  id: 0x2dd41454
+  name: "bgpio_dir"
+  type_id: 0x33756485
+  offset: 2240
+}
+member {
+  id: 0xfafbec34
+  name: "bgpio_dir_unreadable"
+  type_id: 0x6d7f5ff6
+  offset: 2048
+}
+member {
+  id: 0x41fa2863
+  name: "bgpio_lock"
+  type_id: 0xc8b17aa7
+  offset: 2112
+}
+member {
+  id: 0x5e2b8157
+  name: "bh"
+  type_id: 0xa5960bec
+  offset: 4544
+}
+member {
+  id: 0x5e2b8380
+  name: "bh"
+  type_id: 0xa5960bec
+  offset: 192
+}
+member {
+  id: 0xb592ec0b
+  name: "bhash"
+  type_id: 0x28f8e782
+  offset: 256
+}
+member {
+  id: 0x24a66c8c
+  name: "bhash2"
+  type_id: 0x28f8e782
+  offset: 384
+}
+member {
+  id: 0xd8ee181c
+  name: "bhash_size"
+  type_id: 0x4585663f
+  offset: 448
+}
+member {
+  id: 0xc6e979bd
+  name: "bi_bdev"
+  type_id: 0x0c2e195c
+  offset: 64
+}
+member {
+  id: 0xbf0fef01
+  name: "bi_blkg"
+  type_id: 0x03d5ac6b
+  offset: 576
+}
+member {
+  id: 0x00e14f72
+  name: "bi_bvec_done"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0xd71cd499
+  name: "bi_cookie"
+  type_id: 0x3cc4e4dd
+  offset: 416
+}
+member {
+  id: 0xdfb4eb50
+  name: "bi_crypt_context"
+  type_id: 0x0a224652
+  offset: 768
+}
+member {
+  id: 0x054de3a1
+  name: "bi_end_io"
+  type_id: 0x170b7529
+  offset: 448
+}
+member {
+  id: 0xc710c1ba
+  name: "bi_flags"
+  type_id: 0xc93e017b
+  offset: 160
+}
+member {
+  id: 0x16ee5b0d
+  name: "bi_idx"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x35517e9e
+  name: "bi_inline_vecs"
+  type_id: 0xc918cb81
+  offset: 1280
+}
+member {
+  id: 0x64963801
+  name: "bi_io_vec"
+  type_id: 0x07b17cd6
+  offset: 960
+}
+member {
+  id: 0x8587f141
+  name: "bi_iocost_cost"
+  type_id: 0x92233392
+  offset: 704
+}
+member {
+  id: 0xb7092e1a
+  name: "bi_ioprio"
+  type_id: 0xc93e017b
+  offset: 176
+}
+member {
+  id: 0xa42a1c5a
+  name: "bi_issue"
+  type_id: 0x8c08abbf
+  offset: 640
+}
+member {
+  id: 0x4460e917
+  name: "bi_iter"
+  type_id: 0xe990f1ec
+  offset: 256
+}
+member {
+  id: 0xb06a5bde
+  name: "bi_max_vecs"
+  type_id: 0xc93e017b
+  offset: 864
+}
+member {
+  id: 0x43ea5036
+  name: "bi_next"
+  type_id: 0x15a30023
+}
+member {
+  id: 0xb34d4bf5
+  name: "bi_opf"
+  type_id: 0x7b64642a
+  offset: 128
+}
+member {
+  id: 0x6dc5a179
+  name: "bi_pool"
+  type_id: 0x0292b875
+  offset: 1024
+}
+member {
+  id: 0xc701c262
+  name: "bi_private"
+  type_id: 0x18bd6530
+  offset: 512
+}
+member {
+  id: 0x5f475873
+  name: "bi_sector"
+  type_id: 0xd0b3a203
+}
+member {
+  id: 0x42ae5812
+  name: "bi_size"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xac26b039
+  name: "bi_skip_dm_default_key"
+  type_id: 0x6d7f5ff6
+  offset: 832
+}
+member {
+  id: 0xf1b95fc0
+  name: "bi_status"
+  type_id: 0x7be80061
+  offset: 192
+}
+member {
+  id: 0xcf2364f0
+  name: "bi_vcnt"
+  type_id: 0xc93e017b
+  offset: 848
+}
+member {
+  id: 0x649ecef1
+  name: "bias_level"
+  type_id: 0x66f6fc33
+}
+member {
+  id: 0x077a64fa
+  name: "bid"
+  type_id: 0xe8034002
+  offset: 96
+}
+member {
+  id: 0x077a6e5d
+  name: "bid"
+  type_id: 0xe8034002
+  offset: 224
+}
+member {
+  id: 0x9d3b9f4b
+  name: "bidi_bio"
+  type_id: 0x15a30023
+  offset: 704
+}
+member {
+  id: 0x03541dc9
+  name: "bidi_cnt"
+  type_id: 0x295c7202
+  offset: 24
+}
+member {
+  id: 0xe007a713
+  name: "bidi_rq"
+  type_id: 0x1e820193
+  offset: 640
+}
+member {
+  id: 0x06322123
+  name: "bidirectional"
+  type_id: 0x4585663f
+  offset: 192
+  bitsize: 1
+}
+member {
+  id: 0xc4633eb3
+  name: "big"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0x66d9eb14
+  name: "big_cqe"
+  type_id: 0xff45131e
+  offset: 128
+}
+member {
+  id: 0xe7f80404
+  name: "big_endian_capbase"
+  type_id: 0x4585663f
+  offset: 5606
+  bitsize: 1
+}
+member {
+  id: 0xc9e2f324
+  name: "big_endian_desc"
+  type_id: 0x4585663f
+  offset: 5605
+  bitsize: 1
+}
+member {
+  id: 0xb0c8880e
+  name: "big_endian_mmio"
+  type_id: 0x4585663f
+  offset: 5604
+  bitsize: 1
+}
+member {
+  id: 0xcbdb2ff3
+  name: "bin_attrs"
+  type_id: 0x0df13efa
+  offset: 256
+}
+member {
+  id: 0x237418e8
+  name: "binary"
+  type_id: 0x7bf61b84
+  offset: 192
+}
+member {
+  id: 0x6d11b289
+  name: "bind"
+  type_id: 0x2f9a9ee6
+}
+member {
+  id: 0x6d11bee8
+  name: "bind"
+  type_id: 0x2f9f3d56
+  offset: 128
+}
+member {
+  id: 0x6d11caba
+  name: "bind"
+  type_id: 0x2fe2067c
+  offset: 256
+}
+member {
+  id: 0x6d1239eb
+  name: "bind"
+  type_id: 0x2c16e301
+  offset: 1024
+}
+member {
+  id: 0x6d12e47c
+  name: "bind"
+  type_id: 0x2cc4a2bb
+  offset: 192
+}
+member {
+  id: 0x6d131ef8
+  name: "bind"
+  type_id: 0x2d3f9ded
+  offset: 576
+}
+member {
+  id: 0x6d132c4c
+  name: "bind"
+  type_id: 0x2d0d996b
+  offset: 128
+}
+member {
+  id: 0x6d137dd8
+  name: "bind"
+  type_id: 0x2d5d06f7
+  offset: 192
+}
+member {
+  id: 0x6d13fd99
+  name: "bind"
+  type_id: 0x2dd58efa
+}
+member {
+  id: 0x6d13fe4a
+  name: "bind"
+  type_id: 0x2dd65dd5
+}
+member {
+  id: 0x6d322220
+  name: "bind"
+  type_id: 0x0c0741c0
+  offset: 1088
+}
+member {
+  id: 0x5c4ffa8d
+  name: "bind2_bucket_cachep"
+  type_id: 0x2efd5036
+  offset: 320
+}
+member {
+  id: 0xf733bed8
+  name: "bind_add"
+  type_id: 0x2c16e301
+  offset: 1088
+}
+member {
+  id: 0x23af1384
+  name: "bind_bucket_cachep"
+  type_id: 0x2efd5036
+  offset: 192
+}
+member {
+  id: 0xd1625e70
+  name: "bind_class"
+  type_id: 0x0ff7df67
+  offset: 1024
+}
+member {
+  id: 0xdf38ee46
+  name: "bind_deactivated"
+  type_id: 0x4585663f
+  offset: 1664
+  bitsize: 1
+}
+member {
+  id: 0x595093f4
+  name: "bind_ifindex"
+  type_id: 0x6720d32f
+  offset: 320
+}
+member {
+  id: 0x5ee2d781
+  name: "bind_inany"
+  type_id: 0x4585663f
+  offset: 256
+  bitsize: 1
+}
+member {
+  id: 0x270c9a45
+  name: "bind_tcf"
+  type_id: 0x042c3ae5
+  offset: 640
+}
+member {
+  id: 0x58063b0f
+  name: "bind_to_tz"
+  type_id: 0x2f9e5474
+  offset: 192
+}
+member {
+  id: 0x8b541841
+  name: "binder_context_mgr_node"
+  type_id: 0x15f4a5c7
+}
+member {
+  id: 0x67ff21d1
+  name: "binder_context_mgr_uid"
+  type_id: 0xe90b32b7
+  offset: 448
+}
+member {
+  id: 0x17e0eb4b
+  name: "binder_type"
+  type_id: 0x3c7d9af3
+  offset: 32
+}
+member {
+  id: 0x048ba745
+  name: "binderfs_entry"
+  type_id: 0x120540d1
+  offset: 4736
+}
+member {
+  id: 0x192ddeb3
+  name: "binding_limits"
+  type_id: 0x064d6086
+  offset: 128
+}
+member {
+  id: 0x975a5c19
+  name: "bindv6only"
+  type_id: 0x295c7202
+  offset: 616
+}
+member {
+  id: 0x84e65d2a
+  name: "binfmt"
+  type_id: 0x006cda7e
+  offset: 6016
+}
+member {
+  id: 0xcac866d8
+  name: "bio"
+  type_id: 0x15a30023
+  offset: 448
+}
+member {
+  id: 0x70b501f7
+  name: "bio_list"
+  type_id: 0x1ce3e83b
+  offset: 19200
+}
+member {
+  id: 0xedfcfb3f
+  name: "bio_merge"
+  type_id: 0x35bcf3f4
+  offset: 384
+}
+member {
+  id: 0x817b6267
+  name: "bio_pool"
+  type_id: 0xe97fe194
+  offset: 192
+}
+member {
+  id: 0xb92ebf28
+  name: "bio_slab"
+  type_id: 0x2efd5036
+}
+member {
+  id: 0xd5b6d151
+  name: "bio_split"
+  type_id: 0x200a0749
+  offset: 768
+}
+member {
+  id: 0x24640f13
+  name: "bios_limit"
+  type_id: 0x2b99fd3e
+  offset: 960
+}
+member {
+  id: 0xbb5a00f9
+  name: "bios_param"
+  type_id: 0x2fa6e63d
+  offset: 1664
+}
+member {
+  id: 0x58a68188
+  name: "biotail"
+  type_id: 0x15a30023
+  offset: 512
+}
+member {
+  id: 0xdd6a73ea
+  name: "bis"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0xe59faff2
+  name: "bist_request"
+  type_id: 0xc9082b19
+  offset: 11040
+}
+member {
+  id: 0x1352cf9f
+  name: "bit"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0xdd1aee2e
+  name: "bit_count"
+  type_id: 0xb3e7bac9
+  offset: 16
+}
+member {
+  id: 0x40d0f254
+  name: "bit_depth"
+  type_id: 0xb3e7bac9
+  offset: 1248
+}
+member {
+  id: 0xd3a17336
+  name: "bit_depth_chroma_minus8"
+  type_id: 0xb3e7bac9
+  offset: 56
+}
+member {
+  id: 0xd3a17efa
+  name: "bit_depth_chroma_minus8"
+  type_id: 0xb3e7bac9
+  offset: 48
+}
+member {
+  id: 0x555ed01f
+  name: "bit_depth_luma_minus8"
+  type_id: 0xb3e7bac9
+  offset: 40
+}
+member {
+  id: 0x555ede8c
+  name: "bit_depth_luma_minus8"
+  type_id: 0xb3e7bac9
+  offset: 48
+}
+member {
+  id: 0xe51884d1
+  name: "bit_nr"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0xfd809d37
+  name: "bit_offset"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0xfda23882
+  name: "bit_offset"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x57244bc9
+  name: "bit_rate"
+  type_id: 0x6d472730
+  offset: 1088
+}
+member {
+  id: 0x57af26e5
+  name: "bit_rate"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0xeaf2eefb
+  name: "bit_size"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xa620dbc0
+  name: "bitfield32_valid"
+  type_id: 0xee53e764
+}
+member {
+  id: 0x89278ed4
+  name: "bitmap"
+  type_id: 0x607419c2
+}
+member {
+  id: 0x8941b34c
+  name: "bitmap"
+  type_id: 0x064d6086
+  offset: 64
+}
+member {
+  id: 0x8941b706
+  name: "bitmap"
+  type_id: 0x064d6086
+  offset: 256
+}
+member {
+  id: 0x8941be6f
+  name: "bitmap"
+  type_id: 0x064d6086
+  offset: 128
+}
+member {
+  id: 0x8941bf64
+  name: "bitmap"
+  type_id: 0x064d6086
+  offset: 192
+}
+member {
+  id: 0x895f406f
+  name: "bitmap"
+  type_id: 0x18bd6530
+  offset: 320
+}
+member {
+  id: 0x8974866b
+  name: "bitmap"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x898effdd
+  name: "bitmap"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x89a1d093
+  name: "bitmap"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x6fa601a8
+  name: "bitmap_tags"
+  type_id: 0x61c9dd1a
+  offset: 128
+}
+member {
+  id: 0xd0ac0d62
+  name: "bitrate"
+  type_id: 0x914dbfdc
+  offset: 32
+}
+member {
+  id: 0xd0d59cad
+  name: "bitrate"
+  type_id: 0xe8d14bc6
+}
+member {
+  id: 0xd0db6359
+  name: "bitrate"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x9bfbfeec
+  name: "bitrate_const"
+  type_id: 0x3104c07e
+  offset: 1088
+}
+member {
+  id: 0xe5caf77e
+  name: "bitrate_const_cnt"
+  type_id: 0x4585663f
+  offset: 1056
+}
+member {
+  id: 0x8ff2bc27
+  name: "bitrate_max"
+  type_id: 0xc9082b19
+  offset: 1248
+}
+member {
+  id: 0x4c00367e
+  name: "bitrates"
+  type_id: 0x219262d4
+  offset: 64
+}
+member {
+  id: 0xd72ff6c7
+  name: "bits"
+  type_id: 0x7a6db264
+  offset: 216
+}
+member {
+  id: 0xd78825be
+  name: "bits"
+  type_id: 0xddb527d3
+}
+member {
+  id: 0xd79d7339
+  name: "bits"
+  type_id: 0xc8e4d7d1
+  offset: 448
+}
+member {
+  id: 0xd7ec8426
+  name: "bits"
+  type_id: 0xb914bfab
+}
+member {
+  id: 0xcc20aa71
+  name: "bits_per_component"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0xbab5eab6
+  name: "bits_per_irq"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x6cf5d11a
+  name: "bits_per_lane_and_dclk_cycle"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xea313135
+  name: "bits_per_pixel"
+  type_id: 0xe62ebf07
+  offset: 192
+}
+member {
+  id: 0xea46533e
+  name: "bits_per_pixel"
+  type_id: 0x914dbfdc
+  offset: 128
+}
+member {
+  id: 0xd758ee01
+  name: "bits_per_pixel_low"
+  type_id: 0x295c7202
+  offset: 40
+}
+member {
+  id: 0x3657755f
+  name: "bits_per_word"
+  type_id: 0x295c7202
+  offset: 7464
+}
+member {
+  id: 0x36577ef8
+  name: "bits_per_word"
+  type_id: 0x295c7202
+  offset: 592
+}
+member {
+  id: 0xbd35fbdb
+  name: "bits_per_word_mask"
+  type_id: 0xc9082b19
+  offset: 7552
+}
+member {
+  id: 0xd2ae16a8
+  name: "bitset"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0xfea0d43f
+  name: "bittiming"
+  type_id: 0xdf09259e
+  offset: 384
+}
+member {
+  id: 0xcd84911e
+  name: "bittiming_const"
+  type_id: 0x326dfde1
+  offset: 256
+}
+member {
+  id: 0x9cc8208d
+  name: "bkops"
+  type_id: 0x6d7f5ff6
+  offset: 768
+}
+member {
+  id: 0x2e6c2139
+  name: "blend_mode_property"
+  type_id: 0x2a670b41
+  offset: 10304
+}
+member {
+  id: 0x02cfdf27
+  name: "blinded"
+  type_id: 0x914dbfdc
+  offset: 22
+  bitsize: 1
+}
+member {
+  id: 0x2da3404f
+  name: "blinding_requested"
+  type_id: 0x914dbfdc
+  offset: 21
+  bitsize: 1
+}
+member {
+  id: 0x8ada29b1
+  name: "blink_brightness"
+  type_id: 0x6720d32f
+  offset: 1536
+}
+member {
+  id: 0xaeff4948
+  name: "blink_delay_off"
+  type_id: 0x33756485
+  offset: 1024
+}
+member {
+  id: 0xca142b8d
+  name: "blink_delay_on"
+  type_id: 0x33756485
+  offset: 960
+}
+member {
+  id: 0x556c2adb
+  name: "blink_set"
+  type_id: 0x2eda8228
+  offset: 448
+}
+member {
+  id: 0x74dc8ee7
+  name: "blink_timer"
+  type_id: 0xd298e888
+  offset: 1088
+}
+member {
+  id: 0x60b5f6bd
+  name: "blit_x"
+  type_id: 0xc9082b19
+  offset: 256
+}
+member {
+  id: 0x23700a6b
+  name: "blit_y"
+  type_id: 0xc9082b19
+  offset: 288
+}
+member {
+  id: 0xd2679b24
+  name: "blk_addr"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x42eb8d46
+  name: "blk_crypto_mode"
+  type_id: 0x82011f33
+  offset: 320
+}
+member {
+  id: 0xbdcf4c73
+  name: "blk_key"
+  type_id: 0x135282ce
+  offset: 64
+}
+member {
+  id: 0x75a0d046
+  name: "blkbits"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0x8a671118
+  name: "blkcg"
+  type_id: 0x1bc6afb1
+  offset: 320
+}
+member {
+  id: 0x8a6716df
+  name: "blkcg"
+  type_id: 0x1bc6afb1
+}
+member {
+  id: 0x1a0efd8e
+  name: "blkcg_css"
+  type_id: 0x2b16c036
+  offset: 6080
+}
+member {
+  id: 0xf14cc730
+  name: "blkcg_node"
+  type_id: 0x49a73111
+  offset: 192
+}
+member {
+  id: 0xf1d6a66a
+  name: "blkcg_node"
+  type_id: 0xd3c80119
+  offset: 6272
+}
+member {
+  id: 0x939567e0
+  name: "blkcg_pols"
+  type_id: 0xb914bfab
+  offset: 3584
+}
+member {
+  id: 0x3b89facc
+  name: "blkd_tasks"
+  type_id: 0xd3c80119
+  offset: 1088
+}
+member {
+  id: 0x3c227495
+  name: "blkdata"
+  type_id: 0x2c581e22
+  offset: 1664
+}
+member {
+  id: 0x059dcb90
+  name: "blkg"
+  type_id: 0x03d5ac6b
+}
+member {
+  id: 0x059dcf71
+  name: "blkg"
+  type_id: 0x03d5ac6b
+  offset: 64
+}
+member {
+  id: 0x5b755469
+  name: "blkg_hint"
+  type_id: 0x03d5ac6b
+  offset: 2048
+}
+member {
+  id: 0xa54c0945
+  name: "blkg_list"
+  type_id: 0x5e8dc7f4
+  offset: 2112
+}
+member {
+  id: 0xa5c1426d
+  name: "blkg_list"
+  type_id: 0xd3c80119
+  offset: 3712
+}
+member {
+  id: 0x5b0d31b0
+  name: "blkg_tree"
+  type_id: 0x80c20070
+  offset: 1920
+}
+member {
+  id: 0x5e58bb99
+  name: "blkio_count"
+  type_id: 0xedf277ba
+  offset: 256
+}
+member {
+  id: 0x065d00f5
+  name: "blkio_delay_total"
+  type_id: 0xedf277ba
+  offset: 320
+}
+member {
+  id: 0x1d21f5f2
+  name: "blksize"
+  type_id: 0x1c3dbe5a
+  offset: 96
+}
+member {
+  id: 0x1d7840f0
+  name: "blksize"
+  type_id: 0x4585663f
+  offset: 352
+}
+member {
+  id: 0x1df4f2f5
+  name: "blksize"
+  type_id: 0xc93e017b
+  offset: 32
+}
+member {
+  id: 0xea9e68a2
+  name: "blksz"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xd19f7359
+  name: "blob"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0xef7b6156
+  name: "blob_lock"
+  type_id: 0xa7c362b0
+  offset: 5376
+}
+member {
+  id: 0x5b79888e
+  name: "blobs"
+  type_id: 0xd3c80119
+  offset: 1664
+}
+member {
+  id: 0x4224d55b
+  name: "block"
+  type_id: 0x74d29cf1
+  offset: 704
+}
+member {
+  id: 0x4232e32e
+  name: "block"
+  type_id: 0x62e6d4e3
+}
+member {
+  id: 0x42372350
+  name: "block"
+  type_id: 0x6720d32f
+  offset: 640
+}
+member {
+  id: 0x42470e00
+  name: "block"
+  type_id: 0x170b5163
+  offset: 256
+}
+member {
+  id: 0x426a4225
+  name: "block"
+  type_id: 0x3a433e0e
+  offset: 64
+}
+member {
+  id: 0x426a4fb6
+  name: "block"
+  type_id: 0x3a433e0e
+  offset: 576
+}
+member {
+  id: 0x427418a8
+  name: "block"
+  type_id: 0x24159bc9
+  offset: 192
+}
+member {
+  id: 0x42990dd1
+  name: "block"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x921eb8de
+  name: "block_attributes"
+  type_id: 0x079ced0e
+  offset: 448
+}
+member {
+  id: 0x00ef5f6a
+  name: "block_cfg_access"
+  type_id: 0x4585663f
+  offset: 22096
+  bitsize: 1
+}
+member {
+  id: 0xe2270b65
+  name: "block_cnt"
+  type_id: 0xe8034002
+  offset: 13456
+}
+member {
+  id: 0xecca238a
+  name: "block_h"
+  type_id: 0x861a0f9a
+  offset: 136
+}
+member {
+  id: 0xecca2748
+  name: "block_h"
+  type_id: 0x861a0f9a
+  offset: 112
+}
+member {
+  id: 0x215a13ec
+  name: "block_len"
+  type_id: 0xe8034002
+  offset: 13408
+}
+member {
+  id: 0x78f17176
+  name: "block_max"
+  type_id: 0x92233392
+  offset: 640
+}
+member {
+  id: 0x377c522b
+  name: "block_mtu"
+  type_id: 0xe8034002
+  offset: 13424
+}
+member {
+  id: 0x628f85ab
+  name: "block_mutex"
+  type_id: 0xa7c362b0
+  offset: 256
+}
+member {
+  id: 0x7068c236
+  name: "block_pred_enable"
+  type_id: 0x6d7f5ff6
+  offset: 208
+}
+member {
+  id: 0x1dff18c9
+  name: "block_shared"
+  type_id: 0x6d7f5ff6
+  offset: 64
+}
+member {
+  id: 0x3c120105
+  name: "block_size"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0xb034a057
+  name: "block_start"
+  type_id: 0x92233392
+  offset: 576
+}
+member {
+  id: 0x2c0d82ae
+  name: "block_w"
+  type_id: 0x861a0f9a
+  offset: 80
+}
+member {
+  id: 0x2c0d8592
+  name: "block_w"
+  type_id: 0x861a0f9a
+  offset: 104
+}
+member {
+  id: 0x82470e87
+  name: "blocked"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x826c5eec
+  name: "blocked"
+  type_id: 0x02097f03
+  offset: 17664
+}
+member {
+  id: 0xe27e8ce3
+  name: "blocked_keys"
+  type_id: 0xd3c80119
+  offset: 30848
+}
+member {
+  id: 0xa9b1ec07
+  name: "blocked_open"
+  type_id: 0x6720d32f
+  offset: 1632
+}
+member {
+  id: 0x8e01950d
+  name: "blocking"
+  type_id: 0x6d7f5ff6
+  offset: 2184
+}
+member {
+  id: 0x8efec678
+  name: "blocking"
+  type_id: 0x92233392
+  offset: 6592
+}
+member {
+  id: 0x48c48bbc
+  name: "blocking_domain"
+  type_id: 0x2e94a1e1
+  offset: 1792
+}
+member {
+  id: 0x4f0978ad
+  name: "blocks"
+  type_id: 0x92233392
+  offset: 1024
+}
+member {
+  id: 0x4f7d76df
+  name: "blocks"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x4f8c50a7
+  name: "blocks"
+  type_id: 0x170b5163
+  offset: 448
+}
+member {
+  id: 0x4f8c58ba
+  name: "blocks"
+  type_id: 0x170b5163
+  offset: 2816
+}
+member {
+  id: 0x4f997b4e
+  name: "blocks"
+  type_id: 0x022008d0
+  offset: 320
+}
+member {
+  id: 0x4fded064
+  name: "blocks"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x4fded5f5
+  name: "blocks"
+  type_id: 0x4585663f
+  offset: 7424
+}
+member {
+  id: 0x0bf959cb
+  name: "blocks_per_frame"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xc5b263cc
+  name: "blocks_per_page"
+  type_id: 0x4585663f
+  offset: 224
+}
+member {
+  id: 0x9d6f12e1
+  name: "blue"
+  type_id: 0xd529883e
+  offset: 448
+}
+member {
+  id: 0x9d8aa43e
+  name: "blue"
+  type_id: 0x3090e9a7
+  offset: 192
+}
+member {
+  id: 0xbaa126d5
+  name: "blue_white_lo"
+  type_id: 0x295c7202
+  offset: 208
+}
+member {
+  id: 0xf05fb972
+  name: "blue_x"
+  type_id: 0x295c7202
+  offset: 248
+}
+member {
+  id: 0x2e9e2743
+  name: "blue_y"
+  type_id: 0x295c7202
+  offset: 256
+}
+member {
+  id: 0xbbd85ada
+  name: "bluex"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x7a9b3244
+  name: "bluey"
+  type_id: 0xe62ebf07
+  offset: 192
+}
+member {
+  id: 0x0f7c3118
+  name: "bmAttributes"
+  type_id: 0xb3e7bac9
+  offset: 56
+}
+member {
+  id: 0x0f7c3674
+  name: "bmAttributes"
+  type_id: 0xb3e7bac9
+  offset: 24
+}
+member {
+  id: 0x0fc470e4
+  name: "bmAttributes"
+  type_id: 0x0baa70a7
+  offset: 32
+}
+member {
+  id: 0x0fc47bbe
+  name: "bmAttributes"
+  type_id: 0x0baa70a7
+  offset: 24
+}
+member {
+  id: 0x0fe68522
+  name: "bmAttributes"
+  type_id: 0x295c7202
+  offset: 336
+}
+member {
+  id: 0x916278f8
+  name: "bmCapabilities"
+  type_id: 0xb3e7bac9
+  offset: 24
+}
+member {
+  id: 0x0ef04bd6
+  name: "bmEthernetStatistics"
+  type_id: 0x0baa70a7
+  offset: 32
+}
+member {
+  id: 0xfb7cc3c9
+  name: "bmNetworkCapabilities"
+  type_id: 0xb3e7bac9
+  offset: 88
+}
+member {
+  id: 0xfb7cce1d
+  name: "bmNetworkCapabilities"
+  type_id: 0xb3e7bac9
+  offset: 40
+}
+member {
+  id: 0xb0e7ec93
+  name: "bmSublinkSpeedAttr"
+  type_id: 0xb7237aa3
+  offset: 96
+}
+member {
+  id: 0xdb5a4836
+  name: "bmap"
+  type_id: 0x215a6e18
+  offset: 448
+}
+member {
+  id: 0xdb7d584f
+  name: "bmap"
+  type_id: 0x064d6086
+}
+member {
+  id: 0x1a5538db
+  name: "bmp"
+  type_id: 0xfdb22131
+  offset: 192
+}
+member {
+  id: 0x3c6e9048
+  name: "bmp_len"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x92654565
+  name: "bo"
+  type_id: 0x246dc7d4
+  offset: 192
+}
+member {
+  id: 0x92654c3e
+  name: "bo"
+  type_id: 0x246dc7d4
+  offset: 384
+}
+member {
+  id: 0xcbcedd63
+  name: "bo_count"
+  type_id: 0x74d29cf1
+  offset: 192
+}
+member {
+  id: 0xe57b9e75
+  name: "bo_kmap_type"
+  type_id: 0x6f281063
+  offset: 128
+}
+member {
+  id: 0x2dc0240f
+  name: "boardinfo"
+  type_id: 0x383098d7
+  offset: 960
+}
+member {
+  id: 0x2dd987ac
+  name: "boardinfo"
+  type_id: 0x219459f2
+  offset: 17216
+}
+member {
+  id: 0x921a8304
+  name: "body"
+  type_id: 0x0483e6f8
+  offset: 128
+}
+member {
+  id: 0xbfc5857a
+  name: "bool"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x9fd51a6e
+  name: "bool_val_to_struct"
+  type_id: 0x03e9b5f9
+  offset: 3072
+}
+member {
+  id: 0xa9b46c97
+  name: "boolean"
+  type_id: 0x6d7f5ff6
+}
+member {
+  id: 0xa4843d55
+  name: "boost_enabled"
+  type_id: 0x6d7f5ff6
+  offset: 1472
+}
+member {
+  id: 0x4a266fad
+  name: "boost_kthread_mutex"
+  type_id: 0xa7c362b0
+  offset: 1728
+}
+member {
+  id: 0xa6787da6
+  name: "boost_kthread_status"
+  type_id: 0x4585663f
+  offset: 2176
+}
+member {
+  id: 0xb9533bcc
+  name: "boost_kthread_task"
+  type_id: 0x1d19a9d5
+  offset: 2112
+}
+member {
+  id: 0x74673511
+  name: "boost_mtx"
+  type_id: 0xf7998f6d
+  offset: 1408
+}
+member {
+  id: 0xb53c3de1
+  name: "boost_tasks"
+  type_id: 0x3e6239e1
+  offset: 1344
+}
+member {
+  id: 0xe6f10469
+  name: "boost_time"
+  type_id: 0x33756485
+  offset: 1664
+}
+member {
+  id: 0xf0e154ce
+  name: "boot"
+  type_id: 0x11c404ba
+  offset: 128
+}
+member {
+  id: 0x1068dd68
+  name: "boot_enabled"
+  type_id: 0x6d7f5ff6
+  offset: 984
+}
+member {
+  id: 0xc12e10df
+  name: "boot_on"
+  type_id: 0x4585663f
+  offset: 1729
+  bitsize: 1
+}
+member {
+  id: 0x08f034ff
+  name: "boot_ro_lock"
+  type_id: 0x4585663f
+  offset: 864
+}
+member {
+  id: 0x7b185751
+  name: "boot_ro_lockable"
+  type_id: 0x6d7f5ff6
+  offset: 896
+}
+member {
+  id: 0x3596f0aa
+  name: "bootaddr"
+  type_id: 0x92233392
+  offset: 8768
+}
+member {
+  id: 0x54ce3c04
+  name: "bootstatus"
+  type_id: 0x4585663f
+  offset: 384
+}
+member {
+  id: 0x4546988b
+  name: "boottime"
+  type_id: 0x399c459b
+  offset: 128
+}
+member {
+  id: 0x1a18e027
+  name: "borken"
+  type_id: 0x4585663f
+  offset: 2789
+  bitsize: 1
+}
+member {
+  id: 0x502851ad
+  name: "bos"
+  type_id: 0x295c7202
+  offset: 56
+}
+member {
+  id: 0x502852f2
+  name: "bos"
+  type_id: 0x295c7202
+  offset: 40
+}
+member {
+  id: 0x50297645
+  name: "bos"
+  type_id: 0x287406a7
+  offset: 8832
+}
+member {
+  id: 0x65742b97
+  name: "both"
+  type_id: 0x09d43d69
+}
+member {
+  id: 0xfad1b37a
+  name: "bottom"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xc8e304e4
+  name: "bottom_bar"
+  type_id: 0xc93e017b
+  offset: 480
+}
+member {
+  id: 0x1145d5cd
+  name: "bottom_field_order_cnt"
+  type_id: 0x0faae5b1
+  offset: 192
+}
+member {
+  id: 0x1145d64c
+  name: "bottom_field_order_cnt"
+  type_id: 0x0faae5b1
+  offset: 4160
+}
+member {
+  id: 0xf28f9bf8
+  name: "bounce"
+  type_id: 0xa77f528b
+}
+member {
+  id: 0x9ad754da
+  name: "bounce_addr"
+  type_id: 0xe02e14d6
+  offset: 384
+}
+member {
+  id: 0x6cde3128
+  name: "bounce_buf"
+  type_id: 0x18bd6530
+  offset: 256
+}
+member {
+  id: 0x932cb097
+  name: "bounce_buf_len"
+  type_id: 0x4585663f
+  offset: 672
+}
+member {
+  id: 0x9a3a0d64
+  name: "bounce_buffer"
+  type_id: 0x0483e6f8
+  offset: 320
+}
+member {
+  id: 0x13733ee5
+  name: "bounce_buffer_size"
+  type_id: 0x4585663f
+  offset: 448
+}
+member {
+  id: 0x118127e8
+  name: "bounce_dma"
+  type_id: 0xe02e14d6
+  offset: 192
+}
+member {
+  id: 0x0914226d
+  name: "bounce_len"
+  type_id: 0x4585663f
+  offset: 352
+}
+member {
+  id: 0x54bd2d94
+  name: "bounce_offs"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0x2b9f3069
+  name: "bound"
+  type_id: 0x6d7f5ff6
+  offset: 192
+}
+member {
+  id: 0x2b9f3162
+  name: "bound"
+  type_id: 0x6d7f5ff6
+  offset: 128
+}
+member {
+  id: 0x2bdc7a1e
+  name: "bound"
+  type_id: 0x2e3de161
+}
+member {
+  id: 0xc720c59c
+  name: "bound_on"
+  type_id: 0x6720d32f
+  offset: 1344
+}
+member {
+  id: 0x68d6c4e1
+  name: "bound_table"
+  type_id: 0xd3c80119
+  offset: 7168
+}
+member {
+  id: 0x62ad5394
+  name: "boundary"
+  type_id: 0xf435685e
+  offset: 384
+}
+member {
+  id: 0x62f19ee9
+  name: "boundary"
+  type_id: 0xa8fff47c
+  offset: 1792
+}
+member {
+  id: 0x41a916e7
+  name: "bounds"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x69f88a42
+  name: "bp_addr"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x48b104b5
+  name: "bp_len"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x03e839a0
+  name: "bp_list"
+  type_id: 0x0718aa8b
+  offset: 192
+}
+member {
+  id: 0x2f8da53c
+  name: "bp_type"
+  type_id: 0xe62ebf07
+  offset: 416
+}
+member {
+  id: 0x2b75f097
+  name: "bpc"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xe47884af
+  name: "bpc_supported"
+  type_id: 0x295c7202
+  offset: 24
+}
+member {
+  id: 0x68223da1
+  name: "bpf"
+  type_id: 0x535f1f9f
+  offset: 9408
+}
+member {
+  id: 0x685a0a71
+  name: "bpf"
+  type_id: 0x2b6db8d1
+  offset: 22336
+}
+member {
+  id: 0x775d894b
+  name: "bpf_bypass_getsockopt"
+  type_id: 0x332c0287
+  offset: 1216
+}
+member {
+  id: 0x06b17283
+  name: "bpf_capable"
+  type_id: 0x6d7f5ff6
+  offset: 12928
+}
+member {
+  id: 0xa9117c13
+  name: "bpf_cookie"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0xa96eaa56
+  name: "bpf_cookie"
+  type_id: 0x92233392
+  offset: 8192
+}
+member {
+  id: 0xa96ead57
+  name: "bpf_cookie"
+  type_id: 0x92233392
+}
+member {
+  id: 0xb90acda2
+  name: "bpf_ctx"
+  type_id: 0x20a3c757
+  offset: 24192
+}
+member {
+  id: 0xd6eb1e64
+  name: "bpf_event"
+  type_id: 0xedf277ba
+  offset: 350
+  bitsize: 1
+}
+member {
+  id: 0x4f428155
+  name: "bpf_fd"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x4f4285b4
+  name: "bpf_fd"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x3e12eb40
+  name: "bpf_func"
+  type_id: 0x3a88ea63
+  offset: 384
+}
+member {
+  id: 0x3e30dbbc
+  name: "bpf_func"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0xdba7c4e4
+  name: "bpf_raw_events"
+  type_id: 0x2736319a
+  offset: 6656
+}
+member {
+  id: 0x83397fb4
+  name: "bpf_sample"
+  type_id: 0xc9082b19
+  offset: 33920
+}
+member {
+  id: 0xede394b6
+  name: "bpf_storage"
+  type_id: 0x2f6ef74a
+  offset: 24128
+}
+member {
+  id: 0x890fca64
+  name: "bpp"
+  type_id: 0x861a0f9a
+  offset: 56
+}
+member {
+  id: 0x896ffb38
+  name: "bpp"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x89eef5ec
+  name: "bpp"
+  type_id: 0x6720d32f
+  offset: 352
+}
+member {
+  id: 0x1a51d264
+  name: "bpp_specified"
+  type_id: 0x6d7f5ff6
+  offset: 272
+}
+member {
+  id: 0x4f2ce92b
+  name: "bps"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0x6f424547
+  name: "bps_disabled"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0xc8a5d611
+  name: "bqueuedepth"
+  type_id: 0x295c7202
+  offset: 192
+}
+member {
+  id: 0xdac05308
+  name: "br"
+  type_id: 0x0ae9f863
+}
+member {
+  id: 0xdac11461
+  name: "br"
+  type_id: 0x0baa70a7
+  offset: 64
+}
+member {
+  id: 0xa1900f15
+  name: "br_max"
+  type_id: 0x295c7202
+  offset: 16
+}
+member {
+  id: 0x16d97d87
+  name: "br_min"
+  type_id: 0x295c7202
+  offset: 24
+}
+member {
+  id: 0xbf5108bb
+  name: "br_nominal"
+  type_id: 0x295c7202
+  offset: 96
+}
+member {
+  id: 0x123c9712
+  name: "br_stack"
+  type_id: 0x34782f35
+  offset: 128
+}
+member {
+  id: 0x521e7522
+  name: "branch_reg"
+  type_id: 0x0dc57607
+  offset: 576
+}
+member {
+  id: 0x8bc42faa
+  name: "branch_sample_type"
+  type_id: 0xedf277ba
+  offset: 576
+}
+member {
+  id: 0x11edfc94
+  name: "branches"
+  type_id: 0xc9082b19
+  offset: 576
+}
+member {
+  id: 0xbb66bd45
+  name: "brcm_insnreg"
+  type_id: 0xbe0f19dc
+}
+member {
+  id: 0xfd552aa2
+  name: "break_ctl"
+  type_id: 0x0c3ee516
+  offset: 3264
+}
+member {
+  id: 0xfd57c661
+  name: "break_ctl"
+  type_id: 0x0eda7457
+  offset: 704
+}
+member {
+  id: 0xfd76609c
+  name: "break_ctl"
+  type_id: 0x2f78c9b9
+  offset: 1280
+}
+member {
+  id: 0x02c73806
+  name: "bredr_chan"
+  type_id: 0x0355dc72
+  offset: 256
+}
+member {
+  id: 0x332cfc34
+  name: "breserved_tags"
+  type_id: 0x61c9dd1a
+  offset: 640
+}
+member {
+  id: 0x7b911ced
+  name: "bridge"
+  type_id: 0x0258f96e
+  offset: 2496
+}
+member {
+  id: 0x7b9c3f2d
+  name: "bridge"
+  type_id: 0x0f7fc0d6
+}
+member {
+  id: 0x7babfb58
+  name: "bridge"
+  type_id: 0x38b136d3
+  offset: 1344
+}
+member {
+  id: 0x7bb521c9
+  name: "bridge"
+  type_id: 0x2668e644
+  offset: 128
+}
+member {
+  id: 0x84375083
+  name: "bridge_chain"
+  type_id: 0xd3c80119
+  offset: 704
+}
+member {
+  id: 0x5ea05abf
+  name: "bridge_ctl"
+  type_id: 0xc93e017b
+  offset: 2432
+}
+member {
+  id: 0xf66cf284
+  name: "bridge_d3"
+  type_id: 0x4585663f
+  offset: 1338
+  bitsize: 1
+}
+member {
+  id: 0x391aa35b
+  name: "brightness"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x391aaa81
+  name: "brightness"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x391aaf73
+  name: "brightness"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0x3938020f
+  name: "brightness"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x39380f34
+  name: "brightness"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x39aed1f5
+  name: "brightness"
+  type_id: 0xf1f96361
+  offset: 3456
+}
+member {
+  id: 0xf89c6e07
+  name: "brightness_get"
+  type_id: 0x34d64015
+  offset: 384
+}
+member {
+  id: 0x81a86c53
+  name: "brightness_set"
+  type_id: 0x0da01896
+  offset: 256
+}
+member {
+  id: 0x48f50e09
+  name: "brightness_set_blocking"
+  type_id: 0x2ee63439
+  offset: 320
+}
+member {
+  id: 0x5612c834
+  name: "brk"
+  type_id: 0x33756485
+  offset: 2432
+}
+member {
+  id: 0x56469cd2
+  name: "brk"
+  type_id: 0x6720d32f
+  offset: 288
+}
+member {
+  id: 0x56c792be
+  name: "brk"
+  type_id: 0xe62ebf07
+  offset: 288
+}
+member {
+  id: 0x7d751410
+  name: "broadcast"
+  type_id: 0xedf277ba
+  offset: 256
+}
+member {
+  id: 0x7d954aab
+  name: "broadcast"
+  type_id: 0x0da6c1c2
+  offset: 896
+}
+member {
+  id: 0x7db1b4c6
+  name: "broadcast"
+  type_id: 0x295c7202
+  offset: 264
+}
+member {
+  id: 0x7ddb4f78
+  name: "broadcast"
+  type_id: 0x43acdd98
+  offset: 6848
+}
+member {
+  id: 0xd9eb441e
+  name: "broken_fua"
+  type_id: 0x4585663f
+  offset: 2827
+  bitsize: 1
+}
+member {
+  id: 0x20d3ef1e
+  name: "broken_intx_masking"
+  type_id: 0x4585663f
+  offset: 22117
+  bitsize: 1
+}
+member {
+  id: 0x21602a3e
+  name: "broken_parity_status"
+  type_id: 0x4585663f
+  offset: 22097
+  bitsize: 1
+}
+member {
+  id: 0xe71786ec
+  name: "broken_suspend"
+  type_id: 0x4585663f
+  offset: 58113
+  bitsize: 1
+}
+member {
+  id: 0xf538f29b
+  name: "brp"
+  type_id: 0xe62ebf07
+  offset: 224
+}
+member {
+  id: 0x6859ba1a
+  name: "brp_inc"
+  type_id: 0xe62ebf07
+  offset: 352
+}
+member {
+  id: 0xf8afa3d7
+  name: "brp_max"
+  type_id: 0xe62ebf07
+  offset: 320
+}
+member {
+  id: 0x3049f064
+  name: "brp_min"
+  type_id: 0xe62ebf07
+  offset: 288
+}
+member {
+  id: 0xff1a115d
+  name: "bsg_dev"
+  type_id: 0x23e765f6
+  offset: 19456
+}
+member {
+  id: 0xff1ad091
+  name: "bsg_dev"
+  type_id: 0x23230326
+  offset: 27456
+}
+member {
+  id: 0x43d19cf2
+  name: "bsg_queue"
+  type_id: 0x09427c40
+  offset: 34752
+}
+member {
+  id: 0xe4714746
+  name: "bsn"
+  type_id: 0x74d29cf1
+  offset: 576
+}
+member {
+  id: 0x3e6f1d98
+  name: "bss"
+  type_id: 0x295c7202
+  offset: 32
+}
+member {
+  id: 0x3eb33e63
+  name: "bss"
+  type_id: 0xf57b706b
+  offset: 128
+}
+member {
+  id: 0x4142d858
+  name: "bss_priv_size"
+  type_id: 0x6720d32f
+  offset: 1056
+}
+member {
+  id: 0x599e9d65
+  name: "bss_select_support"
+  type_id: 0xc9082b19
+  offset: 11168
+}
+member {
+  id: 0xb67a7308
+  name: "bssid"
+  type_id: 0xabf64f28
+  offset: 264
+}
+member {
+  id: 0xe303a272
+  name: "bstat"
+  type_id: 0x20b780d8
+}
+member {
+  id: 0xe303a4bc
+  name: "bstat"
+  type_id: 0x20b780d8
+  offset: 7872
+}
+member {
+  id: 0x3e04671b
+  name: "bstats"
+  type_id: 0x01de2d7a
+}
+member {
+  id: 0x3e288396
+  name: "bstats"
+  type_id: 0x2d385376
+  offset: 1408
+}
+member {
+  id: 0x275b0c1e
+  name: "bsync"
+  type_id: 0x104ad696
+}
+member {
+  id: 0x55592954
+  name: "bt"
+  type_id: 0x12463520
+}
+member {
+  id: 0x557a8cc2
+  name: "bt"
+  type_id: 0x31e3a331
+}
+member {
+  id: 0x0f1d715c
+  name: "btf"
+  type_id: 0x010934b0
+}
+member {
+  id: 0x0f1d7361
+  name: "btf"
+  type_id: 0x010934b0
+  offset: 704
+}
+member {
+  id: 0x0f1d7cb9
+  name: "btf"
+  type_id: 0x010934b0
+  offset: 7808
+}
+member {
+  id: 0x0ff18a1f
+  name: "btf"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0xc9406969
+  name: "btf_data"
+  type_id: 0x18bd6530
+  offset: 6784
+}
+member {
+  id: 0xa784bb16
+  name: "btf_data_size"
+  type_id: 0x4585663f
+  offset: 6720
+}
+member {
+  id: 0x69af75d7
+  name: "btf_fd"
+  type_id: 0xe62ebf07
+  offset: 384
+}
+member {
+  id: 0xf5c4457d
+  name: "btf_id"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xf5eb63e9
+  name: "btf_id"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xf5eb6708
+  name: "btf_id"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0xf5eb6b20
+  name: "btf_id"
+  type_id: 0xc9082b19
+  offset: 192
+}
+member {
+  id: 0xe986c7d2
+  name: "btf_key_type_id"
+  type_id: 0xe62ebf07
+  offset: 416
+}
+member {
+  id: 0xe9a9e3d4
+  name: "btf_key_type_id"
+  type_id: 0xc9082b19
+  offset: 608
+}
+member {
+  id: 0x61c169f9
+  name: "btf_log_buf"
+  type_id: 0xedf277ba
+  offset: 64
+}
+member {
+  id: 0xa6ce24d4
+  name: "btf_log_level"
+  type_id: 0xe62ebf07
+  offset: 192
+}
+member {
+  id: 0x2ecc6654
+  name: "btf_log_size"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0x564f4f8a
+  name: "btf_size"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0x620d6cc3
+  name: "btf_struct_access"
+  type_id: 0x2c96a06f
+  offset: 320
+}
+member {
+  id: 0x86c2263a
+  name: "btf_value_type_id"
+  type_id: 0xe62ebf07
+  offset: 448
+}
+member {
+  id: 0x86ed01a0
+  name: "btf_value_type_id"
+  type_id: 0xc9082b19
+  offset: 640
+}
+member {
+  id: 0xee01730d
+  name: "btf_var"
+  type_id: 0x1f47f2e5
+}
+member {
+  id: 0x2b17661b
+  name: "btf_vmlinux_value_type_id"
+  type_id: 0xc9082b19
+  offset: 672
+}
+member {
+  id: 0x2b38467e
+  name: "btf_vmlinux_value_type_id"
+  type_id: 0xe62ebf07
+  offset: 480
+}
+member {
+  id: 0x20a1652f
+  name: "bti_resistance_ohm"
+  type_id: 0x6720d32f
+  offset: 3872
+}
+member {
+  id: 0xa9d9998a
+  name: "bti_resistance_tolerance"
+  type_id: 0x6720d32f
+  offset: 3904
+}
+member {
+  id: 0x68123d93
+  name: "btime"
+  type_id: 0x399c459b
+  offset: 896
+}
+member {
+  id: 0x13dab964
+  name: "btt_ida"
+  type_id: 0xe1a31370
+  offset: 7424
+}
+member {
+  id: 0xb61bc8d8
+  name: "btt_seed"
+  type_id: 0x0258f96e
+  offset: 7936
+}
+member {
+  id: 0xc0fef600
+  name: "bucket"
+  type_id: 0x18e7b37e
+  offset: 64
+}
+member {
+  id: 0x75744c6e
+  name: "bucket_fn"
+  type_id: 0x2e790da0
+  offset: 640
+}
+member {
+  id: 0x2180a015
+  name: "bucket_id"
+  type_id: 0x4585663f
+  offset: 11
+  bitsize: 5
+}
+member {
+  id: 0x13ffe5b5
+  name: "bucket_log"
+  type_id: 0xc9082b19
+  offset: 2624
+}
+member {
+  id: 0xe6502bd9
+  name: "bucket_size"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0xff0ba4fe
+  name: "buckets"
+  type_id: 0x0a4e4698
+  offset: 768
+}
+member {
+  id: 0xff1cd5bf
+  name: "buckets"
+  type_id: 0x1d33485a
+  offset: 64
+}
+member {
+  id: 0xff2ededc
+  name: "buckets"
+  type_id: 0x2f3d6801
+  offset: 2560
+}
+member {
+  id: 0xff44654d
+  name: "buckets"
+  type_id: 0x4585663f
+  offset: 704
+}
+member {
+  id: 0xffc2a703
+  name: "buckets"
+  type_id: 0xc34e0d42
+  offset: 512
+}
+member {
+  id: 0xffcf891b
+  name: "buckets"
+  type_id: 0xce6e9270
+  offset: 2176
+}
+member {
+  id: 0xa85e2a03
+  name: "buddy_list"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0x7ebd9064
+  name: "budget_map"
+  type_id: 0xa3189db3
+  offset: 384
+}
+member {
+  id: 0xffe50295
+  name: "budget_token"
+  type_id: 0x6720d32f
+  offset: 1440
+}
+member {
+  id: 0x9a0374cd
+  name: "buf"
+  type_id: 0x18bd6530
+  offset: 576
+}
+member {
+  id: 0x9a037dbf
+  name: "buf"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0x9a0fb3c5
+  name: "buf"
+  type_id: 0x14731fc7
+}
+member {
+  id: 0x9a1f433c
+  name: "buf"
+  type_id: 0x0483e6f8
+}
+member {
+  id: 0x9a1f44fb
+  name: "buf"
+  type_id: 0x0483e6f8
+  offset: 320
+}
+member {
+  id: 0x9a1f4bf5
+  name: "buf"
+  type_id: 0x0483e6f8
+  offset: 192
+}
+member {
+  id: 0x9a317d67
+  name: "buf"
+  type_id: 0x2abdbda9
+}
+member {
+  id: 0x9a321df3
+  name: "buf"
+  type_id: 0x29dd29f0
+}
+member {
+  id: 0x9a3dadec
+  name: "buf"
+  type_id: 0x2669d715
+  offset: 64
+}
+member {
+  id: 0x9a5a33c2
+  name: "buf"
+  type_id: 0x41fadac3
+  offset: 128
+}
+member {
+  id: 0x9a6c304c
+  name: "buf"
+  type_id: 0x77f6ebb4
+  offset: 1280
+}
+member {
+  id: 0x9a8f9fc7
+  name: "buf"
+  type_id: 0x9457d4c7
+  offset: 192
+}
+member {
+  id: 0x9a976b6d
+  name: "buf"
+  type_id: 0x8ca7b4cd
+  offset: 4320
+}
+member {
+  id: 0x9ac891c8
+  name: "buf"
+  type_id: 0xd359db99
+  offset: 192
+}
+member {
+  id: 0x9ad307bc
+  name: "buf"
+  type_id: 0xc8c766a0
+}
+member {
+  id: 0x9aeff0bf
+  name: "buf"
+  type_id: 0xf43065cd
+}
+member {
+  id: 0x9af63b6f
+  name: "buf"
+  type_id: 0xedf277ba
+  offset: 128
+}
+member {
+  id: 0x4169e3af
+  name: "buf0"
+  type_id: 0x0baa70a7
+  offset: 896
+}
+member {
+  id: 0x012e72bf
+  name: "buf1"
+  type_id: 0x0baa70a7
+  offset: 928
+}
+member {
+  id: 0xc2edad26
+  name: "buf2"
+  type_id: 0x0baa70a7
+  offset: 960
+}
+member {
+  id: 0xaaa67b0f
+  name: "buf_align"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0x7c3d486b
+  name: "buf_alloc"
+  type_id: 0x0baa70a7
+  offset: 288
+}
+member {
+  id: 0x9050692d
+  name: "buf_cleanup"
+  type_id: 0x0c7ce901
+  offset: 448
+}
+member {
+  id: 0x66f24f37
+  name: "buf_data"
+  type_id: 0x28eba3b0
+  offset: 6592
+}
+member {
+  id: 0x07ec5f42
+  name: "buf_finish"
+  type_id: 0x0c7ce901
+  offset: 384
+}
+member {
+  id: 0x11fc468f
+  name: "buf_group"
+  type_id: 0xe8034002
+}
+member {
+  id: 0x5793ee90
+  name: "buf_index"
+  type_id: 0x914dbfdc
+  offset: 528
+}
+member {
+  id: 0x57eaacde
+  name: "buf_index"
+  type_id: 0xe8034002
+}
+member {
+  id: 0xba8f3c01
+  name: "buf_init"
+  type_id: 0x2f3ac5ae
+  offset: 256
+}
+member {
+  id: 0x9c969135
+  name: "buf_len"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x9cb9b85b
+  name: "buf_len"
+  type_id: 0xc9082b19
+  offset: 640
+}
+member {
+  id: 0x11657111
+  name: "buf_list"
+  type_id: 0x3b7c5d08
+}
+member {
+  id: 0x118dc54d
+  name: "buf_list"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0x01dad6f8
+  name: "buf_lock"
+  type_id: 0xf313e71a
+  offset: 128
+}
+member {
+  id: 0x34bad5de
+  name: "buf_mutex"
+  type_id: 0xa7c362b0
+  offset: 2688
+}
+member {
+  id: 0x3c84b9cf
+  name: "buf_nr_pages"
+  type_id: 0xe8034002
+  offset: 144
+}
+member {
+  id: 0xb671e184
+  name: "buf_ops"
+  type_id: 0x3f50ab44
+  offset: 512
+}
+member {
+  id: 0xad93cdd2
+  name: "buf_out_validate"
+  type_id: 0x2f3ac5ae
+  offset: 192
+}
+member {
+  id: 0x40000fa6
+  name: "buf_overrun"
+  type_id: 0x6720d32f
+  offset: 320
+}
+member {
+  id: 0x408101ca
+  name: "buf_overrun"
+  type_id: 0xe62ebf07
+  offset: 320
+}
+member {
+  id: 0xf4931918
+  name: "buf_pages"
+  type_id: 0x0b30ee00
+}
+member {
+  id: 0x2ad2c5fc
+  name: "buf_prepare"
+  type_id: 0x2f3ac5ae
+  offset: 320
+}
+member {
+  id: 0xeb7613c7
+  name: "buf_queue"
+  type_id: 0x0c7ce901
+  offset: 640
+}
+member {
+  id: 0x1b911aea
+  name: "buf_ready_int"
+  type_id: 0x03913382
+  offset: 9792
+}
+member {
+  id: 0x80cd9e46
+  name: "buf_request_complete"
+  type_id: 0x0c7ce901
+  offset: 704
+}
+member {
+  id: 0x0193fe4b
+  name: "buf_ring"
+  type_id: 0x203c0fc1
+  offset: 64
+}
+member {
+  id: 0x44e2ff4b
+  name: "buf_size"
+  type_id: 0xf435685e
+}
+member {
+  id: 0xb0b51417
+  name: "buf_struct_size"
+  type_id: 0x4585663f
+  offset: 672
+}
+member {
+  id: 0x333b1c68
+  name: "buffer"
+  type_id: 0xe51e71ac
+  offset: 128
+}
+member {
+  id: 0x33507050
+  name: "buffer"
+  type_id: 0x8e7b8b93
+}
+member {
+  id: 0x3358d289
+  name: "buffer"
+  type_id: 0x86d95287
+}
+member {
+  id: 0x335a61cc
+  name: "buffer"
+  type_id: 0x846a1700
+}
+member {
+  id: 0x33a6ff3e
+  name: "buffer"
+  type_id: 0x78f4e574
+}
+member {
+  id: 0x33c6bda6
+  name: "buffer"
+  type_id: 0x18bd6530
+  offset: 512
+}
+member {
+  id: 0x33c6bf7c
+  name: "buffer"
+  type_id: 0x18bd6530
+  offset: 128
+}
+member {
+  id: 0x33da883d
+  name: "buffer"
+  type_id: 0x0483e6f8
+}
+member {
+  id: 0x33e6ba8e
+  name: "buffer"
+  type_id: 0x38b368bf
+  offset: 704
+}
+member {
+  id: 0x33f1381b
+  name: "buffer"
+  type_id: 0x2f3288e0
+  offset: 7360
+}
+member {
+  id: 0x33f3f16c
+  name: "buffer"
+  type_id: 0x2dfe56bd
+  offset: 64
+}
+member {
+  id: 0x33f3f58d
+  name: "buffer"
+  type_id: 0x2dfe56bd
+}
+member {
+  id: 0x33f3fc4f
+  name: "buffer"
+  type_id: 0x2dfe56bd
+  offset: 128
+}
+member {
+  id: 0x33fa43fa
+  name: "buffer"
+  type_id: 0x244b9b37
+  offset: 832
+}
+member {
+  id: 0x790ede18
+  name: "buffer_accessing"
+  type_id: 0x74d29cf1
+  offset: 3200
+}
+member {
+  id: 0xc18602c8
+  name: "buffer_attr_list"
+  type_id: 0xd3c80119
+  offset: 768
+}
+member {
+  id: 0xfaa447cc
+  name: "buffer_bytes"
+  type_id: 0x0baa70a7
+  offset: 512
+}
+member {
+  id: 0xfaea6330
+  name: "buffer_bytes"
+  type_id: 0x4585663f
+  offset: 608
+}
+member {
+  id: 0xdcf071ed
+  name: "buffer_bytes_max"
+  type_id: 0xf435685e
+  offset: 896
+}
+member {
+  id: 0xdcf07c8c
+  name: "buffer_bytes_max"
+  type_id: 0xf435685e
+  offset: 320
+}
+member {
+  id: 0xfa0ae022
+  name: "buffer_changed"
+  type_id: 0x4585663f
+  offset: 6400
+  bitsize: 1
+}
+member {
+  id: 0x5a49330e
+  name: "buffer_disabled"
+  type_id: 0x6720d32f
+  offset: 672
+}
+member {
+  id: 0xe22751df
+  name: "buffer_group"
+  type_id: 0xed8451a2
+  offset: 896
+}
+member {
+  id: 0x2bad6d35
+  name: "buffer_iter"
+  type_id: 0x0ea35c49
+  offset: 704
+}
+member {
+  id: 0x9638544d
+  name: "buffer_list"
+  type_id: 0xd3c80119
+  offset: 1472
+}
+member {
+  id: 0x64fe2a90
+  name: "buffer_max_size"
+  type_id: 0x92233392
+  offset: 11520
+}
+member {
+  id: 0x3025b9ec
+  name: "buffer_min_size"
+  type_id: 0x92233392
+  offset: 11456
+}
+member {
+  id: 0x65416df2
+  name: "buffer_mutex"
+  type_id: 0xa7c362b0
+  offset: 2816
+}
+member {
+  id: 0x7c5d72e2
+  name: "buffer_page"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0xcf83e119
+  name: "buffer_percent"
+  type_id: 0x6720d32f
+  offset: 832
+}
+member {
+  id: 0x4d6c8da9
+  name: "buffer_seq"
+  type_id: 0xe8034002
+  offset: 1568
+}
+member {
+  id: 0x305177e3
+  name: "buffer_size"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x3086dc62
+  name: "buffer_size"
+  type_id: 0x92233392
+  offset: 11392
+}
+member {
+  id: 0x3086dd9e
+  name: "buffer_size"
+  type_id: 0x92233392
+  offset: 192
+}
+member {
+  id: 0x30bc04e6
+  name: "buffer_size"
+  type_id: 0xa8fff47c
+  offset: 1088
+}
+member {
+  id: 0x30e0cbff
+  name: "buffer_size"
+  type_id: 0xf435685e
+  offset: 960
+}
+member {
+  id: 0x1e43c0c3
+  name: "buffer_size_max"
+  type_id: 0x0baa70a7
+  offset: 768
+}
+member {
+  id: 0xb9d19e3f
+  name: "buffer_size_min"
+  type_id: 0x0baa70a7
+  offset: 736
+}
+member {
+  id: 0xe613256f
+  name: "buffered"
+  type_id: 0x6d7f5ff6
+  offset: 7144
+}
+member {
+  id: 0xb6a70840
+  name: "bufferram"
+  type_id: 0x21d43a7b
+  offset: 448
+}
+member {
+  id: 0xc052c47f
+  name: "buffers"
+  type_id: 0x0341bd37
+  offset: 640
+}
+member {
+  id: 0xc08242c8
+  name: "buffers"
+  type_id: 0xd3c80119
+  offset: 576
+}
+member {
+  id: 0x803be3e4
+  name: "buffersize"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x7ce1532b
+  name: "buffhds"
+  type_id: 0x3c468c18
+  offset: 1472
+}
+member {
+  id: 0x9d53fbf9
+  name: "buflen"
+  type_id: 0x6720d32f
+  offset: 20704
+}
+member {
+  id: 0xd0323df9
+  name: "bufs"
+  type_id: 0xfd17183f
+}
+member {
+  id: 0xd0e95938
+  name: "bufs"
+  type_id: 0x26795a38
+  offset: 1344
+}
+member {
+  id: 0xd0f7ac86
+  name: "bufs"
+  type_id: 0x3880149e
+  offset: 1792
+}
+member {
+  id: 0xd0fb758b
+  name: "bufs"
+  type_id: 0x3456a883
+  offset: 128
+}
+member {
+  id: 0xdd2ad0dc
+  name: "bufsize"
+  type_id: 0xf435685e
+  offset: 256
+}
+member {
+  id: 0xdd38cf41
+  name: "bufsize"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x12dac63c
+  name: "bug_addr_disp"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xac3eb18a
+  name: "bug_list"
+  type_id: 0xd3c80119
+  offset: 5440
+}
+member {
+  id: 0x3a9e64a8
+  name: "bug_table"
+  type_id: 0x3e4cb008
+  offset: 5568
+}
+member {
+  id: 0xf1cfa7c2
+  name: "bugs"
+  type_id: 0xc93e017b
+  offset: 4832
+}
+member {
+  id: 0xfecd3e2c
+  name: "build_id"
+  type_id: 0xedf277ba
+  offset: 354
+  bitsize: 1
+}
+member {
+  id: 0x98845503
+  name: "bulk_in"
+  type_id: 0x4f77c35e
+  offset: 64
+}
+member {
+  id: 0x98c50225
+  name: "bulk_in"
+  type_id: 0x0e2680c2
+  offset: 1984
+}
+member {
+  id: 0x80e88f85
+  name: "bulk_in_buffer"
+  type_id: 0x1df06cce
+  offset: 4224
+}
+member {
+  id: 0xfd487f6f
+  name: "bulk_in_buffers"
+  type_id: 0x6bd55bd0
+  offset: 4480
+}
+member {
+  id: 0x0bed83d9
+  name: "bulk_in_enabled"
+  type_id: 0x4585663f
+  offset: 1872
+  bitsize: 1
+}
+member {
+  id: 0x1926c096
+  name: "bulk_in_endpointAddress"
+  type_id: 0xb3e7bac9
+  offset: 4416
+}
+member {
+  id: 0x7e50f186
+  name: "bulk_in_size"
+  type_id: 0x6720d32f
+  offset: 4288
+}
+member {
+  id: 0x7ec3e667
+  name: "bulk_in_size"
+  type_id: 0xf435685e
+  offset: 1984
+}
+member {
+  id: 0x1777acfb
+  name: "bulk_move"
+  type_id: 0x19e61d64
+  offset: 3264
+}
+member {
+  id: 0x223191aa
+  name: "bulk_out"
+  type_id: 0x0e2680c2
+  offset: 2048
+}
+member {
+  id: 0x2270ca1d
+  name: "bulk_out"
+  type_id: 0x4f77c35e
+  offset: 1088
+}
+member {
+  id: 0x6fbe0a7f
+  name: "bulk_out_buffer"
+  type_id: 0x1df06cce
+  offset: 4800
+}
+member {
+  id: 0x2b178ab5
+  name: "bulk_out_buffers"
+  type_id: 0x6bd55bd0
+  offset: 5184
+}
+member {
+  id: 0x1c3ca9e4
+  name: "bulk_out_enabled"
+  type_id: 0x4585663f
+  offset: 1873
+  bitsize: 1
+}
+member {
+  id: 0xa1532d41
+  name: "bulk_out_endpointAddress"
+  type_id: 0xb3e7bac9
+  offset: 5504
+}
+member {
+  id: 0xc866f0d4
+  name: "bulk_out_intended_length"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0xf52896f4
+  name: "bulk_out_maxpacket"
+  type_id: 0x4585663f
+  offset: 2880
+}
+member {
+  id: 0x65292cb0
+  name: "bulk_out_size"
+  type_id: 0x6720d32f
+  offset: 4864
+}
+member {
+  id: 0x65ba3b43
+  name: "bulk_out_size"
+  type_id: 0xf435685e
+  offset: 2048
+}
+member {
+  id: 0x460508c0
+  name: "burst"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x46ab24d9
+  name: "burst"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x6b03711b
+  name: "burst_pkt"
+  type_id: 0x92233392
+  offset: 256
+}
+member {
+  id: 0xda382099
+  name: "bus"
+  type_id: 0xe8034002
+  offset: 416
+}
+member {
+  id: 0xda3822f9
+  name: "bus"
+  type_id: 0xe8034002
+}
+member {
+  id: 0xda63b064
+  name: "bus"
+  type_id: 0xb3991470
+  offset: 192
+}
+member {
+  id: 0xda63c471
+  name: "bus"
+  type_id: 0xb3e7bac9
+  offset: 656
+}
+member {
+  id: 0xdab17a81
+  name: "bus"
+  type_id: 0x6152bb0a
+  offset: 96
+}
+member {
+  id: 0xdab6d08e
+  name: "bus"
+  type_id: 0x66fc0cb1
+  offset: 32
+}
+member {
+  id: 0xdad060a0
+  name: "bus"
+  type_id: 0x00447895
+  offset: 17472
+}
+member {
+  id: 0xdad3e0fd
+  name: "bus"
+  type_id: 0x03ce74cd
+  offset: 3200
+}
+member {
+  id: 0xdad3e8d2
+  name: "bus"
+  type_id: 0x03ce74cd
+  offset: 1024
+}
+member {
+  id: 0xdad3eb2c
+  name: "bus"
+  type_id: 0x03ce74cd
+  offset: 64
+}
+member {
+  id: 0xdadaa1d6
+  name: "bus"
+  type_id: 0x0a812782
+  offset: 7360
+}
+member {
+  id: 0xdae080ed
+  name: "bus"
+  type_id: 0x30a3a723
+  offset: 1408
+}
+member {
+  id: 0xdae5fe2a
+  name: "bus"
+  type_id: 0x35d510c3
+  offset: 7296
+}
+member {
+  id: 0xdaedae91
+  name: "bus"
+  type_id: 0x3d8951f4
+  offset: 640
+}
+member {
+  id: 0xdaf321d6
+  name: "bus"
+  type_id: 0x2309ad3e
+  offset: 128
+}
+member {
+  id: 0xdaf32297
+  name: "bus"
+  type_id: 0x2309ad3e
+  offset: 7296
+}
+member {
+  id: 0xdaf32814
+  name: "bus"
+  type_id: 0x2309ad3e
+}
+member {
+  id: 0x1639ef00
+  name: "bus_cleanup"
+  type_id: 0x0e98fdb6
+  offset: 64
+}
+member {
+  id: 0xf94d26a7
+  name: "bus_context"
+  type_id: 0x18bd6530
+  offset: 1472
+}
+member {
+  id: 0x514f04c9
+  name: "bus_dma_limit"
+  type_id: 0x92233392
+  offset: 5440
+}
+member {
+  id: 0xc44b5a83
+  name: "bus_error"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x59128a51
+  name: "bus_family_mask"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0xf5ae8f84
+  name: "bus_flags"
+  type_id: 0xc9082b19
+  offset: 288
+}
+member {
+  id: 0xf5e979ce
+  name: "bus_flags"
+  type_id: 0x8ef19fe7
+  offset: 2448
+}
+member {
+  id: 0x5bb06874
+  name: "bus_formats"
+  type_id: 0x3104c07e
+  offset: 192
+}
+member {
+  id: 0xd82e7b92
+  name: "bus_freq_hz"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x8fc5419b
+  name: "bus_groups"
+  type_id: 0x06433852
+  offset: 192
+}
+member {
+  id: 0x9d901390
+  name: "bus_info"
+  type_id: 0x78356643
+  offset: 384
+}
+member {
+  id: 0x9db2f0c0
+  name: "bus_info"
+  type_id: 0x5adf57ae
+  offset: 960
+}
+member {
+  id: 0x9db2f754
+  name: "bus_info"
+  type_id: 0x5adf57ae
+  offset: 800
+}
+member {
+  id: 0x50429302
+  name: "bus_init"
+  type_id: 0x2dded119
+}
+member {
+  id: 0x1c1fa3ce
+  name: "bus_list"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0x3d9661fa
+  name: "bus_lock"
+  type_id: 0xf7998f6d
+  offset: 320
+}
+member {
+  id: 0xf64ef717
+  name: "bus_lock_flag"
+  type_id: 0x6d7f5ff6
+  offset: 9024
+}
+member {
+  id: 0xeda60a91
+  name: "bus_lock_mutex"
+  type_id: 0xa7c362b0
+  offset: 8640
+}
+member {
+  id: 0xcb53fa2e
+  name: "bus_lock_spinlock"
+  type_id: 0xf313e71a
+  offset: 8576
+}
+member {
+  id: 0xb6309565
+  name: "bus_mA"
+  type_id: 0xc93e017b
+  offset: 11136
+}
+member {
+  id: 0xcb67cf5e
+  name: "bus_match"
+  type_id: 0x2de7e95d
+  offset: 7616
+}
+member {
+  id: 0xe8af03af
+  name: "bus_mode"
+  type_id: 0x5d8155a5
+  offset: 96
+}
+member {
+  id: 0x8c682862
+  name: "bus_name"
+  type_id: 0x2c925e2c
+  offset: 704
+}
+member {
+  id: 0x8c7aa07d
+  name: "bus_name"
+  type_id: 0x3e10b518
+  offset: 192
+}
+member {
+  id: 0x18897274
+  name: "bus_notifier"
+  type_id: 0x9249a64d
+  offset: 2560
+}
+member {
+  id: 0xbc9a0684
+  name: "bus_num"
+  type_id: 0x29bf06ba
+  offset: 7424
+}
+member {
+  id: 0x70428740
+  name: "bus_off"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x95afdab9
+  name: "bus_on"
+  type_id: 0x6d7f5ff6
+  offset: 6304
+}
+member {
+  id: 0xf3753de0
+  name: "bus_ops"
+  type_id: 0x338b6c2e
+  offset: 10944
+}
+member {
+  id: 0x7545cc7a
+  name: "bus_recovery_info"
+  type_id: 0x0591125a
+  offset: 9472
+}
+member {
+  id: 0x931375de
+  name: "bus_regulator"
+  type_id: 0x01ae1e33
+  offset: 9664
+}
+member {
+  id: 0x2a260680
+  name: "bus_resume"
+  type_id: 0x2fa7835a
+  offset: 640
+}
+member {
+  id: 0x2a260a7a
+  name: "bus_resume"
+  type_id: 0x2fa7835a
+  offset: 1344
+}
+member {
+  id: 0xed4f4708
+  name: "bus_state"
+  type_id: 0x6ecc8b58
+  offset: 192
+}
+member {
+  id: 0x919933b5
+  name: "bus_suspend"
+  type_id: 0x2fa7835a
+  offset: 1280
+}
+member {
+  id: 0x91993cba
+  name: "bus_suspend"
+  type_id: 0x2fa7835a
+  offset: 576
+}
+member {
+  id: 0xdda1e12c
+  name: "bus_suspended"
+  type_id: 0x33756485
+}
+member {
+  id: 0xdda1e604
+  name: "bus_suspended"
+  type_id: 0x33756485
+  offset: 4736
+}
+member {
+  id: 0xb6d7d4b7
+  name: "bus_token"
+  type_id: 0x945e7ef6
+  offset: 448
+}
+member {
+  id: 0xb43c45b4
+  name: "bus_width"
+  type_id: 0x5d8155a5
+  offset: 120
+}
+member {
+  id: 0xb43c4ca9
+  name: "bus_width"
+  type_id: 0x5d8155a5
+  offset: 32
+}
+member {
+  id: 0xb4a8c8ec
+  name: "bus_width"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x8bd2d8e0
+  name: "bus_widths"
+  type_id: 0x5d8155a5
+  offset: 32
+}
+member {
+  id: 0xfa427670
+  name: "buses"
+  type_id: 0x8f5ceaee
+  offset: 19328
+}
+member {
+  id: 0x854f5ea0
+  name: "busn_res"
+  type_id: 0xc7736674
+  offset: 1024
+}
+member {
+  id: 0x3c091e3d
+  name: "busnr"
+  type_id: 0x6720d32f
+  offset: 7552
+}
+member {
+  id: 0x0b59345b
+  name: "busnum"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0xb3b001a6
+  name: "bustype"
+  type_id: 0xe8034002
+  offset: 64
+}
+member {
+  id: 0xb3b00547
+  name: "bustype"
+  type_id: 0xe8034002
+}
+member {
+  id: 0xaad5a1e1
+  name: "buswidth"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0xaad5aa07
+  name: "buswidth"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x794ca0b3
+  name: "buswidth_override_bits"
+  type_id: 0xc9082b19
+  offset: 7520
+}
+member {
+  id: 0x60a5cb13
+  name: "busy"
+  type_id: 0x74d29cf1
+  offset: 7488
+}
+member {
+  id: 0x60a5cfd7
+  name: "busy"
+  type_id: 0x74d29cf1
+  offset: 992
+}
+member {
+  id: 0x60bc6a32
+  name: "busy"
+  type_id: 0x6d7f5ff6
+  offset: 1952
+}
+member {
+  id: 0x60bc6d79
+  name: "busy"
+  type_id: 0x6d7f5ff6
+  offset: 10576
+}
+member {
+  id: 0x60e4b862
+  name: "busy"
+  type_id: 0x35ad08a2
+  offset: 960
+}
+member {
+  id: 0x9da75c05
+  name: "busy"
+  type_id: 0x4585663f
+  offset: 2786
+  bitsize: 1
+}
+member {
+  id: 0x32f213f2
+  name: "busy_factor"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0xa708b698
+  name: "busy_hash"
+  type_id: 0x2408766a
+  offset: 1536
+}
+member {
+  id: 0x7cfc1602
+  name: "busy_placement"
+  type_id: 0x3316fc74
+  offset: 192
+}
+member {
+  id: 0x0185484d
+  name: "busy_start_t"
+  type_id: 0x11c404ba
+  offset: 192
+}
+member {
+  id: 0xaeb8643f
+  name: "busy_start_ts"
+  type_id: 0x68d841cd
+  offset: 896
+}
+member {
+  id: 0x48632103
+  name: "busy_time"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xe42c71a2
+  name: "busy_timeout"
+  type_id: 0x4585663f
+  offset: 288
+}
+member {
+  id: 0x2365e313
+  name: "busylock"
+  type_id: 0xf313e71a
+  offset: 2560
+}
+member {
+  id: 0xec7ca176
+  name: "busyloop_timeout"
+  type_id: 0xc9082b19
+  offset: 150816
+}
+member {
+  id: 0xfae9cd27
+  name: "button"
+  type_id: 0xe8034002
+}
+member {
+  id: 0x23237822
+  name: "bv_len"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x21e41bd1
+  name: "bv_offset"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x4ecbf58b
+  name: "bv_page"
+  type_id: 0x06835e9c
+}
+member {
+  id: 0x4e206c34
+  name: "bvec"
+  type_id: 0xc918cb81
+  offset: 256
+}
+member {
+  id: 0x4eb0980b
+  name: "bvec"
+  type_id: 0x59edcd80
+  offset: 384
+}
+member {
+  id: 0x4ed7a847
+  name: "bvec"
+  type_id: 0x3edc1393
+}
+member {
+  id: 0x363a30c7
+  name: "bvec_pool"
+  type_id: 0xe97fe194
+  offset: 768
+}
+member {
+  id: 0x94040e69
+  name: "bw"
+  type_id: 0x08c660f0
+}
+member {
+  id: 0x949eefdb
+  name: "bw"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0x94eae6b6
+  name: "bw"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xe0c9586e
+  name: "bw_config"
+  type_id: 0xc0da94e3
+  offset: 32
+}
+member {
+  id: 0xc99f18bc
+  name: "bw_dwork"
+  type_id: 0xf1159c31
+  offset: 4224
+}
+member {
+  id: 0x07daf4d5
+  name: "bw_endpoint_list"
+  type_id: 0xd3c80119
+  offset: 960
+}
+member {
+  id: 0xc6b63682
+  name: "bw_info"
+  type_id: 0xfd8cc18c
+  offset: 736
+}
+member {
+  id: 0x78a16018
+  name: "bw_period"
+  type_id: 0x295c7202
+  offset: 360
+}
+member {
+  id: 0x7c2f1a44
+  name: "bw_phase"
+  type_id: 0x295c7202
+  offset: 320
+}
+member {
+  id: 0xb20c2eb5
+  name: "bw_ratio"
+  type_id: 0x92233392
+  offset: 704
+}
+member {
+  id: 0x39688293
+  name: "bw_table"
+  type_id: 0x1f58ec61
+  offset: 192
+}
+member {
+  id: 0x397a979d
+  name: "bw_table"
+  type_id: 0x0d4602bf
+  offset: 36032
+}
+member {
+  id: 0x3c1f4d4f
+  name: "bw_time_stamp"
+  type_id: 0x33756485
+  offset: 2048
+}
+member {
+  id: 0xbb474870
+  name: "bw_uperiod"
+  type_id: 0x295c7202
+  offset: 352
+}
+member {
+  id: 0xf56af5c2
+  name: "bw_used"
+  type_id: 0x4585663f
+  offset: 5184
+}
+member {
+  id: 0x8ed5f00a
+  name: "bydst"
+  type_id: 0x49a73111
+  offset: 64
+}
+member {
+  id: 0x8ed5f4eb
+  name: "bydst"
+  type_id: 0x49a73111
+}
+member {
+  id: 0xa10558ca
+  name: "bydst_inexact_list"
+  type_id: 0x49a73111
+  offset: 6400
+}
+member {
+  id: 0x201cc54d
+  name: "bydst_reinsert"
+  type_id: 0x6d7f5ff6
+  offset: 3200
+}
+member {
+  id: 0xcca481cd
+  name: "byidx"
+  type_id: 0x49a73111
+  offset: 192
+}
+member {
+  id: 0xdb28b4a0
+  name: "bypass"
+  type_id: 0x4585663f
+  offset: 193
+  bitsize: 1
+}
+member {
+  id: 0x9131e5e7
+  name: "bypass_addr"
+  type_id: 0x18bd6530
+  offset: 128
+}
+member {
+  id: 0x5d10791f
+  name: "bypass_count"
+  type_id: 0xc9082b19
+  offset: 160
+}
+member {
+  id: 0x39c7d25a
+  name: "bypass_mask"
+  type_id: 0x4585663f
+  offset: 1696
+}
+member {
+  id: 0x98366cfa
+  name: "bypass_reg"
+  type_id: 0x4585663f
+  offset: 1664
+}
+member {
+  id: 0x7ebe7a64
+  name: "bypass_spec_v1"
+  type_id: 0x6d7f5ff6
+  offset: 2080
+}
+member {
+  id: 0x7ebe7bd8
+  name: "bypass_spec_v1"
+  type_id: 0x6d7f5ff6
+  offset: 12936
+}
+member {
+  id: 0xbb7c45b9
+  name: "bypass_spec_v4"
+  type_id: 0x6d7f5ff6
+  offset: 12944
+}
+member {
+  id: 0x179d59e4
+  name: "bypass_val_off"
+  type_id: 0x4585663f
+  offset: 1760
+}
+member {
+  id: 0xf8d687cf
+  name: "bypass_val_on"
+  type_id: 0x4585663f
+  offset: 1728
+}
+member {
+  id: 0x8e484b4f
+  name: "byseq"
+  type_id: 0x49a73111
+  offset: 448
+}
+member {
+  id: 0x78788d38
+  name: "byspi"
+  type_id: 0x49a73111
+  offset: 320
+}
+member {
+  id: 0x0cd10612
+  name: "bysrc"
+  type_id: 0x49a73111
+  offset: 192
+}
+member {
+  id: 0x3caf08ba
+  name: "byte"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0x0e298959
+  name: "byte2"
+  type_id: 0x295c7202
+  offset: 24
+}
+member {
+  id: 0x8ca9477e
+  name: "byte4"
+  type_id: 0x295c7202
+  offset: 32
+}
+member {
+  id: 0xc2eec063
+  name: "byte5"
+  type_id: 0x295c7202
+  offset: 40
+}
+member {
+  id: 0x032e4fc4
+  name: "byte6"
+  type_id: 0x295c7202
+  offset: 48
+}
+member {
+  id: 0xdb212aea
+  name: "byte_align"
+  type_id: 0xf435685e
+  offset: 1216
+}
+member {
+  id: 0xd72d8bb2
+  name: "byte_idx"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x78351206
+  name: "byte_offset"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x597c8910
+  name: "byte_rx"
+  type_id: 0xe62ebf07
+  offset: 256
+}
+member {
+  id: 0x45261f18
+  name: "byte_tx"
+  type_id: 0xe62ebf07
+  offset: 288
+}
+member {
+  id: 0xc47563ba
+  name: "byte_weight"
+  type_id: 0x6720d32f
+  offset: 1472
+}
+member {
+  id: 0x5c14d023
+  name: "bytes"
+  type_id: 0x3a3eb2f9
+  offset: 64
+}
+member {
+  id: 0x5c14d3b5
+  name: "bytes"
+  type_id: 0x3a3eb2f9
+  offset: 448
+}
+member {
+  id: 0x5c14d4c2
+  name: "bytes"
+  type_id: 0x3a3eb2f9
+}
+member {
+  id: 0x5c18a749
+  name: "bytes"
+  type_id: 0x364d39d0
+}
+member {
+  id: 0x5c2e29b4
+  name: "bytes"
+  type_id: 0x00c72527
+  offset: 64
+}
+member {
+  id: 0x5c47fd29
+  name: "bytes"
+  type_id: 0x69175955
+}
+member {
+  id: 0x5c49c320
+  name: "bytes"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0x5c6b6695
+  name: "bytes"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x5ca8a9fd
+  name: "bytes"
+  type_id: 0x86438dd9
+}
+member {
+  id: 0x5cc31807
+  name: "bytes"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x5cdad8df
+  name: "bytes"
+  type_id: 0xf435685e
+  offset: 320
+}
+member {
+  id: 0x4d36c98b
+  name: "bytes_ext_ops"
+  type_id: 0x34334e6d
+  offset: 1088
+}
+member {
+  id: 0x2b8ab3ea
+  name: "bytes_ext_ops_count"
+  type_id: 0x6720d32f
+  offset: 1152
+}
+member {
+  id: 0x4d89ccab
+  name: "bytes_moved"
+  type_id: 0x1c898f28
+  offset: 128
+}
+member {
+  id: 0xdacabd30
+  name: "bytes_out"
+  type_id: 0xe62ebf07
+  offset: 224
+}
+member {
+  id: 0x86692e21
+  name: "bytes_per_data_element"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x3a4df9b6
+  name: "bytes_per_datum"
+  type_id: 0xf435685e
+  offset: 128
+}
+member {
+  id: 0xf2787e23
+  name: "bytes_rx"
+  type_id: 0x3a3eb2f9
+  offset: 512
+}
+member {
+  id: 0x8cf55cde
+  name: "bytes_transferred"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xfa1854d0
+  name: "bytes_tx"
+  type_id: 0x3a3eb2f9
+  offset: 576
+}
+member {
+  id: 0xa1e6aaa4
+  name: "bytes_xfered"
+  type_id: 0x4585663f
+  offset: 224
+}
+member {
+  id: 0xaf125156
+  name: "bytesperline"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0xaf1255af
+  name: "bytesperline"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x69014fb1
+  name: "bytesused"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0x69a2e988
+  name: "bytesused"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x69a2ed69
+  name: "bytesused"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x0f06a755
+  name: "c"
+  type_id: 0x5e1b90c7
+  offset: 256
+}
+member {
+  id: 0x0f677643
+  name: "c"
+  type_id: 0x3fcbf304
+  offset: 1920
+}
+member {
+  id: 0x0f6aa0e9
+  name: "c"
+  type_id: 0x321c87ab
+}
+member {
+  id: 0x0f71eea2
+  name: "c"
+  type_id: 0x295c7202
+  offset: 16
+}
+member {
+  id: 0x0fa4ebff
+  name: "c"
+  type_id: 0xfc5791f4
+}
+member {
+  id: 0x0fdf6e98
+  name: "c"
+  type_id: 0x87d617d1
+  offset: 64
+}
+member {
+  id: 0xf9fd1c53
+  name: "c2c_widget"
+  type_id: 0x6e2ef705
+  offset: 12224
+}
+member {
+  id: 0x13d3c473
+  name: "c45_ids"
+  type_id: 0x89717197
+  offset: 8160
+}
+member {
+  id: 0xe03ef75b
+  name: "c_cc"
+  type_id: 0xf43b4ae0
+  offset: 136
+}
+member {
+  id: 0x125ab112
+  name: "c_cflag"
+  type_id: 0xb5f6a62b
+  offset: 64
+}
+member {
+  id: 0x5e0f463e
+  name: "c_iflag"
+  type_id: 0xb5f6a62b
+}
+member {
+  id: 0x88e8c2ee
+  name: "c_ispeed"
+  type_id: 0x96c0c5e1
+  offset: 288
+}
+member {
+  id: 0x271dc786
+  name: "c_lflag"
+  type_id: 0xb5f6a62b
+  offset: 96
+}
+member {
+  id: 0xe9cc5f1b
+  name: "c_line"
+  type_id: 0x6934ad2c
+  offset: 128
+}
+member {
+  id: 0xe4884498
+  name: "c_node"
+  type_id: 0xd3c80119
+  offset: 256
+}
+member {
+  id: 0x4ec376c9
+  name: "c_oflag"
+  type_id: 0xb5f6a62b
+  offset: 32
+}
+member {
+  id: 0xf7c05dbb
+  name: "c_ospeed"
+  type_id: 0x96c0c5e1
+  offset: 320
+}
+member {
+  id: 0xb5d87eb8
+  name: "c_resolution"
+  type_id: 0x078e3f47
+  offset: 448
+}
+member {
+  id: 0x4c18e92a
+  name: "c_size"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0xc7675c64
+  name: "c_usecs"
+  type_id: 0x295c7202
+  offset: 344
+}
+member {
+  id: 0x84edb721
+  name: "ca_mode"
+  type_id: 0x1253769c
+  offset: 128
+}
+member {
+  id: 0x11ba5fd8
+  name: "ca_name"
+  type_id: 0x3e10b518
+}
+member {
+  id: 0xbd0ef7d7
+  name: "ca_owner"
+  type_id: 0x0b27dc43
+  offset: 64
+}
+member {
+  id: 0x57ee04b9
+  name: "cabac_init_idc"
+  type_id: 0xb3e7bac9
+  offset: 88
+}
+member {
+  id: 0x70e3cba0
+  name: "cable_compliance"
+  type_id: 0x7584e7da
+}
+member {
+  id: 0xa6115f85
+  name: "cable_index"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x3b895e50
+  name: "cable_issue"
+  type_id: 0xf9158ecd
+}
+member {
+  id: 0x7e1376e1
+  name: "cable_test_get_status"
+  type_id: 0x2ef6a48a
+  offset: 3456
+}
+member {
+  id: 0x2330e525
+  name: "cable_test_start"
+  type_id: 0x2ee76b64
+  offset: 3328
+}
+member {
+  id: 0x10a43a25
+  name: "cable_test_tdr_start"
+  type_id: 0x2edf50aa
+  offset: 3392
+}
+member {
+  id: 0x4c3e29cd
+  name: "cables"
+  type_id: 0x2ce527ad
+  offset: 8256
+}
+member {
+  id: 0x54173395
+  name: "cac_start_time"
+  type_id: 0x33756485
+  offset: 2048
+}
+member {
+  id: 0xec7ceeb5
+  name: "cac_started"
+  type_id: 0x6d7f5ff6
+  offset: 2024
+}
+member {
+  id: 0x9b02b0c0
+  name: "cac_time_ms"
+  type_id: 0x4585663f
+  offset: 2112
+}
+member {
+  id: 0x3b3a3484
+  name: "cache"
+  type_id: 0x44ef98e3
+}
+member {
+  id: 0x3b413998
+  name: "cache"
+  type_id: 0x3fe284cc
+}
+member {
+  id: 0x3b4729d9
+  name: "cache"
+  type_id: 0x39f4bcfa
+  offset: 640
+}
+member {
+  id: 0x3b4c6380
+  name: "cache"
+  type_id: 0x32b15eb1
+  offset: 128
+}
+member {
+  id: 0x3b50f609
+  name: "cache"
+  type_id: 0x2e24d7bb
+  offset: 128
+}
+member {
+  id: 0x3b519194
+  name: "cache"
+  type_id: 0x2f4e696d
+  offset: 64
+}
+member {
+  id: 0x3b56b9aa
+  name: "cache"
+  type_id: 0x2862b65b
+}
+member {
+  id: 0x3b66602a
+  name: "cache"
+  type_id: 0x18bd6530
+  offset: 4800
+}
+member {
+  id: 0x3ba69f9d
+  name: "cache"
+  type_id: 0xd84d43be
+  offset: 128
+}
+member {
+  id: 0x08adff49
+  name: "cache_bypass"
+  type_id: 0x6d7f5ff6
+  offset: 4648
+}
+member {
+  id: 0x53cc23d1
+  name: "cache_ctrl"
+  type_id: 0x295c7202
+  offset: 56
+}
+member {
+  id: 0xc56f9caa
+  name: "cache_dirty"
+  type_id: 0x6d7f5ff6
+  offset: 4864
+}
+member {
+  id: 0xe1b6e589
+  name: "cache_enabled"
+  type_id: 0x3658bbe5
+  offset: 704
+}
+member {
+  id: 0x212f2ffe
+  name: "cache_free"
+  type_id: 0x6d7f5ff6
+  offset: 4656
+}
+member {
+  id: 0x10ef1bf4
+  name: "cache_free_slots"
+  type_id: 0xc9082b19
+  offset: 448
+}
+member {
+  id: 0x83cebe61
+  name: "cache_idx"
+  type_id: 0x914dbfdc
+  offset: 2672
+}
+member {
+  id: 0xfd122136
+  name: "cache_line_size"
+  type_id: 0x295c7202
+  offset: 64
+}
+member {
+  id: 0x681316ad
+  name: "cache_lock"
+  type_id: 0xa7c362b0
+  offset: 2560
+}
+member {
+  id: 0x6847c1f3
+  name: "cache_lock"
+  type_id: 0xf313e71a
+  offset: 640
+}
+member {
+  id: 0xfb7d6571
+  name: "cache_lru_list"
+  type_id: 0xd3c80119
+  offset: 512
+}
+member {
+  id: 0xc81cf99a
+  name: "cache_nice_tries"
+  type_id: 0x4585663f
+  offset: 384
+}
+member {
+  id: 0x754cbc72
+  name: "cache_only"
+  type_id: 0x6d7f5ff6
+  offset: 4640
+}
+member {
+  id: 0xc4a4f0cc
+  name: "cache_ops"
+  type_id: 0x3460ff38
+  offset: 4416
+}
+member {
+  id: 0x0d231274
+  name: "cache_order"
+  type_id: 0x4585663f
+  offset: 448
+}
+member {
+  id: 0xad7468a6
+  name: "cache_read"
+  type_id: 0x33756485
+  offset: 320
+}
+member {
+  id: 0x75c2c8a1
+  name: "cache_reader_page"
+  type_id: 0x33b88d23
+  offset: 256
+}
+member {
+  id: 0xd7f13156
+  name: "cache_sgt_mapping"
+  type_id: 0x6d7f5ff6
+}
+member {
+  id: 0xb4e08b8b
+  name: "cache_size"
+  type_id: 0x4585663f
+  offset: 672
+}
+member {
+  id: 0x97d9f4b4
+  name: "cache_size_raw"
+  type_id: 0x4585663f
+  offset: 4512
+}
+member {
+  id: 0xff983583
+  name: "cache_sync"
+  type_id: 0x0e8491e2
+  offset: 1216
+}
+member {
+  id: 0x44f24098
+  name: "cache_type"
+  type_id: 0x605bb988
+  offset: 4480
+}
+member {
+  id: 0x44f24eb7
+  name: "cache_type"
+  type_id: 0x605bb988
+  offset: 1888
+}
+member {
+  id: 0x604e0cc3
+  name: "cache_update"
+  type_id: 0x0e743897
+  offset: 192
+}
+member {
+  id: 0x0e52709d
+  name: "cache_word_size"
+  type_id: 0x4585663f
+  offset: 4544
+}
+member {
+  id: 0x6ff46f9c
+  name: "cached"
+  type_id: 0x0379fcff
+  offset: 704
+}
+member {
+  id: 0x3722f485
+  name: "cached32_node"
+  type_id: 0x0611572c
+  offset: 192
+}
+member {
+  id: 0x77864469
+  name: "cached_cons"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0xd1d2ee12
+  name: "cached_cq_tail"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0xc932e451
+  name: "cached_err"
+  type_id: 0x6720d32f
+  offset: 10816
+}
+member {
+  id: 0xbe4bd0ca
+  name: "cached_itd_list"
+  type_id: 0xd3c80119
+  offset: 3392
+}
+member {
+  id: 0x5f658a34
+  name: "cached_need_wakeup"
+  type_id: 0x295c7202
+  offset: 1696
+}
+member {
+  id: 0xd4933eac
+  name: "cached_node"
+  type_id: 0x0611572c
+  offset: 128
+}
+member {
+  id: 0x3f9371b2
+  name: "cached_peer"
+  type_id: 0xc9082b19
+  offset: 7456
+}
+member {
+  id: 0xed6e7a1a
+  name: "cached_peer_allow_dgram"
+  type_id: 0x6d7f5ff6
+  offset: 7432
+}
+member {
+  id: 0x3339d670
+  name: "cached_power_down_ok"
+  type_id: 0x6d7f5ff6
+  offset: 192
+}
+member {
+  id: 0x6749fe4b
+  name: "cached_power_down_state_idx"
+  type_id: 0x6d7f5ff6
+  offset: 200
+}
+member {
+  id: 0xd450a229
+  name: "cached_prod"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0xd8c78590
+  name: "cached_refs"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xde182d47
+  name: "cached_requested_key"
+  type_id: 0x01a688ae
+  offset: 16896
+}
+member {
+  id: 0xaca8fdae
+  name: "cached_resolved_idx"
+  type_id: 0x4585663f
+  offset: 5120
+}
+member {
+  id: 0xf1a8f1ff
+  name: "cached_rq"
+  type_id: 0x0d30b9c3
+  offset: 256
+}
+member {
+  id: 0xf1bb470d
+  name: "cached_rq"
+  type_id: 0x1e820193
+  offset: 64
+}
+member {
+  id: 0x6ba3f708
+  name: "cached_sitd_list"
+  type_id: 0xd3c80119
+  offset: 3584
+}
+member {
+  id: 0x658d5258
+  name: "cached_sq_head"
+  type_id: 0x4585663f
+  offset: 512
+}
+member {
+  id: 0x54c27d56
+  name: "cached_table"
+  type_id: 0x3ba8f155
+  offset: 9984
+}
+member {
+  id: 0x2755b3ee
+  name: "cached_target_freq"
+  type_id: 0x4585663f
+  offset: 5088
+}
+member {
+  id: 0xadcd7f4f
+  name: "caching"
+  type_id: 0x1f927ee0
+  offset: 128
+}
+member {
+  id: 0xadefe395
+  name: "caching"
+  type_id: 0x3d00a13c
+  offset: 320
+}
+member {
+  id: 0xadefe9b2
+  name: "caching"
+  type_id: 0x3d00a13c
+  offset: 160
+}
+member {
+  id: 0xadefedd1
+  name: "caching"
+  type_id: 0x3d00a13c
+  offset: 96
+}
+member {
+  id: 0x3ec0474f
+  name: "calc_load_active"
+  type_id: 0xfc0e1dbd
+  offset: 27264
+}
+member {
+  id: 0x3a82a56f
+  name: "calc_load_update"
+  type_id: 0x33756485
+  offset: 27200
+}
+member {
+  id: 0x7e1dc95a
+  name: "calc_num_ports"
+  type_id: 0x2c2aca57
+  offset: 2240
+}
+member {
+  id: 0x8d929646
+  name: "calc_sets"
+  type_id: 0x0d9c53e8
+  offset: 256
+}
+member {
+  id: 0x0dd5bde7
+  name: "calcnt"
+  type_id: 0x39470e64
+  offset: 1088
+}
+member {
+  id: 0xf74d75aa
+  name: "calg"
+  type_id: 0x05e80097
+  offset: 2752
+}
+member {
+  id: 0x3d12fa3f
+  name: "calgo"
+  type_id: 0x295c7202
+  offset: 64
+}
+member {
+  id: 0x2196b6c1
+  name: "calgos"
+  type_id: 0xc9082b19
+  offset: 480
+}
+member {
+  id: 0xfb48a583
+  name: "calibrate"
+  type_id: 0x2d4fc86f
+  offset: 640
+}
+member {
+  id: 0x797795d3
+  name: "call_ctx"
+  type_id: 0x273a06ad
+  offset: 960
+}
+member {
+  id: 0x9d89ba25
+  name: "call_get_func_ip"
+  type_id: 0x914dbfdc
+  offset: 28
+  bitsize: 1
+}
+member {
+  id: 0x1433c732
+  name: "call_get_stack"
+  type_id: 0x914dbfdc
+  offset: 27
+  bitsize: 1
+}
+member {
+  id: 0x196a8883
+  name: "call_imm"
+  type_id: 0xd41e888f
+}
+member {
+  id: 0x966c600d
+  name: "call_notify"
+  type_id: 0x4585663f
+  offset: 427
+  bitsize: 1
+}
+member {
+  id: 0x560ee67a
+  name: "callback"
+  type_id: 0xeb1a482b
+  offset: 320
+}
+member {
+  id: 0x56ca47e4
+  name: "callback"
+  type_id: 0x2fb5a9f3
+  offset: 1600
+}
+member {
+  id: 0x56e85bb2
+  name: "callback"
+  type_id: 0x0da985ba
+  offset: 128
+}
+member {
+  id: 0x56e97283
+  name: "callback"
+  type_id: 0x0c897676
+}
+member {
+  id: 0x56eb2a22
+  name: "callback"
+  type_id: 0x0ed1d747
+}
+member {
+  id: 0x56a72054
+  name: "callback_head"
+  type_id: 0xe3222f5b
+  offset: 3008
+}
+member {
+  id: 0x56a722bd
+  name: "callback_head"
+  type_id: 0xe3222f5b
+  offset: 64
+}
+member {
+  id: 0x56a723c3
+  name: "callback_head"
+  type_id: 0xe3222f5b
+  offset: 2176
+}
+member {
+  id: 0x56a72461
+  name: "callback_head"
+  type_id: 0xe3222f5b
+  offset: 704
+}
+member {
+  id: 0x56a72498
+  name: "callback_head"
+  type_id: 0xe3222f5b
+  offset: 1216
+}
+member {
+  id: 0x56a72561
+  name: "callback_head"
+  type_id: 0xe3222f5b
+  offset: 2752
+}
+member {
+  id: 0x56a7265c
+  name: "callback_head"
+  type_id: 0xe3222f5b
+}
+member {
+  id: 0x56a726f7
+  name: "callback_head"
+  type_id: 0xe3222f5b
+  offset: 256
+}
+member {
+  id: 0x56a72714
+  name: "callback_head"
+  type_id: 0xe3222f5b
+  offset: 7360
+}
+member {
+  id: 0x56a72c33
+  name: "callback_head"
+  type_id: 0xe3222f5b
+  offset: 3264
+}
+member {
+  id: 0x56a72d44
+  name: "callback_head"
+  type_id: 0xe3222f5b
+  offset: 512
+}
+member {
+  id: 0x56a72ed6
+  name: "callback_head"
+  type_id: 0xe3222f5b
+  offset: 7552
+}
+member {
+  id: 0x56a72f2e
+  name: "callback_head"
+  type_id: 0xe3222f5b
+  offset: 576
+}
+member {
+  id: 0x0de82081
+  name: "callback_param"
+  type_id: 0x18bd6530
+  offset: 448
+}
+member {
+  id: 0x31e8666a
+  name: "callback_ref"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x146d901e
+  name: "callback_result"
+  type_id: 0x5e5eaa16
+  offset: 384
+}
+member {
+  id: 0x80b475d5
+  name: "callback_ret_range"
+  type_id: 0x2d645042
+  offset: 10752
+}
+member {
+  id: 0x6c6511db
+  name: "callback_subprogno"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x725e9295
+  name: "callbacks"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0xb8d4b30e
+  name: "callchain"
+  type_id: 0x30984542
+  offset: 960
+}
+member {
+  id: 0xe9550bd8
+  name: "caller"
+  type_id: 0x391f15ea
+  offset: 448
+}
+member {
+  id: 0xe95f6e17
+  name: "caller"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0x9dff7ef6
+  name: "callsite"
+  type_id: 0x6720d32f
+  offset: 10560
+}
+member {
+  id: 0x8d14ad13
+  name: "can"
+  type_id: 0x5533923b
+  offset: 30784
+}
+member {
+  id: 0x0ed07ce2
+  name: "can_attach"
+  type_id: 0x2e65e8c2
+  offset: 512
+}
+member {
+  id: 0x72454096
+  name: "can_dlc"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0xe1176b8d
+  name: "can_dma"
+  type_id: 0x3525c695
+  offset: 9344
+}
+member {
+  id: 0xbce47e90
+  name: "can_dma_map_merge"
+  type_id: 0x4585663f
+  offset: 8488
+  bitsize: 1
+}
+member {
+  id: 0x372f6ae9
+  name: "can_dma_sg"
+  type_id: 0x4585663f
+  offset: 960
+  bitsize: 1
+}
+member {
+  id: 0xdf02d1f8
+  name: "can_do_streams"
+  type_id: 0x4585663f
+  offset: 3369
+  bitsize: 1
+}
+member {
+  id: 0xe570259b
+  name: "can_fork"
+  type_id: 0x2c2c19eb
+  offset: 768
+}
+member {
+  id: 0x6dcf9091
+  name: "can_id"
+  type_id: 0x6f23eca1
+}
+member {
+  id: 0x4d829656
+  name: "can_mask"
+  type_id: 0x295c7202
+  offset: 7
+  bitsize: 1
+}
+member {
+  id: 0x0a6ba9e7
+  name: "can_match"
+  type_id: 0x6d7f5ff6
+  offset: 6756
+  bitsize: 1
+}
+member {
+  id: 0xe01291db
+  name: "can_multi_write"
+  type_id: 0x6d7f5ff6
+  offset: 5040
+}
+member {
+  id: 0xe01298ba
+  name: "can_multi_write"
+  type_id: 0x6d7f5ff6
+  offset: 2208
+}
+member {
+  id: 0x41c16dc2
+  name: "can_queue"
+  type_id: 0x4585663f
+  offset: 7808
+}
+member {
+  id: 0x41e3cb13
+  name: "can_queue"
+  type_id: 0x6720d32f
+  offset: 3936
+}
+member {
+  id: 0x41e3cc61
+  name: "can_queue"
+  type_id: 0x6720d32f
+  offset: 2240
+}
+member {
+  id: 0xba15c865
+  name: "can_retune"
+  type_id: 0x4585663f
+  offset: 8483
+  bitsize: 1
+}
+member {
+  id: 0xfbd54991
+  name: "can_sleep"
+  type_id: 0x6d7f5ff6
+  offset: 2496
+}
+member {
+  id: 0xfbd54a38
+  name: "can_sleep"
+  type_id: 0x6d7f5ff6
+  offset: 1472
+}
+member {
+  id: 0xfbd54b53
+  name: "can_sleep"
+  type_id: 0x6d7f5ff6
+  offset: 5376
+}
+member {
+  id: 0x08b93d80
+  name: "can_stall"
+  type_id: 0x384f7d7c
+  offset: 6464
+}
+member {
+  id: 0x71ef5321
+  name: "can_stall"
+  type_id: 0x4585663f
+  offset: 3264
+  bitsize: 1
+}
+member {
+  id: 0xe2943e8a
+  name: "can_stats"
+  type_id: 0x3ae16b59
+  offset: 64
+}
+member {
+  id: 0xd08414b5
+  name: "can_submit"
+  type_id: 0x4585663f
+  offset: 11176
+  bitsize: 1
+}
+member {
+  id: 0x297d1e7e
+  name: "can_swap"
+  type_id: 0x6d7f5ff6
+  offset: 1440
+}
+member {
+  id: 0xd61d73b2
+  name: "can_wakeup"
+  type_id: 0x4585663f
+  offset: 32
+  bitsize: 1
+}
+member {
+  id: 0x8f4d2c19
+  name: "canary"
+  type_id: 0x5d8155a5
+  offset: 4992
+}
+member {
+  id: 0x76799615
+  name: "cancel_attach"
+  type_id: 0x0d23c46d
+  offset: 576
+}
+member {
+  id: 0xba7a8e37
+  name: "cancel_flags"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x747c1f7c
+  name: "cancel_fork"
+  type_id: 0x0f6a3544
+  offset: 832
+}
+member {
+  id: 0x9fa954f5
+  name: "cancel_pkt"
+  type_id: 0x2ca6a571
+  offset: 256
+}
+member {
+  id: 0x50a710ba
+  name: "cancel_seq"
+  type_id: 0x74d29cf1
+  offset: 672
+}
+member {
+  id: 0x50b4ec37
+  name: "cancel_seq"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0xad0591b8
+  name: "cancel_table"
+  type_id: 0xea603000
+  offset: 192
+}
+member {
+  id: 0x125f04d5
+  name: "cancel_table_locked"
+  type_id: 0xea603000
+  offset: 2048
+}
+member {
+  id: 0x283365fe
+  name: "cancel_txn"
+  type_id: 0x0d07014d
+  offset: 1536
+}
+member {
+  id: 0xa05e2162
+  name: "canceling"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0x0108dfc8
+  name: "cancelled_td_list"
+  type_id: 0xd3c80119
+  offset: 384
+}
+member {
+  id: 0xe8121043
+  name: "cancelled_write_bytes"
+  type_id: 0xedf277ba
+  offset: 2112
+}
+member {
+  id: 0xe86dc832
+  name: "cancelled_write_bytes"
+  type_id: 0x92233392
+  offset: 448
+}
+member {
+  id: 0xe33ac34a
+  name: "cant_recv_wakeups"
+  type_id: 0x4585663f
+  offset: 3371
+  bitsize: 1
+}
+member {
+  id: 0x1e22ba34
+  name: "cap"
+  type_id: 0x914dbfdc
+}
+member {
+  id: 0x1e4f6847
+  name: "cap"
+  type_id: 0xfc9f67b9
+  offset: 256
+}
+member {
+  id: 0x1e5572f8
+  name: "cap"
+  type_id: 0xe68e6b4d
+  offset: 512
+}
+member {
+  id: 0x1e63d94a
+  name: "cap"
+  type_id: 0xd023fa96
+  offset: 32
+}
+member {
+  id: 0x1e7af29b
+  name: "cap"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x1e7afb41
+  name: "cap"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x1e8cbef9
+  name: "cap"
+  type_id: 0x3f431b32
+  offset: 8384
+}
+member {
+  id: 0x1e9aa999
+  name: "cap"
+  type_id: 0x295c7202
+  offset: 416
+}
+member {
+  id: 0x1ece4155
+  name: "cap"
+  type_id: 0x7dbd382e
+  offset: 8
+}
+member {
+  id: 0x1ee6d564
+  name: "cap"
+  type_id: 0x5522ef22
+}
+member {
+  id: 0x1ee8397d
+  name: "cap"
+  type_id: 0x5bcdc80b
+  offset: 6088
+}
+member {
+  id: 0xaf875acd
+  name: "cap_____res"
+  type_id: 0xedf277ba
+  offset: 6
+  bitsize: 58
+}
+member {
+  id: 0x6e46a0c6
+  name: "cap_ambient"
+  type_id: 0xd9449876
+  offset: 576
+}
+member {
+  id: 0x456e304f
+  name: "cap_bit0"
+  type_id: 0xedf277ba
+  bitsize: 1
+}
+member {
+  id: 0x54dea509
+  name: "cap_bit0_is_deprecated"
+  type_id: 0xedf277ba
+  offset: 1
+  bitsize: 1
+}
+member {
+  id: 0x38520624
+  name: "cap_bset"
+  type_id: 0xd9449876
+  offset: 512
+}
+member {
+  id: 0x205f1b89
+  name: "cap_cmd_during_tfr"
+  type_id: 0x6d7f5ff6
+  offset: 960
+}
+member {
+  id: 0x1b176c3e
+  name: "cap_effective"
+  type_id: 0xd9449876
+  offset: 448
+}
+member {
+  id: 0x78fafb3d
+  name: "cap_extended"
+  type_id: 0x6d7f5ff6
+  offset: 16
+}
+member {
+  id: 0x20eaca1c
+  name: "cap_info"
+  type_id: 0x9bd401b6
+}
+member {
+  id: 0x5787fb7a
+  name: "cap_inheritable"
+  type_id: 0xd9449876
+  offset: 320
+}
+member {
+  id: 0x52367448
+  name: "cap_link_lanes_supported"
+  type_id: 0xc9082b19
+  bitsize: 1
+}
+member {
+  id: 0x7cb8b76c
+  name: "cap_mask"
+  type_id: 0xa7066cce
+  offset: 576
+}
+member {
+  id: 0x8638adb5
+  name: "cap_nr"
+  type_id: 0x914dbfdc
+}
+member {
+  id: 0xadef84f7
+  name: "cap_permitted"
+  type_id: 0xd9449876
+  offset: 384
+}
+member {
+  id: 0xcb7a3a33
+  name: "cap_q_ctx"
+  type_id: 0x09b350b9
+  offset: 320
+}
+member {
+  id: 0x216b98bf
+  name: "cap_regs"
+  type_id: 0x234757ce
+  offset: 128
+}
+member {
+  id: 0x3985faa1
+  name: "cap_user_rdpmc"
+  type_id: 0xedf277ba
+  offset: 2
+  bitsize: 1
+}
+member {
+  id: 0x032ff299
+  name: "cap_user_time"
+  type_id: 0xedf277ba
+  offset: 3
+  bitsize: 1
+}
+member {
+  id: 0xd6db9eae
+  name: "cap_user_time_short"
+  type_id: 0xedf277ba
+  offset: 5
+  bitsize: 1
+}
+member {
+  id: 0x6c60ee02
+  name: "cap_user_time_zero"
+  type_id: 0xedf277ba
+  offset: 4
+  bitsize: 1
+}
+member {
+  id: 0x6e3344d6
+  name: "capa"
+  type_id: 0x9bd401b6
+}
+member {
+  id: 0xa7510395
+  name: "capabilities"
+  type_id: 0xc9082b19
+  offset: 1088
+}
+member {
+  id: 0xa75106a9
+  name: "capabilities"
+  type_id: 0xc9082b19
+  offset: 11328
+}
+member {
+  id: 0xa75108b0
+  name: "capabilities"
+  type_id: 0xc9082b19
+  offset: 4800
+}
+member {
+  id: 0xa7700cfa
+  name: "capabilities"
+  type_id: 0xe8034002
+  offset: 576
+}
+member {
+  id: 0xa775f4bf
+  name: "capabilities"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0xa77e21f4
+  name: "capabilities"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0xa77e29c7
+  name: "capabilities"
+  type_id: 0xe62ebf07
+  offset: 480
+}
+member {
+  id: 0xa77e2cae
+  name: "capabilities"
+  type_id: 0xe62ebf07
+  offset: 288
+}
+member {
+  id: 0xa77e2e04
+  name: "capabilities"
+  type_id: 0xe62ebf07
+  offset: 1792
+}
+member {
+  id: 0xa77e2f00
+  name: "capabilities"
+  type_id: 0xe62ebf07
+  offset: 448
+}
+member {
+  id: 0xa77e2f36
+  name: "capabilities"
+  type_id: 0xe62ebf07
+  offset: 672
+}
+member {
+  id: 0xa7dd8d71
+  name: "capabilities"
+  type_id: 0x4585663f
+  offset: 544
+}
+member {
+  id: 0xa7ff27ab
+  name: "capabilities"
+  type_id: 0x6720d32f
+  offset: 480
+}
+member {
+  id: 0xd93e1e63
+  name: "capability"
+  type_id: 0x24f58c44
+  offset: 64
+}
+member {
+  id: 0xd9fcc1b1
+  name: "capability"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xd9fcc568
+  name: "capability"
+  type_id: 0xe62ebf07
+  offset: 288
+}
+member {
+  id: 0xd9fcc676
+  name: "capability"
+  type_id: 0xe62ebf07
+  offset: 320
+}
+member {
+  id: 0xd9fcc832
+  name: "capability"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x3773a0c0
+  name: "capable"
+  type_id: 0x35f9166d
+}
+member {
+  id: 0xa72dfd30
+  name: "capacity"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xa75b0d0a
+  name: "capacity"
+  type_id: 0x4585663f
+  offset: 288
+}
+member {
+  id: 0xa779a15d
+  name: "capacity"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0xa779a4af
+  name: "capacity"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0xa7f37e69
+  name: "capacity"
+  type_id: 0xedf277ba
+  offset: 256
+}
+member {
+  id: 0x08377eb2
+  name: "caps"
+  type_id: 0x18f39e86
+  offset: 1536
+}
+member {
+  id: 0x0865089f
+  name: "caps"
+  type_id: 0x4a8e2638
+  offset: 5536
+}
+member {
+  id: 0x0883a927
+  name: "caps"
+  type_id: 0xac292bee
+  offset: 320
+}
+member {
+  id: 0x08e68298
+  name: "caps"
+  type_id: 0xc9082b19
+  offset: 9344
+}
+member {
+  id: 0x08e68d3e
+  name: "caps"
+  type_id: 0xc9082b19
+  offset: 7968
+}
+member {
+  id: 0x08e68f0d
+  name: "caps"
+  type_id: 0xc9082b19
+  offset: 24448
+}
+member {
+  id: 0xae8e9b70
+  name: "caps1"
+  type_id: 0xc9082b19
+  offset: 9376
+}
+member {
+  id: 0xefce55b7
+  name: "caps2"
+  type_id: 0xc9082b19
+  offset: 8000
+}
+member {
+  id: 0x112ab7bd
+  name: "caps_count"
+  type_id: 0x4585663f
+  offset: 7840
+}
+member {
+  id: 0xc3a8c71e
+  name: "capset"
+  type_id: 0x055beb6d
+}
+member {
+  id: 0x8143eeb6
+  name: "capture"
+  type_id: 0x2f9177d3
+  offset: 128
+}
+member {
+  id: 0x8167dfc9
+  name: "capture"
+  type_id: 0x0baa70a7
+  offset: 832
+}
+member {
+  id: 0x818f60b8
+  name: "capture"
+  type_id: 0xe316bb39
+}
+member {
+  id: 0x81e8396e
+  name: "capture"
+  type_id: 0x84487217
+  offset: 1024
+}
+member {
+  id: 0x2cb0dfb7
+  name: "capture_control"
+  type_id: 0x1a73eb90
+  offset: 19520
+}
+member {
+  id: 0x6fc26f08
+  name: "capture_dma_data"
+  type_id: 0x18bd6530
+  offset: 512
+}
+member {
+  id: 0xa8580cd6
+  name: "capture_only"
+  type_id: 0x4585663f
+  offset: 1026
+  bitsize: 1
+}
+member {
+  id: 0x39594d94
+  name: "capture_widget"
+  type_id: 0x0a1edf98
+  offset: 384
+}
+member {
+  id: 0x1cb44c27
+  name: "capturemode"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x6c9f8205
+  name: "card"
+  type_id: 0x33f8b54b
+}
+member {
+  id: 0x6c9f8613
+  name: "card"
+  type_id: 0x33f8b54b
+  offset: 7488
+}
+member {
+  id: 0x6c9f86e4
+  name: "card"
+  type_id: 0x33f8b54b
+  offset: 64
+}
+member {
+  id: 0x6c9f8bc7
+  name: "card"
+  type_id: 0x33f8b54b
+  offset: 128
+}
+member {
+  id: 0x6cae1e30
+  name: "card"
+  type_id: 0x026525e9
+  offset: 9216
+}
+member {
+  id: 0x6cae1f95
+  name: "card"
+  type_id: 0x026525e9
+}
+member {
+  id: 0x6cb56024
+  name: "card"
+  type_id: 0x191de370
+  offset: 448
+}
+member {
+  id: 0x6cb563b2
+  name: "card"
+  type_id: 0x191de370
+  offset: 64
+}
+member {
+  id: 0x6cb567f8
+  name: "card"
+  type_id: 0x191de370
+  offset: 256
+}
+member {
+  id: 0x6cb56f9a
+  name: "card"
+  type_id: 0x191de370
+  offset: 192
+}
+member {
+  id: 0x6cd44614
+  name: "card"
+  type_id: 0x78356643
+  offset: 128
+}
+member {
+  id: 0xb59b47e2
+  name: "card_aux_list"
+  type_id: 0xd3c80119
+  offset: 512
+}
+member {
+  id: 0xfbedbdd0
+  name: "card_busy"
+  type_id: 0x2e9195ef
+  offset: 704
+}
+member {
+  id: 0x1b8748fa
+  name: "card_dev"
+  type_id: 0x23230326
+  offset: 12608
+}
+member {
+  id: 0x354d0d6d
+  name: "card_event"
+  type_id: 0x0d21fdc9
+  offset: 1536
+}
+member {
+  id: 0x354dfb4d
+  name: "card_event"
+  type_id: 0x0dd7b940
+  offset: 1344
+}
+member {
+  id: 0x0d0a8549
+  name: "card_hw_reset"
+  type_id: 0x0dd7b940
+  offset: 1280
+}
+member {
+  id: 0x189e025f
+  name: "card_list"
+  type_id: 0xd3c80119
+  offset: 640
+}
+member {
+  id: 0xe666c75f
+  name: "card_no"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xb623a769
+  name: "carrier"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xa6d57989
+  name: "carrier_down_count"
+  type_id: 0x74d29cf1
+  offset: 4000
+}
+member {
+  id: 0xe8cd9e66
+  name: "carrier_freq"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x59488b26
+  name: "carrier_raised"
+  type_id: 0x2fd17240
+  offset: 3968
+}
+member {
+  id: 0x594b0e58
+  name: "carrier_raised"
+  type_id: 0x2c510476
+}
+member {
+  id: 0x06d60bde
+  name: "carrier_range_lower"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0x07a28f27
+  name: "carrier_range_upper"
+  type_id: 0x4585663f
+  offset: 288
+}
+member {
+  id: 0x0100feb5
+  name: "carrier_report"
+  type_id: 0x4585663f
+  offset: 43
+  bitsize: 1
+}
+member {
+  id: 0x8f74d212
+  name: "carrier_up_count"
+  type_id: 0x74d29cf1
+  offset: 3968
+}
+member {
+  id: 0x97355ee3
+  name: "carveouts"
+  type_id: 0xd3c80119
+  offset: 8512
+}
+member {
+  id: 0x1133d766
+  name: "cat"
+  type_id: 0x86a931f9
+  offset: 64
+}
+member {
+  id: 0xa971e10c
+  name: "catch"
+  type_id: 0xd9ed81e9
+  offset: 256
+}
+member {
+  id: 0x534a05c6
+  name: "cb"
+  type_id: 0xb0d2a582
+  offset: 768
+}
+member {
+  id: 0x534a0d68
+  name: "cb"
+  type_id: 0xb0d2a582
+}
+member {
+  id: 0x53e7b9ea
+  name: "cb"
+  type_id: 0x1d61e0cf
+  offset: 320
+}
+member {
+  id: 0x53f61219
+  name: "cb"
+  type_id: 0x0cc416fe
+  offset: 128
+}
+member {
+  id: 0x361fda1e
+  name: "cb_access"
+  type_id: 0x914dbfdc
+  offset: 19
+  bitsize: 1
+}
+member {
+  id: 0x73e4f5f9
+  name: "cb_attr"
+  type_id: 0x44e665d5
+}
+member {
+  id: 0xd8f42eb6
+  name: "cb_data"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0x3bedd6c3
+  name: "cb_head"
+  type_id: 0xe3222f5b
+  offset: 256
+}
+member {
+  id: 0xb2651d30
+  name: "cb_in"
+  type_id: 0x359df94e
+  offset: 1600
+}
+member {
+  id: 0xa06fe06a
+  name: "cb_list"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0xa06fe161
+  name: "cb_list"
+  type_id: 0xd3c80119
+  offset: 192
+}
+member {
+  id: 0xa06fe903
+  name: "cb_list"
+  type_id: 0xd3c80119
+  offset: 256
+}
+member {
+  id: 0xa06fe9a8
+  name: "cb_list"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0x07685b81
+  name: "cb_list_head"
+  type_id: 0x3e6239e1
+  offset: 576
+}
+member {
+  id: 0x85075b8e
+  name: "cb_lock"
+  type_id: 0x28b9ec9a
+  offset: 768
+}
+member {
+  id: 0x85882167
+  name: "cb_lock"
+  type_id: 0xa7c362b0
+  offset: 192
+}
+member {
+  id: 0xba86d4a3
+  name: "cb_max_size"
+  type_id: 0xf435685e
+  offset: 384
+}
+member {
+  id: 0x6dc5f19d
+  name: "cb_mutex"
+  type_id: 0x2360e10b
+  offset: 128
+}
+member {
+  id: 0xaf33f785
+  name: "cb_out"
+  type_id: 0x359df94e
+  offset: 1920
+}
+member {
+  id: 0x7857660a
+  name: "cb_private"
+  type_id: 0x18bd6530
+  offset: 320
+}
+member {
+  id: 0xd83a0eba
+  name: "cbaser"
+  type_id: 0x92233392
+  offset: 1024
+}
+member {
+  id: 0xd34c00a5
+  name: "cbovldmask"
+  type_id: 0x33756485
+  offset: 704
+}
+member {
+  id: 0x9282e80f
+  name: "cc"
+  type_id: 0x39bbc694
+}
+member {
+  id: 0x92bd71a0
+  name: "cc"
+  type_id: 0x0622699d
+}
+member {
+  id: 0x10853c9d
+  name: "cc1"
+  type_id: 0x361d366b
+  offset: 2048
+}
+member {
+  id: 0xd1459674
+  name: "cc2"
+  type_id: 0x361d366b
+  offset: 2080
+}
+member {
+  id: 0xb695e7ed
+  name: "cc_base"
+  type_id: 0x295c7202
+  offset: 504
+}
+member {
+  id: 0x7008b922
+  name: "cc_ext"
+  type_id: 0x295c7202
+  offset: 248
+}
+member {
+  id: 0xbbeb9df4
+  name: "cc_req"
+  type_id: 0x361d366b
+  offset: 1984
+}
+member {
+  id: 0x2c2e50db
+  name: "cca"
+  type_id: 0x88c59206
+  offset: 1632
+}
+member {
+  id: 0xe2f8a213
+  name: "cca_ed_level"
+  type_id: 0xd41e888f
+  offset: 1792
+}
+member {
+  id: 0xf3fea671
+  name: "cca_ed_levels"
+  type_id: 0x30d5aa47
+  offset: 1408
+}
+member {
+  id: 0xb513cc70
+  name: "cca_ed_levels_size"
+  type_id: 0xf435685e
+  offset: 1280
+}
+member {
+  id: 0x2ddac3e4
+  name: "cca_modes"
+  type_id: 0xc9082b19
+  offset: 1024
+}
+member {
+  id: 0x90cf0603
+  name: "cca_opts"
+  type_id: 0xc9082b19
+  offset: 1056
+}
+member {
+  id: 0x44d8db7d
+  name: "cccr"
+  type_id: 0x3abcce84
+  offset: 11072
+}
+member {
+  id: 0x180c21c0
+  name: "cd_irq"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xcedc3f0d
+  name: "cd_wake_enabled"
+  type_id: 0x6d7f5ff6
+  offset: 32
+}
+member {
+  id: 0x60faf456
+  name: "cdb"
+  type_id: 0x60ca2c23
+  offset: 32
+}
+member {
+  id: 0x058b41dc
+  name: "cdev"
+  type_id: 0x1d4da256
+  offset: 8768
+}
+member {
+  id: 0x0592c107
+  name: "cdev"
+  type_id: 0x04ca9246
+  offset: 16064
+}
+member {
+  id: 0x0592c329
+  name: "cdev"
+  type_id: 0x04ca9246
+  offset: 5632
+}
+member {
+  id: 0x0592ca04
+  name: "cdev"
+  type_id: 0x04ca9246
+  offset: 256
+}
+member {
+  id: 0x0592caaf
+  name: "cdev"
+  type_id: 0x04ca9246
+}
+member {
+  id: 0x05b721de
+  name: "cdev"
+  type_id: 0x21207103
+  offset: 384
+}
+member {
+  id: 0x05b724ad
+  name: "cdev"
+  type_id: 0x21207103
+  offset: 64
+}
+member {
+  id: 0x05c97021
+  name: "cdev"
+  type_id: 0x5f766fc6
+  offset: 1792
+}
+member {
+  id: 0x05c9702b
+  name: "cdev"
+  type_id: 0x5f766fc6
+  offset: 640
+}
+member {
+  id: 0x05c9771a
+  name: "cdev"
+  type_id: 0x5f766fc6
+  offset: 7360
+}
+member {
+  id: 0x05c97885
+  name: "cdev"
+  type_id: 0x5f766fc6
+  offset: 10368
+}
+member {
+  id: 0x05c97a40
+  name: "cdev"
+  type_id: 0x5f766fc6
+  offset: 7424
+}
+member {
+  id: 0x05c97cd1
+  name: "cdev"
+  type_id: 0x5f766fc6
+  offset: 7296
+}
+member {
+  id: 0x05c97fd4
+  name: "cdev"
+  type_id: 0x5f766fc6
+  offset: 5632
+}
+member {
+  id: 0x26c2e5ba
+  name: "cdev_node"
+  type_id: 0xd3c80119
+  offset: 1600
+}
+member {
+  id: 0x98bfd53b
+  name: "cdev_put_on_release"
+  type_id: 0x6d7f5ff6
+  offset: 11456
+}
+member {
+  id: 0x08b57c67
+  name: "cdevs"
+  type_id: 0x0dc35132
+  offset: 64
+}
+member {
+  id: 0x63df01df
+  name: "cdp_max"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0xc3a22176
+  name: "cdp_min"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x12482f1d
+  name: "cdrom"
+  type_id: 0x4585663f
+  offset: 195
+  bitsize: 1
+}
+member {
+  id: 0xe89c1e68
+  name: "cdrom"
+  type_id: 0x384f7d7c
+  offset: 80
+}
+member {
+  id: 0xe8f33fe1
+  name: "cdrom"
+  type_id: 0x576c156c
+  offset: 1280
+}
+member {
+  id: 0x9f7cc1ac
+  name: "cdrom_count"
+  type_id: 0x4585663f
+  offset: 1632
+}
+member {
+  id: 0x1712c7e2
+  name: "ce_count"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0xa03105b3
+  name: "cea861_vic"
+  type_id: 0xb3e7bac9
+  offset: 608
+}
+member {
+  id: 0x8fcf8e86
+  name: "cea_rev"
+  type_id: 0x295c7202
+  offset: 400
+}
+member {
+  id: 0x162d054b
+  name: "cec_adap"
+  type_id: 0x3806390a
+  offset: 1280
+}
+member {
+  id: 0x0019e3db
+  name: "cec_dir"
+  type_id: 0x120540d1
+  offset: 13184
+}
+member {
+  id: 0xa5ba605a
+  name: "cec_follower"
+  type_id: 0x070fb3ab
+  offset: 11584
+}
+member {
+  id: 0x74cab7b3
+  name: "cec_initiator"
+  type_id: 0x070fb3ab
+  offset: 11648
+}
+member {
+  id: 0x11ac4459
+  name: "cec_pin_is_high"
+  type_id: 0x6d7f5ff6
+  offset: 11432
+}
+member {
+  id: 0x3d4e8b76
+  name: "cec_version"
+  type_id: 0xb3e7bac9
+  offset: 48
+}
+member {
+  id: 0xb12baf4b
+  name: "cell_align"
+  type_id: 0xb0312d5a
+  offset: 16
+}
+member {
+  id: 0x21d42898
+  name: "cell_count"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x60842ca1
+  name: "cell_log"
+  type_id: 0x5d8155a5
+}
+member {
+  id: 0xa4292034
+  name: "cell_post_process"
+  type_id: 0x208118b2
+  offset: 832
+}
+member {
+  id: 0xa4292647
+  name: "cell_post_process"
+  type_id: 0x208118b2
+  offset: 8640
+}
+member {
+  id: 0xc909929f
+  name: "cells"
+  type_id: 0x38cec2ca
+  offset: 256
+}
+member {
+  id: 0xc93522de
+  name: "cells"
+  type_id: 0x047e285e
+}
+member {
+  id: 0xc9e29461
+  name: "cells"
+  type_id: 0xd3c80119
+  offset: 8256
+}
+member {
+  id: 0xe2a12db9
+  name: "cells_name"
+  type_id: 0x3e10b518
+}
+member {
+  id: 0x4b510d80
+  name: "center"
+  type_id: 0x007e8ce4
+  offset: 80
+}
+member {
+  id: 0x8dd356ad
+  name: "center_freq"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0xc47918dd
+  name: "center_freq1"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0x82b47f0c
+  name: "center_freq2"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0x3df2e951
+  name: "cert_stat"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0xd4539172
+  name: "cfg"
+  type_id: 0x3da6aaca
+  offset: 75648
+}
+member {
+  id: 0x2463b959
+  name: "cfg0_base"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0xff4e46f9
+  name: "cfg0_io_shared"
+  type_id: 0x6d7f5ff6
+  offset: 1
+  bitsize: 1
+}
+member {
+  id: 0xef5968cc
+  name: "cfg0_size"
+  type_id: 0xc9082b19
+  offset: 192
+}
+member {
+  id: 0x936f82a6
+  name: "cfg_link_an_mode"
+  type_id: 0x295c7202
+  offset: 544
+}
+member {
+  id: 0x01e5f34a
+  name: "cfg_size"
+  type_id: 0x6720d32f
+  offset: 8960
+}
+member {
+  id: 0xe07b1227
+  name: "cflag"
+  type_id: 0x6720d32f
+  offset: 608
+}
+member {
+  id: 0x9608d64b
+  name: "cflags"
+  type_id: 0x295c7202
+  offset: 15392
+}
+member {
+  id: 0xd57ac3a1
+  name: "cfs"
+  type_id: 0x11205055
+  offset: 4096
+}
+member {
+  id: 0x34ac40d7
+  name: "cfs_bandwidth"
+  type_id: 0xed44dd85
+  offset: 3200
+}
+member {
+  id: 0x01788a09
+  name: "cfs_list"
+  type_id: 0xd3c80119
+  offset: 1088
+}
+member {
+  id: 0xabbaf796
+  name: "cfs_rq"
+  type_id: 0x092632cb
+  offset: 1920
+}
+member {
+  id: 0xabbd00a4
+  name: "cfs_rq"
+  type_id: 0x0ed82db2
+  offset: 960
+}
+member {
+  id: 0x49c92b3b
+  name: "cfs_tasks"
+  type_id: 0xd3c80119
+  offset: 24128
+}
+member {
+  id: 0x4b7ae416
+  name: "cfts"
+  type_id: 0xd3c80119
+  offset: 1600
+}
+member {
+  id: 0x5f6579ac
+  name: "cg_children"
+  type_id: 0xd3c80119
+  offset: 640
+}
+member {
+  id: 0x50081034
+  name: "cg_item"
+  type_id: 0x668004f3
+}
+member {
+  id: 0x471db73e
+  name: "cg_list"
+  type_id: 0xd3c80119
+  offset: 20736
+}
+member {
+  id: 0xeebd3379
+  name: "cg_subsys"
+  type_id: 0x00e66585
+  offset: 768
+}
+member {
+  id: 0x6d3eec5f
+  name: "cgroup"
+  type_id: 0x92233392
+  offset: 1472
+}
+member {
+  id: 0x6d8093e0
+  name: "cgroup"
+  type_id: 0x2c5bdc0e
+}
+member {
+  id: 0x6d80a782
+  name: "cgroup"
+  type_id: 0x2c6fbe2c
+}
+member {
+  id: 0x6da50d2a
+  name: "cgroup"
+  type_id: 0x09c1f72c
+  offset: 64
+}
+member {
+  id: 0x6db4695a
+  name: "cgroup"
+  type_id: 0x18a16691
+}
+member {
+  id: 0xa9b54f06
+  name: "cgroup"
+  type_id: 0xedf277ba
+  offset: 352
+  bitsize: 1
+}
+member {
+  id: 0xa417b115
+  name: "cgroup_atype"
+  type_id: 0x6720d32f
+  offset: 7392
+}
+member {
+  id: 0xd0bad40a
+  name: "cgroup_id"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x57dcbe00
+  name: "cgroup_inode_id"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x2baff1a3
+  name: "cgroup_ns"
+  type_id: 0x17a93606
+  offset: 512
+}
+member {
+  id: 0x770343fd
+  name: "cgroup_storage"
+  type_id: 0x6d852410
+  offset: 7424
+}
+member {
+  id: 0x770ebf33
+  name: "cgroup_storage"
+  type_id: 0x6075f8b5
+}
+member {
+  id: 0x41833d9e
+  name: "cgroups"
+  type_id: 0x0d821a01
+  offset: 20672
+}
+member {
+  id: 0x0ddc7cde
+  name: "cgrp"
+  type_id: 0x48c57cd9
+  offset: 128
+}
+member {
+  id: 0xe18161de
+  name: "cgrp_ancestor_storage"
+  type_id: 0x18a16691
+  offset: 13568
+}
+member {
+  id: 0xdb792488
+  name: "cgrp_links"
+  type_id: 0xd3c80119
+  offset: 2496
+}
+member {
+  id: 0x5d91bec1
+  name: "cgtime"
+  type_id: 0x92233392
+  offset: 3776
+}
+member {
+  id: 0x9fb810b3
+  name: "cgw_list"
+  type_id: 0x5e8dc7f4
+  offset: 1344
+}
+member {
+  id: 0x40cb6140
+  name: "cgwb_domain"
+  type_id: 0xb2264c64
+  offset: 15168
+}
+member {
+  id: 0x7bc96ce3
+  name: "cgwb_frn"
+  type_id: 0xa824a6c9
+  offset: 16256
+}
+member {
+  id: 0x016d52cc
+  name: "cgwb_list"
+  type_id: 0xd3c80119
+  offset: 2688
+}
+member {
+  id: 0x016d580f
+  name: "cgwb_list"
+  type_id: 0xd3c80119
+  offset: 15040
+}
+member {
+  id: 0x10280801
+  name: "cgwb_release_mutex"
+  type_id: 0xa7c362b0
+  offset: 8192
+}
+member {
+  id: 0x0167fc83
+  name: "cgwb_tree"
+  type_id: 0x80c20070
+  offset: 8064
+}
+member {
+  id: 0xd0edaa59
+  name: "ch_in"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x2054ca12
+  name: "ch_mode"
+  type_id: 0xe62ebf07
+  offset: 256
+}
+member {
+  id: 0x668253fe
+  name: "ch_out"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x152992ef
+  name: "chain"
+  type_id: 0x5e8dc7f4
+  offset: 64
+}
+member {
+  id: 0x1529960e
+  name: "chain"
+  type_id: 0x5e8dc7f4
+}
+member {
+  id: 0x156d90cd
+  name: "chain"
+  type_id: 0x1a8b04e5
+}
+member {
+  id: 0x156d915f
+  name: "chain"
+  type_id: 0x1a8b04e5
+  offset: 384
+}
+member {
+  id: 0x15798222
+  name: "chain"
+  type_id: 0x0e99eb32
+}
+member {
+  id: 0x15a8845d
+  name: "chain"
+  type_id: 0xdf9f948b
+}
+member {
+  id: 0x085a87a1
+  name: "chain0"
+  type_id: 0x1d0a537d
+  offset: 1664
+}
+member {
+  id: 0x722c6700
+  name: "chain_index"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x20dd8606
+  name: "chain_list"
+  type_id: 0xd3c80119
+  offset: 384
+}
+member {
+  id: 0x9d6ea259
+  name: "chain_node"
+  type_id: 0xd3c80119
+  offset: 960
+}
+member {
+  id: 0x3e2779de
+  name: "chained"
+  type_id: 0x6d7f5ff6
+  offset: 256
+}
+member {
+  id: 0xb465a60b
+  name: "chained_desc"
+  type_id: 0x334927f6
+  offset: 192
+}
+member {
+  id: 0xbb09fda0
+  name: "chaintoolong"
+  type_id: 0x4585663f
+  offset: 384
+}
+member {
+  id: 0x4640bc02
+  name: "chan"
+  type_id: 0xc3202fd8
+}
+member {
+  id: 0x46a8c46b
+  name: "chan"
+  type_id: 0x2b584612
+}
+member {
+  id: 0x46b9c41f
+  name: "chan"
+  type_id: 0x3a583251
+}
+member {
+  id: 0x46b9cddd
+  name: "chan"
+  type_id: 0x3a583251
+  offset: 128
+}
+member {
+  id: 0x46c61039
+  name: "chan"
+  type_id: 0x4585663f
+  offset: 576
+}
+member {
+  id: 0x8f62471e
+  name: "chan_dma_dev"
+  type_id: 0x6d7f5ff6
+  offset: 7392
+}
+member {
+  id: 0x80a4fe76
+  name: "chan_id"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0xebf70950
+  name: "chan_ida"
+  type_id: 0xe1a31370
+  offset: 1024
+}
+member {
+  id: 0xa5f84ac6
+  name: "chan_l"
+  type_id: 0xd3c80119
+  offset: 2944
+}
+member {
+  id: 0xabff6c11
+  name: "chan_list"
+  type_id: 0xd3c80119
+  offset: 4096
+}
+member {
+  id: 0x2fb4d65d
+  name: "chan_lock"
+  type_id: 0xa7c362b0
+  offset: 3072
+}
+member {
+  id: 0xee09adb9
+  name: "chan_name"
+  type_id: 0x3e10b518
+  offset: 192
+}
+member {
+  id: 0x3ac8d3b5
+  name: "chan_names"
+  type_id: 0x632d6da5
+  offset: 320
+}
+member {
+  id: 0x30e9183a
+  name: "chan_policy"
+  type_id: 0xb3e7bac9
+  offset: 512
+}
+member {
+  id: 0xc983e1f2
+  name: "chan_timer"
+  type_id: 0xf1159c31
+  offset: 2176
+}
+member {
+  id: 0xc97ee4f8
+  name: "chan_type"
+  type_id: 0xb3e7bac9
+  offset: 504
+}
+member {
+  id: 0x59c2057b
+  name: "chancnt"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x6fcf0a57
+  name: "chandef"
+  type_id: 0x83d65a6a
+}
+member {
+  id: 0x6fcf0d90
+  name: "chandef"
+  type_id: 0x83d65a6a
+  offset: 320
+}
+member {
+  id: 0x6fcf0eb6
+  name: "chandef"
+  type_id: 0x83d65a6a
+  offset: 64
+}
+member {
+  id: 0x94275ab5
+  name: "change"
+  type_id: 0x914dbfdc
+}
+member {
+  id: 0x94992e00
+  name: "change"
+  type_id: 0x2f3b3749
+  offset: 704
+}
+member {
+  id: 0x9499cbd6
+  name: "change"
+  type_id: 0x2fdd4e21
+  offset: 384
+}
+member {
+  id: 0x949b21ba
+  name: "change"
+  type_id: 0x2d3fc2fb
+  offset: 576
+}
+member {
+  id: 0x266e10fe
+  name: "change_key"
+  type_id: 0x2f8aae7a
+  offset: 128
+}
+member {
+  id: 0x43e8c08e
+  name: "change_mode"
+  type_id: 0x2fbd4bba
+  offset: 256
+}
+member {
+  id: 0x6242a9b1
+  name: "change_protocol"
+  type_id: 0x2dbed6d8
+  offset: 19520
+}
+member {
+  id: 0x83d10832
+  name: "change_pte"
+  type_id: 0x0c166597
+  offset: 256
+}
+member {
+  id: 0x8c70199e
+  name: "change_queue_depth"
+  type_id: 0x2fc0f095
+  offset: 1408
+}
+member {
+  id: 0x0c1f2020
+  name: "change_real_num_tx"
+  type_id: 0x0c1b7d55
+  offset: 896
+}
+member {
+  id: 0x1f721569
+  name: "change_sleep"
+  type_id: 0x03913382
+  offset: 320
+}
+member {
+  id: 0xfdaa824b
+  name: "change_tx_queue_len"
+  type_id: 0x2f5d51fa
+  offset: 832
+}
+member {
+  id: 0x8538850d
+  name: "changeable"
+  type_id: 0x6d7f5ff6
+  offset: 160
+}
+member {
+  id: 0x9ef63f1b
+  name: "changed"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0x9efc66cb
+  name: "changed"
+  type_id: 0x6d7f5ff6
+  offset: 9248
+}
+member {
+  id: 0xcd663e68
+  name: "changed"
+  type_id: 0x4585663f
+  offset: 2785
+  bitsize: 1
+}
+member {
+  id: 0x765ca7db
+  name: "changed_lock"
+  type_id: 0xf313e71a
+  offset: 9216
+}
+member {
+  id: 0x20adec90
+  name: "changed_work"
+  type_id: 0x1f3c8679
+  offset: 7744
+}
+member {
+  id: 0xf28ed126
+  name: "changelink"
+  type_id: 0x2ed83449
+  offset: 640
+}
+member {
+  id: 0xcbb3d59b
+  name: "changes"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x4c7b8ce3
+  name: "channel"
+  type_id: 0xc9082b19
+  offset: 160
+}
+member {
+  id: 0x4c7bbeeb
+  name: "channel"
+  type_id: 0xc93e017b
+  offset: 128
+}
+member {
+  id: 0x4c826b43
+  name: "channel"
+  type_id: 0x30e68a3c
+  offset: 64
+}
+member {
+  id: 0x4c9bd55a
+  name: "channel"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x4cd5a4c0
+  name: "channel"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x4cd5ad02
+  name: "channel"
+  type_id: 0x6720d32f
+  offset: 2496
+}
+member {
+  id: 0x4cf7008a
+  name: "channel"
+  type_id: 0x4585663f
+  offset: 7520
+}
+member {
+  id: 0x4cf705cd
+  name: "channel"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x4cf70b6b
+  name: "channel"
+  type_id: 0x4585663f
+  offset: 7648
+}
+member {
+  id: 0x4cf70e65
+  name: "channel"
+  type_id: 0x4585663f
+  offset: 1184
+}
+member {
+  id: 0x7cc948f8
+  name: "channel2"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0xd132e769
+  name: "channel_allocation"
+  type_id: 0x5d8155a5
+  offset: 192
+}
+member {
+  id: 0xdf19c475
+  name: "channel_mask"
+  type_id: 0x4585663f
+  offset: 288
+}
+member {
+  id: 0xea02d1f4
+  name: "channels"
+  type_id: 0x4585663f
+  offset: 608
+}
+member {
+  id: 0xea02d9cf
+  name: "channels"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0xea02dba0
+  name: "channels"
+  type_id: 0x4585663f
+  offset: 896
+}
+member {
+  id: 0xea1ad535
+  name: "channels"
+  type_id: 0x5d8155a5
+}
+member {
+  id: 0xea1ad9f4
+  name: "channels"
+  type_id: 0x5d8155a5
+  offset: 48
+}
+member {
+  id: 0xea21dae2
+  name: "channels"
+  type_id: 0x668e8237
+}
+member {
+  id: 0xea4cf0cf
+  name: "channels"
+  type_id: 0x0baa70a7
+  offset: 544
+}
+member {
+  id: 0xea6c0c26
+  name: "channels"
+  type_id: 0x2b584612
+}
+member {
+  id: 0xea6e03f4
+  name: "channels"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0xea6e0812
+  name: "channels"
+  type_id: 0x295c7202
+}
+member {
+  id: 0xea77b552
+  name: "channels"
+  type_id: 0x30e68a3c
+  offset: 8320
+}
+member {
+  id: 0xea89b247
+  name: "channels"
+  type_id: 0xceef9f74
+  offset: 1600
+}
+member {
+  id: 0xea9495a3
+  name: "channels"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0x8ca402a4
+  name: "channels_max"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0x8ca4039d
+  name: "channels_max"
+  type_id: 0x4585663f
+  offset: 384
+}
+member {
+  id: 0x8cea246b
+  name: "channels_max"
+  type_id: 0x0baa70a7
+  offset: 576
+}
+member {
+  id: 0x363f38c6
+  name: "channels_min"
+  type_id: 0x4585663f
+  offset: 224
+}
+member {
+  id: 0x36711a2b
+  name: "channels_min"
+  type_id: 0x0baa70a7
+  offset: 544
+}
+member {
+  id: 0x49bb581e
+  name: "chans"
+  type_id: 0x32941b2b
+  offset: 128
+}
+member {
+  id: 0xfdbbc663
+  name: "char_dev"
+  type_id: 0x5f766fc6
+  offset: 7872
+}
+member {
+  id: 0xc600ac94
+  name: "char_per_block"
+  type_id: 0x861a0f9a
+}
+member {
+  id: 0x7313362d
+  name: "charcount"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0xaf77fc55
+  name: "charge_current_max_ua"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xad965b7e
+  name: "charge_full_design_uah"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x99ab36b3
+  name: "charge_restart_voltage_uv"
+  type_id: 0x6720d32f
+  offset: 288
+}
+member {
+  id: 0x4172d4ea
+  name: "charge_safety_timer_minutes"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x0d32eba8
+  name: "charge_term_current_ua"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0x1581fa41
+  name: "charge_voltage_max_uv"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x04f8f40a
+  name: "charger_detect"
+  type_id: 0x33fb178b
+  offset: 2752
+}
+member {
+  id: 0x48e610c3
+  name: "charging_blink_full_solid_trig"
+  type_id: 0x0e6ba6f7
+  offset: 9984
+}
+member {
+  id: 0x78b5fada
+  name: "charging_blink_full_solid_trig_name"
+  type_id: 0x0483e6f8
+  offset: 10048
+}
+member {
+  id: 0x879c1fbd
+  name: "charging_full_trig"
+  type_id: 0x0e6ba6f7
+  offset: 9472
+}
+member {
+  id: 0xca83f146
+  name: "charging_full_trig_name"
+  type_id: 0x0483e6f8
+  offset: 9536
+}
+member {
+  id: 0xdcc71d26
+  name: "charging_trig"
+  type_id: 0x0e6ba6f7
+  offset: 9600
+}
+member {
+  id: 0xd4522649
+  name: "charging_trig_name"
+  type_id: 0x0483e6f8
+  offset: 9664
+}
+member {
+  id: 0xd08d5830
+  name: "chars_in_buffer"
+  type_id: 0x3bc90e1f
+  offset: 3328
+}
+member {
+  id: 0xd08d5d4d
+  name: "chars_in_buffer"
+  type_id: 0x3bc90e1f
+  offset: 704
+}
+member {
+  id: 0x9e156774
+  name: "check"
+  type_id: 0xd1f94ea7
+  offset: 80
+}
+member {
+  id: 0x9e156a2a
+  name: "check"
+  type_id: 0xd1f94ea7
+  offset: 128
+}
+member {
+  id: 0x9e3a03cd
+  name: "check"
+  type_id: 0xfe996b2d
+}
+member {
+  id: 0x9ee7ba34
+  name: "check"
+  type_id: 0x23295076
+  offset: 128
+}
+member {
+  id: 0x9ee98b88
+  name: "check"
+  type_id: 0x2d19e791
+  offset: 192
+}
+member {
+  id: 0x8372d25d
+  name: "check_bandwidth"
+  type_id: 0x2faaffbd
+  offset: 320
+}
+member {
+  id: 0x8372dbd8
+  name: "check_bandwidth"
+  type_id: 0x2faaffbd
+  offset: 2112
+}
+member {
+  id: 0x68e21a91
+  name: "check_config"
+  type_id: 0x2fa652dc
+  offset: 896
+}
+member {
+  id: 0x2afab2be
+  name: "check_connect"
+  type_id: 0x2d2c9ff4
+  offset: 384
+}
+member {
+  id: 0xca196e18
+  name: "check_contaminant"
+  type_id: 0x0d20d38c
+  offset: 1472
+}
+member {
+  id: 0xca1b9694
+  name: "check_contaminant"
+  type_id: 0x0fd41724
+  offset: 512
+}
+member {
+  id: 0x9a06e741
+  name: "check_cq"
+  type_id: 0x33756485
+  offset: 3712
+}
+member {
+  id: 0xb077c1ce
+  name: "check_events"
+  type_id: 0x3b70706d
+  offset: 448
+}
+member {
+  id: 0x442a4047
+  name: "check_fb"
+  type_id: 0x2ec3152f
+  offset: 192
+}
+member {
+  id: 0xf8601164
+  name: "check_flags"
+  type_id: 0x2b820c5e
+  offset: 1408
+}
+member {
+  id: 0x987465ac
+  name: "check_period"
+  type_id: 0x2cbec2a2
+  offset: 2304
+}
+member {
+  id: 0xf0380373
+  name: "check_preempt_curr"
+  type_id: 0x0c4d6f90
+  offset: 320
+}
+member {
+  id: 0x37597850
+  name: "check_pres_timer"
+  type_id: 0xd298e888
+  offset: 8384
+}
+member {
+  id: 0x44cb2b5e
+  name: "check_pres_work"
+  type_id: 0x1f3c8679
+  offset: 8832
+}
+member {
+  id: 0x10a71e1e
+  name: "check_presence"
+  type_id: 0x2db26b70
+  offset: 640
+}
+member {
+  id: 0x693803cc
+  name: "check_quota_file"
+  type_id: 0x2ff9c73d
+}
+member {
+  id: 0x2bcb3610
+  name: "check_sense"
+  type_id: 0x139300cd
+  offset: 256
+}
+member {
+  id: 0x666c167f
+  name: "checkreqprot"
+  type_id: 0x6d7f5ff6
+  offset: 8
+}
+member {
+  id: 0x2a729a89
+  name: "checksum"
+  type_id: 0x295c7202
+  offset: 1016
+}
+member {
+  id: 0xbddcf5c5
+  name: "chg_bits"
+  type_id: 0xb914bfab
+  offset: 1472
+}
+member {
+  id: 0x85f5483d
+  name: "chg_cur"
+  type_id: 0xe545a74a
+  offset: 1280
+}
+member {
+  id: 0x7ac5b6a8
+  name: "chg_propval"
+  type_id: 0xb4693ee8
+  offset: 1248
+}
+member {
+  id: 0xb7447353
+  name: "chg_state"
+  type_id: 0x53c98416
+  offset: 1248
+}
+member {
+  id: 0x6501f0a9
+  name: "chg_type"
+  type_id: 0xdbbf4145
+  offset: 1216
+}
+member {
+  id: 0x841775ec
+  name: "chg_work"
+  type_id: 0x1f3c8679
+  offset: 1536
+}
+member {
+  id: 0x38ccdb4a
+  name: "child"
+  type_id: 0x042bd90b
+  offset: 64
+}
+member {
+  id: 0x38f3bfe5
+  name: "child"
+  type_id: 0x3b4ce03a
+  offset: 448
+}
+member {
+  id: 0x38fc8f82
+  name: "child"
+  type_id: 0x347303b4
+  offset: 960
+}
+member {
+  id: 0x38ffbb67
+  name: "child"
+  type_id: 0x3747dc62
+  offset: 192
+}
+member {
+  id: 0x8a099700
+  name: "child_count"
+  type_id: 0x74d29cf1
+  offset: 1952
+}
+member {
+  id: 0x8a620f4b
+  name: "child_count"
+  type_id: 0x1f4573ef
+  offset: 1472
+}
+member {
+  id: 0xff650164
+  name: "child_irq_domain_ops"
+  type_id: 0xda154dec
+  offset: 512
+}
+member {
+  id: 0x7e5cba3e
+  name: "child_links"
+  type_id: 0xd3c80119
+  offset: 9472
+}
+member {
+  id: 0x783b9f6a
+  name: "child_list"
+  type_id: 0xd3c80119
+  offset: 4992
+}
+member {
+  id: 0x6cd09595
+  name: "child_mutex"
+  type_id: 0xa7c362b0
+  offset: 4608
+}
+member {
+  id: 0x19578fc7
+  name: "child_node"
+  type_id: 0x49a73111
+  offset: 1472
+}
+member {
+  id: 0x19cde9e5
+  name: "child_node"
+  type_id: 0xd3c80119
+  offset: 2112
+}
+member {
+  id: 0x76511bd1
+  name: "child_ns_type"
+  type_id: 0x09840c73
+  offset: 192
+}
+member {
+  id: 0x48bb0b53
+  name: "child_offset_to_irq"
+  type_id: 0x38ed0788
+  offset: 448
+}
+member {
+  id: 0x77ef9537
+  name: "child_ops"
+  type_id: 0x070c84c2
+  offset: 7424
+}
+member {
+  id: 0xcd6379b5
+  name: "child_reaper"
+  type_id: 0x1d19a9d5
+  offset: 384
+}
+member {
+  id: 0xf50648d5
+  name: "child_to_parent_hwirq"
+  type_id: 0x2c3fa2e5
+  offset: 320
+}
+member {
+  id: 0xef46876d
+  name: "child_total_time_enabled"
+  type_id: 0x1f4573ef
+  offset: 4480
+}
+member {
+  id: 0x61ca5ef6
+  name: "child_total_time_running"
+  type_id: 0x1f4573ef
+  offset: 4544
+}
+member {
+  id: 0x25410095
+  name: "children"
+  type_id: 0xeb923a9b
+  offset: 64
+}
+member {
+  id: 0x257951de
+  name: "children"
+  type_id: 0xd3c80119
+  offset: 3072
+}
+member {
+  id: 0x25795339
+  name: "children"
+  type_id: 0xd3c80119
+  offset: 1088
+}
+member {
+  id: 0x25795686
+  name: "children"
+  type_id: 0xd3c80119
+  offset: 192
+}
+member {
+  id: 0x257957bc
+  name: "children"
+  type_id: 0xd3c80119
+  offset: 2240
+}
+member {
+  id: 0x25795beb
+  name: "children"
+  type_id: 0xd3c80119
+  offset: 12928
+}
+member {
+  id: 0x25795fdd
+  name: "children"
+  type_id: 0xd3c80119
+  offset: 384
+}
+member {
+  id: 0x259ee1ac
+  name: "children"
+  type_id: 0x347303b4
+  offset: 64
+}
+member {
+  id: 0x25f4197a
+  name: "children"
+  type_id: 0x5e8dc7f4
+  offset: 1408
+}
+member {
+  id: 0x7d657f67
+  name: "children_low_usage"
+  type_id: 0xb02b353a
+  offset: 832
+}
+member {
+  id: 0x4f77e82c
+  name: "children_min_usage"
+  type_id: 0xb02b353a
+  offset: 640
+}
+member {
+  id: 0xc643d626
+  name: "chip"
+  type_id: 0x21e5ca8a
+}
+member {
+  id: 0xc643deef
+  name: "chip"
+  type_id: 0x21e5ca8a
+  offset: 192
+}
+member {
+  id: 0xc643dfe4
+  name: "chip"
+  type_id: 0x21e5ca8a
+  offset: 128
+}
+member {
+  id: 0xc646ae62
+  name: "chip"
+  type_id: 0x24954792
+  offset: 192
+}
+member {
+  id: 0xc6545d0c
+  name: "chip"
+  type_id: 0x366f4294
+  offset: 2560
+}
+member {
+  id: 0xc6785d4f
+  name: "chip"
+  type_id: 0x1a6ea392
+}
+member {
+  id: 0xc67ad98d
+  name: "chip"
+  type_id: 0x18e64f74
+  offset: 8576
+}
+member {
+  id: 0xc67adc61
+  name: "chip"
+  type_id: 0x18e64f74
+  offset: 128
+}
+member {
+  id: 0xc6cfe420
+  name: "chip"
+  type_id: 0xadd7ccb6
+}
+member {
+  id: 0xc6fa2a23
+  name: "chip"
+  type_id: 0x9819cf84
+}
+member {
+  id: 0x50c82005
+  name: "chip_data"
+  type_id: 0x18bd6530
+  offset: 256
+}
+member {
+  id: 0x50c8213c
+  name: "chip_data"
+  type_id: 0x18bd6530
+  offset: 384
+}
+member {
+  id: 0x50c82867
+  name: "chip_data"
+  type_id: 0x18bd6530
+  offset: 192
+}
+member {
+  id: 0xb681e609
+  name: "chip_ready"
+  type_id: 0x4585663f
+  offset: 352
+}
+member {
+  id: 0x951e9a43
+  name: "chip_select"
+  type_id: 0x295c7202
+  offset: 7456
+}
+member {
+  id: 0x956a4afe
+  name: "chip_select"
+  type_id: 0x5d8155a5
+  offset: 104
+}
+member {
+  id: 0x27578761
+  name: "chip_types"
+  type_id: 0xeb21f1bb
+  offset: 1024
+}
+member {
+  id: 0x7ec34a49
+  name: "chmap"
+  type_id: 0x377127f9
+  offset: 192
+}
+member {
+  id: 0x7ed53ea4
+  name: "chmap"
+  type_id: 0x2105ad7e
+  offset: 768
+}
+member {
+  id: 0x19316439
+  name: "chmap_kctl"
+  type_id: 0x2b8f13b3
+  offset: 256
+}
+member {
+  id: 0x697fbc8c
+  name: "chrdev"
+  type_id: 0x5f766fc6
+  offset: 7360
+}
+member {
+  id: 0xc31fd43b
+  name: "chroma"
+  type_id: 0x831ee327
+}
+member {
+  id: 0x6be1b617
+  name: "chroma_format"
+  type_id: 0xb3e7bac9
+  offset: 80
+}
+member {
+  id: 0xb61cc1cc
+  name: "chroma_format_idc"
+  type_id: 0xb3e7bac9
+  offset: 192
+}
+member {
+  id: 0xb61cc43e
+  name: "chroma_format_idc"
+  type_id: 0xb3e7bac9
+  offset: 32
+}
+member {
+  id: 0xf1a35880
+  name: "chroma_intra_quantiser_matrix"
+  type_id: 0x1f52e925
+  offset: 1024
+}
+member {
+  id: 0x73280af0
+  name: "chroma_log2_weight_denom"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0x67de2239
+  name: "chroma_non_intra_quantiser_matrix"
+  type_id: 0x1f52e925
+  offset: 1536
+}
+member {
+  id: 0x0d86c143
+  name: "chroma_offset"
+  type_id: 0x4fe13007
+  offset: 2048
+}
+member {
+  id: 0xc7a255c7
+  name: "chroma_offset_l0"
+  type_id: 0x5e18785f
+  offset: 512
+}
+member {
+  id: 0x89639c56
+  name: "chroma_offset_l1"
+  type_id: 0x5e18785f
+  offset: 1280
+}
+member {
+  id: 0x76164601
+  name: "chroma_qp_index_offset"
+  type_id: 0x901eaf6a
+  offset: 64
+}
+member {
+  id: 0x1aa8bace
+  name: "chroma_weight"
+  type_id: 0x4fe13007
+  offset: 1024
+}
+member {
+  id: 0xa6537f8a
+  name: "chromakey"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0x0c0ce1e9
+  name: "chunk_mask"
+  type_id: 0x92233392
+  offset: 1344
+}
+member {
+  id: 0x050e515a
+  name: "chunk_sectors"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0x8c9871b9
+  name: "chunk_shift"
+  type_id: 0xc9082b19
+  offset: 1632
+}
+member {
+  id: 0x8e3e30a0
+  name: "chunk_size"
+  type_id: 0xc9082b19
+  offset: 160
+}
+member {
+  id: 0x8e3e34f8
+  name: "chunk_size"
+  type_id: 0xc9082b19
+  offset: 1600
+}
+member {
+  id: 0x8e82bd41
+  name: "chunk_size"
+  type_id: 0x7584e7da
+  offset: 112
+}
+member {
+  id: 0x8ec4400f
+  name: "chunk_size"
+  type_id: 0x33756485
+}
+member {
+  id: 0xa90ffb4b
+  name: "chunks"
+  type_id: 0xc9082b19
+  offset: 192
+}
+member {
+  id: 0xa9153749
+  name: "chunks"
+  type_id: 0xd3c80119
+  offset: 64
+}
+member {
+  id: 0xa9153a6a
+  name: "chunks"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0xa9efa589
+  name: "chunks"
+  type_id: 0x295c7202
+  offset: 40
+}
+member {
+  id: 0x8c9ba386
+  name: "chunksize"
+  type_id: 0x4585663f
+  offset: 448
+}
+member {
+  id: 0x8c9ba691
+  name: "chunksize"
+  type_id: 0x4585663f
+  offset: 416
+}
+member {
+  id: 0x5173269c
+  name: "ci_dentry"
+  type_id: 0x120540d1
+  offset: 576
+}
+member {
+  id: 0x04d04048
+  name: "ci_direct_key"
+  type_id: 0x25c2b7b5
+  offset: 512
+}
+member {
+  id: 0x701e5162
+  name: "ci_dirhash_key"
+  type_id: 0x4edec64c
+  offset: 576
+}
+member {
+  id: 0x52ef44ad
+  name: "ci_dirhash_key_initialized"
+  type_id: 0x6d7f5ff6
+  offset: 704
+}
+member {
+  id: 0x0534711c
+  name: "ci_enc_key"
+  type_id: 0x985efc75
+}
+member {
+  id: 0xa3eb84f4
+  name: "ci_entry"
+  type_id: 0xd3c80119
+  offset: 256
+}
+member {
+  id: 0x31c02a0f
+  name: "ci_group"
+  type_id: 0x32c156ea
+  offset: 448
+}
+member {
+  id: 0x30339ddb
+  name: "ci_hashed_ino"
+  type_id: 0xc9082b19
+  offset: 1056
+}
+member {
+  id: 0x796f533e
+  name: "ci_inlinecrypt"
+  type_id: 0x6d7f5ff6
+  offset: 136
+}
+member {
+  id: 0x4025e474
+  name: "ci_inode"
+  type_id: 0x1b8590a8
+  offset: 256
+}
+member {
+  id: 0xf8a051b9
+  name: "ci_kref"
+  type_id: 0x6f1daf87
+  offset: 224
+}
+member {
+  id: 0xee6c5106
+  name: "ci_master_key"
+  type_id: 0x2786bbc8
+  offset: 320
+}
+member {
+  id: 0xf9682f85
+  name: "ci_master_key_link"
+  type_id: 0xd3c80119
+  offset: 384
+}
+member {
+  id: 0x5e6a6d58
+  name: "ci_mode"
+  type_id: 0x3b47fa59
+  offset: 192
+}
+member {
+  id: 0x7572328d
+  name: "ci_name"
+  type_id: 0x0483e6f8
+}
+member {
+  id: 0xebb6586c
+  name: "ci_namebuf"
+  type_id: 0x19ce8000
+  offset: 64
+}
+member {
+  id: 0xd4003068
+  name: "ci_nonce"
+  type_id: 0x4664de11
+  offset: 904
+}
+member {
+  id: 0x81f8c824
+  name: "ci_owns_key"
+  type_id: 0x6d7f5ff6
+  offset: 128
+}
+member {
+  id: 0x67c70c20
+  name: "ci_parent"
+  type_id: 0x1330389b
+  offset: 384
+}
+member {
+  id: 0xbbfbff74
+  name: "ci_policy"
+  type_id: 0xb1b25547
+  offset: 712
+}
+member {
+  id: 0x675f2e77
+  name: "ci_type"
+  type_id: 0x3ab47ff9
+  offset: 512
+}
+member {
+  id: 0xa2988a51
+  name: "cia_decrypt"
+  type_id: 0x0f295ab9
+  offset: 192
+}
+member {
+  id: 0x7c36c1c8
+  name: "cia_encrypt"
+  type_id: 0x0f295ab9
+  offset: 128
+}
+member {
+  id: 0x732d77f8
+  name: "cia_max_keysize"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xb6ab8a37
+  name: "cia_min_keysize"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xc31f7053
+  name: "cia_setkey"
+  type_id: 0x2c5718f8
+  offset: 64
+}
+member {
+  id: 0x6c35f016
+  name: "cid"
+  type_id: 0xe8034002
+  offset: 8
+}
+member {
+  id: 0x6c74541a
+  name: "cid"
+  type_id: 0xa9acd9db
+  offset: 8608
+}
+member {
+  id: 0x6c987304
+  name: "cid"
+  type_id: 0x4585663f
+  offset: 8704
+}
+member {
+  id: 0xad517abc
+  name: "cig"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0x89ac81ab
+  name: "cinblock"
+  type_id: 0x33756485
+  offset: 4672
+}
+member {
+  id: 0xcd2ef056
+  name: "cipher"
+  type_id: 0x6e9ab2f8
+}
+member {
+  id: 0xff4e7105
+  name: "cipher_str"
+  type_id: 0x3e10b518
+  offset: 64
+}
+member {
+  id: 0x3af84580
+  name: "cipher_suites"
+  type_id: 0x3104c07e
+  offset: 1280
+}
+member {
+  id: 0xcf891492
+  name: "cis"
+  type_id: 0xae13575f
+  offset: 11168
+}
+member {
+  id: 0xcf94e1f3
+  name: "cis"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0x1d349c4a
+  name: "cisco"
+  type_id: 0x1ca9538a
+}
+member {
+  id: 0xc995a488
+  name: "cl"
+  type_id: 0x14fe2ad8
+  offset: 128
+}
+member {
+  id: 0x62437f46
+  name: "cl_ops"
+  type_id: 0x388aeada
+  offset: 64
+}
+member {
+  id: 0x6f1c2112
+  name: "claim_cnt"
+  type_id: 0x6720d32f
+  offset: 9536
+}
+member {
+  id: 0x557d4c35
+  name: "claimed"
+  type_id: 0x4585663f
+  offset: 8481
+  bitsize: 1
+}
+member {
+  id: 0xca5668d0
+  name: "claimed"
+  type_id: 0x4585663f
+  offset: 59264
+}
+member {
+  id: 0xca7e9251
+  name: "claimed"
+  type_id: 0x6d7f5ff6
+  offset: 352
+}
+member {
+  id: 0xac60d5d1
+  name: "claimer"
+  type_id: 0x09ca1cbc
+  offset: 9472
+}
+member {
+  id: 0x1103ebfd
+  name: "clash_resolve"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x8604d701
+  name: "class"
+  type_id: 0x4585663f
+  offset: 544
+}
+member {
+  id: 0x8604d9de
+  name: "class"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x8604dd3f
+  name: "class"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x8604de8e
+  name: "class"
+  type_id: 0x4585663f
+  offset: 1472
+}
+member {
+  id: 0x861cd3d7
+  name: "class"
+  type_id: 0x5d8155a5
+  offset: 7456
+}
+member {
+  id: 0x86589574
+  name: "class"
+  type_id: 0x19c00e70
+  offset: 128
+}
+member {
+  id: 0x866b17a4
+  name: "class"
+  type_id: 0x2a4c6b85
+  offset: 448
+}
+member {
+  id: 0x866b1911
+  name: "class"
+  type_id: 0x2a4c6b85
+  offset: 128
+}
+member {
+  id: 0x866b1a2e
+  name: "class"
+  type_id: 0x2a4c6b85
+  offset: 6336
+}
+member {
+  id: 0x866b1acd
+  name: "class"
+  type_id: 0x2a4c6b85
+  offset: 4544
+}
+member {
+  id: 0x867229dc
+  name: "class"
+  type_id: 0x33756485
+}
+member {
+  id: 0x868853e4
+  name: "class"
+  type_id: 0xc9082b19
+  offset: 448
+}
+member {
+  id: 0x86a77bc5
+  name: "class"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0x86f2bb02
+  name: "class"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0xfb91ea35
+  name: "class0_bit"
+  type_id: 0x4050ae51
+  offset: 200
+}
+member {
+  id: 0x241d1940
+  name: "class0_fr"
+  type_id: 0x7460d163
+  offset: 376
+}
+member {
+  id: 0x83a6e820
+  name: "class0_hp"
+  type_id: 0x4050ae51
+  offset: 520
+}
+member {
+  id: 0x0a04a764
+  name: "class_dev"
+  type_id: 0x23230326
+  offset: 64
+}
+member {
+  id: 0x201a9113
+  name: "class_flag"
+  type_id: 0x6720d32f
+  offset: 5568
+}
+member {
+  id: 0xc36c86d7
+  name: "class_groups"
+  type_id: 0x06433852
+  offset: 128
+}
+member {
+  id: 0x1938b35e
+  name: "class_id"
+  type_id: 0x4585663f
+  offset: 274
+  bitsize: 6
+}
+member {
+  id: 0xefcfbc4c
+  name: "class_mask"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0xff51833e
+  name: "class_release"
+  type_id: 0x0c12eb7b
+  offset: 448
+}
+member {
+  id: 0x3ebbdd01
+  name: "class_val_to_struct"
+  type_id: 0x0cbe24dc
+  offset: 2176
+}
+member {
+  id: 0x742a7c0e
+  name: "classes"
+  type_id: 0x7a6db264
+  offset: 40
+}
+member {
+  id: 0x5671f35c
+  name: "classid"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x5671f962
+  name: "classid"
+  type_id: 0xc9082b19
+  offset: 544
+}
+member {
+  id: 0x843ed5b2
+  name: "classify"
+  type_id: 0x2d9b0dd0
+  offset: 256
+}
+member {
+  id: 0x843edcdb
+  name: "classify"
+  type_id: 0x2d9b0dd0
+  offset: 128
+}
+member {
+  id: 0x21497d95
+  name: "clean_table"
+  type_id: 0x3ba8f155
+  offset: 9920
+}
+member {
+  id: 0x350a8baf
+  name: "cleancache_poolid"
+  type_id: 0x6720d32f
+  offset: 9088
+}
+member {
+  id: 0x200c257e
+  name: "cleanup"
+  type_id: 0x0f9a2667
+  offset: 9280
+}
+member {
+  id: 0x200c5c7a
+  name: "cleanup"
+  type_id: 0x0fe90dc6
+  offset: 128
+}
+member {
+  id: 0x200cc91f
+  name: "cleanup"
+  type_id: 0x0f72ddf9
+  offset: 448
+}
+member {
+  id: 0x200d2ca5
+  name: "cleanup"
+  type_id: 0x0e996219
+  offset: 576
+}
+member {
+  id: 0x200ef958
+  name: "cleanup"
+  type_id: 0x0d4c9f4f
+  offset: 576
+}
+member {
+  id: 0x200fb526
+  name: "cleanup"
+  type_id: 0x0c06ce3c
+  offset: 16960
+}
+member {
+  id: 0x200fe4e2
+  name: "cleanup"
+  type_id: 0x0c59c5c5
+  offset: 384
+}
+member {
+  id: 0x963d804e
+  name: "cleanup_done"
+  type_id: 0x3fcbf304
+  offset: 704
+}
+member {
+  id: 0x963d840a
+  name: "cleanup_done"
+  type_id: 0x3fcbf304
+  offset: 640
+}
+member {
+  id: 0x85261434
+  name: "cleanup_fb"
+  type_id: 0x0f2acb59
+  offset: 64
+}
+member {
+  id: 0x852767ea
+  name: "cleanup_fb"
+  type_id: 0x0e5c6698
+  offset: 384
+}
+member {
+  id: 0xe1482e9d
+  name: "cleanup_list"
+  type_id: 0x214d9bc0
+  offset: 512
+}
+member {
+  id: 0x40ef084e
+  name: "cleanup_rq"
+  type_id: 0x0f5e0dda
+  offset: 896
+}
+member {
+  id: 0xaf3186db
+  name: "cleanup_work"
+  type_id: 0x1f3c8679
+  offset: 128
+}
+member {
+  id: 0x482b7339
+  name: "cleanup_writeback_job"
+  type_id: 0x0c6d167e
+  offset: 576
+}
+member {
+  id: 0x05fcd8fb
+  name: "clear_ack"
+  type_id: 0x4585663f
+  offset: 613
+  bitsize: 1
+}
+member {
+  id: 0x39ab848c
+  name: "clear_bar"
+  type_id: 0x0fe7f509
+  offset: 128
+}
+member {
+  id: 0x8b1dacca
+  name: "clear_child_tid"
+  type_id: 0x13580d6c
+  offset: 14464
+}
+member {
+  id: 0x2d61ef43
+  name: "clear_event_idx"
+  type_id: 0x0f7dbeee
+  offset: 2816
+}
+member {
+  id: 0xe32eadd5
+  name: "clear_flush_young"
+  type_id: 0x2f509af6
+  offset: 64
+}
+member {
+  id: 0x0d593536
+  name: "clear_list"
+  type_id: 0xd3c80119
+  offset: 256
+}
+member {
+  id: 0x2e5f7f2b
+  name: "clear_off_tu"
+  type_id: 0xec2499ed
+  offset: 192
+}
+member {
+  id: 0x9e0df399
+  name: "clear_on_free"
+  type_id: 0x4585663f
+  offset: 321
+  bitsize: 1
+}
+member {
+  id: 0x05723160
+  name: "clear_on_unmask"
+  type_id: 0x4585663f
+  offset: 618
+  bitsize: 1
+}
+member {
+  id: 0xbb507998
+  name: "clear_retrain_link"
+  type_id: 0x4585663f
+  offset: 1345
+  bitsize: 1
+}
+member {
+  id: 0xb15452a6
+  name: "clear_sequence"
+  type_id: 0xe62ebf07
+  offset: 1120
+}
+member {
+  id: 0xd28cca77
+  name: "clear_status"
+  type_id: 0x4585663f
+  offset: 3648
+  bitsize: 1
+}
+member {
+  id: 0x50872346
+  name: "clear_to_send"
+  type_id: 0x2defe71a
+  offset: 576
+}
+member {
+  id: 0xf7fc18fc
+  name: "clear_trace"
+  type_id: 0x6d7f5ff6
+  offset: 800
+}
+member {
+  id: 0x6fa2005a
+  name: "clear_tt_buffer_complete"
+  type_id: 0x0ce23619
+  offset: 1664
+}
+member {
+  id: 0x9c2756e0
+  name: "clear_tu"
+  type_id: 0xec2499ed
+  offset: 1280
+}
+member {
+  id: 0xf3fecb5a
+  name: "clear_work"
+  type_id: 0x1f3c8679
+  offset: 384
+}
+member {
+  id: 0xf2531964
+  name: "clear_young"
+  type_id: 0x2f509af6
+  offset: 128
+}
+member {
+  id: 0xf225f799
+  name: "cleared"
+  type_id: 0x33756485
+  offset: 512
+}
+member {
+  id: 0xcb96bab0
+  name: "clearing"
+  type_id: 0x4585663f
+  offset: 704
+}
+member {
+  id: 0x49c42b4e
+  name: "clearing_tt"
+  type_id: 0x4585663f
+  offset: 1089
+  bitsize: 1
+}
+member {
+  id: 0x8519930d
+  name: "client"
+  type_id: 0x26f04e6e
+}
+member {
+  id: 0x852035b1
+  name: "client"
+  type_id: 0x1f56f2cc
+}
+member {
+  id: 0x853226c6
+  name: "client"
+  type_id: 0x0d458514
+}
+member {
+  id: 0x8536119d
+  name: "client"
+  type_id: 0x0972de29
+}
+member {
+  id: 0x858f4a67
+  name: "client"
+  type_id: 0xb02924b2
+}
+member {
+  id: 0x2aadfa64
+  name: "client_count"
+  type_id: 0x6720d32f
+  offset: 640
+}
+member {
+  id: 0x7300aecc
+  name: "client_data"
+  type_id: 0x18bd6530
+  offset: 3456
+}
+member {
+  id: 0xa9f3f07b
+  name: "client_ops"
+  type_id: 0x3443caef
+  offset: 1536
+}
+member {
+  id: 0x0fac4d77
+  name: "clientlist"
+  type_id: 0xd3c80119
+  offset: 2816
+}
+member {
+  id: 0x9c413902
+  name: "clientlist_mutex"
+  type_id: 0xa7c362b0
+  offset: 2432
+}
+member {
+  id: 0x1bbcf6b9
+  name: "clients"
+  type_id: 0xd3c80119
+  offset: 2048
+}
+member {
+  id: 0x1fcc68e0
+  name: "clipcount"
+  type_id: 0xe62ebf07
+  offset: 256
+}
+member {
+  id: 0x7a2292e8
+  name: "clips"
+  type_id: 0x39a83127
+  offset: 128
+}
+member {
+  id: 0x7a2a5bd0
+  name: "clips"
+  type_id: 0x31600266
+  offset: 192
+}
+member {
+  id: 0xc833c104
+  name: "clk"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0xc8e82058
+  name: "clk"
+  type_id: 0x3dcee85d
+  offset: 192
+}
+member {
+  id: 0xc8e82237
+  name: "clk"
+  type_id: 0x3dcee85d
+  offset: 896
+}
+member {
+  id: 0xc8e8261a
+  name: "clk"
+  type_id: 0x3dcee85d
+  offset: 2880
+}
+member {
+  id: 0xc8e8283a
+  name: "clk"
+  type_id: 0x3dcee85d
+  offset: 256
+}
+member {
+  id: 0xc8e82891
+  name: "clk"
+  type_id: 0x3dcee85d
+}
+member {
+  id: 0xc8e82c70
+  name: "clk"
+  type_id: 0x3dcee85d
+  offset: 64
+}
+member {
+  id: 0xc8e82d19
+  name: "clk"
+  type_id: 0x3dcee85d
+  offset: 2432
+}
+member {
+  id: 0x675c7697
+  name: "clk_count"
+  type_id: 0x6720d32f
+  offset: 2944
+}
+member {
+  id: 0x334bc297
+  name: "clk_gating"
+  type_id: 0x0b23097c
+  offset: 22080
+}
+member {
+  id: 0x19964093
+  name: "clk_gating_wait_us"
+  type_id: 0xc9082b19
+  offset: 160
+}
+member {
+  id: 0x53ca75d2
+  name: "clk_gating_workq"
+  type_id: 0x13f8b706
+  offset: 2240
+}
+member {
+  id: 0x36da2546
+  name: "clk_list_head"
+  type_id: 0xd3c80119
+  offset: 21376
+}
+member {
+  id: 0x8c5120d6
+  name: "clk_miss"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xb953c842
+  name: "clk_mul"
+  type_id: 0x4585663f
+  offset: 6208
+}
+member {
+  id: 0x7589f455
+  name: "clk_names"
+  type_id: 0x3e75499e
+}
+member {
+  id: 0x37291a4b
+  name: "clk_per_slice"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x6681a48b
+  name: "clk_perf_tbl"
+  type_id: 0x064d6086
+  offset: 320
+}
+member {
+  id: 0xca0c69fe
+  name: "clk_post"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x3c24cb61
+  name: "clk_pre"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x863c614d
+  name: "clk_prepare"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0xb3a0b5b7
+  name: "clk_scale_notify"
+  type_id: 0x2de1ef0b
+  offset: 256
+}
+member {
+  id: 0x15668869
+  name: "clk_scaling"
+  type_id: 0xe1c039c0
+  offset: 24576
+}
+member {
+  id: 0x14fb0afb
+  name: "clk_scaling_lock"
+  type_id: 0x28b9ec9a
+  offset: 26880
+}
+member {
+  id: 0x384a60cf
+  name: "clk_settle"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x5b36ec0a
+  name: "clk_term_en"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0x91839f80
+  name: "clk_trail"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0x27ea9b53
+  name: "clk_zero"
+  type_id: 0x4585663f
+  offset: 224
+}
+member {
+  id: 0x0413f3fc
+  name: "clkevt"
+  type_id: 0x668debad
+  offset: 512
+}
+member {
+  id: 0x0fb4f072
+  name: "clkpm_capable"
+  type_id: 0xc9082b19
+  offset: 423
+  bitsize: 1
+}
+member {
+  id: 0xed903fed
+  name: "clkpm_default"
+  type_id: 0xc9082b19
+  offset: 425
+  bitsize: 1
+}
+member {
+  id: 0xd0399579
+  name: "clkpm_disable"
+  type_id: 0xc9082b19
+  offset: 426
+  bitsize: 1
+}
+member {
+  id: 0xf74fa943
+  name: "clkpm_enabled"
+  type_id: 0xc9082b19
+  offset: 424
+  bitsize: 1
+}
+member {
+  id: 0x08afcd7c
+  name: "clks"
+  type_id: 0x05e383b0
+  offset: 2816
+}
+member {
+  id: 0x08f4a5ea
+  name: "clks"
+  type_id: 0x5e8dc7f4
+  offset: 1600
+}
+member {
+  id: 0x5f036ab2
+  name: "clks_node"
+  type_id: 0x49a73111
+  offset: 448
+}
+member {
+  id: 0x45282b3d
+  name: "clock"
+  type_id: 0xe62ebf07
+  offset: 3680
+}
+member {
+  id: 0x45282d0d
+  name: "clock"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x45282e69
+  name: "clock"
+  type_id: 0xe62ebf07
+  offset: 6688
+}
+member {
+  id: 0x455c2030
+  name: "clock"
+  type_id: 0x92233392
+  offset: 22144
+}
+member {
+  id: 0x458b86d4
+  name: "clock"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x458b8711
+  name: "clock"
+  type_id: 0x4585663f
+  offset: 6240
+}
+member {
+  id: 0x458ff930
+  name: "clock"
+  type_id: 0x41fa8278
+}
+member {
+  id: 0x459380da
+  name: "clock"
+  type_id: 0x5d8155a5
+  offset: 704
+}
+member {
+  id: 0x459382e7
+  name: "clock"
+  type_id: 0x5d8155a5
+}
+member {
+  id: 0x45a92361
+  name: "clock"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x45baa7d0
+  name: "clock"
+  type_id: 0x74a21f82
+  offset: 1280
+}
+member {
+  id: 0x45d163b1
+  name: "clock"
+  type_id: 0x1f66cd75
+  offset: 7872
+}
+member {
+  id: 0x45d166c5
+  name: "clock"
+  type_id: 0x1f66cd75
+  offset: 832
+}
+member {
+  id: 0x02bda3cf
+  name: "clock_accuracy"
+  type_id: 0xe8034002
+  offset: 3712
+}
+member {
+  id: 0x5f8d8a58
+  name: "clock_adjtime"
+  type_id: 0x2c557718
+  offset: 64
+}
+member {
+  id: 0x3e2fe4e8
+  name: "clock_base"
+  type_id: 0xeec04f87
+  offset: 512
+}
+member {
+  id: 0xf2f8a067
+  name: "clock_gated"
+  type_id: 0xb3e7bac9
+  offset: 96
+}
+member {
+  id: 0x2498089a
+  name: "clock_getres"
+  type_id: 0x2c5a1fd7
+  offset: 192
+}
+member {
+  id: 0xc5b258e4
+  name: "clock_gettime"
+  type_id: 0x2c5a1fd7
+  offset: 128
+}
+member {
+  id: 0xf61c4f9f
+  name: "clock_id"
+  type_id: 0x6720d32f
+  offset: 736
+}
+member {
+  id: 0xf3568319
+  name: "clock_identity"
+  type_id: 0xfebaf136
+}
+member {
+  id: 0xb0b7dd6b
+  name: "clock_idle"
+  type_id: 0x92233392
+  offset: 22848
+}
+member {
+  id: 0xd0e9d82f
+  name: "clock_inv"
+  type_id: 0x5d8155a5
+  bitsize: 1
+}
+member {
+  id: 0xdb605a62
+  name: "clock_lane"
+  type_id: 0x5d8155a5
+  offset: 96
+}
+member {
+  id: 0xdb605eda
+  name: "clock_lane"
+  type_id: 0x5d8155a5
+  offset: 32
+}
+member {
+  id: 0x0b7fad3a
+  name: "clock_latency_ns"
+  type_id: 0x33756485
+  offset: 512
+}
+member {
+  id: 0x6a0b142c
+  name: "clock_latency_ns_max"
+  type_id: 0x33756485
+  offset: 1600
+}
+member {
+  id: 0x8109584f
+  name: "clock_list"
+  type_id: 0xd3c80119
+  offset: 512
+}
+member {
+  id: 0x78f951e7
+  name: "clock_mode"
+  type_id: 0xb3e7bac9
+  offset: 32
+}
+member {
+  id: 0xecfef29a
+  name: "clock_mutex"
+  type_id: 0xa7c362b0
+  offset: 128
+}
+member {
+  id: 0x1a3d8018
+  name: "clock_op_might_sleep"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x93f95db4
+  name: "clock_pelt"
+  type_id: 0x92233392
+  offset: 22656
+}
+member {
+  id: 0x82823fd0
+  name: "clock_pelt_idle"
+  type_id: 0x92233392
+  offset: 22784
+}
+member {
+  id: 0xf0ecb91e
+  name: "clock_rate"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x62a690da
+  name: "clock_ref"
+  type_id: 0x277e5e23
+  offset: 128
+}
+member {
+  id: 0x137ecae6
+  name: "clock_ref_list"
+  type_id: 0xd3c80119
+  offset: 2624
+}
+member {
+  id: 0xcabf01dc
+  name: "clock_settime"
+  type_id: 0x2c60e579
+  offset: 256
+}
+member {
+  id: 0x9b86b60a
+  name: "clock_task"
+  type_id: 0x92233392
+  offset: 22528
+}
+member {
+  id: 0xe157d22b
+  name: "clock_task_mult"
+  type_id: 0x92233392
+  offset: 22592
+}
+member {
+  id: 0xa7c3d9a4
+  name: "clock_type"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x7ce691f5
+  name: "clock_update_flags"
+  type_id: 0x4585663f
+  offset: 22080
+}
+member {
+  id: 0x7ce69736
+  name: "clock_update_flags"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xad4aa733
+  name: "clock_was_set_seq"
+  type_id: 0x4585663f
+  offset: 288
+}
+member {
+  id: 0xad4aaa69
+  name: "clock_was_set_seq"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x2f37024d
+  name: "clockid"
+  type_id: 0x0faae5b1
+  offset: 736
+}
+member {
+  id: 0x2f7cd756
+  name: "clockid"
+  type_id: 0x4478ba6b
+  offset: 96
+}
+member {
+  id: 0x2f7cded5
+  name: "clockid"
+  type_id: 0x4478ba6b
+}
+member {
+  id: 0xcf60e1c3
+  name: "cloned"
+  type_id: 0xb3e7bac9
+  offset: 1008
+  bitsize: 1
+}
+member {
+  id: 0xcd5c3449
+  name: "close"
+  type_id: 0x2fc4c761
+  offset: 320
+}
+member {
+  id: 0xcd5e1e91
+  name: "close"
+  type_id: 0x2de1113a
+  offset: 192
+}
+member {
+  id: 0xcd5e8ab2
+  name: "close"
+  type_id: 0x2d775d88
+  offset: 896
+}
+member {
+  id: 0xcd5f0f6e
+  name: "close"
+  type_id: 0x2cf2c077
+  offset: 1536
+}
+member {
+  id: 0xcd5f483d
+  name: "close"
+  type_id: 0x2cbb953f
+  offset: 64
+}
+member {
+  id: 0xcd5f73ef
+  name: "close"
+  type_id: 0x2c8534d8
+  offset: 384
+}
+member {
+  id: 0xcd5fd921
+  name: "close"
+  type_id: 0x2c2c3c2e
+  offset: 50496
+}
+member {
+  id: 0xcd7c1df7
+  name: "close"
+  type_id: 0x0fea155c
+  offset: 256
+}
+member {
+  id: 0xcd7c4c4f
+  name: "close"
+  type_id: 0x0fb2015e
+  offset: 3840
+}
+member {
+  id: 0xcd7c5dd4
+  name: "close"
+  type_id: 0x0fa1856e
+  offset: 512
+}
+member {
+  id: 0xcd7c6929
+  name: "close"
+  type_id: 0x0f9e60f8
+}
+member {
+  id: 0xcd7d27d8
+  name: "close"
+  type_id: 0x0ed6e282
+  offset: 19648
+}
+member {
+  id: 0xcd7d6536
+  name: "close"
+  type_id: 0x0e996219
+  offset: 1856
+}
+member {
+  id: 0xcd7d7492
+  name: "close"
+  type_id: 0x0e837004
+  offset: 256
+}
+member {
+  id: 0xcd7d97e1
+  name: "close"
+  type_id: 0x0e6861a8
+  offset: 192
+}
+member {
+  id: 0xcd7de4b1
+  name: "close"
+  type_id: 0x0e1719d7
+  offset: 64
+}
+member {
+  id: 0xcd7edc4f
+  name: "close"
+  type_id: 0x0d22c400
+  offset: 128
+}
+member {
+  id: 0xcd7f6f7d
+  name: "close"
+  type_id: 0x0c975eef
+  offset: 2816
+}
+member {
+  id: 0xcd7fa645
+  name: "close"
+  type_id: 0x0c59c5c5
+  offset: 192
+}
+member {
+  id: 0xcd7fb6cd
+  name: "close"
+  type_id: 0x0c412faf
+  offset: 256
+}
+member {
+  id: 0xa72401bb
+  name: "close_delay"
+  type_id: 0xc93e017b
+  offset: 256
+}
+member {
+  id: 0xa7a8bd37
+  name: "close_delay"
+  type_id: 0x4585663f
+  offset: 3328
+}
+member {
+  id: 0x6103d166
+  name: "close_delayed_work_func"
+  type_id: 0x0ee0e2a3
+  offset: 13696
+}
+member {
+  id: 0x55708755
+  name: "close_list"
+  type_id: 0xd3c80119
+  offset: 896
+}
+member {
+  id: 0x44f57bef
+  name: "close_on_exec"
+  type_id: 0x064d6086
+  offset: 128
+}
+member {
+  id: 0x1aac0c74
+  name: "close_on_exec_init"
+  type_id: 0xb914bfab
+  offset: 1088
+}
+member {
+  id: 0x6cd776a7
+  name: "close_wait"
+  type_id: 0x03913382
+  offset: 5888
+}
+member {
+  id: 0x74c81385
+  name: "close_work"
+  type_id: 0xf1159c31
+  offset: 10176
+}
+member {
+  id: 0xef258c05
+  name: "close_work_scheduled"
+  type_id: 0x6d7f5ff6
+  offset: 11264
+}
+member {
+  id: 0x49829993
+  name: "closing"
+  type_id: 0x6720d32f
+  offset: 5888
+}
+member {
+  id: 0xf6799578
+  name: "closing_wait"
+  type_id: 0xc93e017b
+  offset: 320
+}
+member {
+  id: 0xf6f526db
+  name: "closing_wait"
+  type_id: 0x4585663f
+  offset: 3360
+}
+member {
+  id: 0x254b3af6
+  name: "closing_wait2"
+  type_id: 0xc93e017b
+  offset: 336
+}
+member {
+  id: 0xc5f943f1
+  name: "cls"
+  type_id: 0xe62ebf07
+  offset: 192
+}
+member {
+  id: 0xc3eed6d0
+  name: "cls_msk"
+  type_id: 0xe62ebf07
+  offset: 224
+}
+member {
+  id: 0x9dfd1276
+  name: "cluster"
+  type_id: 0x07944f4b
+  offset: 320
+}
+member {
+  id: 0x86cfd07d
+  name: "cluster_id"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x7e7f8e15
+  name: "cluster_info"
+  type_id: 0x1d7d5df2
+  offset: 704
+}
+member {
+  id: 0x6755cf0e
+  name: "cluster_next"
+  type_id: 0x4585663f
+  offset: 1024
+}
+member {
+  id: 0xebca4c47
+  name: "cluster_next_cpu"
+  type_id: 0x1bf16028
+  offset: 1088
+}
+member {
+  id: 0x956344f0
+  name: "cluster_nr"
+  type_id: 0x4585663f
+  offset: 1056
+}
+member {
+  id: 0xbb52f704
+  name: "cluster_sibling"
+  type_id: 0x1c04d361
+  offset: 256
+}
+member {
+  id: 0x38bc9c37
+  name: "cma_area"
+  type_id: 0x1023f4f6
+  offset: 5824
+}
+member {
+  id: 0xd226c8d1
+  name: "cma_pages"
+  type_id: 0x33756485
+  offset: 1216
+}
+member {
+  id: 0x3f843523
+  name: "cmaj_flt"
+  type_id: 0x33756485
+  offset: 4480
+}
+member {
+  id: 0x1a6919d6
+  name: "cmap"
+  type_id: 0xff60db3e
+  offset: 320
+}
+member {
+  id: 0x1a691bdb
+  name: "cmap"
+  type_id: 0xff60db3e
+  offset: 4864
+}
+member {
+  id: 0xaa2a2b81
+  name: "cmask"
+  type_id: 0x4585663f
+  offset: 4128
+}
+member {
+  id: 0xa5e33ed7
+  name: "cmaxrss"
+  type_id: 0x33756485
+  offset: 4864
+}
+member {
+  id: 0x1a0cebf8
+  name: "cmd"
+  type_id: 0x1c3dbe5a
+  offset: 192
+}
+member {
+  id: 0x1a29c57b
+  name: "cmd"
+  type_id: 0x391f15ea
+  offset: 64
+}
+member {
+  id: 0x1a2e13d9
+  name: "cmd"
+  type_id: 0x3ecd56ee
+}
+member {
+  id: 0x1a2ec7f8
+  name: "cmd"
+  type_id: 0x3e10b518
+  offset: 128
+}
+member {
+  id: 0x1a2f410b
+  name: "cmd"
+  type_id: 0x3f949c69
+  offset: 512
+}
+member {
+  id: 0x1a3986a4
+  name: "cmd"
+  type_id: 0x295c7202
+  offset: 352
+}
+member {
+  id: 0x1a398b3f
+  name: "cmd"
+  type_id: 0x295c7202
+  offset: 128
+}
+member {
+  id: 0x1a3c4a7d
+  name: "cmd"
+  type_id: 0x2c95ba59
+  offset: 7360
+}
+member {
+  id: 0x1a3e72b7
+  name: "cmd"
+  type_id: 0x2ea8d96e
+  offset: 64
+}
+member {
+  id: 0x1a3e7834
+  name: "cmd"
+  type_id: 0x2ea8d96e
+  offset: 6528
+}
+member {
+  id: 0x1a555be9
+  name: "cmd"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x1aa33935
+  name: "cmd"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0x1ad8fcad
+  name: "cmd"
+  type_id: 0xc82222ca
+}
+member {
+  id: 0x1af6f030
+  name: "cmd"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x1af81eef
+  name: "cmd"
+  type_id: 0xe8c06042
+}
+member {
+  id: 0x1af8d371
+  name: "cmd"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0x1af8ddcf
+  name: "cmd"
+  type_id: 0xe8034002
+}
+member {
+  id: 0x4d22c28e
+  name: "cmd_active"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0xfeddaede
+  name: "cmd_cnt"
+  type_id: 0x74d29cf1
+  offset: 12992
+}
+member {
+  id: 0x8af87765
+  name: "cmd_completion"
+  type_id: 0x3fcbf304
+  offset: 512
+}
+member {
+  id: 0x02c0b6c1
+  name: "cmd_flags"
+  type_id: 0x7b64642a
+  offset: 192
+}
+member {
+  id: 0x02c0b7ca
+  name: "cmd_flags"
+  type_id: 0x7b64642a
+  offset: 128
+}
+member {
+  id: 0xdb7340d8
+  name: "cmd_len"
+  type_id: 0xc93e017b
+  offset: 1632
+}
+member {
+  id: 0xdbe7f439
+  name: "cmd_len"
+  type_id: 0x5d8155a5
+  offset: 64
+}
+member {
+  id: 0xa34283da
+  name: "cmd_list"
+  type_id: 0xd3c80119
+  offset: 256
+}
+member {
+  id: 0xa342850c
+  name: "cmd_list"
+  type_id: 0xd3c80119
+  offset: 1280
+}
+member {
+  id: 0x28ddf56e
+  name: "cmd_lock"
+  type_id: 0xa7c362b0
+  offset: 640
+}
+member {
+  id: 0xc134320b
+  name: "cmd_mask"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xc1343f28
+  name: "cmd_mask"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x9dbedc75
+  name: "cmd_mutex"
+  type_id: 0xa7c362b0
+  offset: 64
+}
+member {
+  id: 0x2f8c4634
+  name: "cmd_op"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x2fa36869
+  name: "cmd_op"
+  type_id: 0xc9082b19
+  offset: 192
+}
+member {
+  id: 0xf3d4bdbf
+  name: "cmd_pause"
+  type_id: 0x6d7f5ff6
+  offset: 192
+}
+member {
+  id: 0x22230204
+  name: "cmd_per_lun"
+  type_id: 0xb0312d5a
+  offset: 2560
+}
+member {
+  id: 0x222306ae
+  name: "cmd_per_lun"
+  type_id: 0xb0312d5a
+  offset: 3968
+}
+member {
+  id: 0xa57ecd8e
+  name: "cmd_q"
+  type_id: 0x578f9c2b
+  offset: 25920
+}
+member {
+  id: 0xe5cdfc8b
+  name: "cmd_resume"
+  type_id: 0x6d7f5ff6
+  offset: 200
+}
+member {
+  id: 0x239084c5
+  name: "cmd_ring"
+  type_id: 0x78f4e574
+  offset: 192
+}
+member {
+  id: 0x23c9c4e7
+  name: "cmd_ring"
+  type_id: 0x21b2d2f4
+  offset: 1152
+}
+member {
+  id: 0x519f3189
+  name: "cmd_ring_reserved_trbs"
+  type_id: 0x4585663f
+  offset: 1408
+}
+member {
+  id: 0x5df5b124
+  name: "cmd_ring_state"
+  type_id: 0x4585663f
+  offset: 1216
+}
+member {
+  id: 0x66190ac5
+  name: "cmd_ring_stop_completion"
+  type_id: 0x3fcbf304
+  offset: 2560
+}
+member {
+  id: 0x4e81bc16
+  name: "cmd_size"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x4e81bce4
+  name: "cmd_size"
+  type_id: 0x4585663f
+  offset: 608
+}
+member {
+  id: 0x30eff64b
+  name: "cmd_sync_cancel_work"
+  type_id: 0x1f3c8679
+  offset: 17024
+}
+member {
+  id: 0x688a5a69
+  name: "cmd_sync_work"
+  type_id: 0x1f3c8679
+  offset: 15744
+}
+member {
+  id: 0x8bdadf1b
+  name: "cmd_sync_work_list"
+  type_id: 0xd3c80119
+  offset: 16128
+}
+member {
+  id: 0xaee6ff53
+  name: "cmd_sync_work_lock"
+  type_id: 0xa7c362b0
+  offset: 16256
+}
+member {
+  id: 0xeaebb6f5
+  name: "cmd_terminate"
+  type_id: 0x6d7f5ff6
+  offset: 208
+}
+member {
+  id: 0x08a92d3f
+  name: "cmd_timeout"
+  type_id: 0x0f6a1081
+  offset: 51136
+}
+member {
+  id: 0x091c4926
+  name: "cmd_timer"
+  type_id: 0xf1159c31
+  offset: 1472
+}
+member {
+  id: 0x091c4964
+  name: "cmd_timer"
+  type_id: 0xf1159c31
+  offset: 20032
+}
+member {
+  id: 0xbab90229
+  name: "cmd_trb"
+  type_id: 0x78f4e574
+}
+member {
+  id: 0x802b8087
+  name: "cmd_tx"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x15ef3a47
+  name: "cmd_work"
+  type_id: 0x1f3c8679
+  offset: 22592
+}
+member {
+  id: 0x616075f5
+  name: "cmdbuf"
+  type_id: 0xee699492
+  offset: 704
+}
+member {
+  id: 0xdd039da5
+  name: "cmdclass"
+  type_id: 0xc93e017b
+  offset: 16
+}
+member {
+  id: 0x6cf9b0ce
+  name: "cmdcnt"
+  type_id: 0x295c7202
+  offset: 768
+}
+member {
+  id: 0x080c0551
+  name: "cmdline_mode"
+  type_id: 0x4c8c4de8
+  offset: 12416
+}
+member {
+  id: 0x81136256
+  name: "cmdp"
+  type_id: 0x1df06cce
+  offset: 192
+}
+member {
+  id: 0x7c23bd7a
+  name: "cmdq_depth"
+  type_id: 0x4585663f
+  offset: 928
+}
+member {
+  id: 0x57f92f3f
+  name: "cmdq_en"
+  type_id: 0x6d7f5ff6
+  offset: 912
+}
+member {
+  id: 0xe6e9f654
+  name: "cmdq_support"
+  type_id: 0x6d7f5ff6
+  offset: 920
+}
+member {
+  id: 0xc2100fe0
+  name: "cmds"
+  type_id: 0x5d8155a5
+  offset: 40
+}
+member {
+  id: 0xcb2b95fc
+  name: "cmin_flt"
+  type_id: 0x33756485
+  offset: 4416
+}
+member {
+  id: 0x4f5a5772
+  name: "cmnd"
+  type_id: 0x43acdd98
+  offset: 1696
+}
+member {
+  id: 0x4f5f9848
+  name: "cmnd"
+  type_id: 0x4664de11
+  offset: 1600
+}
+member {
+  id: 0x2ed30cbc
+  name: "cmnd_size"
+  type_id: 0x6720d32f
+  offset: 1568
+}
+member {
+  id: 0x093f7b1f
+  name: "cmp"
+  type_id: 0x36fc2198
+}
+member {
+  id: 0x141e1b04
+  name: "cnf"
+  type_id: 0x66c6fbfa
+  offset: 7488
+}
+member {
+  id: 0x14f6fd8c
+  name: "cnf"
+  type_id: 0x8e2216f3
+  offset: 1792
+}
+member {
+  id: 0x0e7744ff
+  name: "cnivcsw"
+  type_id: 0x33756485
+  offset: 4224
+}
+member {
+  id: 0x82171f7d
+  name: "cnt"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x8224e024
+  name: "cnt"
+  type_id: 0xd5df6730
+  offset: 832
+}
+member {
+  id: 0x823834d2
+  name: "cnt"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x823c481b
+  name: "cnt"
+  type_id: 0xcd74e255
+}
+member {
+  id: 0x8285ee65
+  name: "cnt"
+  type_id: 0x74d29cf1
+}
+member {
+  id: 0x82cb024b
+  name: "cnt"
+  type_id: 0x3a3eb2f9
+}
+member {
+  id: 0x3cfbfc89
+  name: "cnts"
+  type_id: 0x74d29cf1
+}
+member {
+  id: 0xb42e0dd9
+  name: "cnvcsw"
+  type_id: 0x33756485
+  offset: 4160
+}
+member {
+  id: 0xf50e6b44
+  name: "coa_compress"
+  type_id: 0x2c571980
+}
+member {
+  id: 0xaaff0cd3
+  name: "coa_decompress"
+  type_id: 0x2c571980
+  offset: 64
+}
+member {
+  id: 0x781c73bd
+  name: "coaddr"
+  type_id: 0x06dcdc5a
+  offset: 3200
+}
+member {
+  id: 0xefb2bf17
+  name: "coalesce"
+  type_id: 0x30fbef83
+  offset: 10880
+}
+member {
+  id: 0xe2ce2718
+  name: "coalesced_mmio"
+  type_id: 0xffdb6969
+  offset: 64
+}
+member {
+  id: 0x48aab379
+  name: "coalesced_mmio_ring"
+  type_id: 0x2ced036e
+  offset: 24640
+}
+member {
+  id: 0x02a639fa
+  name: "coalesced_zones"
+  type_id: 0xd3c80119
+  offset: 24768
+}
+member {
+  id: 0x5406c379
+  name: "code"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0x5406c75b
+  name: "code"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0x5406c780
+  name: "code"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x5406ce5a
+  name: "code"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x5408e744
+  name: "code"
+  type_id: 0xe8034002
+}
+member {
+  id: 0x5408e9fa
+  name: "code"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0x5408eb89
+  name: "code"
+  type_id: 0xe8034002
+  offset: 112
+}
+member {
+  id: 0x5434fa8c
+  name: "code"
+  type_id: 0xd41e888f
+}
+member {
+  id: 0x545303be
+  name: "code"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0x54530858
+  name: "code"
+  type_id: 0xb3e7bac9
+  offset: 8
+}
+member {
+  id: 0x54a569cc
+  name: "code"
+  type_id: 0x4585663f
+  offset: 768
+}
+member {
+  id: 0x54bd61b0
+  name: "code"
+  type_id: 0x5d8155a5
+  offset: 64
+}
+member {
+  id: 0x54ea517d
+  name: "code"
+  type_id: 0x0abe9fd1
+  offset: 8
+}
+member {
+  id: 0x54f876ed
+  name: "code"
+  type_id: 0x1892e9b4
+}
+member {
+  id: 0x010de754
+  name: "code_page_size"
+  type_id: 0x92233392
+  offset: 1600
+}
+member {
+  id: 0xb819938f
+  name: "codec"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xb8e18a29
+  name: "codec"
+  type_id: 0x1e327628
+  offset: 16704
+}
+member {
+  id: 0xb8e1cd83
+  name: "codec"
+  type_id: 0x1e7452a1
+  offset: 64
+}
+member {
+  id: 0x78d9657f
+  name: "codec_conf"
+  type_id: 0x3a232845
+  offset: 3072
+}
+member {
+  id: 0xf908fbd2
+  name: "codecs"
+  type_id: 0x1d63cfed
+  offset: 256
+}
+member {
+  id: 0xf978d758
+  name: "codecs"
+  type_id: 0x6d472730
+  offset: 192
+}
+member {
+  id: 0x0fc968c6
+  name: "coder_state"
+  type_id: 0x3195cfe9
+  offset: 9152
+}
+member {
+  id: 0x1d6c7a97
+  name: "coding_type"
+  type_id: 0xa88b074d
+  offset: 64
+}
+member {
+  id: 0x253518a3
+  name: "coding_type_ext"
+  type_id: 0xc289d967
+  offset: 160
+}
+member {
+  id: 0x3053ec6d
+  name: "coef"
+  type_id: 0x93857c37
+  offset: 104
+}
+member {
+  id: 0x2553f11e
+  name: "coeff_probs"
+  type_id: 0xb7fefe6a
+}
+member {
+  id: 0x56a2fe27
+  name: "coherent_dma_mask"
+  type_id: 0x92233392
+  offset: 5376
+}
+member {
+  id: 0x8f0302a4
+  name: "coherent_walk"
+  type_id: 0x6d7f5ff6
+  offset: 192
+}
+member {
+  id: 0x6710a2d3
+  name: "col_idx"
+  type_id: 0x914dbfdc
+  offset: 928
+}
+member {
+  id: 0x48c91cfd
+  name: "collection"
+  type_id: 0x329e29fd
+  offset: 256
+}
+member {
+  id: 0xd333cb06
+  name: "collection_index"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x5a9c1331
+  name: "collection_list"
+  type_id: 0xd3c80119
+  offset: 1728
+}
+member {
+  id: 0xd205c634
+  name: "collection_size"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0xcc548e90
+  name: "collisions"
+  type_id: 0x33756485
+}
+member {
+  id: 0xcc8a00f1
+  name: "collisions"
+  type_id: 0xedf277ba
+  offset: 576
+}
+member {
+  id: 0x9beb9103
+  name: "collocated_ref_idx"
+  type_id: 0xb3e7bac9
+  offset: 176
+}
+member {
+  id: 0x6e13303f
+  name: "color"
+  type_id: 0xd6995412
+}
+member {
+  id: 0x6e238e16
+  name: "color"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0x6ef6d717
+  name: "color"
+  type_id: 0x33756485
+  offset: 512
+}
+member {
+  id: 0x6ef6dc0f
+  name: "color"
+  type_id: 0x33756485
+}
+member {
+  id: 0xcdde2bc9
+  name: "color_adjust"
+  type_id: 0x0dee821b
+}
+member {
+  id: 0x55105670
+  name: "color_encoding"
+  type_id: 0x24c39c69
+  offset: 640
+}
+member {
+  id: 0xc39dbe9d
+  name: "color_encoding_property"
+  type_id: 0x2a670b41
+  offset: 10368
+}
+member {
+  id: 0x6c30435e
+  name: "color_formats"
+  type_id: 0xc9082b19
+  offset: 160
+}
+member {
+  id: 0x34e51729
+  name: "color_index"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x6b770bd1
+  name: "color_mgmt_changed"
+  type_id: 0x6d7f5ff6
+  offset: 85
+  bitsize: 1
+}
+member {
+  id: 0x6fcb5e0b
+  name: "color_range"
+  type_id: 0x1cded491
+  offset: 672
+}
+member {
+  id: 0x0e64ea0d
+  name: "color_range_property"
+  type_id: 0x2a670b41
+  offset: 10432
+}
+member {
+  id: 0x9cba7bc6
+  name: "colorimetry"
+  type_id: 0x601c6112
+  offset: 128
+}
+member {
+  id: 0x7b31b339
+  name: "colorspace"
+  type_id: 0x4852fb5d
+  offset: 64
+}
+member {
+  id: 0x7b9fc25e
+  name: "colorspace"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0x7b9fc355
+  name: "colorspace"
+  type_id: 0xe62ebf07
+  offset: 192
+}
+member {
+  id: 0x7b9fc686
+  name: "colorspace"
+  type_id: 0xe62ebf07
+  offset: 1120
+}
+member {
+  id: 0x7bb0e5fb
+  name: "colorspace"
+  type_id: 0xc9082b19
+  offset: 960
+}
+member {
+  id: 0xc978fef0
+  name: "colorspace_property"
+  type_id: 0x2a670b41
+  offset: 11712
+}
+member {
+  id: 0xb64dd66a
+  name: "colour_plane_id"
+  type_id: 0xb3e7bac9
+  offset: 72
+}
+member {
+  id: 0xb64dde3d
+  name: "colour_plane_id"
+  type_id: 0xb3e7bac9
+  offset: 120
+}
+member {
+  id: 0xbd645b56
+  name: "column_width_minus1"
+  type_id: 0x3b24b1ed
+  offset: 80
+}
+member {
+  id: 0x26f5c78d
+  name: "combined_count"
+  type_id: 0xe62ebf07
+  offset: 256
+}
+member {
+  id: 0xe994f7e2
+  name: "comdatum"
+  type_id: 0x1e3c909a
+  offset: 128
+}
+member {
+  id: 0x7372cfc3
+  name: "comkey"
+  type_id: 0x0483e6f8
+  offset: 64
+}
+member {
+  id: 0x09c989f6
+  name: "comm"
+  type_id: 0xedf277ba
+  offset: 329
+  bitsize: 1
+}
+member {
+  id: 0x543ca0ef
+  name: "comm"
+  type_id: 0x42201dce
+  offset: 448
+}
+member {
+  id: 0x543ca422
+  name: "comm"
+  type_id: 0x42201dce
+  offset: 832
+}
+member {
+  id: 0x543ca8c5
+  name: "comm"
+  type_id: 0x42201dce
+  offset: 16960
+}
+member {
+  id: 0xd08ec6c7
+  name: "comm_exec"
+  type_id: 0xedf277ba
+  offset: 344
+  bitsize: 1
+}
+member {
+  id: 0x9145d6c6
+  name: "command"
+  type_id: 0x0baa70a7
+}
+member {
+  id: 0x9160ef4d
+  name: "command"
+  type_id: 0x2e9269e0
+  offset: 384
+}
+member {
+  id: 0x916d7d47
+  name: "command"
+  type_id: 0x23006385
+  offset: 384
+}
+member {
+  id: 0x91805d5b
+  name: "command"
+  type_id: 0xce21ed0b
+}
+member {
+  id: 0x9187749d
+  name: "command"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x91877c73
+  name: "command"
+  type_id: 0xc9082b19
+  offset: 5568
+}
+member {
+  id: 0x91a85f32
+  name: "command"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x91f504cf
+  name: "command"
+  type_id: 0xbb787969
+}
+member {
+  id: 0x245b9008
+  name: "command_desc_base_addr"
+  type_id: 0x78f4e574
+  offset: 128
+}
+member {
+  id: 0x245b99ca
+  name: "command_desc_base_addr"
+  type_id: 0x78f4e574
+}
+member {
+  id: 0x1ef9a3ea
+  name: "command_trb"
+  type_id: 0x31da1e83
+  offset: 192
+}
+member {
+  id: 0x86d6a29d
+  name: "command_type"
+  type_id: 0x6720d32f
+  offset: 608
+}
+member {
+  id: 0x28bc7764
+  name: "command_upiu"
+  type_id: 0xbbc08245
+}
+member {
+  id: 0x2a672cd4
+  name: "commands"
+  type_id: 0x1f52e925
+  offset: 5456
+}
+member {
+  id: 0xcd96802b
+  name: "commit"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0xcdcf1043
+  name: "commit"
+  type_id: 0x3eb9d280
+  offset: 256
+}
+member {
+  id: 0xcdcf114a
+  name: "commit"
+  type_id: 0x3eb9d280
+  offset: 2560
+}
+member {
+  id: 0xcdcf172f
+  name: "commit"
+  type_id: 0x3eb9d280
+  offset: 320
+}
+member {
+  id: 0xcdcf1d9e
+  name: "commit"
+  type_id: 0x3eb9d280
+  offset: 1088
+}
+member {
+  id: 0xcdd8319a
+  name: "commit"
+  type_id: 0x299c4193
+  offset: 64
+}
+member {
+  id: 0xcdfc0362
+  name: "commit"
+  type_id: 0x0da39a23
+  offset: 128
+}
+member {
+  id: 0xcdfdf0ff
+  name: "commit"
+  type_id: 0x0c596e35
+  offset: 256
+}
+member {
+  id: 0xe0e6cac0
+  name: "commit_blocks"
+  type_id: 0x2c7cb6d1
+  offset: 512
+}
+member {
+  id: 0x94b7eca7
+  name: "commit_dqblk"
+  type_id: 0x2e103219
+  offset: 320
+}
+member {
+  id: 0xa53f6a6d
+  name: "commit_entry"
+  type_id: 0xd3c80119
+  offset: 896
+}
+member {
+  id: 0x39cd7d86
+  name: "commit_item"
+  type_id: 0x2cc302e5
+  offset: 128
+}
+member {
+  id: 0xb4b13e26
+  name: "commit_list"
+  type_id: 0xd3c80119
+  offset: 12032
+}
+member {
+  id: 0x0bf84159
+  name: "commit_lock"
+  type_id: 0xf313e71a
+  offset: 12160
+}
+member {
+  id: 0xa0d22c3d
+  name: "commit_metadata"
+  type_id: 0x2c485866
+  offset: 320
+}
+member {
+  id: 0x1482525b
+  name: "commit_overrun"
+  type_id: 0x299c4193
+  offset: 1152
+}
+member {
+  id: 0x1ca1bc7c
+  name: "commit_page"
+  type_id: 0x33b88d23
+  offset: 640
+}
+member {
+  id: 0x26f52cb6
+  name: "commit_rqs"
+  type_id: 0x0c96a24a
+  offset: 64
+}
+member {
+  id: 0x26f6edfc
+  name: "commit_rqs"
+  type_id: 0x0f5acba0
+  offset: 128
+}
+member {
+  id: 0xbe00eda0
+  name: "commit_txn"
+  type_id: 0x2e412de2
+  offset: 1472
+}
+member {
+  id: 0xac729b4f
+  name: "commit_work"
+  type_id: 0x1f3c8679
+  offset: 704
+}
+member {
+  id: 0x9d598c8e
+  name: "commited"
+  type_id: 0xd3c80119
+  offset: 640
+}
+member {
+  id: 0xe6667780
+  name: "commits"
+  type_id: 0x299c4193
+  offset: 1344
+}
+member {
+  id: 0x4b2cba89
+  name: "committing"
+  type_id: 0x299c4193
+  offset: 1280
+}
+member {
+  id: 0x6429e162
+  name: "common"
+  type_id: 0x36f3049d
+  offset: 128
+}
+member {
+  id: 0x6435863d
+  name: "common"
+  type_id: 0x2a9beac2
+  offset: 1792
+}
+member {
+  id: 0x64e42014
+  name: "common"
+  type_id: 0xfb3bb098
+}
+member {
+  id: 0x999f496f
+  name: "comp"
+  type_id: 0x3fcbf304
+  offset: 1472
+}
+member {
+  id: 0x999f4e3f
+  name: "comp"
+  type_id: 0x3fcbf304
+}
+member {
+  id: 0xcccec18a
+  name: "comp_alloc"
+  type_id: 0x1e8db3c4
+  offset: 64
+}
+member {
+  id: 0x269c5586
+  name: "comp_bytes"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x205151e6
+  name: "comp_desc"
+  type_id: 0x3331b650
+  offset: 512
+}
+member {
+  id: 0x2dbea930
+  name: "comp_extra"
+  type_id: 0x4585663f
+  offset: 960
+}
+member {
+  id: 0x17ab98cf
+  name: "comp_free"
+  type_id: 0x0f3dfb90
+  offset: 128
+}
+member {
+  id: 0xb483fd58
+  name: "comp_init"
+  type_id: 0x2c60346b
+  offset: 192
+}
+member {
+  id: 0x4d93c34b
+  name: "comp_list"
+  type_id: 0xb17f19c3
+}
+member {
+  id: 0x08a5d3bf
+  name: "comp_mode"
+  type_id: 0xc505c003
+  offset: 14216
+}
+member {
+  id: 0xe596689c
+  name: "comp_mode_recovery_timer"
+  type_id: 0xd298e888
+  offset: 58432
+}
+member {
+  id: 0x4f11053b
+  name: "comp_packets"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0xdeb1d105
+  name: "comp_planes"
+  type_id: 0x295c7202
+  offset: 48
+}
+member {
+  id: 0x4abe7b9a
+  name: "comp_ref"
+  type_id: 0xc505c003
+  offset: 14336
+}
+member {
+  id: 0x05e6fa53
+  name: "comp_reset"
+  type_id: 0x0f3dfb90
+  offset: 256
+}
+member {
+  id: 0xe6e8c7c6
+  name: "comp_stat"
+  type_id: 0x0f0c4873
+  offset: 384
+}
+member {
+  id: 0x1be1661c
+  name: "compact_blockskip_flush"
+  type_id: 0x6d7f5ff6
+  offset: 11744
+}
+member {
+  id: 0xd4a37378
+  name: "compact_cached_free_pfn"
+  type_id: 0x33756485
+  offset: 11328
+}
+member {
+  id: 0xae770587
+  name: "compact_cached_migrate_pfn"
+  type_id: 0x607419c2
+  offset: 11392
+}
+member {
+  id: 0xf27c3a65
+  name: "compact_considered"
+  type_id: 0x4585663f
+  offset: 11648
+}
+member {
+  id: 0x2da6f519
+  name: "compact_count"
+  type_id: 0xedf277ba
+  offset: 2816
+}
+member {
+  id: 0x052ff008
+  name: "compact_defer_shift"
+  type_id: 0x4585663f
+  offset: 11680
+}
+member {
+  id: 0x395b29ba
+  name: "compact_delay_total"
+  type_id: 0xedf277ba
+  offset: 2880
+}
+member {
+  id: 0x1f4a44c0
+  name: "compact_init_free_pfn"
+  type_id: 0x33756485
+  offset: 11584
+}
+member {
+  id: 0x27c7d3f8
+  name: "compact_init_migrate_pfn"
+  type_id: 0x33756485
+  offset: 11520
+}
+member {
+  id: 0xc3bfdaae
+  name: "compact_order_failed"
+  type_id: 0x6720d32f
+  offset: 11712
+}
+member {
+  id: 0x583d51cc
+  name: "companion_ports"
+  type_id: 0x33756485
+  offset: 4800
+}
+member {
+  id: 0x3595933a
+  name: "compare"
+  type_id: 0x0ab98c04
+  offset: 128
+}
+member {
+  id: 0x35aacaff
+  name: "compare"
+  type_id: 0x35ee4c1c
+  offset: 320
+}
+member {
+  id: 0x35b2eaa6
+  name: "compare"
+  type_id: 0x2dcd339f
+  offset: 64
+}
+member {
+  id: 0x35b3d5c1
+  name: "compare"
+  type_id: 0x2cf48897
+  offset: 704
+}
+member {
+  id: 0x0da8ea71
+  name: "compare_typed"
+  type_id: 0x2db325ff
+  offset: 128
+}
+member {
+  id: 0x16a40bb9
+  name: "compat"
+  type_id: 0x4585663f
+  offset: 256
+  bitsize: 1
+}
+member {
+  id: 0xb740b261
+  name: "compat"
+  type_id: 0x6d7f5ff6
+  offset: 1088
+}
+member {
+  id: 0xd79237c9
+  name: "compat_filename_trans_count"
+  type_id: 0xc9082b19
+  offset: 3008
+}
+member {
+  id: 0xef52906a
+  name: "compat_filter_fn"
+  type_id: 0xd25c011d
+  offset: 192
+}
+member {
+  id: 0x4a54423a
+  name: "compat_ioctl"
+  type_id: 0x2da3cc79
+  offset: 384
+}
+member {
+  id: 0x4a5556ac
+  name: "compat_ioctl"
+  type_id: 0x2cb0b1c0
+  offset: 640
+}
+member {
+  id: 0x4a558a3a
+  name: "compat_ioctl"
+  type_id: 0x2c62f07a
+  offset: 768
+}
+member {
+  id: 0x4a5604cd
+  name: "compat_ioctl"
+  type_id: 0x2fe3def6
+  offset: 448
+}
+member {
+  id: 0x4a56b227
+  name: "compat_ioctl"
+  type_id: 0x2f595b5a
+  offset: 512
+}
+member {
+  id: 0x4a5812b3
+  name: "compat_ioctl"
+  type_id: 0x21f16d77
+  offset: 832
+}
+member {
+  id: 0x4a5b727a
+  name: "compat_ioctl"
+  type_id: 0x229023df
+  offset: 704
+}
+member {
+  id: 0x4a5b7780
+  name: "compat_ioctl"
+  type_id: 0x229023df
+  offset: 320
+}
+member {
+  id: 0xd360881a
+  name: "compat_ioctl32"
+  type_id: 0x2302df05
+  offset: 512
+}
+member {
+  id: 0xd3611639
+  name: "compat_ioctl32"
+  type_id: 0x229023df
+  offset: 320
+}
+member {
+  id: 0xeaadb518
+  name: "compat_request_channel"
+  type_id: 0x2b153704
+  offset: 64
+}
+member {
+  id: 0x72b68f63
+  name: "compat_rmtp"
+  type_id: 0x17c595e7
+}
+member {
+  id: 0x51062bba
+  name: "compat_robust_list"
+  type_id: 0x2f25d7c2
+  offset: 20928
+}
+member {
+  id: 0x6b351904
+  name: "compat_tc_stats"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0x7a39bd0a
+  name: "compat_version"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xcb763ef8
+  name: "compat_xstats"
+  type_id: 0x6720d32f
+  offset: 224
+}
+member {
+  id: 0x7cc517ec
+  name: "compatible"
+  type_id: 0x20fd6195
+  offset: 512
+}
+member {
+  id: 0x7cd2e33a
+  name: "compatible"
+  type_id: 0x370a664e
+  offset: 192
+}
+member {
+  id: 0x7ce16273
+  name: "compatible"
+  type_id: 0x0483e6f8
+}
+member {
+  id: 0x02849372
+  name: "compatible_version"
+  type_id: 0xb3e7bac9
+  offset: 32
+}
+member {
+  id: 0x02df7ab3
+  name: "compatible_version"
+  type_id: 0xe8034002
+}
+member {
+  id: 0x989c0466
+  name: "compl_reqs"
+  type_id: 0x25eef749
+  offset: 64
+}
+member {
+  id: 0xe1bedce8
+  name: "compl_time_stamp"
+  type_id: 0x11c404ba
+  offset: 832
+}
+member {
+  id: 0x74cdc5a9
+  name: "compl_time_stamp_local_clock"
+  type_id: 0x92233392
+  offset: 896
+}
+member {
+  id: 0x4a543ab8
+  name: "complete"
+  type_id: 0x0d9c4ffe
+  offset: 1728
+}
+member {
+  id: 0x4a5553b1
+  name: "complete"
+  type_id: 0x0cfba1b9
+  offset: 128
+}
+member {
+  id: 0x4a569c82
+  name: "complete"
+  type_id: 0x0f3dfb90
+  offset: 256
+}
+member {
+  id: 0x4a56f6ad
+  name: "complete"
+  type_id: 0x0f5e0dda
+  offset: 576
+}
+member {
+  id: 0x4a573691
+  name: "complete"
+  type_id: 0x0e93a255
+  offset: 64
+}
+member {
+  id: 0x4a57db9c
+  name: "complete"
+  type_id: 0x0e7bdc3d
+  offset: 384
+}
+member {
+  id: 0x4a5cc460
+  name: "complete"
+  type_id: 0x0562c566
+  offset: 448
+}
+member {
+  id: 0x4a666087
+  name: "complete"
+  type_id: 0x3fcbf304
+  offset: 896
+}
+member {
+  id: 0x4a754411
+  name: "complete"
+  type_id: 0x2ce67932
+  offset: 832
+}
+member {
+  id: 0x4a779ad5
+  name: "complete"
+  type_id: 0x2e3fe61b
+  offset: 64
+}
+member {
+  id: 0x4ae38270
+  name: "complete"
+  type_id: 0xba215158
+  offset: 1408
+}
+member {
+  id: 0x4ae72336
+  name: "complete"
+  type_id: 0xbe8b269f
+  offset: 128
+}
+member {
+  id: 0xafb9780a
+  name: "complete_lock"
+  type_id: 0xa7c362b0
+  offset: 2752
+}
+member {
+  id: 0x87c8e2fc
+  name: "complete_put"
+  type_id: 0x6d7f5ff6
+  offset: 40256
+}
+member {
+  id: 0x6de77685
+  name: "complete_req"
+  type_id: 0x1e820193
+  offset: 2688
+}
+member {
+  id: 0x2a8095b3
+  name: "complete_work"
+  type_id: 0x1f3c8679
+  offset: 3136
+}
+member {
+  id: 0x2a809bef
+  name: "complete_work"
+  type_id: 0x1f3c8679
+  offset: 8064
+}
+member {
+  id: 0xc938c455
+  name: "complete_wq"
+  type_id: 0x13f8b706
+  offset: 8000
+}
+member {
+  id: 0xc938cc08
+  name: "complete_wq"
+  type_id: 0x13f8b706
+  offset: 14912
+}
+member {
+  id: 0x8c5096f3
+  name: "completed"
+  type_id: 0x6d7f5ff6
+  offset: 2192
+}
+member {
+  id: 0x8c509758
+  name: "completed"
+  type_id: 0x6d7f5ff6
+  offset: 352
+}
+member {
+  id: 0x0ee26bd6
+  name: "completed_cookie"
+  type_id: 0x4faa9b63
+  offset: 160
+}
+member {
+  id: 0xeb627d4b
+  name: "completed_events"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x1c507a86
+  name: "completed_request"
+  type_id: 0x0fcc2ee9
+  offset: 1024
+}
+member {
+  id: 0xdffc4dce
+  name: "completedqs"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0x7c08e441
+  name: "completing_ep"
+  type_id: 0x0399ec3e
+  offset: 512
+}
+member {
+  id: 0xc494a473
+  name: "completion"
+  type_id: 0x3fcbf304
+  offset: 768
+}
+member {
+  id: 0xc494a51f
+  name: "completion"
+  type_id: 0x3fcbf304
+  offset: 128
+}
+member {
+  id: 0xc494a83c
+  name: "completion"
+  type_id: 0x3fcbf304
+  offset: 64
+}
+member {
+  id: 0xc494ac76
+  name: "completion"
+  type_id: 0x3fcbf304
+  offset: 256
+}
+member {
+  id: 0xc4ae05eb
+  name: "completion"
+  type_id: 0x0562c566
+}
+member {
+  id: 0xc4ae0c29
+  name: "completion"
+  type_id: 0x0562c566
+  offset: 128
+}
+member {
+  id: 0xa06e7da8
+  name: "completion_cnt"
+  type_id: 0x74d29cf1
+  offset: 448
+}
+member {
+  id: 0xec395640
+  name: "completion_data"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0xcbad091f
+  name: "completion_lock"
+  type_id: 0xf313e71a
+}
+member {
+  id: 0xcbad0dfe
+  name: "completion_lock"
+  type_id: 0xf313e71a
+  offset: 64
+}
+member {
+  id: 0x48a832aa
+  name: "completion_queue"
+  type_id: 0x054f691a
+  offset: 704
+}
+member {
+  id: 0x4ca65aa4
+  name: "completion_release"
+  type_id: 0x0ee00195
+  offset: 64
+}
+member {
+  id: 0x44155dde
+  name: "completions"
+  type_id: 0x5b602dab
+  offset: 2496
+}
+member {
+  id: 0x447b9357
+  name: "completions"
+  type_id: 0x35aebc23
+  offset: 64
+}
+member {
+  id: 0xe5eb95e0
+  name: "component"
+  type_id: 0x0dfeda6d
+  offset: 256
+}
+member {
+  id: 0xe5f705d6
+  name: "component"
+  type_id: 0x116785ed
+  offset: 128
+}
+member {
+  id: 0xe5f70e29
+  name: "component"
+  type_id: 0x116785ed
+  offset: 704
+}
+member {
+  id: 0x5c6564e5
+  name: "component_chaining"
+  type_id: 0x4585663f
+  offset: 6309
+  bitsize: 1
+}
+member {
+  id: 0xa08ce4f8
+  name: "component_dev_list"
+  type_id: 0xd3c80119
+  offset: 4096
+}
+member {
+  id: 0xb0612d6d
+  name: "components"
+  type_id: 0xc0606f8b
+  offset: 14400
+}
+member {
+  id: 0xb081b38f
+  name: "components"
+  type_id: 0x20fd6195
+  offset: 2080
+}
+member {
+  id: 0xb09f5e51
+  name: "components"
+  type_id: 0x3e10b518
+  offset: 192
+}
+member {
+  id: 0x6737086d
+  name: "compound_dtor"
+  type_id: 0x5d8155a5
+  offset: 64
+}
+member {
+  id: 0x83fcd31e
+  name: "compound_head"
+  type_id: 0x33756485
+}
+member {
+  id: 0xd46a2e3f
+  name: "compound_mapcount"
+  type_id: 0x74d29cf1
+  offset: 96
+}
+member {
+  id: 0xf8a78792
+  name: "compound_nr"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0x62e93403
+  name: "compound_order"
+  type_id: 0x5d8155a5
+  offset: 72
+}
+member {
+  id: 0x09f5240c
+  name: "compound_pincount"
+  type_id: 0x74d29cf1
+  offset: 128
+}
+member {
+  id: 0xcb9776c4
+  name: "compr"
+  type_id: 0x2849a9bf
+  offset: 12480
+}
+member {
+  id: 0x279e0e8b
+  name: "compr_ops"
+  type_id: 0x34de6732
+  offset: 960
+}
+member {
+  id: 0x794c36b3
+  name: "compress"
+  type_id: 0x0baa70a7
+  offset: 864
+}
+member {
+  id: 0x796a339f
+  name: "compress"
+  type_id: 0x2dae560d
+  offset: 320
+}
+member {
+  id: 0x796bfa50
+  name: "compress"
+  type_id: 0x2c679907
+  offset: 320
+}
+member {
+  id: 0x799f58aa
+  name: "compress"
+  type_id: 0xd8c2a455
+}
+member {
+  id: 0x07279879
+  name: "compress_new"
+  type_id: 0x2dc1eedf
+  offset: 768
+}
+member {
+  id: 0x14524000
+  name: "compress_ops"
+  type_id: 0x3d72bdb1
+  offset: 2432
+}
+member {
+  id: 0x755a12dd
+  name: "compress_proto"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x97eea192
+  name: "compressed"
+  type_id: 0x6d7f5ff6
+  offset: 672
+}
+member {
+  id: 0xfb567eb3
+  name: "compressed_header_size"
+  type_id: 0xe8034002
+  offset: 928
+}
+member {
+  id: 0xd5a82d64
+  name: "compression_level"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0xd70e055b
+  name: "con_id"
+  type_id: 0x3e10b518
+  offset: 192
+}
+member {
+  id: 0x7717d8b7
+  name: "con_priv"
+  type_id: 0x18bd6530
+  offset: 1920
+}
+member {
+  id: 0x16100b9c
+  name: "cond"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x16e66b34
+  name: "cond"
+  type_id: 0xb3e7bac9
+  offset: 200
+}
+member {
+  id: 0x75447ac6
+  name: "cond_list"
+  type_id: 0x08ea582b
+  offset: 3328
+}
+member {
+  id: 0x56da2358
+  name: "cond_list_len"
+  type_id: 0xc9082b19
+  offset: 3392
+}
+member {
+  id: 0x9c734fbf
+  name: "cond_suspend_depth"
+  type_id: 0x4585663f
+  offset: 2048
+}
+member {
+  id: 0x1372563a
+  name: "condition"
+  type_id: 0xf613688a
+  offset: 288
+}
+member {
+  id: 0x13c9453c
+  name: "condition"
+  type_id: 0x4d04b785
+}
+member {
+  id: 0x8b47d058
+  name: "conf"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0x83b6a5af
+  name: "conf1"
+  type_id: 0x92233392
+  offset: 128
+}
+member {
+  id: 0x082ecdd2
+  name: "conf_len"
+  type_id: 0xb3e7bac9
+  offset: 1048
+}
+member {
+  id: 0x01ff4e52
+  name: "conf_req"
+  type_id: 0x1f52e925
+  offset: 536
+}
+member {
+  id: 0xe2df89eb
+  name: "conf_state"
+  type_id: 0x33756485
+  offset: 1280
+}
+member {
+  id: 0xd137e8f5
+  name: "config"
+  type_id: 0x92233392
+}
+member {
+  id: 0xd1469e0e
+  name: "config"
+  type_id: 0xe357f5b0
+  offset: 704
+}
+member {
+  id: 0xd1483d50
+  name: "config"
+  type_id: 0xedf277ba
+  offset: 64
+}
+member {
+  id: 0xd190daa2
+  name: "config"
+  type_id: 0x3518a6ab
+  offset: 128
+}
+member {
+  id: 0xd195dd1d
+  name: "config"
+  type_id: 0x301e0f4d
+  offset: 8896
+}
+member {
+  id: 0xd19bd6d2
+  name: "config"
+  type_id: 0x3e190264
+  offset: 7488
+}
+member {
+  id: 0xd1ab3591
+  name: "config"
+  type_id: 0x0effc5a1
+  offset: 384
+}
+member {
+  id: 0xd1ab3cca
+  name: "config"
+  type_id: 0x0effc5a1
+  offset: 192
+}
+member {
+  id: 0x3ea911d5
+  name: "config1"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x78e9e843
+  name: "config2"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x22755b1f
+  name: "config_aneg"
+  type_id: 0x2ee76b64
+  offset: 2304
+}
+member {
+  id: 0xbfcf106c
+  name: "config_array_ptr"
+  type_id: 0x295c7202
+  offset: 24
+}
+member {
+  id: 0x20e3cde2
+  name: "config_base"
+  type_id: 0x39cc14ac
+  offset: 512
+}
+member {
+  id: 0x20e97648
+  name: "config_base"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x4b7a1f7b
+  name: "config_buf"
+  type_id: 0x0c6c61ad
+  offset: 3456
+}
+member {
+  id: 0xc92c2d46
+  name: "config_change_pending"
+  type_id: 0x6d7f5ff6
+  offset: 48
+}
+member {
+  id: 0x96bc0a6d
+  name: "config_changed"
+  type_id: 0x0c254fa0
+  offset: 1984
+}
+member {
+  id: 0x02713895
+  name: "config_clks"
+  type_id: 0x9e5c24fd
+  offset: 64
+}
+member {
+  id: 0x02713f49
+  name: "config_clks"
+  type_id: 0x9e5c24fd
+  offset: 2752
+}
+member {
+  id: 0xe3ba0596
+  name: "config_completion"
+  type_id: 0x3fcbf304
+  offset: 10688
+}
+member {
+  id: 0x7691c932
+  name: "config_count"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0x2489546a
+  name: "config_enable"
+  type_id: 0x295c7202
+  offset: 536
+}
+member {
+  id: 0x0928ab5c
+  name: "config_enabled"
+  type_id: 0x6d7f5ff6
+  offset: 40
+}
+member {
+  id: 0x18dbd135
+  name: "config_esi"
+  type_id: 0x2d883003
+  offset: 1728
+}
+member {
+  id: 0xa02c1275
+  name: "config_init"
+  type_id: 0x2ee76b64
+  offset: 1920
+}
+member {
+  id: 0xaa45be11
+  name: "config_intr"
+  type_id: 0x2ee76b64
+  offset: 2496
+}
+member {
+  id: 0xba3ab556
+  name: "config_lock"
+  type_id: 0xf313e71a
+  offset: 64
+}
+member {
+  id: 0x0a84c182
+  name: "config_port"
+  type_id: 0x0eda7457
+  offset: 1344
+}
+member {
+  id: 0x67409233
+  name: "config_reg"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0x67823edd
+  name: "config_reg"
+  type_id: 0x0baa70a7
+  offset: 448
+}
+member {
+  id: 0x2905e248
+  name: "config_regulators"
+  type_id: 0x1686b119
+  offset: 3008
+}
+member {
+  id: 0x2905ec89
+  name: "config_regulators"
+  type_id: 0x1686b119
+  offset: 192
+}
+member {
+  id: 0xfa3c41c0
+  name: "config_scaling_param"
+  type_id: 0x0ed29e69
+  offset: 1216
+}
+member {
+  id: 0x65a67885
+  name: "config_size"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x46181a4f
+  name: "config_space"
+  type_id: 0x7e71c857
+}
+member {
+  id: 0xe94489a9
+  name: "configs"
+  type_id: 0xdab6dbd1
+}
+member {
+  id: 0xe94df10a
+  name: "configs"
+  type_id: 0xd3c80119
+  offset: 640
+}
+member {
+  id: 0xe99876f3
+  name: "configs"
+  type_id: 0x064d6086
+  offset: 64
+}
+member {
+  id: 0x73c28032
+  name: "configure"
+  type_id: 0x2d7be27a
+  offset: 448
+}
+member {
+  id: 0x73c333e5
+  name: "configure"
+  type_id: 0x2cc63051
+  offset: 576
+}
+member {
+  id: 0xba19062c
+  name: "configured_flag"
+  type_id: 0xc9082b19
+  offset: 512
+}
+member {
+  id: 0x1bd9b3e7
+  name: "confirm"
+  type_id: 0x2d65db46
+}
+member {
+  id: 0x724a810c
+  name: "confirm_neigh"
+  type_id: 0x0d355191
+  offset: 896
+}
+member {
+  id: 0xb2018ea7
+  name: "confirm_switch"
+  type_id: 0x31f49752
+  offset: 128
+}
+member {
+  id: 0xcab12c42
+  name: "confirmed"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0x36a76fcc
+  name: "confops"
+  type_id: 0x341220bc
+  offset: 320
+}
+member {
+  id: 0xe7e5440f
+  name: "cong_avoid"
+  type_id: 0x0fa7f64c
+  offset: 64
+}
+member {
+  id: 0xcc7bb01a
+  name: "cong_control"
+  type_id: 0x0f514133
+  offset: 448
+}
+member {
+  id: 0xf05bfb8e
+  name: "cong_link_cnt"
+  type_id: 0x914dbfdc
+  offset: 7776
+}
+member {
+  id: 0x0ba4e1ad
+  name: "cong_links"
+  type_id: 0xd3c80119
+  offset: 7424
+}
+member {
+  id: 0x0d45cf4f
+  name: "congestion_count"
+  type_id: 0x74d29cf1
+  offset: 13248
+}
+member {
+  id: 0x85e01956
+  name: "conn"
+  type_id: 0x39a8be0c
+}
+member {
+  id: 0x85e74497
+  name: "conn"
+  type_id: 0x3ef80973
+  offset: 1088
+}
+member {
+  id: 0x85e800af
+  name: "conn"
+  type_id: 0x31b5a66f
+  offset: 64
+}
+member {
+  id: 0x85f2b71e
+  name: "conn"
+  type_id: 0x2b0e3ff1
+  offset: 192
+}
+member {
+  id: 0x0aa16a1f
+  name: "conn_addrtype"
+  type_id: 0x295c7202
+  offset: 8720
+}
+member {
+  id: 0x9954dc9e
+  name: "conn_bss_type"
+  type_id: 0x509c8bf0
+  offset: 1216
+}
+member {
+  id: 0x35c9dc28
+  name: "conn_flags"
+  type_id: 0x953457e9
+  offset: 39104
+}
+member {
+  id: 0x938b4e26
+  name: "conn_hash"
+  type_id: 0xf1245c57
+  offset: 28736
+}
+member {
+  id: 0xde3f53d2
+  name: "conn_info"
+  type_id: 0xfd4f9284
+  offset: 12480
+}
+member {
+  id: 0xde3f5a21
+  name: "conn_info"
+  type_id: 0xfd4f9284
+  offset: 640
+}
+member {
+  id: 0x664acf2b
+  name: "conn_info_max_age"
+  type_id: 0xe8034002
+  offset: 6608
+}
+member {
+  id: 0xbd91da92
+  name: "conn_info_min_age"
+  type_id: 0xe8034002
+  offset: 6592
+}
+member {
+  id: 0xa9efc967
+  name: "conn_info_timestamp"
+  type_id: 0x33756485
+  offset: 3776
+}
+member {
+  id: 0x39e03c4a
+  name: "conn_owner_nlportid"
+  type_id: 0xc9082b19
+  offset: 1248
+}
+member {
+  id: 0xddef3ec7
+  name: "conn_reason"
+  type_id: 0x7bfd6d29
+  offset: 3648
+}
+member {
+  id: 0x220e0197
+  name: "conn_state"
+  type_id: 0x33756485
+  offset: 1344
+}
+member {
+  id: 0xe79af1b5
+  name: "conn_timeout"
+  type_id: 0x914dbfdc
+  offset: 7744
+}
+member {
+  id: 0xe7e3b868
+  name: "conn_timeout"
+  type_id: 0xe8034002
+  offset: 864
+}
+member {
+  id: 0xbd402b97
+  name: "connect"
+  type_id: 0x2cc4c59b
+  offset: 256
+}
+member {
+  id: 0xbd404e9b
+  name: "connect"
+  type_id: 0x2ca6a571
+  offset: 320
+}
+member {
+  id: 0xbd40b11d
+  name: "connect"
+  type_id: 0x2c59231c
+  offset: 320
+}
+member {
+  id: 0xbd40f0d8
+  name: "connect"
+  type_id: 0x2c16e301
+  offset: 128
+}
+member {
+  id: 0xbd413e41
+  name: "connect"
+  type_id: 0x2dd67f29
+  offset: 320
+}
+member {
+  id: 0xbd6086b0
+  name: "connect"
+  type_id: 0x0c6bcde0
+  offset: 1984
+}
+member {
+  id: 0xca99ac61
+  name: "connect_cfm"
+  type_id: 0x0cb52986
+  offset: 192
+}
+member {
+  id: 0x0a484342
+  name: "connect_cfm_cb"
+  type_id: 0x0c2f924e
+  offset: 16768
+}
+member {
+  id: 0x13290fb8
+  name: "connect_keys"
+  type_id: 0x1b115f4e
+  offset: 1152
+}
+member {
+  id: 0x997c2cff
+  name: "connect_lock"
+  type_id: 0xa7c362b0
+  offset: 8000
+}
+member {
+  id: 0xee1e8424
+  name: "connect_phy"
+  type_id: 0x2c4aa19f
+  offset: 512
+}
+member {
+  id: 0x1c7178cc
+  name: "connect_time"
+  type_id: 0x33756485
+  offset: 11776
+}
+member {
+  id: 0x168e52ab
+  name: "connect_timeout"
+  type_id: 0xfc0e1dbd
+  offset: 7552
+}
+member {
+  id: 0x437f9981
+  name: "connect_work"
+  type_id: 0xf1159c31
+  offset: 8000
+}
+member {
+  id: 0x7911ef35
+  name: "connected"
+  type_id: 0x6d7f5ff6
+  offset: 2152
+}
+member {
+  id: 0x7951cfa6
+  name: "connected"
+  type_id: 0x2d5bf24a
+  offset: 192
+}
+member {
+  id: 0x908b9125
+  name: "connected"
+  type_id: 0x5d8155a5
+  offset: 738
+  bitsize: 1
+}
+member {
+  id: 0x90939b75
+  name: "connected"
+  type_id: 0x4585663f
+  offset: 8463
+  bitsize: 1
+}
+member {
+  id: 0x90ff43bb
+  name: "connected"
+  type_id: 0x295c7202
+  offset: 1888
+  bitsize: 1
+}
+member {
+  id: 0x44ca16fb
+  name: "connected_addr"
+  type_id: 0xabf64f28
+}
+member {
+  id: 0x5ccc5a40
+  name: "connected_output"
+  type_id: 0x2d4be55c
+  offset: 256
+}
+member {
+  id: 0xdecd7dd8
+  name: "connected_table"
+  type_id: 0xd3c80119
+  offset: 7296
+}
+member {
+  id: 0xd9f047f3
+  name: "connection_mutex"
+  type_id: 0x8d0aa23e
+  offset: 384
+}
+member {
+  id: 0xcf462e1f
+  name: "connector"
+  type_id: 0x15f148f6
+  offset: 384
+}
+member {
+  id: 0xcf6267fc
+  name: "connector"
+  type_id: 0x31b5a66f
+  offset: 24832
+}
+member {
+  id: 0xcf626b63
+  name: "connector"
+  type_id: 0x31b5a66f
+}
+member {
+  id: 0xcf680b0d
+  name: "connector"
+  type_id: 0x3bd2bf42
+  offset: 448
+}
+member {
+  id: 0xcf7a8c09
+  name: "connector"
+  type_id: 0x295c7202
+  offset: 16
+}
+member {
+  id: 0xcf7cd0ac
+  name: "connector"
+  type_id: 0x2f0e69de
+}
+member {
+  id: 0x4d3f38a5
+  name: "connector_free_list"
+  type_id: 0x0bf3e543
+  offset: 2688
+}
+member {
+  id: 0x2b8b2604
+  name: "connector_free_work"
+  type_id: 0x1f3c8679
+  offset: 2752
+}
+member {
+  id: 0x74803303
+  name: "connector_id"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x74e8bb4c
+  name: "connector_ida"
+  type_id: 0xe1a31370
+  offset: 2432
+}
+member {
+  id: 0x0a6f0e32
+  name: "connector_list"
+  type_id: 0xd3c80119
+  offset: 2560
+}
+member {
+  id: 0xbf700568
+  name: "connector_list_lock"
+  type_id: 0xf313e71a
+  offset: 2368
+}
+member {
+  id: 0xe40d0ad2
+  name: "connector_mask"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0x90e22d12
+  name: "connector_type"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0x90e22f47
+  name: "connector_type"
+  type_id: 0x6720d32f
+  offset: 1248
+}
+member {
+  id: 0xc0a9820f
+  name: "connector_type_id"
+  type_id: 0x6720d32f
+  offset: 1280
+}
+member {
+  id: 0xf5e9e092
+  name: "connectors"
+  type_id: 0x06fd503c
+  offset: 256
+}
+member {
+  id: 0xf5eefba7
+  name: "connectors"
+  type_id: 0x01e75c08
+  offset: 384
+}
+member {
+  id: 0x9ea4cd8e
+  name: "connectors_changed"
+  type_id: 0x6d7f5ff6
+  offset: 83
+  bitsize: 1
+}
+member {
+  id: 0x52103627
+  name: "cons"
+  type_id: 0x015f6fbc
+  offset: 320
+}
+member {
+  id: 0x52103662
+  name: "cons"
+  type_id: 0x015f6fbc
+  offset: 2048
+}
+member {
+  id: 0x19845b55
+  name: "cons_lock"
+  type_id: 0xa7c362b0
+  offset: 192
+}
+member {
+  id: 0xbd6527fa
+  name: "console"
+  type_id: 0x5d8155a5
+  offset: 2240
+  bitsize: 1
+}
+member {
+  id: 0x5e056c04
+  name: "console_reinit"
+  type_id: 0x5d8155a5
+  offset: 2880
+}
+member {
+  id: 0x9e45699e
+  name: "const_type"
+  type_id: 0x384c5795
+}
+member {
+  id: 0x9e49c199
+  name: "const_type"
+  type_id: 0x34e4504f
+}
+member {
+  id: 0x0e51dd10
+  name: "constant"
+  type_id: 0x39470e64
+  offset: 384
+}
+member {
+  id: 0x0ebfc97f
+  name: "constant"
+  type_id: 0xd752f3a0
+}
+member {
+  id: 0x1ad05349
+  name: "constant_charge_current_max_ua"
+  type_id: 0x6720d32f
+  offset: 352
+}
+member {
+  id: 0xb31cfb42
+  name: "constant_charge_voltage_max_uv"
+  type_id: 0x6720d32f
+  offset: 384
+}
+member {
+  id: 0x02afc8a1
+  name: "constraint_set_flags"
+  type_id: 0xb3e7bac9
+  offset: 8
+}
+member {
+  id: 0xfd186968
+  name: "constraints"
+  type_id: 0x71886297
+  offset: 1280
+}
+member {
+  id: 0xfd4798e2
+  name: "constraints"
+  type_id: 0x2e71b7d0
+  offset: 9152
+}
+member {
+  id: 0xfd724d73
+  name: "constraints"
+  type_id: 0x1bab96d2
+  offset: 384
+}
+member {
+  id: 0xfdfa65af
+  name: "constraints"
+  type_id: 0x938639de
+  offset: 64
+}
+member {
+  id: 0x0450bd7d
+  name: "constructor"
+  type_id: 0x2d4eaa35
+  offset: 256
+}
+member {
+  id: 0x0470e987
+  name: "constructor"
+  type_id: 0x0d1e1a48
+  offset: 64
+}
+member {
+  id: 0x9ce697a9
+  name: "consumed"
+  type_id: 0xf435685e
+  offset: 192
+}
+member {
+  id: 0x115d1b31
+  name: "consumer"
+  type_id: 0xc9082b19
+  offset: 1024
+}
+member {
+  id: 0x1195b3d9
+  name: "consumer"
+  type_id: 0x01ae1e33
+  offset: 128
+}
+member {
+  id: 0x11964435
+  name: "consumer"
+  type_id: 0x0258f96e
+  offset: 192
+}
+member {
+  id: 0x6bcdf1bd
+  name: "consumer_head"
+  type_id: 0x6720d32f
+  offset: 512
+}
+member {
+  id: 0x5d3485c5
+  name: "consumer_list"
+  type_id: 0xd3c80119
+  offset: 320
+}
+member {
+  id: 0x65e6abc3
+  name: "consumer_lock"
+  type_id: 0xf313e71a
+  offset: 576
+}
+member {
+  id: 0x8cda3bf9
+  name: "consumer_rwsem"
+  type_id: 0x28b9ec9a
+  offset: 768
+}
+member {
+  id: 0xce3dd8e0
+  name: "consumer_supplies"
+  type_id: 0x26a22eee
+  offset: 1920
+}
+member {
+  id: 0xbc3b24d0
+  name: "consumer_tail"
+  type_id: 0x6720d32f
+  offset: 544
+}
+member {
+  id: 0x823c1719
+  name: "consumers"
+  type_id: 0xd3c80119
+  offset: 320
+}
+member {
+  id: 0x823c191c
+  name: "consumers"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0x82e15cd4
+  name: "consumers"
+  type_id: 0x0e86f8f4
+  offset: 1408
+}
+member {
+  id: 0x3c122913
+  name: "cont_lock"
+  type_id: 0xf313e71a
+  offset: 1760
+}
+member {
+  id: 0xf48c575c
+  name: "containers"
+  type_id: 0x95f8b1fc
+  offset: 128
+}
+member {
+  id: 0xa921c631
+  name: "contended"
+  type_id: 0x29d29128
+  offset: 192
+}
+member {
+  id: 0xa96567a8
+  name: "contended"
+  type_id: 0x6d7f5ff6
+  offset: 976
+}
+member {
+  id: 0x3655700a
+  name: "content"
+  type_id: 0xc93e017b
+  offset: 192
+}
+member {
+  id: 0xa368c0ef
+  name: "content_protection"
+  type_id: 0x4585663f
+  offset: 928
+}
+member {
+  id: 0xd53feff4
+  name: "content_protection_property"
+  type_id: 0x2a670b41
+  offset: 9344
+}
+member {
+  id: 0x9f340c7d
+  name: "content_type"
+  type_id: 0x9ee4a55c
+  offset: 416
+}
+member {
+  id: 0x9fef6c64
+  name: "content_type"
+  type_id: 0x4585663f
+  offset: 832
+}
+member {
+  id: 0xc57955e1
+  name: "content_type_property"
+  type_id: 0x2a670b41
+  offset: 8448
+}
+member {
+  id: 0x4bfa9ecc
+  name: "contents_encryption_mode"
+  type_id: 0xb3e7bac9
+  offset: 8
+}
+member {
+  id: 0x41167d14
+  name: "context"
+  type_id: 0xa1416fb0
+  offset: 64
+}
+member {
+  id: 0x41251b02
+  name: "context"
+  type_id: 0x92233392
+  offset: 256
+}
+member {
+  id: 0x418af429
+  name: "context"
+  type_id: 0x3dc01f54
+  offset: 6080
+}
+member {
+  id: 0x41a2f5e4
+  name: "context"
+  type_id: 0x15c77315
+  offset: 4608
+}
+member {
+  id: 0x41af8238
+  name: "context"
+  type_id: 0x18bd6530
+  offset: 320
+}
+member {
+  id: 0x41af8288
+  name: "context"
+  type_id: 0x18bd6530
+  offset: 448
+}
+member {
+  id: 0x41af8f7c
+  name: "context"
+  type_id: 0x18bd6530
+  offset: 1344
+}
+member {
+  id: 0x41c20ad3
+  name: "context"
+  type_id: 0x753f7205
+  offset: 32
+}
+member {
+  id: 0x41f3c646
+  name: "context"
+  type_id: 0x44f91b0f
+  offset: 320
+}
+member {
+  id: 0x6f74ad91
+  name: "context_mgr_node_lock"
+  type_id: 0xa7c362b0
+  offset: 64
+}
+member {
+  id: 0x0af44903
+  name: "context_switch"
+  type_id: 0xedf277ba
+  offset: 346
+  bitsize: 1
+}
+member {
+  id: 0x3ac44cab
+  name: "context_to_sid"
+  type_id: 0xa634ef38
+  offset: 24896
+}
+member {
+  id: 0x52eba014
+  name: "contiguous"
+  type_id: 0x6d7f5ff6
+  offset: 11752
+}
+member {
+  id: 0x27917b84
+  name: "continuous_voltage_range"
+  type_id: 0x4585663f
+  offset: 416
+  bitsize: 1
+}
+member {
+  id: 0x380d5de7
+  name: "contrast"
+  type_id: 0x4585663f
+  offset: 224
+}
+member {
+  id: 0xfc0271b7
+  name: "control"
+  type_id: 0x3e10b518
+  offset: 64
+}
+member {
+  id: 0xfc143b54
+  name: "control"
+  type_id: 0x285eb7a0
+}
+member {
+  id: 0xfc15393a
+  name: "control"
+  type_id: 0x295c7202
+  offset: 256
+}
+member {
+  id: 0xfc17d3e7
+  name: "control"
+  type_id: 0x2bb39ba6
+  offset: 2176
+}
+member {
+  id: 0xfc37c610
+  name: "control"
+  type_id: 0x0baa70a7
+  offset: 96
+}
+member {
+  id: 0xfcd19375
+  name: "control"
+  type_id: 0xedf277ba
+  offset: 64
+}
+member {
+  id: 0xfcf56dc8
+  name: "control"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x549bb35a
+  name: "control_elems"
+  type_id: 0x0baa70a7
+  offset: 32
+}
+member {
+  id: 0x46987270
+  name: "control_load"
+  type_id: 0x2c808592
+}
+member {
+  id: 0x28722417
+  name: "control_unload"
+  type_id: 0x2cdf1523
+  offset: 64
+}
+member {
+  id: 0xd8154742
+  name: "controller"
+  type_id: 0x00dd92af
+  offset: 7296
+}
+member {
+  id: 0xd817c8aa
+  name: "controller"
+  type_id: 0x0258f96e
+}
+member {
+  id: 0xd8dc9878
+  name: "controller"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x608f2d5b
+  name: "controller_data"
+  type_id: 0x18bd6530
+  offset: 7616
+}
+member {
+  id: 0xd414012b
+  name: "controller_state"
+  type_id: 0x18bd6530
+  offset: 7552
+}
+member {
+  id: 0x474fe3e5
+  name: "controls"
+  type_id: 0xd3c80119
+  offset: 11520
+}
+member {
+  id: 0x47a42035
+  name: "controls"
+  type_id: 0x3806a5e7
+  offset: 3456
+}
+member {
+  id: 0x47a42e9e
+  name: "controls"
+  type_id: 0x3806a5e7
+  offset: 64
+}
+member {
+  id: 0x47bde5a6
+  name: "controls"
+  type_id: 0x21c1b566
+  offset: 192
+}
+member {
+  id: 0x69dc9e54
+  name: "controls_count"
+  type_id: 0x6720d32f
+  offset: 11392
+}
+member {
+  id: 0x2208bb24
+  name: "controls_rwsem"
+  type_id: 0x28b9ec9a
+  offset: 10816
+}
+member {
+  id: 0x62b69278
+  name: "controls_vbus"
+  type_id: 0x6d7f5ff6
+  offset: 192
+}
+member {
+  id: 0xa972e5df
+  name: "conv_zones_bitmap"
+  type_id: 0x064d6086
+  offset: 4032
+}
+member {
+  id: 0xb5c7762e
+  name: "convert"
+  type_id: 0x1e4bcad9
+  offset: 320
+}
+member {
+  id: 0x3f2fb089
+  name: "convert_ctx_access"
+  type_id: 0x1aa00f75
+  offset: 256
+}
+member {
+  id: 0x3c519ec3
+  name: "convert_rgb"
+  type_id: 0x6d7f5ff6
+  offset: 16
+}
+member {
+  id: 0x5805f711
+  name: "cookie"
+  type_id: 0x4faa9b63
+  offset: 128
+}
+member {
+  id: 0x5805fed3
+  name: "cookie"
+  type_id: 0x4faa9b63
+}
+member {
+  id: 0x5845bc8a
+  name: "cookie"
+  type_id: 0x0fec2355
+  offset: 64
+}
+member {
+  id: 0x5852e92d
+  name: "cookie"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0x5857bb0a
+  name: "cookie"
+  type_id: 0x1de7ec7c
+  offset: 768
+}
+member {
+  id: 0x5857de1d
+  name: "cookie"
+  type_id: 0x1d8a43df
+  offset: 272
+}
+member {
+  id: 0x5878a558
+  name: "cookie"
+  type_id: 0x32f2aa1d
+  offset: 832
+}
+member {
+  id: 0x5879212c
+  name: "cookie"
+  type_id: 0x33756485
+}
+member {
+  id: 0x587928ee
+  name: "cookie"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x588355a1
+  name: "cookie"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0x588437e1
+  name: "cookie"
+  type_id: 0xce6e9270
+  offset: 32
+}
+member {
+  id: 0x58a4393d
+  name: "cookie"
+  type_id: 0xee699492
+  offset: 64
+}
+member {
+  id: 0x58a43d77
+  name: "cookie"
+  type_id: 0xee699492
+  offset: 256
+}
+member {
+  id: 0x58a7a2de
+  name: "cookie"
+  type_id: 0xedf277ba
+  offset: 64
+}
+member {
+  id: 0x58cc85b4
+  name: "cookie"
+  type_id: 0x86d95287
+  offset: 768
+}
+member {
+  id: 0x58cc89fb
+  name: "cookie"
+  type_id: 0x86d95287
+  offset: 64
+}
+member {
+  id: 0x14bf8247
+  name: "cookie1"
+  type_id: 0x92233392
+}
+member {
+  id: 0xd5fe2ed0
+  name: "cookie2"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0x5d1ee7e7
+  name: "cookie_len"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x5d1ee9e2
+  name: "cookie_len"
+  type_id: 0x6720d32f
+  offset: 320
+}
+member {
+  id: 0x5d509fef
+  name: "cookie_len"
+  type_id: 0x295c7202
+  offset: 432
+}
+member {
+  id: 0x5db0c6dd
+  name: "cookie_len"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xada91ab6
+  name: "cookies"
+  type_id: 0xedf277ba
+  offset: 192
+}
+member {
+  id: 0x58138131
+  name: "copied_timestamp"
+  type_id: 0x4585663f
+  offset: 738
+  bitsize: 1
+}
+member {
+  id: 0xec262afd
+  name: "copied_total"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xbd78746b
+  name: "cops"
+  type_id: 0x32d896eb
+  offset: 960
+}
+member {
+  id: 0x29617348
+  name: "copy"
+  type_id: 0xa6a5c913
+  offset: 64
+}
+member {
+  id: 0x297ece16
+  name: "copy"
+  type_id: 0xb914bfab
+  offset: 192
+}
+member {
+  id: 0x29eb2553
+  name: "copy"
+  type_id: 0x2cfc2b94
+  offset: 512
+}
+member {
+  id: 0x29eb8c53
+  name: "copy"
+  type_id: 0x2c552b02
+  offset: 512
+}
+member {
+  id: 0xec1f94e7
+  name: "copy_align"
+  type_id: 0x5d9a121f
+  offset: 704
+}
+member {
+  id: 0x0462cbc1
+  name: "copy_file_range"
+  type_id: 0x0e04e6a8
+  offset: 1856
+}
+member {
+  id: 0x5d4ec39f
+  name: "copy_kernel"
+  type_id: 0x2cdf9930
+  offset: 768
+}
+member {
+  id: 0x67b3b991
+  name: "copy_len"
+  type_id: 0x35fdd62d
+}
+member {
+  id: 0x9bdfc0ed
+  name: "copy_timestamp"
+  type_id: 0x0c45f614
+  offset: 256
+}
+member {
+  id: 0xc38cba61
+  name: "copy_timestamp"
+  type_id: 0x4585663f
+  offset: 6535
+  bitsize: 1
+}
+member {
+  id: 0xca628fba
+  name: "copy_to_bounce_buffer"
+  type_id: 0x0d3fe44c
+  offset: 1728
+}
+member {
+  id: 0xc91146cb
+  name: "copy_user"
+  type_id: 0x2cdf9930
+  offset: 704
+}
+member {
+  id: 0xc91161ad
+  name: "copy_user"
+  type_id: 0x2cf480b7
+  offset: 2112
+}
+member {
+  id: 0xb5622c50
+  name: "copybreak"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0x3e7a09fb
+  name: "core"
+  type_id: 0x93da8a57
+  offset: 2816
+}
+member {
+  id: 0x3ed59949
+  name: "core"
+  type_id: 0x3c455255
+}
+member {
+  id: 0x3ef56c3a
+  name: "core"
+  type_id: 0x1cb0211a
+}
+member {
+  id: 0x3eff6b56
+  name: "core"
+  type_id: 0x16b3acfc
+  offset: 64
+}
+member {
+  id: 0x3eff6fb7
+  name: "core"
+  type_id: 0x16b3acfc
+}
+member {
+  id: 0x72471939
+  name: "core_dump"
+  type_id: 0x2e27223f
+  offset: 320
+}
+member {
+  id: 0xa04aea8b
+  name: "core_events"
+  type_id: 0x5408a5f2
+  offset: 2176
+}
+member {
+  id: 0x271b24e3
+  name: "core_id"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x984d2605
+  name: "core_init_notifier"
+  type_id: 0x4585663f
+  offset: 1
+  bitsize: 1
+}
+member {
+  id: 0xbd71f5b9
+  name: "core_internal_state__do_not_mess_with_it"
+  type_id: 0x4585663f
+  offset: 1056
+}
+member {
+  id: 0x7197fca1
+  name: "core_kallsyms"
+  type_id: 0xf5b61458
+  offset: 5696
+}
+member {
+  id: 0x5ae8cd27
+  name: "core_layout"
+  type_id: 0xde200f0c
+  offset: 3072
+}
+member {
+  id: 0x17bf2558
+  name: "core_relo_cnt"
+  type_id: 0xe62ebf07
+  offset: 928
+}
+member {
+  id: 0x81b926ef
+  name: "core_relo_rec_size"
+  type_id: 0xe62ebf07
+  offset: 1088
+}
+member {
+  id: 0x4a01ad88
+  name: "core_relos"
+  type_id: 0xedf277ba
+  offset: 1024
+}
+member {
+  id: 0xf33b87c9
+  name: "core_sibling"
+  type_id: 0x1c04d361
+  offset: 192
+}
+member {
+  id: 0x5e89eea1
+  name: "core_state"
+  type_id: 0x314812c5
+  offset: 960
+}
+member {
+  id: 0xcf176676
+  name: "core_stats"
+  type_id: 0x2658f937
+  offset: 3904
+}
+member {
+  id: 0x459cc3f0
+  name: "coredump"
+  type_id: 0x0c2a4dc8
+  offset: 1024
+}
+member {
+  id: 0x459e7a1f
+  name: "coredump"
+  type_id: 0x0e93a255
+  offset: 1024
+}
+member {
+  id: 0x28c91378
+  name: "coremem"
+  type_id: 0xedf277ba
+  offset: 1472
+}
+member {
+  id: 0xa64d7141
+  name: "cork"
+  type_id: 0x25fbbcbe
+  offset: 256
+}
+member {
+  id: 0x7105015a
+  name: "cork_bytes"
+  type_id: 0xc9082b19
+  offset: 160
+}
+member {
+  id: 0x71050590
+  name: "cork_bytes"
+  type_id: 0xc9082b19
+  offset: 5280
+}
+member {
+  id: 0xdcc78c50
+  name: "corrected_bits"
+  type_id: 0xec739179
+  offset: 1152
+}
+member {
+  id: 0xb083d4fc
+  name: "corrected_blocks"
+  type_id: 0xec739179
+}
+member {
+  id: 0x3a5aba43
+  name: "correction"
+  type_id: 0x7877cd32
+  offset: 64
+}
+member {
+  id: 0x91b27035
+  name: "cost"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x1ee75211
+  name: "cot"
+  type_id: 0x914dbfdc
+  offset: 32
+}
+member {
+  id: 0xf73481c1
+  name: "coublock"
+  type_id: 0x33756485
+  offset: 4736
+}
+member {
+  id: 0x650b54b4
+  name: "count"
+  type_id: 0x2e0f9112
+  offset: 64
+}
+member {
+  id: 0x65162362
+  name: "count"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x65162e41
+  name: "count"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x652ca453
+  name: "count"
+  type_id: 0x09f9643d
+  offset: 1408
+}
+member {
+  id: 0x652ef51f
+  name: "count"
+  type_id: 0x0baa70a7
+  offset: 256
+}
+member {
+  id: 0x653a1219
+  name: "count"
+  type_id: 0x1f4573ef
+  offset: 768
+}
+member {
+  id: 0x6542722c
+  name: "count"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x6542733c
+  name: "count"
+  type_id: 0x6720d32f
+  offset: 4096
+}
+member {
+  id: 0x65427665
+  name: "count"
+  type_id: 0x6720d32f
+  offset: 576
+}
+member {
+  id: 0x65427694
+  name: "count"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0x654276d5
+  name: "count"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x65427bf6
+  name: "count"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x65427c3b
+  name: "count"
+  type_id: 0x6720d32f
+  offset: 1664
+}
+member {
+  id: 0x65427e85
+  name: "count"
+  type_id: 0x6720d32f
+  offset: 384
+}
+member {
+  id: 0x65427f17
+  name: "count"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x65503eb0
+  name: "count"
+  type_id: 0x75617428
+}
+member {
+  id: 0x6551849a
+  name: "count"
+  type_id: 0x74d29cf1
+  offset: 128
+}
+member {
+  id: 0x65518d58
+  name: "count"
+  type_id: 0x74d29cf1
+}
+member {
+  id: 0x65518df3
+  name: "count"
+  type_id: 0x74d29cf1
+  offset: 256
+}
+member {
+  id: 0x65518e7c
+  name: "count"
+  type_id: 0x74d29cf1
+  offset: 224
+}
+member {
+  id: 0x6560d021
+  name: "count"
+  type_id: 0x4585663f
+  offset: 1344
+}
+member {
+  id: 0x6560d383
+  name: "count"
+  type_id: 0x4585663f
+  offset: 1056
+}
+member {
+  id: 0x6560d3d0
+  name: "count"
+  type_id: 0x4585663f
+  offset: 576
+}
+member {
+  id: 0x6560d799
+  name: "count"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x6560da09
+  name: "count"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0x6560daa2
+  name: "count"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x6560dcdb
+  name: "count"
+  type_id: 0x4585663f
+  offset: 640
+}
+member {
+  id: 0x6560de43
+  name: "count"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x657075e2
+  name: "count"
+  type_id: 0x5522ef22
+  offset: 192
+}
+member {
+  id: 0x6578d02f
+  name: "count"
+  type_id: 0x5d8155a5
+  offset: 16
+}
+member {
+  id: 0x6582703e
+  name: "count"
+  type_id: 0xa722c13e
+  offset: 32
+}
+member {
+  id: 0x658270e5
+  name: "count"
+  type_id: 0xa722c13e
+  offset: 160
+}
+member {
+  id: 0x65827d05
+  name: "count"
+  type_id: 0xa722c13e
+}
+member {
+  id: 0x6585181a
+  name: "count"
+  type_id: 0xa047de54
+}
+member {
+  id: 0x659574f1
+  name: "count"
+  type_id: 0xb02b353a
+}
+member {
+  id: 0x65b0d7d8
+  name: "count"
+  type_id: 0x958527d1
+  offset: 32
+}
+member {
+  id: 0x65b4127b
+  name: "count"
+  type_id: 0x914dbfdc
+}
+member {
+  id: 0x65b77cf7
+  name: "count"
+  type_id: 0x92233392
+}
+member {
+  id: 0x65c3717b
+  name: "count"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x65c371d0
+  name: "count"
+  type_id: 0xe62ebf07
+  offset: 256
+}
+member {
+  id: 0x65c37c40
+  name: "count"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x65c8ad18
+  name: "count"
+  type_id: 0xedf277ba
+  offset: 256
+}
+member {
+  id: 0x65d16265
+  name: "count"
+  type_id: 0xf435685e
+  offset: 192
+}
+member {
+  id: 0x65d1636e
+  name: "count"
+  type_id: 0xf435685e
+  offset: 128
+}
+member {
+  id: 0x65d16e4d
+  name: "count"
+  type_id: 0xf435685e
+  offset: 64
+}
+member {
+  id: 0x65d95538
+  name: "count"
+  type_id: 0xfc0e1dbd
+  offset: 64
+}
+member {
+  id: 0x65ec530e
+  name: "count"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x65ec5744
+  name: "count"
+  type_id: 0xc9082b19
+  offset: 256
+}
+member {
+  id: 0x65ec57ef
+  name: "count"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x65ec5e2d
+  name: "count"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0x6a729dee
+  name: "count_buckets"
+  type_id: 0x914dbfdc
+  offset: 128
+}
+member {
+  id: 0xa5eec422
+  name: "count_objects"
+  type_id: 0x0484940b
+}
+member {
+  id: 0x20014498
+  name: "counter"
+  type_id: 0x2e0f9112
+}
+member {
+  id: 0x20486bda
+  name: "counter"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x20bd6891
+  name: "counter"
+  type_id: 0x92233392
+  offset: 256
+}
+member {
+  id: 0x9227b221
+  name: "counters"
+  type_id: 0x33756485
+}
+member {
+  id: 0x922b5075
+  name: "counters"
+  type_id: 0x3f979b84
+  offset: 256
+}
+member {
+  id: 0x9242f52a
+  name: "counters"
+  type_id: 0x563b3475
+  offset: 2944
+}
+member {
+  id: 0x9242f828
+  name: "counters"
+  type_id: 0x563b3475
+  offset: 352
+}
+member {
+  id: 0x9242fbb6
+  name: "counters"
+  type_id: 0x563b3475
+  offset: 320
+}
+member {
+  id: 0x1427851b
+  name: "country"
+  type_id: 0x4585663f
+  offset: 576
+}
+member {
+  id: 0x299e683b
+  name: "country_ie_env"
+  type_id: 0x07d29d85
+  offset: 320
+}
+member {
+  id: 0x70db1c35
+  name: "coupled_rdevs"
+  type_id: 0x094e2874
+}
+member {
+  id: 0x7e68a235
+  name: "coupler"
+  type_id: 0x2a79f2e5
+  offset: 64
+}
+member {
+  id: 0x0760784f
+  name: "coupling_desc"
+  type_id: 0x53faf1e7
+  offset: 448
+}
+member {
+  id: 0x1d9e0f02
+  name: "coverage_class"
+  type_id: 0x295c7202
+  offset: 1664
+}
+member {
+  id: 0x5fd6b737
+  name: "cow_metrics"
+  type_id: 0x136b7b0f
+  offset: 320
+}
+member {
+  id: 0x692bdd3b
+  name: "cow_page"
+  type_id: 0x06835e9c
+  offset: 576
+}
+member {
+  id: 0x9dd1008b
+  name: "cpd"
+  type_id: 0xac2791e9
+  offset: 2176
+}
+member {
+  id: 0xdf1e9756
+  name: "cpd_alloc_fn"
+  type_id: 0x3a1b117d
+  offset: 192
+}
+member {
+  id: 0xda9f8f9e
+  name: "cpd_bind_fn"
+  type_id: 0x301f8bca
+  offset: 384
+}
+member {
+  id: 0x9ff69a44
+  name: "cpd_free_fn"
+  type_id: 0x1c9f0c4b
+  offset: 320
+}
+member {
+  id: 0x2a998965
+  name: "cpd_init_fn"
+  type_id: 0x21ebac93
+  offset: 256
+}
+member {
+  id: 0x9ba00ef7
+  name: "cpl"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x92c2a1ed
+  name: "cpp"
+  type_id: 0x861a0f9a
+}
+member {
+  id: 0x0cc65d59
+  name: "cptr_el2"
+  type_id: 0x92233392
+  offset: 14976
+}
+member {
+  id: 0x510c8cb9
+  name: "cpu"
+  type_id: 0x0a1d1ec5
+  offset: 384
+}
+member {
+  id: 0x51431677
+  name: "cpu"
+  type_id: 0x4585663f
+  offset: 224
+}
+member {
+  id: 0x51431868
+  name: "cpu"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x51431d9a
+  name: "cpu"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0x51431e4b
+  name: "cpu"
+  type_id: 0x4585663f
+  offset: 512
+}
+member {
+  id: 0x51431e4e
+  name: "cpu"
+  type_id: 0x4585663f
+  offset: 1856
+}
+member {
+  id: 0x5161b04d
+  name: "cpu"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0x5161b0e6
+  name: "cpu"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x5161b407
+  name: "cpu"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x5161b965
+  name: "cpu"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0x5161ba40
+  name: "cpu"
+  type_id: 0x6720d32f
+  offset: 896
+}
+member {
+  id: 0x5161bb06
+  name: "cpu"
+  type_id: 0x6720d32f
+  offset: 24064
+}
+member {
+  id: 0x5161bb99
+  name: "cpu"
+  type_id: 0x6720d32f
+  offset: 5216
+}
+member {
+  id: 0x5161bddd
+  name: "cpu"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x5161bf8c
+  name: "cpu"
+  type_id: 0x6720d32f
+  offset: 2816
+}
+member {
+  id: 0x5161bf9a
+  name: "cpu"
+  type_id: 0x6720d32f
+  offset: 67648
+}
+member {
+  id: 0x5197dd8a
+  name: "cpu"
+  type_id: 0x914dbfdc
+}
+member {
+  id: 0x51cf981e
+  name: "cpu"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x51cf9fd9
+  name: "cpu"
+  type_id: 0xc9082b19
+  offset: 320
+}
+member {
+  id: 0x51e0b055
+  name: "cpu"
+  type_id: 0xe62ebf07
+  offset: 544
+}
+member {
+  id: 0x51e0ba6b
+  name: "cpu"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x4c158848
+  name: "cpu_addr_fixup"
+  type_id: 0x1c275b9b
+}
+member {
+  id: 0x73c33355
+  name: "cpu_base"
+  type_id: 0x03965d61
+}
+member {
+  id: 0x1e7e63bb
+  name: "cpu_bitmap"
+  type_id: 0xc8e4d7d1
+  offset: 7680
+}
+member {
+  id: 0x2477916c
+  name: "cpu_bstats"
+  type_id: 0x01de2d7a
+  offset: 1216
+}
+member {
+  id: 0x247795d1
+  name: "cpu_bstats"
+  type_id: 0x01de2d7a
+  offset: 640
+}
+member {
+  id: 0x24779a6a
+  name: "cpu_bstats"
+  type_id: 0x01de2d7a
+  offset: 128
+}
+member {
+  id: 0x24779b61
+  name: "cpu_bstats"
+  type_id: 0x01de2d7a
+  offset: 192
+}
+member {
+  id: 0xbed4bd15
+  name: "cpu_bstats_hw"
+  type_id: 0x01de2d7a
+  offset: 1280
+}
+member {
+  id: 0x8a56cb6c
+  name: "cpu_buffer"
+  type_id: 0x27461240
+}
+member {
+  id: 0xe41a4728
+  name: "cpu_capacity"
+  type_id: 0x33756485
+  offset: 23232
+}
+member {
+  id: 0x7991c9b0
+  name: "cpu_capacity_inverted"
+  type_id: 0x33756485
+  offset: 23360
+}
+member {
+  id: 0xfa8789a6
+  name: "cpu_capacity_orig"
+  type_id: 0x33756485
+  offset: 23296
+}
+member {
+  id: 0xe35f2973
+  name: "cpu_cnt"
+  type_id: 0xe8c376d6
+}
+member {
+  id: 0xda98dd92
+  name: "cpu_context"
+  type_id: 0xa15c4428
+}
+member {
+  id: 0x5c554660
+  name: "cpu_count"
+  type_id: 0xedf277ba
+  offset: 128
+}
+member {
+  id: 0xdd226fa3
+  name: "cpu_delay_total"
+  type_id: 0xedf277ba
+  offset: 192
+}
+member {
+  id: 0x36e273a2
+  name: "cpu_entry"
+  type_id: 0x0c2a8876
+  offset: 896
+}
+member {
+  id: 0xe59bd450
+  name: "cpu_file"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0xaa7a9d82
+  name: "cpu_mask"
+  type_id: 0x99caa0ae
+  offset: 5568
+}
+member {
+  id: 0xf19eb492
+  name: "cpu_partial"
+  type_id: 0x4585663f
+  offset: 352
+}
+member {
+  id: 0xe49a363c
+  name: "cpu_partial_slabs"
+  type_id: 0x4585663f
+  offset: 384
+}
+member {
+  id: 0x502de800
+  name: "cpu_pm_nb"
+  type_id: 0x449a775b
+  offset: 3840
+}
+member {
+  id: 0xd7b3f93b
+  name: "cpu_pwqs"
+  type_id: 0x2033e582
+  offset: 2112
+}
+member {
+  id: 0x0d67a595
+  name: "cpu_qstats"
+  type_id: 0x0d84b99b
+  offset: 1344
+}
+member {
+  id: 0x0d67a7df
+  name: "cpu_qstats"
+  type_id: 0x0d84b99b
+  offset: 192
+}
+member {
+  id: 0x0d67ad2b
+  name: "cpu_qstats"
+  type_id: 0x0d84b99b
+  offset: 704
+}
+member {
+  id: 0x635d61e3
+  name: "cpu_rcaches"
+  type_id: 0x353b375a
+  offset: 2176
+}
+member {
+  id: 0x4b09e1eb
+  name: "cpu_run_real_total"
+  type_id: 0xedf277ba
+  offset: 512
+}
+member {
+  id: 0xbbcec457
+  name: "cpu_run_virtual_total"
+  type_id: 0xedf277ba
+  offset: 576
+}
+member {
+  id: 0xb9c6b9bb
+  name: "cpu_scaled_run_real_total"
+  type_id: 0xedf277ba
+  offset: 2432
+}
+member {
+  id: 0xc348a85a
+  name: "cpu_slab"
+  type_id: 0x017ab87c
+}
+member {
+  id: 0x90ec0ff1
+  name: "cpu_start"
+  type_id: 0xbdd18903
+}
+member {
+  id: 0xf4908fab
+  name: "cpu_stat"
+  type_id: 0x25296a8e
+  offset: 576
+}
+member {
+  id: 0xf60aae61
+  name: "cpu_to_pri"
+  type_id: 0x13580d6c
+  offset: 12928
+}
+member {
+  id: 0x0c15d92b
+  name: "cpudl"
+  type_id: 0x80033d45
+  offset: 704
+}
+member {
+  id: 0xba9bf5f9
+  name: "cpufeature"
+  type_id: 0x914dbfdc
+  offset: 64
+}
+member {
+  id: 0x3e96c2a6
+  name: "cpuhp_dead"
+  type_id: 0x49a73111
+  offset: 1984
+}
+member {
+  id: 0x3e96ca68
+  name: "cpuhp_dead"
+  type_id: 0x49a73111
+  offset: 3456
+}
+member {
+  id: 0x3e96ca84
+  name: "cpuhp_dead"
+  type_id: 0x49a73111
+  offset: 896
+}
+member {
+  id: 0xe9799532
+  name: "cpuhp_memreserve_state"
+  type_id: 0x6720d32f
+  offset: 320
+}
+member {
+  id: 0x01bd5464
+  name: "cpuhp_node"
+  type_id: 0x49a73111
+  offset: 576
+}
+member {
+  id: 0xabb97df2
+  name: "cpuhp_online"
+  type_id: 0x49a73111
+  offset: 3328
+}
+member {
+  id: 0xa23941e9
+  name: "cpuinfo"
+  type_id: 0x4f905e63
+}
+member {
+  id: 0xa239462e
+  name: "cpuinfo"
+  type_id: 0x4f905e63
+  offset: 320
+}
+member {
+  id: 0x3d044c2f
+  name: "cpumask"
+  type_id: 0x310ec01d
+  offset: 1408
+}
+member {
+  id: 0x3d0db600
+  name: "cpumask"
+  type_id: 0x38fa32ef
+  offset: 8576
+}
+member {
+  id: 0x3dac8304
+  name: "cpumask"
+  type_id: 0x99caa0ae
+  offset: 1600
+}
+member {
+  id: 0x3dac837e
+  name: "cpumask"
+  type_id: 0x99caa0ae
+  offset: 128
+}
+member {
+  id: 0x3dac8e5d
+  name: "cpumask"
+  type_id: 0x99caa0ae
+  offset: 64
+}
+member {
+  id: 0x3dfda460
+  name: "cpumask"
+  type_id: 0xc8e4d7d1
+  offset: 256
+}
+member {
+  id: 0x3dfda559
+  name: "cpumask"
+  type_id: 0xc8e4d7d1
+  offset: 384
+}
+member {
+  id: 0x954a0e7b
+  name: "cpupri"
+  type_id: 0x99ad16f8
+  offset: 1472
+}
+member {
+  id: 0xe7102ce7
+  name: "cpus"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0xe76a6b02
+  name: "cpus"
+  type_id: 0x1d63cfed
+  offset: 128
+}
+member {
+  id: 0xe7976327
+  name: "cpus"
+  type_id: 0xe06ae107
+  offset: 192
+}
+member {
+  id: 0xe7bfed11
+  name: "cpus"
+  type_id: 0xc8e4d7d1
+  offset: 192
+}
+member {
+  id: 0xe7eec35c
+  name: "cpus"
+  type_id: 0x99caa0ae
+  offset: 10624
+}
+member {
+  id: 0xe7eecbaf
+  name: "cpus"
+  type_id: 0x99caa0ae
+}
+member {
+  id: 0x25ed619c
+  name: "cpus_mask"
+  type_id: 0x1c04d361
+  offset: 9472
+}
+member {
+  id: 0xffa6f833
+  name: "cpus_ptr"
+  type_id: 0x3c540ff9
+  offset: 9344
+}
+member {
+  id: 0x48664d9e
+  name: "cpuset_mem_spread_rotor"
+  type_id: 0x6720d32f
+  offset: 20576
+}
+member {
+  id: 0x7b88834f
+  name: "cpuset_slab_spread_rotor"
+  type_id: 0x6720d32f
+  offset: 20608
+}
+member {
+  id: 0x86895467
+  name: "cpustat"
+  type_id: 0x5362e84a
+}
+member {
+  id: 0x431ecfd7
+  name: "cputime"
+  type_id: 0x4e9556c5
+}
+member {
+  id: 0x080536ca
+  name: "cputime_atomic"
+  type_id: 0xf782715b
+}
+member {
+  id: 0xf3711bd1
+  name: "cputimer"
+  type_id: 0x836a8aa9
+  offset: 2112
+}
+member {
+  id: 0x1d22b02d
+  name: "cq"
+  type_id: 0x1b749a04
+  offset: 1088
+}
+member {
+  id: 0x1d5443ea
+  name: "cq"
+  type_id: 0x6d8d3492
+  offset: 1024
+}
+member {
+  id: 0x63c06ea2
+  name: "cq_entries"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0xea12dcb9
+  name: "cq_ev_fd"
+  type_id: 0x3e02e685
+}
+member {
+  id: 0xfb199cec
+  name: "cq_extra"
+  type_id: 0x4585663f
+  offset: 448
+}
+member {
+  id: 0xdd74d5b6
+  name: "cq_flags"
+  type_id: 0xc9082b19
+  offset: 2240
+}
+member {
+  id: 0x26014798
+  name: "cq_head_slot"
+  type_id: 0xc9082b19
+  offset: 672
+}
+member {
+  id: 0xfd245dad
+  name: "cq_last_tm_flush"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0x13ba197e
+  name: "cq_lock"
+  type_id: 0xf313e71a
+  offset: 1792
+}
+member {
+  id: 0x13ba1d30
+  name: "cq_lock"
+  type_id: 0xf313e71a
+  offset: 704
+}
+member {
+  id: 0x456f3d17
+  name: "cq_overflow"
+  type_id: 0xc9082b19
+  offset: 2272
+}
+member {
+  id: 0x0bf94151
+  name: "cq_overflow_list"
+  type_id: 0xd3c80119
+  offset: 2176
+}
+member {
+  id: 0xc9e08424
+  name: "cq_ring_entries"
+  type_id: 0xc9082b19
+  offset: 2144
+}
+member {
+  id: 0x59a9a4d1
+  name: "cq_ring_mask"
+  type_id: 0xc9082b19
+  offset: 2080
+}
+member {
+  id: 0x2aca7ebe
+  name: "cq_tail_slot"
+  type_id: 0xc9082b19
+  offset: 640
+}
+member {
+  id: 0x3a067635
+  name: "cq_timeouts"
+  type_id: 0x74d29cf1
+  offset: 32
+}
+member {
+  id: 0x4987e905
+  name: "cq_wait"
+  type_id: 0x76e1f83e
+  offset: 256
+}
+member {
+  id: 0x711d898e
+  name: "cqe"
+  type_id: 0x2662a905
+  offset: 960
+}
+member {
+  id: 0x71ba730f
+  name: "cqe"
+  type_id: 0x8199a9b2
+  offset: 576
+}
+member {
+  id: 0xa8b4409a
+  name: "cqe_base_addr"
+  type_id: 0x2662a905
+  offset: 384
+}
+member {
+  id: 0xa2af5714
+  name: "cqe_busy"
+  type_id: 0x4585663f
+  offset: 1920
+}
+member {
+  id: 0x1fe3938f
+  name: "cqe_cached"
+  type_id: 0x25fa8fb1
+}
+member {
+  id: 0x8463fadc
+  name: "cqe_disable"
+  type_id: 0x0dd7b940
+  offset: 64
+}
+member {
+  id: 0x3a8bfc8d
+  name: "cqe_dma_addr"
+  type_id: 0xe02e14d6
+  offset: 448
+}
+member {
+  id: 0xe10ed008
+  name: "cqe_enable"
+  type_id: 0x2e93f0ca
+}
+member {
+  id: 0xe9079b05
+  name: "cqe_enabled"
+  type_id: 0x6d7f5ff6
+  offset: 12320
+}
+member {
+  id: 0xb465cbc3
+  name: "cqe_err_ier"
+  type_id: 0xc9082b19
+  offset: 9728
+}
+member {
+  id: 0x5a4af70d
+  name: "cqe_ier"
+  type_id: 0xc9082b19
+  offset: 9696
+}
+member {
+  id: 0x07120003
+  name: "cqe_off"
+  type_id: 0x0dd7b940
+  offset: 256
+}
+member {
+  id: 0x1fb39a4a
+  name: "cqe_on"
+  type_id: 0x6d7f5ff6
+  offset: 9664
+}
+member {
+  id: 0x1fb39acc
+  name: "cqe_on"
+  type_id: 0x6d7f5ff6
+  offset: 12328
+}
+member {
+  id: 0x598e7142
+  name: "cqe_ops"
+  type_id: 0x37fc3fc4
+  offset: 12160
+}
+member {
+  id: 0xba80e69a
+  name: "cqe_post_req"
+  type_id: 0x0dfe95f2
+  offset: 192
+}
+member {
+  id: 0x94974a29
+  name: "cqe_private"
+  type_id: 0x18bd6530
+  offset: 12224
+}
+member {
+  id: 0x51e1a9e8
+  name: "cqe_qdepth"
+  type_id: 0x6720d32f
+  offset: 12288
+}
+member {
+  id: 0x82f1252c
+  name: "cqe_recovery_finish"
+  type_id: 0x0dd7b940
+  offset: 512
+}
+member {
+  id: 0x36d7ef94
+  name: "cqe_recovery_start"
+  type_id: 0x0dd7b940
+  offset: 448
+}
+member {
+  id: 0x5e9a8bd6
+  name: "cqe_request"
+  type_id: 0x2eb8b95d
+  offset: 128
+}
+member {
+  id: 0x9f37846b
+  name: "cqe_sentinel"
+  type_id: 0x25fa8fb1
+  offset: 64
+}
+member {
+  id: 0x88b01fb3
+  name: "cqe_size"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0xe4f0e93f
+  name: "cqe_timeout"
+  type_id: 0x36708ba9
+  offset: 384
+}
+member {
+  id: 0xec8c247e
+  name: "cqe_wait_for_idle"
+  type_id: 0x2e9195ef
+  offset: 320
+}
+member {
+  id: 0xa1a6b71e
+  name: "cqes"
+  type_id: 0xeb5338e6
+  offset: 2560
+}
+member {
+  id: 0x62614b1c
+  name: "cqm_config"
+  type_id: 0x2706dc09
+  offset: 2176
+}
+member {
+  id: 0x00fa5522
+  name: "cr8"
+  type_id: 0xedf277ba
+  offset: 128
+}
+member {
+  id: 0xf3e73479
+  name: "cra_alignmask"
+  type_id: 0x4585663f
+  offset: 352
+}
+member {
+  id: 0xa5df205b
+  name: "cra_blocksize"
+  type_id: 0x4585663f
+  offset: 288
+}
+member {
+  id: 0xc04ce98c
+  name: "cra_ctxsize"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0xc4bf7ab0
+  name: "cra_destroy"
+  type_id: 0x0ebbc201
+  offset: 2944
+}
+member {
+  id: 0x12156763
+  name: "cra_driver_name"
+  type_id: 0x20fd6195
+  offset: 1472
+}
+member {
+  id: 0xb3bdadb2
+  name: "cra_exit"
+  type_id: 0x0f2a6d84
+  offset: 2880
+}
+member {
+  id: 0x0802328a
+  name: "cra_flags"
+  type_id: 0xc9082b19
+  offset: 256
+}
+member {
+  id: 0x8edfada6
+  name: "cra_init"
+  type_id: 0x2c6c412b
+  offset: 2816
+}
+member {
+  id: 0xe7daba87
+  name: "cra_list"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0xee07459a
+  name: "cra_module"
+  type_id: 0x0b27dc43
+  offset: 3008
+}
+member {
+  id: 0xec7cf9e6
+  name: "cra_name"
+  type_id: 0x20fd6195
+  offset: 448
+}
+member {
+  id: 0xd1e068af
+  name: "cra_priority"
+  type_id: 0x6720d32f
+  offset: 384
+}
+member {
+  id: 0xfb3f119b
+  name: "cra_refcnt"
+  type_id: 0xa722c13e
+  offset: 416
+}
+member {
+  id: 0x73195eef
+  name: "cra_type"
+  type_id: 0x37944814
+  offset: 2496
+}
+member {
+  id: 0x10f96635
+  name: "cra_u"
+  type_id: 0x65af0602
+  offset: 2560
+}
+member {
+  id: 0xe7254ce9
+  name: "cra_users"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0x2b54aafe
+  name: "crash_cnt"
+  type_id: 0x4585663f
+  offset: 9728
+}
+member {
+  id: 0xedefbe2b
+  name: "crash_handler"
+  type_id: 0x1f3c8679
+  offset: 9344
+}
+member {
+  id: 0x5200f72d
+  name: "crc"
+  type_id: 0x33756485
+}
+member {
+  id: 0x52943caf
+  name: "crc"
+  type_id: 0xa7b169d5
+  offset: 12288
+}
+member {
+  id: 0xeff5afc8
+  name: "crcount"
+  type_id: 0x5d8155a5
+  offset: 1096
+}
+member {
+  id: 0x930c52d3
+  name: "crcs"
+  type_id: 0x30d5aa47
+  offset: 2048
+}
+member {
+  id: 0x934c6151
+  name: "crcs"
+  type_id: 0x70e54b38
+  offset: 64
+}
+member {
+  id: 0x110caede
+  name: "creadr"
+  type_id: 0xc9082b19
+  offset: 1088
+}
+member {
+  id: 0x0fad648a
+  name: "create"
+  type_id: 0x2e1b59dd
+  offset: 64
+}
+member {
+  id: 0x0fae5380
+  name: "create"
+  type_id: 0x2d2c5320
+  offset: 64
+}
+member {
+  id: 0x0fae5706
+  name: "create"
+  type_id: 0x2d2c3400
+}
+member {
+  id: 0x0fae5a9f
+  name: "create"
+  type_id: 0x2d29646e
+  offset: 192
+}
+member {
+  id: 0x0fae6cff
+  name: "create"
+  type_id: 0x2d100adf
+  offset: 320
+}
+member {
+  id: 0x0faee1ca
+  name: "create"
+  type_id: 0x2d9af8f5
+}
+member {
+  id: 0x0faeee43
+  name: "create"
+  type_id: 0x2d957119
+}
+member {
+  id: 0x0faf7ca9
+  name: "create"
+  type_id: 0x2c073044
+  offset: 256
+}
+member {
+  id: 0x506dd939
+  name: "create"
+  type_id: 0x4585663f
+  offset: 7712
+  bitsize: 1
+}
+member {
+  id: 0x835b379d
+  name: "create_channel"
+  type_id: 0x227b563c
+}
+member {
+  id: 0x0394a0b1
+  name: "create_ept"
+  type_id: 0x19a4bd22
+  offset: 128
+}
+member {
+  id: 0x2c60906b
+  name: "create_handle"
+  type_id: 0x2effd3d1
+  offset: 64
+}
+member {
+  id: 0xf1e61a6b
+  name: "create_private_mapping"
+  type_id: 0x26d8ba52
+}
+member {
+  id: 0x0cf44151
+  name: "create_work_queue"
+  type_id: 0x4585663f
+  offset: 2720
+  bitsize: 1
+}
+member {
+  id: 0x92faaaee
+  name: "created"
+  type_id: 0x6d7f5ff6
+  offset: 4448
+}
+member {
+  id: 0x221ad62a
+  name: "created_vcpus"
+  type_id: 0x6720d32f
+  offset: 18752
+}
+member {
+  id: 0xced3c28a
+  name: "cred"
+  type_id: 0x30650ba6
+  offset: 832
+}
+member {
+  id: 0xced3c749
+  name: "cred"
+  type_id: 0x30650ba6
+  offset: 640
+}
+member {
+  id: 0xced3c7ed
+  name: "cred"
+  type_id: 0x30650ba6
+  offset: 16832
+}
+member {
+  id: 0xced3c9f9
+  name: "cred"
+  type_id: 0x30650ba6
+  offset: 192
+}
+member {
+  id: 0xcedef855
+  name: "cred"
+  type_id: 0x3d551c03
+  offset: 576
+}
+member {
+  id: 0xe5afa084
+  name: "cred_guard_mutex"
+  type_id: 0xa7c362b0
+  offset: 7872
+}
+member {
+  id: 0xa26b49c5
+  name: "creds"
+  type_id: 0x30650ba6
+  offset: 1536
+}
+member {
+  id: 0x6d5ff609
+  name: "critical"
+  type_id: 0x0cd878db
+  offset: 896
+}
+member {
+  id: 0x5f13186b
+  name: "critical_end"
+  type_id: 0x33756485
+  offset: 320
+}
+member {
+  id: 0x48bc0aa5
+  name: "critical_sequence"
+  type_id: 0x33756485
+  offset: 384
+}
+member {
+  id: 0xe3e2d9db
+  name: "critical_start"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0x605c9c46
+  name: "crt_flags"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x9e419013
+  name: "crtc"
+  type_id: 0x315b7e01
+  offset: 1408
+}
+member {
+  id: 0x9e4192e0
+  name: "crtc"
+  type_id: 0x315b7e01
+}
+member {
+  id: 0x9e419499
+  name: "crtc"
+  type_id: 0x315b7e01
+  offset: 640
+}
+member {
+  id: 0x9e419601
+  name: "crtc"
+  type_id: 0x315b7e01
+  offset: 64
+}
+member {
+  id: 0x9e9fe480
+  name: "crtc"
+  type_id: 0xef2d1e99
+}
+member {
+  id: 0x2aaff248
+  name: "crtc_clock"
+  type_id: 0x6720d32f
+  offset: 224
+}
+member {
+  id: 0x88e80467
+  name: "crtc_h"
+  type_id: 0x1c3dbe5a
+  offset: 352
+}
+member {
+  id: 0xc3ec1934
+  name: "crtc_hblank_end"
+  type_id: 0x914dbfdc
+  offset: 288
+}
+member {
+  id: 0xf879b467
+  name: "crtc_hblank_start"
+  type_id: 0x914dbfdc
+  offset: 272
+}
+member {
+  id: 0xbbefd855
+  name: "crtc_hdisplay"
+  type_id: 0x914dbfdc
+  offset: 256
+}
+member {
+  id: 0xd6397b05
+  name: "crtc_hskew"
+  type_id: 0x914dbfdc
+  offset: 352
+}
+member {
+  id: 0xbd234a22
+  name: "crtc_hsync_end"
+  type_id: 0x914dbfdc
+  offset: 320
+}
+member {
+  id: 0xf00ec958
+  name: "crtc_hsync_start"
+  type_id: 0x914dbfdc
+  offset: 304
+}
+member {
+  id: 0x47a85d6c
+  name: "crtc_htotal"
+  type_id: 0x914dbfdc
+  offset: 336
+}
+member {
+  id: 0xa7e520f4
+  name: "crtc_id"
+  type_id: 0xe62ebf07
+  offset: 224
+}
+member {
+  id: 0x2c003612
+  name: "crtc_list"
+  type_id: 0xd3c80119
+  offset: 3584
+}
+member {
+  id: 0x929bb2fb
+  name: "crtc_vblank_end"
+  type_id: 0x914dbfdc
+  offset: 400
+}
+member {
+  id: 0x95394aa0
+  name: "crtc_vblank_start"
+  type_id: 0x914dbfdc
+  offset: 384
+}
+member {
+  id: 0x60012b2c
+  name: "crtc_vdisplay"
+  type_id: 0x914dbfdc
+  offset: 368
+}
+member {
+  id: 0xb4552627
+  name: "crtc_vsync_end"
+  type_id: 0x914dbfdc
+  offset: 432
+}
+member {
+  id: 0x1e860476
+  name: "crtc_vsync_start"
+  type_id: 0x914dbfdc
+  offset: 416
+}
+member {
+  id: 0x3fb54490
+  name: "crtc_vtotal"
+  type_id: 0x914dbfdc
+  offset: 448
+}
+member {
+  id: 0xdfe48a5c
+  name: "crtc_w"
+  type_id: 0x1c3dbe5a
+  offset: 320
+}
+member {
+  id: 0x9c600bb5
+  name: "crtc_x"
+  type_id: 0x5171d297
+  offset: 256
+}
+member {
+  id: 0x5d206311
+  name: "crtc_y"
+  type_id: 0x5171d297
+  offset: 288
+}
+member {
+  id: 0x04f04c11
+  name: "crtcs"
+  type_id: 0x1660fa38
+  offset: 256
+}
+member {
+  id: 0xe6077053
+  name: "crypt_ctx"
+  type_id: 0x0a224652
+  offset: 1024
+}
+member {
+  id: 0xf3c26547
+  name: "crypt_keyslot"
+  type_id: 0x039cec64
+  offset: 1088
+}
+member {
+  id: 0xc7060855
+  name: "cryptlen"
+  type_id: 0x4585663f
+  offset: 416
+}
+member {
+  id: 0xc7060a35
+  name: "cryptlen"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x66da184b
+  name: "crypto_cap_array"
+  type_id: 0x336c14b5
+  offset: 37120
+}
+member {
+  id: 0xba2ba9b6
+  name: "crypto_cap_idx"
+  type_id: 0x295c7202
+  offset: 520
+}
+member {
+  id: 0x72f8cfcb
+  name: "crypto_capabilities"
+  type_id: 0x783fe198
+  offset: 37056
+}
+member {
+  id: 0x8dfe7069
+  name: "crypto_cfg"
+  type_id: 0x9a7b04ca
+}
+member {
+  id: 0xf51396d0
+  name: "crypto_cfg_register"
+  type_id: 0xc9082b19
+  offset: 37184
+}
+member {
+  id: 0xbd8a47cb
+  name: "crypto_ctx"
+  type_id: 0x3db8dd32
+  offset: 1024
+}
+member {
+  id: 0xaa6d1f47
+  name: "crypto_key"
+  type_id: 0x39fc1b17
+}
+member {
+  id: 0x9e40d915
+  name: "crypto_key_slot"
+  type_id: 0x6720d32f
+  offset: 1088
+}
+member {
+  id: 0x9e40dc90
+  name: "crypto_key_slot"
+  type_id: 0x6720d32f
+  offset: 960
+}
+member {
+  id: 0x035ef70e
+  name: "crypto_kobject"
+  type_id: 0x23f09c34
+  offset: 2240
+}
+member {
+  id: 0xad02928b
+  name: "crypto_mode"
+  type_id: 0x82011f33
+}
+member {
+  id: 0x54976380
+  name: "crypto_profile"
+  type_id: 0x0815495d
+  offset: 12352
+}
+member {
+  id: 0x54976880
+  name: "crypto_profile"
+  type_id: 0x0815495d
+  offset: 37248
+}
+member {
+  id: 0x5497e671
+  name: "crypto_profile"
+  type_id: 0x08956bf0
+  offset: 2176
+}
+member {
+  id: 0x9ea9cecd
+  name: "cs"
+  type_id: 0x1462a9ec
+  offset: 64
+}
+member {
+  id: 0x2206cfe9
+  name: "cs_change"
+  type_id: 0x4585663f
+  offset: 578
+  bitsize: 1
+}
+member {
+  id: 0x246f0250
+  name: "cs_change_delay"
+  type_id: 0x120d5977
+  offset: 640
+}
+member {
+  id: 0x7c8cfa37
+  name: "cs_gpiod"
+  type_id: 0x2560a232
+  offset: 8000
+}
+member {
+  id: 0xa5c65b9e
+  name: "cs_gpiods"
+  type_id: 0x03c8112b
+  offset: 11712
+}
+member {
+  id: 0x80f06bf6
+  name: "cs_hold"
+  type_id: 0x120d5977
+  offset: 8128
+}
+member {
+  id: 0xb231a519
+  name: "cs_hsize"
+  type_id: 0x6720d32f
+  offset: 1472
+}
+member {
+  id: 0xed1538d9
+  name: "cs_id"
+  type_id: 0x7dad9728
+  offset: 256
+}
+member {
+  id: 0x03957d5a
+  name: "cs_inactive"
+  type_id: 0x120d5977
+  offset: 8160
+}
+member {
+  id: 0xfc7060c5
+  name: "cs_ip"
+  type_id: 0x23317b59
+  offset: 128
+}
+member {
+  id: 0xb4c97305
+  name: "cs_ipopt"
+  type_id: 0x24cb52fe
+  offset: 448
+}
+member {
+  id: 0x3e148ecd
+  name: "cs_mask"
+  type_id: 0x914dbfdc
+  offset: 272
+}
+member {
+  id: 0x27d98434
+  name: "cs_off"
+  type_id: 0x4585663f
+  offset: 577
+  bitsize: 1
+}
+member {
+  id: 0x6d4d08d1
+  name: "cs_setup"
+  type_id: 0x120d5977
+  offset: 8096
+}
+member {
+  id: 0xd8a2aa91
+  name: "cs_tcp"
+  type_id: 0x2083530c
+  offset: 288
+}
+member {
+  id: 0xf3206014
+  name: "cs_tcpopt"
+  type_id: 0x24cb52fe
+  offset: 960
+}
+member {
+  id: 0xef46841b
+  name: "cs_this"
+  type_id: 0x89ea5acf
+}
+member {
+  id: 0x1cac780d
+  name: "cs_was_changed_seq"
+  type_id: 0x295c7202
+  offset: 320
+}
+member {
+  id: 0x03bacce4
+  name: "csd"
+  type_id: 0xac1494ba
+}
+member {
+  id: 0x03bc3c31
+  name: "csd"
+  type_id: 0xaaead086
+  offset: 8832
+}
+member {
+  id: 0x03faa0b9
+  name: "csd"
+  type_id: 0xec722edd
+  offset: 1536
+}
+member {
+  id: 0x7eb62f5a
+  name: "csel_mask"
+  type_id: 0x4585663f
+  offset: 1408
+}
+member {
+  id: 0x7a36f556
+  name: "csel_reg"
+  type_id: 0x4585663f
+  offset: 1376
+}
+member {
+  id: 0xe75628b7
+  name: "cset_links"
+  type_id: 0xd3c80119
+  offset: 6336
+}
+member {
+  id: 0xf69ec4bf
+  name: "csets"
+  type_id: 0x3e6239e1
+  offset: 320
+}
+member {
+  id: 0xdea19b2f
+  name: "csi2"
+  type_id: 0xc3a2e399
+}
+member {
+  id: 0xc59cb122
+  name: "csma_retries"
+  type_id: 0x295c7202
+  offset: 656
+}
+member {
+  id: 0x5d7bf520
+  name: "csr_num"
+  type_id: 0x33756485
+}
+member {
+  id: 0xde0d95ff
+  name: "css"
+  type_id: 0x861be646
+}
+member {
+  id: 0x8fda1585
+  name: "css_alloc"
+  type_id: 0x38a2dee9
+}
+member {
+  id: 0x0c29757e
+  name: "css_extra_stat_show"
+  type_id: 0x2dbd49c7
+  offset: 448
+}
+member {
+  id: 0xbef36963
+  name: "css_free"
+  type_id: 0x0c0741c0
+  offset: 256
+}
+member {
+  id: 0x422f5d56
+  name: "css_idr"
+  type_id: 0x04b89667
+  offset: 1408
+}
+member {
+  id: 0xa551f332
+  name: "css_offline"
+  type_id: 0x0c0741c0
+  offset: 128
+}
+member {
+  id: 0x73d091b6
+  name: "css_online"
+  type_id: 0x2f416d6f
+  offset: 64
+}
+member {
+  id: 0x58fdf145
+  name: "css_released"
+  type_id: 0x0c0741c0
+  offset: 192
+}
+member {
+  id: 0x64a8c6fd
+  name: "css_reset"
+  type_id: 0x0c0741c0
+  offset: 320
+}
+member {
+  id: 0x9812b386
+  name: "css_rstat_flush"
+  type_id: 0x0c606113
+  offset: 384
+}
+member {
+  id: 0xf5ed83e7
+  name: "cstime"
+  type_id: 0x92233392
+  offset: 3648
+}
+member {
+  id: 0x6e8b63cd
+  name: "csum"
+  type_id: 0xa9403390
+}
+member {
+  id: 0x3fd85fb4
+  name: "csum_complete_sw"
+  type_id: 0xb3e7bac9
+  offset: 17
+  bitsize: 1
+}
+member {
+  id: 0x2ed56124
+  name: "csum_flags"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x2f674022
+  name: "csum_level"
+  type_id: 0xb3e7bac9
+  offset: 18
+  bitsize: 2
+}
+member {
+  id: 0xae638ddc
+  name: "csum_not_inet"
+  type_id: 0xb3e7bac9
+  offset: 33
+  bitsize: 1
+}
+member {
+  id: 0xd7f69a39
+  name: "csum_offset"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0xf0494b41
+  name: "csum_start"
+  type_id: 0xe8034002
+}
+member {
+  id: 0x55439ec7
+  name: "csum_valid"
+  type_id: 0xb3e7bac9
+  offset: 15
+  bitsize: 1
+}
+member {
+  id: 0xd7405bb5
+  name: "ct"
+  type_id: 0x3fa33e64
+  offset: 20352
+}
+member {
+  id: 0xd7457567
+  name: "ct"
+  type_id: 0x3a88a91e
+}
+member {
+  id: 0xd757ad74
+  name: "ct"
+  type_id: 0x2850bad3
+}
+member {
+  id: 0x380ba1d1
+  name: "ct_attrs"
+  type_id: 0x0c7a5193
+  offset: 192
+}
+member {
+  id: 0x6c36a06d
+  name: "ct_bin_attrs"
+  type_id: 0x0f1628f0
+  offset: 256
+}
+member {
+  id: 0x32ef48bb
+  name: "ct_event"
+  type_id: 0x299e7b2a
+}
+member {
+  id: 0x980f575e
+  name: "ct_general"
+  type_id: 0x270c242d
+}
+member {
+  id: 0xb0536a7d
+  name: "ct_group_ops"
+  type_id: 0x28fd91b1
+  offset: 128
+}
+member {
+  id: 0x3dca0374
+  name: "ct_item_ops"
+  type_id: 0x2eba80af
+  offset: 64
+}
+member {
+  id: 0x18de5d9d
+  name: "ct_metadata"
+  type_id: 0x0e526922
+}
+member {
+  id: 0x4f31defb
+  name: "ct_net"
+  type_id: 0xb335d16f
+  offset: 1088
+}
+member {
+  id: 0x386f85a2
+  name: "ct_owner"
+  type_id: 0x0b27dc43
+}
+member {
+  id: 0x31139344
+  name: "ctarget"
+  type_id: 0x13035e8b
+  offset: 448
+}
+member {
+  id: 0xcfcde1b3
+  name: "ctime"
+  type_id: 0x399c459b
+  offset: 256
+}
+member {
+  id: 0xcfcde9b6
+  name: "ctime"
+  type_id: 0x399c459b
+  offset: 768
+}
+member {
+  id: 0xb59b6745
+  name: "ctl"
+  type_id: 0x0a9a051a
+}
+member {
+  id: 0xb5a5a1c3
+  name: "ctl"
+  type_id: 0x34544a3f
+  offset: 192
+}
+member {
+  id: 0x5673cda6
+  name: "ctl_dev"
+  type_id: 0x23230326
+  offset: 3456
+}
+member {
+  id: 0x1033d956
+  name: "ctl_files"
+  type_id: 0xd3c80119
+  offset: 11648
+}
+member {
+  id: 0x556afd8a
+  name: "ctl_files_rwlock"
+  type_id: 0xf4933b90
+  offset: 11328
+}
+member {
+  id: 0x62766f25
+  name: "ctl_hash"
+  type_id: 0x80c20070
+  offset: 11904
+}
+member {
+  id: 0x3867609b
+  name: "ctl_hash_collision"
+  type_id: 0x6d7f5ff6
+  offset: 12032
+}
+member {
+  id: 0xc69c650f
+  name: "ctl_intf_media_devnode"
+  type_id: 0x1349e73e
+  offset: 3264
+}
+member {
+  id: 0x130efbc9
+  name: "ctl_name"
+  type_id: 0x3e10b518
+  offset: 1920
+}
+member {
+  id: 0xd8d9c596
+  name: "ctl_numids"
+  type_id: 0x80c20070
+  offset: 11776
+}
+member {
+  id: 0x4dca695b
+  name: "ctl_table"
+  type_id: 0x3747dc62
+}
+member {
+  id: 0x411c5627
+  name: "ctl_table_arg"
+  type_id: 0x3747dc62
+  offset: 256
+}
+member {
+  id: 0x8ed30508
+  name: "ctlr"
+  type_id: 0x74d29cf1
+  offset: 31872
+}
+member {
+  id: 0x7d794a79
+  name: "ctm"
+  type_id: 0x343ebce3
+  offset: 2240
+}
+member {
+  id: 0x55e038ab
+  name: "ctm_property"
+  type_id: 0x2a670b41
+  offset: 8640
+}
+member {
+  id: 0x16d2c2bd
+  name: "ctor"
+  type_id: 0x0f3dfb90
+  offset: 576
+}
+member {
+  id: 0x6900647d
+  name: "ctrl"
+  type_id: 0x8e6fc5b1
+}
+member {
+  id: 0x691af1ca
+  name: "ctrl"
+  type_id: 0x94f3b0d2
+  offset: 128
+}
+member {
+  id: 0x691f4f84
+  name: "ctrl"
+  type_id: 0x914dbfdc
+  offset: 96
+}
+member {
+  id: 0x699ae613
+  name: "ctrl"
+  type_id: 0x14e7280b
+  offset: 7296
+}
+member {
+  id: 0x699bc979
+  name: "ctrl"
+  type_id: 0x15c389f6
+  offset: 7360
+}
+member {
+  id: 0x699d2cfb
+  name: "ctrl"
+  type_id: 0x13279dde
+  offset: 4288
+}
+member {
+  id: 0x69ba12aa
+  name: "ctrl"
+  type_id: 0x3411dbb1
+  offset: 192
+}
+member {
+  id: 0x71154a5d
+  name: "ctrl_dev_name"
+  type_id: 0x3e10b518
+  offset: 192
+}
+member {
+  id: 0x82392672
+  name: "ctrl_handler"
+  type_id: 0x026c3dea
+  offset: 192
+}
+member {
+  id: 0x823928b3
+  name: "ctrl_handler"
+  type_id: 0x026c3dea
+  offset: 8960
+}
+member {
+  id: 0x823928c2
+  name: "ctrl_handler"
+  type_id: 0x026c3dea
+  offset: 640
+}
+member {
+  id: 0x82392c48
+  name: "ctrl_handler"
+  type_id: 0x026c3dea
+  offset: 1408
+}
+member {
+  id: 0x94cca69f
+  name: "ctrl_intf"
+  type_id: 0x01ace255
+  offset: 3136
+}
+member {
+  id: 0x1586844f
+  name: "ctrl_refs"
+  type_id: 0xd3c80119
+  offset: 576
+}
+member {
+  id: 0x61324db4
+  name: "ctrlmode"
+  type_id: 0xc9082b19
+  offset: 1696
+}
+member {
+  id: 0x3c4f4cd1
+  name: "ctrlmode_supported"
+  type_id: 0xc9082b19
+  offset: 1728
+}
+member {
+  id: 0xea2e3566
+  name: "ctrls"
+  type_id: 0xd3c80119
+  offset: 448
+}
+member {
+  id: 0x273f08da
+  name: "cts"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x27be06b6
+  name: "cts"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xec3d2f19
+  name: "ctx"
+  type_id: 0xa4dc3a54
+}
+member {
+  id: 0xec50fb08
+  name: "ctx"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xec80d600
+  name: "ctx"
+  type_id: 0x19252310
+}
+member {
+  id: 0xec8a4829
+  name: "ctx"
+  type_id: 0x13b93798
+  offset: 704
+}
+member {
+  id: 0xec8a4a14
+  name: "ctx"
+  type_id: 0x13b93798
+}
+member {
+  id: 0xec949f56
+  name: "ctx"
+  type_id: 0x0d68946d
+  offset: 64
+}
+member {
+  id: 0xeca4247d
+  name: "ctx"
+  type_id: 0x3dd75e25
+}
+member {
+  id: 0xeca7f1c5
+  name: "ctx"
+  type_id: 0x3e02e685
+}
+member {
+  id: 0xeca95aeb
+  name: "ctx"
+  type_id: 0x30ae0fb9
+  offset: 320
+}
+member {
+  id: 0xecb5c06c
+  name: "ctx"
+  type_id: 0x2c32dd96
+  offset: 384
+}
+member {
+  id: 0xecba52e1
+  name: "ctx"
+  type_id: 0x23a73732
+  offset: 4352
+}
+member {
+  id: 0xf0e6c6b3
+  name: "ctx_alg"
+  type_id: 0xb3e7bac9
+  offset: 8
+}
+member {
+  id: 0x5cc54868
+  name: "ctx_arg_info"
+  type_id: 0x3aeb5c03
+  offset: 576
+}
+member {
+  id: 0xfd0e2d5e
+  name: "ctx_arg_info_size"
+  type_id: 0xc9082b19
+  offset: 384
+}
+member {
+  id: 0xd95e2f00
+  name: "ctx_array_dma"
+  type_id: 0xe02e14d6
+  offset: 256
+}
+member {
+  id: 0xf3af5a76
+  name: "ctx_doi"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0x39d26e21
+  name: "ctx_field_size"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x39d26e8a
+  name: "ctx_field_size"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0x3517ba74
+  name: "ctx_in"
+  type_id: 0xedf277ba
+  offset: 384
+}
+member {
+  id: 0xbee7f62c
+  name: "ctx_len"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0x47f610c5
+  name: "ctx_list"
+  type_id: 0xd3c80119
+  offset: 448
+}
+member {
+  id: 0x3ee95655
+  name: "ctx_lock"
+  type_id: 0xf313e71a
+}
+member {
+  id: 0x4b5a12ae
+  name: "ctx_map"
+  type_id: 0xa3189db3
+  offset: 2048
+}
+member {
+  id: 0xe6d98ccc
+  name: "ctx_out"
+  type_id: 0xedf277ba
+  offset: 448
+}
+member {
+  id: 0x8074afd6
+  name: "ctx_sid"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x69619a62
+  name: "ctx_size_in"
+  type_id: 0xe62ebf07
+  offset: 320
+}
+member {
+  id: 0xa3b36ee3
+  name: "ctx_size_out"
+  type_id: 0xe62ebf07
+  offset: 352
+}
+member {
+  id: 0x9b9919c4
+  name: "ctx_str"
+  type_id: 0xca2a51af
+  offset: 64
+}
+member {
+  id: 0x6d826928
+  name: "ctxs"
+  type_id: 0x06bbba49
+  offset: 2432
+}
+member {
+  id: 0x6d92f80f
+  name: "ctxs"
+  type_id: 0x1625b3e2
+  offset: 896
+}
+member {
+  id: 0x747e7c41
+  name: "ctxsize"
+  type_id: 0x39ee9172
+}
+member {
+  id: 0x2723fe2c
+  name: "ctxt"
+  type_id: 0x6a241fb6
+}
+member {
+  id: 0x91091e90
+  name: "cur"
+  type_id: 0x0b9cf8cf
+  offset: 1600
+}
+member {
+  id: 0x91313f3f
+  name: "cur"
+  type_id: 0x33b32811
+  offset: 320
+}
+member {
+  id: 0x91470f06
+  name: "cur"
+  type_id: 0x4585663f
+  offset: 480
+}
+member {
+  id: 0x91cb8ec0
+  name: "cur"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x91ee81f0
+  name: "cur"
+  type_id: 0xec0a20ff
+}
+member {
+  id: 0xee8bae4d
+  name: "cur_adv_instance"
+  type_id: 0xb3e7bac9
+  offset: 45344
+}
+member {
+  id: 0x2dbb1524
+  name: "cur_altsetting"
+  type_id: 0x01ace255
+  offset: 64
+}
+member {
+  id: 0x15c836df
+  name: "cur_audiofmt"
+  type_id: 0x3cc89d58
+  offset: 45504
+}
+member {
+  id: 0x15c83da7
+  name: "cur_audiofmt"
+  type_id: 0x3cc89d58
+  offset: 256
+}
+member {
+  id: 0xb27b9f9b
+  name: "cur_blksize"
+  type_id: 0x4585663f
+  offset: 7552
+}
+member {
+  id: 0x0f396cf3
+  name: "cur_buffer_periods"
+  type_id: 0x4585663f
+  offset: 45760
+}
+member {
+  id: 0x97a04eff
+  name: "cur_bus_speed"
+  type_id: 0x5d8155a5
+  offset: 2008
+}
+member {
+  id: 0x50989b56
+  name: "cur_channels"
+  type_id: 0x4585663f
+  offset: 45632
+}
+member {
+  id: 0x5b87e129
+  name: "cur_cmd_info"
+  type_id: 0x312e431a
+  offset: 9536
+}
+member {
+  id: 0xdac902e6
+  name: "cur_count"
+  type_id: 0x1c3dbe5a
+  offset: 384
+}
+member {
+  id: 0x07e7872a
+  name: "cur_cset"
+  type_id: 0x0d821a01
+  offset: 384
+}
+member {
+  id: 0xc593684b
+  name: "cur_format"
+  type_id: 0xc714b5b1
+  offset: 45600
+}
+member {
+  id: 0x9c3b5585
+  name: "cur_frame_bytes"
+  type_id: 0x4585663f
+  offset: 45664
+}
+member {
+  id: 0xa8603975
+  name: "cur_image"
+  type_id: 0x1ddac82a
+  offset: 1472
+}
+member {
+  id: 0xf1488153
+  name: "cur_index"
+  type_id: 0x4585663f
+  offset: 12416
+}
+member {
+  id: 0xaf87ede4
+  name: "cur_interface"
+  type_id: 0xeeed68e6
+  offset: 1152
+}
+member {
+  id: 0xc335f99d
+  name: "cur_iotype"
+  type_id: 0x5d8155a5
+  offset: 4936
+}
+member {
+  id: 0x29539a57
+  name: "cur_link_an_mode"
+  type_id: 0x295c7202
+  offset: 552
+}
+member {
+  id: 0x1d84c3f4
+  name: "cur_master"
+  type_id: 0x0e6618c4
+}
+member {
+  id: 0x8475cda7
+  name: "cur_msg"
+  type_id: 0x21df69d0
+  offset: 10240
+}
+member {
+  id: 0x27d4ac0a
+  name: "cur_msg_completion"
+  type_id: 0x3fcbf304
+  offset: 10304
+}
+member {
+  id: 0xed426229
+  name: "cur_msg_incomplete"
+  type_id: 0x6d7f5ff6
+  offset: 10560
+}
+member {
+  id: 0x0f783ecd
+  name: "cur_msg_mapped"
+  type_id: 0x6d7f5ff6
+  offset: 10608
+}
+member {
+  id: 0xb09c325b
+  name: "cur_msg_need_completion"
+  type_id: 0x6d7f5ff6
+  offset: 10568
+}
+member {
+  id: 0xb34b435a
+  name: "cur_period_bytes"
+  type_id: 0x4585663f
+  offset: 45728
+}
+member {
+  id: 0x92b660f8
+  name: "cur_period_frames"
+  type_id: 0x4585663f
+  offset: 45696
+}
+member {
+  id: 0x4a281c7b
+  name: "cur_rate"
+  type_id: 0x4585663f
+  offset: 45568
+}
+member {
+  id: 0xa21ac6ac
+  name: "cur_rx_dma_dev"
+  type_id: 0x0258f96e
+  offset: 9472
+}
+member {
+  id: 0xd61ee617
+  name: "cur_seq"
+  type_id: 0x92233392
+}
+member {
+  id: 0x8b31830e
+  name: "cur_stack"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x0c924176
+  name: "cur_state"
+  type_id: 0x31114896
+  offset: 320
+}
+member {
+  id: 0x0cc4772a
+  name: "cur_state"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x47642b4f
+  name: "cur_task"
+  type_id: 0x1d19a9d5
+  offset: 448
+}
+member {
+  id: 0xe74765cd
+  name: "cur_tx_dma_dev"
+  type_id: 0x0258f96e
+  offset: 9536
+}
+member {
+  id: 0xff0c8cdb
+  name: "curframe"
+  type_id: 0xc9082b19
+  offset: 640
+}
+member {
+  id: 0xf740bb6e
+  name: "curframesize"
+  type_id: 0x4585663f
+  offset: 45152
+}
+member {
+  id: 0x2f9ca062
+  name: "curlft"
+  type_id: 0xa2056fd8
+  offset: 4416
+}
+member {
+  id: 0x2f9ca6a8
+  name: "curlft"
+  type_id: 0xa2056fd8
+  offset: 2048
+}
+member {
+  id: 0x7b32ec53
+  name: "curlun"
+  type_id: 0x34aa6f4a
+  offset: 2816
+}
+member {
+  id: 0xbccab28d
+  name: "curpacksize"
+  type_id: 0x4585663f
+  offset: 45120
+}
+member {
+  id: 0x8d1c53d4
+  name: "curr"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x8d4775f7
+  name: "curr"
+  type_id: 0x92233392
+}
+member {
+  id: 0x8d90d743
+  name: "curr"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x8db27617
+  name: "curr"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x8dc8471a
+  name: "curr"
+  type_id: 0x1d19a9d5
+  offset: 21760
+}
+member {
+  id: 0x8ddd7638
+  name: "curr"
+  type_id: 0x082be49e
+  offset: 512
+}
+member {
+  id: 0xe5b23071
+  name: "curr_clip"
+  type_id: 0x1c3dbe5a
+  offset: 224
+}
+member {
+  id: 0x3ba2face
+  name: "curr_ctx"
+  type_id: 0x0858434c
+}
+member {
+  id: 0x992cd0cb
+  name: "curr_dev_pwr_mode"
+  type_id: 0x9e462b08
+  offset: 640
+}
+member {
+  id: 0x6eb1afd3
+  name: "curr_nr"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0xda110f4a
+  name: "curr_table"
+  type_id: 0x39cc14ac
+  offset: 1152
+}
+member {
+  id: 0xe1b47aa6
+  name: "curr_target"
+  type_id: 0x1d19a9d5
+  offset: 448
+}
+member {
+  id: 0xfa702ad6
+  name: "current_bss"
+  type_id: 0x364efcf0
+}
+member {
+  id: 0x65380232
+  name: "current_channel"
+  type_id: 0x295c7202
+  offset: 96
+}
+member {
+  id: 0x3c9a377b
+  name: "current_cmd"
+  type_id: 0x0e1f07df
+  offset: 2816
+}
+member {
+  id: 0xc2e77a46
+  name: "current_color"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0x054f9c19
+  name: "current_context"
+  type_id: 0x4585663f
+  offset: 384
+}
+member {
+  id: 0x211f60d8
+  name: "current_frequency"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0xc403c8d4
+  name: "current_func"
+  type_id: 0xa2114faf
+  offset: 192
+}
+member {
+  id: 0x1648fc17
+  name: "current_group"
+  type_id: 0x176fc5b8
+  offset: 320
+}
+member {
+  id: 0xe5ef799d
+  name: "current_limit"
+  type_id: 0xc9082b19
+  offset: 10016
+}
+member {
+  id: 0xcfc20a47
+  name: "current_may_mount"
+  type_id: 0x35392f66
+  offset: 64
+}
+member {
+  id: 0x94fac264
+  name: "current_mel"
+  type_id: 0x914dbfdc
+  offset: 36224
+}
+member {
+  id: 0x87878b9b
+  name: "current_mode"
+  type_id: 0x6720d32f
+  offset: 1408
+}
+member {
+  id: 0xb650b8d4
+  name: "current_opp"
+  type_id: 0x19e66c71
+  offset: 1856
+}
+member {
+  id: 0x7573b502
+  name: "current_page"
+  type_id: 0x295c7202
+  offset: 104
+}
+member {
+  id: 0xe99549bc
+  name: "current_pwq"
+  type_id: 0x2033e582
+  offset: 256
+}
+member {
+  id: 0xaa3ffd87
+  name: "current_rx_match_ratio"
+  type_id: 0x33756485
+  offset: 576
+}
+member {
+  id: 0x3cc3ba53
+  name: "current_rx_rate"
+  type_id: 0x33756485
+  offset: 448
+}
+member {
+  id: 0xcf8ff799
+  name: "current_state"
+  type_id: 0x6bbe1f72
+  offset: 96
+}
+member {
+  id: 0xcffa7369
+  name: "current_state"
+  type_id: 0x1e351120
+  offset: 1280
+}
+member {
+  id: 0x14022003
+  name: "current_threshold"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xd8809cf2
+  name: "current_trace"
+  type_id: 0x1a95dec0
+  offset: 896
+}
+member {
+  id: 0xc9222b6b
+  name: "current_tx_rate"
+  type_id: 0x33756485
+  offset: 512
+}
+member {
+  id: 0xc8e16af6
+  name: "current_work"
+  type_id: 0x0d5f1839
+  offset: 128
+}
+member {
+  id: 0xc8e8a0f0
+  name: "current_work"
+  type_id: 0x049d4e97
+  offset: 384
+}
+member {
+  id: 0x5666d648
+  name: "cursor"
+  type_id: 0x1b2ca025
+  offset: 1216
+}
+member {
+  id: 0xee0082ef
+  name: "cursor_height"
+  type_id: 0x1c3dbe5a
+  offset: 9696
+}
+member {
+  id: 0x8d866bcf
+  name: "cursor_move"
+  type_id: 0x2e84e452
+  offset: 192
+}
+member {
+  id: 0x2ed262fe
+  name: "cursor_set"
+  type_id: 0x2ef68e56
+  offset: 64
+}
+member {
+  id: 0x07edff75
+  name: "cursor_set2"
+  type_id: 0x2ef68e02
+  offset: 128
+}
+member {
+  id: 0x2276468b
+  name: "cursor_width"
+  type_id: 0x1c3dbe5a
+  offset: 9664
+}
+member {
+  id: 0x38890843
+  name: "cursor_x"
+  type_id: 0x6720d32f
+  offset: 1312
+}
+member {
+  id: 0x7ac8932f
+  name: "cursor_y"
+  type_id: 0x6720d32f
+  offset: 1344
+}
+member {
+  id: 0x91afab90
+  name: "custom_attr_group"
+  type_id: 0x334c07d5
+  offset: 384
+}
+member {
+  id: 0x7f5f2be0
+  name: "custom_conf_items"
+  type_id: 0x3cce5030
+  offset: 576
+}
+member {
+  id: 0x4bac8214
+  name: "custom_data"
+  type_id: 0x0a8f9a9e
+  offset: 192
+}
+member {
+  id: 0xdb1596d4
+  name: "custom_divisor"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0xdb373e20
+  name: "custom_divisor"
+  type_id: 0x4585663f
+  offset: 2432
+}
+member {
+  id: 0xa8806bc9
+  name: "custom_len"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0x99479bd2
+  name: "custom_params"
+  type_id: 0x34ce1f23
+  offset: 512
+}
+member {
+  id: 0x713e1116
+  name: "custom_seq_show"
+  type_id: 0x2d8ee262
+  offset: 128
+}
+member {
+  id: 0xe2992f8a
+  name: "cutime"
+  type_id: 0x92233392
+  offset: 3584
+}
+member {
+  id: 0xf541d798
+  name: "cvt"
+  type_id: 0xb3b6ef0f
+}
+member {
+  id: 0xf59f1343
+  name: "cvt"
+  type_id: 0x6d7f5ff6
+  offset: 432
+}
+member {
+  id: 0xf5c39fe2
+  name: "cvt"
+  type_id: 0x31fe95e7
+}
+member {
+  id: 0x085b4a46
+  name: "cw_max"
+  type_id: 0x914dbfdc
+  offset: 16
+}
+member {
+  id: 0xa033f445
+  name: "cw_min"
+  type_id: 0x914dbfdc
+}
+member {
+  id: 0x453a997e
+  name: "cwnd_event"
+  type_id: 0x0f9357d8
+  offset: 192
+}
+member {
+  id: 0x1d7a6d67
+  name: "cwr"
+  type_id: 0xe8034002
+  offset: 111
+  bitsize: 1
+}
+member {
+  id: 0x09c4ee83
+  name: "cwriter"
+  type_id: 0xc9082b19
+  offset: 1120
+}
+member {
+  id: 0x9ed15d15
+  name: "cxl"
+  type_id: 0x6d7f5ff6
+  offset: 256
+}
+member {
+  id: 0x89f08835
+  name: "cycle_last"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0x99763653
+  name: "cycle_state"
+  type_id: 0xc9082b19
+  offset: 512
+}
+member {
+  id: 0x32f0095e
+  name: "cycles"
+  type_id: 0x92233392
+}
+member {
+  id: 0xc8db3058
+  name: "cycles"
+  type_id: 0xedf277ba
+  offset: 132
+  bitsize: 16
+}
+member {
+  id: 0x47b3cac6
+  name: "cycletime"
+  type_id: 0x92233392
+  offset: 128
+}
+member {
+  id: 0xab8f22b5
+  name: "cycletimeext"
+  type_id: 0x92233392
+  offset: 192
+}
+member {
+  id: 0x3a126875
+  name: "cyclic"
+  type_id: 0x3b4d47fa
+  offset: 1984
+}
+member {
+  id: 0xcbff9883
+  name: "cylinders"
+  type_id: 0xc93e017b
+  offset: 16
+}
+member {
+  id: 0x8b60974a
+  name: "d1_support"
+  type_id: 0x4585663f
+  offset: 1334
+  bitsize: 1
+}
+member {
+  id: 0x6ec160e2
+  name: "d2_support"
+  type_id: 0x4585663f
+  offset: 1335
+  bitsize: 1
+}
+member {
+  id: 0x61ea58ed
+  name: "d3cold_allowed"
+  type_id: 0x4585663f
+  offset: 1339
+  bitsize: 1
+}
+member {
+  id: 0xfb07fb2a
+  name: "d3cold_delay"
+  type_id: 0x4585663f
+  offset: 1408
+}
+member {
+  id: 0xeba01c36
+  name: "d3hot_delay"
+  type_id: 0x4585663f
+  offset: 1376
+}
+member {
+  id: 0x4a1bede8
+  name: "d_alias"
+  type_id: 0x49a73111
+}
+member {
+  id: 0x4d4e6d82
+  name: "d_attrs_muex"
+  type_id: 0x0ee3dd73
+  offset: 8704
+}
+member {
+  id: 0xd4f1b234
+  name: "d_automount"
+  type_id: 0x11690361
+  offset: 640
+}
+member {
+  id: 0xa070bd00
+  name: "d_canonical_path"
+  type_id: 0x2e4e1a59
+  offset: 832
+}
+member {
+  id: 0x12f42e3b
+  name: "d_child"
+  type_id: 0xd3c80119
+  offset: 1152
+}
+member {
+  id: 0x8751a712
+  name: "d_compare"
+  type_id: 0x2e0d4ac8
+  offset: 192
+}
+member {
+  id: 0x016b4daf
+  name: "d_delete"
+  type_id: 0x2e4b10a5
+  offset: 256
+}
+member {
+  id: 0x977ac637
+  name: "d_dname"
+  type_id: 0x043d1c33
+  offset: 576
+}
+member {
+  id: 0xf4286856
+  name: "d_fieldmask"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x80dd1944
+  name: "d_flags"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x58270184
+  name: "d_fsdata"
+  type_id: 0x18bd6530
+  offset: 960
+}
+member {
+  id: 0xe79b1adb
+  name: "d_hash"
+  type_id: 0x2e4fd1e7
+  offset: 128
+}
+member {
+  id: 0xe7ca74ba
+  name: "d_hash"
+  type_id: 0x7f2c93f7
+  offset: 64
+}
+member {
+  id: 0xdb2147ed
+  name: "d_in_lookup_hash"
+  type_id: 0x7f2c93f7
+}
+member {
+  id: 0x910e4196
+  name: "d_iname"
+  type_id: 0x43acdd98
+  offset: 448
+}
+member {
+  id: 0xcf345cb7
+  name: "d_init"
+  type_id: 0x2cd05561
+  offset: 320
+}
+member {
+  id: 0x631644e0
+  name: "d_ino_count"
+  type_id: 0x92233392
+  offset: 384
+}
+member {
+  id: 0xea30fff1
+  name: "d_ino_hardlimit"
+  type_id: 0x92233392
+  offset: 192
+}
+member {
+  id: 0xf9c52b7d
+  name: "d_ino_softlimit"
+  type_id: 0x92233392
+  offset: 256
+}
+member {
+  id: 0x89ebfcc3
+  name: "d_ino_timer"
+  type_id: 0x2e0f9112
+  offset: 448
+}
+member {
+  id: 0x50b54e8f
+  name: "d_ino_warns"
+  type_id: 0x6720d32f
+  offset: 576
+}
+member {
+  id: 0x19210a18
+  name: "d_inode"
+  type_id: 0x1b8590a8
+  offset: 384
+}
+member {
+  id: 0xc7b85112
+  name: "d_iput"
+  type_id: 0x0f8dfc5e
+  offset: 512
+}
+member {
+  id: 0xb117d730
+  name: "d_lockref"
+  type_id: 0xae6f8936
+  offset: 704
+}
+member {
+  id: 0xe930ea5e
+  name: "d_lru"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0xd6b41596
+  name: "d_manage"
+  type_id: 0x2e359c9f
+  offset: 704
+}
+member {
+  id: 0x41340bdc
+  name: "d_name"
+  type_id: 0x3945ef63
+  offset: 256
+}
+member {
+  id: 0x5bdcd967
+  name: "d_node"
+  type_id: 0xd3c80119
+  offset: 320
+}
+member {
+  id: 0x52b62b2d
+  name: "d_op"
+  type_id: 0x39d30e9a
+  offset: 768
+}
+member {
+  id: 0xb894ed7f
+  name: "d_parent"
+  type_id: 0x120540d1
+  offset: 192
+}
+member {
+  id: 0xc216691a
+  name: "d_prune"
+  type_id: 0x0f9679ce
+  offset: 448
+}
+member {
+  id: 0x9a8b59d9
+  name: "d_rcu"
+  type_id: 0xe3222f5b
+}
+member {
+  id: 0xa3ee3a2f
+  name: "d_real"
+  type_id: 0x2895c04c
+  offset: 768
+}
+member {
+  id: 0x26aede12
+  name: "d_release"
+  type_id: 0x0f9679ce
+  offset: 384
+}
+member {
+  id: 0xb0a8c26f
+  name: "d_revalidate"
+  type_id: 0x2c95d007
+}
+member {
+  id: 0x0800370c
+  name: "d_rt_space"
+  type_id: 0x92233392
+  offset: 768
+}
+member {
+  id: 0x3a80de66
+  name: "d_rt_spc_hardlimit"
+  type_id: 0x92233392
+  offset: 640
+}
+member {
+  id: 0x46e2e14f
+  name: "d_rt_spc_softlimit"
+  type_id: 0x92233392
+  offset: 704
+}
+member {
+  id: 0x7ec4fea7
+  name: "d_rt_spc_timer"
+  type_id: 0x2e0f9112
+  offset: 832
+}
+member {
+  id: 0x55ea559b
+  name: "d_rt_spc_warns"
+  type_id: 0x6720d32f
+  offset: 896
+}
+member {
+  id: 0x3a5fe75a
+  name: "d_sb"
+  type_id: 0x26ee682a
+  offset: 832
+}
+member {
+  id: 0x9095fc0e
+  name: "d_seq"
+  type_id: 0xeb90906e
+  offset: 32
+}
+member {
+  id: 0x0096f644
+  name: "d_space"
+  type_id: 0x92233392
+  offset: 320
+}
+member {
+  id: 0x7b1f57bf
+  name: "d_spc_hardlimit"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0x632da346
+  name: "d_spc_softlimit"
+  type_id: 0x92233392
+  offset: 128
+}
+member {
+  id: 0xcbb0c33e
+  name: "d_spc_timer"
+  type_id: 0x2e0f9112
+  offset: 512
+}
+member {
+  id: 0x9ff2dd0d
+  name: "d_spc_warns"
+  type_id: 0x6720d32f
+  offset: 608
+}
+member {
+  id: 0xbd288688
+  name: "d_subdirs"
+  type_id: 0xd3c80119
+  offset: 1280
+}
+member {
+  id: 0x8fb0e835
+  name: "d_term_en"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0x3c5fc706
+  name: "d_time"
+  type_id: 0x33756485
+  offset: 896
+}
+member {
+  id: 0xf17c62b2
+  name: "d_u"
+  type_id: 0x444ac848
+  offset: 1408
+}
+member {
+  id: 0x051fb74d
+  name: "d_wait"
+  type_id: 0x0a747547
+}
+member {
+  id: 0xf79a0eb9
+  name: "d_weak_revalidate"
+  type_id: 0x2c95d007
+  offset: 64
+}
+member {
+  id: 0x110dece9
+  name: "da"
+  type_id: 0xc9082b19
+  offset: 256
+}
+member {
+  id: 0x1124c3bf
+  name: "da"
+  type_id: 0xe02e14d6
+  offset: 128
+}
+member {
+  id: 0xcbe0aa41
+  name: "da_to_va"
+  type_id: 0x1d34847a
+  offset: 448
+}
+member {
+  id: 0x890ec0c1
+  name: "dad_transmits"
+  type_id: 0x0faae5b1
+  offset: 192
+}
+member {
+  id: 0xcb3ea619
+  name: "daddr"
+  type_id: 0x313397f7
+}
+member {
+  id: 0xcb3eafdb
+  name: "daddr"
+  type_id: 0x313397f7
+  offset: 128
+}
+member {
+  id: 0xcb62b1fc
+  name: "daddr"
+  type_id: 0x6d25e07f
+  offset: 384
+}
+member {
+  id: 0xcb62b9ac
+  name: "daddr"
+  type_id: 0x6d25e07f
+  offset: 128
+}
+member {
+  id: 0xcba46720
+  name: "daddr"
+  type_id: 0xabf64f28
+  offset: 64
+}
+member {
+  id: 0xcbede143
+  name: "daddr"
+  type_id: 0xe276adef
+  offset: 416
+}
+member {
+  id: 0xcbedee18
+  name: "daddr"
+  type_id: 0xe276adef
+  offset: 32
+}
+member {
+  id: 0xf25f00aa
+  name: "dai_elems"
+  type_id: 0x0baa70a7
+  offset: 192
+}
+member {
+  id: 0x59398359
+  name: "dai_fmt"
+  type_id: 0x4585663f
+  offset: 608
+}
+member {
+  id: 0xdec72f09
+  name: "dai_id"
+  type_id: 0x0baa70a7
+  offset: 768
+}
+member {
+  id: 0xdf11a290
+  name: "dai_link"
+  type_id: 0x20054a7b
+  offset: 2752
+}
+member {
+  id: 0xdf11a86f
+  name: "dai_link"
+  type_id: 0x20054a7b
+  offset: 128
+}
+member {
+  id: 0x6938c15d
+  name: "dai_link_elems"
+  type_id: 0x0baa70a7
+  offset: 160
+}
+member {
+  id: 0x187194c9
+  name: "dai_list"
+  type_id: 0xd3c80119
+  offset: 832
+}
+member {
+  id: 0xd1e4d086
+  name: "dai_load"
+  type_id: 0x2c809813
+  offset: 448
+}
+member {
+  id: 0x5f5174ae
+  name: "dai_name"
+  type_id: 0xe52a3418
+  offset: 384
+}
+member {
+  id: 0x5f8a467f
+  name: "dai_name"
+  type_id: 0x3e10b518
+  offset: 128
+}
+member {
+  id: 0x7d1d8d7c
+  name: "dai_unload"
+  type_id: 0x2cdf1523
+  offset: 512
+}
+member {
+  id: 0x3c40f1d9
+  name: "dais"
+  type_id: 0x0bdbd2a7
+  offset: 12544
+}
+member {
+  id: 0x28e89f71
+  name: "damage_clip"
+  type_id: 0x836329dc
+  offset: 1696
+}
+member {
+  id: 0x5becd2a8
+  name: "damage_lock"
+  type_id: 0xf313e71a
+  offset: 1760
+}
+member {
+  id: 0xd93f06ca
+  name: "damage_work"
+  type_id: 0x1f3c8679
+  offset: 1792
+}
+member {
+  id: 0x98424c26
+  name: "dapm"
+  type_id: 0x0017d728
+  offset: 320
+}
+member {
+  id: 0x986840a0
+  name: "dapm"
+  type_id: 0x2a1fba3e
+  offset: 1664
+}
+member {
+  id: 0x986840f1
+  name: "dapm"
+  type_id: 0x2a1fba3e
+  offset: 4992
+}
+member {
+  id: 0x5a40bfe4
+  name: "dapm_dirty"
+  type_id: 0xd3c80119
+  offset: 4736
+}
+member {
+  id: 0x2e266fde
+  name: "dapm_list"
+  type_id: 0xd3c80119
+  offset: 4608
+}
+member {
+  id: 0x4d6b744a
+  name: "dapm_mutex"
+  type_id: 0xa7c362b0
+  offset: 1088
+}
+member {
+  id: 0xce768491
+  name: "dapm_route_load"
+  type_id: 0x2c81f551
+  offset: 128
+}
+member {
+  id: 0x2e03a205
+  name: "dapm_route_unload"
+  type_id: 0x2cdf1523
+  offset: 192
+}
+member {
+  id: 0x3861b9dc
+  name: "dapm_routes"
+  type_id: 0x3d828cd9
+  offset: 3712
+}
+member {
+  id: 0x3861beb7
+  name: "dapm_routes"
+  type_id: 0x3d828cd9
+  offset: 320
+}
+member {
+  id: 0x14588350
+  name: "dapm_stats"
+  type_id: 0x04a70038
+  offset: 5632
+}
+member {
+  id: 0xe8b650c9
+  name: "dapm_widgets"
+  type_id: 0x3db7fb40
+  offset: 192
+}
+member {
+  id: 0xe8b65e69
+  name: "dapm_widgets"
+  type_id: 0x3db7fb40
+  offset: 3584
+}
+member {
+  id: 0xc8691905
+  name: "data"
+  type_id: 0x4585663f
+  offset: 32
+  bitsize: 24
+}
+member {
+  id: 0xff1240f1
+  name: "data"
+  type_id: 0x8069a6a3
+  offset: 32
+}
+member {
+  id: 0xff184626
+  name: "data"
+  type_id: 0x8a624a56
+}
+member {
+  id: 0xff220f59
+  name: "data"
+  type_id: 0xb02b353a
+}
+member {
+  id: 0xff2211dd
+  name: "data"
+  type_id: 0xb0312d5a
+  offset: 80
+}
+member {
+  id: 0xff254987
+  name: "data"
+  type_id: 0xb76debc5
+}
+member {
+  id: 0xff2be43b
+  name: "data"
+  type_id: 0xb9c7723b
+  offset: 1728
+}
+member {
+  id: 0xff33ae25
+  name: "data"
+  type_id: 0xa18ea868
+  offset: 64
+}
+member {
+  id: 0xff34d3a7
+  name: "data"
+  type_id: 0xa6f7cbac
+}
+member {
+  id: 0xff3c606a
+  name: "data"
+  type_id: 0xae4d8520
+  offset: 96
+}
+member {
+  id: 0xff417057
+  name: "data"
+  type_id: 0xd359db99
+  offset: 160
+}
+member {
+  id: 0xff417309
+  name: "data"
+  type_id: 0xd359db99
+  offset: 16
+}
+member {
+  id: 0xff417475
+  name: "data"
+  type_id: 0xd359db99
+  offset: 128
+}
+member {
+  id: 0xff41792b
+  name: "data"
+  type_id: 0xd359db99
+  offset: 80
+}
+member {
+  id: 0xff4f914b
+  name: "data"
+  type_id: 0xddb527d3
+}
+member {
+  id: 0xff503b79
+  name: "data"
+  type_id: 0xc216d7bc
+  offset: 128
+}
+member {
+  id: 0xff57adaa
+  name: "data"
+  type_id: 0xc58bfbc7
+  offset: 704
+}
+member {
+  id: 0xff5807ff
+  name: "data"
+  type_id: 0xca2a51af
+  offset: 128
+}
+member {
+  id: 0xff580adc
+  name: "data"
+  type_id: 0xca2a51af
+  offset: 64
+}
+member {
+  id: 0xff580e3d
+  name: "data"
+  type_id: 0xca2a51af
+}
+member {
+  id: 0xff580faf
+  name: "data"
+  type_id: 0xca2a51af
+  offset: 384
+}
+member {
+  id: 0xff5912bc
+  name: "data"
+  type_id: 0xcb386ed4
+  offset: 16
+}
+member {
+  id: 0xff5ac010
+  name: "data"
+  type_id: 0xc8e4d7d1
+  offset: 256
+}
+member {
+  id: 0xff5ae7eb
+  name: "data"
+  type_id: 0xc8c766a0
+  offset: 64
+}
+member {
+  id: 0xff5aeac8
+  name: "data"
+  type_id: 0xc8c766a0
+  offset: 128
+}
+member {
+  id: 0xff5b2c47
+  name: "data"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xff5c437d
+  name: "data"
+  type_id: 0xce6e9270
+  offset: 96
+}
+member {
+  id: 0xff5c4e1f
+  name: "data"
+  type_id: 0xce6e9270
+  offset: 64
+}
+member {
+  id: 0xff645b09
+  name: "data"
+  type_id: 0xf67b8436
+  offset: 64
+}
+member {
+  id: 0xff670d65
+  name: "data"
+  type_id: 0xf529a205
+  offset: 256
+}
+member {
+  id: 0xff675e8e
+  name: "data"
+  type_id: 0xf57b706b
+  offset: 384
+}
+member {
+  id: 0xff6d659e
+  name: "data"
+  type_id: 0xff45131e
+  offset: 64
+}
+member {
+  id: 0xff6d68bd
+  name: "data"
+  type_id: 0xff45131e
+  offset: 128
+}
+member {
+  id: 0xff724f3d
+  name: "data"
+  type_id: 0xe06ae107
+  offset: 480
+}
+member {
+  id: 0xff7407e8
+  name: "data"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xff770e06
+  name: "data"
+  type_id: 0xe5217790
+  offset: 1856
+}
+member {
+  id: 0xff7ae59e
+  name: "data"
+  type_id: 0xe8c06042
+  offset: 384
+}
+member {
+  id: 0xff7aed8f
+  name: "data"
+  type_id: 0xe8c06042
+  offset: 96
+}
+member {
+  id: 0xff7aedce
+  name: "data"
+  type_id: 0xe8c06042
+  offset: 128
+}
+member {
+  id: 0xff7fd2fa
+  name: "data"
+  type_id: 0xedf277ba
+  offset: 64
+}
+member {
+  id: 0xff7fdfd9
+  name: "data"
+  type_id: 0xedf277ba
+  offset: 128
+}
+member {
+  id: 0xff886278
+  name: "data"
+  type_id: 0x1a41d386
+  offset: 320
+}
+member {
+  id: 0xff886c7d
+  name: "data"
+  type_id: 0x1a41d386
+  offset: 128
+}
+member {
+  id: 0xff886f81
+  name: "data"
+  type_id: 0x1a41d386
+  offset: 6720
+}
+member {
+  id: 0xff8a90cb
+  name: "data"
+  type_id: 0x18bd6530
+  offset: 128
+}
+member {
+  id: 0xff8a91a7
+  name: "data"
+  type_id: 0x18bd6530
+  offset: 768
+}
+member {
+  id: 0xff8a91c0
+  name: "data"
+  type_id: 0x18bd6530
+  offset: 192
+}
+member {
+  id: 0xff8a91fa
+  name: "data"
+  type_id: 0x18bd6530
+  offset: 960
+}
+member {
+  id: 0xff8a9211
+  name: "data"
+  type_id: 0x18bd6530
+  offset: 512
+}
+member {
+  id: 0xff8a933f
+  name: "data"
+  type_id: 0x18bd6530
+  offset: 5120
+}
+member {
+  id: 0xff8a93af
+  name: "data"
+  type_id: 0x18bd6530
+  offset: 896
+}
+member {
+  id: 0xff8a9518
+  name: "data"
+  type_id: 0x18bd6530
+  offset: 9728
+}
+member {
+  id: 0xff8a95a5
+  name: "data"
+  type_id: 0x18bd6530
+  offset: 6080
+}
+member {
+  id: 0xff8a9798
+  name: "data"
+  type_id: 0x18bd6530
+  offset: 8832
+}
+member {
+  id: 0xff8a98d7
+  name: "data"
+  type_id: 0x18bd6530
+  offset: 1920
+}
+member {
+  id: 0xff8a9909
+  name: "data"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0xff8a99a2
+  name: "data"
+  type_id: 0x18bd6530
+  offset: 256
+}
+member {
+  id: 0xff8a9ab3
+  name: "data"
+  type_id: 0x18bd6530
+  offset: 832
+}
+member {
+  id: 0xff8a9d1f
+  name: "data"
+  type_id: 0x18bd6530
+  offset: 7488
+}
+member {
+  id: 0xff8a9de8
+  name: "data"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0xff8a9e2c
+  name: "data"
+  type_id: 0x18bd6530
+  offset: 1728
+}
+member {
+  id: 0xff8a9e7e
+  name: "data"
+  type_id: 0x18bd6530
+  offset: 448
+}
+member {
+  id: 0xff8a9ece
+  name: "data"
+  type_id: 0x18bd6530
+  offset: 320
+}
+member {
+  id: 0xff8a9f70
+  name: "data"
+  type_id: 0x18bd6530
+  offset: 640
+}
+member {
+  id: 0xff8d7264
+  name: "data"
+  type_id: 0x1f52e925
+  offset: 64
+}
+member {
+  id: 0xff8d7685
+  name: "data"
+  type_id: 0x1f52e925
+}
+member {
+  id: 0xff8fd273
+  name: "data"
+  type_id: 0x1df06cce
+  offset: 1792
+}
+member {
+  id: 0xff8fdf18
+  name: "data"
+  type_id: 0x1df06cce
+  offset: 512
+}
+member {
+  id: 0xff91a19f
+  name: "data"
+  type_id: 0x038c310d
+  offset: 128
+}
+member {
+  id: 0xff92e349
+  name: "data"
+  type_id: 0x00c72527
+}
+member {
+  id: 0xff92ea8b
+  name: "data"
+  type_id: 0x00c72527
+  offset: 128
+}
+member {
+  id: 0xffa0df76
+  name: "data"
+  type_id: 0x32fbb12c
+  offset: 256
+}
+member {
+  id: 0xffa151a3
+  name: "data"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0xffa15c7e
+  name: "data"
+  type_id: 0x33756485
+  offset: 1088
+}
+member {
+  id: 0xffab319e
+  name: "data"
+  type_id: 0x391f15ea
+  offset: 1536
+}
+member {
+  id: 0xffab320b
+  name: "data"
+  type_id: 0x391f15ea
+  offset: 576
+}
+member {
+  id: 0xffab33b0
+  name: "data"
+  type_id: 0x391f15ea
+  offset: 192
+}
+member {
+  id: 0xffab3aeb
+  name: "data"
+  type_id: 0x391f15ea
+  offset: 384
+}
+member {
+  id: 0xffab3bd2
+  name: "data"
+  type_id: 0x391f15ea
+  offset: 256
+}
+member {
+  id: 0xffab3c0e
+  name: "data"
+  type_id: 0x391f15ea
+  offset: 448
+}
+member {
+  id: 0xffab3cbe
+  name: "data"
+  type_id: 0x391f15ea
+  offset: 320
+}
+member {
+  id: 0xffab3f98
+  name: "data"
+  type_id: 0x391f15ea
+  offset: 64
+}
+member {
+  id: 0xffac3472
+  name: "data"
+  type_id: 0x3e10b518
+  offset: 256
+}
+member {
+  id: 0xffad2108
+  name: "data"
+  type_id: 0x3f0185ef
+  offset: 64
+}
+member {
+  id: 0xffad25e9
+  name: "data"
+  type_id: 0x3f0185ef
+}
+member {
+  id: 0xffada67f
+  name: "data"
+  type_id: 0x3f8bd122
+  offset: 128
+}
+member {
+  id: 0xffb1eb69
+  name: "data"
+  type_id: 0x23cbe491
+  offset: 64
+}
+member {
+  id: 0xffb2ddec
+  name: "data"
+  type_id: 0x20fd6195
+  offset: 64
+}
+member {
+  id: 0xffb530a9
+  name: "data"
+  type_id: 0x2712b6f9
+  offset: 1792
+}
+member {
+  id: 0xffb65cb4
+  name: "data"
+  type_id: 0x247c3922
+  offset: 64
+}
+member {
+  id: 0xffbbfe85
+  name: "data"
+  type_id: 0x29de0844
+  offset: 64
+}
+member {
+  id: 0xffc40278
+  name: "data"
+  type_id: 0x562614d8
+}
+member {
+  id: 0xffc61904
+  name: "data"
+  type_id: 0x5434eb98
+  offset: 96
+}
+member {
+  id: 0xffca45c6
+  name: "data"
+  type_id: 0x5867cba7
+  offset: 24
+}
+member {
+  id: 0xffccbff8
+  name: "data"
+  type_id: 0x5e9b9471
+}
+member {
+  id: 0xffd1f15e
+  name: "data"
+  type_id: 0x43d1d3ca
+  offset: 64
+}
+member {
+  id: 0xffd3da57
+  name: "data"
+  type_id: 0x41fadac3
+  offset: 64
+}
+member {
+  id: 0xffd54088
+  name: "data"
+  type_id: 0x4765767f
+  offset: 384
+}
+member {
+  id: 0xffd88cf6
+  name: "data"
+  type_id: 0x4aac7bac
+  offset: 64
+}
+member {
+  id: 0xffe46d7f
+  name: "data"
+  type_id: 0x764913b9
+}
+member {
+  id: 0xffe56b33
+  name: "data"
+  type_id: 0x774f5f7f
+}
+member {
+  id: 0xffe56fd2
+  name: "data"
+  type_id: 0x774f5f7f
+  offset: 64
+}
+member {
+  id: 0xffe71c01
+  name: "data"
+  type_id: 0x75386dca
+}
+member {
+  id: 0xffe79c01
+  name: "data"
+  type_id: 0x75b86d50
+}
+member {
+  id: 0xffed4285
+  name: "data"
+  type_id: 0x7f6642e9
+  offset: 256
+}
+member {
+  id: 0xfff2d676
+  name: "data"
+  type_id: 0x60fca4f5
+  offset: 16
+}
+member {
+  id: 0xfff50d81
+  name: "data"
+  type_id: 0x6720d32f
+  offset: 4000
+}
+member {
+  id: 0x9e14f48e
+  name: "data03"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x0357f389
+  name: "data1"
+  type_id: 0x92233392
+}
+member {
+  id: 0x03ec872e
+  name: "data1"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0xc02add7c
+  name: "data2"
+  type_id: 0x295c7202
+  offset: 16
+}
+member {
+  id: 0xc091a862
+  name: "data2"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0xcd6a080a
+  name: "data47"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0x7da23215
+  name: "data_available"
+  type_id: 0x2dace37d
+  offset: 128
+}
+member {
+  id: 0xb0f5d0b4
+  name: "data_bitrate_const"
+  type_id: 0x3104c07e
+  offset: 1152
+}
+member {
+  id: 0x63e22c0f
+  name: "data_bitrate_const_cnt"
+  type_id: 0x4585663f
+  offset: 1216
+}
+member {
+  id: 0x63a17343
+  name: "data_bittiming"
+  type_id: 0xdf09259e
+  offset: 640
+}
+member {
+  id: 0x7db8ba3a
+  name: "data_bittiming_const"
+  type_id: 0x326dfde1
+  offset: 320
+}
+member {
+  id: 0xc3c8ed87
+  name: "data_byte_offset"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xdbff96da
+  name: "data_cmd"
+  type_id: 0x2ea8d96e
+  offset: 6592
+}
+member {
+  id: 0x46c1878d
+  name: "data_dir"
+  type_id: 0x872c701d
+  offset: 3072
+}
+member {
+  id: 0xd402f675
+  name: "data_early"
+  type_id: 0x4585663f
+  offset: 6784
+  bitsize: 1
+}
+member {
+  id: 0x496ed273
+  name: "data_end"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0x496ed7fa
+  name: "data_end"
+  type_id: 0x18bd6530
+  offset: 5184
+}
+member {
+  id: 0x1f84d6b1
+  name: "data_endpoint"
+  type_id: 0x24706e28
+  offset: 832
+}
+member {
+  id: 0x8a9be6c6
+  name: "data_hard_start"
+  type_id: 0x18bd6530
+  offset: 192
+}
+member {
+  id: 0xba0523d9
+  name: "data_head"
+  type_id: 0xedf277ba
+  offset: 8192
+}
+member {
+  id: 0x7317430a
+  name: "data_in"
+  type_id: 0xedf277ba
+  offset: 128
+}
+member {
+  id: 0x4a1ef3b4
+  name: "data_interval"
+  type_id: 0xc9082b19
+  offset: 416
+}
+member {
+  id: 0x1da8cdb0
+  name: "data_interval_max"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0x35541bc6
+  name: "data_lane"
+  type_id: 0x5d8155a5
+  offset: 24
+}
+member {
+  id: 0x79e40a9c
+  name: "data_lanes"
+  type_id: 0xf35edd7b
+  offset: 32
+}
+member {
+  id: 0x7312d341
+  name: "data_len"
+  type_id: 0xf435685e
+  offset: 64
+}
+member {
+  id: 0x7377a26d
+  name: "data_len"
+  type_id: 0x914dbfdc
+  offset: 1120
+}
+member {
+  id: 0x73a3603c
+  name: "data_len"
+  type_id: 0x4585663f
+  offset: 928
+}
+member {
+  id: 0x8fe034d2
+  name: "data_meta"
+  type_id: 0x18bd6530
+  offset: 128
+}
+member {
+  id: 0x970da8c8
+  name: "data_offset"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0x97a5dcff
+  name: "data_offset"
+  type_id: 0xedf277ba
+  offset: 64
+}
+member {
+  id: 0x97a5dfa6
+  name: "data_offset"
+  type_id: 0xedf277ba
+  offset: 8320
+}
+member {
+  id: 0x97ae0d14
+  name: "data_offset"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0xd9faa9a8
+  name: "data_out"
+  type_id: 0xedf277ba
+  offset: 192
+}
+member {
+  id: 0x708d8054
+  name: "data_page_size"
+  type_id: 0x92233392
+  offset: 1536
+}
+member {
+  id: 0xe478959f
+  name: "data_pages"
+  type_id: 0xc216d7bc
+  offset: 1920
+}
+member {
+  id: 0x29ecc424
+  name: "data_path"
+  type_id: 0xb3e7bac9
+  offset: 40
+}
+member {
+  id: 0x2d064a5e
+  name: "data_payload_max"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x65bb5e0b
+  name: "data_present"
+  type_id: 0x2cc801ba
+  offset: 192
+}
+member {
+  id: 0x82c1f40b
+  name: "data_ptr"
+  type_id: 0x1df06cce
+}
+member {
+  id: 0x08a261d1
+  name: "data_q"
+  type_id: 0x578f9c2b
+  offset: 256
+}
+member {
+  id: 0x08a263aa
+  name: "data_q"
+  type_id: 0x578f9c2b
+  offset: 3904
+}
+member {
+  id: 0x8455130d
+  name: "data_read"
+  type_id: 0x2c97f35a
+  offset: 256
+}
+member {
+  id: 0xac65e341
+  name: "data_role"
+  type_id: 0xc607e025
+  offset: 7584
+}
+member {
+  id: 0xac65ebc1
+  name: "data_role"
+  type_id: 0xc607e025
+  offset: 1472
+}
+member {
+  id: 0x52e02b4b
+  name: "data_sector_size"
+  type_id: 0x4585663f
+  offset: 800
+}
+member {
+  id: 0x9e8ccb80
+  name: "data_shift"
+  type_id: 0x5d8155a5
+  offset: 40
+}
+member {
+  id: 0x564ca083
+  name: "data_size"
+  type_id: 0x4585663f
+  offset: 640
+}
+member {
+  id: 0x569ccc07
+  name: "data_size"
+  type_id: 0x95ef30d6
+  offset: 256
+}
+member {
+  id: 0x56c020ba
+  name: "data_size"
+  type_id: 0xc9082b19
+  offset: 3104
+}
+member {
+  id: 0x56c02dce
+  name: "data_size"
+  type_id: 0xc9082b19
+  offset: 640
+}
+member {
+  id: 0x56e4db82
+  name: "data_size"
+  type_id: 0xedf277ba
+  offset: 8384
+}
+member {
+  id: 0x56fd1430
+  name: "data_size"
+  type_id: 0xf435685e
+  offset: 1216
+}
+member {
+  id: 0x56fd1dec
+  name: "data_size"
+  type_id: 0xf435685e
+  offset: 512
+}
+member {
+  id: 0x3796f2ec
+  name: "data_size_from_cmnd"
+  type_id: 0xc9082b19
+  offset: 3136
+}
+member {
+  id: 0x784f7cea
+  name: "data_size_in"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xa437fbc0
+  name: "data_size_out"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x250d30e0
+  name: "data_source"
+  type_id: 0x6d7f5ff6
+  offset: 16
+}
+member {
+  id: 0x31272409
+  name: "data_src"
+  type_id: 0xad4e3ade
+  offset: 256
+}
+member {
+  id: 0xf93a991e
+  name: "data_state"
+  type_id: 0xb914bfab
+  offset: 1152
+}
+member {
+  id: 0xbbf02f32
+  name: "data_subs"
+  type_id: 0x08ba388c
+  offset: 512
+}
+member {
+  id: 0x132ae04f
+  name: "data_tag_unit_size"
+  type_id: 0x4585663f
+  offset: 832
+}
+member {
+  id: 0xc71824a4
+  name: "data_tail"
+  type_id: 0xedf277ba
+  offset: 8256
+}
+member {
+  id: 0x45ba9eb3
+  name: "data_timeout"
+  type_id: 0x92233392
+  offset: 10240
+}
+member {
+  id: 0x0d6b4488
+  name: "data_timer"
+  type_id: 0xd298e888
+  offset: 8896
+}
+member {
+  id: 0x815eb576
+  name: "data_type"
+  type_id: 0x6720d32f
+  offset: 576
+}
+member {
+  id: 0xa7729ae1
+  name: "data_unit_num"
+  type_id: 0x92233392
+  offset: 1024
+}
+member {
+  id: 0x7ab5d0d0
+  name: "data_unit_size"
+  type_id: 0x295c7202
+  offset: 512
+}
+member {
+  id: 0x7ad90fe7
+  name: "data_unit_size"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xb566189c
+  name: "data_unit_size_bits"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x26d31747
+  name: "data_vm"
+  type_id: 0x33756485
+  offset: 1792
+}
+member {
+  id: 0x7c7bb469
+  name: "dataformat"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x3029aa1e
+  name: "datainterval"
+  type_id: 0x5d8155a5
+  offset: 416
+}
+member {
+  id: 0x3031a149
+  name: "datainterval"
+  type_id: 0x4585663f
+  offset: 45248
+}
+member {
+  id: 0xb9dcf471
+  name: "datalen"
+  type_id: 0xf435685e
+  offset: 448
+}
+member {
+  id: 0xb9e1f779
+  name: "datalen"
+  type_id: 0xc93e017b
+  offset: 1136
+}
+member {
+  id: 0x6f49e81a
+  name: "datasheet_name"
+  type_id: 0x3e10b518
+  offset: 1088
+}
+member {
+  id: 0xf893e364
+  name: "date"
+  type_id: 0x0483e6f8
+  offset: 1408
+}
+member {
+  id: 0xe0d54692
+  name: "datecode"
+  type_id: 0xea2d574d
+  offset: 160
+}
+member {
+  id: 0x13afcd46
+  name: "datum"
+  type_id: 0x4fda69a2
+  offset: 64
+}
+member {
+  id: 0x13f8aa4a
+  name: "datum"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0x57d05f3f
+  name: "dax_dev"
+  type_id: 0x35abdbf6
+  offset: 320
+}
+member {
+  id: 0x49b9746f
+  name: "dax_ida"
+  type_id: 0xe1a31370
+  offset: 7680
+}
+member {
+  id: 0x08509b5c
+  name: "dax_seed"
+  type_id: 0x0258f96e
+  offset: 8064
+}
+member {
+  id: 0x8b951fe9
+  name: "dax_supported"
+  type_id: 0x36691375
+  offset: 64
+}
+member {
+  id: 0xd3a54092
+  name: "db_bitmap"
+  type_id: 0x064d6086
+  offset: 384
+}
+member {
+  id: 0x3baa0bf3
+  name: "db_lpi_base"
+  type_id: 0x22b36393
+  offset: 320
+}
+member {
+  id: 0xf540eeb1
+  name: "db_off"
+  type_id: 0x0baa70a7
+  offset: 160
+}
+member {
+  id: 0xa5163d35
+  name: "dba"
+  type_id: 0x3de947e9
+  offset: 320
+}
+member {
+  id: 0x26b32295
+  name: "dbc"
+  type_id: 0x18bd6530
+  offset: 59200
+}
+member {
+  id: 0x5cb6e321
+  name: "dbg_bcr"
+  type_id: 0x774f5f7f
+}
+member {
+  id: 0xb8d95da8
+  name: "dbg_bvr"
+  type_id: 0x774f5f7f
+  offset: 1024
+}
+member {
+  id: 0x7a634154
+  name: "dbg_client_name"
+  type_id: 0x0483e6f8
+  offset: 384
+}
+member {
+  id: 0xf719f956
+  name: "dbg_dev_root"
+  type_id: 0x120540d1
+  offset: 3008
+}
+member {
+  id: 0xdd406d35
+  name: "dbg_dir"
+  type_id: 0x120540d1
+  offset: 8256
+}
+member {
+  id: 0x82a62b80
+  name: "dbg_register_dump"
+  type_id: 0x0ece1cac
+  offset: 1024
+}
+member {
+  id: 0xa6878b87
+  name: "dbg_show"
+  type_id: 0x0ec895e7
+  offset: 1024
+}
+member {
+  id: 0x8d662f3c
+  name: "dbg_summary_show"
+  type_id: 0x0effb461
+  offset: 2944
+}
+member {
+  id: 0x6a57f232
+  name: "dbg_wcr"
+  type_id: 0x774f5f7f
+  offset: 2048
+}
+member {
+  id: 0x88756f7c
+  name: "dbg_wvr"
+  type_id: 0x774f5f7f
+  offset: 3072
+}
+member {
+  id: 0x24017197
+  name: "dbi_base"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0x819cecf7
+  name: "dbi_base2"
+  type_id: 0x18bd6530
+  offset: 128
+}
+member {
+  id: 0x2be12600
+  name: "dbits4"
+  type_id: 0x295c7202
+  offset: 96
+}
+member {
+  id: 0xa560d1ea
+  name: "dbits6"
+  type_id: 0x295c7202
+  offset: 112
+}
+member {
+  id: 0xef2014c6
+  name: "dbs_data"
+  type_id: 0x3863a91c
+  offset: 1280
+}
+member {
+  id: 0x6afdae54
+  name: "dbuf"
+  type_id: 0x00c83ba6
+  offset: 64
+}
+member {
+  id: 0x9a9e2353
+  name: "dbuf_mapped"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x0a10a4f8
+  name: "dcache_clean_inval_poc"
+  type_id: 0x0fc9cef8
+  offset: 512
+}
+member {
+  id: 0x14599da8
+  name: "dcbaa"
+  type_id: 0x3b0b4c9d
+  offset: 1088
+}
+member {
+  id: 0x0f4c2404
+  name: "dcbaa_ptr"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0x0fa6f6a1
+  name: "dcbaa_ptr"
+  type_id: 0x78f4e574
+  offset: 384
+}
+member {
+  id: 0xaa26b880
+  name: "dccp"
+  type_id: 0x0a4fe389
+}
+member {
+  id: 0xaa738a91
+  name: "dccp"
+  type_id: 0x5f7df287
+}
+member {
+  id: 0xaa903f47
+  name: "dccp"
+  type_id: 0xbcce5d07
+  offset: 640
+}
+member {
+  id: 0xb3cadc7d
+  name: "dccp_loose"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x2bd05108
+  name: "dccp_timeout"
+  type_id: 0x668b7d21
+  offset: 32
+}
+member {
+  id: 0x510e9896
+  name: "dcd"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x518f96fa
+  name: "dcd"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0x2e02b0bf
+  name: "dcd_change"
+  type_id: 0x0c1c40a3
+  offset: 896
+}
+member {
+  id: 0x9062615d
+  name: "dce"
+  type_id: 0xc93e017b
+}
+member {
+  id: 0x9062658a
+  name: "dce"
+  type_id: 0xc93e017b
+  offset: 176
+}
+member {
+  id: 0x389f86e6
+  name: "dcid"
+  type_id: 0xe8034002
+  offset: 416
+}
+member {
+  id: 0xb5781583
+  name: "dclkmax"
+  type_id: 0xe62ebf07
+  offset: 960
+}
+member {
+  id: 0x1e68d7b5
+  name: "dclkmin"
+  type_id: 0xe62ebf07
+  offset: 928
+}
+member {
+  id: 0x5b2564e2
+  name: "dcp_max"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0xe2fa3c27
+  name: "dcp_min"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xc747f834
+  name: "dcr"
+  type_id: 0x24232993
+}
+member {
+  id: 0xc74a8b1e
+  name: "dcr"
+  type_id: 0x295c7202
+  offset: 72
+}
+member {
+  id: 0xc7d03741
+  name: "dcr"
+  type_id: 0xb3e7bac9
+  offset: 8
+}
+member {
+  id: 0xf1c2dba4
+  name: "dcrn"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x50d8a1f7
+  name: "dct_part_sizes"
+  type_id: 0xddb527d3
+  offset: 9344
+}
+member {
+  id: 0x6a932528
+  name: "dctcp"
+  type_id: 0x2a9ada2a
+}
+member {
+  id: 0x158e583c
+  name: "dctcp_ab_ecn"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x95532d6d
+  name: "dctcp_ab_tot"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0xcf44f1be
+  name: "dctcp_alpha"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x8add888a
+  name: "dctcp_ce_state"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0xf116d4ed
+  name: "dctcp_enabled"
+  type_id: 0xe8034002
+}
+member {
+  id: 0x0e831890
+  name: "dd_data"
+  type_id: 0x18bd6530
+  offset: 768
+}
+member {
+  id: 0x10f05f62
+  name: "dd_key_false"
+  type_id: 0x8e47c273
+}
+member {
+  id: 0x444fe167
+  name: "dd_key_true"
+  type_id: 0xd2755d5f
+}
+member {
+  id: 0x1036f59b
+  name: "ddc"
+  type_id: 0x249959de
+  offset: 1600
+}
+member {
+  id: 0x1036ffd4
+  name: "ddc"
+  type_id: 0x249959de
+  offset: 14592
+}
+member {
+  id: 0x71b92056
+  name: "ddestroy"
+  type_id: 0xd3c80119
+  offset: 3328
+}
+member {
+  id: 0x71b92279
+  name: "ddestroy"
+  type_id: 0xd3c80119
+  offset: 16704
+}
+member {
+  id: 0x6ac8a1eb
+  name: "deactivate"
+  type_id: 0x0f377e3a
+  offset: 512
+}
+member {
+  id: 0x6aca0ec8
+  name: "deactivate"
+  type_id: 0x0d9a8731
+  offset: 128
+}
+member {
+  id: 0x30087383
+  name: "deactivate_target"
+  type_id: 0x0ef6d218
+  offset: 448
+}
+member {
+  id: 0x5dc905f7
+  name: "deactivate_waitq"
+  type_id: 0x03913382
+  offset: 576
+}
+member {
+  id: 0x4397dac6
+  name: "deactivated"
+  type_id: 0x4585663f
+  offset: 8462
+  bitsize: 1
+}
+member {
+  id: 0xd2107705
+  name: "deactivations"
+  type_id: 0x4585663f
+  offset: 1088
+}
+member {
+  id: 0x3b4f40b2
+  name: "dead"
+  type_id: 0xfc0e1dbd
+  offset: 64
+}
+member {
+  id: 0x3b803bcb
+  name: "dead"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x3b9a1c89
+  name: "dead"
+  type_id: 0x295c7202
+  offset: 1200
+}
+member {
+  id: 0x3b9a1ffe
+  name: "dead"
+  type_id: 0x295c7202
+  offset: 128
+}
+member {
+  id: 0x3bc79110
+  name: "dead"
+  type_id: 0x74d29cf1
+  offset: 128
+}
+member {
+  id: 0x3bd4631e
+  name: "dead"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0x3bd46dea
+  name: "dead"
+  type_id: 0x6720d32f
+  offset: 448
+}
+member {
+  id: 0x3bd46e6c
+  name: "dead"
+  type_id: 0x6720d32f
+  offset: 7104
+}
+member {
+  id: 0x3bde3148
+  name: "dead"
+  type_id: 0x6d7f5ff6
+  offset: 352
+}
+member {
+  id: 0x3bde32d6
+  name: "dead"
+  type_id: 0x6d7f5ff6
+  offset: 320
+}
+member {
+  id: 0x3bde3a21
+  name: "dead"
+  type_id: 0x6d7f5ff6
+  offset: 3200
+}
+member {
+  id: 0x6491a5c4
+  name: "dead"
+  type_id: 0x295c7202
+  offset: 1664
+  bitsize: 1
+}
+member {
+  id: 0xd2ab81ed
+  name: "dead_node"
+  type_id: 0x49a73111
+}
+member {
+  id: 0xc48daa2e
+  name: "deadband"
+  type_id: 0xe8034002
+  offset: 64
+}
+member {
+  id: 0xd066a6b1
+  name: "deadline"
+  type_id: 0x92233392
+  offset: 576
+}
+member {
+  id: 0xd0c7ffe9
+  name: "deadline"
+  type_id: 0x33756485
+  offset: 1280
+}
+member {
+  id: 0xb0c7fc0c
+  name: "deadprops"
+  type_id: 0x03064599
+  offset: 832
+}
+member {
+  id: 0x36b0db88
+  name: "dealloc"
+  type_id: 0x0f019c55
+  offset: 64
+}
+member {
+  id: 0x45801629
+  name: "deassert"
+  type_id: 0x2fed2c49
+  offset: 128
+}
+member {
+  id: 0x0c2c0b05
+  name: "deassert_count"
+  type_id: 0x74d29cf1
+  offset: 288
+}
+member {
+  id: 0x6b1d26fa
+  name: "debounce_period_us"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0x7480ca51
+  name: "debounce_time"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0x070a913d
+  name: "debug"
+  type_id: 0x0c8ded5e
+  offset: 256
+}
+member {
+  id: 0x07307794
+  name: "debug"
+  type_id: 0x366bef7d
+}
+member {
+  id: 0x073956d8
+  name: "debug"
+  type_id: 0x3f498f10
+  offset: 1664
+}
+member {
+  id: 0x075b6aff
+  name: "debug"
+  type_id: 0x5d705e7f
+  offset: 5760
+}
+member {
+  id: 0x07cf2cee
+  name: "debug"
+  type_id: 0xc93e017b
+  offset: 62080
+}
+member {
+  id: 0x8aa7a24b
+  name: "debug_dir"
+  type_id: 0x120540d1
+  offset: 10368
+}
+member {
+  id: 0x8aa7ae55
+  name: "debug_dir"
+  type_id: 0x120540d1
+  offset: 62144
+}
+member {
+  id: 0x58740fba
+  name: "debug_events"
+  type_id: 0x120540d1
+  offset: 62272
+}
+member {
+  id: 0x0a2b1c5c
+  name: "debug_id"
+  type_id: 0x4585663f
+  offset: 325
+  bitsize: 27
+}
+member {
+  id: 0x661f35a2
+  name: "debug_id"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x663d9df7
+  name: "debug_id"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0x21357c80
+  name: "debug_init"
+  type_id: 0x0e0a62af
+  offset: 1536
+}
+member {
+  id: 0xab17d40e
+  name: "debug_list"
+  type_id: 0xd3c80119
+  offset: 62336
+}
+member {
+  id: 0xaf4362fa
+  name: "debug_list_lock"
+  type_id: 0xf313e71a
+  offset: 62464
+}
+member {
+  id: 0xe0038b0c
+  name: "debug_node"
+  type_id: 0x49a73111
+  offset: 1792
+}
+member {
+  id: 0x7e662956
+  name: "debug_ptr"
+  type_id: 0x1cd322d1
+  offset: 15424
+}
+member {
+  id: 0x2c8c53b8
+  name: "debug_rdesc"
+  type_id: 0x120540d1
+  offset: 62208
+}
+member {
+  id: 0xd48f2f23
+  name: "debug_str"
+  type_id: 0x37638ded
+  offset: 96
+}
+member {
+  id: 0xff66bcf9
+  name: "debug_wait"
+  type_id: 0x03913382
+  offset: 62528
+}
+member {
+  id: 0x1c35735f
+  name: "debugfs"
+  type_id: 0x120540d1
+  offset: 4416
+}
+member {
+  id: 0x1c357508
+  name: "debugfs"
+  type_id: 0x120540d1
+  offset: 1024
+}
+member {
+  id: 0x1c3575d0
+  name: "debugfs"
+  type_id: 0x120540d1
+  offset: 320
+}
+member {
+  id: 0x1c357788
+  name: "debugfs"
+  type_id: 0x120540d1
+  offset: 2176
+}
+member {
+  id: 0x1c35794d
+  name: "debugfs"
+  type_id: 0x120540d1
+  offset: 31616
+}
+member {
+  id: 0x1c357c44
+  name: "debugfs"
+  type_id: 0x120540d1
+  offset: 10560
+}
+member {
+  id: 0x1c357d5d
+  name: "debugfs"
+  type_id: 0x120540d1
+  offset: 16256
+}
+member {
+  id: 0x055225e4
+  name: "debugfs_attrs"
+  type_id: 0x30791928
+  offset: 640
+}
+member {
+  id: 0x5ce8eefb
+  name: "debugfs_card_root"
+  type_id: 0x120540d1
+  offset: 5824
+}
+member {
+  id: 0x1678052a
+  name: "debugfs_dapm"
+  type_id: 0x120540d1
+  offset: 576
+}
+member {
+  id: 0x6425d0fe
+  name: "debugfs_dentry"
+  type_id: 0x120540d1
+  offset: 26432
+}
+member {
+  id: 0x35a0a098
+  name: "debugfs_dir"
+  type_id: 0x120540d1
+  offset: 4352
+}
+member {
+  id: 0x35a0a1d5
+  name: "debugfs_dir"
+  type_id: 0x120540d1
+  offset: 8320
+}
+member {
+  id: 0x35a0a6c6
+  name: "debugfs_dir"
+  type_id: 0x120540d1
+  offset: 256
+}
+member {
+  id: 0xa645680e
+  name: "debugfs_disable"
+  type_id: 0x6d7f5ff6
+  offset: 2144
+}
+member {
+  id: 0xfebe6b8b
+  name: "debugfs_dpcm_root"
+  type_id: 0x120540d1
+  offset: 13760
+}
+member {
+  id: 0x58afd2ad
+  name: "debugfs_ee_rate_limit_ms"
+  type_id: 0xc9082b19
+  offset: 40064
+}
+member {
+  id: 0xcb2b5333
+  name: "debugfs_ee_work"
+  type_id: 0xf1159c31
+  offset: 38976
+}
+member {
+  id: 0xd170400d
+  name: "debugfs_entry"
+  type_id: 0x120540d1
+  offset: 3328
+}
+member {
+  id: 0xd1704840
+  name: "debugfs_entry"
+  type_id: 0x120540d1
+  offset: 14784
+}
+member {
+  id: 0xd1704eaa
+  name: "debugfs_entry"
+  type_id: 0x120540d1
+  offset: 12224
+}
+member {
+  id: 0xeba81ea2
+  name: "debugfs_init"
+  type_id: 0x0e2cae32
+  offset: 256
+}
+member {
+  id: 0xeba837e7
+  name: "debugfs_init"
+  type_id: 0x0e0e584e
+  offset: 512
+}
+member {
+  id: 0xeba997ef
+  name: "debugfs_init"
+  type_id: 0x0fa23f49
+  offset: 448
+}
+member {
+  id: 0xebaaf9b9
+  name: "debugfs_init"
+  type_id: 0x0cc2a6e7
+  offset: 1600
+}
+member {
+  id: 0xebab8526
+  name: "debugfs_init"
+  type_id: 0x0dbf72e5
+  offset: 960
+}
+member {
+  id: 0xf47c4072
+  name: "debugfs_list"
+  type_id: 0xd3c80119
+  offset: 256
+}
+member {
+  id: 0xbbc6908d
+  name: "debugfs_lock"
+  type_id: 0xa7c362b0
+  offset: 384
+}
+member {
+  id: 0x1120fdc2
+  name: "debugfs_mutex"
+  type_id: 0xa7c362b0
+  offset: 8512
+}
+member {
+  id: 0x26d88a14
+  name: "debugfs_name"
+  type_id: 0x3e10b518
+  offset: 2240
+}
+member {
+  id: 0x6e65816a
+  name: "debugfs_off_cache"
+  type_id: 0xd3c80119
+  offset: 2432
+}
+member {
+  id: 0xd11f5aed
+  name: "debugfs_prefix"
+  type_id: 0x3e10b518
+  offset: 2880
+}
+member {
+  id: 0xd11f5b0c
+  name: "debugfs_prefix"
+  type_id: 0x3e10b518
+  offset: 2816
+}
+member {
+  id: 0x9b75ff8f
+  name: "debugfs_private"
+  type_id: 0x18bd6530
+  offset: 36288
+}
+member {
+  id: 0xabe5b2a9
+  name: "debugfs_reg_access"
+  type_id: 0x2c397e45
+  offset: 896
+}
+member {
+  id: 0x038c835b
+  name: "debugfs_reg_len"
+  type_id: 0x4585663f
+  offset: 2304
+}
+member {
+  id: 0x83e5319b
+  name: "debugfs_root"
+  type_id: 0x120540d1
+  offset: 2752
+}
+member {
+  id: 0x83e539f9
+  name: "debugfs_root"
+  type_id: 0x120540d1
+  offset: 38912
+}
+member {
+  id: 0x83e53a6f
+  name: "debugfs_root"
+  type_id: 0x120540d1
+  offset: 192
+}
+member {
+  id: 0x83e53b5e
+  name: "debugfs_root"
+  type_id: 0x120540d1
+  offset: 58944
+}
+member {
+  id: 0x83e53c4f
+  name: "debugfs_root"
+  type_id: 0x120540d1
+  offset: 11904
+}
+member {
+  id: 0x83e53eaa
+  name: "debugfs_root"
+  type_id: 0x120540d1
+  offset: 12096
+}
+member {
+  id: 0x06879837
+  name: "debugfs_slots"
+  type_id: 0x120540d1
+  offset: 59008
+}
+member {
+  id: 0xcd446a90
+  name: "debugfs_stat_data"
+  type_id: 0x073894f9
+  offset: 26496
+}
+member {
+  id: 0xa113b6ec
+  name: "debugfs_tot_len"
+  type_id: 0x4585663f
+  offset: 2368
+}
+member {
+  id: 0x486b7345
+  name: "debugfs_val_len"
+  type_id: 0x4585663f
+  offset: 2336
+}
+member {
+  id: 0x0b88f597
+  name: "debugfsdir"
+  type_id: 0x120540d1
+  offset: 10496
+}
+member {
+  id: 0xeb4c7e28
+  name: "dec_ref_pic_marking_bit_size"
+  type_id: 0xe62ebf07
+  offset: 4320
+}
+member {
+  id: 0x86c5c02d
+  name: "decode_vbi_line"
+  type_id: 0x2de44294
+}
+member {
+  id: 0x7a730a17
+  name: "decomp_alloc"
+  type_id: 0x1e8db3c4
+  offset: 448
+}
+member {
+  id: 0x18e6a082
+  name: "decomp_free"
+  type_id: 0x0f3dfb90
+  offset: 512
+}
+member {
+  id: 0xf64ea857
+  name: "decomp_init"
+  type_id: 0x2c60346d
+  offset: 576
+}
+member {
+  id: 0x617a050c
+  name: "decomp_reset"
+  type_id: 0x0f3dfb90
+  offset: 640
+}
+member {
+  id: 0xc1942343
+  name: "decomp_stat"
+  type_id: 0x0f0c4873
+  offset: 832
+}
+member {
+  id: 0x75424e09
+  name: "decompress"
+  type_id: 0x2c604edc
+  offset: 704
+}
+member {
+  id: 0x70f86078
+  name: "decrypt"
+  type_id: 0x2ed391e2
+  offset: 192
+}
+member {
+  id: 0x70fa8381
+  name: "decrypt"
+  type_id: 0x2c316317
+  offset: 128
+}
+member {
+  id: 0xea1d0dbf
+  name: "def"
+  type_id: 0x2e0f9112
+  offset: 512
+}
+member {
+  id: 0xea76816b
+  name: "def"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xffdeb7b9
+  name: "def_br_lsto"
+  type_id: 0xe8034002
+  offset: 6928
+}
+member {
+  id: 0x1ce021c4
+  name: "def_datalen"
+  type_id: 0xf435685e
+  offset: 64
+}
+member {
+  id: 0xd2bea8af
+  name: "def_domain_type"
+  type_id: 0x2dd58efa
+  offset: 768
+}
+member {
+  id: 0x56d29d21
+  name: "def_flags"
+  type_id: 0x33756485
+  offset: 1984
+}
+member {
+  id: 0xbf88522e
+  name: "def_inq_scan_int"
+  type_id: 0xe8034002
+  offset: 6896
+}
+member {
+  id: 0x73920265
+  name: "def_inq_scan_type"
+  type_id: 0xb3e7bac9
+  offset: 6880
+}
+member {
+  id: 0xa0df1bbb
+  name: "def_inq_scan_window"
+  type_id: 0xe8034002
+  offset: 6912
+}
+member {
+  id: 0xb0bb8540
+  name: "def_le_autoconnect_timeout"
+  type_id: 0xe8034002
+  offset: 6976
+}
+member {
+  id: 0x27cc5bcb
+  name: "def_manufacturer"
+  type_id: 0x0483e6f8
+  offset: 1024
+}
+member {
+  id: 0x0c8eba16
+  name: "def_multi_adv_rotation_duration"
+  type_id: 0xe8034002
+  offset: 6960
+}
+member {
+  id: 0x340db501
+  name: "def_page_scan_int"
+  type_id: 0xe8034002
+  offset: 6848
+}
+member {
+  id: 0x434c9ecc
+  name: "def_page_scan_type"
+  type_id: 0xb3e7bac9
+  offset: 6832
+}
+member {
+  id: 0xa30bfddb
+  name: "def_page_scan_window"
+  type_id: 0xe8034002
+  offset: 6864
+}
+member {
+  id: 0x5a7b4662
+  name: "def_page_timeout"
+  type_id: 0xe8034002
+  offset: 6944
+}
+member {
+  id: 0xce2fcc13
+  name: "default_a"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x162ec05a
+  name: "default_advmss"
+  type_id: 0x3a9c855e
+  offset: 192
+}
+member {
+  id: 0x012000c0
+  name: "default_ctx"
+  type_id: 0x0d68946d
+  offset: 9600
+}
+member {
+  id: 0xe1eb9c42
+  name: "default_domain"
+  type_id: 0x2e94a1e1
+  offset: 1728
+}
+member {
+  id: 0x91bbb2d5
+  name: "default_domain_ops"
+  type_id: 0x30092723
+  offset: 896
+}
+member {
+  id: 0xb612a728
+  name: "default_groups"
+  type_id: 0xd3c80119
+  offset: 832
+}
+member {
+  id: 0xb6c72669
+  name: "default_groups"
+  type_id: 0x06433852
+  offset: 128
+}
+member {
+  id: 0x5d35f8c7
+  name: "default_hw_config_id"
+  type_id: 0x0baa70a7
+  offset: 13120
+}
+member {
+  id: 0x701b05fd
+  name: "default_irq"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x16a5b6d7
+  name: "default_label"
+  type_id: 0x3e10b518
+  offset: 64
+}
+member {
+  id: 0x3f547f97
+  name: "default_lock"
+  type_id: 0xf313e71a
+  offset: 384
+}
+member {
+  id: 0xd15bb728
+  name: "default_priority"
+  type_id: 0xe9da44e2
+  offset: 3264
+}
+member {
+  id: 0x7ad0edec
+  name: "default_range"
+  type_id: 0x384f7d7c
+  offset: 536
+}
+member {
+  id: 0x7c01b61e
+  name: "default_role"
+  type_id: 0x384f7d7c
+  offset: 520
+}
+member {
+  id: 0x37301021
+  name: "default_set"
+  type_id: 0x7b06e63f
+}
+member {
+  id: 0xb10f26b3
+  name: "default_state"
+  type_id: 0x3a47ea7a
+  offset: 64
+}
+member {
+  id: 0xb02c4bf8
+  name: "default_timer_slack_ns"
+  type_id: 0x92233392
+  offset: 22784
+}
+member {
+  id: 0x6bd84209
+  name: "default_trigger"
+  type_id: 0x3e10b518
+  offset: 896
+}
+member {
+  id: 0x98b80a03
+  name: "default_type"
+  type_id: 0x384f7d7c
+  offset: 528
+}
+member {
+  id: 0x98c5ce6d
+  name: "default_type"
+  type_id: 0x4585663f
+  offset: 1216
+}
+member {
+  id: 0x932e00b0
+  name: "default_user"
+  type_id: 0x384f7d7c
+  offset: 512
+}
+member {
+  id: 0x126d860d
+  name: "default_value"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0x127094cd
+  name: "default_value"
+  type_id: 0xd41e888f
+  offset: 160
+}
+member {
+  id: 0x1279e252
+  name: "default_value"
+  type_id: 0xdd6eef0a
+  offset: 512
+}
+member {
+  id: 0x128a8292
+  name: "default_value"
+  type_id: 0x2e0f9112
+  offset: 896
+}
+member {
+  id: 0x12ab2deb
+  name: "default_value"
+  type_id: 0x0faae5b1
+  offset: 256
+}
+member {
+  id: 0x12ab2f20
+  name: "default_value"
+  type_id: 0x0faae5b1
+  offset: 416
+}
+member {
+  id: 0x49d6256c
+  name: "defer"
+  type_id: 0x0e837004
+  offset: 448
+}
+member {
+  id: 0xd590f14b
+  name: "defer_caching"
+  type_id: 0x6d7f5ff6
+  offset: 4096
+}
+member {
+  id: 0x81689872
+  name: "defer_count"
+  type_id: 0x6720d32f
+  offset: 5664
+}
+member {
+  id: 0x454aae2a
+  name: "defer_csd"
+  type_id: 0xec722edd
+  offset: 5888
+}
+member {
+  id: 0x50bb24ce
+  name: "defer_hard_irqs_count"
+  type_id: 0x6720d32f
+  offset: 224
+}
+member {
+  id: 0x1bbf5875
+  name: "defer_ipi_scheduled"
+  type_id: 0x6720d32f
+  offset: 5696
+}
+member {
+  id: 0x31444ba6
+  name: "defer_list"
+  type_id: 0xd3c80119
+  offset: 10432
+}
+member {
+  id: 0x3192c2ff
+  name: "defer_list"
+  type_id: 0x054f691a
+  offset: 5760
+}
+member {
+  id: 0x9a8b61e0
+  name: "defer_lock"
+  type_id: 0xf313e71a
+  offset: 5632
+}
+member {
+  id: 0x894f196d
+  name: "defer_start"
+  type_id: 0x33756485
+  offset: 1600
+}
+member {
+  id: 0xd9d08d96
+  name: "defer_sync"
+  type_id: 0xd3c80119
+  offset: 256
+}
+member {
+  id: 0xfda405f7
+  name: "defer_warn"
+  type_id: 0x33756485
+  offset: 1664
+}
+member {
+  id: 0xf04d7467
+  name: "deferred"
+  type_id: 0xfb1df068
+  offset: 4096
+}
+member {
+  id: 0xf065af4e
+  name: "deferred"
+  type_id: 0xd3c80119
+  offset: 1408
+}
+member {
+  id: 0x17c292e0
+  name: "deferred_cmd"
+  type_id: 0x2ea8d96e
+  offset: 6656
+}
+member {
+  id: 0xaf9d5f6e
+  name: "deferred_disables"
+  type_id: 0x4585663f
+  offset: 288
+}
+member {
+  id: 0xb9227601
+  name: "deferred_list"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0xb9af3377
+  name: "deferred_list"
+  type_id: 0x5e8dc7f4
+  offset: 576
+}
+member {
+  id: 0x94bc1785
+  name: "deferred_probe"
+  type_id: 0xd3c80119
+  offset: 1344
+}
+member {
+  id: 0x572ecc04
+  name: "deferred_probe_reason"
+  type_id: 0x0483e6f8
+  offset: 1536
+}
+member {
+  id: 0xabac390c
+  name: "deferred_register_work"
+  type_id: 0xf1159c31
+  offset: 8128
+}
+member {
+  id: 0x6c337333
+  name: "deferred_resume"
+  type_id: 0x4585663f
+  offset: 1989
+  bitsize: 1
+}
+member {
+  id: 0xfcf41a58
+  name: "deferred_resume_work"
+  type_id: 0x1f3c8679
+  offset: 5888
+}
+member {
+  id: 0x4275680a
+  name: "deferred_setup"
+  type_id: 0x6d7f5ff6
+  offset: 3080
+}
+member {
+  id: 0x5cbd60fc
+  name: "deferred_split_queue"
+  type_id: 0x814f67d4
+  offset: 17728
+}
+member {
+  id: 0x5cbd6512
+  name: "deferred_split_queue"
+  type_id: 0x814f67d4
+  offset: 55808
+}
+member {
+  id: 0x3a27bb21
+  name: "deferred_work"
+  type_id: 0x6720d32f
+  offset: 832
+}
+member {
+  id: 0x3e0669bc
+  name: "deferred_work_node"
+  type_id: 0x49a73111
+  offset: 704
+}
+member {
+  id: 0xdea4963e
+  name: "deferredq"
+  type_id: 0x578f9c2b
+  offset: 64
+}
+member {
+  id: 0x57534cde
+  name: "define_fields"
+  type_id: 0x2f99c988
+}
+member {
+  id: 0x76fb30d4
+  name: "defrag_ipv4_users"
+  type_id: 0x4585663f
+  offset: 1664
+}
+member {
+  id: 0x1b4fab6d
+  name: "defrag_ipv6_users"
+  type_id: 0x4585663f
+  offset: 1696
+}
+member {
+  id: 0x2674640e
+  name: "defunct"
+  type_id: 0x6720d32f
+  offset: 43776
+}
+member {
+  id: 0x08753e9c
+  name: "degamma_lut"
+  type_id: 0x343ebce3
+  offset: 2176
+}
+member {
+  id: 0x8e33b34d
+  name: "degamma_lut_property"
+  type_id: 0x2a670b41
+  offset: 8512
+}
+member {
+  id: 0x0bb4cb0d
+  name: "degamma_lut_size_property"
+  type_id: 0x2a670b41
+  offset: 8576
+}
+member {
+  id: 0x46b00ed5
+  name: "del"
+  type_id: 0x0f0deded
+  offset: 1152
+}
+member {
+  id: 0x46b333c5
+  name: "del"
+  type_id: 0x0c3ac0b1
+  offset: 64
+}
+member {
+  id: 0xb732adca
+  name: "del_consumer"
+  type_id: 0x0fa14b4c
+  offset: 320
+}
+member {
+  id: 0x5e7ee5d3
+  name: "del_producer"
+  type_id: 0x0d384575
+  offset: 256
+}
+member {
+  id: 0x5e0e77ed
+  name: "del_virtual_intf"
+  type_id: 0x2f6628e3
+  offset: 320
+}
+member {
+  id: 0xbb26f436
+  name: "del_virtual_intf_deprecated"
+  type_id: 0x0c1efc10
+  offset: 64
+}
+member {
+  id: 0x537845ca
+  name: "del_vqs"
+  type_id: 0x0c254fa0
+  offset: 448
+}
+member {
+  id: 0xa0e8ef7b
+  name: "del_work"
+  type_id: 0x1f3c8679
+  offset: 2752
+}
+member {
+  id: 0x8409d13d
+  name: "delay"
+  type_id: 0x33756485
+  offset: 384
+}
+member {
+  id: 0x8428a860
+  name: "delay"
+  type_id: 0x120d5977
+  offset: 608
+}
+member {
+  id: 0x843e8618
+  name: "delay"
+  type_id: 0x0425ae3c
+  offset: 1280
+}
+member {
+  id: 0x843ec56a
+  name: "delay"
+  type_id: 0x0469d4d8
+  offset: 2368
+}
+member {
+  id: 0x845e0640
+  name: "delay"
+  type_id: 0x64a5f25f
+  offset: 640
+}
+member {
+  id: 0x84d2a835
+  name: "delay"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0x84e83fe7
+  name: "delay"
+  type_id: 0xd298e888
+  offset: 1216
+}
+member {
+  id: 0x84f3a492
+  name: "delay"
+  type_id: 0xc9082b19
+  offset: 576
+}
+member {
+  id: 0x9a2f5ed9
+  name: "delay_attr"
+  type_id: 0x11cf9350
+  offset: 1664
+}
+member {
+  id: 0xf158fce1
+  name: "delay_ms"
+  type_id: 0x33756485
+  offset: 2624
+}
+member {
+  id: 0xf158ff5c
+  name: "delay_ms"
+  type_id: 0x33756485
+  offset: 1536
+}
+member {
+  id: 0xcda74d2d
+  name: "delay_nsec"
+  type_id: 0x1f4573ef
+  offset: 2496
+}
+member {
+  id: 0xe2e47fe5
+  name: "delay_rts_after_send"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x89172632
+  name: "delay_rts_before_send"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x64b97471
+  name: "delay_start"
+  type_id: 0x1f4573ef
+  offset: 2560
+}
+member {
+  id: 0xb45614e6
+  name: "delay_us"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x0b72420c
+  name: "delay_work"
+  type_id: 0xd298e888
+  offset: 1728
+}
+member {
+  id: 0xa71fc7ec
+  name: "delayed_event"
+  type_id: 0x6d7f5ff6
+  offset: 4240
+}
+member {
+  id: 0x28c87ebf
+  name: "delayed_hotplug"
+  type_id: 0x6d7f5ff6
+  offset: 3072
+}
+member {
+  id: 0x506f3dc2
+  name: "delayed_runtime"
+  type_id: 0x11c404ba
+  offset: 2560
+}
+member {
+  id: 0xd3364d7b
+  name: "delayed_set_value"
+  type_id: 0x6720d32f
+  offset: 2048
+}
+member {
+  id: 0xc11a364c
+  name: "delayed_state"
+  type_id: 0x63b95725
+  offset: 2496
+}
+member {
+  id: 0xab993d43
+  name: "delayed_status"
+  type_id: 0x6720d32f
+  offset: 1120
+}
+member {
+  id: 0xed6159d1
+  name: "delayed_work"
+  type_id: 0xf1159c31
+  offset: 12608
+}
+member {
+  id: 0xcdb81539
+  name: "delayed_work_list"
+  type_id: 0xd3c80119
+  offset: 192
+}
+member {
+  id: 0xd3147b81
+  name: "delete"
+  type_id: 0x2d7d9cfc
+  offset: 640
+}
+member {
+  id: 0xd315c629
+  name: "delete"
+  type_id: 0x2cc03484
+  offset: 640
+}
+member {
+  id: 0xd3162ccf
+  name: "delete"
+  type_id: 0x2f2bdc35
+  offset: 448
+}
+member {
+  id: 0x5096ad3d
+  name: "delete_empty"
+  type_id: 0x35ad7e6f
+  offset: 704
+}
+member {
+  id: 0x28292c47
+  name: "delete_mem_notify"
+  type_id: 0x0cf0f1be
+  offset: 448
+}
+member {
+  id: 0x7ccfd443
+  name: "deleted"
+  type_id: 0x6d7f5ff6
+  offset: 3200
+}
+member {
+  id: 0x1144d809
+  name: "deleting"
+  type_id: 0x6d7f5ff6
+  offset: 480
+}
+member {
+  id: 0x9871b666
+  name: "delivered"
+  type_id: 0xd41e888f
+  offset: 128
+}
+member {
+  id: 0xe07a91f0
+  name: "delivered_ce"
+  type_id: 0xd41e888f
+  offset: 160
+}
+member {
+  id: 0x351fa4e7
+  name: "delivered_death"
+  type_id: 0xd3c80119
+  offset: 3008
+}
+member {
+  id: 0xb362d7b2
+  name: "dellink"
+  type_id: 0x0da22dc7
+  offset: 704
+}
+member {
+  id: 0xe5d13e49
+  name: "delta"
+  type_id: 0x29b77961
+  offset: 32
+}
+member {
+  id: 0x837b8373
+  name: "delta_chroma_log2_weight_denom"
+  type_id: 0x901eaf6a
+  offset: 1544
+}
+member {
+  id: 0xa11966ff
+  name: "delta_chroma_weight_l0"
+  type_id: 0x5e18785f
+  offset: 256
+}
+member {
+  id: 0x615881dd
+  name: "delta_chroma_weight_l1"
+  type_id: 0x5e18785f
+  offset: 1024
+}
+member {
+  id: 0x6234def3
+  name: "delta_luma_weight_l0"
+  type_id: 0x6834694b
+}
+member {
+  id: 0x20f4728b
+  name: "delta_luma_weight_l1"
+  type_id: 0x6834694b
+  offset: 768
+}
+member {
+  id: 0x4aaf1ade
+  name: "delta_msr_wait"
+  type_id: 0x03913382
+  offset: 1920
+}
+member {
+  id: 0x67d3399c
+  name: "delta_pic_order_cnt0"
+  type_id: 0x0faae5b1
+  offset: 4256
+}
+member {
+  id: 0x2b907e90
+  name: "delta_pic_order_cnt1"
+  type_id: 0x0faae5b1
+  offset: 4288
+}
+member {
+  id: 0xa0b37a3d
+  name: "delta_pic_order_cnt_bottom"
+  type_id: 0x0faae5b1
+  offset: 4224
+}
+member {
+  id: 0x55b29743
+  name: "delta_q_uv_ac"
+  type_id: 0x901eaf6a
+  offset: 24
+}
+member {
+  id: 0xd3b9d90a
+  name: "delta_q_uv_dc"
+  type_id: 0x901eaf6a
+  offset: 16
+}
+member {
+  id: 0x24ad3b40
+  name: "delta_q_y_dc"
+  type_id: 0x901eaf6a
+  offset: 8
+}
+member {
+  id: 0x30af0b87
+  name: "delta_t"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x7ebb1d84
+  name: "demux_bounce"
+  type_id: 0x18bd6530
+  offset: 1280
+}
+member {
+  id: 0xb1989cbe
+  name: "demux_list"
+  type_id: 0xd3c80119
+  offset: 384
+}
+member {
+  id: 0xc47c5bd5
+  name: "den"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xe61594eb
+  name: "den_max"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x68887f5e
+  name: "den_min"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x17885c62
+  name: "den_step"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x87b01a1d
+  name: "denominator"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xf3efe400
+  name: "dentry"
+  type_id: 0x120540d1
+  offset: 768
+}
+member {
+  id: 0xf3efe74d
+  name: "dentry"
+  type_id: 0x120540d1
+  offset: 34240
+}
+member {
+  id: 0xf3efe84f
+  name: "dentry"
+  type_id: 0x120540d1
+  offset: 64
+}
+member {
+  id: 0xf3efeb8b
+  name: "dentry"
+  type_id: 0x120540d1
+  offset: 1728
+}
+member {
+  id: 0xf3efebee
+  name: "dentry"
+  type_id: 0x120540d1
+  offset: 3328
+}
+member {
+  id: 0x5101454d
+  name: "dentry_name"
+  type_id: 0xdd536304
+  offset: 3392
+}
+member {
+  id: 0x7f5ce60e
+  name: "dep_link_down"
+  type_id: 0x2dbf7b0c
+  offset: 320
+}
+member {
+  id: 0x3428ed37
+  name: "dep_link_up"
+  type_id: 0x6d7f5ff6
+  offset: 7616
+}
+member {
+  id: 0x34682498
+  name: "dep_link_up"
+  type_id: 0x2db0f133
+  offset: 256
+}
+member {
+  id: 0xca5e372d
+  name: "dep_map"
+  type_id: 0x5f2909b3
+  offset: 448
+}
+member {
+  id: 0xca5e395d
+  name: "dep_map"
+  type_id: 0x5f2909b3
+  offset: 3840
+}
+member {
+  id: 0x18a77240
+  name: "depends_on"
+  type_id: 0x4585663f
+  offset: 1856
+}
+member {
+  id: 0x99c3b854
+  name: "depot"
+  type_id: 0x52701409
+  offset: 128
+}
+member {
+  id: 0xe364f79b
+  name: "depot_size"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xac1da223
+  name: "deps"
+  type_id: 0xf0341a7a
+  offset: 64
+}
+member {
+  id: 0x1b032b65
+  name: "depth"
+  type_id: 0x6720d32f
+  offset: 832
+}
+member {
+  id: 0x1b032c3e
+  name: "depth"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x1b21801c
+  name: "depth"
+  type_id: 0x4585663f
+  offset: 1088
+}
+member {
+  id: 0x1b21841f
+  name: "depth"
+  type_id: 0x4585663f
+  offset: 2368
+}
+member {
+  id: 0x1b218a1d
+  name: "depth"
+  type_id: 0x4585663f
+  offset: 448
+}
+member {
+  id: 0x1b218a2b
+  name: "depth"
+  type_id: 0x4585663f
+  offset: 672
+}
+member {
+  id: 0x1b218d6a
+  name: "depth"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x1b398e2e
+  name: "depth"
+  type_id: 0x5d8155a5
+  offset: 448
+}
+member {
+  id: 0x1b4d5945
+  name: "depth"
+  type_id: 0x295c7202
+  offset: 32
+}
+member {
+  id: 0x1bd7e77f
+  name: "depth"
+  type_id: 0xb3e7bac9
+  offset: 192
+}
+member {
+  id: 0x77fa408e
+  name: "depth_updated"
+  type_id: 0x0c96a24a
+  offset: 256
+}
+member {
+  id: 0x02f59ce0
+  name: "deq_seg"
+  type_id: 0x3ef55b88
+  offset: 320
+}
+member {
+  id: 0x31c65e36
+  name: "dequeue"
+  type_id: 0x2d3df092
+  offset: 384
+}
+member {
+  id: 0x31dab8e1
+  name: "dequeue"
+  type_id: 0x31da1e83
+  offset: 256
+}
+member {
+  id: 0x31f939d7
+  name: "dequeue"
+  type_id: 0x125f621f
+  offset: 64
+}
+member {
+  id: 0x31f93ca4
+  name: "dequeue"
+  type_id: 0x125f621f
+  offset: 384
+}
+member {
+  id: 0x31f9e318
+  name: "dequeue"
+  type_id: 0x128371e2
+  offset: 704
+}
+member {
+  id: 0x161e460f
+  name: "dequeue_during_giveback"
+  type_id: 0x4585663f
+  offset: 1090
+  bitsize: 1
+}
+member {
+  id: 0x44b53fb0
+  name: "dequeue_task"
+  type_id: 0x0c4d6f90
+  offset: 128
+}
+member {
+  id: 0x8a59e26d
+  name: "dequeued"
+  type_id: 0xb3e7bac9
+  offset: 128
+}
+member {
+  id: 0x7f5400a8
+  name: "derive_sw_secret"
+  type_id: 0x2d4915c7
+  offset: 128
+}
+member {
+  id: 0x871745a5
+  name: "desc"
+  type_id: 0xcd61a67c
+  offset: 128
+}
+member {
+  id: 0x877591f3
+  name: "desc"
+  type_id: 0xafb28cf7
+  offset: 16
+}
+member {
+  id: 0x87807fd8
+  name: "desc"
+  type_id: 0x5a5219ed
+}
+member {
+  id: 0x8780fb54
+  name: "desc"
+  type_id: 0x5adf57ae
+  offset: 128
+}
+member {
+  id: 0x87afc747
+  name: "desc"
+  type_id: 0x75ea86c7
+}
+member {
+  id: 0x87b85fb9
+  name: "desc"
+  type_id: 0x6272783c
+}
+member {
+  id: 0x87c1a54b
+  name: "desc"
+  type_id: 0x1b8f18df
+  offset: 928
+}
+member {
+  id: 0x87c42d3b
+  name: "desc"
+  type_id: 0x1e00fa69
+}
+member {
+  id: 0x87c662ae
+  name: "desc"
+  type_id: 0x1c4f6f14
+}
+member {
+  id: 0x87ca6bab
+  name: "desc"
+  type_id: 0x104d72c1
+  offset: 512
+}
+member {
+  id: 0x87d4415a
+  name: "desc"
+  type_id: 0x0e6618c4
+  offset: 7296
+}
+member {
+  id: 0x87d47374
+  name: "desc"
+  type_id: 0x0e5eb556
+}
+member {
+  id: 0x87d73dc6
+  name: "desc"
+  type_id: 0x0d10073d
+}
+member {
+  id: 0x87d9e5d0
+  name: "desc"
+  type_id: 0x03c8112b
+}
+member {
+  id: 0x87dea235
+  name: "desc"
+  type_id: 0x0483e6f8
+  offset: 7424
+}
+member {
+  id: 0x87dea4a4
+  name: "desc"
+  type_id: 0x0483e6f8
+  offset: 1344
+}
+member {
+  id: 0x87e1eb87
+  name: "desc"
+  type_id: 0x3bc2a7f0
+  offset: 64
+}
+member {
+  id: 0x87e3bc35
+  name: "desc"
+  type_id: 0x39915f84
+  offset: 256
+}
+member {
+  id: 0x87e3bc9e
+  name: "desc"
+  type_id: 0x39915f84
+}
+member {
+  id: 0x87e434b6
+  name: "desc"
+  type_id: 0x3e10b518
+  offset: 128
+}
+member {
+  id: 0x87e65efb
+  name: "desc"
+  type_id: 0x3c744d69
+  offset: 448
+}
+member {
+  id: 0x87e67795
+  name: "desc"
+  type_id: 0x3c5396d4
+  offset: 128
+}
+member {
+  id: 0x87e9580e
+  name: "desc"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0x87eddf67
+  name: "desc"
+  type_id: 0x37f2a61c
+}
+member {
+  id: 0x87f8311e
+  name: "desc"
+  type_id: 0x2211c501
+  offset: 456
+}
+member {
+  id: 0x87ff4e4f
+  name: "desc"
+  type_id: 0x2560a232
+  offset: 1664
+}
+member {
+  id: 0x6cdf3282
+  name: "desc_allocated"
+  type_id: 0xd3c80119
+  offset: 1344
+}
+member {
+  id: 0xe174d214
+  name: "desc_completed"
+  type_id: 0xd3c80119
+  offset: 1728
+}
+member {
+  id: 0xf307b50c
+  name: "desc_free"
+  type_id: 0x0d02f9bc
+  offset: 1216
+}
+member {
+  id: 0xf325ad36
+  name: "desc_free"
+  type_id: 0x2f18acee
+  offset: 256
+}
+member {
+  id: 0xad9c0e13
+  name: "desc_index"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xef859e21
+  name: "desc_issued"
+  type_id: 0xd3c80119
+  offset: 1600
+}
+member {
+  id: 0x73096b7f
+  name: "desc_len"
+  type_id: 0x914dbfdc
+}
+member {
+  id: 0x64d13d0a
+  name: "desc_metadata_mode"
+  type_id: 0x86728ee6
+  offset: 576
+}
+member {
+  id: 0x5b723dba
+  name: "desc_metadata_modes"
+  type_id: 0x86728ee6
+  offset: 640
+}
+member {
+  id: 0xbf901141
+  name: "desc_submitted"
+  type_id: 0xd3c80119
+  offset: 1472
+}
+member {
+  id: 0x1d980984
+  name: "desc_sz"
+  type_id: 0x4585663f
+  offset: 7936
+}
+member {
+  id: 0xbfb20c6f
+  name: "desc_terminated"
+  type_id: 0xd3c80119
+  offset: 1856
+}
+member {
+  id: 0xa4d83fb9
+  name: "desc_type"
+  type_id: 0x295c7202
+  offset: 176
+}
+member {
+  id: 0x703132a7
+  name: "describe"
+  type_id: 0x0d45d6cd
+  offset: 768
+}
+member {
+  id: 0x3102d948
+  name: "description"
+  type_id: 0x78356643
+  offset: 96
+}
+member {
+  id: 0x3144f518
+  name: "description"
+  type_id: 0x3e10b518
+}
+member {
+  id: 0x3144f5b3
+  name: "description"
+  type_id: 0x3e10b518
+  offset: 256
+}
+member {
+  id: 0x317e62aa
+  name: "description"
+  type_id: 0x0483e6f8
+  offset: 64
+}
+member {
+  id: 0x317e664b
+  name: "description"
+  type_id: 0x0483e6f8
+}
+member {
+  id: 0x317e66e0
+  name: "description"
+  type_id: 0x0483e6f8
+  offset: 256
+}
+member {
+  id: 0xd618538f
+  name: "descriptor"
+  type_id: 0xc8c766a0
+}
+member {
+  id: 0xd6a3598f
+  name: "descriptor"
+  type_id: 0x73c9873d
+  offset: 64
+}
+member {
+  id: 0xd6d05b05
+  name: "descriptor"
+  type_id: 0x00c72527
+  offset: 192
+}
+member {
+  id: 0xd6f280e5
+  name: "descriptor"
+  type_id: 0x2211c501
+  offset: 8640
+}
+member {
+  id: 0xb52221b3
+  name: "descriptor_reuse"
+  type_id: 0x6d7f5ff6
+  offset: 1344
+}
+member {
+  id: 0xb5222b9b
+  name: "descriptor_reuse"
+  type_id: 0x6d7f5ff6
+  offset: 256
+}
+member {
+  id: 0x148adbbf
+  name: "descriptors"
+  type_id: 0x052e5823
+  offset: 128
+}
+member {
+  id: 0x2b914e16
+  name: "descs"
+  type_id: 0x2560a232
+  offset: 8640
+}
+member {
+  id: 0x2bd1f481
+  name: "descs"
+  type_id: 0x65dffcdd
+}
+member {
+  id: 0x2bdceef7
+  name: "descs"
+  type_id: 0x68c58af7
+}
+member {
+  id: 0x2bac99e8
+  name: "descsize"
+  type_id: 0x4585663f
+  offset: 640
+}
+member {
+  id: 0x2bac9f91
+  name: "descsize"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x8f7bd607
+  name: "desired_type"
+  type_id: 0x100964d4
+  offset: 416
+}
+member {
+  id: 0xc2d89a26
+  name: "desired_working_mode"
+  type_id: 0xc9082b19
+  offset: 352
+}
+member {
+  id: 0xe95d9481
+  name: "dest"
+  type_id: 0xcc87604a
+  offset: 192
+}
+member {
+  id: 0xe971598e
+  name: "dest"
+  type_id: 0xe04f9dc7
+  offset: 32
+}
+member {
+  id: 0xe9e49171
+  name: "dest"
+  type_id: 0x7584e7da
+  offset: 16
+}
+member {
+  id: 0xcd290515
+  name: "dest_addr_mode"
+  type_id: 0x914dbfdc
+  offset: 10
+  bitsize: 2
+}
+member {
+  id: 0xa4db947c
+  name: "destroy"
+  type_id: 0x2db75163
+  offset: 192
+}
+member {
+  id: 0xa4f86508
+  name: "destroy"
+  type_id: 0x0e4f7e58
+  offset: 384
+}
+member {
+  id: 0xa4f8859c
+  name: "destroy"
+  type_id: 0x0eac4549
+  offset: 704
+}
+member {
+  id: 0xa4f926c1
+  name: "destroy"
+  type_id: 0x0f04e7c1
+  offset: 128
+}
+member {
+  id: 0xa4f9453f
+  name: "destroy"
+  type_id: 0x0f6acd3e
+  offset: 7488
+}
+member {
+  id: 0xa4f94efd
+  name: "destroy"
+  type_id: 0x0f626ee5
+  offset: 448
+}
+member {
+  id: 0xa4f9b9c5
+  name: "destroy"
+  type_id: 0x0f93b3f4
+  offset: 384
+}
+member {
+  id: 0xa4fa7365
+  name: "destroy"
+  type_id: 0x0c5ef833
+  offset: 640
+}
+member {
+  id: 0xa4fa766b
+  name: "destroy"
+  type_id: 0x0c596e35
+  offset: 64
+}
+member {
+  id: 0xa4fad24e
+  name: "destroy"
+  type_id: 0x0cf0f1be
+  offset: 2944
+}
+member {
+  id: 0xa4fb36f9
+  name: "destroy"
+  type_id: 0x0d1ea752
+  offset: 832
+}
+member {
+  id: 0xa4fb57dd
+  name: "destroy"
+  type_id: 0x0d74f0df
+  offset: 192
+}
+member {
+  id: 0xa4fb8142
+  name: "destroy"
+  type_id: 0x0daaa697
+}
+member {
+  id: 0xa4fb8d8b
+  name: "destroy"
+  type_id: 0x0dad77a5
+  offset: 512
+}
+member {
+  id: 0xa4fb8fb9
+  name: "destroy"
+  type_id: 0x0da39a23
+  offset: 320
+}
+member {
+  id: 0xa4fba471
+  name: "destroy"
+  type_id: 0x0d8e07a0
+  offset: 384
+}
+member {
+  id: 0xa4fbb750
+  name: "destroy"
+  type_id: 0x0d947d59
+  offset: 192
+}
+member {
+  id: 0xa4fbcad2
+  name: "destroy"
+  type_id: 0x0de6f1fd
+  offset: 320
+}
+member {
+  id: 0x84f892e5
+  name: "destroy_cnt"
+  type_id: 0x92233392
+  offset: 12352
+}
+member {
+  id: 0xf417b3bb
+  name: "destroy_crtc_state"
+  type_id: 0x0e489060
+  offset: 704
+}
+member {
+  id: 0xa761d691
+  name: "destroy_dquot"
+  type_id: 0x0d561eb6
+  offset: 128
+}
+member {
+  id: 0x2f2fe86c
+  name: "destroy_ept"
+  type_id: 0x0d621812
+}
+member {
+  id: 0x21fbcf76
+  name: "destroy_ht_node"
+  type_id: 0x49a73111
+  offset: 704
+}
+member {
+  id: 0x2eb7b28b
+  name: "destroy_inode"
+  type_id: 0x0f0e74c9
+  offset: 64
+}
+member {
+  id: 0x89460966
+  name: "destroy_next"
+  type_id: 0x3bd2bf42
+}
+member {
+  id: 0x7151b503
+  name: "destroy_plane_state"
+  type_id: 0x0e5c6698
+  offset: 896
+}
+member {
+  id: 0x74edecc6
+  name: "destroy_rwork"
+  type_id: 0xd15fd98f
+  offset: 1216
+}
+member {
+  id: 0x83803681
+  name: "destroy_work"
+  type_id: 0x1f3c8679
+  offset: 832
+}
+member {
+  id: 0x83803b79
+  name: "destroy_work"
+  type_id: 0x1f3c8679
+  offset: 2112
+}
+member {
+  id: 0x83803bb9
+  name: "destroy_work"
+  type_id: 0x1f3c8679
+  offset: 10944
+}
+member {
+  id: 0xa8329ff7
+  name: "destroys"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x628e7255
+  name: "destruct"
+  type_id: 0x0fe089de
+  offset: 128
+}
+member {
+  id: 0x628e8c9d
+  name: "destruct"
+  type_id: 0x0f1728d9
+  offset: 256
+}
+member {
+  id: 0xa414c1a9
+  name: "destructor"
+  type_id: 0x0ee038bb
+  offset: 128
+}
+member {
+  id: 0xa414c5c8
+  name: "destructor"
+  type_id: 0x0ee55270
+  offset: 192
+}
+member {
+  id: 0xa414ce69
+  name: "destructor"
+  type_id: 0x0ee2db52
+  offset: 64
+}
+member {
+  id: 0xa4154a3d
+  name: "destructor"
+  type_id: 0x0f626ee5
+}
+member {
+  id: 0xa416e7ab
+  name: "destructor"
+  type_id: 0x0cce6a6a
+  offset: 384
+}
+member {
+  id: 0xa4170694
+  name: "destructor"
+  type_id: 0x0d27055d
+  offset: 128
+}
+member {
+  id: 0xa4b58e4f
+  name: "destructor"
+  type_id: 0xafafde12
+  offset: 128
+}
+member {
+  id: 0x8bd6cefc
+  name: "destructor_priv"
+  type_id: 0x18bd6530
+  offset: 192
+}
+member {
+  id: 0x2c982314
+  name: "dests"
+  type_id: 0x2f083be9
+  offset: 64
+}
+member {
+  id: 0x2cd7e484
+  name: "dests"
+  type_id: 0x60cc3da0
+  offset: 448
+}
+member {
+  id: 0x059dad50
+  name: "desync_factor"
+  type_id: 0xc9082b19
+  offset: 7136
+}
+member {
+  id: 0x0e0992c4
+  name: "detach"
+  type_id: 0x2c47b0fa
+  offset: 128
+}
+member {
+  id: 0x0e0ab710
+  name: "detach"
+  type_id: 0x2f6c6167
+  offset: 320
+}
+member {
+  id: 0x0e0adb4b
+  name: "detach"
+  type_id: 0x2f031c3f
+  offset: 64
+}
+member {
+  id: 0x0e2908f4
+  name: "detach"
+  type_id: 0x0cd0a3a7
+  offset: 64
+}
+member {
+  id: 0x0e293cd8
+  name: "detach"
+  type_id: 0x0ce1fce9
+  offset: 384
+}
+member {
+  id: 0x0e2ae52f
+  name: "detach"
+  type_id: 0x0f3d78fb
+  offset: 64
+}
+member {
+  id: 0x0e2b2bd3
+  name: "detach"
+  type_id: 0x0efedd0a
+  offset: 1600
+}
+member {
+  id: 0x0e2b7283
+  name: "detach"
+  type_id: 0x0ea7f74d
+  offset: 128
+}
+member {
+  id: 0x5eb183ec
+  name: "detach_completion"
+  type_id: 0x0562c566
+  offset: 5824
+}
+member {
+  id: 0xa3103fbf
+  name: "detach_dev"
+  type_id: 0x0c5d3f24
+  offset: 64
+}
+member {
+  id: 0xa312bc9c
+  name: "detach_dev"
+  type_id: 0x0edd74c9
+  offset: 11264
+}
+member {
+  id: 0xc045a990
+  name: "detach_dmabuf"
+  type_id: 0x0f3dfb90
+  offset: 512
+}
+member {
+  id: 0x00e54f1d
+  name: "detach_i2c_dev"
+  type_id: 0x0f36df47
+  offset: 640
+}
+member {
+  id: 0xa7152c15
+  name: "detach_i3c_dev"
+  type_id: 0x0e504c4f
+  offset: 256
+}
+member {
+  id: 0xa7e441b0
+  name: "detach_regulator"
+  type_id: 0x2f58e605
+  offset: 192
+}
+member {
+  id: 0x0c6f73e9
+  name: "detached"
+  type_id: 0x6d7f5ff6
+  offset: 448
+}
+member {
+  id: 0xe981c2b5
+  name: "detailed_timings"
+  type_id: 0x872e6f07
+  offset: 432
+}
+member {
+  id: 0x985bc266
+  name: "detect"
+  type_id: 0x0dd7b940
+  offset: 64
+}
+member {
+  id: 0x9862a44a
+  name: "detect"
+  type_id: 0x34bcb6d5
+  offset: 128
+}
+member {
+  id: 0x9863022c
+  name: "detect"
+  type_id: 0x351465bc
+  offset: 448
+}
+member {
+  id: 0x9863bfe7
+  name: "detect"
+  type_id: 0x35ac1d88
+  offset: 1216
+}
+member {
+  id: 0x9878e916
+  name: "detect"
+  type_id: 0x2ef9f6ce
+  offset: 1920
+}
+member {
+  id: 0x98a7089d
+  name: "detect"
+  type_id: 0xf1159c31
+  offset: 9664
+}
+member {
+  id: 0x9579f947
+  name: "detect_change"
+  type_id: 0x6720d32f
+  offset: 10752
+}
+member {
+  id: 0x442a89f1
+  name: "detect_ctx"
+  type_id: 0x2eee0119
+  offset: 64
+}
+member {
+  id: 0x9a203f42
+  name: "detected"
+  type_id: 0xd3c80119
+  offset: 7616
+}
+member {
+  id: 0x81c31d2a
+  name: "determine_rate"
+  type_id: 0x2d620fe2
+  offset: 768
+}
+member {
+  id: 0xce00a18a
+  name: "dev"
+  type_id: 0x394b6e9f
+  offset: 768
+}
+member {
+  id: 0xce00a924
+  name: "dev"
+  type_id: 0x394b6e9f
+}
+member {
+  id: 0xce02e215
+  name: "dev"
+  type_id: 0x3b04bead
+  offset: 64
+}
+member {
+  id: 0xce02e54e
+  name: "dev"
+  type_id: 0x3b04bead
+  offset: 832
+}
+member {
+  id: 0xce02e65f
+  name: "dev"
+  type_id: 0x3b04bead
+  offset: 256
+}
+member {
+  id: 0xce02e6f4
+  name: "dev"
+  type_id: 0x3b04bead
+}
+member {
+  id: 0xce02ee07
+  name: "dev"
+  type_id: 0x3b04bead
+  offset: 960
+}
+member {
+  id: 0xce02ee5a
+  name: "dev"
+  type_id: 0x3b04bead
+  offset: 768
+}
+member {
+  id: 0xce02ef36
+  name: "dev"
+  type_id: 0x3b04bead
+  offset: 128
+}
+member {
+  id: 0xce062759
+  name: "dev"
+  type_id: 0x3fc5b8b3
+  offset: 256
+}
+member {
+  id: 0xce0653f5
+  name: "dev"
+  type_id: 0x3fb55e9f
+  offset: 64
+}
+member {
+  id: 0xce082284
+  name: "dev"
+  type_id: 0x31c0ce8c
+}
+member {
+  id: 0xce0a7b8e
+  name: "dev"
+  type_id: 0x3399c453
+}
+member {
+  id: 0xce0a7f6f
+  name: "dev"
+  type_id: 0x3399c453
+  offset: 64
+}
+member {
+  id: 0xce0a8660
+  name: "dev"
+  type_id: 0x336e8c54
+  offset: 896
+}
+member {
+  id: 0xce0b4088
+  name: "dev"
+  type_id: 0x32a623d7
+  offset: 64
+}
+member {
+  id: 0xce0b4210
+  name: "dev"
+  type_id: 0x32a623d7
+  offset: 640
+}
+member {
+  id: 0xce0b4261
+  name: "dev"
+  type_id: 0x32a623d7
+  offset: 3008
+}
+member {
+  id: 0xce0b4376
+  name: "dev"
+  type_id: 0x32a623d7
+  offset: 1024
+}
+member {
+  id: 0xce0b4469
+  name: "dev"
+  type_id: 0x32a623d7
+}
+member {
+  id: 0xce0b44c2
+  name: "dev"
+  type_id: 0x32a623d7
+  offset: 256
+}
+member {
+  id: 0xce0b45fb
+  name: "dev"
+  type_id: 0x32a623d7
+  offset: 384
+}
+member {
+  id: 0xce0b469a
+  name: "dev"
+  type_id: 0x32a623d7
+  offset: 1408
+}
+member {
+  id: 0xce0b4ab5
+  name: "dev"
+  type_id: 0x32a623d7
+  offset: 1152
+}
+member {
+  id: 0xce0b4ca0
+  name: "dev"
+  type_id: 0x32a623d7
+  offset: 192
+}
+member {
+  id: 0xce0b4dab
+  name: "dev"
+  type_id: 0x32a623d7
+  offset: 128
+}
+member {
+  id: 0xce0b8482
+  name: "dev"
+  type_id: 0x326663cd
+  offset: 256
+}
+member {
+  id: 0xce0bc034
+  name: "dev"
+  type_id: 0x322509a0
+  offset: 448
+}
+member {
+  id: 0xce13618d
+  name: "dev"
+  type_id: 0x2a83c756
+}
+member {
+  id: 0xce1ac097
+  name: "dev"
+  type_id: 0x23230326
+  offset: 1920
+}
+member {
+  id: 0xce1ac0db
+  name: "dev"
+  type_id: 0x23230326
+  offset: 384
+}
+member {
+  id: 0xce1ac0eb
+  name: "dev"
+  type_id: 0x23230326
+  offset: 2560
+}
+member {
+  id: 0xce1ac149
+  name: "dev"
+  type_id: 0x23230326
+}
+member {
+  id: 0xce1ac1e2
+  name: "dev"
+  type_id: 0x23230326
+  offset: 256
+}
+member {
+  id: 0xce1ac1fe
+  name: "dev"
+  type_id: 0x23230326
+  offset: 50944
+}
+member {
+  id: 0xce1ac265
+  name: "dev"
+  type_id: 0x23230326
+  offset: 1664
+}
+member {
+  id: 0xce1ac3ba
+  name: "dev"
+  type_id: 0x23230326
+  offset: 1408
+}
+member {
+  id: 0xce1ac5a8
+  name: "dev"
+  type_id: 0x23230326
+  offset: 64
+}
+member {
+  id: 0xce1ac619
+  name: "dev"
+  type_id: 0x23230326
+  offset: 1472
+}
+member {
+  id: 0xce1ac63e
+  name: "dev"
+  type_id: 0x23230326
+  offset: 448
+}
+member {
+  id: 0xce1ac68e
+  name: "dev"
+  type_id: 0x23230326
+  offset: 320
+}
+member {
+  id: 0xce1ac741
+  name: "dev"
+  type_id: 0x23230326
+  offset: 8960
+}
+member {
+  id: 0xce1ac83c
+  name: "dev"
+  type_id: 0x23230326
+  offset: 2368
+}
+member {
+  id: 0xce1ac87a
+  name: "dev"
+  type_id: 0x23230326
+  offset: 3136
+}
+member {
+  id: 0xce1ac88b
+  name: "dev"
+  type_id: 0x23230326
+  offset: 128
+}
+member {
+  id: 0xce1ac891
+  name: "dev"
+  type_id: 0x23230326
+  offset: 6464
+}
+member {
+  id: 0xce1ac8ba
+  name: "dev"
+  type_id: 0x23230326
+  offset: 2240
+}
+member {
+  id: 0xce1ac980
+  name: "dev"
+  type_id: 0x23230326
+  offset: 192
+}
+member {
+  id: 0xce1ac9ba
+  name: "dev"
+  type_id: 0x23230326
+  offset: 960
+}
+member {
+  id: 0xce1aca3a
+  name: "dev"
+  type_id: 0x23230326
+  offset: 10496
+}
+member {
+  id: 0xce1aca51
+  name: "dev"
+  type_id: 0x23230326
+  offset: 512
+}
+member {
+  id: 0xce1aca54
+  name: "dev"
+  type_id: 0x23230326
+  offset: 1856
+}
+member {
+  id: 0xce1acb44
+  name: "dev"
+  type_id: 0x23230326
+  offset: 4608
+}
+member {
+  id: 0xce1acbca
+  name: "dev"
+  type_id: 0x23230326
+  offset: 1344
+}
+member {
+  id: 0xce1acbef
+  name: "dev"
+  type_id: 0x23230326
+  offset: 896
+}
+member {
+  id: 0xce1acc3f
+  name: "dev"
+  type_id: 0x23230326
+  offset: 1088
+}
+member {
+  id: 0xce1acc55
+  name: "dev"
+  type_id: 0x23230326
+  offset: 31680
+}
+member {
+  id: 0xce1acdd7
+  name: "dev"
+  type_id: 0x23230326
+  offset: 9600
+}
+member {
+  id: 0xce1acfc2
+  name: "dev"
+  type_id: 0x23230326
+  offset: 2880
+}
+member {
+  id: 0xce261ad4
+  name: "dev"
+  type_id: 0x1ff83538
+  offset: 256
+}
+member {
+  id: 0xce28030b
+  name: "dev"
+  type_id: 0x11e6864c
+  offset: 320
+}
+member {
+  id: 0xce29a84a
+  name: "dev"
+  type_id: 0x1042c9d1
+  offset: 192
+}
+member {
+  id: 0xce3495b5
+  name: "dev"
+  type_id: 0x0d7ce7cc
+  offset: 512
+}
+member {
+  id: 0xce349a4c
+  name: "dev"
+  type_id: 0x0d7ce7cc
+  offset: 64
+}
+member {
+  id: 0xce349ead
+  name: "dev"
+  type_id: 0x0d7ce7cc
+}
+member {
+  id: 0xce3785c0
+  name: "dev"
+  type_id: 0x0e6618c4
+  offset: 384
+}
+member {
+  id: 0xce3bb00c
+  name: "dev"
+  type_id: 0x0258f96e
+  offset: 5504
+}
+member {
+  id: 0xce3bb015
+  name: "dev"
+  type_id: 0x0258f96e
+  offset: 896
+}
+member {
+  id: 0xce3bb054
+  name: "dev"
+  type_id: 0x0258f96e
+  offset: 1536
+}
+member {
+  id: 0xce3bb1ab
+  name: "dev"
+  type_id: 0x0258f96e
+  offset: 512
+}
+member {
+  id: 0xce3bb27a
+  name: "dev"
+  type_id: 0x0258f96e
+  offset: 192
+}
+member {
+  id: 0xce3bb371
+  name: "dev"
+  type_id: 0x0258f96e
+  offset: 128
+}
+member {
+  id: 0xce3bb3c1
+  name: "dev"
+  type_id: 0x0258f96e
+  offset: 576
+}
+member {
+  id: 0xce3bb438
+  name: "dev"
+  type_id: 0x0258f96e
+  offset: 2880
+}
+member {
+  id: 0xce3bb837
+  name: "dev"
+  type_id: 0x0258f96e
+  offset: 1984
+}
+member {
+  id: 0xce3bb88e
+  name: "dev"
+  type_id: 0x0258f96e
+  offset: 704
+}
+member {
+  id: 0xce3bb900
+  name: "dev"
+  type_id: 0x0258f96e
+  offset: 12544
+}
+member {
+  id: 0xce3bb909
+  name: "dev"
+  type_id: 0x0258f96e
+  offset: 832
+}
+member {
+  id: 0xce3bb95e
+  name: "dev"
+  type_id: 0x0258f96e
+  offset: 9280
+}
+member {
+  id: 0xce3bba18
+  name: "dev"
+  type_id: 0x0258f96e
+  offset: 256
+}
+member {
+  id: 0xce3bbab3
+  name: "dev"
+  type_id: 0x0258f96e
+}
+member {
+  id: 0xce3bbb21
+  name: "dev"
+  type_id: 0x0258f96e
+  offset: 384
+}
+member {
+  id: 0xce3bbb6d
+  name: "dev"
+  type_id: 0x0258f96e
+  offset: 1920
+}
+member {
+  id: 0xce3bbcc0
+  name: "dev"
+  type_id: 0x0258f96e
+  offset: 1792
+}
+member {
+  id: 0xce3bbcca
+  name: "dev"
+  type_id: 0x0258f96e
+  offset: 640
+}
+member {
+  id: 0xce3bbd96
+  name: "dev"
+  type_id: 0x0258f96e
+  offset: 1728
+}
+member {
+  id: 0xce3bbdc4
+  name: "dev"
+  type_id: 0x0258f96e
+  offset: 448
+}
+member {
+  id: 0xce3bbe52
+  name: "dev"
+  type_id: 0x0258f96e
+  offset: 64
+}
+member {
+  id: 0xce3bbf8d
+  name: "dev"
+  type_id: 0x0258f96e
+  offset: 2688
+}
+member {
+  id: 0xce3c8adf
+  name: "dev"
+  type_id: 0x0561578b
+  offset: 128
+}
+member {
+  id: 0xce3fe2d9
+  name: "dev"
+  type_id: 0x060cf413
+  offset: 33216
+}
+member {
+  id: 0xced2ea38
+  name: "dev"
+  type_id: 0xeb0f6de6
+  offset: 1024
+}
+member {
+  id: 0xced2eae0
+  name: "dev"
+  type_id: 0xeb0f6de6
+  offset: 320
+}
+member {
+  id: 0xced2ecb5
+  name: "dev"
+  type_id: 0xeb0f6de6
+  offset: 384
+}
+member {
+  id: 0xcee162bb
+  name: "dev"
+  type_id: 0xd880f174
+}
+member {
+  id: 0xb4fb89c4
+  name: "dev_addr"
+  type_id: 0x384c5795
+  offset: 6144
+}
+member {
+  id: 0x6571c16a
+  name: "dev_addr_genid"
+  type_id: 0x74d29cf1
+  offset: 6400
+}
+member {
+  id: 0x6571c768
+  name: "dev_addr_genid"
+  type_id: 0x74d29cf1
+  offset: 4928
+}
+member {
+  id: 0xc746f55a
+  name: "dev_addr_shadow"
+  type_id: 0x5e9b9471
+  offset: 19968
+}
+member {
+  id: 0x78528128
+  name: "dev_addrs"
+  type_id: 0x4f5972f9
+  offset: 5312
+}
+member {
+  id: 0x6d7ba4a7
+  name: "dev_attr"
+  type_id: 0x11cf9350
+  offset: 704
+}
+member {
+  id: 0x81f55009
+  name: "dev_base_head"
+  type_id: 0xd3c80119
+  offset: 1152
+}
+member {
+  id: 0x17ed5e12
+  name: "dev_base_seq"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x72439acb
+  name: "dev_class"
+  type_id: 0xc93e017b
+  offset: 256
+}
+member {
+  id: 0x72b493a5
+  name: "dev_class"
+  type_id: 0x3e3c1b86
+  offset: 488
+}
+member {
+  id: 0x72b49762
+  name: "dev_class"
+  type_id: 0x3e3c1b86
+  offset: 4928
+}
+member {
+  id: 0xf0b1fc8e
+  name: "dev_cmd"
+  type_id: 0xd2481e52
+  offset: 19456
+}
+member {
+  id: 0x533062f2
+  name: "dev_cmd_queue"
+  type_id: 0x2d3b4fc6
+  offset: 41792
+}
+member {
+  id: 0xab3be6cc
+  name: "dev_context_ptrs"
+  type_id: 0x67d80db6
+}
+member {
+  id: 0x9b82dd6f
+  name: "dev_cor_errs"
+  type_id: 0x68bb0e75
+}
+member {
+  id: 0xa05ae8b2
+  name: "dev_count"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xa64bb146
+  name: "dev_debug"
+  type_id: 0x6720d32f
+  offset: 9792
+}
+member {
+  id: 0x0b7248bd
+  name: "dev_disable_feat"
+  type_id: 0x2d06e5cd
+  offset: 640
+}
+member {
+  id: 0x85c62e9f
+  name: "dev_down"
+  type_id: 0x2dbf7b0c
+  offset: 64
+}
+member {
+  id: 0xab76d4fd
+  name: "dev_enable_feat"
+  type_id: 0x2d06e5cd
+  offset: 576
+}
+member {
+  id: 0xfa6aabea
+  name: "dev_fatal_errs"
+  type_id: 0x1df89e56
+  offset: 1024
+}
+member {
+  id: 0x760001ae
+  name: "dev_flags"
+  type_id: 0xc9082b19
+  offset: 9344
+}
+member {
+  id: 0x76275ed5
+  name: "dev_flags"
+  type_id: 0xee5ea0c4
+  offset: 22128
+}
+member {
+  id: 0x76701448
+  name: "dev_flags"
+  type_id: 0xb914bfab
+  offset: 39040
+}
+member {
+  id: 0xf95461ff
+  name: "dev_groups"
+  type_id: 0x06433852
+  offset: 896
+}
+member {
+  id: 0xf9546390
+  name: "dev_groups"
+  type_id: 0x06433852
+  offset: 192
+}
+member {
+  id: 0xf9546bf2
+  name: "dev_groups"
+  type_id: 0x06433852
+  offset: 256
+}
+member {
+  id: 0xf9546d20
+  name: "dev_groups"
+  type_id: 0x06433852
+  offset: 640
+}
+member {
+  id: 0xf9d2bfb7
+  name: "dev_groups"
+  type_id: 0x809e12ef
+  offset: 19904
+}
+member {
+  id: 0xb883ae1d
+  name: "dev_hash"
+  type_id: 0x49a73111
+}
+member {
+  id: 0x8e0e1819
+  name: "dev_id"
+  type_id: 0x6720d32f
+  offset: 7360
+}
+member {
+  id: 0x8e0e1aeb
+  name: "dev_id"
+  type_id: 0x6720d32f
+  offset: 832
+}
+member {
+  id: 0x8e5720f5
+  name: "dev_id"
+  type_id: 0x3e10b518
+  offset: 128
+}
+member {
+  id: 0x8e718006
+  name: "dev_id"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0x8ea00f58
+  name: "dev_id"
+  type_id: 0xc93e017b
+  offset: 4688
+}
+member {
+  id: 0x0e855934
+  name: "dev_idx"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0x9a69033e
+  name: "dev_index_head"
+  type_id: 0x1d33485a
+  offset: 2432
+}
+member {
+  id: 0x1d86e345
+  name: "dev_info"
+  type_id: 0xc97fa0d5
+  offset: 20608
+}
+member {
+  id: 0x34b4b616
+  name: "dev_kobj"
+  type_id: 0x23f09c34
+  offset: 256
+}
+member {
+  id: 0x5f7af107
+  name: "dev_list"
+  type_id: 0xd3c80119
+  offset: 2816
+}
+member {
+  id: 0x5f7af2f3
+  name: "dev_list"
+  type_id: 0xd3c80119
+  offset: 9600
+}
+member {
+  id: 0x5f7af575
+  name: "dev_list"
+  type_id: 0xd3c80119
+  offset: 512
+}
+member {
+  id: 0x5f7afdd7
+  name: "dev_list"
+  type_id: 0xd3c80119
+  offset: 832
+}
+member {
+  id: 0x31c5367f
+  name: "dev_mapping"
+  type_id: 0x1582ab06
+  offset: 16960
+}
+member {
+  id: 0x8606d3a0
+  name: "dev_name"
+  type_id: 0x0483e6f8
+}
+member {
+  id: 0x863c40f3
+  name: "dev_name"
+  type_id: 0x3e10b518
+}
+member {
+  id: 0x863c4277
+  name: "dev_name"
+  type_id: 0x3e10b518
+  offset: 1984
+}
+member {
+  id: 0x863c4412
+  name: "dev_name"
+  type_id: 0x3e10b518
+  offset: 64
+}
+member {
+  id: 0x863c483a
+  name: "dev_name"
+  type_id: 0x3e10b518
+  offset: 192
+}
+member {
+  id: 0x863c4931
+  name: "dev_name"
+  type_id: 0x3e10b518
+  offset: 128
+}
+member {
+  id: 0x863d7f7b
+  name: "dev_name"
+  type_id: 0x3f2589d8
+  offset: 920
+}
+member {
+  id: 0x863fe5e6
+  name: "dev_name"
+  type_id: 0x3db8d8c8
+  offset: 9344
+}
+member {
+  id: 0x4ae5eb53
+  name: "dev_name_head"
+  type_id: 0x1d33485a
+  offset: 2368
+}
+member {
+  id: 0xd52260b6
+  name: "dev_nonfatal_errs"
+  type_id: 0x1df89e56
+  offset: 2752
+}
+member {
+  id: 0x2d324066
+  name: "dev_notification"
+  type_id: 0x0baa70a7
+  offset: 160
+}
+member {
+  id: 0x10607605
+  name: "dev_nt"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0xc33b73ee
+  name: "dev_ops"
+  type_id: 0x34ae24a9
+  offset: 2624
+}
+member {
+  id: 0xc3d6dca3
+  name: "dev_ops"
+  type_id: 0xd90f114b
+  offset: 11072
+}
+member {
+  id: 0xb0a96c90
+  name: "dev_parent"
+  type_id: 0x0258f96e
+  offset: 8896
+}
+member {
+  id: 0x7a05079e
+  name: "dev_policy"
+  type_id: 0x74fea38b
+  offset: 3328
+}
+member {
+  id: 0xf5680d3e
+  name: "dev_port"
+  type_id: 0xc93e017b
+  offset: 4704
+}
+member {
+  id: 0xe08fe547
+  name: "dev_priv"
+  type_id: 0x18bd6530
+  offset: 1792
+}
+member {
+  id: 0xe08fe60a
+  name: "dev_priv"
+  type_id: 0x18bd6530
+  offset: 2688
+}
+member {
+  id: 0xe08febfd
+  name: "dev_priv"
+  type_id: 0x18bd6530
+  offset: 192
+}
+member {
+  id: 0xe9ca3d1b
+  name: "dev_private"
+  type_id: 0x18bd6530
+  offset: 448
+}
+member {
+  id: 0x5202498e
+  name: "dev_queue"
+  type_id: 0x1a7122b5
+  offset: 512
+}
+member {
+  id: 0xf64f7078
+  name: "dev_quirks"
+  type_id: 0x4585663f
+  offset: 1696
+}
+member {
+  id: 0x11a479d5
+  name: "dev_rdesc"
+  type_id: 0x2669d715
+}
+member {
+  id: 0x2d4e5988
+  name: "dev_ref_clk_freq"
+  type_id: 0x8fb3ffe2
+  offset: 1600
+}
+member {
+  id: 0x67526130
+  name: "dev_registered_tracker"
+  type_id: 0xc76fa419
+  offset: 20224
+}
+member {
+  id: 0xbf524a4a
+  name: "dev_release"
+  type_id: 0x0e93a255
+  offset: 512
+}
+member {
+  id: 0xdc65c001
+  name: "dev_released"
+  type_id: 0x3fcbf304
+  offset: 8704
+}
+member {
+  id: 0xa17af2d0
+  name: "dev_root"
+  type_id: 0x0258f96e
+  offset: 128
+}
+member {
+  id: 0x0939a4ee
+  name: "dev_rsize"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x1e2476c5
+  name: "dev_rx"
+  type_id: 0x32a623d7
+  offset: 192
+}
+member {
+  id: 0x1e247cc8
+  name: "dev_rx"
+  type_id: 0x32a623d7
+  offset: 1216
+}
+member {
+  id: 0x42262ad9
+  name: "dev_scratch"
+  type_id: 0x33756485
+}
+member {
+  id: 0x6bc4755d
+  name: "dev_state"
+  type_id: 0x6d7f5ff6
+  offset: 384
+}
+member {
+  id: 0x84448bf3
+  name: "dev_stats"
+  type_id: 0x2650a028
+}
+member {
+  id: 0xc6e019f2
+  name: "dev_subclass"
+  type_id: 0xc93e017b
+  offset: 272
+}
+member {
+  id: 0xa6f7aa36
+  name: "dev_total_cor_errs"
+  type_id: 0x92233392
+  offset: 4480
+}
+member {
+  id: 0xf6dbf9c8
+  name: "dev_total_fatal_errs"
+  type_id: 0x92233392
+  offset: 4544
+}
+member {
+  id: 0xcdeb1e6a
+  name: "dev_total_nonfatal_errs"
+  type_id: 0x92233392
+  offset: 4608
+}
+member {
+  id: 0x94d4206b
+  name: "dev_tracker"
+  type_id: 0xc76fa419
+  offset: 3072
+}
+member {
+  id: 0x94d4255c
+  name: "dev_tracker"
+  type_id: 0xc76fa419
+  offset: 896
+}
+member {
+  id: 0x94d42638
+  name: "dev_tracker"
+  type_id: 0xc76fa419
+  offset: 128
+}
+member {
+  id: 0x94d42733
+  name: "dev_tracker"
+  type_id: 0xc76fa419
+  offset: 192
+}
+member {
+  id: 0x94d428aa
+  name: "dev_tracker"
+  type_id: 0xc76fa419
+  offset: 1472
+}
+member {
+  id: 0x94d42b1b
+  name: "dev_tracker"
+  type_id: 0xc76fa419
+  offset: 64
+}
+member {
+  id: 0x94d42cc7
+  name: "dev_tracker"
+  type_id: 0xc76fa419
+  offset: 2752
+}
+member {
+  id: 0x79d4a214
+  name: "dev_type"
+  type_id: 0xb3e7bac9
+  offset: 664
+}
+member {
+  id: 0x4edf8b8d
+  name: "dev_uevent"
+  type_id: 0x2de090d3
+  offset: 320
+}
+member {
+  id: 0x90b1b2dc
+  name: "dev_unreg_count"
+  type_id: 0x74d29cf1
+  offset: 64
+}
+member {
+  id: 0x842a8ee9
+  name: "dev_up"
+  type_id: 0x2dbf7b0c
+}
+member {
+  id: 0x846a4adb
+  name: "dev_up"
+  type_id: 0x6d7f5ff6
+  offset: 7488
+}
+member {
+  id: 0x3a503292
+  name: "devaddr"
+  type_id: 0x295c7202
+  offset: 11168
+}
+member {
+  id: 0xfb4ccc76
+  name: "devarch"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x7889e2af
+  name: "devarch_mask"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x4a446333
+  name: "devcap"
+  type_id: 0xc9082b19
+  offset: 832
+}
+member {
+  id: 0xad53442b
+  name: "devconf_all"
+  type_id: 0x2918bc1b
+  offset: 1344
+}
+member {
+  id: 0xad697802
+  name: "devconf_all"
+  type_id: 0x13218759
+  offset: 3072
+}
+member {
+  id: 0x504e58aa
+  name: "devconf_dflt"
+  type_id: 0x13218759
+  offset: 3136
+}
+member {
+  id: 0x50746a51
+  name: "devconf_dflt"
+  type_id: 0x2918bc1b
+  offset: 1408
+}
+member {
+  id: 0xaf9a22a2
+  name: "devdata"
+  type_id: 0x18bd6530
+  offset: 8064
+}
+member {
+  id: 0xaf9a2d47
+  name: "devdata"
+  type_id: 0x18bd6530
+  offset: 7552
+}
+member {
+  id: 0x23225d98
+  name: "devfn"
+  type_id: 0x4585663f
+  offset: 448
+}
+member {
+  id: 0x7b6d6b82
+  name: "devfreq"
+  type_id: 0x276a1779
+  offset: 24512
+}
+member {
+  id: 0xd5ef67a8
+  name: "devfreq_profile"
+  type_id: 0x5adf14d3
+}
+member {
+  id: 0xb2c3ab53
+  name: "devhash"
+  type_id: 0x1d33485a
+  offset: 64
+}
+member {
+  id: 0xea03e6d7
+  name: "device"
+  type_id: 0x31c0ce8c
+  offset: 1152
+}
+member {
+  id: 0xea11030f
+  name: "device"
+  type_id: 0x23230326
+  offset: 192
+}
+member {
+  id: 0xea110f27
+  name: "device"
+  type_id: 0x23230326
+  offset: 64
+}
+member {
+  id: 0xea1367b8
+  name: "device"
+  type_id: 0x214fd672
+  offset: 256
+}
+member {
+  id: 0xea1755d7
+  name: "device"
+  type_id: 0x257d12af
+}
+member {
+  id: 0xea1a69a5
+  name: "device"
+  type_id: 0x2849a9bf
+  offset: 192
+}
+member {
+  id: 0xea1def0c
+  name: "device"
+  type_id: 0x2fc7c937
+}
+member {
+  id: 0xea23ecc1
+  name: "device"
+  type_id: 0x11c404ba
+}
+member {
+  id: 0xea2f40e7
+  name: "device"
+  type_id: 0x1d61e0cf
+  offset: 128
+}
+member {
+  id: 0xea3074eb
+  name: "device"
+  type_id: 0x0258f96e
+  offset: 5440
+}
+member {
+  id: 0xea3077fb
+  name: "device"
+  type_id: 0x0258f96e
+  offset: 320
+}
+member {
+  id: 0xea307984
+  name: "device"
+  type_id: 0x0258f96e
+  offset: 1600
+}
+member {
+  id: 0xea3fca7a
+  name: "device"
+  type_id: 0x0de4c6b1
+  offset: 17024
+}
+member {
+  id: 0xea5500df
+  name: "device"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0xea5504f9
+  name: "device"
+  type_id: 0x6720d32f
+  offset: 8000
+}
+member {
+  id: 0xea77a098
+  name: "device"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xea77a942
+  name: "device"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xead4067a
+  name: "device"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xead40b41
+  name: "device"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xeada26be
+  name: "device"
+  type_id: 0xe8034002
+  offset: 32
+}
+member {
+  id: 0xeafb12d2
+  name: "device"
+  type_id: 0xc93e017b
+  offset: 7488
+}
+member {
+  id: 0xeafb1344
+  name: "device"
+  type_id: 0xc93e017b
+  offset: 496
+}
+member {
+  id: 0xeafb187a
+  name: "device"
+  type_id: 0xc93e017b
+  offset: 16
+}
+member {
+  id: 0x8efeffd6
+  name: "device_alloc_chan_resources"
+  type_id: 0x2e558249
+  offset: 1408
+}
+member {
+  id: 0xe2fb6df4
+  name: "device_attrs"
+  type_id: 0x626cbe56
+  offset: 1664
+}
+member {
+  id: 0x8fb27242
+  name: "device_base"
+  type_id: 0xe02e14d6
+  offset: 64
+}
+member {
+  id: 0xe9d2e48d
+  name: "device_blocked"
+  type_id: 0x74d29cf1
+  offset: 640
+}
+member {
+  id: 0xed43e412
+  name: "device_caps"
+  type_id: 0x0d14b345
+  offset: 2368
+}
+member {
+  id: 0xed87f30c
+  name: "device_caps"
+  type_id: 0xc9082b19
+  offset: 1408
+}
+member {
+  id: 0xeda8d556
+  name: "device_caps"
+  type_id: 0xe62ebf07
+  offset: 704
+}
+member {
+  id: 0xf496a56c
+  name: "device_config"
+  type_id: 0x2e48a65f
+  offset: 2432
+}
+member {
+  id: 0x36893246
+  name: "device_count"
+  type_id: 0x4585663f
+  offset: 10496
+}
+member {
+  id: 0xccdc16ef
+  name: "device_dma_supported"
+  type_id: 0x36d86941
+  offset: 256
+}
+member {
+  id: 0x5b95c675
+  name: "device_fc"
+  type_id: 0x6d7f5ff6
+  offset: 384
+}
+member {
+  id: 0x17ccf7c2
+  name: "device_free"
+  type_id: 0x0fa1cf5a
+  offset: 7680
+}
+member {
+  id: 0xefc959d6
+  name: "device_free_chan_resources"
+  type_id: 0x0d13aee6
+  offset: 1536
+}
+member {
+  id: 0x110d7733
+  name: "device_get_dma_attr"
+  type_id: 0x0ccb9b16
+  offset: 320
+}
+member {
+  id: 0x17783559
+  name: "device_get_match_data"
+  type_id: 0x1ca50753
+  offset: 192
+}
+member {
+  id: 0x03c8dac7
+  name: "device_group"
+  type_id: 0x15182a18
+  offset: 320
+}
+member {
+  id: 0x45ad335c
+  name: "device_ids"
+  type_id: 0x668e8237
+  offset: 64
+}
+member {
+  id: 0x4f2a634f
+  name: "device_init"
+  type_id: 0x2f4eca66
+}
+member {
+  id: 0xf5b742db
+  name: "device_irq_level"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x4432480f
+  name: "device_is_available"
+  type_id: 0x36d86941
+  offset: 128
+}
+member {
+  id: 0x8973821d
+  name: "device_issue_pending"
+  type_id: 0x0d13aee6
+  offset: 2816
+}
+member {
+  id: 0x9eb98b20
+  name: "device_life_time_est_typ_a"
+  type_id: 0x295c7202
+  offset: 1288
+}
+member {
+  id: 0xdcf92ce0
+  name: "device_life_time_est_typ_b"
+  type_id: 0x295c7202
+  offset: 1296
+}
+member {
+  id: 0xaa4339de
+  name: "device_link"
+  type_id: 0x4585663f
+  offset: 194
+  bitsize: 1
+}
+member {
+  id: 0x5adf7097
+  name: "device_list"
+  type_id: 0xd3c80119
+  offset: 1600
+}
+member {
+  id: 0x5adf788d
+  name: "device_list"
+  type_id: 0xd3c80119
+  offset: 2560
+}
+member {
+  id: 0x5adf792f
+  name: "device_list"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0x5adf7dce
+  name: "device_list"
+  type_id: 0xd3c80119
+  offset: 64
+}
+member {
+  id: 0x5adf7f8c
+  name: "device_list"
+  type_id: 0xd3c80119
+  offset: 6272
+}
+member {
+  id: 0x3afe32c8
+  name: "device_name"
+  type_id: 0x3e10b518
+  offset: 7680
+}
+member {
+  id: 0xed7615b7
+  name: "device_node"
+  type_id: 0xd3c80119
+  offset: 448
+}
+member {
+  id: 0x7591e5a4
+  name: "device_pause"
+  type_id: 0x2e558249
+  offset: 2496
+}
+member {
+  id: 0x8cde7287
+  name: "device_pool"
+  type_id: 0x2d66740a
+  offset: 20160
+}
+member {
+  id: 0x2d93d965
+  name: "device_prep_dma_cyclic"
+  type_id: 0x33c666d4
+  offset: 2176
+}
+member {
+  id: 0x3ade8125
+  name: "device_prep_dma_imm_data"
+  type_id: 0x33c0cfd5
+  offset: 2304
+}
+member {
+  id: 0xef261a94
+  name: "device_prep_dma_interrupt"
+  type_id: 0x331a85e3
+  offset: 2048
+}
+member {
+  id: 0xe0e2042e
+  name: "device_prep_dma_memcpy"
+  type_id: 0x33c72b70
+  offset: 1600
+}
+member {
+  id: 0x4553af8c
+  name: "device_prep_dma_memset"
+  type_id: 0x33cf5b9c
+  offset: 1920
+}
+member {
+  id: 0xd812ad61
+  name: "device_prep_dma_memset_sg"
+  type_id: 0x333c033c
+  offset: 1984
+}
+member {
+  id: 0xe62b1658
+  name: "device_prep_dma_pq"
+  type_id: 0x33180476
+  offset: 1792
+}
+member {
+  id: 0x07b7787f
+  name: "device_prep_dma_pq_val"
+  type_id: 0x33180474
+  offset: 1856
+}
+member {
+  id: 0x55adb60e
+  name: "device_prep_dma_xor"
+  type_id: 0x33cabddd
+  offset: 1664
+}
+member {
+  id: 0xfe49f455
+  name: "device_prep_dma_xor_val"
+  type_id: 0x331fc64d
+  offset: 1728
+}
+member {
+  id: 0x0f27fe9a
+  name: "device_prep_interleaved_dma"
+  type_id: 0x332cb633
+  offset: 2240
+}
+member {
+  id: 0x3bdeb1a8
+  name: "device_prep_slave_sg"
+  type_id: 0x333c957a
+  offset: 2112
+}
+member {
+  id: 0xd71c91d0
+  name: "device_private_offset"
+  type_id: 0x6720d32f
+  offset: 2592
+}
+member {
+  id: 0x58ac3243
+  name: "device_release"
+  type_id: 0x0c4a5150
+  offset: 2880
+}
+member {
+  id: 0x58ac7a9e
+  name: "device_release"
+  type_id: 0x0c08e6c9
+  offset: 64
+}
+member {
+  id: 0x31f01d64
+  name: "device_remove"
+  type_id: 0x0fa1cf5a
+  offset: 7744
+}
+member {
+  id: 0x5f551195
+  name: "device_reset"
+  type_id: 0x2d883003
+  offset: 1152
+}
+member {
+  id: 0x13ceda9a
+  name: "device_resume"
+  type_id: 0x2e558249
+  offset: 2560
+}
+member {
+  id: 0xdad98644
+  name: "device_root"
+  type_id: 0x120540d1
+  offset: 1600
+}
+member {
+  id: 0x38e78b66
+  name: "device_router_config"
+  type_id: 0x2e558249
+  offset: 1472
+}
+member {
+  id: 0x8cabe080
+  name: "device_run"
+  type_id: 0x0f3dfb90
+}
+member {
+  id: 0x87bb0e2b
+  name: "device_size"
+  type_id: 0x6720d32f
+  offset: 2560
+}
+member {
+  id: 0x20e30432
+  name: "device_status"
+  type_id: 0xe62ebf07
+  offset: 928
+}
+member {
+  id: 0x05cc8744
+  name: "device_synchronize"
+  type_id: 0x0d13aee6
+  offset: 2688
+}
+member {
+  id: 0x1b3a472a
+  name: "device_terminate_all"
+  type_id: 0x2e558249
+  offset: 2624
+}
+member {
+  id: 0x8f624aec
+  name: "device_tx_status"
+  type_id: 0x376d0d4f
+  offset: 2752
+}
+member {
+  id: 0xae47d4ca
+  name: "deviceid"
+  type_id: 0x914dbfdc
+  offset: 16
+}
+member {
+  id: 0x0eb05570
+  name: "devicemap"
+  type_id: 0x607419c2
+}
+member {
+  id: 0xb718c564
+  name: "devicename"
+  type_id: 0x3e10b518
+  offset: 128
+}
+member {
+  id: 0x33ed5039
+  name: "devices"
+  type_id: 0xd3c80119
+  offset: 64
+}
+member {
+  id: 0x33ed52b5
+  name: "devices"
+  type_id: 0xd3c80119
+  offset: 26240
+}
+member {
+  id: 0x33ed531f
+  name: "devices"
+  type_id: 0xd3c80119
+  offset: 320
+}
+member {
+  id: 0x33ed5398
+  name: "devices"
+  type_id: 0xd3c80119
+  offset: 3328
+}
+member {
+  id: 0x33ed5762
+  name: "devices"
+  type_id: 0xd3c80119
+  offset: 832
+}
+member {
+  id: 0x33ed5c11
+  name: "devices"
+  type_id: 0xd3c80119
+  offset: 192
+}
+member {
+  id: 0x7c9dc892
+  name: "devices_in_package"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xeb0d43ae
+  name: "devices_kobj"
+  type_id: 0x23f09c34
+  offset: 768
+}
+member {
+  id: 0xcb5febda
+  name: "devices_kset"
+  type_id: 0x1457cd38
+  offset: 1280
+}
+member {
+  id: 0x3363027c
+  name: "devid"
+  type_id: 0x6720d32f
+  offset: 512
+}
+member {
+  id: 0x33ef2acb
+  name: "devid"
+  type_id: 0xeb0f6de6
+  offset: 9728
+}
+member {
+  id: 0xad2eefd3
+  name: "devid_product"
+  type_id: 0xe8034002
+  offset: 6800
+}
+member {
+  id: 0xcc74db49
+  name: "devid_source"
+  type_id: 0xe8034002
+  offset: 6768
+}
+member {
+  id: 0x8f4bcfaa
+  name: "devid_vendor"
+  type_id: 0xe8034002
+  offset: 6784
+}
+member {
+  id: 0x811b1d72
+  name: "devid_version"
+  type_id: 0xe8034002
+  offset: 6816
+}
+member {
+  id: 0x5685a7bf
+  name: "devlink"
+  type_id: 0x25b57283
+  offset: 256
+}
+member {
+  id: 0x5685afdd
+  name: "devlink"
+  type_id: 0x25b57283
+  offset: 192
+}
+member {
+  id: 0xeb76e344
+  name: "devlink_port"
+  type_id: 0x3b68ec61
+}
+member {
+  id: 0xf45f2394
+  name: "devlink_rate"
+  type_id: 0x0f4dcd61
+  offset: 2624
+}
+member {
+  id: 0x68ca31a9
+  name: "devm_allocated"
+  type_id: 0x6d7f5ff6
+  offset: 7664
+}
+member {
+  id: 0x314dcd25
+  name: "devm_event_notifier_register"
+  type_id: 0x2c0c3210
+}
+member {
+  id: 0x1fa57148
+  name: "devm_event_notifier_unregister"
+  type_id: 0x2c0c3210
+  offset: 64
+}
+member {
+  id: 0x9d8e8b56
+  name: "devm_protocol_acquire"
+  type_id: 0x2c0e9768
+  offset: 128
+}
+member {
+  id: 0x438cdaee
+  name: "devm_protocol_get"
+  type_id: 0x1e85ebec
+  offset: 192
+}
+member {
+  id: 0x96f98d6d
+  name: "devm_protocol_put"
+  type_id: 0x0f48bbc7
+  offset: 256
+}
+member {
+  id: 0x57939da4
+  name: "devmap"
+  type_id: 0x9111b86d
+  offset: 768
+}
+member {
+  id: 0x8a8d8547
+  name: "devname"
+  type_id: 0x3e10b518
+}
+member {
+  id: 0xad5cb64a
+  name: "devname_mandatory"
+  type_id: 0x6d7f5ff6
+  offset: 192
+}
+member {
+  id: 0x1e9a3896
+  name: "devnode"
+  type_id: 0x3a667404
+  offset: 64
+}
+member {
+  id: 0x1ea1bb6d
+  name: "devnode"
+  type_id: 0x01e0b0cf
+  offset: 1920
+}
+member {
+  id: 0x1ea565d3
+  name: "devnode"
+  type_id: 0x0537192f
+  offset: 192
+}
+member {
+  id: 0x1ea56fa3
+  name: "devnode"
+  type_id: 0x053432a7
+  offset: 384
+}
+member {
+  id: 0x1ea7520b
+  name: "devnode"
+  type_id: 0x0702ae23
+  offset: 896
+}
+member {
+  id: 0x1efe8efb
+  name: "devnode"
+  type_id: 0x5ed33f2f
+  offset: 320
+}
+member {
+  id: 0x575bee81
+  name: "devnum"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x8b6ecdd4
+  name: "devnum_next"
+  type_id: 0x6720d32f
+  offset: 320
+}
+member {
+  id: 0x83a6f74b
+  name: "devnum_next_mutex"
+  type_id: 0xa7c362b0
+  offset: 384
+}
+member {
+  id: 0x18249e35
+  name: "devpath"
+  type_id: 0x42201dce
+  offset: 32
+}
+member {
+  id: 0xd049376f
+  name: "devres_group_id"
+  type_id: 0x18bd6530
+  offset: 7744
+}
+member {
+  id: 0x08267623
+  name: "devres_head"
+  type_id: 0xd3c80119
+  offset: 6208
+}
+member {
+  id: 0xda0f5b02
+  name: "devres_lock"
+  type_id: 0xf313e71a
+  offset: 6144
+}
+member {
+  id: 0xb523f202
+  name: "devres_managed"
+  type_id: 0x6d7f5ff6
+  offset: 12288
+}
+member {
+  id: 0xb7376579
+  name: "devs"
+  type_id: 0x219459f2
+  offset: 576
+}
+member {
+  id: 0xb7661625
+  name: "devs"
+  type_id: 0x70eedbce
+  offset: 3712
+}
+member {
+  id: 0x70a0348a
+  name: "devt"
+  type_id: 0xeb0f6de6
+  offset: 6080
+}
+member {
+  id: 0xa1ebf76b
+  name: "devtype"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xca2af15b
+  name: "dfd"
+  type_id: 0x6720d32f
+  offset: 1760
+}
+member {
+  id: 0x882d2165
+  name: "dfl_cftypes"
+  type_id: 0x1ba902d8
+  offset: 1728
+}
+member {
+  id: 0x882d22a1
+  name: "dfl_cftypes"
+  type_id: 0x1ba902d8
+  offset: 64
+}
+member {
+  id: 0xb2edf79f
+  name: "dfl_cgrp"
+  type_id: 0x18a16691
+  offset: 576
+}
+member {
+  id: 0x95a3d8b7
+  name: "dfl_pwq"
+  type_id: 0x2033e582
+  offset: 1408
+}
+member {
+  id: 0x5898f7bd
+  name: "dfltlevel"
+  type_id: 0xf681317f
+  offset: 576
+}
+member {
+  id: 0x07451d80
+  name: "dfs_bitmap"
+  type_id: 0x3062c88a
+  offset: 384
+}
+member {
+  id: 0xc328acd3
+  name: "dfs_cac_ms"
+  type_id: 0x4585663f
+  offset: 448
+}
+member {
+  id: 0xc3a424d4
+  name: "dfs_cac_ms"
+  type_id: 0xc9082b19
+  offset: 704
+}
+member {
+  id: 0x816311fa
+  name: "dfs_region"
+  type_id: 0xa867645b
+  offset: 256
+}
+member {
+  id: 0x81631998
+  name: "dfs_region"
+  type_id: 0xa867645b
+  offset: 192
+}
+member {
+  id: 0x2ff7682c
+  name: "dfs_state"
+  type_id: 0x79e73f79
+  offset: 352
+}
+member {
+  id: 0xe5f1eaa0
+  name: "dfs_state_entered"
+  type_id: 0x33756485
+  offset: 384
+}
+member {
+  id: 0x2476941e
+  name: "dgram_allow"
+  type_id: 0x3960a5fc
+  offset: 576
+}
+member {
+  id: 0xe13c5d33
+  name: "dgram_bind"
+  type_id: 0x2ca92d96
+  offset: 384
+}
+member {
+  id: 0x9dff0348
+  name: "dgram_dequeue"
+  type_id: 0x2c855ab0
+  offset: 448
+}
+member {
+  id: 0x8ef03263
+  name: "dgram_enqueue"
+  type_id: 0x2cab1418
+  offset: 512
+}
+member {
+  id: 0xd75c46c1
+  name: "diag_destroy"
+  type_id: 0x2c436299
+  offset: 3520
+}
+member {
+  id: 0x5089c972
+  name: "diag_nlsk"
+  type_id: 0x1d44326e
+  offset: 32704
+}
+member {
+  id: 0xbd827e06
+  name: "diagmon"
+  type_id: 0x295c7202
+  offset: 224
+}
+member {
+  id: 0xc3552be5
+  name: "dialed_frequency"
+  type_id: 0xfc0e1dbd
+  offset: 9856
+}
+member {
+  id: 0x74ab0220
+  name: "die_revision"
+  type_id: 0x295c7202
+  offset: 32
+}
+member {
+  id: 0x4e3ae6ab
+  name: "died_poll_count"
+  type_id: 0x6720d32f
+  offset: 1472
+}
+member {
+  id: 0xfc7e0dba
+  name: "died_work"
+  type_id: 0x1f3c8679
+  offset: 2688
+}
+member {
+  id: 0x990d3fd2
+  name: "diff_cu_qp_delta_depth"
+  type_id: 0xb3e7bac9
+  offset: 40
+}
+member {
+  id: 0x304d338c
+  name: "differential"
+  type_id: 0x4585663f
+  offset: 1155
+  bitsize: 1
+}
+member {
+  id: 0x9a1f65df
+  name: "differential_clk_rate"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x092bc083
+  name: "dig_subframe"
+  type_id: 0x9b2d4673
+  offset: 1376
+}
+member {
+  id: 0x5f810d60
+  name: "digest"
+  type_id: 0x2ed55948
+  offset: 256
+}
+member {
+  id: 0x5f82a477
+  name: "digest"
+  type_id: 0x2d7c4ebb
+  offset: 256
+}
+member {
+  id: 0x5faf1f1c
+  name: "digest"
+  type_id: 0x00c72527
+  offset: 256
+}
+member {
+  id: 0x191c0c1c
+  name: "digest_size"
+  type_id: 0xc9082b19
+  offset: 352
+}
+member {
+  id: 0x19908cca
+  name: "digest_size"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x9f7a3aba
+  name: "digestsize"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x9f7a3da5
+  name: "digestsize"
+  type_id: 0x4585663f
+  offset: 1024
+}
+member {
+  id: 0xbbd7bc53
+  name: "digital_filter_width_ns"
+  type_id: 0xc9082b19
+  offset: 192
+}
+member {
+  id: 0xcc56f1ed
+  name: "dimm_family_mask"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0xeed2b692
+  name: "dimm_id"
+  type_id: 0x3e10b518
+  offset: 7680
+}
+member {
+  id: 0x55357f1a
+  name: "dims"
+  type_id: 0xb5c6bcdb
+  offset: 704
+}
+member {
+  id: 0x553eb2fb
+  name: "dims"
+  type_id: 0xbe0f19dc
+  offset: 640
+}
+member {
+  id: 0x553ebda3
+  name: "dims"
+  type_id: 0xbe0f19dc
+  offset: 1056
+}
+member {
+  id: 0x75eaad94
+  name: "din_iovec_count"
+  type_id: 0xe62ebf07
+  offset: 512
+}
+member {
+  id: 0x3fc8f113
+  name: "din_resid"
+  type_id: 0x0faae5b1
+  offset: 1088
+}
+member {
+  id: 0xaa5532aa
+  name: "din_xfer_len"
+  type_id: 0xe62ebf07
+  offset: 544
+}
+member {
+  id: 0x61391f09
+  name: "din_xferp"
+  type_id: 0xedf277ba
+  offset: 640
+}
+member {
+  id: 0x24821b6b
+  name: "dio_mem_align"
+  type_id: 0xc9082b19
+  offset: 1152
+}
+member {
+  id: 0x84f0fa66
+  name: "dio_offset_align"
+  type_id: 0xc9082b19
+  offset: 1184
+}
+member {
+  id: 0x044fbc2f
+  name: "dir"
+  type_id: 0x295c7202
+  offset: 192
+  bitsize: 2
+}
+member {
+  id: 0x2e075f03
+  name: "dir"
+  type_id: 0xf17ebd32
+  offset: 128
+}
+member {
+  id: 0x2e17083a
+  name: "dir"
+  type_id: 0xe12d7da8
+  offset: 32
+}
+member {
+  id: 0x2e1d39f7
+  name: "dir"
+  type_id: 0xeb118b6a
+}
+member {
+  id: 0x2e3ba1a4
+  name: "dir"
+  type_id: 0xcd84e3cd
+  offset: 32
+}
+member {
+  id: 0x2e3bab58
+  name: "dir"
+  type_id: 0xcd84e3cd
+  offset: 320
+}
+member {
+  id: 0x2e561a88
+  name: "dir"
+  type_id: 0xa031d804
+  offset: 1664
+}
+member {
+  id: 0x2e9bdae0
+  name: "dir"
+  type_id: 0x6df67d28
+  offset: 64
+}
+member {
+  id: 0x2ed5d8e0
+  name: "dir"
+  type_id: 0x23f09c34
+}
+member {
+  id: 0x2ee42a6c
+  name: "dir"
+  type_id: 0x120540d1
+  offset: 1472
+}
+member {
+  id: 0x2ee42d97
+  name: "dir"
+  type_id: 0x120540d1
+  offset: 256
+}
+member {
+  id: 0x2eee666c
+  name: "dir"
+  type_id: 0x184052fc
+  offset: 2112
+}
+member {
+  id: 0x2eee6a13
+  name: "dir"
+  type_id: 0x184052fc
+  offset: 704
+}
+member {
+  id: 0x2ef7e77d
+  name: "dir"
+  type_id: 0x01c23ad9
+  offset: 32
+}
+member {
+  id: 0x2efc9814
+  name: "dir"
+  type_id: 0x0abe9fd1
+  offset: 152
+}
+member {
+  id: 0xe029b7a1
+  name: "dir_in"
+  type_id: 0x4585663f
+  offset: 4
+  bitsize: 1
+}
+member {
+  id: 0xe95f14cb
+  name: "dir_mode"
+  type_id: 0x1253769c
+  offset: 1824
+}
+member {
+  id: 0x648b9613
+  name: "dir_out"
+  type_id: 0x4585663f
+  offset: 5
+  bitsize: 1
+}
+member {
+  id: 0x2ed2245a
+  name: "dir_uid"
+  type_id: 0xe90b32b7
+  offset: 1792
+}
+member {
+  id: 0xc988e516
+  name: "direct_IO"
+  type_id: 0x0f08e52a
+  offset: 704
+}
+member {
+  id: 0x6bfa0272
+  name: "direct_access"
+  type_id: 0x203e14bb
+}
+member {
+  id: 0xf0e339ea
+  name: "direct_compaction"
+  type_id: 0x6d7f5ff6
+  offset: 952
+}
+member {
+  id: 0xdbcffbe4
+  name: "direct_complete"
+  type_id: 0x6d7f5ff6
+  offset: 41
+  bitsize: 1
+}
+member {
+  id: 0xa02b28d6
+  name: "direction"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0xa069b1d1
+  name: "direction"
+  type_id: 0xf17ebd32
+}
+member {
+  id: 0xa070c117
+  name: "direction"
+  type_id: 0xe8034002
+  offset: 32
+}
+member {
+  id: 0xa07479bb
+  name: "direction"
+  type_id: 0xecbe1e05
+  offset: 192
+}
+member {
+  id: 0xa07eece8
+  name: "direction"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xa0c61f9f
+  name: "direction"
+  type_id: 0x5eda7065
+  offset: 1344
+}
+member {
+  id: 0xa0dd4280
+  name: "direction"
+  type_id: 0x4585663f
+  offset: 7552
+}
+member {
+  id: 0xa0ffe776
+  name: "direction"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0x2773b302
+  name: "direction_input"
+  type_id: 0x2c3be0fd
+  offset: 512
+}
+member {
+  id: 0xd53a148a
+  name: "direction_output"
+  type_id: 0x2c3d92f0
+  offset: 576
+}
+member {
+  id: 0x6f114339
+  name: "directions"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x6f11451c
+  name: "directions"
+  type_id: 0xc9082b19
+  offset: 1216
+}
+member {
+  id: 0x212a55f1
+  name: "dirfd"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0x4f12e4ce
+  name: "dirmap_create"
+  type_id: 0x2cf84bd1
+  offset: 256
+}
+member {
+  id: 0xdd19f9e4
+  name: "dirmap_destroy"
+  type_id: 0x0fbe677e
+  offset: 320
+}
+member {
+  id: 0x730d35b8
+  name: "dirmap_read"
+  type_id: 0x0e3973a2
+  offset: 384
+}
+member {
+  id: 0xef3c267f
+  name: "dirmap_write"
+  type_id: 0x0e395200
+  offset: 448
+}
+member {
+  id: 0xf515fe65
+  name: "dirtied_stamp"
+  type_id: 0x33756485
+  offset: 2112
+}
+member {
+  id: 0x483b8d41
+  name: "dirtied_time_when"
+  type_id: 0x33756485
+  offset: 1856
+}
+member {
+  id: 0x6fa1a70e
+  name: "dirtied_when"
+  type_id: 0x33756485
+  offset: 1792
+}
+member {
+  id: 0xb540d111
+  name: "dirty"
+  type_id: 0xd3c80119
+  offset: 2240
+}
+member {
+  id: 0xb5bde352
+  name: "dirty"
+  type_id: 0x2efa73f5
+  offset: 128
+}
+member {
+  id: 0x050fb49d
+  name: "dirty_bitmap"
+  type_id: 0x064d6086
+  offset: 1536
+}
+member {
+  id: 0xcaa4df71
+  name: "dirty_exceeded"
+  type_id: 0x6720d32f
+  offset: 2880
+}
+member {
+  id: 0x1246feb9
+  name: "dirty_folio"
+  type_id: 0x34407506
+  offset: 192
+}
+member {
+  id: 0x69efcf5e
+  name: "dirty_gfns"
+  type_id: 0x35324dc4
+  offset: 128
+}
+member {
+  id: 0x4647cbd4
+  name: "dirty_index"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xcd7da86d
+  name: "dirty_inode"
+  type_id: 0x0f69541a
+  offset: 192
+}
+member {
+  id: 0x9decd18f
+  name: "dirty_limit"
+  type_id: 0x33756485
+  offset: 1024
+}
+member {
+  id: 0x3935eb38
+  name: "dirty_limit_tstamp"
+  type_id: 0x33756485
+  offset: 960
+}
+member {
+  id: 0x32d7478b
+  name: "dirty_paused_when"
+  type_id: 0x33756485
+  offset: 22656
+}
+member {
+  id: 0x2ef6f90f
+  name: "dirty_ratelimit"
+  type_id: 0x33756485
+  offset: 2368
+}
+member {
+  id: 0x0741ce14
+  name: "dirty_ring"
+  type_id: 0x95e9e529
+  offset: 77248
+}
+member {
+  id: 0x8de27dbd
+  name: "dirty_ring_size"
+  type_id: 0xc9082b19
+  offset: 34336
+}
+member {
+  id: 0xaa41fb92
+  name: "dirty_sleep"
+  type_id: 0x33756485
+  offset: 5312
+}
+member {
+  id: 0xd7a3d362
+  name: "dis_hw_timestamp"
+  type_id: 0x2cb45ae6
+  offset: 1280
+}
+member {
+  id: 0x0d583e9e
+  name: "disable"
+  type_id: 0xd5df6730
+}
+member {
+  id: 0x0d804b11
+  name: "disable"
+  type_id: 0x0da39a23
+  offset: 576
+}
+member {
+  id: 0x0d8131f1
+  name: "disable"
+  type_id: 0x0cd0a3a7
+  offset: 256
+}
+member {
+  id: 0x0d81592a
+  name: "disable"
+  type_id: 0x0cb02071
+  offset: 960
+}
+member {
+  id: 0x0d81beee
+  name: "disable"
+  type_id: 0x0c596e35
+  offset: 640
+}
+member {
+  id: 0x0d821244
+  name: "disable"
+  type_id: 0x0ff0075d
+  offset: 832
+}
+member {
+  id: 0x0d828e0a
+  name: "disable"
+  type_id: 0x0f6acd3e
+  offset: 2688
+}
+member {
+  id: 0x0d82e48b
+  name: "disable"
+  type_id: 0x0f04e0db
+  offset: 384
+}
+member {
+  id: 0x0d839a71
+  name: "disable"
+  type_id: 0x0e724a00
+  offset: 128
+}
+member {
+  id: 0x0d83fe59
+  name: "disable"
+  type_id: 0x0e1867ef
+  offset: 320
+}
+member {
+  id: 0x0da0ee8f
+  name: "disable"
+  type_id: 0x2d078518
+  offset: 960
+}
+member {
+  id: 0x0da0f771
+  name: "disable"
+  type_id: 0x2d126960
+  offset: 64
+}
+member {
+  id: 0x0da11e2d
+  name: "disable"
+  type_id: 0x2cf616a6
+  offset: 128
+}
+member {
+  id: 0x0da26875
+  name: "disable"
+  type_id: 0x2f892792
+  offset: 256
+}
+member {
+  id: 0x0da2fc22
+  name: "disable"
+  type_id: 0x2f1ba27c
+  offset: 640
+}
+member {
+  id: 0x0da3ea4c
+  name: "disable"
+  type_id: 0x2e037cf1
+  offset: 192
+}
+member {
+  id: 0x0dbe907c
+  name: "disable"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x3e7eba01
+  name: "disable_cd"
+  type_id: 0x4585663f
+  offset: 69
+  bitsize: 1
+}
+member {
+  id: 0x07003f53
+  name: "disable_compat_vdso"
+  type_id: 0x6d7f5ff6
+  offset: 448
+}
+member {
+  id: 0xfa0e8e2d
+  name: "disable_deblocking_filter_idc"
+  type_id: 0xb3e7bac9
+  offset: 112
+}
+member {
+  id: 0xc5a636a8
+  name: "disable_depth"
+  type_id: 0x4585663f
+  offset: 1984
+  bitsize: 3
+}
+member {
+  id: 0x46c16626
+  name: "disable_hub_initiated_lpm"
+  type_id: 0x4585663f
+  offset: 2370
+  bitsize: 1
+}
+member {
+  id: 0xc2d0cf11
+  name: "disable_ibi"
+  type_id: 0x2d1660e0
+  offset: 960
+}
+member {
+  id: 0x4e51103b
+  name: "disable_ipv6"
+  type_id: 0x0faae5b1
+  offset: 1152
+}
+member {
+  id: 0x2d406285
+  name: "disable_irq"
+  type_id: 0x0d364e53
+  offset: 256
+}
+member {
+  id: 0x4129b94c
+  name: "disable_locking"
+  type_id: 0x6d7f5ff6
+  offset: 640
+}
+member {
+  id: 0xc52241bb
+  name: "disable_media"
+  type_id: 0x0d8d5ad3
+  offset: 128
+}
+member {
+  id: 0x2f84ea32
+  name: "disable_plane"
+  type_id: 0x2c414688
+  offset: 64
+}
+member {
+  id: 0xaffcfb85
+  name: "disable_policy"
+  type_id: 0x0faae5b1
+  offset: 1760
+}
+member {
+  id: 0x905fb5ad
+  name: "disable_route_checks"
+  type_id: 0x4585663f
+  offset: 6307
+  bitsize: 1
+}
+member {
+  id: 0xf5f43594
+  name: "disable_se"
+  type_id: 0x2d767327
+  offset: 896
+}
+member {
+  id: 0xc7de10d0
+  name: "disable_slot"
+  type_id: 0x2c804609
+  offset: 64
+}
+member {
+  id: 0xe3d208ab
+  name: "disable_source"
+  type_id: 0x0f5f599e
+  offset: 4992
+}
+member {
+  id: 0x53f8f1cf
+  name: "disable_timer"
+  type_id: 0xd298e888
+  offset: 256
+}
+member {
+  id: 0x87602a43
+  name: "disable_unused"
+  type_id: 0x0e1867ef
+  offset: 448
+}
+member {
+  id: 0x9d571f16
+  name: "disable_usb3_lpm_timeout"
+  type_id: 0x2fae1014
+  offset: 2688
+}
+member {
+  id: 0xbd0aaa89
+  name: "disable_val"
+  type_id: 0x4585663f
+  offset: 1600
+}
+member {
+  id: 0xffe870e2
+  name: "disable_vblank"
+  type_id: 0x0e724a00
+  offset: 512
+}
+member {
+  id: 0xffeba8d9
+  name: "disable_vblank"
+  type_id: 0x0da39a23
+  offset: 1408
+}
+member {
+  id: 0x8965be20
+  name: "disable_vq_and_reset"
+  type_id: 0x2eefa915
+  offset: 960
+}
+member {
+  id: 0xca170866
+  name: "disable_work"
+  type_id: 0xf1159c31
+  offset: 9408
+}
+member {
+  id: 0x145ca6f0
+  name: "disabled"
+  type_id: 0xedf277ba
+  offset: 320
+  bitsize: 1
+}
+member {
+  id: 0x1e21049c
+  name: "disabled"
+  type_id: 0xb3e7bac9
+  offset: 40
+}
+member {
+  id: 0x1ee633e8
+  name: "disabled"
+  type_id: 0x74d29cf1
+}
+member {
+  id: 0x66b91ede
+  name: "disc"
+  type_id: 0x28fe5710
+  offset: 2176
+}
+member {
+  id: 0xd4cf1f92
+  name: "disc_data"
+  type_id: 0x18bd6530
+  offset: 5568
+}
+member {
+  id: 0xdc0f3007
+  name: "disc_mutex"
+  type_id: 0xa7c362b0
+  offset: 1472
+}
+member {
+  id: 0x745075c8
+  name: "disc_reason"
+  type_id: 0xb3e7bac9
+  offset: 2816
+}
+member {
+  id: 0x59dd05d4
+  name: "disc_timeout"
+  type_id: 0xe8034002
+  offset: 848
+}
+member {
+  id: 0x5c30c99f
+  name: "disc_work"
+  type_id: 0xf1159c31
+  offset: 4224
+}
+member {
+  id: 0x8c3076ff
+  name: "discard"
+  type_id: 0xb34a0d30
+  offset: 64
+}
+member {
+  id: 0x99be6e27
+  name: "discard_alignment"
+  type_id: 0x4585663f
+  offset: 704
+}
+member {
+  id: 0x6f393deb
+  name: "discard_clusters"
+  type_id: 0x696e069f
+  offset: 2176
+}
+member {
+  id: 0xfbff1b4b
+  name: "discard_granularity"
+  type_id: 0x4585663f
+  offset: 672
+}
+member {
+  id: 0x1bdd5453
+  name: "discard_misaligned"
+  type_id: 0x5d8155a5
+  offset: 824
+}
+member {
+  id: 0x9de4bcbd
+  name: "discard_work"
+  type_id: 0x1f3c8679
+  offset: 1792
+}
+member {
+  id: 0x513a35c9
+  name: "disconn_cfm"
+  type_id: 0x0cb52986
+  offset: 256
+}
+member {
+  id: 0x82203533
+  name: "disconn_cfm_cb"
+  type_id: 0x0c2f924e
+  offset: 16896
+}
+member {
+  id: 0x8d87fb64
+  name: "disconnect"
+  type_id: 0x2c436299
+  offset: 192
+}
+member {
+  id: 0x8da487d3
+  name: "disconnect"
+  type_id: 0x0f3dfb90
+  offset: 1536
+}
+member {
+  id: 0x8da4e999
+  name: "disconnect"
+  type_id: 0x0f5e5d84
+  offset: 2304
+}
+member {
+  id: 0x8da522b5
+  name: "disconnect"
+  type_id: 0x0e996219
+  offset: 512
+}
+member {
+  id: 0x8da69b4b
+  name: "disconnect"
+  type_id: 0x0d2a160e
+  offset: 384
+}
+member {
+  id: 0x8da71577
+  name: "disconnect"
+  type_id: 0x0ca42ad3
+  offset: 384
+}
+member {
+  id: 0x8da71f49
+  name: "disconnect"
+  type_id: 0x0ca6443d
+  offset: 128
+}
+member {
+  id: 0x8da75776
+  name: "disconnect"
+  type_id: 0x0ce07e73
+  offset: 320
+}
+member {
+  id: 0x8da7dc80
+  name: "disconnect"
+  type_id: 0x0c6bcde0
+  offset: 2048
+}
+member {
+  id: 0x8dc6c476
+  name: "disconnect"
+  type_id: 0x6d7f5ff6
+  offset: 8
+}
+member {
+  id: 0xd6395374
+  name: "disconnect"
+  type_id: 0x4585663f
+  offset: 2790
+  bitsize: 1
+}
+member {
+  id: 0x9ea573bb
+  name: "disconnect_bssid"
+  type_id: 0xabf64f28
+  offset: 1664
+}
+member {
+  id: 0x474deee1
+  name: "disconnect_notify"
+  type_id: 0x0d890895
+  offset: 192
+}
+member {
+  id: 0x7589247f
+  name: "disconnect_phy"
+  type_id: 0x0f3dfb90
+  offset: 576
+}
+member {
+  id: 0xf779586c
+  name: "disconnect_wk"
+  type_id: 0x1f3c8679
+  offset: 1280
+}
+member {
+  id: 0xd1a76d30
+  name: "disconnected"
+  type_id: 0x5d8155a5
+  offset: 288
+  bitsize: 1
+}
+member {
+  id: 0x77b2ddab
+  name: "discov_interleaved_timeout"
+  type_id: 0xe8034002
+  offset: 6576
+}
+member {
+  id: 0xec10e729
+  name: "discov_off"
+  type_id: 0xf1159c31
+  offset: 17856
+}
+member {
+  id: 0x9d30956d
+  name: "discov_timeout"
+  type_id: 0xe8034002
+  offset: 17792
+}
+member {
+  id: 0x8ca232e1
+  name: "discover_se"
+  type_id: 0x2dbf7b0c
+  offset: 768
+}
+member {
+  id: 0xd0a93c31
+  name: "discovery"
+  type_id: 0xf51d515d
+  offset: 27072
+}
+member {
+  id: 0x45128248
+  name: "discovery_old_state"
+  type_id: 0x6720d32f
+  offset: 28224
+}
+member {
+  id: 0x98e47471
+  name: "discovery_paused"
+  type_id: 0x6d7f5ff6
+  offset: 28256
+}
+member {
+  id: 0x8c9f2a57
+  name: "discrete"
+  type_id: 0xedcc276b
+}
+member {
+  id: 0x8cdc3d65
+  name: "discrete"
+  type_id: 0xaedb15fc
+}
+member {
+  id: 0x6071a578
+  name: "disk"
+  type_id: 0x2131312a
+  offset: 64
+}
+member {
+  id: 0x6071a686
+  name: "disk"
+  type_id: 0x2131312a
+  offset: 1024
+}
+member {
+  id: 0x6071a85b
+  name: "disk"
+  type_id: 0x2131312a
+  offset: 128
+}
+member {
+  id: 0xe00832b6
+  name: "disk_events_disable_depth"
+  type_id: 0x74d29cf1
+  offset: 2912
+}
+member {
+  id: 0x256ac234
+  name: "disk_name"
+  type_id: 0x5adf57ae
+  offset: 96
+}
+member {
+  id: 0x628ffa80
+  name: "diskseq"
+  type_id: 0x92233392
+  offset: 4288
+}
+member {
+  id: 0xc4b80724
+  name: "dismantle"
+  type_id: 0x6d7f5ff6
+  offset: 10120
+}
+member {
+  id: 0x563420bc
+  name: "dismiss"
+  type_id: 0x0e93a255
+  offset: 1792
+}
+member {
+  id: 0x3814ab00
+  name: "disp_bits"
+  type_id: 0xb914bfab
+  offset: 1600
+}
+member {
+  id: 0x28df146e
+  name: "disp_propval"
+  type_id: 0x6d099881
+  offset: 1312
+}
+member {
+  id: 0xc692d18f
+  name: "dispatch"
+  type_id: 0xd3c80119
+  offset: 64
+}
+member {
+  id: 0x8ecb65b6
+  name: "dispatch_busy"
+  type_id: 0x4585663f
+  offset: 2368
+}
+member {
+  id: 0xcd5f5474
+  name: "dispatch_from"
+  type_id: 0x30ae0fb9
+  offset: 2304
+}
+member {
+  id: 0x7ad5f659
+  name: "dispatch_request"
+  type_id: 0x3f21336c
+  offset: 896
+}
+member {
+  id: 0xd4202180
+  name: "dispatch_wait"
+  type_id: 0x347ff86e
+  offset: 2560
+}
+member {
+  id: 0xac5a7949
+  name: "dispatch_wait_lock"
+  type_id: 0xf313e71a
+  offset: 2496
+}
+member {
+  id: 0x6a755c2e
+  name: "dispatch_work"
+  type_id: 0x1f3c8679
+  offset: 1280
+}
+member {
+  id: 0x6ede6239
+  name: "display"
+  type_id: 0xd395c0e4
+  offset: 64
+}
+member {
+  id: 0x0bb9687a
+  name: "display_info"
+  type_id: 0x0710d451
+  offset: 1728
+}
+member {
+  id: 0x07dfd492
+  name: "display_primaries"
+  type_id: 0x1ed32840
+  offset: 128
+}
+member {
+  id: 0xecca7136
+  name: "display_primaries_x"
+  type_id: 0x28c52534
+}
+member {
+  id: 0x2e893d03
+  name: "display_primaries_y"
+  type_id: 0x28c52534
+  offset: 48
+}
+member {
+  id: 0xfe72437a
+  name: "dispose"
+  type_id: 0x0e5445cf
+  offset: 128
+}
+member {
+  id: 0x1de22279
+  name: "disr_el1"
+  type_id: 0x92233392
+  offset: 192
+}
+member {
+  id: 0x40f260d6
+  name: "dissector"
+  type_id: 0x2a316b68
+}
+member {
+  id: 0x0bbd01bc
+  name: "dist"
+  type_id: 0x914dbfdc
+  offset: 16
+}
+member {
+  id: 0x9afd7b44
+  name: "dist_base"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0x929175ec
+  name: "dist_id"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0x6fe87475
+  name: "dist_iodev"
+  type_id: 0x60b9a60c
+  offset: 512
+}
+member {
+  id: 0x29b12afa
+  name: "div"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x4eb6500e
+  name: "dk_descriptor"
+  type_id: 0xee699492
+  offset: 448
+}
+member {
+  id: 0x882a6d89
+  name: "dk_key"
+  type_id: 0x985efc75
+  offset: 320
+}
+member {
+  id: 0x0cd17eab
+  name: "dk_mode"
+  type_id: 0x31e1b230
+  offset: 256
+}
+member {
+  id: 0x0f2deb7a
+  name: "dk_node"
+  type_id: 0x49a73111
+  offset: 64
+}
+member {
+  id: 0x8578df00
+  name: "dk_raw"
+  type_id: 0x39fc1b17
+  offset: 512
+}
+member {
+  id: 0x9743bd71
+  name: "dk_refcount"
+  type_id: 0xa722c13e
+  offset: 192
+}
+member {
+  id: 0x22c51ecd
+  name: "dk_sb"
+  type_id: 0x26ee682a
+}
+member {
+  id: 0x460e05ed
+  name: "dl"
+  type_id: 0x92233392
+}
+member {
+  id: 0x464510a2
+  name: "dl"
+  type_id: 0xd93398f8
+  offset: 20736
+}
+member {
+  id: 0x4693400d
+  name: "dl"
+  type_id: 0x0f61fb85
+  offset: 4736
+}
+member {
+  id: 0xe828d796
+  name: "dl_bw"
+  type_id: 0x92233392
+  offset: 384
+}
+member {
+  id: 0xe8cf425a
+  name: "dl_bw"
+  type_id: 0x75bc7540
+  offset: 512
+}
+member {
+  id: 0xeaaeed05
+  name: "dl_deadline"
+  type_id: 0x92233392
+  offset: 256
+}
+member {
+  id: 0xef99326a
+  name: "dl_density"
+  type_id: 0x92233392
+  offset: 448
+}
+member {
+  id: 0xb0cc3d9b
+  name: "dl_next"
+  type_id: 0x27847a9a
+  offset: 1088
+}
+member {
+  id: 0xbf5cfb82
+  name: "dl_non_contending"
+  type_id: 0x4585663f
+  offset: 674
+  bitsize: 1
+}
+member {
+  id: 0xe55f916d
+  name: "dl_nr_migratory"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0xfe6b2d52
+  name: "dl_nr_running"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x9121e4f5
+  name: "dl_overrun"
+  type_id: 0x4585663f
+  offset: 675
+  bitsize: 1
+}
+member {
+  id: 0x768a9be0
+  name: "dl_period"
+  type_id: 0x92233392
+  offset: 320
+}
+member {
+  id: 0x7cfef104
+  name: "dl_read"
+  type_id: 0x2c3ce96e
+  offset: 5312
+}
+member {
+  id: 0x45e7f049
+  name: "dl_runtime"
+  type_id: 0x92233392
+  offset: 192
+}
+member {
+  id: 0xa4b04617
+  name: "dl_throttled"
+  type_id: 0x4585663f
+  offset: 672
+  bitsize: 1
+}
+member {
+  id: 0x372017ff
+  name: "dl_timer"
+  type_id: 0xcd7704bf
+  offset: 704
+}
+member {
+  id: 0x9d133319
+  name: "dl_write"
+  type_id: 0x0f1de512
+  offset: 5376
+}
+member {
+  id: 0xd19c0196
+  name: "dl_yielded"
+  type_id: 0x4585663f
+  offset: 673
+  bitsize: 1
+}
+member {
+  id: 0x7dae7895
+  name: "dlc"
+  type_id: 0x5fcfd92a
+}
+member {
+  id: 0x1b4dba0f
+  name: "dlci"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xd38b4e37
+  name: "dlo_count"
+  type_id: 0x74d29cf1
+  offset: 448
+}
+member {
+  id: 0x8151d716
+  name: "dlo_mask"
+  type_id: 0x99caa0ae
+  offset: 384
+}
+member {
+  id: 0x811af440
+  name: "dma"
+  type_id: 0xe02e14d6
+  offset: 448
+}
+member {
+  id: 0x811af935
+  name: "dma"
+  type_id: 0xe02e14d6
+  offset: 16384
+}
+member {
+  id: 0x811afaf5
+  name: "dma"
+  type_id: 0xe02e14d6
+  offset: 128
+}
+member {
+  id: 0x81a75281
+  name: "dma"
+  type_id: 0x5d8155a5
+  offset: 152
+}
+member {
+  id: 0x81a75cde
+  name: "dma"
+  type_id: 0x5d8155a5
+  offset: 4376
+}
+member {
+  id: 0x81c2c839
+  name: "dma"
+  type_id: 0x381472e2
+  offset: 5184
+}
+member {
+  id: 0x1e86e785
+  name: "dma_32bit_pfn"
+  type_id: 0x33756485
+  offset: 384
+}
+member {
+  id: 0xfb57275f
+  name: "dma_addr"
+  type_id: 0xe02e14d6
+  offset: 768
+}
+member {
+  id: 0xfb5728f3
+  name: "dma_addr"
+  type_id: 0xe02e14d6
+  offset: 6208
+}
+member {
+  id: 0xfb847c48
+  name: "dma_addr"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0xf8717bfb
+  name: "dma_addr_upper"
+  type_id: 0x33756485
+}
+member {
+  id: 0x930f176b
+  name: "dma_address"
+  type_id: 0x329bbc92
+  offset: 192
+}
+member {
+  id: 0x93dda3c8
+  name: "dma_address"
+  type_id: 0xe02e14d6
+  offset: 128
+}
+member {
+  id: 0x26c09503
+  name: "dma_alias_mask"
+  type_id: 0x064d6086
+  offset: 960
+}
+member {
+  id: 0x8d05d4ec
+  name: "dma_alignment"
+  type_id: 0x4585663f
+  offset: 896
+}
+member {
+  id: 0x8dd118a9
+  name: "dma_alignment"
+  type_id: 0x914dbfdc
+  offset: 7456
+}
+member {
+  id: 0x40414366
+  name: "dma_area"
+  type_id: 0x1df06cce
+  offset: 6144
+}
+member {
+  id: 0x40414bb9
+  name: "dma_area"
+  type_id: 0x1df06cce
+  offset: 704
+}
+member {
+  id: 0x6450e529
+  name: "dma_attrs"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x656a2711
+  name: "dma_boundary"
+  type_id: 0x33756485
+  offset: 2432
+}
+member {
+  id: 0x656a29d1
+  name: "dma_boundary"
+  type_id: 0x33756485
+  offset: 4160
+}
+member {
+  id: 0x597c6763
+  name: "dma_buf"
+  type_id: 0x00c83ba6
+  offset: 1856
+}
+member {
+  id: 0x941cf6ca
+  name: "dma_buffer"
+  type_id: 0xe1b79909
+  offset: 960
+}
+member {
+  id: 0x941cf969
+  name: "dma_buffer"
+  type_id: 0xe1b79909
+  offset: 1472
+}
+member {
+  id: 0x1fa10880
+  name: "dma_buffer_p"
+  type_id: 0x32fddfe5
+  offset: 896
+}
+member {
+  id: 0x1fa108db
+  name: "dma_buffer_p"
+  type_id: 0x32fddfe5
+  offset: 6336
+}
+member {
+  id: 0xe342eba2
+  name: "dma_bytes"
+  type_id: 0xf435685e
+  offset: 6272
+}
+member {
+  id: 0xe342eebb
+  name: "dma_bytes"
+  type_id: 0xf435685e
+  offset: 832
+}
+member {
+  id: 0x0fe3384c
+  name: "dma_channel"
+  type_id: 0x5d8155a5
+  offset: 4936
+}
+member {
+  id: 0xf2ef2bc4
+  name: "dma_cleanup"
+  type_id: 0x0e93a255
+  offset: 1152
+}
+member {
+  id: 0xc86e7bbe
+  name: "dma_coherent"
+  type_id: 0x6d7f5ff6
+  offset: 6757
+  bitsize: 1
+}
+member {
+  id: 0x1a139152
+  name: "dma_configure"
+  type_id: 0x2dd58efa
+  offset: 1088
+}
+member {
+  id: 0x810a01b7
+  name: "dma_dev"
+  type_id: 0x0258f96e
+  offset: 19712
+}
+member {
+  id: 0x810a0b09
+  name: "dma_dev"
+  type_id: 0x0258f96e
+  offset: 256
+}
+member {
+  id: 0xeed6dab9
+  name: "dma_dir"
+  type_id: 0xcd84e3cd
+  offset: 192
+}
+member {
+  id: 0xeed6dd5f
+  name: "dma_dir"
+  type_id: 0xcd84e3cd
+  offset: 1760
+}
+member {
+  id: 0x4df857e5
+  name: "dma_drain_buf"
+  type_id: 0x18bd6530
+  offset: 19328
+}
+member {
+  id: 0xe856e7f5
+  name: "dma_drain_len"
+  type_id: 0xf435685e
+  offset: 19264
+}
+member {
+  id: 0xf4c016ce
+  name: "dma_io_tlb_mem"
+  type_id: 0x017d6bbb
+  offset: 5888
+}
+member {
+  id: 0xc58e6844
+  name: "dma_length"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0x7eeaef14
+  name: "dma_map_attrs"
+  type_id: 0x33756485
+  offset: 576
+}
+member {
+  id: 0x04ffa34f
+  name: "dma_map_dev"
+  type_id: 0x0258f96e
+  offset: 9408
+}
+member {
+  id: 0x2af3d123
+  name: "dma_mapped"
+  type_id: 0x4585663f
+  offset: 340
+  bitsize: 1
+}
+member {
+  id: 0x4d0c48ad
+  name: "dma_mask"
+  type_id: 0x2e18f543
+  offset: 5312
+}
+member {
+  id: 0x4db07287
+  name: "dma_mask"
+  type_id: 0x92233392
+  offset: 1088
+}
+member {
+  id: 0x4db07683
+  name: "dma_mask"
+  type_id: 0x92233392
+  offset: 576
+}
+member {
+  id: 0x4db078fa
+  name: "dma_mask"
+  type_id: 0x92233392
+  offset: 2304
+}
+member {
+  id: 0x5fa99e1d
+  name: "dma_max"
+  type_id: 0xf435685e
+  offset: 1408
+}
+member {
+  id: 0x1bdb3896
+  name: "dma_mem"
+  type_id: 0x1cc3928a
+  offset: 5760
+}
+member {
+  id: 0xf5bb7fa5
+  name: "dma_need_drain"
+  type_id: 0x34d10f7f
+  offset: 1600
+}
+member {
+  id: 0xbd3a00f7
+  name: "dma_need_sync"
+  type_id: 0x6d7f5ff6
+  offset: 1712
+}
+member {
+  id: 0x3d3d20d0
+  name: "dma_ops"
+  type_id: 0x3dd71310
+  offset: 5248
+}
+member {
+  id: 0x6ca431a2
+  name: "dma_pad_mask"
+  type_id: 0x4585663f
+  offset: 2112
+}
+member {
+  id: 0x69583779
+  name: "dma_pages"
+  type_id: 0x329bbc92
+  offset: 1152
+}
+member {
+  id: 0x2781097d
+  name: "dma_pages_cnt"
+  type_id: 0xc9082b19
+  offset: 1504
+}
+member {
+  id: 0xebac1479
+  name: "dma_parms"
+  type_id: 0x5d0e8a16
+  offset: 7488
+}
+member {
+  id: 0xebac1d09
+  name: "dma_parms"
+  type_id: 0x5d0e8a16
+  offset: 8128
+}
+member {
+  id: 0xebac1eb3
+  name: "dma_parms"
+  type_id: 0x5d0e8a16
+  offset: 1152
+}
+member {
+  id: 0xebecc590
+  name: "dma_parms"
+  type_id: 0x1dd39b22
+  offset: 5568
+}
+member {
+  id: 0x327b1828
+  name: "dma_pools"
+  type_id: 0xd3c80119
+  offset: 5632
+}
+member {
+  id: 0x70ab2d7e
+  name: "dma_range_map"
+  type_id: 0x30383293
+  offset: 5504
+}
+member {
+  id: 0x5b2ae144
+  name: "dma_ranges"
+  type_id: 0xd3c80119
+  offset: 7744
+}
+member {
+  id: 0xc009bf1b
+  name: "dma_router"
+  type_id: 0x0b131b04
+  offset: 320
+}
+member {
+  id: 0x28a6404f
+  name: "dma_rx"
+  type_id: 0x3a583251
+  offset: 11968
+}
+member {
+  id: 0xc2724877
+  name: "dma_start"
+  type_id: 0xe02e14d6
+  offset: 64
+}
+member {
+  id: 0x1c20b4dd
+  name: "dma_supported"
+  type_id: 0x2d47adc9
+  offset: 1280
+}
+member {
+  id: 0x297f5e4a
+  name: "dma_tx"
+  type_id: 0x3a583251
+  offset: 11904
+}
+member {
+  id: 0x590c841e
+  name: "dmabuf"
+  type_id: 0x00c83ba6
+}
+member {
+  id: 0x590c8cb0
+  name: "dmabuf"
+  type_id: 0x00c83ba6
+  offset: 768
+}
+member {
+  id: 0x810e204c
+  name: "dmabufs"
+  type_id: 0xeb923a9b
+  offset: 384
+}
+member {
+  id: 0x8c0f52a7
+  name: "do_aux_work"
+  type_id: 0x2107c9ab
+  offset: 1408
+}
+member {
+  id: 0xe7001841
+  name: "do_daa"
+  type_id: 0x2dded119
+  offset: 320
+}
+member {
+  id: 0x3b3e3bcb
+  name: "do_get_auto_tdcv"
+  type_id: 0x2ef14f1a
+  offset: 3264
+}
+member {
+  id: 0x23961113
+  name: "do_get_berr_counter"
+  type_id: 0x2efda0ad
+  offset: 3200
+}
+member {
+  id: 0x250fe094
+  name: "do_get_state"
+  type_id: 0x2ecd9a2a
+  offset: 3136
+}
+member {
+  id: 0xaeaf989d
+  name: "do_put"
+  type_id: 0x389be24f
+  offset: 192
+}
+member {
+  id: 0x95931458
+  name: "do_remote_wakeup"
+  type_id: 0x4585663f
+  offset: 11840
+  bitsize: 1
+}
+member {
+  id: 0xa24f66d2
+  name: "do_set_bittiming"
+  type_id: 0x2eda6351
+  offset: 2880
+}
+member {
+  id: 0x5206dada
+  name: "do_set_data_bittiming"
+  type_id: 0x2eda6351
+  offset: 2944
+}
+member {
+  id: 0x1e5896e2
+  name: "do_set_mode"
+  type_id: 0x2ef0956f
+  offset: 3008
+}
+member {
+  id: 0x34e27298
+  name: "do_set_termination"
+  type_id: 0x2e4b2eee
+  offset: 3072
+}
+member {
+  id: 0xfde70709
+  name: "do_wakeup"
+  type_id: 0x6720d32f
+  offset: 3648
+}
+member {
+  id: 0x83eaed13
+  name: "do_work"
+  type_id: 0x02a57796
+  offset: 128
+}
+member {
+  id: 0x1998e805
+  name: "do_xfer"
+  type_id: 0x2e215a2d
+  offset: 192
+}
+member {
+  id: 0x4fd3f604
+  name: "do_xfer_with_response"
+  type_id: 0x2e215a2d
+  offset: 256
+}
+member {
+  id: 0xb0684380
+  name: "dobj"
+  type_id: 0xcff0a13b
+  offset: 128
+}
+member {
+  id: 0xb0684734
+  name: "dobj"
+  type_id: 0xcff0a13b
+  offset: 1088
+}
+member {
+  id: 0xb0684886
+  name: "dobj"
+  type_id: 0xcff0a13b
+  offset: 1216
+}
+member {
+  id: 0xb0684ae9
+  name: "dobj"
+  type_id: 0xcff0a13b
+  offset: 256
+}
+member {
+  id: 0xb0684d85
+  name: "dobj"
+  type_id: 0xcff0a13b
+  offset: 320
+}
+member {
+  id: 0x6bd9d4c0
+  name: "dobj_list"
+  type_id: 0xd3c80119
+  offset: 4864
+}
+member {
+  id: 0x6bd9dbed
+  name: "dobj_list"
+  type_id: 0xd3c80119
+  offset: 1536
+}
+member {
+  id: 0x43aeb87c
+  name: "dock"
+  type_id: 0x6d7f5ff6
+  offset: 96
+}
+member {
+  id: 0xd0082b22
+  name: "doff"
+  type_id: 0xe8034002
+  offset: 100
+  bitsize: 4
+}
+member {
+  id: 0xa5425246
+  name: "doing_init_tune"
+  type_id: 0x4585663f
+  offset: 8482
+  bitsize: 1
+}
+member {
+  id: 0x75745ff2
+  name: "doing_retune"
+  type_id: 0x4585663f
+  offset: 8484
+  bitsize: 1
+}
+member {
+  id: 0xd904b1c4
+  name: "doit"
+  type_id: 0x2cd10398
+  offset: 128
+}
+member {
+  id: 0xd905c561
+  name: "doit"
+  type_id: 0x2da8853f
+  offset: 64
+}
+member {
+  id: 0xd905fcdc
+  name: "doit"
+  type_id: 0x2d95d9be
+}
+member {
+  id: 0x626dace8
+  name: "dom_cgrp"
+  type_id: 0x18a16691
+  offset: 7360
+}
+member {
+  id: 0x8c690725
+  name: "dom_cset"
+  type_id: 0x0d821a01
+  offset: 512
+}
+member {
+  id: 0xa719d146
+  name: "domain"
+  type_id: 0x18a2fb63
+  offset: 832
+}
+member {
+  id: 0xa719d257
+  name: "domain"
+  type_id: 0x18a2fb63
+  offset: 256
+}
+member {
+  id: 0xa719d2fc
+  name: "domain"
+  type_id: 0x18a2fb63
+}
+member {
+  id: 0xa719d61d
+  name: "domain"
+  type_id: 0x18a2fb63
+  offset: 64
+}
+member {
+  id: 0xa719d7c2
+  name: "domain"
+  type_id: 0x18a2fb63
+  offset: 2688
+}
+member {
+  id: 0xa719db3e
+  name: "domain"
+  type_id: 0x18a2fb63
+  offset: 128
+}
+member {
+  id: 0xa719db8e
+  name: "domain"
+  type_id: 0x18a2fb63
+  offset: 576
+}
+member {
+  id: 0xa72fed64
+  name: "domain"
+  type_id: 0x2e94a1e1
+  offset: 128
+}
+member {
+  id: 0xa72fefbb
+  name: "domain"
+  type_id: 0x2e94a1e1
+  offset: 1856
+}
+member {
+  id: 0xa7c8766e
+  name: "domain"
+  type_id: 0xc9082b19
+  offset: 2112
+}
+member {
+  id: 0xa7c879be
+  name: "domain"
+  type_id: 0xc9082b19
+  offset: 384
+}
+member {
+  id: 0xa7da3e30
+  name: "domain"
+  type_id: 0xdb44b469
+  offset: 7296
+}
+member {
+  id: 0xa7e75a59
+  name: "domain"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x73013631
+  name: "domain_alloc"
+  type_id: 0x373173b7
+  offset: 64
+}
+member {
+  id: 0x545e84ab
+  name: "domain_alloc_irqs"
+  type_id: 0x2c7e042e
+  offset: 384
+}
+member {
+  id: 0x5d0e2c97
+  name: "domain_data"
+  type_id: 0x07cece0f
+  offset: 640
+}
+member {
+  id: 0x617add50
+  name: "domain_free_irqs"
+  type_id: 0x0f3e5a8c
+  offset: 448
+}
+member {
+  id: 0xbee592c3
+  name: "domain_nr"
+  type_id: 0x6720d32f
+  offset: 7584
+}
+member {
+  id: 0xbee5988a
+  name: "domain_nr"
+  type_id: 0x6720d32f
+  offset: 2016
+}
+member {
+  id: 0x7441b38b
+  name: "domain_number"
+  type_id: 0x295c7202
+  offset: 32
+}
+member {
+  id: 0xba32bd20
+  name: "domain_ops"
+  type_id: 0x30351611
+  offset: 128
+}
+member {
+  id: 0x015536d8
+  name: "domain_tag"
+  type_id: 0x22bb3fbf
+  offset: 192
+}
+member {
+  id: 0x93618294
+  name: "domainname"
+  type_id: 0xfeb89bd6
+  offset: 2600
+}
+member {
+  id: 0xf631d953
+  name: "domains"
+  type_id: 0x0b343e69
+}
+member {
+  id: 0xd2c2119f
+  name: "dominates"
+  type_id: 0x86a931f9
+  offset: 64
+}
+member {
+  id: 0x1d0af001
+  name: "done"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x1d18f5cb
+  name: "done"
+  type_id: 0x578f9c2b
+  offset: 3200
+}
+member {
+  id: 0x1d220120
+  name: "done"
+  type_id: 0x6d7f5ff6
+  offset: 512
+}
+member {
+  id: 0x1d400b5c
+  name: "done"
+  type_id: 0x0f79fcf8
+  offset: 320
+}
+member {
+  id: 0x1d43592f
+  name: "done"
+  type_id: 0x0c24e6e5
+  offset: 768
+}
+member {
+  id: 0x1d5745ef
+  name: "done"
+  type_id: 0x18374f23
+  offset: 320
+}
+member {
+  id: 0x1d60409a
+  name: "done"
+  type_id: 0x2f3c3f20
+  offset: 128
+}
+member {
+  id: 0x1d604191
+  name: "done"
+  type_id: 0x2f3c3f20
+  offset: 192
+}
+member {
+  id: 0x1d70b58c
+  name: "done"
+  type_id: 0x3fcbf304
+  offset: 512
+}
+member {
+  id: 0x1d70b65d
+  name: "done"
+  type_id: 0x3fcbf304
+  offset: 192
+}
+member {
+  id: 0x1d70b953
+  name: "done"
+  type_id: 0x3fcbf304
+  offset: 320
+}
+member {
+  id: 0x1d70b9e3
+  name: "done"
+  type_id: 0x3fcbf304
+  offset: 448
+}
+member {
+  id: 0x1d9cb67e
+  name: "done"
+  type_id: 0xd3c80119
+  offset: 512
+}
+member {
+  id: 0x1dcb6606
+  name: "done"
+  type_id: 0x841ba84b
+  offset: 192
+}
+member {
+  id: 0x1def083c
+  name: "done"
+  type_id: 0xa07499f1
+  offset: 128
+}
+member {
+  id: 0x5a295f6f
+  name: "done"
+  type_id: 0x4585663f
+  offset: 416
+  bitsize: 1
+}
+member {
+  id: 0x2aa20717
+  name: "done_bio"
+  type_id: 0x0f72ddf9
+  offset: 384
+}
+member {
+  id: 0xda255ba3
+  name: "done_entry"
+  type_id: 0xd3c80119
+  offset: 3968
+}
+member {
+  id: 0xd715f08e
+  name: "done_list"
+  type_id: 0xd3c80119
+  offset: 6144
+}
+member {
+  id: 0xbfd145e8
+  name: "done_lock"
+  type_id: 0xf313e71a
+  offset: 6272
+}
+member {
+  id: 0x10ba6614
+  name: "done_wq"
+  type_id: 0x03913382
+  offset: 6336
+}
+member {
+  id: 0xbd60b76c
+  name: "doorbell"
+  type_id: 0x7b0fa8c2
+}
+member {
+  id: 0x25d46e52
+  name: "dops"
+  type_id: 0x39d30e9a
+  offset: 128
+}
+member {
+  id: 0x4fbdcb60
+  name: "double_poll"
+  type_id: 0x28f2cf66
+  offset: 512
+}
+member {
+  id: 0x72a50ec1
+  name: "doublescan_allowed"
+  type_id: 0x6d7f5ff6
+  offset: 1320
+}
+member {
+  id: 0x9c3663f5
+  name: "dout_iovec_count"
+  type_id: 0xe62ebf07
+  offset: 448
+}
+member {
+  id: 0x99a4f9f9
+  name: "dout_resid"
+  type_id: 0x0faae5b1
+  offset: 1120
+}
+member {
+  id: 0x75edeb0e
+  name: "dout_xfer_len"
+  type_id: 0xe62ebf07
+  offset: 480
+}
+member {
+  id: 0x032bb43a
+  name: "dout_xferp"
+  type_id: 0xedf277ba
+  offset: 576
+}
+member {
+  id: 0xa1b8202d
+  name: "downdifferential"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xf7afd81a
+  name: "downmix"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0xfd3cc788
+  name: "downmix_inhibit"
+  type_id: 0x6d7f5ff6
+  offset: 208
+}
+member {
+  id: 0x7fe17814
+  name: "downshifted_rate"
+  type_id: 0x4585663f
+  offset: 9257
+  bitsize: 1
+}
+member {
+  id: 0x046aa1ff
+  name: "downstream"
+  type_id: 0x11e6864c
+  offset: 64
+}
+member {
+  id: 0x554f78fe
+  name: "dp"
+  type_id: 0x80ba3719
+}
+member {
+  id: 0x1e95895b
+  name: "dp_subconnector_property"
+  type_id: 0x2a670b41
+  offset: 7424
+}
+member {
+  id: 0x93b48e83
+  name: "dpa"
+  type_id: 0xc7736674
+  offset: 384
+}
+member {
+  id: 0x897a51af
+  name: "dpad"
+  type_id: 0xe8034002
+  offset: 1024
+}
+member {
+  id: 0xd5ccee65
+  name: "dpb"
+  type_id: 0x7eefbee1
+  offset: 512
+}
+member {
+  id: 0xd5cd0c36
+  name: "dpb"
+  type_id: 0x7f06f597
+}
+member {
+  id: 0x50cf371b
+  name: "dpcm"
+  type_id: 0x4b6441c7
+  offset: 1344
+}
+member {
+  id: 0xda5953eb
+  name: "dpcm_capture"
+  type_id: 0x4585663f
+  offset: 1033
+  bitsize: 1
+}
+member {
+  id: 0xc8ef6400
+  name: "dpcm_merged_chan"
+  type_id: 0x4585663f
+  offset: 1036
+  bitsize: 1
+}
+member {
+  id: 0x247b24f9
+  name: "dpcm_merged_format"
+  type_id: 0x4585663f
+  offset: 1035
+  bitsize: 1
+}
+member {
+  id: 0x26e3a132
+  name: "dpcm_merged_rate"
+  type_id: 0x4585663f
+  offset: 1037
+  bitsize: 1
+}
+member {
+  id: 0xfb32caec
+  name: "dpcm_playback"
+  type_id: 0x4585663f
+  offset: 1034
+  bitsize: 1
+}
+member {
+  id: 0x95152d3f
+  name: "dplen"
+  type_id: 0xb3e7bac9
+  offset: 280
+}
+member {
+  id: 0xf817b513
+  name: "dpms"
+  type_id: 0x6720d32f
+  offset: 12320
+}
+member {
+  id: 0xf85e12a9
+  name: "dpms"
+  type_id: 0x2e8c7bd9
+}
+member {
+  id: 0xf87ca09c
+  name: "dpms"
+  type_id: 0x0c3e4ee6
+}
+member {
+  id: 0xf87d5a68
+  name: "dpms"
+  type_id: 0x0dc4baf0
+}
+member {
+  id: 0xf8989279
+  name: "dpms"
+  type_id: 0xe8034002
+  offset: 1008
+}
+member {
+  id: 0xa362e1f2
+  name: "dpms_property"
+  type_id: 0x2a670b41
+  offset: 5952
+}
+member {
+  id: 0x297dd07a
+  name: "dport"
+  type_id: 0x7584e7da
+  offset: 256
+}
+member {
+  id: 0x297dd0d1
+  name: "dport"
+  type_id: 0x7584e7da
+}
+member {
+  id: 0xfe8a89a5
+  name: "dport_mask"
+  type_id: 0x7584e7da
+  offset: 272
+}
+member {
+  id: 0x0ea1bfc7
+  name: "dport_range"
+  type_id: 0x3e79e71f
+  offset: 1056
+}
+member {
+  id: 0x535fdeda
+  name: "dq_count"
+  type_id: 0x74d29cf1
+  offset: 928
+}
+member {
+  id: 0x536e83d7
+  name: "dq_count"
+  type_id: 0x4585663f
+  offset: 12512
+}
+member {
+  id: 0xc20b92a6
+  name: "dq_dirty"
+  type_id: 0xd3c80119
+  offset: 384
+}
+member {
+  id: 0x8fbe1590
+  name: "dq_dqb"
+  type_id: 0x18b59e5b
+  offset: 1216
+}
+member {
+  id: 0xf8bb696c
+  name: "dq_dqb_lock"
+  type_id: 0xf313e71a
+  offset: 896
+}
+member {
+  id: 0xbad2d986
+  name: "dq_flags"
+  type_id: 0x33756485
+  offset: 1152
+}
+member {
+  id: 0xa21aba41
+  name: "dq_free"
+  type_id: 0xd3c80119
+  offset: 256
+}
+member {
+  id: 0xf0de3702
+  name: "dq_hash"
+  type_id: 0x49a73111
+}
+member {
+  id: 0x159eaff6
+  name: "dq_id"
+  type_id: 0x508a987d
+  offset: 1024
+}
+member {
+  id: 0xb3454cf0
+  name: "dq_inuse"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0x4870cd96
+  name: "dq_lock"
+  type_id: 0xa7c362b0
+  offset: 512
+}
+member {
+  id: 0x4be0862b
+  name: "dq_off"
+  type_id: 0x27a7c613
+  offset: 1088
+}
+member {
+  id: 0x10c97e90
+  name: "dq_op"
+  type_id: 0x3dd07f10
+  offset: 448
+}
+member {
+  id: 0x9f508694
+  name: "dq_sb"
+  type_id: 0x26ee682a
+  offset: 960
+}
+member {
+  id: 0xdae271b1
+  name: "dqb_bhardlimit"
+  type_id: 0x6b98fc5d
+}
+member {
+  id: 0x19616f8a
+  name: "dqb_bsoftlimit"
+  type_id: 0x6b98fc5d
+  offset: 64
+}
+member {
+  id: 0xcfc394d4
+  name: "dqb_btime"
+  type_id: 0x865acc96
+  offset: 448
+}
+member {
+  id: 0x33406084
+  name: "dqb_curinodes"
+  type_id: 0x6b98fc5d
+  offset: 384
+}
+member {
+  id: 0xaafb29a3
+  name: "dqb_curspace"
+  type_id: 0x6b98fc5d
+  offset: 128
+}
+member {
+  id: 0x115e672d
+  name: "dqb_ihardlimit"
+  type_id: 0x6b98fc5d
+  offset: 256
+}
+member {
+  id: 0x442bbd24
+  name: "dqb_isoftlimit"
+  type_id: 0x6b98fc5d
+  offset: 320
+}
+member {
+  id: 0x9b945d6d
+  name: "dqb_itime"
+  type_id: 0x865acc96
+  offset: 512
+}
+member {
+  id: 0xa161f6cc
+  name: "dqb_rsvspace"
+  type_id: 0x6b98fc5d
+  offset: 192
+}
+member {
+  id: 0x03c6a3bb
+  name: "dqi_bgrace"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0x5abab5f6
+  name: "dqi_dirty_list"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0x21a42924
+  name: "dqi_flags"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0x20d96c9a
+  name: "dqi_fmt_id"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x4c9cbc41
+  name: "dqi_format"
+  type_id: 0x06e9e1f4
+}
+member {
+  id: 0x0d03d1ca
+  name: "dqi_igrace"
+  type_id: 0x4585663f
+  offset: 352
+}
+member {
+  id: 0xc056064d
+  name: "dqi_max_ino_limit"
+  type_id: 0x6b98fc5d
+  offset: 448
+}
+member {
+  id: 0xda949563
+  name: "dqi_max_spc_limit"
+  type_id: 0x6b98fc5d
+  offset: 384
+}
+member {
+  id: 0xf97c2c47
+  name: "dqi_priv"
+  type_id: 0x18bd6530
+  offset: 512
+}
+member {
+  id: 0x4faa329a
+  name: "dqio_sem"
+  type_id: 0x28b9ec9a
+  offset: 64
+}
+member {
+  id: 0xbbe5188a
+  name: "dql"
+  type_id: 0x33fed362
+  offset: 2048
+}
+member {
+  id: 0xeca9acd6
+  name: "dr_set"
+  type_id: 0x2e4001ea
+  offset: 64
+}
+member {
+  id: 0xac728d68
+  name: "drain_active"
+  type_id: 0x4585663f
+  offset: 260
+  bitsize: 1
+}
+member {
+  id: 0xd4b64bd1
+  name: "drain_delay"
+  type_id: 0x6720d32f
+  offset: 3392
+}
+member {
+  id: 0x9e87ea4a
+  name: "drain_disabled"
+  type_id: 0x4585663f
+  offset: 261
+  bitsize: 1
+}
+member {
+  id: 0x87a903a5
+  name: "drain_next"
+  type_id: 0x4585663f
+  offset: 257
+  bitsize: 1
+}
+member {
+  id: 0x83a02723
+  name: "drain_wait"
+  type_id: 0x03913382
+  offset: 5632
+}
+member {
+  id: 0x0022ce3c
+  name: "drive_strength"
+  type_id: 0x4585663f
+  offset: 12032
+}
+member {
+  id: 0xd40cbfed
+  name: "driver"
+  type_id: 0x42201dce
+  offset: 160
+}
+member {
+  id: 0xd414407c
+  name: "driver"
+  type_id: 0x5adf57ae
+  offset: 32
+}
+member {
+  id: 0xd42e583c
+  name: "driver"
+  type_id: 0x60ca2c23
+}
+member {
+  id: 0xd44dce66
+  name: "driver"
+  type_id: 0x0357d2dd
+  offset: 58240
+}
+member {
+  id: 0xd45092fb
+  name: "driver"
+  type_id: 0x1e0822f2
+  offset: 192
+}
+member {
+  id: 0xd452c872
+  name: "driver"
+  type_id: 0x1c50c4ad
+  offset: 896
+}
+member {
+  id: 0xd464c7d1
+  name: "driver"
+  type_id: 0x2a52de6b
+  offset: 1024
+}
+member {
+  id: 0xd467c584
+  name: "driver"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0xd47519de
+  name: "driver"
+  type_id: 0x3b845f97
+  offset: 3072
+}
+member {
+  id: 0xd477fd9a
+  name: "driver"
+  type_id: 0x396f8ae8
+}
+member {
+  id: 0xd47ca86a
+  name: "driver"
+  type_id: 0x3232d45e
+  offset: 768
+}
+member {
+  id: 0xd47cf744
+  name: "driver"
+  type_id: 0x3267a784
+  offset: 1408
+}
+member {
+  id: 0xd47cf8c1
+  name: "driver"
+  type_id: 0x3267a784
+  offset: 1088
+}
+member {
+  id: 0xd47d4689
+  name: "driver"
+  type_id: 0x33d50b40
+  offset: 384
+}
+member {
+  id: 0xd47f7e5d
+  name: "driver"
+  type_id: 0x31e58fe0
+  offset: 128
+}
+member {
+  id: 0xd4ad449b
+  name: "driver"
+  type_id: 0xe3de788c
+  offset: 960
+}
+member {
+  id: 0xd4ad451a
+  name: "driver"
+  type_id: 0xe3de788c
+  offset: 576
+}
+member {
+  id: 0xd4ad468f
+  name: "driver"
+  type_id: 0xe3de788c
+  offset: 1536
+}
+member {
+  id: 0xd4ad4a11
+  name: "driver"
+  type_id: 0xe3de788c
+  offset: 640
+}
+member {
+  id: 0xd4ad4b1f
+  name: "driver"
+  type_id: 0xe3de788c
+  offset: 448
+}
+member {
+  id: 0xd4ad4c68
+  name: "driver"
+  type_id: 0xe3de788c
+}
+member {
+  id: 0xd4ad4cc3
+  name: "driver"
+  type_id: 0xe3de788c
+  offset: 256
+}
+member {
+  id: 0xd4ad4dfa
+  name: "driver"
+  type_id: 0xe3de788c
+  offset: 384
+}
+member {
+  id: 0xae188906
+  name: "driver_block_list"
+  type_id: 0x3e6239e1
+  offset: 384
+}
+member {
+  id: 0x6d08a251
+  name: "driver_data"
+  type_id: 0x42af4f5c
+  offset: 192
+}
+member {
+  id: 0x6d08a35a
+  name: "driver_data"
+  type_id: 0x42af4f5c
+  offset: 128
+}
+member {
+  id: 0x6d08aa33
+  name: "driver_data"
+  type_id: 0x42af4f5c
+  offset: 256
+}
+member {
+  id: 0x6d08ae79
+  name: "driver_data"
+  type_id: 0x42af4f5c
+  offset: 64
+}
+member {
+  id: 0x6d0f8d8a
+  name: "driver_data"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x6d4d92c8
+  name: "driver_data"
+  type_id: 0x079edd79
+  offset: 128
+}
+member {
+  id: 0x6d52b01c
+  name: "driver_data"
+  type_id: 0x18bd6530
+  offset: 768
+}
+member {
+  id: 0x6d52b041
+  name: "driver_data"
+  type_id: 0x18bd6530
+  offset: 960
+}
+member {
+  id: 0x6d52b05c
+  name: "driver_data"
+  type_id: 0x18bd6530
+  offset: 5568
+}
+member {
+  id: 0x6d52b07b
+  name: "driver_data"
+  type_id: 0x18bd6530
+  offset: 192
+}
+member {
+  id: 0x6d52b134
+  name: "driver_data"
+  type_id: 0x18bd6530
+  offset: 5632
+}
+member {
+  id: 0x6d52b170
+  name: "driver_data"
+  type_id: 0x18bd6530
+  offset: 128
+}
+member {
+  id: 0x6d52b896
+  name: "driver_data"
+  type_id: 0x18bd6530
+  offset: 61696
+}
+member {
+  id: 0x6d52b8b2
+  name: "driver_data"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0x6d52b920
+  name: "driver_data"
+  type_id: 0x18bd6530
+  offset: 384
+}
+member {
+  id: 0x6d52ba36
+  name: "driver_data"
+  type_id: 0x18bd6530
+  offset: 1984
+}
+member {
+  id: 0x6d52ba76
+  name: "driver_data"
+  type_id: 0x18bd6530
+  offset: 1216
+}
+member {
+  id: 0x6d52bc53
+  name: "driver_data"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0x6d52bf30
+  name: "driver_data"
+  type_id: 0x18bd6530
+  offset: 2048
+}
+member {
+  id: 0x6d52bfc5
+  name: "driver_data"
+  type_id: 0x18bd6530
+  offset: 448
+}
+member {
+  id: 0x6d731cb1
+  name: "driver_data"
+  type_id: 0x391f15ea
+  offset: 1792
+}
+member {
+  id: 0x6d79728e
+  name: "driver_data"
+  type_id: 0x33756485
+  offset: 704
+}
+member {
+  id: 0x853c663f
+  name: "driver_features"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0x853c6753
+  name: "driver_features"
+  type_id: 0xc9082b19
+  offset: 768
+}
+member {
+  id: 0x853c68ad
+  name: "driver_features"
+  type_id: 0xc9082b19
+  offset: 1472
+}
+member {
+  id: 0x1efb72d7
+  name: "driver_flags"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x5e2be944
+  name: "driver_info"
+  type_id: 0x42af4f5c
+  offset: 192
+}
+member {
+  id: 0x5e2beb6a
+  name: "driver_info"
+  type_id: 0x42af4f5c
+  offset: 1536
+}
+member {
+  id: 0x5e589542
+  name: "driver_info"
+  type_id: 0x31d242e7
+  offset: 128
+}
+member {
+  id: 0x3f6b1d8c
+  name: "driver_input_lock"
+  type_id: 0x6e3b7d7f
+  offset: 50752
+}
+member {
+  id: 0xee864cc4
+  name: "driver_list"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0xdbbc115d
+  name: "driver_managed_dma"
+  type_id: 0x6d7f5ff6
+  offset: 2560
+}
+member {
+  id: 0xdbbc13d3
+  name: "driver_managed_dma"
+  type_id: 0x6d7f5ff6
+  offset: 1664
+}
+member {
+  id: 0xdbbc170f
+  name: "driver_managed_dma"
+  type_id: 0x6d7f5ff6
+  offset: 1864
+}
+member {
+  id: 0xb3c8d0ce
+  name: "driver_max_VFs"
+  type_id: 0x914dbfdc
+  offset: 272
+}
+member {
+  id: 0xf415f646
+  name: "driver_name"
+  type_id: 0x3e10b518
+  offset: 128
+}
+member {
+  id: 0xf415f74d
+  name: "driver_name"
+  type_id: 0x3e10b518
+  offset: 192
+}
+member {
+  id: 0xf415f94a
+  name: "driver_name"
+  type_id: 0x3e10b518
+  offset: 7872
+}
+member {
+  id: 0xf415fb65
+  name: "driver_name"
+  type_id: 0x3e10b518
+  offset: 64
+}
+member {
+  id: 0xf47131f4
+  name: "driver_name"
+  type_id: 0x5adf57ae
+  offset: 384
+}
+member {
+  id: 0x09f1f71e
+  name: "driver_override"
+  type_id: 0x3e10b518
+  offset: 25856
+}
+member {
+  id: 0x09f1f745
+  name: "driver_override"
+  type_id: 0x3e10b518
+  offset: 7808
+}
+member {
+  id: 0x09f1f94d
+  name: "driver_override"
+  type_id: 0x3e10b518
+  offset: 9280
+}
+member {
+  id: 0x09f1fc0a
+  name: "driver_override"
+  type_id: 0x3e10b518
+  offset: 7616
+}
+member {
+  id: 0x09f1fe6b
+  name: "driver_override"
+  type_id: 0x3e10b518
+  offset: 7936
+}
+member {
+  id: 0xe49f62ad
+  name: "driver_priv"
+  type_id: 0x18bd6530
+  offset: 448
+}
+member {
+  id: 0xe49f6571
+  name: "driver_priv"
+  type_id: 0x18bd6530
+  offset: 256
+}
+member {
+  id: 0xe49f68ac
+  name: "driver_priv"
+  type_id: 0x18bd6530
+  offset: 1088
+}
+member {
+  id: 0x2f1650fa
+  name: "driver_private"
+  type_id: 0x18bd6530
+  offset: 1472
+}
+member {
+  id: 0x2f165559
+  name: "driver_private"
+  type_id: 0x18bd6530
+  offset: 1408
+}
+member {
+  id: 0xbb66fad9
+  name: "driver_state"
+  type_id: 0x18bd6530
+  offset: 1216
+}
+member {
+  id: 0x50089098
+  name: "driver_status"
+  type_id: 0xe62ebf07
+  offset: 864
+}
+member {
+  id: 0x502787db
+  name: "driver_status"
+  type_id: 0xc93e017b
+  offset: 560
+}
+member {
+  id: 0x8cc1f8e4
+  name: "driver_tstamp"
+  type_id: 0x399c459b
+  offset: 6528
+}
+member {
+  id: 0xd759fe1e
+  name: "driver_type"
+  type_id: 0x60f31502
+  offset: 8896
+}
+member {
+  id: 0x922207d0
+  name: "drivers"
+  type_id: 0xc4d82b11
+  offset: 32
+}
+member {
+  id: 0x12f21060
+  name: "drivers_autoprobe"
+  type_id: 0x4585663f
+  offset: 3136
+  bitsize: 1
+}
+member {
+  id: 0x97eace38
+  name: "drivers_autoprobe"
+  type_id: 0x6d7f5ff6
+  offset: 960
+}
+member {
+  id: 0xd57dfc23
+  name: "drivers_dir"
+  type_id: 0x23f09c34
+  offset: 832
+}
+member {
+  id: 0x375fc1ed
+  name: "drivers_kset"
+  type_id: 0x1457cd38
+  offset: 1856
+}
+member {
+  id: 0x92130897
+  name: "drm"
+  type_id: 0x019a878e
+}
+member {
+  id: 0x924a1eab
+  name: "drm"
+  type_id: 0x588cbbed
+}
+member {
+  id: 0xf21ad3f0
+  name: "drop"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0xf2727b31
+  name: "drop"
+  type_id: 0x2d2b5fad
+  offset: 512
+}
+member {
+  id: 0x3b5f3914
+  name: "drop_endpoint"
+  type_id: 0x2faac623
+  offset: 256
+}
+member {
+  id: 0x3b5f3e3d
+  name: "drop_endpoint"
+  type_id: 0x2faac623
+  offset: 2048
+}
+member {
+  id: 0xda291e19
+  name: "drop_inode"
+  type_id: 0x2c485866
+  offset: 320
+}
+member {
+  id: 0x53b34af9
+  name: "drop_item"
+  type_id: 0x0d890895
+  offset: 256
+}
+member {
+  id: 0x374bffa6
+  name: "drop_link"
+  type_id: 0x0f961e72
+  offset: 128
+}
+member {
+  id: 0x00449fae
+  name: "drop_ns"
+  type_id: 0x0f3dfb90
+  offset: 320
+}
+member {
+  id: 0x0bc63dc4
+  name: "drop_unicast_in_l2_multicast"
+  type_id: 0x0faae5b1
+  offset: 1184
+}
+member {
+  id: 0xe41ce71b
+  name: "drop_unsolicited_na"
+  type_id: 0x0faae5b1
+  offset: 1376
+}
+member {
+  id: 0xcc3805c6
+  name: "dropped"
+  type_id: 0x33756485
+  offset: 768
+}
+member {
+  id: 0xcc4efcb4
+  name: "dropped"
+  type_id: 0x4585663f
+  offset: 1920
+}
+member {
+  id: 0xf5732422
+  name: "dropped_events"
+  type_id: 0x299c4193
+  offset: 1216
+}
+member {
+  id: 0x09b19038
+  name: "drops"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x09b19d5a
+  name: "drops"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0xb141f30f
+  name: "drv"
+  type_id: 0x09319f13
+  offset: 2432
+}
+member {
+  id: 0xb14afb27
+  name: "drv"
+  type_id: 0x023b50cb
+  offset: 8064
+}
+member {
+  id: 0xb150f7c5
+  name: "drv"
+  type_id: 0x1830dd64
+}
+member {
+  id: 0xb1ab1960
+  name: "drv"
+  type_id: 0xe3de788c
+}
+member {
+  id: 0xb1ab19cb
+  name: "drv"
+  type_id: 0xe3de788c
+  offset: 256
+}
+member {
+  id: 0x8fa864d8
+  name: "drv_data"
+  type_id: 0x18bd6530
+  offset: 128
+}
+member {
+  id: 0x8fa86c88
+  name: "drv_data"
+  type_id: 0x18bd6530
+  offset: 384
+}
+member {
+  id: 0x4a516b32
+  name: "drv_groups"
+  type_id: 0x06433852
+  offset: 320
+}
+member {
+  id: 0x0a3a8a02
+  name: "drv_mutex"
+  type_id: 0xa7c362b0
+  offset: 2496
+}
+member {
+  id: 0x20b4d470
+  name: "drv_priv"
+  type_id: 0x18bd6530
+  offset: 576
+}
+member {
+  id: 0xe18252ff
+  name: "drv_type"
+  type_id: 0x5d8155a5
+  offset: 144
+}
+member {
+  id: 0xe1f68161
+  name: "drv_type"
+  type_id: 0x295c7202
+  offset: 6280
+}
+member {
+  id: 0x7020bc06
+  name: "drvdata"
+  type_id: 0x18bd6530
+  offset: 6336
+}
+member {
+  id: 0x7020be32
+  name: "drvdata"
+  type_id: 0x18bd6530
+  offset: 192
+}
+member {
+  id: 0xacd4449f
+  name: "drvpriv"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0x51e2015b
+  name: "drvwrap"
+  type_id: 0x3c6b8341
+  offset: 896
+}
+member {
+  id: 0xb5b01443
+  name: "dsa"
+  type_id: 0x0a5c3627
+}
+member {
+  id: 0x3c3a7c4f
+  name: "dsc"
+  type_id: 0x0155bbcc
+  offset: 7808
+}
+member {
+  id: 0x402e95a7
+  name: "dsc_cap"
+  type_id: 0xc5cac4c8
+  offset: 672
+}
+member {
+  id: 0xf98dd299
+  name: "dsc_version"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x4596c27c
+  name: "dsc_version_major"
+  type_id: 0x295c7202
+  offset: 1016
+}
+member {
+  id: 0xbd9a4039
+  name: "dsc_version_minor"
+  type_id: 0x295c7202
+  offset: 1008
+}
+member {
+  id: 0xd39d535a
+  name: "dsd_bitrev"
+  type_id: 0x6d7f5ff6
+  offset: 840
+}
+member {
+  id: 0xc68d6012
+  name: "dsd_dop"
+  type_id: 0x6d7f5ff6
+  offset: 832
+}
+member {
+  id: 0xc6d7422d
+  name: "dsd_dop"
+  type_id: 0x375c29e3
+  offset: 1408
+}
+member {
+  id: 0x05895873
+  name: "dsd_raw"
+  type_id: 0x6d7f5ff6
+  offset: 848
+}
+member {
+  id: 0x3a026cf2
+  name: "dsn"
+  type_id: 0x74d29cf1
+  offset: 608
+}
+member {
+  id: 0xbf3c7083
+  name: "dsp_load"
+  type_id: 0x2fe9613c
+  offset: 640
+}
+member {
+  id: 0x7d8eb982
+  name: "dsp_loaded"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0x7d8ebaa3
+  name: "dsp_loaded"
+  type_id: 0x4585663f
+  offset: 9952
+}
+member {
+  id: 0x51fefdf1
+  name: "dsp_status"
+  type_id: 0x2fc57d27
+  offset: 576
+}
+member {
+  id: 0x3913e589
+  name: "dsr"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x3992ebe5
+  name: "dsr"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x39bdc394
+  name: "dsr"
+  type_id: 0xc9082b19
+  offset: 12128
+}
+member {
+  id: 0x1dff11a3
+  name: "dsr_imp"
+  type_id: 0x4585663f
+  offset: 324
+  bitsize: 1
+}
+member {
+  id: 0x90ad81e0
+  name: "dsr_req"
+  type_id: 0x6720d32f
+  offset: 12096
+}
+member {
+  id: 0xbb13d2b4
+  name: "dst"
+  type_id: 0xe276adef
+  offset: 32
+}
+member {
+  id: 0xbb13d60c
+  name: "dst"
+  type_id: 0xe276adef
+  offset: 96
+}
+member {
+  id: 0xbb38a5d0
+  name: "dst"
+  type_id: 0xc9082b19
+  offset: 288
+}
+member {
+  id: 0xbb38a968
+  name: "dst"
+  type_id: 0xc9082b19
+  offset: 7712
+}
+member {
+  id: 0xbb476824
+  name: "dst"
+  type_id: 0xb6c106c1
+}
+member {
+  id: 0xbb57bdd3
+  name: "dst"
+  type_id: 0xa61911b2
+  offset: 160
+}
+member {
+  id: 0xbb57be4b
+  name: "dst"
+  type_id: 0xa61911b2
+  offset: 264
+}
+member {
+  id: 0xbb60e850
+  name: "dst"
+  type_id: 0x914dbfdc
+  offset: 112
+}
+member {
+  id: 0xbb84237b
+  name: "dst"
+  type_id: 0x7584e7da
+  offset: 16
+}
+member {
+  id: 0xbb928e49
+  name: "dst"
+  type_id: 0x63276b43
+}
+member {
+  id: 0xbb9c8500
+  name: "dst"
+  type_id: 0x6d25e07f
+  offset: 128
+}
+member {
+  id: 0xbbb264ba
+  name: "dst"
+  type_id: 0x43c73e81
+  offset: 896
+}
+member {
+  id: 0xbbe06e11
+  name: "dst"
+  type_id: 0x11cffa09
+  offset: 192
+}
+member {
+  id: 0xbbe06faa
+  name: "dst"
+  type_id: 0x11cffa09
+  offset: 576
+}
+member {
+  id: 0xbbe3f420
+  name: "dst"
+  type_id: 0x1259e377
+  offset: 64
+}
+member {
+  id: 0xbbf78102
+  name: "dst"
+  type_id: 0x0625c03a
+  offset: 160
+}
+member {
+  id: 0x59edf322
+  name: "dst_addr"
+  type_id: 0xbdd18903
+  offset: 128
+}
+member {
+  id: 0xe0ef193e
+  name: "dst_addr_width"
+  type_id: 0x5258ec21
+  offset: 224
+}
+member {
+  id: 0x3adb13c8
+  name: "dst_addr_widths"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x3adb1cd8
+  name: "dst_addr_widths"
+  type_id: 0xc9082b19
+  offset: 1184
+}
+member {
+  id: 0x6de7cfa7
+  name: "dst_cache"
+  type_id: 0x8eea2d16
+  offset: 448
+}
+member {
+  id: 0xbce6c531
+  name: "dst_cid"
+  type_id: 0x78f4e574
+  offset: 64
+}
+member {
+  id: 0x24a0666b
+  name: "dst_csets"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0x0ea7d2ae
+  name: "dst_icg"
+  type_id: 0xf435685e
+  offset: 128
+}
+member {
+  id: 0x04066230
+  name: "dst_inc"
+  type_id: 0x6d7f5ff6
+  offset: 168
+}
+member {
+  id: 0x35da4011
+  name: "dst_len"
+  type_id: 0xb3e7bac9
+  offset: 8
+}
+member {
+  id: 0xdc8951b9
+  name: "dst_mac"
+  type_id: 0xabf64f28
+  offset: 160
+}
+member {
+  id: 0xb25316c3
+  name: "dst_maxburst"
+  type_id: 0xc9082b19
+  offset: 288
+}
+member {
+  id: 0xf2890bb2
+  name: "dst_mutex"
+  type_id: 0xa7c362b0
+  offset: 640
+}
+member {
+  id: 0xa524d57c
+  name: "dst_needed"
+  type_id: 0x914dbfdc
+  offset: 20
+  bitsize: 1
+}
+member {
+  id: 0xf8fc9a09
+  name: "dst_nocount"
+  type_id: 0x295c7202
+  offset: 1097
+  bitsize: 1
+}
+member {
+  id: 0xf5afa254
+  name: "dst_nopolicy"
+  type_id: 0x295c7202
+  offset: 1098
+  bitsize: 1
+}
+member {
+  id: 0xe499fa79
+  name: "dst_pending_confirm"
+  type_id: 0xb3e7bac9
+  offset: 20
+  bitsize: 1
+}
+member {
+  id: 0xe56eac1e
+  name: "dst_port"
+  type_id: 0x914dbfdc
+  offset: 144
+}
+member {
+  id: 0xe5f4445c
+  name: "dst_port"
+  type_id: 0x0baa70a7
+  offset: 160
+}
+member {
+  id: 0xcc87b2e1
+  name: "dst_port_window_size"
+  type_id: 0xc9082b19
+  offset: 352
+}
+member {
+  id: 0x12a60912
+  name: "dst_prog"
+  type_id: 0x3382a638
+  offset: 1024
+}
+member {
+  id: 0xcdacfab5
+  name: "dst_reg"
+  type_id: 0xb3e7bac9
+  offset: 8
+  bitsize: 4
+}
+member {
+  id: 0x1f0ebced
+  name: "dst_sgl"
+  type_id: 0x6d7f5ff6
+  offset: 184
+}
+member {
+  id: 0xf8fbf216
+  name: "dst_start"
+  type_id: 0xe02e14d6
+  offset: 64
+}
+member {
+  id: 0xb420abbe
+  name: "dst_trampoline"
+  type_id: 0x056e14dc
+  offset: 1088
+}
+member {
+  id: 0x156c52a8
+  name: "dst_type"
+  type_id: 0xb3e7bac9
+  offset: 312
+}
+member {
+  id: 0x156c5692
+  name: "dst_type"
+  type_id: 0xb3e7bac9
+  offset: 208
+}
+member {
+  id: 0x0421891a
+  name: "dstats"
+  type_id: 0x2bcf25d1
+}
+member {
+  id: 0x58e808e0
+  name: "dt"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0xdfa39fbf
+  name: "dt_free_map"
+  type_id: 0x0f33f4ac
+  offset: 320
+}
+member {
+  id: 0x7f8e5830
+  name: "dt_maps"
+  type_id: 0xd3c80119
+  offset: 384
+}
+member {
+  id: 0x1545ec7a
+  name: "dt_node_to_map"
+  type_id: 0x2c71497c
+  offset: 256
+}
+member {
+  id: 0x7f05c2c5
+  name: "dtexts"
+  type_id: 0x0bb0c019
+  offset: 64
+}
+member {
+  id: 0x3f016a9f
+  name: "dtor"
+  type_id: 0xfe711d43
+  offset: 128
+}
+member {
+  id: 0xc5d64475
+  name: "dtor_kfunc_tab"
+  type_id: 0x36f45072
+  offset: 960
+}
+member {
+  id: 0x651b018b
+  name: "dtors"
+  type_id: 0xdddc2873
+  offset: 32
+}
+member {
+  id: 0x8a04a2d8
+  name: "dtr"
+  type_id: 0x295c7202
+  offset: 8
+  bitsize: 1
+}
+member {
+  id: 0x8a04a780
+  name: "dtr"
+  type_id: 0x295c7202
+  offset: 16
+  bitsize: 1
+}
+member {
+  id: 0xb06d8177
+  name: "dtr"
+  type_id: 0x6d7f5ff6
+}
+member {
+  id: 0xc9708f00
+  name: "dtr_rts"
+  type_id: 0x0f70080a
+  offset: 64
+}
+member {
+  id: 0xc972e404
+  name: "dtr_rts"
+  type_id: 0x0d14f575
+  offset: 512
+}
+member {
+  id: 0xc9730947
+  name: "dtr_rts"
+  type_id: 0x0cf07e3c
+  offset: 3904
+}
+member {
+  id: 0x8c9f51a9
+  name: "dual_link"
+  type_id: 0x6d7f5ff6
+  offset: 96
+}
+member {
+  id: 0x7dd1fe72
+  name: "dumb_create"
+  type_id: 0x2ce7bbdc
+  offset: 960
+}
+member {
+  id: 0xea8e27e4
+  name: "dumb_destroy"
+  type_id: 0x2ce4a9f3
+  offset: 1088
+}
+member {
+  id: 0x883ab1b9
+  name: "dumb_map_offset"
+  type_id: 0x2ce4a441
+  offset: 1024
+}
+member {
+  id: 0x1a8b8780
+  name: "dummy"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x1ac29b88
+  name: "dummy"
+  type_id: 0x2e3bacd4
+  offset: 448
+}
+member {
+  id: 0x1ad262cc
+  name: "dummy"
+  type_id: 0x3ecd56d1
+  offset: 192
+}
+member {
+  id: 0x1ae9d53c
+  name: "dummy"
+  type_id: 0x0570ebcb
+  offset: 1984
+}
+member {
+  id: 0xd22ca869
+  name: "dummy_data"
+  type_id: 0x4585663f
+  offset: 576
+  bitsize: 1
+}
+member {
+  id: 0x13a85d35
+  name: "dummy_read_page"
+  type_id: 0x06835e9c
+}
+member {
+  id: 0xf20c003b
+  name: "dummy_rx"
+  type_id: 0x18bd6530
+  offset: 12032
+}
+member {
+  id: 0xc2a8860c
+  name: "dummy_tx"
+  type_id: 0x18bd6530
+  offset: 12096
+}
+member {
+  id: 0x5272cd4d
+  name: "dummy_ubuf"
+  type_id: 0x2abdbda9
+  offset: 6464
+}
+member {
+  id: 0x0a5f5371
+  name: "dump"
+  type_id: 0x0c3ae02c
+  offset: 320
+}
+member {
+  id: 0x0a5faf30
+  name: "dump"
+  type_id: 0x0cc8a431
+  offset: 128
+}
+member {
+  id: 0x0a7c4d32
+  name: "dump"
+  type_id: 0x2f2bcae6
+  offset: 768
+}
+member {
+  id: 0x0a7c7b3e
+  name: "dump"
+  type_id: 0x2f1d9bf5
+  offset: 960
+}
+member {
+  id: 0x0a7e5e7c
+  name: "dump"
+  type_id: 0x2d32ee3e
+  offset: 1216
+}
+member {
+  id: 0x0a7edde6
+  name: "dump"
+  type_id: 0x2db75163
+  offset: 64
+}
+member {
+  id: 0x0a7ee283
+  name: "dump"
+  type_id: 0x2d883419
+  offset: 64
+}
+member {
+  id: 0x0a7eefa0
+  name: "dump"
+  type_id: 0x2d883419
+  offset: 128
+}
+member {
+  id: 0x0a7ef807
+  name: "dump"
+  type_id: 0x2d9d49f8
+  offset: 512
+}
+member {
+  id: 0x29edb505
+  name: "dump_conf"
+  type_id: 0x425c572c
+  offset: 7808
+}
+member {
+  id: 0xc82958b0
+  name: "dump_segments"
+  type_id: 0xd3c80119
+  offset: 10176
+}
+member {
+  id: 0xa06da4bc
+  name: "dump_size"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0x031e119e
+  name: "dump_stats"
+  type_id: 0x2f2a0ed9
+  offset: 1024
+}
+member {
+  id: 0x031e17b9
+  name: "dump_stats"
+  type_id: 0x2f288c5c
+  offset: 832
+}
+member {
+  id: 0xa92e0890
+  name: "dump_vendor_regs"
+  type_id: 0x0d21fdc9
+  offset: 1856
+}
+member {
+  id: 0xfc3fad02
+  name: "dumper"
+  type_id: 0x45c9d199
+  offset: 64
+}
+member {
+  id: 0x7dac642e
+  name: "dumpit"
+  type_id: 0x2d883419
+  offset: 128
+}
+member {
+  id: 0x7dac690d
+  name: "dumpit"
+  type_id: 0x2d883419
+  offset: 64
+}
+member {
+  id: 0x7dad3f8f
+  name: "dumpit"
+  type_id: 0x2cd29ed4
+  offset: 192
+}
+member {
+  id: 0xa374bfc0
+  name: "dun_bytes"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x472c7f8e
+  name: "dup"
+  type_id: 0x2f2aa245
+  offset: 64
+}
+member {
+  id: 0x74874671
+  name: "dup_xol_addr"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x181bdcdf
+  name: "dup_xol_work"
+  type_id: 0xe3222f5b
+}
+member {
+  id: 0x88d9cc44
+  name: "dupl_rcvcnt"
+  type_id: 0x74d29cf1
+  offset: 7712
+}
+member {
+  id: 0x703907cc
+  name: "duplex"
+  type_id: 0xb3e7bac9
+  offset: 112
+}
+member {
+  id: 0x70390fe0
+  name: "duplex"
+  type_id: 0xb3e7bac9
+  offset: 64
+}
+member {
+  id: 0x70edc607
+  name: "duplex"
+  type_id: 0x6720d32f
+  offset: 9440
+}
+member {
+  id: 0x70edcbaf
+  name: "duplex"
+  type_id: 0x6720d32f
+  offset: 320
+}
+member {
+  id: 0x98e4f9e1
+  name: "duplicate"
+  type_id: 0x6d7f5ff6
+  offset: 320
+}
+member {
+  id: 0x296b205c
+  name: "duplicate_crtc_state"
+  type_id: 0x339ebb61
+  offset: 640
+}
+member {
+  id: 0xa7d37f9b
+  name: "duplicate_plane_state"
+  type_id: 0x2a0a605f
+  offset: 832
+}
+member {
+  id: 0xe631c0e0
+  name: "duplicated"
+  type_id: 0x6d7f5ff6
+  offset: 131
+  bitsize: 1
+}
+member {
+  id: 0xe034cb7a
+  name: "duration"
+  type_id: 0x4585663f
+  offset: 608
+}
+member {
+  id: 0xe0976488
+  name: "duration"
+  type_id: 0xe62ebf07
+  offset: 288
+}
+member {
+  id: 0xe097674e
+  name: "duration"
+  type_id: 0xe62ebf07
+  offset: 1024
+}
+member {
+  id: 0xe0b846c5
+  name: "duration"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xd5562c37
+  name: "duty"
+  type_id: 0x7747934c
+  offset: 1312
+}
+member {
+  id: 0xc1236c49
+  name: "duty_cycle"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xc1236c92
+  name: "duty_cycle"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0xc14fb55d
+  name: "duty_cycle"
+  type_id: 0x295c7202
+  offset: 32
+}
+member {
+  id: 0xc1f4c3c6
+  name: "duty_cycle"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0x726a3c29
+  name: "dv_timings_cap"
+  type_id: 0x2dffae1a
+  offset: 640
+}
+member {
+  id: 0xb7618523
+  name: "dvalues"
+  type_id: 0x064d6086
+  offset: 128
+}
+member {
+  id: 0x305ca20b
+  name: "dvfs_possible_from_any_cpu"
+  type_id: 0x6d7f5ff6
+  offset: 5056
+}
+member {
+  id: 0x6f27e8d3
+  name: "dvi_dual"
+  type_id: 0x6d7f5ff6
+  offset: 352
+}
+member {
+  id: 0x32b0d016
+  name: "dvi_i_select_subconnector_property"
+  type_id: 0x2a670b41
+  offset: 7360
+}
+member {
+  id: 0xc411d17c
+  name: "dvi_i_subconnector_property"
+  type_id: 0x2a670b41
+  offset: 7296
+}
+member {
+  id: 0x5afe07a0
+  name: "dwBytesPerInterval"
+  type_id: 0x0baa70a7
+  offset: 32
+}
+member {
+  id: 0x7b985831
+  name: "dwDTERate"
+  type_id: 0x0baa70a7
+}
+member {
+  id: 0x301130d9
+  name: "dword_0"
+  type_id: 0x0baa70a7
+}
+member {
+  id: 0x30f8ec04
+  name: "dword_0"
+  type_id: 0xe276adef
+}
+member {
+  id: 0x72518106
+  name: "dword_1"
+  type_id: 0x0baa70a7
+  offset: 32
+}
+member {
+  id: 0x72b85ddb
+  name: "dword_1"
+  type_id: 0xe276adef
+  offset: 32
+}
+member {
+  id: 0xb27b14f1
+  name: "dword_2"
+  type_id: 0xe276adef
+  offset: 64
+}
+member {
+  id: 0xb292c82c
+  name: "dword_2"
+  type_id: 0x0baa70a7
+  offset: 64
+}
+member {
+  id: 0xecd329ca
+  name: "dword_3"
+  type_id: 0x0baa70a7
+  offset: 96
+}
+member {
+  id: 0x20d980e8
+  name: "dwork"
+  type_id: 0xf1159c31
+  offset: 3136
+}
+member {
+  id: 0x20d98a61
+  name: "dwork"
+  type_id: 0xf1159c31
+  offset: 832
+}
+member {
+  id: 0x20d98eb4
+  name: "dwork"
+  type_id: 0xf1159c31
+  offset: 8064
+}
+member {
+  id: 0x5f6207d0
+  name: "dx"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x9ac4dd8c
+  name: "dxfer_direction"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0xdf573ef5
+  name: "dxfer_len"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x30448525
+  name: "dxferp"
+  type_id: 0x18bd6530
+  offset: 128
+}
+member {
+  id: 0x1b25904f
+  name: "dy"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xd4f73d44
+  name: "dy_eligible"
+  type_id: 0x6d7f5ff6
+  offset: 8
+}
+member {
+  id: 0x0ca6a6a3
+  name: "dying"
+  type_id: 0x295c7202
+  offset: 136
+}
+member {
+  id: 0x0cb031de
+  name: "dying"
+  type_id: 0x3fcbf304
+  offset: 960
+}
+member {
+  id: 0x17afe2c0
+  name: "dying_tasks"
+  type_id: 0xd3c80119
+  offset: 960
+}
+member {
+  id: 0xca5e8958
+  name: "dyn_addr"
+  type_id: 0x295c7202
+  offset: 88
+}
+member {
+  id: 0x99d52cf2
+  name: "dyn_list"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0x3b349498
+  name: "dyn_lock"
+  type_id: 0xf313e71a
+  offset: 256
+}
+member {
+  id: 0xe49c9c74
+  name: "dynamic"
+  type_id: 0x6d7f5ff6
+  offset: 168
+}
+member {
+  id: 0xfc641347
+  name: "dynamic"
+  type_id: 0x4585663f
+  offset: 1032
+  bitsize: 1
+}
+member {
+  id: 0x1b277230
+  name: "dynids"
+  type_id: 0x3077bd6f
+  offset: 2368
+}
+member {
+  id: 0x1b86a2bd
+  name: "dynids"
+  type_id: 0x91a9600d
+  offset: 1728
+}
+member {
+  id: 0x1b86a7a5
+  name: "dynids"
+  type_id: 0x91a9600d
+  offset: 704
+}
+member {
+  id: 0x3bb664e4
+  name: "dynptr"
+  type_id: 0x0f4ad8d3
+}
+member {
+  id: 0x87d95526
+  name: "e"
+  type_id: 0x007e8ce4
+  offset: 32
+}
+member {
+  id: 0x8d6d2188
+  name: "e1000_base_cx"
+  type_id: 0x295c7202
+  offset: 50
+  bitsize: 1
+}
+member {
+  id: 0x1311c4c0
+  name: "e1000_base_lx"
+  type_id: 0x295c7202
+  offset: 49
+  bitsize: 1
+}
+member {
+  id: 0x9b3de412
+  name: "e1000_base_sx"
+  type_id: 0x295c7202
+  offset: 48
+  bitsize: 1
+}
+member {
+  id: 0xddd8f07c
+  name: "e1000_base_t"
+  type_id: 0x295c7202
+  offset: 51
+  bitsize: 1
+}
+member {
+  id: 0x4e671afe
+  name: "e100_base_fx"
+  type_id: 0x295c7202
+  offset: 53
+  bitsize: 1
+}
+member {
+  id: 0x435ea61f
+  name: "e100_base_lx"
+  type_id: 0x295c7202
+  offset: 52
+  bitsize: 1
+}
+member {
+  id: 0x9e22d9d5
+  name: "e10g_base_er"
+  type_id: 0x295c7202
+  offset: 31
+  bitsize: 1
+}
+member {
+  id: 0x1320a37b
+  name: "e10g_base_lr"
+  type_id: 0x295c7202
+  offset: 29
+  bitsize: 1
+}
+member {
+  id: 0xeae779c8
+  name: "e10g_base_lrm"
+  type_id: 0x295c7202
+  offset: 30
+  bitsize: 1
+}
+member {
+  id: 0xe098277b
+  name: "e10g_base_sr"
+  type_id: 0x295c7202
+  offset: 28
+  bitsize: 1
+}
+member {
+  id: 0x3e3c8bce
+  name: "e_base_bx10"
+  type_id: 0x295c7202
+  offset: 54
+  bitsize: 1
+}
+member {
+  id: 0x59832ba9
+  name: "e_base_px"
+  type_id: 0x295c7202
+  offset: 55
+  bitsize: 1
+}
+member {
+  id: 0x27c41378
+  name: "e_cset_node"
+  type_id: 0x5c3c9877
+  offset: 1216
+}
+member {
+  id: 0x2fcdcf1b
+  name: "e_csets"
+  type_id: 0x5c3c9877
+  offset: 6464
+}
+member {
+  id: 0xf9e27450
+  name: "e_freeze"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x8a402643
+  name: "e_gid"
+  type_id: 0xb0ddb211
+}
+member {
+  id: 0x801db84e
+  name: "e_perm"
+  type_id: 0xc93e017b
+  offset: 16
+}
+member {
+  id: 0x8c50076a
+  name: "e_tag"
+  type_id: 0xb0312d5a
+}
+member {
+  id: 0xde1fd452
+  name: "e_uid"
+  type_id: 0xe90b32b7
+}
+member {
+  id: 0xe15cfb15
+  name: "ealg"
+  type_id: 0x05e80097
+  offset: 2688
+}
+member {
+  id: 0x9bff96ae
+  name: "ealgo"
+  type_id: 0x295c7202
+  offset: 56
+}
+member {
+  id: 0x04e0cb81
+  name: "ealgos"
+  type_id: 0xc9082b19
+  offset: 448
+}
+member {
+  id: 0x3b34869d
+  name: "eap_identity_req"
+  type_id: 0x6d7f5ff6
+  offset: 32
+}
+member {
+  id: 0xe563d939
+  name: "earliest_dl"
+  type_id: 0x3b39c1ef
+  offset: 192
+}
+member {
+  id: 0x014c765a
+  name: "early_drop"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0x61d268eb
+  name: "early_init"
+  type_id: 0x2d2c9ff4
+  offset: 832
+}
+member {
+  id: 0xdaa08699
+  name: "early_init"
+  type_id: 0x6d7f5ff6
+  offset: 1152
+  bitsize: 1
+}
+member {
+  id: 0xdaa08a17
+  name: "early_init"
+  type_id: 0x6d7f5ff6
+  offset: 40
+  bitsize: 1
+}
+member {
+  id: 0xea18f79d
+  name: "early_unregister"
+  type_id: 0x0c596e35
+  offset: 192
+}
+member {
+  id: 0xea190c3a
+  name: "early_unregister"
+  type_id: 0x0dad77a5
+  offset: 448
+}
+member {
+  id: 0xea190d53
+  name: "early_unregister"
+  type_id: 0x0da39a23
+  offset: 960
+}
+member {
+  id: 0xea1ba4a4
+  name: "early_unregister"
+  type_id: 0x0f04e7c1
+  offset: 640
+}
+member {
+  id: 0x4989644a
+  name: "ecache_dwork_pending"
+  type_id: 0x6d7f5ff6
+}
+member {
+  id: 0x35b6d5ce
+  name: "ecc"
+  type_id: 0x6d7f5ff6
+  offset: 8
+}
+member {
+  id: 0x79578207
+  name: "ecc"
+  type_id: 0x295c7202
+  offset: 9
+  bitsize: 1
+}
+member {
+  id: 0xd308fa63
+  name: "ecc_notice_size"
+  type_id: 0xd5cc9c9a
+  offset: 448
+}
+member {
+  id: 0xe2170c7c
+  name: "ece"
+  type_id: 0xe8034002
+  offset: 110
+  bitsize: 1
+}
+member {
+  id: 0xd2740022
+  name: "echo"
+  type_id: 0x0f0ac0ac
+  offset: 576
+}
+member {
+  id: 0xda31464b
+  name: "echo_skb"
+  type_id: 0x0bc3e3e1
+  offset: 1600
+}
+member {
+  id: 0xba5eee7f
+  name: "echo_skb_max"
+  type_id: 0x4585663f
+  offset: 1568
+}
+member {
+  id: 0xd4971fcb
+  name: "ed"
+  type_id: 0x2d63ca24
+  offset: 320
+}
+member {
+  id: 0x728403c7
+  name: "edac_check"
+  type_id: 0x0e1f8d92
+  offset: 1728
+}
+member {
+  id: 0x1146bbf2
+  name: "edac_subsys"
+  type_id: 0x03ce74cd
+  offset: 512
+}
+member {
+  id: 0xbe46c513
+  name: "edev"
+  type_id: 0x100a15ee
+}
+member {
+  id: 0xbe46ce0b
+  name: "edev"
+  type_id: 0x100a15ee
+  offset: 512
+}
+member {
+  id: 0x371a0f37
+  name: "edge_handle"
+  type_id: 0xd298e888
+  offset: 33344
+}
+member {
+  id: 0x520d4ba6
+  name: "edge_spinlock"
+  type_id: 0xf313e71a
+  offset: 33280
+}
+member {
+  id: 0x7692e117
+  name: "edges"
+  type_id: 0x585b40a5
+  offset: 1728
+}
+member {
+  id: 0x31c31f3f
+  name: "edid"
+  type_id: 0x2669d715
+  offset: 256
+}
+member {
+  id: 0xabec48fb
+  name: "edid_blob_ptr"
+  type_id: 0x343ebce3
+  offset: 3264
+}
+member {
+  id: 0x96f926dc
+  name: "edid_corrupt"
+  type_id: 0x6d7f5ff6
+  offset: 14720
+}
+member {
+  id: 0x12380e71
+  name: "edid_hdmi_rgb444_dc_modes"
+  type_id: 0x295c7202
+  offset: 384
+}
+member {
+  id: 0xa0b7a587
+  name: "edid_hdmi_ycbcr444_dc_modes"
+  type_id: 0x295c7202
+  offset: 392
+}
+member {
+  id: 0x9d2c5b2f
+  name: "edid_property"
+  type_id: 0x2a670b41
+  offset: 5888
+}
+member {
+  id: 0x61c1eafd
+  name: "edmg"
+  type_id: 0x7690c707
+  offset: 160
+}
+member {
+  id: 0xbcb130f4
+  name: "edmg_cap"
+  type_id: 0x7690c707
+  offset: 672
+}
+member {
+  id: 0x15617db3
+  name: "ee"
+  type_id: 0x9ac2fe3a
+  offset: 1280
+}
+member {
+  id: 0x90a34da9
+  name: "ee_ctrl_mask"
+  type_id: 0x914dbfdc
+  offset: 4032
+}
+member {
+  id: 0xbd4b0af6
+  name: "ee_ctrl_mutex"
+  type_id: 0xa7c362b0
+  offset: 4096
+}
+member {
+  id: 0x1e3195b0
+  name: "ee_drv_mask"
+  type_id: 0x914dbfdc
+  offset: 4048
+}
+member {
+  id: 0xca4b8ab1
+  name: "ee_usr_mask"
+  type_id: 0x914dbfdc
+  offset: 4064
+}
+member {
+  id: 0x3486ee16
+  name: "eedump_len"
+  type_id: 0xe62ebf07
+  offset: 1504
+}
+member {
+  id: 0xdfd0e2e3
+  name: "eee_active"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0x1fc9ddcc
+  name: "eee_broken_modes"
+  type_id: 0xc9082b19
+  offset: 10176
+}
+member {
+  id: 0x4331f46c
+  name: "eee_enabled"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0x7e49fc07
+  name: "eeh_work"
+  type_id: 0x1f3c8679
+  offset: 5184
+}
+member {
+  id: 0x50c14745
+  name: "eeprom"
+  type_id: 0x5c509347
+  offset: 7680
+}
+member {
+  id: 0x9b589369
+  name: "eeprom_len"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x262fa572
+  name: "eetlp_prefix_path"
+  type_id: 0x4585663f
+  offset: 1569
+  bitsize: 1
+}
+member {
+  id: 0x509fe27f
+  name: "effect_owners"
+  type_id: 0xc2031448
+  offset: 1152
+}
+member {
+  id: 0x319cfbc2
+  name: "effective"
+  type_id: 0xb19844ea
+}
+member {
+  id: 0x31f4271e
+  name: "effective"
+  type_id: 0xd9449876
+}
+member {
+  id: 0x6eec14d5
+  name: "effective_affinity"
+  type_id: 0x99caa0ae
+  offset: 256
+}
+member {
+  id: 0x7820c46d
+  name: "effective_flags"
+  type_id: 0xd41e888f
+  offset: 128
+}
+member {
+  id: 0x39726e08
+  name: "effective_speed_hz"
+  type_id: 0xc9082b19
+  offset: 736
+}
+member {
+  id: 0x3e5e79f9
+  name: "effects"
+  type_id: 0x3dad9aa1
+  offset: 1024
+}
+member {
+  id: 0xa9f1f9ba
+  name: "efficiencies_available"
+  type_id: 0x6d7f5ff6
+  offset: 5016
+}
+member {
+  id: 0x22996cc3
+  name: "eg_boundary"
+  type_id: 0x4585663f
+  offset: 7680
+}
+member {
+  id: 0xdd519931
+  name: "egid"
+  type_id: 0xb0ddb211
+  offset: 6144
+}
+member {
+  id: 0xdd519b1a
+  name: "egid"
+  type_id: 0xb0ddb211
+  offset: 192
+}
+member {
+  id: 0x16b864ec
+  name: "egress_block_get"
+  type_id: 0x1906e68f
+  offset: 1280
+}
+member {
+  id: 0x2089f17c
+  name: "egress_block_set"
+  type_id: 0x0c97f018
+  offset: 1152
+}
+member {
+  id: 0x3ac18339
+  name: "eh_abort_handler"
+  type_id: 0x2e0948aa
+  offset: 640
+}
+member {
+  id: 0x61592628
+  name: "eh_abort_list"
+  type_id: 0xd3c80119
+  offset: 896
+}
+member {
+  id: 0xb5d7e379
+  name: "eh_action"
+  type_id: 0x0562c566
+  offset: 1216
+}
+member {
+  id: 0x45007cf9
+  name: "eh_bus_reset_handler"
+  type_id: 0x2e0948aa
+  offset: 832
+}
+member {
+  id: 0x2f532354
+  name: "eh_cmd_q"
+  type_id: 0xd3c80119
+  offset: 1024
+}
+member {
+  id: 0x13687aca
+  name: "eh_deadline"
+  type_id: 0x6720d32f
+  offset: 3584
+}
+member {
+  id: 0xff8a293e
+  name: "eh_device_reset_handler"
+  type_id: 0x2e0948aa
+  offset: 704
+}
+member {
+  id: 0x2bf10965
+  name: "eh_eflags"
+  type_id: 0x6720d32f
+  offset: 1408
+}
+member {
+  id: 0xd80ff95d
+  name: "eh_entry"
+  type_id: 0xd3c80119
+  offset: 64
+}
+member {
+  id: 0x5fea16fd
+  name: "eh_flags"
+  type_id: 0xc9082b19
+  offset: 3968
+}
+member {
+  id: 0x3a43c628
+  name: "eh_host_reset_handler"
+  type_id: 0x2e0948aa
+  offset: 896
+}
+member {
+  id: 0x51bad129
+  name: "eh_noresume"
+  type_id: 0x4585663f
+  offset: 4358
+  bitsize: 1
+}
+member {
+  id: 0x87cff5e1
+  name: "eh_should_retry_cmd"
+  type_id: 0x36c066a0
+  offset: 1984
+}
+member {
+  id: 0xae8a02ed
+  name: "eh_strategy_handler"
+  type_id: 0x0fcb861f
+  offset: 2752
+}
+member {
+  id: 0xf7d3f811
+  name: "eh_target_reset_handler"
+  type_id: 0x2e0948aa
+  offset: 768
+}
+member {
+  id: 0x4b90d295
+  name: "eh_timed_out"
+  type_id: 0x26d9bda3
+  offset: 1920
+}
+member {
+  id: 0xf34ef00c
+  name: "eh_timeout"
+  type_id: 0x4585663f
+  offset: 2752
+}
+member {
+  id: 0xba1da164
+  name: "eh_work"
+  type_id: 0x1f3c8679
+  offset: 4800
+}
+member {
+  id: 0xddd3f7db
+  name: "eh_wq"
+  type_id: 0x13f8b706
+  offset: 4736
+}
+member {
+  id: 0xd974306f
+  name: "ehandler"
+  type_id: 0x1d19a9d5
+  offset: 1152
+}
+member {
+  id: 0xe8a98a46
+  name: "ehash"
+  type_id: 0x00a31be9
+}
+member {
+  id: 0xe1aa6ce2
+  name: "ehash_locks"
+  type_id: 0x3654c061
+  offset: 64
+}
+member {
+  id: 0x4921975c
+  name: "ehash_locks_mask"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0xbd9b2317
+  name: "ehash_mask"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x97fcea8a
+  name: "ehdr"
+  type_id: 0x18bd6530
+  offset: 10752
+}
+member {
+  id: 0xf3eccafa
+  name: "eht_cap"
+  type_id: 0xf02e1c56
+  offset: 472
+}
+member {
+  id: 0xae89106e
+  name: "eht_cap_elem"
+  type_id: 0xc51b2b2c
+  offset: 8
+}
+member {
+  id: 0xc00a1c17
+  name: "eht_mcs_nss_supp"
+  type_id: 0x608c9042
+  offset: 96
+}
+member {
+  id: 0x041e2c61
+  name: "eht_ppe_thres"
+  type_id: 0x5e9b9471
+  offset: 168
+}
+member {
+  id: 0xe65c7be8
+  name: "eir"
+  type_id: 0x3448bb1c
+  offset: 2984
+}
+member {
+  id: 0x98bed34f
+  name: "eld"
+  type_id: 0x3e14faf9
+  offset: 13376
+}
+member {
+  id: 0x03146c3c
+  name: "elem"
+  type_id: 0x18bd6530
+  offset: 192
+}
+member {
+  id: 0xf8485171
+  name: "elem_flags"
+  type_id: 0xedf277ba
+  offset: 320
+}
+member {
+  id: 0x30a4d87e
+  name: "elem_size"
+  type_id: 0x914dbfdc
+  offset: 2656
+}
+member {
+  id: 0x30d3b37c
+  name: "elem_size"
+  type_id: 0xe62ebf07
+  offset: 608
+}
+member {
+  id: 0x30fc95c8
+  name: "elem_size"
+  type_id: 0xc9082b19
+  offset: 992
+}
+member {
+  id: 0x30fc9db4
+  name: "elem_size"
+  type_id: 0xc9082b19
+  offset: 768
+}
+member {
+  id: 0x987d7024
+  name: "elements"
+  type_id: 0x0cbf60eb
+  offset: 128
+}
+member {
+  id: 0x987fdbe2
+  name: "elements"
+  type_id: 0x0e14a6f1
+  offset: 128
+}
+member {
+  id: 0x9b08ff11
+  name: "elems"
+  type_id: 0xe62ebf07
+  offset: 640
+}
+member {
+  id: 0x9b27d70f
+  name: "elems"
+  type_id: 0xc9082b19
+  offset: 960
+}
+member {
+  id: 0x9bab59a9
+  name: "elems"
+  type_id: 0x4585663f
+  offset: 512
+}
+member {
+  id: 0xfb6bbf1c
+  name: "elemsize"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x4a002120
+  name: "elevator"
+  type_id: 0x0798f334
+  offset: 64
+}
+member {
+  id: 0xcc6740a5
+  name: "elevator_alias"
+  type_id: 0x3e10b518
+  offset: 1984
+}
+member {
+  id: 0x520829b9
+  name: "elevator_attrs"
+  type_id: 0x2f8ce7d9
+  offset: 1856
+}
+member {
+  id: 0xb0fa7085
+  name: "elevator_data"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0xead2a3de
+  name: "elevator_features"
+  type_id: 0xcd70b42d
+  offset: 2048
+}
+member {
+  id: 0x438e6148
+  name: "elevator_name"
+  type_id: 0x3e10b518
+  offset: 1920
+}
+member {
+  id: 0x9c310fea
+  name: "elevator_owner"
+  type_id: 0x0b27dc43
+  offset: 2112
+}
+member {
+  id: 0x8525586f
+  name: "elf_class"
+  type_id: 0x295c7202
+  offset: 10336
+}
+member {
+  id: 0xf59eaa00
+  name: "elf_machine"
+  type_id: 0x914dbfdc
+  offset: 10352
+}
+member {
+  id: 0x81b72f57
+  name: "elow"
+  type_id: 0x33756485
+  offset: 704
+}
+member {
+  id: 0x0a35c819
+  name: "elv"
+  type_id: 0x3ce2dc79
+  offset: 1664
+}
+member {
+  id: 0x336a0f49
+  name: "em485"
+  type_id: 0x3f358038
+  offset: 5440
+}
+member {
+  id: 0xc10560ba
+  name: "em_pd"
+  type_id: 0x3751334b
+  offset: 4992
+}
+member {
+  id: 0xc10563c7
+  name: "em_pd"
+  type_id: 0x3751334b
+}
+member {
+  id: 0x0517ef7d
+  name: "ema_max_profile_periodicity"
+  type_id: 0x295c7202
+  offset: 11912
+}
+member {
+  id: 0xfcf1c4f6
+  name: "emin"
+  type_id: 0x33756485
+  offset: 512
+}
+member {
+  id: 0x90736400
+  name: "eml_capabilities"
+  type_id: 0x914dbfdc
+  offset: 208
+}
+member {
+  id: 0x307847a2
+  name: "empty"
+  type_id: 0x4585663f
+  offset: 67
+  bitsize: 1
+}
+member {
+  id: 0x58333903
+  name: "empty_dir"
+  type_id: 0x3481766c
+  offset: 320
+}
+member {
+  id: 0x3e92b3e5
+  name: "emul_temperature"
+  type_id: 0x6720d32f
+  offset: 8512
+}
+member {
+  id: 0x030a11d9
+  name: "emulated"
+  type_id: 0x4585663f
+  offset: 2627
+  bitsize: 1
+}
+member {
+  id: 0x3ba0211e
+  name: "emulation_failure"
+  type_id: 0x1bf61cb5
+}
+member {
+  id: 0x1d3635db
+  name: "en_hw_timestamp"
+  type_id: 0x2cb45ae6
+  offset: 1216
+}
+member {
+  id: 0xf6c9ad96
+  name: "ena_gpio_state"
+  type_id: 0x4585663f
+  offset: 10688
+  bitsize: 1
+}
+member {
+  id: 0xb359c9a9
+  name: "ena_gpiod"
+  type_id: 0x2560a232
+  offset: 320
+}
+member {
+  id: 0x14c471d3
+  name: "ena_pin"
+  type_id: 0x375cc7da
+  offset: 10624
+}
+member {
+  id: 0x980f02e1
+  name: "enable"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0x988a74a1
+  name: "enable"
+  type_id: 0x6d7f5ff6
+  offset: 64
+}
+member {
+  id: 0x98c81dcf
+  name: "enable"
+  type_id: 0x2f1ba27c
+  offset: 576
+}
+member {
+  id: 0x98c89b65
+  name: "enable"
+  type_id: 0x2f9207f1
+  offset: 1280
+}
+member {
+  id: 0x98c905a1
+  name: "enable"
+  type_id: 0x2e037cf1
+  offset: 128
+}
+member {
+  id: 0x98ca023c
+  name: "enable"
+  type_id: 0x2d078518
+  offset: 896
+}
+member {
+  id: 0x98ca2102
+  name: "enable"
+  type_id: 0x2d2e1d2d
+}
+member {
+  id: 0x98ca51ff
+  name: "enable"
+  type_id: 0x2d5e4b40
+  offset: 256
+}
+member {
+  id: 0x98cb4a14
+  name: "enable"
+  type_id: 0x2c42cc74
+  offset: 320
+}
+member {
+  id: 0x98cbb19a
+  name: "enable"
+  type_id: 0x2cb62bf2
+  offset: 768
+}
+member {
+  id: 0x98cbfde8
+  name: "enable"
+  type_id: 0x2cf616a6
+  offset: 64
+}
+member {
+  id: 0x98d47a7b
+  name: "enable"
+  type_id: 0x33756485
+}
+member {
+  id: 0x98e86c88
+  name: "enable"
+  type_id: 0x0f6acd3e
+  offset: 2624
+}
+member {
+  id: 0x98e9418c
+  name: "enable"
+  type_id: 0x0e4a72a9
+  offset: 64
+}
+member {
+  id: 0x98eb544c
+  name: "enable"
+  type_id: 0x0c596e35
+  offset: 704
+}
+member {
+  id: 0x98ebd4a4
+  name: "enable"
+  type_id: 0x0cd0a3a7
+  offset: 512
+}
+member {
+  id: 0x19ee662b
+  name: "enable_advmon_interleave_scan"
+  type_id: 0xb3e7bac9
+  offset: 6752
+}
+member {
+  id: 0xe95444c9
+  name: "enable_async_irq"
+  type_id: 0x4585663f
+  offset: 70
+  bitsize: 1
+}
+member {
+  id: 0xc244b0c7
+  name: "enable_attr"
+  type_id: 0x11cf9350
+  offset: 1920
+}
+member {
+  id: 0xc244b1b2
+  name: "enable_attr"
+  type_id: 0x11cf9350
+  offset: 256
+}
+member {
+  id: 0x1518267c
+  name: "enable_auto_vbus_discharge"
+  type_id: 0x2e0b807c
+  offset: 1216
+}
+member {
+  id: 0xf88f7b9d
+  name: "enable_cnt"
+  type_id: 0x74d29cf1
+  offset: 22144
+}
+member {
+  id: 0x7a5a9508
+  name: "enable_count"
+  type_id: 0xc9082b19
+  offset: 192
+}
+member {
+  id: 0x7ad61027
+  name: "enable_count"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0x7ad6105e
+  name: "enable_count"
+  type_id: 0x4585663f
+  offset: 992
+}
+member {
+  id: 0xd6605ae1
+  name: "enable_device"
+  type_id: 0x2faaffbd
+  offset: 2304
+}
+member {
+  id: 0xb9f589d3
+  name: "enable_dma"
+  type_id: 0x2e67d166
+  offset: 640
+}
+member {
+  id: 0x1600341d
+  name: "enable_frs"
+  type_id: 0x3835dcc0
+  offset: 5440
+}
+member {
+  id: 0x161603e0
+  name: "enable_frs"
+  type_id: 0x2e0b807c
+  offset: 1088
+}
+member {
+  id: 0x24b470bf
+  name: "enable_frs_timer"
+  type_id: 0xcd7704bf
+  offset: 4864
+}
+member {
+  id: 0x839dca78
+  name: "enable_ibi"
+  type_id: 0x2d1660e0
+  offset: 896
+}
+member {
+  id: 0xb6a04911
+  name: "enable_irq"
+  type_id: 0x36b94cf6
+  offset: 192
+}
+member {
+  id: 0xfc790fc5
+  name: "enable_irq_failed"
+  type_id: 0x6d7f5ff6
+  offset: 1088
+}
+member {
+  id: 0x314c3709
+  name: "enable_is_inverted"
+  type_id: 0x6d7f5ff6
+  offset: 1632
+}
+member {
+  id: 0x49ced59b
+  name: "enable_mask"
+  type_id: 0x4585663f
+  offset: 1536
+}
+member {
+  id: 0xf334224f
+  name: "enable_media"
+  type_id: 0x2d09b62e
+  offset: 64
+}
+member {
+  id: 0x3f83561e
+  name: "enable_ms"
+  type_id: 0x0ebd5484
+  offset: 640
+}
+member {
+  id: 0xe86f5ee1
+  name: "enable_nesting"
+  type_id: 0x2f194b72
+  offset: 768
+}
+member {
+  id: 0xca494c13
+  name: "enable_on_exec"
+  type_id: 0xedf277ba
+  offset: 332
+  bitsize: 1
+}
+member {
+  id: 0xaff9623e
+  name: "enable_reg"
+  type_id: 0x4585663f
+  offset: 1504
+}
+member {
+  id: 0x02c93501
+  name: "enable_sdio_irq"
+  type_id: 0x0db09993
+  offset: 448
+}
+member {
+  id: 0xbbab763d
+  name: "enable_se"
+  type_id: 0x2d767327
+  offset: 832
+}
+member {
+  id: 0x5d656617
+  name: "enable_signaling"
+  type_id: 0x350996ca
+  offset: 192
+}
+member {
+  id: 0xd0725d42
+  name: "enable_slot"
+  type_id: 0x2c804609
+}
+member {
+  id: 0x05308db5
+  name: "enable_source"
+  type_id: 0x2c0e5ceb
+  offset: 4928
+}
+member {
+  id: 0x30687d61
+  name: "enable_stats"
+  type_id: 0x0f407a2b
+}
+member {
+  id: 0x1b0302e5
+  name: "enable_time"
+  type_id: 0x4585663f
+  offset: 2272
+}
+member {
+  id: 0x1b030eda
+  name: "enable_time"
+  type_id: 0x4585663f
+  offset: 1664
+}
+member {
+  id: 0x1b6b8968
+  name: "enable_time"
+  type_id: 0x2d078518
+  offset: 1280
+}
+member {
+  id: 0x924e54b1
+  name: "enable_timeout"
+  type_id: 0x4585663f
+  offset: 7584
+}
+member {
+  id: 0xb0796c56
+  name: "enable_usb3_lpm_timeout"
+  type_id: 0x2fae1014
+  offset: 2624
+}
+member {
+  id: 0x63746f9e
+  name: "enable_val"
+  type_id: 0x4585663f
+  offset: 1568
+}
+member {
+  id: 0xedf5ebf0
+  name: "enable_vblank"
+  type_id: 0x2ee5b68c
+  offset: 1344
+}
+member {
+  id: 0xedf637d4
+  name: "enable_vblank"
+  type_id: 0x2d3466af
+  offset: 448
+}
+member {
+  id: 0x8cbd3660
+  name: "enable_vq_after_reset"
+  type_id: 0x2eefa915
+  offset: 1024
+}
+member {
+  id: 0x3a05c0dc
+  name: "enabled"
+  type_id: 0x4585663f
+  offset: 352
+}
+member {
+  id: 0x3a1dc0b6
+  name: "enabled"
+  type_id: 0x5d8155a5
+}
+member {
+  id: 0x3a276647
+  name: "enabled"
+  type_id: 0x6720d32f
+  offset: 448
+}
+member {
+  id: 0x3a2768f2
+  name: "enabled"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x3a276fec
+  name: "enabled"
+  type_id: 0x6720d32f
+  offset: 1152
+}
+member {
+  id: 0x3a276fef
+  name: "enabled"
+  type_id: 0x6720d32f
+  offset: 544
+}
+member {
+  id: 0x3a2d30fe
+  name: "enabled"
+  type_id: 0x6d7f5ff6
+  offset: 2112
+}
+member {
+  id: 0x3a2d335c
+  name: "enabled"
+  type_id: 0x6d7f5ff6
+  offset: 160
+}
+member {
+  id: 0x3a2d33ca
+  name: "enabled"
+  type_id: 0x6d7f5ff6
+  offset: 1088
+}
+member {
+  id: 0x3a2d3543
+  name: "enabled"
+  type_id: 0x6d7f5ff6
+  offset: 9024
+}
+member {
+  id: 0x3a2d355a
+  name: "enabled"
+  type_id: 0x6d7f5ff6
+  offset: 8
+}
+member {
+  id: 0x3a2d3590
+  name: "enabled"
+  type_id: 0x6d7f5ff6
+  offset: 504
+}
+member {
+  id: 0x3a2d367c
+  name: "enabled"
+  type_id: 0x6d7f5ff6
+  offset: 360
+}
+member {
+  id: 0x3a2d36b3
+  name: "enabled"
+  type_id: 0x6d7f5ff6
+  offset: 136
+}
+member {
+  id: 0x3a2d374f
+  name: "enabled"
+  type_id: 0x6d7f5ff6
+  offset: 2240
+}
+member {
+  id: 0x3a2d39cb
+  name: "enabled"
+  type_id: 0x6d7f5ff6
+  offset: 448
+}
+member {
+  id: 0x3a2d3a5d
+  name: "enabled"
+  type_id: 0x6d7f5ff6
+  offset: 64
+}
+member {
+  id: 0x3a2d3c99
+  name: "enabled"
+  type_id: 0x6d7f5ff6
+  offset: 1376
+}
+member {
+  id: 0x3a2d3ce8
+  name: "enabled"
+  type_id: 0x6d7f5ff6
+  offset: 3296
+}
+member {
+  id: 0x3a2d3e17
+  name: "enabled"
+  type_id: 0x6d7f5ff6
+  offset: 256
+}
+member {
+  id: 0x3a2d3ebc
+  name: "enabled"
+  type_id: 0x6d7f5ff6
+}
+member {
+  id: 0x3a2d3f2e
+  name: "enabled"
+  type_id: 0x6d7f5ff6
+  offset: 384
+}
+member {
+  id: 0x3a34937f
+  name: "enabled"
+  type_id: 0x74d29cf1
+}
+member {
+  id: 0x7a56a64a
+  name: "enabled"
+  type_id: 0xc9082b19
+  offset: 31
+  bitsize: 1
+}
+member {
+  id: 0x7ada29d8
+  name: "enabled"
+  type_id: 0x4585663f
+  offset: 1
+  bitsize: 1
+}
+member {
+  id: 0x848dc1f6
+  name: "enabled_hrtimer_events"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x9cdfb0ea
+  name: "enabled_protocols"
+  type_id: 0x92233392
+  offset: 9024
+}
+member {
+  id: 0xf0d53ed1
+  name: "enabled_ts"
+  type_id: 0x11c404ba
+  offset: 1024
+}
+member {
+  id: 0xf668a047
+  name: "enc_key_size"
+  type_id: 0xb3e7bac9
+  offset: 776
+}
+member {
+  id: 0x2890339e
+  name: "encap"
+  type_id: 0x2b54a288
+}
+member {
+  id: 0x28923b4e
+  name: "encap"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x28991c5a
+  name: "encap"
+  type_id: 0x2274f708
+  offset: 3072
+}
+member {
+  id: 0x28b58ee3
+  name: "encap"
+  type_id: 0x0ee01d19
+  offset: 128
+}
+member {
+  id: 0x28c2744c
+  name: "encap"
+  type_id: 0x791ac8b7
+  offset: 1600
+}
+member {
+  id: 0x28c27df4
+  name: "encap"
+  type_id: 0x791ac8b7
+}
+member {
+  id: 0x5ac68566
+  name: "encap_destroy"
+  type_id: 0x1ea629c9
+  offset: 320
+}
+member {
+  id: 0x26cc2252
+  name: "encap_dport"
+  type_id: 0x7584e7da
+  offset: 32
+}
+member {
+  id: 0xf79bb379
+  name: "encap_err_lookup"
+  type_id: 0xc212c7e6
+  offset: 192
+}
+member {
+  id: 0x82526de6
+  name: "encap_err_rcv"
+  type_id: 0x409cc465
+  offset: 256
+}
+member {
+  id: 0x4a3707d0
+  name: "encap_family"
+  type_id: 0xc93e017b
+  offset: 320
+}
+member {
+  id: 0x937737d9
+  name: "encap_hdr_csum"
+  type_id: 0xb3e7bac9
+  offset: 14
+  bitsize: 1
+}
+member {
+  id: 0xeeda6a9b
+  name: "encap_hlen"
+  type_id: 0x914dbfdc
+  offset: 2256
+}
+member {
+  id: 0xc0f9acb3
+  name: "encap_oa"
+  type_id: 0x313397f7
+  offset: 64
+}
+member {
+  id: 0x2354f4ac
+  name: "encap_rcv"
+  type_id: 0x1f7ab146
+  offset: 128
+}
+member {
+  id: 0x3890eb97
+  name: "encap_sk"
+  type_id: 0x1d44326e
+  offset: 3136
+}
+member {
+  id: 0x41b5f511
+  name: "encap_sport"
+  type_id: 0x7584e7da
+  offset: 16
+}
+member {
+  id: 0x2cac3cfa
+  name: "encap_type"
+  type_id: 0xe8034002
+}
+member {
+  id: 0x2cf7dce1
+  name: "encap_type"
+  type_id: 0xb3e7bac9
+  offset: 64
+}
+member {
+  id: 0x58ff84b7
+  name: "encapsulation"
+  type_id: 0xb3e7bac9
+  offset: 13
+  bitsize: 1
+}
+member {
+  id: 0x6c984f90
+  name: "encode_fh"
+  type_id: 0x2c7a6df5
+}
+member {
+  id: 0x494c0817
+  name: "encode_wakeup"
+  type_id: 0x6d7f5ff6
+  offset: 8936
+}
+member {
+  id: 0x3b7df3c9
+  name: "encoder"
+  type_id: 0x91901b03
+  offset: 23872
+}
+member {
+  id: 0x3b7dfe4e
+  name: "encoder"
+  type_id: 0x91901b03
+  offset: 15424
+}
+member {
+  id: 0x3bc2900d
+  name: "encoder"
+  type_id: 0x2ef43f67
+  offset: 896
+}
+member {
+  id: 0x3bc29405
+  name: "encoder"
+  type_id: 0x2ef43f67
+  offset: 13312
+}
+member {
+  id: 0x2a645bba
+  name: "encoder_list"
+  type_id: 0xd3c80119
+  offset: 3200
+}
+member {
+  id: 0xc1c86b5c
+  name: "encoder_mask"
+  type_id: 0xc9082b19
+  offset: 160
+}
+member {
+  id: 0x72d84882
+  name: "encoder_option"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xe92115e0
+  name: "encoder_type"
+  type_id: 0x6720d32f
+  offset: 512
+}
+member {
+  id: 0x6a058a2e
+  name: "encoding"
+  type_id: 0xb76debc5
+}
+member {
+  id: 0x6a7bd9c4
+  name: "encoding"
+  type_id: 0xc93e017b
+}
+member {
+  id: 0x6a8cf391
+  name: "encoding"
+  type_id: 0x3e10b518
+  offset: 64
+}
+member {
+  id: 0x6a8cfc68
+  name: "encoding"
+  type_id: 0x3e10b518
+  offset: 512
+}
+member {
+  id: 0x6a9bb431
+  name: "encoding"
+  type_id: 0x295c7202
+  offset: 88
+}
+member {
+  id: 0x5ce87ef3
+  name: "encoding_sa"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0x893c9169
+  name: "encrypt"
+  type_id: 0x2ed391e2
+  offset: 128
+}
+member {
+  id: 0x893e7eb8
+  name: "encrypt"
+  type_id: 0x2c316317
+  offset: 64
+}
+member {
+  id: 0x897f3adb
+  name: "encrypt"
+  type_id: 0x6d7f5ff6
+  offset: 16
+}
+member {
+  id: 0x8201e649
+  name: "end"
+  type_id: 0x0eb62dc3
+  offset: 512
+}
+member {
+  id: 0x8217e2f8
+  name: "end"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0x823c26d1
+  name: "end"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0x823c2af9
+  name: "end"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x824ad321
+  name: "end"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x828973a2
+  name: "end"
+  type_id: 0x86265fdc
+  offset: 1696
+}
+member {
+  id: 0x829a3ae8
+  name: "end"
+  type_id: 0x9565759f
+  offset: 64
+}
+member {
+  id: 0x829d7cae
+  name: "end"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0x82b28e14
+  name: "end"
+  type_id: 0xbdd18903
+  offset: 64
+}
+member {
+  id: 0x82c657b6
+  name: "end"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x82e65d75
+  name: "end"
+  type_id: 0xe90b32b7
+  offset: 32
+}
+member {
+  id: 0x82e75682
+  name: "end"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0xc0d3a869
+  name: "end_addr"
+  type_id: 0x33756485
+  offset: 384
+}
+member {
+  id: 0x07595220
+  name: "end_code"
+  type_id: 0x33756485
+  offset: 2176
+}
+member {
+  id: 0x686c597e
+  name: "end_cpu_access"
+  type_id: 0x2d310635
+  offset: 640
+}
+member {
+  id: 0x8fe6fd91
+  name: "end_cpu_access_partial"
+  type_id: 0x2d351be6
+  offset: 704
+}
+member {
+  id: 0xf21393bd
+  name: "end_data"
+  type_id: 0x33756485
+  offset: 2304
+}
+member {
+  id: 0xf6c5f7be
+  name: "end_enable_verity"
+  type_id: 0x2c4869a2
+  offset: 64
+}
+member {
+  id: 0x6ce73117
+  name: "end_freq"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0xb920add3
+  name: "end_freq_khz"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0xec1d03ea
+  name: "end_io"
+  type_id: 0x3b5cc110
+  offset: 2368
+}
+member {
+  id: 0xb9877618
+  name: "end_io_data"
+  type_id: 0x18bd6530
+  offset: 2432
+}
+member {
+  id: 0xce89a886
+  name: "end_level"
+  type_id: 0x007e8ce4
+  offset: 16
+}
+member {
+  id: 0x745c0fb5
+  name: "end_of_table"
+  type_id: 0x6d7f5ff6
+  offset: 448
+}
+member {
+  id: 0x92aeeccb
+  name: "end_pfn"
+  type_id: 0xd0ccb483
+  offset: 64
+}
+member {
+  id: 0x357800a2
+  name: "end_station"
+  type_id: 0x6d7f5ff6
+  offset: 32
+}
+member {
+  id: 0x3041280e
+  name: "endianness"
+  type_id: 0x4585663f
+  offset: 2564
+  bitsize: 1
+}
+member {
+  id: 0xcb729b01
+  name: "endianness"
+  type_id: 0x2c6a91d5
+  offset: 64
+}
+member {
+  id: 0xd28d836d
+  name: "endpoint"
+  type_id: 0x6720d32f
+  offset: 224
+}
+member {
+  id: 0xd2b7290f
+  name: "endpoint"
+  type_id: 0x5d8155a5
+  offset: 360
+}
+member {
+  id: 0xd2e931bf
+  name: "endpoint"
+  type_id: 0x0399ec3e
+  offset: 192
+}
+member {
+  id: 0xb1d77507
+  name: "endpoint_disable"
+  type_id: 0x0ce23619
+  offset: 1024
+}
+member {
+  id: 0xc695491c
+  name: "endpoint_reset"
+  type_id: 0x0ce23619
+  offset: 1088
+}
+member {
+  id: 0x0c1200fa
+  name: "endpoints"
+  type_id: 0xb914bfab
+  offset: 1536
+}
+member {
+  id: 0x0c78d242
+  name: "endpoints"
+  type_id: 0xd3c80119
+  offset: 64
+}
+member {
+  id: 0x0cde76a3
+  name: "endpoints"
+  type_id: 0x75617428
+  offset: 2368
+}
+member {
+  id: 0x8e671da0
+  name: "energy_full_design_uwh"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x5a282cb1
+  name: "enforce_cache_coherency"
+  type_id: 0x37d06578
+  offset: 704
+}
+member {
+  id: 0xc774a29c
+  name: "enforce_expected_attach_type"
+  type_id: 0x914dbfdc
+  offset: 26
+  bitsize: 1
+}
+member {
+  id: 0x0eb6d2c5
+  name: "enforcing"
+  type_id: 0x6d7f5ff6
+}
+member {
+  id: 0x4262cdb7
+  name: "enhanced_area_offset"
+  type_id: 0xd5df6730
+  offset: 576
+}
+member {
+  id: 0x5fad1f1a
+  name: "enhanced_area_size"
+  type_id: 0x4585663f
+  offset: 640
+}
+member {
+  id: 0x9ebb73b1
+  name: "enhanced_dad"
+  type_id: 0xe62ebf07
+  offset: 1696
+}
+member {
+  id: 0x75277575
+  name: "enhanced_rpmb_supported"
+  type_id: 0x6d7f5ff6
+  offset: 40
+}
+member {
+  id: 0x9a5ad143
+  name: "enhanced_strobe"
+  type_id: 0x6d7f5ff6
+  offset: 152
+}
+member {
+  id: 0x5c4e7f13
+  name: "enhopts"
+  type_id: 0x295c7202
+  offset: 232
+}
+member {
+  id: 0x7e8323e0
+  name: "enq_seg"
+  type_id: 0x3ef55b88
+  offset: 192
+}
+member {
+  id: 0xb70fdbee
+  name: "enqueue"
+  type_id: 0x31da1e83
+  offset: 128
+}
+member {
+  id: 0xb711cfc3
+  name: "enqueue"
+  type_id: 0x2fc18808
+  offset: 640
+}
+member {
+  id: 0xb71382f4
+  name: "enqueue"
+  type_id: 0x2d8ac69c
+}
+member {
+  id: 0xb7138533
+  name: "enqueue"
+  type_id: 0x2d8ac69c
+  offset: 320
+}
+member {
+  id: 0x5a976025
+  name: "enqueue_task"
+  type_id: 0x0c4d6f90
+  offset: 64
+}
+member {
+  id: 0x8905c22d
+  name: "enqueued"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xfe288601
+  name: "ent"
+  type_id: 0x2e47a18c
+  offset: 67456
+}
+member {
+  id: 0x9fb41354
+  name: "ent_enum"
+  type_id: 0xd7f1f384
+  offset: 2048
+}
+member {
+  id: 0x94f37550
+  name: "ent_size"
+  type_id: 0x6720d32f
+  offset: 67616
+}
+member {
+  id: 0x05e44400
+  name: "enter"
+  type_id: 0x26554526
+  offset: 256
+}
+member {
+  id: 0x05ecb6a4
+  name: "enter"
+  type_id: 0x2ea74ad2
+}
+member {
+  id: 0x05ece5d8
+  name: "enter"
+  type_id: 0x2ef24f54
+  offset: 640
+}
+member {
+  id: 0x09305b84
+  name: "enter_dead"
+  type_id: 0x2e8b2d57
+  offset: 704
+}
+member {
+  id: 0x00bf2404
+  name: "enter_memory_pressure"
+  type_id: 0x0f626ee5
+  offset: 1920
+}
+member {
+  id: 0x9fb1e055
+  name: "enter_s2idle"
+  type_id: 0x2ef24f54
+  offset: 768
+}
+member {
+  id: 0xf1409c62
+  name: "enter_state"
+  type_id: 0x63b95725
+  offset: 2400
+}
+member {
+  id: 0xe259ca35
+  name: "entities"
+  type_id: 0xd3c80119
+  offset: 1600
+}
+member {
+  id: 0x449adaa1
+  name: "entity"
+  type_id: 0x501df1d2
+}
+member {
+  id: 0x44d45015
+  name: "entity"
+  type_id: 0x1e9745d3
+}
+member {
+  id: 0x44d450be
+  name: "entity"
+  type_id: 0x1e9745d3
+  offset: 256
+}
+member {
+  id: 0x976a6568
+  name: "entity_internal_idx"
+  type_id: 0xe1a31370
+  offset: 1408
+}
+member {
+  id: 0x94e4b92e
+  name: "entity_internal_idx_max"
+  type_id: 0x6720d32f
+  offset: 1536
+}
+member {
+  id: 0x95a10973
+  name: "entity_notify"
+  type_id: 0xd3c80119
+  offset: 2112
+}
+member {
+  id: 0xbe09816f
+  name: "entries"
+  type_id: 0x74d29cf1
+  offset: 5120
+}
+member {
+  id: 0xbe09c685
+  name: "entries"
+  type_id: 0x749f40ec
+}
+member {
+  id: 0xbe1a7a32
+  name: "entries"
+  type_id: 0x6720d32f
+  offset: 196864
+}
+member {
+  id: 0xbe2295bb
+  name: "entries"
+  type_id: 0x5fcc7e0d
+}
+member {
+  id: 0xbe40b5f4
+  name: "entries"
+  type_id: 0x3debf664
+  offset: 320
+}
+member {
+  id: 0xbe4d69f8
+  name: "entries"
+  type_id: 0x30303d50
+}
+member {
+  id: 0xbe4d6d19
+  name: "entries"
+  type_id: 0x30303d50
+  offset: 64
+}
+member {
+  id: 0xbe4e2563
+  name: "entries"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0xbe54c29b
+  name: "entries"
+  type_id: 0x299c4193
+  offset: 1024
+}
+member {
+  id: 0xbe54c52f
+  name: "entries"
+  type_id: 0x299c4193
+  offset: 256
+}
+member {
+  id: 0xbe6b1dbc
+  name: "entries"
+  type_id: 0x164cb078
+  offset: 192
+}
+member {
+  id: 0xbe6c63bb
+  name: "entries"
+  type_id: 0x113a7e14
+}
+member {
+  id: 0xbe72bbaa
+  name: "entries"
+  type_id: 0x0feb1d85
+  offset: 576
+}
+member {
+  id: 0xbe8c49ed
+  name: "entries"
+  type_id: 0xf114c9a4
+  offset: 64
+}
+member {
+  id: 0xbe9b777a
+  name: "entries"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xbea7ee64
+  name: "entries"
+  type_id: 0xdabe6369
+  offset: 128
+}
+member {
+  id: 0xbebf7aee
+  name: "entries"
+  type_id: 0xc227cae4
+  offset: 64
+}
+member {
+  id: 0xbedcc7b7
+  name: "entries"
+  type_id: 0xa19e72f5
+}
+member {
+  id: 0x874cc7f4
+  name: "entries_bytes"
+  type_id: 0x299c4193
+  offset: 960
+}
+member {
+  id: 0x81589b00
+  name: "entries_cap"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xec780fc8
+  name: "entropy"
+  type_id: 0x79fb914f
+  offset: 320
+}
+member {
+  id: 0x4d1def0c
+  name: "entry"
+  type_id: 0x49a73111
+}
+member {
+  id: 0x4d4645b4
+  name: "entry"
+  type_id: 0x120540d1
+  offset: 192
+}
+member {
+  id: 0x4d464dd6
+  name: "entry"
+  type_id: 0x120540d1
+  offset: 256
+}
+member {
+  id: 0x4d497457
+  name: "entry"
+  type_id: 0x1d3c6aad
+}
+member {
+  id: 0x4d4cfd91
+  name: "entry"
+  type_id: 0x18bd6530
+  offset: 192
+}
+member {
+  id: 0x4d51f42d
+  name: "entry"
+  type_id: 0x05b4d9be
+  offset: 192
+}
+member {
+  id: 0x4d83d109
+  name: "entry"
+  type_id: 0xd79dd5b3
+  offset: 64
+}
+member {
+  id: 0x4d87803c
+  name: "entry"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0x4d8781e2
+  name: "entry"
+  type_id: 0xd3c80119
+  offset: 1920
+}
+member {
+  id: 0x4d8784dd
+  name: "entry"
+  type_id: 0xd3c80119
+  offset: 64
+}
+member {
+  id: 0x4d878641
+  name: "entry"
+  type_id: 0xd3c80119
+  offset: 1280
+}
+member {
+  id: 0x4d878696
+  name: "entry"
+  type_id: 0xd3c80119
+  offset: 7616
+}
+member {
+  id: 0x4d8788f5
+  name: "entry"
+  type_id: 0xd3c80119
+  offset: 192
+}
+member {
+  id: 0x4d8789fe
+  name: "entry"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0x4dae719d
+  name: "entry"
+  type_id: 0xfa349bf7
+  offset: 32
+}
+member {
+  id: 0x4dc508b9
+  name: "entry"
+  type_id: 0x914dbfdc
+  offset: 32
+}
+member {
+  id: 0x811284bd
+  name: "entry_avg_ms"
+  type_id: 0xd05fb2d0
+  offset: 1536
+}
+member {
+  id: 0xb0dd5f8b
+  name: "entry_handler"
+  type_id: 0x70751a0e
+  offset: 1088
+}
+member {
+  id: 0x0f422a0f
+  name: "entry_size"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x7577578a
+  name: "entry_work"
+  type_id: 0xf1159c31
+  offset: 64
+}
+member {
+  id: 0x8ef9a4f4
+  name: "enum_dv_timings"
+  type_id: 0x2ddb3c91
+  offset: 704
+}
+member {
+  id: 0x315f6686
+  name: "enum_frame_interval"
+  type_id: 0x2dfe5b0e
+  offset: 192
+}
+member {
+  id: 0x63c87cc3
+  name: "enum_frame_size"
+  type_id: 0x2dff0bbc
+  offset: 128
+}
+member {
+  id: 0x70cdee30
+  name: "enum_freq_bands"
+  type_id: 0x2dde8ffd
+  offset: 256
+}
+member {
+  id: 0x00d8eed6
+  name: "enum_list"
+  type_id: 0xd3c80119
+  offset: 832
+}
+member {
+  id: 0xf6178941
+  name: "enum_mbus_code"
+  type_id: 0x2dfe40a9
+  offset: 64
+}
+member {
+  id: 0xa337ec8c
+  name: "enumerated"
+  type_id: 0x35bfb9cb
+}
+member {
+  id: 0xa3747034
+  name: "enumerated"
+  type_id: 0x76230193
+}
+member {
+  id: 0xbb3bd0c8
+  name: "env_end"
+  type_id: 0x33756485
+  offset: 2752
+}
+member {
+  id: 0x991fce7b
+  name: "env_start"
+  type_id: 0x33756485
+  offset: 2688
+}
+member {
+  id: 0x6ef2aeb4
+  name: "envc"
+  type_id: 0x6720d32f
+  offset: 736
+}
+member {
+  id: 0x7d51805f
+  name: "envelope"
+  type_id: 0x8fbb2b03
+  offset: 80
+}
+member {
+  id: 0x7d5189f8
+  name: "envelope"
+  type_id: 0x8fbb2b03
+  offset: 32
+}
+member {
+  id: 0x7d518a7d
+  name: "envelope"
+  type_id: 0x8fbb2b03
+  offset: 16
+}
+member {
+  id: 0x39ffa241
+  name: "envp"
+  type_id: 0x328bfe29
+  offset: 192
+}
+member {
+  id: 0xb57fe2a7
+  name: "envp_idx"
+  type_id: 0x6720d32f
+  offset: 4288
+}
+member {
+  id: 0xa2d43869
+  name: "eoi"
+  type_id: 0x38ab0bc9
+}
+member {
+  id: 0xa2dfe6ad
+  name: "eoi"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0x7c74f998
+  name: "eot"
+  type_id: 0x4585663f
+  offset: 288
+}
+member {
+  id: 0xa4abc6f0
+  name: "eotf"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0xa4fd15ff
+  name: "eotf"
+  type_id: 0xe5305400
+  offset: 64
+}
+member {
+  id: 0xb5735b77
+  name: "ep"
+  type_id: 0xd55131a8
+  offset: 2240
+}
+member {
+  id: 0xb5827b12
+  name: "ep"
+  type_id: 0x24706e28
+  offset: 192
+}
+member {
+  id: 0xb5a5932b
+  name: "ep"
+  type_id: 0x0399ec3e
+  offset: 576
+}
+member {
+  id: 0xb5a59eb8
+  name: "ep"
+  type_id: 0x0399ec3e
+  offset: 64
+}
+member {
+  id: 0x3b0858c1
+  name: "ep0"
+  type_id: 0x0e2680c2
+  offset: 512
+}
+member {
+  id: 0x3b085d05
+  name: "ep0"
+  type_id: 0x0e2680c2
+  offset: 1152
+}
+member {
+  id: 0x3b225032
+  name: "ep0"
+  type_id: 0x24275666
+  offset: 704
+}
+member {
+  id: 0x65e997e7
+  name: "ep0_req_tag"
+  type_id: 0x4585663f
+  offset: 1280
+}
+member {
+  id: 0xd447c2f1
+  name: "ep0req"
+  type_id: 0x2f99f236
+  offset: 1216
+}
+member {
+  id: 0xcd580f0d
+  name: "ep_attr"
+  type_id: 0x5d8155a5
+  offset: 368
+}
+member {
+  id: 0xd0ba5b1b
+  name: "ep_dev"
+  type_id: 0x2b2329dc
+  offset: 384
+}
+member {
+  id: 0x11dac179
+  name: "ep_devs_created"
+  type_id: 0x4585663f
+  offset: 321
+  bitsize: 1
+}
+member {
+  id: 0xc7a83ff7
+  name: "ep_idx"
+  type_id: 0x5d8155a5
+  offset: 336
+}
+member {
+  id: 0xd80e161f
+  name: "ep_in"
+  type_id: 0x4cd5b99e
+  offset: 9024
+}
+member {
+  id: 0x76c6e366
+  name: "ep_index"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x93a1b3b9
+  name: "ep_init"
+  type_id: 0x0d4a6a9f
+}
+member {
+  id: 0x157e411f
+  name: "ep_interval"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xb89868d2
+  name: "ep_list"
+  type_id: 0xd3c80119
+  offset: 576
+}
+member {
+  id: 0xb89868d5
+  name: "ep_list"
+  type_id: 0xd3c80119
+  offset: 2368
+}
+member {
+  id: 0xb8986969
+  name: "ep_list"
+  type_id: 0xd3c80119
+  offset: 192
+}
+member {
+  id: 0x1c1b9943
+  name: "ep_num"
+  type_id: 0x4585663f
+  offset: 768
+}
+member {
+  id: 0x1c3934f3
+  name: "ep_num"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0x775f75c8
+  name: "ep_out"
+  type_id: 0x4cd5b99e
+  offset: 10048
+}
+member {
+  id: 0xcc45743c
+  name: "ep_state"
+  type_id: 0x4585663f
+  offset: 352
+}
+member {
+  id: 0x39f28b61
+  name: "epc"
+  type_id: 0x17a37c1c
+}
+member {
+  id: 0x232cfe44
+  name: "epf_bar"
+  type_id: 0xa80ed513
+  offset: 832
+}
+member {
+  id: 0xfbbd10f7
+  name: "epoch_counter"
+  type_id: 0x92233392
+  offset: 13184
+}
+member {
+  id: 0x65a4a799
+  name: "epoll_watches"
+  type_id: 0x04fd619c
+  offset: 64
+}
+member {
+  id: 0x044a9f42
+  name: "epr"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x04b5cf1e
+  name: "epr"
+  type_id: 0x197ee30b
+}
+member {
+  id: 0x4571d9d3
+  name: "eps"
+  type_id: 0x9a1c0141
+  offset: 256
+}
+member {
+  id: 0x86162104
+  name: "ept"
+  type_id: 0x3d435d11
+  offset: 7744
+}
+member {
+  id: 0xf6e89639
+  name: "equal"
+  type_id: 0x362c7d0e
+}
+member {
+  id: 0x001d37e4
+  name: "erase"
+  type_id: 0x2c930d22
+  offset: 64
+}
+member {
+  id: 0x001e2235
+  name: "erase"
+  type_id: 0x2f85fa56
+  offset: 320
+}
+member {
+  id: 0x001f437a
+  name: "erase"
+  type_id: 0x2eedaed0
+  offset: 1152
+}
+member {
+  id: 0xdd66cdcc
+  name: "erase_arg"
+  type_id: 0x4585663f
+  offset: 7712
+}
+member {
+  id: 0x7644bdb7
+  name: "erase_group_def"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0x6d44203a
+  name: "erase_offset"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x5442c317
+  name: "erase_shift"
+  type_id: 0x4585663f
+  offset: 7616
+}
+member {
+  id: 0xd5efa22e
+  name: "erase_size"
+  type_id: 0x4585663f
+  offset: 7584
+}
+member {
+  id: 0xd5efa537
+  name: "erase_size"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0xdf67c9a0
+  name: "erase_timeout"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x76ff32c6
+  name: "erased_byte"
+  type_id: 0x295c7202
+  offset: 7744
+}
+member {
+  id: 0x731aef73
+  name: "erom_version"
+  type_id: 0x5adf57ae
+  offset: 1056
+}
+member {
+  id: 0x6d0d728f
+  name: "err"
+  type_id: 0x4b44d3d9
+  offset: 128
+}
+member {
+  id: 0x6d211276
+  name: "err"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0xa7143d34
+  name: "err_count"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0xccd72ae9
+  name: "err_data_reporting"
+  type_id: 0xb3e7bac9
+  offset: 6128
+}
+member {
+  id: 0x4e049d50
+  name: "err_handler"
+  type_id: 0x37393a51
+  offset: 768
+}
+member {
+  id: 0x4e3d83f6
+  name: "err_handler"
+  type_id: 0x0e2bd379
+  offset: 64
+}
+member {
+  id: 0x385e95e2
+  name: "err_lock"
+  type_id: 0xf313e71a
+  offset: 10880
+}
+member {
+  id: 0xc97224e2
+  name: "err_log"
+  type_id: 0xd3c80119
+  offset: 1344
+}
+member {
+  id: 0xeb51f05c
+  name: "err_rx"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xd39b9ad3
+  name: "err_stats"
+  type_id: 0xc49c902c
+  offset: 14048
+}
+member {
+  id: 0xe3bf32f2
+  name: "err_tx"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xb01592a4
+  name: "errcnt"
+  type_id: 0x39470e64
+  offset: 1152
+}
+member {
+  id: 0x7f4352ad
+  name: "error"
+  type_id: 0x4585663f
+  offset: 224
+}
+member {
+  id: 0x7f61f497
+  name: "error"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0x7f61f4ee
+  name: "error"
+  type_id: 0x6720d32f
+  offset: 992
+}
+member {
+  id: 0x7f61f58c
+  name: "error"
+  type_id: 0x6720d32f
+  offset: 480
+}
+member {
+  id: 0x7f61f9dc
+  name: "error"
+  type_id: 0x6720d32f
+  offset: 160
+}
+member {
+  id: 0x7f61fcf5
+  name: "error"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0x7f979426
+  name: "error"
+  type_id: 0x914dbfdc
+  offset: 1088
+}
+member {
+  id: 0x7fb53355
+  name: "error"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0x7fb6e678
+  name: "error"
+  type_id: 0xb0312d5a
+  offset: 832
+}
+member {
+  id: 0xfbf188de
+  name: "error"
+  type_id: 0x4585663f
+  offset: 6530
+  bitsize: 1
+}
+member {
+  id: 0x76c39912
+  name: "error_code"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x0b9ba55b
+  name: "error_count"
+  type_id: 0x6720d32f
+  offset: 1312
+}
+member {
+  id: 0x04a1d35d
+  name: "error_ctx"
+  type_id: 0x3e02e685
+  offset: 1536
+}
+member {
+  id: 0x1446043f
+  name: "error_detected"
+  type_id: 0x17eb2338
+}
+member {
+  id: 0x41a66438
+  name: "error_idx"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xb5c607a8
+  name: "error_inj_parse_line"
+  type_id: 0x36bdcf10
+  offset: 576
+}
+member {
+  id: 0xf2d90fb4
+  name: "error_inj_show"
+  type_id: 0x2e76071a
+  offset: 512
+}
+member {
+  id: 0xfa96bf5e
+  name: "error_passive"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x32b203dc
+  name: "error_remove_page"
+  type_id: 0x2caea882
+  offset: 1024
+}
+member {
+  id: 0xee552106
+  name: "error_report"
+  type_id: 0x0e0dc9f3
+  offset: 128
+}
+member {
+  id: 0x432861bc
+  name: "error_reset"
+  type_id: 0x1f3c8679
+  offset: 15360
+}
+member {
+  id: 0x4404e020
+  name: "error_state"
+  type_id: 0x67293002
+  offset: 1600
+}
+member {
+  id: 0xa0f4e125
+  name: "error_warning"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xf528854b
+  name: "error_work"
+  type_id: 0xf1159c31
+  offset: 256
+}
+member {
+  id: 0x636e25c6
+  name: "errors"
+  type_id: 0x3a3eb2f9
+  offset: 64
+}
+member {
+  id: 0x636e28e5
+  name: "errors"
+  type_id: 0x3a3eb2f9
+  offset: 128
+}
+member {
+  id: 0x639d1f50
+  name: "errors"
+  type_id: 0xc9082b19
+  offset: 5568
+}
+member {
+  id: 0x0b8d9d58
+  name: "erst"
+  type_id: 0x9d27bc05
+  offset: 2944
+}
+member {
+  id: 0x1e6122f6
+  name: "erst_base"
+  type_id: 0x92233392
+  offset: 256
+}
+member {
+  id: 0x1e8bfc49
+  name: "erst_base"
+  type_id: 0x78f4e574
+  offset: 128
+}
+member {
+  id: 0x500e5f2d
+  name: "erst_dequeue"
+  type_id: 0x78f4e574
+  offset: 192
+}
+member {
+  id: 0x50e487f5
+  name: "erst_dequeue"
+  type_id: 0x92233392
+  offset: 320
+}
+member {
+  id: 0xc526ab23
+  name: "erst_dma_addr"
+  type_id: 0xe02e14d6
+  offset: 128
+}
+member {
+  id: 0x3532497a
+  name: "erst_size"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0x357c6a44
+  name: "erst_size"
+  type_id: 0x0baa70a7
+  offset: 64
+}
+member {
+  id: 0x35becfda
+  name: "erst_size"
+  type_id: 0xc9082b19
+  offset: 224
+}
+member {
+  id: 0x52b08a03
+  name: "esco_type"
+  type_id: 0xe8034002
+  offset: 7024
+}
+member {
+  id: 0xe208a9c9
+  name: "escon_mmf_1310_led"
+  type_id: 0x295c7202
+  offset: 47
+  bitsize: 1
+}
+member {
+  id: 0x9d5d5e27
+  name: "escon_smf_1310_laser"
+  type_id: 0x295c7202
+  offset: 46
+  bitsize: 1
+}
+member {
+  id: 0x3cd9cc42
+  name: "esize"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x8c72bd92
+  name: "esp_ip4_spec"
+  type_id: 0x76713e01
+}
+member {
+  id: 0x5bbc9ea8
+  name: "esp_ip6_spec"
+  type_id: 0x6df98672
+}
+member {
+  id: 0xfe44cfde
+  name: "esr_el2"
+  type_id: 0x92233392
+}
+member {
+  id: 0x215cae19
+  name: "esr_iss"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x951f933e
+  name: "essid"
+  type_id: 0xb76debc5
+}
+member {
+  id: 0xc5f23f89
+  name: "established_timings"
+  type_id: 0x56160698
+  offset: 280
+}
+member {
+  id: 0x285d0427
+  name: "esterror"
+  type_id: 0x39470e64
+  offset: 256
+}
+member {
+  id: 0xca94b2d4
+  name: "eth_tp_mdix"
+  type_id: 0xb3e7bac9
+  offset: 240
+}
+member {
+  id: 0xca94b363
+  name: "eth_tp_mdix"
+  type_id: 0xb3e7bac9
+  offset: 104
+}
+member {
+  id: 0x8530641a
+  name: "eth_tp_mdix_ctrl"
+  type_id: 0xb3e7bac9
+  offset: 248
+}
+member {
+  id: 0x8530689b
+  name: "eth_tp_mdix_ctrl"
+  type_id: 0xb3e7bac9
+  offset: 112
+}
+member {
+  id: 0xedf651c0
+  name: "ether_spec"
+  type_id: 0xed0cdc47
+}
+member {
+  id: 0xa6cc6c59
+  name: "ethtool_ops"
+  type_id: 0x385779d3
+  offset: 4160
+}
+member {
+  id: 0xcac5b039
+  name: "euid"
+  type_id: 0xe90b32b7
+  offset: 192
+}
+member {
+  id: 0xcac5b510
+  name: "euid"
+  type_id: 0xe90b32b7
+  offset: 160
+}
+member {
+  id: 0xcac5b9cf
+  name: "euid"
+  type_id: 0xe90b32b7
+  offset: 6016
+}
+member {
+  id: 0x3934a0d0
+  name: "ev"
+  type_id: 0x14191d75
+  offset: 3840
+}
+member {
+  id: 0x39c8d546
+  name: "ev"
+  type_id: 0xe86c4e97
+  offset: 128
+}
+member {
+  id: 0x392f00ec
+  name: "ev_subs"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0x9b60f7ce
+  name: "eval"
+  type_id: 0xc9082b19
+  offset: 192
+}
+member {
+  id: 0x47151a95
+  name: "eval_string"
+  type_id: 0x3e10b518
+  offset: 64
+}
+member {
+  id: 0x8e19da6d
+  name: "eval_value"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0xb1c5a6f1
+  name: "evbit"
+  type_id: 0xa562355d
+  offset: 128
+}
+member {
+  id: 0xb1d9de7e
+  name: "evbit"
+  type_id: 0xb914bfab
+  offset: 320
+}
+member {
+  id: 0x0a28c0b3
+  name: "event"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x0a28c7ac
+  name: "event"
+  type_id: 0x6720d32f
+  offset: 1024
+}
+member {
+  id: 0x0a28cbab
+  name: "event"
+  type_id: 0x6720d32f
+  offset: 512
+}
+member {
+  id: 0x0a384d6c
+  name: "event"
+  type_id: 0x77af3121
+  offset: 704
+}
+member {
+  id: 0x0a3b32d2
+  name: "event"
+  type_id: 0x74d29cf1
+  offset: 7392
+}
+member {
+  id: 0x0a3b32fc
+  name: "event"
+  type_id: 0x74d29cf1
+}
+member {
+  id: 0x0a3b3b3e
+  name: "event"
+  type_id: 0x74d29cf1
+  offset: 128
+}
+member {
+  id: 0x0a428f2d
+  name: "event"
+  type_id: 0x0d6bac1e
+  offset: 64
+}
+member {
+  id: 0x0a444302
+  name: "event"
+  type_id: 0x0bababb1
+  offset: 192
+}
+member {
+  id: 0x0a4f3353
+  name: "event"
+  type_id: 0x00d82b18
+  offset: 512
+}
+member {
+  id: 0x0a4f3caa
+  name: "event"
+  type_id: 0x00d82b18
+  offset: 64
+}
+member {
+  id: 0x0a52141a
+  name: "event"
+  type_id: 0x1df083fd
+  offset: 2496
+}
+member {
+  id: 0x0a5217fc
+  name: "event"
+  type_id: 0x1df083fd
+  offset: 1024
+}
+member {
+  id: 0x0a522e6f
+  name: "event"
+  type_id: 0x1dce0fdd
+}
+member {
+  id: 0x0a57f1a5
+  name: "event"
+  type_id: 0x1818079c
+  offset: 128
+}
+member {
+  id: 0x0a629482
+  name: "event"
+  type_id: 0x2d7c118b
+  offset: 960
+}
+member {
+  id: 0x0a62e6fa
+  name: "event"
+  type_id: 0x2d04a781
+  offset: 704
+}
+member {
+  id: 0x0a6350ff
+  name: "event"
+  type_id: 0x2cb597e1
+  offset: 3968
+}
+member {
+  id: 0x0aa43bfb
+  name: "event"
+  type_id: 0xebdb30a1
+  offset: 256
+}
+member {
+  id: 0x0aa9ca3e
+  name: "event"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x0ac7a0a2
+  name: "event"
+  type_id: 0x8840c268
+}
+member {
+  id: 0x0acdf01b
+  name: "event"
+  type_id: 0x82107bd5
+}
+member {
+  id: 0x0ad7602b
+  name: "event"
+  type_id: 0x98849204
+  offset: 288
+}
+member {
+  id: 0x0add8422
+  name: "event"
+  type_id: 0x9264e992
+  offset: 256
+}
+member {
+  id: 0x0addc0e9
+  name: "event"
+  type_id: 0x92233392
+  offset: 832
+}
+member {
+  id: 0x902743aa
+  name: "event_attrs"
+  type_id: 0x334c07d5
+}
+member {
+  id: 0x9d0e4cf9
+  name: "event_base"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0xa8ce2f12
+  name: "event_base_rdpmc"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0xbb26541d
+  name: "event_call"
+  type_id: 0x269c8e40
+  offset: 128
+}
+member {
+  id: 0xf0897d29
+  name: "event_caps"
+  type_id: 0x6720d32f
+  offset: 1056
+}
+member {
+  id: 0x7e805d45
+  name: "event_cmd"
+  type_id: 0x8b7a3a75
+}
+member {
+  id: 0x93a48b9c
+  name: "event_count"
+  type_id: 0x33756485
+  offset: 1216
+}
+member {
+  id: 0xfce16356
+  name: "event_dir"
+  type_id: 0x120540d1
+  offset: 1664
+}
+member {
+  id: 0x47d29fbd
+  name: "event_entry"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0x12aa49ff
+  name: "event_flags"
+  type_id: 0x9bd401b6
+  offset: 960
+}
+member {
+  id: 0x12f8a1aa
+  name: "event_flags"
+  type_id: 0xc93e017b
+  offset: 896
+}
+member {
+  id: 0x12f8a5e0
+  name: "event_flags"
+  type_id: 0xc93e017b
+  offset: 368
+}
+member {
+  id: 0x50510202
+  name: "event_handler"
+  type_id: 0x2d7c118b
+  offset: 64
+}
+member {
+  id: 0x5053bf2b
+  name: "event_handler"
+  type_id: 0x2fc2aeab
+  offset: 448
+}
+member {
+  id: 0x5073ffeb
+  name: "event_handler"
+  type_id: 0x0f8519f7
+}
+member {
+  id: 0xd3e4f2b9
+  name: "event_idx"
+  type_id: 0x2c2ce191
+  offset: 1600
+}
+member {
+  id: 0x02f003dd
+  name: "event_init"
+  type_id: 0x2c2ce191
+  offset: 896
+}
+member {
+  id: 0x7f9e1bf4
+  name: "event_limit"
+  type_id: 0x74d29cf1
+  offset: 7072
+}
+member {
+  id: 0xce528094
+  name: "event_list"
+  type_id: 0xd3c80119
+  offset: 2112
+}
+member {
+  id: 0xce528147
+  name: "event_list"
+  type_id: 0xd3c80119
+  offset: 3072
+}
+member {
+  id: 0xce528470
+  name: "event_list"
+  type_id: 0xd3c80119
+  offset: 896
+}
+member {
+  id: 0xce528668
+  name: "event_list"
+  type_id: 0xd3c80119
+  offset: 17536
+}
+member {
+  id: 0xce5289f3
+  name: "event_list"
+  type_id: 0xd3c80119
+  offset: 1728
+}
+member {
+  id: 0xce528d6c
+  name: "event_list"
+  type_id: 0xd3c80119
+  offset: 832
+}
+member {
+  id: 0x5812a5b7
+  name: "event_list_lock"
+  type_id: 0xf313e71a
+  offset: 17664
+}
+member {
+  id: 0x8afee601
+  name: "event_lock"
+  type_id: 0xf313e71a
+  offset: 3328
+}
+member {
+  id: 0x8afee9ef
+  name: "event_lock"
+  type_id: 0xf313e71a
+  offset: 768
+}
+member {
+  id: 0x8afeea5c
+  name: "event_lock"
+  type_id: 0xf313e71a
+  offset: 1856
+}
+member {
+  id: 0x8afeed6a
+  name: "event_lock"
+  type_id: 0xf313e71a
+  offset: 4096
+}
+member {
+  id: 0xbb0d1ab9
+  name: "event_mapped"
+  type_id: 0x0f71fbf9
+  offset: 960
+}
+member {
+  id: 0xbd289bca
+  name: "event_notifier_register"
+  type_id: 0x2e8e1000
+  offset: 128
+}
+member {
+  id: 0x44c90196
+  name: "event_notifier_unregister"
+  type_id: 0x2e8e1000
+  offset: 192
+}
+member {
+  id: 0x9744f8f8
+  name: "event_notify"
+  type_id: 0x0e4e664a
+  offset: 1344
+}
+member {
+  id: 0x5d544312
+  name: "event_read_lock"
+  type_id: 0xa7c362b0
+  offset: 2304
+}
+member {
+  id: 0x225cba59
+  name: "event_ring"
+  type_id: 0x21b2d2f4
+  offset: 2880
+}
+member {
+  id: 0x8e44e10f
+  name: "event_ring_max"
+  type_id: 0x6720d32f
+  offset: 768
+}
+member {
+  id: 0x6ab8d5b9
+  name: "event_space"
+  type_id: 0x6720d32f
+  offset: 2240
+}
+member {
+  id: 0xb3a10702
+  name: "event_spec"
+  type_id: 0x3e9e0b34
+  offset: 832
+}
+member {
+  id: 0x06d9d888
+  name: "event_stamp"
+  type_id: 0xcd74e255
+  offset: 1984
+}
+member {
+  id: 0x8dfc7230
+  name: "event_type"
+  type_id: 0x9bd401b6
+  offset: 976
+}
+member {
+  id: 0x97f617b5
+  name: "event_unmapped"
+  type_id: 0x0f71fbf9
+  offset: 1024
+}
+member {
+  id: 0x7dd6be17
+  name: "event_wait"
+  type_id: 0x03913382
+  offset: 320
+}
+member {
+  id: 0x7dd6bfa3
+  name: "event_wait"
+  type_id: 0x03913382
+  offset: 1792
+}
+member {
+  id: 0x4fd97d98
+  name: "event_work"
+  type_id: 0x1f3c8679
+  offset: 3200
+}
+member {
+  id: 0x4ffe78cf
+  name: "event_work"
+  type_id: 0x3835dcc0
+  offset: 2752
+}
+member {
+  id: 0x1c08be87
+  name: "event_wqh"
+  type_id: 0x03913382
+  offset: 576
+}
+member {
+  id: 0xf60cfd18
+  name: "eventfd"
+  type_id: 0x3e02e685
+}
+member {
+  id: 0x60ae210b
+  name: "eventfd_async"
+  type_id: 0x4585663f
+  offset: 64
+  bitsize: 1
+}
+member {
+  id: 0x110fb720
+  name: "events"
+  type_id: 0xfa03c3cb
+  offset: 3136
+}
+member {
+  id: 0x112579ab
+  name: "events"
+  type_id: 0xd0cc8854
+  offset: 960
+}
+member {
+  id: 0x11267216
+  name: "events"
+  type_id: 0xd3c80119
+  offset: 320
+}
+member {
+  id: 0x1126740f
+  name: "events"
+  type_id: 0xd3c80119
+  offset: 1920
+}
+member {
+  id: 0x112677ec
+  name: "events"
+  type_id: 0xd3c80119
+  offset: 704
+}
+member {
+  id: 0x112a56aa
+  name: "events"
+  type_id: 0xdfed0371
+  offset: 640
+}
+member {
+  id: 0x112c08c3
+  name: "events"
+  type_id: 0xd9b5b8b6
+  offset: 256
+}
+member {
+  id: 0x113c8788
+  name: "events"
+  type_id: 0xc93e017b
+  offset: 352
+}
+member {
+  id: 0x114581c6
+  name: "events"
+  type_id: 0xb0312d5a
+  offset: 32
+}
+member {
+  id: 0x114cfa02
+  name: "events"
+  type_id: 0xb94e10c7
+  offset: 128
+}
+member {
+  id: 0x11929d03
+  name: "events"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x1198c777
+  name: "events"
+  type_id: 0x6d7f5ff6
+  offset: 1032
+}
+member {
+  id: 0x11a602db
+  name: "events"
+  type_id: 0x53bf0b06
+}
+member {
+  id: 0x11c1079f
+  name: "events"
+  type_id: 0x34bd88ad
+  offset: 320
+}
+member {
+  id: 0x11dc26e6
+  name: "events"
+  type_id: 0x299c4193
+  offset: 448
+}
+member {
+  id: 0x11f140b1
+  name: "events"
+  type_id: 0x04fd619c
+}
+member {
+  id: 0x11f8a01d
+  name: "events"
+  type_id: 0x0d140f5f
+  offset: 128
+}
+member {
+  id: 0x1e5cec94
+  name: "events_file"
+  type_id: 0x0ee0f933
+  offset: 2880
+}
+member {
+  id: 0x1e5cee5b
+  name: "events_file"
+  type_id: 0x0ee0f933
+  offset: 9984
+}
+member {
+  id: 0x97ab0bd6
+  name: "events_guest"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0xa9fd6a40
+  name: "events_host"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x5701ba28
+  name: "events_local_file"
+  type_id: 0x0ee0f933
+  offset: 10560
+}
+member {
+  id: 0x3c569c3a
+  name: "events_lock"
+  type_id: 0xa7c362b0
+  offset: 448
+}
+member {
+  id: 0xcd1bd01e
+  name: "events_pending"
+  type_id: 0xfa03c3cb
+  offset: 7232
+}
+member {
+  id: 0x2134a503
+  name: "events_prev"
+  type_id: 0xfa03c3cb
+  offset: 7232
+}
+member {
+  id: 0xd2c00a64
+  name: "evfd_last_cq_tail"
+  type_id: 0x4585663f
+  offset: 10592
+}
+member {
+  id: 0xb31e7df6
+  name: "evict_flags"
+  type_id: 0x0cd1cfb6
+  offset: 320
+}
+member {
+  id: 0x51a47e4c
+  name: "evict_inode"
+  type_id: 0x0f0e74c9
+  offset: 384
+}
+member {
+  id: 0x9cd3894a
+  name: "evicted"
+  type_id: 0xa4e7cb57
+  offset: 8000
+}
+member {
+  id: 0x44e1a460
+  name: "eviction_valuable"
+  type_id: 0x374ce5e7
+  offset: 256
+}
+member {
+  id: 0x89066d93
+  name: "evt_page"
+  type_id: 0xedf277ba
+  offset: 128
+}
+member {
+  id: 0x6ad2f83c
+  name: "evt_rx"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x6a9a7eaf
+  name: "evts"
+  type_id: 0x387bec7d
+  offset: 128
+}
+member {
+  id: 0x78e47074
+  name: "ew"
+  type_id: 0x87af050a
+  offset: 18368
+}
+member {
+  id: 0x08a7a3fa
+  name: "ewma"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x079a692a
+  name: "ewma_log"
+  type_id: 0x295c7202
+  offset: 256
+}
+member {
+  id: 0xbba39a9a
+  name: "ex"
+  type_id: 0x00e0bdde
+}
+member {
+  id: 0x9941f692
+  name: "exceed"
+  type_id: 0x1a6854cd
+  offset: 416
+}
+member {
+  id: 0x6245278e
+  name: "exception"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xc448ecdc
+  name: "exception_arg"
+  type_id: 0x18bd6530
+  offset: 3008
+}
+member {
+  id: 0x9620795b
+  name: "exception_req_tag"
+  type_id: 0x4585663f
+  offset: 2944
+}
+member {
+  id: 0x5d289cd9
+  name: "exclude_callchain_kernel"
+  type_id: 0xedf277ba
+  offset: 341
+  bitsize: 1
+}
+member {
+  id: 0x878a9371
+  name: "exclude_callchain_user"
+  type_id: 0xedf277ba
+  offset: 342
+  bitsize: 1
+}
+member {
+  id: 0xeb515033
+  name: "exclude_guest"
+  type_id: 0xedf277ba
+  offset: 340
+  bitsize: 1
+}
+member {
+  id: 0x84fd3714
+  name: "exclude_host"
+  type_id: 0xedf277ba
+  offset: 339
+  bitsize: 1
+}
+member {
+  id: 0x1e4c8039
+  name: "exclude_hv"
+  type_id: 0xedf277ba
+  offset: 326
+  bitsize: 1
+}
+member {
+  id: 0x90a3ebca
+  name: "exclude_idle"
+  type_id: 0xedf277ba
+  offset: 327
+  bitsize: 1
+}
+member {
+  id: 0x94724c76
+  name: "exclude_kernel"
+  type_id: 0xedf277ba
+  offset: 325
+  bitsize: 1
+}
+member {
+  id: 0x00285819
+  name: "exclude_user"
+  type_id: 0xedf277ba
+  offset: 324
+  bitsize: 1
+}
+member {
+  id: 0x1520e90b
+  name: "exclusive"
+  type_id: 0x4585663f
+  offset: 9984
+  bitsize: 1
+}
+member {
+  id: 0x15889228
+  name: "exclusive"
+  type_id: 0xedf277ba
+  offset: 323
+  bitsize: 1
+}
+member {
+  id: 0xeed7a28d
+  name: "exclusive"
+  type_id: 0x6720d32f
+  offset: 2464
+}
+member {
+  id: 0xeed7ab21
+  name: "exclusive"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x78a381ab
+  name: "exclusive_cnt"
+  type_id: 0x74d29cf1
+  offset: 640
+}
+member {
+  id: 0x4da7d7b1
+  name: "exclusive_count"
+  type_id: 0x4585663f
+  offset: 384
+}
+member {
+  id: 0x7815abe3
+  name: "exe_file"
+  type_id: 0x18ea6ae3
+  offset: 6720
+}
+member {
+  id: 0x455ccc20
+  name: "exec"
+  type_id: 0x33756485
+  offset: 1088
+}
+member {
+  id: 0xf4cecd5d
+  name: "exec_clock"
+  type_id: 0x92233392
+  offset: 256
+}
+member {
+  id: 0x64486323
+  name: "exec_max"
+  type_id: 0x92233392
+  offset: 768
+}
+member {
+  id: 0x4ff53cc7
+  name: "exec_op"
+  type_id: 0x2dc9cc30
+  offset: 128
+}
+member {
+  id: 0xba997698
+  name: "exec_start"
+  type_id: 0x92233392
+  offset: 512
+}
+member {
+  id: 0x99530108
+  name: "exec_update_lock"
+  type_id: 0x28b9ec9a
+  offset: 8256
+}
+member {
+  id: 0x1d4efe94
+  name: "exec_vm"
+  type_id: 0x33756485
+  offset: 1856
+}
+member {
+  id: 0x2e311282
+  name: "execfd"
+  type_id: 0x6720d32f
+  offset: 992
+}
+member {
+  id: 0xb549bf0e
+  name: "execfd_creds"
+  type_id: 0x4585663f
+  offset: 321
+  bitsize: 1
+}
+member {
+  id: 0xaa435256
+  name: "executable"
+  type_id: 0x18ea6ae3
+  offset: 384
+}
+member {
+  id: 0x8a71767e
+  name: "execute_hs400_tuning"
+  type_id: 0x2e93f0ca
+  offset: 896
+}
+member {
+  id: 0xa48ff337
+  name: "execute_tuning"
+  type_id: 0x2e589dc4
+  offset: 768
+}
+member {
+  id: 0x7883b5a8
+  name: "execve"
+  type_id: 0x1079838a
+}
+member {
+  id: 0x0d0d4cfd
+  name: "exit"
+  type_id: 0x2d4fc86f
+  offset: 64
+}
+member {
+  id: 0x0d0d659f
+  name: "exit"
+  type_id: 0x2d6a829d
+  offset: 192
+}
+member {
+  id: 0x0d0de0eb
+  name: "exit"
+  type_id: 0x2de9e33f
+  offset: 1152
+}
+member {
+  id: 0x0d0de554
+  name: "exit"
+  type_id: 0x2de5f797
+  offset: 448
+}
+member {
+  id: 0x0d0e9cad
+  name: "exit"
+  type_id: 0x2e9f98e1
+  offset: 64
+}
+member {
+  id: 0x0d2c29e2
+  name: "exit"
+  type_id: 0x0c27c566
+  offset: 2240
+}
+member {
+  id: 0x0d2d31b0
+  name: "exit"
+  type_id: 0x0d301752
+  offset: 1792
+}
+member {
+  id: 0x0d2e75d7
+  name: "exit"
+  type_id: 0x0e72a800
+  offset: 256
+}
+member {
+  id: 0x0d2e7b75
+  name: "exit"
+  type_id: 0x0e7c0a8b
+  offset: 256
+}
+member {
+  id: 0x0d2e95e4
+  name: "exit"
+  type_id: 0x0e93a255
+  offset: 384
+}
+member {
+  id: 0x0d2ea0d2
+  name: "exit"
+  type_id: 0x0eafcf90
+  offset: 192
+}
+member {
+  id: 0x0d2eb737
+  name: "exit"
+  type_id: 0x0eb62dc3
+  offset: 7872
+}
+member {
+  id: 0x0d2ec00a
+  name: "exit"
+  type_id: 0x0ece1cac
+  offset: 128
+}
+member {
+  id: 0x0d2eef98
+  name: "exit"
+  type_id: 0x0ee0e2a3
+  offset: 768
+}
+member {
+  id: 0x0d2f2958
+  name: "exit"
+  type_id: 0x0f2a6d84
+  offset: 64
+}
+member {
+  id: 0x0d2f3244
+  name: "exit"
+  type_id: 0x0f325746
+  offset: 320
+}
+member {
+  id: 0x0d2f6890
+  name: "exit"
+  type_id: 0x0f67b75e
+  offset: 960
+}
+member {
+  id: 0x0d2f69d8
+  name: "exit"
+  type_id: 0x0f677ef9
+  offset: 576
+}
+member {
+  id: 0x32afb000
+  name: "exit_avg_ms"
+  type_id: 0xd05fb2d0
+  offset: 1600
+}
+member {
+  id: 0xeb4404a9
+  name: "exit_batch"
+  type_id: 0x0d500e5d
+  offset: 320
+}
+member {
+  id: 0x51eb1ae4
+  name: "exit_cmd_priv"
+  type_id: 0x2cb23e2c
+  offset: 576
+}
+member {
+  id: 0xe8fd4df4
+  name: "exit_code"
+  type_id: 0x6720d32f
+  offset: 11840
+}
+member {
+  id: 0x4159b030
+  name: "exit_hctx"
+  type_id: 0x0cd3272c
+  offset: 704
+}
+member {
+  id: 0x4159bac4
+  name: "exit_hctx"
+  type_id: 0x0cd3272c
+  offset: 192
+}
+member {
+  id: 0x195a9d9a
+  name: "exit_icq"
+  type_id: 0x0f5f18a4
+  offset: 1344
+}
+member {
+  id: 0x180d3bd9
+  name: "exit_latency"
+  type_id: 0x4585663f
+  offset: 544
+}
+member {
+  id: 0x46773687
+  name: "exit_latency_ns"
+  type_id: 0x2e0f9112
+  offset: 384
+}
+member {
+  id: 0x96d146eb
+  name: "exit_list"
+  type_id: 0xd3c80119
+  offset: 384
+}
+member {
+  id: 0x42bd9428
+  name: "exit_rcu"
+  type_id: 0x92233392
+  offset: 2624
+}
+member {
+  id: 0x4f84d1da
+  name: "exit_reason"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x4648209b
+  name: "exit_request"
+  type_id: 0x0c60f8c3
+  offset: 832
+}
+member {
+  id: 0x24c22e21
+  name: "exit_sched"
+  type_id: 0x0ecfa2f0
+  offset: 64
+}
+member {
+  id: 0xb4e1569b
+  name: "exit_signal"
+  type_id: 0x6720d32f
+  offset: 11872
+}
+member {
+  id: 0x6e4f158e
+  name: "exit_state"
+  type_id: 0x6720d32f
+  offset: 11808
+}
+member {
+  id: 0x7c8633eb
+  name: "exit_tfm"
+  type_id: 0x0f5f5d9d
+  offset: 576
+}
+member {
+  id: 0x7c86a539
+  name: "exit_tfm"
+  type_id: 0x0fc98f46
+  offset: 576
+}
+member {
+  id: 0xcbce197b
+  name: "exit_work"
+  type_id: 0x1f3c8679
+  offset: 9536
+}
+member {
+  id: 0x154265da
+  name: "exited"
+  type_id: 0x3fcbf304
+  offset: 1024
+}
+member {
+  id: 0x237f1104
+  name: "exits"
+  type_id: 0x92233392
+  offset: 7040
+}
+member {
+  id: 0x964efc36
+  name: "exp"
+  type_id: 0x1077b920
+}
+member {
+  id: 0x469a1cc1
+  name: "exp_data_transfer_len"
+  type_id: 0xe276adef
+}
+member {
+  id: 0xc563626c
+  name: "exp_event"
+  type_id: 0x299bc178
+  offset: 64
+}
+member {
+  id: 0x5b2d4e53
+  name: "exp_hint"
+  type_id: 0x295c7202
+  offset: 16
+}
+member {
+  id: 0x3333aa70
+  name: "exp_lock"
+  type_id: 0xf313e71a
+  offset: 3584
+}
+member {
+  id: 0x4a63e672
+  name: "exp_name"
+  type_id: 0x3e10b518
+  offset: 896
+}
+member {
+  id: 0x4a63ecd4
+  name: "exp_name"
+  type_id: 0x3e10b518
+}
+member {
+  id: 0xe7acad8a
+  name: "exp_need_flush"
+  type_id: 0x6d7f5ff6
+  offset: 4864
+}
+member {
+  id: 0x4cc1bc64
+  name: "exp_poll_lock"
+  type_id: 0xc8b17aa7
+  offset: 4896
+}
+member {
+  id: 0x42ae50e3
+  name: "exp_poll_wq"
+  type_id: 0x1f3c8679
+  offset: 4992
+}
+member {
+  id: 0x7275db5f
+  name: "exp_seq_poll_rq"
+  type_id: 0x33756485
+  offset: 4928
+}
+member {
+  id: 0x9338d0c9
+  name: "exp_seq_rq"
+  type_id: 0x33756485
+  offset: 3648
+}
+member {
+  id: 0x938527d6
+  name: "exp_tasks"
+  type_id: 0x3e6239e1
+  offset: 1280
+}
+member {
+  id: 0x042bfe7b
+  name: "exp_wq"
+  type_id: 0x8ca95ffa
+  offset: 3712
+}
+member {
+  id: 0xe06305b6
+  name: "expect_ack"
+  type_id: 0x6d7f5ff6
+  offset: 8688
+}
+member {
+  id: 0x40cc35fe
+  name: "expect_class_max"
+  type_id: 0x4585663f
+  offset: 1024
+}
+member {
+  id: 0xc970881d
+  name: "expect_create"
+  type_id: 0x4585663f
+  offset: 288
+}
+member {
+  id: 0x09769915
+  name: "expect_delete"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0x517fd762
+  name: "expect_new"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0xfcf50bf9
+  name: "expect_policy"
+  type_id: 0x39682308
+  offset: 384
+}
+member {
+  id: 0x5aeb5c9f
+  name: "expected_ack_seq"
+  type_id: 0xe8034002
+  offset: 1536
+}
+member {
+  id: 0x95115c54
+  name: "expected_attach_type"
+  type_id: 0xe62ebf07
+  offset: 544
+}
+member {
+  id: 0x9558ec36
+  name: "expected_attach_type"
+  type_id: 0xaf94e3a7
+  offset: 64
+}
+member {
+  id: 0x944087a5
+  name: "expected_tx_seq"
+  type_id: 0xe8034002
+  offset: 1552
+}
+member {
+  id: 0xee71f93c
+  name: "expectfn"
+  type_id: 0x0d0ed0eb
+  offset: 768
+}
+member {
+  id: 0x7bd3cf41
+  name: "expecting_cc_ua"
+  type_id: 0x4585663f
+  offset: 2798
+  bitsize: 1
+}
+member {
+  id: 0xe5dfa714
+  name: "expecting_lun_change"
+  type_id: 0x4585663f
+  offset: 7716
+  bitsize: 1
+}
+member {
+  id: 0xbfc5c60c
+  name: "expire_count"
+  type_id: 0x33756485
+  offset: 1408
+}
+member {
+  id: 0x910364e7
+  name: "expires"
+  type_id: 0x33756485
+  offset: 384
+}
+member {
+  id: 0x910365de
+  name: "expires"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0x91036cb7
+  name: "expires"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x91036dbc
+  name: "expires"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0x9121dcdc
+  name: "expires"
+  type_id: 0x11c404ba
+  offset: 192
+}
+member {
+  id: 0x91a23322
+  name: "expires"
+  type_id: 0x92233392
+}
+member {
+  id: 0x91a23ae0
+  name: "expires"
+  type_id: 0x92233392
+  offset: 128
+}
+member {
+  id: 0x91ddeba4
+  name: "expires"
+  type_id: 0xedf277ba
+  offset: 128
+}
+member {
+  id: 0xebec3231
+  name: "expires_next"
+  type_id: 0x11c404ba
+  offset: 256
+}
+member {
+  id: 0x7fe30715
+  name: "expiry"
+  type_id: 0x865acc96
+  offset: 576
+}
+member {
+  id: 0x7fe30e67
+  name: "expiry"
+  type_id: 0x865acc96
+}
+member {
+  id: 0x1bdc2ede
+  name: "expiry_active"
+  type_id: 0x4585663f
+  offset: 608
+}
+member {
+  id: 0x01992270
+  name: "explicit_contract"
+  type_id: 0x6d7f5ff6
+  offset: 7912
+}
+member {
+  id: 0x45100f6b
+  name: "explicitly_created"
+  type_id: 0x6d7f5ff6
+  offset: 736
+}
+member {
+  id: 0xeaf7d412
+  name: "explore_alu_limits"
+  type_id: 0x6d7f5ff6
+  offset: 12896
+}
+member {
+  id: 0xa791b4e5
+  name: "explored_states"
+  type_id: 0x065e7be5
+  offset: 384
+}
+member {
+  id: 0x048b67fd
+  name: "expmask"
+  type_id: 0x33756485
+  offset: 512
+}
+member {
+  id: 0x8a553b94
+  name: "expmaskinit"
+  type_id: 0x33756485
+  offset: 576
+}
+member {
+  id: 0x2d768635
+  name: "expmaskinitnext"
+  type_id: 0x33756485
+  offset: 640
+}
+member {
+  id: 0xdf3a40d2
+  name: "exponent"
+  type_id: 0x007e8ce4
+  offset: 32
+}
+member {
+  id: 0x248e76cf
+  name: "export"
+  type_id: 0x1bfa1156
+  offset: 256
+}
+member {
+  id: 0x24b8d418
+  name: "export"
+  type_id: 0x2d5faaca
+  offset: 320
+}
+member {
+  id: 0x24bb4656
+  name: "export"
+  type_id: 0x2ecde42d
+  offset: 320
+}
+member {
+  id: 0x8b9ebb6a
+  name: "expose_to_userspace"
+  type_id: 0x6d7f5ff6
+  offset: 504
+}
+member {
+  id: 0x713c7886
+  name: "expr"
+  type_id: 0xdf3bd046
+  offset: 64
+}
+member {
+  id: 0x71e1baf7
+  name: "expr"
+  type_id: 0x02f9a1f8
+  offset: 64
+}
+member {
+  id: 0xa0783f48
+  name: "expr_type"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x9979519f
+  name: "ext"
+  type_id: 0x254e080a
+  offset: 1408
+}
+member {
+  id: 0x999aa4f3
+  name: "ext"
+  type_id: 0xc6b28f4f
+  offset: 512
+}
+member {
+  id: 0x997db32f
+  name: "ext_cap"
+  type_id: 0x01c0c6f8
+  offset: 64
+}
+member {
+  id: 0x8dc4aaad
+  name: "ext_caps"
+  type_id: 0x38d23361
+  offset: 58176
+}
+member {
+  id: 0x58d13e53
+  name: "ext_cb"
+  type_id: 0x3fefb42f
+  offset: 1728
+}
+member {
+  id: 0x50922243
+  name: "ext_compat_id"
+  type_id: 0x0483e6f8
+}
+member {
+  id: 0xead7848f
+  name: "ext_csd"
+  type_id: 0x1bbbf9dc
+  offset: 9216
+}
+member {
+  id: 0x2b9f6f75
+  name: "ext_csd_dentry"
+  type_id: 0x120540d1
+  offset: 4224
+}
+member {
+  id: 0xd3fd6d41
+  name: "ext_features"
+  type_id: 0x7dbd382e
+  offset: 896
+}
+member {
+  id: 0xc7dd1e99
+  name: "ext_flags"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0xb8eec506
+  name: "ext_iid_sup"
+  type_id: 0x6d7f5ff6
+  offset: 40264
+}
+member {
+  id: 0xd2804251
+  name: "ext_info"
+  type_id: 0x3743b750
+  offset: 960
+}
+member {
+  id: 0xa6cd1e95
+  name: "ext_msg"
+  type_id: 0xf24f58c4
+}
+member {
+  id: 0x7fec7163
+  name: "ext_perf"
+  type_id: 0xe4fe739b
+  offset: 10944
+}
+member {
+  id: 0xc37c7785
+  name: "ext_power"
+  type_id: 0xe4fe739b
+  offset: 10880
+}
+member {
+  id: 0xd1caa58e
+  name: "ext_prop"
+  type_id: 0xd3c80119
+  offset: 64
+}
+member {
+  id: 0xb3825cd2
+  name: "ext_prop_count"
+  type_id: 0x6720d32f
+  offset: 224
+}
+member {
+  id: 0xe899f6f3
+  name: "ext_prop_len"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0x179e6085
+  name: "extable"
+  type_id: 0x3110588d
+  offset: 2880
+}
+member {
+  id: 0x179e6e98
+  name: "extable"
+  type_id: 0x3110588d
+  offset: 8256
+}
+member {
+  id: 0x103ee183
+  name: "extack"
+  type_id: 0x07dcdbe1
+  offset: 384
+}
+member {
+  id: 0x103ee766
+  name: "extack"
+  type_id: 0x07dcdbe1
+  offset: 448
+}
+member {
+  id: 0x103ee9d3
+  name: "extack"
+  type_id: 0x07dcdbe1
+  offset: 128
+}
+member {
+  id: 0x103eeb09
+  name: "extack"
+  type_id: 0x07dcdbe1
+  offset: 512
+}
+member {
+  id: 0xa5453312
+  name: "extcon_dev_type"
+  type_id: 0xf292150d
+  offset: 7872
+}
+member {
+  id: 0x19e42f07
+  name: "extend_name"
+  type_id: 0x3e10b518
+  offset: 1024
+}
+member {
+  id: 0x173c5725
+  name: "extended_addr"
+  type_id: 0x78f4e574
+  offset: 512
+}
+member {
+  id: 0x173c5c3d
+  name: "extended_addr"
+  type_id: 0x78f4e574
+}
+member {
+  id: 0x340bc2e2
+  name: "extended_capabilities"
+  type_id: 0x3f0185ef
+  offset: 64
+}
+member {
+  id: 0x340bcff0
+  name: "extended_capabilities"
+  type_id: 0x3f0185ef
+  offset: 2240
+}
+member {
+  id: 0x3965bcab
+  name: "extended_capabilities_len"
+  type_id: 0x295c7202
+  offset: 192
+}
+member {
+  id: 0x3965bd17
+  name: "extended_capabilities_len"
+  type_id: 0x295c7202
+  offset: 2368
+}
+member {
+  id: 0xdf5846e7
+  name: "extended_capabilities_mask"
+  type_id: 0x3f0185ef
+  offset: 2304
+}
+member {
+  id: 0xdf58482e
+  name: "extended_capabilities_mask"
+  type_id: 0x3f0185ef
+  offset: 128
+}
+member {
+  id: 0x63e94fbc
+  name: "extended_cc"
+  type_id: 0x295c7202
+  offset: 288
+}
+member {
+  id: 0xa9debf46
+  name: "extended_colorimetry"
+  type_id: 0x35cc5e1b
+  offset: 256
+}
+member {
+  id: 0x47d5739d
+  name: "extended_ht_cap_info"
+  type_id: 0x9bd401b6
+  offset: 152
+}
+member {
+  id: 0x6b1114e9
+  name: "extended_name_get"
+  type_id: 0x2e152fbb
+}
+member {
+  id: 0xa0d458ce
+  name: "extended_src"
+  type_id: 0x78f4e574
+}
+member {
+  id: 0x786e8718
+  name: "extendedmode"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0xbf324d0a
+  name: "extension_id"
+  type_id: 0x33756485
+}
+member {
+  id: 0x9478fd81
+  name: "extension_prog"
+  type_id: 0x3382a638
+  offset: 1088
+}
+member {
+  id: 0x408bffde
+  name: "extensions"
+  type_id: 0x295c7202
+  offset: 1008
+}
+member {
+  id: 0x40970d29
+  name: "extensions"
+  type_id: 0x35a0b0e9
+  offset: 1920
+}
+member {
+  id: 0xca9f2e3d
+  name: "extent"
+  type_id: 0xddb93ca3
+}
+member {
+  id: 0x46e927d7
+  name: "external"
+  type_id: 0x295c7202
+  offset: 48
+  bitsize: 1
+}
+member {
+  id: 0x46e92f8a
+  name: "external"
+  type_id: 0x295c7202
+  offset: 80
+  bitsize: 1
+}
+member {
+  id: 0x46e92ff7
+  name: "external"
+  type_id: 0x295c7202
+  offset: 64
+  bitsize: 1
+}
+member {
+  id: 0x15ff4fe5
+  name: "external_debug_state"
+  type_id: 0x590c6dd8
+  offset: 19584
+}
+member {
+  id: 0x77b6c0c4
+  name: "external_facing"
+  type_id: 0x4585663f
+  offset: 22116
+  bitsize: 1
+}
+member {
+  id: 0x56f90532
+  name: "external_power_changed"
+  type_id: 0x0f377d1a
+  offset: 576
+}
+member {
+  id: 0x50469023
+  name: "extra"
+  type_id: 0x1df06cce
+  offset: 128
+}
+member {
+  id: 0x5046957b
+  name: "extra"
+  type_id: 0x1df06cce
+  offset: 5312
+}
+member {
+  id: 0x50469e96
+  name: "extra"
+  type_id: 0x1df06cce
+  offset: 448
+}
+member {
+  id: 0x50e885d1
+  name: "extra"
+  type_id: 0xb3e7bac9
+  offset: 8
+}
+member {
+  id: 0xd4756d84
+  name: "extra1"
+  type_id: 0x92233392
+}
+member {
+  id: 0xd4fff240
+  name: "extra1"
+  type_id: 0x18bd6530
+  offset: 384
+}
+member {
+  id: 0x9b333e51
+  name: "extra2"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0x9bb9a391
+  name: "extra2"
+  type_id: 0x18bd6530
+  offset: 448
+}
+member {
+  id: 0x31669eb3
+  name: "extra_buffers_size"
+  type_id: 0xf435685e
+  offset: 640
+}
+member {
+  id: 0xad9504ea
+  name: "extra_bw"
+  type_id: 0x92233392
+  offset: 640
+}
+member {
+  id: 0x18195f00
+  name: "extra_flags"
+  type_id: 0xc9082b19
+  offset: 288
+}
+member {
+  id: 0x6b305499
+  name: "extra_info"
+  type_id: 0xe8034002
+  offset: 48
+}
+member {
+  id: 0x358ddfc1
+  name: "extra_len"
+  type_id: 0x4585663f
+  offset: 2560
+}
+member {
+  id: 0x162bfab8
+  name: "extra_priv_size"
+  type_id: 0xf435685e
+}
+member {
+  id: 0x892b557f
+  name: "extra_reg"
+  type_id: 0x0dc57607
+  offset: 384
+}
+member {
+  id: 0x19c3e87e
+  name: "extra_tx_headroom"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x942c95a1
+  name: "extralen"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0x942c973a
+  name: "extralen"
+  type_id: 0x6720d32f
+  offset: 512
+}
+member {
+  id: 0x942c9a19
+  name: "extralen"
+  type_id: 0x6720d32f
+  offset: 5376
+}
+member {
+  id: 0x6e64cfbe
+  name: "extsize"
+  type_id: 0x392b09db
+  offset: 64
+}
+member {
+  id: 0xce8b62d8
+  name: "extts"
+  type_id: 0x9c5a8d11
+}
+member {
+  id: 0x7accc807
+  name: "extval"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x41997f46
+  name: "f"
+  type_id: 0x02862e14
+  offset: 192
+}
+member {
+  id: 0x41bb9707
+  name: "f"
+  type_id: 0x2060db23
+  offset: 1280
+}
+member {
+  id: 0x6daae6aa
+  name: "f6i"
+  type_id: 0x238091f9
+  offset: 64
+}
+member {
+  id: 0x4e6c1cfa
+  name: "f6i_list"
+  type_id: 0xd3c80119
+  offset: 320
+}
+member {
+  id: 0x1306abca
+  name: "fE"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x3094987c
+  name: "f_bavail"
+  type_id: 0x92233392
+  offset: 256
+}
+member {
+  id: 0xa047e2a9
+  name: "f_bfree"
+  type_id: 0x92233392
+  offset: 192
+}
+member {
+  id: 0xf06da157
+  name: "f_blocks"
+  type_id: 0x92233392
+  offset: 128
+}
+member {
+  id: 0x23e4127f
+  name: "f_bsize"
+  type_id: 0xfc0e1dbd
+  offset: 64
+}
+member {
+  id: 0x7951306b
+  name: "f_code"
+  type_id: 0x7cbd6b77
+  offset: 160
+}
+member {
+  id: 0x096d0c2b
+  name: "f_count"
+  type_id: 0xb02b353a
+  offset: 448
+}
+member {
+  id: 0xa6beedbc
+  name: "f_cred"
+  type_id: 0x30650ba6
+  offset: 1280
+}
+member {
+  id: 0x5010272b
+  name: "f_ep"
+  type_id: 0x1d33485a
+  offset: 1792
+}
+member {
+  id: 0x93209157
+  name: "f_ffree"
+  type_id: 0x92233392
+  offset: 384
+}
+member {
+  id: 0x6b702cf0
+  name: "f_files"
+  type_id: 0x92233392
+  offset: 320
+}
+member {
+  id: 0x385684f0
+  name: "f_flags"
+  type_id: 0x4585663f
+  offset: 512
+}
+member {
+  id: 0x38568cd5
+  name: "f_flags"
+  type_id: 0x4585663f
+  offset: 2752
+}
+member {
+  id: 0x38ef02ea
+  name: "f_flags"
+  type_id: 0xfc0e1dbd
+  offset: 640
+}
+member {
+  id: 0x08a5d13a
+  name: "f_frsize"
+  type_id: 0xfc0e1dbd
+  offset: 576
+}
+member {
+  id: 0xc14b2ed8
+  name: "f_fsid"
+  type_id: 0x891aa0dd
+  offset: 448
+}
+member {
+  id: 0x6f655677
+  name: "f_init"
+  type_id: 0x4585663f
+  offset: 7616
+}
+member {
+  id: 0x2ed501e6
+  name: "f_inode"
+  type_id: 0x1b8590a8
+  offset: 256
+}
+member {
+  id: 0xae60756a
+  name: "f_iocb_flags"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xa2e31b8a
+  name: "f_llist"
+  type_id: 0x214d9bc0
+}
+member {
+  id: 0x6be2c3bf
+  name: "f_lock"
+  type_id: 0xf313e71a
+  offset: 384
+}
+member {
+  id: 0x762282c2
+  name: "f_mapping"
+  type_id: 0x105b358b
+  offset: 256
+}
+member {
+  id: 0x762750ea
+  name: "f_mapping"
+  type_id: 0x1582ab06
+  offset: 1856
+}
+member {
+  id: 0x66cbe762
+  name: "f_max"
+  type_id: 0x4585663f
+  offset: 7584
+}
+member {
+  id: 0xf90d8761
+  name: "f_min"
+  type_id: 0x4585663f
+  offset: 7552
+}
+member {
+  id: 0x8f5951cd
+  name: "f_mode"
+  type_id: 0x9547a3da
+  offset: 544
+}
+member {
+  id: 0x072a4028
+  name: "f_namelen"
+  type_id: 0xfc0e1dbd
+  offset: 512
+}
+member {
+  id: 0x57e23087
+  name: "f_op"
+  type_id: 0x36d130d1
+  offset: 320
+}
+member {
+  id: 0x4a3a9a1a
+  name: "f_owner"
+  type_id: 0xd3a8736e
+  offset: 1024
+}
+member {
+  id: 0x9354dccd
+  name: "f_path"
+  type_id: 0x71a68091
+  offset: 128
+}
+member {
+  id: 0xaf177062
+  name: "f_pos"
+  type_id: 0x27a7c613
+  offset: 960
+}
+member {
+  id: 0x17b293a6
+  name: "f_pos_lock"
+  type_id: 0xa7c362b0
+  offset: 576
+}
+member {
+  id: 0x9edc9408
+  name: "f_power_on_wp_en"
+  type_id: 0x6d7f5ff6
+}
+member {
+  id: 0xe253edb7
+  name: "f_ra"
+  type_id: 0x60ac3160
+  offset: 1344
+}
+member {
+  id: 0x150f1b6e
+  name: "f_rcuhead"
+  type_id: 0xe3222f5b
+}
+member {
+  id: 0xc3689c34
+  name: "f_sb_err"
+  type_id: 0x160ba102
+  offset: 1952
+}
+member {
+  id: 0x7494e4f3
+  name: "f_security"
+  type_id: 0x18bd6530
+  offset: 1664
+}
+member {
+  id: 0x611c8426
+  name: "f_spare"
+  type_id: 0xb34e9475
+  offset: 704
+}
+member {
+  id: 0xba48c3e7
+  name: "f_type"
+  type_id: 0xfc0e1dbd
+}
+member {
+  id: 0x1f0efc70
+  name: "f_version"
+  type_id: 0x92233392
+  offset: 1600
+}
+member {
+  id: 0x8505aa0d
+  name: "f_wb_err"
+  type_id: 0x160ba102
+  offset: 1920
+}
+member {
+  id: 0x6f6b6d8a
+  name: "fa_fd"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0x7cce488e
+  name: "fa_file"
+  type_id: 0x18ea6ae3
+  offset: 192
+}
+member {
+  id: 0x2a3a4275
+  name: "fa_lock"
+  type_id: 0xf4933b90
+}
+member {
+  id: 0xffd914d8
+  name: "fa_next"
+  type_id: 0x25e44921
+  offset: 128
+}
+member {
+  id: 0xb724a620
+  name: "fa_rcu"
+  type_id: 0xe3222f5b
+  offset: 256
+}
+member {
+  id: 0x3fa23f63
+  name: "factory_internal_resistance_charging_uohm"
+  type_id: 0x6720d32f
+  offset: 704
+}
+member {
+  id: 0x808b228e
+  name: "factory_internal_resistance_uohm"
+  type_id: 0x6720d32f
+  offset: 672
+}
+member {
+  id: 0x0bad70a4
+  name: "fade_length"
+  type_id: 0xe8034002
+  offset: 32
+}
+member {
+  id: 0x8c39e7a9
+  name: "fade_level"
+  type_id: 0xe8034002
+  offset: 48
+}
+member {
+  id: 0x686b6f87
+  name: "fadvise"
+  type_id: 0x2c5b1d58
+  offset: 1984
+}
+member {
+  id: 0x9c970db9
+  name: "fadvise_advice"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x73029e0c
+  name: "fail_entry"
+  type_id: 0x315223c4
+}
+member {
+  id: 0x75d852d0
+  name: "failcnt"
+  type_id: 0x33756485
+  offset: 960
+}
+member {
+  id: 0xf747d410
+  name: "failed"
+  type_id: 0x6d7f5ff6
+  offset: 32
+}
+member {
+  id: 0x344b99f0
+  name: "fake_commit"
+  type_id: 0x3eb9d280
+  offset: 640
+}
+member {
+  id: 0xe0a42122
+  name: "fake_port"
+  type_id: 0x295c7202
+  offset: 35968
+}
+member {
+  id: 0x64aebb60
+  name: "fallback"
+  type_id: 0x6d7f5ff6
+  offset: 10632
+}
+member {
+  id: 0x2bc8f70b
+  name: "fallback_llist"
+  type_id: 0x0bf3e543
+  offset: 8384
+}
+member {
+  id: 0xfa3ad812
+  name: "fallback_work"
+  type_id: 0xf1159c31
+  offset: 8448
+}
+member {
+  id: 0x5261bd5a
+  name: "fallocate"
+  type_id: 0x22b3ece7
+  offset: 1728
+}
+member {
+  id: 0x5aeeb2c1
+  name: "fallocend"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0x22c3bf72
+  name: "false_list"
+  type_id: 0xdc39b636
+  offset: 320
+}
+member {
+  id: 0x9e3288ce
+  name: "family"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x9e6bbc49
+  name: "family"
+  type_id: 0x3e10b518
+  offset: 64
+}
+member {
+  id: 0x9e7cf46f
+  name: "family"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x9e7cfca6
+  name: "family"
+  type_id: 0x295c7202
+  offset: 192
+}
+member {
+  id: 0x9e7cff89
+  name: "family"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0x9e9c961c
+  name: "family"
+  type_id: 0xc93e017b
+}
+member {
+  id: 0x9ebdabf6
+  name: "family"
+  type_id: 0xe8034002
+  offset: 256
+}
+member {
+  id: 0x9ebdac9a
+  name: "family"
+  type_id: 0xe8034002
+  offset: 320
+}
+member {
+  id: 0x9ec4e13e
+  name: "family"
+  type_id: 0x914dbfdc
+  offset: 80
+}
+member {
+  id: 0x9ec4e2d5
+  name: "family"
+  type_id: 0x914dbfdc
+  offset: 448
+}
+member {
+  id: 0x9ec4e718
+  name: "family"
+  type_id: 0x914dbfdc
+  offset: 3248
+}
+member {
+  id: 0x9ee64fa7
+  name: "family"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0xe9c99bd1
+  name: "far"
+  type_id: 0xedf277ba
+  offset: 64
+}
+member {
+  id: 0x550ab6b9
+  name: "far_el2"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0x0b6f4436
+  name: "fast_io"
+  type_id: 0x6d7f5ff6
+  offset: 1344
+}
+member {
+  id: 0x0b6f4eb5
+  name: "fast_io"
+  type_id: 0x6d7f5ff6
+}
+member {
+  id: 0xd0fd5f6f
+  name: "fast_reconnect"
+  type_id: 0x2ddf4eb6
+  offset: 448
+}
+member {
+  id: 0x70f6d253
+  name: "fast_search_fail"
+  type_id: 0xc93e017b
+  offset: 704
+}
+member {
+  id: 0xe96aa3ec
+  name: "fast_start_pfn"
+  type_id: 0x33756485
+  offset: 448
+}
+member {
+  id: 0xbca4e4c9
+  name: "fast_switch"
+  type_id: 0x397a812c
+  offset: 576
+}
+member {
+  id: 0xad5481c4
+  name: "fast_switch_enabled"
+  type_id: 0x6d7f5ff6
+  offset: 5000
+}
+member {
+  id: 0xf998b12f
+  name: "fast_switch_possible"
+  type_id: 0x6d7f5ff6
+  offset: 4992
+}
+member {
+  id: 0xbe23cb67
+  name: "fastchannel_db_ring"
+  type_id: 0x0e44aca7
+  offset: 256
+}
+member {
+  id: 0x15edb896
+  name: "fastchannel_init"
+  type_id: 0x0d53cd40
+  offset: 192
+}
+member {
+  id: 0xa3521312
+  name: "fasync"
+  type_id: 0x25e44921
+  offset: 6400
+}
+member {
+  id: 0xa3521a08
+  name: "fasync"
+  type_id: 0x25e44921
+}
+member {
+  id: 0xa3521d20
+  name: "fasync"
+  type_id: 0x25e44921
+  offset: 4736
+}
+member {
+  id: 0xa35c6c09
+  name: "fasync"
+  type_id: 0x2b9c9439
+  offset: 1152
+}
+member {
+  id: 0xa364417d
+  name: "fasync"
+  type_id: 0x13ba025e
+  offset: 2688
+}
+member {
+  id: 0xa3644d31
+  name: "fasync"
+  type_id: 0x13ba025e
+  offset: 576
+}
+member {
+  id: 0x7060704a
+  name: "fasync_list"
+  type_id: 0x25e44921
+  offset: 192
+}
+member {
+  id: 0xc34194fd
+  name: "fasync_readers"
+  type_id: 0x25e44921
+  offset: 1216
+}
+member {
+  id: 0xa5eb13a1
+  name: "fasync_writers"
+  type_id: 0x25e44921
+  offset: 1280
+}
+member {
+  id: 0x7b6a6e0c
+  name: "fault"
+  type_id: 0xe41fd2fe
+  offset: 15104
+}
+member {
+  id: 0x7bb750d9
+  name: "fault"
+  type_id: 0x39290604
+  offset: 320
+}
+member {
+  id: 0x7bb7e377
+  name: "fault"
+  type_id: 0x3994adc8
+  offset: 128
+}
+member {
+  id: 0x7bfe1f40
+  name: "fault"
+  type_id: 0x706158d6
+}
+member {
+  id: 0x3f19072b
+  name: "fault_address"
+  type_id: 0x33756485
+  offset: 5632
+}
+member {
+  id: 0x657683aa
+  name: "fault_code"
+  type_id: 0x33756485
+  offset: 5696
+}
+member {
+  id: 0x1e5ce302
+  name: "fault_data"
+  type_id: 0x18bd6530
+  offset: 512
+}
+member {
+  id: 0xe9aff641
+  name: "fault_get"
+  type_id: 0x2e08aceb
+  offset: 320
+}
+member {
+  id: 0x559b32a7
+  name: "fault_ipa"
+  type_id: 0xedf277ba
+  offset: 64
+}
+member {
+  id: 0x5a9c41ae
+  name: "fault_param"
+  type_id: 0x2974a3dd
+  offset: 384
+}
+member {
+  id: 0x3162bad8
+  name: "fault_pending_wqh"
+  type_id: 0x03913382
+}
+member {
+  id: 0x05e73814
+  name: "fault_wqh"
+  type_id: 0x03913382
+  offset: 192
+}
+member {
+  id: 0xf332289b
+  name: "faults"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0xfaa79279
+  name: "fb"
+  type_id: 0x31c8b544
+  offset: 320
+}
+member {
+  id: 0xfaa792ee
+  name: "fb"
+  type_id: 0x31c8b544
+  offset: 1472
+}
+member {
+  id: 0xfaa793c7
+  name: "fb"
+  type_id: 0x31c8b544
+  offset: 640
+}
+member {
+  id: 0xfaa795be
+  name: "fb"
+  type_id: 0x31c8b544
+}
+member {
+  id: 0xfaa79c7c
+  name: "fb"
+  type_id: 0x31c8b544
+  offset: 128
+}
+member {
+  id: 0xfaa79f18
+  name: "fb"
+  type_id: 0x31c8b544
+  offset: 896
+}
+member {
+  id: 0xd833fe37
+  name: "fb_base"
+  type_id: 0x9565759f
+  offset: 4160
+}
+member {
+  id: 0x64d7ca61
+  name: "fb_bl_on"
+  type_id: 0x4f935f0c
+  offset: 8704
+}
+member {
+  id: 0xa610aba5
+  name: "fb_blank"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0xa65c3349
+  name: "fb_blank"
+  type_id: 0x2bb8cefc
+  offset: 576
+}
+member {
+  id: 0x0e42cec6
+  name: "fb_check_var"
+  type_id: 0x2caba586
+  offset: 320
+}
+member {
+  id: 0x1887c453
+  name: "fb_compat_ioctl"
+  type_id: 0x2e1a997c
+  offset: 1088
+}
+member {
+  id: 0x0f70316b
+  name: "fb_copyarea"
+  type_id: 0x0d29cddd
+  offset: 768
+}
+member {
+  id: 0xb7d4f660
+  name: "fb_create"
+  type_id: 0x20937fbf
+}
+member {
+  id: 0x8f212531
+  name: "fb_cursor"
+  type_id: 0x2e525083
+  offset: 896
+}
+member {
+  id: 0x3cba997b
+  name: "fb_damage_clips"
+  type_id: 0x343ebce3
+  offset: 704
+}
+member {
+  id: 0x078fe1c9
+  name: "fb_debug_enter"
+  type_id: 0x2e5c2b4c
+  offset: 1344
+}
+member {
+  id: 0x6ff76bb8
+  name: "fb_debug_leave"
+  type_id: 0x2e5c2b4c
+  offset: 1408
+}
+member {
+  id: 0x6e69851e
+  name: "fb_destroy"
+  type_id: 0x0d1a07e3
+  offset: 1280
+}
+member {
+  id: 0x9c609fcf
+  name: "fb_fillrect"
+  type_id: 0x0d2a9f3d
+  offset: 704
+}
+member {
+  id: 0x68d222c4
+  name: "fb_get_caps"
+  type_id: 0x0d05fda7
+  offset: 1216
+}
+member {
+  id: 0x7636b6f9
+  name: "fb_height"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x48b4a326
+  name: "fb_helper"
+  type_id: 0x3c8cb790
+  offset: 14016
+}
+member {
+  id: 0x1b7be1f5
+  name: "fb_id"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x40beff82
+  name: "fb_imageblit"
+  type_id: 0x0d2958f6
+  offset: 832
+}
+member {
+  id: 0x4e62e8f5
+  name: "fb_ioctl"
+  type_id: 0x2e1a997c
+  offset: 1024
+}
+member {
+  id: 0x23a74f2b
+  name: "fb_list"
+  type_id: 0xd3c80119
+  offset: 2240
+}
+member {
+  id: 0xd1234ff9
+  name: "fb_lock"
+  type_id: 0xa7c362b0
+  offset: 1792
+}
+member {
+  id: 0x9fb0b407
+  name: "fb_mmap"
+  type_id: 0x2e56380d
+  offset: 1152
+}
+member {
+  id: 0x9034e89b
+  name: "fb_modifiers_not_supported"
+  type_id: 0x6d7f5ff6
+  offset: 9568
+}
+member {
+  id: 0xe99e9549
+  name: "fb_notif"
+  type_id: 0x449a775b
+  offset: 1088
+}
+member {
+  id: 0x5983bf80
+  name: "fb_open"
+  type_id: 0x2e3b0b9f
+  offset: 64
+}
+member {
+  id: 0x3fe6de17
+  name: "fb_pan_display"
+  type_id: 0x2caba586
+  offset: 640
+}
+member {
+  id: 0xba4665ca
+  name: "fb_probe"
+  type_id: 0x2e18b2bb
+}
+member {
+  id: 0x1ae98a5b
+  name: "fb_read"
+  type_id: 0x0c0ba82e
+  offset: 192
+}
+member {
+  id: 0x2a65fb22
+  name: "fb_release"
+  type_id: 0x2e3b0b9f
+  offset: 128
+}
+member {
+  id: 0x12d8ba1f
+  name: "fb_set_par"
+  type_id: 0x2e5c2b4c
+  offset: 384
+}
+member {
+  id: 0x78b5168c
+  name: "fb_setcmap"
+  type_id: 0x2e9e4338
+  offset: 512
+}
+member {
+  id: 0x7167cccc
+  name: "fb_setcolreg"
+  type_id: 0x29e9cbd8
+  offset: 448
+}
+member {
+  id: 0x85c811af
+  name: "fb_sync"
+  type_id: 0x2e5c2b4c
+  offset: 960
+}
+member {
+  id: 0xa9fbf1e6
+  name: "fb_width"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xc2d99954
+  name: "fb_write"
+  type_id: 0x0c313b7d
+  offset: 256
+}
+member {
+  id: 0x39db2a64
+  name: "fbcon_par"
+  type_id: 0x18bd6530
+  offset: 5888
+}
+member {
+  id: 0xcc4a4101
+  name: "fbcon_rotate_hint"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0x3762dfab
+  name: "fbdev"
+  type_id: 0x3ac2a209
+  offset: 1088
+}
+member {
+  id: 0x09c9cdf1
+  name: "fbops"
+  type_id: 0x3f9adc09
+  offset: 5376
+}
+member {
+  id: 0x3a374984
+  name: "fbs"
+  type_id: 0xd3c80119
+  offset: 1152
+}
+member {
+  id: 0x748ba2af
+  name: "fbs_lock"
+  type_id: 0xa7c362b0
+  offset: 1280
+}
+member {
+  id: 0xb84e4ae2
+  name: "fc"
+  type_id: 0x98ac6d35
+}
+member {
+  id: 0xb86505a9
+  name: "fc"
+  type_id: 0xb3e7bac9
+  offset: 80
+}
+member {
+  id: 0x0cf29fc2
+  name: "fc_delete_all_nh"
+  type_id: 0x914dbfdc
+  offset: 240
+  bitsize: 1
+}
+member {
+  id: 0x58b7a193
+  name: "fc_dst"
+  type_id: 0x6d25e07f
+  offset: 288
+}
+member {
+  id: 0x83436e0b
+  name: "fc_dst_len"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0xc53a5afd
+  name: "fc_encap"
+  type_id: 0x239e18b5
+  offset: 1280
+}
+member {
+  id: 0xc454e541
+  name: "fc_encap_type"
+  type_id: 0x914dbfdc
+  offset: 1344
+}
+member {
+  id: 0x89459294
+  name: "fc_expires"
+  type_id: 0x33756485
+  offset: 832
+}
+member {
+  id: 0x5dccfb23
+  name: "fc_flags"
+  type_id: 0xc9082b19
+  offset: 160
+}
+member {
+  id: 0xdc9fadc0
+  name: "fc_gateway"
+  type_id: 0x6d25e07f
+  offset: 672
+}
+member {
+  id: 0xebca8cc9
+  name: "fc_ifindex"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x1c54d025
+  name: "fc_ignore_dev_down"
+  type_id: 0x914dbfdc
+  offset: 241
+  bitsize: 1
+}
+member {
+  id: 0x67d8519e
+  name: "fc_is_fdb"
+  type_id: 0x6d7f5ff6
+  offset: 1360
+}
+member {
+  id: 0xea3da452
+  name: "fc_ll_i"
+  type_id: 0x295c7202
+  offset: 61
+  bitsize: 1
+}
+member {
+  id: 0xb37bde81
+  name: "fc_ll_l"
+  type_id: 0x295c7202
+  offset: 60
+  bitsize: 1
+}
+member {
+  id: 0xe93a796f
+  name: "fc_ll_m"
+  type_id: 0x295c7202
+  offset: 59
+  bitsize: 1
+}
+member {
+  id: 0x1ea31862
+  name: "fc_ll_s"
+  type_id: 0x295c7202
+  offset: 62
+  bitsize: 1
+}
+member {
+  id: 0x59e904ff
+  name: "fc_ll_v"
+  type_id: 0x295c7202
+  offset: 63
+  bitsize: 1
+}
+member {
+  id: 0xbe97137f
+  name: "fc_media_m5"
+  type_id: 0x295c7202
+  offset: 74
+  bitsize: 1
+}
+member {
+  id: 0x4cdbd501
+  name: "fc_media_m6"
+  type_id: 0x295c7202
+  offset: 75
+  bitsize: 1
+}
+member {
+  id: 0x925cbcbe
+  name: "fc_media_mi"
+  type_id: 0x295c7202
+  offset: 77
+  bitsize: 1
+}
+member {
+  id: 0x40e2095a
+  name: "fc_media_sm"
+  type_id: 0x295c7202
+  offset: 72
+  bitsize: 1
+}
+member {
+  id: 0x8236d690
+  name: "fc_media_tp"
+  type_id: 0x295c7202
+  offset: 78
+  bitsize: 1
+}
+member {
+  id: 0x09090110
+  name: "fc_media_tv"
+  type_id: 0x295c7202
+  offset: 76
+  bitsize: 1
+}
+member {
+  id: 0xc8cee9f5
+  name: "fc_media_tw"
+  type_id: 0x295c7202
+  offset: 79
+  bitsize: 1
+}
+member {
+  id: 0x4d10eb54
+  name: "fc_metric"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0xef15edf0
+  name: "fc_mp"
+  type_id: 0x239e18b5
+  offset: 1024
+}
+member {
+  id: 0x1195cca7
+  name: "fc_mp_len"
+  type_id: 0x6720d32f
+  offset: 992
+}
+member {
+  id: 0xe5153567
+  name: "fc_mx"
+  type_id: 0x239e18b5
+  offset: 896
+}
+member {
+  id: 0xc6da5e84
+  name: "fc_mx_len"
+  type_id: 0x6720d32f
+  offset: 960
+}
+member {
+  id: 0x090a58e7
+  name: "fc_nh_id"
+  type_id: 0xc9082b19
+  offset: 256
+}
+member {
+  id: 0xf1a1f4e9
+  name: "fc_nlinfo"
+  type_id: 0x3f38d6ad
+  offset: 1088
+}
+member {
+  id: 0x94b4ef47
+  name: "fc_pi_4_app_h"
+  type_id: 0x295c7202
+  offset: 1
+  bitsize: 1
+}
+member {
+  id: 0xda23d001
+  name: "fc_pi_4_lim"
+  type_id: 0x295c7202
+  offset: 3
+  bitsize: 1
+}
+member {
+  id: 0xbdd20c53
+  name: "fc_prefsrc"
+  type_id: 0x6d25e07f
+  offset: 544
+}
+member {
+  id: 0x13c0ce24
+  name: "fc_protocol"
+  type_id: 0xc9082b19
+  offset: 192
+}
+member {
+  id: 0xa0439909
+  name: "fc_speed_100"
+  type_id: 0x295c7202
+  offset: 80
+  bitsize: 1
+}
+member {
+  id: 0x1164cbd9
+  name: "fc_speed_1200"
+  type_id: 0x295c7202
+  offset: 87
+  bitsize: 1
+}
+member {
+  id: 0x6dad8c1e
+  name: "fc_speed_1600"
+  type_id: 0x295c7202
+  offset: 85
+  bitsize: 1
+}
+member {
+  id: 0xfd9828d4
+  name: "fc_speed_200"
+  type_id: 0x295c7202
+  offset: 82
+  bitsize: 1
+}
+member {
+  id: 0xeb60a483
+  name: "fc_speed_3200"
+  type_id: 0x295c7202
+  offset: 83
+  bitsize: 1
+}
+member {
+  id: 0x4c601a7a
+  name: "fc_speed_400"
+  type_id: 0x295c7202
+  offset: 84
+  bitsize: 1
+}
+member {
+  id: 0x3c5327ec
+  name: "fc_speed_800"
+  type_id: 0x295c7202
+  offset: 86
+  bitsize: 1
+}
+member {
+  id: 0xd31afc58
+  name: "fc_src"
+  type_id: 0x6d25e07f
+  offset: 416
+}
+member {
+  id: 0xc1906fd6
+  name: "fc_src_len"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0xbe6e6c37
+  name: "fc_table"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xafa52b95
+  name: "fc_tech_electrical_inter_enclosure"
+  type_id: 0x295c7202
+  offset: 56
+  bitsize: 1
+}
+member {
+  id: 0x8d208f17
+  name: "fc_tech_electrical_intra_enclosure"
+  type_id: 0x295c7202
+  offset: 71
+  bitsize: 1
+}
+member {
+  id: 0x3f830473
+  name: "fc_tech_lc"
+  type_id: 0x295c7202
+  offset: 57
+  bitsize: 1
+}
+member {
+  id: 0xef4ae62a
+  name: "fc_tech_ll"
+  type_id: 0x295c7202
+  offset: 68
+  bitsize: 1
+}
+member {
+  id: 0xa7b5560e
+  name: "fc_tech_sa"
+  type_id: 0x295c7202
+  offset: 58
+  bitsize: 1
+}
+member {
+  id: 0x60f7452b
+  name: "fc_tech_sl"
+  type_id: 0x295c7202
+  offset: 69
+  bitsize: 1
+}
+member {
+  id: 0xfb701453
+  name: "fc_tech_sn"
+  type_id: 0x295c7202
+  offset: 70
+  bitsize: 1
+}
+member {
+  id: 0xed89c2f0
+  name: "fc_type"
+  type_id: 0x914dbfdc
+  offset: 224
+}
+member {
+  id: 0x6b9309b0
+  name: "fcap"
+  type_id: 0xd023fa96
+  offset: 512
+}
+member {
+  id: 0x3b0d5e03
+  name: "fcap_ver"
+  type_id: 0x4585663f
+  offset: 800
+}
+member {
+  id: 0x70d9ed1a
+  name: "fclone"
+  type_id: 0xb3e7bac9
+  offset: 1010
+  bitsize: 2
+}
+member {
+  id: 0xd93523f0
+  name: "fcr"
+  type_id: 0x5d8155a5
+  offset: 4904
+}
+member {
+  id: 0x271bad93
+  name: "fcs"
+  type_id: 0xb3e7bac9
+  offset: 1072
+}
+member {
+  id: 0x7f1955b1
+  name: "fd"
+  type_id: 0x0b4f136e
+  offset: 1216
+}
+member {
+  id: 0x7f1db283
+  name: "fd"
+  type_id: 0x0faae5b1
+}
+member {
+  id: 0x7f1dbb41
+  name: "fd"
+  type_id: 0x0faae5b1
+  offset: 128
+}
+member {
+  id: 0x7f1dbfb8
+  name: "fd"
+  type_id: 0x0faae5b1
+  offset: 32
+}
+member {
+  id: 0x7f1eb624
+  name: "fd"
+  type_id: 0x0caaa31f
+  offset: 64
+}
+member {
+  id: 0x7f7538b5
+  name: "fd"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x7f753d8b
+  name: "fd"
+  type_id: 0x6720d32f
+  offset: 2688
+}
+member {
+  id: 0x7ff43be2
+  name: "fd"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xcc2fdbf8
+  name: "fd_array"
+  type_id: 0x87cd136d
+  offset: 76224
+}
+member {
+  id: 0xcc45eef0
+  name: "fd_array"
+  type_id: 0xedf277ba
+  offset: 960
+}
+member {
+  id: 0xcc9d8394
+  name: "fd_array"
+  type_id: 0x35919d2f
+  offset: 1280
+}
+member {
+  id: 0x25fffba3
+  name: "fd_fixups"
+  type_id: 0xd3c80119
+  offset: 1088
+}
+member {
+  id: 0x27dcd73a
+  name: "fd_type"
+  type_id: 0xe62ebf07
+  offset: 224
+}
+member {
+  id: 0xc409a485
+  name: "fd_wqh"
+  type_id: 0x03913382
+  offset: 384
+}
+member {
+  id: 0xb44a6809
+  name: "fdb_list"
+  type_id: 0xd3c80119
+  offset: 448
+}
+member {
+  id: 0x837a984a
+  name: "fdb_nh"
+  type_id: 0x6d7f5ff6
+  offset: 104
+}
+member {
+  id: 0x837a9f85
+  name: "fdb_nh"
+  type_id: 0x6d7f5ff6
+  offset: 208
+}
+member {
+  id: 0xc3f66676
+  name: "fdpath"
+  type_id: 0x3e10b518
+  offset: 896
+}
+member {
+  id: 0x317f2628
+  name: "fds"
+  type_id: 0x75617428
+  offset: 7872
+}
+member {
+  id: 0xf0dd114d
+  name: "fdt"
+  type_id: 0x1a2983d6
+  offset: 256
+}
+member {
+  id: 0x2b3d381e
+  name: "fdt_node"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x654043c9
+  name: "fdtab"
+  type_id: 0x42e6e9c5
+  offset: 320
+}
+member {
+  id: 0xaa33d21c
+  name: "fe_clients"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0xeada1648
+  name: "fe_compr"
+  type_id: 0x4585663f
+  offset: 14273
+  bitsize: 1
+}
+member {
+  id: 0x5b59b5d7
+  name: "fe_flags"
+  type_id: 0xe62ebf07
+  offset: 320
+}
+member {
+  id: 0x1199eaf0
+  name: "fe_length"
+  type_id: 0xedf277ba
+  offset: 128
+}
+member {
+  id: 0xa622be38
+  name: "fe_logical"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x76d3b9a9
+  name: "fe_pause"
+  type_id: 0x6d7f5ff6
+  offset: 5408
+}
+member {
+  id: 0x55d199a6
+  name: "fe_physical"
+  type_id: 0xedf277ba
+  offset: 64
+}
+member {
+  id: 0x7504ef50
+  name: "fe_reserved"
+  type_id: 0x2b4e5af5
+  offset: 352
+}
+member {
+  id: 0x1feea691
+  name: "fe_reserved64"
+  type_id: 0x57d5dd0d
+  offset: 192
+}
+member {
+  id: 0xb75018f5
+  name: "feat_mask"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0xbbb2cfc1
+  name: "feature_data"
+  type_id: 0xc72a241a
+}
+member {
+  id: 0xae3c373d
+  name: "feature_enabled"
+  type_id: 0x295c7202
+  offset: 40
+}
+member {
+  id: 0xaedda563
+  name: "feature_enabled"
+  type_id: 0xc8c766a0
+  offset: 512
+}
+member {
+  id: 0x3459ef31
+  name: "feature_mapping"
+  type_id: 0x0e428484
+  offset: 1088
+}
+member {
+  id: 0xee3219f3
+  name: "feature_support"
+  type_id: 0x295c7202
+  offset: 48
+}
+member {
+  id: 0xee5ec5ed
+  name: "feature_support"
+  type_id: 0x4585663f
+  offset: 1312
+}
+member {
+  id: 0x09fa7934
+  name: "feature_table"
+  type_id: 0x39cc14ac
+  offset: 1472
+}
+member {
+  id: 0x15ffc9af
+  name: "feature_table_legacy"
+  type_id: 0x39cc14ac
+  offset: 1600
+}
+member {
+  id: 0xc0f502d0
+  name: "feature_table_size"
+  type_id: 0x4585663f
+  offset: 1536
+}
+member {
+  id: 0x5ad3f2bc
+  name: "feature_table_size_legacy"
+  type_id: 0x4585663f
+  offset: 1664
+}
+member {
+  id: 0xc531247f
+  name: "features"
+  type_id: 0x295c7202
+  offset: 192
+}
+member {
+  id: 0xc5312ee4
+  name: "features"
+  type_id: 0x295c7202
+  offset: 40
+}
+member {
+  id: 0xc5388d91
+  name: "features"
+  type_id: 0x20f42c9c
+  offset: 4976
+}
+member {
+  id: 0xc5388ff0
+  name: "features"
+  type_id: 0x20f42c9c
+  offset: 512
+}
+member {
+  id: 0xc53dff7a
+  name: "features"
+  type_id: 0x2584a3b9
+  offset: 1856
+}
+member {
+  id: 0xc55df36f
+  name: "features"
+  type_id: 0x4585663f
+  offset: 864
+}
+member {
+  id: 0xc55df412
+  name: "features"
+  type_id: 0x4585663f
+  offset: 480
+}
+member {
+  id: 0xc58a5218
+  name: "features"
+  type_id: 0x92233392
+  offset: 7744
+}
+member {
+  id: 0xc5a16345
+  name: "features"
+  type_id: 0xb914bfab
+  offset: 11520
+}
+member {
+  id: 0xc5a16600
+  name: "features"
+  type_id: 0xb914bfab
+  offset: 11712
+}
+member {
+  id: 0xc5a16f87
+  name: "features"
+  type_id: 0xb914bfab
+  offset: 67264
+}
+member {
+  id: 0xc5bc078c
+  name: "features"
+  type_id: 0xa4764ce0
+  offset: 344
+}
+member {
+  id: 0xc5cbcac0
+  name: "features"
+  type_id: 0xd3b92883
+  offset: 1664
+}
+member {
+  id: 0xc5d17e22
+  name: "features"
+  type_id: 0xc9082b19
+  offset: 864
+}
+member {
+  id: 0x19ab147e
+  name: "fec"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xcec81441
+  name: "fence"
+  type_id: 0x030b9acf
+  offset: 128
+}
+member {
+  id: 0xcec8154a
+  name: "fence"
+  type_id: 0x030b9acf
+  offset: 192
+}
+member {
+  id: 0xcec81962
+  name: "fence"
+  type_id: 0x030b9acf
+  offset: 64
+}
+member {
+  id: 0xcec81bfa
+  name: "fence"
+  type_id: 0x030b9acf
+  offset: 640
+}
+member {
+  id: 0xcec81fbe
+  name: "fence"
+  type_id: 0x030b9acf
+  offset: 704
+}
+member {
+  id: 0xcbf39aa2
+  name: "fence_context"
+  type_id: 0x4585663f
+  offset: 16640
+}
+member {
+  id: 0xcbf39aa3
+  name: "fence_context"
+  type_id: 0x4585663f
+  offset: 12864
+}
+member {
+  id: 0xccba23de
+  name: "fence_lock"
+  type_id: 0xf313e71a
+  offset: 12896
+}
+member {
+  id: 0xccba26ee
+  name: "fence_lock"
+  type_id: 0xf313e71a
+  offset: 16672
+}
+member {
+  id: 0xaaa23b13
+  name: "fence_seqno"
+  type_id: 0x33756485
+  offset: 12928
+}
+member {
+  id: 0xaaa23bd8
+  name: "fence_seqno"
+  type_id: 0x33756485
+  offset: 16704
+}
+member {
+  id: 0x45eaa685
+  name: "fence_usage"
+  type_id: 0x26731c99
+  offset: 192
+}
+member {
+  id: 0xd5c1efd3
+  name: "fence_value_str"
+  type_id: 0x0e846584
+  offset: 448
+}
+member {
+  id: 0xb0e7a0c0
+  name: "fences"
+  type_id: 0x028fcf55
+  offset: 448
+}
+member {
+  id: 0xb0e7a71c
+  name: "fences"
+  type_id: 0x028fcf55
+  offset: 256
+}
+member {
+  id: 0xb0ef7cde
+  name: "fences"
+  type_id: 0x0a52df14
+  offset: 640
+}
+member {
+  id: 0xae57f1d8
+  name: "fetch_addr"
+  type_id: 0xedf277ba
+  offset: 192
+}
+member {
+  id: 0x010c004b
+  name: "fetch_iversion"
+  type_id: 0x1ede947f
+  offset: 576
+}
+member {
+  id: 0xfda1eba1
+  name: "ff"
+  type_id: 0x350dc3e7
+  offset: 1984
+}
+member {
+  id: 0x53d0c010
+  name: "ff_init"
+  type_id: 0x2d2e4d07
+  offset: 61760
+}
+member {
+  id: 0x94cea1dd
+  name: "ffbit"
+  type_id: 0x607419c2
+  offset: 448
+}
+member {
+  id: 0x94cea1fa
+  name: "ffbit"
+  type_id: 0x607419c2
+  offset: 1472
+}
+member {
+  id: 0x94d2d65d
+  name: "ffbit"
+  type_id: 0x7c029334
+  offset: 1280
+}
+member {
+  id: 0x5313b57d
+  name: "ffmask"
+  type_id: 0x33756485
+  offset: 768
+}
+member {
+  id: 0x7ef1e3bb
+  name: "ffu_capable"
+  type_id: 0x6d7f5ff6
+  offset: 904
+}
+member {
+  id: 0xd52103da
+  name: "fg_color"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0x4e1d61e4
+  name: "fh"
+  type_id: 0x070fb3ab
+  offset: 768
+}
+member {
+  id: 0x4e2be9d9
+  name: "fh"
+  type_id: 0x318f8bcb
+  offset: 256
+}
+member {
+  id: 0x2db4ae9c
+  name: "fh_list"
+  type_id: 0xd3c80119
+  offset: 9664
+}
+member {
+  id: 0x5dd6479d
+  name: "fh_lock"
+  type_id: 0xf313e71a
+  offset: 9632
+}
+member {
+  id: 0x4b95f76a
+  name: "fh_to_dentry"
+  type_id: 0x2be568af
+  offset: 64
+}
+member {
+  id: 0x1aa3f6ef
+  name: "fh_to_parent"
+  type_id: 0x2be568af
+  offset: 128
+}
+member {
+  id: 0x3086ecf9
+  name: "fhs"
+  type_id: 0xd3c80119
+  offset: 9280
+}
+member {
+  id: 0x10601c0f
+  name: "fi"
+  type_id: 0x3b36aa0c
+  offset: 1600
+}
+member {
+  id: 0x3ad0fc6e
+  name: "fi_extents_mapped"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x7eae6bc2
+  name: "fi_extents_max"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x1521f076
+  name: "fi_extents_start"
+  type_id: 0x297c9572
+  offset: 128
+}
+member {
+  id: 0x595c0f86
+  name: "fi_flags"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x1f978d51
+  name: "fi_list"
+  type_id: 0xd3c80119
+  offset: 192
+}
+member {
+  id: 0xcf5344d7
+  name: "fib6_destroying"
+  type_id: 0x295c7202
+  offset: 1099
+  bitsize: 1
+}
+member {
+  id: 0x7b54d0eb
+  name: "fib6_dst"
+  type_id: 0xebdf1fd0
+  offset: 512
+}
+member {
+  id: 0x5049e5ad
+  name: "fib6_flags"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0x5049eb2e
+  name: "fib6_flags"
+  type_id: 0xc9082b19
+  offset: 672
+}
+member {
+  id: 0x389ce5b9
+  name: "fib6_gc_lock"
+  type_id: 0xf313e71a
+  offset: 4288
+}
+member {
+  id: 0x97d16e82
+  name: "fib6_get_table"
+  type_id: 0x0c1a25d8
+  offset: 256
+}
+member {
+  id: 0x50257db9
+  name: "fib6_has_custom_rules"
+  type_id: 0x6d7f5ff6
+  offset: 4424
+}
+member {
+  id: 0x204cb9ba
+  name: "fib6_local_tbl"
+  type_id: 0x283d9b05
+  offset: 4608
+}
+member {
+  id: 0xcf8b2454
+  name: "fib6_lookup"
+  type_id: 0x2d5f468e
+  offset: 320
+}
+member {
+  id: 0xd93c6299
+  name: "fib6_main_tbl"
+  type_id: 0x283d9b05
+  offset: 4032
+}
+member {
+  id: 0x3559b239
+  name: "fib6_metric"
+  type_id: 0xc9082b19
+  offset: 1024
+}
+member {
+  id: 0x539c7040
+  name: "fib6_metrics"
+  type_id: 0x34525023
+  offset: 448
+}
+member {
+  id: 0x3d0d1cc5
+  name: "fib6_next"
+  type_id: 0x238091f9
+  offset: 64
+}
+member {
+  id: 0xb209e9a4
+  name: "fib6_nh"
+  type_id: 0xd1341eff
+  offset: 1408
+}
+member {
+  id: 0xb28ce909
+  name: "fib6_nh"
+  type_id: 0x5436403f
+}
+member {
+  id: 0x40832266
+  name: "fib6_nh_init"
+  type_id: 0x2d269d7d
+  offset: 576
+}
+member {
+  id: 0x33e7eefb
+  name: "fib6_nh_release"
+  type_id: 0x0f4ff759
+  offset: 640
+}
+member {
+  id: 0x353c0870
+  name: "fib6_nh_release_dsts"
+  type_id: 0x0f4ff759
+  offset: 704
+}
+member {
+  id: 0x689cad4c
+  name: "fib6_node"
+  type_id: 0x21ee065a
+  offset: 128
+}
+member {
+  id: 0x4d23fd2d
+  name: "fib6_nsiblings"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0xbe6b46db
+  name: "fib6_null_entry"
+  type_id: 0x238091f9
+  offset: 3328
+}
+member {
+  id: 0xda8865c9
+  name: "fib6_prefsrc"
+  type_id: 0xebdf1fd0
+  offset: 864
+}
+member {
+  id: 0xd091fee1
+  name: "fib6_protocol"
+  type_id: 0x295c7202
+  offset: 1056
+}
+member {
+  id: 0x4bb392c8
+  name: "fib6_ref"
+  type_id: 0xa722c13e
+  offset: 352
+}
+member {
+  id: 0x8bc2759f
+  name: "fib6_rt_update"
+  type_id: 0x0e5fdffa
+  offset: 896
+}
+member {
+  id: 0x46fed137
+  name: "fib6_rules_ops"
+  type_id: 0x1b686fa1
+  offset: 4672
+}
+member {
+  id: 0xe2eb1f5c
+  name: "fib6_rules_require_fldissect"
+  type_id: 0x4585663f
+  offset: 4448
+}
+member {
+  id: 0x7c31c5bb
+  name: "fib6_select_path"
+  type_id: 0x0d4378a0
+  offset: 448
+}
+member {
+  id: 0x8faf41e7
+  name: "fib6_sernum"
+  type_id: 0x74d29cf1
+  offset: 6432
+}
+member {
+  id: 0x67f43ed4
+  name: "fib6_siblings"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0xe47fecf1
+  name: "fib6_src"
+  type_id: 0xebdf1fd0
+  offset: 704
+}
+member {
+  id: 0x4d42575d
+  name: "fib6_table"
+  type_id: 0x283d9b05
+}
+member {
+  id: 0xc4a259e4
+  name: "fib6_table_lookup"
+  type_id: 0x2d144db5
+  offset: 384
+}
+member {
+  id: 0x01bd6c40
+  name: "fib6_type"
+  type_id: 0x295c7202
+  offset: 1064
+}
+member {
+  id: 0x01bd6ec6
+  name: "fib6_type"
+  type_id: 0x295c7202
+  offset: 160
+}
+member {
+  id: 0x0bad077a
+  name: "fib6_update_sernum"
+  type_id: 0x0e5f8a1a
+  offset: 768
+}
+member {
+  id: 0xf279a37a
+  name: "fib6_walker_lock"
+  type_id: 0xf4933b90
+  offset: 4224
+}
+member {
+  id: 0xffcc59fe
+  name: "fib6_walkers"
+  type_id: 0xd3c80119
+  offset: 4096
+}
+member {
+  id: 0x2235893f
+  name: "fib_clntref"
+  type_id: 0xa722c13e
+  offset: 480
+}
+member {
+  id: 0x7848f1e0
+  name: "fib_dead"
+  type_id: 0x5d8155a5
+  offset: 544
+}
+member {
+  id: 0xa94071c9
+  name: "fib_default"
+  type_id: 0x25a39938
+  offset: 2048
+}
+member {
+  id: 0x8271e1f2
+  name: "fib_discarded_routes"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0x72757c48
+  name: "fib_dump"
+  type_id: 0x2d21ed4d
+  offset: 256
+}
+member {
+  id: 0x7d6017c4
+  name: "fib_flags"
+  type_id: 0x4585663f
+  offset: 512
+}
+member {
+  id: 0x475440e7
+  name: "fib_has_custom_local_routes"
+  type_id: 0x6d7f5ff6
+  offset: 2152
+}
+member {
+  id: 0x70b99b07
+  name: "fib_has_custom_rules"
+  type_id: 0x6d7f5ff6
+  offset: 2144
+}
+member {
+  id: 0x5aa9bfd6
+  name: "fib_hash"
+  type_id: 0x49a73111
+}
+member {
+  id: 0xad682054
+  name: "fib_lhash"
+  type_id: 0x49a73111
+  offset: 128
+}
+member {
+  id: 0x650e84e9
+  name: "fib_main"
+  type_id: 0x25a39938
+  offset: 1984
+}
+member {
+  id: 0x9ad49793
+  name: "fib_metrics"
+  type_id: 0x34525023
+  offset: 704
+}
+member {
+  id: 0x02c4ba71
+  name: "fib_net"
+  type_id: 0x0ca27481
+  offset: 384
+}
+member {
+  id: 0x11d71f08
+  name: "fib_nh"
+  type_id: 0xd1508894
+}
+member {
+  id: 0x11f62533
+  name: "fib_nh"
+  type_id: 0xf06dacd5
+  offset: 1024
+}
+member {
+  id: 0x92443730
+  name: "fib_nh_is_v6"
+  type_id: 0x6d7f5ff6
+  offset: 800
+}
+member {
+  id: 0x4499933d
+  name: "fib_nhc"
+  type_id: 0xa95e3709
+}
+member {
+  id: 0x505d4f3b
+  name: "fib_nhs"
+  type_id: 0x6720d32f
+  offset: 768
+}
+member {
+  id: 0xeb30799c
+  name: "fib_nodes"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xfbd4593e
+  name: "fib_notify_on_flag_change"
+  type_id: 0x295c7202
+  offset: 1440
+}
+member {
+  id: 0x1c61123e
+  name: "fib_offload_disabled"
+  type_id: 0x6d7f5ff6
+  offset: 2160
+}
+member {
+  id: 0x775c7e71
+  name: "fib_prefsrc"
+  type_id: 0xe276adef
+  offset: 576
+}
+member {
+  id: 0x42d945cf
+  name: "fib_priority"
+  type_id: 0xc9082b19
+  offset: 640
+}
+member {
+  id: 0xed4451e0
+  name: "fib_protocol"
+  type_id: 0x5d8155a5
+  offset: 552
+}
+member {
+  id: 0x8ab8249c
+  name: "fib_route_nodes"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xd1d4f7b2
+  name: "fib_rt_alloc"
+  type_id: 0x74d29cf1
+  offset: 160
+}
+member {
+  id: 0x06778c54
+  name: "fib_rt_cache"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x6ac6d26b
+  name: "fib_rt_entries"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xb2d5371e
+  name: "fib_rules_require_fldissect"
+  type_id: 0x4585663f
+  offset: 2112
+}
+member {
+  id: 0xfdba21fe
+  name: "fib_rules_seq"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0xb22db68e
+  name: "fib_scope"
+  type_id: 0x5d8155a5
+  offset: 560
+}
+member {
+  id: 0x92f46ad8
+  name: "fib_seq"
+  type_id: 0x4585663f
+  offset: 5184
+}
+member {
+  id: 0x92f46b62
+  name: "fib_seq"
+  type_id: 0x4585663f
+  offset: 992
+}
+member {
+  id: 0x048da853
+  name: "fib_seq_read"
+  type_id: 0x39ecc151
+  offset: 192
+}
+member {
+  id: 0x59046610
+  name: "fib_table_hash"
+  type_id: 0x1d33485a
+  offset: 3968
+}
+member {
+  id: 0x59046687
+  name: "fib_table_hash"
+  type_id: 0x1d33485a
+  offset: 2176
+}
+member {
+  id: 0x9c014592
+  name: "fib_tb_id"
+  type_id: 0xc9082b19
+  offset: 608
+}
+member {
+  id: 0xe64ca199
+  name: "fib_treeref"
+  type_id: 0xa722c13e
+  offset: 448
+}
+member {
+  id: 0xac405697
+  name: "fib_type"
+  type_id: 0x5d8155a5
+  offset: 568
+}
+member {
+  id: 0x9285934f
+  name: "fibnl"
+  type_id: 0x1d44326e
+  offset: 2240
+}
+member {
+  id: 0xc332f49b
+  name: "field"
+  type_id: 0x73aafd73
+  offset: 512
+}
+member {
+  id: 0xc35c4973
+  name: "field"
+  type_id: 0x1d157877
+  offset: 2368
+}
+member {
+  id: 0xc368639a
+  name: "field"
+  type_id: 0x293f2663
+  offset: 128
+}
+member {
+  id: 0xc3a77203
+  name: "field"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0xc3a77242
+  name: "field"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0xc3a7738e
+  name: "field"
+  type_id: 0xe62ebf07
+  offset: 4128
+}
+member {
+  id: 0xc3a776fa
+  name: "field"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xc3cff2f1
+  name: "field"
+  type_id: 0x8ea78f33
+}
+member {
+  id: 0xc3f2b2c4
+  name: "field"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0x22ca3b62
+  name: "field_entries"
+  type_id: 0x1afb0146
+  offset: 16896
+}
+member {
+  id: 0x658221e2
+  name: "field_entry_list"
+  type_id: 0xd3c80119
+  offset: 256
+}
+member {
+  id: 0x2c49fc38
+  name: "field_len"
+  type_id: 0x6720d32f
+  offset: 2080
+}
+member {
+  id: 0xf46a76f3
+  name: "field_off"
+  type_id: 0x45a82e68
+  offset: 32
+}
+member {
+  id: 0xf94f688e
+  name: "field_pic"
+  type_id: 0xb3e7bac9
+  offset: 72
+}
+member {
+  id: 0xecb6717a
+  name: "field_sz"
+  type_id: 0x7dbd382e
+  offset: 352
+}
+member {
+  id: 0x788054c9
+  name: "fields"
+  type_id: 0xd3c80119
+  offset: 384
+}
+member {
+  id: 0x78e0762d
+  name: "fields"
+  type_id: 0xb3e7bac9
+  offset: 112
+}
+member {
+  id: 0x78e07ae0
+  name: "fields"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0x21467a77
+  name: "fields_array"
+  type_id: 0x2db9a683
+  offset: 256
+}
+member {
+  id: 0x53870b05
+  name: "fiemap"
+  type_id: 0x2c74fe37
+  offset: 1024
+}
+member {
+  id: 0x1200371b
+  name: "fifo"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0x128ba8c8
+  name: "fifo"
+  type_id: 0x585f1baf
+  offset: 192
+}
+member {
+  id: 0x1419f8d8
+  name: "fifo_bug"
+  type_id: 0x6d7f5ff6
+  offset: 4848
+}
+member {
+  id: 0x9d361053
+  name: "fifo_flush"
+  type_id: 0x0e5445cf
+  offset: 640
+}
+member {
+  id: 0xf67ca8c0
+  name: "fifo_size"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0xf691d227
+  name: "fifo_size"
+  type_id: 0xa8fff47c
+  offset: 4288
+}
+member {
+  id: 0xf6cd1117
+  name: "fifo_size"
+  type_id: 0xf435685e
+  offset: 576
+}
+member {
+  id: 0xc7f4195b
+  name: "fifo_status"
+  type_id: 0x2d126960
+  offset: 576
+}
+member {
+  id: 0x4380fca4
+  name: "fifo_time"
+  type_id: 0x92233392
+}
+member {
+  id: 0x642102ed
+  name: "fifosize"
+  type_id: 0x4585663f
+  offset: 1440
+}
+member {
+  id: 0xbf953559
+  name: "file"
+  type_id: 0x12e6ffae
+  offset: 320
+}
+member {
+  id: 0xbf9f3513
+  name: "file"
+  type_id: 0x18ea6ae3
+  offset: 512
+}
+member {
+  id: 0xbf9f37c9
+  name: "file"
+  type_id: 0x18ea6ae3
+  offset: 128
+}
+member {
+  id: 0xbf9f39cc
+  name: "file"
+  type_id: 0x18ea6ae3
+  offset: 320
+}
+member {
+  id: 0xbf9f3aea
+  name: "file"
+  type_id: 0x18ea6ae3
+  offset: 64
+}
+member {
+  id: 0xbf9f3e0b
+  name: "file"
+  type_id: 0x18ea6ae3
+}
+member {
+  id: 0xbfb9c035
+  name: "file"
+  type_id: 0x3e10b518
+  offset: 64
+}
+member {
+  id: 0xbfbed644
+  name: "file"
+  type_id: 0x390ad61e
+  offset: 960
+}
+member {
+  id: 0xbfcac75a
+  name: "file"
+  type_id: 0x4d133b2f
+}
+member {
+  id: 0xa5b54910
+  name: "file_alloc_end"
+  type_id: 0x4585663f
+  offset: 3808
+}
+member {
+  id: 0x0a9e5eb3
+  name: "file_alloc_start"
+  type_id: 0x4585663f
+  offset: 3776
+}
+member {
+  id: 0x0a08d79f
+  name: "file_cost"
+  type_id: 0x33756485
+  offset: 768
+}
+member {
+  id: 0x3a49b6e6
+  name: "file_count"
+  type_id: 0x4585663f
+  offset: 1536
+}
+member {
+  id: 0xf7f7e37b
+  name: "file_data"
+  type_id: 0x28eba3b0
+  offset: 6528
+}
+member {
+  id: 0x9c77ac0d
+  name: "file_digest"
+  type_id: 0x39fc1b17
+  offset: 1472
+}
+member {
+  id: 0x0b76bc4b
+  name: "file_disp"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x99ee293a
+  name: "file_flags"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0xa1598d02
+  name: "file_index"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x9719b834
+  name: "file_length"
+  type_id: 0x27a7c613
+  offset: 64
+}
+member {
+  id: 0xfca11463
+  name: "file_lock"
+  type_id: 0xf313e71a
+  offset: 1024
+}
+member {
+  id: 0xb9d64aa4
+  name: "file_name_off"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x7ee39acb
+  name: "file_offset"
+  type_id: 0x4585663f
+  offset: 672
+}
+member {
+  id: 0xda1fca7a
+  name: "file_priv"
+  type_id: 0x12e6ffae
+  offset: 256
+}
+member {
+  id: 0x4a5470bb
+  name: "file_ptr"
+  type_id: 0x33756485
+}
+member {
+  id: 0x346b1e3f
+  name: "file_table"
+  type_id: 0x6f540d85
+  offset: 704
+}
+member {
+  id: 0x3242b618
+  name: "fileattr_get"
+  type_id: 0x2cfc5841
+  offset: 1408
+}
+member {
+  id: 0x6f1d74c1
+  name: "fileattr_set"
+  type_id: 0x2d1a7e0d
+  offset: 1344
+}
+member {
+  id: 0xb6bd14f5
+  name: "fileio"
+  type_id: 0x1015bc71
+  offset: 6592
+}
+member {
+  id: 0xa8f477ff
+  name: "fileio_read_once"
+  type_id: 0x4585663f
+  offset: 193
+  bitsize: 1
+}
+member {
+  id: 0x58f7611f
+  name: "fileio_write_immediately"
+  type_id: 0x4585663f
+  offset: 194
+  bitsize: 1
+}
+member {
+  id: 0x52024921
+  name: "filelist"
+  type_id: 0xd3c80119
+  offset: 11456
+}
+member {
+  id: 0x52024db9
+  name: "filelist"
+  type_id: 0xd3c80119
+  offset: 2176
+}
+member {
+  id: 0x3bf3939e
+  name: "filelist_internal"
+  type_id: 0xd3c80119
+  offset: 2304
+}
+member {
+  id: 0xcd457fff
+  name: "filelist_mutex"
+  type_id: 0xa7c362b0
+  offset: 1792
+}
+member {
+  id: 0xb07871e2
+  name: "filename"
+  type_id: 0x3e10b518
+}
+member {
+  id: 0xb0787820
+  name: "filename"
+  type_id: 0x3e10b518
+  offset: 128
+}
+member {
+  id: 0xb078794c
+  name: "filename"
+  type_id: 0x3e10b518
+  offset: 768
+}
+member {
+  id: 0xe3a3c2c5
+  name: "filename_trans"
+  type_id: 0x26a23d9b
+  offset: 2880
+}
+member {
+  id: 0x0048fc1f
+  name: "filename_trans_ttypes"
+  type_id: 0x86a931f9
+  offset: 2752
+}
+member {
+  id: 0x3ff8b433
+  name: "filenames_encryption_mode"
+  type_id: 0xb3e7bac9
+  offset: 16
+}
+member {
+  id: 0xc769f01e
+  name: "files"
+  type_id: 0xd3c80119
+  offset: 384
+}
+member {
+  id: 0xc7912b9b
+  name: "files"
+  type_id: 0x2b119ef2
+  offset: 17344
+}
+member {
+  id: 0xc7947d1f
+  name: "files"
+  type_id: 0x2e449240
+}
+member {
+  id: 0xc7ae146e
+  name: "files"
+  type_id: 0x1424911e
+  offset: 576
+}
+member {
+  id: 0xc7ffbc39
+  name: "files"
+  type_id: 0x4585663f
+  offset: 992
+}
+member {
+  id: 0x6753c78f
+  name: "files_list"
+  type_id: 0xd3c80119
+  offset: 12224
+}
+member {
+  id: 0x0fd6d755
+  name: "files_lock"
+  type_id: 0xf313e71a
+  offset: 5696
+}
+member {
+  id: 0x0fd6db1c
+  name: "files_lock"
+  type_id: 0xf313e71a
+  offset: 12416
+}
+member {
+  id: 0xbf5c8fa3
+  name: "filesem"
+  type_id: 0x28b9ec9a
+  offset: 576
+}
+member {
+  id: 0x366c63fb
+  name: "fill"
+  type_id: 0x2cc6325b
+  offset: 768
+}
+member {
+  id: 0x0d1be271
+  name: "fill_addr_option"
+  type_id: 0x0d885429
+  offset: 256
+}
+member {
+  id: 0x9e2de752
+  name: "fill_align"
+  type_id: 0x5d9a121f
+  offset: 800
+}
+member {
+  id: 0xf2b8f92e
+  name: "fill_custom_report"
+  type_id: 0x1cdd0a49
+  offset: 128
+}
+member {
+  id: 0xa245a3b2
+  name: "fill_forward_path"
+  type_id: 0x2c4ec769
+  offset: 128
+}
+member {
+  id: 0x7fc74744
+  name: "fill_info"
+  type_id: 0x2d976e39
+  offset: 832
+}
+member {
+  id: 0x9d67ee43
+  name: "fill_link_info"
+  type_id: 0x2e52386e
+  offset: 320
+}
+member {
+  id: 0x7205c2eb
+  name: "fill_linkxstats"
+  type_id: 0x2d963c99
+  offset: 1600
+}
+member {
+  id: 0x3316a2a2
+  name: "fill_max"
+  type_id: 0x4585663f
+  offset: 45216
+  bitsize: 1
+}
+member {
+  id: 0x73e192b7
+  name: "fill_modes"
+  type_id: 0x2ef6a56f
+  offset: 256
+}
+member {
+  id: 0x944bdff2
+  name: "fill_silence"
+  type_id: 0x2cdfb1cf
+  offset: 640
+}
+member {
+  id: 0x0687957a
+  name: "fill_slave_info"
+  type_id: 0x2d9457a5
+  offset: 1408
+}
+member {
+  id: 0x3fc99ae4
+  name: "fill_user_buffer"
+  type_id: 0x0c645464
+  offset: 128
+}
+member {
+  id: 0x1e142a57
+  name: "fill_vb2_buffer"
+  type_id: 0x2f3e5017
+  offset: 192
+}
+member {
+  id: 0xe7d2782d
+  name: "fill_xstats"
+  type_id: 0x2d976e39
+  offset: 960
+}
+member {
+  id: 0xcca040ae
+  name: "filp"
+  type_id: 0x18ea6ae3
+  offset: 128
+}
+member {
+  id: 0xcca0496c
+  name: "filp"
+  type_id: 0x18ea6ae3
+}
+member {
+  id: 0xcca04e73
+  name: "filp"
+  type_id: 0x18ea6ae3
+  offset: 1024
+}
+member {
+  id: 0x1b7ec983
+  name: "filp_head"
+  type_id: 0xd3c80119
+  offset: 1216
+}
+member {
+  id: 0xa30a5671
+  name: "filter"
+  type_id: 0x01c77248
+  offset: 64
+}
+member {
+  id: 0xa31a07f1
+  name: "filter"
+  type_id: 0x1196f2cb
+  offset: 64
+}
+member {
+  id: 0xa3265f57
+  name: "filter"
+  type_id: 0x2dc013c2
+  offset: 896
+}
+member {
+  id: 0xa33d21e8
+  name: "filter"
+  type_id: 0x36b637f1
+  offset: 704
+}
+member {
+  id: 0xa33d246d
+  name: "filter"
+  type_id: 0x36b637f1
+  offset: 8320
+}
+member {
+  id: 0xa33d2b1c
+  name: "filter"
+  type_id: 0x36b637f1
+  offset: 192
+}
+member {
+  id: 0xa33d7985
+  name: "filter"
+  type_id: 0x36e4aebb
+  offset: 192
+}
+member {
+  id: 0xa33dbdea
+  name: "filter"
+  type_id: 0x3620c1a6
+  offset: 192
+}
+member {
+  id: 0xa33eb7b1
+  name: "filter"
+  type_id: 0x352b91a8
+  offset: 128
+}
+member {
+  id: 0xa374ddcd
+  name: "filter"
+  type_id: 0x7f49bdff
+  offset: 384
+}
+member {
+  id: 0xa39ad6e3
+  name: "filter"
+  type_id: 0x914dbfdc
+  offset: 16
+}
+member {
+  id: 0xa3dc77cd
+  name: "filter"
+  type_id: 0xd7e22f89
+}
+member {
+  id: 0x652ba159
+  name: "filter_chain"
+  type_id: 0x09451098
+  offset: 384
+}
+member {
+  id: 0xf5ce55a9
+  name: "filter_chain_list"
+  type_id: 0xd3c80119
+  offset: 64
+}
+member {
+  id: 0xf17615fa
+  name: "filter_chain_lock"
+  type_id: 0xa7c362b0
+}
+member {
+  id: 0x73c742ad
+  name: "filter_count"
+  type_id: 0x74d29cf1
+  offset: 32
+}
+member {
+  id: 0xcdf1f176
+  name: "filter_data"
+  type_id: 0x18bd6530
+  offset: 128
+}
+member {
+  id: 0x73f00c79
+  name: "filter_list"
+  type_id: 0x09451098
+}
+member {
+  id: 0x033b7284
+  name: "filter_match"
+  type_id: 0x2c2ce191
+  offset: 3328
+}
+member {
+  id: 0x033b7c37
+  name: "filter_match"
+  type_id: 0x2c2ce191
+  offset: 2240
+}
+member {
+  id: 0x1f326914
+  name: "filter_string"
+  type_id: 0x0483e6f8
+  offset: 64
+}
+member {
+  id: 0x75615e2d
+  name: "filter_type"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0x75c3aa6c
+  name: "filter_type"
+  type_id: 0xc5d9d969
+  offset: 160
+}
+member {
+  id: 0xc345bb5b
+  name: "filtered_latency"
+  type_id: 0x33756485
+  offset: 6720
+}
+member {
+  id: 0xc0b3a49e
+  name: "filtered_no_pids"
+  type_id: 0x1d6e33e5
+  offset: 576
+}
+member {
+  id: 0x9df6a2cf
+  name: "filtered_pids"
+  type_id: 0x1d6e33e5
+  offset: 512
+}
+member {
+  id: 0x73b846be
+  name: "filterkey"
+  type_id: 0x0483e6f8
+  offset: 5504
+}
+member {
+  id: 0x65aadbb7
+  name: "filters"
+  type_id: 0x6d3a18c2
+  offset: 192
+}
+member {
+  id: 0x32fe8ef8
+  name: "fin"
+  type_id: 0xe8034002
+  offset: 104
+  bitsize: 1
+}
+member {
+  id: 0x6fd12469
+  name: "final"
+  type_id: 0x2ed55948
+  offset: 128
+}
+member {
+  id: 0x6fd2b6e0
+  name: "final"
+  type_id: 0x2d47d08a
+  offset: 128
+}
+member {
+  id: 0xd9177c13
+  name: "final_frame_blocks"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0xdeee560d
+  name: "final_kfree"
+  type_id: 0x18bd6530
+  offset: 128
+}
+member {
+  id: 0xd96b7e57
+  name: "final_offset"
+  type_id: 0x914dbfdc
+  offset: 944
+}
+member {
+  id: 0xd98fb726
+  name: "final_offset"
+  type_id: 0x7584e7da
+  offset: 272
+}
+member {
+  id: 0xfd72718e
+  name: "finalize"
+  type_id: 0x2c7f5725
+  offset: 64
+}
+member {
+  id: 0x49bff4c4
+  name: "finalize_features"
+  type_id: 0x2f63630f
+  offset: 640
+}
+member {
+  id: 0x2acb20e0
+  name: "find"
+  type_id: 0x04dad728
+  offset: 320
+}
+member {
+  id: 0x3d2c3bd2
+  name: "find_loaded_rsc_table"
+  type_id: 0x02a714aa
+  offset: 640
+}
+member {
+  id: 0x556b4aa3
+  name: "find_lock_rq"
+  type_id: 0x29ddeb4c
+  offset: 1088
+}
+member {
+  id: 0xe38dd418
+  name: "find_raw_port_number"
+  type_id: 0x2fc0a389
+  offset: 2752
+}
+member {
+  id: 0x6ee291cd
+  name: "find_special_page"
+  type_id: 0x256444f7
+  offset: 832
+}
+member {
+  id: 0x8317e158
+  name: "find_vqs"
+  type_id: 0x2f268c34
+  offset: 384
+}
+member {
+  id: 0x2ec27bbd
+  name: "fini_seq_private"
+  type_id: 0x6bf170af
+  offset: 128
+}
+member {
+  id: 0x7a288181
+  name: "finish"
+  type_id: 0x0eb62dc3
+  offset: 384
+}
+member {
+  id: 0x7a290a57
+  name: "finish"
+  type_id: 0x0f3dfb90
+  offset: 384
+}
+member {
+  id: 0x9749e7b4
+  name: "finish_request"
+  type_id: 0x0f5e0dda
+  offset: 768
+}
+member {
+  id: 0x3284cdc6
+  name: "finished"
+  type_id: 0x03913382
+  offset: 14848
+}
+member {
+  id: 0x7e491f35
+  name: "finup"
+  type_id: 0x2d7c4ebb
+  offset: 192
+}
+member {
+  id: 0x7e4ab622
+  name: "finup"
+  type_id: 0x2ed55948
+  offset: 192
+}
+member {
+  id: 0x9c5c45b0
+  name: "firmware"
+  type_id: 0x3e10b518
+  offset: 256
+}
+member {
+  id: 0xd6eb3ef5
+  name: "firmware_id"
+  type_id: 0x20fd6195
+  offset: 576
+}
+member {
+  id: 0x97467a19
+  name: "firmware_version"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x1f01199c
+  name: "first"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x1f2e3f08
+  name: "first"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x1fa2b0c1
+  name: "first"
+  type_id: 0x4585663f
+  offset: 1984
+}
+member {
+  id: 0x1fa2bc9a
+  name: "first"
+  type_id: 0x4585663f
+  offset: 544
+}
+member {
+  id: 0x1fc1f8dc
+  name: "first"
+  type_id: 0x26cfffd7
+}
+member {
+  id: 0x1fc70239
+  name: "first"
+  type_id: 0x20351a02
+}
+member {
+  id: 0x1fdb6cf4
+  name: "first"
+  type_id: 0x3c5bd7ce
+}
+member {
+  id: 0x1fe5f47c
+  name: "first"
+  type_id: 0x02c35f57
+}
+member {
+  id: 0x1ff26c3e
+  name: "first"
+  type_id: 0x155b1d5a
+}
+member {
+  id: 0x1fffced6
+  name: "first"
+  type_id: 0x18f9f5e3
+}
+member {
+  id: 0x67a6f683
+  name: "first_flusher"
+  type_id: 0x05563a83
+  offset: 768
+}
+member {
+  id: 0x8e3a4b7c
+  name: "first_insn_idx"
+  type_id: 0xc9082b19
+  offset: 736
+}
+member {
+  id: 0x4eec7232
+  name: "first_line_bpg_offset"
+  type_id: 0x295c7202
+  offset: 216
+}
+member {
+  id: 0x4e852d55
+  name: "first_mb_in_slice"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xf187a205
+  name: "first_minor"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x804b0c9d
+  name: "first_part_header_bits"
+  type_id: 0xe62ebf07
+  offset: 9312
+}
+member {
+  id: 0xeb7c92de
+  name: "first_part_size"
+  type_id: 0xe62ebf07
+  offset: 9280
+}
+member {
+  id: 0x95cb5ba0
+  name: "first_pending_disptime"
+  type_id: 0x33756485
+  offset: 576
+}
+member {
+  id: 0x03220741
+  name: "first_seg"
+  type_id: 0x3ef55b88
+}
+member {
+  id: 0x6037a967
+  name: "first_slot"
+  type_id: 0x6d7f5ff6
+  offset: 32
+}
+member {
+  id: 0xbd1ba3e0
+  name: "first_trees"
+  type_id: 0x3846864c
+  offset: 6720
+}
+member {
+  id: 0x7fb051f9
+  name: "firstuse"
+  type_id: 0xedf277ba
+  offset: 192
+}
+member {
+  id: 0x8c7e6f6b
+  name: "fit_for_inline"
+  type_id: 0x4585663f
+  offset: 1
+  bitsize: 1
+}
+member {
+  id: 0x1f0cc0f4
+  name: "five_minus_max_num_merge_cand"
+  type_id: 0xb3e7bac9
+  offset: 184
+}
+member {
+  id: 0x7601e027
+  name: "fix"
+  type_id: 0x0d5c9be0
+  offset: 2176
+}
+member {
+  id: 0x6621c0d3
+  name: "fix_capacity"
+  type_id: 0x4585663f
+  offset: 2816
+  bitsize: 1
+}
+member {
+  id: 0xb3a451b8
+  name: "fixed"
+  type_id: 0xb3e7bac9
+  offset: 32
+}
+member {
+  id: 0x59f346f2
+  name: "fixed_drv_type"
+  type_id: 0x6720d32f
+  offset: 8032
+}
+member {
+  id: 0x2899a5e8
+  name: "fixed_rate"
+  type_id: 0x6d7f5ff6
+  offset: 45440
+}
+member {
+  id: 0xb8f884d1
+  name: "fixed_uV"
+  type_id: 0x6720d32f
+  offset: 800
+}
+member {
+  id: 0xa6c91222
+  name: "fixmap_map"
+  type_id: 0x14e88d4b
+  offset: 384
+}
+member {
+  id: 0x261d1b5e
+  name: "fixmap_unmap"
+  type_id: 0x0eb62dc3
+  offset: 448
+}
+member {
+  id: 0x8923c81c
+  name: "fixup"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x7071b1b4
+  name: "fixup_controls"
+  type_id: 0x0f27f3f4
+  offset: 2048
+}
+member {
+  id: 0x1fa993f1
+  name: "fixup_dev_quirks"
+  type_id: 0x0ece1cac
+  offset: 832
+}
+member {
+  id: 0x0476553f
+  name: "fl_blocked_member"
+  type_id: 0xd3c80119
+  offset: 448
+}
+member {
+  id: 0x15b5a653
+  name: "fl_blocked_requests"
+  type_id: 0xd3c80119
+  offset: 320
+}
+member {
+  id: 0x7fabf045
+  name: "fl_blocker"
+  type_id: 0x3c2755a3
+}
+member {
+  id: 0xb16570ad
+  name: "fl_break_time"
+  type_id: 0x33756485
+  offset: 1216
+}
+member {
+  id: 0x996dc7f4
+  name: "fl_copy_lock"
+  type_id: 0x0d487fcc
+}
+member {
+  id: 0x0b51bd49
+  name: "fl_downgrade_time"
+  type_id: 0x33756485
+  offset: 1280
+}
+member {
+  id: 0xd31ef1d8
+  name: "fl_end"
+  type_id: 0x27a7c613
+  offset: 1088
+}
+member {
+  id: 0x8c817cf4
+  name: "fl_fasync"
+  type_id: 0x25e44921
+  offset: 1152
+}
+member {
+  id: 0x2e496c84
+  name: "fl_file"
+  type_id: 0x18ea6ae3
+  offset: 960
+}
+member {
+  id: 0xcb4bc416
+  name: "fl_flags"
+  type_id: 0x4585663f
+  offset: 640
+}
+member {
+  id: 0xf38477e1
+  name: "fl_link"
+  type_id: 0x49a73111
+  offset: 192
+}
+member {
+  id: 0x07286b97
+  name: "fl_link_cpu"
+  type_id: 0x6720d32f
+  offset: 736
+}
+member {
+  id: 0xa262f80b
+  name: "fl_list"
+  type_id: 0xd3c80119
+  offset: 64
+}
+member {
+  id: 0xb17cb222
+  name: "fl_lmops"
+  type_id: 0x3d3ea9eb
+  offset: 1408
+}
+member {
+  id: 0xda5f8429
+  name: "fl_ops"
+  type_id: 0x374e1049
+  offset: 1344
+}
+member {
+  id: 0xebb4e700
+  name: "fl_owner"
+  type_id: 0x8fd1c081
+  offset: 576
+}
+member {
+  id: 0x607dea09
+  name: "fl_pid"
+  type_id: 0x4585663f
+  offset: 704
+}
+member {
+  id: 0x4b863bf1
+  name: "fl_release_private"
+  type_id: 0x0d745899
+  offset: 64
+}
+member {
+  id: 0xe729ddb7
+  name: "fl_start"
+  type_id: 0x27a7c613
+  offset: 1024
+}
+member {
+  id: 0x8bd6269f
+  name: "fl_type"
+  type_id: 0x5d8155a5
+  offset: 672
+}
+member {
+  id: 0xa3170857
+  name: "fl_u"
+  type_id: 0x67984f0c
+  offset: 1472
+}
+member {
+  id: 0x9e5fa9e2
+  name: "fl_wait"
+  type_id: 0x03913382
+  offset: 768
+}
+member {
+  id: 0x38c4a1e8
+  name: "flac"
+  type_id: 0x944b9ff1
+}
+member {
+  id: 0x8b435091
+  name: "flac_d"
+  type_id: 0xbe23a657
+}
+member {
+  id: 0x259b5316
+  name: "flag"
+  type_id: 0xc9082b19
+  offset: 448
+}
+member {
+  id: 0x25b47614
+  name: "flag"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xf0176218
+  name: "flag_changed"
+  type_id: 0x2d4051be
+  offset: 960
+}
+member {
+  id: 0x9706c321
+  name: "flag_field"
+  type_id: 0x66fe5c63
+  offset: 48
+}
+member {
+  id: 0xd356f14d
+  name: "flag_mask"
+  type_id: 0x0baa70a7
+  offset: 13152
+}
+member {
+  id: 0xd356f480
+  name: "flag_mask"
+  type_id: 0x0baa70a7
+  offset: 7200
+}
+member {
+  id: 0x2d0ec8d7
+  name: "flags"
+  type_id: 0x664b4e02
+  offset: 320
+}
+member {
+  id: 0x2d0ec9dd
+  name: "flags"
+  type_id: 0x664b4e02
+  offset: 864
+}
+member {
+  id: 0x2d0fa054
+  name: "flags"
+  type_id: 0x6720d32f
+  offset: 288
+}
+member {
+  id: 0x2d0fa06c
+  name: "flags"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x2d0fa0d4
+  name: "flags"
+  type_id: 0x6720d32f
+  offset: 352
+}
+member {
+  id: 0x2d0fa105
+  name: "flags"
+  type_id: 0x6720d32f
+  offset: 2432
+}
+member {
+  id: 0x2d0fa3dd
+  name: "flags"
+  type_id: 0x6720d32f
+  offset: 1472
+}
+member {
+  id: 0x2d0fa426
+  name: "flags"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0x2d0fa53d
+  name: "flags"
+  type_id: 0x6720d32f
+  offset: 480
+}
+member {
+  id: 0x2d0fa67e
+  name: "flags"
+  type_id: 0x6720d32f
+  offset: 1408
+}
+member {
+  id: 0x2d0fa6b0
+  name: "flags"
+  type_id: 0x6720d32f
+  offset: 704
+}
+member {
+  id: 0x2d0fa7a2
+  name: "flags"
+  type_id: 0x6720d32f
+  offset: 7840
+}
+member {
+  id: 0x2d0fa7a9
+  name: "flags"
+  type_id: 0x6720d32f
+  offset: 224
+}
+member {
+  id: 0x2d0fa7ad
+  name: "flags"
+  type_id: 0x6720d32f
+  offset: 6048
+}
+member {
+  id: 0x2d0fa9b6
+  name: "flags"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x2d0fa9fb
+  name: "flags"
+  type_id: 0x6720d32f
+  offset: 1088
+}
+member {
+  id: 0x2d0faa06
+  name: "flags"
+  type_id: 0x6720d32f
+  offset: 2880
+}
+member {
+  id: 0x2d0fab5d
+  name: "flags"
+  type_id: 0x6720d32f
+  offset: 7584
+}
+member {
+  id: 0x2d0fad4f
+  name: "flags"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x2d0fadff
+  name: "flags"
+  type_id: 0x6720d32f
+  offset: 576
+}
+member {
+  id: 0x2d0fae2b
+  name: "flags"
+  type_id: 0x6720d32f
+  offset: 896
+}
+member {
+  id: 0x2d211e7b
+  name: "flags"
+  type_id: 0x499ec4e1
+  offset: 64
+}
+member {
+  id: 0x2d2a2b11
+  name: "flags"
+  type_id: 0x42af4f5c
+}
+member {
+  id: 0x2d2ce67a
+  name: "flags"
+  type_id: 0x4466c59f
+  offset: 64
+}
+member {
+  id: 0x2d2d0088
+  name: "flags"
+  type_id: 0x4585663f
+  offset: 480
+}
+member {
+  id: 0x2d2d00aa
+  name: "flags"
+  type_id: 0x4585663f
+  offset: 384
+}
+member {
+  id: 0x2d2d0138
+  name: "flags"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x2d2d0193
+  name: "flags"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0x2d2d021c
+  name: "flags"
+  type_id: 0x4585663f
+  offset: 224
+}
+member {
+  id: 0x2d2d0282
+  name: "flags"
+  type_id: 0x4585663f
+  offset: 832
+}
+member {
+  id: 0x2d2d0305
+  name: "flags"
+  type_id: 0x4585663f
+  offset: 704
+}
+member {
+  id: 0x2d2d03a4
+  name: "flags"
+  type_id: 0x4585663f
+  offset: 1440
+}
+member {
+  id: 0x2d2d03cb
+  name: "flags"
+  type_id: 0x4585663f
+  offset: 1408
+}
+member {
+  id: 0x2d2d03e8
+  name: "flags"
+  type_id: 0x4585663f
+  offset: 3904
+}
+member {
+  id: 0x2d2d0561
+  name: "flags"
+  type_id: 0x4585663f
+  offset: 352
+}
+member {
+  id: 0x2d2d05d9
+  name: "flags"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x2d2d05e1
+  name: "flags"
+  type_id: 0x4585663f
+  offset: 288
+}
+member {
+  id: 0x2d2d064f
+  name: "flags"
+  type_id: 0x4585663f
+  offset: 448
+}
+member {
+  id: 0x2d2d0679
+  name: "flags"
+  type_id: 0x4585663f
+  offset: 672
+}
+member {
+  id: 0x2d2d06aa
+  name: "flags"
+  type_id: 0x4585663f
+  offset: 928
+}
+member {
+  id: 0x2d2d06ba
+  name: "flags"
+  type_id: 0x4585663f
+  offset: 2048
+}
+member {
+  id: 0x2d2d06ff
+  name: "flags"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0x2d2d0741
+  name: "flags"
+  type_id: 0x4585663f
+  offset: 640
+}
+member {
+  id: 0x2d2d0819
+  name: "flags"
+  type_id: 0x4585663f
+  offset: 1056
+}
+member {
+  id: 0x2d2d0822
+  name: "flags"
+  type_id: 0x4585663f
+  offset: 13824
+}
+member {
+  id: 0x2d2d08bb
+  name: "flags"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x2d2d08fa
+  name: "flags"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x2d2d0972
+  name: "flags"
+  type_id: 0x4585663f
+  offset: 11328
+}
+member {
+  id: 0x2d2d09cb
+  name: "flags"
+  type_id: 0x4585663f
+  offset: 960
+}
+member {
+  id: 0x2d2d09f1
+  name: "flags"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0x2d2d0a20
+  name: "flags"
+  type_id: 0x4585663f
+  offset: 512
+}
+member {
+  id: 0x2d2d0ba4
+  name: "flags"
+  type_id: 0x4585663f
+  offset: 1248
+}
+member {
+  id: 0x2d2d0bdf
+  name: "flags"
+  type_id: 0x4585663f
+  offset: 1536
+}
+member {
+  id: 0x2d2d0c03
+  name: "flags"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x2d2d0cd8
+  name: "flags"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0x2d2d0e5f
+  name: "flags"
+  type_id: 0x4585663f
+  offset: 800
+}
+member {
+  id: 0x2d2d0fe7
+  name: "flags"
+  type_id: 0x4585663f
+  offset: 544
+}
+member {
+  id: 0x2d350bb5
+  name: "flags"
+  type_id: 0x5d8155a5
+  offset: 16
+}
+member {
+  id: 0x2d41d032
+  name: "flags"
+  type_id: 0x295c7202
+  offset: 1360
+}
+member {
+  id: 0x2d41d082
+  name: "flags"
+  type_id: 0x295c7202
+  offset: 768
+}
+member {
+  id: 0x2d41d176
+  name: "flags"
+  type_id: 0x295c7202
+  offset: 3224
+}
+member {
+  id: 0x2d41d1af
+  name: "flags"
+  type_id: 0x295c7202
+  offset: 96
+}
+member {
+  id: 0x2d41d1ee
+  name: "flags"
+  type_id: 0x295c7202
+  offset: 128
+}
+member {
+  id: 0x2d41d28a
+  name: "flags"
+  type_id: 0x295c7202
+  offset: 896
+}
+member {
+  id: 0x2d41d3c0
+  name: "flags"
+  type_id: 0x295c7202
+  offset: 216
+}
+member {
+  id: 0x2d41d3ca
+  name: "flags"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0x2d41d45d
+  name: "flags"
+  type_id: 0x295c7202
+  offset: 72
+}
+member {
+  id: 0x2d41d517
+  name: "flags"
+  type_id: 0x295c7202
+  offset: 32
+}
+member {
+  id: 0x2d41d692
+  name: "flags"
+  type_id: 0x295c7202
+  offset: 16
+}
+member {
+  id: 0x2d41d6c0
+  name: "flags"
+  type_id: 0x295c7202
+  offset: 368
+}
+member {
+  id: 0x2d41da41
+  name: "flags"
+  type_id: 0x295c7202
+  offset: 144
+}
+member {
+  id: 0x2d41da7e
+  name: "flags"
+  type_id: 0x295c7202
+  offset: 40
+}
+member {
+  id: 0x2d41db8c
+  name: "flags"
+  type_id: 0x295c7202
+  offset: 104
+}
+member {
+  id: 0x2d41dc75
+  name: "flags"
+  type_id: 0x295c7202
+  offset: 352
+}
+member {
+  id: 0x2d41de4d
+  name: "flags"
+  type_id: 0x295c7202
+  offset: 24
+}
+member {
+  id: 0x2d41df5b
+  name: "flags"
+  type_id: 0x295c7202
+  offset: 448
+}
+member {
+  id: 0x2d5680df
+  name: "flags"
+  type_id: 0x3e09ba9c
+  offset: 32
+}
+member {
+  id: 0x2d5bf0a8
+  name: "flags"
+  type_id: 0x33756485
+  offset: 384
+}
+member {
+  id: 0x2d5bf0ae
+  name: "flags"
+  type_id: 0x33756485
+  offset: 5952
+}
+member {
+  id: 0x2d5bf13a
+  name: "flags"
+  type_id: 0x33756485
+}
+member {
+  id: 0x2d5bf191
+  name: "flags"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0x2d5bf216
+  name: "flags"
+  type_id: 0x33756485
+  offset: 1664
+}
+member {
+  id: 0x2d5bf280
+  name: "flags"
+  type_id: 0x33756485
+  offset: 832
+}
+member {
+  id: 0x2d5bf2a1
+  name: "flags"
+  type_id: 0x33756485
+  offset: 5248
+}
+member {
+  id: 0x2d5bf307
+  name: "flags"
+  type_id: 0x33756485
+  offset: 704
+}
+member {
+  id: 0x2d5bf38a
+  name: "flags"
+  type_id: 0x33756485
+  offset: 9536
+}
+member {
+  id: 0x2d5bf3c9
+  name: "flags"
+  type_id: 0x33756485
+  offset: 1408
+}
+member {
+  id: 0x2d5bf3fe
+  name: "flags"
+  type_id: 0x33756485
+  offset: 1216
+}
+member {
+  id: 0x2d5bf44a
+  name: "flags"
+  type_id: 0x33756485
+  offset: 67520
+}
+member {
+  id: 0x2d5bf4b2
+  name: "flags"
+  type_id: 0x33756485
+  offset: 2432
+}
+member {
+  id: 0x2d5bf4f3
+  name: "flags"
+  type_id: 0x33756485
+  offset: 8640
+}
+member {
+  id: 0x2d5bf586
+  name: "flags"
+  type_id: 0x33756485
+  offset: 10688
+}
+member {
+  id: 0x2d5bf5db
+  name: "flags"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x2d5bf61f
+  name: "flags"
+  type_id: 0x33756485
+  offset: 1728
+}
+member {
+  id: 0x2d5bf625
+  name: "flags"
+  type_id: 0x33756485
+  offset: 1024
+}
+member {
+  id: 0x2d5bf64d
+  name: "flags"
+  type_id: 0x33756485
+  offset: 448
+}
+member {
+  id: 0x2d5bf6b8
+  name: "flags"
+  type_id: 0x33756485
+  offset: 2048
+}
+member {
+  id: 0x2d5bf6fd
+  name: "flags"
+  type_id: 0x33756485
+  offset: 320
+}
+member {
+  id: 0x2d5bf732
+  name: "flags"
+  type_id: 0x33756485
+  offset: 8960
+}
+member {
+  id: 0x2d5bf743
+  name: "flags"
+  type_id: 0x33756485
+  offset: 640
+}
+member {
+  id: 0x2d5bf747
+  name: "flags"
+  type_id: 0x33756485
+  offset: 1280
+}
+member {
+  id: 0x2d5bf753
+  name: "flags"
+  type_id: 0x33756485
+  offset: 3584
+}
+member {
+  id: 0x2d5bf7c8
+  name: "flags"
+  type_id: 0x33756485
+  offset: 4032
+}
+member {
+  id: 0x2d5bf820
+  name: "flags"
+  type_id: 0x33756485
+  offset: 6400
+}
+member {
+  id: 0x2d5bf848
+  name: "flags"
+  type_id: 0x33756485
+  offset: 576
+}
+member {
+  id: 0x2d5bf882
+  name: "flags"
+  type_id: 0x33756485
+  offset: 1600
+}
+member {
+  id: 0x2d5bf8f8
+  name: "flags"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x2d5bf9c0
+  name: "flags"
+  type_id: 0x33756485
+  offset: 36160
+}
+member {
+  id: 0x2d5bf9c9
+  name: "flags"
+  type_id: 0x33756485
+  offset: 960
+}
+member {
+  id: 0x2d5bf9f3
+  name: "flags"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0x2d5bfa22
+  name: "flags"
+  type_id: 0x33756485
+  offset: 512
+}
+member {
+  id: 0x2d5bfa27
+  name: "flags"
+  type_id: 0x33756485
+  offset: 1856
+}
+member {
+  id: 0x2d5bfb37
+  name: "flags"
+  type_id: 0x33756485
+  offset: 4608
+}
+member {
+  id: 0x2d5bfb55
+  name: "flags"
+  type_id: 0x33756485
+  offset: 3264
+}
+member {
+  id: 0x2d5bfb9c
+  name: "flags"
+  type_id: 0x33756485
+  offset: 896
+}
+member {
+  id: 0x2d5bfbb9
+  name: "flags"
+  type_id: 0x33756485
+  offset: 1344
+}
+member {
+  id: 0x2d5bfcdf
+  name: "flags"
+  type_id: 0x33756485
+  offset: 7808
+}
+member {
+  id: 0x2d5bff78
+  name: "flags"
+  type_id: 0x33756485
+  offset: 2112
+}
+member {
+  id: 0x2d5bffb1
+  name: "flags"
+  type_id: 0x33756485
+  offset: 2880
+}
+member {
+  id: 0x2d5bffb9
+  name: "flags"
+  type_id: 0x33756485
+  offset: 6784
+}
+member {
+  id: 0x2d603bf3
+  name: "flags"
+  type_id: 0x08bfad38
+}
+member {
+  id: 0x2d6232ce
+  name: "flags"
+  type_id: 0x0abe9fd1
+  offset: 136
+}
+member {
+  id: 0x2d632160
+  name: "flags"
+  type_id: 0x0baa70a7
+  offset: 7232
+}
+member {
+  id: 0x2d6327ad
+  name: "flags"
+  type_id: 0x0baa70a7
+  offset: 96
+}
+member {
+  id: 0x2d632948
+  name: "flags"
+  type_id: 0x0baa70a7
+  offset: 13184
+}
+member {
+  id: 0x2d632e85
+  name: "flags"
+  type_id: 0x0baa70a7
+  offset: 256
+}
+member {
+  id: 0x2d6ab6ae
+  name: "flags"
+  type_id: 0x023f86a4
+  offset: 1088
+}
+member {
+  id: 0x2d6abf39
+  name: "flags"
+  type_id: 0x023f86a4
+  offset: 64
+}
+member {
+  id: 0x2d6c6d16
+  name: "flags"
+  type_id: 0x04e70a8b
+  offset: 2112
+}
+member {
+  id: 0x2d70393b
+  name: "flags"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0x2d74b063
+  name: "flags"
+  type_id: 0x1c3dbe5a
+  offset: 96
+}
+member {
+  id: 0x2d74b872
+  name: "flags"
+  type_id: 0x1c3dbe5a
+  offset: 384
+}
+member {
+  id: 0x2d7ef0cc
+  name: "flags"
+  type_id: 0x16749208
+}
+member {
+  id: 0x2d7ef94f
+  name: "flags"
+  type_id: 0x16749208
+  offset: 96
+}
+member {
+  id: 0x2d808371
+  name: "flags"
+  type_id: 0xe8034002
+  offset: 208
+}
+member {
+  id: 0x2d808382
+  name: "flags"
+  type_id: 0xe8034002
+  offset: 80
+}
+member {
+  id: 0x2d8089a0
+  name: "flags"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0x2d808bd3
+  name: "flags"
+  type_id: 0xe8034002
+  offset: 112
+}
+member {
+  id: 0x2d808bdf
+  name: "flags"
+  type_id: 0xe8034002
+  offset: 48
+}
+member {
+  id: 0x2d85715e
+  name: "flags"
+  type_id: 0xedf277ba
+  offset: 448
+}
+member {
+  id: 0x2d8572c8
+  name: "flags"
+  type_id: 0xedf277ba
+  offset: 64
+}
+member {
+  id: 0x2d8573b6
+  name: "flags"
+  type_id: 0xedf277ba
+  offset: 2176
+}
+member {
+  id: 0x2d857629
+  name: "flags"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x2d857682
+  name: "flags"
+  type_id: 0xedf277ba
+  offset: 256
+}
+member {
+  id: 0x2d85778b
+  name: "flags"
+  type_id: 0xedf277ba
+  offset: 2560
+}
+member {
+  id: 0x2d8577bb
+  name: "flags"
+  type_id: 0xedf277ba
+  offset: 384
+}
+member {
+  id: 0x2d857dc8
+  name: "flags"
+  type_id: 0xedf277ba
+  offset: 9792
+}
+member {
+  id: 0x2d857ee0
+  name: "flags"
+  type_id: 0xedf277ba
+  offset: 192
+}
+member {
+  id: 0x2d85c124
+  name: "flags"
+  type_id: 0xed40f2c0
+  offset: 2432
+}
+member {
+  id: 0x2d8a4e32
+  name: "flags"
+  type_id: 0xe2ce8d42
+  offset: 64
+}
+member {
+  id: 0x2d8ea047
+  name: "flags"
+  type_id: 0xe62ebf07
+  offset: 896
+}
+member {
+  id: 0x2d8ea1f9
+  name: "flags"
+  type_id: 0xe62ebf07
+  offset: 512
+}
+member {
+  id: 0x2d8ea323
+  name: "flags"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0x2d8ea362
+  name: "flags"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x2d8ea38b
+  name: "flags"
+  type_id: 0xe62ebf07
+  offset: 1824
+}
+member {
+  id: 0x2d8ea393
+  name: "flags"
+  type_id: 0xe62ebf07
+  offset: 576
+}
+member {
+  id: 0x2d8ea426
+  name: "flags"
+  type_id: 0xe62ebf07
+  offset: 736
+}
+member {
+  id: 0x2d8ea6ca
+  name: "flags"
+  type_id: 0xe62ebf07
+  offset: 4096
+}
+member {
+  id: 0x2d8ea701
+  name: "flags"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0x2d8ea71b
+  name: "flags"
+  type_id: 0xe62ebf07
+  offset: 4448
+}
+member {
+  id: 0x2d8ea79f
+  name: "flags"
+  type_id: 0xe62ebf07
+  offset: 8352
+}
+member {
+  id: 0x2d8ea7da
+  name: "flags"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x2d8ea8ca
+  name: "flags"
+  type_id: 0xe62ebf07
+  offset: 1184
+}
+member {
+  id: 0x2d8ea9c5
+  name: "flags"
+  type_id: 0xe62ebf07
+  offset: 224
+}
+member {
+  id: 0x2d8eaa4a
+  name: "flags"
+  type_id: 0xe62ebf07
+  offset: 256
+}
+member {
+  id: 0x2d8eaae1
+  name: "flags"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x2d8ead96
+  name: "flags"
+  type_id: 0xe62ebf07
+  offset: 448
+}
+member {
+  id: 0x2d8eae00
+  name: "flags"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x2d901ab8
+  name: "flags"
+  type_id: 0xf8992146
+  offset: 320
+}
+member {
+  id: 0x2da180ef
+  name: "flags"
+  type_id: 0xc9082b19
+  offset: 5312
+}
+member {
+  id: 0x2da1814e
+  name: "flags"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x2da18312
+  name: "flags"
+  type_id: 0xc9082b19
+  offset: 800
+}
+member {
+  id: 0x2da18414
+  name: "flags"
+  type_id: 0xc9082b19
+  offset: 7712
+}
+member {
+  id: 0x2da18486
+  name: "flags"
+  type_id: 0xc9082b19
+  offset: 960
+}
+member {
+  id: 0x2da184bc
+  name: "flags"
+  type_id: 0xc9082b19
+  offset: 192
+}
+member {
+  id: 0x2da18554
+  name: "flags"
+  type_id: 0xc9082b19
+  offset: 1056
+}
+member {
+  id: 0x2da185b7
+  name: "flags"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0x2da185f6
+  name: "flags"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0x2da18673
+  name: "flags"
+  type_id: 0xc9082b19
+  offset: 1568
+}
+member {
+  id: 0x2da18894
+  name: "flags"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x2da188ac
+  name: "flags"
+  type_id: 0xc9082b19
+  offset: 288
+}
+member {
+  id: 0x2da189ea
+  name: "flags"
+  type_id: 0xc9082b19
+  offset: 2176
+}
+member {
+  id: 0x2da18b34
+  name: "flags"
+  type_id: 0xc9082b19
+  offset: 672
+}
+member {
+  id: 0x2da18b50
+  name: "flags"
+  type_id: 0xc9082b19
+  offset: 1728
+}
+member {
+  id: 0x2da18bb2
+  name: "flags"
+  type_id: 0xc9082b19
+  offset: 320
+}
+member {
+  id: 0x2da18c75
+  name: "flags"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x2da18c87
+  name: "flags"
+  type_id: 0xc9082b19
+  offset: 608
+}
+member {
+  id: 0x2da18cde
+  name: "flags"
+  type_id: 0xc9082b19
+  offset: 256
+}
+member {
+  id: 0x2da18de7
+  name: "flags"
+  type_id: 0xc9082b19
+  offset: 384
+}
+member {
+  id: 0x2da18e15
+  name: "flags"
+  type_id: 0xc9082b19
+  offset: 416
+}
+member {
+  id: 0x2da18e5e
+  name: "flags"
+  type_id: 0xc9082b19
+  offset: 1184
+}
+member {
+  id: 0x2da18eb1
+  name: "flags"
+  type_id: 0xc9082b19
+  offset: 1216
+}
+member {
+  id: 0x2da18f51
+  name: "flags"
+  type_id: 0xc9082b19
+  offset: 224
+}
+member {
+  id: 0x2da18f59
+  name: "flags"
+  type_id: 0xc9082b19
+  offset: 1664
+}
+member {
+  id: 0x2da1b0f9
+  name: "flags"
+  type_id: 0xc93e017b
+  offset: 896
+}
+member {
+  id: 0x2da1b69e
+  name: "flags"
+  type_id: 0xc93e017b
+  offset: 48
+}
+member {
+  id: 0x2da1b7bf
+  name: "flags"
+  type_id: 0xc93e017b
+  offset: 160
+}
+member {
+  id: 0x2da1b832
+  name: "flags"
+  type_id: 0xc93e017b
+  offset: 144
+}
+member {
+  id: 0x2da1ba5f
+  name: "flags"
+  type_id: 0xc93e017b
+}
+member {
+  id: 0x2da1bd28
+  name: "flags"
+  type_id: 0xc93e017b
+  offset: 448
+}
+member {
+  id: 0x2da1bec3
+  name: "flags"
+  type_id: 0xc93e017b
+  offset: 80
+}
+member {
+  id: 0x2dbc9314
+  name: "flags"
+  type_id: 0xd41e888f
+  offset: 128
+}
+member {
+  id: 0x2dd0356f
+  name: "flags"
+  type_id: 0xb8b86aa0
+  offset: 2944
+}
+member {
+  id: 0x2dd8bc01
+  name: "flags"
+  type_id: 0xb0312d5a
+  offset: 576
+}
+member {
+  id: 0x2ddb6196
+  name: "flags"
+  type_id: 0xb3e7bac9
+  offset: 656
+}
+member {
+  id: 0x2ddb61b6
+  name: "flags"
+  type_id: 0xb3e7bac9
+  offset: 40
+}
+member {
+  id: 0x2ddb62e9
+  name: "flags"
+  type_id: 0xb3e7bac9
+  offset: 56
+}
+member {
+  id: 0x2ddb63e4
+  name: "flags"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0x2ddb6585
+  name: "flags"
+  type_id: 0xb3e7bac9
+  offset: 24
+}
+member {
+  id: 0x2ddb659d
+  name: "flags"
+  type_id: 0xb3e7bac9
+  offset: 1448
+}
+member {
+  id: 0x2ddb6705
+  name: "flags"
+  type_id: 0xb3e7bac9
+  offset: 64
+}
+member {
+  id: 0x2ddb6802
+  name: "flags"
+  type_id: 0xb3e7bac9
+  offset: 8
+}
+member {
+  id: 0x2ddb6a26
+  name: "flags"
+  type_id: 0xb3e7bac9
+  offset: 128
+}
+member {
+  id: 0x2ddb6c62
+  name: "flags"
+  type_id: 0xb3e7bac9
+  offset: 88
+}
+member {
+  id: 0x2ddb6d82
+  name: "flags"
+  type_id: 0xb3e7bac9
+  offset: 1288
+}
+member {
+  id: 0x2ddb6edf
+  name: "flags"
+  type_id: 0xb3e7bac9
+  offset: 32
+}
+member {
+  id: 0x2ddb7ced
+  name: "flags"
+  type_id: 0xb3f81878
+  offset: 256
+}
+member {
+  id: 0x2de12263
+  name: "flags"
+  type_id: 0x89ab06e3
+  offset: 32
+}
+member {
+  id: 0x2de16f98
+  name: "flags"
+  type_id: 0x89ea5acf
+  offset: 168
+}
+member {
+  id: 0x2df885c3
+  name: "flags"
+  type_id: 0x90065ac1
+  offset: 320
+}
+member {
+  id: 0x2df9c023
+  name: "flags"
+  type_id: 0x914dbfdc
+  offset: 128
+}
+member {
+  id: 0x2df9c75f
+  name: "flags"
+  type_id: 0x914dbfdc
+  offset: 16
+}
+member {
+  id: 0x2df9cd8e
+  name: "flags"
+  type_id: 0x914dbfdc
+  offset: 208
+}
+member {
+  id: 0x2df9cec4
+  name: "flags"
+  type_id: 0x914dbfdc
+  offset: 7648
+}
+member {
+  id: 0x2dfaa76d
+  name: "flags"
+  type_id: 0x92233392
+}
+member {
+  id: 0x2dfaa7c6
+  name: "flags"
+  type_id: 0x92233392
+  offset: 256
+}
+member {
+  id: 0x2dfaafa4
+  name: "flags"
+  type_id: 0x92233392
+  offset: 192
+}
+member {
+  id: 0x2dfaafc3
+  name: "flags"
+  type_id: 0x92233392
+  offset: 768
+}
+member {
+  id: 0x4db09eea
+  name: "flags"
+  type_id: 0x4585663f
+  offset: 280
+  bitsize: 8
+}
+member {
+  id: 0x4db09f5f
+  name: "flags"
+  type_id: 0x4585663f
+  offset: 56
+  bitsize: 8
+}
+member {
+  id: 0xcc897683
+  name: "flags_padding"
+  type_id: 0xc9082b19
+  offset: 608
+}
+member {
+  id: 0xae97e9a3
+  name: "flags_req"
+  type_id: 0x160238dd
+  offset: 2752
+}
+member {
+  id: 0x52898c16
+  name: "flags_valid"
+  type_id: 0x6d7f5ff6
+  offset: 192
+  bitsize: 1
+}
+member {
+  id: 0xc169af5a
+  name: "flash_brightness_get"
+  type_id: 0x2e08aceb
+  offset: 64
+}
+member {
+  id: 0x15360220
+  name: "flash_brightness_set"
+  type_id: 0x2ef976f3
+}
+member {
+  id: 0x4ac8a39f
+  name: "flash_device"
+  type_id: 0x2ed04d51
+  offset: 2112
+}
+member {
+  id: 0x678f7df1
+  name: "flash_resume"
+  type_id: 0x0d9a8731
+  offset: 1600
+}
+member {
+  id: 0x4ad49fc7
+  name: "flat"
+  type_id: 0x0faae5b1
+  offset: 128
+}
+member {
+  id: 0x2a1f9a7b
+  name: "flatness_max_qp"
+  type_id: 0x295c7202
+  offset: 296
+}
+member {
+  id: 0x2a1f9d37
+  name: "flatness_max_qp"
+  type_id: 0x295c7202
+  offset: 856
+}
+member {
+  id: 0x01e83239
+  name: "flatness_min_qp"
+  type_id: 0x295c7202
+  offset: 288
+}
+member {
+  id: 0x01e83504
+  name: "flatness_min_qp"
+  type_id: 0x295c7202
+  offset: 848
+}
+member {
+  id: 0xdf2fd3ca
+  name: "flavour"
+  type_id: 0x03e0374b
+  offset: 64
+}
+member {
+  id: 0x9a18c6a2
+  name: "flc_flock"
+  type_id: 0xd3c80119
+  offset: 64
+}
+member {
+  id: 0x82e6007e
+  name: "flc_lease"
+  type_id: 0xd3c80119
+  offset: 320
+}
+member {
+  id: 0xb8ef7f60
+  name: "flc_lock"
+  type_id: 0xf313e71a
+}
+member {
+  id: 0x850366d0
+  name: "flc_posix"
+  type_id: 0xd3c80119
+  offset: 192
+}
+member {
+  id: 0x97f1db17
+  name: "flexible_active"
+  type_id: 0xd3c80119
+  offset: 1152
+}
+member {
+  id: 0x33975e6d
+  name: "flexible_groups"
+  type_id: 0xb3579875
+  offset: 768
+}
+member {
+  id: 0x10302dee
+  name: "flicker_reduction"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0xce01c5ff
+  name: "flip_done"
+  type_id: 0x3fcbf304
+  offset: 128
+}
+member {
+  id: 0x812ea134
+  name: "flock"
+  type_id: 0x2c1a4564
+  offset: 1472
+}
+member {
+  id: 0x1cf87de0
+  name: "flow"
+  type_id: 0x130b9b47
+  offset: 4224
+}
+member {
+  id: 0x0ec0d80f
+  name: "flow_block"
+  type_id: 0xba1689b9
+  offset: 1280
+}
+member {
+  id: 0x62a96efa
+  name: "flow_change"
+  type_id: 0x6720d32f
+  offset: 4608
+}
+member {
+  id: 0x737a791c
+  name: "flow_ctl_mode"
+  type_id: 0xb3e7bac9
+  offset: 12864
+}
+member {
+  id: 0x24112253
+  name: "flow_flags"
+  type_id: 0xb3e7bac9
+  offset: 416
+}
+member {
+  id: 0xe809ed63
+  name: "flow_limit"
+  type_id: 0x16665d14
+  offset: 512
+}
+member {
+  id: 0x9683f73d
+  name: "flow_table"
+  type_id: 0x269b42b4
+  offset: 64
+}
+member {
+  id: 0x2fe2536f
+  name: "flow_type"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x2fe25e54
+  name: "flow_type"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x9e38017c
+  name: "flowic_flags"
+  type_id: 0xb3e7bac9
+  offset: 152
+}
+member {
+  id: 0x4e59dec1
+  name: "flowic_iif"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x1dfaf184
+  name: "flowic_l3mdev"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x42a8fdb0
+  name: "flowic_mark"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x0306be35
+  name: "flowic_multipath_hash"
+  type_id: 0xe62ebf07
+  offset: 320
+}
+member {
+  id: 0x69573b44
+  name: "flowic_oif"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x9c3383e7
+  name: "flowic_proto"
+  type_id: 0xb3e7bac9
+  offset: 144
+}
+member {
+  id: 0x02d6fb9d
+  name: "flowic_scope"
+  type_id: 0xb3e7bac9
+  offset: 136
+}
+member {
+  id: 0x7e8ca9dd
+  name: "flowic_secid"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0x55e9bb1d
+  name: "flowic_tos"
+  type_id: 0xb3e7bac9
+  offset: 128
+}
+member {
+  id: 0x2c6f3331
+  name: "flowic_tun_key"
+  type_id: 0xc5bbfc38
+  offset: 256
+}
+member {
+  id: 0xb5c013bb
+  name: "flowic_uid"
+  type_id: 0xe90b32b7
+  offset: 192
+}
+member {
+  id: 0x35800d52
+  name: "flowlabel"
+  type_id: 0xe276adef
+  offset: 640
+}
+member {
+  id: 0x6879d7d9
+  name: "flowlabel_consistency"
+  type_id: 0x295c7202
+  offset: 624
+}
+member {
+  id: 0x1732a364
+  name: "flowlabel_has_excl"
+  type_id: 0x5d8155a5
+  offset: 4416
+}
+member {
+  id: 0xbb70d4f6
+  name: "flowlabel_reflect"
+  type_id: 0x6720d32f
+  offset: 1120
+}
+member {
+  id: 0x3d18ebaf
+  name: "flowlabel_state_ranges"
+  type_id: 0x295c7202
+  offset: 1048
+}
+member {
+  id: 0x792ab242
+  name: "flows"
+  type_id: 0xce6e156f
+  offset: 192
+}
+member {
+  id: 0x66d3b7cd
+  name: "flr"
+  type_id: 0x029ed369
+}
+member {
+  id: 0x7f80e1b6
+  name: "flush"
+  type_id: 0x2eea35ba
+  offset: 64
+}
+member {
+  id: 0x7f8183c9
+  name: "flush"
+  type_id: 0x2f8e960d
+  offset: 704
+}
+member {
+  id: 0x7f818c8c
+  name: "flush"
+  type_id: 0x2f8e960d
+  offset: 9344
+}
+member {
+  id: 0x7f81ca37
+  name: "flush"
+  type_id: 0x2fc4c761
+  offset: 384
+}
+member {
+  id: 0x7f8229da
+  name: "flush"
+  type_id: 0x2c2c3c2e
+  offset: 50560
+}
+member {
+  id: 0x7f825805
+  name: "flush"
+  type_id: 0x2c5ea5d6
+  offset: 128
+}
+member {
+  id: 0x7f82e175
+  name: "flush"
+  type_id: 0x2cecc79b
+  offset: 3904
+}
+member {
+  id: 0x7f82f6e7
+  name: "flush"
+  type_id: 0x2cf17602
+  offset: 960
+}
+member {
+  id: 0x7f88e152
+  name: "flush"
+  type_id: 0x26e52db9
+  offset: 1856
+}
+member {
+  id: 0x8934961f
+  name: "flush_buffer"
+  type_id: 0x0ebd5484
+  offset: 896
+}
+member {
+  id: 0x893672ab
+  name: "flush_buffer"
+  type_id: 0x0c59c5c5
+  offset: 1344
+}
+member {
+  id: 0x89367883
+  name: "flush_buffer"
+  type_id: 0x0c59c5c5
+  offset: 256
+}
+member {
+  id: 0x9b04be35
+  name: "flush_cache"
+  type_id: 0x0f00ab39
+  offset: 896
+}
+member {
+  id: 0x9b252d03
+  name: "flush_cache"
+  type_id: 0x2e9195ef
+  offset: 768
+}
+member {
+  id: 0x52bae714
+  name: "flush_chars"
+  type_id: 0x0c59c5c5
+  offset: 576
+}
+member {
+  id: 0xe71243d6
+  name: "flush_color"
+  type_id: 0x6720d32f
+  offset: 160
+}
+member {
+  id: 0xe71247f4
+  name: "flush_color"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0xe7124977
+  name: "flush_color"
+  type_id: 0x6720d32f
+  offset: 672
+}
+member {
+  id: 0xce738796
+  name: "flush_data_in_flight"
+  type_id: 0xd3c80119
+  offset: 384
+}
+member {
+  id: 0x4712ad7c
+  name: "flush_dcache_to_poc"
+  type_id: 0x0fc9cef8
+  offset: 640
+}
+member {
+  id: 0x94ec9329
+  name: "flush_delay"
+  type_id: 0x6720d32f
+  offset: 320
+}
+member {
+  id: 0xba50d077
+  name: "flush_iotlb_all"
+  type_id: 0x0c5f67dd
+  offset: 448
+}
+member {
+  id: 0x06641e28
+  name: "flush_node"
+  type_id: 0xd3c80119
+  offset: 1024
+}
+member {
+  id: 0xaa7e73aa
+  name: "flush_pending_idx"
+  type_id: 0x4585663f
+  bitsize: 1
+}
+member {
+  id: 0xf4d6af9d
+  name: "flush_pending_since"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x6e8e256e
+  name: "flush_probe"
+  type_id: 0x2dcf71aa
+  offset: 512
+}
+member {
+  id: 0x5fc382f1
+  name: "flush_queue"
+  type_id: 0x585b40a5
+  offset: 128
+}
+member {
+  id: 0xd66119fb
+  name: "flush_rq"
+  type_id: 0x1e820193
+  offset: 512
+}
+member {
+  id: 0xda0ee758
+  name: "flush_running_idx"
+  type_id: 0x4585663f
+  offset: 1
+  bitsize: 1
+}
+member {
+  id: 0x702e33bb
+  name: "flush_to"
+  type_id: 0xe8034002
+  offset: 480
+}
+member {
+  id: 0xd9f93d25
+  name: "flush_wpq"
+  type_id: 0x3b4ce03a
+  offset: 7616
+}
+member {
+  id: 0x91f53b81
+  name: "flusher_overflow"
+  type_id: 0xd3c80119
+  offset: 960
+}
+member {
+  id: 0x52ca1c99
+  name: "flusher_queue"
+  type_id: 0xd3c80119
+  offset: 832
+}
+member {
+  id: 0x772e2e78
+  name: "flushing"
+  type_id: 0x6d7f5ff6
+  offset: 744
+}
+member {
+  id: 0x69aa4dd1
+  name: "fmt"
+  type_id: 0x4b39039b
+  offset: 64
+}
+member {
+  id: 0x69df6086
+  name: "fmt"
+  type_id: 0x3e10b518
+}
+member {
+  id: 0x69e5fb26
+  name: "fmt"
+  type_id: 0x0483e6f8
+  offset: 960
+}
+member {
+  id: 0x69eadea2
+  name: "fmt"
+  type_id: 0x0baa70a7
+  offset: 64
+}
+member {
+  id: 0x69fb8589
+  name: "fmt"
+  type_id: 0x1afc78a4
+  offset: 128
+}
+member {
+  id: 0xeec1037c
+  name: "fmt_bits"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0x608f71fe
+  name: "fmt_list"
+  type_id: 0xd3c80119
+  offset: 1216
+}
+member {
+  id: 0xa9443513
+  name: "fmt_size"
+  type_id: 0x4585663f
+  offset: 1024
+}
+member {
+  id: 0x2a040114
+  name: "fmt_type"
+  type_id: 0x4585663f
+  offset: 224
+}
+member {
+  id: 0x2a040547
+  name: "fmt_type"
+  type_id: 0x4585663f
+  offset: 448
+}
+member {
+  id: 0x2a040fd0
+  name: "fmt_type"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0xf70554da
+  name: "fn"
+  type_id: 0x92b210b3
+  offset: 128
+}
+member {
+  id: 0xf721f5dc
+  name: "fn"
+  type_id: 0xb61e350c
+  offset: 64
+}
+member {
+  id: 0xf745b309
+  name: "fn"
+  type_id: 0xd25c011d
+}
+member {
+  id: 0xf745b3a2
+  name: "fn"
+  type_id: 0xd25c011d
+  offset: 256
+}
+member {
+  id: 0xf798d2f3
+  name: "fn"
+  type_id: 0x0f3dfb90
+}
+member {
+  id: 0xf7b6525c
+  name: "fn"
+  type_id: 0x21b9b50c
+  offset: 64
+}
+member {
+  id: 0xf7b8ccd5
+  name: "fn"
+  type_id: 0x2f2a1fcd
+  offset: 128
+}
+member {
+  id: 0xf7ba379c
+  name: "fn"
+  type_id: 0x2dd156ff
+  offset: 128
+}
+member {
+  id: 0xf7ba9a1f
+  name: "fn"
+  type_id: 0x2d7ddef8
+  offset: 192
+}
+member {
+  id: 0xcde5cade
+  name: "fn_bit"
+  type_id: 0xe8034002
+  offset: 256
+}
+member {
+  id: 0x8294f4ef
+  name: "fn_flags"
+  type_id: 0xe8034002
+  offset: 272
+}
+member {
+  id: 0xdeb075ae
+  name: "fn_num"
+  type_id: 0x06641f04
+}
+member {
+  id: 0x0cd089bc
+  name: "fn_sernum"
+  type_id: 0x6720d32f
+  offset: 288
+}
+member {
+  id: 0x2175946c
+  name: "fnc"
+  type_id: 0x83ea5ff2
+  offset: 64
+}
+member {
+  id: 0x076ea1d6
+  name: "fnhe_daddr"
+  type_id: 0xe276adef
+  offset: 96
+}
+member {
+  id: 0x949810b3
+  name: "fnhe_expires"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0x8182e925
+  name: "fnhe_genid"
+  type_id: 0x74d29cf1
+  offset: 192
+}
+member {
+  id: 0x81911742
+  name: "fnhe_genid"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0xb4184b4d
+  name: "fnhe_gw"
+  type_id: 0xe276adef
+  offset: 192
+}
+member {
+  id: 0x8862e5aa
+  name: "fnhe_mtu_locked"
+  type_id: 0x6d7f5ff6
+  offset: 160
+}
+member {
+  id: 0xab1e9b3d
+  name: "fnhe_next"
+  type_id: 0x0e99eb32
+}
+member {
+  id: 0x8c6794e5
+  name: "fnhe_pmtu"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0xb07430ec
+  name: "fnhe_rth_input"
+  type_id: 0x1132933c
+  offset: 320
+}
+member {
+  id: 0x522166a7
+  name: "fnhe_rth_output"
+  type_id: 0x1132933c
+  offset: 384
+}
+member {
+  id: 0x793edfe5
+  name: "fnhe_stamp"
+  type_id: 0x33756485
+  offset: 448
+}
+member {
+  id: 0x26d168ad
+  name: "fno"
+  type_id: 0x295c7202
+}
+member {
+  id: 0xb8119d4a
+  name: "folio"
+  type_id: 0x2170d06d
+}
+member {
+  id: 0x53e7f764
+  name: "folios"
+  type_id: 0x9cecb217
+  offset: 448
+}
+member {
+  id: 0x0067008e
+  name: "follower_cnt"
+  type_id: 0xc9082b19
+  offset: 11520
+}
+member {
+  id: 0xb191f236
+  name: "fops"
+  type_id: 0x0d747433
+  offset: 128
+}
+member {
+  id: 0xb1a0ccc6
+  name: "fops"
+  type_id: 0x3c47a762
+  offset: 64
+}
+member {
+  id: 0xb1a1553a
+  name: "fops"
+  type_id: 0x3dd3c852
+  offset: 576
+}
+member {
+  id: 0xb1aa5772
+  name: "fops"
+  type_id: 0x36d130d1
+  offset: 128
+}
+member {
+  id: 0xb1aa5d9c
+  name: "fops"
+  type_id: 0x36d130d1
+  offset: 1664
+}
+member {
+  id: 0xb1ad6870
+  name: "fops"
+  type_id: 0x31ed7307
+  offset: 1344
+}
+member {
+  id: 0xfc95e22f
+  name: "for_alloc"
+  type_id: 0x6d7f5ff6
+  offset: 400
+}
+member {
+  id: 0x179a08f7
+  name: "for_background"
+  type_id: 0x4585663f
+  offset: 289
+  bitsize: 1
+}
+member {
+  id: 0x4b47d823
+  name: "for_devices"
+  type_id: 0x6720d32f
+  offset: 1408
+}
+member {
+  id: 0x56ed3a56
+  name: "for_kupdate"
+  type_id: 0x4585663f
+  offset: 288
+  bitsize: 1
+}
+member {
+  id: 0xd0f034ef
+  name: "for_reclaim"
+  type_id: 0x4585663f
+  offset: 291
+  bitsize: 1
+}
+member {
+  id: 0x9f00d405
+  name: "for_sync"
+  type_id: 0x4585663f
+  offset: 293
+  bitsize: 1
+}
+member {
+  id: 0xc2b7c45b
+  name: "force"
+  type_id: 0x5d8155a5
+  offset: 740
+  bitsize: 1
+}
+member {
+  id: 0xdf3c0436
+  name: "force"
+  type_id: 0x658d0669
+  offset: 13088
+}
+member {
+  id: 0xdf3c0ae1
+  name: "force"
+  type_id: 0x658d0669
+  offset: 448
+}
+member {
+  id: 0xdf54252e
+  name: "force"
+  type_id: 0x0dad77a5
+  offset: 192
+}
+member {
+  id: 0xe3f745b6
+  name: "force_alloc"
+  type_id: 0x6d7f5ff6
+  offset: 32
+}
+member {
+  id: 0x6a723e5d
+  name: "force_aperture"
+  type_id: 0x6d7f5ff6
+  offset: 128
+}
+member {
+  id: 0xf5ad883b
+  name: "force_atomic"
+  type_id: 0x6d7f5ff6
+  offset: 192
+  bitsize: 1
+}
+member {
+  id: 0x4d604309
+  name: "force_bounce"
+  type_id: 0x6d7f5ff6
+  offset: 392
+}
+member {
+  id: 0x5c082ca7
+  name: "force_media"
+  type_id: 0x4585663f
+  offset: 129
+  bitsize: 1
+}
+member {
+  id: 0x4f817797
+  name: "force_mld_version"
+  type_id: 0x0faae5b1
+  offset: 352
+}
+member {
+  id: 0x61b0fb48
+  name: "force_pmc"
+  type_id: 0x6d7f5ff6
+  offset: 19400
+}
+member {
+  id: 0x53106073
+  name: "force_pte_cb"
+  type_id: 0x7eadb465
+}
+member {
+  id: 0x9bf39d6f
+  name: "force_reset"
+  type_id: 0x6d7f5ff6
+  offset: 19392
+}
+member {
+  id: 0xecfeccb9
+  name: "force_resume_depth"
+  type_id: 0x4585663f
+  offset: 2080
+}
+member {
+  id: 0x23382e9a
+  name: "force_ro"
+  type_id: 0x6d7f5ff6
+  offset: 256
+}
+member {
+  id: 0x056fdf60
+  name: "force_scan"
+  type_id: 0x6d7f5ff6
+  offset: 1448
+}
+member {
+  id: 0x6ed63d49
+  name: "force_tllao"
+  type_id: 0x0faae5b1
+  offset: 1248
+}
+member {
+  id: 0xed8ccca2
+  name: "forced_gc_runs"
+  type_id: 0x33756485
+  offset: 576
+}
+member {
+  id: 0x0445680c
+  name: "forced_idle_latency_limit_ns"
+  type_id: 0x92233392
+  offset: 320
+}
+member {
+  id: 0x8063b31a
+  name: "fork"
+  type_id: 0x0f67b75e
+  offset: 896
+}
+member {
+  id: 0x081f58c5
+  name: "format"
+  type_id: 0x4803c51f
+  offset: 768
+}
+member {
+  id: 0x082fa6d9
+  name: "format"
+  type_id: 0x78f4e574
+  offset: 384
+}
+member {
+  id: 0x08623c4d
+  name: "format"
+  type_id: 0x356691bc
+  offset: 576
+}
+member {
+  id: 0x08652c03
+  name: "format"
+  type_id: 0x327b4cfa
+  offset: 64
+}
+member {
+  id: 0x08694bd2
+  name: "format"
+  type_id: 0x3e10b518
+  offset: 192
+}
+member {
+  id: 0x087e0fdc
+  name: "format"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x0884cfac
+  name: "format"
+  type_id: 0xd395c0e4
+  offset: 128
+}
+member {
+  id: 0x0890487c
+  name: "format"
+  type_id: 0xc714b5b1
+  offset: 800
+}
+member {
+  id: 0x08969809
+  name: "format"
+  type_id: 0xc1c477e4
+  offset: 7584
+}
+member {
+  id: 0x089e5b85
+  name: "format"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x08af84df
+  name: "format"
+  type_id: 0xf8deb354
+  offset: 128
+}
+member {
+  id: 0x08b1702a
+  name: "format"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x08b179c8
+  name: "format"
+  type_id: 0xe62ebf07
+  offset: 288
+}
+member {
+  id: 0xf3f081ad
+  name: "format_count"
+  type_id: 0x4585663f
+  offset: 1216
+}
+member {
+  id: 0xea09a74a
+  name: "format_default"
+  type_id: 0x6d7f5ff6
+  offset: 1248
+}
+member {
+  id: 0x6a5020ab
+  name: "format_flags"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xc8d54592
+  name: "format_mod_supported"
+  type_id: 0x34961042
+  offset: 768
+}
+member {
+  id: 0xfa03aa63
+  name: "format_reg"
+  type_id: 0x0f7c26a0
+  offset: 384
+}
+member {
+  id: 0x0d08c526
+  name: "format_types"
+  type_id: 0x0d9f5631
+  offset: 1152
+}
+member {
+  id: 0x25ef1b76
+  name: "format_val"
+  type_id: 0x0f7c26a0
+  offset: 448
+}
+member {
+  id: 0x619c508c
+  name: "format_write"
+  type_id: 0x0e6d7302
+  offset: 320
+}
+member {
+  id: 0x283980b2
+  name: "formats"
+  type_id: 0x78f4e574
+  offset: 384
+}
+member {
+  id: 0x28a75289
+  name: "formats"
+  type_id: 0xe62ebf07
+  offset: 2240
+}
+member {
+  id: 0x28d35217
+  name: "formats"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0x28d35b80
+  name: "formats"
+  type_id: 0x92233392
+  offset: 1088
+}
+member {
+  id: 0x28d35f34
+  name: "formats"
+  type_id: 0x92233392
+  offset: 128
+}
+member {
+  id: 0x9030e796
+  name: "former_request"
+  type_id: 0x3d8b1920
+  offset: 1152
+}
+member {
+  id: 0x3df0b3d7
+  name: "formula"
+  type_id: 0x43346467
+  offset: 48
+}
+member {
+  id: 0xcd137f78
+  name: "forw_hdr"
+  type_id: 0x34544a3f
+  offset: 1024
+}
+member {
+  id: 0xdd40e46b
+  name: "forward"
+  type_id: 0x3ed52bb5
+}
+member {
+  id: 0x08e5fd11
+  name: "forward_ref_ts"
+  type_id: 0xedf277ba
+  offset: 64
+}
+member {
+  id: 0x7cc73ef8
+  name: "forwarding"
+  type_id: 0x0faae5b1
+}
+member {
+  id: 0x61baed46
+  name: "found"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x62553b7d
+  name: "four_way_handshake"
+  type_id: 0x6d7f5ff6
+  offset: 40
+}
+member {
+  id: 0x5405e7a5
+  name: "fp"
+  type_id: 0x18bd6530
+  offset: 320
+}
+member {
+  id: 0x542e2e1a
+  name: "fp"
+  type_id: 0x33756485
+  offset: 640
+}
+member {
+  id: 0x5b05aaff
+  name: "fp_regs"
+  type_id: 0xd19129ce
+  offset: 2432
+}
+member {
+  id: 0x06effd42
+  name: "fp_state"
+  type_id: 0x7e388552
+  offset: 15360
+}
+member {
+  id: 0x13eb8d7b
+  name: "fpcr"
+  type_id: 0xe62ebf07
+  offset: 4128
+}
+member {
+  id: 0x9030452d
+  name: "fpfn"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x8537c357
+  name: "fpsimd_cpu"
+  type_id: 0x4585663f
+  offset: 5312
+}
+member {
+  id: 0x8cc3928e
+  name: "fpsimd_state"
+  type_id: 0xd19129ce
+  offset: 128
+}
+member {
+  id: 0x019e9603
+  name: "fpsr"
+  type_id: 0xe62ebf07
+  offset: 4096
+}
+member {
+  id: 0x1a4686d6
+  name: "fq"
+  type_id: 0x1b749a04
+  offset: 1024
+}
+member {
+  id: 0x1a59d77c
+  name: "fq"
+  type_id: 0x042f596c
+  offset: 1088
+}
+member {
+  id: 0x1a7ed948
+  name: "fq"
+  type_id: 0x232dc51f
+  offset: 1920
+}
+member {
+  id: 0x1a7edbeb
+  name: "fq"
+  type_id: 0x232dc51f
+  offset: 4992
+}
+member {
+  id: 0xa2e7db0a
+  name: "fq_domain"
+  type_id: 0x2e94a1e1
+  offset: 1984
+}
+member {
+  id: 0x440463e8
+  name: "fq_flush_finish_cnt"
+  type_id: 0x1f4573ef
+  offset: 1216
+}
+member {
+  id: 0xabbae029
+  name: "fq_flush_start_cnt"
+  type_id: 0x1f4573ef
+  offset: 1152
+}
+member {
+  id: 0xb125cda7
+  name: "fq_timer"
+  type_id: 0xd298e888
+  offset: 1280
+}
+member {
+  id: 0xf494395b
+  name: "fq_timer_on"
+  type_id: 0x74d29cf1
+  offset: 1728
+}
+member {
+  id: 0x77717339
+  name: "fqdir"
+  type_id: 0x0d6b4ee3
+  offset: 1344
+}
+member {
+  id: 0x777173d5
+  name: "fqdir"
+  type_id: 0x0d6b4ee3
+  offset: 3264
+}
+member {
+  id: 0x77717c32
+  name: "fqdir"
+  type_id: 0x0d6b4ee3
+  offset: 2432
+}
+member {
+  id: 0x77717d5b
+  name: "fqdir"
+  type_id: 0x0d6b4ee3
+  offset: 64
+}
+member {
+  id: 0x92e43c58
+  name: "fqslock"
+  type_id: 0xc8b17aa7
+  offset: 3072
+}
+member {
+  id: 0xd69815b7
+  name: "fr"
+  type_id: 0x04f5f07a
+}
+member {
+  id: 0xd6ffcb5b
+  name: "fr"
+  type_id: 0x63264602
+  offset: 472
+}
+member {
+  id: 0xa44063ea
+  name: "fr_net"
+  type_id: 0x0ca27481
+  offset: 512
+}
+member {
+  id: 0xa6870c7d
+  name: "fr_pvc"
+  type_id: 0x005aaa92
+}
+member {
+  id: 0x7ac90484
+  name: "fr_pvc_info"
+  type_id: 0x040b3260
+}
+member {
+  id: 0x4d645285
+  name: "frac"
+  type_id: 0x92233392
+  offset: 256
+}
+member {
+  id: 0x461c29ab
+  name: "frag"
+  type_id: 0xe8d14bc6
+}
+member {
+  id: 0x46dd40de
+  name: "frag"
+  type_id: 0x29b83e1a
+}
+member {
+  id: 0xd70f7af3
+  name: "frag_expire"
+  type_id: 0x0d554dfb
+  offset: 192
+}
+member {
+  id: 0x9fdfc4ad
+  name: "frag_off"
+  type_id: 0x7584e7da
+  offset: 48
+}
+member {
+  id: 0xe81e79bc
+  name: "frag_offset"
+  type_id: 0x4585663f
+  offset: 1760
+}
+member {
+  id: 0x77233d71
+  name: "frag_page"
+  type_id: 0x06835e9c
+  offset: 1792
+}
+member {
+  id: 0x3c33517f
+  name: "frag_size"
+  type_id: 0xc9082b19
+  offset: 224
+}
+member {
+  id: 0x74ebc136
+  name: "frag_threshold"
+  type_id: 0xc9082b19
+  offset: 1600
+}
+member {
+  id: 0x79f33795
+  name: "frag_users"
+  type_id: 0xfc0e1dbd
+  offset: 1856
+}
+member {
+  id: 0x9e3d7ecc
+  name: "fragment"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x9ac67cee
+  name: "fragment_size"
+  type_id: 0xc9082b19
+  offset: 256
+}
+member {
+  id: 0x9ae95ad1
+  name: "fragment_size"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x8f16c47d
+  name: "fragments"
+  type_id: 0x92233392
+  offset: 128
+}
+member {
+  id: 0x8f4de27e
+  name: "fragments"
+  type_id: 0xc9082b19
+  offset: 288
+}
+member {
+  id: 0x8f57226c
+  name: "fragments"
+  type_id: 0xd3c80119
+  offset: 64
+}
+member {
+  id: 0x8f62cd08
+  name: "fragments"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xdc7af762
+  name: "fragments_tail"
+  type_id: 0x054f691a
+  offset: 1024
+}
+member {
+  id: 0x5ed9c6c0
+  name: "frags_cache_name"
+  type_id: 0x3e10b518
+  offset: 320
+}
+member {
+  id: 0x90b83af0
+  name: "frags_cachep"
+  type_id: 0x2efd5036
+  offset: 256
+}
+member {
+  id: 0x1e5cf7b9
+  name: "frags_hdr"
+  type_id: 0x34544a3f
+}
+member {
+  id: 0x1e5cfacf
+  name: "frags_hdr"
+  type_id: 0x34544a3f
+  offset: 1088
+}
+member {
+  id: 0x1e5cff70
+  name: "frags_hdr"
+  type_id: 0x34544a3f
+  offset: 192
+}
+member {
+  id: 0x16107977
+  name: "frame"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0x1632d37c
+  name: "frame"
+  type_id: 0x4585663f
+  offset: 448
+}
+member {
+  id: 0x1632d636
+  name: "frame"
+  type_id: 0x4585663f
+  offset: 704
+}
+member {
+  id: 0x1632dad7
+  name: "frame"
+  type_id: 0x4585663f
+  offset: 1152
+}
+member {
+  id: 0x1632ddc9
+  name: "frame"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x166b61e8
+  name: "frame"
+  type_id: 0x1c3dbe5a
+  offset: 32
+}
+member {
+  id: 0x1691771b
+  name: "frame"
+  type_id: 0xe62ebf07
+  offset: 192
+}
+member {
+  id: 0x16937a0b
+  name: "frame"
+  type_id: 0xe42b6608
+}
+member {
+  id: 0x02bdbb97
+  name: "frame_bits"
+  type_id: 0x4585663f
+  offset: 1280
+}
+member {
+  id: 0xf3bb94f5
+  name: "frame_context_idx"
+  type_id: 0xb3e7bac9
+  offset: 1232
+}
+member {
+  id: 0xabd22e79
+  name: "frame_counter"
+  type_id: 0x0baa70a7
+  offset: 32
+}
+member {
+  id: 0xdb894731
+  name: "frame_dma"
+  type_id: 0xe02e14d6
+  offset: 512
+}
+member {
+  id: 0x1009c5dc
+  name: "frame_height_minus_1"
+  type_id: 0xe8034002
+  offset: 976
+}
+member {
+  id: 0x31db385f
+  name: "frame_index"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0x8cf2790e
+  name: "frame_index_bug"
+  type_id: 0x4585663f
+  offset: 5612
+  bitsize: 1
+}
+member {
+  id: 0x609d842f
+  name: "frame_len"
+  type_id: 0xc9082b19
+  offset: 1664
+}
+member {
+  id: 0x4c4363e9
+  name: "frame_length"
+  type_id: 0x4585663f
+  offset: 384
+}
+member {
+  id: 0x4ce0c9a2
+  name: "frame_length"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xabb0a664
+  name: "frame_limit"
+  type_id: 0x4585663f
+  offset: 736
+}
+member {
+  id: 0x36e3f38a
+  name: "frame_list"
+  type_id: 0xc9082b19
+  offset: 160
+}
+member {
+  id: 0xcfd4c74e
+  name: "frame_num"
+  type_id: 0xe8034002
+  offset: 4112
+}
+member {
+  id: 0xcfd4c7b2
+  name: "frame_num"
+  type_id: 0xe8034002
+  offset: 96
+}
+member {
+  id: 0x2c35055f
+  name: "frame_number"
+  type_id: 0x4585663f
+  offset: 640
+}
+member {
+  id: 0x9d0a5ff2
+  name: "frame_pending"
+  type_id: 0x914dbfdc
+  offset: 4
+  bitsize: 1
+}
+member {
+  id: 0x55a7860d
+  name: "frame_retries"
+  type_id: 0x29b77961
+  offset: 664
+}
+member {
+  id: 0x65fef3dc
+  name: "frame_sequence"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x65fefee7
+  name: "frame_sequence"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xcd725683
+  name: "frame_size"
+  type_id: 0xf435685e
+  offset: 256
+}
+member {
+  id: 0xcdc3e2ff
+  name: "frame_size"
+  type_id: 0x4585663f
+  offset: 288
+}
+member {
+  id: 0xb23a5082
+  name: "frame_sync"
+  type_id: 0xb3e7bac9
+  offset: 16
+}
+member {
+  id: 0xb2db563f
+  name: "frame_sync"
+  type_id: 0x52efb991
+}
+member {
+  id: 0xe4189665
+  name: "frame_sz"
+  type_id: 0xc9082b19
+  offset: 256
+}
+member {
+  id: 0xe418975c
+  name: "frame_sz"
+  type_id: 0xc9082b19
+  offset: 384
+}
+member {
+  id: 0x3c55a193
+  name: "frame_time"
+  type_id: 0x4585663f
+  offset: 2272
+}
+member {
+  id: 0x81b469b9
+  name: "frame_width_minus_1"
+  type_id: 0xe8034002
+  offset: 960
+}
+member {
+  id: 0xdc2cceb0
+  name: "framedur_ns"
+  type_id: 0x6720d32f
+  offset: 1056
+}
+member {
+  id: 0xafdeb24a
+  name: "frameno"
+  type_id: 0xc9082b19
+  offset: 10592
+}
+member {
+  id: 0xafdebc89
+  name: "frameno"
+  type_id: 0xc9082b19
+  offset: 832
+}
+member {
+  id: 0xa4701467
+  name: "frames"
+  type_id: 0xb3e7bac9
+  offset: 64
+}
+member {
+  id: 0x145e355d
+  name: "frames_sent"
+  type_id: 0xe8034002
+  offset: 1616
+}
+member {
+  id: 0xcb180a4e
+  name: "framing"
+  type_id: 0xb3e7bac9
+  offset: 32
+}
+member {
+  id: 0xd8453e48
+  name: "free"
+  type_id: 0x4585663f
+  offset: 320
+  bitsize: 1
+}
+member {
+  id: 0xfe834548
+  name: "free"
+  type_id: 0x214d9bc0
+}
+member {
+  id: 0xfe8e0cec
+  name: "free"
+  type_id: 0x2c00de85
+  offset: 64
+}
+member {
+  id: 0xfe8e52d9
+  name: "free"
+  type_id: 0x2c5eebb2
+  offset: 64
+}
+member {
+  id: 0xfe8ef0a5
+  name: "free"
+  type_id: 0x2cfc979f
+  offset: 64
+}
+member {
+  id: 0xfe91757e
+  name: "free"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0xfe9e40c2
+  name: "free"
+  type_id: 0x3c4fd6a2
+  offset: 320
+}
+member {
+  id: 0xfea9f5ea
+  name: "free"
+  type_id: 0x0bf3e543
+  offset: 1152
+}
+member {
+  id: 0xfeac0d11
+  name: "free"
+  type_id: 0x0e045007
+  offset: 384
+}
+member {
+  id: 0xfeac67ee
+  name: "free"
+  type_id: 0x0e66fff2
+  offset: 128
+}
+member {
+  id: 0xfeac8375
+  name: "free"
+  type_id: 0x0e8c611e
+  offset: 320
+}
+member {
+  id: 0xfeaca823
+  name: "free"
+  type_id: 0x0ea41150
+  offset: 64
+}
+member {
+  id: 0xfead3de1
+  name: "free"
+  type_id: 0x0f3dfb90
+  offset: 192
+}
+member {
+  id: 0xfead748d
+  name: "free"
+  type_id: 0x0f7dcc52
+  offset: 384
+}
+member {
+  id: 0xfead749e
+  name: "free"
+  type_id: 0x0f7ddf45
+  offset: 384
+}
+member {
+  id: 0xfeae4b02
+  name: "free"
+  type_id: 0x0c43d124
+}
+member {
+  id: 0xfeae5d12
+  name: "free"
+  type_id: 0x0c5f67dd
+  offset: 896
+}
+member {
+  id: 0xfeae6ede
+  name: "free"
+  type_id: 0x0c679fc6
+  offset: 384
+}
+member {
+  id: 0xfeae8a93
+  name: "free"
+  type_id: 0x0c86a1b1
+  offset: 64
+}
+member {
+  id: 0xfeaedb6a
+  name: "free"
+  type_id: 0x0cd75860
+  offset: 64
+}
+member {
+  id: 0xfeaf38f1
+  name: "free"
+  type_id: 0x0d3022ff
+}
+member {
+  id: 0xfeaf395a
+  name: "free"
+  type_id: 0x0d364e53
+  offset: 320
+}
+member {
+  id: 0xfeafc015
+  name: "free"
+  type_id: 0x0dcbeae6
+  offset: 1664
+}
+member {
+  id: 0xfbc061e4
+  name: "free_area"
+  type_id: 0xcc8611b3
+  offset: 1536
+}
+member {
+  id: 0x67b3989c
+  name: "free_async_space"
+  type_id: 0xf435685e
+  offset: 832
+}
+member {
+  id: 0x7eeec275
+  name: "free_aux"
+  type_id: 0x0f3dfb90
+  offset: 1920
+}
+member {
+  id: 0x7eeeca13
+  name: "free_aux"
+  type_id: 0x0f3dfb90
+  offset: 1600
+}
+member {
+  id: 0xc583ca0b
+  name: "free_buffers"
+  type_id: 0xeb923a9b
+  offset: 704
+}
+member {
+  id: 0xf5d2401f
+  name: "free_cached_objects"
+  type_id: 0x213211e8
+  offset: 1536
+}
+member {
+  id: 0xddcf27cf
+  name: "free_cb"
+  type_id: 0x0fa358e7
+  offset: 192
+}
+member {
+  id: 0x5afe9f54
+  name: "free_clusters"
+  type_id: 0x696e069f
+  offset: 768
+}
+member {
+  id: 0x3e10e356
+  name: "free_context"
+  type_id: 0x23826b7b
+  offset: 640
+}
+member {
+  id: 0xd358c71d
+  name: "free_cpus"
+  type_id: 0x99caa0ae
+  offset: 64
+}
+member {
+  id: 0xcd8f3d51
+  name: "free_dev"
+  type_id: 0x0cecd312
+  offset: 1792
+}
+member {
+  id: 0x7f910ba8
+  name: "free_disk"
+  type_id: 0x0ca53ed1
+  offset: 704
+}
+member {
+  id: 0x2d72891c
+  name: "free_event"
+  type_id: 0x0fe9ffda
+  offset: 256
+}
+member {
+  id: 0x2a649941
+  name: "free_factor"
+  type_id: 0xb0312d5a
+  offset: 128
+}
+member {
+  id: 0x83445041
+  name: "free_file_info"
+  type_id: 0x2ff9c73d
+  offset: 192
+}
+member {
+  id: 0xb7ed584c
+  name: "free_folio"
+  type_id: 0x0ca120c5
+  offset: 640
+}
+member {
+  id: 0x3e677cf1
+  name: "free_func"
+  type_id: 0x0cb02071
+  offset: 704
+}
+member {
+  id: 0xe66f3f36
+  name: "free_func_inst"
+  type_id: 0x0fb79469
+  offset: 1408
+}
+member {
+  id: 0x7ff4abec
+  name: "free_group_priv"
+  type_id: 0x0fc0d198
+  offset: 128
+}
+member {
+  id: 0x121ab4e2
+  name: "free_heads"
+  type_id: 0xc6c4215b
+  offset: 1856
+}
+member {
+  id: 0xb72778bf
+  name: "free_heads_cnt"
+  type_id: 0xc9082b19
+  offset: 1536
+}
+member {
+  id: 0x6d19de42
+  name: "free_ibi"
+  type_id: 0x0e504c4f
+  offset: 832
+}
+member {
+  id: 0x3e423a64
+  name: "free_index"
+  type_id: 0xc9082b19
+  offset: 160
+}
+member {
+  id: 0x6f43c6d6
+  name: "free_inode"
+  type_id: 0x0f0e74c9
+  offset: 128
+}
+member {
+  id: 0x6f43cf14
+  name: "free_inode"
+  type_id: 0x0f0e74c9
+}
+member {
+  id: 0xe00dc187
+  name: "free_list"
+  type_id: 0x955353ee
+}
+member {
+  id: 0xe029edcd
+  name: "free_list"
+  type_id: 0xb17f19c3
+}
+member {
+  id: 0xe04707e6
+  name: "free_list"
+  type_id: 0xdf9f948b
+  offset: 896
+}
+member {
+  id: 0xe04b527b
+  name: "free_list"
+  type_id: 0xd3c80119
+  offset: 768
+}
+member {
+  id: 0xe04b5a7e
+  name: "free_list"
+  type_id: 0xd3c80119
+  offset: 256
+}
+member {
+  id: 0xe08d31d4
+  name: "free_list"
+  type_id: 0x15a30023
+}
+member {
+  id: 0xe0abacaa
+  name: "free_list"
+  type_id: 0x33390909
+  offset: 448
+}
+member {
+  id: 0xe0b9dbb6
+  name: "free_list"
+  type_id: 0x214d9bc0
+  offset: 2496
+}
+member {
+  id: 0xba8b2af7
+  name: "free_list_cnt"
+  type_id: 0xc9082b19
+  offset: 1472
+}
+member {
+  id: 0xea016a3d
+  name: "free_list_node"
+  type_id: 0xd3c80119
+  offset: 704
+}
+member {
+  id: 0x46c2ba3a
+  name: "free_lower_chunks"
+  type_id: 0x6720d32f
+  offset: 16864
+}
+member {
+  id: 0x80d2057e
+  name: "free_mark"
+  type_id: 0x0c74ddbe
+  offset: 320
+}
+member {
+  id: 0x7dca883d
+  name: "free_node"
+  type_id: 0x214d9bc0
+  offset: 15232
+}
+member {
+  id: 0x8200ecca
+  name: "free_noncontiguous"
+  type_id: 0x0e6750fa
+  offset: 384
+}
+member {
+  id: 0xfc81ed63
+  name: "free_notifier"
+  type_id: 0x0c0e84bd
+  offset: 576
+}
+member {
+  id: 0x79d71685
+  name: "free_on_exit"
+  type_id: 0x6d7f5ff6
+  offset: 1024
+}
+member {
+  id: 0xcfa7c994
+  name: "free_page"
+  type_id: 0x33658188
+  offset: 256
+}
+member {
+  id: 0xc53637a2
+  name: "free_pages"
+  type_id: 0x0e6713fe
+  offset: 256
+}
+member {
+  id: 0xef540e05
+  name: "free_pages_exact"
+  type_id: 0x0fc9cef8
+  offset: 128
+}
+member {
+  id: 0x54942a8c
+  name: "free_pfn"
+  type_id: 0x33756485
+  offset: 320
+}
+member {
+  id: 0xeab8c633
+  name: "free_preparse"
+  type_id: 0x0e68c604
+  offset: 320
+}
+member {
+  id: 0x8cafaf6f
+  name: "free_request"
+  type_id: 0x0e7bdc3d
+  offset: 256
+}
+member {
+  id: 0x796fba13
+  name: "free_rwork"
+  type_id: 0xd15fd98f
+  offset: 832
+}
+member {
+  id: 0x1e4ad0bd
+  name: "free_slots"
+  type_id: 0xd3c80119
+  offset: 192
+}
+member {
+  id: 0x648f0bcc
+  name: "free_states"
+  type_id: 0x0d5ea64d
+  offset: 11456
+}
+member {
+  id: 0xebf100a8
+  name: "free_storage_on_release"
+  type_id: 0x4585663f
+  offset: 3265
+  bitsize: 1
+}
+member {
+  id: 0xcd27ac18
+  name: "free_streams"
+  type_id: 0x2faa1246
+  offset: 1920
+}
+member {
+  id: 0x673d40d0
+  name: "free_streams_command"
+  type_id: 0x0e1f07df
+  offset: 448
+}
+member {
+  id: 0x5584ef29
+  name: "free_upper_chunks"
+  type_id: 0x6720d32f
+  offset: 16832
+}
+member {
+  id: 0x8a67a76f
+  name: "free_work"
+  type_id: 0x1f3c8679
+}
+member {
+  id: 0x8a67a9e5
+  name: "free_work"
+  type_id: 0x1f3c8679
+  offset: 17152
+}
+member {
+  id: 0x8a7b13bd
+  name: "free_work"
+  type_id: 0x038cb58c
+  offset: 64
+}
+member {
+  id: 0xedafcd8e
+  name: "freehigh"
+  type_id: 0x21d43a7b
+  offset: 768
+}
+member {
+  id: 0x05ba43e9
+  name: "freeing_mark"
+  type_id: 0x0c63b27b
+  offset: 192
+}
+member {
+  id: 0xf00079a7
+  name: "freelist"
+  type_id: 0x18bd6530
+  offset: 256
+}
+member {
+  id: 0xf0147b09
+  name: "freelist"
+  type_id: 0x0cbf60eb
+}
+member {
+  id: 0xf036a316
+  name: "freelist"
+  type_id: 0x2e677f39
+}
+member {
+  id: 0xf0cb04a1
+  name: "freelist"
+  type_id: 0xd3c80119
+  offset: 192
+}
+member {
+  id: 0xf0cb05aa
+  name: "freelist"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0xf0f490c3
+  name: "freelist"
+  type_id: 0xec52d7a4
+  offset: 1280
+}
+member {
+  id: 0xb0514dc8
+  name: "freepages"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0xb88e078f
+  name: "freepages_count"
+  type_id: 0xedf277ba
+  offset: 2496
+}
+member {
+  id: 0x3b1114c4
+  name: "freepages_delay_total"
+  type_id: 0xedf277ba
+  offset: 2560
+}
+member {
+  id: 0x6ca0b878
+  name: "freeram"
+  type_id: 0x21d43a7b
+  offset: 320
+}
+member {
+  id: 0xdbc7ce3e
+  name: "freeswap"
+  type_id: 0x21d43a7b
+  offset: 576
+}
+member {
+  id: 0x2c8c74b5
+  name: "freeze"
+  type_id: 0x6d7f5ff6
+}
+member {
+  id: 0x2cccdecf
+  name: "freeze"
+  type_id: 0x2dd58efa
+  offset: 256
+}
+member {
+  id: 0x2cce6f0b
+  name: "freeze"
+  type_id: 0x2f63630f
+  offset: 2048
+}
+member {
+  id: 0x2cceb26f
+  name: "freeze"
+  type_id: 0x2fbd64da
+  offset: 64
+}
+member {
+  id: 0xe14102c7
+  name: "freeze_fs"
+  type_id: 0x2f9ee7ee
+  offset: 640
+}
+member {
+  id: 0x2e51d740
+  name: "freeze_late"
+  type_id: 0x2dd58efa
+  offset: 640
+}
+member {
+  id: 0x5f4d7597
+  name: "freeze_mutex"
+  type_id: 0xa7c362b0
+  offset: 1536
+}
+member {
+  id: 0xee8a76bf
+  name: "freeze_noirq"
+  type_id: 0x2dd58efa
+  offset: 1024
+}
+member {
+  id: 0xebc21405
+  name: "freeze_super"
+  type_id: 0x2f9ee7ee
+  offset: 576
+}
+member {
+  id: 0x704a84bb
+  name: "freeze_wait"
+  type_id: 0x03913382
+  offset: 960
+}
+member {
+  id: 0x144e1540
+  name: "freezer"
+  type_id: 0x8eaee9d1
+  offset: 13280
+}
+member {
+  id: 0xd5e4618a
+  name: "freq"
+  type_id: 0xedf277ba
+  offset: 330
+  bitsize: 1
+}
+member {
+  id: 0xef283ef2
+  name: "freq"
+  type_id: 0x8e607093
+}
+member {
+  id: 0xef2a66d3
+  name: "freq"
+  type_id: 0x8c385115
+}
+member {
+  id: 0xef40703d
+  name: "freq"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xef8f0c4e
+  name: "freq"
+  type_id: 0x295c7202
+  offset: 16
+}
+member {
+  id: 0xef9f104e
+  name: "freq"
+  type_id: 0x39470e64
+  offset: 128
+}
+member {
+  id: 0xefd7d099
+  name: "freq"
+  type_id: 0x71886297
+  offset: 640
+}
+member {
+  id: 0xe2fe06f5
+  name: "freq1_offset"
+  type_id: 0x914dbfdc
+  offset: 224
+}
+member {
+  id: 0x56dce16b
+  name: "freq_count_stamp"
+  type_id: 0x92233392
+  offset: 1472
+}
+member {
+  id: 0xa43e8339
+  name: "freq_offset"
+  type_id: 0x914dbfdc
+  offset: 64
+}
+member {
+  id: 0x4fa48466
+  name: "freq_range"
+  type_id: 0x4fb02048
+}
+member {
+  id: 0x10ac6500
+  name: "freq_ranges"
+  type_id: 0x31926949
+  offset: 64
+}
+member {
+  id: 0x8da1c27d
+  name: "freq_table"
+  type_id: 0x1bf16028
+  offset: 320
+}
+member {
+  id: 0x8db9497d
+  name: "freq_table"
+  type_id: 0x0374654c
+  offset: 128
+}
+member {
+  id: 0x8db94f8f
+  name: "freq_table"
+  type_id: 0x0374654c
+  offset: 3200
+}
+member {
+  id: 0x8dbc7a57
+  name: "freq_table"
+  type_id: 0x064d6086
+  offset: 9280
+}
+member {
+  id: 0x8dbc7ecd
+  name: "freq_table"
+  type_id: 0x064d6086
+  offset: 448
+}
+member {
+  id: 0xd8e4896d
+  name: "freq_table_sorted"
+  type_id: 0xe99880e8
+  offset: 3264
+}
+member {
+  id: 0x50a14007
+  name: "freq_time_stamp"
+  type_id: 0x92233392
+  offset: 1408
+}
+member {
+  id: 0x4cc73741
+  name: "freqm"
+  type_id: 0x4585663f
+  offset: 44896
+}
+member {
+  id: 0xe35e9914
+  name: "freqmax"
+  type_id: 0x4585663f
+  offset: 44960
+}
+member {
+  id: 0x8d8096c1
+  name: "freqn"
+  type_id: 0x4585663f
+  offset: 44864
+}
+member {
+  id: 0x9af62beb
+  name: "freqshift"
+  type_id: 0x6720d32f
+  offset: 44928
+}
+member {
+  id: 0xe5245057
+  name: "frequency"
+  type_id: 0x33756485
+}
+member {
+  id: 0xe552a4b4
+  name: "frequency"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xe5f10f6d
+  name: "frequency"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xa84f24a6
+  name: "friendly_name"
+  type_id: 0x3e10b518
+}
+member {
+  id: 0x0786113e
+  name: "fro_net"
+  type_id: 0x0ca27481
+  offset: 1216
+}
+member {
+  id: 0xff5a7186
+  name: "from"
+  type_id: 0x0483e6f8
+}
+member {
+  id: 0xff7ac5f9
+  name: "from"
+  type_id: 0x24373219
+  offset: 256
+}
+member {
+  id: 0xff7d7857
+  name: "from"
+  type_id: 0x238091f9
+  offset: 896
+}
+member {
+  id: 0xffaaceca
+  name: "from"
+  type_id: 0xf435685e
+  offset: 128
+}
+member {
+  id: 0xffb30017
+  name: "from"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0xecd173ca
+  name: "from_cnt"
+  type_id: 0x295c7202
+  offset: 16
+}
+member {
+  id: 0x9e06642f
+  name: "from_ingress"
+  type_id: 0xb3e7bac9
+  offset: 30
+  bitsize: 1
+}
+member {
+  id: 0xb90a83b8
+  name: "from_nlattr"
+  type_id: 0x2ff3684e
+  offset: 896
+}
+member {
+  id: 0xaa4cc195
+  name: "from_other_dev"
+  type_id: 0x6d7f5ff6
+  offset: 320
+}
+member {
+  id: 0x7f58d505
+  name: "from_parent"
+  type_id: 0x02a8d0c9
+  offset: 384
+}
+member {
+  id: 0x49762360
+  name: "from_pid"
+  type_id: 0x49b889e7
+  offset: 320
+}
+member {
+  id: 0x68f8c0c9
+  name: "from_tid"
+  type_id: 0x49b889e7
+  offset: 352
+}
+member {
+  id: 0xcad7e6ac
+  name: "from_user"
+  type_id: 0x6d7f5ff6
+  offset: 168
+}
+member {
+  id: 0xe26c71ab
+  name: "front_pad"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x02c74d79
+  name: "frontend"
+  type_id: 0x37944814
+  offset: 256
+}
+member {
+  id: 0x25d9c05f
+  name: "frozen"
+  type_id: 0x4585663f
+  offset: 12102
+  bitsize: 1
+}
+member {
+  id: 0x25d9cce5
+  name: "frozen"
+  type_id: 0x4585663f
+  offset: 31
+  bitsize: 1
+}
+member {
+  id: 0xb8c677f5
+  name: "frozen"
+  type_id: 0x6d7f5ff6
+  offset: 2088
+}
+member {
+  id: 0xb8c67f5c
+  name: "frozen"
+  type_id: 0x6d7f5ff6
+  offset: 384
+}
+member {
+  id: 0xb8cc2142
+  name: "frozen"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x696cf202
+  name: "frozen_offsets"
+  type_id: 0x6d7f5ff6
+  offset: 640
+}
+member {
+  id: 0x796c0b23
+  name: "frs_sourcing_vbus"
+  type_id: 0x0d20d38c
+  offset: 1152
+}
+member {
+  id: 0x796ef0a9
+  name: "frs_sourcing_vbus"
+  type_id: 0x0fd41724
+  offset: 384
+}
+member {
+  id: 0x9442b15a
+  name: "fs"
+  type_id: 0x9f206b88
+  offset: 128
+}
+member {
+  id: 0x94eef3e2
+  name: "fs"
+  type_id: 0x336955b0
+  offset: 17280
+}
+member {
+  id: 0x94eef864
+  name: "fs"
+  type_id: 0x336955b0
+  offset: 128
+}
+member {
+  id: 0x778c7e1c
+  name: "fs_descriptors"
+  type_id: 0x0b59f310
+  offset: 128
+}
+member {
+  id: 0x2ec9b506
+  name: "fs_flags"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x4ef12ece
+  name: "fs_private"
+  type_id: 0x18bd6530
+  offset: 512
+}
+member {
+  id: 0x8d9c85a5
+  name: "fs_supers"
+  type_id: 0x5e8dc7f4
+  offset: 512
+}
+member {
+  id: 0xaa144150
+  name: "fs_type"
+  type_id: 0x32ec08f2
+  offset: 448
+}
+member {
+  id: 0x62129df4
+  name: "fsflags"
+  type_id: 0x4585663f
+  offset: 960
+}
+member {
+  id: 0x205bf412
+  name: "fsg"
+  type_id: 0x056a9b42
+  offset: 128
+}
+member {
+  id: 0x866e2005
+  name: "fsg_num_buffers"
+  type_id: 0x4585663f
+  offset: 6496
+}
+member {
+  id: 0x866e2cb9
+  name: "fsg_num_buffers"
+  type_id: 0x4585663f
+  offset: 1536
+}
+member {
+  id: 0x3a3817df
+  name: "fsg_wait"
+  type_id: 0x03913382
+  offset: 384
+}
+member {
+  id: 0xd81f0ab1
+  name: "fsgid"
+  type_id: 0xb0ddb211
+  offset: 6208
+}
+member {
+  id: 0xd81f0d18
+  name: "fsgid"
+  type_id: 0xb0ddb211
+  offset: 256
+}
+member {
+  id: 0x27cff838
+  name: "fsid"
+  type_id: 0x891aa0dd
+  offset: 64
+}
+member {
+  id: 0x992e67b4
+  name: "fsn_fa"
+  type_id: 0x25e44921
+  offset: 1216
+}
+member {
+  id: 0x2d3d047d
+  name: "fstn"
+  type_id: 0x0242c054
+}
+member {
+  id: 0xc58f7cac
+  name: "fstn_dma"
+  type_id: 0xe02e14d6
+  offset: 64
+}
+member {
+  id: 0x7e42b536
+  name: "fstn_next"
+  type_id: 0x2b015d45
+  offset: 128
+}
+member {
+  id: 0x51d40905
+  name: "fstype"
+  type_id: 0x0483e6f8
+}
+member {
+  id: 0xae1bb7ee
+  name: "fsuid"
+  type_id: 0xe90b32b7
+  offset: 6080
+}
+member {
+  id: 0xae1bb866
+  name: "fsuid"
+  type_id: 0xe90b32b7
+  offset: 224
+}
+member {
+  id: 0x035676e6
+  name: "fsx_cowextsize"
+  type_id: 0xc9082b19
+  offset: 160
+}
+member {
+  id: 0xbc3ba823
+  name: "fsx_extsize"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x4f88d78d
+  name: "fsx_nextents"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0x78ca3ce2
+  name: "fsx_projid"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0x3f2cf778
+  name: "fsx_valid"
+  type_id: 0x6d7f5ff6
+  offset: 193
+  bitsize: 1
+}
+member {
+  id: 0x18d64a30
+  name: "fsx_xflags"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x1a43361a
+  name: "fsync"
+  type_id: 0x2c5b1d58
+  offset: 1088
+}
+member {
+  id: 0x01aea3e5
+  name: "fsync_flags"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xc324b680
+  name: "fsync_provider"
+  type_id: 0xb3e7bac9
+  offset: 128
+}
+member {
+  id: 0x11396c0b
+  name: "fsync_rate"
+  type_id: 0x0baa70a7
+  offset: 224
+}
+member {
+  id: 0xa761a3f4
+  name: "ftm"
+  type_id: 0x0fe17a60
+  offset: 64
+}
+member {
+  id: 0xf895187e
+  name: "ftrace_managed"
+  type_id: 0x6d7f5ff6
+  offset: 320
+}
+member {
+  id: 0xf9f81129
+  name: "ftrace_trampolines"
+  type_id: 0x1b3612f9
+  offset: 192
+}
+member {
+  id: 0xdb4619dd
+  name: "full"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0xdb782239
+  name: "full"
+  type_id: 0xd3c80119
+  offset: 384
+}
+member {
+  id: 0xdbccc5a8
+  name: "full"
+  type_id: 0x6720d32f
+  offset: 33024
+}
+member {
+  id: 0xc8ce2e98
+  name: "full64"
+  type_id: 0x92233392
+}
+member {
+  id: 0x9034a01c
+  name: "full_duplex"
+  type_id: 0x4585663f
+  offset: 128
+  bitsize: 1
+}
+member {
+  id: 0x9c1851f6
+  name: "full_fds_bits"
+  type_id: 0x064d6086
+  offset: 256
+}
+member {
+  id: 0x7602aa7c
+  name: "full_fds_bits_init"
+  type_id: 0xb914bfab
+  offset: 1216
+}
+member {
+  id: 0x42a13f51
+  name: "full_name"
+  type_id: 0x3e10b518
+  offset: 128
+}
+member {
+  id: 0xeebefb67
+  name: "full_trig"
+  type_id: 0x0e6ba6f7
+  offset: 9728
+}
+member {
+  id: 0x4ec28876
+  name: "full_trig_name"
+  type_id: 0x0483e6f8
+  offset: 9792
+}
+member {
+  id: 0x93c958b7
+  name: "full_update"
+  type_id: 0x6d7f5ff6
+  offset: 256
+}
+member {
+  id: 0x7f337099
+  name: "full_waiters"
+  type_id: 0x03913382
+  offset: 448
+}
+member {
+  id: 0xabba6f98
+  name: "full_waiters_pending"
+  type_id: 0x6d7f5ff6
+  offset: 712
+}
+member {
+  id: 0xf667d80f
+  name: "fullness_list"
+  type_id: 0xb8bf135c
+  offset: 64
+}
+member {
+  id: 0xfeb50ea0
+  name: "fullspeed"
+  type_id: 0x4585663f
+  offset: 714
+  bitsize: 1
+}
+member {
+  id: 0xf9bad50a
+  name: "fully_routed"
+  type_id: 0x4585663f
+  offset: 6306
+  bitsize: 1
+}
+member {
+  id: 0x210246f1
+  name: "func"
+  type_id: 0x0d93a6e4
+  offset: 64
+}
+member {
+  id: 0x210250cd
+  name: "func"
+  type_id: 0x0d817b8b
+}
+member {
+  id: 0x21032235
+  name: "func"
+  type_id: 0x0cfa41bd
+  offset: 128
+}
+member {
+  id: 0x21032e78
+  name: "func"
+  type_id: 0x0cf80951
+  offset: 320
+}
+member {
+  id: 0x21036894
+  name: "func"
+  type_id: 0x0cbdc3be
+  offset: 64
+}
+member {
+  id: 0x21038353
+  name: "func"
+  type_id: 0x0c560434
+  offset: 64
+}
+member {
+  id: 0x2103ec9b
+  name: "func"
+  type_id: 0x0c3d2d88
+}
+member {
+  id: 0x2109a3d5
+  name: "func"
+  type_id: 0x06709029
+  offset: 1408
+}
+member {
+  id: 0x21165e66
+  name: "func"
+  type_id: 0x198b3170
+  offset: 64
+}
+member {
+  id: 0x21176cd3
+  name: "func"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0x21190ed2
+  name: "func"
+  type_id: 0x16df644d
+}
+member {
+  id: 0x211d8c18
+  name: "func"
+  type_id: 0x12546c43
+  offset: 128
+}
+member {
+  id: 0x21202e0b
+  name: "func"
+  type_id: 0x2fffbd5a
+}
+member {
+  id: 0x212053a5
+  name: "func"
+  type_id: 0x2f802e03
+  offset: 704
+}
+member {
+  id: 0x21224f43
+  name: "func"
+  type_id: 0x2d9737d2
+  offset: 128
+}
+member {
+  id: 0x2123e92d
+  name: "func"
+  type_id: 0x2c389b05
+}
+member {
+  id: 0x21351e07
+  name: "func"
+  type_id: 0x3ac7788d
+  offset: 192
+}
+member {
+  id: 0x213ca033
+  name: "func"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x2146561f
+  name: "func"
+  type_id: 0x498e6bfd
+  offset: 128
+}
+member {
+  id: 0x214a5a0f
+  name: "func"
+  type_id: 0x4585663f
+  offset: 544
+}
+member {
+  id: 0x216be8e8
+  name: "func"
+  type_id: 0x6439f5ee
+  offset: 256
+}
+member {
+  id: 0x217017b6
+  name: "func"
+  type_id: 0x7fcfc28a
+  offset: 128
+}
+member {
+  id: 0x21a4123c
+  name: "func"
+  type_id: 0xabc38a13
+}
+member {
+  id: 0x21a4f665
+  name: "func"
+  type_id: 0xab2332a3
+  offset: 64
+}
+member {
+  id: 0x21a630e3
+  name: "func"
+  type_id: 0xa9e8970d
+  offset: 128
+}
+member {
+  id: 0x21adc830
+  name: "func"
+  type_id: 0xa2114faf
+  offset: 192
+}
+member {
+  id: 0xdf401239
+  name: "func_cnt"
+  type_id: 0xc9082b19
+  offset: 288
+}
+member {
+  id: 0x4c7ab9e9
+  name: "func_conf_select"
+  type_id: 0x3af3fd37
+  offset: 192
+}
+member {
+  id: 0x74d098cf
+  name: "func_id"
+  type_id: 0xc9082b19
+  offset: 224
+}
+member {
+  id: 0xa2c336ee
+  name: "func_idx"
+  type_id: 0xc9082b19
+  offset: 320
+}
+member {
+  id: 0x6c504e57
+  name: "func_info"
+  type_id: 0x0f7a6de4
+  offset: 7872
+}
+member {
+  id: 0x6cb2c6fa
+  name: "func_info"
+  type_id: 0xedf277ba
+  offset: 640
+}
+member {
+  id: 0x61b1c2fd
+  name: "func_info_aux"
+  type_id: 0x00d1ba62
+  offset: 7936
+}
+member {
+  id: 0xf7d1dbee
+  name: "func_info_cnt"
+  type_id: 0xe62ebf07
+  offset: 704
+}
+member {
+  id: 0xf7fef221
+  name: "func_info_cnt"
+  type_id: 0xc9082b19
+  offset: 8128
+}
+member {
+  id: 0x2c820705
+  name: "func_info_rec_size"
+  type_id: 0xe62ebf07
+  offset: 608
+}
+member {
+  id: 0xa73e8d2d
+  name: "func_list"
+  type_id: 0xd3c80119
+  offset: 64
+}
+member {
+  id: 0x87de0e0c
+  name: "func_model"
+  type_id: 0xdff52411
+}
+member {
+  id: 0x23c05514
+  name: "func_proto_unreliable"
+  type_id: 0x6d7f5ff6
+  offset: 1240
+}
+member {
+  id: 0x88373043
+  name: "func_suspend"
+  type_id: 0x2fdf50ac
+  offset: 1344
+}
+member {
+  id: 0x360c36ba
+  name: "funcs"
+  type_id: 0x2c2f5a48
+  offset: 128
+}
+member {
+  id: 0x360fe90c
+  name: "funcs"
+  type_id: 0x2ffee963
+  offset: 320
+}
+member {
+  id: 0x36119a1b
+  name: "funcs"
+  type_id: 0x318983a1
+  offset: 832
+}
+member {
+  id: 0x3612560b
+  name: "funcs"
+  type_id: 0x324a2d7b
+  offset: 24896
+}
+member {
+  id: 0x36145c63
+  name: "funcs"
+  type_id: 0x344a8f68
+  offset: 3392
+}
+member {
+  id: 0x3617ff28
+  name: "funcs"
+  type_id: 0x37e7a473
+  offset: 768
+}
+member {
+  id: 0x36184afd
+  name: "funcs"
+  type_id: 0x38531dd4
+  offset: 128
+}
+member {
+  id: 0x3618b5a2
+  name: "funcs"
+  type_id: 0x38aab014
+  offset: 3200
+}
+member {
+  id: 0x361a8c17
+  name: "funcs"
+  type_id: 0x3a901e7f
+  offset: 4096
+}
+member {
+  id: 0x361b3f73
+  name: "funcs"
+  type_id: 0x3b2ef32b
+  offset: 2560
+}
+member {
+  id: 0x361b83e4
+  name: "funcs"
+  type_id: 0x3b94d9f5
+  offset: 1024
+}
+member {
+  id: 0x361b8d9e
+  name: "funcs"
+  type_id: 0x3b9d17e6
+  offset: 256
+}
+member {
+  id: 0x361daecf
+  name: "funcs"
+  type_id: 0x3db894b0
+  offset: 640
+}
+member {
+  id: 0x361ddc01
+  name: "funcs"
+  type_id: 0x3dc59b1f
+  offset: 1600
+}
+member {
+  id: 0x361e00a9
+  name: "funcs"
+  type_id: 0x3e1a0886
+  offset: 1344
+}
+member {
+  id: 0x361e61c6
+  name: "funcs"
+  type_id: 0x3e7afc58
+  offset: 512
+}
+member {
+  id: 0xab42dc85
+  name: "function"
+  type_id: 0x295c7202
+  offset: 40
+}
+member {
+  id: 0xab5596f1
+  name: "function"
+  type_id: 0x3e10b518
+  offset: 64
+}
+member {
+  id: 0xab66df21
+  name: "function"
+  type_id: 0x0d554dfb
+  offset: 192
+}
+member {
+  id: 0xab6ba475
+  name: "function"
+  type_id: 0x00256a1d
+  offset: 832
+}
+member {
+  id: 0xab6f0143
+  name: "function"
+  type_id: 0x0483e6f8
+}
+member {
+  id: 0xab75b859
+  name: "function"
+  type_id: 0x1e3d3b89
+  offset: 320
+}
+member {
+  id: 0xaba28ed7
+  name: "function"
+  type_id: 0xc9082b19
+  offset: 352
+}
+member {
+  id: 0xabc0412f
+  name: "function"
+  type_id: 0xabc38a13
+}
+member {
+  id: 0xad24c471
+  name: "function_id"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x364a66b1
+  name: "function_num_map"
+  type_id: 0x33756485
+  offset: 8192
+}
+member {
+  id: 0x7daa945a
+  name: "functionality"
+  type_id: 0x19a7a6e2
+  offset: 256
+}
+member {
+  id: 0x56c788cc
+  name: "functions"
+  type_id: 0xd3c80119
+  offset: 576
+}
+member {
+  id: 0xd7c1de34
+  name: "futex"
+  type_id: 0x0d2844e8
+}
+member {
+  id: 0x9f472cbf
+  name: "futex_exit_mutex"
+  type_id: 0xa7c362b0
+  offset: 21184
+}
+member {
+  id: 0xda866af9
+  name: "futex_offset"
+  type_id: 0xfc0e1dbd
+  offset: 64
+}
+member {
+  id: 0xdae5110b
+  name: "futex_offset"
+  type_id: 0x9f7c35c8
+  offset: 32
+}
+member {
+  id: 0x66b11fb9
+  name: "futex_state"
+  type_id: 0x4585663f
+  offset: 21568
+}
+member {
+  id: 0x5e8abd79
+  name: "future_tbl"
+  type_id: 0x38df6aa0
+  offset: 384
+}
+member {
+  id: 0x76ffbb77
+  name: "fuzz"
+  type_id: 0x0faae5b1
+  offset: 96
+}
+member {
+  id: 0x51f9c40d
+  name: "fw_download"
+  type_id: 0x2d816bb9
+  offset: 704
+}
+member {
+  id: 0x8ec1b317
+  name: "fw_download_in_progress"
+  type_id: 0x6d7f5ff6
+  offset: 7496
+}
+member {
+  id: 0xed3cf7e2
+  name: "fw_info"
+  type_id: 0x3e10b518
+  offset: 31552
+}
+member {
+  id: 0x6f04a1ea
+  name: "fw_name"
+  type_id: 0x3e10b518
+  offset: 64
+}
+member {
+  id: 0x6f04acc9
+  name: "fw_name"
+  type_id: 0x3e10b518
+  offset: 128
+}
+member {
+  id: 0x0ec44d6d
+  name: "fw_ops"
+  type_id: 0x3b37e5fa
+  offset: 640
+}
+member {
+  id: 0x0ec73713
+  name: "fw_ops"
+  type_id: 0x3845c003
+  offset: 9152
+}
+member {
+  id: 0xa40db181
+  name: "fw_translate_cs"
+  type_id: 0x2db85d20
+  offset: 12160
+}
+member {
+  id: 0xfb37b87b
+  name: "fw_version"
+  type_id: 0x5adf57ae
+  offset: 1672
+}
+member {
+  id: 0xfb37bedf
+  name: "fw_version"
+  type_id: 0x5adf57ae
+  offset: 544
+}
+member {
+  id: 0x2d7f7754
+  name: "fwd_cnt"
+  type_id: 0x0baa70a7
+  offset: 320
+}
+member {
+  id: 0x54642065
+  name: "fwmark_reflect"
+  type_id: 0x295c7202
+  offset: 1040
+}
+member {
+  id: 0x6e4d805e
+  name: "fwnode"
+  type_id: 0x0490bb4a
+}
+member {
+  id: 0x6e4d8161
+  name: "fwnode"
+  type_id: 0x0490bb4a
+  offset: 6016
+}
+member {
+  id: 0x6e4d81cc
+  name: "fwnode"
+  type_id: 0x0490bb4a
+  offset: 384
+}
+member {
+  id: 0x6e4d84bf
+  name: "fwnode"
+  type_id: 0x0490bb4a
+  offset: 64
+}
+member {
+  id: 0x6e4d8799
+  name: "fwnode"
+  type_id: 0x0490bb4a
+  offset: 320
+}
+member {
+  id: 0x6e4d87dc
+  name: "fwnode"
+  type_id: 0x0490bb4a
+  offset: 2048
+}
+member {
+  id: 0x6e4d8897
+  name: "fwnode"
+  type_id: 0x0490bb4a
+  offset: 192
+}
+member {
+  id: 0x6e711a27
+  name: "fwnode"
+  type_id: 0x38020bb6
+  offset: 192
+}
+member {
+  id: 0x94fd0d5e
+  name: "fwnode_xlate"
+  type_id: 0x2c4d6bfe
+  offset: 960
+}
+member {
+  id: 0xcb03eff2
+  name: "fwrev"
+  type_id: 0xee699492
+  offset: 960
+}
+member {
+  id: 0xcbb00db4
+  name: "fwrev"
+  type_id: 0x5d8155a5
+  offset: 200
+}
+member {
+  id: 0xc6476ee8
+  name: "fwspec"
+  type_id: 0x2ed09696
+}
+member {
+  id: 0xc67a5e74
+  name: "fwspec"
+  type_id: 0x13eb12a8
+  offset: 512
+}
+member {
+  id: 0x24b0617a
+  name: "g_dv_timings"
+  type_id: 0x2dd9a3d6
+  offset: 960
+}
+member {
+  id: 0x992b5487
+  name: "g_frame_interval"
+  type_id: 0x2de72ceb
+  offset: 768
+}
+member {
+  id: 0x523113ef
+  name: "g_frequency"
+  type_id: 0x2df9d3a1
+  offset: 192
+}
+member {
+  id: 0xcc07ba05
+  name: "g_input_status"
+  type_id: 0x2dd4892b
+  offset: 576
+}
+member {
+  id: 0x82f5cd5a
+  name: "g_list"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0xb88348e7
+  name: "g_modulator"
+  type_id: 0x2dd11a2c
+  offset: 448
+}
+member {
+  id: 0xb2c4b200
+  name: "g_pixelaspect"
+  type_id: 0x2dcd7de4
+  offset: 704
+}
+member {
+  id: 0xa9b6272a
+  name: "g_skip_frames"
+  type_id: 0x2dd4892b
+  offset: 64
+}
+member {
+  id: 0xfa7d34b6
+  name: "g_skip_top_lines"
+  type_id: 0x2dd4892b
+}
+member {
+  id: 0x1752173c
+  name: "g_sliced_fmt"
+  type_id: 0x2dc27cc9
+  offset: 320
+}
+member {
+  id: 0x00ce7033
+  name: "g_sliced_vbi_cap"
+  type_id: 0x2dd9b35c
+  offset: 192
+}
+member {
+  id: 0xfbc2503c
+  name: "g_std"
+  type_id: 0x2de377d3
+  offset: 128
+}
+member {
+  id: 0x76da3c3a
+  name: "g_std_output"
+  type_id: 0x2de377d3
+  offset: 320
+}
+member {
+  id: 0x40e5831f
+  name: "g_tuner"
+  type_id: 0x2ddf78be
+  offset: 320
+}
+member {
+  id: 0x494fa3dd
+  name: "g_tvnorms"
+  type_id: 0x2de377d3
+  offset: 448
+}
+member {
+  id: 0xe89c0421
+  name: "g_tvnorms_output"
+  type_id: 0x2de377d3
+  offset: 512
+}
+member {
+  id: 0x6af4aa8c
+  name: "g_vbi_data"
+  type_id: 0x2dd76e4f
+  offset: 128
+}
+member {
+  id: 0x6005f59a
+  name: "g_volatile_ctrl"
+  type_id: 0x2eb11cd7
+}
+member {
+  id: 0x1875f049
+  name: "gadget"
+  type_id: 0x25653b02
+}
+member {
+  id: 0x1875f0e2
+  name: "gadget"
+  type_id: 0x25653b02
+  offset: 256
+}
+member {
+  id: 0x1875f4a8
+  name: "gadget"
+  type_id: 0x25653b02
+  offset: 64
+}
+member {
+  id: 0x1875f76c
+  name: "gadget"
+  type_id: 0x25653b02
+  offset: 1728
+}
+member {
+  id: 0x2c80bff4
+  name: "gadget_driver"
+  type_id: 0xcffecd3e
+  offset: 576
+}
+member {
+  id: 0xf52a06bf
+  name: "gain"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xfa0c985b
+  name: "gamma"
+  type_id: 0xe8034002
+  offset: 1072
+}
+member {
+  id: 0xfacdc17c
+  name: "gamma"
+  type_id: 0x295c7202
+  offset: 184
+}
+member {
+  id: 0xfacdc687
+  name: "gamma"
+  type_id: 0x295c7202
+  offset: 24
+}
+member {
+  id: 0x8b99e76a
+  name: "gamma_lut"
+  type_id: 0x343ebce3
+  offset: 2304
+}
+member {
+  id: 0xac05b4c0
+  name: "gamma_lut_property"
+  type_id: 0x2a670b41
+  offset: 8704
+}
+member {
+  id: 0x2194c496
+  name: "gamma_lut_size_property"
+  type_id: 0x2a670b41
+  offset: 8768
+}
+member {
+  id: 0x93c99c65
+  name: "gamma_set"
+  type_id: 0x2ec9b6ec
+  offset: 256
+}
+member {
+  id: 0xfc46c539
+  name: "gamma_size"
+  type_id: 0x1c3dbe5a
+  offset: 3456
+}
+member {
+  id: 0x09501ec7
+  name: "gamma_store"
+  type_id: 0x2678c091
+  offset: 3520
+}
+member {
+  id: 0xc8f8f278
+  name: "gap_start"
+  type_id: 0x11c404ba
+  offset: 19200
+}
+member {
+  id: 0x49469be8
+  name: "gap_uf"
+  type_id: 0x295c7202
+  offset: 1080
+}
+member {
+  id: 0x16b7aef5
+  name: "gate"
+  type_id: 0x32122bf6
+}
+member {
+  id: 0x611120c1
+  name: "gate_state"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x3050233e
+  name: "gate_work"
+  type_id: 0xf1159c31
+}
+member {
+  id: 0xb154a56e
+  name: "gather_write"
+  type_id: 0x1838bac7
+  offset: 128
+}
+member {
+  id: 0x96527b3e
+  name: "gc"
+  type_id: 0x26d05e01
+  offset: 512
+}
+member {
+  id: 0x965b4154
+  name: "gc"
+  type_id: 0x2fe5cd8e
+  offset: 64
+}
+member {
+  id: 0x966c47a5
+  name: "gc"
+  type_id: 0x18e64f74
+  offset: 384
+}
+member {
+  id: 0x96be273a
+  name: "gc"
+  type_id: 0xca8f8b74
+  offset: 192
+}
+member {
+  id: 0x802c069a
+  name: "gc_entries"
+  type_id: 0x74d29cf1
+  offset: 5152
+}
+member {
+  id: 0x80403b50
+  name: "gc_flags"
+  type_id: 0x246497bd
+  offset: 128
+}
+member {
+  id: 0x8fd944b0
+  name: "gc_interval"
+  type_id: 0x6720d32f
+  offset: 2112
+}
+member {
+  id: 0xacc9f166
+  name: "gc_list"
+  type_id: 0xd3c80119
+  offset: 5184
+}
+member {
+  id: 0xacc9f954
+  name: "gc_list"
+  type_id: 0xd3c80119
+  offset: 2624
+}
+member {
+  id: 0xee9258e8
+  name: "gc_thresh"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xb3e087fd
+  name: "gc_thresh1"
+  type_id: 0x6720d32f
+  offset: 2144
+}
+member {
+  id: 0x7123da5e
+  name: "gc_thresh2"
+  type_id: 0x6720d32f
+  offset: 2176
+}
+member {
+  id: 0x30605474
+  name: "gc_thresh3"
+  type_id: 0x6720d32f
+  offset: 2208
+}
+member {
+  id: 0x6909a6a1
+  name: "gc_work"
+  type_id: 0xf1159c31
+  offset: 2304
+}
+member {
+  id: 0xdceffd77
+  name: "gclist"
+  type_id: 0x49a73111
+}
+member {
+  id: 0xc917f3f7
+  name: "gd"
+  type_id: 0x224973b2
+  offset: 9792
+}
+member {
+  id: 0xd05bee08
+  name: "gdbs_data"
+  type_id: 0x3863a91c
+  offset: 1472
+}
+member {
+  id: 0xc0b7e746
+  name: "gdev"
+  type_id: 0x1a8fcc43
+}
+member {
+  id: 0x33b58470
+  name: "gear_rx"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x526d9022
+  name: "gear_tx"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0xf6261b03
+  name: "gem"
+  type_id: 0x3860f3c0
+  offset: 128
+}
+member {
+  id: 0x7ca5b0e7
+  name: "gem_create_object"
+  type_id: 0x08726ccc
+  offset: 576
+}
+member {
+  id: 0x290f4622
+  name: "gem_prime_import"
+  type_id: 0x0886919f
+  offset: 768
+}
+member {
+  id: 0x6d0f227a
+  name: "gem_prime_import_sg_table"
+  type_id: 0x089b0ad3
+  offset: 832
+}
+member {
+  id: 0xd887ee3d
+  name: "gem_prime_mmap"
+  type_id: 0x2e7c1d11
+  offset: 896
+}
+member {
+  id: 0xa9144608
+  name: "gen"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0xa9dece9e
+  name: "gen"
+  type_id: 0x0387a44d
+  offset: 22272
+}
+member {
+  id: 0xa9f41a7b
+  name: "gen"
+  type_id: 0x295c7202
+  offset: 9032
+}
+member {
+  id: 0xa36a9456
+  name: "gen_id"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x5da4104b
+  name: "gen_ld_abs"
+  type_id: 0x2e0ce687
+  offset: 192
+}
+member {
+  id: 0x8c1742c4
+  name: "gen_prologue"
+  type_id: 0x2dad193a
+  offset: 128
+}
+member {
+  id: 0x339b742c
+  name: "generate"
+  type_id: 0x2e029208
+}
+member {
+  id: 0xae56385f
+  name: "generate_params"
+  type_id: 0x1cee95be
+  offset: 128
+}
+member {
+  id: 0x3a17233d
+  name: "generated_tag"
+  type_id: 0xedf277ba
+  offset: 1152
+}
+member {
+  id: 0x6917d1b8
+  name: "generation"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x694cfcc5
+  name: "generation"
+  type_id: 0x92233392
+  offset: 1984
+}
+member {
+  id: 0x694cfe41
+  name: "generation"
+  type_id: 0x92233392
+}
+member {
+  id: 0x699b5cf5
+  name: "generation"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x69c7a9e1
+  name: "generation"
+  type_id: 0x197d511c
+  offset: 128
+}
+member {
+  id: 0x420c3fb9
+  name: "generic"
+  type_id: 0x36bc4154
+}
+member {
+  id: 0x42335ffa
+  name: "generic"
+  type_id: 0x09dc021e
+}
+member {
+  id: 0x42aa8b1f
+  name: "generic"
+  type_id: 0x9008e757
+}
+member {
+  id: 0x42be7fea
+  name: "generic"
+  type_id: 0x84fc1211
+}
+member {
+  id: 0x42d6db26
+  name: "generic"
+  type_id: 0xec58de4a
+}
+member {
+  id: 0x87c62ab5
+  name: "generic_cmd6_time"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0x300a07a6
+  name: "generic_implicit_fb"
+  type_id: 0x6d7f5ff6
+  offset: 3104
+}
+member {
+  id: 0x4a8a7a23
+  name: "genfs"
+  type_id: 0x2ecc6701
+  offset: 4096
+}
+member {
+  id: 0xe46640ff
+  name: "genid"
+  type_id: 0x74d29cf1
+  offset: 896
+}
+member {
+  id: 0xe4db921d
+  name: "genid"
+  type_id: 0xc9082b19
+  offset: 1408
+}
+member {
+  id: 0x43a574e3
+  name: "geniv"
+  type_id: 0x3e10b518
+  offset: 2880
+}
+member {
+  id: 0x071c92aa
+  name: "genl_data"
+  type_id: 0x00c50bec
+  offset: 7680
+}
+member {
+  id: 0xe84562f4
+  name: "genl_data_mutex"
+  type_id: 0xa7c362b0
+  offset: 64
+}
+member {
+  id: 0x263a4bab
+  name: "genl_sock"
+  type_id: 0x1d44326e
+  offset: 2240
+}
+member {
+  id: 0xac10a6dd
+  name: "genlhdr"
+  type_id: 0x32a56f32
+  offset: 128
+}
+member {
+  id: 0xd7091b7f
+  name: "genpd_names"
+  type_id: 0x3e75499e
+  offset: 448
+}
+member {
+  id: 0x62c4f6d1
+  name: "genpd_performance_state"
+  type_id: 0x6d7f5ff6
+  offset: 3304
+}
+member {
+  id: 0xf8a17242
+  name: "genpd_virt_dev_lock"
+  type_id: 0xa7c362b0
+  offset: 1984
+}
+member {
+  id: 0x8ecf58e7
+  name: "genpd_virt_devs"
+  type_id: 0x0a0607fc
+  offset: 2368
+}
+member {
+  id: 0x3a570a9f
+  name: "geometry"
+  type_id: 0x3c416994
+  offset: 192
+}
+member {
+  id: 0x314650d1
+  name: "get"
+  type_id: 0x1f68ccf9
+  offset: 448
+}
+member {
+  id: 0x3152951a
+  name: "get"
+  type_id: 0x0baa70a7
+}
+member {
+  id: 0x31555e6e
+  name: "get"
+  type_id: 0x0c610495
+}
+member {
+  id: 0x315788a2
+  name: "get"
+  type_id: 0x0ebf01c0
+  offset: 192
+}
+member {
+  id: 0x315dbffa
+  name: "get"
+  type_id: 0x048090f0
+}
+member {
+  id: 0x31644260
+  name: "get"
+  type_id: 0x3d7eb07a
+  offset: 832
+}
+member {
+  id: 0x316ba2e8
+  name: "get"
+  type_id: 0x329c102a
+  offset: 384
+}
+member {
+  id: 0x316babd4
+  name: "get"
+  type_id: 0x329c102a
+  offset: 768
+}
+member {
+  id: 0x316c9b56
+  name: "get"
+  type_id: 0x35acf54c
+  offset: 192
+}
+member {
+  id: 0x316e0eb1
+  name: "get"
+  type_id: 0x373912ec
+  offset: 192
+}
+member {
+  id: 0x317385e4
+  name: "get"
+  type_id: 0x2ab66166
+  offset: 8000
+}
+member {
+  id: 0x31738ecc
+  name: "get"
+  type_id: 0x2ab66166
+  offset: 320
+}
+member {
+  id: 0x3174bf12
+  name: "get"
+  type_id: 0x2d89ba82
+  offset: 128
+}
+member {
+  id: 0x317502f3
+  name: "get"
+  type_id: 0x2c3be0fd
+  offset: 640
+}
+member {
+  id: 0x31766522
+  name: "get"
+  type_id: 0x2f5ea9dc
+  offset: 64
+}
+member {
+  id: 0x31766cd2
+  name: "get"
+  type_id: 0x2f575961
+  offset: 64
+}
+member {
+  id: 0x31771510
+  name: "get"
+  type_id: 0x2e2ad1d9
+  offset: 256
+}
+member {
+  id: 0x3eaa603e
+  name: "get_acl"
+  type_id: 0x15b489df
+  offset: 192
+}
+member {
+  id: 0x5089d640
+  name: "get_adapter_status"
+  type_id: 0x2c80812c
+  offset: 448
+}
+member {
+  id: 0xfa9e1262
+  name: "get_alt"
+  type_id: 0x2fb389b8
+  offset: 896
+}
+member {
+  id: 0x7eb4fe41
+  name: "get_args"
+  type_id: 0xe8034002
+  offset: 48
+}
+member {
+  id: 0x022f008e
+  name: "get_attention_status"
+  type_id: 0x2c80812c
+  offset: 320
+}
+member {
+  id: 0xbe7a98dd
+  name: "get_attr"
+  type_id: 0x2ee94408
+  offset: 384
+}
+member {
+  id: 0xd9eaaef2
+  name: "get_boot_addr"
+  type_id: 0x1dc9ac6f
+  offset: 896
+}
+member {
+  id: 0xc68ea885
+  name: "get_brightness"
+  type_id: 0x2ef9d78d
+  offset: 128
+}
+member {
+  id: 0x31cc14e6
+  name: "get_budget"
+  type_id: 0x2d6426a8
+  offset: 192
+}
+member {
+  id: 0xc7ab38a4
+  name: "get_bus_free"
+  type_id: 0x2fb994f1
+  offset: 320
+}
+member {
+  id: 0xd0a236fe
+  name: "get_bw"
+  type_id: 0x2d2e32aa
+  offset: 448
+}
+member {
+  id: 0x064b5040
+  name: "get_bypass"
+  type_id: 0x2d164af6
+  offset: 1856
+}
+member {
+  id: 0xf181007e
+  name: "get_caps"
+  type_id: 0x2c7292f9
+  offset: 704
+}
+member {
+  id: 0xf1818cbc
+  name: "get_caps"
+  type_id: 0x2cfe500b
+  offset: 704
+}
+member {
+  id: 0xb72e0956
+  name: "get_cc"
+  type_id: 0x2e619920
+  offset: 384
+}
+member {
+  id: 0x7d1149e7
+  name: "get_cd"
+  type_id: 0x2e9195ef
+  offset: 384
+}
+member {
+  id: 0x5eeef84b
+  name: "get_channel_map"
+  type_id: 0x2db8af94
+  offset: 512
+}
+member {
+  id: 0xace931c5
+  name: "get_channels"
+  type_id: 0x0dbfb6c2
+  offset: 2624
+}
+member {
+  id: 0xca3b484b
+  name: "get_chars"
+  type_id: 0x2c312b62
+}
+member {
+  id: 0x56a095c9
+  name: "get_coalesce"
+  type_id: 0x2ee95f08
+  offset: 960
+}
+member {
+  id: 0x5a7570e7
+  name: "get_codec_caps"
+  type_id: 0x2c64a150
+  offset: 768
+}
+member {
+  id: 0x5a75eb75
+  name: "get_codec_caps"
+  type_id: 0x2cff3331
+  offset: 768
+}
+member {
+  id: 0x483f3007
+  name: "get_codec_config_data"
+  type_id: 0x2c9f2c07
+  offset: 51392
+}
+member {
+  id: 0xc0137b3b
+  name: "get_config_params"
+  type_id: 0x0cd5af0d
+  offset: 448
+}
+member {
+  id: 0xf77bde4b
+  name: "get_context"
+  type_id: 0x2c5fa655
+  offset: 128
+}
+member {
+  id: 0xf322d94c
+  name: "get_cost"
+  type_id: 0x2de69f48
+  offset: 64
+}
+member {
+  id: 0xdd9aa113
+  name: "get_crc_sources"
+  type_id: 0x374bfb14
+  offset: 1152
+}
+member {
+  id: 0xda5bf484
+  name: "get_crit_temp"
+  type_id: 0x2f8d0c79
+  offset: 640
+}
+member {
+  id: 0x3329964b
+  name: "get_cur_freq"
+  type_id: 0x2dd3c39a
+  offset: 320
+}
+member {
+  id: 0x372adf65
+  name: "get_cur_state"
+  type_id: 0x2dbae528
+  offset: 64
+}
+member {
+  id: 0xdf98c64a
+  name: "get_current_limit"
+  type_id: 0x2e66ff23
+  offset: 192
+}
+member {
+  id: 0xdf9ba88e
+  name: "get_current_limit"
+  type_id: 0x2d078518
+  offset: 448
+}
+member {
+  id: 0x6ae7b5b9
+  name: "get_data_path_id"
+  type_id: 0x2c0a55f9
+  offset: 51328
+}
+member {
+  id: 0x6b09f785
+  name: "get_dev"
+  type_id: 0x369662d6
+  offset: 960
+}
+member {
+  id: 0x56b1619f
+  name: "get_dev_status"
+  type_id: 0x2dc33a95
+  offset: 256
+}
+member {
+  id: 0x2ca4b2ea
+  name: "get_devices"
+  type_id: 0x2afd4765
+  offset: 512
+}
+member {
+  id: 0x862306b2
+  name: "get_direction"
+  type_id: 0x2c3be0fd
+  offset: 448
+}
+member {
+  id: 0xf2d93010
+  name: "get_divisor"
+  type_id: 0x3969a52e
+  offset: 576
+}
+member {
+  id: 0x45a2fde2
+  name: "get_dmabuf"
+  type_id: 0x1aca7048
+  offset: 128
+}
+member {
+  id: 0x0013b024
+  name: "get_dqblk"
+  type_id: 0x2fccc15b
+  offset: 384
+}
+member {
+  id: 0xa55c212a
+  name: "get_dquots"
+  type_id: 0x1de57f85
+  offset: 1408
+}
+member {
+  id: 0x3802939d
+  name: "get_driver_name"
+  type_id: 0x2e3185e3
+  offset: 64
+}
+member {
+  id: 0x4da0477d
+  name: "get_drvinfo"
+  type_id: 0x0da19a24
+  offset: 128
+}
+member {
+  id: 0xd70facaa
+  name: "get_dummy_policy"
+  type_id: 0x37d53ac5
+  offset: 256
+}
+member {
+  id: 0x4d567ba6
+  name: "get_dump_data"
+  type_id: 0x2ee07f41
+  offset: 2816
+}
+member {
+  id: 0x0ff98153
+  name: "get_dump_flag"
+  type_id: 0x2ee1f497
+  offset: 2752
+}
+member {
+  id: 0xe89a0dfb
+  name: "get_duty_cycle"
+  type_id: 0x2d490a9d
+  offset: 1280
+}
+member {
+  id: 0x8689b2eb
+  name: "get_edid"
+  type_id: 0x3b7f3a35
+  offset: 1344
+}
+member {
+  id: 0x869f3332
+  name: "get_edid"
+  type_id: 0x2dff78b7
+  offset: 512
+}
+member {
+  id: 0xab650bcc
+  name: "get_eee"
+  type_id: 0x2efdce55
+  offset: 3136
+}
+member {
+  id: 0x08d9ea4a
+  name: "get_eeprom"
+  type_id: 0x2efe4971
+  offset: 832
+}
+member {
+  id: 0x18c1d495
+  name: "get_eeprom_len"
+  type_id: 0x2eda6351
+  offset: 768
+}
+member {
+  id: 0x522a2d74
+  name: "get_error_flags"
+  type_id: 0x2d1c7478
+  offset: 1216
+}
+member {
+  id: 0xf5ef910b
+  name: "get_eth_ctrl_stats"
+  type_id: 0x0dafe2c8
+  offset: 4224
+}
+member {
+  id: 0xe4d86285
+  name: "get_eth_mac_stats"
+  type_id: 0x0d9f8286
+  offset: 4160
+}
+member {
+  id: 0xb103b9b2
+  name: "get_eth_phy_stats"
+  type_id: 0x0da0e4a5
+  offset: 4096
+}
+member {
+  id: 0x463e99b0
+  name: "get_ethtool_phy_stats"
+  type_id: 0x0db9efe5
+  offset: 3840
+}
+member {
+  id: 0x0f823a3d
+  name: "get_ethtool_stats"
+  type_id: 0x0db9efe5
+  offset: 1600
+}
+member {
+  id: 0x09fd4226
+  name: "get_event_idx"
+  type_id: 0x2c3b9241
+  offset: 2752
+}
+member {
+  id: 0xad0b27c9
+  name: "get_features"
+  type_id: 0x2ee76b64
+  offset: 2048
+}
+member {
+  id: 0xad383bfd
+  name: "get_features"
+  type_id: 0x1df5af16
+  offset: 576
+}
+member {
+  id: 0xad3dd73d
+  name: "get_features"
+  type_id: 0x1819df28
+  offset: 128
+}
+member {
+  id: 0xad3f70fc
+  name: "get_features"
+  type_id: 0x1ab46600
+  offset: 832
+}
+member {
+  id: 0xb9dfc30b
+  name: "get_fec_stats"
+  type_id: 0x0d8b5128
+  offset: 3648
+}
+member {
+  id: 0x77756563
+  name: "get_fecparam"
+  type_id: 0x2ee5cce7
+  offset: 3712
+}
+member {
+  id: 0x02b22ff9
+  name: "get_fields"
+  type_id: 0x3753f2b0
+  offset: 320
+}
+member {
+  id: 0x778ee952
+  name: "get_fill_size"
+  type_id: 0x2c52639a
+  offset: 896
+}
+member {
+  id: 0x9cbd356e
+  name: "get_fixed_state"
+  type_id: 0x0dda7b97
+  offset: 128
+}
+member {
+  id: 0x9cbd4137
+  name: "get_fixed_state"
+  type_id: 0x0da193c0
+  offset: 1792
+}
+member {
+  id: 0xbb0e6a74
+  name: "get_flags"
+  type_id: 0x047bb30a
+}
+member {
+  id: 0xbb27e3fb
+  name: "get_flags"
+  type_id: 0x2dfacfb6
+  offset: 960
+}
+member {
+  id: 0x7c152cac
+  name: "get_fmt"
+  type_id: 0x2dfff216
+  offset: 256
+}
+member {
+  id: 0x332182fc
+  name: "get_format_info"
+  type_id: 0x1b4ce091
+  offset: 64
+}
+member {
+  id: 0x113929de
+  name: "get_frame"
+  type_id: 0x2fa652dc
+}
+member {
+  id: 0xe678e3db
+  name: "get_frame_desc"
+  type_id: 0x2da9c5ad
+  offset: 832
+}
+member {
+  id: 0x3b12433d
+  name: "get_frame_number"
+  type_id: 0x2fa7835a
+  offset: 704
+}
+member {
+  id: 0xf0e7d9e4
+  name: "get_func_proto"
+  type_id: 0x0a1ec4ff
+}
+member {
+  id: 0x3ac1d32a
+  name: "get_function_groups"
+  type_id: 0x2c0095a2
+  offset: 256
+}
+member {
+  id: 0x76b55a75
+  name: "get_function_name"
+  type_id: 0x2ff1e3a6
+  offset: 192
+}
+member {
+  id: 0x6c26df5c
+  name: "get_functions_count"
+  type_id: 0x2c455be3
+  offset: 128
+}
+member {
+  id: 0xf8564730
+  name: "get_fwnode_pad"
+  type_id: 0x2c11e613
+}
+member {
+  id: 0x4996d1dc
+  name: "get_group_name"
+  type_id: 0x2ff1e3a6
+  offset: 64
+}
+member {
+  id: 0x779c1f46
+  name: "get_group_pins"
+  type_id: 0x2c008b47
+  offset: 128
+}
+member {
+  id: 0x5aec42ff
+  name: "get_groups_count"
+  type_id: 0x2c455be3
+}
+member {
+  id: 0x800094b4
+  name: "get_hba_mac"
+  type_id: 0x2d883003
+  offset: 1536
+}
+member {
+  id: 0xa1f2295c
+  name: "get_hwirq"
+  type_id: 0x30934160
+}
+member {
+  id: 0x34f4a74e
+  name: "get_icount"
+  type_id: 0x2f1a6bce
+  offset: 3840
+}
+member {
+  id: 0x34f4a83a
+  name: "get_icount"
+  type_id: 0x2f1a6bce
+  offset: 1792
+}
+member {
+  id: 0x1d985f71
+  name: "get_info"
+  type_id: 0x2db9b3cf
+  offset: 128
+}
+member {
+  id: 0x1d9baad0
+  name: "get_info"
+  type_id: 0x2e43a9f5
+  offset: 640
+}
+member {
+  id: 0x8e932e8e
+  name: "get_ino_and_lblk_bits"
+  type_id: 0x0ccaa6cc
+  offset: 448
+}
+member {
+  id: 0xb10f74f3
+  name: "get_inode_usage"
+  type_id: 0x2c582e60
+  offset: 576
+}
+member {
+  id: 0x682b5a38
+  name: "get_input_level"
+  type_id: 0x334b2254
+  offset: 64
+}
+member {
+  id: 0x69c08ebc
+  name: "get_intermediate"
+  type_id: 0x397a812c
+  offset: 704
+}
+member {
+  id: 0xb949e043
+  name: "get_irq_reg"
+  type_id: 0x3858448c
+  offset: 3584
+}
+member {
+  id: 0xb949e4ee
+  name: "get_irq_reg"
+  type_id: 0x3858448c
+  offset: 1216
+}
+member {
+  id: 0x9c3a679c
+  name: "get_latch_status"
+  type_id: 0x2c80812c
+  offset: 384
+}
+member {
+  id: 0x430106a7
+  name: "get_link"
+  type_id: 0x18c45142
+  offset: 640
+}
+member {
+  id: 0x4336f8ab
+  name: "get_link"
+  type_id: 0x2f38c503
+  offset: 64
+}
+member {
+  id: 0xb2b5c2bf
+  name: "get_link_ext_state"
+  type_id: 0x2ef52cf8
+  offset: 704
+}
+member {
+  id: 0x457ccade
+  name: "get_link_ksettings"
+  type_id: 0x2ec35622
+  offset: 3520
+}
+member {
+  id: 0x2097a37c
+  name: "get_link_net"
+  type_id: 0x1b9b03f7
+  offset: 1472
+}
+member {
+  id: 0xf784051e
+  name: "get_linkxstats_size"
+  type_id: 0x2c017765
+  offset: 1536
+}
+member {
+  id: 0x51575a50
+  name: "get_loaded_rsc_table"
+  type_id: 0x02a388d8
+  offset: 704
+}
+member {
+  id: 0x9289442d
+  name: "get_local_cid"
+  type_id: 0x1bee337f
+  offset: 2176
+}
+member {
+  id: 0x24dcf28c
+  name: "get_mask"
+  type_id: 0x064d6086
+  offset: 192
+}
+member {
+  id: 0x3c7d77d7
+  name: "get_max_clock"
+  type_id: 0x3ab13613
+  offset: 704
+}
+member {
+  id: 0x9a73d86b
+  name: "get_max_state"
+  type_id: 0x2dbae528
+}
+member {
+  id: 0x98fbeba0
+  name: "get_max_timeout_count"
+  type_id: 0x3ab13613
+  offset: 896
+}
+member {
+  id: 0x835465b4
+  name: "get_mbus_config"
+  type_id: 0x2da8a40a
+  offset: 960
+}
+member {
+  id: 0x14194426
+  name: "get_mctrl"
+  type_id: 0x392d9f5e
+  offset: 128
+}
+member {
+  id: 0x14194a93
+  name: "get_mctrl"
+  type_id: 0x392d9f5e
+  offset: 448
+}
+member {
+  id: 0xc4db6ca3
+  name: "get_merge_boundary"
+  type_id: 0x06de8565
+  offset: 1536
+}
+member {
+  id: 0xc2404f2a
+  name: "get_metadata"
+  type_id: 0x2c49bb6c
+  offset: 320
+}
+member {
+  id: 0xc2404f78
+  name: "get_metadata"
+  type_id: 0x2c49e996
+  offset: 320
+}
+member {
+  id: 0xc240fb76
+  name: "get_metadata"
+  type_id: 0x2cfde7bd
+  offset: 320
+}
+member {
+  id: 0x833f2253
+  name: "get_min_clock"
+  type_id: 0x3ab13613
+  offset: 768
+}
+member {
+  id: 0x9c2b1ad1
+  name: "get_mode"
+  type_id: 0x39d1626d
+  offset: 1152
+}
+member {
+  id: 0xf890244f
+  name: "get_modes"
+  type_id: 0x2cc7a300
+  offset: 256
+}
+member {
+  id: 0xf892081c
+  name: "get_modes"
+  type_id: 0x2eeb5b0a
+}
+member {
+  id: 0xf8934200
+  name: "get_modes"
+  type_id: 0x2fa73aae
+  offset: 1280
+}
+member {
+  id: 0x1b778049
+  name: "get_module_eeprom"
+  type_id: 0x2efe4971
+  offset: 3072
+}
+member {
+  id: 0x9f30d55f
+  name: "get_module_eeprom_by_page"
+  type_id: 0x2ee1d7a6
+  offset: 4032
+}
+member {
+  id: 0x9e17f078
+  name: "get_module_info"
+  type_id: 0x2ef24e68
+  offset: 3008
+}
+member {
+  id: 0x8bf7a6d3
+  name: "get_module_power_mode"
+  type_id: 0x2ef0ccaf
+  offset: 4352
+}
+member {
+  id: 0x544169ed
+  name: "get_msglevel"
+  type_id: 0x18c45142
+  offset: 448
+}
+member {
+  id: 0x142f125b
+  name: "get_msi"
+  type_id: 0x2ca1ff18
+  offset: 384
+}
+member {
+  id: 0x6423a061
+  name: "get_msix"
+  type_id: 0x2ca1ff18
+  offset: 512
+}
+member {
+  id: 0x13d4f19e
+  name: "get_mtu"
+  type_id: 0x0c787416
+  offset: 512
+}
+member {
+  id: 0xc45a4303
+  name: "get_multiple"
+  type_id: 0x2c784c2d
+  offset: 704
+}
+member {
+  id: 0x1a6878f3
+  name: "get_name"
+  type_id: 0x2e01c1b5
+  offset: 192
+}
+member {
+  id: 0x1a6aacc4
+  name: "get_name"
+  type_id: 0x2cd5f6d3
+  offset: 192
+}
+member {
+  id: 0x1a6b98f3
+  name: "get_name"
+  type_id: 0x2de07a68
+  offset: 576
+}
+member {
+  id: 0x26725e34
+  name: "get_name_prefix"
+  type_id: 0x2de07a68
+  offset: 640
+}
+member {
+  id: 0xd1cc770e
+  name: "get_named_child_node"
+  type_id: 0x0716cdd6
+  offset: 832
+}
+member {
+  id: 0xf6bdee19
+  name: "get_next_child_node"
+  type_id: 0x072c4dd8
+  offset: 768
+}
+member {
+  id: 0x09a37e30
+  name: "get_next_id"
+  type_id: 0x2f805571
+  offset: 640
+}
+member {
+  id: 0x09a37f3e
+  name: "get_next_id"
+  type_id: 0x2f805571
+  offset: 448
+}
+member {
+  id: 0x7bcf7568
+  name: "get_nextdqblk"
+  type_id: 0x2f82f95c
+  offset: 448
+}
+member {
+  id: 0x8449505a
+  name: "get_num_rx_queues"
+  type_id: 0x3926e619
+  offset: 1088
+}
+member {
+  id: 0xcf1dfd83
+  name: "get_num_sources"
+  type_id: 0x2e30e88b
+}
+member {
+  id: 0x05867e05
+  name: "get_num_tx_queues"
+  type_id: 0x3926e619
+  offset: 1024
+}
+member {
+  id: 0x7e273f9e
+  name: "get_optimum_mode"
+  type_id: 0x39b05793
+  offset: 1664
+}
+member {
+  id: 0x4aebacca
+  name: "get_orientation"
+  type_id: 0x1b866383
+  offset: 320
+}
+member {
+  id: 0x585c8a51
+  name: "get_outstanding_cqs"
+  type_id: 0x2d8e7d63
+  offset: 1664
+}
+member {
+  id: 0xa021d35c
+  name: "get_ownership"
+  type_id: 0x0ea11ad5
+  offset: 768
+}
+member {
+  id: 0xa023c6b3
+  name: "get_ownership"
+  type_id: 0x0cbb9c80
+  offset: 320
+}
+member {
+  id: 0xcf22b6e3
+  name: "get_page"
+  type_id: 0x0f3dfb90
+  offset: 192
+}
+member {
+  id: 0xacf61961
+  name: "get_params"
+  type_id: 0x2cfc474d
+  offset: 192
+}
+member {
+  id: 0xacf6b692
+  name: "get_params"
+  type_id: 0x2c53b465
+  offset: 192
+}
+member {
+  id: 0xacf6b6c0
+  name: "get_params"
+  type_id: 0x2c53e69f
+  offset: 192
+}
+member {
+  id: 0x758cccef
+  name: "get_parent"
+  type_id: 0x0728dd63
+  offset: 704
+}
+member {
+  id: 0x75950075
+  name: "get_parent"
+  type_id: 0x1eecdc16
+  offset: 896
+}
+member {
+  id: 0x75a34ab5
+  name: "get_parent"
+  type_id: 0x28ac1164
+  offset: 256
+}
+member {
+  id: 0x75be61b8
+  name: "get_parent"
+  type_id: 0x3580c00a
+  offset: 448
+}
+member {
+  id: 0x9327c823
+  name: "get_pause_stats"
+  type_id: 0x0d8fd177
+  offset: 1216
+}
+member {
+  id: 0x3080d2dc
+  name: "get_pauseparam"
+  type_id: 0x0d8116cb
+  offset: 1280
+}
+member {
+  id: 0x162031d3
+  name: "get_peer_pid"
+  type_id: 0x00b7a8fc
+  offset: 768
+}
+member {
+  id: 0xa7341c0e
+  name: "get_per_queue_coalesce"
+  type_id: 0x2e106394
+  offset: 3392
+}
+member {
+  id: 0x04e7f823
+  name: "get_phase"
+  type_id: 0x2d5e4b40
+  offset: 1152
+}
+member {
+  id: 0xf22522e1
+  name: "get_phy_tunable"
+  type_id: 0x2eee0f8f
+  offset: 3904
+}
+member {
+  id: 0x4f7ab1fa
+  name: "get_pool_size"
+  type_id: 0x239cbb42
+  offset: 64
+}
+member {
+  id: 0x068909a2
+  name: "get_port"
+  type_id: 0x2ced7c4b
+  offset: 1536
+}
+member {
+  id: 0xa9079cd6
+  name: "get_power_status"
+  type_id: 0x2c80812c
+  offset: 256
+}
+member {
+  id: 0x5a0e21ce
+  name: "get_priv"
+  type_id: 0x1cf57c3c
+  offset: 256
+}
+member {
+  id: 0x626604b4
+  name: "get_priv_flags"
+  type_id: 0x18c45142
+  offset: 1792
+}
+member {
+  id: 0x640a95c9
+  name: "get_projid"
+  type_id: 0x2c5484bc
+  offset: 512
+}
+member {
+  id: 0x493a4fb5
+  name: "get_property"
+  type_id: 0x2c78fcb4
+  offset: 384
+}
+member {
+  id: 0x14bf117e
+  name: "get_psample_group"
+  type_id: 0x11e9bcc8
+  offset: 1024
+}
+member {
+  id: 0xecbe2867
+  name: "get_ptr"
+  type_id: 0x1de9dcec
+  offset: 64
+}
+member {
+  id: 0x3e5fd845
+  name: "get_rate_matching"
+  type_id: 0x2e09860c
+  offset: 2112
+}
+member {
+  id: 0x531e364c
+  name: "get_real_power"
+  type_id: 0x2fbd760b
+}
+member {
+  id: 0x70f67beb
+  name: "get_reference_args"
+  type_id: 0x2e2cf703
+  offset: 896
+}
+member {
+  id: 0x4d3f0523
+  name: "get_regs"
+  type_id: 0x0dbe554c
+  offset: 256
+}
+member {
+  id: 0x246ec66d
+  name: "get_regs_len"
+  type_id: 0x2eda6351
+  offset: 192
+}
+member {
+  id: 0xde75445c
+  name: "get_requested_power"
+  type_id: 0x2d847a7b
+  offset: 192
+}
+member {
+  id: 0x9615af37
+  name: "get_required_mask"
+  type_id: 0x1f4342e3
+  offset: 1344
+}
+member {
+  id: 0x8446c45c
+  name: "get_reserved_space"
+  type_id: 0x01a57649
+  offset: 448
+}
+member {
+  id: 0xb775d4db
+  name: "get_resuming_ports"
+  type_id: 0x04ac88c5
+  offset: 1472
+}
+member {
+  id: 0xced6d874
+  name: "get_resv_regions"
+  type_id: 0x0eadc06c
+  offset: 384
+}
+member {
+  id: 0x12f3c8d8
+  name: "get_ringparam"
+  type_id: 0x0da5e764
+  offset: 1088
+}
+member {
+  id: 0x0463e185
+  name: "get_rmon_stats"
+  type_id: 0x0d9db20b
+  offset: 4288
+}
+member {
+  id: 0x24c10ae3
+  name: "get_ro"
+  type_id: 0x3ab13613
+  offset: 1152
+}
+member {
+  id: 0x24d5235b
+  name: "get_ro"
+  type_id: 0x2e9195ef
+  offset: 320
+}
+member {
+  id: 0x5dc493cf
+  name: "get_rq_budget_token"
+  type_id: 0x2c182175
+  offset: 384
+}
+member {
+  id: 0xa70c4267
+  name: "get_rr_interval"
+  type_id: 0x3bdbd647
+  offset: 1536
+}
+member {
+  id: 0x4056955a
+  name: "get_rxfh"
+  type_id: 0x2ee2bdd7
+  offset: 2368
+}
+member {
+  id: 0xfe6a2921
+  name: "get_rxfh_context"
+  type_id: 0x2ee2b147
+  offset: 2496
+}
+member {
+  id: 0x6359c743
+  name: "get_rxfh_indir_size"
+  type_id: 0x18c45142
+  offset: 2304
+}
+member {
+  id: 0x13dec26e
+  name: "get_rxfh_key_size"
+  type_id: 0x18c45142
+  offset: 2240
+}
+member {
+  id: 0x635bcd50
+  name: "get_rxnfc"
+  type_id: 0x2ede10b7
+  offset: 1984
+}
+member {
+  id: 0xb574ecce
+  name: "get_scanout_position"
+  type_id: 0x3640c1e2
+  offset: 960
+}
+member {
+  id: 0x78771baa
+  name: "get_scl"
+  type_id: 0x2fb994f1
+  offset: 64
+}
+member {
+  id: 0x0de9cd61
+  name: "get_sda"
+  type_id: 0x2fb994f1
+  offset: 192
+}
+member {
+  id: 0xcbc2643f
+  name: "get_selection"
+  type_id: 0x2dffe4a8
+  offset: 384
+}
+member {
+  id: 0x954df68c
+  name: "get_serial"
+  type_id: 0x2f054704
+  offset: 1856
+}
+member {
+  id: 0x956eb42c
+  name: "get_serial"
+  type_id: 0x0c436bab
+  offset: 3072
+}
+member {
+  id: 0x545ea760
+  name: "get_sg_table"
+  type_id: 0x19492e8d
+  offset: 448
+}
+member {
+  id: 0x293d5227
+  name: "get_sgtable"
+  type_id: 0x2dd44e42
+  offset: 512
+}
+member {
+  id: 0x9cc6236c
+  name: "get_shm_region"
+  type_id: 0x3783c640
+  offset: 896
+}
+member {
+  id: 0xb75fe6a4
+  name: "get_size"
+  type_id: 0x2c6657b6
+  offset: 768
+}
+member {
+  id: 0xb02b5dc5
+  name: "get_slave_size"
+  type_id: 0x2c55ce72
+  offset: 1344
+}
+member {
+  id: 0xea1ad985
+  name: "get_sndtimeo"
+  type_id: 0x236d6a86
+  offset: 704
+}
+member {
+  id: 0x67a9383c
+  name: "get_sqi"
+  type_id: 0x2ee76b64
+  offset: 3904
+}
+member {
+  id: 0xce8e0fb3
+  name: "get_sqi_max"
+  type_id: 0x2ee76b64
+  offset: 3968
+}
+member {
+  id: 0x921d85f7
+  name: "get_sset_count"
+  type_id: 0x2ebd4382
+  offset: 1920
+}
+member {
+  id: 0x921dd709
+  name: "get_sset_count"
+  type_id: 0x2ee76b64
+  offset: 3520
+}
+member {
+  id: 0x7e8c8476
+  name: "get_state"
+  type_id: 0x2f91cf68
+  offset: 256
+}
+member {
+  id: 0x7e8ca05f
+  name: "get_state"
+  type_id: 0x2fbc3f70
+  offset: 576
+}
+member {
+  id: 0xba32645c
+  name: "get_stats"
+  type_id: 0x0d84e7d0
+  offset: 3648
+}
+member {
+  id: 0x0217a7cd
+  name: "get_status"
+  type_id: 0x1cd1f459
+  offset: 192
+}
+member {
+  id: 0x02248e81
+  name: "get_status"
+  type_id: 0x2ff60cde
+  offset: 1280
+}
+member {
+  id: 0x022670cd
+  name: "get_status"
+  type_id: 0x2d078518
+  offset: 1600
+}
+member {
+  id: 0xd7255615
+  name: "get_stream"
+  type_id: 0x1f004fc8
+  offset: 704
+}
+member {
+  id: 0xab225202
+  name: "get_strings"
+  type_id: 0x0d554ba7
+  offset: 1472
+}
+member {
+  id: 0xab22a7f0
+  name: "get_strings"
+  type_id: 0x0da180ee
+  offset: 3584
+}
+member {
+  id: 0x953fe099
+  name: "get_target_freq"
+  type_id: 0x2f80ed7b
+  offset: 384
+}
+member {
+  id: 0xe51dd025
+  name: "get_temp"
+  type_id: 0x2f8d0c79
+  offset: 128
+}
+member {
+  id: 0xcec1755a
+  name: "get_time"
+  type_id: 0x2d646f41
+  offset: 384
+}
+member {
+  id: 0x8899228d
+  name: "get_time_info"
+  type_id: 0x2cf289fa
+  offset: 2048
+}
+member {
+  id: 0x889961f9
+  name: "get_time_info"
+  type_id: 0x2cbf0dea
+  offset: 576
+}
+member {
+  id: 0x4b2d8406
+  name: "get_timeleft"
+  type_id: 0x3808938b
+  offset: 448
+}
+member {
+  id: 0x1829bd8d
+  name: "get_timeline_name"
+  type_id: 0x2e3185e3
+  offset: 128
+}
+member {
+  id: 0x5428b8dc
+  name: "get_timeout_clock"
+  type_id: 0x3ab13613
+  offset: 832
+}
+member {
+  id: 0xb0511276
+  name: "get_timings"
+  type_id: 0x2cb20dcc
+  offset: 384
+}
+member {
+  id: 0xb99ca7cf
+  name: "get_tiocm"
+  type_id: 0x2cac39f3
+  offset: 576
+}
+member {
+  id: 0x41912b2f
+  name: "get_tree"
+  type_id: 0x2f05fd8b
+  offset: 256
+}
+member {
+  id: 0x22c50ed1
+  name: "get_trend"
+  type_id: 0x2ff91b8e
+  offset: 768
+}
+member {
+  id: 0xb2259f72
+  name: "get_trip_hyst"
+  type_id: 0x2ff84127
+  offset: 512
+}
+member {
+  id: 0xffbb6591
+  name: "get_trip_temp"
+  type_id: 0x2ff84127
+  offset: 384
+}
+member {
+  id: 0xfb1b2aa4
+  name: "get_trip_type"
+  type_id: 0x2ff90df1
+  offset: 320
+}
+member {
+  id: 0xbe94364c
+  name: "get_ts_info"
+  type_id: 0x2ecacc9e
+  offset: 2944
+}
+member {
+  id: 0x26720165
+  name: "get_tunable"
+  type_id: 0x2eee0f8f
+  offset: 3264
+}
+member {
+  id: 0x26722814
+  name: "get_tunable"
+  type_id: 0x2ecdbda3
+  offset: 3712
+}
+member {
+  id: 0x899074db
+  name: "get_ufs_hci_version"
+  type_id: 0x1b960210
+  offset: 192
+}
+member {
+  id: 0xb14a1a0b
+  name: "get_unique_id"
+  type_id: 0x2feb5e20
+  offset: 960
+}
+member {
+  id: 0x4284601c
+  name: "get_unmapped_area"
+  type_id: 0x0745de2d
+  offset: 384
+}
+member {
+  id: 0x42846947
+  name: "get_unmapped_area"
+  type_id: 0x0745de2d
+  offset: 192
+}
+member {
+  id: 0x42846b0d
+  name: "get_unmapped_area"
+  type_id: 0x0745de2d
+  offset: 1344
+}
+member {
+  id: 0xe15c46ee
+  name: "get_userptr"
+  type_id: 0x1dfe0dc3
+  offset: 192
+}
+member {
+  id: 0x96f04e02
+  name: "get_uuid"
+  type_id: 0x2f9d83f0
+  offset: 384
+}
+member {
+  id: 0xf2712792
+  name: "get_vblank_counter"
+  type_id: 0x18fb849f
+  offset: 1280
+}
+member {
+  id: 0x2be2010c
+  name: "get_vblank_timestamp"
+  type_id: 0x363f43e7
+  offset: 1472
+}
+member {
+  id: 0xe4c710c3
+  name: "get_vbus"
+  type_id: 0x2e66ff23
+  offset: 128
+}
+member {
+  id: 0x321c4d14
+  name: "get_verity_descriptor"
+  type_id: 0x2c5fa655
+  offset: 128
+}
+member {
+  id: 0x89d35265
+  name: "get_voltage"
+  type_id: 0x2d078518
+  offset: 256
+}
+member {
+  id: 0xd9d8295f
+  name: "get_voltage_sel"
+  type_id: 0x2d078518
+  offset: 320
+}
+member {
+  id: 0xba5ef8e0
+  name: "get_vq_affinity"
+  type_id: 0x1e0272bf
+  offset: 832
+}
+member {
+  id: 0xd6627db5
+  name: "get_wireless_stats"
+  type_id: 0x15ecb64f
+  offset: 256
+}
+member {
+  id: 0x208dc766
+  name: "get_wol"
+  type_id: 0x0d806302
+  offset: 2816
+}
+member {
+  id: 0x208df2c3
+  name: "get_wol"
+  type_id: 0x0dbd6b37
+  offset: 320
+}
+member {
+  id: 0xed667463
+  name: "get_xstats_size"
+  type_id: 0x2c6657b6
+  offset: 896
+}
+member {
+  id: 0xd057157a
+  name: "getattr"
+  type_id: 0x2d31c182
+  offset: 896
+}
+member {
+  id: 0xb8237f7d
+  name: "getcrosscycles"
+  type_id: 0x2fb6989d
+  offset: 1216
+}
+member {
+  id: 0xd016ff27
+  name: "getcrosststamp"
+  type_id: 0x2fb6989d
+  offset: 960
+}
+member {
+  id: 0xd6d2a311
+  name: "getcycles64"
+  type_id: 0x2fab08ae
+  offset: 1088
+}
+member {
+  id: 0xab1b31a6
+  name: "getcyclesx64"
+  type_id: 0x2fa919f1
+  offset: 1152
+}
+member {
+  id: 0xaf057347
+  name: "getgeo"
+  type_id: 0x2d2b1c2c
+  offset: 576
+}
+member {
+  id: 0xc8e0239f
+  name: "getkeycode"
+  type_id: 0x2cdccc49
+  offset: 1920
+}
+member {
+  id: 0xb1f64dc9
+  name: "getname"
+  type_id: 0x2cc4a2bb
+  offset: 448
+}
+member {
+  id: 0xd9ad3786
+  name: "getsockopt"
+  type_id: 0x2c451522
+  offset: 640
+}
+member {
+  id: 0xd9adeb4d
+  name: "getsockopt"
+  type_id: 0x2c975498
+  offset: 960
+}
+member {
+  id: 0x5875fd5c
+  name: "gettime64"
+  type_id: 0x2fab08ae
+  offset: 832
+}
+member {
+  id: 0xea4526a2
+  name: "gettimex64"
+  type_id: 0x2fa919f1
+  offset: 896
+}
+member {
+  id: 0xa6c1c6c4
+  name: "gettstamp"
+  type_id: 0x2ce8041f
+  offset: 704
+}
+member {
+  id: 0x6464ee1d
+  name: "gflags"
+  type_id: 0xc93e017b
+  offset: 1760
+}
+member {
+  id: 0x3182bf25
+  name: "gfn_node"
+  type_id: 0x60282e68
+  offset: 1024
+}
+member {
+  id: 0xc25cb27c
+  name: "gfn_tree"
+  type_id: 0xeb923a9b
+  offset: 256
+}
+member {
+  id: 0x8b338b1d
+  name: "gfp"
+  type_id: 0xf1a6dfed
+  offset: 320
+}
+member {
+  id: 0xde99678b
+  name: "gfp_custom"
+  type_id: 0xf1a6dfed
+  offset: 64
+}
+member {
+  id: 0x81a9f110
+  name: "gfp_flags"
+  type_id: 0xf1a6dfed
+  offset: 736
+}
+member {
+  id: 0xa4a1837d
+  name: "gfp_mask"
+  type_id: 0xf1a6dfed
+  offset: 352
+}
+member {
+  id: 0xa4a183c5
+  name: "gfp_mask"
+  type_id: 0xf1a6dfed
+  offset: 64
+}
+member {
+  id: 0xa4a18519
+  name: "gfp_mask"
+  type_id: 0xf1a6dfed
+  offset: 704
+}
+member {
+  id: 0xa4a18724
+  name: "gfp_mask"
+  type_id: 0xf1a6dfed
+}
+member {
+  id: 0xa4b05766
+  name: "gfp_mask"
+  type_id: 0xe0785a59
+  offset: 736
+}
+member {
+  id: 0x961708ca
+  name: "gfp_retry_mayfail"
+  type_id: 0x6d7f5ff6
+  offset: 16
+}
+member {
+  id: 0x8e40fa3f
+  name: "gfp_zero"
+  type_id: 0xf1a6dfed
+  offset: 32
+}
+member {
+  id: 0x3b2054a4
+  name: "gicd_typer"
+  type_id: 0xc9082b19
+  offset: 256
+}
+member {
+  id: 0xc50214cc
+  name: "gicd_typer2"
+  type_id: 0xc9082b19
+  offset: 288
+}
+member {
+  id: 0x08bea5a0
+  name: "gid"
+  type_id: 0xe80ee274
+  offset: 64
+}
+member {
+  id: 0x08e67071
+  name: "gid"
+  type_id: 0xb0ddb211
+  offset: 416
+}
+member {
+  id: 0x08e671ab
+  name: "gid"
+  type_id: 0xb0ddb211
+  offset: 832
+}
+member {
+  id: 0x08e67211
+  name: "gid"
+  type_id: 0xb0ddb211
+}
+member {
+  id: 0x08e676f0
+  name: "gid"
+  type_id: 0xb0ddb211
+  offset: 64
+}
+member {
+  id: 0x08e67b30
+  name: "gid"
+  type_id: 0xb0ddb211
+  offset: 1056
+}
+member {
+  id: 0x08e67dab
+  name: "gid"
+  type_id: 0xb0ddb211
+  offset: 6112
+}
+member {
+  id: 0x08e67f2a
+  name: "gid"
+  type_id: 0xb0ddb211
+  offset: 32
+}
+member {
+  id: 0xe2053ef5
+  name: "gid_map"
+  type_id: 0xe742397c
+  offset: 576
+}
+member {
+  id: 0x9e65d647
+  name: "global"
+  type_id: 0x6d7f5ff6
+  offset: 1361
+  bitsize: 1
+}
+member {
+  id: 0xd3fc3594
+  name: "global_alpha"
+  type_id: 0xb3e7bac9
+  offset: 384
+}
+member {
+  id: 0x9719a21e
+  name: "global_connector_list_entry"
+  type_id: 0xd3c80119
+  offset: 384
+}
+member {
+  id: 0x5d92f8b0
+  name: "global_hlist"
+  type_id: 0x49a73111
+  offset: 2304
+}
+member {
+  id: 0x88f8622b
+  name: "global_l"
+  type_id: 0xd3c80119
+  offset: 7360
+}
+member {
+  id: 0x523f440f
+  name: "global_node"
+  type_id: 0xd3c80119
+  offset: 256
+}
+member {
+  id: 0xab2426d6
+  name: "glue_dirs"
+  type_id: 0x7b1fd27f
+  offset: 3264
+}
+member {
+  id: 0x5168f15c
+  name: "gobj0"
+  type_id: 0x2ef8d5bf
+}
+member {
+  id: 0x912b1a18
+  name: "gobj1"
+  type_id: 0x2ef8d5bf
+}
+member {
+  id: 0xf4b15a60
+  name: "going_away"
+  type_id: 0x6d7f5ff6
+  offset: 4576
+}
+member {
+  id: 0x827a5cb3
+  name: "golden_frame_ts"
+  type_id: 0xedf277ba
+  offset: 9664
+}
+member {
+  id: 0x827a5dfa
+  name: "golden_frame_ts"
+  type_id: 0xedf277ba
+  offset: 1088
+}
+member {
+  id: 0x023f6d04
+  name: "goner"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x2adbf7e4
+  name: "got_ref"
+  type_id: 0x6d7f5ff6
+  offset: 64
+}
+member {
+  id: 0xc608ae45
+  name: "goto_chain"
+  type_id: 0x1a8b04e5
+  offset: 1472
+}
+member {
+  id: 0xe7568bc2
+  name: "goto_tp"
+  type_id: 0x3d610880
+}
+member {
+  id: 0xbf083c10
+  name: "gov"
+  type_id: 0x1a29773f
+  offset: 9728
+}
+member {
+  id: 0xbf22ab93
+  name: "gov"
+  type_id: 0x30b52230
+  offset: 320
+}
+member {
+  id: 0xbf2d12a5
+  name: "gov"
+  type_id: 0x3f015031
+  offset: 1344
+}
+member {
+  id: 0xbf2e3fb2
+  name: "gov"
+  type_id: 0x3c26c400
+}
+member {
+  id: 0x8b18c6d7
+  name: "gov_dbs_update"
+  type_id: 0x393f044a
+  offset: 1536
+}
+member {
+  id: 0xb047819b
+  name: "governor"
+  type_id: 0x3e10b518
+  offset: 8640
+}
+member {
+  id: 0xb04ae832
+  name: "governor"
+  type_id: 0x337a1bef
+  offset: 7872
+}
+member {
+  id: 0xb06430dc
+  name: "governor"
+  type_id: 0x1daaaa3b
+  offset: 8832
+}
+member {
+  id: 0xb07c0b16
+  name: "governor"
+  type_id: 0x059988a7
+  offset: 640
+}
+member {
+  id: 0xb1ba21e0
+  name: "governor_data"
+  type_id: 0x18bd6530
+  offset: 704
+}
+member {
+  id: 0xb1ba283c
+  name: "governor_data"
+  type_id: 0x18bd6530
+  offset: 9792
+}
+member {
+  id: 0xb1ba2b09
+  name: "governor_data"
+  type_id: 0x18bd6530
+  offset: 8896
+}
+member {
+  id: 0x6e6c011b
+  name: "governor_list"
+  type_id: 0xd3c80119
+  offset: 384
+}
+member {
+  id: 0x6e6c094b
+  name: "governor_list"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0x6e6c09fb
+  name: "governor_list"
+  type_id: 0xd3c80119
+  offset: 576
+}
+member {
+  id: 0x480ac2e2
+  name: "governor_name"
+  type_id: 0x19ce8000
+}
+member {
+  id: 0x3b672c9b
+  name: "gp_count"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x0f65729e
+  name: "gp_seq"
+  type_id: 0x80904a3b
+  offset: 320
+}
+member {
+  id: 0x0fd69496
+  name: "gp_seq"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xbffba1d3
+  name: "gp_seq_needed"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x880ef57c
+  name: "gp_state"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x581b9763
+  name: "gp_tasks"
+  type_id: 0x3e6239e1
+  offset: 1216
+}
+member {
+  id: 0xc9515701
+  name: "gp_wait"
+  type_id: 0x03913382
+  offset: 64
+}
+member {
+  id: 0xc1d9a180
+  name: "gpa"
+  type_id: 0x1b4ba19a
+}
+member {
+  id: 0xca660682
+  name: "gpc_list"
+  type_id: 0xd3c80119
+  offset: 18560
+}
+member {
+  id: 0x46e189ff
+  name: "gpc_lock"
+  type_id: 0xf313e71a
+  offset: 18496
+}
+member {
+  id: 0x4298e7ea
+  name: "gpd_list_node"
+  type_id: 0xd3c80119
+  offset: 9216
+}
+member {
+  id: 0x07481c1e
+  name: "gpio"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x07a564e2
+  name: "gpio"
+  type_id: 0xa8f97b24
+  offset: 64
+}
+member {
+  id: 0x13043101
+  name: "gpio_disable_free"
+  type_id: 0x0f032feb
+  offset: 448
+}
+member {
+  id: 0x3c552680
+  name: "gpio_ranges"
+  type_id: 0xd3c80119
+  offset: 704
+}
+member {
+  id: 0x718bddf0
+  name: "gpio_request_enable"
+  type_id: 0x2c450344
+  offset: 384
+}
+member {
+  id: 0xb0f831fb
+  name: "gpio_set_direction"
+  type_id: 0x2c456e3b
+  offset: 512
+}
+member {
+  id: 0xa38bbaa8
+  name: "gpiod"
+  type_id: 0x2560a232
+  offset: 128
+}
+member {
+  id: 0x5e4308ff
+  name: "gpiod_dev"
+  type_id: 0x0258f96e
+  offset: 64
+}
+member {
+  id: 0x517d2606
+  name: "gpiodev"
+  type_id: 0x1a8fcc43
+  offset: 64
+}
+member {
+  id: 0xf39b3763
+  name: "gpios"
+  type_id: 0x0cb7ac99
+  offset: 5056
+}
+member {
+  id: 0x03dc8fd6
+  name: "gpl_compatible"
+  type_id: 0x914dbfdc
+  offset: 18
+  bitsize: 1
+}
+member {
+  id: 0x15c7f286
+  name: "gpl_crcs"
+  type_id: 0x30d5aa47
+  offset: 2752
+}
+member {
+  id: 0x77c47d01
+  name: "gpl_only"
+  type_id: 0x6d7f5ff6
+  offset: 64
+}
+member {
+  id: 0xcb721694
+  name: "gpl_syms"
+  type_id: 0x3e096c25
+  offset: 2688
+}
+member {
+  id: 0x2bc76984
+  name: "gprs"
+  type_id: 0x6fb0151f
+}
+member {
+  id: 0x1ef489e6
+  name: "grab"
+  type_id: 0x39c3bcd2
+  offset: 4032
+}
+member {
+  id: 0x816c9dc2
+  name: "grab_current_ns"
+  type_id: 0x1f3595db
+  offset: 128
+}
+member {
+  id: 0x0277381e
+  name: "graft"
+  type_id: 0x2f294863
+  offset: 128
+}
+member {
+  id: 0x98466da3
+  name: "granule"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0x673d5a4a
+  name: "graph_elems"
+  type_id: 0x0baa70a7
+  offset: 96
+}
+member {
+  id: 0x5ca5cb73
+  name: "graph_get_next_endpoint"
+  type_id: 0x072c4dd8
+  offset: 960
+}
+member {
+  id: 0xc37adbb4
+  name: "graph_get_port_parent"
+  type_id: 0x048090f0
+  offset: 1088
+}
+member {
+  id: 0xd24f3203
+  name: "graph_get_remote_endpoint"
+  type_id: 0x0728dd63
+  offset: 1024
+}
+member {
+  id: 0x0c41e25a
+  name: "graph_mutex"
+  type_id: 0xa7c362b0
+  offset: 2240
+}
+member {
+  id: 0xa9a4a65a
+  name: "graph_obj"
+  type_id: 0x91a3b063
+}
+member {
+  id: 0xb2940221
+  name: "graph_parse_endpoint"
+  type_id: 0x2e19d469
+  offset: 1152
+}
+member {
+  id: 0xda08efc1
+  name: "graveyard_link"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0x98448846
+  name: "grayscale"
+  type_id: 0xe62ebf07
+  offset: 224
+}
+member {
+  id: 0xf506281c
+  name: "gre"
+  type_id: 0x1064a749
+}
+member {
+  id: 0xf543a7c9
+  name: "gre"
+  type_id: 0x55e1f12c
+  offset: 1344
+}
+member {
+  id: 0xf59d2de9
+  name: "gre"
+  type_id: 0x8b615255
+}
+member {
+  id: 0xfa6198be
+  name: "gre_key"
+  type_id: 0xe276adef
+}
+member {
+  id: 0x43045a5b
+  name: "green"
+  type_id: 0xd529883e
+  offset: 352
+}
+member {
+  id: 0x43e1eea1
+  name: "green"
+  type_id: 0x3090e9a7
+  offset: 128
+}
+member {
+  id: 0xf3c22e72
+  name: "green_x"
+  type_id: 0x295c7202
+  offset: 232
+}
+member {
+  id: 0x3282c414
+  name: "green_y"
+  type_id: 0x295c7202
+  offset: 240
+}
+member {
+  id: 0xcbf51d32
+  name: "greenx"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x88793a5f
+  name: "greeny"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0x8f4e7388
+  name: "gro_bitmask"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0x1b75c63b
+  name: "gro_complete"
+  type_id: 0xd540e986
+  offset: 448
+}
+member {
+  id: 0x7755b9c0
+  name: "gro_flush_timeout"
+  type_id: 0x33756485
+  offset: 6400
+}
+member {
+  id: 0x31111b5e
+  name: "gro_hash"
+  type_id: 0xfbe43829
+  offset: 448
+}
+member {
+  id: 0xcc3caa98
+  name: "gro_max_size"
+  type_id: 0x4585663f
+  offset: 6496
+}
+member {
+  id: 0x1df1df5b
+  name: "gro_receive"
+  type_id: 0x5bd86350
+  offset: 384
+}
+member {
+  id: 0xd322d799
+  name: "group"
+  type_id: 0xb0ddb211
+  offset: 1856
+}
+member {
+  id: 0xd370c280
+  name: "group"
+  type_id: 0xe2ce8d42
+  offset: 32
+}
+member {
+  id: 0xd373434c
+  name: "group"
+  type_id: 0xe145bd36
+  offset: 320
+}
+member {
+  id: 0xd373448b
+  name: "group"
+  type_id: 0xe145bd36
+}
+member {
+  id: 0xd37422b2
+  name: "group"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xd37a0cc8
+  name: "group"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0xd37a0f1d
+  name: "group"
+  type_id: 0xe8034002
+  offset: 432
+}
+member {
+  id: 0xd38238e3
+  name: "group"
+  type_id: 0x1030cbfb
+  offset: 8512
+}
+member {
+  id: 0xd3856a12
+  name: "group"
+  type_id: 0x176fc5b8
+  offset: 64
+}
+member {
+  id: 0xd3a0c18f
+  name: "group"
+  type_id: 0x32c156ea
+  offset: 7744
+}
+member {
+  id: 0xd3ac1183
+  name: "group"
+  type_id: 0x3e10b518
+}
+member {
+  id: 0xd3bb233e
+  name: "group"
+  type_id: 0x2922a3d0
+  offset: 256
+}
+member {
+  id: 0xd3bb5c92
+  name: "group"
+  type_id: 0x295c7202
+  offset: 696
+}
+member {
+  id: 0xd3be02c5
+  name: "group"
+  type_id: 0x2c0aa9ee
+  offset: 2624
+}
+member {
+  id: 0xd3f524cf
+  name: "group"
+  type_id: 0x6720d32f
+  offset: 2400
+}
+member {
+  id: 0xd3ff70d7
+  name: "group"
+  type_id: 0x6d7f5ff6
+  offset: 16
+}
+member {
+  id: 0x26e58ea7
+  name: "group_caps"
+  type_id: 0x6720d32f
+  offset: 1088
+}
+member {
+  id: 0x947ac68d
+  name: "group_data"
+  type_id: 0xee699492
+  offset: 160
+}
+member {
+  id: 0xf3dc84ec
+  name: "group_entry"
+  type_id: 0xd3c80119
+  offset: 960
+}
+member {
+  id: 0x732e360b
+  name: "group_exec_task"
+  type_id: 0x1d19a9d5
+  offset: 832
+}
+member {
+  id: 0x5776ae51
+  name: "group_exit_code"
+  type_id: 0x6720d32f
+  offset: 768
+}
+member {
+  id: 0x0f81c321
+  name: "group_index"
+  type_id: 0x92233392
+  offset: 576
+}
+member {
+  id: 0x0ded372d
+  name: "group_info"
+  type_id: 0x1c34c69b
+  offset: 1216
+}
+member {
+  id: 0x9ced5af9
+  name: "group_is_open"
+  type_id: 0x6d7f5ff6
+  offset: 8704
+}
+member {
+  id: 0xc397678c
+  name: "group_leader"
+  type_id: 0x1d19a9d5
+  offset: 13184
+}
+member {
+  id: 0xc397b990
+  name: "group_leader"
+  type_id: 0x1dce0fdd
+  offset: 1152
+}
+member {
+  id: 0xbb1fd5b1
+  name: "group_names"
+  type_id: 0x3e75499e
+  offset: 64
+}
+member {
+  id: 0x9b1a5b6f
+  name: "group_node"
+  type_id: 0x3205ba2f
+  offset: 384
+}
+member {
+  id: 0x9bfb9081
+  name: "group_node"
+  type_id: 0xd3c80119
+  offset: 320
+}
+member {
+  id: 0x88085ba4
+  name: "group_num"
+  type_id: 0xc9082b19
+  offset: 192
+}
+member {
+  id: 0x58e839a3
+  name: "group_or_pin"
+  type_id: 0x3e10b518
+}
+member {
+  id: 0x69a3953c
+  name: "group_stop_count"
+  type_id: 0x6720d32f
+  offset: 896
+}
+member {
+  id: 0x515cde67
+  name: "group_weight"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x93011024
+  name: "groups"
+  type_id: 0x06433852
+  offset: 832
+}
+member {
+  id: 0x930111a3
+  name: "groups"
+  type_id: 0x06433852
+  offset: 704
+}
+member {
+  id: 0x930114e9
+  name: "groups"
+  type_id: 0x06433852
+  offset: 448
+}
+member {
+  id: 0x9301177f
+  name: "groups"
+  type_id: 0x06433852
+  offset: 64
+}
+member {
+  id: 0x93011a5c
+  name: "groups"
+  type_id: 0x06433852
+  offset: 128
+}
+member {
+  id: 0x93011a84
+  name: "groups"
+  type_id: 0x06433852
+  offset: 6400
+}
+member {
+  id: 0x93011aec
+  name: "groups"
+  type_id: 0x06433852
+  offset: 576
+}
+member {
+  id: 0x93302fc5
+  name: "groups"
+  type_id: 0x3776a166
+  offset: 128
+}
+member {
+  id: 0x9342d5c0
+  name: "groups"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x96631ccf
+  name: "grp"
+  type_id: 0x334c07d5
+  offset: 512
+}
+member {
+  id: 0x96bddb60
+  name: "grp"
+  type_id: 0xed8451a2
+  offset: 64
+}
+member {
+  id: 0x96bddf81
+  name: "grp"
+  type_id: 0xed8451a2
+}
+member {
+  id: 0x96eb7579
+  name: "grp"
+  type_id: 0xbb2a4815
+  offset: 64
+}
+member {
+  id: 0x6bc930d2
+  name: "grp_id"
+  type_id: 0xc9082b19
+  offset: 1728
+}
+member {
+  id: 0x105f6a85
+  name: "grp_list"
+  type_id: 0xd3c80119
+  offset: 576
+}
+member {
+  id: 0xba1b040e
+  name: "grphi"
+  type_id: 0x6720d32f
+  offset: 736
+}
+member {
+  id: 0xba1b0d5b
+  name: "grphi"
+  type_id: 0x6720d32f
+  offset: 928
+}
+member {
+  id: 0x8ab9b44b
+  name: "grpid"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x8ab9b968
+  name: "grpid"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0x74abc2ae
+  name: "grplo"
+  type_id: 0x6720d32f
+  offset: 704
+}
+member {
+  id: 0x74abca35
+  name: "grplo"
+  type_id: 0x6720d32f
+  offset: 896
+}
+member {
+  id: 0x55f3e00d
+  name: "grpmask"
+  type_id: 0x33756485
+  offset: 2752
+}
+member {
+  id: 0x55f3e08a
+  name: "grpmask"
+  type_id: 0x33756485
+  offset: 832
+}
+member {
+  id: 0x513a8d6d
+  name: "grpnum"
+  type_id: 0x295c7202
+  offset: 960
+}
+member {
+  id: 0xe0d914d3
+  name: "gso_max_segs"
+  type_id: 0x914dbfdc
+  offset: 18240
+}
+member {
+  id: 0x723feab2
+  name: "gso_max_size"
+  type_id: 0x4585663f
+  offset: 18176
+}
+member {
+  id: 0xa865e417
+  name: "gso_partial_features"
+  type_id: 0x2584a3b9
+  offset: 2240
+}
+member {
+  id: 0xcf0db7be
+  name: "gso_skb"
+  type_id: 0x578f9c2b
+  offset: 1024
+}
+member {
+  id: 0xf913a5b3
+  name: "gsquery"
+  type_id: 0x5d8155a5
+  offset: 1088
+}
+member {
+  id: 0x6f99e521
+  name: "gstrings"
+  type_id: 0xd3c80119
+  offset: 768
+}
+member {
+  id: 0x43e8174e
+  name: "gtf"
+  type_id: 0xe8034002
+  offset: 1088
+  bitsize: 1
+}
+member {
+  id: 0x57cf2507
+  name: "gtf2"
+  type_id: 0x2d7e0a72
+}
+member {
+  id: 0x1424892f
+  name: "gtime"
+  type_id: 0x92233392
+  offset: 3712
+}
+member {
+  id: 0x14248e95
+  name: "gtime"
+  type_id: 0x92233392
+  offset: 14720
+}
+member {
+  id: 0x92d68ed9
+  name: "gtk_rekey_failure"
+  type_id: 0x6d7f5ff6
+  offset: 24
+}
+member {
+  id: 0xc0d27302
+  name: "guard"
+  type_id: 0x0faae5b1
+}
+member {
+  id: 0xc4de146d
+  name: "guess_capacity"
+  type_id: 0x4585663f
+  offset: 2817
+  bitsize: 1
+}
+member {
+  id: 0xd014eabd
+  name: "guest_debug"
+  type_id: 0x33756485
+  offset: 512
+}
+member {
+  id: 0x57b4f0b1
+  name: "guest_debug_preserved"
+  type_id: 0x2d873b56
+  offset: 66752
+}
+member {
+  id: 0x3cad5ec0
+  name: "guid"
+  type_id: 0xedf277ba
+  offset: 64
+}
+member {
+  id: 0xa8b85168
+  name: "h"
+  type_id: 0x5ea40ae6
+  offset: 3008
+}
+member {
+  id: 0xa8e2bc23
+  name: "h"
+  type_id: 0x044ba8c8
+  offset: 64
+}
+member {
+  id: 0xee26074a
+  name: "h_dest"
+  type_id: 0xabf64f28
+  offset: 32
+}
+member {
+  id: 0xee3b3386
+  name: "h_dest"
+  type_id: 0xb6c106c1
+  offset: 16
+}
+member {
+  id: 0xee3b3d38
+  name: "h_dest"
+  type_id: 0xb6c106c1
+}
+member {
+  id: 0xc264e9e9
+  name: "h_ext"
+  type_id: 0xccef9d09
+  offset: 448
+}
+member {
+  id: 0x94d3952d
+  name: "h_list"
+  type_id: 0xd3c80119
+  offset: 704
+}
+member {
+  id: 0x94d399f9
+  name: "h_list"
+  type_id: 0xd3c80119
+  offset: 11904
+}
+member {
+  id: 0x031118bb
+  name: "h_load"
+  type_id: 0x33756485
+  offset: 2240
+}
+member {
+  id: 0x6b5f394b
+  name: "h_load_next"
+  type_id: 0x082be49e
+  offset: 2368
+}
+member {
+  id: 0xa82d27b6
+  name: "h_node"
+  type_id: 0xd3c80119
+  offset: 448
+}
+member {
+  id: 0xd105c10a
+  name: "h_nr_running"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0xe385c50b
+  name: "h_proto"
+  type_id: 0x7584e7da
+  offset: 96
+}
+member {
+  id: 0x93da7389
+  name: "h_source"
+  type_id: 0xb6c106c1
+  offset: 48
+}
+member {
+  id: 0x31f412b1
+  name: "h_u"
+  type_id: 0xec82d04c
+  offset: 32
+}
+member {
+  id: 0x330e242c
+  name: "ha"
+  type_id: 0x43acdd98
+  offset: 1344
+}
+member {
+  id: 0x7983f91d
+  name: "ha_lock"
+  type_id: 0x000ff4a8
+  offset: 1248
+}
+member {
+  id: 0x8e0bf6d7
+  name: "hactive"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x8e171597
+  name: "hactive"
+  type_id: 0xd5e60968
+  offset: 96
+}
+member {
+  id: 0x49a739b7
+  name: "hactive_hblank_hi"
+  type_id: 0x295c7202
+  offset: 16
+}
+member {
+  id: 0xc8b796c2
+  name: "hactive_lo"
+  type_id: 0x295c7202
+}
+member {
+  id: 0xae60b70a
+  name: "halg"
+  type_id: 0xb24f0745
+  offset: 1024
+}
+member {
+  id: 0x0e3de808
+  name: "halt_attempted_poll"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0xd7979ded
+  name: "halt_poll_fail_hist"
+  type_id: 0x70444415
+  offset: 2496
+}
+member {
+  id: 0x5e1d7f8d
+  name: "halt_poll_fail_ns"
+  type_id: 0x92233392
+  offset: 320
+}
+member {
+  id: 0x5f0d9541
+  name: "halt_poll_invalid"
+  type_id: 0x92233392
+  offset: 128
+}
+member {
+  id: 0xcffef03f
+  name: "halt_poll_ns"
+  type_id: 0x4585663f
+  offset: 1280
+}
+member {
+  id: 0x47baacc5
+  name: "halt_poll_success_hist"
+  type_id: 0x70444415
+  offset: 448
+}
+member {
+  id: 0xdc094b5c
+  name: "halt_poll_success_ns"
+  type_id: 0x92233392
+  offset: 256
+}
+member {
+  id: 0x0946dc8b
+  name: "halt_successful_poll"
+  type_id: 0x92233392
+}
+member {
+  id: 0x2665d054
+  name: "halt_wait_hist"
+  type_id: 0x70444415
+  offset: 4544
+}
+member {
+  id: 0xa1ad1dfd
+  name: "halt_wait_ns"
+  type_id: 0x92233392
+  offset: 384
+}
+member {
+  id: 0xe9b25d2a
+  name: "halt_wakeup"
+  type_id: 0x92233392
+  offset: 192
+}
+member {
+  id: 0xb805b270
+  name: "handle"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0xb805bbb2
+  name: "handle"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xb80b9f8f
+  name: "handle"
+  type_id: 0xe8034002
+  offset: 128
+}
+member {
+  id: 0xb80b9f9a
+  name: "handle"
+  type_id: 0xe8034002
+  offset: 400
+}
+member {
+  id: 0xb82a99c7
+  name: "handle"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0xb82a9a51
+  name: "handle"
+  type_id: 0xc9082b19
+  offset: 448
+}
+member {
+  id: 0xb8507a77
+  name: "handle"
+  type_id: 0xb3e7bac9
+  offset: 360
+}
+member {
+  id: 0xb87688ff
+  name: "handle"
+  type_id: 0x9519135f
+  offset: 64
+}
+member {
+  id: 0xb8ca2234
+  name: "handle"
+  type_id: 0x29bb2b33
+  offset: 7424
+}
+member {
+  id: 0xb8f5134f
+  name: "handle"
+  type_id: 0x16864222
+}
+member {
+  id: 0xf4a652d3
+  name: "handle_break"
+  type_id: 0x0ebd5484
+  offset: 1088
+}
+member {
+  id: 0xaff7e626
+  name: "handle_cachep"
+  type_id: 0x2efd5036
+  offset: 16384
+}
+member {
+  id: 0x566960e6
+  name: "handle_count"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x06f5eeb8
+  name: "handle_err"
+  type_id: 0x0e9a2b80
+  offset: 11520
+}
+member {
+  id: 0xc1c70b80
+  name: "handle_event"
+  type_id: 0x2c4c0247
+}
+member {
+  id: 0x86e3acc1
+  name: "handle_inode_event"
+  type_id: 0x2ffa59cf
+  offset: 64
+}
+member {
+  id: 0x22eb645a
+  name: "handle_interrupt"
+  type_id: 0x01367297
+  offset: 2560
+}
+member {
+  id: 0x72138c01
+  name: "handle_irq"
+  type_id: 0xb0c2eb21
+  offset: 896
+}
+member {
+  id: 0x728eb7c7
+  name: "handle_irq"
+  type_id: 0x2dfb782b
+  offset: 960
+}
+member {
+  id: 0x72a25545
+  name: "handle_irq"
+  type_id: 0x0110ab48
+  offset: 2560
+}
+member {
+  id: 0x33f92e8a
+  name: "handle_kick"
+  type_id: 0xb61e350c
+  offset: 2496
+}
+member {
+  id: 0x49a800a4
+  name: "handle_post_irq"
+  type_id: 0x2c7bd73f
+  offset: 1024
+}
+member {
+  id: 0x656db934
+  name: "handle_pre_irq"
+  type_id: 0x2c7bd73f
+  offset: 960
+}
+member {
+  id: 0x98764b70
+  name: "handle_rsc"
+  type_id: 0x2fa483c8
+  offset: 576
+}
+member {
+  id: 0xf91dda73
+  name: "handler"
+  type_id: 0x47c11668
+}
+member {
+  id: 0xf92a6960
+  name: "handler"
+  type_id: 0x70751a0e
+  offset: 1024
+}
+member {
+  id: 0xf941b37c
+  name: "handler"
+  type_id: 0x1ba8b228
+  offset: 256
+}
+member {
+  id: 0xf957a9ba
+  name: "handler"
+  type_id: 0x0db63e90
+  offset: 64
+}
+member {
+  id: 0xf957acc9
+  name: "handler"
+  type_id: 0x0db63e90
+  offset: 384
+}
+member {
+  id: 0xf95877f3
+  name: "handler"
+  type_id: 0x026c3dea
+  offset: 256
+}
+member {
+  id: 0xf95e4946
+  name: "handler"
+  type_id: 0x045ea05c
+  offset: 4224
+}
+member {
+  id: 0xf96a116e
+  name: "handler"
+  type_id: 0x300966b8
+  offset: 19136
+}
+member {
+  id: 0xf9770229
+  name: "handler"
+  type_id: 0x2d194ccc
+}
+member {
+  id: 0xf977bf92
+  name: "handler"
+  type_id: 0x2da4f7fd
+}
+member {
+  id: 0xf978c225
+  name: "handler"
+  type_id: 0x22d082e5
+  offset: 128
+}
+member {
+  id: 0xf9833078
+  name: "handler"
+  type_id: 0xd92b1d75
+}
+member {
+  id: 0xf98330d3
+  name: "handler"
+  type_id: 0xd92b1d75
+  offset: 256
+}
+member {
+  id: 0xf9ca6e5d
+  name: "handler"
+  type_id: 0x907538bd
+}
+member {
+  id: 0xf9ead752
+  name: "handler"
+  type_id: 0xb0c2eb21
+  offset: 1152
+}
+member {
+  id: 0xf9ead82c
+  name: "handler"
+  type_id: 0xb0c2eb21
+  offset: 2560
+}
+member {
+  id: 0xf9ead925
+  name: "handler"
+  type_id: 0xb0c2eb21
+  offset: 256
+}
+member {
+  id: 0xa191b952
+  name: "handler_count"
+  type_id: 0xf435685e
+  offset: 192
+}
+member {
+  id: 0x5703cbe9
+  name: "handler_data"
+  type_id: 0x18bd6530
+  offset: 19200
+}
+member {
+  id: 0x5703cd54
+  name: "handler_data"
+  type_id: 0x18bd6530
+  offset: 320
+}
+member {
+  id: 0x5703ce72
+  name: "handler_data"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0x3b82ac3f
+  name: "handler_name"
+  type_id: 0x3e10b518
+  offset: 384
+}
+member {
+  id: 0x8018aab6
+  name: "handler_priv"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0xc4ad1767
+  name: "handler_token"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0xef0accef
+  name: "handlers"
+  type_id: 0x3af1bd6d
+  offset: 256
+}
+member {
+  id: 0xb8284e4d
+  name: "handles"
+  type_id: 0xb5c6bcdb
+  offset: 160
+}
+member {
+  id: 0xb876105c
+  name: "handles"
+  type_id: 0xeb923a9b
+  offset: 448
+}
+member {
+  id: 0x85fded81
+  name: "handoff_set"
+  type_id: 0x6d7f5ff6
+  offset: 320
+}
+member {
+  id: 0x57b0ce70
+  name: "handshake_seq"
+  type_id: 0x1dd8e392
+  offset: 64
+}
+member {
+  id: 0x5b9eadfb
+  name: "hang_detected"
+  type_id: 0x4585663f
+  offset: 130
+  bitsize: 1
+}
+member {
+  id: 0x99975b4a
+  name: "hangup"
+  type_id: 0x0c59c5c5
+  offset: 704
+}
+member {
+  id: 0x99975bb3
+  name: "hangup"
+  type_id: 0x0c59c5c5
+  offset: 1216
+}
+member {
+  id: 0x8cfbac22
+  name: "hangup_work"
+  type_id: 0x1f3c8679
+  offset: 5184
+}
+member {
+  id: 0xc5dbda47
+  name: "hard_add_expires_seconds"
+  type_id: 0xedf277ba
+  offset: 320
+}
+member {
+  id: 0x6dbede14
+  name: "hard_block_reasons"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x22c57758
+  name: "hard_byte_limit"
+  type_id: 0xedf277ba
+  offset: 64
+}
+member {
+  id: 0xe701dc68
+  name: "hard_header_len"
+  type_id: 0xc93e017b
+  offset: 1776
+}
+member {
+  id: 0xb7653122
+  name: "hard_mtu"
+  type_id: 0xc9082b19
+  offset: 2208
+}
+member {
+  id: 0x195dbd54
+  name: "hard_packet_limit"
+  type_id: 0xedf277ba
+  offset: 192
+}
+member {
+  id: 0x62164ebf
+  name: "hard_reset_count"
+  type_id: 0x4585663f
+  offset: 7872
+}
+member {
+  id: 0x30d53623
+  name: "hard_use_expires_seconds"
+  type_id: 0xedf277ba
+  offset: 448
+}
+member {
+  id: 0x10408836
+  name: "hardlink_flags"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xa4a87cc7
+  name: "hardware_entry_failure_reason"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x6364e5fc
+  name: "hardware_exit_reason"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x7a882c59
+  name: "hardware_test"
+  type_id: 0x2c494e22
+  offset: 192
+}
+member {
+  id: 0xeee91e70
+  name: "has_alpha"
+  type_id: 0x6d7f5ff6
+  offset: 160
+}
+member {
+  id: 0x0bf1485d
+  name: "has_amcc_usb23"
+  type_id: 0x4585663f
+  offset: 5607
+  bitsize: 1
+}
+member {
+  id: 0x7760f0a7
+  name: "has_arg"
+  type_id: 0x6d7f5ff6
+  offset: 192
+}
+member {
+  id: 0x7b9cb4ec
+  name: "has_async_transaction"
+  type_id: 0x6d7f5ff6
+  offset: 856
+}
+member {
+  id: 0x5d4925a5
+  name: "has_attr"
+  type_id: 0x2ee94408
+  offset: 448
+}
+member {
+  id: 0x698e14ba
+  name: "has_blocked_load"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0xdabea839
+  name: "has_callchain_buf"
+  type_id: 0x914dbfdc
+  offset: 25
+  bitsize: 1
+}
+member {
+  id: 0x8db377e7
+  name: "has_changed"
+  type_id: 0x4585663f
+  offset: 418
+  bitsize: 1
+}
+member {
+  id: 0xd9407919
+  name: "has_child_subreaper"
+  type_id: 0x4585663f
+  offset: 1025
+  bitsize: 1
+}
+member {
+  id: 0x0f2de2c4
+  name: "has_conns"
+  type_id: 0x4585663f
+  offset: 257
+  bitsize: 1
+}
+member {
+  id: 0x09d5d38f
+  name: "has_cycles"
+  type_id: 0x6d7f5ff6
+  offset: 45768
+}
+member {
+  id: 0x907f5a56
+  name: "has_direct_lpi"
+  type_id: 0x6d7f5ff6
+  offset: 368
+}
+member {
+  id: 0xa182581f
+  name: "has_eht"
+  type_id: 0x6d7f5ff6
+}
+member {
+  id: 0x9b8caf0a
+  name: "has_elevator"
+  type_id: 0x6d7f5ff6
+  offset: 168
+}
+member {
+  id: 0x1c49b133
+  name: "has_evfd"
+  type_id: 0x4585663f
+  offset: 262
+  bitsize: 1
+}
+member {
+  id: 0xa56ce0b4
+  name: "has_fixups"
+  type_id: 0x4585663f
+  offset: 9252
+  bitsize: 1
+}
+member {
+  id: 0x534977b7
+  name: "has_frame_counter"
+  type_id: 0x6d7f5ff6
+}
+member {
+  id: 0x878e979e
+  name: "has_fsl_hs_errata"
+  type_id: 0x4585663f
+  offset: 5602
+  bitsize: 1
+}
+member {
+  id: 0x5202a45d
+  name: "has_fsl_port_bug"
+  type_id: 0x4585663f
+  offset: 5601
+  bitsize: 1
+}
+member {
+  id: 0xd4947d27
+  name: "has_fsl_susp_errata"
+  type_id: 0x4585663f
+  offset: 5603
+  bitsize: 1
+}
+member {
+  id: 0xe70f847a
+  name: "has_hdmi_infoframe"
+  type_id: 0x6d7f5ff6
+  offset: 368
+}
+member {
+  id: 0x929fd826
+  name: "has_he"
+  type_id: 0x6d7f5ff6
+}
+member {
+  id: 0x739a04c3
+  name: "has_hostpc"
+  type_id: 0x4585663f
+  offset: 5696
+  bitsize: 1
+}
+member {
+  id: 0x8aa30e2d
+  name: "has_idle_cores"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x7b74bdb9
+  name: "has_iommu"
+  type_id: 0x6d7f5ff6
+  offset: 10112
+}
+member {
+  id: 0xe8372eb1
+  name: "has_itree"
+  type_id: 0x6d7f5ff6
+  offset: 64
+}
+member {
+  id: 0x557bdab2
+  name: "has_its"
+  type_id: 0x6d7f5ff6
+  offset: 832
+}
+member {
+  id: 0xe114c970
+  name: "has_ld_abs"
+  type_id: 0x6d7f5ff6
+  offset: 96
+}
+member {
+  id: 0x59400335
+  name: "has_msi_ctrl"
+  type_id: 0x6d7f5ff6
+  bitsize: 1
+}
+member {
+  id: 0xa6070b52
+  name: "has_pad_interdep"
+  type_id: 0x3491860b
+  offset: 192
+}
+member {
+  id: 0xa478e8fb
+  name: "has_perm"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0xe77408cb
+  name: "has_ppcd"
+  type_id: 0x4585663f
+  offset: 5698
+  bitsize: 1
+}
+member {
+  id: 0x4b4f130b
+  name: "has_provider"
+  type_id: 0x6d7f5ff6
+  offset: 10304
+}
+member {
+  id: 0x11c79ca4
+  name: "has_rss"
+  type_id: 0x6d7f5ff6
+  offset: 832
+}
+member {
+  id: 0xdda2b370
+  name: "has_rvpeid"
+  type_id: 0x6d7f5ff6
+  offset: 360
+}
+member {
+  id: 0x75f4e5e7
+  name: "has_second_set"
+  type_id: 0x6d7f5ff6
+  offset: 256
+}
+member {
+  id: 0xe911a8e8
+  name: "has_stable_inodes"
+  type_id: 0x3757c9e4
+  offset: 384
+}
+member {
+  id: 0x404ad063
+  name: "has_stopped"
+  type_id: 0x6d7f5ff6
+  offset: 200
+}
+member {
+  id: 0x54e3cd2b
+  name: "has_strong_ref"
+  type_id: 0x295c7202
+  bitsize: 1
+}
+member {
+  id: 0x0e91ce78
+  name: "has_synopsys_hc_bug"
+  type_id: 0x4585663f
+  offset: 5611
+  bitsize: 1
+}
+member {
+  id: 0x7119c2a6
+  name: "has_sysrq"
+  type_id: 0x5d8155a5
+  offset: 2848
+}
+member {
+  id: 0xc6e2bbdc
+  name: "has_tail_call"
+  type_id: 0x6d7f5ff6
+  offset: 80
+}
+member {
+  id: 0x15986526
+  name: "has_tdi_phy_lpm"
+  type_id: 0x4585663f
+  offset: 5697
+  bitsize: 1
+}
+member {
+  id: 0x0e565aaf
+  name: "has_tile"
+  type_id: 0x6d7f5ff6
+  offset: 14976
+}
+member {
+  id: 0xbd3fd9cc
+  name: "has_timeout"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0xb5f94af8
+  name: "has_tt"
+  type_id: 0x4585663f
+  offset: 3367
+  bitsize: 1
+}
+member {
+  id: 0xfa50e7db
+  name: "has_v4"
+  type_id: 0x6d7f5ff6
+  offset: 112
+}
+member {
+  id: 0xd98bc305
+  name: "has_vlpis"
+  type_id: 0x6d7f5ff6
+  offset: 352
+}
+member {
+  id: 0xc04ca023
+  name: "has_volatiles"
+  type_id: 0x4585663f
+  offset: 426
+  bitsize: 1
+}
+member {
+  id: 0x7a9a4a81
+  name: "has_vpend_valid_dirty"
+  type_id: 0x6d7f5ff6
+  offset: 376
+}
+member {
+  id: 0xa3de0879
+  name: "has_weak_ref"
+  type_id: 0x295c7202
+  offset: 2
+  bitsize: 1
+}
+member {
+  id: 0xdf232b09
+  name: "has_wmm"
+  type_id: 0x6d7f5ff6
+  offset: 736
+}
+member {
+  id: 0x4e53e9b0
+  name: "has_work"
+  type_id: 0x3719a0ef
+  offset: 960
+}
+member {
+  id: 0x6300a4a2
+  name: "hash"
+  type_id: 0x3e2fe44b
+  offset: 192
+}
+member {
+  id: 0x630df6eb
+  name: "hash"
+  type_id: 0x33756485
+}
+member {
+  id: 0x6312ad4e
+  name: "hash"
+  type_id: 0x2c24424a
+  offset: 1344
+}
+member {
+  id: 0x631a817a
+  name: "hash"
+  type_id: 0x2408766a
+  offset: 1344
+}
+member {
+  id: 0x6339472a
+  name: "hash"
+  type_id: 0x07cd6778
+  offset: 128
+}
+member {
+  id: 0x633ca502
+  name: "hash"
+  type_id: 0x02268d94
+}
+member {
+  id: 0x63772379
+  name: "hash"
+  type_id: 0x49a73111
+  offset: 320
+}
+member {
+  id: 0x637724be
+  name: "hash"
+  type_id: 0x49a73111
+}
+member {
+  id: 0x637b019e
+  name: "hash"
+  type_id: 0x4585663f
+  offset: 448
+}
+member {
+  id: 0x63d8a0d0
+  name: "hash"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0x63ed4b8e
+  name: "hash"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0x63f7869f
+  name: "hash"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x63f78ba4
+  name: "hash"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xdc0d2a9d
+  name: "hash2"
+  type_id: 0x02268d94
+  offset: 64
+}
+member {
+  id: 0x13cc7c9a
+  name: "hash_alg"
+  type_id: 0x2d6793d4
+}
+member {
+  id: 0x637c436d
+  name: "hash_algo"
+  type_id: 0x3e10b518
+  offset: 128
+}
+member {
+  id: 0x637c4dd8
+  name: "hash_algo"
+  type_id: 0x3e10b518
+  offset: 448
+}
+member {
+  id: 0xf67f55a9
+  name: "hash_bits"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x20de0012
+  name: "hash_block_verified"
+  type_id: 0x064d6086
+  offset: 2048
+}
+member {
+  id: 0x88b6db32
+  name: "hash_buckets"
+  type_id: 0x086a94c1
+}
+member {
+  id: 0xe1e55d14
+  name: "hash_grows"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x81ca0028
+  name: "hash_len"
+  type_id: 0x92233392
+}
+member {
+  id: 0xdd1ec491
+  name: "hash_map"
+  type_id: 0x3e2fe44b
+  offset: 8192
+}
+member {
+  id: 0xa31ad885
+  name: "hash_mix"
+  type_id: 0xc9082b19
+  offset: 2560
+}
+member {
+  id: 0x64224310
+  name: "hash_node"
+  type_id: 0x49a73111
+  offset: 6080
+}
+member {
+  id: 0x64224775
+  name: "hash_node"
+  type_id: 0x49a73111
+  offset: 192
+}
+member {
+  id: 0x64224fbc
+  name: "hash_node"
+  type_id: 0x49a73111
+}
+member {
+  id: 0x9a516c95
+  name: "hash_page_init_lock"
+  type_id: 0xf313e71a
+  offset: 2112
+}
+member {
+  id: 0x8d38ad20
+  name: "hash_rnd"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x8d446ed5
+  name: "hash_rnd"
+  type_id: 0xb5c6bcdb
+  offset: 96
+}
+member {
+  id: 0xbbd4f799
+  name: "hash_shift"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x4004bf96
+  name: "hash_tail"
+  type_id: 0x31d34410
+  offset: 1472
+}
+member {
+  id: 0x3af23505
+  name: "hash_threshold"
+  type_id: 0x6d7f5ff6
+  offset: 88
+}
+member {
+  id: 0x5c144d3c
+  name: "hashes_per_block"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0x4f0ed235
+  name: "hashfn"
+  type_id: 0x11a71cb1
+  offset: 128
+}
+member {
+  id: 0x2120b303
+  name: "hashinfo"
+  type_id: 0x1f48062a
+  offset: 512
+}
+member {
+  id: 0x2120b81b
+  name: "hashinfo"
+  type_id: 0x1f48062a
+}
+member {
+  id: 0x0f1ed096
+  name: "hashstate"
+  type_id: 0x3f0185ef
+  offset: 64
+}
+member {
+  id: 0x21a14485
+  name: "hat_dir"
+  type_id: 0x901eaf6a
+  offset: 152
+}
+member {
+  id: 0xb327fb86
+  name: "hat_max"
+  type_id: 0x901eaf6a
+  offset: 144
+}
+member {
+  id: 0xf6527f43
+  name: "hat_min"
+  type_id: 0x901eaf6a
+  offset: 136
+}
+member {
+  id: 0x830e03a6
+  name: "have_conn_info"
+  type_id: 0xe8034002
+  offset: 32
+}
+member {
+  id: 0xa4fec0e3
+  name: "have_execfd"
+  type_id: 0x4585663f
+  offset: 320
+  bitsize: 1
+}
+member {
+  id: 0xbf831cb1
+  name: "have_langid"
+  type_id: 0x4585663f
+  offset: 11179
+  bitsize: 1
+}
+member {
+  id: 0x465db837
+  name: "hba_enable_delay_us"
+  type_id: 0x914dbfdc
+  offset: 640
+}
+member {
+  id: 0x7a0bb21a
+  name: "hback_porch"
+  type_id: 0xd5e60968
+  offset: 288
+}
+member {
+  id: 0x7a175123
+  name: "hback_porch"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0xfdd2cff1
+  name: "hbackporch"
+  type_id: 0xe62ebf07
+  offset: 256
+}
+member {
+  id: 0xba5e974e
+  name: "hblank_lo"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0x52341f49
+  name: "hborder"
+  type_id: 0x295c7202
+  offset: 104
+}
+member {
+  id: 0xf8ffd9ad
+  name: "hbp_break"
+  type_id: 0x4b404166
+  offset: 128
+}
+member {
+  id: 0x8283c1cd
+  name: "hbp_watch"
+  type_id: 0x4b404166
+  offset: 1152
+}
+member {
+  id: 0x63ea5795
+  name: "hbs"
+  type_id: 0x246c8973
+}
+member {
+  id: 0x1f0c7c43
+  name: "hc_capbase"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x1fcede18
+  name: "hc_capbase"
+  type_id: 0x0baa70a7
+}
+member {
+  id: 0xa3904702
+  name: "hc_erase_size"
+  type_id: 0x4585663f
+  offset: 352
+}
+member {
+  id: 0xe31cbd4e
+  name: "hc_erase_timeout"
+  type_id: 0x4585663f
+  offset: 384
+}
+member {
+  id: 0xd9db4be5
+  name: "hcall"
+  type_id: 0x033c2bb8
+}
+member {
+  id: 0xd9dce494
+  name: "hcall"
+  type_id: 0x04935a3e
+}
+member {
+  id: 0x4f00ad96
+  name: "hcc_params"
+  type_id: 0xe62ebf07
+  offset: 544
+}
+member {
+  id: 0x4f2f813c
+  name: "hcc_params"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x4fed2e44
+  name: "hcc_params"
+  type_id: 0x0baa70a7
+  offset: 128
+}
+member {
+  id: 0x6e26e18d
+  name: "hcc_params2"
+  type_id: 0xe62ebf07
+  offset: 576
+}
+member {
+  id: 0x6ecb6f14
+  name: "hcc_params2"
+  type_id: 0x0baa70a7
+  offset: 224
+}
+member {
+  id: 0x0efdd18e
+  name: "hcd"
+  type_id: 0x25782362
+  offset: 128
+}
+member {
+  id: 0xcb5bf6cb
+  name: "hcd_portnum"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0xe8de00d5
+  name: "hcd_priv"
+  type_id: 0xc8e4d7d1
+  offset: 5760
+}
+member {
+  id: 0x5446949f
+  name: "hcd_priv_size"
+  type_id: 0xf435685e
+  offset: 128
+}
+member {
+  id: 0x7dea403f
+  name: "hce_enable_notify"
+  type_id: 0x2dc23571
+  offset: 384
+}
+member {
+  id: 0x48078053
+  name: "hchan"
+  type_id: 0x2ac89539
+  offset: 64
+}
+member {
+  id: 0x1a86e157
+  name: "hci_reader_gate"
+  type_id: 0x295c7202
+  offset: 504
+}
+member {
+  id: 0x17dd5b60
+  name: "hci_rev"
+  type_id: 0xe8034002
+  offset: 5984
+}
+member {
+  id: 0x9262a5ee
+  name: "hci_ver"
+  type_id: 0xb3e7bac9
+  offset: 5968
+}
+member {
+  id: 0xa85d8bdf
+  name: "hci_version"
+  type_id: 0x914dbfdc
+  offset: 656
+}
+member {
+  id: 0x44415b23
+  name: "hcon"
+  type_id: 0x2b0e3ff1
+}
+member {
+  id: 0x7680e4b6
+  name: "hcpriv"
+  type_id: 0x18bd6530
+  offset: 320
+}
+member {
+  id: 0x7680e790
+  name: "hcpriv"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0x7680eab3
+  name: "hcpriv"
+  type_id: 0x18bd6530
+  offset: 128
+}
+member {
+  id: 0xc4593e51
+  name: "hcr_el2"
+  type_id: 0x92233392
+  offset: 14848
+}
+member {
+  id: 0xd39b1380
+  name: "hcs_params"
+  type_id: 0xe62ebf07
+  offset: 1728
+}
+member {
+  id: 0xd3b43f0a
+  name: "hcs_params"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x7936ca19
+  name: "hcs_params1"
+  type_id: 0x0baa70a7
+  offset: 32
+}
+member {
+  id: 0x79db449a
+  name: "hcs_params1"
+  type_id: 0xe62ebf07
+  offset: 448
+}
+member {
+  id: 0x3975a895
+  name: "hcs_params2"
+  type_id: 0x0baa70a7
+  offset: 64
+}
+member {
+  id: 0x3998290b
+  name: "hcs_params2"
+  type_id: 0xe62ebf07
+  offset: 480
+}
+member {
+  id: 0xfb649655
+  name: "hcs_params3"
+  type_id: 0xe62ebf07
+  offset: 512
+}
+member {
+  id: 0xfb891001
+  name: "hcs_params3"
+  type_id: 0x0baa70a7
+  offset: 96
+}
+member {
+  id: 0x57a5cb93
+  name: "hctx"
+  type_id: 0x2208f89a
+  offset: 384
+}
+member {
+  id: 0xdaffaec8
+  name: "hctx_debugfs_attrs"
+  type_id: 0x30791928
+  offset: 2240
+}
+member {
+  id: 0x224d7a2a
+  name: "hctx_list"
+  type_id: 0xd3c80119
+  offset: 4480
+}
+member {
+  id: 0x4a9127b4
+  name: "hctx_table"
+  type_id: 0x80c20070
+  offset: 576
+}
+member {
+  id: 0xe26671a7
+  name: "hctxs"
+  type_id: 0x1a47cb12
+  offset: 640
+}
+member {
+  id: 0x5c264ac1
+  name: "hdata"
+  type_id: 0x6ece91e0
+}
+member {
+  id: 0xa14fe9fd
+  name: "hdcp_content_type"
+  type_id: 0x4585663f
+  offset: 864
+}
+member {
+  id: 0xf1555b7b
+  name: "hdcp_content_type_property"
+  type_id: 0x2a670b41
+  offset: 9408
+}
+member {
+  id: 0xaf38e1a7
+  name: "hdev"
+  type_id: 0x1dc3d428
+  offset: 128
+}
+member {
+  id: 0xaf38e467
+  name: "hdev"
+  type_id: 0x1dc3d428
+  offset: 16320
+}
+member {
+  id: 0x6b10d6d5
+  name: "hdev_flags"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0xc429f5c2
+  name: "hdev_init"
+  type_id: 0x0f7fad31
+  offset: 320
+}
+member {
+  id: 0xa3a50723
+  name: "hdisplay"
+  type_id: 0xe8034002
+  offset: 32
+}
+member {
+  id: 0xa3dc49dc
+  name: "hdisplay"
+  type_id: 0x914dbfdc
+  offset: 32
+}
+member {
+  id: 0xc6956a9e
+  name: "hdiv"
+  type_id: 0x295c7202
+  offset: 88
+}
+member {
+  id: 0xc6008baa
+  name: "hdmi"
+  type_id: 0xdd6fea91
+}
+member {
+  id: 0xc63cb668
+  name: "hdmi"
+  type_id: 0xe1555fa3
+  offset: 448
+}
+member {
+  id: 0x596a1b85
+  name: "hdmi_dev"
+  type_id: 0x0258f96e
+  offset: 576
+}
+member {
+  id: 0x60e10937
+  name: "hdmi_type1"
+  type_id: 0xc84a0499
+}
+member {
+  id: 0x5f99e632
+  name: "hdmi_vic"
+  type_id: 0xb3e7bac9
+  offset: 616
+}
+member {
+  id: 0x2b087910
+  name: "hdr"
+  type_id: 0x2c6930c3
+  offset: 32
+}
+member {
+  id: 0x2b104951
+  name: "hdr"
+  type_id: 0x34544a3f
+}
+member {
+  id: 0x2b9cf3b8
+  name: "hdr"
+  type_id: 0xb8eea35a
+}
+member {
+  id: 0x2bd33bea
+  name: "hdr"
+  type_id: 0xf7276340
+  offset: 384
+}
+member {
+  id: 0x2bea5e2a
+  name: "hdr"
+  type_id: 0xce433191
+}
+member {
+  id: 0x9b184179
+  name: "hdr_cap"
+  type_id: 0x295c7202
+  offset: 96
+}
+member {
+  id: 0x4f9872e5
+  name: "hdr_len"
+  type_id: 0x914dbfdc
+  offset: 464
+}
+member {
+  id: 0x4fe13bd1
+  name: "hdr_len"
+  type_id: 0xe8034002
+  offset: 976
+}
+member {
+  id: 0x4fef1f8b
+  name: "hdr_len"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xa5148fc1
+  name: "hdr_output_metadata"
+  type_id: 0x343ebce3
+  offset: 1152
+}
+member {
+  id: 0x3ba10298
+  name: "hdr_output_metadata_property"
+  type_id: 0x2a670b41
+  offset: 9280
+}
+member {
+  id: 0x3021fa6d
+  name: "hdr_sink_metadata"
+  type_id: 0xb7cd5fb5
+  offset: 15296
+}
+member {
+  id: 0x6d657971
+  name: "hdr_type"
+  type_id: 0x295c7202
+  offset: 584
+}
+member {
+  id: 0x6d657b12
+  name: "hdr_type"
+  type_id: 0x295c7202
+  offset: 480
+}
+member {
+  id: 0xd6dc741c
+  name: "hdrlen"
+  type_id: 0x6720d32f
+  offset: 160
+}
+member {
+  id: 0x43720648
+  name: "hdrsize"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x62a47f0c
+  name: "he_6ghz_capa"
+  type_id: 0x4c7077ef
+  offset: 456
+}
+member {
+  id: 0x151c08ba
+  name: "he_cap"
+  type_id: 0x081133cf
+  offset: 16
+}
+member {
+  id: 0x68f375dd
+  name: "he_cap_elem"
+  type_id: 0xad549560
+  offset: 8
+}
+member {
+  id: 0xb2c93231
+  name: "he_mcs_nss_supp"
+  type_id: 0x99a5bef5
+  offset: 144
+}
+member {
+  id: 0xb50434c6
+  name: "head"
+  type_id: 0x5e8dc7f4
+}
+member {
+  id: 0xb5050c90
+  name: "head"
+  type_id: 0x5fb59157
+}
+member {
+  id: 0xb51f3196
+  name: "head"
+  type_id: 0x4585663f
+  offset: 81920
+}
+member {
+  id: 0xb51f34c9
+  name: "head"
+  type_id: 0x4585663f
+  offset: 768
+}
+member {
+  id: 0xb51f3c67
+  name: "head"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xb53d9979
+  name: "head"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0xb53d9b24
+  name: "head"
+  type_id: 0x6720d32f
+  offset: 32768
+}
+member {
+  id: 0xb53d9d33
+  name: "head"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0xb5410326
+  name: "head"
+  type_id: 0x1bb6a471
+  offset: 4224
+}
+member {
+  id: 0xb54104bd
+  name: "head"
+  type_id: 0x1bb6a471
+  offset: 512
+}
+member {
+  id: 0xb5410b44
+  name: "head"
+  type_id: 0x1bb6a471
+  offset: 64
+}
+member {
+  id: 0xb5410fa5
+  name: "head"
+  type_id: 0x1bb6a471
+}
+member {
+  id: 0xb5474e48
+  name: "head"
+  type_id: 0x1df06cce
+  offset: 1728
+}
+member {
+  id: 0xb54aa37b
+  name: "head"
+  type_id: 0x101a7aa5
+}
+member {
+  id: 0xb54d95a7
+  name: "head"
+  type_id: 0x172847a8
+  offset: 64
+}
+member {
+  id: 0xb54f1a01
+  name: "head"
+  type_id: 0x15a30023
+}
+member {
+  id: 0xb55bb0e7
+  name: "head"
+  type_id: 0x0109e669
+}
+member {
+  id: 0xb55f493d
+  name: "head"
+  type_id: 0x05f8f5c5
+  offset: 192
+}
+member {
+  id: 0xb55ff289
+  name: "head"
+  type_id: 0x054f691a
+  offset: 64
+}
+member {
+  id: 0xb55ff668
+  name: "head"
+  type_id: 0x054f691a
+}
+member {
+  id: 0xb564dfd9
+  name: "head"
+  type_id: 0x3e6239e1
+  offset: 64
+}
+member {
+  id: 0xb568e1b3
+  name: "head"
+  type_id: 0x3258b271
+}
+member {
+  id: 0xb569c884
+  name: "head"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xb569cc65
+  name: "head"
+  type_id: 0x33756485
+}
+member {
+  id: 0xb56fc008
+  name: "head"
+  type_id: 0x357909b2
+}
+member {
+  id: 0xb5732287
+  name: "head"
+  type_id: 0x299c4193
+  offset: 320
+}
+member {
+  id: 0xb573e848
+  name: "head"
+  type_id: 0x295c7202
+  offset: 32
+}
+member {
+  id: 0xb57b63c2
+  name: "head"
+  type_id: 0x21de2259
+  offset: 64
+}
+member {
+  id: 0xb5897092
+  name: "head"
+  type_id: 0xd3c80119
+  offset: 384
+}
+member {
+  id: 0xb5897100
+  name: "head"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0xb58971ab
+  name: "head"
+  type_id: 0xd3c80119
+  offset: 256
+}
+member {
+  id: 0xb58975e1
+  name: "head"
+  type_id: 0xd3c80119
+  offset: 64
+}
+member {
+  id: 0xb5897677
+  name: "head"
+  type_id: 0xd3c80119
+  offset: 448
+}
+member {
+  id: 0xb58978c2
+  name: "head"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0xb5897a18
+  name: "head"
+  type_id: 0xd3c80119
+  offset: 512
+}
+member {
+  id: 0xb5897f42
+  name: "head"
+  type_id: 0xd3c80119
+  offset: 2112
+}
+member {
+  id: 0xb593b12a
+  name: "head"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xb5b2ba41
+  name: "head"
+  type_id: 0xe8034002
+}
+member {
+  id: 0xb5b2be96
+  name: "head"
+  type_id: 0xe8034002
+  offset: 176
+}
+member {
+  id: 0xb5b99036
+  name: "head"
+  type_id: 0xe3222f5b
+  offset: 512
+}
+member {
+  id: 0xb5b99b2e
+  name: "head"
+  type_id: 0xe3222f5b
+}
+member {
+  id: 0xb5b99d57
+  name: "head"
+  type_id: 0xe3222f5b
+  offset: 640
+}
+member {
+  id: 0xb5c8f00c
+  name: "head"
+  type_id: 0x9249a64d
+  offset: 256
+}
+member {
+  id: 0xb5e76888
+  name: "head"
+  type_id: 0xbdd18903
+}
+member {
+  id: 0x61e179fc
+  name: "head_file"
+  type_id: 0xd3c80119
+  offset: 448
+}
+member {
+  id: 0x9f51d5ee
+  name: "head_frag"
+  type_id: 0xb3e7bac9
+  offset: 1013
+  bitsize: 1
+}
+member {
+  id: 0x79710f0d
+  name: "head_global"
+  type_id: 0xd3c80119
+  offset: 320
+}
+member {
+  id: 0x73c95d3b
+  name: "head_node"
+  type_id: 0xb0510713
+  offset: 192
+}
+member {
+  id: 0x226ed7b2
+  name: "head_offset"
+  type_id: 0x914dbfdc
+  offset: 48
+}
+member {
+  id: 0x77aa80a9
+  name: "head_page"
+  type_id: 0x33b88d23
+  offset: 512
+}
+member {
+  id: 0x77aa8378
+  name: "head_page"
+  type_id: 0x33b88d23
+  offset: 192
+}
+member {
+  id: 0xef188232
+  name: "header"
+  type_id: 0x34544a3f
+  offset: 192
+}
+member {
+  id: 0xef42e319
+  name: "header"
+  type_id: 0x6e3da889
+}
+member {
+  id: 0xef540d40
+  name: "header"
+  type_id: 0x78d3f191
+}
+member {
+  id: 0xefaac05f
+  name: "header"
+  type_id: 0x861a0f9a
+  offset: 64
+}
+member {
+  id: 0xefb70ab0
+  name: "header"
+  type_id: 0x9bd401b6
+}
+member {
+  id: 0xefc2b725
+  name: "header"
+  type_id: 0xee699492
+}
+member {
+  id: 0xefd7cf7f
+  name: "header"
+  type_id: 0xfb11ce60
+}
+member {
+  id: 0xd44b0645
+  name: "header_bit_size"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x7a0a40c1
+  name: "header_len"
+  type_id: 0xc93e017b
+  offset: 480
+}
+member {
+  id: 0x7aa45c87
+  name: "header_len"
+  type_id: 0x6720d32f
+  offset: 224
+}
+member {
+  id: 0x8e312365
+  name: "header_ops"
+  type_id: 0x3407aa14
+  offset: 4288
+}
+member {
+  id: 0x8e3e63cf
+  name: "header_ops"
+  type_id: 0x3b40190b
+  offset: 320
+}
+member {
+  id: 0xf6729aba
+  name: "header_size"
+  type_id: 0x914dbfdc
+  offset: 2752
+}
+member {
+  id: 0x61467847
+  name: "headers"
+  type_id: 0x0524ca5a
+}
+member {
+  id: 0x3e17b5ef
+  name: "headroom"
+  type_id: 0xe8034002
+  offset: 32
+}
+member {
+  id: 0x3e36b9b9
+  name: "headroom"
+  type_id: 0xc9082b19
+  offset: 1568
+}
+member {
+  id: 0x3e36ba7d
+  name: "headroom"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0x3e6ef2b7
+  name: "headroom"
+  type_id: 0x914dbfdc
+  offset: 80
+}
+member {
+  id: 0xdcbe69b8
+  name: "heads"
+  type_id: 0x5d8155a5
+}
+member {
+  id: 0xdcc859e0
+  name: "heads"
+  type_id: 0x2bbf9982
+  offset: 142080
+}
+member {
+  id: 0xdce81c97
+  name: "heads"
+  type_id: 0x0bf6beaf
+  offset: 1216
+}
+member {
+  id: 0xba4fbdbe
+  name: "heads_cnt"
+  type_id: 0xc9082b19
+  offset: 896
+}
+member {
+  id: 0x049198e2
+  name: "heap"
+  type_id: 0x0de3ba50
+  offset: 3520
+}
+member {
+  id: 0xd78582b0
+  name: "heap_cdev"
+  type_id: 0x5f766fc6
+  offset: 384
+}
+member {
+  id: 0x2f8cdd80
+  name: "heap_default"
+  type_id: 0x6bdac314
+  offset: 3584
+}
+member {
+  id: 0x2c715c00
+  name: "heap_dev"
+  type_id: 0x0258f96e
+  offset: 1536
+}
+member {
+  id: 0xf81d6349
+  name: "heap_devt"
+  type_id: 0xeb0f6de6
+  offset: 192
+}
+member {
+  id: 0x83ebabc6
+  name: "heap_size"
+  type_id: 0x6720d32f
+  offset: 3456
+}
+member {
+  id: 0x2b586065
+  name: "height"
+  type_id: 0x4585663f
+  offset: 1056
+}
+member {
+  id: 0x2b5864a4
+  name: "height"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0x2bf5e16d
+  name: "height"
+  type_id: 0xe8034002
+  offset: 9200
+}
+member {
+  id: 0x2bfbc0a0
+  name: "height"
+  type_id: 0xe62ebf07
+  offset: 704
+}
+member {
+  id: 0x2bfbc29d
+  name: "height"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x2bfbc67c
+  name: "height"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x2bfbcb1e
+  name: "height"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x2bfbcb5f
+  name: "height"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0x2bfbcfa6
+  name: "height"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x5261d930
+  name: "height_cm"
+  type_id: 0x295c7202
+  offset: 176
+}
+member {
+  id: 0x6b3f5662
+  name: "height_mm"
+  type_id: 0x914dbfdc
+  offset: 480
+}
+member {
+  id: 0x6beb9230
+  name: "height_mm"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x08937094
+  name: "height_mm_lo"
+  type_id: 0x295c7202
+  offset: 88
+}
+member {
+  id: 0x37cb260a
+  name: "help"
+  type_id: 0x2de25c2c
+  offset: 768
+}
+member {
+  id: 0x48bac8e6
+  name: "helper"
+  type_id: 0x384b5b60
+  offset: 256
+}
+member {
+  id: 0x48bb3489
+  name: "helper"
+  type_id: 0x39b425bc
+  offset: 832
+}
+member {
+  id: 0x3b53c836
+  name: "helper_private"
+  type_id: 0x3a83b85f
+  offset: 896
+}
+member {
+  id: 0x3b568b1c
+  name: "helper_private"
+  type_id: 0x3fc670b8
+  offset: 9984
+}
+member {
+  id: 0x3b5924e3
+  name: "helper_private"
+  type_id: 0x30658794
+  offset: 12352
+}
+member {
+  id: 0x3b5d14e5
+  name: "helper_private"
+  type_id: 0x3453a47a
+  offset: 3584
+}
+member {
+  id: 0x3b5ebfad
+  name: "helper_private"
+  type_id: 0x37f564a2
+  offset: 9792
+}
+member {
+  id: 0x36e9a16e
+  name: "hentry"
+  type_id: 0x49a73111
+}
+member {
+  id: 0x2b8d487d
+  name: "hex"
+  type_id: 0x7bf61b84
+  offset: 128
+}
+member {
+  id: 0xdafb5d16
+  name: "hfmax"
+  type_id: 0xe62ebf07
+  offset: 896
+}
+member {
+  id: 0xa4292aba
+  name: "hfmin"
+  type_id: 0xe62ebf07
+  offset: 864
+}
+member {
+  id: 0x03c551ce
+  name: "hfreq_start_khz"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0xbd4be4b5
+  name: "hfront_porch"
+  type_id: 0xd5e60968
+  offset: 192
+}
+member {
+  id: 0xbd570bdd
+  name: "hfront_porch"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0xeff08db4
+  name: "hfrontporch"
+  type_id: 0xe62ebf07
+  offset: 192
+}
+member {
+  id: 0x791c9d5d
+  name: "hh"
+  type_id: 0x16c2f3e5
+  offset: 1600
+}
+member {
+  id: 0x6a915593
+  name: "hh_data"
+  type_id: 0x80c9c878
+  offset: 128
+}
+member {
+  id: 0x5ccf8ed0
+  name: "hh_len"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x462db394
+  name: "hh_lock"
+  type_id: 0x000ff4a8
+  offset: 32
+}
+member {
+  id: 0x39784625
+  name: "hi"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xf5cc8294
+  name: "hibern8_exit_cnt"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0x519530af
+  name: "hibern8_notify"
+  type_id: 0x0edf648a
+  offset: 704
+}
+member {
+  id: 0x1f443f36
+  name: "hid"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x666b6e12
+  name: "hidden"
+  type_id: 0x6d7f5ff6
+  offset: 224
+}
+member {
+  id: 0x44106ed8
+  name: "hiddev"
+  type_id: 0x18bd6530
+  offset: 59520
+}
+member {
+  id: 0x7b2bccdd
+  name: "hiddev_connect"
+  type_id: 0x2d6bc861
+  offset: 61824
+}
+member {
+  id: 0x5ad99975
+  name: "hiddev_disconnect"
+  type_id: 0x0e6861a8
+  offset: 61888
+}
+member {
+  id: 0x2e5d8158
+  name: "hiddev_hid_event"
+  type_id: 0x0e428b2e
+  offset: 61952
+}
+member {
+  id: 0x7515f016
+  name: "hiddev_report_event"
+  type_id: 0x0e46caf3
+  offset: 62016
+}
+member {
+  id: 0x0348f16f
+  name: "hidinput"
+  type_id: 0x3132930f
+  offset: 960
+}
+member {
+  id: 0x3af855d4
+  name: "hidinput_list"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0x900b35d9
+  name: "hidraw"
+  type_id: 0x18bd6530
+  offset: 59584
+}
+member {
+  id: 0x343bd385
+  name: "hierarchy_id"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0x854422bb
+  name: "high"
+  type_id: 0x914dbfdc
+  offset: 16
+}
+member {
+  id: 0x85b24588
+  name: "high"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x85d85e36
+  name: "high"
+  type_id: 0x0d364e53
+  offset: 128
+}
+member {
+  id: 0x85e61a02
+  name: "high"
+  type_id: 0x33756485
+  offset: 1152
+}
+member {
+  id: 0x2467cbde
+  name: "high_pkey"
+  type_id: 0x914dbfdc
+  offset: 80
+}
+member {
+  id: 0x22f0b41b
+  name: "high_port"
+  type_id: 0x914dbfdc
+  offset: 32
+}
+member {
+  id: 0x214261e5
+  name: "high_power"
+  type_id: 0x4585663f
+  offset: 67
+  bitsize: 1
+}
+member {
+  id: 0x7225cb63
+  name: "high_prio"
+  type_id: 0x6d7f5ff6
+  offset: 8
+}
+member {
+  id: 0x8f065dcb
+  name: "high_prio_bh"
+  type_id: 0x5395485e
+  offset: 3712
+}
+member {
+  id: 0x15795ada
+  name: "high_speed"
+  type_id: 0x4585663f
+  offset: 68
+  bitsize: 1
+}
+member {
+  id: 0xc1e69a9f
+  name: "high_thresh"
+  type_id: 0xfc0e1dbd
+}
+member {
+  id: 0x98e704a8
+  name: "high_work"
+  type_id: 0x1f3c8679
+  offset: 8192
+}
+member {
+  id: 0x24b8b0fd
+  name: "highbit"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x90fb51f7
+  name: "highest_bit"
+  type_id: 0x4585663f
+  offset: 928
+}
+member {
+  id: 0x8aa37a29
+  name: "highest_prio"
+  type_id: 0x3b04bc55
+  offset: 12992
+}
+member {
+  id: 0x2ca966e1
+  name: "highest_zoneidx"
+  type_id: 0xc5d9d969
+  offset: 864
+}
+member {
+  id: 0x06f8b424
+  name: "highspeed"
+  type_id: 0x295c7202
+  offset: 72
+}
+member {
+  id: 0x5e08123a
+  name: "highspeed"
+  type_id: 0x4585663f
+  offset: 713
+  bitsize: 1
+}
+member {
+  id: 0x5c364e77
+  name: "hint_events_per_packet"
+  type_id: 0x4585663f
+  offset: 1664
+}
+member {
+  id: 0xba5bf4b5
+  name: "hist"
+  type_id: 0x5362e84a
+  offset: 256
+}
+member {
+  id: 0xd81f8a96
+  name: "hist_tx"
+  type_id: 0x5362e84a
+  offset: 896
+}
+member {
+  id: 0x8e54487b
+  name: "hist_vars"
+  type_id: 0xd3c80119
+  offset: 2304
+}
+member {
+  id: 0xa164e403
+  name: "history"
+  type_id: 0x0abdd13d
+  offset: 128
+}
+member {
+  id: 0x50bcf84f
+  name: "history_head"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x2b9cdb39
+  name: "hit_cnt"
+  type_id: 0x6720d32f
+  offset: 1056
+}
+member {
+  id: 0x46691f0e
+  name: "hit_end"
+  type_id: 0x92233392
+  offset: 448
+}
+member {
+  id: 0xb3c5bda5
+  name: "hit_start"
+  type_id: 0x92233392
+  offset: 384
+}
+member {
+  id: 0xb3997f00
+  name: "hits"
+  type_id: 0x33756485
+  offset: 320
+}
+member {
+  id: 0x011a7c01
+  name: "hiwater_rss"
+  type_id: 0xedf277ba
+  offset: 1600
+}
+member {
+  id: 0x01c4f5fa
+  name: "hiwater_rss"
+  type_id: 0x33756485
+  offset: 1472
+}
+member {
+  id: 0x451aef27
+  name: "hiwater_vm"
+  type_id: 0xedf277ba
+  offset: 1664
+}
+member {
+  id: 0x45c461ff
+  name: "hiwater_vm"
+  type_id: 0x33756485
+  offset: 1536
+}
+member {
+  id: 0xf0e09c62
+  name: "hkdf"
+  type_id: 0xaebd989e
+}
+member {
+  id: 0x5f06cd21
+  name: "hlen"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0x2d522361
+  name: "hlist"
+  type_id: 0x49a73111
+}
+member {
+  id: 0x2d522780
+  name: "hlist"
+  type_id: 0x49a73111
+  offset: 64
+}
+member {
+  id: 0x2d522a14
+  name: "hlist"
+  type_id: 0x49a73111
+  offset: 2368
+}
+member {
+  id: 0x2d522b92
+  name: "hlist"
+  type_id: 0x49a73111
+  offset: 960
+}
+member {
+  id: 0xd7e17fd3
+  name: "hlist_entry"
+  type_id: 0x49a73111
+  offset: 768
+}
+member {
+  id: 0x4dd0215a
+  name: "hlist_lock"
+  type_id: 0xf313e71a
+  offset: 256
+}
+member {
+  id: 0x4122d897
+  name: "hmac_tfm"
+  type_id: 0x17fa285b
+}
+member {
+  id: 0x73ba6f12
+  name: "hmask"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x37a2e18e
+  name: "hnnode"
+  type_id: 0xdb2fb9a5
+}
+member {
+  id: 0x6c20e54b
+  name: "hnode"
+  type_id: 0x49a73111
+}
+member {
+  id: 0x6c20ec89
+  name: "hnode"
+  type_id: 0x49a73111
+  offset: 128
+}
+member {
+  id: 0x6bce491a
+  name: "hnp_polling_support"
+  type_id: 0x4585663f
+  offset: 8454
+  bitsize: 1
+}
+member {
+  id: 0x4c0b21cc
+  name: "hnp_support"
+  type_id: 0x6d7f5ff6
+  offset: 16
+}
+member {
+  id: 0xacd68a1b
+  name: "hog_default"
+  type_id: 0x3a47ea7a
+  offset: 1088
+}
+member {
+  id: 0x9f3b60a3
+  name: "hog_sleep"
+  type_id: 0x3a47ea7a
+  offset: 1152
+}
+member {
+  id: 0x72254387
+  name: "hold_queue"
+  type_id: 0x578f9c2b
+}
+member {
+  id: 0xb0e51cf3
+  name: "hold_retune"
+  type_id: 0x6720d32f
+  offset: 8608
+}
+member {
+  id: 0xc2e07f3f
+  name: "hold_time_ps"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x477149b3
+  name: "hold_timer"
+  type_id: 0xd298e888
+  offset: 192
+}
+member {
+  id: 0x8949e683
+  name: "holder_data"
+  type_id: 0x18bd6530
+  offset: 6912
+}
+member {
+  id: 0x43997d98
+  name: "holder_ops"
+  type_id: 0x35dc1d5d
+  offset: 6976
+}
+member {
+  id: 0xf82bbc03
+  name: "holders_dir"
+  type_id: 0x23f09c34
+  offset: 1920
+}
+member {
+  id: 0x4258b0e7
+  name: "hole_size"
+  type_id: 0x92233392
+  offset: 1152
+}
+member {
+  id: 0x8f6b7140
+  name: "hole_stack"
+  type_id: 0xd3c80119
+  offset: 64
+}
+member {
+  id: 0x8f6b7433
+  name: "hole_stack"
+  type_id: 0xd3c80119
+  offset: 384
+}
+member {
+  id: 0x15ac6a73
+  name: "holes_addr"
+  type_id: 0xeb923a9b
+  offset: 1792
+}
+member {
+  id: 0xf78f4057
+  name: "holes_size"
+  type_id: 0xd0f3b5bf
+  offset: 1664
+}
+member {
+  id: 0xcc58a4be
+  name: "hook"
+  type_id: 0x295c7202
+}
+member {
+  id: 0xcc6ce804
+  name: "hook"
+  type_id: 0x1d10c881
+}
+member {
+  id: 0x4baf7b66
+  name: "hook_ops_type"
+  type_id: 0xd62e128a
+  offset: 200
+  bitsize: 8
+}
+member {
+  id: 0xe4d65578
+  name: "hooknum"
+  type_id: 0x4585663f
+  offset: 224
+}
+member {
+  id: 0x645b3570
+  name: "hooks"
+  type_id: 0xc3ac8280
+  offset: 64
+}
+member {
+  id: 0x28df8f7a
+  name: "hooks_arp"
+  type_id: 0x139a58ce
+  offset: 1472
+}
+member {
+  id: 0xa1b27de9
+  name: "hooks_ipv4"
+  type_id: 0xe8a3834b
+  offset: 832
+}
+member {
+  id: 0x0f375eeb
+  name: "hooks_ipv6"
+  type_id: 0xe8a3834b
+  offset: 1152
+}
+member {
+  id: 0x9f4d6a46
+  name: "hop_limit"
+  type_id: 0x0faae5b1
+  offset: 32
+}
+member {
+  id: 0xe90d2c02
+  name: "hops"
+  type_id: 0x30464b44
+  offset: 128
+}
+member {
+  id: 0x43e237a9
+  name: "horizontal_position"
+  type_id: 0x8da29217
+  offset: 64
+}
+member {
+  id: 0xf048d88c
+  name: "horizontal_scale"
+  type_id: 0xb3e7bac9
+  offset: 9216
+}
+member {
+  id: 0xe41e57a7
+  name: "horizontal_size"
+  type_id: 0xe8034002
+}
+member {
+  id: 0xb8c2344a
+  name: "host"
+  type_id: 0x36194830
+  offset: 896
+}
+member {
+  id: 0xb8c23eec
+  name: "host"
+  type_id: 0x36194830
+}
+member {
+  id: 0xb8c9a63c
+  name: "host"
+  type_id: 0x3d8951f4
+  offset: 192
+}
+member {
+  id: 0xb8db8057
+  name: "host"
+  type_id: 0x2fa7f388
+}
+member {
+  id: 0xb8e3fa6e
+  name: "host"
+  type_id: 0x17dabdcd
+  offset: 448
+}
+member {
+  id: 0xb8e3fd19
+  name: "host"
+  type_id: 0x17dabdcd
+}
+member {
+  id: 0xb8efa234
+  name: "host"
+  type_id: 0x1b8590a8
+}
+member {
+  id: 0x8c340ee7
+  name: "host_attrs"
+  type_id: 0x626cbe56
+}
+member {
+  id: 0xa5bf2655
+  name: "host_blocked"
+  type_id: 0x74d29cf1
+  offset: 3456
+}
+member {
+  id: 0x17c45121
+  name: "host_cookie"
+  type_id: 0xd41e888f
+  offset: 512
+}
+member {
+  id: 0xdabe92ad
+  name: "host_data"
+  type_id: 0x18bd6530
+  offset: 256
+}
+member {
+  id: 0xdabe96e7
+  name: "host_data"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0x2edd8c13
+  name: "host_debug_state"
+  type_id: 0x385d66bc
+  offset: 23744
+}
+member {
+  id: 0x31ca0bed
+  name: "host_deinit"
+  type_id: 0x0cefb0c8
+  offset: 64
+}
+member {
+  id: 0x93f7c7a1
+  name: "host_donate_hyp"
+  type_id: 0x24401166
+  offset: 1344
+}
+member {
+  id: 0x978fead8
+  name: "host_eh_scheduled"
+  type_id: 0x4585663f
+  offset: 3520
+}
+member {
+  id: 0x59658d70
+  name: "host_failed"
+  type_id: 0x4585663f
+  offset: 3488
+}
+member {
+  id: 0x909d979f
+  name: "host_fpsimd_state"
+  type_id: 0x3ef473d4
+  offset: 23680
+}
+member {
+  id: 0xda2e02e2
+  name: "host_init"
+  type_id: 0x2fa99c67
+}
+member {
+  id: 0xb467424d
+  name: "host_interfaces"
+  type_id: 0xb914bfab
+  offset: 10112
+}
+member {
+  id: 0xc2defa03
+  name: "host_irq"
+  type_id: 0x4585663f
+  offset: 608
+}
+member {
+  id: 0xfb8e63cd
+  name: "host_lock"
+  type_id: 0x3654c061
+  offset: 448
+}
+member {
+  id: 0x0b5b9055
+  name: "host_no"
+  type_id: 0x4585663f
+  offset: 3552
+}
+member {
+  id: 0xae4d69ac
+  name: "host_notify_domain"
+  type_id: 0x18a2fb63
+  offset: 9600
+}
+member {
+  id: 0x5b25a8b4
+  name: "host_priv"
+  type_id: 0x18bd6530
+  offset: 128
+}
+member {
+  id: 0x5b25aa6b
+  name: "host_priv"
+  type_id: 0x18bd6530
+  offset: 1856
+}
+member {
+  id: 0xc80b5bf6
+  name: "host_request_flag"
+  type_id: 0x4585663f
+  offset: 8455
+  bitsize: 1
+}
+member {
+  id: 0x6f6f9e04
+  name: "host_reset"
+  type_id: 0x2cea8a63
+  offset: 2048
+}
+member {
+  id: 0x330142dc
+  name: "host_scribble"
+  type_id: 0x1df06cce
+  offset: 2624
+}
+member {
+  id: 0x84380b69
+  name: "host_self_blocked"
+  type_id: 0x4585663f
+  offset: 4354
+  bitsize: 1
+}
+member {
+  id: 0xce184a90
+  name: "host_sem"
+  type_id: 0x6e3b7d7f
+  offset: 4544
+}
+member {
+  id: 0x97147ad4
+  name: "host_share_hyp"
+  type_id: 0x24d23255
+  offset: 1472
+}
+member {
+  id: 0x5fd8f936
+  name: "host_size"
+  type_id: 0x6720d32f
+  offset: 2688
+}
+member {
+  id: 0x4c5d8a29
+  name: "host_stage2_get_leaf"
+  type_id: 0x263fbcc9
+  offset: 960
+}
+member {
+  id: 0x6ff07732
+  name: "host_stage2_mod_prot"
+  type_id: 0x24cb3ae4
+  offset: 896
+}
+member {
+  id: 0xedc7b540
+  name: "host_status"
+  type_id: 0xc93e017b
+  offset: 544
+}
+member {
+  id: 0xfa2a8620
+  name: "host_tagset"
+  type_id: 0x4585663f
+  offset: 4360
+  bitsize: 1
+}
+member {
+  id: 0xfa2a890e
+  name: "host_tagset"
+  type_id: 0x4585663f
+  offset: 2630
+  bitsize: 1
+}
+member {
+  id: 0xd7232081
+  name: "host_timer_irq"
+  type_id: 0xc9082b19
+  offset: 736
+}
+member {
+  id: 0x0b3a6d95
+  name: "host_timer_irq_flags"
+  type_id: 0xc9082b19
+  offset: 768
+}
+member {
+  id: 0x3f896917
+  name: "host_unshare_hyp"
+  type_id: 0x24d23255
+  offset: 1536
+}
+member {
+  id: 0x53ed0261
+  name: "host_wait"
+  type_id: 0x03913382
+  offset: 1280
+}
+member {
+  id: 0x337e0faa
+  name: "hostdata"
+  type_id: 0xc8e4d7d1
+  offset: 19840
+}
+member {
+  id: 0x33ae5724
+  name: "hostdata"
+  type_id: 0x18bd6530
+  offset: 1344
+}
+member {
+  id: 0x33ae596c
+  name: "hostdata"
+  type_id: 0x18bd6530
+  offset: 7936
+}
+member {
+  id: 0xc92885a7
+  name: "hostpc"
+  type_id: 0xc49c902c
+  offset: 32
+}
+member {
+  id: 0x9d9fc7a8
+  name: "hostt"
+  type_id: 0x33baebd5
+  offset: 1472
+}
+member {
+  id: 0x13544c4c
+  name: "hot"
+  type_id: 0xd519c298
+  offset: 128
+}
+member {
+  id: 0x138d878e
+  name: "hot"
+  type_id: 0x0cd878db
+  offset: 832
+}
+member {
+  id: 0x25732f5e
+  name: "hot_x"
+  type_id: 0x6720d32f
+  offset: 1120
+}
+member {
+  id: 0x6d30506c
+  name: "hot_y"
+  type_id: 0x6720d32f
+  offset: 1152
+}
+member {
+  id: 0x75d72ecb
+  name: "hotplug"
+  type_id: 0x2d24593d
+  offset: 192
+}
+member {
+  id: 0x75ed0ee4
+  name: "hotplug"
+  type_id: 0x17047654
+  offset: 192
+}
+member {
+  id: 0xf51f6b3d
+  name: "hotplug_user_indicators"
+  type_id: 0x4585663f
+  offset: 1344
+  bitsize: 1
+}
+member {
+  id: 0x843ea001
+  name: "hotplug_wait"
+  type_id: 0xdba44af3
+  offset: 26944
+}
+member {
+  id: 0x386f84a8
+  name: "hours"
+  type_id: 0xb3e7bac9
+  offset: 88
+}
+member {
+  id: 0x5b43853c
+  name: "hp"
+  type_id: 0x4050ae51
+  offset: 536
+}
+member {
+  id: 0x35590a19
+  name: "hpb_active_field"
+  type_id: 0x7c4687a5
+  offset: 224
+}
+member {
+  id: 0xd1711a8c
+  name: "hpb_enabled"
+  type_id: 0x6d7f5ff6
+  offset: 200
+}
+member {
+  id: 0xc4789567
+  name: "hpb_inactive_field"
+  type_id: 0x71c87915
+  offset: 288
+}
+member {
+  id: 0xde4f199a
+  name: "hpb_op"
+  type_id: 0x295c7202
+  offset: 192
+}
+member {
+  id: 0x01a76bb5
+  name: "hpd_cb"
+  type_id: 0x0f77ab9d
+  offset: 2048
+}
+member {
+  id: 0xedc15649
+  name: "hpd_data"
+  type_id: 0x18bd6530
+  offset: 2112
+}
+member {
+  id: 0x51aeab45
+  name: "hpd_disable"
+  type_id: 0x0cd0a3a7
+  offset: 1536
+}
+member {
+  id: 0x923a0bd2
+  name: "hpd_enable"
+  type_id: 0x0cd0a3a7
+  offset: 1472
+}
+member {
+  id: 0xf97928be
+  name: "hpd_mutex"
+  type_id: 0xa7c362b0
+  offset: 1664
+}
+member {
+  id: 0x50f543ca
+  name: "hpd_notify"
+  type_id: 0x0c9af3aa
+  offset: 1408
+}
+member {
+  id: 0xd6cec4c2
+  name: "hpfar_el2"
+  type_id: 0x92233392
+  offset: 128
+}
+member {
+  id: 0xa2d9b50c
+  name: "hpi"
+  type_id: 0x6d7f5ff6
+  offset: 712
+}
+member {
+  id: 0x7a2a68f5
+  name: "hpi_cmd"
+  type_id: 0x4585663f
+  offset: 736
+}
+member {
+  id: 0xcf7037b7
+  name: "hpi_en"
+  type_id: 0x6d7f5ff6
+  offset: 704
+}
+member {
+  id: 0xdefa6aef
+  name: "hr"
+  type_id: 0x7f518726
+}
+member {
+  id: 0xa8b37088
+  name: "hr_timeouts"
+  type_id: 0x88659077
+  offset: 64
+}
+member {
+  id: 0x06d507a2
+  name: "hres_active"
+  type_id: 0x4585663f
+  offset: 128
+  bitsize: 1
+}
+member {
+  id: 0xf1772459
+  name: "hrtick_csd"
+  type_id: 0xec722edd
+  offset: 27392
+}
+member {
+  id: 0x928f3aa8
+  name: "hrtick_time"
+  type_id: 0x11c404ba
+  offset: 28224
+}
+member {
+  id: 0xebb9ac97
+  name: "hrtick_timer"
+  type_id: 0xcd7704bf
+  offset: 27648
+}
+member {
+  id: 0x8a1dd442
+  name: "hrtimer"
+  type_id: 0xcd7704bf
+  offset: 2560
+}
+member {
+  id: 0x8a1dd5e0
+  name: "hrtimer"
+  type_id: 0xcd7704bf
+}
+member {
+  id: 0x8a1dd65a
+  name: "hrtimer"
+  type_id: 0xcd7704bf
+  offset: 832
+}
+member {
+  id: 0x8a1ddc22
+  name: "hrtimer"
+  type_id: 0xcd7704bf
+  offset: 128
+}
+member {
+  id: 0x7e4bc277
+  name: "hrtimer_active"
+  type_id: 0x4585663f
+  offset: 3200
+}
+member {
+  id: 0xa015c3d5
+  name: "hrtimer_interval"
+  type_id: 0x11c404ba
+  offset: 3136
+}
+member {
+  id: 0x14169e6c
+  name: "hrtimer_interval_ms"
+  type_id: 0x6720d32f
+  offset: 704
+}
+member {
+  id: 0x04598178
+  name: "hrtimer_lock"
+  type_id: 0xc8b17aa7
+  offset: 2496
+}
+member {
+  id: 0xf9df2d32
+  name: "hs200_max_dtr"
+  type_id: 0x4585663f
+  offset: 288
+}
+member {
+  id: 0xeadd7fd9
+  name: "hs400_complete"
+  type_id: 0x0dd7b940
+  offset: 1088
+}
+member {
+  id: 0x9de9060a
+  name: "hs400_downgrade"
+  type_id: 0x0dd7b940
+  offset: 1024
+}
+member {
+  id: 0x7c5b8fff
+  name: "hs400_enhanced_strobe"
+  type_id: 0x0de0f4a6
+  offset: 1152
+}
+member {
+  id: 0xc8388aed
+  name: "hs400_prepare_ddr"
+  type_id: 0x2e9195ef
+  offset: 960
+}
+member {
+  id: 0x67b99265
+  name: "hs_clk_rate"
+  type_id: 0x33756485
+  offset: 704
+}
+member {
+  id: 0xfd933f9f
+  name: "hs_companion"
+  type_id: 0x3d8951f4
+  offset: 960
+}
+member {
+  id: 0x91ca3fe6
+  name: "hs_descriptors"
+  type_id: 0x0b59f310
+  offset: 192
+}
+member {
+  id: 0xb554924c
+  name: "hs_exit"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0xe7c6f24f
+  name: "hs_hchan"
+  type_id: 0x2ac89539
+  offset: 128
+}
+member {
+  id: 0x1804f79f
+  name: "hs_hcon"
+  type_id: 0x2b0e3ff1
+  offset: 64
+}
+member {
+  id: 0x68d57a43
+  name: "hs_max_dtr"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0x68d57ae8
+  name: "hs_max_dtr"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xc3076d20
+  name: "hs_prepare"
+  type_id: 0x4585663f
+  offset: 352
+}
+member {
+  id: 0xcb2fb5a7
+  name: "hs_rate"
+  type_id: 0xc9082b19
+  offset: 320
+}
+member {
+  id: 0xcb2fbaa9
+  name: "hs_rate"
+  type_id: 0xc9082b19
+  offset: 192
+}
+member {
+  id: 0xcbd5c12a
+  name: "hs_rate"
+  type_id: 0x33756485
+  offset: 7680
+}
+member {
+  id: 0xde48f6f6
+  name: "hs_rx_gear"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x5eed6cd9
+  name: "hs_settle"
+  type_id: 0x4585663f
+  offset: 384
+}
+member {
+  id: 0x341c053f
+  name: "hs_skip"
+  type_id: 0x4585663f
+  offset: 416
+}
+member {
+  id: 0xe1818e15
+  name: "hs_trail"
+  type_id: 0x4585663f
+  offset: 448
+}
+member {
+  id: 0xe61fdf73
+  name: "hs_tx_gear"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0x04b9775c
+  name: "hs_zero"
+  type_id: 0x4585663f
+  offset: 480
+}
+member {
+  id: 0xe3312595
+  name: "hsize"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x1a1fdbac
+  name: "hskew"
+  type_id: 0x914dbfdc
+  offset: 96
+}
+member {
+  id: 0x1a669553
+  name: "hskew"
+  type_id: 0xe8034002
+  offset: 96
+}
+member {
+  id: 0x39fac508
+  name: "hsq_enabled"
+  type_id: 0x6d7f5ff6
+  offset: 14016
+}
+member {
+  id: 0x8c045ea7
+  name: "hsr"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x440037d1
+  name: "hsr_high"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x06e8b9a4
+  name: "hsub"
+  type_id: 0x295c7202
+  offset: 144
+}
+member {
+  id: 0x8fb6f208
+  name: "hsv_enc"
+  type_id: 0xe8034002
+}
+member {
+  id: 0x8fb8dff7
+  name: "hsv_enc"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x8fed16f2
+  name: "hsv_enc"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0x70b87e6e
+  name: "hsync"
+  type_id: 0xe62ebf07
+  offset: 224
+}
+member {
+  id: 0x11b00f23
+  name: "hsync_end"
+  type_id: 0xe8034002
+  offset: 64
+}
+member {
+  id: 0x11c941dc
+  name: "hsync_end"
+  type_id: 0x914dbfdc
+  offset: 64
+}
+member {
+  id: 0x0e8e6e58
+  name: "hsync_len"
+  type_id: 0xe62ebf07
+  offset: 960
+}
+member {
+  id: 0x0ea147f8
+  name: "hsync_len"
+  type_id: 0xc9082b19
+  offset: 320
+}
+member {
+  id: 0x0ea14ddf
+  name: "hsync_len"
+  type_id: 0xc9082b19
+  offset: 160
+}
+member {
+  id: 0x0ebdaf8f
+  name: "hsync_len"
+  type_id: 0xd5e60968
+  offset: 384
+}
+member {
+  id: 0xe4ae5f47
+  name: "hsync_offset_lo"
+  type_id: 0x295c7202
+  offset: 48
+}
+member {
+  id: 0x6c9b3d12
+  name: "hsync_pulse_width_lo"
+  type_id: 0x295c7202
+  offset: 56
+}
+member {
+  id: 0xa58ec940
+  name: "hsync_start"
+  type_id: 0x914dbfdc
+  offset: 48
+}
+member {
+  id: 0xa5f787bf
+  name: "hsync_start"
+  type_id: 0xe8034002
+  offset: 48
+}
+member {
+  id: 0xed12d806
+  name: "hsync_vsync_offset_pulse_width_hi"
+  type_id: 0x295c7202
+  offset: 72
+}
+member {
+  id: 0x5c160632
+  name: "ht"
+  type_id: 0x1340339a
+}
+member {
+  id: 0x5c620629
+  name: "ht"
+  type_id: 0x674028f7
+}
+member {
+  id: 0x5c6b0b5c
+  name: "ht"
+  type_id: 0x6e464516
+  offset: 512
+}
+member {
+  id: 0x72f67066
+  name: "ht_cap"
+  type_id: 0xa3f15079
+  offset: 224
+}
+member {
+  id: 0x7723fa9d
+  name: "ht_capa_mod_mask"
+  type_id: 0x3ccbbab7
+  offset: 10560
+}
+member {
+  id: 0x31722d1e
+  name: "ht_supported"
+  type_id: 0x6d7f5ff6
+  offset: 16
+}
+member {
+  id: 0xf2863c10
+  name: "htable"
+  type_id: 0x08c085d5
+}
+member {
+  id: 0xf28957eb
+  name: "htable"
+  type_id: 0x07ab7e35
+}
+member {
+  id: 0x88cc63e3
+  name: "hthr"
+  type_id: 0x0aaa823e
+}
+member {
+  id: 0x72895207
+  name: "htotal"
+  type_id: 0x914dbfdc
+  offset: 80
+}
+member {
+  id: 0x72f01cf8
+  name: "htotal"
+  type_id: 0xe8034002
+  offset: 80
+}
+member {
+  id: 0x1cb5ccde
+  name: "htype"
+  type_id: 0xa6d212cf
+}
+member {
+  id: 0xe5c68ce9
+  name: "hub"
+  type_id: 0x0d7ce7cc
+}
+member {
+  id: 0x539eff1d
+  name: "hub6"
+  type_id: 0x6720d32f
+  offset: 288
+}
+member {
+  id: 0x53a45343
+  name: "hub6"
+  type_id: 0x5d8155a5
+  offset: 2864
+}
+member {
+  id: 0x7dcba85d
+  name: "hub_control"
+  type_id: 0x2f3f4baa
+  offset: 1216
+}
+member {
+  id: 0xcbfaf84d
+  name: "hub_delay"
+  type_id: 0x914dbfdc
+  offset: 12352
+}
+member {
+  id: 0xe3ad9a2c
+  name: "hub_status_data"
+  type_id: 0x2fa300bc
+  offset: 1152
+}
+member {
+  id: 0xadced68e
+  name: "hue"
+  type_id: 0x4585663f
+  offset: 352
+}
+member {
+  id: 0x6c785781
+  name: "huge_fault"
+  type_id: 0x39450091
+  offset: 384
+}
+member {
+  id: 0x864648d5
+  name: "hva_node"
+  type_id: 0x4a835590
+  offset: 256
+}
+member {
+  id: 0x130ace31
+  name: "hva_tree"
+  type_id: 0xd0f3b5bf
+  offset: 128
+}
+member {
+  id: 0x65c703ea
+  name: "hvc_exit_stat"
+  type_id: 0x92233392
+  offset: 6656
+}
+member {
+  id: 0x97368b37
+  name: "hw"
+  type_id: 0xf181ace2
+  offset: 2816
+}
+member {
+  id: 0x97aa71b6
+  name: "hw"
+  type_id: 0x6d7f5ff6
+  offset: 512
+}
+member {
+  id: 0x97c7b08c
+  name: "hw"
+  type_id: 0x00b57da4
+}
+member {
+  id: 0x97cde891
+  name: "hw"
+  type_id: 0x0ae4a2c7
+  offset: 128
+}
+member {
+  id: 0x97db0863
+  name: "hw"
+  type_id: 0x1c0ebea9
+  offset: 1664
+}
+member {
+  id: 0x97e39ea4
+  name: "hw"
+  type_id: 0x249b55ac
+}
+member {
+  id: 0x97e6b515
+  name: "hw"
+  type_id: 0x21b62a20
+  offset: 3392
+}
+member {
+  id: 0x97fa8c95
+  name: "hw"
+  type_id: 0x3d896417
+}
+member {
+  id: 0x78c1b899
+  name: "hw_add"
+  type_id: 0x0e3ac1af
+  offset: 896
+}
+member {
+  id: 0x53c15235
+  name: "hw_alt_next"
+  type_id: 0x0baa70a7
+  offset: 32
+}
+member {
+  id: 0x53c152ee
+  name: "hw_alt_next"
+  type_id: 0x0baa70a7
+  offset: 160
+}
+member {
+  id: 0xefb47f5a
+  name: "hw_backpointer"
+  type_id: 0x0baa70a7
+  offset: 192
+}
+member {
+  id: 0xcd76d196
+  name: "hw_buf"
+  type_id: 0x6e43dcca
+  offset: 128
+}
+member {
+  id: 0xcdf384b9
+  name: "hw_buf"
+  type_id: 0xeb16b298
+  offset: 96
+}
+member {
+  id: 0xcdf38e1e
+  name: "hw_buf"
+  type_id: 0xeb16b298
+  offset: 224
+}
+member {
+  id: 0x35596215
+  name: "hw_buf_hi"
+  type_id: 0xeb16b298
+  offset: 256
+}
+member {
+  id: 0x3559632c
+  name: "hw_buf_hi"
+  type_id: 0xeb16b298
+  offset: 384
+}
+member {
+  id: 0x35dc34f4
+  name: "hw_buf_hi"
+  type_id: 0x6e43dcca
+  offset: 224
+}
+member {
+  id: 0xdc4e5826
+  name: "hw_bufp"
+  type_id: 0x6a240418
+  offset: 288
+}
+member {
+  id: 0x64d3610f
+  name: "hw_bufp_hi"
+  type_id: 0x6a240418
+  offset: 512
+}
+member {
+  id: 0xa6d9d55d
+  name: "hw_config"
+  type_id: 0xf15f38fe
+  offset: 5408
+}
+member {
+  id: 0x5c83a15a
+  name: "hw_constraints"
+  type_id: 0x001c9928
+  offset: 4032
+}
+member {
+  id: 0xce8c8321
+  name: "hw_current"
+  type_id: 0x0baa70a7
+  offset: 96
+}
+member {
+  id: 0x15a9ea6c
+  name: "hw_del"
+  type_id: 0x0e3ac1af
+  offset: 960
+}
+member {
+  id: 0xa076d7f0
+  name: "hw_done"
+  type_id: 0x3fcbf304
+  offset: 384
+}
+member {
+  id: 0x76201d98
+  name: "hw_enc_features"
+  type_id: 0x2584a3b9
+  offset: 2112
+}
+member {
+  id: 0xa65cd12c
+  name: "hw_error"
+  type_id: 0x0f434cf3
+  offset: 50880
+}
+member {
+  id: 0x0d3b5bd1
+  name: "hw_error_code"
+  type_id: 0xb3e7bac9
+  offset: 6672
+}
+member {
+  id: 0x2d3aa998
+  name: "hw_events"
+  type_id: 0x1d65d221
+  offset: 3648
+}
+member {
+  id: 0x912b066b
+  name: "hw_features"
+  type_id: 0x2584a3b9
+  offset: 1920
+}
+member {
+  id: 0x0ba0b67d
+  name: "hw_free"
+  type_id: 0x2cbb953f
+  offset: 192
+}
+member {
+  id: 0x0ba0bc84
+  name: "hw_free"
+  type_id: 0x2cbeba93
+  offset: 1024
+}
+member {
+  id: 0x0ba0be1f
+  name: "hw_free"
+  type_id: 0x2cbb953f
+  offset: 256
+}
+member {
+  id: 0x0ba0f0c4
+  name: "hw_free"
+  type_id: 0x2cf2c077
+  offset: 1728
+}
+member {
+  id: 0xef534875
+  name: "hw_fullspeed_ep"
+  type_id: 0x0baa70a7
+  offset: 32
+}
+member {
+  id: 0x9c6779ff
+  name: "hw_idx"
+  type_id: 0xedf277ba
+  offset: 64
+}
+member {
+  id: 0xdf172e55
+  name: "hw_index"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x371784a6
+  name: "hw_info"
+  type_id: 0x3e10b518
+  offset: 31488
+}
+member {
+  id: 0xec485b4b
+  name: "hw_info1"
+  type_id: 0x0baa70a7
+  offset: 32
+}
+member {
+  id: 0x2bb73e0b
+  name: "hw_info2"
+  type_id: 0x0baa70a7
+  offset: 64
+}
+member {
+  id: 0x103aefe8
+  name: "hw_lpm_support"
+  type_id: 0x4585663f
+  offset: 58112
+  bitsize: 1
+}
+member {
+  id: 0xf34e08bb
+  name: "hw_mmu"
+  type_id: 0x38e86333
+  offset: 14784
+}
+member {
+  id: 0xcc4e42e2
+  name: "hw_name"
+  type_id: 0x3e10b518
+}
+member {
+  id: 0x999cea4d
+  name: "hw_next"
+  type_id: 0x0baa70a7
+}
+member {
+  id: 0x999f3a98
+  name: "hw_next"
+  type_id: 0x087aa58e
+}
+member {
+  id: 0x4624a51b
+  name: "hw_opened"
+  type_id: 0x4585663f
+  offset: 2944
+  bitsize: 1
+}
+member {
+  id: 0x0375b663
+  name: "hw_params"
+  type_id: 0x2c963e7a
+  offset: 128
+}
+member {
+  id: 0x0375b700
+  name: "hw_params"
+  type_id: 0x2c966c80
+  offset: 960
+}
+member {
+  id: 0x0375b768
+  name: "hw_params"
+  type_id: 0x2c963e7a
+  offset: 192
+}
+member {
+  id: 0x0375daa9
+  name: "hw_params"
+  type_id: 0x2cf01ac3
+  offset: 1664
+}
+member {
+  id: 0x03c5c5fe
+  name: "hw_params"
+  type_id: 0x9cedf3c4
+  offset: 384
+}
+member {
+  id: 0x38186deb
+  name: "hw_portnum"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x7f1968d4
+  name: "hw_ports"
+  type_id: 0x39185662
+  offset: 21056
+}
+member {
+  id: 0xfd31b028
+  name: "hw_prev"
+  type_id: 0x0baa70a7
+  offset: 32
+}
+member {
+  id: 0xff59b17d
+  name: "hw_priv"
+  type_id: 0x295c7202
+  offset: 48
+}
+member {
+  id: 0x14b420e6
+  name: "hw_ptr"
+  type_id: 0xa8fff47c
+  offset: 64
+}
+member {
+  id: 0x3b9b55c4
+  name: "hw_ptr_base"
+  type_id: 0xa8fff47c
+  offset: 384
+}
+member {
+  id: 0xbf5570ce
+  name: "hw_ptr_buffer_jiffies"
+  type_id: 0x33756485
+  offset: 576
+}
+member {
+  id: 0x56cf5cbd
+  name: "hw_ptr_interrupt"
+  type_id: 0xa8fff47c
+  offset: 448
+}
+member {
+  id: 0x8dd6d069
+  name: "hw_ptr_jiffies"
+  type_id: 0x33756485
+  offset: 512
+}
+member {
+  id: 0xf6a2cbfd
+  name: "hw_ptr_wrap"
+  type_id: 0x92233392
+  offset: 704
+}
+member {
+  id: 0x46f7df46
+  name: "hw_qtd_next"
+  type_id: 0x0baa70a7
+  offset: 128
+}
+member {
+  id: 0xdb5a03f4
+  name: "hw_reset"
+  type_id: 0x2e9195ef
+  offset: 576
+}
+member {
+  id: 0xdb79b81d
+  name: "hw_reset"
+  type_id: 0x0d21fdc9
+  offset: 1408
+}
+member {
+  id: 0x15d36319
+  name: "hw_results"
+  type_id: 0x0baa70a7
+  offset: 96
+}
+member {
+  id: 0x27c7648e
+  name: "hw_revision"
+  type_id: 0xc9082b19
+  offset: 1216
+}
+member {
+  id: 0xae429cae
+  name: "hw_stats"
+  type_id: 0x993c6f33
+  offset: 64
+}
+member {
+  id: 0xaef2f254
+  name: "hw_stats"
+  type_id: 0x295c7202
+  offset: 1568
+}
+member {
+  id: 0x995b248a
+  name: "hw_status_cache"
+  type_id: 0x6720d32f
+  offset: 1760
+}
+member {
+  id: 0xbf5bc2e4
+  name: "hw_stopped"
+  type_id: 0x6720d32f
+  offset: 4544
+}
+member {
+  id: 0xbf5bc539
+  name: "hw_stopped"
+  type_id: 0x6720d32f
+  offset: 2208
+}
+member {
+  id: 0x46fd83c9
+  name: "hw_token"
+  type_id: 0x0baa70a7
+  offset: 192
+}
+member {
+  id: 0x46fd8fe1
+  name: "hw_token"
+  type_id: 0x0baa70a7
+  offset: 64
+}
+member {
+  id: 0x7e3adcfc
+  name: "hw_transaction"
+  type_id: 0xe6d4143b
+  offset: 32
+}
+member {
+  id: 0xfaee60c9
+  name: "hw_uframe"
+  type_id: 0x0baa70a7
+  offset: 64
+}
+member {
+  id: 0xb28194ad
+  name: "hw_value"
+  type_id: 0x914dbfdc
+  offset: 80
+}
+member {
+  id: 0xb2819cf0
+  name: "hw_value"
+  type_id: 0x914dbfdc
+  offset: 48
+}
+member {
+  id: 0x49a7c8f6
+  name: "hw_value_short"
+  type_id: 0x914dbfdc
+  offset: 64
+}
+member {
+  id: 0xe68eef5f
+  name: "hw_version"
+  type_id: 0xc9082b19
+  offset: 1952
+}
+member {
+  id: 0xdc67b1f1
+  name: "hwaddr_len"
+  type_id: 0xc9082b19
+  offset: 640
+}
+member {
+  id: 0x712b765b
+  name: "hwfifo_flush_to_buffer"
+  type_id: 0x2c3d3de2
+  offset: 1088
+}
+member {
+  id: 0xc36ed4fb
+  name: "hwfifo_set_watermark"
+  type_id: 0x2c3d3de2
+  offset: 1024
+}
+member {
+  id: 0xb62bb539
+  name: "hwintid"
+  type_id: 0xc9082b19
+  offset: 576
+}
+member {
+  id: 0xeac4d9d6
+  name: "hwirq"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xead51fd1
+  name: "hwirq"
+  type_id: 0x22b36393
+  offset: 64
+}
+member {
+  id: 0x9f1700c3
+  name: "hwirq_max"
+  type_id: 0x22b36393
+  offset: 960
+}
+member {
+  id: 0x52f49bde
+  name: "hwlock"
+  type_id: 0x0ab9fa4c
+  offset: 5312
+}
+member {
+  id: 0x9d887656
+  name: "hwlock_id"
+  type_id: 0x4585663f
+  offset: 2432
+}
+member {
+  id: 0xe06569e0
+  name: "hwlock_mode"
+  type_id: 0x4585663f
+  offset: 2464
+}
+member {
+  id: 0xfa9dd98e
+  name: "hwmode"
+  type_id: 0x81bb7781
+  offset: 1152
+}
+member {
+  id: 0xfa9dde27
+  name: "hwmode"
+  type_id: 0x81bb7781
+  offset: 2368
+}
+member {
+  id: 0xb6590178
+  name: "hwptr_done"
+  type_id: 0x4585663f
+  offset: 672
+}
+member {
+  id: 0x06e3e847
+  name: "hwpwm"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x069b968a
+  name: "hwrev"
+  type_id: 0x5d8155a5
+  offset: 192
+}
+member {
+  id: 0xbf1a473f
+  name: "hwtstamp"
+  type_id: 0x11c404ba
+}
+member {
+  id: 0xbf26ddb2
+  name: "hwtstamp"
+  type_id: 0x2d574b1d
+  offset: 128
+}
+member {
+  id: 0x26a7a62e
+  name: "hyp"
+  type_id: 0x5f02424f
+  offset: 256
+}
+member {
+  id: 0x2308514c
+  name: "hyp_donate_host"
+  type_id: 0x24401166
+  offset: 1408
+}
+member {
+  id: 0x636da10f
+  name: "hyp_pa"
+  type_id: 0x0b71f929
+  offset: 1856
+}
+member {
+  id: 0x6f066e7f
+  name: "hyp_va"
+  type_id: 0x14e88d4b
+  offset: 1920
+}
+member {
+  id: 0x32e7dee3
+  name: "hypercall"
+  type_id: 0x2c32891d
+}
+member {
+  id: 0x8a1c8492
+  name: "hyperv"
+  type_id: 0x7ff97877
+}
+member {
+  id: 0xaf8a45d4
+  name: "hysteresis"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x861586bb
+  name: "i"
+  type_id: 0xb3e7bac9
+  offset: 48
+}
+member {
+  id: 0xd4146c29
+  name: "i2c"
+  type_id: 0x125b2ca2
+}
+member {
+  id: 0xd4354680
+  name: "i2c"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xd4be13cc
+  name: "i2c"
+  type_id: 0xb82581e5
+  offset: 7360
+}
+member {
+  id: 0xd4d5f6c6
+  name: "i2c"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0x85709fb6
+  name: "i2c_address"
+  type_id: 0x295c7202
+  offset: 80
+}
+member {
+  id: 0xaa53641e
+  name: "i2c_xfers"
+  type_id: 0x2c4a4aa0
+  offset: 704
+}
+member {
+  id: 0x586094ff
+  name: "i32"
+  type_id: 0x1b6613ee
+}
+member {
+  id: 0xe734a153
+  name: "i3c"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0xe7d41c36
+  name: "i3c"
+  type_id: 0x33756485
+}
+member {
+  id: 0x7c005144
+  name: "iConfiguration"
+  type_id: 0xb3e7bac9
+  offset: 48
+}
+member {
+  id: 0x7c9ae514
+  name: "iConfiguration"
+  type_id: 0x295c7202
+  offset: 328
+}
+member {
+  id: 0x8d9bb436
+  name: "iCountryCodeRelDate"
+  type_id: 0xb3e7bac9
+  offset: 24
+}
+member {
+  id: 0x6000efd9
+  name: "iFunction"
+  type_id: 0xb3e7bac9
+  offset: 56
+}
+member {
+  id: 0x2a5c2a49
+  name: "iInterface"
+  type_id: 0xb3e7bac9
+  offset: 64
+}
+member {
+  id: 0x2b8bb683
+  name: "iMACAddress"
+  type_id: 0xb3e7bac9
+  offset: 24
+}
+member {
+  id: 0x75a6bfff
+  name: "iManufacturer"
+  type_id: 0xb3e7bac9
+  offset: 112
+}
+member {
+  id: 0x1d11bec1
+  name: "iName"
+  type_id: 0xb3e7bac9
+  offset: 32
+}
+member {
+  id: 0xe6970d0f
+  name: "iProduct"
+  type_id: 0xb3e7bac9
+  offset: 120
+}
+member {
+  id: 0xd8623ec9
+  name: "iSerialNumber"
+  type_id: 0xb3e7bac9
+  offset: 128
+}
+member {
+  id: 0xfffdd592
+  name: "i_acl"
+  type_id: 0x20e8fc5a
+  offset: 128
+}
+member {
+  id: 0xa8200ce9
+  name: "i_atime"
+  type_id: 0x399c459b
+  offset: 704
+}
+member {
+  id: 0x015a04f2
+  name: "i_blkbits"
+  type_id: 0x295c7202
+  offset: 1136
+}
+member {
+  id: 0xf84ea954
+  name: "i_blocks"
+  type_id: 0x022008d0
+  offset: 1152
+}
+member {
+  id: 0xd8699378
+  name: "i_bytes"
+  type_id: 0xc93e017b
+  offset: 1120
+}
+member {
+  id: 0x97b314d8
+  name: "i_cdev"
+  type_id: 0x1d4da256
+}
+member {
+  id: 0x2d1f7404
+  name: "i_count"
+  type_id: 0x74d29cf1
+  offset: 2944
+}
+member {
+  id: 0x9829bbfd
+  name: "i_crtime"
+  type_id: 0x399c459b
+  offset: 832
+}
+member {
+  id: 0x7e005c8d
+  name: "i_crypt_info"
+  type_id: 0x26f99b29
+  offset: 5440
+}
+member {
+  id: 0xe3b9ec16
+  name: "i_ctime"
+  type_id: 0x399c459b
+  offset: 960
+}
+member {
+  id: 0x8502b23a
+  name: "i_cur"
+  type_id: 0x0092c032
+  offset: 64
+}
+member {
+  id: 0x5bafa68d
+  name: "i_data"
+  type_id: 0x7c4a4a84
+  offset: 3200
+}
+member {
+  id: 0x2665f7b3
+  name: "i_default_acl"
+  type_id: 0x20e8fc5a
+  offset: 192
+}
+member {
+  id: 0x3bdc741a
+  name: "i_dentry"
+  type_id: 0x5e8dc7f4
+}
+member {
+  id: 0x26826d33
+  name: "i_devices"
+  type_id: 0xd3c80119
+  offset: 5120
+}
+member {
+  id: 0x8d92da03
+  name: "i_dio_count"
+  type_id: 0x74d29cf1
+  offset: 2976
+}
+member {
+  id: 0x35229d2e
+  name: "i_dir_seq"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x1ff56383
+  name: "i_fieldmask"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xac8a13ae
+  name: "i_flags"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xac8a1716
+  name: "i_flags"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0xacba12f4
+  name: "i_flags"
+  type_id: 0x7584e7da
+  offset: 160
+}
+member {
+  id: 0x3f66e156
+  name: "i_flctx"
+  type_id: 0x0200b127
+  offset: 3136
+}
+member {
+  id: 0x85c53864
+  name: "i_fop"
+  type_id: 0x36d130d1
+}
+member {
+  id: 0x0cb03e11
+  name: "i_fsnotify_marks"
+  type_id: 0x3bd2bf42
+  offset: 5376
+}
+member {
+  id: 0x5b9ce8bd
+  name: "i_fsnotify_mask"
+  type_id: 0xe62ebf07
+  offset: 5344
+}
+member {
+  id: 0x79ad2302
+  name: "i_generation"
+  type_id: 0xe62ebf07
+  offset: 5312
+}
+member {
+  id: 0xf7de4eb3
+  name: "i_gid"
+  type_id: 0xb0ddb211
+  offset: 64
+}
+member {
+  id: 0xe17fe409
+  name: "i_hash"
+  type_id: 0x49a73111
+  offset: 1920
+}
+member {
+  id: 0x47eee67e
+  name: "i_ino"
+  type_id: 0x33756485
+  offset: 512
+}
+member {
+  id: 0x27bc9e88
+  name: "i_ino_timelimit"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x128cdf09
+  name: "i_ino_warnlimit"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0xde7fd39f
+  name: "i_io_list"
+  type_id: 0xd3c80119
+  offset: 2048
+}
+member {
+  id: 0xfbc9b763
+  name: "i_key"
+  type_id: 0xe276adef
+  offset: 192
+}
+member {
+  id: 0x3f32c519
+  name: "i_klist"
+  type_id: 0x2fee15d8
+}
+member {
+  id: 0x7a534c1e
+  name: "i_link"
+  type_id: 0x0483e6f8
+}
+member {
+  id: 0x0adf36ee
+  name: "i_lock"
+  type_id: 0xf313e71a
+  offset: 1088
+}
+member {
+  id: 0x9d1c60dd
+  name: "i_lock_key"
+  type_id: 0x475137a2
+  offset: 576
+}
+member {
+  id: 0x683d38c1
+  name: "i_lru"
+  type_id: 0xd3c80119
+  offset: 2304
+}
+member {
+  id: 0x4ddb9822
+  name: "i_mapping"
+  type_id: 0x1582ab06
+  offset: 384
+}
+member {
+  id: 0xe1738187
+  name: "i_mmap"
+  type_id: 0xd0f3b5bf
+  offset: 768
+}
+member {
+  id: 0x2f24f0d1
+  name: "i_mmap_rwsem"
+  type_id: 0x28b9ec9a
+  offset: 896
+}
+member {
+  id: 0xf4349e73
+  name: "i_mmap_writable"
+  type_id: 0x74d29cf1
+  offset: 736
+}
+member {
+  id: 0x4bfa0565
+  name: "i_mode"
+  type_id: 0x1253769c
+}
+member {
+  id: 0xfea11fab
+  name: "i_mtime"
+  type_id: 0x399c459b
+  offset: 832
+}
+member {
+  id: 0x91bef77e
+  name: "i_mutex_dir_key"
+  type_id: 0x475137a2
+  offset: 576
+}
+member {
+  id: 0xfe1c41cb
+  name: "i_mutex_key"
+  type_id: 0x475137a2
+  offset: 576
+}
+member {
+  id: 0x373e605f
+  name: "i_nlink"
+  type_id: 0xcd70b42d
+}
+member {
+  id: 0x811fd17d
+  name: "i_op"
+  type_id: 0x3fb1217f
+  offset: 256
+}
+member {
+  id: 0x5a533102
+  name: "i_opflags"
+  type_id: 0xc93e017b
+  offset: 16
+}
+member {
+  id: 0xce6bac98
+  name: "i_pages"
+  type_id: 0x80c20070
+  offset: 64
+}
+member {
+  id: 0x8b80626d
+  name: "i_pipe"
+  type_id: 0x0b3a3706
+}
+member {
+  id: 0x68bd901c
+  name: "i_private"
+  type_id: 0x18bd6530
+  offset: 5568
+}
+member {
+  id: 0x998e9b78
+  name: "i_rcu"
+  type_id: 0xe3222f5b
+}
+member {
+  id: 0xc0a2ce86
+  name: "i_rdev"
+  type_id: 0xeb0f6de6
+  offset: 608
+}
+member {
+  id: 0xb1540c02
+  name: "i_readcount"
+  type_id: 0x74d29cf1
+  offset: 3040
+}
+member {
+  id: 0x66815328
+  name: "i_rt_spc_timelimit"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0xff287409
+  name: "i_rt_spc_warnlimit"
+  type_id: 0x4585663f
+  offset: 224
+}
+member {
+  id: 0x5911dd75
+  name: "i_rwsem"
+  type_id: 0x28b9ec9a
+  offset: 1280
+}
+member {
+  id: 0x0b4fee75
+  name: "i_sb"
+  type_id: 0x26ee682a
+  offset: 320
+}
+member {
+  id: 0x4eca23b5
+  name: "i_sb_list"
+  type_id: 0xd3c80119
+  offset: 2432
+}
+member {
+  id: 0xa327e1be
+  name: "i_security"
+  type_id: 0x18bd6530
+  offset: 448
+}
+member {
+  id: 0xace55654
+  name: "i_seq"
+  type_id: 0x92233392
+}
+member {
+  id: 0x5da31216
+  name: "i_sequence"
+  type_id: 0x1f4573ef
+  offset: 2880
+}
+member {
+  id: 0x426ac742
+  name: "i_size"
+  type_id: 0x27a7c613
+  offset: 640
+}
+member {
+  id: 0x63c48faf
+  name: "i_spc_timelimit"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x3ebd1267
+  name: "i_spc_warnlimit"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0x7a5f1cd6
+  name: "i_state"
+  type_id: 0x33756485
+  offset: 1216
+}
+member {
+  id: 0x13510702
+  name: "i_thresh"
+  type_id: 0x4585663f
+  offset: 2752
+}
+member {
+  id: 0xdfbcd436
+  name: "i_uid"
+  type_id: 0xe90b32b7
+  offset: 32
+}
+member {
+  id: 0xd66fa8cb
+  name: "i_verity_info"
+  type_id: 0x0a6c2073
+  offset: 5504
+}
+member {
+  id: 0x01184216
+  name: "i_version"
+  type_id: 0x1f4573ef
+  offset: 2816
+}
+member {
+  id: 0x10d1f0ba
+  name: "i_wb"
+  type_id: 0x084ef4c8
+  offset: 2176
+}
+member {
+  id: 0x02644289
+  name: "i_wb_frn_avg_time"
+  type_id: 0x914dbfdc
+  offset: 2272
+}
+member {
+  id: 0x315b8712
+  name: "i_wb_frn_history"
+  type_id: 0x914dbfdc
+  offset: 2288
+}
+member {
+  id: 0xd1bb1f30
+  name: "i_wb_frn_winner"
+  type_id: 0x6720d32f
+  offset: 2240
+}
+member {
+  id: 0xc1e6ff96
+  name: "i_wb_list"
+  type_id: 0xd3c80119
+  offset: 2560
+}
+member {
+  id: 0xfe916464
+  name: "i_write_hint"
+  type_id: 0x295c7202
+  offset: 1144
+}
+member {
+  id: 0x34db220a
+  name: "i_writecount"
+  type_id: 0x74d29cf1
+  offset: 3008
+}
+member {
+  id: 0xa90e4060
+  name: "ia_atime"
+  type_id: 0x399c459b
+  offset: 64
+}
+member {
+  id: 0xa90e4c48
+  name: "ia_atime"
+  type_id: 0x399c459b
+  offset: 192
+}
+member {
+  id: 0x83618e44
+  name: "ia_bits"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x7af3be67
+  name: "ia_ctime"
+  type_id: 0x399c459b
+  offset: 448
+}
+member {
+  id: 0x7af3bed7
+  name: "ia_ctime"
+  type_id: 0x399c459b
+  offset: 320
+}
+member {
+  id: 0x90455469
+  name: "ia_file"
+  type_id: 0x18ea6ae3
+  offset: 576
+}
+member {
+  id: 0x5d327703
+  name: "ia_gid"
+  type_id: 0xb0ddb211
+}
+member {
+  id: 0x5d327a38
+  name: "ia_gid"
+  type_id: 0xb0ddb211
+  offset: 32
+}
+member {
+  id: 0xb45d76b8
+  name: "ia_mode"
+  type_id: 0x1253769c
+  offset: 32
+}
+member {
+  id: 0x068477e1
+  name: "ia_mtime"
+  type_id: 0x399c459b
+  offset: 192
+}
+member {
+  id: 0x068478ef
+  name: "ia_mtime"
+  type_id: 0x399c459b
+  offset: 320
+}
+member {
+  id: 0xd81735d2
+  name: "ia_range"
+  type_id: 0xfa7638a9
+  offset: 832
+}
+member {
+  id: 0x9a2d1067
+  name: "ia_ranges"
+  type_id: 0x1b9904e3
+  offset: 4352
+}
+member {
+  id: 0xce69e6d3
+  name: "ia_size"
+  type_id: 0x27a7c613
+  offset: 128
+}
+member {
+  id: 0xcc167c20
+  name: "ia_uid"
+  type_id: 0xe90b32b7
+}
+member {
+  id: 0xb29d64d4
+  name: "ia_valid"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xbf360f83
+  name: "ia_vfsgid"
+  type_id: 0x9ea3b209
+}
+member {
+  id: 0x082b1975
+  name: "ia_vfsuid"
+  type_id: 0x7c96d56f
+}
+member {
+  id: 0xff8cc9b4
+  name: "iaa_in_progress"
+  type_id: 0x6d7f5ff6
+  offset: 1827
+  bitsize: 1
+}
+member {
+  id: 0x11d4a82c
+  name: "ias"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x481a087b
+  name: "iattr"
+  type_id: 0x05dc2a7b
+  offset: 960
+}
+member {
+  id: 0xbe9ec451
+  name: "iatu_unroll_enabled"
+  type_id: 0x6d7f5ff6
+  offset: 3664
+  bitsize: 1
+}
+member {
+  id: 0xe8f0d6c1
+  name: "ib_window_map"
+  type_id: 0x064d6086
+  offset: 576
+}
+member {
+  id: 0xe352e743
+  name: "ibendport"
+  type_id: 0x39ffc4a3
+}
+member {
+  id: 0x92f5ddb1
+  name: "ibi"
+  type_id: 0x1698d083
+  offset: 832
+}
+member {
+  id: 0x8037a98d
+  name: "ibi_lock"
+  type_id: 0xa7c362b0
+  offset: 448
+}
+member {
+  id: 0x6bb5d251
+  name: "ibpkey"
+  type_id: 0x0e09b329
+}
+member {
+  id: 0x94e48f9e
+  name: "ibss"
+  type_id: 0x26eb875a
+}
+member {
+  id: 0x27f5e987
+  name: "icache_inval_pou"
+  type_id: 0x0fc9cef8
+  offset: 576
+}
+member {
+  id: 0x8b721752
+  name: "icanon"
+  type_id: 0x4585663f
+  offset: 416
+  bitsize: 1
+}
+member {
+  id: 0x9dfcef2c
+  name: "icc_paths"
+  type_id: 0x0c85bb61
+  offset: 384
+}
+member {
+  id: 0x0d14b464
+  name: "icg"
+  type_id: 0xf435685e
+  offset: 64
+}
+member {
+  id: 0xf57d8527
+  name: "icmp"
+  type_id: 0xa82466eb
+  offset: 576
+}
+member {
+  id: 0xf5dac657
+  name: "icmp"
+  type_id: 0x0f6e64b7
+}
+member {
+  id: 0xf5fed2dd
+  name: "icmp"
+  type_id: 0x2b7aeec6
+}
+member {
+  id: 0x5018d4ab
+  name: "icmp_hdr"
+  type_id: 0x34544a3f
+  offset: 128
+}
+member {
+  id: 0xdf929f4a
+  name: "icmp_statistics"
+  type_id: 0x2b347456
+  offset: 576
+}
+member {
+  id: 0x79cc740e
+  name: "icmpmsg_statistics"
+  type_id: 0x21e6cb2c
+  offset: 640
+}
+member {
+  id: 0x626f4094
+  name: "icmpt"
+  type_id: 0x0f401ca8
+}
+member {
+  id: 0x8df0f880
+  name: "icmpv6"
+  type_id: 0xa82466eb
+  offset: 608
+}
+member {
+  id: 0x8fefe80d
+  name: "icmpv6_echo_ignore_all"
+  type_id: 0x295c7202
+  offset: 672
+}
+member {
+  id: 0xda6d244f
+  name: "icmpv6_echo_ignore_anycast"
+  type_id: 0x295c7202
+  offset: 688
+}
+member {
+  id: 0xf64736d0
+  name: "icmpv6_echo_ignore_multicast"
+  type_id: 0x295c7202
+  offset: 680
+}
+member {
+  id: 0x230c5b9d
+  name: "icmpv6_ratemask"
+  type_id: 0x80904a3b
+  offset: 704
+}
+member {
+  id: 0xee9eaf49
+  name: "icmpv6_ratemask_ptr"
+  type_id: 0x064d6086
+  offset: 960
+}
+member {
+  id: 0xd92e42e6
+  name: "icmpv6_statistics"
+  type_id: 0x1dcfe80e
+  offset: 704
+}
+member {
+  id: 0x970b933d
+  name: "icmpv6_time"
+  type_id: 0x6720d32f
+  offset: 640
+}
+member {
+  id: 0x33b71b9d
+  name: "icmpv6dev"
+  type_id: 0x3632646e
+  offset: 128
+}
+member {
+  id: 0x988f4b0d
+  name: "icmpv6msg_statistics"
+  type_id: 0x3cd81844
+  offset: 768
+}
+member {
+  id: 0xda3c6150
+  name: "icmpv6msgdev"
+  type_id: 0x02900546
+  offset: 192
+}
+member {
+  id: 0x083df854
+  name: "icount"
+  type_id: 0x63b8b563
+  offset: 5536
+}
+member {
+  id: 0x0843960a
+  name: "icount"
+  type_id: 0x1dd4b558
+  offset: 1664
+}
+member {
+  id: 0xa6e46395
+  name: "icptcode"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0x9263012c
+  name: "icq"
+  type_id: 0x1e93567a
+}
+member {
+  id: 0x57bbe145
+  name: "icq_align"
+  type_id: 0xf435685e
+  offset: 1792
+}
+member {
+  id: 0x49a24dd5
+  name: "icq_cache"
+  type_id: 0x2efd5036
+}
+member {
+  id: 0x1d70cba0
+  name: "icq_cache_name"
+  type_id: 0xe234e611
+  offset: 2304
+}
+member {
+  id: 0x6e0e0c77
+  name: "icq_hint"
+  type_id: 0x1e93567a
+  offset: 320
+}
+member {
+  id: 0xe00c5617
+  name: "icq_list"
+  type_id: 0xd3c80119
+  offset: 3456
+}
+member {
+  id: 0xe0811809
+  name: "icq_list"
+  type_id: 0x5e8dc7f4
+  offset: 384
+}
+member {
+  id: 0x60740a1a
+  name: "icq_size"
+  type_id: 0xf435685e
+  offset: 1728
+}
+member {
+  id: 0xd9df7ea6
+  name: "icq_tree"
+  type_id: 0x80c20070
+  offset: 192
+}
+member {
+  id: 0xa75f3275
+  name: "icv_len"
+  type_id: 0x914dbfdc
+  offset: 208
+}
+member {
+  id: 0xcc0670e3
+  name: "id"
+  type_id: 0x295c7202
+}
+member {
+  id: 0xcc06782a
+  name: "id"
+  type_id: 0x295c7202
+  offset: 192
+}
+member {
+  id: 0xcc067b05
+  name: "id"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0xcc104442
+  name: "id"
+  type_id: 0x3f687816
+  offset: 256
+}
+member {
+  id: 0xcc1134ed
+  name: "id"
+  type_id: 0x3e10b518
+  offset: 192
+}
+member {
+  id: 0xcc1138c5
+  name: "id"
+  type_id: 0x3e10b518
+  offset: 64
+}
+member {
+  id: 0xcc113c24
+  name: "id"
+  type_id: 0x3e10b518
+}
+member {
+  id: 0xcc129090
+  name: "id"
+  type_id: 0x3db8d8c8
+  offset: 288
+}
+member {
+  id: 0xcc1294e2
+  name: "id"
+  type_id: 0x3db8d8c8
+  offset: 256
+}
+member {
+  id: 0xcc14b602
+  name: "id"
+  type_id: 0x3b935135
+  offset: 128
+}
+member {
+  id: 0xcc163765
+  name: "id"
+  type_id: 0x391f15ea
+  offset: 64
+}
+member {
+  id: 0xcc18347c
+  name: "id"
+  type_id: 0x37145079
+  offset: 1608
+}
+member {
+  id: 0xcc248bda
+  name: "id"
+  type_id: 0x0baa70a7
+  offset: 32
+}
+member {
+  id: 0xcc2aa32c
+  name: "id"
+  type_id: 0x05867ff1
+  offset: 128
+}
+member {
+  id: 0xcc2aaaee
+  name: "id"
+  type_id: 0x05867ff1
+}
+member {
+  id: 0xcc2ba90e
+  name: "id"
+  type_id: 0x0483e6f8
+  offset: 640
+}
+member {
+  id: 0xcc2f5ca3
+  name: "id"
+  type_id: 0x007e8ce4
+  offset: 16
+}
+member {
+  id: 0xcc3069e2
+  name: "id"
+  type_id: 0x1f4573ef
+}
+member {
+  id: 0xcc33112f
+  name: "id"
+  type_id: 0x1c3dbe5a
+}
+member {
+  id: 0xcc34dc63
+  name: "id"
+  type_id: 0x1bf16028
+  offset: 384
+}
+member {
+  id: 0xcc480050
+  name: "id"
+  type_id: 0x6720d32f
+  offset: 7424
+}
+member {
+  id: 0xcc480086
+  name: "id"
+  type_id: 0x6720d32f
+  offset: 7520
+}
+member {
+  id: 0xcc480247
+  name: "id"
+  type_id: 0x6720d32f
+  offset: 7680
+}
+member {
+  id: 0xcc480580
+  name: "id"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0xcc4805c1
+  name: "id"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0xcc48062b
+  name: "id"
+  type_id: 0x6720d32f
+  offset: 8384
+}
+member {
+  id: 0xcc4806c1
+  name: "id"
+  type_id: 0x6720d32f
+  offset: 7296
+}
+member {
+  id: 0xcc48081b
+  name: "id"
+  type_id: 0x6720d32f
+  offset: 352
+}
+member {
+  id: 0xcc4808a3
+  name: "id"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0xcc480a3b
+  name: "id"
+  type_id: 0x6720d32f
+  offset: 640
+}
+member {
+  id: 0xcc480a8f
+  name: "id"
+  type_id: 0x6720d32f
+  offset: 864
+}
+member {
+  id: 0xcc480b35
+  name: "id"
+  type_id: 0x6720d32f
+  offset: 448
+}
+member {
+  id: 0xcc480bd0
+  name: "id"
+  type_id: 0x6720d32f
+  offset: 928
+}
+member {
+  id: 0xcc480c42
+  name: "id"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xcc480ce9
+  name: "id"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0xcc480d0a
+  name: "id"
+  type_id: 0x6720d32f
+  offset: 7360
+}
+member {
+  id: 0xcc480dd0
+  name: "id"
+  type_id: 0x6720d32f
+  offset: 384
+}
+member {
+  id: 0xcc480df2
+  name: "id"
+  type_id: 0x6720d32f
+  offset: 480
+}
+member {
+  id: 0xcc480e69
+  name: "id"
+  type_id: 0x6720d32f
+  offset: 1184
+}
+member {
+  id: 0xcc480f6e
+  name: "id"
+  type_id: 0x6720d32f
+  offset: 1664
+}
+member {
+  id: 0xcc4fe6bd
+  name: "id"
+  type_id: 0x60ca2c23
+}
+member {
+  id: 0xcc5281f4
+  name: "id"
+  type_id: 0x7dad9728
+  offset: 608
+}
+member {
+  id: 0xcc59a18a
+  name: "id"
+  type_id: 0x768d1bed
+}
+member {
+  id: 0xcc5aa1b4
+  name: "id"
+  type_id: 0x7584e7da
+  offset: 128
+}
+member {
+  id: 0xcc5aa54d
+  name: "id"
+  type_id: 0x7584e7da
+  offset: 32
+}
+member {
+  id: 0xcc5aa876
+  name: "id"
+  type_id: 0x7584e7da
+}
+member {
+  id: 0xcc5df5f7
+  name: "id"
+  type_id: 0x72d96628
+}
+member {
+  id: 0xcc67e003
+  name: "id"
+  type_id: 0x48c45b15
+  offset: 192
+}
+member {
+  id: 0xcc69484f
+  name: "id"
+  type_id: 0x4664de11
+}
+member {
+  id: 0xcc6aa13e
+  name: "id"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0xcc6aa4cc
+  name: "id"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xcc6aa72b
+  name: "id"
+  type_id: 0x4585663f
+  offset: 1152
+}
+member {
+  id: 0xcc6aa7f2
+  name: "id"
+  type_id: 0x4585663f
+  offset: 7680
+}
+member {
+  id: 0xcc6aa865
+  name: "id"
+  type_id: 0x4585663f
+  offset: 384
+}
+member {
+  id: 0xcc6aa8b0
+  name: "id"
+  type_id: 0x4585663f
+  offset: 4672
+}
+member {
+  id: 0xcc6aa9f7
+  name: "id"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xcc6aaadb
+  name: "id"
+  type_id: 0x4585663f
+  offset: 1664
+}
+member {
+  id: 0xcc6aad16
+  name: "id"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xcc6aaeab
+  name: "id"
+  type_id: 0x4585663f
+  offset: 62720
+}
+member {
+  id: 0xcc6c804c
+  name: "id"
+  type_id: 0x43acdd98
+}
+member {
+  id: 0xcc6c8d77
+  name: "id"
+  type_id: 0x43acdd98
+  offset: 32
+}
+member {
+  id: 0xcc6d01b7
+  name: "id"
+  type_id: 0x42201dce
+  offset: 32
+}
+member {
+  id: 0xcc6d054e
+  name: "id"
+  type_id: 0x42201dce
+  offset: 128
+}
+member {
+  id: 0xcc6d0c8c
+  name: "id"
+  type_id: 0x42201dce
+}
+member {
+  id: 0xcc71be77
+  name: "id"
+  type_id: 0x5e9b9471
+  offset: 576
+}
+member {
+  id: 0xcc747f06
+  name: "id"
+  type_id: 0x5b5397f8
+}
+member {
+  id: 0xcc75f0e2
+  name: "id"
+  type_id: 0x5adf57ae
+  offset: 224
+}
+member {
+  id: 0xcc8634a1
+  name: "id"
+  type_id: 0xa9183061
+}
+member {
+  id: 0xcc9cc595
+  name: "id"
+  type_id: 0xb3e7bac9
+  offset: 16
+}
+member {
+  id: 0xcc9ccb2b
+  name: "id"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0xcc9f133d
+  name: "id"
+  type_id: 0xb0312d5a
+  offset: 1696
+}
+member {
+  id: 0xccb0ba9e
+  name: "id"
+  type_id: 0x9f9c8c2b
+  offset: 7296
+}
+member {
+  id: 0xccbd0660
+  name: "id"
+  type_id: 0x92233392
+  offset: 128
+}
+member {
+  id: 0xccbd070c
+  name: "id"
+  type_id: 0x92233392
+  offset: 768
+}
+member {
+  id: 0xccbd0c18
+  name: "id"
+  type_id: 0x92233392
+  offset: 832
+}
+member {
+  id: 0xccbd0e4d
+  name: "id"
+  type_id: 0x92233392
+  offset: 7744
+}
+member {
+  id: 0xccbd0fa2
+  name: "id"
+  type_id: 0x92233392
+}
+member {
+  id: 0xccbe612e
+  name: "id"
+  type_id: 0x914dbfdc
+}
+member {
+  id: 0xccc14505
+  name: "id"
+  type_id: 0xee699492
+}
+member {
+  id: 0xccc729a8
+  name: "id"
+  type_id: 0xe8034002
+  offset: 640
+}
+member {
+  id: 0xccc9022e
+  name: "id"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xccc90a80
+  name: "id"
+  type_id: 0xe62ebf07
+  offset: 768
+}
+member {
+  id: 0xccc90f15
+  name: "id"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xcccd5ee5
+  name: "id"
+  type_id: 0xe276adef
+  offset: 288
+}
+member {
+  id: 0xcce6205b
+  name: "id"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0xcce62411
+  name: "id"
+  type_id: 0xc9082b19
+  offset: 256
+}
+member {
+  id: 0xcce624ba
+  name: "id"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xcce625f2
+  name: "id"
+  type_id: 0xc9082b19
+  offset: 7360
+}
+member {
+  id: 0xcce62687
+  name: "id"
+  type_id: 0xc9082b19
+  offset: 704
+}
+member {
+  id: 0xcce6295a
+  name: "id"
+  type_id: 0xc9082b19
+  offset: 160
+}
+member {
+  id: 0xcce62981
+  name: "id"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0xcce62a65
+  name: "id"
+  type_id: 0xc9082b19
+  offset: 544
+}
+member {
+  id: 0xcce62b00
+  name: "id"
+  type_id: 0xc9082b19
+  offset: 6112
+}
+member {
+  id: 0xcce62c14
+  name: "id"
+  type_id: 0xc9082b19
+  offset: 768
+}
+member {
+  id: 0xcce62c73
+  name: "id"
+  type_id: 0xc9082b19
+  offset: 192
+}
+member {
+  id: 0xcce62d78
+  name: "id"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0xcce62dc8
+  name: "id"
+  type_id: 0xc9082b19
+  offset: 576
+}
+member {
+  id: 0xcce62e39
+  name: "id"
+  type_id: 0xc9082b19
+  offset: 1344
+}
+member {
+  id: 0xccec49b8
+  name: "id"
+  type_id: 0xc3693b57
+  offset: 7424
+}
+member {
+  id: 0xccedb9aa
+  name: "id"
+  type_id: 0xc2953b3a
+}
+member {
+  id: 0xccf852d0
+  name: "id"
+  type_id: 0xd77e4173
+}
+member {
+  id: 0xccf854a9
+  name: "id"
+  type_id: 0xd77e4173
+  offset: 640
+}
+member {
+  id: 0xccf96a60
+  name: "id"
+  type_id: 0xd646f122
+}
+member {
+  id: 0xccfa0c4b
+  name: "id"
+  type_id: 0xd52bc7d2
+  offset: 1856
+}
+member {
+  id: 0xccfff7cf
+  name: "id"
+  type_id: 0xd0d29caf
+  offset: 128
+}
+member {
+  id: 0xbbe2c6ec
+  name: "id16"
+  type_id: 0xd671084c
+}
+member {
+  id: 0xa3d1df19
+  name: "id32"
+  type_id: 0x9d2c4a95
+}
+member {
+  id: 0xff84c5b7
+  name: "idProduct"
+  type_id: 0xe8034002
+  offset: 32
+}
+member {
+  id: 0xfff71b51
+  name: "idProduct"
+  type_id: 0x9bd401b6
+  offset: 80
+}
+member {
+  id: 0x4a2da691
+  name: "idVendor"
+  type_id: 0x9bd401b6
+  offset: 64
+}
+member {
+  id: 0x4a5e7b8f
+  name: "idVendor"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0x8391d94d
+  name: "id_addr_update_work"
+  type_id: 0x1f3c8679
+  offset: 2432
+}
+member {
+  id: 0x737238c3
+  name: "id_auto"
+  type_id: 0x6d7f5ff6
+  offset: 96
+}
+member {
+  id: 0x67a1f303
+  name: "id_edev"
+  type_id: 0x100a15ee
+  offset: 576
+}
+member {
+  id: 0xf3ddde22
+  name: "id_entry"
+  type_id: 0x30a18a98
+  offset: 7744
+}
+member {
+  id: 0x0d4977ca
+  name: "id_gen"
+  type_id: 0xc9082b19
+  offset: 12864
+}
+member {
+  id: 0xba6f54b9
+  name: "id_hash"
+  type_id: 0x394dcf37
+  offset: 320
+}
+member {
+  id: 0x05495988
+  name: "id_header"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xeee8ea60
+  name: "id_header_size"
+  type_id: 0x914dbfdc
+  offset: 2768
+}
+member {
+  id: 0x109fae1f
+  name: "id_highbits"
+  type_id: 0xc9082b19
+  offset: 352
+}
+member {
+  id: 0x893f7dee
+  name: "id_len"
+  type_id: 0x5d8155a5
+  offset: 256
+}
+member {
+  id: 0x894ba3d8
+  name: "id_len"
+  type_id: 0x295c7202
+  offset: 832
+}
+member {
+  id: 0x6fdd8745
+  name: "id_match"
+  type_id: 0x3470c1da
+  offset: 256
+}
+member {
+  id: 0xb773aefe
+  name: "id_nb"
+  type_id: 0x449a775b
+  offset: 832
+}
+member {
+  id: 0x5fb9b5cc
+  name: "id_node"
+  type_id: 0x7ec08ca7
+}
+member {
+  id: 0xd3d51732
+  name: "id_number"
+  type_id: 0x6720d32f
+  offset: 8512
+}
+member {
+  id: 0xdaeab405
+  name: "id_offset"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0xdaeab50e
+  name: "id_offset"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0xc0f9d15e
+  name: "id_size"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0xc0f9d53d
+  name: "id_size"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0xc4f2628b
+  name: "id_table"
+  type_id: 0x31ad3cde
+  offset: 192
+}
+member {
+  id: 0xc4f2675c
+  name: "id_table"
+  type_id: 0x31a2d17a
+  offset: 1408
+}
+member {
+  id: 0xc4f36087
+  name: "id_table"
+  type_id: 0x30a18a98
+  offset: 1792
+}
+member {
+  id: 0xc4f4d658
+  name: "id_table"
+  type_id: 0x3719ef1e
+  offset: 192
+}
+member {
+  id: 0xc4f4eccb
+  name: "id_table"
+  type_id: 0x372f54f8
+  offset: 64
+}
+member {
+  id: 0xc4f7a807
+  name: "id_table"
+  type_id: 0x346d8a0d
+  offset: 1408
+}
+member {
+  id: 0xc4f8ef3b
+  name: "id_table"
+  type_id: 0x3b2ca4e8
+  offset: 64
+}
+member {
+  id: 0xc4fa557c
+  name: "id_table"
+  type_id: 0x39947122
+  offset: 1792
+}
+member {
+  id: 0xc4fbc795
+  name: "id_table"
+  type_id: 0x38040a6c
+  offset: 64
+}
+member {
+  id: 0xc4fbca06
+  name: "id_table"
+  type_id: 0x38040a6c
+  offset: 576
+}
+member {
+  id: 0xc4fcce2a
+  name: "id_table"
+  type_id: 0x3f095459
+}
+member {
+  id: 0xc4fd2698
+  name: "id_table"
+  type_id: 0x3ee507c8
+  offset: 64
+}
+member {
+  id: 0xc4fd78b2
+  name: "id_table"
+  type_id: 0x3eb9b5ea
+  offset: 640
+}
+member {
+  id: 0xc4fe5161
+  name: "id_table"
+  type_id: 0x3d9d0240
+  offset: 1856
+}
+member {
+  id: 0xc4ff9e8c
+  name: "id_table"
+  type_id: 0x3c5315c3
+  offset: 1536
+}
+member {
+  id: 0xc4ffea9e
+  name: "id_table"
+  type_id: 0x3c24585d
+  offset: 1600
+}
+member {
+  id: 0xdf043932
+  name: "id_type"
+  type_id: 0x3e10b518
+  offset: 256
+}
+member {
+  id: 0x6a77f134
+  name: "id_up_len"
+  type_id: 0x295c7202
+  offset: 840
+}
+member {
+  id: 0x9c6baca0
+  name: "ida"
+  type_id: 0xe1a31370
+  offset: 9088
+}
+member {
+  id: 0x50f15a4b
+  name: "idai"
+  type_id: 0x6d7f5ff6
+  offset: 32
+}
+member {
+  id: 0xc093344b
+  name: "ident"
+  type_id: 0xb3e7bac9
+  offset: 528
+}
+member {
+  id: 0xc0933ca3
+  name: "ident"
+  type_id: 0xb3e7bac9
+  offset: 352
+}
+member {
+  id: 0xf8931a4b
+  name: "ident_lock"
+  type_id: 0xa7c362b0
+  offset: 1472
+}
+member {
+  id: 0x926bb937
+  name: "identifier"
+  type_id: 0xc9082b19
+  offset: 448
+}
+member {
+  id: 0x926bb987
+  name: "identifier"
+  type_id: 0xc9082b19
+  offset: 320
+}
+member {
+  id: 0x92c27c47
+  name: "identifier"
+  type_id: 0x60ca2c23
+}
+member {
+  id: 0x0b59635e
+  name: "identity"
+  type_id: 0xc9082b19
+  offset: 2144
+}
+member {
+  id: 0x0b8faa08
+  name: "identity"
+  type_id: 0x1fcb234b
+  offset: 7360
+}
+member {
+  id: 0x0b8fafa1
+  name: "identity"
+  type_id: 0x1fcb234b
+  offset: 64
+}
+member {
+  id: 0x0be851e4
+  name: "identity"
+  type_id: 0x78356643
+  offset: 64
+}
+member {
+  id: 0x115fa561
+  name: "identity_resolving_keys"
+  type_id: 0xd3c80119
+  offset: 29952
+}
+member {
+  id: 0x0c06b72f
+  name: "idev"
+  type_id: 0x3ba05ad7
+  offset: 128
+}
+member {
+  id: 0xeabb476a
+  name: "idgen_delay"
+  type_id: 0x6720d32f
+  offset: 1088
+}
+member {
+  id: 0xf196cd6c
+  name: "idgen_retries"
+  type_id: 0x6720d32f
+  offset: 1056
+}
+member {
+  id: 0x5718db2f
+  name: "idle"
+  type_id: 0x1d19a9d5
+  offset: 21824
+}
+member {
+  id: 0x57288b3c
+  name: "idle"
+  type_id: 0x2d4f78f9
+  offset: 640
+}
+member {
+  id: 0x5762e1d3
+  name: "idle"
+  type_id: 0x6720d32f
+  offset: 2752
+}
+member {
+  id: 0x5762e56c
+  name: "idle"
+  type_id: 0x6720d32f
+  offset: 2048
+}
+member {
+  id: 0x5768b95e
+  name: "idle"
+  type_id: 0x6d7f5ff6
+  offset: 8928
+}
+member {
+  id: 0xf365cab6
+  name: "idle_balance"
+  type_id: 0x5d8155a5
+  offset: 23496
+}
+member {
+  id: 0x4a8c7ce1
+  name: "idle_bias_off"
+  type_id: 0x4585663f
+  offset: 32
+  bitsize: 1
+}
+member {
+  id: 0x0070780a
+  name: "idle_bias_on"
+  type_id: 0x4585663f
+  offset: 2561
+  bitsize: 1
+}
+member {
+  id: 0xafe870ea
+  name: "idle_h_nr_running"
+  type_id: 0x4585663f
+  offset: 224
+}
+member {
+  id: 0x1e0f229f
+  name: "idle_list"
+  type_id: 0xd3c80119
+  offset: 512
+}
+member {
+  id: 0xbd4ff6bb
+  name: "idle_notification"
+  type_id: 0x4585663f
+  offset: 1987
+  bitsize: 1
+}
+member {
+  id: 0x0df87d40
+  name: "idle_nr_running"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0x3bb616b6
+  name: "idle_periods"
+  type_id: 0x4585663f
+  offset: 1504
+}
+member {
+  id: 0xf5c5cc36
+  name: "idle_slot_node"
+  type_id: 0xd3c80119
+  offset: 64
+}
+member {
+  id: 0x86080473
+  name: "idle_slots"
+  type_id: 0xd3c80119
+  offset: 1280
+}
+member {
+  id: 0x514a5410
+  name: "idle_slots_lock"
+  type_id: 0xf313e71a
+  offset: 1408
+}
+member {
+  id: 0x9e6e6735
+  name: "idle_slots_wait_queue"
+  type_id: 0x03913382
+  offset: 1088
+}
+member {
+  id: 0xccf5fa83
+  name: "idle_stamp"
+  type_id: 0x92233392
+  offset: 26624
+}
+member {
+  id: 0x64ebbe18
+  name: "idle_state"
+  type_id: 0x3a47ea7a
+  offset: 256
+}
+member {
+  id: 0x64ef54cb
+  name: "idle_state"
+  type_id: 0x3eafc7e2
+  offset: 28800
+}
+member {
+  id: 0x74d6a2cd
+  name: "idle_time"
+  type_id: 0x92233392
+  offset: 384
+}
+member {
+  id: 0xb1be65fe
+  name: "idle_timeout"
+  type_id: 0xe62ebf07
+  offset: 7072
+}
+member {
+  id: 0x83e722f1
+  name: "idle_timer"
+  type_id: 0xd298e888
+  offset: 640
+}
+member {
+  id: 0x83fcb6b8
+  name: "idle_timer"
+  type_id: 0xc9082b19
+  offset: 1408
+}
+member {
+  id: 0x35846471
+  name: "idle_work"
+  type_id: 0xf1159c31
+  offset: 6400
+}
+member {
+  id: 0xa0cfbb99
+  name: "idmap_scratch"
+  type_id: 0xdc4d09b0
+  offset: 70848
+}
+member {
+  id: 0xb7a34395
+  name: "idmask"
+  type_id: 0x295c7202
+  offset: 200
+}
+member {
+  id: 0xafb033a8
+  name: "idn"
+  type_id: 0xb3e7bac9
+  offset: 8
+}
+member {
+  id: 0xb0053b5f
+  name: "idr"
+  type_id: 0x04b89667
+}
+member {
+  id: 0xb0053fbe
+  name: "idr"
+  type_id: 0x04b89667
+  offset: 64
+}
+member {
+  id: 0xb39497dd
+  name: "idr_base"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x607ab1a7
+  name: "idr_lock"
+  type_id: 0xf313e71a
+}
+member {
+  id: 0x0a93d6a6
+  name: "idr_mutex"
+  type_id: 0xa7c362b0
+  offset: 1024
+}
+member {
+  id: 0xf67054d4
+  name: "idr_next"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0x1d1b69d4
+  name: "idr_pic_id"
+  type_id: 0xe8034002
+  offset: 4192
+}
+member {
+  id: 0x698983ea
+  name: "idr_rt"
+  type_id: 0x80c20070
+}
+member {
+  id: 0x63938e73
+  name: "idrinfo"
+  type_id: 0x3442a45d
+  offset: 128
+}
+member {
+  id: 0x7637ba60
+  name: "ids"
+  type_id: 0xf67b8436
+  offset: 192
+}
+member {
+  id: 0x76ca962a
+  name: "ids"
+  type_id: 0x0b5f07f4
+}
+member {
+  id: 0x3c4ef00c
+  name: "idx"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x3c4ef8c5
+  name: "idx"
+  type_id: 0xc9082b19
+  offset: 192
+}
+member {
+  id: 0x3c4ef9ce
+  name: "idx"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0x3c4efd37
+  name: "idx"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x3c7bf3b6
+  name: "idx"
+  type_id: 0xfc0e1dbd
+  offset: 67840
+}
+member {
+  id: 0x3c91820b
+  name: "idx"
+  type_id: 0x16749208
+  offset: 16
+}
+member {
+  id: 0x3caea455
+  name: "idx"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x3cc2707a
+  name: "idx"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x3ce0d136
+  name: "idx"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x3ce0d177
+  name: "idx"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0x3ce0d8f4
+  name: "idx"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x3ce0dc2d
+  name: "idx"
+  type_id: 0x6720d32f
+  offset: 288
+}
+member {
+  id: 0x97fb3277
+  name: "idx_max"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x0cd144cb
+  name: "ie"
+  type_id: 0x3f0185ef
+  offset: 256
+}
+member {
+  id: 0x96459de0
+  name: "ie_len"
+  type_id: 0xf435685e
+  offset: 320
+}
+member {
+  id: 0x28087a0b
+  name: "iec958"
+  type_id: 0x6c8e86b4
+}
+member {
+  id: 0x8e95fdea
+  name: "ieee80211_ptr"
+  type_id: 0x39c6a784
+  offset: 6016
+}
+member {
+  id: 0x4d3cf4a5
+  name: "ieee802154_lowpan"
+  type_id: 0x7eee0fca
+  offset: 18432
+}
+member {
+  id: 0x1de87632
+  name: "ieee802154_ptr"
+  type_id: 0x0c5e7fed
+  offset: 6080
+}
+member {
+  id: 0xb689ab72
+  name: "ieee_addr"
+  type_id: 0x78f4e574
+  offset: 64
+}
+member {
+  id: 0x372baab8
+  name: "ier"
+  type_id: 0x5d8155a5
+  offset: 4912
+}
+member {
+  id: 0x37bf2dff
+  name: "ier"
+  type_id: 0xc9082b19
+  offset: 9632
+}
+member {
+  id: 0x76ed56ef
+  name: "if_1x_copper_active"
+  type_id: 0x295c7202
+  offset: 25
+  bitsize: 1
+}
+member {
+  id: 0x688215e3
+  name: "if_1x_copper_passive"
+  type_id: 0x295c7202
+  offset: 24
+  bitsize: 1
+}
+member {
+  id: 0xaa36082d
+  name: "if_1x_lx"
+  type_id: 0x295c7202
+  offset: 26
+  bitsize: 1
+}
+member {
+  id: 0x90b156bc
+  name: "if_1x_sx"
+  type_id: 0x295c7202
+  offset: 27
+  bitsize: 1
+}
+member {
+  id: 0x7eaf49aa
+  name: "if_flag"
+  type_id: 0xb3e7bac9
+  offset: 104
+}
+member {
+  id: 0x7d1e2280
+  name: "if_flags"
+  type_id: 0xe62ebf07
+  offset: 7072
+}
+member {
+  id: 0x2e77e7fa
+  name: "if_id"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x2ed9c581
+  name: "if_id"
+  type_id: 0xc9082b19
+  offset: 1344
+}
+member {
+  id: 0x2ed9cf02
+  name: "if_id"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x2ed9cfd0
+  name: "if_id"
+  type_id: 0xc9082b19
+  offset: 992
+}
+member {
+  id: 0xc85e6aab
+  name: "if_port"
+  type_id: 0x5d8155a5
+  offset: 4368
+}
+member {
+  id: 0x585c62eb
+  name: "if_version"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x6f633b58
+  name: "ifa_address"
+  type_id: 0xe276adef
+  offset: 416
+}
+member {
+  id: 0x119b718e
+  name: "ifa_broadcast"
+  type_id: 0xe276adef
+  offset: 512
+}
+member {
+  id: 0xa09b26bb
+  name: "ifa_cstamp"
+  type_id: 0x33756485
+  offset: 832
+}
+member {
+  id: 0x9188bce9
+  name: "ifa_dev"
+  type_id: 0x1c843062
+  offset: 192
+}
+member {
+  id: 0xdb88cf38
+  name: "ifa_flags"
+  type_id: 0xe62ebf07
+  offset: 576
+}
+member {
+  id: 0x73b27347
+  name: "ifa_label"
+  type_id: 0x42201dce
+  offset: 608
+}
+member {
+  id: 0x4743c5f5
+  name: "ifa_list"
+  type_id: 0x16ffe794
+  offset: 128
+}
+member {
+  id: 0xb46a6c97
+  name: "ifa_local"
+  type_id: 0xe276adef
+  offset: 384
+}
+member {
+  id: 0xc795fcb9
+  name: "ifa_mask"
+  type_id: 0xe276adef
+  offset: 448
+}
+member {
+  id: 0xa57a8ed4
+  name: "ifa_next"
+  type_id: 0x16ffe794
+  offset: 128
+}
+member {
+  id: 0xd13377ca
+  name: "ifa_preferred_lft"
+  type_id: 0xe62ebf07
+  offset: 768
+}
+member {
+  id: 0x2b3621e1
+  name: "ifa_prefixlen"
+  type_id: 0x5d8155a5
+  offset: 552
+}
+member {
+  id: 0x5afec1a1
+  name: "ifa_proto"
+  type_id: 0x5d8155a5
+  offset: 560
+}
+member {
+  id: 0x7b3fb3e8
+  name: "ifa_rt_priority"
+  type_id: 0xe62ebf07
+  offset: 480
+}
+member {
+  id: 0x5db2294e
+  name: "ifa_scope"
+  type_id: 0x5d8155a5
+  offset: 544
+}
+member {
+  id: 0xb121c544
+  name: "ifa_tstamp"
+  type_id: 0x33756485
+  offset: 896
+}
+member {
+  id: 0x49f4246b
+  name: "ifa_valid_lft"
+  type_id: 0xe62ebf07
+  offset: 736
+}
+member {
+  id: 0x81413815
+  name: "iface"
+  type_id: 0x5d8155a5
+}
+member {
+  id: 0x81413fd2
+  name: "iface"
+  type_id: 0x5d8155a5
+  offset: 320
+}
+member {
+  id: 0x817b9489
+  name: "iface"
+  type_id: 0x6720d32f
+  offset: 1120
+}
+member {
+  id: 0x81e47045
+  name: "iface"
+  type_id: 0xf8c43e2a
+  offset: 32
+}
+member {
+  id: 0x81e47d7e
+  name: "iface"
+  type_id: 0xf8c43e2a
+}
+member {
+  id: 0x615462ac
+  name: "iface_combinations"
+  type_id: 0x31b5ca26
+  offset: 640
+}
+member {
+  id: 0xbb70df22
+  name: "iface_ref"
+  type_id: 0x31cd5f14
+  offset: 64
+}
+member {
+  id: 0xf7efa6ab
+  name: "iface_ref_list"
+  type_id: 0xd3c80119
+  offset: 2496
+}
+member {
+  id: 0xd93134e1
+  name: "ifalias"
+  type_id: 0xca2a51af
+  offset: 128
+}
+member {
+  id: 0xd9c8ff3e
+  name: "ifalias"
+  type_id: 0x33e0857d
+  offset: 192
+}
+member {
+  id: 0x46c48607
+  name: "ifdown"
+  type_id: 0x0fa767da
+  offset: 448
+}
+member {
+  id: 0x9056806a
+  name: "ifindex"
+  type_id: 0x6720d32f
+  offset: 1728
+}
+member {
+  id: 0x905686dd
+  name: "ifindex"
+  type_id: 0x6720d32f
+  offset: 384
+}
+member {
+  id: 0x90568e8d
+  name: "ifindex"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x90d78923
+  name: "ifindex"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x50e32ab9
+  name: "iflags"
+  type_id: 0x33756485
+  offset: 2176
+}
+member {
+  id: 0x50f909b7
+  name: "iflags"
+  type_id: 0x295c7202
+  offset: 15400
+}
+member {
+  id: 0x102491dd
+  name: "ifname"
+  type_id: 0x0483e6f8
+  offset: 320
+}
+member {
+  id: 0x106237c4
+  name: "ifname"
+  type_id: 0x42201dce
+  offset: 1376
+}
+member {
+  id: 0xe955f32e
+  name: "ifr_ifrn"
+  type_id: 0x75b57623
+}
+member {
+  id: 0x1e1e1d10
+  name: "ifr_ifru"
+  type_id: 0x734252fe
+  offset: 128
+}
+member {
+  id: 0x8d3eaf88
+  name: "ifrn_name"
+  type_id: 0x42201dce
+}
+member {
+  id: 0x960235c0
+  name: "ifru_addr"
+  type_id: 0xf90dfce8
+}
+member {
+  id: 0x35b43c53
+  name: "ifru_broadaddr"
+  type_id: 0xf90dfce8
+}
+member {
+  id: 0xc13ca57d
+  name: "ifru_data"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0xe03cf4fb
+  name: "ifru_dstaddr"
+  type_id: 0xf90dfce8
+}
+member {
+  id: 0x18e0a2f9
+  name: "ifru_flags"
+  type_id: 0xb0312d5a
+}
+member {
+  id: 0x0ce81a3b
+  name: "ifru_hwaddr"
+  type_id: 0xf90dfce8
+}
+member {
+  id: 0x53505a5b
+  name: "ifru_ivalue"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x4cdca79b
+  name: "ifru_map"
+  type_id: 0xf183f924
+}
+member {
+  id: 0x83fe0e72
+  name: "ifru_mtu"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x7f48179d
+  name: "ifru_netmask"
+  type_id: 0xf90dfce8
+}
+member {
+  id: 0x9215d8f6
+  name: "ifru_newname"
+  type_id: 0x42201dce
+}
+member {
+  id: 0x27e2c5ba
+  name: "ifru_settings"
+  type_id: 0x54cdf9fa
+}
+member {
+  id: 0xc1f93ab1
+  name: "ifru_slave"
+  type_id: 0x42201dce
+}
+member {
+  id: 0x3c17c89c
+  name: "ifs_ifsu"
+  type_id: 0x5a8f4265
+  offset: 64
+}
+member {
+  id: 0x35a06213
+  name: "iftype"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x35a5c1d0
+  name: "iftype"
+  type_id: 0x6287f13b
+}
+member {
+  id: 0x35a5c531
+  name: "iftype"
+  type_id: 0x6287f13b
+  offset: 64
+}
+member {
+  id: 0xb1258bb8
+  name: "iftype_akm_suites"
+  type_id: 0x34aad408
+  offset: 1472
+}
+member {
+  id: 0x49a8930e
+  name: "iftype_data"
+  type_id: 0x3ee4fd9f
+  offset: 768
+}
+member {
+  id: 0x56d998ce
+  name: "iftype_ext_capab"
+  type_id: 0x3faf3b41
+  offset: 2432
+}
+member {
+  id: 0x51ec36cd
+  name: "iftypes"
+  type_id: 0xc9082b19
+  offset: 1088
+}
+member {
+  id: 0x50622db4
+  name: "iftypes_mask"
+  type_id: 0x914dbfdc
+}
+member {
+  id: 0xfa360066
+  name: "igmp_sk"
+  type_id: 0x1d44326e
+  offset: 4864
+}
+member {
+  id: 0x26baa2dd
+  name: "ignore"
+  type_id: 0x4585663f
+  offset: 1039
+  bitsize: 1
+}
+member {
+  id: 0x0227b66c
+  name: "ignore_block_suitable"
+  type_id: 0x6d7f5ff6
+  offset: 944
+}
+member {
+  id: 0xfef01a6d
+  name: "ignore_children"
+  type_id: 0x6d7f5ff6
+  offset: 1992
+  bitsize: 1
+}
+member {
+  id: 0xb8c28e15
+  name: "ignore_connecting_rst"
+  type_id: 0x6d7f5ff6
+  offset: 11336
+}
+member {
+  id: 0xa48dc1ed
+  name: "ignore_df"
+  type_id: 0xb3e7bac9
+  offset: 3
+  bitsize: 1
+}
+member {
+  id: 0xfddfadba
+  name: "ignore_hotplug"
+  type_id: 0x4585663f
+  offset: 1343
+  bitsize: 1
+}
+member {
+  id: 0x3dde7626
+  name: "ignore_machine"
+  type_id: 0x3e10b518
+  offset: 2624
+}
+member {
+  id: 0x110f1c8f
+  name: "ignore_mask"
+  type_id: 0xe62ebf07
+  offset: 512
+}
+member {
+  id: 0x480acad7
+  name: "ignore_media_change"
+  type_id: 0x4585663f
+  offset: 2831
+  bitsize: 1
+}
+member {
+  id: 0xeb82ce95
+  name: "ignore_nice_load"
+  type_id: 0x4585663f
+  offset: 1472
+}
+member {
+  id: 0x2a1caddd
+  name: "ignore_outgoing"
+  type_id: 0x6d7f5ff6
+  offset: 16
+}
+member {
+  id: 0x35f8b7d7
+  name: "ignore_pid"
+  type_id: 0x6d7f5ff6
+  offset: 960
+}
+member {
+  id: 0x26f8481d
+  name: "ignore_pmdown_time"
+  type_id: 0x4585663f
+  offset: 1038
+  bitsize: 1
+}
+member {
+  id: 0x24e8bd83
+  name: "ignore_reset_delay"
+  type_id: 0x4585663f
+  offset: 8128
+  bitsize: 1
+}
+member {
+  id: 0x3c0613fc
+  name: "ignore_resource_conflicts"
+  type_id: 0x6d7f5ff6
+  offset: 960
+}
+member {
+  id: 0xa6432924
+  name: "ignore_routes_with_linkdown"
+  type_id: 0x0faae5b1
+  offset: 768
+}
+member {
+  id: 0x008086c9
+  name: "ignore_skip_hint"
+  type_id: 0x6d7f5ff6
+  offset: 928
+}
+member {
+  id: 0x99d58e2f
+  name: "ignore_status_mask"
+  type_id: 0x4585663f
+  offset: 1536
+}
+member {
+  id: 0x568f1cf9
+  name: "ignore_suspend"
+  type_id: 0x0baa70a7
+  offset: 928
+}
+member {
+  id: 0xb28645a0
+  name: "ignore_suspend"
+  type_id: 0x5d8155a5
+  offset: 741
+  bitsize: 1
+}
+member {
+  id: 0xb29e4f29
+  name: "ignore_suspend"
+  type_id: 0x4585663f
+  offset: 1027
+  bitsize: 1
+}
+member {
+  id: 0x3cae1379
+  name: "ignore_wp"
+  type_id: 0x6d7f5ff6
+  offset: 528
+}
+member {
+  id: 0x9a38a9cd
+  name: "ignored"
+  type_id: 0x6d7f5ff6
+  offset: 768
+}
+member {
+  id: 0xf3bb30dc
+  name: "ihl"
+  type_id: 0xb3e7bac9
+  bitsize: 4
+}
+member {
+  id: 0xe814f9e5
+  name: "iif"
+  type_id: 0xc9082b19
+  offset: 320
+}
+member {
+  id: 0xaada75c0
+  name: "iifindex"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x59d0f1df
+  name: "iifname"
+  type_id: 0x42201dce
+  offset: 704
+}
+member {
+  id: 0x49daf99c
+  name: "il_vbackporch"
+  type_id: 0xe62ebf07
+  offset: 448
+}
+member {
+  id: 0xb4486525
+  name: "il_vfrontporch"
+  type_id: 0xe62ebf07
+  offset: 384
+}
+member {
+  id: 0x273d2e8a
+  name: "il_vsync"
+  type_id: 0xe62ebf07
+  offset: 416
+}
+member {
+  id: 0x4194734d
+  name: "ilim_uA"
+  type_id: 0x6720d32f
+  offset: 224
+}
+member {
+  id: 0xb3b072d5
+  name: "im_transceive"
+  type_id: 0x2db2376c
+  offset: 512
+}
+member {
+  id: 0x7712821d
+  name: "image"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0x7717c666
+  name: "image"
+  type_id: 0x1df06cce
+  offset: 576
+}
+member {
+  id: 0x77e682c9
+  name: "image"
+  type_id: 0xecb578cc
+  offset: 192
+}
+member {
+  id: 0x29fda9b7
+  name: "imb_numa_nr"
+  type_id: 0x4585663f
+  offset: 416
+}
+member {
+  id: 0x5e8c1465
+  name: "imbalance"
+  type_id: 0x6720d32f
+  offset: 320
+}
+member {
+  id: 0x5e178238
+  name: "imbalance_pct"
+  type_id: 0x4585663f
+  offset: 352
+}
+member {
+  id: 0x97255e5d
+  name: "imm"
+  type_id: 0xd41e888f
+  offset: 256
+}
+member {
+  id: 0x97600508
+  name: "imm"
+  type_id: 0x914dbfdc
+  offset: 192
+}
+member {
+  id: 0x97fee7a0
+  name: "imm"
+  type_id: 0x0faae5b1
+  offset: 32
+}
+member {
+  id: 0x56b3ee5e
+  name: "imm_ready"
+  type_id: 0x4585663f
+  offset: 1312
+  bitsize: 1
+}
+member {
+  id: 0xb85c9514
+  name: "immediate_exit"
+  type_id: 0xb3e7bac9
+  offset: 8
+}
+member {
+  id: 0x0239d915
+  name: "imod_interval"
+  type_id: 0xc9082b19
+  offset: 704
+}
+member {
+  id: 0x63af1c68
+  name: "impl_ver"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x7a0e7466
+  name: "implementation_rev"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0xf089858f
+  name: "implicit_fb"
+  type_id: 0x6d7f5ff6
+  offset: 376
+}
+member {
+  id: 0xd49a75eb
+  name: "implicit_fb_sync"
+  type_id: 0x6d7f5ff6
+  offset: 45408
+}
+member {
+  id: 0xa429dfbf
+  name: "implicit_on_dfl"
+  type_id: 0x6d7f5ff6
+  offset: 1153
+  bitsize: 1
+}
+member {
+  id: 0x6f151f16
+  name: "import"
+  type_id: 0x2d7e08ba
+  offset: 384
+}
+member {
+  id: 0x6f168d58
+  name: "import"
+  type_id: 0x2eec465d
+  offset: 384
+}
+member {
+  id: 0xa17f1d0f
+  name: "import_attach"
+  type_id: 0x1d5934ce
+  offset: 1920
+}
+member {
+  id: 0x5039dde9
+  name: "importer_ops"
+  type_id: 0x35761627
+  offset: 384
+}
+member {
+  id: 0x749b648c
+  name: "importer_priv"
+  type_id: 0x18bd6530
+  offset: 448
+}
+member {
+  id: 0x19ade51f
+  name: "imr_address"
+  type_id: 0xa54936d5
+  offset: 32
+}
+member {
+  id: 0xf77583a5
+  name: "imr_ifindex"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0xf7a2175f
+  name: "imr_multiaddr"
+  type_id: 0xa54936d5
+}
+member {
+  id: 0xcd7f7610
+  name: "imtu"
+  type_id: 0xe8034002
+  offset: 448
+}
+member {
+  id: 0x9190d34d
+  name: "imu"
+  type_id: 0x2abdbda9
+}
+member {
+  id: 0x0aacc218
+  name: "imx28_write_fix"
+  type_id: 0x4585663f
+  offset: 5614
+  bitsize: 1
+}
+member {
+  id: 0x5c0e2095
+  name: "in"
+  type_id: 0xa54936d5
+}
+member {
+  id: 0x5c54e5c6
+  name: "in"
+  type_id: 0xff8884d8
+  offset: 64
+}
+member {
+  id: 0x5c99cb61
+  name: "in"
+  type_id: 0x32a623d7
+  offset: 64
+}
+member {
+  id: 0x5ca54950
+  name: "in"
+  type_id: 0x0e2680c2
+  offset: 1792
+}
+member {
+  id: 0x5cb3d4c6
+  name: "in"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0x5ccc4e6f
+  name: "in"
+  type_id: 0x6720d32f
+  offset: 1024
+}
+member {
+  id: 0x5ceeec17
+  name: "in"
+  type_id: 0x4585663f
+  offset: 992
+}
+member {
+  id: 0x5ceeecc5
+  name: "in"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x65dc12d8
+  name: "in2_len"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x2fd917c3
+  name: "in6"
+  type_id: 0x6d25e07f
+}
+member {
+  id: 0xe9d10ccf
+  name: "in6_saddr"
+  type_id: 0x6d25e07f
+}
+member {
+  id: 0xb4bb2348
+  name: "in6_u"
+  type_id: 0x7df31ddc
+}
+member {
+  id: 0x2e6facb4
+  name: "in_ack_event"
+  type_id: 0x0fab66ce
+  offset: 256
+}
+member {
+  id: 0xf609412d
+  name: "in_ams"
+  type_id: 0x6d7f5ff6
+  offset: 34176
+}
+member {
+  id: 0x207c8b70
+  name: "in_async_callback_fn"
+  type_id: 0x6d7f5ff6
+  offset: 10880
+}
+member {
+  id: 0x6764df43
+  name: "in_batch"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x0e27bfce
+  name: "in_callback_fn"
+  type_id: 0x6d7f5ff6
+  offset: 10688
+}
+member {
+  id: 0x65df8f98
+  name: "in_count"
+  type_id: 0xe62ebf07
+  offset: 192
+}
+member {
+  id: 0xc18a018e
+  name: "in_ctx"
+  type_id: 0x34d79405
+}
+member {
+  id: 0xc18a0947
+  name: "in_ctx"
+  type_id: 0x34d79405
+  offset: 192
+}
+member {
+  id: 0xe27af1b6
+  name: "in_dpm_list"
+  type_id: 0x6d7f5ff6
+  offset: 34
+  bitsize: 1
+}
+member {
+  id: 0xe760cbcd
+  name: "in_epnum"
+  type_id: 0x4585663f
+  offset: 8320
+}
+member {
+  id: 0xedb3d9ab
+  name: "in_eventfd"
+  type_id: 0x4585663f
+  offset: 12106
+  bitsize: 1
+}
+member {
+  id: 0xac2ab618
+  name: "in_exec"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0xb4468c72
+  name: "in_execve"
+  type_id: 0x4585663f
+  offset: 12097
+  bitsize: 1
+}
+member {
+  id: 0x19746b67
+  name: "in_flight"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x19b66306
+  name: "in_flight"
+  type_id: 0x0b0dc1ff
+  offset: 1824
+}
+member {
+  id: 0x19dba48b
+  name: "in_flight"
+  type_id: 0x66ce5087
+  offset: 1088
+}
+member {
+  id: 0x598c6943
+  name: "in_flight_bytes"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0xba47f0d6
+  name: "in_hrtirq"
+  type_id: 0x4585663f
+  offset: 129
+  bitsize: 1
+}
+member {
+  id: 0x59c72968
+  name: "in_hw_count"
+  type_id: 0xc9082b19
+  offset: 1600
+}
+member {
+  id: 0xa818c2d6
+  name: "in_idle"
+  type_id: 0x74d29cf1
+  offset: 1536
+}
+member {
+  id: 0xb1d88a0c
+  name: "in_iowait"
+  type_id: 0x4585663f
+  offset: 12098
+  bitsize: 1
+}
+member {
+  id: 0xd935af97
+  name: "in_kernel"
+  type_id: 0x6d7f5ff6
+}
+member {
+  id: 0xb2ce8b46
+  name: "in_len"
+  type_id: 0xe62ebf07
+  offset: 256
+}
+member {
+  id: 0x73f70ce8
+  name: "in_lru_fault"
+  type_id: 0x4585663f
+  offset: 12100
+  bitsize: 1
+}
+member {
+  id: 0x6d3fe298
+  name: "in_memstall"
+  type_id: 0x4585663f
+  offset: 12104
+  bitsize: 1
+}
+member {
+  id: 0x6ea7d2a1
+  name: "in_page_owner"
+  type_id: 0x4585663f
+  offset: 12105
+  bitsize: 1
+}
+member {
+  id: 0x6f020de3
+  name: "in_recovery"
+  type_id: 0x6d7f5ff6
+  offset: 1968
+}
+member {
+  id: 0x2f226ee7
+  name: "in_saddr"
+  type_id: 0xa54936d5
+}
+member {
+  id: 0x3c4c15e8
+  name: "in_spin_loop"
+  type_id: 0x6d7f5ff6
+}
+member {
+  id: 0xd8c3755f
+  name: "in_tx"
+  type_id: 0xedf277ba
+  offset: 130
+  bitsize: 1
+}
+member {
+  id: 0x698e949e
+  name: "in_use"
+  type_id: 0x4585663f
+  offset: 576
+}
+member {
+  id: 0x69ac3859
+  name: "in_use"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x69bfca16
+  name: "in_use"
+  type_id: 0x74d29cf1
+}
+member {
+  id: 0x8bf6285a
+  name: "in_user_fault"
+  type_id: 0x4585663f
+  offset: 12099
+  bitsize: 1
+}
+member {
+  id: 0x28c1330f
+  name: "inactive"
+  type_id: 0x0ddccb29
+  offset: 3264
+}
+member {
+  id: 0xada310fb
+  name: "inactive_rgn_cnt"
+  type_id: 0x295c7202
+  offset: 216
+}
+member {
+  id: 0xda403e43
+  name: "inactive_timer"
+  type_id: 0xcd7704bf
+  offset: 1280
+}
+member {
+  id: 0x7f540fa6
+  name: "inactive_works"
+  type_id: 0xd3c80119
+  offset: 832
+}
+member {
+  id: 0x21489891
+  name: "iname"
+  type_id: 0xf0b9024f
+  offset: 256
+}
+member {
+  id: 0x4bd45279
+  name: "inblock"
+  type_id: 0x33756485
+  offset: 4544
+}
+member {
+  id: 0x3d3bc9d2
+  name: "inc"
+  type_id: 0x6d7f5ff6
+  offset: 4096
+}
+member {
+  id: 0xb6fb6b68
+  name: "inc_bytes"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0x123b94be
+  name: "inc_packets"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0x8e55a040
+  name: "incoming_cpu"
+  type_id: 0x914dbfdc
+  offset: 176
+}
+member {
+  id: 0x05a2abf1
+  name: "incomp"
+  type_id: 0x0f2679f1
+  offset: 768
+}
+member {
+  id: 0x878096f6
+  name: "incr"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0xad0a7512
+  name: "index"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0xad0a793a
+  name: "index"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xad0a7d70
+  name: "index"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0xad0a7ddb
+  name: "index"
+  type_id: 0x33756485
+}
+member {
+  id: 0xad1ea8be
+  name: "index"
+  type_id: 0x27a7c613
+  offset: 320
+}
+member {
+  id: 0xad32a1eb
+  name: "index"
+  type_id: 0x0baa70a7
+  offset: 224
+}
+member {
+  id: 0xad5e20a5
+  name: "index"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0xad5e20f7
+  name: "index"
+  type_id: 0x6720d32f
+  offset: 9760
+}
+member {
+  id: 0xad5e21ae
+  name: "index"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0xad5e24f2
+  name: "index"
+  type_id: 0x6720d32f
+  offset: 9600
+}
+member {
+  id: 0xad5e2557
+  name: "index"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0xad5e2822
+  name: "index"
+  type_id: 0x6720d32f
+  offset: 3616
+}
+member {
+  id: 0xad5e286c
+  name: "index"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xad5e28c7
+  name: "index"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0xad5e2924
+  name: "index"
+  type_id: 0x6720d32f
+  offset: 7360
+}
+member {
+  id: 0xad5e2b81
+  name: "index"
+  type_id: 0x6720d32f
+  offset: 9280
+}
+member {
+  id: 0xad5e2c8d
+  name: "index"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0xad66bd2e
+  name: "index"
+  type_id: 0x5fb59157
+}
+member {
+  id: 0xad7c80e2
+  name: "index"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xad7c8306
+  name: "index"
+  type_id: 0x4585663f
+  offset: 544
+}
+member {
+  id: 0xad7c831e
+  name: "index"
+  type_id: 0x4585663f
+  offset: 736
+}
+member {
+  id: 0xad7c841b
+  name: "index"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0xad7c8510
+  name: "index"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0xad7c86c1
+  name: "index"
+  type_id: 0x4585663f
+  offset: 512
+}
+member {
+  id: 0xad7c877f
+  name: "index"
+  type_id: 0x4585663f
+  offset: 896
+}
+member {
+  id: 0xad7c8938
+  name: "index"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xad7c893f
+  name: "index"
+  type_id: 0x4585663f
+  offset: 9952
+}
+member {
+  id: 0xad7c8a1e
+  name: "index"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0xad7c8a98
+  name: "index"
+  type_id: 0x4585663f
+  offset: 672
+}
+member {
+  id: 0xad7c8ba4
+  name: "index"
+  type_id: 0x4585663f
+  offset: 1280
+}
+member {
+  id: 0xad7c8c69
+  name: "index"
+  type_id: 0x4585663f
+  offset: 480
+}
+member {
+  id: 0xad7c8d72
+  name: "index"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0xad7c8dd9
+  name: "index"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xad7c8efd
+  name: "index"
+  type_id: 0x4585663f
+  offset: 224
+}
+member {
+  id: 0xad7c8f1d
+  name: "index"
+  type_id: 0x4585663f
+  offset: 1216
+}
+member {
+  id: 0xad8932a7
+  name: "index"
+  type_id: 0xb0312d5a
+  offset: 592
+}
+member {
+  id: 0xad8ae1bb
+  name: "index"
+  type_id: 0xb3e7bac9
+  offset: 16
+}
+member {
+  id: 0xad8ae4e3
+  name: "index"
+  type_id: 0xb3e7bac9
+  offset: 8
+}
+member {
+  id: 0xada842c7
+  name: "index"
+  type_id: 0x914dbfdc
+  offset: 320
+}
+member {
+  id: 0xada84500
+  name: "index"
+  type_id: 0x914dbfdc
+}
+member {
+  id: 0xadab2f6d
+  name: "index"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0xadcc55aa
+  name: "index"
+  type_id: 0xf55fd19d
+  offset: 1216
+}
+member {
+  id: 0xadd10541
+  name: "index"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0xaddf22e1
+  name: "index"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xaddf2600
+  name: "index"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xaddf2b3b
+  name: "index"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xaddf2f83
+  name: "index"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0xaddf2fc2
+  name: "index"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0xadf00094
+  name: "index"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xadf006ed
+  name: "index"
+  type_id: 0xc9082b19
+  offset: 640
+}
+member {
+  id: 0xadf00867
+  name: "index"
+  type_id: 0xc9082b19
+  offset: 960
+}
+member {
+  id: 0xadf00b8c
+  name: "index"
+  type_id: 0xc9082b19
+  offset: 512
+}
+member {
+  id: 0xadf00daf
+  name: "index"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x9cd2bd94
+  name: "index_hlist"
+  type_id: 0x49a73111
+  offset: 7168
+}
+member {
+  id: 0x0bf38ced
+  name: "index_hw"
+  type_id: 0x208a756a
+  offset: 544
+}
+member {
+  id: 0x6744016e
+  name: "index_key"
+  type_id: 0x967269b3
+}
+member {
+  id: 0xe250c05c
+  name: "indexed"
+  type_id: 0x4585663f
+  offset: 1153
+  bitsize: 1
+}
+member {
+  id: 0x9f5f61bb
+  name: "indication"
+  type_id: 0x0e747c33
+  offset: 896
+}
+member {
+  id: 0x3d384dd8
+  name: "indio_dev"
+  type_id: 0x188b9e81
+}
+member {
+  id: 0xcf285434
+  name: "indirect"
+  type_id: 0x4585663f
+  offset: 512
+  bitsize: 1
+}
+member {
+  id: 0xefc224b0
+  name: "indirect"
+  type_id: 0x065bc4a9
+  offset: 142016
+}
+member {
+  id: 0xfa8d43c0
+  name: "inet6_addr_lst"
+  type_id: 0x1d33485a
+  offset: 4992
+}
+member {
+  id: 0x3e2089f0
+  name: "inexact_bins"
+  type_id: 0xd3c80119
+  offset: 2752
+}
+member {
+  id: 0x79f74293
+  name: "inflight"
+  type_id: 0x04fd619c
+  offset: 1600
+}
+member {
+  id: 0x6fe5be72
+  name: "inflight_bytes"
+  type_id: 0x4585663f
+  offset: 640
+}
+member {
+  id: 0x6af718e5
+  name: "inflight_tracked"
+  type_id: 0x74d29cf1
+  offset: 1568
+}
+member {
+  id: 0xcd0027db
+  name: "info"
+  type_id: 0x5c204eda
+  offset: 64
+}
+member {
+  id: 0xcd0b85b2
+  name: "info"
+  type_id: 0x5786c646
+}
+member {
+  id: 0xcd0b8889
+  name: "info"
+  type_id: 0x5786c646
+  offset: 32
+}
+member {
+  id: 0xcd0f9fce
+  name: "info"
+  type_id: 0x539c11fe
+  offset: 256
+}
+member {
+  id: 0xcd19806b
+  name: "info"
+  type_id: 0x4585663f
+  offset: 640
+}
+member {
+  id: 0xcd198612
+  name: "info"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xcd198c91
+  name: "info"
+  type_id: 0x4585663f
+  offset: 1344
+}
+member {
+  id: 0xcd198d5a
+  name: "info"
+  type_id: 0x4585663f
+  offset: 4160
+}
+member {
+  id: 0xcd397bbc
+  name: "info"
+  type_id: 0x657e05a2
+  offset: 864
+}
+member {
+  id: 0xcd44b6d8
+  name: "info"
+  type_id: 0x18bd6530
+  offset: 192
+}
+member {
+  id: 0xcd51b880
+  name: "info"
+  type_id: 0x0db5f18a
+  offset: 7680
+}
+member {
+  id: 0xcd57a367
+  name: "info"
+  type_id: 0x0ba0136e
+}
+member {
+  id: 0xcd57ade5
+  name: "info"
+  type_id: 0x0baa70a7
+  offset: 64
+}
+member {
+  id: 0xcd580f51
+  name: "info"
+  type_id: 0x04048b89
+  offset: 768
+}
+member {
+  id: 0xcd58885b
+  name: "info"
+  type_id: 0x0483e6f8
+  offset: 192
+}
+member {
+  id: 0xcd591692
+  name: "info"
+  type_id: 0x051414e1
+  offset: 11840
+}
+member {
+  id: 0xcd591a85
+  name: "info"
+  type_id: 0x051414e1
+  offset: 7808
+}
+member {
+  id: 0xcd5bacd7
+  name: "info"
+  type_id: 0x07afa3be
+}
+member {
+  id: 0xcd658844
+  name: "info"
+  type_id: 0x398b30f2
+}
+member {
+  id: 0xcd68e90f
+  name: "info"
+  type_id: 0x34edbc82
+  offset: 320
+}
+member {
+  id: 0xcd68ecf5
+  name: "info"
+  type_id: 0x34edbc82
+  offset: 704
+}
+member {
+  id: 0xcd692d2e
+  name: "info"
+  type_id: 0x3526936a
+  offset: 192
+}
+member {
+  id: 0xcd6bb7a2
+  name: "info"
+  type_id: 0x37b8f80f
+  offset: 8576
+}
+member {
+  id: 0xcd735faa
+  name: "info"
+  type_id: 0x2f54171f
+  offset: 192
+}
+member {
+  id: 0xcd737824
+  name: "info"
+  type_id: 0x2f7c9793
+  offset: 320
+}
+member {
+  id: 0xcd79f0a5
+  name: "info"
+  type_id: 0x25ffeea5
+  offset: 9664
+}
+member {
+  id: 0xcdb1f5e2
+  name: "info"
+  type_id: 0xedf277ba
+  offset: 64
+}
+member {
+  id: 0xcdba20f0
+  name: "info"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xcdba2d19
+  name: "info"
+  type_id: 0xe62ebf07
+  offset: 992
+}
+member {
+  id: 0xcdd0869e
+  name: "info"
+  type_id: 0x8c85ea67
+}
+member {
+  id: 0xcdd838c9
+  name: "info"
+  type_id: 0x843bbd62
+}
+member {
+  id: 0xc382f0bf
+  name: "info_flags"
+  type_id: 0x4585663f
+  offset: 224
+}
+member {
+  id: 0x2f8cd3f3
+  name: "info_ident"
+  type_id: 0xb3e7bac9
+  offset: 216
+}
+member {
+  id: 0x7316d3a4
+  name: "info_len"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x79da7b28
+  name: "info_lock"
+  type_id: 0xa7c362b0
+  offset: 7744
+}
+member {
+  id: 0xb5304ec7
+  name: "info_mask_separate"
+  type_id: 0xfc0e1dbd
+  offset: 320
+}
+member {
+  id: 0xdae74659
+  name: "info_mask_separate_available"
+  type_id: 0xfc0e1dbd
+  offset: 384
+}
+member {
+  id: 0x588c9540
+  name: "info_mask_shared_by_all"
+  type_id: 0xfc0e1dbd
+  offset: 704
+}
+member {
+  id: 0x4b9843cc
+  name: "info_mask_shared_by_all_available"
+  type_id: 0xfc0e1dbd
+  offset: 768
+}
+member {
+  id: 0x4d23cb08
+  name: "info_mask_shared_by_dir"
+  type_id: 0xfc0e1dbd
+  offset: 576
+}
+member {
+  id: 0x09093234
+  name: "info_mask_shared_by_dir_available"
+  type_id: 0xfc0e1dbd
+  offset: 640
+}
+member {
+  id: 0xd9827d70
+  name: "info_mask_shared_by_type"
+  type_id: 0xfc0e1dbd
+  offset: 448
+}
+member {
+  id: 0xc774b544
+  name: "info_mask_shared_by_type_available"
+  type_id: 0xfc0e1dbd
+  offset: 512
+}
+member {
+  id: 0xc7381900
+  name: "info_state"
+  type_id: 0xb3e7bac9
+  offset: 208
+}
+member {
+  id: 0xe1e6808b
+  name: "info_timer"
+  type_id: 0xf1159c31
+  offset: 256
+}
+member {
+  id: 0x881f3130
+  name: "info_valid"
+  type_id: 0x4585663f
+  offset: 198
+  bitsize: 1
+}
+member {
+  id: 0x11e44cd5
+  name: "ingress_block_get"
+  type_id: 0x1906e68f
+  offset: 1216
+}
+member {
+  id: 0x146d0ed4
+  name: "ingress_block_set"
+  type_id: 0x0c97f018
+  offset: 1088
+}
+member {
+  id: 0xaa9f4733
+  name: "ingress_lock"
+  type_id: 0xf313e71a
+  offset: 896
+}
+member {
+  id: 0xb288c76d
+  name: "ingress_msg"
+  type_id: 0xd3c80119
+  offset: 768
+}
+member {
+  id: 0xde52c13f
+  name: "ingress_queue"
+  type_id: 0x1a7122b5
+  offset: 6720
+}
+member {
+  id: 0x00275ba9
+  name: "ingress_skb"
+  type_id: 0x578f9c2b
+  offset: 576
+}
+member {
+  id: 0x7b6c5dc4
+  name: "inherit"
+  type_id: 0xedf277ba
+  offset: 321
+  bitsize: 1
+}
+member {
+  id: 0x55eccfcd
+  name: "inherit_rt"
+  type_id: 0x295c7202
+  offset: 2
+  bitsize: 1
+}
+member {
+  id: 0xe10643d9
+  name: "inherit_stat"
+  type_id: 0xedf277ba
+  offset: 331
+  bitsize: 1
+}
+member {
+  id: 0x28b27248
+  name: "inherit_thread"
+  type_id: 0xedf277ba
+  offset: 355
+  bitsize: 1
+}
+member {
+  id: 0x3d360666
+  name: "inheritable"
+  type_id: 0xd9449876
+  offset: 64
+}
+member {
+  id: 0xc9407182
+  name: "inhibited"
+  type_id: 0x6d7f5ff6
+  offset: 12544
+}
+member {
+  id: 0x1aaf4b5b
+  name: "init"
+  type_id: 0x4585663f
+  offset: 512
+}
+member {
+  id: 0x1ac4107c
+  name: "init"
+  type_id: 0x2ed55948
+}
+member {
+  id: 0x1ac4a73b
+  name: "init"
+  type_id: 0x2e66ff23
+  offset: 64
+}
+member {
+  id: 0x1ac4b43b
+  name: "init"
+  type_id: 0x2e763bfd
+  offset: 1728
+}
+member {
+  id: 0x1ac4f5f6
+  name: "init"
+  type_id: 0x2e36aac4
+  offset: 640
+}
+member {
+  id: 0x1ac5a153
+  name: "init"
+  type_id: 0x2f61e9c9
+  offset: 2176
+}
+member {
+  id: 0x1ac5f50a
+  name: "init"
+  type_id: 0x2f3b3749
+  offset: 512
+}
+member {
+  id: 0x1ac62457
+  name: "init"
+  type_id: 0x2ce67932
+  offset: 2304
+}
+member {
+  id: 0x1ac62b95
+  name: "init"
+  type_id: 0x2ce67932
+  offset: 192
+}
+member {
+  id: 0x1ac65edc
+  name: "init"
+  type_id: 0x2c923b8b
+  offset: 128
+}
+member {
+  id: 0x1ac6653e
+  name: "init"
+  type_id: 0x2ca9d982
+  offset: 128
+}
+member {
+  id: 0x1ac66ee5
+  name: "init"
+  type_id: 0x2caf2169
+  offset: 64
+}
+member {
+  id: 0x1ac6720b
+  name: "init"
+  type_id: 0x2cb3cf30
+  offset: 64
+}
+member {
+  id: 0x1ac6b1f5
+  name: "init"
+  type_id: 0x2c747be9
+  offset: 256
+}
+member {
+  id: 0x1ac6e0f5
+  name: "init"
+  type_id: 0x2c24424a
+  offset: 384
+}
+member {
+  id: 0x1ac72504
+  name: "init"
+  type_id: 0x2de9e33f
+  offset: 128
+}
+member {
+  id: 0x1ac72c6d
+  name: "init"
+  type_id: 0x2de9e33f
+  offset: 256
+}
+member {
+  id: 0x1ac73c7f
+  name: "init"
+  type_id: 0x2df0016c
+  offset: 2944
+}
+member {
+  id: 0x1ac749f4
+  name: "init"
+  type_id: 0x2d883003
+  offset: 64
+}
+member {
+  id: 0x1ac74eef
+  name: "init"
+  type_id: 0x2d8f2b98
+  offset: 64
+}
+member {
+  id: 0x1ac760fd
+  name: "init"
+  type_id: 0x2dac2b50
+  offset: 2240
+}
+member {
+  id: 0x1ac761d6
+  name: "init"
+  type_id: 0x2da6ce0c
+  offset: 704
+}
+member {
+  id: 0x1ac78232
+  name: "init"
+  type_id: 0x2d4717af
+}
+member {
+  id: 0x1ac78aed
+  name: "init"
+  type_id: 0x2d4fc86f
+}
+member {
+  id: 0x1ac7999d
+  name: "init"
+  type_id: 0x2d5e4b40
+  offset: 1408
+}
+member {
+  id: 0x1ac7a665
+  name: "init"
+  type_id: 0x2d6a829d
+  offset: 128
+}
+member {
+  id: 0x1ac7a6b2
+  name: "init"
+  type_id: 0x2d645065
+  offset: 320
+}
+member {
+  id: 0x1ac7dc9c
+  name: "init"
+  type_id: 0x2d1b84fa
+  offset: 704
+}
+member {
+  id: 0x1ac7e9b4
+  name: "init"
+  type_id: 0x2d255333
+  offset: 128
+}
+member {
+  id: 0x1ac7f6c1
+  name: "init"
+  type_id: 0x2d3a2624
+  offset: 128
+}
+member {
+  id: 0x1ac7f968
+  name: "init"
+  type_id: 0x2d3484af
+  offset: 192
+}
+member {
+  id: 0x1ad35dfa
+  name: "init"
+  type_id: 0x39911d6a
+  offset: 128
+}
+member {
+  id: 0x1ae5aa3d
+  name: "init"
+  type_id: 0x0f626ee5
+  offset: 1088
+}
+member {
+  id: 0x1ae7589a
+  name: "init"
+  type_id: 0x0d947d59
+  offset: 128
+}
+member {
+  id: 0x1ae79ef6
+  name: "init"
+  type_id: 0x0d5f3215
+  offset: 64
+}
+member {
+  id: 0x1af67c87
+  name: "init"
+  type_id: 0x1cb0211a
+  offset: 96
+}
+member {
+  id: 0x2313299e
+  name: "init_ack_masked"
+  type_id: 0x4585663f
+  offset: 608
+  bitsize: 1
+}
+member {
+  id: 0xc9830a15
+  name: "init_addr"
+  type_id: 0xa61911b2
+  offset: 272
+}
+member {
+  id: 0xb9c86f38
+  name: "init_addr_type"
+  type_id: 0xb3e7bac9
+  offset: 320
+}
+member {
+  id: 0xa7aec9f2
+  name: "init_arg"
+  type_id: 0x18bd6530
+  offset: 384
+}
+member {
+  id: 0xb0c8b6a9
+  name: "init_avg"
+  type_id: 0xc9082b19
+  offset: 832
+}
+member {
+  id: 0xf464be53
+  name: "init_buffer"
+  type_id: 0x0c7ce901
+  offset: 64
+}
+member {
+  id: 0xed4a99de
+  name: "init_callback"
+  type_id: 0x0ec6a54f
+  offset: 320
+}
+member {
+  id: 0x3b9c8ffe
+  name: "init_card"
+  type_id: 0x0dd5dc65
+  offset: 576
+}
+member {
+  id: 0xab1ec726
+  name: "init_cfg"
+  type_id: 0x2dfe3e0e
+}
+member {
+  id: 0x4d333531
+  name: "init_cmd_priv"
+  type_id: 0x2cb23e2c
+  offset: 512
+}
+member {
+  id: 0x0fcb1785
+  name: "init_count"
+  type_id: 0x6720d32f
+  offset: 7808
+}
+member {
+  id: 0x97842617
+  name: "init_data"
+  type_id: 0x1f4de39e
+  offset: 128
+}
+member {
+  id: 0x97a385e3
+  name: "init_data"
+  type_id: 0x38e33441
+  offset: 64
+}
+member {
+  id: 0x39ba03d7
+  name: "init_done"
+  type_id: 0x4585663f
+  offset: 17153
+  bitsize: 1
+}
+member {
+  id: 0xa088567d
+  name: "init_dyn_addr"
+  type_id: 0x295c7202
+  offset: 128
+}
+member {
+  id: 0x35f4d7c6
+  name: "init_fs_context"
+  type_id: 0x2f05fd8b
+  offset: 128
+}
+member {
+  id: 0xf587a1e9
+  name: "init_hctx"
+  type_id: 0x2fcc6bd6
+  offset: 640
+}
+member {
+  id: 0xf587f732
+  name: "init_hctx"
+  type_id: 0x2f950b83
+  offset: 128
+}
+member {
+  id: 0xd0e81373
+  name: "init_hw"
+  type_id: 0x2c7e659b
+  offset: 1792
+}
+member {
+  id: 0x1461e86f
+  name: "init_icq"
+  type_id: 0x0f5f18a4
+  offset: 1280
+}
+member {
+  id: 0x17b23bfd
+  name: "init_irq"
+  type_id: 0x6720d32f
+  offset: 7552
+}
+member {
+  id: 0xf17f2c5f
+  name: "init_layout"
+  type_id: 0xde200f0c
+  offset: 3712
+}
+member {
+  id: 0x8025b3ff
+  name: "init_load_uA"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0xdd57aa4b
+  name: "init_name"
+  type_id: 0x3e10b518
+  offset: 896
+}
+member {
+  id: 0xdb38de26
+  name: "init_peak"
+  type_id: 0xc9082b19
+  offset: 864
+}
+member {
+  id: 0x015559ae
+  name: "init_qp_minus26"
+  type_id: 0x901eaf6a
+  offset: 32
+}
+member {
+  id: 0xf8fed40c
+  name: "init_ready"
+  type_id: 0x1f3c8679
+  offset: 320
+}
+member {
+  id: 0xbfb83f3d
+  name: "init_request"
+  type_id: 0x2f2691e9
+  offset: 768
+}
+member {
+  id: 0x4e4ee97d
+  name: "init_sched"
+  type_id: 0x2d41fdff
+}
+member {
+  id: 0x447e4699
+  name: "init_sd_express"
+  type_id: 0x2ea6d809
+  offset: 1472
+}
+member {
+  id: 0x1390689c
+  name: "init_seq_private"
+  type_id: 0x3292450a
+  offset: 64
+}
+member {
+  id: 0x7ab1d042
+  name: "init_speed"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0x7ab1d3e0
+  name: "init_speed"
+  type_id: 0x4585663f
+  offset: 2112
+}
+member {
+  id: 0x4a0fb161
+  name: "init_state"
+  type_id: 0x2da4a204
+  offset: 128
+}
+member {
+  id: 0x4a185229
+  name: "init_state"
+  type_id: 0x3a47ea7a
+  offset: 128
+}
+member {
+  id: 0xe7104099
+  name: "init_termios"
+  type_id: 0x0c59c5c5
+  offset: 4032
+}
+member {
+  id: 0xe7c0151f
+  name: "init_termios"
+  type_id: 0xdc0b0182
+  offset: 480
+}
+member {
+  id: 0x4a525181
+  name: "init_tfm"
+  type_id: 0x2c8fa3e9
+  offset: 512
+}
+member {
+  id: 0x4a52b1b2
+  name: "init_tfm"
+  type_id: 0x2c6c412b
+  offset: 192
+}
+member {
+  id: 0x4a52c753
+  name: "init_tfm"
+  type_id: 0x2c197132
+  offset: 512
+}
+member {
+  id: 0x29079611
+  name: "init_valid_mask"
+  type_id: 0x0f3a5c02
+  offset: 1856
+}
+member {
+  id: 0x2924d656
+  name: "init_valid_mask"
+  type_id: 0x2c7c70ad
+  offset: 1088
+}
+member {
+  id: 0x691cc638
+  name: "initial_VFs"
+  type_id: 0x914dbfdc
+  offset: 128
+}
+member {
+  id: 0x2c71aaee
+  name: "initial_dec_delay"
+  type_id: 0x7584e7da
+  offset: 144
+}
+member {
+  id: 0x2c956912
+  name: "initial_dec_delay"
+  type_id: 0x914dbfdc
+  offset: 192
+}
+member {
+  id: 0x457fa503
+  name: "initial_freq"
+  type_id: 0x33756485
+}
+member {
+  id: 0xdf872655
+  name: "initial_index"
+  type_id: 0x4585663f
+  offset: 12448
+}
+member {
+  id: 0x3629e570
+  name: "initial_mode"
+  type_id: 0x4585663f
+  offset: 1504
+}
+member {
+  id: 0x8bea6ee2
+  name: "initial_ns"
+  type_id: 0x1f7be706
+  offset: 256
+}
+member {
+  id: 0xc8298e5f
+  name: "initial_offset"
+  type_id: 0x914dbfdc
+  offset: 224
+}
+member {
+  id: 0xc8cd4488
+  name: "initial_offset"
+  type_id: 0x7584e7da
+  offset: 256
+}
+member {
+  id: 0x989b8848
+  name: "initial_quirks"
+  type_id: 0x4585663f
+  offset: 59328
+}
+member {
+  id: 0x301c53cf
+  name: "initial_scale_value"
+  type_id: 0x295c7202
+  offset: 168
+}
+member {
+  id: 0x301c549e
+  name: "initial_scale_value"
+  type_id: 0x295c7202
+  offset: 864
+}
+member {
+  id: 0x4043cb41
+  name: "initial_state"
+  type_id: 0xba5444a6
+  offset: 1472
+}
+member {
+  id: 0xc2118c74
+  name: "initial_xmit_delay"
+  type_id: 0x914dbfdc
+  offset: 176
+}
+member {
+  id: 0x6caef089
+  name: "initial_xmit_delay_high"
+  type_id: 0x295c7202
+  offset: 128
+}
+member {
+  id: 0x497c1d81
+  name: "initial_xmit_delay_low"
+  type_id: 0x295c7202
+  offset: 136
+}
+member {
+  id: 0x5e116f00
+  name: "initialized"
+  type_id: 0x295c7202
+  offset: 995
+  bitsize: 1
+}
+member {
+  id: 0x5e7db0e0
+  name: "initialized"
+  type_id: 0x4585663f
+  bitsize: 1
+}
+member {
+  id: 0xd5629083
+  name: "initialized"
+  type_id: 0x6d7f5ff6
+  offset: 8
+}
+member {
+  id: 0xd5629500
+  name: "initialized"
+  type_id: 0x6d7f5ff6
+  offset: 1744
+}
+member {
+  id: 0xd56295db
+  name: "initialized"
+  type_id: 0x6d7f5ff6
+  offset: 16
+}
+member {
+  id: 0xd56298af
+  name: "initialized"
+  type_id: 0x6d7f5ff6
+  offset: 9256
+}
+member {
+  id: 0xd5629b65
+  name: "initialized"
+  type_id: 0x6d7f5ff6
+}
+member {
+  id: 0xd5629f3c
+  name: "initialized"
+  type_id: 0x6d7f5ff6
+  offset: 352
+}
+member {
+  id: 0xd568c3b9
+  name: "initialized"
+  type_id: 0x6720d32f
+  offset: 1472
+}
+member {
+  id: 0x8f81464b
+  name: "initially_ro"
+  type_id: 0x4585663f
+  offset: 192
+  bitsize: 1
+}
+member {
+  id: 0xd0dc328d
+  name: "initiator"
+  type_id: 0xc5caf5f9
+  offset: 160
+}
+member {
+  id: 0x73246f04
+  name: "inline_data"
+  type_id: 0x18bd6530
+  offset: 384
+}
+member {
+  id: 0x10e8cee8
+  name: "inline_name"
+  type_id: 0xca2a51af
+  offset: 1376
+}
+member {
+  id: 0x82b73fdd
+  name: "inmodeset"
+  type_id: 0x4585663f
+  offset: 992
+}
+member {
+  id: 0x4192c5b2
+  name: "inner_ipproto"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0x994739f8
+  name: "inner_lock"
+  type_id: 0xf313e71a
+  offset: 4672
+}
+member {
+  id: 0xfa06119e
+  name: "inner_mac_header"
+  type_id: 0xe8034002
+  offset: 400
+}
+member {
+  id: 0xf5747160
+  name: "inner_map_fd"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0x2eda277d
+  name: "inner_map_meta"
+  type_id: 0x04b193cc
+  offset: 64
+}
+member {
+  id: 0x1df58a40
+  name: "inner_mode"
+  type_id: 0x3f0693b8
+  offset: 5824
+}
+member {
+  id: 0xbb03496e
+  name: "inner_mode_iaf"
+  type_id: 0x3f0693b8
+  offset: 5848
+}
+member {
+  id: 0x6383669c
+  name: "inner_network_header"
+  type_id: 0xe8034002
+  offset: 384
+}
+member {
+  id: 0xe1c4cb2d
+  name: "inner_protocol"
+  type_id: 0x7584e7da
+}
+member {
+  id: 0xa5788b5a
+  name: "inner_protocol_type"
+  type_id: 0xb3e7bac9
+  offset: 27
+  bitsize: 1
+}
+member {
+  id: 0x83671aee
+  name: "inner_transport_header"
+  type_id: 0xe8034002
+  offset: 368
+}
+member {
+  id: 0x0c7acc76
+  name: "ino"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0x0c80b192
+  name: "ino"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x0c9c6675
+  name: "ino"
+  type_id: 0xd5df6730
+  offset: 256
+}
+member {
+  id: 0x0cdb9a21
+  name: "ino"
+  type_id: 0x92233392
+  offset: 256
+}
+member {
+  id: 0x37e22f9b
+  name: "ino_idr"
+  type_id: 0x04b89667
+  offset: 128
+}
+member {
+  id: 0x555cf737
+  name: "ino_timelimit"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x87dcb2af
+  name: "ino_warnlimit"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0x3b1b2da5
+  name: "inode"
+  type_id: 0x4456a43e
+}
+member {
+  id: 0x3b44f9c1
+  name: "inode"
+  type_id: 0x1b8590a8
+  offset: 1472
+}
+member {
+  id: 0x3b44f9e6
+  name: "inode"
+  type_id: 0x1b8590a8
+  offset: 448
+}
+member {
+  id: 0x3b44ff03
+  name: "inode"
+  type_id: 0x1b8590a8
+  offset: 384
+}
+member {
+  id: 0x3b66a8ad
+  name: "inode"
+  type_id: 0x39d1288c
+  offset: 1984
+}
+member {
+  id: 0x8c1d6568
+  name: "inodes"
+  type_id: 0x5e8dc7f4
+  offset: 384
+}
+member {
+  id: 0x8c1d6d88
+  name: "inodes"
+  type_id: 0x5e8dc7f4
+  offset: 576
+}
+member {
+  id: 0x03e0c67c
+  name: "inotify_data"
+  type_id: 0x43337176
+}
+member {
+  id: 0x73064a1b
+  name: "input"
+  type_id: 0x1042c9d1
+  offset: 192
+}
+member {
+  id: 0x7318e621
+  name: "input"
+  type_id: 0x0ee2db52
+  offset: 64
+}
+member {
+  id: 0x733ba32b
+  name: "input"
+  type_id: 0x2da4f7fd
+  offset: 320
+}
+member {
+  id: 0x733ba681
+  name: "input"
+  type_id: 0x2da631b6
+  offset: 256
+}
+member {
+  id: 0x733f5189
+  name: "input"
+  type_id: 0x295c7202
+  offset: 160
+}
+member {
+  id: 0x73fbf26c
+  name: "input"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x73fbf68d
+  name: "input"
+  type_id: 0xedf277ba
+  offset: 64
+}
+member {
+  id: 0x73fe0389
+  name: "input"
+  type_id: 0xe8034002
+  offset: 992
+}
+member {
+  id: 0xe0020bd6
+  name: "input_bus_cfg"
+  type_id: 0x4b7d6e32
+  offset: 192
+}
+member {
+  id: 0x6b70ce62
+  name: "input_bus_flags"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xa3d081a0
+  name: "input_configured"
+  type_id: 0x2d1f7f94
+  offset: 1024
+}
+member {
+  id: 0xd74da061
+  name: "input_dev"
+  type_id: 0x1042c9d1
+  offset: 8832
+}
+member {
+  id: 0xd74dae5b
+  name: "input_dev"
+  type_id: 0x1042c9d1
+  offset: 256
+}
+member {
+  id: 0x3fcc6a76
+  name: "input_dev_lock"
+  type_id: 0xa7c362b0
+  offset: 320
+}
+member {
+  id: 0x25d41955
+  name: "input_id"
+  type_id: 0x48c45b15
+  offset: 7808
+}
+member {
+  id: 0xfd9bce1c
+  name: "input_mapped"
+  type_id: 0x2d1dd165
+  offset: 960
+}
+member {
+  id: 0xeb9794ab
+  name: "input_mapping"
+  type_id: 0x2d1dd165
+  offset: 896
+}
+member {
+  id: 0x2f3be3ca
+  name: "input_param1"
+  type_id: 0xe276adef
+  offset: 96
+}
+member {
+  id: 0x6df80c79
+  name: "input_param2"
+  type_id: 0xe276adef
+  offset: 128
+}
+member {
+  id: 0xacb8e9ed
+  name: "input_param3"
+  type_id: 0xe276adef
+  offset: 160
+}
+member {
+  id: 0xd33986fc
+  name: "input_phys"
+  type_id: 0x3e10b518
+  offset: 7744
+}
+member {
+  id: 0xd35d43fd
+  name: "input_phys"
+  type_id: 0x5adf57ae
+  offset: 13280
+}
+member {
+  id: 0x762f7391
+  name: "input_pkt_queue"
+  type_id: 0x578f9c2b
+  offset: 1984
+}
+member {
+  id: 0x7505e6cc
+  name: "input_queue_head"
+  type_id: 0x4585663f
+  offset: 1024
+}
+member {
+  id: 0x8f3e1d1a
+  name: "input_queue_tail"
+  type_id: 0x4585663f
+  offset: 1888
+}
+member {
+  id: 0xf8d5e00b
+  name: "input_tail"
+  type_id: 0x2da631b6
+  offset: 192
+}
+member {
+  id: 0x2cebd491
+  name: "input_uV"
+  type_id: 0x6720d32f
+  offset: 480
+}
+member {
+  id: 0x342e5668
+  name: "inputs"
+  type_id: 0xd3c80119
+  offset: 59392
+}
+member {
+  id: 0xbef28bc2
+  name: "inq_periph_qual"
+  type_id: 0x384f7d7c
+  offset: 1424
+}
+member {
+  id: 0xa4895f02
+  name: "inq_tx_power"
+  type_id: 0x901eaf6a
+  offset: 6120
+}
+member {
+  id: 0x8268cabd
+  name: "inquiry"
+  type_id: 0x1df06cce
+  offset: 1920
+}
+member {
+  id: 0xfa8094b6
+  name: "inquiry_len"
+  type_id: 0x5d8155a5
+  offset: 1856
+}
+member {
+  id: 0x99e4114f
+  name: "inquiry_mutex"
+  type_id: 0xa7c362b0
+  offset: 1472
+}
+member {
+  id: 0xabbe529c
+  name: "inquiry_string"
+  type_id: 0x1a801a17
+  offset: 96
+}
+member {
+  id: 0xabbe56fa
+  name: "inquiry_string"
+  type_id: 0x1a801a17
+  offset: 7808
+}
+member {
+  id: 0xabbe5bb3
+  name: "inquiry_string"
+  type_id: 0x1a801a17
+  offset: 3712
+}
+member {
+  id: 0xdc839644
+  name: "inreq"
+  type_id: 0x2f99f236
+  offset: 256
+}
+member {
+  id: 0x51e91fc8
+  name: "insert"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xb76bc885
+  name: "insert_failed"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0xf0b7fa24
+  name: "insert_requests"
+  type_id: 0x0cae1786
+  offset: 832
+}
+member {
+  id: 0x3b67f414
+  name: "insn"
+  type_id: 0x861a0f9a
+}
+member {
+  id: 0x3b86cec8
+  name: "insn"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x3bfbb8bb
+  name: "insn"
+  type_id: 0x1a56a0ca
+}
+member {
+  id: 0xf0202332
+  name: "insn_aux_data"
+  type_id: 0x099fec03
+  offset: 12992
+}
+member {
+  id: 0xdac7f876
+  name: "insn_bytes"
+  type_id: 0xda277458
+  offset: 8
+}
+member {
+  id: 0x7cdc8c52
+  name: "insn_cnt"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x629e2222
+  name: "insn_hook"
+  type_id: 0x2c1e05fb
+}
+member {
+  id: 0x0c4aad7a
+  name: "insn_idx"
+  type_id: 0xc9082b19
+  offset: 608
+}
+member {
+  id: 0x0c4aad88
+  name: "insn_idx"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x0c4aafe8
+  name: "insn_idx"
+  type_id: 0xc9082b19
+  offset: 416
+}
+member {
+  id: 0x0ce4884b
+  name: "insn_idx"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x0ce48d83
+  name: "insn_idx"
+  type_id: 0x6720d32f
+  offset: 960
+}
+member {
+  id: 0xe2d79fc8
+  name: "insn_off"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xf372264d
+  name: "insn_processed"
+  type_id: 0xc9082b19
+  offset: 75936
+}
+member {
+  id: 0x8b19911e
+  name: "insn_size"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0x23399750
+  name: "insn_stack"
+  type_id: 0x13580d6c
+  offset: 64
+}
+member {
+  id: 0x97080ae2
+  name: "insn_state"
+  type_id: 0x13580d6c
+}
+member {
+  id: 0xf517cc3e
+  name: "insns"
+  type_id: 0xdf3f459c
+}
+member {
+  id: 0xf52505ed
+  name: "insns"
+  type_id: 0xedf277ba
+  offset: 64
+}
+member {
+  id: 0x240de36e
+  name: "insnsi"
+  type_id: 0xcd9c1728
+}
+member {
+  id: 0x275522f1
+  name: "inst"
+  type_id: 0x2d1b205b
+}
+member {
+  id: 0x70682057
+  name: "install"
+  type_id: 0x2f007136
+  offset: 320
+}
+member {
+  id: 0x7069e3a7
+  name: "install"
+  type_id: 0x2ec0a712
+  offset: 64
+}
+member {
+  id: 0x70aad596
+  name: "install"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0xf47d66b2
+  name: "installed"
+  type_id: 0x33756485
+  offset: 704
+}
+member {
+  id: 0xd1731c42
+  name: "instance"
+  type_id: 0x1696bc95
+}
+member {
+  id: 0xd183a97a
+  name: "instance"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xd1ac8a7b
+  name: "instance"
+  type_id: 0xc9082b19
+  offset: 768
+}
+member {
+  id: 0x6b0d6a44
+  name: "instance_deinit"
+  type_id: 0xca9160b5
+  offset: 192
+}
+member {
+  id: 0x3c055709
+  name: "instance_init"
+  type_id: 0xca9160b5
+  offset: 128
+}
+member {
+  id: 0x0619e4d0
+  name: "instances"
+  type_id: 0x5e8dc7f4
+  offset: 128
+}
+member {
+  id: 0x0651f554
+  name: "instances"
+  type_id: 0x1696bc95
+  offset: 2752
+}
+member {
+  id: 0x2111d246
+  name: "instantiate"
+  type_id: 0x2de7875a
+  offset: 384
+}
+member {
+  id: 0xdc45187d
+  name: "instantiated"
+  type_id: 0x4585663f
+  offset: 6304
+  bitsize: 1
+}
+member {
+  id: 0x3901786a
+  name: "int_32"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x13b0e742
+  name: "integer"
+  type_id: 0x4585663f
+  offset: 66
+  bitsize: 1
+}
+member {
+  id: 0x81bba91c
+  name: "integer"
+  type_id: 0x7ece3887
+}
+member {
+  id: 0x81e3759b
+  name: "integer"
+  type_id: 0x2612bf2a
+}
+member {
+  id: 0x6428bb2a
+  name: "integer64"
+  type_id: 0x2623dc0d
+}
+member {
+  id: 0x64705dc7
+  name: "integer64"
+  type_id: 0x7ec5312c
+}
+member {
+  id: 0xcb311e87
+  name: "integral_cutoff"
+  type_id: 0xd41e888f
+  offset: 480
+}
+member {
+  id: 0xb37c96b5
+  name: "integrity_failed"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x31cd18d3
+  name: "intensity"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xed328438
+  name: "inter_mode"
+  type_id: 0x67419ed0
+  offset: 13952
+}
+member {
+  id: 0xec1c21de
+  name: "inter_set"
+  type_id: 0x6d7f5ff6
+  offset: 736
+}
+member {
+  id: 0x1e24aafe
+  name: "interface"
+  type_id: 0x5c8d2f0b
+  offset: 1216
+}
+member {
+  id: 0x1e3c064f
+  name: "interface"
+  type_id: 0x442bf459
+  offset: 768
+}
+member {
+  id: 0x1e592a48
+  name: "interface"
+  type_id: 0x21069feb
+  offset: 128
+}
+member {
+  id: 0x1e64a125
+  name: "interface"
+  type_id: 0x1c843062
+}
+member {
+  id: 0x1e96c8d6
+  name: "interface"
+  type_id: 0xeeed68e6
+  offset: 256
+}
+member {
+  id: 0x1e96cfa1
+  name: "interface"
+  type_id: 0xeeed68e6
+  offset: 9376
+}
+member {
+  id: 0x5f7feca4
+  name: "interface_id"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x5656bb52
+  name: "interface_modes"
+  type_id: 0x914dbfdc
+  offset: 768
+}
+member {
+  id: 0xc849a421
+  name: "interface_number"
+  type_id: 0x914dbfdc
+  offset: 1856
+}
+member {
+  id: 0x54b2e4db
+  name: "interfaces"
+  type_id: 0xd3c80119
+  offset: 1344
+}
+member {
+  id: 0x54b2e97d
+  name: "interfaces"
+  type_id: 0xd3c80119
+  offset: 1728
+}
+member {
+  id: 0xfbe2a5a1
+  name: "interlace"
+  type_id: 0x6d7f5ff6
+  offset: 424
+}
+member {
+  id: 0x50e8b0b9
+  name: "interlace_allowed"
+  type_id: 0x6d7f5ff6
+  offset: 1536
+}
+member {
+  id: 0x50e8b395
+  name: "interlace_allowed"
+  type_id: 0x6d7f5ff6
+  offset: 1312
+}
+member {
+  id: 0xc39dd626
+  name: "interlaced"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x8064b4f4
+  name: "interleave_scan"
+  type_id: 0xf1159c31
+  offset: 49152
+}
+member {
+  id: 0x95cc43f7
+  name: "interleave_scan_state"
+  type_id: 0x6e2e34cb
+  offset: 49088
+}
+member {
+  id: 0xcf1392d8
+  name: "internal"
+  type_id: 0x6d7f5ff6
+  offset: 17536
+}
+member {
+  id: 0xcf28f8e3
+  name: "internal"
+  type_id: 0x561e60a3
+  offset: 832
+}
+member {
+  id: 0xcf4d905d
+  name: "internal"
+  type_id: 0x33756485
+}
+member {
+  id: 0xcf651311
+  name: "internal"
+  type_id: 0x1bf62820
+}
+member {
+  id: 0xeba68a32
+  name: "internal_addr"
+  type_id: 0x18bd6530
+  offset: 320
+}
+member {
+  id: 0x0837e836
+  name: "internal_flags"
+  type_id: 0x295c7202
+  offset: 360
+}
+member {
+  id: 0x0837e8f9
+  name: "internal_flags"
+  type_id: 0x295c7202
+  offset: 136
+}
+member {
+  id: 0x589ca94a
+  name: "internal_idx"
+  type_id: 0x6720d32f
+  offset: 512
+}
+member {
+  id: 0xf70f37ac
+  name: "internal_ops"
+  type_id: 0x31aed623
+  offset: 1344
+}
+member {
+  id: 0xcb8aec26
+  name: "internal_pages"
+  type_id: 0xe59e5fb5
+  offset: 4096
+}
+member {
+  id: 0x14ac60e2
+  name: "internal_strong_refs"
+  type_id: 0x6720d32f
+  offset: 576
+}
+member {
+  id: 0x52285a55
+  name: "internal_tag"
+  type_id: 0x6720d32f
+  offset: 288
+}
+member {
+  id: 0xb4f3917c
+  name: "interp"
+  type_id: 0x3e10b518
+  offset: 832
+}
+member {
+  id: 0x8e3249ab
+  name: "interp_filter"
+  type_id: 0x9c59388e
+  offset: 14120
+}
+member {
+  id: 0x60e16ced
+  name: "interp_flags"
+  type_id: 0x4585663f
+  offset: 960
+}
+member {
+  id: 0xfa2eae34
+  name: "interpolation_filter"
+  type_id: 0xb3e7bac9
+  offset: 1256
+}
+member {
+  id: 0x2bc01c2b
+  name: "interpreter"
+  type_id: 0x18ea6ae3
+  offset: 448
+}
+member {
+  id: 0xdd499a75
+  name: "interrupt"
+  type_id: 0x0130219f
+  offset: 3584
+}
+member {
+  id: 0xdd4afb18
+  name: "interrupt"
+  type_id: 0x02578e46
+  offset: 256
+}
+member {
+  id: 0x72db081c
+  name: "interrupt_count"
+  type_id: 0x4585663f
+  offset: 3648
+}
+member {
+  id: 0xd6a7ee2b
+  name: "interrupt_enable"
+  type_id: 0x6d7f5ff6
+  offset: 72
+}
+member {
+  id: 0xb25f3460
+  name: "interrupt_in"
+  type_id: 0x4f77c35e
+  offset: 2112
+}
+member {
+  id: 0xff6c3cd6
+  name: "interrupt_in_buffer"
+  type_id: 0x1df06cce
+  offset: 3776
+}
+member {
+  id: 0x85b71c5f
+  name: "interrupt_in_endpointAddress"
+  type_id: 0xb3e7bac9
+  offset: 3904
+}
+member {
+  id: 0xa213a8a1
+  name: "interrupt_in_urb"
+  type_id: 0x0130219f
+  offset: 3840
+}
+member {
+  id: 0x19761760
+  name: "interrupt_mutex"
+  type_id: 0xa7c362b0
+  offset: 3712
+}
+member {
+  id: 0x88026c22
+  name: "interrupt_out"
+  type_id: 0x4f77c35e
+  offset: 3136
+}
+member {
+  id: 0xf35c54ea
+  name: "interrupt_out_buffer"
+  type_id: 0x1df06cce
+  offset: 3968
+}
+member {
+  id: 0xda583bd0
+  name: "interrupt_out_endpointAddress"
+  type_id: 0xb3e7bac9
+  offset: 4160
+}
+member {
+  id: 0xa8309f44
+  name: "interrupt_out_size"
+  type_id: 0x6720d32f
+  offset: 4032
+}
+member {
+  id: 0x5e3b6ecc
+  name: "interrupt_out_urb"
+  type_id: 0x0130219f
+  offset: 4096
+}
+member {
+  id: 0x05278e35
+  name: "interrupt_pin"
+  type_id: 0xbee065d7
+  offset: 128
+}
+member {
+  id: 0x02d1cd00
+  name: "interrupt_service_routine"
+  type_id: 0x2d244fcd
+  offset: 640
+}
+member {
+  id: 0xf9e8c3b2
+  name: "interruptible"
+  type_id: 0x6d7f5ff6
+}
+member {
+  id: 0xf9e8cea8
+  name: "interruptible"
+  type_id: 0x6d7f5ff6
+  offset: 456
+}
+member {
+  id: 0x34ee1231
+  name: "interrupts"
+  type_id: 0x92233392
+  offset: 1344
+}
+member {
+  id: 0xa5ae1e5b
+  name: "interrupts"
+  type_id: 0x4585663f
+  offset: 9263
+  bitsize: 1
+}
+member {
+  id: 0xedf1791b
+  name: "interrupts_seq"
+  type_id: 0x92233392
+  offset: 1280
+}
+member {
+  id: 0x9f27e99b
+  name: "intersect"
+  type_id: 0x6d7f5ff6
+  offset: 288
+}
+member {
+  id: 0xd3ce1868
+  name: "intersects"
+  type_id: 0x370a664e
+  offset: 128
+}
+member {
+  id: 0x490eb248
+  name: "interval"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x490ebf73
+  name: "interval"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x492194dc
+  name: "interval"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x492fb79d
+  name: "interval"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0x49696c4d
+  name: "interval"
+  type_id: 0xaedb15fc
+  offset: 32
+}
+member {
+  id: 0x49696c96
+  name: "interval"
+  type_id: 0xaedb15fc
+  offset: 160
+}
+member {
+  id: 0x49823f05
+  name: "interval"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x49a0978b
+  name: "interval"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x49a09ccd
+  name: "interval"
+  type_id: 0x6720d32f
+  offset: 1280
+}
+member {
+  id: 0x00435f6b
+  name: "interval0_esit_payload"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x05eaf784
+  name: "interval_bw"
+  type_id: 0x7ba14494
+  offset: 64
+}
+member {
+  id: 0x49374ef2
+  name: "interval_tree"
+  type_id: 0xd0f3b5bf
+  offset: 1536
+}
+member {
+  id: 0x02e2818d
+  name: "interval_us"
+  type_id: 0xfc0e1dbd
+  offset: 192
+}
+member {
+  id: 0x01a3048f
+  name: "intervals"
+  type_id: 0xada50e68
+  offset: 768
+}
+member {
+  id: 0x01a304e2
+  name: "intervals"
+  type_id: 0xada50e68
+  offset: 2080
+}
+member {
+  id: 0x8a1b2331
+  name: "intf"
+  type_id: 0x21069feb
+  offset: 64
+}
+member {
+  id: 0x8a1d1999
+  name: "intf"
+  type_id: 0x2738d6de
+}
+member {
+  id: 0x8a7e5be3
+  name: "intf"
+  type_id: 0x4472656b
+  offset: 192
+}
+member {
+  id: 0x8a8c82f2
+  name: "intf"
+  type_id: 0xb6a3bde6
+}
+member {
+  id: 0x702d8941
+  name: "intf_assoc"
+  type_id: 0x357bb44d
+  offset: 192
+}
+member {
+  id: 0x70599fda
+  name: "intf_assoc"
+  type_id: 0x416d2f82
+  offset: 192
+}
+member {
+  id: 0x765bfcd9
+  name: "intf_cache"
+  type_id: 0x51d54e3e
+  offset: 3264
+}
+member {
+  id: 0x02cbf0af
+  name: "intf_devnode"
+  type_id: 0x1349e73e
+  offset: 1024
+}
+member {
+  id: 0x02cbfb9b
+  name: "intf_devnode"
+  type_id: 0x1349e73e
+  offset: 4096
+}
+member {
+  id: 0x02cbff43
+  name: "intf_devnode"
+  type_id: 0x1349e73e
+  offset: 960
+}
+member {
+  id: 0xa4ad6340
+  name: "intf_link"
+  type_id: 0x3ae3ff84
+  offset: 1088
+}
+member {
+  id: 0x4a590e0a
+  name: "intid"
+  type_id: 0x6720d32f
+  offset: 160
+}
+member {
+  id: 0x4af72c65
+  name: "intid"
+  type_id: 0xc9082b19
+  offset: 448
+}
+member {
+  id: 0x5dfd62b5
+  name: "intr_cmd"
+  type_id: 0x6d7f5ff6
+  offset: 680
+}
+member {
+  id: 0x559738ea
+  name: "intr_count"
+  type_id: 0x4585663f
+  offset: 3264
+}
+member {
+  id: 0x0f83608e
+  name: "intr_enable"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x82f270d7
+  name: "intr_mask"
+  type_id: 0xc9082b19
+  offset: 4000
+}
+member {
+  id: 0x6570978b
+  name: "intr_node"
+  type_id: 0xd3c80119
+  offset: 320
+}
+member {
+  id: 0xc39053d4
+  name: "intr_qh_list"
+  type_id: 0xd3c80119
+  offset: 2624
+}
+member {
+  id: 0x3cab4f9d
+  name: "intr_target"
+  type_id: 0x0baa70a7
+  offset: 64
+}
+member {
+  id: 0xd267ad6e
+  name: "intr_unlink"
+  type_id: 0xd3c80119
+  offset: 3008
+}
+member {
+  id: 0xc02d3ffa
+  name: "intr_unlink_cycle"
+  type_id: 0x4585663f
+  offset: 3168
+}
+member {
+  id: 0x109cacba
+  name: "intr_unlink_wait"
+  type_id: 0xd3c80119
+  offset: 2880
+}
+member {
+  id: 0x4b354ae9
+  name: "intr_unlink_wait_cycle"
+  type_id: 0x4585663f
+  offset: 3136
+}
+member {
+  id: 0x3f4178d7
+  name: "intr_unlinking"
+  type_id: 0x6d7f5ff6
+  offset: 1826
+  bitsize: 1
+}
+member {
+  id: 0x4dfec8dd
+  name: "intra_dc_precision"
+  type_id: 0xb3e7bac9
+  offset: 208
+}
+member {
+  id: 0xdbb39863
+  name: "intra_pan"
+  type_id: 0x914dbfdc
+  offset: 6
+  bitsize: 1
+}
+member {
+  id: 0xc87ec328
+  name: "intra_quantiser_matrix"
+  type_id: 0x1f52e925
+}
+member {
+  id: 0xff67f40b
+  name: "intval"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xac059c76
+  name: "intvl_log"
+  type_id: 0x295c7202
+  offset: 264
+}
+member {
+  id: 0x7feeb498
+  name: "inum"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x418fa2a6
+  name: "inuse"
+  type_id: 0x4585663f
+  offset: 640
+}
+member {
+  id: 0x811bbeb6
+  name: "inuse"
+  type_id: 0x4585663f
+  bitsize: 16
+}
+member {
+  id: 0x8a2e383f
+  name: "inuse_idx"
+  type_id: 0x4585663f
+  offset: 1728
+}
+member {
+  id: 0xaeb3050f
+  name: "inuse_pages"
+  type_id: 0x4585663f
+  offset: 992
+}
+member {
+  id: 0xd13e694b
+  name: "inv_weight"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x88bfd448
+  name: "invalid"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xdc38c645
+  name: "invalid_descs"
+  type_id: 0x92233392
+  offset: 192
+}
+member {
+  id: 0xfe5a1eea
+  name: "invalidate_folio"
+  type_id: 0x0c5a56fb
+  offset: 512
+}
+member {
+  id: 0x17dabd89
+  name: "invalidate_lock"
+  type_id: 0x28b9ec9a
+  offset: 192
+}
+member {
+  id: 0x464df804
+  name: "invalidate_lock_key"
+  type_id: 0x475137a2
+  offset: 576
+}
+member {
+  id: 0x6e9b1c0d
+  name: "invalidate_range"
+  type_id: 0x0c16b659
+  offset: 448
+}
+member {
+  id: 0x4f063390
+  name: "invalidate_range_end"
+  type_id: 0x0c397826
+  offset: 384
+}
+member {
+  id: 0x0545c767
+  name: "invalidate_range_start"
+  type_id: 0x2f7f5489
+  offset: 320
+}
+member {
+  id: 0xa4356576
+  name: "invalidate_seq"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x720365d0
+  name: "invert"
+  type_id: 0x6d7f5ff6
+  offset: 224
+}
+member {
+  id: 0x72093a5c
+  name: "invert"
+  type_id: 0x6720d32f
+  offset: 224
+}
+member {
+  id: 0x7265b97d
+  name: "invert"
+  type_id: 0x0baa70a7
+  offset: 896
+}
+member {
+  id: 0xe41df53a
+  name: "invert_bclk"
+  type_id: 0xb3e7bac9
+  offset: 104
+}
+member {
+  id: 0x0242ee38
+  name: "invert_carrier_sense"
+  type_id: 0x6d7f5ff6
+  offset: 200
+}
+member {
+  id: 0xd7cbf1a5
+  name: "invert_fsync"
+  type_id: 0xb3e7bac9
+  offset: 112
+}
+member {
+  id: 0xa7c3689d
+  name: "invert_level"
+  type_id: 0x6d7f5ff6
+  offset: 192
+}
+member {
+  id: 0xbbb3a1bf
+  name: "invert_mask"
+  type_id: 0xc8e4d7d1
+  offset: 384
+}
+member {
+  id: 0x16507b8b
+  name: "invert_x"
+  type_id: 0x6d7f5ff6
+  offset: 64
+}
+member {
+  id: 0x5490facf
+  name: "invert_y"
+  type_id: 0x6d7f5ff6
+  offset: 72
+}
+member {
+  id: 0x9d5b90f8
+  name: "io"
+  type_id: 0x3050ef8f
+}
+member {
+  id: 0x7aee4108
+  name: "io_base"
+  type_id: 0x9565759f
+  offset: 256
+}
+member {
+  id: 0x3627a6aa
+  name: "io_bl"
+  type_id: 0x3b7c5d08
+  offset: 1728
+}
+member {
+  id: 0x8f600402
+  name: "io_bl_xa"
+  type_id: 0x80c20070
+  offset: 1792
+}
+member {
+  id: 0x65b934f9
+  name: "io_buffers_cache"
+  type_id: 0xd3c80119
+  offset: 1920
+}
+member {
+  id: 0x1124a364
+  name: "io_buffers_comp"
+  type_id: 0xd3c80119
+  offset: 448
+}
+member {
+  id: 0xd2b7f290
+  name: "io_buffers_pages"
+  type_id: 0xd3c80119
+  offset: 8000
+}
+member {
+  id: 0x9009fe4b
+  name: "io_bus_addr"
+  type_id: 0xbdd18903
+  offset: 320
+}
+member {
+  id: 0xc94272a1
+  name: "io_capability"
+  type_id: 0xb3e7bac9
+  offset: 6112
+}
+member {
+  id: 0xc9427d46
+  name: "io_capability"
+  type_id: 0xb3e7bac9
+  offset: 784
+}
+member {
+  id: 0x92838a4e
+  name: "io_context"
+  type_id: 0x38f320f1
+  offset: 19456
+}
+member {
+  id: 0xa3dbd5d1
+  name: "io_dev"
+  type_id: 0x0258f96e
+  offset: 320
+}
+member {
+  id: 0x08b4d201
+  name: "io_ev_fd"
+  type_id: 0x3c5401fe
+  offset: 192
+}
+member {
+  id: 0xadd5b431
+  name: "io_int_parm"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x1dac28b0
+  name: "io_int_word"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xfe460429
+  name: "io_is_busy"
+  type_id: 0x4585663f
+  offset: 1600
+}
+member {
+  id: 0xa8db7330
+  name: "io_mem_free"
+  type_id: 0x0f972c3a
+  offset: 640
+}
+member {
+  id: 0xee6c232c
+  name: "io_mem_pfn"
+  type_id: 0x048ea3ea
+  offset: 704
+}
+member {
+  id: 0x1775b64f
+  name: "io_mem_reserve"
+  type_id: 0x2cd10095
+  offset: 576
+}
+member {
+  id: 0xcebee4f2
+  name: "io_min"
+  type_id: 0x4585663f
+  offset: 448
+}
+member {
+  id: 0x893d25b0
+  name: "io_modes"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xc85960c3
+  name: "io_mutex"
+  type_id: 0xa7c362b0
+  offset: 1152
+}
+member {
+  id: 0xc85963fa
+  name: "io_mutex"
+  type_id: 0xa7c362b0
+  offset: 7808
+}
+member {
+  id: 0x9646647d
+  name: "io_ops"
+  type_id: 0x3d78ca8c
+  offset: 960
+}
+member {
+  id: 0x9673a617
+  name: "io_ops"
+  type_id: 0x08b3c132
+  offset: 384
+}
+member {
+  id: 0xcf46a0ed
+  name: "io_ops_count"
+  type_id: 0x6720d32f
+  offset: 1024
+}
+member {
+  id: 0xac78b3d9
+  name: "io_opt"
+  type_id: 0x4585663f
+  offset: 480
+}
+member {
+  id: 0x31c43d4e
+  name: "io_pages"
+  type_id: 0x33756485
+  offset: 448
+}
+member {
+  id: 0x8eb2555a
+  name: "io_port"
+  type_id: 0x33756485
+  offset: 4864
+}
+member {
+  id: 0x8eec5613
+  name: "io_port"
+  type_id: 0x6d7f5ff6
+  offset: 1352
+}
+member {
+  id: 0xd5efcf8b
+  name: "io_priv"
+  type_id: 0x18bd6530
+  offset: 448
+}
+member {
+  id: 0xc4cd62a4
+  name: "io_size"
+  type_id: 0xc9082b19
+  offset: 384
+}
+member {
+  id: 0xc4e24ac5
+  name: "io_size"
+  type_id: 0xe62ebf07
+  offset: 800
+}
+member {
+  id: 0xca2ca1b1
+  name: "io_start_time_ns"
+  type_id: 0x92233392
+  offset: 896
+}
+member {
+  id: 0x94c205c0
+  name: "io_started"
+  type_id: 0x6d7f5ff6
+  offset: 59360
+}
+member {
+  id: 0x8b906365
+  name: "io_task_work"
+  type_id: 0xb51e9b76
+  offset: 1088
+}
+member {
+  id: 0x145f4d1f
+  name: "io_ticks"
+  type_id: 0x33756485
+  offset: 1024
+}
+member {
+  id: 0xb9b2029f
+  name: "io_type"
+  type_id: 0x384f7d7c
+  offset: 272
+}
+member {
+  id: 0xc74ec4e7
+  name: "io_uring"
+  type_id: 0x3faf127d
+  offset: 17408
+}
+member {
+  id: 0xd93d92ce
+  name: "io_wait"
+  type_id: 0x03913382
+  offset: 192
+}
+member {
+  id: 0xcbc66b8c
+  name: "io_window"
+  type_id: 0x4585663f
+  offset: 22089
+  bitsize: 1
+}
+member {
+  id: 0x7fcdc1bf
+  name: "io_window_1k"
+  type_id: 0x4585663f
+  offset: 22118
+  bitsize: 1
+}
+member {
+  id: 0xd458e40b
+  name: "io_wq"
+  type_id: 0x2c71a392
+  offset: 128
+}
+member {
+  id: 0x63f210eb
+  name: "ioac"
+  type_id: 0x81bf1eaa
+  offset: 4928
+}
+member {
+  id: 0x63f215e6
+  name: "ioac"
+  type_id: 0x81bf1eaa
+  offset: 19712
+}
+member {
+  id: 0xa8ccc093
+  name: "ioaddr"
+  type_id: 0x18bd6530
+  offset: 192
+}
+member {
+  id: 0xdb660d5a
+  name: "ioam6_data"
+  type_id: 0x3815e999
+  offset: 6848
+}
+member {
+  id: 0xef330e54
+  name: "ioam6_enabled"
+  type_id: 0xb3e7bac9
+  offset: 1920
+}
+member {
+  id: 0x48ccbe61
+  name: "ioam6_id"
+  type_id: 0xc9082b19
+  offset: 1312
+}
+member {
+  id: 0x48e39a23
+  name: "ioam6_id"
+  type_id: 0xe62ebf07
+  offset: 1856
+}
+member {
+  id: 0x6180068e
+  name: "ioam6_id_wide"
+  type_id: 0xe62ebf07
+  offset: 1888
+}
+member {
+  id: 0x61f40f68
+  name: "ioam6_id_wide"
+  type_id: 0x92233392
+  offset: 1344
+}
+member {
+  id: 0xe09a972f
+  name: "iobase"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x1fe6f198
+  name: "ioc"
+  type_id: 0x38f320f1
+  offset: 64
+}
+member {
+  id: 0x91ecd1aa
+  name: "ioc_node"
+  type_id: 0x49a73111
+}
+member {
+  id: 0xa393a6c9
+  name: "iocb"
+  type_id: 0x08b52b5b
+}
+member {
+  id: 0x4d44694e
+  name: "ioctl"
+  type_id: 0x203cd5eb
+  offset: 512
+}
+member {
+  id: 0x4d466701
+  name: "ioctl"
+  type_id: 0x2230f0e3
+  offset: 576
+}
+member {
+  id: 0x4d46ce0b
+  name: "ioctl"
+  type_id: 0x229023df
+  offset: 256
+}
+member {
+  id: 0x4d46e928
+  name: "ioctl"
+  type_id: 0x22b06ce2
+  offset: 320
+}
+member {
+  id: 0x4d475997
+  name: "ioctl"
+  type_id: 0x23006385
+  offset: 448
+}
+member {
+  id: 0x4d481911
+  name: "ioctl"
+  type_id: 0x2c4055cf
+  offset: 320
+}
+member {
+  id: 0x4d48a1bb
+  name: "ioctl"
+  type_id: 0x2cf6809c
+  offset: 1600
+}
+member {
+  id: 0x4d48a8da
+  name: "ioctl"
+  type_id: 0x2cff9b8f
+  offset: 128
+}
+member {
+  id: 0x4d48e6a9
+  name: "ioctl"
+  type_id: 0x2cbccbe7
+  offset: 64
+}
+member {
+  id: 0x4d48e740
+  name: "ioctl"
+  type_id: 0x2cb0b1c0
+  offset: 576
+}
+member {
+  id: 0x4d48ead3
+  name: "ioctl"
+  type_id: 0x2cb0b1c0
+  offset: 64
+}
+member {
+  id: 0x4d49cdbf
+  name: "ioctl"
+  type_id: 0x2d933cca
+}
+member {
+  id: 0x4d49e419
+  name: "ioctl"
+  type_id: 0x2dbdca1b
+  offset: 1472
+}
+member {
+  id: 0x4d49fa88
+  name: "ioctl"
+  type_id: 0x2da3cc79
+  offset: 320
+}
+member {
+  id: 0x4d4a4447
+  name: "ioctl"
+  type_id: 0x2e1b56db
+  offset: 384
+}
+member {
+  id: 0x4d4b00af
+  name: "ioctl"
+  type_id: 0x2f595b5a
+  offset: 448
+}
+member {
+  id: 0x4d4b01d0
+  name: "ioctl"
+  type_id: 0x2f595b5a
+  offset: 3008
+}
+member {
+  id: 0x4d4b0f76
+  name: "ioctl"
+  type_id: 0x2f595b5a
+  offset: 768
+}
+member {
+  id: 0x4d4b9f7f
+  name: "ioctl"
+  type_id: 0x2fc06ea0
+  offset: 384
+}
+member {
+  id: 0x4d4bbccf
+  name: "ioctl"
+  type_id: 0x2fe3def6
+  offset: 384
+}
+member {
+  id: 0x4d4bbff1
+  name: "ioctl"
+  type_id: 0x2fe0e0ec
+  offset: 384
+}
+member {
+  id: 0x179647c1
+  name: "ioctl_active"
+  type_id: 0x74d29cf1
+  offset: 7744
+}
+member {
+  id: 0x7f374859
+  name: "ioctl_compat"
+  type_id: 0x2fc06ea0
+  offset: 448
+}
+member {
+  id: 0x71d5bbe6
+  name: "ioctl_ops"
+  type_id: 0x39dc346c
+  offset: 9984
+}
+member {
+  id: 0x5cd03acc
+  name: "ioctls"
+  type_id: 0x396151a4
+  offset: 1536
+}
+member {
+  id: 0x2a776604
+  name: "ioctx_lock"
+  type_id: 0xf313e71a
+  offset: 6464
+}
+member {
+  id: 0x2c104285
+  name: "ioctx_table"
+  type_id: 0x19c60038
+  offset: 6528
+}
+member {
+  id: 0xc33609f7
+  name: "iodev"
+  type_id: 0x60b9a60c
+  offset: 128
+}
+member {
+  id: 0x10f4be53
+  name: "iodev_type"
+  type_id: 0xf101ec6d
+  offset: 192
+}
+member {
+  id: 0x5a8c2ccc
+  name: "iodone_cnt"
+  type_id: 0x74d29cf1
+  offset: 3648
+}
+member {
+  id: 0x37b6b6f1
+  name: "ioerr_cnt"
+  type_id: 0x74d29cf1
+  offset: 3680
+}
+member {
+  id: 0x3103f4d5
+  name: "ioeventfd_count"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x0d7ae40f
+  name: "ioeventfds"
+  type_id: 0xd3c80119
+  offset: 20288
+}
+member {
+  id: 0x51cefec4
+  name: "iomap"
+  type_id: 0x1f1bbebc
+  offset: 1216
+}
+member {
+  id: 0xee320da7
+  name: "iomap_base"
+  type_id: 0x33756485
+  offset: 512
+}
+member {
+  id: 0x440adea8
+  name: "iomem_base"
+  type_id: 0x1df06cce
+  offset: 384
+}
+member {
+  id: 0x9e7a7e73
+  name: "iomem_reg_shift"
+  type_id: 0xc93e017b
+  offset: 448
+}
+member {
+  id: 0xafaa917c
+  name: "iommu"
+  type_id: 0x0cb928b9
+  offset: 6592
+}
+member {
+  id: 0x4d0e7528
+  name: "iommu_bank"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x0f8249e4
+  name: "iommu_cntr"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0xd6ccb829
+  name: "iommu_cookie"
+  type_id: 0x391f15ea
+  offset: 320
+}
+member {
+  id: 0x3279112f
+  name: "iommu_data"
+  type_id: 0x18bd6530
+  offset: 1472
+}
+member {
+  id: 0x98493de4
+  name: "iommu_data_release"
+  type_id: 0x0f3dfb90
+  offset: 1536
+}
+member {
+  id: 0xb2de3315
+  name: "iommu_dev"
+  type_id: 0x0258f96e
+  offset: 320
+}
+member {
+  id: 0xb2e28dd5
+  name: "iommu_dev"
+  type_id: 0x3ee88c45
+  offset: 576
+}
+member {
+  id: 0x22809337
+  name: "iommu_fwnode"
+  type_id: 0x0490bb4a
+  offset: 64
+}
+member {
+  id: 0x6622ee76
+  name: "iommu_group"
+  type_id: 0x097315c2
+  offset: 6528
+}
+member {
+  id: 0x4efcd743
+  name: "iommu_ops"
+  type_id: 0x3eed77c0
+  offset: 1280
+}
+member {
+  id: 0x90810ddc
+  name: "iopf_handler"
+  type_id: 0x0ca205d3
+  offset: 448
+}
+member {
+  id: 0x3ff870a4
+  name: "iopf_param"
+  type_id: 0x1e840846
+  offset: 448
+}
+member {
+  id: 0x5e4901da
+  name: "iopoll"
+  type_id: 0x2d5b56ca
+  offset: 384
+}
+member {
+  id: 0x072679da
+  name: "iopoll_completed"
+  type_id: 0x295c7202
+  offset: 520
+}
+member {
+  id: 0xbf7d259e
+  name: "iopoll_list"
+  type_id: 0x25eef749
+  offset: 64
+}
+member {
+  id: 0x695e350f
+  name: "ioport"
+  type_id: 0x3acf0cc8
+  offset: 1728
+}
+member {
+  id: 0x080fe703
+  name: "ioprio"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0x082edaac
+  name: "ioprio"
+  type_id: 0xc93e017b
+  offset: 1168
+}
+member {
+  id: 0x082edd7f
+  name: "ioprio"
+  type_id: 0xc93e017b
+  offset: 96
+}
+member {
+  id: 0x4bff3b8c
+  name: "iorequest_cnt"
+  type_id: 0x74d29cf1
+  offset: 3616
+}
+member {
+  id: 0x13233d1b
+  name: "ios"
+  type_id: 0xf7777e11
+  offset: 8320
+}
+member {
+  id: 0x1354d68f
+  name: "ios"
+  type_id: 0x80904a3b
+  offset: 512
+}
+member {
+  id: 0x13e2082d
+  name: "ios"
+  type_id: 0x364d39d0
+  offset: 192
+}
+member {
+  id: 0xb70a02ba
+  name: "iostat"
+  type_id: 0x407a7203
+  offset: 704
+}
+member {
+  id: 0x0382d523
+  name: "iostat_cpu"
+  type_id: 0x1a8ea527
+  offset: 640
+}
+member {
+  id: 0xbbd1f737
+  name: "iotlb"
+  type_id: 0x3ad18ab6
+  offset: 832
+}
+member {
+  id: 0xbbd1f963
+  name: "iotlb"
+  type_id: 0x3ad18ab6
+  offset: 142208
+}
+member {
+  id: 0x04877fe9
+  name: "iotlb_iov"
+  type_id: 0x3f60fa99
+  offset: 133824
+}
+member {
+  id: 0xeed94acd
+  name: "iotlb_lock"
+  type_id: 0xf313e71a
+  offset: 896
+}
+member {
+  id: 0x9f65e3e7
+  name: "iotlb_sync"
+  type_id: 0x0c55d62d
+  offset: 576
+}
+member {
+  id: 0xc1a6e711
+  name: "iotlb_sync_map"
+  type_id: 0x0c6351ef
+  offset: 512
+}
+member {
+  id: 0x61cf6b3e
+  name: "iotmo_cnt"
+  type_id: 0x74d29cf1
+  offset: 3712
+}
+member {
+  id: 0x2f72ea82
+  name: "iotype"
+  type_id: 0x5d8155a5
+  offset: 1488
+}
+member {
+  id: 0xdf21cc08
+  name: "iov"
+  type_id: 0x3390b1b4
+  offset: 2752
+}
+member {
+  id: 0xdf2cf939
+  name: "iov"
+  type_id: 0x3ea6bd8c
+}
+member {
+  id: 0x7f9d2120
+  name: "iov_base"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0x962b59ac
+  name: "iov_len"
+  type_id: 0x5b3d9d36
+  offset: 64
+}
+member {
+  id: 0x96845159
+  name: "iov_len"
+  type_id: 0xf435685e
+  offset: 64
+}
+member {
+  id: 0x51daf362
+  name: "iov_limit"
+  type_id: 0x6720d32f
+  offset: 1408
+}
+member {
+  id: 0x81751da9
+  name: "iov_offset"
+  type_id: 0xf435685e
+}
+member {
+  id: 0xc1a94fe9
+  name: "iova"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x78c9a63b
+  name: "iova_cookie"
+  type_id: 0x1826c2b2
+  offset: 384
+}
+member {
+  id: 0xaac1924b
+  name: "iova_pfn"
+  type_id: 0x33756485
+}
+member {
+  id: 0x9e6e7abb
+  name: "iova_rbtree_lock"
+  type_id: 0xf313e71a
+}
+member {
+  id: 0x80f5146e
+  name: "iova_to_phys"
+  type_id: 0x08f34b70
+  offset: 640
+}
+member {
+  id: 0x80f69829
+  name: "iova_to_phys"
+  type_id: 0x0b79de66
+  offset: 256
+}
+member {
+  id: 0xaad8f635
+  name: "iovad"
+  type_id: 0xd4535e6d
+}
+member {
+  id: 0x295554bc
+  name: "iovec_count"
+  type_id: 0xc93e017b
+  offset: 80
+}
+member {
+  id: 0x1aef7561
+  name: "iowait_count"
+  type_id: 0x92233392
+  offset: 256
+}
+member {
+  id: 0x31f0acd0
+  name: "iowait_sum"
+  type_id: 0x92233392
+  offset: 320
+}
+member {
+  id: 0x3dd48798
+  name: "iowq_limits"
+  type_id: 0x5eeb4a25
+  offset: 10304
+}
+member {
+  id: 0x1547851d
+  name: "iowq_limits_set"
+  type_id: 0x6d7f5ff6
+  offset: 10368
+}
+member {
+  id: 0xd364d156
+  name: "ip"
+  type_id: 0x33756485
+}
+member {
+  id: 0xd3a8e5c0
+  name: "ip"
+  type_id: 0xff45131e
+  offset: 64
+}
+member {
+  id: 0xd3b5d29f
+  name: "ip"
+  type_id: 0xe276adef
+}
+member {
+  id: 0xd3c58e73
+  name: "ip"
+  type_id: 0x92233392
+  offset: 576
+}
+member {
+  id: 0x1736c096
+  name: "ip4"
+  type_id: 0xf4616560
+}
+member {
+  id: 0xa0818757
+  name: "ip4dst"
+  type_id: 0xe276adef
+  offset: 32
+}
+member {
+  id: 0xa28b61d2
+  name: "ip4src"
+  type_id: 0xe276adef
+}
+member {
+  id: 0x92f464d1
+  name: "ip6"
+  type_id: 0xb6704284
+}
+member {
+  id: 0x92f6c42b
+  name: "ip6"
+  type_id: 0xb4d0b861
+}
+member {
+  id: 0x3ce92240
+  name: "ip6_blk_hole_entry"
+  type_id: 0x17b5cc93
+  offset: 4544
+}
+member {
+  id: 0xd9d01299
+  name: "ip6_del_rt"
+  type_id: 0x2d1f7140
+  offset: 832
+}
+member {
+  id: 0xb565c09d
+  name: "ip6_dst_ops"
+  type_id: 0xaf33de29
+}
+member {
+  id: 0x9dbbf18c
+  name: "ip6_fib_timer"
+  type_id: 0xd298e888
+  offset: 3520
+}
+member {
+  id: 0x747dade5
+  name: "ip6_mtu_from_fib6"
+  type_id: 0x18fee010
+  offset: 512
+}
+member {
+  id: 0xf6f90c3e
+  name: "ip6_null_entry"
+  type_id: 0x17b5cc93
+  offset: 3392
+}
+member {
+  id: 0xedc3c45f
+  name: "ip6_prohibit_entry"
+  type_id: 0x17b5cc93
+  offset: 4480
+}
+member {
+  id: 0xecef5afa
+  name: "ip6_ptr"
+  type_id: 0x3ba05ad7
+  offset: 5824
+}
+member {
+  id: 0xe6888227
+  name: "ip6_rt_gc_elasticity"
+  type_id: 0x6720d32f
+  offset: 480
+}
+member {
+  id: 0xd5da7d05
+  name: "ip6_rt_gc_expire"
+  type_id: 0x74d29cf1
+  offset: 4320
+}
+member {
+  id: 0x61a97677
+  name: "ip6_rt_gc_interval"
+  type_id: 0x6720d32f
+  offset: 448
+}
+member {
+  id: 0x66896532
+  name: "ip6_rt_gc_min_interval"
+  type_id: 0x6720d32f
+  offset: 384
+}
+member {
+  id: 0xbaf83254
+  name: "ip6_rt_gc_timeout"
+  type_id: 0x6720d32f
+  offset: 416
+}
+member {
+  id: 0x051d50f0
+  name: "ip6_rt_last_gc"
+  type_id: 0x33756485
+  offset: 4352
+}
+member {
+  id: 0x7c7aa7e6
+  name: "ip6_rt_max_size"
+  type_id: 0x6720d32f
+  offset: 352
+}
+member {
+  id: 0x2e9cb087
+  name: "ip6_rt_min_advmss"
+  type_id: 0x6720d32f
+  offset: 544
+}
+member {
+  id: 0xede8772f
+  name: "ip6_rt_mtu_expires"
+  type_id: 0x6720d32f
+  offset: 512
+}
+member {
+  id: 0x2bee09c2
+  name: "ip6addrlbl_table"
+  type_id: 0x352630a5
+  offset: 6720
+}
+member {
+  id: 0xe61bc14f
+  name: "ip6dst"
+  type_id: 0xb4d0b861
+  offset: 128
+}
+member {
+  id: 0x097dd455
+  name: "ip6mr_notifier_ops"
+  type_id: 0x0283e1e3
+  offset: 6592
+}
+member {
+  id: 0x2eafbbb4
+  name: "ip6src"
+  type_id: 0xb4d0b861
+}
+member {
+  id: 0xd1bd75e0
+  name: "ip_after_call"
+  type_id: 0x18bd6530
+  offset: 4992
+}
+member {
+  id: 0x0e850e04
+  name: "ip_defrag_offset"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xbc6a844a
+  name: "ip_epilogue"
+  type_id: 0x18bd6530
+  offset: 5056
+}
+member {
+  id: 0x7debab67
+  name: "ip_id"
+  type_id: 0x914dbfdc
+  offset: 128
+}
+member {
+  id: 0x9348db88
+  name: "ip_id_key"
+  type_id: 0x4edec64c
+  offset: 5376
+}
+member {
+  id: 0xd2929e47
+  name: "ip_local_ports"
+  type_id: 0x9dc63437
+  offset: 2720
+}
+member {
+  id: 0x80a6bd43
+  name: "ip_nonlocal_bind"
+  type_id: 0x295c7202
+  offset: 1032
+}
+member {
+  id: 0x416661dc
+  name: "ip_proto"
+  type_id: 0x295c7202
+  offset: 16
+}
+member {
+  id: 0x41666e66
+  name: "ip_proto"
+  type_id: 0x295c7202
+  offset: 344
+}
+member {
+  id: 0x9d0d4d9c
+  name: "ip_ptr"
+  type_id: 0x1c843062
+  offset: 5760
+}
+member {
+  id: 0x3d0b64f5
+  name: "ip_rt_min_advmss"
+  type_id: 0x6720d32f
+  offset: 2688
+}
+member {
+  id: 0x770088bd
+  name: "ip_rt_min_pmtu"
+  type_id: 0xc9082b19
+  offset: 2624
+}
+member {
+  id: 0x0a8fa36d
+  name: "ip_rt_mtu_expires"
+  type_id: 0x6720d32f
+  offset: 2656
+}
+member {
+  id: 0xe759e741
+  name: "ip_statistics"
+  type_id: 0x37439484
+}
+member {
+  id: 0x63835af9
+  name: "ip_summed"
+  type_id: 0xb3e7bac9
+  offset: 5
+  bitsize: 2
+}
+member {
+  id: 0xc6513e8d
+  name: "ip_ver"
+  type_id: 0xb3e7bac9
+  offset: 104
+}
+member {
+  id: 0xb21940c8
+  name: "ipa"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0x73d7e0dc
+  name: "ipb"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x73d7e464
+  name: "ipb"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x376c5a92
+  name: "ipc"
+  type_id: 0x1d23c41f
+}
+member {
+  id: 0xaa5624b1
+  name: "ipc_ns"
+  type_id: 0x303ac854
+  offset: 128
+}
+member {
+  id: 0x05889fb1
+  name: "ipc_set"
+  type_id: 0x7b06e63f
+  offset: 8960
+}
+member {
+  id: 0xb985d006
+  name: "ipc_sysctls"
+  type_id: 0x34544a3f
+  offset: 9728
+}
+member {
+  id: 0x4c8db422
+  name: "ipcns_nb"
+  type_id: 0x449a775b
+  offset: 7680
+}
+member {
+  id: 0x553eb9fd
+  name: "ipcs_idr"
+  type_id: 0x04b89667
+  offset: 576
+}
+member {
+  id: 0xf696f182
+  name: "iph"
+  type_id: 0x23317b59
+  offset: 256
+}
+member {
+  id: 0xe69d21c0
+  name: "ipi_list"
+  type_id: 0x214d9bc0
+}
+member {
+  id: 0x87060f64
+  name: "ipi_offset"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0x9c3eba74
+  name: "ipi_send_mask"
+  type_id: 0x0e30e7f5
+  offset: 1856
+}
+member {
+  id: 0xfe5f6990
+  name: "ipi_send_single"
+  type_id: 0x0e446c53
+  offset: 1792
+}
+member {
+  id: 0xf18fc8e0
+  name: "ipmr_notifier_ops"
+  type_id: 0x0283e1e3
+  offset: 5248
+}
+member {
+  id: 0x3d44ba44
+  name: "ipmr_seq"
+  type_id: 0x4585663f
+  offset: 6656
+}
+member {
+  id: 0x3d44bfa5
+  name: "ipmr_seq"
+  type_id: 0x4585663f
+  offset: 5312
+}
+member {
+  id: 0x08f2aac8
+  name: "ips"
+  type_id: 0xc9082b19
+  bitsize: 3
+}
+member {
+  id: 0x62ed962a
+  name: "ipv"
+  type_id: 0xd41e888f
+  offset: 64
+}
+member {
+  id: 0xbd2ac666
+  name: "ipv4"
+  type_id: 0x5c902307
+  offset: 5632
+}
+member {
+  id: 0xbd7f2844
+  name: "ipv4"
+  type_id: 0x09778705
+}
+member {
+  id: 0xbd94296e
+  name: "ipv4"
+  type_id: 0xe276adef
+}
+member {
+  id: 0x1a4dcd1c
+  name: "ipv4_hdr"
+  type_id: 0x34544a3f
+  offset: 1152
+}
+member {
+  id: 0x3b9e102b
+  name: "ipv6"
+  type_id: 0x6d7f5ff6
+  offset: 152
+}
+member {
+  id: 0x3b9e4463
+  name: "ipv6"
+  type_id: 0x6d25e07f
+}
+member {
+  id: 0x3baab289
+  name: "ipv6"
+  type_id: 0x59d48311
+  offset: 11264
+}
+member {
+  id: 0x3bc426f6
+  name: "ipv6"
+  type_id: 0x37439484
+  offset: 64
+}
+member {
+  id: 0x3bfa35f3
+  name: "ipv6"
+  type_id: 0x09547003
+}
+member {
+  id: 0x12832f3f
+  name: "ipv6_dev_find"
+  type_id: 0x357e91ee
+  offset: 1408
+}
+member {
+  id: 0x3898a978
+  name: "ipv6_dst_lookup_flow"
+  type_id: 0x221aed72
+  offset: 128
+}
+member {
+  id: 0xcf78c1e2
+  name: "ipv6_fragment"
+  type_id: 0x2d271bc7
+  offset: 1344
+}
+member {
+  id: 0xdf622691
+  name: "ipv6_route_input"
+  type_id: 0x2da4f7fd
+  offset: 192
+}
+member {
+  id: 0x92a42033
+  name: "ipv6_sock_mc_drop"
+  type_id: 0x2c40d6f8
+  offset: 64
+}
+member {
+  id: 0xb4ff0dc3
+  name: "ipv6_sock_mc_join"
+  type_id: 0x2c40d6f8
+}
+member {
+  id: 0x40f17969
+  name: "ipv6_statistics"
+  type_id: 0x37439484
+  offset: 64
+}
+member {
+  id: 0xbc7b8ea2
+  name: "ipv6_v6only"
+  type_id: 0x4585663f
+  offset: 355
+  bitsize: 1
+}
+member {
+  id: 0x7e581441
+  name: "ipvs_property"
+  type_id: 0xb3e7bac9
+  offset: 26
+  bitsize: 1
+}
+member {
+  id: 0x5def1bf7
+  name: "ir"
+  type_id: 0x3885e219
+  offset: 320
+}
+member {
+  id: 0x9e03bc1d
+  name: "ir_set"
+  type_id: 0x2ec4955f
+  offset: 384
+}
+member {
+  id: 0x9e27c3a3
+  name: "ir_set"
+  type_id: 0x0aba1232
+  offset: 256
+}
+member {
+  id: 0xae64c19d
+  name: "ires"
+  type_id: 0x8a82103e
+  offset: 3232
+}
+member {
+  id: 0x06fb260e
+  name: "irgn"
+  type_id: 0xc9082b19
+  offset: 9
+  bitsize: 2
+}
+member {
+  id: 0x068f454d
+  name: "irk"
+  type_id: 0x60ca2c23
+  offset: 46688
+}
+member {
+  id: 0x99159221
+  name: "irq"
+  type_id: 0x6720d32f
+  offset: 320
+}
+member {
+  id: 0x99159514
+  name: "irq"
+  type_id: 0x6720d32f
+  offset: 608
+}
+member {
+  id: 0x991595e6
+  name: "irq"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x991596db
+  name: "irq"
+  type_id: 0x6720d32f
+  offset: 2752
+}
+member {
+  id: 0x99159786
+  name: "irq"
+  type_id: 0x6720d32f
+  offset: 416
+}
+member {
+  id: 0x99159805
+  name: "irq"
+  type_id: 0x6720d32f
+  offset: 4768
+}
+member {
+  id: 0x99159806
+  name: "irq"
+  type_id: 0x6720d32f
+  offset: 160
+}
+member {
+  id: 0x99159922
+  name: "irq"
+  type_id: 0x6720d32f
+  offset: 7520
+}
+member {
+  id: 0x99159a36
+  name: "irq"
+  type_id: 0x6720d32f
+  offset: 7584
+}
+member {
+  id: 0x99159c15
+  name: "irq"
+  type_id: 0x6720d32f
+  offset: 2240
+}
+member {
+  id: 0x99159c24
+  name: "irq"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x99159c2d
+  name: "irq"
+  type_id: 0x6720d32f
+  offset: 1312
+}
+member {
+  id: 0x99159c55
+  name: "irq"
+  type_id: 0x6720d32f
+  offset: 8480
+}
+member {
+  id: 0x99159c65
+  name: "irq"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0x99159c94
+  name: "irq"
+  type_id: 0x6720d32f
+  offset: 576
+}
+member {
+  id: 0x99159d2f
+  name: "irq"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0x99159e95
+  name: "irq"
+  type_id: 0x6720d32f
+  offset: 10496
+}
+member {
+  id: 0x992f360d
+  name: "irq"
+  type_id: 0x5d8155a5
+  offset: 144
+}
+member {
+  id: 0x99373053
+  name: "irq"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x993735f0
+  name: "irq"
+  type_id: 0x4585663f
+  offset: 4960
+}
+member {
+  id: 0x9937362e
+  name: "irq"
+  type_id: 0x4585663f
+  offset: 1280
+}
+member {
+  id: 0x9937369d
+  name: "irq"
+  type_id: 0x4585663f
+  offset: 3392
+}
+member {
+  id: 0x99373724
+  name: "irq"
+  type_id: 0x4585663f
+  offset: 448
+}
+member {
+  id: 0x993739d5
+  name: "irq"
+  type_id: 0x4585663f
+  offset: 8992
+}
+member {
+  id: 0x99373ab4
+  name: "irq"
+  type_id: 0x4585663f
+  offset: 1536
+}
+member {
+  id: 0x99373d68
+  name: "irq"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x993fb5da
+  name: "irq"
+  type_id: 0x4d04bc3a
+  offset: 19008
+}
+member {
+  id: 0x996a0ec6
+  name: "irq"
+  type_id: 0x18b0eb5e
+  offset: 512
+}
+member {
+  id: 0x9972cb66
+  name: "irq"
+  type_id: 0x00769aa9
+  offset: 192
+}
+member {
+  id: 0x998ebdda
+  name: "irq"
+  type_id: 0xfc0e1dbd
+  offset: 4032
+}
+member {
+  id: 0x99949b8a
+  name: "irq"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x99abc34e
+  name: "irq"
+  type_id: 0xd9729a52
+  offset: 64
+}
+member {
+  id: 0x99c8e1eb
+  name: "irq"
+  type_id: 0xba52d680
+  offset: 8960
+}
+member {
+  id: 0x99cadb25
+  name: "irq"
+  type_id: 0xb8696763
+  offset: 448
+}
+member {
+  id: 0x99d63bfd
+  name: "irq"
+  type_id: 0xa489c3d0
+  offset: 2304
+}
+member {
+  id: 0x2fffb3ae
+  name: "irq_ack"
+  type_id: 0x0e01e935
+  offset: 320
+}
+member {
+  id: 0x3b21a108
+  name: "irq_ack_notifier_list"
+  type_id: 0x5e8dc7f4
+  offset: 25344
+}
+member {
+  id: 0x8dcdd781
+  name: "irq_base"
+  type_id: 0x6720d32f
+  offset: 2624
+}
+member {
+  id: 0x8def7afc
+  name: "irq_base"
+  type_id: 0x4585663f
+  offset: 384
+}
+member {
+  id: 0xd443e46c
+  name: "irq_bus_lock"
+  type_id: 0x0e01e935
+  offset: 896
+}
+member {
+  id: 0x46814ecd
+  name: "irq_bus_sync_unlock"
+  type_id: 0x0e01e935
+  offset: 960
+}
+member {
+  id: 0x968e29d0
+  name: "irq_calc_mask"
+  type_id: 0x0e01e935
+  offset: 1216
+}
+member {
+  id: 0x7814c1bd
+  name: "irq_chip"
+  type_id: 0xadd7ccb6
+  offset: 384
+}
+member {
+  id: 0xd6ff3603
+  name: "irq_cnt"
+  type_id: 0x4585663f
+  offset: 416
+}
+member {
+  id: 0x097365c0
+  name: "irq_common_data"
+  type_id: 0xf18cf4eb
+}
+member {
+  id: 0xc7b22a37
+  name: "irq_compose_msi_msg"
+  type_id: 0x0e2536c2
+  offset: 1472
+}
+member {
+  id: 0xc3423640
+  name: "irq_control"
+  type_id: 0xc9082b19
+  offset: 192
+}
+member {
+  id: 0xc38091e9
+  name: "irq_control"
+  type_id: 0x0baa70a7
+  offset: 32
+}
+member {
+  id: 0x5200c798
+  name: "irq_count"
+  type_id: 0x4585663f
+  offset: 1184
+}
+member {
+  id: 0x7191382d
+  name: "irq_data"
+  type_id: 0x33756485
+  offset: 9024
+}
+member {
+  id: 0x71a5f6ff
+  name: "irq_data"
+  type_id: 0x07b1db01
+  offset: 384
+}
+member {
+  id: 0x5ea90e65
+  name: "irq_descr"
+  type_id: 0x5adf57ae
+  offset: 1184
+}
+member {
+  id: 0x5ee85607
+  name: "irq_descr"
+  type_id: 0x1b8f18df
+  offset: 1568
+}
+member {
+  id: 0x07d8062b
+  name: "irq_disable"
+  type_id: 0x0e01e935
+  offset: 2112
+}
+member {
+  id: 0x07d808c2
+  name: "irq_disable"
+  type_id: 0x0e01e935
+  offset: 256
+}
+member {
+  id: 0x1b15be08
+  name: "irq_domain"
+  type_id: 0x18a2fb63
+  offset: 768
+}
+member {
+  id: 0x98b939b4
+  name: "irq_drv_data"
+  type_id: 0x18bd6530
+  offset: 1280
+}
+member {
+  id: 0xea49f6ac
+  name: "irq_enable"
+  type_id: 0x0e01e935
+  offset: 2048
+}
+member {
+  id: 0xea49f9e7
+  name: "irq_enable"
+  type_id: 0x0e01e935
+  offset: 192
+}
+member {
+  id: 0x2ffc0523
+  name: "irq_eoi"
+  type_id: 0x0e01e935
+  offset: 576
+}
+member {
+  id: 0x3ff2fd41
+  name: "irq_flags"
+  type_id: 0x33756485
+  offset: 12288
+}
+member {
+  id: 0x3ff2fee5
+  name: "irq_flags"
+  type_id: 0x33756485
+  offset: 4096
+}
+member {
+  id: 0xef8e9eec
+  name: "irq_flags_to_clear"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x747c2b35
+  name: "irq_flags_to_set"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0xc5acf896
+  name: "irq_freq"
+  type_id: 0x6720d32f
+  offset: 9408
+}
+member {
+  id: 0x7105db40
+  name: "irq_get"
+  type_id: 0x2e54c22d
+  offset: 1280
+}
+member {
+  id: 0x9a744d18
+  name: "irq_get_irqchip_state"
+  type_id: 0x2d2b45aa
+  offset: 1600
+}
+member {
+  id: 0x4efebe61
+  name: "irq_handler"
+  type_id: 0x2b3a7da8
+  offset: 7360
+}
+member {
+  id: 0xd133b0b1
+  name: "irq_level"
+  type_id: 0x6d7f5ff6
+  offset: 4456
+}
+member {
+  id: 0x8c92967c
+  name: "irq_lock"
+  type_id: 0xc8b17aa7
+}
+member {
+  id: 0x8ca9364f
+  name: "irq_lock"
+  type_id: 0xf313e71a
+  offset: 9088
+}
+member {
+  id: 0x8cfde860
+  name: "irq_lock"
+  type_id: 0xa7c362b0
+  offset: 24896
+}
+member {
+  id: 0xa09e6601
+  name: "irq_managed"
+  type_id: 0x4585663f
+  offset: 22119
+  bitsize: 1
+}
+member {
+  id: 0xc146156f
+  name: "irq_mask"
+  type_id: 0xd67c82d4
+  offset: 1056
+}
+member {
+  id: 0xc19e60b7
+  name: "irq_mask"
+  type_id: 0x0e01e935
+  offset: 384
+}
+member {
+  id: 0xc19e68d6
+  name: "irq_mask"
+  type_id: 0x0e01e935
+  offset: 2240
+}
+member {
+  id: 0x550b5ccf
+  name: "irq_mask_ack"
+  type_id: 0x0e01e935
+  offset: 448
+}
+member {
+  id: 0x1bfa39cd
+  name: "irq_nmi_setup"
+  type_id: 0x2d47c59a
+  offset: 1920
+}
+member {
+  id: 0x91ce8147
+  name: "irq_nmi_teardown"
+  type_id: 0x0e01e935
+  offset: 1984
+}
+member {
+  id: 0x94f98f17
+  name: "irq_num"
+  type_id: 0x6720d32f
+  offset: 4416
+}
+member {
+  id: 0x740ba1b4
+  name: "irq_pending"
+  type_id: 0x0baa70a7
+}
+member {
+  id: 0x74c90e0f
+  name: "irq_pending"
+  type_id: 0xc9082b19
+  offset: 160
+}
+member {
+  id: 0xf98b5c37
+  name: "irq_pm_shutdown"
+  type_id: 0x0e01e935
+  offset: 1152
+}
+member {
+  id: 0xf4789399
+  name: "irq_print_chip"
+  type_id: 0x0e078cd3
+  offset: 1280
+}
+member {
+  id: 0x2833a9d5
+  name: "irq_queue"
+  type_id: 0x03913382
+  offset: 9152
+}
+member {
+  id: 0x6c801fb5
+  name: "irq_reg_stride"
+  type_id: 0x4585663f
+  offset: 3520
+}
+member {
+  id: 0x6c801fcf
+  name: "irq_reg_stride"
+  type_id: 0x4585663f
+  offset: 576
+}
+member {
+  id: 0x999dfd41
+  name: "irq_release_resources"
+  type_id: 0x0e01e935
+  offset: 1408
+}
+member {
+  id: 0x05ae29fe
+  name: "irq_request_resources"
+  type_id: 0x2d47c59a
+  offset: 1344
+}
+member {
+  id: 0x314e3194
+  name: "irq_requested"
+  type_id: 0x6720d32f
+  offset: 3968
+}
+member {
+  id: 0x859848e8
+  name: "irq_reroute_variant"
+  type_id: 0x4585663f
+  offset: 22098
+  bitsize: 2
+}
+member {
+  id: 0x3f9a1390
+  name: "irq_rerun"
+  type_id: 0x4585663f
+  offset: 9265
+  bitsize: 1
+}
+member {
+  id: 0xdf027f69
+  name: "irq_resume"
+  type_id: 0x0e01e935
+  offset: 1088
+}
+member {
+  id: 0xc14ed3a7
+  name: "irq_retrigger"
+  type_id: 0x2d47c59a
+  offset: 704
+}
+member {
+  id: 0x71efddfa
+  name: "irq_routing"
+  type_id: 0x2145f7aa
+  offset: 25280
+}
+member {
+  id: 0x03f31823
+  name: "irq_safe"
+  type_id: 0x4585663f
+  offset: 1994
+  bitsize: 1
+}
+member {
+  id: 0xa48c1053
+  name: "irq_set_affinity"
+  type_id: 0x2d701caf
+  offset: 640
+}
+member {
+  id: 0xc577a772
+  name: "irq_set_irqchip_state"
+  type_id: 0x2d2c8ea1
+  offset: 1664
+}
+member {
+  id: 0x3e271c5a
+  name: "irq_set_type"
+  type_id: 0x2d0240fc
+  offset: 768
+}
+member {
+  id: 0x3e45b929
+  name: "irq_set_vcpu_affinity"
+  type_id: 0x2d5f78ff
+  offset: 1728
+}
+member {
+  id: 0xd6037600
+  name: "irq_set_wake"
+  type_id: 0x2d0240fc
+  offset: 832
+}
+member {
+  id: 0x0da6334f
+  name: "irq_shutdown"
+  type_id: 0x0e01e935
+  offset: 128
+}
+member {
+  id: 0xb5417608
+  name: "irq_srcu"
+  type_id: 0xa46efa19
+  offset: 30400
+}
+member {
+  id: 0xb989726e
+  name: "irq_start_time"
+  type_id: 0x92233392
+  offset: 128
+}
+member {
+  id: 0x85519df9
+  name: "irq_startup"
+  type_id: 0x399122ef
+  offset: 64
+}
+member {
+  id: 0xfed947c1
+  name: "irq_suspend"
+  type_id: 0x0e01e935
+  offset: 1024
+}
+member {
+  id: 0xf49ead5d
+  name: "irq_suspended"
+  type_id: 0x4585663f
+  offset: 9264
+  bitsize: 1
+}
+member {
+  id: 0x9b794184
+  name: "irq_unmask"
+  type_id: 0x0e01e935
+  offset: 2176
+}
+member {
+  id: 0x9b794f03
+  name: "irq_unmask"
+  type_id: 0x0e01e935
+  offset: 512
+}
+member {
+  id: 0x09f51326
+  name: "irq_wake_enabled"
+  type_id: 0x6d7f5ff6
+  offset: 6328
+}
+member {
+  id: 0xed01f566
+  name: "irq_work"
+  type_id: 0xb95bf932
+  offset: 640
+}
+member {
+  id: 0xedbbc0ae
+  name: "irq_work"
+  type_id: 0x0362ee21
+  offset: 896
+}
+member {
+  id: 0xedbbc538
+  name: "irq_work"
+  type_id: 0x0362ee21
+  offset: 3200
+}
+member {
+  id: 0xdfe72b60
+  name: "irq_write_msi_msg"
+  type_id: 0x0e2536c2
+  offset: 1536
+}
+member {
+  id: 0x9bdb7d24
+  name: "irqcontrol"
+  type_id: 0x2dff40fc
+  offset: 4480
+}
+member {
+  id: 0x450927c5
+  name: "irqfds"
+  type_id: 0x13064264
+  offset: 19584
+}
+member {
+  id: 0x53de8d1e
+  name: "irqflags"
+  type_id: 0x33756485
+  offset: 1344
+}
+member {
+  id: 0xbd68871b
+  name: "irqs"
+  type_id: 0x33fb2978
+  offset: 704
+}
+member {
+  id: 0x1b4538bc
+  name: "irqs_per_chip"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xbaeb367d
+  name: "irqs_sum"
+  type_id: 0x33756485
+}
+member {
+  id: 0x33bed567
+  name: "irqs_unhandled"
+  type_id: 0x4585663f
+  offset: 1280
+}
+member {
+  id: 0xd5f4b853
+  name: "irqwait"
+  type_id: 0xdba44af3
+  offset: 192
+}
+member {
+  id: 0x42b06a27
+  name: "irqwork"
+  type_id: 0x1f3c8679
+  offset: 11264
+}
+member {
+  id: 0x5ab15455
+  name: "is_64"
+  type_id: 0x295c7202
+  offset: 8
+  bitsize: 1
+}
+member {
+  id: 0x30d08fca
+  name: "is_a_peripheral"
+  type_id: 0x4585663f
+  offset: 8450
+  bitsize: 1
+}
+member {
+  id: 0x76a994d8
+  name: "is_ack_delayed"
+  type_id: 0x6d7f5ff6
+  offset: 528
+}
+member {
+  id: 0x6fc3ada5
+  name: "is_active"
+  type_id: 0x6720d32f
+  offset: 1376
+}
+member {
+  id: 0x0596a7a3
+  name: "is_added"
+  type_id: 0x4585663f
+  offset: 9984
+  bitsize: 1
+}
+member {
+  id: 0x1aca297a
+  name: "is_allowed"
+  type_id: 0x6d7f5ff6
+  offset: 1640
+}
+member {
+  id: 0x64560e03
+  name: "is_app_limited"
+  type_id: 0x6d7f5ff6
+  offset: 512
+}
+member {
+  id: 0x850a2902
+  name: "is_array"
+  type_id: 0x4585663f
+  offset: 424
+  bitsize: 1
+}
+member {
+  id: 0xe84e3420
+  name: "is_aspeed"
+  type_id: 0x4585663f
+  offset: 5616
+  bitsize: 1
+}
+member {
+  id: 0x4d3c5d63
+  name: "is_async_cb"
+  type_id: 0x6d7f5ff6
+  offset: 104
+}
+member {
+  id: 0xcea8232d
+  name: "is_attach_deferred"
+  type_id: 0x351ca0f0
+  offset: 512
+}
+member {
+  id: 0x9a46ac52
+  name: "is_auto"
+  type_id: 0x4585663f
+  offset: 420
+  bitsize: 1
+}
+member {
+  id: 0x5f9742c5
+  name: "is_b_host"
+  type_id: 0x4585663f
+  offset: 272
+  bitsize: 1
+}
+member {
+  id: 0x2c97ece5
+  name: "is_backlink"
+  type_id: 0x6d7f5ff6
+  offset: 640
+}
+member {
+  id: 0xf2f25eef
+  name: "is_bin_visible"
+  type_id: 0x20a576d4
+  offset: 128
+}
+member {
+  id: 0x8b933b4a
+  name: "is_bound"
+  type_id: 0x6d7f5ff6
+  offset: 2049
+  bitsize: 1
+}
+member {
+  id: 0x9c33918b
+  name: "is_busmaster"
+  type_id: 0x4585663f
+  offset: 22093
+  bitsize: 1
+}
+member {
+  id: 0xb768ef54
+  name: "is_busy_started"
+  type_id: 0x6d7f5ff6
+  offset: 1656
+}
+member {
+  id: 0x77e73c7c
+  name: "is_c45"
+  type_id: 0x4585663f
+  offset: 9248
+  bitsize: 1
+}
+member {
+  id: 0xcf3f1b2e
+  name: "is_child_subreaper"
+  type_id: 0x4585663f
+  offset: 1024
+  bitsize: 1
+}
+member {
+  id: 0xc07e2464
+  name: "is_color_indexed"
+  type_id: 0x6d7f5ff6
+  offset: 176
+}
+member {
+  id: 0xb46f92c4
+  name: "is_configured"
+  type_id: 0x6d7f5ff6
+  offset: 11424
+}
+member {
+  id: 0x6c8b318a
+  name: "is_configuring"
+  type_id: 0x6d7f5ff6
+  offset: 11408
+}
+member {
+  id: 0xa69ebb56
+  name: "is_cooling_device"
+  type_id: 0x6d7f5ff6
+  offset: 128
+}
+member {
+  id: 0x454d50bd
+  name: "is_dead"
+  type_id: 0x6d7f5ff6
+  offset: 3328
+}
+member {
+  id: 0x454d5d5b
+  name: "is_dead"
+  type_id: 0x6d7f5ff6
+  offset: 896
+}
+member {
+  id: 0xfe00b820
+  name: "is_dirty_writeback"
+  type_id: 0x0cb1f3d5
+  offset: 960
+}
+member {
+  id: 0x35d38cf1
+  name: "is_dma_mapped"
+  type_id: 0x4585663f
+  offset: 192
+  bitsize: 1
+}
+member {
+  id: 0x8d9c7f4e
+  name: "is_draining"
+  type_id: 0x6d7f5ff6
+  offset: 72
+}
+member {
+  id: 0x0847d479
+  name: "is_dyn_array"
+  type_id: 0x4585663f
+  offset: 425
+  bitsize: 1
+}
+member {
+  id: 0x77aa0fb2
+  name: "is_enabled"
+  type_id: 0x2d5e4b40
+  offset: 384
+}
+member {
+  id: 0x77aa50f1
+  name: "is_enabled"
+  type_id: 0x2d078518
+  offset: 1024
+}
+member {
+  id: 0x77ea2060
+  name: "is_enabled"
+  type_id: 0x6d7f5ff6
+  offset: 1632
+}
+member {
+  id: 0x77ea29b4
+  name: "is_enabled"
+  type_id: 0x6d7f5ff6
+  offset: 11400
+}
+member {
+  id: 0x77ea2aab
+  name: "is_enabled"
+  type_id: 0x6d7f5ff6
+  offset: 2176
+}
+member {
+  id: 0x7e25aaa2
+  name: "is_ep"
+  type_id: 0x5d8155a5
+  offset: 745
+  bitsize: 2
+}
+member {
+  id: 0x3952b157
+  name: "is_frozen"
+  type_id: 0x6d7f5ff6
+  offset: 904
+}
+member {
+  id: 0x46152dca
+  name: "is_func"
+  type_id: 0x914dbfdc
+  offset: 23
+  bitsize: 1
+}
+member {
+  id: 0x5c3bdf6f
+  name: "is_generic"
+  type_id: 0x6d7f5ff6
+}
+member {
+  id: 0x5cf7792d
+  name: "is_genpd"
+  type_id: 0x6d7f5ff6
+  offset: 3312
+}
+member {
+  id: 0x1a65f7f9
+  name: "is_gigabit_capable"
+  type_id: 0x4585663f
+  offset: 9251
+  bitsize: 1
+}
+member {
+  id: 0x222ef7a6
+  name: "is_group"
+  type_id: 0x6d7f5ff6
+  offset: 816
+}
+member {
+  id: 0x149367ac
+  name: "is_hard"
+  type_id: 0x295c7202
+  offset: 472
+}
+member {
+  id: 0x78860331
+  name: "is_hdmi"
+  type_id: 0x6d7f5ff6
+  offset: 360
+}
+member {
+  id: 0x651c3980
+  name: "is_held"
+  type_id: 0x6d7f5ff6
+  offset: 4352
+}
+member {
+  id: 0xc66fe3c7
+  name: "is_hotplug_bridge"
+  type_id: 0x4585663f
+  offset: 22112
+  bitsize: 1
+}
+member {
+  id: 0xb8fe46a0
+  name: "is_hw_wrapped"
+  type_id: 0x6d7f5ff6
+  offset: 64
+}
+member {
+  id: 0xbbefba04
+  name: "is_initialized"
+  type_id: 0x6d7f5ff6
+  offset: 1648
+}
+member {
+  id: 0xbbefbfa3
+  name: "is_initialized"
+  type_id: 0x6d7f5ff6
+  offset: 2184
+}
+member {
+  id: 0xc2e8d966
+  name: "is_inline"
+  type_id: 0x6d7f5ff6
+  offset: 128
+}
+member {
+  id: 0x7c55952c
+  name: "is_int"
+  type_id: 0x4585663f
+  offset: 421
+  bitsize: 1
+}
+member {
+  id: 0x46088d07
+  name: "is_inter"
+  type_id: 0xa0b4fda8
+  offset: 14184
+}
+member {
+  id: 0xeacce46e
+  name: "is_internal"
+  type_id: 0x4585663f
+  offset: 9249
+  bitsize: 1
+}
+member {
+  id: 0x25db6745
+  name: "is_iomem"
+  type_id: 0x6d7f5ff6
+  offset: 64
+}
+member {
+  id: 0x25db6a66
+  name: "is_iomem"
+  type_id: 0x6d7f5ff6
+  offset: 128
+}
+member {
+  id: 0xba09598f
+  name: "is_irq_enabled"
+  type_id: 0x6d7f5ff6
+  offset: 1568
+}
+member {
+  id: 0xbdc356d6
+  name: "is_iso15693"
+  type_id: 0x295c7202
+  offset: 520
+}
+member {
+  id: 0xebb4a9c8
+  name: "is_kernel"
+  type_id: 0x6d7f5ff6
+  offset: 64
+  bitsize: 1
+}
+member {
+  id: 0x7253e239
+  name: "is_kmalloc"
+  type_id: 0x6d7f5ff6
+}
+member {
+  id: 0xdad0932b
+  name: "is_last"
+  type_id: 0x4585663f
+  offset: 336
+  bitsize: 1
+}
+member {
+  id: 0xdbad0855
+  name: "is_late_suspended"
+  type_id: 0x6d7f5ff6
+  offset: 38
+  bitsize: 1
+}
+member {
+  id: 0xdfeafd0b
+  name: "is_le"
+  type_id: 0x6d7f5ff6
+  offset: 150784
+}
+member {
+  id: 0x3df7be1c
+  name: "is_lu_power_on_wp"
+  type_id: 0x6d7f5ff6
+  offset: 8
+}
+member {
+  id: 0x547b64ea
+  name: "is_managed"
+  type_id: 0x4585663f
+  offset: 64
+  bitsize: 1
+}
+member {
+  id: 0x547b670e
+  name: "is_managed"
+  type_id: 0x4585663f
+  offset: 22106
+  bitsize: 1
+}
+member {
+  id: 0x021fbd56
+  name: "is_master"
+  type_id: 0x6d7f5ff6
+  offset: 56
+}
+member {
+  id: 0xd1074880
+  name: "is_msi_managed"
+  type_id: 0x4585663f
+  offset: 22107
+  bitsize: 1
+}
+member {
+  id: 0xe37688c0
+  name: "is_msix"
+  type_id: 0x295c7202
+  bitsize: 1
+}
+member {
+  id: 0xccea3537
+  name: "is_multicast"
+  type_id: 0x2e61f032
+  offset: 512
+}
+member {
+  id: 0xffadbe86
+  name: "is_multipath"
+  type_id: 0x6d7f5ff6
+  offset: 80
+}
+member {
+  id: 0x294a7c18
+  name: "is_multiplanar"
+  type_id: 0x4585663f
+  offset: 6533
+  bitsize: 1
+}
+member {
+  id: 0x1f3c147c
+  name: "is_nested"
+  type_id: 0x6d7f5ff6
+  offset: 968
+}
+member {
+  id: 0xc8830be2
+  name: "is_new"
+  type_id: 0x4585663f
+  offset: 417
+  bitsize: 1
+}
+member {
+  id: 0x31e5c626
+  name: "is_noirq_suspended"
+  type_id: 0x6d7f5ff6
+  offset: 37
+  bitsize: 1
+}
+member {
+  id: 0xec034224
+  name: "is_on_sfp_module"
+  type_id: 0x4585663f
+  offset: 9258
+  bitsize: 1
+}
+member {
+  id: 0x1ad2b967
+  name: "is_otg"
+  type_id: 0x4585663f
+  offset: 8449
+  bitsize: 1
+}
+member {
+  id: 0xc5db038e
+  name: "is_out"
+  type_id: 0x4585663f
+  offset: 1088
+  bitsize: 1
+}
+member {
+  id: 0x66f841a5
+  name: "is_output"
+  type_id: 0x4585663f
+  offset: 6534
+  bitsize: 1
+}
+member {
+  id: 0x6fab5f12
+  name: "is_partially_uptodate"
+  type_id: 0x37d5545e
+  offset: 896
+}
+member {
+  id: 0x2a76f644
+  name: "is_pfns"
+  type_id: 0x6d7f5ff6
+  offset: 72
+}
+member {
+  id: 0x550bb72a
+  name: "is_physfn"
+  type_id: 0x4585663f
+  offset: 22110
+  bitsize: 1
+}
+member {
+  id: 0xa1d3d0ee
+  name: "is_powered"
+  type_id: 0x6d7f5ff6
+  offset: 4480
+}
+member {
+  id: 0xb1d2ccae
+  name: "is_prepared"
+  type_id: 0x2d5e4b40
+  offset: 128
+}
+member {
+  id: 0xeab2a8e8
+  name: "is_prepared"
+  type_id: 0x6d7f5ff6
+  offset: 35
+  bitsize: 1
+}
+member {
+  id: 0x2f797306
+  name: "is_private"
+  type_id: 0x4585663f
+  offset: 419
+  bitsize: 1
+}
+member {
+  id: 0x2f797cff
+  name: "is_private"
+  type_id: 0x4585663f
+  offset: 1024
+  bitsize: 1
+}
+member {
+  id: 0x203b77b5
+  name: "is_probed"
+  type_id: 0x4585663f
+  offset: 22121
+  bitsize: 1
+}
+member {
+  id: 0xb1a87d96
+  name: "is_pseudo_fixed_link"
+  type_id: 0x4585663f
+  offset: 9250
+  bitsize: 1
+}
+member {
+  id: 0x6f7f03f2
+  name: "is_ptr"
+  type_id: 0x4585663f
+  offset: 423
+  bitsize: 1
+}
+member {
+  id: 0x648f25ee
+  name: "is_rel"
+  type_id: 0x295c7202
+  offset: 456
+}
+member {
+  id: 0xd901b2d5
+  name: "is_restarted"
+  type_id: 0x6d7f5ff6
+  offset: 352
+}
+member {
+  id: 0x7e1055a6
+  name: "is_retrans"
+  type_id: 0x6d7f5ff6
+  offset: 520
+}
+member {
+  id: 0x02c5d0ed
+  name: "is_running"
+  type_id: 0x6d7f5ff6
+  offset: 968
+}
+member {
+  id: 0x7855a324
+  name: "is_second_field"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x319bb7e5
+  name: "is_seen"
+  type_id: 0x2cb5196e
+}
+member {
+  id: 0x7b7cfb93
+  name: "is_selfpowered"
+  type_id: 0x4585663f
+  offset: 8461
+  bitsize: 1
+}
+member {
+  id: 0x70e54a35
+  name: "is_shared"
+  type_id: 0x6d7f5ff6
+  offset: 1536
+}
+member {
+  id: 0xfd231946
+  name: "is_signed"
+  type_id: 0x6720d32f
+  offset: 352
+}
+member {
+  id: 0xfd81edd7
+  name: "is_signed"
+  type_id: 0xc5d9d969
+  offset: 128
+}
+member {
+  id: 0xa8546fab
+  name: "is_slave"
+  type_id: 0x6d7f5ff6
+  offset: 160
+}
+member {
+  id: 0x19add46f
+  name: "is_soft"
+  type_id: 0x295c7202
+  offset: 464
+}
+member {
+  id: 0x3fe7857f
+  name: "is_string"
+  type_id: 0x4585663f
+  offset: 422
+  bitsize: 1
+}
+member {
+  id: 0xd92434cf
+  name: "is_supply"
+  type_id: 0x5d8155a5
+  offset: 744
+  bitsize: 1
+}
+member {
+  id: 0x2061f6ba
+  name: "is_suspended"
+  type_id: 0x6d7f5ff6
+  offset: 1664
+}
+member {
+  id: 0x2061fc2e
+  name: "is_suspended"
+  type_id: 0x6d7f5ff6
+  offset: 1600
+}
+member {
+  id: 0x7f4b683f
+  name: "is_suspended"
+  type_id: 0x6d7f5ff6
+  offset: 36
+  bitsize: 1
+}
+member {
+  id: 0x029d1c03
+  name: "is_switch"
+  type_id: 0x4585663f
+  offset: 10689
+  bitsize: 1
+}
+member {
+  id: 0x16b72d77
+  name: "is_sys_suspended"
+  type_id: 0x6d7f5ff6
+  offset: 26376
+}
+member {
+  id: 0x83671a00
+  name: "is_thunderbolt"
+  type_id: 0x4585663f
+  offset: 22114
+  bitsize: 1
+}
+member {
+  id: 0xddfd3513
+  name: "is_transport_atomic"
+  type_id: 0x36773660
+  offset: 320
+}
+member {
+  id: 0x34734629
+  name: "is_traversed"
+  type_id: 0x295c7202
+  offset: 640
+  bitsize: 1
+}
+member {
+  id: 0x4e6ce9a6
+  name: "is_urgent_bkops_lvl_checked"
+  type_id: 0x6d7f5ff6
+  offset: 26432
+}
+member {
+  id: 0x567e927d
+  name: "is_useropt"
+  type_id: 0x2f65c64c
+}
+member {
+  id: 0x36845176
+  name: "is_valid"
+  type_id: 0x6d7f5ff6
+  offset: 224
+}
+member {
+  id: 0x36845252
+  name: "is_valid"
+  type_id: 0x6d7f5ff6
+}
+member {
+  id: 0x4a0775e9
+  name: "is_valid_access"
+  type_id: 0x332d413e
+  offset: 64
+}
+member {
+  id: 0xedef04ab
+  name: "is_vbus_vsafe0v"
+  type_id: 0x36afd129
+  offset: 1344
+}
+member {
+  id: 0x8572de7d
+  name: "is_virtfn"
+  type_id: 0x4585663f
+  offset: 22111
+  bitsize: 1
+}
+member {
+  id: 0x79067da4
+  name: "is_virtual"
+  type_id: 0x295c7202
+  offset: 9
+  bitsize: 1
+}
+member {
+  id: 0x70e7a631
+  name: "is_virtual_clock"
+  type_id: 0x6d7f5ff6
+  offset: 45760
+}
+member {
+  id: 0x7fde2439
+  name: "is_visible"
+  type_id: 0x4585663f
+  offset: 2824
+  bitsize: 1
+}
+member {
+  id: 0xc67eecc5
+  name: "is_visible"
+  type_id: 0x20b9211e
+  offset: 64
+}
+member {
+  id: 0x60457d63
+  name: "is_wait_die"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0x60c9ca1a
+  name: "is_wait_die"
+  type_id: 0xc93e017b
+  offset: 176
+}
+member {
+  id: 0x1a818083
+  name: "is_write"
+  type_id: 0xb3e7bac9
+  offset: 160
+}
+member {
+  id: 0x1a818982
+  name: "is_write"
+  type_id: 0xb3e7bac9
+  offset: 64
+}
+member {
+  id: 0x1ad44087
+  name: "is_write"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x5f2e888d
+  name: "is_yuv"
+  type_id: 0x6d7f5ff6
+  offset: 168
+}
+member {
+  id: 0xfa661c0d
+  name: "isids"
+  type_id: 0x2f6759fd
+  offset: 704
+}
+member {
+  id: 0x8238342c
+  name: "iso15693_dsfid"
+  type_id: 0x295c7202
+  offset: 528
+}
+member {
+  id: 0xa61583da
+  name: "iso15693_uid"
+  type_id: 0xee699492
+  offset: 536
+}
+member {
+  id: 0x2bac62ea
+  name: "iso7816"
+  type_id: 0xcc9e8a5e
+  offset: 3712
+}
+member {
+  id: 0x1869ca89
+  name: "iso7816_config"
+  type_id: 0x2dc2cfb0
+  offset: 1216
+}
+member {
+  id: 0x4f6ccbdc
+  name: "iso_cnt"
+  type_id: 0x4585663f
+  offset: 13120
+}
+member {
+  id: 0xc1208b52
+  name: "iso_data"
+  type_id: 0x18bd6530
+  offset: 16512
+}
+member {
+  id: 0x6b683df2
+  name: "iso_frame_desc"
+  type_id: 0xf8b57ade
+  offset: 1728
+}
+member {
+  id: 0xcd76b47e
+  name: "iso_mtu"
+  type_id: 0x4585663f
+  offset: 13248
+}
+member {
+  id: 0x15e5eeb5
+  name: "iso_num"
+  type_id: 0x4585663f
+  offset: 224
+}
+member {
+  id: 0xc165230a
+  name: "iso_pkts"
+  type_id: 0x4585663f
+  offset: 13376
+}
+member {
+  id: 0x39eaab32
+  name: "iso_qos"
+  type_id: 0x6c3e513c
+  offset: 3328
+}
+member {
+  id: 0xd16ba98b
+  name: "isoc_bei_interval"
+  type_id: 0xc9082b19
+  offset: 736
+}
+member {
+  id: 0x21714820
+  name: "isoc_count"
+  type_id: 0x4585663f
+  offset: 3296
+}
+member {
+  id: 0x18de1567
+  name: "isoc_threshold"
+  type_id: 0x295c7202
+  offset: 696
+}
+member {
+  id: 0x2f497469
+  name: "isoch_delay"
+  type_id: 0x4585663f
+  offset: 8256
+}
+member {
+  id: 0xa0ea2f4a
+  name: "isolate_page"
+  type_id: 0x35af180e
+}
+member {
+  id: 0xf353faca
+  name: "isolated_pages"
+  type_id: 0x33756485
+}
+member {
+  id: 0x502343e7
+  name: "ispeed"
+  type_id: 0xac0d3a85
+  offset: 640
+}
+member {
+  id: 0x3c46e3dc
+  name: "issue"
+  type_id: 0x0f79fcf8
+  offset: 192
+}
+member {
+  id: 0xd3c7df98
+  name: "issue_time_stamp"
+  type_id: 0x11c404ba
+  offset: 704
+}
+member {
+  id: 0xee1047fd
+  name: "issue_time_stamp_local_clock"
+  type_id: 0x92233392
+  offset: 768
+}
+member {
+  id: 0xd015d2ba
+  name: "it"
+  type_id: 0x41ffca26
+  offset: 1856
+}
+member {
+  id: 0xe29ffb31
+  name: "it_real_incr"
+  type_id: 0x11c404ba
+  offset: 1792
+}
+member {
+  id: 0x18f796ee
+  name: "itc"
+  type_id: 0x6d7f5ff6
+  offset: 224
+}
+member {
+  id: 0xd9fc27f9
+  name: "itd"
+  type_id: 0x3948db4a
+}
+member {
+  id: 0x587a6f24
+  name: "itd_dma"
+  type_id: 0xe02e14d6
+  offset: 768
+}
+member {
+  id: 0xe6a0407a
+  name: "itd_list"
+  type_id: 0xd3c80119
+  offset: 1024
+}
+member {
+  id: 0x4ac4bfb7
+  name: "itd_next"
+  type_id: 0x2b015d45
+  offset: 832
+}
+member {
+  id: 0x774d71cb
+  name: "itd_pool"
+  type_id: 0x2d66740a
+  offset: 5248
+}
+member {
+  id: 0x83ba7b80
+  name: "item"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x83c07c3a
+  name: "item"
+  type_id: 0x3f8fe745
+}
+member {
+  id: 0xa70d7362
+  name: "item_ptr"
+  type_id: 0x1bf16028
+}
+member {
+  id: 0xb7500dd7
+  name: "items"
+  type_id: 0xd9c2196b
+  offset: 128
+}
+member {
+  id: 0xb75a0aec
+  name: "items"
+  type_id: 0xd3c80119
+  offset: 64
+}
+member {
+  id: 0xb7cc436a
+  name: "items"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xb7cc478b
+  name: "items"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xb7d199ad
+  name: "items"
+  type_id: 0x585b40a5
+  offset: 64
+}
+member {
+  id: 0x2b5908df
+  name: "iter"
+  type_id: 0x3bc62241
+  offset: 1344
+}
+member {
+  id: 0x2b68f74f
+  name: "iter"
+  type_id: 0x0a33316a
+}
+member {
+  id: 0x2ba084ff
+  name: "iter"
+  type_id: 0xc24d58cd
+  offset: 18176
+}
+member {
+  id: 0x07a7ec69
+  name: "iter_create"
+  type_id: 0x04d2ff93
+}
+member {
+  id: 0x6e0282b9
+  name: "iter_flags"
+  type_id: 0x33756485
+  offset: 768
+}
+member {
+  id: 0x137a2b1b
+  name: "iter_info"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x7a840a9d
+  name: "iter_info_len"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x00b2a40c
+  name: "iter_response_init"
+  type_id: 0x1ce0cd04
+  offset: 64
+}
+member {
+  id: 0x224ce677
+  name: "iter_response_run"
+  type_id: 0x2c7bd73f
+  offset: 128
+}
+member {
+  id: 0xc48f9407
+  name: "iter_seq_info"
+  type_id: 0x324e6996
+  offset: 2560
+}
+member {
+  id: 0x4681264b
+  name: "iter_type"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x252248a4
+  name: "iterate"
+  type_id: 0x2c4043e6
+  offset: 448
+}
+member {
+  id: 0x7b221f4e
+  name: "iterate_shared"
+  type_id: 0x2c4043e6
+  offset: 512
+}
+member {
+  id: 0x1080dfb6
+  name: "iterations"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0xec45951e
+  name: "iterator"
+  type_id: 0x18bd6530
+  offset: 320
+}
+member {
+  id: 0xa331f04a
+  name: "itree"
+  type_id: 0xd0f3b5bf
+  offset: 256
+}
+member {
+  id: 0x1caf0749
+  name: "its"
+  type_id: 0x3c6958c4
+}
+member {
+  id: 0x857bfedc
+  name: "its_lock"
+  type_id: 0xa7c362b0
+  offset: 1216
+}
+member {
+  id: 0x8e370213
+  name: "its_read"
+  type_id: 0x05a52bb0
+}
+member {
+  id: 0xa70b7acb
+  name: "its_vm"
+  type_id: 0x04fb8f54
+  offset: 64
+}
+member {
+  id: 0xa736298d
+  name: "its_vm"
+  type_id: 0x39aedbce
+  offset: 1408
+}
+member {
+  id: 0xa9a971b2
+  name: "its_vpe"
+  type_id: 0x19bba071
+  offset: 1408
+}
+member {
+  id: 0x8844b6fd
+  name: "its_write"
+  type_id: 0x0de80fb7
+}
+member {
+  id: 0x7dc35cdf
+  name: "itty"
+  type_id: 0x2efe8065
+  offset: 1408
+}
+member {
+  id: 0x56d4cc43
+  name: "iv"
+  type_id: 0x00c72527
+  offset: 448
+}
+member {
+  id: 0x56d4cfd5
+  name: "iv"
+  type_id: 0x00c72527
+  offset: 64
+}
+member {
+  id: 0x8302bb48
+  name: "ivsize"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0x832017a6
+  name: "ivsize"
+  type_id: 0x4585663f
+  offset: 384
+}
+member {
+  id: 0xe0ad31b5
+  name: "ixol"
+  type_id: 0x861a0f9a
+}
+member {
+  id: 0x2d19b169
+  name: "j"
+  type_id: 0x295c7202
+  offset: 48
+}
+member {
+  id: 0x161680e4
+  name: "jabbers"
+  type_id: 0x92233392
+  offset: 192
+}
+member {
+  id: 0x8f2980d7
+  name: "jack"
+  type_id: 0x0b2665f4
+  offset: 384
+}
+member {
+  id: 0x8f2b4699
+  name: "jack"
+  type_id: 0x09e67e75
+  offset: 320
+}
+member {
+  id: 0x87ae8577
+  name: "jack_bits"
+  type_id: 0xb914bfab
+  offset: 1536
+}
+member {
+  id: 0x3948ab48
+  name: "jack_propval"
+  type_id: 0xb4693ee8
+  offset: 1280
+}
+member {
+  id: 0xc33f915e
+  name: "jack_status_check"
+  type_id: 0x2c7bd73f
+  offset: 1792
+}
+member {
+  id: 0x5d9c18bc
+  name: "jack_zones"
+  type_id: 0xd3c80119
+  offset: 1280
+}
+member {
+  id: 0xf599ee88
+  name: "jf"
+  type_id: 0xb3e7bac9
+  offset: 24
+}
+member {
+  id: 0xa9c091b7
+  name: "jiffies_at_alloc"
+  type_id: 0x33756485
+  offset: 1472
+}
+member {
+  id: 0x3c052c89
+  name: "jiffies_init"
+  type_id: 0x33756485
+}
+member {
+  id: 0x5b068ff9
+  name: "jit_data"
+  type_id: 0x18bd6530
+  offset: 1472
+}
+member {
+  id: 0x7a623699
+  name: "jit_keyring"
+  type_id: 0x5d8155a5
+  offset: 640
+}
+member {
+  id: 0xd5b6a94c
+  name: "jit_requested"
+  type_id: 0x914dbfdc
+  offset: 17
+  bitsize: 1
+}
+member {
+  id: 0x18c09ee6
+  name: "jitcnt"
+  type_id: 0x39470e64
+  offset: 1024
+}
+member {
+  id: 0x4ded59bf
+  name: "jited"
+  type_id: 0x6d7f5ff6
+  offset: 64
+}
+member {
+  id: 0x5f38f99a
+  name: "jited"
+  type_id: 0x914dbfdc
+  offset: 16
+  bitsize: 1
+}
+member {
+  id: 0x29c07a08
+  name: "jited_image"
+  type_id: 0x18bd6530
+  offset: 448
+}
+member {
+  id: 0x2dc2b0b2
+  name: "jited_len"
+  type_id: 0xc9082b19
+  offset: 512
+}
+member {
+  id: 0x2dc2b268
+  name: "jited_len"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0x5023af1d
+  name: "jited_linfo"
+  type_id: 0x0cbf60eb
+  offset: 8064
+}
+member {
+  id: 0x78ce8c19
+  name: "jitter"
+  type_id: 0x39470e64
+  offset: 832
+}
+member {
+  id: 0x3f6f6ee7
+  name: "jmp_history"
+  type_id: 0x23384fd2
+  offset: 832
+}
+member {
+  id: 0x5416b892
+  name: "jmp_history_cnt"
+  type_id: 0xc9082b19
+  offset: 896
+}
+member {
+  id: 0x30bc0525
+  name: "jmps_processed"
+  type_id: 0xc9082b19
+  offset: 76000
+}
+member {
+  id: 0xca07ed31
+  name: "job_abort"
+  type_id: 0x0f3dfb90
+  offset: 128
+}
+member {
+  id: 0xc927b25c
+  name: "job_flags"
+  type_id: 0x33756485
+  offset: 14784
+}
+member {
+  id: 0x83d1e0f4
+  name: "job_lock"
+  type_id: 0xf313e71a
+  offset: 16448
+}
+member {
+  id: 0xbd72f435
+  name: "job_queue"
+  type_id: 0xd3c80119
+  offset: 16512
+}
+member {
+  id: 0xbd72f615
+  name: "job_queue"
+  type_id: 0xd3c80119
+  offset: 4160
+}
+member {
+  id: 0x1457cbeb
+  name: "job_queue_flags"
+  type_id: 0x33756485
+  offset: 4736
+}
+member {
+  id: 0xbb61bdb7
+  name: "job_ready"
+  type_id: 0x2c7bd73f
+  offset: 64
+}
+member {
+  id: 0xcf18f557
+  name: "job_spinlock"
+  type_id: 0xf313e71a
+  offset: 4288
+}
+member {
+  id: 0xca2b6d9f
+  name: "job_work"
+  type_id: 0x1f3c8679
+  offset: 4352
+}
+member {
+  id: 0x85efc360
+  name: "jobctl"
+  type_id: 0x33756485
+  offset: 11968
+}
+member {
+  id: 0x452661f9
+  name: "joint"
+  type_id: 0x3e3c1b86
+}
+member {
+  id: 0xb0dd3064
+  name: "journal_info"
+  type_id: 0x18bd6530
+  offset: 19136
+}
+member {
+  id: 0xebc086eb
+  name: "jpeg_markers"
+  type_id: 0xe62ebf07
+  offset: 1088
+}
+member {
+  id: 0x68e4869b
+  name: "jt"
+  type_id: 0xb3e7bac9
+  offset: 16
+}
+member {
+  id: 0x8b1918c5
+  name: "jump_entries"
+  type_id: 0x30303d50
+  offset: 6848
+}
+member {
+  id: 0x690ee6ac
+  name: "k"
+  type_id: 0x295c7202
+  offset: 40
+}
+member {
+  id: 0x69c19b08
+  name: "k"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x400135b0
+  name: "k_d"
+  type_id: 0xd41e888f
+  offset: 448
+}
+member {
+  id: 0x0242c2ee
+  name: "k_i"
+  type_id: 0xd41e888f
+  offset: 416
+}
+member {
+  id: 0x9fcf4af2
+  name: "k_list"
+  type_id: 0xd3c80119
+  offset: 64
+}
+member {
+  id: 0x873cedd8
+  name: "k_lock"
+  type_id: 0xf313e71a
+}
+member {
+  id: 0x6d89b284
+  name: "k_po"
+  type_id: 0xd41e888f
+  offset: 352
+}
+member {
+  id: 0xc4c7dc55
+  name: "k_pu"
+  type_id: 0xd41e888f
+  offset: 384
+}
+member {
+  id: 0x97ea6ec7
+  name: "kallsyms"
+  type_id: 0x37fdbcb1
+  offset: 5632
+}
+member {
+  id: 0xabd5a6b3
+  name: "kasan_info"
+  type_id: 0x3e77001f
+  offset: 1856
+}
+member {
+  id: 0x5638ee2c
+  name: "kb"
+  type_id: 0xb3e7bac9
+  offset: 56
+}
+member {
+  id: 0x9b6fbbd1
+  name: "kbuf"
+  type_id: 0x314893e5
+  offset: 32
+}
+member {
+  id: 0x9b799345
+  name: "kbuf"
+  type_id: 0x276d3cfb
+}
+member {
+  id: 0x4d9c8a0c
+  name: "kcompactd"
+  type_id: 0x1d19a9d5
+  offset: 55360
+}
+member {
+  id: 0x44835e36
+  name: "kcompactd_highest_zoneidx"
+  type_id: 0x0b0164a7
+  offset: 55136
+}
+member {
+  id: 0xc6101310
+  name: "kcompactd_max_order"
+  type_id: 0x6720d32f
+  offset: 55104
+}
+member {
+  id: 0xda079936
+  name: "kcompactd_wait"
+  type_id: 0x03913382
+  offset: 55168
+}
+member {
+  id: 0xdbfaccd7
+  name: "kcontrol"
+  type_id: 0x2b8f13b3
+}
+member {
+  id: 0x4f868a0d
+  name: "kcontrol_news"
+  type_id: 0x3806a5e7
+  offset: 1088
+}
+member {
+  id: 0xf36e20fb
+  name: "kcontrol_type"
+  type_id: 0x1bf16028
+}
+member {
+  id: 0xc96bafdd
+  name: "kcontrols"
+  type_id: 0x0073fd4b
+  offset: 1152
+}
+member {
+  id: 0xe79c9d40
+  name: "kcov_handle"
+  type_id: 0x92233392
+  offset: 1536
+}
+member {
+  id: 0xfc4536a4
+  name: "kctl"
+  type_id: 0x2b8f13b3
+  offset: 128
+}
+member {
+  id: 0xc5eae45f
+  name: "kctl_list"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0xc1884587
+  name: "kdev"
+  type_id: 0x0258f96e
+  offset: 64
+}
+member {
+  id: 0xdd0487c4
+  name: "keep_addr_on_down"
+  type_id: 0x0faae5b1
+  offset: 1632
+}
+member {
+  id: 0xa389e866
+  name: "keep_dst"
+  type_id: 0x6d7f5ff6
+  offset: 1536
+}
+member {
+  id: 0x4422b026
+  name: "keepalive"
+  type_id: 0x0f054e36
+  offset: 704
+}
+member {
+  id: 0x3f65622e
+  name: "keepout"
+  type_id: 0x340dea21
+  offset: 384
+}
+member {
+  id: 0x3f6569d5
+  name: "keepout"
+  type_id: 0x340dea21
+  offset: 8384
+}
+member {
+  id: 0x3afd0925
+  name: "kern_hyp_va"
+  type_id: 0x05cc5cbb
+  offset: 1984
+}
+member {
+  id: 0xc43b0497
+  name: "kern_version"
+  type_id: 0xe62ebf07
+  offset: 320
+}
+member {
+  id: 0x1842006e
+  name: "kernel"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0xfbf92f1f
+  name: "kernel_btf"
+  type_id: 0x6d7f5ff6
+  offset: 1600
+}
+member {
+  id: 0x5d71dc53
+  name: "kernel_fb_list"
+  type_id: 0xd3c80119
+  offset: 2944
+}
+member {
+  id: 0xb96eb3c9
+  name: "kernfs_rwsem"
+  type_id: 0x28b9ec9a
+  offset: 768
+}
+member {
+  id: 0x7de43299
+  name: "kevent"
+  type_id: 0x1f3c8679
+  offset: 4864
+}
+member {
+  id: 0x20068778
+  name: "key"
+  type_id: 0x50893793
+  offset: 64
+}
+member {
+  id: 0x20108798
+  name: "key"
+  type_id: 0x468d36dd
+}
+member {
+  id: 0x2011e070
+  name: "key"
+  type_id: 0x47ed198f
+  offset: 320
+}
+member {
+  id: 0x20138e78
+  name: "key"
+  type_id: 0x4585663f
+  offset: 480
+}
+member {
+  id: 0x201b5dee
+  name: "key"
+  type_id: 0x4d57407e
+}
+member {
+  id: 0x201e2b22
+  name: "key"
+  type_id: 0x48218c07
+}
+member {
+  id: 0x20238e49
+  name: "key"
+  type_id: 0x7584e7da
+}
+member {
+  id: 0x2029145f
+  name: "key"
+  type_id: 0x7f1ef170
+}
+member {
+  id: 0x2037343a
+  name: "key"
+  type_id: 0x61375610
+  offset: 128
+}
+member {
+  id: 0x2042539a
+  name: "key"
+  type_id: 0x145934af
+}
+member {
+  id: 0x204725ae
+  name: "key"
+  type_id: 0x112f0014
+}
+member {
+  id: 0x204eb7cb
+  name: "key"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0x204ebe09
+  name: "key"
+  type_id: 0x18bd6530
+  offset: 128
+}
+member {
+  id: 0x204ed47c
+  name: "key"
+  type_id: 0x18ded2d3
+}
+member {
+  id: 0x205045b4
+  name: "key"
+  type_id: 0x06440279
+  offset: 512
+}
+member {
+  id: 0x20528948
+  name: "key"
+  type_id: 0x0483e6f8
+}
+member {
+  id: 0x2057a8c7
+  name: "key"
+  type_id: 0x01a688ae
+  offset: 64
+}
+member {
+  id: 0x2057ac26
+  name: "key"
+  type_id: 0x01a688ae
+}
+member {
+  id: 0x20657608
+  name: "key"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x20681a1b
+  name: "key"
+  type_id: 0x3e10b518
+}
+member {
+  id: 0x206de985
+  name: "key"
+  type_id: 0x3be4ec15
+  offset: 320
+}
+member {
+  id: 0x206f115a
+  name: "key"
+  type_id: 0x391f15ea
+  offset: 64
+}
+member {
+  id: 0x2072b8ea
+  name: "key"
+  type_id: 0x24b9a24a
+  offset: 8
+}
+member {
+  id: 0x20799984
+  name: "key"
+  type_id: 0x2f932a1e
+}
+member {
+  id: 0x209f059a
+  name: "key"
+  type_id: 0xc9082b19
+  offset: 1024
+}
+member {
+  id: 0x209f0664
+  name: "key"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x20a07181
+  name: "key"
+  type_id: 0xf67b8436
+  offset: 256
+}
+member {
+  id: 0x20aa0052
+  name: "key"
+  type_id: 0xfc0e1dbd
+  offset: 64
+}
+member {
+  id: 0x20b02411
+  name: "key"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x20bbfc38
+  name: "key"
+  type_id: 0xedf277ba
+  offset: 64
+}
+member {
+  id: 0x20bce5a7
+  name: "key"
+  type_id: 0xeaef09c4
+}
+member {
+  id: 0x20bebc44
+  name: "key"
+  type_id: 0xe8b6eac7
+}
+member {
+  id: 0x20c42fe4
+  name: "key"
+  type_id: 0x92233392
+  offset: 640
+}
+member {
+  id: 0x20c661f5
+  name: "key"
+  type_id: 0x906b5bab
+}
+member {
+  id: 0x20c66514
+  name: "key"
+  type_id: 0x906b5bab
+  offset: 64
+}
+member {
+  id: 0x20d6cc0c
+  name: "key"
+  type_id: 0x80c9c878
+  offset: 2816
+}
+member {
+  id: 0x20e6c0a2
+  name: "key"
+  type_id: 0xb0c00a27
+  offset: 1568
+}
+member {
+  id: 0x203b913e
+  name: "key_change_cfm"
+  type_id: 0x0cb52986
+  offset: 384
+}
+member {
+  id: 0xbf1d4e31
+  name: "key_dec"
+  type_id: 0x4fc3f305
+  offset: 1920
+}
+member {
+  id: 0x146c2431
+  name: "key_domain"
+  type_id: 0x22bb3fbf
+  offset: 576
+}
+member {
+  id: 0xa4dac0f5
+  name: "key_enc"
+  type_id: 0x4fc3f305
+}
+member {
+  id: 0x5fb64933
+  name: "key_eq"
+  type_id: 0x36dc9e6f
+  offset: 192
+}
+member {
+  id: 0x8a02aad2
+  name: "key_hashtable"
+  type_id: 0x394dcf37
+  offset: 64
+}
+member {
+  id: 0x3a668586
+  name: "key_ht"
+  type_id: 0x674028f7
+  offset: 832
+}
+member {
+  id: 0x8ec1ce72
+  name: "key_id"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0x8ee72011
+  name: "key_id_mode"
+  type_id: 0x295c7202
+  offset: 3
+  bitsize: 2
+}
+member {
+  id: 0x16578008
+  name: "key_is_private"
+  type_id: 0x6d7f5ff6
+  offset: 224
+}
+member {
+  id: 0x043870df
+  name: "key_len"
+  type_id: 0x914dbfdc
+  offset: 192
+}
+member {
+  id: 0x043876a8
+  name: "key_len"
+  type_id: 0x914dbfdc
+  offset: 16
+}
+member {
+  id: 0x04ecb42e
+  name: "key_len"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x87a7947b
+  name: "key_length"
+  type_id: 0xc9082b19
+  offset: 3840
+}
+member {
+  id: 0xe91897f5
+  name: "key_offset"
+  type_id: 0x914dbfdc
+  offset: 32
+}
+member {
+  id: 0xec1b817e
+  name: "key_prefix"
+  type_id: 0x3e10b518
+  offset: 64
+}
+member {
+  id: 0x7d107eef
+  name: "key_size"
+  type_id: 0x295c7202
+  offset: 16
+}
+member {
+  id: 0x7ddf0fa7
+  name: "key_size"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x7df016c3
+  name: "key_size"
+  type_id: 0xc93e017b
+  offset: 64
+}
+member {
+  id: 0x7df0272c
+  name: "key_size"
+  type_id: 0xc9082b19
+  offset: 224
+}
+member {
+  id: 0xee9406d6
+  name: "key_type"
+  type_id: 0xf91e7e64
+  offset: 96
+}
+member {
+  id: 0xeedef856
+  name: "key_type"
+  type_id: 0xb3e7bac9
+  offset: 736
+}
+member {
+  id: 0x754fc7f8
+  name: "key_types_supported"
+  type_id: 0x4585663f
+  offset: 224
+}
+member {
+  id: 0xfcaed2e1
+  name: "keybit"
+  type_id: 0x9cbf428e
+  offset: 192
+}
+member {
+  id: 0xfcb2ad30
+  name: "keybit"
+  type_id: 0x80c9c878
+  offset: 384
+}
+member {
+  id: 0xcb594713
+  name: "keycode"
+  type_id: 0x18bd6530
+  offset: 1792
+}
+member {
+  id: 0xcb88f0cf
+  name: "keycode"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0xcba7df81
+  name: "keycode"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xead6e095
+  name: "keycodemax"
+  type_id: 0x4585663f
+  offset: 1696
+}
+member {
+  id: 0x64c72300
+  name: "keycodesize"
+  type_id: 0x4585663f
+  offset: 1728
+}
+member {
+  id: 0x153981eb
+  name: "keylen"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x67a32b63
+  name: "keylock"
+  type_id: 0xf313e71a
+  offset: 9472
+}
+member {
+  id: 0xebd2bfd1
+  name: "keymap_list"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0x4549f3c5
+  name: "keypressed"
+  type_id: 0x6d7f5ff6
+  offset: 9504
+}
+member {
+  id: 0x65d65e9f
+  name: "keyring_name_list"
+  type_id: 0xd3c80119
+  offset: 2240
+}
+member {
+  id: 0x79fd896f
+  name: "keyring_sem"
+  type_id: 0x28b9ec9a
+  offset: 2432
+}
+member {
+  id: 0x562ce86b
+  name: "keys"
+  type_id: 0xedf277ba
+  offset: 128
+}
+member {
+  id: 0x566e6aad
+  name: "keys"
+  type_id: 0xaf70b18b
+  offset: 128
+}
+member {
+  id: 0x228cbc29
+  name: "keys_kernel"
+  type_id: 0xc380e7d1
+  offset: 8576
+}
+member {
+  id: 0x1841c89e
+  name: "keys_user"
+  type_id: 0xf0e5387c
+  offset: 7936
+}
+member {
+  id: 0x7f4e96a5
+  name: "keysize"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x4949b8ed
+  name: "keyslot_evict"
+  type_id: 0x2d46eb69
+  offset: 64
+}
+member {
+  id: 0x2b7beb62
+  name: "keyslot_program"
+  type_id: 0x2d46eb69
+}
+member {
+  id: 0x3f485f71
+  name: "keytype"
+  type_id: 0x16861be6
+  offset: 128
+}
+member {
+  id: 0xf67243e5
+  name: "keyup_jiffies"
+  type_id: 0x33756485
+  offset: 9536
+}
+member {
+  id: 0x515e1a2c
+  name: "kf_ops"
+  type_id: 0x34192ccc
+  offset: 896
+}
+member {
+  id: 0x9b6253c2
+  name: "kf_root"
+  type_id: 0x0d679fed
+}
+member {
+  id: 0xd1574725
+  name: "kfifo"
+  type_id: 0xf742a5e3
+}
+member {
+  id: 0xd1b69eca
+  name: "kfifo"
+  type_id: 0x16938363
+  offset: 192
+}
+member {
+  id: 0x5421482f
+  name: "kfunc_btf_id"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x10ae117c
+  name: "kfunc_btf_tab"
+  type_id: 0x21c08bd1
+  offset: 1664
+}
+member {
+  id: 0xc7c124b9
+  name: "kfunc_set_tab"
+  type_id: 0x33cb83c2
+  offset: 896
+}
+member {
+  id: 0x1a72c5ff
+  name: "kfunc_tab"
+  type_id: 0x37c1fe6c
+  offset: 1600
+}
+member {
+  id: 0x1f771786
+  name: "ki"
+  type_id: 0xbe482fa0
+}
+member {
+  id: 0xc77bcbbf
+  name: "ki_complete"
+  type_id: 0x0ec1f4e9
+  offset: 128
+}
+member {
+  id: 0xab087d35
+  name: "ki_filp"
+  type_id: 0x18ea6ae3
+}
+member {
+  id: 0xb81d5e7e
+  name: "ki_flags"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0x54e9b90d
+  name: "ki_ioprio"
+  type_id: 0x914dbfdc
+  offset: 288
+}
+member {
+  id: 0x4785f578
+  name: "ki_pos"
+  type_id: 0x27a7c613
+  offset: 64
+}
+member {
+  id: 0x3689fed1
+  name: "ki_waitq"
+  type_id: 0x2b91dce8
+  offset: 320
+}
+member {
+  id: 0x1b4576bf
+  name: "kick"
+  type_id: 0x0c4d6d1b
+  offset: 384
+}
+member {
+  id: 0x1b51da8c
+  name: "kick"
+  type_id: 0x18ea6ae3
+  offset: 896
+}
+member {
+  id: 0x6e77f1a5
+  name: "kill_sb"
+  type_id: 0x0cd8cb41
+  offset: 320
+}
+member {
+  id: 0xbb31f65a
+  name: "killed_trees"
+  type_id: 0xd3c80119
+  offset: 6784
+}
+member {
+  id: 0xd7351556
+  name: "kind"
+  type_id: 0x3e10b518
+  offset: 128
+}
+member {
+  id: 0xd74925fe
+  name: "kind"
+  type_id: 0x42201dce
+  offset: 128
+}
+member {
+  id: 0xd7f60431
+  name: "kind"
+  type_id: 0xfd01d20e
+  offset: 128
+}
+member {
+  id: 0x1862ef71
+  name: "klist_children"
+  type_id: 0x95f8b1fc
+}
+member {
+  id: 0x96ee9142
+  name: "klist_devices"
+  type_id: 0x95f8b1fc
+  offset: 768
+}
+member {
+  id: 0x96ee9832
+  name: "klist_devices"
+  type_id: 0x95f8b1fc
+  offset: 1920
+}
+member {
+  id: 0x62cbccd9
+  name: "klist_drivers"
+  type_id: 0x95f8b1fc
+  offset: 2240
+}
+member {
+  id: 0x1877b647
+  name: "km"
+  type_id: 0xbc1c435b
+  offset: 1472
+}
+member {
+  id: 0x8c886273
+  name: "kmap_ctrl"
+  type_id: 0x470694ff
+  offset: 23360
+}
+member {
+  id: 0x7fa3827e
+  name: "kmem"
+  type_id: 0xd079ba20
+  offset: 5120
+}
+member {
+  id: 0x85e4ba6c
+  name: "kmem_cache"
+  type_id: 0x2efd5036
+  offset: 128
+}
+member {
+  id: 0x5fc74326
+  name: "kmem_cachep"
+  type_id: 0x2efd5036
+  offset: 960
+}
+member {
+  id: 0x839950d1
+  name: "kmemcg_id"
+  type_id: 0x6720d32f
+  offset: 14144
+}
+member {
+  id: 0x5bb2a4ff
+  name: "kn"
+  type_id: 0x3a534a58
+  offset: 2240
+}
+member {
+  id: 0x5bb2ad0c
+  name: "kn"
+  type_id: 0x3a534a58
+}
+member {
+  id: 0x574556a7
+  name: "knode_bus"
+  type_id: 0x280be654
+  offset: 832
+}
+member {
+  id: 0x5745586b
+  name: "knode_bus"
+  type_id: 0x280be654
+  offset: 1088
+}
+member {
+  id: 0x65aa7bde
+  name: "knode_class"
+  type_id: 0x280be654
+  offset: 1088
+}
+member {
+  id: 0xe9c74ca5
+  name: "knode_driver"
+  type_id: 0x280be654
+  offset: 576
+}
+member {
+  id: 0xb61869dc
+  name: "knode_parent"
+  type_id: 0x280be654
+  offset: 320
+}
+member {
+  id: 0x566fd7a7
+  name: "knows_txdone"
+  type_id: 0x6d7f5ff6
+  offset: 192
+}
+member {
+  id: 0x452b206c
+  name: "kobj"
+  type_id: 0xa582964d
+}
+member {
+  id: 0x452b21fe
+  name: "kobj"
+  type_id: 0xa582964d
+  offset: 384
+}
+member {
+  id: 0x452b2605
+  name: "kobj"
+  type_id: 0xa582964d
+  offset: 3584
+}
+member {
+  id: 0x452b2615
+  name: "kobj"
+  type_id: 0xa582964d
+  offset: 640
+}
+member {
+  id: 0x452b2664
+  name: "kobj"
+  type_id: 0xa582964d
+  offset: 3008
+}
+member {
+  id: 0x452b2767
+  name: "kobj"
+  type_id: 0xa582964d
+  offset: 2304
+}
+member {
+  id: 0x452b27ab
+  name: "kobj"
+  type_id: 0xa582964d
+  offset: 320
+}
+member {
+  id: 0x452b289f
+  name: "kobj"
+  type_id: 0xa582964d
+  offset: 960
+}
+member {
+  id: 0x452b28a5
+  name: "kobj"
+  type_id: 0xa582964d
+  offset: 192
+}
+member {
+  id: 0x452b29ae
+  name: "kobj"
+  type_id: 0xa582964d
+  offset: 128
+}
+member {
+  id: 0x452b2a26
+  name: "kobj"
+  type_id: 0xa582964d
+  offset: 3456
+}
+member {
+  id: 0x452b2b74
+  name: "kobj"
+  type_id: 0xa582964d
+  offset: 512
+}
+member {
+  id: 0x452b2d1a
+  name: "kobj"
+  type_id: 0xa582964d
+  offset: 1088
+}
+member {
+  id: 0xc1ca025b
+  name: "kobj_completion"
+  type_id: 0x0562c566
+  offset: 960
+}
+member {
+  id: 0x8d3b73a4
+  name: "kobj_dev"
+  type_id: 0x0e0742cb
+  offset: 6208
+}
+member {
+  id: 0xd330d110
+  name: "kobj_driver"
+  type_id: 0x141ef775
+  offset: 6144
+}
+member {
+  id: 0x84231c09
+  name: "kobj_type"
+  type_id: 0x8ffe5e7d
+  offset: 832
+}
+member {
+  id: 0x6b5fe201
+  name: "kobj_unregister"
+  type_id: 0x3fcbf304
+  offset: 64
+}
+member {
+  id: 0x6b5fea63
+  name: "kobj_unregister"
+  type_id: 0x3fcbf304
+  offset: 4224
+}
+member {
+  id: 0x6b5fef22
+  name: "kobj_unregister"
+  type_id: 0x3fcbf304
+  offset: 128
+}
+member {
+  id: 0xd54640ae
+  name: "kobjs"
+  type_id: 0x73c39fe7
+  offset: 5504
+}
+member {
+  id: 0xef3edb33
+  name: "kp"
+  type_id: 0x3ad73636
+  offset: 2560
+}
+member {
+  id: 0xeff6ae77
+  name: "kp"
+  type_id: 0xf2a3d079
+}
+member {
+  id: 0xd8342b40
+  name: "kprobe_addr"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0xfafcfaf9
+  name: "kprobe_blacklist"
+  type_id: 0x064d6086
+  offset: 7424
+}
+member {
+  id: 0xdf8a4270
+  name: "kprobe_func"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0xfca623a0
+  name: "kprobe_multi"
+  type_id: 0x132f610b
+}
+member {
+  id: 0xc5b8ded3
+  name: "kprobe_override"
+  type_id: 0x914dbfdc
+  offset: 24
+  bitsize: 1
+}
+member {
+  id: 0xf6a27cf4
+  name: "kprobes_text_size"
+  type_id: 0x4585663f
+  offset: 7360
+}
+member {
+  id: 0x382bf5d7
+  name: "kprobes_text_start"
+  type_id: 0x18bd6530
+  offset: 7296
+}
+member {
+  id: 0x2c23d29d
+  name: "kptr"
+  type_id: 0x1b8e80b5
+  offset: 64
+}
+member {
+  id: 0xe89db1ad
+  name: "kptr_off_tab"
+  type_id: 0x398da40b
+  offset: 448
+}
+member {
+  id: 0x02ce5044
+  name: "kref"
+  type_id: 0x6f1daf87
+  offset: 128
+}
+member {
+  id: 0x02ce5129
+  name: "kref"
+  type_id: 0x6f1daf87
+  offset: 7776
+}
+member {
+  id: 0x02ce514f
+  name: "kref"
+  type_id: 0x6f1daf87
+  offset: 192
+}
+member {
+  id: 0x02ce529e
+  name: "kref"
+  type_id: 0x6f1daf87
+  offset: 512
+}
+member {
+  id: 0x02ce54bd
+  name: "kref"
+  type_id: 0x6f1daf87
+  offset: 32
+}
+member {
+  id: 0x02ce54f0
+  name: "kref"
+  type_id: 0x6f1daf87
+  offset: 1088
+}
+member {
+  id: 0x02ce5707
+  name: "kref"
+  type_id: 0x6f1daf87
+  offset: 3936
+}
+member {
+  id: 0x02ce5710
+  name: "kref"
+  type_id: 0x6f1daf87
+  offset: 3424
+}
+member {
+  id: 0x02ce575a
+  name: "kref"
+  type_id: 0x6f1daf87
+  offset: 1152
+}
+member {
+  id: 0x02ce5986
+  name: "kref"
+  type_id: 0x6f1daf87
+}
+member {
+  id: 0x02ce5b75
+  name: "kref"
+  type_id: 0x6f1daf87
+  offset: 1408
+}
+member {
+  id: 0x02ce5d67
+  name: "kref"
+  type_id: 0x6f1daf87
+  offset: 64
+}
+member {
+  id: 0x02ce5e41
+  name: "kref"
+  type_id: 0x6f1daf87
+  offset: 320
+}
+member {
+  id: 0x02ce5ef1
+  name: "kref"
+  type_id: 0x6f1daf87
+  offset: 448
+}
+member {
+  id: 0x02ce5f8e
+  name: "kref"
+  type_id: 0x6f1daf87
+  offset: 3008
+}
+member {
+  id: 0x9a3ad7bf
+  name: "kretprobe_instances"
+  type_id: 0x0bf3e543
+  offset: 28736
+}
+member {
+  id: 0x85969cba
+  name: "kset"
+  type_id: 0x1457cd38
+  offset: 256
+}
+member {
+  id: 0x744c7d97
+  name: "kstat_irqs"
+  type_id: 0x1bf16028
+  offset: 832
+}
+member {
+  id: 0xfe0f369c
+  name: "kswapd"
+  type_id: 0x1d19a9d5
+  offset: 53824
+}
+member {
+  id: 0x678d6528
+  name: "kswapd_failures"
+  type_id: 0x6720d32f
+  offset: 54976
+}
+member {
+  id: 0x053ab370
+  name: "kswapd_highest_zoneidx"
+  type_id: 0x0b0164a7
+  offset: 54944
+}
+member {
+  id: 0xff6f5b56
+  name: "kswapd_lock"
+  type_id: 0xa7c362b0
+  offset: 53440
+}
+member {
+  id: 0x34381759
+  name: "kswapd_order"
+  type_id: 0x6720d32f
+  offset: 54912
+}
+member {
+  id: 0x91281e96
+  name: "kswapd_wait"
+  type_id: 0x03913382
+  offset: 52160
+}
+member {
+  id: 0x185141de
+  name: "ksym"
+  type_id: 0x18628aeb
+  offset: 1792
+}
+member {
+  id: 0x1851434c
+  name: "ksym"
+  type_id: 0x18628aeb
+  offset: 64
+}
+member {
+  id: 0xc54733a4
+  name: "ksymbol"
+  type_id: 0xedf277ba
+  offset: 349
+  bitsize: 1
+}
+member {
+  id: 0x02bd720c
+  name: "kthread"
+  type_id: 0x1d19a9d5
+  offset: 10944
+}
+member {
+  id: 0x02bd754c
+  name: "kthread"
+  type_id: 0x1d19a9d5
+  offset: 128
+}
+member {
+  id: 0xe0ce5e11
+  name: "kthread_config"
+  type_id: 0x1d19a9d5
+  offset: 10624
+}
+member {
+  id: 0x2dbdf50d
+  name: "kthread_waitq"
+  type_id: 0x03913382
+  offset: 192
+}
+member {
+  id: 0x2dbdf6a0
+  name: "kthread_waitq"
+  type_id: 0x03913382
+  offset: 11008
+}
+member {
+  id: 0x75359e44
+  name: "ktype"
+  type_id: 0x356ba728
+  offset: 320
+}
+member {
+  id: 0x97aff8d0
+  name: "kunit_suites"
+  type_id: 0x031a031e
+  offset: 7552
+}
+member {
+  id: 0xa2d27584
+  name: "kunit_test"
+  type_id: 0x291e8a5b
+  offset: 22848
+}
+member {
+  id: 0x52aa1c89
+  name: "kvec"
+  type_id: 0x39c0701e
+}
+member {
+  id: 0x730e8b69
+  name: "kvm"
+  type_id: 0x363b9249
+}
+member {
+  id: 0x730e8f88
+  name: "kvm"
+  type_id: 0x363b9249
+  offset: 64
+}
+member {
+  id: 0xaa4c4a21
+  name: "kvm_dirty_regs"
+  type_id: 0xedf277ba
+  offset: 2368
+}
+member {
+  id: 0x4b1e23b0
+  name: "kvm_valid_regs"
+  type_id: 0xedf277ba
+  offset: 2304
+}
+member {
+  id: 0x6f6286ef
+  name: "kworker"
+  type_id: 0x348f6886
+  offset: 44416
+}
+member {
+  id: 0x6f628ccf
+  name: "kworker"
+  type_id: 0x348f6886
+  offset: 9664
+}
+member {
+  id: 0x18f3bb6c
+  name: "l1_params"
+  type_id: 0xf73d9c84
+  offset: 12000
+}
+member {
+  id: 0x655ea8bc
+  name: "l1ss"
+  type_id: 0x914dbfdc
+  offset: 1552
+}
+member {
+  id: 0x602ef273
+  name: "l2cap_conn"
+  type_id: 0x39a8be0c
+  offset: 128
+}
+member {
+  id: 0x1dcf84db
+  name: "l2cap_data"
+  type_id: 0x18bd6530
+  offset: 16384
+}
+member {
+  id: 0xf348616d
+  name: "l2specific_type"
+  type_id: 0x914dbfdc
+  offset: 48
+}
+member {
+  id: 0xf3486adb
+  name: "l2specific_type"
+  type_id: 0x914dbfdc
+  offset: 448
+}
+member {
+  id: 0x36f832fd
+  name: "l2tp_net"
+  type_id: 0x0ca27481
+  offset: 2432
+}
+member {
+  id: 0xe6bd1d04
+  name: "l3mdev"
+  type_id: 0x295c7202
+  offset: 328
+}
+member {
+  id: 0xa2b82643
+  name: "l3num"
+  type_id: 0xe2ce8d42
+  offset: 144
+}
+member {
+  id: 0x45879131
+  name: "l4_4_bytes"
+  type_id: 0xe276adef
+  offset: 256
+}
+member {
+  id: 0x4587957b
+  name: "l4_4_bytes"
+  type_id: 0xe276adef
+  offset: 64
+}
+member {
+  id: 0x60413c7c
+  name: "l4_hash"
+  type_id: 0xb3e7bac9
+  offset: 8
+  bitsize: 1
+}
+member {
+  id: 0xc5a2f97e
+  name: "l4_proto"
+  type_id: 0xb3e7bac9
+  offset: 296
+}
+member {
+  id: 0xbe79d648
+  name: "la_mask"
+  type_id: 0x914dbfdc
+  offset: 1056
+}
+member {
+  id: 0x0517038f
+  name: "label"
+  type_id: 0x3e10b518
+}
+member {
+  id: 0x0517076e
+  name: "label"
+  type_id: 0x3e10b518
+  offset: 64
+}
+member {
+  id: 0x05170a4d
+  name: "label"
+  type_id: 0x3e10b518
+  offset: 128
+}
+member {
+  id: 0x05170a91
+  name: "label"
+  type_id: 0x3e10b518
+  offset: 8512
+}
+member {
+  id: 0x05170fcc
+  name: "label"
+  type_id: 0x3e10b518
+  offset: 8768
+}
+member {
+  id: 0x05cb61ce
+  name: "label"
+  type_id: 0xe276adef
+  offset: 352
+}
+member {
+  id: 0x05e0162a
+  name: "label"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x05e01b11
+  name: "label"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x00abb49e
+  name: "labels"
+  type_id: 0xd3c80119
+  offset: 256
+}
+member {
+  id: 0x00c67aae
+  name: "labels"
+  type_id: 0xbe0f19dc
+  offset: 96
+}
+member {
+  id: 0x8224deaf
+  name: "lane"
+  type_id: 0x199ad6e0
+  offset: 9280
+}
+member {
+  id: 0xdcb2d9c7
+  name: "lane_polarities"
+  type_id: 0xb06c58f2
+  offset: 112
+}
+member {
+  id: 0x87174cb6
+  name: "lane_polarity"
+  type_id: 0x77f6971e
+  offset: 8
+}
+member {
+  id: 0xa02d82da
+  name: "lane_rx"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0xa04c4862
+  name: "lane_tx"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0x3d24b063
+  name: "lanes"
+  type_id: 0x5d8155a5
+  offset: 832
+}
+member {
+  id: 0x3d3cbad1
+  name: "lanes"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x3d3cbe28
+  name: "lanes"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x3d3cbf60
+  name: "lanes"
+  type_id: 0x4585663f
+  offset: 7552
+}
+member {
+  id: 0x3db03209
+  name: "lanes"
+  type_id: 0xc9082b19
+  offset: 768
+}
+member {
+  id: 0x3db0379c
+  name: "lanes"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x3db98029
+  name: "lanes"
+  type_id: 0xc0b644f6
+  offset: 64
+}
+member {
+  id: 0x93066213
+  name: "lanes_per_direction"
+  type_id: 0xc9082b19
+  offset: 21536
+}
+member {
+  id: 0x34365764
+  name: "language"
+  type_id: 0x914dbfdc
+}
+member {
+  id: 0xff972e94
+  name: "laptop_mode_wb_timer"
+  type_id: 0xd298e888
+  offset: 9920
+}
+member {
+  id: 0x260276bf
+  name: "last"
+  type_id: 0x6d7f5ff6
+  offset: 64
+}
+member {
+  id: 0x2620a79a
+  name: "last"
+  type_id: 0x4faa9b63
+}
+member {
+  id: 0x2649c61f
+  name: "last"
+  type_id: 0x26cfffd7
+  offset: 64
+}
+member {
+  id: 0x264f3cfa
+  name: "last"
+  type_id: 0x20351a02
+  offset: 64
+}
+member {
+  id: 0x2654d7e1
+  name: "last"
+  type_id: 0x3bde0140
+  offset: 64
+}
+member {
+  id: 0x2656412c
+  name: "last"
+  type_id: 0x3945ef63
+  offset: 128
+}
+member {
+  id: 0x265c71a7
+  name: "last"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x265c78ce
+  name: "last"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0x2667209c
+  name: "last"
+  type_id: 0x082be49e
+  offset: 640
+}
+member {
+  id: 0x266ba265
+  name: "last"
+  type_id: 0x04a91d68
+  offset: 640
+}
+member {
+  id: 0x267f139a
+  name: "last"
+  type_id: 0x101a7aa5
+  offset: 64
+}
+member {
+  id: 0x268306b3
+  name: "last"
+  type_id: 0xec0a20ff
+  offset: 384
+}
+member {
+  id: 0x26892e85
+  name: "last"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x26a602b8
+  name: "last"
+  type_id: 0xc9082b19
+  offset: 928
+}
+member {
+  id: 0x26a60811
+  name: "last"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x26fd2fa0
+  name: "last"
+  type_id: 0x92233392
+  offset: 384
+}
+member {
+  id: 0x46917fc8
+  name: "last_ack"
+  type_id: 0x35fdd62d
+  offset: 384
+}
+member {
+  id: 0xca85bec0
+  name: "last_acked_seq"
+  type_id: 0xe8034002
+  offset: 1600
+}
+member {
+  id: 0xc57b7fc6
+  name: "last_active"
+  type_id: 0x33756485
+  offset: 768
+}
+member {
+  id: 0x0e30e1cb
+  name: "last_adv_addr"
+  type_id: 0xa61911b2
+  offset: 480
+}
+member {
+  id: 0xf42c429e
+  name: "last_adv_addr_type"
+  type_id: 0x295c7202
+  offset: 528
+}
+member {
+  id: 0xe9cc380f
+  name: "last_adv_data"
+  type_id: 0x8656433b
+  offset: 576
+}
+member {
+  id: 0x14423a75
+  name: "last_adv_data_len"
+  type_id: 0x295c7202
+  offset: 824
+}
+member {
+  id: 0xf7e9992e
+  name: "last_adv_flags"
+  type_id: 0xc9082b19
+  offset: 544
+}
+member {
+  id: 0x7b99d91c
+  name: "last_adv_rssi"
+  type_id: 0x29b77961
+  offset: 536
+}
+member {
+  id: 0x753fa389
+  name: "last_arrival"
+  type_id: 0xd5df6730
+  offset: 128
+}
+member {
+  id: 0xa0dfccc7
+  name: "last_avail_idx"
+  type_id: 0x914dbfdc
+  offset: 2560
+}
+member {
+  id: 0x9ac11ab7
+  name: "last_balance"
+  type_id: 0x33756485
+  offset: 576
+}
+member {
+  id: 0xeed48968
+  name: "last_blocked_load_update_tick"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x85550ce5
+  name: "last_boosted_vcpu"
+  type_id: 0x6720d32f
+  offset: 18784
+}
+member {
+  id: 0x191711ef
+  name: "last_bstat"
+  type_id: 0x20b780d8
+  offset: 7680
+}
+member {
+  id: 0x19171723
+  name: "last_bstat"
+  type_id: 0x20b780d8
+  offset: 192
+}
+member {
+  id: 0x0bd89cb9
+  name: "last_buffer_dequeued"
+  type_id: 0x4585663f
+  offset: 6536
+  bitsize: 1
+}
+member {
+  id: 0x8ff35db6
+  name: "last_busy"
+  type_id: 0x92233392
+  offset: 2240
+}
+member {
+  id: 0xaa04091e
+  name: "last_bytes"
+  type_id: 0x92233392
+  offset: 384
+}
+member {
+  id: 0xb1361b0c
+  name: "last_calculate_time"
+  type_id: 0x33756485
+  offset: 6656
+}
+member {
+  id: 0x9fc09160
+  name: "last_cpu"
+  type_id: 0x6720d32f
+  offset: 320
+}
+member {
+  id: 0xa4c25843
+  name: "last_cs"
+  type_id: 0x384f7d7c
+  offset: 10616
+}
+member {
+  id: 0x481f377d
+  name: "last_cs_mode_high"
+  type_id: 0x6d7f5ff6
+  offset: 10624
+}
+member {
+  id: 0xbbca5df7
+  name: "last_decay_max_lb_cost"
+  type_id: 0x33756485
+  offset: 768
+}
+member {
+  id: 0x283a51a5
+  name: "last_delay"
+  type_id: 0x92233392
+  offset: 2624
+}
+member {
+  id: 0x0c7f9894
+  name: "last_delta"
+  type_id: 0xfc0e1dbd
+  offset: 64
+}
+member {
+  id: 0x15fecd55
+  name: "last_delta2"
+  type_id: 0xfc0e1dbd
+  offset: 128
+}
+member {
+  id: 0x555f8830
+  name: "last_dir"
+  type_id: 0x295c7202
+  offset: 96
+}
+member {
+  id: 0x557c6007
+  name: "last_dir"
+  type_id: 0x0abe9fd1
+  offset: 328
+}
+member {
+  id: 0x557c6e65
+  name: "last_dir"
+  type_id: 0x0abe9fd1
+  offset: 32
+}
+member {
+  id: 0xb7a2a1df
+  name: "last_dme_cmd_tstamp"
+  type_id: 0x11c404ba
+  offset: 20480
+}
+member {
+  id: 0x17a5e8ce
+  name: "last_end"
+  type_id: 0x35fdd62d
+  offset: 416
+}
+member {
+  id: 0x0a73bd57
+  name: "last_end_seq"
+  type_id: 0xc9082b19
+  offset: 480
+}
+member {
+  id: 0x069a99d3
+  name: "last_ev"
+  type_id: 0x4585663f
+  offset: 1440
+}
+member {
+  id: 0x5852724b
+  name: "last_event"
+  type_id: 0x11c404ba
+  offset: 33152
+}
+member {
+  id: 0x58817fdc
+  name: "last_event"
+  type_id: 0xc2cf0a7e
+  offset: 192
+}
+member {
+  id: 0xdc176719
+  name: "last_event_time"
+  type_id: 0x92233392
+  offset: 832
+}
+member {
+  id: 0x45c7feeb
+  name: "last_flags"
+  type_id: 0x0abe9fd1
+  offset: 472
+}
+member {
+  id: 0xf5a2f0f7
+  name: "last_flush"
+  type_id: 0x33756485
+  offset: 2240
+}
+member {
+  id: 0xc312300f
+  name: "last_frame_number"
+  type_id: 0x4585663f
+  offset: 1376
+}
+member {
+  id: 0xed9c508d
+  name: "last_frame_ts"
+  type_id: 0xedf277ba
+  offset: 1024
+}
+member {
+  id: 0xed9c5b0c
+  name: "last_frame_ts"
+  type_id: 0xedf277ba
+  offset: 9600
+}
+member {
+  id: 0x280cf0ef
+  name: "last_func"
+  type_id: 0xa2114faf
+  offset: 1216
+}
+member {
+  id: 0x004288a6
+  name: "last_func_repeats"
+  type_id: 0x20297ce4
+  offset: 2432
+}
+member {
+  id: 0x718bab7c
+  name: "last_governor"
+  type_id: 0x42201dce
+  offset: 768
+}
+member {
+  id: 0x89791ec8
+  name: "last_h_load_update"
+  type_id: 0x92233392
+  offset: 2304
+}
+member {
+  id: 0x5ff3caaa
+  name: "last_hibern8_exit_tstamp"
+  type_id: 0x92233392
+  offset: 192
+}
+member {
+  id: 0x807bc4cf
+  name: "last_hw_keepalive"
+  type_id: 0x11c404ba
+  offset: 8896
+}
+member {
+  id: 0x2827065a
+  name: "last_id_allocated"
+  type_id: 0xc9082b19
+  offset: 160
+}
+member {
+  id: 0xe17a01a0
+  name: "last_id_lowbits"
+  type_id: 0xc9082b19
+  offset: 320
+}
+member {
+  id: 0x5ed3d0f0
+  name: "last_idx"
+  type_id: 0x6720d32f
+  offset: 800
+}
+member {
+  id: 0x783e63f7
+  name: "last_iface"
+  type_id: 0x6720d32f
+  offset: 2080
+}
+member {
+  id: 0x4280578a
+  name: "last_index"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0x42cf65be
+  name: "last_index"
+  type_id: 0x0abe9fd1
+  offset: 344
+}
+member {
+  id: 0x79bc2888
+  name: "last_initiator"
+  type_id: 0x295c7202
+  offset: 11448
+}
+member {
+  id: 0x48cbb7f7
+  name: "last_insn_idx"
+  type_id: 0xc9082b19
+  offset: 768
+}
+member {
+  id: 0x1b271e62
+  name: "last_intr_status"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x446ac301
+  name: "last_intr_ts"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0x9d4e6964
+  name: "last_iso_frame"
+  type_id: 0x4585663f
+  offset: 3232
+}
+member {
+  id: 0x46e8ec28
+  name: "last_itd_to_free"
+  type_id: 0x3948db4a
+  offset: 3520
+}
+member {
+  id: 0x15e76f66
+  name: "last_keepalive"
+  type_id: 0x11c404ba
+  offset: 8832
+}
+member {
+  id: 0x6d62190d
+  name: "last_keycode"
+  type_id: 0xc9082b19
+  offset: 10496
+}
+member {
+  id: 0xbdffd021
+  name: "last_merge"
+  type_id: 0x1e820193
+}
+member {
+  id: 0xc685feed
+  name: "last_numid"
+  type_id: 0x4585663f
+  offset: 10752
+}
+member {
+  id: 0xc8030ed6
+  name: "last_obj_cnt"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xc2622789
+  name: "last_off"
+  type_id: 0x11c404ba
+  offset: 10752
+}
+member {
+  id: 0xb99df953
+  name: "last_offset"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x80fe5f07
+  name: "last_old_flush"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x7c2533b6
+  name: "last_overrun"
+  type_id: 0x33756485
+  offset: 832
+}
+member {
+  id: 0x2d186b1f
+  name: "last_packets"
+  type_id: 0x92233392
+  offset: 320
+}
+member {
+  id: 0x12d4f89d
+  name: "last_pages_touch"
+  type_id: 0xfc0e1dbd
+  offset: 1600
+}
+member {
+  id: 0x1f45cde6
+  name: "last_period"
+  type_id: 0x92233392
+}
+member {
+  id: 0x908713f9
+  name: "last_periodic_enable"
+  type_id: 0x11c404ba
+  offset: 5504
+}
+member {
+  id: 0x3c9a6b57
+  name: "last_pkt"
+  type_id: 0x0abe9fd1
+  offset: 24
+}
+member {
+  id: 0xc9068bc8
+  name: "last_policy"
+  type_id: 0x4585663f
+  offset: 576
+}
+member {
+  id: 0x8e4ba004
+  name: "last_probe"
+  type_id: 0x33756485
+  offset: 576
+}
+member {
+  id: 0xbc17d729
+  name: "last_protocol"
+  type_id: 0x52a8f1d9
+  offset: 10528
+}
+member {
+  id: 0x7164a4fb
+  name: "last_qtail"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x644a32f0
+  name: "last_queue_full_count"
+  type_id: 0xc93e017b
+  offset: 944
+}
+member {
+  id: 0x560041f5
+  name: "last_queue_full_depth"
+  type_id: 0xc93e017b
+  offset: 928
+}
+member {
+  id: 0xbeced76c
+  name: "last_queue_full_time"
+  type_id: 0x33756485
+  offset: 960
+}
+member {
+  id: 0x193d6790
+  name: "last_queue_ramp_up"
+  type_id: 0x33756485
+  offset: 1088
+}
+member {
+  id: 0x0e3da947
+  name: "last_queued"
+  type_id: 0xd5df6730
+  offset: 192
+}
+member {
+  id: 0x7668fd22
+  name: "last_rand"
+  type_id: 0x33756485
+  offset: 5504
+}
+member {
+  id: 0xc6b95840
+  name: "last_reset"
+  type_id: 0x33756485
+  offset: 3648
+}
+member {
+  id: 0x8675e267
+  name: "last_residency_ns"
+  type_id: 0x92233392
+  offset: 192
+}
+member {
+  id: 0x38fae966
+  name: "last_run_head"
+  type_id: 0x054f691a
+  offset: 1088
+}
+member {
+  id: 0xa444a488
+  name: "last_sample_time"
+  type_id: 0x92233392
+  offset: 448
+}
+member {
+  id: 0x6f1ecde9
+  name: "last_scancode"
+  type_id: 0x92233392
+  offset: 10560
+}
+member {
+  id: 0x02f7d82f
+  name: "last_sector_bug"
+  type_id: 0x4585663f
+  offset: 2819
+  bitsize: 1
+}
+member {
+  id: 0xe5a57fdf
+  name: "last_seen_need_resched_ns"
+  type_id: 0x92233392
+  offset: 22976
+}
+member {
+  id: 0x0b5e9082
+  name: "last_seg"
+  type_id: 0x3ef55b88
+  offset: 64
+}
+member {
+  id: 0xadd33b5a
+  name: "last_seq"
+  type_id: 0x35fdd62d
+  offset: 352
+}
+member {
+  id: 0xe81e4d64
+  name: "last_siginfo"
+  type_id: 0x2eec4b41
+  offset: 19648
+}
+member {
+  id: 0x9bd4cc09
+  name: "last_sitd_to_free"
+  type_id: 0x07eb840a
+  offset: 3712
+}
+member {
+  id: 0xd4502f73
+  name: "last_src_buf"
+  type_id: 0x37792593
+  offset: 128
+}
+member {
+  id: 0xeb9628ef
+  name: "last_state_idx"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x9f54f047
+  name: "last_status"
+  type_id: 0x7091586a
+  offset: 9472
+}
+member {
+  id: 0x9f6d32d0
+  name: "last_status"
+  type_id: 0x495d0861
+  offset: 2112
+}
+member {
+  id: 0xb280959d
+  name: "last_steal"
+  type_id: 0x92233392
+}
+member {
+  id: 0x4ac408b3
+  name: "last_switch_count"
+  type_id: 0x33756485
+  offset: 17152
+}
+member {
+  id: 0x887958a2
+  name: "last_switch_time"
+  type_id: 0x33756485
+  offset: 17216
+}
+member {
+  id: 0xf5595336
+  name: "last_tag"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0x48e40d1a
+  name: "last_td_was_short"
+  type_id: 0x6d7f5ff6
+  offset: 736
+}
+member {
+  id: 0xee05700b
+  name: "last_temperature"
+  type_id: 0x6720d32f
+  offset: 8480
+}
+member {
+  id: 0x320c7c1e
+  name: "last_time"
+  type_id: 0x11c404ba
+  offset: 1024
+}
+member {
+  id: 0x322eca61
+  name: "last_time"
+  type_id: 0x33756485
+}
+member {
+  id: 0x32c86483
+  name: "last_time"
+  type_id: 0xd5df6730
+  offset: 64
+}
+member {
+  id: 0xb24cf075
+  name: "last_toggle"
+  type_id: 0x295c7202
+  offset: 10624
+}
+member {
+  id: 0xd41dc3fc
+  name: "last_triggered"
+  type_id: 0x23dd1ac6
+  offset: 10368
+}
+member {
+  id: 0x996b918d
+  name: "last_tx_done"
+  type_id: 0x36106ed4
+  offset: 256
+}
+member {
+  id: 0x42e840b0
+  name: "last_type"
+  type_id: 0x6720d32f
+  offset: 640
+}
+member {
+  id: 0x1a01192b
+  name: "last_unhandled"
+  type_id: 0x33756485
+  offset: 1216
+}
+member {
+  id: 0x948ca3a5
+  name: "last_update"
+  type_id: 0x92233392
+  offset: 192
+}
+member {
+  id: 0x56821ee1
+  name: "last_update_time"
+  type_id: 0x92233392
+}
+member {
+  id: 0xea615881
+  name: "last_use"
+  type_id: 0x6720d32f
+  offset: 2688
+}
+member {
+  id: 0xd30e7268
+  name: "last_used_at"
+  type_id: 0x865acc96
+  offset: 960
+}
+member {
+  id: 0x4b2269ec
+  name: "last_used_idx"
+  type_id: 0x914dbfdc
+  offset: 2592
+}
+member {
+  id: 0xab7e4a6e
+  name: "last_used_slot"
+  type_id: 0x3d5133eb
+  offset: 77504
+}
+member {
+  id: 0xabf33787
+  name: "last_used_slot"
+  type_id: 0xb02b353a
+  offset: 64
+}
+member {
+  id: 0x1838fabc
+  name: "last_used_slot_gen"
+  type_id: 0x92233392
+  offset: 77568
+}
+member {
+  id: 0x583801a8
+  name: "last_vblank_count"
+  type_id: 0x92233392
+  offset: 384
+}
+member {
+  id: 0x9555d521
+  name: "last_vcpu_ran"
+  type_id: 0x13580d6c
+  offset: 192
+}
+member {
+  id: 0x9898696f
+  name: "last_wakee"
+  type_id: 0x1d19a9d5
+  offset: 896
+}
+member {
+  id: 0x3dc7ac1a
+  name: "last_win"
+  type_id: 0xe2ce8d42
+  offset: 448
+}
+member {
+  id: 0xe503544a
+  name: "last_wscale"
+  type_id: 0x0abe9fd1
+  offset: 464
+}
+member {
+  id: 0xcbb37151
+  name: "lastbusn"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0xb41c344d
+  name: "lastclose"
+  type_id: 0x0d066629
+  offset: 192
+}
+member {
+  id: 0xcc0a009b
+  name: "lastuse"
+  type_id: 0xedf277ba
+  offset: 64
+}
+member {
+  id: 0xccd48a1b
+  name: "lastuse"
+  type_id: 0x33756485
+  offset: 576
+}
+member {
+  id: 0x37a02e60
+  name: "lastused"
+  type_id: 0x865acc96
+  offset: 5568
+}
+member {
+  id: 0xa37793d0
+  name: "lat_max"
+  type_id: 0x68d841cd
+  offset: 576
+}
+member {
+  id: 0x21361bb0
+  name: "lat_min"
+  type_id: 0x68d841cd
+  offset: 704
+}
+member {
+  id: 0x3d4d25f3
+  name: "lat_sum"
+  type_id: 0x68d841cd
+  offset: 448
+}
+member {
+  id: 0x70b41242
+  name: "late_alloc"
+  type_id: 0x6d7f5ff6
+  offset: 384
+}
+member {
+  id: 0xcff0db63
+  name: "late_probe"
+  type_id: 0x2c61df5b
+  offset: 1984
+}
+member {
+  id: 0x94990af8
+  name: "late_register"
+  type_id: 0x2c42cb6e
+  offset: 576
+}
+member {
+  id: 0x949a57c1
+  name: "late_register"
+  type_id: 0x2f1f429a
+  offset: 128
+}
+member {
+  id: 0x949bab88
+  name: "late_register"
+  type_id: 0x2eeb5b0a
+  offset: 384
+}
+member {
+  id: 0x949bae51
+  name: "late_register"
+  type_id: 0x2ee5b68c
+  offset: 896
+}
+member {
+  id: 0x20229bbb
+  name: "latency"
+  type_id: 0x6720d32f
+  offset: 288
+}
+member {
+  id: 0x2076cad5
+  name: "latency"
+  type_id: 0x33756485
+}
+member {
+  id: 0x20adb1ca
+  name: "latency"
+  type_id: 0xe8034002
+  offset: 32
+}
+member {
+  id: 0x56113865
+  name: "latency_buckets"
+  type_id: 0x63164773
+  offset: 6528
+}
+member {
+  id: 0xa59496fe
+  name: "latency_pm_qos_req"
+  type_id: 0x5ed72256
+  offset: 512
+}
+member {
+  id: 0x8a0c4c56
+  name: "latency_present"
+  type_id: 0x77f6971e
+  offset: 14400
+}
+member {
+  id: 0x198f26bd
+  name: "latency_sensitive"
+  type_id: 0x4585663f
+  offset: 3392
+}
+member {
+  id: 0x6725e1c0
+  name: "latency_tolerance"
+  type_id: 0x4ba02d1a
+  offset: 320
+}
+member {
+  id: 0xf959e81d
+  name: "latency_tolerance_req"
+  type_id: 0x160238dd
+  offset: 2688
+}
+member {
+  id: 0xac824246
+  name: "latest_granting"
+  type_id: 0xc9082b19
+  offset: 4992
+}
+member {
+  id: 0x41995401
+  name: "latest_notif"
+  type_id: 0xc9082b19
+  offset: 49216
+}
+member {
+  id: 0x8747c030
+  name: "launder_folio"
+  type_id: 0x2fe70c6a
+  offset: 832
+}
+member {
+  id: 0x967f749f
+  name: "lazy"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0x5af11924
+  name: "lb_balanced"
+  type_id: 0x03a4acbb
+  offset: 1088
+}
+member {
+  id: 0x5842e7db
+  name: "lb_count"
+  type_id: 0x03a4acbb
+  offset: 896
+}
+member {
+  id: 0xa91b8271
+  name: "lb_failed"
+  type_id: 0x03a4acbb
+  offset: 992
+}
+member {
+  id: 0xb46d5432
+  name: "lb_gained"
+  type_id: 0x03a4acbb
+  offset: 1280
+}
+member {
+  id: 0x772bd845
+  name: "lb_hot_gained"
+  type_id: 0x03a4acbb
+  offset: 1376
+}
+member {
+  id: 0x9244f9cb
+  name: "lb_imbalance"
+  type_id: 0x03a4acbb
+  offset: 1184
+}
+member {
+  id: 0xe5e36c99
+  name: "lb_nobusyg"
+  type_id: 0x03a4acbb
+  offset: 1472
+}
+member {
+  id: 0x7da8b532
+  name: "lb_nobusyq"
+  type_id: 0x03a4acbb
+  offset: 1568
+}
+member {
+  id: 0x58753ae2
+  name: "lbits4"
+  type_id: 0x295c7202
+  offset: 448
+}
+member {
+  id: 0xdaf38040
+  name: "lbits6"
+  type_id: 0x295c7202
+  offset: 464
+}
+member {
+  id: 0x8c7accc8
+  name: "lbt"
+  type_id: 0x6d7f5ff6
+  offset: 672
+}
+member {
+  id: 0x8cb15aef
+  name: "lbt"
+  type_id: 0xa6e32300
+  offset: 1120
+}
+member {
+  id: 0x8848c685
+  name: "lcr"
+  type_id: 0x5d8155a5
+  offset: 4920
+}
+member {
+  id: 0x3e9cd6e3
+  name: "ldisc"
+  type_id: 0x19341e7e
+  offset: 704
+}
+member {
+  id: 0xbb8e96b0
+  name: "ldisc_sem"
+  type_id: 0x290e4f04
+  offset: 320
+}
+member {
+  id: 0x3c8ef028
+  name: "le_accept_list"
+  type_id: 0xd3c80119
+  offset: 30208
+}
+member {
+  id: 0x082a7070
+  name: "le_accept_list_size"
+  type_id: 0xb3e7bac9
+  offset: 5232
+}
+member {
+  id: 0x9d98b672
+  name: "le_adv_channel_map"
+  type_id: 0xb3e7bac9
+  offset: 6184
+}
+member {
+  id: 0x67d84ae8
+  name: "le_adv_data"
+  type_id: 0xa0f8b109
+  offset: 992
+}
+member {
+  id: 0x5e70ec06
+  name: "le_adv_data_len"
+  type_id: 0xb3e7bac9
+  offset: 1240
+}
+member {
+  id: 0x9a1249a9
+  name: "le_adv_max_interval"
+  type_id: 0xe8034002
+  offset: 6208
+}
+member {
+  id: 0x09a35e60
+  name: "le_adv_min_interval"
+  type_id: 0xe8034002
+  offset: 6192
+}
+member {
+  id: 0x026ea6ed
+  name: "le_cnt"
+  type_id: 0x4585663f
+  offset: 13088
+}
+member {
+  id: 0x096b15dd
+  name: "le_conn_interval"
+  type_id: 0xe8034002
+  offset: 944
+}
+member {
+  id: 0x835563ee
+  name: "le_conn_latency"
+  type_id: 0xe8034002
+  offset: 960
+}
+member {
+  id: 0x83556531
+  name: "le_conn_latency"
+  type_id: 0xe8034002
+  offset: 6432
+}
+member {
+  id: 0x22f820e8
+  name: "le_conn_max_interval"
+  type_id: 0xe8034002
+  offset: 928
+}
+member {
+  id: 0x22f823e0
+  name: "le_conn_max_interval"
+  type_id: 0xe8034002
+  offset: 6416
+}
+member {
+  id: 0x83b23c2a
+  name: "le_conn_min_interval"
+  type_id: 0xe8034002
+  offset: 912
+}
+member {
+  id: 0x83b23cdc
+  name: "le_conn_min_interval"
+  type_id: 0xe8034002
+  offset: 6400
+}
+member {
+  id: 0x78450d9f
+  name: "le_conn_params"
+  type_id: 0xd3c80119
+  offset: 30464
+}
+member {
+  id: 0x0f35b386
+  name: "le_conn_timeout"
+  type_id: 0xf1159c31
+  offset: 7488
+}
+member {
+  id: 0xbcb875d4
+  name: "le_def_tx_len"
+  type_id: 0xe8034002
+  offset: 6464
+}
+member {
+  id: 0x8ea80b48
+  name: "le_def_tx_time"
+  type_id: 0xe8034002
+  offset: 6480
+}
+member {
+  id: 0x6e331241
+  name: "le_features"
+  type_id: 0xc8c766a0
+  offset: 5168
+}
+member {
+  id: 0x33b1974f
+  name: "le_last_tx"
+  type_id: 0x33756485
+  offset: 13632
+}
+member {
+  id: 0x70017b28
+  name: "le_max_key_size"
+  type_id: 0xb3e7bac9
+  offset: 6560
+}
+member {
+  id: 0x84378713
+  name: "le_max_rx_len"
+  type_id: 0xe8034002
+  offset: 6528
+}
+member {
+  id: 0x13fd0633
+  name: "le_max_rx_time"
+  type_id: 0xe8034002
+  offset: 6544
+}
+member {
+  id: 0xb1f31934
+  name: "le_max_tx_len"
+  type_id: 0xe8034002
+  offset: 6496
+}
+member {
+  id: 0x89165678
+  name: "le_max_tx_time"
+  type_id: 0xe8034002
+  offset: 6512
+}
+member {
+  id: 0x7b4b1362
+  name: "le_min_key_size"
+  type_id: 0xb3e7bac9
+  offset: 6568
+}
+member {
+  id: 0xf3771713
+  name: "le_mtu"
+  type_id: 0x4585663f
+  offset: 13216
+}
+member {
+  id: 0x02559a7b
+  name: "le_num"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0xc8b6e1aa
+  name: "le_num_of_adv_sets"
+  type_id: 0xb3e7bac9
+  offset: 5248
+}
+member {
+  id: 0xc8503086
+  name: "le_num_peripheral"
+  type_id: 0x4585663f
+  offset: 288
+}
+member {
+  id: 0xa054824b
+  name: "le_per_adv_data"
+  type_id: 0x6afc5176
+  offset: 1248
+}
+member {
+  id: 0x150525b3
+  name: "le_per_adv_data_len"
+  type_id: 0xb3e7bac9
+  offset: 3264
+}
+member {
+  id: 0xb3ca2e9b
+  name: "le_pkts"
+  type_id: 0x4585663f
+  offset: 13344
+}
+member {
+  id: 0xdc9e19ca
+  name: "le_resolv_list"
+  type_id: 0xd3c80119
+  offset: 30336
+}
+member {
+  id: 0x75a1e881
+  name: "le_resolv_list_size"
+  type_id: 0xb3e7bac9
+  offset: 5240
+}
+member {
+  id: 0x12298c1b
+  name: "le_rx_def_phys"
+  type_id: 0xb3e7bac9
+  offset: 13704
+}
+member {
+  id: 0x2fe58a0b
+  name: "le_rx_phy"
+  type_id: 0xb3e7bac9
+  offset: 3280
+}
+member {
+  id: 0x2a5e8a3e
+  name: "le_scan_cleanup"
+  type_id: 0x1f3c8679
+  offset: 8576
+}
+member {
+  id: 0x4b83bf04
+  name: "le_scan_disable"
+  type_id: 0xf1159c31
+  offset: 23360
+}
+member {
+  id: 0x23bc5cfc
+  name: "le_scan_int_adv_monitor"
+  type_id: 0xe8034002
+  offset: 6336
+}
+member {
+  id: 0xaa42386f
+  name: "le_scan_int_connect"
+  type_id: 0xe8034002
+  offset: 6368
+}
+member {
+  id: 0x608a5ddc
+  name: "le_scan_int_discovery"
+  type_id: 0xe8034002
+  offset: 6304
+}
+member {
+  id: 0xf6702779
+  name: "le_scan_int_suspend"
+  type_id: 0xe8034002
+  offset: 6272
+}
+member {
+  id: 0x091a6c17
+  name: "le_scan_interval"
+  type_id: 0xe8034002
+  offset: 6240
+}
+member {
+  id: 0xf9311273
+  name: "le_scan_restart"
+  type_id: 0xf1159c31
+  offset: 24448
+}
+member {
+  id: 0x32b8a7c0
+  name: "le_scan_type"
+  type_id: 0xb3e7bac9
+  offset: 6224
+}
+member {
+  id: 0xc5f84af4
+  name: "le_scan_window"
+  type_id: 0xe8034002
+  offset: 6256
+}
+member {
+  id: 0xaab35ddd
+  name: "le_scan_window_adv_monitor"
+  type_id: 0xe8034002
+  offset: 6352
+}
+member {
+  id: 0xb73e5e75
+  name: "le_scan_window_connect"
+  type_id: 0xe8034002
+  offset: 6384
+}
+member {
+  id: 0xd4fa2334
+  name: "le_scan_window_discovery"
+  type_id: 0xe8034002
+  offset: 6320
+}
+member {
+  id: 0x7702aff1
+  name: "le_scan_window_suspend"
+  type_id: 0xe8034002
+  offset: 6288
+}
+member {
+  id: 0x7a7abbcb
+  name: "le_states"
+  type_id: 0xc8c766a0
+  offset: 5256
+}
+member {
+  id: 0x9c1e1541
+  name: "le_supv_timeout"
+  type_id: 0xe8034002
+  offset: 6448
+}
+member {
+  id: 0x9c1e1cf9
+  name: "le_supv_timeout"
+  type_id: 0xe8034002
+  offset: 976
+}
+member {
+  id: 0x22644f52
+  name: "le_tx_def_phys"
+  type_id: 0xb3e7bac9
+  offset: 13696
+}
+member {
+  id: 0x3ebdde4d
+  name: "le_tx_phy"
+  type_id: 0xb3e7bac9
+  offset: 3272
+}
+member {
+  id: 0xc8f1b3a4
+  name: "leader"
+  type_id: 0x6720d32f
+  offset: 3264
+}
+member {
+  id: 0x2e4133fd
+  name: "leaf"
+  type_id: 0x320f5cef
+  offset: 192
+}
+member {
+  id: 0x2e50bc30
+  name: "leaf"
+  type_id: 0x238091f9
+  offset: 192
+}
+member {
+  id: 0xde3c53a6
+  name: "leaf_cfs_rq_list"
+  type_id: 0xd3c80119
+  offset: 21504
+}
+member {
+  id: 0xde3c5861
+  name: "leaf_cfs_rq_list"
+  type_id: 0xd3c80119
+  offset: 2560
+}
+member {
+  id: 0x4d0154e3
+  name: "leases"
+  type_id: 0x04b89667
+  offset: 896
+}
+member {
+  id: 0x168a3497
+  name: "leave_memory_pressure"
+  type_id: 0x0f626ee5
+  offset: 1984
+}
+member {
+  id: 0x23373c52
+  name: "led"
+  type_id: 0xb914bfab
+  offset: 3584
+}
+member {
+  id: 0x236f4dab
+  name: "led"
+  type_id: 0xe16a5a0c
+  offset: 2368
+}
+member {
+  id: 0x238044e8
+  name: "led"
+  type_id: 0x0e6ba6f7
+  offset: 11648
+}
+member {
+  id: 0x8c6c23b0
+  name: "led_access"
+  type_id: 0xa7c362b0
+  offset: 3008
+}
+member {
+  id: 0xbbd532fd
+  name: "led_cdev"
+  type_id: 0xe16a5a0c
+}
+member {
+  id: 0xbdf74209
+  name: "led_cdevs"
+  type_id: 0xd3c80119
+  offset: 320
+}
+member {
+  id: 0xb80857ea
+  name: "led_link_trigger"
+  type_id: 0x23dd1ac6
+  offset: 10432
+}
+member {
+  id: 0xb6a1dcbb
+  name: "led_name"
+  type_id: 0x5adf57ae
+  offset: 5760
+}
+member {
+  id: 0x0358f080
+  name: "led_trigger"
+  type_id: 0x13ee7d42
+  offset: 384
+}
+member {
+  id: 0x03dcbfb4
+  name: "led_work"
+  type_id: 0x1f3c8679
+  offset: 50368
+}
+member {
+  id: 0xc5ab05e4
+  name: "ledbit"
+  type_id: 0xb914bfab
+  offset: 1344
+}
+member {
+  id: 0xc5b77731
+  name: "ledbit"
+  type_id: 0xa562355d
+  offset: 1152
+}
+member {
+  id: 0xa96b3380
+  name: "leddev_list_lock"
+  type_id: 0xf313e71a
+  offset: 256
+}
+member {
+  id: 0xb54a0f84
+  name: "ledtrigname"
+  type_id: 0x3e10b518
+  offset: 1024
+}
+member {
+  id: 0x35bce0f8
+  name: "left"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x35d88242
+  name: "left"
+  type_id: 0x21ee065a
+  offset: 64
+}
+member {
+  id: 0x35f6c240
+  name: "left"
+  type_id: 0x0faae5b1
+}
+member {
+  id: 0x68768233
+  name: "left_bar"
+  type_id: 0xc93e017b
+  offset: 496
+}
+member {
+  id: 0x84ed1eb9
+  name: "left_coeff"
+  type_id: 0x007e8ce4
+  offset: 48
+}
+member {
+  id: 0x06c685b4
+  name: "left_margin"
+  type_id: 0xe62ebf07
+  offset: 832
+}
+member {
+  id: 0x06e9a853
+  name: "left_margin"
+  type_id: 0xc9082b19
+  offset: 192
+}
+member {
+  id: 0xb6b511c9
+  name: "left_saturation"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0x812ed557
+  name: "leftover"
+  type_id: 0x6720d32f
+  offset: 67584
+}
+member {
+  id: 0xa7a26725
+  name: "legacy_cftypes"
+  type_id: 0x1ba902d8
+  offset: 128
+}
+member {
+  id: 0xa7a26894
+  name: "legacy_cftypes"
+  type_id: 0x1ba902d8
+  offset: 1792
+}
+member {
+  id: 0x7f4a45d1
+  name: "legacy_cursor_update"
+  type_id: 0x6d7f5ff6
+  offset: 129
+  bitsize: 1
+}
+member {
+  id: 0x21781384
+  name: "legacy_dai_naming"
+  type_id: 0x4585663f
+  offset: 2565
+  bitsize: 1
+}
+member {
+  id: 0x717bb538
+  name: "legacy_io"
+  type_id: 0x1d841d76
+  offset: 9856
+}
+member {
+  id: 0x3cc498c8
+  name: "legacy_mem"
+  type_id: 0x1d841d76
+  offset: 9920
+}
+member {
+  id: 0xe9217627
+  name: "legacy_minors"
+  type_id: 0x6d7f5ff6
+  offset: 512
+}
+member {
+  id: 0x304002ef
+  name: "legacy_mutex"
+  type_id: 0xa7c362b0
+  offset: 1152
+}
+member {
+  id: 0x36bf9c83
+  name: "legacy_name"
+  type_id: 0x3e10b518
+  offset: 1280
+}
+member {
+  id: 0x2cd25050
+  name: "legacy_pre_march2020"
+  type_id: 0x6d7f5ff6
+  offset: 96
+}
+member {
+  id: 0x1ac71a31
+  name: "len"
+  type_id: 0xc9082b19
+  offset: 19
+  bitsize: 8
+}
+member {
+  id: 0xb80e77ef
+  name: "len"
+  type_id: 0x0baa70a7
+  offset: 192
+}
+member {
+  id: 0xb82c8b76
+  name: "len"
+  type_id: 0x295c7202
+  offset: 40
+}
+member {
+  id: 0xb8405030
+  name: "len"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xb84051a2
+  name: "len"
+  type_id: 0x4585663f
+  offset: 384
+}
+member {
+  id: 0xb84054d1
+  name: "len"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xb8405747
+  name: "len"
+  type_id: 0x4585663f
+  offset: 448
+}
+member {
+  id: 0xb84059b3
+  name: "len"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0xb84059f2
+  name: "len"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0xb8405a96
+  name: "len"
+  type_id: 0x4585663f
+  offset: 896
+}
+member {
+  id: 0xb8405d0b
+  name: "len"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xb862f164
+  name: "len"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0xb862f207
+  name: "len"
+  type_id: 0x6720d32f
+  offset: 2048
+}
+member {
+  id: 0xb862f266
+  name: "len"
+  type_id: 0x6720d32f
+  offset: 4512
+}
+member {
+  id: 0xb862f417
+  name: "len"
+  type_id: 0x6720d32f
+  offset: 384
+}
+member {
+  id: 0xb862f585
+  name: "len"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xb862f741
+  name: "len"
+  type_id: 0x6720d32f
+  offset: 1216
+}
+member {
+  id: 0xb862f8be
+  name: "len"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0xb862fc47
+  name: "len"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0xb8735576
+  name: "len"
+  type_id: 0x768d1bed
+  offset: 32
+}
+member {
+  id: 0xb8735cac
+  name: "len"
+  type_id: 0x768d1bed
+  offset: 64
+}
+member {
+  id: 0xb8949657
+  name: "len"
+  type_id: 0x914dbfdc
+  offset: 16
+}
+member {
+  id: 0xb89498e9
+  name: "len"
+  type_id: 0x914dbfdc
+}
+member {
+  id: 0xb8949c08
+  name: "len"
+  type_id: 0x914dbfdc
+  offset: 64
+}
+member {
+  id: 0xb897f284
+  name: "len"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0xb8b5f711
+  name: "len"
+  type_id: 0xb02b353a
+  offset: 576
+}
+member {
+  id: 0xb8b632ec
+  name: "len"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0xb8b6390a
+  name: "len"
+  type_id: 0xb3e7bac9
+  offset: 8
+}
+member {
+  id: 0xb8b63fd7
+  name: "len"
+  type_id: 0xb3e7bac9
+  offset: 32
+}
+member {
+  id: 0xb8c00446
+  name: "len"
+  type_id: 0xc5d9d969
+  offset: 192
+}
+member {
+  id: 0xb8ccd046
+  name: "len"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0xb8ccd4fe
+  name: "len"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0xb8ccd99c
+  name: "len"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0xb8ccda3c
+  name: "len"
+  type_id: 0xc9082b19
+  offset: 672
+}
+member {
+  id: 0xb8ccdaba
+  name: "len"
+  type_id: 0xc9082b19
+  offset: 320
+}
+member {
+  id: 0xb8ccdd7d
+  name: "len"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xb8cceb57
+  name: "len"
+  type_id: 0xc93e017b
+}
+member {
+  id: 0xb8e3f22b
+  name: "len"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0xb8e3f26a
+  name: "len"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0xb8e3f320
+  name: "len"
+  type_id: 0xe62ebf07
+  offset: 192
+}
+member {
+  id: 0xb8e3f6d2
+  name: "len"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xb8e3ff08
+  name: "len"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xb8e823c0
+  name: "len"
+  type_id: 0xedf277ba
+  offset: 64
+}
+member {
+  id: 0xb8edd616
+  name: "len"
+  type_id: 0xe8034002
+}
+member {
+  id: 0xb8eddad7
+  name: "len"
+  type_id: 0xe8034002
+  offset: 48
+}
+member {
+  id: 0xb8eddb2d
+  name: "len"
+  type_id: 0xe8034002
+  offset: 32
+}
+member {
+  id: 0xb8f1e4df
+  name: "len"
+  type_id: 0xf435685e
+  offset: 64
+}
+member {
+  id: 0xb8f1e8f7
+  name: "len"
+  type_id: 0xf435685e
+  offset: 192
+}
+member {
+  id: 0xb8f1e9fc
+  name: "len"
+  type_id: 0xf435685e
+  offset: 128
+}
+member {
+  id: 0xb8f1ea33
+  name: "len"
+  type_id: 0xf435685e
+  offset: 4608
+}
+member {
+  id: 0xecd18446
+  name: "len8_dlc"
+  type_id: 0xb3e7bac9
+  offset: 56
+}
+member {
+  id: 0xdf2b35d9
+  name: "len_desc"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xf7528eb9
+  name: "len_so_far"
+  type_id: 0xe8034002
+  offset: 48
+}
+member {
+  id: 0x2b9e4f78
+  name: "len_total"
+  type_id: 0xc9082b19
+  offset: 8352
+}
+member {
+  id: 0x0f53c07d
+  name: "len_used"
+  type_id: 0xc9082b19
+  offset: 8320
+}
+member {
+  id: 0xb50a466a
+  name: "length"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0xb518ea7e
+  name: "length"
+  type_id: 0x7584e7da
+  offset: 48
+}
+member {
+  id: 0xb528e3df
+  name: "length"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xb528e73e
+  name: "length"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xb528ea05
+  name: "length"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xb528eebd
+  name: "length"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0xb528eefc
+  name: "length"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0xb528eff7
+  name: "length"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0xb530e15f
+  name: "length"
+  type_id: 0x5d8155a5
+  offset: 40
+}
+member {
+  id: 0xb5856118
+  name: "length"
+  type_id: 0xe8034002
+}
+member {
+  id: 0xb58565f9
+  name: "length"
+  type_id: 0xe8034002
+  offset: 64
+}
+member {
+  id: 0xb58b41dc
+  name: "length"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xb58b4525
+  name: "length"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0xb58b4595
+  name: "length"
+  type_id: 0xe62ebf07
+  offset: 576
+}
+member {
+  id: 0xb5995149
+  name: "length"
+  type_id: 0xf435685e
+  offset: 640
+}
+member {
+  id: 0xb59953d1
+  name: "length"
+  type_id: 0xf435685e
+  offset: 64
+}
+member {
+  id: 0xb599550d
+  name: "length"
+  type_id: 0xf435685e
+  offset: 704
+}
+member {
+  id: 0xb5995730
+  name: "length"
+  type_id: 0xf435685e
+}
+member {
+  id: 0xb5995e42
+  name: "length"
+  type_id: 0xf435685e
+  offset: 576
+}
+member {
+  id: 0xb5995ef2
+  name: "length"
+  type_id: 0xf435685e
+  offset: 128
+}
+member {
+  id: 0xb5995ff9
+  name: "length"
+  type_id: 0xf435685e
+  offset: 192
+}
+member {
+  id: 0xb5a46748
+  name: "length"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0xb5a46e92
+  name: "length"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0xb5de8e04
+  name: "length"
+  type_id: 0xb3e7bac9
+  offset: 8
+}
+member {
+  id: 0xb5ff48a9
+  name: "length"
+  type_id: 0x92233392
+  offset: 128
+}
+member {
+  id: 0xb5ff4a73
+  name: "length"
+  type_id: 0x92233392
+  offset: 512
+}
+member {
+  id: 0x63ad4670
+  name: "lessee_id"
+  type_id: 0x6720d32f
+  offset: 576
+}
+member {
+  id: 0x48a61936
+  name: "lessee_idr"
+  type_id: 0x04b89667
+  offset: 1088
+}
+member {
+  id: 0xfad497f9
+  name: "lessee_list"
+  type_id: 0xd3c80119
+  offset: 640
+}
+member {
+  id: 0xbaa002d3
+  name: "lessees"
+  type_id: 0xd3c80119
+  offset: 768
+}
+member {
+  id: 0x8830f604
+  name: "lessor"
+  type_id: 0x0756289d
+  offset: 512
+}
+member {
+  id: 0x8609234e
+  name: "level"
+  type_id: 0xb3e7bac9
+  offset: 8
+}
+member {
+  id: 0x86092469
+  name: "level"
+  type_id: 0xb3e7bac9
+  offset: 48
+}
+member {
+  id: 0x860924d9
+  name: "level"
+  type_id: 0xb3e7bac9
+  offset: 72
+}
+member {
+  id: 0x865ce289
+  name: "level"
+  type_id: 0xe62ebf07
+  offset: 224
+}
+member {
+  id: 0x865cec96
+  name: "level"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x8673c739
+  name: "level"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x86937c04
+  name: "level"
+  type_id: 0x29b77961
+  offset: 208
+}
+member {
+  id: 0x86939250
+  name: "level"
+  type_id: 0x295c7202
+  offset: 968
+}
+member {
+  id: 0x869394b3
+  name: "level"
+  type_id: 0x295c7202
+  offset: 11160
+}
+member {
+  id: 0x86ad6aa3
+  name: "level"
+  type_id: 0x17a1506b
+  offset: 64
+}
+member {
+  id: 0x86b0718d
+  name: "level"
+  type_id: 0x0abe9fd1
+}
+member {
+  id: 0x86bab19e
+  name: "level"
+  type_id: 0x007e8ce4
+}
+member {
+  id: 0x86dde4d9
+  name: "level"
+  type_id: 0x6720d32f
+  offset: 512
+}
+member {
+  id: 0x86dde642
+  name: "level"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0x86dde9b2
+  name: "level"
+  type_id: 0x6720d32f
+  offset: 1792
+}
+member {
+  id: 0x86ddee1f
+  name: "level"
+  type_id: 0x6720d32f
+  offset: 1920
+}
+member {
+  id: 0x86ebc61e
+  name: "level"
+  type_id: 0x51090cbc
+}
+member {
+  id: 0x86ff416c
+  name: "level"
+  type_id: 0x4585663f
+  offset: 512
+}
+member {
+  id: 0x86ff43f7
+  name: "level"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x86ff474f
+  name: "level"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x86ff4db3
+  name: "level"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0xfa8c9eb9
+  name: "level"
+  type_id: 0x295c7202
+  bitsize: 3
+}
+member {
+  id: 0xbe1f93d3
+  name: "level_idc"
+  type_id: 0xb3e7bac9
+  offset: 16
+}
+member {
+  id: 0xaa3960de
+  name: "level_shift_value"
+  type_id: 0x5d8155a5
+  offset: 200
+}
+member {
+  id: 0x0fa7a04b
+  name: "level_start"
+  type_id: 0xe8e3d133
+  offset: 448
+}
+member {
+  id: 0xd10df423
+  name: "lf"
+  type_id: 0x447859a7
+}
+member {
+  id: 0xd1f38063
+  name: "lf"
+  type_id: 0xba05dbf8
+  offset: 128
+}
+member {
+  id: 0x5d8e6bfa
+  name: "lf_update"
+  type_id: 0xa84ab8c0
+  offset: 32
+}
+member {
+  id: 0xa106113c
+  name: "lft"
+  type_id: 0xb427cfca
+  offset: 2112
+}
+member {
+  id: 0xa1061599
+  name: "lft"
+  type_id: 0xb427cfca
+  offset: 1536
+}
+member {
+  id: 0x5e1e6450
+  name: "lh"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0xc23ae739
+  name: "lhash2"
+  type_id: 0x3ab76acd
+  offset: 512
+}
+member {
+  id: 0x574956e4
+  name: "lhash2_mask"
+  type_id: 0x4585663f
+  offset: 480
+}
+member {
+  id: 0xf6c72501
+  name: "lhead"
+  type_id: 0xd3c80119
+  offset: 320
+}
+member {
+  id: 0x6f5b3405
+  name: "libipw"
+  type_id: 0x11e6dfdf
+  offset: 64
+}
+member {
+  id: 0xfaf67215
+  name: "license"
+  type_id: 0xedf277ba
+  offset: 128
+}
+member {
+  id: 0x0f82a1ea
+  name: "lid"
+  type_id: 0x6d7f5ff6
+  offset: 104
+}
+member {
+  id: 0x5897b003
+  name: "lifs_period"
+  type_id: 0x914dbfdc
+  offset: 1856
+}
+member {
+  id: 0xa939cfb9
+  name: "limit"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0xa94f30b5
+  name: "limit"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0xa94f37d9
+  name: "limit"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0xa94f3c6a
+  name: "limit"
+  type_id: 0x4585663f
+  offset: 512
+}
+member {
+  id: 0xa9c3b7df
+  name: "limit"
+  type_id: 0xc9082b19
+  offset: 160
+}
+member {
+  id: 0x1b5b0712
+  name: "limit_active_eps"
+  type_id: 0x4585663f
+  offset: 21024
+}
+member {
+  id: 0xb909dc44
+  name: "limit_depth"
+  type_id: 0x091e447b
+  offset: 640
+}
+member {
+  id: 0xcf818d34
+  name: "limit_index"
+  type_id: 0x4585663f
+  offset: 1664
+}
+member {
+  id: 0x6270d42c
+  name: "limit_valid"
+  type_id: 0x77f6971e
+  offset: 1696
+}
+member {
+  id: 0x0fb93397
+  name: "limited"
+  type_id: 0x6d7f5ff6
+  offset: 848
+}
+member {
+  id: 0x5d70184d
+  name: "limits"
+  type_id: 0xc51b0e75
+  offset: 3840
+}
+member {
+  id: 0x5d8109d5
+  name: "limits"
+  type_id: 0x3403910f
+}
+member {
+  id: 0x5dbba419
+  name: "limits"
+  type_id: 0x0eafcf90
+  offset: 384
+}
+member {
+  id: 0xdd5d93e6
+  name: "line"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0xdd5d9edd
+  name: "line"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xdd7f3625
+  name: "line"
+  type_id: 0x4585663f
+  offset: 2464
+}
+member {
+  id: 0xdddc9450
+  name: "line"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xddf384ee
+  name: "line"
+  type_id: 0xc93e017b
+  offset: 64
+}
+member {
+  id: 0xddf3bfe7
+  name: "line"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0x669f3178
+  name: "line_buf_depth"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x2d22a4be
+  name: "line_col"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x642e0945
+  name: "line_info"
+  type_id: 0xedf277ba
+  offset: 768
+}
+member {
+  id: 0xb0b849c1
+  name: "line_info_cnt"
+  type_id: 0xe62ebf07
+  offset: 832
+}
+member {
+  id: 0x7422ccd8
+  name: "line_info_rec_size"
+  type_id: 0xe62ebf07
+  offset: 736
+}
+member {
+  id: 0x4c5f7631
+  name: "line_length"
+  type_id: 0xe62ebf07
+  offset: 384
+}
+member {
+  id: 0x2b9d91fc
+  name: "line_level"
+  type_id: 0x6d7f5ff6
+  offset: 480
+}
+member {
+  id: 0x17206248
+  name: "line_off"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x50648c87
+  name: "linear_map_early"
+  type_id: 0x141d28a8
+  offset: 512
+}
+member {
+  id: 0xe63a680b
+  name: "linear_min_sel"
+  type_id: 0x4585663f
+  offset: 768
+}
+member {
+  id: 0x2a70ae77
+  name: "linear_range_selectors"
+  type_id: 0x39cc14ac
+  offset: 960
+}
+member {
+  id: 0xaafe44c1
+  name: "linear_ranges"
+  type_id: 0x37030053
+  offset: 896
+}
+member {
+  id: 0x321f37bf
+  name: "linear_unmap_early"
+  type_id: 0x0fc9cef8
+  offset: 576
+}
+member {
+  id: 0xd1c402eb
+  name: "linecard"
+  type_id: 0x2a0586b2
+  offset: 2688
+}
+member {
+  id: 0xc4fd637a
+  name: "linedur_ns"
+  type_id: 0x6720d32f
+  offset: 1088
+}
+member {
+  id: 0xadc4bc6c
+  name: "lineno"
+  type_id: 0x4585663f
+  offset: 256
+  bitsize: 18
+}
+member {
+  id: 0x6a764562
+  name: "linfo"
+  type_id: 0x381f3165
+  offset: 8000
+}
+member {
+  id: 0x46a0625c
+  name: "linfo_idx"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x46a06866
+  name: "linfo_idx"
+  type_id: 0xc9082b19
+  offset: 8192
+}
+member {
+  id: 0x55610d26
+  name: "link"
+  type_id: 0xdf92cbe9
+}
+member {
+  id: 0x556d502b
+  name: "link"
+  type_id: 0xd3c80119
+  offset: 320
+}
+member {
+  id: 0x556d50f3
+  name: "link"
+  type_id: 0xd3c80119
+  offset: 1024
+}
+member {
+  id: 0x556d57ec
+  name: "link"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0x556d5d6f
+  name: "link"
+  type_id: 0xd3c80119
+  offset: 1344
+}
+member {
+  id: 0x556d5f25
+  name: "link"
+  type_id: 0xd3c80119
+  offset: 192
+}
+member {
+  id: 0x5580f935
+  name: "link"
+  type_id: 0x3e6239e1
+  offset: 64
+}
+member {
+  id: 0x5590602a
+  name: "link"
+  type_id: 0x2efe8065
+  offset: 4672
+}
+member {
+  id: 0x55918415
+  name: "link"
+  type_id: 0x2f1f19f7
+  offset: 64
+}
+member {
+  id: 0x5592548f
+  name: "link"
+  type_id: 0x2ccaf0a5
+  offset: 384
+}
+member {
+  id: 0x55959838
+  name: "link"
+  type_id: 0x2b0e3ff1
+  offset: 16640
+}
+member {
+  id: 0x5597c334
+  name: "link"
+  type_id: 0x295c7202
+  offset: 256
+}
+member {
+  id: 0x55ae82c7
+  name: "link"
+  type_id: 0x101a7aa5
+  offset: 1472
+}
+member {
+  id: 0x55cf396d
+  name: "link"
+  type_id: 0x71a68091
+}
+member {
+  id: 0x55d9b205
+  name: "link"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x55d9b6fc
+  name: "link"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x55ddaf31
+  name: "link"
+  type_id: 0x633815f0
+  offset: 192
+}
+member {
+  id: 0x55f738dc
+  name: "link"
+  type_id: 0x49a73111
+}
+member {
+  id: 0x55f9336e
+  name: "link"
+  type_id: 0x47ac8321
+}
+member {
+  id: 0xab3031e9
+  name: "link"
+  type_id: 0x4585663f
+  offset: 416
+  bitsize: 1
+}
+member {
+  id: 0xab30390b
+  name: "link"
+  type_id: 0x4585663f
+  offset: 9261
+  bitsize: 1
+}
+member {
+  id: 0xca212731
+  name: "link_active_reporting"
+  type_id: 0x4585663f
+  offset: 22122
+  bitsize: 1
+}
+member {
+  id: 0x05661ab9
+  name: "link_change_notify"
+  type_id: 0x0da147cb
+  offset: 2880
+}
+member {
+  id: 0x39c4819f
+  name: "link_config"
+  type_id: 0xdd301cd7
+  offset: 704
+}
+member {
+  id: 0x28b46289
+  name: "link_consumers"
+  type_id: 0x6d7f5ff6
+  offset: 640
+}
+member {
+  id: 0x8e1a0749
+  name: "link_create"
+  type_id: 0x2e1f5866
+}
+member {
+  id: 0x0b033c28
+  name: "link_detach"
+  type_id: 0x04d99c3a
+}
+member {
+  id: 0x333c9ab0
+  name: "link_dev"
+  type_id: 0x23230326
+  offset: 384
+}
+member {
+  id: 0xfaf17b39
+  name: "link_down"
+  type_id: 0x0f3dfb90
+  offset: 384
+}
+member {
+  id: 0x49c17ebb
+  name: "link_ext_state"
+  type_id: 0xcd568da6
+}
+member {
+  id: 0xb2e99a38
+  name: "link_failure"
+  type_id: 0x0ee2db52
+  offset: 576
+}
+member {
+  id: 0x72d76384
+  name: "link_fd"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x178cf8a4
+  name: "link_gen"
+  type_id: 0x6720d32f
+  offset: 3616
+}
+member {
+  id: 0xa7e3aa93
+  name: "link_gpio"
+  type_id: 0x2560a232
+  offset: 1216
+}
+member {
+  id: 0xc9c35113
+  name: "link_id"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xc1766149
+  name: "link_interface"
+  type_id: 0xeeed68e6
+  offset: 512
+}
+member {
+  id: 0x8b9b8d50
+  name: "link_irq"
+  type_id: 0x4585663f
+  offset: 1280
+}
+member {
+  id: 0x4ba7b24a
+  name: "link_keys"
+  type_id: 0xd3c80119
+  offset: 29696
+}
+member {
+  id: 0x302a5d27
+  name: "link_len"
+  type_id: 0xabf64f28
+  offset: 112
+}
+member {
+  id: 0xc6b02067
+  name: "link_list"
+  type_id: 0xd3c80119
+  offset: 1856
+}
+member {
+  id: 0xf4d102e1
+  name: "link_load"
+  type_id: 0x2c83536f
+  offset: 576
+}
+member {
+  id: 0x2f57a9d5
+  name: "link_lock"
+  type_id: 0xf313e71a
+  offset: 1152
+}
+member {
+  id: 0xb953a4fe
+  name: "link_logical_mismatch"
+  type_id: 0xf26b2636
+}
+member {
+  id: 0x947c210a
+  name: "link_mode"
+  type_id: 0x5d8155a5
+  offset: 4360
+}
+member {
+  id: 0x94c9a78a
+  name: "link_mode"
+  type_id: 0xe8034002
+  offset: 7056
+}
+member {
+  id: 0xa79bb0e8
+  name: "link_mode_masks"
+  type_id: 0xfdb22131
+  offset: 384
+}
+member {
+  id: 0x947d273c
+  name: "link_mode_masks_nwords"
+  type_id: 0x901eaf6a
+  offset: 120
+}
+member {
+  id: 0xaa715cc9
+  name: "link_modes"
+  type_id: 0x39895cf5
+  offset: 384
+}
+member {
+  id: 0x0a406ba2
+  name: "link_notify"
+  type_id: 0x2e936ee9
+}
+member {
+  id: 0xf6e181ca
+  name: "link_policy"
+  type_id: 0xe8034002
+  offset: 720
+}
+member {
+  id: 0xf6e18c0d
+  name: "link_policy"
+  type_id: 0xe8034002
+  offset: 7040
+}
+member {
+  id: 0xe0ed6b10
+  name: "link_poll"
+  type_id: 0xd298e888
+  offset: 1344
+}
+member {
+  id: 0x9a187b24
+  name: "link_port"
+  type_id: 0x295c7202
+  offset: 560
+}
+member {
+  id: 0xa3ec8853
+  name: "link_rate"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x027dc99d
+  name: "link_reset"
+  type_id: 0x2d2c9ff4
+  offset: 576
+}
+member {
+  id: 0x8a9ef2e8
+  name: "link_setup"
+  type_id: 0x2c223dc4
+  offset: 64
+}
+member {
+  id: 0x890f03e1
+  name: "link_startup_notify"
+  type_id: 0x2dc23571
+  offset: 448
+}
+member {
+  id: 0x46f0d47d
+  name: "link_state"
+  type_id: 0x0e162262
+  offset: 192
+}
+member {
+  id: 0x46fceb17
+  name: "link_state"
+  type_id: 0x0226d1ba
+  offset: 1472
+}
+member {
+  id: 0x09f06b82
+  name: "link_status"
+  type_id: 0x0bc9f5b4
+  offset: 192
+}
+member {
+  id: 0x23fe30a1
+  name: "link_status_property"
+  type_id: 0x2a670b41
+  offset: 6144
+}
+member {
+  id: 0x22e8e4fb
+  name: "link_training"
+  type_id: 0x4bb6e057
+}
+member {
+  id: 0xe4c480c6
+  name: "link_unload"
+  type_id: 0x2cdf1523
+  offset: 640
+}
+member {
+  id: 0x89c1d237
+  name: "link_up"
+  type_id: 0x2e23b4b1
+  offset: 256
+}
+member {
+  id: 0x89e0cba4
+  name: "link_up"
+  type_id: 0x0f3dfb90
+  offset: 448
+}
+member {
+  id: 0x7df6db51
+  name: "link_update"
+  type_id: 0x04cbe228
+}
+member {
+  id: 0x0afca38e
+  name: "link_validate"
+  type_id: 0x2e5e3e94
+  offset: 128
+}
+member {
+  id: 0x0aff2bb4
+  name: "link_validate"
+  type_id: 0x2dd7683e
+  offset: 768
+}
+member {
+  id: 0xb6c23c5e
+  name: "link_watch_list"
+  type_id: 0xd3c80119
+  offset: 9984
+}
+member {
+  id: 0x38f425c4
+  name: "linkage"
+  type_id: 0x914dbfdc
+}
+member {
+  id: 0x380c2401
+  name: "linklayer"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x3459027f
+  name: "links"
+  type_id: 0xd3c80119
+  offset: 640
+}
+member {
+  id: 0x345904ad
+  name: "links"
+  type_id: 0xd3c80119
+  offset: 256
+}
+member {
+  id: 0x34590682
+  name: "links"
+  type_id: 0xd3c80119
+  offset: 1984
+}
+member {
+  id: 0x34784f8c
+  name: "links"
+  type_id: 0xf28e5a9a
+  offset: 3776
+}
+member {
+  id: 0x3483c04f
+  name: "links"
+  type_id: 0x09058aff
+  offset: 128
+}
+member {
+  id: 0x34d297ec
+  name: "links"
+  type_id: 0x585b40a5
+  offset: 256
+}
+member {
+  id: 0x34e2fe3e
+  name: "links"
+  type_id: 0x68311512
+  offset: 1664
+}
+member {
+  id: 0x5359c4ed
+  name: "links_count"
+  type_id: 0x4585663f
+  offset: 2016
+}
+member {
+  id: 0xc6fe1e21
+  name: "linkstate"
+  type_id: 0xe62ebf07
+  offset: 384
+}
+member {
+  id: 0xd4b35970
+  name: "linkup_notifier"
+  type_id: 0x4585663f
+  bitsize: 1
+}
+member {
+  id: 0xe3ab65c4
+  name: "linkwatch_dev_tracker"
+  type_id: 0xc76fa419
+  offset: 20224
+}
+member {
+  id: 0xfa7940e4
+  name: "lirc_cdev"
+  type_id: 0x5f766fc6
+  offset: 18112
+}
+member {
+  id: 0x393e768a
+  name: "lirc_dev"
+  type_id: 0x23230326
+  offset: 10816
+}
+member {
+  id: 0x3a5d79c0
+  name: "lirc_fh"
+  type_id: 0xd3c80119
+  offset: 19328
+}
+member {
+  id: 0xbab84db6
+  name: "lirc_fh_lock"
+  type_id: 0xf313e71a
+  offset: 19264
+}
+member {
+  id: 0x7c00e01c
+  name: "list"
+  type_id: 0xd3c80119
+  offset: 7232
+}
+member {
+  id: 0x7c00e18e
+  name: "list"
+  type_id: 0xd3c80119
+  offset: 1152
+}
+member {
+  id: 0x7c00e224
+  name: "list"
+  type_id: 0xd3c80119
+  offset: 1088
+}
+member {
+  id: 0x7c00e287
+  name: "list"
+  type_id: 0xd3c80119
+  offset: 45824
+}
+member {
+  id: 0x7c00e340
+  name: "list"
+  type_id: 0xd3c80119
+  offset: 7424
+}
+member {
+  id: 0x7c00e3d1
+  name: "list"
+  type_id: 0xd3c80119
+  offset: 4224
+}
+member {
+  id: 0x7c00e44a
+  name: "list"
+  type_id: 0xd3c80119
+  offset: 512
+}
+member {
+  id: 0x7c00e5d1
+  name: "list"
+  type_id: 0xd3c80119
+  offset: 7296
+}
+member {
+  id: 0x7c00e5d2
+  name: "list"
+  type_id: 0xd3c80119
+  offset: 1344
+}
+member {
+  id: 0x7c00e5f4
+  name: "list"
+  type_id: 0xd3c80119
+  offset: 896
+}
+member {
+  id: 0x7c00e65a
+  name: "list"
+  type_id: 0xd3c80119
+  offset: 3520
+}
+member {
+  id: 0x7c00e690
+  name: "list"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0x7c00e786
+  name: "list"
+  type_id: 0xd3c80119
+  offset: 8896
+}
+member {
+  id: 0x7c00e79b
+  name: "list"
+  type_id: 0xd3c80119
+  offset: 192
+}
+member {
+  id: 0x7c00e7a1
+  name: "list"
+  type_id: 0xd3c80119
+  offset: 960
+}
+member {
+  id: 0x7c00e7bc
+  name: "list"
+  type_id: 0xd3c80119
+  offset: 5568
+}
+member {
+  id: 0x7c00e7d8
+  name: "list"
+  type_id: 0xd3c80119
+  offset: 7552
+}
+member {
+  id: 0x7c00e802
+  name: "list"
+  type_id: 0xd3c80119
+  offset: 1472
+}
+member {
+  id: 0x7c00e825
+  name: "list"
+  type_id: 0xd3c80119
+  offset: 448
+}
+member {
+  id: 0x7c00e859
+  name: "list"
+  type_id: 0xd3c80119
+  offset: 2304
+}
+member {
+  id: 0x7c00e895
+  name: "list"
+  type_id: 0xd3c80119
+  offset: 320
+}
+member {
+  id: 0x7c00e92b
+  name: "list"
+  type_id: 0xd3c80119
+  offset: 640
+}
+member {
+  id: 0x7c00ea6c
+  name: "list"
+  type_id: 0xd3c80119
+  offset: 2688
+}
+member {
+  id: 0x7c00ebab
+  name: "list"
+  type_id: 0xd3c80119
+  offset: 2496
+}
+member {
+  id: 0x7c00ebb3
+  name: "list"
+  type_id: 0xd3c80119
+  offset: 64
+}
+member {
+  id: 0x7c00ec6f
+  name: "list"
+  type_id: 0xd3c80119
+  offset: 2752
+}
+member {
+  id: 0x7c00ece8
+  name: "list"
+  type_id: 0xd3c80119
+  offset: 832
+}
+member {
+  id: 0x7c00ed37
+  name: "list"
+  type_id: 0xd3c80119
+  offset: 13888
+}
+member {
+  id: 0x7c00ed96
+  name: "list"
+  type_id: 0xd3c80119
+  offset: 1216
+}
+member {
+  id: 0x7c00eda1
+  name: "list"
+  type_id: 0xd3c80119
+  offset: 1408
+}
+member {
+  id: 0x7c00ee15
+  name: "list"
+  type_id: 0xd3c80119
+  offset: 4672
+}
+member {
+  id: 0x7c00eec0
+  name: "list"
+  type_id: 0xd3c80119
+  offset: 384
+}
+member {
+  id: 0x7c00ef52
+  name: "list"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0x7c00eff9
+  name: "list"
+  type_id: 0xd3c80119
+  offset: 256
+}
+member {
+  id: 0x7c080a44
+  name: "list"
+  type_id: 0xdb2fb9a5
+  offset: 9088
+}
+member {
+  id: 0x7c358f2e
+  name: "list"
+  type_id: 0xe6a87d74
+}
+member {
+  id: 0x7c62584a
+  name: "list"
+  type_id: 0xb17f19c3
+}
+member {
+  id: 0x7c7d3105
+  name: "list"
+  type_id: 0xae1656c9
+}
+member {
+  id: 0x7c8da25d
+  name: "list"
+  type_id: 0x5e8dc7f4
+  offset: 192
+}
+member {
+  id: 0x7c8daa94
+  name: "list"
+  type_id: 0x5e8dc7f4
+}
+member {
+  id: 0x7c8dab06
+  name: "list"
+  type_id: 0x5e8dc7f4
+  offset: 384
+}
+member {
+  id: 0x7c8dad8b
+  name: "list"
+  type_id: 0x5e8dc7f4
+  offset: 1024
+}
+member {
+  id: 0x7c8dae75
+  name: "list"
+  type_id: 0x5e8dc7f4
+  offset: 64
+}
+member {
+  id: 0x7c96abf7
+  name: "list"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x7c9a8062
+  name: "list"
+  type_id: 0x49a73111
+}
+member {
+  id: 0x7c9a825f
+  name: "list"
+  type_id: 0x49a73111
+  offset: 704
+}
+member {
+  id: 0x7c9a87a5
+  name: "list"
+  type_id: 0x49a73111
+  offset: 320
+}
+member {
+  id: 0x7c9eb1a5
+  name: "list"
+  type_id: 0x4d96f637
+}
+member {
+  id: 0x7cbf151d
+  name: "list"
+  type_id: 0x6c32e522
+  offset: 256
+}
+member {
+  id: 0x7cd6e088
+  name: "list"
+  type_id: 0x05c7db24
+}
+member {
+  id: 0x7cd87882
+  name: "list"
+  type_id: 0x0b561305
+  offset: 128
+}
+member {
+  id: 0x7ce3b35b
+  name: "list"
+  type_id: 0x3090e9a7
+  offset: 64
+}
+member {
+  id: 0x7ce736e1
+  name: "list"
+  type_id: 0x34197b6b
+  offset: 192
+}
+member {
+  id: 0x7ceaeb47
+  name: "list"
+  type_id: 0x39cc14ac
+}
+member {
+  id: 0xc1387737
+  name: "list_cg"
+  type_id: 0xd3c80119
+  offset: 384
+}
+member {
+  id: 0x6037ea07
+  name: "list_end"
+  type_id: 0x33b32811
+  offset: 192
+}
+member {
+  id: 0x7493659f
+  name: "list_entry"
+  type_id: 0xd3c80119
+  offset: 512
+}
+member {
+  id: 0xcfa8fc61
+  name: "list_func"
+  type_id: 0x0d466e97
+  offset: 192
+}
+member {
+  id: 0x329914c5
+  name: "list_lock"
+  type_id: 0xf313e71a
+  offset: 128
+}
+member {
+  id: 0x32991d07
+  name: "list_lock"
+  type_id: 0xf313e71a
+}
+member {
+  id: 0x32991f3a
+  name: "list_lock"
+  type_id: 0xf313e71a
+  offset: 704
+}
+member {
+  id: 0xc6a43282
+  name: "list_map"
+  type_id: 0xd3c80119
+  offset: 256
+}
+member {
+  id: 0xd773d1c8
+  name: "list_node"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0xd773df14
+  name: "list_node"
+  type_id: 0xd3c80119
+  offset: 1152
+}
+member {
+  id: 0x73163b28
+  name: "list_op_pending"
+  type_id: 0x65d1b07a
+  offset: 64
+}
+member {
+  id: 0x73780674
+  name: "list_op_pending"
+  type_id: 0x0be1cf6e
+  offset: 128
+}
+member {
+  id: 0xff233493
+  name: "list_voltage"
+  type_id: 0x2d42007e
+}
+member {
+  id: 0xc7c64d20
+  name: "listen"
+  type_id: 0x2c912323
+  offset: 768
+}
+member {
+  id: 0xe2a2a2d7
+  name: "listener"
+  type_id: 0x1d44326e
+  offset: 7616
+}
+member {
+  id: 0x56a9be5d
+  name: "lists"
+  type_id: 0xb00c15cd
+  offset: 192
+}
+member {
+  id: 0x56c4b4af
+  name: "lists"
+  type_id: 0xdd0e2ef7
+}
+member {
+  id: 0x1b95d57a
+  name: "listxattr"
+  type_id: 0x0e87d57a
+  offset: 960
+}
+member {
+  id: 0xb4f1f7cc
+  name: "little_endian"
+  type_id: 0x6d7f5ff6
+  offset: 7816
+}
+member {
+  id: 0xf62a2c51
+  name: "live"
+  type_id: 0xc4f9c336
+  offset: 896
+}
+member {
+  id: 0xf69a0093
+  name: "live"
+  type_id: 0x74d29cf1
+  offset: 32
+}
+member {
+  id: 0xdeb73004
+  name: "ll_driver"
+  type_id: 0x01ebfcdd
+  offset: 58304
+}
+member {
+  id: 0x52179283
+  name: "ll_node"
+  type_id: 0x214d9bc0
+}
+member {
+  id: 0x18a127c9
+  name: "ll_open_count"
+  type_id: 0x4585663f
+  offset: 58752
+}
+member {
+  id: 0xf7535b37
+  name: "ll_open_lock"
+  type_id: 0xa7c362b0
+  offset: 58368
+}
+member {
+  id: 0xa0fb3ddd
+  name: "ll_ops"
+  type_id: 0x9cceb676
+}
+member {
+  id: 0xdf7fd770
+  name: "llc_sibling"
+  type_id: 0x1c04d361
+  offset: 320
+}
+member {
+  id: 0x46cb64e4
+  name: "llist"
+  type_id: 0x214d9bc0
+  offset: 128
+}
+member {
+  id: 0x46cb6a51
+  name: "llist"
+  type_id: 0x214d9bc0
+  offset: 448
+}
+member {
+  id: 0x46cb6d26
+  name: "llist"
+  type_id: 0x214d9bc0
+}
+member {
+  id: 0x83844c25
+  name: "llseek"
+  type_id: 0x038d519d
+  offset: 256
+}
+member {
+  id: 0x83860c2c
+  name: "llseek"
+  type_id: 0x01c91228
+  offset: 64
+}
+member {
+  id: 0x839f19f1
+  name: "llseek"
+  type_id: 0x18d82e82
+}
+member {
+  id: 0xb57cc749
+  name: "lm_break"
+  type_id: 0x36fb5a3c
+  offset: 320
+}
+member {
+  id: 0xc68f0ffb
+  name: "lm_breaker_owns_lease"
+  type_id: 0x36fb5a3c
+  offset: 512
+}
+member {
+  id: 0x8124c78d
+  name: "lm_change"
+  type_id: 0x2e56b2c6
+  offset: 384
+}
+member {
+  id: 0xceee7728
+  name: "lm_expire_lock"
+  type_id: 0x0eb62dc3
+  offset: 640
+}
+member {
+  id: 0x11e76197
+  name: "lm_get_owner"
+  type_id: 0x2dd8ba7a
+  offset: 64
+}
+member {
+  id: 0x16ef23df
+  name: "lm_grant"
+  type_id: 0x2e5554e5
+  offset: 256
+}
+member {
+  id: 0xec16643a
+  name: "lm_lock_expirable"
+  type_id: 0x36fb5a3c
+  offset: 576
+}
+member {
+  id: 0x170e74a6
+  name: "lm_mod_owner"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0xb7c8a017
+  name: "lm_notify"
+  type_id: 0x0d745899
+  offset: 192
+}
+member {
+  id: 0x1492ac72
+  name: "lm_put_owner"
+  type_id: 0x064b31cb
+  offset: 128
+}
+member {
+  id: 0xf2743bcf
+  name: "lm_setup"
+  type_id: 0x0d78e7f9
+  offset: 448
+}
+member {
+  id: 0x6f723dea
+  name: "lmi"
+  type_id: 0xc93e017b
+  offset: 160
+}
+member {
+  id: 0xb0312eeb
+  name: "lmp_subver"
+  type_id: 0xe8034002
+  offset: 6032
+}
+member {
+  id: 0xc2344046
+  name: "lmp_ver"
+  type_id: 0xb3e7bac9
+  offset: 6000
+}
+member {
+  id: 0x497de021
+  name: "lnode"
+  type_id: 0xd3c80119
+  offset: 4224
+}
+member {
+  id: 0x49e78392
+  name: "lnode"
+  type_id: 0x49a73111
+}
+member {
+  id: 0x7995666d
+  name: "lns_mode"
+  type_id: 0x4585663f
+  offset: 1506
+  bitsize: 1
+}
+member {
+  id: 0x79956ac1
+  name: "lns_mode"
+  type_id: 0x4585663f
+  offset: 34
+  bitsize: 1
+}
+member {
+  id: 0x9fbe75ca
+  name: "lo"
+  type_id: 0x33756485
+}
+member {
+  id: 0x0e06cfb2
+  name: "load"
+  type_id: 0x2e733fe2
+}
+member {
+  id: 0x0e07eb43
+  name: "load"
+  type_id: 0x2f5f6076
+  offset: 768
+}
+member {
+  id: 0x0e290c33
+  name: "load"
+  type_id: 0x01b0be63
+}
+member {
+  id: 0xbc016328
+  name: "load_avg"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0xbc016762
+  name: "load_avg"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xbc823c70
+  name: "load_avg"
+  type_id: 0xb02b353a
+  offset: 2560
+}
+member {
+  id: 0x5ed96d73
+  name: "load_binary"
+  type_id: 0x2ef03743
+  offset: 192
+}
+member {
+  id: 0x387efce1
+  name: "load_fw"
+  type_id: 0x2dec5b18
+  offset: 192
+}
+member {
+  id: 0x1c8b6f27
+  name: "load_shlib"
+  type_id: 0x2c7ea7c2
+  offset: 256
+}
+member {
+  id: 0x79446440
+  name: "load_sum"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0x43978f39
+  name: "load_time"
+  type_id: 0x92233392
+  offset: 7296
+}
+member {
+  id: 0xbcb6da5b
+  name: "loaded"
+  type_id: 0x6d7f5ff6
+  offset: 704
+}
+member {
+  id: 0xbcc151ab
+  name: "loaded"
+  type_id: 0x1af273e3
+  offset: 64
+}
+member {
+  id: 0xbce3e545
+  name: "loaded"
+  type_id: 0x384f7d7c
+  offset: 1080
+}
+member {
+  id: 0x256fc591
+  name: "loader"
+  type_id: 0x33756485
+  offset: 1024
+}
+member {
+  id: 0x6bbab6fd
+  name: "loads"
+  type_id: 0x1ab0fbaa
+  offset: 64
+}
+member {
+  id: 0x2d37b152
+  name: "loc_assoc"
+  type_id: 0x7264849d
+  offset: 7424
+}
+member {
+  id: 0x589ca5be
+  name: "local"
+  type_id: 0x0c577b6c
+  offset: 576
+}
+member {
+  id: 0x58fd803f
+  name: "local"
+  type_id: 0x6d7f5ff6
+  offset: 176
+}
+member {
+  id: 0xdd41dc2f
+  name: "local_acc_lat"
+  type_id: 0xe62ebf07
+  offset: 1984
+}
+member {
+  id: 0x74508206
+  name: "local_addr"
+  type_id: 0x14637955
+  offset: 6912
+}
+member {
+  id: 0x82644086
+  name: "local_amp_id"
+  type_id: 0xb3e7bac9
+  offset: 1480
+}
+member {
+  id: 0x1d6fbf33
+  name: "local_codecs"
+  type_id: 0xd3c80119
+  offset: 30976
+}
+member {
+  id: 0x9ddaf23a
+  name: "local_fixed_chan"
+  type_id: 0xb3e7bac9
+  offset: 200
+}
+member {
+  id: 0x6da9c259
+  name: "local_flush_to"
+  type_id: 0xe62ebf07
+  offset: 2016
+}
+member {
+  id: 0x57f654fa
+  name: "local_fwnode"
+  type_id: 0x3e146274
+  offset: 64
+}
+member {
+  id: 0xeae65a45
+  name: "local_id"
+  type_id: 0xb3e7bac9
+  offset: 1904
+}
+member {
+  id: 0x93f3e583
+  name: "local_ip"
+  type_id: 0xa54936d5
+  offset: 32
+}
+member {
+  id: 0x93f3e8b8
+  name: "local_ip"
+  type_id: 0xa54936d5
+}
+member {
+  id: 0x7e220177
+  name: "local_ip6"
+  type_id: 0x6d25e07f
+}
+member {
+  id: 0x7e5ef414
+  name: "local_ip6"
+  type_id: 0x11d941b8
+  offset: 128
+}
+member {
+  id: 0xd20b4d9d
+  name: "local_msdu"
+  type_id: 0xe8034002
+  offset: 1920
+}
+member {
+  id: 0x5a5653f7
+  name: "local_node"
+  type_id: 0x322c8c4b
+  offset: 64
+}
+member {
+  id: 0x7dcf9bec
+  name: "local_out"
+  type_id: 0x2d2736e0
+  offset: 768
+}
+member {
+  id: 0x11369f07
+  name: "local_sdu_itime"
+  type_id: 0xe62ebf07
+  offset: 1952
+}
+member {
+  id: 0xa8394c97
+  name: "local_strong_refs"
+  type_id: 0x6720d32f
+  offset: 640
+}
+member {
+  id: 0xc977ae91
+  name: "local_stype"
+  type_id: 0xb3e7bac9
+  offset: 1912
+}
+member {
+  id: 0x313d2e1a
+  name: "local_udp_port"
+  type_id: 0x914dbfdc
+  offset: 256
+}
+member {
+  id: 0x31d9e330
+  name: "local_udp_port"
+  type_id: 0x7584e7da
+  offset: 288
+}
+member {
+  id: 0x3e5f7a72
+  name: "local_weak_refs"
+  type_id: 0x6720d32f
+  offset: 608
+}
+member {
+  id: 0x8c567013
+  name: "localmem_pool"
+  type_id: 0x14abdd00
+  offset: 5440
+}
+member {
+  id: 0xf5ed63af
+  name: "location"
+  type_id: 0xe62ebf07
+  offset: 1280
+}
+member {
+  id: 0x2d0ad53c
+  name: "lock"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x2d18681e
+  name: "lock"
+  type_id: 0xf4933b90
+  offset: 6976
+}
+member {
+  id: 0x2d18688e
+  name: "lock"
+  type_id: 0xf4933b90
+  offset: 5440
+}
+member {
+  id: 0x2d1868b8
+  name: "lock"
+  type_id: 0xf4933b90
+  offset: 64
+}
+member {
+  id: 0x2d186b9e
+  name: "lock"
+  type_id: 0xf4933b90
+  offset: 320
+}
+member {
+  id: 0x2d186c59
+  name: "lock"
+  type_id: 0xf4933b90
+}
+member {
+  id: 0x2d1fe165
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 160
+}
+member {
+  id: 0x2d1fe1be
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 32
+}
+member {
+  id: 0x2d1fe1f3
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 1088
+}
+member {
+  id: 0x2d1fe259
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 1152
+}
+member {
+  id: 0x2d1fe3aa
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 1760
+}
+member {
+  id: 0x2d1fe404
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 32832
+}
+member {
+  id: 0x2d1fe41d
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 3648
+}
+member {
+  id: 0x2d1fe42a
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 7776
+}
+member {
+  id: 0x2d1fe42b
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 768
+}
+member {
+  id: 0x2d1fe44c
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 192
+}
+member {
+  id: 0x2d1fe476
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 960
+}
+member {
+  id: 0x2d1fe506
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 96
+}
+member {
+  id: 0x2d1fe53d
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 1600
+}
+member {
+  id: 0x2d1fe547
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 128
+}
+member {
+  id: 0x2d1fe57c
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 10752
+}
+member {
+  id: 0x2d1fe5a4
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 1056
+}
+member {
+  id: 0x2d1fe5f7
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 576
+}
+member {
+  id: 0x2d1fe606
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 1344
+}
+member {
+  id: 0x2d1fe623
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 896
+}
+member {
+  id: 0x2d1fe798
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 1856
+}
+member {
+  id: 0x2d1fe79d
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 512
+}
+member {
+  id: 0x2d1fe864
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 64
+}
+member {
+  id: 0x2d1fe87c
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 2496
+}
+member {
+  id: 0x2d1fe8a5
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 8288
+}
+member {
+  id: 0x2d1fe8dc
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 352
+}
+member {
+  id: 0x2d1fea10
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 45792
+}
+member {
+  id: 0x2d1fea8d
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 3008
+}
+member {
+  id: 0x2d1feaec
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 3584
+}
+member {
+  id: 0x2d1feaf6
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 1792
+}
+member {
+  id: 0x2d1feaf8
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 1280
+}
+member {
+  id: 0x2d1feb42
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 320
+}
+member {
+  id: 0x2d1feb9a
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 1024
+}
+member {
+  id: 0x2d1feba0
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 1728
+}
+member {
+  id: 0x2d1febc4
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 672
+}
+member {
+  id: 0x2d1febf2
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 448
+}
+member {
+  id: 0x2d1fec2e
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 256
+}
+member {
+  id: 0x2d1fec77
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 608
+}
+member {
+  id: 0x2d1fec85
+  name: "lock"
+  type_id: 0xf313e71a
+}
+member {
+  id: 0x2d1fed27
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 2560
+}
+member {
+  id: 0x2d1fedba
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 6016
+}
+member {
+  id: 0x2d1fee41
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 1216
+}
+member {
+  id: 0x2d1fee46
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 81984
+}
+member {
+  id: 0x2d1fee76
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 1408
+}
+member {
+  id: 0x2d1feeb8
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 704
+}
+member {
+  id: 0x2d1feee5
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 416
+}
+member {
+  id: 0x2d1fef3f
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 832
+}
+member {
+  id: 0x2d1fefa1
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 224
+}
+member {
+  id: 0x2d1fefa9
+  name: "lock"
+  type_id: 0xf313e71a
+  offset: 1664
+}
+member {
+  id: 0x2d244323
+  name: "lock"
+  type_id: 0xc8b17aa7
+  offset: 32
+}
+member {
+  id: 0x2d2447da
+  name: "lock"
+  type_id: 0xc8b17aa7
+  offset: 128
+}
+member {
+  id: 0x2d244865
+  name: "lock"
+  type_id: 0xc8b17aa7
+  offset: 1280
+}
+member {
+  id: 0x2d244a41
+  name: "lock"
+  type_id: 0xc8b17aa7
+  offset: 352
+}
+member {
+  id: 0x2d244af9
+  name: "lock"
+  type_id: 0xc8b17aa7
+  offset: 64
+}
+member {
+  id: 0x2d244c3d
+  name: "lock"
+  type_id: 0xc8b17aa7
+  offset: 1376
+}
+member {
+  id: 0x2d244ceb
+  name: "lock"
+  type_id: 0xc8b17aa7
+  offset: 1408
+}
+member {
+  id: 0x2d244e18
+  name: "lock"
+  type_id: 0xc8b17aa7
+}
+member {
+  id: 0x2d27ad20
+  name: "lock"
+  type_id: 0xcb507f7c
+  offset: 704
+}
+member {
+  id: 0x2d27ae8f
+  name: "lock"
+  type_id: 0xcb507f7c
+  offset: 384
+}
+member {
+  id: 0x2d28e7e6
+  name: "lock"
+  type_id: 0xc4104d1b
+  offset: 192
+}
+member {
+  id: 0x2d4b3011
+  name: "lock"
+  type_id: 0xa7c362b0
+  offset: 9728
+}
+member {
+  id: 0x2d4b30cc
+  name: "lock"
+  type_id: 0xa7c362b0
+  offset: 11968
+}
+member {
+  id: 0x2d4b31e5
+  name: "lock"
+  type_id: 0xa7c362b0
+  offset: 7808
+}
+member {
+  id: 0x2d4b32dc
+  name: "lock"
+  type_id: 0xa7c362b0
+  offset: 1152
+}
+member {
+  id: 0x2d4b353f
+  name: "lock"
+  type_id: 0xa7c362b0
+  offset: 8448
+}
+member {
+  id: 0x2d4b3572
+  name: "lock"
+  type_id: 0xa7c362b0
+  offset: 576
+}
+member {
+  id: 0x2d4b35c2
+  name: "lock"
+  type_id: 0xa7c362b0
+  offset: 128
+}
+member {
+  id: 0x2d4b3683
+  name: "lock"
+  type_id: 0xa7c362b0
+  offset: 7296
+}
+member {
+  id: 0x2d4b38e1
+  name: "lock"
+  type_id: 0xa7c362b0
+  offset: 64
+}
+member {
+  id: 0x2d4b3aaa
+  name: "lock"
+  type_id: 0xa7c362b0
+  offset: 7616
+}
+member {
+  id: 0x2d4b3ace
+  name: "lock"
+  type_id: 0xa7c362b0
+  offset: 7872
+}
+member {
+  id: 0x2d4b3b77
+  name: "lock"
+  type_id: 0xa7c362b0
+  offset: 448
+}
+member {
+  id: 0x2d4b3b7e
+  name: "lock"
+  type_id: 0xa7c362b0
+  offset: 18944
+}
+member {
+  id: 0x2d4b3bb8
+  name: "lock"
+  type_id: 0xa7c362b0
+  offset: 8320
+}
+member {
+  id: 0x2d4b3bc7
+  name: "lock"
+  type_id: 0xa7c362b0
+  offset: 320
+}
+member {
+  id: 0x2d4b3c00
+  name: "lock"
+  type_id: 0xa7c362b0
+}
+member {
+  id: 0x2d4b3cab
+  name: "lock"
+  type_id: 0xa7c362b0
+  offset: 256
+}
+member {
+  id: 0x2d4b3d92
+  name: "lock"
+  type_id: 0xa7c362b0
+  offset: 384
+}
+member {
+  id: 0x2d4b3da2
+  name: "lock"
+  type_id: 0xa7c362b0
+  offset: 2560
+}
+member {
+  id: 0x2d4b3da5
+  name: "lock"
+  type_id: 0xa7c362b0
+  offset: 9216
+}
+member {
+  id: 0x2d61fc02
+  name: "lock"
+  type_id: 0x8d0aa23e
+  offset: 128
+}
+member {
+  id: 0x2d81aea3
+  name: "lock"
+  type_id: 0x6d51c12f
+}
+member {
+  id: 0x2d8f7b14
+  name: "lock"
+  type_id: 0x638752c9
+  offset: 224
+}
+member {
+  id: 0x2dc0e7e3
+  name: "lock"
+  type_id: 0x2c1a4564
+  offset: 1216
+}
+member {
+  id: 0x2dc44534
+  name: "lock"
+  type_id: 0x28b9ec9a
+  offset: 832
+}
+member {
+  id: 0x2dc4468e
+  name: "lock"
+  type_id: 0x28b9ec9a
+}
+member {
+  id: 0x2dc44ffc
+  name: "lock"
+  type_id: 0x28b9ec9a
+  offset: 576
+}
+member {
+  id: 0x2dcf951a
+  name: "lock"
+  type_id: 0x2360e10b
+  offset: 10240
+}
+member {
+  id: 0x2dcf9e11
+  name: "lock"
+  type_id: 0x2360e10b
+  offset: 384
+}
+member {
+  id: 0x2dcf9f28
+  name: "lock"
+  type_id: 0x2360e10b
+  offset: 256
+}
+member {
+  id: 0x2dcf9f83
+  name: "lock"
+  type_id: 0x2360e10b
+}
+member {
+  id: 0x2ddaaba2
+  name: "lock"
+  type_id: 0x3654c061
+}
+member {
+  id: 0x2de2204e
+  name: "lock"
+  type_id: 0x0edf2c30
+}
+member {
+  id: 0x2decf096
+  name: "lock"
+  type_id: 0x000ff4a8
+}
+member {
+  id: 0x2decf104
+  name: "lock"
+  type_id: 0x000ff4a8
+  offset: 384
+}
+member {
+  id: 0x2decf44f
+  name: "lock"
+  type_id: 0x000ff4a8
+  offset: 288
+}
+member {
+  id: 0x2decf477
+  name: "lock"
+  type_id: 0x000ff4a8
+  offset: 64
+}
+member {
+  id: 0x2df2d60d
+  name: "lock"
+  type_id: 0x1e29c48b
+  offset: 256
+}
+member {
+  id: 0x2dfcebca
+  name: "lock"
+  type_id: 0x1013df15
+  offset: 448
+}
+member {
+  id: 0xfc1ba2e3
+  name: "lock_arg"
+  type_id: 0x18bd6530
+  offset: 832
+}
+member {
+  id: 0xfc1baa41
+  name: "lock_arg"
+  type_id: 0x18bd6530
+  offset: 512
+}
+member {
+  id: 0x811f1f57
+  name: "lock_bus"
+  type_id: 0x0cba3d38
+}
+member {
+  id: 0x7097248a
+  name: "lock_class"
+  type_id: 0x475137a2
+  offset: 1472
+}
+member {
+  id: 0xf29527a4
+  name: "lock_count"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x5e3ceadf
+  name: "lock_fhs"
+  type_id: 0xa7c362b0
+  offset: 8896
+}
+member {
+  id: 0x9673fdce
+  name: "lock_flags"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xff4b5d85
+  name: "lock_interruptible"
+  type_id: 0x2d99009f
+  offset: 128
+}
+member {
+  id: 0x5f02774a
+  name: "lock_key"
+  type_id: 0x1b44744f
+  offset: 1280
+}
+member {
+  id: 0x5f5e64df
+  name: "lock_key"
+  type_id: 0x475137a2
+  offset: 256
+}
+member {
+  id: 0x5f5e6687
+  name: "lock_key"
+  type_id: 0x475137a2
+  offset: 1408
+}
+member {
+  id: 0x3bbbeef5
+  name: "lock_nested"
+  type_id: 0x0eb80ce3
+  offset: 64
+}
+member {
+  id: 0x53c021b3
+  name: "lock_ops"
+  type_id: 0x3713b7b1
+  offset: 256
+}
+member {
+  id: 0x53c1fdc0
+  name: "lock_ops"
+  type_id: 0x36cd1433
+  offset: 11712
+}
+member {
+  id: 0x2841c5c3
+  name: "lockable"
+  type_id: 0x4585663f
+  offset: 2787
+  bitsize: 1
+}
+member {
+  id: 0xebb41cf0
+  name: "lockdep_hardirqs"
+  type_id: 0x92233392
+  offset: 2560
+}
+member {
+  id: 0xaa26484e
+  name: "lockdep_map"
+  type_id: 0x5f2909b3
+  offset: 4288
+}
+member {
+  id: 0x1403255a
+  name: "locked"
+  type_id: 0x74d29cf1
+  offset: 32
+}
+member {
+  id: 0x145ea68f
+  name: "locked"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x14a4353b
+  name: "locked"
+  type_id: 0xd3c80119
+  offset: 320
+}
+member {
+  id: 0x6ce5e69b
+  name: "locked"
+  type_id: 0x4585663f
+  offset: 2788
+  bitsize: 1
+}
+member {
+  id: 0x3f80502f
+  name: "locked_flags"
+  type_id: 0x33756485
+  offset: 8192
+}
+member {
+  id: 0x7adfc058
+  name: "locked_free_list"
+  type_id: 0x25eef749
+  offset: 3072
+}
+member {
+  id: 0x73d59397
+  name: "locked_free_nr"
+  type_id: 0x4585663f
+  offset: 3200
+}
+member {
+  id: 0x65ec9733
+  name: "locked_pending"
+  type_id: 0x914dbfdc
+}
+member {
+  id: 0xb82d7a23
+  name: "locked_vm"
+  type_id: 0xb02b353a
+  offset: 704
+}
+member {
+  id: 0xb8ae2563
+  name: "locked_vm"
+  type_id: 0x33756485
+  offset: 1664
+}
+member {
+  id: 0x2c77dffb
+  name: "lockeddevcnt"
+  type_id: 0x4585663f
+  offset: 1632
+}
+member {
+  id: 0xabc6d609
+  name: "locks"
+  type_id: 0x3654c061
+}
+member {
+  id: 0x6fe580fb
+  name: "loff"
+  type_id: 0x295c7202
+  offset: 16
+}
+member {
+  id: 0xc00498e9
+  name: "log"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0xc02c6bd1
+  name: "log"
+  type_id: 0x6d7f5ff6
+  offset: 64
+}
+member {
+  id: 0xc03ddf09
+  name: "log"
+  type_id: 0x7cca3c54
+  offset: 13120
+}
+member {
+  id: 0xc0459322
+  name: "log"
+  type_id: 0x0483e6f8
+  offset: 256
+}
+member {
+  id: 0xc045934f
+  name: "log"
+  type_id: 0x0483e6f8
+  offset: 4480
+}
+member {
+  id: 0xc0459a4b
+  name: "log"
+  type_id: 0x0483e6f8
+  offset: 128
+}
+member {
+  id: 0xc0479363
+  name: "log"
+  type_id: 0x0687edf5
+  offset: 64
+}
+member {
+  id: 0xc04c8cc3
+  name: "log"
+  type_id: 0x0d956e67
+  offset: 128
+}
+member {
+  id: 0xc054ba10
+  name: "log"
+  type_id: 0x15a2b6b2
+  offset: 192
+}
+member {
+  id: 0xc0759949
+  name: "log"
+  type_id: 0x3486f55a
+  offset: 142528
+}
+member {
+  id: 0xc078fdfa
+  name: "log"
+  type_id: 0x39ed95e6
+}
+member {
+  id: 0xc0d6e3ee
+  name: "log"
+  type_id: 0x97f9278b
+  offset: 896
+}
+member {
+  id: 0xa0fdc6e2
+  name: "log2_diff_max_min_luma_coding_block_size"
+  type_id: 0xb3e7bac9
+  offset: 104
+}
+member {
+  id: 0xc0c6b7b5
+  name: "log2_diff_max_min_luma_transform_block_size"
+  type_id: 0xb3e7bac9
+  offset: 120
+}
+member {
+  id: 0x791dc692
+  name: "log2_diff_max_min_pcm_luma_coding_block_size"
+  type_id: 0xb3e7bac9
+  offset: 168
+}
+member {
+  id: 0xec9d9993
+  name: "log2_max_frame_num_minus4"
+  type_id: 0xb3e7bac9
+  offset: 56
+}
+member {
+  id: 0x282d3479
+  name: "log2_max_pic_order_cnt_lsb_minus4"
+  type_id: 0xb3e7bac9
+  offset: 64
+}
+member {
+  id: 0x282d3ce9
+  name: "log2_max_pic_order_cnt_lsb_minus4"
+  type_id: 0xb3e7bac9
+  offset: 72
+}
+member {
+  id: 0x141ae939
+  name: "log2_min_luma_coding_block_size_minus3"
+  type_id: 0xb3e7bac9
+  offset: 96
+}
+member {
+  id: 0x627e417b
+  name: "log2_min_luma_transform_block_size_minus2"
+  type_id: 0xb3e7bac9
+  offset: 112
+}
+member {
+  id: 0x07f28fd9
+  name: "log2_min_pcm_luma_coding_block_size_minus3"
+  type_id: 0xb3e7bac9
+  offset: 160
+}
+member {
+  id: 0xc1145683
+  name: "log2_parallel_merge_level_minus2"
+  type_id: 0xb3e7bac9
+  offset: 432
+}
+member {
+  id: 0x1059beb4
+  name: "log_addr"
+  type_id: 0xa0b4fda8
+}
+member {
+  id: 0x106b2c44
+  name: "log_addr"
+  type_id: 0x92233392
+  offset: 2688
+}
+member {
+  id: 0x1388e846
+  name: "log_addr_mask"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0x1388ebc3
+  name: "log_addr_mask"
+  type_id: 0xe8034002
+  offset: 32
+}
+member {
+  id: 0x323c5d87
+  name: "log_addr_type"
+  type_id: 0xa0b4fda8
+  offset: 280
+}
+member {
+  id: 0x43937a29
+  name: "log_addrs"
+  type_id: 0x669bdfd1
+  offset: 11744
+}
+member {
+  id: 0xec651640
+  name: "log_arity"
+  type_id: 0x295c7202
+  offset: 272
+}
+member {
+  id: 0x5de1525d
+  name: "log_base"
+  type_id: 0x18bd6530
+  offset: 142464
+}
+member {
+  id: 0x8615b3ed
+  name: "log_blocks_per_page"
+  type_id: 0x295c7202
+  offset: 280
+}
+member {
+  id: 0x586b7df7
+  name: "log_blocksize"
+  type_id: 0x295c7202
+  offset: 264
+}
+member {
+  id: 0x50d8a6ad
+  name: "log_buf"
+  type_id: 0xedf277ba
+  offset: 256
+}
+member {
+  id: 0x37286d54
+  name: "log_ce"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0x5f496848
+  name: "log_ctx"
+  type_id: 0x3e02e685
+  offset: 576
+}
+member {
+  id: 0x5f496882
+  name: "log_ctx"
+  type_id: 0x3e02e685
+  offset: 1600
+}
+member {
+  id: 0xafe59b54
+  name: "log_digestsize"
+  type_id: 0x295c7202
+  offset: 256
+}
+member {
+  id: 0x79366138
+  name: "log_iov"
+  type_id: 0x3f60fa99
+  offset: 142592
+}
+member {
+  id: 0x0f8e9fc1
+  name: "log_level"
+  type_id: 0xe62ebf07
+  offset: 192
+}
+member {
+  id: 0x5515654a
+  name: "log_message_interval"
+  type_id: 0x295c7202
+  offset: 264
+}
+member {
+  id: 0x86746a74
+  name: "log_pos"
+  type_id: 0xc9082b19
+  offset: 1088
+}
+member {
+  id: 0xcb7e0c9e
+  name: "log_size"
+  type_id: 0xe62ebf07
+  offset: 224
+}
+member {
+  id: 0x70c2d596
+  name: "log_slot_ht_size"
+  type_id: 0x4585663f
+  offset: 1536
+}
+member {
+  id: 0x300bda87
+  name: "log_status"
+  type_id: 0x2dec5b18
+}
+member {
+  id: 0x03e2b5ec
+  name: "log_ue"
+  type_id: 0x6720d32f
+  offset: 224
+}
+member {
+  id: 0xdbf890b2
+  name: "log_used"
+  type_id: 0x6d7f5ff6
+  offset: 2648
+}
+member {
+  id: 0xd27fca71
+  name: "logbuffer"
+  type_id: 0x3f6a85f3
+  offset: 34752
+}
+member {
+  id: 0x2a721390
+  name: "logbuffer_head"
+  type_id: 0x6720d32f
+  offset: 34688
+}
+member {
+  id: 0x6339abb1
+  name: "logbuffer_lock"
+  type_id: 0xa7c362b0
+  offset: 34304
+}
+member {
+  id: 0x90e05c99
+  name: "logbuffer_tail"
+  type_id: 0x6720d32f
+  offset: 34720
+}
+member {
+  id: 0xb7357bee
+  name: "logflags"
+  type_id: 0x0abe9fd1
+  offset: 8
+}
+member {
+  id: 0xa7e52a59
+  name: "logfn"
+  type_id: 0x10321094
+  offset: 128
+}
+member {
+  id: 0x2dfb65de
+  name: "logged_blk_crypto_fallback"
+  type_id: 0x6720d32f
+  offset: 288
+}
+member {
+  id: 0xba7d5fdd
+  name: "logged_blk_crypto_native"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0x236dffca
+  name: "logged_cryptoapi_impl"
+  type_id: 0x6720d32f
+  offset: 224
+}
+member {
+  id: 0x4c1ed939
+  name: "logical"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xd85daa1c
+  name: "logical_block_size"
+  type_id: 0x4585663f
+  offset: 384
+}
+member {
+  id: 0xcb446efe
+  name: "logical_idx"
+  type_id: 0x295c7202
+  offset: 512
+}
+member {
+  id: 0x22f480cb
+  name: "logical_maximum"
+  type_id: 0x0faae5b1
+  offset: 608
+}
+member {
+  id: 0x783047b2
+  name: "logical_minimum"
+  type_id: 0x0faae5b1
+  offset: 576
+}
+member {
+  id: 0xd42bbec1
+  name: "logical_unit_scan_finished"
+  type_id: 0x6d7f5ff6
+  offset: 3936
+}
+member {
+  id: 0xa2e21022
+  name: "loginuid"
+  type_id: 0xe90b32b7
+  offset: 18368
+}
+member {
+  id: 0x7575eb94
+  name: "long_name"
+  type_id: 0x3e10b518
+  offset: 64
+}
+member {
+  id: 0x4e9500ec
+  name: "long_term_keys"
+  type_id: 0xd3c80119
+  offset: 29824
+}
+member {
+  id: 0xf24e93bd
+  name: "long_term_ref_pic_set_size"
+  type_id: 0xe8034002
+  offset: 592
+}
+member {
+  id: 0xf24e9449
+  name: "long_term_ref_pic_set_size"
+  type_id: 0xe8034002
+  offset: 48
+}
+member {
+  id: 0xcd72550c
+  name: "longest_mark_read_walk"
+  type_id: 0xc9082b19
+  offset: 76192
+}
+member {
+  id: 0x6dda6565
+  name: "longmode"
+  type_id: 0xe62ebf07
+  offset: 512
+}
+member {
+  id: 0x6dda6e7d
+  name: "longmode"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xe77d91bb
+  name: "longname"
+  type_id: 0x01ef5f77
+  offset: 544
+}
+member {
+  id: 0x058c4e2e
+  name: "lookahead"
+  type_id: 0x6720d32f
+  offset: 160
+}
+member {
+  id: 0xcfbd3885
+  name: "lookahead_buf"
+  type_id: 0x0f2ca5ce
+  offset: 64
+}
+member {
+  id: 0xcfbe7596
+  name: "lookahead_buf"
+  type_id: 0x0c6248d2
+  offset: 1024
+}
+member {
+  id: 0xd446af54
+  name: "lookup"
+  type_id: 0x3b2fe314
+}
+member {
+  id: 0xd450b502
+  name: "lookup"
+  type_id: 0x2d33cc55
+  offset: 640
+}
+member {
+  id: 0xd455a2f6
+  name: "lookup"
+  type_id: 0x28224175
+}
+member {
+  id: 0xd47c59b7
+  name: "lookup"
+  type_id: 0x01d1ae50
+  offset: 768
+}
+member {
+  id: 0xd47f6364
+  name: "lookup_cookie"
+  type_id: 0x391f15ea
+  offset: 1728
+}
+member {
+  id: 0xda1f921c
+  name: "lookup_data"
+  type_id: 0x391f15ea
+  offset: 64
+}
+member {
+  id: 0x8276ba48
+  name: "lookup_ptr"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0xe68bacda
+  name: "lookup_restriction"
+  type_id: 0x25f5cdb3
+  offset: 960
+}
+member {
+  id: 0xd47db283
+  name: "lookup_type"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0x2d64c3b0
+  name: "lookups"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0x514eee33
+  name: "loop_idx"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x95ecb634
+  name: "loop_inline_state"
+  type_id: 0x3773b61f
+}
+member {
+  id: 0x41322da8
+  name: "loopback"
+  type_id: 0xc93e017b
+  offset: 64
+}
+member {
+  id: 0x41966f08
+  name: "loopback"
+  type_id: 0x6d7f5ff6
+  offset: 1024
+}
+member {
+  id: 0x963d3d26
+  name: "loopback_dev"
+  type_id: 0x32a623d7
+  offset: 2624
+}
+member {
+  id: 0x1ad1dac8
+  name: "loopback_enabled"
+  type_id: 0x4585663f
+  offset: 9256
+  bitsize: 1
+}
+member {
+  id: 0x7dc4312c
+  name: "looper"
+  type_id: 0x6720d32f
+  offset: 416
+}
+member {
+  id: 0xb51b50fd
+  name: "looper_need_return"
+  type_id: 0x6d7f5ff6
+  offset: 448
+}
+member {
+  id: 0x419a6349
+  name: "losses"
+  type_id: 0x6720d32f
+  offset: 384
+}
+member {
+  id: 0x1445ee58
+  name: "lost"
+  type_id: 0x299c4193
+  offset: 576
+}
+member {
+  id: 0xc431d6f2
+  name: "lost_events"
+  type_id: 0x33756485
+  offset: 768
+}
+member {
+  id: 0xc431db2c
+  name: "lost_events"
+  type_id: 0x33756485
+  offset: 67520
+}
+member {
+  id: 0x6ae3dbb0
+  name: "lost_idle_time"
+  type_id: 0x33756485
+  offset: 22720
+}
+member {
+  id: 0x5109560d
+  name: "lost_msgs"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x518045f4
+  name: "lost_msgs"
+  type_id: 0x6f3d464c
+}
+member {
+  id: 0xa0d3e60e
+  name: "lost_samples"
+  type_id: 0x1f4573ef
+  offset: 7808
+}
+member {
+  id: 0xe4294f6c
+  name: "low"
+  type_id: 0x914dbfdc
+}
+member {
+  id: 0xe48b7ac1
+  name: "low"
+  type_id: 0x33756485
+  offset: 1088
+}
+member {
+  id: 0xe4b5307c
+  name: "low"
+  type_id: 0x0d364e53
+  offset: 64
+}
+member {
+  id: 0x6ae49bf1
+  name: "low_downgrade_time"
+  type_id: 0x33756485
+  offset: 1792
+}
+member {
+  id: 0x2ffe4a12
+  name: "low_ino"
+  type_id: 0x4585663f
+  offset: 736
+}
+member {
+  id: 0xbc5b3492
+  name: "low_pkey"
+  type_id: 0x914dbfdc
+  offset: 64
+}
+member {
+  id: 0x3af6d631
+  name: "low_port"
+  type_id: 0x914dbfdc
+  offset: 16
+}
+member {
+  id: 0x468f26e8
+  name: "low_prio_bh"
+  type_id: 0x5395485e
+  offset: 4288
+}
+member {
+  id: 0x87389bca
+  name: "low_rates"
+  type_id: 0x6d7f5ff6
+  offset: 8
+}
+member {
+  id: 0x8294fd8d
+  name: "low_speed"
+  type_id: 0x4585663f
+  offset: 65
+  bitsize: 1
+}
+member {
+  id: 0x7f5ba031
+  name: "low_thresh"
+  type_id: 0xfc0e1dbd
+  offset: 64
+}
+member {
+  id: 0xd69dad00
+  name: "low_upgrade_time"
+  type_id: 0x33756485
+  offset: 1728
+}
+member {
+  id: 0xf655dc27
+  name: "low_usage"
+  type_id: 0xb02b353a
+  offset: 768
+}
+member {
+  id: 0xea4594cb
+  name: "lower"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0xea5f5d23
+  name: "lower"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xea70768c
+  name: "lower"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xeaa5271b
+  name: "lower"
+  type_id: 0x33756485
+  offset: 448
+}
+member {
+  id: 0x7dc41384
+  name: "lower_dev"
+  type_id: 0x32a623d7
+}
+member {
+  id: 0xe81f7023
+  name: "lower_first"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x1fe916f4
+  name: "lower_level"
+  type_id: 0x5d8155a5
+  offset: 4664
+}
+member {
+  id: 0xc515453c
+  name: "lower_list"
+  type_id: 0x3eb09d4a
+  offset: 16768
+}
+member {
+  id: 0xdbca9a98
+  name: "lower_margin"
+  type_id: 0xe62ebf07
+  offset: 928
+}
+member {
+  id: 0xdbe5bf47
+  name: "lower_margin"
+  type_id: 0xc9082b19
+  offset: 288
+}
+member {
+  id: 0xcb44bc4a
+  name: "lowest_bit"
+  type_id: 0x4585663f
+  offset: 896
+}
+member {
+  id: 0xf04cb8a1
+  name: "lowest_slack"
+  type_id: 0x4585663f
+  offset: 672
+}
+member {
+  id: 0xfb1e4220
+  name: "lowlatency"
+  type_id: 0x6d7f5ff6
+  offset: 3120
+}
+member {
+  id: 0x079f80c5
+  name: "lowlatency_playback"
+  type_id: 0x6d7f5ff6
+  offset: 1512
+}
+member {
+  id: 0x079f821d
+  name: "lowlatency_playback"
+  type_id: 0x6d7f5ff6
+  offset: 45416
+}
+member {
+  id: 0x8b466b27
+  name: "lowmem_reserve"
+  type_id: 0xb34e9475
+  offset: 384
+}
+member {
+  id: 0x0879d38b
+  name: "lowpan_dev"
+  type_id: 0x32a623d7
+  offset: 384
+}
+member {
+  id: 0x6c36ba4a
+  name: "lp_advertised"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x6279847e
+  name: "lp_advertising"
+  type_id: 0xe62ebf07
+  offset: 256
+}
+member {
+  id: 0x62ffd383
+  name: "lp_advertising"
+  type_id: 0x607419c2
+  offset: 9856
+}
+member {
+  id: 0x62ffd7b1
+  name: "lp_advertising"
+  type_id: 0x607419c2
+  offset: 128
+}
+member {
+  id: 0x62ffded8
+  name: "lp_advertising"
+  type_id: 0x607419c2
+  offset: 256
+}
+member {
+  id: 0xe94c7b1e
+  name: "lp_clk_rate"
+  type_id: 0x33756485
+  offset: 768
+}
+member {
+  id: 0x9a3a1e6c
+  name: "lp_rate"
+  type_id: 0x33756485
+  offset: 7744
+}
+member {
+  id: 0xeb74212a
+  name: "lpfn"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xeca52885
+  name: "lpi_array"
+  type_id: 0x38d23361
+  offset: 256
+}
+member {
+  id: 0x43246e2d
+  name: "lpi_idx"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0x9ecea343
+  name: "lpi_list"
+  type_id: 0xd3c80119
+  offset: 64
+}
+member {
+  id: 0x4d9128b0
+  name: "lpi_list_count"
+  type_id: 0x6720d32f
+  offset: 1152
+}
+member {
+  id: 0x9c466cf2
+  name: "lpi_list_head"
+  type_id: 0xd3c80119
+  offset: 1024
+}
+member {
+  id: 0xbe693b59
+  name: "lpi_list_lock"
+  type_id: 0xc8b17aa7
+  offset: 960
+}
+member {
+  id: 0xd5bf2684
+  name: "lpi_translation_cache"
+  type_id: 0xd3c80119
+  offset: 1216
+}
+member {
+  id: 0x0a9f8132
+  name: "lpm_capable"
+  type_id: 0x4585663f
+  offset: 11183
+  bitsize: 1
+}
+member {
+  id: 0x0a9f8d5e
+  name: "lpm_capable"
+  type_id: 0x4585663f
+  offset: 8464
+  bitsize: 1
+}
+member {
+  id: 0xb5e79513
+  name: "lpm_devinit_allow"
+  type_id: 0x4585663f
+  offset: 11184
+  bitsize: 1
+}
+member {
+  id: 0x7407d3f8
+  name: "lpm_disable_count"
+  type_id: 0x4585663f
+  offset: 12320
+}
+member {
+  id: 0x24663046
+  name: "lpm_incapable"
+  type_id: 0x4585663f
+  offset: 256
+  bitsize: 1
+}
+member {
+  id: 0xa884151a
+  name: "lpx"
+  type_id: 0x4585663f
+  offset: 544
+}
+member {
+  id: 0x05d6d7bd
+  name: "lrb"
+  type_id: 0x1dd474ea
+  offset: 832
+}
+member {
+  id: 0x5434db0f
+  name: "lru"
+  type_id: 0x360c66c5
+  offset: 2752
+}
+member {
+  id: 0x5484b289
+  name: "lru"
+  type_id: 0x86623cce
+  offset: 64
+}
+member {
+  id: 0x54ba6ad5
+  name: "lru"
+  type_id: 0xb8bf135c
+  offset: 384
+}
+member {
+  id: 0x54d11b22
+  name: "lru"
+  type_id: 0xd3c80119
+  offset: 448
+}
+member {
+  id: 0x54d11c55
+  name: "lru"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0xca4d1674
+  name: "lru_gen"
+  type_id: 0x074e13f5
+  offset: 7360
+}
+member {
+  id: 0xff719763
+  name: "lru_hint"
+  type_id: 0x74d29cf1
+  offset: 49152
+}
+member {
+  id: 0x50d1f6aa
+  name: "lru_lock"
+  type_id: 0xf313e71a
+  offset: 16640
+}
+member {
+  id: 0x50d1f939
+  name: "lru_lock"
+  type_id: 0xf313e71a
+  offset: 640
+}
+member {
+  id: 0x7974d3dd
+  name: "lru_member"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0x37a0133f
+  name: "lru_node"
+  type_id: 0xd3c80119
+  offset: 2624
+}
+member {
+  id: 0xaf750508
+  name: "lru_zone_size"
+  type_id: 0xb5054efe
+  offset: 16896
+}
+member {
+  id: 0x9af97a5e
+  name: "lrugen"
+  type_id: 0x2d4e0fb5
+  offset: 1088
+}
+member {
+  id: 0x3b7b9448
+  name: "lruvec"
+  type_id: 0x39182992
+}
+member {
+  id: 0x3b8cac21
+  name: "lruvec"
+  type_id: 0xce2040d6
+}
+member {
+  id: 0xd9cef51a
+  name: "lruvec_stats"
+  type_id: 0xc634f4ac
+  offset: 11520
+}
+member {
+  id: 0xa2a9e3ca
+  name: "lruvec_stats_percpu"
+  type_id: 0x2ced2dfa
+  offset: 11456
+}
+member {
+  id: 0xb1654cb6
+  name: "lsb"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x9d07f37f
+  name: "lsize"
+  type_id: 0x295c7202
+  offset: 24
+}
+member {
+  id: 0xc4ee4a10
+  name: "lsm_flags"
+  type_id: 0x4585663f
+  offset: 1312
+}
+member {
+  id: 0xabed406f
+  name: "lsr_save_mask"
+  type_id: 0x914dbfdc
+  offset: 5136
+}
+member {
+  id: 0xab565a69
+  name: "lsr_saved_flags"
+  type_id: 0x914dbfdc
+  offset: 5120
+}
+member {
+  id: 0x1c82693d
+  name: "lstats"
+  type_id: 0x10f72c6d
+}
+member {
+  id: 0x2d27233d
+  name: "ltimeout_list"
+  type_id: 0xd3c80119
+  offset: 192
+}
+member {
+  id: 0xe5cc3197
+  name: "ltr_path"
+  type_id: 0x4585663f
+  offset: 1536
+  bitsize: 1
+}
+member {
+  id: 0xd20636f7
+  name: "luma_log2_weight_denom"
+  type_id: 0xe8034002
+}
+member {
+  id: 0xd25dd8ea
+  name: "luma_log2_weight_denom"
+  type_id: 0xb3e7bac9
+  offset: 1536
+}
+member {
+  id: 0x4535d96e
+  name: "luma_offset"
+  type_id: 0x54d32bc8
+  offset: 512
+}
+member {
+  id: 0xe6e8cf2b
+  name: "luma_offset_l0"
+  type_id: 0x6834694b
+  offset: 128
+}
+member {
+  id: 0xa4a84cf9
+  name: "luma_offset_l1"
+  type_id: 0x6834694b
+  offset: 896
+}
+member {
+  id: 0xef85e86d
+  name: "luma_weight"
+  type_id: 0x54d32bc8
+}
+member {
+  id: 0x72ef98dd
+  name: "luminance_range"
+  type_id: 0xbf9c7823
+  offset: 1344
+}
+member {
+  id: 0x9219d051
+  name: "lun"
+  type_id: 0x4585663f
+  offset: 1728
+}
+member {
+  id: 0x92750921
+  name: "lun"
+  type_id: 0x295c7202
+  offset: 672
+}
+member {
+  id: 0x92750c14
+  name: "lun"
+  type_id: 0x295c7202
+  offset: 200
+}
+member {
+  id: 0x92ce73e5
+  name: "lun"
+  type_id: 0x92233392
+  offset: 1216
+}
+member {
+  id: 0x37d32427
+  name: "lun_in_cdb"
+  type_id: 0x4585663f
+  offset: 2828
+  bitsize: 1
+}
+member {
+  id: 0x26905ab0
+  name: "luns"
+  type_id: 0x41195943
+  offset: 1792
+}
+member {
+  id: 0x2694ce7d
+  name: "luns"
+  type_id: 0x4585663f
+  offset: 1696
+}
+member {
+  id: 0x26abf707
+  name: "luns"
+  type_id: 0x7ab67cad
+  offset: 64
+}
+member {
+  id: 0xe9c6751b
+  name: "luns_avail"
+  type_id: 0xc9082b19
+  offset: 40096
+}
+member {
+  id: 0xe3684bd6
+  name: "lvds"
+  type_id: 0xcdd3a5be
+}
+member {
+  id: 0x1d58be89
+  name: "lvr"
+  type_id: 0x295c7202
+  offset: 336
+}
+member {
+  id: 0xecaa7a91
+  name: "lwtstate"
+  type_id: 0x36f0205d
+  offset: 640
+}
+member {
+  id: 0x8d1115c8
+  name: "m"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x8d3e3e67
+  name: "m"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x8d43cf83
+  name: "m"
+  type_id: 0x9bd401b6
+  offset: 24
+}
+member {
+  id: 0x8d94b985
+  name: "m"
+  type_id: 0x4ca087ef
+  offset: 64
+}
+member {
+  id: 0x8da8066b
+  name: "m"
+  type_id: 0x701090f6
+  offset: 512
+}
+member {
+  id: 0x8da82527
+  name: "m"
+  type_id: 0x70386f82
+  offset: 256
+}
+member {
+  id: 0x8dd7b706
+  name: "m"
+  type_id: 0x0faae5b1
+}
+member {
+  id: 0xb254a7d1
+  name: "m2m_ctx"
+  type_id: 0x0858434c
+  offset: 1216
+}
+member {
+  id: 0xbfcfba97
+  name: "m2m_dev"
+  type_id: 0x09483d5e
+  offset: 256
+}
+member {
+  id: 0xe23c0b58
+  name: "m2m_ops"
+  type_id: 0x3b773187
+  offset: 4800
+}
+member {
+  id: 0x6d293ed3
+  name: "mA"
+  type_id: 0x4585663f
+  offset: 8352
+}
+member {
+  id: 0x76483be4
+  name: "m_count"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0xddb66434
+  name: "m_dentry"
+  type_id: 0x120540d1
+  offset: 128
+}
+member {
+  id: 0xf2bf147e
+  name: "m_ext"
+  type_id: 0xccef9d09
+  offset: 1024
+}
+member {
+  id: 0x2a890496
+  name: "m_hash"
+  type_id: 0x49a73111
+}
+member {
+  id: 0x4be35905
+  name: "m_list"
+  type_id: 0x5e8dc7f4
+  offset: 192
+}
+member {
+  id: 0x61847606
+  name: "m_seq"
+  type_id: 0x4585663f
+  offset: 576
+}
+member {
+  id: 0x63d123b7
+  name: "m_u"
+  type_id: 0xec82d04c
+  offset: 608
+}
+member {
+  id: 0x438c4950
+  name: "ma_external_lock"
+  type_id: 0x4f05a9fd
+}
+member {
+  id: 0x7cfb135c
+  name: "ma_flags"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x353dec0e
+  name: "ma_lock"
+  type_id: 0xf313e71a
+}
+member {
+  id: 0x70fc2f56
+  name: "ma_root"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0xb2c91492
+  name: "mac"
+  type_id: 0x78356643
+  offset: 32
+}
+member {
+  id: 0x888b9372
+  name: "mac_addr"
+  type_id: 0xabf64f28
+  offset: 736
+}
+member {
+  id: 0x3258f8d3
+  name: "mac_addr_mask"
+  type_id: 0xabf64f28
+  offset: 784
+}
+member {
+  id: 0x84c7da07
+  name: "mac_an_restart"
+  type_id: 0x0de7a7a9
+  offset: 384
+}
+member {
+  id: 0xce4ad94e
+  name: "mac_cap_info"
+  type_id: 0xabf64f28
+}
+member {
+  id: 0xce87d15d
+  name: "mac_cap_info"
+  type_id: 0x66fe5c63
+}
+member {
+  id: 0xad9c4abb
+  name: "mac_capabilities"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0x40c5e9e7
+  name: "mac_config"
+  type_id: 0x0da126bb
+  offset: 256
+}
+member {
+  id: 0x6db67fc5
+  name: "mac_finish"
+  type_id: 0x2eeae0b6
+  offset: 320
+}
+member {
+  id: 0x41dae600
+  name: "mac_hdrlen"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xd61d5458
+  name: "mac_header"
+  type_id: 0xe8034002
+  offset: 464
+}
+member {
+  id: 0xde6b3a29
+  name: "mac_len"
+  type_id: 0xe8034002
+  offset: 960
+}
+member {
+  id: 0x571f646f
+  name: "mac_link_down"
+  type_id: 0x0daccc19
+  offset: 448
+}
+member {
+  id: 0x7667f684
+  name: "mac_link_dropped"
+  type_id: 0x6d7f5ff6
+  offset: 3072
+}
+member {
+  id: 0x528ab765
+  name: "mac_link_up"
+  type_id: 0x0dd261a1
+  offset: 512
+}
+member {
+  id: 0x6244381e
+  name: "mac_managed_pm"
+  type_id: 0x6d7f5ff6
+  offset: 112
+}
+member {
+  id: 0xb2574efe
+  name: "mac_managed_pm"
+  type_id: 0x4585663f
+  offset: 9259
+  bitsize: 1
+}
+member {
+  id: 0x31f75ec1
+  name: "mac_ops"
+  type_id: 0x3be8a71a
+  offset: 64
+}
+member {
+  id: 0xc44a6164
+  name: "mac_pcs_get_state"
+  type_id: 0x0dda7b97
+  offset: 128
+}
+member {
+  id: 0xcdb6c9ff
+  name: "mac_prepare"
+  type_id: 0x2eeae0b6
+  offset: 192
+}
+member {
+  id: 0xc74dc59a
+  name: "mac_select_pcs"
+  type_id: 0x384ff235
+  offset: 64
+}
+member {
+  id: 0xcd1a0cff
+  name: "machine"
+  type_id: 0xfeb89bd6
+  offset: 2080
+}
+member {
+  id: 0xcddaac12
+  name: "machine"
+  type_id: 0x3e10b518
+}
+member {
+  id: 0xd88139c8
+  name: "macsec_info"
+  type_id: 0x7c9c61bf
+}
+member {
+  id: 0x3686b863
+  name: "macsec_ops"
+  type_id: 0x30ff2c92
+  offset: 19392
+}
+member {
+  id: 0x3686b889
+  name: "macsec_ops"
+  type_id: 0x30ff2c92
+  offset: 12928
+}
+member {
+  id: 0xfd37a2a4
+  name: "madv"
+  type_id: 0x6720d32f
+  offset: 3296
+}
+member {
+  id: 0xc2f319c0
+  name: "madv_list"
+  type_id: 0xd3c80119
+  offset: 3328
+}
+member {
+  id: 0xd614e9a5
+  name: "magic"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xd614ed44
+  name: "magic"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0xd640b4db
+  name: "magic"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0xd6786306
+  name: "magic"
+  type_id: 0x0baa70a7
+}
+member {
+  id: 0xd695eaf2
+  name: "magic"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xd69bca36
+  name: "magic"
+  type_id: 0xe8034002
+}
+member {
+  id: 0xd6e31323
+  name: "magic"
+  type_id: 0x90dafee5
+  offset: 256
+}
+member {
+  id: 0xa18e9dd1
+  name: "magic_map"
+  type_id: 0x04b89667
+  offset: 256
+}
+member {
+  id: 0xb9b0ac1f
+  name: "magic_pkt"
+  type_id: 0x6d7f5ff6
+  offset: 16
+}
+member {
+  id: 0xd5c8b7d7
+  name: "magnitude"
+  type_id: 0x007e8ce4
+  offset: 32
+}
+member {
+  id: 0x35af48e1
+  name: "mailbox_read"
+  type_id: 0x13012dce
+  offset: 64
+}
+member {
+  id: 0x77fc68d0
+  name: "main_hcd"
+  type_id: 0x25782362
+}
+member {
+  id: 0xa7fc0bdf
+  name: "main_status"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xe2a32069
+  name: "main_status_buf"
+  type_id: 0x1bf16028
+  offset: 2944
+}
+member {
+  id: 0xfb434624
+  name: "maintenance_charge"
+  type_id: 0x16a0ae81
+  offset: 448
+}
+member {
+  id: 0xa689ee3c
+  name: "maintenance_charge_size"
+  type_id: 0x6720d32f
+  offset: 512
+}
+member {
+  id: 0x722578c7
+  name: "mair"
+  type_id: 0x92233392
+  offset: 128
+}
+member {
+  id: 0x53ef4b8a
+  name: "maj_flt"
+  type_id: 0x33756485
+  offset: 15424
+}
+member {
+  id: 0x53ef4dbe
+  name: "maj_flt"
+  type_id: 0x33756485
+  offset: 4352
+}
+member {
+  id: 0x06fdf947
+  name: "maj_rev"
+  type_id: 0x295c7202
+  offset: 80
+}
+member {
+  id: 0x06fdfa14
+  name: "maj_rev"
+  type_id: 0x295c7202
+  offset: 18432
+}
+member {
+  id: 0xcb76e031
+  name: "major"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xcb76e746
+  name: "major"
+  type_id: 0xc9082b19
+  offset: 448
+}
+member {
+  id: 0xcbd8c000
+  name: "major"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0xcbd8c529
+  name: "major"
+  type_id: 0x6720d32f
+  offset: 160
+}
+member {
+  id: 0xcbd8c615
+  name: "major"
+  type_id: 0x6720d32f
+  offset: 1152
+}
+member {
+  id: 0xcbd8c8c9
+  name: "major"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xcbd8cc90
+  name: "major"
+  type_id: 0x6720d32f
+  offset: 352
+}
+member {
+  id: 0x3c0ffa2f
+  name: "major_class"
+  type_id: 0xb3e7bac9
+  offset: 4952
+}
+member {
+  id: 0x659b959c
+  name: "major_rev"
+  type_id: 0x295c7202
+  offset: 11776
+}
+member {
+  id: 0x659b98c6
+  name: "major_rev"
+  type_id: 0x295c7202
+  offset: 7744
+}
+member {
+  id: 0x429aa006
+  name: "major_ver"
+  type_id: 0x914dbfdc
+}
+member {
+  id: 0xafa5d1c2
+  name: "make_group"
+  type_id: 0x3058262d
+  offset: 64
+}
+member {
+  id: 0x7095100b
+  name: "make_item"
+  type_id: 0x37116b4c
+}
+member {
+  id: 0xf3161c1f
+  name: "man_bkops_en"
+  type_id: 0x6d7f5ff6
+  offset: 776
+}
+member {
+  id: 0xd89fccfd
+  name: "man_drv"
+  type_id: 0xec7c6db2
+  offset: 1152
+}
+member {
+  id: 0x42f7cb5a
+  name: "manage_power"
+  type_id: 0x2d4bbf27
+  offset: 448
+}
+member {
+  id: 0x42ee5074
+  name: "manage_start_stop"
+  type_id: 0x4585663f
+  offset: 2812
+  bitsize: 1
+}
+member {
+  id: 0x3e0bf3cd
+  name: "managed"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x3e80afef
+  name: "managed"
+  type_id: 0x6d7f5ff6
+  offset: 20168
+}
+member {
+  id: 0x3ef3e7f4
+  name: "managed"
+  type_id: 0x1e3e7f78
+  offset: 128
+}
+member {
+  id: 0xe5d96e89
+  name: "managed_alloc"
+  type_id: 0x6d7f5ff6
+  offset: 7296
+}
+member {
+  id: 0x9f00b155
+  name: "managed_buffer_alloc"
+  type_id: 0x4585663f
+  offset: 2945
+  bitsize: 1
+}
+member {
+  id: 0xfe75b48e
+  name: "managed_list"
+  type_id: 0xd3c80119
+  offset: 5312
+}
+member {
+  id: 0xfe75bb29
+  name: "managed_list"
+  type_id: 0xd3c80119
+  offset: 2752
+}
+member {
+  id: 0xe083d61b
+  name: "managed_pages"
+  type_id: 0xb02b353a
+  offset: 960
+}
+member {
+  id: 0x4a20351f
+  name: "managed_work"
+  type_id: 0xf1159c31
+  offset: 3392
+}
+member {
+  id: 0xaf4e1f46
+  name: "manager"
+  type_id: 0x2a64866d
+  offset: 5632
+}
+member {
+  id: 0x5abd868a
+  name: "mandatory"
+  type_id: 0x6d7f5ff6
+  offset: 8
+}
+member {
+  id: 0x0cac834b
+  name: "manfid"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xe10e1bf3
+  name: "mangle"
+  type_id: 0x1f67e8b7
+}
+member {
+  id: 0x93828c5b
+  name: "manifest"
+  type_id: 0x2c80456f
+  offset: 896
+}
+member {
+  id: 0x11bab798
+  name: "manual_bind"
+  type_id: 0x6d7f5ff6
+  offset: 1600
+}
+member {
+  id: 0x11bab7e2
+  name: "manual_bind"
+  type_id: 0x6d7f5ff6
+  offset: 128
+}
+member {
+  id: 0x69005a44
+  name: "manual_dirty_log_protect"
+  type_id: 0x92233392
+  offset: 26368
+}
+member {
+  id: 0xac46515e
+  name: "manual_mode_value"
+  type_id: 0x4585663f
+  offset: 428
+  bitsize: 8
+}
+member {
+  id: 0xf96d97af
+  name: "manuf_id"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0xa912102e
+  name: "manufacturer"
+  type_id: 0x4585663f
+  offset: 1280
+}
+member {
+  id: 0xa9121f91
+  name: "manufacturer"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0xa9531899
+  name: "manufacturer"
+  type_id: 0x0483e6f8
+  offset: 11328
+}
+member {
+  id: 0xa9bf914a
+  name: "manufacturer"
+  type_id: 0xe8034002
+  offset: 6016
+}
+member {
+  id: 0xa9f7200f
+  name: "manufacturer"
+  type_id: 0xa0b4fda8
+  offset: 320
+}
+member {
+  id: 0xc6dcb028
+  name: "manufacturer_id"
+  type_id: 0x914dbfdc
+}
+member {
+  id: 0x8d17c49e
+  name: "map"
+  type_id: 0xe1becf83
+  offset: 8
+}
+member {
+  id: 0x8d2050fa
+  name: "map"
+  type_id: 0xd6298487
+  offset: 192
+}
+member {
+  id: 0x8d25e654
+  name: "map"
+  type_id: 0xd39aff0d
+  offset: 31680
+}
+member {
+  id: 0x8d4fb401
+  name: "map"
+  type_id: 0xb9c7723b
+  offset: 1216
+}
+member {
+  id: 0x8dbdb056
+  name: "map"
+  type_id: 0x4bc42bec
+  offset: 4864
+}
+member {
+  id: 0x8dc50032
+  name: "map"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x8dcea6f3
+  name: "map"
+  type_id: 0x38de861f
+  offset: 128
+}
+member {
+  id: 0x8dcef71e
+  name: "map"
+  type_id: 0x3886a9ae
+}
+member {
+  id: 0x8dcfac17
+  name: "map"
+  type_id: 0x39dda017
+}
+member {
+  id: 0x8dd9586f
+  name: "map"
+  type_id: 0x2f2111b8
+  offset: 192
+}
+member {
+  id: 0x8dda0968
+  name: "map"
+  type_id: 0x2c78dfde
+}
+member {
+  id: 0x8dda45f5
+  name: "map"
+  type_id: 0x2c3d808a
+  offset: 128
+}
+member {
+  id: 0x8ddf0186
+  name: "map"
+  type_id: 0x2974d0f5
+  offset: 64
+}
+member {
+  id: 0x8ded83fb
+  name: "map"
+  type_id: 0x1bf16028
+  offset: 1664
+}
+member {
+  id: 0x8df0341e
+  name: "map"
+  type_id: 0x064d6086
+  offset: 192
+}
+member {
+  id: 0x8df104fc
+  name: "map"
+  type_id: 0x0774d965
+  offset: 384
+}
+member {
+  id: 0x8df2c024
+  name: "map"
+  type_id: 0x04b193cc
+}
+member {
+  id: 0x8df87907
+  name: "map"
+  type_id: 0x0e017252
+  offset: 128
+}
+member {
+  id: 0x8df94d47
+  name: "map"
+  type_id: 0x0f3cf07d
+}
+member {
+  id: 0x8dffd04a
+  name: "map"
+  type_id: 0x09a83f1c
+  offset: 128
+}
+member {
+  id: 0x8dffdd71
+  name: "map"
+  type_id: 0x09a83f1c
+  offset: 2496
+}
+member {
+  id: 0x466a7233
+  name: "map_addr"
+  type_id: 0x2ca14b1f
+  offset: 192
+}
+member {
+  id: 0xd69d3cf7
+  name: "map_alloc"
+  type_id: 0x18a52576
+  offset: 64
+}
+member {
+  id: 0x5825c5a8
+  name: "map_alloc_check"
+  type_id: 0x2f645894
+}
+member {
+  id: 0x11e73392
+  name: "map_blocks"
+  type_id: 0x2c66e9eb
+  offset: 448
+}
+member {
+  id: 0x48e7145d
+  name: "map_btf_id"
+  type_id: 0x13580d6c
+  offset: 2496
+}
+member {
+  id: 0x42a51e44
+  name: "map_bus"
+  type_id: 0x1d46f863
+  offset: 128
+}
+member {
+  id: 0x7031173c
+  name: "map_check_btf"
+  type_id: 0x2e2d1155
+  offset: 1536
+}
+member {
+  id: 0xd73c42a5
+  name: "map_cnt"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x2d3a3a75
+  name: "map_count"
+  type_id: 0x6720d32f
+  offset: 704
+}
+member {
+  id: 0xf2793d4c
+  name: "map_delete_batch"
+  type_id: 0x2d8ced22
+  offset: 704
+}
+member {
+  id: 0x5429389b
+  name: "map_delete_elem"
+  type_id: 0x2d226196
+  offset: 192
+}
+member {
+  id: 0x5429bb30
+  name: "map_delete_elem"
+  type_id: 0x2da3a535
+  offset: 896
+}
+member {
+  id: 0xfe3c291d
+  name: "map_dir"
+  type_id: 0x23f09c34
+  offset: 8128
+}
+member {
+  id: 0x82e5306e
+  name: "map_direct_value_addr"
+  type_id: 0x2e334b9e
+  offset: 1792
+}
+member {
+  id: 0x9a5b94cd
+  name: "map_direct_value_meta"
+  type_id: 0x2e806df9
+  offset: 1856
+}
+member {
+  id: 0x8f91342a
+  name: "map_dma_buf"
+  type_id: 0x1bd7361e
+  offset: 320
+}
+member {
+  id: 0x6288b972
+  name: "map_dmabuf"
+  type_id: 0x2c7bd73f
+  offset: 576
+}
+member {
+  id: 0x308dee6b
+  name: "map_event"
+  type_id: 0x2c2ce191
+  offset: 3264
+}
+member {
+  id: 0x3d93c0fb
+  name: "map_extra"
+  type_id: 0x92233392
+  offset: 320
+}
+member {
+  id: 0x3dec1d60
+  name: "map_extra"
+  type_id: 0xedf277ba
+  offset: 512
+}
+member {
+  id: 0x5a6010b6
+  name: "map_fd"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x5a60146f
+  name: "map_fd"
+  type_id: 0xe62ebf07
+  offset: 288
+}
+member {
+  id: 0x5a601d8d
+  name: "map_fd"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xa30896fc
+  name: "map_fd_get_ptr"
+  type_id: 0x1f601480
+  offset: 1216
+}
+member {
+  id: 0xe2bb8994
+  name: "map_fd_put_ptr"
+  type_id: 0x0f3dfb90
+  offset: 1280
+}
+member {
+  id: 0x37f6a70f
+  name: "map_fd_sys_lookup_elem"
+  type_id: 0x1a65e52c
+  offset: 1408
+}
+member {
+  id: 0x654f3c41
+  name: "map_flags"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0x65601285
+  name: "map_flags"
+  type_id: 0xc9082b19
+  offset: 384
+}
+member {
+  id: 0x0ca92364
+  name: "map_for_each_callback"
+  type_id: 0x2d63ff5b
+  offset: 2432
+}
+member {
+  id: 0xce2175fc
+  name: "map_free"
+  type_id: 0x0efd34ff
+  offset: 192
+}
+member {
+  id: 0x67a9878d
+  name: "map_gen_lookup"
+  type_id: 0x2db82df0
+  offset: 1344
+}
+member {
+  id: 0x0a3d6845
+  name: "map_get_next_key"
+  type_id: 0x2d23ea40
+}
+member {
+  id: 0x0a3de92a
+  name: "map_get_next_key"
+  type_id: 0x2da22ee3
+  offset: 256
+}
+member {
+  id: 0x86c79331
+  name: "map_id"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xa32be5db
+  name: "map_ifindex"
+  type_id: 0xe62ebf07
+  offset: 352
+}
+member {
+  id: 0x7615c958
+  name: "map_index"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x851eba8c
+  name: "map_irq"
+  type_id: 0x2e6f560a
+  offset: 7936
+}
+member {
+  id: 0x1d742d06
+  name: "map_key_state"
+  type_id: 0x92233392
+  offset: 192
+}
+member {
+  id: 0xa3efc666
+  name: "map_local_storage_charge"
+  type_id: 0x2c1d5295
+  offset: 2048
+}
+member {
+  id: 0xbf6003f5
+  name: "map_local_storage_uncharge"
+  type_id: 0x0f5b7e3a
+  offset: 2112
+}
+member {
+  id: 0xb745ff49
+  name: "map_lookup_and_delete_batch"
+  type_id: 0x2d8ced22
+  offset: 576
+}
+member {
+  id: 0xe1887ebd
+  name: "map_lookup_and_delete_elem"
+  type_id: 0x2da2bcc0
+  offset: 512
+}
+member {
+  id: 0xa57744be
+  name: "map_lookup_batch"
+  type_id: 0x2d8ced22
+  offset: 448
+}
+member {
+  id: 0x64dd4a18
+  name: "map_lookup_elem"
+  type_id: 0x2d23ea40
+  offset: 64
+}
+member {
+  id: 0x64ef038c
+  name: "map_lookup_elem"
+  type_id: 0x1f663182
+  offset: 768
+}
+member {
+  id: 0x89327ca9
+  name: "map_lookup_elem_sys_only"
+  type_id: 0x1f663182
+  offset: 384
+}
+member {
+  id: 0x7eb83045
+  name: "map_lookup_percpu_elem"
+  type_id: 0x1f6aa100
+  offset: 1152
+}
+member {
+  id: 0xe6ba1ec3
+  name: "map_meta_equal"
+  type_id: 0x36e6f1cb
+  offset: 2304
+}
+member {
+  id: 0xa7043c82
+  name: "map_mmap"
+  type_id: 0x2db10b11
+  offset: 1920
+}
+member {
+  id: 0xd08a2381
+  name: "map_module_page"
+  type_id: 0x24cb72c4
+  offset: 128
+}
+member {
+  id: 0xf06a5118
+  name: "map_msi_irq"
+  type_id: 0x2ca14096
+  offset: 640
+}
+member {
+  id: 0xc925f95e
+  name: "map_name"
+  type_id: 0x42201dce
+  offset: 224
+}
+member {
+  id: 0xc959ce19
+  name: "map_name"
+  type_id: 0x3e10b518
+  offset: 7936
+}
+member {
+  id: 0x847eff97
+  name: "map_nr"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x503b50fe
+  name: "map_off"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0xa075dadf
+  name: "map_owner_storage_ptr"
+  type_id: 0x11bcc59d
+  offset: 2176
+}
+member {
+  id: 0x8b540a00
+  name: "map_page"
+  type_id: 0x25b78558
+  offset: 576
+}
+member {
+  id: 0xa60cf7ca
+  name: "map_pages"
+  type_id: 0x2c78d676
+  offset: 64
+}
+member {
+  id: 0xa60faa4e
+  name: "map_pages"
+  type_id: 0x2f211810
+  offset: 256
+}
+member {
+  id: 0xa61995ce
+  name: "map_pages"
+  type_id: 0x39194436
+  offset: 448
+}
+member {
+  id: 0x5e840430
+  name: "map_peek_elem"
+  type_id: 0x2da3a535
+  offset: 1088
+}
+member {
+  id: 0x608b4aa4
+  name: "map_poke_run"
+  type_id: 0x0e37377c
+  offset: 1728
+}
+member {
+  id: 0xfca1806f
+  name: "map_poke_track"
+  type_id: 0x2dbdf774
+  offset: 1600
+}
+member {
+  id: 0xad0fb3cf
+  name: "map_poke_untrack"
+  type_id: 0x0efbdbdb
+  offset: 1664
+}
+member {
+  id: 0x5171a873
+  name: "map_poll"
+  type_id: 0x020c1a12
+  offset: 1984
+}
+member {
+  id: 0xa07ebcd2
+  name: "map_pop_elem"
+  type_id: 0x2da3a535
+  offset: 1024
+}
+member {
+  id: 0x587d59bf
+  name: "map_ptr"
+  type_id: 0x04b193cc
+}
+member {
+  id: 0x22bad2b6
+  name: "map_ptr_state"
+  type_id: 0x33756485
+}
+member {
+  id: 0x1cba89be
+  name: "map_push_elem"
+  type_id: 0x2daa8706
+  offset: 960
+}
+member {
+  id: 0x630039a2
+  name: "map_queues"
+  type_id: 0x0fcb861f
+  offset: 1472
+}
+member {
+  id: 0x63038849
+  name: "map_queues"
+  type_id: 0x0c7a2294
+  offset: 1024
+}
+member {
+  id: 0x6dd0c702
+  name: "map_redirect"
+  type_id: 0x2d7b3248
+  offset: 2240
+}
+member {
+  id: 0xc2f40ee3
+  name: "map_release"
+  type_id: 0x0ee5de95
+  offset: 128
+}
+member {
+  id: 0x8b43172f
+  name: "map_release_uref"
+  type_id: 0x0efd34ff
+  offset: 320
+}
+member {
+  id: 0x7cbb756d
+  name: "map_resource"
+  type_id: 0x250095e2
+  offset: 832
+}
+member {
+  id: 0x9adecb68
+  name: "map_seq_show_elem"
+  type_id: 0x0ee5efc4
+  offset: 1472
+}
+member {
+  id: 0x882c6f79
+  name: "map_set_for_each_callback_args"
+  type_id: 0x2c7f05e6
+  offset: 2368
+}
+member {
+  id: 0x69fdbcf4
+  name: "map_sg"
+  type_id: 0x2dc2fdbe
+  offset: 704
+}
+member {
+  id: 0x2a09347d
+  name: "map_type"
+  type_id: 0x6e73208e
+  offset: 192
+}
+member {
+  id: 0x2a81612b
+  name: "map_type"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x8fb76e31
+  name: "map_uid"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0xb341c14e
+  name: "map_update_batch"
+  type_id: 0x2d8ced22
+  offset: 640
+}
+member {
+  id: 0xee2f1f12
+  name: "map_update_elem"
+  type_id: 0x2d237863
+  offset: 128
+}
+member {
+  id: 0xee2f94ae
+  name: "map_update_elem"
+  type_id: 0x2da2bcc0
+  offset: 832
+}
+member {
+  id: 0x75ed4da2
+  name: "map_urb_for_dma"
+  type_id: 0x2fa9a916
+  offset: 896
+}
+member {
+  id: 0x8ca6b602
+  name: "map_voltage"
+  type_id: 0x2d66d7c6
+  offset: 128
+}
+member {
+  id: 0x20398c3a
+  name: "map_wc"
+  type_id: 0x6d7f5ff6
+  offset: 4064
+}
+member {
+  id: 0x7d0883dd
+  name: "mapbase"
+  type_id: 0x9565759f
+  offset: 2560
+}
+member {
+  id: 0x7d203628
+  name: "mapbase"
+  type_id: 0xbdd18903
+  offset: 256
+}
+member {
+  id: 0x77124dee
+  name: "mapcnt"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x1da3c3d8
+  name: "mapcount"
+  type_id: 0x4585663f
+  offset: 352
+}
+member {
+  id: 0x5d0a0efb
+  name: "mapping"
+  type_id: 0xe09ad666
+  offset: 9408
+}
+member {
+  id: 0x5dcf7d96
+  name: "mapping"
+  type_id: 0x25e982e5
+}
+member {
+  id: 0x5dedc95b
+  name: "mapping"
+  type_id: 0x0759ae47
+  offset: 64
+}
+member {
+  id: 0x5dff125e
+  name: "mapping"
+  type_id: 0x1582ab06
+  offset: 64
+}
+member {
+  id: 0x5dff1e76
+  name: "mapping"
+  type_id: 0x1582ab06
+  offset: 192
+}
+member {
+  id: 0x5dff1f7d
+  name: "mapping"
+  type_id: 0x1582ab06
+  offset: 128
+}
+member {
+  id: 0x0e1ab1dc
+  name: "mapping_list"
+  type_id: 0xd3c80119
+  offset: 7808
+}
+member {
+  id: 0xa70e9634
+  name: "mapping_maxage"
+  type_id: 0xc9082b19
+  offset: 3008
+}
+member {
+  id: 0x4971df2a
+  name: "mappings"
+  type_id: 0xd3c80119
+  offset: 8640
+}
+member {
+  id: 0xb0b6f056
+  name: "maps"
+  type_id: 0xad7c0a89
+  offset: 64
+}
+member {
+  id: 0xbba253c6
+  name: "mapsize"
+  type_id: 0x9565759f
+  offset: 2624
+}
+member {
+  id: 0xc890510d
+  name: "margins"
+  type_id: 0x39d78d65
+  offset: 32
+}
+member {
+  id: 0xc8c4fee8
+  name: "margins"
+  type_id: 0x6d7f5ff6
+  offset: 440
+}
+member {
+  id: 0x811c0614
+  name: "mark"
+  type_id: 0x43a4c863
+  offset: 1280
+}
+member {
+  id: 0x811c0776
+  name: "mark"
+  type_id: 0x43a4c863
+  offset: 1024
+}
+member {
+  id: 0x816a53f4
+  name: "mark"
+  type_id: 0x35fdd62d
+  offset: 1344
+}
+member {
+  id: 0x8173836f
+  name: "mark"
+  type_id: 0x2c2f07d2
+  offset: 192
+}
+member {
+  id: 0x8196a443
+  name: "mark"
+  type_id: 0xc9082b19
+  offset: 192
+}
+member {
+  id: 0x8196a86b
+  name: "mark"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x8196ac8a
+  name: "mark"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x81b98a1e
+  name: "mark"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x31ed78a0
+  name: "mark_compr_open"
+  type_id: 0x1aeeade4
+  offset: 2624
+}
+member {
+  id: 0x5b36107b
+  name: "mark_compr_startup"
+  type_id: 0x1aeeade4
+  offset: 1152
+}
+member {
+  id: 0x5b361080
+  name: "mark_compr_startup"
+  type_id: 0x1aeeade4
+  offset: 14208
+}
+member {
+  id: 0x0543a980
+  name: "mark_dirty"
+  type_id: 0x2e103219
+  offset: 320
+}
+member {
+  id: 0xde7d86ab
+  name: "mark_hw_params"
+  type_id: 0x14b9453b
+  offset: 14080
+}
+member {
+  id: 0xde7d8d5f
+  name: "mark_hw_params"
+  type_id: 0x14b9453b
+  offset: 1024
+}
+member {
+  id: 0xde7d8eb9
+  name: "mark_hw_params"
+  type_id: 0x14b9453b
+  offset: 2496
+}
+member {
+  id: 0xa37cfe78
+  name: "mark_mask"
+  type_id: 0xc9082b19
+  offset: 224
+}
+member {
+  id: 0x5c4657b0
+  name: "mark_module"
+  type_id: 0x18bd6530
+  offset: 2368
+}
+member {
+  id: 0x67269651
+  name: "mark_mutex"
+  type_id: 0xa7c362b0
+  offset: 640
+}
+member {
+  id: 0x27aa812a
+  name: "mark_open"
+  type_id: 0x14b9453b
+  offset: 2432
+}
+member {
+  id: 0xb16d0120
+  name: "mark_pm"
+  type_id: 0x18bd6530
+  offset: 2688
+}
+member {
+  id: 0xc9e955a1
+  name: "mark_startup"
+  type_id: 0x14b9453b
+  offset: 14016
+}
+member {
+  id: 0xc9e95a8c
+  name: "mark_startup"
+  type_id: 0x14b9453b
+  offset: 960
+}
+member {
+  id: 0x63905310
+  name: "mark_trigger"
+  type_id: 0x14b9453b
+  offset: 2560
+}
+member {
+  id: 0x63905e22
+  name: "mark_trigger"
+  type_id: 0x14b9453b
+  offset: 14144
+}
+member {
+  id: 0x63905fc4
+  name: "mark_trigger"
+  type_id: 0x14b9453b
+  offset: 1088
+}
+member {
+  id: 0xcc94e530
+  name: "mark_unstable"
+  type_id: 0x0ff0075d
+  offset: 1024
+}
+member {
+  id: 0xbc8db669
+  name: "marker"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x2236c9c7
+  name: "marks"
+  type_id: 0x3c80dade
+}
+member {
+  id: 0x22e8bef2
+  name: "marks"
+  type_id: 0xe2f7ef45
+}
+member {
+  id: 0xcf70053c
+  name: "marks_list"
+  type_id: 0xd3c80119
+  offset: 1088
+}
+member {
+  id: 0xa0e63886
+  name: "mas_flags"
+  type_id: 0x5d8155a5
+  offset: 464
+}
+member {
+  id: 0xa800158b
+  name: "mask"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0xa8001c49
+  name: "mask"
+  type_id: 0x33756485
+}
+member {
+  id: 0xa80c68a8
+  name: "mask"
+  type_id: 0x3f0185ef
+}
+member {
+  id: 0xa80d7d79
+  name: "mask"
+  type_id: 0x3e10b518
+  offset: 64
+}
+member {
+  id: 0xa81cfee6
+  name: "mask"
+  type_id: 0x2f932a1e
+  offset: 64
+}
+member {
+  id: 0xa82242cc
+  name: "mask"
+  type_id: 0x112f0014
+  offset: 64
+}
+member {
+  id: 0xa82734f8
+  name: "mask"
+  type_id: 0x145934af
+  offset: 64
+}
+member {
+  id: 0xa82bb31e
+  name: "mask"
+  type_id: 0x18ded2d3
+  offset: 64
+}
+member {
+  id: 0xa82bd0a9
+  name: "mask"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0xa82f6dfe
+  name: "mask"
+  type_id: 0x1c04d361
+}
+member {
+  id: 0xa838c0e7
+  name: "mask"
+  type_id: 0x0baa70a7
+  offset: 832
+}
+member {
+  id: 0xa854407d
+  name: "mask"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0xa8544137
+  name: "mask"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0xa876e170
+  name: "mask"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xa876e589
+  name: "mask"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0xa876e5c8
+  name: "mask"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0xa876e8aa
+  name: "mask"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xa876ea32
+  name: "mask"
+  type_id: 0x4585663f
+  offset: 640
+}
+member {
+  id: 0xa876ec4b
+  name: "mask"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xa878d68f
+  name: "mask"
+  type_id: 0x4bb6d015
+  offset: 576
+}
+member {
+  id: 0xa88a2500
+  name: "mask"
+  type_id: 0xb94e10c7
+  offset: 704
+}
+member {
+  id: 0xa88d6ff6
+  name: "mask"
+  type_id: 0xbe0f19dc
+  offset: 128
+}
+member {
+  id: 0xa8a142d7
+  name: "mask"
+  type_id: 0x92233392
+  offset: 192
+}
+member {
+  id: 0xa8a143dc
+  name: "mask"
+  type_id: 0x92233392
+  offset: 128
+}
+member {
+  id: 0xa8a14eff
+  name: "mask"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0xa8a220fd
+  name: "mask"
+  type_id: 0x914dbfdc
+  offset: 208
+}
+member {
+  id: 0xa8aaa76c
+  name: "mask"
+  type_id: 0x99caa0ae
+  offset: 64
+}
+member {
+  id: 0xa8d54792
+  name: "mask"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xa8db62a4
+  name: "mask"
+  type_id: 0xe8034002
+  offset: 192
+}
+member {
+  id: 0xa8db6756
+  name: "mask"
+  type_id: 0xe8034002
+  offset: 32
+}
+member {
+  id: 0xa8dd3aca
+  name: "mask"
+  type_id: 0xee53e764
+}
+member {
+  id: 0xa8fa6106
+  name: "mask"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xa8fa65e7
+  name: "mask"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0xa8fa66c1
+  name: "mask"
+  type_id: 0xc9082b19
+  offset: 320
+}
+member {
+  id: 0xa8fa68c4
+  name: "mask"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0xa8fa6c3d
+  name: "mask"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0xa8fac100
+  name: "mask"
+  type_id: 0xc9a82d21
+}
+member {
+  id: 0x809aefb9
+  name: "mask2"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0xbaacb69d
+  name: "mask_base"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0xbaacb95c
+  name: "mask_base"
+  type_id: 0x4585663f
+  offset: 2816
+}
+member {
+  id: 0xbaf18e35
+  name: "mask_base"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0xcec853a6
+  name: "mask_buf"
+  type_id: 0x1bf16028
+  offset: 3072
+}
+member {
+  id: 0xe7d5bf8a
+  name: "mask_buf_def"
+  type_id: 0x1bf16028
+  offset: 3136
+}
+member {
+  id: 0x6d4314bc
+  name: "mask_cache"
+  type_id: 0x38d23361
+  offset: 2688
+}
+member {
+  id: 0x6db2cced
+  name: "mask_cache"
+  type_id: 0xc9082b19
+  offset: 448
+}
+member {
+  id: 0x04de45d5
+  name: "mask_cache_priv"
+  type_id: 0xc9082b19
+  offset: 2656
+}
+member {
+  id: 0xf31a8952
+  name: "mask_invert"
+  type_id: 0x4585663f
+  offset: 609
+  bitsize: 1
+}
+member {
+  id: 0xb58ce2f1
+  name: "mask_pos"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x006218db
+  name: "mask_separate"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xa35b6145
+  name: "mask_shared_by_all"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0x4ab66ba1
+  name: "mask_shared_by_dir"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0x925b0a11
+  name: "mask_shared_by_type"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0xc9b4d99c
+  name: "mask_unmask_non_inverted"
+  type_id: 0x4585663f
+  offset: 610
+  bitsize: 1
+}
+member {
+  id: 0x5229ac0d
+  name: "maskclear"
+  type_id: 0x4585663f
+  offset: 480
+}
+member {
+  id: 0x5e4bd206
+  name: "masked_status"
+  type_id: 0x5d8155a5
+  offset: 520
+}
+member {
+  id: 0x8d60f2c2
+  name: "masklength"
+  type_id: 0x4585663f
+  offset: 7936
+}
+member {
+  id: 0x91c8648e
+  name: "masks"
+  type_id: 0x10837250
+  offset: 32
+}
+member {
+  id: 0x91c869b5
+  name: "masks"
+  type_id: 0x10837250
+}
+member {
+  id: 0x882f9636
+  name: "maskset"
+  type_id: 0x4585663f
+  offset: 512
+}
+member {
+  id: 0x3a3cfb73
+  name: "master"
+  type_id: 0x42201dce
+  offset: 32
+}
+member {
+  id: 0x3a44545a
+  name: "master"
+  type_id: 0x3a88a91e
+  offset: 896
+}
+member {
+  id: 0x3a445881
+  name: "master"
+  type_id: 0x3a88a91e
+  offset: 1280
+}
+member {
+  id: 0x3a798240
+  name: "master"
+  type_id: 0x0756289d
+  offset: 704
+}
+member {
+  id: 0x3a79849c
+  name: "master"
+  type_id: 0x0756289d
+  offset: 64
+}
+member {
+  id: 0x3a7c3290
+  name: "master"
+  type_id: 0x02ed0755
+  offset: 128
+}
+member {
+  id: 0x3a7e0a8f
+  name: "master"
+  type_id: 0x00dd92af
+  offset: 7360
+}
+member {
+  id: 0x410178d8
+  name: "master_drop"
+  type_id: 0x0d1480d6
+  offset: 448
+}
+member {
+  id: 0xf0c0d779
+  name: "master_key_descriptor"
+  type_id: 0xc8c766a0
+  offset: 32
+}
+member {
+  id: 0xcf7375db
+  name: "master_key_identifier"
+  type_id: 0x60ca2c23
+  offset: 64
+}
+member {
+  id: 0xdb0dc0ca
+  name: "master_lookup_lock"
+  type_id: 0xf313e71a
+  offset: 128
+}
+member {
+  id: 0xb1bbcb69
+  name: "master_mutex"
+  type_id: 0xa7c362b0
+  offset: 1344
+}
+member {
+  id: 0x8a0f4d2e
+  name: "master_priv"
+  type_id: 0x18bd6530
+  offset: 192
+}
+member {
+  id: 0xddf1118b
+  name: "master_set"
+  type_id: 0x0d125723
+  offset: 384
+}
+member {
+  id: 0x62eb7e70
+  name: "master_slave_cfg"
+  type_id: 0xb3e7bac9
+  offset: 136
+}
+member {
+  id: 0xe4bfcb6e
+  name: "master_slave_get"
+  type_id: 0x295c7202
+  offset: 9568
+}
+member {
+  id: 0x05a96c02
+  name: "master_slave_set"
+  type_id: 0x295c7202
+  offset: 9576
+}
+member {
+  id: 0x2724edb5
+  name: "master_slave_state"
+  type_id: 0xb3e7bac9
+  offset: 144
+}
+member {
+  id: 0x27be585f
+  name: "master_slave_state"
+  type_id: 0x295c7202
+  offset: 9584
+}
+member {
+  id: 0x80f1dc21
+  name: "master_xfer"
+  type_id: 0x2fb00ad9
+}
+member {
+  id: 0x9abcfab8
+  name: "master_xfer_atomic"
+  type_id: 0x2fb00ad9
+  offset: 64
+}
+member {
+  id: 0xe60c982e
+  name: "match"
+  type_id: 0x2f9a9ee6
+  offset: 192
+}
+member {
+  id: 0xe60e74d4
+  name: "match"
+  type_id: 0x2d78d46f
+  offset: 640
+}
+member {
+  id: 0xe60ee663
+  name: "match"
+  type_id: 0x2de702ff
+  offset: 512
+}
+member {
+  id: 0xe60eec02
+  name: "match"
+  type_id: 0x2de7e95d
+  offset: 384
+}
+member {
+  id: 0xe60f4d61
+  name: "match"
+  type_id: 0x2c47183e
+}
+member {
+  id: 0xe60fde20
+  name: "match"
+  type_id: 0x2cdf41d9
+  offset: 512
+}
+member {
+  id: 0xe61687a2
+  name: "match"
+  type_id: 0x358a1c52
+  offset: 320
+}
+member {
+  id: 0xe6179934
+  name: "match"
+  type_id: 0x3493e68d
+  offset: 256
+}
+member {
+  id: 0xe62639eb
+  name: "match"
+  type_id: 0x0534557d
+  offset: 320
+}
+member {
+  id: 0xe649caac
+  name: "match"
+  type_id: 0x6ac0d553
+}
+member {
+  id: 0xe66e5220
+  name: "match"
+  type_id: 0x4d5cb8cd
+  offset: 64
+}
+member {
+  id: 0xe6afb6aa
+  name: "match"
+  type_id: 0x8cb291cd
+  offset: 2112
+}
+member {
+  id: 0xb97cb588
+  name: "match_driver"
+  type_id: 0x6d7f5ff6
+  offset: 22080
+}
+member {
+  id: 0x5dc4030f
+  name: "match_ep"
+  type_id: 0x22329a57
+  offset: 832
+}
+member {
+  id: 0xe5eb8f2c
+  name: "match_existing_only"
+  type_id: 0x4585663f
+  offset: 2048
+  bitsize: 1
+}
+member {
+  id: 0x4e3deef2
+  name: "match_flags"
+  type_id: 0xe8034002
+}
+member {
+  id: 0x4e660a08
+  name: "match_flags"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0x651ca61e
+  name: "match_free"
+  type_id: 0x0d5e3b67
+  offset: 576
+}
+member {
+  id: 0xefcc9ace
+  name: "match_phy_device"
+  type_id: 0x2ee76b64
+  offset: 2688
+}
+member {
+  id: 0x587bfdf6
+  name: "match_preparse"
+  type_id: 0x2e1817c8
+  offset: 512
+}
+member {
+  id: 0x43973fdd
+  name: "match_sets"
+  type_id: 0x1fd779eb
+  offset: 448
+}
+member {
+  id: 0xba3ec40f
+  name: "match_type"
+  type_id: 0xa422cab0
+}
+member {
+  id: 0xbaf9b8d3
+  name: "match_type"
+  type_id: 0x635e163e
+}
+member {
+  id: 0xa0122c22
+  name: "matches"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0xff2c408e
+  name: "matches_delta"
+  type_id: 0x33756485
+  offset: 960
+}
+member {
+  id: 0xcf872d8f
+  name: "mattr"
+  type_id: 0x5f7bacbb
+}
+member {
+  id: 0x970a0d3d
+  name: "max"
+  type_id: 0xfc0e1dbd
+  offset: 64
+}
+member {
+  id: 0x973f02d1
+  name: "max"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x973f0b0b
+  name: "max"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x973f0fea
+  name: "max"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x9758d835
+  name: "max"
+  type_id: 0xaedb15fc
+  offset: 64
+}
+member {
+  id: 0x97642013
+  name: "max"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0x97642d30
+  name: "max"
+  type_id: 0x92233392
+  offset: 128
+}
+member {
+  id: 0x97674a7e
+  name: "max"
+  type_id: 0x914dbfdc
+}
+member {
+  id: 0x97b3820c
+  name: "max"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0x97b38255
+  name: "max"
+  type_id: 0x4585663f
+  offset: 608
+}
+member {
+  id: 0x97b382a7
+  name: "max"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x97b385d0
+  name: "max"
+  type_id: 0x4585663f
+  offset: 448
+}
+member {
+  id: 0x97b38f9c
+  name: "max"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x97c57061
+  name: "max"
+  type_id: 0x33756485
+  offset: 1216
+}
+member {
+  id: 0x97c57562
+  name: "max"
+  type_id: 0x33756485
+  offset: 320
+}
+member {
+  id: 0x97cf442e
+  name: "max"
+  type_id: 0x39470e64
+  offset: 64
+}
+member {
+  id: 0x97d809c2
+  name: "max"
+  type_id: 0x2e0f9112
+  offset: 384
+}
+member {
+  id: 0x97d80cb1
+  name: "max"
+  type_id: 0x2e0f9112
+  offset: 64
+}
+member {
+  id: 0x97dfb679
+  name: "max"
+  type_id: 0x29bf06ba
+  offset: 16
+}
+member {
+  id: 0xbe6f6d98
+  name: "max32_alloc_size"
+  type_id: 0x33756485
+  offset: 448
+}
+member {
+  id: 0xa067c94f
+  name: "max_VF_buses"
+  type_id: 0x295c7202
+  offset: 264
+}
+member {
+  id: 0xf69ce7fc
+  name: "max_acl_mac_addrs"
+  type_id: 0x914dbfdc
+  offset: 784
+}
+member {
+  id: 0xb7493031
+  name: "max_active"
+  type_id: 0x6720d32f
+  offset: 768
+}
+member {
+  id: 0xb7bf5f55
+  name: "max_active"
+  type_id: 0x914dbfdc
+  offset: 896
+}
+member {
+  id: 0x85f00a8d
+  name: "max_active_zones"
+  type_id: 0x4585663f
+  offset: 3968
+}
+member {
+  id: 0xf8eed16f
+  name: "max_addresses"
+  type_id: 0x0faae5b1
+  offset: 608
+}
+member {
+  id: 0x663e1f11
+  name: "max_adj"
+  type_id: 0xd41e888f
+  offset: 320
+}
+member {
+  id: 0xacd234b7
+  name: "max_adma"
+  type_id: 0x6720d32f
+  offset: 7488
+}
+member {
+  id: 0xc43dcec2
+  name: "max_antenna_gain"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xc493eff8
+  name: "max_antenna_gain"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x22bba09d
+  name: "max_ap_assoc_sta"
+  type_id: 0x914dbfdc
+  offset: 11136
+}
+member {
+  id: 0xb580f3da
+  name: "max_bandwidth_khz"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0xc58e34e8
+  name: "max_be"
+  type_id: 0x295c7202
+  offset: 648
+}
+member {
+  id: 0x907cd29e
+  name: "max_bit_rate"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xf91efeea
+  name: "max_blk_count"
+  type_id: 0x4585663f
+  offset: 8224
+}
+member {
+  id: 0x7b0a1115
+  name: "max_blk_size"
+  type_id: 0x4585663f
+  offset: 8192
+}
+member {
+  id: 0x7ba79d09
+  name: "max_blk_size"
+  type_id: 0xe8034002
+  offset: 32
+}
+member {
+  id: 0xdde27e0a
+  name: "max_blksize"
+  type_id: 0x4585663f
+  offset: 7520
+}
+member {
+  id: 0x1524c99a
+  name: "max_bpc"
+  type_id: 0x295c7202
+  offset: 1096
+}
+member {
+  id: 0xe37d9637
+  name: "max_bpc_property"
+  type_id: 0x2a670b41
+  offset: 11840
+}
+member {
+  id: 0x9a514019
+  name: "max_brightness"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x9a73e114
+  name: "max_brightness"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x9c5d053e
+  name: "max_burst"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0x9c5d0a81
+  name: "max_burst"
+  type_id: 0xc9082b19
+  offset: 1280
+}
+member {
+  id: 0xe0986dfe
+  name: "max_bursts_exponent"
+  type_id: 0x29b77961
+  offset: 64
+}
+member {
+  id: 0x9db731a9
+  name: "max_bus_speed"
+  type_id: 0x5d8155a5
+  offset: 2000
+}
+member {
+  id: 0xcce2bbdb
+  name: "max_busy_timeout"
+  type_id: 0x4585663f
+  offset: 8256
+}
+member {
+  id: 0x38693b32
+  name: "max_capacity"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0x3fd19938
+  name: "max_ch"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x98db7a32
+  name: "max_channel"
+  type_id: 0x4585663f
+  offset: 3712
+}
+member {
+  id: 0x3d071253
+  name: "max_channels"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0xdf978ca6
+  name: "max_clk"
+  type_id: 0x4585663f
+  offset: 6112
+}
+member {
+  id: 0x13854277
+  name: "max_cll"
+  type_id: 0x914dbfdc
+  offset: 288
+}
+member {
+  id: 0x13fc06ef
+  name: "max_cll"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0x131f15d8
+  name: "max_cmd_len"
+  type_id: 0xc93e017b
+  offset: 3872
+}
+member {
+  id: 0xeeb21770
+  name: "max_comb_1st_msg_len"
+  type_id: 0x914dbfdc
+  offset: 128
+}
+member {
+  id: 0x1e8b2d23
+  name: "max_comb_2nd_msg_len"
+  type_id: 0x914dbfdc
+  offset: 144
+}
+member {
+  id: 0xbef71264
+  name: "max_combined"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0xa015bb40
+  name: "max_content_light_level"
+  type_id: 0xe8034002
+}
+member {
+  id: 0xe360cb00
+  name: "max_cpu_capacity"
+  type_id: 0x33756485
+  offset: 14464
+}
+member {
+  id: 0x75f37536
+  name: "max_csma_backoffs"
+  type_id: 0x295c7202
+  offset: 1192
+}
+member {
+  id: 0x4e469886
+  name: "max_ctx_offset"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0x2944542c
+  name: "max_curr"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0xf98adbb0
+  name: "max_current_180"
+  type_id: 0xc9082b19
+  offset: 7936
+}
+member {
+  id: 0xf2698208
+  name: "max_current_300"
+  type_id: 0xc9082b19
+  offset: 7904
+}
+member {
+  id: 0xfa6028d0
+  name: "max_current_330"
+  type_id: 0xc9082b19
+  offset: 7872
+}
+member {
+  id: 0x2c58cf12
+  name: "max_cycles"
+  type_id: 0x92233392
+  offset: 320
+}
+member {
+  id: 0xfd797107
+  name: "max_data_retry_count"
+  type_id: 0x295c7202
+  offset: 11712
+}
+member {
+  id: 0xeacdd7c2
+  name: "max_data_size"
+  type_id: 0xe8034002
+  offset: 64
+}
+member {
+  id: 0x6252d912
+  name: "max_dec_size"
+  type_id: 0xe8034002
+  offset: 112
+}
+member {
+  id: 0x1046ca64
+  name: "max_delay"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x34a5c674
+  name: "max_delta_ns"
+  type_id: 0x92233392
+  offset: 256
+}
+member {
+  id: 0x049620cf
+  name: "max_delta_ticks"
+  type_id: 0x33756485
+  offset: 1152
+}
+member {
+  id: 0xcceb4c50
+  name: "max_depth"
+  type_id: 0x6720d32f
+  offset: 1952
+}
+member {
+  id: 0x5f148ea6
+  name: "max_descendants"
+  type_id: 0x6720d32f
+  offset: 2048
+}
+member {
+  id: 0x4912b632
+  name: "max_desync_factor"
+  type_id: 0x0faae5b1
+  offset: 576
+}
+member {
+  id: 0xf048880e
+  name: "max_dev_sectors"
+  type_id: 0x4585663f
+  offset: 224
+}
+member {
+  id: 0x3828b971
+  name: "max_device_blocked"
+  type_id: 0x4585663f
+  offset: 3584
+}
+member {
+  id: 0x6108ac87
+  name: "max_discard_sectors"
+  type_id: 0x4585663f
+  offset: 512
+}
+member {
+  id: 0x89074eed
+  name: "max_discard_segments"
+  type_id: 0xc93e017b
+  offset: 800
+}
+member {
+  id: 0x6b2c9d3a
+  name: "max_display_mastering_luminance"
+  type_id: 0x914dbfdc
+  offset: 256
+}
+member {
+  id: 0x6b5bf753
+  name: "max_display_mastering_luminance"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0xacae28b2
+  name: "max_dist"
+  type_id: 0x6720d32f
+  offset: 160
+}
+member {
+  id: 0xb37d3271
+  name: "max_dma_len"
+  type_id: 0xf435685e
+  offset: 10944
+}
+member {
+  id: 0xaaaeb60b
+  name: "max_dsc_bpp"
+  type_id: 0xc9082b19
+  offset: 1440
+}
+member {
+  id: 0x4c5d384d
+  name: "max_dst_opts_cnt"
+  type_id: 0x6720d32f
+  offset: 1152
+}
+member {
+  id: 0x65cc59ba
+  name: "max_dst_opts_len"
+  type_id: 0x6720d32f
+  offset: 1216
+}
+member {
+  id: 0x6b1c06e2
+  name: "max_dtr"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x6b1c0fe3
+  name: "max_dtr"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0x9a58e948
+  name: "max_dun_bytes_supported"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0x779a4cc8
+  name: "max_effects"
+  type_id: 0x6720d32f
+  offset: 960
+}
+member {
+  id: 0x5da37275
+  name: "max_eirp"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x152e11eb
+  name: "max_elems"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x8f1b54ca
+  name: "max_enc_key_size"
+  type_id: 0xb3e7bac9
+  offset: 6648
+}
+member {
+  id: 0x34fa575b
+  name: "max_enc_size"
+  type_id: 0xe8034002
+  offset: 96
+}
+member {
+  id: 0x6b512717
+  name: "max_entries"
+  type_id: 0xc9082b19
+  offset: 512
+}
+member {
+  id: 0x6b5128d6
+  name: "max_entries"
+  type_id: 0xc9082b19
+  offset: 288
+}
+member {
+  id: 0x6b7e0318
+  name: "max_entries"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x3accaf97
+  name: "max_esit_payload"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x17c52880
+  name: "max_events"
+  type_id: 0x4585663f
+  offset: 480
+}
+member {
+  id: 0x5d9d28b7
+  name: "max_expected"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x390f17cd
+  name: "max_fall"
+  type_id: 0xe8034002
+  offset: 32
+}
+member {
+  id: 0x39765c90
+  name: "max_fall"
+  type_id: 0x914dbfdc
+  offset: 304
+}
+member {
+  id: 0xbe09b3ed
+  name: "max_fds"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x5babec5a
+  name: "max_fences"
+  type_id: 0xc9082b19
+  offset: 160
+}
+member {
+  id: 0x5540483b
+  name: "max_fragment_size"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x0731cf62
+  name: "max_fragments"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0xf9dbc45e
+  name: "max_frame_bytes"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x366a2c9b
+  name: "max_frame_retries"
+  type_id: 0x29b77961
+  offset: 1208
+}
+member {
+  id: 0x96d82747
+  name: "max_frame_size"
+  type_id: 0xe8034002
+  offset: 64
+}
+member {
+  id: 0xa823d47e
+  name: "max_freq"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xa82dfb93
+  name: "max_freq"
+  type_id: 0x4ba02d1a
+  offset: 896
+}
+member {
+  id: 0x66685abe
+  name: "max_freq_notifiers"
+  type_id: 0x9249a64d
+  offset: 1216
+}
+member {
+  id: 0x84cadfba
+  name: "max_freq_req"
+  type_id: 0x29082583
+  offset: 3136
+}
+member {
+  id: 0x8f8b88b4
+  name: "max_frl_rate_per_lane"
+  type_id: 0x295c7202
+  offset: 104
+}
+member {
+  id: 0x8f8b8e42
+  name: "max_frl_rate_per_lane"
+  type_id: 0x295c7202
+  offset: 648
+}
+member {
+  id: 0xc02088be
+  name: "max_ftms_per_burst"
+  type_id: 0x295c7202
+  offset: 72
+}
+member {
+  id: 0x49f5343b
+  name: "max_functions"
+  type_id: 0x295c7202
+  offset: 7648
+}
+member {
+  id: 0xf60ae606
+  name: "max_halt_poll_ns"
+  type_id: 0x4585663f
+  offset: 34304
+}
+member {
+  id: 0x7e72c641
+  name: "max_hang_time"
+  type_id: 0x4585663f
+  offset: 224
+}
+member {
+  id: 0x02f73413
+  name: "max_hbh_opts_cnt"
+  type_id: 0x6720d32f
+  offset: 1184
+}
+member {
+  id: 0x006140ef
+  name: "max_hbh_opts_len"
+  type_id: 0x6720d32f
+  offset: 1248
+}
+member {
+  id: 0x25d8bb1e
+  name: "max_header"
+  type_id: 0x6720d32f
+  offset: 2560
+}
+member {
+  id: 0x93570275
+  name: "max_height"
+  type_id: 0xe62ebf07
+  offset: 192
+}
+member {
+  id: 0x9357033f
+  name: "max_height"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x9357037e
+  name: "max_height"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0x93d608f3
+  name: "max_height"
+  type_id: 0x6720d32f
+  offset: 4064
+}
+member {
+  id: 0xa6087b15
+  name: "max_hfreq_khz"
+  type_id: 0x295c7202
+  offset: 24
+}
+member {
+  id: 0x51e36085
+  name: "max_host_blocked"
+  type_id: 0x4585663f
+  offset: 4672
+}
+member {
+  id: 0x51e36932
+  name: "max_host_blocked"
+  type_id: 0x4585663f
+  offset: 2656
+}
+member {
+  id: 0x2e0bfc39
+  name: "max_hw_discard_sectors"
+  type_id: 0x4585663f
+  offset: 544
+}
+member {
+  id: 0xe9790354
+  name: "max_hw_heartbeat_ms"
+  type_id: 0x4585663f
+  offset: 576
+}
+member {
+  id: 0x677475a7
+  name: "max_hw_sectors"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0xa41c9648
+  name: "max_ibi_len"
+  type_id: 0x295c7202
+  offset: 120
+}
+member {
+  id: 0x576b9741
+  name: "max_id"
+  type_id: 0x4585663f
+  offset: 3744
+}
+member {
+  id: 0x8394863c
+  name: "max_idle_balance_cost"
+  type_id: 0x92233392
+  offset: 26880
+}
+member {
+  id: 0x020ebf76
+  name: "max_idle_ns"
+  type_id: 0x92233392
+  offset: 192
+}
+member {
+  id: 0xa4cba179
+  name: "max_idx"
+  type_id: 0x6720d32f
+  offset: 768
+}
+member {
+  id: 0xbf3ad522
+  name: "max_instances"
+  type_id: 0x6720d32f
+  offset: 3584
+}
+member {
+  id: 0x8e370577
+  name: "max_integrity_segments"
+  type_id: 0xc93e017b
+  offset: 784
+}
+member {
+  id: 0x0039a713
+  name: "max_interfaces"
+  type_id: 0x914dbfdc
+  offset: 96
+}
+member {
+  id: 0xa7af0bc8
+  name: "max_interrupters"
+  type_id: 0x295c7202
+  offset: 680
+}
+member {
+  id: 0xe1d85e35
+  name: "max_interval"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0xf058f4c8
+  name: "max_keysize"
+  type_id: 0x4585663f
+  offset: 352
+}
+member {
+  id: 0x4cb873ab
+  name: "max_lanes"
+  type_id: 0x295c7202
+  offset: 656
+}
+member {
+  id: 0x4cb8785a
+  name: "max_lanes"
+  type_id: 0x295c7202
+  offset: 96
+}
+member {
+  id: 0xc860bd45
+  name: "max_le_tx_power"
+  type_id: 0x901eaf6a
+  offset: 7000
+}
+member {
+  id: 0xfe6eb0c5
+  name: "max_len"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xfecd1503
+  name: "max_len"
+  type_id: 0x4585663f
+  offset: 224
+}
+member {
+  id: 0x4b0f53d7
+  name: "max_limit"
+  type_id: 0x4585663f
+  offset: 768
+}
+member {
+  id: 0x6501f940
+  name: "max_link_rate"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0xb855a7c1
+  name: "max_lock"
+  type_id: 0x638752c9
+  offset: 640
+}
+member {
+  id: 0xbc22c51e
+  name: "max_lu_supported"
+  type_id: 0x295c7202
+  offset: 16
+}
+member {
+  id: 0x5b22e737
+  name: "max_luminance"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0xb4fac537
+  name: "max_lun"
+  type_id: 0x92233392
+  offset: 3776
+}
+member {
+  id: 0xf2b20eb6
+  name: "max_mapping_size"
+  type_id: 0x2f7a4465
+  offset: 1408
+}
+member {
+  id: 0x1273815d
+  name: "max_match_sets"
+  type_id: 0x295c7202
+  offset: 1112
+}
+member {
+  id: 0xc6784fdb
+  name: "max_maxbe"
+  type_id: 0x295c7202
+  offset: 1176
+}
+member {
+  id: 0xf04826fc
+  name: "max_message_size"
+  type_id: 0x2e73c057
+  offset: 7744
+}
+member {
+  id: 0xea5caa6c
+  name: "max_minbe"
+  type_id: 0x295c7202
+  offset: 1160
+}
+member {
+  id: 0x1f8e8efe
+  name: "max_mtu"
+  type_id: 0x4585663f
+  offset: 2336
+}
+member {
+  id: 0x7b864e19
+  name: "max_native_cs"
+  type_id: 0x29b77961
+  offset: 11792
+}
+member {
+  id: 0x1e7bfb76
+  name: "max_nd_match_sets"
+  type_id: 0x6720d32f
+  offset: 160
+}
+member {
+  id: 0x4f305ba6
+  name: "max_newidle_lb_cost"
+  type_id: 0x92233392
+  offset: 704
+}
+member {
+  id: 0x20fe5264
+  name: "max_notifyid"
+  type_id: 0x6720d32f
+  offset: 9792
+}
+member {
+  id: 0x5fc9adb3
+  name: "max_num_akm_suites"
+  type_id: 0x914dbfdc
+  offset: 11920
+}
+member {
+  id: 0x6932046b
+  name: "max_num_csa_counters"
+  type_id: 0x295c7202
+  offset: 11152
+}
+member {
+  id: 0x49b08c59
+  name: "max_num_msgs"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x32f21309
+  name: "max_num_pmkids"
+  type_id: 0x295c7202
+  offset: 2128
+}
+member {
+  id: 0x359cc1e4
+  name: "max_num_ref_frames"
+  type_id: 0xb3e7bac9
+  offset: 80
+}
+member {
+  id: 0x17df4fd7
+  name: "max_off_time_changed"
+  type_id: 0x6d7f5ff6
+  offset: 64
+}
+member {
+  id: 0x7c543d79
+  name: "max_off_time_ns"
+  type_id: 0x2e0f9112
+}
+member {
+  id: 0x08d5075f
+  name: "max_open_zones"
+  type_id: 0x4585663f
+  offset: 3936
+}
+member {
+  id: 0xbcd32111
+  name: "max_other"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x258a31cb
+  name: "max_packed_reads"
+  type_id: 0x295c7202
+  offset: 80
+}
+member {
+  id: 0x9779ceb2
+  name: "max_packed_writes"
+  type_id: 0x295c7202
+  offset: 72
+}
+member {
+  id: 0xd5da31f8
+  name: "max_packet_size"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0xc09a441d
+  name: "max_page"
+  type_id: 0xb3e7bac9
+  offset: 4968
+}
+member {
+  id: 0xe612b8f2
+  name: "max_pasids"
+  type_id: 0xc9082b19
+  offset: 704
+}
+member {
+  id: 0xe612bd08
+  name: "max_pasids"
+  type_id: 0xc9082b19
+  offset: 320
+}
+member {
+  id: 0xc86da341
+  name: "max_payld_sz"
+  type_id: 0xf435685e
+  offset: 64
+}
+member {
+  id: 0x1c761191
+  name: "max_payload_len"
+  type_id: 0x4585663f
+  offset: 288
+}
+member {
+  id: 0x1c761548
+  name: "max_payload_len"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xa2079023
+  name: "max_peers"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xc38869f9
+  name: "max_pic_average_light_level"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0x8b8c62e5
+  name: "max_pixelclock"
+  type_id: 0xedf277ba
+  offset: 192
+}
+member {
+  id: 0x988dfb2b
+  name: "max_pkt"
+  type_id: 0xc9082b19
+  offset: 6848
+}
+member {
+  id: 0x463c11e3
+  name: "max_pkt_offset"
+  type_id: 0xc9082b19
+  offset: 160
+}
+member {
+  id: 0x4692391b
+  name: "max_pkt_offset"
+  type_id: 0x6720d32f
+  offset: 160
+}
+member {
+  id: 0x46923d39
+  name: "max_pkt_offset"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x879e4341
+  name: "max_ports"
+  type_id: 0x295c7202
+  offset: 688
+}
+member {
+  id: 0x03ff4ca2
+  name: "max_power"
+  type_id: 0x6720d32f
+  offset: 160
+}
+member {
+  id: 0xf63e7006
+  name: "max_pq"
+  type_id: 0xc93e017b
+  offset: 688
+}
+member {
+  id: 0x757f4e63
+  name: "max_prop_frac"
+  type_id: 0x4585663f
+  offset: 640
+}
+member {
+  id: 0x8e1672a1
+  name: "max_pulse_width"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0x307e09fb
+  name: "max_pwr_info"
+  type_id: 0xcddc22d8
+  offset: 21792
+}
+member {
+  id: 0x6bda87af
+  name: "max_qlen"
+  type_id: 0x4585663f
+  offset: 224
+}
+member {
+  id: 0xfbb3d064
+  name: "max_queue"
+  type_id: 0x6720d32f
+  offset: 8448
+}
+member {
+  id: 0xedbbde87
+  name: "max_queue_depth"
+  type_id: 0xc93e017b
+  offset: 912
+}
+member {
+  id: 0x5c4b3279
+  name: "max_rate"
+  type_id: 0x33756485
+  offset: 1152
+}
+member {
+  id: 0x5c4b3567
+  name: "max_rate"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x5c4b3b62
+  name: "max_rate"
+  type_id: 0x33756485
+  offset: 320
+}
+member {
+  id: 0xf3d009b3
+  name: "max_ratio"
+  type_id: 0x4585663f
+  offset: 608
+}
+member {
+  id: 0x55f45543
+  name: "max_raw_read"
+  type_id: 0xf435685e
+  offset: 896
+}
+member {
+  id: 0x55f45bd5
+  name: "max_raw_read"
+  type_id: 0xf435685e
+  offset: 5056
+}
+member {
+  id: 0x55f45d21
+  name: "max_raw_read"
+  type_id: 0xf435685e
+  offset: 1216
+}
+member {
+  id: 0x5cbc804e
+  name: "max_raw_write"
+  type_id: 0xf435685e
+  offset: 960
+}
+member {
+  id: 0x5cbc828b
+  name: "max_raw_write"
+  type_id: 0xf435685e
+  offset: 5120
+}
+member {
+  id: 0x5cbc8ec0
+  name: "max_raw_write"
+  type_id: 0xf435685e
+  offset: 1280
+}
+member {
+  id: 0xc329de1c
+  name: "max_rdonly_access"
+  type_id: 0xc9082b19
+  offset: 416
+}
+member {
+  id: 0x8b5438b4
+  name: "max_rdwr_access"
+  type_id: 0xc9082b19
+  offset: 448
+}
+member {
+  id: 0x8bf84633
+  name: "max_read_ds"
+  type_id: 0x295c7202
+  offset: 104
+}
+member {
+  id: 0x5c23fe19
+  name: "max_read_len"
+  type_id: 0x914dbfdc
+  offset: 112
+}
+member {
+  id: 0x5c23ff34
+  name: "max_read_len"
+  type_id: 0x914dbfdc
+  offset: 160
+}
+member {
+  id: 0xd9558ca9
+  name: "max_read_turnaround"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0xc45e1d81
+  name: "max_reason"
+  type_id: 0x4e0bad92
+  offset: 192
+}
+member {
+  id: 0xc47730f1
+  name: "max_reason"
+  type_id: 0x6720d32f
+  offset: 736
+}
+member {
+  id: 0xac9bc9eb
+  name: "max_reg_power"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0xe96a8172
+  name: "max_register"
+  type_id: 0x4585663f
+  offset: 2944
+}
+member {
+  id: 0xe96a8a0c
+  name: "max_register"
+  type_id: 0x4585663f
+  offset: 1376
+}
+member {
+  id: 0x1c0f4706
+  name: "max_remain_on_channel_duration"
+  type_id: 0x914dbfdc
+  offset: 2112
+}
+member {
+  id: 0x10b66e39
+  name: "max_report_sz"
+  type_id: 0xf435685e
+  offset: 128
+}
+member {
+  id: 0x68bd6a18
+  name: "max_req_size"
+  type_id: 0x4585663f
+  offset: 8160
+}
+member {
+  id: 0x2e5739dd
+  name: "max_reqs"
+  type_id: 0x4585663f
+  offset: 480
+}
+member {
+  id: 0xa340fecf
+  name: "max_requested_bpc"
+  type_id: 0x295c7202
+  offset: 1088
+}
+member {
+  id: 0x2e4e5452
+  name: "max_resources"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x32dc710e
+  name: "max_response_len"
+  type_id: 0xe62ebf07
+  offset: 352
+}
+member {
+  id: 0x64f01281
+  name: "max_retry"
+  type_id: 0x295c7202
+  offset: 128
+}
+member {
+  id: 0xa02f9c03
+  name: "max_run"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xb1254b2b
+  name: "max_rx"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xb632066d
+  name: "max_rx_match_ratio"
+  type_id: 0x33756485
+  offset: 768
+}
+member {
+  id: 0x100444ef
+  name: "max_rx_rate"
+  type_id: 0x33756485
+  offset: 640
+}
+member {
+  id: 0xf671f028
+  name: "max_scan_ie_len"
+  type_id: 0x914dbfdc
+  offset: 1120
+}
+member {
+  id: 0x67c5e3d7
+  name: "max_scan_ssids"
+  type_id: 0x295c7202
+  offset: 1088
+}
+member {
+  id: 0x9b94e658
+  name: "max_sched_scan_ie_len"
+  type_id: 0x914dbfdc
+  offset: 1136
+}
+member {
+  id: 0x846f56a2
+  name: "max_sched_scan_plan_interval"
+  type_id: 0xc9082b19
+  offset: 1184
+}
+member {
+  id: 0x5f5ef4fc
+  name: "max_sched_scan_plan_iterations"
+  type_id: 0xc9082b19
+  offset: 1216
+}
+member {
+  id: 0x77131af4
+  name: "max_sched_scan_plans"
+  type_id: 0xc9082b19
+  offset: 1152
+}
+member {
+  id: 0x3c3bc696
+  name: "max_sched_scan_reqs"
+  type_id: 0x295c7202
+  offset: 1096
+}
+member {
+  id: 0x650991bc
+  name: "max_sched_scan_ssids"
+  type_id: 0x295c7202
+  offset: 1104
+}
+member {
+  id: 0x51f34597
+  name: "max_sectors"
+  type_id: 0x4585663f
+  offset: 288
+}
+member {
+  id: 0x51f34762
+  name: "max_sectors"
+  type_id: 0x4585663f
+  offset: 2336
+}
+member {
+  id: 0x51f347bc
+  name: "max_sectors"
+  type_id: 0x4585663f
+  offset: 4032
+}
+member {
+  id: 0x079d7b3f
+  name: "max_secure_erase_sectors"
+  type_id: 0x4585663f
+  offset: 576
+}
+member {
+  id: 0x1f0ee50e
+  name: "max_seg_size"
+  type_id: 0x4585663f
+  offset: 8096
+}
+member {
+  id: 0x60f390ff
+  name: "max_segment_size"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0x60f39738
+  name: "max_segment_size"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x60f39b13
+  name: "max_segment_size"
+  type_id: 0x4585663f
+  offset: 4096
+}
+member {
+  id: 0x60f39e4d
+  name: "max_segment_size"
+  type_id: 0x4585663f
+  offset: 2368
+}
+member {
+  id: 0x6dd0cee2
+  name: "max_segments"
+  type_id: 0xc93e017b
+  offset: 768
+}
+member {
+  id: 0x8ed652df
+  name: "max_segs"
+  type_id: 0xc93e017b
+  offset: 8128
+}
+member {
+  id: 0x9cfcb89b
+  name: "max_sel"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x5ac83b71
+  name: "max_seq"
+  type_id: 0x33756485
+}
+member {
+  id: 0x5ac83f90
+  name: "max_seq"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xfc90ca3a
+  name: "max_sg_burst"
+  type_id: 0xc9082b19
+  offset: 1312
+}
+member {
+  id: 0xfc90ce11
+  name: "max_sg_burst"
+  type_id: 0xc9082b19
+  offset: 160
+}
+member {
+  id: 0xc6cf0804
+  name: "max_sig_size"
+  type_id: 0xe8034002
+  offset: 80
+}
+member {
+  id: 0xcf7d6fa4
+  name: "max_size"
+  type_id: 0x914dbfdc
+  offset: 1296
+}
+member {
+  id: 0xcfa9a3ac
+  name: "max_size"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xc288bba2
+  name: "max_slices"
+  type_id: 0x295c7202
+  offset: 32
+}
+member {
+  id: 0x26fea5bb
+  name: "max_slots"
+  type_id: 0x295c7202
+  offset: 672
+}
+member {
+  id: 0x9213bcc2
+  name: "max_socks"
+  type_id: 0x914dbfdc
+  offset: 128
+}
+member {
+  id: 0xa9e240cf
+  name: "max_speed"
+  type_id: 0x52658204
+  offset: 64
+}
+member {
+  id: 0xa9e24ae9
+  name: "max_speed"
+  type_id: 0x52658204
+  offset: 736
+}
+member {
+  id: 0xa9e24ce7
+  name: "max_speed"
+  type_id: 0x52658204
+  offset: 192
+}
+member {
+  id: 0x195fe4f2
+  name: "max_speed_hz"
+  type_id: 0xc9082b19
+  offset: 7616
+}
+member {
+  id: 0x195fee4a
+  name: "max_speed_hz"
+  type_id: 0xc9082b19
+  offset: 7424
+}
+member {
+  id: 0xe9aacb0d
+  name: "max_spread"
+  type_id: 0x38d23361
+  offset: 320
+}
+member {
+  id: 0x03300c8d
+  name: "max_ssp_rate"
+  type_id: 0xefa672c8
+  offset: 800
+}
+member {
+  id: 0x9cbe20ac
+  name: "max_state"
+  type_id: 0x4585663f
+  offset: 512
+}
+member {
+  id: 0x9cbe2276
+  name: "max_state"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x9cbe23a8
+  name: "max_state"
+  type_id: 0x4585663f
+  offset: 14848
+}
+member {
+  id: 0x9cbe26cc
+  name: "max_state"
+  type_id: 0x4585663f
+  offset: 9344
+}
+member {
+  id: 0x9cc8d274
+  name: "max_state"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0xe38f53c4
+  name: "max_states_per_insn"
+  type_id: 0xc9082b19
+  offset: 76096
+}
+member {
+  id: 0x08da9d9b
+  name: "max_streams"
+  type_id: 0x4585663f
+  offset: 400
+  bitsize: 16
+}
+member {
+  id: 0xc6381803
+  name: "max_supported"
+  type_id: 0x6720d32f
+  offset: 7744
+}
+member {
+  id: 0xcd032fd1
+  name: "max_target_blocked"
+  type_id: 0x4585663f
+  offset: 7840
+}
+member {
+  id: 0x7a5a041c
+  name: "max_threads"
+  type_id: 0x6720d32f
+  offset: 3136
+}
+member {
+  id: 0x0f2e8b32
+  name: "max_time"
+  type_id: 0x11c404ba
+  offset: 960
+}
+member {
+  id: 0xbe187c0e
+  name: "max_timeout"
+  type_id: 0xc9082b19
+  offset: 10720
+}
+member {
+  id: 0xbe94f9ba
+  name: "max_timeout"
+  type_id: 0x4585663f
+  offset: 512
+}
+member {
+  id: 0xbb3e1088
+  name: "max_timeout_count"
+  type_id: 0x295c7202
+  offset: 6176
+}
+member {
+  id: 0x373ed61a
+  name: "max_tmds_clock"
+  type_id: 0x6720d32f
+  offset: 320
+}
+member {
+  id: 0x3bf5317d
+  name: "max_tp_access"
+  type_id: 0xc9082b19
+  offset: 192
+}
+member {
+  id: 0xa0a3dcbe
+  name: "max_transfer_size"
+  type_id: 0x2e73c057
+  offset: 7680
+}
+member {
+  id: 0xd4251a67
+  name: "max_transform_hierarchy_depth_inter"
+  type_id: 0xb3e7bac9
+  offset: 128
+}
+member {
+  id: 0x1c77a9bb
+  name: "max_transform_hierarchy_depth_intra"
+  type_id: 0xb3e7bac9
+  offset: 136
+}
+member {
+  id: 0xb03d8885
+  name: "max_tx"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xb0684a77
+  name: "max_tx"
+  type_id: 0xb3e7bac9
+  offset: 1136
+}
+member {
+  id: 0x29e42e01
+  name: "max_tx_power"
+  type_id: 0x901eaf6a
+  offset: 3304
+}
+member {
+  id: 0x431e5691
+  name: "max_tx_rate"
+  type_id: 0xe62ebf07
+  offset: 448
+}
+member {
+  id: 0x43cb0800
+  name: "max_tx_rate"
+  type_id: 0x33756485
+  offset: 704
+}
+member {
+  id: 0xc8b94b5c
+  name: "max_uA"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0xc8b94e75
+  name: "max_uA"
+  type_id: 0x6720d32f
+  offset: 160
+}
+member {
+  id: 0x052382fd
+  name: "max_uV"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0x05238645
+  name: "max_uV"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x05238f9f
+  name: "max_uV"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x509c87f8
+  name: "max_uV_step"
+  type_id: 0x6720d32f
+  offset: 384
+}
+member {
+  id: 0xea527421
+  name: "max_urb_frames"
+  type_id: 0x4585663f
+  offset: 45088
+}
+member {
+  id: 0xdc6f097a
+  name: "max_usage"
+  type_id: 0x4585663f
+  offset: 832
+}
+member {
+  id: 0xa4b8740d
+  name: "max_user_freq"
+  type_id: 0x6720d32f
+  offset: 9440
+}
+member {
+  id: 0xee8d0adc
+  name: "max_vals"
+  type_id: 0x4585663f
+  offset: 12192
+}
+member {
+  id: 0x96cfc851
+  name: "max_vblank_count"
+  type_id: 0xc9082b19
+  offset: 3136
+}
+member {
+  id: 0x96cfc991
+  name: "max_vblank_count"
+  type_id: 0xc9082b19
+  offset: 960
+}
+member {
+  id: 0xcf6c7dc9
+  name: "max_vclocks"
+  type_id: 0x4585663f
+  offset: 45248
+}
+member {
+  id: 0x107724e0
+  name: "max_vcpus"
+  type_id: 0x6720d32f
+  offset: 18720
+}
+member {
+  id: 0xb15d2ccc
+  name: "max_vfreq"
+  type_id: 0x914dbfdc
+  offset: 16
+}
+member {
+  id: 0xb1e53859
+  name: "max_vfreq"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0x5d55840a
+  name: "max_vfs"
+  type_id: 0x00c72527
+  offset: 7680
+}
+member {
+  id: 0xdbee7fb9
+  name: "max_volt"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x52f29850
+  name: "max_wait"
+  type_id: 0x33756485
+  offset: 33920
+}
+member {
+  id: 0x3a232a1e
+  name: "max_width"
+  type_id: 0x6720d32f
+  offset: 4032
+}
+member {
+  id: 0x3aa22b42
+  name: "max_width"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0x3aa22fbb
+  name: "max_width"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xae29a254
+  name: "max_win"
+  type_id: 0xc9082b19
+  offset: 544
+}
+member {
+  id: 0xae29ab09
+  name: "max_win"
+  type_id: 0xc9082b19
+  offset: 2048
+}
+member {
+  id: 0x02a4136b
+  name: "max_workers"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xc66e0163
+  name: "max_write_ds"
+  type_id: 0x295c7202
+  offset: 112
+}
+member {
+  id: 0x7c0255c0
+  name: "max_write_len"
+  type_id: 0xf435685e
+  offset: 576
+}
+member {
+  id: 0x7c6720b2
+  name: "max_write_len"
+  type_id: 0x914dbfdc
+  offset: 176
+}
+member {
+  id: 0x7c672de6
+  name: "max_write_len"
+  type_id: 0x914dbfdc
+  offset: 96
+}
+member {
+  id: 0xa9e9960e
+  name: "max_write_zeroes_sectors"
+  type_id: 0x4585663f
+  offset: 608
+}
+member {
+  id: 0x725dd377
+  name: "max_x"
+  type_id: 0xb3e7bac9
+  offset: 1136
+}
+member {
+  id: 0x72abbebd
+  name: "max_x"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x9af65776
+  name: "max_xfer"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xeedc98e9
+  name: "max_xor"
+  type_id: 0xc93e017b
+  offset: 672
+}
+member {
+  id: 0xb2287342
+  name: "max_y"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xb2de157c
+  name: "max_y"
+  type_id: 0xb3e7bac9
+  offset: 1144
+}
+member {
+  id: 0xe388c14a
+  name: "max_zone_append_sectors"
+  type_id: 0x4585663f
+  offset: 640
+}
+member {
+  id: 0x2f2e35dc
+  name: "maxactive"
+  type_id: 0x6720d32f
+  offset: 1152
+}
+member {
+  id: 0x0e97cf54
+  name: "maxadj"
+  type_id: 0xc9082b19
+  offset: 256
+}
+member {
+  id: 0x64b30279
+  name: "maxage"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x962d52d7
+  name: "maxapplication"
+  type_id: 0x4585663f
+  offset: 384
+}
+member {
+  id: 0x5a7d3afb
+  name: "maxattr"
+  type_id: 0x4585663f
+  offset: 224
+}
+member {
+  id: 0x5a7d3e18
+  name: "maxattr"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0x818d38b8
+  name: "maxauthsize"
+  type_id: 0x4585663f
+  offset: 416
+}
+member {
+  id: 0x2817de6d
+  name: "maxburst"
+  type_id: 0x4585663f
+  offset: 418
+  bitsize: 5
+}
+member {
+  id: 0x3c6e033a
+  name: "maxburst"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0xd8d01ef5
+  name: "maxchild"
+  type_id: 0x6720d32f
+  offset: 11584
+}
+member {
+  id: 0x6e9103d9
+  name: "maxcollection"
+  type_id: 0x4585663f
+  offset: 352
+}
+member {
+  id: 0x93f4efa5
+  name: "maxerror"
+  type_id: 0x39470e64
+  offset: 192
+}
+member {
+  id: 0x32e2dd56
+  name: "maxfield"
+  type_id: 0x4585663f
+  offset: 16960
+}
+member {
+  id: 0xd40d27d0
+  name: "maxframesize"
+  type_id: 0x4585663f
+  offset: 45056
+}
+member {
+  id: 0x3c1ee1f8
+  name: "maximum"
+  type_id: 0x2e0f9112
+  offset: 832
+}
+member {
+  id: 0x3c3f436f
+  name: "maximum"
+  type_id: 0x0faae5b1
+  offset: 352
+}
+member {
+  id: 0x3c3f43d7
+  name: "maximum"
+  type_id: 0x0faae5b1
+  offset: 64
+}
+member {
+  id: 0x3c3f4fff
+  name: "maximum"
+  type_id: 0x0faae5b1
+  offset: 192
+}
+member {
+  id: 0x3ced82ae
+  name: "maximum"
+  type_id: 0xdd6eef0a
+  offset: 384
+}
+member {
+  id: 0xd5432b33
+  name: "maxlen"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xd5618744
+  name: "maxlen"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0xd597eed1
+  name: "maxlen"
+  type_id: 0x914dbfdc
+  offset: 32
+}
+member {
+  id: 0xce0ec3ee
+  name: "maxnagle"
+  type_id: 0xc9082b19
+  offset: 6880
+}
+member {
+  id: 0x05c575b9
+  name: "maxoctets"
+  type_id: 0xd41e888f
+  offset: 96
+}
+member {
+  id: 0x7d5d377c
+  name: "maxp"
+  type_id: 0x914dbfdc
+  offset: 848
+}
+member {
+  id: 0x38582cd7
+  name: "maxpacket"
+  type_id: 0x4585663f
+  offset: 368
+  bitsize: 16
+}
+member {
+  id: 0x63fb0e8e
+  name: "maxpacket"
+  type_id: 0x4585663f
+  offset: 1152
+}
+member {
+  id: 0x0806dc1f
+  name: "maxpacket_limit"
+  type_id: 0x4585663f
+  offset: 384
+  bitsize: 16
+}
+member {
+  id: 0x4fcae8b0
+  name: "maxpacksize"
+  type_id: 0x4585663f
+  offset: 45024
+}
+member {
+  id: 0x4fcae9cb
+  name: "maxpacksize"
+  type_id: 0x4585663f
+  offset: 448
+}
+member {
+  id: 0x6af8282b
+  name: "maxrss"
+  type_id: 0x33756485
+  offset: 4800
+}
+member {
+  id: 0x51858165
+  name: "maxrxpkt"
+  type_id: 0xe62ebf07
+  offset: 192
+}
+member {
+  id: 0x349eb14e
+  name: "maxtxpkt"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0x32c64e99
+  name: "maxtype"
+  type_id: 0x4585663f
+  offset: 416
+}
+member {
+  id: 0x084c6689
+  name: "maxusage"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0xa4514daf
+  name: "may_skip_resume"
+  type_id: 0x4585663f
+  offset: 580
+  bitsize: 1
+}
+member {
+  id: 0x1c281f71
+  name: "may_split"
+  type_id: 0x2d62401c
+  offset: 128
+}
+member {
+  id: 0x807d9f19
+  name: "may_wakeup"
+  type_id: 0x35e7630d
+  offset: 704
+}
+member {
+  id: 0xafb0699e
+  name: "mayday_node"
+  type_id: 0xd3c80119
+  offset: 1088
+}
+member {
+  id: 0xf420cf89
+  name: "mayday_timer"
+  type_id: 0xd298e888
+  offset: 1088
+}
+member {
+  id: 0x91de691b
+  name: "maydays"
+  type_id: 0xd3c80119
+  offset: 1088
+}
+member {
+  id: 0x7a430b3c
+  name: "mb"
+  type_id: 0xb3e7bac9
+  offset: 48
+}
+member {
+  id: 0xda66f993
+  name: "mb_first"
+  type_id: 0x4585663f
+  offset: 544
+}
+member {
+  id: 0xae3b446d
+  name: "mb_last"
+  type_id: 0x4585663f
+  offset: 576
+}
+member {
+  id: 0x4c31afa1
+  name: "mb_mode_delta"
+  type_id: 0xa84ab8c0
+  offset: 32
+}
+member {
+  id: 0xaea16832
+  name: "mbox"
+  type_id: 0x38fdd541
+}
+member {
+  id: 0x350eb9a7
+  name: "mbssid_max_interfaces"
+  type_id: 0x295c7202
+  offset: 11904
+}
+member {
+  id: 0x4197a5a3
+  name: "mbus_code"
+  type_id: 0xe62ebf07
+  offset: 384
+}
+member {
+  id: 0xbbffd5d1
+  name: "mc"
+  type_id: 0x4f5972f9
+  offset: 5056
+}
+member {
+  id: 0xedd041f2
+  name: "mc_autojoin_sk"
+  type_id: 0x1d44326e
+  offset: 2304
+}
+member {
+  id: 0xedd049e1
+  name: "mc_autojoin_sk"
+  type_id: 0x1d44326e
+  offset: 4928
+}
+member {
+  id: 0x9ee8235b
+  name: "mc_count"
+  type_id: 0x6720d32f
+  offset: 320
+}
+member {
+  id: 0x9e4751e5
+  name: "mc_dad_count"
+  type_id: 0x5d8155a5
+  offset: 344
+}
+member {
+  id: 0x8cc10130
+  name: "mc_dad_work"
+  type_id: 0xf1159c31
+  offset: 2816
+}
+member {
+  id: 0xf100fc5d
+  name: "mc_forwarding"
+  type_id: 0x74d29cf1
+  offset: 1120
+}
+member {
+  id: 0xd51be805
+  name: "mc_gq_running"
+  type_id: 0x5d8155a5
+  offset: 328
+}
+member {
+  id: 0xa2c5b2db
+  name: "mc_gq_work"
+  type_id: 0xf1159c31
+  offset: 640
+}
+member {
+  id: 0x906eca72
+  name: "mc_hash"
+  type_id: 0x01c7b63a
+  offset: 256
+}
+member {
+  id: 0xa9223a07
+  name: "mc_ifc_count"
+  type_id: 0x5d8155a5
+  offset: 336
+}
+member {
+  id: 0x615ec3f5
+  name: "mc_ifc_work"
+  type_id: 0xf1159c31
+  offset: 1728
+}
+member {
+  id: 0x9c4c6ca6
+  name: "mc_list"
+  type_id: 0x2d5e3e76
+  offset: 192
+}
+member {
+  id: 0x9c6ad1bd
+  name: "mc_list"
+  type_id: 0x0be3257b
+  offset: 192
+}
+member {
+  id: 0xa8e2c1a0
+  name: "mc_lock"
+  type_id: 0xa7c362b0
+  offset: 6528
+}
+member {
+  id: 0x99f606f1
+  name: "mc_maxdelay"
+  type_id: 0x33756485
+  offset: 576
+}
+member {
+  id: 0x3144ac7d
+  name: "mc_method"
+  type_id: 0x2025fcf3
+  offset: 8064
+}
+member {
+  id: 0xa17f5a1c
+  name: "mc_qi"
+  type_id: 0x33756485
+  offset: 448
+}
+member {
+  id: 0x87575c81
+  name: "mc_qri"
+  type_id: 0x33756485
+  offset: 512
+}
+member {
+  id: 0xc678c4d8
+  name: "mc_qrv"
+  type_id: 0x5d8155a5
+  offset: 320
+}
+member {
+  id: 0x16f3f61b
+  name: "mc_query_lock"
+  type_id: 0xf313e71a
+  offset: 6464
+}
+member {
+  id: 0x435609a4
+  name: "mc_query_queue"
+  type_id: 0x578f9c2b
+  offset: 6080
+}
+member {
+  id: 0xe8a0e215
+  name: "mc_query_work"
+  type_id: 0xf1159c31
+  offset: 3904
+}
+member {
+  id: 0x045bfd9c
+  name: "mc_report_lock"
+  type_id: 0xf313e71a
+  offset: 6496
+}
+member {
+  id: 0x65503a42
+  name: "mc_report_queue"
+  type_id: 0x578f9c2b
+  offset: 6272
+}
+member {
+  id: 0xbbc5489e
+  name: "mc_report_work"
+  type_id: 0xf1159c31
+  offset: 4992
+}
+member {
+  id: 0x5509541e
+  name: "mc_tomb"
+  type_id: 0x2d5e3e76
+  offset: 384
+}
+member {
+  id: 0x552fe83c
+  name: "mc_tomb"
+  type_id: 0x0be3257b
+  offset: 256
+}
+member {
+  id: 0x66f17147
+  name: "mc_tomb_lock"
+  type_id: 0xf313e71a
+  offset: 352
+}
+member {
+  id: 0xd4582df4
+  name: "mc_v1_seen"
+  type_id: 0x33756485
+  offset: 384
+}
+member {
+  id: 0x0e07dfa8
+  name: "mca_addr"
+  type_id: 0x6d25e07f
+}
+member {
+  id: 0xb689518b
+  name: "mca_crcount"
+  type_id: 0x5d8155a5
+  offset: 416
+}
+member {
+  id: 0xe33bc190
+  name: "mca_cstamp"
+  type_id: 0x33756485
+  offset: 1792
+}
+member {
+  id: 0xfc51a126
+  name: "mca_flags"
+  type_id: 0x4585663f
+  offset: 1664
+}
+member {
+  id: 0xe87640c7
+  name: "mca_refcnt"
+  type_id: 0xa722c13e
+  offset: 1728
+}
+member {
+  id: 0x93969879
+  name: "mca_sfcount"
+  type_id: 0x607419c2
+  offset: 448
+}
+member {
+  id: 0x5dc88dee
+  name: "mca_sfmode"
+  type_id: 0x4585663f
+  offset: 384
+}
+member {
+  id: 0x63dab7cd
+  name: "mca_sources"
+  type_id: 0x3dbc6f10
+  offset: 256
+}
+member {
+  id: 0xc15907a5
+  name: "mca_tomb"
+  type_id: 0x3dbc6f10
+  offset: 320
+}
+member {
+  id: 0x4b16f22f
+  name: "mca_tstamp"
+  type_id: 0x33756485
+  offset: 1856
+}
+member {
+  id: 0x85464695
+  name: "mca_users"
+  type_id: 0x6720d32f
+  offset: 1696
+}
+member {
+  id: 0x929b0f59
+  name: "mca_work"
+  type_id: 0xf1159c31
+  offset: 576
+}
+member {
+  id: 0x2cf10ddb
+  name: "mcgrp_offset"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0x34d860de
+  name: "mcgrps"
+  type_id: 0x3aba8aa9
+  offset: 704
+}
+member {
+  id: 0xe09033b8
+  name: "mclk_direction"
+  type_id: 0xb3e7bac9
+  offset: 136
+}
+member {
+  id: 0x3f4da681
+  name: "mclk_rate"
+  type_id: 0x0baa70a7
+  offset: 160
+}
+member {
+  id: 0x5fe5580a
+  name: "mcq_base"
+  type_id: 0x18bd6530
+  offset: 41664
+}
+member {
+  id: 0xc367159d
+  name: "mcq_capabilities"
+  type_id: 0xc9082b19
+  offset: 1152
+}
+member {
+  id: 0x0a3c7160
+  name: "mcq_config_resource"
+  type_id: 0x2d883003
+  offset: 1472
+}
+member {
+  id: 0x9ace4517
+  name: "mcq_cq_head"
+  type_id: 0x18bd6530
+  offset: 128
+}
+member {
+  id: 0xa25333c6
+  name: "mcq_cq_tail"
+  type_id: 0x18bd6530
+  offset: 192
+}
+member {
+  id: 0xa52faf23
+  name: "mcq_enabled"
+  type_id: 0x6d7f5ff6
+  offset: 40288
+}
+member {
+  id: 0x920d28d3
+  name: "mcq_opr"
+  type_id: 0xbbe142cb
+  offset: 41856
+}
+member {
+  id: 0xcdef6e49
+  name: "mcq_sq_head"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0xc338b34a
+  name: "mcq_sq_tail"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0x51f95764
+  name: "mcq_sup"
+  type_id: 0x6d7f5ff6
+  offset: 40280
+}
+member {
+  id: 0x18ac35f8
+  name: "mcr"
+  type_id: 0x5d8155a5
+  offset: 4928
+}
+member {
+  id: 0xd9284316
+  name: "mcs"
+  type_id: 0x195436be
+  offset: 24
+}
+member {
+  id: 0xd9284725
+  name: "mcs"
+  type_id: 0x195436be
+  offset: 40
+}
+member {
+  id: 0x0af4889a
+  name: "mctrl"
+  type_id: 0x4585663f
+  offset: 2240
+}
+member {
+  id: 0xe219365f
+  name: "mctrl_on"
+  type_id: 0x6d7f5ff6
+  offset: 672
+}
+member {
+  id: 0x949ab98b
+  name: "mctrl_prev"
+  type_id: 0x4585663f
+  offset: 640
+}
+member {
+  id: 0x966b766d
+  name: "md_dst"
+  type_id: 0x3b9c6e49
+  offset: 384
+}
+member {
+  id: 0x376609fd
+  name: "mdcr_el2"
+  type_id: 0x92233392
+  offset: 14912
+}
+member {
+  id: 0xdb73cbc4
+  name: "mdcr_el2_host"
+  type_id: 0x92233392
+  offset: 15040
+}
+member {
+  id: 0xbb1af1d1
+  name: "mdev"
+  type_id: 0x16239d0c
+}
+member {
+  id: 0xbb1af530
+  name: "mdev"
+  type_id: 0x16239d0c
+  offset: 64
+}
+member {
+  id: 0xc96faa23
+  name: "mdio"
+  type_id: 0x6fb840c8
+}
+member {
+  id: 0xe9193316
+  name: "mdio_lock"
+  type_id: 0xa7c362b0
+  offset: 9088
+}
+member {
+  id: 0xd1b6ba65
+  name: "mdio_map"
+  type_id: 0x50930294
+  offset: 16896
+}
+member {
+  id: 0x8da29d66
+  name: "mdio_read"
+  type_id: 0x2ebb318f
+  offset: 256
+}
+member {
+  id: 0xe2b8933a
+  name: "mdio_support"
+  type_id: 0xb3e7bac9
+  offset: 152
+}
+member {
+  id: 0xe2b8944e
+  name: "mdio_support"
+  type_id: 0xb3e7bac9
+  offset: 96
+}
+member {
+  id: 0x2fb1c3e7
+  name: "mdio_write"
+  type_id: 0x0dfd7a00
+  offset: 320
+}
+member {
+  id: 0x64615c20
+  name: "mdiodrv"
+  type_id: 0x4814eed5
+}
+member {
+  id: 0x0a576241
+  name: "mdix"
+  type_id: 0x295c7202
+  offset: 12736
+}
+member {
+  id: 0xf13d7d29
+  name: "mdix_ctrl"
+  type_id: 0x295c7202
+  offset: 12744
+}
+member {
+  id: 0xc8eaf519
+  name: "mdo_add_rxsa"
+  type_id: 0x2ea66283
+  offset: 512
+}
+member {
+  id: 0x496bd486
+  name: "mdo_add_rxsc"
+  type_id: 0x2ea66283
+  offset: 320
+}
+member {
+  id: 0xd9187e59
+  name: "mdo_add_secy"
+  type_id: 0x2ea66283
+  offset: 128
+}
+member {
+  id: 0xf1cc6cb7
+  name: "mdo_add_txsa"
+  type_id: 0x2ea66283
+  offset: 704
+}
+member {
+  id: 0x4d6ac6ed
+  name: "mdo_del_rxsa"
+  type_id: 0x2ea66283
+  offset: 640
+}
+member {
+  id: 0xcfe9bda3
+  name: "mdo_del_rxsc"
+  type_id: 0x2ea66283
+  offset: 448
+}
+member {
+  id: 0xa3c77f2c
+  name: "mdo_del_secy"
+  type_id: 0x2ea66283
+  offset: 256
+}
+member {
+  id: 0x8e9e922d
+  name: "mdo_del_txsa"
+  type_id: 0x2ea66283
+  offset: 832
+}
+member {
+  id: 0xa8e1f100
+  name: "mdo_dev_open"
+  type_id: 0x2ea66283
+}
+member {
+  id: 0x1c38e231
+  name: "mdo_dev_stop"
+  type_id: 0x2ea66283
+  offset: 64
+}
+member {
+  id: 0x22d49d42
+  name: "mdo_get_dev_stats"
+  type_id: 0x2ea66283
+  offset: 896
+}
+member {
+  id: 0xbc936517
+  name: "mdo_get_rx_sa_stats"
+  type_id: 0x2ea66283
+  offset: 1152
+}
+member {
+  id: 0x8a3f37b0
+  name: "mdo_get_rx_sc_stats"
+  type_id: 0x2ea66283
+  offset: 1088
+}
+member {
+  id: 0xba4596c7
+  name: "mdo_get_tx_sa_stats"
+  type_id: 0x2ea66283
+  offset: 1024
+}
+member {
+  id: 0x2eafa882
+  name: "mdo_get_tx_sc_stats"
+  type_id: 0x2ea66283
+  offset: 960
+}
+member {
+  id: 0x57c8af1d
+  name: "mdo_upd_rxsa"
+  type_id: 0x2ea66283
+  offset: 576
+}
+member {
+  id: 0xd045c881
+  name: "mdo_upd_rxsc"
+  type_id: 0x2ea66283
+  offset: 384
+}
+member {
+  id: 0x780607f4
+  name: "mdo_upd_secy"
+  type_id: 0x2ea66283
+  offset: 192
+}
+member {
+  id: 0x0649a632
+  name: "mdo_upd_txsa"
+  type_id: 0x2ea66283
+  offset: 768
+}
+member {
+  id: 0xd7400399
+  name: "mdscr_el1"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x3e3e85fb
+  name: "me"
+  type_id: 0x0b27dc43
+  offset: 192
+}
+member {
+  id: 0x3e3e8af5
+  name: "me"
+  type_id: 0x0b27dc43
+  offset: 320
+}
+member {
+  id: 0x8dae3d1f
+  name: "mean"
+  type_id: 0x92233392
+}
+member {
+  id: 0x15c3a7f9
+  name: "meat"
+  type_id: 0x6720d32f
+  offset: 1248
+}
+member {
+  id: 0x80a7a1d2
+  name: "media"
+  type_id: 0x1f755ae3
+  offset: 640
+}
+member {
+  id: 0x32f10052
+  name: "media_ctl"
+  type_id: 0x1bba1b5d
+  offset: 1536
+}
+member {
+  id: 0xdda9231e
+  name: "media_dev"
+  type_id: 0x16239d0c
+}
+member {
+  id: 0xdda92c2e
+  name: "media_dev"
+  type_id: 0x16239d0c
+  offset: 3200
+}
+member {
+  id: 0x68246ee4
+  name: "media_entity"
+  type_id: 0x501df1d2
+  offset: 64
+}
+member {
+  id: 0x9ecbe5e8
+  name: "media_id"
+  type_id: 0x295c7202
+  offset: 256
+}
+member {
+  id: 0x960530b0
+  name: "media_pad"
+  type_id: 0x595a11b6
+  offset: 1152
+}
+member {
+  id: 0xf70ae3f7
+  name: "media_pipe"
+  type_id: 0x76e78cd9
+  offset: 1664
+}
+member {
+  id: 0x83b96b6a
+  name: "media_ptr"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0xd972d98e
+  name: "medium_streams_pool"
+  type_id: 0x2d66740a
+  offset: 20352
+}
+member {
+  id: 0x93845459
+  name: "mel"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x5201b424
+  name: "mem"
+  type_id: 0x000fdfa4
+}
+member {
+  id: 0x521d48b9
+  name: "mem"
+  type_id: 0x1cfbc822
+  offset: 7552
+}
+member {
+  id: 0x521dad60
+  name: "mem"
+  type_id: 0x1c1e35e0
+  offset: 768
+}
+member {
+  id: 0x521ddddc
+  name: "mem"
+  type_id: 0x1c6fe5c8
+  offset: 128
+}
+member {
+  id: 0x52b1974c
+  name: "mem"
+  type_id: 0xb02b353a
+  offset: 2048
+}
+member {
+  id: 0x52fec110
+  name: "mem"
+  type_id: 0xff7222f6
+  offset: 192
+}
+member {
+  id: 0xeaa4a738
+  name: "mem_blk"
+  type_id: 0xedf277ba
+  offset: 40
+  bitsize: 3
+}
+member {
+  id: 0xb713e7eb
+  name: "mem_caps"
+  type_id: 0x39e76e0a
+  offset: 11648
+}
+member {
+  id: 0x5bed4aba
+  name: "mem_dtlb"
+  type_id: 0xedf277ba
+  offset: 26
+  bitsize: 7
+}
+member {
+  id: 0xea98a386
+  name: "mem_end"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0xea98a7cc
+  name: "mem_end"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x85642765
+  name: "mem_entries"
+  type_id: 0x05f50dbe
+  offset: 256
+}
+member {
+  id: 0x33ddb23c
+  name: "mem_handle"
+  type_id: 0xc9082b19
+  offset: 320
+}
+member {
+  id: 0xaf3c8a01
+  name: "mem_head"
+  type_id: 0x5e8dc7f4
+  offset: 256
+}
+member {
+  id: 0xd0936a4e
+  name: "mem_head_lock"
+  type_id: 0xf313e71a
+  offset: 320
+}
+member {
+  id: 0xb28a9bf2
+  name: "mem_hops"
+  type_id: 0xedf277ba
+  offset: 43
+  bitsize: 3
+}
+member {
+  id: 0x8e440db0
+  name: "mem_limit"
+  type_id: 0x6720d32f
+  offset: 1248
+}
+member {
+  id: 0xcbea6804
+  name: "mem_lock"
+  type_id: 0xedf277ba
+  offset: 24
+  bitsize: 2
+}
+member {
+  id: 0xfafcf72d
+  name: "mem_lvl"
+  type_id: 0xedf277ba
+  offset: 5
+  bitsize: 14
+}
+member {
+  id: 0x0b20e7c3
+  name: "mem_lvl_num"
+  type_id: 0xedf277ba
+  offset: 33
+  bitsize: 4
+}
+member {
+  id: 0x693af87e
+  name: "mem_offset"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x64d95a34
+  name: "mem_op"
+  type_id: 0xedf277ba
+  bitsize: 5
+}
+member {
+  id: 0xae599ff2
+  name: "mem_ops"
+  type_id: 0x35bff718
+  offset: 11584
+}
+member {
+  id: 0xae5e72b8
+  name: "mem_ops"
+  type_id: 0x325bd10a
+  offset: 448
+}
+member {
+  id: 0xf7ca965f
+  name: "mem_planes"
+  type_id: 0x295c7202
+  offset: 40
+}
+member {
+  id: 0x5614fb8d
+  name: "mem_priv"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0x8f367e0b
+  name: "mem_remote"
+  type_id: 0xedf277ba
+  offset: 37
+  bitsize: 1
+}
+member {
+  id: 0x2fb88d8a
+  name: "mem_rsvd"
+  type_id: 0xedf277ba
+  offset: 46
+  bitsize: 18
+}
+member {
+  id: 0xb62eb97d
+  name: "mem_size"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x8d3d36af
+  name: "mem_snoop"
+  type_id: 0xedf277ba
+  offset: 19
+  bitsize: 5
+}
+member {
+  id: 0x87fcb925
+  name: "mem_snoopx"
+  type_id: 0xedf277ba
+  offset: 38
+  bitsize: 2
+}
+member {
+  id: 0x499d9077
+  name: "mem_start"
+  type_id: 0x33756485
+}
+member {
+  id: 0x499d97b0
+  name: "mem_start"
+  type_id: 0x33756485
+  offset: 320
+}
+member {
+  id: 0xbf5bc6b1
+  name: "mem_type"
+  type_id: 0x376c164b
+}
+member {
+  id: 0xbf7093f8
+  name: "mem_type"
+  type_id: 0x1c3dbe5a
+  offset: 64
+}
+member {
+  id: 0xbf709edb
+  name: "mem_type"
+  type_id: 0x1c3dbe5a
+  offset: 128
+}
+member {
+  id: 0x23daaa40
+  name: "mem_unit"
+  type_id: 0xe62ebf07
+  offset: 832
+}
+member {
+  id: 0x3e3c07d6
+  name: "mem_used"
+  type_id: 0x74d29cf1
+  offset: 1216
+}
+member {
+  id: 0x9ced8ac7
+  name: "memalloc_noio"
+  type_id: 0x4585663f
+  offset: 1997
+  bitsize: 1
+}
+member {
+  id: 0xed909488
+  name: "memattr"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0x58ec18a9
+  name: "membarrier_state"
+  type_id: 0x74d29cf1
+  offset: 512
+}
+member {
+  id: 0x58ffe2b9
+  name: "membarrier_state"
+  type_id: 0x6720d32f
+  offset: 23072
+}
+member {
+  id: 0x2aa25ca7
+  name: "membase"
+  type_id: 0x1df06cce
+  offset: 128
+}
+member {
+  id: 0x7a26649e
+  name: "member_cnt"
+  type_id: 0x914dbfdc
+  offset: 864
+}
+member {
+  id: 0x1fdb4157
+  name: "members"
+  type_id: 0xeb923a9b
+}
+member {
+  id: 0xc76cf9c1
+  name: "memcg"
+  type_id: 0x1d5bae2a
+  offset: 18688
+}
+member {
+  id: 0xc76cfce5
+  name: "memcg"
+  type_id: 0x1d5bae2a
+  offset: 128
+}
+member {
+  id: 0xc76cfdee
+  name: "memcg"
+  type_id: 0x1d5bae2a
+  offset: 192
+}
+member {
+  id: 0xc76cffa4
+  name: "memcg"
+  type_id: 0x1d5bae2a
+  offset: 1344
+}
+member {
+  id: 0xe41e7098
+  name: "memcg_aware"
+  type_id: 0x6d7f5ff6
+  offset: 224
+}
+member {
+  id: 0xaac1c49f
+  name: "memcg_completions"
+  type_id: 0x5b602dab
+  offset: 5632
+}
+member {
+  id: 0x4ff68d3c
+  name: "memcg_css"
+  type_id: 0x2b16c036
+  offset: 6016
+}
+member {
+  id: 0xbf75fe15
+  name: "memcg_data"
+  type_id: 0x33756485
+  offset: 448
+}
+member {
+  id: 0x042fd3b9
+  name: "memcg_id"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x07688065
+  name: "memcg_in_oom"
+  type_id: 0x1d5bae2a
+  offset: 22976
+}
+member {
+  id: 0x5b9e4488
+  name: "memcg_lru"
+  type_id: 0xe524f4fb
+  offset: 69184
+}
+member {
+  id: 0x14a5c5db
+  name: "memcg_node"
+  type_id: 0xd3c80119
+  offset: 6144
+}
+member {
+  id: 0x0880b875
+  name: "memcg_nr_pages_over_high"
+  type_id: 0x4585663f
+  offset: 23104
+}
+member {
+  id: 0x353e5511
+  name: "memcg_oom_gfp_mask"
+  type_id: 0xf1a6dfed
+  offset: 23040
+}
+member {
+  id: 0x193acfa9
+  name: "memcg_oom_order"
+  type_id: 0x6720d32f
+  offset: 23072
+}
+member {
+  id: 0x26116682
+  name: "memcpy"
+  type_id: 0x1e881fcb
+  offset: 1728
+}
+member {
+  id: 0xd235358f
+  name: "memcpy_count"
+  type_id: 0x33756485
+}
+member {
+  id: 0x1f4a9078
+  name: "memory"
+  type_id: 0xe62ebf07
+  offset: 480
+}
+member {
+  id: 0x1f4a9529
+  name: "memory"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x1f7cc14f
+  name: "memory"
+  type_id: 0xd079ba20
+  offset: 2048
+}
+member {
+  id: 0x1fe933d3
+  name: "memory"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x1fe93d34
+  name: "memory"
+  type_id: 0x4585663f
+  offset: 1728
+}
+member {
+  id: 0x1fe93ef0
+  name: "memory"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x449ef992
+  name: "memory_allocated"
+  type_id: 0x269af4e9
+  offset: 2048
+}
+member {
+  id: 0x46beaefc
+  name: "memory_events"
+  type_id: 0x87394241
+  offset: 12864
+}
+member {
+  id: 0xe141f65e
+  name: "memory_events_local"
+  type_id: 0x87394241
+  offset: 13440
+}
+member {
+  id: 0xd284628d
+  name: "memory_failure"
+  type_id: 0x2ce982de
+  offset: 128
+}
+member {
+  id: 0x45940c20
+  name: "memory_mutex"
+  type_id: 0xa7c362b0
+  offset: 20480
+}
+member {
+  id: 0x797693fc
+  name: "memory_pressure"
+  type_id: 0x064d6086
+  offset: 2240
+}
+member {
+  id: 0xebf8e0ed
+  name: "memregion"
+  type_id: 0x6720d32f
+  offset: 576
+}
+member {
+  id: 0xcc952c00
+  name: "mems_allowed"
+  type_id: 0x948a2888
+  offset: 20480
+}
+member {
+  id: 0xb1f5e0b7
+  name: "mems_allowed_seq"
+  type_id: 0xeb90906e
+  offset: 20544
+}
+member {
+  id: 0x7cfa79a6
+  name: "memset"
+  type_id: 0x1ed6200d
+  offset: 1792
+}
+member {
+  id: 0x4f1355bb
+  name: "memslots"
+  type_id: 0xb717646a
+  offset: 18112
+}
+member {
+  id: 0xbaa89f63
+  name: "memsw"
+  type_id: 0xd079ba20
+}
+member {
+  id: 0xcb363735
+  name: "memsw_thresholds"
+  type_id: 0x2f2113b1
+  offset: 12224
+}
+member {
+  id: 0xddb2c393
+  name: "memtype"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0x4f17ad5b
+  name: "menu_skip_mask"
+  type_id: 0x92233392
+  offset: 832
+}
+member {
+  id: 0x4f17aee1
+  name: "menu_skip_mask"
+  type_id: 0x92233392
+}
+member {
+  id: 0x1bc01e7f
+  name: "merge"
+  type_id: 0x0d6cb897
+  offset: 192
+}
+member {
+  id: 0x1bc20b6a
+  name: "merge"
+  type_id: 0x0f78a6c8
+  offset: 128
+}
+member {
+  id: 0x5052f78e
+  name: "merges"
+  type_id: 0x80904a3b
+  offset: 768
+}
+member {
+  id: 0x32eac2fd
+  name: "mesh"
+  type_id: 0x22b6f73b
+}
+member {
+  id: 0xc8578daa
+  name: "mesh_ad_types"
+  type_id: 0x60ca2c23
+  offset: 5320
+}
+member {
+  id: 0x9962bd46
+  name: "mesh_pending"
+  type_id: 0xd3c80119
+  offset: 29056
+}
+member {
+  id: 0x81de61c0
+  name: "mesh_send_done"
+  type_id: 0xf1159c31
+  offset: 48000
+}
+member {
+  id: 0x9a07655b
+  name: "mesh_send_ref"
+  type_id: 0xb3e7bac9
+  offset: 5448
+}
+member {
+  id: 0x8cf2c6b7
+  name: "message_id"
+  type_id: 0x4585663f
+  offset: 7808
+}
+member {
+  id: 0x673f72e8
+  name: "message_length"
+  type_id: 0x7584e7da
+  offset: 16
+}
+member {
+  id: 0xad82d082
+  name: "messages"
+  type_id: 0x3a3eb2f9
+}
+member {
+  id: 0xdb6dbe17
+  name: "meta"
+  type_id: 0x0f63bc75
+}
+member {
+  id: 0xbbdc3516
+  name: "meta_iotlb"
+  type_id: 0x1e937ceb
+  offset: 704
+}
+member {
+  id: 0xf7b6b92a
+  name: "metadata_ops"
+  type_id: 0x1d5a7ac2
+  offset: 640
+}
+member {
+  id: 0xfae2d2e9
+  name: "metadata_set"
+  type_id: 0x6d7f5ff6
+  offset: 1376
+}
+member {
+  id: 0x0e140898
+  name: "metadata_type"
+  type_id: 0xb3e7bac9
+  offset: 8
+}
+member {
+  id: 0x0e41ca7b
+  name: "metadata_type"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x0e60addc
+  name: "metadata_type"
+  type_id: 0xc7409b5c
+  offset: 96
+}
+member {
+  id: 0x939284e5
+  name: "metasize"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0xa4c2a93e
+  name: "metrics"
+  type_id: 0xb6bc1f4d
+}
+member {
+  id: 0x6eef360d
+  name: "mfd_cell"
+  type_id: 0x34894aac
+  offset: 7872
+}
+member {
+  id: 0x1c261f45
+  name: "mfg_id"
+  type_id: 0x66fe5c63
+  offset: 64
+}
+member {
+  id: 0x1cd0b4f0
+  name: "mfg_rsvd"
+  type_id: 0x295c7202
+  offset: 16
+}
+member {
+  id: 0x33ce7f28
+  name: "mfg_week"
+  type_id: 0x295c7202
+  offset: 128
+}
+member {
+  id: 0xafc88256
+  name: "mfg_year"
+  type_id: 0x295c7202
+  offset: 136
+}
+member {
+  id: 0x5442f9de
+  name: "mg_dst_cgrp"
+  type_id: 0x18a16691
+  offset: 3072
+}
+member {
+  id: 0xe7b08e98
+  name: "mg_dst_cset"
+  type_id: 0x0d821a01
+  offset: 3136
+}
+member {
+  id: 0x90817899
+  name: "mg_dst_preload_node"
+  type_id: 0xd3c80119
+  offset: 2752
+}
+member {
+  id: 0x227dd300
+  name: "mg_node"
+  type_id: 0xd3c80119
+  offset: 2880
+}
+member {
+  id: 0xcac175e1
+  name: "mg_src_cgrp"
+  type_id: 0x18a16691
+  offset: 3008
+}
+member {
+  id: 0xcd024f91
+  name: "mg_src_preload_node"
+  type_id: 0xd3c80119
+  offset: 2624
+}
+member {
+  id: 0x10fb552c
+  name: "mg_tasks"
+  type_id: 0xd3c80119
+  offset: 832
+}
+member {
+  id: 0x285f05be
+  name: "mgmt_pending"
+  type_id: 0xd3c80119
+  offset: 29184
+}
+member {
+  id: 0x5b8fb9b9
+  name: "mgmt_registrations"
+  type_id: 0xd3c80119
+  offset: 384
+}
+member {
+  id: 0x883b39e2
+  name: "mgmt_registrations_need_update"
+  type_id: 0x295c7202
+  offset: 512
+  bitsize: 1
+}
+member {
+  id: 0x9cc5058d
+  name: "mgmt_stypes"
+  type_id: 0x354de58d
+  offset: 576
+}
+member {
+  id: 0x356b0ede
+  name: "mht"
+  type_id: 0x0f55086a
+}
+member {
+  id: 0xf22c651d
+  name: "mib"
+  type_id: 0xf0ff70b4
+  offset: 3008
+}
+member {
+  id: 0x0d05ef84
+  name: "mibs"
+  type_id: 0x7b377d8f
+}
+member {
+  id: 0x0d374ef2
+  name: "mibs"
+  type_id: 0x49960bbd
+}
+member {
+  id: 0x0d3e3662
+  name: "mibs"
+  type_id: 0x40ee9bb0
+}
+member {
+  id: 0x0d669665
+  name: "mibs"
+  type_id: 0x184e9c69
+}
+member {
+  id: 0x0d690b57
+  name: "mibs"
+  type_id: 0x17d3ae97
+}
+member {
+  id: 0x0d6d743f
+  name: "mibs"
+  type_id: 0x13acc6e4
+}
+member {
+  id: 0x0dd3a4f3
+  name: "mibs"
+  type_id: 0xad7c0a89
+}
+member {
+  id: 0x0de345aa
+  name: "mibs"
+  type_id: 0x9d9d538b
+}
+member {
+  id: 0x0df37367
+  name: "mibs"
+  type_id: 0x8dab9ee6
+}
+member {
+  id: 0xfe301115
+  name: "microframe_index"
+  type_id: 0x0baa70a7
+}
+member {
+  id: 0x75da0c89
+  name: "mid"
+  type_id: 0xc9082b19
+  offset: 16
+}
+member {
+  id: 0x80e66035
+  name: "midi_list"
+  type_id: 0xd3c80119
+  offset: 2816
+}
+member {
+  id: 0x0fb003f6
+  name: "migrate_entry"
+  type_id: 0xd3c80119
+  offset: 640
+}
+member {
+  id: 0x4bad46f3
+  name: "migrate_folio"
+  type_id: 0x2c8b0a9f
+  offset: 768
+}
+member {
+  id: 0xdb33fcdf
+  name: "migrate_lock"
+  type_id: 0xf4933b90
+  offset: 17536
+}
+member {
+  id: 0x8edaa968
+  name: "migrate_page"
+  type_id: 0x2d9ade31
+  offset: 64
+}
+member {
+  id: 0xc9e8e147
+  name: "migrate_pfn"
+  type_id: 0x33756485
+  offset: 384
+}
+member {
+  id: 0xd1896a95
+  name: "migrate_task_rq"
+  type_id: 0x0f00978d
+  offset: 768
+}
+member {
+  id: 0x3fbe690c
+  name: "migrate_to_ram"
+  type_id: 0x39290604
+  offset: 64
+}
+member {
+  id: 0x3267ae0e
+  name: "migrated_time"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0xaea77217
+  name: "migratepage"
+  type_id: 0x2df5d84f
+  offset: 256
+}
+member {
+  id: 0x6e66fa31
+  name: "migratepages"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0x48f2053f
+  name: "migratetype"
+  type_id: 0x6720d32f
+  offset: 800
+}
+member {
+  id: 0x129a9597
+  name: "migration_disabled"
+  type_id: 0xc93e017b
+  offset: 9600
+}
+member {
+  id: 0xf0bb75eb
+  name: "migration_flags"
+  type_id: 0xc93e017b
+  offset: 9616
+}
+member {
+  id: 0x9ca3666b
+  name: "migration_pending"
+  type_id: 0x18bd6530
+  offset: 9536
+}
+member {
+  id: 0x3ebe7eb6
+  name: "mii"
+  type_id: 0x62249e35
+  offset: 2304
+}
+member {
+  id: 0xbf23b09d
+  name: "mii_ts"
+  type_id: 0x0917901f
+  offset: 12608
+}
+member {
+  id: 0xf902a2d9
+  name: "min"
+  type_id: 0x92233392
+}
+member {
+  id: 0xf902a638
+  name: "min"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0xf93e5aff
+  name: "min"
+  type_id: 0xaedb15fc
+}
+member {
+  id: 0xf95984fa
+  name: "min"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0xf95989c1
+  name: "min"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xf9631b9e
+  name: "min"
+  type_id: 0xf39d0370
+  offset: 448
+}
+member {
+  id: 0xf96c8ff7
+  name: "min"
+  type_id: 0xfc0e1dbd
+}
+member {
+  id: 0xf99b2b9a
+  name: "min"
+  type_id: 0x0baa70a7
+}
+member {
+  id: 0xf9a3f391
+  name: "min"
+  type_id: 0x33756485
+  offset: 1024
+}
+member {
+  id: 0xf9a3f425
+  name: "min"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0xf9a9c6e4
+  name: "min"
+  type_id: 0x39470e64
+}
+member {
+  id: 0xf9b93eec
+  name: "min"
+  type_id: 0x29bf06ba
+}
+member {
+  id: 0xf9be89bc
+  name: "min"
+  type_id: 0x2e0f9112
+  offset: 320
+}
+member {
+  id: 0xf9be8e7b
+  name: "min"
+  type_id: 0x2e0f9112
+}
+member {
+  id: 0xf9d5048c
+  name: "min"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xf9d506ec
+  name: "min"
+  type_id: 0x4585663f
+  offset: 416
+}
+member {
+  id: 0xf9d507a8
+  name: "min"
+  type_id: 0x4585663f
+  offset: 224
+}
+member {
+  id: 0xaa4f7dd4
+  name: "min_align"
+  type_id: 0xa8fff47c
+  offset: 1152
+}
+member {
+  id: 0xbefa25ce
+  name: "min_align_mask"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x2b31a625
+  name: "min_alloc_order"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0x5138d80c
+  name: "min_be"
+  type_id: 0x295c7202
+  offset: 640
+}
+member {
+  id: 0xc6b61399
+  name: "min_bit_rate"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x8c6c82a3
+  name: "min_blk_size"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0xb9842fda
+  name: "min_buffer"
+  type_id: 0xe62ebf07
+  offset: 2272
+}
+member {
+  id: 0x0e0e3c14
+  name: "min_buffers_needed"
+  type_id: 0xc9082b19
+  offset: 768
+}
+member {
+  id: 0x7b032040
+  name: "min_burst"
+  type_id: 0xc9082b19
+  offset: 1248
+}
+member {
+  id: 0x7b03235f
+  name: "min_burst"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0x603d49ac
+  name: "min_capacity"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x58931622
+  name: "min_cll"
+  type_id: 0xe8034002
+  offset: 48
+}
+member {
+  id: 0xe78649a9
+  name: "min_coredump"
+  type_id: 0x33756485
+  offset: 384
+}
+member {
+  id: 0xfbcf0c3f
+  name: "min_csma_backoffs"
+  type_id: 0x295c7202
+  offset: 1184
+}
+member {
+  id: 0x89edbaee
+  name: "min_delta_ns"
+  type_id: 0x92233392
+  offset: 320
+}
+member {
+  id: 0x496793e9
+  name: "min_delta_ticks"
+  type_id: 0x33756485
+  offset: 1088
+}
+member {
+  id: 0x4494ef70
+  name: "min_display_mastering_luminance"
+  type_id: 0x914dbfdc
+  offset: 272
+}
+member {
+  id: 0x44e38186
+  name: "min_display_mastering_luminance"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0x04911de9
+  name: "min_dropout_uV"
+  type_id: 0x6720d32f
+  offset: 864
+}
+member {
+  id: 0x3c4981e0
+  name: "min_dump_alloc"
+  type_id: 0xc9082b19
+  offset: 480
+}
+member {
+  id: 0x3c498797
+  name: "min_dump_alloc"
+  type_id: 0xc9082b19
+  offset: 320
+}
+member {
+  id: 0xe335a60c
+  name: "min_enc_key_size"
+  type_id: 0xb3e7bac9
+  offset: 6640
+}
+member {
+  id: 0x779ea23a
+  name: "min_flt"
+  type_id: 0x33756485
+  offset: 15360
+}
+member {
+  id: 0x779ea818
+  name: "min_flt"
+  type_id: 0x33756485
+  offset: 4288
+}
+member {
+  id: 0x83177db4
+  name: "min_fragment_size"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xd3806cc2
+  name: "min_fragments"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0xbe45212d
+  name: "min_frame_retries"
+  type_id: 0x29b77961
+  offset: 1200
+}
+member {
+  id: 0x8da5b0bd
+  name: "min_frame_size"
+  type_id: 0xe8034002
+  offset: 48
+}
+member {
+  id: 0x3ad5d587
+  name: "min_freq"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x3adbfdf7
+  name: "min_freq"
+  type_id: 0x4ba02d1a
+}
+member {
+  id: 0x8e48043b
+  name: "min_freq_notifiers"
+  type_id: 0x9249a64d
+  offset: 320
+}
+member {
+  id: 0xae8eb576
+  name: "min_freq_req"
+  type_id: 0x29082583
+  offset: 3072
+}
+member {
+  id: 0x143d796c
+  name: "min_gear"
+  type_id: 0xc9082b19
+  offset: 1600
+}
+member {
+  id: 0x41b56623
+  name: "min_header_len"
+  type_id: 0x5d8155a5
+  offset: 2384
+}
+member {
+  id: 0x9c64da5c
+  name: "min_height"
+  type_id: 0x6720d32f
+  offset: 4000
+}
+member {
+  id: 0x9ce5d0ee
+  name: "min_height"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0x9ce5d48d
+  name: "min_height"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x9ce5d9ef
+  name: "min_height"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x4c14136a
+  name: "min_hfreq_khz"
+  type_id: 0x295c7202
+  offset: 16
+}
+member {
+  id: 0x402764fb
+  name: "min_hw_heartbeat_ms"
+  type_id: 0x4585663f
+  offset: 544
+}
+member {
+  id: 0x2954b84e
+  name: "min_interval"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0x2fb1edd2
+  name: "min_keysize"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0xa51a50b8
+  name: "min_le_tx_power"
+  type_id: 0x901eaf6a
+  offset: 6992
+}
+member {
+  id: 0x638a0c13
+  name: "min_len"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x19313aaa
+  name: "min_length"
+  type_id: 0x4585663f
+  offset: 224
+}
+member {
+  id: 0xda7d62a6
+  name: "min_limit"
+  type_id: 0x4585663f
+  offset: 800
+}
+member {
+  id: 0x6532e1f2
+  name: "min_luminance"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xce310541
+  name: "min_maxbe"
+  type_id: 0x295c7202
+  offset: 1168
+}
+member {
+  id: 0x5aeef122
+  name: "min_minbe"
+  type_id: 0x295c7202
+  offset: 1152
+}
+member {
+  id: 0xd70b271f
+  name: "min_mtu"
+  type_id: 0x4585663f
+  offset: 2304
+}
+member {
+  id: 0x31458425
+  name: "min_nr"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x8ce23c6d
+  name: "min_partial"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x72e7acdc
+  name: "min_pixelclock"
+  type_id: 0xedf277ba
+  offset: 128
+}
+member {
+  id: 0x17f11969
+  name: "min_priority"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0x78e29322
+  name: "min_rate"
+  type_id: 0x33756485
+  offset: 1088
+}
+member {
+  id: 0x78e29ab5
+  name: "min_rate"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x78e29eff
+  name: "min_rate"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0x7a17cd67
+  name: "min_ratio"
+  type_id: 0x4585663f
+  offset: 576
+}
+member {
+  id: 0x9b764d84
+  name: "min_rev"
+  type_id: 0x295c7202
+  offset: 88
+}
+member {
+  id: 0x9b764ee0
+  name: "min_rev"
+  type_id: 0x295c7202
+  offset: 18440
+}
+member {
+  id: 0xe0731474
+  name: "min_rssi_thold"
+  type_id: 0xd41e888f
+  offset: 544
+}
+member {
+  id: 0xc9823ae8
+  name: "min_sel"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x8ae2ad7a
+  name: "min_seq"
+  type_id: 0x607419c2
+  offset: 64
+}
+member {
+  id: 0xf1475625
+  name: "min_shallow_depth"
+  type_id: 0x4585663f
+  offset: 416
+}
+member {
+  id: 0x2fff43e1
+  name: "min_size"
+  type_id: 0x914dbfdc
+  offset: 96
+}
+member {
+  id: 0xd0acf743
+  name: "min_speed_hz"
+  type_id: 0xc9082b19
+  offset: 7584
+}
+member {
+  id: 0x351e67e0
+  name: "min_timeout"
+  type_id: 0xc9082b19
+  offset: 10688
+}
+member {
+  id: 0x3592efa1
+  name: "min_timeout"
+  type_id: 0x4585663f
+  offset: 480
+}
+member {
+  id: 0xcdde5ab5
+  name: "min_tso_segs"
+  type_id: 0x1a3a7059
+  offset: 384
+}
+member {
+  id: 0x47fc27ee
+  name: "min_tx_rate"
+  type_id: 0xe62ebf07
+  offset: 416
+}
+member {
+  id: 0x73d133c9
+  name: "min_uA"
+  type_id: 0x6720d32f
+  offset: 160
+}
+member {
+  id: 0x9759f07e
+  name: "min_uV"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x9759f49f
+  name: "min_uV"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x9759fd45
+  name: "min_uV"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x977b57f6
+  name: "min_uV"
+  type_id: 0x4585663f
+  offset: 704
+}
+member {
+  id: 0x814997db
+  name: "min_usage"
+  type_id: 0xb02b353a
+  offset: 576
+}
+member {
+  id: 0xbe55e51d
+  name: "min_vfreq"
+  type_id: 0x914dbfdc
+}
+member {
+  id: 0xbeedf4d0
+  name: "min_vfreq"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x01a2cbed
+  name: "min_volt"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x63fbebde
+  name: "min_vruntime"
+  type_id: 0x92233392
+  offset: 320
+}
+member {
+  id: 0x3054acf7
+  name: "min_width"
+  type_id: 0x6720d32f
+  offset: 3968
+}
+member {
+  id: 0x30d5a793
+  name: "min_width"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x30d5ae10
+  name: "min_width"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x6f59832a
+  name: "min_win"
+  type_id: 0xc9082b19
+  offset: 512
+}
+member {
+  id: 0x6f598dab
+  name: "min_win"
+  type_id: 0xc9082b19
+  offset: 2016
+}
+member {
+  id: 0x822e89ea
+  name: "minimum"
+  type_id: 0xdd6eef0a
+  offset: 320
+}
+member {
+  id: 0x82dde7fd
+  name: "minimum"
+  type_id: 0x2e0f9112
+  offset: 768
+}
+member {
+  id: 0x82fc471c
+  name: "minimum"
+  type_id: 0x0faae5b1
+  offset: 32
+}
+member {
+  id: 0x82fc47c7
+  name: "minimum"
+  type_id: 0x0faae5b1
+  offset: 160
+}
+member {
+  id: 0x82fc4de0
+  name: "minimum"
+  type_id: 0x0faae5b1
+  offset: 320
+}
+member {
+  id: 0x0eef50fa
+  name: "miniq_egress"
+  type_id: 0x36f0fd32
+  offset: 8128
+}
+member {
+  id: 0xedd0275d
+  name: "miniq_ingress"
+  type_id: 0x36f0fd32
+  offset: 6656
+}
+member {
+  id: 0xc82c8398
+  name: "minor"
+  type_id: 0x0b8758d9
+  offset: 448
+}
+member {
+  id: 0xc8402040
+  name: "minor"
+  type_id: 0x6720d32f
+  offset: 224
+}
+member {
+  id: 0xc840214f
+  name: "minor"
+  type_id: 0x6720d32f
+  offset: 1184
+}
+member {
+  id: 0xc840222c
+  name: "minor"
+  type_id: 0x6720d32f
+  offset: 7360
+}
+member {
+  id: 0xc8402364
+  name: "minor"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xc84023cf
+  name: "minor"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0xc84023e1
+  name: "minor"
+  type_id: 0x6720d32f
+  offset: 9472
+}
+member {
+  id: 0xc840290d
+  name: "minor"
+  type_id: 0x6720d32f
+  offset: 8384
+}
+member {
+  id: 0xc8402dbb
+  name: "minor"
+  type_id: 0x6720d32f
+  offset: 544
+}
+member {
+  id: 0xc8402f4a
+  name: "minor"
+  type_id: 0x6720d32f
+  offset: 8576
+}
+member {
+  id: 0xc8628228
+  name: "minor"
+  type_id: 0x4585663f
+  offset: 2496
+}
+member {
+  id: 0xc8628803
+  name: "minor"
+  type_id: 0x4585663f
+  offset: 8704
+}
+member {
+  id: 0xc8ee06a7
+  name: "minor"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0xc8ee0a2c
+  name: "minor"
+  type_id: 0xc9082b19
+  offset: 480
+}
+member {
+  id: 0xc8ee0dac
+  name: "minor"
+  type_id: 0xc9082b19
+  offset: 3680
+}
+member {
+  id: 0x850041c9
+  name: "minor_class"
+  type_id: 0xb3e7bac9
+  offset: 4960
+}
+member {
+  id: 0x398f59dc
+  name: "minor_rev"
+  type_id: 0x295c7202
+  offset: 7752
+}
+member {
+  id: 0x398f5aba
+  name: "minor_rev"
+  type_id: 0x295c7202
+  offset: 11784
+}
+member {
+  id: 0x6f16a92e
+  name: "minor_start"
+  type_id: 0x6720d32f
+  offset: 384
+}
+member {
+  id: 0x9f985881
+  name: "minor_ver"
+  type_id: 0x914dbfdc
+  offset: 16
+}
+member {
+  id: 0xc326e22c
+  name: "minors"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x4d99c9ee
+  name: "minors_reserved"
+  type_id: 0x5d8155a5
+  offset: 290
+  bitsize: 1
+}
+member {
+  id: 0x096ecb61
+  name: "minutes"
+  type_id: 0xb3e7bac9
+  offset: 80
+}
+member {
+  id: 0xa7e5d320
+  name: "mipi_csi1"
+  type_id: 0xe49bfc8b
+}
+member {
+  id: 0xeda56dd3
+  name: "mipi_csi2"
+  type_id: 0xe72f0de6
+}
+member {
+  id: 0xe790793b
+  name: "mipi_dphy"
+  type_id: 0xb6562a7c
+}
+member {
+  id: 0x06473753
+  name: "misaligned"
+  type_id: 0x5d8155a5
+  offset: 816
+}
+member {
+  id: 0x7f32aab4
+  name: "misc"
+  type_id: 0xe8034002
+  offset: 1104
+}
+member {
+  id: 0x7f3c8068
+  name: "misc"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0x7ff3ff41
+  name: "misc"
+  type_id: 0x295c7202
+  offset: 120
+}
+member {
+  id: 0xd7ea8fc6
+  name: "misfit_task_load"
+  type_id: 0x33756485
+  offset: 23552
+}
+member {
+  id: 0xdc031d8b
+  name: "mispred"
+  type_id: 0xedf277ba
+  offset: 128
+  bitsize: 1
+}
+member {
+  id: 0x036970a0
+  name: "miss"
+  type_id: 0xb5631503
+  offset: 224
+}
+member {
+  id: 0xa02fc4ed
+  name: "miss_cnt"
+  type_id: 0x6720d32f
+  offset: 1024
+}
+member {
+  id: 0xe99b50d5
+  name: "miss_nest"
+  type_id: 0x37d7ca8b
+  offset: 192
+}
+member {
+  id: 0xa3f180be
+  name: "miss_type"
+  type_id: 0x914dbfdc
+  offset: 256
+}
+member {
+  id: 0xed3f02a4
+  name: "missed"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0xed6b55c9
+  name: "missed"
+  type_id: 0x33756485
+  offset: 512
+}
+member {
+  id: 0xd27f7167
+  name: "missed_events"
+  type_id: 0x6720d32f
+  offset: 576
+}
+member {
+  id: 0xa5a2b8a4
+  name: "misses"
+  type_id: 0x3a3eb2f9
+  offset: 128
+}
+member {
+  id: 0x20799ec4
+  name: "mixer_list"
+  type_id: 0xd3c80119
+  offset: 2944
+}
+member {
+  id: 0x91245448
+  name: "mixername"
+  type_id: 0x01ef5f77
+  offset: 1440
+}
+member {
+  id: 0x22e90ec4
+  name: "mk_active_refs"
+  type_id: 0xa722c13e
+  offset: 640
+}
+member {
+  id: 0x03febaff
+  name: "mk_decrypted_inodes"
+  type_id: 0xd3c80119
+  offset: 2368
+}
+member {
+  id: 0x3bd533ff
+  name: "mk_decrypted_inodes_lock"
+  type_id: 0xf313e71a
+  offset: 2496
+}
+member {
+  id: 0x00de838b
+  name: "mk_direct_keys"
+  type_id: 0xeeea5855
+  offset: 2560
+}
+member {
+  id: 0xbc7cb436
+  name: "mk_ino_hash_key"
+  type_id: 0x4edec64c
+  offset: 6784
+}
+member {
+  id: 0x0581471c
+  name: "mk_ino_hash_key_initialized"
+  type_id: 0x6d7f5ff6
+  offset: 6912
+}
+member {
+  id: 0x45fa3c76
+  name: "mk_iv_ino_lblk_32_keys"
+  type_id: 0xeeea5855
+  offset: 5376
+}
+member {
+  id: 0x89939ed5
+  name: "mk_iv_ino_lblk_64_keys"
+  type_id: 0xeeea5855
+  offset: 3968
+}
+member {
+  id: 0x651b0202
+  name: "mk_node"
+  type_id: 0x49a73111
+}
+member {
+  id: 0xfdc048a2
+  name: "mk_rcu_head"
+  type_id: 0xe3222f5b
+  offset: 704
+}
+member {
+  id: 0x246c64bd
+  name: "mk_secret"
+  type_id: 0x0fa2b1e5
+  offset: 832
+}
+member {
+  id: 0x52c54e70
+  name: "mk_sem"
+  type_id: 0x28b9ec9a
+  offset: 128
+}
+member {
+  id: 0xde332cd8
+  name: "mk_spec"
+  type_id: 0xb97ba827
+  offset: 1984
+}
+member {
+  id: 0x763577a6
+  name: "mk_struct_refs"
+  type_id: 0xa722c13e
+  offset: 672
+}
+member {
+  id: 0x94531199
+  name: "mk_users"
+  type_id: 0x01a688ae
+  offset: 2304
+}
+member {
+  id: 0x7cc537b5
+  name: "mkdir"
+  type_id: 0x2d100c08
+  offset: 576
+}
+member {
+  id: 0x7cc6402a
+  name: "mkdir"
+  type_id: 0x2e6a004b
+  offset: 64
+}
+member {
+  id: 0x98ea5c80
+  name: "mknod"
+  type_id: 0x2d1002b8
+  offset: 704
+}
+member {
+  id: 0x1195bfbc
+  name: "mkobj"
+  type_id: 0x73375287
+  offset: 640
+}
+member {
+  id: 0x11f0d9f9
+  name: "mkobj"
+  type_id: 0x165ded06
+  offset: 1344
+}
+member {
+  id: 0xa28764f4
+  name: "mkswapd"
+  type_id: 0x4b75a8e4
+  offset: 53888
+}
+member {
+  id: 0x456eb44b
+  name: "ml_priv"
+  type_id: 0x18bd6530
+  offset: 10304
+}
+member {
+  id: 0xf5d88955
+  name: "ml_priv_type"
+  type_id: 0xc18cfef2
+  offset: 10368
+}
+member {
+  id: 0xbc42139d
+  name: "mld_capa_and_ops"
+  type_id: 0x914dbfdc
+  offset: 224
+}
+member {
+  id: 0x5134194c
+  name: "mldv1_unsolicited_report_interval"
+  type_id: 0x0faae5b1
+  offset: 384
+}
+member {
+  id: 0x90672bf6
+  name: "mldv2_unsolicited_report_interval"
+  type_id: 0x0faae5b1
+  offset: 416
+}
+member {
+  id: 0xda32aae8
+  name: "mlock"
+  type_id: 0xa7c362b0
+  offset: 7488
+}
+member {
+  id: 0xda32aefe
+  name: "mlock"
+  type_id: 0xa7c362b0
+}
+member {
+  id: 0x3dbb56a7
+  name: "mlock_count"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x3219aca6
+  name: "mls_enabled"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x3017b088
+  name: "mm"
+  type_id: 0x2953a412
+}
+member {
+  id: 0x3017b841
+  name: "mm"
+  type_id: 0x2953a412
+  offset: 192
+}
+member {
+  id: 0x3025d10a
+  name: "mm"
+  type_id: 0x1b36c7a2
+  offset: 64
+}
+member {
+  id: 0x3025d29c
+  name: "mm"
+  type_id: 0x1b36c7a2
+  offset: 448
+}
+member {
+  id: 0x3025d2d5
+  name: "mm"
+  type_id: 0x1b36c7a2
+  offset: 11520
+}
+member {
+  id: 0x3025d5eb
+  name: "mm"
+  type_id: 0x1b36c7a2
+}
+member {
+  id: 0x3025d651
+  name: "mm"
+  type_id: 0x1b36c7a2
+  offset: 832
+}
+member {
+  id: 0x3025dc29
+  name: "mm"
+  type_id: 0x1b36c7a2
+  offset: 128
+}
+member {
+  id: 0x3025dd18
+  name: "mm"
+  type_id: 0x1b36c7a2
+  offset: 960
+}
+member {
+  id: 0x3025dd22
+  name: "mm"
+  type_id: 0x1b36c7a2
+  offset: 192
+}
+member {
+  id: 0xf2c3ca3b
+  name: "mm_account"
+  type_id: 0x1b36c7a2
+  offset: 8320
+}
+member {
+  id: 0x8a0133fe
+  name: "mm_count"
+  type_id: 0x74d29cf1
+  offset: 576
+}
+member {
+  id: 0x7fa172ce
+  name: "mm_flags"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0xd1665174
+  name: "mm_list"
+  type_id: 0xc16769d9
+  offset: 17984
+}
+member {
+  id: 0x44f084f8
+  name: "mm_lock"
+  type_id: 0xa7c362b0
+  offset: 512
+}
+member {
+  id: 0xe0fc554a
+  name: "mm_lock_seq"
+  type_id: 0x6720d32f
+  offset: 1408
+}
+member {
+  id: 0x315ebfd5
+  name: "mm_mt"
+  type_id: 0xa179a8c5
+}
+member {
+  id: 0xa69ad382
+  name: "mm_ops"
+  type_id: 0x0d97a2b2
+  offset: 128
+}
+member {
+  id: 0x0abfe66e
+  name: "mm_state"
+  type_id: 0xeb51a15e
+  offset: 10432
+}
+member {
+  id: 0xa668b012
+  name: "mm_stats"
+  type_id: 0xb8696763
+  offset: 1216
+}
+member {
+  id: 0x22548d82
+  name: "mm_users"
+  type_id: 0x74d29cf1
+  offset: 544
+}
+member {
+  id: 0xa83cff72
+  name: "mm_walk"
+  type_id: 0x2bf214c5
+  offset: 64
+}
+member {
+  id: 0xa89287d6
+  name: "mm_walk"
+  type_id: 0x8588b58b
+  offset: 67584
+}
+member {
+  id: 0x87d4d5fe
+  name: "mmap"
+  type_id: 0x07ba491c
+}
+member {
+  id: 0x87fca00b
+  name: "mmap"
+  type_id: 0x2fc4a4b7
+  offset: 512
+}
+member {
+  id: 0x87fd15d3
+  name: "mmap"
+  type_id: 0x2e7c1d11
+  offset: 640
+}
+member {
+  id: 0x87fd6d59
+  name: "mmap"
+  type_id: 0x2e00d3ff
+  offset: 704
+}
+member {
+  id: 0x87fd73fe
+  name: "mmap"
+  type_id: 0x2e1b3edd
+  offset: 448
+}
+member {
+  id: 0x87fdbe87
+  name: "mmap"
+  type_id: 0x2ed842b7
+  offset: 576
+}
+member {
+  id: 0x87fe4e24
+  name: "mmap"
+  type_id: 0x2d214d35
+  offset: 4288
+}
+member {
+  id: 0x87fe9188
+  name: "mmap"
+  type_id: 0x2df69197
+  offset: 768
+}
+member {
+  id: 0x87feb639
+  name: "mmap"
+  type_id: 0x2ddef933
+  offset: 448
+}
+member {
+  id: 0x87ff0315
+  name: "mmap"
+  type_id: 0x2c6e66df
+  offset: 1216
+}
+member {
+  id: 0x87ff13ad
+  name: "mmap"
+  type_id: 0x2c74b483
+  offset: 768
+}
+member {
+  id: 0x87ff14d5
+  name: "mmap"
+  type_id: 0x2c71c47e
+  offset: 896
+}
+member {
+  id: 0x87ff1c74
+  name: "mmap"
+  type_id: 0x2c74b483
+  offset: 448
+}
+member {
+  id: 0x87ff323d
+  name: "mmap"
+  type_id: 0x2c54f8f3
+  offset: 576
+}
+member {
+  id: 0x87ff3445
+  name: "mmap"
+  type_id: 0x2c5c850c
+  offset: 448
+}
+member {
+  id: 0x87ff9425
+  name: "mmap"
+  type_id: 0x2cf26143
+  offset: 2240
+}
+member {
+  id: 0x87ff9af3
+  name: "mmap"
+  type_id: 0x2cfc36ab
+  offset: 576
+}
+member {
+  id: 0x87ffd497
+  name: "mmap"
+  type_id: 0x2cb1867e
+  offset: 896
+}
+member {
+  id: 0xb8ecf3f7
+  name: "mmap"
+  type_id: 0xedf277ba
+  offset: 328
+  bitsize: 1
+}
+member {
+  id: 0xde651ec1
+  name: "mmap2"
+  type_id: 0xedf277ba
+  offset: 343
+  bitsize: 1
+}
+member {
+  id: 0xb4fc5530
+  name: "mmap_base"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0xb4fc5ce9
+  name: "mmap_base"
+  type_id: 0x33756485
+  offset: 576
+}
+member {
+  id: 0xdd180b6b
+  name: "mmap_changing"
+  type_id: 0x74d29cf1
+  offset: 928
+}
+member {
+  id: 0xc392230a
+  name: "mmap_count"
+  type_id: 0x74d29cf1
+  offset: 2720
+}
+member {
+  id: 0xc3922376
+  name: "mmap_count"
+  type_id: 0x74d29cf1
+  offset: 5824
+}
+member {
+  id: 0xc392280d
+  name: "mmap_count"
+  type_id: 0x74d29cf1
+  offset: 960
+}
+member {
+  id: 0x009bd1e3
+  name: "mmap_data"
+  type_id: 0xedf277ba
+  offset: 337
+  bitsize: 1
+}
+member {
+  id: 0xe0967515
+  name: "mmap_legacy_base"
+  type_id: 0x33756485
+  offset: 320
+}
+member {
+  id: 0xa555816f
+  name: "mmap_lock"
+  type_id: 0xa7c362b0
+  offset: 1344
+}
+member {
+  id: 0xa5daf9cc
+  name: "mmap_lock"
+  type_id: 0x28b9ec9a
+  offset: 768
+}
+member {
+  id: 0x7f0fa5a9
+  name: "mmap_locked"
+  type_id: 0x33756485
+  offset: 1024
+}
+member {
+  id: 0xcc8a92dc
+  name: "mmap_miss"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0x0c233c10
+  name: "mmap_mutex"
+  type_id: 0xa7c362b0
+  offset: 5440
+}
+member {
+  id: 0xc0287d87
+  name: "mmap_size"
+  type_id: 0x33756485
+  offset: 640
+}
+member {
+  id: 0x80fb247f
+  name: "mmap_supported_flags"
+  type_id: 0x33756485
+  offset: 832
+}
+member {
+  id: 0x40c6ec32
+  name: "mmap_user"
+  type_id: 0x181ee594
+  offset: 1088
+}
+member {
+  id: 0x02cb4f99
+  name: "mmapped"
+  type_id: 0x6d7f5ff6
+  offset: 1344
+  bitsize: 1
+}
+member {
+  id: 0xfed3cf4a
+  name: "mmc"
+  type_id: 0x36194830
+  offset: 576
+}
+member {
+  id: 0x2716b082
+  name: "mmc_avail_type"
+  type_id: 0x4585663f
+  offset: 12000
+}
+member {
+  id: 0xd2373134
+  name: "mmc_host_ops"
+  type_id: 0x33276ae3
+  offset: 640
+}
+member {
+  id: 0xcb1b98a9
+  name: "mmca_vsn"
+  type_id: 0x5d8155a5
+  offset: 8
+}
+member {
+  id: 0xbe0bc580
+  name: "mmds_present"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x4779a89b
+  name: "mmio"
+  type_id: 0x373a3dac
+}
+member {
+  id: 0x78030744
+  name: "mmio_always_on"
+  type_id: 0x4585663f
+  offset: 1340
+  bitsize: 1
+}
+member {
+  id: 0x6138df6b
+  name: "mmio_base"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0x41a58807
+  name: "mmio_cur_fragment"
+  type_id: 0x6720d32f
+  offset: 1440
+}
+member {
+  id: 0xdd74e29a
+  name: "mmio_enabled"
+  type_id: 0x178c0a08
+  offset: 64
+}
+member {
+  id: 0x22f5be35
+  name: "mmio_exit_kernel"
+  type_id: 0x92233392
+  offset: 6912
+}
+member {
+  id: 0x3c9c64dc
+  name: "mmio_exit_user"
+  type_id: 0x92233392
+  offset: 6848
+}
+member {
+  id: 0x0abc4886
+  name: "mmio_fragments"
+  type_id: 0x5d2762c3
+  offset: 1536
+}
+member {
+  id: 0xe4aa6cb8
+  name: "mmio_is_write"
+  type_id: 0x6720d32f
+  offset: 1408
+}
+member {
+  id: 0xdba12957
+  name: "mmio_len"
+  type_id: 0xe62ebf07
+  offset: 512
+}
+member {
+  id: 0xb16b8efe
+  name: "mmio_needed"
+  type_id: 0x6720d32f
+  offset: 1344
+}
+member {
+  id: 0x22a96429
+  name: "mmio_nr_fragments"
+  type_id: 0x6720d32f
+  offset: 1472
+}
+member {
+  id: 0xf337f353
+  name: "mmio_read_completed"
+  type_id: 0x6720d32f
+  offset: 1376
+}
+member {
+  id: 0x12cc7367
+  name: "mmio_start"
+  type_id: 0x33756485
+  offset: 448
+}
+member {
+  id: 0x4f86a396
+  name: "mmlist"
+  type_id: 0xd3c80119
+  offset: 1280
+}
+member {
+  id: 0x6d5a2dc5
+  name: "mmu"
+  type_id: 0x38e86333
+  offset: 192
+}
+member {
+  id: 0x6dab2c05
+  name: "mmu"
+  type_id: 0xc9e16a53
+}
+member {
+  id: 0x1c0c4ea6
+  name: "mmu_invalidate_in_progress"
+  type_id: 0xfc0e1dbd
+  offset: 26048
+}
+member {
+  id: 0xf7c73e7d
+  name: "mmu_invalidate_range_end"
+  type_id: 0x33756485
+  offset: 26176
+}
+member {
+  id: 0xc81d2fc7
+  name: "mmu_invalidate_range_start"
+  type_id: 0x33756485
+  offset: 26112
+}
+member {
+  id: 0x59a47d0f
+  name: "mmu_invalidate_seq"
+  type_id: 0x33756485
+  offset: 25984
+}
+member {
+  id: 0x833819ed
+  name: "mmu_lock"
+  type_id: 0xf4933b90
+}
+member {
+  id: 0x4938a60d
+  name: "mmu_notifier"
+  type_id: 0x846ab93f
+  offset: 25408
+}
+member {
+  id: 0x18b48436
+  name: "mmu_page_cache"
+  type_id: 0xa2ba72d6
+}
+member {
+  id: 0x1a817692
+  name: "mn_active_invalidate_count"
+  type_id: 0x33756485
+  offset: 18368
+}
+member {
+  id: 0x8174053d
+  name: "mn_invalidate_lock"
+  type_id: 0xf313e71a
+  offset: 18304
+}
+member {
+  id: 0xf11c4ad7
+  name: "mn_memslots_update_rcuwait"
+  type_id: 0xdba44af3
+  offset: 18432
+}
+member {
+  id: 0x32301a1f
+  name: "mnt"
+  type_id: 0x9871ee6b
+  offset: 256
+}
+member {
+  id: 0x3284e718
+  name: "mnt"
+  type_id: 0x2c8c423d
+}
+member {
+  id: 0x6af18925
+  name: "mnt_child"
+  type_id: 0xd3c80119
+  offset: 1088
+}
+member {
+  id: 0x5dfed4f8
+  name: "mnt_count"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xcc1d8de2
+  name: "mnt_devname"
+  type_id: 0x3e10b518
+  offset: 1344
+}
+member {
+  id: 0xa838376f
+  name: "mnt_expire"
+  type_id: 0xd3c80119
+  offset: 1536
+}
+member {
+  id: 0x282f13c3
+  name: "mnt_expiry_mark"
+  type_id: 0x6720d32f
+  offset: 2656
+}
+member {
+  id: 0xe1694592
+  name: "mnt_flags"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x9e8f483d
+  name: "mnt_fsnotify_marks"
+  type_id: 0x3bd2bf42
+  offset: 2496
+}
+member {
+  id: 0xbe378579
+  name: "mnt_fsnotify_mask"
+  type_id: 0xe62ebf07
+  offset: 2560
+}
+member {
+  id: 0x79ca6e96
+  name: "mnt_group_id"
+  type_id: 0x6720d32f
+  offset: 2624
+}
+member {
+  id: 0x119666b3
+  name: "mnt_hash"
+  type_id: 0x49a73111
+}
+member {
+  id: 0xef1875a1
+  name: "mnt_id"
+  type_id: 0x92233392
+  offset: 1088
+}
+member {
+  id: 0xefed76c5
+  name: "mnt_id"
+  type_id: 0x6720d32f
+  offset: 2592
+}
+member {
+  id: 0xac4342e9
+  name: "mnt_instance"
+  type_id: 0xd3c80119
+  offset: 1216
+}
+member {
+  id: 0xe0213f3e
+  name: "mnt_list"
+  type_id: 0xd3c80119
+  offset: 1408
+}
+member {
+  id: 0x572723a9
+  name: "mnt_llist"
+  type_id: 0x214d9bc0
+}
+member {
+  id: 0x57272c55
+  name: "mnt_llist"
+  type_id: 0x214d9bc0
+  offset: 9920
+}
+member {
+  id: 0x145d0dca
+  name: "mnt_master"
+  type_id: 0x17bdfa07
+  offset: 2048
+}
+member {
+  id: 0x4bfbc43c
+  name: "mnt_mountpoint"
+  type_id: 0x120540d1
+  offset: 192
+}
+member {
+  id: 0x30974d0b
+  name: "mnt_mounts"
+  type_id: 0xd3c80119
+  offset: 960
+}
+member {
+  id: 0xd5c53e09
+  name: "mnt_mp"
+  type_id: 0x3f4ebacb
+  offset: 2176
+}
+member {
+  id: 0x4c55a243
+  name: "mnt_mp_list"
+  type_id: 0x49a73111
+}
+member {
+  id: 0x22c37289
+  name: "mnt_ns"
+  type_id: 0x2d7ea466
+  offset: 2112
+}
+member {
+  id: 0x22c37402
+  name: "mnt_ns"
+  type_id: 0x2d7ea466
+  offset: 192
+}
+member {
+  id: 0x17d8121e
+  name: "mnt_parent"
+  type_id: 0x17bdfa07
+  offset: 128
+}
+member {
+  id: 0x391182fa
+  name: "mnt_pcp"
+  type_id: 0x14265d92
+  offset: 896
+}
+member {
+  id: 0xe6e98d17
+  name: "mnt_pins"
+  type_id: 0x5e8dc7f4
+  offset: 2688
+}
+member {
+  id: 0x49d1113e
+  name: "mnt_rcu"
+  type_id: 0xe3222f5b
+}
+member {
+  id: 0xc615127f
+  name: "mnt_root"
+  type_id: 0x120540d1
+}
+member {
+  id: 0x29094539
+  name: "mnt_sb"
+  type_id: 0x26ee682a
+  offset: 64
+}
+member {
+  id: 0x057a2026
+  name: "mnt_share"
+  type_id: 0xd3c80119
+  offset: 1664
+}
+member {
+  id: 0xe097253c
+  name: "mnt_slave"
+  type_id: 0xd3c80119
+  offset: 1920
+}
+member {
+  id: 0x6e563301
+  name: "mnt_slave_list"
+  type_id: 0xd3c80119
+  offset: 1792
+}
+member {
+  id: 0x38595af7
+  name: "mnt_stuck_children"
+  type_id: 0x5e8dc7f4
+  offset: 2752
+}
+member {
+  id: 0x16c2a0bb
+  name: "mnt_umount"
+  type_id: 0x49a73111
+}
+member {
+  id: 0xbba7a8bf
+  name: "mnt_umounting"
+  type_id: 0xd3c80119
+  offset: 2368
+}
+member {
+  id: 0xf8572128
+  name: "mnt_userns"
+  type_id: 0x0fabaf3b
+  offset: 192
+}
+member {
+  id: 0x9918aa5b
+  name: "mnt_writers"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x66b5a73e
+  name: "mockdev"
+  type_id: 0x0258f96e
+  offset: 8448
+}
+member {
+  id: 0x8c1b6635
+  name: "mod"
+  type_id: 0x0b27dc43
+  offset: 1600
+}
+member {
+  id: 0x8c1b664f
+  name: "mod"
+  type_id: 0x0b27dc43
+  offset: 128
+}
+member {
+  id: 0x8c1b6723
+  name: "mod"
+  type_id: 0x0b27dc43
+  offset: 768
+}
+member {
+  id: 0x8c1b6b6c
+  name: "mod"
+  type_id: 0x0b27dc43
+  offset: 64
+}
+member {
+  id: 0x8c1b6f8d
+  name: "mod"
+  type_id: 0x0b27dc43
+}
+member {
+  id: 0x413b00d4
+  name: "mod_name"
+  type_id: 0x3e10b518
+  offset: 1856
+}
+member {
+  id: 0x413b0300
+  name: "mod_name"
+  type_id: 0x3e10b518
+  offset: 192
+}
+member {
+  id: 0x413b0c0e
+  name: "mod_name"
+  type_id: 0x3e10b518
+  offset: 320
+}
+member {
+  id: 0x2f2ce7e5
+  name: "modalias"
+  type_id: 0x5adf57ae
+  offset: 7360
+}
+member {
+  id: 0x2f2ce8a8
+  name: "modalias"
+  type_id: 0x5adf57ae
+  offset: 7680
+}
+member {
+  id: 0x8709c295
+  name: "mode"
+  type_id: 0x94d699ef
+  offset: 384
+}
+member {
+  id: 0x871ca035
+  name: "mode"
+  type_id: 0x81bb7781
+  offset: 1152
+}
+member {
+  id: 0x871cac1a
+  name: "mode"
+  type_id: 0x81bb7781
+  offset: 1408
+}
+member {
+  id: 0x872ef553
+  name: "mode"
+  type_id: 0xb3e7bac9
+  offset: 448
+}
+member {
+  id: 0x872ef7a4
+  name: "mode"
+  type_id: 0xb3e7bac9
+  offset: 496
+}
+member {
+  id: 0x8740e6e7
+  name: "mode"
+  type_id: 0xddf37902
+}
+member {
+  id: 0x875419a3
+  name: "mode"
+  type_id: 0xc9082b19
+  offset: 7488
+}
+member {
+  id: 0x875b7c69
+  name: "mode"
+  type_id: 0xc66085ec
+  offset: 576
+}
+member {
+  id: 0x8770e308
+  name: "mode"
+  type_id: 0xedf277ba
+  offset: 64
+}
+member {
+  id: 0x87762b79
+  name: "mode"
+  type_id: 0xeb3a06b4
+  offset: 64
+}
+member {
+  id: 0x877b3b21
+  name: "mode"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x877b3ce6
+  name: "mode"
+  type_id: 0xe62ebf07
+  offset: 320
+}
+member {
+  id: 0x87866629
+  name: "mode"
+  type_id: 0x1b7e8c48
+  offset: 32
+}
+member {
+  id: 0x878f4209
+  name: "mode"
+  type_id: 0x1253769c
+  offset: 64
+}
+member {
+  id: 0x878f42b1
+  name: "mode"
+  type_id: 0x1253769c
+  offset: 352
+}
+member {
+  id: 0x878f4b08
+  name: "mode"
+  type_id: 0x1253769c
+  offset: 160
+}
+member {
+  id: 0x878f4bd3
+  name: "mode"
+  type_id: 0x1253769c
+  offset: 32
+}
+member {
+  id: 0x878f4c6b
+  name: "mode"
+  type_id: 0x1253769c
+  offset: 1344
+}
+member {
+  id: 0x878f4f04
+  name: "mode"
+  type_id: 0x1253769c
+  offset: 912
+}
+member {
+  id: 0x878f4f9a
+  name: "mode"
+  type_id: 0x1253769c
+  offset: 576
+}
+member {
+  id: 0x879d0cfa
+  name: "mode"
+  type_id: 0x0015fed8
+  offset: 5312
+}
+member {
+  id: 0x87ae641b
+  name: "mode"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x87b444d7
+  name: "mode"
+  type_id: 0x295c7202
+  offset: 32
+}
+member {
+  id: 0x87b44752
+  name: "mode"
+  type_id: 0x295c7202
+  offset: 16
+}
+member {
+  id: 0x87b4487e
+  name: "mode"
+  type_id: 0x295c7202
+  offset: 384
+}
+member {
+  id: 0x87b449ec
+  name: "mode"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x87b44a3f
+  name: "mode"
+  type_id: 0x295c7202
+  offset: 584
+}
+member {
+  id: 0x87b7e2b8
+  name: "mode"
+  type_id: 0x2afee447
+  offset: 128
+}
+member {
+  id: 0x87be06bf
+  name: "mode"
+  type_id: 0x231fce4e
+  offset: 8000
+}
+member {
+  id: 0x87d8997b
+  name: "mode"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x87d89d18
+  name: "mode"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0x87db819c
+  name: "mode"
+  type_id: 0x469ea43a
+  offset: 896
+}
+member {
+  id: 0x87efc974
+  name: "mode"
+  type_id: 0x72d1d1c0
+  offset: 32
+}
+member {
+  id: 0x87fa34df
+  name: "mode"
+  type_id: 0x6720d32f
+  offset: 384
+}
+member {
+  id: 0x87fa354d
+  name: "mode"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x87fa3649
+  name: "mode"
+  type_id: 0x6720d32f
+  offset: 7328
+}
+member {
+  id: 0x87fa3876
+  name: "mode"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x87fa3e55
+  name: "mode"
+  type_id: 0x6720d32f
+  offset: 512
+}
+member {
+  id: 0x18fb1318
+  name: "mode_bits"
+  type_id: 0xc9082b19
+  offset: 7488
+}
+member {
+  id: 0x8de5340f
+  name: "mode_blob"
+  type_id: 0x343ebce3
+  offset: 2112
+}
+member {
+  id: 0xcb411f2d
+  name: "mode_changed"
+  type_id: 0x6d7f5ff6
+  offset: 81
+  bitsize: 1
+}
+member {
+  id: 0xe56a9313
+  name: "mode_config"
+  type_id: 0xb31a6532
+  offset: 3392
+}
+member {
+  id: 0x9d25f138
+  name: "mode_data"
+  type_id: 0x85164ba0
+  offset: 12032
+}
+member {
+  id: 0x0014ce38
+  name: "mode_deltas"
+  type_id: 0x48aeeb39
+  offset: 32
+}
+member {
+  id: 0x62942e02
+  name: "mode_fixup"
+  type_id: 0x37e14c8b
+  offset: 128
+}
+member {
+  id: 0x6294a6c4
+  name: "mode_fixup"
+  type_id: 0x37688119
+  offset: 192
+}
+member {
+  id: 0x6295dd9f
+  name: "mode_fixup"
+  type_id: 0x361bb89d
+  offset: 256
+}
+member {
+  id: 0x8b426491
+  name: "mode_flags"
+  type_id: 0x33756485
+  offset: 7616
+}
+member {
+  id: 0x4d5b509d
+  name: "mode_follower"
+  type_id: 0x295c7202
+  offset: 328
+}
+member {
+  id: 0x21928834
+  name: "mode_ids"
+  type_id: 0xe1a31370
+  offset: 7360
+}
+member {
+  id: 0x21928d6a
+  name: "mode_ids"
+  type_id: 0xe1a31370
+  offset: 7488
+}
+member {
+  id: 0x0d8b5e63
+  name: "mode_initiator"
+  type_id: 0x295c7202
+  offset: 320
+}
+member {
+  id: 0xba4b6457
+  name: "mode_set"
+  type_id: 0x2ecd86e5
+  offset: 320
+}
+member {
+  id: 0xba6949f0
+  name: "mode_set"
+  type_id: 0x0ce674ad
+  offset: 384
+}
+member {
+  id: 0xba69d8ee
+  name: "mode_set"
+  type_id: 0x0c713f3f
+  offset: 320
+}
+member {
+  id: 0xf6f80d01
+  name: "mode_set_base"
+  type_id: 0x2e84d59a
+  offset: 448
+}
+member {
+  id: 0x10cc8e3a
+  name: "mode_set_base_atomic"
+  type_id: 0x2ed26c2f
+  offset: 512
+}
+member {
+  id: 0x03bcce6b
+  name: "mode_set_nofb"
+  type_id: 0x0da39a23
+  offset: 384
+}
+member {
+  id: 0xf7b84575
+  name: "mode_valid"
+  type_id: 0x267a5962
+  offset: 192
+}
+member {
+  id: 0xf7b855e2
+  name: "mode_valid"
+  type_id: 0x266bc5f5
+  offset: 128
+}
+member {
+  id: 0xf7b8e089
+  name: "mode_valid"
+  type_id: 0x26dfa568
+  offset: 192
+}
+member {
+  id: 0xf7b93c75
+  name: "mode_valid"
+  type_id: 0x270252a3
+  offset: 128
+}
+member {
+  id: 0xf7b9b3a9
+  name: "mode_valid"
+  type_id: 0x2780ad74
+  offset: 64
+}
+member {
+  id: 0xf7bb9c6c
+  name: "mode_valid"
+  type_id: 0x25ab8941
+}
+member {
+  id: 0x54502f24
+  name: "mode_valid_ctx"
+  type_id: 0x2ec1963f
+  offset: 192
+}
+member {
+  id: 0xc598fcc4
+  name: "modedb"
+  type_id: 0x0015fed8
+  offset: 256
+}
+member {
+  id: 0xc3fe8392
+  name: "modedb_len"
+  type_id: 0xe62ebf07
+  offset: 704
+}
+member {
+  id: 0xdf104525
+  name: "model"
+  type_id: 0x5adf57ae
+  offset: 128
+}
+member {
+  id: 0xdf4a5074
+  name: "model"
+  type_id: 0x00c72527
+  offset: 64
+}
+member {
+  id: 0xdf748487
+  name: "model"
+  type_id: 0x3e10b518
+  offset: 2048
+}
+member {
+  id: 0xdf7596d4
+  name: "model"
+  type_id: 0x3f0185ef
+  offset: 64
+}
+member {
+  id: 0xdf956694
+  name: "model"
+  type_id: 0xdff52411
+}
+member {
+  id: 0xdfacb3c8
+  name: "model"
+  type_id: 0xe62ebf07
+  offset: 736
+}
+member {
+  id: 0xfe049796
+  name: "modelist"
+  type_id: 0xd3c80119
+  offset: 5184
+}
+member {
+  id: 0x840364bd
+  name: "modes"
+  type_id: 0x4585663f
+  offset: 768
+}
+member {
+  id: 0x84036c13
+  name: "modes"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x8421c9a6
+  name: "modes"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x84952387
+  name: "modes"
+  type_id: 0xd3c80119
+  offset: 1408
+}
+member {
+  id: 0x84a0ca09
+  name: "modes"
+  type_id: 0xe62ebf07
+  offset: 2208
+}
+member {
+  id: 0x5d042d88
+  name: "modes_supported"
+  type_id: 0xf89d773e
+  offset: 256
+}
+member {
+  id: 0xc817cd42
+  name: "modeset_mutex"
+  type_id: 0xa7c362b0
+  offset: 384
+}
+member {
+  id: 0x6bced63f
+  name: "modesets"
+  type_id: 0x3c21809c
+  offset: 768
+}
+member {
+  id: 0xc887e988
+  name: "modified"
+  type_id: 0x4585663f
+  offset: 1152
+  bitsize: 1
+}
+member {
+  id: 0x50182bc1
+  name: "modifier"
+  type_id: 0x1c898f28
+  offset: 960
+}
+member {
+  id: 0x50b39241
+  name: "modifier"
+  type_id: 0xb7318ef4
+  offset: 576
+}
+member {
+  id: 0xd1fae487
+  name: "modifier_count"
+  type_id: 0x4585663f
+  offset: 1344
+}
+member {
+  id: 0x37418726
+  name: "modifiers"
+  type_id: 0x0db25a6d
+  offset: 1280
+}
+member {
+  id: 0x77b94c0b
+  name: "modifiers_property"
+  type_id: 0x2a670b41
+  offset: 9600
+}
+member {
+  id: 0x93d2d8d5
+  name: "modinfo_attrs"
+  type_id: 0x1d4ed289
+  offset: 1664
+}
+member {
+  id: 0xe6739132
+  name: "modname"
+  type_id: 0x3e10b518
+}
+member {
+  id: 0x2940fa05
+  name: "modulation"
+  type_id: 0xe62ebf07
+  offset: 192
+}
+member {
+  id: 0x29cbacaa
+  name: "modulation"
+  type_id: 0x6d7f5ff6
+  offset: 88
+}
+member {
+  id: 0xc1f98b0b
+  name: "modulator"
+  type_id: 0xe62ebf07
+  offset: 352
+}
+member {
+  id: 0x964c8c87
+  name: "module"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0x964f2a5d
+  name: "module"
+  type_id: 0x1b1bbf35
+}
+member {
+  id: 0x965f1149
+  name: "module"
+  type_id: 0x0b27dc43
+  offset: 448
+}
+member {
+  id: 0x965f11f9
+  name: "module"
+  type_id: 0x0b27dc43
+  offset: 320
+}
+member {
+  id: 0x965f12df
+  name: "module"
+  type_id: 0x0b27dc43
+  offset: 64
+}
+member {
+  id: 0x965f163e
+  name: "module"
+  type_id: 0x0b27dc43
+}
+member {
+  id: 0x965f1695
+  name: "module"
+  type_id: 0x0b27dc43
+  offset: 256
+}
+member {
+  id: 0x965f1e90
+  name: "module"
+  type_id: 0x0b27dc43
+  offset: 768
+}
+member {
+  id: 0x965f1ef7
+  name: "module"
+  type_id: 0x0b27dc43
+  offset: 192
+}
+member {
+  id: 0x965f1f0d
+  name: "module"
+  type_id: 0x0b27dc43
+  offset: 3136
+}
+member {
+  id: 0x965f1ffc
+  name: "module"
+  type_id: 0x0b27dc43
+  offset: 128
+}
+member {
+  id: 0x96d0f9f7
+  name: "module"
+  type_id: 0x84c81534
+}
+member {
+  id: 0x1229148b
+  name: "module_eeprom"
+  type_id: 0x2ec34144
+  offset: 3264
+}
+member {
+  id: 0x4877b1eb
+  name: "module_get_upon_open"
+  type_id: 0x4585663f
+  offset: 2560
+  bitsize: 1
+}
+member {
+  id: 0x1a03b22f
+  name: "module_info"
+  type_id: 0x2ecf465d
+  offset: 3200
+}
+member {
+  id: 0x417d665e
+  name: "module_insert"
+  type_id: 0x2c4dcebb
+  offset: 128
+}
+member {
+  id: 0xb4088308
+  name: "module_remove"
+  type_id: 0x0f3dfb90
+  offset: 192
+}
+member {
+  id: 0xccd41f41
+  name: "module_start"
+  type_id: 0x2c7bd73f
+  offset: 256
+}
+member {
+  id: 0x96237943
+  name: "module_stop"
+  type_id: 0x0f3dfb90
+  offset: 320
+}
+member {
+  id: 0x1a95940d
+  name: "modulo"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xf30fcad7
+  name: "monitor"
+  type_id: 0x8026b687
+  offset: 35904
+}
+member {
+  id: 0xf37f50f9
+  name: "monitor"
+  type_id: 0xf0ba21be
+  offset: 352
+}
+member {
+  id: 0xba20c145
+  name: "monitor_all"
+  type_id: 0x6d7f5ff6
+  offset: 1072
+}
+member {
+  id: 0xc2cad849
+  name: "monitor_all_cnt"
+  type_id: 0xc9082b19
+  offset: 11456
+}
+member {
+  id: 0xb1c41efc
+  name: "monitor_pin_cnt"
+  type_id: 0xc9082b19
+  offset: 11488
+}
+member {
+  id: 0x6051fdf5
+  name: "monitor_range"
+  type_id: 0xf5fe6ded
+  offset: 1296
+}
+member {
+  id: 0x63193b94
+  name: "monitor_timeout"
+  type_id: 0xe8034002
+  offset: 1168
+}
+member {
+  id: 0x0f6e1d34
+  name: "monitor_timer"
+  type_id: 0xf1159c31
+  offset: 4352
+}
+member {
+  id: 0xc6a08382
+  name: "monitored_devices"
+  type_id: 0xd3c80119
+  offset: 50240
+}
+member {
+  id: 0x6383498a
+  name: "mono_delivery_time"
+  type_id: 0x295c7202
+  offset: 1280
+}
+member {
+  id: 0xd8983093
+  name: "mono_delivery_time"
+  type_id: 0xb3e7bac9
+  offset: 21
+  bitsize: 1
+}
+member {
+  id: 0xd1fdbf5e
+  name: "mono_mult"
+  type_id: 0xc9082b19
+  offset: 384
+}
+member {
+  id: 0x21b41a9e
+  name: "mono_shift"
+  type_id: 0xc9082b19
+  offset: 352
+}
+member {
+  id: 0x7a15ae87
+  name: "monotonic"
+  type_id: 0x399c459b
+}
+member {
+  id: 0x46f6fcfe
+  name: "monspecs"
+  type_id: 0x9906a5a0
+  offset: 2816
+}
+member {
+  id: 0x6418478e
+  name: "month"
+  type_id: 0x5d8155a5
+  offset: 208
+}
+member {
+  id: 0x90205d1d
+  name: "more"
+  type_id: 0x295c7202
+  offset: 16
+}
+member {
+  id: 0x70391cbd
+  name: "motion_det"
+  type_id: 0x5c965122
+}
+member {
+  id: 0x25cb547f
+  name: "mount"
+  type_id: 0x2ac65c83
+  offset: 256
+}
+member {
+  id: 0x9b4b43af
+  name: "mounts"
+  type_id: 0x4585663f
+  offset: 896
+}
+member {
+  id: 0xb9470641
+  name: "move"
+  type_id: 0x030b9acf
+  offset: 320
+}
+member {
+  id: 0xb96bd08b
+  name: "move"
+  type_id: 0x2fdb05a5
+  offset: 384
+}
+member {
+  id: 0x77a15088
+  name: "move_charge_at_immigrate"
+  type_id: 0x33756485
+  offset: 12480
+}
+member {
+  id: 0xa32f3594
+  name: "move_id"
+  type_id: 0xb3e7bac9
+  offset: 1488
+}
+member {
+  id: 0x8e13d97f
+  name: "move_lock"
+  type_id: 0xf313e71a
+  offset: 256
+}
+member {
+  id: 0x8e13da67
+  name: "move_lock"
+  type_id: 0xf313e71a
+  offset: 12544
+}
+member {
+  id: 0xb1f53d97
+  name: "move_lock_flags"
+  type_id: 0x33756485
+  offset: 12608
+}
+member {
+  id: 0x833679bd
+  name: "move_lock_task"
+  type_id: 0x1d19a9d5
+  offset: 14912
+}
+member {
+  id: 0x38f5401c
+  name: "move_notify"
+  type_id: 0x0f63be8f
+  offset: 64
+}
+member {
+  id: 0xe2202a6c
+  name: "move_role"
+  type_id: 0xb3e7bac9
+  offset: 1504
+}
+member {
+  id: 0x11eccb6a
+  name: "move_state"
+  type_id: 0xb3e7bac9
+  offset: 1496
+}
+member {
+  id: 0x9ae05512
+  name: "moving_account"
+  type_id: 0x74d29cf1
+  offset: 14848
+}
+member {
+  id: 0xd87e6374
+  name: "mp"
+  type_id: 0x064ca9d5
+  offset: 896
+}
+member {
+  id: 0x9a49712d
+  name: "mp_hash"
+  type_id: 0xe62ebf07
+  offset: 704
+}
+member {
+  id: 0xfc27981e
+  name: "mp_state"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xfcc328ac
+  name: "mp_state"
+  type_id: 0x029d28cb
+  offset: 66816
+}
+member {
+  id: 0x34f49183
+  name: "mpidr"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x9410bf1b
+  name: "mpls_features"
+  type_id: 0x2584a3b9
+  offset: 2176
+}
+member {
+  id: 0xde75baba
+  name: "mpls_mangle"
+  type_id: 0x1934086e
+}
+member {
+  id: 0x207bf01a
+  name: "mpls_pop"
+  type_id: 0x0f29d6cf
+}
+member {
+  id: 0x72ab0558
+  name: "mpls_push"
+  type_id: 0x190327c4
+}
+member {
+  id: 0x689cc991
+  name: "mprotect"
+  type_id: 0x2d61443f
+  offset: 256
+}
+member {
+  id: 0xe00a88ac
+  name: "mps"
+  type_id: 0xe8034002
+  offset: 1184
+}
+member {
+  id: 0x62264fbf
+  name: "mpu"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x31ca3c6f
+  name: "mq_ctx"
+  type_id: 0x30ae0fb9
+  offset: 64
+}
+member {
+  id: 0xa007c292
+  name: "mq_curmsgs"
+  type_id: 0x68035002
+  offset: 192
+}
+member {
+  id: 0x53b514ec
+  name: "mq_flags"
+  type_id: 0x68035002
+}
+member {
+  id: 0xe7ba652c
+  name: "mq_flush_lock"
+  type_id: 0xf313e71a
+  offset: 576
+}
+member {
+  id: 0x4cc6292e
+  name: "mq_freeze_depth"
+  type_id: 0x6720d32f
+  offset: 7264
+}
+member {
+  id: 0x26f964ef
+  name: "mq_freeze_lock"
+  type_id: 0xa7c362b0
+  offset: 7680
+}
+member {
+  id: 0x893ed3d1
+  name: "mq_freeze_wq"
+  type_id: 0x03913382
+  offset: 7488
+}
+member {
+  id: 0x3f3ca544
+  name: "mq_getsetattr"
+  type_id: 0x0e5e9300
+}
+member {
+  id: 0xa4aa035b
+  name: "mq_hctx"
+  type_id: 0x2208f89a
+  offset: 128
+}
+member {
+  id: 0x93bdc08d
+  name: "mq_kobj"
+  type_id: 0x23f09c34
+  offset: 1856
+}
+member {
+  id: 0xf34ef321
+  name: "mq_list"
+  type_id: 0x1e820193
+}
+member {
+  id: 0xaff0f05a
+  name: "mq_map"
+  type_id: 0x1bf16028
+}
+member {
+  id: 0x5005024d
+  name: "mq_maxmsg"
+  type_id: 0x68035002
+  offset: 64
+}
+member {
+  id: 0x378b0c45
+  name: "mq_mnt"
+  type_id: 0x2c8c423d
+  offset: 7872
+}
+member {
+  id: 0x2ad0b1d0
+  name: "mq_msg_default"
+  type_id: 0x4585663f
+  offset: 8064
+}
+member {
+  id: 0xfc50d140
+  name: "mq_msg_max"
+  type_id: 0x4585663f
+  offset: 8000
+}
+member {
+  id: 0xaf3dcf24
+  name: "mq_msgsize"
+  type_id: 0x68035002
+  offset: 128
+}
+member {
+  id: 0x7a21d6d9
+  name: "mq_msgsize_default"
+  type_id: 0x4585663f
+  offset: 8096
+}
+member {
+  id: 0x699a43f9
+  name: "mq_msgsize_max"
+  type_id: 0x4585663f
+  offset: 8032
+}
+member {
+  id: 0x878a9cec
+  name: "mq_notify"
+  type_id: 0x0e571c96
+}
+member {
+  id: 0xd11f3f95
+  name: "mq_open"
+  type_id: 0x27205f00
+}
+member {
+  id: 0x2e391992
+  name: "mq_ops"
+  type_id: 0x37429bf2
+  offset: 384
+}
+member {
+  id: 0x87792617
+  name: "mq_poll"
+  type_id: 0x2cc82fd6
+  offset: 1536
+}
+member {
+  id: 0xbc8b04d3
+  name: "mq_queues_count"
+  type_id: 0x4585663f
+  offset: 7936
+}
+member {
+  id: 0xc91b139f
+  name: "mq_queues_max"
+  type_id: 0x4585663f
+  offset: 7968
+}
+member {
+  id: 0xd3271cdd
+  name: "mq_sendrecv"
+  type_id: 0x0e606441
+}
+member {
+  id: 0x35dfddf4
+  name: "mq_set"
+  type_id: 0x7b06e63f
+  offset: 8128
+}
+member {
+  id: 0xc6f14fe7
+  name: "mq_sysctls"
+  type_id: 0x34544a3f
+  offset: 8896
+}
+member {
+  id: 0x1302a5da
+  name: "mq_sysfs_init_done"
+  type_id: 0x6d7f5ff6
+  offset: 8896
+}
+member {
+  id: 0x58c3aac3
+  name: "mqdes"
+  type_id: 0xad6ae097
+}
+member {
+  id: 0x08f5adf6
+  name: "mqstat"
+  type_id: 0xdcbf4c2a
+  offset: 64
+}
+member {
+  id: 0xdc9f3663
+  name: "mr6_rules_ops"
+  type_id: 0x1b686fa1
+  offset: 6336
+}
+member {
+  id: 0xd7168d43
+  name: "mr6_tables"
+  type_id: 0xd3c80119
+  offset: 6208
+}
+member {
+  id: 0xeb62c586
+  name: "mr_gq_running"
+  type_id: 0x5d8155a5
+  offset: 776
+}
+member {
+  id: 0xb1ee1de3
+  name: "mr_gq_timer"
+  type_id: 0xd298e888
+  offset: 832
+}
+member {
+  id: 0x510548ab
+  name: "mr_ifc_count"
+  type_id: 0xc9082b19
+  offset: 800
+}
+member {
+  id: 0x3a2fb3c2
+  name: "mr_ifc_timer"
+  type_id: 0xd298e888
+  offset: 1280
+}
+member {
+  id: 0xda5c950e
+  name: "mr_maxdelay"
+  type_id: 0x33756485
+  offset: 576
+}
+member {
+  id: 0x1be5681f
+  name: "mr_qi"
+  type_id: 0x33756485
+  offset: 640
+}
+member {
+  id: 0x7cce4d55
+  name: "mr_qri"
+  type_id: 0x33756485
+  offset: 704
+}
+member {
+  id: 0x25e57a10
+  name: "mr_qrv"
+  type_id: 0x5d8155a5
+  offset: 768
+}
+member {
+  id: 0x4b1c218f
+  name: "mr_v1_seen"
+  type_id: 0x33756485
+  offset: 448
+}
+member {
+  id: 0x2c0a6078
+  name: "mr_v2_seen"
+  type_id: 0x33756485
+  offset: 512
+}
+member {
+  id: 0xd4c96fa0
+  name: "mref"
+  type_id: 0x0379fcff
+}
+member {
+  id: 0xf171218a
+  name: "mremap"
+  type_id: 0x2e789152
+  offset: 192
+}
+member {
+  id: 0xf172082e
+  name: "mremap"
+  type_id: 0x2d513578
+  offset: 192
+}
+member {
+  id: 0x96dd389f
+  name: "mres"
+  type_id: 0xebbaa9d5
+  offset: 800
+}
+member {
+  id: 0x6360d0b2
+  name: "mrq"
+  type_id: 0x292cb268
+  offset: 384
+}
+member {
+  id: 0x6360d6e7
+  name: "mrq"
+  type_id: 0x292cb268
+  offset: 320
+}
+member {
+  id: 0x3c20aa8d
+  name: "mrqs_done"
+  type_id: 0x66e26c79
+  offset: 6400
+}
+member {
+  id: 0x2604a522
+  name: "msb"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x10b6405f
+  name: "msb_right"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xaaa7b292
+  name: "msbits"
+  type_id: 0x4585663f
+  offset: 4192
+}
+member {
+  id: 0x8bef7e99
+  name: "mscbit"
+  type_id: 0xb914bfab
+  offset: 1280
+}
+member {
+  id: 0x8bf30318
+  name: "mscbit"
+  type_id: 0xa562355d
+  offset: 1088
+}
+member {
+  id: 0xe204b046
+  name: "msg"
+  type_id: 0x0483e6f8
+  offset: 384
+}
+member {
+  id: 0xe260f8b5
+  name: "msg"
+  type_id: 0x60ca2c23
+  offset: 256
+}
+member {
+  id: 0xe2743793
+  name: "msg"
+  type_id: 0x74026623
+  offset: 320
+}
+member {
+  id: 0xe2b904c8
+  name: "msg"
+  type_id: 0xb93f386b
+  offset: 128
+}
+member {
+  id: 0x66383f77
+  name: "msg2addr"
+  type_id: 0x2ef9bd9c
+  offset: 320
+}
+member {
+  id: 0x25bd144d
+  name: "msg_acc"
+  type_id: 0x914dbfdc
+  offset: 8656
+}
+member {
+  id: 0x49ff8872
+  name: "msg_control"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0xd7b46612
+  name: "msg_control_is_user"
+  type_id: 0x6d7f5ff6
+  offset: 512
+  bitsize: 1
+}
+member {
+  id: 0x016a0467
+  name: "msg_control_user"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0xd9583daf
+  name: "msg_controllen"
+  type_id: 0x5b3d9d36
+  offset: 576
+}
+member {
+  id: 0xb97aec9d
+  name: "msg_count"
+  type_id: 0x4585663f
+  offset: 512
+}
+member {
+  id: 0x4e076dbe
+  name: "msg_ctlmax"
+  type_id: 0x4585663f
+  offset: 6688
+}
+member {
+  id: 0x73cbb1a8
+  name: "msg_ctlmnb"
+  type_id: 0x4585663f
+  offset: 6720
+}
+member {
+  id: 0xad8c1e2a
+  name: "msg_ctlmni"
+  type_id: 0x4585663f
+  offset: 6752
+}
+member {
+  id: 0x7fc2dde8
+  name: "msg_data"
+  type_id: 0x11f20613
+  offset: 576
+}
+member {
+  id: 0x8935554d
+  name: "msg_enable"
+  type_id: 0x6720d32f
+  offset: 1792
+}
+member {
+  id: 0xc31fa462
+  name: "msg_flags"
+  type_id: 0x4585663f
+  offset: 544
+}
+member {
+  id: 0xc3bc0164
+  name: "msg_flags"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x2a36e18d
+  name: "msg_free"
+  type_id: 0x4585663f
+  offset: 544
+}
+member {
+  id: 0x2c033520
+  name: "msg_get_inq"
+  type_id: 0x6d7f5ff6
+  offset: 513
+  bitsize: 1
+}
+member {
+  id: 0xe5072f8f
+  name: "msg_handler"
+  type_id: 0x2eafb82c
+  offset: 1664
+}
+member {
+  id: 0xdbf3727e
+  name: "msg_inq"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0xc08de3a8
+  name: "msg_iocb"
+  type_id: 0x08bd7371
+  offset: 640
+}
+member {
+  id: 0x977c4e42
+  name: "msg_iter"
+  type_id: 0x978f8e70
+  offset: 128
+}
+member {
+  id: 0xf37d4418
+  name: "msg_len"
+  type_id: 0xf435685e
+  offset: 64
+}
+member {
+  id: 0x7d0613dd
+  name: "msg_name"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0x461c5745
+  name: "msg_namelen"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x67f93f00
+  name: "msg_page"
+  type_id: 0xedf277ba
+  offset: 192
+}
+member {
+  id: 0x91e9d7fd
+  name: "msg_parser"
+  type_id: 0x3382a638
+}
+member {
+  id: 0x5578c6f3
+  name: "msg_prio"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0xdf3a545d
+  name: "msg_ring_flags"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xcb17f21b
+  name: "msg_status"
+  type_id: 0x5d8155a5
+  offset: 528
+}
+member {
+  id: 0x41792067
+  name: "msg_ubuf"
+  type_id: 0x35dbe029
+  offset: 704
+}
+member {
+  id: 0x58674a74
+  name: "msgs"
+  type_id: 0xd3c80119
+  offset: 3712
+}
+member {
+  id: 0x6f632c00
+  name: "msi"
+  type_id: 0xe0037997
+  offset: 5120
+}
+member {
+  id: 0x63e927d0
+  name: "msi_attrib"
+  type_id: 0x20957e7a
+  offset: 32
+}
+member {
+  id: 0x1414f546
+  name: "msi_cap"
+  type_id: 0x295c7202
+  offset: 872
+}
+member {
+  id: 0xa938e296
+  name: "msi_capable"
+  type_id: 0x4585663f
+  offset: 2
+  bitsize: 1
+}
+member {
+  id: 0xde1dd7b7
+  name: "msi_check"
+  type_id: 0x2c6a6c66
+  offset: 192
+}
+member {
+  id: 0x2f714cea
+  name: "msi_data"
+  type_id: 0xe02e14d6
+  offset: 896
+}
+member {
+  id: 0xe799b3ba
+  name: "msi_desc"
+  type_id: 0x0e5eb556
+  offset: 128
+}
+member {
+  id: 0x26626592
+  name: "msi_domain"
+  type_id: 0x18a2fb63
+  offset: 832
+}
+member {
+  id: 0x721b0de0
+  name: "msi_domain"
+  type_id: 0x4585663f
+  offset: 8139
+  bitsize: 1
+}
+member {
+  id: 0x8c48ba28
+  name: "msi_enabled"
+  type_id: 0x4585663f
+  offset: 22100
+  bitsize: 1
+}
+member {
+  id: 0x8c48bd78
+  name: "msi_enabled"
+  type_id: 0x4585663f
+  offset: 3363
+  bitsize: 1
+}
+member {
+  id: 0x9a0e48a8
+  name: "msi_free"
+  type_id: 0x0f283d10
+  offset: 128
+}
+member {
+  id: 0x72b27aec
+  name: "msi_host_init"
+  type_id: 0x2fa99c67
+  offset: 128
+}
+member {
+  id: 0xf9932586
+  name: "msi_index"
+  type_id: 0x914dbfdc
+  offset: 576
+}
+member {
+  id: 0xb2aecca9
+  name: "msi_init"
+  type_id: 0x2c6e3132
+  offset: 64
+}
+member {
+  id: 0xdb82e5a6
+  name: "msi_iova"
+  type_id: 0xe02e14d6
+}
+member {
+  id: 0x5748ad6d
+  name: "msi_irq"
+  type_id: 0xfdf6bcd9
+  offset: 512
+}
+member {
+  id: 0x35aa3dce
+  name: "msi_irq_chip"
+  type_id: 0x21e5ca8a
+  offset: 960
+}
+member {
+  id: 0x9047fe65
+  name: "msi_irq_in_use"
+  type_id: 0x80904a3b
+  offset: 1472
+}
+member {
+  id: 0xa2184f99
+  name: "msi_lock"
+  type_id: 0xc8b17aa7
+  offset: 25088
+}
+member {
+  id: 0x583578ea
+  name: "msi_mask"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x2e6fa4af
+  name: "msi_mem"
+  type_id: 0x18bd6530
+  offset: 704
+}
+member {
+  id: 0xb1da268d
+  name: "msi_mem_phys"
+  type_id: 0xbdd18903
+  offset: 768
+}
+member {
+  id: 0x771c8cad
+  name: "msi_page_list"
+  type_id: 0xd3c80119
+  offset: 1856
+}
+member {
+  id: 0xeecc3fda
+  name: "msi_prepare"
+  type_id: 0x2c7e27c6
+  offset: 256
+}
+member {
+  id: 0xe1f4ccd1
+  name: "msiinfo"
+  type_id: 0xa5e1bddf
+}
+member {
+  id: 0x7abe829e
+  name: "msis_require_devid"
+  type_id: 0x6d7f5ff6
+  offset: 104
+}
+member {
+  id: 0x8e2397ea
+  name: "msix_base"
+  type_id: 0x18bd6530
+  offset: 25024
+}
+member {
+  id: 0x3636dc69
+  name: "msix_cap"
+  type_id: 0x295c7202
+  offset: 880
+}
+member {
+  id: 0xf379d303
+  name: "msix_capable"
+  type_id: 0x4585663f
+  offset: 3
+  bitsize: 1
+}
+member {
+  id: 0x45f8d864
+  name: "msix_count"
+  type_id: 0x6720d32f
+  offset: 864
+}
+member {
+  id: 0xc2351a1d
+  name: "msix_ctrl"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xfc3feae9
+  name: "msix_enabled"
+  type_id: 0x4585663f
+  offset: 3362
+  bitsize: 1
+}
+member {
+  id: 0xfc3fee64
+  name: "msix_enabled"
+  type_id: 0x4585663f
+  offset: 22101
+  bitsize: 1
+}
+member {
+  id: 0x612e2536
+  name: "mso_pixel_overlap"
+  type_id: 0x295c7202
+  offset: 1416
+}
+member {
+  id: 0x2f8cccfd
+  name: "mso_stream_count"
+  type_id: 0x295c7202
+  offset: 1408
+}
+member {
+  id: 0x324f2583
+  name: "msr"
+  type_id: 0x079bc2f5
+}
+member {
+  id: 0x32ae90fe
+  name: "msr"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xcf473d6a
+  name: "msr_saved_flags"
+  type_id: 0x5d8155a5
+  offset: 5152
+}
+member {
+  id: 0xf3997936
+  name: "mss"
+  type_id: 0x914dbfdc
+  offset: 1152
+}
+member {
+  id: 0xeb62513d
+  name: "mt"
+  type_id: 0x19f65b03
+  offset: 2688
+}
+member {
+  id: 0xb4b592cb
+  name: "mte_ctrl"
+  type_id: 0x92233392
+  offset: 8704
+}
+member {
+  id: 0x50e4fa53
+  name: "mtime"
+  type_id: 0x399c459b
+  offset: 640
+}
+member {
+  id: 0x6c1f9ec2
+  name: "mtimer"
+  type_id: 0xcd7704bf
+  offset: 4672
+}
+member {
+  id: 0x57a36b4e
+  name: "mtk_wdma"
+  type_id: 0x1fb175ff
+}
+member {
+  id: 0x7b8b7304
+  name: "mtn"
+  type_id: 0xd6c32672
+  offset: 192
+}
+member {
+  id: 0x70209bcf
+  name: "mtu"
+  type_id: 0x3a9c855e
+  offset: 256
+}
+member {
+  id: 0x705f84f4
+  name: "mtu"
+  type_id: 0x4585663f
+  offset: 1792
+}
+member {
+  id: 0x705f8b45
+  name: "mtu"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x707d2ef0
+  name: "mtu"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x70d306b8
+  name: "mtu"
+  type_id: 0xc9082b19
+  offset: 576
+}
+member {
+  id: 0x70d30b2b
+  name: "mtu"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x70d30e58
+  name: "mtu"
+  type_id: 0xc9082b19
+  offset: 384
+}
+member {
+  id: 0x3ed76e50
+  name: "mtu6"
+  type_id: 0x0faae5b1
+  offset: 64
+}
+member {
+  id: 0x3a75162c
+  name: "mtx"
+  type_id: 0xa7c362b0
+  offset: 576
+}
+member {
+  id: 0x3a751f5e
+  name: "mtx"
+  type_id: 0xa7c362b0
+}
+member {
+  id: 0x618d33ac
+  name: "mult"
+  type_id: 0x4585663f
+  offset: 416
+  bitsize: 2
+}
+member {
+  id: 0x662d77cd
+  name: "mult"
+  type_id: 0xc9082b19
+  offset: 384
+}
+member {
+  id: 0x662d7f9d
+  name: "mult"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0x66a1f629
+  name: "mult"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xe77081c4
+  name: "multi"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0xfcd3aab9
+  name: "multi_block"
+  type_id: 0x4585663f
+  offset: 64
+  bitsize: 1
+}
+member {
+  id: 0x4f70035a
+  name: "multi_cap"
+  type_id: 0x295c7202
+  offset: 4
+  bitsize: 3
+}
+member {
+  id: 0x431cdf42
+  name: "multi_io_quirk"
+  type_id: 0x2d95a459
+  offset: 1408
+}
+member {
+  id: 0x5c6fc30f
+  name: "multiaddr"
+  type_id: 0xe276adef
+  offset: 64
+}
+member {
+  id: 0xc47d77fc
+  name: "multicast"
+  type_id: 0xedf277ba
+  offset: 512
+}
+member {
+  id: 0xc47d7b23
+  name: "multicast"
+  type_id: 0xedf277ba
+  offset: 320
+}
+member {
+  id: 0xc4a3fbf7
+  name: "multicast"
+  type_id: 0x33756485
+}
+member {
+  id: 0xe1fcb5f3
+  name: "multifunction"
+  type_id: 0x4585663f
+  offset: 22092
+  bitsize: 1
+}
+member {
+  id: 0xc973e169
+  name: "multipath_hash_fields"
+  type_id: 0xc9082b19
+  offset: 576
+}
+member {
+  id: 0xc19c2718
+  name: "multipath_hash_policy"
+  type_id: 0x295c7202
+  offset: 608
+}
+member {
+  id: 0x922d79b5
+  name: "multiple"
+  type_id: 0x295c7202
+  offset: 1
+  bitsize: 3
+}
+member {
+  id: 0x3e5f7a3f
+  name: "multiple_queues"
+  type_id: 0x6d7f5ff6
+  offset: 160
+}
+member {
+  id: 0x50925cfa
+  name: "multiprocess"
+  type_id: 0x5e8dc7f4
+  offset: 704
+}
+member {
+  id: 0x0a41a364
+  name: "must_async"
+  type_id: 0x6d7f5ff6
+  offset: 12360
+}
+member {
+  id: 0xca44ced6
+  name: "must_reconfigure"
+  type_id: 0x6d7f5ff6
+  offset: 11416
+}
+member {
+  id: 0x4888e45a
+  name: "must_resume"
+  type_id: 0x4585663f
+  offset: 579
+  bitsize: 1
+}
+member {
+  id: 0x1a73183d
+  name: "mute"
+  type_id: 0x0baa70a7
+  offset: 64
+}
+member {
+  id: 0x5c90df82
+  name: "mute_stream"
+  type_id: 0x2dc3a972
+  offset: 768
+}
+member {
+  id: 0xad4311a1
+  name: "mutex"
+  type_id: 0x6d51c12f
+}
+member {
+  id: 0xad431365
+  name: "mutex"
+  type_id: 0x6d51c12f
+  offset: 1216
+}
+member {
+  id: 0xad8980b8
+  name: "mutex"
+  type_id: 0xa7c362b0
+  offset: 832
+}
+member {
+  id: 0xad89813f
+  name: "mutex"
+  type_id: 0xa7c362b0
+  offset: 704
+}
+member {
+  id: 0xad8981c6
+  name: "mutex"
+  type_id: 0xa7c362b0
+  offset: 1216
+}
+member {
+  id: 0xad898302
+  name: "mutex"
+  type_id: 0xa7c362b0
+}
+member {
+  id: 0xad8983a9
+  name: "mutex"
+  type_id: 0xa7c362b0
+  offset: 256
+}
+member {
+  id: 0xad898409
+  name: "mutex"
+  type_id: 0xa7c362b0
+  offset: 2304
+}
+member {
+  id: 0xad898442
+  name: "mutex"
+  type_id: 0xa7c362b0
+  offset: 3328
+}
+member {
+  id: 0xad898452
+  name: "mutex"
+  type_id: 0xa7c362b0
+  offset: 1472
+}
+member {
+  id: 0xad898480
+  name: "mutex"
+  type_id: 0xa7c362b0
+  offset: 2048
+}
+member {
+  id: 0xad8984c5
+  name: "mutex"
+  type_id: 0xa7c362b0
+  offset: 320
+}
+member {
+  id: 0xad89857f
+  name: "mutex"
+  type_id: 0xa7c362b0
+  offset: 1280
+}
+member {
+  id: 0xad8987e3
+  name: "mutex"
+  type_id: 0xa7c362b0
+  offset: 64
+}
+member {
+  id: 0xad89884a
+  name: "mutex"
+  type_id: 0xa7c362b0
+  offset: 4160
+}
+member {
+  id: 0xad8989a4
+  name: "mutex"
+  type_id: 0xa7c362b0
+  offset: 896
+}
+member {
+  id: 0xad898a70
+  name: "mutex"
+  type_id: 0xa7c362b0
+  offset: 576
+}
+member {
+  id: 0xad898ac0
+  name: "mutex"
+  type_id: 0xa7c362b0
+  offset: 128
+}
+member {
+  id: 0xad898bcb
+  name: "mutex"
+  type_id: 0xa7c362b0
+  offset: 192
+}
+member {
+  id: 0xad898e74
+  name: "mutex"
+  type_id: 0xa7c362b0
+  offset: 1088
+}
+member {
+  id: 0xad898f10
+  name: "mutex"
+  type_id: 0xa7c362b0
+  offset: 7424
+}
+member {
+  id: 0xada34a69
+  name: "mutex"
+  type_id: 0x8d0aa23e
+  offset: 256
+}
+member {
+  id: 0xada34d05
+  name: "mutex"
+  type_id: 0x8d0aa23e
+  offset: 320
+}
+member {
+  id: 0x5750fd71
+  name: "mutex_key"
+  type_id: 0x475137a2
+  offset: 64
+}
+member {
+  id: 0xcc5304cf
+  name: "mutex_name"
+  type_id: 0x3e10b518
+  offset: 128
+}
+member {
+  id: 0x64ea63ca
+  name: "mutex_owner"
+  type_id: 0x1d19a9d5
+  offset: 1664
+}
+member {
+  id: 0x68fd34f2
+  name: "mutually_exclusive"
+  type_id: 0x3104c07e
+  offset: 128
+}
+member {
+  id: 0xa69b3828
+  name: "mux"
+  type_id: 0x71684ad9
+}
+member {
+  id: 0xa6f605e9
+  name: "mux"
+  type_id: 0x1c551dee
+  offset: 8256
+}
+member {
+  id: 0x9e1509ad
+  name: "mux_devs"
+  type_id: 0x1ef2915d
+}
+member {
+  id: 0xdf96f122
+  name: "mux_lock"
+  type_id: 0xf7998f6d
+  offset: 576
+}
+member {
+  id: 0xa21d307d
+  name: "mux_word_size"
+  type_id: 0x295c7202
+  offset: 968
+}
+member {
+  id: 0x6d4ebb06
+  name: "mv"
+  type_id: 0xb1213eb0
+  offset: 15768
+}
+member {
+  id: 0x0c74d6b1
+  name: "mv_probs"
+  type_id: 0x5c0aa325
+  offset: 8504
+}
+member {
+  id: 0x9afae69e
+  name: "mx_sb_len"
+  type_id: 0x5d8155a5
+  offset: 72
+}
+member {
+  id: 0x356f8eee
+  name: "my_q"
+  type_id: 0x0ed82db2
+  offset: 1024
+}
+member {
+  id: 0x80169552
+  name: "mynode"
+  type_id: 0x1592957f
+  offset: 2688
+}
+member {
+  id: 0xc101e64f
+  name: "n2"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0x9723e6f3
+  name: "n391"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x50e2e283
+  name: "n392"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x12a302b4
+  name: "n393"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0xe32bed7e
+  name: "n_acl_entries"
+  type_id: 0xf435685e
+  offset: 64
+}
+member {
+  id: 0x0b27da47
+  name: "n_addresses"
+  type_id: 0x914dbfdc
+  offset: 752
+}
+member {
+  id: 0x5b7b28ca
+  name: "n_akm_suites"
+  type_id: 0x6720d32f
+  offset: 1344
+}
+member {
+  id: 0x5b7b2b8b
+  name: "n_akm_suites"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x95de6868
+  name: "n_alarm"
+  type_id: 0x6720d32f
+  offset: 352
+}
+member {
+  id: 0x12acba44
+  name: "n_bitrates"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0xd0f69068
+  name: "n_boosts"
+  type_id: 0x33756485
+  offset: 2240
+}
+member {
+  id: 0x650782f7
+  name: "n_channels"
+  type_id: 0x6720d32f
+  offset: 160
+}
+member {
+  id: 0x65a9aa0f
+  name: "n_channels"
+  type_id: 0xc9082b19
+  offset: 160
+}
+member {
+  id: 0x42274fa9
+  name: "n_cipher_suites"
+  type_id: 0x6720d32f
+  offset: 1248
+}
+member {
+  id: 0xa215a4d6
+  name: "n_coupled"
+  type_id: 0x6720d32f
+  offset: 160
+}
+member {
+  id: 0xf0bda056
+  name: "n_current_limits"
+  type_id: 0x4585663f
+  offset: 480
+}
+member {
+  id: 0x47188cfb
+  name: "n_elements"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x8934f4a0
+  name: "n_entries"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x697a328b
+  name: "n_err_log_entries"
+  type_id: 0x4585663f
+  offset: 864
+}
+member {
+  id: 0x0d85b8a6
+  name: "n_ext_ts"
+  type_id: 0x6720d32f
+  offset: 384
+}
+member {
+  id: 0xdf0cc44d
+  name: "n_fts"
+  type_id: 0x66fe5c63
+  offset: 3648
+}
+member {
+  id: 0xfb4e2fed
+  name: "n_iface_combinations"
+  type_id: 0x6720d32f
+  offset: 704
+}
+member {
+  id: 0xaea7053f
+  name: "n_iftype_data"
+  type_id: 0x914dbfdc
+  offset: 736
+}
+member {
+  id: 0xa1ab9c64
+  name: "n_io_port"
+  type_id: 0x5d8155a5
+  offset: 4928
+}
+member {
+  id: 0xfc42b4b6
+  name: "n_klist"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0xcb9a62cc
+  name: "n_limits"
+  type_id: 0x295c7202
+  offset: 112
+}
+member {
+  id: 0x81055b69
+  name: "n_linear_ranges"
+  type_id: 0x6720d32f
+  offset: 1024
+}
+member {
+  id: 0x8369d793
+  name: "n_match_sets"
+  type_id: 0x6720d32f
+  offset: 512
+}
+member {
+  id: 0x176d0301
+  name: "n_mcgrps"
+  type_id: 0x295c7202
+  offset: 312
+}
+member {
+  id: 0x0f34750e
+  name: "n_mem_entries"
+  type_id: 0xf435685e
+  offset: 192
+}
+member {
+  id: 0xfee38f97
+  name: "n_no_ranges"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0x3d1b3725
+  name: "n_node"
+  type_id: 0xd3c80119
+  offset: 64
+}
+member {
+  id: 0x6889cc14
+  name: "n_ops"
+  type_id: 0x295c7202
+  offset: 296
+}
+member {
+  id: 0x5abaf1c1
+  name: "n_outbuf"
+  type_id: 0x6720d32f
+  offset: 3808
+}
+member {
+  id: 0xf39eb3e3
+  name: "n_patterns"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0xf39eba39
+  name: "n_patterns"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0xf39ebfcb
+  name: "n_patterns"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0x7e955d76
+  name: "n_per_out"
+  type_id: 0x6720d32f
+  offset: 416
+}
+member {
+  id: 0x235ae6d9
+  name: "n_pins"
+  type_id: 0x6720d32f
+  offset: 448
+}
+member {
+  id: 0x8537da02
+  name: "n_priv_flags"
+  type_id: 0xe62ebf07
+  offset: 1408
+}
+member {
+  id: 0x30c77546
+  name: "n_proto"
+  type_id: 0x7584e7da
+}
+member {
+  id: 0x5f44889a
+  name: "n_ramp_values"
+  type_id: 0x4585663f
+  offset: 2240
+}
+member {
+  id: 0x84132b23
+  name: "n_read"
+  type_id: 0x4585663f
+  offset: 4096
+}
+member {
+  id: 0xf3c9617f
+  name: "n_ref"
+  type_id: 0x6f1daf87
+  offset: 192
+}
+member {
+  id: 0x9fb9aa42
+  name: "n_reg_rules"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0xd41aef39
+  name: "n_resolved"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0xeebfc981
+  name: "n_rules"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xa072a048
+  name: "n_rx_sc"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xfc7caf17
+  name: "n_scan_plans"
+  type_id: 0x6720d32f
+  offset: 704
+}
+member {
+  id: 0xeeaf2a65
+  name: "n_small_ops"
+  type_id: 0x295c7202
+  offset: 304
+}
+member {
+  id: 0x998218ab
+  name: "n_ssids"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x79f7146e
+  name: "n_stats"
+  type_id: 0xe62ebf07
+  offset: 1440
+}
+member {
+  id: 0x79f71bc9
+  name: "n_stats"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xdc10e384
+  name: "n_tables"
+  type_id: 0x4585663f
+  offset: 480
+}
+member {
+  id: 0x1053f6ae
+  name: "n_targets"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x5345c962
+  name: "n_ttbrs"
+  type_id: 0xc9082b19
+  offset: 256
+}
+member {
+  id: 0xd36e73ca
+  name: "n_vclocks"
+  type_id: 0x4585663f
+  offset: 45280
+}
+member {
+  id: 0x22d54ac6
+  name: "n_vclocks_mux"
+  type_id: 0xa7c362b0
+  offset: 45376
+}
+member {
+  id: 0x814ab903
+  name: "n_vendor_cmds"
+  type_id: 0x6720d32f
+  offset: 9408
+}
+member {
+  id: 0x3c4d3872
+  name: "n_vendor_commands"
+  type_id: 0x6720d32f
+  offset: 11072
+}
+member {
+  id: 0x4cf44723
+  name: "n_vendor_events"
+  type_id: 0x6720d32f
+  offset: 11104
+}
+member {
+  id: 0x28d71a7a
+  name: "n_voltages"
+  type_id: 0x4585663f
+  offset: 448
+}
+member {
+  id: 0x9036fca0
+  name: "n_yes_ranges"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x06334880
+  name: "nagle_start"
+  type_id: 0xc9082b19
+  offset: 8608
+}
+member {
+  id: 0x3f8f07fc
+  name: "nak"
+  type_id: 0x295c7202
+  offset: 776
+}
+member {
+  id: 0xe16c372b
+  name: "nal_ref_idc"
+  type_id: 0xe8034002
+  offset: 4096
+}
+member {
+  id: 0x4cd3c235
+  name: "nal_unit_type"
+  type_id: 0xb3e7bac9
+  offset: 96
+}
+member {
+  id: 0x0d0c76dc
+  name: "name"
+  type_id: 0xd71e60c1
+  offset: 64
+}
+member {
+  id: 0x0d1148db
+  name: "name"
+  type_id: 0xca2a51af
+  offset: 10368
+}
+member {
+  id: 0x0d114b37
+  name: "name"
+  type_id: 0xca2a51af
+  offset: 32
+}
+member {
+  id: 0x0d114fce
+  name: "name"
+  type_id: 0xca2a51af
+  offset: 128
+}
+member {
+  id: 0x0d273c21
+  name: "name"
+  type_id: 0xfc59be2e
+  offset: 128
+}
+member {
+  id: 0x0d2bd259
+  name: "name"
+  type_id: 0xf0be0466
+}
+member {
+  id: 0x0d314a12
+  name: "name"
+  type_id: 0xea2d574d
+  offset: 512
+}
+member {
+  id: 0x0d369e2a
+  name: "name"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x0d3e4288
+  name: "name"
+  type_id: 0xe52a3418
+  offset: 64
+}
+member {
+  id: 0x0d3e4b52
+  name: "name"
+  type_id: 0xe52a3418
+  offset: 32
+}
+member {
+  id: 0x0d407ca1
+  name: "name"
+  type_id: 0x9b10fce3
+}
+member {
+  id: 0x0d5b75aa
+  name: "name"
+  type_id: 0x801159da
+  offset: 768
+}
+member {
+  id: 0x0d5ccfce
+  name: "name"
+  type_id: 0x87a74aa9
+  offset: 288
+}
+member {
+  id: 0x0d64e1de
+  name: "name"
+  type_id: 0xbf84419a
+  offset: 128
+}
+member {
+  id: 0x0d81b02e
+  name: "name"
+  type_id: 0x5adf57ae
+  offset: 224
+}
+member {
+  id: 0x0d81b16a
+  name: "name"
+  type_id: 0x5adf57ae
+  offset: 416
+}
+member {
+  id: 0x0d81b298
+  name: "name"
+  type_id: 0x5adf57ae
+  offset: 384
+}
+member {
+  id: 0x0d81b30a
+  name: "name"
+  type_id: 0x5adf57ae
+}
+member {
+  id: 0x0d81b45a
+  name: "name"
+  type_id: 0x5adf57ae
+  offset: 1472
+}
+member {
+  id: 0x0d81b47d
+  name: "name"
+  type_id: 0x5adf57ae
+  offset: 448
+}
+member {
+  id: 0x0d81b573
+  name: "name"
+  type_id: 0x5adf57ae
+  offset: 640
+}
+member {
+  id: 0x0d81b682
+  name: "name"
+  type_id: 0x5adf57ae
+  offset: 2432
+}
+member {
+  id: 0x0d81b7d3
+  name: "name"
+  type_id: 0x5adf57ae
+  offset: 288
+}
+member {
+  id: 0x0d81b7eb
+  name: "name"
+  type_id: 0x5adf57ae
+  offset: 64
+}
+member {
+  id: 0x0d81b934
+  name: "name"
+  type_id: 0x5adf57ae
+  offset: 6720
+}
+member {
+  id: 0x0d81ba39
+  name: "name"
+  type_id: 0x5adf57ae
+  offset: 3136
+}
+member {
+  id: 0x0d81bd28
+  name: "name"
+  type_id: 0x5adf57ae
+  offset: 9152
+}
+member {
+  id: 0x0d81bde6
+  name: "name"
+  type_id: 0x5adf57ae
+  offset: 368
+}
+member {
+  id: 0x0d81be10
+  name: "name"
+  type_id: 0x5adf57ae
+  offset: 1120
+}
+member {
+  id: 0x0d9609e5
+  name: "name"
+  type_id: 0x4d65b854
+}
+member {
+  id: 0x0d9944ca
+  name: "name"
+  type_id: 0x42201dce
+  offset: 7552
+}
+member {
+  id: 0x0d994582
+  name: "name"
+  type_id: 0x42201dce
+  offset: 128
+}
+member {
+  id: 0x0d9948a1
+  name: "name"
+  type_id: 0x42201dce
+  offset: 64
+}
+member {
+  id: 0x0d994b01
+  name: "name"
+  type_id: 0x42201dce
+  offset: 672
+}
+member {
+  id: 0x0d994c40
+  name: "name"
+  type_id: 0x42201dce
+}
+member {
+  id: 0x0d994e7d
+  name: "name"
+  type_id: 0x42201dce
+  offset: 704
+}
+member {
+  id: 0x0d994ffa
+  name: "name"
+  type_id: 0x42201dce
+  offset: 832
+}
+member {
+  id: 0x0da35400
+  name: "name"
+  type_id: 0x78356643
+  offset: 32
+}
+member {
+  id: 0x0da3593b
+  name: "name"
+  type_id: 0x78356643
+}
+member {
+  id: 0x0da35dda
+  name: "name"
+  type_id: 0x78356643
+  offset: 64
+}
+member {
+  id: 0x0da3d6d1
+  name: "name"
+  type_id: 0x78b34e2e
+  offset: 128
+}
+member {
+  id: 0x0dbc4afd
+  name: "name"
+  type_id: 0x6720d32f
+  offset: 1792
+}
+member {
+  id: 0x0dc06314
+  name: "name"
+  type_id: 0x1b0f499b
+}
+member {
+  id: 0x0dc0e9a2
+  name: "name"
+  type_id: 0x1b8f18df
+  offset: 1536
+}
+member {
+  id: 0x0dc2a041
+  name: "name"
+  type_id: 0x19ce8000
+  offset: 1440
+}
+member {
+  id: 0x0dc2a276
+  name: "name"
+  type_id: 0x19ce8000
+  offset: 256
+}
+member {
+  id: 0x0dc2a2dd
+  name: "name"
+  type_id: 0x19ce8000
+}
+member {
+  id: 0x0dc2a395
+  name: "name"
+  type_id: 0x19ce8000
+  offset: 7360
+}
+member {
+  id: 0x0dc2ab5e
+  name: "name"
+  type_id: 0x19ce8000
+  offset: 96
+}
+member {
+  id: 0x0dc2afe6
+  name: "name"
+  type_id: 0x19ce8000
+  offset: 32
+}
+member {
+  id: 0x0dc6047f
+  name: "name"
+  type_id: 0x1d61e0cf
+  offset: 128
+}
+member {
+  id: 0x0dc6099d
+  name: "name"
+  type_id: 0x1d61e0cf
+  offset: 8288
+}
+member {
+  id: 0x0dc60a3f
+  name: "name"
+  type_id: 0x1d61e0cf
+  offset: 2048
+}
+member {
+  id: 0x0dcc237c
+  name: "name"
+  type_id: 0x174bc012
+  offset: 64
+}
+member {
+  id: 0x0dda4354
+  name: "name"
+  type_id: 0x0121d57c
+  offset: 1152
+}
+member {
+  id: 0x0dda4541
+  name: "name"
+  type_id: 0x0121d57c
+  offset: 192
+}
+member {
+  id: 0x0dda4969
+  name: "name"
+  type_id: 0x0121d57c
+  offset: 64
+}
+member {
+  id: 0x0dda82b2
+  name: "name"
+  type_id: 0x01ef5f77
+  offset: 480
+}
+member {
+  id: 0x0dda8bac
+  name: "name"
+  type_id: 0x01ef5f77
+  offset: 768
+}
+member {
+  id: 0x0dda8c65
+  name: "name"
+  type_id: 0x01ef5f77
+  offset: 800
+}
+member {
+  id: 0x0ddfe55c
+  name: "name"
+  type_id: 0x0483e6f8
+  offset: 1536
+}
+member {
+  id: 0x0ddfe603
+  name: "name"
+  type_id: 0x0483e6f8
+  offset: 1600
+}
+member {
+  id: 0x0ddfe679
+  name: "name"
+  type_id: 0x0483e6f8
+  offset: 128
+}
+member {
+  id: 0x0ddfe715
+  name: "name"
+  type_id: 0x0483e6f8
+  offset: 768
+}
+member {
+  id: 0x0ddfe772
+  name: "name"
+  type_id: 0x0483e6f8
+  offset: 192
+}
+member {
+  id: 0x0ddfe839
+  name: "name"
+  type_id: 0x0483e6f8
+  offset: 2048
+}
+member {
+  id: 0x0ddfe8cc
+  name: "name"
+  type_id: 0x0483e6f8
+  offset: 448
+}
+member {
+  id: 0x0ddfe9c6
+  name: "name"
+  type_id: 0x0483e6f8
+  offset: 1280
+}
+member {
+  id: 0x0ddfea33
+  name: "name"
+  type_id: 0x0483e6f8
+  offset: 2432
+}
+member {
+  id: 0x0ddfef10
+  name: "name"
+  type_id: 0x0483e6f8
+  offset: 256
+}
+member {
+  id: 0x0ddfefbb
+  name: "name"
+  type_id: 0x0483e6f8
+}
+member {
+  id: 0x0de324eb
+  name: "name"
+  type_id: 0x384c5795
+  offset: 64
+}
+member {
+  id: 0x0de5723f
+  name: "name"
+  type_id: 0x3e10b518
+  offset: 10368
+}
+member {
+  id: 0x0de572ed
+  name: "name"
+  type_id: 0x3e10b518
+  offset: 7680
+}
+member {
+  id: 0x0de5741b
+  name: "name"
+  type_id: 0x3e10b518
+  offset: 960
+}
+member {
+  id: 0x0de57421
+  name: "name"
+  type_id: 0x3e10b518
+  offset: 192
+}
+member {
+  id: 0x0de57446
+  name: "name"
+  type_id: 0x3e10b518
+  offset: 768
+}
+member {
+  id: 0x0de5752a
+  name: "name"
+  type_id: 0x3e10b518
+  offset: 128
+}
+member {
+  id: 0x0de5759a
+  name: "name"
+  type_id: 0x3e10b518
+  offset: 576
+}
+member {
+  id: 0x0de575b3
+  name: "name"
+  type_id: 0x3e10b518
+  offset: 2944
+}
+member {
+  id: 0x0de575d7
+  name: "name"
+  type_id: 0x3e10b518
+  offset: 8448
+}
+member {
+  id: 0x0de5760f
+  name: "name"
+  type_id: 0x3e10b518
+  offset: 1536
+}
+member {
+  id: 0x0de5764e
+  name: "name"
+  type_id: 0x3e10b518
+  offset: 896
+}
+member {
+  id: 0x0de5766b
+  name: "name"
+  type_id: 0x3e10b518
+  offset: 7296
+}
+member {
+  id: 0x0de577f0
+  name: "name"
+  type_id: 0x3e10b518
+  offset: 512
+}
+member {
+  id: 0x0de57809
+  name: "name"
+  type_id: 0x3e10b518
+  offset: 64
+}
+member {
+  id: 0x0de57a81
+  name: "name"
+  type_id: 0x3e10b518
+  offset: 3584
+}
+member {
+  id: 0x0de57a91
+  name: "name"
+  type_id: 0x3e10b518
+  offset: 640
+}
+member {
+  id: 0x0de57a95
+  name: "name"
+  type_id: 0x3e10b518
+  offset: 1280
+}
+member {
+  id: 0x0de57b2f
+  name: "name"
+  type_id: 0x3e10b518
+  offset: 320
+}
+member {
+  id: 0x0de57c43
+  name: "name"
+  type_id: 0x3e10b518
+  offset: 256
+}
+member {
+  id: 0x0de57ce8
+  name: "name"
+  type_id: 0x3e10b518
+}
+member {
+  id: 0x0de57d7a
+  name: "name"
+  type_id: 0x3e10b518
+  offset: 384
+}
+member {
+  id: 0x0de57e2c
+  name: "name"
+  type_id: 0x3e10b518
+  offset: 1216
+}
+member {
+  id: 0x0de6d064
+  name: "name"
+  type_id: 0x3db8d8c8
+  offset: 64
+}
+member {
+  id: 0x0de6d485
+  name: "name"
+  type_id: 0x3db8d8c8
+}
+member {
+  id: 0x0de6d8a5
+  name: "name"
+  type_id: 0x3db8d8c8
+  offset: 46624
+}
+member {
+  id: 0x0de6dd8d
+  name: "name"
+  type_id: 0x3db8d8c8
+  offset: 3520
+}
+member {
+  id: 0x0de6df9d
+  name: "name"
+  type_id: 0x3db8d8c8
+  offset: 512
+}
+member {
+  id: 0x0de7660c
+  name: "name"
+  type_id: 0x3c0c289f
+  offset: 640
+}
+member {
+  id: 0x0dedc180
+  name: "name"
+  type_id: 0x36a41f54
+  offset: 128
+}
+member {
+  id: 0x0dedc1fa
+  name: "name"
+  type_id: 0x36a41f54
+  offset: 1600
+}
+member {
+  id: 0x0dedc842
+  name: "name"
+  type_id: 0x36a41f54
+}
+member {
+  id: 0x0df5c4fb
+  name: "name"
+  type_id: 0x2ea0085b
+  offset: 768
+}
+member {
+  id: 0x0df8318e
+  name: "name"
+  type_id: 0x235dd3e0
+}
+member {
+  id: 0x0dfb96fb
+  name: "name"
+  type_id: 0x20fd6195
+  offset: 320
+}
+member {
+  id: 0x0dfb9ad8
+  name: "name"
+  type_id: 0x20fd6195
+  offset: 59648
+}
+member {
+  id: 0x0dffaa34
+  name: "name"
+  type_id: 0x24cb52fe
+  offset: 32
+}
+member {
+  id: 0xba9d0a41
+  name: "name_assign_type"
+  type_id: 0x5d8155a5
+  offset: 2392
+}
+member {
+  id: 0xc29b12a1
+  name: "name_base"
+  type_id: 0x6720d32f
+  offset: 320
+}
+member {
+  id: 0xe827458d
+  name: "name_count"
+  type_id: 0x6720d32f
+  offset: 5312
+}
+member {
+  id: 0x2edfd4c2
+  name: "name_len"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0xedceb359
+  name: "name_link"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0x9bc881e4
+  name: "name_lock"
+  type_id: 0xf313e71a
+  offset: 1024
+}
+member {
+  id: 0xcd61d8df
+  name: "name_node"
+  type_id: 0x19f48a47
+  offset: 128
+}
+member {
+  id: 0xec8ed6f4
+  name: "name_off"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x0d875143
+  name: "name_offset"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x742733f1
+  name: "name_pfx"
+  type_id: 0x051414e1
+  offset: 7744
+}
+member {
+  id: 0x1029a2c0
+  name: "name_prefix"
+  type_id: 0x3e10b518
+  offset: 192
+}
+member {
+  id: 0x1029a3cb
+  name: "name_prefix"
+  type_id: 0x3e10b518
+  offset: 128
+}
+member {
+  id: 0x3326d9c7
+  name: "name_resolve_timeout"
+  type_id: 0x33756485
+  offset: 1088
+}
+member {
+  id: 0xa0691bb2
+  name: "nameidata"
+  type_id: 0x111e281f
+  offset: 17088
+}
+member {
+  id: 0x0017f014
+  name: "namelen"
+  type_id: 0x295c7202
+  offset: 1368
+}
+member {
+  id: 0x5542647f
+  name: "names"
+  type_id: 0x86a931f9
+  offset: 128
+}
+member {
+  id: 0x55fab336
+  name: "names"
+  type_id: 0x3e75499e
+  offset: 1408
+}
+member {
+  id: 0x54c5a491
+  name: "names_length"
+  type_id: 0x4585663f
+  offset: 640
+}
+member {
+  id: 0x4d29abf9
+  name: "names_list"
+  type_id: 0xd3c80119
+  offset: 5376
+}
+member {
+  id: 0xb783e4b9
+  name: "names_ptr"
+  type_id: 0xedf277ba
+  offset: 576
+}
+member {
+  id: 0x29fbe0cb
+  name: "nameseq"
+  type_id: 0x72aab1d3
+}
+member {
+  id: 0x4a4cb474
+  name: "namespace"
+  type_id: 0x1f5e6890
+  offset: 704
+}
+member {
+  id: 0x4a4eac64
+  name: "namespace"
+  type_id: 0x1d44eec5
+  offset: 256
+}
+member {
+  id: 0xb511f4c8
+  name: "namespace_offset"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x4b4cad27
+  name: "namespaces"
+  type_id: 0x674028f7
+  offset: 384
+}
+member {
+  id: 0x91018347
+  name: "namespaces"
+  type_id: 0xedf277ba
+  offset: 348
+  bitsize: 1
+}
+member {
+  id: 0x9480e389
+  name: "nan_supported_bands"
+  type_id: 0x295c7202
+  offset: 11200
+}
+member {
+  id: 0x0db69ff9
+  name: "nanosleep"
+  type_id: 0x13a44fd4
+}
+member {
+  id: 0x1e5ec504
+  name: "napi"
+  type_id: 0x4a46ba94
+  offset: 640
+}
+member {
+  id: 0x1e5ecbb4
+  name: "napi"
+  type_id: 0x4a46ba94
+  offset: 192
+}
+member {
+  id: 0x7c1b4df3
+  name: "napi_defer_hard_irqs"
+  type_id: 0x6720d32f
+  offset: 6464
+}
+member {
+  id: 0xbd015c91
+  name: "napi_hash_node"
+  type_id: 0x49a73111
+  offset: 2944
+}
+member {
+  id: 0x794004e1
+  name: "napi_id"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x79400b70
+  name: "napi_id"
+  type_id: 0x4585663f
+  offset: 3072
+}
+member {
+  id: 0x79400c28
+  name: "napi_id"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0xd2475210
+  name: "napi_list"
+  type_id: 0xd3c80119
+  offset: 640
+}
+member {
+  id: 0x55315f71
+  name: "napi_skbs"
+  type_id: 0x578f9c2b
+}
+member {
+  id: 0xcb0d6ddd
+  name: "nareas"
+  type_id: 0x4585663f
+  offset: 416
+}
+member {
+  id: 0x8b1e3382
+  name: "nargs"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x8b3c92d6
+  name: "nargs"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xb1e7f3ff
+  name: "nassgireq"
+  type_id: 0x6d7f5ff6
+  offset: 392
+}
+member {
+  id: 0x452670ab
+  name: "nat_bysource"
+  type_id: 0x49a73111
+  offset: 1152
+}
+member {
+  id: 0x51dc5a84
+  name: "nat_mod_name"
+  type_id: 0x42201dce
+  offset: 1136
+}
+member {
+  id: 0x4d5c1204
+  name: "native_420"
+  type_id: 0x6d7f5ff6
+  offset: 1032
+}
+member {
+  id: 0x4d5c1c1a
+  name: "native_420"
+  type_id: 0x6d7f5ff6
+  offset: 8
+}
+member {
+  id: 0xcfdcc583
+  name: "native_422"
+  type_id: 0x6d7f5ff6
+  offset: 1024
+}
+member {
+  id: 0xf3d0d268
+  name: "native_422_420"
+  type_id: 0x295c7202
+  offset: 704
+}
+member {
+  id: 0x85063ded
+  name: "native_aer"
+  type_id: 0x4585663f
+  offset: 8131
+  bitsize: 1
+}
+member {
+  id: 0x96d4e589
+  name: "native_dpc"
+  type_id: 0x4585663f
+  offset: 8136
+  bitsize: 1
+}
+member {
+  id: 0x06bb141a
+  name: "native_ltr"
+  type_id: 0x4585663f
+  offset: 8135
+  bitsize: 1
+}
+member {
+  id: 0x24fa7507
+  name: "native_pcie_hotplug"
+  type_id: 0x4585663f
+  offset: 8132
+  bitsize: 1
+}
+member {
+  id: 0x8e9b1c1c
+  name: "native_pme"
+  type_id: 0x4585663f
+  offset: 8134
+  bitsize: 1
+}
+member {
+  id: 0x0c7e97de
+  name: "native_shpc_hotplug"
+  type_id: 0x4585663f
+  offset: 8133
+  bitsize: 1
+}
+member {
+  id: 0xb3731758
+  name: "navailable"
+  type_id: 0x4585663f
+  offset: 1152
+}
+member {
+  id: 0xd5e01ee5
+  name: "nb"
+  type_id: 0x449a775b
+  offset: 8000
+}
+member {
+  id: 0x428b2e65
+  name: "nb_max"
+  type_id: 0x449a775b
+  offset: 16320
+}
+member {
+  id: 0x428b2f47
+  name: "nb_max"
+  type_id: 0x449a775b
+  offset: 5888
+}
+member {
+  id: 0x274997b6
+  name: "nb_min"
+  type_id: 0x449a775b
+  offset: 16128
+}
+member {
+  id: 0x27499a80
+  name: "nb_min"
+  type_id: 0x449a775b
+  offset: 5696
+}
+member {
+  id: 0x205a36d1
+  name: "nb_vdev"
+  type_id: 0x6720d32f
+  offset: 10304
+}
+member {
+  id: 0x13047be9
+  name: "nbits"
+  type_id: 0x6720d32f
+  offset: 160
+}
+member {
+  id: 0x1326de5c
+  name: "nbits"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0x9a2e178d
+  name: "nbytes"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x9a42ca78
+  name: "nbytes"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x9a42cf0b
+  name: "nbytes"
+  type_id: 0x4585663f
+  offset: 384
+}
+member {
+  id: 0x702253d3
+  name: "ncells"
+  type_id: 0x6720d32f
+  offset: 320
+}
+member {
+  id: 0xe5f6efa3
+  name: "ncmd_timer"
+  type_id: 0xf1159c31
+  offset: 21120
+}
+member {
+  id: 0x724b21cb
+  name: "ncontrols"
+  type_id: 0x4585663f
+  offset: 384
+}
+member {
+  id: 0x13b230cf
+  name: "nd_802154_opt_array"
+  type_id: 0x1dbd085c
+  offset: 1216
+}
+member {
+  id: 0x72be2bc5
+  name: "nd_config"
+  type_id: 0x0fd7dd3d
+  offset: 256
+}
+member {
+  id: 0x15524bef
+  name: "nd_desc"
+  type_id: 0x03f70c68
+}
+member {
+  id: 0x213ffb23
+  name: "nd_net"
+  type_id: 0xb335d16f
+  offset: 10240
+}
+member {
+  id: 0x9364bc46
+  name: "nd_opt_array"
+  type_id: 0xf9a66782
+}
+member {
+  id: 0xea4eee51
+  name: "nd_opt_len"
+  type_id: 0xb3e7bac9
+  offset: 8
+}
+member {
+  id: 0xb1e8621c
+  name: "nd_opt_type"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0x5fa1f99d
+  name: "nd_opts_ri"
+  type_id: 0x3de3f5a1
+  offset: 960
+}
+member {
+  id: 0x9ba73e83
+  name: "nd_opts_ri_end"
+  type_id: 0x3de3f5a1
+  offset: 1024
+}
+member {
+  id: 0x6b4beb7f
+  name: "nd_parms"
+  type_id: 0x31c05a21
+  offset: 7424
+}
+member {
+  id: 0xf108a886
+  name: "nd_set"
+  type_id: 0x180a82d6
+  offset: 9216
+}
+member {
+  id: 0xf108a988
+  name: "nd_set"
+  type_id: 0x180a82d6
+  offset: 256
+}
+member {
+  id: 0xc200b0b0
+  name: "nd_tbl"
+  type_id: 0x1749fb69
+  offset: 1280
+}
+member {
+  id: 0xd94a3d00
+  name: "nd_useropts"
+  type_id: 0x3de3f5a1
+  offset: 1088
+}
+member {
+  id: 0x23904aff
+  name: "nd_useropts_end"
+  type_id: 0x3de3f5a1
+  offset: 1152
+}
+member {
+  id: 0xb7cbdc47
+  name: "ndata"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x4ce502de
+  name: "ndctl"
+  type_id: 0x80e63dcd
+  offset: 448
+}
+member {
+  id: 0xe6090375
+  name: "ndd"
+  type_id: 0x389ecc4e
+  offset: 768
+}
+member {
+  id: 0x6e81fced
+  name: "ndescs"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x431209be
+  name: "ndests"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xb7f742d4
+  name: "ndisc_evict_nocarrier"
+  type_id: 0xb3e7bac9
+  offset: 1928
+}
+member {
+  id: 0x99c24236
+  name: "ndisc_nodetype"
+  type_id: 0xb3e7bac9
+  offset: 24
+  bitsize: 2
+}
+member {
+  id: 0xeac5a0a4
+  name: "ndisc_notify"
+  type_id: 0x0faae5b1
+  offset: 1280
+}
+member {
+  id: 0x51930c44
+  name: "ndisc_ops"
+  type_id: 0x3f15d20a
+  offset: 4224
+}
+member {
+  id: 0xfadff2b0
+  name: "ndisc_send_na"
+  type_id: 0x0da4d640
+  offset: 1024
+}
+member {
+  id: 0xe14dd8ff
+  name: "ndisc_sk"
+  type_id: 0x1d44326e
+  offset: 4736
+}
+member {
+  id: 0x9487ac0c
+  name: "ndisc_tclass"
+  type_id: 0x0faae5b1
+  offset: 1792
+}
+member {
+  id: 0x78779539
+  name: "ndm_family"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0xd3b30610
+  name: "ndm_flags"
+  type_id: 0xb3e7bac9
+  offset: 80
+}
+member {
+  id: 0xedf73f50
+  name: "ndm_ifindex"
+  type_id: 0x0faae5b1
+  offset: 32
+}
+member {
+  id: 0xed838e7e
+  name: "ndm_pad1"
+  type_id: 0xb3e7bac9
+  offset: 8
+}
+member {
+  id: 0x2c98d2aa
+  name: "ndm_pad2"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0xea8b64db
+  name: "ndm_state"
+  type_id: 0xe8034002
+  offset: 64
+}
+member {
+  id: 0x10fa7c4d
+  name: "ndm_type"
+  type_id: 0xb3e7bac9
+  offset: 88
+}
+member {
+  id: 0x705ad8da
+  name: "ndo_add_slave"
+  type_id: 0x2ee8b8bf
+  offset: 2624
+}
+member {
+  id: 0xc42ca310
+  name: "ndo_bpf"
+  type_id: 0x2ed647c7
+  offset: 4288
+}
+member {
+  id: 0x8c531076
+  name: "ndo_bridge_dellink"
+  type_id: 0x2ec0d114
+  offset: 3584
+}
+member {
+  id: 0x98e94462
+  name: "ndo_bridge_getlink"
+  type_id: 0x2d615105
+  offset: 3520
+}
+member {
+  id: 0x9d50fb46
+  name: "ndo_bridge_setlink"
+  type_id: 0x2ec0d6c8
+  offset: 3456
+}
+member {
+  id: 0x3cfc25eb
+  name: "ndo_change_carrier"
+  type_id: 0x2eb71c0e
+  offset: 3648
+}
+member {
+  id: 0x71a06f70
+  name: "ndo_change_mtu"
+  type_id: 0x2ebd4382
+  offset: 1088
+}
+member {
+  id: 0xe5b8e323
+  name: "ndo_change_rx_flags"
+  type_id: 0x0dfb6f2d
+  offset: 448
+}
+member {
+  id: 0xc43d8c6c
+  name: "ndo_del_slave"
+  type_id: 0x2ee8c572
+  offset: 2688
+}
+member {
+  id: 0xf4ab5d1e
+  name: "ndo_dfwd_add_station"
+  type_id: 0x1c2d51c5
+  offset: 3904
+}
+member {
+  id: 0x4961a0f3
+  name: "ndo_dfwd_del_station"
+  type_id: 0x0d84f29b
+  offset: 3968
+}
+member {
+  id: 0x42aafa01
+  name: "ndo_do_ioctl"
+  type_id: 0x2eea222c
+  offset: 704
+}
+member {
+  id: 0x04ed7238
+  name: "ndo_eth_ioctl"
+  type_id: 0x2eea222c
+  offset: 768
+}
+member {
+  id: 0x249aedd9
+  name: "ndo_fdb_add"
+  type_id: 0x2c5f55bd
+  offset: 3136
+}
+member {
+  id: 0x3186e4b7
+  name: "ndo_fdb_del"
+  type_id: 0x2c5f552b
+  offset: 3200
+}
+member {
+  id: 0x749ac6c2
+  name: "ndo_fdb_del_bulk"
+  type_id: 0x2c5ff544
+  offset: 3264
+}
+member {
+  id: 0x76d81eb6
+  name: "ndo_fdb_dump"
+  type_id: 0x2d8b2de8
+  offset: 3328
+}
+member {
+  id: 0x3d2d5dfd
+  name: "ndo_fdb_get"
+  type_id: 0x2da59bbd
+  offset: 3392
+}
+member {
+  id: 0xe653d82e
+  name: "ndo_features_check"
+  type_id: 0x235e4819
+  offset: 320
+}
+member {
+  id: 0xb919468b
+  name: "ndo_fill_forward_path"
+  type_id: 0x2c4d76f3
+  offset: 4736
+}
+member {
+  id: 0xaa82b91e
+  name: "ndo_fill_metadata_dst"
+  type_id: 0x2edf2c38
+  offset: 4160
+}
+member {
+  id: 0x3b5db0ff
+  name: "ndo_fix_features"
+  type_id: 0x2035a67f
+  offset: 2880
+}
+member {
+  id: 0x02f1915c
+  name: "ndo_get_devlink_port"
+  type_id: 0x070e4031
+  offset: 4544
+}
+member {
+  id: 0x6aa950d5
+  name: "ndo_get_iflink"
+  type_id: 0x2ec99d29
+  offset: 4096
+}
+member {
+  id: 0xc2c6e6e6
+  name: "ndo_get_offload_stats"
+  type_id: 0x2bb01e4c
+  offset: 1408
+}
+member {
+  id: 0xc5de136c
+  name: "ndo_get_peer_dev"
+  type_id: 0x36a6b8e5
+  offset: 4672
+}
+member {
+  id: 0x077a9701
+  name: "ndo_get_phys_port_id"
+  type_id: 0x2eef767c
+  offset: 3712
+}
+member {
+  id: 0x4318f0e7
+  name: "ndo_get_phys_port_name"
+  type_id: 0x2ed1a3e1
+  offset: 3840
+}
+member {
+  id: 0xb078b63f
+  name: "ndo_get_port_parent_id"
+  type_id: 0x2eef767c
+  offset: 3776
+}
+member {
+  id: 0x3a5a6057
+  name: "ndo_get_stats"
+  type_id: 0x1115de80
+  offset: 1472
+}
+member {
+  id: 0x6eedda4c
+  name: "ndo_get_stats64"
+  type_id: 0x0d9ddaf9
+  offset: 1280
+}
+member {
+  id: 0x6f7c60f4
+  name: "ndo_get_tstamp"
+  type_id: 0x2e766833
+  offset: 4800
+}
+member {
+  id: 0x58be93da
+  name: "ndo_get_vf_config"
+  type_id: 0x2ebd5128
+  offset: 1984
+}
+member {
+  id: 0x76669f23
+  name: "ndo_get_vf_guid"
+  type_id: 0x2ebcf7aa
+  offset: 2304
+}
+member {
+  id: 0xfff5e358
+  name: "ndo_get_vf_port"
+  type_id: 0x2ebd1774
+  offset: 2240
+}
+member {
+  id: 0xefda1249
+  name: "ndo_get_vf_stats"
+  type_id: 0x2ebfd057
+  offset: 2112
+}
+member {
+  id: 0xe984d54a
+  name: "ndo_get_xmit_slave"
+  type_id: 0x36a52079
+  offset: 2752
+}
+member {
+  id: 0x3e979042
+  name: "ndo_has_offload_stats"
+  type_id: 0x366793f0
+  offset: 1344
+}
+member {
+  id: 0x531023fc
+  name: "ndo_init"
+  type_id: 0x2eda6351
+}
+member {
+  id: 0xd357e987
+  name: "ndo_neigh_construct"
+  type_id: 0x2ed189e4
+  offset: 3008
+}
+member {
+  id: 0xbbb71df0
+  name: "ndo_neigh_destroy"
+  type_id: 0x0d97a54b
+  offset: 3072
+}
+member {
+  id: 0x5128918e
+  name: "ndo_neigh_setup"
+  type_id: 0x2eeba30b
+  offset: 1152
+}
+member {
+  id: 0x048d6b96
+  name: "ndo_open"
+  type_id: 0x2eda6351
+  offset: 128
+}
+member {
+  id: 0xdc89fb16
+  name: "ndo_rx_flow_steer"
+  type_id: 0x2eeddd14
+  offset: 2560
+}
+member {
+  id: 0x821dab47
+  name: "ndo_select_queue"
+  type_id: 0x09f6f4fd
+  offset: 384
+}
+member {
+  id: 0x1fed8b14
+  name: "ndo_set_config"
+  type_id: 0x2eec9396
+  offset: 1024
+}
+member {
+  id: 0xb62c4c6b
+  name: "ndo_set_features"
+  type_id: 0x2effe7f2
+  offset: 2944
+}
+member {
+  id: 0x0ed7dd61
+  name: "ndo_set_mac_address"
+  type_id: 0x2ec2de34
+  offset: 576
+}
+member {
+  id: 0x479f9b47
+  name: "ndo_set_rx_headroom"
+  type_id: 0x0dfb6f2d
+  offset: 4224
+}
+member {
+  id: 0xf89f32ef
+  name: "ndo_set_rx_mode"
+  type_id: 0x0d9c4ffe
+  offset: 512
+}
+member {
+  id: 0xf2627b6c
+  name: "ndo_set_tx_maxrate"
+  type_id: 0x2eb1d300
+  offset: 4032
+}
+member {
+  id: 0x7d665065
+  name: "ndo_set_vf_guid"
+  type_id: 0x2eb40691
+  offset: 2368
+}
+member {
+  id: 0xc54548e5
+  name: "ndo_set_vf_link_state"
+  type_id: 0x2ebb318f
+  offset: 2048
+}
+member {
+  id: 0xef6fb8ec
+  name: "ndo_set_vf_mac"
+  type_id: 0x2ebd4ff0
+  offset: 1664
+}
+member {
+  id: 0x60bf7816
+  name: "ndo_set_vf_port"
+  type_id: 0x2ebd64f9
+  offset: 2176
+}
+member {
+  id: 0x3612d79b
+  name: "ndo_set_vf_rate"
+  type_id: 0x2ebb56af
+  offset: 1792
+}
+member {
+  id: 0x87b52c6e
+  name: "ndo_set_vf_rss_query_en"
+  type_id: 0x2ebb9477
+  offset: 2432
+}
+member {
+  id: 0xe4107fff
+  name: "ndo_set_vf_spoofchk"
+  type_id: 0x2ebb9477
+  offset: 1856
+}
+member {
+  id: 0xe2308d2a
+  name: "ndo_set_vf_trust"
+  type_id: 0x2ebb9477
+  offset: 1920
+}
+member {
+  id: 0x35b77446
+  name: "ndo_set_vf_vlan"
+  type_id: 0x2eb4795d
+  offset: 1728
+}
+member {
+  id: 0x0cad881a
+  name: "ndo_setup_tc"
+  type_id: 0x2efd41f1
+  offset: 2496
+}
+member {
+  id: 0x489f8b6b
+  name: "ndo_siocbond"
+  type_id: 0x2eea222c
+  offset: 832
+}
+member {
+  id: 0x0a62bd2c
+  name: "ndo_siocdevprivate"
+  type_id: 0x2eedbcd7
+  offset: 960
+}
+member {
+  id: 0x01bfee66
+  name: "ndo_siocwandev"
+  type_id: 0x2ec5c016
+  offset: 896
+}
+member {
+  id: 0x1d50d68b
+  name: "ndo_sk_get_lower_dev"
+  type_id: 0x36bbfcd7
+  offset: 2816
+}
+member {
+  id: 0x0fd89812
+  name: "ndo_start_xmit"
+  type_id: 0x1fd545e0
+  offset: 256
+}
+member {
+  id: 0x31b87a28
+  name: "ndo_stop"
+  type_id: 0x2eda6351
+  offset: 192
+}
+member {
+  id: 0xa6e950b0
+  name: "ndo_tunnel_ctl"
+  type_id: 0x2ee5ba60
+  offset: 4608
+}
+member {
+  id: 0x1870e87a
+  name: "ndo_tx_timeout"
+  type_id: 0x0dd9ca98
+  offset: 1216
+}
+member {
+  id: 0x832f998d
+  name: "ndo_uninit"
+  type_id: 0x0d9c4ffe
+  offset: 64
+}
+member {
+  id: 0x90f69fb8
+  name: "ndo_validate_addr"
+  type_id: 0x2eda6351
+  offset: 640
+}
+member {
+  id: 0x15c8b81c
+  name: "ndo_vlan_rx_add_vid"
+  type_id: 0x2ea6f36d
+  offset: 1536
+}
+member {
+  id: 0x3405aa0e
+  name: "ndo_vlan_rx_kill_vid"
+  type_id: 0x2ea6f36d
+  offset: 1600
+}
+member {
+  id: 0xca4da219
+  name: "ndo_xdp_get_xmit_slave"
+  type_id: 0x36aab51f
+  offset: 4416
+}
+member {
+  id: 0x4cbe94a3
+  name: "ndo_xdp_xmit"
+  type_id: 0x2ebdc32e
+  offset: 4352
+}
+member {
+  id: 0xe893cf76
+  name: "ndo_xsk_wakeup"
+  type_id: 0x2e1ffbf8
+  offset: 4480
+}
+member {
+  id: 0x971569ce
+  name: "ndr_mappings"
+  type_id: 0x914dbfdc
+  offset: 8192
+}
+member {
+  id: 0x15f17834
+  name: "ndr_size"
+  type_id: 0x92233392
+  offset: 8256
+}
+member {
+  id: 0x2155bc8f
+  name: "ndr_start"
+  type_id: 0x92233392
+  offset: 8320
+}
+member {
+  id: 0x7810348e
+  name: "near"
+  type_id: 0xc8f8a046
+  offset: 128
+}
+member {
+  id: 0x298abdd9
+  name: "need_delayed_register"
+  type_id: 0x4585663f
+  offset: 2016
+  bitsize: 1
+}
+member {
+  id: 0x34dbea4f
+  name: "need_free"
+  type_id: 0x295c7202
+  offset: 48
+}
+member {
+  id: 0xada579fc
+  name: "need_free"
+  type_id: 0x6d7f5ff6
+  offset: 1360
+  bitsize: 1
+}
+member {
+  id: 0x905a02be
+  name: "need_io_watchdog"
+  type_id: 0x4585663f
+  offset: 5608
+  bitsize: 1
+}
+member {
+  id: 0x2ddb9f52
+  name: "need_mb"
+  type_id: 0x295c7202
+  offset: 24
+}
+member {
+  id: 0xcb4cb5f2
+  name: "need_oc_pp_cycle"
+  type_id: 0x4585663f
+  offset: 5613
+  bitsize: 1
+}
+member {
+  id: 0x729bc36c
+  name: "need_parent_lock"
+  type_id: 0x6d7f5ff6
+  offset: 1408
+}
+member {
+  id: 0x738a39a9
+  name: "need_plug"
+  type_id: 0x6d7f5ff6
+  offset: 328
+}
+member {
+  id: 0x02f79d12
+  name: "need_prepare"
+  type_id: 0x6d7f5ff6
+  offset: 45432
+}
+member {
+  id: 0x8b549786
+  name: "need_qs"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0x6cb8fd7d
+  name: "need_replay"
+  type_id: 0x295c7202
+  offset: 449
+  bitsize: 1
+}
+member {
+  id: 0xbce3b23b
+  name: "need_reply"
+  type_id: 0x4585663f
+  offset: 640
+  bitsize: 1
+}
+member {
+  id: 0xa400c41f
+  name: "need_rescan"
+  type_id: 0x6d7f5ff6
+  offset: 1825
+  bitsize: 1
+}
+member {
+  id: 0x15f66868
+  name: "need_resched"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0xa5ad7a15
+  name: "need_retune"
+  type_id: 0x6720d32f
+  offset: 8576
+}
+member {
+  id: 0x5472d811
+  name: "need_setup"
+  type_id: 0x6d7f5ff6
+  offset: 45424
+}
+member {
+  id: 0x5472dd8c
+  name: "need_setup"
+  type_id: 0x6d7f5ff6
+  offset: 128
+}
+member {
+  id: 0x5472dfa8
+  name: "need_setup"
+  type_id: 0x6d7f5ff6
+  offset: 8
+}
+member {
+  id: 0x394e18c1
+  name: "need_sync"
+  type_id: 0x295c7202
+  offset: 448
+  bitsize: 1
+}
+member {
+  id: 0xfbc6aa01
+  name: "need_sync"
+  type_id: 0x6d7f5ff6
+  offset: 976
+}
+member {
+  id: 0xfbc6aa7e
+  name: "need_sync"
+  type_id: 0x6d7f5ff6
+  offset: 64
+}
+member {
+  id: 0x88c3da72
+  name: "need_ts"
+  type_id: 0x6d7f5ff6
+  offset: 64
+}
+member {
+  id: 0x0282cbad
+  name: "need_update"
+  type_id: 0x74d29cf1
+  offset: 8640
+}
+member {
+  id: 0x66ced5ce
+  name: "need_wakeup"
+  type_id: 0x6d7f5ff6
+  offset: 384
+}
+member {
+  id: 0x5d7712f8
+  name: "needed_headroom"
+  type_id: 0xc93e017b
+  offset: 1824
+}
+member {
+  id: 0x97549e6d
+  name: "needed_tailroom"
+  type_id: 0xc93e017b
+  offset: 1840
+}
+member {
+  id: 0x8fc027a8
+  name: "needs_altsetting0"
+  type_id: 0x4585663f
+  offset: 324
+  bitsize: 1
+}
+member {
+  id: 0x13d49b3e
+  name: "needs_binding"
+  type_id: 0x4585663f
+  offset: 325
+  bitsize: 1
+}
+member {
+  id: 0x87f2640c
+  name: "needs_force_resume"
+  type_id: 0x4585663f
+  offset: 1990
+  bitsize: 1
+}
+member {
+  id: 0xb32edac8
+  name: "needs_free_netdev"
+  type_id: 0x6d7f5ff6
+  offset: 10144
+}
+member {
+  id: 0xba8c8a07
+  name: "needs_freset"
+  type_id: 0x4585663f
+  offset: 22108
+  bitsize: 1
+}
+member {
+  id: 0x9363e061
+  name: "needs_hpd"
+  type_id: 0x6d7f5ff6
+  offset: 11392
+}
+member {
+  id: 0xd78c5d79
+  name: "needs_remote_wakeup"
+  type_id: 0x4585663f
+  offset: 323
+  bitsize: 1
+}
+member {
+  id: 0xfeb43495
+  name: "needs_serial"
+  type_id: 0x4585663f
+  offset: 224
+  bitsize: 1
+}
+member {
+  id: 0x89822649
+  name: "negated"
+  type_id: 0x6d7f5ff6
+}
+member {
+  id: 0xd35eb735
+  name: "negative_advice"
+  type_id: 0x23cf7ec9
+  offset: 512
+}
+member {
+  id: 0x325061d9
+  name: "negotiated_rev"
+  type_id: 0x4585663f
+  offset: 7776
+}
+member {
+  id: 0xcf8ca44d
+  name: "negset"
+  type_id: 0x86a931f9
+  offset: 128
+}
+member {
+  id: 0x8bb2a09a
+  name: "neigh_lookup"
+  type_id: 0x0e44f9f8
+  offset: 832
+}
+member {
+  id: 0xa0075dfb
+  name: "neigh_priv_len"
+  type_id: 0xc93e017b
+  offset: 4672
+}
+member {
+  id: 0xdb7c7a0a
+  name: "neigh_setup"
+  type_id: 0x2d4eaa35
+  offset: 256
+}
+member {
+  id: 0x6da2bf74
+  name: "neighbour_checks"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x7cc2460f
+  name: "nel"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x7cc24b6d
+  name: "nel"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0xc531a02f
+  name: "nelem_hint"
+  type_id: 0x914dbfdc
+}
+member {
+  id: 0xcb40d493
+  name: "nelems"
+  type_id: 0x74d29cf1
+  offset: 1312
+}
+member {
+  id: 0xc1045082
+  name: "nentries"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x962b90e3
+  name: "nents"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x98a15090
+  name: "nest"
+  type_id: 0x239e18b5
+  offset: 10816
+}
+member {
+  id: 0x98b1b235
+  name: "nest"
+  type_id: 0x33756485
+  offset: 896
+}
+member {
+  id: 0x98c745aa
+  name: "nest"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x98c74903
+  name: "nest"
+  type_id: 0x4585663f
+  offset: 384
+}
+member {
+  id: 0x5f6b4acf
+  name: "nested_policy"
+  type_id: 0x3a40fc42
+}
+member {
+  id: 0x6c332926
+  name: "nesting"
+  type_id: 0x74d29cf1
+  offset: 224
+}
+member {
+  id: 0x7203e42d
+  name: "net"
+  type_id: 0x0ca27481
+  offset: 576
+}
+member {
+  id: 0x7203e49d
+  name: "net"
+  type_id: 0x0ca27481
+  offset: 128
+}
+member {
+  id: 0x7203ea98
+  name: "net"
+  type_id: 0x0ca27481
+  offset: 320
+}
+member {
+  id: 0x7203eb26
+  name: "net"
+  type_id: 0x0ca27481
+  offset: 640
+}
+member {
+  id: 0x7203ed5f
+  name: "net"
+  type_id: 0x0ca27481
+}
+member {
+  id: 0x7203edf4
+  name: "net"
+  type_id: 0x0ca27481
+  offset: 256
+}
+member {
+  id: 0x7203ef62
+  name: "net"
+  type_id: 0x0ca27481
+  offset: 704
+}
+member {
+  id: 0x723dee2d
+  name: "net"
+  type_id: 0x32a623d7
+  offset: 1728
+}
+member {
+  id: 0x72bc7afa
+  name: "net"
+  type_id: 0xb335d16f
+}
+member {
+  id: 0x72bc7e1b
+  name: "net"
+  type_id: 0xb335d16f
+  offset: 64
+}
+member {
+  id: 0x68533833
+  name: "net_cookie"
+  type_id: 0x92233392
+  offset: 30720
+}
+member {
+  id: 0x61d0c33e
+  name: "net_id"
+  type_id: 0x4585663f
+  offset: 288
+}
+member {
+  id: 0x5770ab3a
+  name: "net_notifier_list"
+  type_id: 0xd3c80119
+  offset: 19264
+}
+member {
+  id: 0x8112103e
+  name: "net_ns"
+  type_id: 0x0ca27481
+  offset: 320
+}
+member {
+  id: 0x81121f57
+  name: "net_ns"
+  type_id: 0x0ca27481
+  offset: 768
+}
+member {
+  id: 0x871bd136
+  name: "net_plane"
+  type_id: 0x384f7d7c
+  offset: 2240
+}
+member {
+  id: 0xc2d98296
+  name: "net_statistics"
+  type_id: 0x2a1c3bdd
+  offset: 192
+}
+member {
+  id: 0x92c34846
+  name: "netdev"
+  type_id: 0x32a623d7
+  offset: 64
+}
+member {
+  id: 0x92c34c0c
+  name: "netdev"
+  type_id: 0x32a623d7
+  offset: 256
+}
+member {
+  id: 0x92c34ca7
+  name: "netdev"
+  type_id: 0x32a623d7
+}
+member {
+  id: 0x92c34d05
+  name: "netdev"
+  type_id: 0x32a623d7
+  offset: 2560
+}
+member {
+  id: 0x7ffb6c7c
+  name: "netdev_chain"
+  type_id: 0x7db04ce7
+  offset: 2496
+}
+member {
+  id: 0x78c07266
+  name: "netdev_data"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0x92a8c4b9
+  name: "netdev_ops"
+  type_id: 0x39e9ff6b
+  offset: 1664
+}
+member {
+  id: 0x8d337bdc
+  name: "netdevs"
+  type_id: 0xd3c80119
+  offset: 64
+}
+member {
+  id: 0xe68e5854
+  name: "netlink_ns"
+  type_id: 0x1eafa420
+  offset: 192
+}
+member {
+  id: 0x0d09dffc
+  name: "netmsg_cache"
+  type_id: 0xa2b31df2
+  offset: 2432
+}
+member {
+  id: 0x2722e901
+  name: "netns"
+  type_id: 0x169e18e0
+}
+member {
+  id: 0xcee0ecf3
+  name: "netns_ids"
+  type_id: 0x04b89667
+  offset: 768
+}
+member {
+  id: 0x3badc7b9
+  name: "netns_ino"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x035c5fee
+  name: "netns_refund"
+  type_id: 0x6d7f5ff6
+  offset: 384
+}
+member {
+  id: 0xe3945ea5
+  name: "netnsok"
+  type_id: 0x295c7202
+  offset: 288
+  bitsize: 1
+}
+member {
+  id: 0xfc8747d2
+  name: "network_hdrlen"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x827a15cf
+  name: "network_header"
+  type_id: 0xe8034002
+  offset: 448
+}
+member {
+  id: 0x2a313b07
+  name: "new"
+  type_id: 0x5d8155a5
+  offset: 739
+  bitsize: 1
+}
+member {
+  id: 0xb18cf5ba
+  name: "new"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x685fbe45
+  name: "new_blink_brightness"
+  type_id: 0x6720d32f
+  offset: 1568
+}
+member {
+  id: 0x4c568493
+  name: "new_child"
+  type_id: 0x16b3acfc
+  offset: 832
+}
+member {
+  id: 0x6fa9956d
+  name: "new_connection"
+  type_id: 0x31cbe3b8
+  offset: 64
+}
+member {
+  id: 0xb79bbf0c
+  name: "new_elems"
+  type_id: 0xc9082b19
+  offset: 1024
+}
+member {
+  id: 0x5191c7d5
+  name: "new_frame"
+  type_id: 0x6d7f5ff6
+  offset: 64
+}
+member {
+  id: 0x0cab4ee0
+  name: "new_mapping"
+  type_id: 0xc9082b19
+  offset: 2976
+}
+member {
+  id: 0xd6a76a91
+  name: "new_mapping_sport"
+  type_id: 0x7584e7da
+  offset: 2944
+}
+member {
+  id: 0xffaef1fc
+  name: "new_pages"
+  type_id: 0xd3c80119
+  offset: 2432
+}
+member {
+  id: 0x7c11dfa4
+  name: "new_parent"
+  type_id: 0x16b3acfc
+  offset: 768
+}
+member {
+  id: 0xde66b021
+  name: "new_parent_index"
+  type_id: 0x295c7202
+  offset: 520
+}
+member {
+  id: 0x47a34ff8
+  name: "new_power"
+  type_id: 0x5d8155a5
+  offset: 742
+  bitsize: 1
+}
+member {
+  id: 0x49d5b588
+  name: "new_prog_fd"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x4c8e95ba
+  name: "new_rate"
+  type_id: 0x33756485
+  offset: 704
+}
+member {
+  id: 0x0a536b98
+  name: "new_ring"
+  type_id: 0x21b2d2f4
+  offset: 256
+}
+member {
+  id: 0xa3831cac
+  name: "new_role"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x4fa1c1e5
+  name: "new_source_frs_current"
+  type_id: 0x9f5bfa55
+  offset: 34016
+}
+member {
+  id: 0xef42e2c8
+  name: "new_state"
+  type_id: 0x09adb9f4
+  offset: 192
+}
+member {
+  id: 0xef6563e9
+  name: "new_state"
+  type_id: 0x2e2c982d
+  offset: 192
+}
+member {
+  id: 0xef67c16b
+  name: "new_state"
+  type_id: 0x2c8e1aaa
+  offset: 192
+}
+member {
+  id: 0xef719511
+  name: "new_state"
+  type_id: 0x3ada60b4
+  offset: 192
+}
+member {
+  id: 0x919483dd
+  name: "new_type"
+  type_id: 0xedf277ba
+  offset: 154
+  bitsize: 4
+}
+member {
+  id: 0xe719c8c0
+  name: "new_value"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xe723c4b2
+  name: "new_value"
+  type_id: 0x097a80cb
+  offset: 448
+}
+member {
+  id: 0x4a43cc8b
+  name: "newlink"
+  type_id: 0x2d08a576
+  offset: 576
+}
+member {
+  id: 0x7dc4ff2e
+  name: "newval"
+  type_id: 0x39470e64
+  offset: 64
+}
+member {
+  id: 0x1120c818
+  name: "next"
+  type_id: 0xd3c80119
+  offset: 4480
+}
+member {
+  id: 0x113a0136
+  name: "next"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0x1161270d
+  name: "next"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0x11942d37
+  name: "next"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x1196d16f
+  name: "next"
+  type_id: 0x65d1b07a
+}
+member {
+  id: 0x11b68158
+  name: "next"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x11c03125
+  name: "next"
+  type_id: 0x33390909
+  offset: 960
+}
+member {
+  id: 0x11c03ac9
+  name: "next"
+  type_id: 0x333a16a5
+}
+member {
+  id: 0x11c1586d
+  name: "next"
+  type_id: 0x3258b271
+}
+member {
+  id: 0x11c1eba0
+  name: "next"
+  type_id: 0x32ec08f2
+  offset: 448
+}
+member {
+  id: 0x11c2691f
+  name: "next"
+  type_id: 0x31600266
+  offset: 128
+}
+member {
+  id: 0x11c4767e
+  name: "next"
+  type_id: 0x3776a166
+}
+member {
+  id: 0x11c679d6
+  name: "next"
+  type_id: 0x357909b2
+}
+member {
+  id: 0x11c72290
+  name: "next"
+  type_id: 0x342a8622
+  offset: 192
+}
+member {
+  id: 0x11c7e403
+  name: "next"
+  type_id: 0x34ed1e4a
+  offset: 128
+}
+member {
+  id: 0x11c85643
+  name: "next"
+  type_id: 0x3b569cc2
+}
+member {
+  id: 0x11c93eed
+  name: "next"
+  type_id: 0x3a3e3264
+}
+member {
+  id: 0x11cabf95
+  name: "next"
+  type_id: 0x39bf4a63
+}
+member {
+  id: 0x11cb4659
+  name: "next"
+  type_id: 0x3846864c
+}
+member {
+  id: 0x11ccea6a
+  name: "next"
+  type_id: 0x3feab580
+}
+member {
+  id: 0x11cd62e6
+  name: "next"
+  type_id: 0x3e6239e1
+}
+member {
+  id: 0x11cdb042
+  name: "next"
+  type_id: 0x3eb09d4a
+}
+member {
+  id: 0x11cdf165
+  name: "next"
+  type_id: 0x3ef55b88
+  offset: 64
+}
+member {
+  id: 0x11cf4f91
+  name: "next"
+  type_id: 0x3c468c18
+  offset: 128
+}
+member {
+  id: 0x11cf5b08
+  name: "next"
+  type_id: 0x3c5bd7ce
+}
+member {
+  id: 0x11d094ae
+  name: "next"
+  type_id: 0x23947191
+}
+member {
+  id: 0x11d0d9dd
+  name: "next"
+  type_id: 0x23d902f6
+}
+member {
+  id: 0x11d0f564
+  name: "next"
+  type_id: 0x23f5bb5c
+}
+member {
+  id: 0x11d162a5
+  name: "next"
+  type_id: 0x22669bc4
+  offset: 64
+}
+member {
+  id: 0x11d2d41a
+  name: "next"
+  type_id: 0x21de2259
+  offset: 1536
+}
+member {
+  id: 0x11d5cf20
+  name: "next"
+  type_id: 0x26cfffd7
+}
+member {
+  id: 0x11d9bf1a
+  name: "next"
+  type_id: 0x2abfc5ab
+}
+member {
+  id: 0x11d9dbfb
+  name: "next"
+  type_id: 0x2adb24e6
+}
+member {
+  id: 0x11dbf2c0
+  name: "next"
+  type_id: 0x28f21f89
+}
+member {
+  id: 0x11dd883a
+  name: "next"
+  type_id: 0x2e8ad82b
+  offset: 704
+}
+member {
+  id: 0x11ddc57a
+  name: "next"
+  type_id: 0x2ecc6701
+  offset: 128
+}
+member {
+  id: 0x11dde27a
+  name: "next"
+  type_id: 0x2ee2a594
+}
+member {
+  id: 0x11de5ee1
+  name: "next"
+  type_id: 0x2d5e3e76
+}
+member {
+  id: 0x11e57880
+  name: "next"
+  type_id: 0x16749208
+  offset: 112
+}
+member {
+  id: 0x11e58953
+  name: "next"
+  type_id: 0x168d6de3
+  offset: 64
+}
+member {
+  id: 0x11e65bc2
+  name: "next"
+  type_id: 0x155b1d5a
+}
+member {
+  id: 0x11e7bfe9
+  name: "next"
+  type_id: 0x14b9453b
+  offset: 1792
+}
+member {
+  id: 0x11e8a28b
+  name: "next"
+  type_id: 0x1bab96d2
+  offset: 128
+}
+member {
+  id: 0x11e8b29a
+  name: "next"
+  type_id: 0x1bb6a471
+  offset: 64
+}
+member {
+  id: 0x11e8e673
+  name: "next"
+  type_id: 0x1be24dc1
+  offset: 64
+}
+member {
+  id: 0x11e9921e
+  name: "next"
+  type_id: 0x1a95dec0
+  offset: 1024
+}
+member {
+  id: 0x11ea576e
+  name: "next"
+  type_id: 0x195350a3
+  offset: 64
+}
+member {
+  id: 0x11ebf92a
+  name: "next"
+  type_id: 0x18f9f5e3
+}
+member {
+  id: 0x11ec425c
+  name: "next"
+  type_id: 0x1f4b4149
+  offset: 128
+}
+member {
+  id: 0x11ee1d25
+  name: "next"
+  type_id: 0x1d1533af
+  offset: 192
+}
+member {
+  id: 0x11f00e53
+  name: "next"
+  type_id: 0x03064599
+  offset: 192
+}
+member {
+  id: 0x11f05612
+  name: "next"
+  type_id: 0x0356cddf
+}
+member {
+  id: 0x11f070e1
+  name: "next"
+  type_id: 0x0379fcff
+  offset: 128
+}
+member {
+  id: 0x11f1c380
+  name: "next"
+  type_id: 0x02c35f57
+}
+member {
+  id: 0x11f1feb9
+  name: "next"
+  type_id: 0x02f9a1f8
+  offset: 320
+}
+member {
+  id: 0x11f20dd8
+  name: "next"
+  type_id: 0x0109e669
+  offset: 64
+}
+member {
+  id: 0x11f25516
+  name: "next"
+  type_id: 0x015f6fbc
+  offset: 896
+}
+member {
+  id: 0x11f3fee9
+  name: "next"
+  type_id: 0x00fe3621
+}
+member {
+  id: 0x11f59aab
+  name: "next"
+  type_id: 0x069a74ff
+}
+member {
+  id: 0x11f619be
+  name: "next"
+  type_id: 0x0519611c
+}
+member {
+  id: 0x11f64fb6
+  name: "next"
+  type_id: 0x054f691a
+}
+member {
+  id: 0x11f6ff35
+  name: "next"
+  type_id: 0x05f8f5c5
+  offset: 1024
+}
+member {
+  id: 0x11f8522d
+  name: "next"
+  type_id: 0x0b561305
+  offset: 64
+}
+member {
+  id: 0x11f8e110
+  name: "next"
+  type_id: 0x0be1cf6e
+}
+member {
+  id: 0x11f8ea6a
+  name: "next"
+  type_id: 0x0beab59b
+}
+member {
+  id: 0x11f8eb33
+  name: "next"
+  type_id: 0x0be3257b
+  offset: 192
+}
+member {
+  id: 0x11f9ee1a
+  name: "next"
+  type_id: 0x0aeec5e6
+}
+member {
+  id: 0x11fa45cf
+  name: "next"
+  type_id: 0x09451098
+}
+member {
+  id: 0x11fa4bec
+  name: "next"
+  type_id: 0x0942f1ca
+  offset: 128
+}
+member {
+  id: 0x11fb2249
+  name: "next"
+  type_id: 0x082be49e
+  offset: 576
+}
+member {
+  id: 0x11fc9103
+  name: "next"
+  type_id: 0x0f91dccc
+}
+member {
+  id: 0x11fd8eee
+  name: "next"
+  type_id: 0x0e86f8f4
+  offset: 192
+}
+member {
+  id: 0x11ffe851
+  name: "next"
+  type_id: 0x0cef4974
+  offset: 320
+}
+member {
+  id: 0x7b6ac82c
+  name: "next_addr"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x0e49b8e7
+  name: "next_ams"
+  type_id: 0x31aab745
+  offset: 34144
+}
+member {
+  id: 0x43a6c314
+  name: "next_balance"
+  type_id: 0x33756485
+  offset: 21952
+}
+member {
+  id: 0xbf0297d0
+  name: "next_buf_last"
+  type_id: 0x6d7f5ff6
+  offset: 192
+}
+member {
+  id: 0xf867d2ad
+  name: "next_buffhd_to_drain"
+  type_id: 0x3c468c18
+  offset: 1408
+}
+member {
+  id: 0x6a3897a9
+  name: "next_buffhd_to_fill"
+  type_id: 0x3c468c18
+  offset: 1344
+}
+member {
+  id: 0xe124564f
+  name: "next_chunk"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0x0687eb66
+  name: "next_cpu"
+  type_id: 0x6720d32f
+  offset: 1664
+}
+member {
+  id: 0x7bdae2b9
+  name: "next_cpu_batch"
+  type_id: 0x6720d32f
+  offset: 1696
+}
+member {
+  id: 0xd2cda571
+  name: "next_event"
+  type_id: 0x11c404ba
+  offset: 192
+}
+member {
+  id: 0xd2ef151a
+  name: "next_event"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0xa92fa8fd
+  name: "next_fd"
+  type_id: 0x4585663f
+  offset: 1056
+}
+member {
+  id: 0xb6772014
+  name: "next_frag_idx"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x19f52f20
+  name: "next_frame_id"
+  type_id: 0x6720d32f
+  offset: 1088
+}
+member {
+  id: 0x4d6204ba
+  name: "next_hash"
+  type_id: 0x2d5e3e76
+  offset: 448
+}
+member {
+  id: 0x9c2a23d5
+  name: "next_hrtimer"
+  type_id: 0x11c404ba
+  offset: 64
+}
+member {
+  id: 0x467499ec
+  name: "next_hrtimer_event"
+  type_id: 0x8f1b3fcf
+}
+member {
+  id: 0x1c99f341
+  name: "next_id"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x1cedfb3f
+  name: "next_id"
+  type_id: 0x92233392
+  offset: 192
+}
+member {
+  id: 0x84cfeecc
+  name: "next_in"
+  type_id: 0x35dabb98
+}
+member {
+  id: 0x79241ade
+  name: "next_index"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x61cd2a5c
+  name: "next_interface_id"
+  type_id: 0x295c7202
+  offset: 704
+}
+member {
+  id: 0xd9321edf
+  name: "next_jiffies"
+  type_id: 0x33756485
+  offset: 576
+}
+member {
+  id: 0xf3cd6a9d
+  name: "next_key"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0xfbb31069
+  name: "next_out"
+  type_id: 0x2babdcfa
+  offset: 192
+}
+member {
+  id: 0x11a14a0a
+  name: "next_packet"
+  type_id: 0xa13264c9
+  offset: 25280
+}
+member {
+  id: 0x9c92d4d9
+  name: "next_packet_head"
+  type_id: 0x4585663f
+  offset: 44096
+}
+member {
+  id: 0x0b6cdc5c
+  name: "next_packet_queued"
+  type_id: 0x4585663f
+  offset: 44128
+}
+member {
+  id: 0x30f60bd2
+  name: "next_pn"
+  type_id: 0x92233392
+}
+member {
+  id: 0xcfd2b519
+  name: "next_pn_halves"
+  type_id: 0x736f9228
+}
+member {
+  id: 0x1147dffa
+  name: "next_rcu"
+  type_id: 0x2d5e3e76
+}
+member {
+  id: 0x4074d0ef
+  name: "next_request"
+  type_id: 0x3d8b1920
+  offset: 1216
+}
+member {
+  id: 0xb8af602d
+  name: "next_sched"
+  type_id: 0x2e8d5f05
+  offset: 1856
+}
+member {
+  id: 0x430d2e4c
+  name: "next_seq"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0x43da8227
+  name: "next_seq"
+  type_id: 0x4585663f
+  offset: 544
+}
+member {
+  id: 0x59eebc55
+  name: "next_statechange"
+  type_id: 0x33756485
+  offset: 5440
+}
+member {
+  id: 0x59eebc63
+  name: "next_statechange"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xe211dd14
+  name: "next_string_id"
+  type_id: 0x295c7202
+  offset: 960
+}
+member {
+  id: 0x81fdf941
+  name: "next_timer"
+  type_id: 0x39cdf888
+  offset: 320
+}
+member {
+  id: 0x6cd9cff6
+  name: "next_track"
+  type_id: 0x6d7f5ff6
+  offset: 1384
+}
+member {
+  id: 0xe551d421
+  name: "next_trig"
+  type_id: 0xd3c80119
+  offset: 448
+}
+member {
+  id: 0x40d782b0
+  name: "next_tx_seq"
+  type_id: 0xe8034002
+  offset: 1520
+}
+member {
+  id: 0x7fcfe1c6
+  name: "next_uframe"
+  type_id: 0x4585663f
+  offset: 768
+}
+member {
+  id: 0x00e2ff47
+  name: "next_update"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0xd69bf665
+  name: "next_wakeup"
+  type_id: 0x11c404ba
+  offset: 128
+}
+member {
+  id: 0x99f024f1
+  name: "nextbusn"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x6067174e
+  name: "nextents"
+  type_id: 0x022008d0
+  offset: 384
+}
+member {
+  id: 0xe88670ff
+  name: "nextevt"
+  type_id: 0x92233392
+}
+member {
+  id: 0xe8c4a21b
+  name: "nexthdr"
+  type_id: 0x295c7202
+  offset: 64
+}
+member {
+  id: 0xff39e9ad
+  name: "nexthdrlen"
+  type_id: 0xf435685e
+  offset: 128
+}
+member {
+  id: 0xe2b01a04
+  name: "nexthop"
+  type_id: 0x81cadb9e
+  offset: 4608
+}
+member {
+  id: 0xd02f52bb
+  name: "nf"
+  type_id: 0x856ef6c4
+  offset: 18560
+}
+member {
+  id: 0xad249668
+  name: "nf_conntrack_event_cb"
+  type_id: 0x27a9d46c
+  offset: 128
+}
+member {
+  id: 0x7085fd8a
+  name: "nf_ct_proto"
+  type_id: 0xfc235432
+  offset: 192
+}
+member {
+  id: 0xc4c0ff26
+  name: "nf_hooks_egress"
+  type_id: 0x057eb7eb
+  offset: 8192
+}
+member {
+  id: 0x4fe1d60f
+  name: "nf_hooks_ingress"
+  type_id: 0x057eb7eb
+  offset: 6784
+}
+member {
+  id: 0x788992a7
+  name: "nf_log_dir_header"
+  type_id: 0x34544a3f
+  offset: 768
+}
+member {
+  id: 0x5f33aa63
+  name: "nf_loggers"
+  type_id: 0xc73ad3a1
+  offset: 64
+}
+member {
+  id: 0x0578d662
+  name: "nf_skip_egress"
+  type_id: 0xb3e7bac9
+  offset: 31
+  bitsize: 1
+}
+member {
+  id: 0xb6c5e420
+  name: "nf_trace"
+  type_id: 0xb3e7bac9
+  offset: 4
+  bitsize: 1
+}
+member {
+  id: 0xd83c0113
+  name: "nfcid1"
+  type_id: 0x7dbd382e
+  offset: 96
+}
+member {
+  id: 0x87be1d5f
+  name: "nfcid1_len"
+  type_id: 0x295c7202
+  offset: 88
+}
+member {
+  id: 0x19efa420
+  name: "nfcid2"
+  type_id: 0xee699492
+  offset: 184
+}
+member {
+  id: 0xb85ceabd
+  name: "nfcid2_len"
+  type_id: 0x295c7202
+  offset: 176
+}
+member {
+  id: 0xffb098ff
+  name: "nfds"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x263b9a6d
+  name: "nfl_bpg_offset"
+  type_id: 0x914dbfdc
+  offset: 912
+}
+member {
+  id: 0x26df59fd
+  name: "nfl_bpg_offset"
+  type_id: 0x7584e7da
+  offset: 224
+}
+member {
+  id: 0x6c93fd20
+  name: "nfs4_fl"
+  type_id: 0x5d26223d
+}
+member {
+  id: 0xc5e6562f
+  name: "nfs_fl"
+  type_id: 0x35981da9
+}
+member {
+  id: 0xe49ba3c7
+  name: "ngpio"
+  type_id: 0x914dbfdc
+  offset: 1376
+}
+member {
+  id: 0xe49bac99
+  name: "ngpio"
+  type_id: 0x914dbfdc
+  offset: 8736
+}
+member {
+  id: 0x2bcea793
+  name: "ngroups"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x71302a23
+  name: "nh"
+  type_id: 0x15fc2a9e
+  offset: 7552
+}
+member {
+  id: 0x7137a178
+  name: "nh"
+  type_id: 0x127c410d
+  offset: 832
+}
+member {
+  id: 0x7137a2c2
+  name: "nh"
+  type_id: 0x127c410d
+}
+member {
+  id: 0x7137a4bf
+  name: "nh"
+  type_id: 0x127c410d
+  offset: 1280
+}
+member {
+  id: 0x713a432a
+  name: "nh"
+  type_id: 0x1f9da9a8
+}
+member {
+  id: 0xdb1c1848
+  name: "nh_all"
+  type_id: 0x7db04ce7
+  offset: 7488
+}
+member {
+  id: 0x2e937c1b
+  name: "nh_buckets"
+  type_id: 0xf1797553
+  offset: 1536
+}
+member {
+  id: 0xd894d611
+  name: "nh_common"
+  type_id: 0xa95e3709
+}
+member {
+  id: 0xd1be93e2
+  name: "nh_entries"
+  type_id: 0xd91ba70c
+  offset: 192
+}
+member {
+  id: 0xb97ecd81
+  name: "nh_entry"
+  type_id: 0x17b2105b
+}
+member {
+  id: 0x9fb787a3
+  name: "nh_flags"
+  type_id: 0x295c7202
+  offset: 808
+}
+member {
+  id: 0x9fb7898e
+  name: "nh_flags"
+  type_id: 0x295c7202
+  offset: 200
+}
+member {
+  id: 0x731577d7
+  name: "nh_grp"
+  type_id: 0x380a78f0
+}
+member {
+  id: 0xa5fa00fd
+  name: "nh_hash"
+  type_id: 0x49a73111
+  offset: 576
+}
+member {
+  id: 0x8896db41
+  name: "nh_info"
+  type_id: 0x30924432
+}
+member {
+  id: 0x5e97aaa2
+  name: "nh_list"
+  type_id: 0xd3c80119
+  offset: 320
+}
+member {
+  id: 0x5e97ad65
+  name: "nh_list"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0x5e97adce
+  name: "nh_list"
+  type_id: 0xd3c80119
+  offset: 256
+}
+member {
+  id: 0x285fa55b
+  name: "nh_parent"
+  type_id: 0x127c410d
+  offset: 128
+}
+member {
+  id: 0x285fabee
+  name: "nh_parent"
+  type_id: 0x127c410d
+  offset: 448
+}
+member {
+  id: 0x287de10c
+  name: "nh_parent"
+  type_id: 0x3033e9c6
+  offset: 704
+}
+member {
+  id: 0xf80bdaeb
+  name: "nh_saddr"
+  type_id: 0xe276adef
+  offset: 768
+}
+member {
+  id: 0xf2a33515
+  name: "nh_saddr_genid"
+  type_id: 0x6720d32f
+  offset: 800
+}
+member {
+  id: 0xe8066849
+  name: "nh_updated"
+  type_id: 0x6d7f5ff6
+  offset: 808
+}
+member {
+  id: 0xe9c3a925
+  name: "nhc_dev"
+  type_id: 0x32a623d7
+}
+member {
+  id: 0xdd08bbb7
+  name: "nhc_dev_tracker"
+  type_id: 0xc76fa419
+  offset: 64
+}
+member {
+  id: 0x78667f8a
+  name: "nhc_exceptions"
+  type_id: 0x012b06a4
+  offset: 512
+}
+member {
+  id: 0x3b2fac83
+  name: "nhc_family"
+  type_id: 0x295c7202
+  offset: 104
+}
+member {
+  id: 0x78d3b949
+  name: "nhc_flags"
+  type_id: 0x5d8155a5
+  offset: 120
+}
+member {
+  id: 0x0c98a484
+  name: "nhc_gw"
+  type_id: 0x7991300b
+  offset: 192
+}
+member {
+  id: 0xe6275769
+  name: "nhc_gw_family"
+  type_id: 0x295c7202
+  offset: 112
+}
+member {
+  id: 0x2151bf96
+  name: "nhc_lwtstate"
+  type_id: 0x36f0205d
+  offset: 128
+}
+member {
+  id: 0xb24113ab
+  name: "nhc_oif"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x026cac42
+  name: "nhc_pcpu_rth_output"
+  type_id: 0x0edc9d68
+  offset: 384
+}
+member {
+  id: 0x2ad62bf7
+  name: "nhc_rth_input"
+  type_id: 0x1132933c
+  offset: 448
+}
+member {
+  id: 0x36e96645
+  name: "nhc_scope"
+  type_id: 0x5d8155a5
+  offset: 96
+}
+member {
+  id: 0xf3164740
+  name: "nhc_upper_bound"
+  type_id: 0x74d29cf1
+  offset: 352
+}
+member {
+  id: 0x1d087d71
+  name: "nhc_weight"
+  type_id: 0x6720d32f
+  offset: 320
+}
+member {
+  id: 0xf3cce6ca
+  name: "nhg_id"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0xd1269bee
+  name: "nht"
+  type_id: 0x3017223b
+  offset: 5632
+}
+member {
+  id: 0x2bb16e29
+  name: "nice"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x2be53ce9
+  name: "nice"
+  type_id: 0x33756485
+  offset: 448
+}
+member {
+  id: 0x45d78ab8
+  name: "nid"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x45d78e00
+  name: "nid"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0xe2ed26fb
+  name: "nikeys"
+  type_id: 0x74d29cf1
+  offset: 672
+}
+member {
+  id: 0x0c45c1fe
+  name: "nivcsw"
+  type_id: 0xedf277ba
+  offset: 2240
+}
+member {
+  id: 0x0c9b4335
+  name: "nivcsw"
+  type_id: 0x33756485
+  offset: 4096
+}
+member {
+  id: 0x0c9b4944
+  name: "nivcsw"
+  type_id: 0x33756485
+  offset: 15168
+}
+member {
+  id: 0x4d58065e
+  name: "nkeepout"
+  type_id: 0x4585663f
+  offset: 448
+}
+member {
+  id: 0x4d580816
+  name: "nkeepout"
+  type_id: 0x4585663f
+  offset: 8448
+}
+member {
+  id: 0x723c58fa
+  name: "nkeys"
+  type_id: 0x74d29cf1
+  offset: 640
+}
+member {
+  id: 0xc56a7e08
+  name: "nl_net"
+  type_id: 0x0ca27481
+  offset: 64
+}
+member {
+  id: 0xa221fb65
+  name: "nl_owner_dead"
+  type_id: 0x6d7f5ff6
+  offset: 1376
+}
+member {
+  id: 0xa221fcd9
+  name: "nl_owner_dead"
+  type_id: 0x6d7f5ff6
+  offset: 2016
+}
+member {
+  id: 0x97c34ed5
+  name: "nla_len"
+  type_id: 0xe8034002
+}
+member {
+  id: 0x49f93a92
+  name: "nla_type"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0x4cff4c27
+  name: "nlgroup"
+  type_id: 0x6720d32f
+  offset: 960
+}
+member {
+  id: 0xda5b39bc
+  name: "nlh"
+  type_id: 0x13a69eb7
+}
+member {
+  id: 0xda734228
+  name: "nlh"
+  type_id: 0x3bd9eb0b
+  offset: 64
+}
+member {
+  id: 0x069bedc0
+  name: "nlhdr"
+  type_id: 0x13a69eb7
+  offset: 64
+}
+member {
+  id: 0x2ab418ef
+  name: "nlink"
+  type_id: 0x05f9f5e9
+  offset: 768
+}
+member {
+  id: 0x2af46833
+  name: "nlink"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x20f0e7a9
+  name: "nlmsg_flags"
+  type_id: 0xe8034002
+  offset: 48
+}
+member {
+  id: 0xaf94917b
+  name: "nlmsg_len"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x611f64e6
+  name: "nlmsg_payload"
+  type_id: 0x2e6ffe1b
+  offset: 832
+}
+member {
+  id: 0x7bb01964
+  name: "nlmsg_pid"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x16c9fa36
+  name: "nlmsg_seq"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x9d3c4a93
+  name: "nlmsg_type"
+  type_id: 0xe8034002
+  offset: 32
+}
+member {
+  id: 0xc9b27f69
+  name: "nlsk"
+  type_id: 0x1d44326e
+  offset: 2880
+}
+member {
+  id: 0x6d93a20e
+  name: "nlsk_stash"
+  type_id: 0x1d44326e
+  offset: 2944
+}
+member {
+  id: 0x7dd43c05
+  name: "nluns"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x61e4525f
+  name: "nmaps"
+  type_id: 0x4585663f
+  offset: 288
+}
+member {
+  id: 0xbfbe12ff
+  name: "nmissed"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0xbfea45c8
+  name: "nmissed"
+  type_id: 0x6720d32f
+  offset: 1184
+}
+member {
+  id: 0x14eacebb
+  name: "nmrr"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0xb017a1d2
+  name: "no_64bit_msi"
+  type_id: 0x4585663f
+  offset: 22095
+  bitsize: 1
+}
+member {
+  id: 0xffd79d44
+  name: "no_autobind"
+  type_id: 0x6d7f5ff6
+  offset: 2592
+}
+member {
+  id: 0x4613c598
+  name: "no_callbacks"
+  type_id: 0x4585663f
+  offset: 1993
+  bitsize: 1
+}
+member {
+  id: 0xc31d4bc3
+  name: "no_capture_mute"
+  type_id: 0x4585663f
+  offset: 1440
+  bitsize: 1
+}
+member {
+  id: 0x333515a1
+  name: "no_cgroup_migration"
+  type_id: 0x4585663f
+  offset: 12101
+  bitsize: 1
+}
+member {
+  id: 0x583f1229
+  name: "no_cgroup_owner"
+  type_id: 0x4585663f
+  offset: 295
+  bitsize: 1
+}
+member {
+  id: 0xad244516
+  name: "no_command_memory"
+  type_id: 0x4585663f
+  offset: 22124
+  bitsize: 1
+}
+member {
+  id: 0x680115b2
+  name: "no_constraint_value"
+  type_id: 0xd41e888f
+  offset: 192
+}
+member {
+  id: 0x97183b87
+  name: "no_d1d2"
+  type_id: 0x4585663f
+  offset: 1336
+  bitsize: 1
+}
+member {
+  id: 0xbff8906c
+  name: "no_d3cold"
+  type_id: 0x4585663f
+  offset: 1337
+  bitsize: 1
+}
+member {
+  id: 0x752dbd68
+  name: "no_device_suspend"
+  type_id: 0x6d7f5ff6
+  offset: 17552
+}
+member {
+  id: 0xb76eb22e
+  name: "no_dif"
+  type_id: 0x4585663f
+  offset: 2826
+  bitsize: 1
+}
+member {
+  id: 0xd2f1955a
+  name: "no_dynamic_id"
+  type_id: 0x4585663f
+  offset: 2368
+  bitsize: 1
+}
+member {
+  id: 0xb9e403e1
+  name: "no_ext_tags"
+  type_id: 0x4585663f
+  offset: 8129
+  bitsize: 1
+}
+member {
+  id: 0x131ebeb8
+  name: "no_fcs"
+  type_id: 0xb3e7bac9
+  offset: 12
+  bitsize: 1
+}
+member {
+  id: 0x82f61967
+  name: "no_filter_buffering_ref"
+  type_id: 0x6720d32f
+  offset: 2240
+}
+member {
+  id: 0xbd1488ad
+  name: "no_hwmon"
+  type_id: 0x6d7f5ff6
+  offset: 160
+}
+member {
+  id: 0x30d5b78d
+  name: "no_inc_mrrs"
+  type_id: 0x4585663f
+  offset: 8130
+  bitsize: 1
+}
+member {
+  id: 0xf3a49bd3
+  name: "no_interrupt"
+  type_id: 0x4585663f
+  offset: 337
+  bitsize: 1
+}
+member {
+  id: 0x9f6bf998
+  name: "no_msi"
+  type_id: 0x4585663f
+  offset: 22094
+  bitsize: 1
+}
+member {
+  id: 0x2b67ec41
+  name: "no_numa"
+  type_id: 0x6d7f5ff6
+  offset: 128
+}
+member {
+  id: 0xbfd35620
+  name: "no_of_node"
+  type_id: 0x6d7f5ff6
+  offset: 640
+}
+member {
+  id: 0x019c11ca
+  name: "no_pcm"
+  type_id: 0x4585663f
+  offset: 1031
+  bitsize: 1
+}
+member {
+  id: 0x685ed9c1
+  name: "no_period_wakeup"
+  type_id: 0x4585663f
+  offset: 1440
+  bitsize: 1
+}
+member {
+  id: 0x7054d878
+  name: "no_pm"
+  type_id: 0x6d7f5ff6
+  offset: 39
+  bitsize: 1
+}
+member {
+  id: 0x5455780f
+  name: "no_pm_callbacks"
+  type_id: 0x6d7f5ff6
+  offset: 578
+  bitsize: 1
+}
+member {
+  id: 0x74bfe03b
+  name: "no_ranges"
+  type_id: 0x3a54c5e0
+  offset: 128
+}
+member {
+  id: 0xa3e97de0
+  name: "no_read_capacity_16"
+  type_id: 0x4585663f
+  offset: 2821
+  bitsize: 1
+}
+member {
+  id: 0xf0355af8
+  name: "no_read_disc_info"
+  type_id: 0x4585663f
+  offset: 2820
+  bitsize: 1
+}
+member {
+  id: 0xaa6a7d8e
+  name: "no_report_luns"
+  type_id: 0x4585663f
+  offset: 7715
+  bitsize: 1
+}
+member {
+  id: 0x7e425804
+  name: "no_report_opcodes"
+  type_id: 0x4585663f
+  offset: 2802
+  bitsize: 1
+}
+member {
+  id: 0xc0ea737e
+  name: "no_scsi2_lun_in_cdb"
+  type_id: 0x4585663f
+  offset: 4362
+  bitsize: 1
+}
+member {
+  id: 0x4a689c02
+  name: "no_selective_suspend"
+  type_id: 0x4585663f
+  offset: 5600
+  bitsize: 1
+}
+member {
+  id: 0xb5c67b8e
+  name: "no_set_skip_hint"
+  type_id: 0x6d7f5ff6
+  offset: 936
+}
+member {
+  id: 0xd55d762c
+  name: "no_sg_constraint"
+  type_id: 0x4585663f
+  offset: 275
+  bitsize: 1
+}
+member {
+  id: 0x1ccebffc
+  name: "no_start_on_add"
+  type_id: 0x4585663f
+  offset: 2810
+  bitsize: 1
+}
+member {
+  id: 0x15069ad5
+  name: "no_stop_on_short"
+  type_id: 0x4585663f
+  offset: 274
+  bitsize: 1
+}
+member {
+  id: 0x1a21ce51
+  name: "no_suspend_depth"
+  type_id: 0x4585663f
+  offset: 2016
+}
+member {
+  id: 0xd1bb1ce0
+  name: "no_sync_defaults"
+  type_id: 0x6d7f5ff6
+  offset: 4872
+}
+member {
+  id: 0x95bb8e3c
+  name: "no_thermal"
+  type_id: 0x6d7f5ff6
+  offset: 704
+}
+member {
+  id: 0x6350aef3
+  name: "no_uld_attach"
+  type_id: 0x4585663f
+  offset: 2814
+  bitsize: 1
+}
+member {
+  id: 0x33c34d4c
+  name: "no_vblank"
+  type_id: 0x6d7f5ff6
+  offset: 86
+  bitsize: 1
+}
+member {
+  id: 0xbd7e1b2f
+  name: "no_vf_scan"
+  type_id: 0x4585663f
+  offset: 22123
+  bitsize: 1
+}
+member {
+  id: 0xad3b1533
+  name: "no_vpd_size"
+  type_id: 0x4585663f
+  offset: 2833
+  bitsize: 1
+}
+member {
+  id: 0x6fb182f2
+  name: "no_wait_gpu"
+  type_id: 0x6d7f5ff6
+  offset: 8
+}
+member {
+  id: 0x3bf7d4c4
+  name: "no_wake_mode"
+  type_id: 0xb3e7bac9
+  offset: 1024
+}
+member {
+  id: 0x806a2296
+  name: "no_write_same"
+  type_id: 0x4585663f
+  offset: 2803
+  bitsize: 1
+}
+member {
+  id: 0x806a257b
+  name: "no_write_same"
+  type_id: 0x4585663f
+  offset: 4359
+  bitsize: 1
+}
+member {
+  id: 0x806a2c70
+  name: "no_write_same"
+  type_id: 0x4585663f
+  offset: 2629
+  bitsize: 1
+}
+member {
+  id: 0x603fc5a7
+  name: "nobjs"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x0934e011
+  name: "noboot"
+  type_id: 0x6d7f5ff6
+  offset: 1200
+}
+member {
+  id: 0xb9c6c9cf
+  name: "nocb_gp_wq"
+  type_id: 0x73be2bf1
+  offset: 2304
+}
+member {
+  id: 0x0f122346
+  name: "node"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x0f122a9c
+  name: "node"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x0f122bde
+  name: "node"
+  type_id: 0x6720d32f
+  offset: 4960
+}
+member {
+  id: 0x0f122dc7
+  name: "node"
+  type_id: 0x6720d32f
+  offset: 832
+}
+member {
+  id: 0x0f152680
+  name: "node"
+  type_id: 0x60282e68
+}
+member {
+  id: 0x0f193c4b
+  name: "node"
+  type_id: 0x6c32e522
+}
+member {
+  id: 0x0f3ca933
+  name: "node"
+  type_id: 0x49a73111
+  offset: 3712
+}
+member {
+  id: 0x0f3ca99f
+  name: "node"
+  type_id: 0x49a73111
+}
+member {
+  id: 0x0f3caa25
+  name: "node"
+  type_id: 0x49a73111
+  offset: 832
+}
+member {
+  id: 0x0f3caba2
+  name: "node"
+  type_id: 0x49a73111
+  offset: 704
+}
+member {
+  id: 0x0f417564
+  name: "node"
+  type_id: 0x347303b4
+  offset: 192
+}
+member {
+  id: 0x0f417ada
+  name: "node"
+  type_id: 0x347303b4
+  offset: 448
+}
+member {
+  id: 0x0f43c472
+  name: "node"
+  type_id: 0x36cadc18
+}
+member {
+  id: 0x0f47000c
+  name: "node"
+  type_id: 0x3205ba2f
+  offset: 512
+}
+member {
+  id: 0x0f470b14
+  name: "node"
+  type_id: 0x3205ba2f
+}
+member {
+  id: 0x0f475f5b
+  name: "node"
+  type_id: 0x32551440
+  offset: 64
+}
+member {
+  id: 0x0f48a631
+  name: "node"
+  type_id: 0x3da0560e
+  offset: 192
+}
+member {
+  id: 0x0f4eedc8
+  name: "node"
+  type_id: 0x3be3663e
+}
+member {
+  id: 0x0f544335
+  name: "node"
+  type_id: 0x214d9bc0
+}
+member {
+  id: 0x0f56d7ac
+  name: "node"
+  type_id: 0x23d902f6
+}
+member {
+  id: 0x0f5c4493
+  name: "node"
+  type_id: 0x2941252f
+  offset: 512
+}
+member {
+  id: 0x0f609c3b
+  name: "node"
+  type_id: 0x1592957f
+}
+member {
+  id: 0x0f6471e1
+  name: "node"
+  type_id: 0x117f4f93
+}
+member {
+  id: 0x0f71e4ec
+  name: "node"
+  type_id: 0x04ea42a7
+}
+member {
+  id: 0x0f7b51a1
+  name: "node"
+  type_id: 0x0e56cd62
+  offset: 128
+}
+member {
+  id: 0x0f7b5863
+  name: "node"
+  type_id: 0x0e56cd62
+}
+member {
+  id: 0x0f7b6685
+  name: "node"
+  type_id: 0x0e60e212
+  offset: 192
+}
+member {
+  id: 0x0f932d2a
+  name: "node"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x0fa6c014
+  name: "node"
+  type_id: 0xd3c80119
+  offset: 12032
+}
+member {
+  id: 0x0fa6c061
+  name: "node"
+  type_id: 0xd3c80119
+  offset: 3392
+}
+member {
+  id: 0x0fa6c0d6
+  name: "node"
+  type_id: 0xd3c80119
+  offset: 640
+}
+member {
+  id: 0x0fa6c117
+  name: "node"
+  type_id: 0xd3c80119
+  offset: 8320
+}
+member {
+  id: 0x0fa6c168
+  name: "node"
+  type_id: 0xd3c80119
+  offset: 320
+}
+member {
+  id: 0x0fa6c1b0
+  name: "node"
+  type_id: 0xd3c80119
+  offset: 1024
+}
+member {
+  id: 0x0fa6c3e5
+  name: "node"
+  type_id: 0xd3c80119
+  offset: 10176
+}
+member {
+  id: 0x0fa6c46b
+  name: "node"
+  type_id: 0xd3c80119
+  offset: 1216
+}
+member {
+  id: 0x0fa6c515
+  name: "node"
+  type_id: 0xd3c80119
+  offset: 832
+}
+member {
+  id: 0x0fa6c6af
+  name: "node"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0x0fa6ca31
+  name: "node"
+  type_id: 0xd3c80119
+  offset: 9600
+}
+member {
+  id: 0x0fa6ccc6
+  name: "node"
+  type_id: 0xd3c80119
+  offset: 8384
+}
+member {
+  id: 0x0fa6ce01
+  name: "node"
+  type_id: 0xd3c80119
+  offset: 768
+}
+member {
+  id: 0x0fa6cf6d
+  name: "node"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0x0fc7cdb4
+  name: "node"
+  type_id: 0xb2c19e78
+  offset: 1984
+}
+member {
+  id: 0x0ff5b15e
+  name: "node"
+  type_id: 0x80bff031
+}
+member {
+  id: 0x0ff5bdb1
+  name: "node"
+  type_id: 0x80bff031
+  offset: 8000
+}
+member {
+  id: 0x3599c2c8
+  name: "node6"
+  type_id: 0x1162939f
+}
+member {
+  id: 0x34366eb8
+  name: "node_count"
+  type_id: 0x5d8155a5
+  offset: 64
+}
+member {
+  id: 0xf67bc3a4
+  name: "node_id"
+  type_id: 0x6720d32f
+  offset: 4160
+}
+member {
+  id: 0xf67bcc6a
+  name: "node_id"
+  type_id: 0x6720d32f
+  offset: 52096
+}
+member {
+  id: 0xdeaef990
+  name: "node_idx"
+  type_id: 0x6720d32f
+  offset: 8512
+}
+member {
+  id: 0xd7b5832b
+  name: "node_list"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0xd7b58380
+  name: "node_list"
+  type_id: 0xd3c80119
+  offset: 256
+}
+member {
+  id: 0xd7b584ec
+  name: "node_list"
+  type_id: 0xd3c80119
+  offset: 320
+}
+member {
+  id: 0xd7b58be2
+  name: "node_list"
+  type_id: 0xd3c80119
+  offset: 192
+}
+member {
+  id: 0x0cee492b
+  name: "node_present_pages"
+  type_id: 0x33756485
+  offset: 51968
+}
+member {
+  id: 0x74f980f4
+  name: "node_size_lock"
+  type_id: 0xf313e71a
+  offset: 51872
+}
+member {
+  id: 0x7a54208c
+  name: "node_spanned_pages"
+  type_id: 0x33756485
+  offset: 52032
+}
+member {
+  id: 0x23216bf8
+  name: "node_start_pfn"
+  type_id: 0x33756485
+  offset: 51904
+}
+member {
+  id: 0xc08945c3
+  name: "node_zonelists"
+  type_id: 0xa1dc2b4a
+  offset: 51200
+}
+member {
+  id: 0x65adc63c
+  name: "node_zones"
+  type_id: 0x8cbe1332
+}
+member {
+  id: 0xd988ce91
+  name: "nodeinfo"
+  type_id: 0xc3f77699
+  offset: 18304
+}
+member {
+  id: 0x31d56dbc
+  name: "nodelay"
+  type_id: 0x6d7f5ff6
+  offset: 8696
+}
+member {
+  id: 0x8b5fc0c2
+  name: "nodename"
+  type_id: 0x3e10b518
+  offset: 512
+}
+member {
+  id: 0x8b9f6bc5
+  name: "nodename"
+  type_id: 0xfeb89bd6
+  offset: 520
+}
+member {
+  id: 0x62527a67
+  name: "nodes"
+  type_id: 0x23d957b7
+}
+member {
+  id: 0x627963b5
+  name: "nodes"
+  type_id: 0x08c085d5
+}
+member {
+  id: 0x629a39c3
+  name: "nodes"
+  type_id: 0xeb923a9b
+  offset: 192
+}
+member {
+  id: 0x62a262f3
+  name: "nodes"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0xb372aead
+  name: "nodirmap"
+  type_id: 0x4585663f
+  offset: 640
+}
+member {
+  id: 0xa8924c30
+  name: "nofault"
+  type_id: 0x6d7f5ff6
+  offset: 8
+}
+member {
+  id: 0xc006dbbf
+  name: "nofua"
+  type_id: 0x576c156c
+  offset: 1408
+}
+member {
+  id: 0xc069f5a2
+  name: "nofua"
+  type_id: 0x384f7d7c
+  offset: 88
+}
+member {
+  id: 0xc26eef8c
+  name: "nofua"
+  type_id: 0x4585663f
+  offset: 199
+  bitsize: 1
+}
+member {
+  id: 0x15b0697a
+  name: "nofua_count"
+  type_id: 0x4585663f
+  offset: 1664
+}
+member {
+  id: 0xcc86646d
+  name: "nohdr"
+  type_id: 0xb3e7bac9
+  offset: 1009
+  bitsize: 1
+}
+member {
+  id: 0x1f8a26fb
+  name: "nohdr_data"
+  type_id: 0x18bd6530
+  offset: 320
+}
+member {
+  id: 0x0078e4aa
+  name: "nohz_csd"
+  type_id: 0xec722edd
+  offset: 256
+}
+member {
+  id: 0xd6c83ff0
+  name: "nohz_flags"
+  type_id: 0x74d29cf1
+  offset: 544
+}
+member {
+  id: 0x2b7c7936
+  name: "nohz_idle"
+  type_id: 0x6720d32f
+  offset: 448
+}
+member {
+  id: 0x23a8176e
+  name: "nohz_idle_balance"
+  type_id: 0x5d8155a5
+  offset: 23488
+}
+member {
+  id: 0x88e11269
+  name: "nohz_tick_stopped"
+  type_id: 0x4585663f
+  offset: 512
+}
+member {
+  id: 0xe1d93893
+  name: "noinstr_text_size"
+  type_id: 0x4585663f
+  offset: 6336
+}
+member {
+  id: 0xe2c60df7
+  name: "noinstr_text_start"
+  type_id: 0x18bd6530
+  offset: 6272
+}
+member {
+  id: 0x5137e14b
+  name: "noise"
+  type_id: 0xb3e7bac9
+  offset: 16
+}
+member {
+  id: 0x5a141c54
+  name: "noise_filter_min_width"
+  type_id: 0xc9082b19
+  offset: 224
+}
+member {
+  id: 0x02509981
+  name: "non_asap"
+  type_id: 0x295c7202
+  offset: 82
+  bitsize: 1
+}
+member {
+  id: 0x45187c22
+  name: "non_coherent_mem"
+  type_id: 0x4585663f
+  offset: 202
+  bitsize: 1
+}
+member {
+  id: 0x8610592e
+  name: "non_compliant_bars"
+  type_id: 0x4585663f
+  offset: 22120
+  bitsize: 1
+}
+member {
+  id: 0x34626f36
+  name: "non_desktop"
+  type_id: 0x6d7f5ff6
+  offset: 1280
+}
+member {
+  id: 0x6a838faa
+  name: "non_desktop_property"
+  type_id: 0x2a670b41
+  offset: 8960
+}
+member {
+  id: 0x79b71421
+  name: "non_intra_quantiser_matrix"
+  type_id: 0x1f52e925
+  offset: 512
+}
+member {
+  id: 0x32301b30
+  name: "non_pd_role_swap"
+  type_id: 0x6d7f5ff6
+  offset: 7432
+}
+member {
+  id: 0x3cd401f2
+  name: "non_rcu"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x25a27fa0
+  name: "non_seq"
+  type_id: 0xb3e7bac9
+  offset: 208
+}
+member {
+  id: 0x52944bcc
+  name: "non_trigger_based"
+  type_id: 0x295c7202
+  offset: 86
+  bitsize: 1
+}
+member {
+  id: 0x5cf54d0d
+  name: "nonatomic"
+  type_id: 0x6d7f5ff6
+  offset: 17544
+}
+member {
+  id: 0x9d9055f7
+  name: "nonatomic"
+  type_id: 0x4585663f
+  offset: 1024
+  bitsize: 1
+}
+member {
+  id: 0x0bc105f2
+  name: "nonempty"
+  type_id: 0x6d7f5ff6
+  offset: 96
+}
+member {
+  id: 0xbd2c8ad6
+  name: "nonresident_age"
+  type_id: 0xb02b353a
+  offset: 832
+}
+member {
+  id: 0xea5def3c
+  name: "nonstd"
+  type_id: 0xe62ebf07
+  offset: 640
+}
+member {
+  id: 0xbf86ee90
+  name: "nooffloaddevcnt"
+  type_id: 0x4585663f
+  offset: 1600
+}
+member {
+  id: 0x10e36a3b
+  name: "nop_out_timeout"
+  type_id: 0x6720d32f
+  offset: 20544
+}
+member {
+  id: 0x8e9cf29a
+  name: "normal_prio"
+  type_id: 0x6720d32f
+  offset: 1120
+}
+member {
+  id: 0xf5b27476
+  name: "normalize_zpos"
+  type_id: 0x6d7f5ff6
+  offset: 9576
+}
+member {
+  id: 0x7e0b39d3
+  name: "normalized_zpos"
+  type_id: 0x4585663f
+  offset: 608
+}
+member {
+  id: 0x49138baa
+  name: "not"
+  type_id: 0x6720d32f
+  offset: 2464
+}
+member {
+  id: 0x1b0af2a3
+  name: "not_fixed_stride"
+  type_id: 0x4585663f
+  offset: 619
+  bitsize: 1
+}
+member {
+  id: 0xa6c4c003
+  name: "notes"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x6980b9f2
+  name: "notes_attrs"
+  type_id: 0x3feebefb
+  offset: 6016
+}
+member {
+  id: 0x9a5b9286
+  name: "notexceed"
+  type_id: 0x1a6854cd
+  offset: 480
+}
+member {
+  id: 0x39762e08
+  name: "notif"
+  type_id: 0x1cc2e30b
+  offset: 1280
+}
+member {
+  id: 0xa111810a
+  name: "notification_list"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0xfa699bb0
+  name: "notification_lock"
+  type_id: 0xf313e71a
+  offset: 96
+}
+member {
+  id: 0x1ee0c5c5
+  name: "notification_waitq"
+  type_id: 0x03913382
+  offset: 256
+}
+member {
+  id: 0x2749fa8e
+  name: "notifications"
+  type_id: 0xd3c80119
+  offset: 256
+}
+member {
+  id: 0xf41aac94
+  name: "notified_at"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x37039c6e
+  name: "notifier"
+  type_id: 0xf02f73da
+  offset: 8256
+}
+member {
+  id: 0x37039d26
+  name: "notifier"
+  type_id: 0xf02f73da
+  offset: 1920
+}
+member {
+  id: 0x3761f1d2
+  name: "notifier"
+  type_id: 0x9249a64d
+  offset: 9024
+}
+member {
+  id: 0x3761f810
+  name: "notifier"
+  type_id: 0x9249a64d
+  offset: 704
+}
+member {
+  id: 0x3761fc54
+  name: "notifier"
+  type_id: 0x9249a64d
+  offset: 640
+}
+member {
+  id: 0x37cf4af7
+  name: "notifier"
+  type_id: 0x3cfe7778
+  offset: 2304
+}
+member {
+  id: 0x37e4f5b8
+  name: "notifier"
+  type_id: 0x174acf71
+  offset: 13056
+}
+member {
+  id: 0x5e95afb2
+  name: "notifier_add"
+  type_id: 0x2e52d9da
+  offset: 192
+}
+member {
+  id: 0xba5da6b0
+  name: "notifier_call"
+  type_id: 0x0aeefe2d
+}
+member {
+  id: 0xdf770227
+  name: "notifier_chain"
+  type_id: 0x9249a64d
+  offset: 192
+}
+member {
+  id: 0xbbe14bb7
+  name: "notifier_count"
+  type_id: 0x4585663f
+  offset: 1664
+}
+member {
+  id: 0xdec375c9
+  name: "notifier_del"
+  type_id: 0x0d14f575
+  offset: 256
+}
+member {
+  id: 0xc8b8629b
+  name: "notifier_hangup"
+  type_id: 0x0d14f575
+  offset: 320
+}
+member {
+  id: 0xd6463ae4
+  name: "notifier_ops"
+  type_id: 0x0283e1e3
+  offset: 6528
+}
+member {
+  id: 0xd6463eb0
+  name: "notifier_ops"
+  type_id: 0x0283e1e3
+  offset: 5120
+}
+member {
+  id: 0x480a2925
+  name: "notifier_subscriptions"
+  type_id: 0x3eeac861
+  offset: 6784
+}
+member {
+  id: 0xe8601130
+  name: "notifiers"
+  type_id: 0x2e025034
+  offset: 256
+}
+member {
+  id: 0x568a338d
+  name: "notify"
+  type_id: 0x7c355df7
+  offset: 832
+}
+member {
+  id: 0x56d8a8a7
+  name: "notify"
+  type_id: 0x2ead6653
+  offset: 256
+}
+member {
+  id: 0x56e50a84
+  name: "notify"
+  type_id: 0x130fee63
+}
+member {
+  id: 0x56f8e261
+  name: "notify"
+  type_id: 0x0eee7907
+  offset: 576
+}
+member {
+  id: 0x56f92467
+  name: "notify"
+  type_id: 0x0f2f95e7
+  offset: 50816
+}
+member {
+  id: 0x56fba0e3
+  name: "notify"
+  type_id: 0x0da2fec2
+  offset: 448
+}
+member {
+  id: 0x7b726ba8
+  name: "notify_buffer_size"
+  type_id: 0x0fce912b
+  offset: 2048
+}
+member {
+  id: 0x56fe5fc2
+  name: "notify_connect"
+  type_id: 0x2dfe4ed2
+  offset: 2624
+}
+member {
+  id: 0xc13945f5
+  name: "notify_count"
+  type_id: 0x6720d32f
+  offset: 800
+}
+member {
+  id: 0x975fa344
+  name: "notify_disconnect"
+  type_id: 0x2dfe4ed2
+  offset: 2688
+}
+member {
+  id: 0x9b6d2dfa
+  name: "notify_event"
+  type_id: 0x60af483b
+  offset: 10816
+}
+member {
+  id: 0xddcb1098
+  name: "notify_failure"
+  type_id: 0x2e31daf3
+}
+member {
+  id: 0x5bdfa110
+  name: "notify_lock"
+  type_id: 0xa7c362b0
+  offset: 1344
+}
+member {
+  id: 0x34ab3ebb
+  name: "notify_method"
+  type_id: 0x636ed10d
+  offset: 224
+}
+member {
+  id: 0x5a4ea87b
+  name: "notify_next"
+  type_id: 0x3a534a58
+  offset: 192
+}
+member {
+  id: 0x3c7f33fc
+  name: "notify_on_block"
+  type_id: 0x6d7f5ff6
+  offset: 128
+}
+member {
+  id: 0xdd919e40
+  name: "notify_ops"
+  type_id: 0x306ea2b8
+  offset: 384
+}
+member {
+  id: 0x6bb79b75
+  name: "notify_poll_in"
+  type_id: 0x2c538ce7
+  offset: 1408
+}
+member {
+  id: 0xb08882f7
+  name: "notify_poll_out"
+  type_id: 0x2c538ce7
+  offset: 1472
+}
+member {
+  id: 0xe90f3a32
+  name: "notify_priv"
+  type_id: 0x18bd6530
+  offset: 896
+}
+member {
+  id: 0xf5ffd8d8
+  name: "notify_recv_init"
+  type_id: 0x2c53cae5
+  offset: 1536
+}
+member {
+  id: 0x7f89cf42
+  name: "notify_recv_post_dequeue"
+  type_id: 0x2c5fa0f5
+  offset: 1728
+}
+member {
+  id: 0x7f7304b0
+  name: "notify_recv_pre_block"
+  type_id: 0x2c53cae5
+  offset: 1600
+}
+member {
+  id: 0x5eab9f7f
+  name: "notify_recv_pre_dequeue"
+  type_id: 0x2c53cae5
+  offset: 1664
+}
+member {
+  id: 0x6631344c
+  name: "notify_send_init"
+  type_id: 0x2c85f481
+  offset: 1792
+}
+member {
+  id: 0x6e85404d
+  name: "notify_send_post_enqueue"
+  type_id: 0x2c715cf2
+  offset: 1984
+}
+member {
+  id: 0x1bde52a2
+  name: "notify_send_pre_block"
+  type_id: 0x2c85f481
+  offset: 1856
+}
+member {
+  id: 0x548787b3
+  name: "notify_send_pre_enqueue"
+  type_id: 0x2c85f481
+  offset: 1920
+}
+member {
+  id: 0x5c35590f
+  name: "notify_timer"
+  type_id: 0xd298e888
+  offset: 128
+}
+member {
+  id: 0x813be465
+  name: "notifyids"
+  type_id: 0x04b89667
+  offset: 9088
+}
+member {
+  id: 0xf8489542
+  name: "now_frame"
+  type_id: 0x4585663f
+  offset: 3200
+}
+member {
+  id: 0xa27f3770
+  name: "nowait"
+  type_id: 0x6d7f5ff6
+  offset: 176
+}
+member {
+  id: 0x5317f113
+  name: "np"
+  type_id: 0x347303b4
+  offset: 704
+}
+member {
+  id: 0x5317f32e
+  name: "np"
+  type_id: 0x347303b4
+}
+member {
+  id: 0x5317f738
+  name: "np"
+  type_id: 0x347303b4
+  offset: 7488
+}
+member {
+  id: 0x5317f7cf
+  name: "np"
+  type_id: 0x347303b4
+  offset: 64
+}
+member {
+  id: 0x5317f9c9
+  name: "np"
+  type_id: 0x347303b4
+  offset: 1536
+}
+member {
+  id: 0x5317fbe7
+  name: "np"
+  type_id: 0x347303b4
+  offset: 192
+}
+member {
+  id: 0x784e4061
+  name: "npages"
+  type_id: 0x33756485
+  offset: 1472
+}
+member {
+  id: 0x9b1fad55
+  name: "npgs"
+  type_id: 0xc9082b19
+  offset: 224
+}
+member {
+  id: 0xcac01672
+  name: "npins"
+  type_id: 0x4585663f
+  offset: 288
+}
+member {
+  id: 0xcac01b69
+  name: "npins"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0xb4f51360
+  name: "nprim"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0x1cabc60b
+  name: "npwm"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0xd14fc76e
+  name: "nr"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0xd16b3c82
+  name: "nr"
+  type_id: 0xc9082b19
+  offset: 480
+}
+member {
+  id: 0xd1c5155c
+  name: "nr"
+  type_id: 0x6720d32f
+  offset: 8256
+}
+member {
+  id: 0xd1c51561
+  name: "nr"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0xd1c515ca
+  name: "nr"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xd1c518f1
+  name: "nr"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0xd1c51f49
+  name: "nr"
+  type_id: 0x6720d32f
+  offset: 7296
+}
+member {
+  id: 0xd1e7b49e
+  name: "nr"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xd1e7b9bd
+  name: "nr"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0xd1e7bafc
+  name: "nr"
+  type_id: 0x4585663f
+  offset: 7296
+}
+member {
+  id: 0xd1ffb44c
+  name: "nr"
+  type_id: 0x5d8155a5
+}
+member {
+  id: 0xcf9ecc00
+  name: "nr_accounted"
+  type_id: 0x4585663f
+  offset: 896
+}
+member {
+  id: 0xa21e8135
+  name: "nr_actions"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0xa23c2b3f
+  name: "nr_actions"
+  type_id: 0x4585663f
+  offset: 1984
+}
+member {
+  id: 0x728eb117
+  name: "nr_active"
+  type_id: 0x74d29cf1
+  offset: 3264
+}
+member {
+  id: 0x729d40fc
+  name: "nr_active"
+  type_id: 0x6720d32f
+  offset: 1312
+}
+member {
+  id: 0x729d47f0
+  name: "nr_active"
+  type_id: 0x6720d32f
+  offset: 736
+}
+member {
+  id: 0x95ba9b60
+  name: "nr_active_requests_shared_tags"
+  type_id: 0x74d29cf1
+  offset: 3328
+}
+member {
+  id: 0xd5787a5d
+  name: "nr_addr_filters"
+  type_id: 0x4585663f
+  offset: 736
+}
+member {
+  id: 0x194f0494
+  name: "nr_allocated"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x1cc2c5a9
+  name: "nr_args"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0x5d7b57b7
+  name: "nr_attribs"
+  type_id: 0x6720d32f
+  offset: 384
+}
+member {
+  id: 0xbbabfea2
+  name: "nr_balance_failed"
+  type_id: 0x4585663f
+  offset: 672
+}
+member {
+  id: 0x061e4265
+  name: "nr_blocks"
+  type_id: 0xc9082b19
+  offset: 416
+}
+member {
+  id: 0x2ef857ba
+  name: "nr_busy_cpus"
+  type_id: 0x74d29cf1
+  offset: 32
+}
+member {
+  id: 0x3f72155d
+  name: "nr_bvecs"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x9851f2d5
+  name: "nr_cached"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x2ee53739
+  name: "nr_cached_objects"
+  type_id: 0x213211e8
+  offset: 1472
+}
+member {
+  id: 0x4bc9649f
+  name: "nr_cgrps"
+  type_id: 0x74d29cf1
+  offset: 13632
+}
+member {
+  id: 0x837d50f7
+  name: "nr_charged_bytes"
+  type_id: 0x74d29cf1
+  offset: 192
+}
+member {
+  id: 0xc2c8918f
+  name: "nr_cpus"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x98f55073
+  name: "nr_cpus_allowed"
+  type_id: 0x6720d32f
+  offset: 9312
+}
+member {
+  id: 0x7962f35a
+  name: "nr_ctx"
+  type_id: 0xc93e017b
+  offset: 2416
+}
+member {
+  id: 0xb9a58615
+  name: "nr_db_lpis"
+  type_id: 0x6720d32f
+  offset: 448
+}
+member {
+  id: 0x244cd0bd
+  name: "nr_deferred"
+  type_id: 0x269af4e9
+  offset: 128
+}
+member {
+  id: 0x244cde08
+  name: "nr_deferred"
+  type_id: 0x269af4e9
+  offset: 448
+}
+member {
+  id: 0xccaa0d48
+  name: "nr_descendants"
+  type_id: 0x6720d32f
+  offset: 1984
+}
+member {
+  id: 0x3c88906e
+  name: "nr_descs"
+  type_id: 0xc9082b19
+  offset: 49152
+}
+member {
+  id: 0x3c8897db
+  name: "nr_descs"
+  type_id: 0xc9082b19
+  offset: 81920
+}
+member {
+  id: 0x3c4c38d0
+  name: "nr_dirtied"
+  type_id: 0x6720d32f
+  offset: 22592
+}
+member {
+  id: 0x247eddeb
+  name: "nr_dirtied_pause"
+  type_id: 0x6720d32f
+  offset: 22624
+}
+member {
+  id: 0x1cde34cc
+  name: "nr_drainers"
+  type_id: 0x6720d32f
+  offset: 1280
+}
+member {
+  id: 0x4fae811e
+  name: "nr_dying_descendants"
+  type_id: 0x6720d32f
+  offset: 2016
+}
+member {
+  id: 0xeccf704c
+  name: "nr_entries"
+  type_id: 0xe8034002
+  offset: 160
+}
+member {
+  id: 0xecee4280
+  name: "nr_entries"
+  type_id: 0xc93e017b
+  offset: 144
+}
+member {
+  id: 0x3354e0c8
+  name: "nr_events"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0x3354e630
+  name: "nr_events"
+  type_id: 0x4585663f
+  offset: 512
+}
+member {
+  id: 0x33764cc4
+  name: "nr_events"
+  type_id: 0x6720d32f
+  offset: 352
+}
+member {
+  id: 0x33764ee0
+  name: "nr_events"
+  type_id: 0x6720d32f
+  offset: 1280
+}
+member {
+  id: 0x1f5b7385
+  name: "nr_extents"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x3d31bfe2
+  name: "nr_failed_migrations_affine"
+  type_id: 0x92233392
+  offset: 960
+}
+member {
+  id: 0x291d1c63
+  name: "nr_failed_migrations_hot"
+  type_id: 0x92233392
+  offset: 1088
+}
+member {
+  id: 0x92a2da7d
+  name: "nr_failed_migrations_running"
+  type_id: 0x92233392
+  offset: 1024
+}
+member {
+  id: 0xc661bf13
+  name: "nr_file_filters"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0xfe440a25
+  name: "nr_forced_migrations"
+  type_id: 0x92233392
+  offset: 1152
+}
+member {
+  id: 0x70b30ff0
+  name: "nr_frames"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xbfba5ff5
+  name: "nr_free"
+  type_id: 0x33756485
+  offset: 768
+}
+member {
+  id: 0x050371e4
+  name: "nr_freepages"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0xfee8f39f
+  name: "nr_freq"
+  type_id: 0x6720d32f
+  offset: 1440
+}
+member {
+  id: 0xb0af57e0
+  name: "nr_frozen_descendants"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0xea724160
+  name: "nr_frozen_tasks"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0x9ae7a902
+  name: "nr_goto_rules"
+  type_id: 0x6720d32f
+  offset: 288
+}
+member {
+  id: 0xc0b0a815
+  name: "nr_hangs"
+  type_id: 0xc93e017b
+  offset: 208
+}
+member {
+  id: 0x2980a303
+  name: "nr_hw_queues"
+  type_id: 0x4585663f
+  offset: 512
+}
+member {
+  id: 0x2980a8c5
+  name: "nr_hw_queues"
+  type_id: 0x4585663f
+  offset: 4288
+}
+member {
+  id: 0x2980aa26
+  name: "nr_hw_queues"
+  type_id: 0x4585663f
+  offset: 704
+}
+member {
+  id: 0x2980ac31
+  name: "nr_hw_queues"
+  type_id: 0x4585663f
+  offset: 40128
+}
+member {
+  id: 0x6b99a036
+  name: "nr_ia_ranges"
+  type_id: 0x4585663f
+  offset: 800
+}
+member {
+  id: 0xffa38ee3
+  name: "nr_idle"
+  type_id: 0x6720d32f
+  offset: 480
+}
+member {
+  id: 0xe990ee46
+  name: "nr_idle_scan"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0x5a12bce4
+  name: "nr_ids"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x26639b7e
+  name: "nr_in_flight"
+  type_id: 0x55fbf65a
+  offset: 224
+}
+member {
+  id: 0x2c28e7b5
+  name: "nr_instances"
+  type_id: 0xc9082b19
+  offset: 2688
+}
+member {
+  id: 0xba70b618
+  name: "nr_ios"
+  type_id: 0xc93e017b
+  offset: 128
+}
+member {
+  id: 0xbc5fbc6b
+  name: "nr_iowait"
+  type_id: 0x74d29cf1
+  offset: 22912
+}
+member {
+  id: 0xc63cf6c9
+  name: "nr_isolate_pageblock"
+  type_id: 0x33756485
+  offset: 1344
+}
+member {
+  id: 0x4812d2a9
+  name: "nr_items"
+  type_id: 0xfc0e1dbd
+  offset: 256
+}
+member {
+  id: 0x4812dbc0
+  name: "nr_items"
+  type_id: 0xfc0e1dbd
+  offset: 128
+}
+member {
+  id: 0x8026b4a9
+  name: "nr_leaves_on_tree"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xfcd02002
+  name: "nr_linfo"
+  type_id: 0xc9082b19
+  offset: 8160
+}
+member {
+  id: 0x2af96acc
+  name: "nr_lpis"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x183eb746
+  name: "nr_maps"
+  type_id: 0x4585663f
+  offset: 384
+}
+member {
+  id: 0x183ebad7
+  name: "nr_maps"
+  type_id: 0x4585663f
+  offset: 4320
+}
+member {
+  id: 0x33e05349
+  name: "nr_max"
+  type_id: 0xc9082b19
+  offset: 768
+}
+member {
+  id: 0x1a968f83
+  name: "nr_memcgs"
+  type_id: 0x607419c2
+  offset: 64
+}
+member {
+  id: 0x8a52dd6e
+  name: "nr_memslot_pages"
+  type_id: 0x33756485
+  offset: 896
+}
+member {
+  id: 0x02abbc80
+  name: "nr_migratepages"
+  type_id: 0x4585663f
+  offset: 288
+}
+member {
+  id: 0x0688be34
+  name: "nr_migrations"
+  type_id: 0x92233392
+  offset: 768
+}
+member {
+  id: 0x1155b128
+  name: "nr_migrations_cold"
+  type_id: 0x92233392
+  offset: 896
+}
+member {
+  id: 0x8232adc2
+  name: "nr_mmapped"
+  type_id: 0x4585663f
+  offset: 512
+}
+member {
+  id: 0xd2f30d9f
+  name: "nr_of_buckets"
+  type_id: 0x914dbfdc
+  offset: 960
+}
+member {
+  id: 0x828f709d
+  name: "nr_of_dims"
+  type_id: 0xc9082b19
+  offset: 1184
+}
+member {
+  id: 0x82a05363
+  name: "nr_of_dims"
+  type_id: 0xe62ebf07
+  offset: 672
+}
+member {
+  id: 0x9c6b34f7
+  name: "nr_off"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x6dc4334e
+  name: "nr_oos"
+  type_id: 0xc9082b19
+  offset: 832
+}
+member {
+  id: 0x0e44d10d
+  name: "nr_oos_count"
+  type_id: 0x6720d32f
+  offset: 864
+}
+member {
+  id: 0xcbb74623
+  name: "nr_oos_count_max"
+  type_id: 0x6720d32f
+  offset: 896
+}
+member {
+  id: 0x75f0a37b
+  name: "nr_page_events"
+  type_id: 0x33756485
+  offset: 8192
+}
+member {
+  id: 0xe31cf7c3
+  name: "nr_pages"
+  type_id: 0x9e3f115f
+  offset: 192
+}
+member {
+  id: 0xe31e99af
+  name: "nr_pages"
+  type_id: 0x9c53aa65
+  offset: 4544
+}
+member {
+  id: 0xe376f573
+  name: "nr_pages"
+  type_id: 0xf435685e
+}
+member {
+  id: 0xe37ec6a8
+  name: "nr_pages"
+  type_id: 0xfc0e1dbd
+  offset: 768
+}
+member {
+  id: 0xe3b1b19e
+  name: "nr_pages"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xe3b1b2b8
+  name: "nr_pages"
+  type_id: 0x33756485
+  offset: 320
+}
+member {
+  id: 0xe3c74124
+  name: "nr_pages"
+  type_id: 0x4585663f
+  offset: 352
+}
+member {
+  id: 0xe3e5e801
+  name: "nr_pages"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0x26b96116
+  name: "nr_pages_to_update"
+  type_id: 0xfc0e1dbd
+  offset: 2368
+}
+member {
+  id: 0xa3827374
+  name: "nr_partial"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x799f8652
+  name: "nr_parts"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x79bd2bfb
+  name: "nr_parts"
+  type_id: 0x4585663f
+  offset: 14848
+}
+member {
+  id: 0x7a21743a
+  name: "nr_pending"
+  type_id: 0x299c4193
+  offset: 2304
+}
+member {
+  id: 0x7a4d610e
+  name: "nr_pending"
+  type_id: 0x4585663f
+  offset: 512
+}
+member {
+  id: 0xd560a7f7
+  name: "nr_perf_states"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x4eae9fa1
+  name: "nr_phys_segments"
+  type_id: 0xc93e017b
+  offset: 976
+}
+member {
+  id: 0xcf992773
+  name: "nr_pinned"
+  type_id: 0x4585663f
+  offset: 28864
+}
+member {
+  id: 0xbd02ecd8
+  name: "nr_populated_csets"
+  type_id: 0x6720d32f
+  offset: 2080
+}
+member {
+  id: 0x28329994
+  name: "nr_populated_domain_children"
+  type_id: 0x6720d32f
+  offset: 2112
+}
+member {
+  id: 0xc0c2a3ce
+  name: "nr_populated_threaded_children"
+  type_id: 0x6720d32f
+  offset: 2144
+}
+member {
+  id: 0x83736a55
+  name: "nr_pwqs_to_flush"
+  type_id: 0x74d29cf1
+  offset: 704
+}
+member {
+  id: 0x9607d33f
+  name: "nr_queued"
+  type_id: 0x7dc8196c
+  offset: 320
+}
+member {
+  id: 0x9607da24
+  name: "nr_queued"
+  type_id: 0x7dc8196c
+  offset: 1152
+}
+member {
+  id: 0x9624f411
+  name: "nr_queued"
+  type_id: 0x5eeb4a25
+  offset: 832
+}
+member {
+  id: 0x54054154
+  name: "nr_queues"
+  type_id: 0x03a4acbb
+  offset: 40160
+}
+member {
+  id: 0x54436541
+  name: "nr_queues"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xeb3f103c
+  name: "nr_range"
+  type_id: 0x6720d32f
+  offset: 1024
+}
+member {
+  id: 0x6cadac11
+  name: "nr_rates"
+  type_id: 0x4585663f
+  offset: 576
+}
+member {
+  id: 0x14baa8ed
+  name: "nr_reclaim_start"
+  type_id: 0x33756485
+  offset: 53376
+}
+member {
+  id: 0xda39f59e
+  name: "nr_redist_regions"
+  type_id: 0xc9082b19
+  offset: 704
+}
+member {
+  id: 0xddd1c1b9
+  name: "nr_regions"
+  type_id: 0x6720d32f
+  offset: 224
+}
+member {
+  id: 0x5a432fb1
+  name: "nr_relocs"
+  type_id: 0x4585663f
+  offset: 576
+}
+member {
+  id: 0xb0173df2
+  name: "nr_req"
+  type_id: 0x607419c2
+  offset: 320
+}
+member {
+  id: 0x9e262dce
+  name: "nr_requests"
+  type_id: 0x33756485
+  offset: 2048
+}
+member {
+  id: 0x0a3ca227
+  name: "nr_reserved_highatomic"
+  type_id: 0x33756485
+  offset: 320
+}
+member {
+  id: 0x4d570578
+  name: "nr_reserved_tags"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x4ab59ebd
+  name: "nr_resets"
+  type_id: 0x4585663f
+  offset: 640
+}
+member {
+  id: 0x3d7c5cec
+  name: "nr_retries"
+  type_id: 0xc93e017b
+  offset: 192
+}
+member {
+  id: 0xf6e30a95
+  name: "nr_rt_entries"
+  type_id: 0xc9082b19
+  offset: 31616
+}
+member {
+  id: 0xd6072070
+  name: "nr_running"
+  type_id: 0x74d29cf1
+  offset: 96
+}
+member {
+  id: 0xd614db17
+  name: "nr_running"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0xd6367332
+  name: "nr_running"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xd63677cb
+  name: "nr_running"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0xaa6ace79
+  name: "nr_samples"
+  type_id: 0xc9082b19
+  offset: 192
+}
+member {
+  id: 0x1d5baf9e
+  name: "nr_scanned"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x41b0c604
+  name: "nr_sec_rw"
+  type_id: 0x607419c2
+  offset: 64
+}
+member {
+  id: 0x684459f8
+  name: "nr_sectors"
+  type_id: 0xd0b3a203
+  offset: 832
+}
+member {
+  id: 0x90e3c9d4
+  name: "nr_segs"
+  type_id: 0x33756485
+}
+member {
+  id: 0x980ca3e6
+  name: "nr_sets"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xb826ad15
+  name: "nr_siblings"
+  type_id: 0x6720d32f
+  offset: 1024
+}
+member {
+  id: 0x033a9549
+  name: "nr_sink_caps"
+  type_id: 0x4585663f
+  offset: 8896
+}
+member {
+  id: 0x004eca1b
+  name: "nr_slabs"
+  type_id: 0xb02b353a
+  offset: 256
+}
+member {
+  id: 0xb41e9884
+  name: "nr_snk_pdo"
+  type_id: 0x4585663f
+  offset: 9408
+}
+member {
+  id: 0xc545eb16
+  name: "nr_snk_vdo"
+  type_id: 0x4585663f
+  offset: 9856
+}
+member {
+  id: 0x00b04f21
+  name: "nr_snk_vdo_v1"
+  type_id: 0x4585663f
+  offset: 9632
+}
+member {
+  id: 0xb0b60c88
+  name: "nr_source_caps"
+  type_id: 0x4585663f
+  offset: 8640
+}
+member {
+  id: 0x5eb23b58
+  name: "nr_spis"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x5eb23fa1
+  name: "nr_spis"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x47396359
+  name: "nr_spread_over"
+  type_id: 0x4585663f
+  offset: 768
+}
+member {
+  id: 0x639c131a
+  name: "nr_src_pdo"
+  type_id: 0x4585663f
+  offset: 9152
+}
+member {
+  id: 0xd297eba7
+  name: "nr_stat"
+  type_id: 0x6720d32f
+  offset: 1408
+}
+member {
+  id: 0x74a3a51a
+  name: "nr_switches"
+  type_id: 0x92233392
+  offset: 640
+}
+member {
+  id: 0x23cae15c
+  name: "nr_tags"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0x23cae995
+  name: "nr_tags"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xe321d910
+  name: "nr_tasks"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0xe321dfc2
+  name: "nr_tasks"
+  type_id: 0x6720d32f
+  offset: 640
+}
+member {
+  id: 0x2bf6b9ba
+  name: "nr_threaded_children"
+  type_id: 0x6720d32f
+  offset: 2176
+}
+member {
+  id: 0xffcc6dd6
+  name: "nr_threads"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0xffdf9b78
+  name: "nr_threads"
+  type_id: 0x74d29cf1
+}
+member {
+  id: 0xb9801a85
+  name: "nr_to_release"
+  type_id: 0x4585663f
+  offset: 544
+}
+member {
+  id: 0xe951aec2
+  name: "nr_to_scan"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x7a09cb07
+  name: "nr_to_write"
+  type_id: 0xfc0e1dbd
+}
+member {
+  id: 0x6ba4178e
+  name: "nr_todo"
+  type_id: 0x74d29cf1
+}
+member {
+  id: 0x9ecdc7e4
+  name: "nr_topts"
+  type_id: 0x6720d32f
+  offset: 768
+}
+member {
+  id: 0x70f4d1fd
+  name: "nr_triggers"
+  type_id: 0x5a8c92f7
+  offset: 5760
+}
+member {
+  id: 0x0ce99fa0
+  name: "nr_types"
+  type_id: 0xc9082b19
+  offset: 576
+}
+member {
+  id: 0x1e8862bc
+  name: "nr_uninterruptible"
+  type_id: 0x4585663f
+  offset: 21696
+}
+member {
+  id: 0xfb6f30c8
+  name: "nr_user"
+  type_id: 0x6720d32f
+  offset: 1344
+}
+member {
+  id: 0x3cb708d0
+  name: "nr_user_bufs"
+  type_id: 0x4585663f
+  offset: 928
+}
+member {
+  id: 0x5a61ba6f
+  name: "nr_user_files"
+  type_id: 0x4585663f
+  offset: 896
+}
+member {
+  id: 0x04cae934
+  name: "nr_user_xattrs"
+  type_id: 0x74d29cf1
+  offset: 640
+}
+member {
+  id: 0xb372cc1f
+  name: "nr_values"
+  type_id: 0x5d8155a5
+  offset: 24
+}
+member {
+  id: 0x51ca938c
+  name: "nr_vids"
+  type_id: 0x4585663f
+  offset: 1408
+}
+member {
+  id: 0x7d2aa81e
+  name: "nr_vlan_devs"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x6ba53b1d
+  name: "nr_vpes"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0xd52b9423
+  name: "nr_wakeups"
+  type_id: 0x92233392
+  offset: 1216
+}
+member {
+  id: 0x2187018a
+  name: "nr_wakeups_affine"
+  type_id: 0x92233392
+  offset: 1536
+}
+member {
+  id: 0xd49caff3
+  name: "nr_wakeups_affine_attempts"
+  type_id: 0x92233392
+  offset: 1600
+}
+member {
+  id: 0x176e9ff8
+  name: "nr_wakeups_idle"
+  type_id: 0x92233392
+  offset: 1728
+}
+member {
+  id: 0xc763bb70
+  name: "nr_wakeups_local"
+  type_id: 0x92233392
+  offset: 1408
+}
+member {
+  id: 0x3025ddaa
+  name: "nr_wakeups_migrate"
+  type_id: 0x92233392
+  offset: 1344
+}
+member {
+  id: 0x7d617a35
+  name: "nr_wakeups_passive"
+  type_id: 0x92233392
+  offset: 1664
+}
+member {
+  id: 0x5bbea6f5
+  name: "nr_wakeups_remote"
+  type_id: 0x92233392
+  offset: 1472
+}
+member {
+  id: 0xef19c431
+  name: "nr_wakeups_sync"
+  type_id: 0x92233392
+  offset: 1280
+}
+member {
+  id: 0xf5e6d5da
+  name: "nr_window_size"
+  type_id: 0xc9082b19
+  offset: 800
+}
+member {
+  id: 0xa99fff7a
+  name: "nr_workers"
+  type_id: 0x6720d32f
+  offset: 448
+}
+member {
+  id: 0xa9bd5db8
+  name: "nr_workers"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x916f6aa9
+  name: "nr_writeback_throttled"
+  type_id: 0x74d29cf1
+  offset: 53312
+}
+member {
+  id: 0x429467d6
+  name: "nr_zones"
+  type_id: 0x6720d32f
+  offset: 51840
+}
+member {
+  id: 0x42b6ca98
+  name: "nr_zones"
+  type_id: 0x4585663f
+  offset: 3904
+}
+member {
+  id: 0xc487c4c7
+  name: "nrats"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xc83d7e44
+  name: "nreg"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x9c39535d
+  name: "nregs"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0xd1fbad24
+  name: "nres"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x93466310
+  name: "nrpages"
+  type_id: 0x33756485
+  offset: 1408
+}
+member {
+  id: 0x91129161
+  name: "ns"
+  type_id: 0xf052f867
+  offset: 9984
+}
+member {
+  id: 0x911294e7
+  name: "ns"
+  type_id: 0xf052f867
+  offset: 128
+}
+member {
+  id: 0x911295d6
+  name: "ns"
+  type_id: 0xf052f867
+  offset: 960
+}
+member {
+  id: 0x9112974a
+  name: "ns"
+  type_id: 0xf052f867
+  offset: 3264
+}
+member {
+  id: 0x91129cfb
+  name: "ns"
+  type_id: 0xf052f867
+  offset: 1920
+}
+member {
+  id: 0x91129d25
+  name: "ns"
+  type_id: 0xf052f867
+}
+member {
+  id: 0x91129e9f
+  name: "ns"
+  type_id: 0xf052f867
+  offset: 832
+}
+member {
+  id: 0x912bccee
+  name: "ns"
+  type_id: 0xc9082b19
+  offset: 512
+}
+member {
+  id: 0x91dbd15a
+  name: "ns"
+  type_id: 0x391f15ea
+  offset: 384
+}
+member {
+  id: 0x91e8d207
+  name: "ns"
+  type_id: 0x0a193bb7
+  offset: 64
+}
+member {
+  id: 0x91e8d8e3
+  name: "ns"
+  type_id: 0x0a193bb7
+  offset: 7680
+}
+member {
+  id: 0x91ed6db0
+  name: "ns"
+  type_id: 0x0fabaf3b
+  offset: 128
+}
+member {
+  id: 0xaa9f6a1a
+  name: "ns_current"
+  type_id: 0x6720d32f
+  offset: 288
+}
+member {
+  id: 0x181e6600
+  name: "ns_ida"
+  type_id: 0xe1a31370
+  offset: 7296
+}
+member {
+  id: 0x3f2735e9
+  name: "ns_lock"
+  type_id: 0xf313e71a
+  offset: 384
+}
+member {
+  id: 0xacf5c92a
+  name: "ns_next"
+  type_id: 0x6720d32f
+  offset: 320
+}
+member {
+  id: 0x278111a2
+  name: "ns_seed"
+  type_id: 0x0258f96e
+  offset: 7872
+}
+member {
+  id: 0xdcf9b4df
+  name: "ns_tracker"
+  type_id: 0xf5c6a82e
+  offset: 192
+}
+member {
+  id: 0xdcf9b6f4
+  name: "ns_tracker"
+  type_id: 0xf5c6a82e
+  offset: 6144
+}
+member {
+  id: 0x9bd48cb1
+  name: "ns_type"
+  type_id: 0x303f8188
+  offset: 640
+}
+member {
+  id: 0xd90bc7bf
+  name: "nsarea"
+  type_id: 0x946da50f
+  offset: 96
+}
+member {
+  id: 0x4e261d46
+  name: "nsec"
+  type_id: 0x92233392
+  offset: 128
+}
+member {
+  id: 0x4e521de9
+  name: "nsec"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x4ebb99b3
+  name: "nsec"
+  type_id: 0x0faae5b1
+  offset: 64
+}
+member {
+  id: 0x1858a7c1
+  name: "nsecs"
+  type_id: 0xa8c5dffe
+}
+member {
+  id: 0x18ca584d
+  name: "nsecs"
+  type_id: 0x3a3eb2f9
+  offset: 64
+}
+member {
+  id: 0xcc723c40
+  name: "nsections"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0x4fc24ab6
+  name: "nsid_lock"
+  type_id: 0xf313e71a
+  offset: 160
+}
+member {
+  id: 0x7f48ad1a
+  name: "nsl_bpg_offset"
+  type_id: 0x914dbfdc
+  offset: 1056
+}
+member {
+  id: 0x7fac6631
+  name: "nsl_bpg_offset"
+  type_id: 0x7584e7da
+  offset: 720
+}
+member {
+  id: 0x731737b1
+  name: "nslabel_size"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0xd9600ae9
+  name: "nslabs"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0x51460e20
+  name: "nslot"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0xac738cad
+  name: "nsproxy"
+  type_id: 0x178226b2
+  offset: 64
+}
+member {
+  id: 0xac738d2d
+  name: "nsproxy"
+  type_id: 0x178226b2
+  offset: 17472
+}
+member {
+  id: 0xc54f0f52
+  name: "nss_mcs"
+  type_id: 0xe3ab3231
+  offset: 88
+}
+member {
+  id: 0x8341f080
+  name: "nsvids"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x736322a3
+  name: "ntab"
+  type_id: 0x635d6d00
+  offset: 64
+}
+member {
+  id: 0xaead052b
+  name: "ntfy"
+  type_id: 0x92233392
+  offset: 2368
+}
+member {
+  id: 0x233de962
+  name: "ntp_data"
+  type_id: 0x0decc7d7
+}
+member {
+  id: 0x77ba38b0
+  name: "nud_state"
+  type_id: 0x295c7202
+  offset: 1184
+}
+member {
+  id: 0x2766192d
+  name: "nuh_temporal_id_plus1"
+  type_id: 0xb3e7bac9
+  offset: 104
+}
+member {
+  id: 0x37b05525
+  name: "null_edid_counter"
+  type_id: 0x6720d32f
+  offset: 14656
+}
+member {
+  id: 0xbf71c2fe
+  name: "null_mapped"
+  type_id: 0x6d7f5ff6
+  offset: 160
+}
+member {
+  id: 0x5106ba16
+  name: "nulls_head"
+  type_id: 0xdf9f948b
+  offset: 64
+}
+member {
+  id: 0x1c2dba34
+  name: "num"
+  type_id: 0x1bf16028
+  offset: 64
+}
+member {
+  id: 0x1c516b87
+  name: "num"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x1c516f66
+  name: "num"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x1c516fcd
+  name: "num"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0x1c73c3c9
+  name: "num"
+  type_id: 0x4585663f
+  offset: 13824
+}
+member {
+  id: 0x1c73c6c1
+  name: "num"
+  type_id: 0x4585663f
+  offset: 7424
+}
+member {
+  id: 0x1c73c8b3
+  name: "num"
+  type_id: 0x4585663f
+  offset: 416
+}
+member {
+  id: 0x1c73cad3
+  name: "num"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x1c73cda4
+  name: "num"
+  type_id: 0x4585663f
+  offset: 448
+}
+member {
+  id: 0x1ca706c6
+  name: "num"
+  type_id: 0x914dbfdc
+  offset: 9504
+}
+member {
+  id: 0x1cc27e3c
+  name: "num"
+  type_id: 0xf435685e
+  offset: 64
+}
+member {
+  id: 0x1cd0610a
+  name: "num"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x1cff4aa5
+  name: "num"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x5085d9db
+  name: "num_VFs"
+  type_id: 0x914dbfdc
+  offset: 144
+}
+member {
+  id: 0x287999e2
+  name: "num_active_dpb_entries"
+  type_id: 0xb3e7bac9
+  offset: 64
+}
+member {
+  id: 0xa7a6cca7
+  name: "num_active_eps"
+  type_id: 0x4585663f
+  offset: 20992
+}
+member {
+  id: 0x35be4e1b
+  name: "num_active_tts"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0xf6ea3955
+  name: "num_active_vmas"
+  type_id: 0x33756485
+  offset: 704
+}
+member {
+  id: 0x4b1eeeac
+  name: "num_agents"
+  type_id: 0x295c7202
+  offset: 40
+}
+member {
+  id: 0xf074f928
+  name: "num_alt_modes"
+  type_id: 0x295c7202
+  offset: 64
+}
+member {
+  id: 0xf2fde14c
+  name: "num_altmodes"
+  type_id: 0x6720d32f
+  offset: 7616
+}
+member {
+  id: 0x90d990b0
+  name: "num_altsetting"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x90d99972
+  name: "num_altsetting"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x519de530
+  name: "num_args"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0x4a3e96b6
+  name: "num_auto_selectable_formats"
+  type_id: 0x6720d32f
+  offset: 1408
+}
+member {
+  id: 0xa846e1ec
+  name: "num_aux_devs"
+  type_id: 0x6720d32f
+  offset: 3264
+}
+member {
+  id: 0x373ff332
+  name: "num_backlinks"
+  type_id: 0x914dbfdc
+  offset: 480
+}
+member {
+  id: 0xd057c3f3
+  name: "num_bitrates"
+  type_id: 0xe62ebf07
+  offset: 2112
+}
+member {
+  id: 0x94ccc01c
+  name: "num_blocks"
+  type_id: 0xe8034002
+  offset: 13440
+}
+member {
+  id: 0x308c6acc
+  name: "num_bpf_raw_events"
+  type_id: 0x4585663f
+  offset: 6592
+}
+member {
+  id: 0x5e8c6d34
+  name: "num_buckets"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xdc40d5b4
+  name: "num_buffers"
+  type_id: 0x4585663f
+  offset: 5888
+}
+member {
+  id: 0x0bae61d1
+  name: "num_bugs"
+  type_id: 0x4585663f
+  offset: 5376
+}
+member {
+  id: 0x4cfd40f2
+  name: "num_bulk_in"
+  type_id: 0x5d8155a5
+  offset: 1928
+}
+member {
+  id: 0x4cfd4941
+  name: "num_bulk_in"
+  type_id: 0x5d8155a5
+  offset: 328
+}
+member {
+  id: 0x4cfd4a18
+  name: "num_bulk_in"
+  type_id: 0x5d8155a5
+}
+member {
+  id: 0xd78f59f9
+  name: "num_bulk_out"
+  type_id: 0x5d8155a5
+  offset: 1936
+}
+member {
+  id: 0xd78f5a1c
+  name: "num_bulk_out"
+  type_id: 0x5d8155a5
+  offset: 336
+}
+member {
+  id: 0xd78f5f05
+  name: "num_bulk_out"
+  type_id: 0x5d8155a5
+  offset: 8
+}
+member {
+  id: 0x32b760e4
+  name: "num_bus_formats"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0xbd0cc112
+  name: "num_busy_placement"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0xc8ce4c5f
+  name: "num_caps"
+  type_id: 0xb3e7bac9
+  offset: 48
+}
+member {
+  id: 0x5facbc84
+  name: "num_channels"
+  type_id: 0x6720d32f
+  offset: 8384
+}
+member {
+  id: 0xc21eb7ca
+  name: "num_chans"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0xe42bc64c
+  name: "num_children"
+  type_id: 0x33756485
+  offset: 640
+}
+member {
+  id: 0x2c04206f
+  name: "num_chips"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xab6f5061
+  name: "num_chipselect"
+  type_id: 0x914dbfdc
+  offset: 7440
+}
+member {
+  id: 0x1c9b1176
+  name: "num_clips"
+  type_id: 0x1c3dbe5a
+  offset: 192
+}
+member {
+  id: 0x77637193
+  name: "num_clk_levels"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0xdd3030e0
+  name: "num_closed_socks"
+  type_id: 0x914dbfdc
+  offset: 160
+}
+member {
+  id: 0x3566dfff
+  name: "num_codecs"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x35c573e1
+  name: "num_codecs"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0xbff9f20f
+  name: "num_colors"
+  type_id: 0x4585663f
+  offset: 3392
+}
+member {
+  id: 0x9236753b
+  name: "num_completed"
+  type_id: 0x4585663f
+  offset: 544
+}
+member {
+  id: 0x543c9979
+  name: "num_components"
+  type_id: 0x6720d32f
+  offset: 14304
+}
+member {
+  id: 0xb2909919
+  name: "num_conf_req"
+  type_id: 0xb3e7bac9
+  offset: 1056
+}
+member {
+  id: 0xd81d7262
+  name: "num_conf_rsp"
+  type_id: 0xb3e7bac9
+  offset: 1064
+}
+member {
+  id: 0x0a9e514d
+  name: "num_config_bases"
+  type_id: 0x6720d32f
+  offset: 864
+}
+member {
+  id: 0xc6455afe
+  name: "num_config_regs"
+  type_id: 0x6720d32f
+  offset: 896
+}
+member {
+  id: 0x8416511d
+  name: "num_configs"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x8434f459
+  name: "num_configs"
+  type_id: 0x6720d32f
+  offset: 3136
+}
+member {
+  id: 0x18974d62
+  name: "num_connector"
+  type_id: 0x6720d32f
+  offset: 320
+}
+member {
+  id: 0x18974f8f
+  name: "num_connector"
+  type_id: 0x6720d32f
+  offset: 2400
+}
+member {
+  id: 0x7738a9ab
+  name: "num_connectors"
+  type_id: 0x295c7202
+  offset: 32
+}
+member {
+  id: 0x77e5ca4d
+  name: "num_connectors"
+  type_id: 0xf435685e
+  offset: 320
+}
+member {
+  id: 0xf77fa843
+  name: "num_consumer_supplies"
+  type_id: 0x6720d32f
+  offset: 1856
+}
+member {
+  id: 0xc3579000
+  name: "num_controls"
+  type_id: 0x6720d32f
+  offset: 3520
+}
+member {
+  id: 0xc375357f
+  name: "num_controls"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0xe2bd9b59
+  name: "num_cpus"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0x941c1a06
+  name: "num_crtc"
+  type_id: 0x6720d32f
+  offset: 3520
+}
+member {
+  id: 0x71b1d2c4
+  name: "num_crtcs"
+  type_id: 0x4585663f
+  offset: 3360
+}
+member {
+  id: 0xe2c089df
+  name: "num_crypto_cap"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x4226aa25
+  name: "num_ct"
+  type_id: 0x4585663f
+  offset: 608
+}
+member {
+  id: 0xad2f5ed4
+  name: "num_custom_params"
+  type_id: 0x4585663f
+  offset: 448
+}
+member {
+  id: 0xc26728ff
+  name: "num_dai"
+  type_id: 0x6720d32f
+  offset: 960
+}
+member {
+  id: 0xfa5da80f
+  name: "num_dapm_routes"
+  type_id: 0x4585663f
+  offset: 384
+}
+member {
+  id: 0xfa7f01f9
+  name: "num_dapm_routes"
+  type_id: 0x6720d32f
+  offset: 3776
+}
+member {
+  id: 0x1d8ba340
+  name: "num_dapm_widgets"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0x1da90ec6
+  name: "num_dapm_widgets"
+  type_id: 0x6720d32f
+  offset: 3648
+}
+member {
+  id: 0x55ff1bee
+  name: "num_data_lanes"
+  type_id: 0x5d8155a5
+  offset: 104
+}
+member {
+  id: 0xadf00f99
+  name: "num_dct_parts"
+  type_id: 0xb3e7bac9
+  offset: 9272
+}
+member {
+  id: 0x41ad9b12
+  name: "num_descriptors"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x8833a085
+  name: "num_different_channels"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x9494166e
+  name: "num_domains"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xe0dce54c
+  name: "num_dsps"
+  type_id: 0x4585663f
+  offset: 288
+}
+member {
+  id: 0x20cdc315
+  name: "num_elems"
+  type_id: 0x0baa70a7
+  offset: 64
+}
+member {
+  id: 0x4a422b42
+  name: "num_encoder"
+  type_id: 0x6720d32f
+  offset: 3136
+}
+member {
+  id: 0x4e4798fd
+  name: "num_entries"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x4e479c1c
+  name: "num_entries"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x4ecb11fa
+  name: "num_entries"
+  type_id: 0xc9082b19
+  offset: 256
+}
+member {
+  id: 0x4ecb2e5a
+  name: "num_entries"
+  type_id: 0xc93e017b
+  offset: 1056
+}
+member {
+  id: 0x1b22c44e
+  name: "num_entry_point_offsets"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xcc85e7c7
+  name: "num_event_specs"
+  type_id: 0x4585663f
+  offset: 896
+}
+member {
+  id: 0xaecf4dbd
+  name: "num_events"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0xaeede60f
+  name: "num_events"
+  type_id: 0x6720d32f
+  offset: 3392
+}
+member {
+  id: 0x7f574879
+  name: "num_exentries"
+  type_id: 0xc9082b19
+  offset: 8224
+}
+member {
+  id: 0x7fdbce61
+  name: "num_exentries"
+  type_id: 0x4585663f
+  offset: 2848
+}
+member {
+  id: 0xf7b4b551
+  name: "num_ext_caps"
+  type_id: 0x4585663f
+  offset: 58240
+}
+member {
+  id: 0x5896be81
+  name: "num_extra_slice_header_bits"
+  type_id: 0xb3e7bac9
+  offset: 8
+}
+member {
+  id: 0x48031c52
+  name: "num_fb"
+  type_id: 0x6720d32f
+  offset: 2176
+}
+member {
+  id: 0x3438f5a3
+  name: "num_fences"
+  type_id: 0x4585663f
+  offset: 544
+}
+member {
+  id: 0x3438fcbb
+  name: "num_fences"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0x34b47ff3
+  name: "num_fences"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0xcd689a7d
+  name: "num_flush"
+  type_id: 0x6720d32f
+  offset: 7552
+}
+member {
+  id: 0x7bcccefc
+  name: "num_formats"
+  type_id: 0x4585663f
+  offset: 1152
+}
+member {
+  id: 0xee7562a7
+  name: "num_free"
+  type_id: 0x4585663f
+  offset: 352
+}
+member {
+  id: 0xcd8ae48b
+  name: "num_freq_ranges"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x5a168f19
+  name: "num_functions"
+  type_id: 0x4585663f
+  offset: 640
+}
+member {
+  id: 0x4a37f6b8
+  name: "num_gpl_syms"
+  type_id: 0x4585663f
+  offset: 2656
+}
+member {
+  id: 0x2df1d39a
+  name: "num_group_names"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x1eceb53f
+  name: "num_groups"
+  type_id: 0x4585663f
+  offset: 448
+}
+member {
+  id: 0x0a575aaf
+  name: "num_h_tile"
+  type_id: 0x43e910ce
+  offset: 15112
+}
+member {
+  id: 0x32f14c09
+  name: "num_hook_entries"
+  type_id: 0x914dbfdc
+}
+member {
+  id: 0xacb8d376
+  name: "num_hw_configs"
+  type_id: 0x0baa70a7
+  offset: 13088
+}
+member {
+  id: 0x0c47d533
+  name: "num_iac"
+  type_id: 0xb3e7bac9
+  offset: 6064
+}
+member {
+  id: 0x58ef5f22
+  name: "num_ib_windows"
+  type_id: 0xc9082b19
+  offset: 320
+}
+member {
+  id: 0xf95b9cd7
+  name: "num_id_bits"
+  type_id: 0xc9082b19
+  offset: 31936
+}
+member {
+  id: 0x3e07f1e9
+  name: "num_ids"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0xab25d6fc
+  name: "num_iftype_akm_suites"
+  type_id: 0x4585663f
+  offset: 1536
+}
+member {
+  id: 0xa0a6633e
+  name: "num_iftype_ext_capab"
+  type_id: 0x4585663f
+  offset: 2496
+}
+member {
+  id: 0xe858894f
+  name: "num_incomplete_objects"
+  type_id: 0x4585663f
+  offset: 576
+}
+member {
+  id: 0x2da84642
+  name: "num_info"
+  type_id: 0x4585663f
+  offset: 7776
+}
+member {
+  id: 0x2da84bc5
+  name: "num_info"
+  type_id: 0x4585663f
+  offset: 11808
+}
+member {
+  id: 0xd0fbf13d
+  name: "num_instances"
+  type_id: 0x6720d32f
+  offset: 3616
+}
+member {
+  id: 0x4c24ed2f
+  name: "num_interfaces"
+  type_id: 0x6720d32f
+  offset: 2048
+}
+member {
+  id: 0x1968f7ca
+  name: "num_interrupt_in"
+  type_id: 0x5d8155a5
+  offset: 312
+}
+member {
+  id: 0x1968f921
+  name: "num_interrupt_in"
+  type_id: 0x5d8155a5
+  offset: 16
+}
+member {
+  id: 0x1968fceb
+  name: "num_interrupt_in"
+  type_id: 0x5d8155a5
+  offset: 1944
+}
+member {
+  id: 0xc578d426
+  name: "num_interrupt_out"
+  type_id: 0x5d8155a5
+  offset: 24
+}
+member {
+  id: 0xc578d580
+  name: "num_interrupt_out"
+  type_id: 0x5d8155a5
+  offset: 320
+}
+member {
+  id: 0xc578dab3
+  name: "num_interrupt_out"
+  type_id: 0x5d8155a5
+  offset: 1952
+}
+member {
+  id: 0xdf32959c
+  name: "num_ioctls"
+  type_id: 0x6720d32f
+  offset: 1600
+}
+member {
+  id: 0xb86d05c6
+  name: "num_irqs"
+  type_id: 0x6720d32f
+  offset: 768
+}
+member {
+  id: 0x7eeefc20
+  name: "num_jump_entries"
+  type_id: 0x4585663f
+  offset: 6912
+}
+member {
+  id: 0xd01ebee8
+  name: "num_kcontrols"
+  type_id: 0x6720d32f
+  offset: 1024
+}
+member {
+  id: 0xd0723386
+  name: "num_kcontrols"
+  type_id: 0x0baa70a7
+  offset: 992
+}
+member {
+  id: 0xa836b26e
+  name: "num_kp"
+  type_id: 0x4585663f
+  offset: 2624
+}
+member {
+  id: 0x69a5f68d
+  name: "num_kprobe_blacklist"
+  type_id: 0x4585663f
+  offset: 7488
+}
+member {
+  id: 0xbee16527
+  name: "num_kunit_suites"
+  type_id: 0x6720d32f
+  offset: 7520
+}
+member {
+  id: 0x8f706a63
+  name: "num_lanes"
+  type_id: 0x6720d32f
+  offset: 384
+}
+member {
+  id: 0x8f706add
+  name: "num_lanes"
+  type_id: 0x6720d32f
+  offset: 8416
+}
+member {
+  id: 0x8f706d98
+  name: "num_lanes"
+  type_id: 0x6720d32f
+  offset: 3584
+}
+member {
+  id: 0xe792adb8
+  name: "num_levels"
+  type_id: 0x4585663f
+  offset: 288
+}
+member {
+  id: 0x6119a4ee
+  name: "num_links"
+  type_id: 0x914dbfdc
+  offset: 464
+}
+member {
+  id: 0x617cd7a5
+  name: "num_links"
+  type_id: 0xf435685e
+  offset: 192
+}
+member {
+  id: 0x61efc5bd
+  name: "num_links"
+  type_id: 0x6720d32f
+  offset: 2816
+}
+member {
+  id: 0x392a7dd4
+  name: "num_locks"
+  type_id: 0x6720d32f
+  offset: 160
+}
+member {
+  id: 0x939808f7
+  name: "num_log_addrs"
+  type_id: 0xb3e7bac9
+  offset: 56
+}
+member {
+  id: 0x7d420eb7
+  name: "num_long_term_ref_pics_sps"
+  type_id: 0xb3e7bac9
+  offset: 184
+}
+member {
+  id: 0x46fa4e4f
+  name: "num_main_regs"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0x5881665b
+  name: "num_main_status_bits"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x600b2c88
+  name: "num_mapped_sgs"
+  type_id: 0x4585663f
+  offset: 288
+}
+member {
+  id: 0x60298517
+  name: "num_mapped_sgs"
+  type_id: 0x6720d32f
+  offset: 960
+}
+member {
+  id: 0xae245efc
+  name: "num_mappings"
+  type_id: 0x914dbfdc
+  offset: 128
+}
+member {
+  id: 0x918dc52a
+  name: "num_max"
+  type_id: 0x4585663f
+  offset: 384
+}
+member {
+  id: 0xf832711c
+  name: "num_mux_devs"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0x2528d76c
+  name: "num_nh"
+  type_id: 0x914dbfdc
+  offset: 64
+}
+member {
+  id: 0x92b2288d
+  name: "num_nh_buckets"
+  type_id: 0x914dbfdc
+  offset: 1472
+}
+member {
+  id: 0x4f24dfe4
+  name: "num_nodes"
+  type_id: 0xf435685e
+  offset: 64
+}
+member {
+  id: 0x4fb7ccde
+  name: "num_nodes"
+  type_id: 0x6720d32f
+  offset: 416
+}
+member {
+  id: 0x9cff579c
+  name: "num_ob_windows"
+  type_id: 0xc9082b19
+  offset: 352
+}
+member {
+  id: 0x9f316ffe
+  name: "num_objs"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xb56af488
+  name: "num_of_dapm_routes"
+  type_id: 0x6720d32f
+  offset: 4032
+}
+member {
+  id: 0x3265cef6
+  name: "num_of_dapm_widgets"
+  type_id: 0x6720d32f
+  offset: 3904
+}
+member {
+  id: 0x984cfbc5
+  name: "num_packets"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x984cff24
+  name: "num_packets"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xcdf1987b
+  name: "num_pads"
+  type_id: 0x914dbfdc
+  offset: 448
+}
+member {
+  id: 0x9697faa5
+  name: "num_pages"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x96b8bf1d
+  name: "num_pages"
+  type_id: 0x1c3dbe5a
+  offset: 96
+}
+member {
+  id: 0x43707b0e
+  name: "num_params"
+  type_id: 0x4585663f
+  offset: 576
+}
+member {
+  id: 0xed43063f
+  name: "num_parent_supplies"
+  type_id: 0x6720d32f
+  offset: 1088
+}
+member {
+  id: 0x5f13c103
+  name: "num_parents"
+  type_id: 0x295c7202
+  offset: 320
+}
+member {
+  id: 0x5f13cddc
+  name: "num_parents"
+  type_id: 0x295c7202
+  offset: 512
+}
+member {
+  id: 0x5f7f1537
+  name: "num_parents"
+  type_id: 0x4585663f
+  offset: 1536
+}
+member {
+  id: 0xa85e79f2
+  name: "num_pdos"
+  type_id: 0x6720d32f
+  offset: 7296
+}
+member {
+  id: 0x03585a0a
+  name: "num_pending"
+  type_id: 0x74d29cf1
+  offset: 576
+}
+member {
+  id: 0xbe3e9d70
+  name: "num_perms"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xbbc6f920
+  name: "num_pins"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x957ec1d7
+  name: "num_placement"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x20040d9e
+  name: "num_planes"
+  type_id: 0xb3e7bac9
+  offset: 1440
+}
+member {
+  id: 0x209eb698
+  name: "num_planes"
+  type_id: 0x295c7202
+  offset: 40
+}
+member {
+  id: 0x20f2603e
+  name: "num_planes"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0xadcde01f
+  name: "num_platforms"
+  type_id: 0x4585663f
+  offset: 448
+}
+member {
+  id: 0xd21921dc
+  name: "num_poc_lt_curr"
+  type_id: 0xb3e7bac9
+  offset: 88
+}
+member {
+  id: 0x31586767
+  name: "num_poc_st_curr_after"
+  type_id: 0xb3e7bac9
+  offset: 80
+}
+member {
+  id: 0xc096237f
+  name: "num_poc_st_curr_before"
+  type_id: 0xb3e7bac9
+  offset: 72
+}
+member {
+  id: 0x7051faaa
+  name: "num_port_caps"
+  type_id: 0x4585663f
+  offset: 58368
+}
+member {
+  id: 0x176ff071
+  name: "num_port_pointers"
+  type_id: 0x5d8155a5
+  offset: 304
+}
+member {
+  id: 0x0f014be3
+  name: "num_ports"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x0f194513
+  name: "num_ports"
+  type_id: 0x5d8155a5
+  offset: 296
+}
+member {
+  id: 0x0f194aef
+  name: "num_ports"
+  type_id: 0x5d8155a5
+  offset: 1920
+}
+member {
+  id: 0xbf52270e
+  name: "num_pri_bits"
+  type_id: 0xc9082b19
+  offset: 31904
+}
+member {
+  id: 0x4c06bbb4
+  name: "num_private"
+  type_id: 0xe8034002
+  offset: 80
+}
+member {
+  id: 0x1b4d9841
+  name: "num_private_args"
+  type_id: 0xe8034002
+  offset: 96
+}
+member {
+  id: 0xd9ae2f36
+  name: "num_private_objs"
+  type_id: 0x6720d32f
+  offset: 448
+}
+member {
+  id: 0x67695a0a
+  name: "num_properties"
+  type_id: 0xf435685e
+  offset: 320
+}
+member {
+  id: 0x1c1fbbc8
+  name: "num_protocols"
+  type_id: 0x295c7202
+  offset: 32
+}
+member {
+  id: 0xc7386454
+  name: "num_queued"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x1f2f13a4
+  name: "num_ranges"
+  type_id: 0x4585663f
+  offset: 2368
+}
+member {
+  id: 0x409f1b2e
+  name: "num_rdy"
+  type_id: 0x295c7202
+  offset: 7136
+}
+member {
+  id: 0x86b682e1
+  name: "num_ref_frames_in_pic_order_cnt_cycle"
+  type_id: 0xb3e7bac9
+  offset: 88
+}
+member {
+  id: 0x571d0af3
+  name: "num_ref_idx_l0_active_minus1"
+  type_id: 0xb3e7bac9
+  offset: 136
+}
+member {
+  id: 0x571d0f1c
+  name: "num_ref_idx_l0_active_minus1"
+  type_id: 0xb3e7bac9
+  offset: 160
+}
+member {
+  id: 0x9abcb01a
+  name: "num_ref_idx_l0_default_active_minus1"
+  type_id: 0xb3e7bac9
+  offset: 24
+}
+member {
+  id: 0x9abcb8c5
+  name: "num_ref_idx_l0_default_active_minus1"
+  type_id: 0xb3e7bac9
+  offset: 16
+}
+member {
+  id: 0x3ab734c7
+  name: "num_ref_idx_l1_active_minus1"
+  type_id: 0xb3e7bac9
+  offset: 144
+}
+member {
+  id: 0x3ab73736
+  name: "num_ref_idx_l1_active_minus1"
+  type_id: 0xb3e7bac9
+  offset: 168
+}
+member {
+  id: 0x3d0e445a
+  name: "num_ref_idx_l1_default_active_minus1"
+  type_id: 0xb3e7bac9
+  offset: 24
+}
+member {
+  id: 0x3d0e4f00
+  name: "num_ref_idx_l1_default_active_minus1"
+  type_id: 0xb3e7bac9
+  offset: 32
+}
+member {
+  id: 0x742441cb
+  name: "num_reg_defaults"
+  type_id: 0x4585663f
+  offset: 4576
+}
+member {
+  id: 0x74244625
+  name: "num_reg_defaults"
+  type_id: 0x4585663f
+  offset: 1856
+}
+member {
+  id: 0xd8021562
+  name: "num_reg_defaults_raw"
+  type_id: 0x4585663f
+  offset: 4608
+}
+member {
+  id: 0xd8021deb
+  name: "num_reg_defaults_raw"
+  type_id: 0x4585663f
+  offset: 1984
+}
+member {
+  id: 0xad41df35
+  name: "num_regions"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xe75e1576
+  name: "num_regs"
+  type_id: 0x6720d32f
+  offset: 640
+}
+member {
+  id: 0xe77cb6ba
+  name: "num_regs"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x6dc81d0c
+  name: "num_regulators"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0xa51d67e6
+  name: "num_remaining"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xcf1a3e5e
+  name: "num_res"
+  type_id: 0x4585663f
+  offset: 384
+}
+member {
+  id: 0xdc465f86
+  name: "num_resources"
+  type_id: 0x6720d32f
+  offset: 832
+}
+member {
+  id: 0xdc64f0fb
+  name: "num_resources"
+  type_id: 0x4585663f
+  offset: 576
+}
+member {
+  id: 0xdce8726e
+  name: "num_resources"
+  type_id: 0xc9082b19
+  offset: 7616
+}
+member {
+  id: 0x8286d165
+  name: "num_retrans"
+  type_id: 0x295c7202
+  offset: 1168
+}
+member {
+  id: 0xa119e0a2
+  name: "num_returned"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xcf06c1e5
+  name: "num_rtd"
+  type_id: 0x6720d32f
+  offset: 3008
+}
+member {
+  id: 0x38cbfd24
+  name: "num_rx_queues"
+  type_id: 0x4585663f
+  offset: 6272
+}
+member {
+  id: 0xbcb6b731
+  name: "num_sample_rates"
+  type_id: 0xe62ebf07
+  offset: 1056
+}
+member {
+  id: 0x144eddb6
+  name: "num_sectors"
+  type_id: 0x27a7c613
+  offset: 128
+}
+member {
+  id: 0xab5509da
+  name: "num_segs"
+  type_id: 0x4585663f
+  offset: 576
+}
+member {
+  id: 0x7a1f642d
+  name: "num_sgs"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0x7a3dc1e1
+  name: "num_sgs"
+  type_id: 0x6720d32f
+  offset: 992
+}
+member {
+  id: 0xea992807
+  name: "num_short_term_ref_pic_sets"
+  type_id: 0xb3e7bac9
+  offset: 176
+}
+member {
+  id: 0x0fa9d5ad
+  name: "num_slabs"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0x24403104
+  name: "num_slice_groups_minus1"
+  type_id: 0xb3e7bac9
+  offset: 16
+}
+member {
+  id: 0x1c13a2df
+  name: "num_slots"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x1c310149
+  name: "num_slots"
+  type_id: 0x4585663f
+  offset: 512
+}
+member {
+  id: 0x1c31076a
+  name: "num_slots"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x1c310d96
+  name: "num_slots"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0xa373c7a6
+  name: "num_socks"
+  type_id: 0x914dbfdc
+  offset: 144
+}
+member {
+  id: 0xd6c0c4b3
+  name: "num_sources"
+  type_id: 0x4585663f
+  offset: 224
+}
+member {
+  id: 0x884a3c8a
+  name: "num_spliced"
+  type_id: 0xf435685e
+  offset: 320
+}
+member {
+  id: 0x59b6393d
+  name: "num_srcu_structs"
+  type_id: 0x4585663f
+  offset: 6464
+}
+member {
+  id: 0xff533794
+  name: "num_standard"
+  type_id: 0xe8034002
+  offset: 64
+}
+member {
+  id: 0x43bbd7be
+  name: "num_stream_ctxs"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0x971c11e5
+  name: "num_streams"
+  type_id: 0x0baa70a7
+  offset: 5504
+}
+member {
+  id: 0x971c1d61
+  name: "num_streams"
+  type_id: 0x0baa70a7
+  offset: 5376
+}
+member {
+  id: 0x975230ad
+  name: "num_streams"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x68744792
+  name: "num_supplicants"
+  type_id: 0xf435685e
+  offset: 128
+}
+member {
+  id: 0x68744997
+  name: "num_supplicants"
+  type_id: 0xf435685e
+  offset: 320
+}
+member {
+  id: 0xd38eba23
+  name: "num_supplies"
+  type_id: 0xf435685e
+  offset: 256
+}
+member {
+  id: 0xc97080ef
+  name: "num_suspended_intf"
+  type_id: 0x6720d32f
+  offset: 2112
+}
+member {
+  id: 0x4efba86c
+  name: "num_sw_devs"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0x313aeebb
+  name: "num_syms"
+  type_id: 0x4585663f
+  offset: 2112
+}
+member {
+  id: 0xba394221
+  name: "num_symtab"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x72a5b6f7
+  name: "num_tbps"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0x04a161a0
+  name: "num_tc"
+  type_id: 0x29bf06ba
+  offset: 18272
+}
+member {
+  id: 0x04a16aa3
+  name: "num_tc"
+  type_id: 0x29bf06ba
+  offset: 160
+}
+member {
+  id: 0x16aa27a8
+  name: "num_tile_columns_minus1"
+  type_id: 0xb3e7bac9
+  offset: 64
+}
+member {
+  id: 0x626a468d
+  name: "num_tile_rows_minus1"
+  type_id: 0xb3e7bac9
+  offset: 72
+}
+member {
+  id: 0x86248cac
+  name: "num_timeout"
+  type_id: 0x295c7202
+  offset: 1177
+  bitsize: 7
+}
+member {
+  id: 0x8026d50a
+  name: "num_total_plane"
+  type_id: 0x6720d32f
+  offset: 3328
+}
+member {
+  id: 0x77c230b5
+  name: "num_trace_bprintk_fmt"
+  type_id: 0x4585663f
+  offset: 6944
+}
+member {
+  id: 0x2eb74fd1
+  name: "num_trace_evals"
+  type_id: 0x4585663f
+  offset: 7232
+}
+member {
+  id: 0x75e96b8c
+  name: "num_trace_events"
+  type_id: 0x4585663f
+  offset: 7104
+}
+member {
+  id: 0xa9cfd438
+  name: "num_tracepoints"
+  type_id: 0x4585663f
+  offset: 6368
+}
+member {
+  id: 0xea8868ea
+  name: "num_traces"
+  type_id: 0x6720d32f
+  offset: 8448
+}
+member {
+  id: 0x9b52a700
+  name: "num_trbs_free"
+  type_id: 0x4585663f
+  offset: 608
+}
+member {
+  id: 0x730a3758
+  name: "num_trbs_free_temp"
+  type_id: 0x4585663f
+  offset: 640
+}
+member {
+  id: 0xc0e3d664
+  name: "num_trips"
+  type_id: 0x6720d32f
+  offset: 8192
+}
+member {
+  id: 0x7c8ca69e
+  name: "num_tx_queues"
+  type_id: 0x4585663f
+  offset: 7744
+}
+member {
+  id: 0xd48e12cb
+  name: "num_type_reg"
+  type_id: 0x6720d32f
+  offset: 800
+}
+member {
+  id: 0xdbcfb298
+  name: "num_usb_types"
+  type_id: 0xf435685e
+  offset: 192
+}
+member {
+  id: 0x86f33b48
+  name: "num_users"
+  type_id: 0x38ad304a
+  offset: 832
+}
+member {
+  id: 0x15769aef
+  name: "num_v_tile"
+  type_id: 0x43e910ce
+  offset: 15120
+}
+member {
+  id: 0xc3b33daa
+  name: "num_vals"
+  type_id: 0x4585663f
+  offset: 12160
+}
+member {
+  id: 0xb8d78273
+  name: "num_values"
+  type_id: 0x1c3dbe5a
+  offset: 672
+}
+member {
+  id: 0x1820fff1
+  name: "num_vectors"
+  type_id: 0xc9082b19
+  offset: 1024
+}
+member {
+  id: 0x494d7324
+  name: "num_vf"
+  type_id: 0x2dd58efa
+  offset: 1024
+}
+member {
+  id: 0xad9b7a4b
+  name: "num_virt_regs"
+  type_id: 0x6720d32f
+  offset: 832
+}
+member {
+  id: 0xcb4eaa9e
+  name: "num_vlans"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x745815f4
+  name: "num_widgets"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x908e02e3
+  name: "num_windows"
+  type_id: 0x4585663f
+  offset: 7616
+}
+member {
+  id: 0xd474418d
+  name: "numa_node"
+  type_id: 0xe62ebf07
+  offset: 192
+}
+member {
+  id: 0xd4d7edad
+  name: "numa_node"
+  type_id: 0x4585663f
+  offset: 3200
+}
+member {
+  id: 0xd4f54151
+  name: "numa_node"
+  type_id: 0x6720d32f
+  offset: 640
+}
+member {
+  id: 0xd4f54548
+  name: "numa_node"
+  type_id: 0x6720d32f
+  offset: 416
+}
+member {
+  id: 0xd4f54e5a
+  name: "numa_node"
+  type_id: 0x6720d32f
+  offset: 576
+}
+member {
+  id: 0xd4f54e9b
+  name: "numa_node"
+  type_id: 0x6720d32f
+  offset: 8480
+}
+member {
+  id: 0x35834d78
+  name: "numa_pwq_tbl"
+  type_id: 0xcc357790
+  offset: 2176
+}
+member {
+  id: 0xd94e985f
+  name: "number"
+  type_id: 0x5d8155a5
+  offset: 256
+}
+member {
+  id: 0xd94e9a70
+  name: "number"
+  type_id: 0x5d8155a5
+  offset: 1984
+}
+member {
+  id: 0xd9569cc7
+  name: "number"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xd97431bb
+  name: "number"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0xd9743972
+  name: "number"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xd6b6c530
+  name: "number_of_packets"
+  type_id: 0x6720d32f
+  offset: 1248
+}
+member {
+  id: 0xbe7c87cd
+  name: "numbered"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x15c49b03
+  name: "numbers"
+  type_id: 0xbaadb024
+  offset: 768
+}
+member {
+  id: 0x9654671b
+  name: "numerator"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xa531119d
+  name: "numf"
+  type_id: 0xf435685e
+  offset: 192
+}
+member {
+  id: 0x0c3d5ffd
+  name: "numid"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xdb8e60db
+  name: "nups"
+  type_id: 0x3e579862
+  offset: 320
+}
+member {
+  id: 0x54a4d18c
+  name: "nurbs"
+  type_id: 0x4585663f
+  offset: 44288
+}
+member {
+  id: 0x47678426
+  name: "nutmrs"
+  type_id: 0x6720d32f
+  offset: 1184
+}
+member {
+  id: 0x470a3aa7
+  name: "nutrs"
+  type_id: 0x6720d32f
+  offset: 1120
+}
+member {
+  id: 0x2e2987ee
+  name: "nvcsw"
+  type_id: 0xedf277ba
+  offset: 2176
+}
+member {
+  id: 0x2ef70390
+  name: "nvcsw"
+  type_id: 0x33756485
+  offset: 4032
+}
+member {
+  id: 0x2ef70aa4
+  name: "nvcsw"
+  type_id: 0x33756485
+  offset: 15104
+}
+member {
+  id: 0xafebceb1
+  name: "nvdimm"
+  type_id: 0x24d65b62
+}
+member {
+  id: 0xc07f8888
+  name: "nvec_used"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x445c5fab
+  name: "nvmem"
+  type_id: 0x145f7b00
+  offset: 256
+}
+member {
+  id: 0xa8e39171
+  name: "nvqs"
+  type_id: 0x6720d32f
+  offset: 512
+}
+member {
+  id: 0xcf5bd856
+  name: "nway_reset"
+  type_id: 0x2eda6351
+  offset: 576
+}
+member {
+  id: 0xa7954e57
+  name: "nwid"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xa79bb1a3
+  name: "nwid"
+  type_id: 0xe8d14bc6
+}
+member {
+  id: 0xbc851a74
+  name: "o_flags"
+  type_id: 0x7584e7da
+  offset: 176
+}
+member {
+  id: 0xaac04d6d
+  name: "o_key"
+  type_id: 0xe276adef
+  offset: 224
+}
+member {
+  id: 0xbfc310ee
+  name: "oas"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0xe12b2a85
+  name: "ob_window_map"
+  type_id: 0x064d6086
+  offset: 640
+}
+member {
+  id: 0x7559cfd9
+  name: "obj"
+  type_id: 0x0cbf60eb
+  offset: 64
+}
+member {
+  id: 0x755d43db
+  name: "obj"
+  type_id: 0x08378349
+}
+member {
+  id: 0x757231c3
+  name: "obj"
+  type_id: 0x27459bea
+}
+member {
+  id: 0x757423b5
+  name: "obj"
+  type_id: 0x21530c77
+  offset: 64
+}
+member {
+  id: 0x75d72bf4
+  name: "obj"
+  type_id: 0x82552fea
+  offset: 1344
+}
+member {
+  id: 0x5747216b
+  name: "obj_cmpfn"
+  type_id: 0x7bf65b97
+  offset: 256
+}
+member {
+  id: 0xf6b9778a
+  name: "obj_created"
+  type_id: 0x75fa3f0d
+  offset: 1248
+}
+member {
+  id: 0x5854fa50
+  name: "obj_deleted"
+  type_id: 0x75fa3f0d
+  offset: 1472
+}
+member {
+  id: 0x3ea61913
+  name: "obj_hashfn"
+  type_id: 0xc4926ac8
+  offset: 192
+}
+member {
+  id: 0x7554cb00
+  name: "obj_list"
+  type_id: 0x49a73111
+  offset: 320
+}
+member {
+  id: 0x852fa1e1
+  name: "obj_size"
+  type_id: 0x4585663f
+  offset: 2688
+}
+member {
+  id: 0x852fa9e4
+  name: "obj_size"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x9c9c695d
+  name: "obj_type"
+  type_id: 0x16bd8c09
+  offset: 320
+}
+member {
+  id: 0x788d7bed
+  name: "objcg"
+  type_id: 0x1892eedc
+  offset: 14208
+}
+member {
+  id: 0x788d7d64
+  name: "objcg"
+  type_id: 0x1892eedc
+  offset: 768
+}
+member {
+  id: 0xfd0689cd
+  name: "objcg_list"
+  type_id: 0xd3c80119
+  offset: 14272
+}
+member {
+  id: 0xd8c8a14c
+  name: "object_idr"
+  type_id: 0x04b89667
+  offset: 1408
+}
+member {
+  id: 0xd8c8a8a7
+  name: "object_idr"
+  type_id: 0x04b89667
+  offset: 512
+}
+member {
+  id: 0x932239c3
+  name: "object_name_idr"
+  type_id: 0x04b89667
+  offset: 13632
+}
+member {
+  id: 0x4c6737d9
+  name: "object_name_lock"
+  type_id: 0xa7c362b0
+  offset: 13248
+}
+member {
+  id: 0x7bed058b
+  name: "object_size"
+  type_id: 0x4585663f
+  offset: 224
+}
+member {
+  id: 0x2a7b8799
+  name: "objects"
+  type_id: 0xd3c80119
+  offset: 448
+}
+member {
+  id: 0x2aa4f724
+  name: "objects"
+  type_id: 0x0cbf60eb
+  offset: 256
+}
+member {
+  id: 0x89cabbe4
+  name: "objects"
+  type_id: 0x4585663f
+  offset: 16
+  bitsize: 15
+}
+member {
+  id: 0x742b4b06
+  name: "objects_per_slab"
+  type_id: 0x4585663f
+  offset: 416
+}
+member {
+  id: 0x739d7255
+  name: "objs"
+  type_id: 0xad7c0a89
+}
+member {
+  id: 0x7a226550
+  name: "objs_per_zspage"
+  type_id: 0x6720d32f
+  offset: 608
+}
+member {
+  id: 0x33953b25
+  name: "obsolete"
+  type_id: 0xb0312d5a
+  offset: 464
+}
+member {
+  id: 0x005423ae
+  name: "ocb"
+  type_id: 0x039f864e
+}
+member {
+  id: 0xec4ad7d3
+  name: "occupied"
+  type_id: 0x6d7f5ff6
+  offset: 192
+}
+member {
+  id: 0x67879250
+  name: "ocontexts"
+  type_id: 0xa3440799
+  offset: 3520
+}
+member {
+  id: 0xec90d247
+  name: "ocr"
+  type_id: 0xc9082b19
+  offset: 7360
+}
+member {
+  id: 0xdf3734e2
+  name: "ocr_avail"
+  type_id: 0xc9082b19
+  offset: 7648
+}
+member {
+  id: 0x4b018a2a
+  name: "ocr_avail_mmc"
+  type_id: 0xc9082b19
+  offset: 7744
+}
+member {
+  id: 0x4b8d0244
+  name: "ocr_avail_mmc"
+  type_id: 0x4585663f
+  offset: 9504
+}
+member {
+  id: 0xb914cb9d
+  name: "ocr_avail_sd"
+  type_id: 0x4585663f
+  offset: 9472
+}
+member {
+  id: 0xb9984e34
+  name: "ocr_avail_sd"
+  type_id: 0xc9082b19
+  offset: 7712
+}
+member {
+  id: 0x6b410bd6
+  name: "ocr_avail_sdio"
+  type_id: 0xc9082b19
+  offset: 7680
+}
+member {
+  id: 0x6bcd82f1
+  name: "ocr_avail_sdio"
+  type_id: 0x4585663f
+  offset: 9440
+}
+member {
+  id: 0x9e7eeb5c
+  name: "ocr_mask"
+  type_id: 0xc9082b19
+  offset: 9536
+}
+member {
+  id: 0xe9334d1a
+  name: "ocv"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x694c1c28
+  name: "ocv_table"
+  type_id: 0x13735712
+  offset: 1600
+}
+member {
+  id: 0x24c75fc6
+  name: "ocv_table_size"
+  type_id: 0x0e156b94
+  offset: 2880
+}
+member {
+  id: 0x6b22b6f2
+  name: "ocv_temp"
+  type_id: 0x0e156b94
+  offset: 736
+}
+member {
+  id: 0xc03481fc
+  name: "oemid"
+  type_id: 0xc93e017b
+  offset: 160
+}
+member {
+  id: 0xb3bb33a4
+  name: "of_base"
+  type_id: 0xa8c6a1ce
+  offset: 2560
+}
+member {
+  id: 0xc75c5a51
+  name: "of_clk"
+  type_id: 0x0d65bd2b
+  offset: 3072
+}
+member {
+  id: 0x862e8516
+  name: "of_compatible"
+  type_id: 0x3e10b518
+  offset: 576
+}
+member {
+  id: 0xd603b4f4
+  name: "of_dapm_routes"
+  type_id: 0x3d828cd9
+  offset: 3968
+}
+member {
+  id: 0x6456a213
+  name: "of_dapm_widgets"
+  type_id: 0x3db7fb40
+  offset: 3840
+}
+member {
+  id: 0x33a246e4
+  name: "of_dma_controllers"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0x486054f7
+  name: "of_dma_data"
+  type_id: 0x18bd6530
+  offset: 384
+}
+member {
+  id: 0x9e955a05
+  name: "of_dma_route_allocate"
+  type_id: 0x1fff8df6
+  offset: 256
+}
+member {
+  id: 0x783ce174
+  name: "of_dma_xlate"
+  type_id: 0x2b9d590c
+  offset: 192
+}
+member {
+  id: 0xe881bc5b
+  name: "of_gpio_n_cells"
+  type_id: 0x4585663f
+  offset: 4864
+}
+member {
+  id: 0x5381e473
+  name: "of_gpio_ranges_fallback"
+  type_id: 0x2c4a1698
+  offset: 4992
+}
+member {
+  id: 0x18f3f23f
+  name: "of_irq"
+  type_id: 0x850fbb44
+  offset: 2752
+}
+member {
+  id: 0x4a308ec6
+  name: "of_map_mode"
+  type_id: 0x3d7eb07a
+  offset: 2368
+}
+member {
+  id: 0xacc971ca
+  name: "of_match"
+  type_id: 0x3e10b518
+  offset: 128
+}
+member {
+  id: 0xb13db7cf
+  name: "of_match_full_name"
+  type_id: 0x6d7f5ff6
+  offset: 192
+}
+member {
+  id: 0x7e9aaed0
+  name: "of_match_table"
+  type_id: 0x3af34d6f
+  offset: 320
+}
+member {
+  id: 0x3dfbc57e
+  name: "of_name"
+  type_id: 0x3e10b518
+  offset: 832
+}
+member {
+  id: 0xf7c3f241
+  name: "of_node"
+  type_id: 0x347303b4
+}
+member {
+  id: 0xf7c3f2ea
+  name: "of_node"
+  type_id: 0x347303b4
+  offset: 256
+}
+member {
+  id: 0xf7c3f3d3
+  name: "of_node"
+  type_id: 0x347303b4
+  offset: 384
+}
+member {
+  id: 0xf7c3f3d5
+  name: "of_node"
+  type_id: 0x347303b4
+  offset: 5952
+}
+member {
+  id: 0xf7c3f412
+  name: "of_node"
+  type_id: 0x347303b4
+  offset: 4800
+}
+member {
+  id: 0xf7c3f438
+  name: "of_node"
+  type_id: 0x347303b4
+  offset: 640
+}
+member {
+  id: 0xf7c3f536
+  name: "of_node"
+  type_id: 0x347303b4
+  offset: 448
+}
+member {
+  id: 0xf7c3f586
+  name: "of_node"
+  type_id: 0x347303b4
+  offset: 320
+}
+member {
+  id: 0xf7c3f6a0
+  name: "of_node"
+  type_id: 0x347303b4
+  offset: 64
+}
+member {
+  id: 0xf7c3fa88
+  name: "of_node"
+  type_id: 0x347303b4
+  offset: 192
+}
+member {
+  id: 0xf7c3fb33
+  name: "of_node"
+  type_id: 0x347303b4
+  offset: 576
+}
+member {
+  id: 0xf7c3fb83
+  name: "of_node"
+  type_id: 0x347303b4
+  offset: 128
+}
+member {
+  id: 0xf7c3ff37
+  name: "of_node"
+  type_id: 0x347303b4
+  offset: 1088
+}
+member {
+  id: 0xbd80d2ad
+  name: "of_node_reused"
+  type_id: 0x6d7f5ff6
+  offset: 128
+}
+member {
+  id: 0xe64283a6
+  name: "of_node_reused"
+  type_id: 0x6d7f5ff6
+  offset: 6754
+  bitsize: 1
+}
+member {
+  id: 0xca85a221
+  name: "of_parse_cb"
+  type_id: 0x2e8dc6ee
+  offset: 320
+}
+member {
+  id: 0x0dfe7bf0
+  name: "of_pwm_n_cells"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0x42ee2b24
+  name: "of_reg"
+  type_id: 0xf8992146
+  offset: 640
+}
+member {
+  id: 0x4368c0a6
+  name: "of_reset_n_cells"
+  type_id: 0x6720d32f
+  offset: 512
+}
+member {
+  id: 0xc4aa6713
+  name: "of_resm_idx"
+  type_id: 0xc9082b19
+  offset: 832
+}
+member {
+  id: 0x4a590760
+  name: "of_xlate"
+  type_id: 0x08258287
+  offset: 192
+}
+member {
+  id: 0x4a5fda2e
+  name: "of_xlate"
+  type_id: 0x0ef7c244
+  offset: 320
+}
+member {
+  id: 0x4a6638cf
+  name: "of_xlate"
+  type_id: 0x371523a8
+  offset: 320
+}
+member {
+  id: 0x4a7cf415
+  name: "of_xlate"
+  type_id: 0x2dd94973
+  offset: 448
+}
+member {
+  id: 0x4a7d64da
+  name: "of_xlate"
+  type_id: 0x2c41e916
+  offset: 4928
+}
+member {
+  id: 0x4a7ec101
+  name: "of_xlate"
+  type_id: 0x2fe25883
+  offset: 576
+}
+member {
+  id: 0xb84e4d03
+  name: "of_xlate_dai_id"
+  type_id: 0x2cd20a31
+  offset: 1216
+}
+member {
+  id: 0xece375a8
+  name: "of_xlate_dai_name"
+  type_id: 0x2cda29dd
+  offset: 1152
+}
+member {
+  id: 0x8b012ba7
+  name: "off"
+  type_id: 0xd41e888f
+  offset: 32
+}
+member {
+  id: 0x8b1c3202
+  name: "off"
+  type_id: 0xc9082b19
+  offset: 704
+}
+member {
+  id: 0x8b1c3d04
+  name: "off"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x8b35cac9
+  name: "off"
+  type_id: 0xe0f63c72
+  offset: 64
+}
+member {
+  id: 0x8b38ca63
+  name: "off"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x8bd54826
+  name: "off"
+  type_id: 0x007e8ce4
+  offset: 16
+}
+member {
+  id: 0x5ae84e29
+  name: "off_arr"
+  type_id: 0x265125cd
+  offset: 960
+}
+member {
+  id: 0x085373b2
+  name: "off_on_delay"
+  type_id: 0x4585663f
+  offset: 2304
+}
+member {
+  id: 0x112be300
+  name: "off_timeout_used"
+  type_id: 0x4585663f
+  offset: 259
+  bitsize: 1
+}
+member {
+  id: 0x2ef5a066
+  name: "off_val"
+  type_id: 0x4585663f
+  offset: 704
+}
+member {
+  id: 0x3afe784b
+  name: "offdev"
+  type_id: 0x27dafe16
+  offset: 128
+}
+member {
+  id: 0x88730b3b
+  name: "offline"
+  type_id: 0x2dd58efa
+  offset: 832
+}
+member {
+  id: 0x8873399a
+  name: "offline"
+  type_id: 0x2de9e33f
+  offset: 1088
+}
+member {
+  id: 0xfb9190e6
+  name: "offline"
+  type_id: 0x6d7f5ff6
+  offset: 6753
+  bitsize: 1
+}
+member {
+  id: 0xdf08d03a
+  name: "offline_already"
+  type_id: 0x6d7f5ff6
+  offset: 2880
+}
+member {
+  id: 0x911e68b3
+  name: "offline_disabled"
+  type_id: 0x6d7f5ff6
+  offset: 6752
+  bitsize: 1
+}
+member {
+  id: 0x4d7469b1
+  name: "offline_node"
+  type_id: 0xd3c80119
+  offset: 6528
+}
+member {
+  id: 0x21ad6eed
+  name: "offline_waitq"
+  type_id: 0x03913382
+  offset: 8768
+}
+member {
+  id: 0xd2db40d6
+  name: "offload"
+  type_id: 0x0d306b27
+  offset: 7744
+}
+member {
+  id: 0xd2dd700d
+  name: "offload"
+  type_id: 0x0b05beb9
+  offset: 64
+}
+member {
+  id: 0xd2ff2aaf
+  name: "offload"
+  type_id: 0x295c7202
+  offset: 1072
+}
+member {
+  id: 0xb77dd383
+  name: "offload_act_setup"
+  type_id: 0x2e11eea4
+  offset: 1088
+}
+member {
+  id: 0x0185f8b2
+  name: "offload_failed"
+  type_id: 0x295c7202
+  offset: 1088
+}
+member {
+  id: 0x942737e3
+  name: "offload_handle"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0xdfefd731
+  name: "offload_requested"
+  type_id: 0x6d7f5ff6
+  offset: 1224
+}
+member {
+  id: 0x757e2857
+  name: "offload_xstats_l3"
+  type_id: 0x19c32202
+  offset: 20224
+}
+member {
+  id: 0xab41d7d7
+  name: "offloadcnt"
+  type_id: 0x74d29cf1
+  offset: 1568
+}
+member {
+  id: 0x46bca5c5
+  name: "offloads"
+  type_id: 0xd3c80119
+  offset: 2752
+}
+member {
+  id: 0x46bca653
+  name: "offloads"
+  type_id: 0xd3c80119
+  offset: 256
+}
+member {
+  id: 0xdbe84a0d
+  name: "offmap"
+  type_id: 0x0cadd9f1
+}
+member {
+  id: 0x0e2aaf7d
+  name: "offs"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x9b072945
+  name: "offset"
+  type_id: 0x1bf16028
+  offset: 64
+}
+member {
+  id: 0x9b0d1fb7
+  name: "offset"
+  type_id: 0x11c404ba
+  offset: 448
+}
+member {
+  id: 0x9b1cae89
+  name: "offset"
+  type_id: 0x007e8ce4
+  offset: 48
+}
+member {
+  id: 0x9b259f2b
+  name: "offset"
+  type_id: 0x39470e64
+  offset: 64
+}
+member {
+  id: 0x9b2fa9a0
+  name: "offset"
+  type_id: 0x33756485
+}
+member {
+  id: 0x9b2fad41
+  name: "offset"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x9b3b71e5
+  name: "offset"
+  type_id: 0x27a7c613
+  offset: 1536
+}
+member {
+  id: 0x9b3b7a90
+  name: "offset"
+  type_id: 0x27a7c613
+  offset: 384
+}
+member {
+  id: 0x9b3b7fe3
+  name: "offset"
+  type_id: 0x27a7c613
+  offset: 64
+}
+member {
+  id: 0x9b41508b
+  name: "offset"
+  type_id: 0x5d8155a5
+  offset: 456
+}
+member {
+  id: 0x9b415677
+  name: "offset"
+  type_id: 0x5d8155a5
+  offset: 8
+}
+member {
+  id: 0x9b595060
+  name: "offset"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x9b595499
+  name: "offset"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x9b595909
+  name: "offset"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0x9b5959a2
+  name: "offset"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x9b595d43
+  name: "offset"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x9b595e65
+  name: "offset"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0x9b595ed5
+  name: "offset"
+  type_id: 0x4585663f
+  offset: 448
+}
+member {
+  id: 0x9b7bf2c8
+  name: "offset"
+  type_id: 0x6720d32f
+  offset: 544
+}
+member {
+  id: 0x9b7bf8ce
+  name: "offset"
+  type_id: 0x6720d32f
+  offset: 288
+}
+member {
+  id: 0x9b7bf8f6
+  name: "offset"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x9b7bf99f
+  name: "offset"
+  type_id: 0x6720d32f
+  offset: 2432
+}
+member {
+  id: 0x9b8d95a2
+  name: "offset"
+  type_id: 0x914dbfdc
+  offset: 288
+}
+member {
+  id: 0x9b8d98b9
+  name: "offset"
+  type_id: 0x914dbfdc
+  offset: 128
+}
+member {
+  id: 0x9b8d9c9b
+  name: "offset"
+  type_id: 0x914dbfdc
+  offset: 160
+}
+member {
+  id: 0x9b8d9e1f
+  name: "offset"
+  type_id: 0x914dbfdc
+  offset: 1392
+}
+member {
+  id: 0x9b8d9fc5
+  name: "offset"
+  type_id: 0x914dbfdc
+  offset: 16
+}
+member {
+  id: 0x9b8ef73e
+  name: "offset"
+  type_id: 0x92233392
+  offset: 192
+}
+member {
+  id: 0x9b8ef880
+  name: "offset"
+  type_id: 0x92233392
+  offset: 448
+}
+member {
+  id: 0x9ba109ac
+  name: "offset"
+  type_id: 0xbdd18903
+  offset: 64
+}
+member {
+  id: 0x9ba29f20
+  name: "offset"
+  type_id: 0xbe4edfe5
+  offset: 32
+}
+member {
+  id: 0x9ba34f05
+  name: "offset"
+  type_id: 0xbf9efa0a
+  offset: 32
+}
+member {
+  id: 0x9bc1bbe9
+  name: "offset"
+  type_id: 0xdd6eef0a
+  offset: 128
+}
+member {
+  id: 0x9bd5d4ef
+  name: "offset"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x9bd5d9d4
+  name: "offset"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x9bd5dd6c
+  name: "offset"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0x9beaae82
+  name: "offset"
+  type_id: 0xf67b8436
+  offset: 128
+}
+member {
+  id: 0x9bf12a52
+  name: "offset"
+  type_id: 0xedf277ba
+  offset: 64
+}
+member {
+  id: 0x9bf12eb3
+  name: "offset"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x9bf4d13a
+  name: "offset"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0x9bf4db65
+  name: "offset"
+  type_id: 0xe8034002
+  offset: 64
+}
+member {
+  id: 0x9bfaf27b
+  name: "offset"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x9bfaf69a
+  name: "offset"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x9bfaff40
+  name: "offset"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x9bff77f6
+  name: "offset"
+  type_id: 0xe3ab3231
+}
+member {
+  id: 0x40f4440f
+  name: "offset_for_non_ref_pic"
+  type_id: 0x0faae5b1
+  offset: 8256
+}
+member {
+  id: 0x7ab9fc4d
+  name: "offset_for_ref_frame"
+  type_id: 0xd0aa0537
+  offset: 96
+}
+member {
+  id: 0xb15aba88
+  name: "offset_for_top_to_bottom_field"
+  type_id: 0x0faae5b1
+  offset: 8288
+}
+member {
+  id: 0x2b4a89bd
+  name: "offset_secs"
+  type_id: 0x865acc96
+  offset: 11968
+}
+member {
+  id: 0x355a1b77
+  name: "offsets"
+  type_id: 0xb5c6bcdb
+  offset: 416
+}
+member {
+  id: 0x35639bb0
+  name: "offsets"
+  type_id: 0x8c43dc29
+  offset: 320
+}
+member {
+  id: 0x35690218
+  name: "offsets"
+  type_id: 0x86d95287
+  offset: 64
+}
+member {
+  id: 0x3572f05b
+  name: "offsets"
+  type_id: 0x9d2c4a95
+  offset: 832
+}
+member {
+  id: 0xaa221c83
+  name: "offsets_size"
+  type_id: 0x95ef30d6
+  offset: 320
+}
+member {
+  id: 0xaa43c86e
+  name: "offsets_size"
+  type_id: 0xf435685e
+  offset: 576
+}
+member {
+  id: 0xfdb76cfe
+  name: "oflag"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x4f286327
+  name: "ohci_hcctrl_reg"
+  type_id: 0x087aa58e
+  offset: 5632
+}
+member {
+  id: 0xa5064bbb
+  name: "oifindex"
+  type_id: 0x6720d32f
+  offset: 160
+}
+member {
+  id: 0x6e5019cd
+  name: "oifname"
+  type_id: 0x42201dce
+  offset: 832
+}
+member {
+  id: 0x1e0dc421
+  name: "okfn"
+  type_id: 0x2d2736e0
+  offset: 320
+}
+member {
+  id: 0xf44d59e2
+  name: "old"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xf4c1d04e
+  name: "old"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x9aa7dbb8
+  name: "old_block_size"
+  type_id: 0x4585663f
+  offset: 1408
+}
+member {
+  id: 0x5d12ef79
+  name: "old_current"
+  type_id: 0x0baa70a7
+  offset: 2368
+}
+member {
+  id: 0x2e2c4ea9
+  name: "old_dom_cgrp"
+  type_id: 0x18a16691
+  offset: 7424
+}
+member {
+  id: 0x3809bbae
+  name: "old_fb"
+  type_id: 0x31c8b544
+  offset: 1536
+}
+member {
+  id: 0x59a75e79
+  name: "old_link_state"
+  type_id: 0x4585663f
+  offset: 320
+  bitsize: 1
+}
+member {
+  id: 0x73960132
+  name: "old_prog_fd"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0xa9aee94d
+  name: "old_sk_destruct"
+  type_id: 0x0f626ee5
+  offset: 2560
+}
+member {
+  id: 0x72c31e1d
+  name: "old_state"
+  type_id: 0x09adb9f4
+  offset: 128
+}
+member {
+  id: 0x72e49f3c
+  name: "old_state"
+  type_id: 0x2e2c982d
+  offset: 128
+}
+member {
+  id: 0x72e63dbe
+  name: "old_state"
+  type_id: 0x2c8e1aaa
+  offset: 128
+}
+member {
+  id: 0x72f069c4
+  name: "old_state"
+  type_id: 0x3ada60b4
+  offset: 128
+}
+member {
+  id: 0x4eb03045
+  name: "old_subtree_control"
+  type_id: 0x914dbfdc
+  offset: 5792
+}
+member {
+  id: 0xce81a821
+  name: "old_subtree_ss_mask"
+  type_id: 0x914dbfdc
+  offset: 5808
+}
+member {
+  id: 0x1de2c30d
+  name: "old_token"
+  type_id: 0x0baa70a7
+  offset: 2400
+}
+member {
+  id: 0xe3329fff
+  name: "oldapi"
+  type_id: 0x6d7f5ff6
+  offset: 1362
+  bitsize: 1
+}
+member {
+  id: 0xec1f9bc8
+  name: "oldval"
+  type_id: 0x39470e64
+}
+member {
+  id: 0x0f2ea424
+  name: "omtu"
+  type_id: 0xe8034002
+  offset: 464
+}
+member {
+  id: 0x7114cc4c
+  name: "on"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x71ef81cb
+  name: "on"
+  type_id: 0x9c649622
+}
+member {
+  id: 0x094debc6
+  name: "on_cpu"
+  type_id: 0x6720d32f
+  offset: 608
+}
+member {
+  id: 0x8d72c341
+  name: "on_list"
+  type_id: 0xc93e017b
+  offset: 304
+}
+member {
+  id: 0x8ddcd1f3
+  name: "on_list"
+  type_id: 0x6720d32f
+  offset: 2496
+}
+member {
+  id: 0x7409a1c4
+  name: "on_rq"
+  type_id: 0x6720d32f
+  offset: 1024
+}
+member {
+  id: 0x742b0419
+  name: "on_rq"
+  type_id: 0x4585663f
+  offset: 448
+}
+member {
+  id: 0x74a7bcd0
+  name: "on_rq"
+  type_id: 0xc93e017b
+  offset: 288
+}
+member {
+  id: 0x9de8e0d2
+  name: "on_time"
+  type_id: 0x92233392
+  offset: 11584
+}
+member {
+  id: 0xe0a29eeb
+  name: "on_tree"
+  type_id: 0x6d7f5ff6
+  offset: 18624
+}
+member {
+  id: 0xcd1e25eb
+  name: "on_val"
+  type_id: 0x4585663f
+  offset: 672
+}
+member {
+  id: 0x598d35ff
+  name: "oncpu"
+  type_id: 0x6720d32f
+  offset: 5184
+}
+member {
+  id: 0xc354c852
+  name: "ondemand_data"
+  type_id: 0x030e9a89
+  offset: 576
+}
+member {
+  id: 0x5b213704
+  name: "oneway"
+  type_id: 0xc9082b19
+  offset: 8576
+}
+member {
+  id: 0x39c1244c
+  name: "oneway_spam_detected"
+  type_id: 0x6d7f5ff6
+  offset: 1152
+}
+member {
+  id: 0x8a9bfdd9
+  name: "oneway_spam_detection_enabled"
+  type_id: 0x6d7f5ff6
+  offset: 4800
+}
+member {
+  id: 0x52be75be
+  name: "oneway_spam_suspect"
+  type_id: 0x4585663f
+  offset: 324
+  bitsize: 1
+}
+member {
+  id: 0x6cce0072
+  name: "ongoing_mrq"
+  type_id: 0x292cb268
+  offset: 11968
+}
+member {
+  id: 0x7d2533ba
+  name: "online"
+  type_id: 0x6720d32f
+  offset: 24096
+}
+member {
+  id: 0x7d253971
+  name: "online"
+  type_id: 0x6720d32f
+  offset: 3424
+}
+member {
+  id: 0x7d2f6119
+  name: "online"
+  type_id: 0x6d7f5ff6
+  offset: 576
+}
+member {
+  id: 0x7d6fca14
+  name: "online"
+  type_id: 0x2dd58efa
+  offset: 768
+}
+member {
+  id: 0x7d6ff9c8
+  name: "online"
+  type_id: 0x2de9e33f
+  offset: 1024
+}
+member {
+  id: 0x7ddbdd3f
+  name: "online"
+  type_id: 0x99caa0ae
+  offset: 256
+}
+member {
+  id: 0xdab8e121
+  name: "online_cnt"
+  type_id: 0x74d29cf1
+  offset: 768
+}
+member {
+  id: 0xf1a1d30d
+  name: "online_pin"
+  type_id: 0xa722c13e
+  offset: 1888
+}
+member {
+  id: 0x5182f15a
+  name: "online_trig"
+  type_id: 0x0e6ba6f7
+  offset: 9856
+}
+member {
+  id: 0x9abbf6bc
+  name: "online_trig_name"
+  type_id: 0x0483e6f8
+  offset: 9920
+}
+member {
+  id: 0xc21468d0
+  name: "online_vcpus"
+  type_id: 0x74d29cf1
+  offset: 18688
+}
+member {
+  id: 0x7adb50ba
+  name: "onlink"
+  type_id: 0xb3e7bac9
+  offset: 31
+  bitsize: 1
+}
+member {
+  id: 0x4a27b1eb
+  name: "only_20mhz"
+  type_id: 0xa6cee90b
+}
+member {
+  id: 0xb0c004da
+  name: "oo"
+  type_id: 0xf39d0370
+  offset: 416
+}
+member {
+  id: 0x0c30ab56
+  name: "oob_hotplug_event"
+  type_id: 0x0dad77a5
+  offset: 896
+}
+member {
+  id: 0x97510416
+  name: "oom_flag_origin"
+  type_id: 0x6d7f5ff6
+  offset: 7744
+}
+member {
+  id: 0xffe1ad3e
+  name: "oom_group"
+  type_id: 0x6d7f5ff6
+  offset: 9856
+}
+member {
+  id: 0xb975b75f
+  name: "oom_kill_disable"
+  type_id: 0x6720d32f
+  offset: 9952
+}
+member {
+  id: 0xdc2bf7db
+  name: "oom_lock"
+  type_id: 0x6d7f5ff6
+  offset: 9864
+}
+member {
+  id: 0x3723dc05
+  name: "oom_mm"
+  type_id: 0x1b36c7a2
+  offset: 7808
+}
+member {
+  id: 0x005ca579
+  name: "oom_notify"
+  type_id: 0xd3c80119
+  offset: 12352
+}
+member {
+  id: 0xf5a1b8a3
+  name: "oom_reaper_list"
+  type_id: 0x1d19a9d5
+  offset: 23424
+}
+member {
+  id: 0x53a6c99e
+  name: "oom_reaper_timer"
+  type_id: 0xd298e888
+  offset: 23488
+}
+member {
+  id: 0x8af540e4
+  name: "oom_score_adj"
+  type_id: 0xb0312d5a
+  offset: 7760
+}
+member {
+  id: 0xd123612d
+  name: "oom_score_adj_min"
+  type_id: 0xb0312d5a
+  offset: 7776
+}
+member {
+  id: 0xdfd3d3d5
+  name: "ooo_okay"
+  type_id: 0xb3e7bac9
+  offset: 7
+  bitsize: 1
+}
+member {
+  id: 0x382ef493
+  name: "op"
+  type_id: 0xa1c6c291
+  offset: 320
+  bitsize: 8
+}
+member {
+  id: 0xf03ba7f6
+  name: "op"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0xf0697d2a
+  name: "op"
+  type_id: 0x9bd401b6
+  offset: 240
+}
+member {
+  id: 0xf0958f16
+  name: "op"
+  type_id: 0x6720d32f
+  offset: 2496
+}
+member {
+  id: 0xf0cdfd52
+  name: "op"
+  type_id: 0x3f55d498
+  offset: 832
+}
+member {
+  id: 0x76264b3d
+  name: "op_mode"
+  type_id: 0x295c7202
+}
+member {
+  id: 0xee24b1e6
+  name: "op_regs"
+  type_id: 0x080fbe64
+  offset: 192
+}
+member {
+  id: 0x9e8f5f94
+  name: "op_runtime_config"
+  type_id: 0x2d883003
+  offset: 1600
+}
+member {
+  id: 0x66b04008
+  name: "op_state"
+  type_id: 0x6720d32f
+  offset: 576
+}
+member {
+  id: 0x4fc39784
+  name: "op_tmpl"
+  type_id: 0x4a4e49a4
+}
+member {
+  id: 0xc8d27b1b
+  name: "op_vsafe5v"
+  type_id: 0x6d7f5ff6
+  offset: 2256
+}
+member {
+  id: 0x8fe42b1b
+  name: "opaque"
+  type_id: 0x18bd6530
+  offset: 704
+}
+member {
+  id: 0xfc0c0365
+  name: "opcode"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xfc33e24a
+  name: "opcode"
+  type_id: 0xf6ef7d7c
+  offset: 640
+}
+member {
+  id: 0xfc544bca
+  name: "opcode"
+  type_id: 0x914dbfdc
+  offset: 32
+}
+member {
+  id: 0xfc76ecf4
+  name: "opcode"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0xfcec5c24
+  name: "opcode"
+  type_id: 0x295c7202
+  offset: 512
+}
+member {
+  id: 0xad980336
+  name: "open"
+  type_id: 0x2c8534d8
+  offset: 320
+}
+member {
+  id: 0xad982535
+  name: "open"
+  type_id: 0x2cac39f3
+  offset: 192
+}
+member {
+  id: 0xad983a50
+  name: "open"
+  type_id: 0x2cbb953f
+}
+member {
+  id: 0xad984bf8
+  name: "open"
+  type_id: 0x2ccbaf5c
+  offset: 384
+}
+member {
+  id: 0xad987455
+  name: "open"
+  type_id: 0x2cf2c077
+  offset: 1472
+}
+member {
+  id: 0xad987839
+  name: "open"
+  type_id: 0x2cf42df1
+  offset: 3776
+}
+member {
+  id: 0xad987d52
+  name: "open"
+  type_id: 0x2cfc979f
+}
+member {
+  id: 0xad98a9ad
+  name: "open"
+  type_id: 0x2c2c3c2e
+  offset: 50432
+}
+member {
+  id: 0xad98dbd1
+  name: "open"
+  type_id: 0x2c50b20c
+  offset: 896
+}
+member {
+  id: 0xad98df2e
+  name: "open"
+  type_id: 0x2c5eebb2
+}
+member {
+  id: 0xad98f47a
+  name: "open"
+  type_id: 0x2c7ea7c2
+  offset: 512
+}
+member {
+  id: 0xad98fef0
+  name: "open"
+  type_id: 0x2c7ea7c2
+  offset: 384
+}
+member {
+  id: 0xad991fbf
+  name: "open"
+  type_id: 0x2d90ce2d
+  offset: 19584
+}
+member {
+  id: 0xad992fa0
+  name: "open"
+  type_id: 0x2da7a75a
+  offset: 128
+}
+member {
+  id: 0xad9958f8
+  name: "open"
+  type_id: 0x2ddf4eb6
+  offset: 1792
+}
+member {
+  id: 0xad996916
+  name: "open"
+  type_id: 0x2de1113a
+  offset: 128
+}
+member {
+  id: 0xad99a64a
+  name: "open"
+  type_id: 0x2d2e4d07
+  offset: 128
+}
+member {
+  id: 0xad99b7eb
+  name: "open"
+  type_id: 0x2d30dbe4
+  offset: 4352
+}
+member {
+  id: 0xad99f522
+  name: "open"
+  type_id: 0x2d775d88
+  offset: 832
+}
+member {
+  id: 0xad9a4a13
+  name: "open"
+  type_id: 0x2ecbd65d
+}
+member {
+  id: 0xad9a83f6
+  name: "open"
+  type_id: 0x2e0ac0be
+  offset: 960
+}
+member {
+  id: 0xad9a8b05
+  name: "open"
+  type_id: 0x2e0ac0be
+}
+member {
+  id: 0xad9ad788
+  name: "open"
+  type_id: 0x2e52ac79
+  offset: 64
+}
+member {
+  id: 0xad9ae1cc
+  name: "open"
+  type_id: 0x2e64e8af
+  offset: 64
+}
+member {
+  id: 0xad9b45a9
+  name: "open"
+  type_id: 0x2fc4c761
+  offset: 256
+}
+member {
+  id: 0xad9b4d09
+  name: "open"
+  type_id: 0x2fc40583
+  offset: 192
+}
+member {
+  id: 0xad9b8e0f
+  name: "open"
+  type_id: 0x2f070300
+  offset: 192
+}
+member {
+  id: 0xad9b97ee
+  name: "open"
+  type_id: 0x2f1fe96a
+  offset: 128
+}
+member {
+  id: 0xad9bbf06
+  name: "open"
+  type_id: 0x2f3dfe58
+  offset: 2752
+}
+member {
+  id: 0xada546d8
+  name: "open"
+  type_id: 0x11cfee5a
+  offset: 960
+}
+member {
+  id: 0xadba96dc
+  name: "open"
+  type_id: 0x0e1719d7
+}
+member {
+  id: 0xadbb21d2
+  name: "open"
+  type_id: 0x0fa1856e
+  offset: 384
+}
+member {
+  id: 0xadbed88a
+  name: "open"
+  type_id: 0x0a5daefb
+  offset: 64
+}
+member {
+  id: 0xadd3a5f7
+  name: "open"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x3961e85c
+  name: "open_count"
+  type_id: 0x74d29cf1
+  offset: 1728
+}
+member {
+  id: 0x39dc3c0c
+  name: "open_count"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0x0be63d8a
+  name: "open_deadline"
+  type_id: 0x11c404ba
+  offset: 8960
+}
+member {
+  id: 0xcefb3c16
+  name: "open_fds"
+  type_id: 0x064d6086
+  offset: 192
+}
+member {
+  id: 0xff1223da
+  name: "open_fds_init"
+  type_id: 0xb914bfab
+  offset: 1152
+}
+member {
+  id: 0x4e0cf9e5
+  name: "open_flags"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x4e0cfd04
+  name: "open_flags"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xce3ecd5a
+  name: "open_list_head"
+  type_id: 0xd3c80119
+  offset: 2688
+}
+member {
+  id: 0x48515b95
+  name: "open_mutex"
+  type_id: 0xa7c362b0
+  offset: 9536
+}
+member {
+  id: 0x48515f2d
+  name: "open_mutex"
+  type_id: 0xa7c362b0
+  offset: 3008
+}
+member {
+  id: 0x48515ff8
+  name: "open_mutex"
+  type_id: 0xa7c362b0
+  offset: 16832
+}
+member {
+  id: 0x9c778375
+  name: "open_partitions"
+  type_id: 0x4585663f
+  offset: 3392
+}
+member {
+  id: 0x60e6f044
+  name: "open_wait"
+  type_id: 0x03913382
+  offset: 1728
+}
+member {
+  id: 0x60e6f6bf
+  name: "open_wait"
+  type_id: 0x03913382
+  offset: 1920
+}
+member {
+  id: 0x60e6f8f0
+  name: "open_wait"
+  type_id: 0x03913382
+  offset: 17216
+}
+member {
+  id: 0x79a32c87
+  name: "openat2"
+  type_id: 0x95539d46
+}
+member {
+  id: 0xe0f6c039
+  name: "opened"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0xe0f6c5cb
+  name: "opened"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0xe0f6c9e3
+  name: "opened"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0xe0fc9b4c
+  name: "opened"
+  type_id: 0x6d7f5ff6
+  offset: 128
+}
+member {
+  id: 0xc04f327d
+  name: "openmax"
+  type_id: 0x4585663f
+  offset: 65
+  bitsize: 1
+}
+member {
+  id: 0x6b1e1a20
+  name: "openmin"
+  type_id: 0x4585663f
+  offset: 64
+  bitsize: 1
+}
+member {
+  id: 0x5d630d19
+  name: "oper_speed"
+  type_id: 0x4585663f
+  offset: 2144
+}
+member {
+  id: 0x5d630ec6
+  name: "oper_speed"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0x271e858e
+  name: "operating_snk_mw"
+  type_id: 0x4585663f
+  offset: 9888
+}
+member {
+  id: 0xcd538228
+  name: "operational"
+  type_id: 0x6d7f5ff6
+  offset: 264
+}
+member {
+  id: 0xaa2f0c93
+  name: "operstate"
+  type_id: 0x5d8155a5
+  offset: 4352
+}
+member {
+  id: 0x002ee513
+  name: "opos"
+  type_id: 0x0379c823
+  offset: 256
+}
+member {
+  id: 0x230322fd
+  name: "opp_list"
+  type_id: 0xd3c80119
+  offset: 960
+}
+member {
+  id: 0x1dc634ec
+  name: "opp_table"
+  type_id: 0x27d0317f
+  offset: 640
+}
+member {
+  id: 0x1dc6365e
+  name: "opp_table"
+  type_id: 0x27d0317f
+  offset: 7936
+}
+member {
+  id: 0x1dc636cd
+  name: "opp_table"
+  type_id: 0x27d0317f
+  offset: 10880
+}
+member {
+  id: 0xba0774bf
+  name: "opp_to_performance_state"
+  type_id: 0x39560186
+  offset: 10944
+}
+member {
+  id: 0xaf3431b0
+  name: "ops"
+  type_id: 0xbf311330
+}
+member {
+  id: 0xaf511229
+  name: "ops"
+  type_id: 0xda154dec
+  offset: 320
+}
+member {
+  id: 0xaf67dd7d
+  name: "ops"
+  type_id: 0xecd302d8
+  offset: 1152
+}
+member {
+  id: 0xaf890e76
+  name: "ops"
+  type_id: 0x02067bf4
+  offset: 768
+}
+member {
+  id: 0xaf8c0a54
+  name: "ops"
+  type_id: 0x070c84c2
+  offset: 1792
+}
+member {
+  id: 0xaf8c0d6f
+  name: "ops"
+  type_id: 0x070c84c2
+  offset: 7360
+}
+member {
+  id: 0xaf8fa4ab
+  name: "ops"
+  type_id: 0x04a3cf0f
+  offset: 320
+}
+member {
+  id: 0xaf9319f9
+  name: "ops"
+  type_id: 0x18195af6
+}
+member {
+  id: 0xaf94908c
+  name: "ops"
+  type_id: 0x1f94d6ec
+  offset: 2496
+}
+member {
+  id: 0xaf94f770
+  name: "ops"
+  type_id: 0x1ff0a4fc
+  offset: 448
+}
+member {
+  id: 0xaf9670dd
+  name: "ops"
+  type_id: 0x1d749f2c
+  offset: 64
+}
+member {
+  id: 0xaf967574
+  name: "ops"
+  type_id: 0x1d749f2c
+  offset: 7360
+}
+member {
+  id: 0xaf9730e8
+  name: "ops"
+  type_id: 0x1c31d99b
+  offset: 384
+}
+member {
+  id: 0xaf999893
+  name: "ops"
+  type_id: 0x129cd18b
+  offset: 64
+}
+member {
+  id: 0xafa3b9d2
+  name: "ops"
+  type_id: 0x28b7a3b7
+  offset: 8704
+}
+member {
+  id: 0xafaa08ab
+  name: "ops"
+  type_id: 0x2101ca02
+  offset: 128
+}
+member {
+  id: 0xafaa22ec
+  name: "ops"
+  type_id: 0x212a866f
+  offset: 192
+}
+member {
+  id: 0xafaa588c
+  name: "ops"
+  type_id: 0x215cce2d
+  offset: 64
+}
+member {
+  id: 0xafb0005b
+  name: "ops"
+  type_id: 0x3b0a5ea0
+  offset: 896
+}
+member {
+  id: 0xafb00cde
+  name: "ops"
+  type_id: 0x3b050890
+  offset: 2368
+}
+member {
+  id: 0xafb04961
+  name: "ops"
+  type_id: 0x3b416cd7
+  offset: 768
+}
+member {
+  id: 0xafb05421
+  name: "ops"
+  type_id: 0x3b55ca81
+  offset: 7360
+}
+member {
+  id: 0xafb099be
+  name: "ops"
+  type_id: 0x3b991d29
+}
+member {
+  id: 0xafb0c299
+  name: "ops"
+  type_id: 0x3bcbf8c5
+  offset: 128
+}
+member {
+  id: 0xafb0ea3a
+  name: "ops"
+  type_id: 0x3bedc96c
+  offset: 1472
+}
+member {
+  id: 0xafb1407e
+  name: "ops"
+  type_id: 0x3a40dd6c
+}
+member {
+  id: 0xafb144a9
+  name: "ops"
+  type_id: 0x3a44a1d1
+  offset: 256
+}
+member {
+  id: 0xafb162c8
+  name: "ops"
+  type_id: 0x3a6574c9
+  offset: 1024
+}
+member {
+  id: 0xafb1995f
+  name: "ops"
+  type_id: 0x3a99572b
+  offset: 256
+}
+member {
+  id: 0xafb1da32
+  name: "ops"
+  type_id: 0x3ada915e
+}
+member {
+  id: 0xafb21f1d
+  name: "ops"
+  type_id: 0x391f15ea
+  offset: 256
+}
+member {
+  id: 0xafb27774
+  name: "ops"
+  type_id: 0x3970a02f
+  offset: 448
+}
+member {
+  id: 0xafb2dbed
+  name: "ops"
+  type_id: 0x39db4e33
+}
+member {
+  id: 0xafb2f000
+  name: "ops"
+  type_id: 0x39f008d1
+  offset: 256
+}
+member {
+  id: 0xafb31081
+  name: "ops"
+  type_id: 0x381b3a0b
+  offset: 512
+}
+member {
+  id: 0xafb33ebc
+  name: "ops"
+  type_id: 0x383c223a
+  offset: 704
+}
+member {
+  id: 0xafb34bdd
+  name: "ops"
+  type_id: 0x384cb9bb
+  offset: 320
+}
+member {
+  id: 0xafb370a4
+  name: "ops"
+  type_id: 0x387c15ae
+  offset: 7424
+}
+member {
+  id: 0xafb39a5b
+  name: "ops"
+  type_id: 0x38936843
+  offset: 6592
+}
+member {
+  id: 0xafb3c733
+  name: "ops"
+  type_id: 0x38c3714d
+  offset: 64
+}
+member {
+  id: 0xafb3d811
+  name: "ops"
+  type_id: 0x38dfb9f9
+  offset: 2304
+}
+member {
+  id: 0xafb429f1
+  name: "ops"
+  type_id: 0x3f2e25a0
+  offset: 448
+}
+member {
+  id: 0xafb42e86
+  name: "ops"
+  type_id: 0x3f2e25a0
+}
+member {
+  id: 0xafb42f46
+  name: "ops"
+  type_id: 0x3f2b0487
+  offset: 64
+}
+member {
+  id: 0xafb4389a
+  name: "ops"
+  type_id: 0x3f3cd89a
+  offset: 64
+}
+member {
+  id: 0xafb45a06
+  name: "ops"
+  type_id: 0x3f54a013
+  offset: 7680
+}
+member {
+  id: 0xafb48ad1
+  name: "ops"
+  type_id: 0x3f80d49e
+  offset: 896
+}
+member {
+  id: 0xafb48c4a
+  name: "ops"
+  type_id: 0x3f86a385
+  offset: 3456
+}
+member {
+  id: 0xafb54acd
+  name: "ops"
+  type_id: 0x3e4e8ffc
+  offset: 64
+}
+member {
+  id: 0xafb56e5a
+  name: "ops"
+  type_id: 0x3e6884d4
+  offset: 1280
+}
+member {
+  id: 0xafb5762b
+  name: "ops"
+  type_id: 0x3e7f4a71
+  offset: 128
+}
+member {
+  id: 0xafb57f42
+  name: "ops"
+  type_id: 0x3e7f4a71
+  offset: 256
+}
+member {
+  id: 0xafb5aa85
+  name: "ops"
+  type_id: 0x3ea63461
+  offset: 7424
+}
+member {
+  id: 0xafb5df3d
+  name: "ops"
+  type_id: 0x3edf9e36
+}
+member {
+  id: 0xafb5e416
+  name: "ops"
+  type_id: 0x3eed77c0
+  offset: 128
+}
+member {
+  id: 0xafb5edd4
+  name: "ops"
+  type_id: 0x3eed77c0
+}
+member {
+  id: 0xafb61a8a
+  name: "ops"
+  type_id: 0x3d1ec847
+  offset: 64
+}
+member {
+  id: 0xafb6613a
+  name: "ops"
+  type_id: 0x3d669bc4
+  offset: 6208
+}
+member {
+  id: 0xafb6744b
+  name: "ops"
+  type_id: 0x3d739fcb
+  offset: 448
+}
+member {
+  id: 0xafb67db2
+  name: "ops"
+  type_id: 0x3d75d87c
+  offset: 192
+}
+member {
+  id: 0xafb67e05
+  name: "ops"
+  type_id: 0x3d77643f
+  offset: 128
+}
+member {
+  id: 0xafb6848a
+  name: "ops"
+  type_id: 0x3d8debd3
+  offset: 128
+}
+member {
+  id: 0xafb69089
+  name: "ops"
+  type_id: 0x3d902adb
+}
+member {
+  id: 0xafb697a5
+  name: "ops"
+  type_id: 0x3d905687
+  offset: 1472
+}
+member {
+  id: 0xafb6b991
+  name: "ops"
+  type_id: 0x3db932c3
+}
+member {
+  id: 0xafb7079a
+  name: "ops"
+  type_id: 0x3c04a29e
+  offset: 5248
+}
+member {
+  id: 0xafb7534d
+  name: "ops"
+  type_id: 0x3c53eefd
+}
+member {
+  id: 0xafb75edc
+  name: "ops"
+  type_id: 0x3c5b16b9
+  offset: 6848
+}
+member {
+  id: 0xafb7802d
+  name: "ops"
+  type_id: 0x3c894cca
+  offset: 128
+}
+member {
+  id: 0xafb79c37
+  name: "ops"
+  type_id: 0x3c945dac
+  offset: 192
+}
+member {
+  id: 0xafb7b52f
+  name: "ops"
+  type_id: 0x3cb3f183
+  offset: 1280
+}
+member {
+  id: 0xafb7bb9b
+  name: "ops"
+  type_id: 0x3cb3f183
+  offset: 192
+}
+member {
+  id: 0xafb7bdd4
+  name: "ops"
+  type_id: 0x3cb1656a
+  offset: 7424
+}
+member {
+  id: 0xafb7f6ab
+  name: "ops"
+  type_id: 0x3cf60872
+}
+member {
+  id: 0xafb84cb3
+  name: "ops"
+  type_id: 0x334820f1
+  offset: 5056
+}
+member {
+  id: 0xafb870eb
+  name: "ops"
+  type_id: 0x33704847
+}
+member {
+  id: 0xafb87bd8
+  name: "ops"
+  type_id: 0x337f6d5e
+  offset: 7488
+}
+member {
+  id: 0xafb89c64
+  name: "ops"
+  type_id: 0x3398263c
+  offset: 64
+}
+member {
+  id: 0xafb8df5d
+  name: "ops"
+  type_id: 0x33dd2e45
+  offset: 3904
+}
+member {
+  id: 0xafb936a4
+  name: "ops"
+  type_id: 0x32360795
+}
+member {
+  id: 0xafb96aba
+  name: "ops"
+  type_id: 0x326a19f7
+}
+member {
+  id: 0xafb9c47f
+  name: "ops"
+  type_id: 0x32c03da9
+  offset: 64
+}
+member {
+  id: 0xafb9c62e
+  name: "ops"
+  type_id: 0x32cc2bc8
+  offset: 896
+}
+member {
+  id: 0xafb9c70a
+  name: "ops"
+  type_id: 0x32cf602c
+  offset: 192
+}
+member {
+  id: 0xafb9e195
+  name: "ops"
+  type_id: 0x32e20efe
+  offset: 17088
+}
+member {
+  id: 0xafba3fb1
+  name: "ops"
+  type_id: 0x313bf3b2
+  offset: 64
+}
+member {
+  id: 0xafba51ac
+  name: "ops"
+  type_id: 0x3155eebe
+  offset: 64
+}
+member {
+  id: 0xafba592d
+  name: "ops"
+  type_id: 0x31598e0f
+}
+member {
+  id: 0xafba6953
+  name: "ops"
+  type_id: 0x3162e876
+  offset: 512
+}
+member {
+  id: 0xafba6b74
+  name: "ops"
+  type_id: 0x3162e876
+  offset: 8448
+}
+member {
+  id: 0xafbac999
+  name: "ops"
+  type_id: 0x31c93a7f
+}
+member {
+  id: 0xafbacb95
+  name: "ops"
+  type_id: 0x31cb364e
+}
+member {
+  id: 0xafbb0869
+  name: "ops"
+  type_id: 0x3000402d
+  offset: 7552
+}
+member {
+  id: 0xafbb0d65
+  name: "ops"
+  type_id: 0x30092723
+  offset: 64
+}
+member {
+  id: 0xafbb285d
+  name: "ops"
+  type_id: 0x302f894e
+  offset: 448
+}
+member {
+  id: 0xafbb3d7c
+  name: "ops"
+  type_id: 0x30351611
+  offset: 192
+}
+member {
+  id: 0xafbb6c89
+  name: "ops"
+  type_id: 0x3068cb56
+  offset: 64
+}
+member {
+  id: 0xafbba914
+  name: "ops"
+  type_id: 0x30a17e95
+  offset: 192
+}
+member {
+  id: 0xafbbc28b
+  name: "ops"
+  type_id: 0x30cae1c6
+  offset: 192
+}
+member {
+  id: 0xafbbdd14
+  name: "ops"
+  type_id: 0x30ddb79e
+}
+member {
+  id: 0xafbc454f
+  name: "ops"
+  type_id: 0x37429bf2
+  offset: 448
+}
+member {
+  id: 0xafbc5acb
+  name: "ops"
+  type_id: 0x375e894e
+  offset: 64
+}
+member {
+  id: 0xafbc9ca0
+  name: "ops"
+  type_id: 0x379acd09
+  offset: 3392
+}
+member {
+  id: 0xafbcd9c0
+  name: "ops"
+  type_id: 0x37d96371
+}
+member {
+  id: 0xafbcdef5
+  name: "ops"
+  type_id: 0x37d8983e
+  offset: 7872
+}
+member {
+  id: 0xafbcece4
+  name: "ops"
+  type_id: 0x37e8a64c
+  offset: 64
+}
+member {
+  id: 0xafbdad0b
+  name: "ops"
+  type_id: 0x36ad2dd6
+  offset: 9472
+}
+member {
+  id: 0xafbdc216
+  name: "ops"
+  type_id: 0x36cb77db
+  offset: 128
+}
+member {
+  id: 0xafbdd229
+  name: "ops"
+  type_id: 0x36d130d1
+  offset: 832
+}
+member {
+  id: 0xafbe4034
+  name: "ops"
+  type_id: 0x35403ce3
+  offset: 256
+}
+member {
+  id: 0xafbe447e
+  name: "ops"
+  type_id: 0x35403ce3
+  offset: 64
+}
+member {
+  id: 0xafbe4be2
+  name: "ops"
+  type_id: 0x3542336e
+  offset: 576
+}
+member {
+  id: 0xafbed153
+  name: "ops"
+  type_id: 0x35d1f0b8
+}
+member {
+  id: 0xafbeda4b
+  name: "ops"
+  type_id: 0x35d1f0b8
+  offset: 512
+}
+member {
+  id: 0xafbf01cd
+  name: "ops"
+  type_id: 0x34016e82
+}
+member {
+  id: 0xafbf24b1
+  name: "ops"
+  type_id: 0x34258007
+  offset: 384
+}
+member {
+  id: 0xafbf3a8e
+  name: "ops"
+  type_id: 0x34363f4c
+  offset: 7424
+}
+member {
+  id: 0xafbf4c24
+  name: "ops"
+  type_id: 0x344c87c1
+}
+member {
+  id: 0xafbf66ec
+  name: "ops"
+  type_id: 0x3467ed98
+  offset: 2560
+}
+member {
+  id: 0xafbf6da2
+  name: "ops"
+  type_id: 0x346113fd
+  offset: 7424
+}
+member {
+  id: 0xafbf8112
+  name: "ops"
+  type_id: 0x348873b3
+  offset: 128
+}
+member {
+  id: 0xafbf8b61
+  name: "ops"
+  type_id: 0x348822f4
+  offset: 11200
+}
+member {
+  id: 0xafea7a4d
+  name: "ops"
+  type_id: 0x617aeeb3
+}
+member {
+  id: 0xafec90d0
+  name: "ops"
+  type_id: 0x6798ba36
+  offset: 192
+}
+member {
+  id: 0xafed359c
+  name: "ops"
+  type_id: 0x66326f89
+  offset: 1472
+}
+member {
+  id: 0xaffd3962
+  name: "ops"
+  type_id: 0x763d201a
+  offset: 64
+}
+member {
+  id: 0xafffd6e6
+  name: "ops"
+  type_id: 0x74d29cf1
+  offset: 288
+}
+member {
+  id: 0x5d38f1ad
+  name: "ops_lock"
+  type_id: 0xa7c362b0
+  offset: 7488
+}
+member {
+  id: 0x5d38f3c2
+  name: "ops_lock"
+  type_id: 0xa7c362b0
+  offset: 640
+}
+member {
+  id: 0xf6548174
+  name: "opt"
+  type_id: 0x1eafac69
+}
+member {
+  id: 0xf6637b68
+  name: "opt"
+  type_id: 0x295c7202
+  offset: 128
+}
+member {
+  id: 0xf6da3e67
+  name: "opt"
+  type_id: 0x901d84ad
+  offset: 32
+}
+member {
+  id: 0x881f9a02
+  name: "opt_addr_space"
+  type_id: 0x2ee07f9d
+  offset: 192
+}
+member {
+  id: 0x3b247fdc
+  name: "opt_failed"
+  type_id: 0x6d7f5ff6
+  offset: 392
+}
+member {
+  id: 0xb8d181f5
+  name: "opt_mapping_size"
+  type_id: 0x2f5fcbf3
+  offset: 1472
+}
+member {
+  id: 0xb435ce80
+  name: "opt_sectors"
+  type_id: 0x4585663f
+  offset: 4064
+}
+member {
+  id: 0x1bba67b5
+  name: "optical_wavelength"
+  type_id: 0x7584e7da
+}
+member {
+  id: 0x443d5e49
+  name: "optimistic_dad"
+  type_id: 0x0faae5b1
+  offset: 1056
+}
+member {
+  id: 0x723f715c
+  name: "optional"
+  type_id: 0x295c7202
+  offset: 400
+}
+member {
+  id: 0xd221974b
+  name: "options"
+  type_id: 0x120540d1
+  offset: 1536
+}
+member {
+  id: 0xd2461c0b
+  name: "options"
+  type_id: 0x7584e7da
+}
+member {
+  id: 0xd2761d8a
+  name: "options"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xd2994b93
+  name: "options"
+  type_id: 0xaad72634
+  offset: 352
+}
+member {
+  id: 0xd2d5b653
+  name: "options"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xd2d5bfd0
+  name: "options"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0xf3390048
+  name: "options_len"
+  type_id: 0x295c7202
+  offset: 576
+}
+member {
+  id: 0x39c46a92
+  name: "opts"
+  type_id: 0x1eafac69
+  offset: 64
+}
+member {
+  id: 0xf12db66c
+  name: "opts_mutex"
+  type_id: 0x2360e10b
+  offset: 256
+}
+member {
+  id: 0xb53fd5a4
+  name: "order"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xb55dea4a
+  name: "order"
+  type_id: 0x84115126
+  offset: 64
+}
+member {
+  id: 0xb59c77a7
+  name: "order"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xb59c78b7
+  name: "order"
+  type_id: 0x4585663f
+  offset: 1184
+}
+member {
+  id: 0xb59c7b0e
+  name: "order"
+  type_id: 0x4585663f
+  offset: 384
+}
+member {
+  id: 0xb59c7e7d
+  name: "order"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xb5bed787
+  name: "order"
+  type_id: 0x6720d32f
+  offset: 768
+}
+member {
+  id: 0x434797bc
+  name: "order_per_bit"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0xb4c9ae2c
+  name: "orders"
+  type_id: 0xf15ca227
+}
+member {
+  id: 0xc9fdc545
+  name: "orgn"
+  type_id: 0xc9082b19
+  offset: 7
+  bitsize: 2
+}
+member {
+  id: 0xf43c501f
+  name: "orientation"
+  type_id: 0xcf497245
+  offset: 8128
+}
+member {
+  id: 0xf49dde6b
+  name: "orientation"
+  type_id: 0x6eca601c
+}
+member {
+  id: 0xf1103292
+  name: "orientation_aware"
+  type_id: 0x4585663f
+  offset: 256
+  bitsize: 1
+}
+member {
+  id: 0x0c4c221e
+  name: "orig_addr"
+  type_id: 0x92233392
+  offset: 640
+}
+member {
+  id: 0x0c63d6dd
+  name: "orig_addr"
+  type_id: 0xbdd18903
+}
+member {
+  id: 0x25ffe762
+  name: "orig_description"
+  type_id: 0x3e10b518
+}
+member {
+  id: 0xa5659f65
+  name: "orig_dir"
+  type_id: 0x6d7f5ff6
+  offset: 224
+}
+member {
+  id: 0x90cadd40
+  name: "orig_flags"
+  type_id: 0xc9082b19
+  offset: 256
+}
+member {
+  id: 0x4b1eff4a
+  name: "orig_idx"
+  type_id: 0x4585663f
+  offset: 352
+}
+member {
+  id: 0x12efd327
+  name: "orig_input"
+  type_id: 0x2da4f7fd
+  offset: 192
+}
+member {
+  id: 0xa1f9b8b2
+  name: "orig_len"
+  type_id: 0x295c7202
+  offset: 80
+}
+member {
+  id: 0x20beddbc
+  name: "orig_mag"
+  type_id: 0x6720d32f
+  offset: 288
+}
+member {
+  id: 0x1b6ebf70
+  name: "orig_mpwr"
+  type_id: 0x6720d32f
+  offset: 320
+}
+member {
+  id: 0x4e8c3d5f
+  name: "orig_nents"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x0cfdd1a6
+  name: "orig_offset"
+  type_id: 0xd41e888f
+}
+member {
+  id: 0x583ed41a
+  name: "orig_output"
+  type_id: 0x2d2736e0
+  offset: 128
+}
+member {
+  id: 0x8d800e13
+  name: "orig_overflow_handler"
+  type_id: 0x74a50355
+  offset: 8064
+}
+member {
+  id: 0xcbc331da
+  name: "orig_pmd"
+  type_id: 0xae60496e
+}
+member {
+  id: 0x7ddf8761
+  name: "orig_prog"
+  type_id: 0x2a47192f
+  offset: 512
+}
+member {
+  id: 0x364e8ee0
+  name: "orig_pte"
+  type_id: 0xe0bb64fa
+}
+member {
+  id: 0x376bb83b
+  name: "orig_ret_vaddr"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0x521c341e
+  name: "orig_x0"
+  type_id: 0x92233392
+  offset: 2176
+}
+member {
+  id: 0x6ba699d3
+  name: "orphan"
+  type_id: 0x6d7f5ff6
+  offset: 32
+}
+member {
+  id: 0x6ba69c1b
+  name: "orphan"
+  type_id: 0x6d7f5ff6
+  offset: 960
+}
+member {
+  id: 0x304e36cb
+  name: "orphan_count"
+  type_id: 0x1bf16028
+  offset: 2816
+}
+member {
+  id: 0xd2413ce2
+  name: "os_desc"
+  type_id: 0x0b245640
+  offset: 64
+}
+member {
+  id: 0x64ca3b41
+  name: "os_desc_config"
+  type_id: 0x0effc5a1
+  offset: 384
+}
+member {
+  id: 0x4f63baa6
+  name: "os_desc_n"
+  type_id: 0x4585663f
+  offset: 512
+}
+member {
+  id: 0xa75386f3
+  name: "os_desc_pending"
+  type_id: 0x4585663f
+  offset: 1185
+  bitsize: 1
+}
+member {
+  id: 0xca6652f0
+  name: "os_desc_req"
+  type_id: 0x2f99f236
+  offset: 128
+}
+member {
+  id: 0xf4f54d8b
+  name: "os_desc_table"
+  type_id: 0x2e5f7dbc
+  offset: 448
+}
+member {
+  id: 0x8c00951a
+  name: "osd_name"
+  type_id: 0xf8cd45b5
+  offset: 128
+}
+member {
+  id: 0x35de41cb
+  name: "oseq"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x35de4cf0
+  name: "oseq"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xffb0f6bf
+  name: "oseq_hi"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x35649aee
+  name: "osi"
+  type_id: 0x129d9eba
+}
+member {
+  id: 0x8d9b8608
+  name: "osid"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0x8d9b8e3b
+  name: "osid"
+  type_id: 0xc9082b19
+  offset: 480
+}
+member {
+  id: 0xc8aec238
+  name: "ospeed"
+  type_id: 0xac0d3a85
+  offset: 672
+}
+member {
+  id: 0x27281226
+  name: "osq"
+  type_id: 0x54bb1a65
+  offset: 128
+}
+member {
+  id: 0x27281267
+  name: "osq"
+  type_id: 0x54bb1a65
+  offset: 96
+}
+member {
+  id: 0x9dbc540c
+  name: "otg"
+  type_id: 0x0db3ac0f
+  offset: 256
+}
+member {
+  id: 0xdf79facb
+  name: "otg_caps"
+  type_id: 0x093024fc
+  offset: 8384
+}
+member {
+  id: 0x5b0f4ad4
+  name: "otg_port"
+  type_id: 0x295c7202
+  offset: 264
+}
+member {
+  id: 0x48b8b314
+  name: "otg_rev"
+  type_id: 0x914dbfdc
+}
+member {
+  id: 0xbcefa9fc
+  name: "other"
+  type_id: 0x31e58fe0
+  offset: 960
+}
+member {
+  id: 0xbccd0941
+  name: "other_count"
+  type_id: 0xe62ebf07
+  offset: 224
+}
+member {
+  id: 0x73256980
+  name: "other_data"
+  type_id: 0xd196eb43
+}
+member {
+  id: 0x98cf754c
+  name: "oublock"
+  type_id: 0x33756485
+  offset: 4608
+}
+member {
+  id: 0x113e9160
+  name: "oui"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xb30e5514
+  name: "out"
+  type_id: 0xff8884d8
+  offset: 160
+}
+member {
+  id: 0xb396f982
+  name: "out"
+  type_id: 0x6720d32f
+  offset: 1056
+}
+member {
+  id: 0xb39ca275
+  name: "out"
+  type_id: 0x6d7f5ff6
+  offset: 472
+}
+member {
+  id: 0xb3b45209
+  name: "out"
+  type_id: 0x4585663f
+  offset: 1024
+}
+member {
+  id: 0xb3b4582d
+  name: "out"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xb3c37f91
+  name: "out"
+  type_id: 0x32a623d7
+  offset: 128
+}
+member {
+  id: 0xb3c8cf65
+  name: "out"
+  type_id: 0x391f15ea
+}
+member {
+  id: 0xb3fffded
+  name: "out"
+  type_id: 0x0e2680c2
+  offset: 1856
+}
+member {
+  id: 0xc077ad8d
+  name: "out_batch"
+  type_id: 0xedf277ba
+  offset: 64
+}
+member {
+  id: 0x5d3ad02c
+  name: "out_ctx"
+  type_id: 0x34d79405
+  offset: 128
+}
+member {
+  id: 0x4b42e885
+  name: "out_epnum"
+  type_id: 0x4585663f
+  offset: 8288
+}
+member {
+  id: 0x3bf9d57e
+  name: "out_fence"
+  type_id: 0x030b9acf
+  offset: 704
+}
+member {
+  id: 0x87de687a
+  name: "out_fence_ptr"
+  type_id: 0x3f979b84
+  offset: 320
+}
+member {
+  id: 0x87de6f16
+  name: "out_fence_ptr"
+  type_id: 0x3f979b84
+  offset: 256
+}
+member {
+  id: 0xd969ee21
+  name: "out_len"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x564c6f2c
+  name: "out_of_int_time"
+  type_id: 0x295c7202
+  offset: 1088
+}
+member {
+  id: 0x21d1ea91
+  name: "out_q_ctx"
+  type_id: 0x09b350b9
+  offset: 7488
+}
+member {
+  id: 0x9f7717b3
+  name: "outbound_addr"
+  type_id: 0x25e45be7
+  offset: 512
+}
+member {
+  id: 0xef8e399f
+  name: "outbuf"
+  type_id: 0x0483e6f8
+  offset: 3712
+}
+member {
+  id: 0xd729cec6
+  name: "outbuf_size"
+  type_id: 0x6720d32f
+  offset: 3776
+}
+member {
+  id: 0x2e0d99c7
+  name: "outer_lock"
+  type_id: 0xf313e71a
+  offset: 4704
+}
+member {
+  id: 0x2350fb28
+  name: "outer_mode"
+  type_id: 0x3f0693b8
+  offset: 5872
+}
+member {
+  id: 0xc2a5c4de
+  name: "output"
+  type_id: 0x4585663f
+  offset: 1154
+  bitsize: 1
+}
+member {
+  id: 0xdf6601ac
+  name: "output"
+  type_id: 0x2d4be55c
+  offset: 2496
+}
+member {
+  id: 0xdf660d9c
+  name: "output"
+  type_id: 0x2d4be55c
+  offset: 192
+}
+member {
+  id: 0xdf666814
+  name: "output"
+  type_id: 0x2d2736e0
+  offset: 384
+}
+member {
+  id: 0xdf66ef46
+  name: "output"
+  type_id: 0x2da631b6
+  offset: 320
+}
+member {
+  id: 0xdfc2f312
+  name: "output"
+  type_id: 0x89bda23d
+}
+member {
+  id: 0xd4de9aa7
+  name: "output_bus_cfg"
+  type_id: 0x4b7d6e32
+  offset: 256
+}
+member {
+  id: 0xf843f01c
+  name: "output_param1"
+  type_id: 0xe276adef
+  offset: 96
+}
+member {
+  id: 0x2480f8c7
+  name: "output_param2"
+  type_id: 0xe276adef
+  offset: 128
+}
+member {
+  id: 0x33a8bbd2
+  name: "output_poll_changed"
+  type_id: 0x0d066629
+  offset: 128
+}
+member {
+  id: 0x5303434e
+  name: "output_poll_work"
+  type_id: 0xf1159c31
+  offset: 4288
+}
+member {
+  id: 0x734f3a83
+  name: "output_queue"
+  type_id: 0x2e8d5f05
+  offset: 576
+}
+member {
+  id: 0x4ba4fb13
+  name: "output_queue_tailp"
+  type_id: 0x01336e66
+  offset: 640
+}
+member {
+  id: 0x61e4c7b9
+  name: "output_report"
+  type_id: 0x2d076786
+  offset: 576
+}
+member {
+  id: 0xf2064612
+  name: "outputmode"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xe10968b1
+  name: "outreq"
+  type_id: 0x2f99f236
+  offset: 320
+}
+member {
+  id: 0x598dda18
+  name: "outstanding_lock"
+  type_id: 0xf313e71a
+  offset: 960
+}
+member {
+  id: 0x0687f65a
+  name: "outstanding_reqs"
+  type_id: 0x33756485
+  offset: 1024
+}
+member {
+  id: 0x25127366
+  name: "outstanding_tasks"
+  type_id: 0x33756485
+  offset: 896
+}
+member {
+  id: 0x0cbf51a8
+  name: "outstanding_txns"
+  type_id: 0x6720d32f
+  offset: 864
+}
+member {
+  id: 0x45437171
+  name: "over_curr_limits"
+  type_id: 0x9ceff924
+  offset: 1088
+}
+member {
+  id: 0xc291d0e2
+  name: "over_current_detection"
+  type_id: 0x4585663f
+  offset: 1735
+  bitsize: 1
+}
+member {
+  id: 0x5b8c9461
+  name: "over_current_protection"
+  type_id: 0x4585663f
+  offset: 1734
+  bitsize: 1
+}
+member {
+  id: 0xe8b2a514
+  name: "over_temp_detection"
+  type_id: 0x4585663f
+  offset: 1738
+  bitsize: 1
+}
+member {
+  id: 0xbb30bca4
+  name: "over_voltage_detection"
+  type_id: 0x4585663f
+  offset: 1736
+  bitsize: 1
+}
+member {
+  id: 0xabedc5d6
+  name: "over_voltage_limits"
+  type_id: 0x9ceff924
+  offset: 1184
+}
+member {
+  id: 0x4cbc83db
+  name: "overflow"
+  type_id: 0x4585663f
+  offset: 41
+  bitsize: 1
+}
+member {
+  id: 0xf010517f
+  name: "overflow"
+  type_id: 0x6d7f5ff6
+  offset: 136
+}
+member {
+  id: 0x25f0f203
+  name: "overflow_event"
+  type_id: 0x292e42d8
+  offset: 1280
+}
+member {
+  id: 0xad86c319
+  name: "overflow_handler"
+  type_id: 0x74a50355
+  offset: 7936
+}
+member {
+  id: 0xa85cd282
+  name: "overflow_handler_context"
+  type_id: 0x18bd6530
+  offset: 8000
+}
+member {
+  id: 0x39d6cdec
+  name: "overflow_work"
+  type_id: 0xb95bf932
+}
+member {
+  id: 0x4c799d4b
+  name: "overhead"
+  type_id: 0x914dbfdc
+  offset: 224
+}
+member {
+  id: 0x4c8ffe38
+  name: "overhead"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x4ceb7fb5
+  name: "overhead"
+  type_id: 0x03a4acbb
+  offset: 192
+}
+member {
+  id: 0x02ff46d2
+  name: "overlimits"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0x305446a2
+  name: "overload"
+  type_id: 0x6720d32f
+  offset: 320
+}
+member {
+  id: 0x9b3e66dc
+  name: "overloaded"
+  type_id: 0x6720d32f
+  offset: 13120
+}
+member {
+  id: 0x9b3e67df
+  name: "overloaded"
+  type_id: 0x6720d32f
+  offset: 352
+}
+member {
+  id: 0xb4447832
+  name: "overrange"
+  type_id: 0x6720d32f
+  offset: 288
+}
+member {
+  id: 0xb4e4bcf1
+  name: "override_edid"
+  type_id: 0x6d7f5ff6
+  offset: 13120
+}
+member {
+  id: 0x8dc5ba0f
+  name: "override_halt_poll_ns"
+  type_id: 0x6d7f5ff6
+  offset: 34272
+}
+member {
+  id: 0xf1d2ff61
+  name: "override_only"
+  type_id: 0xe62ebf07
+  offset: 256
+}
+member {
+  id: 0x455a2c83
+  name: "overrun"
+  type_id: 0xe62ebf07
+  offset: 256
+}
+member {
+  id: 0x455a2f0c
+  name: "overrun"
+  type_id: 0xe62ebf07
+  offset: 224
+}
+member {
+  id: 0x459593a0
+  name: "overrun"
+  type_id: 0x299c4193
+  offset: 1088
+}
+member {
+  id: 0x45db2160
+  name: "overrun"
+  type_id: 0x6720d32f
+  offset: 224
+}
+member {
+  id: 0x273a9876
+  name: "overrun_backoff"
+  type_id: 0xf1159c31
+  offset: 5632
+}
+member {
+  id: 0xdf775a49
+  name: "overrun_backoff_time_ms"
+  type_id: 0xc9082b19
+  offset: 6720
+}
+member {
+  id: 0x144e40b6
+  name: "overscan"
+  type_id: 0x4585663f
+  offset: 288
+}
+member {
+  id: 0xd6f782b4
+  name: "oversize_pkts"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0x2b2449ce
+  name: "overutilized"
+  type_id: 0x6720d32f
+  offset: 352
+}
+member {
+  id: 0x1ce72760
+  name: "overvoltage_limit_uv"
+  type_id: 0x6720d32f
+  offset: 320
+}
+member {
+  id: 0xa98ba033
+  name: "overwrite"
+  type_id: 0x2f892792
+  offset: 384
+}
+member {
+  id: 0xa9c30b71
+  name: "overwrite"
+  type_id: 0x6720d32f
+  offset: 224
+}
+member {
+  id: 0x9e1f254a
+  name: "overwrite_state"
+  type_id: 0x3a534a58
+  offset: 256
+}
+member {
+  id: 0xa497f11a
+  name: "overwrite_tmo"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0x2fa9923d
+  name: "ovr_an_inband"
+  type_id: 0x6d7f5ff6
+  offset: 120
+}
+member {
+  id: 0xbb303df3
+  name: "owned"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x3daa5397
+  name: "owned_by_drv_count"
+  type_id: 0x74d29cf1
+  offset: 6112
+}
+member {
+  id: 0xba81f228
+  name: "owned_ports"
+  type_id: 0x33756485
+  offset: 4864
+}
+member {
+  id: 0x4a2d5a58
+  name: "owner"
+  type_id: 0xb02b353a
+  offset: 64
+}
+member {
+  id: 0x4a2d5eb9
+  name: "owner"
+  type_id: 0xb02b353a
+}
+member {
+  id: 0x4a7477d4
+  name: "owner"
+  type_id: 0xe90b32b7
+  offset: 1824
+}
+member {
+  id: 0x4a8064ec
+  name: "owner"
+  type_id: 0x1d19a9d5
+  offset: 192
+}
+member {
+  id: 0x4a8065b5
+  name: "owner"
+  type_id: 0x1d19a9d5
+  offset: 6592
+}
+member {
+  id: 0x4a806a1e
+  name: "owner"
+  type_id: 0x1d19a9d5
+  offset: 5376
+}
+member {
+  id: 0x4a806db7
+  name: "owner"
+  type_id: 0x1d19a9d5
+  offset: 384
+}
+member {
+  id: 0x4a85c01a
+  name: "owner"
+  type_id: 0x18bd6530
+  offset: 960
+}
+member {
+  id: 0x4a85c59f
+  name: "owner"
+  type_id: 0x18bd6530
+  offset: 1088
+}
+member {
+  id: 0x4a85c6ab
+  name: "owner"
+  type_id: 0x18bd6530
+  offset: 2112
+}
+member {
+  id: 0x4a85c842
+  name: "owner"
+  type_id: 0x18bd6530
+  offset: 256
+}
+member {
+  id: 0x4a85cb53
+  name: "owner"
+  type_id: 0x18bd6530
+  offset: 832
+}
+member {
+  id: 0x4a85cf2e
+  name: "owner"
+  type_id: 0x18bd6530
+  offset: 320
+}
+member {
+  id: 0x4a8e4b8e
+  name: "owner"
+  type_id: 0x133c86d1
+  offset: 1984
+}
+member {
+  id: 0x4a96506d
+  name: "owner"
+  type_id: 0x0b27dc43
+  offset: 704
+}
+member {
+  id: 0x4a9650a3
+  name: "owner"
+  type_id: 0x0b27dc43
+  offset: 1408
+}
+member {
+  id: 0x4a9651ea
+  name: "owner"
+  type_id: 0x0b27dc43
+  offset: 832
+}
+member {
+  id: 0x4a965250
+  name: "owner"
+  type_id: 0x0b27dc43
+}
+member {
+  id: 0x4a9652fb
+  name: "owner"
+  type_id: 0x0b27dc43
+  offset: 256
+}
+member {
+  id: 0x4a9653c2
+  name: "owner"
+  type_id: 0x0b27dc43
+  offset: 384
+}
+member {
+  id: 0x4a965423
+  name: "owner"
+  type_id: 0x0b27dc43
+  offset: 1792
+}
+member {
+  id: 0x4a965429
+  name: "owner"
+  type_id: 0x0b27dc43
+  offset: 640
+}
+member {
+  id: 0x4a96542d
+  name: "owner"
+  type_id: 0x0b27dc43
+  offset: 1280
+}
+member {
+  id: 0x4a96554f
+  name: "owner"
+  type_id: 0x0b27dc43
+  offset: 1024
+}
+member {
+  id: 0x4a965597
+  name: "owner"
+  type_id: 0x0b27dc43
+  offset: 320
+}
+member {
+  id: 0x4a9656b1
+  name: "owner"
+  type_id: 0x0b27dc43
+  offset: 64
+}
+member {
+  id: 0x4a9658d3
+  name: "owner"
+  type_id: 0x0b27dc43
+  offset: 1344
+}
+member {
+  id: 0x4a9658d4
+  name: "owner"
+  type_id: 0x0b27dc43
+  offset: 7296
+}
+member {
+  id: 0x4a9658f6
+  name: "owner"
+  type_id: 0x0b27dc43
+  offset: 896
+}
+member {
+  id: 0x4a965a99
+  name: "owner"
+  type_id: 0x0b27dc43
+  offset: 192
+}
+member {
+  id: 0x4a965aa3
+  name: "owner"
+  type_id: 0x0b27dc43
+  offset: 960
+}
+member {
+  id: 0x4a965afe
+  name: "owner"
+  type_id: 0x0b27dc43
+  offset: 768
+}
+member {
+  id: 0x4a965b4e
+  name: "owner"
+  type_id: 0x0b27dc43
+  offset: 8512
+}
+member {
+  id: 0x4a965b58
+  name: "owner"
+  type_id: 0x0b27dc43
+  offset: 3520
+}
+member {
+  id: 0x4a965b92
+  name: "owner"
+  type_id: 0x0b27dc43
+  offset: 128
+}
+member {
+  id: 0x4a965be8
+  name: "owner"
+  type_id: 0x0b27dc43
+  offset: 1600
+}
+member {
+  id: 0x4a965c8c
+  name: "owner"
+  type_id: 0x0b27dc43
+  offset: 1152
+}
+member {
+  id: 0x4a965dc1
+  name: "owner"
+  type_id: 0x0b27dc43
+  offset: 3072
+}
+member {
+  id: 0x4a965f26
+  name: "owner"
+  type_id: 0x0b27dc43
+  offset: 1088
+}
+member {
+  id: 0x4a968e48
+  name: "owner"
+  type_id: 0x0bf2067d
+  offset: 128
+}
+member {
+  id: 0x4a96b8fe
+  name: "owner"
+  type_id: 0x0bcce092
+  offset: 384
+}
+member {
+  id: 0x4a9f2085
+  name: "owner"
+  type_id: 0x0258f96e
+  offset: 9856
+}
+member {
+  id: 0x4aa4bed9
+  name: "owner"
+  type_id: 0x39cfb49e
+  offset: 64
+}
+member {
+  id: 0x4aac2c91
+  name: "owner"
+  type_id: 0x31591df6
+}
+member {
+  id: 0x4aad1491
+  name: "owner"
+  type_id: 0x30650ba6
+  offset: 7488
+}
+member {
+  id: 0x4aad85e8
+  name: "owner"
+  type_id: 0x30f06408
+}
+member {
+  id: 0x4aeb46f7
+  name: "owner"
+  type_id: 0x763389c7
+  offset: 608
+}
+member {
+  id: 0x9241af50
+  name: "owner_cnt"
+  type_id: 0x4585663f
+  offset: 2048
+}
+member {
+  id: 0xfbf14eca
+  name: "owner_entry"
+  type_id: 0xd3c80119
+  offset: 5248
+}
+member {
+  id: 0xd7c38ca3
+  name: "owner_flags"
+  type_id: 0x4585663f
+  offset: 608
+}
+member {
+  id: 0x7e59e058
+  name: "owner_list"
+  type_id: 0xd3c80119
+  offset: 1408
+}
+member {
+  id: 0xf93cf5f3
+  name: "owner_nlportid"
+  type_id: 0xc9082b19
+  offset: 1344
+}
+member {
+  id: 0xf93cfdf4
+  name: "owner_nlportid"
+  type_id: 0xc9082b19
+  offset: 1984
+}
+member {
+  id: 0x01b6c681
+  name: "owner_v4l2_dev"
+  type_id: 0x6d7f5ff6
+  offset: 1152
+}
+member {
+  id: 0xb867d798
+  name: "owners"
+  type_id: 0xc6cbbd05
+  offset: 640
+}
+member {
+  id: 0xa6673206
+  name: "p"
+  type_id: 0xd67c82d4
+}
+member {
+  id: 0xa67023cc
+  name: "p"
+  type_id: 0xc16d487e
+}
+member {
+  id: 0xa6823329
+  name: "p"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0xa68849b8
+  name: "p"
+  type_id: 0x390efe6c
+  offset: 128
+}
+member {
+  id: 0xa6888290
+  name: "p"
+  type_id: 0x39cc14ac
+}
+member {
+  id: 0xa68c3894
+  name: "p"
+  type_id: 0x3d7c93df
+  offset: 1344
+}
+member {
+  id: 0xa68c38b1
+  name: "p"
+  type_id: 0x3d7c93df
+  offset: 896
+}
+member {
+  id: 0xa6984880
+  name: "p"
+  type_id: 0x290604c6
+}
+member {
+  id: 0xa6984f9f
+  name: "p"
+  type_id: 0x290604c6
+  offset: 1024
+}
+member {
+  id: 0xa69bf5a0
+  name: "p"
+  type_id: 0x2abfc5ab
+  offset: 64
+}
+member {
+  id: 0xa6a908af
+  name: "p"
+  type_id: 0x184052fc
+  offset: 640
+}
+member {
+  id: 0xa6a9f3e1
+  name: "p"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0xa6b18d40
+  name: "p"
+  type_id: 0x00c72527
+  offset: 64
+}
+member {
+  id: 0xa6b5d767
+  name: "p"
+  type_id: 0x049495ac
+  offset: 1088
+}
+member {
+  id: 0xa6b86434
+  name: "p"
+  type_id: 0x09290a47
+  offset: 832
+}
+member {
+  id: 0xff9c5995
+  name: "p4d"
+  type_id: 0x58545d97
+}
+member {
+  id: 0xb065acb9
+  name: "p_area"
+  type_id: 0x0c293c0a
+}
+member {
+  id: 0x0a414acb
+  name: "p_array"
+  type_id: 0x18bd6530
+  offset: 1472
+}
+member {
+  id: 0x09ae2149
+  name: "p_array_alloc_elems"
+  type_id: 0xc9082b19
+  offset: 1536
+}
+member {
+  id: 0x8eac1d28
+  name: "p_char"
+  type_id: 0x0483e6f8
+}
+member {
+  id: 0xbb05d25c
+  name: "p_const"
+  type_id: 0x391f15ea
+}
+member {
+  id: 0x654b7430
+  name: "p_cur"
+  type_id: 0x3545954a
+  offset: 1792
+}
+member {
+  id: 0xfb6e9669
+  name: "p_def"
+  type_id: 0x3545954a
+  offset: 576
+}
+member {
+  id: 0xfb6e9c37
+  name: "p_def"
+  type_id: 0x3545954a
+  offset: 1664
+}
+member {
+  id: 0x1a3fe3b0
+  name: "p_fwht_params"
+  type_id: 0x14336664
+}
+member {
+  id: 0x13aaf227
+  name: "p_h264_decode_params"
+  type_id: 0x012ee191
+}
+member {
+  id: 0xaab84514
+  name: "p_h264_pps"
+  type_id: 0x2677b70d
+}
+member {
+  id: 0x8dc726e7
+  name: "p_h264_pred_weights"
+  type_id: 0x19989612
+}
+member {
+  id: 0x724954ba
+  name: "p_h264_scaling_matrix"
+  type_id: 0x05d8e3fb
+}
+member {
+  id: 0xec2ca7d7
+  name: "p_h264_slice_params"
+  type_id: 0x3239f388
+}
+member {
+  id: 0x3ed9d615
+  name: "p_h264_sps"
+  type_id: 0x19c2748b
+}
+member {
+  id: 0xbd23d9ab
+  name: "p_hdr10_cll"
+  type_id: 0x0c17a1e0
+}
+member {
+  id: 0x37f96bb4
+  name: "p_hdr10_mastering"
+  type_id: 0x3a993d2d
+}
+member {
+  id: 0x757cd420
+  name: "p_hevc_decode_params"
+  type_id: 0x1ee5277b
+}
+member {
+  id: 0xd1f48706
+  name: "p_hevc_pps"
+  type_id: 0x00187c65
+}
+member {
+  id: 0xe859bc57
+  name: "p_hevc_scaling_matrix"
+  type_id: 0x18719537
+}
+member {
+  id: 0x4de323c8
+  name: "p_hevc_slice_params"
+  type_id: 0x1a42fd68
+}
+member {
+  id: 0x247b0c0b
+  name: "p_hevc_sps"
+  type_id: 0x286575ec
+}
+member {
+  id: 0xff3673ae
+  name: "p_mpeg2_picture"
+  type_id: 0x09cba26d
+}
+member {
+  id: 0xfba5793f
+  name: "p_mpeg2_quantisation"
+  type_id: 0x1defcbb1
+}
+member {
+  id: 0xcf05862d
+  name: "p_mpeg2_sequence"
+  type_id: 0x204e55e5
+}
+member {
+  id: 0x3b232807
+  name: "p_new"
+  type_id: 0x3545954a
+  offset: 1728
+}
+member {
+  id: 0xcbf4c251
+  name: "p_req"
+  type_id: 0x3545954a
+  offset: 448
+}
+member {
+  id: 0x0bb1b59b
+  name: "p_req_array_alloc_elems"
+  type_id: 0xc9082b19
+  offset: 352
+}
+member {
+  id: 0x82918afd
+  name: "p_req_array_enomem"
+  type_id: 0x6d7f5ff6
+  offset: 344
+}
+member {
+  id: 0x3fc3c416
+  name: "p_req_elems"
+  type_id: 0xc9082b19
+  offset: 384
+}
+member {
+  id: 0xccf61d2f
+  name: "p_req_valid"
+  type_id: 0x6d7f5ff6
+  offset: 336
+}
+member {
+  id: 0x3cafff2b
+  name: "p_s32"
+  type_id: 0x3f979b84
+}
+member {
+  id: 0x569d4082
+  name: "p_s64"
+  type_id: 0x0113dde3
+}
+member {
+  id: 0x5fce0bc2
+  name: "p_u16"
+  type_id: 0x2ec35650
+}
+member {
+  id: 0x5fd0587d
+  name: "p_u16"
+  type_id: 0x3090e9a7
+}
+member {
+  id: 0xb386f959
+  name: "p_u32"
+  type_id: 0x38d23361
+}
+member {
+  id: 0xb38d30fc
+  name: "p_u32"
+  type_id: 0x331b9666
+}
+member {
+  id: 0x5a986ab3
+  name: "p_u8"
+  type_id: 0x2669d715
+}
+member {
+  id: 0x5abec441
+  name: "p_u8"
+  type_id: 0x00c72527
+}
+member {
+  id: 0x9a0156fb
+  name: "p_vp8_frame"
+  type_id: 0x3ef953b0
+}
+member {
+  id: 0x0749911a
+  name: "p_vp9_compressed_hdr_probs"
+  type_id: 0x2f5d12e5
+}
+member {
+  id: 0x45c645a7
+  name: "p_vp9_frame"
+  type_id: 0x1f6d4933
+}
+member {
+  id: 0xa9322d92
+  name: "pack_id"
+  type_id: 0x6720d32f
+  offset: 384
+}
+member {
+  id: 0xab6d4fdb
+  name: "package_id"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0x1ccacc7a
+  name: "packed_event_en"
+  type_id: 0x295c7202
+  offset: 88
+}
+member {
+  id: 0x2a8b4dbc
+  name: "packet"
+  type_id: 0x0873dbe3
+  offset: 3904
+}
+member {
+  id: 0x2aee419c
+  name: "packet"
+  type_id: 0x6d7f5ff6
+  offset: 200
+}
+member {
+  id: 0xb06ecc6f
+  name: "packet_size"
+  type_id: 0x0aba0b5b
+  offset: 352
+}
+member {
+  id: 0xb0700f6d
+  name: "packet_size"
+  type_id: 0x147d5006
+}
+member {
+  id: 0x483bc789
+  name: "packets"
+  type_id: 0x6720d32f
+  offset: 1536
+}
+member {
+  id: 0x483bc9b7
+  name: "packets"
+  type_id: 0x6720d32f
+  offset: 288
+}
+member {
+  id: 0x4866d30f
+  name: "packets"
+  type_id: 0x3a3eb2f9
+}
+member {
+  id: 0x4866d7ee
+  name: "packets"
+  type_id: 0x3a3eb2f9
+  offset: 64
+}
+member {
+  id: 0x48b11b2b
+  name: "packets"
+  type_id: 0xedf277ba
+  offset: 64
+}
+member {
+  id: 0x48bac7e3
+  name: "packets"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x716716c4
+  name: "packing"
+  type_id: 0xb3e7bac9
+  offset: 24
+}
+member {
+  id: 0xdbefe5f2
+  name: "packsize"
+  type_id: 0x7dc8196c
+  offset: 44704
+}
+member {
+  id: 0x6b32a1dc
+  name: "pad"
+  type_id: 0xe62ebf07
+  offset: 544
+}
+member {
+  id: 0x6b32a238
+  name: "pad"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x6b32a680
+  name: "pad"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x6b32af03
+  name: "pad"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x6b3c808e
+  name: "pad"
+  type_id: 0xe8034002
+  offset: 656
+}
+member {
+  id: 0x6b8901f5
+  name: "pad"
+  type_id: 0x5d8155a5
+  offset: 1368
+}
+member {
+  id: 0x6b90bd2c
+  name: "pad"
+  type_id: 0x44377683
+  offset: 8
+}
+member {
+  id: 0x6bb3a9c1
+  name: "pad"
+  type_id: 0x6720d32f
+  offset: 768
+}
+member {
+  id: 0x6be7f4d8
+  name: "pad"
+  type_id: 0x33756485
+}
+member {
+  id: 0x6be7fc11
+  name: "pad"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0x6beede63
+  name: "pad"
+  type_id: 0x3a58a89b
+  offset: 448
+}
+member {
+  id: 0x6612cc37
+  name: "pad1"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x663dec80
+  name: "pad1"
+  type_id: 0xc9082b19
+  offset: 512
+}
+member {
+  id: 0x66ddb3c1
+  name: "pad1"
+  type_id: 0x295c7202
+}
+member {
+  id: 0xba1fb3eb
+  name: "pad2"
+  type_id: 0x295c7202
+  offset: 16
+}
+member {
+  id: 0xbad0c2a3
+  name: "pad2"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xbaffe3eb
+  name: "pad2"
+  type_id: 0xc9082b19
+  offset: 1536
+}
+member {
+  id: 0xfbc33a7a
+  name: "pad3"
+  type_id: 0xc9082b19
+  offset: 2048
+}
+member {
+  id: 0xfbec1fb5
+  name: "pad3"
+  type_id: 0xe62ebf07
+  offset: 288
+}
+member {
+  id: 0xd17b1341
+  name: "pad_bits"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0x3fd6b442
+  name: "pad_bytes"
+  type_id: 0xf435685e
+  offset: 128
+}
+member {
+  id: 0xace1880a
+  name: "pad_until"
+  type_id: 0xf435685e
+  offset: 256
+}
+member {
+  id: 0x58c03139
+  name: "padattr"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0xa9664807
+  name: "padded"
+  type_id: 0xc93e017b
+  offset: 4720
+}
+member {
+  id: 0x64002912
+  name: "padding"
+  type_id: 0xe62ebf07
+  offset: 1248
+}
+member {
+  id: 0x64002eb5
+  name: "padding"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x640e02b0
+  name: "padding"
+  type_id: 0xe8034002
+  offset: 48
+}
+member {
+  id: 0x640e0aed
+  name: "padding"
+  type_id: 0xe8034002
+  offset: 80
+}
+member {
+  id: 0x64367ab0
+  name: "padding"
+  type_id: 0xd0778170
+}
+member {
+  id: 0x6455e50d
+  name: "padding"
+  type_id: 0xb3e7bac9
+  offset: 88
+}
+member {
+  id: 0x6455ecea
+  name: "padding"
+  type_id: 0xb3e7bac9
+  offset: 24
+}
+member {
+  id: 0x646aaa85
+  name: "padding"
+  type_id: 0x8ca7b4cd
+}
+member {
+  id: 0x64774c4f
+  name: "padding"
+  type_id: 0x914dbfdc
+  offset: 48
+}
+member {
+  id: 0x64774e30
+  name: "padding"
+  type_id: 0x914dbfdc
+  offset: 16
+}
+member {
+  id: 0x6491fbda
+  name: "padding"
+  type_id: 0x77f6ebb4
+}
+member {
+  id: 0x64a65d9f
+  name: "padding"
+  type_id: 0x4050ae51
+}
+member {
+  id: 0x64cf5722
+  name: "padding"
+  type_id: 0x295c7202
+  offset: 24
+}
+member {
+  id: 0x64cf57ca
+  name: "padding"
+  type_id: 0x295c7202
+  offset: 2184
+}
+member {
+  id: 0x64d837a8
+  name: "padding"
+  type_id: 0x3e3c1b86
+  offset: 8808
+}
+member {
+  id: 0x1366b916
+  name: "padding0"
+  type_id: 0x4050ae51
+  offset: 16
+}
+member {
+  id: 0xd052cad3
+  name: "padding1"
+  type_id: 0xb5c6bcdb
+  offset: 32
+}
+member {
+  id: 0xd06a5757
+  name: "padding1"
+  type_id: 0x8d58bd1a
+  offset: 16
+}
+member {
+  id: 0x9481c1a2
+  name: "padding2"
+  type_id: 0x23cbe491
+}
+member {
+  id: 0xbedde9a2
+  name: "padding_pkt"
+  type_id: 0x3e10b518
+  offset: 1664
+}
+member {
+  id: 0xab0027ec
+  name: "pads"
+  type_id: 0x1cc6bdca
+  offset: 576
+}
+member {
+  id: 0xab3b2027
+  name: "pads"
+  type_id: 0x27cf73eb
+  offset: 448
+}
+member {
+  id: 0xabcf29e0
+  name: "pads"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0xabcf2b3f
+  name: "pads"
+  type_id: 0xd3c80119
+  offset: 1856
+}
+member {
+  id: 0x320350ff
+  name: "page"
+  type_id: 0x06835e9c
+}
+member {
+  id: 0x3203541e
+  name: "page"
+  type_id: 0x06835e9c
+  offset: 64
+}
+member {
+  id: 0x32035686
+  name: "page"
+  type_id: 0x06835e9c
+  offset: 640
+}
+member {
+  id: 0x322121cd
+  name: "page"
+  type_id: 0x24f7f3ca
+  offset: 2176
+}
+member {
+  id: 0x32215eff
+  name: "page"
+  type_id: 0x248ee4b0
+  offset: 832
+}
+member {
+  id: 0x322bc39d
+  name: "page"
+  type_id: 0x2e18f543
+  offset: 192
+}
+member {
+  id: 0x322c8435
+  name: "page"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0x322c8b32
+  name: "page"
+  type_id: 0x295c7202
+  offset: 64
+}
+member {
+  id: 0x32359e3d
+  name: "page"
+  type_id: 0x304d9ced
+}
+member {
+  id: 0x3236b7b2
+  name: "page"
+  type_id: 0x33658188
+  offset: 384
+}
+member {
+  id: 0x3262f2e0
+  name: "page"
+  type_id: 0x6720d32f
+  offset: 384
+}
+member {
+  id: 0xdb90e959
+  name: "page_alignment"
+  type_id: 0x1c3dbe5a
+  offset: 2912
+}
+member {
+  id: 0x21516548
+  name: "page_count"
+  type_id: 0x2c7bd73f
+  offset: 320
+}
+member {
+  id: 0x3189af2e
+  name: "page_done"
+  type_id: 0x0f2d8dda
+  offset: 64
+}
+member {
+  id: 0x15bab41a
+  name: "page_ext"
+  type_id: 0x12209d55
+  offset: 128
+}
+member {
+  id: 0x7a026535
+  name: "page_flags"
+  type_id: 0x1c3dbe5a
+  offset: 64
+}
+member {
+  id: 0xaf199e69
+  name: "page_flip"
+  type_id: 0x2ed5bd34
+  offset: 448
+}
+member {
+  id: 0xca724cbb
+  name: "page_flip_target"
+  type_id: 0x2ed5bccc
+  offset: 512
+}
+member {
+  id: 0x883d68b7
+  name: "page_free"
+  type_id: 0x0ede182a
+}
+member {
+  id: 0xdb001408
+  name: "page_link"
+  type_id: 0x33756485
+}
+member {
+  id: 0x197373e1
+  name: "page_list"
+  type_id: 0xd3c80119
+  offset: 1280
+}
+member {
+  id: 0x1973759c
+  name: "page_list"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0xb51534d3
+  name: "page_mkwrite"
+  type_id: 0x39290604
+  offset: 576
+}
+member {
+  id: 0x48213d44
+  name: "page_ops"
+  type_id: 0x32343051
+  offset: 512
+}
+member {
+  id: 0xf64fa2f5
+  name: "page_order"
+  type_id: 0xc93e017b
+  offset: 128
+}
+member {
+  id: 0xf6c31797
+  name: "page_order"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0x1a103474
+  name: "page_prepare"
+  type_id: 0x2c6ba7f6
+}
+member {
+  id: 0x2d7fb70a
+  name: "page_ptr"
+  type_id: 0x06835e9c
+  offset: 128
+}
+member {
+  id: 0x640df02b
+  name: "page_response"
+  type_id: 0x2df82d01
+  offset: 704
+}
+member {
+  id: 0x175839e1
+  name: "page_scan_interval"
+  type_id: 0xe8034002
+  offset: 6144
+}
+member {
+  id: 0x052537d8
+  name: "page_scan_type"
+  type_id: 0xb3e7bac9
+  offset: 6176
+}
+member {
+  id: 0xf5d43022
+  name: "page_scan_window"
+  type_id: 0xe8034002
+  offset: 6160
+}
+member {
+  id: 0x5bed68c8
+  name: "page_shift"
+  type_id: 0x6720d32f
+  offset: 832
+}
+member {
+  id: 0x22710176
+  name: "page_size"
+  type_id: 0xf435685e
+  offset: 384
+}
+member {
+  id: 0x22710926
+  name: "page_size"
+  type_id: 0xf435685e
+  offset: 128
+}
+member {
+  id: 0x228e9b1d
+  name: "page_size"
+  type_id: 0x0baa70a7
+  offset: 64
+}
+member {
+  id: 0x22e21a38
+  name: "page_size"
+  type_id: 0x6720d32f
+  offset: 800
+}
+member {
+  id: 0x486511ce
+  name: "page_stamp"
+  type_id: 0x92233392
+  offset: 448
+}
+member {
+  id: 0x0a1b0cf3
+  name: "page_table_lock"
+  type_id: 0xf313e71a
+  offset: 736
+}
+member {
+  id: 0xa35b0e7b
+  name: "page_type"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x71dc8fac
+  name: "pageblock_flags"
+  type_id: 0xc8e4d7d1
+  offset: 64
+}
+member {
+  id: 0x946a4014
+  name: "pagecnt_bias"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0xb6138865
+  name: "pagefault_disabled"
+  type_id: 0x6720d32f
+  offset: 23360
+}
+member {
+  id: 0x780f0485
+  name: "pages"
+  type_id: 0x4585663f
+  offset: 960
+}
+member {
+  id: 0x782789f5
+  name: "pages"
+  type_id: 0x6d099744
+  offset: 576
+}
+member {
+  id: 0x782da905
+  name: "pages"
+  type_id: 0x6720d32f
+  offset: 4480
+}
+member {
+  id: 0x782da968
+  name: "pages"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0x7841b6ce
+  name: "pages"
+  type_id: 0x0b30ee00
+  offset: 3200
+}
+member {
+  id: 0x7841b955
+  name: "pages"
+  type_id: 0x0b30ee00
+  offset: 256
+}
+member {
+  id: 0x7841b9fe
+  name: "pages"
+  type_id: 0x0b30ee00
+}
+member {
+  id: 0x7841bd1f
+  name: "pages"
+  type_id: 0x0b30ee00
+  offset: 64
+}
+member {
+  id: 0x7874ec5e
+  name: "pages"
+  type_id: 0x3e6239e1
+  offset: 448
+}
+member {
+  id: 0x7879f895
+  name: "pages"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x787d1848
+  name: "pages"
+  type_id: 0x379bfe28
+  offset: 896
+}
+member {
+  id: 0x789946d6
+  name: "pages"
+  type_id: 0xd3c80119
+  offset: 320
+}
+member {
+  id: 0x789948d3
+  name: "pages"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0x78bdf3bc
+  name: "pages"
+  type_id: 0xf77e4d4d
+  offset: 64
+}
+member {
+  id: 0x78dbc4af
+  name: "pages"
+  type_id: 0x914dbfdc
+}
+member {
+  id: 0xbeaf0794
+  name: "pages_allocated"
+  type_id: 0xb02b353a
+  offset: 16512
+}
+member {
+  id: 0x538add2b
+  name: "pages_compacted"
+  type_id: 0xb02b353a
+}
+member {
+  id: 0x70bb9058
+  name: "pages_high"
+  type_id: 0xf435685e
+  offset: 1088
+}
+member {
+  id: 0x4eb10c50
+  name: "pages_lock"
+  type_id: 0xf313e71a
+  offset: 64
+}
+member {
+  id: 0x4ee5d75e
+  name: "pages_lock"
+  type_id: 0xa7c362b0
+  offset: 2816
+}
+member {
+  id: 0x25777528
+  name: "pages_lost"
+  type_id: 0x299c4193
+  offset: 1472
+}
+member {
+  id: 0x442de3ee
+  name: "pages_mark_accessed_on_put"
+  type_id: 0x4585663f
+  offset: 3457
+  bitsize: 1
+}
+member {
+  id: 0x016c4163
+  name: "pages_mark_dirty_on_put"
+  type_id: 0x4585663f
+  offset: 3456
+  bitsize: 1
+}
+member {
+  id: 0x338646f2
+  name: "pages_per_zspage"
+  type_id: 0x6720d32f
+  offset: 640
+}
+member {
+  id: 0xf9521fd2
+  name: "pages_read"
+  type_id: 0x299c4193
+  offset: 1536
+}
+member {
+  id: 0x7d5b002a
+  name: "pages_skipped"
+  type_id: 0xfc0e1dbd
+  offset: 64
+}
+member {
+  id: 0x9cb8b0e3
+  name: "pages_state_hold_cnt"
+  type_id: 0xc9082b19
+  offset: 1728
+}
+member {
+  id: 0xe5b03808
+  name: "pages_state_release_cnt"
+  type_id: 0x74d29cf1
+  offset: 12288
+}
+member {
+  id: 0xeb6d9f1f
+  name: "pages_touched"
+  type_id: 0x299c4193
+  offset: 1408
+}
+member {
+  id: 0xf92c9186
+  name: "pages_use_count"
+  type_id: 0x4585663f
+  offset: 3264
+}
+member {
+  id: 0xf098512e
+  name: "pageset_batch"
+  type_id: 0x6720d32f
+  offset: 864
+}
+member {
+  id: 0x0604bd95
+  name: "pageset_high"
+  type_id: 0x6720d32f
+  offset: 832
+}
+member {
+  id: 0xc3f2c304
+  name: "pagesize"
+  type_id: 0x065a3ee7
+  offset: 512
+}
+member {
+  id: 0x74f3b58d
+  name: "pair"
+  type_id: 0x29b77961
+  offset: 96
+}
+member {
+  id: 0xb1803fc6
+  name: "pairing_opts"
+  type_id: 0xb3e7bac9
+  offset: 6656
+}
+member {
+  id: 0x4e37d0bb
+  name: "pairs"
+  type_id: 0xceee2795
+  offset: 64
+}
+member {
+  id: 0xa30c0a0b
+  name: "pan_coord"
+  type_id: 0x6d7f5ff6
+  offset: 128
+}
+member {
+  id: 0xdee066f7
+  name: "pan_id"
+  type_id: 0x9bd401b6
+  offset: 480
+}
+member {
+  id: 0xdee06747
+  name: "pan_id"
+  type_id: 0x9bd401b6
+}
+member {
+  id: 0xdee069f9
+  name: "pan_id"
+  type_id: 0x9bd401b6
+  offset: 16
+}
+member {
+  id: 0xd3a8d2cb
+  name: "panel"
+  type_id: 0x8acbefdb
+}
+member {
+  id: 0xe34cadd4
+  name: "panel_orientation"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0xe3a9ab38
+  name: "panel_orientation"
+  type_id: 0x8224e5a5
+  offset: 512
+}
+member {
+  id: 0x3efa4ce5
+  name: "panel_orientation_property"
+  type_id: 0x2a670b41
+  offset: 9024
+}
+member {
+  id: 0x616a797d
+  name: "panic"
+  type_id: 0x04676af8
+  offset: 960
+}
+member {
+  id: 0x091ba43f
+  name: "panic_on_ue"
+  type_id: 0x6720d32f
+  offset: 288
+}
+member {
+  id: 0xae5a4181
+  name: "papr_hcall"
+  type_id: 0x2c2be6c7
+}
+member {
+  id: 0xfe407cce
+  name: "par"
+  type_id: 0x18bd6530
+  offset: 5952
+}
+member {
+  id: 0xc0bc4db7
+  name: "parallel"
+  type_id: 0x5cede1dc
+}
+member {
+  id: 0x6380e6ce
+  name: "parallel_ops"
+  type_id: 0x295c7202
+  offset: 289
+  bitsize: 1
+}
+member {
+  id: 0xb53d390d
+  name: "param"
+  type_id: 0x81f43af3
+  offset: 64
+}
+member {
+  id: 0xb540a535
+  name: "param"
+  type_id: 0xfc6ce31e
+}
+member {
+  id: 0xb5513ba1
+  name: "param"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0xb554189d
+  name: "param"
+  type_id: 0xe8d14bc6
+}
+member {
+  id: 0xb58d4b20
+  name: "param"
+  type_id: 0x3185812b
+  offset: 448
+}
+member {
+  id: 0xb5a47d71
+  name: "param"
+  type_id: 0x18bd6530
+  offset: 128
+}
+member {
+  id: 0xb5b367d2
+  name: "param"
+  type_id: 0x0faae5b1
+  offset: 64
+}
+member {
+  id: 0xb5c2b19d
+  name: "param"
+  type_id: 0x7e71c857
+  offset: 96
+}
+member {
+  id: 0x91d9a625
+  name: "param_count"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x3dc8f1db
+  name: "param_get"
+  type_id: 0x2dfc9a8f
+  offset: 576
+}
+member {
+  id: 0x55524858
+  name: "param_index"
+  type_id: 0x6720d32f
+  offset: 640
+}
+member {
+  id: 0xb8ba1efc
+  name: "param_lock"
+  type_id: 0xa7c362b0
+  offset: 2176
+}
+member {
+  id: 0x282a3d0d
+  name: "param_set"
+  type_id: 0x2dfc9a8f
+  offset: 640
+}
+member {
+  id: 0x1c7fe391
+  name: "param_value"
+  type_id: 0x391f15ea
+  offset: 576
+}
+member {
+  id: 0x3b7c4678
+  name: "parameters"
+  type_id: 0x39b6e021
+  offset: 192
+}
+member {
+  id: 0x1e5d0663
+  name: "paramlen"
+  type_id: 0xc9082b19
+  offset: 192
+}
+member {
+  id: 0x4b34b9aa
+  name: "params"
+  type_id: 0x9addce46
+  offset: 192
+}
+member {
+  id: 0x4b3911d5
+  name: "params"
+  type_id: 0x9775d653
+  offset: 768
+}
+member {
+  id: 0x4b6003a3
+  name: "params"
+  type_id: 0xce6e9270
+  offset: 168
+}
+member {
+  id: 0x4b9bb770
+  name: "params"
+  type_id: 0x35d0c5ee
+  offset: 512
+}
+member {
+  id: 0x4bb6d80a
+  name: "params"
+  type_id: 0x18bd6530
+  offset: 128
+}
+member {
+  id: 0x4bf9b0b2
+  name: "params"
+  type_id: 0x57d5dd0d
+  offset: 128
+}
+member {
+  id: 0xe64a6945
+  name: "params_len"
+  type_id: 0x295c7202
+  offset: 160
+}
+member {
+  id: 0x991ac7d9
+  name: "params_select"
+  type_id: 0x4585663f
+  offset: 1280
+}
+member {
+  id: 0x720068aa
+  name: "parent"
+  type_id: 0x31114896
+  offset: 512
+}
+member {
+  id: 0x720357b4
+  name: "parent"
+  type_id: 0x322c8c4b
+  offset: 128
+}
+member {
+  id: 0x72050b5f
+  name: "parent"
+  type_id: 0x347303b4
+  offset: 896
+}
+member {
+  id: 0x720565ca
+  name: "parent"
+  type_id: 0x3413d17b
+  offset: 64
+}
+member {
+  id: 0x720a39dd
+  name: "parent"
+  type_id: 0x3b4ce03a
+  offset: 320
+}
+member {
+  id: 0x720b2551
+  name: "parent"
+  type_id: 0x3a534a58
+  offset: 64
+}
+member {
+  id: 0x720cd64d
+  name: "parent"
+  type_id: 0x3da0560e
+  offset: 64
+}
+member {
+  id: 0x720d8444
+  name: "parent"
+  type_id: 0x3cfe7778
+  offset: 192
+}
+member {
+  id: 0x720e051d
+  name: "parent"
+  type_id: 0x3f774ccb
+  offset: 256
+}
+member {
+  id: 0x720e5144
+  name: "parent"
+  type_id: 0x3f222c68
+  offset: 384
+}
+member {
+  id: 0x720ffad0
+  name: "parent"
+  type_id: 0x3e8e572f
+  offset: 1280
+}
+member {
+  id: 0x72109cfc
+  name: "parent"
+  type_id: 0x21ee065a
+}
+member {
+  id: 0x72127295
+  name: "parent"
+  type_id: 0x2309ad3e
+  offset: 128
+}
+member {
+  id: 0x72128aaf
+  name: "parent"
+  type_id: 0x23f09c34
+  offset: 192
+}
+member {
+  id: 0x72185059
+  name: "parent"
+  type_id: 0x2922a3d0
+}
+member {
+  id: 0x721a6249
+  name: "parent"
+  type_id: 0x2b16c036
+  offset: 1792
+}
+member {
+  id: 0x721ad904
+  name: "parent"
+  type_id: 0x2ba5754c
+  offset: 2880
+}
+member {
+  id: 0x721ff08c
+  name: "parent"
+  type_id: 0x2e8ad82b
+  offset: 768
+}
+member {
+  id: 0x7220982b
+  name: "parent"
+  type_id: 0x11eda6ed
+  offset: 448
+}
+member {
+  id: 0x72242632
+  name: "parent"
+  type_id: 0x155c66cc
+  offset: 768
+}
+member {
+  id: 0x7227c0c4
+  name: "parent"
+  type_id: 0x16b3acfc
+  offset: 384
+}
+member {
+  id: 0x72281112
+  name: "parent"
+  type_id: 0x1964f783
+  offset: 1024
+}
+member {
+  id: 0x72293a5b
+  name: "parent"
+  type_id: 0x184052fc
+  offset: 960
+}
+member {
+  id: 0x7229d678
+  name: "parent"
+  type_id: 0x18a2fb63
+  offset: 640
+}
+member {
+  id: 0x722c62b8
+  name: "parent"
+  type_id: 0x1d19a9d5
+  offset: 12864
+}
+member {
+  id: 0x722cb6c3
+  name: "parent"
+  type_id: 0x1dce0fdd
+  offset: 5120
+}
+member {
+  id: 0x7232a6c4
+  name: "parent"
+  type_id: 0x03d5ac6b
+  offset: 384
+}
+member {
+  id: 0x723322ad
+  name: "parent"
+  type_id: 0x0258f96e
+  offset: 768
+}
+member {
+  id: 0x7233231d
+  name: "parent"
+  type_id: 0x0258f96e
+  offset: 8512
+}
+member {
+  id: 0x723323c1
+  name: "parent"
+  type_id: 0x0258f96e
+  offset: 128
+}
+member {
+  id: 0x72332a03
+  name: "parent"
+  type_id: 0x0258f96e
+}
+member {
+  id: 0x72332a86
+  name: "parent"
+  type_id: 0x0258f96e
+  offset: 9472
+}
+member {
+  id: 0x72332aa8
+  name: "parent"
+  type_id: 0x0258f96e
+  offset: 256
+}
+member {
+  id: 0x72332dc4
+  name: "parent"
+  type_id: 0x0258f96e
+  offset: 320
+}
+member {
+  id: 0x72332ee2
+  name: "parent"
+  type_id: 0x0258f96e
+  offset: 64
+}
+member {
+  id: 0x72335ce2
+  name: "parent"
+  type_id: 0x0226d1ba
+  offset: 192
+}
+member {
+  id: 0x72338185
+  name: "parent"
+  type_id: 0x02f4fda6
+  offset: 2048
+}
+member {
+  id: 0x72342532
+  name: "parent"
+  type_id: 0x055f6606
+  offset: 768
+}
+member {
+  id: 0x72355923
+  name: "parent"
+  type_id: 0x042bd90b
+}
+member {
+  id: 0x723953b8
+  name: "parent"
+  type_id: 0x082be49e
+  offset: 896
+}
+member {
+  id: 0x723b62b3
+  name: "parent"
+  type_id: 0x0a193bb7
+  offset: 576
+}
+member {
+  id: 0x723c076f
+  name: "parent"
+  type_id: 0x0d7ce7cc
+  offset: 576
+}
+member {
+  id: 0x723e3840
+  name: "parent"
+  type_id: 0x0f4dcd61
+  offset: 448
+}
+member {
+  id: 0x723ede70
+  name: "parent"
+  type_id: 0x0fabaf3b
+  offset: 1728
+}
+member {
+  id: 0x72f87b61
+  name: "parent"
+  type_id: 0xc9082b19
+  offset: 480
+}
+member {
+  id: 0x673cd829
+  name: "parent_block"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0xbed76ca8
+  name: "parent_could_setfcap"
+  type_id: 0x6d7f5ff6
+  offset: 2176
+}
+member {
+  id: 0xd2873ebd
+  name: "parent_ctx"
+  type_id: 0x23a73732
+  offset: 1856
+}
+member {
+  id: 0x0d01ade0
+  name: "parent_data"
+  type_id: 0x3fed1cc2
+  offset: 192
+}
+member {
+  id: 0x0d3533bd
+  name: "parent_data"
+  type_id: 0x0b7c4f67
+  offset: 320
+}
+member {
+  id: 0xbb141a94
+  name: "parent_domain"
+  type_id: 0x18a2fb63
+  offset: 256
+}
+member {
+  id: 0xeabf13b3
+  name: "parent_exec_id"
+  type_id: 0x92233392
+  offset: 18560
+}
+member {
+  id: 0x20b5aad0
+  name: "parent_gen"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0x20ee8995
+  name: "parent_gen"
+  type_id: 0x92233392
+  offset: 1920
+}
+member {
+  id: 0xa109b6c6
+  name: "parent_generation"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0x955b6231
+  name: "parent_handler"
+  type_id: 0xb0c2eb21
+  offset: 1408
+}
+member {
+  id: 0x86b2ecd0
+  name: "parent_handler_data"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0x4eb868f1
+  name: "parent_handler_data_array"
+  type_id: 0x0cbf60eb
+}
+member {
+  id: 0x29c2eb11
+  name: "parent_hws"
+  type_id: 0x05f260a2
+  offset: 256
+}
+member {
+  id: 0x018c7f62
+  name: "parent_idx"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xf923c05c
+  name: "parent_ino"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x5d34d0b7
+  name: "parent_ip"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x57ba9719
+  name: "parent_irq"
+  type_id: 0x6720d32f
+  offset: 3456
+}
+member {
+  id: 0xb094763b
+  name: "parent_links"
+  type_id: 0xd3c80119
+  offset: 9344
+}
+member {
+  id: 0xabfb8b61
+  name: "parent_names"
+  type_id: 0x3e75499e
+  offset: 128
+}
+member {
+  id: 0xf2b3f8bb
+  name: "parent_partref"
+  type_id: 0x914dbfdc
+  offset: 48
+}
+member {
+  id: 0x064468c0
+  name: "parent_sq"
+  type_id: 0x2862f859
+}
+member {
+  id: 0x48a33f11
+  name: "parent_supplies"
+  type_id: 0x3e75499e
+  offset: 1024
+}
+member {
+  id: 0x0a0fa3a3
+  name: "parents"
+  type_id: 0x27b8a069
+  offset: 448
+}
+member {
+  id: 0x0a33e4ac
+  name: "parents"
+  type_id: 0x1bf16028
+  offset: 1600
+}
+member {
+  id: 0xd666f314
+  name: "parity"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0xd6c8e3d3
+  name: "parity"
+  type_id: 0xc93e017b
+  offset: 16
+}
+member {
+  id: 0xd6e7fd78
+  name: "parity"
+  type_id: 0xe62ebf07
+  offset: 256
+}
+member {
+  id: 0xd6e7fef7
+  name: "parity"
+  type_id: 0xe62ebf07
+  offset: 224
+}
+member {
+  id: 0x53dc4767
+  name: "park_pending"
+  type_id: 0x74d29cf1
+  offset: 32
+}
+member {
+  id: 0x4af10ff0
+  name: "parm"
+  type_id: 0x76aedb9e
+  offset: 32
+}
+member {
+  id: 0x232e5373
+  name: "parms"
+  type_id: 0xed418e18
+  offset: 704
+}
+member {
+  id: 0x23f2d958
+  name: "parms"
+  type_id: 0x31c05a21
+  offset: 128
+}
+member {
+  id: 0x6fd3d043
+  name: "parms_list"
+  type_id: 0xd3c80119
+  offset: 1984
+}
+member {
+  id: 0x9e08e204
+  name: "parse"
+  type_id: 0x2d2e4d07
+  offset: 320
+}
+member {
+  id: 0x9e0bc4a7
+  name: "parse"
+  type_id: 0x2e0bc86e
+  offset: 64
+}
+member {
+  id: 0x74a87cb3
+  name: "parse_fw"
+  type_id: 0x2f5f6076
+  offset: 512
+}
+member {
+  id: 0x45363579
+  name: "parse_inplace"
+  type_id: 0x0f3dfb90
+  offset: 576
+}
+member {
+  id: 0x80e00e0c
+  name: "parse_monolithic"
+  type_id: 0x2f1d40ee
+  offset: 192
+}
+member {
+  id: 0xdb171168
+  name: "parse_options"
+  type_id: 0x2ef616cf
+  offset: 64
+}
+member {
+  id: 0xbc168907
+  name: "parse_param"
+  type_id: 0x2f324891
+  offset: 128
+}
+member {
+  id: 0xcfa2fa2e
+  name: "parse_protocol"
+  type_id: 0x31d8aec5
+  offset: 320
+}
+member {
+  id: 0x61146e24
+  name: "parse_val"
+  type_id: 0x3ab71747
+  offset: 512
+}
+member {
+  id: 0x5d8a6b26
+  name: "parsed_static_opps"
+  type_id: 0x4585663f
+  offset: 1696
+}
+member {
+  id: 0x790ae283
+  name: "part"
+  type_id: 0x4585663f
+  offset: 640
+}
+member {
+  id: 0x793fd355
+  name: "part"
+  type_id: 0x70bb96a6
+  offset: 12160
+}
+member {
+  id: 0x79434db8
+  name: "part"
+  type_id: 0x0c2e195c
+  offset: 704
+}
+member {
+  id: 0x799ca105
+  name: "part"
+  type_id: 0xd3c80119
+  offset: 3648
+}
+member {
+  id: 0x7ad1703f
+  name: "part0"
+  type_id: 0x0c2e195c
+  offset: 512
+}
+member {
+  id: 0xda18eac7
+  name: "part_cfg"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x76671c2e
+  name: "part_config"
+  type_id: 0x295c7202
+  offset: 48
+}
+member {
+  id: 0x2b5d1df4
+  name: "part_curr"
+  type_id: 0x4585663f
+  offset: 4064
+}
+member {
+  id: 0x440b16c3
+  name: "part_id"
+  type_id: 0xe8034002
+  offset: 32
+}
+member {
+  id: 0x44725bb9
+  name: "part_id"
+  type_id: 0x914dbfdc
+  offset: 16
+}
+member {
+  id: 0xd92b5f0d
+  name: "part_tbl"
+  type_id: 0x80c20070
+  offset: 384
+}
+member {
+  id: 0xec9db3aa
+  name: "part_time"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x13792d21
+  name: "part_type"
+  type_id: 0x4585663f
+  offset: 4000
+}
+member {
+  id: 0xed33ceb5
+  name: "partial"
+  type_id: 0x0f91dccc
+  offset: 192
+}
+member {
+  id: 0xedef9663
+  name: "partial"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0xe697de29
+  name: "partial_drain"
+  type_id: 0x6d7f5ff6
+  offset: 1392
+}
+member {
+  id: 0xd92f3da1
+  name: "partition"
+  type_id: 0x43bcc470
+  offset: 15384
+}
+member {
+  id: 0x220c3d20
+  name: "partition_id"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0x5669ee49
+  name: "partition_setting_completed"
+  type_id: 0x6d7f5ff6
+  offset: 512
+}
+member {
+  id: 0xdaa09517
+  name: "partner"
+  type_id: 0x105c8027
+  offset: 1920
+}
+member {
+  id: 0xdaa0963a
+  name: "partner"
+  type_id: 0x105c8027
+  offset: 1408
+}
+member {
+  id: 0xeea87524
+  name: "partner_altmode"
+  type_id: 0x23ac68c7
+  offset: 21632
+}
+member {
+  id: 0xeebdf358
+  name: "partner_altmode"
+  type_id: 0x3624319f
+  offset: 3392
+}
+member {
+  id: 0x59c561be
+  name: "partner_desc"
+  type_id: 0xdaa2f673
+  offset: 1728
+}
+member {
+  id: 0xc77dfc66
+  name: "partner_ident"
+  type_id: 0x556c6bb0
+  offset: 1536
+}
+member {
+  id: 0xb74f4f82
+  name: "partner_pd"
+  type_id: 0x3754d634
+  offset: 8192
+}
+member {
+  id: 0x15e6ae4f
+  name: "partner_sink_caps"
+  type_id: 0x3bdc1cb2
+  offset: 8320
+}
+member {
+  id: 0xdae5533d
+  name: "partner_source_caps"
+  type_id: 0x3bdc1cb2
+  offset: 8256
+}
+member {
+  id: 0x4592de1d
+  name: "partner_tasks"
+  type_id: 0xd3c80119
+  offset: 1216
+}
+member {
+  id: 0x6c9b7901
+  name: "partref"
+  type_id: 0x914dbfdc
+  offset: 32
+}
+member {
+  id: 0x2e76cf6e
+  name: "parts"
+  type_id: 0x117c83ec
+  offset: 64
+}
+member {
+  id: 0x22663355
+  name: "pasid"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x226637ed
+  name: "pasid"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x22663a8f
+  name: "pasid"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x0ff1f1d2
+  name: "pasid_array"
+  type_id: 0x80c20070
+  offset: 960
+}
+member {
+  id: 0x5597c7aa
+  name: "pasid_enabled"
+  type_id: 0x4585663f
+  offset: 22104
+  bitsize: 1
+}
+member {
+  id: 0xc1becfa8
+  name: "pasid_no_tlp"
+  type_id: 0x4585663f
+  offset: 1568
+  bitsize: 1
+}
+member {
+  id: 0xc012f59e
+  name: "pass_cnt"
+  type_id: 0xc9082b19
+  offset: 75840
+}
+member {
+  id: 0x9a7fa8f2
+  name: "passive"
+  type_id: 0xa722c13e
+}
+member {
+  id: 0x9abfad9d
+  name: "passive"
+  type_id: 0x6720d32f
+  offset: 8544
+}
+member {
+  id: 0x9af66991
+  name: "passive"
+  type_id: 0x2ee3a27e
+}
+member {
+  id: 0x2f67e263
+  name: "passive_delay_jiffies"
+  type_id: 0x33756485
+  offset: 8320
+}
+member {
+  id: 0xadef5c34
+  name: "passkey_entered"
+  type_id: 0xb3e7bac9
+  offset: 832
+}
+member {
+  id: 0x24430b67
+  name: "passkey_notify"
+  type_id: 0xe62ebf07
+  offset: 800
+}
+member {
+  id: 0x38662307
+  name: "passthrough"
+  type_id: 0x6d7f5ff6
+  offset: 11712
+}
+member {
+  id: 0xbc0bb838
+  name: "patch"
+  type_id: 0x0da65d3f
+  offset: 4928
+}
+member {
+  id: 0x04b8e839
+  name: "patch_regs"
+  type_id: 0x6720d32f
+  offset: 4992
+}
+member {
+  id: 0xf600edb5
+  name: "patch_ver"
+  type_id: 0x9bd401b6
+  offset: 32
+}
+member {
+  id: 0x70c68164
+  name: "patchlevel"
+  type_id: 0x6720d32f
+  offset: 1216
+}
+member {
+  id: 0x771e436d
+  name: "path"
+  type_id: 0x5adf57ae
+  offset: 256
+}
+member {
+  id: 0x77353a11
+  name: "path"
+  type_id: 0x71a68091
+}
+member {
+  id: 0x776fe9d5
+  name: "path"
+  type_id: 0x2b754442
+}
+member {
+  id: 0x50279711
+  name: "path_blob_ptr"
+  type_id: 0x343ebce3
+  offset: 11776
+}
+member {
+  id: 0x878459dc
+  name: "path_checks"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x446e9ce1
+  name: "path_count"
+  type_id: 0x4585663f
+  offset: 3264
+}
+member {
+  id: 0x5d96bda2
+  name: "path_property"
+  type_id: 0x2a670b41
+  offset: 6016
+}
+member {
+  id: 0x846e3718
+  name: "path_sink_cache"
+  type_id: 0x45bef0b7
+  offset: 448
+}
+member {
+  id: 0x4f2c9dc2
+  name: "path_source_cache"
+  type_id: 0x45bef0b7
+  offset: 512
+}
+member {
+  id: 0xa18cd207
+  name: "pathname"
+  type_id: 0xca2a51af
+  offset: 768
+}
+member {
+  id: 0xa1ab028f
+  name: "pathname"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x0074c878
+  name: "paths"
+  type_id: 0x004d68b7
+  offset: 3200
+}
+member {
+  id: 0x00a742e7
+  name: "paths"
+  type_id: 0xd3c80119
+  offset: 4480
+}
+member {
+  id: 0x9b346739
+  name: "pattern"
+  type_id: 0x3f0185ef
+  offset: 64
+}
+member {
+  id: 0x9b357609
+  name: "pattern"
+  type_id: 0x3e10b518
+  offset: 64
+}
+member {
+  id: 0x9b7c94b6
+  name: "pattern"
+  type_id: 0x77f6ebb4
+}
+member {
+  id: 0x11dfa0ae
+  name: "pattern_clear"
+  type_id: 0x2edcab9e
+  offset: 576
+}
+member {
+  id: 0xe58f0084
+  name: "pattern_len"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x6212b647
+  name: "pattern_max_len"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0x6212bb25
+  name: "pattern_max_len"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x645411a4
+  name: "pattern_min_len"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0x645411e5
+  name: "pattern_min_len"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0xecfc7880
+  name: "pattern_set"
+  type_id: 0x2ef22e9f
+  offset: 512
+}
+member {
+  id: 0xce5a8db0
+  name: "patterns"
+  type_id: 0x04f0669a
+  offset: 64
+}
+member {
+  id: 0x6d45f1ba
+  name: "pause"
+  type_id: 0x6d7f5ff6
+  offset: 15416
+}
+member {
+  id: 0x6d4faa04
+  name: "pause"
+  type_id: 0x6720d32f
+  offset: 352
+}
+member {
+  id: 0x6d4faa91
+  name: "pause"
+  type_id: 0x6720d32f
+  offset: 9504
+}
+member {
+  id: 0x83842b42
+  name: "pause_in_draining"
+  type_id: 0x6d7f5ff6
+  offset: 1400
+}
+member {
+  id: 0x6fcec67f
+  name: "paused"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0xa70430a8
+  name: "payload"
+  type_id: 0x6a240418
+}
+member {
+  id: 0xa72a5ddc
+  name: "payload"
+  type_id: 0x444d9145
+  offset: 64
+}
+member {
+  id: 0xa7511582
+  name: "payload"
+  type_id: 0x3f0185ef
+  offset: 256
+}
+member {
+  id: 0xa7511de0
+  name: "payload"
+  type_id: 0x3f0185ef
+  offset: 192
+}
+member {
+  id: 0xa7d781ed
+  name: "payload"
+  type_id: 0xb995416c
+}
+member {
+  id: 0xa7d7882f
+  name: "payload"
+  type_id: 0xb995416c
+  offset: 128
+}
+member {
+  id: 0x4b26b3b7
+  name: "payload_buf"
+  type_id: 0x18bd6530
+  offset: 128
+}
+member {
+  id: 0xe2d3fcff
+  name: "payload_len"
+  type_id: 0x6720d32f
+  offset: 224
+}
+member {
+  id: 0xe2f15a6e
+  name: "payload_len"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x9fa30dde
+  name: "payload_length"
+  type_id: 0xf435685e
+  offset: 128
+}
+member {
+  id: 0x2994b7db
+  name: "payload_seq"
+  type_id: 0x7b599407
+  offset: 320
+}
+member {
+  id: 0x9fcdeae5
+  name: "payload_size"
+  type_id: 0x0baa70a7
+  offset: 192
+}
+member {
+  id: 0x369464a5
+  name: "payload_tok"
+  type_id: 0xa91933be
+  offset: 672
+}
+member {
+  id: 0xe537662a
+  name: "pb"
+  type_id: 0xb3e7bac9
+  offset: 40
+}
+member {
+  id: 0xa529ce8d
+  name: "pc"
+  type_id: 0xedf277ba
+  offset: 2048
+}
+member {
+  id: 0xa5561fc9
+  name: "pc"
+  type_id: 0x92233392
+  offset: 2048
+}
+member {
+  id: 0xa5f746b2
+  name: "pc"
+  type_id: 0x33756485
+  offset: 768
+}
+member {
+  id: 0xa5f74e1c
+  name: "pc"
+  type_id: 0x33756485
+}
+member {
+  id: 0xa33342ec
+  name: "pci"
+  type_id: 0x2b34b7f1
+  offset: 640
+}
+member {
+  id: 0x60c1e32f
+  name: "pci_epf"
+  type_id: 0xd3c80119
+  offset: 7296
+}
+member {
+  id: 0x475f5a88
+  name: "pci_pf"
+  type_id: 0xf0f5f897
+}
+member {
+  id: 0x64fafbf7
+  name: "pci_resume"
+  type_id: 0x2fcafc05
+  offset: 512
+}
+member {
+  id: 0xfb29055b
+  name: "pci_sf"
+  type_id: 0xcf1dc34b
+}
+member {
+  id: 0x2c412ef8
+  name: "pci_slot"
+  type_id: 0x04199996
+  offset: 192
+}
+member {
+  id: 0x830a9107
+  name: "pci_suspend"
+  type_id: 0x2fcafc05
+  offset: 448
+}
+member {
+  id: 0x0b34b082
+  name: "pci_vf"
+  type_id: 0x4036527b
+}
+member {
+  id: 0x2b400640
+  name: "pcie_cap"
+  type_id: 0x295c7202
+  offset: 864
+}
+member {
+  id: 0x8439b1e8
+  name: "pcie_flags_reg"
+  type_id: 0x914dbfdc
+  offset: 912
+}
+member {
+  id: 0x415a2d86
+  name: "pcie_mpss"
+  type_id: 0x295c7202
+  offset: 888
+  bitsize: 3
+}
+member {
+  id: 0x68603132
+  name: "pclk"
+  type_id: 0x3dcee85d
+  offset: 8064
+}
+member {
+  id: 0xa60a4348
+  name: "pcm"
+  type_id: 0x118d97cb
+}
+member {
+  id: 0xa60a47a9
+  name: "pcm"
+  type_id: 0x118d97cb
+  offset: 64
+}
+member {
+  id: 0xa60a4bbf
+  name: "pcm"
+  type_id: 0x118d97cb
+  offset: 12416
+}
+member {
+  id: 0xe33dd190
+  name: "pcm_construct"
+  type_id: 0x2ce315c4
+  offset: 832
+}
+member {
+  id: 0x164de05f
+  name: "pcm_destruct"
+  type_id: 0x0fb1d80a
+  offset: 896
+}
+member {
+  id: 0xe2cb8acf
+  name: "pcm_devs"
+  type_id: 0x6720d32f
+  offset: 2752
+}
+member {
+  id: 0xa37a7538
+  name: "pcm_elems"
+  type_id: 0x0baa70a7
+  offset: 128
+}
+member {
+  id: 0xd4aea65d
+  name: "pcm_frames"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x73fb7c91
+  name: "pcm_hardware"
+  type_id: 0x3f8f206d
+  offset: 448
+}
+member {
+  id: 0x22220408
+  name: "pcm_id"
+  type_id: 0x0baa70a7
+  offset: 736
+}
+member {
+  id: 0xa6de1752
+  name: "pcm_index"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x1bbf4d02
+  name: "pcm_io_frames"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x5201ec52
+  name: "pcm_list"
+  type_id: 0xd3c80119
+  offset: 2240
+}
+member {
+  id: 0x69bbb514
+  name: "pcm_mutex"
+  type_id: 0xa7c362b0
+  offset: 1472
+}
+member {
+  id: 0x384f10b5
+  name: "pcm_name"
+  type_id: 0xe52a3418
+  offset: 32
+}
+member {
+  id: 0xa040c173
+  name: "pcm_new"
+  type_id: 0x2da3e1a0
+  offset: 832
+}
+member {
+  id: 0x7454b0ec
+  name: "pcm_release"
+  type_id: 0x0ffdb990
+  offset: 2816
+}
+member {
+  id: 0xda74c805
+  name: "pcm_sample_bit_depth_chroma_minus1"
+  type_id: 0xb3e7bac9
+  offset: 152
+}
+member {
+  id: 0x56a524f5
+  name: "pcm_sample_bit_depth_luma_minus1"
+  type_id: 0xb3e7bac9
+  offset: 144
+}
+member {
+  id: 0xd2d2e828
+  name: "pcm_subclass"
+  type_id: 0xe3575a9b
+  offset: 1856
+}
+member {
+  id: 0xb1c38868
+  name: "pcm_substream"
+  type_id: 0x14b9453b
+  offset: 128
+}
+member {
+  id: 0x4d19040d
+  name: "pconstructor"
+  type_id: 0x2e53e24a
+  offset: 320
+}
+member {
+  id: 0x581f8d4d
+  name: "pcount"
+  type_id: 0x33756485
+}
+member {
+  id: 0xd17382fd
+  name: "pcp_list"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0xe8fb80f6
+  name: "pcpu"
+  type_id: 0x32ad7138
+  offset: 512
+}
+member {
+  id: 0x44032591
+  name: "pcpu_refcnt"
+  type_id: 0x13580d6c
+  offset: 9920
+}
+member {
+  id: 0xb1b51a2e
+  name: "pcpu_statistics"
+  type_id: 0x12cddb4e
+  offset: 8192
+}
+member {
+  id: 0xb1b51cdd
+  name: "pcpu_statistics"
+  type_id: 0x12cddb4e
+  offset: 11840
+}
+member {
+  id: 0x3899056b
+  name: "pcpuc_entries"
+  type_id: 0x04fd619c
+  offset: 1024
+}
+member {
+  id: 0xf40fc00d
+  name: "pcref"
+  type_id: 0x3e40064a
+  offset: 4864
+}
+member {
+  id: 0x27bf40af
+  name: "pcs"
+  type_id: 0x2314b69f
+  offset: 192
+}
+member {
+  id: 0x27008117
+  name: "pcs_an_restart"
+  type_id: 0x0c8766aa
+  offset: 192
+}
+member {
+  id: 0x202c78cc
+  name: "pcs_config"
+  type_id: 0x2f8a19c1
+  offset: 128
+}
+member {
+  id: 0xe79e65ea
+  name: "pcs_get_state"
+  type_id: 0x0cbaba94
+  offset: 64
+}
+member {
+  id: 0x684c4554
+  name: "pcs_link_up"
+  type_id: 0x0ccc6c48
+  offset: 256
+}
+member {
+  id: 0x35bdc4be
+  name: "pcs_validate"
+  type_id: 0x2fc40311
+}
+member {
+  id: 0x8727635b
+  name: "pctlops"
+  type_id: 0x329fbf2a
+  offset: 192
+}
+member {
+  id: 0x672690f4
+  name: "pd"
+  type_id: 0x22669bc4
+  offset: 14528
+}
+member {
+  id: 0x6733a0da
+  name: "pd"
+  type_id: 0x3754d634
+  offset: 7296
+}
+member {
+  id: 0x6733a6b6
+  name: "pd"
+  type_id: 0x3754d634
+  offset: 8000
+}
+member {
+  id: 0x6733abb6
+  name: "pd"
+  type_id: 0x3754d634
+  offset: 7744
+}
+member {
+  id: 0x6733ad2e
+  name: "pd"
+  type_id: 0x3754d634
+  offset: 448
+}
+member {
+  id: 0x6733ae4f
+  name: "pd"
+  type_id: 0x3754d634
+  offset: 7488
+}
+member {
+  id: 0x67acf3db
+  name: "pd"
+  type_id: 0xa80a04d8
+  offset: 1472
+}
+member {
+  id: 0xc34fc6f4
+  name: "pd_alloc_fn"
+  type_id: 0x284dc6d3
+  offset: 448
+}
+member {
+  id: 0x769578e9
+  name: "pd_capable"
+  type_id: 0x6d7f5ff6
+  offset: 7904
+}
+member {
+  id: 0x24dcb717
+  name: "pd_d1d0_rec"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0xa3f385a4
+  name: "pd_d2d0_rec"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x50429455
+  name: "pd_event_lock"
+  type_id: 0xf313e71a
+  offset: 2688
+}
+member {
+  id: 0xd1b752a3
+  name: "pd_events"
+  type_id: 0xc9082b19
+  offset: 2720
+}
+member {
+  id: 0x956576a6
+  name: "pd_free_fn"
+  type_id: 0x25c6650b
+  offset: 704
+}
+member {
+  id: 0x99103ae8
+  name: "pd_get"
+  type_id: 0x32daa2f4
+  offset: 320
+}
+member {
+  id: 0x0e0f4b25
+  name: "pd_id"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x3b36d20b
+  name: "pd_init_fn"
+  type_id: 0x14ce1d40
+  offset: 512
+}
+member {
+  id: 0x28d07b74
+  name: "pd_offline_fn"
+  type_id: 0x31d383cf
+  offset: 640
+}
+member {
+  id: 0x16a8e734
+  name: "pd_online_fn"
+  type_id: 0x2e4d83a3
+  offset: 576
+}
+member {
+  id: 0xa9cc2830
+  name: "pd_reset_stats_fn"
+  type_id: 0x1323d62c
+  offset: 768
+}
+member {
+  id: 0x148dd054
+  name: "pd_revision"
+  type_id: 0x914dbfdc
+  offset: 128
+}
+member {
+  id: 0x148ddd0a
+  name: "pd_revision"
+  type_id: 0x914dbfdc
+  offset: 80
+}
+member {
+  id: 0x148ddeb3
+  name: "pd_revision"
+  type_id: 0x914dbfdc
+  offset: 7648
+}
+member {
+  id: 0xaff438e4
+  name: "pd_set"
+  type_id: 0x2eb152dc
+  offset: 384
+}
+member {
+  id: 0x49818f6d
+  name: "pd_stat_fn"
+  type_id: 0x19dcb9e2
+  offset: 832
+}
+member {
+  id: 0x07fc5ef7
+  name: "pd_supported"
+  type_id: 0x6d7f5ff6
+  offset: 2168
+}
+member {
+  id: 0x904e9fd3
+  name: "pd_transmit"
+  type_id: 0x2ed335c2
+  offset: 960
+}
+member {
+  id: 0xd203429d
+  name: "pd_version"
+  type_id: 0x914dbfdc
+  offset: 96
+}
+member {
+  id: 0x03ff2305
+  name: "pdata"
+  type_id: 0x2d222ff1
+  offset: 2432
+}
+member {
+  id: 0x5a412c6a
+  name: "pdata_size"
+  type_id: 0xf435685e
+  offset: 448
+}
+member {
+  id: 0x58733d10
+  name: "pde_openers"
+  type_id: 0xd3c80119
+  offset: 64
+}
+member {
+  id: 0x8bc715c7
+  name: "pde_rcvlist_all"
+  type_id: 0x184052fc
+  offset: 192
+}
+member {
+  id: 0x39999813
+  name: "pde_rcvlist_eff"
+  type_id: 0x184052fc
+  offset: 448
+}
+member {
+  id: 0xc946c360
+  name: "pde_rcvlist_err"
+  type_id: 0x184052fc
+  offset: 512
+}
+member {
+  id: 0x1597abb9
+  name: "pde_rcvlist_fil"
+  type_id: 0x184052fc
+  offset: 256
+}
+member {
+  id: 0xa6d4745a
+  name: "pde_rcvlist_inv"
+  type_id: 0x184052fc
+  offset: 320
+}
+member {
+  id: 0x01482817
+  name: "pde_rcvlist_sff"
+  type_id: 0x184052fc
+  offset: 384
+}
+member {
+  id: 0x228b5849
+  name: "pde_reset_stats"
+  type_id: 0x184052fc
+  offset: 128
+}
+member {
+  id: 0x1d6bf1a8
+  name: "pde_stats"
+  type_id: 0x184052fc
+  offset: 64
+}
+member {
+  id: 0x4fe1718c
+  name: "pde_unload_completion"
+  type_id: 0x0562c566
+  offset: 256
+}
+member {
+  id: 0xda3496b4
+  name: "pde_unload_lock"
+  type_id: 0xf313e71a
+  offset: 192
+}
+member {
+  id: 0x1b1fb6c3
+  name: "pdeath_signal"
+  type_id: 0x6720d32f
+  offset: 11904
+}
+member {
+  id: 0x414b677e
+  name: "pdestructor"
+  type_id: 0x0d15cee5
+  offset: 384
+}
+member {
+  id: 0xb829e445
+  name: "pdev"
+  type_id: 0x11e6864c
+}
+member {
+  id: 0xa2ef9390
+  name: "pdst"
+  type_id: 0x7584e7da
+  offset: 272
+}
+member {
+  id: 0xa2ef971a
+  name: "pdst"
+  type_id: 0x7584e7da
+  offset: 80
+}
+member {
+  id: 0x88e273b6
+  name: "pdt_1f_for_no_lun"
+  type_id: 0x4585663f
+  offset: 7714
+  bitsize: 1
+}
+member {
+  id: 0xafb272a1
+  name: "pdu"
+  type_id: 0x5e9b9471
+  offset: 256
+}
+member {
+  id: 0x6ec785ce
+  name: "peak"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x89393563
+  name: "peak_bw"
+  type_id: 0xc9082b19
+  offset: 800
+}
+member {
+  id: 0x89393e5d
+  name: "peak_bw"
+  type_id: 0xc9082b19
+  offset: 352
+}
+member {
+  id: 0x375e7d1a
+  name: "peak_states"
+  type_id: 0xc9082b19
+  offset: 76160
+}
+member {
+  id: 0xe97773b2
+  name: "peakrate_bytes_ps"
+  type_id: 0x92233392
+  offset: 128
+}
+member {
+  id: 0x7f573596
+  name: "peek"
+  type_id: 0x125f621f
+  offset: 448
+}
+member {
+  id: 0xa62afb0a
+  name: "peek_data"
+  type_id: 0x36106ed4
+  offset: 320
+}
+member {
+  id: 0x55a9c021
+  name: "peek_len"
+  type_id: 0x2cf603f0
+  offset: 1472
+}
+member {
+  id: 0x16213c73
+  name: "peeked"
+  type_id: 0xb3e7bac9
+  offset: 1012
+  bitsize: 1
+}
+member {
+  id: 0xb71bcfd6
+  name: "peer"
+  type_id: 0x92233392
+}
+member {
+  id: 0xb7fc7bad
+  name: "peer"
+  type_id: 0x75918642
+  offset: 7872
+}
+member {
+  id: 0x3be8531a
+  name: "peer2peer"
+  type_id: 0x6d7f5ff6
+  offset: 352
+}
+member {
+  id: 0xd9fb42ad
+  name: "peer_caps"
+  type_id: 0x914dbfdc
+  offset: 7824
+}
+member {
+  id: 0xeb14d7f0
+  name: "peer_cookie"
+  type_id: 0xee699492
+  offset: 352
+}
+member {
+  id: 0xeb14de49
+  name: "peer_cookie"
+  type_id: 0xee699492
+  offset: 160
+}
+member {
+  id: 0xaffd48eb
+  name: "peer_cookie_len"
+  type_id: 0x6720d32f
+  offset: 224
+}
+member {
+  id: 0xaffd49af
+  name: "peer_cookie_len"
+  type_id: 0x6720d32f
+  offset: 416
+}
+member {
+  id: 0xe1cec8c2
+  name: "peer_ip"
+  type_id: 0xa54936d5
+  offset: 64
+}
+member {
+  id: 0xe1cecc23
+  name: "peer_ip"
+  type_id: 0xa54936d5
+}
+member {
+  id: 0xf71d8398
+  name: "peer_ip6"
+  type_id: 0x11d941b8
+  offset: 192
+}
+member {
+  id: 0xf76177f0
+  name: "peer_ip6"
+  type_id: 0x6d25e07f
+}
+member {
+  id: 0xc65c3855
+  name: "peer_secid"
+  type_id: 0xc9082b19
+  offset: 1888
+}
+member {
+  id: 0x35b0823e
+  name: "peer_session_id"
+  type_id: 0xc9082b19
+  offset: 224
+}
+member {
+  id: 0x4bda1298
+  name: "peer_shutdown"
+  type_id: 0xc9082b19
+  offset: 11296
+}
+member {
+  id: 0x2ac6dfd8
+  name: "peer_tunnel_id"
+  type_id: 0xc9082b19
+  offset: 1376
+}
+member {
+  id: 0x43389f67
+  name: "peer_udp_port"
+  type_id: 0x914dbfdc
+  offset: 272
+}
+member {
+  id: 0x43dc5eb0
+  name: "peer_udp_port"
+  type_id: 0x7584e7da
+  offset: 304
+}
+member {
+  id: 0xc29a8123
+  name: "peers"
+  type_id: 0x0fd62916
+  offset: 2368
+}
+member {
+  id: 0xc29a8766
+  name: "peers"
+  type_id: 0x0fd62916
+  offset: 3200
+}
+member {
+  id: 0x3feb3084
+  name: "pel"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xfe933c61
+  name: "pend_le_conns"
+  type_id: 0xd3c80119
+  offset: 30592
+}
+member {
+  id: 0x5520b6a1
+  name: "pend_le_reports"
+  type_id: 0xd3c80119
+  offset: 30720
+}
+member {
+  id: 0xdcf13bd4
+  name: "pend_page"
+  type_id: 0x06835e9c
+  offset: 128
+}
+member {
+  id: 0x8109b274
+  name: "pendbaser"
+  type_id: 0x92233392
+  offset: 31808
+}
+member {
+  id: 0xf91c8462
+  name: "pending"
+  type_id: 0xd3c80119
+  offset: 192
+}
+member {
+  id: 0xf91c8b6c
+  name: "pending"
+  type_id: 0xd3c80119
+  offset: 320
+}
+member {
+  id: 0xf91c8cab
+  name: "pending"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0xf9296367
+  name: "pending"
+  type_id: 0xe62ebf07
+  offset: 576
+}
+member {
+  id: 0xf9518463
+  name: "pending"
+  type_id: 0x9ec07527
+  offset: 17856
+}
+member {
+  id: 0xf98ac68d
+  name: "pending"
+  type_id: 0x4585663f
+  offset: 672
+}
+member {
+  id: 0xf992ce19
+  name: "pending"
+  type_id: 0x5d8155a5
+  offset: 8
+}
+member {
+  id: 0xf9a2335b
+  name: "pending"
+  type_id: 0x6d7f5ff6
+  offset: 768
+}
+member {
+  id: 0xf9e6133e
+  name: "pending"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0x692c76a5
+  name: "pending_addr"
+  type_id: 0x33756485
+  offset: 6592
+}
+member {
+  id: 0x53869c3a
+  name: "pending_disable"
+  type_id: 0x4585663f
+  offset: 6528
+}
+member {
+  id: 0x5e9a3cf4
+  name: "pending_event"
+  type_id: 0x6d7f5ff6
+  offset: 896
+}
+member {
+  id: 0x34ebe213
+  name: "pending_event_list"
+  type_id: 0xd3c80119
+  offset: 1984
+}
+member {
+  id: 0xda1cf3a6
+  name: "pending_events"
+  type_id: 0xb914bfab
+  offset: 3008
+}
+member {
+  id: 0x5503fbb7
+  name: "pending_ibis"
+  type_id: 0x74d29cf1
+  offset: 256
+}
+member {
+  id: 0x9f9c13ba
+  name: "pending_irq"
+  type_id: 0xb95bf932
+  offset: 6656
+}
+member {
+  id: 0x33752173
+  name: "pending_kill"
+  type_id: 0x4585663f
+  offset: 6496
+}
+member {
+  id: 0x141c8cee
+  name: "pending_last"
+  type_id: 0x6d7f5ff6
+  offset: 960
+}
+member {
+  id: 0x004ca63d
+  name: "pending_latch"
+  type_id: 0x6d7f5ff6
+  offset: 488
+}
+member {
+  id: 0xe53a2590
+  name: "pending_link"
+  type_id: 0xd3c80119
+  offset: 448
+}
+member {
+  id: 0xb2f24eac
+  name: "pending_links"
+  type_id: 0xd3c80119
+  offset: 7680
+}
+member {
+  id: 0x7a4a163b
+  name: "pending_list"
+  type_id: 0xd3c80119
+  offset: 1088
+}
+member {
+  id: 0x7a4a1d30
+  name: "pending_list"
+  type_id: 0xd3c80119
+  offset: 1280
+}
+member {
+  id: 0x92251f1a
+  name: "pending_mounts"
+  type_id: 0x4585663f
+  offset: 928
+}
+member {
+  id: 0x09b42908
+  name: "pending_page"
+  type_id: 0xedf277ba
+  offset: 320
+}
+member {
+  id: 0x8c0336f4
+  name: "pending_reset"
+  type_id: 0x6d7f5ff6
+  offset: 6320
+}
+member {
+  id: 0xe6611b8e
+  name: "pending_rx"
+  type_id: 0x578f9c2b
+  offset: 1856
+}
+member {
+  id: 0x18992cf1
+  name: "pending_rx_work"
+  type_id: 0x1f3c8679
+  offset: 2048
+}
+member {
+  id: 0x74f0dee3
+  name: "pending_sec_level"
+  type_id: 0xb3e7bac9
+  offset: 760
+}
+member {
+  id: 0xf2481d71
+  name: "pending_sigtrap"
+  type_id: 0x4585663f
+  offset: 6560
+}
+member {
+  id: 0x614fc162
+  name: "pending_strong_ref"
+  type_id: 0x295c7202
+  offset: 1
+  bitsize: 1
+}
+member {
+  id: 0x13d6fa39
+  name: "pending_task"
+  type_id: 0xe3222f5b
+  offset: 6912
+}
+member {
+  id: 0x80d710f4
+  name: "pending_timer"
+  type_id: 0xd298e888
+  offset: 640
+}
+member {
+  id: 0xa2261158
+  name: "pending_tree"
+  type_id: 0xd0f3b5bf
+  offset: 384
+}
+member {
+  id: 0x7fb3b2ea
+  name: "pending_wakeup"
+  type_id: 0x4585663f
+  offset: 6464
+}
+member {
+  id: 0x127c7ffd
+  name: "pending_weak_ref"
+  type_id: 0x295c7202
+  offset: 3
+  bitsize: 1
+}
+member {
+  id: 0x3f7ad237
+  name: "pending_work"
+  type_id: 0x4585663f
+  offset: 7040
+}
+member {
+  id: 0x3fce46f6
+  name: "pending_work"
+  type_id: 0xf1159c31
+  offset: 9088
+}
+member {
+  id: 0x3fec9036
+  name: "pending_work"
+  type_id: 0xd3c80119
+  offset: 2240
+}
+member {
+  id: 0xfa7845a1
+  name: "per_adv_data"
+  type_id: 0x6afc5176
+  offset: 43152
+}
+member {
+  id: 0x1b95ac31
+  name: "per_adv_data_len"
+  type_id: 0xb3e7bac9
+  offset: 45168
+}
+member {
+  id: 0x528e9321
+  name: "per_band_rssi_thold"
+  type_id: 0x94a6f18b
+  offset: 352
+}
+member {
+  id: 0x2dbf0f8e
+  name: "per_clear"
+  type_id: 0x4585663f
+  offset: 672
+}
+member {
+  id: 0xa51c29bd
+  name: "per_cpu_fw_alloc"
+  type_id: 0x13580d6c
+  offset: 2112
+}
+member {
+  id: 0xd8353c99
+  name: "per_cpu_nodestats"
+  type_id: 0x10a757c8
+  offset: 70656
+}
+member {
+  id: 0x35e57e51
+  name: "per_cpu_pageset"
+  type_id: 0x1321a5b2
+  offset: 704
+}
+member {
+  id: 0xf050196f
+  name: "per_cpu_zonestats"
+  type_id: 0x2f5f8053
+  offset: 768
+}
+member {
+  id: 0xd61b14f9
+  name: "per_parent_data"
+  type_id: 0x6d7f5ff6
+  offset: 1736
+}
+member {
+  id: 0x6816acc0
+  name: "percpu"
+  type_id: 0x18bd6530
+  offset: 6144
+}
+member {
+  id: 0x68693f75
+  name: "percpu"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0xd782572d
+  name: "percpu_affinity"
+  type_id: 0x310ec01d
+  offset: 1472
+}
+member {
+  id: 0x3c3764f7
+  name: "percpu_buf"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0xdcc5c8a3
+  name: "percpu_cluster"
+  type_id: 0x3eaa642b
+  offset: 1152
+}
+member {
+  id: 0x2ad85041
+  name: "percpu_count_ptr"
+  type_id: 0x33756485
+}
+member {
+  id: 0xaf08ef33
+  name: "percpu_dev_id"
+  type_id: 0x18bd6530
+  offset: 128
+}
+member {
+  id: 0x7dbd4b0a
+  name: "percpu_dir"
+  type_id: 0x120540d1
+  offset: 1600
+}
+member {
+  id: 0x2bcae2ba
+  name: "percpu_drift_mark"
+  type_id: 0x33756485
+  offset: 11264
+}
+member {
+  id: 0xf2bf231a
+  name: "percpu_enabled"
+  type_id: 0x38fa32ef
+  offset: 1408
+}
+member {
+  id: 0xc8a03455
+  name: "percpu_msg_bytes"
+  type_id: 0x04fd619c
+  offset: 6784
+}
+member {
+  id: 0x9d311a98
+  name: "percpu_msg_hdrs"
+  type_id: 0x04fd619c
+  offset: 7104
+}
+member {
+  id: 0x34c743f9
+  name: "percpu_pmu"
+  type_id: 0x331b3d77
+  offset: 2176
+}
+member {
+  id: 0x4db3a084
+  name: "percpu_pvec_drained"
+  type_id: 0x6d7f5ff6
+  offset: 8
+}
+member {
+  id: 0x9c4094ae
+  name: "percpu_size"
+  type_id: 0x4585663f
+  offset: 6208
+}
+member {
+  id: 0xf94346ab
+  name: "perf_event"
+  type_id: 0x1dce0fdd
+  offset: 64
+}
+member {
+  id: 0xf96ca45e
+  name: "perf_event"
+  type_id: 0x32281bdf
+}
+member {
+  id: 0x25545e86
+  name: "perf_event_ctxp"
+  type_id: 0x64408d2f
+  offset: 21632
+}
+member {
+  id: 0x48f3a473
+  name: "perf_event_list"
+  type_id: 0xd3c80119
+  offset: 22144
+}
+member {
+  id: 0x458bf5d2
+  name: "perf_event_mutex"
+  type_id: 0xa7c362b0
+  offset: 21760
+}
+member {
+  id: 0x3b7ddf24
+  name: "perf_events"
+  type_id: 0x1d33485a
+  offset: 960
+}
+member {
+  id: 0x5ff33db5
+  name: "perf_perm"
+  type_id: 0x2f840787
+  offset: 1088
+}
+member {
+  id: 0x7d606787
+  name: "perf_probe"
+  type_id: 0x18bd6530
+  offset: 128
+}
+member {
+  id: 0x326fdb82
+  name: "perf_refcount"
+  type_id: 0x6720d32f
+  offset: 928
+}
+member {
+  id: 0xefb144e2
+  name: "performance_state"
+  type_id: 0x4585663f
+  offset: 10592
+}
+member {
+  id: 0xff34d211
+  name: "period"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0xff34d5d6
+  name: "period"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xff42257f
+  name: "period"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0xff60941f
+  name: "period"
+  type_id: 0x11c404ba
+  offset: 256
+}
+member {
+  id: 0xff995d4e
+  name: "period"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0xffe019d6
+  name: "period"
+  type_id: 0x914dbfdc
+  offset: 288
+}
+member {
+  id: 0xffe37383
+  name: "period"
+  type_id: 0x92233392
+}
+member {
+  id: 0xffe37762
+  name: "period"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0xffed3de4
+  name: "period"
+  type_id: 0x9c649622
+  offset: 128
+}
+member {
+  id: 0x6474f9b3
+  name: "period_bytes"
+  type_id: 0x0baa70a7
+  offset: 480
+}
+member {
+  id: 0x4b77ed46
+  name: "period_bytes_max"
+  type_id: 0xf435685e
+  offset: 448
+}
+member {
+  id: 0xc171cc08
+  name: "period_bytes_min"
+  type_id: 0xf435685e
+  offset: 384
+}
+member {
+  id: 0xcf1c894e
+  name: "period_contrib"
+  type_id: 0xc9082b19
+  offset: 224
+}
+member {
+  id: 0x3d77e8c3
+  name: "period_elapsed_pending"
+  type_id: 0x4585663f
+  offset: 576
+}
+member {
+  id: 0x8a43cc03
+  name: "period_left"
+  type_id: 0x09f9643d
+  offset: 64
+}
+member {
+  id: 0x58d7ca4a
+  name: "period_size"
+  type_id: 0xa8fff47c
+  offset: 960
+}
+member {
+  id: 0x19d9d17e
+  name: "period_size_max"
+  type_id: 0x0baa70a7
+  offset: 704
+}
+member {
+  id: 0xac3c989d
+  name: "period_size_min"
+  type_id: 0x0baa70a7
+  offset: 672
+}
+member {
+  id: 0x2cd1844d
+  name: "period_step"
+  type_id: 0x4585663f
+  offset: 1504
+}
+member {
+  id: 0xe39a23e1
+  name: "period_time"
+  type_id: 0x33756485
+  offset: 896
+}
+member {
+  id: 0x812f3ed4
+  name: "period_timer"
+  type_id: 0xd298e888
+  offset: 448
+}
+member {
+  id: 0x6eae7188
+  name: "periodic"
+  type_id: 0x74314a25
+}
+member {
+  id: 0x6ed23e9e
+  name: "periodic"
+  type_id: 0x087aa58e
+  offset: 2496
+}
+member {
+  id: 0x100cfc4f
+  name: "periodic_count"
+  type_id: 0x4585663f
+  offset: 3328
+}
+member {
+  id: 0x34971cc8
+  name: "periodic_dma"
+  type_id: 0xe02e14d6
+  offset: 2560
+}
+member {
+  id: 0xac3a0b3b
+  name: "periodic_gc_runs"
+  type_id: 0x33756485
+  offset: 512
+}
+member {
+  id: 0xcf899a11
+  name: "periodic_size"
+  type_id: 0x4585663f
+  offset: 2432
+}
+member {
+  id: 0xb5d49851
+  name: "periods"
+  type_id: 0x4585663f
+  offset: 1024
+}
+member {
+  id: 0x97921038
+  name: "periods_max"
+  type_id: 0x0baa70a7
+  offset: 640
+}
+member {
+  id: 0x97dc3788
+  name: "periods_max"
+  type_id: 0x4585663f
+  offset: 544
+}
+member {
+  id: 0xd2812e8e
+  name: "periods_min"
+  type_id: 0x0baa70a7
+  offset: 608
+}
+member {
+  id: 0xd2cf0a72
+  name: "periods_min"
+  type_id: 0x4585663f
+  offset: 512
+}
+member {
+  id: 0x1c86046e
+  name: "peripheral_config"
+  type_id: 0x18bd6530
+  offset: 320
+}
+member {
+  id: 0x1c8604de
+  name: "peripheral_config"
+  type_id: 0x18bd6530
+  offset: 448
+}
+member {
+  id: 0x3cf3821b
+  name: "peripheral_size"
+  type_id: 0xf435685e
+  offset: 384
+}
+member {
+  id: 0x3cf38891
+  name: "peripheral_size"
+  type_id: 0xf435685e
+  offset: 512
+}
+member {
+  id: 0x8f96e500
+  name: "periphid"
+  type_id: 0x4585663f
+  offset: 8256
+}
+member {
+  id: 0x041acfb1
+  name: "periphid_lock"
+  type_id: 0xa7c362b0
+  offset: 8320
+}
+member {
+  id: 0xf297f05c
+  name: "perm"
+  type_id: 0xb3e7bac9
+  offset: 192
+}
+member {
+  id: 0xf2c23813
+  name: "perm"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0xf2dc5564
+  name: "perm"
+  type_id: 0xf8428255
+  offset: 192
+}
+member {
+  id: 0xf2e55440
+  name: "perm"
+  type_id: 0xc14619eb
+  offset: 1088
+}
+member {
+  id: 0xf2ed1e76
+  name: "perm"
+  type_id: 0xc9082b19
+  offset: 576
+}
+member {
+  id: 0xf0266f0d
+  name: "perm_addr"
+  type_id: 0x43acdd98
+  offset: 4384
+}
+member {
+  id: 0xf0ce3cc9
+  name: "perm_addr"
+  type_id: 0xabf64f28
+  offset: 384
+}
+member {
+  id: 0xe4cc2b52
+  name: "perm_extended_addr"
+  type_id: 0x78f4e574
+  offset: 1728
+}
+member {
+  id: 0x292e8d62
+  name: "perm_gid"
+  type_id: 0x96361f7e
+  offset: 192
+}
+member {
+  id: 0xf307eb1a
+  name: "perm_mode"
+  type_id: 0x1253769c
+  offset: 224
+}
+member {
+  id: 0xbc2d2f6d
+  name: "perm_uid"
+  type_id: 0xa215d8bb
+  offset: 160
+}
+member {
+  id: 0xc2284f3c
+  name: "permission"
+  type_id: 0x2d174c02
+  offset: 128
+}
+member {
+  id: 0xf0063172
+  name: "permissions"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xf05f0781
+  name: "permissions"
+  type_id: 0x9036114e
+  offset: 192
+}
+member {
+  id: 0xf05f0ba9
+  name: "permissions"
+  type_id: 0x9036114e
+  offset: 64
+}
+member {
+  id: 0xf0e1b1fd
+  name: "permissions"
+  type_id: 0x2e820213
+  offset: 896
+}
+member {
+  id: 0x616c799d
+  name: "permissive_map"
+  type_id: 0x86a931f9
+  offset: 4480
+}
+member {
+  id: 0xd079425e
+  name: "permitted"
+  type_id: 0xd9449876
+}
+member {
+  id: 0xdb129b64
+  name: "perms"
+  type_id: 0x668e8237
+  offset: 64
+}
+member {
+  id: 0xdb5d43cb
+  name: "perms"
+  type_id: 0x295c7202
+  offset: 16
+}
+member {
+  id: 0xdbb0c417
+  name: "perms"
+  type_id: 0xc4d82b11
+  offset: 32
+}
+member {
+  id: 0xc18525b9
+  name: "pernet"
+  type_id: 0x6d7f5ff6
+  offset: 576
+}
+member {
+  id: 0xe87124fa
+  name: "perout"
+  type_id: 0xdb9f5d61
+}
+member {
+  id: 0xfaf2130e
+  name: "pers_next"
+  type_id: 0xc9082b19
+  offset: 3968
+}
+member {
+  id: 0xe4db73cd
+  name: "persist_enabled"
+  type_id: 0x4585663f
+  offset: 11177
+  bitsize: 1
+}
+member {
+  id: 0x21b08dd3
+  name: "persistent"
+  type_id: 0x6d7f5ff6
+  offset: 232
+}
+member {
+  id: 0xbf23b1d6
+  name: "personalities"
+  type_id: 0x80c20070
+  offset: 3840
+}
+member {
+  id: 0x2a4197f6
+  name: "personality"
+  type_id: 0xe8034002
+  offset: 336
+}
+member {
+  id: 0x2a9ae98e
+  name: "personality"
+  type_id: 0x33756485
+  offset: 6272
+}
+member {
+  id: 0x2aec1994
+  name: "personality"
+  type_id: 0x4585663f
+  offset: 12032
+}
+member {
+  id: 0xca1045fb
+  name: "pf"
+  type_id: 0x914dbfdc
+  offset: 32
+}
+member {
+  id: 0xca104c21
+  name: "pf"
+  type_id: 0x914dbfdc
+  offset: 64
+}
+member {
+  id: 0xcaa851c4
+  name: "pf"
+  type_id: 0x295c7202
+  offset: 192
+}
+member {
+  id: 0xcaa852eb
+  name: "pf"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0x1ffe8e64
+  name: "pfmemalloc"
+  type_id: 0xb3e7bac9
+  offset: 1014
+  bitsize: 1
+}
+member {
+  id: 0xdfaa22c7
+  name: "pfmemalloc"
+  type_id: 0x6d7f5ff6
+  offset: 128
+}
+member {
+  id: 0x1870ebaa
+  name: "pfmemalloc_wait"
+  type_id: 0x03913382
+  offset: 52352
+}
+member {
+  id: 0xeb463452
+  name: "pfn_base"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0xe32968ec
+  name: "pfn_hi"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0x9defad75
+  name: "pfn_ida"
+  type_id: 0xe1a31370
+  offset: 7552
+}
+member {
+  id: 0x4cfb0498
+  name: "pfn_lo"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0xc43dc026
+  name: "pfn_mkwrite"
+  type_id: 0x39290604
+  offset: 640
+}
+member {
+  id: 0x5099f186
+  name: "pfn_seed"
+  type_id: 0x0258f96e
+  offset: 8000
+}
+member {
+  id: 0x8957764f
+  name: "pfns"
+  type_id: 0x6e1fde8f
+  offset: 64
+}
+member {
+  id: 0x03a47022
+  name: "pfr0_csv2"
+  type_id: 0x295c7202
+  offset: 3136
+}
+member {
+  id: 0x42988d63
+  name: "pfr0_csv3"
+  type_id: 0x295c7202
+  offset: 3144
+}
+member {
+  id: 0x88830a16
+  name: "pg"
+  type_id: 0x4585663f
+  offset: 1184
+}
+member {
+  id: 0x331a3623
+  name: "pgd"
+  type_id: 0x11281698
+  offset: 64
+}
+member {
+  id: 0x332a4920
+  name: "pgd"
+  type_id: 0x2154832c
+  offset: 448
+}
+member {
+  id: 0x33a4083e
+  name: "pgd"
+  type_id: 0xaf12ea2c
+}
+member {
+  id: 0x33e89b57
+  name: "pgd"
+  type_id: 0xe381831a
+}
+member {
+  id: 0x99236fa3
+  name: "pgd_phys"
+  type_id: 0xbdd18903
+  offset: 64
+}
+member {
+  id: 0x2d272759
+  name: "pgdat"
+  type_id: 0x03038214
+  offset: 11200
+}
+member {
+  id: 0xdd74def2
+  name: "pgm_code"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x2b8ac6b5
+  name: "pgmap"
+  type_id: 0x129a6a0a
+}
+member {
+  id: 0xadfde23f
+  name: "pgoff"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xadfde675
+  name: "pgoff"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0xadfdef1c
+  name: "pgoff"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0xbe731a7d
+  name: "pgprot"
+  type_id: 0xc32dc55c
+}
+member {
+  id: 0x3009b08a
+  name: "pgrp"
+  type_id: 0x18456730
+  offset: 64
+}
+member {
+  id: 0x334dea5b
+  name: "pgs"
+  type_id: 0x0b30ee00
+  offset: 384
+}
+member {
+  id: 0x725d40d7
+  name: "pgsize"
+  type_id: 0xf435685e
+  offset: 128
+}
+member {
+  id: 0xa55690a4
+  name: "pgsize_bitmap"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xa5569cb6
+  name: "pgsize_bitmap"
+  type_id: 0x33756485
+  offset: 960
+}
+member {
+  id: 0xa5569d87
+  name: "pgsize_bitmap"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x7733c220
+  name: "pgsz"
+  type_id: 0xc9082b19
+  offset: 224
+}
+member {
+  id: 0x7f170713
+  name: "pgt"
+  type_id: 0x114e61a5
+  offset: 128
+}
+member {
+  id: 0x5a4cacba
+  name: "pgtables_bytes"
+  type_id: 0xb02b353a
+  offset: 640
+}
+member {
+  id: 0xdb5ad525
+  name: "phandle"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0xdb759b4a
+  name: "phandle"
+  type_id: 0x1c30a9ad
+  offset: 416
+}
+member {
+  id: 0xdb759dcb
+  name: "phandle"
+  type_id: 0x1c30a9ad
+  offset: 64
+}
+member {
+  id: 0x5e389e55
+  name: "phandle_end"
+  type_id: 0x33b32811
+  offset: 256
+}
+member {
+  id: 0x268a2a55
+  name: "phase"
+  type_id: 0xd19284d3
+  offset: 1352
+  bitsize: 8
+}
+member {
+  id: 0x39141955
+  name: "phase"
+  type_id: 0x9c649622
+}
+member {
+  id: 0x391938e5
+  name: "phase"
+  type_id: 0x914dbfdc
+  offset: 304
+}
+member {
+  id: 0x39607a62
+  name: "phase"
+  type_id: 0xe8034002
+  offset: 64
+}
+member {
+  id: 0x39cdf0ed
+  name: "phase"
+  type_id: 0x4585663f
+  offset: 44992
+}
+member {
+  id: 0x39ef5b6d
+  name: "phase"
+  type_id: 0x6720d32f
+  offset: 1280
+}
+member {
+  id: 0xad142fe3
+  name: "phase_error"
+  type_id: 0x4585663f
+  offset: 3266
+  bitsize: 1
+}
+member {
+  id: 0x2470a8c5
+  name: "phase_seg1"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0xffbf84cd
+  name: "phase_seg2"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0x8ecc8cf1
+  name: "phase_uf"
+  type_id: 0x295c7202
+  offset: 328
+}
+member {
+  id: 0x04d41121
+  name: "phash_buckets"
+  type_id: 0x041fb53e
+  offset: 5696
+}
+member {
+  id: 0x7b93229e
+  name: "phc_index"
+  type_id: 0x0faae5b1
+  offset: 64
+}
+member {
+  id: 0xce64db85
+  name: "phdr"
+  type_id: 0xced65086
+  offset: 6944
+}
+member {
+  id: 0xab602669
+  name: "phonet_magic_present"
+  type_id: 0x6d7f5ff6
+  offset: 896
+}
+member {
+  id: 0xb05a14c2
+  name: "phy"
+  type_id: 0x29a77f06
+  offset: 192
+}
+member {
+  id: 0xb0784305
+  name: "phy"
+  type_id: 0x0bfc9031
+  offset: 64
+}
+member {
+  id: 0xb07847e4
+  name: "phy"
+  type_id: 0x0bfc9031
+}
+member {
+  id: 0xb0c0582f
+  name: "phy"
+  type_id: 0xb3e7bac9
+  offset: 64
+}
+member {
+  id: 0xcc9165e4
+  name: "phy_address"
+  type_id: 0xb3e7bac9
+  offset: 128
+}
+member {
+  id: 0xcc9168ba
+  name: "phy_address"
+  type_id: 0xb3e7bac9
+  offset: 80
+}
+member {
+  id: 0x34339037
+  name: "phy_cap_info"
+  type_id: 0xa164938f
+  offset: 16
+}
+member {
+  id: 0x34505c20
+  name: "phy_cap_info"
+  type_id: 0xc2aafbc8
+  offset: 48
+}
+member {
+  id: 0xad6edd33
+  name: "phy_id"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xadc0f29b
+  name: "phy_id"
+  type_id: 0xc9082b19
+  offset: 1472
+}
+member {
+  id: 0xadc0f8ad
+  name: "phy_id"
+  type_id: 0xc9082b19
+  offset: 8128
+}
+member {
+  id: 0xade1fea0
+  name: "phy_id"
+  type_id: 0xe8034002
+}
+member {
+  id: 0xd64be311
+  name: "phy_id_mask"
+  type_id: 0xc9082b19
+  offset: 1600
+}
+member {
+  id: 0xd6e5c6b0
+  name: "phy_id_mask"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x6ffc7b88
+  name: "phy_ignore_ta_mask"
+  type_id: 0xc9082b19
+  offset: 18976
+}
+member {
+  id: 0x2f7fef5e
+  name: "phy_initialization"
+  type_id: 0x2d883003
+  offset: 1088
+}
+member {
+  id: 0xa29e5c59
+  name: "phy_led_triggers"
+  type_id: 0x23dd1ac6
+  offset: 10240
+}
+member {
+  id: 0x418b90c0
+  name: "phy_link_change"
+  type_id: 0x0dcc3894
+  offset: 12800
+}
+member {
+  id: 0x3c458f83
+  name: "phy_mask"
+  type_id: 0xc9082b19
+  offset: 18944
+}
+member {
+  id: 0x1173939d
+  name: "phy_mutex"
+  type_id: 0xa7c362b0
+  offset: 512
+}
+member {
+  id: 0xf21c331d
+  name: "phy_num_led_triggers"
+  type_id: 0x4585663f
+  offset: 10304
+}
+member {
+  id: 0xba419099
+  name: "phy_roothub"
+  type_id: 0x06b9b8cb
+  offset: 3200
+}
+member {
+  id: 0x11949085
+  name: "phy_state"
+  type_id: 0xdd301cd7
+  offset: 2240
+}
+member {
+  id: 0x00f8d04c
+  name: "phydev"
+  type_id: 0x3176a085
+  offset: 448
+}
+member {
+  id: 0x00f8d368
+  name: "phydev"
+  type_id: 0x3176a085
+  offset: 19008
+}
+member {
+  id: 0x00f8d73b
+  name: "phydev"
+  type_id: 0x3176a085
+}
+member {
+  id: 0xdb42b2d4
+  name: "phylink"
+  type_id: 0x3ea2e6c1
+  offset: 12480
+}
+member {
+  id: 0xc66490fe
+  name: "phylink_disable_state"
+  type_id: 0x33756485
+  offset: 384
+}
+member {
+  id: 0x30029134
+  name: "phys"
+  type_id: 0x5adf57ae
+  offset: 320
+}
+member {
+  id: 0x3002f7d1
+  name: "phys"
+  type_id: 0x5abe7554
+}
+member {
+  id: 0x3065f315
+  name: "phys"
+  type_id: 0x3db8d8c8
+  offset: 60672
+}
+member {
+  id: 0x30665df0
+  name: "phys"
+  type_id: 0x3e10b518
+  offset: 64
+}
+member {
+  id: 0x30b86351
+  name: "phys"
+  type_id: 0xe02e14d6
+  offset: 64
+}
+member {
+  id: 0xbd330153
+  name: "phys_addr"
+  type_id: 0x78f4e574
+}
+member {
+  id: 0xbda3f6f6
+  name: "phys_addr"
+  type_id: 0xe8034002
+}
+member {
+  id: 0xbda607c1
+  name: "phys_addr"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0xbdabdba2
+  name: "phys_addr"
+  type_id: 0xe02e14d6
+}
+member {
+  id: 0xbdd9d476
+  name: "phys_addr"
+  type_id: 0x92233392
+  offset: 1408
+}
+member {
+  id: 0xbddab28a
+  name: "phys_addr"
+  type_id: 0x914dbfdc
+  offset: 1344
+}
+member {
+  id: 0xbddabbe4
+  name: "phys_addr"
+  type_id: 0x914dbfdc
+  offset: 11376
+}
+member {
+  id: 0xbdde9422
+  name: "phys_addr"
+  type_id: 0x9565759f
+  offset: 64
+}
+member {
+  id: 0xbdf625ad
+  name: "phys_addr"
+  type_id: 0xbdd18903
+  offset: 384
+}
+member {
+  id: 0xbdf62cf6
+  name: "phys_addr"
+  type_id: 0xbdd18903
+  offset: 192
+}
+member {
+  id: 0xadafa16c
+  name: "phys_base"
+  type_id: 0xbdd18903
+}
+member {
+  id: 0xadafa1c7
+  name: "phys_base"
+  type_id: 0xbdd18903
+  offset: 256
+}
+member {
+  id: 0xadafa58d
+  name: "phys_base"
+  type_id: 0xbdd18903
+  offset: 64
+}
+member {
+  id: 0xadafa9a5
+  name: "phys_base"
+  type_id: 0xbdd18903
+  offset: 192
+}
+member {
+  id: 0xf07c14d3
+  name: "phys_ext_id"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0xf35b99e7
+  name: "phys_id"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x66a97394
+  name: "phys_to_virt"
+  type_id: 0x14e88d4b
+  offset: 384
+}
+member {
+  id: 0xda31db2e
+  name: "physfn"
+  type_id: 0x11e6864c
+}
+member {
+  id: 0xcab49657
+  name: "physical"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x3a19487a
+  name: "physical_block_size"
+  type_id: 0x4585663f
+  offset: 352
+}
+member {
+  id: 0x1e41eb2a
+  name: "physical_location"
+  type_id: 0x2909aa5b
+  offset: 6656
+}
+member {
+  id: 0xbe573241
+  name: "physical_maximum"
+  type_id: 0x0faae5b1
+  offset: 672
+}
+member {
+  id: 0x4fa37590
+  name: "physical_minimum"
+  type_id: 0x0faae5b1
+  offset: 640
+}
+member {
+  id: 0x743b63e6
+  name: "pi_blocked_on"
+  type_id: 0x27d4bd81
+  offset: 19072
+}
+member {
+  id: 0x3e105334
+  name: "pi_lock"
+  type_id: 0xc8b17aa7
+  offset: 18720
+}
+member {
+  id: 0x71601996
+  name: "pi_mutex"
+  type_id: 0x6a0f9ac9
+  offset: 128
+}
+member {
+  id: 0xca9329f5
+  name: "pi_se"
+  type_id: 0x09484746
+  offset: 1856
+}
+member {
+  id: 0x0732fca1
+  name: "pi_state_cache"
+  type_id: 0x04147d22
+  offset: 21120
+}
+member {
+  id: 0xebd1d6d1
+  name: "pi_state_list"
+  type_id: 0xd3c80119
+  offset: 20992
+}
+member {
+  id: 0x71c12f52
+  name: "pi_top_task"
+  type_id: 0x1d19a9d5
+  offset: 19008
+}
+member {
+  id: 0x2b74ba72
+  name: "pi_tree_entry"
+  type_id: 0x3205ba2f
+  offset: 192
+}
+member {
+  id: 0xcfe68be5
+  name: "pi_waiters"
+  type_id: 0xd0f3b5bf
+  offset: 18880
+}
+member {
+  id: 0x8f5a7558
+  name: "pic_height"
+  type_id: 0x7584e7da
+  offset: 48
+}
+member {
+  id: 0x8fbeb942
+  name: "pic_height"
+  type_id: 0x914dbfdc
+  offset: 96
+}
+member {
+  id: 0x4370f908
+  name: "pic_height_in_luma_samples"
+  type_id: 0xe8034002
+  offset: 32
+}
+member {
+  id: 0x6c760bb2
+  name: "pic_height_in_map_units_minus1"
+  type_id: 0xe8034002
+  offset: 8336
+}
+member {
+  id: 0xf746f3e3
+  name: "pic_init_qp_minus26"
+  type_id: 0x901eaf6a
+  offset: 48
+}
+member {
+  id: 0xc4b4245f
+  name: "pic_init_qs_minus26"
+  type_id: 0x901eaf6a
+  offset: 56
+}
+member {
+  id: 0xc3ea8f56
+  name: "pic_num"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xfafe2363
+  name: "pic_order_cnt_bit_size"
+  type_id: 0xe62ebf07
+  offset: 4352
+}
+member {
+  id: 0x03ca4d80
+  name: "pic_order_cnt_lsb"
+  type_id: 0xe8034002
+  offset: 4208
+}
+member {
+  id: 0x867a7380
+  name: "pic_order_cnt_type"
+  type_id: 0xb3e7bac9
+  offset: 64
+}
+member {
+  id: 0x8045b5fe
+  name: "pic_order_cnt_val"
+  type_id: 0x0faae5b1
+}
+member {
+  id: 0x8045bc7d
+  name: "pic_order_cnt_val"
+  type_id: 0x0faae5b1
+  offset: 96
+}
+member {
+  id: 0xe9437526
+  name: "pic_parameter_set_id"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0x3bcb584d
+  name: "pic_struct"
+  type_id: 0xb3e7bac9
+  offset: 256
+}
+member {
+  id: 0x3b40fbe6
+  name: "pic_width"
+  type_id: 0x914dbfdc
+  offset: 80
+}
+member {
+  id: 0x3ba432c3
+  name: "pic_width"
+  type_id: 0x7584e7da
+  offset: 64
+}
+member {
+  id: 0x716e3334
+  name: "pic_width_in_luma_samples"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0xde8810ce
+  name: "pic_width_in_mbs_minus1"
+  type_id: 0xe8034002
+  offset: 8320
+}
+member {
+  id: 0x35bb32d9
+  name: "pick_next_task"
+  type_id: 0x16a379ef
+  offset: 384
+}
+member {
+  id: 0xed047e32
+  name: "pick_task"
+  type_id: 0x16a379ef
+  offset: 704
+}
+member {
+  id: 0x2e08fd3b
+  name: "picture_aspect"
+  type_id: 0x6b764f15
+  offset: 160
+}
+member {
+  id: 0x2ecd535e
+  name: "picture_aspect"
+  type_id: 0xaedb15fc
+  offset: 544
+}
+member {
+  id: 0x5271306c
+  name: "picture_aspect_ratio"
+  type_id: 0x6b764f15
+  offset: 800
+}
+member {
+  id: 0x52713899
+  name: "picture_aspect_ratio"
+  type_id: 0x6b764f15
+  offset: 928
+}
+member {
+  id: 0xda2bf90d
+  name: "picture_coding_type"
+  type_id: 0xb3e7bac9
+  offset: 192
+}
+member {
+  id: 0x92f43c11
+  name: "picture_structure"
+  type_id: 0xb3e7bac9
+  offset: 200
+}
+member {
+  id: 0x741b46b9
+  name: "pid"
+  type_id: 0x92233392
+}
+member {
+  id: 0x741b4e70
+  name: "pid"
+  type_id: 0x92233392
+  offset: 192
+}
+member {
+  id: 0x7440609a
+  name: "pid"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x74406da1
+  name: "pid"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x746f460e
+  name: "pid"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x746f4b35
+  name: "pid"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x7491240c
+  name: "pid"
+  type_id: 0x18456730
+  offset: 64
+}
+member {
+  id: 0x74912824
+  name: "pid"
+  type_id: 0x18456730
+  offset: 192
+}
+member {
+  id: 0x74912d9b
+  name: "pid"
+  type_id: 0x18456730
+  offset: 1088
+}
+member {
+  id: 0x74912e66
+  name: "pid"
+  type_id: 0x18456730
+  offset: 2880
+}
+member {
+  id: 0x74c0d5ad
+  name: "pid"
+  type_id: 0x49b889e7
+  offset: 768
+}
+member {
+  id: 0x74c0d8b9
+  name: "pid"
+  type_id: 0x49b889e7
+  offset: 12672
+}
+member {
+  id: 0x74c0dd03
+  name: "pid"
+  type_id: 0x49b889e7
+}
+member {
+  id: 0x74ee4246
+  name: "pid"
+  type_id: 0x6720d32f
+  offset: 1024
+}
+member {
+  id: 0x74ee44cb
+  name: "pid"
+  type_id: 0x6720d32f
+  offset: 384
+}
+member {
+  id: 0x74ee4862
+  name: "pid"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x74ee4c9b
+  name: "pid"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x74ee4df7
+  name: "pid"
+  type_id: 0x6720d32f
+  offset: 768
+}
+member {
+  id: 0x74ee4e41
+  name: "pid"
+  type_id: 0x6720d32f
+  offset: 512
+}
+member {
+  id: 0x8346a620
+  name: "pid_allocated"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0x73a835c0
+  name: "pid_cachep"
+  type_id: 0x2efd5036
+  offset: 448
+}
+member {
+  id: 0xd7668594
+  name: "pid_links"
+  type_id: 0x9e24df5e
+  offset: 13568
+}
+member {
+  id: 0x5dd23698
+  name: "pid_ns_for_children"
+  type_id: 0x0a193bb7
+  offset: 256
+}
+member {
+  id: 0xd14a4192
+  name: "pid_type"
+  type_id: 0x94ed3026
+  offset: 128
+}
+member {
+  id: 0xba18a4ca
+  name: "pidlist_mutex"
+  type_id: 0xa7c362b0
+  offset: 8384
+}
+member {
+  id: 0xd93325ed
+  name: "pidlists"
+  type_id: 0xd3c80119
+  offset: 8256
+}
+member {
+  id: 0x762ad441
+  name: "pids"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x76698440
+  name: "pids"
+  type_id: 0x8a5c4ad6
+  offset: 2944
+}
+member {
+  id: 0x90ab80d0
+  name: "pie_enabled"
+  type_id: 0x6720d32f
+  offset: 11200
+}
+member {
+  id: 0x9f521997
+  name: "pie_timer"
+  type_id: 0xcd7704bf
+  offset: 10624
+}
+member {
+  id: 0xb81b89fb
+  name: "pin"
+  type_id: 0x11a99d61
+  offset: 13120
+}
+member {
+  id: 0xb8237475
+  name: "pin"
+  type_id: 0x295c7202
+  offset: 32
+}
+member {
+  id: 0xb8237b58
+  name: "pin"
+  type_id: 0x295c7202
+  offset: 904
+}
+member {
+  id: 0xb82454f5
+  name: "pin"
+  type_id: 0x2e760e50
+  offset: 320
+}
+member {
+  id: 0xb8260867
+  name: "pin"
+  type_id: 0x2c259220
+  offset: 192
+}
+member {
+  id: 0xb8343c4b
+  name: "pin"
+  type_id: 0x3e10b518
+  offset: 128
+}
+member {
+  id: 0xb108a733
+  name: "pin_attr"
+  type_id: 0x0ae4cc78
+  offset: 43904
+}
+member {
+  id: 0xe5725a92
+  name: "pin_attr_group"
+  type_id: 0xed8451a2
+  offset: 43968
+}
+member {
+  id: 0xbbeb5e6f
+  name: "pin_attr_groups"
+  type_id: 0x607a4116
+  offset: 44288
+}
+member {
+  id: 0x59f4296f
+  name: "pin_base"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0x512d1e2b
+  name: "pin_config"
+  type_id: 0x002ace73
+  offset: 512
+}
+member {
+  id: 0xe66f85ee
+  name: "pin_config_config_dbg_show"
+  type_id: 0x0f0625fc
+  offset: 448
+}
+member {
+  id: 0x490d4a3f
+  name: "pin_config_dbg_show"
+  type_id: 0x0f014afc
+  offset: 320
+}
+member {
+  id: 0xe1f820da
+  name: "pin_config_get"
+  type_id: 0x2c00ba53
+  offset: 64
+}
+member {
+  id: 0x9dce78a1
+  name: "pin_config_group_dbg_show"
+  type_id: 0x0f014afc
+  offset: 384
+}
+member {
+  id: 0x13831cfb
+  name: "pin_config_group_get"
+  type_id: 0x2c00ba53
+  offset: 192
+}
+member {
+  id: 0x288e7be7
+  name: "pin_config_group_set"
+  type_id: 0x2c00ffd6
+  offset: 256
+}
+member {
+  id: 0x0b1e0b4b
+  name: "pin_config_set"
+  type_id: 0x2c00ffd6
+  offset: 128
+}
+member {
+  id: 0xe894c683
+  name: "pin_count"
+  type_id: 0x4585663f
+  offset: 3488
+}
+member {
+  id: 0xe8b6687e
+  name: "pin_count"
+  type_id: 0x6720d32f
+  offset: 2048
+}
+member {
+  id: 0x5e2b8097
+  name: "pin_dbg_show"
+  type_id: 0x0f014afc
+  offset: 192
+}
+member {
+  id: 0x488642e6
+  name: "pin_desc_tree"
+  type_id: 0x80c20070
+  offset: 192
+}
+member {
+  id: 0xcf12f6b9
+  name: "pin_dev_attr"
+  type_id: 0x0ee3dd73
+  offset: 43840
+}
+member {
+  id: 0xc17ac98a
+  name: "pin_function_tree"
+  type_id: 0x80c20070
+  offset: 512
+}
+member {
+  id: 0x0348563b
+  name: "pin_group_tree"
+  type_id: 0x80c20070
+  offset: 320
+}
+member {
+  id: 0x50d25879
+  name: "pin_length"
+  type_id: 0xb3e7bac9
+  offset: 768
+}
+member {
+  id: 0x43df6000
+  name: "pin_ranges"
+  type_id: 0xd3c80119
+  offset: 10112
+}
+member {
+  id: 0xe53a4787
+  name: "pin_shared_mem"
+  type_id: 0x2c636a5a
+  offset: 1600
+}
+member {
+  id: 0x3acac1d6
+  name: "pincfg_mux"
+  type_id: 0xa7c362b0
+  offset: 43200
+}
+member {
+  id: 0xff5a94db
+  name: "pinctrl"
+  type_id: 0x290604c6
+  offset: 640
+}
+member {
+  id: 0xff5a99ba
+  name: "pinctrl"
+  type_id: 0x290604c6
+  offset: 512
+}
+member {
+  id: 0x1762f1c8
+  name: "ping"
+  type_id: 0x2cde74fe
+  offset: 192
+}
+member {
+  id: 0xe9a4fde6
+  name: "ping_group_range"
+  type_id: 0x5d6e0aa2
+  offset: 4800
+}
+member {
+  id: 0xc9b75710
+  name: "pinned"
+  type_id: 0xd3c80119
+  offset: 16832
+}
+member {
+  id: 0xc9c3b2cf
+  name: "pinned"
+  type_id: 0xa722c13e
+  offset: 128
+}
+member {
+  id: 0xf221b9f3
+  name: "pinned"
+  type_id: 0xedf277ba
+  offset: 322
+  bitsize: 1
+}
+member {
+  id: 0x036b22d6
+  name: "pinned_active"
+  type_id: 0xd3c80119
+  offset: 1024
+}
+member {
+  id: 0x12e99f20
+  name: "pinned_groups"
+  type_id: 0xb3579875
+  offset: 640
+}
+member {
+  id: 0x037e99ae
+  name: "pinned_pages"
+  type_id: 0xeb923a9b
+  offset: 320
+}
+member {
+  id: 0x88a70e08
+  name: "pinned_vm"
+  type_id: 0x1f4573ef
+  offset: 1728
+}
+member {
+  id: 0x165908c0
+  name: "pins"
+  type_id: 0x13580d6c
+  offset: 64
+}
+member {
+  id: 0x1667a111
+  name: "pins"
+  type_id: 0x2df10d7a
+  offset: 5056
+}
+member {
+  id: 0x16739fff
+  name: "pins"
+  type_id: 0x39cc14ac
+  offset: 320
+}
+member {
+  id: 0x1678e3c4
+  name: "pins"
+  type_id: 0x32b309a8
+  offset: 64
+}
+member {
+  id: 0x16999735
+  name: "pins"
+  type_id: 0xd3c80119
+  offset: 512
+}
+member {
+  id: 0xecad2822
+  name: "pins_default"
+  type_id: 0x3a47ea7a
+  offset: 704
+}
+member {
+  id: 0x32cfd28c
+  name: "pins_gpio"
+  type_id: 0x3a47ea7a
+  offset: 768
+}
+member {
+  id: 0x782f8731
+  name: "pio"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x999ac82a
+  name: "pipe"
+  type_id: 0x76e78cd9
+  offset: 1024
+}
+member {
+  id: 0x99a9a4ad
+  name: "pipe"
+  type_id: 0x4585663f
+  offset: 576
+}
+member {
+  id: 0x99a9a891
+  name: "pipe"
+  type_id: 0x4585663f
+  offset: 44672
+}
+member {
+  id: 0x99a9aac0
+  name: "pipe"
+  type_id: 0x4585663f
+  offset: 1024
+}
+member {
+  id: 0x99a9aba6
+  name: "pipe"
+  type_id: 0x4585663f
+  offset: 640
+}
+member {
+  id: 0x99e7128e
+  name: "pipe"
+  type_id: 0x0b3a3706
+}
+member {
+  id: 0x99fb0614
+  name: "pipe"
+  type_id: 0x1729da91
+  offset: 448
+}
+member {
+  id: 0xb1dbad41
+  name: "pipe_bufs"
+  type_id: 0xb02b353a
+  offset: 448
+}
+member {
+  id: 0x8a52e558
+  name: "pipe_close"
+  type_id: 0x0fa1856e
+  offset: 576
+}
+member {
+  id: 0xa16bde22
+  name: "pipe_open"
+  type_id: 0x0fa1856e
+  offset: 448
+}
+member {
+  id: 0xface9c28
+  name: "pitch"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0xfae1bedf
+  name: "pitch"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0x334e7b37
+  name: "pitches"
+  type_id: 0xb5c6bcdb
+  offset: 288
+}
+member {
+  id: 0x33669725
+  name: "pitches"
+  type_id: 0x9d2c4a95
+  offset: 704
+}
+member {
+  id: 0x6d889771
+  name: "piter"
+  type_id: 0x27253e64
+  offset: 256
+}
+member {
+  id: 0x77141202
+  name: "pix"
+  type_id: 0x9947e93f
+}
+member {
+  id: 0x1b9e3b8f
+  name: "pix_mp"
+  type_id: 0x6a31845f
+}
+member {
+  id: 0xa0d979be
+  name: "pixclock"
+  type_id: 0xc9082b19
+  offset: 160
+}
+member {
+  id: 0xa0f65dad
+  name: "pixclock"
+  type_id: 0xe62ebf07
+  offset: 800
+}
+member {
+  id: 0x36442ff7
+  name: "pixel_blend_mode"
+  type_id: 0xb3a3e4db
+  offset: 528
+}
+member {
+  id: 0x4eaa4a06
+  name: "pixel_clock"
+  type_id: 0x9bd401b6
+}
+member {
+  id: 0xfa1d223d
+  name: "pixel_clock_mhz"
+  type_id: 0x295c7202
+  offset: 32
+}
+member {
+  id: 0xd86ac1b8
+  name: "pixel_data"
+  type_id: 0x69bc8159
+}
+member {
+  id: 0x72c603fa
+  name: "pixel_enc"
+  type_id: 0x295c7202
+  offset: 32
+}
+member {
+  id: 0xba56a00f
+  name: "pixel_format"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xba56a4b7
+  name: "pixel_format"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x29da4171
+  name: "pixel_formats_blob_ptr"
+  type_id: 0x343ebce3
+  offset: 16384
+}
+member {
+  id: 0x0ae79794
+  name: "pixel_repeat"
+  type_id: 0x5d8155a5
+  offset: 448
+}
+member {
+  id: 0xa5488140
+  name: "pixelclock"
+  type_id: 0xedf277ba
+  offset: 128
+}
+member {
+  id: 0xa5709cfc
+  name: "pixelclock"
+  type_id: 0xd5e60968
+}
+member {
+  id: 0xa5960f91
+  name: "pixelclock"
+  type_id: 0x33756485
+}
+member {
+  id: 0xacac4b41
+  name: "pixelcode"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0xde4c0a37
+  name: "pixelformat"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xde4c0a8f
+  name: "pixelformat"
+  type_id: 0xe62ebf07
+  offset: 352
+}
+member {
+  id: 0xde4c0ed6
+  name: "pixelformat"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xdf400cd4
+  name: "pixmap"
+  type_id: 0x9a93ffb7
+  offset: 3968
+}
+member {
+  id: 0xec6d1882
+  name: "pkey_algo"
+  type_id: 0x3e10b518
+  offset: 320
+}
+member {
+  id: 0xec6d1ed7
+  name: "pkey_algo"
+  type_id: 0x3e10b518
+  offset: 384
+}
+member {
+  id: 0x799e6a47
+  name: "pkg_stats"
+  type_id: 0x3c128e24
+  offset: 1216
+}
+member {
+  id: 0xca3e82f5
+  name: "pkt_access"
+  type_id: 0x6d7f5ff6
+  offset: 72
+}
+member {
+  id: 0x1619739e
+  name: "pkt_cnt"
+  type_id: 0x5d8155a5
+  offset: 904
+}
+member {
+  id: 0x16d5b3cc
+  name: "pkt_cnt"
+  type_id: 0x914dbfdc
+  offset: 8672
+}
+member {
+  id: 0xe531626b
+  name: "pkt_err"
+  type_id: 0x5d8155a5
+  offset: 912
+}
+member {
+  id: 0xa971f923
+  name: "pkt_offset"
+  type_id: 0x6720d32f
+  offset: 160
+}
+member {
+  id: 0x3b313ebb
+  name: "pkt_offset_adj"
+  type_id: 0x4585663f
+  offset: 480
+}
+member {
+  id: 0x5168e51c
+  name: "pkt_rate_high"
+  type_id: 0xe62ebf07
+  offset: 544
+}
+member {
+  id: 0x607e1775
+  name: "pkt_rate_low"
+  type_id: 0xe62ebf07
+  offset: 384
+}
+member {
+  id: 0x3fe972c9
+  name: "pkt_type"
+  type_id: 0xe8034002
+  offset: 7008
+}
+member {
+  id: 0x3fe97d07
+  name: "pkt_type"
+  type_id: 0xe8034002
+  offset: 704
+}
+member {
+  id: 0xb5064699
+  name: "pkt_type"
+  type_id: 0xb3e7bac9
+  bitsize: 3
+}
+member {
+  id: 0x0a3be422
+  name: "pkts_acked"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x0afdb06d
+  name: "pkts_acked"
+  type_id: 0x0f5ba34e
+  offset: 320
+}
+member {
+  id: 0x11c83608
+  name: "pktstatus"
+  type_id: 0x5d8155a5
+  offset: 192
+}
+member {
+  id: 0xe908f26f
+  name: "pkvm"
+  type_id: 0xf75540c7
+  offset: 3392
+}
+member {
+  id: 0xb403a636
+  name: "pkvm_memcache"
+  type_id: 0xce6b97ea
+}
+member {
+  id: 0x451925c4
+  name: "placement"
+  type_id: 0x3316fc74
+  offset: 64
+}
+member {
+  id: 0x45360787
+  name: "placement"
+  type_id: 0x1c3dbe5a
+  offset: 160
+}
+member {
+  id: 0xe0021076
+  name: "plane"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xe0a2c6e0
+  name: "plane"
+  type_id: 0x46f26608
+  offset: 13312
+}
+member {
+  id: 0xe0ff1688
+  name: "plane"
+  type_id: 0x1b2ca025
+}
+member {
+  id: 0xea853c39
+  name: "plane_fmt"
+  type_id: 0xce3ad630
+  offset: 160
+}
+member {
+  id: 0xadb3df8b
+  name: "plane_list"
+  type_id: 0xd3c80119
+  offset: 3392
+}
+member {
+  id: 0x20d17aff
+  name: "plane_mask"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0xcff676ea
+  name: "plane_src"
+  type_id: 0x43c73e81
+}
+member {
+  id: 0x99013481
+  name: "plane_type_property"
+  type_id: 0x2a670b41
+  offset: 6208
+}
+member {
+  id: 0x29020c72
+  name: "planes"
+  type_id: 0x16a4bcd4
+}
+member {
+  id: 0x2908bd05
+  name: "planes"
+  type_id: 0x1c1d029b
+  offset: 192
+}
+member {
+  id: 0x29fe928e
+  name: "planes"
+  type_id: 0xea3b088f
+  offset: 4416
+}
+member {
+  id: 0x29fe9b68
+  name: "planes"
+  type_id: 0xea3b088f
+  offset: 768
+}
+member {
+  id: 0x5443f5af
+  name: "planes_changed"
+  type_id: 0x6d7f5ff6
+  offset: 80
+  bitsize: 1
+}
+member {
+  id: 0x1a1fd0a0
+  name: "plat_device"
+  type_id: 0x3f37d9d5
+  offset: 3584
+}
+member {
+  id: 0x38c654ae
+  name: "platform_data"
+  type_id: 0x18bd6530
+  offset: 256
+}
+member {
+  id: 0x38c65597
+  name: "platform_data"
+  type_id: 0x18bd6530
+  offset: 384
+}
+member {
+  id: 0x38c65ad9
+  name: "platform_data"
+  type_id: 0x18bd6530
+  offset: 1152
+}
+member {
+  id: 0x38c65ccc
+  name: "platform_data"
+  type_id: 0x18bd6530
+  offset: 192
+}
+member {
+  id: 0x38f2d790
+  name: "platform_data"
+  type_id: 0x2c3a11c9
+  offset: 64
+}
+member {
+  id: 0xeea011fc
+  name: "platform_dma_mask"
+  type_id: 0x92233392
+  offset: 7424
+}
+member {
+  id: 0xca284f14
+  name: "platform_execute_tuning"
+  type_id: 0x2eaed94d
+  offset: 1280
+}
+member {
+  id: 0x9c5127f1
+  name: "platform_send_init_74_clocks"
+  type_id: 0x0d08a1bb
+  offset: 1088
+}
+member {
+  id: 0xc1e5cfd0
+  name: "platforms"
+  type_id: 0x1d63cfed
+  offset: 384
+}
+member {
+  id: 0xb3486c59
+  name: "playback"
+  type_id: 0x0baa70a7
+  offset: 800
+}
+member {
+  id: 0xb36f55f3
+  name: "playback"
+  type_id: 0x2c957f2f
+  offset: 128
+}
+member {
+  id: 0xb3c78bbf
+  name: "playback"
+  type_id: 0x84487217
+  offset: 1344
+}
+member {
+  id: 0x5375b727
+  name: "playback_dma_data"
+  type_id: 0x18bd6530
+  offset: 448
+}
+member {
+  id: 0xbe2220ca
+  name: "playback_only"
+  type_id: 0x4585663f
+  offset: 1025
+  bitsize: 1
+}
+member {
+  id: 0x2cffe3ab
+  name: "playback_widget"
+  type_id: 0x0a1edf98
+  offset: 320
+}
+member {
+  id: 0xacd4ccce
+  name: "plen"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x1b04c869
+  name: "plid"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x1b04cc88
+  name: "plid"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0xa55a1997
+  name: "plt_max_entries"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0xae340b41
+  name: "plt_num_entries"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x8d36c2ec
+  name: "plt_shndx"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xc2797150
+  name: "plug"
+  type_id: 0xc97abb78
+  offset: 384
+}
+member {
+  id: 0xc288c5e9
+  name: "plug"
+  type_id: 0x38ce9779
+  offset: 19264
+}
+member {
+  id: 0x54f5b38b
+  name: "plug_started"
+  type_id: 0x6d7f5ff6
+  offset: 320
+}
+member {
+  id: 0x054da1fb
+  name: "pm"
+  type_id: 0x0efc89b4
+  offset: 1024
+}
+member {
+  id: 0x054dab92
+  name: "pm"
+  type_id: 0x0efc89b4
+  offset: 1088
+}
+member {
+  id: 0x0578d172
+  name: "pm"
+  type_id: 0x3b83ec24
+  offset: 960
+}
+member {
+  id: 0x0578da3b
+  name: "pm"
+  type_id: 0x3b83ec24
+  offset: 832
+}
+member {
+  id: 0x0578db45
+  name: "pm"
+  type_id: 0x3b83ec24
+  offset: 1216
+}
+member {
+  id: 0x0578de46
+  name: "pm"
+  type_id: 0x3b83ec24
+  offset: 320
+}
+member {
+  id: 0x4de92006
+  name: "pm_cap"
+  type_id: 0x295c7202
+  offset: 1320
+}
+member {
+  id: 0x970b88df
+  name: "pm_caps"
+  type_id: 0x3c2fe980
+  offset: 8064
+}
+member {
+  id: 0x714b0910
+  name: "pm_count_walk"
+  type_id: 0x6007f65d
+  offset: 2624
+}
+member {
+  id: 0x2b2447f8
+  name: "pm_domain"
+  type_id: 0x3c4114bd
+  offset: 4928
+}
+member {
+  id: 0x4dd8bc2c
+  name: "pm_flags"
+  type_id: 0x3c2fe980
+  offset: 11584
+}
+member {
+  id: 0x3e1a6172
+  name: "pm_nb"
+  type_id: 0x449a775b
+  offset: 1024
+}
+member {
+  id: 0x3e7be960
+  name: "pm_notifier"
+  type_id: 0x449a775b
+  offset: 1472
+}
+member {
+  id: 0x8ec53b22
+  name: "pm_only"
+  type_id: 0x74d29cf1
+  offset: 896
+}
+member {
+  id: 0x418d6286
+  name: "pm_op_in_progress"
+  type_id: 0x6720d32f
+  offset: 768
+}
+member {
+  id: 0x341fe036
+  name: "pm_runtime_no_callbacks"
+  type_id: 0x6d7f5ff6
+  offset: 968
+}
+member {
+  id: 0xa1b1e08a
+  name: "pm_state"
+  type_id: 0xd56191bd
+  offset: 3584
+}
+member {
+  id: 0x2e0e87b6
+  name: "pma_extable"
+  type_id: 0x6720d32f
+  offset: 12768
+}
+member {
+  id: 0x15c30de0
+  name: "pmc"
+  type_id: 0x44c5e79a
+  offset: 320
+}
+member {
+  id: 0x6ed4d38c
+  name: "pmc_width"
+  type_id: 0xe8034002
+  offset: 384
+}
+member {
+  id: 0xca44b141
+  name: "pmceid_bitmap"
+  type_id: 0xb914bfab
+  offset: 3456
+}
+member {
+  id: 0x28894114
+  name: "pmceid_ext_bitmap"
+  type_id: 0xb914bfab
+  offset: 3520
+}
+member {
+  id: 0x56639b84
+  name: "pmd"
+  type_id: 0x21082bfc
+  offset: 384
+}
+member {
+  id: 0x569cedab
+  name: "pmd"
+  type_id: 0xde7f96df
+}
+member {
+  id: 0xccf925b5
+  name: "pmd_huge_pte"
+  type_id: 0xf0d2310e
+  offset: 64
+}
+member {
+  id: 0xab3ce933
+  name: "pmdown_time"
+  type_id: 0xfc0e1dbd
+  offset: 2688
+}
+member {
+  id: 0xab3cec41
+  name: "pmdown_time"
+  type_id: 0xfc0e1dbd
+  offset: 12352
+}
+member {
+  id: 0x04ca74e8
+  name: "pme_poll"
+  type_id: 0x4585663f
+  offset: 1333
+  bitsize: 1
+}
+member {
+  id: 0xc65795be
+  name: "pme_support"
+  type_id: 0x4585663f
+  offset: 1328
+  bitsize: 5
+}
+member {
+  id: 0x8f28eca8
+  name: "pmr_save"
+  type_id: 0x92233392
+  offset: 2368
+}
+member {
+  id: 0xa6727baa
+  name: "pmscr_el1"
+  type_id: 0x92233392
+  offset: 4096
+}
+member {
+  id: 0x98e24df0
+  name: "pmsr_capa"
+  type_id: 0x3771322e
+  offset: 11456
+}
+member {
+  id: 0xc6fccc00
+  name: "pmsr_free_wk"
+  type_id: 0x1f3c8679
+  offset: 2432
+}
+member {
+  id: 0xb7706bbf
+  name: "pmsr_list"
+  type_id: 0xd3c80119
+  offset: 2240
+}
+member {
+  id: 0x169d7552
+  name: "pmsr_lock"
+  type_id: 0xf313e71a
+  offset: 2368
+}
+member {
+  id: 0x933349d1
+  name: "pmu"
+  type_id: 0x3b12c8e0
+  offset: 1216
+}
+member {
+  id: 0x93334b15
+  name: "pmu"
+  type_id: 0x3b12c8e0
+}
+member {
+  id: 0x93b6279b
+  name: "pmu"
+  type_id: 0xbe704ca9
+  offset: 62272
+}
+member {
+  id: 0x93ce5218
+  name: "pmu"
+  type_id: 0xc60bc51e
+}
+member {
+  id: 0x2cb55697
+  name: "pmu_cpu_context"
+  type_id: 0x30bd8a92
+  offset: 576
+}
+member {
+  id: 0xc98b59e3
+  name: "pmu_disable"
+  type_id: 0x0d07014d
+  offset: 832
+}
+member {
+  id: 0xc9832340
+  name: "pmu_disable_count"
+  type_id: 0x13580d6c
+  offset: 512
+}
+member {
+  id: 0x01dd58e0
+  name: "pmu_enable"
+  type_id: 0x0d07014d
+  offset: 768
+}
+member {
+  id: 0x3957d3b9
+  name: "pmu_filter"
+  type_id: 0x064d6086
+  offset: 2944
+}
+member {
+  id: 0x03f344e6
+  name: "pmu_lock"
+  type_id: 0xc8b17aa7
+  offset: 2112
+}
+member {
+  id: 0xbadfff7b
+  name: "pmu_private"
+  type_id: 0x18bd6530
+  offset: 1280
+}
+member {
+  id: 0xd81b71f1
+  name: "pmuver"
+  type_id: 0x6720d32f
+  offset: 2496
+}
+member {
+  id: 0x809d8aa2
+  name: "pmxops"
+  type_id: 0x31dc8106
+  offset: 256
+}
+member {
+  id: 0xc412fd55
+  name: "pn"
+  type_id: 0x92233392
+  offset: 32
+}
+member {
+  id: 0x713ca1c8
+  name: "pnode"
+  type_id: 0x6c32e522
+  offset: 64
+}
+member {
+  id: 0x713ca529
+  name: "pnode"
+  type_id: 0x6c32e522
+}
+member {
+  id: 0x207c8d17
+  name: "pnpid"
+  type_id: 0x3e10b518
+}
+member {
+  id: 0x768763dc
+  name: "poc_lt_curr"
+  type_id: 0x60ca2c23
+  offset: 352
+}
+member {
+  id: 0xccbb0b06
+  name: "poc_st_curr_after"
+  type_id: 0x60ca2c23
+  offset: 224
+}
+member {
+  id: 0xe6fb48ac
+  name: "poc_st_curr_before"
+  type_id: 0x60ca2c23
+  offset: 96
+}
+member {
+  id: 0x3247150e
+  name: "point_of_no_return"
+  type_id: 0x4585663f
+  offset: 323
+  bitsize: 1
+}
+member {
+  id: 0x690d41e0
+  name: "pointer"
+  type_id: 0x2cfe0bd5
+  offset: 448
+}
+member {
+  id: 0x690dc896
+  name: "pointer"
+  type_id: 0x2c777de1
+  offset: 448
+}
+member {
+  id: 0x690dc8c4
+  name: "pointer"
+  type_id: 0x2c772f1b
+  offset: 448
+}
+member {
+  id: 0x6918a789
+  name: "pointer"
+  type_id: 0x391f15ea
+}
+member {
+  id: 0x6920af0f
+  name: "pointer"
+  type_id: 0x01151746
+  offset: 1984
+}
+member {
+  id: 0x6920efc6
+  name: "pointer"
+  type_id: 0x015c420e
+  offset: 512
+}
+member {
+  id: 0x693905f9
+  name: "pointer"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0xaaa09e32
+  name: "poisoned"
+  type_id: 0x4585663f
+  offset: 384
+  bitsize: 1
+}
+member {
+  id: 0x8176720f
+  name: "poke_tab"
+  type_id: 0x387cf974
+  offset: 1536
+}
+member {
+  id: 0x93df7858
+  name: "polarities"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0xe0268498
+  name: "polarity"
+  type_id: 0x8bd97c19
+  offset: 64
+}
+member {
+  id: 0xe02689bb
+  name: "polarity"
+  type_id: 0x8bd97c19
+  offset: 128
+}
+member {
+  id: 0xe07d66bd
+  name: "polarity"
+  type_id: 0xd031fa6c
+  offset: 2112
+}
+member {
+  id: 0xe09e2df3
+  name: "polarity"
+  type_id: 0x33756485
+  offset: 384
+}
+member {
+  id: 0x63a1568a
+  name: "polarity_cache"
+  type_id: 0xc9082b19
+  offset: 512
+}
+member {
+  id: 0x7f860acc
+  name: "police"
+  type_id: 0x6720d32f
+  offset: 224
+}
+member {
+  id: 0x7fe8e112
+  name: "police"
+  type_id: 0x09c82929
+}
+member {
+  id: 0x604985e0
+  name: "policy"
+  type_id: 0xa094b81e
+}
+member {
+  id: 0x608503c6
+  name: "policy"
+  type_id: 0x6c1beca0
+  offset: 576
+}
+member {
+  id: 0x60ac97d3
+  name: "policy"
+  type_id: 0x4585663f
+  offset: 9280
+}
+member {
+  id: 0x60ac9ae1
+  name: "policy"
+  type_id: 0x4585663f
+  offset: 544
+}
+member {
+  id: 0x60d35036
+  name: "policy"
+  type_id: 0x3a40fc42
+  offset: 384
+}
+member {
+  id: 0x60d3510f
+  name: "policy"
+  type_id: 0x3a40fc42
+  offset: 256
+}
+member {
+  id: 0x60d356d3
+  name: "policy"
+  type_id: 0x3a40fc42
+  offset: 448
+}
+member {
+  id: 0x60d35866
+  name: "policy"
+  type_id: 0x3a40fc42
+  offset: 128
+}
+member {
+  id: 0x60da6f24
+  name: "policy"
+  type_id: 0x33756485
+  offset: 512
+}
+member {
+  id: 0x60ddbc76
+  name: "policy"
+  type_id: 0x34ab5728
+  offset: 640
+}
+member {
+  id: 0x60e88f7d
+  name: "policy"
+  type_id: 0x019e2530
+}
+member {
+  id: 0x8ecfd706
+  name: "policy_all"
+  type_id: 0xd3c80119
+  offset: 832
+}
+member {
+  id: 0xc33c28a5
+  name: "policy_bydst"
+  type_id: 0x2cfdf4b9
+  offset: 1280
+}
+member {
+  id: 0x8297e4ba
+  name: "policy_byidx"
+  type_id: 0x1d33485a
+  offset: 960
+}
+member {
+  id: 0x14dab422
+  name: "policy_count"
+  type_id: 0xb0c00a27
+  offset: 1664
+}
+member {
+  id: 0xd9a8ff78
+  name: "policy_default"
+  type_id: 0x1892e9b4
+  offset: 3136
+}
+member {
+  id: 0x586ac588
+  name: "policy_hash_work"
+  type_id: 0x1f3c8679
+  offset: 1856
+}
+member {
+  id: 0x85aa52ae
+  name: "policy_hthresh"
+  type_id: 0xbd982632
+  offset: 2240
+}
+member {
+  id: 0x2b331eac
+  name: "policy_idx_hmask"
+  type_id: 0x4585663f
+  offset: 1024
+}
+member {
+  id: 0xab6e5bdd
+  name: "policy_inexact"
+  type_id: 0x056684c9
+  offset: 1088
+}
+member {
+  id: 0xe58944ae
+  name: "policy_list"
+  type_id: 0xd3c80119
+  offset: 3328
+}
+member {
+  id: 0xe5894b40
+  name: "policy_list"
+  type_id: 0xd3c80119
+  offset: 768
+}
+member {
+  id: 0x478ff386
+  name: "policy_mutex"
+  type_id: 0xa7c362b0
+  offset: 704
+}
+member {
+  id: 0x0d6726b0
+  name: "policycap"
+  type_id: 0xff615fef
+  offset: 24
+}
+member {
+  id: 0x37828654
+  name: "policycaps"
+  type_id: 0x86a931f9
+  offset: 4352
+}
+member {
+  id: 0xbb7445e4
+  name: "policydb"
+  type_id: 0x9146342b
+  offset: 64
+}
+member {
+  id: 0x23820e22
+  name: "policyvers"
+  type_id: 0x4585663f
+  offset: 4672
+}
+member {
+  id: 0x5e0d04df
+  name: "poll"
+  type_id: 0x184ecba1
+  offset: 320
+}
+member {
+  id: 0x5e14c2b7
+  name: "poll"
+  type_id: 0x01891da5
+  offset: 640
+}
+member {
+  id: 0x5e14c7e2
+  name: "poll"
+  type_id: 0x01891da5
+  offset: 1664
+}
+member {
+  id: 0x5e14d9f2
+  name: "poll"
+  type_id: 0x019356a9
+  offset: 448
+}
+member {
+  id: 0x5e14fc29
+  name: "poll"
+  type_id: 0x01b63d17
+  offset: 320
+}
+member {
+  id: 0x5e152199
+  name: "poll"
+  type_id: 0x006b8dfd
+  offset: 320
+}
+member {
+  id: 0x5e15e341
+  name: "poll"
+  type_id: 0x00a8eb28
+  offset: 640
+}
+member {
+  id: 0x5e1687e4
+  name: "poll"
+  type_id: 0x03c12fc3
+  offset: 512
+}
+member {
+  id: 0x5e16a32e
+  name: "poll"
+  type_id: 0x03e98aeb
+  offset: 448
+}
+member {
+  id: 0x5e16b860
+  name: "poll"
+  type_id: 0x03fd7ad9
+  offset: 192
+}
+member {
+  id: 0x5e16b9db
+  name: "poll"
+  type_id: 0x03fd7ad9
+  offset: 576
+}
+member {
+  id: 0x5e16d429
+  name: "poll"
+  type_id: 0x03913382
+  offset: 192
+}
+member {
+  id: 0x5e16da99
+  name: "poll"
+  type_id: 0x03913382
+  offset: 640
+}
+member {
+  id: 0x5e16de13
+  name: "poll"
+  type_id: 0x03913382
+  offset: 1408
+}
+member {
+  id: 0x5e1affd2
+  name: "poll"
+  type_id: 0x0fb2015e
+}
+member {
+  id: 0x5e1b9abc
+  name: "poll"
+  type_id: 0x0ed76fdf
+}
+member {
+  id: 0x5e1f316f
+  name: "poll"
+  type_id: 0x0a747547
+  offset: 192
+}
+member {
+  id: 0x5e24e0fe
+  name: "poll"
+  type_id: 0x31ae010b
+  offset: 1664
+}
+member {
+  id: 0x5e3692cb
+  name: "poll"
+  type_id: 0x23df18eb
+}
+member {
+  id: 0x5e395d2c
+  name: "poll"
+  type_id: 0x2c1738cf
+  offset: 320
+}
+member {
+  id: 0x5e3ab29d
+  name: "poll"
+  type_id: 0x2ff45622
+  offset: 512
+}
+member {
+  id: 0x5e619b96
+  name: "poll"
+  type_id: 0x74d29cf1
+  offset: 288
+}
+member {
+  id: 0x5e726483
+  name: "poll"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0x5e78366d
+  name: "poll"
+  type_id: 0x6d7f5ff6
+  offset: 64
+}
+member {
+  id: 0x5e9cc608
+  name: "poll"
+  type_id: 0x898bdb04
+}
+member {
+  id: 0xed4fe699
+  name: "poll32_events"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xb6dad647
+  name: "poll_bio"
+  type_id: 0x2c8ab1ff
+  offset: 64
+}
+member {
+  id: 0xf8632325
+  name: "poll_cb"
+  type_id: 0x266595fc
+  offset: 2368
+}
+member {
+  id: 0x5d93d2aa
+  name: "poll_completion"
+  type_id: 0x6d7f5ff6
+  offset: 96
+}
+member {
+  id: 0x321b6f47
+  name: "poll_enabled"
+  type_id: 0x6d7f5ff6
+  offset: 4224
+}
+member {
+  id: 0x904caa86
+  name: "poll_enabled_time"
+  type_id: 0x4585663f
+  offset: 2336
+}
+member {
+  id: 0xb32d7cad
+  name: "poll_event"
+  type_id: 0x6720d32f
+  offset: 896
+}
+member {
+  id: 0x76c4a5d8
+  name: "poll_events"
+  type_id: 0xe8034002
+}
+member {
+  id: 0x73c7b8fd
+  name: "poll_fixed_state"
+  type_id: 0x6d7f5ff6
+  offset: 104
+}
+member {
+  id: 0x13754151
+  name: "poll_hrt"
+  type_id: 0xcd7704bf
+  offset: 384
+}
+member {
+  id: 0xf6cb8558
+  name: "poll_hrt_lock"
+  type_id: 0xf313e71a
+  offset: 960
+}
+member {
+  id: 0x995fc20c
+  name: "poll_interval"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x1bf83634
+  name: "poll_interval_max"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x85c0f03e
+  name: "poll_interval_min"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0xd0c78410
+  name: "poll_limit_ns"
+  type_id: 0x92233392
+  offset: 256
+}
+member {
+  id: 0x73a6e99a
+  name: "poll_list"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0xbaa16f25
+  name: "poll_min_period"
+  type_id: 0x92233392
+  offset: 6016
+}
+member {
+  id: 0x34a7e20f
+  name: "poll_msec"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0x681c7383
+  name: "poll_msecs"
+  type_id: 0xfc0e1dbd
+  offset: 768
+}
+member {
+  id: 0xeebd9ccb
+  name: "poll_multi_queue"
+  type_id: 0x6d7f5ff6
+  offset: 320
+}
+member {
+  id: 0x1d3546d0
+  name: "poll_nsec"
+  type_id: 0x6720d32f
+  offset: 2336
+}
+member {
+  id: 0xa43179b6
+  name: "poll_queue"
+  type_id: 0xf1159c31
+  offset: 9728
+}
+member {
+  id: 0x9f51371c
+  name: "poll_refs"
+  type_id: 0x74d29cf1
+  offset: 1056
+}
+member {
+  id: 0x73609611
+  name: "poll_req_portid"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x528ec6c2
+  name: "poll_running"
+  type_id: 0x6d7f5ff6
+  offset: 4232
+}
+member {
+  id: 0x57fcc708
+  name: "poll_scheduled"
+  type_id: 0x74d29cf1
+  offset: 5216
+}
+member {
+  id: 0xf66947a0
+  name: "poll_stat"
+  type_id: 0x25296a8e
+  offset: 2432
+}
+member {
+  id: 0x301d9589
+  name: "poll_states"
+  type_id: 0xc9082b19
+  offset: 5984
+}
+member {
+  id: 0x221e202e
+  name: "poll_status"
+  type_id: 0x2dc04aa1
+  offset: 512
+}
+member {
+  id: 0xdc1954a9
+  name: "poll_task"
+  type_id: 0x1d19a9d5
+  offset: 4480
+}
+member {
+  id: 0xe37c5764
+  name: "poll_time_limit"
+  type_id: 0x4585663f
+  offset: 2
+  bitsize: 1
+}
+member {
+  id: 0xabe7c644
+  name: "poll_timer"
+  type_id: 0xd298e888
+  offset: 4544
+}
+member {
+  id: 0xa5396d7e
+  name: "poll_usage"
+  type_id: 0x6d7f5ff6
+  offset: 1088
+}
+member {
+  id: 0x33cdf1b7
+  name: "poll_wait"
+  type_id: 0x03913382
+  offset: 4992
+}
+member {
+  id: 0x33cdf4b3
+  name: "poll_wait"
+  type_id: 0x03913382
+  offset: 640
+}
+member {
+  id: 0x474c7f5b
+  name: "poll_wakeup"
+  type_id: 0x74d29cf1
+  offset: 5184
+}
+member {
+  id: 0x3702eb4b
+  name: "poll_work"
+  type_id: 0xf1159c31
+  offset: 8512
+}
+member {
+  id: 0xb9f079d6
+  name: "polled"
+  type_id: 0x43e910ce
+  offset: 12288
+}
+member {
+  id: 0x2bc3a3ee
+  name: "poller"
+  type_id: 0x2d9f80d6
+  offset: 2048
+}
+member {
+  id: 0xe9bbb3b8
+  name: "pollfunc"
+  type_id: 0x38b66a59
+  offset: 8192
+}
+member {
+  id: 0x6cd82727
+  name: "pollfunc_event"
+  type_id: 0x38b66a59
+  offset: 8256
+}
+member {
+  id: 0x611c4b54
+  name: "polling"
+  type_id: 0x6d7f5ff6
+  offset: 7512
+}
+member {
+  id: 0x666255ee
+  name: "polling_delay_jiffies"
+  type_id: 0x33756485
+  offset: 8384
+}
+member {
+  id: 0x38d45c66
+  name: "polling_ms"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xbdab34e3
+  name: "polling_next_update"
+  type_id: 0x92233392
+  offset: 6528
+}
+member {
+  id: 0x511cea61
+  name: "polling_paused"
+  type_id: 0x6d7f5ff6
+  offset: 240
+}
+member {
+  id: 0xf5b10364
+  name: "polling_total"
+  type_id: 0x4c4654d5
+  offset: 6080
+}
+member {
+  id: 0x9d434d85
+  name: "polling_until"
+  type_id: 0x92233392
+  offset: 6592
+}
+member {
+  id: 0x35b4dbe4
+  name: "pollq"
+  type_id: 0x03913382
+  offset: 512
+}
+member {
+  id: 0x71eeea23
+  name: "polq"
+  type_id: 0x32b3ae69
+  offset: 2496
+}
+member {
+  id: 0xde07d329
+  name: "pool"
+  type_id: 0x87148e18
+  offset: 5120
+}
+member {
+  id: 0xde39de75
+  name: "pool"
+  type_id: 0xb914bfab
+  offset: 10048
+}
+member {
+  id: 0xde82c205
+  name: "pool"
+  type_id: 0x0206e690
+  offset: 576
+}
+member {
+  id: 0xde82c5ab
+  name: "pool"
+  type_id: 0x0206e690
+  offset: 1152
+}
+member {
+  id: 0xde82cb77
+  name: "pool"
+  type_id: 0x0206e690
+}
+member {
+  id: 0xde82cc27
+  name: "pool"
+  type_id: 0x0206e690
+  offset: 1472
+}
+member {
+  id: 0xde8fafea
+  name: "pool"
+  type_id: 0x0f627bc8
+}
+member {
+  id: 0xde940420
+  name: "pool"
+  type_id: 0x14c9b164
+}
+member {
+  id: 0xde940d52
+  name: "pool"
+  type_id: 0x14c9b164
+  offset: 576
+}
+member {
+  id: 0xde9703bd
+  name: "pool"
+  type_id: 0x17c909bc
+  offset: 1728
+}
+member {
+  id: 0x3772a386
+  name: "pool_data"
+  type_id: 0x18bd6530
+  offset: 192
+}
+member {
+  id: 0x01a8c232
+  name: "pool_lock"
+  type_id: 0xa7c362b0
+  offset: 10112
+}
+member {
+  id: 0xad407369
+  name: "pool_size"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x6a296ea1
+  name: "pools"
+  type_id: 0xd3c80119
+  offset: 704
+}
+member {
+  id: 0x01383f72
+  name: "pop_time"
+  type_id: 0xc9082b19
+  offset: 6272
+}
+member {
+  id: 0xac8db346
+  name: "pop_wait"
+  type_id: 0x4585663f
+  offset: 14272
+  bitsize: 1
+}
+member {
+  id: 0x68203f29
+  name: "populate_parent_alloc_arg"
+  type_id: 0x2c450120
+  offset: 384
+}
+member {
+  id: 0x4805246e
+  name: "port"
+  type_id: 0xfe384bcc
+  offset: 2432
+}
+member {
+  id: 0x48131453
+  name: "port"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0x4848f266
+  name: "port"
+  type_id: 0xb3e7bac9
+  offset: 72
+}
+member {
+  id: 0x4848fa31
+  name: "port"
+  type_id: 0xb3e7bac9
+  offset: 120
+}
+member {
+  id: 0x488e9071
+  name: "port"
+  type_id: 0x7584e7da
+  offset: 32
+}
+member {
+  id: 0x488e9d4a
+  name: "port"
+  type_id: 0x7584e7da
+}
+member {
+  id: 0x489c397e
+  name: "port"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x489c39fb
+  name: "port"
+  type_id: 0x6720d32f
+  offset: 9472
+}
+member {
+  id: 0x48a69518
+  name: "port"
+  type_id: 0x5d8155a5
+  offset: 160
+}
+member {
+  id: 0x48b9180d
+  name: "port"
+  type_id: 0x4201a01e
+}
+member {
+  id: 0x48b91cec
+  name: "port"
+  type_id: 0x4201a01e
+  offset: 64
+}
+member {
+  id: 0x48be982a
+  name: "port"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x48be9ccb
+  name: "port"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x48bfae31
+  name: "port"
+  type_id: 0x44b60e20
+  offset: 384
+}
+member {
+  id: 0x48cc7358
+  name: "port"
+  type_id: 0x3760766d
+  offset: 1344
+}
+member {
+  id: 0x48cf6e4f
+  name: "port"
+  type_id: 0x347303b4
+  offset: 64
+}
+member {
+  id: 0x48d2413e
+  name: "port"
+  type_id: 0x295c7202
+  offset: 64
+}
+member {
+  id: 0x48d3871a
+  name: "port"
+  type_id: 0x289eb761
+}
+member {
+  id: 0x48d446d8
+  name: "port"
+  type_id: 0x2f5f7542
+}
+member {
+  id: 0x48e10024
+  name: "port"
+  type_id: 0x1a1051a0
+  offset: 6464
+}
+member {
+  id: 0x48e6455f
+  name: "port"
+  type_id: 0x1d545cda
+  offset: 768
+}
+member {
+  id: 0x48e7d5e9
+  name: "port"
+  type_id: 0x1cce8023
+  offset: 1216
+}
+member {
+  id: 0x48f30c76
+  name: "port"
+  type_id: 0x08113aaf
+  offset: 64
+}
+member {
+  id: 0x48fbae39
+  name: "port"
+  type_id: 0x00b7947f
+}
+member {
+  id: 0x7b09cd83
+  name: "port_altmode"
+  type_id: 0x23ac68c7
+  offset: 27776
+}
+member {
+  id: 0x7b1c4643
+  name: "port_altmode"
+  type_id: 0x3624319f
+  offset: 1472
+}
+member {
+  id: 0x664afe49
+  name: "port_c_suspend"
+  type_id: 0x33756485
+  offset: 4928
+}
+member {
+  id: 0x66b085dc
+  name: "port_c_suspend"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0xeea08776
+  name: "port_cap"
+  type_id: 0x2efbf414
+  offset: 192
+}
+member {
+  id: 0x67dc25d0
+  name: "port_caps"
+  type_id: 0x2efbf414
+  offset: 58304
+}
+member {
+  id: 0x65373c2d
+  name: "port_change"
+  type_id: 0x914dbfdc
+  offset: 2064
+}
+member {
+  id: 0x8323329c
+  name: "port_data"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0x97b320de
+  name: "port_handed_over"
+  type_id: 0x2fc0a389
+  offset: 1600
+}
+member {
+  id: 0x01453404
+  name: "port_high"
+  type_id: 0x4585663f
+  offset: 480
+}
+member {
+  id: 0xd3b83d9b
+  name: "port_id"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x1e504a04
+  name: "port_info"
+  type_id: 0x19086ca4
+}
+member {
+  id: 0x10042bd2
+  name: "port_is_suspended"
+  type_id: 0x4585663f
+  offset: 11842
+  bitsize: 1
+}
+member {
+  id: 0x5425f375
+  name: "port_line_coding"
+  type_id: 0x971eca3d
+  offset: 6096
+}
+member {
+  id: 0x5425f5b9
+  name: "port_line_coding"
+  type_id: 0x971eca3d
+  offset: 1920
+}
+member {
+  id: 0xe4654dda
+  name: "port_link_base"
+  type_id: 0x0baa70a7
+  offset: 8256
+}
+member {
+  id: 0x7daf8d82
+  name: "port_lock"
+  type_id: 0xf313e71a
+  offset: 3584
+}
+member {
+  id: 0xecc1f040
+  name: "port_name"
+  type_id: 0x3e10b518
+  offset: 1216
+}
+member {
+  id: 0xe64fd4ef
+  name: "port_num"
+  type_id: 0x295c7202
+  offset: 3712
+}
+member {
+  id: 0xdc316fde
+  name: "port_number"
+  type_id: 0x295c7202
+  offset: 3712
+}
+member {
+  id: 0xdc6db306
+  name: "port_number"
+  type_id: 0x7584e7da
+  offset: 64
+}
+member {
+  id: 0xdcd13b2b
+  name: "port_number"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x2418a130
+  name: "port_power"
+  type_id: 0x2fc6747c
+  offset: 128
+}
+member {
+  id: 0x2418a798
+  name: "port_power"
+  type_id: 0x2fc6747c
+  offset: 2816
+}
+member {
+  id: 0x28a3273c
+  name: "port_power_base"
+  type_id: 0x0baa70a7
+  offset: 8224
+}
+member {
+  id: 0x66c5c2ea
+  name: "port_probe"
+  type_id: 0x2fd17240
+  offset: 2432
+}
+member {
+  id: 0x687fd28c
+  name: "port_remote_wakeup"
+  type_id: 0xc9082b19
+  offset: 192
+}
+member {
+  id: 0xe4114db1
+  name: "port_remove"
+  type_id: 0x0c975eef
+  offset: 2496
+}
+member {
+  id: 0x7b044f0a
+  name: "port_sink_caps"
+  type_id: 0x3bdc1cb2
+  offset: 8128
+}
+member {
+  id: 0x1bd4a20c
+  name: "port_source_caps"
+  type_id: 0x3bdc1cb2
+  offset: 8064
+}
+member {
+  id: 0x2083fe73
+  name: "port_status"
+  type_id: 0x914dbfdc
+  offset: 2048
+}
+member {
+  id: 0x20d628de
+  name: "port_status"
+  type_id: 0xc49c902c
+}
+member {
+  id: 0xc025a63a
+  name: "port_status_base"
+  type_id: 0x0baa70a7
+  offset: 8192
+}
+member {
+  id: 0x9d614f12
+  name: "port_status_u0"
+  type_id: 0xc9082b19
+  offset: 58880
+}
+member {
+  id: 0x91048773
+  name: "port_type"
+  type_id: 0x7a8335ad
+  offset: 2176
+}
+member {
+  id: 0x91048a8d
+  name: "port_type"
+  type_id: 0x7a8335ad
+  offset: 7712
+}
+member {
+  id: 0x4034653e
+  name: "port_type_lock"
+  type_id: 0xa7c362b0
+  offset: 7744
+}
+member {
+  id: 0xf43a52a4
+  name: "port_type_set"
+  type_id: 0x2efc853f
+  offset: 256
+}
+member {
+  id: 0x4b84c909
+  name: "port_usb"
+  type_id: 0x2dde023d
+  offset: 3648
+}
+member {
+  id: 0xabdfb454
+  name: "port_write_buf"
+  type_id: 0x18745118
+  offset: 5440
+}
+member {
+  id: 0x57a4d10d
+  name: "portid"
+  type_id: 0xc9082b19
+  offset: 6912
+}
+member {
+  id: 0x57a4d161
+  name: "portid"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x57a4d63a
+  name: "portid"
+  type_id: 0xc9082b19
+  offset: 832
+}
+member {
+  id: 0x57a4dc42
+  name: "portid"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0x8c1fc5f0
+  name: "portio"
+  type_id: 0x3564ca1f
+  offset: 256
+}
+member {
+  id: 0x339b92a9
+  name: "portio_dir"
+  type_id: 0x23f09c34
+  offset: 8192
+}
+member {
+  id: 0x07fa68be
+  name: "portnum"
+  type_id: 0x295c7202
+  offset: 11152
+}
+member {
+  id: 0x01b32aa7
+  name: "portroute"
+  type_id: 0xee699492
+  offset: 96
+}
+member {
+  id: 0xc46a7f1a
+  name: "ports"
+  type_id: 0x1200e6db
+}
+member {
+  id: 0xc47466a7
+  name: "ports"
+  type_id: 0x0c142dcf
+  offset: 1088
+}
+member {
+  id: 0xc47ca9d0
+  name: "ports"
+  type_id: 0x04d62c3f
+}
+member {
+  id: 0xc49a0951
+  name: "ports"
+  type_id: 0xe276adef
+}
+member {
+  id: 0x4f143783
+  name: "porttype"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0x26693333
+  name: "pos"
+  type_id: 0xcd2b46c2
+}
+member {
+  id: 0x266d123e
+  name: "pos"
+  type_id: 0xc9082b19
+  offset: 416
+}
+member {
+  id: 0x2683b677
+  name: "pos"
+  type_id: 0x27a7c613
+  offset: 67776
+}
+member {
+  id: 0x2683b77a
+  name: "pos"
+  type_id: 0x27a7c613
+  offset: 192
+}
+member {
+  id: 0x2683bb52
+  name: "pos"
+  type_id: 0x27a7c613
+  offset: 64
+}
+member {
+  id: 0x2683be21
+  name: "pos"
+  type_id: 0x27a7c613
+  offset: 384
+}
+member {
+  id: 0x26c338a6
+  name: "pos"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x26e19490
+  name: "pos"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x90a0a50e
+  name: "position"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0x90dad6ba
+  name: "position"
+  type_id: 0x1d5bae2a
+}
+member {
+  id: 0x051ec4e2
+  name: "posix_cputimers"
+  type_id: 0x6ea71d7e
+  offset: 15488
+}
+member {
+  id: 0x051ec7b2
+  name: "posix_cputimers"
+  type_id: 0x6ea71d7e
+  offset: 2304
+}
+member {
+  id: 0x0df921b1
+  name: "posix_cputimers_work"
+  type_id: 0xf8399b21
+  offset: 16128
+}
+member {
+  id: 0xe282a1a2
+  name: "posix_timer_id"
+  type_id: 0x6720d32f
+  offset: 1056
+}
+member {
+  id: 0x30a0a7aa
+  name: "posix_timers"
+  type_id: 0xd3c80119
+  offset: 1088
+}
+member {
+  id: 0x78a76eca
+  name: "possible_clones"
+  type_id: 0x1c3dbe5a
+  offset: 608
+}
+member {
+  id: 0xa7ffbad9
+  name: "possible_crtcs"
+  type_id: 0x1c3dbe5a
+  offset: 1088
+}
+member {
+  id: 0xa7ffbedd
+  name: "possible_crtcs"
+  type_id: 0x1c3dbe5a
+  offset: 576
+}
+member {
+  id: 0x1b52859f
+  name: "possible_encoders"
+  type_id: 0xc9082b19
+  offset: 13248
+}
+member {
+  id: 0x8ba529c6
+  name: "post_attach"
+  type_id: 0x0eb62dc3
+  offset: 704
+}
+member {
+  id: 0x959c0eb0
+  name: "post_disable"
+  type_id: 0x0cd0a3a7
+  offset: 320
+}
+member {
+  id: 0x14dc16ff
+  name: "post_doit"
+  type_id: 0x0de45378
+  offset: 512
+}
+member {
+  id: 0xc99b2509
+  name: "post_handler"
+  type_id: 0x322703cf
+  offset: 576
+}
+member {
+  id: 0x319b89ab
+  name: "post_init"
+  type_id: 0x2c2c3c2e
+  offset: 50944
+}
+member {
+  id: 0xf5022a3d
+  name: "post_mem_reclaim"
+  type_id: 0x2c64ebe5
+  offset: 64
+}
+member {
+  id: 0xf4ea6bfd
+  name: "post_power_on"
+  type_id: 0x0dd7b940
+  offset: 64
+}
+member {
+  id: 0xdbe5b0ea
+  name: "post_rate_change"
+  type_id: 0x2d6e0972
+  offset: 1664
+}
+member {
+  id: 0xeb98316e
+  name: "post_req"
+  type_id: 0x0df8e7ff
+}
+member {
+  id: 0xb58eff62
+  name: "post_reset"
+  type_id: 0x2fe06892
+  offset: 512
+}
+member {
+  id: 0xc30b4ab5
+  name: "post_streamoff"
+  type_id: 0x2dec5b18
+  offset: 1216
+}
+member {
+  id: 0x5dd7fad3
+  name: "post_ts"
+  type_id: 0x399c459b
+  offset: 128
+}
+member {
+  id: 0x522df237
+  name: "post_vectors"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xda447de8
+  name: "postclose"
+  type_id: 0x0d1480d6
+  offset: 128
+}
+member {
+  id: 0x8b7f06e4
+  name: "postdisable"
+  type_id: 0x2c78b884
+  offset: 192
+}
+member {
+  id: 0xa738ef9c
+  name: "postenable"
+  type_id: 0x2c78b884
+  offset: 64
+}
+member {
+  id: 0x5016a0d8
+  name: "potential_contaminant"
+  type_id: 0x6d7f5ff6
+  offset: 34200
+}
+member {
+  id: 0x002f56c1
+  name: "power"
+  type_id: 0x5d8155a5
+  offset: 736
+  bitsize: 1
+}
+member {
+  id: 0xa9102593
+  name: "power"
+  type_id: 0x1976f438
+  offset: 2112
+}
+member {
+  id: 0xa92414e3
+  name: "power"
+  type_id: 0x2d496dd4
+  offset: 256
+}
+member {
+  id: 0xa93a2ca0
+  name: "power"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xa96e7917
+  name: "power"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0xa97d8e56
+  name: "power"
+  type_id: 0x74d29cf1
+  offset: 7744
+}
+member {
+  id: 0xa9e18c6e
+  name: "power"
+  type_id: 0xe8d14bc6
+}
+member {
+  id: 0x880932d0
+  name: "power2state"
+  type_id: 0x2d75c4b5
+  offset: 320
+}
+member {
+  id: 0xd13842eb
+  name: "power_budget"
+  type_id: 0x4585663f
+  offset: 3648
+}
+member {
+  id: 0xdeb3de40
+  name: "power_check"
+  type_id: 0x2d51ec95
+  offset: 832
+}
+member {
+  id: 0xf33fc9cc
+  name: "power_checked"
+  type_id: 0x5d8155a5
+  offset: 743
+  bitsize: 1
+}
+member {
+  id: 0xac320c2b
+  name: "power_checks"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x287b1fd0
+  name: "power_count"
+  type_id: 0x6720d32f
+  offset: 7840
+}
+member {
+  id: 0xf22db307
+  name: "power_delay_ms"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xf8fe749e
+  name: "power_down_ok"
+  type_id: 0x36fd3e2d
+}
+member {
+  id: 0x37d5074a
+  name: "power_list"
+  type_id: 0xd3c80119
+  offset: 2112
+}
+member {
+  id: 0x4c5df948
+  name: "power_mode"
+  type_id: 0x5d8155a5
+  offset: 112
+}
+member {
+  id: 0x34c55ea6
+  name: "power_notifiers"
+  type_id: 0x7db04ce7
+  offset: 10816
+}
+member {
+  id: 0xd70922f1
+  name: "power_off"
+  type_id: 0xf1159c31
+  offset: 14272
+}
+member {
+  id: 0xd7d57362
+  name: "power_off"
+  type_id: 0x2d4fc86f
+  offset: 192
+}
+member {
+  id: 0xd7d5a9df
+  name: "power_off"
+  type_id: 0x2d99009f
+  offset: 10688
+}
+member {
+  id: 0xd7f5ea18
+  name: "power_off"
+  type_id: 0x0dd7b940
+  offset: 128
+}
+member {
+  id: 0x00b4cd45
+  name: "power_off_latency_ns"
+  type_id: 0x2e0f9112
+}
+member {
+  id: 0xcf90d823
+  name: "power_off_longtime"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0x0a87c04b
+  name: "power_off_notification"
+  type_id: 0x295c7202
+  offset: 224
+}
+member {
+  id: 0x0a15c04f
+  name: "power_off_work"
+  type_id: 0x1f3c8679
+  offset: 9856
+}
+member {
+  id: 0x20964d1b
+  name: "power_on"
+  type_id: 0x2d4fc86f
+  offset: 128
+}
+member {
+  id: 0x20969be8
+  name: "power_on"
+  type_id: 0x2d99009f
+  offset: 10752
+}
+member {
+  id: 0x20a435f2
+  name: "power_on"
+  type_id: 0x1f3c8679
+  offset: 13888
+}
+member {
+  id: 0x4285a736
+  name: "power_on_latency_ns"
+  type_id: 0x2e0f9112
+  offset: 64
+}
+member {
+  id: 0xd07fbc74
+  name: "power_ref"
+  type_id: 0x74d29cf1
+  offset: 20896
+}
+member {
+  id: 0xf3f94adb
+  name: "power_ref_sleep"
+  type_id: 0x03913382
+  offset: 21120
+}
+member {
+  id: 0xd6fb86ea
+  name: "power_rule"
+  type_id: 0xec0f8540
+  offset: 96
+}
+member {
+  id: 0xd9fd2533
+  name: "power_sleep"
+  type_id: 0x03913382
+  offset: 20928
+}
+member {
+  id: 0x6f584342
+  name: "power_state"
+  type_id: 0x4585663f
+  offset: 20864
+}
+member {
+  id: 0x6fedd06b
+  name: "power_state"
+  type_id: 0xf017819f
+}
+member {
+  id: 0xef35881d
+  name: "power_usage"
+  type_id: 0x6720d32f
+  offset: 576
+}
+member {
+  id: 0x9865a105
+  name: "poweroff"
+  type_id: 0x2dd58efa
+  offset: 384
+}
+member {
+  id: 0xcbe9a11b
+  name: "poweroff_late"
+  type_id: 0x2dd58efa
+  offset: 768
+}
+member {
+  id: 0xf5ee1b52
+  name: "poweroff_noirq"
+  type_id: 0x2dd58efa
+  offset: 1152
+}
+member {
+  id: 0x7e6ea6cb
+  name: "pp"
+  type_id: 0x1344d43c
+  offset: 64
+}
+member {
+  id: 0x7ec1ca42
+  name: "pp"
+  type_id: 0xbc27a444
+  offset: 512
+}
+member {
+  id: 0xd25d6541
+  name: "pp_frag_count"
+  type_id: 0xb02b353a
+}
+member {
+  id: 0xb36ba6e0
+  name: "pp_magic"
+  type_id: 0x33756485
+}
+member {
+  id: 0xa6c6116f
+  name: "pp_recycle"
+  type_id: 0xb3e7bac9
+  offset: 1015
+  bitsize: 1
+}
+member {
+  id: 0x32166a14
+  name: "ppe_thres"
+  type_id: 0xee246fac
+  offset: 240
+}
+member {
+  id: 0x1bb98a07
+  name: "ppi_descs"
+  type_id: 0x0337b511
+  offset: 896
+}
+member {
+  id: 0xdbd5b2cb
+  name: "ppi_nr"
+  type_id: 0x4585663f
+  offset: 864
+}
+member {
+  id: 0xc1f015d6
+  name: "ppid"
+  type_id: 0x49b889e7
+  offset: 5952
+}
+member {
+  id: 0x58f6b91e
+  name: "ppm_lock"
+  type_id: 0xa7c362b0
+  offset: 1984
+}
+member {
+  id: 0xc71ecdda
+  name: "ppp"
+  type_id: 0x18bd6530
+  offset: 192
+}
+member {
+  id: 0xdb4a7f98
+  name: "pppoe"
+  type_id: 0x1a4486e7
+}
+member {
+  id: 0x564576e9
+  name: "ppr"
+  type_id: 0x4585663f
+  offset: 2794
+  bitsize: 1
+}
+member {
+  id: 0x5e31c941
+  name: "pprev"
+  type_id: 0x0586cc54
+  offset: 64
+}
+member {
+  id: 0x5e38e1c9
+  name: "pprev"
+  type_id: 0x0cae44df
+  offset: 64
+}
+member {
+  id: 0x5e3b8973
+  name: "pprev"
+  type_id: 0x0fc6fef1
+  offset: 64
+}
+member {
+  id: 0x6b1f53ba
+  name: "pps"
+  type_id: 0x4585663f
+  offset: 44832
+}
+member {
+  id: 0x6b3dfbc3
+  name: "pps"
+  type_id: 0x6720d32f
+  offset: 480
+}
+member {
+  id: 0x6bbcfcd6
+  name: "pps"
+  type_id: 0xe62ebf07
+  offset: 192
+}
+member {
+  id: 0x4a1fdb38
+  name: "pps20_reserved"
+  type_id: 0x295c7202
+  offset: 160
+}
+member {
+  id: 0xebc0a217
+  name: "pps26_reserved"
+  type_id: 0x295c7202
+  offset: 208
+}
+member {
+  id: 0x4c5cf233
+  name: "pps_3"
+  type_id: 0x295c7202
+  offset: 24
+}
+member {
+  id: 0x0c9c64fe
+  name: "pps_4"
+  type_id: 0x295c7202
+  offset: 32
+}
+member {
+  id: 0x7046e533
+  name: "pps_beta_offset_div2"
+  type_id: 0x901eaf6a
+  offset: 416
+}
+member {
+  id: 0xde8ae941
+  name: "pps_cb_qp_offset"
+  type_id: 0x901eaf6a
+  offset: 48
+}
+member {
+  id: 0x8d3c7b36
+  name: "pps_complete"
+  type_id: 0x3fcbf304
+  offset: 11712
+}
+member {
+  id: 0x9c354b81
+  name: "pps_cr_qp_offset"
+  type_id: 0x901eaf6a
+  offset: 56
+}
+member {
+  id: 0x3dd8249d
+  name: "pps_data"
+  type_id: 0x593c0f6e
+  offset: 11424
+}
+member {
+  id: 0x8f5a97bc
+  name: "pps_identifier"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0xa712bada
+  name: "pps_long_102_reserved"
+  type_id: 0xc9082b19
+  offset: 816
+}
+member {
+  id: 0xe069c3fd
+  name: "pps_long_106_reserved"
+  type_id: 0xc9082b19
+  offset: 848
+}
+member {
+  id: 0xe694973f
+  name: "pps_long_110_reserved"
+  type_id: 0xc9082b19
+  offset: 880
+}
+member {
+  id: 0x3c477d8c
+  name: "pps_long_114_reserved"
+  type_id: 0xc9082b19
+  offset: 912
+}
+member {
+  id: 0x1521d17c
+  name: "pps_long_118_reserved"
+  type_id: 0xc9082b19
+  offset: 944
+}
+member {
+  id: 0xdc186ed2
+  name: "pps_long_122_reserved"
+  type_id: 0xc9082b19
+  offset: 976
+}
+member {
+  id: 0x9125f95d
+  name: "pps_long_94_reserved"
+  type_id: 0xc9082b19
+  offset: 752
+}
+member {
+  id: 0x180dad2d
+  name: "pps_long_98_reserved"
+  type_id: 0xc9082b19
+  offset: 784
+}
+member {
+  id: 0xb828e7c0
+  name: "pps_pending"
+  type_id: 0x6d7f5ff6
+  offset: 11968
+}
+member {
+  id: 0x809edba2
+  name: "pps_reserved"
+  type_id: 0x295c7202
+  offset: 16
+}
+member {
+  id: 0x902933a6
+  name: "pps_short_126_reserved"
+  type_id: 0x7584e7da
+  offset: 1008
+}
+member {
+  id: 0xa5dd530f
+  name: "pps_source"
+  type_id: 0x1da466a8
+  offset: 9792
+}
+member {
+  id: 0x7ec6d9ab
+  name: "pps_status"
+  type_id: 0x6720d32f
+  offset: 12000
+}
+member {
+  id: 0x1c8b23f2
+  name: "pps_tc_offset_div2"
+  type_id: 0x901eaf6a
+  offset: 424
+}
+member {
+  id: 0x19a25c32
+  name: "pps_times"
+  type_id: 0xf2c78cfb
+}
+member {
+  id: 0x278d1f86
+  name: "ppsfreq"
+  type_id: 0x39470e64
+  offset: 768
+}
+member {
+  id: 0x767dc80c
+  name: "pq_align"
+  type_id: 0x5d9a121f
+  offset: 768
+}
+member {
+  id: 0xcca579d8
+  name: "pr_clear"
+  type_id: 0x2da0c3ca
+  offset: 256
+}
+member {
+  id: 0xb5b3a85e
+  name: "pr_ops"
+  type_id: 0x332e04da
+  offset: 1088
+}
+member {
+  id: 0x064a4943
+  name: "pr_preempt"
+  type_id: 0x2da94cfa
+  offset: 192
+}
+member {
+  id: 0xd7f8dcc3
+  name: "pr_register"
+  type_id: 0x2da928f1
+}
+member {
+  id: 0x1e870558
+  name: "pr_release"
+  type_id: 0x2daa7e80
+  offset: 128
+}
+member {
+  id: 0x83bffc27
+  name: "pr_reserve"
+  type_id: 0x2daab788
+  offset: 64
+}
+member {
+  id: 0x0262e024
+  name: "pr_set"
+  type_id: 0x2e0761ed
+  offset: 128
+}
+member {
+  id: 0x8f39437e
+  name: "prd_table"
+  type_id: 0xce6e9270
+  offset: 8192
+}
+member {
+  id: 0x1d16e61f
+  name: "prd_table_length"
+  type_id: 0x9bd401b6
+  offset: 96
+}
+member {
+  id: 0x1d16ecb8
+  name: "prd_table_length"
+  type_id: 0x9bd401b6
+  offset: 224
+}
+member {
+  id: 0x4c6ac117
+  name: "prd_table_offset"
+  type_id: 0x9bd401b6
+  offset: 112
+}
+member {
+  id: 0x4c6acfcd
+  name: "prd_table_offset"
+  type_id: 0x9bd401b6
+  offset: 240
+}
+member {
+  id: 0xa3b7b05e
+  name: "pre"
+  type_id: 0x9d2c4a95
+  offset: 192
+}
+member {
+  id: 0x2ffb164d
+  name: "pre_aggregate"
+  type_id: 0x0e534115
+  offset: 384
+}
+member {
+  id: 0xff877f1e
+  name: "pre_connect"
+  type_id: 0x2c16e301
+  offset: 64
+}
+member {
+  id: 0x8bc6f8d7
+  name: "pre_doit"
+  type_id: 0x2ea27fd7
+  offset: 448
+}
+member {
+  id: 0x5e4a7904
+  name: "pre_enable"
+  type_id: 0x0cd0a3a7
+  offset: 448
+}
+member {
+  id: 0x3cd08da3
+  name: "pre_eol_info"
+  type_id: 0x295c7202
+  offset: 1280
+}
+member {
+  id: 0x3f9ad514
+  name: "pre_exit"
+  type_id: 0x0e7c0a8b
+  offset: 192
+}
+member {
+  id: 0x84a8f8f1
+  name: "pre_handler"
+  type_id: 0xad2da76c
+  offset: 512
+}
+member {
+  id: 0x407a0010
+  name: "pre_mem_share"
+  type_id: 0x2c64ebe5
+}
+member {
+  id: 0xe19ce455
+  name: "pre_power_on"
+  type_id: 0x0dd7b940
+}
+member {
+  id: 0x7ff4a6be
+  name: "pre_rate_change"
+  type_id: 0x2d6e0972
+  offset: 1600
+}
+member {
+  id: 0x539ea6ff
+  name: "pre_req"
+  type_id: 0x0dfe95f2
+  offset: 64
+}
+member {
+  id: 0x5e0fd3fb
+  name: "pre_reset"
+  type_id: 0x2fe06892
+  offset: 448
+}
+member {
+  id: 0x49820eb0
+  name: "pre_streamon"
+  type_id: 0x2d255333
+  offset: 1152
+}
+member {
+  id: 0xfd67730a
+  name: "pre_suspend"
+  type_id: 0x2e9195ef
+  offset: 128
+}
+member {
+  id: 0xefe31069
+  name: "pre_ts"
+  type_id: 0x399c459b
+}
+member {
+  id: 0x3f35349d
+  name: "pre_vectors"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x750eca39
+  name: "prealloc"
+  type_id: 0x6d7f5ff6
+  offset: 512
+}
+member {
+  id: 0x077ecf9a
+  name: "prealloc_buf"
+  type_id: 0x0483e6f8
+  offset: 1216
+}
+member {
+  id: 0xb6e58275
+  name: "prealloc_buffer_size"
+  type_id: 0x4585663f
+  offset: 512
+}
+member {
+  id: 0xcc136178
+  name: "prealloc_mutex"
+  type_id: 0xa7c362b0
+  offset: 640
+}
+member {
+  id: 0xdfa9e7fa
+  name: "prealloc_pte"
+  type_id: 0xf0d2310e
+  offset: 832
+}
+member {
+  id: 0xf54c4721
+  name: "preallocated_names"
+  type_id: 0xd0adbf31
+  offset: 832
+}
+member {
+  id: 0x5e5f9d50
+  name: "preambles"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x7041d448
+  name: "precharge_current_ua"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0x3f89e85e
+  name: "precharge_voltage_max_uv"
+  type_id: 0x6720d32f
+  offset: 224
+}
+member {
+  id: 0xe1a7b0a2
+  name: "precious_reg"
+  type_id: 0x35592596
+  offset: 448
+}
+member {
+  id: 0xe1a7b8e5
+  name: "precious_reg"
+  type_id: 0x35592596
+  offset: 3200
+}
+member {
+  id: 0x350d14c8
+  name: "precious_table"
+  type_id: 0x3842259a
+  offset: 3584
+}
+member {
+  id: 0x350d1b19
+  name: "precious_table"
+  type_id: 0x3842259a
+  offset: 1600
+}
+member {
+  id: 0xce5b674b
+  name: "precise"
+  type_id: 0x6d7f5ff6
+  offset: 928
+}
+member {
+  id: 0xc6dcd5a4
+  name: "precise_ip"
+  type_id: 0xedf277ba
+  offset: 335
+  bitsize: 2
+}
+member {
+  id: 0x935d3998
+  name: "precise_resolution"
+  type_id: 0x2c831d6e
+  offset: 704
+}
+member {
+  id: 0x5f1f9d63
+  name: "precision"
+  type_id: 0x39470e64
+  offset: 448
+}
+member {
+  id: 0xfe392514
+  name: "pred"
+  type_id: 0x39c49895
+  offset: 64
+}
+member {
+  id: 0xd9582306
+  name: "pred_probs"
+  type_id: 0x3e3c1b86
+  offset: 632
+}
+member {
+  id: 0x42b6cb90
+  name: "pred_weight_table"
+  type_id: 0x6423b0d9
+  offset: 608
+}
+member {
+  id: 0x649fc3ef
+  name: "predicted"
+  type_id: 0xedf277ba
+  offset: 129
+  bitsize: 1
+}
+member {
+  id: 0x819a572d
+  name: "predisable"
+  type_id: 0x2c78b884
+  offset: 128
+}
+member {
+  id: 0x0645b349
+  name: "preempt"
+  type_id: 0x01122cba
+}
+member {
+  id: 0x3118936e
+  name: "preempt_count"
+  type_id: 0x5d8155a5
+  offset: 24
+}
+member {
+  id: 0x31d73769
+  name: "preempt_count"
+  type_id: 0x92233392
+}
+member {
+  id: 0xad12ae54
+  name: "preempt_notifier"
+  type_id: 0x89c67026
+  offset: 64
+}
+member {
+  id: 0x44e4fcbb
+  name: "preempt_notifiers"
+  type_id: 0x5e8dc7f4
+  offset: 9216
+}
+member {
+  id: 0xcd3210dd
+  name: "preempt_timestamp"
+  type_id: 0x92233392
+  offset: 704
+}
+member {
+  id: 0x1bd1d822
+  name: "preempted"
+  type_id: 0x6d7f5ff6
+  offset: 1936
+}
+member {
+  id: 0xa093e6ac
+  name: "preenable"
+  type_id: 0x2c78b884
+}
+member {
+  id: 0x7944f6c0
+  name: "pref"
+  type_id: 0xc9082b19
+  offset: 608
+}
+member {
+  id: 0x79ead90d
+  name: "pref"
+  type_id: 0x6720d32f
+  offset: 320
+}
+member {
+  id: 0xf25479e8
+  name: "pref_64_window"
+  type_id: 0x4585663f
+  offset: 22091
+  bitsize: 1
+}
+member {
+  id: 0x672512e5
+  name: "pref_erase"
+  type_id: 0x4585663f
+  offset: 7648
+}
+member {
+  id: 0xd552c15c
+  name: "pref_window"
+  type_id: 0x4585663f
+  offset: 22090
+  bitsize: 1
+}
+member {
+  id: 0xb4e45886
+  name: "prefer_role"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0xb4e459ce
+  name: "prefer_role"
+  type_id: 0x6720d32f
+  offset: 7552
+}
+member {
+  id: 0xe8af05e0
+  name: "prefer_shadow"
+  type_id: 0x1c3dbe5a
+  offset: 9504
+}
+member {
+  id: 0xd461d50f
+  name: "prefer_shadow_fbdev"
+  type_id: 0x6d7f5ff6
+  offset: 9536
+}
+member {
+  id: 0xbada6e7d
+  name: "prefered"
+  type_id: 0xe276adef
+  offset: 64
+}
+member {
+  id: 0x9f05839d
+  name: "preferred_bpp"
+  type_id: 0x6720d32f
+  offset: 3104
+}
+member {
+  id: 0xf29eb9e1
+  name: "preferred_depth"
+  type_id: 0x1c3dbe5a
+  offset: 9472
+}
+member {
+  id: 0x1494ddda
+  name: "preferred_refresh"
+  type_id: 0x295c7202
+  offset: 48
+}
+member {
+  id: 0xf804e19d
+  name: "preferred_subdevice"
+  type_id: 0x75617428
+  offset: 256
+}
+member {
+  id: 0x95375227
+  name: "prefix"
+  type_id: 0x6d25e07f
+  offset: 128
+}
+member {
+  id: 0x95646679
+  name: "prefix"
+  type_id: 0x3e10b518
+  offset: 192
+}
+member {
+  id: 0x95646a51
+  name: "prefix"
+  type_id: 0x3e10b518
+  offset: 64
+}
+member {
+  id: 0x95646eb0
+  name: "prefix"
+  type_id: 0x3e10b518
+}
+member {
+  id: 0x2165da89
+  name: "prefix_len"
+  type_id: 0xb3e7bac9
+  offset: 16
+}
+member {
+  id: 0x9c7bb99d
+  name: "prefix_rcv_add_addr"
+  type_id: 0x0e4d5c0b
+  offset: 320
+}
+member {
+  id: 0x39eeadf2
+  name: "prefixlen_d"
+  type_id: 0xb3e7bac9
+  offset: 336
+}
+member {
+  id: 0x08d6a91e
+  name: "prefixlen_s"
+  type_id: 0xb3e7bac9
+  offset: 344
+}
+member {
+  id: 0xb5fe7b0d
+  name: "prep_fn"
+  type_id: 0x1a443b67
+  offset: 512
+}
+member {
+  id: 0x3d546192
+  name: "prepare"
+  type_id: 0x2ec82b0f
+  offset: 256
+}
+member {
+  id: 0x3d5512af
+  name: "prepare"
+  type_id: 0x2fbbbd2f
+}
+member {
+  id: 0x3d559de0
+  name: "prepare"
+  type_id: 0x2f3d305e
+  offset: 128
+}
+member {
+  id: 0x3d55c573
+  name: "prepare"
+  type_id: 0x2f6c6167
+}
+member {
+  id: 0x3d56122c
+  name: "prepare"
+  type_id: 0x2cbb953f
+  offset: 256
+}
+member {
+  id: 0x3d561540
+  name: "prepare"
+  type_id: 0x2cbb953f
+  offset: 320
+}
+member {
+  id: 0x3d561ade
+  name: "prepare"
+  type_id: 0x2cbeba93
+  offset: 1088
+}
+member {
+  id: 0x3d565da1
+  name: "prepare"
+  type_id: 0x2cf2c077
+  offset: 1792
+}
+member {
+  id: 0x3d565f04
+  name: "prepare"
+  type_id: 0x2cf616a6
+}
+member {
+  id: 0x3d5750d1
+  name: "prepare"
+  type_id: 0x2df0016c
+  offset: 128
+}
+member {
+  id: 0x3d577c9c
+  name: "prepare"
+  type_id: 0x2dd58efa
+}
+member {
+  id: 0x3d57f759
+  name: "prepare"
+  type_id: 0x2d5e4b40
+}
+member {
+  id: 0x3d75932e
+  name: "prepare"
+  type_id: 0x0f3dfb90
+  offset: 320
+}
+member {
+  id: 0x3d76f8b5
+  name: "prepare"
+  type_id: 0x0c596e35
+  offset: 192
+}
+member {
+  id: 0x3d770e69
+  name: "prepare"
+  type_id: 0x0da39a23
+  offset: 64
+}
+member {
+  id: 0x088ec4c0
+  name: "prepare_count"
+  type_id: 0x4585663f
+  offset: 1024
+}
+member {
+  id: 0x90c1fac3
+  name: "prepare_data_urb"
+  type_id: 0x2d7c4530
+  offset: 384
+}
+member {
+  id: 0x85980de7
+  name: "prepare_fb"
+  type_id: 0x2d1a4a37
+  offset: 320
+}
+member {
+  id: 0x85997c8d
+  name: "prepare_fb"
+  type_id: 0x2c6ce7f6
+}
+member {
+  id: 0x8fc83bcb
+  name: "prepare_hs400_tuning"
+  type_id: 0x2ea6d809
+  offset: 832
+}
+member {
+  id: 0x25513c26
+  name: "prepare_late"
+  type_id: 0x2df0016c
+  offset: 192
+}
+member {
+  id: 0x751e0b52
+  name: "prepare_message"
+  type_id: 0x0f7bef07
+}
+member {
+  id: 0x753caf5a
+  name: "prepare_message"
+  type_id: 0x2ddc072f
+  offset: 11200
+}
+member {
+  id: 0x1b86c00a
+  name: "prepare_recovery"
+  type_id: 0x0cffb85e
+  offset: 384
+}
+member {
+  id: 0xba3a8b53
+  name: "prepare_request"
+  type_id: 0x0f5e0dda
+  offset: 704
+}
+member {
+  id: 0xeb2269d4
+  name: "prepare_rx_dma"
+  type_id: 0x0f7ac5c1
+  offset: 192
+}
+member {
+  id: 0x2c117e99
+  name: "prepare_slave_config"
+  type_id: 0x2c97ec3b
+}
+member {
+  id: 0xc7c39494
+  name: "prepare_transfer_hardware"
+  type_id: 0x2dfdd846
+  offset: 11008
+}
+member {
+  id: 0xd4d1bc6a
+  name: "prepare_tx_dma"
+  type_id: 0x0f7ac5c1
+  offset: 128
+}
+member {
+  id: 0x934f43bd
+  name: "prepare_write_buffer"
+  type_id: 0x2fc68c73
+  offset: 4416
+}
+member {
+  id: 0x9ef237da
+  name: "prepare_writeback_job"
+  type_id: 0x2f2b3ad1
+  offset: 512
+}
+member {
+  id: 0xcdf96a51
+  name: "prepared"
+  type_id: 0x6d7f5ff6
+  offset: 64
+}
+member {
+  id: 0xcdf96d0a
+  name: "prepared"
+  type_id: 0x6d7f5ff6
+  offset: 832
+}
+member {
+  id: 0xdc7238dc
+  name: "prepared"
+  type_id: 0x4585663f
+  offset: 737
+  bitsize: 1
+}
+member {
+  id: 0x7e20550d
+  name: "prepared_count"
+  type_id: 0x4585663f
+  offset: 10560
+}
+member {
+  id: 0x27d7b870
+  name: "preparse"
+  type_id: 0x2d2eeaab
+  offset: 256
+}
+member {
+  id: 0x2c18d451
+  name: "preparsed"
+  type_id: 0x18bd6530
+  offset: 128
+}
+member {
+  id: 0xa2bb8da5
+  name: "preplay"
+  type_id: 0xf7cc861a
+  offset: 3520
+}
+member {
+  id: 0x12c95611
+  name: "preplay_esn"
+  type_id: 0x287dadb4
+  offset: 3648
+}
+member {
+  id: 0x34aa29cb
+  name: "present"
+  type_id: 0x5d8155a5
+  offset: 2576
+}
+member {
+  id: 0x67e4f214
+  name: "present_early_pages"
+  type_id: 0x33756485
+  offset: 1152
+}
+member {
+  id: 0xa43d0489
+  name: "present_pages"
+  type_id: 0x33756485
+  offset: 1088
+}
+member {
+  id: 0x22e05b57
+  name: "preserve_config"
+  type_id: 0x4585663f
+  offset: 8137
+  bitsize: 1
+}
+member {
+  id: 0x062f6828
+  name: "preset_chandef"
+  type_id: 0x83d65a6a
+  offset: 64
+}
+member {
+  id: 0x062f6cc9
+  name: "preset_chandef"
+  type_id: 0x83d65a6a
+}
+member {
+  id: 0x96393c2c
+  name: "preset_enabled"
+  type_id: 0x6d7f5ff6
+  offset: 6312
+}
+member {
+  id: 0xedbb0da6
+  name: "pretimeout"
+  type_id: 0x0f985851
+  offset: 192
+}
+member {
+  id: 0xedf11f26
+  name: "pretimeout"
+  type_id: 0x4585663f
+  offset: 448
+}
+member {
+  id: 0xbd823cfd
+  name: "prev"
+  type_id: 0x054f691a
+  offset: 64
+}
+member {
+  id: 0xbd8477f7
+  name: "prev"
+  type_id: 0x030b9acf
+  offset: 512
+}
+member {
+  id: 0xbd86bedb
+  name: "prev"
+  type_id: 0x01c77248
+  offset: 1152
+}
+member {
+  id: 0xbd9d8cc4
+  name: "prev"
+  type_id: 0x1af273e3
+  offset: 128
+}
+member {
+  id: 0xbdb911ad
+  name: "prev"
+  type_id: 0x3e6239e1
+  offset: 64
+}
+member {
+  id: 0x0003d871
+  name: "prev_count"
+  type_id: 0x09f9643d
+  offset: 1024
+}
+member {
+  id: 0x7ec9d562
+  name: "prev_cputime"
+  type_id: 0xade5df6d
+  offset: 14912
+}
+member {
+  id: 0x7ec9d6bf
+  name: "prev_cputime"
+  type_id: 0xade5df6d
+  offset: 8064
+}
+member {
+  id: 0x7ec9d8d7
+  name: "prev_cputime"
+  type_id: 0xade5df6d
+  offset: 3840
+}
+member {
+  id: 0x16293fe8
+  name: "prev_ev"
+  type_id: 0x97012809
+  offset: 33792
+}
+member {
+  id: 0x4ac13271
+  name: "prev_growth"
+  type_id: 0x92233392
+  offset: 192
+}
+member {
+  id: 0x57943168
+  name: "prev_high_trip"
+  type_id: 0x6720d32f
+  offset: 8608
+}
+member {
+  id: 0x37e09836
+  name: "prev_idx"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x7f5ae705
+  name: "prev_insn_idx"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x7ff4c214
+  name: "prev_insn_idx"
+  type_id: 0x6720d32f
+  offset: 992
+}
+member {
+  id: 0xc267fa65
+  name: "prev_insn_print_len"
+  type_id: 0xc9082b19
+  offset: 76512
+}
+member {
+  id: 0x406b83f4
+  name: "prev_insn_processed"
+  type_id: 0xc9082b19
+  offset: 75904
+}
+member {
+  id: 0x1eb22fc2
+  name: "prev_irq_time"
+  type_id: 0x92233392
+  offset: 27008
+}
+member {
+  id: 0x9f3e34b4
+  name: "prev_jmps_processed"
+  type_id: 0xc9082b19
+  offset: 75968
+}
+member {
+  id: 0x77ea2644
+  name: "prev_last_obj_cnt"
+  type_id: 0x4585663f
+  offset: 640
+}
+member {
+  id: 0x7a314736
+  name: "prev_linfo"
+  type_id: 0x313780ff
+  offset: 13056
+}
+member {
+  id: 0x8e6a1692
+  name: "prev_log_len"
+  type_id: 0xc9082b19
+  offset: 76480
+}
+member {
+  id: 0xe874e5aa
+  name: "prev_low_trip"
+  type_id: 0x6720d32f
+  offset: 8576
+}
+member {
+  id: 0x79b1dc46
+  name: "prev_mm"
+  type_id: 0x1b36c7a2
+  offset: 22016
+}
+member {
+  id: 0x86da78f8
+  name: "prev_num_queued"
+  type_id: 0x4585663f
+  offset: 608
+}
+member {
+  id: 0xf8d0387d
+  name: "prev_ovlimit"
+  type_id: 0x4585663f
+  offset: 576
+}
+member {
+  id: 0x0d567944
+  name: "prev_pos"
+  type_id: 0x27a7c613
+  offset: 192
+}
+member {
+  id: 0x286d4466
+  name: "prev_seq"
+  type_id: 0x4585663f
+  offset: 512
+}
+member {
+  id: 0xaa5fe510
+  name: "prev_seqno"
+  type_id: 0x92233392
+  offset: 576
+}
+member {
+  id: 0xbe9bab1c
+  name: "prev_state"
+  type_id: 0x63b95725
+  offset: 2432
+}
+member {
+  id: 0xf0cec3f3
+  name: "prev_steal_time"
+  type_id: 0x92233392
+  offset: 27072
+}
+member {
+  id: 0xfa84d17c
+  name: "prev_steal_time_rq"
+  type_id: 0x92233392
+  offset: 27136
+}
+member {
+  id: 0x221108cc
+  name: "prev_sum_exec_runtime"
+  type_id: 0x92233392
+  offset: 704
+}
+member {
+  id: 0x6a17fd3d
+  name: "prevent_deferred_probe"
+  type_id: 0x6d7f5ff6
+  offset: 1856
+}
+member {
+  id: 0x619101ab
+  name: "prevent_medium_removal"
+  type_id: 0x4585663f
+  offset: 196
+  bitsize: 1
+}
+member {
+  id: 0x44cb53c7
+  name: "prevent_sleep_time"
+  type_id: 0x11c404ba
+  offset: 1152
+}
+member {
+  id: 0xc9088b8b
+  name: "previous_freq"
+  type_id: 0x33756485
+  offset: 9408
+}
+member {
+  id: 0xc695bc1e
+  name: "pri_enabled"
+  type_id: 0x4585663f
+  offset: 22105
+  bitsize: 1
+}
+member {
+  id: 0x01e1ab11
+  name: "pri_to_cpu"
+  type_id: 0x0772f61b
+}
+member {
+  id: 0xacb061a5
+  name: "primary"
+  type_id: 0x5d8155a5
+  offset: 64
+}
+member {
+  id: 0xacb0629d
+  name: "primary"
+  type_id: 0x5d8155a5
+  offset: 1992
+}
+member {
+  id: 0xacd7d7ca
+  name: "primary"
+  type_id: 0x3a33db75
+}
+member {
+  id: 0xace66851
+  name: "primary"
+  type_id: 0x0b8758d9
+  offset: 512
+}
+member {
+  id: 0xacf6c66d
+  name: "primary"
+  type_id: 0x1b2ca025
+  offset: 1152
+}
+member {
+  id: 0x61981f38
+  name: "primary_device_type"
+  type_id: 0xa0b4fda8
+  offset: 248
+}
+member {
+  id: 0xe21962de
+  name: "primary_hcd"
+  type_id: 0x25782362
+  offset: 5056
+}
+member {
+  id: 0x7bc36d30
+  name: "primary_key"
+  type_id: 0xce6e9270
+  offset: 3136
+}
+member {
+  id: 0xd79b13be
+  name: "prime"
+  type_id: 0xd826d96d
+  offset: 2688
+}
+member {
+  id: 0x36ac5548
+  name: "prime_fd_to_handle"
+  type_id: 0x2e54d3eb
+  offset: 704
+}
+member {
+  id: 0xa2252d93
+  name: "prime_handle_to_fd"
+  type_id: 0x2e5372aa
+  offset: 640
+}
+member {
+  id: 0x0cf05df0
+  name: "print_fmt"
+  type_id: 0x0483e6f8
+  offset: 640
+}
+member {
+  id: 0xbbf71ca8
+  name: "print_header"
+  type_id: 0x0ed073a8
+  offset: 768
+}
+member {
+  id: 0x00cfc64c
+  name: "print_info"
+  type_id: 0x0c472572
+  offset: 192
+}
+member {
+  id: 0x91bcf079
+  name: "print_line"
+  type_id: 0x168ab9de
+  offset: 832
+}
+member {
+  id: 0x4dc612a1
+  name: "print_max"
+  type_id: 0x6d7f5ff6
+  offset: 1184
+}
+member {
+  id: 0x2772c005
+  name: "printed"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0x9593bf67
+  name: "printfn"
+  type_id: 0x0c23d1c8
+}
+member {
+  id: 0xa9060900
+  name: "prio"
+  type_id: 0xd41e888f
+}
+member {
+  id: 0xa91b1c87
+  name: "prio"
+  type_id: 0xc9082b19
+  offset: 224
+}
+member {
+  id: 0xa9403686
+  name: "prio"
+  type_id: 0x92233392
+  offset: 704
+}
+member {
+  id: 0xa9622e6c
+  name: "prio"
+  type_id: 0xb0312d5a
+  offset: 192
+}
+member {
+  id: 0xa97d0900
+  name: "prio"
+  type_id: 0xaf1e23da
+  offset: 256
+}
+member {
+  id: 0xa9b5375b
+  name: "prio"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xa9b53984
+  name: "prio"
+  type_id: 0x6720d32f
+  offset: 544
+}
+member {
+  id: 0xa9b53a60
+  name: "prio"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0xa9b53e7a
+  name: "prio"
+  type_id: 0x6720d32f
+  offset: 1056
+}
+member {
+  id: 0xa9b53e99
+  name: "prio"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0xa9bd3464
+  name: "prio"
+  type_id: 0x6f23eca1
+}
+member {
+  id: 0xa9d6a844
+  name: "prio"
+  type_id: 0x04bd6229
+  offset: 9088
+}
+member {
+  id: 0xa9eaa0db
+  name: "prio"
+  type_id: 0x38b56e39
+  offset: 704
+}
+member {
+  id: 0xa9fb46c1
+  name: "prio"
+  type_id: 0x295c7202
+  offset: 32
+}
+member {
+  id: 0x7446ee73
+  name: "prio_changed"
+  type_id: 0x0c4d6f90
+  offset: 1472
+}
+member {
+  id: 0x6e2b37ff
+  name: "prio_list"
+  type_id: 0xd3c80119
+  offset: 64
+}
+member {
+  id: 0x16422b43
+  name: "prio_lock"
+  type_id: 0xf313e71a
+  offset: 3456
+}
+member {
+  id: 0xc3d04af9
+  name: "prio_next"
+  type_id: 0xe9da44e2
+  offset: 3488
+}
+member {
+  id: 0xa7436cf7
+  name: "prio_state"
+  type_id: 0x35359064
+  offset: 3552
+}
+member {
+  id: 0x6ed74590
+  name: "prio_tc_map"
+  type_id: 0x4664de11
+  offset: 18800
+}
+member {
+  id: 0x9641c4b5
+  name: "prioidx"
+  type_id: 0x914dbfdc
+  offset: 64
+}
+member {
+  id: 0x2a04a92c
+  name: "priomap"
+  type_id: 0xf67b8436
+  offset: 160
+}
+member {
+  id: 0x2ad7adc5
+  name: "priomap"
+  type_id: 0x2575f320
+  offset: 18944
+}
+member {
+  id: 0x4d44a01f
+  name: "priomap_len"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0x8be7c123
+  name: "prior_delivered"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x412290aa
+  name: "prior_delivered_ce"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0xec853087
+  name: "prior_in_flight"
+  type_id: 0xc9082b19
+  offset: 448
+}
+member {
+  id: 0x11000098
+  name: "prior_mstamp"
+  type_id: 0x92233392
+}
+member {
+  id: 0x10027c29
+  name: "priority"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x100d82eb
+  name: "priority"
+  type_id: 0xe9da44e2
+  offset: 832
+}
+member {
+  id: 0x102d51ba
+  name: "priority"
+  type_id: 0xc9082b19
+  offset: 1984
+}
+member {
+  id: 0x102d533e
+  name: "priority"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x102d5449
+  name: "priority"
+  type_id: 0xc9082b19
+  offset: 448
+}
+member {
+  id: 0x102d54ac
+  name: "priority"
+  type_id: 0xc9082b19
+  offset: 928
+}
+member {
+  id: 0x10837204
+  name: "priority"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x10837b6d
+  name: "priority"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0x10908a33
+  name: "priority"
+  type_id: 0x74d29cf1
+  offset: 832
+}
+member {
+  id: 0x10a1d439
+  name: "priority"
+  type_id: 0x4585663f
+  offset: 3456
+}
+member {
+  id: 0x10a1d56b
+  name: "priority"
+  type_id: 0x4585663f
+  offset: 512
+}
+member {
+  id: 0x10cd0450
+  name: "priority"
+  type_id: 0x295c7202
+  offset: 688
+}
+member {
+  id: 0x10cd0767
+  name: "priority"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x10ebf2d4
+  name: "priority"
+  type_id: 0x0faae5b1
+  offset: 224
+}
+member {
+  id: 0x6151727c
+  name: "prios"
+  type_id: 0x9179b426
+}
+member {
+  id: 0x1920e605
+  name: "priv"
+  type_id: 0xedf277ba
+  offset: 158
+  bitsize: 3
+}
+member {
+  id: 0x5911900f
+  name: "priv"
+  type_id: 0x18bd6530
+  offset: 768
+}
+member {
+  id: 0x59119068
+  name: "priv"
+  type_id: 0x18bd6530
+  offset: 192
+}
+member {
+  id: 0x59119163
+  name: "priv"
+  type_id: 0x18bd6530
+  offset: 128
+}
+member {
+  id: 0x591191d3
+  name: "priv"
+  type_id: 0x18bd6530
+  offset: 576
+}
+member {
+  id: 0x591193b9
+  name: "priv"
+  type_id: 0x18bd6530
+  offset: 512
+}
+member {
+  id: 0x591193e9
+  name: "priv"
+  type_id: 0x18bd6530
+  offset: 4160
+}
+member {
+  id: 0x591194e2
+  name: "priv"
+  type_id: 0x18bd6530
+  offset: 8768
+}
+member {
+  id: 0x59119544
+  name: "priv"
+  type_id: 0x18bd6530
+  offset: 7808
+}
+member {
+  id: 0x591195d7
+  name: "priv"
+  type_id: 0x18bd6530
+  offset: 1088
+}
+member {
+  id: 0x59119673
+  name: "priv"
+  type_id: 0x18bd6530
+  offset: 8704
+}
+member {
+  id: 0x591196f2
+  name: "priv"
+  type_id: 0x18bd6530
+  offset: 10560
+}
+member {
+  id: 0x5911975c
+  name: "priv"
+  type_id: 0x18bd6530
+  offset: 15040
+}
+member {
+  id: 0x5911980a
+  name: "priv"
+  type_id: 0x18bd6530
+  offset: 256
+}
+member {
+  id: 0x59119898
+  name: "priv"
+  type_id: 0x18bd6530
+  offset: 9408
+}
+member {
+  id: 0x591198a1
+  name: "priv"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0x59119933
+  name: "priv"
+  type_id: 0x18bd6530
+  offset: 384
+}
+member {
+  id: 0x5911997f
+  name: "priv"
+  type_id: 0x18bd6530
+  offset: 1920
+}
+member {
+  id: 0x59119a52
+  name: "priv"
+  type_id: 0x18bd6530
+  offset: 1408
+}
+member {
+  id: 0x59119a9c
+  name: "priv"
+  type_id: 0x18bd6530
+  offset: 704
+}
+member {
+  id: 0x59119c40
+  name: "priv"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0x59119ed8
+  name: "priv"
+  type_id: 0x18bd6530
+  offset: 640
+}
+member {
+  id: 0x59119edc
+  name: "priv"
+  type_id: 0x18bd6530
+  offset: 1280
+}
+member {
+  id: 0x59119f28
+  name: "priv"
+  type_id: 0x18bd6530
+  offset: 11264
+}
+member {
+  id: 0x59119f66
+  name: "priv"
+  type_id: 0x18bd6530
+  offset: 320
+}
+member {
+  id: 0x59119fbe
+  name: "priv"
+  type_id: 0x18bd6530
+  offset: 1024
+}
+member {
+  id: 0x59119fd6
+  name: "priv"
+  type_id: 0x18bd6530
+  offset: 448
+}
+member {
+  id: 0x5935516c
+  name: "priv"
+  type_id: 0x3c7b932c
+  offset: 7264
+}
+member {
+  id: 0x5935589a
+  name: "priv"
+  type_id: 0x3c7b932c
+  offset: 864
+}
+member {
+  id: 0x59355948
+  name: "priv"
+  type_id: 0x3c7b932c
+  offset: 1024
+}
+member {
+  id: 0x59355a43
+  name: "priv"
+  type_id: 0x3c7b932c
+  offset: 13216
+}
+member {
+  id: 0x593a5132
+  name: "priv"
+  type_id: 0x33756485
+  offset: 384
+}
+member {
+  id: 0x5963a73c
+  name: "priv"
+  type_id: 0x6a8619af
+  offset: 64
+}
+member {
+  id: 0x59c1c59e
+  name: "priv"
+  type_id: 0xc8e4d7d1
+  offset: 6912
+}
+member {
+  id: 0x59c1c6dd
+  name: "priv"
+  type_id: 0xc8e4d7d1
+  offset: 59520
+}
+member {
+  id: 0x59c3092e
+  name: "priv"
+  type_id: 0xca2a51af
+  offset: 12032
+}
+member {
+  id: 0x59c30f10
+  name: "priv"
+  type_id: 0xca2a51af
+  offset: 9472
+}
+member {
+  id: 0x59c7420c
+  name: "priv"
+  type_id: 0xce6e9270
+  offset: 2624
+}
+member {
+  id: 0x59ef085f
+  name: "priv"
+  type_id: 0xe62ebf07
+  offset: 224
+}
+member {
+  id: 0xef9043e5
+  name: "priv_destructor"
+  type_id: 0x0d9c4ffe
+  offset: 10176
+}
+member {
+  id: 0x276a0040
+  name: "priv_flags"
+  type_id: 0xd5df6730
+  offset: 1600
+}
+member {
+  id: 0x278ca223
+  name: "priv_flags"
+  type_id: 0x33756485
+  offset: 25920
+}
+member {
+  id: 0x982aca23
+  name: "priv_size"
+  type_id: 0xf435685e
+  offset: 128
+}
+member {
+  id: 0x982acb28
+  name: "priv_size"
+  type_id: 0xf435685e
+  offset: 192
+}
+member {
+  id: 0x98b9d6f1
+  name: "priv_size"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0x69f0c452
+  name: "priv_xfers"
+  type_id: 0x2d3944dd
+  offset: 512
+}
+member {
+  id: 0xbe7db9bb
+  name: "privacy_screen"
+  type_id: 0x1a408053
+  offset: 11904
+}
+member {
+  id: 0x0cc22383
+  name: "privacy_screen_hw_state_property"
+  type_id: 0x2a670b41
+  offset: 12224
+}
+member {
+  id: 0x6b39d825
+  name: "privacy_screen_notifier"
+  type_id: 0x449a775b
+  offset: 11968
+}
+member {
+  id: 0xba39efad
+  name: "privacy_screen_sw_state"
+  type_id: 0x2ec9644b
+  offset: 1120
+}
+member {
+  id: 0xcc3e8da0
+  name: "privacy_screen_sw_state_property"
+  type_id: 0x2a670b41
+  offset: 12160
+}
+member {
+  id: 0x910f145b
+  name: "private"
+  type_id: 0x6ecf2641
+  offset: 256
+}
+member {
+  id: 0x91502702
+  name: "private"
+  type_id: 0x31f516c7
+  offset: 128
+}
+member {
+  id: 0x9152a5aa
+  name: "private"
+  type_id: 0x33756485
+  offset: 512
+}
+member {
+  id: 0x9152ae19
+  name: "private"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0x9174e720
+  name: "private"
+  type_id: 0x153cf6a0
+}
+member {
+  id: 0x917960ca
+  name: "private"
+  type_id: 0x18bd6530
+  offset: 640
+}
+member {
+  id: 0x91796174
+  name: "private"
+  type_id: 0x18bd6530
+  offset: 320
+}
+member {
+  id: 0x917961ac
+  name: "private"
+  type_id: 0x18bd6530
+  offset: 1024
+}
+member {
+  id: 0x917961c4
+  name: "private"
+  type_id: 0x18bd6530
+  offset: 448
+}
+member {
+  id: 0x91796252
+  name: "private"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0x91796509
+  name: "private"
+  type_id: 0x18bd6530
+  offset: 832
+}
+member {
+  id: 0x917966b3
+  name: "private"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0x91796721
+  name: "private"
+  type_id: 0x18bd6530
+  offset: 384
+}
+member {
+  id: 0x91796c8d
+  name: "private"
+  type_id: 0x18bd6530
+  offset: 6720
+}
+member {
+  id: 0x91796dae
+  name: "private"
+  type_id: 0x18bd6530
+  offset: 1856
+}
+member {
+  id: 0x91796e7a
+  name: "private"
+  type_id: 0x18bd6530
+  offset: 192
+}
+member {
+  id: 0x91796f71
+  name: "private"
+  type_id: 0x18bd6530
+  offset: 128
+}
+member {
+  id: 0x91a931d3
+  name: "private"
+  type_id: 0xc8e4d7d1
+  offset: 8704
+}
+member {
+  id: 0x91a936f8
+  name: "private"
+  type_id: 0xc8e4d7d1
+  offset: 10752
+}
+member {
+  id: 0x91a9371d
+  name: "private"
+  type_id: 0xc8e4d7d1
+  offset: 14848
+}
+member {
+  id: 0x3666a386
+  name: "private_args"
+  type_id: 0x3d9194c3
+  offset: 192
+}
+member {
+  id: 0xf21ad019
+  name: "private_data"
+  type_id: 0x18bd6530
+  offset: 1728
+}
+member {
+  id: 0xf21ad023
+  name: "private_data"
+  type_id: 0x18bd6530
+  offset: 1024
+}
+member {
+  id: 0xf21ad0fb
+  name: "private_data"
+  type_id: 0x18bd6530
+  offset: 320
+}
+member {
+  id: 0xf21ad145
+  name: "private_data"
+  type_id: 0x18bd6530
+  offset: 640
+}
+member {
+  id: 0xf21ad14f
+  name: "private_data"
+  type_id: 0x18bd6530
+  offset: 1792
+}
+member {
+  id: 0xf21ad19f
+  name: "private_data"
+  type_id: 0x18bd6530
+  offset: 6272
+}
+member {
+  id: 0xf21ad1ce
+  name: "private_data"
+  type_id: 0x18bd6530
+  offset: 4032
+}
+member {
+  id: 0xf21ad1f2
+  name: "private_data"
+  type_id: 0x18bd6530
+  offset: 3392
+}
+member {
+  id: 0xf21ad2dc
+  name: "private_data"
+  type_id: 0x18bd6530
+  offset: 17408
+}
+member {
+  id: 0xf21ad343
+  name: "private_data"
+  type_id: 0x18bd6530
+  offset: 142272
+}
+member {
+  id: 0xf21ad501
+  name: "private_data"
+  type_id: 0x18bd6530
+  offset: 704
+}
+member {
+  id: 0xf21ad5cf
+  name: "private_data"
+  type_id: 0x18bd6530
+  offset: 1408
+}
+member {
+  id: 0xf21ad6ae
+  name: "private_data"
+  type_id: 0x18bd6530
+  offset: 384
+}
+member {
+  id: 0xf21ad80c
+  name: "private_data"
+  type_id: 0x18bd6530
+  offset: 3200
+}
+member {
+  id: 0xf21ad97e
+  name: "private_data"
+  type_id: 0x18bd6530
+  offset: 2112
+}
+member {
+  id: 0xf21adb2e
+  name: "private_data"
+  type_id: 0x18bd6530
+  offset: 7424
+}
+member {
+  id: 0xf21adc21
+  name: "private_data"
+  type_id: 0x18bd6530
+  offset: 1856
+}
+member {
+  id: 0xf21adc24
+  name: "private_data"
+  type_id: 0x18bd6530
+  offset: 512
+}
+member {
+  id: 0xf21add53
+  name: "private_data"
+  type_id: 0x18bd6530
+  offset: 3264
+}
+member {
+  id: 0xf21adddb
+  name: "private_data"
+  type_id: 0x18bd6530
+  offset: 1536
+}
+member {
+  id: 0xf21adefe
+  name: "private_data"
+  type_id: 0x18bd6530
+  offset: 128
+}
+member {
+  id: 0xf21adfa4
+  name: "private_data"
+  type_id: 0x18bd6530
+  offset: 3648
+}
+member {
+  id: 0xf21adff5
+  name: "private_data"
+  type_id: 0x18bd6530
+  offset: 192
+}
+member {
+  id: 0xf255b74d
+  name: "private_data"
+  type_id: 0x57d5dd0d
+  offset: 192
+}
+member {
+  id: 0x567c4c7c
+  name: "private_free"
+  type_id: 0x0e044b9c
+  offset: 1856
+}
+member {
+  id: 0x567cbe60
+  name: "private_free"
+  type_id: 0x0efa0a60
+  offset: 3328
+}
+member {
+  id: 0x567d898a
+  name: "private_free"
+  type_id: 0x0fc31877
+  offset: 1600
+}
+member {
+  id: 0x567de8bf
+  name: "private_free"
+  type_id: 0x0faef4bf
+  offset: 17472
+}
+member {
+  id: 0x567e4080
+  name: "private_free"
+  type_id: 0x0c0edcf8
+  offset: 1088
+}
+member {
+  id: 0x567edc76
+  name: "private_free"
+  type_id: 0x0c9ac346
+  offset: 2176
+}
+member {
+  id: 0x567f0e57
+  name: "private_free"
+  type_id: 0x0d440f05
+  offset: 576
+}
+member {
+  id: 0x567fc0e3
+  name: "private_free"
+  type_id: 0x0d89a697
+  offset: 3264
+}
+member {
+  id: 0xdbd2d18f
+  name: "private_irqs"
+  type_id: 0x4449c48b
+  offset: 2496
+}
+member {
+  id: 0x78439144
+  name: "private_list"
+  type_id: 0xd3c80119
+  offset: 1728
+}
+member {
+  id: 0x78439661
+  name: "private_list"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0x11ab2f73
+  name: "private_lock"
+  type_id: 0xf313e71a
+  offset: 1696
+}
+member {
+  id: 0xf9f27538
+  name: "private_objs"
+  type_id: 0x0b9eae09
+  offset: 512
+}
+member {
+  id: 0x29c8f0ee
+  name: "private_value"
+  type_id: 0x33756485
+  offset: 960
+}
+member {
+  id: 0x29c8f16f
+  name: "private_value"
+  type_id: 0x33756485
+  offset: 576
+}
+member {
+  id: 0xc35f15b9
+  name: "privatecnt"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x05eea50a
+  name: "privdata"
+  type_id: 0xfb3a099f
+  offset: 3072
+}
+member {
+  id: 0xd37eda8c
+  name: "privid"
+  type_id: 0x391f15ea
+}
+member {
+  id: 0xd37edb2e
+  name: "privid"
+  type_id: 0x391f15ea
+  offset: 2560
+}
+member {
+  id: 0x7f5ac8fb
+  name: "privilege"
+  type_id: 0xc9082b19
+  offset: 29
+  bitsize: 2
+}
+member {
+  id: 0xfbc2c405
+  name: "privobj_list"
+  type_id: 0xd3c80119
+  offset: 3840
+}
+member {
+  id: 0x891369fe
+  name: "prm"
+  type_id: 0x043ce534
+}
+member {
+  id: 0xb84165b0
+  name: "proactive_compact_trigger"
+  type_id: 0x6d7f5ff6
+  offset: 55424
+}
+member {
+  id: 0xb124af35
+  name: "proactive_compaction"
+  type_id: 0x6d7f5ff6
+  offset: 960
+}
+member {
+  id: 0x90c82802
+  name: "prob_gf"
+  type_id: 0xb3e7bac9
+  offset: 9264
+}
+member {
+  id: 0x4a873bbe
+  name: "prob_intra"
+  type_id: 0xb3e7bac9
+  offset: 9248
+}
+member {
+  id: 0x6da25d21
+  name: "prob_last"
+  type_id: 0xb3e7bac9
+  offset: 9256
+}
+member {
+  id: 0x11d92d0d
+  name: "prob_skip_false"
+  type_id: 0xb3e7bac9
+  offset: 9240
+}
+member {
+  id: 0xd70b8c87
+  name: "probe"
+  type_id: 0x5d8155a5
+  offset: 5000
+}
+member {
+  id: 0xd74ebab3
+  name: "probe"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0xd778004b
+  name: "probe"
+  type_id: 0x2e037cf1
+}
+member {
+  id: 0xd7784be3
+  name: "probe"
+  type_id: 0x2e4a2777
+  offset: 1408
+}
+member {
+  id: 0xd7785c07
+  name: "probe"
+  type_id: 0x2e5dc389
+  offset: 1408
+}
+member {
+  id: 0xd7787ef1
+  name: "probe"
+  type_id: 0x2e7404d6
+  offset: 128
+}
+member {
+  id: 0xd778c72d
+  name: "probe"
+  type_id: 0x2ec6e9a9
+  offset: 1408
+}
+member {
+  id: 0xd778e6d8
+  name: "probe"
+  type_id: 0x2ee76b64
+  offset: 1984
+}
+member {
+  id: 0xd778ec2c
+  name: "probe"
+  type_id: 0x2eebfa52
+  offset: 64
+}
+member {
+  id: 0xd7796627
+  name: "probe"
+  type_id: 0x2f63630f
+  offset: 1792
+}
+member {
+  id: 0xd779af15
+  name: "probe"
+  type_id: 0x2fab72b6
+  offset: 1472
+}
+member {
+  id: 0xd779dfba
+  name: "probe"
+  type_id: 0x2fd86c98
+  offset: 64
+}
+member {
+  id: 0xd77a201d
+  name: "probe"
+  type_id: 0x2c27cb1a
+  offset: 64
+}
+member {
+  id: 0xd77a2d00
+  name: "probe"
+  type_id: 0x2c207521
+  offset: 2112
+}
+member {
+  id: 0xd77a3f94
+  name: "probe"
+  type_id: 0x2c3e50b1
+  offset: 1408
+}
+member {
+  id: 0xd77a6336
+  name: "probe"
+  type_id: 0x2c61df5b
+  offset: 1920
+}
+member {
+  id: 0xd77aaf7e
+  name: "probe"
+  type_id: 0x2cac4934
+}
+member {
+  id: 0xd77adbdc
+  name: "probe"
+  type_id: 0x2cdc0ac8
+  offset: 64
+}
+member {
+  id: 0xd77adc58
+  name: "probe"
+  type_id: 0x2cdfc434
+  offset: 256
+}
+member {
+  id: 0xd77ae239
+  name: "probe"
+  type_id: 0x2ce67932
+  offset: 448
+}
+member {
+  id: 0xd77ae775
+  name: "probe"
+  type_id: 0x2ced8019
+  offset: 128
+}
+member {
+  id: 0xd77b1bc7
+  name: "probe"
+  type_id: 0x2d196253
+  offset: 384
+}
+member {
+  id: 0xd77b67e3
+  name: "probe"
+  type_id: 0x2d6627db
+  offset: 1408
+}
+member {
+  id: 0xd77ba7b5
+  name: "probe"
+  type_id: 0x2da2fbac
+  offset: 640
+}
+member {
+  id: 0xd77bd1ce
+  name: "probe"
+  type_id: 0x2dd58efa
+  offset: 448
+}
+member {
+  id: 0xd77bdda1
+  name: "probe"
+  type_id: 0x2dd58efa
+  offset: 512
+}
+member {
+  id: 0xd77bf4ee
+  name: "probe"
+  type_id: 0x2df0fc96
+  offset: 1728
+}
+member {
+  id: 0x14050cd8
+  name: "probe_active"
+  type_id: 0x6720d32f
+  offset: 7712
+}
+member {
+  id: 0x2a095281
+  name: "probe_addr"
+  type_id: 0xedf277ba
+  offset: 320
+}
+member {
+  id: 0xc9684970
+  name: "probe_capabilities"
+  type_id: 0x5eab5fef
+  offset: 20160
+}
+member {
+  id: 0xe5e1630d
+  name: "probe_device"
+  type_id: 0x3daf8dd1
+  offset: 128
+}
+member {
+  id: 0xf6b66ca8
+  name: "probe_finalize"
+  type_id: 0x0e93a255
+  offset: 256
+}
+member {
+  id: 0x25f9c0aa
+  name: "probe_new"
+  type_id: 0x2ed66750
+  offset: 192
+}
+member {
+  id: 0xa8a8f25d
+  name: "probe_offset"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0xa8a8f2f6
+  name: "probe_offset"
+  type_id: 0xedf277ba
+  offset: 256
+}
+member {
+  id: 0x84f7c330
+  name: "probe_order"
+  type_id: 0x6720d32f
+  offset: 1696
+}
+member {
+  id: 0x84f7c948
+  name: "probe_order"
+  type_id: 0x6720d32f
+  offset: 2496
+}
+member {
+  id: 0x4e9575d9
+  name: "probe_resp_offload"
+  type_id: 0xc9082b19
+  offset: 2208
+}
+member {
+  id: 0xf69ec1af
+  name: "probe_type"
+  type_id: 0x189d62e7
+  offset: 288
+}
+member {
+  id: 0x85dcb119
+  name: "probe_unacked"
+  type_id: 0x6d7f5ff6
+  offset: 7760
+}
+member {
+  id: 0xe33e7360
+  name: "probed"
+  type_id: 0x4585663f
+  offset: 6308
+  bitsize: 1
+}
+member {
+  id: 0xe33e78e2
+  name: "probed"
+  type_id: 0x4585663f
+  offset: 1216
+  bitsize: 1
+}
+member {
+  id: 0x5964abc4
+  name: "probed_modes"
+  type_id: 0xd3c80119
+  offset: 1600
+}
+member {
+  id: 0x7ca0a47d
+  name: "probes"
+  type_id: 0x74d29cf1
+  offset: 1152
+}
+member {
+  id: 0x9719f0d3
+  name: "proc"
+  type_id: 0x1f8dbf97
+  offset: 448
+}
+member {
+  id: 0x9719f7a4
+  name: "proc"
+  type_id: 0x1f8dbf97
+}
+member {
+  id: 0x972bae37
+  name: "proc"
+  type_id: 0x2dd3eb1c
+  offset: 320
+}
+member {
+  id: 0x975669a8
+  name: "proc"
+  type_id: 0x501df1d2
+  offset: 2112
+}
+member {
+  id: 0x8397793d
+  name: "proc_compat_ioctl"
+  type_id: 0x229023df
+  offset: 576
+}
+member {
+  id: 0x1149c296
+  name: "proc_dir"
+  type_id: 0x184052fc
+  offset: 2176
+}
+member {
+  id: 0x1149c709
+  name: "proc_dir"
+  type_id: 0x184052fc
+}
+member {
+  id: 0x8243248c
+  name: "proc_dir_entry"
+  type_id: 0x184052fc
+}
+member {
+  id: 0x7df57560
+  name: "proc_dir_ops"
+  type_id: 0x36d130d1
+}
+member {
+  id: 0xe6376f39
+  name: "proc_dops"
+  type_id: 0x39d30e9a
+  offset: 448
+}
+member {
+  id: 0x105fd16a
+  name: "proc_entry"
+  type_id: 0x184052fc
+  offset: 896
+}
+member {
+  id: 0x1554a6fe
+  name: "proc_flags"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xca323da4
+  name: "proc_get_unmapped_area"
+  type_id: 0x0745de2d
+  offset: 704
+}
+member {
+  id: 0x97dd65c0
+  name: "proc_handler"
+  type_id: 0x17f6518a
+  offset: 256
+}
+member {
+  id: 0xf14efdb8
+  name: "proc_ioctl"
+  type_id: 0x229023df
+  offset: 512
+}
+member {
+  id: 0xfbfa79a2
+  name: "proc_iops"
+  type_id: 0x3fb1217f
+  offset: 320
+}
+member {
+  id: 0x066f7dfd
+  name: "proc_lseek"
+  type_id: 0x01c91228
+  offset: 320
+}
+member {
+  id: 0x3fd07bbe
+  name: "proc_mmap"
+  type_id: 0x2c74b483
+  offset: 640
+}
+member {
+  id: 0xf58f775c
+  name: "proc_name"
+  type_id: 0x3e10b518
+  offset: 2112
+}
+member {
+  id: 0x25785b2d
+  name: "proc_net"
+  type_id: 0x184052fc
+  offset: 1280
+}
+member {
+  id: 0x2e94177a
+  name: "proc_net_devsnmp6"
+  type_id: 0x184052fc
+  offset: 832
+}
+member {
+  id: 0x9e692323
+  name: "proc_net_stat"
+  type_id: 0x184052fc
+  offset: 1344
+}
+member {
+  id: 0xbffd168e
+  name: "proc_netfilter"
+  type_id: 0x184052fc
+}
+member {
+  id: 0xdf6a3890
+  name: "proc_node"
+  type_id: 0x49a73111
+}
+member {
+  id: 0xf92b0429
+  name: "proc_open"
+  type_id: 0x2c50b20c
+  offset: 64
+}
+member {
+  id: 0x5ddffeef
+  name: "proc_ops"
+  type_id: 0x386effc9
+}
+member {
+  id: 0x28d18312
+  name: "proc_pads"
+  type_id: 0x7affc48e
+  offset: 3072
+}
+member {
+  id: 0x8209f3a4
+  name: "proc_poll"
+  type_id: 0x03fd7ad9
+  offset: 448
+}
+member {
+  id: 0x5e72d32c
+  name: "proc_read"
+  type_id: 0x0e2924a0
+  offset: 128
+}
+member {
+  id: 0x6916c8aa
+  name: "proc_read_iter"
+  type_id: 0x0f08e52a
+  offset: 192
+}
+member {
+  id: 0x637f0c5b
+  name: "proc_release"
+  type_id: 0x2c50b20c
+  offset: 384
+}
+member {
+  id: 0x423982c7
+  name: "proc_root"
+  type_id: 0x3f222c68
+  offset: 12096
+}
+member {
+  id: 0xb8a06d33
+  name: "proc_root_link"
+  type_id: 0x184052fc
+  offset: 12160
+}
+member {
+  id: 0x3ba75864
+  name: "proc_show"
+  type_id: 0x2d8ee262
+  offset: 2048
+}
+member {
+  id: 0x0b06c408
+  name: "proc_write"
+  type_id: 0x0e13b7f3
+  offset: 256
+}
+member {
+  id: 0x8fadbfb1
+  name: "procdir"
+  type_id: 0x184052fc
+  offset: 1920
+}
+member {
+  id: 0xc5244ab4
+  name: "procent"
+  type_id: 0x184052fc
+  offset: 320
+}
+member {
+  id: 0x0d963983
+  name: "process"
+  type_id: 0x2cdf9930
+  offset: 128
+}
+member {
+  id: 0x055eb011
+  name: "process_class"
+  type_id: 0x914dbfdc
+  offset: 4720
+}
+member {
+  id: 0x44535944
+  name: "process_keyring"
+  type_id: 0x01a688ae
+  offset: 768
+}
+member {
+  id: 0xbfe14d2f
+  name: "process_queue"
+  type_id: 0x578f9c2b
+  offset: 128
+}
+member {
+  id: 0x320901bb
+  name: "process_read_urb"
+  type_id: 0x0ea52fda
+  offset: 4352
+}
+member {
+  id: 0xccc4b7ef
+  name: "process_response"
+  type_id: 0x2e0b4b4b
+  offset: 128
+}
+member {
+  id: 0x3cce5fd6
+  name: "process_todo"
+  type_id: 0x6d7f5ff6
+  offset: 704
+}
+member {
+  id: 0x9e219cb6
+  name: "process_trans_perms"
+  type_id: 0xc9082b19
+  offset: 4736
+}
+member {
+  id: 0xbe13f636
+  name: "processed"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0xbe3b05ea
+  name: "processed"
+  type_id: 0x6d7f5ff6
+  offset: 296
+}
+member {
+  id: 0xdaab89c5
+  name: "procname"
+  type_id: 0x3e10b518
+}
+member {
+  id: 0x4b4cacb0
+  name: "procs"
+  type_id: 0xe8034002
+  offset: 640
+}
+member {
+  id: 0xc13a1c16
+  name: "procs_file"
+  type_id: 0x0ee0f933
+  offset: 2304
+}
+member {
+  id: 0x7e43e8a7
+  name: "proctitle"
+  type_id: 0x432b1ab1
+  offset: 7936
+}
+member {
+  id: 0xf2097183
+  name: "prod_code"
+  type_id: 0x66fe5c63
+  offset: 80
+}
+member {
+  id: 0x6c30be40
+  name: "prod_name"
+  type_id: 0xea2d574d
+  offset: 32
+}
+member {
+  id: 0x6c53e55d
+  name: "producer"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x6c552a23
+  name: "producer"
+  type_id: 0x61eb4c0a
+  offset: 64
+}
+member {
+  id: 0x6cfdcda5
+  name: "producer"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x8d1d2604
+  name: "producer_lock"
+  type_id: 0xf313e71a
+  offset: 32
+}
+member {
+  id: 0xdf5fbed4
+  name: "product"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0xdf709840
+  name: "product"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xdf709d11
+  name: "product"
+  type_id: 0xe62ebf07
+  offset: 480
+}
+member {
+  id: 0xdf7eb8dd
+  name: "product"
+  type_id: 0xe8034002
+  offset: 96
+}
+member {
+  id: 0xdf7ebc65
+  name: "product"
+  type_id: 0xe8034002
+  offset: 32
+}
+member {
+  id: 0xdf923671
+  name: "product"
+  type_id: 0x0483e6f8
+  offset: 11264
+}
+member {
+  id: 0xdfd49ece
+  name: "product"
+  type_id: 0x42201dce
+  offset: 112
+}
+member {
+  id: 0x703f28c1
+  name: "product_desc"
+  type_id: 0x3e10b518
+  offset: 1472
+}
+member {
+  id: 0x703f2b70
+  name: "product_desc"
+  type_id: 0x3e10b518
+  offset: 64
+}
+member {
+  id: 0x2170d066
+  name: "product_id"
+  type_id: 0x0baa70a7
+}
+member {
+  id: 0x4792cff5
+  name: "product_name"
+  type_id: 0x3e10b518
+  offset: 6400
+}
+member {
+  id: 0xa1219f9e
+  name: "profile"
+  type_id: 0xb3e7bac9
+  offset: 1240
+}
+member {
+  id: 0xa1745671
+  name: "profile"
+  type_id: 0xe62ebf07
+  offset: 192
+}
+member {
+  id: 0xa18e5a1e
+  name: "profile"
+  type_id: 0x1c27fc93
+  offset: 7808
+}
+member {
+  id: 0xa19ae4fe
+  name: "profile"
+  type_id: 0x08956bf0
+  offset: 384
+}
+member {
+  id: 0x9572b52d
+  name: "profile_and_level_indication"
+  type_id: 0xe8034002
+  offset: 64
+}
+member {
+  id: 0x54f88198
+  name: "profile_idc"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0xf895baee
+  name: "profiles"
+  type_id: 0xe62ebf07
+  offset: 2176
+}
+member {
+  id: 0x9823e9e8
+  name: "prog"
+  type_id: 0x3b2d7e64
+}
+member {
+  id: 0x982b41f7
+  name: "prog"
+  type_id: 0x3382a638
+  offset: 320
+}
+member {
+  id: 0x982b42d1
+  name: "prog"
+  type_id: 0x3382a638
+  offset: 64
+}
+member {
+  id: 0x982b44f4
+  name: "prog"
+  type_id: 0x3382a638
+  offset: 1216
+}
+member {
+  id: 0x982b4630
+  name: "prog"
+  type_id: 0x3382a638
+}
+member {
+  id: 0x982b4b56
+  name: "prog"
+  type_id: 0x3382a638
+  offset: 8128
+}
+member {
+  id: 0x982b4db5
+  name: "prog"
+  type_id: 0x3382a638
+  offset: 7168
+}
+member {
+  id: 0x982b4ef9
+  name: "prog"
+  type_id: 0x3382a638
+  offset: 192
+}
+member {
+  id: 0x9875bce1
+  name: "prog"
+  type_id: 0x6d7f5ff6
+  offset: 4736
+}
+member {
+  id: 0x704cd88c
+  name: "prog_array"
+  type_id: 0x0ddccb29
+  offset: 1024
+}
+member {
+  id: 0x4b115bbd
+  name: "prog_attach_flags"
+  type_id: 0xedf277ba
+  offset: 256
+}
+member {
+  id: 0x14ffc351
+  name: "prog_bind_map"
+  type_id: 0x2e071aea
+}
+member {
+  id: 0x17c31963
+  name: "prog_btf_fd"
+  type_id: 0xe62ebf07
+  offset: 576
+}
+member {
+  id: 0xd5524d12
+  name: "prog_cnt"
+  type_id: 0xe62ebf07
+  offset: 192
+}
+member {
+  id: 0xd9f731b4
+  name: "prog_fd"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xd9f73555
+  name: "prog_fd"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x7b7aed01
+  name: "prog_flags"
+  type_id: 0xe62ebf07
+  offset: 352
+}
+member {
+  id: 0xa18f00c9
+  name: "prog_id"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xa18f0428
+  name: "prog_id"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xa18f0ce1
+  name: "prog_id"
+  type_id: 0xe62ebf07
+  offset: 192
+}
+member {
+  id: 0xc5fd8a6a
+  name: "prog_ids"
+  type_id: 0xedf277ba
+  offset: 128
+}
+member {
+  id: 0x1ba53629
+  name: "prog_ifindex"
+  type_id: 0xe62ebf07
+  offset: 512
+}
+member {
+  id: 0x3a49a3c7
+  name: "prog_name"
+  type_id: 0x42201dce
+  offset: 384
+}
+member {
+  id: 0x395cbb2a
+  name: "prog_type"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x48202894
+  name: "progif_code"
+  type_id: 0x295c7202
+  offset: 40
+}
+member {
+  id: 0xf5106a1d
+  name: "program_key"
+  type_id: 0x2db37f37
+  offset: 1280
+}
+member {
+  id: 0x5c28bc2f
+  name: "progs"
+  type_id: 0xa54c07dd
+  offset: 1472
+}
+member {
+  id: 0x5c46118a
+  name: "progs"
+  type_id: 0xcbe13559
+  offset: 320
+}
+member {
+  id: 0x5c80282e
+  name: "progs"
+  type_id: 0x0ddccb29
+  offset: 33984
+}
+member {
+  id: 0x5cedb753
+  name: "progs"
+  type_id: 0x6049e96d
+  offset: 128
+}
+member {
+  id: 0xb81e1c3d
+  name: "progs_cnt"
+  type_id: 0x0b0dc1ff
+  offset: 1344
+}
+member {
+  id: 0x664fe97f
+  name: "progs_hlist"
+  type_id: 0x056684c9
+  offset: 1152
+}
+member {
+  id: 0xf62e1eea
+  name: "projid"
+  type_id: 0x59338db0
+}
+member {
+  id: 0x1d4070e7
+  name: "projid_map"
+  type_id: 0xe742397c
+  offset: 1152
+}
+member {
+  id: 0xc9aa7d35
+  name: "promisc"
+  type_id: 0x74d29cf1
+  offset: 31424
+}
+member {
+  id: 0x66064d03
+  name: "promiscuity"
+  type_id: 0x4585663f
+  offset: 5632
+}
+member {
+  id: 0x227ae4ba
+  name: "promiscuous_mode"
+  type_id: 0x6d7f5ff6
+  offset: 680
+}
+member {
+  id: 0xdd98e086
+  name: "prop_active"
+  type_id: 0x2a670b41
+  offset: 7104
+}
+member {
+  id: 0xb3f3a00d
+  name: "prop_crtc_h"
+  type_id: 0x2a670b41
+  offset: 6720
+}
+member {
+  id: 0xa33cec8b
+  name: "prop_crtc_id"
+  type_id: 0x2a670b41
+  offset: 6976
+}
+member {
+  id: 0x880dbe9d
+  name: "prop_crtc_w"
+  type_id: 0x2a670b41
+  offset: 6656
+}
+member {
+  id: 0xa74bff2d
+  name: "prop_crtc_x"
+  type_id: 0x2a670b41
+  offset: 6528
+}
+member {
+  id: 0x66743c29
+  name: "prop_crtc_y"
+  type_id: 0x2a670b41
+  offset: 6592
+}
+member {
+  id: 0xfde3ca6c
+  name: "prop_fb_damage_clips"
+  type_id: 0x2a670b41
+  offset: 7040
+}
+member {
+  id: 0xe9eb013a
+  name: "prop_fb_id"
+  type_id: 0x2a670b41
+  offset: 6784
+}
+member {
+  id: 0x9abf0f4f
+  name: "prop_in_fence_fd"
+  type_id: 0x2a670b41
+  offset: 6848
+}
+member {
+  id: 0x5b4892ce
+  name: "prop_mode_id"
+  type_id: 0x2a670b41
+  offset: 7168
+}
+member {
+  id: 0xcef62442
+  name: "prop_name"
+  type_id: 0x3e10b518
+  offset: 128
+}
+member {
+  id: 0xcef628be
+  name: "prop_name"
+  type_id: 0x3e10b518
+  offset: 2688
+}
+member {
+  id: 0xdd8a3188
+  name: "prop_out_fence_ptr"
+  type_id: 0x2a670b41
+  offset: 6912
+}
+member {
+  id: 0x2b3bb4ec
+  name: "prop_runnable_sum"
+  type_id: 0xfc0e1dbd
+  offset: 2176
+}
+member {
+  id: 0x17154509
+  name: "prop_seg"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x32f25ec0
+  name: "prop_src_h"
+  type_id: 0x2a670b41
+  offset: 6464
+}
+member {
+  id: 0x3fbec685
+  name: "prop_src_w"
+  type_id: 0x2a670b41
+  offset: 6400
+}
+member {
+  id: 0xf6fca447
+  name: "prop_src_x"
+  type_id: 0x2a670b41
+  offset: 6272
+}
+member {
+  id: 0xb73d28dd
+  name: "prop_src_y"
+  type_id: 0x2a670b41
+  offset: 6336
+}
+member {
+  id: 0x5b0eeaf9
+  name: "prop_table_pa"
+  type_id: 0xbdd18903
+  offset: 64
+}
+member {
+  id: 0x6e6dd09e
+  name: "prop_table_va"
+  type_id: 0x18bd6530
+  offset: 128
+}
+member {
+  id: 0xc4ceb249
+  name: "prop_vrr_enabled"
+  type_id: 0x2a670b41
+  offset: 7232
+}
+member {
+  id: 0x930ee7c9
+  name: "propagate"
+  type_id: 0xfc0e1dbd
+  offset: 2112
+}
+member {
+  id: 0x703b904f
+  name: "propbaser"
+  type_id: 0x92233392
+  offset: 896
+}
+member {
+  id: 0x29846bfc
+  name: "propbit"
+  type_id: 0xa562355d
+  offset: 1472
+}
+member {
+  id: 0x29981a8d
+  name: "propbit"
+  type_id: 0xb914bfab
+  offset: 256
+}
+member {
+  id: 0x3f4120f9
+  name: "properties"
+  type_id: 0x03064599
+  offset: 768
+}
+member {
+  id: 0x3f715b76
+  name: "properties"
+  type_id: 0x33756485
+}
+member {
+  id: 0x3f74c084
+  name: "properties"
+  type_id: 0x36e75420
+  offset: 128
+}
+member {
+  id: 0x3f74cf3f
+  name: "properties"
+  type_id: 0x36e75420
+  offset: 640
+}
+member {
+  id: 0x3f7b1836
+  name: "properties"
+  type_id: 0x3932c547
+  offset: 64
+}
+member {
+  id: 0x3f7e22f0
+  name: "properties"
+  type_id: 0x3c0803ce
+  offset: 64
+}
+member {
+  id: 0x3f7f27de
+  name: "properties"
+  type_id: 0x3d09670a
+  offset: 256
+}
+member {
+  id: 0x3f984663
+  name: "properties"
+  type_id: 0xda60e9a6
+  offset: 3648
+}
+member {
+  id: 0x3f9849bb
+  name: "properties"
+  type_id: 0xda60e9a6
+  offset: 3328
+}
+member {
+  id: 0x3f984dd7
+  name: "properties"
+  type_id: 0xda60e9a6
+  offset: 1664
+}
+member {
+  id: 0x6a89c1c7
+  name: "property"
+  type_id: 0xd395c0e4
+}
+member {
+  id: 0xd6998ea5
+  name: "property_blob_list"
+  type_id: 0xd3c80119
+  offset: 5760
+}
+member {
+  id: 0x71c55732
+  name: "property_is_writeable"
+  type_id: 0x2c7883e9
+  offset: 512
+}
+member {
+  id: 0x1fefb55a
+  name: "property_list"
+  type_id: 0xd3c80119
+  offset: 3712
+}
+member {
+  id: 0x939cc531
+  name: "property_present"
+  type_id: 0x36e679f4
+  offset: 384
+}
+member {
+  id: 0xc40bbd61
+  name: "property_read_int_array"
+  type_id: 0x2e2b1856
+  offset: 448
+}
+member {
+  id: 0xef4fbd0c
+  name: "property_read_string_array"
+  type_id: 0x2e2ff28a
+  offset: 512
+}
+member {
+  id: 0x4097cb2a
+  name: "props"
+  type_id: 0x639c2545
+}
+member {
+  id: 0x40d37ee8
+  name: "props"
+  type_id: 0x272ec215
+  offset: 1728
+}
+member {
+  id: 0xd4a74433
+  name: "prot"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xd4a74498
+  name: "prot"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0xd4fb96f5
+  name: "prot"
+  type_id: 0x3bfbd7cf
+  offset: 128
+}
+member {
+  id: 0x5bdf8c18
+  name: "prot_capabilities"
+  type_id: 0x4585663f
+  offset: 4704
+}
+member {
+  id: 0xde51ecf4
+  name: "prot_flags"
+  type_id: 0x5d8155a5
+  offset: 1616
+}
+member {
+  id: 0x90fb6d43
+  name: "prot_guard_type"
+  type_id: 0x5d8155a5
+  offset: 4736
+}
+member {
+  id: 0x985d5f0d
+  name: "prot_inuse"
+  type_id: 0x20e58ff6
+  offset: 128
+}
+member {
+  id: 0x2931e5fa
+  name: "prot_op"
+  type_id: 0x5d8155a5
+  offset: 1600
+}
+member {
+  id: 0x92e49ac9
+  name: "prot_sdb"
+  type_id: 0x2f9ce49f
+  offset: 2176
+}
+member {
+  id: 0xae3e6aed
+  name: "prot_type"
+  type_id: 0x5d8155a5
+  offset: 1608
+}
+member {
+  id: 0x6fd5241a
+  name: "protect_count"
+  type_id: 0x4585663f
+  offset: 1056
+}
+member {
+  id: 0xbe992d26
+  name: "protect_frames"
+  type_id: 0x6d7f5ff6
+  offset: 272
+}
+member {
+  id: 0x271bcf4c
+  name: "protected"
+  type_id: 0xaf023c73
+  offset: 7616
+}
+member {
+  id: 0x7efa09f3
+  name: "protected_hyp_mem"
+  type_id: 0x1f4573ef
+  offset: 128
+}
+member {
+  id: 0x46e4dafc
+  name: "protected_shared_mem"
+  type_id: 0x1f4573ef
+  offset: 192
+}
+member {
+  id: 0x5d16456b
+  name: "proto"
+  type_id: 0x7584e7da
+  offset: 32
+}
+member {
+  id: 0x5d1646ee
+  name: "proto"
+  type_id: 0x7584e7da
+  offset: 16
+}
+member {
+  id: 0x5d164850
+  name: "proto"
+  type_id: 0x7584e7da
+}
+member {
+  id: 0x5d4a92a8
+  name: "proto"
+  type_id: 0x295c7202
+  offset: 144
+}
+member {
+  id: 0x5d4a9424
+  name: "proto"
+  type_id: 0x295c7202
+  offset: 64
+}
+member {
+  id: 0x5d4a9e3a
+  name: "proto"
+  type_id: 0x295c7202
+  offset: 336
+}
+member {
+  id: 0x5d519bea
+  name: "proto"
+  type_id: 0x325a2b75
+  offset: 1088
+}
+member {
+  id: 0x5d583381
+  name: "proto"
+  type_id: 0x3bfbd7cf
+  offset: 64
+}
+member {
+  id: 0x5d6e783d
+  name: "proto"
+  type_id: 0x0db3daed
+  offset: 1472
+}
+member {
+  id: 0x5dd026ed
+  name: "proto"
+  type_id: 0xb3e7bac9
+  offset: 160
+}
+member {
+  id: 0x5dd027c0
+  name: "proto"
+  type_id: 0xb3e7bac9
+  offset: 112
+}
+member {
+  id: 0x5dd02d6c
+  name: "proto"
+  type_id: 0xb3e7bac9
+  offset: 24
+}
+member {
+  id: 0x5dd02f54
+  name: "proto"
+  type_id: 0xb3e7bac9
+  offset: 352
+}
+member {
+  id: 0x5df28c33
+  name: "proto"
+  type_id: 0x914dbfdc
+  offset: 32
+}
+member {
+  id: 0x7ddb3075
+  name: "proto_destroy_ht"
+  type_id: 0x394dcf37
+  offset: 1984
+}
+member {
+  id: 0x396c708f
+  name: "proto_destroy_lock"
+  type_id: 0xa7c362b0
+  offset: 10176
+}
+member {
+  id: 0x0e421197
+  name: "proto_down"
+  type_id: 0x6d7f5ff6
+  offset: 19200
+}
+member {
+  id: 0xbc9d8c45
+  name: "proto_down_reason"
+  type_id: 0xc9082b19
+  offset: 9760
+}
+member {
+  id: 0xc10f19a2
+  name: "proto_lock"
+  type_id: 0x6c952252
+  offset: 1152
+}
+member {
+  id: 0xdc396db4
+  name: "protocol"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xdc4e01e2
+  name: "protocol"
+  type_id: 0x914dbfdc
+  offset: 144
+}
+member {
+  id: 0xdc6ca5fb
+  name: "protocol"
+  type_id: 0xb3e7bac9
+  offset: 72
+}
+member {
+  id: 0xdc82cf73
+  name: "protocol"
+  type_id: 0x5d8155a5
+  offset: 424
+}
+member {
+  id: 0xdcaac21e
+  name: "protocol"
+  type_id: 0x7584e7da
+  offset: 192
+}
+member {
+  id: 0xdcaac354
+  name: "protocol"
+  type_id: 0x7584e7da
+  offset: 96
+}
+member {
+  id: 0xdcaac8b7
+  name: "protocol"
+  type_id: 0x7584e7da
+  offset: 416
+}
+member {
+  id: 0xdcb863d8
+  name: "protocol"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0xdcf61166
+  name: "protocol"
+  type_id: 0x295c7202
+  offset: 224
+}
+member {
+  id: 0xdcf61242
+  name: "protocol"
+  type_id: 0x295c7202
+}
+member {
+  id: 0xdcf61d25
+  name: "protocol"
+  type_id: 0x295c7202
+  offset: 800
+}
+member {
+  id: 0xdcf61d65
+  name: "protocol"
+  type_id: 0x295c7202
+  offset: 1208
+}
+member {
+  id: 0x02ed338b
+  name: "protocol_id"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x02ed386d
+  name: "protocol_id"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0x02ed3eb0
+  name: "protocol_id"
+  type_id: 0x295c7202
+  offset: 32
+}
+member {
+  id: 0xa2bb1b42
+  name: "protonum"
+  type_id: 0x0abe9fd1
+  offset: 144
+}
+member {
+  id: 0x865c2968
+  name: "provider"
+  type_id: 0x0490bb4a
+  offset: 10240
+}
+member {
+  id: 0x866a71db
+  name: "provider"
+  type_id: 0x32c23ae3
+  offset: 256
+}
+member {
+  id: 0xa159a1de
+  name: "provider_data"
+  type_id: 0x18bd6530
+  offset: 8576
+}
+member {
+  id: 0xa159a911
+  name: "provider_data"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0xa159aa37
+  name: "provider_data"
+  type_id: 0x18bd6530
+  offset: 320
+}
+member {
+  id: 0x082afb6d
+  name: "provider_list"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0x0415cf67
+  name: "provider_name"
+  type_id: 0x0483e6f8
+  offset: 320
+}
+member {
+  id: 0x61ba1604
+  name: "proxy_ndp"
+  type_id: 0x0faae5b1
+  offset: 960
+}
+member {
+  id: 0xa6d9287d
+  name: "proxy_queue"
+  type_id: 0x578f9c2b
+  offset: 4928
+}
+member {
+  id: 0x604dab7a
+  name: "proxy_redo"
+  type_id: 0x0ee2db52
+  offset: 448
+}
+member {
+  id: 0x713b5b70
+  name: "proxy_timer"
+  type_id: 0xd298e888
+  offset: 4480
+}
+member {
+  id: 0x282acc7e
+  name: "prrr"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0xece8ac0a
+  name: "prune_point"
+  type_id: 0x6d7f5ff6
+  offset: 384
+}
+member {
+  id: 0x5c8886c7
+  name: "prv"
+  type_id: 0x5d8155a5
+  offset: 96
+}
+member {
+  id: 0x3a37596d
+  name: "ps"
+  type_id: 0xc9082b19
+  bitsize: 3
+}
+member {
+  id: 0xba53c7e4
+  name: "ps"
+  type_id: 0x6d7f5ff6
+  offset: 1896
+}
+member {
+  id: 0xbab5e8a7
+  name: "ps"
+  type_id: 0x8b520931
+  offset: 384
+}
+member {
+  id: 0xbab5ef4c
+  name: "ps"
+  type_id: 0x8b520931
+  offset: 640
+}
+member {
+  id: 0x9355c01e
+  name: "ps2_cmd_mutex"
+  type_id: 0x2360e10b
+  offset: 10304
+}
+member {
+  id: 0x09e02c79
+  name: "ps_list"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0xfb2c8dc3
+  name: "ps_timeout"
+  type_id: 0x6720d32f
+  offset: 1920
+}
+member {
+  id: 0x41e1a23f
+  name: "psample_group"
+  type_id: 0x0d436e43
+}
+member {
+  id: 0x2c10bf52
+  name: "psci_version"
+  type_id: 0xc9082b19
+  offset: 2816
+}
+member {
+  id: 0x2bf0ee90
+  name: "psec"
+  type_id: 0x2ccc936a
+  offset: 12672
+}
+member {
+  id: 0x846152fd
+  name: "pseudo_palette"
+  type_id: 0xb6bc1f4d
+  offset: 1152
+}
+member {
+  id: 0x84cf5b81
+  name: "pseudo_palette"
+  type_id: 0x18bd6530
+  offset: 5760
+}
+member {
+  id: 0x597a2336
+  name: "psh"
+  type_id: 0xe8034002
+  offset: 107
+  bitsize: 1
+}
+member {
+  id: 0x9c15c1a6
+  name: "pshadow"
+  type_id: 0x00506ef6
+  offset: 2816
+}
+member {
+  id: 0xe181c27d
+  name: "psi"
+  type_id: 0x2922a3d0
+  offset: 9344
+}
+member {
+  id: 0xe1903f95
+  name: "psi"
+  type_id: 0x38d23361
+}
+member {
+  id: 0xe1a09868
+  name: "psi"
+  type_id: 0x0875ce41
+}
+member {
+  id: 0xdbe9d915
+  name: "psi_count"
+  type_id: 0x295c7202
+  offset: 64
+}
+member {
+  id: 0x93480a7d
+  name: "psi_files"
+  type_id: 0x8ff52d56
+  offset: 3456
+}
+member {
+  id: 0x83cf23de
+  name: "psi_flags"
+  type_id: 0x4585663f
+  offset: 20224
+}
+member {
+  id: 0x19bd3082
+  name: "psi_uid_count"
+  type_id: 0x295c7202
+  offset: 72
+}
+member {
+  id: 0xe6324ea8
+  name: "psm"
+  type_id: 0x9bd401b6
+  offset: 384
+}
+member {
+  id: 0x660e01ed
+  name: "psock_update_sk_prot"
+  type_id: 0x2c3b1526
+  offset: 1664
+}
+member {
+  id: 0x660e0826
+  name: "psock_update_sk_prot"
+  type_id: 0x2c3b1526
+  offset: 1536
+}
+member {
+  id: 0x5dbcd81f
+  name: "psrc"
+  type_id: 0x7584e7da
+  offset: 64
+}
+member {
+  id: 0x5dbcdc55
+  name: "psrc"
+  type_id: 0x7584e7da
+  offset: 256
+}
+member {
+  id: 0xc437ddac
+  name: "pstate"
+  type_id: 0xedf277ba
+  offset: 2112
+}
+member {
+  id: 0xc4480ce8
+  name: "pstate"
+  type_id: 0x92233392
+  offset: 2112
+}
+member {
+  id: 0xc49fa7db
+  name: "pstate"
+  type_id: 0x4585663f
+  offset: 224
+}
+member {
+  id: 0x0b850ebb
+  name: "pstate_cc"
+  type_id: 0x34ef1514
+  offset: 64
+}
+member {
+  id: 0xedfdadd3
+  name: "pstate_ss"
+  type_id: 0x6d7f5ff6
+  offset: 32
+}
+member {
+  id: 0x946deb91
+  name: "pstr"
+  type_id: 0x25ab49bb
+  offset: 64
+}
+member {
+  id: 0x85ba538c
+  name: "psy"
+  type_id: 0x18150d9f
+  offset: 10112
+}
+member {
+  id: 0x85ba5e75
+  name: "psy"
+  type_id: 0x18150d9f
+  offset: 6144
+}
+member {
+  id: 0x84ab1052
+  name: "psy_desc"
+  type_id: 0xa66e4d3d
+  offset: 10176
+}
+member {
+  id: 0x84ab121a
+  name: "psy_desc"
+  type_id: 0xa66e4d3d
+  offset: 6208
+}
+member {
+  id: 0x7b014ca9
+  name: "pt"
+  type_id: 0x7f6a4515
+  offset: 1024
+}
+member {
+  id: 0x2206cd80
+  name: "pt_frag_refcount"
+  type_id: 0x74d29cf1
+}
+member {
+  id: 0xb3ddbbf0
+  name: "pt_mm"
+  type_id: 0x1b36c7a2
+}
+member {
+  id: 0xa17fe173
+  name: "pte"
+  type_id: 0x32bee099
+  offset: 704
+}
+member {
+  id: 0xa18e706b
+  name: "pte"
+  type_id: 0xc32dc55c
+}
+member {
+  id: 0xeef9224d
+  name: "pte_is_counted_cb"
+  type_id: 0xf2ecf779
+  offset: 64
+}
+member {
+  id: 0x8661d99b
+  name: "pte_ops"
+  type_id: 0x2e6ac856
+  offset: 320
+}
+member {
+  id: 0xce442d14
+  name: "ptl"
+  type_id: 0x3654c061
+  offset: 768
+}
+member {
+  id: 0xce816236
+  name: "ptl"
+  type_id: 0xf313e71a
+  offset: 256
+}
+member {
+  id: 0x87e709e7
+  name: "ptm_cap"
+  type_id: 0x13185ce8
+  offset: 320
+}
+member {
+  id: 0xc58bd4db
+  name: "ptp_sts"
+  type_id: 0x2115f462
+  offset: 832
+}
+member {
+  id: 0xd3b103c3
+  name: "ptp_sts_supported"
+  type_id: 0x6d7f5ff6
+  offset: 12224
+}
+member {
+  id: 0xaf603918
+  name: "ptp_sts_word_post"
+  type_id: 0x4585663f
+  offset: 800
+}
+member {
+  id: 0x03204e7e
+  name: "ptp_sts_word_pre"
+  type_id: 0x4585663f
+  offset: 768
+}
+member {
+  id: 0x461d38a2
+  name: "ptr"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x4632dc02
+  name: "ptr"
+  type_id: 0xc216d7bc
+}
+member {
+  id: 0x4662e9e6
+  name: "ptr"
+  type_id: 0x92233392
+}
+member {
+  id: 0x467611ba
+  name: "ptr"
+  type_id: 0x86d95287
+  offset: 704
+}
+member {
+  id: 0x46761387
+  name: "ptr"
+  type_id: 0x86d95287
+}
+member {
+  id: 0x46c17f73
+  name: "ptr"
+  type_id: 0x31b5a66f
+}
+member {
+  id: 0x46c191ab
+  name: "ptr"
+  type_id: 0x315b7e01
+}
+member {
+  id: 0x46d199d9
+  name: "ptr"
+  type_id: 0x21530c77
+}
+member {
+  id: 0x46df9aa6
+  name: "ptr"
+  type_id: 0x2f5073a5
+}
+member {
+  id: 0x46e47dff
+  name: "ptr"
+  type_id: 0x14b72a39
+}
+member {
+  id: 0x46e877b0
+  name: "ptr"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0x46ebe675
+  name: "ptr"
+  type_id: 0x1b2ca025
+}
+member {
+  id: 0x46ed3ab9
+  name: "ptr"
+  type_id: 0x1df06cce
+}
+member {
+  id: 0x51f277d8
+  name: "ptr_const"
+  type_id: 0x391f15ea
+}
+member {
+  id: 0x51f3249a
+  name: "ptr_const"
+  type_id: 0x384c5795
+}
+member {
+  id: 0x51ff8c9d
+  name: "ptr_const"
+  type_id: 0x34e4504f
+}
+member {
+  id: 0x1db8f0e1
+  name: "ptr_inner"
+  type_id: 0x083bdf25
+}
+member {
+  id: 0xc0d22edd
+  name: "ptr_leaf"
+  type_id: 0x01ba2ceb
+}
+member {
+  id: 0xf6e3ddc9
+  name: "ptr_type"
+  type_id: 0x721b7fe3
+}
+member {
+  id: 0x6203780a
+  name: "ptrace"
+  type_id: 0x4585663f
+  offset: 576
+}
+member {
+  id: 0xe702c16b
+  name: "ptrace_entry"
+  type_id: 0xd3c80119
+  offset: 13376
+}
+member {
+  id: 0xe8b5be89
+  name: "ptrace_message"
+  type_id: 0x33756485
+  offset: 19584
+}
+member {
+  id: 0x6457d290
+  name: "ptraced"
+  type_id: 0xd3c80119
+  offset: 13248
+}
+member {
+  id: 0x12e9dafd
+  name: "ptracer_cred"
+  type_id: 0x30650ba6
+  offset: 16704
+}
+member {
+  id: 0xcd6de6fa
+  name: "ptrs"
+  type_id: 0xc216d7bc
+  offset: 128
+}
+member {
+  id: 0x075d9937
+  name: "pts"
+  type_id: 0xedf277ba
+  offset: 64
+}
+member {
+  id: 0x075d9dd6
+  name: "pts"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0xc446e43e
+  name: "ptsc"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0xc697a075
+  name: "ptype"
+  type_id: 0x914dbfdc
+}
+member {
+  id: 0x6807f41d
+  name: "ptype_all"
+  type_id: 0xd3c80119
+  offset: 1024
+}
+member {
+  id: 0x795117a4
+  name: "ptype_specific"
+  type_id: 0xd3c80119
+  offset: 1152
+}
+member {
+  id: 0xcddbf565
+  name: "pub_count"
+  type_id: 0xc9082b19
+  offset: 7680
+}
+member {
+  id: 0x2bb3fb8f
+  name: "public_addr"
+  type_id: 0xa61911b2
+  offset: 768
+}
+member {
+  id: 0x71e981db
+  name: "publications"
+  type_id: 0xd3c80119
+  offset: 7552
+}
+member {
+  id: 0xa24d7e9d
+  name: "published"
+  type_id: 0x6d7f5ff6
+  offset: 8712
+}
+member {
+  id: 0x5efa06bd
+  name: "pud"
+  type_id: 0x1464c1ed
+  offset: 448
+}
+member {
+  id: 0x6978f8c1
+  name: "pull_down"
+  type_id: 0x4585663f
+  offset: 1733
+  bitsize: 1
+}
+member {
+  id: 0xd68f5933
+  name: "pull_down_mask"
+  type_id: 0x4585663f
+  offset: 2048
+}
+member {
+  id: 0x32b8c25f
+  name: "pull_down_reg"
+  type_id: 0x4585663f
+  offset: 2016
+}
+member {
+  id: 0xcae88ee0
+  name: "pull_down_val_on"
+  type_id: 0x4585663f
+  offset: 2080
+}
+member {
+  id: 0xc1fd1a70
+  name: "pullup"
+  type_id: 0x2fc1720f
+  offset: 320
+}
+member {
+  id: 0x8b7beef9
+  name: "pulse"
+  type_id: 0x4585663f
+  offset: 40
+  bitsize: 1
+}
+member {
+  id: 0xa5987b16
+  name: "pump_messages"
+  type_id: 0x3835dcc0
+  offset: 9728
+}
+member {
+  id: 0x6aa12130
+  name: "punt_to_cgroup"
+  type_id: 0x4585663f
+  offset: 296
+  bitsize: 1
+}
+member {
+  id: 0x8c475fa8
+  name: "purpose"
+  type_id: 0x362692fd
+  offset: 1344
+  bitsize: 8
+}
+member {
+  id: 0xb6e523c6
+  name: "push"
+  type_id: 0xf1159c31
+  offset: 4160
+}
+member {
+  id: 0x49bced4a
+  name: "push_busy"
+  type_id: 0x4585663f
+  offset: 28896
+}
+member {
+  id: 0xa866bd4c
+  name: "push_cpu"
+  type_id: 0x6720d32f
+  offset: 23648
+}
+member {
+  id: 0x643f7f82
+  name: "push_work"
+  type_id: 0x5b09d4fb
+  offset: 28928
+}
+member {
+  id: 0xad7ee9bd
+  name: "pushable_dl_tasks"
+  type_id: 0x3205ba2f
+  offset: 11328
+}
+member {
+  id: 0x75a68eb3
+  name: "pushable_dl_tasks_root"
+  type_id: 0xd0f3b5bf
+  offset: 384
+}
+member {
+  id: 0x04264bd2
+  name: "pushable_tasks"
+  type_id: 0x6c32e522
+  offset: 11008
+}
+member {
+  id: 0x04e46363
+  name: "pushable_tasks"
+  type_id: 0xae1656c9
+  offset: 13184
+}
+member {
+  id: 0x4ac85a2c
+  name: "put"
+  type_id: 0x2f5ea9dc
+  offset: 128
+}
+member {
+  id: 0x4ac871e1
+  name: "put"
+  type_id: 0x2f756415
+  offset: 128
+}
+member {
+  id: 0x4ad8e073
+  name: "put"
+  type_id: 0x3fee8efa
+  offset: 832
+}
+member {
+  id: 0x4ad8e4be
+  name: "put"
+  type_id: 0x3fee8efa
+  offset: 448
+}
+member {
+  id: 0x4ae8345d
+  name: "put"
+  type_id: 0x0f3dfb90
+  offset: 64
+}
+member {
+  id: 0x4ae93c9e
+  name: "put"
+  type_id: 0x0e3ac1af
+  offset: 512
+}
+member {
+  id: 0x4ae9b2ed
+  name: "put"
+  type_id: 0x0ebf01c0
+  offset: 256
+}
+member {
+  id: 0x4ae9f680
+  name: "put"
+  type_id: 0x0eff2677
+  offset: 64
+}
+member {
+  id: 0x4aead389
+  name: "put"
+  type_id: 0x0dde65b8
+  offset: 256
+}
+member {
+  id: 0x4aecaa0c
+  name: "put"
+  type_id: 0x0baa70a7
+  offset: 32
+}
+member {
+  id: 0x82bcfe86
+  name: "put_budget"
+  type_id: 0x0e452ad4
+  offset: 256
+}
+member {
+  id: 0xe2e23ae7
+  name: "put_char"
+  type_id: 0x2f42683f
+  offset: 512
+}
+member {
+  id: 0x62f6d986
+  name: "put_chars"
+  type_id: 0x2c0bb831
+  offset: 64
+}
+member {
+  id: 0x68c1b0bb
+  name: "put_page"
+  type_id: 0x0f3dfb90
+  offset: 256
+}
+member {
+  id: 0xee3c87e4
+  name: "put_port"
+  type_id: 0x0f626ee5
+  offset: 1600
+}
+member {
+  id: 0xc9a46e38
+  name: "put_prev_task"
+  type_id: 0x0c4b1d9d
+  offset: 448
+}
+member {
+  id: 0xb1102fe3
+  name: "put_super"
+  type_id: 0x0cd8cb41
+  offset: 448
+}
+member {
+  id: 0xa865a1c0
+  name: "put_userptr"
+  type_id: 0x0f3dfb90
+  offset: 256
+}
+member {
+  id: 0xf9ece718
+  name: "putback_page"
+  type_id: 0x0ede182a
+  offset: 128
+}
+member {
+  id: 0x2d4e324d
+  name: "puts"
+  type_id: 0x0c3fa226
+  offset: 64
+}
+member {
+  id: 0x2d4f5e83
+  name: "puts"
+  type_id: 0x0d572692
+  offset: 256
+}
+member {
+  id: 0x26fa53f2
+  name: "putx64"
+  type_id: 0x07941efa
+  offset: 320
+}
+member {
+  id: 0x0f7f629e
+  name: "pvmfw_load_addr"
+  type_id: 0x1b4ba19a
+  offset: 384
+}
+member {
+  id: 0x7cfddcb6
+  name: "pvt_info"
+  type_id: 0x18bd6530
+  offset: 2048
+}
+member {
+  id: 0xe8e0db23
+  name: "pw_type"
+  type_id: 0x240d91a7
+}
+member {
+  id: 0x4778934e
+  name: "pwd"
+  type_id: 0x71a68091
+  offset: 5568
+}
+member {
+  id: 0x47789c67
+  name: "pwd"
+  type_id: 0x71a68091
+  offset: 320
+}
+member {
+  id: 0x8d1213ae
+  name: "pwm"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0xb6db9a0a
+  name: "pwm_rx_gear"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xabcefd8e
+  name: "pwm_tx_gear"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x5609f945
+  name: "pwms"
+  type_id: 0x2821daec
+  offset: 448
+}
+member {
+  id: 0x649310ca
+  name: "pwqs"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0x4b206cec
+  name: "pwqs_node"
+  type_id: 0xd3c80119
+  offset: 960
+}
+member {
+  id: 0xc58e0dce
+  name: "pwr"
+  type_id: 0x01ae1e33
+  offset: 8000
+}
+member {
+  id: 0xc5a6f5ee
+  name: "pwr"
+  type_id: 0x295c7202
+  offset: 6272
+}
+member {
+  id: 0x8ca7afcf
+  name: "pwr_acc"
+  type_id: 0x92233392
+}
+member {
+  id: 0x5fe55f82
+  name: "pwr_change_notify"
+  type_id: 0x2dc3dd18
+  offset: 512
+}
+member {
+  id: 0x8ee837da
+  name: "pwr_info"
+  type_id: 0x5786c646
+  offset: 21568
+}
+member {
+  id: 0xec1f7588
+  name: "pwr_opmode"
+  type_id: 0x7194a543
+  offset: 7680
+}
+member {
+  id: 0xec1f7e89
+  name: "pwr_opmode"
+  type_id: 0x7194a543
+  offset: 1504
+}
+member {
+  id: 0xdd6b9b3b
+  name: "pwr_role"
+  type_id: 0x8167e73b
+  offset: 7616
+}
+member {
+  id: 0xdd6b9f0d
+  name: "pwr_role"
+  type_id: 0x8167e73b
+  offset: 1440
+}
+member {
+  id: 0xb51decea
+  name: "pwr_rx"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0x69e404d3
+  name: "pwr_status"
+  type_id: 0x295c7202
+  offset: 64
+}
+member {
+  id: 0xb23533b1
+  name: "pwr_tx"
+  type_id: 0xc9082b19
+  offset: 160
+}
+member {
+  id: 0x705b765d
+  name: "pwrseq"
+  type_id: 0x2e5473cd
+  offset: 7488
+}
+member {
+  id: 0x2a994aef
+  name: "pwrseq_node"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0x36015668
+  name: "pwtype"
+  type_id: 0x240d91a7
+  offset: 1600
+}
+member {
+  id: 0xe930d780
+  name: "q"
+  type_id: 0x4239b24f
+}
+member {
+  id: 0xe9329abb
+  name: "q"
+  type_id: 0x407489b0
+}
+member {
+  id: 0xe95c6150
+  name: "q"
+  type_id: 0x2e8d5f05
+  offset: 704
+}
+member {
+  id: 0xe97ba8af
+  name: "q"
+  type_id: 0x09427c40
+  offset: 64
+}
+member {
+  id: 0xe97bac4e
+  name: "q"
+  type_id: 0x09427c40
+}
+member {
+  id: 0xe97e3b30
+  name: "q"
+  type_id: 0x0cd7c6a4
+  offset: 1216
+}
+member {
+  id: 0x8d88e575
+  name: "q_count"
+  type_id: 0x4585663f
+  offset: 12480
+}
+member {
+  id: 0xb1accaac
+  name: "q_len"
+  type_id: 0x4585663f
+  offset: 448
+}
+member {
+  id: 0xa4aa3498
+  name: "q_lock"
+  type_id: 0x2360e10b
+}
+member {
+  id: 0xed7b9043
+  name: "q_node"
+  type_id: 0xd3c80119
+  offset: 64
+}
+member {
+  id: 0xed7b94a2
+  name: "q_node"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0xc5c43282
+  name: "q_usage_counter"
+  type_id: 0x3e40064a
+  offset: 128
+}
+member {
+  id: 0xd20f97af
+  name: "qbytes"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0x3d7cf1f3
+  name: "qdisc"
+  type_id: 0x2e8d5f05
+  offset: 7808
+}
+member {
+  id: 0x3d7cf8f7
+  name: "qdisc"
+  type_id: 0x2e8d5f05
+  offset: 64
+}
+member {
+  id: 0x9cb0c470
+  name: "qdisc_hash"
+  type_id: 0x5b90b36c
+  offset: 8256
+}
+member {
+  id: 0xe8ae602a
+  name: "qdisc_sleeping"
+  type_id: 0x2e8d5f05
+  offset: 128
+}
+member {
+  id: 0xc8517d64
+  name: "qdisc_tx_busylock"
+  type_id: 0x1b44744f
+  offset: 19136
+}
+member {
+  id: 0xaa7d95ca
+  name: "qf_fmt_id"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xef41ed08
+  name: "qf_next"
+  type_id: 0x06e9e1f4
+  offset: 192
+}
+member {
+  id: 0x68c5eb54
+  name: "qf_ops"
+  type_id: 0x35448f63
+  offset: 64
+}
+member {
+  id: 0xd53b285f
+  name: "qf_owner"
+  type_id: 0x0b27dc43
+  offset: 128
+}
+member {
+  id: 0xf1d282b9
+  name: "qh"
+  type_id: 0x0570ebcb
+}
+member {
+  id: 0x2fb9399b
+  name: "qh_dma"
+  type_id: 0xe02e14d6
+  offset: 64
+}
+member {
+  id: 0x6fd9365f
+  name: "qh_next"
+  type_id: 0x2b015d45
+  offset: 128
+}
+member {
+  id: 0xc6d46ff6
+  name: "qh_pool"
+  type_id: 0x2d66740a
+  offset: 5120
+}
+member {
+  id: 0xeb34e3ac
+  name: "qh_scan_next"
+  type_id: 0x0570ebcb
+  offset: 1856
+}
+member {
+  id: 0xfe6f73bb
+  name: "qh_state"
+  type_id: 0x295c7202
+  offset: 1056
+}
+member {
+  id: 0x9b5b8e67
+  name: "qlen"
+  type_id: 0xc9082b19
+  offset: 672
+}
+member {
+  id: 0x9b74a670
+  name: "qlen"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0x9b74ac96
+  name: "qlen"
+  type_id: 0xe62ebf07
+  offset: 224
+}
+member {
+  id: 0x9b74afb2
+  name: "qlen"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x9bd70ca2
+  name: "qlen"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0xba491c1c
+  name: "qlen_notify"
+  type_id: 0x0c6d8d57
+  offset: 256
+}
+member {
+  id: 0x3d54b4ac
+  name: "qmenu"
+  type_id: 0x3e75499e
+}
+member {
+  id: 0x3d54be0a
+  name: "qmenu"
+  type_id: 0x3e75499e
+  offset: 896
+}
+member {
+  id: 0xf2dee2ba
+  name: "qmenu_int"
+  type_id: 0x3f74bbde
+  offset: 960
+}
+member {
+  id: 0xf2deea49
+  name: "qmenu_int"
+  type_id: 0x3f74bbde
+}
+member {
+  id: 0x91da22df
+  name: "qnbytes"
+  type_id: 0x6720d32f
+  offset: 768
+}
+member {
+  id: 0xab0b1c24
+  name: "qnkeys"
+  type_id: 0x6720d32f
+  offset: 736
+}
+member {
+  id: 0xed04d50c
+  name: "qos"
+  type_id: 0x16f22102
+  offset: 384
+}
+member {
+  id: 0xed0a594a
+  name: "qos"
+  type_id: 0x187832e1
+  offset: 320
+}
+member {
+  id: 0xed19b0dc
+  name: "qos"
+  type_id: 0x0b9f3953
+  offset: 2624
+}
+member {
+  id: 0xedf40fc7
+  name: "qos"
+  type_id: 0xe62ebf07
+  offset: 320
+}
+member {
+  id: 0x7425f0df
+  name: "qr"
+  type_id: 0x6dad7303
+}
+member {
+  id: 0x2ca65a96
+  name: "qsize"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x755ea494
+  name: "qsmask"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0x73526296
+  name: "qsmaskinit"
+  type_id: 0x33756485
+  offset: 384
+}
+member {
+  id: 0xcb6188a8
+  name: "qsmaskinitnext"
+  type_id: 0x33756485
+  offset: 448
+}
+member {
+  id: 0xf6bf5535
+  name: "qstats"
+  type_id: 0x1c5200f3
+  offset: 1536
+}
+member {
+  id: 0x5abaf597
+  name: "qtd_dma"
+  type_id: 0xe02e14d6
+  offset: 448
+}
+member {
+  id: 0x0dbe8d63
+  name: "qtd_list"
+  type_id: 0xd3c80119
+  offset: 512
+}
+member {
+  id: 0x0dbe8eb2
+  name: "qtd_list"
+  type_id: 0xd3c80119
+  offset: 192
+}
+member {
+  id: 0x6df6577e
+  name: "qtd_pool"
+  type_id: 0x2d66740a
+  offset: 5184
+}
+member {
+  id: 0x324de1e4
+  name: "qthreshold"
+  type_id: 0xe2ce8d42
+  offset: 48
+}
+member {
+  id: 0xcbcd9125
+  name: "qual"
+  type_id: 0x9e71aa1e
+  offset: 16
+}
+member {
+  id: 0xcbcd9f9b
+  name: "qual"
+  type_id: 0x9e71aa1e
+}
+member {
+  id: 0xcbe0098b
+  name: "qual"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0xb82708a8
+  name: "quality"
+  type_id: 0x0faae5b1
+}
+member {
+  id: 0xb84f829e
+  name: "quality"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xb8e19b3b
+  name: "quality"
+  type_id: 0xc93e017b
+  offset: 448
+}
+member {
+  id: 0xc03264fa
+  name: "quant"
+  type_id: 0x04adf695
+  offset: 128
+}
+member {
+  id: 0xc083fbc2
+  name: "quant"
+  type_id: 0xb53ba797
+  offset: 256
+}
+member {
+  id: 0x852b051b
+  name: "quant_bits"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x4413cb9f
+  name: "quant_update"
+  type_id: 0xa84ab8c0
+}
+member {
+  id: 0xc2909a30
+  name: "quantization"
+  type_id: 0xb3e7bac9
+  offset: 1464
+}
+member {
+  id: 0xc2c55908
+  name: "quantization"
+  type_id: 0xe62ebf07
+  offset: 320
+}
+member {
+  id: 0xc2c55a16
+  name: "quantization"
+  type_id: 0xe62ebf07
+  offset: 288
+}
+member {
+  id: 0xc2cb77e7
+  name: "quantization"
+  type_id: 0xe8034002
+  offset: 176
+}
+member {
+  id: 0x03392f90
+  name: "quantization_range"
+  type_id: 0x709946fa
+  offset: 288
+}
+member {
+  id: 0xb9d75867
+  name: "quarantine"
+  type_id: 0xd3c80119
+  offset: 192
+}
+member {
+  id: 0x8c714c8a
+  name: "query"
+  type_id: 0xae218bc3
+  offset: 512
+}
+member {
+  id: 0x8cd1b597
+  name: "query"
+  type_id: 0x0ed76fdf
+  offset: 64
+}
+member {
+  id: 0x8cf261f1
+  name: "query"
+  type_id: 0x2d07e8c3
+}
+member {
+  id: 0xb20e9921
+  name: "query_dv_timings"
+  type_id: 0x2dd9a3d6
+  offset: 1024
+}
+member {
+  id: 0xc0a4c190
+  name: "query_flags"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xc513a120
+  name: "query_func"
+  type_id: 0x295c7202
+}
+member {
+  id: 0xfd57e798
+  name: "query_overwrite"
+  type_id: 0x2fbd64da
+  offset: 448
+}
+member {
+  id: 0xb2749bb6
+  name: "querystd"
+  type_id: 0x2de377d3
+  offset: 384
+}
+member {
+  id: 0xad01c6a9
+  name: "queue"
+  type_id: 0xd3c80119
+  offset: 10112
+}
+member {
+  id: 0xad01c9cf
+  name: "queue"
+  type_id: 0xd3c80119
+  offset: 14656
+}
+member {
+  id: 0xad01caaa
+  name: "queue"
+  type_id: 0xd3c80119
+  offset: 512
+}
+member {
+  id: 0xad68f0f7
+  name: "queue"
+  type_id: 0xbaf086c3
+  offset: 128
+}
+member {
+  id: 0xadc88f57
+  name: "queue"
+  type_id: 0x1a8d1bcb
+  offset: 9024
+}
+member {
+  id: 0xadd19c61
+  name: "queue"
+  type_id: 0x03913382
+  offset: 64
+}
+member {
+  id: 0xadd19fd0
+  name: "queue"
+  type_id: 0x03913382
+  offset: 1472
+}
+member {
+  id: 0xadd44406
+  name: "queue"
+  type_id: 0x06447717
+  offset: 128
+}
+member {
+  id: 0xaddb40d2
+  name: "queue"
+  type_id: 0x09427c40
+  offset: 1856
+}
+member {
+  id: 0xaddb46b9
+  name: "queue"
+  type_id: 0x09427c40
+  offset: 1088
+}
+member {
+  id: 0xaddb4875
+  name: "queue"
+  type_id: 0x09427c40
+  offset: 832
+}
+member {
+  id: 0xaddb4bcf
+  name: "queue"
+  type_id: 0x09427c40
+}
+member {
+  id: 0xaddb4cea
+  name: "queue"
+  type_id: 0x09427c40
+  offset: 1728
+}
+member {
+  id: 0xaddb4db6
+  name: "queue"
+  type_id: 0x09427c40
+  offset: 640
+}
+member {
+  id: 0xaddebba5
+  name: "queue"
+  type_id: 0x0cbf60eb
+  offset: 1088
+}
+member {
+  id: 0xaddefde0
+  name: "queue"
+  type_id: 0x0cfd9180
+  offset: 128
+}
+member {
+  id: 0xadf15a86
+  name: "queue"
+  type_id: 0x235335cf
+}
+member {
+  id: 0xadfb5e27
+  name: "queue"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0xadff3c9e
+  name: "queue"
+  type_id: 0x2d32eaff
+  offset: 320
+}
+member {
+  id: 0x05686343
+  name: "queue_ctx"
+  type_id: 0x30ae0fb9
+  offset: 448
+}
+member {
+  id: 0x05686c9a
+  name: "queue_ctx"
+  type_id: 0x30ae0fb9
+  offset: 768
+}
+member {
+  id: 0x0791821a
+  name: "queue_debugfs_attrs"
+  type_id: 0x30791928
+  offset: 2176
+}
+member {
+  id: 0x72004b43
+  name: "queue_depth"
+  type_id: 0xc93e017b
+  offset: 896
+}
+member {
+  id: 0x728cf19a
+  name: "queue_depth"
+  type_id: 0x4585663f
+  offset: 512
+}
+member {
+  id: 0x728cf45d
+  name: "queue_depth"
+  type_id: 0x4585663f
+  offset: 544
+}
+member {
+  id: 0x7793d104
+  name: "queue_depth_changed"
+  type_id: 0x0f677ef9
+  offset: 512
+}
+member {
+  id: 0xa9229fec
+  name: "queue_empty"
+  type_id: 0x6d7f5ff6
+  offset: 12352
+}
+member {
+  id: 0x24d20612
+  name: "queue_empty_descs"
+  type_id: 0x92233392
+  offset: 256
+}
+member {
+  id: 0xe2023ea8
+  name: "queue_flags"
+  type_id: 0x33756485
+  offset: 832
+}
+member {
+  id: 0xc1ddfc24
+  name: "queue_id"
+  type_id: 0x914dbfdc
+  offset: 928
+}
+member {
+  id: 0xc1ddff57
+  name: "queue_id"
+  type_id: 0x914dbfdc
+  offset: 64
+}
+member {
+  id: 0x0d8a731d
+  name: "queue_index"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x168182f6
+  name: "queue_lock"
+  type_id: 0xf313e71a
+  offset: 10048
+}
+member {
+  id: 0x16818d5e
+  name: "queue_lock"
+  type_id: 0xf313e71a
+  offset: 960
+}
+member {
+  id: 0x4b4ff38e
+  name: "queue_mapping"
+  type_id: 0xe8034002
+  offset: 992
+}
+member {
+  id: 0x88db38ec
+  name: "queue_num"
+  type_id: 0x4585663f
+  offset: 3232
+}
+member {
+  id: 0x88db3a0d
+  name: "queue_num"
+  type_id: 0x4585663f
+  offset: 1088
+}
+member {
+  id: 0x29334a99
+  name: "queue_offset"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x3a581c18
+  name: "queue_ramp_up_period"
+  type_id: 0x33756485
+  offset: 1024
+}
+member {
+  id: 0x3dafdd69
+  name: "queue_rq"
+  type_id: 0x1a13cfd7
+}
+member {
+  id: 0x2b9f46f2
+  name: "queue_rqs"
+  type_id: 0x0e65265f
+  offset: 128
+}
+member {
+  id: 0x3af18ebc
+  name: "queue_setup"
+  type_id: 0x2c4285f7
+}
+member {
+  id: 0x645fc1ac
+  name: "queue_stopped"
+  type_id: 0x4585663f
+  offset: 2848
+}
+member {
+  id: 0x6334960f
+  name: "queue_sz"
+  type_id: 0xf435685e
+}
+member {
+  id: 0xaa971b00
+  name: "queuecommand"
+  type_id: 0x2cb23e2c
+  offset: 64
+}
+member {
+  id: 0x2a6bb375
+  name: "queued"
+  type_id: 0xd3c80119
+  offset: 512
+}
+member {
+  id: 0x2a8b0a99
+  name: "queued"
+  type_id: 0x33756485
+  offset: 3072
+}
+member {
+  id: 0x2ad503ad
+  name: "queued"
+  type_id: 0x6d7f5ff6
+  offset: 9600
+}
+member {
+  id: 0x2ad508f4
+  name: "queued"
+  type_id: 0x6d7f5ff6
+  offset: 320
+}
+member {
+  id: 0x2adf5778
+  name: "queued"
+  type_id: 0x6720d32f
+  offset: 320
+}
+member {
+  id: 0x2ae02fcd
+  name: "queued"
+  type_id: 0x585b40a5
+  offset: 64
+}
+member {
+  id: 0x6a57f9a9
+  name: "queued"
+  type_id: 0x4585663f
+  offset: 128
+  bitsize: 1
+}
+member {
+  id: 0x620d04f5
+  name: "queued_count"
+  type_id: 0x4585663f
+  offset: 6080
+}
+member {
+  id: 0xb78add22
+  name: "queued_deq_ptr"
+  type_id: 0x31da1e83
+  offset: 640
+}
+member {
+  id: 0xcb9637b2
+  name: "queued_deq_seg"
+  type_id: 0x3ef55b88
+  offset: 576
+}
+member {
+  id: 0xf21d6976
+  name: "queued_entry"
+  type_id: 0xd3c80119
+  offset: 3840
+}
+member {
+  id: 0x699426dc
+  name: "queued_events"
+  type_id: 0xc06de7e5
+  offset: 1984
+}
+member {
+  id: 0x824e12df
+  name: "queued_list"
+  type_id: 0xd3c80119
+  offset: 5952
+}
+member {
+  id: 0x42e76a02
+  name: "queued_message"
+  type_id: 0x633cd80c
+  offset: 2368
+}
+member {
+  id: 0x87768fc5
+  name: "queued_msgs"
+  type_id: 0x4585663f
+  offset: 3840
+}
+member {
+  id: 0xcf8fd0aa
+  name: "queuedata"
+  type_id: 0x18bd6530
+  offset: 768
+}
+member {
+  id: 0x05bcef78
+  name: "queuelist"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0xd7211e97
+  name: "queues"
+  type_id: 0xe06ae107
+  offset: 192
+}
+member {
+  id: 0x73a7250c
+  name: "queues_kset"
+  type_id: 0x1457cd38
+  offset: 5568
+}
+member {
+  id: 0x625ab578
+  name: "quick_threads"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0xffcbb008
+  name: "quiesce"
+  type_id: 0x6d7f5ff6
+  offset: 576
+}
+member {
+  id: 0x7d2da924
+  name: "quiesce_depth"
+  type_id: 0x6720d32f
+  offset: 8064
+}
+member {
+  id: 0x1d6f3496
+  name: "quiesced_by"
+  type_id: 0x1d19a9d5
+  offset: 20032
+}
+member {
+  id: 0xce3dd3dc
+  name: "quirk"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x14efd093
+  name: "quirk_addfb_prefer_host_byte_order"
+  type_id: 0x6d7f5ff6
+  offset: 9552
+}
+member {
+  id: 0x47072248
+  name: "quirk_addfb_prefer_xbgr_30bpp"
+  type_id: 0x6d7f5ff6
+  offset: 9544
+}
+member {
+  id: 0x382c000a
+  name: "quirk_altset_not_supp"
+  type_id: 0x4585663f
+  offset: 8457
+  bitsize: 1
+}
+member {
+  id: 0xf0e41911
+  name: "quirk_avoids_skb_reserve"
+  type_id: 0x4585663f
+  offset: 8460
+  bitsize: 1
+}
+member {
+  id: 0xa61d8d92
+  name: "quirk_ep_out_aligned_size"
+  type_id: 0x4585663f
+  offset: 8456
+  bitsize: 1
+}
+member {
+  id: 0xc871aeeb
+  name: "quirk_flags"
+  type_id: 0x4585663f
+  offset: 1984
+}
+member {
+  id: 0xdd760636
+  name: "quirk_max_rate"
+  type_id: 0x4585663f
+  offset: 7520
+}
+member {
+  id: 0xe93239ea
+  name: "quirk_poll_must_check_waiting_for_buffers"
+  type_id: 0x4585663f
+  offset: 196
+  bitsize: 1
+}
+member {
+  id: 0xe0141e5d
+  name: "quirk_stall_not_supp"
+  type_id: 0x4585663f
+  offset: 8458
+  bitsize: 1
+}
+member {
+  id: 0x877d5113
+  name: "quirk_type"
+  type_id: 0xb3a3e4db
+  offset: 1248
+}
+member {
+  id: 0xfcfe44a4
+  name: "quirk_zlp_not_supp"
+  type_id: 0x4585663f
+  offset: 8459
+  bitsize: 1
+}
+member {
+  id: 0x2a06772c
+  name: "quirks"
+  type_id: 0x4585663f
+  offset: 1632
+}
+member {
+  id: 0x2a0679a5
+  name: "quirks"
+  type_id: 0x4585663f
+  offset: 59296
+}
+member {
+  id: 0x2a067c6e
+  name: "quirks"
+  type_id: 0x4585663f
+  offset: 7488
+}
+member {
+  id: 0x2a067c99
+  name: "quirks"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x2a1e7779
+  name: "quirks"
+  type_id: 0x5d8155a5
+  offset: 1496
+}
+member {
+  id: 0x2a70887a
+  name: "quirks"
+  type_id: 0x33756485
+}
+member {
+  id: 0x2a708dde
+  name: "quirks"
+  type_id: 0x33756485
+  offset: 12928
+}
+member {
+  id: 0x2a77a834
+  name: "quirks"
+  type_id: 0x34579ace
+  offset: 9536
+}
+member {
+  id: 0x2a8af503
+  name: "quirks"
+  type_id: 0xc9082b19
+  offset: 11616
+}
+member {
+  id: 0x2a96202a
+  name: "quirks"
+  type_id: 0xd5df6730
+  offset: 20928
+}
+member {
+  id: 0xe2744e54
+  name: "quirks2"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x9875a38c
+  name: "quota_disable"
+  type_id: 0x2fdb6288
+  offset: 192
+}
+member {
+  id: 0xf4353a73
+  name: "quota_enable"
+  type_id: 0x2fdb6288
+  offset: 128
+}
+member {
+  id: 0x3ec4d9fd
+  name: "quota_off"
+  type_id: 0x2ff9c73d
+  offset: 64
+}
+member {
+  id: 0x38668d0b
+  name: "quota_on"
+  type_id: 0x2fff8fbe
+}
+member {
+  id: 0xfdfa0099
+  name: "quota_read"
+  type_id: 0x0da539e7
+  offset: 1280
+}
+member {
+  id: 0x069fd15c
+  name: "quota_sync"
+  type_id: 0x2ff9c73d
+  offset: 256
+}
+member {
+  id: 0x8d5eaaec
+  name: "quota_write"
+  type_id: 0x0da690d2
+  offset: 1344
+}
+member {
+  id: 0x114c8d37
+  name: "quotalen"
+  type_id: 0xc93e017b
+  offset: 1120
+}
+member {
+  id: 0x1171805c
+  name: "quotalen"
+  type_id: 0xf435685e
+  offset: 512
+}
+member {
+  id: 0x5e1b43b2
+  name: "qw_sign"
+  type_id: 0xd614d38c
+  offset: 256
+}
+member {
+  id: 0x3bcd490a
+  name: "r"
+  type_id: 0xfc5791f4
+  offset: 96
+}
+member {
+  id: 0x3bcd494b
+  name: "r"
+  type_id: 0xfc5791f4
+  offset: 128
+}
+member {
+  id: 0x766556ed
+  name: "r0"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x9e0af45c
+  name: "r2w_factor"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x6f1fd62e
+  name: "r_counter"
+  type_id: 0x4585663f
+  offset: 1024
+}
+member {
+  id: 0x88d851e8
+  name: "r_seq"
+  type_id: 0x4585663f
+  offset: 608
+}
+member {
+  id: 0x29279995
+  name: "ra"
+  type_id: 0x12bb35ff
+  offset: 128
+}
+member {
+  id: 0x0e79d07a
+  name: "ra_chain"
+  type_id: 0x333a16a5
+  offset: 1472
+}
+member {
+  id: 0xe7b5c400
+  name: "ra_defrtr_metric"
+  type_id: 0xe62ebf07
+  offset: 672
+}
+member {
+  id: 0x66aa8ae5
+  name: "ra_mtu"
+  type_id: 0x4585663f
+  offset: 10752
+}
+member {
+  id: 0x7120816c
+  name: "ra_mutex"
+  type_id: 0xa7c362b0
+  offset: 1536
+}
+member {
+  id: 0x539d3443
+  name: "ra_pages"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x53ebcc11
+  name: "ra_pages"
+  type_id: 0x33756485
+  offset: 384
+}
+member {
+  id: 0x7a85796a
+  name: "radar_detect_regions"
+  type_id: 0x295c7202
+  offset: 136
+}
+member {
+  id: 0x4d143d91
+  name: "radar_detect_widths"
+  type_id: 0x295c7202
+  offset: 128
+}
+member {
+  id: 0x26582f94
+  name: "raid_partial_stripes_expensive"
+  type_id: 0x5d8155a5
+  offset: 832
+}
+member {
+  id: 0x5630acac
+  name: "raise_irq"
+  type_id: 0x2ca12e1a
+  offset: 576
+}
+member {
+  id: 0x5632281b
+  name: "raise_irq"
+  type_id: 0x2e280a68
+  offset: 64
+}
+member {
+  id: 0x873e62a9
+  name: "ramp"
+  type_id: 0xef5c2474
+}
+member {
+  id: 0x59dd001c
+  name: "ramp_delay"
+  type_id: 0x4585663f
+  offset: 832
+}
+member {
+  id: 0x59dd0941
+  name: "ramp_delay"
+  type_id: 0x4585663f
+  offset: 1536
+}
+member {
+  id: 0xe72c249d
+  name: "ramp_delay_table"
+  type_id: 0x39cc14ac
+  offset: 2176
+}
+member {
+  id: 0x21dee7ce
+  name: "ramp_disable"
+  type_id: 0x4585663f
+  offset: 1731
+  bitsize: 1
+}
+member {
+  id: 0x7e287ac4
+  name: "ramp_mask"
+  type_id: 0x4585663f
+  offset: 2144
+}
+member {
+  id: 0x5b41f1bf
+  name: "ramp_reg"
+  type_id: 0x4585663f
+  offset: 2112
+}
+member {
+  id: 0xb165727b
+  name: "random"
+  type_id: 0x33756485
+  offset: 1728
+}
+member {
+  id: 0xb17030f4
+  name: "random"
+  type_id: 0x263062c2
+  offset: 3712
+}
+member {
+  id: 0x2c59a8ee
+  name: "random_addr"
+  type_id: 0xa61911b2
+  offset: 816
+}
+member {
+  id: 0x239bd163
+  name: "random_frame"
+  type_id: 0x4585663f
+  offset: 5376
+}
+member {
+  id: 0x2db6a778
+  name: "random_seq"
+  type_id: 0x1bf16028
+  offset: 1792
+}
+member {
+  id: 0x05204fcf
+  name: "randomize_mac_addr"
+  type_id: 0x295c7202
+  offset: 33
+  bitsize: 1
+}
+member {
+  id: 0x0e083bee
+  name: "range"
+  type_id: 0xb4bee03b
+}
+member {
+  id: 0x0e0f62b4
+  name: "range"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0x0e5c14b2
+  name: "range"
+  type_id: 0xe0987ef0
+  offset: 128
+}
+member {
+  id: 0x0e5c15b9
+  name: "range"
+  type_id: 0xe0987ef0
+  offset: 192
+}
+member {
+  id: 0x0e6e7fb8
+  name: "range"
+  type_id: 0xd2fe57e5
+  offset: 64
+}
+member {
+  id: 0x0e957cc9
+  name: "range"
+  type_id: 0x29f9c70b
+}
+member {
+  id: 0x0e9baccf
+  name: "range"
+  type_id: 0x2729c17d
+}
+member {
+  id: 0x0ec9e09b
+  name: "range"
+  type_id: 0x75617428
+  offset: 64
+}
+member {
+  id: 0x0edba5dd
+  name: "range"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x0efc1fc3
+  name: "range"
+  type_id: 0x409e2c67
+  offset: 64
+}
+member {
+  id: 0x80852b9d
+  name: "range_bpg_offset"
+  type_id: 0x295c7202
+  offset: 16
+}
+member {
+  id: 0xfb7076de
+  name: "range_cyclic"
+  type_id: 0x4585663f
+  offset: 292
+  bitsize: 1
+}
+member {
+  id: 0x7a77cd3c
+  name: "range_end"
+  type_id: 0x92233392
+  offset: 320
+}
+member {
+  id: 0x7ac246c7
+  name: "range_end"
+  type_id: 0x27a7c613
+  offset: 192
+}
+member {
+  id: 0xd02e89bd
+  name: "range_max"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0xd02e8d05
+  name: "range_max"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xd0535f73
+  name: "range_max"
+  type_id: 0x385bd9b4
+  offset: 11840
+}
+member {
+  id: 0xda30fe11
+  name: "range_max_qp"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0x5445db9e
+  name: "range_min"
+  type_id: 0x865acc96
+  offset: 11776
+}
+member {
+  id: 0x54860881
+  name: "range_min"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x54860c60
+  name: "range_min"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xac37594b
+  name: "range_min_qp"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x9c5b814d
+  name: "range_signed"
+  type_id: 0x10c5646a
+}
+member {
+  id: 0xb97e38a2
+  name: "range_start"
+  type_id: 0x92233392
+  offset: 256
+}
+member {
+  id: 0xb9cbb53e
+  name: "range_start"
+  type_id: 0x27a7c613
+  offset: 128
+}
+member {
+  id: 0x2f5e77ea
+  name: "range_tr"
+  type_id: 0x26a23d9b
+  offset: 4160
+}
+member {
+  id: 0xce7c9aa9
+  name: "range_tree"
+  type_id: 0xeb923a9b
+  offset: 5184
+}
+member {
+  id: 0xc3f410bb
+  name: "rangehigh"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0xc3f41592
+  name: "rangehigh"
+  type_id: 0xe62ebf07
+  offset: 192
+}
+member {
+  id: 0xc3f41902
+  name: "rangehigh"
+  type_id: 0xe62ebf07
+  offset: 352
+}
+member {
+  id: 0xc3f41cc9
+  name: "rangehigh"
+  type_id: 0xe62ebf07
+  offset: 384
+}
+member {
+  id: 0xd8b7022a
+  name: "rangelow"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0xd8b70608
+  name: "rangelow"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0xd8b70c2f
+  name: "rangelow"
+  type_id: 0xe62ebf07
+  offset: 320
+}
+member {
+  id: 0xd8b70fb1
+  name: "rangelow"
+  type_id: 0xe62ebf07
+  offset: 352
+}
+member {
+  id: 0x3b41c72a
+  name: "ranges"
+  type_id: 0xc3386ef4
+  offset: 64
+}
+member {
+  id: 0x3b6bed93
+  name: "ranges"
+  type_id: 0xe91636fe
+}
+member {
+  id: 0x3bbe0b97
+  name: "ranges"
+  type_id: 0x3cf7396b
+  offset: 2304
+}
+member {
+  id: 0x5f1b5e34
+  name: "rate"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x5f61bea2
+  name: "rate"
+  type_id: 0xb3e7bac9
+  offset: 8
+}
+member {
+  id: 0x5f97d155
+  name: "rate"
+  type_id: 0x4585663f
+  offset: 864
+}
+member {
+  id: 0x5f97deea
+  name: "rate"
+  type_id: 0x4585663f
+  offset: 576
+}
+member {
+  id: 0x5fb57bae
+  name: "rate"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0x5fd9fff9
+  name: "rate"
+  type_id: 0x0baa70a7
+  offset: 448
+}
+member {
+  id: 0x5fe1279a
+  name: "rate"
+  type_id: 0x33756485
+}
+member {
+  id: 0x5fe12ee8
+  name: "rate"
+  type_id: 0x33756485
+  offset: 576
+}
+member {
+  id: 0x5fe12f53
+  name: "rate"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0x94569300
+  name: "rate_bytes_ps"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0x8d8ea53b
+  name: "rate_clk_single"
+  type_id: 0x33756485
+  offset: 1792
+}
+member {
+  id: 0xfdf8bb55
+  name: "rate_control"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0xfdf8bda3
+  name: "rate_control"
+  type_id: 0xe62ebf07
+  offset: 2144
+}
+member {
+  id: 0x0f313303
+  name: "rate_den"
+  type_id: 0x4585663f
+  offset: 1408
+}
+member {
+  id: 0x0f313ec6
+  name: "rate_den"
+  type_id: 0x4585663f
+  offset: 4256
+}
+member {
+  id: 0xf764b189
+  name: "rate_est"
+  type_id: 0x26b864aa
+  offset: 576
+}
+member {
+  id: 0x830e78aa
+  name: "rate_id"
+  type_id: 0x295c7202
+  offset: 104
+}
+member {
+  id: 0xd51bd1ef
+  name: "rate_matching"
+  type_id: 0x6720d32f
+  offset: 384
+}
+member {
+  id: 0xd51bd390
+  name: "rate_matching"
+  type_id: 0x6720d32f
+  offset: 9280
+}
+member {
+  id: 0xd5cf19e3
+  name: "rate_matching"
+  type_id: 0xb3e7bac9
+  offset: 152
+}
+member {
+  id: 0xe70c989d
+  name: "rate_max"
+  type_id: 0x0baa70a7
+  offset: 512
+}
+member {
+  id: 0xe742b24c
+  name: "rate_max"
+  type_id: 0x4585663f
+  offset: 544
+}
+member {
+  id: 0xe742b45a
+  name: "rate_max"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0x3211fca0
+  name: "rate_min"
+  type_id: 0x0baa70a7
+  offset: 480
+}
+member {
+  id: 0x325fd91e
+  name: "rate_min"
+  type_id: 0x4585663f
+  offset: 512
+}
+member {
+  id: 0x325fdfe6
+  name: "rate_min"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0xe9d2a54b
+  name: "rate_mult"
+  type_id: 0x4585663f
+  offset: 1472
+}
+member {
+  id: 0xbc979606
+  name: "rate_num"
+  type_id: 0x4585663f
+  offset: 4224
+}
+member {
+  id: 0xbc9798a0
+  name: "rate_num"
+  type_id: 0x4585663f
+  offset: 1376
+}
+member {
+  id: 0x0d65ea4b
+  name: "rate_pkt_ps"
+  type_id: 0x92233392
+  offset: 320
+}
+member {
+  id: 0x67b69f8d
+  name: "rate_sample_interval"
+  type_id: 0xe62ebf07
+  offset: 704
+}
+member {
+  id: 0x284ec037
+  name: "rate_table"
+  type_id: 0x1bf16028
+  offset: 640
+}
+member {
+  id: 0xb3d910e2
+  name: "ratelimit"
+  type_id: 0xa3ac7ea1
+  offset: 768
+}
+member {
+  id: 0x3f10377e
+  name: "rates"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x3f103f0c
+  name: "rates"
+  type_id: 0x4585663f
+  offset: 480
+}
+member {
+  id: 0x3f53f611
+  name: "rates"
+  type_id: 0x064d6086
+  offset: 256
+}
+member {
+  id: 0x3f5e16dd
+  name: "rates"
+  type_id: 0x0baa70a7
+  offset: 448
+}
+member {
+  id: 0x0dd6845c
+  name: "rating"
+  type_id: 0x6720d32f
+  offset: 576
+}
+member {
+  id: 0x0dd68b53
+  name: "rating"
+  type_id: 0x6720d32f
+  offset: 1280
+}
+member {
+  id: 0x0df42830
+  name: "rating"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0xd168c688
+  name: "ratio"
+  type_id: 0x15053314
+  offset: 256
+}
+member {
+  id: 0x5660c3f2
+  name: "rats"
+  type_id: 0x3baacc82
+  offset: 64
+}
+member {
+  id: 0x0900998a
+  name: "raw"
+  type_id: 0x11c404ba
+  offset: 192
+}
+member {
+  id: 0x0906fd74
+  name: "raw"
+  type_id: 0x17a8337c
+}
+member {
+  id: 0x09228c43
+  name: "raw"
+  type_id: 0x33de7348
+  offset: 448
+}
+member {
+  id: 0x092e71a8
+  name: "raw"
+  type_id: 0x3f28acc9
+  offset: 8768
+}
+member {
+  id: 0x0935e42c
+  name: "raw"
+  type_id: 0x24b9a24a
+  offset: 192
+}
+member {
+  id: 0x0935e527
+  name: "raw"
+  type_id: 0x24b9a24a
+  offset: 128
+}
+member {
+  id: 0x0936c0e4
+  name: "raw"
+  type_id: 0x2795a3db
+}
+member {
+  id: 0x0936eae7
+  name: "raw"
+  type_id: 0x27bfa089
+}
+member {
+  id: 0x0964ed2a
+  name: "raw"
+  type_id: 0x75b86d50
+}
+member {
+  id: 0x096aa7bd
+  name: "raw"
+  type_id: 0x7bf61b84
+  offset: 64
+}
+member {
+  id: 0x09ece766
+  name: "raw"
+  type_id: 0xfdb22131
+}
+member {
+  id: 0x3f203f8d
+  name: "raw1"
+  type_id: 0x33756485
+}
+member {
+  id: 0x31e1117c
+  name: "raw2"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x0f6b06ef
+  name: "raw2addr"
+  type_id: 0x2efa14a9
+  offset: 384
+}
+member {
+  id: 0x7530062f
+  name: "raw_bkops_status"
+  type_id: 0x295c7202
+  offset: 1240
+}
+member {
+  id: 0xd9a92aff
+  name: "raw_boot_mult"
+  type_id: 0x295c7202
+  offset: 1160
+}
+member {
+  id: 0x4e5b92e9
+  name: "raw_card_type"
+  type_id: 0x295c7202
+  offset: 1072
+}
+member {
+  id: 0xb0528a7b
+  name: "raw_cid"
+  type_id: 0xbe0f19dc
+  offset: 7776
+}
+member {
+  id: 0xb1cc99d8
+  name: "raw_csd"
+  type_id: 0xbe0f19dc
+  offset: 7904
+}
+member {
+  id: 0xbb375ab7
+  name: "raw_data"
+  type_id: 0xa4a6d75b
+}
+member {
+  id: 0xbbaae794
+  name: "raw_data"
+  type_id: 0x391f15ea
+  offset: 64
+}
+member {
+  id: 0xbbfebb47
+  name: "raw_data"
+  type_id: 0x6d472730
+}
+member {
+  id: 0x292e8f1f
+  name: "raw_driver_strength"
+  type_id: 0x295c7202
+  offset: 1080
+}
+member {
+  id: 0x8bd7fb55
+  name: "raw_erase_timeout_mult"
+  type_id: 0x295c7202
+  offset: 1144
+}
+member {
+  id: 0x3edc2471
+  name: "raw_erased_mem_count"
+  type_id: 0x295c7202
+  offset: 1048
+}
+member {
+  id: 0xb773a56a
+  name: "raw_event"
+  type_id: 0x2d008d0e
+  offset: 576
+}
+member {
+  id: 0x822cd836
+  name: "raw_exception_status"
+  type_id: 0x295c7202
+  offset: 1024
+}
+member {
+  id: 0xda9c4412
+  name: "raw_ext_csd_structure"
+  type_id: 0x295c7202
+  offset: 1064
+}
+member {
+  id: 0x8aa923af
+  name: "raw_hash"
+  type_id: 0x2a40fc09
+}
+member {
+  id: 0x3a52ac5b
+  name: "raw_hc_erase_gap_size"
+  type_id: 0x295c7202
+  offset: 1136
+}
+member {
+  id: 0x36df599d
+  name: "raw_hc_erase_grp_size"
+  type_id: 0x295c7202
+  offset: 1152
+}
+member {
+  id: 0x31cb9c31
+  name: "raw_hdlc"
+  type_id: 0x2d036f50
+}
+member {
+  id: 0x92b15570
+  name: "raw_init"
+  type_id: 0x2f99c988
+  offset: 512
+}
+member {
+  id: 0x4fd25a9e
+  name: "raw_lock"
+  type_id: 0x638752c9
+}
+member {
+  id: 0x4ff2f495
+  name: "raw_lock"
+  type_id: 0x4329595f
+}
+member {
+  id: 0x7ce65205
+  name: "raw_partition_support"
+  type_id: 0x295c7202
+  offset: 1032
+}
+member {
+  id: 0x830fc7c1
+  name: "raw_pwr_cl_200_195"
+  type_id: 0x295c7202
+  offset: 1200
+}
+member {
+  id: 0x97b3adbd
+  name: "raw_pwr_cl_200_360"
+  type_id: 0x295c7202
+  offset: 1208
+}
+member {
+  id: 0xac43d9a5
+  name: "raw_pwr_cl_26_195"
+  type_id: 0x295c7202
+  offset: 1104
+}
+member {
+  id: 0x34e9a78b
+  name: "raw_pwr_cl_26_360"
+  type_id: 0x295c7202
+  offset: 1120
+}
+member {
+  id: 0xc1e72aef
+  name: "raw_pwr_cl_52_195"
+  type_id: 0x295c7202
+  offset: 1096
+}
+member {
+  id: 0x30184500
+  name: "raw_pwr_cl_52_360"
+  type_id: 0x295c7202
+  offset: 1112
+}
+member {
+  id: 0x4063c0b6
+  name: "raw_pwr_cl_ddr_200_360"
+  type_id: 0x295c7202
+  offset: 1232
+}
+member {
+  id: 0x7cd954a6
+  name: "raw_pwr_cl_ddr_52_195"
+  type_id: 0x295c7202
+  offset: 1216
+}
+member {
+  id: 0xa617d0b8
+  name: "raw_pwr_cl_ddr_52_360"
+  type_id: 0x295c7202
+  offset: 1224
+}
+member {
+  id: 0x6fa9d3ef
+  name: "raw_q"
+  type_id: 0x578f9c2b
+  offset: 25728
+}
+member {
+  id: 0x3d617ac5
+  name: "raw_request"
+  type_id: 0x2d715b45
+  offset: 512
+}
+member {
+  id: 0x83e1a633
+  name: "raw_rpmb_size_mult"
+  type_id: 0x295c7202
+  offset: 1040
+}
+member {
+  id: 0xf5ec2d62
+  name: "raw_s_a_timeout"
+  type_id: 0x295c7202
+  offset: 1128
+}
+member {
+  id: 0xe598aee8
+  name: "raw_scr"
+  type_id: 0x5eeb4a25
+  offset: 8032
+}
+member {
+  id: 0xeca2b05d
+  name: "raw_sec_erase_mult"
+  type_id: 0x295c7202
+  offset: 1176
+}
+member {
+  id: 0xff6d3c31
+  name: "raw_sec_feature_support"
+  type_id: 0x295c7202
+  offset: 1184
+}
+member {
+  id: 0xdd6c43a6
+  name: "raw_sec_trim_mult"
+  type_id: 0x295c7202
+  offset: 1168
+}
+member {
+  id: 0x5f028fe5
+  name: "raw_sectors"
+  type_id: 0x861a0f9a
+  offset: 1248
+}
+member {
+  id: 0x9cc0df78
+  name: "raw_spinlock"
+  type_id: 0xc8b17aa7
+}
+member {
+  id: 0x83ba53fe
+  name: "raw_spinlock_flags"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xe3e214cc
+  name: "raw_ssr"
+  type_id: 0x7e71c857
+  offset: 8096
+}
+member {
+  id: 0xb1b4ba3a
+  name: "raw_tracepoint"
+  type_id: 0x1b179e9d
+}
+member {
+  id: 0xb1bf6eb0
+  name: "raw_tracepoint"
+  type_id: 0x10c3147c
+}
+member {
+  id: 0x8cf71553
+  name: "raw_trim_mult"
+  type_id: 0x295c7202
+  offset: 1192
+}
+member {
+  id: 0x018e63c8
+  name: "rawdescriptors"
+  type_id: 0x0bb0c019
+  offset: 11072
+}
+member {
+  id: 0xfb18a717
+  name: "rb"
+  type_id: 0x6d7f5ff6
+  offset: 416
+}
+member {
+  id: 0xfb47d48a
+  name: "rb"
+  type_id: 0x3205ba2f
+  offset: 512
+}
+member {
+  id: 0xfb47d75b
+  name: "rb"
+  type_id: 0x3205ba2f
+  offset: 192
+}
+member {
+  id: 0xfb47df92
+  name: "rb"
+  type_id: 0x3205ba2f
+}
+member {
+  id: 0xfb577072
+  name: "rb"
+  type_id: 0x22aebb74
+  offset: 64
+}
+member {
+  id: 0xfb5779b3
+  name: "rb"
+  type_id: 0x22aebb74
+  offset: 5888
+}
+member {
+  id: 0x3afea870
+  name: "rb_entry"
+  type_id: 0xd3c80119
+  offset: 5952
+}
+member {
+  id: 0x4313e44f
+  name: "rb_fragments"
+  type_id: 0xeb923a9b
+  offset: 960
+}
+member {
+  id: 0x29ba9be9
+  name: "rb_hole_addr"
+  type_id: 0x3205ba2f
+  offset: 896
+}
+member {
+  id: 0xfdce67e4
+  name: "rb_hole_size"
+  type_id: 0x3205ba2f
+  offset: 704
+}
+member {
+  id: 0xfc83ac9a
+  name: "rb_left"
+  type_id: 0x0611572c
+  offset: 128
+}
+member {
+  id: 0x2bb91e1d
+  name: "rb_leftmost"
+  type_id: 0x0611572c
+  offset: 64
+}
+member {
+  id: 0x230022a6
+  name: "rb_node"
+  type_id: 0x3205ba2f
+}
+member {
+  id: 0x23002647
+  name: "rb_node"
+  type_id: 0x3205ba2f
+  offset: 64
+}
+member {
+  id: 0x23002b64
+  name: "rb_node"
+  type_id: 0x3205ba2f
+  offset: 128
+}
+member {
+  id: 0x2334364b
+  name: "rb_node"
+  type_id: 0x0611572c
+}
+member {
+  id: 0x24064dd2
+  name: "rb_right"
+  type_id: 0x0611572c
+  offset: 64
+}
+member {
+  id: 0x82de98a3
+  name: "rb_root"
+  type_id: 0xd0f3b5bf
+  offset: 832
+}
+member {
+  id: 0x82de9b19
+  name: "rb_root"
+  type_id: 0xd0f3b5bf
+}
+member {
+  id: 0x82e5fa96
+  name: "rb_root"
+  type_id: 0xeb923a9b
+}
+member {
+  id: 0x86d928a7
+  name: "rb_subtree_last"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0xfadf151e
+  name: "rbits4"
+  type_id: 0x295c7202
+  offset: 456
+}
+member {
+  id: 0x47423e3e
+  name: "rbits6"
+  type_id: 0x295c7202
+  offset: 472
+}
+member {
+  id: 0xf069c7e8
+  name: "rbnode"
+  type_id: 0x3205ba2f
+}
+member {
+  id: 0x48f62bf3
+  name: "rbroot"
+  type_id: 0xeb923a9b
+  offset: 64
+}
+member {
+  id: 0xb7b3706d
+  name: "rc"
+  type_id: 0x060cf413
+  offset: 10112
+}
+member {
+  id: 0x27004234
+  name: "rc_bits"
+  type_id: 0x914dbfdc
+  offset: 992
+}
+member {
+  id: 0x7cd51141
+  name: "rc_buf_thresh"
+  type_id: 0xf810a0fb
+  offset: 240
+}
+member {
+  id: 0x7cfb137c
+  name: "rc_buf_thresh"
+  type_id: 0xd614d38c
+  offset: 352
+}
+member {
+  id: 0xa8718050
+  name: "rc_edge_factor"
+  type_id: 0x295c7202
+  offset: 144
+}
+member {
+  id: 0xa87185fa
+  name: "rc_edge_factor"
+  type_id: 0x295c7202
+  offset: 320
+}
+member {
+  id: 0x0e2e8020
+  name: "rc_map"
+  type_id: 0x686d198e
+  offset: 8000
+}
+member {
+  id: 0x6319c653
+  name: "rc_model_size"
+  type_id: 0x7584e7da
+  offset: 304
+}
+member {
+  id: 0x63fd0428
+  name: "rc_model_size"
+  type_id: 0x914dbfdc
+  offset: 832
+}
+member {
+  id: 0xb3989fc8
+  name: "rc_proto"
+  type_id: 0x52a8f1d9
+  offset: 160
+}
+member {
+  id: 0x420143bf
+  name: "rc_quant_incr_limit0"
+  type_id: 0x295c7202
+  offset: 160
+}
+member {
+  id: 0x42014d06
+  name: "rc_quant_incr_limit0"
+  type_id: 0x295c7202
+  offset: 328
+}
+member {
+  id: 0x035c1104
+  name: "rc_quant_incr_limit1"
+  type_id: 0x295c7202
+  offset: 336
+}
+member {
+  id: 0x035c110c
+  name: "rc_quant_incr_limit1"
+  type_id: 0x295c7202
+  offset: 152
+}
+member {
+  id: 0x4c92143c
+  name: "rc_range_parameters"
+  type_id: 0xebbfa31c
+  offset: 464
+}
+member {
+  id: 0x5b26350a
+  name: "rc_range_params"
+  type_id: 0xcfd0c777
+  offset: 464
+}
+member {
+  id: 0x18fe2cee
+  name: "rc_tgt_offset"
+  type_id: 0x295c7202
+  offset: 344
+}
+member {
+  id: 0x8fdbcb14
+  name: "rc_tgt_offset_high"
+  type_id: 0x295c7202
+  offset: 112
+}
+member {
+  id: 0x80379de2
+  name: "rc_tgt_offset_low"
+  type_id: 0x295c7202
+  offset: 120
+}
+member {
+  id: 0x5c647429
+  name: "rca"
+  type_id: 0x4585663f
+  offset: 7392
+}
+member {
+  id: 0xe96d3f15
+  name: "rcaches"
+  type_id: 0x0fea61da
+  offset: 832
+}
+member {
+  id: 0x3fbc741c
+  name: "rcast"
+  type_id: 0x6d7f5ff6
+}
+member {
+  id: 0x88eea875
+  name: "rcdev"
+  type_id: 0x22e58417
+}
+member {
+  id: 0x7b8aa32e
+  name: "rcec"
+  type_id: 0x11e6864c
+  offset: 768
+}
+member {
+  id: 0x7c0ba1c4
+  name: "rcec_ea"
+  type_id: 0x2af61910
+  offset: 704
+}
+member {
+  id: 0xdd1042ed
+  name: "rchar"
+  type_id: 0x92233392
+}
+member {
+  id: 0x95dac005
+  name: "rcu"
+  type_id: 0xe3222f5b
+  offset: 576
+}
+member {
+  id: 0x95dac02d
+  name: "rcu"
+  type_id: 0xe3222f5b
+  offset: 2624
+}
+member {
+  id: 0x95dac0b5
+  name: "rcu"
+  type_id: 0xe3222f5b
+  offset: 128
+}
+member {
+  id: 0x95dac0cf
+  name: "rcu"
+  type_id: 0xe3222f5b
+  offset: 1600
+}
+member {
+  id: 0x95dac184
+  name: "rcu"
+  type_id: 0xe3222f5b
+  offset: 10624
+}
+member {
+  id: 0x95dac185
+  name: "rcu"
+  type_id: 0xe3222f5b
+  offset: 960
+}
+member {
+  id: 0x95dac1be
+  name: "rcu"
+  type_id: 0xe3222f5b
+  offset: 192
+}
+member {
+  id: 0x95dac1d9
+  name: "rcu"
+  type_id: 0xe3222f5b
+  offset: 768
+}
+member {
+  id: 0x95dac26a
+  name: "rcu"
+  type_id: 0xe3222f5b
+  offset: 1856
+}
+member {
+  id: 0x95dac26f
+  name: "rcu"
+  type_id: 0xe3222f5b
+  offset: 512
+}
+member {
+  id: 0x95dac31e
+  name: "rcu"
+  type_id: 0xe3222f5b
+  offset: 8384
+}
+member {
+  id: 0x95dac3d1
+  name: "rcu"
+  type_id: 0xe3222f5b
+  offset: 896
+}
+member {
+  id: 0x95dac401
+  name: "rcu"
+  type_id: 0xe3222f5b
+  offset: 1088
+}
+member {
+  id: 0x95dac715
+  name: "rcu"
+  type_id: 0xe3222f5b
+  offset: 6528
+}
+member {
+  id: 0x95dac7ab
+  name: "rcu"
+  type_id: 0xe3222f5b
+  offset: 1152
+}
+member {
+  id: 0x95dac7fc
+  name: "rcu"
+  type_id: 0xe3222f5b
+  offset: 2880
+}
+member {
+  id: 0x95dac8a9
+  name: "rcu"
+  type_id: 0xe3222f5b
+  offset: 1920
+}
+member {
+  id: 0x95dac8e5
+  name: "rcu"
+  type_id: 0xe3222f5b
+  offset: 384
+}
+member {
+  id: 0x95dac977
+  name: "rcu"
+  type_id: 0xe3222f5b
+}
+member {
+  id: 0x95dac9dc
+  name: "rcu"
+  type_id: 0xe3222f5b
+  offset: 256
+}
+member {
+  id: 0x95daca08
+  name: "rcu"
+  type_id: 0xe3222f5b
+  offset: 10816
+}
+member {
+  id: 0x95dacb4a
+  name: "rcu"
+  type_id: 0xe3222f5b
+  offset: 704
+}
+member {
+  id: 0x95dacb84
+  name: "rcu"
+  type_id: 0xe3222f5b
+  offset: 1408
+}
+member {
+  id: 0x95dacce8
+  name: "rcu"
+  type_id: 0xe3222f5b
+  offset: 2176
+}
+member {
+  id: 0x95dacd96
+  name: "rcu"
+  type_id: 0xe3222f5b
+  offset: 64
+}
+member {
+  id: 0x95dace27
+  name: "rcu"
+  type_id: 0xe3222f5b
+  offset: 1472
+}
+member {
+  id: 0x95dace52
+  name: "rcu"
+  type_id: 0xe3222f5b
+  offset: 1728
+}
+member {
+  id: 0x95daceb0
+  name: "rcu"
+  type_id: 0xe3222f5b
+  offset: 320
+}
+member {
+  id: 0x95dacf0a
+  name: "rcu"
+  type_id: 0xe3222f5b
+  offset: 1280
+}
+member {
+  id: 0x95dacf0e
+  name: "rcu"
+  type_id: 0xe3222f5b
+  offset: 640
+}
+member {
+  id: 0x95dacfd4
+  name: "rcu"
+  type_id: 0xe3222f5b
+  offset: 6272
+}
+member {
+  id: 0x69de27c4
+  name: "rcu_batches"
+  type_id: 0x33756485
+  offset: 6080
+}
+member {
+  id: 0x7feacf27
+  name: "rcu_blocked_node"
+  type_id: 0x1964f783
+  offset: 9856
+}
+member {
+  id: 0x41a83149
+  name: "rcu_data0"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0x1b514c84
+  name: "rcu_gp_init_mask"
+  type_id: 0x33756485
+  offset: 320
+}
+member {
+  id: 0xe2ce8a90
+  name: "rcu_member"
+  type_id: 0xe3222f5b
+}
+member {
+  id: 0x3040a5c1
+  name: "rcu_node_entry"
+  type_id: 0xd3c80119
+  offset: 9728
+}
+member {
+  id: 0x20839f02
+  name: "rcu_pending"
+  type_id: 0x6720d32f
+  offset: 6144
+}
+member {
+  id: 0x587d2bb7
+  name: "rcu_read_lock_nesting"
+  type_id: 0x6720d32f
+  offset: 9632
+}
+member {
+  id: 0xc12ce7f9
+  name: "rcu_read_unlock_special"
+  type_id: 0xa0a12471
+  offset: 9664
+}
+member {
+  id: 0x73407d9e
+  name: "rcu_state"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0x0d460f06
+  name: "rcu_tasks_holdout"
+  type_id: 0x295c7202
+  offset: 9984
+}
+member {
+  id: 0x51bcdc0c
+  name: "rcu_tasks_holdout_list"
+  type_id: 0xd3c80119
+  offset: 10048
+}
+member {
+  id: 0x960e4a88
+  name: "rcu_tasks_idle_cpu"
+  type_id: 0x6720d32f
+  offset: 10016
+}
+member {
+  id: 0x14585e46
+  name: "rcu_tasks_idx"
+  type_id: 0x295c7202
+  offset: 9992
+}
+member {
+  id: 0x1f7224f8
+  name: "rcu_tasks_nvcsw"
+  type_id: 0x33756485
+  offset: 9920
+}
+member {
+  id: 0xe1e76c3c
+  name: "rcu_users"
+  type_id: 0xa722c13e
+}
+member {
+  id: 0x085cb7c2
+  name: "rcuhead"
+  type_id: 0xe3222f5b
+}
+member {
+  id: 0xb8f1ce8a
+  name: "rcv_entries"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x5ba29d36
+  name: "rcv_entries_max"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0xeae5b95c
+  name: "rcv_interval_us"
+  type_id: 0xc9082b19
+  offset: 288
+}
+member {
+  id: 0xa4040522
+  name: "rcv_lists_stats"
+  type_id: 0x18d413f1
+  offset: 1280
+}
+member {
+  id: 0xd699ecd4
+  name: "rcv_probes_mcast"
+  type_id: 0x33756485
+  offset: 384
+}
+member {
+  id: 0x849f9a9f
+  name: "rcv_probes_ucast"
+  type_id: 0x33756485
+  offset: 448
+}
+member {
+  id: 0x1f3accfe
+  name: "rcv_unacked"
+  type_id: 0x914dbfdc
+  offset: 7840
+}
+member {
+  id: 0x6ae39863
+  name: "rcv_win"
+  type_id: 0x914dbfdc
+  offset: 7856
+}
+member {
+  id: 0x75627b5b
+  name: "rcvlists_lock"
+  type_id: 0xf313e71a
+  offset: 704
+}
+member {
+  id: 0x6bca0440
+  name: "rd"
+  type_id: 0x3922fa08
+  offset: 23104
+}
+member {
+  id: 0xc874e707
+  name: "rd_base"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0xb5b5379c
+  name: "rd_iodev"
+  type_id: 0x60b9a60c
+  offset: 31360
+}
+member {
+  id: 0x5761a9c9
+  name: "rd_lock"
+  type_id: 0xc8b17aa7
+}
+member {
+  id: 0x93d4d9cd
+  name: "rd_noinc_table"
+  type_id: 0x3842259a
+  offset: 1728
+}
+member {
+  id: 0x93d4de44
+  name: "rd_noinc_table"
+  type_id: 0x3842259a
+  offset: 3712
+}
+member {
+  id: 0xc63d4176
+  name: "rd_regions"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0x39c535a2
+  name: "rd_table"
+  type_id: 0x3842259a
+  offset: 1472
+}
+member {
+  id: 0x39c538b8
+  name: "rd_table"
+  type_id: 0x3842259a
+  offset: 3456
+}
+member {
+  id: 0x0c716ce5
+  name: "rd_wait"
+  type_id: 0x03913382
+  offset: 384
+}
+member {
+  id: 0xe349e428
+  name: "rdesc"
+  type_id: 0x2669d715
+  offset: 128
+}
+member {
+  id: 0xdc239072
+  name: "rdev"
+  type_id: 0xeb0f6de6
+  offset: 352
+}
+member {
+  id: 0xdc23935c
+  name: "rdev"
+  type_id: 0xeb0f6de6
+  offset: 448
+}
+member {
+  id: 0xdcc7ebf2
+  name: "rdev"
+  type_id: 0x0f78474f
+  offset: 960
+}
+member {
+  id: 0x1ac47f21
+  name: "rdist"
+  type_id: 0x09f1b886
+}
+member {
+  id: 0x15ff4b8b
+  name: "rdists"
+  type_id: 0xc58f49ae
+  offset: 192
+}
+member {
+  id: 0xdd0de586
+  name: "rdo"
+  type_id: 0xc9082b19
+  offset: 7040
+}
+member {
+  id: 0x525d4aae
+  name: "rdreg"
+  type_id: 0x116d36b8
+  offset: 31680
+}
+member {
+  id: 0xe932d634
+  name: "rdreg_index"
+  type_id: 0xc9082b19
+  offset: 31744
+}
+member {
+  id: 0x4163d7c4
+  name: "rdy_queue"
+  type_id: 0xd3c80119
+  offset: 6976
+}
+member {
+  id: 0x50e91245
+  name: "rdy_spinlock"
+  type_id: 0xf313e71a
+  offset: 7104
+}
+member {
+  id: 0x532ef508
+  name: "reachable_time"
+  type_id: 0x6720d32f
+  offset: 640
+}
+member {
+  id: 0x4818d22b
+  name: "read"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0x483a779e
+  name: "read"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0x4841a2f5
+  name: "read"
+  type_id: 0x1cfd711c
+}
+member {
+  id: 0x48437f63
+  name: "read"
+  type_id: 0x1e20e7eb
+}
+member {
+  id: 0x4850022b
+  name: "read"
+  type_id: 0x0d5a6860
+  offset: 320
+}
+member {
+  id: 0x48500e3e
+  name: "read"
+  type_id: 0x0d51ba49
+}
+member {
+  id: 0x48510371
+  name: "read"
+  type_id: 0x0c5d6702
+  offset: 384
+}
+member {
+  id: 0x4851111d
+  name: "read"
+  type_id: 0x0c475b25
+  offset: 128
+}
+member {
+  id: 0x4851e699
+  name: "read"
+  type_id: 0x0cb1ee7b
+  offset: 960
+}
+member {
+  id: 0x48523fca
+  name: "read"
+  type_id: 0x0f6acd3e
+  offset: 1344
+}
+member {
+  id: 0x48531f7b
+  name: "read"
+  type_id: 0x0e493de2
+  offset: 128
+}
+member {
+  id: 0x4853588a
+  name: "read"
+  type_id: 0x0e00c9b9
+  offset: 320
+}
+member {
+  id: 0x48537241
+  name: "read"
+  type_id: 0x0e2924a0
+  offset: 64
+}
+member {
+  id: 0x48537f62
+  name: "read"
+  type_id: 0x0e2924a0
+  offset: 128
+}
+member {
+  id: 0x4853d04f
+  name: "read"
+  type_id: 0x0e88bc7d
+  offset: 448
+}
+member {
+  id: 0x4853f8ef
+  name: "read"
+  type_id: 0x0eae1965
+  offset: 576
+}
+member {
+  id: 0x4853fa42
+  name: "read"
+  type_id: 0x0ea3bf3c
+  offset: 640
+}
+member {
+  id: 0x485b3652
+  name: "read"
+  type_id: 0x0669d6b3
+}
+member {
+  id: 0x486528a2
+  name: "read"
+  type_id: 0x38751b21
+  offset: 704
+}
+member {
+  id: 0x486676cf
+  name: "read"
+  type_id: 0x3b2e3c42
+  offset: 448
+}
+member {
+  id: 0x486e2dc5
+  name: "read"
+  type_id: 0x33756485
+  offset: 1728
+}
+member {
+  id: 0x487026f9
+  name: "read"
+  type_id: 0x2d797d9d
+}
+member {
+  id: 0x48703aa7
+  name: "read"
+  type_id: 0x2d65237b
+}
+member {
+  id: 0x487076fb
+  name: "read"
+  type_id: 0x2d2eb8ed
+  offset: 320
+}
+member {
+  id: 0x4870b261
+  name: "read"
+  type_id: 0x2de52c27
+  offset: 192
+}
+member {
+  id: 0x48711710
+  name: "read"
+  type_id: 0x2c4d9c82
+  offset: 3968
+}
+member {
+  id: 0x48711f6e
+  name: "read"
+  type_id: 0x2c4d9c82
+  offset: 1088
+}
+member {
+  id: 0x4871e0f1
+  name: "read"
+  type_id: 0x2cb8b225
+  offset: 320
+}
+member {
+  id: 0x4872101b
+  name: "read"
+  type_id: 0x2f4f9f95
+}
+member {
+  id: 0x4872ac31
+  name: "read"
+  type_id: 0x2ff754b4
+  offset: 64
+}
+member {
+  id: 0x4872d445
+  name: "read"
+  type_id: 0x2f830879
+  offset: 192
+}
+member {
+  id: 0x48732fe6
+  name: "read"
+  type_id: 0x2e7062fc
+}
+member {
+  id: 0x487391bb
+  name: "read"
+  type_id: 0x2ecc02be
+  offset: 704
+}
+member {
+  id: 0x487c24fc
+  name: "read"
+  type_id: 0x217f99ba
+  offset: 64
+}
+member {
+  id: 0x487dfa57
+  name: "read"
+  type_id: 0x20a66919
+  offset: 832
+}
+member {
+  id: 0xe188c982
+  name: "read_5v"
+  type_id: 0x2e7062fc
+  offset: 512
+}
+member {
+  id: 0xf9d6e92c
+  name: "read_alarm"
+  type_id: 0x2dcdf414
+  offset: 192
+}
+member {
+  id: 0xf00fdac5
+  name: "read_allocated"
+  type_id: 0x6720d32f
+  offset: 3936
+}
+member {
+  id: 0x7ce6fd69
+  name: "read_avail"
+  type_id: 0x2c480a05
+  offset: 256
+}
+member {
+  id: 0xd37e2cfc
+  name: "read_b"
+  type_id: 0x1db266e3
+  offset: 128
+}
+member {
+  id: 0x75e10416
+  name: "read_blkbits"
+  type_id: 0x4585663f
+  offset: 224
+}
+member {
+  id: 0xda4d0f3d
+  name: "read_bulk_callback"
+  type_id: 0x0ea52fda
+  offset: 4224
+}
+member {
+  id: 0xc9397873
+  name: "read_bytes"
+  type_id: 0xedf277ba
+  offset: 1984
+}
+member {
+  id: 0xc946ac74
+  name: "read_bytes"
+  type_id: 0x92233392
+  offset: 320
+}
+member {
+  id: 0xc9e7fb97
+  name: "read_bytes"
+  type_id: 0x33756485
+  offset: 1792
+}
+member {
+  id: 0x1f33dc7e
+  name: "read_caps"
+  type_id: 0x6d7f5ff6
+  offset: 9408
+}
+member {
+  id: 0x52f59200
+  name: "read_char"
+  type_id: 0xedf277ba
+  offset: 1728
+}
+member {
+  id: 0x90968fd2
+  name: "read_cmd"
+  type_id: 0x2c952bec
+  offset: 7424
+}
+member {
+  id: 0xe5f769ee
+  name: "read_cntpct_el0"
+  type_id: 0x1f66cd75
+  offset: 192
+}
+member {
+  id: 0xf8c2fa8f
+  name: "read_cntvct_el0"
+  type_id: 0x1f66cd75
+  offset: 256
+}
+member {
+  id: 0xe8a25d44
+  name: "read_count"
+  type_id: 0x1bf16028
+  offset: 384
+}
+member {
+  id: 0x2635ef55
+  name: "read_counter"
+  type_id: 0x1eba2d88
+  offset: 2944
+}
+member {
+  id: 0xa1b42c88
+  name: "read_dbi"
+  type_id: 0x18295f70
+  offset: 64
+}
+member {
+  id: 0xa5774d76
+  name: "read_dqblk"
+  type_id: 0x2e103219
+  offset: 256
+}
+member {
+  id: 0x26d2a405
+  name: "read_event_config"
+  type_id: 0x2c45eb05
+  offset: 512
+}
+member {
+  id: 0xb9240432
+  name: "read_event_value"
+  type_id: 0x2c45ef73
+  offset: 640
+}
+member {
+  id: 0x883cf01e
+  name: "read_file_info"
+  type_id: 0x2ff9c73d
+  offset: 64
+}
+member {
+  id: 0xa222e6db
+  name: "read_flag_mask"
+  type_id: 0x295c7202
+  offset: 768
+}
+member {
+  id: 0xa238c0e1
+  name: "read_flag_mask"
+  type_id: 0x33756485
+  offset: 2048
+}
+member {
+  id: 0xa238cc2b
+  name: "read_flag_mask"
+  type_id: 0x33756485
+  offset: 4160
+}
+member {
+  id: 0xf788dfad
+  name: "read_folio"
+  type_id: 0x2c5fd712
+  offset: 64
+}
+member {
+  id: 0x40e49a3e
+  name: "read_format"
+  type_id: 0xedf277ba
+  offset: 256
+}
+member {
+  id: 0x7dabb508
+  name: "read_hpd"
+  type_id: 0x2e7062fc
+  offset: 448
+}
+member {
+  id: 0xe2acc05f
+  name: "read_int_callback"
+  type_id: 0x0ea52fda
+  offset: 4096
+}
+member {
+  id: 0xeb51ccd7
+  name: "read_iter"
+  type_id: 0x0f08e52a
+  offset: 256
+}
+member {
+  id: 0x64c7d58e
+  name: "read_l"
+  type_id: 0x181ec3a6
+}
+member {
+  id: 0xc6d968d4
+  name: "read_label"
+  type_id: 0x2c481630
+  offset: 384
+}
+member {
+  id: 0xa6a845da
+  name: "read_list"
+  type_id: 0xd3c80119
+  offset: 960
+}
+member {
+  id: 0x4a500d6a
+  name: "read_lock"
+  type_id: 0xf313e71a
+  offset: 512
+}
+member {
+  id: 0x015baead
+  name: "read_merkle_tree_page"
+  type_id: 0x247e1ebf
+  offset: 192
+}
+member {
+  id: 0x9cafdf4b
+  name: "read_misalign"
+  type_id: 0x4585663f
+  offset: 321
+  bitsize: 1
+}
+member {
+  id: 0xe1ac9973
+  name: "read_mmd"
+  type_id: 0x2e895f6c
+  offset: 2944
+}
+member {
+  id: 0xaa297c2d
+  name: "read_mutex"
+  type_id: 0xa7c362b0
+  offset: 320
+}
+member {
+  id: 0x3735cfab
+  name: "read_offset"
+  type_id: 0x2de01d44
+  offset: 448
+}
+member {
+  id: 0xe0bd6d38
+  name: "read_once"
+  type_id: 0x4585663f
+  offset: 12544
+  bitsize: 1
+}
+member {
+  id: 0xd9c40125
+  name: "read_only"
+  type_id: 0x4585663f
+  offset: 3968
+}
+member {
+  id: 0xd9ecf50c
+  name: "read_only"
+  type_id: 0x6d7f5ff6
+  offset: 512
+}
+member {
+  id: 0xd9ecf69e
+  name: "read_only"
+  type_id: 0x6d7f5ff6
+  offset: 7552
+}
+member {
+  id: 0x1cb02422
+  name: "read_page"
+  type_id: 0x2ee76b64
+  offset: 3072
+}
+member {
+  id: 0x62eddcd3
+  name: "read_partial"
+  type_id: 0x4585663f
+  offset: 320
+  bitsize: 1
+}
+member {
+  id: 0x2f8027e8
+  name: "read_pool"
+  type_id: 0xd3c80119
+  offset: 3776
+}
+member {
+  id: 0xef6a3ad0
+  name: "read_pos"
+  type_id: 0x27a7c613
+  offset: 384
+}
+member {
+  id: 0x3373f200
+  name: "read_queue"
+  type_id: 0xd3c80119
+  offset: 3968
+}
+member {
+  id: 0x915d2f62
+  name: "read_raw"
+  type_id: 0x2c497716
+  offset: 128
+}
+member {
+  id: 0xfe8d1585
+  name: "read_raw_multi"
+  type_id: 0x2c4e3e92
+  offset: 192
+}
+member {
+  id: 0x9795d47d
+  name: "read_reg"
+  type_id: 0x0770dca0
+  offset: 1536
+}
+member {
+  id: 0x6ac2a770
+  name: "read_request"
+  type_id: 0x6d7f5ff6
+  offset: 8
+}
+member {
+  id: 0x5aa04b7a
+  name: "read_s64"
+  type_id: 0x29bbceec
+  offset: 1152
+}
+member {
+  id: 0x190c6150
+  name: "read_size"
+  type_id: 0x914dbfdc
+  offset: 2784
+}
+member {
+  id: 0x2addea85
+  name: "read_skb"
+  type_id: 0x2c302bdf
+  offset: 1600
+}
+member {
+  id: 0x07204b63
+  name: "read_sock"
+  type_id: 0x2c01cf9c
+  offset: 1536
+}
+member {
+  id: 0x1ca958e6
+  name: "read_stamp"
+  type_id: 0x92233392
+  offset: 2304
+}
+member {
+  id: 0x1ca95e7f
+  name: "read_stamp"
+  type_id: 0x92233392
+  offset: 384
+}
+member {
+  id: 0x4f66f053
+  name: "read_started"
+  type_id: 0x6720d32f
+  offset: 3904
+}
+member {
+  id: 0x2d43e066
+  name: "read_status"
+  type_id: 0x2ee76b64
+  offset: 2432
+}
+member {
+  id: 0xce77f219
+  name: "read_status_mask"
+  type_id: 0x4585663f
+  offset: 1504
+}
+member {
+  id: 0x729d81e9
+  name: "read_syscalls"
+  type_id: 0xedf277ba
+  offset: 1856
+}
+member {
+  id: 0xa21fa507
+  name: "read_time"
+  type_id: 0x2de218bf
+  offset: 64
+}
+member {
+  id: 0xacad1dbb
+  name: "read_u64"
+  type_id: 0x1dcc0874
+  offset: 1088
+}
+member {
+  id: 0x20931093
+  name: "read_urb"
+  type_id: 0x0130219f
+  offset: 4352
+}
+member {
+  id: 0xc6c74fe8
+  name: "read_urbs"
+  type_id: 0x6ce54884
+  offset: 4608
+}
+member {
+  id: 0x59992c87
+  name: "read_urbs_free"
+  type_id: 0x33756485
+  offset: 4736
+}
+member {
+  id: 0x1cafcc11
+  name: "read_w"
+  type_id: 0x092a0312
+  offset: 64
+}
+member {
+  id: 0x761c260f
+  name: "read_wait"
+  type_id: 0x03913382
+  offset: 4992
+}
+member {
+  id: 0x76cc7582
+  name: "read_wait"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0xda9945e1
+  name: "readable_noinc_reg"
+  type_id: 0x35592596
+  offset: 3328
+}
+member {
+  id: 0xda994bd3
+  name: "readable_noinc_reg"
+  type_id: 0x35592596
+  offset: 576
+}
+member {
+  id: 0xc54371a0
+  name: "readable_reg"
+  type_id: 0x35592596
+  offset: 320
+}
+member {
+  id: 0xc54379f6
+  name: "readable_reg"
+  type_id: 0x35592596
+  offset: 3072
+}
+member {
+  id: 0x7b1ece02
+  name: "readahead"
+  type_id: 0x0cc386c1
+  offset: 256
+}
+member {
+  id: 0x266c4264
+  name: "readbuffers"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0x82e17373
+  name: "reader_lock"
+  type_id: 0xc8b17aa7
+  offset: 192
+}
+member {
+  id: 0xaa1570ba
+  name: "reader_lock_key"
+  type_id: 0x1b44744f
+  offset: 192
+}
+member {
+  id: 0x0dcc5551
+  name: "reader_page"
+  type_id: 0x33b88d23
+  offset: 704
+}
+member {
+  id: 0x28fbab3c
+  name: "readers"
+  type_id: 0x4585663f
+  offset: 928
+}
+member {
+  id: 0xda479e71
+  name: "readio"
+  type_id: 0x0d0374d5
+  offset: 384
+}
+member {
+  id: 0x9c769862
+  name: "readlink"
+  type_id: 0x2cd2a48a
+  offset: 256
+}
+member {
+  id: 0x2498e0fa
+  name: "readpos"
+  type_id: 0x27a7c613
+  offset: 192
+}
+member {
+  id: 0x28e68b29
+  name: "reads"
+  type_id: 0x3a3eb2f9
+  offset: 192
+}
+member {
+  id: 0xa393c648
+  name: "ready"
+  type_id: 0x0eafcf90
+  offset: 1344
+}
+member {
+  id: 0xa393e1e6
+  name: "ready"
+  type_id: 0x0e837004
+  offset: 384
+}
+member {
+  id: 0xa3f01223
+  name: "ready"
+  type_id: 0x6d7f5ff6
+  offset: 264
+}
+member {
+  id: 0xa3f0172f
+  name: "ready"
+  type_id: 0x6d7f5ff6
+  offset: 1944
+}
+member {
+  id: 0xa3f017bd
+  name: "ready"
+  type_id: 0x6d7f5ff6
+  offset: 8
+}
+member {
+  id: 0x6bffa57c
+  name: "ready_for_interrupt_injection"
+  type_id: 0xb3e7bac9
+  offset: 96
+}
+member {
+  id: 0xb8c769bd
+  name: "ready_list"
+  type_id: 0xd3c80119
+  offset: 1920
+}
+member {
+  id: 0xf6bbf3f2
+  name: "ready_playback_urbs"
+  type_id: 0xd3c80119
+  offset: 44160
+}
+member {
+  id: 0x464757ea
+  name: "real"
+  type_id: 0x1b6f9866
+}
+member {
+  id: 0x464df897
+  name: "real"
+  type_id: 0x11c404ba
+  offset: 64
+}
+member {
+  id: 0xdd5a7248
+  name: "real_address"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0x90607691
+  name: "real_blocked"
+  type_id: 0x02097f03
+  offset: 17728
+}
+member {
+  id: 0x046f1e55
+  name: "real_cpus"
+  type_id: 0x99caa0ae
+  offset: 128
+}
+member {
+  id: 0x45304ba5
+  name: "real_cred"
+  type_id: 0x30650ba6
+  offset: 16768
+}
+member {
+  id: 0xd27fca30
+  name: "real_dev"
+  type_id: 0x32a623d7
+  offset: 64
+}
+member {
+  id: 0xd27fced1
+  name: "real_dev"
+  type_id: 0x32a623d7
+}
+member {
+  id: 0xa876fb9d
+  name: "real_edid_checksum"
+  type_id: 0x295c7202
+  offset: 14728
+}
+member {
+  id: 0xf198fa32
+  name: "real_end"
+  type_id: 0x33756485
+  offset: 320
+}
+member {
+  id: 0x56664ab3
+  name: "real_ns_name"
+  type_id: 0x3e10b518
+  offset: 64
+}
+member {
+  id: 0x1e1db947
+  name: "real_num_rx_queues"
+  type_id: 0x4585663f
+  offset: 6304
+}
+member {
+  id: 0xcac448c7
+  name: "real_num_tx_queues"
+  type_id: 0x4585663f
+  offset: 7776
+}
+member {
+  id: 0x20607554
+  name: "real_parent"
+  type_id: 0x1d19a9d5
+  offset: 12800
+}
+member {
+  id: 0xcca17401
+  name: "real_port"
+  type_id: 0x295c7202
+  offset: 35976
+}
+member {
+  id: 0x25756122
+  name: "real_timer"
+  type_id: 0xcd7704bf
+  offset: 1216
+}
+member {
+  id: 0x53bf3aa7
+  name: "realbits"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0xd36420aa
+  name: "reap_ref"
+  type_id: 0x6f1daf87
+  offset: 7616
+}
+member {
+  id: 0xbb549ede
+  name: "reason"
+  type_id: 0x4e0bad92
+  offset: 608
+}
+member {
+  id: 0xbb8bd1e9
+  name: "reason"
+  type_id: 0x914dbfdc
+  offset: 400
+}
+member {
+  id: 0xbbfcbb3e
+  name: "reason"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xbbfcbfdf
+  name: "reason"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x63a5e94a
+  name: "reattach_i3c_dev"
+  type_id: 0x2d3f3c92
+  offset: 192
+}
+member {
+  id: 0xb701b30e
+  name: "reboot"
+  type_id: 0x6720d32f
+  offset: 768
+}
+member {
+  id: 0xf34d97bb
+  name: "reboot_nb"
+  type_id: 0x449a775b
+  offset: 640
+}
+member {
+  id: 0x659c25bc
+  name: "recalc_accuracy"
+  type_id: 0x066635bb
+  offset: 1088
+}
+member {
+  id: 0x9b5bdaf0
+  name: "recalc_rate"
+  type_id: 0x066635bb
+  offset: 640
+}
+member {
+  id: 0x6ac5443f
+  name: "receive_buf"
+  type_id: 0x2c6a38d1
+}
+member {
+  id: 0x6ac7532f
+  name: "receive_buf"
+  type_id: 0x2e7d2876
+}
+member {
+  id: 0x6ae544a6
+  name: "receive_buf"
+  type_id: 0x0c620fb9
+  offset: 768
+}
+member {
+  id: 0x2626a69f
+  name: "receive_buf2"
+  type_id: 0x2f242316
+  offset: 960
+}
+member {
+  id: 0x898bda70
+  name: "receive_room"
+  type_id: 0x4585663f
+  offset: 4576
+}
+member {
+  id: 0x1763503d
+  name: "received"
+  type_id: 0x2e67f25c
+  offset: 640
+}
+member {
+  id: 0x17635f36
+  name: "received"
+  type_id: 0x2e67f25c
+  offset: 576
+}
+member {
+  id: 0x8a09e2e8
+  name: "received_rps"
+  type_id: 0x4585663f
+  offset: 384
+}
+member {
+  id: 0x83d3b529
+  name: "recent_used_cpu"
+  type_id: 0x6720d32f
+  offset: 960
+}
+member {
+  id: 0x91d10d59
+  name: "reciprocal_size"
+  type_id: 0x46fba20b
+  offset: 256
+}
+member {
+  id: 0x2f799fdc
+  name: "reclaim_state"
+  type_id: 0x28a1c669
+  offset: 19328
+}
+member {
+  id: 0xcae142e2
+  name: "reclaim_wait"
+  type_id: 0x8ca95ffa
+  offset: 52544
+}
+member {
+  id: 0x2f1a436f
+  name: "reclaimed"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xaf508177
+  name: "reclaimed_slab"
+  type_id: 0x33756485
+}
+member {
+  id: 0x75073450
+  name: "reconfig_mutex"
+  type_id: 0xa7c362b0
+  offset: 7936
+}
+member {
+  id: 0x319bf24e
+  name: "reconfigure"
+  type_id: 0x2f05fd8b
+  offset: 320
+}
+member {
+  id: 0x605def21
+  name: "reconnect"
+  type_id: 0x2ddf4eb6
+  offset: 384
+}
+member {
+  id: 0x9fc7d460
+  name: "record_disabled"
+  type_id: 0x74d29cf1
+  offset: 64
+}
+member {
+  id: 0x9fc7ddba
+  name: "record_disabled"
+  type_id: 0x74d29cf1
+  offset: 32
+}
+member {
+  id: 0x8a6b6b4e
+  name: "recover"
+  type_id: 0x0e6ab35b
+  offset: 768
+}
+member {
+  id: 0x8a6bb60c
+  name: "recover"
+  type_id: 0x0eb62dc3
+  offset: 576
+}
+member {
+  id: 0x26de94f4
+  name: "recover_bus"
+  type_id: 0x2fb994f1
+}
+member {
+  id: 0xe75c7f73
+  name: "recovery_disabled"
+  type_id: 0x6d7f5ff6
+  offset: 9760
+}
+member {
+  id: 0xb418d3ea
+  name: "recovery_needed"
+  type_id: 0x6d7f5ff6
+  offset: 1960
+}
+member {
+  id: 0xb1e71f03
+  name: "recovery_notifier"
+  type_id: 0x0c24e6e5
+  offset: 832
+}
+member {
+  id: 0x9cfea388
+  name: "recovery_req"
+  type_id: 0x1e820193
+  offset: 2624
+}
+member {
+  id: 0xdd1c49fd
+  name: "recovery_work"
+  type_id: 0x1f3c8679
+  offset: 2048
+}
+member {
+  id: 0x7216ea38
+  name: "recovery_write"
+  type_id: 0x2c377e3c
+  offset: 192
+}
+member {
+  id: 0x6fa74346
+  name: "rectype"
+  type_id: 0x381aadcc
+}
+member {
+  id: 0x9d818dc1
+  name: "recursion"
+  type_id: 0x914dbfdc
+}
+member {
+  id: 0x5ed04984
+  name: "recv"
+  type_id: 0x2c297347
+  offset: 64
+}
+member {
+  id: 0x5ed1adc7
+  name: "recv"
+  type_id: 0x2dc013c2
+  offset: 128
+}
+member {
+  id: 0x5ed396ce
+  name: "recv"
+  type_id: 0x2ffbaa79
+  offset: 576
+}
+member {
+  id: 0x473bb9ee
+  name: "recv_current"
+  type_id: 0x89ea5acf
+  offset: 160
+}
+member {
+  id: 0x0cd354a8
+  name: "recv_event"
+  type_id: 0x054f691a
+  offset: 26176
+}
+member {
+  id: 0x32fffef6
+  name: "recv_page"
+  type_id: 0xedf277ba
+  offset: 256
+}
+member {
+  id: 0xc16c3147
+  name: "recv_seq"
+  type_id: 0x4585663f
+  offset: 32
+  bitsize: 1
+}
+member {
+  id: 0xc16c3978
+  name: "recv_seq"
+  type_id: 0x4585663f
+  offset: 1504
+  bitsize: 1
+}
+member {
+  id: 0x34fceaa4
+  name: "recv_skb"
+  type_id: 0x0fc38cea
+  offset: 2432
+}
+member {
+  id: 0x732441ac
+  name: "recvmsg"
+  type_id: 0x2cd5fc31
+  offset: 1152
+}
+member {
+  id: 0x73249796
+  name: "recvmsg"
+  type_id: 0x2c07bcbe
+  offset: 896
+}
+member {
+  id: 0xfd896136
+  name: "recycle_ibi_slot"
+  type_id: 0x0e506d79
+  offset: 1024
+}
+member {
+  id: 0x4d48f431
+  name: "red"
+  type_id: 0xd529883e
+  offset: 256
+}
+member {
+  id: 0x4d8e8dd6
+  name: "red"
+  type_id: 0x13580d6c
+  offset: 192
+}
+member {
+  id: 0x4dad491a
+  name: "red"
+  type_id: 0x3090e9a7
+  offset: 64
+}
+member {
+  id: 0x8bb53b60
+  name: "red_green_lo"
+  type_id: 0x295c7202
+  offset: 200
+}
+member {
+  id: 0xbc8cd95a
+  name: "red_left_pad"
+  type_id: 0x4585663f
+  offset: 704
+}
+member {
+  id: 0x5233d133
+  name: "red_x"
+  type_id: 0x295c7202
+  offset: 216
+}
+member {
+  id: 0x9df2bc5f
+  name: "red_y"
+  type_id: 0x295c7202
+  offset: 224
+}
+member {
+  id: 0x52d03a2d
+  name: "redir_ingress"
+  type_id: 0x6d7f5ff6
+  offset: 224
+}
+member {
+  id: 0xe4f75ae9
+  name: "redirect"
+  type_id: 0x0f8ea330
+  offset: 704
+}
+member {
+  id: 0x3e555642
+  name: "redirected"
+  type_id: 0xb3e7bac9
+  offset: 29
+  bitsize: 1
+}
+member {
+  id: 0xfb0236d4
+  name: "redist_base"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0xe8134608
+  name: "redist_regions"
+  type_id: 0x2054dcff
+  offset: 128
+}
+member {
+  id: 0x0afac9f7
+  name: "redist_stride"
+  type_id: 0x92233392
+  offset: 640
+}
+member {
+  id: 0x325a63f3
+  name: "redist_vcpu"
+  type_id: 0x08dcfb76
+}
+member {
+  id: 0x9ff3b23a
+  name: "redundant_pic_cnt"
+  type_id: 0xb3e7bac9
+  offset: 80
+}
+member {
+  id: 0xd7e9e4e1
+  name: "redx"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x16a88d75
+  name: "redy"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0x063e1868
+  name: "reenable"
+  type_id: 0x0f2735b4
+  offset: 64
+}
+member {
+  id: 0xe795c368
+  name: "reenable_adv_work"
+  type_id: 0x1f3c8679
+  offset: 17408
+}
+member {
+  id: 0x2526a39a
+  name: "reenable_cmdq"
+  type_id: 0x6d7f5ff6
+  offset: 7552
+}
+member {
+  id: 0xf5a4777f
+  name: "reenable_work"
+  type_id: 0x1f3c8679
+  offset: 10560
+}
+member {
+  id: 0xce1a2758
+  name: "ref"
+  type_id: 0x05003835
+  offset: 384
+}
+member {
+  id: 0xce1c5bef
+  name: "ref"
+  type_id: 0x0379fcff
+  offset: 64
+}
+member {
+  id: 0xce216766
+  name: "ref"
+  type_id: 0x3e40064a
+  offset: 384
+}
+member {
+  id: 0xce6bf08f
+  name: "ref"
+  type_id: 0x74d29cf1
+  offset: 64
+}
+member {
+  id: 0xce6bf46e
+  name: "ref"
+  type_id: 0x74d29cf1
+}
+member {
+  id: 0xce6bf6aa
+  name: "ref"
+  type_id: 0x74d29cf1
+  offset: 1216
+}
+member {
+  id: 0xce703117
+  name: "ref"
+  type_id: 0x6f1daf87
+  offset: 3456
+}
+member {
+  id: 0xce7032e5
+  name: "ref"
+  type_id: 0x6f1daf87
+  offset: 1600
+}
+member {
+  id: 0xce703666
+  name: "ref"
+  type_id: 0x6f1daf87
+  offset: 32
+}
+member {
+  id: 0xce7038e7
+  name: "ref"
+  type_id: 0x6f1daf87
+  offset: 832
+}
+member {
+  id: 0xce703a83
+  name: "ref"
+  type_id: 0x6f1daf87
+  offset: 1920
+}
+member {
+  id: 0xce703b5d
+  name: "ref"
+  type_id: 0x6f1daf87
+}
+member {
+  id: 0xce703d24
+  name: "ref"
+  type_id: 0x6f1daf87
+  offset: 640
+}
+member {
+  id: 0xce703fbc
+  name: "ref"
+  type_id: 0x6f1daf87
+  offset: 64
+}
+member {
+  id: 0xce7803be
+  name: "ref"
+  type_id: 0x6720d32f
+  offset: 2176
+}
+member {
+  id: 0xceb800d2
+  name: "ref"
+  type_id: 0xa722c13e
+  offset: 64
+}
+member {
+  id: 0xceb80908
+  name: "ref"
+  type_id: 0xa722c13e
+  offset: 32
+}
+member {
+  id: 0xceb80cfa
+  name: "ref"
+  type_id: 0xa722c13e
+  offset: 192
+}
+member {
+  id: 0xcef9084d
+  name: "ref"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xd264a237
+  name: "ref_cnt"
+  type_id: 0x6720d32f
+  offset: 1728
+}
+member {
+  id: 0x859f0b38
+  name: "ref_comp"
+  type_id: 0x3fcbf304
+  offset: 10048
+}
+member {
+  id: 0x5321461b
+  name: "ref_count"
+  type_id: 0xa722c13e
+  offset: 2496
+}
+member {
+  id: 0x53214f94
+  name: "ref_count"
+  type_id: 0xa722c13e
+  offset: 1088
+}
+member {
+  id: 0x53e1405b
+  name: "ref_count"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0x53e145ce
+  name: "ref_count"
+  type_id: 0x6720d32f
+  offset: 2688
+}
+member {
+  id: 0x53e14737
+  name: "ref_count"
+  type_id: 0x6720d32f
+  offset: 320
+}
+member {
+  id: 0x210c5bf3
+  name: "ref_ctr_offset"
+  type_id: 0x27a7c613
+  offset: 1600
+}
+member {
+  id: 0x67c165c4
+  name: "ref_deltas"
+  type_id: 0xa84ab8c0
+}
+member {
+  id: 0xf88c23b6
+  name: "ref_frame_sign_bias"
+  type_id: 0xb3e7bac9
+  offset: 1216
+}
+member {
+  id: 0x3d58cb0e
+  name: "ref_frm_delta"
+  type_id: 0xa84ab8c0
+}
+member {
+  id: 0x1e061b2f
+  name: "ref_idx_l0"
+  type_id: 0x60ca2c23
+  offset: 320
+}
+member {
+  id: 0x5f438f29
+  name: "ref_idx_l1"
+  type_id: 0x60ca2c23
+  offset: 448
+}
+member {
+  id: 0xe7b54309
+  name: "ref_obj_id"
+  type_id: 0xc9082b19
+  offset: 224
+}
+member {
+  id: 0xab947c96
+  name: "ref_pic_list0"
+  type_id: 0x6758a90c
+  offset: 160
+}
+member {
+  id: 0xef5428d3
+  name: "ref_pic_list1"
+  type_id: 0x6758a90c
+  offset: 672
+}
+member {
+  id: 0x2ee403bd
+  name: "refaulted"
+  type_id: 0xa4e7cb57
+  offset: 8512
+}
+member {
+  id: 0x8efe1e4f
+  name: "refaults"
+  type_id: 0x607419c2
+  offset: 896
+}
+member {
+  id: 0xb70f0133
+  name: "refcnt"
+  type_id: 0x74d29cf1
+  offset: 128
+}
+member {
+  id: 0xb70f08f1
+  name: "refcnt"
+  type_id: 0x74d29cf1
+}
+member {
+  id: 0xb70f0c10
+  name: "refcnt"
+  type_id: 0x74d29cf1
+  offset: 64
+}
+member {
+  id: 0xb70f0c3a
+  name: "refcnt"
+  type_id: 0x74d29cf1
+  offset: 7936
+}
+member {
+  id: 0xb714c4e6
+  name: "refcnt"
+  type_id: 0x6f1daf87
+  offset: 224
+}
+member {
+  id: 0xb714c9f8
+  name: "refcnt"
+  type_id: 0x6f1daf87
+  offset: 7456
+}
+member {
+  id: 0xb714ccda
+  name: "refcnt"
+  type_id: 0x6f1daf87
+  offset: 512
+}
+member {
+  id: 0xb71cf277
+  name: "refcnt"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0xb71cf37c
+  name: "refcnt"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0xb71cfdbc
+  name: "refcnt"
+  type_id: 0x6720d32f
+  offset: 6208
+}
+member {
+  id: 0xb71cfdc9
+  name: "refcnt"
+  type_id: 0x6720d32f
+  offset: 448
+}
+member {
+  id: 0xb73e584a
+  name: "refcnt"
+  type_id: 0x4585663f
+  offset: 672
+}
+member {
+  id: 0xb74590d4
+  name: "refcnt"
+  type_id: 0x3e40064a
+  offset: 5504
+}
+member {
+  id: 0xb74593a9
+  name: "refcnt"
+  type_id: 0x3e40064a
+  offset: 128
+}
+member {
+  id: 0xb7459a6b
+  name: "refcnt"
+  type_id: 0x3e40064a
+}
+member {
+  id: 0xb7459d1c
+  name: "refcnt"
+  type_id: 0x3e40064a
+  offset: 448
+}
+member {
+  id: 0xb7459d2b
+  name: "refcnt"
+  type_id: 0x3e40064a
+  offset: 3328
+}
+member {
+  id: 0xb7649801
+  name: "refcnt"
+  type_id: 0x1f4573ef
+  offset: 1024
+}
+member {
+  id: 0xb7649f1e
+  name: "refcnt"
+  type_id: 0x1f4573ef
+}
+member {
+  id: 0xb7dcf1d9
+  name: "refcnt"
+  type_id: 0xa722c13e
+  offset: 2368
+}
+member {
+  id: 0xb7dcf1de
+  name: "refcnt"
+  type_id: 0xa722c13e
+  offset: 576
+}
+member {
+  id: 0xb7dcf3b4
+  name: "refcnt"
+  type_id: 0xa722c13e
+  offset: 512
+}
+member {
+  id: 0xb7dcf597
+  name: "refcnt"
+  type_id: 0xa722c13e
+  offset: 32
+}
+member {
+  id: 0xb7dcf673
+  name: "refcnt"
+  type_id: 0xa722c13e
+  offset: 544
+}
+member {
+  id: 0xb7dcf7cb
+  name: "refcnt"
+  type_id: 0xa722c13e
+  offset: 800
+}
+member {
+  id: 0xb7dcf807
+  name: "refcnt"
+  type_id: 0xa722c13e
+  offset: 256
+}
+member {
+  id: 0xb7dcf87e
+  name: "refcnt"
+  type_id: 0xa722c13e
+  offset: 992
+}
+member {
+  id: 0xb7dcf8ac
+  name: "refcnt"
+  type_id: 0xa722c13e
+}
+member {
+  id: 0xb7dcf91c
+  name: "refcnt"
+  type_id: 0xa722c13e
+  offset: 480
+}
+member {
+  id: 0xb7dcf93e
+  name: "refcnt"
+  type_id: 0xa722c13e
+  offset: 384
+}
+member {
+  id: 0xb7dcfa87
+  name: "refcnt"
+  type_id: 0xa722c13e
+  offset: 1184
+}
+member {
+  id: 0xb7dcfa91
+  name: "refcnt"
+  type_id: 0xa722c13e
+  offset: 704
+}
+member {
+  id: 0xb7dcfb16
+  name: "refcnt"
+  type_id: 0xa722c13e
+  offset: 832
+}
+member {
+  id: 0xb7dcfc4d
+  name: "refcnt"
+  type_id: 0xa722c13e
+  offset: 64
+}
+member {
+  id: 0xb7dcfe39
+  name: "refcnt"
+  type_id: 0xa722c13e
+  offset: 7040
+}
+member {
+  id: 0xb7dcff3e
+  name: "refcnt"
+  type_id: 0xa722c13e
+  offset: 928
+}
+member {
+  id: 0xb7dcffdb
+  name: "refcnt"
+  type_id: 0xa722c13e
+  offset: 448
+}
+member {
+  id: 0xb7dcffed
+  name: "refcnt"
+  type_id: 0xa722c13e
+  offset: 672
+}
+member {
+  id: 0xcb342860
+  name: "refcnt_tracker"
+  type_id: 0xb381c899
+  offset: 1152
+}
+member {
+  id: 0xcb342af8
+  name: "refcnt_tracker"
+  type_id: 0xb381c899
+  offset: 9984
+}
+member {
+  id: 0x052431db
+  name: "refcount"
+  type_id: 0xa722c13e
+  offset: 1536
+}
+member {
+  id: 0x0524345b
+  name: "refcount"
+  type_id: 0xa722c13e
+  offset: 800
+}
+member {
+  id: 0x05243b3c
+  name: "refcount"
+  type_id: 0xa722c13e
+}
+member {
+  id: 0x05243c4b
+  name: "refcount"
+  type_id: 0xa722c13e
+  offset: 448
+}
+member {
+  id: 0x053332c8
+  name: "refcount"
+  type_id: 0xb02b353a
+}
+member {
+  id: 0x05333380
+  name: "refcount"
+  type_id: 0xb02b353a
+  offset: 4416
+}
+member {
+  id: 0x054a12f2
+  name: "refcount"
+  type_id: 0xc9082b19
+  offset: 224
+}
+member {
+  id: 0x05c691a0
+  name: "refcount"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x05e43236
+  name: "refcount"
+  type_id: 0x6720d32f
+  offset: 512
+}
+member {
+  id: 0x05ec00b3
+  name: "refcount"
+  type_id: 0x6f1daf87
+  offset: 64
+}
+member {
+  id: 0x05ec0302
+  name: "refcount"
+  type_id: 0x6f1daf87
+  offset: 1472
+}
+member {
+  id: 0x05ec0325
+  name: "refcount"
+  type_id: 0x6f1daf87
+  offset: 448
+}
+member {
+  id: 0x05ec0452
+  name: "refcount"
+  type_id: 0x6f1daf87
+}
+member {
+  id: 0x05ec0a8d
+  name: "refcount"
+  type_id: 0x6f1daf87
+  offset: 544
+}
+member {
+  id: 0x05ec0d90
+  name: "refcount"
+  type_id: 0x6f1daf87
+  offset: 128
+}
+member {
+  id: 0x05f7c1c7
+  name: "refcount"
+  type_id: 0x74d29cf1
+  offset: 896
+}
+member {
+  id: 0x05f7c213
+  name: "refcount"
+  type_id: 0x74d29cf1
+  offset: 576
+}
+member {
+  id: 0x05f7c6b0
+  name: "refcount"
+  type_id: 0x74d29cf1
+  offset: 3776
+}
+member {
+  id: 0x05f7cb61
+  name: "refcount"
+  type_id: 0x74d29cf1
+}
+member {
+  id: 0x0e5e4cec
+  name: "reference_mode"
+  type_id: 0xb3e7bac9
+  offset: 1280
+}
+member {
+  id: 0x9d9d3bba
+  name: "reference_ts"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0xe8ffd91c
+  name: "refile_seq"
+  type_id: 0xeb90906e
+  offset: 768
+}
+member {
+  id: 0xdb10a286
+  name: "refill_irqwork"
+  type_id: 0xb95bf932
+  offset: 64
+}
+member {
+  id: 0xb5b19e25
+  name: "reflect"
+  type_id: 0x0dcd01f8
+  offset: 512
+}
+member {
+  id: 0xd8728415
+  name: "refresh"
+  type_id: 0x6720d32f
+  offset: 384
+}
+member {
+  id: 0xd8dca99e
+  name: "refresh"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x80b72eb7
+  name: "refresh_specified"
+  type_id: 0x6d7f5ff6
+  offset: 264
+}
+member {
+  id: 0xaa1496a4
+  name: "refresh_ts"
+  type_id: 0x33756485
+}
+member {
+  id: 0x9a091ac6
+  name: "refs"
+  type_id: 0x5e8dc7f4
+  offset: 512
+}
+member {
+  id: 0x9a23499a
+  name: "refs"
+  type_id: 0x74d29cf1
+  offset: 1024
+}
+member {
+  id: 0x9a234e2e
+  name: "refs"
+  type_id: 0x74d29cf1
+  offset: 256
+}
+member {
+  id: 0x9a234e85
+  name: "refs"
+  type_id: 0x74d29cf1
+}
+member {
+  id: 0x9a538ff0
+  name: "refs"
+  type_id: 0x041d6b3e
+  offset: 10944
+}
+member {
+  id: 0x9a69dc1f
+  name: "refs"
+  type_id: 0x3e40064a
+}
+member {
+  id: 0x9ae7b05b
+  name: "refs"
+  type_id: 0xb02b353a
+  offset: 448
+}
+member {
+  id: 0x9af0b7aa
+  name: "refs"
+  type_id: 0xa722c13e
+  offset: 576
+}
+member {
+  id: 0x9af0bed8
+  name: "refs"
+  type_id: 0xa722c13e
+}
+member {
+  id: 0x6a1a3c2a
+  name: "refs_by_desc"
+  type_id: 0xeb923a9b
+  offset: 256
+}
+member {
+  id: 0x349357c4
+  name: "refs_by_node"
+  type_id: 0xeb923a9b
+  offset: 320
+}
+member {
+  id: 0x0f0503bf
+  name: "reg"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x0f05075e
+  name: "reg"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x0f050e9c
+  name: "reg"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x0f27a2eb
+  name: "reg"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x0f27a60a
+  name: "reg"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x0f27ab99
+  name: "reg"
+  type_id: 0x6720d32f
+  offset: 576
+}
+member {
+  id: 0x0f412c26
+  name: "reg"
+  type_id: 0x01ae1e33
+}
+member {
+  id: 0x0f4b20e6
+  name: "reg"
+  type_id: 0x0baa70a7
+  offset: 768
+}
+member {
+  id: 0x0f6f7f0d
+  name: "reg"
+  type_id: 0x2ff5fc59
+  offset: 192
+}
+member {
+  id: 0x36745faf
+  name: "reg2"
+  type_id: 0x6720d32f
+  offset: 160
+}
+member {
+  id: 0x648a91cd
+  name: "reg_base"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0x64d7a0cf
+  name: "reg_base"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0x64d7addd
+  name: "reg_base"
+  type_id: 0x4585663f
+  offset: 608
+}
+member {
+  id: 0xccc2c74d
+  name: "reg_bits"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x22cd20dd
+  name: "reg_bytes"
+  type_id: 0xf435685e
+  offset: 64
+}
+member {
+  id: 0x5d2b66b4
+  name: "reg_clk"
+  type_id: 0x3dcee85d
+  offset: 960
+}
+member {
+  id: 0x6ac550a9
+  name: "reg_clr"
+  type_id: 0x18bd6530
+  offset: 1856
+}
+member {
+  id: 0xdc032ec7
+  name: "reg_dat"
+  type_id: 0x18bd6530
+  offset: 1728
+}
+member {
+  id: 0xd6e554b5
+  name: "reg_data"
+  type_id: 0x18bd6530
+  offset: 10496
+}
+member {
+  id: 0x4c3721c1
+  name: "reg_defaults"
+  type_id: 0x306fdf04
+  offset: 1792
+}
+member {
+  id: 0x4c3a3764
+  name: "reg_defaults"
+  type_id: 0x3d7e4e89
+  offset: 4672
+}
+member {
+  id: 0xcd8c8bfa
+  name: "reg_defaults_raw"
+  type_id: 0x391f15ea
+  offset: 1920
+}
+member {
+  id: 0xcd8c8d0c
+  name: "reg_defaults_raw"
+  type_id: 0x391f15ea
+  offset: 4736
+}
+member {
+  id: 0x30dd92f2
+  name: "reg_dir_in"
+  type_id: 0x18bd6530
+  offset: 1984
+}
+member {
+  id: 0xe5bbf069
+  name: "reg_dir_out"
+  type_id: 0x18bd6530
+  offset: 1920
+}
+member {
+  id: 0x447be858
+  name: "reg_downshift"
+  type_id: 0xf435685e
+  offset: 192
+}
+member {
+  id: 0x44e8fce8
+  name: "reg_downshift"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x87846ca3
+  name: "reg_format_endian"
+  type_id: 0xbbd6353d
+  offset: 2240
+}
+member {
+  id: 0xf5244d0e
+  name: "reg_format_endian_default"
+  type_id: 0xbbd6353d
+  offset: 800
+}
+member {
+  id: 0x33ab1a91
+  name: "reg_noinc_read"
+  type_id: 0xb52c47f1
+  offset: 576
+}
+member {
+  id: 0x66f67564
+  name: "reg_noinc_write"
+  type_id: 0xf71b6f7a
+  offset: 320
+}
+member {
+  id: 0xbf5b01e7
+  name: "reg_notifier"
+  type_id: 0x0fb82403
+  offset: 3008
+}
+member {
+  id: 0x5b0ec69f
+  name: "reg_num"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0x386b59a8
+  name: "reg_num_mask"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0x83dea94b
+  name: "reg_offset"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xddab36b7
+  name: "reg_pmmir"
+  type_id: 0x92233392
+  offset: 4352
+}
+member {
+  id: 0x7288a0e4
+  name: "reg_read"
+  type_id: 0x321675e0
+  offset: 512
+}
+member {
+  id: 0x729688c2
+  name: "reg_read"
+  type_id: 0x2c3fed4f
+  offset: 896
+}
+member {
+  id: 0x72968fb5
+  name: "reg_read"
+  type_id: 0x2c3fed4f
+  offset: 3776
+}
+member {
+  id: 0x72d2154a
+  name: "reg_read"
+  type_id: 0x68aafef4
+  offset: 704
+}
+member {
+  id: 0x72d21e69
+  name: "reg_read"
+  type_id: 0x68aafef4
+  offset: 8512
+}
+member {
+  id: 0x53bd41b8
+  name: "reg_readl"
+  type_id: 0x1a65e52c
+  offset: 128
+}
+member {
+  id: 0xaf393dec
+  name: "reg_rules"
+  type_id: 0xd09d338b
+  offset: 224
+}
+member {
+  id: 0x934b1c23
+  name: "reg_set"
+  type_id: 0x18bd6530
+  offset: 1792
+}
+member {
+  id: 0x714b2626
+  name: "reg_shift"
+  type_id: 0x6720d32f
+  offset: 4288
+}
+member {
+  id: 0x2f69ec99
+  name: "reg_state"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0xe7272450
+  name: "reg_state"
+  type_id: 0x4f34306c
+  offset: 10112
+  bitsize: 8
+}
+member {
+  id: 0x31e9faad
+  name: "reg_stride"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0x31e9ff2d
+  name: "reg_stride"
+  type_id: 0x6720d32f
+  offset: 4320
+}
+member {
+  id: 0xc921bbd4
+  name: "reg_stride_order"
+  type_id: 0x6720d32f
+  offset: 4352
+}
+member {
+  id: 0x1c9af454
+  name: "reg_type"
+  type_id: 0x721b7fe3
+}
+member {
+  id: 0x1c9af96f
+  name: "reg_type"
+  type_id: 0x721b7fe3
+  offset: 32
+}
+member {
+  id: 0xb584bb09
+  name: "reg_update_bits"
+  type_id: 0x2d75128d
+  offset: 384
+}
+member {
+  id: 0xb585f2d9
+  name: "reg_update_bits"
+  type_id: 0x2c3a4f8a
+  offset: 1024
+}
+member {
+  id: 0xb585f716
+  name: "reg_update_bits"
+  type_id: 0x2c3a4f8a
+  offset: 3904
+}
+member {
+  id: 0xa83c4e04
+  name: "reg_val"
+  type_id: 0x562614d8
+}
+member {
+  id: 0xa861c260
+  name: "reg_val"
+  type_id: 0x0baa70a7
+}
+member {
+  id: 0x690f00a5
+  name: "reg_write"
+  type_id: 0xbf71f27b
+  offset: 768
+}
+member {
+  id: 0x690f0425
+  name: "reg_write"
+  type_id: 0xbf71f27b
+  offset: 8576
+}
+member {
+  id: 0x699c4af4
+  name: "reg_write"
+  type_id: 0x2c3a0a0f
+  offset: 3840
+}
+member {
+  id: 0x699c4b00
+  name: "reg_write"
+  type_id: 0x2c3a0a0f
+  offset: 960
+}
+member {
+  id: 0x69cdbb0e
+  name: "reg_write"
+  type_id: 0x7dc25cb9
+  offset: 256
+}
+member {
+  id: 0x9adda697
+  name: "reg_writel"
+  type_id: 0x023e1217
+  offset: 192
+}
+member {
+  id: 0x4ace638f
+  name: "regd"
+  type_id: 0x3c926729
+  offset: 3072
+}
+member {
+  id: 0xd838f374
+  name: "regdump_len"
+  type_id: 0xe62ebf07
+  offset: 1536
+}
+member {
+  id: 0xa7cf55f2
+  name: "regen_max_retry"
+  type_id: 0x0faae5b1
+  offset: 544
+}
+member {
+  id: 0x46cfd35a
+  name: "regex"
+  type_id: 0x12dd3ba6
+  offset: 128
+}
+member {
+  id: 0xbb2d7141
+  name: "regfunc"
+  type_id: 0x2df0016c
+  offset: 384
+}
+member {
+  id: 0x2526b55e
+  name: "region"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x8a6499cf
+  name: "region_align"
+  type_id: 0xc9082b19
+  offset: 384
+}
+member {
+  id: 0x50b4abe8
+  name: "region_limit"
+  type_id: 0x92233392
+  offset: 448
+}
+member {
+  id: 0x4fd31bbd
+  name: "region_list"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0x7d12e697
+  name: "region_mask"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x4e19f41c
+  name: "regions"
+  type_id: 0x3e3a4a9e
+  offset: 128
+}
+member {
+  id: 0xa45f1ee8
+  name: "register_default_trap_handler"
+  type_id: 0x2eb38aa4
+  offset: 1088
+}
+member {
+  id: 0x0fb6ecfb
+  name: "register_em"
+  type_id: 0x0eafcf90
+  offset: 1600
+}
+member {
+  id: 0xa7bbdea7
+  name: "register_host_perm_fault_handler"
+  type_id: 0x2f36a854
+  offset: 832
+}
+member {
+  id: 0x43b06c02
+  name: "register_host_smc_handler"
+  type_id: 0x2eb38aa4
+  offset: 1024
+}
+member {
+  id: 0x51e5dd3a
+  name: "register_hyp_panic_notifier"
+  type_id: 0x2d0b7a8e
+  offset: 1280
+}
+member {
+  id: 0x29e43d16
+  name: "register_illegal_abt_notifier"
+  type_id: 0x2d0b7a8e
+  offset: 1152
+}
+member {
+  id: 0x441b519d
+  name: "register_op"
+  type_id: 0xb914bfab
+}
+member {
+  id: 0x32f8a9ba
+  name: "register_psci_notifier"
+  type_id: 0x2d7e9462
+  offset: 1216
+}
+member {
+  id: 0x09b6e3f8
+  name: "register_rwsem"
+  type_id: 0x28b9ec9a
+  offset: 256
+}
+member {
+  id: 0xb8647f45
+  name: "register_serial_driver"
+  type_id: 0x2d232ccd
+  offset: 192
+}
+member {
+  id: 0x5137216f
+  name: "registered"
+  type_id: 0x6d7f5ff6
+  offset: 20160
+}
+member {
+  id: 0x5137224a
+  name: "registered"
+  type_id: 0x6d7f5ff6
+  offset: 19456
+}
+member {
+  id: 0x5137228d
+  name: "registered"
+  type_id: 0x6d7f5ff6
+  offset: 8832
+}
+member {
+  id: 0x513724dc
+  name: "registered"
+  type_id: 0x6d7f5ff6
+  offset: 360
+}
+member {
+  id: 0x513724f7
+  name: "registered"
+  type_id: 0x6d7f5ff6
+  offset: 10432
+}
+member {
+  id: 0x51372882
+  name: "registered"
+  type_id: 0x6d7f5ff6
+  offset: 976
+}
+member {
+  id: 0x51372a1e
+  name: "registered"
+  type_id: 0x6d7f5ff6
+  offset: 2160
+}
+member {
+  id: 0x51372a65
+  name: "registered"
+  type_id: 0x6d7f5ff6
+  offset: 640
+}
+member {
+  id: 0x51372bdb
+  name: "registered"
+  type_id: 0x6d7f5ff6
+  offset: 320
+}
+member {
+  id: 0x51372e71
+  name: "registered"
+  type_id: 0x6d7f5ff6
+  offset: 144
+}
+member {
+  id: 0x51372f38
+  name: "registered"
+  type_id: 0x6d7f5ff6
+  offset: 224
+}
+member {
+  id: 0x513d71ad
+  name: "registered"
+  type_id: 0x6720d32f
+  offset: 704
+}
+member {
+  id: 0x5177bf18
+  name: "registered"
+  type_id: 0x2dec5b18
+}
+member {
+  id: 0x9d3e401b
+  name: "registered"
+  type_id: 0x4585663f
+  bitsize: 1
+}
+member {
+  id: 0x9d3e42bd
+  name: "registered"
+  type_id: 0x4585663f
+  offset: 197
+  bitsize: 1
+}
+member {
+  id: 0x9d3e4666
+  name: "registered"
+  type_id: 0x4585663f
+  offset: 1280
+  bitsize: 1
+}
+member {
+  id: 0x9d3e49d9
+  name: "registered"
+  type_id: 0x4585663f
+  offset: 128
+  bitsize: 1
+}
+member {
+  id: 0x9d529e18
+  name: "registered"
+  type_id: 0x295c7202
+  offset: 994
+  bitsize: 1
+}
+member {
+  id: 0xa5f16598
+  name: "registered_rings"
+  type_id: 0x4a095829
+  offset: 192
+}
+member {
+  id: 0x8976bc74
+  name: "registering"
+  type_id: 0x6d7f5ff6
+  offset: 984
+}
+member {
+  id: 0x45bcfae8
+  name: "registration_state"
+  type_id: 0x0203f20d
+  offset: 1344
+}
+member {
+  id: 0x36e6f05e
+  name: "regmap"
+  type_id: 0x09a83f1c
+  offset: 128
+}
+member {
+  id: 0x36e6f4e4
+  name: "regmap"
+  type_id: 0x09a83f1c
+  offset: 9344
+}
+member {
+  id: 0x36e6f937
+  name: "regmap"
+  type_id: 0x09a83f1c
+  offset: 256
+}
+member {
+  id: 0x36e6f99c
+  name: "regmap"
+  type_id: 0x09a83f1c
+}
+member {
+  id: 0x36e6fe83
+  name: "regmap"
+  type_id: 0x09a83f1c
+  offset: 1024
+}
+member {
+  id: 0x800bad6d
+  name: "regs"
+  type_id: 0x30d28b09
+  offset: 1600
+}
+member {
+  id: 0x800fa8ae
+  name: "regs"
+  type_id: 0x34def0b7
+}
+member {
+  id: 0x8023c171
+  name: "regs"
+  type_id: 0x18bd6530
+  offset: 3456
+}
+member {
+  id: 0x802b092a
+  name: "regs"
+  type_id: 0x107f740f
+}
+member {
+  id: 0x803a5090
+  name: "regs"
+  type_id: 0x01222f7d
+  offset: 64
+}
+member {
+  id: 0x803a53b6
+  name: "regs"
+  type_id: 0x01222f7d
+  offset: 320
+}
+member {
+  id: 0x80627a33
+  name: "regs"
+  type_id: 0x590c6dd8
+}
+member {
+  id: 0x80790d43
+  name: "regs"
+  type_id: 0x42755f51
+  offset: 2112
+}
+member {
+  id: 0x808c0b9c
+  name: "regs"
+  type_id: 0xb77dc255
+}
+member {
+  id: 0x8093ffcd
+  name: "regs"
+  type_id: 0xa889935f
+}
+member {
+  id: 0x80ec47e6
+  name: "regs"
+  type_id: 0xd731b823
+}
+member {
+  id: 0x80f111bb
+  name: "regs"
+  type_id: 0xca67e5f6
+}
+member {
+  id: 0x21d1f57f
+  name: "regs_intr"
+  type_id: 0x63bbe8bf
+  offset: 1216
+}
+member {
+  id: 0xe142387e
+  name: "regs_user"
+  type_id: 0x63bbe8bf
+  offset: 1088
+}
+member {
+  id: 0xf762467b
+  name: "regset_list"
+  type_id: 0xd3c80119
+  offset: 59072
+}
+member {
+  id: 0x8b19cebf
+  name: "regshift"
+  type_id: 0x5d8155a5
+  offset: 1480
+}
+member {
+  id: 0xbd8dbda2
+  name: "regulator"
+  type_id: 0x01ae1e33
+  offset: 448
+}
+member {
+  id: 0x3b1ab314
+  name: "regulator_count"
+  type_id: 0x6720d32f
+  offset: 3136
+}
+member {
+  id: 0xbfacee57
+  name: "regulator_enabled"
+  type_id: 0x6d7f5ff6
+  offset: 11712
+}
+member {
+  id: 0x091bbbc6
+  name: "regulator_init"
+  type_id: 0x2c7bd73f
+  offset: 1984
+}
+member {
+  id: 0xbad48ee7
+  name: "regulator_names"
+  type_id: 0x3e75499e
+  offset: 384
+}
+member {
+  id: 0x8d0e7d7e
+  name: "regulators"
+  type_id: 0x344f6972
+}
+member {
+  id: 0x8d30c638
+  name: "regulators"
+  type_id: 0x0afbbe2b
+  offset: 3072
+}
+member {
+  id: 0x341037db
+  name: "regulators_node"
+  type_id: 0x3e10b518
+  offset: 256
+}
+member {
+  id: 0x73ce8bb3
+  name: "regulatory_flags"
+  type_id: 0xc9082b19
+  offset: 832
+}
+member {
+  id: 0xaa056b0f
+  name: "rehash"
+  type_id: 0x0f626ee5
+  offset: 1472
+}
+member {
+  id: 0x7103f619
+  name: "reinit_notify"
+  type_id: 0x0ece1cac
+  offset: 1408
+}
+member {
+  id: 0xbea26762
+  name: "reinit_uhs"
+  type_id: 0x6d7f5ff6
+  offset: 6288
+}
+member {
+  id: 0x20af3fb1
+  name: "reject"
+  type_id: 0x2da5a6af
+  offset: 384
+}
+member {
+  id: 0x20f644f9
+  name: "reject"
+  type_id: 0x74d29cf1
+  offset: 160
+}
+member {
+  id: 0x020eccd3
+  name: "reject_list"
+  type_id: 0xd3c80119
+  offset: 29312
+}
+member {
+  id: 0x904c6fcf
+  name: "reject_message"
+  type_id: 0x3e10b518
+}
+member {
+  id: 0xdc7effff
+  name: "reject_nh"
+  type_id: 0x6d7f5ff6
+  offset: 200
+}
+member {
+  id: 0xe91e5dbc
+  name: "reject_unknown"
+  type_id: 0x4585663f
+  offset: 4704
+  bitsize: 1
+}
+member {
+  id: 0x0613b106
+  name: "rejected"
+  type_id: 0xd5df6730
+  offset: 320
+}
+member {
+  id: 0x06544a3e
+  name: "rejected"
+  type_id: 0x92233392
+  offset: 256
+}
+member {
+  id: 0x06ab1232
+  name: "rejected"
+  type_id: 0x6d7f5ff6
+  offset: 7936
+}
+member {
+  id: 0x11d346c6
+  name: "rel_param"
+  type_id: 0x295c7202
+  offset: 32
+}
+member {
+  id: 0xbaade3aa
+  name: "rel_sectors"
+  type_id: 0x295c7202
+  offset: 24
+}
+member {
+  id: 0xa3374b46
+  name: "related_cpus"
+  type_id: 0x99caa0ae
+  offset: 64
+}
+member {
+  id: 0x4506118c
+  name: "relative_rssi"
+  type_id: 0x29b77961
+  offset: 840
+}
+member {
+  id: 0x01e1653f
+  name: "relative_rssi_set"
+  type_id: 0x6d7f5ff6
+  offset: 832
+}
+member {
+  id: 0xc4be0498
+  name: "relax"
+  type_id: 0x0e1db267
+  offset: 128
+}
+member {
+  id: 0x1ba7b965
+  name: "relax_count"
+  type_id: 0x33756485
+  offset: 1344
+}
+member {
+  id: 0x63eb9a3b
+  name: "relbit"
+  type_id: 0xb914bfab
+  offset: 1152
+}
+member {
+  id: 0x63f7ea9e
+  name: "relbit"
+  type_id: 0xa562355d
+  offset: 960
+}
+member {
+  id: 0xae6647ee
+  name: "release"
+  type_id: 0xfeb89bd6
+  offset: 1040
+}
+member {
+  id: 0xae940fa1
+  name: "release"
+  type_id: 0x0cfd9180
+  offset: 256
+}
+member {
+  id: 0xae947bbf
+  name: "release"
+  type_id: 0x0c892400
+}
+member {
+  id: 0xae94b5a3
+  name: "release"
+  type_id: 0x0c45054d
+  offset: 704
+}
+member {
+  id: 0xae94ca2b
+  name: "release"
+  type_id: 0x0c307972
+  offset: 192
+}
+member {
+  id: 0xae94e729
+  name: "release"
+  type_id: 0x0c15b27a
+}
+member {
+  id: 0xae95664d
+  name: "release"
+  type_id: 0x0d947d59
+  offset: 256
+}
+member {
+  id: 0xae95b968
+  name: "release"
+  type_id: 0x0d4cec11
+  offset: 1024
+}
+member {
+  id: 0xae95ba96
+  name: "release"
+  type_id: 0x0d4cec11
+  offset: 64
+}
+member {
+  id: 0xae95ec03
+  name: "release"
+  type_id: 0x0d104a83
+  offset: 8704
+}
+member {
+  id: 0xae95f33a
+  name: "release"
+  type_id: 0x0d066629
+  offset: 320
+}
+member {
+  id: 0xae963ae1
+  name: "release"
+  type_id: 0x0ec2dc62
+  offset: 896
+}
+member {
+  id: 0xae964f42
+  name: "release"
+  type_id: 0x0ebaae79
+  offset: 448
+}
+member {
+  id: 0xae965541
+  name: "release"
+  type_id: 0x0ea826cf
+  offset: 9920
+}
+member {
+  id: 0xae965847
+  name: "release"
+  type_id: 0x0eaa77b7
+  offset: 256
+}
+member {
+  id: 0xae966192
+  name: "release"
+  type_id: 0x0e93a255
+  offset: 256
+}
+member {
+  id: 0xae9668e1
+  name: "release"
+  type_id: 0x0e93a255
+  offset: 6464
+}
+member {
+  id: 0xae96714d
+  name: "release"
+  type_id: 0x0e8b1f30
+  offset: 192
+}
+member {
+  id: 0xae96759d
+  name: "release"
+  type_id: 0x0e86946f
+  offset: 384
+}
+member {
+  id: 0xae96d58d
+  name: "release"
+  type_id: 0x0e23f7e9
+  offset: 64
+}
+member {
+  id: 0xae96f942
+  name: "release"
+  type_id: 0x0e09e4c0
+  offset: 704
+}
+member {
+  id: 0xae971adb
+  name: "release"
+  type_id: 0x0fe089de
+  offset: 192
+}
+member {
+  id: 0xae975adb
+  name: "release"
+  type_id: 0x0fa358e7
+  offset: 512
+}
+member {
+  id: 0xae9777b5
+  name: "release"
+  type_id: 0x0f852e4a
+}
+member {
+  id: 0xae979233
+  name: "release"
+  type_id: 0x0f67b75e
+  offset: 1024
+}
+member {
+  id: 0xae979e29
+  name: "release"
+  type_id: 0x0f626ee5
+  offset: 1152
+}
+member {
+  id: 0xae97a5b3
+  name: "release"
+  type_id: 0x0f5e5d84
+  offset: 2368
+}
+member {
+  id: 0xae97f307
+  name: "release"
+  type_id: 0x0f019c55
+}
+member {
+  id: 0xaea902ed
+  name: "release"
+  type_id: 0x31f49752
+  offset: 64
+}
+member {
+  id: 0xaeb40d5a
+  name: "release"
+  type_id: 0x2cf603f0
+  offset: 128
+}
+member {
+  id: 0xaeb4854e
+  name: "release"
+  type_id: 0x2c7ea7c2
+  offset: 576
+}
+member {
+  id: 0xaeb48b4b
+  name: "release"
+  type_id: 0x2c7ea7c2
+  offset: 448
+}
+member {
+  id: 0xaeb4a536
+  name: "release"
+  type_id: 0x2c50b20c
+  offset: 1024
+}
+member {
+  id: 0xaeb4a76b
+  name: "release"
+  type_id: 0x2c5ee8ff
+  offset: 512
+}
+member {
+  id: 0xaeb5c308
+  name: "release"
+  type_id: 0x2d30dbe4
+  offset: 4416
+}
+member {
+  id: 0xaeb63cec
+  name: "release"
+  type_id: 0x2eca967d
+  offset: 64
+}
+member {
+  id: 0xaeb73635
+  name: "release"
+  type_id: 0x2fc40583
+  offset: 256
+}
+member {
+  id: 0xaeb78c25
+  name: "release"
+  type_id: 0x2f764d18
+  offset: 960
+}
+member {
+  id: 0xe8e1b292
+  name: "release_agent_path"
+  type_id: 0x8e7b8b93
+  offset: 13856
+}
+member {
+  id: 0x4bfd1e09
+  name: "release_agent_work"
+  type_id: 0x1f3c8679
+  offset: 8960
+}
+member {
+  id: 0x6011f2ea
+  name: "release_cb"
+  type_id: 0x0f626ee5
+  offset: 1280
+}
+member {
+  id: 0xcb4ea02a
+  name: "release_channel"
+  type_id: 0x2f8ebbca
+  offset: 64
+}
+member {
+  id: 0x06fc76ed
+  name: "release_completion"
+  type_id: 0x0562c566
+  offset: 12480
+}
+member {
+  id: 0x20045421
+  name: "release_data"
+  type_id: 0x18bd6530
+  offset: 8064
+}
+member {
+  id: 0x8f7df74a
+  name: "release_device"
+  type_id: 0x0e93a255
+  offset: 192
+}
+member {
+  id: 0xe1c924c3
+  name: "release_dqblk"
+  type_id: 0x2e103219
+  offset: 384
+}
+member {
+  id: 0xc23f7842
+  name: "release_dquot"
+  type_id: 0x2e103219
+  offset: 256
+}
+member {
+  id: 0xb2cc8a16
+  name: "release_dw"
+  type_id: 0xf1159c31
+  offset: 448
+}
+member {
+  id: 0xbf22c304
+  name: "release_fn"
+  type_id: 0x0d3d3eae
+  offset: 8000
+}
+member {
+  id: 0xf40b5721
+  name: "release_folio"
+  type_id: 0x37df84bf
+  offset: 576
+}
+member {
+  id: 0x860f7c9c
+  name: "release_irq"
+  type_id: 0x0f7ac5c1
+  offset: 64
+}
+member {
+  id: 0x640da2dc
+  name: "release_notify"
+  type_id: 0x0cf0f1be
+  offset: 832
+}
+member {
+  id: 0x5577dc86
+  name: "release_port"
+  type_id: 0x0ebd5484
+  offset: 1216
+}
+member {
+  id: 0x7ae460ab
+  name: "release_work"
+  type_id: 0x1f3c8679
+  offset: 3456
+}
+member {
+  id: 0x7ae46ae1
+  name: "release_work"
+  type_id: 0x1f3c8679
+}
+member {
+  id: 0x7ae46d96
+  name: "release_work"
+  type_id: 0x1f3c8679
+  offset: 448
+}
+member {
+  id: 0x79d263fe
+  name: "released"
+  type_id: 0x6d7f5ff6
+  offset: 896
+}
+member {
+  id: 0x7b82f804
+  name: "released"
+  type_id: 0x6d7f5ff6
+  offset: 1345
+  bitsize: 1
+}
+member {
+  id: 0x6b5c80f0
+  name: "releasing"
+  type_id: 0x6d7f5ff6
+  offset: 20176
+}
+member {
+  id: 0xc76ee726
+  name: "relinquish_port"
+  type_id: 0x0c868f26
+  offset: 1536
+}
+member {
+  id: 0x88c18b9a
+  name: "relocs"
+  type_id: 0x18934663
+  offset: 512
+}
+member {
+  id: 0x5069f47b
+  name: "rem_len"
+  type_id: 0xe8034002
+  offset: 32
+}
+member {
+  id: 0x8e6a55b7
+  name: "remainder_mask"
+  type_id: 0x92233392
+  offset: 192
+}
+member {
+  id: 0x081d3bfa
+  name: "remap_file_range"
+  type_id: 0x01cecb1b
+  offset: 1920
+}
+member {
+  id: 0x00a993ec
+  name: "remcsum_offload"
+  type_id: 0xb3e7bac9
+  offset: 28
+  bitsize: 1
+}
+member {
+  id: 0x7e1d61b2
+  name: "remote"
+  type_id: 0x914dbfdc
+  offset: 160
+}
+member {
+  id: 0xb37d3960
+  name: "remote_acc_lat"
+  type_id: 0xe62ebf07
+  offset: 2112
+}
+member {
+  id: 0x9a22f566
+  name: "remote_addr"
+  type_id: 0x14637955
+  offset: 7040
+}
+member {
+  id: 0x07f9200a
+  name: "remote_amp_id"
+  type_id: 0xb3e7bac9
+  offset: 1472
+}
+member {
+  id: 0x55e76066
+  name: "remote_auth"
+  type_id: 0xb3e7bac9
+  offset: 3848
+}
+member {
+  id: 0x57de2881
+  name: "remote_cap"
+  type_id: 0xb3e7bac9
+  offset: 3840
+}
+member {
+  id: 0x4a94fedb
+  name: "remote_fixed_chan"
+  type_id: 0xb3e7bac9
+  offset: 192
+}
+member {
+  id: 0xa91ea0c5
+  name: "remote_flush_to"
+  type_id: 0xe62ebf07
+  offset: 2144
+}
+member {
+  id: 0xb58f02ec
+  name: "remote_id"
+  type_id: 0xb3e7bac9
+  offset: 3856
+}
+member {
+  id: 0xb58f0395
+  name: "remote_id"
+  type_id: 0xb3e7bac9
+  offset: 2048
+}
+member {
+  id: 0x1d38fb44
+  name: "remote_max_tx"
+  type_id: 0xb3e7bac9
+  offset: 1872
+}
+member {
+  id: 0x08fe5578
+  name: "remote_mps"
+  type_id: 0xe8034002
+  offset: 1888
+}
+member {
+  id: 0x690d561b
+  name: "remote_msdu"
+  type_id: 0xe8034002
+  offset: 2064
+}
+member {
+  id: 0x17a11866
+  name: "remote_oob_data"
+  type_id: 0xd3c80119
+  offset: 30080
+}
+member {
+  id: 0xa3daa863
+  name: "remote_sdu_itime"
+  type_id: 0xe62ebf07
+  offset: 2080
+}
+member {
+  id: 0x3cacc052
+  name: "remote_stype"
+  type_id: 0xb3e7bac9
+  offset: 2056
+}
+member {
+  id: 0x8726cc6c
+  name: "remote_tlb_flush"
+  type_id: 0x92233392
+}
+member {
+  id: 0xe4dfd298
+  name: "remote_tlb_flush_requests"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0x39638edc
+  name: "remote_tx_win"
+  type_id: 0xe8034002
+  offset: 1856
+}
+member {
+  id: 0x01c9719c
+  name: "remount_fs"
+  type_id: 0x2f8df7dd
+  offset: 896
+}
+member {
+  id: 0x430bd351
+  name: "removable"
+  type_id: 0x9d5be0f6
+  offset: 6720
+}
+member {
+  id: 0x43aec183
+  name: "removable"
+  type_id: 0x384f7d7c
+  offset: 72
+}
+member {
+  id: 0x43c1e046
+  name: "removable"
+  type_id: 0x576c156c
+  offset: 1152
+}
+member {
+  id: 0x7130840c
+  name: "removable"
+  type_id: 0x4585663f
+  offset: 2784
+  bitsize: 1
+}
+member {
+  id: 0x71308d8a
+  name: "removable"
+  type_id: 0x4585663f
+  offset: 194
+  bitsize: 1
+}
+member {
+  id: 0x1d1a2124
+  name: "removable_count"
+  type_id: 0x4585663f
+  offset: 1600
+}
+member {
+  id: 0xb70cdf10
+  name: "removal_complete"
+  type_id: 0x3fcbf304
+  offset: 2176
+}
+member {
+  id: 0xb48dd727
+  name: "remove"
+  type_id: 0x2e037cf1
+  offset: 64
+}
+member {
+  id: 0xb48e0c46
+  name: "remove"
+  type_id: 0x2dd58efa
+  offset: 576
+}
+member {
+  id: 0xb48e2635
+  name: "remove"
+  type_id: 0x2df0fc96
+  offset: 1792
+}
+member {
+  id: 0xb48e707c
+  name: "remove"
+  type_id: 0x2da2fbac
+  offset: 704
+}
+member {
+  id: 0xb48fbf27
+  name: "remove"
+  type_id: 0x2c61df5b
+  offset: 2112
+}
+member {
+  id: 0xb4ac07aa
+  name: "remove"
+  type_id: 0x0fd3f1ea
+  offset: 64
+}
+member {
+  id: 0xb4ac435e
+  name: "remove"
+  type_id: 0x0f9a2667
+  offset: 128
+}
+member {
+  id: 0xb4ac48f3
+  name: "remove"
+  type_id: 0x0f908012
+  offset: 192
+}
+member {
+  id: 0xb4ac7bf7
+  name: "remove"
+  type_id: 0x0fa0559d
+  offset: 512
+}
+member {
+  id: 0xb4ac7f38
+  name: "remove"
+  type_id: 0x0fa845a7
+  offset: 320
+}
+member {
+  id: 0xb4acaf96
+  name: "remove"
+  type_id: 0x0f787c1e
+  offset: 1472
+}
+member {
+  id: 0xb4acb89f
+  name: "remove"
+  type_id: 0x0f61e7b5
+  offset: 128
+}
+member {
+  id: 0xb4ad4561
+  name: "remove"
+  type_id: 0x0e93a255
+  offset: 640
+}
+member {
+  id: 0xb4adbfac
+  name: "remove"
+  type_id: 0x0e6861a8
+  offset: 448
+}
+member {
+  id: 0xb4adf7e1
+  name: "remove"
+  type_id: 0x0e200b74
+  offset: 1472
+}
+member {
+  id: 0xb4ae0703
+  name: "remove"
+  type_id: 0x0dd7b940
+}
+member {
+  id: 0xb4ae4933
+  name: "remove"
+  type_id: 0x0d904bff
+  offset: 128
+}
+member {
+  id: 0xb4ae572f
+  name: "remove"
+  type_id: 0x0d80c506
+  offset: 1472
+}
+member {
+  id: 0xb4ae5ff3
+  name: "remove"
+  type_id: 0x0d868bbd
+  offset: 128
+}
+member {
+  id: 0xb4ae78a7
+  name: "remove"
+  type_id: 0x0da147cb
+  offset: 2624
+}
+member {
+  id: 0xb4aedbe1
+  name: "remove"
+  type_id: 0x0d0c0bd8
+  offset: 1472
+}
+member {
+  id: 0xb4aeea5b
+  name: "remove"
+  type_id: 0x0d322879
+  offset: 192
+}
+member {
+  id: 0xb4aef021
+  name: "remove"
+  type_id: 0x0d27cb7e
+  offset: 1472
+}
+member {
+  id: 0xb4af3703
+  name: "remove"
+  type_id: 0x0ced5e19
+  offset: 1536
+}
+member {
+  id: 0xb4aff42b
+  name: "remove"
+  type_id: 0x0c254fa0
+  offset: 1920
+}
+member {
+  id: 0x9e2122d5
+  name: "remove_bus"
+  type_id: 0x0c86b710
+  offset: 64
+}
+member {
+  id: 0x8d7a286c
+  name: "remove_dai_link"
+  type_id: 0x0f07f6be
+  offset: 2624
+}
+member {
+  id: 0xd0a3be49
+  name: "remove_dev"
+  type_id: 0x0e9068a5
+  offset: 256
+}
+member {
+  id: 0x0104be90
+  name: "remove_dev_pasid"
+  type_id: 0x0e8de3e3
+  offset: 832
+}
+member {
+  id: 0xcf681777
+  name: "remove_from"
+  type_id: 0x2f1b9487
+  offset: 192
+}
+member {
+  id: 0x5c1fdbe3
+  name: "remove_insns"
+  type_id: 0x2cbacf8c
+  offset: 192
+}
+member {
+  id: 0xeab05327
+  name: "remove_new"
+  type_id: 0x0d45505e
+  offset: 128
+}
+member {
+  id: 0x9ad98ca4
+  name: "remove_on_exec"
+  type_id: 0xedf277ba
+  offset: 356
+  bitsize: 1
+}
+member {
+  id: 0xfc3d730d
+  name: "remove_order"
+  type_id: 0x6720d32f
+  offset: 1728
+}
+member {
+  id: 0xfc3d788b
+  name: "remove_order"
+  type_id: 0x6720d32f
+  offset: 2528
+}
+member {
+  id: 0x0525b4bd
+  name: "remove_sleep"
+  type_id: 0x03913382
+  offset: 20224
+}
+member {
+  id: 0xcbcd79e3
+  name: "remove_wait"
+  type_id: 0x03913382
+  offset: 3840
+}
+member {
+  id: 0x0a934b05
+  name: "removed"
+  type_id: 0x6d7f5ff6
+  offset: 192
+}
+member {
+  id: 0x0a934e2c
+  name: "removed"
+  type_id: 0x6d7f5ff6
+  offset: 160
+}
+member {
+  id: 0x0aed277d
+  name: "removed"
+  type_id: 0x13110934
+  offset: 1536
+}
+member {
+  id: 0xa0b501cd
+  name: "removing"
+  type_id: 0x6d7f5ff6
+  offset: 9264
+}
+member {
+  id: 0xd86d68a7
+  name: "rename"
+  type_id: 0x2d1004bb
+  offset: 768
+}
+member {
+  id: 0xd86e1443
+  name: "rename"
+  type_id: 0x2e6c8788
+  offset: 192
+}
+member {
+  id: 0x60108fe5
+  name: "rename_flags"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x26d1e384
+  name: "render"
+  type_id: 0x0b8758d9
+  offset: 576
+}
+member {
+  id: 0x95bfd0a9
+  name: "render_height_minus_1"
+  type_id: 0xe8034002
+  offset: 1008
+}
+member {
+  id: 0xeae87782
+  name: "render_width_minus_1"
+  type_id: 0xe8034002
+  offset: 992
+}
+member {
+  id: 0x5f8678ed
+  name: "reoffload"
+  type_id: 0x2d08fece
+  offset: 832
+}
+member {
+  id: 0x2e9f9cf8
+  name: "reorder_q"
+  type_id: 0x578f9c2b
+  offset: 576
+}
+member {
+  id: 0x98f95bb3
+  name: "reorder_skip"
+  type_id: 0x6720d32f
+  offset: 1568
+}
+member {
+  id: 0x62b5d25b
+  name: "reorder_timeout"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0x62b5d817
+  name: "reorder_timeout"
+  type_id: 0x6720d32f
+  offset: 1536
+}
+member {
+  id: 0x52e0ed5f
+  name: "rep"
+  type_id: 0x75617428
+  offset: 2624
+}
+member {
+  id: 0x345e6415
+  name: "repeat"
+  type_id: 0x295c7202
+  offset: 32
+}
+member {
+  id: 0x34911b48
+  name: "repeat"
+  type_id: 0xe62ebf07
+  offset: 256
+}
+member {
+  id: 0x8b2e8815
+  name: "repeat_key"
+  type_id: 0x4585663f
+  offset: 2112
+}
+member {
+  id: 0x4b7a046e
+  name: "repl_mode"
+  type_id: 0x798f2945
+  offset: 3712
+}
+member {
+  id: 0x04dbf32d
+  name: "replace"
+  type_id: 0x0e0cae0f
+  offset: 128
+}
+member {
+  id: 0xcf6cc105
+  name: "replace_bpf_fd"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0xb4ed5a08
+  name: "replace_insn"
+  type_id: 0x2cb66c54
+  offset: 128
+}
+member {
+  id: 0x840c245e
+  name: "replay"
+  type_id: 0x9be40ce7
+  offset: 80
+}
+member {
+  id: 0x8460074b
+  name: "replay"
+  type_id: 0xf7cc861a
+  offset: 3360
+}
+member {
+  id: 0x8471e74a
+  name: "replay"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x9ba94e96
+  name: "replay_esn"
+  type_id: 0x287dadb4
+  offset: 3456
+}
+member {
+  id: 0x76c784f7
+  name: "replay_maxage"
+  type_id: 0xc9082b19
+  offset: 3776
+}
+member {
+  id: 0x7af92721
+  name: "replay_maxdiff"
+  type_id: 0xc9082b19
+  offset: 3808
+}
+member {
+  id: 0x82824682
+  name: "replay_protect"
+  type_id: 0x6d7f5ff6
+  offset: 280
+}
+member {
+  id: 0x0d0b21b1
+  name: "replay_window"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x0d0b2c51
+  name: "replay_window"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0x0d2403fc
+  name: "replay_window"
+  type_id: 0xc9082b19
+  offset: 288
+}
+member {
+  id: 0x0dc4512e
+  name: "replay_window"
+  type_id: 0x295c7202
+  offset: 40
+}
+member {
+  id: 0x72535826
+  name: "reply"
+  type_id: 0xb3e7bac9
+  offset: 384
+}
+member {
+  id: 0x728dcf96
+  name: "reply"
+  type_id: 0x6d7f5ff6
+  offset: 736
+}
+member {
+  id: 0x72f80ba2
+  name: "reply"
+  type_id: 0x18bd6530
+  offset: 192
+}
+member {
+  id: 0xced5e1c9
+  name: "reply_error"
+  type_id: 0x32ad011b
+  offset: 1024
+}
+member {
+  id: 0xa8576a87
+  name: "reply_len"
+  type_id: 0x4585663f
+  offset: 288
+}
+member {
+  id: 0x8aca07a6
+  name: "reply_payload"
+  type_id: 0x28d698a4
+  offset: 448
+}
+member {
+  id: 0xc08d4bff
+  name: "reply_payload_rcv_len"
+  type_id: 0x4585663f
+  offset: 608
+}
+member {
+  id: 0x5c95b22b
+  name: "report"
+  type_id: 0x0e46caf3
+  offset: 768
+}
+member {
+  id: 0x5cb466ae
+  name: "report"
+  type_id: 0x2f9ae186
+}
+member {
+  id: 0x5cb554ae
+  name: "report"
+  type_id: 0x2eab5b8a
+  offset: 832
+}
+member {
+  id: 0x5cb55ed6
+  name: "report"
+  type_id: 0x2eab5b8a
+  offset: 128
+}
+member {
+  id: 0x5cb65fa1
+  name: "report"
+  type_id: 0x2da42901
+  offset: 320
+}
+member {
+  id: 0x5cfcd455
+  name: "report"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0x5cfcd51f
+  name: "report"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0xd0052656
+  name: "report_ap_tsf"
+  type_id: 0x295c7202
+  offset: 32
+  bitsize: 1
+}
+member {
+  id: 0xd62d0278
+  name: "report_count"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0x080b53cf
+  name: "report_delay"
+  type_id: 0xc9082b19
+  offset: 4
+  bitsize: 1
+}
+member {
+  id: 0xa3c733bc
+  name: "report_enum"
+  type_id: 0x259984de
+  offset: 640
+}
+member {
+  id: 0x7ff1c028
+  name: "report_fixup"
+  type_id: 0x2cdf0c56
+  offset: 832
+}
+member {
+  id: 0x45e9fdd0
+  name: "report_id_hash"
+  type_id: 0x724fe209
+  offset: 192
+}
+member {
+  id: 0xec513643
+  name: "report_invalid_rssi"
+  type_id: 0x6d7f5ff6
+  offset: 832
+}
+member {
+  id: 0x0e9c0750
+  name: "report_list"
+  type_id: 0xd3c80119
+  offset: 64
+}
+member {
+  id: 0x9195303a
+  name: "report_mask"
+  type_id: 0x4585663f
+  offset: 384
+}
+member {
+  id: 0x1d6b9203
+  name: "report_offset"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0x1ddb5831
+  name: "report_results"
+  type_id: 0x6d7f5ff6
+  offset: 1152
+}
+member {
+  id: 0xbb621b8f
+  name: "report_size"
+  type_id: 0x4585663f
+  offset: 288
+}
+member {
+  id: 0x3d46eed7
+  name: "report_table"
+  type_id: 0x35467ab6
+  offset: 512
+}
+member {
+  id: 0x2f3fb13b
+  name: "report_type"
+  type_id: 0x4585663f
+  offset: 352
+}
+member {
+  id: 0x2f9c1ebb
+  name: "report_type"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x0d9120ed
+  name: "report_zones"
+  type_id: 0x2f37042d
+  offset: 832
+}
+member {
+  id: 0xb48ef3e4
+  name: "reporter"
+  type_id: 0x384f7d7c
+  offset: 1064
+}
+member {
+  id: 0x6ac6877c
+  name: "reporter_list"
+  type_id: 0xd3c80119
+  offset: 2112
+}
+member {
+  id: 0xefdb0c31
+  name: "reporters_lock"
+  type_id: 0xa7c362b0
+  offset: 2240
+}
+member {
+  id: 0x5e7ab334
+  name: "reports"
+  type_id: 0xd3c80119
+  offset: 384
+}
+member {
+  id: 0x93f7acd6
+  name: "req"
+  type_id: 0x2f99f236
+  offset: 64
+}
+member {
+  id: 0x93fd6a0a
+  name: "req"
+  type_id: 0x25520d15
+  offset: 128
+}
+member {
+  id: 0x8e42a998
+  name: "req_abort_count"
+  type_id: 0x6720d32f
+  offset: 21504
+}
+member {
+  id: 0x238349de
+  name: "req_abort_skip"
+  type_id: 0x6d7f5ff6
+  offset: 1088
+}
+member {
+  id: 0x6b7d005a
+  name: "req_alloc"
+  type_id: 0x1f383ecc
+  offset: 64
+}
+member {
+  id: 0x83fb5f77
+  name: "req_batch"
+  type_id: 0x4585663f
+  offset: 448
+}
+member {
+  id: 0xbb722e20
+  name: "req_current_limit"
+  type_id: 0xc9082b19
+  offset: 9952
+}
+member {
+  id: 0x667936b6
+  name: "req_done"
+  type_id: 0x6d7f5ff6
+  offset: 328
+}
+member {
+  id: 0x88be070f
+  name: "req_flags"
+  type_id: 0x499ec4e1
+  offset: 192
+}
+member {
+  id: 0x730fbdc7
+  name: "req_free"
+  type_id: 0x0ce30d12
+  offset: 128
+}
+member {
+  id: 0x985d308b
+  name: "req_header"
+  type_id: 0x6e3da889
+}
+member {
+  id: 0x0faca82f
+  name: "req_list"
+  type_id: 0x1e820193
+}
+member {
+  id: 0x0feca5d4
+  name: "req_list"
+  type_id: 0x5e8dc7f4
+  offset: 704
+}
+member {
+  id: 0x41d7be50
+  name: "req_lock"
+  type_id: 0xa7c362b0
+  offset: 26240
+}
+member {
+  id: 0x5b6c091d
+  name: "req_match"
+  type_id: 0x370b11b2
+  offset: 1088
+}
+member {
+  id: 0x49eaafac
+  name: "req_max_curr"
+  type_id: 0xc9082b19
+  offset: 160
+}
+member {
+  id: 0x6cdb91bc
+  name: "req_max_volt"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0xc0ae2f54
+  name: "req_min_volt"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x6561a8f0
+  name: "req_node"
+  type_id: 0x49a73111
+}
+member {
+  id: 0xcc934488
+  name: "req_obj"
+  type_id: 0xb8aff650
+  offset: 320
+}
+member {
+  id: 0xcc9349cc
+  name: "req_obj"
+  type_id: 0xb8aff650
+  offset: 1344
+}
+member {
+  id: 0x000df0ed
+  name: "req_op_curr"
+  type_id: 0xc9082b19
+  offset: 224
+}
+member {
+  id: 0x31314bfa
+  name: "req_out_volt"
+  type_id: 0xc9082b19
+  offset: 192
+}
+member {
+  id: 0x5c7e1ba8
+  name: "req_pool"
+  type_id: 0xe97fe194
+  offset: 192
+}
+member {
+  id: 0x0cb3ae89
+  name: "req_queue"
+  type_id: 0x0ce30d12
+  offset: 256
+}
+member {
+  id: 0x14ca1102
+  name: "req_queue_mutex"
+  type_id: 0xa7c362b0
+  offset: 5120
+}
+member {
+  id: 0x9c3f558c
+  name: "req_rate"
+  type_id: 0x33756485
+  offset: 640
+}
+member {
+  id: 0xfa136415
+  name: "req_result"
+  type_id: 0xe62ebf07
+  offset: 26848
+}
+member {
+  id: 0x3e305123
+  name: "req_skb"
+  type_id: 0x054f691a
+  offset: 26880
+}
+member {
+  id: 0xd432cc5e
+  name: "req_status"
+  type_id: 0xe62ebf07
+  offset: 26816
+}
+member {
+  id: 0x48ed2ec0
+  name: "req_supply_voltage"
+  type_id: 0xc9082b19
+  offset: 9984
+}
+member {
+  id: 0x6b98bee2
+  name: "req_validate"
+  type_id: 0x2fa521bd
+  offset: 192
+}
+member {
+  id: 0x380f1158
+  name: "req_wait_q"
+  type_id: 0x03913382
+  offset: 26624
+}
+member {
+  id: 0xba5af507
+  name: "req_workqueue"
+  type_id: 0x13f8b706
+  offset: 13824
+}
+member {
+  id: 0xfd8da2e0
+  name: "reqid"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xfd8da6b9
+  name: "reqid"
+  type_id: 0xc9082b19
+  offset: 352
+}
+member {
+  id: 0xfdd689f8
+  name: "reqid"
+  type_id: 0x92233392
+}
+member {
+  id: 0x942e3316
+  name: "reqs"
+  type_id: 0x3e40064a
+  offset: 192
+}
+member {
+  id: 0x94cc591f
+  name: "reqs"
+  type_id: 0xdc2b0406
+  offset: 128
+}
+member {
+  id: 0xe3c546f7
+  name: "reqs_available"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xe3f4110d
+  name: "reqs_available"
+  type_id: 0x74d29cf1
+}
+member {
+  id: 0xa9e8c16b
+  name: "reqsize"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xa9e8c748
+  name: "reqsize"
+  type_id: 0x4585663f
+  offset: 512
+}
+member {
+  id: 0xa9e8cc50
+  name: "reqsize"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xb600f599
+  name: "request"
+  type_id: 0xfa3bef7b
+}
+member {
+  id: 0xb61735c3
+  name: "request"
+  type_id: 0xedf277ba
+  offset: 128
+}
+member {
+  id: 0xb694f50b
+  name: "request"
+  type_id: 0x6e3b7d7f
+}
+member {
+  id: 0xb69781a6
+  name: "request"
+  type_id: 0x6d48520c
+  offset: 2048
+}
+member {
+  id: 0xb6d55f02
+  name: "request"
+  type_id: 0x2f9174cf
+}
+member {
+  id: 0xb6d6cea8
+  name: "request"
+  type_id: 0x2c00de85
+}
+member {
+  id: 0xb6d6f251
+  name: "request"
+  type_id: 0x2c3be0fd
+  offset: 320
+}
+member {
+  id: 0xb6df9cd0
+  name: "request"
+  type_id: 0x25520d15
+  offset: 256
+}
+member {
+  id: 0xb6e27ad1
+  name: "request"
+  type_id: 0x18bd6530
+  offset: 128
+}
+member {
+  id: 0xb6f48f5c
+  name: "request"
+  type_id: 0x0e40b8fe
+  offset: 384
+}
+member {
+  id: 0xb6f73921
+  name: "request"
+  type_id: 0x0dfe95f2
+  offset: 128
+}
+member {
+  id: 0x21805a26
+  name: "request_atomic"
+  type_id: 0x2eb8b95d
+  offset: 192
+}
+member {
+  id: 0xbfd3c659
+  name: "request_attr"
+  type_id: 0xe62ebf07
+  offset: 256
+}
+member {
+  id: 0x88f5213b
+  name: "request_civicloc"
+  type_id: 0x295c7202
+  offset: 84
+  bitsize: 1
+}
+member {
+  id: 0xb4182fb8
+  name: "request_count"
+  type_id: 0xc9082b19
+  offset: 224
+}
+member {
+  id: 0xb494a852
+  name: "request_count"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x51813eac
+  name: "request_data_obj"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x80bdc513
+  name: "request_done"
+  type_id: 0x0d08d17b
+  offset: 1792
+}
+member {
+  id: 0x4da5696b
+  name: "request_extra"
+  type_id: 0xe62ebf07
+  offset: 320
+}
+member {
+  id: 0xc06b1172
+  name: "request_fd"
+  type_id: 0x0faae5b1
+  offset: 4320
+}
+member {
+  id: 0xc06b14f2
+  name: "request_fd"
+  type_id: 0x0faae5b1
+  offset: 96
+}
+member {
+  id: 0xc06b1d71
+  name: "request_fd"
+  type_id: 0x0faae5b1
+}
+member {
+  id: 0x54cc58dc
+  name: "request_ibi"
+  type_id: 0x2d23dfc1
+  offset: 768
+}
+member {
+  id: 0xde8058c3
+  name: "request_id"
+  type_id: 0x74d29cf1
+  offset: 5504
+}
+member {
+  id: 0xf6476a4c
+  name: "request_interrupt_window"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0x6fead5f8
+  name: "request_is_queued"
+  type_id: 0x6d7f5ff6
+  offset: 1024
+}
+member {
+  id: 0x1526eebc
+  name: "request_key"
+  type_id: 0x9209d54f
+  offset: 896
+}
+member {
+  id: 0x15afa338
+  name: "request_key"
+  type_id: 0x1b44744f
+  offset: 1344
+}
+member {
+  id: 0xd78233e4
+  name: "request_key_auth"
+  type_id: 0x01a688ae
+  offset: 896
+}
+member {
+  id: 0x2ce5a4ae
+  name: "request_lci"
+  type_id: 0x295c7202
+  offset: 83
+  bitsize: 1
+}
+member {
+  id: 0xc61d64c8
+  name: "request_len"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0xc6bec639
+  name: "request_len"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x526c22a5
+  name: "request_merge"
+  type_id: 0x2d684c21
+  offset: 448
+}
+member {
+  id: 0x755d8186
+  name: "request_merged"
+  type_id: 0x0e3d09df
+  offset: 512
+}
+member {
+  id: 0x26fe77cd
+  name: "request_mutex"
+  type_id: 0xa7c362b0
+  offset: 3072
+}
+member {
+  id: 0x25b34691
+  name: "request_payload"
+  type_id: 0x28d698a4
+  offset: 320
+}
+member {
+  id: 0x6b2fd010
+  name: "request_pending"
+  type_id: 0x4585663f
+  offset: 1988
+  bitsize: 1
+}
+member {
+  id: 0xbd5b1f30
+  name: "request_port"
+  type_id: 0x2dfb782b
+  offset: 1280
+}
+member {
+  id: 0xf42fa8ae
+  name: "request_priority"
+  type_id: 0xe62ebf07
+  offset: 288
+}
+member {
+  id: 0xc7a8d656
+  name: "request_queue"
+  type_id: 0x09427c40
+  offset: 64
+}
+member {
+  id: 0x828ba6ac
+  name: "request_tag"
+  type_id: 0xedf277ba
+  offset: 192
+}
+member {
+  id: 0x17c47cae
+  name: "request_update"
+  type_id: 0x2f0329e2
+  offset: 384
+}
+member {
+  id: 0x7b0048be
+  name: "requested_threads"
+  type_id: 0x6720d32f
+  offset: 3168
+}
+member {
+  id: 0x6cf80e11
+  name: "requested_threads_started"
+  type_id: 0x6720d32f
+  offset: 3200
+}
+member {
+  id: 0x9f936789
+  name: "requests"
+  type_id: 0x92233392
+  offset: 448
+}
+member {
+  id: 0x9fd286ba
+  name: "requests"
+  type_id: 0xd3c80119
+  offset: 1088
+}
+member {
+  id: 0x30e3be5a
+  name: "requests_merged"
+  type_id: 0x0e3d6026
+  offset: 576
+}
+member {
+  id: 0x7c2cfc2f
+  name: "requests_queued"
+  type_id: 0xd3c80119
+  offset: 1216
+}
+member {
+  id: 0xf277f5bf
+  name: "requeue"
+  type_id: 0x0f79fcf8
+  offset: 256
+}
+member {
+  id: 0xeec50ace
+  name: "requeue_list"
+  type_id: 0xd3c80119
+  offset: 5056
+}
+member {
+  id: 0xaa806a41
+  name: "requeue_lock"
+  type_id: 0xf313e71a
+  offset: 5184
+}
+member {
+  id: 0x886a73b0
+  name: "requeue_request"
+  type_id: 0x0f5e0dda
+  offset: 1088
+}
+member {
+  id: 0x374832f8
+  name: "requeue_work"
+  type_id: 0x1f3c8679
+  offset: 18752
+}
+member {
+  id: 0x37a61301
+  name: "requeue_work"
+  type_id: 0xf1159c31
+  offset: 5248
+}
+member {
+  id: 0xbaaf6c14
+  name: "requeues"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x4dc025a8
+  name: "required_elevator_features"
+  type_id: 0x4585663f
+  offset: 4928
+}
+member {
+  id: 0x4fd1779f
+  name: "required_opp_count"
+  type_id: 0x4585663f
+  offset: 2496
+}
+member {
+  id: 0x0376e525
+  name: "required_opp_tables"
+  type_id: 0x036435f8
+  offset: 2432
+}
+member {
+  id: 0xc1a26dd8
+  name: "required_opps"
+  type_id: 0x0ce9a2bb
+  offset: 576
+}
+member {
+  id: 0x1e719d10
+  name: "requires_requests"
+  type_id: 0x4585663f
+  offset: 198
+  bitsize: 1
+}
+member {
+  id: 0x16252c8c
+  name: "res"
+  type_id: 0x720f65ea
+  offset: 40320
+}
+member {
+  id: 0x16588d85
+  name: "res"
+  type_id: 0x0faae5b1
+  offset: 64
+}
+member {
+  id: 0x1666c732
+  name: "res"
+  type_id: 0x31e374a8
+  offset: 320
+}
+member {
+  id: 0x16689e87
+  name: "res"
+  type_id: 0x3fbd06d5
+}
+member {
+  id: 0x166c6f61
+  name: "res"
+  type_id: 0x3b4ce03a
+}
+member {
+  id: 0x16905a64
+  name: "res"
+  type_id: 0xc7736674
+  offset: 7296
+}
+member {
+  id: 0x775f3005
+  name: "res1"
+  type_id: 0xe8034002
+  offset: 96
+  bitsize: 4
+}
+member {
+  id: 0xef6d13eb
+  name: "res1"
+  type_id: 0xb3e7bac9
+  offset: 40
+}
+member {
+  id: 0x25a2ba4c
+  name: "res2"
+  type_id: 0xb3e7bac9
+  offset: 48
+}
+member {
+  id: 0x1e6208cc
+  name: "res_attr"
+  type_id: 0x839f12d6
+  offset: 22848
+}
+member {
+  id: 0x5c2e5646
+  name: "res_attr_wc"
+  type_id: 0x839f12d6
+  offset: 23936
+}
+member {
+  id: 0xeec31c44
+  name: "res_failed"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0xa7655f29
+  name: "res_table"
+  type_id: 0x21397e56
+  offset: 128
+}
+member {
+  id: 0xacf78dbd
+  name: "resampler_list"
+  type_id: 0xd3c80119
+  offset: 192
+}
+member {
+  id: 0x85260d3d
+  name: "resampler_lock"
+  type_id: 0xa7c362b0
+  offset: 320
+}
+member {
+  id: 0x1aa9410e
+  name: "rescan"
+  type_id: 0x6d7f5ff6
+  offset: 984
+}
+member {
+  id: 0x1ac8d698
+  name: "rescan"
+  type_id: 0x0ce1fce9
+  offset: 640
+}
+member {
+  id: 0x3ccd8fd5
+  name: "rescan_disable"
+  type_id: 0x6720d32f
+  offset: 8512
+}
+member {
+  id: 0x1496480a
+  name: "rescan_entered"
+  type_id: 0x6720d32f
+  offset: 8544
+}
+member {
+  id: 0xbd1dca9a
+  name: "reschedule_count"
+  type_id: 0x33756485
+  offset: 2688
+}
+member {
+  id: 0xe7a82cb4
+  name: "reschedule_jiffies"
+  type_id: 0x33756485
+  offset: 2624
+}
+member {
+  id: 0x8236db35
+  name: "rescue_list"
+  type_id: 0x59cf4672
+  offset: 1408
+}
+member {
+  id: 0xea686bb7
+  name: "rescue_lock"
+  type_id: 0xf313e71a
+  offset: 1376
+}
+member {
+  id: 0x4e3b4641
+  name: "rescue_work"
+  type_id: 0x1f3c8679
+  offset: 1536
+}
+member {
+  id: 0xa9bfa026
+  name: "rescue_workqueue"
+  type_id: 0x13f8b706
+  offset: 1920
+}
+member {
+  id: 0x95301324
+  name: "rescue_wq"
+  type_id: 0x13f8b706
+  offset: 1152
+}
+member {
+  id: 0xddde1752
+  name: "rescuer"
+  type_id: 0x2a64866d
+  offset: 1216
+}
+member {
+  id: 0xf4f71011
+  name: "reserve"
+  type_id: 0xd0ccb483
+  offset: 128
+}
+member {
+  id: 0x348aae90
+  name: "reserve_pages_on_error"
+  type_id: 0x6d7f5ff6
+  offset: 1024
+}
+member {
+  id: 0x688b9047
+  name: "reserved"
+  type_id: 0xb3e7bac9
+  offset: 24
+  bitsize: 6
+}
+member {
+  id: 0x8a62eaf9
+  name: "reserved"
+  type_id: 0x295c7202
+  offset: 5
+  bitsize: 3
+}
+member {
+  id: 0x8adaf1e5
+  name: "reserved"
+  type_id: 0x914dbfdc
+  offset: 7
+  bitsize: 3
+}
+member {
+  id: 0xc5c2fe1d
+  name: "reserved"
+  type_id: 0xedf277ba
+  offset: 161
+  bitsize: 31
+}
+member {
+  id: 0xd40deb47
+  name: "reserved"
+  type_id: 0x6e43dcca
+  offset: 64
+}
+member {
+  id: 0xd40ee8e7
+  name: "reserved"
+  type_id: 0x6d472730
+  offset: 832
+}
+member {
+  id: 0xd40eeb5d
+  name: "reserved"
+  type_id: 0x6d472730
+}
+member {
+  id: 0xd41613d0
+  name: "reserved"
+  type_id: 0x75b86d50
+  offset: 320
+}
+member {
+  id: 0xd4279384
+  name: "reserved"
+  type_id: 0x44377683
+  offset: 1480
+}
+member {
+  id: 0xd427956a
+  name: "reserved"
+  type_id: 0x44377683
+  offset: 1288
+}
+member {
+  id: 0xd427977d
+  name: "reserved"
+  type_id: 0x44377683
+  offset: 72
+}
+member {
+  id: 0xd42e45aa
+  name: "reserved"
+  type_id: 0x4deaf4ae
+  offset: 224
+}
+member {
+  id: 0xd432e4ad
+  name: "reserved"
+  type_id: 0x514537f0
+  offset: 160
+}
+member {
+  id: 0xd4350edf
+  name: "reserved"
+  type_id: 0x56a990e3
+  offset: 592
+}
+member {
+  id: 0xd436865c
+  name: "reserved"
+  type_id: 0x5522ef22
+  offset: 192
+}
+member {
+  id: 0xd4368a4c
+  name: "reserved"
+  type_id: 0x5522ef22
+  offset: 288
+}
+member {
+  id: 0xd4368a74
+  name: "reserved"
+  type_id: 0x5522ef22
+  offset: 64
+}
+member {
+  id: 0xd4368acc
+  name: "reserved"
+  type_id: 0x5522ef22
+  offset: 352
+}
+member {
+  id: 0xd4368d2f
+  name: "reserved"
+  type_id: 0x5522ef22
+  offset: 832
+}
+member {
+  id: 0xd4368e3e
+  name: "reserved"
+  type_id: 0x5522ef22
+  offset: 256
+}
+member {
+  id: 0xd4368f25
+  name: "reserved"
+  type_id: 0x5522ef22
+  offset: 480
+}
+member {
+  id: 0xd4379112
+  name: "reserved"
+  type_id: 0x5434eb98
+  offset: 96
+}
+member {
+  id: 0xd438fe7f
+  name: "reserved"
+  type_id: 0x5b5397f8
+  offset: 384
+}
+member {
+  id: 0xd43d43d1
+  name: "reserved"
+  type_id: 0x5eeb4a25
+  offset: 64
+}
+member {
+  id: 0xd44761dd
+  name: "reserved"
+  type_id: 0x24cb52fe
+  offset: 4352
+}
+member {
+  id: 0xd4476404
+  name: "reserved"
+  type_id: 0x24cb52fe
+  offset: 1664
+}
+member {
+  id: 0xd448e040
+  name: "reserved"
+  type_id: 0x2b4e5af5
+  offset: 416
+}
+member {
+  id: 0xd448e19a
+  name: "reserved"
+  type_id: 0x2b4e5af5
+  offset: 832
+}
+member {
+  id: 0xd448e390
+  name: "reserved"
+  type_id: 0x2b4e5af5
+  offset: 480
+}
+member {
+  id: 0xd448e4ed
+  name: "reserved"
+  type_id: 0x2b4e5af5
+  offset: 864
+}
+member {
+  id: 0xd448e557
+  name: "reserved"
+  type_id: 0x2b4e5af5
+  offset: 448
+}
+member {
+  id: 0xd448e938
+  name: "reserved"
+  type_id: 0x2b4e5af5
+  offset: 512
+}
+member {
+  id: 0xd448ece7
+  name: "reserved"
+  type_id: 0x2b4e5af5
+  offset: 736
+}
+member {
+  id: 0xd44af008
+  name: "reserved"
+  type_id: 0x295c7202
+}
+member {
+  id: 0xd44af669
+  name: "reserved"
+  type_id: 0x295c7202
+  offset: 24
+}
+member {
+  id: 0xd44afeb6
+  name: "reserved"
+  type_id: 0x295c7202
+  offset: 16
+}
+member {
+  id: 0xd450ed4d
+  name: "reserved"
+  type_id: 0x33415e6f
+  offset: 624
+}
+member {
+  id: 0xd45a2291
+  name: "reserved"
+  type_id: 0x398eeba3
+}
+member {
+  id: 0xd45a2ed2
+  name: "reserved"
+  type_id: 0x398eeba3
+  offset: 8768
+}
+member {
+  id: 0xd45acdb2
+  name: "reserved"
+  type_id: 0x39652932
+  offset: 64
+}
+member {
+  id: 0xd45ace94
+  name: "reserved"
+  type_id: 0x39652932
+  offset: 320
+}
+member {
+  id: 0xd45c0d5e
+  name: "reserved"
+  type_id: 0x3fa31951
+  offset: 704
+}
+member {
+  id: 0xd45d986e
+  name: "reserved"
+  type_id: 0x3e3c1b86
+  offset: 136
+}
+member {
+  id: 0xd46802eb
+  name: "reserved"
+  type_id: 0x0baa70a7
+  offset: 64
+}
+member {
+  id: 0xd4738ef3
+  name: "reserved"
+  type_id: 0x102f691d
+  offset: 160
+}
+member {
+  id: 0xd476989d
+  name: "reserved"
+  type_id: 0x1537c376
+  offset: 224
+}
+member {
+  id: 0xd47b3d33
+  name: "reserved"
+  type_id: 0x1892e9b4
+  offset: 104
+}
+member {
+  id: 0xd48582c5
+  name: "reserved"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xd485838d
+  name: "reserved"
+  type_id: 0xe62ebf07
+  offset: 4416
+}
+member {
+  id: 0xd4858502
+  name: "reserved"
+  type_id: 0xe62ebf07
+  offset: 320
+}
+member {
+  id: 0xd4858624
+  name: "reserved"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xd4858b46
+  name: "reserved"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0xd48ba184
+  name: "reserved"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0xd48baba6
+  name: "reserved"
+  type_id: 0xe8034002
+  offset: 80
+}
+member {
+  id: 0xd492d7d2
+  name: "reserved"
+  type_id: 0xf1764889
+  offset: 160
+}
+member {
+  id: 0xd492d8f6
+  name: "reserved"
+  type_id: 0xf1764889
+  offset: 1216
+}
+member {
+  id: 0xd4969562
+  name: "reserved"
+  type_id: 0xf5342386
+  offset: 32
+}
+member {
+  id: 0xd4a6a256
+  name: "reserved"
+  type_id: 0xc505c003
+  offset: 216
+}
+member {
+  id: 0xd4a6a43b
+  name: "reserved"
+  type_id: 0xc505c003
+  offset: 664
+}
+member {
+  id: 0xd4a6ad9c
+  name: "reserved"
+  type_id: 0xc505c003
+  offset: 120
+}
+member {
+  id: 0xd4aaa96a
+  name: "reserved"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0xd4acfe44
+  name: "reserved"
+  type_id: 0xcf55352b
+  offset: 2304
+}
+member {
+  id: 0xd4b3d278
+  name: "reserved"
+  type_id: 0xd0778170
+  offset: 96
+}
+member {
+  id: 0xd4b3d61b
+  name: "reserved"
+  type_id: 0xd0778170
+  offset: 160
+}
+member {
+  id: 0xd4b3d8df
+  name: "reserved"
+  type_id: 0xd0778170
+  offset: 224
+}
+member {
+  id: 0xd4be10de
+  name: "reserved"
+  type_id: 0xddb527d3
+  offset: 96
+}
+member {
+  id: 0xd4be163a
+  name: "reserved"
+  type_id: 0xddb527d3
+  offset: 800
+}
+member {
+  id: 0xd4be19f6
+  name: "reserved"
+  type_id: 0xddb527d3
+  offset: 256
+}
+member {
+  id: 0xd4be1e2a
+  name: "reserved"
+  type_id: 0xddb527d3
+  offset: 448
+}
+member {
+  id: 0xd4c315bc
+  name: "reserved"
+  type_id: 0xa0b4fda8
+  offset: 32
+}
+member {
+  id: 0xd4c31937
+  name: "reserved"
+  type_id: 0xa0b4fda8
+  offset: 480
+}
+member {
+  id: 0xd4d041cc
+  name: "reserved"
+  type_id: 0xb3e7bac9
+  offset: 440
+}
+member {
+  id: 0xd4d04537
+  name: "reserved"
+  type_id: 0xb3e7bac9
+  offset: 152
+}
+member {
+  id: 0xd4d047b1
+  name: "reserved"
+  type_id: 0xb3e7bac9
+  offset: 72
+}
+member {
+  id: 0xd4d15398
+  name: "reserved"
+  type_id: 0xb2fbbbc4
+  offset: 352
+}
+member {
+  id: 0xd4d6620f
+  name: "reserved"
+  type_id: 0xb5c6bcdb
+  offset: 192
+}
+member {
+  id: 0xd4d66419
+  name: "reserved"
+  type_id: 0xb5c6bcdb
+  offset: 544
+}
+member {
+  id: 0xd4d6641a
+  name: "reserved"
+  type_id: 0xb5c6bcdb
+  offset: 1152
+}
+member {
+  id: 0xd4d66e27
+  name: "reserved"
+  type_id: 0xb5c6bcdb
+  offset: 64
+}
+member {
+  id: 0xd4d771f9
+  name: "reserved"
+  type_id: 0xb4d0b861
+  offset: 32
+}
+member {
+  id: 0xd4eef0a8
+  name: "reserved"
+  type_id: 0x8d58bd1a
+  offset: 208
+}
+member {
+  id: 0xd4efe7f1
+  name: "reserved"
+  type_id: 0x8c42494b
+  offset: 128
+}
+member {
+  id: 0xd4f1177e
+  name: "reserved"
+  type_id: 0x92b820ce
+  offset: 224
+}
+member {
+  id: 0xd4f11dd9
+  name: "reserved"
+  type_id: 0x92b820ce
+  offset: 96
+}
+member {
+  id: 0xd4f80918
+  name: "reserved"
+  type_id: 0x9ba183a8
+  offset: 64
+}
+member {
+  id: 0xd4f87a16
+  name: "reserved"
+  type_id: 0x9bd401b6
+  offset: 144
+}
+member {
+  id: 0xd4fb8d9b
+  name: "reserved"
+  type_id: 0x982afc69
+  offset: 1856
+}
+member {
+  id: 0x8f8b2011
+  name: "reserved0"
+  type_id: 0x3e3c1b86
+  offset: 264
+}
+member {
+  id: 0xcb5e6f0b
+  name: "reserved1"
+  type_id: 0xb4d0b861
+  offset: 32
+}
+member {
+  id: 0xcbaae424
+  name: "reserved1"
+  type_id: 0x4050ae51
+  offset: 2160
+}
+member {
+  id: 0xcbb45ae6
+  name: "reserved1"
+  type_id: 0x5eeb4a25
+  offset: 224
+}
+member {
+  id: 0xcbc3eca8
+  name: "reserved1"
+  type_id: 0x295c7202
+  offset: 40
+}
+member {
+  id: 0xcbe1117b
+  name: "reserved1"
+  type_id: 0x0baa70a7
+  offset: 96
+}
+member {
+  id: 0x082361a0
+  name: "reserved2"
+  type_id: 0x0baa70a7
+  offset: 128
+}
+member {
+  id: 0x08a484ba
+  name: "reserved2"
+  type_id: 0x8c42494b
+  offset: 64
+}
+member {
+  id: 0x08aacc97
+  name: "reserved2"
+  type_id: 0x82074e06
+  offset: 1312
+}
+member {
+  id: 0x08bb268c
+  name: "reserved2"
+  type_id: 0x93e3596e
+  offset: 320
+}
+member {
+  id: 0x08cabd3c
+  name: "reserved2"
+  type_id: 0xe276adef
+  offset: 96
+}
+member {
+  id: 0x08cabd7d
+  name: "reserved2"
+  type_id: 0xe276adef
+  offset: 128
+}
+member {
+  id: 0x08ceec5f
+  name: "reserved2"
+  type_id: 0xe62ebf07
+  offset: 608
+}
+member {
+  id: 0x4ee725c0
+  name: "reserved3"
+  type_id: 0x8ea78f33
+  offset: 256
+}
+member {
+  id: 0x4ef0f361
+  name: "reserved3"
+  type_id: 0x997185c9
+}
+member {
+  id: 0x84636c44
+  name: "reserved4"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x84bed3e5
+  name: "reserved4"
+  type_id: 0x14b63a09
+  offset: 480
+}
+member {
+  id: 0xc6bfbfdb
+  name: "reserved5"
+  type_id: 0x0baa70a7
+  offset: 8288
+}
+member {
+  id: 0xc6eaf026
+  name: "reserved5"
+  type_id: 0x5eeb4a25
+  offset: 1536
+}
+member {
+  id: 0x0df50023
+  name: "reserved6"
+  type_id: 0xdf3ea43b
+  offset: 8320
+}
+member {
+  id: 0x0422bd58
+  name: "reserved60_2"
+  type_id: 0x295c7202
+  offset: 2
+  bitsize: 6
+}
+member {
+  id: 0xca8c571b
+  name: "reserved60_4"
+  type_id: 0x295c7202
+  offset: 4
+  bitsize: 4
+}
+member {
+  id: 0x6741043f
+  name: "reserved61"
+  type_id: 0x295c7202
+  offset: 8
+  bitsize: 8
+}
+member {
+  id: 0xa74b5053
+  name: "reserved62"
+  type_id: 0x295c7202
+  offset: 496
+}
+member {
+  id: 0x97222146
+  name: "reserved_1"
+  type_id: 0x914dbfdc
+  offset: 48
+}
+member {
+  id: 0x979a30fb
+  name: "reserved_1"
+  type_id: 0x295c7202
+  offset: 528
+}
+member {
+  id: 0xd4c7db11
+  name: "reserved_2"
+  type_id: 0x295c7202
+  offset: 72
+}
+member {
+  id: 0xd4c7def1
+  name: "reserved_2"
+  type_id: 0x295c7202
+  offset: 552
+}
+member {
+  id: 0x14364100
+  name: "reserved_3"
+  type_id: 0x056516a3
+  offset: 576
+}
+member {
+  id: 0xeacde004
+  name: "reserved_bar"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0xaa963da5
+  name: "reserved_char"
+  type_id: 0xbbda39d5
+  offset: 280
+}
+member {
+  id: 0x71ea3a37
+  name: "reserved_multi_host"
+  type_id: 0x295c7202
+  offset: 544
+}
+member {
+  id: 0xca351458
+  name: "reserved_osf"
+  type_id: 0x7584e7da
+  offset: 32
+}
+member {
+  id: 0x7f845b4e
+  name: "reserved_size"
+  type_id: 0x4585663f
+  offset: 8512
+}
+member {
+  id: 0xe6804775
+  name: "reserved_slot"
+  type_id: 0xc9082b19
+  offset: 1216
+}
+member {
+  id: 0x647792ac
+  name: "reserved_tags"
+  type_id: 0x4585663f
+  offset: 576
+}
+member {
+  id: 0x9bb0a88c
+  name: "reserved_tailroom"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x620e421f
+  name: "reset"
+  type_id: 0xb3e7bac9
+  offset: 216
+}
+member {
+  id: 0x6290827d
+  name: "reset"
+  type_id: 0x2d2c9ff4
+  offset: 256
+}
+member {
+  id: 0x62908bb1
+  name: "reset"
+  type_id: 0x2d255333
+  offset: 256
+}
+member {
+  id: 0x6290e8f3
+  name: "reset"
+  type_id: 0x2d4fc86f
+  offset: 576
+}
+member {
+  id: 0x62920d2b
+  name: "reset"
+  type_id: 0x2fa7835a
+  offset: 64
+}
+member {
+  id: 0x62920e0d
+  name: "reset"
+  type_id: 0x2fa7835a
+  offset: 320
+}
+member {
+  id: 0x62924365
+  name: "reset"
+  type_id: 0x2fed2c49
+}
+member {
+  id: 0x629300a3
+  name: "reset"
+  type_id: 0x2ead5060
+  offset: 832
+}
+member {
+  id: 0x62934967
+  name: "reset"
+  type_id: 0x2ee2b162
+  offset: 2176
+}
+member {
+  id: 0x6295ba38
+  name: "reset"
+  type_id: 0x28136e4b
+  offset: 1024
+}
+member {
+  id: 0x62b007df
+  name: "reset"
+  type_id: 0x0dad77a5
+  offset: 64
+}
+member {
+  id: 0x62b00dd3
+  name: "reset"
+  type_id: 0x0da39a23
+}
+member {
+  id: 0x62b07139
+  name: "reset"
+  type_id: 0x0dd7b940
+  offset: 192
+}
+member {
+  id: 0x62b0a42c
+  name: "reset"
+  type_id: 0x0d08a1bb
+  offset: 1216
+}
+member {
+  id: 0x62b1452f
+  name: "reset"
+  type_id: 0x0ce07e73
+  offset: 512
+}
+member {
+  id: 0x62b18cc1
+  name: "reset"
+  type_id: 0x0c254fa0
+  offset: 320
+}
+member {
+  id: 0x62b1f727
+  name: "reset"
+  type_id: 0x0c596e35
+}
+member {
+  id: 0x62b1f9c3
+  name: "reset"
+  type_id: 0x0c5ef833
+  offset: 576
+}
+member {
+  id: 0x62b29c82
+  name: "reset"
+  type_id: 0x0f3dfb90
+  offset: 3200
+}
+member {
+  id: 0x62b2a267
+  name: "reset"
+  type_id: 0x0f04e7c1
+  offset: 192
+}
+member {
+  id: 0x62b36e8c
+  name: "reset"
+  type_id: 0x0ec90737
+  offset: 128
+}
+member {
+  id: 0x62d0d919
+  name: "reset"
+  type_id: 0x6d7f5ff6
+  offset: 136
+}
+member {
+  id: 0x62d0da0e
+  name: "reset"
+  type_id: 0x6d7f5ff6
+  offset: 512
+}
+member {
+  id: 0x147cd330
+  name: "reset_assert_delay"
+  type_id: 0x4585663f
+  offset: 8000
+}
+member {
+  id: 0x1a3851a4
+  name: "reset_bandwidth"
+  type_id: 0x0cecd312
+  offset: 2176
+}
+member {
+  id: 0x1a3855a9
+  name: "reset_bandwidth"
+  type_id: 0x0cecd312
+  offset: 384
+}
+member {
+  id: 0xb154573d
+  name: "reset_control_head"
+  type_id: 0xd3c80119
+  offset: 256
+}
+member {
+  id: 0xd659b548
+  name: "reset_crtc"
+  type_id: 0x0e724a00
+  offset: 576
+}
+member {
+  id: 0xc7abed37
+  name: "reset_ctrl"
+  type_id: 0x28136e4b
+  offset: 7936
+}
+member {
+  id: 0x84f603b2
+  name: "reset_deassert_delay"
+  type_id: 0x4585663f
+  offset: 8032
+}
+member {
+  id: 0x88983d46
+  name: "reset_delay_us"
+  type_id: 0x6720d32f
+  offset: 20032
+}
+member {
+  id: 0x859f82e8
+  name: "reset_device"
+  type_id: 0x2faaffbd
+  offset: 2432
+}
+member {
+  id: 0xd6333fad
+  name: "reset_done"
+  type_id: 0x4585663f
+  offset: 4032
+}
+member {
+  id: 0xd67914d7
+  name: "reset_done"
+  type_id: 0x0fa845a7
+  offset: 256
+}
+member {
+  id: 0xd68cb22b
+  name: "reset_done"
+  type_id: 0xfa03c3cb
+  offset: 3776
+}
+member {
+  id: 0x158b8e39
+  name: "reset_frame_context"
+  type_id: 0xb3e7bac9
+  offset: 1224
+}
+member {
+  id: 0x68b1ce86
+  name: "reset_gpio"
+  type_id: 0x2560a232
+  offset: 7872
+}
+member {
+  id: 0x3e118cfb
+  name: "reset_gpiod"
+  type_id: 0x2560a232
+  offset: 20096
+}
+member {
+  id: 0x3a333154
+  name: "reset_in_progress"
+  type_id: 0x4585663f
+  offset: 11178
+  bitsize: 1
+}
+member {
+  id: 0xcfe72c2d
+  name: "reset_index"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0xb1b2f32e
+  name: "reset_methods"
+  type_id: 0x629984b1
+  offset: 25984
+}
+member {
+  id: 0x98c83941
+  name: "reset_pending"
+  type_id: 0x4585663f
+  offset: 448
+}
+member {
+  id: 0x5d8cba9a
+  name: "reset_plane"
+  type_id: 0x0e724a00
+  offset: 768
+}
+member {
+  id: 0x7df2f22e
+  name: "reset_post_delay_us"
+  type_id: 0x6720d32f
+  offset: 20064
+}
+member {
+  id: 0xb71e6da0
+  name: "reset_prepare"
+  type_id: 0x0fa845a7
+  offset: 192
+}
+member {
+  id: 0xa7913c80
+  name: "reset_resume"
+  type_id: 0x2fe06892
+  offset: 384
+}
+member {
+  id: 0xa792c035
+  name: "reset_resume"
+  type_id: 0x2c18712b
+  offset: 2688
+}
+member {
+  id: 0xa793f54a
+  name: "reset_resume"
+  type_id: 0x2d2e4d07
+  offset: 1280
+}
+member {
+  id: 0xac4bf7f1
+  name: "reset_resume"
+  type_id: 0x4585663f
+  offset: 11841
+  bitsize: 1
+}
+member {
+  id: 0x6b30e712
+  name: "reset_rx_to_maxsz"
+  type_id: 0x0d677682
+  offset: 128
+}
+member {
+  id: 0xf32d4080
+  name: "reset_slot"
+  type_id: 0x2ced3956
+  offset: 512
+}
+member {
+  id: 0xa700e1ff
+  name: "reset_state"
+  type_id: 0x3f42023f
+  offset: 67392
+}
+member {
+  id: 0xa4c83369
+  name: "reset_time"
+  type_id: 0xd5df6730
+  offset: 512
+}
+member {
+  id: 0x1956ee0e
+  name: "reset_ts"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x141797df
+  name: "reset_ws"
+  type_id: 0x1f3c8679
+  offset: 7744
+}
+member {
+  id: 0x4381fffc
+  name: "resetting_device"
+  type_id: 0x4585663f
+  offset: 326
+  bitsize: 1
+}
+member {
+  id: 0x01001bf3
+  name: "resid"
+  type_id: 0x6720d32f
+  offset: 576
+}
+member {
+  id: 0x01746af4
+  name: "resid"
+  type_id: 0x13580d6c
+  offset: 256
+}
+member {
+  id: 0x0b9f35f0
+  name: "resid_len"
+  type_id: 0x4585663f
+  offset: 2304
+}
+member {
+  id: 0x55c49546
+  name: "residency_ns"
+  type_id: 0x2e0f9112
+  offset: 128
+}
+member {
+  id: 0x3a956acf
+  name: "resident"
+  type_id: 0x6d7f5ff6
+  offset: 256
+}
+member {
+  id: 0x38e53c13
+  name: "residual_transfer_count"
+  type_id: 0xe276adef
+}
+member {
+  id: 0x4335a1cc
+  name: "residue"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x4335a3c7
+  name: "residue"
+  type_id: 0xc9082b19
+  offset: 3200
+}
+member {
+  id: 0x4335a816
+  name: "residue"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x0a157815
+  name: "residue_granularity"
+  type_id: 0x9d079a43
+  offset: 1376
+}
+member {
+  id: 0x0a157914
+  name: "residue_granularity"
+  type_id: 0x9d079a43
+  offset: 224
+}
+member {
+  id: 0xe9943b0c
+  name: "resilient"
+  type_id: 0x6d7f5ff6
+  offset: 96
+}
+member {
+  id: 0x779e58ad
+  name: "resist_table"
+  type_id: 0x1b9057c9
+  offset: 3520
+}
+member {
+  id: 0x5f01bd55
+  name: "resist_table_size"
+  type_id: 0x6720d32f
+  offset: 3584
+}
+member {
+  id: 0x46fd4851
+  name: "resistance"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x36433257
+  name: "resize"
+  type_id: 0x2f0359bb
+  offset: 1728
+}
+member {
+  id: 0xd712613b
+  name: "resize_disabled"
+  type_id: 0x74d29cf1
+  offset: 64
+}
+member {
+  id: 0x4927781f
+  name: "resize_in_progress"
+  type_id: 0x6d7f5ff6
+  offset: 32
+}
+member {
+  id: 0x3b07b402
+  name: "resize_wait"
+  type_id: 0x03913382
+  offset: 64
+}
+member {
+  id: 0x7f319b20
+  name: "resolution"
+  type_id: 0xc9082b19
+  offset: 320
+}
+member {
+  id: 0x7fcbe549
+  name: "resolution"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x7ff733c9
+  name: "resolution"
+  type_id: 0x0faae5b1
+  offset: 160
+}
+member {
+  id: 0xb3fa8c16
+  name: "resolution_max"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0x0385af98
+  name: "resolution_min"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0xe4c2f902
+  name: "resolution_multiplier"
+  type_id: 0x901eaf6a
+  offset: 96
+}
+member {
+  id: 0x740af64c
+  name: "resolve"
+  type_id: 0xedf277ba
+  offset: 128
+}
+member {
+  id: 0x7434c23f
+  name: "resolve"
+  type_id: 0xd3c80119
+  offset: 320
+}
+member {
+  id: 0x74f83441
+  name: "resolve"
+  type_id: 0x1f3c8679
+  offset: 2688
+}
+member {
+  id: 0x60f712a8
+  name: "resolved_ids"
+  type_id: 0x38d23361
+  offset: 128
+}
+member {
+  id: 0x5c154246
+  name: "resolved_sizes"
+  type_id: 0x38d23361
+  offset: 192
+}
+member {
+  id: 0x5d20698b
+  name: "resource"
+  type_id: 0x20351a02
+  offset: 3072
+}
+member {
+  id: 0x5d3b11e5
+  name: "resource"
+  type_id: 0x3b4ce03a
+  offset: 7680
+}
+member {
+  id: 0x5d3b1b01
+  name: "resource"
+  type_id: 0x3b4ce03a
+  offset: 64
+}
+member {
+  id: 0x5d82cb52
+  name: "resource"
+  type_id: 0x829e2b14
+  offset: 640
+}
+member {
+  id: 0x5db57a33
+  name: "resource"
+  type_id: 0xb522cc16
+  offset: 9024
+}
+member {
+  id: 0x19740c14
+  name: "resources"
+  type_id: 0x31e374a8
+  offset: 896
+}
+member {
+  id: 0x19740daa
+  name: "resources"
+  type_id: 0x31e374a8
+  offset: 512
+}
+member {
+  id: 0x19962569
+  name: "resources"
+  type_id: 0xd3c80119
+  offset: 768
+}
+member {
+  id: 0x19962761
+  name: "resources"
+  type_id: 0xd3c80119
+  offset: 896
+}
+member {
+  id: 0x19962dc7
+  name: "resources"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0x19962ffa
+  name: "resources"
+  type_id: 0xd3c80119
+  offset: 704
+}
+member {
+  id: 0x7347b99f
+  name: "resp"
+  type_id: 0xbe0f19dc
+  offset: 64
+}
+member {
+  id: 0x24e6c354
+  name: "resp_addr"
+  type_id: 0xa61911b2
+  offset: 328
+}
+member {
+  id: 0xc1610829
+  name: "resp_addr_type"
+  type_id: 0xb3e7bac9
+  offset: 376
+}
+member {
+  id: 0x405e3321
+  name: "response"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x409a9cb6
+  name: "response"
+  type_id: 0xedf277ba
+  offset: 384
+}
+member {
+  id: 0x40c8df2e
+  name: "response"
+  type_id: 0xbfb0d67f
+  offset: 256
+}
+member {
+  id: 0xa7a0b5c6
+  name: "response_code"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x7742509c
+  name: "response_len"
+  type_id: 0xe62ebf07
+  offset: 1056
+}
+member {
+  id: 0xdce92892
+  name: "response_upiu"
+  type_id: 0xbbc08245
+  offset: 4096
+}
+member {
+  id: 0xb3633170
+  name: "response_upiu_length"
+  type_id: 0x9bd401b6
+  offset: 192
+}
+member {
+  id: 0xb3633d58
+  name: "response_upiu_length"
+  type_id: 0x9bd401b6
+  offset: 64
+}
+member {
+  id: 0x4dbd0339
+  name: "response_upiu_offset"
+  type_id: 0x9bd401b6
+  offset: 80
+}
+member {
+  id: 0x4dbd03ca
+  name: "response_upiu_offset"
+  type_id: 0x9bd401b6
+  offset: 208
+}
+member {
+  id: 0x01c5b15c
+  name: "restart"
+  type_id: 0x2cec8a4c
+  offset: 512
+}
+member {
+  id: 0x3c43bf89
+  name: "restart_block"
+  type_id: 0x922075d2
+  offset: 12224
+}
+member {
+  id: 0x1eca4272
+  name: "restart_ms"
+  type_id: 0x6720d32f
+  offset: 1760
+}
+member {
+  id: 0xc74f5c19
+  name: "restart_nb"
+  type_id: 0x449a775b
+  offset: 832
+}
+member {
+  id: 0x069bde37
+  name: "restart_work"
+  type_id: 0xf1159c31
+  offset: 1792
+}
+member {
+  id: 0x951f3ba3
+  name: "restarts"
+  type_id: 0x74d29cf1
+  offset: 672
+}
+member {
+  id: 0x958dcd21
+  name: "restarts"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0xfa207214
+  name: "restore"
+  type_id: 0x2d24593d
+  offset: 128
+}
+member {
+  id: 0xfa208d76
+  name: "restore"
+  type_id: 0x2dd58efa
+  offset: 448
+}
+member {
+  id: 0xfa2232ae
+  name: "restore"
+  type_id: 0x2f63630f
+  offset: 2112
+}
+member {
+  id: 0xfa3e2222
+  name: "restore"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0x01b315b5
+  name: "restore_context"
+  type_id: 0x0e1867ef
+  offset: 576
+}
+member {
+  id: 0xde10fa05
+  name: "restore_early"
+  type_id: 0x2dd58efa
+  offset: 832
+}
+member {
+  id: 0x033f10ea
+  name: "restore_noirq"
+  type_id: 0x2dd58efa
+  offset: 1216
+}
+member {
+  id: 0xf1a0141c
+  name: "restrict_link"
+  type_id: 0x0a749c2b
+  offset: 1856
+}
+member {
+  id: 0x96dc5fbf
+  name: "restricted"
+  type_id: 0x4585663f
+  offset: 258
+  bitsize: 1
+}
+member {
+  id: 0x5c36e07a
+  name: "restrictions"
+  type_id: 0x796260d9
+  offset: 6144
+}
+member {
+  id: 0x072f3975
+  name: "result"
+  type_id: 0x00c72527
+  offset: 512
+}
+member {
+  id: 0x073741ef
+  name: "result"
+  type_id: 0x18bd6530
+  offset: 128
+}
+member {
+  id: 0x0748d0a5
+  name: "result"
+  type_id: 0x6720d32f
+  offset: 2688
+}
+member {
+  id: 0x0748dce9
+  name: "result"
+  type_id: 0x6720d32f
+  offset: 576
+}
+member {
+  id: 0x07c203de
+  name: "result"
+  type_id: 0xedf277ba
+  offset: 64
+}
+member {
+  id: 0x07c20efd
+  name: "result"
+  type_id: 0xedf277ba
+  offset: 128
+}
+member {
+  id: 0x07cb2b16
+  name: "result"
+  type_id: 0xe4de5ee5
+}
+member {
+  id: 0x11ce48cf
+  name: "result_filtering"
+  type_id: 0x6d7f5ff6
+  offset: 840
+}
+member {
+  id: 0x96ec44c1
+  name: "result_mask"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xca901898
+  name: "resume"
+  type_id: 0x0ff0075d
+  offset: 960
+}
+member {
+  id: 0xca904fee
+  name: "resume"
+  type_id: 0x0fa845a7
+  offset: 320
+}
+member {
+  id: 0xca90626a
+  name: "resume"
+  type_id: 0x0f8519f7
+  offset: 1024
+}
+member {
+  id: 0xca915e88
+  name: "resume"
+  type_id: 0x0eb62dc3
+  offset: 192
+}
+member {
+  id: 0xca916804
+  name: "resume"
+  type_id: 0x0e837004
+  offset: 512
+}
+member {
+  id: 0xca92fc07
+  name: "resume"
+  type_id: 0x0d1baca2
+  offset: 320
+}
+member {
+  id: 0xca930765
+  name: "resume"
+  type_id: 0x0ce07e73
+  offset: 448
+}
+member {
+  id: 0xca934f5e
+  name: "resume"
+  type_id: 0x0ca42ad3
+  offset: 512
+}
+member {
+  id: 0xca935288
+  name: "resume"
+  type_id: 0x0cb02071
+  offset: 1216
+}
+member {
+  id: 0xcab007c3
+  name: "resume"
+  type_id: 0x2fe06892
+  offset: 320
+}
+member {
+  id: 0xcab082d3
+  name: "resume"
+  type_id: 0x2f6a769c
+  offset: 192
+}
+member {
+  id: 0xcab10ef4
+  name: "resume"
+  type_id: 0x2ee76b64
+  offset: 2240
+}
+member {
+  id: 0xcab17152
+  name: "resume"
+  type_id: 0x2e9195ef
+  offset: 256
+}
+member {
+  id: 0xcab1e4d7
+  name: "resume"
+  type_id: 0x2e037cf1
+  offset: 320
+}
+member {
+  id: 0xcab20ff2
+  name: "resume"
+  type_id: 0x2de9e33f
+  offset: 1280
+}
+member {
+  id: 0xcab23d11
+  name: "resume"
+  type_id: 0x2dd58efa
+  offset: 960
+}
+member {
+  id: 0xcab23d2b
+  name: "resume"
+  type_id: 0x2dd58efa
+  offset: 192
+}
+member {
+  id: 0xcab23d4c
+  name: "resume"
+  type_id: 0x2dd58efa
+  offset: 768
+}
+member {
+  id: 0xcab2944f
+  name: "resume"
+  type_id: 0x2d7cd0a0
+  offset: 960
+}
+member {
+  id: 0xcab2cce5
+  name: "resume"
+  type_id: 0x2d2e4d07
+  offset: 1216
+}
+member {
+  id: 0xcab2e276
+  name: "resume"
+  type_id: 0x2d078518
+  offset: 2176
+}
+member {
+  id: 0xcab3006c
+  name: "resume"
+  type_id: 0x2ce67932
+  offset: 640
+}
+member {
+  id: 0xcab30972
+  name: "resume"
+  type_id: 0x2cee6908
+  offset: 448
+}
+member {
+  id: 0xcab3751a
+  name: "resume"
+  type_id: 0x2c95dd45
+  offset: 256
+}
+member {
+  id: 0xcab3f147
+  name: "resume"
+  type_id: 0x2c18712b
+  offset: 2624
+}
+member {
+  id: 0xa4d8edf6
+  name: "resume_done"
+  type_id: 0x80dc069a
+  offset: 256
+}
+member {
+  id: 0x1f2177ef
+  name: "resume_early"
+  type_id: 0x2dd58efa
+  offset: 576
+}
+member {
+  id: 0xb4490be6
+  name: "resume_freq"
+  type_id: 0x33756485
+  offset: 11392
+}
+member {
+  id: 0x828c0235
+  name: "resume_latency"
+  type_id: 0x4ba02d1a
+}
+member {
+  id: 0x8100936d
+  name: "resume_latency_req"
+  type_id: 0x160238dd
+  offset: 2624
+}
+member {
+  id: 0xe1b4cd2d
+  name: "resume_noirq"
+  type_id: 0x2dd58efa
+  offset: 960
+}
+member {
+  id: 0xf08d6209
+  name: "resume_post"
+  type_id: 0x2c61df5b
+  offset: 2368
+}
+member {
+  id: 0x2e249adf
+  name: "resume_pre"
+  type_id: 0x2c61df5b
+  offset: 2304
+}
+member {
+  id: 0x4b77399a
+  name: "resume_work"
+  type_id: 0x1f3c8679
+  offset: 1216
+}
+member {
+  id: 0x4b773c29
+  name: "resume_work"
+  type_id: 0x1f3c8679
+  offset: 448
+}
+member {
+  id: 0x4b773ec1
+  name: "resume_work"
+  type_id: 0x1f3c8679
+  offset: 2176
+}
+member {
+  id: 0x690ac235
+  name: "resuming_ports"
+  type_id: 0x33756485
+  offset: 5056
+}
+member {
+  id: 0x690acff6
+  name: "resuming_ports"
+  type_id: 0x33756485
+  offset: 2240
+}
+member {
+  id: 0x697c3b1d
+  name: "resuming_ports"
+  type_id: 0x4585663f
+  offset: 1120
+}
+member {
+  id: 0xbb1a6213
+  name: "resv"
+  type_id: 0xa0b4fda8
+  offset: 224
+}
+member {
+  id: 0xbb52da47
+  name: "resv"
+  type_id: 0xe8034002
+  offset: 112
+}
+member {
+  id: 0xbb9d92d5
+  name: "resv"
+  type_id: 0x27459bea
+  offset: 1984
+}
+member {
+  id: 0xbb9d94b0
+  name: "resv"
+  type_id: 0x27459bea
+  offset: 64
+}
+member {
+  id: 0xbb9d9796
+  name: "resv"
+  type_id: 0x27459bea
+  offset: 320
+}
+member {
+  id: 0xbb9d9ad2
+  name: "resv"
+  type_id: 0x27459bea
+  offset: 1344
+}
+member {
+  id: 0x942d1fcf
+  name: "resv1"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x48698f1c
+  name: "resv2"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x17a72bb7
+  name: "resv3"
+  type_id: 0xe8034002
+  offset: 96
+}
+member {
+  id: 0xaed031f5
+  name: "resv_start_op"
+  type_id: 0x295c7202
+  offset: 320
+}
+member {
+  id: 0x517bb4e8
+  name: "ret"
+  type_id: 0xedf277ba
+  offset: 64
+}
+member {
+  id: 0x517bb77e
+  name: "ret"
+  type_id: 0xedf277ba
+  offset: 448
+}
+member {
+  id: 0x51f16a64
+  name: "ret"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0x51f16f96
+  name: "ret"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x51f63d7f
+  name: "ret"
+  type_id: 0x607419c2
+  offset: 512
+}
+member {
+  id: 0x4c003468
+  name: "ret_addr"
+  type_id: 0x372be6f8
+  offset: 256
+}
+member {
+  id: 0x2269f66f
+  name: "ret_btf_id"
+  type_id: 0x13580d6c
+  offset: 640
+}
+member {
+  id: 0x3f46e4cc
+  name: "ret_handler"
+  type_id: 0x2d2b09a5
+  offset: 64
+}
+member {
+  id: 0xf6185381
+  name: "ret_size"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x07ab946a
+  name: "ret_type"
+  type_id: 0xe448b2fe
+  offset: 96
+}
+member {
+  id: 0xff72a66c
+  name: "ret_value"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0xf64e43b1
+  name: "retimer"
+  type_id: 0x26927abb
+  offset: 8320
+}
+member {
+  id: 0x074c5274
+  name: "retire_data_urb"
+  type_id: 0x0e3cbe6a
+  offset: 448
+}
+member {
+  id: 0x533104e4
+  name: "retrans"
+  type_id: 0x0abe9fd1
+  offset: 336
+}
+member {
+  id: 0x274e5514
+  name: "retrans_list"
+  type_id: 0xa9daefe1
+  offset: 7104
+}
+member {
+  id: 0x2f1b8a8e
+  name: "retrans_timeout"
+  type_id: 0xe8034002
+  offset: 1152
+}
+member {
+  id: 0x3c96e57b
+  name: "retrans_timer"
+  type_id: 0xf1159c31
+  offset: 3264
+}
+member {
+  id: 0x4f0d9bec
+  name: "retries"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x4f8c91e3
+  name: "retries"
+  type_id: 0x6720d32f
+  offset: 160
+}
+member {
+  id: 0x4f8c96e4
+  name: "retries"
+  type_id: 0x6720d32f
+  offset: 1536
+}
+member {
+  id: 0x4f8c9ace
+  name: "retries"
+  type_id: 0x6720d32f
+  offset: 864
+}
+member {
+  id: 0x4fae3a92
+  name: "retries"
+  type_id: 0x4585663f
+  offset: 224
+}
+member {
+  id: 0x4fd8c2ac
+  name: "retries"
+  type_id: 0x33756485
+  offset: 512
+}
+member {
+  id: 0x7f86d402
+  name: "retry"
+  type_id: 0xe8d14bc6
+}
+member {
+  id: 0x0a6b3115
+  name: "retry_count"
+  type_id: 0xb3e7bac9
+  offset: 1648
+}
+member {
+  id: 0x89243658
+  name: "retry_delay"
+  type_id: 0xe62ebf07
+  offset: 960
+}
+member {
+  id: 0x2bff12fb
+  name: "retry_hwerror"
+  type_id: 0x4585663f
+  offset: 2818
+  bitsize: 1
+}
+member {
+  id: 0x0e577c51
+  name: "retry_long"
+  type_id: 0x295c7202
+  offset: 1576
+}
+member {
+  id: 0xb7384bd0
+  name: "retry_short"
+  type_id: 0x295c7202
+  offset: 1568
+}
+member {
+  id: 0x920b63e5
+  name: "retune_crc_disable"
+  type_id: 0x4585663f
+  offset: 8487
+  bitsize: 1
+}
+member {
+  id: 0x30fa26d8
+  name: "retune_now"
+  type_id: 0x4585663f
+  offset: 8485
+  bitsize: 1
+}
+member {
+  id: 0x9d12520a
+  name: "retune_paused"
+  type_id: 0x4585663f
+  offset: 8486
+  bitsize: 1
+}
+member {
+  id: 0x600fcfb3
+  name: "retune_period"
+  type_id: 0x4585663f
+  offset: 8640
+}
+member {
+  id: 0x8034ecbd
+  name: "retune_timer"
+  type_id: 0xd298e888
+  offset: 8704
+}
+member {
+  id: 0xd7936fe4
+  name: "return_code"
+  type_id: 0xfc0e1dbd
+  offset: 640
+}
+member {
+  id: 0x99e23032
+  name: "return_error"
+  type_id: 0x32ad011b
+  offset: 768
+}
+member {
+  id: 0xea1cc4b8
+  name: "return_instances"
+  type_id: 0x0cef4974
+  offset: 384
+}
+member {
+  id: 0xe9fe320f
+  name: "return_valid"
+  type_id: 0x6720d32f
+  offset: 768
+}
+member {
+  id: 0x9c050f4d
+  name: "retval"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x26e4f244
+  name: "reuseport_id"
+  type_id: 0x4585663f
+  offset: 224
+}
+member {
+  id: 0xd2241279
+  name: "rev"
+  type_id: 0x3e10b518
+  offset: 2112
+}
+member {
+  id: 0xd2297123
+  name: "rev"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0xd23350fc
+  name: "rev"
+  type_id: 0x295c7202
+}
+member {
+  id: 0xd2335dc7
+  name: "rev"
+  type_id: 0x295c7202
+  offset: 32
+}
+member {
+  id: 0x006556c8
+  name: "revents"
+  type_id: 0xb0312d5a
+  offset: 48
+}
+member {
+  id: 0x6ec28ed3
+  name: "reverse"
+  type_id: 0x3ae3ff84
+  offset: 512
+}
+member {
+  id: 0x6ec6b7fe
+  name: "reverse"
+  type_id: 0x3ed52bb5
+  offset: 64
+}
+member {
+  id: 0x6ef6398b
+  name: "reverse"
+  type_id: 0x0e56cd62
+  offset: 576
+}
+member {
+  id: 0xc958f9f6
+  name: "reverse_ordering"
+  type_id: 0x4585663f
+  offset: 4355
+  bitsize: 1
+}
+member {
+  id: 0x5ab88fd9
+  name: "revid"
+  type_id: 0x295c7202
+  offset: 32
+}
+member {
+  id: 0x941b3706
+  name: "revision"
+  type_id: 0xb3e7bac9
+  offset: 1128
+}
+member {
+  id: 0x94399220
+  name: "revision"
+  type_id: 0x914dbfdc
+  offset: 7328
+}
+member {
+  id: 0x943995c5
+  name: "revision"
+  type_id: 0x914dbfdc
+  offset: 64
+}
+member {
+  id: 0x9481899b
+  name: "revision"
+  type_id: 0x295c7202
+  offset: 576
+}
+member {
+  id: 0x94818e1e
+  name: "revision"
+  type_id: 0x295c7202
+  offset: 152
+}
+member {
+  id: 0x9496c5ec
+  name: "revision"
+  type_id: 0x3e10b518
+  offset: 128
+}
+member {
+  id: 0xbcd2bd0f
+  name: "revmap"
+  type_id: 0xc6e69d29
+  offset: 1600
+}
+member {
+  id: 0x2f9b3f87
+  name: "revmap_mutex"
+  type_id: 0xa7c362b0
+  offset: 1216
+}
+member {
+  id: 0x19eb79be
+  name: "revmap_size"
+  type_id: 0x4585663f
+  offset: 1024
+}
+member {
+  id: 0xa5f55c89
+  name: "revmap_tree"
+  type_id: 0x80c20070
+  offset: 1088
+}
+member {
+  id: 0x9deb3429
+  name: "revoke"
+  type_id: 0x0eac4549
+  offset: 640
+}
+member {
+  id: 0xd84822ff
+  name: "revoked_at"
+  type_id: 0x865acc96
+}
+member {
+  id: 0x13a02804
+  name: "rew"
+  type_id: 0xf961bea8
+  offset: 4480
+}
+member {
+  id: 0x880ef212
+  name: "rew_s"
+  type_id: 0x33756485
+}
+member {
+  id: 0x408b49f8
+  name: "rew_work"
+  type_id: 0x3835dcc0
+  offset: 64
+}
+member {
+  id: 0x51171cc3
+  name: "rexit_done"
+  type_id: 0x83f3a37a
+  offset: 2368
+}
+member {
+  id: 0x0ec75254
+  name: "rexit_ports"
+  type_id: 0x33756485
+  offset: 2304
+}
+member {
+  id: 0x6f6cda9d
+  name: "rf_mode"
+  type_id: 0x295c7202
+  offset: 7504
+}
+member {
+  id: 0x80a0a17f
+  name: "rfkill"
+  type_id: 0x079ff791
+  offset: 11840
+}
+member {
+  id: 0x80a0a360
+  name: "rfkill"
+  type_id: 0x079ff791
+  offset: 9280
+}
+member {
+  id: 0x80a0a3ee
+  name: "rfkill"
+  type_id: 0x079ff791
+  offset: 38976
+}
+member {
+  id: 0x6ba9654a
+  name: "rfkill_release"
+  type_id: 0x6d7f5ff6
+  offset: 48
+}
+member {
+  id: 0x383b6b28
+  name: "rgb_quant_range_selectable"
+  type_id: 0x6d7f5ff6
+  offset: 376
+}
+member {
+  id: 0x76ae6d41
+  name: "rh_bw"
+  type_id: 0x16b3c998
+  offset: 20096
+}
+member {
+  id: 0x19fc01b5
+  name: "rh_pollable"
+  type_id: 0x4585663f
+  offset: 3361
+  bitsize: 1
+}
+member {
+  id: 0x46ed8f1f
+  name: "rh_registered"
+  type_id: 0x4585663f
+  offset: 3360
+  bitsize: 1
+}
+member {
+  id: 0xee68eb1f
+  name: "rh_state"
+  type_id: 0x1f1172b5
+  offset: 1792
+}
+member {
+  id: 0x4e68600e
+  name: "rh_timer"
+  type_id: 0xd298e888
+  offset: 1792
+}
+member {
+  id: 0x35e99c1b
+  name: "rhash_params"
+  type_id: 0x390efe6c
+  offset: 384
+}
+member {
+  id: 0x66dbd883
+  name: "rhashtable"
+  type_id: 0x674028f7
+  offset: 512
+}
+member {
+  id: 0xbc35a2dd
+  name: "rhead"
+  type_id: 0x80bff031
+}
+member {
+  id: 0xbc563875
+  name: "rhead"
+  type_id: 0xe3222f5b
+  offset: 448
+}
+member {
+  id: 0xe3226e74
+  name: "rhlist"
+  type_id: 0x6d7f5ff6
+  offset: 448
+}
+member {
+  id: 0x92831ce6
+  name: "rhub"
+  type_id: 0x39d60e4a
+  offset: 128
+}
+member {
+  id: 0x7f88b19c
+  name: "ri_uohm"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x0b33391b
+  name: "right"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x0b575f58
+  name: "right"
+  type_id: 0x21ee065a
+  offset: 128
+}
+member {
+  id: 0x915cadeb
+  name: "right_bar"
+  type_id: 0xc93e017b
+  offset: 512
+}
+member {
+  id: 0x0471a4af
+  name: "right_coeff"
+  type_id: 0x007e8ce4
+  offset: 32
+}
+member {
+  id: 0xf7068af4
+  name: "right_margin"
+  type_id: 0xc9082b19
+  offset: 224
+}
+member {
+  id: 0xf729a989
+  name: "right_margin"
+  type_id: 0xe62ebf07
+  offset: 864
+}
+member {
+  id: 0x53f3cfab
+  name: "right_saturation"
+  type_id: 0xe8034002
+}
+member {
+  id: 0xd45ffcbe
+  name: "ring"
+  type_id: 0xc1a4aa72
+  offset: 32
+}
+member {
+  id: 0xd46fc5b2
+  name: "ring"
+  type_id: 0xf19da60e
+  offset: 32
+}
+member {
+  id: 0xd4a95949
+  name: "ring"
+  type_id: 0x3705a40d
+  offset: 128
+}
+member {
+  id: 0xd4bfee3f
+  name: "ring"
+  type_id: 0x21b2d2f4
+  offset: 128
+}
+member {
+  id: 0xd4d3c606
+  name: "ring"
+  type_id: 0x4d9ad078
+  offset: 10752
+}
+member {
+  id: 0x31683fef
+  name: "ring_cookie"
+  type_id: 0xedf277ba
+  offset: 1216
+}
+member {
+  id: 0xa819df37
+  name: "ring_lock"
+  type_id: 0xa7c362b0
+}
+member {
+  id: 0xa84d097f
+  name: "ring_lock"
+  type_id: 0xf313e71a
+  offset: 24704
+}
+member {
+  id: 0x66a87345
+  name: "ring_mask"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x44db6fdd
+  name: "ring_pages"
+  type_id: 0x0b30ee00
+  offset: 704
+}
+member {
+  id: 0x9481d6fb
+  name: "ring_size"
+  type_id: 0x4585663f
+  offset: 864
+}
+member {
+  id: 0x55faf029
+  name: "ring_sock"
+  type_id: 0x106029c6
+  offset: 8128
+}
+member {
+  id: 0x7633aeb9
+  name: "rings"
+  type_id: 0x16c47ce6
+  offset: 128
+}
+member {
+  id: 0x28cf1121
+  name: "rip"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0xb09d2ffa
+  name: "riscv_csr"
+  type_id: 0x0f0b7249
+}
+member {
+  id: 0x112a2e09
+  name: "riscv_sbi"
+  type_id: 0x378b9399
+}
+member {
+  id: 0xef0151a4
+  name: "rlim"
+  type_id: 0x5fa20088
+  offset: 5504
+}
+member {
+  id: 0x9588fa25
+  name: "rlim_cur"
+  type_id: 0x21d43a7b
+}
+member {
+  id: 0xc546fb05
+  name: "rlim_max"
+  type_id: 0x21d43a7b
+  offset: 64
+}
+member {
+  id: 0xfc2a57f8
+  name: "rlim_stack"
+  type_id: 0x4e470864
+  offset: 1152
+}
+member {
+  id: 0xfccdbbc8
+  name: "rlimit"
+  type_id: 0xa047de54
+  offset: 896
+}
+member {
+  id: 0x4ba8c21a
+  name: "rlimit_max"
+  type_id: 0xb34e9475
+  offset: 4864
+}
+member {
+  id: 0x6e872813
+  name: "rlock"
+  type_id: 0x6a35bdd9
+}
+member {
+  id: 0x227902d6
+  name: "rm_work"
+  type_id: 0x1f3c8679
+  offset: 7808
+}
+member {
+  id: 0x1b361d35
+  name: "rm_xquota"
+  type_id: 0x2fdb6288
+  offset: 640
+}
+member {
+  id: 0xb18e33dc
+  name: "rmask"
+  type_id: 0x4585663f
+  offset: 4096
+}
+member {
+  id: 0x9c0998f4
+  name: "rmdir"
+  type_id: 0x2c5a5d26
+  offset: 640
+}
+member {
+  id: 0x9c0b9827
+  name: "rmdir"
+  type_id: 0x2e5535c9
+  offset: 128
+}
+member {
+  id: 0x5bb864db
+  name: "rmem_alloc"
+  type_id: 0x74d29cf1
+}
+member {
+  id: 0xf394068c
+  name: "rmtp"
+  type_id: 0x2cf602c9
+}
+member {
+  id: 0xdd584c28
+  name: "rng"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xddd94244
+  name: "rng"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0xe65e5168
+  name: "rnw"
+  type_id: 0x295c7202
+}
+member {
+  id: 0xbc80ab33
+  name: "ro"
+  type_id: 0x384f7d7c
+  offset: 64
+}
+member {
+  id: 0xbcdfc943
+  name: "ro"
+  type_id: 0x6720d32f
+  offset: 8448
+}
+member {
+  id: 0xbcef8ba5
+  name: "ro"
+  type_id: 0x576c156c
+  offset: 1024
+}
+member {
+  id: 0xfaa159ab
+  name: "ro"
+  type_id: 0x4585663f
+  offset: 193
+  bitsize: 1
+}
+member {
+  id: 0x9d87c86c
+  name: "ro_after_init_size"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0x5a1dbaba
+  name: "ro_count"
+  type_id: 0x4585663f
+  offset: 1568
+}
+member {
+  id: 0xd8a6e596
+  name: "ro_size"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x463c4be7
+  name: "robust_list"
+  type_id: 0x32c6e924
+  offset: 20864
+}
+member {
+  id: 0x51650e94
+  name: "rodata"
+  type_id: 0xf57b706b
+  offset: 256
+}
+member {
+  id: 0xc0218791
+  name: "role"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0xc0218aaa
+  name: "role"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xc024bfe6
+  name: "role"
+  type_id: 0xcc33625b
+  offset: 7680
+}
+member {
+  id: 0xc05b666e
+  name: "role"
+  type_id: 0xb3e7bac9
+  offset: 464
+}
+member {
+  id: 0xc069e42e
+  name: "role"
+  type_id: 0x8167e73b
+  offset: 7360
+}
+member {
+  id: 0xc0868466
+  name: "role"
+  type_id: 0x6e06e717
+}
+member {
+  id: 0xf14b14bf
+  name: "role_allow"
+  type_id: 0x168d6de3
+  offset: 3456
+}
+member {
+  id: 0x8230dfbb
+  name: "role_sw"
+  type_id: 0x3a6106d5
+  offset: 1344
+}
+member {
+  id: 0xf59baf0b
+  name: "role_switch_cfm"
+  type_id: 0x0cbe17fd
+  offset: 448
+}
+member {
+  id: 0x3981996e
+  name: "role_tr"
+  type_id: 0x26a23d9b
+  offset: 2624
+}
+member {
+  id: 0x9361a429
+  name: "role_val_to_struct"
+  type_id: 0x02dfb39a
+  offset: 2240
+}
+member {
+  id: 0x39f20f43
+  name: "roles"
+  type_id: 0x86a931f9
+  offset: 64
+}
+member {
+  id: 0x39f4cfd4
+  name: "roles"
+  type_id: 0x8069a6a3
+  offset: 64
+}
+member {
+  id: 0x9d7c2258
+  name: "rom"
+  type_id: 0xbdd18903
+  offset: 25728
+}
+member {
+  id: 0x3a36f5b3
+  name: "rom_attr_enabled"
+  type_id: 0x6720d32f
+  offset: 22784
+}
+member {
+  id: 0xf711191b
+  name: "rom_bar_overlap"
+  type_id: 0x4585663f
+  offset: 22125
+  bitsize: 1
+}
+member {
+  id: 0x26310f84
+  name: "rom_base_reg"
+  type_id: 0x295c7202
+  offset: 896
+}
+member {
+  id: 0x9ae71fdb
+  name: "rom_ver"
+  type_id: 0x9bd401b6
+  offset: 48
+}
+member {
+  id: 0x29795d54
+  name: "romlen"
+  type_id: 0xf435685e
+  offset: 25792
+}
+member {
+  id: 0x930fdb11
+  name: "root"
+  type_id: 0xd0f3b5bf
+}
+member {
+  id: 0x9334b3c4
+  name: "root"
+  type_id: 0xeb923a9b
+  offset: 2624
+}
+member {
+  id: 0x9334bce7
+  name: "root"
+  type_id: 0xeb923a9b
+  offset: 640
+}
+member {
+  id: 0x93ae86ed
+  name: "root"
+  type_id: 0x71a68091
+  offset: 192
+}
+member {
+  id: 0x93ae8e8f
+  name: "root"
+  type_id: 0x71a68091
+  offset: 256
+}
+member {
+  id: 0x93c79120
+  name: "root"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0x93c89d97
+  name: "root"
+  type_id: 0x17bdfa07
+  offset: 192
+}
+member {
+  id: 0x93cd2b9d
+  name: "root"
+  type_id: 0x120540d1
+  offset: 640
+}
+member {
+  id: 0x93d246f9
+  name: "root"
+  type_id: 0x0d679fed
+  offset: 128
+}
+member {
+  id: 0x93da77c2
+  name: "root"
+  type_id: 0x055f6606
+}
+member {
+  id: 0x93dd07b7
+  name: "root"
+  type_id: 0x0226d1ba
+  offset: 128
+}
+member {
+  id: 0x93eb7345
+  name: "root"
+  type_id: 0x3451622a
+  offset: 1344
+}
+member {
+  id: 0x93eb7f65
+  name: "root"
+  type_id: 0x3451622a
+  offset: 6272
+}
+member {
+  id: 0x93f07164
+  name: "root"
+  type_id: 0x2f5d21aa
+  offset: 64
+}
+member {
+  id: 0x93f22e79
+  name: "root"
+  type_id: 0x2d011a2d
+  offset: 320
+}
+member {
+  id: 0x93ff4353
+  name: "root"
+  type_id: 0x206bf782
+}
+member {
+  id: 0xab5b3588
+  name: "root_blkg"
+  type_id: 0x03d5ac6b
+  offset: 3648
+}
+member {
+  id: 0x83c4175b
+  name: "root_cset"
+  type_id: 0x0d821a01
+  offset: 320
+}
+member {
+  id: 0xd4e784ae
+  name: "root_hash"
+  type_id: 0x39fc1b17
+  offset: 960
+}
+member {
+  id: 0xa2cb8ced
+  name: "root_hub"
+  type_id: 0x0d7ce7cc
+  offset: 896
+}
+member {
+  id: 0x4f95f889
+  name: "root_list"
+  type_id: 0xd3c80119
+  offset: 13696
+}
+member {
+  id: 0xc2f2179a
+  name: "root_only"
+  type_id: 0x6d7f5ff6
+  offset: 7560
+}
+member {
+  id: 0xc2f21cc5
+  name: "root_only"
+  type_id: 0x6d7f5ff6
+  offset: 520
+}
+member {
+  id: 0x911ecef3
+  name: "root_seq"
+  type_id: 0x4585663f
+  offset: 1728
+}
+member {
+  id: 0x3537a868
+  name: "rootid"
+  type_id: 0xe90b32b7
+  offset: 256
+}
+member {
+  id: 0xb6691b39
+  name: "rootport_total_cor_errs"
+  type_id: 0x92233392
+  offset: 4672
+}
+member {
+  id: 0xde16cb2d
+  name: "rootport_total_fatal_errs"
+  type_id: 0x92233392
+  offset: 4736
+}
+member {
+  id: 0x6479c071
+  name: "rootport_total_nonfatal_errs"
+  type_id: 0x92233392
+  offset: 4800
+}
+member {
+  id: 0xb97636cd
+  name: "roots"
+  type_id: 0x9c44ff2a
+}
+member {
+  id: 0x38930b8b
+  name: "rop"
+  type_id: 0xe8034002
+  offset: 32
+}
+member {
+  id: 0x389d26af
+  name: "rop"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0xf9d86c9d
+  name: "rotate"
+  type_id: 0xe62ebf07
+  offset: 1088
+}
+member {
+  id: 0x38597ab8
+  name: "rotate_disable"
+  type_id: 0x6720d32f
+  offset: 1472
+}
+member {
+  id: 0x8a8cbcd0
+  name: "rotate_necessary"
+  type_id: 0x6720d32f
+  offset: 1504
+}
+member {
+  id: 0x465224ed
+  name: "rotation"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x46522709
+  name: "rotation"
+  type_id: 0x4585663f
+  offset: 544
+}
+member {
+  id: 0x46b31b12
+  name: "rotation"
+  type_id: 0xa4b7a249
+}
+member {
+  id: 0x310d45cf
+  name: "rotation_property"
+  type_id: 0x2a670b41
+  offset: 10240
+}
+member {
+  id: 0x93e0c28c
+  name: "rotation_reflection"
+  type_id: 0x4585663f
+  offset: 480
+}
+member {
+  id: 0x073a4d9a
+  name: "round_rate"
+  type_id: 0x23c56cdf
+  offset: 704
+}
+member {
+  id: 0xd4cac89e
+  name: "round_robin"
+  type_id: 0x6d7f5ff6
+  offset: 96
+}
+member {
+  id: 0x995819c8
+  name: "route"
+  type_id: 0xc9082b19
+  offset: 160
+}
+member {
+  id: 0xf5c410e8
+  name: "route_data"
+  type_id: 0x18bd6530
+  offset: 768
+}
+member {
+  id: 0xdcdb6d37
+  name: "route_free"
+  type_id: 0x0e8b1f30
+  offset: 64
+}
+member {
+  id: 0xde64bb61
+  name: "route_hdr"
+  type_id: 0x34544a3f
+  offset: 64
+}
+member {
+  id: 0xde64bd44
+  name: "route_hdr"
+  type_id: 0x34544a3f
+  offset: 1216
+}
+member {
+  id: 0xfab1d596
+  name: "router"
+  type_id: 0x0b131b04
+  offset: 704
+}
+member {
+  id: 0x1061afd7
+  name: "routing"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0x9974ea67
+  name: "row_height_minus1"
+  type_id: 0xc0ded7fc
+  offset: 240
+}
+member {
+  id: 0x62a51782
+  name: "rp"
+  type_id: 0x2a653aa6
+}
+member {
+  id: 0x4b6f45cd
+  name: "rpa"
+  type_id: 0xa61911b2
+  offset: 47936
+}
+member {
+  id: 0x2fd08efd
+  name: "rpa_expired"
+  type_id: 0xf1159c31
+  offset: 46848
+}
+member {
+  id: 0x0eb3e9bf
+  name: "rpa_timeout"
+  type_id: 0xe62ebf07
+  offset: 46816
+}
+member {
+  id: 0x602447ba
+  name: "rpdev"
+  type_id: 0x25b73daa
+}
+member {
+  id: 0x81a78d3b
+  name: "rph"
+  type_id: 0x2bfa82e1
+  offset: 192
+}
+member {
+  id: 0x81a78f71
+  name: "rph"
+  type_id: 0x2bfa82e1
+  offset: 1344
+}
+member {
+  id: 0x4405af20
+  name: "rpl_seg_enabled"
+  type_id: 0x0faae5b1
+  offset: 1824
+}
+member {
+  id: 0x583fca22
+  name: "rpm_active"
+  type_id: 0xa722c13e
+  offset: 7744
+}
+member {
+  id: 0xdeaf70e9
+  name: "rpm_autosuspend"
+  type_id: 0x4585663f
+  offset: 2830
+  bitsize: 1
+}
+member {
+  id: 0x95db197e
+  name: "rpm_autosuspend_delay"
+  type_id: 0x6720d32f
+  offset: 2880
+}
+member {
+  id: 0xd6a69c34
+  name: "rpm_dev_flush_recheck_work"
+  type_id: 0xf1159c31
+  offset: 34816
+}
+member {
+  id: 0x1070b82a
+  name: "rpm_enabled"
+  type_id: 0x6d7f5ff6
+  offset: 968
+}
+member {
+  id: 0x175e0853
+  name: "rpm_lvl"
+  type_id: 0xa69e469b
+  offset: 704
+}
+member {
+  id: 0x82287aae
+  name: "rpm_status"
+  type_id: 0x495d0861
+  offset: 1984
+}
+member {
+  id: 0x97854725
+  name: "rpm_tx_active"
+  type_id: 0x4585663f
+  offset: 4960
+}
+member {
+  id: 0x5e45de2a
+  name: "rpmbs"
+  type_id: 0xd3c80119
+  offset: 3776
+}
+member {
+  id: 0x3c98b297
+  name: "rps_flow_table"
+  type_id: 0x29020aff
+  offset: 576
+}
+member {
+  id: 0xbde0a66c
+  name: "rps_ipi_list"
+  type_id: 0x0b11a1e3
+  offset: 448
+}
+member {
+  id: 0xb8c846ec
+  name: "rps_ipi_next"
+  type_id: 0x0b11a1e3
+  offset: 1792
+}
+member {
+  id: 0x80c6152c
+  name: "rps_map"
+  type_id: 0x1eb02e8b
+  offset: 512
+}
+member {
+  id: 0x0d1ed539
+  name: "rq"
+  type_id: 0x2e029f76
+  offset: 2432
+}
+member {
+  id: 0x0d2e502f
+  name: "rq"
+  type_id: 0x1e820193
+}
+member {
+  id: 0x76248d89
+  name: "rq_count"
+  type_id: 0xc93e017b
+  offset: 144
+}
+member {
+  id: 0x327e14af
+  name: "rq_cpu_time"
+  type_id: 0xd5df6730
+  offset: 28544
+}
+member {
+  id: 0x97cc8149
+  name: "rq_flags"
+  type_id: 0x9e3964d1
+  offset: 224
+}
+member {
+  id: 0x97cc8f8d
+  name: "rq_flags"
+  type_id: 0x9e3964d1
+  offset: 160
+}
+member {
+  id: 0xa89e596a
+  name: "rq_lists"
+  type_id: 0x2637f572
+  offset: 64
+}
+member {
+  id: 0xab9a9d3d
+  name: "rq_next"
+  type_id: 0x1e820193
+}
+member {
+  id: 0x1410b593
+  name: "rq_offline"
+  type_id: 0x0c560434
+  offset: 1024
+}
+member {
+  id: 0x5989d0ea
+  name: "rq_online"
+  type_id: 0x0c560434
+  offset: 960
+}
+member {
+  id: 0x887ded26
+  name: "rq_qos"
+  type_id: 0x1d1533af
+  offset: 320
+}
+member {
+  id: 0x4a732b8a
+  name: "rq_sched_info"
+  type_id: 0x4d09650b
+  offset: 28288
+}
+member {
+  id: 0x4f869839
+  name: "rq_status"
+  type_id: 0x7be80061
+  offset: 8
+}
+member {
+  id: 0xdd46fda5
+  name: "rq_timeout"
+  type_id: 0x4585663f
+  offset: 2304
+}
+member {
+  id: 0xa9a3469b
+  name: "rq_wait"
+  type_id: 0x3b4d885a
+  offset: 1408
+}
+member {
+  id: 0x4e3f6f3b
+  name: "rqos_debugfs_dir"
+  type_id: 0x120540d1
+  offset: 8448
+}
+member {
+  id: 0xe81ba33b
+  name: "rqs"
+  type_id: 0x0d30b9c3
+  offset: 1152
+}
+member {
+  id: 0xf254d9f5
+  name: "rr_nr_running"
+  type_id: 0x4585663f
+  offset: 12960
+}
+member {
+  id: 0x15cd9d51
+  name: "rr_ptr"
+  type_id: 0x238091f9
+  offset: 320
+}
+member {
+  id: 0x3c53492c
+  name: "rs485"
+  type_id: 0x33341885
+  offset: 3136
+}
+member {
+  id: 0x7ad02a5b
+  name: "rs485_config"
+  type_id: 0x2dc68f01
+  offset: 1152
+}
+member {
+  id: 0x56818287
+  name: "rs485_start_tx"
+  type_id: 0x0f7ac5c1
+  offset: 5504
+}
+member {
+  id: 0x19d0ecc6
+  name: "rs485_stop_tx"
+  type_id: 0x0f7ac5c1
+  offset: 5568
+}
+member {
+  id: 0xca00bab7
+  name: "rs485_supported"
+  type_id: 0x33341885
+  offset: 3392
+}
+member {
+  id: 0x639fa600
+  name: "rs485_term_gpio"
+  type_id: 0x2560a232
+  offset: 3648
+}
+member {
+  id: 0x5f4c5fc3
+  name: "rs_interval"
+  type_id: 0x0faae5b1
+  offset: 10496
+}
+member {
+  id: 0x95399c15
+  name: "rs_probes"
+  type_id: 0xb3e7bac9
+  offset: 10528
+}
+member {
+  id: 0x4a3e87f9
+  name: "rs_timer"
+  type_id: 0xd298e888
+  offset: 10048
+}
+member {
+  id: 0x35736461
+  name: "rsc_offset"
+  type_id: 0xc9082b19
+  offset: 768
+}
+member {
+  id: 0x4a42b1d1
+  name: "rsize"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0x1e9f7def
+  name: "rsk_ops"
+  type_id: 0x36f19439
+  offset: 1664
+}
+member {
+  id: 0x6cfb5ebc
+  name: "rsk_prot"
+  type_id: 0x2707627c
+  offset: 2880
+}
+member {
+  id: 0xa0a10c3a
+  name: "rsk_timer"
+  type_id: 0xd298e888
+  offset: 1216
+}
+member {
+  id: 0x94b16558
+  name: "rslot_limit"
+  type_id: 0x89ea5acf
+  offset: 136
+}
+member {
+  id: 0x00ac87d0
+  name: "rsp_header"
+  type_id: 0x6e3da889
+}
+member {
+  id: 0x5d04995c
+  name: "rsrc"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0x7bce6fcb
+  name: "rsrc_backup_node"
+  type_id: 0x2f73a0d7
+  offset: 6400
+}
+member {
+  id: 0xab06fa6c
+  name: "rsrc_cached_refs"
+  type_id: 0x6720d32f
+  offset: 640
+}
+member {
+  id: 0xa7978683
+  name: "rsrc_data"
+  type_id: 0x28eba3b0
+  offset: 384
+}
+member {
+  id: 0xd06f4d55
+  name: "rsrc_len"
+  type_id: 0x9565759f
+  offset: 3584
+}
+member {
+  id: 0x1bd908e5
+  name: "rsrc_list"
+  type_id: 0xd3c80119
+  offset: 256
+}
+member {
+  id: 0x37c1d51d
+  name: "rsrc_node"
+  type_id: 0x2f73a0d7
+  offset: 832
+}
+member {
+  id: 0x37c1dfd5
+  name: "rsrc_node"
+  type_id: 0x2f73a0d7
+  offset: 576
+}
+member {
+  id: 0x79d40ff6
+  name: "rsrc_put_llist"
+  type_id: 0x0bf3e543
+  offset: 7744
+}
+member {
+  id: 0x9beef7f7
+  name: "rsrc_put_work"
+  type_id: 0xf1159c31
+  offset: 6656
+}
+member {
+  id: 0xd965dce8
+  name: "rsrc_ref_list"
+  type_id: 0xd3c80119
+  offset: 7808
+}
+member {
+  id: 0x5ec15b6d
+  name: "rsrc_ref_lock"
+  type_id: 0xf313e71a
+  offset: 7936
+}
+member {
+  id: 0xb34e2759
+  name: "rsrc_start"
+  type_id: 0x9565759f
+  offset: 3520
+}
+member {
+  id: 0x10ad0965
+  name: "rss"
+  type_id: 0xe6e2b0f1
+}
+member {
+  id: 0xf6190409
+  name: "rss_context"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x9625f4bd
+  name: "rss_query_en"
+  type_id: 0xe62ebf07
+  offset: 480
+}
+member {
+  id: 0xe627b7c0
+  name: "rss_stat"
+  type_id: 0x420b3f7d
+  offset: 11648
+}
+member {
+  id: 0xe6347ba6
+  name: "rss_stat"
+  type_id: 0x51c04992
+  offset: 5760
+}
+member {
+  id: 0x3276c7fc
+  name: "rssi"
+  type_id: 0x901eaf6a
+  offset: 3288
+}
+member {
+  id: 0x32cf6f20
+  name: "rssi"
+  type_id: 0x29b77961
+  offset: 856
+}
+member {
+  id: 0x9e45ccd9
+  name: "rssi_adjust"
+  type_id: 0xacf97a1b
+  offset: 864
+}
+member {
+  id: 0xfb03d510
+  name: "rssi_thold"
+  type_id: 0xd41e888f
+  offset: 320
+}
+member {
+  id: 0xd7a5f52b
+  name: "rst"
+  type_id: 0xe8034002
+  offset: 106
+  bitsize: 1
+}
+member {
+  id: 0x9f43f7af
+  name: "rst_n_function"
+  type_id: 0x295c7202
+  offset: 64
+}
+member {
+  id: 0xf5afd1fc
+  name: "rstat_cpu"
+  type_id: 0x14c004e9
+  offset: 7488
+}
+member {
+  id: 0xe9941ee8
+  name: "rstat_css_list"
+  type_id: 0xd3c80119
+  offset: 7552
+}
+member {
+  id: 0x80396213
+  name: "rstat_css_node"
+  type_id: 0xd3c80119
+  offset: 512
+}
+member {
+  id: 0x68dbed84
+  name: "rstate"
+  type_id: 0x195350a3
+  offset: 64
+}
+member {
+  id: 0x795263d6
+  name: "rstc"
+  type_id: 0x28136e4b
+  offset: 64
+}
+member {
+  id: 0xd470371e
+  name: "rsv"
+  type_id: 0x7dc8196c
+  offset: 192
+}
+member {
+  id: 0xd4703b36
+  name: "rsv"
+  type_id: 0x7dc8196c
+  offset: 64
+}
+member {
+  id: 0xd490db84
+  name: "rsv"
+  type_id: 0x9d2c4a95
+}
+member {
+  id: 0xd4f56a4b
+  name: "rsv"
+  type_id: 0xf89d773e
+  offset: 608
+}
+member {
+  id: 0x2f330d28
+  name: "rsvd"
+  type_id: 0x0baa70a7
+  offset: 96
+}
+member {
+  id: 0x2f5287e4
+  name: "rsvd"
+  type_id: 0x6a240418
+  offset: 32
+}
+member {
+  id: 0x4fb9e2cc
+  name: "rt"
+  type_id: 0x3426fcf0
+  offset: 7168
+}
+member {
+  id: 0x4fe0b9e7
+  name: "rt"
+  type_id: 0x6d7f5ff6
+  offset: 7472
+}
+member {
+  id: 0x4fe0bd93
+  name: "rt"
+  type_id: 0x6d7f5ff6
+  offset: 10592
+}
+member {
+  id: 0x4fe72d9f
+  name: "rt"
+  type_id: 0x6aee0185
+  offset: 4096
+}
+member {
+  id: 0x89f8aef5
+  name: "rt6"
+  type_id: 0x17b5cc93
+  offset: 192
+}
+member {
+  id: 0xcb39ea73
+  name: "rt6_stats"
+  type_id: 0x0027dcc3
+  offset: 3456
+}
+member {
+  id: 0x470759e6
+  name: "rt6i_dst"
+  type_id: 0xebdf1fd0
+  offset: 992
+}
+member {
+  id: 0x9954bda4
+  name: "rt6i_exception_bucket"
+  type_id: 0x3c621598
+  offset: 704
+}
+member {
+  id: 0x1b5b8c97
+  name: "rt6i_flags"
+  type_id: 0xc9082b19
+  offset: 1536
+}
+member {
+  id: 0x7404bdcb
+  name: "rt6i_gateway"
+  type_id: 0x6d25e07f
+  offset: 1312
+}
+member {
+  id: 0xd44858bd
+  name: "rt6i_idev"
+  type_id: 0x3ba05ad7
+  offset: 1472
+}
+member {
+  id: 0xa4439ff0
+  name: "rt6i_nfheader_len"
+  type_id: 0xc93e017b
+  offset: 1792
+}
+member {
+  id: 0x6843bff2
+  name: "rt6i_pcpu"
+  type_id: 0x0f7d4a83
+  offset: 640
+}
+member {
+  id: 0xf5dc3c24
+  name: "rt6i_src"
+  type_id: 0xebdf1fd0
+  offset: 1152
+}
+member {
+  id: 0xf81423ef
+  name: "rt6i_uncached"
+  type_id: 0xd3c80119
+  offset: 1600
+}
+member {
+  id: 0xe5248a71
+  name: "rt6i_uncached_list"
+  type_id: 0x28bad41a
+  offset: 1728
+}
+member {
+  id: 0xa132ae06
+  name: "rt_flags"
+  type_id: 0x4585663f
+  offset: 928
+}
+member {
+  id: 0x30e09f20
+  name: "rt_genid"
+  type_id: 0x6720d32f
+  offset: 896
+}
+member {
+  id: 0x30f36b2c
+  name: "rt_genid"
+  type_id: 0x74d29cf1
+  offset: 5344
+}
+member {
+  id: 0xa72a8895
+  name: "rt_gw4"
+  type_id: 0xe276adef
+}
+member {
+  id: 0x2425b2ac
+  name: "rt_gw6"
+  type_id: 0x6d25e07f
+}
+member {
+  id: 0x8f90190b
+  name: "rt_gw_family"
+  type_id: 0x295c7202
+  offset: 1024
+}
+member {
+  id: 0x5600c7e5
+  name: "rt_iif"
+  type_id: 0x6720d32f
+  offset: 992
+}
+member {
+  id: 0x72a27798
+  name: "rt_is_input"
+  type_id: 0xb3e7bac9
+  offset: 976
+}
+member {
+  id: 0x0916635f
+  name: "rt_mtu_locked"
+  type_id: 0xc9082b19
+  offset: 1184
+  bitsize: 1
+}
+member {
+  id: 0x36765121
+  name: "rt_nr_migratory"
+  type_id: 0x4585663f
+  offset: 13056
+}
+member {
+  id: 0x481de2e5
+  name: "rt_nr_running"
+  type_id: 0x4585663f
+  offset: 12928
+}
+member {
+  id: 0x4f368141
+  name: "rt_nr_total"
+  type_id: 0x4585663f
+  offset: 13088
+}
+member {
+  id: 0x65ee9e37
+  name: "rt_pmtu"
+  type_id: 0xc9082b19
+  offset: 1185
+  bitsize: 31
+}
+member {
+  id: 0x0193a710
+  name: "rt_priority"
+  type_id: 0x33756485
+  offset: 576
+}
+member {
+  id: 0x01e550bc
+  name: "rt_priority"
+  type_id: 0x4585663f
+  offset: 1152
+}
+member {
+  id: 0xced34f4f
+  name: "rt_queued"
+  type_id: 0x6720d32f
+  offset: 13312
+}
+member {
+  id: 0x503a1618
+  name: "rt_runtime"
+  type_id: 0x92233392
+  offset: 13440
+}
+member {
+  id: 0x71e12499
+  name: "rt_runtime_lock"
+  type_id: 0xc8b17aa7
+  offset: 13504
+}
+member {
+  id: 0x9432f136
+  name: "rt_spc_timelimit"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0xd6b9261d
+  name: "rt_spc_warnlimit"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0xfc5c587b
+  name: "rt_throttled"
+  type_id: 0x6720d32f
+  offset: 13344
+}
+member {
+  id: 0x25430d4b
+  name: "rt_time"
+  type_id: 0x92233392
+  offset: 13376
+}
+member {
+  id: 0xb8cdb685
+  name: "rt_type"
+  type_id: 0xe8034002
+  offset: 960
+}
+member {
+  id: 0x78220857
+  name: "rt_uncached"
+  type_id: 0xd3c80119
+  offset: 1216
+}
+member {
+  id: 0x1cb4e6a1
+  name: "rt_uncached_list"
+  type_id: 0x28bad41a
+  offset: 1344
+}
+member {
+  id: 0xe1a2be7c
+  name: "rt_uses_gateway"
+  type_id: 0xb3e7bac9
+  offset: 984
+}
+member {
+  id: 0x8d372bc5
+  name: "rta_len"
+  type_id: 0xc93e017b
+}
+member {
+  id: 0xe663dafa
+  name: "rta_type"
+  type_id: 0xc93e017b
+  offset: 16
+}
+member {
+  id: 0xe06b5dfe
+  name: "rtc"
+  type_id: 0x24e24923
+  offset: 384
+}
+member {
+  id: 0x5d6944d6
+  name: "rtd_list"
+  type_id: 0xd3c80119
+  offset: 2880
+}
+member {
+  id: 0x8c467691
+  name: "rtimer"
+  type_id: 0xd298e888
+  offset: 3840
+}
+member {
+  id: 0xc43c3b53
+  name: "rtmutex"
+  type_id: 0x6a0f9ac9
+}
+member {
+  id: 0x0773c715
+  name: "rtn"
+  type_id: 0xb3e7bac9
+  offset: 72
+}
+member {
+  id: 0xd8212d62
+  name: "rtnl"
+  type_id: 0x1d44326e
+  offset: 2176
+}
+member {
+  id: 0xc76e5f64
+  name: "rtnl_link_ops"
+  type_id: 0x337b7b81
+  offset: 18112
+}
+member {
+  id: 0xd7c41f70
+  name: "rtnl_link_state"
+  type_id: 0x5fc6ae59
+  offset: 10128
+  bitsize: 16
+}
+member {
+  id: 0x74a1e6d8
+  name: "rto_count"
+  type_id: 0x74d29cf1
+  offset: 32
+}
+member {
+  id: 0xae12a28a
+  name: "rto_cpu"
+  type_id: 0x6720d32f
+  offset: 1280
+}
+member {
+  id: 0xd132701d
+  name: "rto_lock"
+  type_id: 0xc8b17aa7
+  offset: 1216
+}
+member {
+  id: 0x071ca31f
+  name: "rto_loop"
+  type_id: 0x6720d32f
+  offset: 1248
+}
+member {
+  id: 0x1147e128
+  name: "rto_loop_next"
+  type_id: 0x74d29cf1
+  offset: 1312
+}
+member {
+  id: 0xf46d4f65
+  name: "rto_loop_start"
+  type_id: 0x74d29cf1
+  offset: 1344
+}
+member {
+  id: 0xdd4e185d
+  name: "rto_mask"
+  type_id: 0x99caa0ae
+  offset: 1408
+}
+member {
+  id: 0x9581d04a
+  name: "rto_push_work"
+  type_id: 0xb95bf932
+  offset: 960
+}
+member {
+  id: 0x37f3dfc1
+  name: "rtr_probe_interval"
+  type_id: 0x0faae5b1
+  offset: 832
+}
+member {
+  id: 0x8edcbba4
+  name: "rtr_solicit_delay"
+  type_id: 0x0faae5b1
+  offset: 320
+}
+member {
+  id: 0x455870a1
+  name: "rtr_solicit_interval"
+  type_id: 0x0faae5b1
+  offset: 256
+}
+member {
+  id: 0x63ac2582
+  name: "rtr_solicit_max_interval"
+  type_id: 0x0faae5b1
+  offset: 288
+}
+member {
+  id: 0xdbf79183
+  name: "rtr_solicits"
+  type_id: 0x0faae5b1
+  offset: 224
+}
+member {
+  id: 0xecbc1162
+  name: "rts"
+  type_id: 0xe8d14bc6
+}
+member {
+  id: 0x353336d2
+  name: "rts_threshold"
+  type_id: 0xc9082b19
+  offset: 1632
+}
+member {
+  id: 0x2e4fe3d2
+  name: "rtt_us"
+  type_id: 0xd41e888f
+  offset: 32
+}
+member {
+  id: 0x2e67f9bb
+  name: "rtt_us"
+  type_id: 0xfc0e1dbd
+  offset: 320
+}
+member {
+  id: 0xe53f0bca
+  name: "rtx_syn_ack"
+  type_id: 0x2e519115
+  offset: 192
+}
+member {
+  id: 0x976620da
+  name: "rule"
+  type_id: 0x13035e8b
+  offset: 192
+}
+member {
+  id: 0x8bb53f6f
+  name: "rule_cnt"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xbdac429c
+  name: "rule_locs"
+  type_id: 0xfdb22131
+  offset: 1504
+}
+member {
+  id: 0x67a68b18
+  name: "rule_size"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0x2b10a0fb
+  name: "rules"
+  type_id: 0xd3c80119
+  offset: 256
+}
+member {
+  id: 0x2bd97fb6
+  name: "rules"
+  type_id: 0x1a1563a0
+  offset: 1984
+}
+member {
+  id: 0x37f13380
+  name: "rules_all"
+  type_id: 0x4585663f
+  offset: 1952
+}
+member {
+  id: 0x9d22ebab
+  name: "rules_list"
+  type_id: 0xd3c80119
+  offset: 1024
+}
+member {
+  id: 0xee23ae55
+  name: "rules_mod_lock"
+  type_id: 0xf313e71a
+  offset: 32
+}
+member {
+  id: 0xd9538be7
+  name: "rules_num"
+  type_id: 0x4585663f
+  offset: 1920
+}
+member {
+  id: 0xaf7a71ce
+  name: "rules_ops"
+  type_id: 0xd3c80119
+  offset: 2688
+}
+member {
+  id: 0xafb2d540
+  name: "rules_ops"
+  type_id: 0x1b686fa1
+  offset: 1920
+}
+member {
+  id: 0x68c152e4
+  name: "rumble"
+  type_id: 0x40c4501a
+}
+member {
+  id: 0x021101d3
+  name: "run"
+  type_id: 0x33756485
+  offset: 3136
+}
+member {
+  id: 0x021fd03f
+  name: "run"
+  type_id: 0x3da548f2
+  offset: 960
+}
+member {
+  id: 0x2f68ddc4
+  name: "run_array"
+  type_id: 0x6fde7229
+}
+member {
+  id: 0xdc80fc18
+  name: "run_case"
+  type_id: 0x0c27c566
+}
+member {
+  id: 0x67846ce9
+  name: "run_delay"
+  type_id: 0xd5df6730
+  offset: 64
+}
+member {
+  id: 0x9f0f9059
+  name: "run_graceperiod"
+  type_id: 0x33756485
+  offset: 20480
+}
+member {
+  id: 0x3815e40b
+  name: "run_list"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0x970bccac
+  name: "run_node"
+  type_id: 0x3205ba2f
+  offset: 128
+}
+member {
+  id: 0x42749a1d
+  name: "run_regs"
+  type_id: 0x00227f55
+  offset: 256
+}
+member {
+  id: 0xd133014f
+  name: "run_regs_off"
+  type_id: 0x0baa70a7
+  offset: 192
+}
+member {
+  id: 0xb71c7464
+  name: "run_work"
+  type_id: 0xf1159c31
+  offset: 512
+}
+member {
+  id: 0xb7f25d7e
+  name: "run_work"
+  type_id: 0x1f3c8679
+  offset: 512
+}
+member {
+  id: 0xcf0bf05f
+  name: "runnable_avg"
+  type_id: 0x33756485
+  offset: 320
+}
+member {
+  id: 0xcf0bff51
+  name: "runnable_avg"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0x5abf4f67
+  name: "runnable_sum"
+  type_id: 0x92233392
+  offset: 128
+}
+member {
+  id: 0x552b7986
+  name: "runnable_weight"
+  type_id: 0x33756485
+  offset: 1088
+}
+member {
+  id: 0x0492e273
+  name: "running"
+  type_id: 0x4585663f
+  offset: 3269
+  bitsize: 1
+}
+member {
+  id: 0x0492e97a
+  name: "running"
+  type_id: 0x4585663f
+  offset: 544
+  bitsize: 1
+}
+member {
+  id: 0xad05e43b
+  name: "running"
+  type_id: 0x6d7f5ff6
+  offset: 128
+}
+member {
+  id: 0xad05e736
+  name: "running"
+  type_id: 0x6d7f5ff6
+  offset: 10584
+}
+member {
+  id: 0xad05edf9
+  name: "running"
+  type_id: 0x6d7f5ff6
+}
+member {
+  id: 0xad0fb0e9
+  name: "running"
+  type_id: 0x6720d32f
+  offset: 1440
+}
+member {
+  id: 0xad1c431e
+  name: "running"
+  type_id: 0x74d29cf1
+  offset: 224
+}
+member {
+  id: 0xad515797
+  name: "running"
+  type_id: 0x39cdf888
+  offset: 192
+}
+member {
+  id: 0x53253f85
+  name: "running_bw"
+  type_id: 0x92233392
+  offset: 512
+}
+member {
+  id: 0x29148356
+  name: "runtime"
+  type_id: 0x2e0f9112
+  offset: 512
+}
+member {
+  id: 0x29226925
+  name: "runtime"
+  type_id: 0x18e738db
+  offset: 128
+}
+member {
+  id: 0x293e4262
+  name: "runtime"
+  type_id: 0x04c27a37
+  offset: 320
+}
+member {
+  id: 0x293e4f42
+  name: "runtime"
+  type_id: 0x04c27a37
+  offset: 1536
+}
+member {
+  id: 0x51199a62
+  name: "runtime_auto"
+  type_id: 0x4585663f
+  offset: 1991
+  bitsize: 1
+}
+member {
+  id: 0xf7745d59
+  name: "runtime_error"
+  type_id: 0x6720d32f
+  offset: 2144
+}
+member {
+  id: 0xc48deae8
+  name: "runtime_idle"
+  type_id: 0x2dd58efa
+  offset: 1408
+}
+member {
+  id: 0xab22d4a9
+  name: "runtime_pm"
+  type_id: 0x4585663f
+  offset: 615
+  bitsize: 1
+}
+member {
+  id: 0xd5fc56d7
+  name: "runtime_resume"
+  type_id: 0x2e9195ef
+  offset: 384
+}
+member {
+  id: 0xd5ff19dd
+  name: "runtime_resume"
+  type_id: 0x2dd58efa
+  offset: 1344
+}
+member {
+  id: 0x52cf305e
+  name: "runtime_status"
+  type_id: 0x495d0861
+  offset: 2080
+}
+member {
+  id: 0x9615b712
+  name: "runtime_suspend"
+  type_id: 0x2dd58efa
+  offset: 1280
+}
+member {
+  id: 0x9616f2b3
+  name: "runtime_suspend"
+  type_id: 0x2e9195ef
+  offset: 320
+}
+member {
+  id: 0x5ede75fd
+  name: "runtime_suspended"
+  type_id: 0x6d7f5ff6
+  offset: 6296
+}
+member {
+  id: 0x9b981384
+  name: "runtime_update"
+  type_id: 0x071b6d64
+  offset: 5248
+}
+member {
+  id: 0xb1650641
+  name: "rvdevs"
+  type_id: 0xd3c80119
+  offset: 8832
+}
+member {
+  id: 0x9b9fd183
+  name: "rw_flags"
+  type_id: 0x8dcc45f7
+}
+member {
+  id: 0x504d78de
+  name: "rw_page"
+  type_id: 0x2de2b0d1
+  offset: 256
+}
+member {
+  id: 0xc3766b4d
+  name: "rw_sem"
+  type_id: 0x09e0bda0
+  offset: 256
+}
+member {
+  id: 0x4f61a09c
+  name: "rw_wait"
+  type_id: 0x6d7f5ff6
+  offset: 1976
+}
+member {
+  id: 0xa568765c
+  name: "rwork"
+  type_id: 0xd15fd98f
+  offset: 3200
+}
+member {
+  id: 0xd610e150
+  name: "rwsem"
+  type_id: 0x28b9ec9a
+  offset: 64
+}
+member {
+  id: 0xd610e3c2
+  name: "rwsem"
+  type_id: 0x28b9ec9a
+  offset: 1792
+}
+member {
+  id: 0xd610e577
+  name: "rwsem"
+  type_id: 0x28b9ec9a
+  offset: 4480
+}
+member {
+  id: 0xd610e5b1
+  name: "rwsem"
+  type_id: 0x28b9ec9a
+}
+member {
+  id: 0x6c166087
+  name: "rx"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0x6c1664a5
+  name: "rx"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0x6c511725
+  name: "rx"
+  type_id: 0xa1571851
+  offset: 320
+}
+member {
+  id: 0x6c6104fb
+  name: "rx"
+  type_id: 0x914dbfdc
+  offset: 16
+}
+member {
+  id: 0x6c6ba998
+  name: "rx"
+  type_id: 0x9bee62e7
+}
+member {
+  id: 0x6c976eeb
+  name: "rx"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0xec2f95e2
+  name: "rx_addr"
+  type_id: 0xe02e14d6
+  offset: 1856
+}
+member {
+  id: 0xfa970a06
+  name: "rx_alldev_list"
+  type_id: 0x1863edc5
+  offset: 640
+}
+member {
+  id: 0x423d5d15
+  name: "rx_bit"
+  type_id: 0xc9082b19
+  offset: 2176
+}
+member {
+  id: 0xfeaea0f0
+  name: "rx_buf"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0xfeaea393
+  name: "rx_buf"
+  type_id: 0x18bd6530
+  offset: 2048
+}
+member {
+  id: 0xfeaea4ba
+  name: "rx_buf"
+  type_id: 0x18bd6530
+  offset: 256
+}
+member {
+  id: 0x62c1520b
+  name: "rx_buf_len"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xe8021494
+  name: "rx_bytes"
+  type_id: 0xedf277ba
+  offset: 128
+}
+member {
+  id: 0xe85fc4bf
+  name: "rx_bytes"
+  type_id: 0xb02b353a
+  offset: 256
+}
+member {
+  id: 0xe8d5d572
+  name: "rx_bytes"
+  type_id: 0x3a3eb2f9
+  offset: 64
+}
+member {
+  id: 0xe8dc9a45
+  name: "rx_bytes"
+  type_id: 0x33756485
+}
+member {
+  id: 0xc1649620
+  name: "rx_callback"
+  type_id: 0x0fe1720b
+  offset: 256
+}
+member {
+  id: 0x48f838a4
+  name: "rx_chanmap"
+  type_id: 0xe6d4143b
+  offset: 704
+}
+member {
+  id: 0xce5d35a8
+  name: "rx_channels"
+  type_id: 0x0baa70a7
+  offset: 672
+}
+member {
+  id: 0x93a1749c
+  name: "rx_coalesce_usecs"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x7948964e
+  name: "rx_coalesce_usecs_high"
+  type_id: 0xe62ebf07
+  offset: 576
+}
+member {
+  id: 0xa1c0d7ce
+  name: "rx_coalesce_usecs_irq"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0xf002ff57
+  name: "rx_coalesce_usecs_low"
+  type_id: 0xe62ebf07
+  offset: 416
+}
+member {
+  id: 0x8c0e1a50
+  name: "rx_compressed"
+  type_id: 0x33756485
+}
+member {
+  id: 0x8cd097c0
+  name: "rx_compressed"
+  type_id: 0xedf277ba
+  offset: 1344
+}
+member {
+  id: 0x97879fac
+  name: "rx_cookie"
+  type_id: 0x4faa9b63
+  offset: 1984
+}
+member {
+  id: 0x44165f5d
+  name: "rx_cookie_discards"
+  type_id: 0xb02b353a
+  offset: 512
+}
+member {
+  id: 0x251f9cde
+  name: "rx_count"
+  type_id: 0x6720d32f
+  offset: 2176
+}
+member {
+  id: 0x259e9acd
+  name: "rx_count"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0x2842726c
+  name: "rx_cpu_rmap"
+  type_id: 0x2def51c6
+  offset: 7104
+}
+member {
+  id: 0xdd530657
+  name: "rx_crc_errors"
+  type_id: 0x33756485
+}
+member {
+  id: 0xdd8d89ea
+  name: "rx_crc_errors"
+  type_id: 0xedf277ba
+  offset: 768
+}
+member {
+  id: 0x1d659b3c
+  name: "rx_credits"
+  type_id: 0xe8034002
+  offset: 1216
+}
+member {
+  id: 0xfd6ba007
+  name: "rx_data_bit_too_long_cnt"
+  type_id: 0xc9082b19
+  offset: 2720
+}
+member {
+  id: 0x1f1d801b
+  name: "rx_data_bit_too_short_cnt"
+  type_id: 0xc9082b19
+  offset: 2560
+}
+member {
+  id: 0x59321bfb
+  name: "rx_data_bit_too_short_delta"
+  type_id: 0xc9082b19
+  offset: 2688
+}
+member {
+  id: 0xa3c8477f
+  name: "rx_data_bit_too_short_ts"
+  type_id: 0x92233392
+  offset: 2624
+}
+member {
+  id: 0x9870b357
+  name: "rx_dma"
+  type_id: 0x2c3ce96e
+  offset: 64
+}
+member {
+  id: 0x98bca5e0
+  name: "rx_dma"
+  type_id: 0xe02e14d6
+  offset: 256
+}
+member {
+  id: 0xb007110e
+  name: "rx_dma_addr"
+  type_id: 0xbdd18903
+  offset: 1728
+}
+member {
+  id: 0x2b149926
+  name: "rx_dropped"
+  type_id: 0xedf277ba
+  offset: 384
+}
+member {
+  id: 0x2bca1fa7
+  name: "rx_dropped"
+  type_id: 0x33756485
+}
+member {
+  id: 0x4c2dbf47
+  name: "rx_eff"
+  type_id: 0x28f83d47
+  offset: 131328
+}
+member {
+  id: 0x86273642
+  name: "rx_eom"
+  type_id: 0x6d7f5ff6
+  offset: 1080
+}
+member {
+  id: 0x8f050e0e
+  name: "rx_errors"
+  type_id: 0x33756485
+}
+member {
+  id: 0x8f865728
+  name: "rx_errors"
+  type_id: 0xb02b353a
+  offset: 448
+}
+member {
+  id: 0x8fdb89b6
+  name: "rx_errors"
+  type_id: 0xedf277ba
+  offset: 256
+}
+member {
+  id: 0xbc74dc2d
+  name: "rx_fifo_errors"
+  type_id: 0x33756485
+}
+member {
+  id: 0xbcaa5198
+  name: "rx_fifo_errors"
+  type_id: 0xedf277ba
+  offset: 896
+}
+member {
+  id: 0x556844e8
+  name: "rx_filters"
+  type_id: 0xe62ebf07
+  offset: 224
+}
+member {
+  id: 0x92de6fb0
+  name: "rx_fixup"
+  type_id: 0x2d29d09d
+  offset: 640
+}
+member {
+  id: 0xe733e49b
+  name: "rx_frame_errors"
+  type_id: 0x33756485
+}
+member {
+  id: 0xe7ed6032
+  name: "rx_frame_errors"
+  type_id: 0xedf277ba
+  offset: 832
+}
+member {
+  id: 0xc2852fef
+  name: "rx_frames"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xa87a1b62
+  name: "rx_frames_delta"
+  type_id: 0x33756485
+  offset: 832
+}
+member {
+  id: 0xea7523e6
+  name: "rx_g_parameters"
+  type_id: 0x2de16a22
+  offset: 64
+}
+member {
+  id: 0x8d4d41cd
+  name: "rx_handler"
+  type_id: 0x05042b1f
+  offset: 6528
+}
+member {
+  id: 0xa8141076
+  name: "rx_handler_data"
+  type_id: 0x18bd6530
+  offset: 6592
+}
+member {
+  id: 0x722e73c3
+  name: "rx_highest"
+  type_id: 0x9bd401b6
+  offset: 80
+}
+member {
+  id: 0x722e79e1
+  name: "rx_highest"
+  type_id: 0x9bd401b6
+  offset: 16
+}
+member {
+  id: 0x062a3002
+  name: "rx_invalid"
+  type_id: 0xb02b353a
+  offset: 576
+}
+member {
+  id: 0x9f7333aa
+  name: "rx_jumbo_max_pending"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x52803368
+  name: "rx_jumbo_pending"
+  type_id: 0xe62ebf07
+  offset: 224
+}
+member {
+  id: 0xc946515a
+  name: "rx_lanes"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0xc9cad57e
+  name: "rx_lanes"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0x264eaddd
+  name: "rx_len"
+  type_id: 0xf435685e
+  offset: 192
+}
+member {
+  id: 0x265cbc30
+  name: "rx_len"
+  type_id: 0xe62ebf07
+  offset: 1408
+}
+member {
+  id: 0xca35fbec
+  name: "rx_length_errors"
+  type_id: 0xedf277ba
+  offset: 640
+}
+member {
+  id: 0xcaeb7a86
+  name: "rx_length_errors"
+  type_id: 0x33756485
+}
+member {
+  id: 0x68f59c82
+  name: "rx_list"
+  type_id: 0xd3c80119
+  offset: 2048
+}
+member {
+  id: 0xc87272b4
+  name: "rx_low_drive_cnt"
+  type_id: 0xc9082b19
+  offset: 2752
+}
+member {
+  id: 0x720c5cb4
+  name: "rx_mask"
+  type_id: 0x4585663f
+  offset: 800
+}
+member {
+  id: 0x72346b8d
+  name: "rx_mask"
+  type_id: 0x7dbd382e
+}
+member {
+  id: 0xfd4774fd
+  name: "rx_max_coalesced_frames"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xab0b4944
+  name: "rx_max_coalesced_frames_high"
+  type_id: 0xe62ebf07
+  offset: 608
+}
+member {
+  id: 0x18d8e5db
+  name: "rx_max_coalesced_frames_irq"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0x55d2132b
+  name: "rx_max_coalesced_frames_low"
+  type_id: 0xe62ebf07
+  offset: 448
+}
+member {
+  id: 0xb3fd2900
+  name: "rx_max_pending"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x2e30d10f
+  name: "rx_mcs_160"
+  type_id: 0x9bd401b6
+  offset: 32
+}
+member {
+  id: 0x91676654
+  name: "rx_mcs_80"
+  type_id: 0x9bd401b6
+}
+member {
+  id: 0x8d3b9280
+  name: "rx_mcs_80p80"
+  type_id: 0x9bd401b6
+  offset: 64
+}
+member {
+  id: 0xe05d717a
+  name: "rx_mcs_map"
+  type_id: 0x9bd401b6
+}
+member {
+  id: 0x8d7c1266
+  name: "rx_mini_max_pending"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x19be1063
+  name: "rx_mini_pending"
+  type_id: 0xe62ebf07
+  offset: 192
+}
+member {
+  id: 0x19705936
+  name: "rx_missed_errors"
+  type_id: 0xedf277ba
+  offset: 960
+}
+member {
+  id: 0x19aed6d6
+  name: "rx_missed_errors"
+  type_id: 0x33756485
+}
+member {
+  id: 0x8cbbfff6
+  name: "rx_msg"
+  type_id: 0x74026623
+  offset: 1728
+}
+member {
+  id: 0x2fffd25b
+  name: "rx_msgid"
+  type_id: 0x4585663f
+  offset: 7936
+}
+member {
+  id: 0xcca82bfa
+  name: "rx_nbits"
+  type_id: 0x4585663f
+  offset: 582
+  bitsize: 3
+}
+member {
+  id: 0x8e251439
+  name: "rx_nohandler"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x8efb9db8
+  name: "rx_nohandler"
+  type_id: 0xedf277ba
+  offset: 1472
+}
+member {
+  id: 0x9fdf2166
+  name: "rx_oos_packets"
+  type_id: 0xb02b353a
+  offset: 384
+}
+member {
+  id: 0x92162365
+  name: "rx_otherhost_dropped"
+  type_id: 0xedf277ba
+  offset: 1536
+}
+member {
+  id: 0x92c8a658
+  name: "rx_otherhost_dropped"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0x6561e08e
+  name: "rx_over_errors"
+  type_id: 0x33756485
+}
+member {
+  id: 0x65bf65a0
+  name: "rx_over_errors"
+  type_id: 0xedf277ba
+  offset: 704
+}
+member {
+  id: 0x6a136bc1
+  name: "rx_packets"
+  type_id: 0xb02b353a
+  offset: 192
+}
+member {
+  id: 0x6a4eba4a
+  name: "rx_packets"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x6a903d59
+  name: "rx_packets"
+  type_id: 0x33756485
+}
+member {
+  id: 0x6a99768f
+  name: "rx_packets"
+  type_id: 0x3a3eb2f9
+}
+member {
+  id: 0x220f7d47
+  name: "rx_param"
+  type_id: 0x18bd6530
+  offset: 320
+}
+member {
+  id: 0x454bac3e
+  name: "rx_pause"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xd14c9642
+  name: "rx_pause_frames"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0x2dbf9dde
+  name: "rx_pending"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0x28a5b4f3
+  name: "rx_pwr_hs"
+  type_id: 0xc9082b19
+  offset: 256
+}
+member {
+  id: 0x1c06b4bf
+  name: "rx_pwr_pwm"
+  type_id: 0xc9082b19
+  offset: 192
+}
+member {
+  id: 0x71481e19
+  name: "rx_q"
+  type_id: 0x578f9c2b
+  offset: 25536
+}
+member {
+  id: 0x671dc45f
+  name: "rx_qlen"
+  type_id: 0xc93e017b
+  offset: 928
+}
+member {
+  id: 0x01edd63e
+  name: "rx_read"
+  type_id: 0x2de3e088
+}
+member {
+  id: 0xb906969b
+  name: "rx_reserved"
+  type_id: 0x2b4e5af5
+  offset: 256
+}
+member {
+  id: 0x41f2ce8e
+  name: "rx_resolution"
+  type_id: 0xc9082b19
+  offset: 10752
+}
+member {
+  id: 0xf72431e1
+  name: "rx_running"
+  type_id: 0x5d8155a5
+  offset: 2256
+}
+member {
+  id: 0x9c2c4994
+  name: "rx_s_parameters"
+  type_id: 0x2de16a22
+  offset: 128
+}
+member {
+  id: 0xa215b591
+  name: "rx_sa"
+  type_id: 0x0ab21434
+}
+member {
+  id: 0x1b204bc4
+  name: "rx_sa_stats"
+  type_id: 0x3a42306c
+}
+member {
+  id: 0x27a1ca9a
+  name: "rx_sc"
+  type_id: 0x39bf4a63
+  offset: 192
+}
+member {
+  id: 0x27a1cafd
+  name: "rx_sc"
+  type_id: 0x39bf4a63
+  offset: 768
+}
+member {
+  id: 0xc865c98d
+  name: "rx_sc_stats"
+  type_id: 0x3f75f4e8
+}
+member {
+  id: 0xa6aa7bdf
+  name: "rx_seq_discards"
+  type_id: 0xb02b353a
+  offset: 320
+}
+member {
+  id: 0x69a75d5c
+  name: "rx_sff"
+  type_id: 0x95171a6f
+  offset: 256
+}
+member {
+  id: 0x2ab1386a
+  name: "rx_sg"
+  type_id: 0x28d027d4
+  offset: 448
+}
+member {
+  id: 0x731c06c7
+  name: "rx_size"
+  type_id: 0xf435685e
+  offset: 2112
+}
+member {
+  id: 0xe0a3a262
+  name: "rx_skb"
+  type_id: 0x054f691a
+  offset: 1344
+}
+member {
+  id: 0x41730461
+  name: "rx_slots"
+  type_id: 0x0baa70a7
+  offset: 352
+}
+member {
+  id: 0x0b67960e
+  name: "rx_speed"
+  type_id: 0xfc0e1dbd
+  offset: 2688
+}
+member {
+  id: 0x15ec0ef9
+  name: "rx_start_bit_low_too_short_cnt"
+  type_id: 0xc9082b19
+  offset: 2240
+}
+member {
+  id: 0x457f64a6
+  name: "rx_start_bit_low_too_short_delta"
+  type_id: 0xc9082b19
+  offset: 2368
+}
+member {
+  id: 0xbb3ae9e5
+  name: "rx_start_bit_low_too_short_ts"
+  type_id: 0x92233392
+  offset: 2304
+}
+member {
+  id: 0xcfe0d789
+  name: "rx_start_bit_too_long_cnt"
+  type_id: 0xc9082b19
+  offset: 2528
+}
+member {
+  id: 0xb3773230
+  name: "rx_start_bit_too_short_cnt"
+  type_id: 0xc9082b19
+  offset: 2400
+}
+member {
+  id: 0x60007f41
+  name: "rx_start_bit_too_short_delta"
+  type_id: 0xc9082b19
+  offset: 2496
+}
+member {
+  id: 0x31cb7246
+  name: "rx_start_bit_too_short_ts"
+  type_id: 0x92233392
+  offset: 2432
+}
+member {
+  id: 0x2d93321b
+  name: "rx_state"
+  type_id: 0xb3e7bac9
+  offset: 1240
+}
+member {
+  id: 0x68e158a5
+  name: "rx_status"
+  type_id: 0xb3e7bac9
+  offset: 392
+}
+member {
+  id: 0x7d27969c
+  name: "rx_toggle"
+  type_id: 0x6d7f5ff6
+  offset: 2208
+}
+member {
+  id: 0x3d23854e
+  name: "rx_ts"
+  type_id: 0xedf277ba
+  offset: 64
+}
+member {
+  id: 0x9d1aaa3e
+  name: "rx_tx_mcs11_max_nss"
+  type_id: 0x295c7202
+  offset: 16
+}
+member {
+  id: 0x9d1aaf66
+  name: "rx_tx_mcs11_max_nss"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0x15b431b0
+  name: "rx_tx_mcs13_max_nss"
+  type_id: 0x295c7202
+  offset: 16
+}
+member {
+  id: 0x15b4396f
+  name: "rx_tx_mcs13_max_nss"
+  type_id: 0x295c7202
+  offset: 24
+}
+member {
+  id: 0x5669daf4
+  name: "rx_tx_mcs7_max_nss"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x50cf8167
+  name: "rx_tx_mcs9_max_nss"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x50cf8a81
+  name: "rx_tx_mcs9_max_nss"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0x415177a2
+  name: "rx_urb_size"
+  type_id: 0xf435685e
+  offset: 2240
+}
+member {
+  id: 0x6e7f7dae
+  name: "rx_work"
+  type_id: 0x1f3c8679
+  offset: 22208
+}
+member {
+  id: 0x8be6c17d
+  name: "rxchan"
+  type_id: 0x3a583251
+  offset: 1600
+}
+member {
+  id: 0x6a3ffd93
+  name: "rxconf"
+  type_id: 0x5ed0bdd0
+  offset: 448
+}
+member {
+  id: 0x9f2b2dbe
+  name: "rxerr"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0x94aefae8
+  name: "rxq"
+  type_id: 0x578f9c2b
+  offset: 2816
+}
+member {
+  id: 0x94d9a882
+  name: "rxq"
+  type_id: 0x20d23755
+  offset: 256
+}
+member {
+  id: 0x6e10a38c
+  name: "rxq_pause"
+  type_id: 0x578f9c2b
+  offset: 3392
+}
+member {
+  id: 0x6e477e5d
+  name: "rxsubchans"
+  type_id: 0xe62ebf07
+  offset: 416
+}
+member {
+  id: 0x2aa685e6
+  name: "rxtstamp"
+  type_id: 0x35ab6b03
+}
+member {
+  id: 0x673bbff9
+  name: "s"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x67846dd9
+  name: "s"
+  type_id: 0x76df8305
+  offset: 2432
+}
+member {
+  id: 0x67c4eef4
+  name: "s"
+  type_id: 0x36592664
+}
+member {
+  id: 0x67cca386
+  name: "s"
+  type_id: 0x3e10b518
+  offset: 64
+}
+member {
+  id: 0x67f2783e
+  name: "s"
+  type_id: 0x00c72527
+  offset: 192
+}
+member {
+  id: 0x5d861b13
+  name: "s1g"
+  type_id: 0x6d7f5ff6
+}
+member {
+  id: 0x6bb00a05
+  name: "s1g_cap"
+  type_id: 0x5a4dc0e7
+  offset: 544
+}
+member {
+  id: 0x1a2d38b9
+  name: "s2idle_time"
+  type_id: 0xd5df6730
+  offset: 448
+}
+member {
+  id: 0x040dbb50
+  name: "s2idle_usage"
+  type_id: 0xd5df6730
+  offset: 384
+}
+member {
+  id: 0x7cb822c2
+  name: "s3"
+  type_id: 0x536562de
+  offset: 20544
+}
+member {
+  id: 0x70439f8b
+  name: "s32_max_value"
+  type_id: 0xd41e888f
+  offset: 672
+}
+member {
+  id: 0xb959d449
+  name: "s32_min_value"
+  type_id: 0xd41e888f
+  offset: 640
+}
+member {
+  id: 0x3fd31627
+  name: "s390_reset_flags"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x2b1b8ef2
+  name: "s390_sieic"
+  type_id: 0x31f9c69b
+}
+member {
+  id: 0x5fd2e3fb
+  name: "s390_stsi"
+  type_id: 0x114efe06
+}
+member {
+  id: 0x66d41c47
+  name: "s390_tsch"
+  type_id: 0x0ad62715
+}
+member {
+  id: 0xd9d85a91
+  name: "s390_ucontrol"
+  type_id: 0x19910c85
+}
+member {
+  id: 0x87554dcf
+  name: "s3d_ext_data"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0x2038621e
+  name: "s3d_struct"
+  type_id: 0x3d799fd5
+  offset: 128
+}
+member {
+  id: 0x0d3ddc09
+  name: "s_active"
+  type_id: 0x74d29cf1
+  offset: 1440
+}
+member {
+  id: 0x90a656a4
+  name: "s_addr"
+  type_id: 0xe276adef
+}
+member {
+  id: 0x5c264fc4
+  name: "s_bdev"
+  type_id: 0x0c2e195c
+  offset: 2112
+}
+member {
+  id: 0x47c7f2aa
+  name: "s_bdi"
+  type_id: 0x28f4ee78
+  offset: 2176
+}
+member {
+  id: 0xabc06340
+  name: "s_blocksize"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0x238ec0d5
+  name: "s_blocksize_bits"
+  type_id: 0x5d8155a5
+  offset: 160
+}
+member {
+  id: 0xf684d231
+  name: "s_carrier_report"
+  type_id: 0x2df7eefe
+  offset: 20160
+}
+member {
+  id: 0x352c4964
+  name: "s_clock_freq"
+  type_id: 0x2d255333
+}
+member {
+  id: 0xca1f6ca7
+  name: "s_config"
+  type_id: 0x2dd7cacf
+  offset: 640
+}
+member {
+  id: 0x04c93e42
+  name: "s_cop"
+  type_id: 0x37dafd0a
+  offset: 1600
+}
+member {
+  id: 0xc88affe3
+  name: "s_count"
+  type_id: 0x6720d32f
+  offset: 1408
+}
+member {
+  id: 0xfbc081d1
+  name: "s_crystal_freq"
+  type_id: 0x2d29c3b1
+  offset: 64
+}
+member {
+  id: 0x75e99e43
+  name: "s_ctrl"
+  type_id: 0x2eb11cd7
+  offset: 128
+}
+member {
+  id: 0x3258ef89
+  name: "s_d_op"
+  type_id: 0x39d30e9a
+  offset: 9024
+}
+member {
+  id: 0x48954bf1
+  name: "s_dentry_lru"
+  type_id: 0xddabec2b
+  offset: 10048
+}
+member {
+  id: 0xf182a49a
+  name: "s_dev"
+  type_id: 0xeb0f6de6
+  offset: 128
+}
+member {
+  id: 0x69080c31
+  name: "s_dio_done_wq"
+  type_id: 0x13f8b706
+  offset: 9856
+}
+member {
+  id: 0x70a8dfe7
+  name: "s_dquot"
+  type_id: 0x70d172e6
+  offset: 2496
+}
+member {
+  id: 0x17b3ec6e
+  name: "s_dv_timings"
+  type_id: 0x2dd9a3d6
+  offset: 896
+}
+member {
+  id: 0x0f33881d
+  name: "s_encoding"
+  type_id: 0x29063754
+  offset: 1792
+}
+member {
+  id: 0x473fbbcf
+  name: "s_encoding_flags"
+  type_id: 0xe8034002
+  offset: 1856
+}
+member {
+  id: 0x5acb0923
+  name: "s_export_op"
+  type_id: 0x3f55ac9d
+  offset: 576
+}
+member {
+  id: 0x481ae005
+  name: "s_f_ops"
+  type_id: 0x39bf00bd
+  offset: 12352
+}
+member {
+  id: 0x1b86c5cd
+  name: "s_filter"
+  type_id: 0x2d834d74
+  offset: 20224
+}
+member {
+  id: 0x0fb000e6
+  name: "s_flags"
+  type_id: 0x33756485
+  offset: 640
+}
+member {
+  id: 0x2cd2c09e
+  name: "s_frame_interval"
+  type_id: 0x2de72ceb
+  offset: 832
+}
+member {
+  id: 0xf13b57fb
+  name: "s_frequency"
+  type_id: 0x2dd6097a
+  offset: 128
+}
+member {
+  id: 0xb07b1578
+  name: "s_fs_info"
+  type_id: 0x18bd6530
+  offset: 7744
+}
+member {
+  id: 0xb07b1a4b
+  name: "s_fs_info"
+  type_id: 0x18bd6530
+  offset: 1152
+}
+member {
+  id: 0x24528520
+  name: "s_fsnotify_connectors"
+  type_id: 0xb02b353a
+  offset: 9728
+}
+member {
+  id: 0xd705f803
+  name: "s_fsnotify_marks"
+  type_id: 0x3bd2bf42
+  offset: 8064
+}
+member {
+  id: 0x8052ccfc
+  name: "s_fsnotify_mask"
+  type_id: 0xe62ebf07
+  offset: 8000
+}
+member {
+  id: 0x0bedb33e
+  name: "s_gpio"
+  type_id: 0x2d255333
+  offset: 320
+}
+member {
+  id: 0xfbf11a23
+  name: "s_i2s_clock_freq"
+  type_id: 0x2d255333
+  offset: 64
+}
+member {
+  id: 0x2474874d
+  name: "s_id"
+  type_id: 0x5adf57ae
+  offset: 8128
+}
+member {
+  id: 0x8f365def
+  name: "s_idle"
+  type_id: 0x0ebb9ddd
+  offset: 20032
+}
+member {
+  id: 0x3e26675d
+  name: "s_iflags"
+  type_id: 0x33756485
+  offset: 704
+}
+member {
+  id: 0x3e50931f
+  name: "s_iflags"
+  type_id: 0x4585663f
+  offset: 1280
+}
+member {
+  id: 0x852d6b86
+  name: "s_incoredqs"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x84958409
+  name: "s_inode_list_lock"
+  type_id: 0xf313e71a
+  offset: 11776
+}
+member {
+  id: 0x1f8277ea
+  name: "s_inode_lru"
+  type_id: 0xddabec2b
+  offset: 10432
+}
+member {
+  id: 0x40818645
+  name: "s_inode_wblist_lock"
+  type_id: 0xf313e71a
+  offset: 11968
+}
+member {
+  id: 0x952b2aef
+  name: "s_inodes"
+  type_id: 0xd3c80119
+  offset: 11840
+}
+member {
+  id: 0x681f8906
+  name: "s_inodes_wb"
+  type_id: 0xd3c80119
+  offset: 12032
+}
+member {
+  id: 0x3a798b1e
+  name: "s_instances"
+  type_id: 0x49a73111
+  offset: 2304
+}
+member {
+  id: 0x963e685d
+  name: "s_io_pin_config"
+  type_id: 0x2d1a07ad
+  offset: 64
+}
+member {
+  id: 0xa9144905
+  name: "s_list"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0xdb1c4cf1
+  name: "s_lock_key"
+  type_id: 0x475137a2
+  offset: 576
+}
+member {
+  id: 0x254d63e8
+  name: "s_magic"
+  type_id: 0x33756485
+  offset: 768
+}
+member {
+  id: 0x6b84af04
+  name: "s_master_keys"
+  type_id: 0x101ba464
+  offset: 1664
+}
+member {
+  id: 0xaba86e4d
+  name: "s_max_links"
+  type_id: 0x4585663f
+  offset: 8512
+}
+member {
+  id: 0xaace0885
+  name: "s_maxbytes"
+  type_id: 0x27a7c613
+  offset: 256
+}
+member {
+  id: 0xedf4ce77
+  name: "s_mode"
+  type_id: 0x9547a3da
+  offset: 8544
+}
+member {
+  id: 0xad0a67a4
+  name: "s_modulator"
+  type_id: 0x2ddc3b19
+  offset: 512
+}
+member {
+  id: 0xdef113f4
+  name: "s_mounts"
+  type_id: 0xd3c80119
+  offset: 1984
+}
+member {
+  id: 0x918eb782
+  name: "s_mtd"
+  type_id: 0x0c87b6a9
+  offset: 2240
+}
+member {
+  id: 0xb0d1441e
+  name: "s_node"
+  type_id: 0xd3c80119
+  offset: 64
+}
+member {
+  id: 0x5639cf6f
+  name: "s_op"
+  type_id: 0x31598e0f
+  offset: 384
+}
+member {
+  id: 0xc3db728d
+  name: "s_pins"
+  type_id: 0x5e8dc7f4
+  offset: 9920
+}
+member {
+  id: 0xbfcc3b0a
+  name: "s_power"
+  type_id: 0x2d8b7bcb
+  offset: 576
+}
+member {
+  id: 0x4cf676cc
+  name: "s_qcop"
+  type_id: 0x3d30320d
+  offset: 512
+}
+member {
+  id: 0xc1ddefc6
+  name: "s_quota_types"
+  type_id: 0x4585663f
+  offset: 2432
+}
+member {
+  id: 0xd7cce5b8
+  name: "s_radio"
+  type_id: 0x2dec5b18
+  offset: 64
+}
+member {
+  id: 0xfde8df1c
+  name: "s_raw_fmt"
+  type_id: 0x2dea3634
+  offset: 256
+}
+member {
+  id: 0x991030ac
+  name: "s_readonly_remount"
+  type_id: 0x6720d32f
+  offset: 9792
+}
+member {
+  id: 0x27fea713
+  name: "s_remove_count"
+  type_id: 0xb02b353a
+  offset: 9664
+}
+member {
+  id: 0xbdb2f3ed
+  name: "s_root"
+  type_id: 0x120540d1
+  offset: 832
+}
+member {
+  id: 0xc13bbd62
+  name: "s_roots"
+  type_id: 0x7abbe318
+  offset: 1920
+}
+member {
+  id: 0xc248e002
+  name: "s_routing"
+  type_id: 0x2d290ab9
+}
+member {
+  id: 0xc248e9c0
+  name: "s_routing"
+  type_id: 0x2d290ab9
+  offset: 128
+}
+member {
+  id: 0xab2a9968
+  name: "s_rx_buffer"
+  type_id: 0x2df5596b
+  offset: 1088
+}
+member {
+  id: 0x87490ae5
+  name: "s_rx_carrier_range"
+  type_id: 0x2d555684
+  offset: 19904
+}
+member {
+  id: 0x0bbf6cb2
+  name: "s_security"
+  type_id: 0x18bd6530
+  offset: 1472
+}
+member {
+  id: 0x469aa420
+  name: "s_shrink"
+  type_id: 0xb4975242
+  offset: 9152
+}
+member {
+  id: 0x51ed5557
+  name: "s_size"
+  type_id: 0xc9082b19
+  offset: 320
+}
+member {
+  id: 0xce6743a2
+  name: "s_sliced_fmt"
+  type_id: 0x2dc27cc9
+  offset: 384
+}
+member {
+  id: 0xfcc485bf
+  name: "s_stack_depth"
+  type_id: 0x6720d32f
+  offset: 11712
+}
+member {
+  id: 0x60645811
+  name: "s_state"
+  type_id: 0x0d878f24
+  offset: 64
+}
+member {
+  id: 0xe62d9df5
+  name: "s_std"
+  type_id: 0x2dfaa8d2
+  offset: 192
+}
+member {
+  id: 0xd7393168
+  name: "s_std_output"
+  type_id: 0x2dfaa8d2
+  offset: 256
+}
+member {
+  id: 0x969fe738
+  name: "s_stream"
+  type_id: 0x2d8b7bcb
+  offset: 640
+}
+member {
+  id: 0x969fe988
+  name: "s_stream"
+  type_id: 0x2d8b7bcb
+  offset: 192
+}
+member {
+  id: 0x86d6c6f8
+  name: "s_subtype"
+  type_id: 0x3e10b518
+  offset: 8960
+}
+member {
+  id: 0x91d3c1a8
+  name: "s_sync_lock"
+  type_id: 0xa7c362b0
+  offset: 11328
+}
+member {
+  id: 0x4e758ec6
+  name: "s_time_gran"
+  type_id: 0xc9082b19
+  offset: 7808
+}
+member {
+  id: 0xadcfb23e
+  name: "s_time_max"
+  type_id: 0x865acc96
+  offset: 7936
+}
+member {
+  id: 0x3dd2dfb0
+  name: "s_time_min"
+  type_id: 0x865acc96
+  offset: 7872
+}
+member {
+  id: 0x83de49c6
+  name: "s_timeout"
+  type_id: 0x2dd54b4b
+  offset: 20352
+}
+member {
+  id: 0xfdbef538
+  name: "s_tuner"
+  type_id: 0x2ddfa3bd
+  offset: 384
+}
+member {
+  id: 0x1b6412a2
+  name: "s_tx_carrier"
+  type_id: 0x2d59c606
+  offset: 19776
+}
+member {
+  id: 0xa796def6
+  name: "s_tx_duty_cycle"
+  type_id: 0x2d59c606
+  offset: 19840
+}
+member {
+  id: 0x20038b5b
+  name: "s_tx_mask"
+  type_id: 0x2d59c606
+  offset: 19712
+}
+member {
+  id: 0x906a90c7
+  name: "s_type"
+  type_id: 0x32ec08f2
+  offset: 320
+}
+member {
+  id: 0xc5ff95d9
+  name: "s_type_addr"
+  type_id: 0x2dcf4a13
+  offset: 576
+}
+member {
+  id: 0xf6216f18
+  name: "s_umount"
+  type_id: 0x28b9ec9a
+  offset: 896
+}
+member {
+  id: 0xcf59f61b
+  name: "s_umount_key"
+  type_id: 0x475137a2
+  offset: 576
+}
+member {
+  id: 0x5c40ac73
+  name: "s_user_ns"
+  type_id: 0x0fabaf3b
+  offset: 9984
+}
+member {
+  id: 0x4165ab3e
+  name: "s_uuid"
+  type_id: 0x53cba54b
+  offset: 8384
+}
+member {
+  id: 0xf24ecf40
+  name: "s_vbi_data"
+  type_id: 0x2ddda601
+  offset: 64
+}
+member {
+  id: 0x48025455
+  name: "s_vfs_rename_key"
+  type_id: 0x475137a2
+  offset: 576
+}
+member {
+  id: 0x166d99fd
+  name: "s_vfs_rename_mutex"
+  type_id: 0xa7c362b0
+  offset: 8576
+}
+member {
+  id: 0x048b499d
+  name: "s_vop"
+  type_id: 0x3b1d2a91
+  offset: 1728
+}
+member {
+  id: 0xeeb5498b
+  name: "s_wakeup_filter"
+  type_id: 0x2d834d74
+  offset: 20288
+}
+member {
+  id: 0x6ba2c35c
+  name: "s_wb_err"
+  type_id: 0x160ba102
+  offset: 9824
+}
+member {
+  id: 0x822c7eed
+  name: "s_wideband_receiver"
+  type_id: 0x2df7eefe
+  offset: 20096
+}
+member {
+  id: 0x1266cb98
+  name: "s_writers"
+  type_id: 0x4a46abb3
+  offset: 5184
+}
+member {
+  id: 0x9f4bb205
+  name: "s_writers_key"
+  type_id: 0x0311b8dc
+  offset: 576
+}
+member {
+  id: 0xfa02d09d
+  name: "s_xattr"
+  type_id: 0x05b572ab
+  offset: 1536
+}
+member {
+  id: 0x1b3dda4f
+  name: "sa"
+  type_id: 0x2b869518
+  offset: 256
+}
+member {
+  id: 0x1b98b52e
+  name: "sa"
+  type_id: 0x8ee19617
+  offset: 192
+}
+member {
+  id: 0x1b9b70e2
+  name: "sa"
+  type_id: 0x8d2872f9
+  offset: 64
+}
+member {
+  id: 0x1be9c1b7
+  name: "sa"
+  type_id: 0xff9dc6cd
+}
+member {
+  id: 0x6f6a03e4
+  name: "sa_data"
+  type_id: 0xd2501053
+  offset: 16
+}
+member {
+  id: 0xac335420
+  name: "sa_family"
+  type_id: 0x3032dbe6
+  offset: 16
+}
+member {
+  id: 0xac335a9e
+  name: "sa_family"
+  type_id: 0x3032dbe6
+}
+member {
+  id: 0x1d75d0bb
+  name: "sa_flags"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xb230b13e
+  name: "sa_handler"
+  type_id: 0x20e98e97
+}
+member {
+  id: 0x8c6d2d46
+  name: "sa_mask"
+  type_id: 0x02097f03
+  offset: 192
+}
+member {
+  id: 0x350b42d4
+  name: "sa_restorer"
+  type_id: 0x5a722500
+  offset: 128
+}
+member {
+  id: 0x5577a750
+  name: "sa_timeout"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x48ddf3dd
+  name: "sack_list_head"
+  type_id: 0xd3c80119
+  offset: 3072
+}
+member {
+  id: 0xf8038083
+  name: "saddr"
+  type_id: 0x313397f7
+  offset: 96
+}
+member {
+  id: 0xf80380c2
+  name: "saddr"
+  type_id: 0x313397f7
+  offset: 128
+}
+member {
+  id: 0xf80381c9
+  name: "saddr"
+  type_id: 0x313397f7
+  offset: 192
+}
+member {
+  id: 0xf8038900
+  name: "saddr"
+  type_id: 0x313397f7
+}
+member {
+  id: 0xf85f946f
+  name: "saddr"
+  type_id: 0x6d25e07f
+  offset: 512
+}
+member {
+  id: 0xf85f9f77
+  name: "saddr"
+  type_id: 0x6d25e07f
+}
+member {
+  id: 0xf8d0cc3a
+  name: "saddr"
+  type_id: 0xe276adef
+}
+member {
+  id: 0xf8d0cda8
+  name: "saddr"
+  type_id: 0xe276adef
+  offset: 384
+}
+member {
+  id: 0x38f149ed
+  name: "safe_state_index"
+  type_id: 0x6720d32f
+  offset: 8544
+}
+member {
+  id: 0x172628fd
+  name: "salt"
+  type_id: 0x4aaca7b4
+  offset: 192
+}
+member {
+  id: 0x9b9fa9a3
+  name: "same_root"
+  type_id: 0xd3c80119
+  offset: 512
+}
+member {
+  id: 0xd9579a34
+  name: "same_target_siblings"
+  type_id: 0xd3c80119
+  offset: 256
+}
+member {
+  id: 0x9557af07
+  name: "sample"
+  type_id: 0x0803e9c5
+}
+member {
+  id: 0x1beea273
+  name: "sample_accum"
+  type_id: 0x4585663f
+  offset: 44800
+}
+member {
+  id: 0xa26bd18c
+  name: "sample_bits"
+  type_id: 0x4585663f
+  offset: 1312
+}
+member {
+  id: 0xa26bde3e
+  name: "sample_bits"
+  type_id: 0x4585663f
+  offset: 640
+}
+member {
+  id: 0x73f4b0b4
+  name: "sample_delay_ns"
+  type_id: 0x2e0f9112
+  offset: 512
+}
+member {
+  id: 0xa3b36710
+  name: "sample_flags"
+  type_id: 0x92233392
+}
+member {
+  id: 0x9b4da27b
+  name: "sample_format"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0xd55a0cb1
+  name: "sample_freq"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x5942daa4
+  name: "sample_frequency"
+  type_id: 0x87af27f9
+  offset: 128
+}
+member {
+  id: 0xe2c0069f
+  name: "sample_id_all"
+  type_id: 0xedf277ba
+  offset: 338
+  bitsize: 1
+}
+member {
+  id: 0xa9bbdf73
+  name: "sample_max_stack"
+  type_id: 0xe8034002
+  offset: 864
+}
+member {
+  id: 0x58a5d4c8
+  name: "sample_period"
+  type_id: 0x92233392
+  offset: 1088
+}
+member {
+  id: 0x58da08fa
+  name: "sample_period"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x811c40ff
+  name: "sample_point"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x7a708b10
+  name: "sample_rate"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x58187b9b
+  name: "sample_rate_read_error"
+  type_id: 0x6720d32f
+  offset: 2144
+}
+member {
+  id: 0x23cb252f
+  name: "sample_rates"
+  type_id: 0x6d472730
+  offset: 32
+}
+member {
+  id: 0x4d7e7daf
+  name: "sample_regs_intr"
+  type_id: 0xedf277ba
+  offset: 768
+}
+member {
+  id: 0xa1f3f534
+  name: "sample_regs_user"
+  type_id: 0xedf277ba
+  offset: 640
+}
+member {
+  id: 0x0a3f8c5f
+  name: "sample_rem"
+  type_id: 0x4585663f
+  offset: 44768
+}
+member {
+  id: 0xa30ebd21
+  name: "sample_size"
+  type_id: 0xcf7a0b70
+  offset: 96
+}
+member {
+  id: 0xa329cde9
+  name: "sample_size"
+  type_id: 0xe8034002
+}
+member {
+  id: 0x55f818a2
+  name: "sample_stack_user"
+  type_id: 0xe62ebf07
+  offset: 704
+}
+member {
+  id: 0x6d4d79d7
+  name: "sample_type"
+  type_id: 0xedf277ba
+  offset: 192
+}
+member {
+  id: 0x153d5d78
+  name: "samples"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0xa67ab6c4
+  name: "samples_per_line"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x11ed2432
+  name: "sampling_down_factor"
+  type_id: 0x4585663f
+  offset: 1536
+}
+member {
+  id: 0xf64611c2
+  name: "sampling_rate"
+  type_id: 0x4585663f
+  offset: 1504
+}
+member {
+  id: 0xf6e5b6dd
+  name: "sampling_rate"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0xf6e5bf1f
+  name: "sampling_rate"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x04ae54cb
+  name: "sanitize_stack_spill"
+  type_id: 0x6d7f5ff6
+  offset: 320
+}
+member {
+  id: 0x6ce8bf12
+  name: "sanity_check"
+  type_id: 0x2f5f6076
+  offset: 832
+}
+member {
+  id: 0xa9b5e658
+  name: "sar_capa"
+  type_id: 0x30f1da89
+  offset: 11776
+}
+member {
+  id: 0x302bb6cd
+  name: "sas_ss_flags"
+  type_id: 0x4585663f
+  offset: 18176
+}
+member {
+  id: 0x06bfc90f
+  name: "sas_ss_size"
+  type_id: 0xf435685e
+  offset: 18112
+}
+member {
+  id: 0xe4606681
+  name: "sas_ss_sp"
+  type_id: 0x33756485
+  offset: 18048
+}
+member {
+  id: 0x7c3c7854
+  name: "saturation"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0xa886909d
+  name: "save_context"
+  type_id: 0x2d5e4b40
+  offset: 512
+}
+member {
+  id: 0x10476fa4
+  name: "saved"
+  type_id: 0x111e281f
+  offset: 1664
+}
+member {
+  id: 0x0828df49
+  name: "saved_addr"
+  type_id: 0xf60ed6a0
+  offset: 1504
+}
+member {
+  id: 0xf0bebbb2
+  name: "saved_auxv"
+  type_id: 0x1365e9fc
+  offset: 2816
+}
+member {
+  id: 0x591a837c
+  name: "saved_cap_space"
+  type_id: 0x5e8dc7f4
+  offset: 22720
+}
+member {
+  id: 0xf18bd3bf
+  name: "saved_close"
+  type_id: 0x0f9e60f8
+  offset: 1344
+}
+member {
+  id: 0x4005779e
+  name: "saved_config_space"
+  type_id: 0x7e71c857
+  offset: 22176
+}
+member {
+  id: 0xa1a75ac9
+  name: "saved_data_ready"
+  type_id: 0x0f626ee5
+  offset: 1472
+}
+member {
+  id: 0xc6c2067e
+  name: "saved_destroy"
+  type_id: 0x0f626ee5
+  offset: 1280
+}
+member {
+  id: 0xb70457a3
+  name: "saved_dst_attach_type"
+  type_id: 0xaf94e3a7
+  offset: 1184
+}
+member {
+  id: 0xbd448174
+  name: "saved_dst_prog_type"
+  type_id: 0xffd5e3ef
+  offset: 1152
+}
+member {
+  id: 0x2f4c48f3
+  name: "saved_end_io"
+  type_id: 0x3b5cc110
+  offset: 192
+}
+member {
+  id: 0xfc44bb66
+  name: "saved_err"
+  type_id: 0xc9082b19
+  offset: 5632
+}
+member {
+  id: 0xd71a53af
+  name: "saved_latency"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0x7ab8a1e7
+  name: "saved_max_active"
+  type_id: 0x6720d32f
+  offset: 1312
+}
+member {
+  id: 0xbdd7d0f3
+  name: "saved_metric"
+  type_id: 0x92233392
+}
+member {
+  id: 0xb406539e
+  name: "saved_priority"
+  type_id: 0xe9da44e2
+  offset: 896
+}
+member {
+  id: 0x76c06a7e
+  name: "saved_proto"
+  type_id: 0x261f6c9d
+  offset: 1632
+}
+member {
+  id: 0x59505ceb
+  name: "saved_pwr_info"
+  type_id: 0x4aaab821
+  offset: 512
+}
+member {
+  id: 0x7e4c3092
+  name: "saved_sigmask"
+  type_id: 0x02097f03
+  offset: 17792
+}
+member {
+  id: 0xf076633c
+  name: "saved_sk"
+  type_id: 0x1d44326e
+}
+member {
+  id: 0x799f6788
+  name: "saved_slots"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0x72f4c281
+  name: "saved_syn"
+  type_id: 0x10c6675a
+  offset: 1792
+}
+member {
+  id: 0x424e9efd
+  name: "saved_tmo"
+  type_id: 0xfc0e1dbd
+  offset: 5504
+}
+member {
+  id: 0x679b6d54
+  name: "saved_uic_err"
+  type_id: 0xc9082b19
+  offset: 5664
+}
+member {
+  id: 0xdd03d972
+  name: "saved_unhash"
+  type_id: 0x0f626ee5
+  offset: 1216
+}
+member {
+  id: 0xd444f1ad
+  name: "saved_write_space"
+  type_id: 0x0f626ee5
+  offset: 1408
+}
+member {
+  id: 0x597655fc
+  name: "sb"
+  type_id: 0xa3189db3
+}
+member {
+  id: 0x0233d491
+  name: "sb_dev"
+  type_id: 0x32a623d7
+  offset: 1088
+}
+member {
+  id: 0x62ab234e
+  name: "sb_flags"
+  type_id: 0x4585663f
+  offset: 1216
+}
+member {
+  id: 0xf9ac4a34
+  name: "sb_flags_mask"
+  type_id: 0x4585663f
+  offset: 1248
+}
+member {
+  id: 0xa49e8276
+  name: "sb_len_wr"
+  type_id: 0x5d8155a5
+  offset: 536
+}
+member {
+  id: 0xe1b6b51b
+  name: "sb_list"
+  type_id: 0xd3c80119
+  offset: 8448
+}
+member {
+  id: 0x7ac264e0
+  name: "sbc"
+  type_id: 0x2ea8d96e
+}
+member {
+  id: 0x479a228c
+  name: "sbe_balanced"
+  type_id: 0x4585663f
+  offset: 1792
+}
+member {
+  id: 0x218b0115
+  name: "sbe_count"
+  type_id: 0x4585663f
+  offset: 1760
+}
+member {
+  id: 0x5e0adb24
+  name: "sbe_pushed"
+  type_id: 0x4585663f
+  offset: 1824
+}
+member {
+  id: 0xceeafb1e
+  name: "sbf_balanced"
+  type_id: 0x4585663f
+  offset: 1888
+}
+member {
+  id: 0xe679a90c
+  name: "sbf_count"
+  type_id: 0x4585663f
+  offset: 1856
+}
+member {
+  id: 0xac4477ba
+  name: "sbf_pushed"
+  type_id: 0x4585663f
+  offset: 1920
+}
+member {
+  id: 0x432405fe
+  name: "sbits4"
+  type_id: 0x295c7202
+  offset: 104
+}
+member {
+  id: 0xc0a14274
+  name: "sbits6"
+  type_id: 0x295c7202
+  offset: 120
+}
+member {
+  id: 0x920d0f6b
+  name: "sbp"
+  type_id: 0x18bd6530
+  offset: 256
+}
+member {
+  id: 0x693c7182
+  name: "sbrn"
+  type_id: 0x295c7202
+  offset: 5704
+}
+member {
+  id: 0x693c74f4
+  name: "sbrn"
+  type_id: 0x295c7202
+  offset: 640
+}
+member {
+  id: 0x9801f1f9
+  name: "sc"
+  type_id: 0x94d22c44
+}
+member {
+  id: 0x98ac95ed
+  name: "sc"
+  type_id: 0x39bf4a63
+  offset: 576
+}
+member {
+  id: 0x2c1c8ac0
+  name: "sc_data_direction"
+  type_id: 0xcd84e3cd
+  offset: 1664
+}
+member {
+  id: 0xdfc75d73
+  name: "sc_di"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0xdb2908a4
+  name: "sc_fi"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xdfbc3823
+  name: "sca"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0xe6602200
+  name: "scale"
+  type_id: 0x4c22aee5
+  offset: 192
+}
+member {
+  id: 0xe669861c
+  name: "scale"
+  type_id: 0x4585663f
+  offset: 1856
+}
+member {
+  id: 0xe6799493
+  name: "scale"
+  type_id: 0x559cf452
+}
+member {
+  id: 0x3d45ff7b
+  name: "scale_decrement_interval"
+  type_id: 0x914dbfdc
+  offset: 880
+}
+member {
+  id: 0x60873bee
+  name: "scale_decrement_interval_high"
+  type_id: 0x295c7202
+  offset: 192
+}
+member {
+  id: 0xb136b0e8
+  name: "scale_decrement_interval_low"
+  type_id: 0x295c7202
+  offset: 200
+}
+member {
+  id: 0x8020be2c
+  name: "scale_increment_interval"
+  type_id: 0x7584e7da
+  offset: 176
+}
+member {
+  id: 0x80c47905
+  name: "scale_increment_interval"
+  type_id: 0x914dbfdc
+  offset: 896
+}
+member {
+  id: 0x35dd21fe
+  name: "scaling_filter"
+  type_id: 0x7802cc54
+  offset: 1056
+}
+member {
+  id: 0x35dd2d57
+  name: "scaling_filter"
+  type_id: 0x7802cc54
+  offset: 2432
+}
+member {
+  id: 0x615d094c
+  name: "scaling_filter_property"
+  type_id: 0x2a670b41
+  offset: 10496
+}
+member {
+  id: 0x615d0cd6
+  name: "scaling_filter_property"
+  type_id: 0x2a670b41
+  offset: 11904
+}
+member {
+  id: 0x5435f425
+  name: "scaling_list_16x16"
+  type_id: 0xa675e9e1
+  offset: 3840
+}
+member {
+  id: 0x84c45f18
+  name: "scaling_list_32x32"
+  type_id: 0x6b7dfaaa
+  offset: 6912
+}
+member {
+  id: 0x5e484273
+  name: "scaling_list_4x4"
+  type_id: 0xb993d8a0
+}
+member {
+  id: 0x08536198
+  name: "scaling_list_8x8"
+  type_id: 0xa675e9e1
+  offset: 768
+}
+member {
+  id: 0x523f2540
+  name: "scaling_list_dc_coef_16x16"
+  type_id: 0x8d58bd1a
+  offset: 7936
+}
+member {
+  id: 0x359b9a1e
+  name: "scaling_list_dc_coef_32x32"
+  type_id: 0x4050ae51
+  offset: 7984
+}
+member {
+  id: 0x89c0a7bc
+  name: "scaling_max_freq"
+  type_id: 0x33756485
+  offset: 11200
+}
+member {
+  id: 0x068a9bfe
+  name: "scaling_min_freq"
+  type_id: 0x33756485
+  offset: 11136
+}
+member {
+  id: 0xbb3c1319
+  name: "scaling_mode"
+  type_id: 0x4585663f
+  offset: 896
+}
+member {
+  id: 0x3d8ff1b5
+  name: "scaling_mode_property"
+  type_id: 0x2a670b41
+  offset: 11584
+}
+member {
+  id: 0x3d8ff816
+  name: "scaling_mode_property"
+  type_id: 0x2a670b41
+  offset: 8320
+}
+member {
+  id: 0xa105764c
+  name: "scan"
+  type_id: 0x31c2530c
+}
+member {
+  id: 0xa1389a4d
+  name: "scan"
+  type_id: 0x0c254fa0
+  offset: 1856
+}
+member {
+  id: 0x78da1751
+  name: "scan_active"
+  type_id: 0x33756485
+  offset: 1856
+}
+member {
+  id: 0x721968d4
+  name: "scan_align"
+  type_id: 0xc9082b19
+  offset: 160
+}
+member {
+  id: 0x94dbf2ad
+  name: "scan_bytes"
+  type_id: 0x6720d32f
+  offset: 7424
+}
+member {
+  id: 0x6eba58e1
+  name: "scan_duration"
+  type_id: 0x33756485
+  offset: 1024
+}
+member {
+  id: 0xccfe424f
+  name: "scan_finished"
+  type_id: 0x2cbedfd4
+  offset: 1280
+}
+member {
+  id: 0xa9990381
+  name: "scan_index"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0x2c454328
+  name: "scan_mask"
+  type_id: 0x3593bec8
+  offset: 320
+}
+member {
+  id: 0x27ba886c
+  name: "scan_mode"
+  type_id: 0xb5ec15e2
+  offset: 96
+}
+member {
+  id: 0x0ceae476
+  name: "scan_mutex"
+  type_id: 0xa7c362b0
+  offset: 512
+}
+member {
+  id: 0x096a2656
+  name: "scan_objects"
+  type_id: 0x0484940b
+  offset: 64
+}
+member {
+  id: 0x0112ef01
+  name: "scan_plans"
+  type_id: 0x2fdbb151
+  offset: 640
+}
+member {
+  id: 0x2e353a9c
+  name: "scan_rsp_data"
+  type_id: 0x53171385
+  offset: 41136
+}
+member {
+  id: 0x83054658
+  name: "scan_rsp_data_len"
+  type_id: 0xb3e7bac9
+  offset: 43144
+}
+member {
+  id: 0x71d18ef9
+  name: "scan_start"
+  type_id: 0x0fcb861f
+  offset: 1344
+}
+member {
+  id: 0x71ed326b
+  name: "scan_start"
+  type_id: 0x33756485
+  offset: 960
+}
+member {
+  id: 0x71ed37ee
+  name: "scan_start"
+  type_id: 0x33756485
+  offset: 1088
+}
+member {
+  id: 0x7a78a7dd
+  name: "scan_timestamp"
+  type_id: 0x6d7f5ff6
+  offset: 8064
+}
+member {
+  id: 0x7a78ae75
+  name: "scan_timestamp"
+  type_id: 0x6d7f5ff6
+  offset: 736
+}
+member {
+  id: 0x4364afcf
+  name: "scan_type"
+  type_id: 0x3c6541cd
+  offset: 224
+}
+member {
+  id: 0xc741085d
+  name: "scan_width"
+  type_id: 0x158778bc
+  offset: 192
+}
+member {
+  id: 0xc46045a5
+  name: "scancode"
+  type_id: 0x92233392
+}
+member {
+  id: 0xc48a5711
+  name: "scancode"
+  type_id: 0x78356643
+  offset: 64
+}
+member {
+  id: 0x04458267
+  name: "scancode_filter"
+  type_id: 0x644d80b1
+  offset: 9184
+}
+member {
+  id: 0x4bc6fa80
+  name: "scancode_mask"
+  type_id: 0xc9082b19
+  offset: 9312
+}
+member {
+  id: 0xf30e73e0
+  name: "scancode_wakeup_filter"
+  type_id: 0x644d80b1
+  offset: 9248
+}
+member {
+  id: 0x3bfa7655
+  name: "scanned"
+  type_id: 0x33756485
+}
+member {
+  id: 0xcb96cc8c
+  name: "scanning"
+  type_id: 0x6d7f5ff6
+  offset: 1824
+  bitsize: 1
+}
+member {
+  id: 0xb40bd33a
+  name: "scanning_paused"
+  type_id: 0x6d7f5ff6
+  offset: 28608
+}
+member {
+  id: 0x93a30d5c
+  name: "scb"
+  type_id: 0x6d7f5ff6
+  offset: 40
+}
+member {
+  id: 0x0ac848fc
+  name: "scdc"
+  type_id: 0xd9f17649
+}
+member {
+  id: 0x081cdae4
+  name: "sch"
+  type_id: 0x2e8d5f05
+  offset: 512
+}
+member {
+  id: 0xf3f4f775
+  name: "sched_cb_entry"
+  type_id: 0xd3c80119
+  offset: 3264
+}
+member {
+  id: 0x146c48c0
+  name: "sched_cb_usage"
+  type_id: 0x6720d32f
+  offset: 3392
+}
+member {
+  id: 0xdb388059
+  name: "sched_class"
+  type_id: 0x3029eaf7
+  offset: 6656
+}
+member {
+  id: 0xb10bbbfb
+  name: "sched_contributes_to_load"
+  type_id: 0x4585663f
+  offset: 12065
+  bitsize: 1
+}
+member {
+  id: 0x17e1de27
+  name: "sched_count"
+  type_id: 0x4585663f
+  offset: 28640
+}
+member {
+  id: 0x094ae4ea
+  name: "sched_data"
+  type_id: 0x18bd6530
+  offset: 1792
+}
+member {
+  id: 0xf3d2c93c
+  name: "sched_deadline"
+  type_id: 0xedf277ba
+  offset: 256
+}
+member {
+  id: 0x19335555
+  name: "sched_debugfs_dir"
+  type_id: 0x120540d1
+  offset: 4416
+}
+member {
+  id: 0x19335e74
+  name: "sched_debugfs_dir"
+  type_id: 0x120540d1
+  offset: 8384
+}
+member {
+  id: 0x630913d8
+  name: "sched_flags"
+  type_id: 0xedf277ba
+  offset: 64
+}
+member {
+  id: 0x87e6fe9b
+  name: "sched_goidle"
+  type_id: 0x4585663f
+  offset: 28672
+}
+member {
+  id: 0xe0b448e4
+  name: "sched_in"
+  type_id: 0x0c5f174a
+}
+member {
+  id: 0x03385852
+  name: "sched_info"
+  type_id: 0x4d09650b
+  offset: 10624
+}
+member {
+  id: 0xde922811
+  name: "sched_migrated"
+  type_id: 0x4585663f
+  offset: 12066
+  bitsize: 1
+}
+member {
+  id: 0xb1b19fad
+  name: "sched_nice"
+  type_id: 0x0faae5b1
+  offset: 128
+}
+member {
+  id: 0x7b24028f
+  name: "sched_out"
+  type_id: 0x0c252e30
+  offset: 64
+}
+member {
+  id: 0x848a6070
+  name: "sched_period"
+  type_id: 0xedf277ba
+  offset: 320
+}
+member {
+  id: 0x50fae85c
+  name: "sched_policy"
+  type_id: 0x295c7202
+  bitsize: 2
+}
+member {
+  id: 0x78436d6c
+  name: "sched_policy"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x78e0cb8e
+  name: "sched_policy"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x242d91d6
+  name: "sched_priority"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x24ac925a
+  name: "sched_priority"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0x4a100a19
+  name: "sched_psi_wake_requeue"
+  type_id: 0x4585663f
+  offset: 12067
+  bitsize: 1
+}
+member {
+  id: 0x90478055
+  name: "sched_remote_wakeup"
+  type_id: 0x4585663f
+  offset: 12096
+  bitsize: 1
+}
+member {
+  id: 0x74400dcf
+  name: "sched_reset_on_fork"
+  type_id: 0x4585663f
+  offset: 12064
+  bitsize: 1
+}
+member {
+  id: 0x499e9d71
+  name: "sched_runtime"
+  type_id: 0xedf277ba
+  offset: 192
+}
+member {
+  id: 0x621e2dc9
+  name: "sched_shared_tags"
+  type_id: 0x0d881d5f
+  offset: 3392
+}
+member {
+  id: 0xedf685a4
+  name: "sched_tags"
+  type_id: 0x0d881d5f
+  offset: 3008
+}
+member {
+  id: 0x18174f13
+  name: "sched_task"
+  type_id: 0x0ce121ef
+  offset: 1664
+}
+member {
+  id: 0xde5278f2
+  name: "sched_task_group"
+  type_id: 0x2ba5754c
+  offset: 6720
+}
+member {
+  id: 0x30a7b077
+  name: "sched_util_max"
+  type_id: 0xe62ebf07
+  offset: 416
+}
+member {
+  id: 0xa51e1e2c
+  name: "sched_util_min"
+  type_id: 0xe62ebf07
+  offset: 384
+}
+member {
+  id: 0x8500bc1d
+  name: "scheduled"
+  type_id: 0x4585663f
+  offset: 512
+}
+member {
+  id: 0x8596fbf0
+  name: "scheduled"
+  type_id: 0xd3c80119
+  offset: 384
+}
+member {
+  id: 0xc70d2bad
+  name: "schemas"
+  type_id: 0x674028f7
+  offset: 1728
+}
+member {
+  id: 0xc9c3700c
+  name: "sci"
+  type_id: 0xcdc0f9fc
+  offset: 128
+}
+member {
+  id: 0xc9c379ce
+  name: "sci"
+  type_id: 0xcdc0f9fc
+}
+member {
+  id: 0xc9c37d2f
+  name: "sci"
+  type_id: 0xcdc0f9fc
+  offset: 64
+}
+member {
+  id: 0x5ba8c050
+  name: "scid"
+  type_id: 0xe8034002
+  offset: 432
+}
+member {
+  id: 0xb3ae48f4
+  name: "scl_fall_ns"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x0f8ce379
+  name: "scl_gpiod"
+  type_id: 0x2560a232
+  offset: 512
+}
+member {
+  id: 0x2d689b99
+  name: "scl_int_delay_ns"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0x8ab3e875
+  name: "scl_rate"
+  type_id: 0x21ac4e87
+  offset: 448
+}
+member {
+  id: 0x318a690a
+  name: "scl_rise_ns"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x788c9e45
+  name: "sclass"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xe473c8a3
+  name: "scm_io_uring"
+  type_id: 0xb3e7bac9
+  offset: 34
+  bitsize: 1
+}
+member {
+  id: 0xe94f5bce
+  name: "scmd_flags"
+  type_id: 0x6720d32f
+  offset: 224
+}
+member {
+  id: 0x7355a2a5
+  name: "scmversion"
+  type_id: 0x3e10b518
+  offset: 1856
+}
+member {
+  id: 0xe1b8deee
+  name: "sco_cnt"
+  type_id: 0x4585663f
+  offset: 13056
+}
+member {
+  id: 0x853bbcd4
+  name: "sco_data"
+  type_id: 0x18bd6530
+  offset: 16448
+}
+member {
+  id: 0x7c6b567e
+  name: "sco_last_tx"
+  type_id: 0x33756485
+  offset: 13568
+}
+member {
+  id: 0x3171bf74
+  name: "sco_mtu"
+  type_id: 0x4585663f
+  offset: 13184
+}
+member {
+  id: 0x560b5e17
+  name: "sco_num"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0x71d3a39c
+  name: "sco_pkts"
+  type_id: 0x4585663f
+  offset: 13312
+}
+member {
+  id: 0x64be414e
+  name: "sco_rx"
+  type_id: 0xe62ebf07
+  offset: 224
+}
+member {
+  id: 0x44de5212
+  name: "sco_tx"
+  type_id: 0xe62ebf07
+  offset: 192
+}
+member {
+  id: 0x34160ac3
+  name: "scope"
+  type_id: 0xc9082b19
+  offset: 800
+}
+member {
+  id: 0x3485b8be
+  name: "scope"
+  type_id: 0x5ab350f8
+  offset: 24
+}
+member {
+  id: 0x9755fab4
+  name: "scr"
+  type_id: 0x95350a7d
+  offset: 10560
+}
+member {
+  id: 0x3269ea7c
+  name: "scrambling"
+  type_id: 0x2006a7c4
+  offset: 16
+}
+member {
+  id: 0x29a97016
+  name: "scratched_regs"
+  type_id: 0xc9082b19
+  offset: 76352
+}
+member {
+  id: 0xa944ccfb
+  name: "scratched_stack_slots"
+  type_id: 0x92233392
+  offset: 76416
+}
+member {
+  id: 0x9989142b
+  name: "scratchpad"
+  type_id: 0x76597acb
+  offset: 192
+}
+member {
+  id: 0x99e1646a
+  name: "scratchpad"
+  type_id: 0x1e2b9d4a
+  offset: 3264
+}
+member {
+  id: 0x4190c1e8
+  name: "screen_base"
+  type_id: 0x0483e6f8
+}
+member {
+  id: 0x7889216a
+  name: "screen_buffer"
+  type_id: 0x0483e6f8
+}
+member {
+  id: 0xcfe67f2f
+  name: "screen_size"
+  type_id: 0x33756485
+  offset: 5696
+}
+member {
+  id: 0x8f6b43c5
+  name: "scs_base"
+  type_id: 0x18bd6530
+  offset: 192
+}
+member {
+  id: 0x2ae2387d
+  name: "scs_sp"
+  type_id: 0x18bd6530
+  offset: 256
+}
+member {
+  id: 0x7e720bd0
+  name: "scsi_block_reqs_cnt"
+  type_id: 0x74d29cf1
+  offset: 27392
+}
+member {
+  id: 0x6538b597
+  name: "scsi_host_added"
+  type_id: 0x6d7f5ff6
+  offset: 40272
+}
+member {
+  id: 0x581cb8e9
+  name: "scsi_level"
+  type_id: 0x384f7d7c
+  offset: 7872
+}
+member {
+  id: 0x581cb9a8
+  name: "scsi_level"
+  type_id: 0x384f7d7c
+  offset: 1416
+}
+member {
+  id: 0x82e8f5ef
+  name: "scsi_lun"
+  type_id: 0xc8c766a0
+}
+member {
+  id: 0x2658b66c
+  name: "scsi_status"
+  type_id: 0x6720d32f
+  offset: 576
+}
+member {
+  id: 0xc64ab41c
+  name: "sctlr_user"
+  type_id: 0x92233392
+  offset: 8768
+}
+member {
+  id: 0xe536536a
+  name: "sctp"
+  type_id: 0x54597ca4
+  offset: 992
+}
+member {
+  id: 0xe5684527
+  name: "sctp"
+  type_id: 0x0a4fe389
+}
+member {
+  id: 0xe5bd426b
+  name: "sctp"
+  type_id: 0xdf48af38
+}
+member {
+  id: 0xb07960b6
+  name: "sctp_ip4_spec"
+  type_id: 0xdc098d1a
+}
+member {
+  id: 0x08717e6b
+  name: "sctp_ip6_spec"
+  type_id: 0xe7754efc
+}
+member {
+  id: 0xdd532fa4
+  name: "sd"
+  type_id: 0x042bd90b
+  offset: 23168
+}
+member {
+  id: 0xdd56ca3b
+  name: "sd"
+  type_id: 0x01c5a749
+  offset: 128
+}
+member {
+  id: 0xdd6d5486
+  name: "sd"
+  type_id: 0x3a534a58
+  offset: 384
+}
+member {
+  id: 0xb8cbcbe6
+  name: "sd3_bus_mode"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xefdbc803
+  name: "sd3_curr_limit"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x25a5b889
+  name: "sd3_drv_type"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x480b02c3
+  name: "sd_bus_speed"
+  type_id: 0x4585663f
+  offset: 11968
+}
+member {
+  id: 0x16a58108
+  name: "sd_count"
+  type_id: 0x74d29cf1
+  offset: 10432
+}
+member {
+  id: 0x9ad21d49
+  name: "sd_vsn"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x30aeb36e
+  name: "sda"
+  type_id: 0x3e279e0a
+  offset: 1728
+}
+member {
+  id: 0x0ffc9d38
+  name: "sda_fall_ns"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0x80786192
+  name: "sda_gpiod"
+  type_id: 0x2560a232
+  offset: 576
+}
+member {
+  id: 0xf0213acf
+  name: "sda_hold_ns"
+  type_id: 0xc9082b19
+  offset: 160
+}
+member {
+  id: 0xcd3582bb
+  name: "sda_is_static"
+  type_id: 0x6d7f5ff6
+  offset: 1792
+}
+member {
+  id: 0xafea47a9
+  name: "sda_spec3"
+  type_id: 0x5d8155a5
+  offset: 8
+}
+member {
+  id: 0x46a4501a
+  name: "sda_spec4"
+  type_id: 0x5d8155a5
+  offset: 16
+}
+member {
+  id: 0x740d07fa
+  name: "sda_specx"
+  type_id: 0x5d8155a5
+  offset: 24
+}
+member {
+  id: 0xf202cbe0
+  name: "sda_vsn"
+  type_id: 0x5d8155a5
+}
+member {
+  id: 0x7cc6b54d
+  name: "sdb"
+  type_id: 0x943374e3
+  offset: 1984
+}
+member {
+  id: 0xb1d1daf5
+  name: "sdei_ttbr1"
+  type_id: 0x92233392
+  offset: 2304
+}
+member {
+  id: 0x73a984b7
+  name: "sdev_bflags"
+  type_id: 0xf3f948a5
+  offset: 2688
+}
+member {
+  id: 0x43fd7508
+  name: "sdev_data"
+  type_id: 0xc8e4d7d1
+  offset: 20352
+}
+member {
+  id: 0x5bc035f4
+  name: "sdev_dev"
+  type_id: 0x23230326
+  offset: 11072
+}
+member {
+  id: 0x3522cf20
+  name: "sdev_gendev"
+  type_id: 0x23230326
+  offset: 3776
+}
+member {
+  id: 0xc88f6617
+  name: "sdev_groups"
+  type_id: 0x06433852
+  offset: 2752
+}
+member {
+  id: 0x379818ca
+  name: "sdev_state"
+  type_id: 0xdf9e95f6
+  offset: 19968
+}
+member {
+  id: 0x381e9f08
+  name: "sdev_target"
+  type_id: 0x1997473c
+  offset: 2624
+}
+member {
+  id: 0xf8629d43
+  name: "sdhci_core_to_disable_vqmmc"
+  type_id: 0x6d7f5ff6
+  offset: 9416
+}
+member {
+  id: 0x2a053556
+  name: "sdi"
+  type_id: 0x930c1601
+  offset: 256
+}
+member {
+  id: 0xc5c0de60
+  name: "sdio_func"
+  type_id: 0x6c542f76
+  offset: 11264
+}
+member {
+  id: 0x4e254e0a
+  name: "sdio_funcs"
+  type_id: 0x4585663f
+  offset: 11008
+}
+member {
+  id: 0x8e0ff611
+  name: "sdio_funcs_probed"
+  type_id: 0x74d29cf1
+  offset: 11040
+}
+member {
+  id: 0xcc1042e9
+  name: "sdio_irq_pending"
+  type_id: 0x6d7f5ff6
+  offset: 11520
+}
+member {
+  id: 0x1ab28625
+  name: "sdio_irq_thread"
+  type_id: 0x1d19a9d5
+  offset: 11072
+}
+member {
+  id: 0xd7f34ce3
+  name: "sdio_irq_thread_abort"
+  type_id: 0x74d29cf1
+  offset: 11552
+}
+member {
+  id: 0x242a3299
+  name: "sdio_irq_work"
+  type_id: 0x1f3c8679
+  offset: 11136
+}
+member {
+  id: 0xf05ee0ff
+  name: "sdio_irqs"
+  type_id: 0x4585663f
+  offset: 11008
+}
+member {
+  id: 0x8f8b8553
+  name: "sdio_single_irq"
+  type_id: 0x126add1c
+  offset: 11712
+}
+member {
+  id: 0x2b7b0604
+  name: "sdio_vsn"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x94f72bd4
+  name: "sdma_boundary"
+  type_id: 0xc9082b19
+  offset: 10176
+}
+member {
+  id: 0x682990f8
+  name: "sdp_max"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xa4ecd7f8
+  name: "sdp_min"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x30866c51
+  name: "sdr"
+  type_id: 0xca331095
+}
+member {
+  id: 0xbf7d6196
+  name: "sdt"
+  type_id: 0xb3e7bac9
+  offset: 40
+}
+member {
+  id: 0x5bde5a2f
+  name: "sdtr"
+  type_id: 0x4585663f
+  offset: 2792
+  bitsize: 1
+}
+member {
+  id: 0xfb660fcd
+  name: "sdu"
+  type_id: 0xe8034002
+  offset: 48
+}
+member {
+  id: 0xfb8b4800
+  name: "sdu"
+  type_id: 0x054f691a
+  offset: 1728
+}
+member {
+  id: 0x71c6c5ab
+  name: "sdu_last_frag"
+  type_id: 0x054f691a
+  offset: 1792
+}
+member {
+  id: 0xc7e71b84
+  name: "sdu_len"
+  type_id: 0xe8034002
+  offset: 1664
+}
+member {
+  id: 0x37974d15
+  name: "sdus_mask"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0x1c1803b1
+  name: "se"
+  type_id: 0x089ac080
+  offset: 1856
+}
+member {
+  id: 0x1c1a77ff
+  name: "se"
+  type_id: 0x0aef74e6
+  offset: 1536
+}
+member {
+  id: 0x7de4d40d
+  name: "se_io"
+  type_id: 0x2d76854c
+  offset: 960
+}
+member {
+  id: 0x232be5c0
+  name: "seals"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x39bd6d5d
+  name: "search_list"
+  type_id: 0xd3c80119
+  offset: 448
+}
+member {
+  id: 0xbf942607
+  name: "search_order"
+  type_id: 0xb0312d5a
+  offset: 720
+}
+member {
+  id: 0x14e1693b
+  name: "search_restart"
+  type_id: 0x4585663f
+  offset: 352
+}
+member {
+  id: 0x6c489799
+  name: "sec"
+  type_id: 0xdd6eef0a
+}
+member {
+  id: 0x6c922b0d
+  name: "sec"
+  type_id: 0x07d5bce9
+  offset: 320
+}
+member {
+  id: 0x6ca67214
+  name: "sec"
+  type_id: 0x338a8d9c
+  offset: 7744
+}
+member {
+  id: 0x05abffa1
+  name: "sec_erase_mult"
+  type_id: 0x4585663f
+  offset: 448
+}
+member {
+  id: 0xc8b12bed
+  name: "sec_feature_support"
+  type_id: 0x295c7202
+  offset: 16
+}
+member {
+  id: 0x0e936305
+  name: "sec_level"
+  type_id: 0xb3e7bac9
+  offset: 520
+}
+member {
+  id: 0x0e936326
+  name: "sec_level"
+  type_id: 0xb3e7bac9
+  offset: 752
+}
+member {
+  id: 0x5f20510d
+  name: "sec_trim_mult"
+  type_id: 0x4585663f
+  offset: 416
+}
+member {
+  id: 0xd7c5251e
+  name: "seccomp"
+  type_id: 0x85314ac9
+  offset: 18432
+}
+member {
+  id: 0xe377cd7e
+  name: "secid"
+  type_id: 0xc9082b19
+  offset: 1856
+}
+member {
+  id: 0x3b0afd71
+  name: "secmark"
+  type_id: 0xe62ebf07
+  offset: 288
+}
+member {
+  id: 0x3bd928e4
+  name: "secmark"
+  type_id: 0x35fdd62d
+  offset: 1376
+}
+member {
+  id: 0xcae5ab59
+  name: "second_chroma_qp_index_offset"
+  type_id: 0x901eaf6a
+  offset: 72
+}
+member {
+  id: 0xf2862801
+  name: "second_line_bpg_offset"
+  type_id: 0x295c7202
+  offset: 1040
+}
+member {
+  id: 0xf2862ea4
+  name: "second_line_bpg_offset"
+  type_id: 0x295c7202
+  offset: 712
+}
+member {
+  id: 0x4f40898e
+  name: "second_line_offset_adj"
+  type_id: 0x914dbfdc
+  offset: 1072
+}
+member {
+  id: 0x4fa4499e
+  name: "second_line_offset_adj"
+  type_id: 0x7584e7da
+  offset: 736
+}
+member {
+  id: 0xdfdbb434
+  name: "secondary"
+  type_id: 0x0490bb4a
+}
+member {
+  id: 0xdfeb0f9b
+  name: "secondary"
+  type_id: 0x342a8622
+  offset: 384
+}
+member {
+  id: 0xfb8eebcd
+  name: "secondary"
+  type_id: 0x4585663f
+  offset: 17152
+  bitsize: 1
+}
+member {
+  id: 0x99905e87
+  name: "seconds"
+  type_id: 0xb3e7bac9
+  offset: 72
+}
+member {
+  id: 0x83e89644
+  name: "secret"
+  type_id: 0x6d25e07f
+  offset: 32
+}
+member {
+  id: 0xebaf9065
+  name: "sect_attrs"
+  type_id: 0x249dc0ec
+  offset: 5952
+}
+member {
+  id: 0x1e3506ce
+  name: "section_mem_map"
+  type_id: 0x33756485
+}
+member {
+  id: 0x6695f380
+  name: "sector"
+  type_id: 0xd0b3a203
+  offset: 768
+}
+member {
+  id: 0x6695fabc
+  name: "sector"
+  type_id: 0xd0b3a203
+  offset: 384
+}
+member {
+  id: 0x173ce3ee
+  name: "sector_size"
+  type_id: 0x4585663f
+  offset: 1312
+}
+member {
+  id: 0x3721d8d5
+  name: "sectors"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0x3739d0c7
+  name: "sectors"
+  type_id: 0x5d8155a5
+  offset: 8
+}
+member {
+  id: 0x37e4ca95
+  name: "sectors"
+  type_id: 0x80904a3b
+  offset: 256
+}
+member {
+  id: 0xa39136f0
+  name: "secure_access"
+  type_id: 0x6d7f5ff6
+  offset: 3424
+}
+member {
+  id: 0xb0199c94
+  name: "secure_elements"
+  type_id: 0xd3c80119
+  offset: 8192
+}
+member {
+  id: 0xe38945e4
+  name: "securebits"
+  type_id: 0x4585663f
+  offset: 288
+}
+member {
+  id: 0x1be93c1d
+  name: "secureexec"
+  type_id: 0x4585663f
+  offset: 322
+  bitsize: 1
+}
+member {
+  id: 0xf18bd7ba
+  name: "security"
+  type_id: 0x07815e41
+  offset: 3264
+}
+member {
+  id: 0xf18bdcea
+  name: "security"
+  type_id: 0x07815e41
+  offset: 6016
+}
+member {
+  id: 0xf194e254
+  name: "security"
+  type_id: 0x18bd6530
+  offset: 832
+}
+member {
+  id: 0xf194e82c
+  name: "security"
+  type_id: 0x18bd6530
+  offset: 128
+}
+member {
+  id: 0xf194e91d
+  name: "security"
+  type_id: 0x18bd6530
+  offset: 960
+}
+member {
+  id: 0xf194ea0e
+  name: "security"
+  type_id: 0x18bd6530
+  offset: 24064
+}
+member {
+  id: 0xf194eb87
+  name: "security"
+  type_id: 0x18bd6530
+  offset: 8384
+}
+member {
+  id: 0xf194ec98
+  name: "security"
+  type_id: 0x18bd6530
+  offset: 1088
+}
+member {
+  id: 0xf194efeb
+  name: "security"
+  type_id: 0x18bd6530
+  offset: 7680
+}
+member {
+  id: 0xad84e518
+  name: "security_cfm"
+  type_id: 0x0cbe17fd
+  offset: 320
+}
+member {
+  id: 0x92ed2d29
+  name: "security_cfm_cb"
+  type_id: 0x0c2f924e
+  offset: 16832
+}
+member {
+  id: 0x694e1473
+  name: "security_ctx"
+  type_id: 0x86d95287
+  offset: 1216
+}
+member {
+  id: 0x39f8c8e0
+  name: "security_enabled"
+  type_id: 0x914dbfdc
+  offset: 3
+  bitsize: 1
+}
+member {
+  id: 0x7e251cf3
+  name: "security_strength"
+  type_id: 0x6720d32f
+  offset: 160
+}
+member {
+  id: 0xc9763ac0
+  name: "security_supported"
+  type_id: 0x4585663f
+  offset: 2823
+  bitsize: 1
+}
+member {
+  id: 0x77b9a9d1
+  name: "secy"
+  type_id: 0x28fbecf4
+  offset: 128
+}
+member {
+  id: 0x221d31c9
+  name: "seed"
+  type_id: 0x2e029697
+  offset: 64
+}
+member {
+  id: 0x6078f7cb
+  name: "seedsize"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0xebaa8c51
+  name: "seek_table_present"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0x5e17f262
+  name: "seek_upward"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x82f62ea7
+  name: "seeks"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0xae7e1ede
+  name: "seen"
+  type_id: 0xc9082b19
+  offset: 288
+}
+member {
+  id: 0xaecb49ff
+  name: "seen"
+  type_id: 0x7c5bd3c4
+}
+member {
+  id: 0x8dc7e253
+  name: "seen_direct_write"
+  type_id: 0x6d7f5ff6
+  offset: 12952
+}
+member {
+  id: 0x693b3fc2
+  name: "seg"
+  type_id: 0xaf197605
+  offset: 192
+}
+member {
+  id: 0x69bd734e
+  name: "seg"
+  type_id: 0x295c7202
+  offset: 9040
+}
+member {
+  id: 0x99f99f8e
+  name: "seg6_data"
+  type_id: 0x30d66cd4
+  offset: 6464
+}
+member {
+  id: 0x2adfb7f4
+  name: "seg6_enabled"
+  type_id: 0x0faae5b1
+  offset: 1664
+}
+member {
+  id: 0xada1cece
+  name: "seg6_flowlabel"
+  type_id: 0x6720d32f
+  offset: 1280
+}
+member {
+  id: 0x9904a359
+  name: "seg_addr"
+  type_id: 0x78f4e574
+}
+member {
+  id: 0xb955d92c
+  name: "seg_boundary_mask"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xa3a93201
+  name: "seg_size"
+  type_id: 0x0baa70a7
+  offset: 64
+}
+member {
+  id: 0x07720577
+  name: "seglen"
+  type_id: 0xb34e9475
+  offset: 640
+}
+member {
+  id: 0xfa8d93d0
+  name: "segment"
+  type_id: 0xfa5fcd78
+}
+member {
+  id: 0xfabecdf4
+  name: "segment"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0x52799b8c
+  name: "segment_boundary_mask"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x704fee1e
+  name: "segment_pool"
+  type_id: 0x2d66740a
+  offset: 20224
+}
+member {
+  id: 0x1e1ecce7
+  name: "segment_probs"
+  type_id: 0x3e3c1b86
+  offset: 64
+}
+member {
+  id: 0xeb0f7ea7
+  name: "segment_ptr"
+  type_id: 0x78f4e574
+}
+member {
+  id: 0x339d15e8
+  name: "sel"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x33a8d02f
+  name: "sel"
+  type_id: 0x7047fa95
+  offset: 832
+}
+member {
+  id: 0xebeb17cb
+  name: "sel1"
+  type_id: 0xb3e7bac9
+  offset: 88
+}
+member {
+  id: 0xaf6f4ac0
+  name: "sel2"
+  type_id: 0xe8034002
+  offset: 96
+}
+member {
+  id: 0x72d71532
+  name: "sel_res"
+  type_id: 0x295c7202
+  offset: 80
+}
+member {
+  id: 0x509dd638
+  name: "select"
+  type_id: 0x2c724f21
+  offset: 64
+}
+member {
+  id: 0x509de431
+  name: "select"
+  type_id: 0x2c43d08a
+  offset: 448
+}
+member {
+  id: 0x6a9b0486
+  name: "select_drive_strength"
+  type_id: 0x2d95c24c
+  offset: 1216
+}
+member {
+  id: 0x3f69453e
+  name: "select_no_atn"
+  type_id: 0x4585663f
+  offset: 2815
+  bitsize: 1
+}
+member {
+  id: 0x97128e2b
+  name: "select_queue"
+  type_id: 0x20394568
+  offset: 64
+}
+member {
+  id: 0x1bf27a7b
+  name: "select_task_rq"
+  type_id: 0x2c40c92f
+  offset: 640
+}
+member {
+  id: 0x104f57f6
+  name: "selector"
+  type_id: 0x7047fa95
+  offset: 1088
+}
+member {
+  id: 0x108cfca1
+  name: "selector"
+  type_id: 0xb3e7bac9
+  offset: 24
+}
+member {
+  id: 0x10ad34ae
+  name: "selector"
+  type_id: 0x92233392
+  offset: 1536
+}
+member {
+  id: 0x551aa3fe
+  name: "selector_mask"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0xe3fcb897
+  name: "selector_reg"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x5c00b9b7
+  name: "selector_shift"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0x51d8849f
+  name: "selector_work_buf"
+  type_id: 0x18bd6530
+  offset: 5248
+}
+member {
+  id: 0x3c2ca08b
+  name: "self"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0x3c39c4c3
+  name: "self"
+  type_id: 0xdc65a14c
+}
+member {
+  id: 0x3c63ba84
+  name: "self"
+  type_id: 0x861be646
+}
+member {
+  id: 0x3cf44093
+  name: "self"
+  type_id: 0x11e6864c
+  offset: 448
+}
+member {
+  id: 0x3cf44676
+  name: "self"
+  type_id: 0x11e6864c
+  offset: 384
+}
+member {
+  id: 0x6257d2ab
+  name: "self_exec_id"
+  type_id: 0x92233392
+  offset: 18624
+}
+member {
+  id: 0x2df7aab6
+  name: "self_group"
+  type_id: 0x9a6a4125
+  offset: 1984
+}
+member {
+  id: 0x259c81f5
+  name: "self_powered"
+  type_id: 0x6d7f5ff6
+  offset: 33984
+}
+member {
+  id: 0x7f269087
+  name: "self_refresh_active"
+  type_id: 0x6d7f5ff6
+  offset: 2416
+}
+member {
+  id: 0x6dc61799
+  name: "self_refresh_aware"
+  type_id: 0x6d7f5ff6
+  offset: 768
+}
+member {
+  id: 0xe27d4fd6
+  name: "self_refresh_data"
+  type_id: 0x024b8608
+  offset: 13248
+}
+member {
+  id: 0x8ba886be
+  name: "self_test"
+  type_id: 0x0d9c47fd
+  offset: 1408
+}
+member {
+  id: 0xf53d14f9
+  name: "sem"
+  type_id: 0x28b9ec9a
+  offset: 9600
+}
+member {
+  id: 0xf53d18cc
+  name: "sem"
+  type_id: 0x28b9ec9a
+  offset: 256
+}
+member {
+  id: 0x319d2652
+  name: "sem_ctls"
+  type_id: 0x958527d1
+  offset: 6528
+}
+member {
+  id: 0xe39d046e
+  name: "send"
+  type_id: 0x2e3afbd5
+  offset: 64
+}
+member {
+  id: 0xe39f1481
+  name: "send"
+  type_id: 0x2c297347
+  offset: 50752
+}
+member {
+  id: 0x300665d2
+  name: "send_ack"
+  type_id: 0x0d370eee
+  offset: 256
+}
+member {
+  id: 0x2cd25bd7
+  name: "send_break"
+  type_id: 0x2f4ac19c
+  offset: 2112
+}
+member {
+  id: 0x2e87bba3
+  name: "send_ccc_cmd"
+  type_id: 0x2dd0b9c3
+  offset: 448
+}
+member {
+  id: 0xbd9e514e
+  name: "send_data"
+  type_id: 0x2ec1fdbb
+}
+member {
+  id: 0x285ca7ea
+  name: "send_discover"
+  type_id: 0x6d7f5ff6
+  offset: 2248
+}
+member {
+  id: 0xf657e251
+  name: "send_discover_timer"
+  type_id: 0xcd7704bf
+  offset: 5760
+}
+member {
+  id: 0x9ddfe40f
+  name: "send_discover_work"
+  type_id: 0x3835dcc0
+  offset: 6336
+}
+member {
+  id: 0x65b11b4b
+  name: "send_msg"
+  type_id: 0x2d3c60b9
+}
+member {
+  id: 0x1f8b80c7
+  name: "send_offchannel"
+  type_id: 0x2ee1b2db
+  offset: 192
+}
+member {
+  id: 0xc2c18445
+  name: "send_page"
+  type_id: 0xedf277ba
+  offset: 192
+}
+member {
+  id: 0x42f73f70
+  name: "send_pkt"
+  type_id: 0x2ddb8bbd
+  offset: 2240
+}
+member {
+  id: 0xff03dded
+  name: "send_reset"
+  type_id: 0x0d3576a9
+  offset: 320
+}
+member {
+  id: 0xaf915012
+  name: "send_sci"
+  type_id: 0x6d7f5ff6
+  offset: 24
+}
+member {
+  id: 0xb8594017
+  name: "send_seq"
+  type_id: 0x4585663f
+  offset: 1505
+  bitsize: 1
+}
+member {
+  id: 0xb8594e54
+  name: "send_seq"
+  type_id: 0x4585663f
+  offset: 33
+  bitsize: 1
+}
+member {
+  id: 0x7f4d28bd
+  name: "send_xchar"
+  type_id: 0x0c618ab8
+  offset: 1536
+}
+member {
+  id: 0x7f4fc1bc
+  name: "send_xchar"
+  type_id: 0x0e851bf9
+  offset: 448
+}
+member {
+  id: 0x5f7a4496
+  name: "sender_cpu"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x38a03a81
+  name: "sender_euid"
+  type_id: 0xe90b32b7
+  offset: 992
+}
+member {
+  id: 0x38f30d00
+  name: "sender_euid"
+  type_id: 0xba3f457a
+  offset: 224
+}
+member {
+  id: 0xd3bc24ef
+  name: "sender_pid"
+  type_id: 0x763389c7
+  offset: 192
+}
+member {
+  id: 0xc26d459e
+  name: "sendmsg"
+  type_id: 0x2cd59b11
+  offset: 1088
+}
+member {
+  id: 0xc26d9913
+  name: "sendmsg"
+  type_id: 0x2c07daab
+  offset: 832
+}
+member {
+  id: 0xaf32bdda
+  name: "sendmsg_locked"
+  type_id: 0x2c07daab
+  offset: 1728
+}
+member {
+  id: 0x2349def6
+  name: "sendpage"
+  type_id: 0x2c24415e
+  offset: 960
+}
+member {
+  id: 0x236b5e79
+  name: "sendpage"
+  type_id: 0x0eaa404f
+  offset: 1280
+}
+member {
+  id: 0x236bd6db
+  name: "sendpage"
+  type_id: 0x0e22e25f
+  offset: 1280
+}
+member {
+  id: 0x723a5075
+  name: "sendpage_locked"
+  type_id: 0x2c24415e
+  offset: 1664
+}
+member {
+  id: 0x76f671bc
+  name: "sendto"
+  type_id: 0x2e3a32dd
+  offset: 128
+}
+member {
+  id: 0xdd5cd2ce
+  name: "sens"
+  type_id: 0xe8d14bc6
+}
+member {
+  id: 0xdd7d0bae
+  name: "sens"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x4036d71d
+  name: "sens_res"
+  type_id: 0x914dbfdc
+  offset: 64
+}
+member {
+  id: 0x5a77a500
+  name: "sensb_res"
+  type_id: 0x86438dd9
+  offset: 256
+}
+member {
+  id: 0xb6683538
+  name: "sensb_res_len"
+  type_id: 0x295c7202
+  offset: 248
+}
+member {
+  id: 0x0dda740d
+  name: "sense"
+  type_id: 0x1df06cce
+}
+member {
+  id: 0x4001a833
+  name: "sense_buffer"
+  type_id: 0x1df06cce
+  offset: 2368
+}
+member {
+  id: 0x9f32a7f5
+  name: "sense_data"
+  type_id: 0xc9082b19
+  offset: 224
+}
+member {
+  id: 0x9fefc1b9
+  name: "sense_data"
+  type_id: 0x14699413
+  offset: 176
+}
+member {
+  id: 0xc3397729
+  name: "sense_data_info"
+  type_id: 0xc9082b19
+  offset: 256
+}
+member {
+  id: 0xf72b4cee
+  name: "sense_data_len"
+  type_id: 0x7584e7da
+  offset: 160
+}
+member {
+  id: 0xe02668b5
+  name: "sense_key"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0x771a41ab
+  name: "sense_len"
+  type_id: 0x4585663f
+  offset: 2336
+}
+member {
+  id: 0x771a4366
+  name: "sense_len"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x604ad12b
+  name: "sensf_res"
+  type_id: 0x14699413
+  offset: 360
+}
+member {
+  id: 0x201575c0
+  name: "sensf_res_len"
+  type_id: 0x295c7202
+  offset: 352
+}
+member {
+  id: 0x4fe905c3
+  name: "sensor"
+  type_id: 0x33db0a65
+  offset: 384
+}
+member {
+  id: 0x87317109
+  name: "sent"
+  type_id: 0x4585663f
+  offset: 448
+}
+member {
+  id: 0x873175c0
+  name: "sent"
+  type_id: 0x4585663f
+  offset: 3872
+}
+member {
+  id: 0x8fd1e923
+  name: "sent_cmd"
+  type_id: 0x054f691a
+  offset: 26112
+}
+member {
+  id: 0x2f63fdae
+  name: "sent_request"
+  type_id: 0x6d7f5ff6
+  offset: 11328
+}
+member {
+  id: 0x2b36a0b0
+  name: "sentinel"
+  type_id: 0xffa4c057
+  offset: 896
+}
+member {
+  id: 0xfa1fb6ba
+  name: "seq"
+  type_id: 0x03b9f0a9
+}
+member {
+  id: 0xfa2f7a2e
+  name: "seq"
+  type_id: 0x33756485
+}
+member {
+  id: 0xfa2fe686
+  name: "seq"
+  type_id: 0x33eb3ac5
+  offset: 32768
+}
+member {
+  id: 0xfa345940
+  name: "seq"
+  type_id: 0x285ee61e
+  offset: 34368
+}
+member {
+  id: 0xfa355d86
+  name: "seq"
+  type_id: 0x295c7202
+  offset: 16
+}
+member {
+  id: 0xfa598134
+  name: "seq"
+  type_id: 0x4585663f
+  offset: 512
+}
+member {
+  id: 0xfa5983ee
+  name: "seq"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0xfa5984f3
+  name: "seq"
+  type_id: 0x4585663f
+  offset: 544
+}
+member {
+  id: 0xfa598a2c
+  name: "seq"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xfa598deb
+  name: "seq"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0xfa717df5
+  name: "seq"
+  type_id: 0x6d7f5ff6
+  offset: 160
+}
+member {
+  id: 0xfa8d4fce
+  name: "seq"
+  type_id: 0x914dbfdc
+  offset: 32
+}
+member {
+  id: 0xfa8e250b
+  name: "seq"
+  type_id: 0x92233392
+  offset: 576
+}
+member {
+  id: 0xfa8e2e44
+  name: "seq"
+  type_id: 0x92233392
+  offset: 704
+}
+member {
+  id: 0xfaa95cb5
+  name: "seq"
+  type_id: 0xb55a3dee
+  offset: 128
+}
+member {
+  id: 0xfacce2a2
+  name: "seq"
+  type_id: 0xd0e93144
+  offset: 288
+}
+member {
+  id: 0xfacce67b
+  name: "seq"
+  type_id: 0xd0e93144
+}
+member {
+  id: 0xfad507ca
+  name: "seq"
+  type_id: 0xc9082b19
+  offset: 256
+}
+member {
+  id: 0xfad50a81
+  name: "seq"
+  type_id: 0xc9082b19
+  offset: 160
+}
+member {
+  id: 0xfad50ee2
+  name: "seq"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0xfad53c70
+  name: "seq"
+  type_id: 0xc93e017b
+  offset: 32
+}
+member {
+  id: 0xfaf79b3b
+  name: "seq"
+  type_id: 0xeb90906e
+  offset: 64
+}
+member {
+  id: 0xfafa2514
+  name: "seq"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xfafa2cce
+  name: "seq"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xfafe74dc
+  name: "seq"
+  type_id: 0xe276adef
+  offset: 32
+}
+member {
+  id: 0x87634c04
+  name: "seq_file"
+  type_id: 0x0665e6b6
+  offset: 128
+}
+member {
+  id: 0x35e64ea6
+  name: "seq_hi"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0x98c640b2
+  name: "seq_next"
+  type_id: 0x1f4b4149
+  offset: 256
+}
+member {
+  id: 0x98c64a9a
+  name: "seq_next"
+  type_id: 0x1f4b4149
+  offset: 1344
+}
+member {
+  id: 0xb21bf9f4
+  name: "seq_notifier"
+  type_id: 0x0f0f3fa0
+  offset: 1280
+}
+member {
+  id: 0x0b792844
+  name: "seq_ops"
+  type_id: 0x3f55d498
+}
+member {
+  id: 0x0b7928ef
+  name: "seq_ops"
+  type_id: 0x3f55d498
+  offset: 256
+}
+member {
+  id: 0x3ba9d2a2
+  name: "seq_parameter_set_id"
+  type_id: 0xb3e7bac9
+  offset: 8
+}
+member {
+  id: 0x3ba9df25
+  name: "seq_parameter_set_id"
+  type_id: 0xb3e7bac9
+  offset: 24
+}
+member {
+  id: 0x7bd96afa
+  name: "seq_priv_size"
+  type_id: 0xc9082b19
+  offset: 192
+}
+member {
+  id: 0xc9fbb7d7
+  name: "seq_show"
+  type_id: 0x2d8ee262
+  offset: 1216
+}
+member {
+  id: 0xc9fbbcd1
+  name: "seq_show"
+  type_id: 0x2d8ee262
+  offset: 128
+}
+member {
+  id: 0xcdfa8454
+  name: "seq_start"
+  type_id: 0x1f50b278
+  offset: 1280
+}
+member {
+  id: 0xcdfa8ae0
+  name: "seq_start"
+  type_id: 0x1f50b278
+  offset: 192
+}
+member {
+  id: 0xbfa43014
+  name: "seq_stop"
+  type_id: 0x0ec8cecd
+  offset: 320
+}
+member {
+  id: 0xbfa43520
+  name: "seq_stop"
+  type_id: 0x0ec8cecd
+  offset: 1408
+}
+member {
+  id: 0x78d47716
+  name: "seq_zones_wlock"
+  type_id: 0x064d6086
+  offset: 4096
+}
+member {
+  id: 0x0849df30
+  name: "seqcount"
+  type_id: 0xd0e93144
+}
+member {
+  id: 0x0872a691
+  name: "seqcount"
+  type_id: 0xeb90906e
+}
+member {
+  id: 0x883df814
+  name: "seqlock"
+  type_id: 0x000ff4a8
+  offset: 704
+}
+member {
+  id: 0x88ceebc8
+  name: "seqlock"
+  type_id: 0xf313e71a
+  offset: 2592
+}
+member {
+  id: 0x792b5ed3
+  name: "seqno"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0x79707b8f
+  name: "seqno"
+  type_id: 0x92233392
+  offset: 320
+}
+member {
+  id: 0x9024db2d
+  name: "seqpacket_allow"
+  type_id: 0x39a9add7
+  offset: 1280
+}
+member {
+  id: 0x64f1b5c1
+  name: "seqpacket_dequeue"
+  type_id: 0x0ed04c60
+  offset: 1152
+}
+member {
+  id: 0x879b0022
+  name: "seqpacket_enqueue"
+  type_id: 0x2c853d90
+  offset: 1216
+}
+member {
+  id: 0xa8b95495
+  name: "seqpacket_has_data"
+  type_id: 0x1ab89762
+  offset: 1344
+}
+member {
+  id: 0x001c4cb5
+  name: "sequence"
+  type_id: 0x92233392
+  offset: 640
+}
+member {
+  id: 0x004763ff
+  name: "sequence"
+  type_id: 0xc9082b19
+  offset: 1184
+}
+member {
+  id: 0x004765ae
+  name: "sequence"
+  type_id: 0xc9082b19
+  offset: 13248
+}
+member {
+  id: 0x005e8497
+  name: "sequence"
+  type_id: 0xd0e93144
+  offset: 352
+}
+member {
+  id: 0x00639341
+  name: "sequence"
+  type_id: 0xedf277ba
+  offset: 192
+}
+member {
+  id: 0x00684037
+  name: "sequence"
+  type_id: 0xe62ebf07
+  offset: 448
+}
+member {
+  id: 0x0068479e
+  name: "sequence"
+  type_id: 0xe62ebf07
+  offset: 4288
+}
+member {
+  id: 0x006847b2
+  name: "sequence"
+  type_id: 0xe62ebf07
+  offset: 608
+}
+member {
+  id: 0x00684f89
+  name: "sequence"
+  type_id: 0xe62ebf07
+  offset: 192
+}
+member {
+  id: 0x00cbec99
+  name: "sequence"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xf61da2d5
+  name: "sequence_id"
+  type_id: 0x7584e7da
+  offset: 240
+}
+member {
+  id: 0x2726387e
+  name: "serdev"
+  type_id: 0x3ba261b0
+  offset: 64
+}
+member {
+  id: 0x27263dd7
+  name: "serdev"
+  type_id: 0x3ba261b0
+  offset: 7360
+}
+member {
+  id: 0xa74c4eb1
+  name: "serial"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0xa7636908
+  name: "serial"
+  type_id: 0xe62ebf07
+  offset: 768
+}
+member {
+  id: 0xa767c14d
+  name: "serial"
+  type_id: 0xe2836f7f
+  offset: 32
+}
+member {
+  id: 0xa781c5ca
+  name: "serial"
+  type_id: 0x0483e6f8
+  offset: 11392
+}
+member {
+  id: 0xa79bc81d
+  name: "serial"
+  type_id: 0x1e870478
+}
+member {
+  id: 0xa7a9403c
+  name: "serial"
+  type_id: 0x2c095c7b
+  offset: 640
+}
+member {
+  id: 0xa7c0c3bd
+  name: "serial"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0xcf3d6dd4
+  name: "serial_in"
+  type_id: 0x394abf8d
+  offset: 192
+}
+member {
+  id: 0xa5d6be07
+  name: "serial_no"
+  type_id: 0xf0ba21be
+  offset: 464
+}
+member {
+  id: 0xceec25dd
+  name: "serial_node"
+  type_id: 0x3205ba2f
+}
+member {
+  id: 0x5ccc7348
+  name: "serial_nr"
+  type_id: 0x92233392
+  offset: 704
+}
+member {
+  id: 0xff69e65c
+  name: "serial_number"
+  type_id: 0x3e10b518
+  offset: 192
+}
+member {
+  id: 0xac585840
+  name: "serial_out"
+  type_id: 0x0edc065a
+  offset: 256
+}
+member {
+  id: 0xb5d409d6
+  name: "serio"
+  type_id: 0x02f4fda6
+}
+member {
+  id: 0xca59c5b9
+  name: "sernum"
+  type_id: 0x6720d32f
+  offset: 960
+}
+member {
+  id: 0x6f0a17b5
+  name: "service_cache"
+  type_id: 0xf1159c31
+  offset: 18944
+}
+member {
+  id: 0x5f901528
+  name: "service_lines"
+  type_id: 0x674e4503
+  offset: 16
+}
+member {
+  id: 0xeb516c71
+  name: "service_queue"
+  type_id: 0x8bcb07f8
+}
+member {
+  id: 0xb0888f56
+  name: "service_set"
+  type_id: 0xe8034002
+}
+member {
+  id: 0x81331fe7
+  name: "session"
+  type_id: 0x18456730
+  offset: 128
+}
+member {
+  id: 0xac92ac66
+  name: "session_close"
+  type_id: 0x0fc0b18e
+  offset: 2496
+}
+member {
+  id: 0x581f0287
+  name: "session_hlist"
+  type_id: 0x5b90b36c
+  offset: 320
+}
+member {
+  id: 0xd0759f3e
+  name: "session_id"
+  type_id: 0xc9082b19
+  offset: 192
+}
+member {
+  id: 0xebe42158
+  name: "session_keyring"
+  type_id: 0x01a688ae
+  offset: 704
+}
+member {
+  id: 0x1f35e5fa
+  name: "sessionid"
+  type_id: 0x4585663f
+  offset: 18400
+}
+member {
+  id: 0x3d005ac2
+  name: "set"
+  type_id: 0xde10b0fd
+  offset: 7296
+}
+member {
+  id: 0x3d3643b1
+  name: "set"
+  type_id: 0xe8034002
+}
+member {
+  id: 0x3d4c6723
+  name: "set"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0x3d95b028
+  name: "set"
+  type_id: 0x4bf0729d
+  offset: 256
+}
+member {
+  id: 0x3d95b448
+  name: "set"
+  type_id: 0x4bf0729d
+  offset: 7936
+}
+member {
+  id: 0x3d9ec2a7
+  name: "set"
+  type_id: 0x4086b7da
+  offset: 64
+}
+member {
+  id: 0x3d9eccc5
+  name: "set"
+  type_id: 0x4086b7da
+  offset: 7296
+}
+member {
+  id: 0x3da54157
+  name: "set"
+  type_id: 0x7b06e63f
+  offset: 3328
+}
+member {
+  id: 0x3db96022
+  name: "set"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x3dca10e3
+  name: "set"
+  type_id: 0x14518028
+  offset: 384
+}
+member {
+  id: 0x3dd133e1
+  name: "set"
+  type_id: 0x0f7bbe5f
+  offset: 768
+}
+member {
+  id: 0x3dd2270e
+  name: "set"
+  type_id: 0x0c631eb2
+  offset: 64
+}
+member {
+  id: 0x3dec3517
+  name: "set"
+  type_id: 0x327f656b
+  offset: 7296
+}
+member {
+  id: 0x3dec3b75
+  name: "set"
+  type_id: 0x327f656b
+  offset: 64
+}
+member {
+  id: 0x3df0649f
+  name: "set"
+  type_id: 0x2e208fbc
+  offset: 64
+}
+member {
+  id: 0x3df070f6
+  name: "set"
+  type_id: 0x2e37c006
+  offset: 320
+}
+member {
+  id: 0x3df35b61
+  name: "set"
+  type_id: 0x2d1b3b77
+  offset: 256
+}
+member {
+  id: 0x8fd22bb3
+  name: "set_ackreq_default"
+  type_id: 0x2f60ff16
+  offset: 1024
+}
+member {
+  id: 0x35dcd5d1
+  name: "set_acl"
+  type_id: 0x2d1357a0
+  offset: 1280
+}
+member {
+  id: 0xde1e7591
+  name: "set_active_discharge"
+  type_id: 0x2d6afa47
+  offset: 832
+}
+member {
+  id: 0xfaec49ee
+  name: "set_alarm"
+  type_id: 0x2dcdf414
+  offset: 256
+}
+member {
+  id: 0x00a1b279
+  name: "set_alt"
+  type_id: 0x2fb7d1ee
+  offset: 832
+}
+member {
+  id: 0xc5f4bb7e
+  name: "set_args"
+  type_id: 0xe8034002
+  offset: 32
+}
+member {
+  id: 0x78465be5
+  name: "set_attention_status"
+  type_id: 0x2ca91a7b
+  offset: 128
+}
+member {
+  id: 0x0bb97dbd
+  name: "set_attr"
+  type_id: 0x2ee94408
+  offset: 320
+}
+member {
+  id: 0xd1a721b7
+  name: "set_auto_vbus_discharge_threshold"
+  type_id: 0x2e11757b
+  offset: 1280
+}
+member {
+  id: 0x4d5d3716
+  name: "set_autocenter"
+  type_id: 0x0f234ce1
+  offset: 256
+}
+member {
+  id: 0xe052965e
+  name: "set_backoff_exponent"
+  type_id: 0x2f649478
+  offset: 768
+}
+member {
+  id: 0x1bccce8f
+  name: "set_bar"
+  type_id: 0x2ca1d9a6
+  offset: 64
+}
+member {
+  id: 0xb4ef9460
+  name: "set_baudrate"
+  type_id: 0x2f814207
+  offset: 512
+}
+member {
+  id: 0xb4f82616
+  name: "set_baudrate"
+  type_id: 0x383f5be0
+  offset: 448
+}
+member {
+  id: 0x2aa82a8d
+  name: "set_bclk_ratio"
+  type_id: 0x2de77eca
+  offset: 192
+}
+member {
+  id: 0x284bd920
+  name: "set_bdaddr"
+  type_id: 0x2c1bc9fd
+  offset: 51072
+}
+member {
+  id: 0x04c66be5
+  name: "set_bias_level"
+  type_id: 0x2c808fce
+  offset: 1408
+}
+member {
+  id: 0x04c68bb6
+  name: "set_bias_level"
+  type_id: 0x2c67a7e3
+  offset: 2432
+}
+member {
+  id: 0xe5cef2f6
+  name: "set_bias_level_post"
+  type_id: 0x2c67a7e3
+  offset: 2496
+}
+member {
+  id: 0x8c39ceda
+  name: "set_bist_data"
+  type_id: 0x2e0b807c
+  offset: 1024
+}
+member {
+  id: 0x19324de4
+  name: "set_block"
+  type_id: 0x2c16a860
+  offset: 128
+}
+member {
+  id: 0xba23a6b0
+  name: "set_boost"
+  type_id: 0x2d8ec3ec
+  offset: 1536
+}
+member {
+  id: 0x2c253583
+  name: "set_brightness_work"
+  type_id: 0x1f3c8679
+  offset: 1664
+}
+member {
+  id: 0xbfcab77b
+  name: "set_bus_width"
+  type_id: 0x0d46dd1a
+  offset: 1024
+}
+member {
+  id: 0x3168df75
+  name: "set_bypass"
+  type_id: 0x2d6afa47
+  offset: 1792
+}
+member {
+  id: 0x18873ff0
+  name: "set_bytes_per_datum"
+  type_id: 0x2ff71c8a
+  offset: 448
+}
+member {
+  id: 0xef45bdcb
+  name: "set_cc"
+  type_id: 0x2e50e215
+  offset: 256
+}
+member {
+  id: 0x27681c02
+  name: "set_cca_ed_level"
+  type_id: 0x2db71389
+  offset: 704
+}
+member {
+  id: 0x276a1c5c
+  name: "set_cca_ed_level"
+  type_id: 0x2fbe6814
+  offset: 512
+}
+member {
+  id: 0x9c8d8768
+  name: "set_cca_mode"
+  type_id: 0x2f5f6e87
+  offset: 448
+}
+member {
+  id: 0x9c8f8f1d
+  name: "set_cca_mode"
+  type_id: 0x2d56151a
+  offset: 640
+}
+member {
+  id: 0x046847c0
+  name: "set_channel"
+  type_id: 0x2d48c4b4
+  offset: 384
+}
+member {
+  id: 0x046a4ebb
+  name: "set_channel"
+  type_id: 0x2f41bf29
+  offset: 384
+}
+member {
+  id: 0xa6d7a449
+  name: "set_channel_map"
+  type_id: 0x2de685e6
+  offset: 448
+}
+member {
+  id: 0xbef3cf26
+  name: "set_channels"
+  type_id: 0x2ef99a6d
+  offset: 2688
+}
+member {
+  id: 0x0e5553d2
+  name: "set_charged"
+  type_id: 0x0f377d1a
+  offset: 640
+}
+member {
+  id: 0x893f2264
+  name: "set_child_tid"
+  type_id: 0x13580d6c
+  offset: 14400
+}
+member {
+  id: 0xb55f07c0
+  name: "set_clkdiv"
+  type_id: 0x2dc3a972
+  offset: 128
+}
+member {
+  id: 0x30dcea44
+  name: "set_clock"
+  type_id: 0x0d6478af
+  offset: 384
+}
+member {
+  id: 0x455be24c
+  name: "set_coalesce"
+  type_id: 0x2ee95f08
+  offset: 1024
+}
+member {
+  id: 0x53ccfc08
+  name: "set_config"
+  type_id: 0x2e319483
+  offset: 384
+}
+member {
+  id: 0x53cefe7f
+  name: "set_config"
+  type_id: 0x2c38d7ab
+  offset: 896
+}
+member {
+  id: 0x390749bf
+  name: "set_context"
+  type_id: 0x2c7e1c98
+  offset: 192
+}
+member {
+  id: 0x47f4acb0
+  name: "set_cpus_allowed"
+  type_id: 0x0f5a291c
+  offset: 896
+}
+member {
+  id: 0xbc0d2a7b
+  name: "set_crc_source"
+  type_id: 0x2edba639
+  offset: 1024
+}
+member {
+  id: 0xcb69bf92
+  name: "set_cs"
+  type_id: 0x0ff75938
+  offset: 11392
+}
+member {
+  id: 0x6eff7727
+  name: "set_cs_timing"
+  type_id: 0x2cdc0ac8
+  offset: 9152
+}
+member {
+  id: 0x80e96539
+  name: "set_csma_params"
+  type_id: 0x2d48ede8
+  offset: 768
+}
+member {
+  id: 0x17a0ffa9
+  name: "set_cur_state"
+  type_id: 0x2d8fdd2c
+  offset: 128
+}
+member {
+  id: 0x7a34d06f
+  name: "set_current_limit"
+  type_id: 0x2ea3678a
+  offset: 640
+}
+member {
+  id: 0x7a371234
+  name: "set_current_limit"
+  type_id: 0x2d66d7c6
+  offset: 384
+}
+member {
+  id: 0x8d94163d
+  name: "set_dbd_for_ms"
+  type_id: 0x4585663f
+  offset: 2801
+  bitsize: 1
+}
+member {
+  id: 0x976bcee9
+  name: "set_desc"
+  type_id: 0x0c86f61b
+  offset: 320
+}
+member {
+  id: 0xdfdf0c6c
+  name: "set_dev_pasid"
+  type_id: 0x2f1af790
+  offset: 128
+}
+member {
+  id: 0xfedee1e7
+  name: "set_diag"
+  type_id: 0x2c414371
+  offset: 51008
+}
+member {
+  id: 0xb9a43c35
+  name: "set_divisor"
+  type_id: 0x0efccc31
+  offset: 640
+}
+member {
+  id: 0x1709314e
+  name: "set_dma_mask"
+  type_id: 0x2e67d166
+  offset: 576
+}
+member {
+  id: 0x52694803
+  name: "set_dqblk"
+  type_id: 0x2fccc15b
+  offset: 512
+}
+member {
+  id: 0xa6d60891
+  name: "set_dump"
+  type_id: 0x2ee1f497
+  offset: 2880
+}
+member {
+  id: 0xe3124156
+  name: "set_duty_cycle"
+  type_id: 0x2d490a9d
+  offset: 1344
+}
+member {
+  id: 0xa8a7c17b
+  name: "set_edid"
+  type_id: 0x2dff78b7
+  offset: 576
+}
+member {
+  id: 0x08dae59e
+  name: "set_eee"
+  type_id: 0x2efdce55
+  offset: 3200
+}
+member {
+  id: 0xe6b154e9
+  name: "set_eeprom"
+  type_id: 0x2efe4971
+  offset: 896
+}
+member {
+  id: 0xf4871c6b
+  name: "set_emul_temp"
+  type_id: 0x2ff974a7
+  offset: 704
+}
+member {
+  id: 0xc51a7ec1
+  name: "set_ent"
+  type_id: 0x0d44ba38
+  offset: 128
+}
+member {
+  id: 0x3cc9ff38
+  name: "set_event_filter"
+  type_id: 0x2ebb6897
+  offset: 2880
+}
+member {
+  id: 0xada2d6c5
+  name: "set_fecparam"
+  type_id: 0x2ee5cce7
+  offset: 3776
+}
+member {
+  id: 0x01f7b02d
+  name: "set_flag"
+  type_id: 0x2d4ad411
+  offset: 896
+}
+member {
+  id: 0xce7991af
+  name: "set_flow_control"
+  type_id: 0x0f876a03
+  offset: 320
+}
+member {
+  id: 0x41dbc8f1
+  name: "set_fmt"
+  type_id: 0x2de77eca
+  offset: 256
+}
+member {
+  id: 0x41dbd711
+  name: "set_fmt"
+  type_id: 0x2dfff216
+  offset: 320
+}
+member {
+  id: 0xd3d03cf4
+  name: "set_frame_desc"
+  type_id: 0x2da9c5ad
+  offset: 896
+}
+member {
+  id: 0x0c34191e
+  name: "set_frame_retries"
+  type_id: 0x2d4aba78
+  offset: 832
+}
+member {
+  id: 0xd3fd73af
+  name: "set_gain"
+  type_id: 0x0f234ce1
+  offset: 192
+}
+member {
+  id: 0x86f35fb4
+  name: "set_halt"
+  type_id: 0x2d7549b3
+  offset: 448
+}
+member {
+  id: 0x5aecd6ed
+  name: "set_host"
+  type_id: 0x2d16b2fd
+  offset: 384
+}
+member {
+  id: 0x436ab2e5
+  name: "set_hw_addr_filt"
+  type_id: 0x2d7dea63
+  offset: 448
+}
+member {
+  id: 0x9bb7ecf7
+  name: "set_info"
+  type_id: 0x2ffb7fc6
+  offset: 320
+}
+member {
+  id: 0xb2608f99
+  name: "set_input_current_limit"
+  type_id: 0x2d60a5cb
+  offset: 512
+}
+member {
+  id: 0x80b101bf
+  name: "set_inst_name"
+  type_id: 0x2ccfa873
+  offset: 1344
+}
+member {
+  id: 0xce6643c0
+  name: "set_ios"
+  type_id: 0x0de0f4a6
+  offset: 256
+}
+member {
+  id: 0xad0b1b00
+  name: "set_jack"
+  type_id: 0x2cee149a
+  offset: 1088
+}
+member {
+  id: 0xdbfcbfe4
+  name: "set_lanes"
+  type_id: 0x295c7202
+  offset: 322
+  bitsize: 1
+}
+member {
+  id: 0xb44fd4da
+  name: "set_latency_tolerance"
+  type_id: 0x0e47bcdd
+  offset: 2560
+}
+member {
+  id: 0xd1fc2f6b
+  name: "set_lbt"
+  type_id: 0x2d0e725e
+  offset: 576
+}
+member {
+  id: 0xcb4b42d6
+  name: "set_lbt_mode"
+  type_id: 0x2f60ff16
+  offset: 960
+}
+member {
+  id: 0xb31da2de
+  name: "set_ldisc"
+  type_id: 0x0e80c67d
+  offset: 384
+}
+member {
+  id: 0xb31da453
+  name: "set_ldisc"
+  type_id: 0x0e80c67d
+  offset: 1024
+}
+member {
+  id: 0xb31f78bc
+  name: "set_ldisc"
+  type_id: 0x0c59c5c5
+  offset: 1408
+}
+member {
+  id: 0xda5efa78
+  name: "set_len"
+  type_id: 0x2fec9986
+  offset: 128
+}
+member {
+  id: 0x2b39e177
+  name: "set_length"
+  type_id: 0x2f46ac84
+  offset: 512
+}
+member {
+  id: 0x9a6cf748
+  name: "set_link_ksettings"
+  type_id: 0x2ee31e41
+  offset: 3584
+}
+member {
+  id: 0x3ebf1bcb
+  name: "set_load"
+  type_id: 0x2d60a5cb
+  offset: 1728
+}
+member {
+  id: 0xaedef102
+  name: "set_loopback"
+  type_id: 0x2e8a143b
+  offset: 3840
+}
+member {
+  id: 0x65f10173
+  name: "set_mask"
+  type_id: 0x064d6086
+  offset: 256
+}
+member {
+  id: 0x2e8f5455
+  name: "set_max_csma_backoffs"
+  type_id: 0x2f64bd24
+  offset: 832
+}
+member {
+  id: 0x4e347088
+  name: "set_max_frame_retries"
+  type_id: 0x2f64b394
+  offset: 896
+}
+member {
+  id: 0xd1ba91a8
+  name: "set_mctrl"
+  type_id: 0x0ef8d1e2
+  offset: 64
+}
+member {
+  id: 0xd1ba9e51
+  name: "set_mctrl"
+  type_id: 0x0ef8d1e2
+  offset: 512
+}
+member {
+  id: 0x2dca0bee
+  name: "set_media"
+  type_id: 0x2dabc2a7
+  offset: 320
+}
+member {
+  id: 0x77de5711
+  name: "set_metadata"
+  type_id: 0x2c49e996
+  offset: 256
+}
+member {
+  id: 0x77de5743
+  name: "set_metadata"
+  type_id: 0x2c49bb6c
+  offset: 256
+}
+member {
+  id: 0x77dee31f
+  name: "set_metadata"
+  type_id: 0x2cfde7bd
+  offset: 256
+}
+member {
+  id: 0xaa012d31
+  name: "set_mode"
+  type_id: 0x2da28064
+  offset: 256
+}
+member {
+  id: 0xaa01c06c
+  name: "set_mode"
+  type_id: 0x2d42007e
+  offset: 1088
+}
+member {
+  id: 0xe54965c1
+  name: "set_module_power_mode"
+  type_id: 0x2eef9a5c
+  offset: 4416
+}
+member {
+  id: 0x80dac66f
+  name: "set_msglevel"
+  type_id: 0x0d5547d5
+  offset: 512
+}
+member {
+  id: 0x84026618
+  name: "set_msi"
+  type_id: 0x2ca1d644
+  offset: 320
+}
+member {
+  id: 0x665da17d
+  name: "set_msix"
+  type_id: 0x2ca1690d
+  offset: 448
+}
+member {
+  id: 0x2e31bb5d
+  name: "set_multiple"
+  type_id: 0x0f3e6082
+  offset: 832
+}
+member {
+  id: 0x48119710
+  name: "set_mux"
+  type_id: 0x2c0486d3
+  offset: 320
+}
+member {
+  id: 0xd1009987
+  name: "set_next_event"
+  type_id: 0x2ed46467
+  offset: 64
+}
+member {
+  id: 0x36436c5c
+  name: "set_next_event_phys"
+  type_id: 0x2ed46467
+  offset: 320
+}
+member {
+  id: 0x0a2170fb
+  name: "set_next_event_virt"
+  type_id: 0x2ed46467
+  offset: 384
+}
+member {
+  id: 0x11291b29
+  name: "set_next_ktime"
+  type_id: 0x2cff7264
+  offset: 128
+}
+member {
+  id: 0xe11aeaed
+  name: "set_next_task"
+  type_id: 0x0c4dca68
+  offset: 512
+}
+member {
+  id: 0x372bebe1
+  name: "set_notify_enabled"
+  type_id: 0x2e154904
+  offset: 64
+}
+member {
+  id: 0x9ae1c7c4
+  name: "set_offset"
+  type_id: 0x2d2980e7
+  offset: 512
+}
+member {
+  id: 0x6a056539
+  name: "set_offset_nsec"
+  type_id: 0x33756485
+  offset: 11648
+}
+member {
+  id: 0x01b2c6d9
+  name: "set_over_current_protection"
+  type_id: 0x2d66bab9
+  offset: 576
+}
+member {
+  id: 0x1dd28a1f
+  name: "set_over_voltage_protection"
+  type_id: 0x2d66bab9
+  offset: 640
+}
+member {
+  id: 0xc8c46aca
+  name: "set_ownership"
+  type_id: 0x0dc70534
+  offset: 832
+}
+member {
+  id: 0x7887751f
+  name: "set_pan_id"
+  type_id: 0x2f6f95a3
+  offset: 640
+}
+member {
+  id: 0xaf10618e
+  name: "set_params"
+  type_id: 0x2cfd324f
+  offset: 128
+}
+member {
+  id: 0xaf10c257
+  name: "set_params"
+  type_id: 0x2c5eebb2
+  offset: 128
+}
+member {
+  id: 0xaf10d80a
+  name: "set_params"
+  type_id: 0x2c44b6b7
+  offset: 128
+}
+member {
+  id: 0xaf10d858
+  name: "set_params"
+  type_id: 0x2c44e44d
+  offset: 128
+}
+member {
+  id: 0xaf1305cc
+  name: "set_params"
+  type_id: 0x2f99c0f3
+  offset: 576
+}
+member {
+  id: 0xd2ea40a7
+  name: "set_parent"
+  type_id: 0x2d771732
+  offset: 832
+}
+member {
+  id: 0x80b3275d
+  name: "set_parity"
+  type_id: 0x2c7e6442
+  offset: 384
+}
+member {
+  id: 0x2a455b72
+  name: "set_partner_usb_comm_capable"
+  type_id: 0x0fd2c0d1
+  offset: 448
+}
+member {
+  id: 0x2a47c19a
+  name: "set_partner_usb_comm_capable"
+  type_id: 0x0d4dacd3
+  offset: 1408
+}
+member {
+  id: 0xe37aa4c9
+  name: "set_pauseparam"
+  type_id: 0x2ec73a64
+  offset: 1344
+}
+member {
+  id: 0xf0a8a677
+  name: "set_pd_rx"
+  type_id: 0x2e0b807c
+  offset: 704
+}
+member {
+  id: 0xd1bb476c
+  name: "set_peek_off"
+  type_id: 0x2c436299
+  offset: 1408
+}
+member {
+  id: 0x5071b91d
+  name: "set_per_queue_coalesce"
+  type_id: 0x2e106394
+  offset: 3456
+}
+member {
+  id: 0xc30b3206
+  name: "set_performance_state"
+  type_id: 0x2ddc85f9
+  offset: 11008
+}
+member {
+  id: 0x0628acc9
+  name: "set_period"
+  type_id: 0x2cb576ea
+  offset: 640
+}
+member {
+  id: 0x1cd0b9ff
+  name: "set_peripheral"
+  type_id: 0x2d0e5e97
+  offset: 448
+}
+member {
+  id: 0x3f6d9e6d
+  name: "set_pgtable_quirks"
+  type_id: 0x2f2a3e16
+  offset: 832
+}
+member {
+  id: 0xabec5550
+  name: "set_phase"
+  type_id: 0x2d396b93
+  offset: 1216
+}
+member {
+  id: 0x02ad034e
+  name: "set_phy_tunable"
+  type_id: 0x2eec15a8
+  offset: 3968
+}
+member {
+  id: 0x3e5d6d01
+  name: "set_phys_id"
+  type_id: 0x2ef52eb4
+  offset: 1536
+}
+member {
+  id: 0xee76fb35
+  name: "set_pll"
+  type_id: 0x2c876a31
+  offset: 1024
+}
+member {
+  id: 0xee77bc49
+  name: "set_pll"
+  type_id: 0x2dc3e8af
+  offset: 64
+}
+member {
+  id: 0xcb2c9ebd
+  name: "set_polarity"
+  type_id: 0x2eb6ced9
+  offset: 448
+}
+member {
+  id: 0x33179555
+  name: "set_port"
+  type_id: 0x2e9bbd8d
+}
+member {
+  id: 0x8086060a
+  name: "set_power"
+  type_id: 0x0d70ef7c
+  offset: 448
+}
+member {
+  id: 0x80a69db4
+  name: "set_power"
+  type_id: 0x2de9ae36
+  offset: 2432
+}
+member {
+  id: 0x7eba804e
+  name: "set_pretimeout"
+  type_id: 0x2c9bf198
+  offset: 384
+}
+member {
+  id: 0x9869eeac
+  name: "set_priority_called"
+  type_id: 0x6d7f5ff6
+  offset: 960
+}
+member {
+  id: 0xcde93702
+  name: "set_priv"
+  type_id: 0x2e2855ee
+  offset: 192
+}
+member {
+  id: 0xe9c453d9
+  name: "set_priv_flags"
+  type_id: 0x2e136b7a
+  offset: 1856
+}
+member {
+  id: 0x9fa5cb5f
+  name: "set_promiscuous_mode"
+  type_id: 0x2d0e725e
+  offset: 896
+}
+member {
+  id: 0x0a20c683
+  name: "set_property"
+  type_id: 0x2c6964fd
+  offset: 256
+}
+member {
+  id: 0x0a20d354
+  name: "set_property"
+  type_id: 0x2c7b6f3a
+  offset: 448
+}
+member {
+  id: 0x0a226827
+  name: "set_property"
+  type_id: 0x2ece191f
+  offset: 576
+}
+member {
+  id: 0x0a22687f
+  name: "set_property"
+  type_id: 0x2ec0f499
+  offset: 320
+}
+member {
+  id: 0xff542925
+  name: "set_pull_down"
+  type_id: 0x2d078518
+  offset: 2240
+}
+member {
+  id: 0xe84b7153
+  name: "set_quality_report"
+  type_id: 0x2c414371
+  offset: 51264
+}
+member {
+  id: 0x602695e6
+  name: "set_ramp_delay"
+  type_id: 0x2d60a5cb
+  offset: 1344
+}
+member {
+  id: 0x37352c1f
+  name: "set_rate"
+  type_id: 0x2d6e0972
+  offset: 960
+}
+member {
+  id: 0xb4135916
+  name: "set_rate"
+  type_id: 0x295c7202
+  offset: 321
+  bitsize: 1
+}
+member {
+  id: 0x58bd165e
+  name: "set_rate_and_parent"
+  type_id: 0x2d6e202e
+  offset: 1024
+}
+member {
+  id: 0xbb7a4121
+  name: "set_rcvlowat"
+  type_id: 0x2c436299
+  offset: 1792
+}
+member {
+  id: 0xbb7ac8c3
+  name: "set_rcvlowat"
+  type_id: 0x2cc185a2
+  offset: 1088
+}
+member {
+  id: 0xe4d489f8
+  name: "set_read_only"
+  type_id: 0x2d5f9fa6
+  offset: 640
+}
+member {
+  id: 0xa174b423
+  name: "set_ringparam"
+  type_id: 0x2ee3cbcb
+  offset: 1152
+}
+member {
+  id: 0xfcec761c
+  name: "set_roles"
+  type_id: 0x2e035005
+  offset: 768
+}
+member {
+  id: 0xddc4bab1
+  name: "set_rq_budget_token"
+  type_id: 0x0f392d09
+  offset: 320
+}
+member {
+  id: 0x098f8c42
+  name: "set_rx_mode"
+  type_id: 0x0e6ab35b
+  offset: 960
+}
+member {
+  id: 0x142af9ef
+  name: "set_rxfh"
+  type_id: 0x2ee8bed5
+  offset: 2432
+}
+member {
+  id: 0x300d4e2f
+  name: "set_rxfh_context"
+  type_id: 0x2ee8bd35
+  offset: 2560
+}
+member {
+  id: 0xcb9fe2aa
+  name: "set_rxnfc"
+  type_id: 0x2edd9d94
+  offset: 2048
+}
+member {
+  id: 0x6c555792
+  name: "set_scl"
+  type_id: 0x0c98988d
+  offset: 128
+}
+member {
+  id: 0xb84a83d2
+  name: "set_sda"
+  type_id: 0x0c98988d
+  offset: 256
+}
+member {
+  id: 0xf0ecec7b
+  name: "set_selection"
+  type_id: 0x2dffe4a8
+  offset: 448
+}
+member {
+  id: 0xb1200e59
+  name: "set_selfpowered"
+  type_id: 0x2fc1720f
+  offset: 128
+}
+member {
+  id: 0xd99430da
+  name: "set_serial"
+  type_id: 0x2f054704
+  offset: 1920
+}
+member {
+  id: 0xd9943837
+  name: "set_serial"
+  type_id: 0x2f054704
+  offset: 3136
+}
+member {
+  id: 0x16a88eaa
+  name: "set_short_addr"
+  type_id: 0x2f6f95a3
+  offset: 704
+}
+member {
+  id: 0xe13664ea
+  name: "set_shutdown"
+  type_id: 0x0e837004
+  offset: 640
+}
+member {
+  id: 0xe3ead1c7
+  name: "set_size"
+  type_id: 0x9d2c4a95
+  offset: 96
+}
+member {
+  id: 0x911b3483
+  name: "set_soft_start"
+  type_id: 0x2d078518
+  offset: 1536
+}
+member {
+  id: 0x37bf3e8a
+  name: "set_speed"
+  type_id: 0x2d28e8bc
+  offset: 384
+}
+member {
+  id: 0x8c2b6d64
+  name: "set_start_time"
+  type_id: 0x6d7f5ff6
+  offset: 12032
+}
+member {
+  id: 0x93b3fedd
+  name: "set_state"
+  type_id: 0x0f4b3297
+  offset: 128
+}
+member {
+  id: 0x6dafe706
+  name: "set_state_oneshot"
+  type_id: 0x2cc33558
+  offset: 640
+}
+member {
+  id: 0x59435378
+  name: "set_state_oneshot_stopped"
+  type_id: 0x2cc33558
+  offset: 704
+}
+member {
+  id: 0xef3712e1
+  name: "set_state_periodic"
+  type_id: 0x2cc33558
+  offset: 576
+}
+member {
+  id: 0x4f4039a7
+  name: "set_state_shutdown"
+  type_id: 0x2cc33558
+  offset: 768
+}
+member {
+  id: 0xb4ff99a3
+  name: "set_status"
+  type_id: 0x0c0c13d2
+  offset: 256
+}
+member {
+  id: 0x6f57aa7b
+  name: "set_stream"
+  type_id: 0x2dbc34c4
+  offset: 640
+}
+member {
+  id: 0x13055279
+  name: "set_suspend"
+  type_id: 0x2dcb0b83
+  offset: 2496
+}
+member {
+  id: 0xd5fa074e
+  name: "set_suspend_disable"
+  type_id: 0x2d078518
+  offset: 2048
+}
+member {
+  id: 0x0c8c248e
+  name: "set_suspend_enable"
+  type_id: 0x2d078518
+  offset: 1984
+}
+member {
+  id: 0x9e27a0cc
+  name: "set_suspend_mode"
+  type_id: 0x2d42007e
+  offset: 2112
+}
+member {
+  id: 0x82a79577
+  name: "set_suspend_voltage"
+  type_id: 0x2d60a5cb
+  offset: 1920
+}
+member {
+  id: 0x720a6665
+  name: "set_sysclk"
+  type_id: 0x2dc1e409
+}
+member {
+  id: 0x720b281a
+  name: "set_sysclk"
+  type_id: 0x2c87681b
+  offset: 960
+}
+member {
+  id: 0x82991dce
+  name: "set_tdm_slot"
+  type_id: 0x2de347ce
+  offset: 384
+}
+member {
+  id: 0x7e9ca335
+  name: "set_termios"
+  type_id: 0x0c78d7b8
+  offset: 3200
+}
+member {
+  id: 0x7e9cb431
+  name: "set_termios"
+  type_id: 0x0c699137
+  offset: 576
+}
+member {
+  id: 0x7e9cb7e5
+  name: "set_termios"
+  type_id: 0x0c699137
+  offset: 896
+}
+member {
+  id: 0x7e9e50d6
+  name: "set_termios"
+  type_id: 0x0e83c332
+  offset: 320
+}
+member {
+  id: 0x7e9e5fe2
+  name: "set_termios"
+  type_id: 0x0e83c332
+  offset: 960
+}
+member {
+  id: 0x15c6a182
+  name: "set_thermal_protection"
+  type_id: 0x2d66bab9
+  offset: 768
+}
+member {
+  id: 0x6a35d0ba
+  name: "set_time"
+  type_id: 0x2de218bf
+  offset: 128
+}
+member {
+  id: 0x05571fa2
+  name: "set_timeout"
+  type_id: 0x2c9bf198
+  offset: 320
+}
+member {
+  id: 0x05768432
+  name: "set_timeout"
+  type_id: 0x0d0f5510
+  offset: 960
+}
+member {
+  id: 0x75703398
+  name: "set_tiocm"
+  type_id: 0x2cede4c3
+  offset: 640
+}
+member {
+  id: 0x164de68f
+  name: "set_trigger_state"
+  type_id: 0x2c0c6644
+}
+member {
+  id: 0xa5bfca74
+  name: "set_trip_hyst"
+  type_id: 0x2fff06aa
+  offset: 576
+}
+member {
+  id: 0x2e6bf86e
+  name: "set_trip_temp"
+  type_id: 0x2fff06aa
+  offset: 448
+}
+member {
+  id: 0xe02a5975
+  name: "set_trips"
+  type_id: 0x2fff06aa
+  offset: 192
+}
+member {
+  id: 0xca262476
+  name: "set_tristate"
+  type_id: 0x2dc5db7f
+  offset: 576
+}
+member {
+  id: 0xbf4e5191
+  name: "set_tunable"
+  type_id: 0x2eec15a8
+  offset: 3328
+}
+member {
+  id: 0xbf4e78b2
+  name: "set_tunable"
+  type_id: 0x2ecfa784
+  offset: 3776
+}
+member {
+  id: 0x9c730b5b
+  name: "set_tx_power"
+  type_id: 0x2fbe6814
+  offset: 576
+}
+member {
+  id: 0x71974348
+  name: "set_txpower"
+  type_id: 0x2db71389
+  offset: 512
+}
+member {
+  id: 0x400a3f51
+  name: "set_type_config"
+  type_id: 0x2d701a82
+  offset: 1152
+}
+member {
+  id: 0x29fa16d4
+  name: "set_type_virt"
+  type_id: 0x2d701266
+  offset: 1088
+}
+member {
+  id: 0x56663f41
+  name: "set_uhs_signaling"
+  type_id: 0x0d6478af
+  offset: 1344
+}
+member {
+  id: 0xbada1dd2
+  name: "set_under_voltage_protection"
+  type_id: 0x2d66bab9
+  offset: 704
+}
+member {
+  id: 0xfd9ed8c6
+  name: "set_usb2_hw_lpm"
+  type_id: 0x2fac8db0
+  offset: 2560
+}
+member {
+  id: 0xfef444a6
+  name: "set_vbus"
+  type_id: 0x2e0d5789
+  offset: 576
+}
+member {
+  id: 0xfef6d3c5
+  name: "set_vbus"
+  type_id: 0x2c948101
+  offset: 320
+}
+member {
+  id: 0xfef70ddf
+  name: "set_vbus"
+  type_id: 0x2d4644f3
+  offset: 512
+}
+member {
+  id: 0xfef782fd
+  name: "set_vbus"
+  type_id: 0x2dcb0b83
+  offset: 2368
+}
+member {
+  id: 0xc8f07cbf
+  name: "set_vconn"
+  type_id: 0x2c94ec7e
+  offset: 192
+}
+member {
+  id: 0xc8f2e002
+  name: "set_vconn"
+  type_id: 0x2e0b807c
+  offset: 512
+}
+member {
+  id: 0xde8621f7
+  name: "set_voltage"
+  type_id: 0x2d66cc37
+  offset: 64
+}
+member {
+  id: 0xe3487ad9
+  name: "set_voltage_sel"
+  type_id: 0x2d42007e
+  offset: 192
+}
+member {
+  id: 0x75b9b81d
+  name: "set_voltage_time"
+  type_id: 0x2d66d7c6
+  offset: 1408
+}
+member {
+  id: 0x5bfef493
+  name: "set_voltage_time_sel"
+  type_id: 0x2d465828
+  offset: 1472
+}
+member {
+  id: 0xf0fff49b
+  name: "set_voltages"
+  type_id: 0x295c7202
+  offset: 323
+  bitsize: 1
+}
+member {
+  id: 0xabd65e76
+  name: "set_vq_affinity"
+  type_id: 0x2edea7d5
+  offset: 768
+}
+member {
+  id: 0xbd51e7df
+  name: "set_wakeup"
+  type_id: 0x2dc1540f
+  offset: 2560
+}
+member {
+  id: 0xf4be2934
+  name: "set_wedge"
+  type_id: 0x2d126960
+  offset: 512
+}
+member {
+  id: 0x4f88405e
+  name: "set_wol"
+  type_id: 0x2ec64fad
+  offset: 2752
+}
+member {
+  id: 0x4f887ff9
+  name: "set_wol"
+  type_id: 0x2efb4798
+  offset: 384
+}
+member {
+  id: 0x0b82dae9
+  name: "setattr"
+  type_id: 0x2d180989
+  offset: 832
+}
+member {
+  id: 0xeab6099b
+  name: "setauthsize"
+  type_id: 0x2c31fe8f
+  offset: 64
+}
+member {
+  id: 0x177a316a
+  name: "setkey"
+  type_id: 0x2c4f223a
+}
+member {
+  id: 0x177a5b17
+  name: "setkey"
+  type_id: 0x2c2228e1
+  offset: 448
+}
+member {
+  id: 0x177acdc5
+  name: "setkey"
+  type_id: 0x2cb4fa3a
+  offset: 448
+}
+member {
+  id: 0x177b7195
+  name: "setkey"
+  type_id: 0x2d0fdd7c
+}
+member {
+  id: 0x83fba385
+  name: "setkeycode"
+  type_id: 0x2cc09ac5
+  offset: 1856
+}
+member {
+  id: 0xa11bca02
+  name: "setlease"
+  type_id: 0x2c82fcfe
+  offset: 1664
+}
+member {
+  id: 0x4767039d
+  name: "setpolicy"
+  type_id: 0x2de9e33f
+  offset: 384
+}
+member {
+  id: 0xc109eca1
+  name: "sets"
+  type_id: 0xea789c46
+}
+member {
+  id: 0x85254c52
+  name: "setsockopt"
+  type_id: 0x2c97b369
+  offset: 896
+}
+member {
+  id: 0x85259dc7
+  name: "setsockopt"
+  type_id: 0x2c45f2d3
+  offset: 576
+}
+member {
+  id: 0x73eab9b0
+  name: "settime64"
+  type_id: 0x2f91f200
+  offset: 1024
+}
+member {
+  id: 0x4708182d
+  name: "setting"
+  type_id: 0xe8034002
+  offset: 880
+}
+member {
+  id: 0x2c222e7f
+  name: "settings"
+  type_id: 0xd3c80119
+  offset: 192
+}
+member {
+  id: 0xdade10e8
+  name: "settling_time"
+  type_id: 0x4585663f
+  offset: 1568
+}
+member {
+  id: 0xe75fa254
+  name: "settling_time_down"
+  type_id: 0x4585663f
+  offset: 1632
+}
+member {
+  id: 0x19b12c08
+  name: "settling_time_up"
+  type_id: 0x4585663f
+  offset: 1600
+}
+member {
+  id: 0x84ae6293
+  name: "setup"
+  type_id: 0x6720d32f
+  offset: 3072
+}
+member {
+  id: 0x84c4d659
+  name: "setup"
+  type_id: 0x0d9c4ffe
+  offset: 320
+}
+member {
+  id: 0x84c7773a
+  name: "setup"
+  type_id: 0x0e3a40b2
+  offset: 256
+}
+member {
+  id: 0x84e46063
+  name: "setup"
+  type_id: 0x2d2d19a5
+  offset: 256
+}
+member {
+  id: 0x84e4ad37
+  name: "setup"
+  type_id: 0x2de17471
+  offset: 384
+}
+member {
+  id: 0x84e56f17
+  name: "setup"
+  type_id: 0x2c2c3c2e
+  offset: 50624
+}
+member {
+  id: 0x84e59375
+  name: "setup"
+  type_id: 0x2cdc0ac8
+  offset: 9088
+}
+member {
+  id: 0x84e68e26
+  name: "setup"
+  type_id: 0x2fc4e84d
+  offset: 1024
+}
+member {
+  id: 0x84e68e61
+  name: "setup"
+  type_id: 0x2fc4c761
+  offset: 448
+}
+member {
+  id: 0x84e6d9cc
+  name: "setup"
+  type_id: 0x2f94b64f
+  offset: 256
+}
+member {
+  id: 0x72fca683
+  name: "setup_addr"
+  type_id: 0xa61911b2
+  offset: 720
+}
+member {
+  id: 0x4a835917
+  name: "setup_aux"
+  type_id: 0x1ee3d534
+  offset: 1856
+}
+member {
+  id: 0xd3ae598c
+  name: "setup_clocks"
+  type_id: 0x2de1ef0b
+  offset: 320
+}
+member {
+  id: 0xe6d1a9b9
+  name: "setup_dma"
+  type_id: 0xe02e14d6
+  offset: 1152
+}
+member {
+  id: 0xc7fd6253
+  name: "setup_irq"
+  type_id: 0x2c3ce96e
+}
+member {
+  id: 0x2e0bc19e
+  name: "setup_ops"
+  type_id: 0x3ee52b5e
+  offset: 8640
+}
+member {
+  id: 0xcfa03b24
+  name: "setup_packet"
+  type_id: 0x1df06cce
+  offset: 1088
+}
+member {
+  id: 0x9b4150c9
+  name: "setup_pending"
+  type_id: 0x4585663f
+  offset: 1184
+  bitsize: 1
+}
+member {
+  id: 0xb57c2df0
+  name: "setup_task_mgmt"
+  type_id: 0x0eaba9b8
+  offset: 640
+}
+member {
+  id: 0x4bd47e3e
+  name: "setup_time_ps"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0xdc217072
+  name: "setup_timer"
+  type_id: 0x0f7ac5c1
+  offset: 128
+}
+member {
+  id: 0x6b49b6a0
+  name: "setup_xfer_req"
+  type_id: 0x0eafeb8a
+  offset: 576
+}
+member {
+  id: 0xbc747788
+  name: "sev"
+  type_id: 0x28ced72f
+  offset: 128
+}
+member {
+  id: 0x5c1e3ade
+  name: "sf"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x3825eed4
+  name: "sf_addr"
+  type_id: 0x6d25e07f
+  offset: 64
+}
+member {
+  id: 0x31391355
+  name: "sf_count"
+  type_id: 0x607419c2
+  offset: 192
+}
+member {
+  id: 0x31391f7d
+  name: "sf_count"
+  type_id: 0x607419c2
+  offset: 64
+}
+member {
+  id: 0x494491e1
+  name: "sf_crcount"
+  type_id: 0x5d8155a5
+  offset: 240
+}
+member {
+  id: 0x49449d09
+  name: "sf_crcount"
+  type_id: 0x5d8155a5
+  offset: 336
+}
+member {
+  id: 0x4af3f875
+  name: "sf_gsresp"
+  type_id: 0x5d8155a5
+  offset: 320
+}
+member {
+  id: 0x4af3fc96
+  name: "sf_gsresp"
+  type_id: 0x5d8155a5
+  offset: 224
+}
+member {
+  id: 0x51261bcd
+  name: "sf_inaddr"
+  type_id: 0xe276adef
+  offset: 192
+}
+member {
+  id: 0x9c290ab3
+  name: "sf_next"
+  type_id: 0x3dbc6f10
+}
+member {
+  id: 0x9c3f02b0
+  name: "sf_next"
+  type_id: 0x2bb46c25
+}
+member {
+  id: 0x2c1199d0
+  name: "sf_oldin"
+  type_id: 0x5d8155a5
+  offset: 328
+}
+member {
+  id: 0x2c119e4c
+  name: "sf_oldin"
+  type_id: 0x5d8155a5
+  offset: 232
+}
+member {
+  id: 0x0117694f
+  name: "sfcount"
+  type_id: 0x607419c2
+  offset: 256
+}
+member {
+  id: 0xdaab2a3c
+  name: "sff8431_app_e"
+  type_id: 0x295c7202
+  bitsize: 1
+}
+member {
+  id: 0x92b73f25
+  name: "sff8431_lim"
+  type_id: 0x295c7202
+  offset: 2
+  bitsize: 1
+}
+member {
+  id: 0x84e06666
+  name: "sff8472_compliance"
+  type_id: 0x295c7202
+  offset: 240
+}
+member {
+  id: 0x4e4c2253
+  name: "sflags"
+  type_id: 0x295c7202
+  offset: 15408
+}
+member {
+  id: 0x00c081a9
+  name: "sfmode"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x65a2356f
+  name: "sfp_bus"
+  type_id: 0x00836b76
+  offset: 19072
+}
+member {
+  id: 0x65a238b8
+  name: "sfp_bus"
+  type_id: 0x00836b76
+  offset: 12416
+}
+member {
+  id: 0x65a2397c
+  name: "sfp_bus"
+  type_id: 0x00836b76
+  offset: 3136
+}
+member {
+  id: 0x494b170a
+  name: "sfp_bus_attached"
+  type_id: 0x6d7f5ff6
+  offset: 12352
+}
+member {
+  id: 0x1db0f20b
+  name: "sfp_ct_active"
+  type_id: 0x295c7202
+  offset: 67
+  bitsize: 1
+}
+member {
+  id: 0xf4bf9113
+  name: "sfp_ct_passive"
+  type_id: 0x295c7202
+  offset: 66
+  bitsize: 1
+}
+member {
+  id: 0xf5c5204a
+  name: "sfp_interfaces"
+  type_id: 0xb914bfab
+  offset: 3264
+}
+member {
+  id: 0x59a335a2
+  name: "sfp_may_have_phy"
+  type_id: 0x6d7f5ff6
+  offset: 3200
+}
+member {
+  id: 0x848db2f6
+  name: "sfp_port"
+  type_id: 0x295c7202
+  offset: 3456
+}
+member {
+  id: 0x53572de1
+  name: "sfp_support"
+  type_id: 0x607419c2
+  offset: 3328
+}
+member {
+  id: 0x9d8652e2
+  name: "sg"
+  type_id: 0x11cffa09
+}
+member {
+  id: 0x9d865595
+  name: "sg"
+  type_id: 0x11cffa09
+  offset: 448
+}
+member {
+  id: 0x9d865844
+  name: "sg"
+  type_id: 0x11cffa09
+  offset: 896
+}
+member {
+  id: 0x9d865a2b
+  name: "sg"
+  type_id: 0x11cffa09
+  offset: 192
+}
+member {
+  id: 0x9d973020
+  name: "sg"
+  type_id: 0x00a43052
+  offset: 3520
+}
+member {
+  id: 0x9d9730ea
+  name: "sg"
+  type_id: 0x00a43052
+  offset: 128
+}
+member {
+  id: 0x9dd08ad9
+  name: "sg"
+  type_id: 0x4717c167
+}
+member {
+  id: 0xb52b2515
+  name: "sg_cnt"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x621a802d
+  name: "sg_count"
+  type_id: 0x6720d32f
+  offset: 7456
+}
+member {
+  id: 0x621a8c77
+  name: "sg_count"
+  type_id: 0x6720d32f
+  offset: 416
+}
+member {
+  id: 0xfa599941
+  name: "sg_entry_size"
+  type_id: 0xf435685e
+  offset: 1472
+}
+member {
+  id: 0x1cfc27e4
+  name: "sg_from_iter"
+  type_id: 0x2c230e2b
+  offset: 768
+}
+member {
+  id: 0xdc445158
+  name: "sg_io_fn"
+  type_id: 0x370f3379
+  offset: 8576
+}
+member {
+  id: 0x3a8b55b2
+  name: "sg_len"
+  type_id: 0x4585663f
+  offset: 384
+}
+member {
+  id: 0xbf2238b4
+  name: "sg_list"
+  type_id: 0x11cffa09
+  offset: 64
+}
+member {
+  id: 0xe56b23aa
+  name: "sg_miter"
+  type_id: 0xe2612112
+  offset: 6848
+}
+member {
+  id: 0x2b5980ff
+  name: "sg_pgoffset"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xe5db5152
+  name: "sg_prot_tablesize"
+  type_id: 0xc93e017b
+  offset: 4000
+}
+member {
+  id: 0xe5db58f5
+  name: "sg_prot_tablesize"
+  type_id: 0xc93e017b
+  offset: 2320
+}
+member {
+  id: 0xe1e1cac3
+  name: "sg_reserved_size"
+  type_id: 0x4585663f
+  offset: 19424
+}
+member {
+  id: 0x61e60032
+  name: "sg_supported"
+  type_id: 0x4585663f
+  offset: 8448
+  bitsize: 1
+}
+member {
+  id: 0xd87544b5
+  name: "sg_tablesize"
+  type_id: 0x4585663f
+  offset: 288
+}
+member {
+  id: 0xd8f9f078
+  name: "sg_tablesize"
+  type_id: 0xc93e017b
+  offset: 3984
+}
+member {
+  id: 0xd8f9fc00
+  name: "sg_tablesize"
+  type_id: 0xc93e017b
+  offset: 2304
+}
+member {
+  id: 0x2dbd041d
+  name: "sg_timeout"
+  type_id: 0x4585663f
+  offset: 19392
+}
+member {
+  id: 0x5d1a8055
+  name: "sgc"
+  type_id: 0x3ee14b79
+  offset: 128
+}
+member {
+  id: 0x722ab767
+  name: "sget_key"
+  type_id: 0x18bd6530
+  offset: 576
+}
+member {
+  id: 0x57b79a32
+  name: "sgi_config"
+  type_id: 0x4b27ac3d
+  offset: 128
+}
+member {
+  id: 0xb049594d
+  name: "sgi_domain"
+  type_id: 0x18a2fb63
+  offset: 64
+}
+member {
+  id: 0x37a44b88
+  name: "sgid"
+  type_id: 0xb0ddb211
+  offset: 6176
+}
+member {
+  id: 0x37a44d46
+  name: "sgid"
+  type_id: 0xb0ddb211
+  offset: 128
+}
+member {
+  id: 0x6b7a2cb7
+  name: "sgl"
+  type_id: 0x11cffa09
+}
+member {
+  id: 0x6b89914a
+  name: "sgl"
+  type_id: 0xe275c051
+  offset: 320
+}
+member {
+  id: 0x716e8497
+  name: "sgt"
+  type_id: 0x00a43052
+  offset: 3520
+}
+member {
+  id: 0x716e8d34
+  name: "sgt"
+  type_id: 0x00a43052
+  offset: 256
+}
+member {
+  id: 0x0f7b186b
+  name: "sh"
+  type_id: 0xc9082b19
+  offset: 5
+  bitsize: 2
+}
+member {
+  id: 0x6307aec3
+  name: "sh1"
+  type_id: 0x295c7202
+  offset: 32
+}
+member {
+  id: 0x3cc1ce90
+  name: "sh2"
+  type_id: 0x295c7202
+  offset: 40
+}
+member {
+  id: 0x5bb3ba98
+  name: "shallow_depth"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0xeb4f3b1e
+  name: "share"
+  type_id: 0x295c7202
+  offset: 392
+}
+member {
+  id: 0x3b30b9e2
+  name: "shared"
+  type_id: 0xa51e8f9f
+  offset: 64
+}
+member {
+  id: 0x3b9417fe
+  name: "shared"
+  type_id: 0x01bc81b8
+  offset: 10624
+}
+member {
+  id: 0x3ba537c2
+  name: "shared"
+  type_id: 0x309c8746
+  offset: 192
+}
+member {
+  id: 0x3ba6ddc4
+  name: "shared"
+  type_id: 0x337e48e0
+}
+member {
+  id: 0x3bacfa29
+  name: "shared"
+  type_id: 0x3950568f
+  offset: 2240
+}
+member {
+  id: 0x3bb33f89
+  name: "shared"
+  type_id: 0x269c0575
+}
+member {
+  id: 0x3bc105b2
+  name: "shared"
+  type_id: 0x54a3a89f
+  offset: 20608
+}
+member {
+  id: 0x3bd02778
+  name: "shared"
+  type_id: 0x4585663f
+  offset: 384
+}
+member {
+  id: 0x3bf8d2ab
+  name: "shared"
+  type_id: 0x6d7f5ff6
+  offset: 264
+}
+member {
+  id: 0x6046bc87
+  name: "shared_avail"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0x3d623bd2
+  name: "shared_hcd"
+  type_id: 0x25782362
+  offset: 64
+}
+member {
+  id: 0x3d623c4e
+  name: "shared_hcd"
+  type_id: 0x25782362
+  offset: 4992
+}
+member {
+  id: 0x079a91c2
+  name: "shared_lock"
+  type_id: 0xa7c362b0
+  offset: 20224
+}
+member {
+  id: 0xc83535b5
+  name: "shared_opp"
+  type_id: 0xf7c61c85
+  offset: 1728
+}
+member {
+  id: 0x70e20f4a
+  name: "shared_pending"
+  type_id: 0x9ec07527
+  offset: 512
+}
+member {
+  id: 0x33219031
+  name: "shared_tags"
+  type_id: 0x0d881d5f
+  offset: 896
+}
+member {
+  id: 0x107660a6
+  name: "shared_type"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0x243c6756
+  name: "sharedram"
+  type_id: 0x21d43a7b
+  offset: 384
+}
+member {
+  id: 0x5bdb19bf
+  name: "shares"
+  type_id: 0x33756485
+  offset: 1984
+}
+member {
+  id: 0x00328324
+  name: "sharpness"
+  type_id: 0xb3e7bac9
+  offset: 56
+}
+member {
+  id: 0xbf23c651
+  name: "sharpness_level"
+  type_id: 0xb3e7bac9
+  offset: 64
+}
+member {
+  id: 0x32189a75
+  name: "shift"
+  type_id: 0x295c7202
+  offset: 24
+}
+member {
+  id: 0x323a6571
+  name: "shift"
+  type_id: 0x0baa70a7
+  offset: 800
+}
+member {
+  id: 0x3256e977
+  name: "shift"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x3256ea13
+  name: "shift"
+  type_id: 0x6720d32f
+  offset: 896
+}
+member {
+  id: 0x326c4133
+  name: "shift"
+  type_id: 0x5d8155a5
+}
+member {
+  id: 0x326c41c1
+  name: "shift"
+  type_id: 0x5d8155a5
+  offset: 608
+}
+member {
+  id: 0x3274483b
+  name: "shift"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x32744c83
+  name: "shift"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x32f8c5ad
+  name: "shift"
+  type_id: 0xc9082b19
+  offset: 160
+}
+member {
+  id: 0x32f8ca2d
+  name: "shift"
+  type_id: 0xc9082b19
+  offset: 416
+}
+member {
+  id: 0x67d3dfb0
+  name: "shift_l"
+  type_id: 0x5d8155a5
+  offset: 32
+}
+member {
+  id: 0xc35b4798
+  name: "shift_r"
+  type_id: 0x5d8155a5
+  offset: 40
+}
+member {
+  id: 0x635a8821
+  name: "shm_ctlall"
+  type_id: 0xf435685e
+  offset: 7488
+}
+member {
+  id: 0xaa22986b
+  name: "shm_ctlmax"
+  type_id: 0xf435685e
+  offset: 7424
+}
+member {
+  id: 0x5b41e34f
+  name: "shm_ctlmni"
+  type_id: 0x6720d32f
+  offset: 7616
+}
+member {
+  id: 0xb28cb21e
+  name: "shm_rmid_forced"
+  type_id: 0x6720d32f
+  offset: 7648
+}
+member {
+  id: 0x04c930c7
+  name: "shm_tot"
+  type_id: 0x33756485
+  offset: 7552
+}
+member {
+  id: 0xfd2d921d
+  name: "short_addr"
+  type_id: 0x9bd401b6
+  offset: 16
+}
+member {
+  id: 0xfd2d9923
+  name: "short_addr"
+  type_id: 0x9bd401b6
+  offset: 496
+}
+member {
+  id: 0xfd2d9ca3
+  name: "short_addr"
+  type_id: 0x9bd401b6
+}
+member {
+  id: 0x8b337420
+  name: "short_inquiry"
+  type_id: 0x4585663f
+  offset: 4361
+  bitsize: 1
+}
+member {
+  id: 0x543ffd14
+  name: "short_name"
+  type_id: 0x5b13ca1c
+  offset: 2904
+}
+member {
+  id: 0x5b4328e9
+  name: "short_not_ok"
+  type_id: 0x4585663f
+  offset: 339
+  bitsize: 1
+}
+member {
+  id: 0xd4c9fc04
+  name: "short_packet_received"
+  type_id: 0x4585663f
+  offset: 3267
+  bitsize: 1
+}
+member {
+  id: 0x0e530004
+  name: "short_src"
+  type_id: 0x0baa70a7
+}
+member {
+  id: 0x9f90eb44
+  name: "short_term_ref_pic_set_size"
+  type_id: 0xe8034002
+  offset: 32
+}
+member {
+  id: 0x9f90ef0d
+  name: "short_term_ref_pic_set_size"
+  type_id: 0xe8034002
+  offset: 576
+}
+member {
+  id: 0x15fdf59e
+  name: "shortest_full"
+  type_id: 0xf435685e
+  offset: 1664
+}
+member {
+  id: 0x3f389d8f
+  name: "shortname"
+  type_id: 0x5adf57ae
+  offset: 288
+}
+member {
+  id: 0xa7bc78ff
+  name: "shost_data"
+  type_id: 0x18bd6530
+  offset: 19648
+}
+member {
+  id: 0x02aa12be
+  name: "shost_dev"
+  type_id: 0x23230326
+  offset: 12352
+}
+member {
+  id: 0x2955b972
+  name: "shost_gendev"
+  type_id: 0x23230326
+  offset: 5056
+}
+member {
+  id: 0x5e72b4eb
+  name: "shost_groups"
+  type_id: 0x06433852
+  offset: 2688
+}
+member {
+  id: 0xc89be432
+  name: "shost_state"
+  type_id: 0x31660354
+  offset: 4992
+}
+member {
+  id: 0x4ab70964
+  name: "should_be_inactive"
+  type_id: 0x4585663f
+  offset: 1091
+  bitsize: 1
+}
+member {
+  id: 0x3a32dd0c
+  name: "should_flush"
+  type_id: 0x295c7202
+  offset: 1096
+  bitsize: 1
+}
+member {
+  id: 0x5f783075
+  name: "should_free"
+  type_id: 0x6d7f5ff6
+  offset: 840
+}
+member {
+  id: 0x0a527a1a
+  name: "show"
+  type_id: 0x2c7db2d9
+  offset: 128
+}
+member {
+  id: 0x0a538469
+  name: "show"
+  type_id: 0x2d8ee262
+  offset: 64
+}
+member {
+  id: 0x0a538841
+  name: "show"
+  type_id: 0x2d8ee262
+  offset: 192
+}
+member {
+  id: 0x0a706911
+  name: "show"
+  type_id: 0x0e6eb93c
+  offset: 128
+}
+member {
+  id: 0x0a709d62
+  name: "show"
+  type_id: 0x0e9bc1a8
+  offset: 192
+}
+member {
+  id: 0x0a70c706
+  name: "show"
+  type_id: 0x0ec8cecd
+  offset: 2560
+}
+member {
+  id: 0x0a70de6c
+  name: "show"
+  type_id: 0x0ed0ad54
+  offset: 256
+}
+member {
+  id: 0x0a7106ca
+  name: "show"
+  type_id: 0x0f016270
+  offset: 128
+}
+member {
+  id: 0x0a7180cd
+  name: "show"
+  type_id: 0x0f8765b2
+  offset: 128
+}
+member {
+  id: 0x0a71b688
+  name: "show"
+  type_id: 0x0fb12072
+  offset: 128
+}
+member {
+  id: 0x0a71d6e5
+  name: "show"
+  type_id: 0x0fd14d12
+  offset: 128
+}
+member {
+  id: 0x0a728910
+  name: "show"
+  type_id: 0x0c8eb859
+  offset: 128
+}
+member {
+  id: 0x0a733168
+  name: "show"
+  type_id: 0x0d36c060
+  offset: 128
+}
+member {
+  id: 0x0a73957b
+  name: "show"
+  type_id: 0x0d92d3ed
+  offset: 128
+}
+member {
+  id: 0x0a739cb9
+  name: "show"
+  type_id: 0x0d92d3ed
+}
+member {
+  id: 0xef063991
+  name: "show_devname"
+  type_id: 0x2d845a47
+  offset: 1088
+}
+member {
+  id: 0x3d8c95de
+  name: "show_fdinfo"
+  type_id: 0x0ec899c2
+  offset: 1792
+}
+member {
+  id: 0x3d8c9c38
+  name: "show_fdinfo"
+  type_id: 0x0ec01381
+  offset: 1024
+}
+member {
+  id: 0x3d8e0610
+  name: "show_fdinfo"
+  type_id: 0x0c5fa023
+  offset: 1984
+}
+member {
+  id: 0x3d8f753f
+  name: "show_fdinfo"
+  type_id: 0x0d2ea08a
+  offset: 256
+}
+member {
+  id: 0xb10daf25
+  name: "show_info"
+  type_id: 0x2d8185ba
+  offset: 1792
+}
+member {
+  id: 0x5047c373
+  name: "show_options"
+  type_id: 0x2d9b3898
+}
+member {
+  id: 0x5047db0e
+  name: "show_options"
+  type_id: 0x2d845a47
+  offset: 1024
+}
+member {
+  id: 0x1ab34824
+  name: "show_path"
+  type_id: 0x2d845a47
+  offset: 1152
+}
+member {
+  id: 0x1ab36ed3
+  name: "show_path"
+  type_id: 0x2dacda34
+  offset: 256
+}
+member {
+  id: 0x16c99f0e
+  name: "show_rq"
+  type_id: 0x0ecef1a9
+  offset: 1088
+}
+member {
+  id: 0x018d1293
+  name: "show_setspeed"
+  type_id: 0x0fb12072
+  offset: 448
+}
+member {
+  id: 0xe3c0912d
+  name: "show_stats"
+  type_id: 0x2d845a47
+  offset: 1216
+}
+member {
+  id: 0x731ffc29
+  name: "shpc_managed"
+  type_id: 0x4585663f
+  offset: 22113
+  bitsize: 1
+}
+member {
+  id: 0x868caa9e
+  name: "shrinker"
+  type_id: 0xb4975242
+  offset: 16640
+}
+member {
+  id: 0x927ef18a
+  name: "shrinker_id"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0x8f88eff7
+  name: "shrinker_info"
+  type_id: 0x0b57ce4e
+  offset: 18304
+}
+member {
+  id: 0xad36439e
+  name: "shrinker_list"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0x89a152e5
+  name: "shrinklist"
+  type_id: 0xd3c80119
+  offset: 320
+}
+member {
+  id: 0x06d55c51
+  name: "shutdown"
+  type_id: 0x6d7f5ff6
+  offset: 1829
+  bitsize: 1
+}
+member {
+  id: 0x9e81e59e
+  name: "shutdown"
+  type_id: 0x74d29cf1
+  offset: 1728
+}
+member {
+  id: 0x9e921ef2
+  name: "shutdown"
+  type_id: 0x6720d32f
+  offset: 12448
+}
+member {
+  id: 0x9e9841a7
+  name: "shutdown"
+  type_id: 0x6d7f5ff6
+  offset: 544
+}
+member {
+  id: 0x9e984be4
+  name: "shutdown"
+  type_id: 0x6d7f5ff6
+  offset: 80
+}
+member {
+  id: 0x9ed91ea3
+  name: "shutdown"
+  type_id: 0x2c2c3c2e
+  offset: 50688
+}
+member {
+  id: 0x9ed96f02
+  name: "shutdown"
+  type_id: 0x2c5bc41e
+  offset: 64
+}
+member {
+  id: 0x9ed9a2be
+  name: "shutdown"
+  type_id: 0x2c912323
+  offset: 832
+}
+member {
+  id: 0x9ed9ffe0
+  name: "shutdown"
+  type_id: 0x2cc185a2
+  offset: 2112
+}
+member {
+  id: 0x9edbaaaa
+  name: "shutdown"
+  type_id: 0x2e9195ef
+  offset: 512
+}
+member {
+  id: 0x9ef81d0b
+  name: "shutdown"
+  type_id: 0x0d27cb7e
+  offset: 1536
+}
+member {
+  id: 0x9ef87dbe
+  name: "shutdown"
+  type_id: 0x0d45505e
+  offset: 192
+}
+member {
+  id: 0x9ef8a0c7
+  name: "shutdown"
+  type_id: 0x0d904bff
+  offset: 256
+}
+member {
+  id: 0x9ef8a782
+  name: "shutdown"
+  type_id: 0x0d9f6c71
+  offset: 192
+}
+member {
+  id: 0x9ef96e25
+  name: "shutdown"
+  type_id: 0x0c59c5c5
+  offset: 320
+}
+member {
+  id: 0x9ef9d7f1
+  name: "shutdown"
+  type_id: 0x0ce1aff5
+  offset: 640
+}
+member {
+  id: 0x9efa2c01
+  name: "shutdown"
+  type_id: 0x0f18c71d
+  offset: 64
+}
+member {
+  id: 0x9efa2ecd
+  name: "shutdown"
+  type_id: 0x0f1728d9
+  offset: 128
+}
+member {
+  id: 0x9efa3e71
+  name: "shutdown"
+  type_id: 0x0f054e36
+  offset: 512
+}
+member {
+  id: 0x9efa42bc
+  name: "shutdown"
+  type_id: 0x0f787c1e
+  offset: 1536
+}
+member {
+  id: 0x9efa937a
+  name: "shutdown"
+  type_id: 0x0fa845a7
+  offset: 512
+}
+member {
+  id: 0x9efaa2c8
+  name: "shutdown"
+  type_id: 0x0f9a2667
+  offset: 192
+}
+member {
+  id: 0x9efac217
+  name: "shutdown"
+  type_id: 0x0ff8963c
+  offset: 896
+}
+member {
+  id: 0x9efac97f
+  name: "shutdown"
+  type_id: 0x0ffdb990
+  offset: 64
+}
+member {
+  id: 0x9efaea14
+  name: "shutdown"
+  type_id: 0x0fd3f1ea
+  offset: 128
+}
+member {
+  id: 0x9efb1acb
+  name: "shutdown"
+  type_id: 0x0e200b74
+  offset: 1536
+}
+member {
+  id: 0x9efb85dd
+  name: "shutdown"
+  type_id: 0x0ebd5484
+  offset: 768
+}
+member {
+  id: 0x9efb86a1
+  name: "shutdown"
+  type_id: 0x0eb62dc3
+  offset: 256
+}
+member {
+  id: 0x9efb8dea
+  name: "shutdown"
+  type_id: 0x0eb6d039
+  offset: 1856
+}
+member {
+  id: 0x9efb8ec9
+  name: "shutdown"
+  type_id: 0x0ebd5484
+  offset: 832
+}
+member {
+  id: 0x9efba1b8
+  name: "shutdown"
+  type_id: 0x0e93a255
+  offset: 704
+}
+member {
+  id: 0x9efba5fc
+  name: "shutdown"
+  type_id: 0x0e93a255
+  offset: 640
+}
+member {
+  id: 0x9efbdd2b
+  name: "shutdown"
+  type_id: 0x0eea07ff
+  offset: 2304
+}
+member {
+  id: 0x2190c638
+  name: "shutdown_pre"
+  type_id: 0x2dd58efa
+  offset: 576
+}
+member {
+  id: 0x63640e02
+  name: "shutdown_wait"
+  type_id: 0x03913382
+  offset: 1792
+}
+member {
+  id: 0xce8d2794
+  name: "shutting_down"
+  type_id: 0x6d7f5ff6
+  offset: 4488
+}
+member {
+  id: 0xce8d2968
+  name: "shutting_down"
+  type_id: 0x6d7f5ff6
+  offset: 9216
+}
+member {
+  id: 0xa983b60c
+  name: "si_code"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x4290bdc6
+  name: "si_errno"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x5491bc0c
+  name: "si_signo"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xee31b78c
+  name: "sibling"
+  type_id: 0xd3c80119
+  offset: 13056
+}
+member {
+  id: 0xee31bbdb
+  name: "sibling"
+  type_id: 0xd3c80119
+  offset: 256
+}
+member {
+  id: 0xeec37d27
+  name: "sibling"
+  type_id: 0x21069feb
+  offset: 192
+}
+member {
+  id: 0xeed6076d
+  name: "sibling"
+  type_id: 0x347303b4
+  offset: 1024
+}
+member {
+  id: 0xeed93e03
+  name: "sibling"
+  type_id: 0x3b4ce03a
+  offset: 384
+}
+member {
+  id: 0x1b2e3274
+  name: "sibling_list"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0xd9950200
+  name: "siblings"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0xd9950299
+  name: "siblings"
+  type_id: 0xd3c80119
+  offset: 2944
+}
+member {
+  id: 0xd9950f23
+  name: "siblings"
+  type_id: 0xd3c80119
+  offset: 64
+}
+member {
+  id: 0x086ca956
+  name: "sid"
+  type_id: 0x5eeb4a25
+  offset: 1472
+}
+member {
+  id: 0x08a308f3
+  name: "sid"
+  type_id: 0x914dbfdc
+}
+member {
+  id: 0x08fb4d67
+  name: "sid"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x71a9d2d2
+  name: "sidtab"
+  type_id: 0x0f0b2702
+}
+member {
+  id: 0x6c4c56c1
+  name: "sifs_period"
+  type_id: 0x914dbfdc
+  offset: 1872
+}
+member {
+  id: 0x4b4ac8f5
+  name: "sig"
+  type_id: 0xb914bfab
+}
+member {
+  id: 0x9cb4386e
+  name: "sig_bits"
+  type_id: 0x4585663f
+  offset: 288
+}
+member {
+  id: 0x9cfa1cc6
+  name: "sig_bits"
+  type_id: 0x0baa70a7
+  offset: 800
+}
+member {
+  id: 0xa85f5b90
+  name: "sig_data"
+  type_id: 0xedf277ba
+  offset: 960
+}
+member {
+  id: 0xdf88a085
+  name: "sig_ok"
+  type_id: 0x6d7f5ff6
+  offset: 2824
+}
+member {
+  id: 0xb79e9d9b
+  name: "sig_type"
+  type_id: 0x5a8462fa
+  offset: 352
+}
+member {
+  id: 0x20a8b2d4
+  name: "sigcnt"
+  type_id: 0xa722c13e
+}
+member {
+  id: 0x2ecbf599
+  name: "sigev_signo"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x7ddaea3c
+  name: "sighand"
+  type_id: 0x2087fb8b
+  offset: 17600
+}
+member {
+  id: 0x361b289e
+  name: "siginfo"
+  type_id: 0x348b5e76
+}
+member {
+  id: 0x7ad15371
+  name: "siglock"
+  type_id: 0xf313e71a
+}
+member {
+  id: 0x900f67a7
+  name: "sign"
+  type_id: 0x4050ae51
+  offset: 24
+}
+member {
+  id: 0x90777e15
+  name: "sign"
+  type_id: 0x384f7d7c
+}
+member {
+  id: 0x0900f80a
+  name: "signal"
+  type_id: 0xe8034002
+  offset: 1024
+}
+member {
+  id: 0x098fd867
+  name: "signal"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x09e75700
+  name: "signal"
+  type_id: 0x0faae5b1
+  offset: 480
+}
+member {
+  id: 0x09e91115
+  name: "signal"
+  type_id: 0x01e5fe4a
+  offset: 17536
+}
+member {
+  id: 0x09eafce8
+  name: "signal"
+  type_id: 0x02097f03
+  offset: 128
+}
+member {
+  id: 0xbf28dc5b
+  name: "signal_exits"
+  type_id: 0x92233392
+  offset: 6976
+}
+member {
+  id: 0x7eb64f1d
+  name: "signal_type"
+  type_id: 0x1b2534c1
+  offset: 1024
+}
+member {
+  id: 0x8c28f01f
+  name: "signal_voltage"
+  type_id: 0x5d8155a5
+  offset: 136
+}
+member {
+  id: 0xb61e46bc
+  name: "signaled"
+  type_id: 0x350996ca
+  offset: 256
+}
+member {
+  id: 0xf72a7db5
+  name: "signalfd_wqh"
+  type_id: 0x03913382
+  offset: 64
+}
+member {
+  id: 0x76b0e2db
+  name: "signalled_used"
+  type_id: 0x914dbfdc
+  offset: 2624
+}
+member {
+  id: 0x159939af
+  name: "signalled_used_valid"
+  type_id: 0x6d7f5ff6
+  offset: 2640
+}
+member {
+  id: 0x58d2d9eb
+  name: "signum"
+  type_id: 0x6720d32f
+  offset: 224
+}
+member {
+  id: 0xfba84699
+  name: "sigpage"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0xd1201d45
+  name: "sigset"
+  type_id: 0x02097f03
+  offset: 1216
+}
+member {
+  id: 0x54ebc83a
+  name: "sigset_active"
+  type_id: 0x6720d32f
+  offset: 1152
+}
+member {
+  id: 0x08f6c3d8
+  name: "sigtrap"
+  type_id: 0xedf277ba
+  offset: 357
+  bitsize: 1
+}
+member {
+  id: 0xa3d0d6ca
+  name: "silence_err_logs"
+  type_id: 0x6d7f5ff6
+  offset: 19408
+}
+member {
+  id: 0x689afd46
+  name: "silence_filled"
+  type_id: 0xa8fff47c
+  offset: 1920
+}
+member {
+  id: 0x724559fa
+  name: "silence_size"
+  type_id: 0xa8fff47c
+  offset: 1728
+}
+member {
+  id: 0x59173356
+  name: "silence_start"
+  type_id: 0xa8fff47c
+  offset: 1856
+}
+member {
+  id: 0x7bded600
+  name: "silence_suspend"
+  type_id: 0x4585663f
+  offset: 2832
+  bitsize: 1
+}
+member {
+  id: 0x4b2a2dde
+  name: "silence_threshold"
+  type_id: 0xa8fff47c
+  offset: 1664
+}
+member {
+  id: 0xab6f20ab
+  name: "silence_value"
+  type_id: 0x5d8155a5
+  offset: 45312
+}
+member {
+  id: 0x3efa0771
+  name: "simple_422"
+  type_id: 0x6d7f5ff6
+  offset: 64
+}
+member {
+  id: 0x240c2a64
+  name: "simple_tags"
+  type_id: 0x4585663f
+  offset: 2796
+  bitsize: 1
+}
+member {
+  id: 0xe399545c
+  name: "simulate"
+  type_id: 0x6d7f5ff6
+  offset: 320
+}
+member {
+  id: 0x70b795c3
+  name: "single_lun"
+  type_id: 0x4585663f
+  offset: 7713
+  bitsize: 1
+}
+member {
+  id: 0x2deb6459
+  name: "single_redist"
+  type_id: 0x6d7f5ff6
+  offset: 128
+}
+member {
+  id: 0x219b6ad6
+  name: "single_ref"
+  type_id: 0xf9e80525
+  offset: 14256
+}
+member {
+  id: 0x23e22538
+  name: "single_show"
+  type_id: 0x2d8ee262
+}
+member {
+  id: 0x5c8384f3
+  name: "sink"
+  type_id: 0x1cc6bdca
+}
+member {
+  id: 0x5ca152fb
+  name: "sink"
+  type_id: 0x3e10b518
+}
+member {
+  id: 0x5ccf59c6
+  name: "sink"
+  type_id: 0x501df1d2
+  offset: 640
+}
+member {
+  id: 0xfff33e76
+  name: "sink_cap_done"
+  type_id: 0x6d7f5ff6
+  offset: 34048
+}
+member {
+  id: 0xe2d1147a
+  name: "sink_caps"
+  type_id: 0x5a8c92f7
+  offset: 8672
+}
+member {
+  id: 0x02ad13b2
+  name: "sink_pad"
+  type_id: 0x595a11b6
+  offset: 1600
+}
+member {
+  id: 0xf61f0ac5
+  name: "sink_request"
+  type_id: 0xc9082b19
+  offset: 8384
+}
+member {
+  id: 0x0fe9219f
+  name: "sitd"
+  type_id: 0x07eb840a
+}
+member {
+  id: 0xc4acf911
+  name: "sitd_dma"
+  type_id: 0xe02e14d6
+  offset: 320
+}
+member {
+  id: 0x45197afa
+  name: "sitd_list"
+  type_id: 0xd3c80119
+  offset: 576
+}
+member {
+  id: 0x6772ee5d
+  name: "sitd_next"
+  type_id: 0x2b015d45
+  offset: 384
+}
+member {
+  id: 0xe274b605
+  name: "sitd_pool"
+  type_id: 0x2d66740a
+  offset: 5312
+}
+member {
+  id: 0x86d3990a
+  name: "sival_int"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x452d9f5e
+  name: "sival_ptr"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0xd906ec76
+  name: "size"
+  type_id: 0x78f4e574
+  offset: 64
+}
+member {
+  id: 0xd919319a
+  name: "size"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0xd9193468
+  name: "size"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0xd9193522
+  name: "size"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0xd91935d3
+  name: "size"
+  type_id: 0x6720d32f
+  offset: 576
+}
+member {
+  id: 0xd9193607
+  name: "size"
+  type_id: 0x6720d32f
+  offset: 896
+}
+member {
+  id: 0xd9193b66
+  name: "size"
+  type_id: 0x6720d32f
+  offset: 320
+}
+member {
+  id: 0xd9193bbe
+  name: "size"
+  type_id: 0x6720d32f
+  offset: 1024
+}
+member {
+  id: 0xd9239156
+  name: "size"
+  type_id: 0x5d8155a5
+  offset: 72
+}
+member {
+  id: 0xd93b9097
+  name: "size"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0xd93b91dd
+  name: "size"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0xd93b942f
+  name: "size"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xd93b94f4
+  name: "size"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0xd93b9914
+  name: "size"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xd93b9df5
+  name: "size"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xd93b9dfd
+  name: "size"
+  type_id: 0x4585663f
+  offset: 16992
+}
+member {
+  id: 0xd94d60d4
+  name: "size"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0xd94d61df
+  name: "size"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0xd94d6916
+  name: "size"
+  type_id: 0x33756485
+}
+member {
+  id: 0xd94d6df7
+  name: "size"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xd959b112
+  name: "size"
+  type_id: 0x27a7c613
+  offset: 896
+}
+member {
+  id: 0xd959b276
+  name: "size"
+  type_id: 0x27a7c613
+  offset: 128
+}
+member {
+  id: 0xd959bcc3
+  name: "size"
+  type_id: 0x27a7c613
+  offset: 448
+}
+member {
+  id: 0xd9629c3f
+  name: "size"
+  type_id: 0x1c898f28
+  offset: 128
+}
+member {
+  id: 0xd975b602
+  name: "size"
+  type_id: 0x0baa70a7
+}
+member {
+  id: 0xd975bf81
+  name: "size"
+  type_id: 0x0baa70a7
+  offset: 96
+}
+member {
+  id: 0xd975bfc0
+  name: "size"
+  type_id: 0x0baa70a7
+  offset: 128
+}
+member {
+  id: 0xd9821bad
+  name: "size"
+  type_id: 0xfc0e1dbd
+  offset: 128
+}
+member {
+  id: 0xd98a20d8
+  name: "size"
+  type_id: 0xf435685e
+  offset: 128
+}
+member {
+  id: 0xd98a21d3
+  name: "size"
+  type_id: 0xf435685e
+  offset: 192
+}
+member {
+  id: 0xd98a291a
+  name: "size"
+  type_id: 0xf435685e
+}
+member {
+  id: 0xd98a2d0c
+  name: "size"
+  type_id: 0xf435685e
+  offset: 7488
+}
+member {
+  id: 0xd98a2dfb
+  name: "size"
+  type_id: 0xf435685e
+  offset: 64
+}
+member {
+  id: 0xd98a2e3f
+  name: "size"
+  type_id: 0xf435685e
+  offset: 1728
+}
+member {
+  id: 0xd98a2e6d
+  name: "size"
+  type_id: 0xf435685e
+  offset: 448
+}
+member {
+  id: 0xd98a2edd
+  name: "size"
+  type_id: 0xf435685e
+  offset: 320
+}
+member {
+  id: 0xd993e6cc
+  name: "size"
+  type_id: 0xedf277ba
+  offset: 192
+}
+member {
+  id: 0xd993eae4
+  name: "size"
+  type_id: 0xedf277ba
+  offset: 64
+}
+member {
+  id: 0xd99613f3
+  name: "size"
+  type_id: 0xe8034002
+  offset: 48
+}
+member {
+  id: 0xd9961bae
+  name: "size"
+  type_id: 0xe8034002
+  offset: 80
+}
+member {
+  id: 0xd99832cd
+  name: "size"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xd9983b4e
+  name: "size"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0xd9983bbf
+  name: "size"
+  type_id: 0xe62ebf07
+  offset: 576
+}
+member {
+  id: 0xd9983ff6
+  name: "size"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xd9abd17c
+  name: "size"
+  type_id: 0xd5cc9c9a
+  offset: 384
+}
+member {
+  id: 0xd9aea8a7
+  name: "size"
+  type_id: 0xd0b3a203
+  offset: 448
+}
+member {
+  id: 0xd9b710b8
+  name: "size"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0xd9b7177d
+  name: "size"
+  type_id: 0xc9082b19
+  offset: 224
+}
+member {
+  id: 0xd9b71c90
+  name: "size"
+  type_id: 0xc9082b19
+  offset: 192
+}
+member {
+  id: 0xd9b71dda
+  name: "size"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0xd9bbc14a
+  name: "size"
+  type_id: 0xc5d9d969
+  offset: 64
+}
+member {
+  id: 0xd9c3ca3c
+  name: "size"
+  type_id: 0xbdd18903
+  offset: 320
+}
+member {
+  id: 0xd9cdf02e
+  name: "size"
+  type_id: 0xb3e7bac9
+  offset: 8
+}
+member {
+  id: 0xd9eb71ce
+  name: "size"
+  type_id: 0x9565759f
+  offset: 192
+}
+member {
+  id: 0xd9eb7de6
+  name: "size"
+  type_id: 0x9565759f
+  offset: 64
+}
+member {
+  id: 0xd9ec3683
+  name: "size"
+  type_id: 0x92233392
+  offset: 128
+}
+member {
+  id: 0xd9ec3836
+  name: "size"
+  type_id: 0x92233392
+  offset: 448
+}
+member {
+  id: 0xd9ec3ba0
+  name: "size"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0xd9ec3f41
+  name: "size"
+  type_id: 0x92233392
+}
+member {
+  id: 0xd9ef552c
+  name: "size"
+  type_id: 0x914dbfdc
+  offset: 64
+}
+member {
+  id: 0xd9ef5cf6
+  name: "size"
+  type_id: 0x914dbfdc
+  offset: 32
+}
+member {
+  id: 0x5ce28f0d
+  name: "size_class"
+  type_id: 0xd898a5c1
+  offset: 64
+}
+member {
+  id: 0xfb29bcdd
+  name: "size_data"
+  type_id: 0xf435685e
+  offset: 512
+}
+member {
+  id: 0x06ed7647
+  name: "size_log"
+  type_id: 0x5d8155a5
+  offset: 8
+}
+member {
+  id: 0xecbc9196
+  name: "size_poke_tab"
+  type_id: 0xc9082b19
+  offset: 1728
+}
+member {
+  id: 0x99d63969
+  name: "size_windows"
+  type_id: 0x4585663f
+  offset: 8138
+  bitsize: 1
+}
+member {
+  id: 0xfe1ea2ee
+  name: "sizeimage"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xfe1eaf0e
+  name: "sizeimage"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0xb091a204
+  name: "sjw"
+  type_id: 0xe62ebf07
+  offset: 192
+}
+member {
+  id: 0xb51ca4d7
+  name: "sjw_max"
+  type_id: 0xe62ebf07
+  offset: 256
+}
+member {
+  id: 0x828c8077
+  name: "sk"
+  type_id: 0x1d44326e
+  offset: 128
+}
+member {
+  id: 0x828c817c
+  name: "sk"
+  type_id: 0x1d44326e
+  offset: 192
+}
+member {
+  id: 0x828c830a
+  name: "sk"
+  type_id: 0x1d44326e
+  offset: 5504
+}
+member {
+  id: 0x828c89b5
+  name: "sk"
+  type_id: 0x1d44326e
+}
+member {
+  id: 0x828c8d54
+  name: "sk"
+  type_id: 0x1d44326e
+  offset: 64
+}
+member {
+  id: 0x828c8e90
+  name: "sk"
+  type_id: 0x1d44326e
+  offset: 1728
+}
+member {
+  id: 0x82ce9da8
+  name: "sk"
+  type_id: 0x5f502f26
+}
+member {
+  id: 0x732f4228
+  name: "sk_ack_backlog"
+  type_id: 0xc9082b19
+  offset: 4544
+}
+member {
+  id: 0x00e91683
+  name: "sk_allocation"
+  type_id: 0xf1a6dfed
+  offset: 4160
+}
+member {
+  id: 0xb11b219c
+  name: "sk_backlog"
+  type_id: 0x0eac683f
+  offset: 1920
+}
+member {
+  id: 0xd530344e
+  name: "sk_backlog_rcv"
+  type_id: 0x2c210d23
+  offset: 5760
+}
+member {
+  id: 0xf68cf2ba
+  name: "sk_bind2_node"
+  type_id: 0x49a73111
+  offset: 6144
+}
+member {
+  id: 0xed4f8cde
+  name: "sk_bind_phc"
+  type_id: 0x6720d32f
+  offset: 4704
+}
+member {
+  id: 0x30a93d3a
+  name: "sk_bpf_storage"
+  type_id: 0x2f6ef74a
+  offset: 5952
+}
+member {
+  id: 0x330c590c
+  name: "sk_busy_poll_budget"
+  type_id: 0x914dbfdc
+  offset: 4656
+}
+member {
+  id: 0xc26863a7
+  name: "sk_callback_lock"
+  type_id: 0xf4933b90
+  offset: 4416
+}
+member {
+  id: 0x517e951b
+  name: "sk_cgrp_data"
+  type_id: 0xd1fefc64
+  offset: 5312
+}
+member {
+  id: 0xa92e39cb
+  name: "sk_clockid"
+  type_id: 0x295c7202
+  offset: 5088
+}
+member {
+  id: 0x072b7087
+  name: "sk_data_ready"
+  type_id: 0x0f626ee5
+  offset: 5568
+}
+member {
+  id: 0xf4dbc66f
+  name: "sk_destruct"
+  type_id: 0x0f626ee5
+  offset: 5824
+}
+member {
+  id: 0x68a80f57
+  name: "sk_drops"
+  type_id: 0x74d29cf1
+  offset: 1472
+}
+member {
+  id: 0x146c2e15
+  name: "sk_dst_cache"
+  type_id: 0x1259e377
+  offset: 2560
+}
+member {
+  id: 0x115e6000
+  name: "sk_dst_pending_confirm"
+  type_id: 0xe62ebf07
+  offset: 3136
+}
+member {
+  id: 0x4e05e58e
+  name: "sk_err"
+  type_id: 0x6720d32f
+  offset: 4480
+}
+member {
+  id: 0x8fb33fea
+  name: "sk_err_soft"
+  type_id: 0x6720d32f
+  offset: 4512
+}
+member {
+  id: 0xec22ac4e
+  name: "sk_error_queue"
+  type_id: 0x578f9c2b
+  offset: 1536
+}
+member {
+  id: 0x7190919f
+  name: "sk_error_report"
+  type_id: 0x0f626ee5
+  offset: 5696
+}
+member {
+  id: 0xbbf2e8a0
+  name: "sk_filter"
+  type_id: 0x0dffa8e9
+  offset: 2304
+}
+member {
+  id: 0xdccd2ca6
+  name: "sk_forward_alloc"
+  type_id: 0x6720d32f
+  offset: 2112
+}
+member {
+  id: 0xdfc44efd
+  name: "sk_frag"
+  type_id: 0x87af4650
+  offset: 3904
+}
+member {
+  id: 0x80fe1e64
+  name: "sk_gso_disabled"
+  type_id: 0x295c7202
+  offset: 4224
+  bitsize: 1
+}
+member {
+  id: 0xda646e4a
+  name: "sk_gso_max_segs"
+  type_id: 0x914dbfdc
+  offset: 4272
+}
+member {
+  id: 0x5318e58c
+  name: "sk_gso_max_size"
+  type_id: 0x4585663f
+  offset: 4128
+}
+member {
+  id: 0x0e7639a8
+  name: "sk_gso_type"
+  type_id: 0x6720d32f
+  offset: 4096
+}
+member {
+  id: 0x5342b566
+  name: "sk_kern_sock"
+  type_id: 0x295c7202
+  offset: 4225
+  bitsize: 1
+}
+member {
+  id: 0xe5adeb29
+  name: "sk_lingertime"
+  type_id: 0x33756485
+  offset: 4288
+}
+member {
+  id: 0x69be7cba
+  name: "sk_ll_usec"
+  type_id: 0x4585663f
+  offset: 2176
+}
+member {
+  id: 0x041b803c
+  name: "sk_lock"
+  type_id: 0x59b315be
+  offset: 1216
+}
+member {
+  id: 0x7e278858
+  name: "sk_mark"
+  type_id: 0xe62ebf07
+  offset: 3744
+}
+member {
+  id: 0xef6f3039
+  name: "sk_max_ack_backlog"
+  type_id: 0xc9082b19
+  offset: 4576
+}
+member {
+  id: 0xb7cb7b64
+  name: "sk_max_pacing_rate"
+  type_id: 0x33756485
+  offset: 3840
+}
+member {
+  id: 0x4fd32333
+  name: "sk_memcg"
+  type_id: 0x1d5bae2a
+  offset: 5440
+}
+member {
+  id: 0xa5fca811
+  name: "sk_napi_id"
+  type_id: 0x4585663f
+  offset: 2208
+}
+member {
+  id: 0xbfd7b468
+  name: "sk_no_check_rx"
+  type_id: 0x295c7202
+  offset: 4227
+  bitsize: 1
+}
+member {
+  id: 0xb60a80ee
+  name: "sk_no_check_tx"
+  type_id: 0x295c7202
+  offset: 4226
+  bitsize: 1
+}
+member {
+  id: 0x1d9e94f8
+  name: "sk_omem_alloc"
+  type_id: 0x74d29cf1
+  offset: 2624
+}
+member {
+  id: 0xe25d0220
+  name: "sk_pacing_rate"
+  type_id: 0x33756485
+  offset: 3776
+}
+member {
+  id: 0x908a54de
+  name: "sk_pacing_shift"
+  type_id: 0x295c7202
+  offset: 4232
+}
+member {
+  id: 0xed8db781
+  name: "sk_pacing_status"
+  type_id: 0xc9082b19
+  offset: 3168
+}
+member {
+  id: 0x2c5225af
+  name: "sk_peek_off"
+  type_id: 0x0faae5b1
+  offset: 3072
+}
+member {
+  id: 0x3c13fa71
+  name: "sk_peer_cred"
+  type_id: 0x30650ba6
+  offset: 4800
+}
+member {
+  id: 0x37d516ac
+  name: "sk_peer_lock"
+  type_id: 0xf313e71a
+  offset: 4672
+}
+member {
+  id: 0x78172a1f
+  name: "sk_peer_pid"
+  type_id: 0x18456730
+  offset: 4736
+}
+member {
+  id: 0x729e4302
+  name: "sk_policy"
+  type_id: 0x67e28331
+  offset: 2432
+}
+member {
+  id: 0x43fd69bd
+  name: "sk_prefer_busy_poll"
+  type_id: 0x295c7202
+  offset: 4648
+}
+member {
+  id: 0x23b3d623
+  name: "sk_priority"
+  type_id: 0xe62ebf07
+  offset: 3712
+}
+member {
+  id: 0x8440bea9
+  name: "sk_prot_creator"
+  type_id: 0x3bfbd7cf
+  offset: 4352
+}
+member {
+  id: 0xd95f8065
+  name: "sk_proto"
+  type_id: 0x3bfbd7cf
+  offset: 1600
+}
+member {
+  id: 0x2b1ecd8e
+  name: "sk_protocol"
+  type_id: 0x914dbfdc
+  offset: 4256
+}
+member {
+  id: 0xad5a8590
+  name: "sk_rcu"
+  type_id: 0xe3222f5b
+  offset: 6016
+}
+member {
+  id: 0x519959d7
+  name: "sk_rcvbuf"
+  type_id: 0x6720d32f
+  offset: 2240
+}
+member {
+  id: 0x86bee79d
+  name: "sk_rcvlowat"
+  type_id: 0x6720d32f
+  offset: 1504
+}
+member {
+  id: 0x5f82102c
+  name: "sk_rcvtimeo"
+  type_id: 0xfc0e1dbd
+  offset: 4864
+}
+member {
+  id: 0xca65981b
+  name: "sk_receive_queue"
+  type_id: 0x578f9c2b
+  offset: 1728
+}
+member {
+  id: 0xbca70c43
+  name: "sk_redir"
+  type_id: 0x1d44326e
+  offset: 5440
+}
+member {
+  id: 0xbca70c75
+  name: "sk_redir"
+  type_id: 0x1d44326e
+  offset: 64
+}
+member {
+  id: 0xc8fa3812
+  name: "sk_reserved_mem"
+  type_id: 0xc9082b19
+  offset: 2144
+}
+member {
+  id: 0x0a72fbcd
+  name: "sk_reuseport_cb"
+  type_id: 0x3325f40b
+  offset: 5888
+}
+member {
+  id: 0x97af3a36
+  name: "sk_route_caps"
+  type_id: 0x2584a3b9
+  offset: 4032
+}
+member {
+  id: 0xc25e0cf5
+  name: "sk_rx_dst"
+  type_id: 0x1259e377
+  offset: 1088
+}
+member {
+  id: 0x8fa4d047
+  name: "sk_rx_dst_cookie"
+  type_id: 0xc9082b19
+  offset: 1184
+}
+member {
+  id: 0xf13f5358
+  name: "sk_rx_dst_ifindex"
+  type_id: 0x6720d32f
+  offset: 1152
+}
+member {
+  id: 0x30149a66
+  name: "sk_security"
+  type_id: 0x18bd6530
+  offset: 5248
+}
+member {
+  id: 0x96950623
+  name: "sk_send_head"
+  type_id: 0x054f691a
+}
+member {
+  id: 0x1e808a18
+  name: "sk_shutdown"
+  type_id: 0x295c7202
+  offset: 5008
+}
+member {
+  id: 0xdeaf9b88
+  name: "sk_sndbuf"
+  type_id: 0x6720d32f
+  offset: 2656
+}
+member {
+  id: 0x618f67aa
+  name: "sk_sndtimeo"
+  type_id: 0xfc0e1dbd
+  offset: 3200
+}
+member {
+  id: 0x4ccefd51
+  name: "sk_socket"
+  type_id: 0x106029c6
+  offset: 5120
+}
+member {
+  id: 0xf3f896c7
+  name: "sk_stamp"
+  type_id: 0x11c404ba
+  offset: 4928
+}
+member {
+  id: 0x7bf5e4e6
+  name: "sk_state_change"
+  type_id: 0x0f626ee5
+  offset: 5504
+}
+member {
+  id: 0xa83bf5b5
+  name: "sk_timer"
+  type_id: 0xd298e888
+  offset: 3264
+}
+member {
+  id: 0xc251838d
+  name: "sk_tsflags"
+  type_id: 0x914dbfdc
+  offset: 4992
+}
+member {
+  id: 0xe1e14251
+  name: "sk_tskey"
+  type_id: 0x74d29cf1
+  offset: 5024
+}
+member {
+  id: 0x6e06265d
+  name: "sk_tsq_flags"
+  type_id: 0x33756485
+  offset: 2752
+}
+member {
+  id: 0x6b378204
+  name: "sk_txhash"
+  type_id: 0xe62ebf07
+  offset: 4192
+}
+member {
+  id: 0x88640c5c
+  name: "sk_txrehash"
+  type_id: 0x295c7202
+  offset: 4640
+}
+member {
+  id: 0x094e9a19
+  name: "sk_txtime_deadline_mode"
+  type_id: 0x295c7202
+  offset: 5096
+  bitsize: 1
+}
+member {
+  id: 0x3854487c
+  name: "sk_txtime_report_errors"
+  type_id: 0x295c7202
+  offset: 5097
+  bitsize: 1
+}
+member {
+  id: 0xa49d0352
+  name: "sk_txtime_unused"
+  type_id: 0x295c7202
+  offset: 5098
+  bitsize: 6
+}
+member {
+  id: 0x268da99f
+  name: "sk_type"
+  type_id: 0x914dbfdc
+  offset: 4240
+}
+member {
+  id: 0x4c474af2
+  name: "sk_uid"
+  type_id: 0xe90b32b7
+  offset: 4608
+}
+member {
+  id: 0x01b872f2
+  name: "sk_user_data"
+  type_id: 0x18bd6530
+  offset: 5184
+}
+member {
+  id: 0x01b8739a
+  name: "sk_user_data"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0x9987a493
+  name: "sk_userlocks"
+  type_id: 0x295c7202
+  offset: 4228
+  bitsize: 4
+}
+member {
+  id: 0x8a1dbb2d
+  name: "sk_wait_pending"
+  type_id: 0x6720d32f
+  offset: 2272
+}
+member {
+  id: 0xca81d80d
+  name: "sk_wmem_alloc"
+  type_id: 0xa722c13e
+  offset: 2720
+}
+member {
+  id: 0x268f3cf0
+  name: "sk_wmem_queued"
+  type_id: 0x6720d32f
+  offset: 2688
+}
+member {
+  id: 0xdb4fffa0
+  name: "sk_wq"
+  type_id: 0x1d2bb1b6
+}
+member {
+  id: 0x5eefe6e4
+  name: "sk_wq_raw"
+  type_id: 0x1d2bb1b6
+}
+member {
+  id: 0x9a7248d0
+  name: "sk_write_pending"
+  type_id: 0x6720d32f
+  offset: 3104
+}
+member {
+  id: 0xbcb23072
+  name: "sk_write_queue"
+  type_id: 0x578f9c2b
+  offset: 2880
+}
+member {
+  id: 0x6b6b8b1a
+  name: "sk_write_space"
+  type_id: 0x0f626ee5
+  offset: 5632
+}
+member {
+  id: 0xf0cb1cd4
+  name: "sk_zckey"
+  type_id: 0x74d29cf1
+  offset: 5056
+}
+member {
+  id: 0xb0b86045
+  name: "skb"
+  type_id: 0x054f691a
+  offset: 5376
+}
+member {
+  id: 0xb0b8629f
+  name: "skb"
+  type_id: 0x054f691a
+  offset: 64
+}
+member {
+  id: 0xb0b862c2
+  name: "skb"
+  type_id: 0x054f691a
+  offset: 10688
+}
+member {
+  id: 0xb0b864fa
+  name: "skb"
+  type_id: 0x054f691a
+  offset: 1984
+}
+member {
+  id: 0xb0b8667e
+  name: "skb"
+  type_id: 0x054f691a
+}
+member {
+  id: 0xb0b86d66
+  name: "skb"
+  type_id: 0x054f691a
+  offset: 512
+}
+member {
+  id: 0x88fb7ad4
+  name: "skb_bad_txq"
+  type_id: 0x578f9c2b
+  offset: 1920
+}
+member {
+  id: 0x2e201083
+  name: "skb_iif"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x85e086c4
+  name: "skb_irq_queue"
+  type_id: 0x578f9c2b
+  offset: 320
+}
+member {
+  id: 0x9d3acaae
+  name: "skb_mstamp_ns"
+  type_id: 0x92233392
+}
+member {
+  id: 0xd8ba29d3
+  name: "skb_queue"
+  type_id: 0x578f9c2b
+  offset: 128
+}
+member {
+  id: 0x223a3493
+  name: "skb_queue_len_max"
+  type_id: 0xc9082b19
+  offset: 512
+}
+member {
+  id: 0xa41a9a3d
+  name: "skb_verdict"
+  type_id: 0x3382a638
+  offset: 192
+}
+member {
+  id: 0x8388dd1d
+  name: "skc_addrpair"
+  type_id: 0xaaee57c0
+}
+member {
+  id: 0xbbaaccdc
+  name: "skc_bind_node"
+  type_id: 0x49a73111
+}
+member {
+  id: 0x2a60e3da
+  name: "skc_bound_dev_if"
+  type_id: 0x6720d32f
+  offset: 160
+}
+member {
+  id: 0xe1e6717e
+  name: "skc_cookie"
+  type_id: 0x1f4573ef
+  offset: 704
+}
+member {
+  id: 0x992015fb
+  name: "skc_daddr"
+  type_id: 0xe276adef
+}
+member {
+  id: 0x759600c5
+  name: "skc_dontcopy_begin"
+  type_id: 0xddf1ba3b
+  offset: 832
+}
+member {
+  id: 0xb06b37f6
+  name: "skc_dontcopy_end"
+  type_id: 0xddf1ba3b
+  offset: 1056
+}
+member {
+  id: 0x07cc6799
+  name: "skc_dport"
+  type_id: 0x7584e7da
+}
+member {
+  id: 0xb9240646
+  name: "skc_family"
+  type_id: 0xc93e017b
+  offset: 128
+}
+member {
+  id: 0x94144342
+  name: "skc_flags"
+  type_id: 0x33756485
+}
+member {
+  id: 0x724a92c1
+  name: "skc_hash"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x0b195703
+  name: "skc_incoming_cpu"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x378f034f
+  name: "skc_ipv6only"
+  type_id: 0x5d8155a5
+  offset: 157
+  bitsize: 1
+}
+member {
+  id: 0x34c1d855
+  name: "skc_listener"
+  type_id: 0x1d44326e
+}
+member {
+  id: 0x6c53f160
+  name: "skc_net"
+  type_id: 0xb335d16f
+  offset: 384
+}
+member {
+  id: 0x79ef737e
+  name: "skc_net_refcnt"
+  type_id: 0x5d8155a5
+  offset: 158
+  bitsize: 1
+}
+member {
+  id: 0x89140987
+  name: "skc_node"
+  type_id: 0x49a73111
+}
+member {
+  id: 0xe7f93ad5
+  name: "skc_nulls_node"
+  type_id: 0xdb2fb9a5
+}
+member {
+  id: 0x70959b33
+  name: "skc_num"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0x34e01459
+  name: "skc_portaddr_node"
+  type_id: 0x49a73111
+}
+member {
+  id: 0x7dd68144
+  name: "skc_portpair"
+  type_id: 0x2f062198
+}
+member {
+  id: 0x6fa16348
+  name: "skc_prot"
+  type_id: 0x3bfbd7cf
+  offset: 320
+}
+member {
+  id: 0xe0a8a53c
+  name: "skc_rcv_saddr"
+  type_id: 0xe276adef
+  offset: 32
+}
+member {
+  id: 0xd3a2d898
+  name: "skc_rcv_wnd"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x45e71f8b
+  name: "skc_refcnt"
+  type_id: 0xa722c13e
+  offset: 1024
+}
+member {
+  id: 0x0a79af2d
+  name: "skc_reuse"
+  type_id: 0x5d8155a5
+  offset: 152
+  bitsize: 4
+}
+member {
+  id: 0xb4ad6c03
+  name: "skc_reuseport"
+  type_id: 0x5d8155a5
+  offset: 156
+  bitsize: 1
+}
+member {
+  id: 0x3355d7fa
+  name: "skc_rx_queue_mapping"
+  type_id: 0xc93e017b
+  offset: 976
+}
+member {
+  id: 0xd95fbe7d
+  name: "skc_rxhash"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x4db4db53
+  name: "skc_state"
+  type_id: 0x837627e4
+  offset: 144
+}
+member {
+  id: 0x9f99ffb4
+  name: "skc_tw_dr"
+  type_id: 0x1e7a7830
+}
+member {
+  id: 0x6b7a3cdf
+  name: "skc_tw_rcv_nxt"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x618cf87a
+  name: "skc_tw_snd_nxt"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x6467aea5
+  name: "skc_tx_queue_mapping"
+  type_id: 0xc93e017b
+  offset: 960
+}
+member {
+  id: 0x567f0ad2
+  name: "skc_u16hashes"
+  type_id: 0x56a990e3
+}
+member {
+  id: 0x9ba46ff7
+  name: "skc_v6_daddr"
+  type_id: 0x6d25e07f
+  offset: 448
+}
+member {
+  id: 0x5baedae6
+  name: "skc_v6_rcv_saddr"
+  type_id: 0x6d25e07f
+  offset: 576
+}
+member {
+  id: 0x275426a5
+  name: "skc_window_clamp"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x629240af
+  name: "skip"
+  type_id: 0x3e3c1b86
+  offset: 13928
+}
+member {
+  id: 0x62a4551b
+  name: "skip"
+  type_id: 0x082be49e
+  offset: 704
+}
+member {
+  id: 0x62c101a0
+  name: "skip"
+  type_id: 0x6d7f5ff6
+  offset: 704
+}
+member {
+  id: 0x62cb512a
+  name: "skip"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x62e9fbc4
+  name: "skip"
+  type_id: 0x4585663f
+  offset: 416
+}
+member {
+  id: 0xc1d96113
+  name: "skip_bus_pm"
+  type_id: 0x4585663f
+  offset: 1342
+  bitsize: 1
+}
+member {
+  id: 0x488dcd37
+  name: "skip_cache_sync_on_finish"
+  type_id: 0x4585663f
+  offset: 740
+  bitsize: 1
+}
+member {
+  id: 0xfbb91426
+  name: "skip_cache_sync_on_prepare"
+  type_id: 0x4585663f
+  offset: 739
+  bitsize: 1
+}
+member {
+  id: 0x7d76bf6a
+  name: "skip_ms_page_3f"
+  type_id: 0x4585663f
+  offset: 2806
+  bitsize: 1
+}
+member {
+  id: 0x4638efb1
+  name: "skip_ms_page_8"
+  type_id: 0x4585663f
+  offset: 2805
+  bitsize: 1
+}
+member {
+  id: 0xb92557c4
+  name: "skip_notify"
+  type_id: 0x295c7202
+  offset: 160
+  bitsize: 1
+}
+member {
+  id: 0x2a07186e
+  name: "skip_notify_kernel"
+  type_id: 0x295c7202
+  offset: 161
+  bitsize: 1
+}
+member {
+  id: 0x567d4292
+  name: "skip_notify_on_dev_down"
+  type_id: 0x6720d32f
+  offset: 1408
+}
+member {
+  id: 0xb0732d0b
+  name: "skip_packets"
+  type_id: 0x6720d32f
+  offset: 45376
+}
+member {
+  id: 0xdecf871e
+  name: "skip_phy_initialization"
+  type_id: 0x4585663f
+  offset: 3364
+  bitsize: 1
+}
+member {
+  id: 0x5bcf27c2
+  name: "skip_settle_delay"
+  type_id: 0x4585663f
+  offset: 2628
+  bitsize: 1
+}
+member {
+  id: 0x0d8c2019
+  name: "skip_txqueue"
+  type_id: 0x295c7202
+  offset: 24
+}
+member {
+  id: 0x9a517161
+  name: "skip_vpd_pages"
+  type_id: 0x4585663f
+  offset: 2807
+  bitsize: 1
+}
+member {
+  id: 0xe39dc0f6
+  name: "skip_vt_switch"
+  type_id: 0x6d7f5ff6
+  offset: 6080
+}
+member {
+  id: 0x024e10a2
+  name: "skipped_entries"
+  type_id: 0x33756485
+  offset: 640
+}
+member {
+  id: 0x5b3140b8
+  name: "sklist"
+  type_id: 0x5e8dc7f4
+  offset: 384
+}
+member {
+  id: 0xdf4ccd45
+  name: "sklist_lock"
+  type_id: 0xa7c362b0
+}
+member {
+  id: 0x0a7c1b9f
+  name: "sl"
+  type_id: 0xc9082b19
+  offset: 11
+  bitsize: 2
+}
+member {
+  id: 0xe0c5ed6b
+  name: "slab"
+  type_id: 0x0f91dccc
+  offset: 128
+}
+member {
+  id: 0xe0e4817f
+  name: "slab"
+  type_id: 0x2efd5036
+  offset: 2624
+}
+member {
+  id: 0xe0e48cc4
+  name: "slab"
+  type_id: 0x2efd5036
+  offset: 64
+}
+member {
+  id: 0x031126d0
+  name: "slab_cache"
+  type_id: 0x2efd5036
+  offset: 192
+}
+member {
+  id: 0xc86ce75b
+  name: "slab_flags"
+  type_id: 0x4466c59f
+  offset: 2720
+}
+member {
+  id: 0xa036e912
+  name: "slab_list"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0x24847519
+  name: "slab_name"
+  type_id: 0x0483e6f8
+  offset: 128
+}
+member {
+  id: 0x525e95fd
+  name: "slabs"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x08c0d60a
+  name: "slack_hold_time"
+  type_id: 0x4585663f
+  offset: 832
+}
+member {
+  id: 0x837b6426
+  name: "slack_start_time"
+  type_id: 0x33756485
+  offset: 704
+}
+member {
+  id: 0xcf13e631
+  name: "slave"
+  type_id: 0x0258f96e
+  offset: 64
+}
+member {
+  id: 0xcf2fae7d
+  name: "slave"
+  type_id: 0x3e10b518
+  offset: 64
+}
+member {
+  id: 0xcf7ccab0
+  name: "slave"
+  type_id: 0x6d7f5ff6
+  offset: 7672
+}
+member {
+  id: 0xcfbcfdf1
+  name: "slave_abort"
+  type_id: 0x2dfdd846
+  offset: 11328
+}
+member {
+  id: 0x937248c8
+  name: "slave_alloc"
+  type_id: 0x2fa7d046
+  offset: 960
+}
+member {
+  id: 0x1965fbe0
+  name: "slave_bdevs"
+  type_id: 0xd3c80119
+  offset: 3584
+}
+member {
+  id: 0x1fdc7100
+  name: "slave_changelink"
+  type_id: 0x2ee8e003
+  offset: 1280
+}
+member {
+  id: 0xfc783a92
+  name: "slave_configure"
+  type_id: 0x2fa7d046
+  offset: 1024
+}
+member {
+  id: 0xcadd48b8
+  name: "slave_destroy"
+  type_id: 0x0ce1fce9
+  offset: 1088
+}
+member {
+  id: 0xc3fe2706
+  name: "slave_dir"
+  type_id: 0x23f09c34
+  offset: 3520
+}
+member {
+  id: 0x05dac90b
+  name: "slave_maxtype"
+  type_id: 0x4585663f
+  offset: 1152
+}
+member {
+  id: 0x9575c62e
+  name: "slave_policy"
+  type_id: 0x3a40fc42
+  offset: 1216
+}
+member {
+  id: 0xdb9e688f
+  name: "sleep"
+  type_id: 0x03913382
+  offset: 2304
+}
+member {
+  id: 0xdb9e68f3
+  name: "sleep"
+  type_id: 0x03913382
+  offset: 448
+}
+member {
+  id: 0xe803a131
+  name: "sleep_max"
+  type_id: 0x92233392
+  offset: 448
+}
+member {
+  id: 0xf832d515
+  name: "sleep_start"
+  type_id: 0x92233392
+  offset: 384
+}
+member {
+  id: 0x3485089e
+  name: "sleep_state"
+  type_id: 0x3a47ea7a
+  offset: 192
+}
+member {
+  id: 0x385c08ea
+  name: "sleepable"
+  type_id: 0x6d7f5ff6
+  offset: 1248
+}
+member {
+  id: 0x47667eac
+  name: "sleeping"
+  type_id: 0x6720d32f
+  offset: 896
+}
+member {
+  id: 0x34f92049
+  name: "slice_act_cb_qp_offset"
+  type_id: 0x901eaf6a
+  offset: 224
+}
+member {
+  id: 0x652db7dc
+  name: "slice_act_cr_qp_offset"
+  type_id: 0x901eaf6a
+  offset: 232
+}
+member {
+  id: 0xe2e45a27
+  name: "slice_act_y_qp_offset"
+  type_id: 0x901eaf6a
+  offset: 216
+}
+member {
+  id: 0x171f4543
+  name: "slice_alpha_c0_offset_div2"
+  type_id: 0x901eaf6a
+  offset: 120
+}
+member {
+  id: 0x6a04877b
+  name: "slice_beta_offset_div2"
+  type_id: 0x901eaf6a
+  offset: 240
+}
+member {
+  id: 0x6a048cae
+  name: "slice_beta_offset_div2"
+  type_id: 0x901eaf6a
+  offset: 128
+}
+member {
+  id: 0x643f0852
+  name: "slice_bpg_offset"
+  type_id: 0x914dbfdc
+  offset: 928
+}
+member {
+  id: 0x64dbc48f
+  name: "slice_bpg_offset"
+  type_id: 0x7584e7da
+  offset: 240
+}
+member {
+  id: 0x4e779cfa
+  name: "slice_cb_qp_offset"
+  type_id: 0x901eaf6a
+  offset: 200
+}
+member {
+  id: 0x1942199a
+  name: "slice_chunk_size"
+  type_id: 0x914dbfdc
+  offset: 976
+}
+member {
+  id: 0xf3f1fd90
+  name: "slice_count"
+  type_id: 0x295c7202
+  offset: 24
+}
+member {
+  id: 0x4ee6a655
+  name: "slice_cr_qp_offset"
+  type_id: 0x901eaf6a
+  offset: 208
+}
+member {
+  id: 0x7f96cfb9
+  name: "slice_group_change_cycle"
+  type_id: 0xe62ebf07
+  offset: 4384
+}
+member {
+  id: 0xf679b59e
+  name: "slice_height"
+  type_id: 0x7584e7da
+  offset: 80
+}
+member {
+  id: 0xf69d749b
+  name: "slice_height"
+  type_id: 0x914dbfdc
+  offset: 48
+}
+member {
+  id: 0x4b599beb
+  name: "slice_max"
+  type_id: 0x92233392
+  offset: 832
+}
+member {
+  id: 0x7621ff12
+  name: "slice_pic_order_cnt"
+  type_id: 0x0faae5b1
+  offset: 128
+}
+member {
+  id: 0x28c17086
+  name: "slice_qp_delta"
+  type_id: 0x901eaf6a
+  offset: 96
+}
+member {
+  id: 0x28c171cc
+  name: "slice_qp_delta"
+  type_id: 0x901eaf6a
+  offset: 192
+}
+member {
+  id: 0x5e1be640
+  name: "slice_qs_delta"
+  type_id: 0x901eaf6a
+  offset: 104
+}
+member {
+  id: 0xfcf71622
+  name: "slice_segment_addr"
+  type_id: 0xe62ebf07
+  offset: 288
+}
+member {
+  id: 0xe9ee8942
+  name: "slice_tc_offset_div2"
+  type_id: 0x901eaf6a
+  offset: 248
+}
+member {
+  id: 0xf6f9e2db
+  name: "slice_type"
+  type_id: 0xb3e7bac9
+  offset: 112
+}
+member {
+  id: 0xf6f9eaf7
+  name: "slice_type"
+  type_id: 0xb3e7bac9
+  offset: 64
+}
+member {
+  id: 0x7f57f5f5
+  name: "slice_width"
+  type_id: 0x7584e7da
+  offset: 96
+}
+member {
+  id: 0x7fb33815
+  name: "slice_width"
+  type_id: 0x914dbfdc
+  offset: 32
+}
+member {
+  id: 0xab61cd86
+  name: "sliced"
+  type_id: 0x92dfa217
+}
+member {
+  id: 0x4d25e769
+  name: "slock"
+  type_id: 0xf313e71a
+}
+member {
+  id: 0xe695117c
+  name: "slope"
+  type_id: 0x6720d32f
+  offset: 512
+}
+member {
+  id: 0x68304f23
+  name: "slot"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x688c706c
+  name: "slot"
+  type_id: 0x5a1fb439
+  offset: 10816
+}
+member {
+  id: 0x6893e853
+  name: "slot"
+  type_id: 0x4585663f
+  offset: 384
+}
+member {
+  id: 0x68b14895
+  name: "slot"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x68d274ac
+  name: "slot"
+  type_id: 0x04199996
+  offset: 384
+}
+member {
+  id: 0x68e48e5e
+  name: "slot"
+  type_id: 0x32eb3b69
+  offset: 128
+}
+member {
+  id: 0x1d177ebe
+  name: "slot_count"
+  type_id: 0x74d29cf1
+  offset: 192
+}
+member {
+  id: 0xd35da71e
+  name: "slot_hashtable"
+  type_id: 0x1d33485a
+  offset: 1472
+}
+member {
+  id: 0x05d0520e
+  name: "slot_id"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0x05d0524f
+  name: "slot_id"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x05d05741
+  name: "slot_id"
+  type_id: 0x6720d32f
+  offset: 11968
+}
+member {
+  id: 0x05d05b8d
+  name: "slot_id"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x5d1aeaf9
+  name: "slot_idx"
+  type_id: 0x4585663f
+  offset: 1056
+}
+member {
+  id: 0xc807bb4d
+  name: "slot_list"
+  type_id: 0xd3c80119
+  offset: 64
+}
+member {
+  id: 0x83fd0739
+  name: "slot_map"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0xcfd6d499
+  name: "slot_refs"
+  type_id: 0x74d29cf1
+}
+member {
+  id: 0xb4039e16
+  name: "slot_reset"
+  type_id: 0x178c0a08
+  offset: 128
+}
+member {
+  id: 0x3ea9f0a3
+  name: "slot_type"
+  type_id: 0xee699492
+  offset: 960
+}
+member {
+  id: 0x89fa1767
+  name: "slotno"
+  type_id: 0x4585663f
+  offset: 12064
+}
+member {
+  id: 0x4f4ccd19
+  name: "slots"
+  type_id: 0x039cec64
+  offset: 1600
+}
+member {
+  id: 0x4f7adbd4
+  name: "slots"
+  type_id: 0x35845edb
+  offset: 320
+}
+member {
+  id: 0x4f7b290c
+  name: "slots"
+  type_id: 0x3475a06a
+  offset: 64
+}
+member {
+  id: 0x4f7c1d3a
+  name: "slots"
+  type_id: 0x334c0532
+  offset: 576
+}
+member {
+  id: 0x4f8ee0c6
+  name: "slots"
+  type_id: 0xc1b820cc
+  offset: 256
+}
+member {
+  id: 0x4f9c9b54
+  name: "slots"
+  type_id: 0xd3c80119
+  offset: 512
+}
+member {
+  id: 0x4fe96ca2
+  name: "slots"
+  type_id: 0xa634ef38
+}
+member {
+  id: 0x59597675
+  name: "slots_arch_lock"
+  type_id: 0xa7c362b0
+  offset: 448
+}
+member {
+  id: 0xdd8a193d
+  name: "slots_lock"
+  type_id: 0x8d536703
+  offset: 32768
+}
+member {
+  id: 0xdda08f2f
+  name: "slots_lock"
+  type_id: 0xa7c362b0
+  offset: 64
+}
+member {
+  id: 0x3e932eb1
+  name: "slow_charger_loop"
+  type_id: 0x6d7f5ff6
+  offset: 34192
+}
+member {
+  id: 0x208466ce
+  name: "slow_gro"
+  type_id: 0xb3e7bac9
+  offset: 32
+  bitsize: 1
+}
+member {
+  id: 0x41b9f20b
+  name: "sls_i_badcheck"
+  type_id: 0x7e8f5c14
+  offset: 544
+}
+member {
+  id: 0x9b5520fa
+  name: "sls_i_compressed"
+  type_id: 0x7e8f5c14
+  offset: 416
+}
+member {
+  id: 0x814d1d86
+  name: "sls_i_error"
+  type_id: 0x7e8f5c14
+  offset: 448
+}
+member {
+  id: 0x21781d41
+  name: "sls_i_runt"
+  type_id: 0x7e8f5c14
+  offset: 512
+}
+member {
+  id: 0xd08c7061
+  name: "sls_i_tossed"
+  type_id: 0x7e8f5c14
+  offset: 480
+}
+member {
+  id: 0x92bee8df
+  name: "sls_i_uncompressed"
+  type_id: 0x7e8f5c14
+  offset: 384
+}
+member {
+  id: 0xeaa71f54
+  name: "sls_o_compressed"
+  type_id: 0x7e8f5c14
+  offset: 288
+}
+member {
+  id: 0x8dbaabdd
+  name: "sls_o_misses"
+  type_id: 0x7e8f5c14
+  offset: 352
+}
+member {
+  id: 0xb2f66e5e
+  name: "sls_o_nontcp"
+  type_id: 0x7e8f5c14
+  offset: 192
+}
+member {
+  id: 0x6abcc473
+  name: "sls_o_searches"
+  type_id: 0x7e8f5c14
+  offset: 320
+}
+member {
+  id: 0x20397abd
+  name: "sls_o_tcp"
+  type_id: 0x7e8f5c14
+  offset: 224
+}
+member {
+  id: 0x21cc5494
+  name: "sls_o_uncompressed"
+  type_id: 0x7e8f5c14
+  offset: 256
+}
+member {
+  id: 0x2f686c5b
+  name: "sm_ref"
+  type_id: 0x74d29cf1
+  offset: 640
+}
+member {
+  id: 0x89e8c72a
+  name: "small_ops"
+  type_id: 0x32aedf85
+  offset: 640
+}
+member {
+  id: 0xc16667bc
+  name: "small_streams_pool"
+  type_id: 0x2d66740a
+  offset: 20288
+}
+member {
+  id: 0x4c222494
+  name: "small_win"
+  type_id: 0xd3c80119
+  offset: 64
+}
+member {
+  id: 0x81e6cdff
+  name: "smap"
+  type_id: 0x1f97e1e4
+}
+member {
+  id: 0xf5e8f084
+  name: "smark"
+  type_id: 0x43a4c863
+  offset: 320
+}
+member {
+  id: 0x06cc0cc1
+  name: "smax_value"
+  type_id: 0x2e0f9112
+  offset: 448
+}
+member {
+  id: 0x20b3b280
+  name: "smbus_xfer"
+  type_id: 0x2f247013
+  offset: 128
+}
+member {
+  id: 0xcaf81962
+  name: "smbus_xfer_atomic"
+  type_id: 0x2f247013
+  offset: 192
+}
+member {
+  id: 0x0d96cd21
+  name: "smc_hash"
+  type_id: 0x3c4ed50c
+}
+member {
+  id: 0xe4cebf61
+  name: "smccc_feat"
+  type_id: 0x2c432ef9
+  offset: 3200
+}
+member {
+  id: 0x0697a2b0
+  name: "smem_len"
+  type_id: 0xe62ebf07
+  offset: 192
+}
+member {
+  id: 0x76097e94
+  name: "smem_start"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x7b7d4edc
+  name: "smin_value"
+  type_id: 0x2e0f9112
+  offset: 384
+}
+member {
+  id: 0x0c1eb745
+  name: "smp"
+  type_id: 0x0355dc72
+  offset: 2880
+}
+member {
+  id: 0x1b3970e4
+  name: "smp_bredr_data"
+  type_id: 0x18bd6530
+  offset: 27008
+}
+member {
+  id: 0x6188e4ee
+  name: "smp_data"
+  type_id: 0x18bd6530
+  offset: 26944
+}
+member {
+  id: 0x722447d2
+  name: "sname"
+  type_id: 0x3e10b518
+  offset: 128
+}
+member {
+  id: 0x72ff76f1
+  name: "sname"
+  type_id: 0xe52a3418
+  offset: 416
+}
+member {
+  id: 0x0cc029ea
+  name: "snapshot"
+  type_id: 0x6d7f5ff6
+  offset: 34304
+}
+member {
+  id: 0xf5a15be5
+  name: "snapshot_aux"
+  type_id: 0x228d4605
+  offset: 1984
+}
+member {
+  id: 0xae699d06
+  name: "snd"
+  type_id: 0xb914bfab
+  offset: 3648
+}
+member {
+  id: 0x0f534fe3
+  name: "snd_backlog"
+  type_id: 0x914dbfdc
+  offset: 8640
+}
+member {
+  id: 0x0c497c99
+  name: "snd_card"
+  type_id: 0x33f8b54b
+  offset: 576
+}
+member {
+  id: 0xc2ae7a6f
+  name: "snd_interval_us"
+  type_id: 0xc9082b19
+  offset: 256
+}
+member {
+  id: 0x05fda169
+  name: "snd_portid"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x4317775f
+  name: "snd_seq"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xac63a41d
+  name: "snd_win"
+  type_id: 0x914dbfdc
+  offset: 7808
+}
+member {
+  id: 0xb368ac36
+  name: "sndbit"
+  type_id: 0xa562355d
+  offset: 1216
+}
+member {
+  id: 0xb374da8b
+  name: "sndbit"
+  type_id: 0xb914bfab
+  offset: 1408
+}
+member {
+  id: 0x3c857f08
+  name: "sndbuf_expand"
+  type_id: 0x1a3a7059
+  offset: 576
+}
+member {
+  id: 0x8f0cab7f
+  name: "sniff_max_interval"
+  type_id: 0xe8034002
+  offset: 7120
+}
+member {
+  id: 0xc0033c9d
+  name: "sniff_min_interval"
+  type_id: 0xe8034002
+  offset: 7104
+}
+member {
+  id: 0x8953a7d6
+  name: "snk_pdo"
+  type_id: 0x5a8c92f7
+  offset: 9184
+}
+member {
+  id: 0x85509fb3
+  name: "snk_vdo"
+  type_id: 0x93e3596e
+  offset: 9664
+}
+member {
+  id: 0xf23f9fe4
+  name: "snk_vdo_v1"
+  type_id: 0x93e3596e
+  offset: 9440
+}
+member {
+  id: 0x89903be4
+  name: "snt_unacked"
+  type_id: 0x914dbfdc
+  offset: 7792
+}
+member {
+  id: 0xe9bb958d
+  name: "so_timestamping"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x3de92190
+  name: "soc_dev_num"
+  type_id: 0x6720d32f
+  offset: 7360
+}
+member {
+  id: 0x66da3ddb
+  name: "soc_id"
+  type_id: 0x0baa70a7
+  offset: 64
+}
+member {
+  id: 0x66ef8354
+  name: "soc_id"
+  type_id: 0x3e10b518
+  offset: 256
+}
+member {
+  id: 0x7614ca61
+  name: "sock"
+  type_id: 0x106029c6
+}
+member {
+  id: 0x7619e720
+  name: "sock"
+  type_id: 0x1d44326e
+  offset: 2624
+}
+member {
+  id: 0x06365087
+  name: "sock_is_readable"
+  type_id: 0x34ed6c40
+  offset: 1856
+}
+member {
+  id: 0xc3b90142
+  name: "sockaddr"
+  type_id: 0x31d250f7
+  offset: 5824
+}
+member {
+  id: 0x092ae301
+  name: "sockaddr_len"
+  type_id: 0xf435685e
+  offset: 5888
+}
+member {
+  id: 0x4f73c01d
+  name: "socket_pressure"
+  type_id: 0x33756485
+  offset: 14016
+}
+member {
+  id: 0x0bf9b84f
+  name: "socketcall"
+  type_id: 0x3aa6e17c
+}
+member {
+  id: 0x97f6d42d
+  name: "socketpair"
+  type_id: 0x2ce663d9
+  offset: 320
+}
+member {
+  id: 0xaed5919b
+  name: "sockets_allocated"
+  type_id: 0x0baf61c0
+  offset: 2176
+}
+member {
+  id: 0xd0f5b33e
+  name: "socks"
+  type_id: 0xc368826b
+  offset: 384
+}
+member {
+  id: 0x44d1ce8f
+  name: "soft_add_expires_seconds"
+  type_id: 0xedf277ba
+  offset: 256
+}
+member {
+  id: 0xf4fdc11a
+  name: "soft_byte_limit"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x275ed516
+  name: "soft_limit"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0x27a4adf4
+  name: "soft_limit"
+  type_id: 0x33756485
+  offset: 8576
+}
+member {
+  id: 0x9a6205f4
+  name: "soft_packet_limit"
+  type_id: 0xedf277ba
+  offset: 128
+}
+member {
+  id: 0xa832ba59
+  name: "soft_reset"
+  type_id: 0x2ee76b64
+  offset: 1856
+}
+member {
+  id: 0xd783af78
+  name: "soft_reset"
+  type_id: 0x4585663f
+  offset: 2791
+  bitsize: 1
+}
+member {
+  id: 0xafe26f7e
+  name: "soft_start"
+  type_id: 0x4585663f
+  offset: 1732
+  bitsize: 1
+}
+member {
+  id: 0x168567d0
+  name: "soft_start_mask"
+  type_id: 0x4585663f
+  offset: 1952
+}
+member {
+  id: 0xd3b8a8ac
+  name: "soft_start_reg"
+  type_id: 0x4585663f
+  offset: 1920
+}
+member {
+  id: 0xf21ea0f4
+  name: "soft_start_val_on"
+  type_id: 0x4585663f
+  offset: 1984
+}
+member {
+  id: 0x6cbf6eaa
+  name: "soft_unbind"
+  type_id: 0x4585663f
+  offset: 2371
+  bitsize: 1
+}
+member {
+  id: 0xd90015a1
+  name: "soft_use_expires_seconds"
+  type_id: 0xedf277ba
+  offset: 384
+}
+member {
+  id: 0xaa82e2a6
+  name: "softirq_activated"
+  type_id: 0x4585663f
+  offset: 131
+  bitsize: 1
+}
+member {
+  id: 0xefe07c73
+  name: "softirq_expires_next"
+  type_id: 0x11c404ba
+  offset: 384
+}
+member {
+  id: 0x4639302c
+  name: "softirq_next_timer"
+  type_id: 0x39cdf888
+  offset: 448
+}
+member {
+  id: 0xcdab136f
+  name: "softirqs"
+  type_id: 0x668b7d21
+  offset: 64
+}
+member {
+  id: 0xac9250b6
+  name: "software_iftypes"
+  type_id: 0x914dbfdc
+  offset: 736
+}
+member {
+  id: 0xf508a5b8
+  name: "solicit"
+  type_id: 0x0e0dc9f3
+  offset: 64
+}
+member {
+  id: 0xff3c8659
+  name: "sonet_oc12_short_reach"
+  type_id: 0x295c7202
+  offset: 36
+  bitsize: 1
+}
+member {
+  id: 0x1be3ebb4
+  name: "sonet_oc12_smf_intermediate_reach"
+  type_id: 0x295c7202
+  offset: 37
+  bitsize: 1
+}
+member {
+  id: 0xfdc46c1e
+  name: "sonet_oc12_smf_long_reach"
+  type_id: 0x295c7202
+  offset: 38
+  bitsize: 1
+}
+member {
+  id: 0xb8c74403
+  name: "sonet_oc192_short_reach"
+  type_id: 0x295c7202
+  offset: 45
+  bitsize: 1
+}
+member {
+  id: 0x2a64de0d
+  name: "sonet_oc3_short_reach"
+  type_id: 0x295c7202
+  offset: 32
+  bitsize: 1
+}
+member {
+  id: 0x5b34f105
+  name: "sonet_oc3_smf_intermediate_reach"
+  type_id: 0x295c7202
+  offset: 33
+  bitsize: 1
+}
+member {
+  id: 0x968a3ee3
+  name: "sonet_oc3_smf_long_reach"
+  type_id: 0x295c7202
+  offset: 34
+  bitsize: 1
+}
+member {
+  id: 0x42241c18
+  name: "sonet_oc48_intermediate_reach"
+  type_id: 0x295c7202
+  offset: 41
+  bitsize: 1
+}
+member {
+  id: 0xe04d8d8d
+  name: "sonet_oc48_long_reach"
+  type_id: 0x295c7202
+  offset: 42
+  bitsize: 1
+}
+member {
+  id: 0x736f4c40
+  name: "sonet_oc48_short_reach"
+  type_id: 0x295c7202
+  offset: 40
+  bitsize: 1
+}
+member {
+  id: 0xc7db7b1b
+  name: "sonet_reach_bit1"
+  type_id: 0x295c7202
+  offset: 44
+  bitsize: 1
+}
+member {
+  id: 0x061443f2
+  name: "sonet_reach_bit2"
+  type_id: 0x295c7202
+  offset: 43
+  bitsize: 1
+}
+member {
+  id: 0x24c2e3b6
+  name: "sopass"
+  type_id: 0x8d58bd1a
+  offset: 96
+}
+member {
+  id: 0xd707c4f8
+  name: "source"
+  type_id: 0x295c7202
+  offset: 672
+}
+member {
+  id: 0xd71086bc
+  name: "source"
+  type_id: 0x3e10b518
+  offset: 128
+}
+member {
+  id: 0xd7108861
+  name: "source"
+  type_id: 0x3e10b518
+  offset: 1024
+}
+member {
+  id: 0xd7108b9f
+  name: "source"
+  type_id: 0x3e10b518
+  offset: 64
+}
+member {
+  id: 0xd7300c6f
+  name: "source"
+  type_id: 0x1e9745d3
+  offset: 64
+}
+member {
+  id: 0xd7325976
+  name: "source"
+  type_id: 0x1cc6bdca
+}
+member {
+  id: 0xd75b1b2c
+  name: "source"
+  type_id: 0x7584e7da
+}
+member {
+  id: 0xd7e21c4a
+  name: "source"
+  type_id: 0xcc87604a
+  offset: 64
+}
+member {
+  id: 0x35ef3ba9
+  name: "source_addr_mode"
+  type_id: 0x914dbfdc
+  offset: 14
+  bitsize: 2
+}
+member {
+  id: 0xab725605
+  name: "source_caps"
+  type_id: 0x5a8c92f7
+  offset: 8416
+}
+member {
+  id: 0x3c2dda48
+  name: "source_list"
+  type_id: 0xd3c80119
+  offset: 7616
+}
+member {
+  id: 0x3fcc657f
+  name: "source_pad"
+  type_id: 0x595a11b6
+  offset: 128
+}
+member {
+  id: 0x26183ba3
+  name: "source_port_identity"
+  type_id: 0xfc233743
+  offset: 160
+}
+member {
+  id: 0x020e349b
+  name: "source_priv"
+  type_id: 0x18bd6530
+  offset: 4864
+}
+member {
+  id: 0x7f0d6cd1
+  name: "source_type"
+  type_id: 0x914dbfdc
+}
+member {
+  id: 0xf720feb9
+  name: "sources"
+  type_id: 0x2bb46c25
+  offset: 128
+}
+member {
+  id: 0xce7f1e98
+  name: "sp"
+  type_id: 0x33756485
+  offset: 704
+}
+member {
+  id: 0xcea19932
+  name: "sp"
+  type_id: 0xedf277ba
+  offset: 1984
+}
+member {
+  id: 0xcede4876
+  name: "sp"
+  type_id: 0x92233392
+  offset: 1984
+}
+member {
+  id: 0xa3036544
+  name: "sp_array"
+  type_id: 0x2e18f543
+}
+member {
+  id: 0xb9383f7b
+  name: "sp_buffers"
+  type_id: 0x0cbf60eb
+  offset: 128
+}
+member {
+  id: 0xa9831634
+  name: "sp_dma"
+  type_id: 0xe02e14d6
+  offset: 64
+}
+member {
+  id: 0x4b5ea168
+  name: "space_available"
+  type_id: 0x2dace37d
+  offset: 320
+}
+member {
+  id: 0xcbeff206
+  name: "spacing"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0x97b2d56d
+  name: "span"
+  type_id: 0xc8e4d7d1
+  offset: 2496
+}
+member {
+  id: 0x97e3f72a
+  name: "span"
+  type_id: 0x99caa0ae
+  offset: 192
+}
+member {
+  id: 0xfb3e84c0
+  name: "span_seqlock"
+  type_id: 0x000ff4a8
+  offset: 1408
+}
+member {
+  id: 0xaaa96e27
+  name: "span_weight"
+  type_id: 0x4585663f
+  offset: 2304
+}
+member {
+  id: 0x80fefd42
+  name: "spanned_pages"
+  type_id: 0x33756485
+  offset: 1024
+}
+member {
+  id: 0x420573cb
+  name: "spare"
+  type_id: 0x3a33db75
+  offset: 64
+}
+member {
+  id: 0x42074e89
+  name: "spare"
+  type_id: 0x380a78f0
+}
+member {
+  id: 0x8b74af20
+  name: "spare_in"
+  type_id: 0xe62ebf07
+  offset: 832
+}
+member {
+  id: 0x946d8cd5
+  name: "spare_out"
+  type_id: 0xe62ebf07
+  offset: 1216
+}
+member {
+  id: 0x8831900a
+  name: "spawns"
+  type_id: 0x0356cddf
+}
+member {
+  id: 0x0a903c3e
+  name: "spc_timelimit"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xe615e654
+  name: "spc_warnlimit"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x8f6f4486
+  name: "spd"
+  type_id: 0x7c080f97
+}
+member {
+  id: 0x0c2aa8a0
+  name: "spec"
+  type_id: 0xedf277ba
+  offset: 152
+  bitsize: 2
+}
+member {
+  id: 0xdaff4793
+  name: "special_vec"
+  type_id: 0x348515c6
+}
+member {
+  id: 0x5f3a1a61
+  name: "specified"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x5f7e39e7
+  name: "specified"
+  type_id: 0x6d7f5ff6
+  offset: 256
+}
+member {
+  id: 0x5f82076d
+  name: "specified"
+  type_id: 0x914dbfdc
+  offset: 48
+}
+member {
+  id: 0x5c1dbc47
+  name: "speculative"
+  type_id: 0x6d7f5ff6
+  offset: 704
+}
+member {
+  id: 0xa002871a
+  name: "speed"
+  type_id: 0xe8034002
+  offset: 96
+}
+member {
+  id: 0xa00cae5d
+  name: "speed"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xa08da7ed
+  name: "speed"
+  type_id: 0x6720d32f
+  offset: 1536
+}
+member {
+  id: 0xa08da9d3
+  name: "speed"
+  type_id: 0x6720d32f
+  offset: 288
+}
+member {
+  id: 0xa08dad33
+  name: "speed"
+  type_id: 0x6720d32f
+  offset: 9408
+}
+member {
+  id: 0xa08dada1
+  name: "speed"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0xa0af0223
+  name: "speed"
+  type_id: 0x4585663f
+  offset: 1248
+}
+member {
+  id: 0xa0af0fa0
+  name: "speed"
+  type_id: 0x4585663f
+  offset: 1024
+}
+member {
+  id: 0xa0b8ea66
+  name: "speed"
+  type_id: 0x52658204
+  offset: 704
+}
+member {
+  id: 0xa0b8eb7f
+  name: "speed"
+  type_id: 0x52658204
+  offset: 224
+}
+member {
+  id: 0xa0e5273c
+  name: "speed"
+  type_id: 0x0faae5b1
+}
+member {
+  id: 0x93cedaae
+  name: "speed_hi"
+  type_id: 0xe8034002
+  offset: 224
+}
+member {
+  id: 0x5ba71926
+  name: "speed_hz"
+  type_id: 0xc9082b19
+  offset: 704
+}
+member {
+  id: 0xd0391586
+  name: "spi"
+  type_id: 0x12c0ba43
+  offset: 128
+}
+member {
+  id: 0xd0391c44
+  name: "spi"
+  type_id: 0x12c0ba43
+}
+member {
+  id: 0xd0c9a391
+  name: "spi"
+  type_id: 0xe276adef
+  offset: 128
+}
+member {
+  id: 0xd0c9aaf8
+  name: "spi"
+  type_id: 0xe276adef
+  offset: 256
+}
+member {
+  id: 0xd0c9aeb2
+  name: "spi"
+  type_id: 0xe276adef
+  offset: 64
+}
+member {
+  id: 0x7f6db6ac
+  name: "spi_async"
+  type_id: 0x3a3eb2f9
+  offset: 384
+}
+member {
+  id: 0xde006f81
+  name: "spi_sync"
+  type_id: 0x3a3eb2f9
+  offset: 256
+}
+member {
+  id: 0x0e0edcb3
+  name: "spi_sync_immediate"
+  type_id: 0x3a3eb2f9
+  offset: 320
+}
+member {
+  id: 0xb4331c8b
+  name: "spidrv"
+  type_id: 0xe0860905
+}
+member {
+  id: 0x835d74e5
+  name: "spilled_ptr"
+  type_id: 0x7f317daf
+}
+member {
+  id: 0x4176cdea
+  name: "spin_lock_off"
+  type_id: 0x6720d32f
+  offset: 416
+}
+member {
+  id: 0x36ede007
+  name: "spin_loop"
+  type_id: 0x174a7c6e
+  offset: 1920
+}
+member {
+  id: 0x9a7d3066
+  name: "spinlock"
+  type_id: 0xf313e71a
+}
+member {
+  id: 0x9a7d37a1
+  name: "spinlock"
+  type_id: 0xf313e71a
+  offset: 320
+}
+member {
+  id: 0xc52ffbcf
+  name: "spinlock_flags"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xde92dea2
+  name: "spis"
+  type_id: 0x1a1575dd
+  offset: 448
+}
+member {
+  id: 0xe3c602fa
+  name: "splen"
+  type_id: 0xb3e7bac9
+  offset: 272
+}
+member {
+  id: 0x27c6cecf
+  name: "splice_fd_in"
+  type_id: 0x0faae5b1
+}
+member {
+  id: 0xed24c146
+  name: "splice_flags"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xc087b526
+  name: "splice_off_in"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0xf414050e
+  name: "splice_pipe"
+  type_id: 0x0b3a3706
+  offset: 22400
+}
+member {
+  id: 0x226c6114
+  name: "splice_read"
+  type_id: 0x0ea330a0
+  offset: 704
+}
+member {
+  id: 0x226c63e3
+  name: "splice_read"
+  type_id: 0x0ea9795d
+  offset: 1344
+}
+member {
+  id: 0x226ce87c
+  name: "splice_read"
+  type_id: 0x0e21dd6f
+  offset: 1600
+}
+member {
+  id: 0xbb767601
+  name: "splice_write"
+  type_id: 0x0f07cf2c
+  offset: 1536
+}
+member {
+  id: 0x509ad375
+  name: "split"
+  type_id: 0x295c7202
+  bitsize: 1
+}
+member {
+  id: 0xc46b8e03
+  name: "split_queue"
+  type_id: 0xd3c80119
+  offset: 64
+}
+member {
+  id: 0x164e13b4
+  name: "split_queue_len"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0xa81415fe
+  name: "split_queue_lock"
+  type_id: 0xf313e71a
+}
+member {
+  id: 0xd69a643e
+  name: "split_subport_number"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0xd3b050e2
+  name: "splits"
+  type_id: 0x0baa70a7
+  offset: 800
+}
+member {
+  id: 0x1d7e2b51
+  name: "splittable"
+  type_id: 0x295c7202
+  offset: 1
+  bitsize: 1
+}
+member {
+  id: 0xbc0a18c4
+  name: "spm_lvl"
+  type_id: 0xa69e469b
+  offset: 736
+}
+member {
+  id: 0x64aca0d0
+  name: "spoofchk"
+  type_id: 0xe62ebf07
+  offset: 352
+}
+member {
+  id: 0xcf58d11f
+  name: "sport"
+  type_id: 0x7584e7da
+  offset: 16
+}
+member {
+  id: 0xcf58db78
+  name: "sport"
+  type_id: 0x7584e7da
+  offset: 288
+}
+member {
+  id: 0xcfb68690
+  name: "sport"
+  type_id: 0x9bd401b6
+  offset: 400
+}
+member {
+  id: 0xb49abc53
+  name: "sport_mask"
+  type_id: 0x7584e7da
+  offset: 304
+}
+member {
+  id: 0xe2c91fc1
+  name: "sport_range"
+  type_id: 0x3e79e71f
+  offset: 1024
+}
+member {
+  id: 0xdcd67875
+  name: "sprite"
+  type_id: 0x9a93ffb7
+  offset: 4416
+}
+member {
+  id: 0x3139536f
+  name: "sps_max_dec_pic_buffering_minus1"
+  type_id: 0xb3e7bac9
+  offset: 72
+}
+member {
+  id: 0x03388737
+  name: "sps_max_latency_increase_plus1"
+  type_id: 0xb3e7bac9
+  offset: 88
+}
+member {
+  id: 0xd371d62d
+  name: "sps_max_num_reorder_pics"
+  type_id: 0xb3e7bac9
+  offset: 80
+}
+member {
+  id: 0x1c225574
+  name: "sps_max_sub_layers_minus1"
+  type_id: 0xb3e7bac9
+  offset: 200
+}
+member {
+  id: 0x2a5b82d6
+  name: "spsr_abt"
+  type_id: 0x92233392
+  offset: 2176
+}
+member {
+  id: 0x0763cc89
+  name: "spsr_fiq"
+  type_id: 0x92233392
+  offset: 2368
+}
+member {
+  id: 0xd5f3b549
+  name: "spsr_irq"
+  type_id: 0x92233392
+  offset: 2304
+}
+member {
+  id: 0xebeb5efe
+  name: "spsr_und"
+  type_id: 0x92233392
+  offset: 2240
+}
+member {
+  id: 0x7d94e57d
+  name: "spurious_oc"
+  type_id: 0x4585663f
+  offset: 5615
+  bitsize: 1
+}
+member {
+  id: 0x356e2448
+  name: "spy_address"
+  type_id: 0xcac5c418
+  offset: 32
+}
+member {
+  id: 0x1db6f440
+  name: "spy_data"
+  type_id: 0x26bbdddb
+}
+member {
+  id: 0xe11e117e
+  name: "spy_number"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xdec149f0
+  name: "spy_stat"
+  type_id: 0xc3a2e295
+  offset: 416
+}
+member {
+  id: 0xc0f7adc5
+  name: "spy_thr_high"
+  type_id: 0x9e71aa1e
+  offset: 704
+}
+member {
+  id: 0x3dada5f0
+  name: "spy_thr_low"
+  type_id: 0x9e71aa1e
+  offset: 672
+}
+member {
+  id: 0x164b8f7a
+  name: "spy_thr_under"
+  type_id: 0xfe72eb90
+  offset: 736
+}
+member {
+  id: 0x0f618a01
+  name: "sq"
+  type_id: 0x6d8d3492
+}
+member {
+  id: 0x68f1e810
+  name: "sq_array"
+  type_id: 0x38d23361
+  offset: 384
+}
+member {
+  id: 0x0767645e
+  name: "sq_cpu"
+  type_id: 0x6720d32f
+  offset: 864
+}
+member {
+  id: 0xa442a679
+  name: "sq_creds"
+  type_id: 0x30650ba6
+  offset: 3264
+}
+member {
+  id: 0xe399ddfe
+  name: "sq_data"
+  type_id: 0x106a082a
+  offset: 3328
+}
+member {
+  id: 0x367f5e32
+  name: "sq_dropped"
+  type_id: 0xc9082b19
+  offset: 2176
+}
+member {
+  id: 0x80910671
+  name: "sq_entries"
+  type_id: 0x4585663f
+  offset: 544
+}
+member {
+  id: 0x9cf97af5
+  name: "sq_flags"
+  type_id: 0x74d29cf1
+  offset: 2208
+}
+member {
+  id: 0x31abbe13
+  name: "sq_lock"
+  type_id: 0xf313e71a
+  offset: 608
+}
+member {
+  id: 0x8a94bafb
+  name: "sq_mutex"
+  type_id: 0xa7c362b0
+  offset: 768
+}
+member {
+  id: 0x85579e1c
+  name: "sq_ring_entries"
+  type_id: 0xc9082b19
+  offset: 2112
+}
+member {
+  id: 0x90914bf4
+  name: "sq_ring_mask"
+  type_id: 0xc9082b19
+  offset: 2048
+}
+member {
+  id: 0x84062406
+  name: "sq_sqes"
+  type_id: 0x21e0c6ee
+  offset: 448
+}
+member {
+  id: 0xf0ff45b9
+  name: "sq_tail_slot"
+  type_id: 0xc9082b19
+  offset: 576
+}
+member {
+  id: 0x1d06822f
+  name: "sq_thread_idle"
+  type_id: 0x4585663f
+  offset: 832
+}
+member {
+  id: 0x1d068fc6
+  name: "sq_thread_idle"
+  type_id: 0x4585663f
+  offset: 10560
+}
+member {
+  id: 0xfd9d6e09
+  name: "sqd_list"
+  type_id: 0xd3c80119
+  offset: 3584
+}
+member {
+  id: 0xca7ac45b
+  name: "sqe_base_addr"
+  type_id: 0x18bd6530
+  offset: 256
+}
+member {
+  id: 0xc8306671
+  name: "sqe_dma_addr"
+  type_id: 0xe02e14d6
+  offset: 320
+}
+member {
+  id: 0x73a2ed89
+  name: "sqe_flags_allowed"
+  type_id: 0x295c7202
+  offset: 128
+}
+member {
+  id: 0x1d876734
+  name: "sqe_flags_required"
+  type_id: 0x295c7202
+  offset: 136
+}
+member {
+  id: 0x72fe1939
+  name: "sqe_op"
+  type_id: 0xb914bfab
+  offset: 64
+}
+member {
+  id: 0xe005d64f
+  name: "sqo_sq_wait"
+  type_id: 0x76e1f83e
+  offset: 3392
+}
+member {
+  id: 0x4d197fc2
+  name: "sr"
+  type_id: 0xca785f45
+}
+member {
+  id: 0x639c3690
+  name: "sr_lock"
+  type_id: 0xf313e71a
+  offset: 256
+}
+member {
+  id: 0x4427a288
+  name: "src"
+  type_id: 0x11cffa09
+  offset: 448
+}
+member {
+  id: 0x4427ac3d
+  name: "src"
+  type_id: 0x11cffa09
+  offset: 128
+}
+member {
+  id: 0x4427aee7
+  name: "src"
+  type_id: 0x11cffa09
+  offset: 512
+}
+member {
+  id: 0x44304fff
+  name: "src"
+  type_id: 0x0625fa4c
+}
+member {
+  id: 0x4443eee2
+  name: "src"
+  type_id: 0x7584e7da
+}
+member {
+  id: 0x445b4fe5
+  name: "src"
+  type_id: 0x6d25e07f
+}
+member {
+  id: 0x4475a595
+  name: "src"
+  type_id: 0x43c73e81
+  offset: 768
+}
+member {
+  id: 0x4480a7c2
+  name: "src"
+  type_id: 0xb6c106c1
+  offset: 48
+}
+member {
+  id: 0x449074d3
+  name: "src"
+  type_id: 0xa61911b2
+  offset: 320
+}
+member {
+  id: 0x449078f8
+  name: "src"
+  type_id: 0xa61911b2
+  offset: 216
+}
+member {
+  id: 0x44a01cbe
+  name: "src"
+  type_id: 0x9676bb5b
+}
+member {
+  id: 0x44a72e39
+  name: "src"
+  type_id: 0x914dbfdc
+  offset: 96
+}
+member {
+  id: 0x44d41849
+  name: "src"
+  type_id: 0xe276adef
+  offset: 64
+}
+member {
+  id: 0x44d41ca8
+  name: "src"
+  type_id: 0xe276adef
+}
+member {
+  id: 0x44ff6285
+  name: "src"
+  type_id: 0xc9082b19
+  offset: 256
+}
+member {
+  id: 0x44ff6c2b
+  name: "src"
+  type_id: 0xc9082b19
+  offset: 7680
+}
+member {
+  id: 0xd2778ee7
+  name: "src_addr"
+  type_id: 0xbdd18903
+  offset: 64
+}
+member {
+  id: 0x65a0fd14
+  name: "src_addr_width"
+  type_id: 0x5258ec21
+  offset: 192
+}
+member {
+  id: 0x0a8a64f7
+  name: "src_addr_widths"
+  type_id: 0xc9082b19
+  offset: 1152
+}
+member {
+  id: 0x0a8a6a2b
+  name: "src_addr_widths"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xcc0681c0
+  name: "src_change"
+  type_id: 0x7d057964
+}
+member {
+  id: 0x2612ce26
+  name: "src_cid"
+  type_id: 0x78f4e574
+}
+member {
+  id: 0x1eade31c
+  name: "src_csets"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0x51571f12
+  name: "src_h"
+  type_id: 0x1c3dbe5a
+  offset: 448
+}
+member {
+  id: 0xf9177f60
+  name: "src_icg"
+  type_id: 0xf435685e
+  offset: 192
+}
+member {
+  id: 0xeb5793cb
+  name: "src_inc"
+  type_id: 0x6d7f5ff6
+  offset: 160
+}
+member {
+  id: 0xe26e0e89
+  name: "src_len"
+  type_id: 0xb3e7bac9
+  offset: 16
+}
+member {
+  id: 0x031b1a4e
+  name: "src_maxburst"
+  type_id: 0xc9082b19
+  offset: 256
+}
+member {
+  id: 0x8b46a1dd
+  name: "src_pdo"
+  type_id: 0x5a8c92f7
+  offset: 8928
+}
+member {
+  id: 0x6c861a98
+  name: "src_pdos"
+  type_id: 0x5a8c92f7
+  offset: 7072
+}
+member {
+  id: 0x1f6f7a3c
+  name: "src_port"
+  type_id: 0x0baa70a7
+  offset: 128
+}
+member {
+  id: 0x1ff59df3
+  name: "src_port"
+  type_id: 0x914dbfdc
+  offset: 128
+}
+member {
+  id: 0x03f05941
+  name: "src_port_window_size"
+  type_id: 0xc9082b19
+  offset: 320
+}
+member {
+  id: 0x14912223
+  name: "src_reg"
+  type_id: 0xb3e7bac9
+  offset: 12
+  bitsize: 4
+}
+member {
+  id: 0x2fc1f576
+  name: "src_rp"
+  type_id: 0x361d366b
+  offset: 2016
+}
+member {
+  id: 0xe1be4651
+  name: "src_sgl"
+  type_id: 0x6d7f5ff6
+  offset: 176
+}
+member {
+  id: 0x43f73cfc
+  name: "src_start"
+  type_id: 0xe02e14d6
+}
+member {
+  id: 0x3f74dc70
+  name: "src_type"
+  type_id: 0xb3e7bac9
+  offset: 368
+}
+member {
+  id: 0x3f74dce4
+  name: "src_type"
+  type_id: 0xb3e7bac9
+  offset: 264
+}
+member {
+  id: 0x098f82d2
+  name: "src_w"
+  type_id: 0x1c3dbe5a
+  offset: 480
+}
+member {
+  id: 0x454db19b
+  name: "src_x"
+  type_id: 0x1c3dbe5a
+  offset: 384
+}
+member {
+  id: 0x840c1bfd
+  name: "src_y"
+  type_id: 0x1c3dbe5a
+  offset: 416
+}
+member {
+  id: 0x2b889279
+  name: "srcu"
+  type_id: 0xa46efa19
+  offset: 26560
+}
+member {
+  id: 0x2b8894ec
+  name: "srcu"
+  type_id: 0xa46efa19
+  offset: 384
+}
+member {
+  id: 0x2bc1da59
+  name: "srcu"
+  type_id: 0xed223076
+  offset: 9280
+}
+member {
+  id: 0x7bca816d
+  name: "srcu_barrier_completion"
+  type_id: 0x3fcbf304
+  offset: 2304
+}
+member {
+  id: 0xc17e127a
+  name: "srcu_barrier_cpu_cnt"
+  type_id: 0x74d29cf1
+  offset: 2560
+}
+member {
+  id: 0x4c85ba2b
+  name: "srcu_barrier_head"
+  type_id: 0xe3222f5b
+  offset: 2560
+}
+member {
+  id: 0xcc2d8179
+  name: "srcu_barrier_mutex"
+  type_id: 0xa7c362b0
+  offset: 1920
+}
+member {
+  id: 0xfc2e5f88
+  name: "srcu_barrier_seq"
+  type_id: 0x33756485
+  offset: 1856
+}
+member {
+  id: 0xb2ae348c
+  name: "srcu_cb_mutex"
+  type_id: 0xa7c362b0
+  offset: 320
+}
+member {
+  id: 0x30425f7e
+  name: "srcu_cblist"
+  type_id: 0xe59e6c5f
+  offset: 576
+}
+member {
+  id: 0xb531ef3f
+  name: "srcu_cblist_invoking"
+  type_id: 0x6d7f5ff6
+  offset: 1664
+}
+member {
+  id: 0xa5160237
+  name: "srcu_data_have_cbs"
+  type_id: 0x80904a3b
+  offset: 320
+}
+member {
+  id: 0x4b6a96b7
+  name: "srcu_gp_mutex"
+  type_id: 0xa7c362b0
+  offset: 768
+}
+member {
+  id: 0xbecccede
+  name: "srcu_gp_seq"
+  type_id: 0x33756485
+  offset: 1216
+}
+member {
+  id: 0xbd203145
+  name: "srcu_gp_seq_needed"
+  type_id: 0x33756485
+  offset: 1280
+}
+member {
+  id: 0xbd203ddf
+  name: "srcu_gp_seq_needed"
+  type_id: 0x33756485
+  offset: 1536
+}
+member {
+  id: 0x9152f92a
+  name: "srcu_gp_seq_needed_exp"
+  type_id: 0x33756485
+  offset: 1344
+}
+member {
+  id: 0x9152fa11
+  name: "srcu_gp_seq_needed_exp"
+  type_id: 0x33756485
+  offset: 1600
+}
+member {
+  id: 0x9152fadb
+  name: "srcu_gp_seq_needed_exp"
+  type_id: 0x33756485
+  offset: 576
+}
+member {
+  id: 0x31674242
+  name: "srcu_gp_start"
+  type_id: 0x33756485
+  offset: 1408
+}
+member {
+  id: 0xa3895fa8
+  name: "srcu_have_cbs"
+  type_id: 0x80904a3b
+  offset: 64
+}
+member {
+  id: 0x2756310e
+  name: "srcu_idx"
+  type_id: 0x4585663f
+  offset: 1152
+}
+member {
+  id: 0x27749807
+  name: "srcu_idx"
+  type_id: 0x6720d32f
+  offset: 416
+}
+member {
+  id: 0xac03d96a
+  name: "srcu_last_gp_end"
+  type_id: 0x33756485
+  offset: 1472
+}
+member {
+  id: 0x0ccfa81f
+  name: "srcu_lock_count"
+  type_id: 0x607419c2
+}
+member {
+  id: 0x375e3f50
+  name: "srcu_n_exp_nodelay"
+  type_id: 0x33756485
+  offset: 1664
+}
+member {
+  id: 0x207cc20e
+  name: "srcu_n_lock_retries"
+  type_id: 0x33756485
+  offset: 1600
+}
+member {
+  id: 0x862aabd3
+  name: "srcu_parent"
+  type_id: 0x1592957f
+  offset: 640
+}
+member {
+  id: 0x1b45dd20
+  name: "srcu_size_jiffies"
+  type_id: 0x33756485
+  offset: 1536
+}
+member {
+  id: 0x777dcfbf
+  name: "srcu_size_state"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0xa0f67284
+  name: "srcu_struct_ptrs"
+  type_id: 0x0272d86f
+  offset: 6528
+}
+member {
+  id: 0x53453710
+  name: "srcu_unlock_count"
+  type_id: 0x607419c2
+  offset: 128
+}
+member {
+  id: 0x045f66fb
+  name: "srcversion"
+  type_id: 0x3e10b518
+  offset: 1792
+}
+member {
+  id: 0x9546378f
+  name: "srej_list"
+  type_id: 0xa9daefe1
+  offset: 6976
+}
+member {
+  id: 0x9f26f5c6
+  name: "srej_q"
+  type_id: 0x578f9c2b
+  offset: 6784
+}
+member {
+  id: 0xc1b0325d
+  name: "srej_save_reqseq"
+  type_id: 0xe8034002
+  offset: 1584
+}
+member {
+  id: 0x8e4ea0f1
+  name: "sriov"
+  type_id: 0x060faad6
+}
+member {
+  id: 0xd538e9fd
+  name: "sriov_configure"
+  type_id: 0x2c8949db
+  offset: 576
+}
+member {
+  id: 0xa36be11a
+  name: "sriov_get_vf_total_msix"
+  type_id: 0x1af05b1b
+  offset: 704
+}
+member {
+  id: 0x0041f95c
+  name: "sriov_set_msix_vec_count"
+  type_id: 0x2c8949db
+  offset: 640
+}
+member {
+  id: 0xc079228b
+  name: "srp_support"
+  type_id: 0x6d7f5ff6
+  offset: 24
+}
+member {
+  id: 0x8c8649b8
+  name: "ss"
+  type_id: 0x0a85fcb6
+  offset: 704
+}
+member {
+  id: 0x8c864f64
+  name: "ss"
+  type_id: 0x0a85fcb6
+  offset: 64
+}
+member {
+  id: 0x2bd2bd8d
+  name: "ss_bw_in"
+  type_id: 0x4585663f
+  offset: 5216
+}
+member {
+  id: 0x9d6d00a1
+  name: "ss_bw_out"
+  type_id: 0x4585663f
+  offset: 5248
+}
+member {
+  id: 0x3241d5d1
+  name: "ss_cap"
+  type_id: 0x011d7b15
+  offset: 128
+}
+member {
+  id: 0xe2cd15ca
+  name: "ss_descriptors"
+  type_id: 0x0b59f310
+  offset: 256
+}
+member {
+  id: 0x8b878c0f
+  name: "ss_ep_comp"
+  type_id: 0xea5f49fa
+  offset: 72
+}
+member {
+  id: 0x2cf75783
+  name: "ss_family"
+  type_id: 0xe0705941
+}
+member {
+  id: 0x4b0726eb
+  name: "ss_id"
+  type_id: 0x0dd9f91d
+  offset: 256
+}
+member {
+  id: 0xde99cd79
+  name: "ssc"
+  type_id: 0x295c7202
+  offset: 320
+  bitsize: 1
+}
+member {
+  id: 0x2019466c
+  name: "ssci"
+  type_id: 0x69ddccfa
+  offset: 320
+}
+member {
+  id: 0x20b9944c
+  name: "ssci"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x5688258a
+  name: "sshdr"
+  type_id: 0x0bb4e60f
+  offset: 128
+}
+member {
+  id: 0xb019a143
+  name: "ssid"
+  type_id: 0x5e9b9471
+}
+member {
+  id: 0xb019a1e8
+  name: "ssid"
+  type_id: 0x5e9b9471
+  offset: 256
+}
+member {
+  id: 0xb019a51a
+  name: "ssid"
+  type_id: 0x5e9b9471
+  offset: 352
+}
+member {
+  id: 0xb019ad82
+  name: "ssid"
+  type_id: 0x5e9b9471
+  offset: 48
+}
+member {
+  id: 0xb0201edd
+  name: "ssid"
+  type_id: 0x6720d32f
+  offset: 288
+}
+member {
+  id: 0xb08e32fc
+  name: "ssid"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xb0f70111
+  name: "ssid"
+  type_id: 0xb03bc640
+}
+member {
+  id: 0x649e21ec
+  name: "ssid_len"
+  type_id: 0x295c7202
+  offset: 512
+}
+member {
+  id: 0x649e226d
+  name: "ssid_len"
+  type_id: 0x295c7202
+  offset: 304
+}
+member {
+  id: 0x649e2a06
+  name: "ssid_len"
+  type_id: 0x295c7202
+  offset: 608
+}
+member {
+  id: 0x649e2a5f
+  name: "ssid_len"
+  type_id: 0x295c7202
+  offset: 256
+}
+member {
+  id: 0x38a3ecd7
+  name: "ssids"
+  type_id: 0x269ec837
+  offset: 64
+}
+member {
+  id: 0x37e1e601
+  name: "ssp"
+  type_id: 0x238b8721
+  offset: 2880
+}
+member {
+  id: 0x4237b475
+  name: "ssp_cap"
+  type_id: 0x1a420221
+  offset: 192
+}
+member {
+  id: 0xc720b38a
+  name: "ssp_debug_mode"
+  type_id: 0xb3e7bac9
+  offset: 6664
+}
+member {
+  id: 0x458e1416
+  name: "ssp_descriptors"
+  type_id: 0x0b59f310
+  offset: 320
+}
+member {
+  id: 0xb5c66276
+  name: "ssp_isoc_ep_comp"
+  type_id: 0xfa38625c
+  offset: 120
+}
+member {
+  id: 0x24cac749
+  name: "ssp_rate"
+  type_id: 0xefa672c8
+  offset: 768
+}
+member {
+  id: 0x24cac820
+  name: "ssp_rate"
+  type_id: 0xefa672c8
+  offset: 320
+}
+member {
+  id: 0xb9810bdf
+  name: "ssr"
+  type_id: 0xced26d56
+  offset: 10624
+}
+member {
+  id: 0x10142d66
+  name: "ssthresh"
+  type_id: 0x1a3a7059
+}
+member {
+  id: 0xc9a0d926
+  name: "st"
+  type_id: 0xee05c4c5
+}
+member {
+  id: 0x7825a44f
+  name: "st_info"
+  type_id: 0x5d8155a5
+  offset: 32
+}
+member {
+  id: 0xc17a378d
+  name: "st_name"
+  type_id: 0x4ac165eb
+}
+member {
+  id: 0xfe786e3a
+  name: "st_other"
+  type_id: 0x5d8155a5
+  offset: 40
+}
+member {
+  id: 0x7672aabf
+  name: "st_shndx"
+  type_id: 0xcc10cada
+  offset: 48
+}
+member {
+  id: 0x76fd65ac
+  name: "st_size"
+  type_id: 0xcd4f25ac
+  offset: 128
+}
+member {
+  id: 0x3049f3c4
+  name: "st_value"
+  type_id: 0x359b7f43
+  offset: 64
+}
+member {
+  id: 0xd7462bfd
+  name: "stab"
+  type_id: 0x2171bdb8
+  offset: 256
+}
+member {
+  id: 0x7011a58f
+  name: "stabil"
+  type_id: 0x39470e64
+  offset: 960
+}
+member {
+  id: 0xf4018458
+  name: "stable_secret"
+  type_id: 0x8b8aa3c2
+  offset: 1440
+}
+member {
+  id: 0xbfb0d276
+  name: "stack"
+  type_id: 0x4e60cea9
+}
+member {
+  id: 0xbfcdce1e
+  name: "stack"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0xbfce9d0f
+  name: "stack"
+  type_id: 0x302719e7
+  offset: 768
+}
+member {
+  id: 0xbfd72bf9
+  name: "stack"
+  type_id: 0x299e6303
+  offset: 11072
+}
+member {
+  id: 0xbfe608aa
+  name: "stack"
+  type_id: 0x18bd6530
+  offset: 448
+}
+member {
+  id: 0xf5914596
+  name: "stack_canary"
+  type_id: 0x33756485
+  offset: 12736
+}
+member {
+  id: 0xc477a658
+  name: "stack_depot"
+  type_id: 0x9519135f
+  offset: 256
+}
+member {
+  id: 0x52346022
+  name: "stack_depth"
+  type_id: 0x914dbfdc
+  offset: 64
+}
+member {
+  id: 0x526c2273
+  name: "stack_depth"
+  type_id: 0xc9082b19
+  offset: 224
+}
+member {
+  id: 0x29913665
+  name: "stack_refcount"
+  type_id: 0xa722c13e
+  offset: 24000
+}
+member {
+  id: 0xa645865f
+  name: "stack_size"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0xaf7a7986
+  name: "stack_user_size"
+  type_id: 0x92233392
+  offset: 1344
+}
+member {
+  id: 0xb5c755c8
+  name: "stack_vm"
+  type_id: 0x33756485
+  offset: 1920
+}
+member {
+  id: 0x5db91ea2
+  name: "stack_vm_area"
+  type_id: 0x2ee2a594
+  offset: 23936
+}
+member {
+  id: 0x0e3f2404
+  name: "stackframe"
+  type_id: 0x48218c07
+  offset: 2432
+}
+member {
+  id: 0x718a2fa3
+  name: "stall"
+  type_id: 0x6d7f5ff6
+  offset: 1728
+}
+member {
+  id: 0xb658e525
+  name: "stamp"
+  type_id: 0xb02b353a
+}
+member {
+  id: 0xb6dbbf95
+  name: "stamp"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xb6f904c8
+  name: "stamp"
+  type_id: 0x11c404ba
+  offset: 1152
+}
+member {
+  id: 0xe8cd62b1
+  name: "standard"
+  type_id: 0x31f516c7
+}
+member {
+  id: 0xdee81d31
+  name: "standard_timings"
+  type_id: 0xd3067a59
+  offset: 304
+}
+member {
+  id: 0x5172f68f
+  name: "standards"
+  type_id: 0xe62ebf07
+  offset: 256
+}
+member {
+  id: 0x5172f794
+  name: "standards"
+  type_id: 0xe62ebf07
+  offset: 480
+}
+member {
+  id: 0xc5e07058
+  name: "standby"
+  type_id: 0x2dec5b18
+}
+member {
+  id: 0x887c193a
+  name: "starget_data"
+  type_id: 0xc8e4d7d1
+  offset: 8000
+}
+member {
+  id: 0x0f30ed27
+  name: "starget_sdev_user"
+  type_id: 0x257d12af
+}
+member {
+  id: 0x46038e35
+  name: "start"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0x46039236
+  name: "start"
+  type_id: 0x18a16691
+}
+member {
+  id: 0x460463e2
+  name: "start"
+  type_id: 0x1f50b278
+}
+member {
+  id: 0x46143c79
+  name: "start"
+  type_id: 0x0f0deded
+  offset: 1216
+}
+member {
+  id: 0x4614aca4
+  name: "start"
+  type_id: 0x0f988369
+  offset: 448
+}
+member {
+  id: 0x46159782
+  name: "start"
+  type_id: 0x0eafcf90
+  offset: 1856
+}
+member {
+  id: 0x4615f29e
+  name: "start"
+  type_id: 0x0ec90737
+  offset: 192
+}
+member {
+  id: 0x4616186d
+  name: "start"
+  type_id: 0x0d2aaf9f
+  offset: 384
+}
+member {
+  id: 0x46161e31
+  name: "start"
+  type_id: 0x0d2a160e
+  offset: 448
+}
+member {
+  id: 0x4616bb5f
+  name: "start"
+  type_id: 0x0d879e14
+  offset: 3072
+}
+member {
+  id: 0x46176449
+  name: "start"
+  type_id: 0x0c59c5c5
+  offset: 1152
+}
+member {
+  id: 0x462842d5
+  name: "start"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x46284634
+  name: "start"
+  type_id: 0x33756485
+}
+member {
+  id: 0x46284efd
+  name: "start"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0x46284ff6
+  name: "start"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x462b6471
+  name: "start"
+  type_id: 0x30572148
+}
+member {
+  id: 0x463406a9
+  name: "start"
+  type_id: 0x2f3d305e
+  offset: 192
+}
+member {
+  id: 0x46340b8e
+  name: "start"
+  type_id: 0x2f3c3f20
+  offset: 64
+}
+member {
+  id: 0x46340f6f
+  name: "start"
+  type_id: 0x2f3c3f20
+}
+member {
+  id: 0x463456f3
+  name: "start"
+  type_id: 0x2f6c6167
+  offset: 128
+}
+member {
+  id: 0x46349541
+  name: "start"
+  type_id: 0x2fa7835a
+  offset: 384
+}
+member {
+  id: 0x46349d11
+  name: "start"
+  type_id: 0x2fa7835a
+  offset: 128
+}
+member {
+  id: 0x46361d1d
+  name: "start"
+  type_id: 0x2d2e4d07
+}
+member {
+  id: 0x463654bc
+  name: "start"
+  type_id: 0x2d630d01
+  offset: 64
+}
+member {
+  id: 0x4636da18
+  name: "start"
+  type_id: 0x2de9e33f
+  offset: 256
+}
+member {
+  id: 0x4636e6de
+  name: "start"
+  type_id: 0x2dd58efa
+}
+member {
+  id: 0x4636ec39
+  name: "start"
+  type_id: 0x2dd58efa
+  offset: 1536
+}
+member {
+  id: 0x4636edc0
+  name: "start"
+  type_id: 0x2ddf4eb6
+  offset: 1920
+}
+member {
+  id: 0x4637bb5b
+  name: "start"
+  type_id: 0x2c8a36ad
+  offset: 704
+}
+member {
+  id: 0x4637bd7c
+  name: "start"
+  type_id: 0x2c8534d8
+  offset: 512
+}
+member {
+  id: 0x4637e9c5
+  name: "start"
+  type_id: 0x2cde74fe
+  offset: 64
+}
+member {
+  id: 0x465eb636
+  name: "start"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x4674796b
+  name: "start"
+  type_id: 0x6f43f98f
+  offset: 128
+}
+member {
+  id: 0x468757c6
+  name: "start"
+  type_id: 0x9c649622
+}
+member {
+  id: 0x46891063
+  name: "start"
+  type_id: 0x92233392
+}
+member {
+  id: 0x46891482
+  name: "start"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0x468917a4
+  name: "start"
+  type_id: 0x92233392
+  offset: 320
+}
+member {
+  id: 0x468e5625
+  name: "start"
+  type_id: 0x9565759f
+}
+member {
+  id: 0x46a6e2d9
+  name: "start"
+  type_id: 0xbdd18903
+}
+member {
+  id: 0x46a6eb1b
+  name: "start"
+  type_id: 0xbdd18903
+  offset: 128
+}
+member {
+  id: 0x46d23b7b
+  name: "start"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x46f23862
+  name: "start"
+  type_id: 0xe90b32b7
+}
+member {
+  id: 0x46f33010
+  name: "start"
+  type_id: 0xe8034002
+}
+member {
+  id: 0x46f6c127
+  name: "start"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x46fd1def
+  name: "start"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xe093ef2a
+  name: "start_addr"
+  type_id: 0x33756485
+  offset: 320
+}
+member {
+  id: 0x791de3c4
+  name: "start_all_reason"
+  type_id: 0xacd8d043
+  offset: 2912
+}
+member {
+  id: 0x534a5663
+  name: "start_block"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x816a5e28
+  name: "start_boottime"
+  type_id: 0x92233392
+  offset: 15296
+}
+member {
+  id: 0xfc996529
+  name: "start_brk"
+  type_id: 0x33756485
+  offset: 2368
+}
+member {
+  id: 0xa08e132e
+  name: "start_code"
+  type_id: 0x33756485
+  offset: 2112
+}
+member {
+  id: 0x991358b4
+  name: "start_count"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0xd7e8bb00
+  name: "start_data"
+  type_id: 0x33756485
+  offset: 2240
+}
+member {
+  id: 0xe3e1108e
+  name: "start_delayed"
+  type_id: 0x6d7f5ff6
+  offset: 6088
+}
+member {
+  id: 0xa8af9250
+  name: "start_drp_toggling"
+  type_id: 0x2c915a58
+  offset: 256
+}
+member {
+  id: 0x786ffa71
+  name: "start_frame"
+  type_id: 0x6720d32f
+  offset: 1216
+}
+member {
+  id: 0x6895e717
+  name: "start_freq"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xf4fe8ea1
+  name: "start_freq_khz"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x8f0ea6b7
+  name: "start_head"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x22b775eb
+  name: "start_hnp"
+  type_id: 0x2d2b3bac
+  offset: 640
+}
+member {
+  id: 0x7f583c87
+  name: "start_id"
+  type_id: 0xc9082b19
+  offset: 1088
+}
+member {
+  id: 0x7f771765
+  name: "start_id"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x4c6ccc95
+  name: "start_level"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x4ca5b709
+  name: "start_level"
+  type_id: 0x007e8ce4
+}
+member {
+  id: 0x48d4dc26
+  name: "start_link"
+  type_id: 0x2e23b4b1
+  offset: 320
+}
+member {
+  id: 0x58834011
+  name: "start_lock"
+  type_id: 0xc8b17aa7
+  offset: 1280
+}
+member {
+  id: 0x152ab9f3
+  name: "start_pfn"
+  type_id: 0x33756485
+  offset: 320
+}
+member {
+  id: 0x8600e517
+  name: "start_poll"
+  type_id: 0x2d7ae3a5
+  offset: 128
+}
+member {
+  id: 0x7ce7c0a6
+  name: "start_port_reset"
+  type_id: 0x2fe2063c
+  offset: 1408
+}
+member {
+  id: 0xad4616ef
+  name: "start_prevent_time"
+  type_id: 0x11c404ba
+  offset: 1088
+}
+member {
+  id: 0x652ac194
+  name: "start_region"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xe9c90312
+  name: "start_rx"
+  type_id: 0x0ebd5484
+  offset: 576
+}
+member {
+  id: 0xb352d0ff
+  name: "start_secs"
+  type_id: 0x865acc96
+  offset: 11904
+}
+member {
+  id: 0x00cda1f9
+  name: "start_signal_voltage_switch"
+  type_id: 0x2ea6d809
+  offset: 640
+}
+member {
+  id: 0x9eb9acd8
+  name: "start_srp"
+  type_id: 0x2d2b3bac
+  offset: 576
+}
+member {
+  id: 0xb504e696
+  name: "start_stack"
+  type_id: 0x33756485
+  offset: 2496
+}
+member {
+  id: 0xfd5407e6
+  name: "start_stop_pwr_cond"
+  type_id: 0x4585663f
+  offset: 2813
+  bitsize: 1
+}
+member {
+  id: 0xc4be1509
+  name: "start_str_off"
+  type_id: 0xc9082b19
+  offset: 1120
+}
+member {
+  id: 0xb02c9382
+  name: "start_streaming"
+  type_id: 0x2c1d55b6
+  offset: 512
+}
+member {
+  id: 0xd96f0d39
+  name: "start_streaming_called"
+  type_id: 0x4585663f
+  offset: 6529
+  bitsize: 1
+}
+member {
+  id: 0x022d2e66
+  name: "start_threshold"
+  type_id: 0xa8fff47c
+  offset: 1536
+}
+member {
+  id: 0xa34a9832
+  name: "start_time"
+  type_id: 0x11c404ba
+  offset: 1024
+}
+member {
+  id: 0xa368200f
+  name: "start_time"
+  type_id: 0x33756485
+  offset: 2112
+}
+member {
+  id: 0xa3c97b9b
+  name: "start_time"
+  type_id: 0x92233392
+  offset: 15232
+}
+member {
+  id: 0xa3c97cfb
+  name: "start_time"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0x329300ed
+  name: "start_time_ns"
+  type_id: 0x92233392
+  offset: 832
+}
+member {
+  id: 0xf6679407
+  name: "start_toggling"
+  type_id: 0x2e1f1dc5
+  offset: 832
+}
+member {
+  id: 0x01d8b9d1
+  name: "start_tx"
+  type_id: 0x0ebd5484
+  offset: 256
+}
+member {
+  id: 0x9699f78d
+  name: "start_tx_timer"
+  type_id: 0xcd7704bf
+}
+member {
+  id: 0x4d4403fa
+  name: "start_txn"
+  type_id: 0x0d42842b
+  offset: 1408
+}
+member {
+  id: 0x161a63ce
+  name: "start_value"
+  type_id: 0x92233392
+  offset: 128
+}
+member {
+  id: 0x29a07d14
+  name: "start_xmit"
+  type_id: 0x2cff36be
+}
+member {
+  id: 0xba5cc544
+  name: "startbit"
+  type_id: 0xc9082b19
+  offset: 448
+}
+member {
+  id: 0x5367cfd2
+  name: "started"
+  type_id: 0x6d7f5ff6
+  offset: 7560
+}
+member {
+  id: 0x539372a0
+  name: "started"
+  type_id: 0x99caa0ae
+  offset: 34240
+}
+member {
+  id: 0x564d0a7e
+  name: "startup"
+  type_id: 0x2ed940de
+  offset: 128
+}
+member {
+  id: 0x564e23b9
+  name: "startup"
+  type_id: 0x2dfb782b
+  offset: 704
+}
+member {
+  id: 0x564e292a
+  name: "startup"
+  type_id: 0x2dfb782b
+  offset: 768
+}
+member {
+  id: 0x564f6169
+  name: "startup"
+  type_id: 0x2cbb953f
+}
+member {
+  id: 0x564f67fc
+  name: "startup"
+  type_id: 0x2cbeba93
+  offset: 832
+}
+member {
+  id: 0x564f8138
+  name: "startup"
+  type_id: 0x2c5bc41e
+}
+member {
+  id: 0x564f8417
+  name: "startup"
+  type_id: 0x2c5eebb2
+}
+member {
+  id: 0x565c19c6
+  name: "startup"
+  type_id: 0x3fcbf304
+  offset: 192
+}
+member {
+  id: 0xbed83b91
+  name: "starved_entry"
+  type_id: 0xd3c80119
+  offset: 768
+}
+member {
+  id: 0x1b00fb8a
+  name: "starved_list"
+  type_id: 0xd3c80119
+  offset: 256
+}
+member {
+  id: 0xa1dc9cb8
+  name: "stashed"
+  type_id: 0xb02b353a
+}
+member {
+  id: 0xb934c444
+  name: "stat"
+  type_id: 0x8f4af0b6
+  offset: 69760
+}
+member {
+  id: 0xb936ff9f
+  name: "stat"
+  type_id: 0x8d724b7d
+  offset: 768
+}
+member {
+  id: 0xb9403407
+  name: "stat"
+  type_id: 0xfbb47533
+  offset: 20416
+}
+member {
+  id: 0xb9498bcf
+  name: "stat"
+  type_id: 0xf2078d09
+  offset: 31104
+}
+member {
+  id: 0xb99ea4be
+  name: "stat"
+  type_id: 0x25296a8e
+  offset: 768
+}
+member {
+  id: 0xb9a5341e
+  name: "stat"
+  type_id: 0x1eb5853e
+  offset: 64
+}
+member {
+  id: 0x7e9dc7ba
+  name: "stat_threshold"
+  type_id: 0x29b77961
+}
+member {
+  id: 0x7e9dc83c
+  name: "stat_threshold"
+  type_id: 0x29b77961
+  offset: 88
+}
+member {
+  id: 0x721bf22a
+  name: "state"
+  type_id: 0xe8034002
+  offset: 432
+}
+member {
+  id: 0x721cc2b1
+  name: "state"
+  type_id: 0xef3eb06a
+}
+member {
+  id: 0x721df9c5
+  name: "state"
+  type_id: 0xee05c4c5
+}
+member {
+  id: 0x72289db4
+  name: "state"
+  type_id: 0xdb6b364c
+  offset: 1344
+}
+member {
+  id: 0x7239f3be
+  name: "state"
+  type_id: 0xca0878b1
+  offset: 320
+}
+member {
+  id: 0x723af42a
+  name: "state"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x723af7a2
+  name: "state"
+  type_id: 0xc9082b19
+  offset: 5824
+}
+member {
+  id: 0x723af9cf
+  name: "state"
+  type_id: 0xc9082b19
+  offset: 7808
+}
+member {
+  id: 0x72401a0b
+  name: "state"
+  type_id: 0xb3e7bac9
+  offset: 480
+}
+member {
+  id: 0x72401b10
+  name: "state"
+  type_id: 0xb3e7bac9
+  offset: 256
+}
+member {
+  id: 0x7243c3f0
+  name: "state"
+  type_id: 0xb0312d5a
+  offset: 1152
+}
+member {
+  id: 0x724ae662
+  name: "state"
+  type_id: 0xb914bfab
+  offset: 1152
+}
+member {
+  id: 0x725251bd
+  name: "state"
+  type_id: 0xa1af970a
+  offset: 1184
+}
+member {
+  id: 0x72589ca2
+  name: "state"
+  type_id: 0xab62ccb0
+  offset: 2912
+}
+member {
+  id: 0x725e87e8
+  name: "state"
+  type_id: 0xad7853f7
+  offset: 832
+}
+member {
+  id: 0x725e8c9b
+  name: "state"
+  type_id: 0xad7853f7
+  offset: 192
+}
+member {
+  id: 0x7261a786
+  name: "state"
+  type_id: 0x925b8701
+}
+member {
+  id: 0x7262b569
+  name: "state"
+  type_id: 0x914dbfdc
+  offset: 176
+}
+member {
+  id: 0x7272eff8
+  name: "state"
+  type_id: 0x8113f984
+}
+member {
+  id: 0x7273f6d1
+  name: "state"
+  type_id: 0x8007ca5c
+  offset: 1120
+}
+member {
+  id: 0x7280b587
+  name: "state"
+  type_id: 0x7349866a
+}
+member {
+  id: 0x72846323
+  name: "state"
+  type_id: 0x779608e1
+  offset: 5280
+}
+member {
+  id: 0x72872041
+  name: "state"
+  type_id: 0x74d29cf1
+  offset: 1152
+}
+member {
+  id: 0x72872ac4
+  name: "state"
+  type_id: 0x74d29cf1
+  offset: 352
+}
+member {
+  id: 0x72873e78
+  name: "state"
+  type_id: 0x74c27986
+}
+member {
+  id: 0x728e6b8f
+  name: "state"
+  type_id: 0x7d978e5b
+}
+member {
+  id: 0x7290481b
+  name: "state"
+  type_id: 0x63b95725
+  offset: 2464
+}
+member {
+  id: 0x7294d1e9
+  name: "state"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x7294d421
+  name: "state"
+  type_id: 0x6720d32f
+  offset: 960
+}
+member {
+  id: 0x7294d510
+  name: "state"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x7294dae9
+  name: "state"
+  type_id: 0x6720d32f
+  offset: 5376
+}
+member {
+  id: 0x7294db40
+  name: "state"
+  type_id: 0x6720d32f
+  offset: 928
+}
+member {
+  id: 0x7294dbcd
+  name: "state"
+  type_id: 0x6720d32f
+  offset: 1024
+}
+member {
+  id: 0x729846ff
+  name: "state"
+  type_id: 0x6bbe1f72
+  offset: 64
+}
+member {
+  id: 0x729c3aeb
+  name: "state"
+  type_id: 0x6fcf5ca5
+  offset: 9312
+}
+member {
+  id: 0x729d5690
+  name: "state"
+  type_id: 0x6ea7aa6c
+  offset: 32
+}
+member {
+  id: 0x72a0ef25
+  name: "state"
+  type_id: 0x531194dd
+  offset: 9536
+}
+member {
+  id: 0x72a3be34
+  name: "state"
+  type_id: 0x504235bb
+}
+member {
+  id: 0x72b671c8
+  name: "state"
+  type_id: 0x4585663f
+  offset: 7776
+}
+member {
+  id: 0x72b67487
+  name: "state"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0x72b6775d
+  name: "state"
+  type_id: 0x4585663f
+  offset: 7456
+}
+member {
+  id: 0x72b678d7
+  name: "state"
+  type_id: 0x4585663f
+  offset: 480
+}
+member {
+  id: 0x72b67fcd
+  name: "state"
+  type_id: 0x4585663f
+  offset: 7616
+}
+member {
+  id: 0x72c0803e
+  name: "state"
+  type_id: 0x33756485
+  offset: 2944
+}
+member {
+  id: 0x72c080a7
+  name: "state"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x72c08196
+  name: "state"
+  type_id: 0x33756485
+  offset: 960
+}
+member {
+  id: 0x72c081ac
+  name: "state"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0x72c088f7
+  name: "state"
+  type_id: 0x33756485
+  offset: 384
+}
+member {
+  id: 0x72c08965
+  name: "state"
+  type_id: 0x33756485
+}
+member {
+  id: 0x72c08a49
+  name: "state"
+  type_id: 0x33756485
+  offset: 1664
+}
+member {
+  id: 0x72c08d84
+  name: "state"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x72c08d9c
+  name: "state"
+  type_id: 0x33756485
+  offset: 2496
+}
+member {
+  id: 0x72c08e12
+  name: "state"
+  type_id: 0x33756485
+  offset: 448
+}
+member {
+  id: 0x72c08e40
+  name: "state"
+  type_id: 0x33756485
+  offset: 1728
+}
+member {
+  id: 0x72c92280
+  name: "state"
+  type_id: 0x3ada60b4
+  offset: 64
+}
+member {
+  id: 0x72c92aad
+  name: "state"
+  type_id: 0x3ada60b4
+  offset: 11968
+}
+member {
+  id: 0x72c9a3c6
+  name: "state"
+  type_id: 0x3a5cebed
+  offset: 1664
+}
+member {
+  id: 0x72c9bc2c
+  name: "state"
+  type_id: 0x3a47ea7a
+  offset: 320
+}
+member {
+  id: 0x72cd53c6
+  name: "state"
+  type_id: 0x3eafc7e2
+}
+member {
+  id: 0x72d2f2e0
+  name: "state"
+  type_id: 0x21003da7
+  offset: 1152
+}
+member {
+  id: 0x72d2f566
+  name: "state"
+  type_id: 0x21003da7
+  offset: 2624
+}
+member {
+  id: 0x72d2fc3c
+  name: "state"
+  type_id: 0x21003da7
+}
+member {
+  id: 0x72d2fc97
+  name: "state"
+  type_id: 0x21003da7
+  offset: 256
+}
+member {
+  id: 0x72d854fd
+  name: "state"
+  type_id: 0x2baac173
+  offset: 704
+}
+member {
+  id: 0x72daa704
+  name: "state"
+  type_id: 0x295c7202
+  offset: 448
+}
+member {
+  id: 0x72daa9b1
+  name: "state"
+  type_id: 0x295c7202
+  offset: 128
+}
+member {
+  id: 0x72dc3da0
+  name: "state"
+  type_id: 0x2fc540aa
+  offset: 64
+}
+member {
+  id: 0x72ddd478
+  name: "state"
+  type_id: 0x2e2c982d
+  offset: 64
+}
+member {
+  id: 0x72ddd7c2
+  name: "state"
+  type_id: 0x2e2c982d
+  offset: 10048
+}
+member {
+  id: 0x72df76fa
+  name: "state"
+  type_id: 0x2c8e1aaa
+  offset: 64
+}
+member {
+  id: 0x72df7a07
+  name: "state"
+  type_id: 0x2c8e1aaa
+  offset: 14848
+}
+member {
+  id: 0x72e19394
+  name: "state"
+  type_id: 0x12651688
+  offset: 1344
+}
+member {
+  id: 0x72e1f985
+  name: "state"
+  type_id: 0x1205844a
+}
+member {
+  id: 0x72e6fd6b
+  name: "state"
+  type_id: 0x1506ad97
+  offset: 320
+}
+member {
+  id: 0x72eb471d
+  name: "state"
+  type_id: 0x18bd6530
+  offset: 640
+}
+member {
+  id: 0x72ebef8d
+  name: "state"
+  type_id: 0x1811bd1d
+  offset: 7904
+}
+member {
+  id: 0x72f051fa
+  name: "state"
+  type_id: 0x03aaab3d
+  offset: 1472
+}
+member {
+  id: 0x72f5f174
+  name: "state"
+  type_id: 0x060a022d
+  offset: 448
+}
+member {
+  id: 0x72f7526b
+  name: "state"
+  type_id: 0x04a91d68
+  offset: 448
+}
+member {
+  id: 0x72f94559
+  name: "state"
+  type_id: 0x0abe9fd1
+  offset: 320
+}
+member {
+  id: 0x72f94c20
+  name: "state"
+  type_id: 0x0abe9fd1
+  offset: 16
+}
+member {
+  id: 0x72fa5385
+  name: "state"
+  type_id: 0x09adb9f4
+  offset: 704
+}
+member {
+  id: 0x72fa5559
+  name: "state"
+  type_id: 0x09adb9f4
+  offset: 64
+}
+member {
+  id: 0x72fae1e1
+  name: "state"
+  type_id: 0x09145866
+  offset: 1600
+}
+member {
+  id: 0x72fae9cb
+  name: "state"
+  type_id: 0x09145866
+  offset: 384
+}
+member {
+  id: 0x46e09321
+  name: "state2"
+  type_id: 0x33756485
+  offset: 1792
+}
+member {
+  id: 0xacab5c5b
+  name: "state2power"
+  type_id: 0x2d8c500f
+  offset: 256
+}
+member {
+  id: 0x70bc5e10
+  name: "state_add_uevent_sent"
+  type_id: 0x4585663f
+  offset: 482
+  bitsize: 1
+}
+member {
+  id: 0x9e9a83f6
+  name: "state_all"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0x577ece25
+  name: "state_bydst"
+  type_id: 0x1d33485a
+  offset: 128
+}
+member {
+  id: 0xa49ff249
+  name: "state_byseq"
+  type_id: 0x1d33485a
+  offset: 320
+}
+member {
+  id: 0xa6f4e469
+  name: "state_byspi"
+  type_id: 0x1d33485a
+  offset: 256
+}
+member {
+  id: 0x15d178c3
+  name: "state_bysrc"
+  type_id: 0x1d33485a
+  offset: 192
+}
+member {
+  id: 0x57652d91
+  name: "state_change"
+  type_id: 0x0ee222da
+  offset: 320
+}
+member {
+  id: 0x57effc57
+  name: "state_change"
+  type_id: 0x843423e5
+}
+member {
+  id: 0x95cb6d35
+  name: "state_count"
+  type_id: 0x6720d32f
+  offset: 8512
+}
+member {
+  id: 0x95e9c6a0
+  name: "state_count"
+  type_id: 0x4585663f
+  offset: 11520
+}
+member {
+  id: 0xb4a7160c
+  name: "state_disk"
+  type_id: 0x87250629
+  offset: 512
+}
+member {
+  id: 0x533e3bdc
+  name: "state_hash_work"
+  type_id: 0x1f3c8679
+  offset: 448
+}
+member {
+  id: 0x5e09a6bc
+  name: "state_hmask"
+  type_id: 0x4585663f
+  offset: 384
+}
+member {
+  id: 0xd968b3cd
+  name: "state_idx"
+  type_id: 0x4585663f
+  offset: 11552
+}
+member {
+  id: 0x44fe19ca
+  name: "state_in_sysfs"
+  type_id: 0x4585663f
+  offset: 481
+  bitsize: 1
+}
+member {
+  id: 0xf1dce3ba
+  name: "state_initialized"
+  type_id: 0x4585663f
+  offset: 480
+  bitsize: 1
+}
+member {
+  id: 0x46686050
+  name: "state_lock"
+  type_id: 0x2360e10b
+  offset: 2496
+}
+member {
+  id: 0xeccd8227
+  name: "state_machine"
+  type_id: 0x3835dcc0
+  offset: 3648
+}
+member {
+  id: 0x0d8d564a
+  name: "state_machine_running"
+  type_id: 0x6d7f5ff6
+  offset: 6656
+}
+member {
+  id: 0x7d470137
+  name: "state_machine_timer"
+  type_id: 0xcd7704bf
+  offset: 3072
+}
+member {
+  id: 0x832b1953
+  name: "state_mask"
+  type_id: 0xc9082b19
+  offset: 160
+}
+member {
+  id: 0x2a10c7d4
+  name: "state_mem"
+  type_id: 0x87250629
+  offset: 704
+}
+member {
+  id: 0x96f371cc
+  name: "state_mutex"
+  type_id: 0xa7c362b0
+  offset: 1856
+}
+member {
+  id: 0x96f37465
+  name: "state_mutex"
+  type_id: 0xa7c362b0
+  offset: 19584
+}
+member {
+  id: 0x98b9223b
+  name: "state_num"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0x98b92dbb
+  name: "state_num"
+  type_id: 0x4585663f
+  offset: 416
+}
+member {
+  id: 0x20137fca
+  name: "state_pending"
+  type_id: 0xef3eb06a
+  offset: 2688
+}
+member {
+  id: 0x208f01e9
+  name: "state_pending"
+  type_id: 0x7349866a
+  offset: 4096
+}
+member {
+  id: 0x7d1a8137
+  name: "state_prev"
+  type_id: 0xef3eb06a
+  offset: 2688
+}
+member {
+  id: 0x7d86ff14
+  name: "state_prev"
+  type_id: 0x7349866a
+  offset: 4096
+}
+member {
+  id: 0x406a5acc
+  name: "state_queue"
+  type_id: 0xf1159c31
+  offset: 10880
+}
+member {
+  id: 0xa38f52ad
+  name: "state_remove_uevent_sent"
+  type_id: 0x4585663f
+  offset: 483
+  bitsize: 1
+}
+member {
+  id: 0xaaf7ba84
+  name: "state_saved"
+  type_id: 0x4585663f
+  offset: 22109
+  bitsize: 1
+}
+member {
+  id: 0xb68c0ef7
+  name: "state_size"
+  type_id: 0x4585663f
+  offset: 704
+}
+member {
+  id: 0x0545db00
+  name: "state_standby"
+  type_id: 0x87250629
+  offset: 896
+}
+member {
+  id: 0xc69d7029
+  name: "state_start"
+  type_id: 0x92233392
+  offset: 448
+}
+member {
+  id: 0x18ad1ca3
+  name: "state_synced"
+  type_id: 0x6d7f5ff6
+  offset: 6755
+  bitsize: 1
+}
+member {
+  id: 0x3b764a91
+  name: "state_usage"
+  type_id: 0x3297e876
+  offset: 64
+}
+member {
+  id: 0xc05a39d0
+  name: "state_use_accessors"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xc0e9c02d
+  name: "state_use_accessors"
+  type_id: 0xf67bec89
+  offset: 448
+}
+member {
+  id: 0x55172ceb
+  name: "states"
+  type_id: 0x3ad0ee83
+  offset: 11392
+}
+member {
+  id: 0x556e2823
+  name: "states"
+  type_id: 0x43d5daeb
+  offset: 192
+}
+member {
+  id: 0x55fe35f8
+  name: "states"
+  type_id: 0xd3c80119
+  offset: 192
+}
+member {
+  id: 0x91b80be1
+  name: "states_usage"
+  type_id: 0x4fedf57f
+  offset: 384
+}
+member {
+  id: 0x1b3dcac5
+  name: "statesize"
+  type_id: 0x4585663f
+  offset: 1056
+}
+member {
+  id: 0x1b3dcedf
+  name: "statesize"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x5f909c12
+  name: "statfs"
+  type_id: 0x2ceb7df5
+  offset: 832
+}
+member {
+  id: 0x0c2a232c
+  name: "static_addr"
+  type_id: 0xa61911b2
+  offset: 864
+}
+member {
+  id: 0x0ca5641e
+  name: "static_addr"
+  type_id: 0x295c7202
+  offset: 80
+}
+member {
+  id: 0x0ca5688d
+  name: "static_addr"
+  type_id: 0x295c7202
+  offset: 136
+}
+member {
+  id: 0x454656fe
+  name: "static_call_key"
+  type_id: 0x10e8c6af
+  offset: 192
+}
+member {
+  id: 0x82faadc2
+  name: "static_call_tramp"
+  type_id: 0x18bd6530
+  offset: 256
+}
+member {
+  id: 0xe9f3025f
+  name: "static_flags"
+  type_id: 0x4585663f
+  offset: 288
+}
+member {
+  id: 0x02db3d21
+  name: "static_prio"
+  type_id: 0x6720d32f
+  offset: 1088
+}
+member {
+  id: 0x48952518
+  name: "static_rqs"
+  type_id: 0x0d30b9c3
+  offset: 1216
+}
+member {
+  id: 0xc31ae63d
+  name: "statistics"
+  type_id: 0x334c07d5
+  offset: 768
+}
+member {
+  id: 0xb9019206
+  name: "stats"
+  type_id: 0x74f5b04b
+  offset: 1600
+}
+member {
+  id: 0xb9019dc3
+  name: "stats"
+  type_id: 0x74f5b04b
+  offset: 1280
+}
+member {
+  id: 0xb907574d
+  name: "stats"
+  type_id: 0x723bb067
+  offset: 1408
+}
+member {
+  id: 0xb9089225
+  name: "stats"
+  type_id: 0x7df29f8f
+  offset: 16576
+}
+member {
+  id: 0xb90ab6a5
+  name: "stats"
+  type_id: 0x7fdd230a
+  offset: 2432
+}
+member {
+  id: 0xb90eb532
+  name: "stats"
+  type_id: 0x7bd19a3a
+  offset: 896
+}
+member {
+  id: 0xb91e0d04
+  name: "stats"
+  type_id: 0x6b61371d
+  offset: 704
+}
+member {
+  id: 0xb920e0d3
+  name: "stats"
+  type_id: 0x5589e3d3
+  offset: 11520
+}
+member {
+  id: 0xb9409026
+  name: "stats"
+  type_id: 0x35f5ad19
+  offset: 7168
+}
+member {
+  id: 0xb945ac82
+  name: "stats"
+  type_id: 0x30c99424
+  offset: 512
+}
+member {
+  id: 0xb948cf71
+  name: "stats"
+  type_id: 0x3da9f5e9
+  offset: 7552
+}
+member {
+  id: 0xb9492553
+  name: "stats"
+  type_id: 0x3c4b5da3
+}
+member {
+  id: 0xb94c512e
+  name: "stats"
+  type_id: 0x393ffe35
+  offset: 4288
+}
+member {
+  id: 0xb94f0278
+  name: "stats"
+  type_id: 0x3a6b0163
+  offset: 448
+}
+member {
+  id: 0xb94f2726
+  name: "stats"
+  type_id: 0x3a42306c
+  offset: 512
+}
+member {
+  id: 0xb95138f6
+  name: "stats"
+  type_id: 0x2456537c
+  offset: 256
+}
+member {
+  id: 0xb95cdf4e
+  name: "stats"
+  type_id: 0x29b1eb4b
+  offset: 256
+}
+member {
+  id: 0xb96dd5c1
+  name: "stats"
+  type_id: 0x18bd6530
+  offset: 7616
+}
+member {
+  id: 0xb9766b83
+  name: "stats"
+  type_id: 0x03024adc
+  offset: 320
+}
+member {
+  id: 0xb9772a0a
+  name: "stats"
+  type_id: 0x024ceae1
+  offset: 5568
+}
+member {
+  id: 0xb97ab52c
+  name: "stats"
+  type_id: 0x0fd19d4c
+  offset: 5504
+}
+member {
+  id: 0xb9a2f93b
+  name: "stats"
+  type_id: 0xd797353d
+}
+member {
+  id: 0xb9d78a9f
+  name: "stats"
+  type_id: 0xa2ef7066
+  offset: 9792
+}
+member {
+  id: 0xb9ebff2d
+  name: "stats"
+  type_id: 0x9e96e428
+  offset: 320
+}
+member {
+  id: 0xb9f431ff
+  name: "stats"
+  type_id: 0x815cddc3
+  offset: 1664
+}
+member {
+  id: 0x4fb8f148
+  name: "stats_block_coalesce_usecs"
+  type_id: 0xe62ebf07
+  offset: 288
+}
+member {
+  id: 0xd657a07c
+  name: "stats_id"
+  type_id: 0x1d61e0cf
+  offset: 34384
+}
+member {
+  id: 0xd657a20e
+  name: "stats_id"
+  type_id: 0x1d61e0cf
+  offset: 76864
+}
+member {
+  id: 0x17c68b0c
+  name: "stats_lock"
+  type_id: 0x3654c061
+  offset: 64
+}
+member {
+  id: 0x17f0d217
+  name: "stats_lock"
+  type_id: 0x000ff4a8
+  offset: 3392
+}
+member {
+  id: 0xefd5a504
+  name: "stats_reset"
+  type_id: 0x33756485
+}
+member {
+  id: 0x7ac6bae9
+  name: "stats_sectors"
+  type_id: 0xc93e017b
+  offset: 960
+}
+member {
+  id: 0xeeac67d8
+  name: "stats_update"
+  type_id: 0x0dd70523
+  offset: 832
+}
+member {
+  id: 0xd8580a44
+  name: "stattimer"
+  type_id: 0xd298e888
+  offset: 768
+}
+member {
+  id: 0x20000016
+  name: "status"
+  type_id: 0x6720d32f
+  offset: 672
+}
+member {
+  id: 0x20000020
+  name: "status"
+  type_id: 0x6720d32f
+  offset: 448
+}
+member {
+  id: 0x20000090
+  name: "status"
+  type_id: 0x6720d32f
+  offset: 320
+}
+member {
+  id: 0x2000012e
+  name: "status"
+  type_id: 0x6720d32f
+  offset: 640
+}
+member {
+  id: 0x2000056a
+  name: "status"
+  type_id: 0x6720d32f
+  offset: 704
+}
+member {
+  id: 0x20000ed4
+  name: "status"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0x2022a603
+  name: "status"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x2027a418
+  name: "status"
+  type_id: 0x4082a3ec
+  offset: 6016
+}
+member {
+  id: 0x20282bb7
+  name: "status"
+  type_id: 0x4f09ffdc
+  offset: 10464
+}
+member {
+  id: 0x202d7d6e
+  name: "status"
+  type_id: 0x4a500dc8
+  offset: 1536
+}
+member {
+  id: 0x203aadc9
+  name: "status"
+  type_id: 0x5d8155a5
+  offset: 512
+}
+member {
+  id: 0x2048c261
+  name: "status"
+  type_id: 0x2fed2c49
+  offset: 192
+}
+member {
+  id: 0x205455ff
+  name: "status"
+  type_id: 0x33756485
+  offset: 1024
+}
+member {
+  id: 0x205457c1
+  name: "status"
+  type_id: 0x33756485
+  offset: 59200
+}
+member {
+  id: 0x20545863
+  name: "status"
+  type_id: 0x33756485
+  offset: 1344
+}
+member {
+  id: 0x20545d1c
+  name: "status"
+  type_id: 0x33756485
+  offset: 9920
+}
+member {
+  id: 0x205f2fbc
+  name: "status"
+  type_id: 0x3808938b
+  offset: 256
+}
+member {
+  id: 0x20615169
+  name: "status"
+  type_id: 0x067c4b9a
+  offset: 896
+}
+member {
+  id: 0x2064b31e
+  name: "status"
+  type_id: 0x0399ec3e
+  offset: 1088
+}
+member {
+  id: 0x2065db16
+  name: "status"
+  type_id: 0x02fc92e9
+}
+member {
+  id: 0x20688d61
+  name: "status"
+  type_id: 0x0faae5b1
+}
+member {
+  id: 0x2069471f
+  name: "status"
+  type_id: 0x0e6b837a
+  offset: 512
+}
+member {
+  id: 0x206a163d
+  name: "status"
+  type_id: 0x0d302bb5
+  offset: 384
+}
+member {
+  id: 0x206c80cf
+  name: "status"
+  type_id: 0x0baa70a7
+  offset: 32
+}
+member {
+  id: 0x206c8436
+  name: "status"
+  type_id: 0x0baa70a7
+  offset: 128
+}
+member {
+  id: 0x206c8915
+  name: "status"
+  type_id: 0x0baa70a7
+  offset: 64
+}
+member {
+  id: 0x206f4ec7
+  name: "status"
+  type_id: 0x08670159
+  offset: 2112
+}
+member {
+  id: 0x2081093b
+  name: "status"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x20810e4c
+  name: "status"
+  type_id: 0xe62ebf07
+  offset: 448
+}
+member {
+  id: 0x2083f5a0
+  name: "status"
+  type_id: 0xe4d0195f
+  offset: 704
+}
+member {
+  id: 0x2083ff54
+  name: "status"
+  type_id: 0xe4d0195f
+  offset: 192
+}
+member {
+  id: 0x2085db59
+  name: "status"
+  type_id: 0xe2f9425b
+  offset: 2176
+}
+member {
+  id: 0x208adc31
+  name: "status"
+  type_id: 0xedf277ba
+  offset: 128
+}
+member {
+  id: 0x208f24c4
+  name: "status"
+  type_id: 0xe8034002
+}
+member {
+  id: 0x20a87720
+  name: "status"
+  type_id: 0xcf5136cf
+  offset: 384
+}
+member {
+  id: 0x20ae2294
+  name: "status"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x20ae2b4e
+  name: "status"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x20fcc1ce
+  name: "status"
+  type_id: 0x9be84f35
+  offset: 7680
+}
+member {
+  id: 0x3d3f4bc2
+  name: "status_base"
+  type_id: 0x4585663f
+  offset: 224
+}
+member {
+  id: 0xbfe8d946
+  name: "status_buf"
+  type_id: 0x1bf16028
+  offset: 3008
+}
+member {
+  id: 0xf75d6935
+  name: "status_comment"
+  type_id: 0x77f6ebb4
+  offset: 896
+}
+member {
+  id: 0xf75d6ae6
+  name: "status_comment"
+  type_id: 0x77f6ebb4
+  offset: 2368
+}
+member {
+  id: 0x7a7d136d
+  name: "status_dentry"
+  type_id: 0x120540d1
+  offset: 4160
+}
+member {
+  id: 0xa13097a3
+  name: "status_invert"
+  type_id: 0x4585663f
+  offset: 620
+  bitsize: 1
+}
+member {
+  id: 0x8e288971
+  name: "status_lock"
+  type_id: 0xa7c362b0
+  offset: 192
+}
+member {
+  id: 0xd41c6df7
+  name: "status_page"
+  type_id: 0x06835e9c
+  offset: 128
+}
+member {
+  id: 0x1c1b349b
+  name: "status_reg_buf"
+  type_id: 0x18bd6530
+  offset: 2880
+}
+member {
+  id: 0xe59a485e
+  name: "status_urb"
+  type_id: 0x0130219f
+  offset: 2240
+}
+member {
+  id: 0x3205308c
+  name: "status_use_accessors"
+  type_id: 0x4585663f
+  offset: 1024
+}
+member {
+  id: 0x3a21149c
+  name: "statx_flags"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xa0f96cf7
+  name: "stbcnt"
+  type_id: 0x39470e64
+  offset: 1216
+}
+member {
+  id: 0xa1a7f216
+  name: "std"
+  type_id: 0x16f3caa7
+  offset: 384
+}
+member {
+  id: 0x368deee8
+  name: "std_bmap"
+  type_id: 0x33756485
+}
+member {
+  id: 0x17d504ad
+  name: "std_hyp_bmap"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x80093c04
+  name: "steal"
+  type_id: 0x34ed11d4
+  offset: 67584
+}
+member {
+  id: 0x6a086ae6
+  name: "step"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x6a2c932c
+  name: "step"
+  type_id: 0xedf277ba
+  offset: 448
+}
+member {
+  id: 0x6a3d61f3
+  name: "step"
+  type_id: 0xfc0e1dbd
+  offset: 128
+}
+member {
+  id: 0x6a534268
+  name: "step"
+  type_id: 0x92233392
+  offset: 448
+}
+member {
+  id: 0x6a53451f
+  name: "step"
+  type_id: 0x92233392
+}
+member {
+  id: 0x6a6fb4fb
+  name: "step"
+  type_id: 0xaedb15fc
+  offset: 128
+}
+member {
+  id: 0x6a84eac9
+  name: "step"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x6acac167
+  name: "step"
+  type_id: 0x0baa70a7
+  offset: 32
+}
+member {
+  id: 0x6acecd5b
+  name: "step"
+  type_id: 0x0faae5b1
+  offset: 384
+}
+member {
+  id: 0x6acecfed
+  name: "step"
+  type_id: 0x0faae5b1
+  offset: 224
+}
+member {
+  id: 0x6af828e0
+  name: "step"
+  type_id: 0x39470e64
+  offset: 128
+}
+member {
+  id: 0xe49eb740
+  name: "step_height"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0x03504f54
+  name: "step_width"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xd60652a5
+  name: "stepwise"
+  type_id: 0x93f045f1
+}
+member {
+  id: 0xd6fec09e
+  name: "stepwise"
+  type_id: 0x6b627e92
+}
+member {
+  id: 0x92c26519
+  name: "stereo_allowed"
+  type_id: 0x6d7f5ff6
+  offset: 8
+}
+member {
+  id: 0x92c269fc
+  name: "stereo_allowed"
+  type_id: 0x6d7f5ff6
+  offset: 1328
+}
+member {
+  id: 0x1823d926
+  name: "sticks"
+  type_id: 0x33756485
+  offset: 1472
+}
+member {
+  id: 0x5922f81b
+  name: "stime"
+  type_id: 0x1f4573ef
+  offset: 64
+}
+member {
+  id: 0x59af92c7
+  name: "stime"
+  type_id: 0x92233392
+  offset: 14656
+}
+member {
+  id: 0x59af93b2
+  name: "stime"
+  type_id: 0x92233392
+  offset: 3520
+}
+member {
+  id: 0x59af9aba
+  name: "stime"
+  type_id: 0x92233392
+}
+member {
+  id: 0x59af9e5b
+  name: "stime"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0x69842eef
+  name: "stop"
+  type_id: 0x0c59c5c5
+  offset: 1088
+}
+member {
+  id: 0x69846c94
+  name: "stop"
+  type_id: 0x0c1663ae
+  offset: 256
+}
+member {
+  id: 0x69849281
+  name: "stop"
+  type_id: 0x0ce1aff5
+  offset: 576
+}
+member {
+  id: 0x69855734
+  name: "stop"
+  type_id: 0x0d2aaf9f
+  offset: 320
+}
+member {
+  id: 0x6985f4f1
+  name: "stop"
+  type_id: 0x0d879e14
+  offset: 3136
+}
+member {
+  id: 0x698616dc
+  name: "stop"
+  type_id: 0x0e6861a8
+  offset: 64
+}
+member {
+  id: 0x698656bf
+  name: "stop"
+  type_id: 0x0e2521ae
+  offset: 128
+}
+member {
+  id: 0x6986b3f0
+  name: "stop"
+  type_id: 0x0ec90737
+  offset: 256
+}
+member {
+  id: 0x6986b673
+  name: "stop"
+  type_id: 0x0ec8cecd
+  offset: 64
+}
+member {
+  id: 0x6986d254
+  name: "stop"
+  type_id: 0x0eafcf90
+  offset: 320
+}
+member {
+  id: 0x6986e1ba
+  name: "stop"
+  type_id: 0x0e996219
+  offset: 1984
+}
+member {
+  id: 0x698771cc
+  name: "stop"
+  type_id: 0x0f0deded
+  offset: 1280
+}
+member {
+  id: 0x6987bee8
+  name: "stop"
+  type_id: 0x0fcc1a02
+  offset: 768
+}
+member {
+  id: 0x6987e34d
+  name: "stop"
+  type_id: 0x0f988369
+  offset: 384
+}
+member {
+  id: 0x6991c17f
+  name: "stop"
+  type_id: 0x19bb23ae
+}
+member {
+  id: 0x69956674
+  name: "stop"
+  type_id: 0x1d19a9d5
+  offset: 21888
+}
+member {
+  id: 0x69a4adea
+  name: "stop"
+  type_id: 0x2cde74fe
+  offset: 128
+}
+member {
+  id: 0x69a4f61a
+  name: "stop"
+  type_id: 0x2c8534d8
+  offset: 576
+}
+member {
+  id: 0x69a55104
+  name: "stop"
+  type_id: 0x2d2c9ff4
+  offset: 320
+}
+member {
+  id: 0x69a5ab33
+  name: "stop"
+  type_id: 0x2dd58efa
+  offset: 64
+}
+member {
+  id: 0x69a6d22e
+  name: "stop"
+  type_id: 0x2ea8d96e
+  offset: 256
+}
+member {
+  id: 0x69a6da4c
+  name: "stop"
+  type_id: 0x2ea8d96e
+  offset: 192
+}
+member {
+  id: 0x69a71ef4
+  name: "stop"
+  type_id: 0x2f6c6167
+  offset: 192
+}
+member {
+  id: 0x69e50dca
+  name: "stop"
+  type_id: 0x6d7f5ff6
+  offset: 192
+}
+member {
+  id: 0x69ef576f
+  name: "stop"
+  type_id: 0x6720d32f
+  offset: 160
+}
+member {
+  id: 0x69ef5a8f
+  name: "stop"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x02ed8160
+  name: "stop_count"
+  type_id: 0x6720d32f
+  offset: 704
+}
+member {
+  id: 0x2930d75d
+  name: "stop_dma_first"
+  type_id: 0x4585663f
+  offset: 1040
+  bitsize: 1
+}
+member {
+  id: 0x698a5df0
+  name: "stop_eviction"
+  type_id: 0x74d29cf1
+  offset: 768
+}
+member {
+  id: 0x13ccbb97
+  name: "stop_link"
+  type_id: 0x0d65981e
+  offset: 384
+}
+member {
+  id: 0xe651a2e5
+  name: "stop_operating"
+  type_id: 0x6d7f5ff6
+  offset: 2752
+}
+member {
+  id: 0xd37be272
+  name: "stop_poll"
+  type_id: 0x0ef957a3
+  offset: 192
+}
+member {
+  id: 0x5c3a098b
+  name: "stop_polling"
+  type_id: 0x6d7f5ff6
+  offset: 11264
+}
+member {
+  id: 0xe8208fb4
+  name: "stop_rx"
+  type_id: 0x0ebd5484
+  offset: 512
+}
+member {
+  id: 0xd25ddc6c
+  name: "stop_streaming"
+  type_id: 0x0f1efc7f
+  offset: 576
+}
+member {
+  id: 0x54f1b9c5
+  name: "stop_threshold"
+  type_id: 0xa8fff47c
+  offset: 1600
+}
+member {
+  id: 0xe1df018f
+  name: "stop_tx"
+  type_id: 0x0ebd5484
+  offset: 192
+}
+member {
+  id: 0x052da770
+  name: "stop_tx_timer"
+  type_id: 0xcd7704bf
+  offset: 576
+}
+member {
+  id: 0x808f755b
+  name: "stopped"
+  type_id: 0x6d7f5ff6
+  offset: 32
+}
+member {
+  id: 0xd5460f29
+  name: "storagebits"
+  type_id: 0x295c7202
+  offset: 16
+}
+member {
+  id: 0x4edbbede
+  name: "storages"
+  type_id: 0xd3c80119
+  offset: 3136
+}
+member {
+  id: 0xacd40238
+  name: "store"
+  type_id: 0x0d918eed
+  offset: 64
+}
+member {
+  id: 0xacd40e10
+  name: "store"
+  type_id: 0x0d918eed
+  offset: 192
+}
+member {
+  id: 0xacd4aa03
+  name: "store"
+  type_id: 0x0d359d60
+  offset: 192
+}
+member {
+  id: 0xacd524f6
+  name: "store"
+  type_id: 0x0cbb685c
+  offset: 192
+}
+member {
+  id: 0xacd61b6e
+  name: "store"
+  type_id: 0x0f84f077
+  offset: 192
+}
+member {
+  id: 0xacd61ba6
+  name: "store"
+  type_id: 0x0f8438b2
+  offset: 192
+}
+member {
+  id: 0xacd67b03
+  name: "store"
+  type_id: 0x0fe49d17
+  offset: 192
+}
+member {
+  id: 0xacd6ab2c
+  name: "store"
+  type_id: 0x0f34b275
+  offset: 192
+}
+member {
+  id: 0xacd739ed
+  name: "store"
+  type_id: 0x0eae11ad
+  offset: 256
+}
+member {
+  id: 0xacd7f27a
+  name: "store"
+  type_id: 0x0e6de43c
+  offset: 192
+}
+member {
+  id: 0x2d1b164c
+  name: "store_setspeed"
+  type_id: 0x2dac6659
+  offset: 512
+}
+member {
+  id: 0x776ae721
+  name: "store_to"
+  type_id: 0x2f3a36f7
+}
+member {
+  id: 0x97b7885f
+  name: "stored_max_keys"
+  type_id: 0xe8034002
+  offset: 6080
+}
+member {
+  id: 0x16af1257
+  name: "stored_num_keys"
+  type_id: 0xe8034002
+  offset: 6096
+}
+member {
+  id: 0x3a09fbd2
+  name: "str"
+  type_id: 0x38369fac
+}
+member {
+  id: 0x3a3545b3
+  name: "str"
+  type_id: 0x0483e6f8
+  offset: 512
+}
+member {
+  id: 0x3a7aac3a
+  name: "str"
+  type_id: 0x4b617734
+}
+member {
+  id: 0x3a7db77d
+  name: "str"
+  type_id: 0x4c7a3065
+}
+member {
+  id: 0x3a8b8086
+  name: "str"
+  type_id: 0xba4dcbcc
+}
+member {
+  id: 0x3afbe345
+  name: "str"
+  type_id: 0xca2a51af
+  offset: 352
+}
+member {
+  id: 0x9fc8c673
+  name: "str_len"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0x3a239577
+  name: "str_off"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0x4d41138a
+  name: "str_pd"
+  type_id: 0x09a1684b
+  offset: 320
+}
+member {
+  id: 0xc01f41e7
+  name: "stream"
+  type_id: 0x2809dbcb
+}
+member {
+  id: 0xc036bdc7
+  name: "stream"
+  type_id: 0x01fee34e
+  offset: 512
+}
+member {
+  id: 0xc036be2c
+  name: "stream"
+  type_id: 0x01fee34e
+  offset: 960
+}
+member {
+  id: 0xc05068ef
+  name: "stream"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xc050695f
+  name: "stream"
+  type_id: 0x6720d32f
+  offset: 480
+}
+member {
+  id: 0xc0506c0e
+  name: "stream"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0xc0ee11f9
+  name: "stream"
+  type_id: 0xd9516bf6
+  offset: 768
+}
+member {
+  id: 0xc0ee13f1
+  name: "stream"
+  type_id: 0xd9516bf6
+  offset: 896
+}
+member {
+  id: 0x26ad7845
+  name: "stream_active"
+  type_id: 0x7dc8196c
+  offset: 256
+}
+member {
+  id: 0xf293b35f
+  name: "stream_allow"
+  type_id: 0x3960a5fc
+  offset: 1024
+}
+member {
+  id: 0xb61b0e79
+  name: "stream_ctx_array"
+  type_id: 0x0bd74aeb
+  offset: 128
+}
+member {
+  id: 0xbbd01ac5
+  name: "stream_dequeue"
+  type_id: 0x0ed91a1b
+  offset: 640
+}
+member {
+  id: 0x2e8d4bcd
+  name: "stream_enqueue"
+  type_id: 0x0ed97d3b
+  offset: 704
+}
+member {
+  id: 0x8af0d86a
+  name: "stream_event"
+  type_id: 0x2c8159e1
+  offset: 1344
+}
+member {
+  id: 0x68da488e
+  name: "stream_has_data"
+  type_id: 0x2a47aff0
+  offset: 768
+}
+member {
+  id: 0x168badc1
+  name: "stream_has_space"
+  type_id: 0x2a47aff0
+  offset: 832
+}
+member {
+  id: 0x742086f4
+  name: "stream_id"
+  type_id: 0x92233392
+  offset: 832
+}
+member {
+  id: 0x74f7245a
+  name: "stream_id"
+  type_id: 0x4585663f
+  offset: 672
+}
+member {
+  id: 0x74f72dc4
+  name: "stream_id"
+  type_id: 0x4585663f
+  offset: 544
+}
+member {
+  id: 0xfd400845
+  name: "stream_id"
+  type_id: 0x4585663f
+  offset: 320
+  bitsize: 16
+}
+member {
+  id: 0x4f606ed6
+  name: "stream_info"
+  type_id: 0x056ad03f
+  offset: 192
+}
+member {
+  id: 0x2dadb239
+  name: "stream_is_active"
+  type_id: 0x346f8b7b
+  offset: 960
+}
+member {
+  id: 0x0ca84d6b
+  name: "stream_memory_free"
+  type_id: 0x36d81bb6
+  offset: 1792
+}
+member {
+  id: 0x4a0488c3
+  name: "stream_name"
+  type_id: 0x3e10b518
+}
+member {
+  id: 0x4a048c22
+  name: "stream_name"
+  type_id: 0x3e10b518
+  offset: 64
+}
+member {
+  id: 0x4adfb022
+  name: "stream_name"
+  type_id: 0xe52a3418
+  offset: 416
+}
+member {
+  id: 0x9e2efb28
+  name: "stream_offset_adj"
+  type_id: 0x4585663f
+  offset: 512
+}
+member {
+  id: 0x90f74116
+  name: "stream_parser"
+  type_id: 0x3382a638
+  offset: 64
+}
+member {
+  id: 0x7b3d243c
+  name: "stream_rcvhiwat"
+  type_id: 0x1e306968
+  offset: 896
+}
+member {
+  id: 0xd9ab38bd
+  name: "stream_ring"
+  type_id: 0x78f4e574
+}
+member {
+  id: 0xc684ecfd
+  name: "stream_rings"
+  type_id: 0x02fc8d1a
+}
+member {
+  id: 0xf042e50f
+  name: "stream_timeout"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xfd03a992
+  name: "stream_ts"
+  type_id: 0x33756485
+}
+member {
+  id: 0xe7162ce8
+  name: "stream_verdict"
+  type_id: 0x3382a638
+  offset: 128
+}
+member {
+  id: 0xc284eb1d
+  name: "streaming"
+  type_id: 0x4585663f
+  offset: 6528
+  bitsize: 1
+}
+member {
+  id: 0x8d981fcb
+  name: "streams"
+  type_id: 0x6720d32f
+  offset: 576
+}
+member {
+  id: 0x8dbca30a
+  name: "streams"
+  type_id: 0x439230ff
+  offset: 1472
+}
+member {
+  id: 0xe7e842ca
+  name: "strength"
+  type_id: 0x295c7202
+  offset: 56
+}
+member {
+  id: 0x8f5ee949
+  name: "strict"
+  type_id: 0x6d7f5ff6
+  offset: 576
+}
+member {
+  id: 0xa8de07ae
+  name: "strict_alignment"
+  type_id: 0x6d7f5ff6
+  offset: 288
+}
+member {
+  id: 0x052de968
+  name: "strict_check"
+  type_id: 0x6d7f5ff6
+  offset: 576
+}
+member {
+  id: 0xba390095
+  name: "strict_start_type"
+  type_id: 0x914dbfdc
+}
+member {
+  id: 0x934a58fc
+  name: "strict_target"
+  type_id: 0x6d7f5ff6
+  offset: 5008
+}
+member {
+  id: 0x5e10fd0f
+  name: "stride"
+  type_id: 0x4585663f
+  offset: 45344
+}
+member {
+  id: 0x5e325618
+  name: "stride"
+  type_id: 0x6720d32f
+  offset: 7360
+}
+member {
+  id: 0x5e325fa3
+  name: "stride"
+  type_id: 0x6720d32f
+  offset: 960
+}
+member {
+  id: 0x5e660606
+  name: "stride"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x5ec43eeb
+  name: "stride"
+  type_id: 0x914dbfdc
+  offset: 176
+}
+member {
+  id: 0xdf17051c
+  name: "string"
+  type_id: 0xe52a3418
+  offset: 32
+}
+member {
+  id: 0xdf2ffcf1
+  name: "string"
+  type_id: 0xdddee2d3
+}
+member {
+  id: 0xdff6a15e
+  name: "string"
+  type_id: 0x0483e6f8
+  offset: 256
+}
+member {
+  id: 0xdff6a1f5
+  name: "string"
+  type_id: 0x0483e6f8
+}
+member {
+  id: 0xdff6a514
+  name: "string"
+  type_id: 0x0483e6f8
+  offset: 64
+}
+member {
+  id: 0xdff6a837
+  name: "string"
+  type_id: 0x0483e6f8
+  offset: 128
+}
+member {
+  id: 0x6983cb7e
+  name: "string_langid"
+  type_id: 0x6720d32f
+  offset: 11200
+}
+member {
+  id: 0xdd8f0781
+  name: "strings"
+  type_id: 0x3e10b518
+  offset: 256
+}
+member {
+  id: 0xdd9b4443
+  name: "strings"
+  type_id: 0x2a573d9c
+  offset: 64
+}
+member {
+  id: 0xddbb8086
+  name: "strings"
+  type_id: 0x0a93f86f
+  offset: 64
+}
+member {
+  id: 0xddbb8da5
+  name: "strings"
+  type_id: 0x0a93f86f
+  offset: 128
+}
+member {
+  id: 0xb20aab08
+  name: "strobe"
+  type_id: 0x5d8155a5
+  offset: 1
+  bitsize: 1
+}
+member {
+  id: 0x7e117656
+  name: "strobe_get"
+  type_id: 0x2e21b136
+  offset: 192
+}
+member {
+  id: 0x75f61e46
+  name: "strobe_set"
+  type_id: 0x2e5d0187
+  offset: 128
+}
+member {
+  id: 0x8b0edfe8
+  name: "strobe_support"
+  type_id: 0x295c7202
+  offset: 1056
+}
+member {
+  id: 0x279f085b
+  name: "strong_magnitude"
+  type_id: 0xe8034002
+}
+member {
+  id: 0x8320f168
+  name: "strtab"
+  type_id: 0x0483e6f8
+  offset: 128
+}
+member {
+  id: 0x43dccbbb
+  name: "struct_mutex"
+  type_id: 0xa7c362b0
+  offset: 960
+}
+member {
+  id: 0xbf42bb10
+  name: "structure"
+  type_id: 0x5d8155a5
+}
+member {
+  id: 0xdf2ec64d
+  name: "strval"
+  type_id: 0x3e10b518
+}
+member {
+  id: 0xcebef93a
+  name: "su_group"
+  type_id: 0xe145bd36
+}
+member {
+  id: 0xd0bd9a08
+  name: "su_mutex"
+  type_id: 0xa7c362b0
+  offset: 1088
+}
+member {
+  id: 0xedd64f59
+  name: "sub_reg_offsets"
+  type_id: 0x2db8f717
+  offset: 128
+}
+member {
+  id: 0xe54bfd9f
+  name: "sub_vendor_id"
+  type_id: 0x42201dce
+  offset: 224
+}
+member {
+  id: 0x4add8ec8
+  name: "subchannel_id"
+  type_id: 0xe8034002
+}
+member {
+  id: 0x34ac3a50
+  name: "subchannel_nr"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0x2c4470df
+  name: "subclass_code"
+  type_id: 0x295c7202
+  offset: 48
+}
+member {
+  id: 0xd6e4c677
+  name: "subcmd"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x3659eaf2
+  name: "subcode"
+  type_id: 0xbf0a1b8d
+  offset: 192
+}
+member {
+  id: 0xd6494289
+  name: "subcomponent"
+  type_id: 0x6720d32f
+  offset: 320
+}
+member {
+  id: 0x8fccb26a
+  name: "subconnector"
+  type_id: 0xf24d5b17
+}
+member {
+  id: 0xec14ff88
+  name: "subdev_notifier"
+  type_id: 0x3cfe7778
+  offset: 2368
+}
+member {
+  id: 0x7459f24e
+  name: "subdevice"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x7459ff2c
+  name: "subdevice"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x74fa54f5
+  name: "subdevice"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0xc5006575
+  name: "subdevs"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0xc5006abf
+  name: "subdevs"
+  type_id: 0xd3c80119
+  offset: 8960
+}
+member {
+  id: 0x525d1f0d
+  name: "subdir"
+  type_id: 0xeb923a9b
+  offset: 1024
+}
+member {
+  id: 0x0c6a0379
+  name: "subdir_node"
+  type_id: 0x3205ba2f
+  offset: 1088
+}
+member {
+  id: 0xd5fc5804
+  name: "subdirs"
+  type_id: 0x33756485
+}
+member {
+  id: 0x0ede87d4
+  name: "suberror"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x31604159
+  name: "subformat"
+  type_id: 0x5f61296d
+  offset: 832
+}
+member {
+  id: 0xcd7f1dab
+  name: "subid"
+  type_id: 0x6720d32f
+  offset: 704
+}
+member {
+  id: 0x56a16eeb
+  name: "subirq_base"
+  type_id: 0x6720d32f
+  offset: 9984
+}
+member {
+  id: 0x9c6dc805
+  name: "subirq_chip"
+  type_id: 0xadd7ccb6
+  offset: 7872
+}
+member {
+  id: 0x76c2672c
+  name: "subirqs"
+  type_id: 0x6a28d5f7
+  offset: 10016
+}
+member {
+  id: 0xc06fde3b
+  name: "subled_info"
+  type_id: 0x11ae7e9f
+  offset: 3456
+}
+member {
+  id: 0x13eb34e2
+  name: "submit_bio"
+  type_id: 0x0fec1dc1
+}
+member {
+  id: 0x89760567
+  name: "submit_nr"
+  type_id: 0xc93e017b
+  offset: 336
+}
+member {
+  id: 0x90eb7979
+  name: "submit_single_step_set_feature"
+  type_id: 0x2fa0c176
+  offset: 2880
+}
+member {
+  id: 0x2c226b5d
+  name: "submit_state"
+  type_id: 0x42189fc0
+  offset: 1024
+}
+member {
+  id: 0x5e6786ba
+  name: "submitted_urbs"
+  type_id: 0x74d29cf1
+  offset: 44480
+}
+member {
+  id: 0x4f0fe46e
+  name: "submitter"
+  type_id: 0xbcb85241
+  offset: 1624
+}
+member {
+  id: 0x3044c584
+  name: "submitter_task"
+  type_id: 0x1d19a9d5
+  offset: 6336
+}
+member {
+  id: 0x592ba09a
+  name: "subnet_prefix"
+  type_id: 0x92233392
+}
+member {
+  id: 0xe08009d2
+  name: "subordinate"
+  type_id: 0x2309ad3e
+  offset: 192
+}
+member {
+  id: 0xe75e7481
+  name: "subpixel_order"
+  type_id: 0x5f8123e7
+  offset: 96
+}
+member {
+  id: 0x79437342
+  name: "subprog_cnt"
+  type_id: 0xc9082b19
+  offset: 75872
+}
+member {
+  id: 0xd61c6dbe
+  name: "subprog_info"
+  type_id: 0x4df2aa7b
+  offset: 21504
+}
+member {
+  id: 0xc871000d
+  name: "subprogno"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xc87108fe
+  name: "subprogno"
+  type_id: 0xc9082b19
+  offset: 10624
+}
+member {
+  id: 0x7e492b52
+  name: "subprotocol"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x7f082f01
+  name: "subreg_def"
+  type_id: 0xd41e888f
+  offset: 864
+}
+member {
+  id: 0x48baa384
+  name: "subs"
+  type_id: 0x08ba388c
+  offset: 128
+}
+member {
+  id: 0xdece04a2
+  name: "subscribe_event"
+  type_id: 0x2ddee198
+  offset: 704
+}
+member {
+  id: 0x40fe2d51
+  name: "subscribe_lock"
+  type_id: 0xa7c362b0
+  offset: 512
+}
+member {
+  id: 0xd35a20a6
+  name: "subscribed"
+  type_id: 0x6720d32f
+  offset: 640
+}
+member {
+  id: 0xd3eec4ab
+  name: "subscribed"
+  type_id: 0xd3c80119
+  offset: 896
+}
+member {
+  id: 0x16cbf547
+  name: "subsection_map"
+  type_id: 0xb914bfab
+}
+member {
+  id: 0x7fa3f263
+  name: "subseq"
+  type_id: 0x6720d32f
+  offset: 768
+}
+member {
+  id: 0x7fcf76a3
+  name: "subseq"
+  type_id: 0x0baa70a7
+  offset: 864
+}
+member {
+  id: 0x87335214
+  name: "substream"
+  type_id: 0x14b9453b
+  offset: 192
+}
+member {
+  id: 0x87496810
+  name: "substream"
+  type_id: 0x6e8341c8
+  offset: 192
+}
+member {
+  id: 0xe80be976
+  name: "substream_count"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0xfa6e64e6
+  name: "substream_opened"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0x08ec1508
+  name: "substreams"
+  type_id: 0xd3c80119
+  offset: 448
+}
+member {
+  id: 0x9ac0c50d
+  name: "subsys"
+  type_id: 0x620b283c
+  offset: 5824
+}
+member {
+  id: 0x9ac0c685
+  name: "subsys"
+  type_id: 0x620b283c
+}
+member {
+  id: 0x9ad9d27f
+  name: "subsys"
+  type_id: 0x7b1fd27f
+}
+member {
+  id: 0x16c2f3ef
+  name: "subsys_data"
+  type_id: 0x1c5ceff7
+  offset: 2496
+}
+member {
+  id: 0x7f7ac96d
+  name: "subsys_id"
+  type_id: 0x914dbfdc
+  offset: 96
+}
+member {
+  id: 0x739df3bb
+  name: "subsys_mask"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xe55b43db
+  name: "subsys_vendor_id"
+  type_id: 0x914dbfdc
+  offset: 80
+}
+member {
+  id: 0x1196f32c
+  name: "subsystem"
+  type_id: 0x13e7e035
+  offset: 128
+}
+member {
+  id: 0x11c73d13
+  name: "subsystem"
+  type_id: 0x42201dce
+}
+member {
+  id: 0x5d8f77ce
+  name: "subsystem_device"
+  type_id: 0xc93e017b
+  offset: 528
+}
+member {
+  id: 0x5dd703d9
+  name: "subsystem_device"
+  type_id: 0x914dbfdc
+  offset: 512
+}
+member {
+  id: 0xdf04d97b
+  name: "subsystem_flags"
+  type_id: 0xc9082b19
+  offset: 640
+}
+member {
+  id: 0x94a4f0bb
+  name: "subsystem_vendor"
+  type_id: 0x914dbfdc
+  offset: 496
+}
+member {
+  id: 0x94fc8d9d
+  name: "subsystem_vendor"
+  type_id: 0xc93e017b
+  offset: 512
+}
+member {
+  id: 0xe0e3bcf4
+  name: "subtree_control"
+  type_id: 0x914dbfdc
+  offset: 5760
+}
+member {
+  id: 0xc2b065fa
+  name: "subtree_max_hole"
+  type_id: 0x92233392
+  offset: 1216
+}
+member {
+  id: 0xdcec01d0
+  name: "subtree_ss_mask"
+  type_id: 0x914dbfdc
+  offset: 5776
+}
+member {
+  id: 0x18c8fa92
+  name: "subtype"
+  type_id: 0xb0312d5a
+  offset: 464
+}
+member {
+  id: 0xedc90787
+  name: "subvendor"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x90938126
+  name: "suggested_x_property"
+  type_id: 0x2a670b41
+  offset: 8832
+}
+member {
+  id: 0xc0995a7e
+  name: "suggested_y_property"
+  type_id: 0x2a670b41
+  offset: 8896
+}
+member {
+  id: 0x9ab99084
+  name: "suid"
+  type_id: 0xe90b32b7
+  offset: 96
+}
+member {
+  id: 0x9ab99a27
+  name: "suid"
+  type_id: 0xe90b32b7
+  offset: 6048
+}
+member {
+  id: 0x15068e74
+  name: "suite_exit"
+  type_id: 0x0cd4a36d
+  offset: 2112
+}
+member {
+  id: 0x43476f3f
+  name: "suite_init"
+  type_id: 0x2f928fc2
+  offset: 2048
+}
+member {
+  id: 0xc49c4949
+  name: "suite_init_err"
+  type_id: 0x6720d32f
+  offset: 4544
+}
+member {
+  id: 0x50665441
+  name: "sum_block_runtime"
+  type_id: 0x2e0f9112
+  offset: 704
+}
+member {
+  id: 0x565a3a05
+  name: "sum_exec_runtime"
+  type_id: 0x1f4573ef
+  offset: 128
+}
+member {
+  id: 0x5690a011
+  name: "sum_exec_runtime"
+  type_id: 0xd5df6730
+  offset: 128
+}
+member {
+  id: 0x56d75cf5
+  name: "sum_exec_runtime"
+  type_id: 0x92233392
+  offset: 576
+}
+member {
+  id: 0xa714212b
+  name: "sum_sched_runtime"
+  type_id: 0xd5df6730
+  offset: 5440
+}
+member {
+  id: 0x8064005e
+  name: "sum_sleep_runtime"
+  type_id: 0x2e0f9112
+  offset: 512
+}
+member {
+  id: 0xc6d8a98e
+  name: "super_block_align"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xa06f40ea
+  name: "supers"
+  type_id: 0xd3c80119
+  offset: 448
+}
+member {
+  id: 0x0a4e4bd1
+  name: "superspeed"
+  type_id: 0x4585663f
+  offset: 712
+  bitsize: 1
+}
+member {
+  id: 0xe2abd8c5
+  name: "superspeed_plus"
+  type_id: 0x4585663f
+  offset: 715
+  bitsize: 1
+}
+member {
+  id: 0x09af4eeb
+  name: "supp_mcs"
+  type_id: 0x8a756038
+  offset: 32
+}
+member {
+  id: 0x5df244cc
+  name: "supplied_from"
+  type_id: 0x0bb0c019
+  offset: 192
+}
+member {
+  id: 0xd3d44b4c
+  name: "supplied_to"
+  type_id: 0x0bb0c019
+  offset: 64
+}
+member {
+  id: 0xd3d44f06
+  name: "supplied_to"
+  type_id: 0x0bb0c019
+  offset: 256
+}
+member {
+  id: 0xf6f7ee6c
+  name: "supplier"
+  type_id: 0x0258f96e
+}
+member {
+  id: 0x80374537
+  name: "supplier_preactivated"
+  type_id: 0x6d7f5ff6
+  offset: 8192
+}
+member {
+  id: 0xf4d9522e
+  name: "suppliers"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0xf4d95ae7
+  name: "suppliers"
+  type_id: 0xd3c80119
+  offset: 192
+}
+member {
+  id: 0xb881f2c0
+  name: "supplies"
+  type_id: 0x35e13364
+  offset: 384
+}
+member {
+  id: 0x0d47ea6c
+  name: "supply"
+  type_id: 0x01ae1e33
+  offset: 9216
+}
+member {
+  id: 0x0d785183
+  name: "supply"
+  type_id: 0x3e10b518
+  offset: 64
+}
+member {
+  id: 0x0d785562
+  name: "supply"
+  type_id: 0x3e10b518
+}
+member {
+  id: 0x0db2e736
+  name: "supply"
+  type_id: 0xf4ae543b
+  offset: 11776
+}
+member {
+  id: 0x39868917
+  name: "supply_name"
+  type_id: 0x3e10b518
+  offset: 9280
+}
+member {
+  id: 0x39868c83
+  name: "supply_name"
+  type_id: 0x3e10b518
+  offset: 640
+}
+member {
+  id: 0x39868e1b
+  name: "supply_name"
+  type_id: 0x3e10b518
+  offset: 64
+}
+member {
+  id: 0x91e8a28f
+  name: "supply_regulator"
+  type_id: 0x3e10b518
+}
+member {
+  id: 0x92024d5f
+  name: "supply_voltage"
+  type_id: 0xc9082b19
+  offset: 10048
+}
+member {
+  id: 0xa69acf8a
+  name: "support_mbssid"
+  type_id: 0x295c7202
+  offset: 11392
+  bitsize: 1
+}
+member {
+  id: 0x5b950813
+  name: "support_only_he_mbssid"
+  type_id: 0x295c7202
+  offset: 11393
+  bitsize: 1
+}
+member {
+  id: 0x87061819
+  name: "supported"
+  type_id: 0x6d7f5ff6
+  offset: 256
+}
+member {
+  id: 0x870618b2
+  name: "supported"
+  type_id: 0x6d7f5ff6
+}
+member {
+  id: 0x870b13f4
+  name: "supported"
+  type_id: 0x607419c2
+}
+member {
+  id: 0x870b1a86
+  name: "supported"
+  type_id: 0x607419c2
+  offset: 576
+}
+member {
+  id: 0x870b1f6a
+  name: "supported"
+  type_id: 0x607419c2
+  offset: 9600
+}
+member {
+  id: 0x878d4469
+  name: "supported"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x87e15787
+  name: "supported"
+  type_id: 0x8a39a82c
+  offset: 128
+}
+member {
+  id: 0xcd021601
+  name: "supported"
+  type_id: 0x295c7202
+  offset: 80
+  bitsize: 1
+}
+member {
+  id: 0x56c9ab90
+  name: "supported_aspects"
+  type_id: 0x295c7202
+  offset: 24
+}
+member {
+  id: 0x00b23291
+  name: "supported_cable"
+  type_id: 0x39cc14ac
+  offset: 64
+}
+member {
+  id: 0x5c8cf290
+  name: "supported_coalesce_params"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x86378461
+  name: "supported_cpus"
+  type_id: 0x99caa0ae
+  offset: 3072
+}
+member {
+  id: 0x86b24cf6
+  name: "supported_cpus"
+  type_id: 0x1c04d361
+  offset: 2368
+}
+member {
+  id: 0x8d29a756
+  name: "supported_events"
+  type_id: 0xb914bfab
+  offset: 2944
+}
+member {
+  id: 0x44116555
+  name: "supported_hw"
+  type_id: 0x1bf16028
+  offset: 2560
+}
+member {
+  id: 0x44335928
+  name: "supported_hw"
+  type_id: 0x39cc14ac
+  offset: 256
+}
+member {
+  id: 0xd4b3659d
+  name: "supported_hw_count"
+  type_id: 0x4585663f
+  offset: 2624
+}
+member {
+  id: 0xd4b36b00
+  name: "supported_hw_count"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0x2180799d
+  name: "supported_interfaces"
+  type_id: 0xb914bfab
+  offset: 192
+}
+member {
+  id: 0xaec39793
+  name: "supported_mode"
+  type_id: 0x4585663f
+  offset: 2625
+  bitsize: 2
+}
+member {
+  id: 0x841c56e5
+  name: "supported_ops"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x6d9a3f19
+  name: "supported_protocols"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x6d9a3f44
+  name: "supported_protocols"
+  type_id: 0xc9082b19
+  offset: 8128
+}
+member {
+  id: 0x6ba7e4af
+  name: "supported_ring_params"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x3a06a531
+  name: "supported_scalings"
+  type_id: 0x295c7202
+  offset: 40
+}
+member {
+  id: 0x26cce85e
+  name: "supports_autosuspend"
+  type_id: 0x4585663f
+  offset: 2369
+  bitsize: 1
+}
+member {
+  id: 0xa40f0045
+  name: "supports_ccc_cmd"
+  type_id: 0x352b5569
+  offset: 384
+}
+member {
+  id: 0xa91c3239
+  name: "supports_gmii"
+  type_id: 0x4585663f
+  offset: 130
+  bitsize: 1
+}
+member {
+  id: 0x2138b2e5
+  name: "supports_op"
+  type_id: 0x3500e23a
+  offset: 64
+}
+member {
+  id: 0x065dd0db
+  name: "supports_requests"
+  type_id: 0x4585663f
+  offset: 197
+  bitsize: 1
+}
+member {
+  id: 0x505b26be
+  name: "suppress"
+  type_id: 0x346f60ba
+  offset: 448
+}
+member {
+  id: 0xae9f144a
+  name: "suppress_bind_attrs"
+  type_id: 0x6d7f5ff6
+  offset: 256
+}
+member {
+  id: 0x3d94707e
+  name: "suppress_frag_ndisc"
+  type_id: 0x0faae5b1
+  offset: 1312
+}
+member {
+  id: 0x128be433
+  name: "suppress_ifgroup"
+  type_id: 0x6720d32f
+  offset: 640
+}
+member {
+  id: 0xed5d2361
+  name: "suppress_prefixlen"
+  type_id: 0x6720d32f
+  offset: 672
+}
+member {
+  id: 0x0ac2879c
+  name: "surface_bpp"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0x831c1818
+  name: "surface_depth"
+  type_id: 0xc9082b19
+  offset: 160
+}
+member {
+  id: 0xd0f89a47
+  name: "surface_height"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0x24429207
+  name: "surface_width"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0xf39425f9
+  name: "suspend"
+  type_id: 0x2ef36b70
+  offset: 256
+}
+member {
+  id: 0xf39434cd
+  name: "suspend"
+  type_id: 0x2ee76b64
+  offset: 2176
+}
+member {
+  id: 0xf3944f65
+  name: "suspend"
+  type_id: 0x2e9195ef
+  offset: 192
+}
+member {
+  id: 0xf394d5ee
+  name: "suspend"
+  type_id: 0x2e037cf1
+  offset: 256
+}
+member {
+  id: 0xf395b58d
+  name: "suspend"
+  type_id: 0x2f6a769c
+  offset: 128
+}
+member {
+  id: 0xf395c6ed
+  name: "suspend"
+  type_id: 0x2f107f13
+  offset: 256
+}
+member {
+  id: 0xf3963932
+  name: "suspend"
+  type_id: 0x2ce67932
+  offset: 576
+}
+member {
+  id: 0xf3963ffd
+  name: "suspend"
+  type_id: 0x2ce866aa
+  offset: 2560
+}
+member {
+  id: 0xf396bb3a
+  name: "suspend"
+  type_id: 0x2c65cac4
+  offset: 192
+}
+member {
+  id: 0xf396c9d5
+  name: "suspend"
+  type_id: 0x2c1e7e89
+  offset: 384
+}
+member {
+  id: 0xf39706bf
+  name: "suspend"
+  type_id: 0x2dde5a86
+  offset: 1152
+}
+member {
+  id: 0xf3970a75
+  name: "suspend"
+  type_id: 0x2dd58efa
+  offset: 128
+}
+member {
+  id: 0xf3972ffa
+  name: "suspend"
+  type_id: 0x2df0016c
+  offset: 128
+}
+member {
+  id: 0xf3973d1e
+  name: "suspend"
+  type_id: 0x2de9e33f
+  offset: 1216
+}
+member {
+  id: 0xf397a4ef
+  name: "suspend"
+  type_id: 0x2d7870f7
+  offset: 896
+}
+member {
+  id: 0xf397f19d
+  name: "suspend"
+  type_id: 0x2d25997b
+  offset: 704
+}
+member {
+  id: 0xf397f906
+  name: "suspend"
+  type_id: 0x2d25997b
+  offset: 896
+}
+member {
+  id: 0xf3b45c3b
+  name: "suspend"
+  type_id: 0x0e837004
+  offset: 576
+}
+member {
+  id: 0xf3b52c98
+  name: "suspend"
+  type_id: 0x0ff0075d
+  offset: 896
+}
+member {
+  id: 0xf3b55bd3
+  name: "suspend"
+  type_id: 0x0f8519f7
+  offset: 960
+}
+member {
+  id: 0xf3b637d5
+  name: "suspend"
+  type_id: 0x0ce07e73
+  offset: 384
+}
+member {
+  id: 0xf3b668c5
+  name: "suspend"
+  type_id: 0x0cb02071
+  offset: 1152
+}
+member {
+  id: 0xf3b67564
+  name: "suspend"
+  type_id: 0x0ca42ad3
+  offset: 448
+}
+member {
+  id: 0xf3b7cd3e
+  name: "suspend"
+  type_id: 0x0d1baca2
+  offset: 256
+}
+member {
+  id: 0xf3d7a8fc
+  name: "suspend"
+  type_id: 0x6d7f5ff6
+  offset: 184
+}
+member {
+  id: 0xcc3d72ff
+  name: "suspend_again"
+  type_id: 0x35392f66
+  offset: 448
+}
+member {
+  id: 0x490ad16b
+  name: "suspend_bias_off"
+  type_id: 0x4585663f
+  offset: 2562
+  bitsize: 1
+}
+member {
+  id: 0x490ad300
+  name: "suspend_bias_off"
+  type_id: 0x4585663f
+  offset: 33
+  bitsize: 1
+}
+member {
+  id: 0xdccb64ac
+  name: "suspend_count"
+  type_id: 0x5d8155a5
+  offset: 896
+}
+member {
+  id: 0xdcd36a92
+  name: "suspend_count"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0xdce23cc4
+  name: "suspend_count"
+  type_id: 0x74d29cf1
+  offset: 11456
+}
+member {
+  id: 0x7a34e0e9
+  name: "suspend_freq"
+  type_id: 0x33756485
+  offset: 11328
+}
+member {
+  id: 0x7a4213b9
+  name: "suspend_freq"
+  type_id: 0x4585663f
+  offset: 512
+}
+member {
+  id: 0xb13aedcd
+  name: "suspend_late"
+  type_id: 0x2dd58efa
+  offset: 512
+}
+member {
+  id: 0x86f0bc08
+  name: "suspend_noirq"
+  type_id: 0x2dd58efa
+  offset: 896
+}
+member {
+  id: 0x10dabda2
+  name: "suspend_notifier"
+  type_id: 0x449a775b
+  offset: 28352
+}
+member {
+  id: 0xe2d495b2
+  name: "suspend_ok"
+  type_id: 0x351ca0f0
+  offset: 64
+}
+member {
+  id: 0x0b4c6d3f
+  name: "suspend_opp"
+  type_id: 0x19e66c71
+  offset: 1920
+}
+member {
+  id: 0x0d88e94f
+  name: "suspend_post"
+  type_id: 0x2c61df5b
+  offset: 2240
+}
+member {
+  id: 0x4b7cfee6
+  name: "suspend_pre"
+  type_id: 0x2c61df5b
+  offset: 2176
+}
+member {
+  id: 0xae249899
+  name: "suspend_state"
+  type_id: 0x21003da7
+  offset: 9728
+}
+member {
+  id: 0xae6114cc
+  name: "suspend_state"
+  type_id: 0x64823955
+  offset: 28576
+}
+member {
+  id: 0xa136ba5d
+  name: "suspend_state_next"
+  type_id: 0x64823955
+  offset: 28544
+}
+member {
+  id: 0x5885f531
+  name: "suspend_timer"
+  type_id: 0xcd7704bf
+  offset: 640
+}
+member {
+  id: 0xb9962be6
+  name: "suspend_wakeups"
+  type_id: 0x74d29cf1
+  offset: 352
+}
+member {
+  id: 0xa6f8ee3f
+  name: "suspend_work"
+  type_id: 0x1f3c8679
+  offset: 832
+}
+member {
+  id: 0x1e8cc137
+  name: "suspended"
+  type_id: 0x4585663f
+  offset: 9253
+  bitsize: 1
+}
+member {
+  id: 0x1e8ccb82
+  name: "suspended"
+  type_id: 0x4585663f
+  offset: 449
+  bitsize: 1
+}
+member {
+  id: 0x1e8ccc49
+  name: "suspended"
+  type_id: 0x4585663f
+  offset: 352
+  bitsize: 1
+}
+member {
+  id: 0xff46aaec
+  name: "suspended"
+  type_id: 0x5d8155a5
+  offset: 2872
+}
+member {
+  id: 0xff7650d9
+  name: "suspended"
+  type_id: 0x6d7f5ff6
+  offset: 6080
+}
+member {
+  id: 0xff765c39
+  name: "suspended"
+  type_id: 0x6d7f5ff6
+  offset: 248
+}
+member {
+  id: 0xff765d59
+  name: "suspended"
+  type_id: 0x6d7f5ff6
+  offset: 28616
+}
+member {
+  id: 0xe8c51b31
+  name: "suspended_by_mdio_bus"
+  type_id: 0x4585663f
+  offset: 9254
+  bitsize: 1
+}
+member {
+  id: 0xee06b6fb
+  name: "suspended_count"
+  type_id: 0x4585663f
+  offset: 10528
+}
+member {
+  id: 0x9523197c
+  name: "suspended_ports"
+  type_id: 0x33756485
+  offset: 4992
+}
+member {
+  id: 0x95d96aae
+  name: "suspended_ports"
+  type_id: 0xc9082b19
+  offset: 160
+}
+member {
+  id: 0xf5fbd358
+  name: "suspended_state"
+  type_id: 0x1205844a
+  offset: 32
+}
+member {
+  id: 0xf5fbdec8
+  name: "suspended_state"
+  type_id: 0x1205844a
+  offset: 256
+}
+member {
+  id: 0x7a973a33
+  name: "suspended_step"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x4ec6a52f
+  name: "suspended_time"
+  type_id: 0x92233392
+  offset: 2368
+}
+member {
+  id: 0x4207fd60
+  name: "sustainable_power"
+  type_id: 0xc9082b19
+  offset: 320
+}
+member {
+  id: 0x90e561c8
+  name: "svalue"
+  type_id: 0xdd6eef0a
+}
+member {
+  id: 0xae35f11c
+  name: "svcr"
+  type_id: 0x92233392
+  offset: 8832
+}
+member {
+  id: 0xae35f89b
+  name: "svcr"
+  type_id: 0x92233392
+  offset: 14720
+}
+member {
+  id: 0x81787084
+  name: "svdm_version"
+  type_id: 0xaca841ec
+  offset: 96
+}
+member {
+  id: 0x81787702
+  name: "svdm_version"
+  type_id: 0xaca841ec
+  offset: 7680
+}
+member {
+  id: 0x05e10aeb
+  name: "sve_max_vl"
+  type_id: 0x4585663f
+  offset: 14656
+}
+member {
+  id: 0x2e0a3ab1
+  name: "sve_state"
+  type_id: 0x18bd6530
+  offset: 5376
+}
+member {
+  id: 0x2e0a3f7d
+  name: "sve_state"
+  type_id: 0x18bd6530
+  offset: 14592
+}
+member {
+  id: 0x0faf2220
+  name: "svid"
+  type_id: 0x914dbfdc
+}
+member {
+  id: 0x0faf28a3
+  name: "svid"
+  type_id: 0x914dbfdc
+  offset: 7296
+}
+member {
+  id: 0xbc39ac28
+  name: "svid_index"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x457f2de9
+  name: "svids"
+  type_id: 0x6860ad66
+  offset: 64
+}
+member {
+  id: 0xa8bfaeca
+  name: "svm_cid"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x2bb44e63
+  name: "svm_family"
+  type_id: 0xe0705941
+}
+member {
+  id: 0xa8def237
+  name: "svm_flags"
+  type_id: 0xb3e7bac9
+  offset: 96
+}
+member {
+  id: 0x8baea52d
+  name: "svm_port"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x353b8efe
+  name: "svm_reserved1"
+  type_id: 0xc93e017b
+  offset: 16
+}
+member {
+  id: 0x6291bd31
+  name: "svm_zero"
+  type_id: 0x05a5a05d
+  offset: 104
+}
+member {
+  id: 0x89342c67
+  name: "sw"
+  type_id: 0xb914bfab
+  offset: 3712
+}
+member {
+  id: 0x899e550a
+  name: "sw"
+  type_id: 0x136a7f2f
+  offset: 8192
+}
+member {
+  id: 0x5e970f2a
+  name: "sw_caps"
+  type_id: 0xe7f64c31
+  offset: 10720
+}
+member {
+  id: 0x565fe930
+  name: "sw_devs"
+  type_id: 0x13ca4642
+}
+member {
+  id: 0x31451ed2
+  name: "sw_hash"
+  type_id: 0xb3e7bac9
+  offset: 9
+  bitsize: 1
+}
+member {
+  id: 0x52202ab0
+  name: "sw_reset"
+  type_id: 0x2e9195ef
+  offset: 640
+}
+member {
+  id: 0x6d9baf85
+  name: "swap"
+  type_id: 0xd079ba20
+}
+member {
+  id: 0xeb895922
+  name: "swap_activate"
+  type_id: 0x2fd46ff4
+  offset: 1088
+}
+member {
+  id: 0xc43ef2ec
+  name: "swap_complete"
+  type_id: 0x3fcbf304
+  offset: 7488
+}
+member {
+  id: 0x668c7f24
+  name: "swap_deactivate"
+  type_id: 0x0f388b6d
+  offset: 1152
+}
+member {
+  id: 0x6f574ae5
+  name: "swap_events_file"
+  type_id: 0x0ee0f933
+  offset: 11136
+}
+member {
+  id: 0xec19f1e8
+  name: "swap_extent_root"
+  type_id: 0xeb923a9b
+  offset: 1216
+}
+member {
+  id: 0xe1d98483
+  name: "swap_file"
+  type_id: 0x18ea6ae3
+  offset: 1344
+}
+member {
+  id: 0x43f21c51
+  name: "swap_lock"
+  type_id: 0xa7c362b0
+  offset: 7040
+}
+member {
+  id: 0xd08ccfb0
+  name: "swap_map"
+  type_id: 0x1df06cce
+  offset: 640
+}
+member {
+  id: 0xfac27e72
+  name: "swap_notify"
+  type_id: 0x0cf0f1be
+  offset: 512
+}
+member {
+  id: 0x7933afef
+  name: "swap_pending"
+  type_id: 0x6d7f5ff6
+  offset: 7424
+}
+member {
+  id: 0x2899f846
+  name: "swap_plug"
+  type_id: 0x0017d23e
+  offset: 320
+}
+member {
+  id: 0xc8bf0dce
+  name: "swap_readahead_info"
+  type_id: 0xb02b353a
+  offset: 1216
+}
+member {
+  id: 0x3fc3a783
+  name: "swap_reader"
+  type_id: 0x2b820c5e
+  offset: 64
+}
+member {
+  id: 0x8707ac6b
+  name: "swap_rw"
+  type_id: 0x2d54a581
+  offset: 1216
+}
+member {
+  id: 0x91692ea0
+  name: "swap_slot_free_notify"
+  type_id: 0x0e47b932
+  offset: 768
+}
+member {
+  id: 0x62f8cc7c
+  name: "swap_status"
+  type_id: 0x6720d32f
+  offset: 7744
+}
+member {
+  id: 0x7a46747c
+  name: "swap_storage"
+  type_id: 0x18ea6ae3
+  offset: 256
+}
+member {
+  id: 0x37490ca7
+  name: "swap_task_ctx"
+  type_id: 0x0caff987
+  offset: 1792
+}
+member {
+  id: 0x6f829472
+  name: "swap_x_y"
+  type_id: 0x6d7f5ff6
+  offset: 80
+}
+member {
+  id: 0xcb840ba6
+  name: "swapin_count"
+  type_id: 0xedf277ba
+  offset: 384
+}
+member {
+  id: 0x2f86e42b
+  name: "swapin_delay_total"
+  type_id: 0xedf277ba
+  offset: 448
+}
+member {
+  id: 0x3ae15676
+  name: "swaplist"
+  type_id: 0xd3c80119
+  offset: 448
+}
+member {
+  id: 0x88ac4bf2
+  name: "swapped"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0x74f180d0
+  name: "swappiness"
+  type_id: 0x6720d32f
+  offset: 9920
+}
+member {
+  id: 0x9c4e2512
+  name: "swbit"
+  type_id: 0xa562355d
+  offset: 1408
+}
+member {
+  id: 0x9c5258d3
+  name: "swbit"
+  type_id: 0xb914bfab
+  offset: 1600
+}
+member {
+  id: 0x0bc9608d
+  name: "switch_id"
+  type_id: 0xfe145033
+  offset: 96
+}
+member {
+  id: 0x5ed06c25
+  name: "switch_port"
+  type_id: 0x295c7202
+  offset: 993
+  bitsize: 1
+}
+member {
+  id: 0x552e8641
+  name: "switch_power_state"
+  type_id: 0x1b285d08
+  offset: 13952
+}
+member {
+  id: 0xc3e7232a
+  name: "switched_from"
+  type_id: 0x0c4b1d9d
+  offset: 1344
+}
+member {
+  id: 0x3f3b41ea
+  name: "switched_to"
+  type_id: 0x0c4b1d9d
+  offset: 1408
+}
+member {
+  id: 0x7b6d7eb2
+  name: "swizzle_irq"
+  type_id: 0x1f5c397b
+  offset: 7872
+}
+member {
+  id: 0xb36c4635
+  name: "swnode"
+  type_id: 0x3413d17b
+  offset: 512
+}
+member {
+  id: 0xb36c4a5a
+  name: "swnode"
+  type_id: 0x3413d17b
+  offset: 448
+}
+member {
+  id: 0xe4a96d72
+  name: "sx"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0x25eee9d4
+  name: "sy"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0x04a57576
+  name: "sym_val_to_name"
+  type_id: 0xe6d2b814
+  offset: 1664
+}
+member {
+  id: 0x47f7d600
+  name: "symbol_duration"
+  type_id: 0xc9082b19
+  offset: 1824
+}
+member {
+  id: 0x6b697008
+  name: "symbol_name"
+  type_id: 0x3e10b518
+  offset: 384
+}
+member {
+  id: 0x8d88e301
+  name: "symlink"
+  type_id: 0x12bd2d82
+}
+member {
+  id: 0x8db74514
+  name: "symlink"
+  type_id: 0x2d10204b
+  offset: 512
+}
+member {
+  id: 0x515f97e7
+  name: "symmetric_channels"
+  type_id: 0x4585663f
+  offset: 1665
+  bitsize: 1
+}
+member {
+  id: 0x515f99e8
+  name: "symmetric_channels"
+  type_id: 0x4585663f
+  offset: 1029
+  bitsize: 1
+}
+member {
+  id: 0x8ee4176e
+  name: "symmetric_rate"
+  type_id: 0x4585663f
+  offset: 1028
+  bitsize: 1
+}
+member {
+  id: 0x8ee417c2
+  name: "symmetric_rate"
+  type_id: 0x4585663f
+  offset: 1664
+  bitsize: 1
+}
+member {
+  id: 0xb31a3265
+  name: "symmetric_sample_bits"
+  type_id: 0x4585663f
+  offset: 1666
+  bitsize: 1
+}
+member {
+  id: 0xb31a3e47
+  name: "symmetric_sample_bits"
+  type_id: 0x4585663f
+  offset: 1030
+  bitsize: 1
+}
+member {
+  id: 0x2a7a0db6
+  name: "syms"
+  type_id: 0xedf277ba
+  offset: 64
+}
+member {
+  id: 0x2aa9f0c8
+  name: "syms"
+  type_id: 0x3e096c25
+  offset: 1984
+}
+member {
+  id: 0x5611fbcb
+  name: "symtab"
+  type_id: 0x33446e12
+}
+member {
+  id: 0x56e2856b
+  name: "symtab"
+  type_id: 0xc0330c41
+  offset: 128
+}
+member {
+  id: 0xf28e07a8
+  name: "syn"
+  type_id: 0xe8034002
+  offset: 105
+  bitsize: 1
+}
+member {
+  id: 0xd072e4b9
+  name: "syn_ack_timeout"
+  type_id: 0x0ddb38e3
+  offset: 448
+}
+member {
+  id: 0x501d2a59
+  name: "sync"
+  type_id: 0xc9082b19
+  offset: 384
+}
+member {
+  id: 0x50320a40
+  name: "sync"
+  type_id: 0xe62ebf07
+  offset: 1024
+}
+member {
+  id: 0x50c461ff
+  name: "sync"
+  type_id: 0x104ad696
+  offset: 192
+}
+member {
+  id: 0x50c46936
+  name: "sync"
+  type_id: 0x104ad696
+}
+member {
+  id: 0x50d0bd8c
+  name: "sync"
+  type_id: 0x049e6c75
+}
+member {
+  id: 0x50dab767
+  name: "sync"
+  type_id: 0x0e93a255
+  offset: 1728
+}
+member {
+  id: 0x50e484e0
+  name: "sync"
+  type_id: 0x30a584b4
+  offset: 1984
+}
+member {
+  id: 0x50f90fc8
+  name: "sync"
+  type_id: 0x2d2b5fad
+  offset: 448
+}
+member {
+  id: 0x052696c5
+  name: "sync_altsetting"
+  type_id: 0x5d8155a5
+  offset: 400
+}
+member {
+  id: 0xaa5b83a9
+  name: "sync_dma"
+  type_id: 0xe02e14d6
+  offset: 44608
+}
+member {
+  id: 0x349fecf2
+  name: "sync_endpoint"
+  type_id: 0x24706e28
+  offset: 896
+}
+member {
+  id: 0x19c0d237
+  name: "sync_ep"
+  type_id: 0x5d8155a5
+  offset: 384
+}
+member {
+  id: 0x2926683d
+  name: "sync_ep_idx"
+  type_id: 0x5d8155a5
+  offset: 408
+}
+member {
+  id: 0xd1c4a29b
+  name: "sync_file_list"
+  type_id: 0xd3c80119
+  offset: 320
+}
+member {
+  id: 0x57f195a4
+  name: "sync_fs"
+  type_id: 0x2ff9c73d
+  offset: 512
+}
+member {
+  id: 0x93ba44c7
+  name: "sync_handle"
+  type_id: 0xe8034002
+  offset: 416
+}
+member {
+  id: 0x96fae129
+  name: "sync_iface"
+  type_id: 0x5d8155a5
+  offset: 392
+}
+member {
+  id: 0x335c5ca9
+  name: "sync_interval"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0xc93d7567
+  name: "sync_io"
+  type_id: 0x74d29cf1
+  offset: 3776
+}
+member {
+  id: 0x78f95a52
+  name: "sync_irq"
+  type_id: 0x6720d32f
+  offset: 20192
+}
+member {
+  id: 0x665c19f0
+  name: "sync_mode"
+  type_id: 0xb3e7bac9
+  offset: 24
+}
+member {
+  id: 0x66d6b0bc
+  name: "sync_mode"
+  type_id: 0x39483c8a
+  offset: 256
+}
+member {
+  id: 0x8b4c11b0
+  name: "sync_range_flags"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x76dd1888
+  name: "sync_recv"
+  type_id: 0x6d7f5ff6
+  offset: 912
+}
+member {
+  id: 0x4431d612
+  name: "sync_sg_for_cpu"
+  type_id: 0x0e84d226
+  offset: 1088
+}
+member {
+  id: 0xbeb08c48
+  name: "sync_sg_for_device"
+  type_id: 0x0e84d226
+  offset: 1152
+}
+member {
+  id: 0xaa62c88f
+  name: "sync_single_for_cpu"
+  type_id: 0x0e7c0293
+  offset: 960
+}
+member {
+  id: 0x042805d7
+  name: "sync_single_for_device"
+  type_id: 0x0e7c0293
+  offset: 1024
+}
+member {
+  id: 0x6cdf2a62
+  name: "sync_sink"
+  type_id: 0x24706e28
+  offset: 640
+}
+member {
+  id: 0x9ec45d54
+  name: "sync_source"
+  type_id: 0x24706e28
+  offset: 576
+}
+member {
+  id: 0x2ae2f8e5
+  name: "sync_state"
+  type_id: 0x0e93a255
+  offset: 576
+}
+member {
+  id: 0x2ae2fa8f
+  name: "sync_state"
+  type_id: 0x0e93a255
+  offset: 512
+}
+member {
+  id: 0x86e9821c
+  name: "sync_stop"
+  type_id: 0x2cbb953f
+  offset: 448
+}
+member {
+  id: 0x86e9cde0
+  name: "sync_stop"
+  type_id: 0x2cf2c077
+  offset: 1920
+}
+member {
+  id: 0xcf67dd03
+  name: "sync_table"
+  type_id: 0x2e9fe637
+  offset: 128
+}
+member {
+  id: 0x998dc09e
+  name: "sync_work"
+  type_id: 0x1f3c8679
+  offset: 9984
+}
+member {
+  id: 0xc5450536
+  name: "sync_write"
+  type_id: 0x2f4d85b2
+  offset: 64
+}
+member {
+  id: 0xf7e957a9
+  name: "syncbuf"
+  type_id: 0x0483e6f8
+  offset: 44544
+}
+member {
+  id: 0xb574687c
+  name: "synced"
+  type_id: 0x4585663f
+  offset: 736
+  bitsize: 1
+}
+member {
+  id: 0x6038fb8d
+  name: "synchronize_cbs"
+  type_id: 0x0c254fa0
+  offset: 512
+}
+member {
+  id: 0xf820ab53
+  name: "syncinterval"
+  type_id: 0x4585663f
+  offset: 45280
+}
+member {
+  id: 0x699bf8aa
+  name: "syncmaxsize"
+  type_id: 0x4585663f
+  offset: 45184
+}
+member {
+  id: 0xa06350f4
+  name: "syncobj_idr"
+  type_id: 0x04b89667
+  offset: 768
+}
+member {
+  id: 0xdd5990f9
+  name: "syncobj_table_lock"
+  type_id: 0xf313e71a
+  offset: 960
+}
+member {
+  id: 0x30806371
+  name: "syncookie"
+  type_id: 0x295c7202
+  offset: 1176
+  bitsize: 1
+}
+member {
+  id: 0x0d9bb4ec
+  name: "syncp"
+  type_id: 0x104ad696
+  offset: 192
+}
+member {
+  id: 0x0d9bb550
+  name: "syncp"
+  type_id: 0x104ad696
+  offset: 2368
+}
+member {
+  id: 0x0d9bb5e7
+  name: "syncp"
+  type_id: 0x104ad696
+  offset: 128
+}
+member {
+  id: 0x0d9bba5c
+  name: "syncp"
+  type_id: 0x104ad696
+  offset: 640
+}
+member {
+  id: 0x0d9bbc25
+  name: "syncp"
+  type_id: 0x104ad696
+}
+member {
+  id: 0x0d9bbc8e
+  name: "syncp"
+  type_id: 0x104ad696
+  offset: 256
+}
+member {
+  id: 0x5debde6d
+  name: "syncr_busy"
+  type_id: 0x74d29cf1
+  offset: 31776
+}
+member {
+  id: 0x6f97ea5f
+  name: "syndbg"
+  type_id: 0x14e96be8
+}
+member {
+  id: 0x545bc45d
+  name: "synic"
+  type_id: 0x14e96bc2
+}
+member {
+  id: 0x8e7c5fc5
+  name: "synq_overflow_ts"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0x5f2a979c
+  name: "sys_monoraw"
+  type_id: 0x11c404ba
+  offset: 128
+}
+member {
+  id: 0xef30f0c8
+  name: "sys_realtime"
+  type_id: 0x11c404ba
+  offset: 64
+}
+member {
+  id: 0x792a2a11
+  name: "sys_regs"
+  type_id: 0xc58b1858
+  offset: 6656
+}
+member {
+  id: 0x2349f1b8
+  name: "syscall_dispatch"
+  type_id: 0xff832d5d
+  offset: 18560
+}
+member {
+  id: 0x58034944
+  name: "syscall_iopoll"
+  type_id: 0x4585663f
+  offset: 263
+  bitsize: 1
+}
+member {
+  id: 0xf2142743
+  name: "syscall_ops"
+  type_id: 0x0b209cbf
+  offset: 384
+}
+member {
+  id: 0x4d2ae62e
+  name: "syscallno"
+  type_id: 0xd41e888f
+  offset: 2240
+}
+member {
+  id: 0x0085daff
+  name: "syscfs"
+  type_id: 0x92233392
+  offset: 256
+}
+member {
+  id: 0x919b625d
+  name: "syscore"
+  type_id: 0x6d7f5ff6
+  offset: 577
+  bitsize: 1
+}
+member {
+  id: 0x207fe04f
+  name: "syscr"
+  type_id: 0x92233392
+  offset: 128
+}
+member {
+  id: 0x0d06a9bb
+  name: "sysctl"
+  type_id: 0x7a3516be
+  offset: 1536
+}
+member {
+  id: 0x0d642b2f
+  name: "sysctl"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0x0dc0cd12
+  name: "sysctl"
+  type_id: 0xbc5b58b9
+}
+member {
+  id: 0xdeefc673
+  name: "sysctl_acct"
+  type_id: 0x295c7202
+  offset: 24
+}
+member {
+  id: 0xa7267479
+  name: "sysctl_acq_expires"
+  type_id: 0xc9082b19
+  offset: 3104
+}
+member {
+  id: 0x3f7a174b
+  name: "sysctl_aevent_etime"
+  type_id: 0xc9082b19
+  offset: 3008
+}
+member {
+  id: 0x223e673d
+  name: "sysctl_aevent_rseqth"
+  type_id: 0xc9082b19
+  offset: 3040
+}
+member {
+  id: 0xed38d61b
+  name: "sysctl_checksum"
+  type_id: 0x295c7202
+  offset: 40
+}
+member {
+  id: 0x77eea581
+  name: "sysctl_events"
+  type_id: 0x295c7202
+  offset: 16
+}
+member {
+  id: 0x29b95bfe
+  name: "sysctl_fib_notify_on_flag_change"
+  type_id: 0x295c7202
+  offset: 4672
+}
+member {
+  id: 0x7c146a0a
+  name: "sysctl_fwmark_reflect"
+  type_id: 0x295c7202
+  offset: 2984
+}
+member {
+  id: 0x7bee0246
+  name: "sysctl_hdr"
+  type_id: 0x34544a3f
+}
+member {
+  id: 0x7bee0d76
+  name: "sysctl_hdr"
+  type_id: 0x34544a3f
+  offset: 3200
+}
+member {
+  id: 0x04607474
+  name: "sysctl_header"
+  type_id: 0x34544a3f
+  offset: 1984
+}
+member {
+  id: 0x2581f720
+  name: "sysctl_icmp_echo_enable_probe"
+  type_id: 0x295c7202
+  offset: 2504
+}
+member {
+  id: 0xd11b0661
+  name: "sysctl_icmp_echo_ignore_all"
+  type_id: 0x295c7202
+  offset: 2496
+}
+member {
+  id: 0xb1e99388
+  name: "sysctl_icmp_echo_ignore_broadcasts"
+  type_id: 0x295c7202
+  offset: 2512
+}
+member {
+  id: 0xe8b523f6
+  name: "sysctl_icmp_errors_use_inbound_ifaddr"
+  type_id: 0x295c7202
+  offset: 2528
+}
+member {
+  id: 0x4feaeb67
+  name: "sysctl_icmp_ignore_bogus_error_responses"
+  type_id: 0x295c7202
+  offset: 2520
+}
+member {
+  id: 0x15f35855
+  name: "sysctl_icmp_ratelimit"
+  type_id: 0x6720d32f
+  offset: 2560
+}
+member {
+  id: 0x4af4486b
+  name: "sysctl_icmp_ratemask"
+  type_id: 0x6720d32f
+  offset: 2592
+}
+member {
+  id: 0x99862748
+  name: "sysctl_igmp_llm_reports"
+  type_id: 0x295c7202
+  offset: 4680
+}
+member {
+  id: 0xe2937f2e
+  name: "sysctl_igmp_max_memberships"
+  type_id: 0x6720d32f
+  offset: 4704
+}
+member {
+  id: 0x91cdfe9a
+  name: "sysctl_igmp_max_msf"
+  type_id: 0x6720d32f
+  offset: 4736
+}
+member {
+  id: 0xcbbf5774
+  name: "sysctl_igmp_qrv"
+  type_id: 0x6720d32f
+  offset: 4768
+}
+member {
+  id: 0x2fb607f1
+  name: "sysctl_ip_autobind_reuse"
+  type_id: 0x295c7202
+  offset: 2936
+}
+member {
+  id: 0x20b2e8a5
+  name: "sysctl_ip_default_ttl"
+  type_id: 0x295c7202
+  offset: 2896
+}
+member {
+  id: 0x09f71709
+  name: "sysctl_ip_dynaddr"
+  type_id: 0x295c7202
+  offset: 2944
+}
+member {
+  id: 0xdf4be73b
+  name: "sysctl_ip_early_demux"
+  type_id: 0x295c7202
+  offset: 2952
+}
+member {
+  id: 0xb917d4b4
+  name: "sysctl_ip_fwd_update_priority"
+  type_id: 0x295c7202
+  offset: 2920
+}
+member {
+  id: 0x6c717da8
+  name: "sysctl_ip_fwd_use_pmtu"
+  type_id: 0x295c7202
+  offset: 2912
+}
+member {
+  id: 0x683682a2
+  name: "sysctl_ip_no_pmtu_disc"
+  type_id: 0x295c7202
+  offset: 2904
+}
+member {
+  id: 0x08f163d4
+  name: "sysctl_ip_nonlocal_bind"
+  type_id: 0x295c7202
+  offset: 2928
+}
+member {
+  id: 0x958b51ce
+  name: "sysctl_ip_prot_sock"
+  type_id: 0x6720d32f
+  offset: 5056
+}
+member {
+  id: 0x8c372bc0
+  name: "sysctl_larval_drop"
+  type_id: 0x6720d32f
+  offset: 3072
+}
+member {
+  id: 0xce87a023
+  name: "sysctl_local_reserved_ports"
+  type_id: 0x064d6086
+  offset: 4992
+}
+member {
+  id: 0xed537189
+  name: "sysctl_log_invalid"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0x118dc1ad
+  name: "sysctl_max_dgram_qlen"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x79bc3da9
+  name: "sysctl_max_syn_backlog"
+  type_id: 0x6720d32f
+  offset: 4224
+}
+member {
+  id: 0x198b6cfe
+  name: "sysctl_max_tw_buckets"
+  type_id: 0x6720d32f
+  offset: 576
+}
+member {
+  id: 0x584251b8
+  name: "sysctl_mem"
+  type_id: 0x3593bec8
+  offset: 2304
+}
+member {
+  id: 0xf9cbc457
+  name: "sysctl_nexthop_compat_mode"
+  type_id: 0x295c7202
+  offset: 2976
+}
+member {
+  id: 0x317a7392
+  name: "sysctl_rmem"
+  type_id: 0x13580d6c
+  offset: 2432
+}
+member {
+  id: 0xa81d563e
+  name: "sysctl_rmem_offset"
+  type_id: 0xc9082b19
+  offset: 2528
+}
+member {
+  id: 0xd6cd2ca4
+  name: "sysctl_somaxconn"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x8fb7bd15
+  name: "sysctl_table"
+  type_id: 0x18bd6530
+  offset: 384
+}
+member {
+  id: 0x4b3f6cc8
+  name: "sysctl_tcp_abort_on_overflow"
+  type_id: 0x295c7202
+  offset: 3504
+}
+member {
+  id: 0xe1746060
+  name: "sysctl_tcp_adv_win_scale"
+  type_id: 0x6720d32f
+  offset: 3552
+}
+member {
+  id: 0xbebcefd7
+  name: "sysctl_tcp_app_win"
+  type_id: 0x295c7202
+  offset: 3592
+}
+member {
+  id: 0xb8e37d35
+  name: "sysctl_tcp_autocorking"
+  type_id: 0x295c7202
+  offset: 3760
+}
+member {
+  id: 0x7f0f3380
+  name: "sysctl_tcp_base_mss"
+  type_id: 0x6720d32f
+  offset: 3040
+}
+member {
+  id: 0x9fa83912
+  name: "sysctl_tcp_challenge_ack_limit"
+  type_id: 0x6720d32f
+  offset: 3680
+}
+member {
+  id: 0xb1ae8222
+  name: "sysctl_tcp_child_ehash_entries"
+  type_id: 0x4585663f
+  offset: 4064
+}
+member {
+  id: 0x774e5026
+  name: "sysctl_tcp_comp_sack_delay_ns"
+  type_id: 0x33756485
+  offset: 4096
+}
+member {
+  id: 0x4432cea5
+  name: "sysctl_tcp_comp_sack_nr"
+  type_id: 0x295c7202
+  offset: 3272
+}
+member {
+  id: 0x8a901ce5
+  name: "sysctl_tcp_comp_sack_slack_ns"
+  type_id: 0x33756485
+  offset: 4160
+}
+member {
+  id: 0x50b0d003
+  name: "sysctl_tcp_dsack"
+  type_id: 0x295c7202
+  offset: 3584
+}
+member {
+  id: 0xe3e0be38
+  name: "sysctl_tcp_early_demux"
+  type_id: 0x295c7202
+  offset: 2960
+}
+member {
+  id: 0xe967b815
+  name: "sysctl_tcp_early_retrans"
+  type_id: 0x295c7202
+  offset: 3448
+}
+member {
+  id: 0xc994ba7a
+  name: "sysctl_tcp_ecn"
+  type_id: 0x295c7202
+  offset: 2880
+}
+member {
+  id: 0x85bb35ef
+  name: "sysctl_tcp_ecn_fallback"
+  type_id: 0x295c7202
+  offset: 2888
+}
+member {
+  id: 0x060f42d3
+  name: "sysctl_tcp_fack"
+  type_id: 0x295c7202
+  offset: 3512
+}
+member {
+  id: 0xdf142f76
+  name: "sysctl_tcp_fastopen"
+  type_id: 0x6720d32f
+  offset: 4256
+}
+member {
+  id: 0x41f3d9f7
+  name: "sysctl_tcp_fastopen_blackhole_timeout"
+  type_id: 0x4585663f
+  offset: 4416
+}
+member {
+  id: 0xbdbbe5a3
+  name: "sysctl_tcp_fin_timeout"
+  type_id: 0x6720d32f
+  offset: 3360
+}
+member {
+  id: 0x8c22335d
+  name: "sysctl_tcp_frto"
+  type_id: 0x295c7202
+  offset: 3600
+}
+member {
+  id: 0x855de6ed
+  name: "sysctl_tcp_fwmark_accept"
+  type_id: 0x295c7202
+  offset: 2992
+}
+member {
+  id: 0xf8eed10c
+  name: "sysctl_tcp_invalid_ratelimit"
+  type_id: 0x6720d32f
+  offset: 3776
+}
+member {
+  id: 0xa9c07b41
+  name: "sysctl_tcp_keepalive_intvl"
+  type_id: 0x6720d32f
+  offset: 3200
+}
+member {
+  id: 0xcedb9a78
+  name: "sysctl_tcp_keepalive_probes"
+  type_id: 0x295c7202
+  offset: 3232
+}
+member {
+  id: 0x0d29d271
+  name: "sysctl_tcp_keepalive_time"
+  type_id: 0x6720d32f
+  offset: 3168
+}
+member {
+  id: 0xf0a21c68
+  name: "sysctl_tcp_limit_output_bytes"
+  type_id: 0x6720d32f
+  offset: 3648
+}
+member {
+  id: 0x364aa10e
+  name: "sysctl_tcp_max_reordering"
+  type_id: 0x6720d32f
+  offset: 3520
+}
+member {
+  id: 0x712769f6
+  name: "sysctl_tcp_migrate_req"
+  type_id: 0x295c7202
+  offset: 3264
+}
+member {
+  id: 0x0481ab4a
+  name: "sysctl_tcp_min_rtt_wlen"
+  type_id: 0x6720d32f
+  offset: 3712
+}
+member {
+  id: 0xebe2af3a
+  name: "sysctl_tcp_min_snd_mss"
+  type_id: 0x6720d32f
+  offset: 3072
+}
+member {
+  id: 0xc7e6e121
+  name: "sysctl_tcp_min_tso_segs"
+  type_id: 0x295c7202
+  offset: 3744
+}
+member {
+  id: 0x381d17ec
+  name: "sysctl_tcp_moderate_rcvbuf"
+  type_id: 0x295c7202
+  offset: 3624
+}
+member {
+  id: 0x070aab3a
+  name: "sysctl_tcp_mtu_probe_floor"
+  type_id: 0x6720d32f
+  offset: 3008
+}
+member {
+  id: 0x9af09765
+  name: "sysctl_tcp_mtu_probing"
+  type_id: 0x295c7202
+  offset: 3000
+}
+member {
+  id: 0x59adc2d2
+  name: "sysctl_tcp_no_ssthresh_metrics_save"
+  type_id: 0x295c7202
+  offset: 3616
+}
+member {
+  id: 0x7218c28e
+  name: "sysctl_tcp_nometrics_save"
+  type_id: 0x295c7202
+  offset: 3608
+}
+member {
+  id: 0x0cbb4915
+  name: "sysctl_tcp_notsent_lowat"
+  type_id: 0x4585663f
+  offset: 3392
+}
+member {
+  id: 0x908eaef0
+  name: "sysctl_tcp_orphan_retries"
+  type_id: 0x295c7202
+  offset: 3344
+}
+member {
+  id: 0x20b218a7
+  name: "sysctl_tcp_pacing_ca_ratio"
+  type_id: 0x6720d32f
+  offset: 3840
+}
+member {
+  id: 0x4a4463fd
+  name: "sysctl_tcp_pacing_ss_ratio"
+  type_id: 0x6720d32f
+  offset: 3808
+}
+member {
+  id: 0x2ef4f0f3
+  name: "sysctl_tcp_probe_interval"
+  type_id: 0xc9082b19
+  offset: 3136
+}
+member {
+  id: 0x2943a006
+  name: "sysctl_tcp_probe_threshold"
+  type_id: 0x6720d32f
+  offset: 3104
+}
+member {
+  id: 0x3db8ca72
+  name: "sysctl_tcp_recovery"
+  type_id: 0x295c7202
+  offset: 3456
+}
+member {
+  id: 0x10d92cce
+  name: "sysctl_tcp_reflect_tos"
+  type_id: 0x295c7202
+  offset: 3768
+}
+member {
+  id: 0x7faf4469
+  name: "sysctl_tcp_reordering"
+  type_id: 0x6720d32f
+  offset: 3296
+}
+member {
+  id: 0x9aeee61e
+  name: "sysctl_tcp_retrans_collapse"
+  type_id: 0x295c7202
+  offset: 3480
+}
+member {
+  id: 0x89e0ecff
+  name: "sysctl_tcp_retries1"
+  type_id: 0x295c7202
+  offset: 3328
+}
+member {
+  id: 0xcb2f866e
+  name: "sysctl_tcp_retries2"
+  type_id: 0x295c7202
+  offset: 3336
+}
+member {
+  id: 0xadda64ae
+  name: "sysctl_tcp_rfc1337"
+  type_id: 0x295c7202
+  offset: 3496
+}
+member {
+  id: 0x7910cea0
+  name: "sysctl_tcp_rmem"
+  type_id: 0x0b0dc1ff
+  offset: 3968
+}
+member {
+  id: 0x49034fb3
+  name: "sysctl_tcp_sack"
+  type_id: 0x295c7202
+  offset: 3424
+}
+member {
+  id: 0xce4d3cf0
+  name: "sysctl_tcp_slow_start_after_idle"
+  type_id: 0x295c7202
+  offset: 3472
+}
+member {
+  id: 0xa71919cc
+  name: "sysctl_tcp_stdurg"
+  type_id: 0x295c7202
+  offset: 3488
+}
+member {
+  id: 0x2ef712c6
+  name: "sysctl_tcp_syn_retries"
+  type_id: 0x295c7202
+  offset: 3240
+}
+member {
+  id: 0x564e8268
+  name: "sysctl_tcp_synack_retries"
+  type_id: 0x295c7202
+  offset: 3248
+}
+member {
+  id: 0x59c3e5ae
+  name: "sysctl_tcp_syncookies"
+  type_id: 0x295c7202
+  offset: 3256
+}
+member {
+  id: 0x3517b778
+  name: "sysctl_tcp_thin_linear_timeouts"
+  type_id: 0x295c7202
+  offset: 3464
+}
+member {
+  id: 0x8c45d0aa
+  name: "sysctl_tcp_timestamps"
+  type_id: 0x295c7202
+  offset: 3440
+}
+member {
+  id: 0x5db4d8ed
+  name: "sysctl_tcp_tso_rtt_log"
+  type_id: 0x295c7202
+  offset: 3752
+}
+member {
+  id: 0xfc8a2bee
+  name: "sysctl_tcp_tso_win_divisor"
+  type_id: 0x295c7202
+  offset: 3632
+}
+member {
+  id: 0xfa41f87a
+  name: "sysctl_tcp_tw_reuse"
+  type_id: 0x295c7202
+  offset: 3352
+}
+member {
+  id: 0xe76fa154
+  name: "sysctl_tcp_window_scaling"
+  type_id: 0x295c7202
+  offset: 3432
+}
+member {
+  id: 0xe5ff33a4
+  name: "sysctl_tcp_wmem"
+  type_id: 0x0b0dc1ff
+  offset: 3872
+}
+member {
+  id: 0xd2ddbd2d
+  name: "sysctl_tcp_workaround_signed_windows"
+  type_id: 0x295c7202
+  offset: 3640
+}
+member {
+  id: 0x2a9193c8
+  name: "sysctl_tstamp"
+  type_id: 0x295c7202
+  offset: 32
+}
+member {
+  id: 0x4d9fc2aa
+  name: "sysctl_txrehash"
+  type_id: 0x295c7202
+  offset: 96
+}
+member {
+  id: 0xf71a4a50
+  name: "sysctl_udp_early_demux"
+  type_id: 0x295c7202
+  offset: 2968
+}
+member {
+  id: 0x635ddc7d
+  name: "sysctl_udp_rmem_min"
+  type_id: 0x6720d32f
+  offset: 4640
+}
+member {
+  id: 0xf7c1bdc7
+  name: "sysctl_udp_wmem_min"
+  type_id: 0x6720d32f
+  offset: 4608
+}
+member {
+  id: 0xbd2a501d
+  name: "sysctl_wmem"
+  type_id: 0x13580d6c
+  offset: 2368
+}
+member {
+  id: 0x9147d2f1
+  name: "sysctl_wmem_offset"
+  type_id: 0xc9082b19
+  offset: 2496
+}
+member {
+  id: 0x1cbe0e3f
+  name: "sysctls"
+  type_id: 0x34544a3f
+  offset: 4096
+}
+member {
+  id: 0x1cf1524b
+  name: "sysctls"
+  type_id: 0x7b06e63f
+  offset: 1408
+}
+member {
+  id: 0x6241f2ad
+  name: "syscw"
+  type_id: 0x92233392
+  offset: 192
+}
+member {
+  id: 0xe2456449
+  name: "sysdata"
+  type_id: 0x18bd6530
+  offset: 1856
+}
+member {
+  id: 0xe2456b42
+  name: "sysdata"
+  type_id: 0x18bd6530
+  offset: 7488
+}
+member {
+  id: 0xe2456fff
+  name: "sysdata"
+  type_id: 0x18bd6530
+  offset: 256
+}
+member {
+  id: 0x3d952d66
+  name: "sysdev"
+  type_id: 0x0258f96e
+  offset: 64
+}
+member {
+  id: 0xd747a7b6
+  name: "sysfs"
+  type_id: 0x4585663f
+  offset: 3270
+  bitsize: 1
+}
+member {
+  id: 0x0aaf78ba
+  name: "sysfs_attributes"
+  type_id: 0x18095f12
+  offset: 448
+}
+member {
+  id: 0x978612ce
+  name: "sysfs_attrs"
+  type_id: 0x0ee3dd73
+  offset: 384
+}
+member {
+  id: 0x3451ff36
+  name: "sysfs_dir_lock"
+  type_id: 0xa7c362b0
+  offset: 6720
+}
+member {
+  id: 0x5f2a809f
+  name: "sysfs_entry"
+  type_id: 0x1b5dc4bf
+  offset: 2240
+}
+member {
+  id: 0x8b2bbe4d
+  name: "sysfs_files_created"
+  type_id: 0x4585663f
+  offset: 320
+  bitsize: 1
+}
+member {
+  id: 0x25287e62
+  name: "sysfs_groups"
+  type_id: 0x809e12ef
+  offset: 17792
+}
+member {
+  id: 0x254dc235
+  name: "sysfs_groups"
+  type_id: 0xe52f2f44
+  offset: 7360
+}
+member {
+  id: 0x254dc3d1
+  name: "sysfs_groups"
+  type_id: 0xe52f2f44
+  offset: 3712
+}
+member {
+  id: 0x2eef2d94
+  name: "sysfs_links"
+  type_id: 0x4585663f
+  offset: 9255
+  bitsize: 1
+}
+member {
+  id: 0x9df338b5
+  name: "sysfs_lock"
+  type_id: 0xa7c362b0
+  offset: 6336
+}
+member {
+  id: 0x9df338ee
+  name: "sysfs_lock"
+  type_id: 0xa7c362b0
+  offset: 896
+}
+member {
+  id: 0xb9f1e7c4
+  name: "sysfs_ops"
+  type_id: 0x33657329
+  offset: 64
+}
+member {
+  id: 0x3a43a3e4
+  name: "sysfs_read_only"
+  type_id: 0x6d7f5ff6
+  offset: 10128
+}
+member {
+  id: 0x2cb1d0cd
+  name: "sysfs_registered"
+  type_id: 0x6d7f5ff6
+  offset: 768
+}
+member {
+  id: 0x295f2305
+  name: "sysfs_rx_queue_group"
+  type_id: 0x334c07d5
+  offset: 18048
+}
+member {
+  id: 0xc1372959
+  name: "sysman"
+  type_id: 0xae6ebc99
+  offset: 192
+}
+member {
+  id: 0x708541bb
+  name: "sysname"
+  type_id: 0xfeb89bd6
+}
+member {
+  id: 0x1e9bc077
+  name: "sysrq"
+  type_id: 0x33756485
+  offset: 2752
+}
+member {
+  id: 0x1e9bca50
+  name: "sysrq"
+  type_id: 0x33756485
+  offset: 6400
+}
+member {
+  id: 0x4d8ad507
+  name: "sysrq_ch"
+  type_id: 0x4585663f
+  offset: 2816
+}
+member {
+  id: 0x9b3f7786
+  name: "sysrq_seq"
+  type_id: 0x5d8155a5
+  offset: 2856
+}
+member {
+  id: 0x55d78597
+  name: "system"
+  type_id: 0x3e10b518
+}
+member {
+  id: 0x55e889a7
+  name: "system"
+  type_id: 0x011d1743
+  offset: 384
+}
+member {
+  id: 0xb39193a3
+  name: "system_event"
+  type_id: 0x0f6d86be
+}
+member {
+  id: 0x10e96a60
+  name: "system_load"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0x5a8ce3de
+  name: "system_suspend"
+  type_id: 0x4585663f
+  offset: 1664
+}
+member {
+  id: 0x545d0929
+  name: "system_suspending"
+  type_id: 0x6d7f5ff6
+  offset: 26368
+}
+member {
+  id: 0xbdc546d8
+  name: "systems"
+  type_id: 0xd3c80119
+  offset: 1792
+}
+member {
+  id: 0xd9182f78
+  name: "szopts"
+  type_id: 0xd78aa293
+  offset: 256
+}
+member {
+  id: 0xab23b73f
+  name: "t"
+  type_id: 0x9c649622
+}
+member {
+  id: 0x87bba0ec
+  name: "t1"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x87d7707b
+  name: "t1"
+  type_id: 0x295c7202
+}
+member {
+  id: 0xc517c4f5
+  name: "t2"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0xc57b1fc5
+  name: "t2"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0xc3b06341
+  name: "t391"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x0273ce8e
+  name: "t392"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x6ed362d4
+  name: "ta_get"
+  type_id: 0x4585663f
+  offset: 576
+}
+member {
+  id: 0x4255868f
+  name: "ta_go"
+  type_id: 0x4585663f
+  offset: 608
+}
+member {
+  id: 0xe6bc86a8
+  name: "ta_sure"
+  type_id: 0x4585663f
+  offset: 640
+}
+member {
+  id: 0xd50b957b
+  name: "taac_clks"
+  type_id: 0xc93e017b
+  offset: 32
+}
+member {
+  id: 0x526b1694
+  name: "taac_ns"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0xb62196ea
+  name: "table"
+  type_id: 0xcaaeb336
+  offset: 192
+}
+member {
+  id: 0xb6223810
+  name: "table"
+  type_id: 0xc9082b19
+  offset: 256
+}
+member {
+  id: 0xb6223c62
+  name: "table"
+  type_id: 0xc9082b19
+  offset: 288
+}
+member {
+  id: 0xb62fc331
+  name: "table"
+  type_id: 0xc4fb6843
+  offset: 192
+}
+member {
+  id: 0xb658da11
+  name: "table"
+  type_id: 0xb3e7bac9
+  offset: 32
+}
+member {
+  id: 0xb6620712
+  name: "table"
+  type_id: 0x89378254
+}
+member {
+  id: 0xb6c3e0b7
+  name: "table"
+  type_id: 0x28d027d4
+}
+member {
+  id: 0xb6cd92ad
+  name: "table"
+  type_id: 0x26a23d9b
+}
+member {
+  id: 0xb6d4bf02
+  name: "table"
+  type_id: 0x3f8f92cb
+}
+member {
+  id: 0xb6ea05f8
+  name: "table"
+  type_id: 0x0135683b
+}
+member {
+  id: 0xb6f603d8
+  name: "table"
+  type_id: 0x1d33485a
+}
+member {
+  id: 0x7e00079e
+  name: "table_count"
+  type_id: 0x6720d32f
+  offset: 672
+}
+member {
+  id: 0x4df2d47b
+  name: "table_fulls"
+  type_id: 0x33756485
+  offset: 704
+}
+member {
+  id: 0xd433db0c
+  name: "table_lock"
+  type_id: 0xf313e71a
+  offset: 704
+}
+member {
+  id: 0xff6245b9
+  name: "table_ptr"
+  type_id: 0x3ba8f155
+  offset: 9856
+}
+member {
+  id: 0xaecc14c6
+  name: "table_sz"
+  type_id: 0xf435685e
+  offset: 10048
+}
+member {
+  id: 0xb008455d
+  name: "tables"
+  type_id: 0x39c7d4d7
+  offset: 192
+}
+member {
+  id: 0xb0bb615b
+  name: "tables"
+  type_id: 0x8aefc272
+  offset: 288
+}
+member {
+  id: 0xd537e74c
+  name: "tag"
+  type_id: 0x92233392
+  offset: 128
+}
+member {
+  id: 0xd54ba9c9
+  name: "tag"
+  type_id: 0xee699492
+  offset: 160
+}
+member {
+  id: 0xd56cc14f
+  name: "tag"
+  type_id: 0xc9082b19
+  offset: 288
+}
+member {
+  id: 0xd56cc177
+  name: "tag"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0xd56cc2f5
+  name: "tag"
+  type_id: 0xc9082b19
+  offset: 3168
+}
+member {
+  id: 0xd5c2edbc
+  name: "tag"
+  type_id: 0x6720d32f
+  offset: 992
+}
+member {
+  id: 0xd5c2edc5
+  name: "tag"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0xb3d26169
+  name: "tag_alloc_policy"
+  type_id: 0x6720d32f
+  offset: 2592
+}
+member {
+  id: 0x8785dd84
+  name: "tag_list"
+  type_id: 0xd3c80119
+  offset: 1344
+}
+member {
+  id: 0x86820df4
+  name: "tag_list_lock"
+  type_id: 0xa7c362b0
+  offset: 960
+}
+member {
+  id: 0x0d5585db
+  name: "tag_set"
+  type_id: 0x99433372
+  offset: 1920
+}
+member {
+  id: 0x0d558dc7
+  name: "tag_set"
+  type_id: 0x99433372
+  offset: 128
+}
+member {
+  id: 0x0de00aa5
+  name: "tag_set"
+  type_id: 0x2cc0f57b
+  offset: 8128
+}
+member {
+  id: 0xd7cdcfc0
+  name: "tag_set_list"
+  type_id: 0xd3c80119
+  offset: 8192
+}
+member {
+  id: 0x682dc718
+  name: "tagged_supported"
+  type_id: 0x4585663f
+  offset: 2795
+  bitsize: 1
+}
+member {
+  id: 0x0b44c445
+  name: "tagged_writepages"
+  type_id: 0x4585663f
+  offset: 290
+  bitsize: 1
+}
+member {
+  id: 0xeb016e84
+  name: "tags"
+  type_id: 0x011604f7
+  offset: 64
+}
+member {
+  id: 0xeb098de5
+  name: "tags"
+  type_id: 0x09f23ef0
+  offset: 832
+}
+member {
+  id: 0xeb0dfd27
+  name: "tags"
+  type_id: 0x0d881d5f
+  offset: 2944
+}
+member {
+  id: 0xeb3300c7
+  name: "tags"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0xeb3cfcbb
+  name: "tags"
+  type_id: 0x3c80dade
+}
+member {
+  id: 0x109a31d9
+  name: "tagset_freed"
+  type_id: 0x3fcbf304
+  offset: 1664
+}
+member {
+  id: 0x78d7a51f
+  name: "tagset_refcnt"
+  type_id: 0x6f1daf87
+  offset: 1600
+}
+member {
+  id: 0x77893a0c
+  name: "tai"
+  type_id: 0x6720d32f
+  offset: 1280
+}
+member {
+  id: 0xee0ce3f8
+  name: "tail"
+  type_id: 0x914dbfdc
+  offset: 16
+}
+member {
+  id: 0xee1b858a
+  name: "tail"
+  type_id: 0x86265fdc
+  offset: 1664
+}
+member {
+  id: 0xee54a3ca
+  name: "tail"
+  type_id: 0xc9082b19
+  offset: 512
+}
+member {
+  id: 0xee75ad07
+  name: "tail"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0xee75af74
+  name: "tail"
+  type_id: 0xe8034002
+  offset: 112
+}
+member {
+  id: 0xee880718
+  name: "tail"
+  type_id: 0x15a30023
+  offset: 64
+}
+member {
+  id: 0xee98e652
+  name: "tail"
+  type_id: 0x054f691a
+  offset: 128
+}
+member {
+  id: 0xee98eb71
+  name: "tail"
+  type_id: 0x054f691a
+  offset: 64
+}
+member {
+  id: 0xeea3cb02
+  name: "tail"
+  type_id: 0x3e6239e1
+  offset: 128
+}
+member {
+  id: 0xeea8df8d
+  name: "tail"
+  type_id: 0x357909b2
+  offset: 1280
+}
+member {
+  id: 0xeeb4fed9
+  name: "tail"
+  type_id: 0x295c7202
+  offset: 40
+}
+member {
+  id: 0xeebe3723
+  name: "tail"
+  type_id: 0x239e18b5
+  offset: 128
+}
+member {
+  id: 0xeec21189
+  name: "tail"
+  type_id: 0x5fb59157
+  offset: 64
+}
+member {
+  id: 0xeed8259f
+  name: "tail"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xeed82a5c
+  name: "tail"
+  type_id: 0x4585663f
+  offset: 81952
+}
+member {
+  id: 0xeed82af8
+  name: "tail"
+  type_id: 0x4585663f
+  offset: 800
+}
+member {
+  id: 0xeee97265
+  name: "tail"
+  type_id: 0x74d29cf1
+}
+member {
+  id: 0xeefa84f3
+  name: "tail"
+  type_id: 0x6720d32f
+  offset: 288
+}
+member {
+  id: 0xeefa8977
+  name: "tail"
+  type_id: 0x6720d32f
+  offset: 32800
+}
+member {
+  id: 0xeefa89a9
+  name: "tail"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0xb6f630ef
+  name: "tail_call"
+  type_id: 0x3b18d313
+}
+member {
+  id: 0x677ef67b
+  name: "tail_call_reachable"
+  type_id: 0x6d7f5ff6
+  offset: 88
+}
+member {
+  id: 0x677efda2
+  name: "tail_call_reachable"
+  type_id: 0x6d7f5ff6
+  offset: 1256
+}
+member {
+  id: 0xb71d422b
+  name: "tail_page"
+  type_id: 0x33b88d23
+  offset: 576
+}
+member {
+  id: 0xb2bd6524
+  name: "tailcall_bypass"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0x5b130cab
+  name: "tailcall_target"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0x57b07fa2
+  name: "tailcall_target_stable"
+  type_id: 0x6d7f5ff6
+  offset: 384
+}
+member {
+  id: 0xdbcb1d62
+  name: "tails"
+  type_id: 0x8dcc9654
+  offset: 64
+}
+member {
+  id: 0xca16056c
+  name: "taints"
+  type_id: 0x33756485
+  offset: 5312
+}
+member {
+  id: 0x32137af5
+  name: "tap_delivered"
+  type_id: 0x6d7f5ff6
+  offset: 744
+}
+member {
+  id: 0xb344f263
+  name: "target"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xb344fbb9
+  name: "target"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xb36bdd95
+  name: "target"
+  type_id: 0xc9082b19
+  offset: 352
+}
+member {
+  id: 0xb376c254
+  name: "target"
+  type_id: 0xd41e888f
+  offset: 32
+}
+member {
+  id: 0xb38f067d
+  name: "target"
+  type_id: 0x2ddf5318
+  offset: 192
+}
+member {
+  id: 0xb38f7eae
+  name: "target"
+  type_id: 0x2da83e0f
+  offset: 448
+}
+member {
+  id: 0xb391af9b
+  name: "target"
+  type_id: 0x33756485
+  offset: 512
+}
+member {
+  id: 0xb3add302
+  name: "target"
+  type_id: 0x0f0b2702
+  offset: 128
+}
+member {
+  id: 0xb3bfc0e0
+  name: "target"
+  type_id: 0x1d19a9d5
+  offset: 768
+}
+member {
+  id: 0xb3c5f134
+  name: "target"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xb3c5f85e
+  name: "target"
+  type_id: 0x6720d32f
+  offset: 67200
+}
+member {
+  id: 0xb3da3bc9
+  name: "target"
+  type_id: 0x78ea2ea9
+}
+member {
+  id: 0x30229734
+  name: "target_alloc"
+  type_id: 0x2c69751f
+  offset: 1152
+}
+member {
+  id: 0x6b0b885d
+  name: "target_attrs"
+  type_id: 0x626cbe56
+  offset: 832
+}
+member {
+  id: 0xcc4dc055
+  name: "target_auid"
+  type_id: 0xe90b32b7
+  offset: 6400
+}
+member {
+  id: 0x8662f86e
+  name: "target_bias_level"
+  type_id: 0x66f6fc33
+  offset: 256
+}
+member {
+  id: 0xa2d76a12
+  name: "target_blocked"
+  type_id: 0x74d29cf1
+  offset: 7776
+}
+member {
+  id: 0x90a523b0
+  name: "target_btf_id"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x90a52751
+  name: "target_btf_id"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xbd8f94ee
+  name: "target_busy"
+  type_id: 0x74d29cf1
+  offset: 7744
+}
+member {
+  id: 0x5d352698
+  name: "target_class"
+  type_id: 0x914dbfdc
+  offset: 32
+}
+member {
+  id: 0xa726b996
+  name: "target_comm"
+  type_id: 0x42201dce
+  offset: 6528
+}
+member {
+  id: 0x694dae95
+  name: "target_destroy"
+  type_id: 0x0f2f59b0
+  offset: 1216
+}
+member {
+  id: 0xd5cac7cd
+  name: "target_fd"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xab12835f
+  name: "target_ifindex"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xb8074ffd
+  name: "target_index"
+  type_id: 0x2dac6659
+  offset: 512
+}
+member {
+  id: 0x54a97f6c
+  name: "target_intermediate"
+  type_id: 0x2dac6659
+  offset: 768
+}
+member {
+  id: 0xbc9fd2b0
+  name: "target_kn"
+  type_id: 0x3a534a58
+}
+member {
+  id: 0x3f41c8b9
+  name: "target_list"
+  type_id: 0xd3c80119
+  offset: 7744
+}
+member {
+  id: 0x497d095e
+  name: "target_name"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x00e1006a
+  name: "target_name_len"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x2f880827
+  name: "target_next_idx"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x6b1282d8
+  name: "target_node"
+  type_id: 0x15f4a5c7
+  offset: 448
+}
+member {
+  id: 0x6b6056ae
+  name: "target_node"
+  type_id: 0x6720d32f
+  offset: 448
+}
+member {
+  id: 0x6b6058c7
+  name: "target_node"
+  type_id: 0x6720d32f
+  offset: 8512
+}
+member {
+  id: 0x7f6f2d46
+  name: "target_obj_id"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xfe324600
+  name: "target_pid"
+  type_id: 0x49b889e7
+  offset: 6368
+}
+member {
+  id: 0xde35441e
+  name: "target_private_offset"
+  type_id: 0x6720d32f
+  offset: 2656
+}
+member {
+  id: 0x02a7ece6
+  name: "target_residency"
+  type_id: 0x4585663f
+  offset: 608
+}
+member {
+  id: 0x6d2e4fa7
+  name: "target_residency_ns"
+  type_id: 0x2e0f9112
+  offset: 448
+}
+member {
+  id: 0xaaa5aa42
+  name: "target_sessionid"
+  type_id: 0x4585663f
+  offset: 6464
+}
+member {
+  id: 0x30ee2098
+  name: "target_sid"
+  type_id: 0xc9082b19
+  offset: 6496
+}
+member {
+  id: 0xf7c7530f
+  name: "target_size"
+  type_id: 0x6720d32f
+  offset: 2624
+}
+member {
+  id: 0x5ada8db3
+  name: "target_type"
+  type_id: 0x914dbfdc
+  offset: 16
+}
+member {
+  id: 0xdadb91d4
+  name: "target_uid"
+  type_id: 0xe90b32b7
+  offset: 6432
+}
+member {
+  id: 0x4dbba87a
+  name: "target_value"
+  type_id: 0xd41e888f
+  offset: 128
+}
+member {
+  id: 0x1481d584
+  name: "target_vblank"
+  type_id: 0xc9082b19
+  offset: 2368
+}
+member {
+  id: 0x096d65bb
+  name: "target_vcpu"
+  type_id: 0x08dcfb76
+  offset: 384
+}
+member {
+  id: 0x16133746
+  name: "targets"
+  type_id: 0x0d107c2b
+  offset: 64
+}
+member {
+  id: 0x16377fa9
+  name: "targets"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x167e5754
+  name: "targets"
+  type_id: 0x607419c2
+  offset: 8256
+}
+member {
+  id: 0x2c7d614f
+  name: "targets_generation"
+  type_id: 0x6720d32f
+  offset: 160
+}
+member {
+  id: 0x9c26475e
+  name: "task"
+  type_id: 0x017df00c
+}
+member {
+  id: 0x9c286dc1
+  name: "task"
+  type_id: 0x0f5fa69b
+  offset: 192
+}
+member {
+  id: 0x9c3a213a
+  name: "task"
+  type_id: 0x1d19a9d5
+  offset: 704
+}
+member {
+  id: 0x9c3a2295
+  name: "task"
+  type_id: 0x1d19a9d5
+  offset: 384
+}
+member {
+  id: 0x9c3a2307
+  name: "task"
+  type_id: 0x1d19a9d5
+}
+member {
+  id: 0x9c3a24c0
+  name: "task"
+  type_id: 0x1d19a9d5
+  offset: 320
+}
+member {
+  id: 0x9c3a25c9
+  name: "task"
+  type_id: 0x1d19a9d5
+  offset: 3392
+}
+member {
+  id: 0x9c3a281f
+  name: "task"
+  type_id: 0x1d19a9d5
+  offset: 512
+}
+member {
+  id: 0x9c3a2a75
+  name: "task"
+  type_id: 0x1d19a9d5
+  offset: 576
+}
+member {
+  id: 0x9c3a2abf
+  name: "task"
+  type_id: 0x1d19a9d5
+  offset: 1600
+}
+member {
+  id: 0x9c3a2ac5
+  name: "task"
+  type_id: 0x1d19a9d5
+  offset: 128
+}
+member {
+  id: 0x9c3a2ba9
+  name: "task"
+  type_id: 0x1d19a9d5
+  offset: 768
+}
+member {
+  id: 0x9c82a603
+  name: "task"
+  type_id: 0xa5960bec
+  offset: 896
+}
+member {
+  id: 0xcfbd6d30
+  name: "task"
+  type_id: 0xedf277ba
+  offset: 333
+  bitsize: 1
+}
+member {
+  id: 0x08a5f0a3
+  name: "task_change_group"
+  type_id: 0x0f67b75e
+  offset: 1664
+}
+member {
+  id: 0x1bc3eaec
+  name: "task_ctx"
+  type_id: 0x23a73732
+  offset: 2368
+}
+member {
+  id: 0xdb076f0a
+  name: "task_ctx_cache"
+  type_id: 0x2efd5036
+  offset: 1728
+}
+member {
+  id: 0xf638895f
+  name: "task_ctx_data"
+  type_id: 0x18bd6530
+  offset: 2112
+}
+member {
+  id: 0xc7f33665
+  name: "task_ctx_nr"
+  type_id: 0x6720d32f
+  offset: 672
+}
+member {
+  id: 0xd4492aeb
+  name: "task_dead"
+  type_id: 0x0f67b75e
+  offset: 1280
+}
+member {
+  id: 0xdad191df
+  name: "task_fd_query"
+  type_id: 0x0568605c
+}
+member {
+  id: 0x18e17d77
+  name: "task_fork"
+  type_id: 0x0f67b75e
+  offset: 1216
+}
+member {
+  id: 0x0cacbbdb
+  name: "task_frag"
+  type_id: 0x87af4650
+  offset: 22464
+}
+member {
+  id: 0xd4a831c8
+  name: "task_iters"
+  type_id: 0xd3c80119
+  offset: 1088
+}
+member {
+  id: 0x7e283ffd
+  name: "task_list"
+  type_id: 0x0bf3e543
+}
+member {
+  id: 0x7ef000f8
+  name: "task_list"
+  type_id: 0xd3c80119
+  offset: 64
+}
+member {
+  id: 0xc2e2fdee
+  name: "task_pid"
+  type_id: 0x49b889e7
+  offset: 896
+}
+member {
+  id: 0x1e8028d5
+  name: "task_size"
+  type_id: 0x33756485
+  offset: 384
+}
+member {
+  id: 0x1dd8331e
+  name: "task_tag"
+  type_id: 0x6720d32f
+  offset: 640
+}
+member {
+  id: 0x6f689d99
+  name: "task_tgid"
+  type_id: 0x49b889e7
+  offset: 928
+}
+member {
+  id: 0xa448a32a
+  name: "task_tick"
+  type_id: 0x0c4d6f90
+  offset: 1152
+}
+member {
+  id: 0xcd43f02f
+  name: "task_woken"
+  type_id: 0x0c4b1d9d
+  offset: 832
+}
+member {
+  id: 0xda774dce
+  name: "task_work"
+  type_id: 0x1f3c8679
+  offset: 3200
+}
+member {
+  id: 0xda8b58b6
+  name: "task_work"
+  type_id: 0xe3222f5b
+  offset: 64
+}
+member {
+  id: 0xf991fe78
+  name: "task_work_cb"
+  type_id: 0x0e708ec6
+}
+member {
+  id: 0x26db277c
+  name: "task_works"
+  type_id: 0x3258b271
+  offset: 18240
+}
+member {
+  id: 0x1fc67c74
+  name: "tasks"
+  type_id: 0x33756485
+  offset: 11
+  bitsize: 53
+}
+member {
+  id: 0xe7b0c47e
+  name: "tasks"
+  type_id: 0x9bee62e7
+  offset: 128
+}
+member {
+  id: 0xe7b602af
+  name: "tasks"
+  type_id: 0x9d2c4a95
+  offset: 32
+}
+member {
+  id: 0xe7f8e9e2
+  name: "tasks"
+  type_id: 0xd3c80119
+  offset: 704
+}
+member {
+  id: 0xe7f8ef87
+  name: "tasks"
+  type_id: 0xd3c80119
+  offset: 10880
+}
+member {
+  id: 0x197cb371
+  name: "tasks_timeline"
+  type_id: 0xd0f3b5bf
+  offset: 384
+}
+member {
+  id: 0x5ecb1260
+  name: "tb6_hlist"
+  type_id: 0x49a73111
+}
+member {
+  id: 0x2c9d891b
+  name: "tb6_id"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0x14001179
+  name: "tb6_lock"
+  type_id: 0xf313e71a
+  offset: 160
+}
+member {
+  id: 0x07e47324
+  name: "tb6_peers"
+  type_id: 0x151842c6
+  offset: 768
+}
+member {
+  id: 0x53dda33d
+  name: "tb6_root"
+  type_id: 0xadf8fff6
+  offset: 192
+}
+member {
+  id: 0x69741a59
+  name: "tb_data"
+  type_id: 0x064d6086
+  offset: 320
+}
+member {
+  id: 0x9be0b947
+  name: "tb_hlist"
+  type_id: 0x49a73111
+}
+member {
+  id: 0x4baf83e4
+  name: "tb_id"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0xa9cd01b9
+  name: "tb_num_default"
+  type_id: 0x6720d32f
+  offset: 160
+}
+member {
+  id: 0xedd1301c
+  name: "tbl"
+  type_id: 0x38df6aa0
+}
+member {
+  id: 0xedd139de
+  name: "tbl"
+  type_id: 0x38df6aa0
+  offset: 128
+}
+member {
+  id: 0xedfea14a
+  name: "tbl"
+  type_id: 0x1749fb69
+  offset: 320
+}
+member {
+  id: 0xedfea26c
+  name: "tbl"
+  type_id: 0x1749fb69
+  offset: 64
+}
+member {
+  id: 0x38f6c3ef
+  name: "tbp"
+  type_id: 0x160c256a
+  offset: 256
+}
+member {
+  id: 0x8179189a
+  name: "tc"
+  type_id: 0x295c7202
+  offset: 48
+}
+member {
+  id: 0x81791960
+  name: "tc"
+  type_id: 0x295c7202
+  offset: 32
+}
+member {
+  id: 0x67a8a899
+  name: "tc_at_ingress"
+  type_id: 0xb3e7bac9
+  offset: 23
+  bitsize: 1
+}
+member {
+  id: 0xe014f69c
+  name: "tc_index"
+  type_id: 0xe8034002
+  offset: 48
+}
+member {
+  id: 0xd7893e3d
+  name: "tc_skip_classify"
+  type_id: 0xb3e7bac9
+  offset: 22
+  bitsize: 1
+}
+member {
+  id: 0xcf7bfd59
+  name: "tc_stats"
+  type_id: 0x30dfd6aa
+  offset: 448
+}
+member {
+  id: 0x4da040e2
+  name: "tc_to_txq"
+  type_id: 0x5413165d
+  offset: 18288
+}
+member {
+  id: 0xa78058d5
+  name: "tcd"
+  type_id: 0x04ca9246
+  offset: 9408
+}
+member {
+  id: 0x2fbd180e
+  name: "tcf_block"
+  type_id: 0x28dbcbe3
+  offset: 576
+}
+member {
+  id: 0x2cc7c467
+  name: "tcfa_action"
+  type_id: 0x6720d32f
+  offset: 288
+}
+member {
+  id: 0x019c96cf
+  name: "tcfa_bindcnt"
+  type_id: 0x74d29cf1
+  offset: 256
+}
+member {
+  id: 0x3b50b2ff
+  name: "tcfa_bstats"
+  type_id: 0x2d385376
+  offset: 640
+}
+member {
+  id: 0x0409c628
+  name: "tcfa_bstats_hw"
+  type_id: 0x2d385376
+  offset: 768
+}
+member {
+  id: 0x9c837f56
+  name: "tcfa_flags"
+  type_id: 0xc9082b19
+  offset: 1536
+}
+member {
+  id: 0xd78dde13
+  name: "tcfa_index"
+  type_id: 0xc9082b19
+  offset: 192
+}
+member {
+  id: 0x596ac1ed
+  name: "tcfa_lock"
+  type_id: 0xf313e71a
+  offset: 1152
+}
+member {
+  id: 0x3b0f1bb9
+  name: "tcfa_qstats"
+  type_id: 0x1c5200f3
+  offset: 896
+}
+member {
+  id: 0x93b2f806
+  name: "tcfa_rate_est"
+  type_id: 0x26b864aa
+  offset: 1088
+}
+member {
+  id: 0xdcd788ff
+  name: "tcfa_refcnt"
+  type_id: 0xa722c13e
+  offset: 224
+}
+member {
+  id: 0xce287368
+  name: "tcfa_tm"
+  type_id: 0xe0b08da9
+  offset: 320
+}
+member {
+  id: 0x51579d7e
+  name: "tclass"
+  type_id: 0x914dbfdc
+  offset: 64
+}
+member {
+  id: 0x51753743
+  name: "tclass"
+  type_id: 0xb3e7bac9
+  offset: 288
+}
+member {
+  id: 0xbb99034f
+  name: "tclassid"
+  type_id: 0xe62ebf07
+  offset: 864
+}
+member {
+  id: 0xa3b1e4c0
+  name: "tcm__pad1"
+  type_id: 0x5d8155a5
+  offset: 8
+}
+member {
+  id: 0x0de44bd8
+  name: "tcm__pad2"
+  type_id: 0xc93e017b
+  offset: 16
+}
+member {
+  id: 0x2f131eaa
+  name: "tcm_family"
+  type_id: 0x5d8155a5
+}
+member {
+  id: 0x0e9da7f1
+  name: "tcm_handle"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x96986704
+  name: "tcm_ifindex"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0xe460861d
+  name: "tcm_info"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0x6ca67b93
+  name: "tcm_parent"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x1dbe96aa
+  name: "tco_stopped"
+  type_id: 0x6d7f5ff6
+  offset: 40
+}
+member {
+  id: 0xb0c31015
+  name: "tcp"
+  type_id: 0x3cc5d159
+  offset: 192
+}
+member {
+  id: 0xb0d11959
+  name: "tcp"
+  type_id: 0x2ec4540f
+}
+member {
+  id: 0xb0d2f083
+  name: "tcp"
+  type_id: 0x2d20b515
+  offset: 32
+}
+member {
+  id: 0xb0e242a5
+  name: "tcp"
+  type_id: 0x1d966a90
+  offset: 128
+}
+member {
+  id: 0xb0f592ee
+  name: "tcp"
+  type_id: 0x0a4fe389
+}
+member {
+  id: 0x416a89cd
+  name: "tcp_be_liberal"
+  type_id: 0x295c7202
+  offset: 456
+}
+member {
+  id: 0xa398de14
+  name: "tcp_challenge_count"
+  type_id: 0xc9082b19
+  offset: 4576
+}
+member {
+  id: 0x20af02e4
+  name: "tcp_challenge_timestamp"
+  type_id: 0xc9082b19
+  offset: 4544
+}
+member {
+  id: 0x77c51ee3
+  name: "tcp_congestion_control"
+  type_id: 0x30ba0612
+  offset: 4288
+}
+member {
+  id: 0x1de37c96
+  name: "tcp_data_split"
+  type_id: 0x295c7202
+  offset: 32
+}
+member {
+  id: 0x57a7a25c
+  name: "tcp_death_row"
+  type_id: 0x53a9065e
+}
+member {
+  id: 0x26715148
+  name: "tcp_fastopen_ctx"
+  type_id: 0x0d12f45b
+  offset: 4352
+}
+member {
+  id: 0x1e0430bf
+  name: "tcp_hdrlen"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0xc0a9db63
+  name: "tcp_ignore_invalid_rst"
+  type_id: 0x295c7202
+  offset: 472
+}
+member {
+  id: 0x798ceb2c
+  name: "tcp_ip4_spec"
+  type_id: 0xdc098d1a
+}
+member {
+  id: 0x2266bedc
+  name: "tcp_ip6_spec"
+  type_id: 0xe7754efc
+}
+member {
+  id: 0x203df644
+  name: "tcp_loose"
+  type_id: 0x295c7202
+  offset: 448
+}
+member {
+  id: 0x76ddec24
+  name: "tcp_max_retrans"
+  type_id: 0x295c7202
+  offset: 464
+}
+member {
+  id: 0x92478c56
+  name: "tcp_rtx_queue"
+  type_id: 0xeb923a9b
+}
+member {
+  id: 0x5878fd7b
+  name: "tcp_seq"
+  type_id: 0xc9082b19
+  offset: 160
+}
+member {
+  id: 0x164bcb7c
+  name: "tcp_sk"
+  type_id: 0x1d44326e
+  offset: 4800
+}
+member {
+  id: 0xd2464ed0
+  name: "tcp_statistics"
+  type_id: 0x2bfae072
+  offset: 128
+}
+member {
+  id: 0xcdde047e
+  name: "tcp_tsorted_anchor"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0xee1e03ec
+  name: "tcpc"
+  type_id: 0x396fe4f8
+  offset: 1280
+}
+member {
+  id: 0xeee895ab
+  name: "tcpc"
+  type_id: 0xcfff757d
+  offset: 256
+}
+member {
+  id: 0x285a3906
+  name: "tcpmem"
+  type_id: 0xd079ba20
+  offset: 6656
+}
+member {
+  id: 0x9cdca32e
+  name: "tcpmem_active"
+  type_id: 0x6d7f5ff6
+  offset: 14080
+}
+member {
+  id: 0x93bed98e
+  name: "tcpmem_pressure"
+  type_id: 0x6720d32f
+  offset: 14112
+}
+member {
+  id: 0x8c1ae929
+  name: "tcpv_enabled"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x08c59955
+  name: "tcpv_minrtt"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0xef68366e
+  name: "tcpv_rtt"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x24caa663
+  name: "tcpv_rttcnt"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x3164c440
+  name: "tcr"
+  type_id: 0x1a70d021
+  offset: 64
+}
+member {
+  id: 0x31b7b561
+  name: "tcr"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x36605bb5
+  name: "tctx_list"
+  type_id: 0xd3c80119
+  offset: 9920
+}
+member {
+  id: 0x5ad5289c
+  name: "td"
+  type_id: 0x05943b52
+  offset: 7296
+}
+member {
+  id: 0x43a6cfb9
+  name: "td_end"
+  type_id: 0x35fdd62d
+}
+member {
+  id: 0x6f1e609b
+  name: "td_list"
+  type_id: 0xd3c80119
+  offset: 384
+}
+member {
+  id: 0x6f1e68cb
+  name: "td_list"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0x36bc1522
+  name: "td_maxack"
+  type_id: 0x35fdd62d
+  offset: 96
+}
+member {
+  id: 0x8eed7305
+  name: "td_maxend"
+  type_id: 0x35fdd62d
+  offset: 32
+}
+member {
+  id: 0x8a35f63c
+  name: "td_maxwin"
+  type_id: 0x35fdd62d
+  offset: 64
+}
+member {
+  id: 0xceee1d0b
+  name: "td_scale"
+  type_id: 0x0abe9fd1
+  offset: 128
+}
+member {
+  id: 0xea173d2f
+  name: "tdc"
+  type_id: 0x4ded125a
+  offset: 960
+}
+member {
+  id: 0x7649cc70
+  name: "tdc_const"
+  type_id: 0x384684b1
+  offset: 896
+}
+member {
+  id: 0xacdaa778
+  name: "tdcf"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0xf0e59bf5
+  name: "tdcf_max"
+  type_id: 0xc9082b19
+  offset: 160
+}
+member {
+  id: 0x74b8d5ec
+  name: "tdcf_min"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0x4d1e2e46
+  name: "tdco"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x1557e955
+  name: "tdco_max"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0x93564ea2
+  name: "tdco_min"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0xbb05dbb5
+  name: "tdcv"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x23fd8f72
+  name: "tdcv_max"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x8c1427c2
+  name: "tdcv_min"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xf874a0c8
+  name: "tdm_slot_width"
+  type_id: 0x0baa70a7
+  offset: 288
+}
+member {
+  id: 0x45d57c9e
+  name: "tdm_slots"
+  type_id: 0x0baa70a7
+  offset: 256
+}
+member {
+  id: 0x2e0294e1
+  name: "te1"
+  type_id: 0x217dc8c4
+}
+member {
+  id: 0xd7fbd304
+  name: "te_avtab"
+  type_id: 0xcab227f8
+  offset: 2432
+}
+member {
+  id: 0x249ad332
+  name: "te_cond_avtab"
+  type_id: 0xcab227f8
+  offset: 3136
+}
+member {
+  id: 0xc16e0c1e
+  name: "teardown"
+  type_id: 0x0ee450d7
+  offset: 192
+}
+member {
+  id: 0xb6388968
+  name: "teardown_mc"
+  type_id: 0xce6b97ea
+  offset: 64
+}
+member {
+  id: 0xc6b10bc0
+  name: "teardown_stage2_mc"
+  type_id: 0xce6b97ea
+  offset: 192
+}
+member {
+  id: 0x1bd6a7d2
+  name: "technology"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x93b657d5
+  name: "temp"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x93c9c9d9
+  name: "temp"
+  type_id: 0x18bd6530
+  offset: 832
+}
+member {
+  id: 0x680ad66e
+  name: "temp_alert_max"
+  type_id: 0x6720d32f
+  offset: 1472
+}
+member {
+  id: 0xc09003f9
+  name: "temp_alert_min"
+  type_id: 0x6720d32f
+  offset: 1440
+}
+member {
+  id: 0x206dbc2c
+  name: "temp_ambient_alert_max"
+  type_id: 0x6720d32f
+  offset: 1408
+}
+member {
+  id: 0x9495a573
+  name: "temp_ambient_alert_min"
+  type_id: 0x6720d32f
+  offset: 1376
+}
+member {
+  id: 0x0b82d7f7
+  name: "temp_limits"
+  type_id: 0x9ceff924
+  offset: 1376
+}
+member {
+  id: 0x1bb669d9
+  name: "temp_max"
+  type_id: 0x6720d32f
+  offset: 1536
+}
+member {
+  id: 0x8dc8880f
+  name: "temp_min"
+  type_id: 0x6720d32f
+  offset: 1504
+}
+member {
+  id: 0x01e38856
+  name: "temp_prefered_lft"
+  type_id: 0x0faae5b1
+  offset: 512
+}
+member {
+  id: 0x0b295601
+  name: "temp_size"
+  type_id: 0x4585663f
+  offset: 896
+}
+member {
+  id: 0x5f679fb2
+  name: "temp_valid_lft"
+  type_id: 0x0faae5b1
+  offset: 480
+}
+member {
+  id: 0x77af78a1
+  name: "tempaddr_list"
+  type_id: 0xd3c80119
+  offset: 7168
+}
+member {
+  id: 0x0a231583
+  name: "temperature"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x0a231cbc
+  name: "temperature"
+  type_id: 0x6720d32f
+  offset: 8448
+}
+member {
+  id: 0xb1694b94
+  name: "tenor_fb_quirk"
+  type_id: 0x4585663f
+  offset: 45217
+  bitsize: 1
+}
+member {
+  id: 0xe4674157
+  name: "terminate"
+  type_id: 0x0e1867ef
+  offset: 1472
+}
+member {
+  id: 0xb8e8d9b9
+  name: "termination"
+  type_id: 0x914dbfdc
+  offset: 1408
+}
+member {
+  id: 0x3ffa63b7
+  name: "termination_const"
+  type_id: 0x34809932
+  offset: 1344
+}
+member {
+  id: 0xa9931640
+  name: "termination_const_cnt"
+  type_id: 0x4585663f
+  offset: 1312
+}
+member {
+  id: 0xef3809df
+  name: "termination_gpio"
+  type_id: 0x2560a232
+  offset: 1472
+}
+member {
+  id: 0x9d8998dd
+  name: "termination_gpio_ohms"
+  type_id: 0x48fa2f14
+  offset: 1536
+}
+member {
+  id: 0xbb6e2797
+  name: "termios"
+  type_id: 0x05f487d6
+  offset: 1152
+}
+member {
+  id: 0xbbb7d9a7
+  name: "termios"
+  type_id: 0xdc0b0182
+  offset: 2816
+}
+member {
+  id: 0x2bb0baa2
+  name: "termios_locked"
+  type_id: 0xdc0b0182
+  offset: 3168
+}
+member {
+  id: 0xfbdb1b2a
+  name: "termios_rwsem"
+  type_id: 0x28b9ec9a
+  offset: 1920
+}
+member {
+  id: 0xdb714410
+  name: "terse_dump"
+  type_id: 0x2d32ee3e
+  offset: 1280
+}
+member {
+  id: 0x8db2ff16
+  name: "test"
+  type_id: 0x291e8a5b
+}
+member {
+  id: 0x8db2ffbd
+  name: "test"
+  type_id: 0x291e8a5b
+  offset: 256
+}
+member {
+  id: 0x8db5d70a
+  name: "test"
+  type_id: 0x2e3696f7
+}
+member {
+  id: 0x8db6a427
+  name: "test"
+  type_id: 0x2d427ca8
+  offset: 320
+}
+member {
+  id: 0xa6737c80
+  name: "test_cases"
+  type_id: 0x08ee566e
+  offset: 2304
+}
+member {
+  id: 0x72afecec
+  name: "test_mode"
+  type_id: 0x914dbfdc
+  offset: 58912
+}
+member {
+  id: 0x7e147258
+  name: "test_run"
+  type_id: 0x2effde7d
+}
+member {
+  id: 0x5b890e6e
+  name: "test_state_freq"
+  type_id: 0x6d7f5ff6
+  offset: 296
+}
+member {
+  id: 0xa10fc33f
+  name: "test_young"
+  type_id: 0x2f50a983
+  offset: 192
+}
+member {
+  id: 0x6ca576c7
+  name: "testinfo_len"
+  type_id: 0xe62ebf07
+  offset: 1472
+}
+member {
+  id: 0x232a8b54
+  name: "text"
+  type_id: 0x9611bf2f
+}
+member {
+  id: 0x2349e19b
+  name: "text"
+  type_id: 0xf57b706b
+}
+member {
+  id: 0xb58dc65f
+  name: "text_poke"
+  type_id: 0xedf277ba
+  offset: 353
+  bitsize: 1
+}
+member {
+  id: 0x61317943
+  name: "text_size"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x916d04d9
+  name: "texts"
+  type_id: 0x3e75499e
+  offset: 128
+}
+member {
+  id: 0x9532517b
+  name: "tfcpad"
+  type_id: 0xc9082b19
+  offset: 1376
+}
+member {
+  id: 0xacc24bfd
+  name: "tfm"
+  type_id: 0x0c485c36
+}
+member {
+  id: 0xacd094a4
+  name: "tfm"
+  type_id: 0x1e9705eb
+}
+member {
+  id: 0xacd64dcb
+  name: "tfm"
+  type_id: 0x1847a854
+  offset: 128
+}
+member {
+  id: 0xacd7c70e
+  name: "tfm"
+  type_id: 0x19c40476
+  offset: 256
+}
+member {
+  id: 0xacd9f989
+  name: "tfm"
+  type_id: 0x17fa285b
+}
+member {
+  id: 0x8507c99b
+  name: "tfmsize"
+  type_id: 0x4585663f
+  offset: 544
+}
+member {
+  id: 0xa1393361
+  name: "tfo_active_disable_stamp"
+  type_id: 0x33756485
+  offset: 4480
+}
+member {
+  id: 0x4e07a941
+  name: "tfo_active_disable_times"
+  type_id: 0x74d29cf1
+  offset: 4448
+}
+member {
+  id: 0x80f6907c
+  name: "tg"
+  type_id: 0xc9082b19
+  offset: 3
+  bitsize: 2
+}
+member {
+  id: 0x86755e72
+  name: "tg"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x86b8ddbd
+  name: "tg"
+  type_id: 0x2ba5754c
+  offset: 2688
+}
+member {
+  id: 0xdf0c791e
+  name: "tg_load_avg_contrib"
+  type_id: 0x33756485
+  offset: 2048
+}
+member {
+  id: 0x3c598738
+  name: "tgid"
+  type_id: 0x49b889e7
+  offset: 12704
+}
+member {
+  id: 0x141d2755
+  name: "thaw"
+  type_id: 0x2dd58efa
+  offset: 320
+}
+member {
+  id: 0x85b7b767
+  name: "thaw_early"
+  type_id: 0x2dd58efa
+  offset: 704
+}
+member {
+  id: 0x23483cfb
+  name: "thaw_noirq"
+  type_id: 0x2dd58efa
+  offset: 1088
+}
+member {
+  id: 0xfc7b6f7e
+  name: "thaw_super"
+  type_id: 0x2f9ee7ee
+  offset: 704
+}
+member {
+  id: 0x67e842ab
+  name: "thermal_instances"
+  type_id: 0xd3c80119
+  offset: 8192
+}
+member {
+  id: 0x67e843a2
+  name: "thermal_instances"
+  type_id: 0xd3c80119
+  offset: 8960
+}
+member {
+  id: 0xca538c03
+  name: "think_time"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x701b6c48
+  name: "this"
+  type_id: 0x0e6618c4
+  offset: 7296
+}
+member {
+  id: 0x2cfef737
+  name: "this_bw"
+  type_id: 0x92233392
+  offset: 576
+}
+member {
+  id: 0x2d659a6d
+  name: "this_device"
+  type_id: 0x0258f96e
+  offset: 384
+}
+member {
+  id: 0x6a3f16b1
+  name: "this_ev"
+  type_id: 0x97012809
+  offset: 33856
+}
+member {
+  id: 0xc33ad042
+  name: "this_id"
+  type_id: 0x6720d32f
+  offset: 2272
+}
+member {
+  id: 0xc33add81
+  name: "this_id"
+  type_id: 0x6720d32f
+  offset: 3904
+}
+member {
+  id: 0x0b535931
+  name: "thrashing_count"
+  type_id: 0xedf277ba
+  offset: 2624
+}
+member {
+  id: 0x530441eb
+  name: "thrashing_delay_total"
+  type_id: 0xedf277ba
+  offset: 2688
+}
+member {
+  id: 0xfc64178d
+  name: "thread"
+  type_id: 0x044ba8c8
+  offset: 128
+}
+member {
+  id: 0xfc7d453c
+  name: "thread"
+  type_id: 0x1d19a9d5
+  offset: 576
+}
+member {
+  id: 0xfc7d457d
+  name: "thread"
+  type_id: 0x1d19a9d5
+  offset: 3136
+}
+member {
+  id: 0xfc7d458c
+  name: "thread"
+  type_id: 0x1d19a9d5
+  offset: 128
+}
+member {
+  id: 0xfc7d4b89
+  name: "thread"
+  type_id: 0x1d19a9d5
+  offset: 320
+}
+member {
+  id: 0xfc7d4c4e
+  name: "thread"
+  type_id: 0x1d19a9d5
+}
+member {
+  id: 0xfcf60fe3
+  name: "thread"
+  type_id: 0x965abf66
+  offset: 29312
+}
+member {
+  id: 0x8b87e4f0
+  name: "thread_flags"
+  type_id: 0x33756485
+  offset: 512
+}
+member {
+  id: 0x3e5ba81d
+  name: "thread_fn"
+  type_id: 0xd92b1d75
+  offset: 256
+}
+member {
+  id: 0xb282a928
+  name: "thread_group"
+  type_id: 0xd3c80119
+  offset: 14080
+}
+member {
+  id: 0x46698f03
+  name: "thread_head"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0x0664cacd
+  name: "thread_id"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xa981eb2d
+  name: "thread_info"
+  type_id: 0x51c36be5
+}
+member {
+  id: 0x2582d3cd
+  name: "thread_isr"
+  type_id: 0xc9082b19
+  offset: 9600
+}
+member {
+  id: 0x000445e0
+  name: "thread_keyring"
+  type_id: 0x01a688ae
+  offset: 832
+}
+member {
+  id: 0xfdf621b8
+  name: "thread_mask"
+  type_id: 0x33756485
+  offset: 576
+}
+member {
+  id: 0x42810053
+  name: "thread_node"
+  type_id: 0xd3c80119
+  offset: 14208
+}
+member {
+  id: 0x36588889
+  name: "thread_notifier"
+  type_id: 0x3fcbf304
+  offset: 3328
+}
+member {
+  id: 0x27252943
+  name: "thread_pid"
+  type_id: 0x18456730
+  offset: 13504
+}
+member {
+  id: 0x90132b6a
+  name: "thread_sibling"
+  type_id: 0x1c04d361
+  offset: 128
+}
+member {
+  id: 0xc550b95e
+  name: "thread_task"
+  type_id: 0x1d19a9d5
+  offset: 3584
+}
+member {
+  id: 0x2a1ff9d0
+  name: "threaded"
+  type_id: 0x6d7f5ff6
+  offset: 1154
+  bitsize: 1
+}
+member {
+  id: 0x2a370fab
+  name: "threaded"
+  type_id: 0x4585663f
+  offset: 19209
+  bitsize: 1
+}
+member {
+  id: 0xf03d79fd
+  name: "threaded"
+  type_id: 0x6d7f5ff6
+  offset: 1728
+}
+member {
+  id: 0x000d6906
+  name: "threaded_csets"
+  type_id: 0xd3c80119
+  offset: 2112
+}
+member {
+  id: 0xc78acab3
+  name: "threaded_csets_node"
+  type_id: 0xd3c80119
+  offset: 2240
+}
+member {
+  id: 0x6f4904a6
+  name: "threadio"
+  type_id: 0x265fc1e0
+  offset: 6656
+}
+member {
+  id: 0xe1e18175
+  name: "threads"
+  type_id: 0xeb923a9b
+  offset: 128
+}
+member {
+  id: 0xd03ef149
+  name: "threads_active"
+  type_id: 0x74d29cf1
+  offset: 1728
+}
+member {
+  id: 0xb0ee8fc8
+  name: "threads_handled"
+  type_id: 0x74d29cf1
+  offset: 1312
+}
+member {
+  id: 0xb6a24236
+  name: "threads_handled_last"
+  type_id: 0x6720d32f
+  offset: 1344
+}
+member {
+  id: 0xb3ec22fd
+  name: "threads_oneshot"
+  type_id: 0x33756485
+  offset: 1664
+}
+member {
+  id: 0x565beb91
+  name: "threshold"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0x56fabdc6
+  name: "threshold"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x3b00e790
+  name: "thresholds"
+  type_id: 0x2f2113b1
+  offset: 12096
+}
+member {
+  id: 0xb2fb579d
+  name: "thresholds_lock"
+  type_id: 0xa7c362b0
+  offset: 11712
+}
+member {
+  id: 0xca35afa6
+  name: "throtl_slice"
+  type_id: 0x4585663f
+  offset: 1216
+}
+member {
+  id: 0xca51229f
+  name: "throttle"
+  type_id: 0x0c59c5c5
+  offset: 3520
+}
+member {
+  id: 0xca512364
+  name: "throttle"
+  type_id: 0x0c59c5c5
+  offset: 960
+}
+member {
+  id: 0xca52008f
+  name: "throttle"
+  type_id: 0x0f72ddf9
+}
+member {
+  id: 0xca53c8c1
+  name: "throttle"
+  type_id: 0x0ebd5484
+  offset: 320
+}
+member {
+  id: 0xca53ccbc
+  name: "throttle"
+  type_id: 0x0ebd5484
+  offset: 832
+}
+member {
+  id: 0xca728ce1
+  name: "throttle"
+  type_id: 0x2ff974a7
+  offset: 320
+}
+member {
+  id: 0xce50971f
+  name: "throttle_mutex"
+  type_id: 0xa7c362b0
+  offset: 1536
+}
+member {
+  id: 0xbac6f840
+  name: "throttle_queue"
+  type_id: 0x09427c40
+  offset: 23232
+}
+member {
+  id: 0xe879699b
+  name: "tick"
+  type_id: 0x39470e64
+  offset: 704
+}
+member {
+  id: 0x979a95d2
+  name: "tick_delta"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0xa20e0a6e
+  name: "tick_resume"
+  type_id: 0x2cc33558
+  offset: 832
+}
+member {
+  id: 0x080a399d
+  name: "tick_stable"
+  type_id: 0x0ff0075d
+  offset: 1088
+}
+member {
+  id: 0x60d3842f
+  name: "ticks"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0xaf70c450
+  name: "ticks_without_resched"
+  type_id: 0x6720d32f
+  offset: 23040
+}
+member {
+  id: 0x641d97b7
+  name: "tid"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x6432bc18
+  name: "tid"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x64e7e322
+  name: "tid"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x3bb0b3ab
+  name: "tid_config_support"
+  type_id: 0x35992404
+  offset: 11520
+}
+member {
+  id: 0x8aff197b
+  name: "tid_entry"
+  type_id: 0x056558d6
+  offset: 640
+}
+member {
+  id: 0x7d191394
+  name: "tile_blob_ptr"
+  type_id: 0x343ebce3
+  offset: 14912
+}
+member {
+  id: 0xa9a2af67
+  name: "tile_cols_log2"
+  type_id: 0xb3e7bac9
+  offset: 1264
+}
+member {
+  id: 0x9c38b0ec
+  name: "tile_group"
+  type_id: 0x2133d178
+  offset: 15040
+}
+member {
+  id: 0xe5d6f061
+  name: "tile_h_loc"
+  type_id: 0x43e910ce
+  offset: 15128
+}
+member {
+  id: 0xf9659b27
+  name: "tile_h_size"
+  type_id: 0xb3a3e4db
+  offset: 15152
+}
+member {
+  id: 0x60ceeed0
+  name: "tile_idr"
+  type_id: 0x04b89667
+  offset: 1600
+}
+member {
+  id: 0xabc12695
+  name: "tile_is_single_monitor"
+  type_id: 0x6d7f5ff6
+  offset: 15104
+}
+member {
+  id: 0xfd467c7d
+  name: "tile_property"
+  type_id: 0x2a670b41
+  offset: 6080
+}
+member {
+  id: 0x0f2733de
+  name: "tile_rows_log2"
+  type_id: 0xb3e7bac9
+  offset: 1272
+}
+member {
+  id: 0x259c3062
+  name: "tile_v_loc"
+  type_id: 0x43e910ce
+  offset: 15136
+}
+member {
+  id: 0xfdf2a9b9
+  name: "tile_v_size"
+  type_id: 0xb3a3e4db
+  offset: 15168
+}
+member {
+  id: 0x74171992
+  name: "time"
+  type_id: 0xf419f1fe
+  offset: 32
+}
+member {
+  id: 0x747126a2
+  name: "time"
+  type_id: 0x92233392
+  offset: 192
+}
+member {
+  id: 0x74712c56
+  name: "time"
+  type_id: 0x92233392
+  offset: 704
+}
+member {
+  id: 0x74712d47
+  name: "time"
+  type_id: 0x92233392
+  offset: 1664
+}
+member {
+  id: 0x74da99d4
+  name: "time"
+  type_id: 0x399c459b
+  offset: 192
+}
+member {
+  id: 0x74eaf43c
+  name: "time"
+  type_id: 0x09f9643d
+}
+member {
+  id: 0x74f2cae6
+  name: "time"
+  type_id: 0x11c404ba
+  offset: 832
+}
+member {
+  id: 0x74f339f2
+  name: "time"
+  type_id: 0x103dd8df
+  offset: 576
+}
+member {
+  id: 0x74f3ae58
+  name: "time"
+  type_id: 0x10a300c8
+}
+member {
+  id: 0x13cc2de8
+  name: "time_cycles"
+  type_id: 0xedf277ba
+  offset: 640
+}
+member {
+  id: 0x2ac72229
+  name: "time_delta"
+  type_id: 0xc9082b19
+  offset: 5
+  bitsize: 27
+}
+member {
+  id: 0xf49aad5a
+  name: "time_enabled"
+  type_id: 0xedf277ba
+  offset: 192
+}
+member {
+  id: 0x41e4d5d1
+  name: "time_in_state"
+  type_id: 0x2e18f543
+  offset: 256
+}
+member {
+  id: 0x41e4da77
+  name: "time_in_state"
+  type_id: 0x2e18f543
+  offset: 14784
+}
+member {
+  id: 0x41e4dcb8
+  name: "time_in_state"
+  type_id: 0x2e18f543
+  offset: 128
+}
+member {
+  id: 0xcc22a730
+  name: "time_mask"
+  type_id: 0xedf277ba
+  offset: 704
+}
+member {
+  id: 0x5ce69de0
+  name: "time_mult"
+  type_id: 0xe62ebf07
+  offset: 416
+}
+member {
+  id: 0x740d2191
+  name: "time_ns"
+  type_id: 0xdd6eef0a
+  offset: 128
+}
+member {
+  id: 0x74426c4d
+  name: "time_ns"
+  type_id: 0x92233392
+  offset: 128
+}
+member {
+  id: 0x74f2b1e5
+  name: "time_ns"
+  type_id: 0x22f6cb5b
+  offset: 384
+}
+member {
+  id: 0x4aef362f
+  name: "time_ns_for_children"
+  type_id: 0x22f6cb5b
+  offset: 448
+}
+member {
+  id: 0xaec8823b
+  name: "time_offset"
+  type_id: 0xedf277ba
+  offset: 448
+}
+member {
+  id: 0xfef66273
+  name: "time_running"
+  type_id: 0xedf277ba
+  offset: 256
+}
+member {
+  id: 0xc0fbf2d8
+  name: "time_shift"
+  type_id: 0xe8034002
+  offset: 400
+}
+member {
+  id: 0x4940d15d
+  name: "time_slice"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0x94576740
+  name: "time_squeeze"
+  type_id: 0x4585663f
+  offset: 352
+}
+member {
+  id: 0xd1aa9450
+  name: "time_stamp"
+  type_id: 0x92233392
+}
+member {
+  id: 0xfeab2cc0
+  name: "time_stamp_abs"
+  type_id: 0x6d7f5ff6
+  offset: 1664
+}
+member {
+  id: 0xd43e1787
+  name: "time_start"
+  type_id: 0x92233392
+  offset: 192
+}
+member {
+  id: 0x98e09e53
+  name: "time_zero"
+  type_id: 0xedf277ba
+  offset: 512
+}
+member {
+  id: 0x12fb65ba
+  name: "timecode"
+  type_id: 0x6fc64509
+  offset: 4160
+}
+member {
+  id: 0x12fb6935
+  name: "timecode"
+  type_id: 0x6fc64509
+  offset: 320
+}
+member {
+  id: 0xfa10391b
+  name: "timedout"
+  type_id: 0x3a3eb2f9
+  offset: 192
+}
+member {
+  id: 0x92c509cd
+  name: "timeline_name"
+  type_id: 0x5adf57ae
+  offset: 16768
+}
+member {
+  id: 0x92c509ea
+  name: "timeline_name"
+  type_id: 0x5adf57ae
+  offset: 12992
+}
+member {
+  id: 0x14d0dfac
+  name: "timeline_value_str"
+  type_id: 0x0e846584
+  offset: 512
+}
+member {
+  id: 0x697f56d0
+  name: "timeoffset"
+  type_id: 0x92233392
+  offset: 1792
+}
+member {
+  id: 0x540a881d
+  name: "timeout"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x540a8d22
+  name: "timeout"
+  type_id: 0xc9082b19
+  offset: 1920
+}
+member {
+  id: 0x540a8d95
+  name: "timeout"
+  type_id: 0xc9082b19
+  offset: 10656
+}
+member {
+  id: 0x541114cc
+  name: "timeout"
+  type_id: 0xd298e888
+  offset: 960
+}
+member {
+  id: 0x541118c6
+  name: "timeout"
+  type_id: 0xd298e888
+  offset: 2496
+}
+member {
+  id: 0x5425a788
+  name: "timeout"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0x5425a855
+  name: "timeout"
+  type_id: 0xe62ebf07
+  offset: 704
+}
+member {
+  id: 0x54327bdd
+  name: "timeout"
+  type_id: 0xf1f96361
+  offset: 3584
+}
+member {
+  id: 0x548601b1
+  name: "timeout"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x548603d1
+  name: "timeout"
+  type_id: 0x4585663f
+  offset: 416
+}
+member {
+  id: 0x54860676
+  name: "timeout"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0x548606f0
+  name: "timeout"
+  type_id: 0x4585663f
+  offset: 672
+}
+member {
+  id: 0x54860802
+  name: "timeout"
+  type_id: 0x4585663f
+  offset: 8480
+}
+member {
+  id: 0x54860832
+  name: "timeout"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x54860c8a
+  name: "timeout"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x54a4a7be
+  name: "timeout"
+  type_id: 0x6720d32f
+  offset: 832
+}
+member {
+  id: 0x54a4a93f
+  name: "timeout"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x54a4ad87
+  name: "timeout"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0x54a4adc6
+  name: "timeout"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x54d752b2
+  name: "timeout"
+  type_id: 0x14d112d9
+  offset: 448
+}
+member {
+  id: 0x54f0f118
+  name: "timeout"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0x54f0f7ca
+  name: "timeout"
+  type_id: 0x33756485
+  offset: 640
+}
+member {
+  id: 0x54f0f871
+  name: "timeout"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x6b2e4447
+  name: "timeout"
+  type_id: 0x4585663f
+  offset: 42
+  bitsize: 1
+}
+member {
+  id: 0xdee7c841
+  name: "timeout_clk"
+  type_id: 0x4585663f
+  offset: 6144
+}
+member {
+  id: 0x63444d84
+  name: "timeout_clks"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x4358f76d
+  name: "timeout_flags"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xd7efa587
+  name: "timeout_list"
+  type_id: 0xd3c80119
+  offset: 64
+}
+member {
+  id: 0x1d299ad1
+  name: "timeout_lock"
+  type_id: 0xf313e71a
+}
+member {
+  id: 0x0a734d27
+  name: "timeout_ns"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x39fee070
+  name: "timeout_set"
+  type_id: 0x2ef976f3
+  offset: 256
+}
+member {
+  id: 0xbe8dc770
+  name: "timeout_work"
+  type_id: 0x1f3c8679
+  offset: 2944
+}
+member {
+  id: 0xe62bd612
+  name: "timeouts"
+  type_id: 0x7dc8196c
+}
+member {
+  id: 0xe62bdfd0
+  name: "timeouts"
+  type_id: 0x7dc8196c
+  offset: 128
+}
+member {
+  id: 0xe6309576
+  name: "timeouts"
+  type_id: 0x668b7d21
+}
+member {
+  id: 0xe69b3c9d
+  name: "timeouts"
+  type_id: 0xcd229683
+}
+member {
+  id: 0x5d7d6301
+  name: "timeperframe"
+  type_id: 0xaedb15fc
+  offset: 64
+}
+member {
+  id: 0x1d144369
+  name: "timer"
+  type_id: 0x17535b44
+  offset: 1600
+}
+member {
+  id: 0x1d385af7
+  name: "timer"
+  type_id: 0x3b4afe23
+  offset: 96
+}
+member {
+  id: 0x1dce6571
+  name: "timer"
+  type_id: 0xcd7704bf
+  offset: 9024
+}
+member {
+  id: 0x1dce677d
+  name: "timer"
+  type_id: 0xcd7704bf
+  offset: 2240
+}
+member {
+  id: 0x1dce6e25
+  name: "timer"
+  type_id: 0xcd7704bf
+  offset: 256
+}
+member {
+  id: 0x1dce6e8e
+  name: "timer"
+  type_id: 0xcd7704bf
+}
+member {
+  id: 0x1dce6f1c
+  name: "timer"
+  type_id: 0xcd7704bf
+  offset: 384
+}
+member {
+  id: 0x1dd180f0
+  name: "timer"
+  type_id: 0xd298e888
+  offset: 384
+}
+member {
+  id: 0x1dd184fd
+  name: "timer"
+  type_id: 0xd298e888
+  offset: 2176
+}
+member {
+  id: 0x1dd18615
+  name: "timer"
+  type_id: 0xd298e888
+  offset: 448
+}
+member {
+  id: 0x1dd186a5
+  name: "timer"
+  type_id: 0xd298e888
+  offset: 320
+}
+member {
+  id: 0x1dd1871b
+  name: "timer"
+  type_id: 0xd298e888
+  offset: 640
+}
+member {
+  id: 0x1dd18810
+  name: "timer"
+  type_id: 0xd298e888
+  offset: 576
+}
+member {
+  id: 0x1dd1885d
+  name: "timer"
+  type_id: 0xd298e888
+  offset: 8448
+}
+member {
+  id: 0x1dd188a0
+  name: "timer"
+  type_id: 0xd298e888
+  offset: 128
+}
+member {
+  id: 0x1dd18a7a
+  name: "timer"
+  type_id: 0xd298e888
+  offset: 512
+}
+member {
+  id: 0x1dd18de1
+  name: "timer"
+  type_id: 0xd298e888
+  offset: 4224
+}
+member {
+  id: 0x4d647b83
+  name: "timer_100us_overruns"
+  type_id: 0xc9082b19
+  offset: 12896
+}
+member {
+  id: 0xdc9c94e0
+  name: "timer_300us_overruns"
+  type_id: 0xc9082b19
+  offset: 12928
+}
+member {
+  id: 0x7176d308
+  name: "timer_autosuspends"
+  type_id: 0x4585663f
+  offset: 1996
+  bitsize: 1
+}
+member {
+  id: 0x7eaf1789
+  name: "timer_cnt"
+  type_id: 0xc9082b19
+  offset: 12864
+}
+member {
+  id: 0x0120b46e
+  name: "timer_cpu"
+  type_id: 0x2f1ca510
+  offset: 59968
+}
+member {
+  id: 0xf23824cb
+  name: "timer_expires"
+  type_id: 0x33756485
+  offset: 832
+}
+member {
+  id: 0xf29973e2
+  name: "timer_expires"
+  type_id: 0x92233392
+  offset: 1216
+}
+member {
+  id: 0x1e8bcae0
+  name: "timer_fn"
+  type_id: 0x0cd0749c
+  offset: 832
+}
+member {
+  id: 0x64abf1a3
+  name: "timer_intv"
+  type_id: 0x33756485
+  offset: 1024
+}
+member {
+  id: 0x634693e3
+  name: "timer_keyup"
+  type_id: 0xd298e888
+  offset: 9600
+}
+member {
+  id: 0x7b03049f
+  name: "timer_max_overrun"
+  type_id: 0xc9082b19
+  offset: 12960
+}
+member {
+  id: 0x7fe375c7
+  name: "timer_off"
+  type_id: 0x6720d32f
+  offset: 512
+}
+member {
+  id: 0x8f229572
+  name: "timer_repeat"
+  type_id: 0xd298e888
+  offset: 10048
+}
+member {
+  id: 0xfa80ac1e
+  name: "timer_resolution"
+  type_id: 0x4585663f
+  offset: 6080
+}
+member {
+  id: 0xb11f7695
+  name: "timer_running"
+  type_id: 0x4585663f
+  offset: 1664
+  bitsize: 1
+}
+member {
+  id: 0x11aef9b3
+  name: "timer_slack_ns"
+  type_id: 0x92233392
+  offset: 22720
+}
+member {
+  id: 0x36818505
+  name: "timer_sum_overrun"
+  type_id: 0xc9082b19
+  offset: 12992
+}
+member {
+  id: 0x38d4fdeb
+  name: "timer_ts"
+  type_id: 0x11c404ba
+  offset: 12800
+}
+member {
+  id: 0x603067fa
+  name: "timerqueue"
+  type_id: 0x55314bfb
+  offset: 9472
+}
+member {
+  id: 0x30902b47
+  name: "timers"
+  type_id: 0x4c3e1687
+}
+member {
+  id: 0x5742dd35
+  name: "timers_active"
+  type_id: 0x4585663f
+  offset: 576
+}
+member {
+  id: 0x5c94c93b
+  name: "times"
+  type_id: 0xd67c82d4
+  offset: 192
+}
+member {
+  id: 0x10bf8cbd
+  name: "times_prev"
+  type_id: 0x59366056
+  offset: 512
+}
+member {
+  id: 0x5a02e301
+  name: "timestamp"
+  type_id: 0xe62ebf07
+  offset: 448
+}
+member {
+  id: 0x5a0938be
+  name: "timestamp"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x5a76e133
+  name: "timestamp"
+  type_id: 0x92233392
+  offset: 192
+}
+member {
+  id: 0x5a76e9fa
+  name: "timestamp"
+  type_id: 0x92233392
+}
+member {
+  id: 0x5a76eedf
+  name: "timestamp"
+  type_id: 0x92233392
+  offset: 1728
+}
+member {
+  id: 0x5a7d545d
+  name: "timestamp"
+  type_id: 0x9998edbb
+  offset: 640
+}
+member {
+  id: 0x5acac4ca
+  name: "timestamp"
+  type_id: 0x2e0f9112
+  offset: 384
+}
+member {
+  id: 0x5af27e71
+  name: "timestamp"
+  type_id: 0x16b4f41a
+  offset: 12352
+}
+member {
+  id: 0x5af50ecd
+  name: "timestamp"
+  type_id: 0x11c404ba
+}
+member {
+  id: 0x5af5ef9b
+  name: "timestamp"
+  type_id: 0x112d9b99
+  offset: 192
+}
+member {
+  id: 0x7251c4e8
+  name: "timestamp_flags"
+  type_id: 0xc9082b19
+  offset: 704
+}
+member {
+  id: 0x9ee8b243
+  name: "timestamped"
+  type_id: 0x6d7f5ff6
+  offset: 896
+}
+member {
+  id: 0x5ae26986
+  name: "timestamps"
+  type_id: 0x80904a3b
+  offset: 192
+}
+member {
+  id: 0xe1406108
+  name: "timing"
+  type_id: 0x4585663f
+  offset: 9568
+}
+member {
+  id: 0xe1586a45
+  name: "timing"
+  type_id: 0x5d8155a5
+  offset: 128
+}
+member {
+  id: 0x1f6734de
+  name: "timings"
+  type_id: 0x3ebb35fd
+  offset: 1280
+}
+member {
+  id: 0x1fa42388
+  name: "timings"
+  type_id: 0xfda3dc09
+  offset: 128
+}
+member {
+  id: 0x1fcf1037
+  name: "timings"
+  type_id: 0x9699a1e3
+}
+member {
+  id: 0x73627a10
+  name: "tiocmget"
+  type_id: 0x2e35f909
+  offset: 384
+}
+member {
+  id: 0x7363582a
+  name: "tiocmget"
+  type_id: 0x2f1fe96a
+  offset: 1600
+}
+member {
+  id: 0x7363590a
+  name: "tiocmget"
+  type_id: 0x2f1fe96a
+  offset: 3648
+}
+member {
+  id: 0x6e7a79e5
+  name: "tiocmiwait"
+  type_id: 0x2f2c9c0e
+  offset: 3776
+}
+member {
+  id: 0x7e407b75
+  name: "tiocmset"
+  type_id: 0x2e742439
+  offset: 448
+}
+member {
+  id: 0x7e41553e
+  name: "tiocmset"
+  type_id: 0x2f5e345a
+  offset: 1664
+}
+member {
+  id: 0x7e4156be
+  name: "tiocmset"
+  type_id: 0x2f5e345a
+  offset: 3712
+}
+member {
+  id: 0x073cfcb8
+  name: "tipc_ptr"
+  type_id: 0x33b77109
+  offset: 5952
+}
+member {
+  id: 0x00f92ec5
+  name: "tk_injoffset"
+  type_id: 0x399c459b
+  offset: 768
+}
+member {
+  id: 0x5ca776de
+  name: "tlb"
+  type_id: 0x3dd383a6
+  offset: 256
+}
+member {
+  id: 0xce55476e
+  name: "tlb_add_page"
+  type_id: 0x0e211c44
+  offset: 128
+}
+member {
+  id: 0xdf4d1053
+  name: "tlb_flush_all"
+  type_id: 0x0f3dfb90
+}
+member {
+  id: 0xf089aa77
+  name: "tlb_flush_pending"
+  type_id: 0x74d29cf1
+  offset: 6848
+}
+member {
+  id: 0x795ad311
+  name: "tlb_flush_walk"
+  type_id: 0x0d7a1508
+  offset: 64
+}
+member {
+  id: 0xd0fcf8e2
+  name: "tlb_ubc"
+  type_id: 0x78d9d56e
+  offset: 22272
+}
+member {
+  id: 0xa2d46fa9
+  name: "tlen"
+  type_id: 0x295c7202
+  offset: 144
+}
+member {
+  id: 0x7404e298
+  name: "tlv"
+  type_id: 0x5509d7db
+  offset: 512
+}
+member {
+  id: 0x7404e326
+  name: "tlv"
+  type_id: 0x5509d7db
+  offset: 896
+}
+member {
+  id: 0x745c29f7
+  name: "tlv"
+  type_id: 0x0dc77f8a
+  offset: 544
+}
+member {
+  id: 0x8f144bb3
+  name: "tm_hour"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0xad1569fe
+  name: "tm_isdst"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0xe8b129bc
+  name: "tm_mday"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0xc759cf05
+  name: "tm_min"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0xe72dc2c9
+  name: "tm_mon"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x80b4279c
+  name: "tm_ref"
+  type_id: 0x74d29cf1
+  offset: 672
+}
+member {
+  id: 0x350c8cc3
+  name: "tm_running"
+  type_id: 0x384f7d7c
+  offset: 1056
+}
+member {
+  id: 0x29641bf2
+  name: "tm_sec"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x6754d613
+  name: "tm_send"
+  type_id: 0x2dba3465
+  offset: 576
+}
+member {
+  id: 0xf9443474
+  name: "tm_wday"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0xf9443c16
+  name: "tm_wday"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0xd854a9ba
+  name: "tm_yday"
+  type_id: 0x6720d32f
+  offset: 224
+}
+member {
+  id: 0xd854ae47
+  name: "tm_yday"
+  type_id: 0x6720d32f
+  offset: 288
+}
+member {
+  id: 0xd905aad4
+  name: "tm_year"
+  type_id: 0xfc0e1dbd
+  offset: 192
+}
+member {
+  id: 0xd99e8133
+  name: "tm_year"
+  type_id: 0x6720d32f
+  offset: 160
+}
+member {
+  id: 0xda1feaf2
+  name: "tmf_in_progress"
+  type_id: 0x4585663f
+  offset: 4356
+  bitsize: 1
+}
+member {
+  id: 0x056d6f2d
+  name: "tmf_queue"
+  type_id: 0x09427c40
+  offset: 3264
+}
+member {
+  id: 0x7d5fb82a
+  name: "tmf_rqs"
+  type_id: 0x0d30b9c3
+  offset: 3328
+}
+member {
+  id: 0x89362d2d
+  name: "tmf_tag_set"
+  type_id: 0x99433372
+  offset: 1728
+}
+member {
+  id: 0xaea56739
+  name: "tmf_work_q"
+  type_id: 0x13f8b706
+  offset: 4608
+}
+member {
+  id: 0xc453ae53
+  name: "tmp_alone_branch"
+  type_id: 0x3e6239e1
+  offset: 21632
+}
+member {
+  id: 0xb91a78c3
+  name: "tmp_buckets"
+  type_id: 0x4b7eaad9
+  offset: 1920
+}
+member {
+  id: 0xa82852e1
+  name: "tmp_page"
+  type_id: 0x06835e9c
+  offset: 1152
+}
+member {
+  id: 0xb9691bc2
+  name: "tmp_ref"
+  type_id: 0x74d29cf1
+  offset: 3296
+}
+member {
+  id: 0xb97ae44e
+  name: "tmp_ref"
+  type_id: 0x6720d32f
+  offset: 3232
+}
+member {
+  id: 0x04157f80
+  name: "tmp_refs"
+  type_id: 0x6720d32f
+  offset: 672
+}
+member {
+  id: 0x7361df02
+  name: "tmp_seq"
+  type_id: 0x285ee61e
+  offset: 1152
+}
+member {
+  id: 0x1b65b640
+  name: "tmpbuf"
+  type_id: 0x00c72527
+  offset: 7680
+}
+member {
+  id: 0x1374ba81
+  name: "tmpfile"
+  type_id: 0x2d10a2fa
+  offset: 1216
+}
+member {
+  id: 0x8d47e839
+  name: "tmpl"
+  type_id: 0x1fba7d3d
+  offset: 3072
+}
+member {
+  id: 0x08c5ba3e
+  name: "tmpl_padto"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x0cef4cec
+  name: "tmplt_create"
+  type_id: 0x1fe51930
+  offset: 1088
+}
+member {
+  id: 0x904a1caa
+  name: "tmplt_destroy"
+  type_id: 0x0f3dfb90
+  offset: 1152
+}
+member {
+  id: 0x4fbac223
+  name: "tmplt_dump"
+  type_id: 0x2da9de5f
+  offset: 1344
+}
+member {
+  id: 0x0d6b321b
+  name: "tmplt_ops"
+  type_id: 0x384cb9bb
+  offset: 768
+}
+member {
+  id: 0x9c85f3cd
+  name: "tmplt_priv"
+  type_id: 0x18bd6530
+  offset: 832
+}
+member {
+  id: 0x6f33e177
+  name: "tmr_class"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x7a9be5e3
+  name: "tmr_device"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0x3d39f582
+  name: "tmr_subdevice"
+  type_id: 0x6720d32f
+  offset: 224
+}
+member {
+  id: 0x7191d854
+  name: "tnode"
+  type_id: 0x32551440
+  offset: 4352
+}
+member {
+  id: 0x987f4e5e
+  name: "to"
+  type_id: 0xedf277ba
+  offset: 64
+}
+member {
+  id: 0x98963fcf
+  name: "to"
+  type_id: 0x0483e6f8
+  offset: 64
+}
+member {
+  id: 0xaf10c244
+  name: "to_cnt"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0xbb1337b9
+  name: "to_irq"
+  type_id: 0x2c3be0fd
+  offset: 960
+}
+member {
+  id: 0x7ba95e54
+  name: "to_nlattr"
+  type_id: 0x2d95659b
+  offset: 960
+}
+member {
+  id: 0xa321a199
+  name: "to_parent"
+  type_id: 0x02a8d0c9
+  offset: 576
+}
+member {
+  id: 0xd2c1cefc
+  name: "to_proc"
+  type_id: 0x1f8dbf97
+  offset: 448
+}
+member {
+  id: 0x5583ccf6
+  name: "to_skip"
+  type_id: 0x27a7c613
+  offset: 448
+}
+member {
+  id: 0x58414216
+  name: "to_thread"
+  type_id: 0x24373219
+  offset: 512
+}
+member {
+  id: 0x898f1b47
+  name: "todo"
+  type_id: 0xd3c80119
+  offset: 1152
+}
+member {
+  id: 0x898f1ce9
+  name: "todo"
+  type_id: 0xd3c80119
+  offset: 576
+}
+member {
+  id: 0x7397b85e
+  name: "todo_list"
+  type_id: 0xd3c80119
+  offset: 9792
+}
+member {
+  id: 0x174df41d
+  name: "toggle"
+  type_id: 0x7dc8196c
+  offset: 480
+}
+member {
+  id: 0xff2c0509
+  name: "tok"
+  type_id: 0x3edc7b4c
+}
+member {
+  id: 0x36b3b9b5
+  name: "token"
+  type_id: 0x6d25e07f
+  offset: 7296
+}
+member {
+  id: 0x36b9b605
+  name: "token"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x36c62271
+  name: "token"
+  type_id: 0x18bd6530
+  offset: 128
+}
+member {
+  id: 0x36d53ca6
+  name: "token"
+  type_id: 0x0baa70a7
+}
+member {
+  id: 0x367084ef
+  name: "token_stream"
+  type_id: 0xe8c06042
+  offset: 64
+}
+member {
+  id: 0x68925b30
+  name: "tokens_size"
+  type_id: 0xc9082b19
+  offset: 640
+}
+member {
+  id: 0xb10092e7
+  name: "tolerance"
+  type_id: 0xc9082b19
+  offset: 2080
+}
+member {
+  id: 0xb1009b94
+  name: "tolerance"
+  type_id: 0xc9082b19
+  offset: 480
+}
+member {
+  id: 0xb1f0de19
+  name: "tolerance"
+  type_id: 0x39470e64
+  offset: 512
+}
+member {
+  id: 0xf2746f1a
+  name: "tomb"
+  type_id: 0x2bb46c25
+  offset: 192
+}
+member {
+  id: 0x4804413e
+  name: "tool"
+  type_id: 0x4585663f
+  offset: 17120
+}
+member {
+  id: 0x322da375
+  name: "tool_active"
+  type_id: 0x6d7f5ff6
+  offset: 17088
+}
+member {
+  id: 0xb609470f
+  name: "top"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0xb62beea6
+  name: "top"
+  type_id: 0x6720d32f
+  offset: 2176
+}
+member {
+  id: 0xb6436c34
+  name: "top"
+  type_id: 0x0faae5b1
+  offset: 32
+}
+member {
+  id: 0x9d9649f5
+  name: "top_bar"
+  type_id: 0xc93e017b
+  offset: 464
+}
+member {
+  id: 0x2ab94317
+  name: "top_field_order_cnt"
+  type_id: 0x0faae5b1
+  offset: 160
+}
+member {
+  id: 0x2ab946b8
+  name: "top_field_order_cnt"
+  type_id: 0x0faae5b1
+  offset: 4128
+}
+member {
+  id: 0xf19964b6
+  name: "topology_name_prefix"
+  type_id: 0x3e10b518
+  offset: 2688
+}
+member {
+  id: 0x1827b5b6
+  name: "topology_shortname"
+  type_id: 0x5adf57ae
+  offset: 256
+}
+member {
+  id: 0x6a624cc4
+  name: "topology_shortname_created"
+  type_id: 0x4585663f
+  offset: 6305
+  bitsize: 1
+}
+member {
+  id: 0x6598db31
+  name: "topology_version"
+  type_id: 0x92233392
+  offset: 1280
+}
+member {
+  id: 0x4486f064
+  name: "topts"
+  type_id: 0x3ef6368b
+  offset: 1728
+}
+member {
+  id: 0x449a1c14
+  name: "topts"
+  type_id: 0x22198273
+  offset: 64
+}
+member {
+  id: 0xf13a894d
+  name: "tos"
+  type_id: 0x295c7202
+  offset: 336
+}
+member {
+  id: 0xf1a035f9
+  name: "tos"
+  type_id: 0xb3e7bac9
+  offset: 96
+}
+member {
+  id: 0xf1a0379c
+  name: "tos"
+  type_id: 0xb3e7bac9
+  offset: 8
+}
+member {
+  id: 0xf1a03a1b
+  name: "tos"
+  type_id: 0xb3e7bac9
+  offset: 24
+}
+member {
+  id: 0xd7e12520
+  name: "tot_busy_t"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xf19fb740
+  name: "tot_count"
+  type_id: 0x4585663f
+  offset: 1152
+}
+member {
+  id: 0x3ea5233d
+  name: "tot_len"
+  type_id: 0x7584e7da
+  offset: 16
+}
+member {
+  id: 0x408f26e7
+  name: "tot_write_bandwidth"
+  type_id: 0xb02b353a
+  offset: 704
+}
+member {
+  id: 0x9d2cc35c
+  name: "total"
+  type_id: 0x7fb8d5d6
+  offset: 2240
+}
+member {
+  id: 0x9d345b6b
+  name: "total"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x9d60071e
+  name: "total"
+  type_id: 0x33756485
+}
+member {
+  id: 0x9dc15149
+  name: "total"
+  type_id: 0x92233392
+}
+member {
+  id: 0x8b97c6cb
+  name: "total_VFs"
+  type_id: 0x914dbfdc
+  offset: 112
+}
+member {
+  id: 0x35b0f4d5
+  name: "total_busy"
+  type_id: 0x68d841cd
+  offset: 192
+}
+member {
+  id: 0xc982dd22
+  name: "total_bw"
+  type_id: 0x92233392
+  offset: 128
+}
+member {
+  id: 0x28980c42
+  name: "total_bytes_available"
+  type_id: 0x92233392
+  offset: 320
+}
+member {
+  id: 0xaa403ce9
+  name: "total_bytes_transferred"
+  type_id: 0x92233392
+  offset: 384
+}
+member {
+  id: 0x2632ff1d
+  name: "total_chunk_kbytes"
+  type_id: 0x295c7202
+  offset: 112
+}
+member {
+  id: 0x5d3c1feb
+  name: "total_frames"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0xeadb3f2b
+  name: "total_free_scanned"
+  type_id: 0x33756485
+  offset: 640
+}
+member {
+  id: 0x1d292d06
+  name: "total_in"
+  type_id: 0x3fa31951
+  offset: 128
+}
+member {
+  id: 0x6a01c8ce
+  name: "total_latency"
+  type_id: 0x33756485
+}
+member {
+  id: 0xaebc880a
+  name: "total_len"
+  type_id: 0xf435685e
+}
+member {
+  id: 0x5cfde3c8
+  name: "total_link_count"
+  type_id: 0x6720d32f
+  offset: 704
+}
+member {
+  id: 0xf64a3494
+  name: "total_migrate_scanned"
+  type_id: 0x33756485
+  offset: 576
+}
+member {
+  id: 0x75abfba8
+  name: "total_objects"
+  type_id: 0xb02b353a
+  offset: 320
+}
+member {
+  id: 0xd48835a2
+  name: "total_out"
+  type_id: 0x3fa31951
+  offset: 320
+}
+member {
+  id: 0xa1780a27
+  name: "total_pcm_alloc_bytes"
+  type_id: 0xf435685e
+  offset: 20416
+}
+member {
+  id: 0x19d7c3bf
+  name: "total_queued_events"
+  type_id: 0x4585663f
+  offset: 2112
+}
+member {
+  id: 0x80674f84
+  name: "total_rx_match_ratio"
+  type_id: 0x33756485
+  offset: 384
+}
+member {
+  id: 0xe9318874
+  name: "total_rx_rate"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0x7383a058
+  name: "total_states"
+  type_id: 0xc9082b19
+  offset: 76128
+}
+member {
+  id: 0x8794a694
+  name: "total_time"
+  type_id: 0x33756485
+}
+member {
+  id: 0x87b61d52
+  name: "total_time"
+  type_id: 0x11c404ba
+  offset: 896
+}
+member {
+  id: 0x6eaf8187
+  name: "total_time_enabled"
+  type_id: 0x92233392
+  offset: 1536
+}
+member {
+  id: 0xbcd48edb
+  name: "total_time_running"
+  type_id: 0x92233392
+  offset: 1600
+}
+member {
+  id: 0x4beb9d8d
+  name: "total_trans"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x3b947ceb
+  name: "total_tx_rate"
+  type_id: 0x33756485
+  offset: 320
+}
+member {
+  id: 0x563293aa
+  name: "total_vm"
+  type_id: 0x33756485
+  offset: 1600
+}
+member {
+  id: 0x9e418703
+  name: "totalhigh"
+  type_id: 0x21d43a7b
+  offset: 704
+}
+member {
+  id: 0x0d628d12
+  name: "totalram"
+  type_id: 0x21d43a7b
+  offset: 256
+}
+member {
+  id: 0xb74e4a4d
+  name: "totalreserve_pages"
+  type_id: 0x33756485
+  offset: 55488
+}
+member {
+  id: 0x54a83197
+  name: "totalswap"
+  type_id: 0x21d43a7b
+  offset: 512
+}
+member {
+  id: 0x53d434cb
+  name: "tp"
+  type_id: 0x0ca316ec
+}
+member {
+  id: 0xce243e84
+  name: "tp2_value"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xe812f364
+  name: "tp_dst"
+  type_id: 0x7584e7da
+  offset: 400
+}
+member {
+  id: 0x0ae3c983
+  name: "tp_event"
+  type_id: 0x269c8e40
+  offset: 8256
+}
+member {
+  id: 0xe15d928a
+  name: "tp_list"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0x22a27dc2
+  name: "tp_name"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x1f3f5fa3
+  name: "tp_name_len"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x706bbb34
+  name: "tp_src"
+  type_id: 0x7584e7da
+  offset: 384
+}
+member {
+  id: 0x8ea2a453
+  name: "tp_value"
+  type_id: 0x33756485
+}
+member {
+  id: 0x0b77a1fd
+  name: "tpidr2_el0"
+  type_id: 0x92233392
+  offset: 8896
+}
+member {
+  id: 0x5cdf43f2
+  name: "tpl_support"
+  type_id: 0x4585663f
+  offset: 3370
+  bitsize: 1
+}
+member {
+  id: 0x6fe88545
+  name: "tpr_access"
+  type_id: 0x12592f4f
+}
+member {
+  id: 0x14f2c5a7
+  name: "tq"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xd4597863
+  name: "tqhead"
+  type_id: 0x55314bfb
+  offset: 64
+}
+member {
+  id: 0xd55370d7
+  name: "tr"
+  type_id: 0x07f2af49
+  offset: 192
+}
+member {
+  id: 0xd55371dc
+  name: "tr"
+  type_id: 0x07f2af49
+  offset: 128
+}
+member {
+  id: 0xd553781e
+  name: "tr"
+  type_id: 0x07f2af49
+}
+member {
+  id: 0xd5537fd9
+  name: "tr"
+  type_id: 0x07f2af49
+  offset: 320
+}
+member {
+  id: 0x2a328548
+  name: "trace"
+  type_id: 0x1a95dec0
+  offset: 64
+}
+member {
+  id: 0x2a32886b
+  name: "trace"
+  type_id: 0x1a95dec0
+  offset: 128
+}
+member {
+  id: 0x2a53e26c
+  name: "trace"
+  type_id: 0x7bf61b84
+}
+member {
+  id: 0x98c4ef1f
+  name: "trace_bprintk_fmt_start"
+  type_id: 0x051414e1
+  offset: 6976
+}
+member {
+  id: 0x64201f43
+  name: "trace_ctx"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0xf84bdc6b
+  name: "trace_evals"
+  type_id: 0x0acf471f
+  offset: 7168
+}
+member {
+  id: 0xd0bfdeda
+  name: "trace_events"
+  type_id: 0x03371a37
+  offset: 7040
+}
+member {
+  id: 0x02b24a76
+  name: "trace_file"
+  type_id: 0x035d664d
+  offset: 128
+}
+member {
+  id: 0x05d56f95
+  name: "trace_flags"
+  type_id: 0x4585663f
+  offset: 960
+}
+member {
+  id: 0x3d48b553
+  name: "trace_flags_index"
+  type_id: 0x43acdd98
+  offset: 992
+}
+member {
+  id: 0x15761e66
+  name: "trace_marker_file"
+  type_id: 0x035d664d
+  offset: 2048
+}
+member {
+  id: 0xfe07e9ee
+  name: "trace_recursion"
+  type_id: 0x33756485
+  offset: 22912
+}
+member {
+  id: 0xa5029202
+  name: "trace_ref"
+  type_id: 0x6720d32f
+  offset: 2208
+}
+member {
+  id: 0x9e2162f0
+  name: "tracepoints_ptrs"
+  type_id: 0x3b4e90b8
+  offset: 6400
+}
+member {
+  id: 0xc19003f2
+  name: "tracer"
+  type_id: 0x1a95dec0
+}
+member {
+  id: 0x06968d67
+  name: "traces"
+  type_id: 0xd3c80119
+  offset: 8320
+}
+member {
+  id: 0x1edbbb84
+  name: "tracing"
+  type_id: 0x015e6d97
+}
+member {
+  id: 0x1ee6b6cd
+  name: "tracing"
+  type_id: 0x3c5324e7
+}
+member {
+  id: 0xa76380ea
+  name: "tracing_cpumask"
+  type_id: 0x99caa0ae
+  offset: 2112
+}
+member {
+  id: 0xb2a68bad
+  name: "track"
+  type_id: 0x0f78a6c8
+  offset: 64
+}
+member {
+  id: 0x01a28b38
+  name: "track_bio_latency"
+  type_id: 0x6d7f5ff6
+  offset: 6784
+}
+member {
+  id: 0x2e760103
+  name: "track_queue_depth"
+  type_id: 0x4585663f
+  offset: 2624
+  bitsize: 1
+}
+member {
+  id: 0x551ae8d1
+  name: "trailer_len"
+  type_id: 0xc93e017b
+  offset: 496
+}
+member {
+  id: 0x55b4f328
+  name: "trailer_len"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0xf5deb131
+  name: "trans"
+  type_id: 0x18bd6530
+  offset: 11584
+}
+member {
+  id: 0xf54fc8f5
+  name: "trans_event"
+  type_id: 0x4901181a
+}
+member {
+  id: 0x072855a4
+  name: "trans_exc_code"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x58786d8a
+  name: "trans_start"
+  type_id: 0x33756485
+  offset: 1600
+}
+member {
+  id: 0x25b12182
+  name: "trans_table"
+  type_id: 0x1bf16028
+  offset: 64
+}
+member {
+  id: 0x25b124f1
+  name: "trans_table"
+  type_id: 0x1bf16028
+  offset: 384
+}
+member {
+  id: 0xad1fc718
+  name: "trans_timeout"
+  type_id: 0xb02b353a
+  offset: 1024
+}
+member {
+  id: 0x026fc50b
+  name: "transaction"
+  type_id: 0x02a8d0c9
+  offset: 384
+}
+member {
+  id: 0xa7c231fa
+  name: "transaction_stack"
+  type_id: 0x02a8d0c9
+  offset: 512
+}
+member {
+  id: 0x555e82f8
+  name: "transceiver"
+  type_id: 0xb3e7bac9
+  offset: 128
+}
+member {
+  id: 0x555e8335
+  name: "transceiver"
+  type_id: 0xb3e7bac9
+  offset: 136
+}
+member {
+  id: 0x625eae55
+  name: "transfer"
+  type_id: 0x0d6dc297
+  offset: 128
+}
+member {
+  id: 0x627f3625
+  name: "transfer"
+  type_id: 0x2cfdd5a1
+  offset: 9216
+}
+member {
+  id: 0x6bc702cc
+  name: "transfer_buffer"
+  type_id: 0x18bd6530
+  offset: 768
+}
+member {
+  id: 0x6e0321eb
+  name: "transfer_buffer_length"
+  type_id: 0xc9082b19
+  offset: 1024
+}
+member {
+  id: 0x76535001
+  name: "transfer_bytes_histo"
+  type_id: 0x8a71b935
+  offset: 640
+}
+member {
+  id: 0x9f25699b
+  name: "transfer_dma"
+  type_id: 0xe02e14d6
+  offset: 832
+}
+member {
+  id: 0xcd47b1ad
+  name: "transfer_done"
+  type_id: 0x4585663f
+  offset: 704
+}
+member {
+  id: 0x8cd14077
+  name: "transfer_flags"
+  type_id: 0x4585663f
+  offset: 736
+}
+member {
+  id: 0x872a7d1a
+  name: "transfer_id"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x45e1dfe1
+  name: "transfer_len"
+  type_id: 0x0baa70a7
+  offset: 64
+}
+member {
+  id: 0xd1752f0b
+  name: "transfer_list"
+  type_id: 0xd3c80119
+  offset: 960
+}
+member {
+  id: 0x32830a22
+  name: "transfer_one"
+  type_id: 0x2dece89f
+  offset: 11456
+}
+member {
+  id: 0x9e82faf8
+  name: "transfer_one_message"
+  type_id: 0x2ddc072f
+  offset: 11072
+}
+member {
+  id: 0x0961d7f5
+  name: "transfers"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0x09882146
+  name: "transfers"
+  type_id: 0x3a3eb2f9
+}
+member {
+  id: 0x098825a7
+  name: "transfers"
+  type_id: 0x3a3eb2f9
+  offset: 64
+}
+member {
+  id: 0xb6bedb22
+  name: "transfers_split_maxsize"
+  type_id: 0x3a3eb2f9
+  offset: 1728
+}
+member {
+  id: 0xe35fada3
+  name: "transfersize"
+  type_id: 0x4585663f
+  offset: 2272
+}
+member {
+  id: 0x96416cdf
+  name: "transition_delay_us"
+  type_id: 0x4585663f
+  offset: 5024
+}
+member {
+  id: 0xce54a80d
+  name: "transition_latency"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x1ca17692
+  name: "transition_lock"
+  type_id: 0xf313e71a
+  offset: 5184
+}
+member {
+  id: 0xc8835e1b
+  name: "transition_notifier_list"
+  type_id: 0x97905ec6
+  offset: 11776
+}
+member {
+  id: 0xe4288ca3
+  name: "transition_ongoing"
+  type_id: 0x6d7f5ff6
+  offset: 5152
+}
+member {
+  id: 0x6a478d91
+  name: "transition_task"
+  type_id: 0x1d19a9d5
+  offset: 5440
+}
+member {
+  id: 0xe4f070c3
+  name: "transition_wait"
+  type_id: 0x03913382
+  offset: 5248
+}
+member {
+  id: 0xff7d2c8f
+  name: "translate"
+  type_id: 0x2c7b75e1
+  offset: 576
+}
+member {
+  id: 0xff7f9164
+  name: "translate"
+  type_id: 0x2ec82b0f
+  offset: 320
+}
+member {
+  id: 0xee11e17d
+  name: "transmit_in_progress"
+  type_id: 0x6d7f5ff6
+  offset: 10560
+}
+member {
+  id: 0xaec126f7
+  name: "transmit_in_progress_aborted"
+  type_id: 0x6d7f5ff6
+  offset: 10568
+}
+member {
+  id: 0x1dbcaddd
+  name: "transmit_power"
+  type_id: 0xd41e888f
+  offset: 1600
+}
+member {
+  id: 0xdef8a927
+  name: "transmit_queue"
+  type_id: 0xd3c80119
+  offset: 10176
+}
+member {
+  id: 0x1c87c5df
+  name: "transmit_queue_sz"
+  type_id: 0x4585663f
+  offset: 10304
+}
+member {
+  id: 0x1b258baa
+  name: "transmit_time"
+  type_id: 0x92233392
+}
+member {
+  id: 0x45be24a0
+  name: "transmitting"
+  type_id: 0x0e361c9c
+  offset: 10496
+}
+member {
+  id: 0x2621cc67
+  name: "transp"
+  type_id: 0x3090e9a7
+  offset: 256
+}
+member {
+  id: 0x26c47b72
+  name: "transp"
+  type_id: 0xd529883e
+  offset: 544
+}
+member {
+  id: 0x738f5598
+  name: "transparent"
+  type_id: 0x4585663f
+  offset: 22088
+  bitsize: 1
+}
+member {
+  id: 0xb8dcca84
+  name: "transport"
+  type_id: 0x3c0933ca
+  offset: 6848
+}
+member {
+  id: 0xb8f911ce
+  name: "transport"
+  type_id: 0x19d71054
+}
+member {
+  id: 0x2a829378
+  name: "transport_header"
+  type_id: 0xe8034002
+  offset: 432
+}
+member {
+  id: 0xd0af636a
+  name: "transport_status"
+  type_id: 0xe62ebf07
+  offset: 896
+}
+member {
+  id: 0x3b3fb057
+  name: "transportt"
+  type_id: 0x3e884e72
+  offset: 1536
+}
+member {
+  id: 0xb3380ef4
+  name: "transtab"
+  type_id: 0x92233392
+}
+member {
+  id: 0x023e2041
+  name: "trap"
+  type_id: 0x295c7202
+  offset: 1080
+}
+member {
+  id: 0xc911730d
+  name: "trb_address_map"
+  type_id: 0x80c20070
+  offset: 320
+}
+member {
+  id: 0xc9bb1edd
+  name: "trb_address_map"
+  type_id: 0x2aa0b9bb
+  offset: 768
+}
+member {
+  id: 0xde7ea677
+  name: "trbs"
+  type_id: 0x31da1e83
+}
+member {
+  id: 0x09d8395c
+  name: "trc_blkd_cpu"
+  type_id: 0x6720d32f
+  offset: 10560
+}
+member {
+  id: 0xcef58b2b
+  name: "trc_blkd_node"
+  type_id: 0xd3c80119
+  offset: 10432
+}
+member {
+  id: 0x5957b204
+  name: "trc_holdout_list"
+  type_id: 0xd3c80119
+  offset: 10304
+}
+member {
+  id: 0x53f95299
+  name: "trc_ipi_to_cpu"
+  type_id: 0x6720d32f
+  offset: 10208
+}
+member {
+  id: 0x6d951069
+  name: "trc_reader_nesting"
+  type_id: 0x6720d32f
+  offset: 10176
+}
+member {
+  id: 0xf6f22641
+  name: "trc_reader_special"
+  type_id: 0xa0a12471
+  offset: 10240
+}
+member {
+  id: 0x292c44f2
+  name: "tree"
+  type_id: 0xeb923a9b
+}
+member {
+  id: 0x292c4c3b
+  name: "tree"
+  type_id: 0xeb923a9b
+  offset: 192
+}
+member {
+  id: 0x29e5189b
+  name: "tree"
+  type_id: 0x22ce5396
+}
+member {
+  id: 0xd0b539fc
+  name: "tree_count"
+  type_id: 0x6720d32f
+  offset: 6912
+}
+member {
+  id: 0x1ef3f83f
+  name: "tree_entry"
+  type_id: 0x3205ba2f
+}
+member {
+  id: 0x22d40447
+  name: "tree_node"
+  type_id: 0x3205ba2f
+  offset: 18368
+}
+member {
+  id: 0xe43a5cb4
+  name: "tree_pages"
+  type_id: 0x33756485
+  offset: 384
+}
+member {
+  id: 0x9d037ff2
+  name: "tree_params"
+  type_id: 0xabe3bacb
+}
+member {
+  id: 0xac3091ae
+  name: "tree_probs"
+  type_id: 0x44377683
+  offset: 576
+}
+member {
+  id: 0xdaf2dfc9
+  name: "tree_reclaimed"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0xa2f68ed5
+  name: "tree_scanned"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0xc20874ac
+  name: "tree_size"
+  type_id: 0x92233392
+  offset: 320
+}
+member {
+  id: 0xa7480c04
+  name: "trees"
+  type_id: 0xd3c80119
+  offset: 256
+}
+member {
+  id: 0xa7a38b53
+  name: "trees"
+  type_id: 0x3846864c
+  offset: 6656
+}
+member {
+  id: 0x81d670ed
+  name: "trfcr_el1"
+  type_id: 0x92233392
+  offset: 4160
+}
+member {
+  id: 0xd1709568
+  name: "tricklecharge_current_ua"
+  type_id: 0x6720d32f
+  offset: 160
+}
+member {
+  id: 0xa1c1d80a
+  name: "trig"
+  type_id: 0x19118777
+  offset: 8128
+}
+member {
+  id: 0x441d4df3
+  name: "trig_list"
+  type_id: 0xd3c80119
+  offset: 2688
+}
+member {
+  id: 0x350d1ee3
+  name: "trigger"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0x354d0597
+  name: "trigger"
+  type_id: 0xd230673a
+  offset: 48
+}
+member {
+  id: 0x358cd74c
+  name: "trigger"
+  type_id: 0x13ee7d42
+}
+member {
+  id: 0x35915bcd
+  name: "trigger"
+  type_id: 0x0e6ba6f7
+  offset: 2624
+}
+member {
+  id: 0x35b3013a
+  name: "trigger"
+  type_id: 0x2c39999b
+  offset: 384
+}
+member {
+  id: 0x35b30168
+  name: "trigger"
+  type_id: 0x2c39cb61
+  offset: 384
+}
+member {
+  id: 0x35b36f13
+  name: "trigger"
+  type_id: 0x2c5eebb2
+  offset: 192
+}
+member {
+  id: 0x35b3c246
+  name: "trigger"
+  type_id: 0x2cfae592
+  offset: 384
+}
+member {
+  id: 0x35b3c69e
+  name: "trigger"
+  type_id: 0x2cf4b27a
+  offset: 1856
+}
+member {
+  id: 0x35b3e243
+  name: "trigger"
+  type_id: 0x2cdcb5ec
+  offset: 320
+}
+member {
+  id: 0x35b3e416
+  name: "trigger"
+  type_id: 0x2cdcb5ec
+  offset: 384
+}
+member {
+  id: 0x35b3eb0a
+  name: "trigger"
+  type_id: 0x2cdce716
+  offset: 1152
+}
+member {
+  id: 0x35df82ac
+  name: "trigger"
+  type_id: 0x40bde449
+  offset: 640
+}
+member {
+  id: 0xf59a9fea
+  name: "trigger_based"
+  type_id: 0x295c7202
+  offset: 85
+  bitsize: 1
+}
+member {
+  id: 0xb4457fa3
+  name: "trigger_card_event"
+  type_id: 0x6d7f5ff6
+  offset: 9152
+}
+member {
+  id: 0xd5866f05
+  name: "trigger_data"
+  type_id: 0x18bd6530
+  offset: 2816
+}
+member {
+  id: 0xfe4ad885
+  name: "trigger_lock"
+  type_id: 0x28b9ec9a
+  offset: 2112
+}
+member {
+  id: 0xfec5afd2
+  name: "trigger_lock"
+  type_id: 0xa7c362b0
+  offset: 5248
+}
+member {
+  id: 0x2223a46e
+  name: "trigger_master"
+  type_id: 0x14b9453b
+  offset: 64
+}
+member {
+  id: 0x32e47641
+  name: "trigger_pending"
+  type_id: 0x6720d32f
+  offset: 5312
+}
+member {
+  id: 0xd3445501
+  name: "trigger_tstamp"
+  type_id: 0x399c459b
+  offset: 128
+}
+member {
+  id: 0x9f27b425
+  name: "trigger_tstamp_latched"
+  type_id: 0x6d7f5ff6
+  offset: 256
+}
+member {
+  id: 0xe42cffef
+  name: "trigger_tstamp_pending_update"
+  type_id: 0x6d7f5ff6
+  offset: 1504
+}
+member {
+  id: 0x6782aebd
+  name: "trigger_type"
+  type_id: 0x159e1e10
+  offset: 192
+}
+member {
+  id: 0x6782af2f
+  name: "trigger_type"
+  type_id: 0x159e1e10
+  offset: 2944
+}
+member {
+  id: 0xd7035ac8
+  name: "triggered_count"
+  type_id: 0x74d29cf1
+  offset: 320
+}
+member {
+  id: 0x614a670b
+  name: "triggers"
+  type_id: 0xd3c80119
+  offset: 448
+}
+member {
+  id: 0x614a69fa
+  name: "triggers"
+  type_id: 0xd3c80119
+  offset: 5632
+}
+member {
+  id: 0x119ad176
+  name: "trim_timeout"
+  type_id: 0x4585663f
+  offset: 480
+}
+member {
+  id: 0x753fdbd8
+  name: "trip"
+  type_id: 0x6720d32f
+  offset: 320
+}
+member {
+  id: 0xf94b0a22
+  name: "trip_hyst_attrs"
+  type_id: 0x10199b0f
+  offset: 7936
+}
+member {
+  id: 0x6d50f477
+  name: "trip_mask"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0xd30bdaef
+  name: "trip_temp_attrs"
+  type_id: 0x10199b0f
+  offset: 7808
+}
+member {
+  id: 0xc9e5017e
+  name: "trip_type_attrs"
+  type_id: 0x10199b0f
+  offset: 7872
+}
+member {
+  id: 0x028a4aca
+  name: "trips"
+  type_id: 0x0b4ebfc7
+  offset: 8128
+}
+member {
+  id: 0x8e78974e
+  name: "trips_attribute_group"
+  type_id: 0xed8451a2
+  offset: 7488
+}
+member {
+  id: 0x962453e6
+  name: "trips_disabled"
+  type_id: 0x33756485
+  offset: 8256
+}
+member {
+  id: 0x92652cdf
+  name: "trkid"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x028c1c9f
+  name: "true_list"
+  type_id: 0xdc39b636
+  offset: 192
+}
+member {
+  id: 0xfafe7861
+  name: "truesize"
+  type_id: 0x4585663f
+  offset: 1856
+}
+member {
+  id: 0x0d82b484
+  name: "trunc_size"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0x9ac15baf
+  name: "truncate"
+  type_id: 0x6d7f5ff6
+  offset: 128
+}
+member {
+  id: 0xc53ca24d
+  name: "trusted"
+  type_id: 0xe62ebf07
+  offset: 512
+}
+member {
+  id: 0xc5b7f4a7
+  name: "trusted"
+  type_id: 0x6d7f5ff6
+  offset: 7424
+}
+member {
+  id: 0x4f9731a7
+  name: "try"
+  type_id: 0xd9ed81e9
+  offset: 192
+}
+member {
+  id: 0x15344fba
+  name: "try_catch"
+  type_id: 0x1703546d
+  offset: 192
+}
+member {
+  id: 0x739fffb2
+  name: "try_completion"
+  type_id: 0x0562c566
+  offset: 64
+}
+member {
+  id: 0x783807ab
+  name: "try_compose"
+  type_id: 0xfc5791f4
+  offset: 512
+}
+member {
+  id: 0x76c7accc
+  name: "try_crop"
+  type_id: 0xfc5791f4
+  offset: 384
+}
+member {
+  id: 0x80920d33
+  name: "try_ctrl"
+  type_id: 0x2eb11cd7
+  offset: 64
+}
+member {
+  id: 0xce5cbdd9
+  name: "try_fmt"
+  type_id: 0x327b4cfa
+}
+member {
+  id: 0x7f3ffc26
+  name: "try_rc_10_first"
+  type_id: 0x4585663f
+  offset: 2822
+  bitsize: 1
+}
+member {
+  id: 0xdadea23d
+  name: "try_result"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x358d213f
+  name: "try_role"
+  type_id: 0x2e01dff0
+  offset: 896
+}
+member {
+  id: 0x358dcb60
+  name: "try_role"
+  type_id: 0x2ee126d9
+}
+member {
+  id: 0x35c40586
+  name: "try_role"
+  type_id: 0x6720d32f
+  offset: 2272
+}
+member {
+  id: 0xb89e26a7
+  name: "try_snk_count"
+  type_id: 0x6720d32f
+  offset: 2304
+}
+member {
+  id: 0xc0e3445b
+  name: "try_src_count"
+  type_id: 0x6720d32f
+  offset: 2336
+}
+member {
+  id: 0x56bf7a2e
+  name: "try_steal"
+  type_id: 0x35acf54c
+  offset: 128
+}
+member {
+  id: 0xcd9ab313
+  name: "try_vpd_pages"
+  type_id: 0x4585663f
+  offset: 2808
+  bitsize: 1
+}
+member {
+  id: 0x8779ee23
+  name: "trylock"
+  type_id: 0x2d5b9ec8
+}
+member {
+  id: 0x2fb73624
+  name: "trylock_bus"
+  type_id: 0x2ffc1197
+  offset: 64
+}
+member {
+  id: 0x22c6ae50
+  name: "trylock_only"
+  type_id: 0x6d7f5ff6
+  offset: 448
+}
+member {
+  id: 0x937ac73c
+  name: "trysend"
+  type_id: 0x2e3afbd5
+  offset: 256
+}
+member {
+  id: 0x4f1292d7
+  name: "trysend_offchannel"
+  type_id: 0x2ee1b2db
+  offset: 384
+}
+member {
+  id: 0x5563d857
+  name: "trysendto"
+  type_id: 0x2e3a32dd
+  offset: 320
+}
+member {
+  id: 0x9506136b
+  name: "ts"
+  type_id: 0x92233392
+  offset: 1280
+}
+member {
+  id: 0x95061f00
+  name: "ts"
+  type_id: 0x92233392
+  offset: 67712
+}
+member {
+  id: 0x9579c452
+  name: "ts"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x9585fad2
+  name: "ts"
+  type_id: 0x11c404ba
+  offset: 960
+}
+member {
+  id: 0x846f423a
+  name: "ts_info"
+  type_id: 0x2d71d7a2
+  offset: 256
+}
+member {
+  id: 0x20e59a99
+  name: "ts_last_call"
+  type_id: 0x92233392
+  offset: 192
+}
+member {
+  id: 0x6f338061
+  name: "ts_real"
+  type_id: 0x399c459b
+}
+member {
+  id: 0x851fe0bd
+  name: "ts_recent"
+  type_id: 0xc9082b19
+  offset: 1184
+}
+member {
+  id: 0x0ac38887
+  name: "tseg1_max"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0x982a9478
+  name: "tseg1_min"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0x79a6c720
+  name: "tseg2_max"
+  type_id: 0xe62ebf07
+  offset: 224
+}
+member {
+  id: 0xca7fce62
+  name: "tseg2_min"
+  type_id: 0xe62ebf07
+  offset: 192
+}
+member {
+  id: 0xbb298c10
+  name: "tsev_wq"
+  type_id: 0x03913382
+  offset: 43584
+}
+member {
+  id: 0x3ad08c08
+  name: "tsevq"
+  type_id: 0x11edff4c
+  offset: 9920
+}
+member {
+  id: 0xb6d66149
+  name: "tsevq_mux"
+  type_id: 0xa7c362b0
+  offset: 42816
+}
+member {
+  id: 0x19ec4c5d
+  name: "tsflags"
+  type_id: 0x914dbfdc
+  offset: 96
+}
+member {
+  id: 0xd60cdd86
+  name: "tsid"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0xaa343f4c
+  name: "tsize"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0x33dd3a88
+  name: "tsk"
+  type_id: 0x1d19a9d5
+  offset: 576
+}
+member {
+  id: 0x7bb305a7
+  name: "tsleep"
+  type_id: 0x03913382
+  offset: 2496
+}
+member {
+  id: 0x25bdb98d
+  name: "tslot_limit"
+  type_id: 0x89ea5acf
+  offset: 128
+}
+member {
+  id: 0xe091062f
+  name: "tsmt"
+  type_id: 0x295c7202
+}
+member {
+  id: 0xb9e55862
+  name: "tso_max_segs"
+  type_id: 0x914dbfdc
+  offset: 18256
+}
+member {
+  id: 0x80115e02
+  name: "tso_max_size"
+  type_id: 0x4585663f
+  offset: 18208
+}
+member {
+  id: 0x7f1030b7
+  name: "tstamp"
+  type_id: 0x33756485
+  offset: 10560
+}
+member {
+  id: 0x7f328f84
+  name: "tstamp"
+  type_id: 0x11c404ba
+}
+member {
+  id: 0x7fb16b9f
+  name: "tstamp"
+  type_id: 0x92233392
+  offset: 1664
+}
+member {
+  id: 0x7fbadaaf
+  name: "tstamp"
+  type_id: 0x9998edbb
+  offset: 128
+}
+member {
+  id: 0x7fe3fa03
+  name: "tstamp"
+  type_id: 0xc0b644f6
+  offset: 320
+}
+member {
+  id: 0x0923f948
+  name: "tstamp_mode"
+  type_id: 0x6720d32f
+  offset: 1472
+}
+member {
+  id: 0x724f5b37
+  name: "tstamp_type"
+  type_id: 0x6720d32f
+  offset: 6112
+}
+member {
+  id: 0x0e762711
+  name: "tstamp_type_access"
+  type_id: 0x914dbfdc
+  offset: 29
+  bitsize: 1
+}
+member {
+  id: 0xcde7be64
+  name: "tstate"
+  type_id: 0x195350a3
+}
+member {
+  id: 0x36add9ff
+  name: "tstats"
+  type_id: 0x28d14c07
+}
+member {
+  id: 0x375980f6
+  name: "tsz"
+  type_id: 0xc9082b19
+  offset: 13
+  bitsize: 6
+}
+member {
+  id: 0x3759852f
+  name: "tsz"
+  type_id: 0xc9082b19
+  offset: 11
+  bitsize: 6
+}
+member {
+  id: 0x5efed635
+  name: "tt"
+  type_id: 0x2836877a
+  offset: 384
+}
+member {
+  id: 0x53a26072
+  name: "tt_budget"
+  type_id: 0x39fc1b17
+  offset: 6224
+}
+member {
+  id: 0x8909eca8
+  name: "tt_info"
+  type_id: 0x078c7808
+  offset: 36096
+}
+member {
+  id: 0x2317225d
+  name: "tt_list"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0x23172cde
+  name: "tt_list"
+  type_id: 0xd3c80119
+  offset: 6784
+}
+member {
+  id: 0x6149ba9a
+  name: "tt_usecs"
+  type_id: 0x914dbfdc
+  offset: 256
+}
+member {
+  id: 0x85a7dcef
+  name: "ttbr"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x85c6111b
+  name: "ttbr"
+  type_id: 0xa8c5dffe
+}
+member {
+  id: 0x85fcf7f7
+  name: "ttbr"
+  type_id: 0x92233392
+}
+member {
+  id: 0x0e5abb66
+  name: "ttbr0"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0xf440f305
+  name: "ttl"
+  type_id: 0x295c7202
+  offset: 344
+}
+member {
+  id: 0xf440f6e0
+  name: "ttl"
+  type_id: 0x295c7202
+  offset: 64
+}
+member {
+  id: 0xf440fec0
+  name: "ttl"
+  type_id: 0x295c7202
+  offset: 48
+}
+member {
+  id: 0xf4da4d28
+  name: "ttl"
+  type_id: 0xb3e7bac9
+  offset: 64
+}
+member {
+  id: 0xaaa77c10
+  name: "ttm"
+  type_id: 0x0a22a423
+  offset: 3136
+}
+member {
+  id: 0x328cc0d5
+  name: "ttm_tt_create"
+  type_id: 0x22b74923
+}
+member {
+  id: 0xfee3c09f
+  name: "ttm_tt_destroy"
+  type_id: 0x0fbd3b84
+  offset: 192
+}
+member {
+  id: 0x5bc01f46
+  name: "ttm_tt_populate"
+  type_id: 0x2cfb93fc
+  offset: 64
+}
+member {
+  id: 0x4baf255e
+  name: "ttm_tt_unpopulate"
+  type_id: 0x0fbd3b84
+  offset: 128
+}
+member {
+  id: 0x77072155
+  name: "ttport"
+  type_id: 0x6720d32f
+  offset: 448
+}
+member {
+  id: 0x77072bc2
+  name: "ttport"
+  type_id: 0x6720d32f
+  offset: 160
+}
+member {
+  id: 0xd330ca27
+  name: "tts"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0x81e14318
+  name: "ttwu_count"
+  type_id: 0x4585663f
+  offset: 28704
+}
+member {
+  id: 0x9555a840
+  name: "ttwu_local"
+  type_id: 0x4585663f
+  offset: 28736
+}
+member {
+  id: 0xceae490c
+  name: "ttwu_move_affine"
+  type_id: 0x4585663f
+  offset: 1984
+}
+member {
+  id: 0x6898fd37
+  name: "ttwu_move_balance"
+  type_id: 0x4585663f
+  offset: 2016
+}
+member {
+  id: 0xb7ade5b8
+  name: "ttwu_pending"
+  type_id: 0x4585663f
+  offset: 576
+}
+member {
+  id: 0x156fe382
+  name: "ttwu_wake_remote"
+  type_id: 0x4585663f
+  offset: 1952
+}
+member {
+  id: 0xa34e4158
+  name: "tty"
+  type_id: 0x2efe8065
+}
+member {
+  id: 0xa34e45b9
+  name: "tty"
+  type_id: 0x2efe8065
+  offset: 64
+}
+member {
+  id: 0xa34e4618
+  name: "tty"
+  type_id: 0x2efe8065
+  offset: 3328
+}
+member {
+  id: 0xa34e4bdb
+  name: "tty"
+  type_id: 0x2efe8065
+  offset: 1344
+}
+member {
+  id: 0xb1a2a438
+  name: "tty_audit_buf"
+  type_id: 0x2ecc449d
+  offset: 7680
+}
+member {
+  id: 0x82200b55
+  name: "tty_driver"
+  type_id: 0x31e58fe0
+  offset: 448
+}
+member {
+  id: 0x5a07beb3
+  name: "tty_drivers"
+  type_id: 0xd3c80119
+  offset: 1344
+}
+member {
+  id: 0x95d81ae1
+  name: "tty_files"
+  type_id: 0xd3c80119
+  offset: 5760
+}
+member {
+  id: 0x39b3adc6
+  name: "tty_groups"
+  type_id: 0x06433852
+  offset: 3072
+}
+member {
+  id: 0x2929c07b
+  name: "tty_old_pgrp"
+  type_id: 0x18456730
+  offset: 3200
+}
+member {
+  id: 0x435b96af
+  name: "tty_resize"
+  type_id: 0x1f3c8679
+  offset: 4096
+}
+member {
+  id: 0x4b75d276
+  name: "ttys"
+  type_id: 0x012f99be
+  offset: 1024
+}
+member {
+  id: 0x67b5a6fb
+  name: "tun_flags"
+  type_id: 0x7584e7da
+  offset: 320
+}
+member {
+  id: 0xdc494e19
+  name: "tun_id"
+  type_id: 0x7877cd32
+}
+member {
+  id: 0xdc494f8b
+  name: "tun_id"
+  type_id: 0x7877cd32
+  offset: 384
+}
+member {
+  id: 0x43cd259f
+  name: "tun_info"
+  type_id: 0x19e78670
+}
+member {
+  id: 0xa2420da1
+  name: "tun_src"
+  type_id: 0x11d941b8
+  offset: 384
+}
+member {
+  id: 0x3203c9f3
+  name: "tuner"
+  type_id: 0xe62ebf07
+  offset: 352
+}
+member {
+  id: 0x3203cdaa
+  name: "tuner"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x3282c3c6
+  name: "tuner"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x32d748a6
+  name: "tuner"
+  type_id: 0x32af5236
+  offset: 64
+}
+member {
+  id: 0xe0ac849f
+  name: "tuners"
+  type_id: 0x18bd6530
+  offset: 1408
+}
+member {
+  id: 0xf9365273
+  name: "tuning_count"
+  type_id: 0x4585663f
+  offset: 10016
+}
+member {
+  id: 0x92c981e0
+  name: "tuning_delay"
+  type_id: 0x6720d32f
+  offset: 10112
+}
+member {
+  id: 0x5fa7ece8
+  name: "tuning_done"
+  type_id: 0x4585663f
+  offset: 9984
+}
+member {
+  id: 0xbf5252d5
+  name: "tuning_err"
+  type_id: 0x4585663f
+  offset: 10080
+}
+member {
+  id: 0xbec38849
+  name: "tuning_loop_count"
+  type_id: 0x6720d32f
+  offset: 10144
+}
+member {
+  id: 0x9d50bb82
+  name: "tuning_mode"
+  type_id: 0x4585663f
+  offset: 10048
+}
+member {
+  id: 0x150686be
+  name: "tunnel"
+  type_id: 0x0537fb37
+  offset: 3264
+}
+member {
+  id: 0x150f52f2
+  name: "tunnel"
+  type_id: 0x0ce9d83b
+}
+member {
+  id: 0x152405f1
+  name: "tunnel"
+  type_id: 0x27b71910
+  offset: 128
+}
+member {
+  id: 0x3162a41c
+  name: "tunnel_id"
+  type_id: 0xc9082b19
+  offset: 1344
+}
+member {
+  id: 0x45bb8fbc
+  name: "tunnel_types"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x558644af
+  name: "tunnel_users"
+  type_id: 0x74d29cf1
+  offset: 3328
+}
+member {
+  id: 0xc762812b
+  name: "tuple"
+  type_id: 0x24105774
+  offset: 256
+}
+member {
+  id: 0xc76286f7
+  name: "tuple"
+  type_id: 0x24105774
+  offset: 448
+}
+member {
+  id: 0xc7628842
+  name: "tuple"
+  type_id: 0x24105774
+  offset: 128
+}
+member {
+  id: 0xfb670324
+  name: "tuplehash"
+  type_id: 0x5af23c9d
+  offset: 128
+}
+member {
+  id: 0x93ee636b
+  name: "tuples"
+  type_id: 0x28f21f89
+  offset: 11904
+}
+member {
+  id: 0x93ee6b4c
+  name: "tuples"
+  type_id: 0x28f21f89
+  offset: 7872
+}
+member {
+  id: 0x41f583f3
+  name: "turbo"
+  type_id: 0x6d7f5ff6
+  offset: 176
+}
+member {
+  id: 0xd0faf312
+  name: "tv"
+  type_id: 0xaca6bcfe
+  offset: 384
+}
+member {
+  id: 0xcb5f585a
+  name: "tv_bottom_margin_property"
+  type_id: 0x2a670b41
+  offset: 7872
+}
+member {
+  id: 0x64693967
+  name: "tv_brightness_property"
+  type_id: 0x2a670b41
+  offset: 7936
+}
+member {
+  id: 0xd2dbc169
+  name: "tv_contrast_property"
+  type_id: 0x2a670b41
+  offset: 8000
+}
+member {
+  id: 0xbe6fe7fe
+  name: "tv_flicker_reduction_property"
+  type_id: 0x2a670b41
+  offset: 8064
+}
+member {
+  id: 0x2b2dab7f
+  name: "tv_hue_property"
+  type_id: 0x2a670b41
+  offset: 8256
+}
+member {
+  id: 0x015a1a96
+  name: "tv_left_margin_property"
+  type_id: 0x2a670b41
+  offset: 7680
+}
+member {
+  id: 0x45e2d2d0
+  name: "tv_margins"
+  type_id: 0x39d78d65
+  offset: 544
+}
+member {
+  id: 0xdc54ce2d
+  name: "tv_mode_property"
+  type_id: 0x2a670b41
+  offset: 7616
+}
+member {
+  id: 0x384468cb
+  name: "tv_nsec"
+  type_id: 0xfc0e1dbd
+  offset: 64
+}
+member {
+  id: 0x386c7184
+  name: "tv_nsec"
+  type_id: 0xd41e888f
+  offset: 32
+}
+member {
+  id: 0x388121d8
+  name: "tv_nsec"
+  type_id: 0x39470e64
+  offset: 64
+}
+member {
+  id: 0x388b1f9a
+  name: "tv_nsec"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0x199f6684
+  name: "tv_overscan_property"
+  type_id: 0x2a670b41
+  offset: 8128
+}
+member {
+  id: 0xb6662de4
+  name: "tv_right_margin_property"
+  type_id: 0x2a670b41
+  offset: 7744
+}
+member {
+  id: 0x9c3309e1
+  name: "tv_saturation_property"
+  type_id: 0x2a670b41
+  offset: 8192
+}
+member {
+  id: 0x590f2a38
+  name: "tv_sec"
+  type_id: 0x68035002
+}
+member {
+  id: 0x592a95e5
+  name: "tv_sec"
+  type_id: 0x4dbc8d50
+}
+member {
+  id: 0x595455ce
+  name: "tv_sec"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x595e6e66
+  name: "tv_sec"
+  type_id: 0x39470e64
+}
+member {
+  id: 0x59810e15
+  name: "tv_sec"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0x59dcca01
+  name: "tv_sec"
+  type_id: 0xbbe369d4
+}
+member {
+  id: 0x59e173a4
+  name: "tv_sec"
+  type_id: 0x865acc96
+}
+member {
+  id: 0x2a63160c
+  name: "tv_select_subconnector_property"
+  type_id: 0x2a670b41
+  offset: 7552
+}
+member {
+  id: 0xfe2feec4
+  name: "tv_subconnector_property"
+  type_id: 0x2a670b41
+  offset: 7488
+}
+member {
+  id: 0xdd3f5c67
+  name: "tv_top_margin_property"
+  type_id: 0x2a670b41
+  offset: 7808
+}
+member {
+  id: 0x5f3de12a
+  name: "tv_usec"
+  type_id: 0x39470e64
+  offset: 64
+}
+member {
+  id: 0x5f6ca574
+  name: "tv_usec"
+  type_id: 0x68035002
+  offset: 64
+}
+member {
+  id: 0x5fe2819a
+  name: "tv_usec"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0x06a5b2f2
+  name: "tvnorms"
+  type_id: 0x16f3caa7
+  offset: 9856
+}
+member {
+  id: 0xe2540127
+  name: "tw_refcount"
+  type_id: 0xa722c13e
+}
+member {
+  id: 0xf52d05fa
+  name: "twake"
+  type_id: 0xa8fff47c
+  offset: 2240
+}
+member {
+  id: 0xc5e69fbd
+  name: "twsk_destructor"
+  type_id: 0x0f626ee5
+  offset: 256
+}
+member {
+  id: 0xd54c1cc7
+  name: "twsk_obj_size"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x74a62beb
+  name: "twsk_prot"
+  type_id: 0x0c0aa344
+  offset: 2944
+}
+member {
+  id: 0xae749065
+  name: "twsk_slab"
+  type_id: 0x2efd5036
+}
+member {
+  id: 0x448408cf
+  name: "twsk_slab_name"
+  type_id: 0x0483e6f8
+  offset: 64
+}
+member {
+  id: 0xef561df4
+  name: "twsk_unique"
+  type_id: 0x2c388dae
+  offset: 192
+}
+member {
+  id: 0x653ea2dc
+  name: "tx"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0x653ea6fe
+  name: "tx"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0x6548ea05
+  name: "tx"
+  type_id: 0x906b8630
+}
+member {
+  id: 0x6549cc3c
+  name: "tx"
+  type_id: 0x914dbfdc
+}
+member {
+  id: 0x6579de52
+  name: "tx"
+  type_id: 0xa1571851
+  offset: 192
+}
+member {
+  id: 0x65bfacb0
+  name: "tx"
+  type_id: 0x6720d32f
+  offset: 160
+}
+member {
+  id: 0x562b2b94
+  name: "tx16"
+  type_id: 0x7cbd6b77
+  offset: 24
+}
+member {
+  id: 0x488e77bd
+  name: "tx32"
+  type_id: 0x63264602
+  offset: 56
+}
+member {
+  id: 0xdfbffedf
+  name: "tx8"
+  type_id: 0x4ae542ed
+  offset: 8
+}
+member {
+  id: 0x5a82189d
+  name: "tx_BF_cap_info"
+  type_id: 0x0baa70a7
+  offset: 168
+}
+member {
+  id: 0x485eae99
+  name: "tx_aborted_errors"
+  type_id: 0xedf277ba
+  offset: 1024
+}
+member {
+  id: 0x48802e95
+  name: "tx_aborted_errors"
+  type_id: 0x33756485
+}
+member {
+  id: 0x16f893cf
+  name: "tx_addr"
+  type_id: 0xe02e14d6
+  offset: 1920
+}
+member {
+  id: 0x961fcb98
+  name: "tx_arb_lost_cnt"
+  type_id: 0xb3e7bac9
+  offset: 408
+}
+member {
+  id: 0x5249d0b7
+  name: "tx_bit"
+  type_id: 0xc9082b19
+  offset: 1600
+}
+member {
+  id: 0xb9afe49e
+  name: "tx_block"
+  type_id: 0x6d7f5ff6
+  offset: 64
+}
+member {
+  id: 0xa2a430f0
+  name: "tx_buf"
+  type_id: 0x391f15ea
+}
+member {
+  id: 0xa2a43932
+  name: "tx_buf"
+  type_id: 0x391f15ea
+  offset: 128
+}
+member {
+  id: 0xb51b5e3a
+  name: "tx_bytes"
+  type_id: 0x6720d32f
+  offset: 5888
+}
+member {
+  id: 0xb54645b2
+  name: "tx_bytes"
+  type_id: 0x3a3eb2f9
+  offset: 192
+}
+member {
+  id: 0xb54f06ad
+  name: "tx_bytes"
+  type_id: 0x33756485
+}
+member {
+  id: 0xb5918977
+  name: "tx_bytes"
+  type_id: 0xedf277ba
+  offset: 192
+}
+member {
+  id: 0xb5cc5c1d
+  name: "tx_bytes"
+  type_id: 0xb02b353a
+  offset: 64
+}
+member {
+  id: 0xa875c468
+  name: "tx_carrier_errors"
+  type_id: 0x33756485
+}
+member {
+  id: 0xa8ab4e0d
+  name: "tx_carrier_errors"
+  type_id: 0xedf277ba
+  offset: 1088
+}
+member {
+  id: 0x12ca6682
+  name: "tx_chanmap"
+  type_id: 0xe6d4143b
+  offset: 416
+}
+member {
+  id: 0x3a36b26a
+  name: "tx_channels"
+  type_id: 0x0baa70a7
+  offset: 384
+}
+member {
+  id: 0x2856266b
+  name: "tx_coalesce_usecs"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0x1ebcd154
+  name: "tx_coalesce_usecs_high"
+  type_id: 0xe62ebf07
+  offset: 640
+}
+member {
+  id: 0x3297a17c
+  name: "tx_coalesce_usecs_irq"
+  type_id: 0xe62ebf07
+  offset: 224
+}
+member {
+  id: 0xab46de8d
+  name: "tx_coalesce_usecs_low"
+  type_id: 0xe62ebf07
+  offset: 480
+}
+member {
+  id: 0xafefa0da
+  name: "tx_complete"
+  type_id: 0x3fcbf304
+  offset: 6720
+}
+member {
+  id: 0xafefa22d
+  name: "tx_complete"
+  type_id: 0x3fcbf304
+  offset: 192
+}
+member {
+  id: 0x03399b7b
+  name: "tx_compressed"
+  type_id: 0x33756485
+}
+member {
+  id: 0x03e71e9b
+  name: "tx_compressed"
+  type_id: 0xedf277ba
+  offset: 1408
+}
+member {
+  id: 0x262e94a5
+  name: "tx_cookie"
+  type_id: 0x4faa9b63
+  offset: 2016
+}
+member {
+  id: 0xd4d17de9
+  name: "tx_count"
+  type_id: 0xe62ebf07
+  offset: 192
+}
+member {
+  id: 0xd181d4eb
+  name: "tx_credits"
+  type_id: 0xe8034002
+  offset: 1200
+}
+member {
+  id: 0x54a31621
+  name: "tx_custom_high_usecs"
+  type_id: 0xc9082b19
+  offset: 13056
+}
+member {
+  id: 0x308f17c1
+  name: "tx_custom_low_usecs"
+  type_id: 0xc9082b19
+  offset: 13024
+}
+member {
+  id: 0x481721bf
+  name: "tx_custom_pulse"
+  type_id: 0x6d7f5ff6
+  offset: 13096
+}
+member {
+  id: 0x9c145a0e
+  name: "tx_descs"
+  type_id: 0x383208c1
+  offset: 1280
+}
+member {
+  id: 0x41596303
+  name: "tx_dma"
+  type_id: 0x2c3ce96e
+}
+member {
+  id: 0x41957937
+  name: "tx_dma"
+  type_id: 0xe02e14d6
+  offset: 192
+}
+member {
+  id: 0x96db7beb
+  name: "tx_dma_addr"
+  type_id: 0xbdd18903
+  offset: 1792
+}
+member {
+  id: 0xf94b13c8
+  name: "tx_done"
+  type_id: 0x0fe70006
+  offset: 384
+}
+member {
+  id: 0xb755e0cd
+  name: "tx_dropped"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xb755e42c
+  name: "tx_dropped"
+  type_id: 0x33756485
+}
+member {
+  id: 0xb78b6448
+  name: "tx_dropped"
+  type_id: 0xedf277ba
+  offset: 448
+}
+member {
+  id: 0x14573c12
+  name: "tx_empty"
+  type_id: 0x37185c4a
+  offset: 3456
+}
+member {
+  id: 0x1459039b
+  name: "tx_empty"
+  type_id: 0x392d9f5e
+}
+member {
+  id: 0x6d65c2fe
+  name: "tx_err"
+  type_id: 0x5d8155a5
+  offset: 2248
+}
+member {
+  id: 0x4164b293
+  name: "tx_error_cnt"
+  type_id: 0xb3e7bac9
+  offset: 432
+}
+member {
+  id: 0x641c1abd
+  name: "tx_errors"
+  type_id: 0xb02b353a
+  offset: 128
+}
+member {
+  id: 0x6441cdfa
+  name: "tx_errors"
+  type_id: 0xedf277ba
+  offset: 320
+}
+member {
+  id: 0x649f4d2e
+  name: "tx_errors"
+  type_id: 0x33756485
+}
+member {
+  id: 0xfd70bd80
+  name: "tx_extra_bytes"
+  type_id: 0x295c7202
+  offset: 13120
+}
+member {
+  id: 0x9f51ce32
+  name: "tx_fifo_errors"
+  type_id: 0x33756485
+}
+member {
+  id: 0x9f8f47fd
+  name: "tx_fifo_errors"
+  type_id: 0xedf277ba
+  offset: 1152
+}
+member {
+  id: 0xbcd1df4e
+  name: "tx_fixup"
+  type_id: 0x10617c73
+  offset: 704
+}
+member {
+  id: 0x13091341
+  name: "tx_frames"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0xea5ef0ed
+  name: "tx_frames_delta"
+  type_id: 0x33756485
+  offset: 896
+}
+member {
+  id: 0xf3a33eef
+  name: "tx_g_parameters"
+  type_id: 0x2de16a22
+  offset: 256
+}
+member {
+  id: 0x841d85c4
+  name: "tx_generated_poll"
+  type_id: 0x6d7f5ff6
+  offset: 13104
+}
+member {
+  id: 0x1912f863
+  name: "tx_global_lock"
+  type_id: 0xf313e71a
+  offset: 7904
+}
+member {
+  id: 0x0909e217
+  name: "tx_headroom"
+  type_id: 0x6720d32f
+  offset: 8320
+}
+member {
+  id: 0x415301ca
+  name: "tx_heartbeat_errors"
+  type_id: 0xedf277ba
+  offset: 1216
+}
+member {
+  id: 0x418d841d
+  name: "tx_heartbeat_errors"
+  type_id: 0x33756485
+}
+member {
+  id: 0xd007ef72
+  name: "tx_highest"
+  type_id: 0x9bd401b6
+  offset: 48
+}
+member {
+  id: 0xf5c9c79a
+  name: "tx_ident"
+  type_id: 0xb3e7bac9
+  offset: 1440
+}
+member {
+  id: 0xd901a640
+  name: "tx_ignore_nack_until_eom"
+  type_id: 0x6d7f5ff6
+  offset: 13088
+}
+member {
+  id: 0x489a6749
+  name: "tx_ir"
+  type_id: 0x2d8f671b
+  offset: 19968
+}
+member {
+  id: 0xa0082572
+  name: "tx_lanes"
+  type_id: 0xc9082b19
+  offset: 160
+}
+member {
+  id: 0xa084a106
+  name: "tx_lanes"
+  type_id: 0x4585663f
+  offset: 288
+}
+member {
+  id: 0xe94d3e4e
+  name: "tx_len"
+  type_id: 0xf435685e
+  offset: 64
+}
+member {
+  id: 0xd84fbda6
+  name: "tx_length_quirk"
+  type_id: 0x4585663f
+  offset: 417
+  bitsize: 1
+}
+member {
+  id: 0xb0b17ddb
+  name: "tx_loadsz"
+  type_id: 0x4585663f
+  offset: 4864
+}
+member {
+  id: 0x7ebca209
+  name: "tx_low_drive_cnt"
+  type_id: 0xb3e7bac9
+  offset: 424
+}
+member {
+  id: 0x7ec64336
+  name: "tx_low_drive_cnt"
+  type_id: 0xc9082b19
+  offset: 13152
+}
+member {
+  id: 0xa6a7625f
+  name: "tx_lpi_enabled"
+  type_id: 0xe62ebf07
+  offset: 192
+}
+member {
+  id: 0xf0f08665
+  name: "tx_lpi_timer"
+  type_id: 0xe62ebf07
+  offset: 224
+}
+member {
+  id: 0x15d7172a
+  name: "tx_mask"
+  type_id: 0x4585663f
+  offset: 768
+}
+member {
+  id: 0x6d8a9147
+  name: "tx_max"
+  type_id: 0x92233392
+  offset: 384
+}
+member {
+  id: 0x55810d6d
+  name: "tx_max_coalesced_frames"
+  type_id: 0xe62ebf07
+  offset: 192
+}
+member {
+  id: 0x6348ab5c
+  name: "tx_max_coalesced_frames_high"
+  type_id: 0xe62ebf07
+  offset: 672
+}
+member {
+  id: 0x70b330f1
+  name: "tx_max_coalesced_frames_irq"
+  type_id: 0xe62ebf07
+  offset: 256
+}
+member {
+  id: 0x0cb2d256
+  name: "tx_max_coalesced_frames_low"
+  type_id: 0xe62ebf07
+  offset: 512
+}
+member {
+  id: 0x7992b00c
+  name: "tx_max_pending"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0x19b631b4
+  name: "tx_maxrate"
+  type_id: 0x33756485
+  offset: 960
+}
+member {
+  id: 0xc6117683
+  name: "tx_mcs_160"
+  type_id: 0x9bd401b6
+  offset: 48
+}
+member {
+  id: 0x9002250d
+  name: "tx_mcs_80"
+  type_id: 0x9bd401b6
+  offset: 16
+}
+member {
+  id: 0xa079f47b
+  name: "tx_mcs_80p80"
+  type_id: 0x9bd401b6
+  offset: 80
+}
+member {
+  id: 0xf85e8a62
+  name: "tx_mcs_map"
+  type_id: 0x9bd401b6
+  offset: 32
+}
+member {
+  id: 0x5c0c16d9
+  name: "tx_mode"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0x962013d6
+  name: "tx_msg"
+  type_id: 0x74026623
+  offset: 1152
+}
+member {
+  id: 0x453e3488
+  name: "tx_nack_cnt"
+  type_id: 0xb3e7bac9
+  offset: 416
+}
+member {
+  id: 0xc7808745
+  name: "tx_nacked"
+  type_id: 0x6d7f5ff6
+  offset: 1632
+}
+member {
+  id: 0xb864c802
+  name: "tx_nbits"
+  type_id: 0x4585663f
+  offset: 579
+  bitsize: 3
+}
+member {
+  id: 0x9206d03d
+  name: "tx_packets"
+  type_id: 0x33756485
+}
+member {
+  id: 0x920f9229
+  name: "tx_packets"
+  type_id: 0x3a3eb2f9
+  offset: 128
+}
+member {
+  id: 0x92858e6c
+  name: "tx_packets"
+  type_id: 0xb02b353a
+}
+member {
+  id: 0x92d853cf
+  name: "tx_packets"
+  type_id: 0xedf277ba
+  offset: 64
+}
+member {
+  id: 0x1a413398
+  name: "tx_param"
+  type_id: 0x18bd6530
+  offset: 384
+}
+member {
+  id: 0x676d00b6
+  name: "tx_params"
+  type_id: 0x295c7202
+  offset: 96
+}
+member {
+  id: 0x6005ed42
+  name: "tx_pause"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x59366fb4
+  name: "tx_pause_frames"
+  type_id: 0x92233392
+}
+member {
+  id: 0x81a40f2e
+  name: "tx_pending"
+  type_id: 0xe62ebf07
+  offset: 256
+}
+member {
+  id: 0x8953cf27
+  name: "tx_post_eom"
+  type_id: 0x6d7f5ff6
+  offset: 13112
+}
+member {
+  id: 0x722296b4
+  name: "tx_power"
+  type_id: 0x901eaf6a
+  offset: 3296
+}
+member {
+  id: 0xe88a678e
+  name: "tx_powers"
+  type_id: 0x30d5aa47
+  offset: 1344
+}
+member {
+  id: 0x5564056a
+  name: "tx_powers_size"
+  type_id: 0xf435685e
+  offset: 1216
+}
+member {
+  id: 0xd929934a
+  name: "tx_prepare"
+  type_id: 0x0fe1720b
+  offset: 320
+}
+member {
+  id: 0x819a977c
+  name: "tx_push"
+  type_id: 0x295c7202
+  offset: 40
+}
+member {
+  id: 0xb8e8c74c
+  name: "tx_pwr_hs"
+  type_id: 0xc9082b19
+  offset: 288
+}
+member {
+  id: 0x5dc72d35
+  name: "tx_pwr_pwm"
+  type_id: 0xc9082b19
+  offset: 224
+}
+member {
+  id: 0x0776a1f3
+  name: "tx_q"
+  type_id: 0x578f9c2b
+  offset: 6592
+}
+member {
+  id: 0x327a5eed
+  name: "tx_qlen"
+  type_id: 0xc93e017b
+  offset: 944
+}
+member {
+  id: 0x580681a6
+  name: "tx_queue_len"
+  type_id: 0x4585663f
+  offset: 7872
+}
+member {
+  id: 0x58707f20
+  name: "tx_queue_len"
+  type_id: 0x33756485
+  offset: 11328
+}
+member {
+  id: 0x5f95d285
+  name: "tx_reserved"
+  type_id: 0x2b4e5af5
+  offset: 128
+}
+member {
+  id: 0x1637af8a
+  name: "tx_resolution"
+  type_id: 0xc9082b19
+  offset: 10784
+}
+member {
+  id: 0xeae26a4d
+  name: "tx_result"
+  type_id: 0xa8c55087
+  offset: 1152
+}
+member {
+  id: 0x76be6d4b
+  name: "tx_running"
+  type_id: 0x5d8155a5
+  offset: 2240
+}
+member {
+  id: 0x70b69280
+  name: "tx_s_parameters"
+  type_id: 0x2de16a22
+  offset: 320
+}
+member {
+  id: 0xa9c25c8c
+  name: "tx_sa"
+  type_id: 0x0595878c
+}
+member {
+  id: 0xf381a6fb
+  name: "tx_sa_stats"
+  type_id: 0x30c99424
+}
+member {
+  id: 0x2754e087
+  name: "tx_sc"
+  type_id: 0x10133b9a
+  offset: 320
+}
+member {
+  id: 0x93f6ff40
+  name: "tx_sc_stats"
+  type_id: 0x0582eecf
+}
+member {
+  id: 0xfca1d7ea
+  name: "tx_send_head"
+  type_id: 0x054f691a
+  offset: 6528
+}
+member {
+  id: 0x2862bcb8
+  name: "tx_sg"
+  type_id: 0x28d027d4
+  offset: 320
+}
+member {
+  id: 0xd3866153
+  name: "tx_share"
+  type_id: 0x92233392
+  offset: 320
+}
+member {
+  id: 0xc66ecf47
+  name: "tx_signal_free_time"
+  type_id: 0xc9082b19
+  offset: 1664
+}
+member {
+  id: 0x1f602b1e
+  name: "tx_size"
+  type_id: 0xf435685e
+  offset: 2176
+}
+member {
+  id: 0xd2a98d48
+  name: "tx_skb"
+  type_id: 0x054f691a
+  offset: 1984
+}
+member {
+  id: 0x282b5eed
+  name: "tx_slots"
+  type_id: 0x0baa70a7
+  offset: 320
+}
+member {
+  id: 0x71b830b2
+  name: "tx_speed"
+  type_id: 0xfc0e1dbd
+  offset: 2752
+}
+member {
+  id: 0x4a0d7b72
+  name: "tx_state"
+  type_id: 0x33756485
+  offset: 2048
+}
+member {
+  id: 0x4a8de760
+  name: "tx_state"
+  type_id: 0xb3e7bac9
+  offset: 1232
+}
+member {
+  id: 0x0c440955
+  name: "tx_status"
+  type_id: 0xb3e7bac9
+  offset: 400
+}
+member {
+  id: 0x0c70b377
+  name: "tx_status"
+  type_id: 0x8750081a
+  offset: 6976
+}
+member {
+  id: 0x9f8c43cd
+  name: "tx_stopped"
+  type_id: 0x4585663f
+  offset: 1280
+  bitsize: 1
+}
+member {
+  id: 0x38e3ba4a
+  name: "tx_submit"
+  type_id: 0x1e5f193e
+  offset: 192
+}
+member {
+  id: 0x6af1b6af
+  name: "tx_tailroom"
+  type_id: 0x6720d32f
+  offset: 8352
+}
+member {
+  id: 0xd96a1925
+  name: "tx_timeouts"
+  type_id: 0xc9082b19
+  offset: 13024
+}
+member {
+  id: 0x5343bc40
+  name: "tx_toggle"
+  type_id: 0x6d7f5ff6
+  offset: 1696
+}
+member {
+  id: 0xcff5d22d
+  name: "tx_tout"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x3a7a89bc
+  name: "tx_ts"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0xfe17a0e3
+  name: "tx_types"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x88a996ec
+  name: "tx_win"
+  type_id: 0xe8034002
+  offset: 1088
+}
+member {
+  id: 0x346f4277
+  name: "tx_win_max"
+  type_id: 0xe8034002
+  offset: 1104
+}
+member {
+  id: 0xa17f46b3
+  name: "tx_window_errors"
+  type_id: 0xedf277ba
+  offset: 1280
+}
+member {
+  id: 0xa1a1c7dd
+  name: "tx_window_errors"
+  type_id: 0x33756485
+}
+member {
+  id: 0xa75cede3
+  name: "tx_work"
+  type_id: 0x1f3c8679
+  offset: 22976
+}
+member {
+  id: 0xdebcf805
+  name: "tx_write"
+  type_id: 0x2de3e088
+  offset: 192
+}
+member {
+  id: 0xab0cc158
+  name: "txchan"
+  type_id: 0x3a583251
+  offset: 1664
+}
+member {
+  id: 0x00c402e1
+  name: "txconf"
+  type_id: 0x5ed0bdd0
+  offset: 1024
+}
+member {
+  id: 0x6bfc4a3f
+  name: "txdone_irq"
+  type_id: 0x6d7f5ff6
+  offset: 224
+}
+member {
+  id: 0x74f35584
+  name: "txdone_method"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x9152f264
+  name: "txdone_poll"
+  type_id: 0x6d7f5ff6
+  offset: 232
+}
+member {
+  id: 0xad625ddb
+  name: "txerr"
+  type_id: 0xe8034002
+}
+member {
+  id: 0x497f22b7
+  name: "txfill_tuning"
+  type_id: 0xc9082b19
+  offset: 288
+}
+member {
+  id: 0x305e2804
+  name: "txfr_quirk"
+  type_id: 0x4585663f
+  offset: 416
+  bitsize: 1
+}
+member {
+  id: 0x830688ae
+  name: "txn"
+  type_id: 0x92233392
+  offset: 320
+}
+member {
+  id: 0xc3811842
+  name: "txn_security_ctx"
+  type_id: 0x295c7202
+  offset: 4
+  bitsize: 1
+}
+member {
+  id: 0x62422f28
+  name: "txpoll_period"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0x9565d3f1
+  name: "txpower"
+  type_id: 0xe8d14bc6
+}
+member {
+  id: 0x420ec279
+  name: "txq"
+  type_id: 0x578f9c2b
+  offset: 3008
+}
+member {
+  id: 0x427514a8
+  name: "txq"
+  type_id: 0x2c5882f1
+  offset: 320
+}
+member {
+  id: 0xefe29af2
+  name: "txq_limit"
+  type_id: 0xc9082b19
+  offset: 11232
+}
+member {
+  id: 0xd029c54f
+  name: "txq_memory_limit"
+  type_id: 0xc9082b19
+  offset: 11264
+}
+member {
+  id: 0xdd1f69f8
+  name: "txq_quantum"
+  type_id: 0xc9082b19
+  offset: 11296
+}
+member {
+  id: 0x4d90da75
+  name: "txsubchans"
+  type_id: 0xe62ebf07
+  offset: 384
+}
+member {
+  id: 0x6f2ecf9b
+  name: "txtstamp"
+  type_id: 0x0e2469a6
+  offset: 64
+}
+member {
+  id: 0x64d3fc68
+  name: "typ"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x1d9bc840
+  name: "type"
+  type_id: 0x914dbfdc
+  bitsize: 3
+}
+member {
+  id: 0x5a6d005f
+  name: "type"
+  type_id: 0x355c4a0f
+  offset: 64
+  bitsize: 8
+}
+member {
+  id: 0x5c04bfec
+  name: "type"
+  type_id: 0x5268af9d
+  offset: 704
+}
+member {
+  id: 0x5c053fe3
+  name: "type"
+  type_id: 0x53ea9d01
+}
+member {
+  id: 0x5c05a3de
+  name: "type"
+  type_id: 0x537b9bfd
+  offset: 32
+}
+member {
+  id: 0x5c08dd70
+  name: "type"
+  type_id: 0x5e01cc43
+  offset: 128
+}
+member {
+  id: 0x5c0b56d8
+  name: "type"
+  type_id: 0x5d8155a5
+  offset: 1408
+}
+member {
+  id: 0x5c0b5791
+  name: "type"
+  type_id: 0x5d8155a5
+  offset: 832
+}
+member {
+  id: 0x5c0c0a82
+  name: "type"
+  type_id: 0x5adf57ae
+  offset: 256
+}
+member {
+  id: 0x5c0c6f5c
+  name: "type"
+  type_id: 0x5ab350f8
+  offset: 576
+}
+member {
+  id: 0x5c0f21f9
+  name: "type"
+  type_id: 0x59f48707
+}
+member {
+  id: 0x5c135018
+  name: "type"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x5c135713
+  name: "type"
+  type_id: 0x4585663f
+  offset: 2304
+}
+member {
+  id: 0x5c13576f
+  name: "type"
+  type_id: 0x4585663f
+  offset: 448
+}
+member {
+  id: 0x5c13599b
+  name: "type"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x5c135c0a
+  name: "type"
+  type_id: 0x4585663f
+  offset: 7424
+}
+member {
+  id: 0x5c135d23
+  name: "type"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x5c135df8
+  name: "type"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0x5c1447eb
+  name: "type"
+  type_id: 0x4296745b
+  offset: 64
+}
+member {
+  id: 0x5c1a40aa
+  name: "type"
+  type_id: 0x4c957f4c
+  offset: 256
+}
+member {
+  id: 0x5c1a423c
+  name: "type"
+  type_id: 0x4c957f4c
+  offset: 704
+}
+member {
+  id: 0x5c20d152
+  name: "type"
+  type_id: 0x760e8adc
+  offset: 896
+}
+member {
+  id: 0x5c20fa3d
+  name: "type"
+  type_id: 0x762f432d
+}
+member {
+  id: 0x5c235199
+  name: "type"
+  type_id: 0x7584e7da
+}
+member {
+  id: 0x5c24ce01
+  name: "type"
+  type_id: 0x721b7fe3
+}
+member {
+  id: 0x5c2638e4
+  name: "type"
+  type_id: 0x70ed9abd
+}
+member {
+  id: 0x5c28d22c
+  name: "type"
+  type_id: 0x7e09d913
+  offset: 2880
+}
+member {
+  id: 0x5c2b2ab6
+  name: "type"
+  type_id: 0x7dfcec97
+  offset: 224
+}
+member {
+  id: 0x5c2c564b
+  name: "type"
+  type_id: 0x7a8335ad
+}
+member {
+  id: 0x5c31f0a9
+  name: "type"
+  type_id: 0x6720d32f
+  offset: 1504
+}
+member {
+  id: 0x5c31f14c
+  name: "type"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x5c31f174
+  name: "type"
+  type_id: 0x6720d32f
+  offset: 288
+}
+member {
+  id: 0x5c31f2da
+  name: "type"
+  type_id: 0x6720d32f
+  offset: 448
+}
+member {
+  id: 0x5c31f395
+  name: "type"
+  type_id: 0x6720d32f
+  offset: 6944
+}
+member {
+  id: 0x5c31f506
+  name: "type"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0x5c31f5ad
+  name: "type"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x5c31f896
+  name: "type"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x5c31fb6a
+  name: "type"
+  type_id: 0x6720d32f
+  offset: 736
+}
+member {
+  id: 0x5c31fc6f
+  name: "type"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x5c31fd64
+  name: "type"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0x5c32c5f3
+  name: "type"
+  type_id: 0x641a2bf3
+  offset: 896
+}
+member {
+  id: 0x5c368a26
+  name: "type"
+  type_id: 0x605bb988
+  offset: 64
+}
+member {
+  id: 0x5c405aa7
+  name: "type"
+  type_id: 0x16861be6
+  offset: 128
+}
+member {
+  id: 0x5c40fde5
+  name: "type"
+  type_id: 0x162c7a70
+  offset: 64
+}
+member {
+  id: 0x5c41fc08
+  name: "type"
+  type_id: 0x17244d16
+  offset: 32
+}
+member {
+  id: 0x5c426bba
+  name: "type"
+  type_id: 0x14ba251a
+  offset: 64
+}
+member {
+  id: 0x5c46dd88
+  name: "type"
+  type_id: 0x100964d4
+  offset: 384
+}
+member {
+  id: 0x5c4ae5fb
+  name: "type"
+  type_id: 0x1c3dbe5a
+  offset: 32
+}
+member {
+  id: 0x5c4b2512
+  name: "type"
+  type_id: 0x1df06cce
+}
+member {
+  id: 0x5c4f16c5
+  name: "type"
+  type_id: 0x19ce8000
+  offset: 32
+}
+member {
+  id: 0x5c4f1bfe
+  name: "type"
+  type_id: 0x19ce8000
+}
+member {
+  id: 0x5c525279
+  name: "type"
+  type_id: 0x0483e6f8
+  offset: 64
+}
+member {
+  id: 0x5c5c6be1
+  name: "type"
+  type_id: 0x0abe9fd1
+}
+member {
+  id: 0x5c5d7235
+  name: "type"
+  type_id: 0x0baa70a7
+  offset: 32
+}
+member {
+  id: 0x5c5d768d
+  name: "type"
+  type_id: 0x0baa70a7
+  offset: 96
+}
+member {
+  id: 0x5c5e2fe4
+  name: "type"
+  type_id: 0x08fa9aab
+}
+member {
+  id: 0x5c605bbb
+  name: "type"
+  type_id: 0x368ec5cb
+}
+member {
+  id: 0x5c61158d
+  name: "type"
+  type_id: 0x37ce2c2c
+  offset: 544
+}
+member {
+  id: 0x5c62ac77
+  name: "type"
+  type_id: 0x347de8b1
+  offset: 64
+}
+member {
+  id: 0x5c62c4df
+  name: "type"
+  type_id: 0x34154096
+  offset: 64
+}
+member {
+  id: 0x5c6460ee
+  name: "type"
+  type_id: 0x32bd639f
+  offset: 960
+}
+member {
+  id: 0x5c6461df
+  name: "type"
+  type_id: 0x32bd639f
+  offset: 128
+}
+member {
+  id: 0x5c6466ef
+  name: "type"
+  type_id: 0x32b54b11
+  offset: 5760
+}
+member {
+  id: 0x5c65392f
+  name: "type"
+  type_id: 0x33e3ad2f
+  offset: 9920
+}
+member {
+  id: 0x5c65a01a
+  name: "type"
+  type_id: 0x33756485
+}
+member {
+  id: 0x5c65a7dd
+  name: "type"
+  type_id: 0x33756485
+  offset: 320
+}
+member {
+  id: 0x5c68c5cb
+  name: "type"
+  type_id: 0x3e10b518
+}
+member {
+  id: 0x5c68cd02
+  name: "type"
+  type_id: 0x3e10b518
+  offset: 192
+}
+member {
+  id: 0x5c6a826a
+  name: "type"
+  type_id: 0x3c57148f
+}
+member {
+  id: 0x5c6ab0dd
+  name: "type"
+  type_id: 0x3c614288
+  offset: 64
+}
+member {
+  id: 0x5c6e5732
+  name: "type"
+  type_id: 0x388fac8e
+  offset: 160
+}
+member {
+  id: 0x5c6e9e24
+  name: "type"
+  type_id: 0x3843f4e3
+  offset: 768
+}
+member {
+  id: 0x5c730e29
+  name: "type"
+  type_id: 0x25db57c0
+}
+member {
+  id: 0x5c7494f2
+  name: "type"
+  type_id: 0x22417e55
+  offset: 608
+}
+member {
+  id: 0x5c78d1e7
+  name: "type"
+  type_id: 0x2e0a4508
+  offset: 1152
+}
+member {
+  id: 0x5c79850d
+  name: "type"
+  type_id: 0x2f5073a5
+}
+member {
+  id: 0x5c7bba62
+  name: "type"
+  type_id: 0x2d6f1c55
+}
+member {
+  id: 0x5c7f2cfe
+  name: "type"
+  type_id: 0x29f042bf
+  offset: 128
+}
+member {
+  id: 0x5c7f82ea
+  name: "type"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0x5c7f87b2
+  name: "type"
+  type_id: 0x295c7202
+  offset: 16
+}
+member {
+  id: 0x5c7f890c
+  name: "type"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x5c7f89f2
+  name: "type"
+  type_id: 0x295c7202
+  offset: 1192
+}
+member {
+  id: 0x5c7f8c8c
+  name: "type"
+  type_id: 0x295c7202
+  offset: 496
+}
+member {
+  id: 0x5c7f8dfc
+  name: "type"
+  type_id: 0x295c7202
+  offset: 3208
+}
+member {
+  id: 0x5c839712
+  name: "type"
+  type_id: 0xd5426c51
+}
+member {
+  id: 0x5c90d4fc
+  name: "type"
+  type_id: 0xc6094b6c
+  offset: 192
+}
+member {
+  id: 0x5c962823
+  name: "type"
+  type_id: 0xc0fced27
+  offset: 480
+}
+member {
+  id: 0x5c962f39
+  name: "type"
+  type_id: 0xc0fced27
+  offset: 7616
+}
+member {
+  id: 0x5c963569
+  name: "type"
+  type_id: 0xc0e017a2
+}
+member {
+  id: 0x5c988371
+  name: "type"
+  type_id: 0xce5d1786
+  offset: 512
+}
+member {
+  id: 0x5c9fd0b5
+  name: "type"
+  type_id: 0xc9082b19
+  offset: 160
+}
+member {
+  id: 0x5c9fd2e2
+  name: "type"
+  type_id: 0xc9082b19
+  offset: 3552
+}
+member {
+  id: 0x5c9fd392
+  name: "type"
+  type_id: 0xc9082b19
+  offset: 736
+}
+member {
+  id: 0x5c9fd40f
+  name: "type"
+  type_id: 0xc9082b19
+  offset: 2624
+}
+member {
+  id: 0x5c9fd497
+  name: "type"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0x5c9fd9b4
+  name: "type"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x5c9fdcc7
+  name: "type"
+  type_id: 0xc9082b19
+  offset: 384
+}
+member {
+  id: 0x5c9fdd55
+  name: "type"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x5c9fe20a
+  name: "type"
+  type_id: 0xc93e017b
+  offset: 2368
+}
+member {
+  id: 0x5c9fe644
+  name: "type"
+  type_id: 0xc93e017b
+  offset: 32
+}
+member {
+  id: 0x5c9feb7f
+  name: "type"
+  type_id: 0xc93e017b
+}
+member {
+  id: 0x5c9fee55
+  name: "type"
+  type_id: 0xc93e017b
+  offset: 2400
+}
+member {
+  id: 0x5ca01e4e
+  name: "type"
+  type_id: 0xf6c2b30c
+  offset: 96
+}
+member {
+  id: 0x5ca61a87
+  name: "type"
+  type_id: 0xf0cb20f0
+  offset: 288
+}
+member {
+  id: 0x5ca90da6
+  name: "type"
+  type_id: 0xffd5e3ef
+  offset: 32
+}
+member {
+  id: 0x5cab6e0c
+  name: "type"
+  type_id: 0xfdb649ac
+  offset: 32
+}
+member {
+  id: 0x5cac8829
+  name: "type"
+  type_id: 0xfa5f37bb
+  offset: 416
+}
+member {
+  id: 0x5cb0f203
+  name: "type"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0x5cb0f4a6
+  name: "type"
+  type_id: 0xe62ebf07
+  offset: 800
+}
+member {
+  id: 0x5cb0f6fa
+  name: "type"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x5cb0f8e5
+  name: "type"
+  type_id: 0xe62ebf07
+  offset: 224
+}
+member {
+  id: 0x5cb0f9a1
+  name: "type"
+  type_id: 0xe62ebf07
+  offset: 416
+}
+member {
+  id: 0x5cb0fb6a
+  name: "type"
+  type_id: 0xe62ebf07
+  offset: 256
+}
+member {
+  id: 0x5cb0fbc1
+  name: "type"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x5cb0ff18
+  name: "type"
+  type_id: 0xe62ebf07
+  offset: 288
+}
+member {
+  id: 0x5cb0ff20
+  name: "type"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x5cbbc962
+  name: "type"
+  type_id: 0xed1c1cd5
+}
+member {
+  id: 0x5cbed63e
+  name: "type"
+  type_id: 0xe8034002
+}
+member {
+  id: 0x5cc4fd55
+  name: "type"
+  type_id: 0x92233392
+  offset: 512
+}
+member {
+  id: 0x5cc79008
+  name: "type"
+  type_id: 0x914dbfdc
+  offset: 192
+}
+member {
+  id: 0x5cc79521
+  name: "type"
+  type_id: 0x914dbfdc
+  offset: 160
+}
+member {
+  id: 0x5cc798c1
+  name: "type"
+  type_id: 0x914dbfdc
+}
+member {
+  id: 0x5cca4b3a
+  name: "type"
+  type_id: 0x9c9aa5e3
+  offset: 64
+}
+member {
+  id: 0x5ccb32d1
+  name: "type"
+  type_id: 0x9dea9413
+  offset: 32
+}
+member {
+  id: 0x5ccd025b
+  name: "type"
+  type_id: 0x9bd401b6
+  offset: 224
+}
+member {
+  id: 0x5cd8a821
+  name: "type"
+  type_id: 0x8e749d69
+  offset: 128
+}
+member {
+  id: 0x5ce33492
+  name: "type"
+  type_id: 0xb5e50d5b
+  offset: 64
+}
+member {
+  id: 0x5ce530b0
+  name: "type"
+  type_id: 0xb3e7bac9
+  offset: 200
+}
+member {
+  id: 0x5ce532c4
+  name: "type"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0x5ce53a0d
+  name: "type"
+  type_id: 0xb3e7bac9
+  offset: 192
+}
+member {
+  id: 0x5ce53b06
+  name: "type"
+  type_id: 0xb3e7bac9
+  offset: 128
+}
+member {
+  id: 0x5ce53fde
+  name: "type"
+  type_id: 0xb3e7bac9
+  offset: 456
+}
+member {
+  id: 0x5ce5a332
+  name: "type"
+  type_id: 0xb3764c4a
+}
+member {
+  id: 0x5ce6e0b2
+  name: "type"
+  type_id: 0xb0312d5a
+  offset: 64
+}
+member {
+  id: 0x5ce6e324
+  name: "type"
+  type_id: 0xb0312d5a
+  offset: 448
+}
+member {
+  id: 0x5ce6e968
+  name: "type"
+  type_id: 0xb0312d5a
+  offset: 32
+}
+member {
+  id: 0x5cea9bce
+  name: "type"
+  type_id: 0xbc4eb052
+}
+member {
+  id: 0x5cef5f95
+  name: "type"
+  type_id: 0xb98aebc2
+}
+member {
+  id: 0x5cf2824f
+  name: "type"
+  type_id: 0xa45ef3d0
+  offset: 128
+}
+member {
+  id: 0x5cf43c55
+  name: "type"
+  type_id: 0xa2e4cbbb
+  offset: 160
+}
+member {
+  id: 0x5cf7e9a9
+  name: "type"
+  type_id: 0xa13cd7c6
+}
+member {
+  id: 0x5cfa478b
+  name: "type"
+  type_id: 0xac92f5da
+}
+member {
+  id: 0x6bcbf9a6
+  name: "type"
+  type_id: 0xedf277ba
+  offset: 148
+  bitsize: 4
+}
+member {
+  id: 0xfbb63ab7
+  name: "type"
+  type_id: 0xc9082b19
+  offset: 27
+  bitsize: 2
+}
+member {
+  id: 0x737fb73e
+  name: "type_attr_map_array"
+  type_id: 0x2b3a75d9
+  offset: 4288
+}
+member {
+  id: 0xf0496fa3
+  name: "type_aux"
+  type_id: 0xe62ebf07
+  offset: 256
+}
+member {
+  id: 0x2c8adf6f
+  name: "type_base"
+  type_id: 0x4585663f
+  offset: 384
+}
+member {
+  id: 0xb7a17035
+  name: "type_buf"
+  type_id: 0x1bf16028
+  offset: 3264
+}
+member {
+  id: 0x43870308
+  name: "type_buf_def"
+  type_id: 0x1bf16028
+  offset: 3328
+}
+member {
+  id: 0xeb47058c
+  name: "type_bulk"
+  type_id: 0x4585663f
+  offset: 2
+  bitsize: 1
+}
+member {
+  id: 0xd923e10f
+  name: "type_cache"
+  type_id: 0xc9082b19
+  offset: 480
+}
+member {
+  id: 0xb38ca977
+  name: "type_control"
+  type_id: 0x4585663f
+  bitsize: 1
+}
+member {
+  id: 0x25da395c
+  name: "type_dev"
+  type_id: 0x18bd6530
+  offset: 448
+}
+member {
+  id: 0xe6df641d
+  name: "type_falling_val"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x2c33f3a3
+  name: "type_guid"
+  type_id: 0xbb354ed2
+  offset: 192
+}
+member {
+  id: 0x148d904b
+  name: "type_id"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x148d9991
+  name: "type_id"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x14a2bb16
+  name: "type_id"
+  type_id: 0xc9082b19
+  offset: 608
+}
+member {
+  id: 0x1c682151
+  name: "type_in_mask"
+  type_id: 0x4585663f
+  offset: 617
+  bitsize: 1
+}
+member {
+  id: 0xb9c73019
+  name: "type_int"
+  type_id: 0x4585663f
+  offset: 3
+  bitsize: 1
+}
+member {
+  id: 0xf0721b0e
+  name: "type_invert"
+  type_id: 0x4585663f
+  offset: 616
+  bitsize: 1
+}
+member {
+  id: 0xc29ac9a5
+  name: "type_iso"
+  type_id: 0x4585663f
+  offset: 1
+  bitsize: 1
+}
+member {
+  id: 0x43a15612
+  name: "type_len"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x7af05c61
+  name: "type_len"
+  type_id: 0xc9082b19
+  bitsize: 5
+}
+member {
+  id: 0x2f0e885b
+  name: "type_level_high_val"
+  type_id: 0x4585663f
+  offset: 160
+}
+member {
+  id: 0xa1bb7e2a
+  name: "type_level_low_val"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0xc5a12bbd
+  name: "type_lock"
+  type_id: 0xf313e71a
+  offset: 352
+}
+member {
+  id: 0xe2794a8c
+  name: "type_names"
+  type_id: 0x2a5ed1c1
+  offset: 256
+}
+member {
+  id: 0x1ea46e33
+  name: "type_nb"
+  type_id: 0x449a775b
+  offset: 1024
+}
+member {
+  id: 0xc29eda83
+  name: "type_off"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x8f643db8
+  name: "type_offload"
+  type_id: 0x3f5329f7
+  offset: 5952
+}
+member {
+  id: 0x9d444403
+  name: "type_ops"
+  type_id: 0x386f9e42
+  offset: 512
+}
+member {
+  id: 0x9d444bfa
+  name: "type_ops"
+  type_id: 0x386f9e42
+  offset: 64
+}
+member {
+  id: 0xd53be527
+  name: "type_reg_mask"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0x32f4985d
+  name: "type_reg_offset"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x62ccd57f
+  name: "type_requested"
+  type_id: 0xc9082b19
+  bitsize: 4
+}
+member {
+  id: 0xcf857d26
+  name: "type_rising_val"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x4a3d814f
+  name: "type_str_buf"
+  type_id: 0x3db8d8c8
+  offset: 76544
+}
+member {
+  id: 0xe75ebaee
+  name: "type_val_to_struct"
+  type_id: 0x0f4b7529
+  offset: 2368
+}
+member {
+  id: 0xef96bf4c
+  name: "type_warn_dw"
+  type_id: 0xf1159c31
+  offset: 1024
+}
+member {
+  id: 0xa984c17f
+  name: "typec_cap"
+  type_id: 0x2d759fd7
+  offset: 5312
+}
+member {
+  id: 0x7398e573
+  name: "typec_caps"
+  type_id: 0x2d759fd7
+  offset: 512
+}
+member {
+  id: 0xe234c9e1
+  name: "typec_port"
+  type_id: 0x3760766d
+  offset: 1216
+}
+member {
+  id: 0xb9144135
+  name: "typec_version"
+  type_id: 0x914dbfdc
+  offset: 112
+}
+member {
+  id: 0xf403be21
+  name: "types"
+  type_id: 0x914dbfdc
+  offset: 16
+}
+member {
+  id: 0xf4145411
+  name: "types"
+  type_id: 0x86a931f9
+}
+member {
+  id: 0xf4145cd8
+  name: "types"
+  type_id: 0x86a931f9
+  offset: 192
+}
+member {
+  id: 0xf49ecb47
+  name: "types"
+  type_id: 0x0c3286fb
+  offset: 64
+}
+member {
+  id: 0x3f590b7c
+  name: "types_mask"
+  type_id: 0x914dbfdc
+}
+member {
+  id: 0x8395f638
+  name: "types_size"
+  type_id: 0xc9082b19
+  offset: 608
+}
+member {
+  id: 0xad7e0d48
+  name: "types_supported"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0xe2072187
+  name: "typetab"
+  type_id: 0x0483e6f8
+  offset: 192
+}
+member {
+  id: 0xe37d1ffb
+  name: "tz"
+  type_id: 0x26e55184
+  offset: 192
+}
+member {
+  id: 0x00bfd587
+  name: "tz_dsttime"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0xe039817a
+  name: "tz_minuteswest"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x27ca9166
+  name: "tz_node"
+  type_id: 0xd3c80119
+  offset: 1472
+}
+member {
+  id: 0xf0c0380f
+  name: "tzd"
+  type_id: 0x26e55184
+  offset: 9344
+}
+member {
+  id: 0xe1eb34b0
+  name: "tzp"
+  type_id: 0x043574da
+  offset: 8768
+}
+member {
+  id: 0xec049603
+  name: "u"
+  type_id: 0x7bc75513
+  offset: 32
+}
+member {
+  id: 0xec06f365
+  name: "u"
+  type_id: 0x79abe95d
+  offset: 64
+}
+member {
+  id: 0xec08e930
+  name: "u"
+  type_id: 0x77bbd63d
+  offset: 2880
+}
+member {
+  id: 0xec1205eb
+  name: "u"
+  type_id: 0x6d504440
+  offset: 128
+}
+member {
+  id: 0xec1659ba
+  name: "u"
+  type_id: 0x6905d706
+}
+member {
+  id: 0xec1fd483
+  name: "u"
+  type_id: 0x608c0f38
+  offset: 64
+}
+member {
+  id: 0xec25b730
+  name: "u"
+  type_id: 0x5aefbcda
+  offset: 64
+}
+member {
+  id: 0xec2a2154
+  name: "u"
+  type_id: 0x5574fba9
+  offset: 128
+}
+member {
+  id: 0xec2ac37d
+  name: "u"
+  type_id: 0x559f10ea
+}
+member {
+  id: 0xec2faca6
+  name: "u"
+  type_id: 0x50f0cbcf
+}
+member {
+  id: 0xec395aa8
+  name: "u"
+  type_id: 0x460e36a4
+  offset: 960
+}
+member {
+  id: 0xec3c82cc
+  name: "u"
+  type_id: 0x43da400a
+  offset: 64
+}
+member {
+  id: 0xec3d71ae
+  name: "u"
+  type_id: 0x422401d6
+  offset: 128
+}
+member {
+  id: 0xec3e15e2
+  name: "u"
+  type_id: 0x414d6eac
+  offset: 64
+}
+member {
+  id: 0xec594ac3
+  name: "u"
+  type_id: 0x261f6c9d
+  offset: 128
+}
+member {
+  id: 0xec76bd98
+  name: "u"
+  type_id: 0x09e514cb
+  offset: 64
+}
+member {
+  id: 0x340d3afb
+  name: "u16_data"
+  type_id: 0xa81e7ced
+}
+member {
+  id: 0x76ff1609
+  name: "u1_params"
+  type_id: 0x48683747
+  offset: 12064
+}
+member {
+  id: 0x07dd6a6b
+  name: "u2_params"
+  type_id: 0x48683747
+  offset: 12192
+}
+member {
+  id: 0x79caa317
+  name: "u3"
+  type_id: 0xf60ed6a0
+}
+member {
+  id: 0x1cc42dba
+  name: "u32_data"
+  type_id: 0x5eeb4a25
+}
+member {
+  id: 0x80598f11
+  name: "u32_max_value"
+  type_id: 0xc9082b19
+  offset: 736
+}
+member {
+  id: 0x4b998263
+  name: "u32_min_value"
+  type_id: 0xc9082b19
+  offset: 704
+}
+member {
+  id: 0xa1fa9a24
+  name: "u3exit_done"
+  type_id: 0x83f3a37a
+  offset: 10304
+}
+member {
+  id: 0x2de7b522
+  name: "u64_data"
+  type_id: 0x91412a6e
+}
+member {
+  id: 0x4438dbf9
+  name: "u6_addr16"
+  type_id: 0xf95fb1e4
+}
+member {
+  id: 0x49b83077
+  name: "u6_addr32"
+  type_id: 0xb4d0b861
+}
+member {
+  id: 0xac637117
+  name: "u6_addr8"
+  type_id: 0x60ca2c23
+}
+member {
+  id: 0xb610f850
+  name: "u8_data"
+  type_id: 0xee699492
+}
+member {
+  id: 0x7ad222dc
+  name: "uA_load"
+  type_id: 0x6720d32f
+  offset: 224
+}
+member {
+  id: 0x6756e005
+  name: "uV"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x8e5581df
+  name: "uV_offset"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0xf4174ffd
+  name: "uV_step"
+  type_id: 0x4585663f
+  offset: 736
+}
+member {
+  id: 0xa4e611da
+  name: "u_amp"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0x63bb6276
+  name: "u_flags"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x8ca734fe
+  name: "u_volt"
+  type_id: 0x33756485
+}
+member {
+  id: 0xdc31ee3a
+  name: "u_volt_max"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x4cc6f98e
+  name: "u_volt_min"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xcac77b95
+  name: "u_watt"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0x1a96b10c
+  name: "uaccess_its_write"
+  type_id: 0x2eae2318
+}
+member {
+  id: 0x8638eb22
+  name: "uaccess_read"
+  type_id: 0x0669d6b3
+  offset: 256
+}
+member {
+  id: 0x34f83972
+  name: "uaccess_write"
+  type_id: 0x2d62ee59
+}
+member {
+  id: 0x555ff25e
+  name: "uaddr"
+  type_id: 0x38d23361
+}
+member {
+  id: 0x558adbd8
+  name: "uaddr"
+  type_id: 0xedf277ba
+  offset: 128
+}
+member {
+  id: 0x9848a12d
+  name: "uaddr2"
+  type_id: 0x38d23361
+  offset: 256
+}
+member {
+  id: 0x3a98dfb1
+  name: "uapi_mutex"
+  type_id: 0xa7c362b0
+  offset: 64
+}
+member {
+  id: 0x6a0a74ef
+  name: "uart_port"
+  type_id: 0x00b7947f
+  offset: 4032
+}
+member {
+  id: 0x46701e28
+  name: "uartclk"
+  type_id: 0x4585663f
+  offset: 1408
+}
+member {
+  id: 0xae4712de
+  name: "ubuf"
+  type_id: 0x0483e6f8
+  offset: 8256
+}
+member {
+  id: 0xae5b2ccb
+  name: "ubuf"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0xaed1b29d
+  name: "ubuf"
+  type_id: 0x92233392
+}
+member {
+  id: 0x5ab488ff
+  name: "ubuf_end"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0xac8fb3b4
+  name: "uc"
+  type_id: 0x4f5972f9
+  offset: 4800
+}
+member {
+  id: 0xacad41e6
+  name: "uc"
+  type_id: 0x6dad7303
+}
+member {
+  id: 0x70a44081
+  name: "uc_promisc"
+  type_id: 0x6d7f5ff6
+  offset: 5696
+}
+member {
+  id: 0xd2f70d3b
+  name: "ucd_prdt_dma_addr"
+  type_id: 0xe02e14d6
+  offset: 448
+}
+member {
+  id: 0xf1576763
+  name: "ucd_prdt_ptr"
+  type_id: 0x122b36d6
+  offset: 192
+}
+member {
+  id: 0xb72416a0
+  name: "ucd_req_dma_addr"
+  type_id: 0xe02e14d6
+  offset: 320
+}
+member {
+  id: 0x5006fd4c
+  name: "ucd_req_ptr"
+  type_id: 0x0dda9243
+  offset: 64
+}
+member {
+  id: 0x3a05bdd8
+  name: "ucd_rsp_dma_addr"
+  type_id: 0xe02e14d6
+  offset: 384
+}
+member {
+  id: 0x2afea591
+  name: "ucd_rsp_ptr"
+  type_id: 0x0666148e
+  offset: 128
+}
+member {
+  id: 0xd60d1ea3
+  name: "ucdl_base_addr"
+  type_id: 0x27421971
+  offset: 64
+}
+member {
+  id: 0x085e36e6
+  name: "ucdl_dma_addr"
+  type_id: 0xe02e14d6
+  offset: 256
+}
+member {
+  id: 0xca0a1149
+  name: "uci"
+  type_id: 0xd6ca4b38
+  offset: 8768
+}
+member {
+  id: 0xee527439
+  name: "uclamp"
+  type_id: 0x790929c4
+  offset: 3328
+}
+member {
+  id: 0xee527610
+  name: "uclamp"
+  type_id: 0x790929c4
+  offset: 6848
+}
+member {
+  id: 0xee54f547
+  name: "uclamp"
+  type_id: 0x7f8808fc
+  offset: 1024
+}
+member {
+  id: 0x1bb50d20
+  name: "uclamp_enabled"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x185fb497
+  name: "uclamp_flags"
+  type_id: 0x4585663f
+  offset: 3712
+}
+member {
+  id: 0x05fd18ff
+  name: "uclamp_pct"
+  type_id: 0x7dc8196c
+  offset: 3200
+}
+member {
+  id: 0x350daa6d
+  name: "uclamp_req"
+  type_id: 0x790929c4
+  offset: 6784
+}
+member {
+  id: 0x350dae81
+  name: "uclamp_req"
+  type_id: 0x790929c4
+  offset: 3264
+}
+member {
+  id: 0x26c7d8da
+  name: "ucount"
+  type_id: 0x5be0e9e0
+  offset: 256
+}
+member {
+  id: 0x63afeb77
+  name: "ucount_max"
+  type_id: 0x48e9a3c1
+  offset: 4224
+}
+member {
+  id: 0x9f301282
+  name: "ucounts"
+  type_id: 0x0d2bbbbb
+  offset: 64
+}
+member {
+  id: 0x9f30145e
+  name: "ucounts"
+  type_id: 0x0d2bbbbb
+  offset: 704
+}
+member {
+  id: 0x9f3016c8
+  name: "ucounts"
+  type_id: 0x0d2bbbbb
+  offset: 256
+}
+member {
+  id: 0x9f3018bf
+  name: "ucounts"
+  type_id: 0x0d2bbbbb
+  offset: 1152
+}
+member {
+  id: 0x9f301953
+  name: "ucounts"
+  type_id: 0x0d2bbbbb
+  offset: 3200
+}
+member {
+  id: 0x9f301b93
+  name: "ucounts"
+  type_id: 0x0d2bbbbb
+  offset: 9856
+}
+member {
+  id: 0x9f301d2b
+  name: "ucounts"
+  type_id: 0x0d2bbbbb
+  offset: 4160
+}
+member {
+  id: 0x9f301d7b
+  name: "ucounts"
+  type_id: 0x0d2bbbbb
+  offset: 512
+}
+member {
+  id: 0xe85f926a
+  name: "ucsi"
+  type_id: 0x2fb647c0
+  offset: 64
+}
+member {
+  id: 0x55056191
+  name: "udc"
+  type_id: 0x0258f96e
+  offset: 7872
+}
+member {
+  id: 0x55056f96
+  name: "udc"
+  type_id: 0x0258f96e
+  offset: 192
+}
+member {
+  id: 0x5531ad4b
+  name: "udc"
+  type_id: 0x36937f0f
+  offset: 384
+}
+member {
+  id: 0xedaf20a8
+  name: "udc_async_callbacks"
+  type_id: 0x0c8d012c
+  offset: 768
+}
+member {
+  id: 0x9c5173fa
+  name: "udc_name"
+  type_id: 0x0483e6f8
+  offset: 1984
+}
+member {
+  id: 0x74c677a1
+  name: "udc_set_speed"
+  type_id: 0x0cb21bf1
+  offset: 640
+}
+member {
+  id: 0x87c54f5a
+  name: "udc_set_ssp_rate"
+  type_id: 0x0c0fd801
+  offset: 704
+}
+member {
+  id: 0x93e0dfac
+  name: "udc_start"
+  type_id: 0x2f9f3d56
+  offset: 512
+}
+member {
+  id: 0x3d398bbb
+  name: "udc_stop"
+  type_id: 0x2fa652dc
+  offset: 576
+}
+member {
+  id: 0xbb0eb3a5
+  name: "udev"
+  type_id: 0x0d7ce7cc
+}
+member {
+  id: 0xbb0eb744
+  name: "udev"
+  type_id: 0x0d7ce7cc
+  offset: 64
+}
+member {
+  id: 0x094dff52
+  name: "udf"
+  type_id: 0x08d11dc7
+}
+member {
+  id: 0xae6205c1
+  name: "udp"
+  type_id: 0xad9289eb
+  offset: 512
+}
+member {
+  id: 0xaead79f4
+  name: "udp"
+  type_id: 0x62e5a488
+}
+member {
+  id: 0xaec5d3b3
+  name: "udp"
+  type_id: 0x0a4fe389
+}
+member {
+  id: 0x95d4dd14
+  name: "udp6_zero_rx_checksums"
+  type_id: 0x4585663f
+  offset: 290
+  bitsize: 1
+}
+member {
+  id: 0x0ef2aef1
+  name: "udp6_zero_tx_checksums"
+  type_id: 0x4585663f
+  offset: 289
+  bitsize: 1
+}
+member {
+  id: 0xcbcc7937
+  name: "udp_ip4_spec"
+  type_id: 0xdc098d1a
+}
+member {
+  id: 0x1504e745
+  name: "udp_ip6_spec"
+  type_id: 0xe7754efc
+}
+member {
+  id: 0xb449abcc
+  name: "udp_statistics"
+  type_id: 0x2746100c
+  offset: 256
+}
+member {
+  id: 0xf7f9f4c6
+  name: "udp_stats_in6"
+  type_id: 0x2746100c
+  offset: 320
+}
+member {
+  id: 0x5b6e2278
+  name: "udp_table"
+  type_id: 0x0ac23bc5
+}
+member {
+  id: 0x9ad37bf4
+  name: "udp_tunnel_nic"
+  type_id: 0x2f8466bd
+  offset: 19520
+}
+member {
+  id: 0x55ed6856
+  name: "udp_tunnel_nic_info"
+  type_id: 0x30a72d5c
+  offset: 19456
+}
+member {
+  id: 0x55f2454b
+  name: "udp_tunnel_nic_info"
+  type_id: 0x2f8466bd
+}
+member {
+  id: 0x78a32375
+  name: "udplite_statistics"
+  type_id: 0x2746100c
+  offset: 448
+}
+member {
+  id: 0xfe36567e
+  name: "udplite_stats_in6"
+  type_id: 0x2746100c
+  offset: 512
+}
+member {
+  id: 0x7cc85587
+  name: "udpv6_encap_enable"
+  type_id: 0x0eb62dc3
+  offset: 960
+}
+member {
+  id: 0xff61f163
+  name: "ue_count"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x934a59c9
+  name: "uevent"
+  type_id: 0xd7ef6803
+  offset: 128
+}
+member {
+  id: 0x93b05631
+  name: "uevent"
+  type_id: 0x2de090d3
+  offset: 128
+}
+member {
+  id: 0x93b05884
+  name: "uevent"
+  type_id: 0x2de090d3
+  offset: 448
+}
+member {
+  id: 0x7a23f532
+  name: "uevent_ops"
+  type_id: 0x3fdb8af3
+  offset: 960
+}
+member {
+  id: 0x069b6afd
+  name: "uevent_sock"
+  type_id: 0x3462d6fc
+  offset: 2304
+}
+member {
+  id: 0x9b449b99
+  name: "uevent_suppress"
+  type_id: 0x4585663f
+  offset: 484
+  bitsize: 1
+}
+member {
+  id: 0x7f8f8e21
+  name: "uevent_work"
+  type_id: 0x1f3c8679
+  offset: 9600
+}
+member {
+  id: 0xee327d3e
+  name: "ufds"
+  type_id: 0x3ce1bbd3
+}
+member {
+  id: 0xdbc79e8b
+  name: "uframe_periodic_max"
+  type_id: 0x4585663f
+  offset: 3360
+}
+member {
+  id: 0xc34cf945
+  name: "ufs_device_wlun"
+  type_id: 0x257d12af
+  offset: 576
+}
+member {
+  id: 0xcd167c27
+  name: "ufs_stats"
+  type_id: 0x71de5105
+  offset: 5696
+}
+member {
+  id: 0x1bc99ab8
+  name: "ufs_version"
+  type_id: 0xc9082b19
+  offset: 1248
+}
+member {
+  id: 0x6c1d62c8
+  name: "ufshcd_state"
+  type_id: 0x04e77ee6
+  offset: 3904
+}
+member {
+  id: 0xfbeda989
+  name: "uhq"
+  type_id: 0x2d3b4fc6
+  offset: 41728
+}
+member {
+  id: 0xe73c3df2
+  name: "uhs_max_dtr"
+  type_id: 0x4585663f
+  offset: 32
+}
+member {
+  id: 0xdf215517
+  name: "uic_async_done"
+  type_id: 0x0562c566
+  offset: 3840
+}
+member {
+  id: 0x47ed9812
+  name: "uic_cmd_mutex"
+  type_id: 0xa7c362b0
+  offset: 3456
+}
+member {
+  id: 0x8908e7f8
+  name: "uic_error"
+  type_id: 0xc9082b19
+  offset: 5600
+}
+member {
+  id: 0xd5c5cb2a
+  name: "uic_link_state"
+  type_id: 0x65043940
+  offset: 672
+}
+member {
+  id: 0x15366051
+  name: "uid"
+  type_id: 0xe90b32b7
+  offset: 704
+}
+member {
+  id: 0x1536626c
+  name: "uid"
+  type_id: 0xe90b32b7
+}
+member {
+  id: 0x153663fe
+  name: "uid"
+  type_id: 0xe90b32b7
+  offset: 384
+}
+member {
+  id: 0x15366406
+  name: "uid"
+  type_id: 0xe90b32b7
+  offset: 5984
+}
+member {
+  id: 0x15366415
+  name: "uid"
+  type_id: 0xe90b32b7
+  offset: 640
+}
+member {
+  id: 0x15366573
+  name: "uid"
+  type_id: 0xe90b32b7
+  offset: 1024
+}
+member {
+  id: 0x15366aa5
+  name: "uid"
+  type_id: 0xe90b32b7
+  offset: 192
+}
+member {
+  id: 0x15366d0b
+  name: "uid"
+  type_id: 0xe90b32b7
+  offset: 800
+}
+member {
+  id: 0x15366f57
+  name: "uid"
+  type_id: 0xe90b32b7
+  offset: 32
+}
+member {
+  id: 0x15366f8c
+  name: "uid"
+  type_id: 0xe90b32b7
+  offset: 160
+}
+member {
+  id: 0x15653884
+  name: "uid_map"
+  type_id: 0xe742397c
+}
+member {
+  id: 0x9fd1ff31
+  name: "uid_range"
+  type_id: 0xa29493fc
+  offset: 960
+}
+member {
+  id: 0xe2f438ce
+  name: "uidhash_node"
+  type_id: 0x49a73111
+  offset: 512
+}
+member {
+  id: 0xe5f707ce
+  name: "uie_rtctimer"
+  type_id: 0x3050a963
+  offset: 10112
+}
+member {
+  id: 0x1353709d
+  name: "uint_32"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xfdbf569e
+  name: "uint_64"
+  type_id: 0x92233392
+}
+member {
+  id: 0x97334934
+  name: "uio_dev"
+  type_id: 0x1f2b89de
+}
+member {
+  id: 0xf4ae3df0
+  name: "ul"
+  type_id: 0x33756485
+}
+member {
+  id: 0xc1b9fe80
+  name: "uli"
+  type_id: 0xd0faff22
+  offset: 672
+}
+member {
+  id: 0xc1b9feb6
+  name: "uli"
+  type_id: 0xd0faff22
+  offset: 448
+}
+member {
+  id: 0xb4365bb4
+  name: "ulog"
+  type_id: 0x01b47a17
+}
+member {
+  id: 0x7defc977
+  name: "umask"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0x1220a6f4
+  name: "umax_value"
+  type_id: 0x92233392
+  offset: 576
+}
+member {
+  id: 0x95886403
+  name: "umem"
+  type_id: 0x3ad18ab6
+  offset: 768
+}
+member {
+  id: 0x95886ba8
+  name: "umem"
+  type_id: 0x3ad18ab6
+  offset: 142144
+}
+member {
+  id: 0x95963072
+  name: "umem"
+  type_id: 0x248a9244
+  offset: 320
+}
+member {
+  id: 0x213c3182
+  name: "umin_value"
+  type_id: 0x92233392
+  offset: 512
+}
+member {
+  id: 0x1d0d795b
+  name: "umount_begin"
+  type_id: 0x0cd8cb41
+  offset: 960
+}
+member {
+  id: 0x5b273374
+  name: "unacked_exist"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0x3f80d66d
+  name: "unacked_frames"
+  type_id: 0xe8034002
+  offset: 1632
+}
+member {
+  id: 0x991d5d91
+  name: "unaligned"
+  type_id: 0x6d7f5ff6
+  offset: 1720
+}
+member {
+  id: 0xe9842313
+  name: "unallocated_10_1"
+  type_id: 0x295c7202
+  offset: 81
+  bitsize: 1
+}
+member {
+  id: 0x3c678fa3
+  name: "unallocated_5_3"
+  type_id: 0x295c7202
+  offset: 35
+  bitsize: 1
+}
+member {
+  id: 0x236d0025
+  name: "unallocated_5_7"
+  type_id: 0x295c7202
+  offset: 39
+  bitsize: 1
+}
+member {
+  id: 0xa88dde5f
+  name: "unallocated_8_0"
+  type_id: 0x295c7202
+  offset: 64
+  bitsize: 1
+}
+member {
+  id: 0xeccd0904
+  name: "unallocated_8_1"
+  type_id: 0x295c7202
+  offset: 65
+  bitsize: 1
+}
+member {
+  id: 0xdf2cd33c
+  name: "unallocated_9_1"
+  type_id: 0x295c7202
+  offset: 73
+  bitsize: 1
+}
+member {
+  id: 0xa8fd1366
+  name: "unbalanced_since"
+  type_id: 0x33756485
+  offset: 1344
+}
+member {
+  id: 0x0d4684a8
+  name: "unbalanced_timer"
+  type_id: 0xc9082b19
+  offset: 1440
+}
+member {
+  id: 0x59946581
+  name: "unbind"
+  type_id: 0x0e90717a
+  offset: 64
+}
+member {
+  id: 0x59946652
+  name: "unbind"
+  type_id: 0x0e93a255
+  offset: 64
+}
+member {
+  id: 0x59948ed9
+  name: "unbind"
+  type_id: 0x0e79b142
+  offset: 640
+}
+member {
+  id: 0x5994a009
+  name: "unbind"
+  type_id: 0x0e59d199
+  offset: 192
+}
+member {
+  id: 0x5994b26d
+  name: "unbind"
+  type_id: 0x0e4bb5c4
+  offset: 192
+}
+member {
+  id: 0x5994ea90
+  name: "unbind"
+  type_id: 0x0e1b2a58
+  offset: 256
+}
+member {
+  id: 0x59960449
+  name: "unbind"
+  type_id: 0x0cfd9180
+  offset: 192
+}
+member {
+  id: 0x599619a6
+  name: "unbind"
+  type_id: 0x0ce07e73
+  offset: 192
+}
+member {
+  id: 0x5997831e
+  name: "unbind"
+  type_id: 0x0d7bcdce
+  offset: 128
+}
+member {
+  id: 0x59b514d0
+  name: "unbind"
+  type_id: 0x2fe2067c
+  offset: 320
+}
+member {
+  id: 0x59b56f6e
+  name: "unbind"
+  type_id: 0x2f9a9ee6
+  offset: 64
+}
+member {
+  id: 0xbde8755b
+  name: "unbind_from_tz"
+  type_id: 0x0cd878db
+  offset: 256
+}
+member {
+  id: 0x7eac2f58
+  name: "unbind_tcf"
+  type_id: 0x0c6d8d57
+  offset: 704
+}
+member {
+  id: 0x14cd081f
+  name: "unblank"
+  type_id: 0x0eb62dc3
+  offset: 320
+}
+member {
+  id: 0x5c7ec059
+  name: "unbound_attrs"
+  type_id: 0x18ea2d6b
+  offset: 1344
+}
+member {
+  id: 0x153177cc
+  name: "unbound_release_work"
+  type_id: 0x1f3c8679
+  offset: 1216
+}
+member {
+  id: 0xb52ca4cb
+  name: "unc_bytes"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xca362358
+  name: "unc_packets"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x8aca54d8
+  name: "uncertainty_margin"
+  type_id: 0xc9082b19
+  offset: 288
+}
+member {
+  id: 0x1afb5041
+  name: "uncompress"
+  type_id: 0x2d50c295
+  offset: 256
+}
+member {
+  id: 0x4ecfbc08
+  name: "uncompressed_header_size"
+  type_id: 0xe8034002
+  offset: 944
+}
+member {
+  id: 0x45ce329c
+  name: "uncorrectable_blocks"
+  type_id: 0xec739179
+  offset: 576
+}
+member {
+  id: 0x46c8b3a0
+  name: "under_oom"
+  type_id: 0x6720d32f
+  offset: 9888
+}
+member {
+  id: 0x98078cc7
+  name: "under_voltage_detection"
+  type_id: 0x4585663f
+  offset: 1737
+  bitsize: 1
+}
+member {
+  id: 0xf15afa6b
+  name: "under_voltage_limits"
+  type_id: 0x9ceff924
+  offset: 1280
+}
+member {
+  id: 0xd3f0097f
+  name: "underflow"
+  type_id: 0x4585663f
+  offset: 2240
+}
+member {
+  id: 0x04b7308b
+  name: "undersize_pkts"
+  type_id: 0x92233392
+}
+member {
+  id: 0xddb58e17
+  name: "undo_cwnd"
+  type_id: 0x1a3a7059
+  offset: 512
+}
+member {
+  id: 0x0645ccd5
+  name: "unfreeze_fs"
+  type_id: 0x2f9ee7ee
+  offset: 768
+}
+member {
+  id: 0x8d637309
+  name: "ungate_work"
+  type_id: 0x1f3c8679
+  offset: 1088
+}
+member {
+  id: 0x047679da
+  name: "unhash"
+  type_id: 0x0f626ee5
+  offset: 1408
+}
+member {
+  id: 0xb7a98fcb
+  name: "uniq"
+  type_id: 0x3db8d8c8
+  offset: 61184
+}
+member {
+  id: 0xb7aa2038
+  name: "uniq"
+  type_id: 0x3e10b518
+  offset: 128
+}
+member {
+  id: 0x7ebb3d29
+  name: "unique"
+  type_id: 0x0483e6f8
+  offset: 128
+}
+member {
+  id: 0x7ebb3e4d
+  name: "unique"
+  type_id: 0x0483e6f8
+  offset: 896
+}
+member {
+  id: 0xc8b69710
+  name: "unique_id"
+  type_id: 0x4585663f
+  offset: 3840
+}
+member {
+  id: 0x69d46c12
+  name: "unique_len"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0xff13a397
+  name: "unit"
+  type_id: 0x4585663f
+  offset: 736
+}
+member {
+  id: 0xff7f7afa
+  name: "unit"
+  type_id: 0x295c7202
+  offset: 16
+}
+member {
+  id: 0xf65bd591
+  name: "unit_attention_data"
+  type_id: 0xc9082b19
+  offset: 288
+}
+member {
+  id: 0xd3e833f4
+  name: "unit_exponent"
+  type_id: 0x0faae5b1
+  offset: 704
+}
+member {
+  id: 0xc16855f7
+  name: "universal_planes"
+  type_id: 0x6d7f5ff6
+  offset: 16
+}
+member {
+  id: 0x47877fa9
+  name: "unix_inflight"
+  type_id: 0x33756485
+  offset: 384
+}
+member {
+  id: 0x71771f41
+  name: "unknown"
+  type_id: 0xd3c80119
+  offset: 192
+}
+member {
+  id: 0xe4d4d2c4
+  name: "unlink"
+  type_id: 0x2c5a5d26
+  offset: 448
+}
+member {
+  id: 0x5f03fe33
+  name: "unlink_cycle"
+  type_id: 0x4585663f
+  offset: 1024
+}
+member {
+  id: 0xa9771250
+  name: "unlink_flags"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x7cdb26d6
+  name: "unlink_mask"
+  type_id: 0x33756485
+  offset: 44416
+}
+member {
+  id: 0x90e114ab
+  name: "unlink_node"
+  type_id: 0xd3c80119
+  offset: 512
+}
+member {
+  id: 0x14bf9a5c
+  name: "unlink_reason"
+  type_id: 0x295c7202
+  offset: 1072
+}
+member {
+  id: 0x94611ed1
+  name: "unlinked"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0xfe6b3cc3
+  name: "unload"
+  type_id: 0x0d066629
+  offset: 256
+}
+member {
+  id: 0x8153d386
+  name: "unlock"
+  type_id: 0x034519e3
+  offset: 448
+}
+member {
+  id: 0x8153dc5f
+  name: "unlock"
+  type_id: 0x034519e3
+  offset: 768
+}
+member {
+  id: 0x815e460d
+  name: "unlock"
+  type_id: 0x0edf2c30
+  offset: 192
+}
+member {
+  id: 0x815e88bb
+  name: "unlock"
+  type_id: 0x0e1db267
+  offset: 64
+}
+member {
+  id: 0x817f1006
+  name: "unlock"
+  type_id: 0x2f892792
+  offset: 192
+}
+member {
+  id: 0x054e3266
+  name: "unlock_bus"
+  type_id: 0x0cba3d38
+  offset: 128
+}
+member {
+  id: 0xfdaeb2b1
+  name: "unlock_native_capacity"
+  type_id: 0x0ca53ed1
+  offset: 512
+}
+member {
+  id: 0xfdaefa4e
+  name: "unlock_native_capacity"
+  type_id: 0x0ce1fce9
+  offset: 1728
+}
+member {
+  id: 0x3639daf0
+  name: "unlocked_driver_cb"
+  type_id: 0x6d7f5ff6
+  offset: 72
+}
+member {
+  id: 0xd4534a22
+  name: "unlocked_ioctl"
+  type_id: 0x229023df
+  offset: 256
+}
+member {
+  id: 0xd4534cf0
+  name: "unlocked_ioctl"
+  type_id: 0x229023df
+  offset: 640
+}
+member {
+  id: 0xd45e7605
+  name: "unlocked_ioctl"
+  type_id: 0x2fa46622
+  offset: 192
+}
+member {
+  id: 0xfed93d41
+  name: "unmap"
+  type_id: 0x2ed37308
+  offset: 128
+}
+member {
+  id: 0xfeda6a8a
+  name: "unmap"
+  type_id: 0x2d8abd6e
+  offset: 320
+}
+member {
+  id: 0xfeec1f7d
+  name: "unmap"
+  type_id: 0x1bf395c9
+  offset: 512
+}
+member {
+  id: 0xfef896be
+  name: "unmap"
+  type_id: 0x0f798713
+  offset: 192
+}
+member {
+  id: 0xa9e2d5ae
+  name: "unmap_addr"
+  type_id: 0x0fe76e66
+  offset: 256
+}
+member {
+  id: 0x98e543dc
+  name: "unmap_dma_buf"
+  type_id: 0x0f6fc2f1
+  offset: 384
+}
+member {
+  id: 0x14403a34
+  name: "unmap_dmabuf"
+  type_id: 0x0f3dfb90
+  offset: 640
+}
+member {
+  id: 0xa2393bc6
+  name: "unmap_limit_for_ws"
+  type_id: 0x4585663f
+  offset: 2829
+  bitsize: 1
+}
+member {
+  id: 0x5c4b363a
+  name: "unmap_page"
+  type_id: 0x0e7c01a4
+  offset: 640
+}
+member {
+  id: 0xd12939ed
+  name: "unmap_pages"
+  type_id: 0x2ed38d27
+  offset: 192
+}
+member {
+  id: 0xd12a6978
+  name: "unmap_pages"
+  type_id: 0x2d8a4341
+  offset: 384
+}
+member {
+  id: 0x128b36d4
+  name: "unmap_resource"
+  type_id: 0x0e7c01a4
+  offset: 896
+}
+member {
+  id: 0x8cf587ce
+  name: "unmap_sg"
+  type_id: 0x0e84d111
+  offset: 768
+}
+member {
+  id: 0x8056e065
+  name: "unmap_urb_for_dma"
+  type_id: 0x0ce09fd4
+  offset: 960
+}
+member {
+  id: 0x360220cb
+  name: "unmask_base"
+  type_id: 0x4585663f
+  offset: 288
+}
+member {
+  id: 0x3602222f
+  name: "unmask_base"
+  type_id: 0x4585663f
+  offset: 2848
+}
+member {
+  id: 0x343d462b
+  name: "unpin"
+  type_id: 0x0d3022ff
+  offset: 384
+}
+member {
+  id: 0x343f148e
+  name: "unpin"
+  type_id: 0x0f63be8f
+  offset: 256
+}
+member {
+  id: 0xdc6f236d
+  name: "unpin_shared_mem"
+  type_id: 0x0f2546f5
+  offset: 1664
+}
+member {
+  id: 0x7a604c44
+  name: "unpinned_fscache_wb"
+  type_id: 0x4585663f
+  offset: 294
+  bitsize: 1
+}
+member {
+  id: 0x9d373835
+  name: "unplugged"
+  type_id: 0x6d7f5ff6
+  offset: 800
+}
+member {
+  id: 0xc6d52d68
+  name: "unprepare"
+  type_id: 0x2cf616a6
+  offset: 192
+}
+member {
+  id: 0xc6d6bb37
+  name: "unprepare"
+  type_id: 0x2f6c6167
+  offset: 64
+}
+member {
+  id: 0xc6f52ac7
+  name: "unprepare"
+  type_id: 0x0cfd9180
+  offset: 64
+}
+member {
+  id: 0xc6f5af6c
+  name: "unprepare"
+  type_id: 0x0c7b1cf1
+  offset: 320
+}
+member {
+  id: 0xc6f7cf31
+  name: "unprepare"
+  type_id: 0x0e1867ef
+  offset: 64
+}
+member {
+  id: 0x62f6d1c9
+  name: "unprepare_message"
+  type_id: 0x2ddc072f
+  offset: 11264
+}
+member {
+  id: 0xa0e3f293
+  name: "unprepare_recovery"
+  type_id: 0x0cffb85e
+  offset: 448
+}
+member {
+  id: 0x13f81a2b
+  name: "unprepare_transfer_hardware"
+  type_id: 0x2dfdd846
+  offset: 11136
+}
+member {
+  id: 0xcc016e3c
+  name: "unprepare_unused"
+  type_id: 0x0e1867ef
+  offset: 192
+}
+member {
+  id: 0x355770bf
+  name: "unprot_beacon_reported"
+  type_id: 0x33756485
+  offset: 2816
+}
+member {
+  id: 0x8ea4f872
+  name: "unreg_list"
+  type_id: 0xd3c80119
+  offset: 768
+}
+member {
+  id: 0xf7c498eb
+  name: "unregfunc"
+  type_id: 0x0eb62dc3
+  offset: 448
+}
+member {
+  id: 0x023fff15
+  name: "unregister"
+  type_id: 0x0e627592
+  offset: 64
+}
+member {
+  id: 0xdb3467f3
+  name: "unregister_lock"
+  type_id: 0xa7c362b0
+  offset: 16640
+}
+member {
+  id: 0x7c187e24
+  name: "unregistered"
+  type_id: 0x0eaa77b7
+  offset: 64
+}
+member {
+  id: 0x7c7ba3a5
+  name: "unregistered"
+  type_id: 0x6d7f5ff6
+  offset: 8840
+}
+member {
+  id: 0x39772a8e
+  name: "unregistering"
+  type_id: 0x4585663f
+  offset: 322
+  bitsize: 1
+}
+member {
+  id: 0x9c17bc94
+  name: "unregistering"
+  type_id: 0x0562c566
+  offset: 192
+}
+member {
+  id: 0x0049d6a0
+  name: "unreliable"
+  type_id: 0x6d7f5ff6
+  offset: 16
+}
+member {
+  id: 0xde0379d5
+  name: "unres_discards"
+  type_id: 0x33756485
+  offset: 640
+}
+member {
+  id: 0xa630976d
+  name: "unresolved_rules"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0x7744e8f8
+  name: "unsafe"
+  type_id: 0x6720d32f
+  offset: 640
+}
+member {
+  id: 0x24d5cc41
+  name: "unsafe_warn"
+  type_id: 0x4585663f
+  offset: 9985
+  bitsize: 1
+}
+member {
+  id: 0xa8628923
+  name: "unset_port"
+  type_id: 0x2e9bbd8d
+  offset: 64
+}
+member {
+  id: 0xb5487b20
+  name: "unsolicit_count"
+  type_id: 0x384f7d7c
+  offset: 1072
+}
+member {
+  id: 0x3d971f1e
+  name: "unsubscribe_event"
+  type_id: 0x2ddee198
+  offset: 768
+}
+member {
+  id: 0x80cd10c5
+  name: "unthrottle"
+  type_id: 0x0c59c5c5
+  offset: 1024
+}
+member {
+  id: 0x80cd11b3
+  name: "unthrottle"
+  type_id: 0x0c59c5c5
+  offset: 3584
+}
+member {
+  id: 0x80cff2d9
+  name: "unthrottle"
+  type_id: 0x0ebd5484
+  offset: 384
+}
+member {
+  id: 0x80cff9ed
+  name: "unthrottle"
+  type_id: 0x0ebd5484
+  offset: 896
+}
+member {
+  id: 0x4e65e89e
+  name: "untrusted"
+  type_id: 0x4585663f
+  offset: 22115
+  bitsize: 1
+}
+member {
+  id: 0x3c62344c
+  name: "unused"
+  type_id: 0xc93e017b
+  offset: 8144
+}
+member {
+  id: 0x3c63eaff
+  name: "unused"
+  type_id: 0xc8e4d7d1
+  offset: 256
+}
+member {
+  id: 0x3c63eeb5
+  name: "unused"
+  type_id: 0xc8e4d7d1
+  offset: 64
+}
+member {
+  id: 0x3c987349
+  name: "unused"
+  type_id: 0x33756485
+  offset: 768
+}
+member {
+  id: 0xd4ec9f32
+  name: "unused"
+  type_id: 0x295c7202
+  offset: 1100
+  bitsize: 4
+}
+member {
+  id: 0x15fad9cf
+  name: "unused2"
+  type_id: 0xc9082b19
+  offset: 2272
+}
+member {
+  id: 0xcd0e1ab3
+  name: "unused_hctx_list"
+  type_id: 0xd3c80119
+  offset: 7104
+}
+member {
+  id: 0xed3c173f
+  name: "unused_hctx_lock"
+  type_id: 0xf313e71a
+  offset: 7232
+}
+member {
+  id: 0x84d0956a
+  name: "unused_native_cs"
+  type_id: 0x29b77961
+  offset: 11784
+}
+member {
+  id: 0xa37704a2
+  name: "unx"
+  type_id: 0xaf070227
+  offset: 4352
+}
+member {
+  id: 0xc7b706ee
+  name: "up"
+  type_id: 0x33756485
+  offset: 2304
+}
+member {
+  id: 0x70716d55
+  name: "up_threshold"
+  type_id: 0x4585663f
+  offset: 1568
+}
+member {
+  id: 0x1dc21b9c
+  name: "upcoming_state"
+  type_id: 0x63b95725
+  offset: 34080
+}
+member {
+  id: 0xd6886f0b
+  name: "update"
+  type_id: 0x2d7c4e7c
+  offset: 64
+}
+member {
+  id: 0xd688f754
+  name: "update"
+  type_id: 0x2de7875a
+  offset: 448
+}
+member {
+  id: 0xd68bc61c
+  name: "update"
+  type_id: 0x2ed55948
+  offset: 64
+}
+member {
+  id: 0xd694f198
+  name: "update"
+  type_id: 0x31e0e6c6
+  offset: 5760
+}
+member {
+  id: 0xd6a89687
+  name: "update"
+  type_id: 0x0d88e184
+  offset: 128
+}
+member {
+  id: 0xd6ab4b69
+  name: "update"
+  type_id: 0x0e5c6698
+  offset: 256
+}
+member {
+  id: 0xd6ba2184
+  name: "update"
+  type_id: 0x1f3c8679
+  offset: 896
+}
+member {
+  id: 0xb865fc86
+  name: "update_altmodes"
+  type_id: 0x37dd86d6
+  offset: 192
+}
+member {
+  id: 0x8e2029f5
+  name: "update_bits"
+  type_id: 0x2cbe4f96
+}
+member {
+  id: 0x56b05005
+  name: "update_curr"
+  type_id: 0x0c560434
+  offset: 1600
+}
+member {
+  id: 0xbd69a3a6
+  name: "update_device"
+  type_id: 0x2faaffbd
+  offset: 2496
+}
+member {
+  id: 0x98f177e2
+  name: "update_done"
+  type_id: 0x3fcbf304
+  offset: 2944
+}
+member {
+  id: 0xce936c6c
+  name: "update_footers"
+  type_id: 0x2b820c5e
+}
+member {
+  id: 0x875d4218
+  name: "update_hcr_el2"
+  type_id: 0x0db20eef
+  offset: 704
+}
+member {
+  id: 0xf203bc06
+  name: "update_hfgwtr_el2"
+  type_id: 0x0db20eef
+  offset: 768
+}
+member {
+  id: 0x313715cf
+  name: "update_hub_device"
+  type_id: 0x2fa88d73
+  offset: 448
+}
+member {
+  id: 0x31371bcd
+  name: "update_hub_device"
+  type_id: 0x2fa88d73
+  offset: 2368
+}
+member {
+  id: 0xce498174
+  name: "update_limits"
+  type_id: 0x0aee7ba0
+  offset: 896
+}
+member {
+  id: 0x556f10f2
+  name: "update_lock"
+  type_id: 0xa7c362b0
+  offset: 256
+}
+member {
+  id: 0x556f1aff
+  name: "update_lock"
+  type_id: 0xa7c362b0
+  offset: 896
+}
+member {
+  id: 0x5ec30cf4
+  name: "update_mutex"
+  type_id: 0xa7c362b0
+  offset: 64
+}
+member {
+  id: 0xfe983ebb
+  name: "update_pages_work"
+  type_id: 0x1f3c8679
+  offset: 2560
+}
+member {
+  id: 0x40ac767e
+  name: "update_plane"
+  type_id: 0x2c70ed88
+}
+member {
+  id: 0x9d170a9b
+  name: "update_pmtu"
+  type_id: 0x0f8e6cef
+  offset: 640
+}
+member {
+  id: 0xc2fbf996
+  name: "update_prog"
+  type_id: 0x2c770a76
+  offset: 192
+}
+member {
+  id: 0x63106a08
+  name: "update_scan_mode"
+  type_id: 0x2c461b90
+  offset: 832
+}
+member {
+  id: 0x51701f62
+  name: "update_sink_caps"
+  type_id: 0x6d7f5ff6
+  offset: 9920
+}
+member {
+  id: 0x02e857e6
+  name: "update_state"
+  type_id: 0x2f6cfd5c
+  offset: 64
+}
+member {
+  id: 0x9538131b
+  name: "update_status"
+  type_id: 0x2ef9d78d
+  offset: 64
+}
+member {
+  id: 0x43071b19
+  name: "update_thresh"
+  type_id: 0x2d8f2b98
+  offset: 320
+}
+member {
+  id: 0xc78df42c
+  name: "update_time"
+  type_id: 0x2c4add43
+  offset: 1088
+}
+member {
+  id: 0xb04ac5ce
+  name: "updated"
+  type_id: 0xb3e7bac9
+  offset: 24
+}
+member {
+  id: 0xb0945aa5
+  name: "updated"
+  type_id: 0x6d7f5ff6
+  offset: 7744
+}
+member {
+  id: 0xb0ca51da
+  name: "updated"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0x74c86158
+  name: "updated_children"
+  type_id: 0x18a16691
+  offset: 384
+}
+member {
+  id: 0x28b8dba0
+  name: "updated_next"
+  type_id: 0x18a16691
+  offset: 448
+}
+member {
+  id: 0xb16eef89
+  name: "updating_count"
+  type_id: 0x4585663f
+  offset: 352
+}
+member {
+  id: 0x651c6c2a
+  name: "uperiod"
+  type_id: 0x914dbfdc
+  offset: 832
+}
+member {
+  id: 0x1d077cb4
+  name: "upiu_req"
+  type_id: 0x6dad7303
+  offset: 32
+}
+member {
+  id: 0x1d54a5e3
+  name: "upiu_req"
+  type_id: 0x3e70dd54
+  offset: 128
+}
+member {
+  id: 0x83800020
+  name: "upiu_res"
+  type_id: 0x6dad7303
+  offset: 32
+}
+member {
+  id: 0xb958498a
+  name: "upiu_rsp"
+  type_id: 0x18797cfe
+  offset: 384
+}
+member {
+  id: 0xe3b51280
+  name: "upkeep_dw"
+  type_id: 0xf1159c31
+  offset: 128
+}
+member {
+  id: 0x1eb25728
+  name: "upload"
+  type_id: 0x2cca5ab2
+}
+member {
+  id: 0x0a453636
+  name: "upper"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x0a5ffb27
+  name: "upper"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0x0a6a1978
+  name: "upper"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x0abf47d0
+  name: "upper"
+  type_id: 0x33756485
+  offset: 384
+}
+member {
+  id: 0x0afd34c9
+  name: "upper"
+  type_id: 0x7100288f
+  offset: 320
+}
+member {
+  id: 0x4b1b1b95
+  name: "upper_bound"
+  type_id: 0x74d29cf1
+}
+member {
+  id: 0x39469b41
+  name: "upper_level"
+  type_id: 0x5d8155a5
+  offset: 4656
+}
+member {
+  id: 0x02cbf643
+  name: "upper_list"
+  type_id: 0x23947191
+  offset: 16704
+}
+member {
+  id: 0xee4dee55
+  name: "upper_margin"
+  type_id: 0xc9082b19
+  offset: 256
+}
+member {
+  id: 0xee62c2cc
+  name: "upper_margin"
+  type_id: 0xe62ebf07
+  offset: 896
+}
+member {
+  id: 0xb97a7d68
+  name: "uprobe"
+  type_id: 0x282bc8d6
+}
+member {
+  id: 0x2f978d4c
+  name: "uprobe_path"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0xa1746ec2
+  name: "uprobes_state"
+  type_id: 0x527bb441
+  offset: 6912
+}
+member {
+  id: 0x5be9842b
+  name: "upthreshold"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xadcb7881
+  name: "uptime"
+  type_id: 0x68035002
+}
+member {
+  id: 0x324b8c10
+  name: "uptr"
+  type_id: 0x3e10b518
+  offset: 64
+}
+member {
+  id: 0x3f51e1b9
+  name: "urb"
+  type_id: 0x0130219f
+  offset: 896
+}
+member {
+  id: 0x3f51eb1f
+  name: "urb"
+  type_id: 0x0130219f
+}
+member {
+  id: 0x3f51ec68
+  name: "urb"
+  type_id: 0x0130219f
+  offset: 448
+}
+member {
+  id: 0x3f51ed66
+  name: "urb"
+  type_id: 0x0130219f
+  offset: 640
+}
+member {
+  id: 0x3feef7ab
+  name: "urb"
+  type_id: 0xbe2ea865
+  offset: 704
+}
+member {
+  id: 0xad94a034
+  name: "urb_dequeue"
+  type_id: 0x2fa0c176
+  offset: 832
+}
+member {
+  id: 0xb5e53ffa
+  name: "urb_enqueue"
+  type_id: 0x2fa9a916
+  offset: 768
+}
+member {
+  id: 0x4ad297e0
+  name: "urb_list"
+  type_id: 0xd3c80119
+  offset: 192
+}
+member {
+  id: 0x4ad29f29
+  name: "urb_list"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0x7fecfc90
+  name: "urbnum"
+  type_id: 0x74d29cf1
+  offset: 11648
+}
+member {
+  id: 0xefe85c23
+  name: "urg"
+  type_id: 0xe8034002
+  offset: 109
+  bitsize: 1
+}
+member {
+  id: 0xcd5c6021
+  name: "urg_ptr"
+  type_id: 0x7584e7da
+  offset: 144
+}
+member {
+  id: 0x3bf0a986
+  name: "urgent_bkops_lvl"
+  type_id: 0xeab68ea2
+  offset: 26400
+}
+member {
+  id: 0xccbdafaa
+  name: "uring_cmd"
+  type_id: 0x2d36a269
+  offset: 2048
+}
+member {
+  id: 0x8432aabc
+  name: "uring_cmd_flags"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xaf58972b
+  name: "uring_cmd_iopoll"
+  type_id: 0x2d53a79e
+  offset: 2112
+}
+member {
+  id: 0x1b927405
+  name: "uring_lock"
+  type_id: 0xa7c362b0
+}
+member {
+  id: 0x1184ce2f
+  name: "uring_op"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0x071e5bb3
+  name: "usage"
+  type_id: 0x74d29cf1
+}
+member {
+  id: 0x072f08a8
+  name: "usage"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x074cfed2
+  name: "usage"
+  type_id: 0x26731c99
+  offset: 64
+}
+member {
+  id: 0x07572045
+  name: "usage"
+  type_id: 0x3da0a8e3
+  offset: 128
+}
+member {
+  id: 0x076f0c3b
+  name: "usage"
+  type_id: 0x0581f50f
+  offset: 64
+}
+member {
+  id: 0x07760a06
+  name: "usage"
+  type_id: 0x1c898f28
+  offset: 896
+}
+member {
+  id: 0x07bf52a9
+  name: "usage"
+  type_id: 0xd5df6730
+  offset: 64
+}
+member {
+  id: 0x07cda0f6
+  name: "usage"
+  type_id: 0xa722c13e
+  offset: 512
+}
+member {
+  id: 0x07cda22c
+  name: "usage"
+  type_id: 0xa722c13e
+  offset: 128
+}
+member {
+  id: 0x07cdab1c
+  name: "usage"
+  type_id: 0xa722c13e
+  offset: 608
+}
+member {
+  id: 0x07cdabee
+  name: "usage"
+  type_id: 0xa722c13e
+}
+member {
+  id: 0x07daa21a
+  name: "usage"
+  type_id: 0xb02b353a
+}
+member {
+  id: 0x07f8a2d5
+  name: "usage"
+  type_id: 0x92233392
+  offset: 192
+}
+member {
+  id: 0xec42fdae
+  name: "usage_code"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x05a8e34b
+  name: "usage_count"
+  type_id: 0x74d29cf1
+  offset: 1760
+}
+member {
+  id: 0x05a8edba
+  name: "usage_count"
+  type_id: 0x74d29cf1
+  offset: 1920
+}
+member {
+  id: 0x05bb1856
+  name: "usage_count"
+  type_id: 0x6720d32f
+  offset: 1280
+}
+member {
+  id: 0xeaee801b
+  name: "usage_hid"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x46bd9b3d
+  name: "usage_in_excess"
+  type_id: 0x33756485
+  offset: 18560
+}
+member {
+  id: 0xdaf5a26c
+  name: "usage_index"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x350e5f1a
+  name: "usage_power"
+  type_id: 0x6d7f5ff6
+  offset: 168
+}
+member {
+  id: 0x640c32f6
+  name: "usage_table"
+  type_id: 0x36f4db1f
+  offset: 640
+}
+member {
+  id: 0x1757263e
+  name: "usage_type"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xeca141e1
+  name: "usages_priorities"
+  type_id: 0x097a80cb
+  offset: 512
+}
+member {
+  id: 0x5ec7864c
+  name: "usb2_hw_lpm_allowed"
+  type_id: 0x4585663f
+  offset: 11188
+  bitsize: 1
+}
+member {
+  id: 0x71e64007
+  name: "usb2_hw_lpm_besl_capable"
+  type_id: 0x4585663f
+  offset: 11186
+  bitsize: 1
+}
+member {
+  id: 0x90eb88f9
+  name: "usb2_hw_lpm_capable"
+  type_id: 0x4585663f
+  offset: 11185
+  bitsize: 1
+}
+member {
+  id: 0x9fd26060
+  name: "usb2_hw_lpm_enabled"
+  type_id: 0x4585663f
+  offset: 11187
+  bitsize: 1
+}
+member {
+  id: 0x11d1c32e
+  name: "usb2_port"
+  type_id: 0x0258f96e
+  offset: 64
+}
+member {
+  id: 0x11d1c620
+  name: "usb2_port"
+  type_id: 0x0258f96e
+  offset: 7744
+}
+member {
+  id: 0x4f2cc60f
+  name: "usb2_rhub"
+  type_id: 0xcd18dfb6
+  offset: 21120
+}
+member {
+  id: 0x33fe5eaa
+  name: "usb3_lpm_u1_enabled"
+  type_id: 0x4585663f
+  offset: 11189
+  bitsize: 1
+}
+member {
+  id: 0x6904f922
+  name: "usb3_lpm_u2_enabled"
+  type_id: 0x4585663f
+  offset: 11190
+  bitsize: 1
+}
+member {
+  id: 0x45a3a04f
+  name: "usb3_port"
+  type_id: 0x0258f96e
+  offset: 128
+}
+member {
+  id: 0x45a3a468
+  name: "usb3_port"
+  type_id: 0x0258f96e
+  offset: 7808
+}
+member {
+  id: 0x543df0dd
+  name: "usb3_rhub"
+  type_id: 0xcd18dfb6
+  offset: 39616
+}
+member {
+  id: 0x4fd51e2a
+  name: "usb_amount_left"
+  type_id: 0xc9082b19
+  offset: 3232
+}
+member {
+  id: 0x8a756656
+  name: "usb_bits"
+  type_id: 0xb914bfab
+  offset: 1408
+}
+member {
+  id: 0x036b12ba
+  name: "usb_cdc_acm_descriptor"
+  type_id: 0x01a5f681
+  offset: 192
+}
+member {
+  id: 0x3ad33d1e
+  name: "usb_cdc_call_mgmt_descriptor"
+  type_id: 0x0e0c5a89
+  offset: 128
+}
+member {
+  id: 0x19b2cb91
+  name: "usb_cdc_country_functional_desc"
+  type_id: 0x1cb472ce
+  offset: 256
+}
+member {
+  id: 0x91386300
+  name: "usb_cdc_dmm_desc"
+  type_id: 0x3c8db9ff
+  offset: 448
+}
+member {
+  id: 0x0c2aa389
+  name: "usb_cdc_ether_desc"
+  type_id: 0x0020e339
+  offset: 384
+}
+member {
+  id: 0x2901a2d1
+  name: "usb_cdc_header_desc"
+  type_id: 0x2dfc9938
+  offset: 64
+}
+member {
+  id: 0x418c9cd2
+  name: "usb_cdc_mbim_desc"
+  type_id: 0x35f64996
+  offset: 768
+}
+member {
+  id: 0xe4628853
+  name: "usb_cdc_mbim_extended_desc"
+  type_id: 0x11498f04
+  offset: 832
+}
+member {
+  id: 0xcf1e9a16
+  name: "usb_cdc_mdlm_desc"
+  type_id: 0x3805773d
+  offset: 512
+}
+member {
+  id: 0x98da853d
+  name: "usb_cdc_mdlm_detail_desc"
+  type_id: 0x205f4b01
+  offset: 576
+}
+member {
+  id: 0xa3686277
+  name: "usb_cdc_ncm_desc"
+  type_id: 0x136dcbd8
+  offset: 704
+}
+member {
+  id: 0x6be7d1f9
+  name: "usb_cdc_network_terminal_desc"
+  type_id: 0x1e981dc6
+  offset: 320
+}
+member {
+  id: 0x7ccfd756
+  name: "usb_cdc_obex_desc"
+  type_id: 0x2914a36c
+  offset: 640
+}
+member {
+  id: 0x2ab8ec07
+  name: "usb_cdc_union_desc"
+  type_id: 0x249da67c
+}
+member {
+  id: 0xcea50aff
+  name: "usb_dev"
+  type_id: 0x0258f96e
+  offset: 7680
+}
+member {
+  id: 0xfc09f0db
+  name: "usb_driver"
+  type_id: 0x3c9a9fb2
+  offset: 1664
+}
+member {
+  id: 0x075c8af5
+  name: "usb_id"
+  type_id: 0xc9082b19
+  offset: 1216
+}
+member {
+  id: 0x171fc3a7
+  name: "usb_pd"
+  type_id: 0x4585663f
+  bitsize: 1
+}
+member {
+  id: 0x171fc924
+  name: "usb_pd"
+  type_id: 0x4585663f
+  offset: 7296
+  bitsize: 1
+}
+member {
+  id: 0x1058a10a
+  name: "usb_phy"
+  type_id: 0x05c2a3ca
+  offset: 128
+}
+member {
+  id: 0x1058a1fb
+  name: "usb_phy"
+  type_id: 0x05c2a3ca
+  offset: 3136
+}
+member {
+  id: 0x83895d9b
+  name: "usb_propval"
+  type_id: 0x13652d56
+  offset: 1152
+}
+member {
+  id: 0xb144e2fb
+  name: "usb_role_sw"
+  type_id: 0x3a6106d5
+  offset: 7360
+}
+member {
+  id: 0x414594be
+  name: "usb_type"
+  type_id: 0xed696ae5
+  offset: 11008
+}
+member {
+  id: 0x73dbac61
+  name: "usb_types"
+  type_id: 0x3342d461
+  offset: 128
+}
+member {
+  id: 0x336e0499
+  name: "usbmode"
+  type_id: 0xc9082b19
+  offset: 288
+}
+member {
+  id: 0x94628834
+  name: "usbmode_ex"
+  type_id: 0xc9082b19
+  offset: 1600
+}
+member {
+  id: 0xd31108c5
+  name: "use"
+  type_id: 0xa722c13e
+}
+member {
+  id: 0xd3110a36
+  name: "use"
+  type_id: 0xa722c13e
+  offset: 1408
+}
+member {
+  id: 0x74903218
+  name: "use_10_for_ms"
+  type_id: 0x4585663f
+  offset: 2800
+  bitsize: 1
+}
+member {
+  id: 0x71ac426b
+  name: "use_10_for_rw"
+  type_id: 0x4585663f
+  offset: 2799
+  bitsize: 1
+}
+member {
+  id: 0xe37dd9ad
+  name: "use_16_for_rw"
+  type_id: 0x4585663f
+  offset: 2804
+  bitsize: 1
+}
+member {
+  id: 0x58168fb6
+  name: "use_192_bytes_for_3f"
+  type_id: 0x4585663f
+  offset: 2809
+  bitsize: 1
+}
+member {
+  id: 0x810468bf
+  name: "use_4addr"
+  type_id: 0x6d7f5ff6
+  offset: 960
+}
+member {
+  id: 0x38d66b32
+  name: "use_64bit_seqno"
+  type_id: 0x6d7f5ff6
+}
+member {
+  id: 0x76d7747f
+  name: "use_ack"
+  type_id: 0x4585663f
+  offset: 611
+  bitsize: 1
+}
+member {
+  id: 0x07c67ca6
+  name: "use_adaptive_rx_coalesce"
+  type_id: 0xe62ebf07
+  offset: 320
+}
+member {
+  id: 0x6eb7a333
+  name: "use_adaptive_tx_coalesce"
+  type_id: 0xe62ebf07
+  offset: 352
+}
+member {
+  id: 0xb3026d07
+  name: "use_autosuspend"
+  type_id: 0x4585663f
+  offset: 1995
+  bitsize: 1
+}
+member {
+  id: 0x3047e0c8
+  name: "use_cached_err"
+  type_id: 0x6d7f5ff6
+  offset: 10848
+}
+member {
+  id: 0xc68cfbe1
+  name: "use_callback"
+  type_id: 0x6d7f5ff6
+  offset: 160
+}
+member {
+  id: 0x39406b1c
+  name: "use_clockid"
+  type_id: 0xedf277ba
+  offset: 345
+  bitsize: 1
+}
+member {
+  id: 0x9b323a0d
+  name: "use_cnt"
+  type_id: 0x74d29cf1
+  offset: 9280
+}
+member {
+  id: 0x9bd7abf8
+  name: "use_cnt"
+  type_id: 0x914dbfdc
+  offset: 32
+}
+member {
+  id: 0x9947442f
+  name: "use_count"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0x99e9635c
+  name: "use_count"
+  type_id: 0x6720d32f
+  offset: 8960
+}
+member {
+  id: 0x99e966ee
+  name: "use_count"
+  type_id: 0x6720d32f
+  offset: 832
+}
+member {
+  id: 0x99fa9afe
+  name: "use_count"
+  type_id: 0x74d29cf1
+  offset: 7808
+}
+member {
+  id: 0x99fa9ed9
+  name: "use_count"
+  type_id: 0x74d29cf1
+  offset: 128
+}
+member {
+  id: 0x185e93b6
+  name: "use_cqe_mode_rx"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0xe07668c5
+  name: "use_cqe_mode_tx"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x67f57168
+  name: "use_dai_pcm_id"
+  type_id: 0x6d7f5ff6
+  offset: 2816
+}
+member {
+  id: 0xfb73d61c
+  name: "use_delay"
+  type_id: 0x74d29cf1
+  offset: 2432
+}
+member {
+  id: 0x4c5b1a38
+  name: "use_dev_dma_pfn_offset"
+  type_id: 0x6d7f5ff6
+  offset: 352
+}
+member {
+  id: 0x4fb6ce5b
+  name: "use_dma32"
+  type_id: 0x6d7f5ff6
+  offset: 72
+}
+member {
+  id: 0xa53c530a
+  name: "use_dma_alloc"
+  type_id: 0x6d7f5ff6
+  offset: 64
+}
+member {
+  id: 0xa084f1d8
+  name: "use_dummy_qh"
+  type_id: 0x4585663f
+  offset: 5610
+  bitsize: 1
+}
+member {
+  id: 0x0482303b
+  name: "use_extended_tbc"
+  type_id: 0x6d7f5ff6
+  offset: 1120
+}
+member {
+  id: 0x45ea5e18
+  name: "use_external_dma"
+  type_id: 0x6d7f5ff6
+  offset: 6344
+}
+member {
+  id: 0x7544deb6
+  name: "use_for_apm"
+  type_id: 0x6720d32f
+  offset: 736
+}
+member {
+  id: 0x0e98d4e4
+  name: "use_generic_driver"
+  type_id: 0x4585663f
+  offset: 12368
+  bitsize: 1
+}
+member {
+  id: 0x94b75d05
+  name: "use_gpio_descriptors"
+  type_id: 0x6d7f5ff6
+  offset: 11776
+}
+member {
+  id: 0x2f654b9a
+  name: "use_hwlock"
+  type_id: 0x6d7f5ff6
+  offset: 2400
+}
+member {
+  id: 0x234ad6a6
+  name: "use_memdelay"
+  type_id: 0x4585663f
+  offset: 12103
+  bitsize: 1
+}
+member {
+  id: 0x765641af
+  name: "use_of_reg"
+  type_id: 0x6d7f5ff6
+  offset: 704
+}
+member {
+  id: 0x80b51ca0
+  name: "use_oif_addrs_only"
+  type_id: 0x0faae5b1
+  offset: 1600
+}
+member {
+  id: 0x9030fc4b
+  name: "use_optimistic"
+  type_id: 0x0faae5b1
+  offset: 1088
+}
+member {
+  id: 0x830f3d67
+  name: "use_os_string"
+  type_id: 0x4585663f
+  offset: 448
+  bitsize: 1
+}
+member {
+  id: 0xe5fa91c6
+  name: "use_pause_in_draining"
+  type_id: 0x6d7f5ff6
+  offset: 8032
+}
+member {
+  id: 0x73caff89
+  name: "use_pmdown_time"
+  type_id: 0x4585663f
+  offset: 2563
+  bitsize: 1
+}
+member {
+  id: 0x68ff1efa
+  name: "use_raw_spinlock"
+  type_id: 0x6d7f5ff6
+  offset: 2408
+}
+member {
+  id: 0x51bdacc3
+  name: "use_relaxed_mmio"
+  type_id: 0x6d7f5ff6
+  offset: 2200
+}
+member {
+  id: 0x47173cb7
+  name: "use_single_read"
+  type_id: 0x6d7f5ff6
+  offset: 2184
+}
+member {
+  id: 0x47173f90
+  name: "use_single_read"
+  type_id: 0x6d7f5ff6
+  offset: 5024
+}
+member {
+  id: 0xa93f836c
+  name: "use_single_write"
+  type_id: 0x6d7f5ff6
+  offset: 2192
+}
+member {
+  id: 0xa93f8874
+  name: "use_single_write"
+  type_id: 0x6d7f5ff6
+  offset: 5032
+}
+member {
+  id: 0x5649a4a3
+  name: "use_spi_crc"
+  type_id: 0x4585663f
+  offset: 8480
+  bitsize: 1
+}
+member {
+  id: 0x1fb60be2
+  name: "use_tempaddr"
+  type_id: 0x0faae5b1
+  offset: 448
+}
+member {
+  id: 0x773697d9
+  name: "use_time"
+  type_id: 0xedf277ba
+  offset: 192
+}
+member {
+  id: 0xeccb4cfe
+  name: "use_tt"
+  type_id: 0x6d7f5ff6
+  offset: 8
+}
+member {
+  id: 0xcd7ce15e
+  name: "use_type"
+  type_id: 0x6d7f5ff6
+}
+member {
+  id: 0x760852e7
+  name: "use_udp6_rx_checksums"
+  type_id: 0x4585663f
+  offset: 354
+  bitsize: 1
+}
+member {
+  id: 0xaea8dd61
+  name: "use_udp6_tx_checksums"
+  type_id: 0x4585663f
+  offset: 353
+  bitsize: 1
+}
+member {
+  id: 0x3761c834
+  name: "use_udp_checksums"
+  type_id: 0x4585663f
+  offset: 352
+  bitsize: 1
+}
+member {
+  id: 0x3761c8b4
+  name: "use_udp_checksums"
+  type_id: 0x4585663f
+  offset: 288
+  bitsize: 1
+}
+member {
+  id: 0x4a7465a4
+  name: "use_worker"
+  type_id: 0x6d7f5ff6
+  offset: 1600
+}
+member {
+  id: 0xe483d83b
+  name: "usecs"
+  type_id: 0x295c7202
+  offset: 336
+}
+member {
+  id: 0x8b2f5e4b
+  name: "used"
+  type_id: 0x914dbfdc
+  offset: 48
+}
+member {
+  id: 0x8b87862f
+  name: "used"
+  type_id: 0x399f63b7
+  offset: 640
+}
+member {
+  id: 0x8b8d6727
+  name: "used"
+  type_id: 0x33756485
+  offset: 1088
+}
+member {
+  id: 0x8b8d6a51
+  name: "used"
+  type_id: 0x33756485
+}
+member {
+  id: 0x8b8d6afa
+  name: "used"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0x8bd9301a
+  name: "used"
+  type_id: 0x6720d32f
+  offset: 9920
+}
+member {
+  id: 0x8bd93b07
+  name: "used"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x8bf1b895
+  name: "used"
+  type_id: 0x4faa9b63
+  offset: 32
+}
+member {
+  id: 0xc94059e9
+  name: "used_btf_cnt"
+  type_id: 0xc9082b19
+  offset: 12832
+}
+member {
+  id: 0xc9405f4b
+  name: "used_btf_cnt"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0x629d6168
+  name: "used_btfs"
+  type_id: 0x08354f2e
+  offset: 4608
+}
+member {
+  id: 0x62a454aa
+  name: "used_btfs"
+  type_id: 0x310e711e
+  offset: 7104
+}
+member {
+  id: 0xf3d9587a
+  name: "used_flags"
+  type_id: 0x914dbfdc
+  offset: 2608
+}
+member {
+  id: 0x5d82d851
+  name: "used_hw_stats"
+  type_id: 0x295c7202
+  offset: 1576
+}
+member {
+  id: 0xfa5e0fee
+  name: "used_hw_stats_valid"
+  type_id: 0x6d7f5ff6
+  offset: 1584
+}
+member {
+  id: 0x8075eb22
+  name: "used_keys"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x867737e5
+  name: "used_lrs"
+  type_id: 0x4585663f
+  offset: 2144
+}
+member {
+  id: 0x8677397b
+  name: "used_lrs"
+  type_id: 0x4585663f
+  offset: 2432
+}
+member {
+  id: 0x59ccfd6e
+  name: "used_map_cnt"
+  type_id: 0xc9082b19
+  offset: 12800
+}
+member {
+  id: 0x59ccffff
+  name: "used_map_cnt"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x6a90c804
+  name: "used_maps"
+  type_id: 0x32876364
+  offset: 512
+}
+member {
+  id: 0x6aa9f159
+  name: "used_maps"
+  type_id: 0x0bbc5d54
+  offset: 6656
+}
+member {
+  id: 0x58839111
+  name: "used_maps_mutex"
+  type_id: 0xa7c362b0
+  offset: 6720
+}
+member {
+  id: 0x0170d376
+  name: "used_mask"
+  type_id: 0xb914bfab
+  offset: 2048
+}
+member {
+  id: 0xcd075131
+  name: "used_sems"
+  type_id: 0x6720d32f
+  offset: 6656
+}
+member {
+  id: 0xeedb61d6
+  name: "used_time"
+  type_id: 0xb02b353a
+  offset: 64
+}
+member {
+  id: 0x042a2048
+  name: "user"
+  type_id: 0x181ee594
+  offset: 256
+}
+member {
+  id: 0x042a2075
+  name: "user"
+  type_id: 0x181ee594
+  offset: 8256
+}
+member {
+  id: 0x042a2210
+  name: "user"
+  type_id: 0x181ee594
+  offset: 1408
+}
+member {
+  id: 0x042a27fc
+  name: "user"
+  type_id: 0x181ee594
+  offset: 1024
+}
+member {
+  id: 0x042a2fad
+  name: "user"
+  type_id: 0x181ee594
+  offset: 7232
+}
+member {
+  id: 0x042a8363
+  name: "user"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0x043550f2
+  name: "user"
+  type_id: 0x07665a1f
+  offset: 768
+}
+member {
+  id: 0x04880323
+  name: "user"
+  type_id: 0xba3f457a
+  offset: 416
+}
+member {
+  id: 0x04fb32cc
+  name: "user"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x04fb362d
+  name: "user"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x04fb3686
+  name: "user"
+  type_id: 0xc9082b19
+  offset: 256
+}
+member {
+  id: 0x9a92f005
+  name: "user_backed"
+  type_id: 0x6d7f5ff6
+  offset: 24
+}
+member {
+  id: 0x53509282
+  name: "user_bufs"
+  type_id: 0x003f56cd
+  offset: 960
+}
+member {
+  id: 0xa29c36ce
+  name: "user_cnt"
+  type_id: 0xa722c13e
+  offset: 12320
+}
+member {
+  id: 0x89b32feb
+  name: "user_cpus_ptr"
+  type_id: 0x0d910d7f
+  offset: 9408
+}
+member {
+  id: 0xc96b1b7e
+  name: "user_ctl_alloc_size"
+  type_id: 0xf435685e
+  offset: 11456
+}
+member {
+  id: 0x8e76f84c
+  name: "user_data"
+  type_id: 0xedf277ba
+  offset: 256
+}
+member {
+  id: 0x8e76f8e7
+  name: "user_data"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x8e76fc06
+  name: "user_data"
+  type_id: 0xedf277ba
+  offset: 64
+}
+member {
+  id: 0x8e83b5c8
+  name: "user_data"
+  type_id: 0x18bd6530
+  offset: 704
+}
+member {
+  id: 0x71d4eef6
+  name: "user_defined"
+  type_id: 0x4585663f
+  offset: 17
+  bitsize: 1
+}
+member {
+  id: 0x8c221133
+  name: "user_id"
+  type_id: 0x33756485
+  offset: 320
+}
+member {
+  id: 0x26de6193
+  name: "user_keyring_register"
+  type_id: 0x01a688ae
+  offset: 2368
+}
+member {
+  id: 0x246856f6
+  name: "user_max_freq_req"
+  type_id: 0x724805ea
+  offset: 10496
+}
+member {
+  id: 0x61b405b7
+  name: "user_min_freq_req"
+  type_id: 0x724805ea
+  offset: 9856
+}
+member {
+  id: 0xf44982ea
+  name: "user_name"
+  type_id: 0x5adf57ae
+  offset: 64
+}
+member {
+  id: 0xde4b7192
+  name: "user_ns"
+  type_id: 0x0fabaf3b
+  offset: 1088
+}
+member {
+  id: 0xde4b742d
+  name: "user_ns"
+  type_id: 0x0fabaf3b
+  offset: 192
+}
+member {
+  id: 0xde4b759f
+  name: "user_ns"
+  type_id: 0x0fabaf3b
+  offset: 6656
+}
+member {
+  id: 0xde4b75d7
+  name: "user_ns"
+  type_id: 0x0fabaf3b
+  offset: 3136
+}
+member {
+  id: 0xde4b7705
+  name: "user_ns"
+  type_id: 0x0fabaf3b
+  offset: 9792
+}
+member {
+  id: 0xde4b7a9d
+  name: "user_ns"
+  type_id: 0x0fabaf3b
+  offset: 640
+}
+member {
+  id: 0xde4b7b93
+  name: "user_ns"
+  type_id: 0x0fabaf3b
+  offset: 448
+}
+member {
+  id: 0xde4b7ce4
+  name: "user_ns"
+  type_id: 0x0fabaf3b
+}
+member {
+  id: 0xde4b7ed9
+  name: "user_ns"
+  type_id: 0x0fabaf3b
+  offset: 704
+}
+member {
+  id: 0xbf37cad2
+  name: "user_page"
+  type_id: 0x2542055c
+  offset: 1856
+}
+member {
+  id: 0x311073a2
+  name: "user_ptr"
+  type_id: 0x6a8619af
+  offset: 384
+}
+member {
+  id: 0x55ef1c5b
+  name: "user_reg_hint_type"
+  type_id: 0xc72fc5ee
+  offset: 192
+}
+member {
+  id: 0x7e717873
+  name: "user_regs"
+  type_id: 0x107f740f
+}
+member {
+  id: 0x7d1ff5bc
+  name: "user_reset"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xdf775bab
+  name: "user_scan"
+  type_id: 0x2c2bf57a
+  offset: 2496
+}
+member {
+  id: 0x5be84f8f
+  name: "user_val_to_struct"
+  type_id: 0x086a88e1
+  offset: 2304
+}
+member {
+  id: 0x3b4f6865
+  name: "user_waits"
+  type_id: 0x74d29cf1
+  offset: 1024
+}
+member {
+  id: 0x574dfda0
+  name: "user_xattr_size"
+  type_id: 0x74d29cf1
+  offset: 672
+}
+member {
+  id: 0xff72c9ba
+  name: "userbits"
+  type_id: 0xa0b4fda8
+  offset: 96
+}
+member {
+  id: 0x52e156e4
+  name: "usercnt"
+  type_id: 0x1f4573ef
+  offset: 1088
+}
+member {
+  id: 0xbf959fe4
+  name: "userhdr"
+  type_id: 0x18bd6530
+  offset: 192
+}
+member {
+  id: 0xe3db14ff
+  name: "useroffset"
+  type_id: 0x4585663f
+  offset: 1888
+}
+member {
+  id: 0xe3db192b
+  name: "useroffset"
+  type_id: 0x4585663f
+  offset: 2752
+}
+member {
+  id: 0x53c410eb
+  name: "userptr"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0x53efd8ea
+  name: "userptr"
+  type_id: 0x33756485
+}
+member {
+  id: 0x850ad405
+  name: "users"
+  type_id: 0xa722c13e
+  offset: 288
+}
+member {
+  id: 0x850ad71b
+  name: "users"
+  type_id: 0xa722c13e
+  offset: 320
+}
+member {
+  id: 0x850ad82f
+  name: "users"
+  type_id: 0xa722c13e
+  offset: 960
+}
+member {
+  id: 0x850adde7
+  name: "users"
+  type_id: 0xa722c13e
+  offset: 32
+}
+member {
+  id: 0x850ade35
+  name: "users"
+  type_id: 0xa722c13e
+  offset: 1888
+}
+member {
+  id: 0x8564f74e
+  name: "users"
+  type_id: 0xc9082b19
+  offset: 9344
+}
+member {
+  id: 0x857e3314
+  name: "users"
+  type_id: 0xd3c80119
+  offset: 3520
+}
+member {
+  id: 0x8593b21b
+  name: "users"
+  type_id: 0x3e40064a
+}
+member {
+  id: 0x85c2e4aa
+  name: "users"
+  type_id: 0x6f1daf87
+  offset: 512
+}
+member {
+  id: 0x85cad0f3
+  name: "users"
+  type_id: 0x6720d32f
+  offset: 704
+}
+member {
+  id: 0x85cad265
+  name: "users"
+  type_id: 0x6720d32f
+  offset: 256
+}
+member {
+  id: 0x85cad2ce
+  name: "users"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x85cad62f
+  name: "users"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x85cada3d
+  name: "users"
+  type_id: 0x6720d32f
+  offset: 960
+}
+member {
+  id: 0x85e876e9
+  name: "users"
+  type_id: 0x4585663f
+  offset: 384
+}
+member {
+  id: 0x85e87d65
+  name: "users"
+  type_id: 0x4585663f
+  offset: 4544
+}
+member {
+  id: 0x914f88a3
+  name: "users_count"
+  type_id: 0xa722c13e
+  offset: 24576
+}
+member {
+  id: 0xbb6c91c3
+  name: "usersize"
+  type_id: 0x4585663f
+  offset: 1920
+}
+member {
+  id: 0xbb6c9486
+  name: "usersize"
+  type_id: 0x4585663f
+  offset: 2784
+}
+member {
+  id: 0x557afbd5
+  name: "userspace_addr"
+  type_id: 0x33756485
+  offset: 1600
+}
+member {
+  id: 0x3bb591b4
+  name: "userspace_clients"
+  type_id: 0xd3c80119
+  offset: 9344
+}
+member {
+  id: 0x1ad9bdad
+  name: "userspace_clients_lock"
+  type_id: 0xa7c362b0
+  offset: 8960
+}
+member {
+  id: 0xff77b3c7
+  name: "userspace_pid"
+  type_id: 0x49b889e7
+  offset: 34240
+}
+member {
+  id: 0x959b553f
+  name: "uses_need_wakeup"
+  type_id: 0x6d7f5ff6
+  offset: 1704
+}
+member {
+  id: 0x3acabb1f
+  name: "uses_new_polling"
+  type_id: 0x4585663f
+  offset: 3365
+  bitsize: 1
+}
+member {
+  id: 0xfb5c8b36
+  name: "uses_pio_for_control"
+  type_id: 0x295c7202
+  offset: 256
+}
+member {
+  id: 0x060be66b
+  name: "uses_qbuf"
+  type_id: 0x4585663f
+  offset: 199
+  bitsize: 1
+}
+member {
+  id: 0x96ee5f4a
+  name: "uses_requests"
+  type_id: 0x4585663f
+  offset: 200
+  bitsize: 1
+}
+member {
+  id: 0xb03da298
+  name: "usid"
+  type_id: 0x295c7202
+  offset: 7360
+}
+member {
+  id: 0x4f24f2f6
+  name: "using_gplonly_symbols"
+  type_id: 0x6d7f5ff6
+  offset: 2816
+}
+member {
+  id: 0x7e6f6486
+  name: "using_mac_select_pcs"
+  type_id: 0x6d7f5ff6
+  offset: 3080
+}
+member {
+  id: 0xa5df2eff
+  name: "usr_ip4_spec"
+  type_id: 0x787ac015
+}
+member {
+  id: 0x17a75665
+  name: "usr_ip6_spec"
+  type_id: 0x10446400
+}
+member {
+  id: 0xec4e8595
+  name: "usr_ptr"
+  type_id: 0xedf277ba
+  offset: 768
+}
+member {
+  id: 0xecbbc55e
+  name: "usr_ptr"
+  type_id: 0x18bd6530
+  offset: 448
+}
+member {
+  id: 0x4021f538
+  name: "utask"
+  type_id: 0x3b1e48cc
+  offset: 23296
+}
+member {
+  id: 0x37ff5ef8
+  name: "utf8agetab"
+  type_id: 0x39cc14ac
+}
+member {
+  id: 0xced3a623
+  name: "utf8agetab_size"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0xdf34f92f
+  name: "utf8data"
+  type_id: 0x384c5795
+  offset: 384
+}
+member {
+  id: 0x926cbc83
+  name: "utf8nfdicfdata"
+  type_id: 0x3fd0b78c
+  offset: 128
+}
+member {
+  id: 0xbd20c3b1
+  name: "utf8nfdicfdata_size"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0x07ca8fa2
+  name: "utf8nfdidata"
+  type_id: 0x3fd0b78c
+  offset: 256
+}
+member {
+  id: 0xb6a91f3e
+  name: "utf8nfdidata_size"
+  type_id: 0x6720d32f
+  offset: 320
+}
+member {
+  id: 0xbd0eb129
+  name: "util_avg"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0xbd0eb979
+  name: "util_avg"
+  type_id: 0x33756485
+  offset: 384
+}
+member {
+  id: 0xa03e6e79
+  name: "util_est"
+  type_id: 0x0d7e2cae
+  offset: 448
+}
+member {
+  id: 0xc12a5418
+  name: "util_sum"
+  type_id: 0xc9082b19
+  offset: 192
+}
+member {
+  id: 0xd605d139
+  name: "utime"
+  type_id: 0x92233392
+  offset: 14592
+}
+member {
+  id: 0xd605d2ce
+  name: "utime"
+  type_id: 0x92233392
+}
+member {
+  id: 0xd605d62f
+  name: "utime"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0xd605d884
+  name: "utime"
+  type_id: 0x92233392
+  offset: 3456
+}
+member {
+  id: 0xd688b48e
+  name: "utime"
+  type_id: 0x1f4573ef
+}
+member {
+  id: 0x75f3a99d
+  name: "utmrdl_base_addr"
+  type_id: 0x29916716
+  offset: 192
+}
+member {
+  id: 0xf8075979
+  name: "utmrdl_dma_addr"
+  type_id: 0xe02e14d6
+  offset: 384
+}
+member {
+  id: 0xec332165
+  name: "utr_descriptor_ptr"
+  type_id: 0x0369215c
+}
+member {
+  id: 0xdd3b075e
+  name: "utrd_dma_addr"
+  type_id: 0xe02e14d6
+  offset: 256
+}
+member {
+  id: 0xc8af3fe4
+  name: "utrdl_base_addr"
+  type_id: 0x0369215c
+  offset: 128
+}
+member {
+  id: 0x9fcca934
+  name: "utrdl_dma_addr"
+  type_id: 0xe02e14d6
+  offset: 320
+}
+member {
+  id: 0x743bd138
+  name: "uts_ns"
+  type_id: 0x31c7da28
+  offset: 64
+}
+member {
+  id: 0xfd0d3b70
+  name: "uuid"
+  type_id: 0x42201dce
+  offset: 32
+}
+member {
+  id: 0xfd2c1b4e
+  name: "uuid"
+  type_id: 0x630d1806
+}
+member {
+  id: 0xfd8f9163
+  name: "uuid"
+  type_id: 0xc0873542
+}
+member {
+  id: 0x4f1b13e5
+  name: "uuid_count"
+  type_id: 0x914dbfdc
+  offset: 864
+}
+member {
+  id: 0x4d05fb85
+  name: "uuids"
+  type_id: 0x1b090e23
+  offset: 896
+}
+member {
+  id: 0x4dcd3a37
+  name: "uuids"
+  type_id: 0xd3c80119
+  offset: 29568
+}
+member {
+  id: 0xba94773b
+  name: "uv_ac_delta"
+  type_id: 0x901eaf6a
+  offset: 40
+}
+member {
+  id: 0x8f05f139
+  name: "uv_dc_delta"
+  type_id: 0x901eaf6a
+  offset: 32
+}
+member {
+  id: 0xe735ca23
+  name: "uv_mode"
+  type_id: 0x5618bcc1
+  offset: 14664
+}
+member {
+  id: 0x6d2b82d0
+  name: "uv_mode_probs"
+  type_id: 0x3e3c1b86
+  offset: 8480
+}
+member {
+  id: 0x903d96f4
+  name: "uvalue"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0x8dff436d
+  name: "uw"
+  type_id: 0x3bf747f0
+  offset: 896
+}
+member {
+  id: 0xdb115a10
+  name: "uw_nh_entries"
+  type_id: 0xd3c80119
+  offset: 1216
+}
+member {
+  id: 0x9f2f968c
+  name: "uw_nh_entry"
+  type_id: 0xd3c80119
+}
+member {
+  id: 0x283653a1
+  name: "v"
+  type_id: 0x09f9643d
+}
+member {
+  id: 0x28775171
+  name: "v"
+  type_id: 0x48fb1ff5
+  offset: 256
+}
+member {
+  id: 0x28d9847a
+  name: "v"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x543f6773
+  name: "v1"
+  type_id: 0x6d0d4c04
+}
+member {
+  id: 0x987fa9b5
+  name: "v2"
+  type_id: 0xe10a7e38
+}
+member {
+  id: 0x76466478
+  name: "v2_groups_user_writable"
+  type_id: 0x6d7f5ff6
+  offset: 96
+}
+member {
+  id: 0x195445f8
+  name: "v4"
+  type_id: 0x45ddde21
+}
+member {
+  id: 0xfe116e91
+  name: "v4_mode"
+  type_id: 0x6d7f5ff6
+  offset: 6336
+}
+member {
+  id: 0x57c90446
+  name: "v4l2_dev"
+  type_id: 0x074f1a14
+  offset: 8832
+}
+member {
+  id: 0x57c90813
+  name: "v4l2_dev"
+  type_id: 0x074f1a14
+  offset: 1216
+}
+member {
+  id: 0x57c90e36
+  name: "v4l2_dev"
+  type_id: 0x074f1a14
+  offset: 64
+}
+member {
+  id: 0x9becb34f
+  name: "v6"
+  type_id: 0x7c866968
+}
+member {
+  id: 0x80b1cd58
+  name: "v_1p2"
+  type_id: 0x6d7f5ff6
+}
+member {
+  id: 0x1802e020
+  name: "va"
+  type_id: 0x33e9627e
+  offset: 64
+}
+member {
+  id: 0x1829b0c6
+  name: "va"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0xa0ebc2b4
+  name: "va_cfg0_base"
+  type_id: 0x18bd6530
+  offset: 128
+}
+member {
+  id: 0xb6eda17e
+  name: "vactive"
+  type_id: 0xd5e60968
+  offset: 480
+}
+member {
+  id: 0xb6f14625
+  name: "vactive"
+  type_id: 0xc9082b19
+  offset: 192
+}
+member {
+  id: 0xb2b4157d
+  name: "vactive_lo"
+  type_id: 0x295c7202
+  offset: 24
+}
+member {
+  id: 0xc150b773
+  name: "vactive_vblank_hi"
+  type_id: 0x295c7202
+  offset: 40
+}
+member {
+  id: 0x500c4cb1
+  name: "vaddr"
+  type_id: 0x33756485
+}
+member {
+  id: 0x500c4e8c
+  name: "vaddr"
+  type_id: 0x33756485
+  offset: 704
+}
+member {
+  id: 0x5022dc04
+  name: "vaddr"
+  type_id: 0x1de7ec7c
+  offset: 704
+}
+member {
+  id: 0x502781b8
+  name: "vaddr"
+  type_id: 0x18bd6530
+  offset: 3968
+}
+member {
+  id: 0x502784b0
+  name: "vaddr"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0x50278d72
+  name: "vaddr"
+  type_id: 0x18bd6530
+  offset: 128
+}
+member {
+  id: 0xa3a813ae
+  name: "vaddr_iomem"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0x4f259bbe
+  name: "val"
+  type_id: 0x33756485
+}
+member {
+  id: 0x4f3c80d2
+  name: "val"
+  type_id: 0x2a63335c
+  offset: 32
+}
+member {
+  id: 0x4f536bbc
+  name: "val"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x4f623c46
+  name: "val"
+  type_id: 0x74d29cf1
+}
+member {
+  id: 0x4f638fae
+  name: "val"
+  type_id: 0x75617428
+}
+member {
+  id: 0x4f67c989
+  name: "val"
+  type_id: 0x712753fa
+}
+member {
+  id: 0x4f71c7cb
+  name: "val"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x4f80d8c5
+  name: "val"
+  type_id: 0x96361f7e
+}
+member {
+  id: 0x4f84c908
+  name: "val"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0x4f84cde9
+  name: "val"
+  type_id: 0x92233392
+}
+member {
+  id: 0x4fb4fb02
+  name: "val"
+  type_id: 0xa215d8bb
+}
+member {
+  id: 0x4fc09f63
+  name: "val"
+  type_id: 0xd67c82d4
+  offset: 32
+}
+member {
+  id: 0x4fc2f052
+  name: "val"
+  type_id: 0xd41e888f
+}
+member {
+  id: 0x4fc2fa54
+  name: "val"
+  type_id: 0xd41e888f
+  offset: 1568
+}
+member {
+  id: 0x4fdfe210
+  name: "val"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x4fdfe6f1
+  name: "val"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x4fdfef72
+  name: "val"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0x4ffb1cad
+  name: "val"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0xc5535c33
+  name: "val2"
+  type_id: 0x6720d32f
+  offset: 224
+}
+member {
+  id: 0x5c3ee5ef
+  name: "val_bits"
+  type_id: 0x6720d32f
+  offset: 224
+}
+member {
+  id: 0x21764bb8
+  name: "val_bytes"
+  type_id: 0x6720d32f
+  offset: 1088
+}
+member {
+  id: 0x21e553de
+  name: "val_bytes"
+  type_id: 0xf435685e
+  offset: 256
+}
+member {
+  id: 0x889c7bd5
+  name: "val_format_endian"
+  type_id: 0xbbd6353d
+  offset: 2272
+}
+member {
+  id: 0x5cfa81e4
+  name: "val_format_endian_default"
+  type_id: 0xbbd6353d
+  offset: 832
+}
+member {
+  id: 0xdf4f7b1b
+  name: "val_in"
+  type_id: 0xe8034002
+  offset: 32
+}
+member {
+  id: 0xc7438034
+  name: "val_out"
+  type_id: 0xe8034002
+  offset: 48
+}
+member {
+  id: 0xe2ab09c2
+  name: "valid"
+  type_id: 0xc9082b19
+  bitsize: 1
+}
+member {
+  id: 0xe90c54f8
+  name: "valid"
+  type_id: 0xf435685e
+  offset: 448
+}
+member {
+  id: 0xe91a1d71
+  name: "valid"
+  type_id: 0xe276adef
+  offset: 32
+}
+member {
+  id: 0xe9951d59
+  name: "valid"
+  type_id: 0x6d7f5ff6
+  offset: 64
+}
+member {
+  id: 0xe9de33a2
+  name: "valid"
+  type_id: 0x26554526
+}
+member {
+  id: 0xa6274290
+  name: "valid_ioctls"
+  type_id: 0x1e18ac15
+  offset: 10048
+}
+member {
+  id: 0x90082c4e
+  name: "valid_links"
+  type_id: 0x914dbfdc
+  offset: 9536
+}
+member {
+  id: 0x43e438e6
+  name: "valid_mask"
+  type_id: 0x064d6086
+  offset: 4736
+}
+member {
+  id: 0x43e43e10
+  name: "valid_mask"
+  type_id: 0x064d6086
+  offset: 1920
+}
+member {
+  id: 0x528484ca
+  name: "valid_modes_mask"
+  type_id: 0x4585663f
+  offset: 416
+}
+member {
+  id: 0xb262b64e
+  name: "valid_ops_mask"
+  type_id: 0x4585663f
+  offset: 448
+}
+member {
+  id: 0x7e5c1bb6
+  name: "valid_wakeup"
+  type_id: 0x6d7f5ff6
+  offset: 1312
+}
+member {
+  id: 0x2a0a55ed
+  name: "validate"
+  type_id: 0x369da151
+  offset: 256
+}
+member {
+  id: 0x2a11168f
+  name: "validate"
+  type_id: 0x2dd570e6
+  offset: 512
+}
+member {
+  id: 0x2a11614b
+  name: "validate"
+  type_id: 0x2da2b44e
+  offset: 512
+}
+member {
+  id: 0x2a122629
+  name: "validate"
+  type_id: 0x2ee6075d
+  offset: 192
+}
+member {
+  id: 0x2a124246
+  name: "validate"
+  type_id: 0x2e8aa11f
+}
+member {
+  id: 0x2a13aca1
+  name: "validate"
+  type_id: 0x2f63630f
+  offset: 1728
+}
+member {
+  id: 0x2a159a62
+  name: "validate"
+  type_id: 0x295c7202
+  offset: 152
+}
+member {
+  id: 0x2a159db5
+  name: "validate"
+  type_id: 0x295c7202
+  offset: 376
+}
+member {
+  id: 0x2a312ad0
+  name: "validate"
+  type_id: 0x0de2370a
+}
+member {
+  id: 0x0d93a039
+  name: "validate_device"
+  type_id: 0x2c799285
+  offset: 128
+}
+member {
+  id: 0x4eba78a3
+  name: "validate_frames"
+  type_id: 0x31983cc8
+  offset: 224
+}
+member {
+  id: 0x1c59f3ef
+  name: "validate_scan_mask"
+  type_id: 0x348f359a
+  offset: 256
+}
+member {
+  id: 0x42dff916
+  name: "validate_trigger"
+  type_id: 0x2c61a903
+  offset: 768
+}
+member {
+  id: 0xe6a3222b
+  name: "validatetrans"
+  type_id: 0x1bab96d2
+  offset: 448
+}
+member {
+  id: 0xe2a9ed02
+  name: "validation_type"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0xa92524fe
+  name: "vals"
+  type_id: 0x8bda1c0f
+}
+member {
+  id: 0xa9bb3229
+  name: "vals"
+  type_id: 0x15c52c92
+  offset: 12224
+}
+member {
+  id: 0xa00127d6
+  name: "value"
+  type_id: 0x097a80cb
+  offset: 384
+}
+member {
+  id: 0xa003fb8f
+  name: "value"
+  type_id: 0x0baa70a7
+  offset: 32
+}
+member {
+  id: 0xa007f621
+  name: "value"
+  type_id: 0x0faae5b1
+}
+member {
+  id: 0xa007fb1a
+  name: "value"
+  type_id: 0x0faae5b1
+  offset: 32
+}
+member {
+  id: 0xa00cdbc3
+  name: "value"
+  type_id: 0x0483e6f8
+  offset: 64
+}
+member {
+  id: 0xa010e863
+  name: "value"
+  type_id: 0x18bd6530
+  offset: 128
+}
+member {
+  id: 0xa019b1fd
+  name: "value"
+  type_id: 0x11ed39a5
+}
+member {
+  id: 0xa0210c77
+  name: "value"
+  type_id: 0x295c7202
+  offset: 48
+}
+member {
+  id: 0xa035a600
+  name: "value"
+  type_id: 0x3dfac40e
+}
+member {
+  id: 0xa04dd9a2
+  name: "value"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xa04dde65
+  name: "value"
+  type_id: 0x4585663f
+  offset: 320
+}
+member {
+  id: 0xa055d970
+  name: "value"
+  type_id: 0x5d8155a5
+  offset: 64
+}
+member {
+  id: 0xa056c750
+  name: "value"
+  type_id: 0x5e9b9471
+}
+member {
+  id: 0xa0732f23
+  name: "value"
+  type_id: 0x7b73e7a1
+}
+member {
+  id: 0xa07ec19f
+  name: "value"
+  type_id: 0x769b2271
+  offset: 640
+}
+member {
+  id: 0xa07ed8b5
+  name: "value"
+  type_id: 0x768d035b
+  offset: 576
+}
+member {
+  id: 0xa099117b
+  name: "value"
+  type_id: 0x914dbfdc
+}
+member {
+  id: 0xa09a7ff7
+  name: "value"
+  type_id: 0x92233392
+}
+member {
+  id: 0xa0bbb098
+  name: "value"
+  type_id: 0xb3e7bac9
+  offset: 8
+}
+member {
+  id: 0xa0c154ef
+  name: "value"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xa0c72311
+  name: "value"
+  type_id: 0xcf7fd541
+}
+member {
+  id: 0xa0d5322b
+  name: "value"
+  type_id: 0xdd6eef0a
+}
+member {
+  id: 0xa0d5e4d8
+  name: "value"
+  type_id: 0xddb527d3
+  offset: 32
+}
+member {
+  id: 0xa0e5aeb3
+  name: "value"
+  type_id: 0xedf277ba
+}
+member {
+  id: 0xa0ea2e88
+  name: "value"
+  type_id: 0xe276adef
+  offset: 64
+}
+member {
+  id: 0xa0ee727b
+  name: "value"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xdf220102
+  name: "value"
+  type_id: 0x33756485
+  bitsize: 11
+}
+member {
+  id: 0xdf54f100
+  name: "value"
+  type_id: 0x4585663f
+  bitsize: 11
+}
+member {
+  id: 0x81891576
+  name: "value64"
+  type_id: 0xdd6eef0a
+}
+member {
+  id: 0x0e144f7f
+  name: "value_offset"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0xca15b5cd
+  name: "value_ptr"
+  type_id: 0x04c1fa3e
+}
+member {
+  id: 0xca24e789
+  name: "value_ptr"
+  type_id: 0x3593bec8
+}
+member {
+  id: 0xd046f79d
+  name: "value_size"
+  type_id: 0xc9082b19
+  offset: 256
+}
+member {
+  id: 0xd069d543
+  name: "value_size"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x0f78a515
+  name: "values"
+  type_id: 0xedf277ba
+  offset: 192
+}
+member {
+  id: 0x0f98efcc
+  name: "values"
+  type_id: 0x0db25a6d
+  offset: 704
+}
+member {
+  id: 0x0fa1dd87
+  name: "values"
+  type_id: 0x3489645d
+  offset: 4160
+}
+member {
+  id: 0x0fac9b76
+  name: "values"
+  type_id: 0x39cc14ac
+  offset: 192
+}
+member {
+  id: 0xc9c0df89
+  name: "values_cnt"
+  type_id: 0xf435685e
+  offset: 320
+}
+member {
+  id: 0xeae03519
+  name: "var"
+  type_id: 0x72197497
+  offset: 896
+}
+member {
+  id: 0xeaf50b23
+  name: "var"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x897f2e8e
+  name: "var1_dw"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x7790fcf1
+  name: "var2_w"
+  type_id: 0xe8034002
+  offset: 32
+}
+member {
+  id: 0xbec140a3
+  name: "var3_w"
+  type_id: 0xe8034002
+  offset: 48
+}
+member {
+  id: 0xa7a1967e
+  name: "var_off"
+  type_id: 0x2d645042
+  offset: 256
+}
+member {
+  id: 0xee747e95
+  name: "vb2_buf"
+  type_id: 0x98f1d602
+}
+member {
+  id: 0x76ce568b
+  name: "vb2_queue"
+  type_id: 0x1a8d1bcb
+}
+member {
+  id: 0x0306d4bf
+  name: "vback_porch"
+  type_id: 0xd5e60968
+  offset: 672
+}
+member {
+  id: 0x031a3d77
+  name: "vback_porch"
+  type_id: 0xc9082b19
+  offset: 256
+}
+member {
+  id: 0xa3fdc05a
+  name: "vbackporch"
+  type_id: 0xe62ebf07
+  offset: 352
+}
+member {
+  id: 0xa6cf5d04
+  name: "vbat2ri_charging"
+  type_id: 0x375bae2f
+  offset: 3776
+}
+member {
+  id: 0x18405790
+  name: "vbat2ri_charging_size"
+  type_id: 0x6720d32f
+  offset: 3840
+}
+member {
+  id: 0x2cac7fc8
+  name: "vbat2ri_discharging"
+  type_id: 0x375bae2f
+  offset: 3648
+}
+member {
+  id: 0xa14629c6
+  name: "vbat2ri_discharging_size"
+  type_id: 0x6720d32f
+  offset: 3712
+}
+member {
+  id: 0x991c0e36
+  name: "vbat_uv"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x0a061bb7
+  name: "vbi"
+  type_id: 0x333c4bc7
+  offset: 256
+}
+member {
+  id: 0x0a06d301
+  name: "vbi"
+  type_id: 0x33f4564a
+}
+member {
+  id: 0xc787ee0c
+  name: "vbl"
+  type_id: 0x6cc6b2f2
+}
+member {
+  id: 0xfc21d322
+  name: "vbl_lock"
+  type_id: 0xf313e71a
+  offset: 3104
+}
+member {
+  id: 0x2ab87fb6
+  name: "vblank"
+  type_id: 0x0610b875
+  offset: 3008
+}
+member {
+  id: 0x058ab650
+  name: "vblank_disable_immediate"
+  type_id: 0x6d7f5ff6
+  offset: 2944
+}
+member {
+  id: 0x31d183ed
+  name: "vblank_event_list"
+  type_id: 0xd3c80119
+  offset: 3200
+}
+member {
+  id: 0x29831e44
+  name: "vblank_lo"
+  type_id: 0x295c7202
+  offset: 32
+}
+member {
+  id: 0x86da54cc
+  name: "vblank_time_lock"
+  type_id: 0xf313e71a
+  offset: 3072
+}
+member {
+  id: 0x83d58286
+  name: "vborder"
+  type_id: 0x295c7202
+  offset: 112
+}
+member {
+  id: 0xe35bcbb7
+  name: "vbr_enable"
+  type_id: 0x6d7f5ff6
+  offset: 960
+}
+member {
+  id: 0xa8b1a153
+  name: "vbus"
+  type_id: 0x6d7f5ff6
+  offset: 7552
+}
+member {
+  id: 0x7dc18b99
+  name: "vbus_charge"
+  type_id: 0x6d7f5ff6
+  offset: 2240
+}
+member {
+  id: 0x099227c5
+  name: "vbus_draw"
+  type_id: 0x2fe3d7ba
+  offset: 256
+}
+member {
+  id: 0xf13b54fd
+  name: "vbus_nb"
+  type_id: 0x449a775b
+  offset: 640
+}
+member {
+  id: 0xf456429e
+  name: "vbus_never_low"
+  type_id: 0x6d7f5ff6
+  offset: 2224
+}
+member {
+  id: 0x0b369749
+  name: "vbus_present"
+  type_id: 0x6d7f5ff6
+  offset: 2208
+}
+member {
+  id: 0x3fa6c907
+  name: "vbus_session"
+  type_id: 0x2fc1720f
+  offset: 192
+}
+member {
+  id: 0xf1c764b7
+  name: "vbus_source"
+  type_id: 0x6d7f5ff6
+  offset: 2232
+}
+member {
+  id: 0xaafd2a52
+  name: "vbus_vsafe0v"
+  type_id: 0x6d7f5ff6
+  offset: 2216
+}
+member {
+  id: 0xd309fdc6
+  name: "vbus_vsafe0v"
+  type_id: 0x5d8155a5
+  offset: 66
+  bitsize: 1
+}
+member {
+  id: 0xdf3f679f
+  name: "vbus_work"
+  type_id: 0x1f3c8679
+  offset: 7616
+}
+member {
+  id: 0xf6f15b5e
+  name: "vbv_buffer_size"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x969abb91
+  name: "vc"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x99f376cb
+  name: "vcc"
+  type_id: 0x176bad6c
+}
+member {
+  id: 0x941f433e
+  name: "vccq"
+  type_id: 0x176bad6c
+  offset: 64
+}
+member {
+  id: 0x146a6f22
+  name: "vccq2"
+  type_id: 0x176bad6c
+  offset: 128
+}
+member {
+  id: 0x1fc336f7
+  name: "vclock_index"
+  type_id: 0x13580d6c
+  offset: 45312
+}
+member {
+  id: 0x9d280928
+  name: "vconn_role"
+  type_id: 0x8167e73b
+  offset: 1408
+}
+member {
+  id: 0x9d280cfe
+  name: "vconn_role"
+  type_id: 0x8167e73b
+  offset: 7648
+}
+member {
+  id: 0x248a3848
+  name: "vconn_set"
+  type_id: 0x2e0761ed
+  offset: 192
+}
+member {
+  id: 0xa936a2d5
+  name: "vcpu"
+  type_id: 0x08dcfb76
+}
+member {
+  id: 0xa936a512
+  name: "vcpu"
+  type_id: 0x08dcfb76
+  offset: 320
+}
+member {
+  id: 0xcd6e2d79
+  name: "vcpu_array"
+  type_id: 0x80c20070
+  offset: 18176
+}
+member {
+  id: 0xf58a324e
+  name: "vcpu_debug_state"
+  type_id: 0x590c6dd8
+  offset: 15488
+}
+member {
+  id: 0x7c4a52b5
+  name: "vcpu_id"
+  type_id: 0x6720d32f
+  offset: 288
+}
+member {
+  id: 0x7c4a5fae
+  name: "vcpu_id"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0xbcb323c9
+  name: "vcpu_idx"
+  type_id: 0x6720d32f
+  offset: 320
+}
+member {
+  id: 0x522a42f5
+  name: "vd"
+  type_id: 0xd97383e4
+  offset: 1152
+}
+member {
+  id: 0xcb07581f
+  name: "vdd"
+  type_id: 0xc93e017b
+  offset: 32
+}
+member {
+  id: 0x4f785b50
+  name: "vdd_hba"
+  type_id: 0x176bad6c
+  offset: 192
+}
+member {
+  id: 0xebd4d055
+  name: "vdev"
+  type_id: 0x242fbc95
+}
+member {
+  id: 0xebd9c964
+  name: "vdev"
+  type_id: 0x2936263d
+  offset: 256
+}
+member {
+  id: 0xebf1169b
+  name: "vdev"
+  type_id: 0x01e0b0cf
+  offset: 128
+}
+member {
+  id: 0xddb6428e
+  name: "vdisplay"
+  type_id: 0xe8034002
+  offset: 112
+}
+member {
+  id: 0xddcf0c71
+  name: "vdisplay"
+  type_id: 0x914dbfdc
+  offset: 112
+}
+member {
+  id: 0xef1798e1
+  name: "vdiv"
+  type_id: 0x295c7202
+  offset: 96
+}
+member {
+  id: 0x1f266411
+  name: "vdm"
+  type_id: 0x2e55e7a6
+  offset: 192
+}
+member {
+  id: 0x6011d4c2
+  name: "vdm_retries"
+  type_id: 0xc9082b19
+  offset: 11104
+}
+member {
+  id: 0xc4350055
+  name: "vdm_sm_running"
+  type_id: 0x6d7f5ff6
+  offset: 6664
+}
+member {
+  id: 0x46a0ec2d
+  name: "vdm_state"
+  type_id: 0xd2f5a3bb
+  offset: 11072
+}
+member {
+  id: 0x06868f0a
+  name: "vdm_state_machine"
+  type_id: 0x3835dcc0
+  offset: 4544
+}
+member {
+  id: 0x0bd07878
+  name: "vdm_state_machine_timer"
+  type_id: 0xcd7704bf
+  offset: 3968
+}
+member {
+  id: 0x9a4550ac
+  name: "vdo"
+  type_id: 0xc9082b19
+  offset: 7360
+}
+member {
+  id: 0x9a455cdf
+  name: "vdo"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x9aacd7b3
+  name: "vdo"
+  type_id: 0x2087fff2
+  offset: 96
+}
+member {
+  id: 0x2ad86005
+  name: "vdo_count"
+  type_id: 0x295c7202
+  offset: 11360
+}
+member {
+  id: 0x02b3bb9e
+  name: "vdo_data"
+  type_id: 0x5a8c92f7
+  offset: 11136
+}
+member {
+  id: 0x91c81583
+  name: "vdo_retry"
+  type_id: 0xc9082b19
+  offset: 11392
+}
+member {
+  id: 0xef4220d5
+  name: "vdso"
+  type_id: 0x18bd6530
+  offset: 192
+}
+member {
+  id: 0x5afc55ba
+  name: "vdso_clock_mode"
+  type_id: 0x39e70eca
+  offset: 640
+}
+member {
+  id: 0x831d3c48
+  name: "vector"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0x8367d3d9
+  name: "vector"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x9dc6f783
+  name: "vegas"
+  type_id: 0x3e3a5032
+}
+member {
+  id: 0x7a50f19c
+  name: "vendor"
+  type_id: 0x3e10b518
+  offset: 1984
+}
+member {
+  id: 0x7a84c23b
+  name: "vendor"
+  type_id: 0xea2d574d
+  offset: 48
+}
+member {
+  id: 0x7a86e471
+  name: "vendor"
+  type_id: 0xe8034002
+  offset: 80
+}
+member {
+  id: 0x7a86ee53
+  name: "vendor"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0x7a88c029
+  name: "vendor"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x7a88ca65
+  name: "vendor"
+  type_id: 0xe62ebf07
+  offset: 448
+}
+member {
+  id: 0x7a88cd12
+  name: "vendor"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x7aa7d4a1
+  name: "vendor"
+  type_id: 0xc93e017b
+  offset: 7472
+}
+member {
+  id: 0x7aa7dc1c
+  name: "vendor"
+  type_id: 0xc93e017b
+  offset: 480
+}
+member {
+  id: 0x7aa7ddac
+  name: "vendor"
+  type_id: 0xc93e017b
+}
+member {
+  id: 0x7ac9a674
+  name: "vendor"
+  type_id: 0xa745d9ba
+}
+member {
+  id: 0xb9270675
+  name: "vendor_cmds"
+  type_id: 0x3131917d
+  offset: 9344
+}
+member {
+  id: 0xdddbb481
+  name: "vendor_commands"
+  type_id: 0x3a452bd5
+  offset: 10944
+}
+member {
+  id: 0xba099737
+  name: "vendor_elems"
+  type_id: 0x27a91db4
+  offset: 896
+}
+member {
+  id: 0xc85843b6
+  name: "vendor_events"
+  type_id: 0x3deeb8f4
+  offset: 11008
+}
+member {
+  id: 0xba785216
+  name: "vendor_hyp_bmap"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x0b0b87f3
+  name: "vendor_id"
+  type_id: 0x42201dce
+  offset: 96
+}
+member {
+  id: 0x0baf80d2
+  name: "vendor_id"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x0baf8433
+  name: "vendor_id"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x0bdb8234
+  name: "vendor_id"
+  type_id: 0x92233392
+  offset: 2816
+}
+member {
+  id: 0xc240aa08
+  name: "vendor_load"
+  type_id: 0x2c815a87
+  offset: 704
+}
+member {
+  id: 0x4c1baf7d
+  name: "vendor_name"
+  type_id: 0x42201dce
+  offset: 160
+}
+member {
+  id: 0x4c6798c8
+  name: "vendor_name"
+  type_id: 0x3e10b518
+  offset: 6336
+}
+member {
+  id: 0xfd44cde8
+  name: "vendor_oui"
+  type_id: 0x1cd62a6b
+  offset: 296
+}
+member {
+  id: 0x24e04a13
+  name: "vendor_pn"
+  type_id: 0x42201dce
+  offset: 320
+}
+member {
+  id: 0xd3926a7e
+  name: "vendor_rev"
+  type_id: 0x825ecc45
+  offset: 448
+}
+member {
+  id: 0xa9bb8625
+  name: "vendor_sn"
+  type_id: 0x42201dce
+  offset: 32
+}
+member {
+  id: 0x4dd6839e
+  name: "vendor_type"
+  type_id: 0x0baa70a7
+  offset: 160
+}
+member {
+  id: 0x8ea2d68d
+  name: "vendor_unload"
+  type_id: 0x2ce64f50
+  offset: 768
+}
+member {
+  id: 0x2e0a0fbc
+  name: "vendorid"
+  type_id: 0x914dbfdc
+}
+member {
+  id: 0xef4c0c86
+  name: "ver"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0xefac5339
+  name: "ver"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x816935ff
+  name: "verification_time"
+  type_id: 0x92233392
+  offset: 76032
+}
+member {
+  id: 0x3ddf9814
+  name: "verified_insns"
+  type_id: 0xc9082b19
+  offset: 7360
+}
+member {
+  id: 0x65238534
+  name: "verifier_zext"
+  type_id: 0x6d7f5ff6
+  offset: 1216
+}
+member {
+  id: 0xf586d6a4
+  name: "verify"
+  type_id: 0x2ec36b1e
+  offset: 320
+}
+member {
+  id: 0xf587f129
+  name: "verify"
+  type_id: 0x2fe9a253
+  offset: 1344
+}
+member {
+  id: 0x55566082
+  name: "verify_crc_source"
+  type_id: 0x2ed8dfef
+  offset: 1088
+}
+member {
+  id: 0x71d0eed7
+  name: "verify_planes_array"
+  type_id: 0x2f03dabb
+}
+member {
+  id: 0x397ee7b7
+  name: "verify_port"
+  type_id: 0x2de1d645
+  offset: 1408
+}
+member {
+  id: 0x2d50e6ed
+  name: "version"
+  type_id: 0xb3e7bac9
+  offset: 4
+  bitsize: 4
+}
+member {
+  id: 0x40e32c48
+  name: "version"
+  type_id: 0x914dbfdc
+  offset: 12
+  bitsize: 2
+}
+member {
+  id: 0xa606165a
+  name: "version"
+  type_id: 0x6720d32f
+  offset: 1408
+}
+member {
+  id: 0xa624b11c
+  name: "version"
+  type_id: 0x4585663f
+}
+member {
+  id: 0xa624b9d5
+  name: "version"
+  type_id: 0x4585663f
+  offset: 192
+}
+member {
+  id: 0xa624bdb0
+  name: "version"
+  type_id: 0x4585663f
+  offset: 6080
+}
+member {
+  id: 0xa63beff4
+  name: "version"
+  type_id: 0x5adf57ae
+  offset: 288
+}
+member {
+  id: 0xa63cb814
+  name: "version"
+  type_id: 0x5d8155a5
+  offset: 32
+}
+member {
+  id: 0xa6486808
+  name: "version"
+  type_id: 0x295c7202
+}
+member {
+  id: 0xa6486a65
+  name: "version"
+  type_id: 0x295c7202
+  offset: 144
+}
+member {
+  id: 0xa648fc2c
+  name: "version"
+  type_id: 0x29ccb7ed
+  offset: 64
+}
+member {
+  id: 0xa65f23ea
+  name: "version"
+  type_id: 0x3e10b518
+  offset: 1728
+}
+member {
+  id: 0xa65f2d0d
+  name: "version"
+  type_id: 0x3e10b518
+  offset: 128
+}
+member {
+  id: 0xa66a9aeb
+  name: "version"
+  type_id: 0x0baa70a7
+  offset: 64
+}
+member {
+  id: 0xa68711dd
+  name: "version"
+  type_id: 0xe62ebf07
+  offset: 512
+}
+member {
+  id: 0xa68717fe
+  name: "version"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xa6871ac5
+  name: "version"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xa6871cbc
+  name: "version"
+  type_id: 0xe62ebf07
+  offset: 640
+}
+member {
+  id: 0xa6871e24
+  name: "version"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0xa689373a
+  name: "version"
+  type_id: 0xe8034002
+}
+member {
+  id: 0xa6893bf7
+  name: "version"
+  type_id: 0xe8034002
+  offset: 112
+}
+member {
+  id: 0xa6893bfb
+  name: "version"
+  type_id: 0xe8034002
+  offset: 48
+}
+member {
+  id: 0xa69f80b8
+  name: "version"
+  type_id: 0xfeb89bd6
+  offset: 1560
+}
+member {
+  id: 0xa6a83559
+  name: "version"
+  type_id: 0xc9082b19
+  offset: 3520
+}
+member {
+  id: 0xa6d2d29c
+  name: "version"
+  type_id: 0xb3e7bac9
+  offset: 9232
+}
+member {
+  id: 0xa6d2d3c0
+  name: "version"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0xa6d2d826
+  name: "version"
+  type_id: 0xb3e7bac9
+  offset: 8
+}
+member {
+  id: 0xa6d2dd7e
+  name: "version"
+  type_id: 0xb3e7bac9
+  offset: 16
+}
+member {
+  id: 0xa6d2deda
+  name: "version"
+  type_id: 0xb3e7bac9
+  offset: 1120
+}
+member {
+  id: 0xa6f07398
+  name: "version"
+  type_id: 0x914dbfdc
+  offset: 7344
+}
+member {
+  id: 0xa6f079c5
+  name: "version"
+  type_id: 0x914dbfdc
+}
+member {
+  id: 0x88d1b3ba
+  name: "version_get"
+  type_id: 0x2e083ab8
+}
+member {
+  id: 0x7f926278
+  name: "vertical_position"
+  type_id: 0x04a177c7
+  offset: 32
+}
+member {
+  id: 0x09f00e2d
+  name: "vertical_scale"
+  type_id: 0xb3e7bac9
+  offset: 9224
+}
+member {
+  id: 0xef26e14a
+  name: "vertical_size"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0x444fc004
+  name: "vet_description"
+  type_id: 0x2e110a3d
+  offset: 192
+}
+member {
+  id: 0xcf559a09
+  name: "vf"
+  type_id: 0x295c7202
+  offset: 64
+}
+member {
+  id: 0xcf9aec25
+  name: "vf"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xcfed83e4
+  name: "vf"
+  type_id: 0x914dbfdc
+  offset: 48
+}
+member {
+  id: 0x69a19ce5
+  name: "vf_device"
+  type_id: 0x914dbfdc
+  offset: 192
+}
+member {
+  id: 0xc3ccf4e5
+  name: "vfh"
+  type_id: 0xec7ec9b2
+}
+member {
+  id: 0x2a597328
+  name: "vfl_dir"
+  type_id: 0x81cf889d
+  offset: 9440
+}
+member {
+  id: 0xc4c63eb9
+  name: "vfl_type"
+  type_id: 0xbb683ae4
+  offset: 9408
+}
+member {
+  id: 0x596498ea
+  name: "vfmax"
+  type_id: 0xe8034002
+  offset: 1056
+}
+member {
+  id: 0xf04480ba
+  name: "vfmin"
+  type_id: 0xe8034002
+  offset: 1040
+}
+member {
+  id: 0xf18363a7
+  name: "vfork_done"
+  type_id: 0x0562c566
+  offset: 14336
+}
+member {
+  id: 0xfc548b06
+  name: "vfreq_aspect"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0xf3a4ce38
+  name: "vfront_porch"
+  type_id: 0xc9082b19
+  offset: 224
+}
+member {
+  id: 0xf3b82a4c
+  name: "vfront_porch"
+  type_id: 0xd5e60968
+  offset: 576
+}
+member {
+  id: 0x4c98d106
+  name: "vfrontporch"
+  type_id: 0xe62ebf07
+  offset: 288
+}
+member {
+  id: 0x8851157c
+  name: "vfs_inode"
+  type_id: 0x4456a43e
+  offset: 1024
+}
+member {
+  id: 0xf510916c
+  name: "vgic"
+  type_id: 0x2c25c966
+  offset: 384
+}
+member {
+  id: 0xaa37d774
+  name: "vgic_ap0r"
+  type_id: 0xbe0f19dc
+  offset: 96
+}
+member {
+  id: 0x47207a3e
+  name: "vgic_ap1r"
+  type_id: 0xbe0f19dc
+  offset: 224
+}
+member {
+  id: 0xc9dbb39f
+  name: "vgic_apr"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0x76772152
+  name: "vgic_cpu"
+  type_id: 0xe46534dd
+  offset: 27968
+}
+member {
+  id: 0x082c701d
+  name: "vgic_cpu_base"
+  type_id: 0x1b4ba19a
+}
+member {
+  id: 0xc573cedf
+  name: "vgic_dist_base"
+  type_id: 0x1b4ba19a
+  offset: 192
+}
+member {
+  id: 0x4a8c149d
+  name: "vgic_hcr"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0x0f936dd3
+  name: "vgic_its_base"
+  type_id: 0x1b4ba19a
+}
+member {
+  id: 0xa73178a4
+  name: "vgic_lr"
+  type_id: 0x01e90d51
+  offset: 96
+}
+member {
+  id: 0xa75822b6
+  name: "vgic_lr"
+  type_id: 0x68bb0e75
+  offset: 384
+}
+member {
+  id: 0xe66fe569
+  name: "vgic_model"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x28fa73a3
+  name: "vgic_sre"
+  type_id: 0xc9082b19
+  offset: 64
+}
+member {
+  id: 0xd491835d
+  name: "vgic_v2"
+  type_id: 0x020c6b41
+}
+member {
+  id: 0x166fabb0
+  name: "vgic_v3"
+  type_id: 0xbfc414f5
+}
+member {
+  id: 0x38bbfe42
+  name: "vgic_vmcr"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0x4e9808a4
+  name: "vht_cap"
+  type_id: 0x8667cdb7
+  offset: 416
+}
+member {
+  id: 0xc4d57bf4
+  name: "vht_cap_info"
+  type_id: 0x0baa70a7
+}
+member {
+  id: 0x4d0af2ad
+  name: "vht_capa_mod_mask"
+  type_id: 0x39374fc5
+  offset: 10624
+}
+member {
+  id: 0x858da26f
+  name: "vht_mcs"
+  type_id: 0x8a756038
+  offset: 64
+}
+member {
+  id: 0x41db1bb7
+  name: "vht_supported"
+  type_id: 0x6d7f5ff6
+}
+member {
+  id: 0xe1d0d518
+  name: "vic"
+  type_id: 0x295c7202
+  offset: 96
+}
+member {
+  id: 0x20a86b39
+  name: "vid"
+  type_id: 0x914dbfdc
+}
+member {
+  id: 0x20d123a7
+  name: "vid"
+  type_id: 0xe8034002
+  offset: 24
+}
+member {
+  id: 0x6992e1ac
+  name: "vid_list"
+  type_id: 0xd3c80119
+  offset: 1280
+}
+member {
+  id: 0x4e598de8
+  name: "video"
+  type_id: 0x3e44cfd7
+  offset: 192
+}
+member {
+  id: 0x333d7fad
+  name: "video_code"
+  type_id: 0x5d8155a5
+  offset: 352
+}
+member {
+  id: 0x7459b44c
+  name: "video_latency"
+  type_id: 0x75617428
+  offset: 14432
+}
+member {
+  id: 0xf98fda20
+  name: "video_parameter_set_id"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0xb5ba2603
+  name: "vidioc_create_bufs"
+  type_id: 0x2c64bf05
+  offset: 3520
+}
+member {
+  id: 0xf3ceb1cd
+  name: "vidioc_decoder_cmd"
+  type_id: 0x2c676160
+  offset: 6080
+}
+member {
+  id: 0x045363e1
+  name: "vidioc_default"
+  type_id: 0x22c8bf71
+  offset: 7552
+}
+member {
+  id: 0x8790a7dd
+  name: "vidioc_dqbuf"
+  type_id: 0x2c67d0a1
+  offset: 3456
+}
+member {
+  id: 0xb8b656e0
+  name: "vidioc_dv_timings_cap"
+  type_id: 0x2c6725f7
+  offset: 7232
+}
+member {
+  id: 0xf97db5c6
+  name: "vidioc_encoder_cmd"
+  type_id: 0x2c6633cf
+  offset: 5952
+}
+member {
+  id: 0xedc36e80
+  name: "vidioc_enum_dv_timings"
+  type_id: 0x2c656cdf
+  offset: 7168
+}
+member {
+  id: 0x9f3196b6
+  name: "vidioc_enum_fmt_meta_cap"
+  type_id: 0x2c672571
+  offset: 384
+}
+member {
+  id: 0x31516e14
+  name: "vidioc_enum_fmt_meta_out"
+  type_id: 0x2c672571
+  offset: 448
+}
+member {
+  id: 0xcc4843c9
+  name: "vidioc_enum_fmt_sdr_cap"
+  type_id: 0x2c672571
+  offset: 256
+}
+member {
+  id: 0xaa75cff2
+  name: "vidioc_enum_fmt_sdr_out"
+  type_id: 0x2c672571
+  offset: 320
+}
+member {
+  id: 0xf91a95af
+  name: "vidioc_enum_fmt_vid_cap"
+  type_id: 0x2c672571
+  offset: 64
+}
+member {
+  id: 0x4bda91a8
+  name: "vidioc_enum_fmt_vid_out"
+  type_id: 0x2c672571
+  offset: 192
+}
+member {
+  id: 0xa52b74ae
+  name: "vidioc_enum_fmt_vid_overlay"
+  type_id: 0x2c672571
+  offset: 128
+}
+member {
+  id: 0xf1ce4983
+  name: "vidioc_enum_frameintervals"
+  type_id: 0x2c66e8e6
+  offset: 6912
+}
+member {
+  id: 0xdefaa473
+  name: "vidioc_enum_framesizes"
+  type_id: 0x2c675b4f
+  offset: 6848
+}
+member {
+  id: 0x40fc6763
+  name: "vidioc_enum_freq_bands"
+  type_id: 0x2c6537e9
+  offset: 6592
+}
+member {
+  id: 0x21610571
+  name: "vidioc_enum_input"
+  type_id: 0x2c67561c
+  offset: 4160
+}
+member {
+  id: 0x2ea84b30
+  name: "vidioc_enum_output"
+  type_id: 0x2c6508b7
+  offset: 4352
+}
+member {
+  id: 0x48732eff
+  name: "vidioc_enumaudio"
+  type_id: 0x2c6757ed
+  offset: 5056
+}
+member {
+  id: 0xa696d0cf
+  name: "vidioc_enumaudout"
+  type_id: 0x2c67259f
+  offset: 5248
+}
+member {
+  id: 0xa27fb559
+  name: "vidioc_expbuf"
+  type_id: 0x2c652980
+  offset: 3392
+}
+member {
+  id: 0x7dba3a99
+  name: "vidioc_g_audio"
+  type_id: 0x2c6757ed
+  offset: 5120
+}
+member {
+  id: 0x4f3a7dbe
+  name: "vidioc_g_audout"
+  type_id: 0x2c67259f
+  offset: 5312
+}
+member {
+  id: 0xbe9a4edb
+  name: "vidioc_g_ctrl"
+  type_id: 0x2c654951
+  offset: 4672
+}
+member {
+  id: 0xa0e26544
+  name: "vidioc_g_dv_timings"
+  type_id: 0x2c65452b
+  offset: 7040
+}
+member {
+  id: 0x8afdda9f
+  name: "vidioc_g_edid"
+  type_id: 0x2c67289d
+  offset: 7296
+}
+member {
+  id: 0x6c09af1c
+  name: "vidioc_g_enc_index"
+  type_id: 0x2c6661c1
+  offset: 5888
+}
+member {
+  id: 0xeab1e892
+  name: "vidioc_g_ext_ctrls"
+  type_id: 0x2c6649d9
+  offset: 4800
+}
+member {
+  id: 0x0c4cf59b
+  name: "vidioc_g_fbuf"
+  type_id: 0x2c67cc94
+  offset: 3712
+}
+member {
+  id: 0x59a6fb4f
+  name: "vidioc_g_fmt_meta_cap"
+  type_id: 0x2c6550de
+  offset: 1280
+}
+member {
+  id: 0xb4c31e36
+  name: "vidioc_g_fmt_meta_out"
+  type_id: 0x2c6550de
+  offset: 1344
+}
+member {
+  id: 0xaa03284a
+  name: "vidioc_g_fmt_sdr_cap"
+  type_id: 0x2c6550de
+  offset: 1152
+}
+member {
+  id: 0x370ea501
+  name: "vidioc_g_fmt_sdr_out"
+  type_id: 0x2c6550de
+  offset: 1216
+}
+member {
+  id: 0x4b0834b2
+  name: "vidioc_g_fmt_sliced_vbi_cap"
+  type_id: 0x2c6550de
+  offset: 896
+}
+member {
+  id: 0x969ae6ea
+  name: "vidioc_g_fmt_sliced_vbi_out"
+  type_id: 0x2c6550de
+  offset: 960
+}
+member {
+  id: 0xfd7675fb
+  name: "vidioc_g_fmt_vbi_cap"
+  type_id: 0x2c6550de
+  offset: 768
+}
+member {
+  id: 0x9454a378
+  name: "vidioc_g_fmt_vbi_out"
+  type_id: 0x2c6550de
+  offset: 832
+}
+member {
+  id: 0xb7f94c1c
+  name: "vidioc_g_fmt_vid_cap"
+  type_id: 0x2c6550de
+  offset: 512
+}
+member {
+  id: 0xf2544e62
+  name: "vidioc_g_fmt_vid_cap_mplane"
+  type_id: 0x2c6550de
+  offset: 1024
+}
+member {
+  id: 0x39cd0966
+  name: "vidioc_g_fmt_vid_out"
+  type_id: 0x2c6550de
+  offset: 640
+}
+member {
+  id: 0x51c05ca6
+  name: "vidioc_g_fmt_vid_out_mplane"
+  type_id: 0x2c6550de
+  offset: 1088
+}
+member {
+  id: 0x6ccf5740
+  name: "vidioc_g_fmt_vid_out_overlay"
+  type_id: 0x2c6550de
+  offset: 704
+}
+member {
+  id: 0xa1d51754
+  name: "vidioc_g_fmt_vid_overlay"
+  type_id: 0x2c6550de
+  offset: 576
+}
+member {
+  id: 0x98d2efb1
+  name: "vidioc_g_frequency"
+  type_id: 0x2c67422c
+  offset: 6464
+}
+member {
+  id: 0xd4a1c386
+  name: "vidioc_g_input"
+  type_id: 0x2c67a5b1
+  offset: 4224
+}
+member {
+  id: 0x700a5b0c
+  name: "vidioc_g_jpegcomp"
+  type_id: 0x2c6504f9
+  offset: 5760
+}
+member {
+  id: 0xb54d78ab
+  name: "vidioc_g_modulator"
+  type_id: 0x2c65ceb4
+  offset: 5440
+}
+member {
+  id: 0x03ceb473
+  name: "vidioc_g_output"
+  type_id: 0x2c67a5b1
+  offset: 4416
+}
+member {
+  id: 0x9aff527b
+  name: "vidioc_g_parm"
+  type_id: 0x2c64ed10
+  offset: 6208
+}
+member {
+  id: 0x337689c4
+  name: "vidioc_g_pixelaspect"
+  type_id: 0x2c60498c
+  offset: 5568
+}
+member {
+  id: 0xa145c7f3
+  name: "vidioc_g_selection"
+  type_id: 0x2c67ca15
+  offset: 5632
+}
+member {
+  id: 0xdeddfdf2
+  name: "vidioc_g_sliced_vbi_cap"
+  type_id: 0x2c654423
+  offset: 6656
+}
+member {
+  id: 0xab31c8b9
+  name: "vidioc_g_std"
+  type_id: 0x2c66e86b
+  offset: 3968
+}
+member {
+  id: 0x37ef1f21
+  name: "vidioc_g_tuner"
+  type_id: 0x2c65289d
+  offset: 6336
+}
+member {
+  id: 0x529c76c4
+  name: "vidioc_log_status"
+  type_id: 0x2c661aa7
+  offset: 6720
+}
+member {
+  id: 0x7176e130
+  name: "vidioc_overlay"
+  type_id: 0x2c6242f1
+  offset: 3648
+}
+member {
+  id: 0x75a1c2be
+  name: "vidioc_prepare_buf"
+  type_id: 0x2c67d0a1
+  offset: 3584
+}
+member {
+  id: 0xfdf5b9b3
+  name: "vidioc_qbuf"
+  type_id: 0x2c67d0a1
+  offset: 3328
+}
+member {
+  id: 0x6ffb57c4
+  name: "vidioc_query_dv_timings"
+  type_id: 0x2c65452b
+  offset: 7104
+}
+member {
+  id: 0xdd907d66
+  name: "vidioc_query_ext_ctrl"
+  type_id: 0x2c66a9e0
+  offset: 4608
+}
+member {
+  id: 0xeb4d4a57
+  name: "vidioc_querybuf"
+  type_id: 0x2c67d0a1
+  offset: 3264
+}
+member {
+  id: 0x5de47b90
+  name: "vidioc_querycap"
+  type_id: 0x2c6469ba
+}
+member {
+  id: 0xe58ca5e3
+  name: "vidioc_queryctrl"
+  type_id: 0x2c66db33
+  offset: 4544
+}
+member {
+  id: 0x12637e92
+  name: "vidioc_querymenu"
+  type_id: 0x2c66b44f
+  offset: 4992
+}
+member {
+  id: 0x4ebb3391
+  name: "vidioc_querystd"
+  type_id: 0x2c66e86b
+  offset: 4096
+}
+member {
+  id: 0xca155833
+  name: "vidioc_reqbufs"
+  type_id: 0x2c67ba27
+  offset: 3200
+}
+member {
+  id: 0x052f00fd
+  name: "vidioc_s_audio"
+  type_id: 0x2c65baf1
+  offset: 5184
+}
+member {
+  id: 0x547a0997
+  name: "vidioc_s_audout"
+  type_id: 0x2c65a66d
+  offset: 5376
+}
+member {
+  id: 0x4e86631f
+  name: "vidioc_s_ctrl"
+  type_id: 0x2c654951
+  offset: 4736
+}
+member {
+  id: 0x092540bf
+  name: "vidioc_s_dv_timings"
+  type_id: 0x2c65452b
+  offset: 6976
+}
+member {
+  id: 0x3a75e419
+  name: "vidioc_s_edid"
+  type_id: 0x2c67289d
+  offset: 7360
+}
+member {
+  id: 0x531f8410
+  name: "vidioc_s_ext_ctrls"
+  type_id: 0x2c6649d9
+  offset: 4864
+}
+member {
+  id: 0x24359537
+  name: "vidioc_s_fbuf"
+  type_id: 0x2c659c2f
+  offset: 3776
+}
+member {
+  id: 0x051b7cd2
+  name: "vidioc_s_fmt_meta_cap"
+  type_id: 0x2c6550de
+  offset: 2176
+}
+member {
+  id: 0x6fb82b21
+  name: "vidioc_s_fmt_meta_out"
+  type_id: 0x2c6550de
+  offset: 2240
+}
+member {
+  id: 0x22f0c321
+  name: "vidioc_s_fmt_sdr_cap"
+  type_id: 0x2c6550de
+  offset: 2048
+}
+member {
+  id: 0x23de4cfe
+  name: "vidioc_s_fmt_sdr_out"
+  type_id: 0x2c6550de
+  offset: 2112
+}
+member {
+  id: 0x9007fa62
+  name: "vidioc_s_fmt_sliced_vbi_cap"
+  type_id: 0x2c6550de
+  offset: 1792
+}
+member {
+  id: 0xddb8dafd
+  name: "vidioc_s_fmt_sliced_vbi_out"
+  type_id: 0x2c6550de
+  offset: 1856
+}
+member {
+  id: 0xce2b3cc2
+  name: "vidioc_s_fmt_vbi_cap"
+  type_id: 0x2c6550de
+  offset: 1664
+}
+member {
+  id: 0x0b27bc98
+  name: "vidioc_s_fmt_vbi_out"
+  type_id: 0x2c6550de
+  offset: 1728
+}
+member {
+  id: 0xfd801ebc
+  name: "vidioc_s_fmt_vid_cap"
+  type_id: 0x2c6550de
+  offset: 1408
+}
+member {
+  id: 0xd0b9f55e
+  name: "vidioc_s_fmt_vid_cap_mplane"
+  type_id: 0x2c6550de
+  offset: 1920
+}
+member {
+  id: 0xf0b2aa5f
+  name: "vidioc_s_fmt_vid_out"
+  type_id: 0x2c6550de
+  offset: 1536
+}
+member {
+  id: 0x3f75a6a5
+  name: "vidioc_s_fmt_vid_out_mplane"
+  type_id: 0x2c6550de
+  offset: 1984
+}
+member {
+  id: 0xd72a878a
+  name: "vidioc_s_fmt_vid_out_overlay"
+  type_id: 0x2c6550de
+  offset: 1600
+}
+member {
+  id: 0xa1199bfd
+  name: "vidioc_s_fmt_vid_overlay"
+  type_id: 0x2c6550de
+  offset: 1472
+}
+member {
+  id: 0x8d2e7443
+  name: "vidioc_s_frequency"
+  type_id: 0x2c65bf81
+  offset: 6528
+}
+member {
+  id: 0x5a4c45d6
+  name: "vidioc_s_hw_freq_seek"
+  type_id: 0x2c651f2c
+  offset: 6784
+}
+member {
+  id: 0xc22562af
+  name: "vidioc_s_input"
+  type_id: 0x2c6242f1
+  offset: 4288
+}
+member {
+  id: 0x29ef13c5
+  name: "vidioc_s_jpegcomp"
+  type_id: 0x2c652e34
+  offset: 5824
+}
+member {
+  id: 0x6484eb9c
+  name: "vidioc_s_modulator"
+  type_id: 0x2c651ca7
+  offset: 5504
+}
+member {
+  id: 0x2a4fd485
+  name: "vidioc_s_output"
+  type_id: 0x2c6242f1
+  offset: 4480
+}
+member {
+  id: 0xa0064237
+  name: "vidioc_s_parm"
+  type_id: 0x2c64ed10
+  offset: 6272
+}
+member {
+  id: 0xddd47044
+  name: "vidioc_s_selection"
+  type_id: 0x2c67ca15
+  offset: 5696
+}
+member {
+  id: 0x66d5c953
+  name: "vidioc_s_std"
+  type_id: 0x2c67759b
+  offset: 4032
+}
+member {
+  id: 0xb72b0902
+  name: "vidioc_s_tuner"
+  type_id: 0x2c65252d
+  offset: 6400
+}
+member {
+  id: 0xe04da70e
+  name: "vidioc_streamoff"
+  type_id: 0x2c610c70
+  offset: 3904
+}
+member {
+  id: 0x1744f936
+  name: "vidioc_streamon"
+  type_id: 0x2c610c70
+  offset: 3840
+}
+member {
+  id: 0x0e22510c
+  name: "vidioc_subscribe_event"
+  type_id: 0x2edb1db2
+  offset: 7424
+}
+member {
+  id: 0xdb32eee1
+  name: "vidioc_try_decoder_cmd"
+  type_id: 0x2c676160
+  offset: 6144
+}
+member {
+  id: 0x929f3628
+  name: "vidioc_try_encoder_cmd"
+  type_id: 0x2c6633cf
+  offset: 6016
+}
+member {
+  id: 0xd78cac2c
+  name: "vidioc_try_ext_ctrls"
+  type_id: 0x2c6649d9
+  offset: 4928
+}
+member {
+  id: 0x42668b36
+  name: "vidioc_try_fmt_meta_cap"
+  type_id: 0x2c6550de
+  offset: 3072
+}
+member {
+  id: 0x791b8e0b
+  name: "vidioc_try_fmt_meta_out"
+  type_id: 0x2c6550de
+  offset: 3136
+}
+member {
+  id: 0x868983ba
+  name: "vidioc_try_fmt_sdr_cap"
+  type_id: 0x2c6550de
+  offset: 2944
+}
+member {
+  id: 0x0632acb6
+  name: "vidioc_try_fmt_sdr_out"
+  type_id: 0x2c6550de
+  offset: 3008
+}
+member {
+  id: 0x5d24c0a1
+  name: "vidioc_try_fmt_sliced_vbi_cap"
+  type_id: 0x2c6550de
+  offset: 2688
+}
+member {
+  id: 0x2214767f
+  name: "vidioc_try_fmt_sliced_vbi_out"
+  type_id: 0x2c6550de
+  offset: 2752
+}
+member {
+  id: 0x73f153d2
+  name: "vidioc_try_fmt_vbi_cap"
+  type_id: 0x2c6550de
+  offset: 2560
+}
+member {
+  id: 0x3523cea1
+  name: "vidioc_try_fmt_vbi_out"
+  type_id: 0x2c6550de
+  offset: 2624
+}
+member {
+  id: 0xe2e196c2
+  name: "vidioc_try_fmt_vid_cap"
+  type_id: 0x2c6550de
+  offset: 2304
+}
+member {
+  id: 0x19446128
+  name: "vidioc_try_fmt_vid_cap_mplane"
+  type_id: 0x2c6550de
+  offset: 2816
+}
+member {
+  id: 0xd53e222e
+  name: "vidioc_try_fmt_vid_out"
+  type_id: 0x2c6550de
+  offset: 2432
+}
+member {
+  id: 0x13f8a84c
+  name: "vidioc_try_fmt_vid_out_mplane"
+  type_id: 0x2c6550de
+  offset: 2880
+}
+member {
+  id: 0x63b82bf9
+  name: "vidioc_try_fmt_vid_out_overlay"
+  type_id: 0x2c6550de
+  offset: 2496
+}
+member {
+  id: 0xb4297b4e
+  name: "vidioc_try_fmt_vid_overlay"
+  type_id: 0x2c6550de
+  offset: 2368
+}
+member {
+  id: 0x18e9d136
+  name: "vidioc_unsubscribe_event"
+  type_id: 0x2edb1db2
+  offset: 7488
+}
+member {
+  id: 0xce285914
+  name: "vif"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0xce737f6e
+  name: "vif"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0xc21c7538
+  name: "virt_base"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0xd60fe046
+  name: "virt_boundary_mask"
+  type_id: 0x33756485
+  offset: 4224
+}
+member {
+  id: 0xd60fe507
+  name: "virt_boundary_mask"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0xd60fe83c
+  name: "virt_boundary_mask"
+  type_id: 0x33756485
+  offset: 2496
+}
+member {
+  id: 0x6291401f
+  name: "virt_buf"
+  type_id: 0x0c6c61ad
+  offset: 3392
+}
+member {
+  id: 0xf3ee8263
+  name: "virt_devs"
+  type_id: 0x0811b858
+  offset: 512
+}
+member {
+  id: 0xf294dec5
+  name: "virt_reg_base"
+  type_id: 0x1bf16028
+  offset: 448
+}
+member {
+  id: 0x40e6d42e
+  name: "virt_to_phys"
+  type_id: 0x0b71f929
+  offset: 448
+}
+member {
+  id: 0x47f05b51
+  name: "virtmem"
+  type_id: 0xedf277ba
+  offset: 1536
+}
+member {
+  id: 0x48dc596f
+  name: "virtual"
+  type_id: 0x18bd6530
+}
+member {
+  id: 0x666c666b
+  name: "visible"
+  type_id: 0x6d7f5ff6
+  offset: 1024
+}
+member {
+  id: 0xd6d6ec44
+  name: "visit_gen"
+  type_id: 0x92233392
+  offset: 896
+}
+member {
+  id: 0x5816f37f
+  name: "visual"
+  type_id: 0xe62ebf07
+  offset: 288
+}
+member {
+  id: 0x588c38ae
+  name: "vl"
+  type_id: 0x7dc8196c
+  offset: 5504
+}
+member {
+  id: 0xd4351d46
+  name: "vl_onexec"
+  type_id: 0x7dc8196c
+  offset: 5568
+}
+member {
+  id: 0xf725a76b
+  name: "vlan"
+  type_id: 0x105131fa
+}
+member {
+  id: 0xf75387dc
+  name: "vlan"
+  type_id: 0x667c66a3
+  offset: 160
+}
+member {
+  id: 0xf7d3dc3c
+  name: "vlan"
+  type_id: 0xe62ebf07
+  offset: 288
+}
+member {
+  id: 0x99007466
+  name: "vlan_dei"
+  type_id: 0x914dbfdc
+  offset: 12
+  bitsize: 1
+}
+member {
+  id: 0x5f7b87c5
+  name: "vlan_devices_arrays"
+  type_id: 0x55c579f2
+  offset: 192
+}
+member {
+  id: 0xd711fa9a
+  name: "vlan_eth_type"
+  type_id: 0x7584e7da
+  offset: 32
+}
+member {
+  id: 0xdeda9aa4
+  name: "vlan_etype"
+  type_id: 0x7584e7da
+  offset: 64
+}
+member {
+  id: 0xacb9f6e0
+  name: "vlan_features"
+  type_id: 0x2584a3b9
+  offset: 2048
+}
+member {
+  id: 0x06b56bd6
+  name: "vlan_id"
+  type_id: 0x914dbfdc
+  offset: 32
+}
+member {
+  id: 0x7be9b727
+  name: "vlan_id"
+  type_id: 0x914dbfdc
+  bitsize: 12
+}
+member {
+  id: 0x159ed2a7
+  name: "vlan_info"
+  type_id: 0x3c0604da
+  offset: 5888
+}
+member {
+  id: 0x5c48bbc6
+  name: "vlan_mode"
+  type_id: 0x51b6e72e
+}
+member {
+  id: 0xf5992aa2
+  name: "vlan_present"
+  type_id: 0xb3e7bac9
+  offset: 16
+  bitsize: 1
+}
+member {
+  id: 0x7772834e
+  name: "vlan_priority"
+  type_id: 0x914dbfdc
+  offset: 13
+  bitsize: 3
+}
+member {
+  id: 0x1e9931b6
+  name: "vlan_proto"
+  type_id: 0x7584e7da
+  offset: 192
+}
+member {
+  id: 0x1e9935be
+  name: "vlan_proto"
+  type_id: 0x7584e7da
+  offset: 48
+}
+member {
+  id: 0x1e9937a0
+  name: "vlan_proto"
+  type_id: 0x7584e7da
+  offset: 544
+}
+member {
+  id: 0x186a48f5
+  name: "vlan_push_eth"
+  type_id: 0x36acbefb
+}
+member {
+  id: 0x276eaaaf
+  name: "vlan_tci"
+  type_id: 0x7584e7da
+  offset: 80
+}
+member {
+  id: 0x276eae33
+  name: "vlan_tci"
+  type_id: 0x7584e7da
+}
+member {
+  id: 0x27f32dfb
+  name: "vlan_tci"
+  type_id: 0xe8034002
+  offset: 208
+}
+member {
+  id: 0x6704d490
+  name: "vlan_tpid"
+  type_id: 0x7584e7da
+  offset: 16
+}
+member {
+  id: 0xd2927ea1
+  name: "vlpi_count"
+  type_id: 0x7e71c857
+  offset: 480
+}
+member {
+  id: 0xd298d587
+  name: "vlpi_count"
+  type_id: 0x74d29cf1
+  offset: 128
+}
+member {
+  id: 0x182c3eca
+  name: "vm_addr_space_mm"
+  type_id: 0x8f0e76d7
+  offset: 64
+}
+member {
+  id: 0x3046b926
+  name: "vm_bugged"
+  type_id: 0x6d7f5ff6
+  offset: 34368
+}
+member {
+  id: 0x82dad882
+  name: "vm_dead"
+  type_id: 0x6d7f5ff6
+  offset: 34376
+}
+member {
+  id: 0xc16704da
+  name: "vm_end"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x768d3eb0
+  name: "vm_file"
+  type_id: 0x18ea6ae3
+  offset: 1088
+}
+member {
+  id: 0x055bd95d
+  name: "vm_files"
+  type_id: 0xeb923a9b
+  offset: 1408
+}
+member {
+  id: 0xcdca510a
+  name: "vm_flags"
+  type_id: 0xd2d7132a
+}
+member {
+  id: 0x5d9a7aad
+  name: "vm_list"
+  type_id: 0xd3c80119
+  offset: 18816
+}
+member {
+  id: 0x155d76e4
+  name: "vm_lock"
+  type_id: 0x334f6bdc
+  offset: 384
+}
+member {
+  id: 0x159aab26
+  name: "vm_lock"
+  type_id: 0xf4933b90
+}
+member {
+  id: 0xfcf02e56
+  name: "vm_lock_seq"
+  type_id: 0x6720d32f
+  offset: 320
+}
+member {
+  id: 0x4f684438
+  name: "vm_mm"
+  type_id: 0x1b36c7a2
+  offset: 128
+}
+member {
+  id: 0xd6314a69
+  name: "vm_node"
+  type_id: 0xb0510713
+  offset: 64
+}
+member {
+  id: 0xd652df47
+  name: "vm_node"
+  type_id: 0xd3c80119
+  offset: 192
+}
+member {
+  id: 0x5a0cf049
+  name: "vm_node_stat_diff"
+  type_id: 0xda50e95d
+  offset: 8
+}
+member {
+  id: 0xfbcc07d1
+  name: "vm_numa_event"
+  type_id: 0xe83343be
+  offset: 12480
+}
+member {
+  id: 0x0b54e508
+  name: "vm_ops"
+  type_id: 0x37f43f67
+  offset: 1408
+}
+member {
+  id: 0x0b54e5c6
+  name: "vm_ops"
+  type_id: 0x37f43f67
+  offset: 704
+}
+member {
+  id: 0x0b54ef08
+  name: "vm_ops"
+  type_id: 0x37f43f67
+  offset: 960
+}
+member {
+  id: 0xba954092
+  name: "vm_page_prot"
+  type_id: 0x9cf21ab5
+  offset: 192
+}
+member {
+  id: 0x6ec5bbfa
+  name: "vm_pgoff"
+  type_id: 0x33756485
+  offset: 1024
+}
+member {
+  id: 0x28bbad8b
+  name: "vm_private_data"
+  type_id: 0x18bd6530
+  offset: 1152
+}
+member {
+  id: 0x4af16562
+  name: "vm_rcu"
+  type_id: 0xe3222f5b
+}
+member {
+  id: 0x521c8333
+  name: "vm_start"
+  type_id: 0x33756485
+}
+member {
+  id: 0xca8e5863
+  name: "vm_stat"
+  type_id: 0xfc37fa4b
+  offset: 70720
+}
+member {
+  id: 0xca969630
+  name: "vm_stat"
+  type_id: 0xe4f72a06
+  offset: 11776
+}
+member {
+  id: 0xd6cd8686
+  name: "vm_stat_diff"
+  type_id: 0xc2903910
+}
+member {
+  id: 0xa927e04b
+  name: "vm_userfaultfd_ctx"
+  type_id: 0x04fd6761
+  offset: 1280
+}
+member {
+  id: 0x23919a13
+  name: "vma"
+  type_id: 0x0a134144
+}
+member {
+  id: 0x23919b81
+  name: "vma"
+  type_id: 0x0a134144
+  offset: 384
+}
+member {
+  id: 0x57f81871
+  name: "vma_count"
+  type_id: 0x6720d32f
+  offset: 512
+}
+member {
+  id: 0xb6eb92b2
+  name: "vma_data_size"
+  type_id: 0xf435685e
+  offset: 576
+}
+member {
+  id: 0x86d21e8e
+  name: "vma_manager"
+  type_id: 0x1fc1dca8
+  offset: 1664
+}
+member {
+  id: 0x64eb00df
+  name: "vma_meta"
+  type_id: 0x0f869028
+  offset: 640
+}
+member {
+  id: 0xe25c784a
+  name: "vma_node"
+  type_id: 0xb2e49b70
+  offset: 192
+}
+member {
+  id: 0x27ffbf8f
+  name: "vma_offset_manager"
+  type_id: 0x1fc1dca8
+  offset: 13824
+}
+member {
+  id: 0x1b733720
+  name: "vma_pages"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xb7007ec8
+  name: "vmap"
+  type_id: 0x2e491408
+  offset: 512
+}
+member {
+  id: 0xb703fce6
+  name: "vmap"
+  type_id: 0x2dc3988e
+  offset: 832
+}
+member {
+  id: 0xfc7dbede
+  name: "vmap_lock"
+  type_id: 0xa7c362b0
+  offset: 3584
+}
+member {
+  id: 0xd65b5c85
+  name: "vmap_ptr"
+  type_id: 0xd6298487
+  offset: 768
+}
+member {
+  id: 0x26e529e9
+  name: "vmap_use_count"
+  type_id: 0x4585663f
+  offset: 4032
+}
+member {
+  id: 0x87ea4d5c
+  name: "vmapp_count"
+  type_id: 0x74d29cf1
+  offset: 512
+}
+member {
+  id: 0x7a9a7619
+  name: "vmapping_counter"
+  type_id: 0x4585663f
+  offset: 704
+}
+member {
+  id: 0xa4977b3b
+  name: "vmemmap_shift"
+  type_id: 0x33756485
+  offset: 832
+}
+member {
+  id: 0x69149bd4
+  name: "vmid"
+  type_id: 0x0c039fcc
+}
+member {
+  id: 0x69834c4a
+  name: "vmid"
+  type_id: 0x9bd401b6
+}
+member {
+  id: 0x5d71e9d3
+  name: "vmmc"
+  type_id: 0x01ae1e33
+}
+member {
+  id: 0x270c09e3
+  name: "vmode"
+  type_id: 0xe62ebf07
+  offset: 1056
+}
+member {
+  id: 0x27232436
+  name: "vmode"
+  type_id: 0xc9082b19
+  offset: 416
+}
+member {
+  id: 0xc275ef88
+  name: "vmpressure"
+  type_id: 0xe9ba69cd
+  offset: 8640
+}
+member {
+  id: 0x82af8809
+  name: "vmstats"
+  type_id: 0x2d6eb754
+  offset: 12800
+}
+member {
+  id: 0x179889d6
+  name: "vmstats_percpu"
+  type_id: 0x0fac5cb3
+  offset: 14976
+}
+member {
+  id: 0x57d4dc2b
+  name: "voice_setting"
+  type_id: 0xe8034002
+  offset: 6048
+}
+member {
+  id: 0x762946d6
+  name: "volatile_reg"
+  type_id: 0x35592596
+  offset: 3136
+}
+member {
+  id: 0x76294e77
+  name: "volatile_reg"
+  type_id: 0x35592596
+  offset: 384
+}
+member {
+  id: 0x99961099
+  name: "volatile_table"
+  type_id: 0x3842259a
+  offset: 3520
+}
+member {
+  id: 0x99961376
+  name: "volatile_table"
+  type_id: 0x3842259a
+  offset: 1536
+}
+member {
+  id: 0xbc1c8332
+  name: "volname"
+  type_id: 0x39fc1b17
+  offset: 296
+}
+member {
+  id: 0x365afd91
+  name: "volt_table"
+  type_id: 0x39cc14ac
+  offset: 1088
+}
+member {
+  id: 0x2813ed17
+  name: "voltage"
+  type_id: 0x9d2c4a95
+  offset: 64
+}
+member {
+  id: 0x2852c2c6
+  name: "voltage"
+  type_id: 0xdc00bdae
+  offset: 320
+}
+member {
+  id: 0xbcdf5f20
+  name: "voltage_max_design_uv"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x73f010ca
+  name: "voltage_min_design_uv"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0x2d4d4964
+  name: "voltage_switch"
+  type_id: 0x0d21fdc9
+  offset: 1600
+}
+member {
+  id: 0x2bceab72
+  name: "voltage_tolerance_v1"
+  type_id: 0x4585663f
+  offset: 1664
+}
+member {
+  id: 0x409894aa
+  name: "vops"
+  type_id: 0x32a063f3
+  offset: 1280
+}
+member {
+  id: 0x9272f8d8
+  name: "vorbis"
+  type_id: 0xf33674f6
+}
+member {
+  id: 0xcfce9367
+  name: "vpd"
+  type_id: 0x96fcb104
+  offset: 25152
+}
+member {
+  id: 0x051e5965
+  name: "vpd_pg0"
+  type_id: 0x2f43a458
+  offset: 2176
+}
+member {
+  id: 0x76e8efbf
+  name: "vpd_pg80"
+  type_id: 0x2f43a458
+  offset: 2304
+}
+member {
+  id: 0x34a88931
+  name: "vpd_pg83"
+  type_id: 0x2f43a458
+  offset: 2240
+}
+member {
+  id: 0xb1292fc9
+  name: "vpd_pg89"
+  type_id: 0x2f43a458
+  offset: 2368
+}
+member {
+  id: 0x1093c118
+  name: "vpd_pgb0"
+  type_id: 0x2f43a458
+  offset: 2432
+}
+member {
+  id: 0x51d360fb
+  name: "vpd_pgb1"
+  type_id: 0x2f43a458
+  offset: 2496
+}
+member {
+  id: 0x96108b56
+  name: "vpd_pgb2"
+  type_id: 0x2f43a458
+  offset: 2560
+}
+member {
+  id: 0x3e9547ca
+  name: "vpe_db_lpi"
+  type_id: 0x22b36393
+  offset: 192
+}
+member {
+  id: 0x1b58edc6
+  name: "vpe_id"
+  type_id: 0x914dbfdc
+  offset: 944
+}
+member {
+  id: 0x891a8488
+  name: "vpe_l1_base"
+  type_id: 0x18bd6530
+  offset: 384
+}
+member {
+  id: 0xa8c6574f
+  name: "vpe_lock"
+  type_id: 0xc8b17aa7
+  offset: 896
+}
+member {
+  id: 0x715799b8
+  name: "vpe_proxy_event"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x1a9ae5dc
+  name: "vpe_table_mask"
+  type_id: 0x0d910d7f
+  offset: 320
+}
+member {
+  id: 0xade8e87b
+  name: "vpes"
+  type_id: 0x09af8dc9
+  offset: 192
+}
+member {
+  id: 0x18a69b62
+  name: "vprop_page"
+  type_id: 0x06835e9c
+  offset: 128
+}
+member {
+  id: 0x991cc136
+  name: "vps"
+  type_id: 0x3dbcdeab
+  offset: 1344
+}
+member {
+  id: 0xdca92f00
+  name: "vpt_page"
+  type_id: 0x06835e9c
+}
+member {
+  id: 0xc5916613
+  name: "vqmmc"
+  type_id: 0x01ae1e33
+  offset: 64
+}
+member {
+  id: 0x9a256628
+  name: "vqs"
+  type_id: 0xd3c80119
+  offset: 7616
+}
+member {
+  id: 0x9afd3c8b
+  name: "vqs"
+  type_id: 0x0b937f67
+  offset: 448
+}
+member {
+  id: 0x05b06d0c
+  name: "vqs_list_lock"
+  type_id: 0xf313e71a
+  offset: 96
+}
+member {
+  id: 0x68001b38
+  name: "vram_mm"
+  type_id: 0x2a2f302f
+  offset: 13888
+}
+member {
+  id: 0x9f14ce75
+  name: "vrefresh"
+  type_id: 0xe62ebf07
+  offset: 192
+}
+member {
+  id: 0xcf118b97
+  name: "vreg_info"
+  type_id: 0xea129124
+  offset: 21120
+}
+member {
+  id: 0x9ff45f4a
+  name: "vregs"
+  type_id: 0x7e22f78a
+}
+member {
+  id: 0x5d601f09
+  name: "vringh_config"
+  type_id: 0x339b64c6
+  offset: 7552
+}
+member {
+  id: 0xab28431b
+  name: "vrr_capable_property"
+  type_id: 0x2a670b41
+  offset: 11648
+}
+member {
+  id: 0xbfbb0d2d
+  name: "vrr_enabled"
+  type_id: 0x6d7f5ff6
+  offset: 2408
+}
+member {
+  id: 0x67894646
+  name: "vruntime"
+  type_id: 0x92233392
+  offset: 640
+}
+member {
+  id: 0xd7b2a06c
+  name: "vsb"
+  type_id: 0x66fe5c63
+  offset: 560
+}
+member {
+  id: 0x9aa2eb58
+  name: "vscan"
+  type_id: 0x914dbfdc
+  offset: 176
+}
+member {
+  id: 0x9adba5a7
+  name: "vscan"
+  type_id: 0xe8034002
+  offset: 176
+}
+member {
+  id: 0x447bbb2c
+  name: "vsel_mask"
+  type_id: 0x4585663f
+  offset: 1312
+}
+member {
+  id: 0xa480476b
+  name: "vsel_range_mask"
+  type_id: 0x4585663f
+  offset: 1248
+}
+member {
+  id: 0xbb50c226
+  name: "vsel_range_reg"
+  type_id: 0x4585663f
+  offset: 1216
+}
+member {
+  id: 0x5f7f21f9
+  name: "vsel_reg"
+  type_id: 0x4585663f
+  offset: 1280
+}
+member {
+  id: 0x913be081
+  name: "vsel_step"
+  type_id: 0x4585663f
+  offset: 1344
+}
+member {
+  id: 0xf681ca11
+  name: "vsesr_el2"
+  type_id: 0x92233392
+  offset: 67328
+}
+member {
+  id: 0x8d8f1051
+  name: "vsk"
+  type_id: 0x156a41de
+  offset: 512
+}
+member {
+  id: 0xd2921bcc
+  name: "vsub"
+  type_id: 0x295c7202
+  offset: 152
+}
+member {
+  id: 0x303c361c
+  name: "vsync"
+  type_id: 0x41dc2151
+}
+member {
+  id: 0x309bc345
+  name: "vsync"
+  type_id: 0xe62ebf07
+  offset: 320
+}
+member {
+  id: 0x818639d5
+  name: "vsync_end"
+  type_id: 0x914dbfdc
+  offset: 144
+}
+member {
+  id: 0x81ff772a
+  name: "vsync_end"
+  type_id: 0xe8034002
+  offset: 144
+}
+member {
+  id: 0xb29e5e95
+  name: "vsync_len"
+  type_id: 0xe62ebf07
+  offset: 992
+}
+member {
+  id: 0xb2ad9e5f
+  name: "vsync_len"
+  type_id: 0xd5e60968
+  offset: 768
+}
+member {
+  id: 0xb2b17c0a
+  name: "vsync_len"
+  type_id: 0xc9082b19
+  offset: 288
+}
+member {
+  id: 0xb2b17c8a
+  name: "vsync_len"
+  type_id: 0xc9082b19
+  offset: 352
+}
+member {
+  id: 0xdcf26944
+  name: "vsync_offset_pulse_width_lo"
+  type_id: 0x295c7202
+  offset: 64
+}
+member {
+  id: 0xdea26dfb
+  name: "vsync_start"
+  type_id: 0xe8034002
+  offset: 128
+}
+member {
+  id: 0xdedb2304
+  name: "vsync_start"
+  type_id: 0x914dbfdc
+  offset: 128
+}
+member {
+  id: 0xfbbbe884
+  name: "vtag"
+  type_id: 0x5434eb98
+  offset: 32
+}
+member {
+  id: 0x8b0cff85
+  name: "vtcr"
+  type_id: 0x16c1acc8
+  offset: 64
+}
+member {
+  id: 0x8b881e3c
+  name: "vtcr"
+  type_id: 0x92233392
+  offset: 320
+}
+member {
+  id: 0xc821afee
+  name: "vtermno"
+  type_id: 0x1c3dbe5a
+  offset: 3840
+}
+member {
+  id: 0x3231450a
+  name: "vtotal"
+  type_id: 0x914dbfdc
+  offset: 160
+}
+member {
+  id: 0x32480bf5
+  name: "vtotal"
+  type_id: 0xe8034002
+  offset: 160
+}
+member {
+  id: 0x9a815d9a
+  name: "vttbr"
+  type_id: 0x92233392
+}
+member {
+  id: 0x62f950cd
+  name: "vunmap"
+  type_id: 0x0e85b421
+  offset: 896
+}
+member {
+  id: 0x62fad995
+  name: "vunmap"
+  type_id: 0x0d0f38a7
+  offset: 576
+}
+member {
+  id: 0xd91829ca
+  name: "vvar_page"
+  type_id: 0x06835e9c
+  offset: 576
+}
+member {
+  id: 0x6a036180
+  name: "w"
+  type_id: 0xfc5791f4
+}
+member {
+  id: 0x0e4285a0
+  name: "wBytesPerInterval"
+  type_id: 0x9bd401b6
+  offset: 32
+}
+member {
+  id: 0xd3595cd3
+  name: "wCountyCode0"
+  type_id: 0x9bd401b6
+  offset: 32
+}
+member {
+  id: 0x3b766446
+  name: "wFunctionalitySupport"
+  type_id: 0x9bd401b6
+  offset: 64
+}
+member {
+  id: 0x2021ba82
+  name: "wIndex"
+  type_id: 0x9bd401b6
+  offset: 32
+}
+member {
+  id: 0x070c80f2
+  name: "wLength"
+  type_id: 0x9bd401b6
+  offset: 48
+}
+member {
+  id: 0xb75b254f
+  name: "wMTU"
+  type_id: 0x9bd401b6
+  offset: 48
+}
+member {
+  id: 0x5adfd000
+  name: "wMaxCommand"
+  type_id: 0x9bd401b6
+  offset: 40
+}
+member {
+  id: 0x3e209b51
+  name: "wMaxControlMessage"
+  type_id: 0x9bd401b6
+  offset: 40
+}
+member {
+  id: 0x25b0c8a9
+  name: "wMaxPacketSize"
+  type_id: 0x9bd401b6
+  offset: 32
+}
+member {
+  id: 0x9e7345e7
+  name: "wMaxSegmentSize"
+  type_id: 0x9bd401b6
+  offset: 72
+}
+member {
+  id: 0x9e734d77
+  name: "wMaxSegmentSize"
+  type_id: 0x9bd401b6
+  offset: 64
+}
+member {
+  id: 0xd6499e1b
+  name: "wNumberMCFilters"
+  type_id: 0x9bd401b6
+  offset: 80
+}
+member {
+  id: 0x84d40eb1
+  name: "wReserved"
+  type_id: 0x9bd401b6
+  offset: 80
+}
+member {
+  id: 0xeffe0b79
+  name: "wReseved"
+  type_id: 0x9bd401b6
+  offset: 16
+}
+member {
+  id: 0x77a6f28c
+  name: "wSpeedSupported"
+  type_id: 0x9bd401b6
+  offset: 32
+}
+member {
+  id: 0x8dd2349f
+  name: "wTotalLength"
+  type_id: 0x9bd401b6
+  offset: 16
+}
+member {
+  id: 0x691d7ee5
+  name: "wValue"
+  type_id: 0x9bd401b6
+  offset: 16
+}
+member {
+  id: 0xf3982621
+  name: "w_counter"
+  type_id: 0x4585663f
+  offset: 1056
+}
+member {
+  id: 0x20032f9b
+  name: "wait"
+  type_id: 0x2d2e4d07
+  offset: 448
+}
+member {
+  id: 0x200d0b57
+  name: "wait"
+  type_id: 0x230a3153
+  offset: 320
+}
+member {
+  id: 0x201a709b
+  name: "wait"
+  type_id: 0x347ff86e
+  offset: 128
+}
+member {
+  id: 0x201a7190
+  name: "wait"
+  type_id: 0x347ff86e
+  offset: 192
+}
+member {
+  id: 0x201ba81a
+  name: "wait"
+  type_id: 0x35a67227
+  offset: 192
+}
+member {
+  id: 0x201bada5
+  name: "wait"
+  type_id: 0x35a67227
+  offset: 1088
+}
+member {
+  id: 0x202d9055
+  name: "wait"
+  type_id: 0x03913382
+  offset: 320
+}
+member {
+  id: 0x202d90e5
+  name: "wait"
+  type_id: 0x03913382
+  offset: 448
+}
+member {
+  id: 0x202d921a
+  name: "wait"
+  type_id: 0x03913382
+  offset: 2432
+}
+member {
+  id: 0x202d9373
+  name: "wait"
+  type_id: 0x03913382
+  offset: 64
+}
+member {
+  id: 0x202d9384
+  name: "wait"
+  type_id: 0x03913382
+  offset: 7488
+}
+member {
+  id: 0x202d9556
+  name: "wait"
+  type_id: 0x03913382
+  offset: 1216
+}
+member {
+  id: 0x202d9561
+  name: "wait"
+  type_id: 0x03913382
+  offset: 1408
+}
+member {
+  id: 0x202d9600
+  name: "wait"
+  type_id: 0x03913382
+  offset: 384
+}
+member {
+  id: 0x202d9792
+  name: "wait"
+  type_id: 0x03913382
+}
+member {
+  id: 0x202d9e50
+  name: "wait"
+  type_id: 0x03913382
+  offset: 128
+}
+member {
+  id: 0x20525fec
+  name: "wait"
+  type_id: 0x7c5dac4b
+  offset: 64
+}
+member {
+  id: 0x2058e120
+  name: "wait"
+  type_id: 0x76e1f83e
+  offset: 640
+}
+member {
+  id: 0x2058edda
+  name: "wait"
+  type_id: 0x76e1f83e
+  offset: 1344
+}
+member {
+  id: 0x2058ee9b
+  name: "wait"
+  type_id: 0x76e1f83e
+  offset: 128
+}
+member {
+  id: 0x20f5a5f4
+  name: "wait"
+  type_id: 0xdba44af3
+  offset: 1024
+}
+member {
+  id: 0x9c8dc12c
+  name: "wait_blkd_tasks"
+  type_id: 0x6d7f5ff6
+  offset: 976
+}
+member {
+  id: 0x40f00151
+  name: "wait_chldexit"
+  type_id: 0x03913382
+  offset: 256
+}
+member {
+  id: 0xaf6418f7
+  name: "wait_count"
+  type_id: 0x92233392
+  offset: 128
+}
+member {
+  id: 0xc97fc826
+  name: "wait_finish"
+  type_id: 0x0f1efc7f
+  offset: 128
+}
+member {
+  id: 0x36abe075
+  name: "wait_for_threads"
+  type_id: 0x03913382
+  offset: 1792
+}
+member {
+  id: 0x7a3b21c2
+  name: "wait_index"
+  type_id: 0x74d29cf1
+  offset: 2880
+}
+member {
+  id: 0x7ab3f5b1
+  name: "wait_index"
+  type_id: 0xfc0e1dbd
+  offset: 640
+}
+member {
+  id: 0x7ab3febe
+  name: "wait_index"
+  type_id: 0xfc0e1dbd
+  offset: 1088
+}
+member {
+  id: 0x90a037f1
+  name: "wait_killable_recv"
+  type_id: 0x6d7f5ff6
+  offset: 72
+}
+member {
+  id: 0x46d7c426
+  name: "wait_list"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0x46d7c52d
+  name: "wait_list"
+  type_id: 0xd3c80119
+  offset: 192
+}
+member {
+  id: 0x46d7c905
+  name: "wait_list"
+  type_id: 0xd3c80119
+  offset: 64
+}
+member {
+  id: 0xeb494cc1
+  name: "wait_lock"
+  type_id: 0x638752c9
+  offset: 32
+}
+member {
+  id: 0xebe27333
+  name: "wait_lock"
+  type_id: 0xc8b17aa7
+  offset: 64
+}
+member {
+  id: 0xebe277d2
+  name: "wait_lock"
+  type_id: 0xc8b17aa7
+}
+member {
+  id: 0xebe27a32
+  name: "wait_lock"
+  type_id: 0xc8b17aa7
+  offset: 160
+}
+member {
+  id: 0xfdb5542d
+  name: "wait_max"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0x93dcf59d
+  name: "wait_pidfd"
+  type_id: 0x03913382
+  offset: 448
+}
+member {
+  id: 0xe0fb8719
+  name: "wait_prepare"
+  type_id: 0x0f1efc7f
+  offset: 64
+}
+member {
+  id: 0xcc1757b3
+  name: "wait_queue"
+  type_id: 0xd3c80119
+  offset: 10368
+}
+member {
+  id: 0xccc7037a
+  name: "wait_queue"
+  type_id: 0x03913382
+  offset: 1664
+}
+member {
+  id: 0x92caf65f
+  name: "wait_readers"
+  type_id: 0x4585663f
+  offset: 96
+}
+member {
+  id: 0x5f1a8cd1
+  name: "wait_start"
+  type_id: 0x92233392
+}
+member {
+  id: 0xaa1a81b7
+  name: "wait_sum"
+  type_id: 0x92233392
+  offset: 192
+}
+member {
+  id: 0x84384d66
+  name: "wait_time"
+  type_id: 0xfc0e1dbd
+  offset: 1728
+}
+member {
+  id: 0x34198c7b
+  name: "wait_unfrozen"
+  type_id: 0x03913382
+  offset: 64
+}
+member {
+  id: 0x691d6f08
+  name: "wait_until_sent"
+  type_id: 0x0c3ee516
+  offset: 1472
+}
+member {
+  id: 0x691df5b8
+  name: "wait_until_sent"
+  type_id: 0x0ca5cbd8
+  offset: 3392
+}
+member {
+  id: 0x691e4bbe
+  name: "wait_until_sent"
+  type_id: 0x0f161b41
+  offset: 512
+}
+member {
+  id: 0x67f7c1cd
+  name: "wait_usecs"
+  type_id: 0x4585663f
+  offset: 1024
+}
+member {
+  id: 0x934fcd9a
+  name: "waiters"
+  type_id: 0xd0f3b5bf
+  offset: 64
+}
+member {
+  id: 0x939ca0e5
+  name: "waiters"
+  type_id: 0x03913382
+  offset: 512
+}
+member {
+  id: 0x939cab56
+  name: "waiters"
+  type_id: 0x03913382
+  offset: 256
+}
+member {
+  id: 0xc133acab
+  name: "waiters_pending"
+  type_id: 0x6d7f5ff6
+  offset: 704
+}
+member {
+  id: 0x3e50f6f4
+  name: "waiting"
+  type_id: 0x6d7f5ff6
+  offset: 1984
+}
+member {
+  id: 0x3eee42bc
+  name: "waiting"
+  type_id: 0xd3c80119
+  offset: 384
+}
+member {
+  id: 0xcdb92068
+  name: "waiting_for_buffers"
+  type_id: 0x4585663f
+  offset: 6531
+  bitsize: 1
+}
+member {
+  id: 0x6fa5176a
+  name: "waiting_in_dqbuf"
+  type_id: 0x4585663f
+  offset: 6532
+  bitsize: 1
+}
+member {
+  id: 0x34628ce3
+  name: "waiting_thread_node"
+  type_id: 0xd3c80119
+  offset: 256
+}
+member {
+  id: 0x8b39ba92
+  name: "waiting_threads"
+  type_id: 0xd3c80119
+  offset: 384
+}
+member {
+  id: 0xe064d640
+  name: "waitq"
+  type_id: 0x03913382
+  offset: 6208
+}
+member {
+  id: 0xe06d30e5
+  name: "waitq"
+  type_id: 0x0a747547
+  offset: 64
+}
+member {
+  id: 0x26907da8
+  name: "wake"
+  type_id: 0x6d7f5ff6
+  offset: 288
+}
+member {
+  id: 0x26f3b7c4
+  name: "wake"
+  type_id: 0x0eb62dc3
+  offset: 320
+}
+member {
+  id: 0xcf212908
+  name: "wake_active"
+  type_id: 0xc9082b19
+  offset: 576
+}
+member {
+  id: 0x58a1ba40
+  name: "wake_addr"
+  type_id: 0xa61911b2
+  offset: 28632
+}
+member {
+  id: 0x4505a488
+  name: "wake_addr_type"
+  type_id: 0x295c7202
+  offset: 28680
+}
+member {
+  id: 0x4d54241b
+  name: "wake_avg_idle"
+  type_id: 0x92233392
+  offset: 26816
+}
+member {
+  id: 0x6f0eb254
+  name: "wake_base"
+  type_id: 0x4585663f
+  offset: 352
+}
+member {
+  id: 0x6cf4244f
+  name: "wake_batch"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0x4380ab3a
+  name: "wake_buf"
+  type_id: 0x1bf16028
+  offset: 3200
+}
+member {
+  id: 0xf40c8bc4
+  name: "wake_count"
+  type_id: 0x6720d32f
+  offset: 2784
+}
+member {
+  id: 0x6a4872be
+  name: "wake_cpu"
+  type_id: 0x6720d32f
+  offset: 992
+}
+member {
+  id: 0x1373472c
+  name: "wake_data"
+  type_id: 0x3f0185ef
+  offset: 512
+}
+member {
+  id: 0xc9b98a90
+  name: "wake_depth"
+  type_id: 0x4585663f
+  offset: 1120
+}
+member {
+  id: 0x0bd013d5
+  name: "wake_enabled"
+  type_id: 0xc9082b19
+  offset: 544
+}
+member {
+  id: 0x4aba56a2
+  name: "wake_entry"
+  type_id: 0x36cadc18
+  offset: 640
+}
+member {
+  id: 0xea6e4c7d
+  name: "wake_index"
+  type_id: 0x74d29cf1
+  offset: 288
+}
+member {
+  id: 0x323774ce
+  name: "wake_invert"
+  type_id: 0x4585663f
+  offset: 614
+  bitsize: 1
+}
+member {
+  id: 0x478711c2
+  name: "wake_len"
+  type_id: 0xc9082b19
+  offset: 448
+}
+member {
+  id: 0xa0d6dba2
+  name: "wake_mask"
+  type_id: 0x3f0185ef
+  offset: 576
+}
+member {
+  id: 0xeb0331a3
+  name: "wake_payload_max"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0x345f5dc5
+  name: "wake_q"
+  type_id: 0x01fbf104
+  offset: 18752
+}
+member {
+  id: 0xda079ca9
+  name: "wake_q_count"
+  type_id: 0x6720d32f
+  offset: 18816
+}
+member {
+  id: 0x15af76a2
+  name: "wake_reason"
+  type_id: 0x295c7202
+  offset: 28624
+}
+member {
+  id: 0x692e11ef
+  name: "wake_stamp"
+  type_id: 0x33756485
+  offset: 26752
+}
+member {
+  id: 0xf0919aa1
+  name: "wake_state"
+  type_id: 0x4585663f
+  offset: 512
+}
+member {
+  id: 0x15c79b55
+  name: "wakee_flip_decay_ts"
+  type_id: 0x33756485
+  offset: 832
+}
+member {
+  id: 0xb5113bec
+  name: "wakee_flips"
+  type_id: 0x4585663f
+  offset: 768
+}
+member {
+  id: 0xf7e3e4a9
+  name: "wakeirq"
+  type_id: 0x2ced6bd4
+  offset: 1856
+}
+member {
+  id: 0xf7e3e873
+  name: "wakeirq"
+  type_id: 0x2ced6bd4
+  offset: 320
+}
+member {
+  id: 0xff0b3458
+  name: "wakeup"
+  type_id: 0x34e51224
+  offset: 51200
+}
+member {
+  id: 0xff0caf01
+  name: "wakeup"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0xff107114
+  name: "wakeup"
+  type_id: 0x2fa652dc
+  offset: 64
+}
+member {
+  id: 0xff1644fe
+  name: "wakeup"
+  type_id: 0x299c4193
+  offset: 512
+}
+member {
+  id: 0xff3d33af
+  name: "wakeup"
+  type_id: 0x02eb105a
+  offset: 512
+}
+member {
+  id: 0xff7a5180
+  name: "wakeup"
+  type_id: 0x4585663f
+  offset: 672
+}
+member {
+  id: 0x5ed6ef19
+  name: "wakeup_cnt"
+  type_id: 0x74d29cf1
+  offset: 480
+}
+member {
+  id: 0x8e632614
+  name: "wakeup_count"
+  type_id: 0x33756485
+  offset: 1472
+}
+member {
+  id: 0x1981ec83
+  name: "wakeup_events"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x3766071b
+  name: "wakeup_full"
+  type_id: 0x6d7f5ff6
+  offset: 720
+}
+member {
+  id: 0xf5741316
+  name: "wakeup_path"
+  type_id: 0x6d7f5ff6
+  offset: 576
+  bitsize: 1
+}
+member {
+  id: 0x85bc813a
+  name: "wakeup_prepared"
+  type_id: 0x4585663f
+  offset: 1341
+  bitsize: 1
+}
+member {
+  id: 0xb13ba3b7
+  name: "wakeup_protocol"
+  type_id: 0x52a8f1d9
+  offset: 9152
+}
+member {
+  id: 0xc4396ab4
+  name: "wakeup_watermark"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x1a8d5950
+  name: "wakeup_work"
+  type_id: 0x1f3c8679
+  offset: 2304
+}
+member {
+  id: 0x5e026fd9
+  name: "walk"
+  type_id: 0x27833f00
+  offset: 2304
+}
+member {
+  id: 0x5e08de82
+  name: "walk"
+  type_id: 0x2d3dc1f0
+  offset: 768
+}
+member {
+  id: 0x5e29a5ee
+  name: "walk"
+  type_id: 0x0c451b60
+  offset: 512
+}
+member {
+  id: 0x5e2bd4d7
+  name: "walk"
+  type_id: 0x0e3794b2
+  offset: 768
+}
+member {
+  id: 0xf5e4c1c4
+  name: "walker"
+  type_id: 0x4a97f393
+  offset: 192
+}
+member {
+  id: 0x58081e19
+  name: "walkers"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0xb500c36a
+  name: "walksize"
+  type_id: 0x4585663f
+  offset: 448
+}
+member {
+  id: 0x6b3d1ac5
+  name: "wanted_features"
+  type_id: 0x2584a3b9
+  offset: 1984
+}
+member {
+  id: 0xec2bd3f9
+  name: "wants_buckets"
+  type_id: 0x914dbfdc
+  offset: 144
+}
+member {
+  id: 0x127d8375
+  name: "warn"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0xb7cc89ba
+  name: "warned"
+  type_id: 0x6d7f5ff6
+  offset: 128
+}
+member {
+  id: 0x7fca01b0
+  name: "was_master"
+  type_id: 0x6d7f5ff6
+  offset: 48
+}
+member {
+  id: 0x59754f66
+  name: "was_reset"
+  type_id: 0x4585663f
+  offset: 2797
+  bitsize: 1
+}
+member {
+  id: 0xc2552ea1
+  name: "watchdog_dev_tracker"
+  type_id: 0xc76fa419
+  offset: 20224
+}
+member {
+  id: 0xdfa57e84
+  name: "watchdog_stamp"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0xea248be1
+  name: "watchdog_timeo"
+  type_id: 0x6720d32f
+  offset: 9728
+}
+member {
+  id: 0xbb1eeb33
+  name: "watchdog_timer"
+  type_id: 0xd298e888
+  offset: 9280
+}
+member {
+  id: 0x658fbfda
+  name: "watchdog_ts"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0x22ba845d
+  name: "watermark"
+  type_id: 0xedf277ba
+  offset: 334
+  bitsize: 1
+}
+member {
+  id: 0xf00092cb
+  name: "watermark"
+  type_id: 0xfc0e1dbd
+  offset: 640
+}
+member {
+  id: 0xf0b91df4
+  name: "watermark"
+  type_id: 0x4585663f
+  offset: 704
+}
+member {
+  id: 0xf0cfe56d
+  name: "watermark"
+  type_id: 0x33756485
+  offset: 896
+}
+member {
+  id: 0x9b453c32
+  name: "watermark_boost"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0x0315a20e
+  name: "waveform"
+  type_id: 0xe8034002
+}
+member {
+  id: 0x75a5ad4c
+  name: "wb"
+  type_id: 0x084ef4c8
+  offset: 384
+}
+member {
+  id: 0x75a691b1
+  name: "wb"
+  type_id: 0x0b7b35bf
+  offset: 768
+}
+member {
+  id: 0x194c4bd6
+  name: "wb_buf_flush_enabled"
+  type_id: 0x6d7f5ff6
+  offset: 216
+}
+member {
+  id: 0x175b77ec
+  name: "wb_buffer_type"
+  type_id: 0x295c7202
+  offset: 232
+}
+member {
+  id: 0xde23b95c
+  name: "wb_bytes"
+  type_id: 0xf435685e
+  offset: 640
+}
+member {
+  id: 0x2ee12f95
+  name: "wb_dedicated_lu"
+  type_id: 0x295c7202
+  offset: 224
+}
+member {
+  id: 0xe3af90be
+  name: "wb_enabled"
+  type_id: 0x6d7f5ff6
+  offset: 208
+}
+member {
+  id: 0x2e80b714
+  name: "wb_err"
+  type_id: 0x160ba102
+  offset: 1664
+}
+member {
+  id: 0x7b1d6942
+  name: "wb_flush_threshold"
+  type_id: 0xc9082b19
+  offset: 672
+}
+member {
+  id: 0xe9f24aa9
+  name: "wb_id"
+  type_id: 0x6720d32f
+  offset: 512
+}
+member {
+  id: 0x7317d4b5
+  name: "wb_lcand_bytes"
+  type_id: 0xf435685e
+  offset: 704
+}
+member {
+  id: 0x9c6fd219
+  name: "wb_lcand_id"
+  type_id: 0x6720d32f
+  offset: 544
+}
+member {
+  id: 0xfef7bf06
+  name: "wb_list"
+  type_id: 0xd3c80119
+  offset: 7936
+}
+member {
+  id: 0x45552a24
+  name: "wb_mutex"
+  type_id: 0xa7c362b0
+  offset: 26496
+}
+member {
+  id: 0x5ba6a002
+  name: "wb_switch_rwsem"
+  type_id: 0x28b9ec9a
+  offset: 8576
+}
+member {
+  id: 0xd5069440
+  name: "wb_tcand_bytes"
+  type_id: 0xf435685e
+  offset: 768
+}
+member {
+  id: 0x0c4437a2
+  name: "wb_tcand_id"
+  type_id: 0x6720d32f
+  offset: 576
+}
+member {
+  id: 0xc198b6b5
+  name: "wb_waitq"
+  type_id: 0x03913382
+  offset: 9088
+}
+member {
+  id: 0xee383561
+  name: "wce_default_on"
+  type_id: 0x4585663f
+  offset: 2825
+  bitsize: 1
+}
+member {
+  id: 0x0eaf9392
+  name: "wchar"
+  type_id: 0x92233392
+  offset: 64
+}
+member {
+  id: 0x87b0fe73
+  name: "wcid"
+  type_id: 0x914dbfdc
+  offset: 16
+}
+member {
+  id: 0x6ce951af
+  name: "wd_data"
+  type_id: 0x0dd0f7ba
+  offset: 1280
+}
+member {
+  id: 0xcf4e05d1
+  name: "wdd"
+  type_id: 0x12e75923
+  offset: 8384
+}
+member {
+  id: 0x666b05bf
+  name: "wdev_list"
+  type_id: 0xd3c80119
+  offset: 10688
+}
+member {
+  id: 0x1fd9b843
+  name: "wdma_idx"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x69b2857e
+  name: "wdtr"
+  type_id: 0x4585663f
+  offset: 2793
+  bitsize: 1
+}
+member {
+  id: 0x0c425820
+  name: "weak_magnitude"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0x2a6305f7
+  name: "week"
+  type_id: 0xe62ebf07
+  offset: 832
+}
+member {
+  id: 0x7e0f7453
+  name: "weight"
+  type_id: 0x6720d32f
+  offset: 192
+}
+member {
+  id: 0x7e0f787b
+  name: "weight"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x7e0f7e06
+  name: "weight"
+  type_id: 0x6720d32f
+  offset: 1440
+}
+member {
+  id: 0x7e2dde0a
+  name: "weight"
+  type_id: 0x4585663f
+  offset: 1728
+}
+member {
+  id: 0x7e4104da
+  name: "weight"
+  type_id: 0x295c7202
+  offset: 64
+}
+member {
+  id: 0x7e5b292d
+  name: "weight"
+  type_id: 0x33756485
+}
+member {
+  id: 0x7eb51a7c
+  name: "weight"
+  type_id: 0xdd4efc25
+  offset: 192
+}
+member {
+  id: 0x4a46b82c
+  name: "weight_attr"
+  type_id: 0x11cf9350
+  offset: 1216
+}
+member {
+  id: 0x811591d4
+  name: "weight_attr_name"
+  type_id: 0x19ce8000
+  offset: 1024
+}
+member {
+  id: 0x8525c1be
+  name: "weight_factors"
+  type_id: 0x52f90395
+  offset: 32
+}
+member {
+  id: 0x10e666c7
+  name: "weighted_bipred_idc"
+  type_id: 0xb3e7bac9
+  offset: 40
+}
+member {
+  id: 0x13a79540
+  name: "wext_nlevents"
+  type_id: 0x578f9c2b
+  offset: 22080
+}
+member {
+  id: 0x33be0c85
+  name: "wfe_exit_stat"
+  type_id: 0x92233392
+  offset: 6720
+}
+member {
+  id: 0xff2da133
+  name: "wfi_exit_stat"
+  type_id: 0x92233392
+  offset: 6784
+}
+member {
+  id: 0x149f4f99
+  name: "wheel_accumulated"
+  type_id: 0x007e8ce4
+  offset: 160
+}
+member {
+  id: 0x0098fbc5
+  name: "wheel_factor"
+  type_id: 0x901eaf6a
+  offset: 104
+}
+member {
+  id: 0xba11b0ec
+  name: "when"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0x3324cb8b
+  name: "when_to_branch"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x9b1d6401
+  name: "which"
+  type_id: 0xe62ebf07
+  offset: 224
+}
+member {
+  id: 0x9b1d6725
+  name: "which"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x9b1d6ea6
+  name: "which"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x28b8deb0
+  name: "white_point"
+  type_id: 0x305b75d3
+  offset: 224
+}
+member {
+  id: 0x2b8bd573
+  name: "white_point_x"
+  type_id: 0xe8034002
+  offset: 96
+}
+member {
+  id: 0xf54c3177
+  name: "white_point_y"
+  type_id: 0xe8034002
+  offset: 112
+}
+member {
+  id: 0xa9b0e5f3
+  name: "white_x"
+  type_id: 0x295c7202
+  offset: 264
+}
+member {
+  id: 0x69491e28
+  name: "white_x_hi"
+  type_id: 0x295c7202
+  offset: 8
+}
+member {
+  id: 0xe9f14719
+  name: "white_y"
+  type_id: 0x295c7202
+  offset: 272
+}
+member {
+  id: 0x13a42cc5
+  name: "white_y_hi"
+  type_id: 0x295c7202
+  offset: 16
+}
+member {
+  id: 0x77be5454
+  name: "white_yx_lo"
+  type_id: 0x295c7202
+}
+member {
+  id: 0x9dd4af54
+  name: "whitex"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x5f140185
+  name: "whitey"
+  type_id: 0xe62ebf07
+  offset: 224
+}
+member {
+  id: 0x7b0b6ea4
+  name: "whole_zone"
+  type_id: 0x6d7f5ff6
+  offset: 968
+}
+member {
+  id: 0x20460892
+  name: "wide_bus"
+  type_id: 0x4585663f
+  offset: 66
+  bitsize: 1
+}
+member {
+  id: 0x1511f0c7
+  name: "widget"
+  type_id: 0x9a06f3c7
+}
+member {
+  id: 0x1581e8eb
+  name: "widget"
+  type_id: 0x0a1edf98
+}
+member {
+  id: 0x30d7efbc
+  name: "widget_elems"
+  type_id: 0x0baa70a7
+  offset: 64
+}
+member {
+  id: 0xb35b6257
+  name: "widget_load"
+  type_id: 0x2c81fb24
+  offset: 256
+}
+member {
+  id: 0x5e9aac92
+  name: "widget_ready"
+  type_id: 0x2c81fb24
+  offset: 320
+}
+member {
+  id: 0x5fb10a84
+  name: "widget_unload"
+  type_id: 0x2cdf1523
+  offset: 384
+}
+member {
+  id: 0xb0e6619a
+  name: "widgets"
+  type_id: 0xc6be3916
+  offset: 64
+}
+member {
+  id: 0xb0f315b6
+  name: "widgets"
+  type_id: 0xd3c80119
+  offset: 4352
+}
+member {
+  id: 0x0a41b258
+  name: "width"
+  type_id: 0xcc4cb9da
+  offset: 64
+}
+member {
+  id: 0x0a65f562
+  name: "width"
+  type_id: 0xe8034002
+  offset: 9184
+}
+member {
+  id: 0x0a6bd05e
+  name: "width"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x0a6bd4bf
+  name: "width"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x0a6bd984
+  name: "width"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0x0a6bda78
+  name: "width"
+  type_id: 0xe62ebf07
+  offset: 736
+}
+member {
+  id: 0x0a6bdd3c
+  name: "width"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x0ac876a4
+  name: "width"
+  type_id: 0x4585663f
+  offset: 128
+}
+member {
+  id: 0x0ac87879
+  name: "width"
+  type_id: 0x4585663f
+  offset: 1024
+}
+member {
+  id: 0x0aeadad3
+  name: "width"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x0a6200ac
+  name: "width_cm"
+  type_id: 0x295c7202
+  offset: 168
+}
+member {
+  id: 0x65169b6d
+  name: "width_height_mm_hi"
+  type_id: 0x295c7202
+  offset: 96
+}
+member {
+  id: 0x1b12a6d9
+  name: "width_mm"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x1bc66d55
+  name: "width_mm"
+  type_id: 0x914dbfdc
+  offset: 464
+}
+member {
+  id: 0xd6ef5507
+  name: "width_mm_lo"
+  type_id: 0x295c7202
+  offset: 80
+}
+member {
+  id: 0x2fe83e26
+  name: "wifi_acked"
+  type_id: 0xb3e7bac9
+  offset: 11
+  bitsize: 1
+}
+member {
+  id: 0xd62a03d6
+  name: "wifi_acked_valid"
+  type_id: 0xb3e7bac9
+  offset: 10
+  bitsize: 1
+}
+member {
+  id: 0xf55a6c56
+  name: "win"
+  type_id: 0xaa39e76e
+}
+member {
+  id: 0xf573f559
+  name: "win"
+  type_id: 0x83a99a4f
+  offset: 576
+}
+member {
+  id: 0x105bc79a
+  name: "window"
+  type_id: 0xbb548821
+}
+member {
+  id: 0x10951b38
+  name: "window"
+  type_id: 0x7584e7da
+  offset: 112
+}
+member {
+  id: 0x10a51295
+  name: "window"
+  type_id: 0x4585663f
+  offset: 64
+}
+member {
+  id: 0x1afab587
+  name: "window_len"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0x3769ceaf
+  name: "window_start"
+  type_id: 0x4585663f
+  offset: 224
+}
+member {
+  id: 0x52d8b184
+  name: "window_start_t"
+  type_id: 0x11c404ba
+  offset: 128
+}
+member {
+  id: 0x3e01a8a7
+  name: "windows"
+  type_id: 0xd3c80119
+  offset: 7616
+}
+member {
+  id: 0x3edfccd1
+  name: "windows"
+  type_id: 0x0daecbaf
+  offset: 7488
+}
+member {
+  id: 0xd219e788
+  name: "winsize"
+  type_id: 0x5883a0f3
+  offset: 4128
+}
+member {
+  id: 0xbc8d810e
+  name: "winsize_mutex"
+  type_id: 0xa7c362b0
+  offset: 2432
+}
+member {
+  id: 0x3f0fa7dd
+  name: "wiphy"
+  type_id: 0x11b32828
+  offset: 960
+}
+member {
+  id: 0x3f0faf2e
+  name: "wiphy"
+  type_id: 0x11b32828
+}
+member {
+  id: 0xcab1474b
+  name: "wiphy_idx"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0xe7b27044
+  name: "wireless"
+  type_id: 0x4585663f
+  offset: 3366
+  bitsize: 1
+}
+member {
+  id: 0xfcf35a7a
+  name: "wireless_data"
+  type_id: 0x1e95b182
+  offset: 4096
+}
+member {
+  id: 0xe6125b0d
+  name: "wireless_handlers"
+  type_id: 0x3db9d204
+  offset: 4032
+}
+member {
+  id: 0xa6413a21
+  name: "wlocked"
+  type_id: 0x295c7202
+}
+member {
+  id: 0xb8c4383f
+  name: "wma"
+  type_id: 0x25040ecb
+}
+member {
+  id: 0x58494c44
+  name: "wma_d"
+  type_id: 0xcf5f4bd8
+}
+member {
+  id: 0xe6daa685
+  name: "wmanufacturerid"
+  type_id: 0x914dbfdc
+  offset: 32
+}
+member {
+  id: 0xe6daabbe
+  name: "wmanufacturerid"
+  type_id: 0x914dbfdc
+}
+member {
+  id: 0xbd6c6927
+  name: "wmm_rule"
+  type_id: 0xbbd1bd9f
+  offset: 160
+}
+member {
+  id: 0x2abad4e4
+  name: "wol_enabled"
+  type_id: 0x4585663f
+  offset: 19208
+  bitsize: 1
+}
+member {
+  id: 0x3f39fe7d
+  name: "wolopts"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x834f06fa
+  name: "word"
+  type_id: 0xe8034002
+}
+member {
+  id: 0x839470de
+  name: "word"
+  type_id: 0x33756485
+}
+member {
+  id: 0x8394743f
+  name: "word"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0xbf9497dd
+  name: "word_delay"
+  type_id: 0x120d5977
+  offset: 672
+}
+member {
+  id: 0xbf9497f3
+  name: "word_delay"
+  type_id: 0x120d5977
+  offset: 8064
+}
+member {
+  id: 0x4a30b80b
+  name: "word_size"
+  type_id: 0x6720d32f
+  offset: 7392
+}
+member {
+  id: 0x4a30bfb7
+  name: "word_size"
+  type_id: 0x6720d32f
+  offset: 928
+}
+member {
+  id: 0xd60840ef
+  name: "work"
+  type_id: 0xf1159c31
+  offset: 2112
+}
+member {
+  id: 0xd60848d4
+  name: "work"
+  type_id: 0xf1159c31
+  offset: 640
+}
+member {
+  id: 0xd60849ac
+  name: "work"
+  type_id: 0xf1159c31
+  offset: 8192
+}
+member {
+  id: 0xd6084a4c
+  name: "work"
+  type_id: 0xf1159c31
+  offset: 64
+}
+member {
+  id: 0xd6084d17
+  name: "work"
+  type_id: 0xf1159c31
+  offset: 832
+}
+member {
+  id: 0xd6084d90
+  name: "work"
+  type_id: 0xf1159c31
+  offset: 2752
+}
+member {
+  id: 0xd6084e06
+  name: "work"
+  type_id: 0xf1159c31
+  offset: 256
+}
+member {
+  id: 0xd6084f3f
+  name: "work"
+  type_id: 0xf1159c31
+  offset: 384
+}
+member {
+  id: 0xd61a791e
+  name: "work"
+  type_id: 0xe3222f5b
+}
+member {
+  id: 0xd6310997
+  name: "work"
+  type_id: 0xc859be95
+  offset: 512
+}
+member {
+  id: 0xd64000c8
+  name: "work"
+  type_id: 0xb95bf932
+}
+member {
+  id: 0xd64002f5
+  name: "work"
+  type_id: 0xb95bf932
+  offset: 704
+}
+member {
+  id: 0xd6a6b240
+  name: "work"
+  type_id: 0x5fed90c9
+  offset: 64
+}
+member {
+  id: 0xd6a6b6a1
+  name: "work"
+  type_id: 0x5fed90c9
+}
+member {
+  id: 0xd6c16273
+  name: "work"
+  type_id: 0x3835dcc0
+  offset: 9600
+}
+member {
+  id: 0xd6c16eed
+  name: "work"
+  type_id: 0x3835dcc0
+}
+member {
+  id: 0xd6e661ca
+  name: "work"
+  type_id: 0x1f3c8679
+  offset: 1280
+}
+member {
+  id: 0xd6e661ce
+  name: "work"
+  type_id: 0x1f3c8679
+  offset: 640
+}
+member {
+  id: 0xd6e66228
+  name: "work"
+  type_id: 0x1f3c8679
+  offset: 2176
+}
+member {
+  id: 0xd6e66356
+  name: "work"
+  type_id: 0x1f3c8679
+  offset: 64
+}
+member {
+  id: 0xd6e6640d
+  name: "work"
+  type_id: 0x1f3c8679
+  offset: 832
+}
+member {
+  id: 0xd6e66625
+  name: "work"
+  type_id: 0x1f3c8679
+  offset: 384
+}
+member {
+  id: 0xd6e66688
+  name: "work"
+  type_id: 0x1f3c8679
+  offset: 6016
+}
+member {
+  id: 0xd6e6671c
+  name: "work"
+  type_id: 0x1f3c8679
+  offset: 256
+}
+member {
+  id: 0xd6e667b7
+  name: "work"
+  type_id: 0x1f3c8679
+}
+member {
+  id: 0xd6e6696b
+  name: "work"
+  type_id: 0x1f3c8679
+  offset: 1152
+}
+member {
+  id: 0xd6e66caf
+  name: "work"
+  type_id: 0x1f3c8679
+  offset: 512
+}
+member {
+  id: 0xd6e66d11
+  name: "work"
+  type_id: 0x1f3c8679
+  offset: 896
+}
+member {
+  id: 0xd6e66eec
+  name: "work"
+  type_id: 0x1f3c8679
+  offset: 2944
+}
+member {
+  id: 0xd6f49657
+  name: "work"
+  type_id: 0x0dc4dee3
+  offset: 1600
+}
+member {
+  id: 0xe2ca3110
+  name: "work_buf"
+  type_id: 0x18bd6530
+  offset: 704
+}
+member {
+  id: 0xe2ca3be4
+  name: "work_buf"
+  type_id: 0x18bd6530
+  offset: 192
+}
+member {
+  id: 0x9fac6498
+  name: "work_color"
+  type_id: 0x6720d32f
+  offset: 128
+}
+member {
+  id: 0x9fac6b23
+  name: "work_color"
+  type_id: 0x6720d32f
+  offset: 640
+}
+member {
+  id: 0x5887087b
+  name: "work_count"
+  type_id: 0x6720d32f
+  offset: 1920
+}
+member {
+  id: 0x5894f298
+  name: "work_count"
+  type_id: 0x74d29cf1
+  offset: 576
+}
+member {
+  id: 0x4bd8dff1
+  name: "work_flags"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0x98b9a598
+  name: "work_in_progress"
+  type_id: 0x6d7f5ff6
+  offset: 1544
+}
+member {
+  id: 0x44ded5a9
+  name: "work_irq_change"
+  type_id: 0x74d29cf1
+  offset: 3392
+}
+member {
+  id: 0x03478a89
+  name: "work_list"
+  type_id: 0x0bf3e543
+  offset: 640
+}
+member {
+  id: 0x0369992b
+  name: "work_list"
+  type_id: 0x25eef749
+  offset: 192
+}
+member {
+  id: 0x039fb11c
+  name: "work_list"
+  type_id: 0xd3c80119
+  offset: 3008
+}
+member {
+  id: 0x039fb3f5
+  name: "work_list"
+  type_id: 0xd3c80119
+  offset: 64
+}
+member {
+  id: 0x039fb590
+  name: "work_list"
+  type_id: 0xd3c80119
+  offset: 1984
+}
+member {
+  id: 0xb152f7a4
+  name: "work_llist"
+  type_id: 0x0bf3e543
+  offset: 384
+}
+member {
+  id: 0x46746604
+  name: "work_lock"
+  type_id: 0xf313e71a
+  offset: 2944
+}
+member {
+  id: 0xd6e43b14
+  name: "work_mutex"
+  type_id: 0xa7c362b0
+  offset: 1664
+}
+member {
+  id: 0xc7069366
+  name: "work_pending"
+  type_id: 0x295c7202
+  offset: 450
+  bitsize: 1
+}
+member {
+  id: 0xc6ae05bc
+  name: "work_pin_events"
+  type_id: 0x24b9a24a
+  offset: 11712
+}
+member {
+  id: 0xc5d631a8
+  name: "work_pin_events_dropped"
+  type_id: 0x6d7f5ff6
+  offset: 12736
+}
+member {
+  id: 0xbcf5d290
+  name: "work_pin_events_dropped_cnt"
+  type_id: 0xc9082b19
+  offset: 12768
+}
+member {
+  id: 0x405a2437
+  name: "work_pin_events_rd"
+  type_id: 0x4585663f
+  offset: 3488
+}
+member {
+  id: 0x4dc1b204
+  name: "work_pin_events_wr"
+  type_id: 0x4585663f
+  offset: 3456
+}
+member {
+  id: 0xeccbdbcb
+  name: "work_pin_num_events"
+  type_id: 0x74d29cf1
+  offset: 3424
+}
+member {
+  id: 0x9156b995
+  name: "work_pin_ts"
+  type_id: 0x2a9fbfe4
+  offset: 3520
+}
+member {
+  id: 0x7d6957e5
+  name: "work_q"
+  type_id: 0x13f8b706
+  offset: 4544
+}
+member {
+  id: 0x990fb7aa
+  name: "work_q_name"
+  type_id: 0x19ce8000
+  offset: 4368
+}
+member {
+  id: 0x4f32f567
+  name: "work_rx_msg"
+  type_id: 0x74026623
+  offset: 2816
+}
+member {
+  id: 0xaf49a3ae
+  name: "work_state"
+  type_id: 0x3979d367
+  offset: 2048
+}
+member {
+  id: 0x2dbda5b7
+  name: "work_tx_status"
+  type_id: 0x295c7202
+  offset: 3264
+}
+member {
+  id: 0xe97edad9
+  name: "work_tx_ts"
+  type_id: 0x11c404ba
+  offset: 3328
+}
+member {
+  id: 0xf00bd56d
+  name: "work_wait_queue"
+  type_id: 0x03913382
+  offset: 2368
+}
+member {
+  id: 0xff5bf4cb
+  name: "worker"
+  type_id: 0x348f6886
+  offset: 192
+}
+member {
+  id: 0xff5bf99d
+  name: "worker"
+  type_id: 0x348f6886
+  offset: 2176
+}
+member {
+  id: 0xff70462e
+  name: "worker"
+  type_id: 0x1f3c8679
+  offset: 128
+}
+member {
+  id: 0xff7268fe
+  name: "worker"
+  type_id: 0x1d19a9d5
+  offset: 704
+}
+member {
+  id: 0x3c046673
+  name: "worker_done"
+  type_id: 0x3fcbf304
+  offset: 320
+}
+member {
+  id: 0x17ec4d9d
+  name: "worker_ida"
+  type_id: 0xe1a31370
+  offset: 5888
+}
+member {
+  id: 0x03310064
+  name: "worker_private"
+  type_id: 0x18bd6530
+  offset: 14528
+}
+member {
+  id: 0x58c38e55
+  name: "worker_refs"
+  type_id: 0x74d29cf1
+  offset: 256
+}
+member {
+  id: 0xfeafe941
+  name: "workers"
+  type_id: 0xd3c80119
+  offset: 5696
+}
+member {
+  id: 0xde98dda9
+  name: "worklist"
+  type_id: 0xd3c80119
+  offset: 320
+}
+member {
+  id: 0x92e9b358
+  name: "workq"
+  type_id: 0x13f8b706
+  offset: 768
+}
+member {
+  id: 0x324dabc9
+  name: "workqueue"
+  type_id: 0x13f8b706
+  offset: 13760
+}
+member {
+  id: 0xc57cac0c
+  name: "workspace"
+  type_id: 0x18bd6530
+  offset: 512
+}
+member {
+  id: 0x15b05608
+  name: "wounded"
+  type_id: 0xc93e017b
+  offset: 160
+}
+member {
+  id: 0xaf6e85c1
+  name: "wowlan"
+  type_id: 0x33ddb110
+  offset: 1984
+}
+member {
+  id: 0x1562dab6
+  name: "wowlan_config"
+  type_id: 0x1f94afa4
+  offset: 2048
+}
+member {
+  id: 0xe2c583a3
+  name: "wp"
+  type_id: 0xedf277ba
+  offset: 128
+}
+member {
+  id: 0xbcd7e386
+  name: "wp_gpio"
+  type_id: 0x2560a232
+  offset: 8704
+}
+member {
+  id: 0xb4aebd55
+  name: "wpan_phy"
+  type_id: 0x29a77f06
+}
+member {
+  id: 0xe119f5e3
+  name: "wpcopy_count"
+  type_id: 0xedf277ba
+  offset: 3200
+}
+member {
+  id: 0xee4b16dc
+  name: "wpcopy_delay_total"
+  type_id: 0xedf277ba
+  offset: 3264
+}
+member {
+  id: 0xb8b77cb4
+  name: "wps_disabled"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0x22180721
+  name: "wq"
+  type_id: 0xf1159c31
+  offset: 17024
+}
+member {
+  id: 0x22b7f1fc
+  name: "wq"
+  type_id: 0x5eee2044
+  offset: 512
+}
+member {
+  id: 0x22c56794
+  name: "wq"
+  type_id: 0x2c71a392
+  offset: 1408
+}
+member {
+  id: 0x22dd9cdb
+  name: "wq"
+  type_id: 0x348f6886
+  offset: 448
+}
+member {
+  id: 0x22ea8116
+  name: "wq"
+  type_id: 0x03913382
+  offset: 64
+}
+member {
+  id: 0x22ea8280
+  name: "wq"
+  type_id: 0x03913382
+  offset: 448
+}
+member {
+  id: 0x22ea8465
+  name: "wq"
+  type_id: 0x03913382
+  offset: 384
+}
+member {
+  id: 0x22ea85f7
+  name: "wq"
+  type_id: 0x03913382
+}
+member {
+  id: 0x22ea861a
+  name: "wq"
+  type_id: 0x03913382
+  offset: 9280
+}
+member {
+  id: 0x22fae297
+  name: "wq"
+  type_id: 0x13f8b706
+  offset: 18816
+}
+member {
+  id: 0x22fae2af
+  name: "wq"
+  type_id: 0x13f8b706
+  offset: 1152
+}
+member {
+  id: 0x22fae76b
+  name: "wq"
+  type_id: 0x13f8b706
+  offset: 512
+}
+member {
+  id: 0x22fae892
+  name: "wq"
+  type_id: 0x13f8b706
+  offset: 64
+}
+member {
+  id: 0x22faec73
+  name: "wq"
+  type_id: 0x13f8b706
+}
+member {
+  id: 0x22faefc9
+  name: "wq"
+  type_id: 0x13f8b706
+  offset: 832
+}
+member {
+  id: 0xf3ee0983
+  name: "wq_dev"
+  type_id: 0x05514b17
+  offset: 1472
+}
+member {
+  id: 0x2aa222ca
+  name: "wq_entry"
+  type_id: 0x35a67227
+  offset: 192
+}
+member {
+  id: 0x21010b52
+  name: "wqes"
+  type_id: 0xc81b91b5
+  offset: 768
+}
+member {
+  id: 0x4df4451d
+  name: "wqh"
+  type_id: 0x0a747547
+  offset: 128
+}
+member {
+  id: 0x4dfdad78
+  name: "wqh"
+  type_id: 0x03913382
+  offset: 64
+}
+member {
+  id: 0x4dfdaebc
+  name: "wqh"
+  type_id: 0x03913382
+  offset: 1728
+}
+member {
+  id: 0x75c8c443
+  name: "wr_noinc_table"
+  type_id: 0x3842259a
+  offset: 1664
+}
+member {
+  id: 0x75c8cff7
+  name: "wr_noinc_table"
+  type_id: 0x3842259a
+  offset: 3648
+}
+member {
+  id: 0xf70bd962
+  name: "wr_table"
+  type_id: 0x3842259a
+  offset: 3392
+}
+member {
+  id: 0xf70bdd5f
+  name: "wr_table"
+  type_id: 0x3842259a
+  offset: 1408
+}
+member {
+  id: 0x4f5ae8a9
+  name: "wr_wait"
+  type_id: 0x03913382
+  offset: 576
+}
+member {
+  id: 0x48aef34d
+  name: "wrap_around"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0xbffa8f35
+  name: "wrapper"
+  type_id: 0x22af47d0
+  offset: 128
+}
+member {
+  id: 0x0082372e
+  name: "writable_size"
+  type_id: 0xc9082b19
+  offset: 160
+}
+member {
+  id: 0x340c802d
+  name: "write"
+  type_id: 0x0c5d6702
+  offset: 1600
+}
+member {
+  id: 0x340c80e7
+  name: "write"
+  type_id: 0x0c5d6702
+  offset: 576
+}
+member {
+  id: 0x340c9b5a
+  name: "write"
+  type_id: 0x0c4761b6
+  offset: 192
+}
+member {
+  id: 0x340d81a9
+  name: "write"
+  type_id: 0x0d51ba49
+  offset: 64
+}
+member {
+  id: 0x340d8d53
+  name: "write"
+  type_id: 0x0d58335b
+  offset: 384
+}
+member {
+  id: 0x340dee10
+  name: "write"
+  type_id: 0x0d3e034c
+  offset: 64
+}
+member {
+  id: 0x340e44a3
+  name: "write"
+  type_id: 0x0e9993db
+  offset: 128
+}
+member {
+  id: 0x340e76f4
+  name: "write"
+  type_id: 0x0ea91e0d
+  offset: 512
+}
+member {
+  id: 0x340e9533
+  name: "write"
+  type_id: 0x0e490832
+  offset: 192
+}
+member {
+  id: 0x340ecafc
+  name: "write"
+  type_id: 0x0e16c70e
+  offset: 192
+}
+member {
+  id: 0x340ece87
+  name: "write"
+  type_id: 0x0e13b7f3
+  offset: 128
+}
+member {
+  id: 0x340ecf8c
+  name: "write"
+  type_id: 0x0e13b7f3
+  offset: 192
+}
+member {
+  id: 0x340ed5a9
+  name: "write"
+  type_id: 0x0e00c9b9
+  offset: 384
+}
+member {
+  id: 0x340ef030
+  name: "write"
+  type_id: 0x0e24c2f6
+}
+member {
+  id: 0x3421983a
+  name: "write"
+  type_id: 0x21450ae9
+  offset: 128
+}
+member {
+  id: 0x34294171
+  name: "write"
+  type_id: 0x299c4193
+  offset: 128
+}
+member {
+  id: 0x342c7bf8
+  name: "write"
+  type_id: 0x2ca7a402
+  offset: 768
+}
+member {
+  id: 0x342c97a5
+  name: "write"
+  type_id: 0x2c4d8b7c
+  offset: 1152
+}
+member {
+  id: 0x342c9f8b
+  name: "write"
+  type_id: 0x2c4d8b7c
+  offset: 4032
+}
+member {
+  id: 0x342d5118
+  name: "write"
+  type_id: 0x2d82cfe3
+  offset: 1728
+}
+member {
+  id: 0x342da96c
+  name: "write"
+  type_id: 0x2d797f87
+  offset: 64
+}
+member {
+  id: 0x342db9a0
+  name: "write"
+  type_id: 0x2d69b3f9
+  offset: 64
+}
+member {
+  id: 0x342dfe3f
+  name: "write"
+  type_id: 0x2d2b5fad
+  offset: 384
+}
+member {
+  id: 0x342e10cf
+  name: "write"
+  type_id: 0x2ecc93f3
+  offset: 768
+}
+member {
+  id: 0x342e3e43
+  name: "write"
+  type_id: 0x2eedaed0
+  offset: 1024
+}
+member {
+  id: 0x342f20a4
+  name: "write"
+  type_id: 0x2ff4fd81
+  offset: 256
+}
+member {
+  id: 0x342f575e
+  name: "write"
+  type_id: 0x2f830764
+  offset: 256
+}
+member {
+  id: 0x342fe464
+  name: "write"
+  type_id: 0x2f3e1dbd
+  offset: 2880
+}
+member {
+  id: 0x342ff252
+  name: "write"
+  type_id: 0x2f21d730
+  offset: 448
+}
+member {
+  id: 0x346349d2
+  name: "write"
+  type_id: 0x6399c10b
+  offset: 64
+}
+member {
+  id: 0x346b1ad7
+  name: "write"
+  type_id: 0x6bc75709
+  offset: 576
+}
+member {
+  id: 0xe34084b1
+  name: "write_allocated"
+  type_id: 0x6720d32f
+  offset: 5408
+}
+member {
+  id: 0xeb7ced97
+  name: "write_b"
+  type_id: 0x0d0ed3b6
+  offset: 320
+}
+member {
+  id: 0xca29fad4
+  name: "write_backward"
+  type_id: 0xedf277ba
+  offset: 347
+  bitsize: 1
+}
+member {
+  id: 0xc793127e
+  name: "write_bandwidth"
+  type_id: 0x33756485
+  offset: 2240
+}
+member {
+  id: 0x7689259b
+  name: "write_begin"
+  type_id: 0x2c691a2f
+  offset: 320
+}
+member {
+  id: 0x3b713cd5
+  name: "write_blkbits"
+  type_id: 0x4585663f
+  offset: 256
+}
+member {
+  id: 0xc3927f09
+  name: "write_buf"
+  type_id: 0x2c9b36f2
+}
+member {
+  id: 0xc3a315c7
+  name: "write_buf"
+  type_id: 0x1df06cce
+  offset: 5952
+}
+member {
+  id: 0x68c4d9d3
+  name: "write_bulk_callback"
+  type_id: 0x0ea52fda
+  offset: 4288
+}
+member {
+  id: 0xfeec5ed1
+  name: "write_busy"
+  type_id: 0x6d7f5ff6
+  offset: 5824
+}
+member {
+  id: 0x558559a4
+  name: "write_bytes"
+  type_id: 0x92233392
+  offset: 384
+}
+member {
+  id: 0x55fa8ef0
+  name: "write_bytes"
+  type_id: 0xedf277ba
+  offset: 2048
+}
+member {
+  id: 0xf2bc2b47
+  name: "write_char"
+  type_id: 0xedf277ba
+  offset: 1792
+}
+member {
+  id: 0x137bb5d0
+  name: "write_cmd"
+  type_id: 0x2c952810
+  offset: 7488
+}
+member {
+  id: 0x3b7bcb9e
+  name: "write_cnt"
+  type_id: 0x6720d32f
+  offset: 6016
+}
+member {
+  id: 0x75a61196
+  name: "write_comp"
+  type_id: 0x3fcbf304
+  offset: 7488
+}
+member {
+  id: 0x5f710844
+  name: "write_counter"
+  type_id: 0x0ff8ee0d
+  offset: 3008
+}
+member {
+  id: 0x074a81fd
+  name: "write_dbi"
+  type_id: 0x0d714d5c
+  offset: 128
+}
+member {
+  id: 0x20894fc9
+  name: "write_dbi2"
+  type_id: 0x0d714d5c
+  offset: 192
+}
+member {
+  id: 0x9f9e7bb5
+  name: "write_dquot"
+  type_id: 0x2e103219
+}
+member {
+  id: 0xdc1aa6cf
+  name: "write_end"
+  type_id: 0x2c691ecf
+  offset: 384
+}
+member {
+  id: 0x2d1f9b2d
+  name: "write_event_config"
+  type_id: 0x2c45ed77
+  offset: 576
+}
+member {
+  id: 0xac3808e0
+  name: "write_event_value"
+  type_id: 0x2c45ef00
+  offset: 704
+}
+member {
+  id: 0xa200605d
+  name: "write_fifo"
+  type_id: 0x18745118
+  offset: 4992
+}
+member {
+  id: 0x2ec77a1f
+  name: "write_file_info"
+  type_id: 0x2ff9c73d
+  offset: 128
+}
+member {
+  id: 0x1c7bbdd7
+  name: "write_flag_mask"
+  type_id: 0x33756485
+  offset: 4224
+}
+member {
+  id: 0x1c7bbf16
+  name: "write_flag_mask"
+  type_id: 0x33756485
+  offset: 2112
+}
+member {
+  id: 0x879d4a8f
+  name: "write_flush"
+  type_id: 0x0fea155c
+  offset: 64
+}
+member {
+  id: 0x90cecd8c
+  name: "write_header"
+  type_id: 0x2ca1eaea
+}
+member {
+  id: 0x0b738ff3
+  name: "write_hint"
+  type_id: 0xc93e017b
+  offset: 1152
+}
+member {
+  id: 0xfbdc7402
+  name: "write_immediately"
+  type_id: 0x4585663f
+  offset: 12545
+  bitsize: 1
+}
+member {
+  id: 0xb0e037fd
+  name: "write_info"
+  type_id: 0x2c8f5b5b
+  offset: 1856
+}
+member {
+  id: 0xb0e34bee
+  name: "write_info"
+  type_id: 0x2ff9c73d
+  offset: 384
+}
+member {
+  id: 0x1465c659
+  name: "write_inode"
+  type_id: 0x2c685816
+  offset: 256
+}
+member {
+  id: 0x84573c9c
+  name: "write_int_callback"
+  type_id: 0x0ea52fda
+  offset: 4160
+}
+member {
+  id: 0xa854c899
+  name: "write_iter"
+  type_id: 0x0f08e52a
+  offset: 320
+}
+member {
+  id: 0x64fd9972
+  name: "write_l"
+  type_id: 0x0dee87ef
+  offset: 192
+}
+member {
+  id: 0x3b7c6234
+  name: "write_lock"
+  type_id: 0xa7c362b0
+  offset: 7744
+}
+member {
+  id: 0x365e3956
+  name: "write_mask"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x54db64f6
+  name: "write_merkle_tree_block"
+  type_id: 0x2c7820c5
+  offset: 256
+}
+member {
+  id: 0xd581a195
+  name: "write_misalign"
+  type_id: 0x4585663f
+  offset: 323
+  bitsize: 1
+}
+member {
+  id: 0xfe79438a
+  name: "write_mmd"
+  type_id: 0x2e89ce21
+  offset: 3008
+}
+member {
+  id: 0x8d122294
+  name: "write_msg"
+  type_id: 0xc2683cd4
+  offset: 448
+}
+member {
+  id: 0x77a8a893
+  name: "write_msi_msg"
+  type_id: 0x0e4b7bf3
+  offset: 448
+}
+member {
+  id: 0xc182e472
+  name: "write_msi_msg_data"
+  type_id: 0x18bd6530
+  offset: 512
+}
+member {
+  id: 0xfdca1068
+  name: "write_page"
+  type_id: 0x2e804bb7
+  offset: 3136
+}
+member {
+  id: 0xa6b017d1
+  name: "write_partial"
+  type_id: 0x4585663f
+  offset: 322
+  bitsize: 1
+}
+member {
+  id: 0xc72eac0e
+  name: "write_pool"
+  type_id: 0xd3c80119
+  offset: 5248
+}
+member {
+  id: 0x3efde84d
+  name: "write_protect_seq"
+  type_id: 0xd0e93144
+  offset: 2048
+}
+member {
+  id: 0xa435e19f
+  name: "write_raw"
+  type_id: 0x2c4e44e3
+  offset: 320
+}
+member {
+  id: 0xf9d5cedb
+  name: "write_raw_get_fmt"
+  type_id: 0x2c479eef
+  offset: 448
+}
+member {
+  id: 0xf470ad9d
+  name: "write_reg"
+  type_id: 0x0f0e8ef4
+  offset: 1600
+}
+member {
+  id: 0xb08e3438
+  name: "write_room"
+  type_id: 0x3bc90e1f
+  offset: 2944
+}
+member {
+  id: 0xb08e3b1a
+  name: "write_room"
+  type_id: 0x3bc90e1f
+  offset: 640
+}
+member {
+  id: 0xb0995196
+  name: "write_room"
+  type_id: 0x2cac39f3
+  offset: 128
+}
+member {
+  id: 0xbf955a93
+  name: "write_s64"
+  type_id: 0x2f582494
+  offset: 1536
+}
+member {
+  id: 0x0a06727e
+  name: "write_stamp"
+  type_id: 0x7ca48629
+  offset: 1856
+}
+member {
+  id: 0x8b22f978
+  name: "write_started"
+  type_id: 0x6720d32f
+  offset: 5376
+}
+member {
+  id: 0x067f8a3d
+  name: "write_syscalls"
+  type_id: 0xedf277ba
+  offset: 1920
+}
+member {
+  id: 0x348a7553
+  name: "write_u64"
+  type_id: 0x2f53e65e
+  offset: 1472
+}
+member {
+  id: 0xd4bce900
+  name: "write_urb"
+  type_id: 0x0130219f
+  offset: 4928
+}
+member {
+  id: 0x47ac8207
+  name: "write_urbs"
+  type_id: 0x6ce54884
+  offset: 5312
+}
+member {
+  id: 0x34019ec8
+  name: "write_urbs_free"
+  type_id: 0x33756485
+  offset: 5440
+}
+member {
+  id: 0x249745b5
+  name: "write_user"
+  type_id: 0x2ed3be65
+  offset: 1088
+}
+member {
+  id: 0x10a6114d
+  name: "write_w"
+  type_id: 0x0db6c27b
+  offset: 256
+}
+member {
+  id: 0x9562543e
+  name: "write_wait"
+  type_id: 0xd3c80119
+  offset: 256
+}
+member {
+  id: 0x95b20bf4
+  name: "write_wait"
+  type_id: 0x03913382
+  offset: 4800
+}
+member {
+  id: 0xa3680e37
+  name: "write_wakeup"
+  type_id: 0x0e996219
+  offset: 192
+}
+member {
+  id: 0xa3698176
+  name: "write_wakeup"
+  type_id: 0x0f1728d9
+  offset: 128
+}
+member {
+  id: 0xa36ac5e3
+  name: "write_wakeup"
+  type_id: 0x0c59c5c5
+  offset: 832
+}
+member {
+  id: 0xa36b9776
+  name: "write_wakeup"
+  type_id: 0x0d0c0bd8
+  offset: 64
+}
+member {
+  id: 0x8a6a87b7
+  name: "write_work"
+  type_id: 0x1f3c8679
+  offset: 704
+}
+member {
+  id: 0x5893a891
+  name: "writeable_noinc_reg"
+  type_id: 0x35592596
+  offset: 512
+}
+member {
+  id: 0x5893a9e6
+  name: "writeable_noinc_reg"
+  type_id: 0x35592596
+  offset: 3264
+}
+member {
+  id: 0x97b04907
+  name: "writeable_reg"
+  type_id: 0x35592596
+  offset: 256
+}
+member {
+  id: 0x97b04fa4
+  name: "writeable_reg"
+  type_id: 0x35592596
+  offset: 3008
+}
+member {
+  id: 0x3638a03c
+  name: "writeback_connectors"
+  type_id: 0x6d7f5ff6
+  offset: 40
+}
+member {
+  id: 0x01ed88dc
+  name: "writeback_fb_id_property"
+  type_id: 0x2a670b41
+  offset: 9088
+}
+member {
+  id: 0xdaef1310
+  name: "writeback_index"
+  type_id: 0x33756485
+  offset: 1472
+}
+member {
+  id: 0x323a54ca
+  name: "writeback_inodes"
+  type_id: 0x74d29cf1
+  offset: 736
+}
+member {
+  id: 0xdd80fb1c
+  name: "writeback_job"
+  type_id: 0x2bdd20a6
+  offset: 1024
+}
+member {
+  id: 0x4e1d9866
+  name: "writeback_out_fence_ptr_property"
+  type_id: 0x2a670b41
+  offset: 9216
+}
+member {
+  id: 0x9a686e3f
+  name: "writeback_pixel_formats_property"
+  type_id: 0x2a670b41
+  offset: 9152
+}
+member {
+  id: 0xdfa15c0f
+  name: "writebuffers"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0xa4b8618f
+  name: "writecnt"
+  type_id: 0x1f4573ef
+  offset: 1920
+}
+member {
+  id: 0xecd559ca
+  name: "writeio"
+  type_id: 0x0d0374d5
+  offset: 320
+}
+member {
+  id: 0x2ef068ae
+  name: "writepage"
+  type_id: 0x2db834f5
+}
+member {
+  id: 0x043a32c7
+  name: "writepages"
+  type_id: 0x2c882bac
+  offset: 128
+}
+member {
+  id: 0x7a8d36d1
+  name: "writer"
+  type_id: 0xdba44af3
+  offset: 448
+}
+member {
+  id: 0x17d97ae6
+  name: "writers"
+  type_id: 0x4585663f
+  offset: 960
+}
+member {
+  id: 0x3b2f460a
+  name: "writes"
+  type_id: 0x3a3eb2f9
+  offset: 128
+}
+member {
+  id: 0xee4e3ee1
+  name: "written"
+  type_id: 0xf435685e
+}
+member {
+  id: 0xee9dab88
+  name: "written"
+  type_id: 0x27a7c613
+  offset: 320
+}
+member {
+  id: 0xbe4db64d
+  name: "written_stamp"
+  type_id: 0x33756485
+  offset: 2176
+}
+member {
+  id: 0xa03044f2
+  name: "ws"
+  type_id: 0x5883a0f3
+  offset: 4032
+}
+member {
+  id: 0xa0695bac
+  name: "ws"
+  type_id: 0x019dcb45
+  offset: 320
+}
+member {
+  id: 0xa06a2755
+  name: "ws"
+  type_id: 0x02eb105a
+  offset: 7808
+}
+member {
+  id: 0x9b01420a
+  name: "ws_active"
+  type_id: 0x74d29cf1
+  offset: 384
+}
+member {
+  id: 0xc579a0b3
+  name: "ws_col"
+  type_id: 0xc93e017b
+  offset: 16
+}
+member {
+  id: 0x625683d1
+  name: "ws_row"
+  type_id: 0xc93e017b
+}
+member {
+  id: 0xcb337b27
+  name: "ws_xpixel"
+  type_id: 0xc93e017b
+  offset: 32
+}
+member {
+  id: 0x438d37e1
+  name: "ws_ypixel"
+  type_id: 0xc93e017b
+  offset: 48
+}
+member {
+  id: 0x8986dade
+  name: "wspecversion"
+  type_id: 0x914dbfdc
+  offset: 128
+}
+member {
+  id: 0xdc35308a
+  name: "wusb"
+  type_id: 0x4585663f
+  offset: 11182
+  bitsize: 1
+}
+member {
+  id: 0x3a655266
+  name: "wusb_dev"
+  type_id: 0x2d828440
+  offset: 11904
+}
+member {
+  id: 0x312658c3
+  name: "ww_ctx"
+  type_id: 0x9a8b90c4
+}
+member {
+  id: 0x3190e7f7
+  name: "ww_ctx"
+  type_id: 0x2c32dd96
+  offset: 640
+}
+member {
+  id: 0x3190e947
+  name: "ww_ctx"
+  type_id: 0x2c32dd96
+  offset: 192
+}
+member {
+  id: 0xa0232669
+  name: "x"
+  type_id: 0x914dbfdc
+}
+member {
+  id: 0xa05a6896
+  name: "x"
+  type_id: 0xe8034002
+}
+member {
+  id: 0xa0784187
+  name: "x"
+  type_id: 0xca2a51af
+}
+member {
+  id: 0xa07b63fd
+  name: "x"
+  type_id: 0xc9082b19
+}
+member {
+  id: 0xa07b64fc
+  name: "x"
+  type_id: 0xc9082b19
+  offset: 8192
+}
+member {
+  id: 0xa0811eb2
+  name: "x"
+  type_id: 0x33756485
+}
+member {
+  id: 0xa09bd4d0
+  name: "x"
+  type_id: 0x29bf06ba
+}
+member {
+  id: 0xa0ae5ea1
+  name: "x"
+  type_id: 0x1c3dbe5a
+  offset: 192
+}
+member {
+  id: 0xa0d54c45
+  name: "x"
+  type_id: 0x6720d32f
+  offset: 3328
+}
+member {
+  id: 0xa0f7eeb0
+  name: "x"
+  type_id: 0x4585663f
+}
+member {
+  id: 0x99578193
+  name: "x1"
+  type_id: 0xc93e017b
+}
+member {
+  id: 0x99f99f41
+  name: "x1"
+  type_id: 0x6720d32f
+}
+member {
+  id: 0x9793a81f
+  name: "x19"
+  type_id: 0x33756485
+}
+member {
+  id: 0xd9380576
+  name: "x2"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0xd996127e
+  name: "x2"
+  type_id: 0xc93e017b
+  offset: 32
+}
+member {
+  id: 0xca2823eb
+  name: "x20"
+  type_id: 0x33756485
+  offset: 64
+}
+member {
+  id: 0x0b159a7e
+  name: "x21"
+  type_id: 0x33756485
+  offset: 128
+}
+member {
+  id: 0x37d5f233
+  name: "x22"
+  type_id: 0x33756485
+  offset: 192
+}
+member {
+  id: 0x76953aa3
+  name: "x23"
+  type_id: 0x33756485
+  offset: 256
+}
+member {
+  id: 0xb92a9f60
+  name: "x24"
+  type_id: 0x33756485
+  offset: 320
+}
+member {
+  id: 0xf8e7b484
+  name: "x25"
+  type_id: 0x3ec19393
+}
+member {
+  id: 0xf8ea01e1
+  name: "x25"
+  type_id: 0x33756485
+  offset: 384
+}
+member {
+  id: 0x3aaa6ab0
+  name: "x26"
+  type_id: 0x33756485
+  offset: 448
+}
+member {
+  id: 0x7bd7c30b
+  name: "x27"
+  type_id: 0x33756485
+  offset: 512
+}
+member {
+  id: 0xbf9666f6
+  name: "x28"
+  type_id: 0x33756485
+  offset: 576
+}
+member {
+  id: 0x717adc21
+  name: "x_char"
+  type_id: 0x5d8155a5
+  offset: 1472
+}
+member {
+  id: 0x2de9701e
+  name: "xa"
+  type_id: 0x80c20070
+}
+member {
+  id: 0x2de970b5
+  name: "xa"
+  type_id: 0x80c20070
+  offset: 256
+}
+member {
+  id: 0x2de972da
+  name: "xa"
+  type_id: 0x80c20070
+  offset: 1216
+}
+member {
+  id: 0x8c0b8c3b
+  name: "xa_flags"
+  type_id: 0xf1a6dfed
+  offset: 32
+}
+member {
+  id: 0xfbed12c2
+  name: "xa_head"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0x310049ee
+  name: "xa_lock"
+  type_id: 0xf313e71a
+}
+member {
+  id: 0xdbe05ee6
+  name: "xacterrs"
+  type_id: 0x295c7202
+  offset: 1064
+}
+member {
+  id: 0xefcc01d9
+  name: "xarray"
+  type_id: 0x2aa0b9bb
+}
+member {
+  id: 0x9663ce13
+  name: "xarray_start"
+  type_id: 0x27a7c613
+}
+member {
+  id: 0xe4c50312
+  name: "xattr"
+  type_id: 0x05b572ab
+  offset: 64
+}
+member {
+  id: 0x8b577cf3
+  name: "xattr_flags"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0xb7f102d6
+  name: "xattrs"
+  type_id: 0x283919e1
+  offset: 576
+}
+member {
+  id: 0xb7f10cd3
+  name: "xattrs"
+  type_id: 0x283919e1
+  offset: 448
+}
+member {
+  id: 0xeb800b39
+  name: "xdp"
+  type_id: 0x1a770e0b
+}
+member {
+  id: 0xeba62591
+  name: "xdp"
+  type_id: 0x3c59a693
+}
+member {
+  id: 0xebf2c33e
+  name: "xdp"
+  type_id: 0x68b01961
+  offset: 32256
+}
+member {
+  id: 0x90ed296e
+  name: "xdp_bulkq"
+  type_id: 0x1dd82254
+  offset: 7936
+}
+member {
+  id: 0x4f0461a4
+  name: "xdp_has_frags"
+  type_id: 0x6d7f5ff6
+  offset: 1264
+}
+member {
+  id: 0x4f04665d
+  name: "xdp_has_frags"
+  type_id: 0x6d7f5ff6
+  offset: 72
+}
+member {
+  id: 0xe5abd152
+  name: "xdp_mem_id"
+  type_id: 0xc9082b19
+  offset: 1920
+}
+member {
+  id: 0xa71f034e
+  name: "xdp_prog"
+  type_id: 0x3382a638
+  offset: 6336
+}
+member {
+  id: 0xa71f0fce
+  name: "xdp_prog"
+  type_id: 0x3382a638
+  offset: 1280
+}
+member {
+  id: 0xce7c725f
+  name: "xdp_rxq"
+  type_id: 0xa9083bc9
+}
+member {
+  id: 0x28f67828
+  name: "xdp_state"
+  type_id: 0x1997574a
+  offset: 19584
+}
+member {
+  id: 0xd9690496
+  name: "xen"
+  type_id: 0x56bbf50a
+}
+member {
+  id: 0x768fe3f7
+  name: "xfer_completion"
+  type_id: 0x3fcbf304
+  offset: 10688
+}
+member {
+  id: 0x320329da
+  name: "xfer_func"
+  type_id: 0xe62ebf07
+  offset: 352
+}
+member {
+  id: 0x32032ea7
+  name: "xfer_func"
+  type_id: 0xe62ebf07
+  offset: 224
+}
+member {
+  id: 0x320d08b5
+  name: "xfer_func"
+  type_id: 0xe8034002
+  offset: 192
+}
+member {
+  id: 0x3256e3d6
+  name: "xfer_func"
+  type_id: 0xb3e7bac9
+  offset: 1472
+}
+member {
+  id: 0x4b7b4670
+  name: "xfer_get_init"
+  type_id: 0x2e160375
+  offset: 64
+}
+member {
+  id: 0xa4fac842
+  name: "xfer_list"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0x87a2e798
+  name: "xfer_put"
+  type_id: 0x0d677682
+  offset: 320
+}
+member {
+  id: 0x14a81932
+  name: "xfer_timeout_ms"
+  type_id: 0x4585663f
+  offset: 10592
+}
+member {
+  id: 0x8afd4ea7
+  name: "xflags"
+  type_id: 0xc9082b19
+  offset: 3744
+}
+member {
+  id: 0x0367e031
+  name: "xfrag"
+  type_id: 0x87af4650
+  offset: 5632
+}
+member {
+  id: 0x6e6e4830
+  name: "xfrm"
+  type_id: 0x0537fb37
+  offset: 256
+}
+member {
+  id: 0x6ef0e081
+  name: "xfrm"
+  type_id: 0x9b970fcd
+  offset: 23040
+}
+member {
+  id: 0x1cef4cdb
+  name: "xfrm4_dst_ops"
+  type_id: 0xaf33de29
+  offset: 3584
+}
+member {
+  id: 0x327af59a
+  name: "xfrm4_hdr"
+  type_id: 0x34544a3f
+  offset: 1280
+}
+member {
+  id: 0x46a35b1d
+  name: "xfrm6_dst_ops"
+  type_id: 0xaf33de29
+  offset: 5120
+}
+member {
+  id: 0xff317363
+  name: "xfrm6_hdr"
+  type_id: 0x34544a3f
+  offset: 256
+}
+member {
+  id: 0x5409e737
+  name: "xfrm6_local_rxpmtu"
+  type_id: 0x0e2bd379
+  offset: 1088
+}
+member {
+  id: 0x650cb617
+  name: "xfrm6_rcv_encap"
+  type_id: 0x2dcd9764
+  offset: 1216
+}
+member {
+  id: 0xe3d0d572
+  name: "xfrm6_udp_encap_rcv"
+  type_id: 0x2c210d23
+  offset: 1152
+}
+member {
+  id: 0x28edafb5
+  name: "xfrm_cfg_mutex"
+  type_id: 0xa7c362b0
+  offset: 6784
+}
+member {
+  id: 0xc3a72858
+  name: "xfrm_info"
+  type_id: 0xeeceff4e
+}
+member {
+  id: 0x12d4c044
+  name: "xfrm_nr"
+  type_id: 0x295c7202
+  offset: 3232
+}
+member {
+  id: 0xb6b767d1
+  name: "xfrm_policy_hash_generation"
+  type_id: 0xeb90906e
+  offset: 6720
+}
+member {
+  id: 0x42a2340b
+  name: "xfrm_policy_lock"
+  type_id: 0xf313e71a
+  offset: 6752
+}
+member {
+  id: 0x1bbfac9e
+  name: "xfrm_state_hash_generation"
+  type_id: 0xeb90906e
+  offset: 6688
+}
+member {
+  id: 0x2f6f3f38
+  name: "xfrm_state_lock"
+  type_id: 0xf313e71a
+  offset: 6656
+}
+member {
+  id: 0xb8e70959
+  name: "xfrm_statistics"
+  type_id: 0x32c40901
+  offset: 384
+}
+member {
+  id: 0x0a6b0d61
+  name: "xfrm_vec"
+  type_id: 0x818a3ee6
+  offset: 3328
+}
+member {
+  id: 0x8f73e833
+  name: "xhc_state"
+  type_id: 0x4585663f
+  offset: 20416
+}
+member {
+  id: 0x4f5aa765
+  name: "xhci"
+  type_id: 0x1285100d
+  offset: 512
+}
+member {
+  id: 0x4ddbf650
+  name: "xid"
+  type_id: 0xc9082b19
+  offset: 2176
+}
+member {
+  id: 0x3025ab5e
+  name: "xlate"
+  type_id: 0x25aa41dd
+  offset: 512
+}
+member {
+  id: 0x302c47a4
+  name: "xlate"
+  type_id: 0x2c4d086f
+  offset: 256
+}
+member {
+  id: 0x30911f6a
+  name: "xlate"
+  type_id: 0x911caf51
+  offset: 128
+}
+member {
+  id: 0x0b59f17d
+  name: "xlate_extended"
+  type_id: 0x01d9df85
+  offset: 576
+}
+member {
+  id: 0xee360321
+  name: "xlate_tdm_slot_mask"
+  type_id: 0x29b21979
+  offset: 320
+}
+member {
+  id: 0xb62bfce4
+  name: "xmit"
+  type_id: 0xf0e7e9e3
+  offset: 3648
+}
+member {
+  id: 0xb6e43317
+  name: "xmit"
+  type_id: 0x3f282cdf
+  offset: 768
+}
+member {
+  id: 0xb6f6b757
+  name: "xmit"
+  type_id: 0x2da469fc
+  offset: 256
+}
+member {
+  id: 0x67ebfb92
+  name: "xmit_async"
+  type_id: 0x2d664268
+  offset: 256
+}
+member {
+  id: 0x49b65044
+  name: "xmit_buf"
+  type_id: 0x1df06cce
+  offset: 3072
+}
+member {
+  id: 0x90e05eee
+  name: "xmit_current"
+  type_id: 0x89ea5acf
+  offset: 152
+}
+member {
+  id: 0x26808f7d
+  name: "xmit_fifo"
+  type_id: 0x1693926a
+  offset: 3136
+}
+member {
+  id: 0x413fe0a6
+  name: "xmit_fifo_size"
+  type_id: 0x6720d32f
+  offset: 160
+}
+member {
+  id: 0xf5166f2a
+  name: "xmit_lock_owner"
+  type_id: 0x6720d32f
+  offset: 1568
+}
+member {
+  id: 0x5b2a8486
+  name: "xmit_oldest"
+  type_id: 0x89ea5acf
+  offset: 144
+}
+member {
+  id: 0x37e5714d
+  name: "xmit_sync"
+  type_id: 0x2d664268
+  offset: 192
+}
+member {
+  id: 0x68095b2f
+  name: "xoffset"
+  type_id: 0xe62ebf07
+  offset: 128
+}
+member {
+  id: 0x8eccdd4e
+  name: "xol_area"
+  type_id: 0x1e7ab397
+}
+member {
+  id: 0x160e437d
+  name: "xol_mapping"
+  type_id: 0x5bc753ae
+  offset: 320
+}
+member {
+  id: 0x77d0756f
+  name: "xol_vaddr"
+  type_id: 0x33756485
+  offset: 320
+}
+member {
+  id: 0x66082ad0
+  name: "xops"
+  type_id: 0x3f9286b5
+  offset: 64
+}
+member {
+  id: 0x82c3d11e
+  name: "xor_align"
+  type_id: 0x5d9a121f
+  offset: 736
+}
+member {
+  id: 0x48bcaa45
+  name: "xp"
+  type_id: 0x18ec8d59
+}
+member {
+  id: 0xb802c69a
+  name: "xp_net"
+  type_id: 0xb335d16f
+}
+member {
+  id: 0x6f74e856
+  name: "xp_node"
+  type_id: 0x0819c1d1
+  offset: 256
+}
+member {
+  id: 0x7c0b3c9f
+  name: "xpanstep"
+  type_id: 0xe8034002
+  offset: 320
+}
+member {
+  id: 0x0989f76b
+  name: "xpd_head"
+  type_id: 0xd3c80119
+  offset: 320
+}
+member {
+  id: 0xa7075a62
+  name: "xperms"
+  type_id: 0x1e641f1b
+}
+member {
+  id: 0x75da330f
+  name: "xpn"
+  type_id: 0x6d7f5ff6
+  offset: 256
+}
+member {
+  id: 0x40caf403
+  name: "xps_maps"
+  type_id: 0x64bca28e
+  offset: 8000
+}
+member {
+  id: 0x8d1c80aa
+  name: "xres"
+  type_id: 0xc9082b19
+  offset: 96
+}
+member {
+  id: 0x8d33afbd
+  name: "xres"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x8db2a508
+  name: "xres"
+  type_id: 0x6720d32f
+  offset: 288
+}
+member {
+  id: 0xe5d56bf3
+  name: "xres_virtual"
+  type_id: 0xe62ebf07
+  offset: 64
+}
+member {
+  id: 0x994b9817
+  name: "xs_net"
+  type_id: 0xb335d16f
+}
+member {
+  id: 0x241d5a69
+  name: "xsk"
+  type_id: 0x2ffc8179
+}
+member {
+  id: 0x7cb1f9ae
+  name: "xsk_dma_list"
+  type_id: 0xd3c80119
+  offset: 512
+}
+member {
+  id: 0x614c5693
+  name: "xsk_tx_list"
+  type_id: 0xd3c80119
+  offset: 128
+}
+member {
+  id: 0x006dd85a
+  name: "xsk_tx_list_lock"
+  type_id: 0xf313e71a
+  offset: 256
+}
+member {
+  id: 0x3fb905fd
+  name: "xso"
+  type_id: 0x8907f312
+  offset: 5248
+}
+member {
+  id: 0x8c996ca6
+  name: "xstats"
+  type_id: 0x18bd6530
+  offset: 320
+}
+member {
+  id: 0xdd71e706
+  name: "xstats_len"
+  type_id: 0x6720d32f
+  offset: 384
+}
+member {
+  id: 0xff142554
+  name: "y"
+  type_id: 0x6720d32f
+  offset: 3360
+}
+member {
+  id: 0xff5abb3c
+  name: "y"
+  type_id: 0x29bf06ba
+  offset: 16
+}
+member {
+  id: 0xff6f341e
+  name: "y"
+  type_id: 0x1c3dbe5a
+  offset: 224
+}
+member {
+  id: 0xff9b077a
+  name: "y"
+  type_id: 0xe8034002
+  offset: 16
+}
+member {
+  id: 0xffba0f94
+  name: "y"
+  type_id: 0xc9082b19
+  offset: 32
+}
+member {
+  id: 0xffba0fc7
+  name: "y"
+  type_id: 0xc9082b19
+  offset: 8224
+}
+member {
+  id: 0xffe24985
+  name: "y"
+  type_id: 0x914dbfdc
+  offset: 16
+}
+member {
+  id: 0x3b27c068
+  name: "y1"
+  type_id: 0x6720d32f
+  offset: 32
+}
+member {
+  id: 0x3b89dd3f
+  name: "y1"
+  type_id: 0xc93e017b
+  offset: 16
+}
+member {
+  id: 0xfa4d7ab6
+  name: "y2"
+  type_id: 0xc93e017b
+  offset: 48
+}
+member {
+  id: 0xfae36126
+  name: "y2"
+  type_id: 0x6720d32f
+  offset: 96
+}
+member {
+  id: 0x81421250
+  name: "y2_ac_delta"
+  type_id: 0x901eaf6a
+  offset: 24
+}
+member {
+  id: 0x25476b94
+  name: "y2_dc_delta"
+  type_id: 0x901eaf6a
+  offset: 16
+}
+member {
+  id: 0xabb72156
+  name: "y420_cmdb_map"
+  type_id: 0x92233392
+  offset: 576
+}
+member {
+  id: 0xfc8366e3
+  name: "y420_cmdb_modes"
+  type_id: 0x80904a3b
+  offset: 320
+}
+member {
+  id: 0x720344f1
+  name: "y420_dc_modes"
+  type_id: 0x295c7202
+  offset: 640
+}
+member {
+  id: 0x22a80971
+  name: "y420_vdb_modes"
+  type_id: 0x80904a3b
+  offset: 64
+}
+member {
+  id: 0x9b19b0fb
+  name: "y_ac_qi"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0xdf846721
+  name: "y_dc_delta"
+  type_id: 0x901eaf6a
+  offset: 8
+}
+member {
+  id: 0xed136dde
+  name: "y_mode"
+  type_id: 0xadbf8b75
+  offset: 14376
+}
+member {
+  id: 0x439f779d
+  name: "y_mode_probs"
+  type_id: 0xa0b4fda8
+  offset: 8448
+}
+member {
+  id: 0x9fa4c393
+  name: "ycbcr_420_allowed"
+  type_id: 0x6d7f5ff6
+  offset: 1336
+}
+member {
+  id: 0x60808813
+  name: "ycbcr_enc"
+  type_id: 0xb3e7bac9
+}
+member {
+  id: 0x60d54116
+  name: "ycbcr_enc"
+  type_id: 0xe62ebf07
+}
+member {
+  id: 0x60d541bd
+  name: "ycbcr_enc"
+  type_id: 0xe62ebf07
+  offset: 256
+}
+member {
+  id: 0x60db6ce9
+  name: "ycbcr_enc"
+  type_id: 0xe8034002
+}
+member {
+  id: 0x4cc72794
+  name: "ycc_quantization_range"
+  type_id: 0xcfb545c6
+  offset: 384
+}
+member {
+  id: 0x580a5dd4
+  name: "year"
+  type_id: 0xc93e017b
+  offset: 176
+}
+member {
+  id: 0x582546da
+  name: "year"
+  type_id: 0xe62ebf07
+  offset: 800
+}
+member {
+  id: 0xd01d6076
+  name: "yes_ranges"
+  type_id: 0x3a54c5e0
+}
+member {
+  id: 0x2bfee0bf
+  name: "yield_task"
+  type_id: 0x0c560434
+  offset: 192
+}
+member {
+  id: 0x857fc2c6
+  name: "yield_to_task"
+  type_id: 0x37c41f38
+  offset: 256
+}
+member {
+  id: 0xb1924092
+  name: "yld_count"
+  type_id: 0x4585663f
+  offset: 28608
+}
+member {
+  id: 0x65be039b
+  name: "yoffset"
+  type_id: 0xe62ebf07
+  offset: 160
+}
+member {
+  id: 0x05f8b7b6
+  name: "ypanstep"
+  type_id: 0xe8034002
+  offset: 336
+}
+member {
+  id: 0xb8005ba2
+  name: "yres"
+  type_id: 0x6720d32f
+  offset: 320
+}
+member {
+  id: 0xb8815f32
+  name: "yres"
+  type_id: 0xe62ebf07
+  offset: 32
+}
+member {
+  id: 0xb8ae7d5f
+  name: "yres"
+  type_id: 0xc9082b19
+  offset: 128
+}
+member {
+  id: 0x431fb38a
+  name: "yres_virtual"
+  type_id: 0xe62ebf07
+  offset: 96
+}
+member {
+  id: 0x3b743013
+  name: "ywrapstep"
+  type_id: 0xe8034002
+  offset: 352
+}
+member {
+  id: 0xdc4044fc
+  name: "za_state"
+  type_id: 0x18bd6530
+  offset: 5440
+}
+member {
+  id: 0xe15e2cfc
+  name: "zalloc_page"
+  type_id: 0x1ebe4388
+}
+member {
+  id: 0x511e5f54
+  name: "zalloc_pages_exact"
+  type_id: 0x1076c35e
+  offset: 64
+}
+member {
+  id: 0x8aa8a43b
+  name: "zc"
+  type_id: 0x6d7f5ff6
+  offset: 360
+}
+member {
+  id: 0xe7701d1b
+  name: "zero"
+  type_id: 0x4585663f
+  offset: 338
+  bitsize: 1
+}
+member {
+  id: 0xf58e8342
+  name: "zero_flag_mask"
+  type_id: 0x6d7f5ff6
+  offset: 2176
+}
+member {
+  id: 0xa5a19374
+  name: "zero_page_range"
+  type_id: 0x2e968ae1
+  offset: 128
+}
+member {
+  id: 0x12bba865
+  name: "zext_dst"
+  type_id: 0x6d7f5ff6
+  offset: 328
+}
+member {
+  id: 0x8134c684
+  name: "zombie"
+  type_id: 0x6d7f5ff6
+  offset: 2304
+}
+member {
+  id: 0xc27d8a22
+  name: "zone"
+  type_id: 0x914dbfdc
+  offset: 32
+}
+member {
+  id: 0xc2e6a287
+  name: "zone"
+  type_id: 0x0a63398f
+  offset: 512
+}
+member {
+  id: 0xc2e6a99f
+  name: "zone"
+  type_id: 0x0a63398f
+}
+member {
+  id: 0x86c953a0
+  name: "zone_device_data"
+  type_id: 0x18bd6530
+  offset: 64
+}
+member {
+  id: 0x7ea98be0
+  name: "zone_idx"
+  type_id: 0x6720d32f
+  offset: 64
+}
+member {
+  id: 0xde15f2ac
+  name: "zone_pgdat"
+  type_id: 0x03038214
+  offset: 640
+}
+member {
+  id: 0x22a28faf
+  name: "zone_start_pfn"
+  type_id: 0x33756485
+  offset: 896
+}
+member {
+  id: 0xb5d14adb
+  name: "zone_write_granularity"
+  type_id: 0x4585663f
+  offset: 736
+}
+member {
+  id: 0xaf3e33dd
+  name: "zoned"
+  type_id: 0xc0a0d1f0
+  offset: 864
+}
+member {
+  id: 0xc2f31ff3
+  name: "zpos"
+  type_id: 0x4585663f
+  offset: 576
+}
+member {
+  id: 0x5fb0baf4
+  name: "zpos_changed"
+  type_id: 0x6d7f5ff6
+  offset: 84
+  bitsize: 1
+}
+member {
+  id: 0x78fb6b21
+  name: "zpos_property"
+  type_id: 0x2a670b41
+  offset: 10176
+}
+member {
+  id: 0x309714e1
+  name: "zspage_cachep"
+  type_id: 0x2efd5036
+  offset: 16448
+}
+member {
+  id: 0x6006a5e2
+  name: "zx_wakeup_clear_needed"
+  type_id: 0x4585663f
+  offset: 5617
+  bitsize: 1
+}
+struct_union {
+  id: 0x0098e4bc
+  kind: STRUCT
+  definition {
+    bytesize: 40
+    member_id: 0x630df6eb
+    member_id: 0xdf2b35d9
+    member_id: 0x5c405aa7
+    member_id: 0x015536d8
+    member_id: 0x317e66e0
+  }
+}
+struct_union {
+  id: 0x00b57da4
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x6364e5fc
+  }
+}
+struct_union {
+  id: 0x00bf9506
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x63f78ba4
+    member_id: 0xb8ccd046
+  }
+}
+struct_union {
+  id: 0x00e0bdde
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x6245278e
+    member_id: 0x76c39912
+  }
+}
+struct_union {
+  id: 0x01122cba
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x65ec57ef
+    member_id: 0x15f66868
+  }
+}
+struct_union {
+  id: 0x012ce22f
+  kind: STRUCT
+  definition {
+    bytesize: 4
+    member_id: 0x65ec9733
+    member_id: 0xee0ce3f8
+  }
+}
+struct_union {
+  id: 0x015e6d97
+  kind: STRUCT
+  definition {
+    bytesize: 12
+    member_id: 0x64b75aba
+    member_id: 0x7f6f2d46
+    member_id: 0x90a523b0
+  }
+}
+struct_union {
+  id: 0x01648e16
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x64d95a34
+    member_id: 0xfafcf72d
+    member_id: 0x8d3d36af
+    member_id: 0xcbea6804
+    member_id: 0x5bed4aba
+    member_id: 0x0b20e7c3
+    member_id: 0x8f367e0b
+    member_id: 0x87fcb925
+    member_id: 0xeaa4a738
+    member_id: 0xb28a9bf2
+    member_id: 0x2fb88d8a
+  }
+}
+struct_union {
+  id: 0x017df00c
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x6432bc18
+    member_id: 0x746f460e
+  }
+}
+struct_union {
+  id: 0x01857b68
+  kind: STRUCT
+  definition {
+    bytesize: 56
+    member_id: 0x6764df43
+    member_id: 0xc077ad8d
+    member_id: 0x562ce86b
+    member_id: 0x0f78a515
+    member_id: 0x65c371d0
+    member_id: 0x5a60146f
+    member_id: 0xf8485171
+    member_id: 0x2d8577bb
+  }
+}
+struct_union {
+  id: 0x01b47a17
+  kind: STRUCT
+  definition {
+    bytesize: 12
+    member_id: 0x67b3b991
+    member_id: 0xd370c280
+    member_id: 0x324de1e4
+    member_id: 0x2d8a4e32
+  }
+}
+struct_union {
+  id: 0x02c70092
+  kind: STRUCT
+  definition {
+    bytesize: 4
+    member_id: 0x6a7bd9c4
+    member_id: 0xd6c8e3d3
+  }
+}
+struct_union {
+  id: 0x0312ab60
+  kind: STRUCT
+  definition {
+    member_id: 0x6d24d29f
+    member_id: 0xdf6c70da
+  }
+}
+struct_union {
+  id: 0x033c2bb8
+  kind: STRUCT
+  definition {
+    bytesize: 72
+    member_id: 0x6dda6e7d
+    member_id: 0x9ba00ef7
+    member_id: 0x73fbf68d
+    member_id: 0x07c20efd
+    member_id: 0x4b34b9aa
+  }
+}
+struct_union {
+  id: 0x0366c345
+  kind: STRUCT
+  definition {
+    bytesize: 24
+    member_id: 0x6ca8534e
+    member_id: 0x82e2b777
+    member_id: 0xaf3705dd
+    member_id: 0xb58138eb
+  }
+}
+struct_union {
+  id: 0x039f864e
+  kind: STRUCT
+  definition {
+    bytesize: 32
+    member_id: 0x6fcf0a57
+  }
+}
+struct_union {
+  id: 0x03a4fa40
+  kind: STRUCT
+  definition {
+    bytesize: 24
+    member_id: 0x6f364740
+    member_id: 0x141fddc5
+    member_id: 0xa2f022cd
+  }
+}
+struct_union {
+  id: 0x03d32356
+  kind: STRUCT
+  definition {
+    bytesize: 72
+    member_id: 0x6e4d805e
+    member_id: 0xb049594d
+    member_id: 0x57b79a32
+    member_id: 0x87ea4d5c
+  }
+}
+struct_union {
+  id: 0x0416665f
+  kind: STRUCT
+  definition {
+    bytesize: 4
+    member_id: 0x71df6098
+    member_id: 0x37974d15
+    member_id: 0x7d107eef
+    member_id: 0xd44af669
+  }
+}
+struct_union {
+  id: 0x042d9ee3
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x715799b8
+    member_id: 0x50f15a4b
+  }
+}
+struct_union {
+  id: 0x048fc360
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x73096b7f
+    member_id: 0x877591f3
+  }
+}
+struct_union {
+  id: 0x04935a3e
+  kind: STRUCT
+  definition {
+    bytesize: 32
+    member_id: 0x73fbf26c
+    member_id: 0x07c203de
+    member_id: 0x4bf9b0b2
+  }
+}
+struct_union {
+  id: 0x04cbe228
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x72d76384
+    member_id: 0x49d5b588
+    member_id: 0x2d8eae00
+    member_id: 0x73960132
+  }
+}
+struct_union {
+  id: 0x04d2ff93
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x72d76384
+    member_id: 0x2d8ea7da
+  }
+}
+struct_union {
+  id: 0x04d99c3a
+  kind: STRUCT
+  definition {
+    bytesize: 4
+    member_id: 0x72d76384
+  }
+}
+struct_union {
+  id: 0x04ecbf8c
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x7203ed5f
+  }
+}
+struct_union {
+  id: 0x0524ca5a
+  kind: STRUCT
+  definition {
+    bytesize: 80
+    member_id: 0x75979878
+    member_id: 0xb5064699
+    member_id: 0xa48dc1ed
+    member_id: 0xb6c5e420
+    member_id: 0x63835af9
+    member_id: 0xdfd3d3d5
+    member_id: 0x60413c7c
+    member_id: 0x31451ed2
+    member_id: 0xd62a03d6
+    member_id: 0x2fe83e26
+    member_id: 0x131ebeb8
+    member_id: 0x58ff84b7
+    member_id: 0x937737d9
+    member_id: 0x55439ec7
+    member_id: 0x434399f9
+    member_id: 0xf5992aa2
+    member_id: 0x3fd85fb4
+    member_id: 0x2f674022
+    member_id: 0xe499fa79
+    member_id: 0xd8983093
+    member_id: 0xd7893e3d
+    member_id: 0x67a8a899
+    member_id: 0x99c24236
+    member_id: 0x7e581441
+    member_id: 0xa5788b5a
+    member_id: 0x00a993ec
+    member_id: 0x3e555642
+    member_id: 0x9e06642f
+    member_id: 0x0578d662
+    member_id: 0x208466ce
+    member_id: 0xae638ddc
+    member_id: 0xe473c8a3
+    member_id: 0xe014f69c
+    member_id: 0x309f343f
+    member_id: 0x10027c29
+    member_id: 0x2e201083
+    member_id: 0x63d8a0d0
+    member_id: 0x1e9931b6
+    member_id: 0x27f32dfb
+    member_id: 0x31e4dfba
+    member_id: 0x18a991e6
+    member_id: 0x3b0afd71
+    member_id: 0x3e670f18
+    member_id: 0x386d7ab3
+    member_id: 0x83671aee
+    member_id: 0x6383669c
+    member_id: 0xfa06119e
+    member_id: 0xdcaac8b7
+    member_id: 0x2a829378
+    member_id: 0x827a15cf
+    member_id: 0xd61d5458
+    member_id: 0x2d081e2a
+    member_id: 0x637600d0
+  }
+}
+struct_union {
+  id: 0x055beb6d
+  kind: STRUCT
+  definition {
+    bytesize: 40
+    member_id: 0x74c0dd03
+    member_id: 0x1e63d94a
+  }
+}
+struct_union {
+  id: 0x056558d6
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x74406da1
+    member_id: 0x641d97b7
+  }
+}
+struct_union {
+  id: 0x0568605c
+  kind: STRUCT
+  definition {
+    bytesize: 48
+    member_id: 0x746f4b35
+    member_id: 0x7ff43be2
+    member_id: 0x2d8eae00
+    member_id: 0x9c969135
+    member_id: 0x9af63b6f
+    member_id: 0xa18f0ce1
+    member_id: 0x27dcd73a
+    member_id: 0xa8a8f2f6
+    member_id: 0x2a095281
+  }
+}
+struct_union {
+  id: 0x05fd3859
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x7615c958
+    member_id: 0x503b50fe
+  }
+}
+struct_union {
+  id: 0x0625c03a
+  kind: STRUCT
+  definition {
+    bytesize: 20
+    member_id: 0x79caa317
+    member_id: 0xec1205eb
+    member_id: 0xa2bb1b42
+    member_id: 0x2efc9814
+  }
+}
+struct_union {
+  id: 0x0625fa4c
+  kind: STRUCT
+  definition {
+    bytesize: 20
+    member_id: 0x79caa317
+    member_id: 0xec594ac3
+  }
+}
+struct_union {
+  id: 0x068b4f89
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x7b851b7b
+    member_id: 0x199905f2
+    member_id: 0xaf3705dd
+  }
+}
+struct_union {
+  id: 0x068b6444
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x7b851b7b
+    member_id: 0x199905f2
+  }
+}
+struct_union {
+  id: 0x068b6e8b
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x7b38bd8d
+    member_id: 0xa414ce69
+  }
+}
+struct_union {
+  id: 0x068b7aef
+  kind: STRUCT
+  definition {
+    bytesize: 32
+    member_id: 0x7b851b7b
+    member_id: 0x199905f2
+    member_id: 0x7afc4437
+    member_id: 0x53829adc
+    member_id: 0x40d10a15
+  }
+}
+struct_union {
+  id: 0x06b074d3
+  kind: STRUCT
+  definition {
+    bytesize: 2
+    member_id: 0x7be9b727
+    member_id: 0x99007466
+    member_id: 0x7772834e
+  }
+}
+struct_union {
+  id: 0x074e13f5
+  kind: STRUCT
+  definition {
+    bytesize: 32
+    member_id: 0x7c00ef52
+    member_id: 0x8974866b
+    member_id: 0xc76cfdee
+  }
+}
+struct_union {
+  id: 0x079bc2f5
+  kind: STRUCT
+  definition {
+    bytesize: 24
+    member_id: 0x7fb53355
+    member_id: 0x6b90bd2c
+    member_id: 0xbbfcbfdf
+    member_id: 0xaddf2f83
+    member_id: 0xff7fdfd9
+  }
+}
+struct_union {
+  id: 0x07ba491c
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x7f7538b5
+    member_id: 0x2d0fa9b6
+  }
+}
+struct_union {
+  id: 0x07d0e9f2
+  kind: STRUCT
+  definition {
+    bytesize: 64
+    member_id: 0x7e283ffd
+    member_id: 0xda8b58b6
+  }
+}
+struct_union {
+  id: 0x0803e9c5
+  kind: STRUCT
+  definition {
+    bytesize: 24
+    member_id: 0x41e1a23f
+    member_id: 0x5f1b5e34
+    member_id: 0x0d82b484
+    member_id: 0x9ac15baf
+  }
+}
+struct_union {
+  id: 0x08c660f0
+  kind: STRUCT
+  definition {
+    bytesize: 9
+    member_id: 0x426f7b70
+    member_id: 0xc7e42e59
+    member_id: 0x0ff0634e
+  }
+}
+struct_union {
+  id: 0x08d11dc7
+  kind: STRUCT
+  definition {
+    bytesize: 20
+    member_id: 0x42990dd1
+    member_id: 0x6c9b7901
+    member_id: 0xf2b3f8bb
+    member_id: 0x6917d1b8
+    member_id: 0x673cd829
+    member_id: 0xa109b6c6
+  }
+}
+struct_union {
+  id: 0x08d2683b
+  kind: STRUCT
+  definition {
+    bytesize: 20
+    member_id: 0x42758017
+    member_id: 0x8d202029
+    member_id: 0x1366b916
+    member_id: 0xd052cad3
+  }
+}
+struct_union {
+  id: 0x0922f100
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x456e304f
+    member_id: 0x54dea509
+    member_id: 0x3985faa1
+    member_id: 0x032ff299
+    member_id: 0x6c60ee02
+    member_id: 0xd6db9eae
+    member_id: 0xaf875acd
+  }
+}
+struct_union {
+  id: 0x094c30e0
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x44d45015
+    member_id: 0x5580f935
+  }
+}
+struct_union {
+  id: 0x09525e6b
+  kind: STRUCT
+  definition {
+    bytesize: 4
+    member_id: 0x4443eee2
+    member_id: 0xbb84237b
+  }
+}
+struct_union {
+  id: 0x09547003
+  kind: STRUCT
+  definition {
+    bytesize: 32
+    member_id: 0x445b4fe5
+    member_id: 0xbb9c8500
+  }
+}
+struct_union {
+  id: 0x0972de29
+  kind: STRUCT
+  definition {
+    bytesize: 40
+    member_id: 0x44ca16fb
+    member_id: 0xb019ad82
+    member_id: 0x649e226d
+  }
+}
+struct_union {
+  id: 0x09778705
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x44d41ca8
+    member_id: 0xbb13d2b4
+  }
+}
+struct_union {
+  id: 0x09c1f72c
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x46039236
+    member_id: 0xb55dea4a
+  }
+}
+struct_union {
+  id: 0x09c82929
+  kind: STRUCT
+  definition {
+    bytesize: 72
+    member_id: 0x460508c0
+    member_id: 0x94569300
+    member_id: 0xe97773b2
+    member_id: 0xefd35f2c
+    member_id: 0x4c799d4b
+    member_id: 0x6b03711b
+    member_id: 0x0d65ea4b
+    member_id: 0x70d30e58
+    member_id: 0x9941f692
+    member_id: 0x9a5b9286
+  }
+}
+struct_union {
+  id: 0x09d43d69
+  kind: STRUCT
+  definition {
+    bytesize: 24
+    member_id: 0x4662e9e6
+    member_id: 0x8394743f
+    member_id: 0x9b595060
+  }
+}
+struct_union {
+  id: 0x0a19ea99
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x49823f05
+    member_id: 0x54860c8a
+  }
+}
+struct_union {
+  id: 0x0a33316a
+  kind: STRUCT
+  definition {
+    bytesize: 32
+    member_id: 0x497d095e
+    member_id: 0x00e1006a
+    member_id: 0x3ea9d836
+    member_id: 0x30a4eaaa
+  }
+}
+struct_union {
+  id: 0x0a4fe389
+  kind: STRUCT
+  definition {
+    bytesize: 2
+    member_id: 0x488e9d4a
+  }
+}
+struct_union {
+  id: 0x0a5c3627
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x489c397e
+    member_id: 0x5df28c33
+  }
+}
+struct_union {
+  id: 0x0aaa823e
+  kind: STRUCT
+  definition {
+    bytesize: 4
+    member_id: 0x4b1b1b95
+  }
+}
+struct_union {
+  id: 0x0abef6e6
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x4b4ac8f5
+  }
+}
+struct_union {
+  id: 0x0ad62715
+  kind: STRUCT
+  definition {
+    bytesize: 20
+    member_id: 0x4add8ec8
+    member_id: 0x34ac3a50
+    member_id: 0xadd5b431
+    member_id: 0x1dac28b0
+    member_id: 0x73d7e0dc
+    member_id: 0x8a59e26d
+  }
+}
+struct_union {
+  id: 0x0b00a1fe
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x4d25e769
+    member_id: 0x9673fdce
+  }
+}
+struct_union {
+  id: 0x0b0bf9b4
+  kind: STRUCT
+  definition {
+    bytesize: 32
+    member_id: 0x4d25e769
+    member_id: 0xbb303df3
+    member_id: 0x22ea8116
+  }
+}
+struct_union {
+  id: 0x0b2350c4
+  kind: STRUCT
+  definition {
+    member_id: 0x4d7a62a3
+    member_id: 0x4632dc02
+  }
+}
+struct_union {
+  id: 0x0b2c203c
+  kind: STRUCT
+  definition {
+    bytesize: 24
+    member_id: 0x4d0e7528
+    member_id: 0x0f8249e4
+    member_id: 0x64774e30
+    member_id: 0x8b47d058
+    member_id: 0x83b6a5af
+  }
+}
+struct_union {
+  id: 0x0b3c31a1
+  kind: STRUCT
+  definition {
+    bytesize: 24
+    member_id: 0x4dca695b
+    member_id: 0x8bd93b07
+    member_id: 0x65427694
+    member_id: 0xc83d7e44
+  }
+}
+struct_union {
+  id: 0x0b526877
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x4cf8b2b0
+  }
+}
+struct_union {
+  id: 0x0b690cd3
+  kind: STRUCT
+  definition {
+    bytesize: 6
+    member_id: 0x4c152021
+  }
+}
+struct_union {
+  id: 0x0b817a1b
+  kind: STRUCT
+  definition {
+    bytesize: 4
+    member_id: 0x4fb4fb02
+  }
+}
+struct_union {
+  id: 0x0b8c72ea
+  kind: STRUCT
+  definition {
+    bytesize: 4
+    member_id: 0x4f80d8c5
+  }
+}
+struct_union {
+  id: 0x0b8d77a1
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x4f84cde9
+  }
+}
+struct_union {
+  id: 0x0b90f9fe
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x4ff2f495
+  }
+}
+struct_union {
+  id: 0x0b9cf8cf
+  kind: STRUCT
+  definition {
+    bytesize: 4
+    member_id: 0x4fc2f052
+  }
+}
+struct_union {
+  id: 0x0ba0136e
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x4f4285b4
+    member_id: 0x7316d3a4
+    member_id: 0xcdb1f5e2
+  }
+}
+struct_union {
+  id: 0x0ba52234
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x4f259bbe
+  }
+}
+struct_union {
+  id: 0x0bb4a730
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x4f638fae
+  }
+}
+struct_union {
+  id: 0x0bb5b6b9
+  kind: STRUCT
+  definition {
+    bytesize: 4
+    member_id: 0x4f67c989
+  }
+}
+struct_union {
+  id: 0x0bdca382
+  kind: STRUCT
+  definition {
+    bytesize: 40
+    member_id: 0x4ef0f361
+    member_id: 0x336e0499
+  }
+}
+struct_union {
+  id: 0x0c2a8876
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x51cf981e
+    member_id: 0xd4aaa96a
+  }
+}
+struct_union {
+  id: 0x0c479d40
+  kind: STRUCT
+  definition {
+    bytesize: 2
+    member_id: 0x50fae85c
+    member_id: 0x55eccfcd
+    member_id: 0x623e5072
+    member_id: 0xc3811842
+    member_id: 0x17f11969
+  }
+}
+struct_union {
+  id: 0x0cdb3dd6
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x521c8333
+    member_id: 0xc16704da
+  }
+}
+struct_union {
+  id: 0x0d2844e8
+  kind: STRUCT
+  definition {
+    bytesize: 40
+    member_id: 0x555ff25e
+    member_id: 0x4fdfe210
+    member_id: 0x2da185f6
+    member_id: 0xd2ae16a8
+    member_id: 0x747126a2
+    member_id: 0x9848a12d
+  }
+}
+struct_union {
+  id: 0x0d2bad9a
+  kind: STRUCT
+  definition {
+    bytesize: 24
+    member_id: 0x556d57ec
+    member_id: 0x7294d510
+    member_id: 0x663d9df7
+  }
+}
+struct_union {
+  id: 0x0d4ccc92
+  kind: STRUCT
+  definition {
+    bytesize: 1
+    member_id: 0x54e3cd2b
+    member_id: 0x614fc162
+    member_id: 0xa3de0879
+    member_id: 0x127c7ffd
+  }
+}
+struct_union {
+  id: 0x0d58a5a8
+  kind: STRUCT
+  definition {
+    bytesize: 48
+    member_id: 0x5491bc0c
+    member_id: 0x4290bdc6
+    member_id: 0xa983b60c
+    member_id: 0xfdc1a7ec
+  }
+}
+struct_union {
+  id: 0x0d860487
+  kind: STRUCT
+  definition {
+    bytesize: 56
+    member_id: 0x5761a9c9
+    member_id: 0xc874e707
+    member_id: 0xdcf13bd4
+    member_id: 0xadafa9a5
+    member_id: 0x2dfaa7c6
+    member_id: 0x1a9ae5dc
+    member_id: 0x891a8488
+  }
+}
+struct_union {
+  id: 0x0dcb7fb1
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x569cedab
+  }
+}
+struct_union {
+  id: 0x0e09b329
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x592ba09a
+    member_id: 0xbc5b3492
+    member_id: 0x2467cbde
+  }
+}
+struct_union {
+  id: 0x0e50ff6f
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x587d59bf
+    member_id: 0x8fb76e31
+  }
+}
+struct_union {
+  id: 0x0e526922
+  kind: STRUCT
+  definition {
+    bytesize: 32
+    member_id: 0x5879212c
+    member_id: 0x8196a86b
+    member_id: 0x00c67aae
+    member_id: 0xa5659f65
+  }
+}
+struct_union {
+  id: 0x0e571c96
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x58c3aac3
+    member_id: 0x2ecbf599
+  }
+}
+struct_union {
+  id: 0x0e5e9300
+  kind: STRUCT
+  definition {
+    bytesize: 72
+    member_id: 0x58c3aac3
+    member_id: 0x08f5adf6
+  }
+}
+struct_union {
+  id: 0x0e606441
+  kind: STRUCT
+  definition {
+    bytesize: 40
+    member_id: 0x58c3aac3
+    member_id: 0xf37d4418
+    member_id: 0x5578c6f3
+    member_id: 0x96fedfda
+  }
+}
+struct_union {
+  id: 0x0eac683f
+  kind: STRUCT
+  definition {
+    bytesize: 24
+    member_id: 0x5bb864db
+    member_id: 0xb862f8be
+    member_id: 0xb55ff289
+    member_id: 0xee98e652
+  }
+}
+struct_union {
+  id: 0x0efc611f
+  kind: STRUCT
+  definition {
+    bytesize: 32
+    member_id: 0x5a6010b6
+    member_id: 0x20bbfc38
+    member_id: 0x3c74448b
+    member_id: 0x2d857ee0
+  }
+}
+struct_union {
+  id: 0x0f0b7249
+  kind: STRUCT
+  definition {
+    bytesize: 32
+    member_id: 0x5d7bf520
+    member_id: 0xe719c8c0
+    member_id: 0x365e3956
+    member_id: 0xff72a66c
+  }
+}
+struct_union {
+  id: 0x0f29d6cf
+  kind: STRUCT
+  definition {
+    bytesize: 2
+    member_id: 0x5d164850
+  }
+}
+struct_union {
+  id: 0x0f401ca8
+  kind: STRUCT
+  definition {
+    bytesize: 2
+    member_id: 0x5ce532c4
+    member_id: 0x54530858
+  }
+}
+struct_union {
+  id: 0x0f407a2b
+  kind: STRUCT
+  definition {
+    bytesize: 4
+    member_id: 0x5cb0fbc1
+  }
+}
+struct_union {
+  id: 0x0f4ad8d3
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x5cfa478b
+    member_id: 0x6037a967
+  }
+}
+struct_union {
+  id: 0x0f55086a
+  kind: STRUCT
+  definition {
+    bytesize: 1
+    member_id: 0x5ce532c4
+  }
+}
+struct_union {
+  id: 0x0f5b0825
+  kind: STRUCT
+  definition {
+    bytesize: 12
+    member_id: 0x5c7bba62
+    member_id: 0xa63cb814
+    member_id: 0xb530e15f
+    member_id: 0x113e9160
+  }
+}
+struct_union {
+  id: 0x0f5fa69b
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x5cbbc962
+    member_id: 0x7440609a
+  }
+}
+struct_union {
+  id: 0x0f6d86be
+  kind: STRUCT
+  definition {
+    bytesize: 136
+    member_id: 0x5cb0fbc1
+    member_id: 0xb7cbdc47
+    member_id: 0x398b7926
+  }
+}
+struct_union {
+  id: 0x0f6e64b7
+  kind: STRUCT
+  definition {
+    bytesize: 2
+    member_id: 0x5c5c6be1
+    member_id: 0x54ea517d
+  }
+}
+struct_union {
+  id: 0x0f7fc0d6
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x5c48bbc6
+    member_id: 0x06b56bd6
+    member_id: 0x1e9935be
+  }
+}
+struct_union {
+  id: 0x0fe17a60
+  kind: STRUCT
+  definition {
+    bytesize: 12
+    member_id: 0x5e5f9d50
+    member_id: 0x6b87e46d
+    member_id: 0xe0986dfe
+    member_id: 0xc02088be
+    member_id: 0xcd021601
+    member_id: 0xfc6203f3
+    member_id: 0x02509981
+    member_id: 0x2ce5a4ae
+    member_id: 0x88f5213b
+    member_id: 0xf59a9fea
+    member_id: 0x52944bcc
+  }
+}
+struct_union {
+  id: 0x102e0991
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x215cae19
+    member_id: 0x559b32a7
+  }
+}
+struct_union {
+  id: 0x105131fa
+  kind: STRUCT
+  definition {
+    bytesize: 6
+    member_id: 0x20a86b39
+    member_id: 0x5d1646ee
+    member_id: 0xa9fb46c1
+  }
+}
+struct_union {
+  id: 0x1064a749
+  kind: STRUCT
+  definition {
+    bytesize: 2
+    member_id: 0x20238e49
+  }
+}
+struct_union {
+  id: 0x106bce13
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x201e2b22
+  }
+}
+struct_union {
+  id: 0x106c15fd
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x20014498
+  }
+}
+struct_union {
+  id: 0x10732577
+  kind: STRUCT
+  definition {
+    bytesize: 12
+    member_id: 0x20b9944c
+    member_id: 0xc412fd55
+  }
+}
+struct_union {
+  id: 0x1079838a
+  kind: STRUCT
+  definition {
+    bytesize: 4
+    member_id: 0x20571d45
+  }
+}
+struct_union {
+  id: 0x107e5e2d
+  kind: STRUCT
+  definition {
+    bytesize: 4
+    member_id: 0x20486bda
+  }
+}
+struct_union {
+  id: 0x10a1214c
+  kind: STRUCT
+  definition {
+    bytesize: 40
+    member_id: 0x23919a13
+    member_id: 0xa4a183c5
+    member_id: 0xadfdef1c
+    member_id: 0x30e26040
+    member_id: 0xdd5a7248
+  }
+}
+struct_union {
+  id: 0x10a300c8
+  kind: STRUCT
+  definition {
+    bytesize: 112
+    member_id: 0x233de962
+    member_id: 0x00f92ec5
+  }
+}
+struct_union {
+  id: 0x10c3147c
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x22a27dc2
+    member_id: 0x1f3f5fa3
+  }
+}
+struct_union {
+  id: 0x114301c2
+  kind: STRUCT
+  definition {
+    bytesize: 48
+    member_id: 0x24862929
+    member_id: 0x3b3d4f5b
+  }
+}
+struct_union {
+  id: 0x114efe06
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x24c02d11
+    member_id: 0x4a120f63
+    member_id: 0xd4d047b1
+    member_id: 0xb86505a9
+    member_id: 0xebeb17cb
+    member_id: 0xaf6f4ac0
+  }
+}
+struct_union {
+  id: 0x1162939f
+  kind: STRUCT
+  definition {
+    bytesize: 32
+    member_id: 0x2493d07f
+    member_id: 0xa88d6ff6
+  }
+}
+struct_union {
+  id: 0x117f4f93
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x24e4d74d
+    member_id: 0xa8fa6c3d
+  }
+}
+struct_union {
+  id: 0x1200e6db
+  kind: STRUCT
+  definition {
+    bytesize: 4
+    member_id: 0x297dd0d1
+    member_id: 0xcf58d11f
+  }
+}
+struct_union {
+  id: 0x12592f4f
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x28cf1121
+    member_id: 0x1ad44087
+    member_id: 0x6b32a680
+  }
+}
+struct_union {
+  id: 0x125b2ca2
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x28edb9cb
+    member_id: 0x30182ed7
+  }
+}
+struct_union {
+  id: 0x1261d033
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x283653a1
+  }
+}
+struct_union {
+  id: 0x129d9eba
+  kind: STRUCT
+  definition {
+    bytesize: 256
+    member_id: 0x2bc76984
+  }
+}
+struct_union {
+  id: 0x12af4722
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x2b8ac6b5
+    member_id: 0x86c953a0
+  }
+}
+struct_union {
+  id: 0x12d35f52
+  kind: STRUCT
+  definition {
+    bytesize: 72
+    member_id: 0x2a81612b
+    member_id: 0x7ddf0fa7
+    member_id: 0xd069d543
+    member_id: 0x6b7e0318
+    member_id: 0x654f3c41
+    member_id: 0xf5747160
+    member_id: 0xd474418d
+    member_id: 0xc925f95e
+    member_id: 0xa32be5db
+    member_id: 0x69af75d7
+    member_id: 0xe986c7d2
+    member_id: 0x86c2263a
+    member_id: 0x2b38467e
+    member_id: 0x3dec1d60
+  }
+}
+struct_union {
+  id: 0x1301986c
+  kind: STRUCT
+  definition {
+    bytesize: 64
+    member_id: 0x2d1fec85
+    member_id: 0xa89e596a
+  }
+}
+struct_union {
+  id: 0x13064264
+  kind: STRUCT
+  definition {
+    bytesize: 88
+    member_id: 0x2d1fec85
+    member_id: 0xb75a0aec
+    member_id: 0xacf78dbd
+    member_id: 0x85260d3d
+  }
+}
+struct_union {
+  id: 0x130b9b47
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x2d1fec85
+    member_id: 0x808f755b
+    member_id: 0x1dbe96aa
+    member_id: 0x3c63eeb5
+  }
+}
+struct_union {
+  id: 0x130fee63
+  kind: STRUCT
+  definition {
+    bytesize: 4
+    member_id: 0x2d8eaae1
+  }
+}
+struct_union {
+  id: 0x13110934
+  kind: STRUCT
+  definition {
+    bytesize: 64
+    member_id: 0x2d244e18
+    member_id: 0xd1c518f1
+    member_id: 0xbc016762
+    member_id: 0xbd0eb129
+    member_id: 0xcf0bff51
+  }
+}
+struct_union {
+  id: 0x131a07fe
+  kind: STRUCT
+  definition {
+    bytesize: 64
+    member_id: 0x2d1fec85
+    member_id: 0xc692d18f
+    member_id: 0x72c081ac
+  }
+}
+struct_union {
+  id: 0x13222919
+  kind: STRUCT
+  definition {
+    bytesize: 24
+    member_id: 0x2da18c75
+    member_id: 0x982b42d1
+    member_id: 0x103ee9d3
+  }
+}
+struct_union {
+  id: 0x13279dde
+  kind: STRUCT
+  definition {
+    bytesize: 32
+    member_id: 0x2d1fec85
+    member_id: 0x3009b08a
+    member_id: 0x81331fe7
+    member_id: 0x11c83608
+    member_id: 0x2aee419c
+    member_id: 0x3c63eaff
+  }
+}
+struct_union {
+  id: 0x132f610b
+  kind: STRUCT
+  definition {
+    bytesize: 32
+    member_id: 0x2d8eaae1
+    member_id: 0x82171f7d
+    member_id: 0x2a7a0db6
+    member_id: 0xc41c28c8
+    member_id: 0xada91ab6
+  }
+}
+struct_union {
+  id: 0x1332ef66
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x2d1fec85
+    member_id: 0x6542722c
+  }
+}
+struct_union {
+  id: 0x13366176
+  kind: STRUCT
+  definition {
+    bytesize: 64
+    member_id: 0x2d5bf13a
+    member_id: 0x333aded0
+    member_id: 0x5dff1e76
+    member_id: 0xad0a7d70
+    member_id: 0x91796174
+    member_id: 0xa3c1e3f0
+    member_id: 0x5f094371
+    member_id: 0xbf75fe15
+  }
+}
+struct_union {
+  id: 0x133c86d1
+  kind: STRUCT
+  definition {
+    bytesize: 12
+    member_id: 0x2d1fec85
+    member_id: 0x5ca90da6
+    member_id: 0x4ded59bf
+    member_id: 0x4f04665d
+  }
+}
+struct_union {
+  id: 0x136c8bd8
+  kind: STRUCT
+  definition {
+    bytesize: 128
+    member_id: 0x2cf75783
+    member_id: 0xf46b8ff9
+  }
+}
+struct_union {
+  id: 0x136f5d75
+  kind: STRUCT
+  definition {
+    member_id: 0x2cf33eb6
+    member_id: 0xff580e3d
+  }
+}
+struct_union {
+  id: 0x13a44fd4
+  kind: STRUCT
+  definition {
+    bytesize: 24
+    member_id: 0x2f7cded5
+    member_id: 0x5ccb32d1
+    member_id: 0x394b4495
+    member_id: 0x91a23ae0
+  }
+}
+struct_union {
+  id: 0x13be4e13
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x2f8c4634
+    member_id: 0xc46d15c4
+  }
+}
+struct_union {
+  id: 0x14096380
+  kind: STRUCT
+  definition {
+    bytesize: 12
+    member_id: 0x31884a91
+    member_id: 0x1c99f341
+    member_id: 0x4e0cfd04
+  }
+}
+struct_union {
+  id: 0x142b6733
+  kind: STRUCT
+  definition {
+    bytesize: 960
+    member_id: 0x315ebfd5
+    member_id: 0x42846947
+    member_id: 0xb4fc5530
+    member_id: 0xe0967515
+    member_id: 0x1e8028d5
+    member_id: 0x332a4920
+    member_id: 0x58ec18a9
+    member_id: 0x22548d82
+    member_id: 0x8a0133fe
+    member_id: 0x5a4cacba
+    member_id: 0x2d3a3a75
+    member_id: 0x0a1b0cf3
+    member_id: 0xa5daf9cc
+    member_id: 0x4f86a396
+    member_id: 0xe0fc554a
+    member_id: 0x01c4f5fa
+    member_id: 0x45c461ff
+    member_id: 0x563293aa
+    member_id: 0xb8ae2563
+    member_id: 0x88a70e08
+    member_id: 0x26d31747
+    member_id: 0x1d4efe94
+    member_id: 0xb5c755c8
+    member_id: 0x56d29d21
+    member_id: 0x3efde84d
+    member_id: 0xe3db663c
+    member_id: 0xa08e132e
+    member_id: 0x07595220
+    member_id: 0xd7e8bb00
+    member_id: 0xf21393bd
+    member_id: 0xfc996529
+    member_id: 0x5612c834
+    member_id: 0xb504e696
+    member_id: 0xf6d4aa2a
+    member_id: 0x3d3f0948
+    member_id: 0x991fce7b
+    member_id: 0xbb3bd0c8
+    member_id: 0xf0bebbb2
+    member_id: 0xe6347ba6
+    member_id: 0x84e65d2a
+    member_id: 0x418af429
+    member_id: 0x2d5bf820
+    member_id: 0x2a776604
+    member_id: 0x2c104285
+    member_id: 0x4a8065b5
+    member_id: 0xde4b759f
+    member_id: 0x7815abe3
+    member_id: 0x480a2925
+    member_id: 0xf089aa77
+    member_id: 0xa1746ec2
+    member_id: 0x09004179
+    member_id: 0xca4d1674
+    member_id: 0x2d081398
+  }
+}
+struct_union {
+  id: 0x14444314
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x3025d5eb
+    member_id: 0x85cad62f
+  }
+}
+struct_union {
+  id: 0x148546d4
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x33a4083e
+  }
+}
+struct_union {
+  id: 0x1496620e
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x33e89b57
+  }
+}
+struct_union {
+  id: 0x14b5a454
+  kind: STRUCT
+  definition {
+    bytesize: 40
+    member_id: 0x333ad0b9
+    member_id: 0x5dff1f7d
+    member_id: 0xad0a7512
+    member_id: 0x9152ae19
+  }
+}
+struct_union {
+  id: 0x14b72a39
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x3358d289
+    member_id: 0x35690218
+  }
+}
+struct_union {
+  id: 0x14e96bc2
+  kind: STRUCT
+  definition {
+    bytesize: 32
+    member_id: 0x32ae90fe
+    member_id: 0xbad0c2a3
+    member_id: 0xfcd19375
+    member_id: 0x89066d93
+    member_id: 0x67f93f00
+  }
+}
+struct_union {
+  id: 0x14e96be8
+  kind: STRUCT
+  definition {
+    bytesize: 48
+    member_id: 0x32ae90fe
+    member_id: 0xbad0c2a3
+    member_id: 0xfcd19375
+    member_id: 0x208adc31
+    member_id: 0xc2c18445
+    member_id: 0x32fffef6
+    member_id: 0x09b42908
+  }
+}
+struct_union {
+  id: 0x153cf6a0
+  kind: STRUCT
+  definition {
+    bytesize: 24
+    member_id: 0x3572b0d9
+    member_id: 0x30e26c68
+    member_id: 0x9b595060
+  }
+}
+struct_union {
+  id: 0x15738845
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x34f9f71a
+    member_id: 0x86c562ac
+  }
+}
+struct_union {
+  id: 0x15aafb87
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x37f149da
+    member_id: 0xebb4a9c8
+  }
+}
+struct_union {
+  id: 0x16246045
+  kind: STRUCT
+  definition {
+    bytesize: 144
+    member_id: 0x395cbb2a
+    member_id: 0x7cdc8c52
+    member_id: 0xf52505ed
+    member_id: 0xfaf67215
+    member_id: 0x0f8e9fc1
+    member_id: 0xcb7e0c9e
+    member_id: 0x50d8a6ad
+    member_id: 0xc43b0497
+    member_id: 0x7b7aed01
+    member_id: 0x3a49a3c7
+    member_id: 0x1ba53629
+    member_id: 0x95115c54
+    member_id: 0x17c31963
+    member_id: 0x2c820705
+    member_id: 0x6cb2c6fa
+    member_id: 0xf7d1dbee
+    member_id: 0x7422ccd8
+    member_id: 0x642e0945
+    member_id: 0xb0b849c1
+    member_id: 0x05cddd5b
+    member_id: 0x34e08151
+    member_id: 0x17bf2558
+    member_id: 0xcc45eef0
+    member_id: 0x4a01ad88
+    member_id: 0x81b926ef
+  }
+}
+struct_union {
+  id: 0x16938363
+  kind: STRUCT
+  definition {
+    bytesize: 4120
+    member_id: 0x3b65917c
+    member_id: 0x9a8f9fc7
+  }
+}
+struct_union {
+  id: 0x1693926a
+  kind: STRUCT
+  definition {
+    bytesize: 24
+    member_id: 0x3b659256
+    member_id: 0x9ac891c8
+  }
+}
+struct_union {
+  id: 0x169e18e0
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x3badc7b9
+    member_id: 0x64b75781
+  }
+}
+struct_union {
+  id: 0x169e258d
+  kind: STRUCT
+  definition {
+    bytesize: 20
+    member_id: 0x3b1f1c3f
+    member_id: 0xd6182a87
+    member_id: 0x817134c1
+    member_id: 0x3e324f32
+    member_id: 0xbac70c88
+  }
+}
+struct_union {
+  id: 0x16c1acc8
+  kind: STRUCT
+  definition {
+    bytesize: 4
+    member_id: 0x3a37596d
+    member_id: 0x80f6907c
+    member_id: 0x0f7b186b
+    member_id: 0xc9fdc545
+    member_id: 0x06fb260e
+    member_id: 0x0a7c1b9f
+    member_id: 0x375980f6
+  }
+}
+struct_union {
+  id: 0x174a7c6e
+  kind: STRUCT
+  definition {
+    bytesize: 2
+    member_id: 0x3c4c15e8
+    member_id: 0xd4f73d44
+  }
+}
+struct_union {
+  id: 0x1764a0c5
+  kind: STRUCT
+  definition {
+    member_id: 0x3cf3a247
+    member_id: 0xd0323df9
+  }
+}
+struct_union {
+  id: 0x17a8337c
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x3f203f8d
+    member_id: 0x31e1117c
+  }
+}
+struct_union {
+  id: 0x17fdeaab
+  kind: STRUCT
+  definition {
+    bytesize: 64
+    member_id: 0x3ee95655
+    member_id: 0xafef966f
+  }
+}
+struct_union {
+  id: 0x186c44db
+  kind: STRUCT
+  definition {
+  }
+}
+struct_union {
+  id: 0x18797cfe
+  kind: STRUCT
+  definition {
+    bytesize: 32
+    member_id: 0x00ac87d0
+    member_id: 0xf843f01c
+    member_id: 0x2480f8c7
+    member_id: 0x348ee187
+  }
+}
+struct_union {
+  id: 0x190327c4
+  kind: STRUCT
+  definition {
+    bytesize: 12
+    member_id: 0x05e01b11
+    member_id: 0x5d16456b
+    member_id: 0x8179189a
+    member_id: 0x502851ad
+    member_id: 0xf440f6e0
+  }
+}
+struct_union {
+  id: 0x1934086e
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x05e01b11
+    member_id: 0x81791960
+    member_id: 0x502852f2
+    member_id: 0xf440fec0
+  }
+}
+struct_union {
+  id: 0x197ee30b
+  kind: STRUCT
+  definition {
+    bytesize: 4
+    member_id: 0x044a9f42
+  }
+}
+struct_union {
+  id: 0x1983785b
+  kind: STRUCT
+  definition {
+    bytesize: 4
+    member_id: 0x07cc6799
+    member_id: 0x70959b33
+  }
+}
+struct_union {
+  id: 0x19910c85
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x072855a4
+    member_id: 0xdd74def2
+  }
+}
+struct_union {
+  id: 0x19bb23ae
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x075d9dd6
+  }
+}
+struct_union {
+  id: 0x19cb80a6
+  kind: STRUCT
+  definition {
+    bytesize: 72
+    member_id: 0x062f6cc9
+    member_id: 0xb019a1e8
+    member_id: 0x649e21ec
+  }
+}
+struct_union {
+  id: 0x1a4486e7
+  kind: STRUCT
+  definition {
+    bytesize: 2
+    member_id: 0x08a308f3
+  }
+}
+struct_union {
+  id: 0x1a6854cd
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x086a8c91
+    member_id: 0x7accc807
+  }
+}
+struct_union {
+  id: 0x1a70d021
+  kind: STRUCT
+  definition {
+    bytesize: 4
+    member_id: 0x08f2aac8
+    member_id: 0x80f6907c
+    member_id: 0x0f7b186b
+    member_id: 0xc9fdc545
+    member_id: 0x06fb260e
+    member_id: 0x3759852f
+  }
+}
+struct_union {
+  id: 0x1a7baa87
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x0872a691
+    member_id: 0x2d1fe1be
+  }
+}
+struct_union {
+  id: 0x1ac12b77
+  kind: STRUCT
+  definition {
+    bytesize: 32
+    member_id: 0x0a5ffb27
+    member_id: 0xea4594cb
+  }
+}
+struct_union {
+  id: 0x1afc78a4
+  kind: STRUCT
+  definition {
+    bytesize: 32
+    member_id: 0x0a6bd4bf
+    member_id: 0x2bfbcfa6
+    member_id: 0xde4c0a37
+    member_id: 0xc3a77242
+    member_id: 0xaf125156
+    member_id: 0xfe1eaf0e
+    member_id: 0x7b9fc355
+    member_id: 0x59ef085f
+  }
+}
+struct_union {
+  id: 0x1b0f499b
+  kind: STRUCT
+  definition {
+    bytesize: 12
+    member_id: 0x0d2bd259
+    member_id: 0xa7e75a59
+  }
+}
+struct_union {
+  id: 0x1b179e9d
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x0d369e2a
+    member_id: 0xd9f731b4
+  }
+}
+struct_union {
+  id: 0x1b1bbf35
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x0ddfefbb
+  }
+}
+struct_union {
+  id: 0x1b2379e7
+  kind: STRUCT
+  definition {
+    bytesize: 32
+    member_id: 0x0de57ce8
+    member_id: 0xd9bbc14a
+    member_id: 0x3324a589
+    member_id: 0xfd81edd7
+    member_id: 0x75c3aa6c
+    member_id: 0xb8c00446
+  }
+}
+struct_union {
+  id: 0x1b36480a
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x0ddfefbb
+    member_id: 0xb7dcfc4d
+  }
+}
+struct_union {
+  id: 0x1b6613ee
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x0c80b192
+    member_id: 0xa9144608
+    member_id: 0xf923c05c
+    member_id: 0x20b5aad0
+  }
+}
+struct_union {
+  id: 0x1b88439e
+  kind: STRUCT
+  definition {
+    bytesize: 32
+    member_id: 0x0ff18a1f
+    member_id: 0x61c169f9
+    member_id: 0x564f4f8a
+    member_id: 0x2ecc6654
+    member_id: 0xa6ce24d4
+  }
+}
+struct_union {
+  id: 0x1b8e80b5
+  kind: STRUCT
+  definition {
+    bytesize: 32
+    member_id: 0x0f1d715c
+    member_id: 0x965f12df
+    member_id: 0x3f016a9f
+    member_id: 0xf5eb6b20
+  }
+}
+struct_union {
+  id: 0x1b966255
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x0f1d715c
+    member_id: 0xf5eb6708
+  }
+}
+struct_union {
+  id: 0x1bf61cb5
+  kind: STRUCT
+  definition {
+    bytesize: 32
+    member_id: 0x0ede87d4
+    member_id: 0xb7cbdc47
+    member_id: 0x2d8572c8
+    member_id: 0x34a3e933
+  }
+}
+struct_union {
+  id: 0x1bf62820
+  kind: STRUCT
+  definition {
+    bytesize: 136
+    member_id: 0x0ede87d4
+    member_id: 0xb7cbdc47
+    member_id: 0xffe56fd2
+  }
+}
+struct_union {
+  id: 0x1c07f73e
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x11fc9103
+    member_id: 0x525e95fd
+  }
+}
+struct_union {
+  id: 0x1c3eb7b9
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x11f64fb6
+    member_id: 0xbd823cfd
+  }
+}
+struct_union {
+  id: 0x1c3eb91d
+  kind: STRUCT
+  definition {
+    bytesize: 24
+    member_id: 0x11f64fb6
+    member_id: 0xbd823cfd
+    member_id: 0x3a91b492
+  }
+}
+struct_union {
+  id: 0x1c51bab0
+  kind: STRUCT
+  definition {
+    bytesize: 3
+    member_id: 0x10cd0767
+    member_id: 0x3a2d355a
+    member_id: 0xd3ff70d7
+  }
+}
+struct_union {
+  id: 0x1cac6f1f
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x137a2b1b
+    member_id: 0x7a840a9d
+  }
+}
+struct_union {
+  id: 0x1d0a537d
+  kind: STRUCT
+  definition {
+    bytesize: 24
+    member_id: 0x156d90cd
+    member_id: 0xf5ce55a9
+  }
+}
+struct_union {
+  id: 0x1d0b5d04
+  kind: STRUCT
+  definition {
+    member_id: 0x156970b1
+    member_id: 0xf517cc3e
+  }
+}
+struct_union {
+  id: 0x1d23c41f
+  kind: STRUCT
+  definition {
+    bytesize: 40
+    member_id: 0x1536626c
+    member_id: 0x08e67f2a
+    member_id: 0x878f4209
+    member_id: 0x8d9b8608
+    member_id: 0xa478e8fb
+    member_id: 0xbc2d2f6d
+    member_id: 0x292e8d62
+    member_id: 0xf307eb1a
+    member_id: 0xd20f97af
+  }
+}
+struct_union {
+  id: 0x1d4594fc
+  kind: STRUCT
+  definition {
+    bytesize: 2
+    member_id: 0x145ea68f
+    member_id: 0xf9e6133e
+  }
+}
+struct_union {
+  id: 0x1d7af2d8
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x14c8c4f0
+    member_id: 0x92c39741
+    member_id: 0xdf6a20ec
+  }
+}
+struct_union {
+  id: 0x1e3e7f78
+  kind: STRUCT
+  definition {
+    bytesize: 32
+    member_id: 0x19962dc7
+    member_id: 0xdeee560d
+    member_id: 0x2d1fe44c
+  }
+}
+struct_union {
+  id: 0x1e77923d
+  kind: STRUCT
+  definition {
+    bytesize: 24
+    member_id: 0x181bdcdf
+    member_id: 0x74874671
+  }
+}
+struct_union {
+  id: 0x1e92c4b8
+  kind: STRUCT
+  definition {
+    bytesize: 320
+    member_id: 0x1b927405
+    member_id: 0x68f1e810
+    member_id: 0x84062406
+    member_id: 0x658d5258
+    member_id: 0x80910671
+    member_id: 0x37c1dfd5
+    member_id: 0xab06fa6c
+    member_id: 0x50a710ba
+    member_id: 0x346b1e3f
+    member_id: 0x5a61ba6f
+    member_id: 0x3cb708d0
+    member_id: 0x53509282
+    member_id: 0x2c226b5d
+    member_id: 0x3627a6aa
+    member_id: 0x8f600402
+    member_id: 0x65b934f9
+    member_id: 0x125f04d5
+    member_id: 0x0bf94151
+    member_id: 0x394b519d
+    member_id: 0x0d09dffc
+  }
+}
+struct_union {
+  id: 0x1eb1a566
+  kind: STRUCT
+  definition {
+    bytesize: 20
+    member_id: 0x1b4dba0f
+    member_id: 0x3a3cfb73
+  }
+}
+struct_union {
+  id: 0x1ebf2a58
+  kind: STRUCT
+  definition {
+    bytesize: 4
+    member_id: 0x1b4dba0f
+  }
+}
+struct_union {
+  id: 0x1f289602
+  kind: STRUCT
+  definition {
+    bytesize: 64
+    member_id: 0x1d299ad1
+    member_id: 0x3a067635
+    member_id: 0xd7efa587
+    member_id: 0x2d27233d
+    member_id: 0xfd245dad
+  }
+}
+struct_union {
+  id: 0x1f47f2e5
+  kind: STRUCT
+  definition {
+    bytesize: 24
+    member_id: 0x1c9af454
+    member_id: 0x342cad37
+  }
+}
+struct_union {
+  id: 0x1f67e8b7
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x1cb5ccde
+    member_id: 0x9bd5d9d4
+    member_id: 0xa8fa65e7
+    member_id: 0x4fdfef72
+  }
+}
+struct_union {
+  id: 0x1f9fa751
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x1f45cde6
+    member_id: 0x8a43cc03
+  }
+}
+struct_union {
+  id: 0x1fb175ff
+  kind: STRUCT
+  definition {
+    bytesize: 6
+    member_id: 0x1fd9b843
+    member_id: 0xadfb5e27
+    member_id: 0x87b0fe73
+    member_id: 0x3e6f1d98
+  }
+}
+struct_union {
+  id: 0x1fb359b5
+  kind: STRUCT
+  definition {
+    bytesize: 64
+    member_id: 0x1fe3938f
+    member_id: 0x9f37846b
+    member_id: 0xd1d2ee12
+    member_id: 0x63c06ea2
+    member_id: 0x08b4d201
+    member_id: 0x4987e905
+    member_id: 0xfb199cec
+  }
+}
+struct_union {
+  id: 0x203b2079
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0xe15d928a
+  }
+}
+struct_union {
+  id: 0x20914098
+  kind: STRUCT
+  definition {
+    bytesize: 64
+    member_id: 0xe3f4110d
+  }
+}
+struct_union {
+  id: 0x20957e7a
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0xe37688c0
+    member_id: 0x922d79b5
+    member_id: 0x4f70035a
+    member_id: 0x4d829656
+    member_id: 0x5ab15455
+    member_id: 0x79067da4
+    member_id: 0x701b05fd
+  }
+}
+struct_union {
+  id: 0x20c1f7e3
+  kind: STRUCT
+  definition {
+    bytesize: 4
+    member_id: 0xe2c089df
+    member_id: 0x7691c932
+    member_id: 0xd44afeb6
+    member_id: 0xbfcf106c
+  }
+}
+struct_union {
+  id: 0x219459f2
+  kind: STRUCT
+  definition {
+    bytesize: 32
+    member_id: 0xe734a153
+    member_id: 0xd4d5f6c6
+  }
+}
+struct_union {
+  id: 0x21ac4e87
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0xe7d41c36
+    member_id: 0xd4354680
+  }
+}
+struct_union {
+  id: 0x22a43d8f
+  kind: STRUCT
+  definition {
+    bytesize: 40
+    member_id: 0xeb4e2a5c
+    member_id: 0x6fcf0eb6
+  }
+}
+struct_union {
+  id: 0x22b6f73b
+  kind: STRUCT
+  definition {
+    bytesize: 112
+    member_id: 0xeb6c8fe9
+    member_id: 0x062f6828
+    member_id: 0x6fcf0d90
+    member_id: 0xcc71be77
+    member_id: 0x894ba3d8
+    member_id: 0x6a77f134
+  }
+}
+struct_union {
+  id: 0x22f902de
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0xea5f5d23
+    member_id: 0x0a453636
+  }
+}
+struct_union {
+  id: 0x230a7397
+  kind: STRUCT
+  definition {
+    bytesize: 32
+    member_id: 0xedceb359
+    member_id: 0x566e6aad
+  }
+}
+struct_union {
+  id: 0x235335cf
+  kind: STRUCT
+  definition {
+    bytesize: 12
+    member_id: 0xec50fb08
+    member_id: 0xadf00daf
+    member_id: 0xcf559a09
+  }
+}
+struct_union {
+  id: 0x23df18eb
+  kind: STRUCT
+  definition {
+    bytesize: 32
+    member_id: 0xee327d3e
+    member_id: 0xffb098ff
+    member_id: 0xbd3fd9cc
+    member_id: 0x595455ce
+    member_id: 0x388b1f9a
+  }
+}
+struct_union {
+  id: 0x23e0a7c8
+  kind: STRUCT
+  definition {
+    bytesize: 64
+    member_id: 0xeed8259f
+    member_id: 0xeb627d4b
+    member_id: 0xcbad0dfe
+  }
+}
+struct_union {
+  id: 0x23e6957b
+  kind: STRUCT
+  definition {
+    bytesize: 32
+    member_id: 0xee4e3ee1
+    member_id: 0x65d16e4d
+    member_id: 0xa97181e3
+    member_id: 0x7f61fcf5
+  }
+}
+struct_union {
+  id: 0x23f36daa
+  kind: STRUCT
+  definition {
+    member_id: 0xee58a827
+    member_id: 0x240de36e
+  }
+}
+struct_union {
+  id: 0x24232993
+  kind: STRUCT
+  definition {
+    bytesize: 12
+    member_id: 0xf1c2dba4
+    member_id: 0xff7407e8
+    member_id: 0x1a818982
+  }
+}
+struct_union {
+  id: 0x244bebad
+  kind: STRUCT
+  definition {
+    bytesize: 4
+    member_id: 0xf0494b41
+    member_id: 0xd7f69a39
+  }
+}
+struct_union {
+  id: 0x247e8a06
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0xf0ecb91e
+    member_id: 0xa7c3d9a4
+    member_id: 0x41322da8
+    member_id: 0x83fd0739
+  }
+}
+struct_union {
+  id: 0x247e8a26
+  kind: STRUCT
+  definition {
+    bytesize: 12
+    member_id: 0xf0ecb91e
+    member_id: 0xa7c3d9a4
+    member_id: 0x41322da8
+  }
+}
+struct_union {
+  id: 0x2548e662
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0xf4931918
+    member_id: 0x0193fe4b
+  }
+}
+struct_union {
+  id: 0x2612bf2a
+  kind: STRUCT
+  definition {
+    bytesize: 24
+    member_id: 0xf96c8ff7
+    member_id: 0x970a0d3d
+    member_id: 0x6a3d61f3
+  }
+}
+struct_union {
+  id: 0x2623dc0d
+  kind: STRUCT
+  definition {
+    bytesize: 24
+    member_id: 0xf9a9c6e4
+    member_id: 0x97cf442e
+    member_id: 0x6af828e0
+  }
+}
+struct_union {
+  id: 0x2627fc8d
+  kind: STRUCT
+  definition {
+    bytesize: 4
+    member_id: 0xf9b93eec
+    member_id: 0x97dfb679
+  }
+}
+struct_union {
+  id: 0x262ff409
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0xf9ca6e5d
+    member_id: 0xc4ad1767
+  }
+}
+struct_union {
+  id: 0x266a8cae
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0xf8d0cc3a
+    member_id: 0xcbedee18
+  }
+}
+struct_union {
+  id: 0x269c0575
+  kind: STRUCT
+  definition {
+    bytesize: 32
+    member_id: 0xfb47df92
+    member_id: 0x86d928a7
+  }
+}
+struct_union {
+  id: 0x26e52db9
+  kind: STRUCT
+  definition {
+    bytesize: 32
+    member_id: 0xfa598a2c
+    member_id: 0x7c00ebb3
+    member_id: 0x2f4c48f3
+  }
+}
+struct_union {
+  id: 0x26eb875a
+  kind: STRUCT
+  definition {
+    bytesize: 80
+    member_id: 0xfa702ad6
+    member_id: 0x6fcf0eb6
+    member_id: 0xeb6c882e
+    member_id: 0xb019a51a
+    member_id: 0x649e2a06
+  }
+}
+struct_union {
+  id: 0x26f04e6e
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0xfa702ad6
+  }
+}
+struct_union {
+  id: 0x27205f00
+  kind: STRUCT
+  definition {
+    bytesize: 72
+    member_id: 0xfdb76cfe
+    member_id: 0x878f4bd3
+    member_id: 0x8cd8119b
+  }
+}
+struct_union {
+  id: 0x272ec215
+  kind: STRUCT
+  definition {
+    bytesize: 48
+    member_id: 0xfd8da2e0
+    member_id: 0x87b444d7
+    member_id: 0x0dc4512e
+    member_id: 0x5be2eb25
+    member_id: 0x9bff96ae
+    member_id: 0x3d12fa3f
+    member_id: 0x2d41d45d
+    member_id: 0x9ec4e13e
+    member_id: 0xf8038083
+    member_id: 0x7aa45c87
+    member_id: 0x55b4f328
+    member_id: 0x18195f00
+    member_id: 0xf5e8f084
+  }
+}
+struct_union {
+  id: 0x277164cf
+  kind: STRUCT
+  definition {
+    bytesize: 12
+    member_id: 0xfc935744
+    member_id: 0xe7d715f9
+  }
+}
+struct_union {
+  id: 0x278b52be
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0xff9c5995
+  }
+}
+struct_union {
+  id: 0x2795a3db
+  kind: STRUCT
+  definition {
+    bytesize: 64
+    member_id: 0xffe79c01
+  }
+}
+struct_union {
+  id: 0x279cfd35
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0xff5a7186
+    member_id: 0x98963fcf
+  }
+}
+struct_union {
+  id: 0x27a91db4
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0xffad25e9
+    member_id: 0xb84054d1
+  }
+}
+struct_union {
+  id: 0x27bfa089
+  kind: STRUCT
+  definition {
+    bytesize: 32
+    member_id: 0xff4f914b
+  }
+}
+struct_union {
+  id: 0x2850bad3
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0xc031132b
+    member_id: 0xc27d8a22
+    member_id: 0x9683f73d
+  }
+}
+struct_union {
+  id: 0x2880e524
+  kind: STRUCT
+  definition {
+    bytesize: 24
+    member_id: 0xc3b06341
+    member_id: 0x0273ce8e
+    member_id: 0x9723e6f3
+    member_id: 0x50e2e283
+    member_id: 0x12a302b4
+    member_id: 0x6f723dea
+    member_id: 0x9062658a
+  }
+}
+struct_union {
+  id: 0x2a83c756
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0xcb76e031
+    member_id: 0xc8ee06a7
+  }
+}
+struct_union {
+  id: 0x2aa8f2af
+  kind: STRUCT
+  definition {
+    bytesize: 128
+    member_id: 0xcbad091f
+    member_id: 0xbf7d259e
+    member_id: 0xad0591b8
+    member_id: 0xeebd9ccb
+    member_id: 0xb152f7a4
+    member_id: 0x1124a364
+  }
+}
+struct_union {
+  id: 0x2b189f72
+  kind: STRUCT
+  definition {
+    bytesize: 40
+    member_id: 0xcdd0869e
+    member_id: 0x03e839a0
+  }
+}
+struct_union {
+  id: 0x2b549901
+  kind: STRUCT
+  definition {
+    bytesize: 4
+    member_id: 0xccbe612e
+    member_id: 0x5d1646ee
+  }
+}
+struct_union {
+  id: 0x2b54a288
+  kind: STRUCT
+  definition {
+    bytesize: 10
+    member_id: 0xccbe612e
+    member_id: 0x5d1646ee
+    member_id: 0xee26074a
+  }
+}
+struct_union {
+  id: 0x2b5e86f9
+  kind: STRUCT
+  definition {
+    bytesize: 40
+    member_id: 0xcc3069e2
+    member_id: 0xfba84699
+    member_id: 0xc9c3b2cf
+    member_id: 0xef4220d5
+    member_id: 0x2d5bf191
+  }
+}
+struct_union {
+  id: 0x2b5ea595
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0xcce624ba
+    member_id: 0x2da1814e
+  }
+}
+struct_union {
+  id: 0x2b7aeec6
+  kind: STRUCT
+  definition {
+    bytesize: 2
+    member_id: 0xcc5aa876
+  }
+}
+struct_union {
+  id: 0x2b869518
+  kind: STRUCT
+  definition {
+    bytesize: 144
+    member_id: 0xcf8b09e9
+    member_id: 0x2072b8ea
+    member_id: 0x3c5ee17e
+  }
+}
+struct_union {
+  id: 0x2c1ce0af
+  kind: STRUCT
+  definition {
+    bytesize: 96
+    member_id: 0xd137e8f5
+    member_id: 0xf5595336
+    member_id: 0x20e97648
+    member_id: 0x9d0e4cf9
+    member_id: 0xa8ce2f12
+    member_id: 0x3ce0dc2d
+    member_id: 0x9fc09160
+    member_id: 0x2d0fa0d4
+    member_id: 0x892b557f
+    member_id: 0x521e7522
+  }
+}
+struct_union {
+  id: 0x2c2be6c7
+  kind: STRUCT
+  definition {
+    bytesize: 88
+    member_id: 0xd14fc76e
+    member_id: 0x517bb4e8
+    member_id: 0x34abfc7a
+  }
+}
+struct_union {
+  id: 0x2c32891d
+  kind: STRUCT
+  definition {
+    bytesize: 72
+    member_id: 0xd14fc76e
+    member_id: 0x34a16385
+    member_id: 0x517bb77e
+    member_id: 0x6dda6565
+    member_id: 0x6b32a1dc
+  }
+}
+struct_union {
+  id: 0x2c5bdc0e
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0xd0bad40a
+    member_id: 0x64b75e5b
+  }
+}
+struct_union {
+  id: 0x2c6fbe2c
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0xd0bad40a
+    member_id: 0xb53fd5a4
+  }
+}
+struct_union {
+  id: 0x2c8b6d33
+  kind: STRUCT
+  definition {
+    bytesize: 32
+    member_id: 0xd3a2d9f3
+    member_id: 0x3e7e5067
+  }
+}
+struct_union {
+  id: 0x2d07e8c3
+  kind: STRUCT
+  definition {
+    bytesize: 40
+    member_id: 0xd5cac7cd
+    member_id: 0x64b75781
+    member_id: 0xc0a4c190
+    member_id: 0x5cd877ef
+    member_id: 0xc5fd8a6a
+    member_id: 0xd5524d12
+    member_id: 0x4b115bbd
+  }
+}
+struct_union {
+  id: 0x2d145686
+  kind: STRUCT
+  definition {
+    bytesize: 20
+    member_id: 0xd5cac7cd
+    member_id: 0x2aea5254
+    member_id: 0x64b75e5b
+    member_id: 0x5cd877ef
+    member_id: 0xcf6cc105
+  }
+}
+struct_union {
+  id: 0x2d16d2e0
+  kind: STRUCT
+  definition {
+    bytesize: 40
+    member_id: 0xd50e20b2
+    member_id: 0xe4058d71
+    member_id: 0x7d008e06
+    member_id: 0xd140038d
+    member_id: 0x5a9199d6
+  }
+}
+struct_union {
+  id: 0x2d57d375
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0xd4756d84
+    member_id: 0x9b333e51
+  }
+}
+struct_union {
+  id: 0x2d7e0a72
+  kind: STRUCT
+  definition {
+    bytesize: 7
+    member_id: 0xd44af008
+    member_id: 0x03c551ce
+    member_id: 0x0f71eea2
+    member_id: 0x8d43cf83
+    member_id: 0x690ee6ac
+    member_id: 0x2d19b169
+  }
+}
+struct_union {
+  id: 0x2d873b56
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0xd7400399
+    member_id: 0xedfdadd3
+  }
+}
+struct_union {
+  id: 0x2d9765d2
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0xd7ec8426
+  }
+}
+struct_union {
+  id: 0x2d9c9f4f
+  kind: STRUCT
+  definition {
+    bytesize: 40
+    member_id: 0xd753aadb
+    member_id: 0x9083fd2a
+    member_id: 0x47dc7b9d
+    member_id: 0xab0a12e6
+    member_id: 0xcd5f06f7
+  }
+}
+struct_union {
+  id: 0x2e071aea
+  kind: STRUCT
+  definition {
+    bytesize: 12
+    member_id: 0xd9f73555
+    member_id: 0x5a601d8d
+    member_id: 0x2d8eae00
+  }
+}
+struct_union {
+  id: 0x2e1f5866
+  kind: STRUCT
+  definition {
+    bytesize: 48
+    member_id: 0xd9f73555
+    member_id: 0x3b233b1b
+    member_id: 0x64b75e5b
+    member_id: 0x2d8ea362
+    member_id: 0x3f7d3152
+  }
+}
+struct_union {
+  id: 0x2e3696f7
+  kind: STRUCT
+  definition {
+    bytesize: 80
+    member_id: 0xd9f73555
+    member_id: 0x9c050f4d
+    member_id: 0x784f7cea
+    member_id: 0xa437fbc0
+    member_id: 0x7317430a
+    member_id: 0xd9faa9a8
+    member_id: 0x34911b48
+    member_id: 0xe0976488
+    member_id: 0x69619a62
+    member_id: 0xa3b36ee3
+    member_id: 0x3517ba74
+    member_id: 0xe6d98ccc
+    member_id: 0x2d8ea1f9
+    member_id: 0x51e0b055
+    member_id: 0x6a137549
+  }
+}
+struct_union {
+  id: 0x2e56cf79
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0xd8ff7fa3
+    member_id: 0x15046cb1
+    member_id: 0x55466c91
+  }
+}
+struct_union {
+  id: 0x2e965658
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0xdbe84a0d
+  }
+}
+struct_union {
+  id: 0x2ee387f4
+  kind: STRUCT
+  definition {
+    bytesize: 2
+    member_id: 0xdaab2a3c
+    member_id: 0x94b4ef47
+    member_id: 0x92b73f25
+    member_id: 0xda23d001
+    member_id: 0xca8c571b
+    member_id: 0x6741043f
+  }
+}
+struct_union {
+  id: 0x2ee3a27e
+  kind: STRUCT
+  definition {
+    bytesize: 2
+    member_id: 0xdaab2a3c
+    member_id: 0x94b4ef47
+    member_id: 0x0422bd58
+    member_id: 0x6741043f
+  }
+}
+struct_union {
+  id: 0x2f27cc6c
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0xdd40e46b
+    member_id: 0x6ec6b7fe
+  }
+}
+struct_union {
+  id: 0x2f5f7542
+  kind: STRUCT
+  definition {
+    bytesize: 6
+    member_id: 0xdcf61242
+    member_id: 0x3af6d631
+    member_id: 0x22f0b41b
+  }
+}
+struct_union {
+  id: 0x2f802e03
+  kind: STRUCT
+  definition {
+    bytesize: 48
+    member_id: 0xdf956694
+    member_id: 0x243562a8
+    member_id: 0xf895187e
+  }
+}
+struct_union {
+  id: 0x2ffc8179
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0xde82cb77
+    member_id: 0xc1ddff57
+  }
+}
+struct_union {
+  id: 0x300fd8c1
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0xa18e706b
+  }
+}
+struct_union {
+  id: 0x301572a3
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0xa1ab028f
+    member_id: 0x4f428155
+    member_id: 0x99ee293a
+  }
+}
+struct_union {
+  id: 0x3050ef8f
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0xa02b28d6
+    member_id: 0xd9cdf02e
+    member_id: 0x48131453
+    member_id: 0x65c37c40
+    member_id: 0x97a5dcff
+  }
+}
+struct_union {
+  id: 0x30572148
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0xa0e5273c
+    member_id: 0x08b1702a
+  }
+}
+struct_union {
+  id: 0x305b75d3
+  kind: STRUCT
+  definition {
+    bytesize: 4
+    member_id: 0xa0232669
+    member_id: 0xffe24985
+  }
+}
+struct_union {
+  id: 0x315223c4
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0xa4a87cc7
+    member_id: 0x51e0ba6b
+  }
+}
+struct_union {
+  id: 0x31c1859a
+  kind: STRUCT
+  definition {
+    bytesize: 4
+    member_id: 0xa6413a21
+    member_id: 0xf63f2604
+  }
+}
+struct_union {
+  id: 0x31f9c69b
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0xa6e46395
+    member_id: 0xb21940c8
+    member_id: 0x73d7e464
+  }
+}
+struct_union {
+  id: 0x31fe95e7
+  kind: STRUCT
+  definition {
+    bytesize: 7
+    member_id: 0xa6486808
+    member_id: 0x03ec872e
+    member_id: 0xc02add7c
+    member_id: 0x56c9ab90
+    member_id: 0x2d41d517
+    member_id: 0x3a06a531
+    member_id: 0x1494ddda
+  }
+}
+struct_union {
+  id: 0x32122bf6
+  kind: STRUCT
+  definition {
+    bytesize: 48
+    member_id: 0xa9060900
+    member_id: 0xfff2aea5
+    member_id: 0x47b3cac6
+    member_id: 0xab8f22b5
+    member_id: 0x4ecb11fa
+    member_id: 0xbe40b5f4
+  }
+}
+struct_union {
+  id: 0x32281bdf
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0xa9117c13
+  }
+}
+struct_union {
+  id: 0x32623873
+  kind: STRUCT
+  definition {
+    bytesize: 128
+    member_id: 0xa819df37
+    member_id: 0x202d9600
+  }
+}
+struct_union {
+  id: 0x32dcc5dc
+  kind: STRUCT
+  definition {
+    bytesize: 224
+    member_id: 0xaad8f635
+    member_id: 0x1a59d77c
+    member_id: 0xabbae029
+    member_id: 0x440463e8
+    member_id: 0xb125cda7
+    member_id: 0xf494395b
+  }
+}
+struct_union {
+  id: 0x32e2151e
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0xaa694b5b
+    member_id: 0x500c4cb1
+  }
+}
+struct_union {
+  id: 0x32e980d1
+  kind: STRUCT
+  definition {
+    bytesize: 128
+    member_id: 0xaa6d1f47
+    member_id: 0x7ab5d0d0
+    member_id: 0xba2ba9b6
+    member_id: 0x979a30fb
+    member_id: 0x2489546a
+    member_id: 0x71ea3a37
+    member_id: 0xd4c7def1
+    member_id: 0xd7b2a06c
+    member_id: 0x14364100
+  }
+}
+struct_union {
+  id: 0x32fbb12c
+  kind: STRUCT
+  definition {
+    bytesize: 24
+    member_id: 0xaad5aa07
+    member_id: 0x8a04a2d8
+    member_id: 0x79578207
+    member_id: 0x2ef7e77d
+    member_id: 0x9a42ca78
+    member_id: 0x9a5a33c2
+  }
+}
+struct_union {
+  id: 0x3304badb
+  kind: STRUCT
+  definition {
+    bytesize: 4
+    member_id: 0xada84500
+    member_id: 0x0bbd01bc
+  }
+}
+struct_union {
+  id: 0x337e48e0
+  kind: STRUCT
+  definition {
+    bytesize: 24
+    member_id: 0xace55654
+    member_id: 0xadfde23f
+    member_id: 0x9b595060
+  }
+}
+struct_union {
+  id: 0x338a8d9c
+  kind: STRUCT
+  definition {
+    bytesize: 40
+    member_id: 0xafb6b991
+    member_id: 0x2d5bf5db
+    member_id: 0xc7dd1e99
+    member_id: 0xa497f11a
+    member_id: 0x9e1f254a
+  }
+}
+struct_union {
+  id: 0x34992343
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0xb3380ef4
+    member_id: 0xed909488
+  }
+}
+struct_union {
+  id: 0x34a92e7f
+  kind: STRUCT
+  definition {
+    bytesize: 40
+    member_id: 0xb36ba6e0
+    member_id: 0x7e6ea6cb
+    member_id: 0x622cd598
+    member_id: 0xfb847c48
+    member_id: 0x39ff19b6
+  }
+}
+struct_union {
+  id: 0x34ed11d4
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0xb280959d
+    member_id: 0x85c1a1cb
+  }
+}
+struct_union {
+  id: 0x3508486b
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0xb51f3c67
+    member_id: 0x8f0ea6b7
+  }
+}
+struct_union {
+  id: 0x352630a5
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0xb50434c6
+    member_id: 0x2d1fe864
+    member_id: 0xfad50ee2
+  }
+}
+struct_union {
+  id: 0x355e2f50
+  kind: STRUCT
+  definition {
+    bytesize: 616
+    member_id: 0xb4c9ae2c
+  }
+}
+struct_union {
+  id: 0x35992404
+  kind: STRUCT
+  definition {
+    bytesize: 24
+    member_id: 0xb71bcfd6
+    member_id: 0xce285914
+    member_id: 0x64f01281
+  }
+}
+struct_union {
+  id: 0x35bfb9cb
+  kind: STRUCT
+  definition {
+    bytesize: 88
+    member_id: 0xb7cc436a
+    member_id: 0x83ba7b80
+    member_id: 0x0de6d064
+    member_id: 0xb783e4b9
+    member_id: 0x54c5a491
+  }
+}
+struct_union {
+  id: 0x362f8fdc
+  kind: STRUCT
+  definition {
+    bytesize: 40
+    member_id: 0xb9c33f00
+    member_id: 0xccf925b5
+    member_id: 0xea06fe30
+    member_id: 0x3d4ad86e
+    member_id: 0xce816236
+  }
+}
+struct_union {
+  id: 0x36592664
+  kind: STRUCT
+  definition {
+    bytesize: 24
+    member_id: 0xb8405030
+    member_id: 0x95dacd96
+  }
+}
+struct_union {
+  id: 0x366bef7d
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0xb81eae99
+  }
+}
+struct_union {
+  id: 0x36acbefb
+  kind: STRUCT
+  definition {
+    bytesize: 12
+    member_id: 0xbb476824
+    member_id: 0x4480a7c2
+  }
+}
+struct_union {
+  id: 0x3707d73e
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0xbdd7d0f3
+    member_id: 0x799f6788
+  }
+}
+struct_union {
+  id: 0x370e4cb6
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0xbdb59ae1
+    member_id: 0x3dbb56a7
+  }
+}
+struct_union {
+  id: 0x373a3dac
+  kind: STRUCT
+  definition {
+    bytesize: 24
+    member_id: 0xbda607c1
+    member_id: 0xff5ae7eb
+    member_id: 0xb8e3f22b
+    member_id: 0x1a818083
+  }
+}
+struct_union {
+  id: 0x375126bc
+  kind: STRUCT
+  definition {
+    bytesize: 32
+    member_id: 0xbc8df851
+    member_id: 0x78c8ec18
+    member_id: 0xb9227601
+  }
+}
+struct_union {
+  id: 0x375c29e3
+  kind: STRUCT
+  definition {
+    bytesize: 12
+    member_id: 0xbc8db669
+    member_id: 0x4cd5a4c0
+    member_id: 0xd72d8bb2
+  }
+}
+struct_union {
+  id: 0x378b9399
+  kind: STRUCT
+  definition {
+    bytesize: 80
+    member_id: 0xbf324d0a
+    member_id: 0xad24c471
+    member_id: 0x3496cf62
+    member_id: 0x51f63d7f
+  }
+}
+struct_union {
+  id: 0x37f08244
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0xbe731a7d
+  }
+}
+struct_union {
+  id: 0x3808d0ae
+  kind: STRUCT
+  definition {
+    bytesize: 4
+    member_id: 0x811bbeb6
+    member_id: 0x89cabbe4
+    member_id: 0x25d9cce5
+  }
+}
+struct_union {
+  id: 0x3850c6cc
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x80f2085f
+  }
+}
+struct_union {
+  id: 0x385d66bc
+  kind: STRUCT
+  definition {
+    bytesize: 528
+    member_id: 0x80627a33
+    member_id: 0xa6727baa
+    member_id: 0x81d670ed
+  }
+}
+struct_union {
+  id: 0x3876ab11
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x806bbf2b
+  }
+}
+struct_union {
+  id: 0x387b25de
+  kind: STRUCT
+  definition {
+    bytesize: 272
+    member_id: 0x8093ffcd
+    member_id: 0xcede4876
+    member_id: 0xa5561fc9
+    member_id: 0xc4480ce8
+  }
+}
+struct_union {
+  id: 0x388aa551
+  kind: STRUCT
+  definition {
+    bytesize: 24
+    member_id: 0x83fcd31e
+    member_id: 0x6737086d
+    member_id: 0x62e93403
+    member_id: 0xd46a2e3f
+    member_id: 0x09f5240c
+    member_id: 0xf8a78792
+  }
+}
+struct_union {
+  id: 0x38ab0bc9
+  kind: STRUCT
+  definition {
+    bytesize: 1
+    member_id: 0x831d3c48
+  }
+}
+struct_union {
+  id: 0x38df449f
+  kind: STRUCT
+  definition {
+    bytesize: 4
+    member_id: 0x82470e87
+    member_id: 0x8b549786
+    member_id: 0x5b2d4e53
+    member_id: 0x2ddb9f52
+  }
+}
+struct_union {
+  id: 0x390911ef
+  kind: STRUCT
+  definition {
+    bytesize: 40
+    member_id: 0x85c6111b
+    member_id: 0x5345c962
+  }
+}
+struct_union {
+  id: 0x3909db3d
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x85a7dcef
+    member_id: 0x31b7b561
+    member_id: 0x14eacebb
+    member_id: 0x282acc7e
+  }
+}
+struct_union {
+  id: 0x391f3c9e
+  kind: STRUCT
+  definition {
+    bytesize: 24
+    member_id: 0x85fcf7f7
+    member_id: 0x3164c440
+    member_id: 0x722578c7
+  }
+}
+struct_union {
+  id: 0x3946d5eb
+  kind: STRUCT
+  definition {
+    bytesize: 64
+    member_id: 0x84636c44
+    member_id: 0xc92885a7
+  }
+}
+struct_union {
+  id: 0x39895cf5
+  kind: STRUCT
+  definition {
+    bytesize: 48
+    member_id: 0x870b13f4
+    member_id: 0x9f11b376
+    member_id: 0x62ffded8
+  }
+}
+struct_union {
+  id: 0x398c63e7
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x872b7759
+    member_id: 0xabeba8c6
+  }
+}
+struct_union {
+  id: 0x39dda017
+  kind: STRUCT
+  definition {
+    bytesize: 4
+    member_id: 0x86c79331
+  }
+}
+struct_union {
+  id: 0x39e552d0
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x867229dc
+    member_id: 0x5671f35c
+  }
+}
+struct_union {
+  id: 0x39ed95e6
+  kind: STRUCT
+  definition {
+    bytesize: 2
+    member_id: 0x86b0718d
+    member_id: 0xb7357bee
+  }
+}
+struct_union {
+  id: 0x39ffc4a3
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x8606d3a0
+    member_id: 0x48d2413e
+  }
+}
+struct_union {
+  id: 0x3a2e44f7
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x897f2e8e
+    member_id: 0x7790fcf1
+    member_id: 0xbec140a3
+  }
+}
+struct_union {
+  id: 0x3a9c9162
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x8b19911e
+    member_id: 0xdac7f876
+  }
+}
+struct_union {
+  id: 0x3aa6e17c
+  kind: STRUCT
+  definition {
+    bytesize: 56
+    member_id: 0x8b1e3382
+    member_id: 0x34a51c9f
+  }
+}
+struct_union {
+  id: 0x3aeb31a3
+  kind: STRUCT
+  definition {
+    bytesize: 72
+    member_id: 0x8a1dd5e0
+  }
+}
+struct_union {
+  id: 0x3b04bc55
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x8db27617
+    member_id: 0x11942d37
+  }
+}
+struct_union {
+  id: 0x3b18d313
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x8df2c024
+    member_id: 0x209f0664
+  }
+}
+struct_union {
+  id: 0x3b39c1ef
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x8d4775f7
+    member_id: 0x1161270d
+  }
+}
+struct_union {
+  id: 0x3b74be91
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x8ca7afcf
+    member_id: 0xc446e43e
+  }
+}
+struct_union {
+  id: 0x3bf747f0
+  kind: STRUCT
+  definition {
+    bytesize: 544
+    member_id: 0x8ea2a453
+    member_id: 0xce243e84
+    member_id: 0x8cc3928e
+  }
+}
+struct_union {
+  id: 0x3c5324e7
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x90a52751
+    member_id: 0x58a7a2de
+  }
+}
+struct_union {
+  id: 0x3c59a693
+  kind: STRUCT
+  definition {
+    bytesize: 4
+    member_id: 0x90d78923
+  }
+}
+struct_union {
+  id: 0x3c6541cd
+  kind: STRUCT
+  definition {
+    bytesize: 12
+    member_id: 0x90777e15
+    member_id: 0x53bf3aa7
+    member_id: 0xd5460f29
+    member_id: 0x32189a75
+    member_id: 0x345e6415
+    member_id: 0xcb729b01
+  }
+}
+struct_union {
+  id: 0x3c727de1
+  kind: STRUCT
+  definition {
+    bytesize: 24
+    member_id: 0x9062615d
+    member_id: 0x1a95940d
+    member_id: 0x10a51295
+    member_id: 0x87bba0ec
+    member_id: 0xc57b1fc5
+    member_id: 0xc101e64f
+  }
+}
+struct_union {
+  id: 0x3ce2dc79
+  kind: STRUCT
+  definition {
+    bytesize: 24
+    member_id: 0x9263012c
+    member_id: 0x5963a73c
+  }
+}
+struct_union {
+  id: 0x3d751c99
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x942d1fcf
+    member_id: 0x48698f1c
+    member_id: 0x17a72bb7
+    member_id: 0xee75af74
+  }
+}
+struct_union {
+  id: 0x3da6aaca
+  kind: STRUCT
+  definition {
+    bytesize: 24
+    member_id: 0x97080ae2
+    member_id: 0x23399750
+    member_id: 0x8b31830e
+  }
+}
+struct_union {
+  id: 0x3e130b41
+  kind: STRUCT
+  definition {
+    bytesize: 4
+    member_id: 0x99babbd5
+    member_id: 0x4785bd2c
+  }
+}
+struct_union {
+  id: 0x3e1c6b8c
+  kind: STRUCT
+  definition {
+    bytesize: 8
+    member_id: 0x992015fb
+    member_id: 0xe0a8a53c
+  }
+}
+struct_union {
+  id: 0x3e70dd54
+  kind: STRUCT
+  definition {
+    bytesize: 32
+    member_id: 0x985d308b
+    member_id: 0x2f3be3ca
+    member_id: 0x6df80c79
+    member_id: 0xacb8e9ed
+    member_id: 0x75b365a3
+  }
+}
+struct_union {
+  id: 0x3ec2433c
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x9a7d3066
+    member_id: 0xc52ffbcf
+  }
+}
+struct_union {
+  id: 0x3ecd56c2
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x9a2e178d
+    member_id: 0xaad5a1e1
+    member_id: 0x8a04a780
+    member_id: 0x4f84c908
+  }
+}
+struct_union {
+  id: 0x3ecd56d1
+  kind: STRUCT
+  definition {
+    bytesize: 3
+    member_id: 0x9a2e178d
+    member_id: 0xaad5a1e1
+    member_id: 0x8a04a780
+  }
+}
+struct_union {
+  id: 0x3ecd56ee
+  kind: STRUCT
+  definition {
+    bytesize: 6
+    member_id: 0x9a2e178d
+    member_id: 0xaad5a1e1
+    member_id: 0x8a04a780
+    member_id: 0xfc544bca
+  }
+}
+struct_union {
+  id: 0x3eebb471
+  kind: STRUCT
+  definition {
+    bytesize: 64
+    member_id: 0x9a69dc1f
+    member_id: 0x7633aeb9
+    member_id: 0x2d2d09f1
+    member_id: 0x34ab3ebb
+    member_id: 0x16a40bb9
+    member_id: 0x87a903a5
+    member_id: 0x96dc5fbf
+    member_id: 0x112be300
+    member_id: 0xac728d68
+    member_id: 0x9e87ea4a
+    member_id: 0x1c49b133
+    member_id: 0x58034944
+  }
+}
+struct_union {
+  id: 0x3eeed082
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x9a815d9a
+    member_id: 0x8b0cff85
+  }
+}
+struct_union {
+  id: 0x3f282cdf
+  kind: STRUCT
+  definition {
+    bytesize: 4
+    member_id: 0x9d818dc1
+    member_id: 0x90205d1d
+    member_id: 0x0d8c2019
+  }
+}
+struct_union {
+  id: 0x3f7c9d91
+  kind: STRUCT
+  definition {
+    bytesize: 16
+    member_id: 0x9cc0df78
+    member_id: 0x83ba53fe
+  }
+}
+struct_union {
+  id: 0x3fbd06d5
+  kind: STRUCT
+  definition {
+    bytesize: 24
+    member_id: 0x9f2f968c
+    member_id: 0x6a729dee
+    member_id: 0xec2bd3f9
+  }
+}
+struct_union {
+  id: 0x40610f28
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x5a76e9fa
+    member_id: 0x19a25c32
+  }
+}
+struct_union {
+  id: 0x40c70ebd
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0x583578ea
+    member_id: 0xc2351a1d
+  }
+}
+struct_union {
+  id: 0x40e0a9fa
+  kind: UNION
+  definition {
+    bytesize: 20
+    member_id: 0x586094ff
+    member_id: 0x094dff52
+    member_id: 0x09ece766
+  }
+}
+struct_union {
+  id: 0x40f9097c
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x58da08fa
+    member_id: 0xd55a0cb1
+  }
+}
+struct_union {
+  id: 0x414d6eac
+  kind: UNION
+  definition {
+    bytesize: 32
+    member_id: 0x5e084727
+    member_id: 0xd618538f
+    member_id: 0x92c27c47
+  }
+}
+struct_union {
+  id: 0x415339ed
+  kind: UNION
+  definition {
+    bytesize: 64
+    member_id: 0x5e9cc608
+    member_id: 0x3b56b9aa
+  }
+}
+struct_union {
+  id: 0x41925f27
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x5ddffeef
+    member_id: 0x7df57560
+  }
+}
+struct_union {
+  id: 0x41943ad5
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x5d04995c
+    member_id: 0xbf9f3e0b
+    member_id: 0x9a317d67
+  }
+}
+struct_union {
+  id: 0x41998d82
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0x5d327703
+    member_id: 0xbf360f83
+  }
+}
+struct_union {
+  id: 0x41cc22eb
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x5c65a01a
+    member_id: 0xbe4d69f8
+    member_id: 0x11d9dbfb
+  }
+}
+struct_union {
+  id: 0x41fadac3
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x5cb3d4c6
+    member_id: 0xb3c8cf65
+  }
+}
+struct_union {
+  id: 0x421dce9b
+  kind: UNION
+  definition {
+    bytesize: 32
+    member_id: 0x534a0d68
+    member_id: 0xd64000c8
+  }
+}
+struct_union {
+  id: 0x422401d6
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x53c410eb
+    member_id: 0xbf9f3e0b
+    member_id: 0xff8a9909
+  }
+}
+struct_union {
+  id: 0x42950f87
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x5168f15c
+    member_id: 0xd7325976
+    member_id: 0x8a1d1999
+  }
+}
+struct_union {
+  id: 0x430409e7
+  kind: UNION
+  definition {
+    bytesize: 2
+    member_id: 0x57eaacde
+    member_id: 0x11fc468f
+  }
+}
+struct_union {
+  id: 0x4315409c
+  kind: UNION
+  definition {
+    bytesize: 64
+    member_id: 0x57effc57
+    member_id: 0x518045f4
+    member_id: 0x0964ed2a
+  }
+}
+struct_union {
+  id: 0x43346467
+  kind: UNION
+  definition {
+    bytesize: 7
+    member_id: 0x57cf2507
+    member_id: 0xf5c39fe2
+  }
+}
+struct_union {
+  id: 0x438a815f
+  kind: UNION
+  definition {
+    bytesize: 128
+    member_id: 0x557a8cc2
+    member_id: 0xbbfebb47
+  }
+}
+struct_union {
+  id: 0x4399942e
+  kind: UNION
+  definition {
+    bytesize: 128
+    member_id: 0x55592954
+    member_id: 0xd40eeb5d
+  }
+}
+struct_union {
+  id: 0x43c518d7
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x54d11c55
+    member_id: 0x2e080f29
+  }
+}
+struct_union {
+  id: 0x43c532f4
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x54d11c55
+    member_id: 0x2e080f29
+    member_id: 0xa85e2a03
+    member_id: 0xd17382fd
+  }
+}
+struct_union {
+  id: 0x43da400a
+  kind: UNION
+  definition {
+    bytesize: 48
+    member_id: 0x545bc45d
+    member_id: 0xd9dce494
+    member_id: 0x6f97ea5f
+  }
+}
+struct_union {
+  id: 0x444ac848
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x4a1bede8
+    member_id: 0xdb2147ed
+    member_id: 0x9a8b59d9
+  }
+}
+struct_union {
+  id: 0x445630b8
+  kind: UNION
+  definition {
+    bytesize: 9
+    member_id: 0x4a27b1eb
+    member_id: 0x94040e69
+  }
+}
+struct_union {
+  id: 0x4485655c
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x49ff8872
+    member_id: 0x016a0467
+  }
+}
+struct_union {
+  id: 0x449b5046
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x49d1113e
+    member_id: 0x572723a9
+  }
+}
+struct_union {
+  id: 0x44cad962
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x48802e95
+    member_id: 0x403c1936
+  }
+}
+struct_union {
+  id: 0x44cf9d95
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x485b3652
+    member_id: 0x8e370213
+  }
+}
+struct_union {
+  id: 0x44e0bbd2
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x48b104b5
+    member_id: 0xd8342b40
+    member_id: 0xa8a8f25d
+    member_id: 0x78e9e843
+  }
+}
+struct_union {
+  id: 0x452b7c8e
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0x4f623c46
+    member_id: 0x249af93b
+    member_id: 0x2380a48f
+  }
+}
+struct_union {
+  id: 0x458b21a2
+  kind: UNION
+  definition {
+    bytesize: 40
+    member_id: 0x4d197fc2
+    member_id: 0xdefa6aef
+    member_id: 0x7425f0df
+  }
+}
+struct_union {
+  id: 0x458dfb2e
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x4d93c34b
+    member_id: 0x4f58f660
+  }
+}
+struct_union {
+  id: 0x459687a6
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x4d87803c
+    member_id: 0x36e9a16e
+  }
+}
+struct_union {
+  id: 0x45ea05f9
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x4c55a243
+    member_id: 0x16c2a0bb
+  }
+}
+struct_union {
+  id: 0x460e36a4
+  kind: UNION
+  definition {
+    bytesize: 80
+    member_id: 0x43cd259f
+    member_id: 0x1e504a04
+    member_id: 0xd88139c8
+    member_id: 0xc3a72858
+  }
+}
+struct_union {
+  id: 0x4680cff3
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x4190c1e8
+    member_id: 0x7889216a
+  }
+}
+struct_union {
+  id: 0x46bb9e3e
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x418d841d
+    member_id: 0x888be014
+  }
+}
+struct_union {
+  id: 0x47554d36
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x468757c6
+    member_id: 0x39141955
+  }
+}
+struct_union {
+  id: 0x4765767f
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x46e47dff
+    member_id: 0x9ad307bc
+  }
+}
+struct_union {
+  id: 0x47d8e06a
+  kind: UNION
+  definition {
+    bytesize: 104
+    member_id: 0x4499933d
+    member_id: 0x11d71f08
+    member_id: 0xb28ce909
+  }
+}
+struct_union {
+  id: 0x47ed198f
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x444fe167
+    member_id: 0x10f05f62
+  }
+}
+struct_union {
+  id: 0x4866b1cb
+  kind: UNION
+  definition {
+    bytesize: 48
+    member_id: 0x7ae46ae1
+    member_id: 0x95dac977
+  }
+}
+struct_union {
+  id: 0x48bd0268
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0x794004e1
+    member_id: 0x5f7a4496
+  }
+}
+struct_union {
+  id: 0x48fb1ff5
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0x788c9e45
+    member_id: 0x8b969425
+  }
+}
+struct_union {
+  id: 0x48ff9190
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x78439661
+    member_id: 0x56a7265c
+  }
+}
+struct_union {
+  id: 0x490f5a55
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0x7f771765
+    member_id: 0xa18f0428
+    member_id: 0x86c79331
+    member_id: 0xf5c4457d
+    member_id: 0xc9c35113
+  }
+}
+struct_union {
+  id: 0x49113092
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x7f328f84
+    member_id: 0x9d3acaae
+  }
+}
+struct_union {
+  id: 0x49340c50
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x7fe30e67
+    member_id: 0xd84822ff
+  }
+}
+struct_union {
+  id: 0x496df688
+  kind: UNION
+  definition {
+    bytesize: 272
+    member_id: 0x7e717873
+    member_id: 0x2dd55573
+  }
+}
+struct_union {
+  id: 0x49861740
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0x7dd68144
+    member_id: 0x25ab4212
+  }
+}
+struct_union {
+  id: 0x49df90a7
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x7c00ef52
+    member_id: 0x95dac977
+  }
+}
+struct_union {
+  id: 0x49fe71bd
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x7c9a8062
+    member_id: 0x8831900a
+  }
+}
+struct_union {
+  id: 0x4a427b1f
+  kind: UNION
+  definition {
+    bytesize: 72
+    member_id: 0x722c6700
+    member_id: 0xce0b4469
+    member_id: 0xf725a76b
+    member_id: 0x186a48f5
+    member_id: 0xe10e1bf3
+    member_id: 0x150f52f2
+    member_id: 0x2ed56124
+    member_id: 0x8196ac8a
+    member_id: 0xc697a075
+    member_id: 0x102d533e
+    member_id: 0xadf15a86
+    member_id: 0x9557af07
+    member_id: 0x7fe8e112
+    member_id: 0xd757ad74
+    member_id: 0x18de5d9d
+    member_id: 0x72ab0558
+    member_id: 0x207bf01a
+    member_id: 0xde75baba
+    member_id: 0x16b7aef5
+    member_id: 0xdb4a7f98
+  }
+}
+struct_union {
+  id: 0x4a7de6b3
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0x724a92c1
+    member_id: 0x567f0ad2
+  }
+}
+struct_union {
+  id: 0x4aac7bac
+  kind: UNION
+  definition {
+    bytesize: 64
+    member_id: 0x713ca529
+    member_id: 0x66d3b7cd
+    member_id: 0xef283ef2
+  }
+}
+struct_union {
+  id: 0x4ab41985
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x71ef81cb
+    member_id: 0xd490db84
+  }
+}
+struct_union {
+  id: 0x4b1329a6
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x770ebf33
+    member_id: 0xa96ead57
+  }
+}
+struct_union {
+  id: 0x4b39039b
+  kind: UNION
+  definition {
+    bytesize: 200
+    member_id: 0x77141202
+    member_id: 0x1b9e3b8f
+    member_id: 0xf55a6c56
+    member_id: 0x0a06d301
+    member_id: 0xab61cd86
+    member_id: 0x30866c51
+    member_id: 0xdb6dbe17
+    member_id: 0xbb375ab7
+  }
+}
+struct_union {
+  id: 0x4b8fdcb5
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x755d43db
+    member_id: 0x89460966
+  }
+}
+struct_union {
+  id: 0x4c287de0
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0x6b32af03
+    member_id: 0x782f8731
+  }
+}
+struct_union {
+  id: 0x4c6fa86e
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x6a903d59
+    member_id: 0xc5ebe684
+  }
+}
+struct_union {
+  id: 0x4c7dc96d
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x6a53451f
+    member_id: 0x4f17aee1
+  }
+}
+struct_union {
+  id: 0x4c8f250a
+  kind: UNION
+  definition {
+    bytesize: 64
+    member_id: 0x6991c17f
+    member_id: 0x462b6471
+    member_id: 0x0936c0e4
+  }
+}
+struct_union {
+  id: 0x4c94e8e8
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x6918a789
+    member_id: 0xa0732f23
+  }
+}
+struct_union {
+  id: 0x4ca087ef
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x693af87e
+    member_id: 0x53efd8ea
+    member_id: 0x7f1db283
+  }
+}
+struct_union {
+  id: 0x4cb3162b
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x69f88a42
+    member_id: 0xdf8a4270
+    member_id: 0x2f978d4c
+    member_id: 0x3ea911d5
+  }
+}
+struct_union {
+  id: 0x4d52b36b
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0x6e8b63cd
+    member_id: 0x2ad966ef
+  }
+}
+struct_union {
+  id: 0x4d5b17c5
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0x6e872813
+  }
+}
+struct_union {
+  id: 0x4d5cb8cd
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x6e4d805e
+    member_id: 0xd4146c29
+  }
+}
+struct_union {
+  id: 0x4db29c07
+  kind: UNION
+  definition {
+    bytesize: 192
+    member_id: 0x6d9baf85
+    member_id: 0xbaa89f63
+  }
+}
+struct_union {
+  id: 0x4dbdfdb0
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x6d80a782
+    member_id: 0x9c26475e
+  }
+}
+struct_union {
+  id: 0x4e1eb3a6
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x637724be
+    member_id: 0xe69d21c0
+  }
+}
+struct_union {
+  id: 0x4e276861
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0x63bb6276
+    member_id: 0xcdb4f4c5
+  }
+}
+struct_union {
+  id: 0x4ec29f8c
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x60e10937
+  }
+}
+struct_union {
+  id: 0x4eec63b3
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0x60d54116
+    member_id: 0x8fb8dff7
+  }
+}
+struct_union {
+  id: 0x4eefeb47
+  kind: UNION
+  definition {
+    bytesize: 2
+    member_id: 0x60db6ce9
+    member_id: 0x8fb6f208
+  }
+}
+struct_union {
+  id: 0x4ef90480
+  kind: UNION
+  definition {
+    bytesize: 1
+    member_id: 0x60808813
+    member_id: 0x8fed16f2
+  }
+}
+struct_union {
+  id: 0x4f03a6ae
+  kind: UNION
+  definition {
+    bytesize: 24
+    member_id: 0x67c4eef4
+    member_id: 0x21034835
+  }
+}
+struct_union {
+  id: 0x4f10779f
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x67f43ed4
+    member_id: 0x5e97ad65
+  }
+}
+struct_union {
+  id: 0x4f2326f3
+  kind: UNION
+  definition {
+    bytesize: 40
+    member_id: 0x6744016e
+    member_id: 0x23eda52b
+  }
+}
+struct_union {
+  id: 0x4f903dda
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x6561e08e
+    member_id: 0xca60e328
+  }
+}
+struct_union {
+  id: 0x4fd8e877
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x649f4d2e
+    member_id: 0x179bf477
+  }
+}
+struct_union {
+  id: 0x4ff869b4
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x64224fbc
+    member_id: 0x289e68d9
+  }
+}
+struct_union {
+  id: 0x4fff3cac
+  kind: UNION
+  definition {
+    bytesize: 20
+    member_id: 0x64367ab0
+    member_id: 0x21ff060a
+  }
+}
+struct_union {
+  id: 0x50085a6b
+  kind: UNION
+  definition {
+    bytesize: 2
+    member_id: 0x1bba67b5
+    member_id: 0x70e3cba0
+    member_id: 0x9af66991
+    member_id: 0x220cbd53
+  }
+}
+struct_union {
+  id: 0x50893793
+  kind: UNION
+  definition {
+    bytesize: 44
+    member_id: 0x195445f8
+    member_id: 0x9becb34f
+  }
+}
+struct_union {
+  id: 0x50ab9f3a
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x19aed6d6
+    member_id: 0xebdd3968
+  }
+}
+struct_union {
+  id: 0x50aba8bb
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0x1981ec83
+    member_id: 0xc4396ab4
+  }
+}
+struct_union {
+  id: 0x50eb577a
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x1842006e
+    member_id: 0x042a8363
+  }
+}
+struct_union {
+  id: 0x50f0cbcf
+  kind: UNION
+  definition {
+    bytesize: 96
+    member_id: 0x183ffc0d
+    member_id: 0x1736c096
+    member_id: 0x92f464d1
+  }
+}
+struct_union {
+  id: 0x50fafc25
+  kind: UNION
+  definition {
+    bytesize: 40
+    member_id: 0x18b48436
+    member_id: 0xb403a636
+  }
+}
+struct_union {
+  id: 0x51d7edf0
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x1c82693d
+    member_id: 0x36add9ff
+    member_id: 0x0421891a
+  }
+}
+struct_union {
+  id: 0x52370a3a
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x1306abca
+    member_id: 0x31f4271e
+  }
+}
+struct_union {
+  id: 0x52891b8e
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x11de5ee1
+    member_id: 0x1147dffa
+  }
+}
+struct_union {
+  id: 0x52930afb
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x118dc54d
+    member_id: 0x2a99a59c
+  }
+}
+struct_union {
+  id: 0x529cdb86
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x11f3fee9
+    member_id: 0x6be7f4d8
+  }
+}
+struct_union {
+  id: 0x52b4e365
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x11c679d6
+    member_id: 0xfe834548
+  }
+}
+struct_union {
+  id: 0x537a3f0f
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0x16377fa9
+    member_id: 0x34f49183
+  }
+}
+struct_union {
+  id: 0x53b5414d
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0x1536626c
+    member_id: 0x08e67211
+    member_id: 0xf62e1eea
+  }
+}
+struct_union {
+  id: 0x54087a69
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0x0b195703
+    member_id: 0xd3a2d898
+    member_id: 0x6b7a3cdf
+  }
+}
+struct_union {
+  id: 0x5409672a
+  kind: UNION
+  definition {
+    bytesize: 112
+    member_id: 0x0bf9b84f
+    member_id: 0x376c5a92
+    member_id: 0x3f3ca544
+    member_id: 0x878a9cec
+    member_id: 0xd3271cdd
+    member_id: 0xd11f3f95
+    member_id: 0xc3a8c71e
+    member_id: 0x87d4d5fe
+    member_id: 0x79a32c87
+    member_id: 0x7883b5a8
+    member_id: 0x964f2a5d
+    member_id: 0x74f3ae58
+  }
+}
+struct_union {
+  id: 0x542c6f59
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x0b792844
+    member_id: 0x23e22538
+  }
+}
+struct_union {
+  id: 0x543e0a1c
+  kind: UNION
+  definition {
+    bytesize: 40
+    member_id: 0x0b255eca
+    member_id: 0x36c6e162
+    member_id: 0xc71d2276
+    member_id: 0x41b5cb45
+    member_id: 0x96471a5c
+  }
+}
+struct_union {
+  id: 0x546bc03d
+  kind: UNION
+  definition {
+    bytesize: 56
+    member_id: 0x0acdf01b
+    member_id: 0x891369fe
+    member_id: 0x9481c1a2
+  }
+}
+struct_union {
+  id: 0x54b76778
+  kind: UNION
+  definition {
+    bytesize: 32
+    member_id: 0x0936eae7
+  }
+}
+struct_union {
+  id: 0x54c04e96
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x082c701d
+    member_id: 0xc63d4176
+  }
+}
+struct_union {
+  id: 0x5509d7db
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x0f6aa0e9
+    member_id: 0xa6888290
+  }
+}
+struct_union {
+  id: 0x55442a38
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x0edba5dd
+    member_id: 0x205fa3df
+    member_id: 0x252e0491
+    member_id: 0xb62eb97d
+    member_id: 0x3bb664e4
+    member_id: 0x0906fd74
+    member_id: 0xc871000d
+  }
+}
+struct_union {
+  id: 0x554628d6
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x0e530004
+    member_id: 0xa0d458ce
+  }
+}
+struct_union {
+  id: 0x5574fba9
+  kind: UNION
+  definition {
+    bytesize: 32
+    member_id: 0x0ebfc97f
+    member_id: 0x873e62a9
+    member_id: 0x6eae7188
+    member_id: 0x13c9453c
+    member_id: 0x68c152e4
+  }
+}
+struct_union {
+  id: 0x557609c1
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x0e083bee
+    member_id: 0x3b6bed93
+  }
+}
+struct_union {
+  id: 0x5599d322
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x0ddfefbb
+    member_id: 0x53d434cb
+  }
+}
+struct_union {
+  id: 0x559f10ea
+  kind: UNION
+  definition {
+    bytesize: 32
+    member_id: 0x0ddfefbb
+    member_id: 0x48d446d8
+    member_id: 0x0f6471e1
+    member_id: 0x3599c2c8
+    member_id: 0x6bb5d251
+    member_id: 0xe352e743
+  }
+}
+struct_union {
+  id: 0x55ba3ec3
+  kind: UNION
+  definition {
+    bytesize: 32
+    member_id: 0x0da3593b
+    member_id: 0xa0d5322b
+  }
+}
+struct_union {
+  id: 0x56037e9c
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x03399b7b
+    member_id: 0xdf160d99
+  }
+}
+struct_union {
+  id: 0x56048ec7
+  kind: UNION
+  definition {
+    bytesize: 32
+    member_id: 0x03bacce4
+    member_id: 0x4380fca4
+  }
+}
+struct_union {
+  id: 0x56faddc1
+  kind: UNION
+  definition {
+  }
+}
+struct_union {
+  id: 0x57bf00b8
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x05bcef78
+    member_id: 0xab9a9d3d
+  }
+}
+struct_union {
+  id: 0x5818bd5b
+  kind: UNION
+  definition {
+    bytesize: 32
+    member_id: 0x3bb33f89
+    member_id: 0x3abde08a
+  }
+}
+struct_union {
+  id: 0x581b0b88
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0x3b67f414
+    member_id: 0xe0ad31b5
+  }
+}
+struct_union {
+  id: 0x582ba361
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x3bdc741a
+    member_id: 0x998e9b78
+  }
+}
+struct_union {
+  id: 0x5867cba7
+  kind: UNION
+  definition {
+    bytesize: 13
+    member_id: 0x3a7aac3a
+    member_id: 0x0e9baccf
+    member_id: 0x6e13303f
+    member_id: 0x1fcf1037
+    member_id: 0xf541d798
+  }
+}
+struct_union {
+  id: 0x58870dc8
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x39d26e21
+    member_id: 0x252e0491
+  }
+}
+struct_union {
+  id: 0x59934750
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x3d54b4ac
+    member_id: 0xf2deea49
+  }
+}
+struct_union {
+  id: 0x59cfcc1c
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0x3cfbfc89
+    member_id: 0x2fbbfd62
+  }
+}
+struct_union {
+  id: 0x59eaab0f
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x3cd401f2
+    member_id: 0x95dac977
+  }
+}
+struct_union {
+  id: 0x5a6b6efc
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x325a63f3
+    member_id: 0x1caf0749
+  }
+}
+struct_union {
+  id: 0x5a8e8177
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x31d73769
+    member_id: 0x0645b349
+  }
+}
+struct_union {
+  id: 0x5a8f4265
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x31cb9c31
+    member_id: 0x1d349c4a
+    member_id: 0xd69815b7
+    member_id: 0xa6870c7d
+    member_id: 0x7ac90484
+    member_id: 0xf8e7b484
+    member_id: 0x50d0bd8c
+    member_id: 0x2e0294e1
+  }
+}
+struct_union {
+  id: 0x5ae4b375
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x3025d5eb
+    member_id: 0x5c6f393c
+  }
+}
+struct_union {
+  id: 0x5aebb510
+  kind: UNION
+  definition {
+    bytesize: 12
+    member_id: 0x3002f7d1
+    member_id: 0x475f5a88
+    member_id: 0x0b34b082
+    member_id: 0xfb29055b
+  }
+}
+struct_union {
+  id: 0x5aefbcda
+  kind: UNION
+  definition {
+    bytesize: 64
+    member_id: 0x303c361c
+    member_id: 0x6900647d
+    member_id: 0xb2db563f
+    member_id: 0xcc0681c0
+    member_id: 0x70391cbd
+    member_id: 0xff8d7685
+  }
+}
+struct_union {
+  id: 0x5b144298
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0x373e605f
+    member_id: 0x841d3835
+  }
+}
+struct_union {
+  id: 0x5b5b8eb5
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x364e8ee0
+    member_id: 0xcbc331da
+  }
+}
+struct_union {
+  id: 0x5ba545d0
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0x353dec0e
+    member_id: 0x438c4950
+  }
+}
+struct_union {
+  id: 0x5bc27631
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x34f83972
+    member_id: 0x1a96b10c
+  }
+}
+struct_union {
+  id: 0x5bdb70e0
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x340ef030
+    member_id: 0x8844b6fd
+  }
+}
+struct_union {
+  id: 0x5c3ef0a3
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x2bca1fa7
+    member_id: 0xdaaa2fd5
+  }
+}
+struct_union {
+  id: 0x5c5fa7e4
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x2a513f2f
+    member_id: 0xc4d7b9f1
+  }
+}
+struct_union {
+  id: 0x5c637323
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x2a406106
+    member_id: 0x26da8cc1
+  }
+}
+struct_union {
+  id: 0x5cac5fcc
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0x2939f808
+    member_id: 0x63f03d1c
+  }
+}
+struct_union {
+  id: 0x5cc01b50
+  kind: UNION
+  definition {
+    bytesize: 12
+    member_id: 0x2890339e
+    member_id: 0x7b9c3f2d
+    member_id: 0xb5b01443
+    member_id: 0x57a36b4e
+  }
+}
+struct_union {
+  id: 0x5cc2a264
+  kind: UNION
+  definition {
+    bytesize: 96
+    member_id: 0x28cca42f
+    member_id: 0x2d71506c
+    member_id: 0x2bc5541a
+    member_id: 0x2d16b3a0
+    member_id: 0x290dbbd8
+    member_id: 0x2100940b
+  }
+}
+struct_union {
+  id: 0x5cdddb34
+  kind: UNION
+  definition {
+    bytesize: 40
+    member_id: 0x288e28bc
+    member_id: 0x121b286f
+    member_id: 0x28acbbd7
+    member_id: 0xedd5887d
+  }
+}
+struct_union {
+  id: 0x5d08323b
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x2f226ee7
+    member_id: 0xe9d10ccf
+  }
+}
+struct_union {
+  id: 0x5d131624
+  kind: UNION
+  definition {
+    bytesize: 224
+    member_id: 0x2f7cad73
+    member_id: 0xdb82e5a6
+  }
+}
+struct_union {
+  id: 0x5d2f0e0f
+  kind: UNION
+  definition {
+    bytesize: 24
+    member_id: 0x2f731943
+    member_id: 0x2456788b
+  }
+}
+struct_union {
+  id: 0x5d5ed2a3
+  kind: UNION
+  definition {
+    bytesize: 32
+    member_id: 0x2e1d39f7
+    member_id: 0x8d88e301
+    member_id: 0x8c9fd173
+  }
+}
+struct_union {
+  id: 0x5d86aa37
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0x2d8eaae1
+    member_id: 0x7f7538b5
+  }
+}
+struct_union {
+  id: 0x5da1f3d6
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x2d6cb85c
+  }
+}
+struct_union {
+  id: 0x5dafba4f
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x2db2c8b0
+    member_id: 0xe7568bc2
+  }
+}
+struct_union {
+  id: 0x5db28e31
+  kind: UNION
+  definition {
+    bytesize: 64
+    member_id: 0x2d9a297e
+    member_id: 0xbb66bd45
+  }
+}
+struct_union {
+  id: 0x5dd6efa4
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x2c96db22
+    member_id: 0x2612b435
+  }
+}
+struct_union {
+  id: 0x5e0c51b7
+  kind: UNION
+  definition {
+    bytesize: 24
+    member_id: 0x230022a6
+    member_id: 0xdaff4793
+    member_id: 0xec395640
+  }
+}
+struct_union {
+  id: 0x5e0e7f88
+  kind: UNION
+  definition {
+    bytesize: 24
+    member_id: 0x230022a6
+    member_id: 0xd2ab81ed
+  }
+}
+struct_union {
+  id: 0x5e1b90c7
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x232a8b54
+    member_id: 0xafbf4c24
+  }
+}
+struct_union {
+  id: 0x5e23b110
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x23e47945
+    member_id: 0x81ca0028
+  }
+}
+struct_union {
+  id: 0x5e4227fb
+  kind: UNION
+  definition {
+    bytesize: 80
+    member_id: 0x2282ae92
+    member_id: 0x61467847
+  }
+}
+struct_union {
+  id: 0x5e422cfb
+  kind: UNION
+  definition {
+    bytesize: 72
+    member_id: 0x22c0fbbc
+    member_id: 0x233f54d1
+  }
+}
+struct_union {
+  id: 0x5e53dc24
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x226947a6
+    member_id: 0xcdde047e
+    member_id: 0x9e35fa9f
+  }
+}
+struct_union {
+  id: 0x5e68e6b1
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x22e86cdc
+    member_id: 0xa0811eb2
+  }
+}
+struct_union {
+  id: 0x5e6ae626
+  kind: UNION
+  definition {
+    bytesize: 2
+    member_id: 0x22678130
+    member_id: 0x276eae33
+  }
+}
+struct_union {
+  id: 0x5e9e8f68
+  kind: UNION
+  definition {
+    bytesize: 24
+    member_id: 0x2104906c
+    member_id: 0x95dac977
+  }
+}
+struct_union {
+  id: 0x5ea40ae6
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x2120b81b
+    member_id: 0x5b6e2278
+    member_id: 0x8aa923af
+    member_id: 0x0d96cd21
+  }
+}
+struct_union {
+  id: 0x5eaff3ae
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x210250cd
+    member_id: 0x56e97283
+  }
+}
+struct_union {
+  id: 0x5ec718db
+  kind: UNION
+  definition {
+    bytesize: 60
+    member_id: 0x20d628de
+    member_id: 0x213cb4e4
+  }
+}
+struct_union {
+  id: 0x5ed73544
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x20fd5371
+    member_id: 0x4af16562
+  }
+}
+struct_union {
+  id: 0x5f233302
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0x27c6cecf
+    member_id: 0xa1598d02
+    member_id: 0x2c4f5ed4
+  }
+}
+struct_union {
+  id: 0x5f2be968
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x275522f1
+    member_id: 0x11f05612
+  }
+}
+struct_union {
+  id: 0x5f300ad4
+  kind: UNION
+  definition {
+    bytesize: 24
+    member_id: 0x27031642
+    member_id: 0x286e0992
+    member_id: 0x241d5a69
+  }
+}
+struct_union {
+  id: 0x5f3359ca
+  kind: UNION
+  definition {
+    bytesize: 128
+    member_id: 0x2710bef2
+    member_id: 0x36aedf4a
+  }
+}
+struct_union {
+  id: 0x5f360cda
+  kind: UNION
+  definition {
+    member_id: 0x27104b59
+    member_id: 0x230f36dc
+  }
+}
+struct_union {
+  id: 0x5f37d1b0
+  kind: UNION
+  definition {
+    bytesize: 64
+    member_id: 0x27060459
+    member_id: 0x32359e3d
+  }
+}
+struct_union {
+  id: 0x5f48d381
+  kind: UNION
+  definition {
+    bytesize: 40
+    member_id: 0x26e6f511
+    member_id: 0x2ee1d79b
+    member_id: 0x2de93550
+    member_id: 0x2e1fd5ab
+    member_id: 0x2e407ff3
+    member_id: 0x27604dcc
+    member_id: 0x56a7265c
+  }
+}
+struct_union {
+  id: 0x5f4cb447
+  kind: UNION
+  definition {
+    bytesize: 20
+    member_id: 0x266c1567
+    member_id: 0xb5b37ce8
+  }
+}
+struct_union {
+  id: 0x5f59bc43
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x26977e15
+    member_id: 0x1af81eef
+  }
+}
+struct_union {
+  id: 0x5f9cd74b
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x252e0491
+    member_id: 0xb62eb97d
+  }
+}
+struct_union {
+  id: 0x5fafd98d
+  kind: UNION
+  definition {
+    bytesize: 32
+    member_id: 0x2503427d
+    member_id: 0x57534cde
+  }
+}
+struct_union {
+  id: 0x5fd242c1
+  kind: UNION
+  definition {
+    member_id: 0x24894b45
+    member_id: 0x2b37476e
+  }
+}
+struct_union {
+  id: 0x5fd4dcd8
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x24c431ea
+    member_id: 0x7c358f2e
+  }
+}
+struct_union {
+  id: 0x5fdadf32
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x24356203
+    member_id: 0xb569cc65
+  }
+}
+struct_union {
+  id: 0x5ff7d434
+  kind: UNION
+  definition {
+    bytesize: 24
+    member_id: 0x24c43243
+    member_id: 0xf069c7e8
+    member_id: 0x7c00ef52
+    member_id: 0x52179283
+  }
+}
+struct_union {
+  id: 0x5ffa422f
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x242c75d0
+    member_id: 0x2e0a69cb
+  }
+}
+struct_union {
+  id: 0x5ffaf768
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x24c02d11
+    member_id: 0xc087b526
+  }
+}
+struct_union {
+  id: 0x603e99d0
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xdb4fffa0
+    member_id: 0x5eefe6e4
+  }
+}
+struct_union {
+  id: 0x604b5d38
+  kind: UNION
+  definition {
+    bytesize: 24
+    member_id: 0xda08efc1
+    member_id: 0xceec25dd
+  }
+}
+struct_union {
+  id: 0x60542ee3
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0xda57f983
+    member_id: 0xec350adc
+  }
+}
+struct_union {
+  id: 0x607e3493
+  kind: UNION
+  definition {
+    bytesize: 48
+    member_id: 0xda32aefe
+    member_id: 0x210bb47b
+  }
+}
+struct_union {
+  id: 0x608bfd4c
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0xd99832cd
+    member_id: 0x5cb0fbc1
+  }
+}
+struct_union {
+  id: 0x608c0f38
+  kind: UNION
+  definition {
+    bytesize: 72
+    member_id: 0xd9db4be5
+  }
+}
+struct_union {
+  id: 0x60a4ff34
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0xd95fbe7d
+    member_id: 0x275426a5
+    member_id: 0x618cf87a
+  }
+}
+struct_union {
+  id: 0x60b9d14d
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0xd969ee21
+    member_id: 0x65dc12d8
+  }
+}
+struct_union {
+  id: 0x60fca4f5
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0xd86ac1b8
+    member_id: 0x73256980
+  }
+}
+struct_union {
+  id: 0x611904de
+  kind: UNION
+  definition {
+    bytesize: 1
+    member_id: 0xdfbc3823
+    member_id: 0x335c5ca9
+  }
+}
+struct_union {
+  id: 0x61255a86
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xdf2cf939
+    member_id: 0x52aa1c89
+    member_id: 0x4ed7a847
+    member_id: 0xefcc01d9
+    member_id: 0x99e7128e
+    member_id: 0xae5b2ccb
+  }
+}
+struct_union {
+  id: 0x61331134
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xdff6a1f5
+    member_id: 0xd19f7359
+    member_id: 0x0dedc842
+    member_id: 0xbf9f3e0b
+  }
+}
+struct_union {
+  id: 0x6152bb0a
+  kind: UNION
+  definition {
+    bytesize: 2
+    member_id: 0xdea19b2f
+  }
+}
+struct_union {
+  id: 0x615fb8dc
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0xde1fd452
+    member_id: 0x8a402643
+  }
+}
+struct_union {
+  id: 0x61a83f50
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xdd530657
+    member_id: 0x188c1100
+  }
+}
+struct_union {
+  id: 0x61e297e1
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0xdceffd77
+    member_id: 0x8ed5f4eb
+  }
+}
+struct_union {
+  id: 0x62b835e0
+  kind: UNION
+  definition {
+    bytesize: 24
+    member_id: 0xd1574725
+    member_id: 0x5c79850d
+    member_id: 0x9e49c199
+    member_id: 0x6fa74346
+    member_id: 0x46df9aa6
+    member_id: 0x51ff8c9d
+  }
+}
+struct_union {
+  id: 0x62b8394b
+  kind: UNION
+  definition {
+    bytesize: 24
+    member_id: 0xd1574725
+    member_id: 0x5c4b2512
+    member_id: 0x9e45699e
+    member_id: 0x6fa74346
+    member_id: 0x46ed3ab9
+    member_id: 0x51f3249a
+  }
+}
+struct_union {
+  id: 0x62b8394c
+  kind: UNION
+  definition {
+    bytesize: 24
+    member_id: 0xd1574725
+    member_id: 0x5c4b2512
+    member_id: 0x9e45699e
+    member_id: 0x6fa74346
+    member_id: 0x46e877b0
+    member_id: 0x51f277d8
+  }
+}
+struct_union {
+  id: 0x6309d066
+  kind: UNION
+  definition {
+    bytesize: 40
+    member_id: 0xd7c1de34
+    member_id: 0x0db69ff9
+    member_id: 0x5e3692cb
+  }
+}
+struct_union {
+  id: 0x6366329e
+  kind: UNION
+  definition {
+    bytesize: 48
+    member_id: 0xd6e667b7
+    member_id: 0x95dac977
+  }
+}
+struct_union {
+  id: 0x63a2a892
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0xd5cac7cd
+    member_id: 0xab12835f
+  }
+}
+struct_union {
+  id: 0x63db26fc
+  kind: UNION
+  definition {
+    bytesize: 312
+    member_id: 0xd491835d
+    member_id: 0x166fabb0
+  }
+}
+struct_union {
+  id: 0x63db5ef9
+  kind: UNION
+  definition {
+    bytesize: 40
+    member_id: 0xd4031571
+    member_id: 0x8519930d
+  }
+}
+struct_union {
+  id: 0x6452444e
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xcaeb7a86
+    member_id: 0x491cb80e
+  }
+}
+struct_union {
+  id: 0x645716d5
+  kind: UNION
+  definition {
+    bytesize: 64
+    member_id: 0xca9f2e3d
+    member_id: 0x28026f1f
+  }
+}
+struct_union {
+  id: 0x65024d05
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xcfd2b519
+    member_id: 0x30f60bd2
+  }
+}
+struct_union {
+  id: 0x6528bf21
+  kind: UNION
+  definition {
+    bytesize: 1
+    member_id: 0xcf94e1f3
+    member_id: 0xdd6a73ea
+  }
+}
+struct_union {
+  id: 0x6562193e
+  kind: UNION
+  definition {
+    bytesize: 56
+    member_id: 0xce8b62d8
+    member_id: 0xe87124fa
+  }
+}
+struct_union {
+  id: 0x65688551
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xce0b4469
+    member_id: 0x42262ad9
+  }
+}
+struct_union {
+  id: 0x657e05a2
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xce13618d
+  }
+}
+struct_union {
+  id: 0x65af0602
+  kind: UNION
+  definition {
+    bytesize: 32
+    member_id: 0xcd2ef056
+    member_id: 0x799f58aa
+  }
+}
+struct_union {
+  id: 0x65b6b45a
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xcdca510a
+    member_id: 0xfbf767cc
+  }
+}
+struct_union {
+  id: 0x65cbce23
+  kind: UNION
+  definition {
+    bytesize: 12
+    member_id: 0xccedb9aa
+    member_id: 0x29fbe0cb
+    member_id: 0x0dc06314
+  }
+}
+struct_union {
+  id: 0x65d6c360
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xcc548e90
+    member_id: 0xe4f4148f
+  }
+}
+struct_union {
+  id: 0x65fd480f
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0xcc167c20
+    member_id: 0x082b1975
+  }
+}
+struct_union {
+  id: 0x66d53bfd
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0xc06b1d71
+    member_id: 0xd48582c5
+  }
+}
+struct_union {
+  id: 0x66fc0cb1
+  kind: UNION
+  definition {
+    bytesize: 24
+    member_id: 0xc0bc4db7
+    member_id: 0xa7e5d320
+    member_id: 0xeda56dd3
+  }
+}
+struct_union {
+  id: 0x67984f0c
+  kind: UNION
+  definition {
+    bytesize: 32
+    member_id: 0xc5e6562f
+    member_id: 0x6c93fd20
+    member_id: 0x8ee7990f
+  }
+}
+struct_union {
+  id: 0x67d43857
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0xc49a0951
+    member_id: 0x219f0b9e
+  }
+}
+struct_union {
+  id: 0x67d69fb5
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xc4a3fbf7
+    member_id: 0x12f2249e
+  }
+}
+struct_union {
+  id: 0x6888b6e5
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xf991fe78
+    member_id: 0x5852e92d
+  }
+}
+struct_union {
+  id: 0x68d21466
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xf8717bfb
+    member_id: 0xd25d6541
+  }
+}
+struct_union {
+  id: 0x6903870d
+  kind: UNION
+  definition {
+    bytesize: 128
+    member_id: 0xffe56b33
+  }
+}
+struct_union {
+  id: 0x6905d706
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xff5b2c47
+    member_id: 0xa7075a62
+  }
+}
+struct_union {
+  id: 0x69066ca6
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0xff5b2c47
+    member_id: 0xa9e9d887
+  }
+}
+struct_union {
+  id: 0x69175955
+  kind: UNION
+  definition {
+    bytesize: 512
+    member_id: 0xff34d3a7
+    member_id: 0x82c1f40b
+  }
+}
+struct_union {
+  id: 0x6932433a
+  kind: UNION
+  definition {
+    bytesize: 128
+    member_id: 0xffc40278
+    member_id: 0xe6799493
+  }
+}
+struct_union {
+  id: 0x69b13f9a
+  kind: UNION
+  definition {
+    member_id: 0xfd8f9163
+    member_id: 0xa0c72311
+    member_id: 0xdf2ffcf1
+  }
+}
+struct_union {
+  id: 0x69b475fe
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xfd2d9ca3
+    member_id: 0x173c5c3d
+  }
+}
+struct_union {
+  id: 0x69fa9768
+  kind: UNION
+  definition {
+    bytesize: 24
+    member_id: 0xfc143b54
+    member_id: 0x1511f0c7
+  }
+}
+struct_union {
+  id: 0x6a0371c1
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xf394068c
+    member_id: 0x72b68f63
+  }
+}
+struct_union {
+  id: 0x6a5655e1
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xf29527a4
+    member_id: 0x270727dd
+  }
+}
+struct_union {
+  id: 0x6ad203b6
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0xf036a316
+    member_id: 0x95dac977
+  }
+}
+struct_union {
+  id: 0x6b4a8270
+  kind: UNION
+  definition {
+    bytesize: 24
+    member_id: 0xf6e3ddc9
+    member_id: 0x22bad2b6
+    member_id: 0x196a8883
+    member_id: 0xb5e94c16
+    member_id: 0x22b4d212
+    member_id: 0xee01730d
+    member_id: 0x95ecb634
+  }
+}
+struct_union {
+  id: 0x6bc0e8a0
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xf4ae3df0
+    member_id: 0x46e877b0
+  }
+}
+struct_union {
+  id: 0x6c2e2493
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0xeb76e344
+    member_id: 0x25060e06
+  }
+}
+struct_union {
+  id: 0x6c3d6f5d
+  kind: UNION
+  definition {
+    bytesize: 24
+    member_id: 0xeb3cfcbb
+    member_id: 0x2236c9c7
+  }
+}
+struct_union {
+  id: 0x6cb7a0bb
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0xe930ea5e
+    member_id: 0x051fb74d
+  }
+}
+struct_union {
+  id: 0x6cc91de2
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xe8dc9a45
+    member_id: 0x139acaa4
+  }
+}
+struct_union {
+  id: 0x6d504440
+  kind: UNION
+  definition {
+    bytesize: 2
+    member_id: 0xee1a3da7
+    member_id: 0xb0f592ee
+    member_id: 0xaec5d3b3
+    member_id: 0xf5dac657
+    member_id: 0xaa26b880
+    member_id: 0xe5684527
+    member_id: 0xf506281c
+  }
+}
+struct_union {
+  id: 0x6da4bf51
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0xed7b94a2
+    member_id: 0x021ee2b5
+  }
+}
+struct_union {
+  id: 0x6dd7c107
+  kind: UNION
+  definition {
+    bytesize: 48
+    member_id: 0xec80d600
+    member_id: 0x34a5187e
+  }
+}
+struct_union {
+  id: 0x6e8ae78e
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0xe1a7b52a
+    member_id: 0x6773cd7f
+    member_id: 0x2fd917c3
+  }
+}
+struct_union {
+  id: 0x6e9b8bbb
+  kind: UNION
+  definition {
+    bytesize: 2
+    member_id: 0xe1c4cb2d
+    member_id: 0x4192c5b2
+  }
+}
+struct_union {
+  id: 0x6ea6707c
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0xe1e76c3c
+    member_id: 0x95dac977
+  }
+}
+struct_union {
+  id: 0x6eb4b694
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0xe1cecc23
+    member_id: 0xf76177f0
+  }
+}
+struct_union {
+  id: 0x6ef94499
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0xe0b846c5
+    member_id: 0xb623a769
+  }
+}
+struct_union {
+  id: 0x6f2909ad
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xe733e49b
+    member_id: 0x7cb52b3e
+  }
+}
+struct_union {
+  id: 0x701090f6
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x9bfaf27b
+    member_id: 0x53efd8ea
+    member_id: 0x29020c72
+    member_id: 0x7f1db283
+  }
+}
+struct_union {
+  id: 0x701d5f83
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0x9b9fd183
+    member_id: 0x01aea3e5
+    member_id: 0x76c4a5d8
+    member_id: 0xed4fe699
+    member_id: 0x8b4c11b0
+    member_id: 0xc3bc0164
+    member_id: 0x4358f76d
+    member_id: 0x83de1f5d
+    member_id: 0xba7a8e37
+    member_id: 0x4e0cf9e5
+    member_id: 0x3a21149c
+    member_id: 0x9c970db9
+    member_id: 0xed24c146
+    member_id: 0x60108fe5
+    member_id: 0xa9771250
+    member_id: 0x10408836
+    member_id: 0x8b577cf3
+    member_id: 0xdf3a545d
+    member_id: 0x8432aabc
+  }
+}
+struct_union {
+  id: 0x70386f82
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x9b5959a2
+    member_id: 0x53efd8ea
+    member_id: 0x7f7538b5
+  }
+}
+struct_union {
+  id: 0x703d8408
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0x9b1d6725
+  }
+}
+struct_union {
+  id: 0x7042efa8
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x9a1f433c
+    member_id: 0xff8a9909
+  }
+}
+struct_union {
+  id: 0x70763ce9
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x9a0fb3c5
+    member_id: 0x3c3764f7
+  }
+}
+struct_union {
+  id: 0x7097e100
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0x99949b8a
+    member_id: 0x20688d61
+  }
+}
+struct_union {
+  id: 0x70e783e8
+  kind: UNION
+  definition {
+    bytesize: 20
+    member_id: 0x9801f1f9
+    member_id: 0x7425f0df
+    member_id: 0xacad41e6
+  }
+}
+struct_union {
+  id: 0x713b2aa5
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x9f51ce32
+    member_id: 0x5613a1d4
+  }
+}
+struct_union {
+  id: 0x7219af6f
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x93f3e8b8
+    member_id: 0x7e220177
+  }
+}
+struct_union {
+  id: 0x723bb067
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x93f6ff40
+    member_id: 0xf381a6fb
+    member_id: 0xc865c98d
+    member_id: 0x1b204bc4
+    member_id: 0x84448bf3
+  }
+}
+struct_union {
+  id: 0x724a30dd
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x92c34ca7
+    member_id: 0x00f8d73b
+  }
+}
+struct_union {
+  id: 0x726a0350
+  kind: UNION
+  definition {
+    bytesize: 64
+    member_id: 0x924a1eab
+    member_id: 0x0964ed2a
+  }
+}
+struct_union {
+  id: 0x726a721b
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x9206d03d
+    member_id: 0x446f5470
+  }
+}
+struct_union {
+  id: 0x72784323
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x9227b221
+    member_id: 0x2dc9a82f
+  }
+}
+struct_union {
+  id: 0x727bf591
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0x92c2a1ed
+    member_id: 0xc600ac94
+  }
+}
+struct_union {
+  id: 0x7281f2df
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x917966b3
+    member_id: 0x95dac977
+  }
+}
+struct_union {
+  id: 0x72a47c5c
+  kind: UNION
+  definition {
+    bytesize: 40
+    member_id: 0x917966b3
+    member_id: 0x03e0c67c
+  }
+}
+struct_union {
+  id: 0x72a72a93
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x912b1a18
+    member_id: 0x5c8384f3
+    member_id: 0x44d45015
+  }
+}
+struct_union {
+  id: 0x72ad065b
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x91ecd1aa
+    member_id: 0xb3bfc1c1
+  }
+}
+struct_union {
+  id: 0x72b8332f
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x9190d34d
+    member_id: 0x9b799345
+    member_id: 0x11657111
+  }
+}
+struct_union {
+  id: 0x72c9a84f
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x90e3c9d4
+    member_id: 0x2e898e1e
+    member_id: 0x9663ce13
+  }
+}
+struct_union {
+  id: 0x72d190a3
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x903d96f4
+    member_id: 0x90e561c8
+    member_id: 0x461d38a2
+  }
+}
+struct_union {
+  id: 0x72da9250
+  kind: UNION
+  definition {
+    bytesize: 32
+    member_id: 0x90a52751
+    member_id: 0x24e087c3
+    member_id: 0xf96ca45e
+    member_id: 0xfca623a0
+    member_id: 0x1ee6b6cd
+  }
+}
+struct_union {
+  id: 0x7317df8a
+  kind: UNION
+  definition {
+    bytesize: 256
+    member_id: 0x97c7b08c
+    member_id: 0x73029e0c
+    member_id: 0xbba39a9a
+    member_id: 0x9d5b90f8
+    member_id: 0x07307794
+    member_id: 0x4779a89b
+    member_id: 0x32e7dee3
+    member_id: 0x6fe88545
+    member_id: 0x2b1b8ef2
+    member_id: 0x3fd31627
+    member_id: 0xd9d85a91
+    member_id: 0xc747f834
+    member_id: 0xcf651311
+    member_id: 0x3ba0211e
+    member_id: 0x35649aee
+    member_id: 0xae5a4181
+    member_id: 0x66d41c47
+    member_id: 0x04b5cf1e
+    member_id: 0xb39193a3
+    member_id: 0x5fd2e3fb
+    member_id: 0xa2d43869
+    member_id: 0x8a1c8492
+    member_id: 0xdabb1c55
+    member_id: 0x324f2583
+    member_id: 0xd9690496
+    member_id: 0x112a2e09
+    member_id: 0xb09d2ffa
+    member_id: 0x56e50a84
+    member_id: 0x6491fbda
+  }
+}
+struct_union {
+  id: 0x734252fe
+  kind: UNION
+  definition {
+    bytesize: 24
+    member_id: 0x960235c0
+    member_id: 0xe03cf4fb
+    member_id: 0x35b43c53
+    member_id: 0x7f48179d
+    member_id: 0x0ce81a3b
+    member_id: 0x18e0a2f9
+    member_id: 0x53505a5b
+    member_id: 0x83fe0e72
+    member_id: 0x4cdca79b
+    member_id: 0xc1f93ab1
+    member_id: 0x9215d8f6
+    member_id: 0xc13ca57d
+    member_id: 0x27e2c5ba
+  }
+}
+struct_union {
+  id: 0x73443d22
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x964c8c87
+    member_id: 0xb70f08f1
+  }
+}
+struct_union {
+  id: 0x73725cdd
+  kind: UNION
+  definition {
+    bytesize: 48
+    member_id: 0x96a863d7
+    member_id: 0x8a67a76f
+  }
+}
+struct_union {
+  id: 0x737b0daa
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x96950623
+    member_id: 0x92478c56
+  }
+}
+struct_union {
+  id: 0x73b9d605
+  kind: UNION
+  definition {
+    bytesize: 48
+    member_id: 0x95dac977
+    member_id: 0xd6e667b7
+  }
+}
+struct_union {
+  id: 0x73f2da81
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x94144342
+    member_id: 0x34c1d855
+    member_id: 0x9f99ffb4
+  }
+}
+struct_union {
+  id: 0x7409a812
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x8b38ca63
+    member_id: 0xf53a09be
+    member_id: 0x27240f80
+  }
+}
+struct_union {
+  id: 0x742a145b
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0x8bb53f6f
+    member_id: 0xf6190409
+  }
+}
+struct_union {
+  id: 0x743f3706
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x8b80626d
+    member_id: 0x97b314d8
+    member_id: 0x7a534c1e
+    member_id: 0x35229d2e
+  }
+}
+struct_union {
+  id: 0x748621ee
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x89140987
+    member_id: 0xe7f93ad5
+  }
+}
+struct_union {
+  id: 0x74c3ae4c
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x8896db41
+    member_id: 0x731577d7
+  }
+}
+struct_union {
+  id: 0x74cc5f1e
+  kind: UNION
+  definition {
+    bytesize: 24
+    member_id: 0x88cc63e3
+    member_id: 0x16689e87
+  }
+}
+struct_union {
+  id: 0x750a938f
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x8f050e0e
+    member_id: 0xc43734c7
+  }
+}
+struct_union {
+  id: 0x755ff98b
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x8e4ea0f1
+    member_id: 0xda31db2e
+  }
+}
+struct_union {
+  id: 0x758936c4
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0x8dcfac17
+  }
+}
+struct_union {
+  id: 0x75b57623
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0x8d3eaf88
+  }
+}
+struct_union {
+  id: 0x75d88f20
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x8c0e1a50
+    member_id: 0x8751d772
+  }
+}
+struct_union {
+  id: 0x75e896c0
+  kind: UNION
+  definition {
+    bytesize: 24
+    member_id: 0x8c9f2a57
+    member_id: 0xd60652a5
+  }
+}
+struct_union {
+  id: 0x75f86d28
+  kind: UNION
+  definition {
+    bytesize: 24
+    member_id: 0x8cdc3d65
+    member_id: 0xd6fec09e
+  }
+}
+struct_union {
+  id: 0x7613f9a7
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x8388dd1d
+    member_id: 0x2c4c86e7
+  }
+}
+struct_union {
+  id: 0x76230193
+  kind: UNION
+  definition {
+    bytesize: 512
+    member_id: 0x83c07c3a
+    member_id: 0xa70d7362
+  }
+}
+struct_union {
+  id: 0x765a5eef
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x828c89b5
+    member_id: 0x0e850e04
+  }
+}
+struct_union {
+  id: 0x7689fdd5
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x81751da9
+    member_id: 0xb99df953
+  }
+}
+struct_union {
+  id: 0x768d035b
+  kind: UNION
+  definition {
+    bytesize: 1024
+    member_id: 0x81bba91c
+    member_id: 0x64705dc7
+    member_id: 0xa3747034
+    member_id: 0x5c47fd29
+    member_id: 0x28087a0b
+  }
+}
+struct_union {
+  id: 0x769b2271
+  kind: UNION
+  definition {
+    bytesize: 128
+    member_id: 0x81e3759b
+    member_id: 0x6428bb2a
+    member_id: 0xa337ec8c
+    member_id: 0xd45a2291
+  }
+}
+struct_union {
+  id: 0x76aedb9e
+  kind: UNION
+  definition {
+    bytesize: 200
+    member_id: 0x818f60b8
+    member_id: 0xdfc2f312
+    member_id: 0xbb375ab7
+  }
+}
+struct_union {
+  id: 0x76b2536c
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0x81b98a1e
+    member_id: 0x9bb0a88c
+  }
+}
+struct_union {
+  id: 0x76d7220a
+  kind: UNION
+  definition {
+    bytesize: 24
+    member_id: 0x80814781
+    member_id: 0x36e2594d
+    member_id: 0x5a01ffcb
+    member_id: 0xf6e79dd5
+    member_id: 0xbed29020
+  }
+}
+struct_union {
+  id: 0x76df8305
+  kind: UNION
+  definition {
+    bytesize: 2048
+    member_id: 0x80f111bb
+    member_id: 0x646aaa85
+  }
+}
+struct_union {
+  id: 0x7745c8ef
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x86b2ecd0
+    member_id: 0x4eb868f1
+  }
+}
+struct_union {
+  id: 0x7790432b
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0x85c53864
+    member_id: 0x6f43cf14
+  }
+}
+struct_union {
+  id: 0x77af3121
+  kind: UNION
+  definition {
+    bytesize: 32
+    member_id: 0x8590ce73
+    member_id: 0xc787ee0c
+    member_id: 0xfa1fb6ba
+  }
+}
+struct_union {
+  id: 0x77bbd63d
+  kind: UNION
+  definition {
+    bytesize: 112
+    member_id: 0x8536119d
+    member_id: 0x32eac2fd
+    member_id: 0xd4387acc
+    member_id: 0x94e48f9e
+    member_id: 0x005423ae
+  }
+}
+struct_union {
+  id: 0x781d56f3
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0xbbaaccdc
+    member_id: 0x34e01459
+  }
+}
+struct_union {
+  id: 0x785d3fc1
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xba390095
+    member_id: 0xa620dbc0
+    member_id: 0xa8dd3aca
+    member_id: 0x904c6fcf
+    member_id: 0x5f6b4acf
+    member_id: 0x0e957cc9
+    member_id: 0x9c5b814d
+    member_id: 0x2a426327
+    member_id: 0x2a124246
+  }
+}
+struct_union {
+  id: 0x78cbc02a
+  kind: UNION
+  definition {
+    bytesize: 1
+    member_id: 0xb8b632ec
+    member_id: 0x72454096
+  }
+}
+struct_union {
+  id: 0x78ea2ea9
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xb805bbb2
+    member_id: 0x46761387
+  }
+}
+struct_union {
+  id: 0x791ba47c
+  kind: UNION
+  definition {
+    bytesize: 64
+    member_id: 0xbf9f3e0b
+    member_id: 0x1ad8fcad
+  }
+}
+struct_union {
+  id: 0x79227c12
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xbf1a473f
+    member_id: 0x78c07266
+  }
+}
+struct_union {
+  id: 0x797868f8
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0xbe288597
+    member_id: 0x22e8e4fb
+    member_id: 0xb953a4fe
+    member_id: 0xc641f774
+    member_id: 0x3b895e50
+    member_id: 0x96d0f9f7
+    member_id: 0xa7e1214e
+  }
+}
+struct_union {
+  id: 0x7991300b
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0xbd94296e
+    member_id: 0x3b9e4463
+  }
+}
+struct_union {
+  id: 0x79abe95d
+  kind: UNION
+  definition {
+    bytesize: 32
+    member_id: 0xbd7f2844
+    member_id: 0x3bfa35f3
+  }
+}
+struct_union {
+  id: 0x79d85976
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xbc74dc2d
+    member_id: 0xfecef22b
+  }
+}
+struct_union {
+  id: 0x7a05328e
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xb3ddbbf0
+    member_id: 0x2206cd80
+  }
+}
+struct_union {
+  id: 0x7a92abe9
+  kind: UNION
+  definition {
+    bytesize: 32
+    member_id: 0xb1bf6eb0
+    member_id: 0x1edbbb84
+    member_id: 0x6d8093e0
+    member_id: 0x2b68f74f
+    member_id: 0x2722e901
+    member_id: 0xeba62591
+  }
+}
+struct_union {
+  id: 0x7b23ef96
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xb755e42c
+    member_id: 0x312d72de
+  }
+}
+struct_union {
+  id: 0x7b4751fa
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0xb6f630ef
+  }
+}
+struct_union {
+  id: 0x7b73e7a1
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xb610f850
+    member_id: 0x340d3afb
+    member_id: 0x1cc42dba
+    member_id: 0x2de7b522
+    member_id: 0x3a8b8086
+  }
+}
+struct_union {
+  id: 0x7ba2ddfd
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xb54f06ad
+    member_id: 0x2f065dcc
+  }
+}
+struct_union {
+  id: 0x7bb7591e
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xb58ce2f1
+    member_id: 0xbaf18e35
+  }
+}
+struct_union {
+  id: 0x7bc75513
+  kind: UNION
+  definition {
+    bytesize: 12
+    member_id: 0xb4365bb4
+    member_id: 0xc078fdfa
+  }
+}
+struct_union {
+  id: 0x7c998251
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xa9b46c97
+    member_id: 0x3901786a
+    member_id: 0x1353709d
+    member_id: 0xfdbf569e
+  }
+}
+struct_union {
+  id: 0x7cb21c2a
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xa91977ab
+    member_id: 0x3a09fbd2
+    member_id: 0x79fe8097
+  }
+}
+struct_union {
+  id: 0x7cdf9376
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xa875c468
+    member_id: 0xe0feb68b
+  }
+}
+struct_union {
+  id: 0x7d93a8c7
+  kind: UNION
+  definition {
+    bytesize: 48
+    member_id: 0xad898302
+    member_id: 0x2c7b0ccb
+    member_id: 0x2c14bb60
+  }
+}
+struct_union {
+  id: 0x7d9f9ba1
+  kind: UNION
+  definition {
+    bytesize: 1
+    member_id: 0xad517abc
+    member_id: 0xc4633eb3
+  }
+}
+struct_union {
+  id: 0x7df31ddc
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0xac637117
+    member_id: 0x4438dbf9
+    member_id: 0x49b83077
+  }
+}
+struct_union {
+  id: 0x7e04d0cb
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xa3a813ae
+    member_id: 0x502784b0
+  }
+}
+struct_union {
+  id: 0x7e22739a
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0xa3c1e262
+    member_id: 0xa35b0e7b
+  }
+}
+struct_union {
+  id: 0x7e47737d
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0xa2e31b8a
+    member_id: 0x150f1b6e
+    member_id: 0xae60756a
+  }
+}
+struct_union {
+  id: 0x7e52fca0
+  kind: UNION
+  definition {
+    bytesize: 4
+    member_id: 0xa2ec9b89
+    member_id: 0x4c1e0f53
+  }
+}
+struct_union {
+  id: 0x7e55c032
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xa215b591
+    member_id: 0xa9c25c8c
+  }
+}
+struct_union {
+  id: 0x7eb5f266
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xa1a1c7dd
+    member_id: 0x9d7943a7
+  }
+}
+struct_union {
+  id: 0x7ec5312c
+  kind: UNION
+  definition {
+    bytesize: 512
+    member_id: 0xa035a600
+    member_id: 0xca15b5cd
+  }
+}
+struct_union {
+  id: 0x7ece3887
+  kind: UNION
+  definition {
+    bytesize: 1024
+    member_id: 0xa019b1fd
+    member_id: 0xca24e789
+  }
+}
+struct_union {
+  id: 0x7edb420c
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xa007f621
+    member_id: 0x81891576
+  }
+}
+struct_union {
+  id: 0x7edb75e7
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xa007f621
+    member_id: 0x81891576
+    member_id: 0xdff6a1f5
+    member_id: 0x5a986ab3
+    member_id: 0x5fd0587d
+    member_id: 0xb38d30fc
+    member_id: 0xb065acb9
+    member_id: 0x3ed9d615
+    member_id: 0xaab84514
+    member_id: 0x724954ba
+    member_id: 0x8dc726e7
+    member_id: 0xec2ca7d7
+    member_id: 0x13aaf227
+    member_id: 0x1a3fe3b0
+    member_id: 0x9a0156fb
+    member_id: 0xcf05862d
+    member_id: 0xff3673ae
+    member_id: 0xfba5793f
+    member_id: 0x0749911a
+    member_id: 0x45c645a7
+    member_id: 0x247b0c0b
+    member_id: 0xd1f48706
+    member_id: 0x4de323c8
+    member_id: 0xe859bc57
+    member_id: 0x757cd420
+    member_id: 0x46e877b0
+  }
+}
+struct_union {
+  id: 0x7ee2c77e
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0xa036e912
+    member_id: 0x56a7265c
+    member_id: 0x24ca61cb
+  }
+}
+struct_union {
+  id: 0x7ef7bf9e
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0xa06fe9a8
+    member_id: 0x5af50ecd
+    member_id: 0x95dac977
+  }
+}
+struct_union {
+  id: 0x7eff4537
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xa0e5aeb3
+    member_id: 0xf3cd6a9d
+  }
+}
+struct_union {
+  id: 0x7f05fffa
+  kind: UNION
+  definition {
+    bytesize: 32
+    member_id: 0xa7d781ed
+    member_id: 0x2b0900e1
+  }
+}
+struct_union {
+  id: 0x7f1262ac
+  kind: UNION
+  definition {
+    bytesize: 28
+    member_id: 0xa70430a8
+    member_id: 0xa6cd1e95
+  }
+}
+struct_union {
+  id: 0x7f2fc026
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xa775f4bf
+    member_id: 0x21832044
+  }
+}
+struct_union {
+  id: 0x7f397688
+  kind: UNION
+  definition {
+    bytesize: 16
+    member_id: 0xa72a8895
+    member_id: 0x2425b2ac
+  }
+}
+struct_union {
+  id: 0x7f6642e9
+  kind: UNION
+  definition {
+    bytesize: 24
+    member_id: 0xa69b3828
+    member_id: 0xe94489a9
+  }
+}
+struct_union {
+  id: 0x7fc392d6
+  kind: UNION
+  definition {
+    bytesize: 8
+    member_id: 0xa4154a3d
+    member_id: 0xf076633c
+  }
+}
+struct_union {
+  id: 0x90759a8b
+  kind: STRUCT
+  name: "Qdisc"
+  definition {
+    bytesize: 384
+    member_id: 0xb71382f4
+    member_id: 0x31f939d7
+    member_id: 0x2d2d08fa
+    member_id: 0xa9c3b7df
+    member_id: 0xafbbc28b
+    member_id: 0xd7462bfd
+    member_id: 0x63772379
+    member_id: 0xb82a9a51
+    member_id: 0x72f87b61
+    member_id: 0x5202498e
+    member_id: 0xf764b189
+    member_id: 0x247795d1
+    member_id: 0x0d67ad2b
+    member_id: 0x6bb3a9c1
+    member_id: 0xb7dcf7cb
+    member_id: 0xcf0db7be
+    member_id: 0xe97e3b30
+    member_id: 0x3e288396
+    member_id: 0xf6bf5535
+    member_id: 0x72c08e40
+    member_id: 0x46e09321
+    member_id: 0xb8af602d
+    member_id: 0x88fb7ad4
+    member_id: 0x2365e313
+    member_id: 0x88ceebc8
+    member_id: 0x95dac02d
+    member_id: 0x94d42cc7
+    member_id: 0x2d08160f
+    member_id: 0x05eea50a
+  }
+}
+struct_union {
+  id: 0x51ea8158
+  kind: STRUCT
+  name: "Qdisc_class_ops"
+  definition {
+    bytesize: 120
+    member_id: 0x2d2d0138
+    member_id: 0x97128e2b
+    member_id: 0x0277381e
+    member_id: 0x2e4133fd
+    member_id: 0xba491c1c
+    member_id: 0x2acb20e0
+    member_id: 0x9499cbd6
+    member_id: 0xd3162ccf
+    member_id: 0x5e29a5ee
+    member_id: 0x2fbd180e
+    member_id: 0x270c9a45
+    member_id: 0x7eac2f58
+    member_id: 0x0a7c4d32
+    member_id: 0x031e17b9
+    member_id: 0x2d081f94
+  }
+}
+struct_union {
+  id: 0xd5ea309d
+  kind: STRUCT
+  name: "Qdisc_ops"
+  definition {
+    bytesize: 184
+    member_id: 0x11ccea6a
+    member_id: 0x62437f46
+    member_id: 0xcc6d054e
+    member_id: 0x98b9d6f1
+    member_id: 0xe9f3025f
+    member_id: 0xb7138533
+    member_id: 0x31f93ca4
+    member_id: 0x7f573596
+    member_id: 0x1ac5f50a
+    member_id: 0x62b1f9c3
+    member_id: 0xa4fa7365
+    member_id: 0x94992e00
+    member_id: 0x9639fdb6
+    member_id: 0xfdaa824b
+    member_id: 0x0c1f2020
+    member_id: 0x0a7c7b3e
+    member_id: 0x031e119e
+    member_id: 0x146d0ed4
+    member_id: 0x2089f17c
+    member_id: 0x11e44cd5
+    member_id: 0x16b864ec
+    member_id: 0x4a9658d3
+    member_id: 0x2d0817c1
+  }
+}
+struct_union {
+  id: 0x752a11a9
+  kind: STRUCT
+  name: "Scsi_Host"
+  definition {
+    bytesize: 2480
+    member_id: 0xf4d5cba6
+    member_id: 0x5c60dedf
+    member_id: 0x1b00fb8a
+    member_id: 0x3f547f97
+    member_id: 0xfb8e63cd
+    member_id: 0x0ceae476
+    member_id: 0x61592628
+    member_id: 0x2f532354
+    member_id: 0xd974306f
+    member_id: 0xb5d7e379
+    member_id: 0x53ed0261
+    member_id: 0x9d9fc7a8
+    member_id: 0x3b3fb057
+    member_id: 0x78d7a51f
+    member_id: 0x109a31d9
+    member_id: 0x0d5585db
+    member_id: 0xa5bf2655
+    member_id: 0x59658d70
+    member_id: 0x978fead8
+    member_id: 0x0b5b9055
+    member_id: 0x13687aca
+    member_id: 0xc6b95840
+    member_id: 0x98db7a32
+    member_id: 0x576b9741
+    member_id: 0xb4fac537
+    member_id: 0xc8b69710
+    member_id: 0x131f15d8
+    member_id: 0xc33add81
+    member_id: 0x41e3cb13
+    member_id: 0x222306ae
+    member_id: 0xd8f9f078
+    member_id: 0xe5db5152
+    member_id: 0x51f347bc
+    member_id: 0xb435ce80
+    member_id: 0x60f39b13
+    member_id: 0x656a29d1
+    member_id: 0xd60fe046
+    member_id: 0x2980a8c5
+    member_id: 0x183ebad7
+    member_id: 0x680cbe82
+    member_id: 0x84380b69
+    member_id: 0xc958f9f6
+    member_id: 0xda1feaf2
+    member_id: 0x950f4912
+    member_id: 0x51bad129
+    member_id: 0x806a257b
+    member_id: 0xfa2a8620
+    member_id: 0x8b337420
+    member_id: 0xc0ea737e
+    member_id: 0x990fb7aa
+    member_id: 0x7d6957e5
+    member_id: 0xaea56739
+    member_id: 0x51e36085
+    member_id: 0x5bdf8c18
+    member_id: 0x90fb6d43
+    member_id: 0x85e99dbc
+    member_id: 0x8eb2555a
+    member_id: 0xa1ab9c64
+    member_id: 0x0fe3384c
+    member_id: 0x993735f0
+    member_id: 0xc89be432
+    member_id: 0x2955b972
+    member_id: 0x02aa12be
+    member_id: 0xa7bc78ff
+    member_id: 0x810a01b7
+    member_id: 0x2d081673
+    member_id: 0x337e0faa
+  }
+}
+struct_union {
+  id: 0xac1494ba
+  kind: STRUCT
+  name: "__call_single_data"
+  definition {
+    bytesize: 32
+    member_id: 0x0f43c472
+    member_id: 0x2146561f
+    member_id: 0xcd44b6d8
+  }
+}
+struct_union {
+  id: 0x36cadc18
+  kind: STRUCT
+  name: "__call_single_node"
+  definition {
+    bytesize: 16
+    member_id: 0x46cb6d26
+    member_id: 0x304242fd
+    member_id: 0x44a72e39
+    member_id: 0xbb60e850
+  }
+}
+struct_union {
+  id: 0x2ddd96bf
+  kind: STRUCT
+  name: "__drm_connnectors_state"
+  definition {
+    bytesize: 40
+    member_id: 0x46c17f73
+    member_id: 0x72df76fa
+    member_id: 0x72e63dbe
+    member_id: 0xef67c16b
+    member_id: 0x87de6f16
+  }
+}
+struct_union {
+  id: 0x73c30e7c
+  kind: STRUCT
+  name: "__drm_crtcs_state"
+  definition {
+    bytesize: 56
+    member_id: 0x46c191ab
+    member_id: 0x72c92280
+    member_id: 0x72f069c4
+    member_id: 0xef719511
+    member_id: 0xcdcf1043
+    member_id: 0x87de687a
+    member_id: 0x583801a8
+  }
+}
+struct_union {
+  id: 0x5a34ecf3
+  kind: STRUCT
+  name: "__drm_planes_state"
+  definition {
+    bytesize: 32
+    member_id: 0x46ebe675
+    member_id: 0x72ddd478
+    member_id: 0x72e49f3c
+    member_id: 0xef6563e9
+  }
+}
+struct_union {
+  id: 0x043a5ebb
+  kind: STRUCT
+  name: "__drm_private_objs_state"
+  definition {
+    bytesize: 32
+    member_id: 0x46d199d9
+    member_id: 0x72fa5559
+    member_id: 0x72c31e1d
+    member_id: 0xef42e2c8
+  }
+}
+struct_union {
+  id: 0xbb629d13
+  kind: STRUCT
+  name: "__kernel_old_timeval"
+  definition {
+    bytesize: 16
+    member_id: 0x590f2a38
+    member_id: 0x5f6ca574
+  }
+}
+struct_union {
+  id: 0xed09a540
+  kind: STRUCT
+  name: "__kernel_sockaddr_storage"
+  definition {
+    bytesize: 128
+    member_id: 0x34074a76
+  }
+}
+struct_union {
+  id: 0x9998edbb
+  kind: STRUCT
+  name: "__kernel_timespec"
+  definition {
+    bytesize: 16
+    member_id: 0x592a95e5
+    member_id: 0x388121d8
+  }
+}
+struct_union {
+  id: 0x043f79eb
+  kind: STRUCT
+  name: "__kernel_timex"
+  definition {
+    bytesize: 208
+    member_id: 0x84036c13
+    member_id: 0x9b259f2b
+    member_id: 0xef9f104e
+    member_id: 0x93f4efa5
+    member_id: 0x285d0427
+    member_id: 0x20000090
+    member_id: 0x0e51dd10
+    member_id: 0x5f1f9d63
+    member_id: 0xb1f0de19
+    member_id: 0x74f339f2
+    member_id: 0xe879699b
+    member_id: 0x278d1f86
+    member_id: 0x78ce8c19
+    member_id: 0x3256ea13
+    member_id: 0x7011a58f
+    member_id: 0x18c09ee6
+    member_id: 0x0dd5bde7
+    member_id: 0xb01592a4
+    member_id: 0xa0f96cf7
+    member_id: 0x77893a0c
+  }
+}
+struct_union {
+  id: 0x103dd8df
+  kind: STRUCT
+  name: "__kernel_timex_timeval"
+  definition {
+    bytesize: 16
+    member_id: 0x592a95e5
+    member_id: 0x5f3de12a
+  }
+}
+struct_union {
+  id: 0x112d9b99
+  kind: STRUCT
+  name: "__kernel_v4l2_timeval"
+  definition {
+    bytesize: 16
+    member_id: 0x595e6e66
+    member_id: 0x5f3de12a
+  }
+}
+struct_union {
+  id: 0x15bc6783
+  kind: STRUCT
+  name: "__key_reference_with_attributes"
+}
+struct_union {
+  id: 0xf742a5e3
+  kind: STRUCT
+  name: "__kfifo"
+  definition {
+    bytesize: 24
+    member_id: 0x5ceeecc5
+    member_id: 0xb3b4582d
+    member_id: 0xa876e8aa
+    member_id: 0x3cd9cc42
+    member_id: 0xff8a90cb
+  }
+}
+struct_union {
+  id: 0xa4c2ec96
+  kind: UNION
+  name: "__sifields"
+  definition {
+    bytesize: 32
+    member_id: 0x382a0c12
+    member_id: 0xde4c0a2f
+    member_id: 0x37e5cb8e
+    member_id: 0xaf421d98
+    member_id: 0x85b2141a
+    member_id: 0xfce8408c
+    member_id: 0x72a93276
+  }
+}
+struct_union {
+  id: 0xb51bbadb
+  kind: STRUCT
+  name: "__va_list"
+  definition {
+    bytesize: 32
+    member_id: 0x11319dfd
+    member_id: 0xb4bbd2af
+    member_id: 0x8e6c4f6e
+    member_id: 0x87c6ed94
+    member_id: 0x9aaa3037
+  }
+}
+struct_union {
+  id: 0x503c2166
+  kind: STRUCT
+  name: "_ddebug"
+  definition {
+    bytesize: 56
+    member_id: 0xe6739132
+    member_id: 0xab5596f1
+    member_id: 0xb0787820
+    member_id: 0x08694bd2
+    member_id: 0xadc4bc6c
+    member_id: 0x1938b35e
+    member_id: 0x4db09eea
+    member_id: 0x2011e070
+  }
+}
+struct_union {
+  id: 0x656e53f1
+  kind: STRUCT
+  name: "_kvm_stats_desc"
+  definition {
+    bytesize: 64
+    member_id: 0x87807fd8
+    member_id: 0x0dc6047f
+  }
+}
+struct_union {
+  id: 0x459e900e
+  kind: STRUCT
+  name: "ack_sample"
+  definition {
+    bytesize: 12
+    member_id: 0x0a3be422
+    member_id: 0x2e4fe3d2
+    member_id: 0x19746b67
+  }
+}
+struct_union {
+  id: 0xf6499b27
+  kind: STRUCT
+  name: "acpi_device_id"
+  definition {
+    bytesize: 32
+    member_id: 0xcc4fe6bd
+    member_id: 0x6d08a35a
+    member_id: 0xc5f943f1
+    member_id: 0xc3eed6d0
+  }
+}
+struct_union {
+  id: 0xd84d43be
+  kind: STRUCT
+  name: "action_cache"
+  definition {
+    bytesize: 128
+    member_id: 0xfe9aa001
+    member_id: 0x595cd86a
+  }
+}
+struct_union {
+  id: 0xddef3f0e
+  kind: STRUCT
+  name: "action_gate_entry"
+  definition {
+    bytesize: 16
+    member_id: 0x611120c1
+    member_id: 0x490ebf73
+    member_id: 0x62ed962a
+    member_id: 0x05c575b9
+  }
+}
+struct_union {
+  id: 0x7c4a4a84
+  kind: STRUCT
+  name: "address_space"
+  definition {
+    bytesize: 240
+    member_id: 0xb8efa234
+    member_id: 0xce6bac98
+    member_id: 0x17dabd89
+    member_id: 0xa4a18519
+    member_id: 0xf4349e73
+    member_id: 0xe1738187
+    member_id: 0x2f24f0d1
+    member_id: 0x93466310
+    member_id: 0xdaef1310
+    member_id: 0x86b09ac5
+    member_id: 0x2d5bf882
+    member_id: 0x2e80b714
+    member_id: 0x11ab2f73
+    member_id: 0x78439144
+    member_id: 0xf21adc21
+  }
+}
+struct_union {
+  id: 0x799649f7
+  kind: STRUCT
+  name: "address_space_operations"
+  definition {
+    bytesize: 160
+    member_id: 0x2ef068ae
+    member_id: 0xf788dfad
+    member_id: 0x043a32c7
+    member_id: 0x1246feb9
+    member_id: 0x7b1ece02
+    member_id: 0x7689259b
+    member_id: 0xdc1aa6cf
+    member_id: 0xdb5a4836
+    member_id: 0xfe5a1eea
+    member_id: 0xf40b5721
+    member_id: 0xb7ed584c
+    member_id: 0xc988e516
+    member_id: 0x4bad46f3
+    member_id: 0x8747c030
+    member_id: 0x6fab5f12
+    member_id: 0xfe00b820
+    member_id: 0x32b203dc
+    member_id: 0xeb895922
+    member_id: 0x668c7f24
+    member_id: 0x8707ac6b
+  }
+}
+struct_union {
+  id: 0xa2be2e87
+  kind: STRUCT
+  name: "aead_alg"
+  definition {
+    bytesize: 448
+    member_id: 0x177a316a
+    member_id: 0xeab6099b
+    member_id: 0x893c9169
+    member_id: 0x70f86078
+    member_id: 0x1ac6b1f5
+    member_id: 0x0d2f3244
+    member_id: 0x832017a6
+    member_id: 0x818d38b8
+    member_id: 0x8c9ba386
+    member_id: 0x85f3de85
+  }
+}
+struct_union {
+  id: 0xe2a4c51e
+  kind: STRUCT
+  name: "aead_request"
+  definition {
+    bytesize: 128
+    member_id: 0x85e1e383
+    member_id: 0x4c81bbc3
+    member_id: 0xc7060855
+    member_id: 0x56d4cc43
+    member_id: 0x4427aee7
+    member_id: 0xbbe06faa
+    member_id: 0x75906a36
+  }
+}
+struct_union {
+  id: 0xa7100932
+  kind: STRUCT
+  name: "aer_stats"
+  definition {
+    bytesize: 608
+    member_id: 0x9b82dd6f
+    member_id: 0xfa6aabea
+    member_id: 0xd52260b6
+    member_id: 0xa6f7aa36
+    member_id: 0xf6dbf9c8
+    member_id: 0xcdeb1e6a
+    member_id: 0xb6691b39
+    member_id: 0xde16cb2d
+    member_id: 0x6479c071
+  }
+}
+struct_union {
+  id: 0xc905d903
+  kind: STRUCT
+  name: "aggregate_device"
+  definition {
+    bytesize: 48
+    member_id: 0x0fa6c6af
+    member_id: 0x2b9f3162
+    member_id: 0xafb9c70a
+    member_id: 0x72332aa8
+    member_id: 0xe62639eb
+  }
+}
+struct_union {
+  id: 0x1c6e5215
+  kind: STRUCT
+  name: "ahash_alg"
+  definition {
+    bytesize: 576
+    member_id: 0x1ac4107c
+    member_id: 0xd68bc61c
+    member_id: 0x6fd12469
+    member_id: 0x7e4ab622
+    member_id: 0x5f810d60
+    member_id: 0x24bb4656
+    member_id: 0x6f168d58
+    member_id: 0x177a5b17
+    member_id: 0x4a52c753
+    member_id: 0x7c8633eb
+    member_id: 0xae60b70a
+  }
+}
+struct_union {
+  id: 0xe316ef9b
+  kind: STRUCT
+  name: "ahash_request"
+  definition {
+    bytesize: 128
+    member_id: 0x85e1e383
+    member_id: 0x9a42cf0b
+    member_id: 0x4427a288
+    member_id: 0x072f3975
+    member_id: 0x591191d3
+    member_id: 0x75906a36
+  }
+}
+struct_union {
+  id: 0x91212402
+  kind: STRUCT
+  name: "alarm"
+  definition {
+    bytesize: 128
+    member_id: 0x0f4eedc8
+    member_id: 0x1dce6e25
+    member_id: 0xab6ba475
+    member_id: 0x5c20d152
+    member_id: 0x7294db40
+    member_id: 0xff8a91fa
+  }
+}
+struct_union {
+  id: 0x09a203e8
+  kind: STRUCT
+  name: "alt_instr"
+  definition {
+    bytesize: 12
+    member_id: 0x0cfdd1a6
+    member_id: 0x0d03df3e
+    member_id: 0xba9bf5f9
+    member_id: 0xa1f9b8b2
+    member_id: 0x8b1beac9
+  }
+}
+struct_union {
+  id: 0xd6ca4b38
+  kind: STRUCT
+  name: "amba_cs_uci_id"
+  definition {
+    bytesize: 24
+    member_id: 0xfb4ccc76
+    member_id: 0x7889e2af
+    member_id: 0xa1ebf76b
+    member_id: 0xff8a90cb
+  }
+}
+struct_union {
+  id: 0xce3949c4
+  kind: STRUCT
+  name: "amba_device"
+  definition {
+    bytesize: 1176
+    member_id: 0xce1ac149
+    member_id: 0x16905a64
+    member_id: 0x68603132
+    member_id: 0xebac1d09
+    member_id: 0x8f96e500
+    member_id: 0x041acfb1
+    member_id: 0x6c987304
+    member_id: 0xca0a1149
+    member_id: 0x99c8e1eb
+    member_id: 0x09f1f94d
+    member_id: 0x2d08184a
+  }
+}
+struct_union {
+  id: 0xd8c9aa6d
+  kind: STRUCT
+  name: "amba_driver"
+  definition {
+    bytesize: 224
+    member_id: 0xb1ab1960
+    member_id: 0xd7785c07
+    member_id: 0xb4aef021
+    member_id: 0x9ef81d0b
+    member_id: 0xc4ffea9e
+    member_id: 0xdbbc13d3
+    member_id: 0x2d081217
+  }
+}
+struct_union {
+  id: 0x1b01a92d
+  kind: STRUCT
+  name: "amba_id"
+  definition {
+    bytesize: 16
+    member_id: 0xcc6aa9f7
+    member_id: 0xa876e170
+    member_id: 0xff8a9de8
+  }
+}
+struct_union {
+  id: 0x7264849d
+  kind: STRUCT
+  name: "amp_assoc"
+  definition {
+    bytesize: 680
+    member_id: 0xb8edd616
+    member_id: 0x9bf4d13a
+    member_id: 0x5069f47b
+    member_id: 0xf7528eb9
+    member_id: 0xff33ae25
+  }
+}
+struct_union {
+  id: 0xcf1f7a70
+  kind: STRUCT
+  name: "amp_mgr"
+  definition {
+    bytesize: 128
+    member_id: 0x7c00ef52
+    member_id: 0x602ef273
+    member_id: 0xb4d7eeee
+    member_id: 0x02c73806
+    member_id: 0x02ce5e41
+    member_id: 0xc0933ca3
+    member_id: 0xb8507a77
+    member_id: 0x72c088f7
+    member_id: 0x2d5bf64d
+    member_id: 0x78b943ee
+    member_id: 0xa4e8e54d
+  }
+}
+struct_union {
+  id: 0x3f3d7e85
+  kind: STRUCT
+  name: "anon_vma"
+  definition {
+    bytesize: 120
+    member_id: 0x93da77c2
+    member_id: 0xd610e150
+    member_id: 0x05f7c213
+    member_id: 0xe42bc64c
+    member_id: 0xf6ea3955
+    member_id: 0x72342532
+    member_id: 0x82de98a3
+  }
+}
+struct_union {
+  id: 0x1c15496d
+  kind: STRUCT
+  name: "anon_vma_name"
+  definition {
+    bytesize: 4
+    member_id: 0x02ce5986
+    member_id: 0x0d114b37
+  }
+}
+struct_union {
+  id: 0x1c078010
+  kind: STRUCT
+  name: "aperture"
+  definition {
+    bytesize: 16
+    member_id: 0x854f8bfe
+    member_id: 0xd9eb7de6
+  }
+}
+struct_union {
+  id: 0xf7157787
+  kind: STRUCT
+  name: "apertures_struct"
+  definition {
+    bytesize: 8
+    member_id: 0x6560daa2
+    member_id: 0x3b41c72a
+  }
+}
+struct_union {
+  id: 0xa2172324
+  kind: STRUCT
+  name: "arc4_ctx"
+  definition {
+    bytesize: 1032
+    member_id: 0x1b168134
+    member_id: 0xa07b64fc
+    member_id: 0xffba0fc7
+  }
+}
+struct_union {
+  id: 0x8c85ea67
+  kind: STRUCT
+  name: "arch_hw_breakpoint"
+  definition {
+    bytesize: 24
+    member_id: 0x30433ede
+    member_id: 0x350d1ee3
+    member_id: 0x691af1ca
+  }
+}
+struct_union {
+  id: 0x94f3b0d2
+  kind: STRUCT
+  name: "arch_hw_breakpoint_ctrl"
+  definition {
+    bytesize: 4
+    member_id: 0xa8994d6f
+    member_id: 0x1ac71a31
+    member_id: 0xfbb63ab7
+    member_id: 0x7f5ac8fb
+    member_id: 0x7a56a64a
+  }
+}
+struct_union {
+  id: 0x1f74cf52
+  kind: STRUCT
+  name: "arch_msi_msg_addr_hi"
+  definition {
+    bytesize: 4
+    member_id: 0xa2ec9b89
+  }
+}
+struct_union {
+  id: 0x446f0478
+  kind: STRUCT
+  name: "arch_msi_msg_addr_lo"
+  definition {
+    bytesize: 4
+    member_id: 0xda57f983
+  }
+}
+struct_union {
+  id: 0x5a700aa3
+  kind: STRUCT
+  name: "arch_msi_msg_data"
+  definition {
+    bytesize: 4
+    member_id: 0xff5b2c47
+  }
+}
+struct_union {
+  id: 0xd5b8fab8
+  kind: STRUCT
+  name: "arch_probe_insn"
+  definition {
+    bytesize: 32
+    member_id: 0x3bfbb8bb
+    member_id: 0x0b850ebb
+    member_id: 0xf978c225
+    member_id: 0xfa3e2222
+  }
+}
+struct_union {
+  id: 0x324af871
+  kind: STRUCT
+  name: "arch_specific_insn"
+  definition {
+    bytesize: 32
+    member_id: 0x396b4bac
+  }
+}
+struct_union {
+  id: 0x825d5993
+  kind: STRUCT
+  name: "arch_timer_context"
+  definition {
+    bytesize: 104
+    member_id: 0xa936a2d5
+    member_id: 0x99abc34e
+    member_id: 0x8a1ddc22
+    member_id: 0xbcb6da5b
+    member_id: 0xd7232081
+    member_id: 0x0b3a6d95
+  }
+}
+struct_union {
+  id: 0x2f1ca510
+  kind: STRUCT
+  name: "arch_timer_cpu"
+  definition {
+    bytesize: 288
+    member_id: 0x30902b47
+    member_id: 0xd0847011
+    member_id: 0x3a2d374f
+  }
+}
+struct_union {
+  id: 0x82e932a0
+  kind: STRUCT
+  name: "arch_timer_erratum_workaround"
+  definition {
+    bytesize: 64
+    member_id: 0xbaf9b8d3
+    member_id: 0xcc163765
+    member_id: 0x87e434b6
+    member_id: 0xe5f769ee
+    member_id: 0xf8c2fa8f
+    member_id: 0x36436c5c
+    member_id: 0x0a2170fb
+    member_id: 0x07003f53
+  }
+}
+struct_union {
+  id: 0xce25286b
+  kind: STRUCT
+  name: "arch_uprobe"
+  definition {
+    bytesize: 48
+    member_id: 0x35cd5ee6
+    member_id: 0x396b4f4d
+    member_id: 0xe399545c
+  }
+}
+struct_union {
+  id: 0x3aeecf43
+  kind: STRUCT
+  name: "arch_uprobe_task"
+  definition {
+  }
+}
+struct_union {
+  id: 0xe62c1341
+  kind: STRUCT
+  name: "arm_pmu"
+  definition {
+    bytesize: 560
+    member_id: 0x93ce5218
+    member_id: 0x86b24cf6
+    member_id: 0x0ddfea33
+    member_id: 0xd81b71f1
+    member_id: 0x72a25545
+    member_id: 0x98e86c88
+    member_id: 0x0d828e0a
+    member_id: 0x09fd4226
+    member_id: 0x2d61ef43
+    member_id: 0x3cc9ff38
+    member_id: 0x2635ef55
+    member_id: 0x5f710844
+    member_id: 0x4616bb5f
+    member_id: 0x6985f4f1
+    member_id: 0x62b29c82
+    member_id: 0x308dee6b
+    member_id: 0x033b7284
+    member_id: 0xaeede60f
+    member_id: 0xa39136f0
+    member_id: 0xca44b141
+    member_id: 0x28894114
+    member_id: 0x1a1fd0a0
+    member_id: 0x2d3aa998
+    member_id: 0x0f3ca933
+    member_id: 0x502de800
+    member_id: 0xf8037d37
+    member_id: 0xddab36b7
+    member_id: 0x1cafacfd
+  }
+}
+struct_union {
+  id: 0x48893aca
+  kind: STRUCT
+  name: "array_buffer"
+  definition {
+    bytesize: 40
+    member_id: 0xd553781e
+    member_id: 0x33f3f16c
+    member_id: 0xff91a19f
+    member_id: 0xd43e1787
+    member_id: 0x5161b04d
+  }
+}
+struct_union {
+  id: 0xaf70b18b
+  kind: STRUCT
+  name: "assoc_array"
+  definition {
+    bytesize: 16
+    member_id: 0x93ff4353
+    member_id: 0x8026b4a9
+  }
+}
+struct_union {
+  id: 0xabef3896
+  kind: STRUCT
+  name: "assoc_array_ptr"
+}
+struct_union {
+  id: 0x97dc32b4
+  kind: STRUCT
+  name: "asymmetric_key_id"
+  definition {
+    bytesize: 2
+    member_id: 0xb8cceb57
+    member_id: 0xff417309
+  }
+}
+struct_union {
+  id: 0xaa94b7f2
+  kind: STRUCT
+  name: "async_domain"
+  definition {
+    bytesize: 24
+    member_id: 0xf91c8cab
+    member_id: 0x9d3e49d9
+  }
+}
+struct_union {
+  id: 0x63b8b563
+  kind: STRUCT
+  name: "async_icount"
+  definition {
+    bytesize: 44
+    member_id: 0x273f08da
+    member_id: 0x3992ebe5
+    member_id: 0xdd584c28
+    member_id: 0x510e9896
+    member_id: 0x653ea6fe
+    member_id: 0x6c1664a5
+    member_id: 0x1691771b
+    member_id: 0xd6e7fef7
+    member_id: 0x455a2c83
+    member_id: 0x56c792be
+    member_id: 0x408101ca
+  }
+}
+struct_union {
+  id: 0x3cd7d077
+  kind: STRUCT
+  name: "async_poll"
+  definition {
+    bytesize: 72
+    member_id: 0x339f527f
+    member_id: 0x4fbdcb60
+  }
+}
+struct_union {
+  id: 0xf02f73da
+  kind: STRUCT
+  name: "atomic_notifier_head"
+  definition {
+    bytesize: 16
+    member_id: 0x2d1fec85
+    member_id: 0xb5410b44
+  }
+}
+struct_union {
+  id: 0x2d0fbb66
+  kind: STRUCT
+  name: "attribute"
+  definition {
+    bytesize: 16
+    member_id: 0x0de57ce8
+    member_id: 0x878f4209
+  }
+}
+struct_union {
+  id: 0x08e3980f
+  kind: STRUCT
+  name: "attribute_container"
+  definition {
+    bytesize: 96
+    member_id: 0x0fa6c6af
+    member_id: 0xf48c575c
+    member_id: 0x866b17a4
+    member_id: 0x96631ccf
+    member_id: 0x4d6a99b1
+    member_id: 0xe60e74d4
+    member_id: 0x2d5bf307
+  }
+}
+struct_union {
+  id: 0xed8451a2
+  kind: STRUCT
+  name: "attribute_group"
+  definition {
+    bytesize: 40
+    member_id: 0x0de57ce8
+    member_id: 0xc67eecc5
+    member_id: 0xf2f25eef
+    member_id: 0x4d695408
+    member_id: 0xcbdb2ff3
+  }
+}
+struct_union {
+  id: 0x15cdf971
+  kind: STRUCT
+  name: "audioformat"
+  definition {
+    bytesize: 112
+    member_id: 0x7c00ef52
+    member_id: 0x28d35f34
+    member_id: 0xea02d9cf
+    member_id: 0x2a040114
+    member_id: 0xeec1037c
+    member_id: 0xcdc3e2ff
+    member_id: 0x81413fd2
+    member_id: 0x92c6375b
+    member_id: 0xc7a83ff7
+    member_id: 0xaae12e05
+    member_id: 0x031bf6f0
+    member_id: 0xd2b7290f
+    member_id: 0xcd580f0d
+    member_id: 0xf089858f
+    member_id: 0x19c0d237
+    member_id: 0x96fae129
+    member_id: 0x052696c5
+    member_id: 0x2926683d
+    member_id: 0x3029aa1e
+    member_id: 0xdc82cf73
+    member_id: 0x4fcae9cb
+    member_id: 0x3f103f0c
+    member_id: 0x325fd91e
+    member_id: 0xe742b24c
+    member_id: 0x6cadac11
+    member_id: 0x284ec037
+    member_id: 0x459380da
+    member_id: 0x7ed53ea4
+    member_id: 0xc68d6012
+    member_id: 0xd39d535a
+    member_id: 0x05895873
+  }
+}
+struct_union {
+  id: 0x30293561
+  kind: STRUCT
+  name: "audit_aux_data"
+  definition {
+    bytesize: 16
+    member_id: 0x11f59aab
+    member_id: 0x5c31f14c
+  }
+}
+struct_union {
+  id: 0xd023fa96
+  kind: STRUCT
+  name: "audit_cap_data"
+  definition {
+    bytesize: 36
+    member_id: 0xd079425e
+    member_id: 0x3d360666
+    member_id: 0x37465748
+    member_id: 0xb94e4d1e
+    member_id: 0x3537a868
+  }
+}
+struct_union {
+  id: 0x97346037
+  kind: STRUCT
+  name: "audit_chunk"
+  definition {
+    bytesize: 80
+    member_id: 0x63ed4b8e
+    member_id: 0x20657608
+    member_id: 0x8173836f
+    member_id: 0xa7480c04
+    member_id: 0x65427e85
+    member_id: 0x9ae7b05b
+    member_id: 0xb5b99036
+    member_id: 0xb867d798
+  }
+}
+struct_union {
+  id: 0x3b468079
+  kind: STRUCT
+  name: "audit_context"
+  definition {
+    bytesize: 1008
+    member_id: 0x1a8b8780
+    member_id: 0x41c20ad3
+    member_id: 0x729846ff
+    member_id: 0xcf8ff799
+    member_id: 0xa7c0c3bd
+    member_id: 0xcbd8c529
+    member_id: 0x1184ce2f
+    member_id: 0xcfcde1b3
+    member_id: 0xe8f87d89
+    member_id: 0xd7936fe4
+    member_id: 0xa9403686
+    member_id: 0xe9fe320f
+    member_id: 0xf54c4721
+    member_id: 0xe827458d
+    member_id: 0x4d29abf9
+    member_id: 0x73b846be
+    member_id: 0x4778934e
+    member_id: 0x79892c1b
+    member_id: 0x3274e485
+    member_id: 0xc3b90142
+    member_id: 0x092ae301
+    member_id: 0xc1f015d6
+    member_id: 0x15366406
+    member_id: 0xcac5b9cf
+    member_id: 0x9ab99a27
+    member_id: 0xae1bb7ee
+    member_id: 0x08e67dab
+    member_id: 0xdd519931
+    member_id: 0x37a44b88
+    member_id: 0xd81f0ab1
+    member_id: 0x2a9ae98e
+    member_id: 0xb8cdfbab
+    member_id: 0xfe324600
+    member_id: 0xcc4dc055
+    member_id: 0xdadb91d4
+    member_id: 0xaaa5aa42
+    member_id: 0x30ee2098
+    member_id: 0xa726b996
+    member_id: 0xa7a38b53
+    member_id: 0xbd1ba3e0
+    member_id: 0xbb31f65a
+    member_id: 0xd0b539fc
+    member_id: 0x5c31f395
+    member_id: 0x36c9c189
+    member_id: 0x317f2628
+    member_id: 0x7e43e8a7
+  }
+}
+struct_union {
+  id: 0xe5464603
+  kind: STRUCT
+  name: "audit_names"
+  definition {
+    bytesize: 112
+    member_id: 0x7c00ef52
+    member_id: 0x0dedc180
+    member_id: 0x2edfd4c2
+    member_id: 0x666b6e12
+    member_id: 0x0c7acc76
+    member_id: 0xced2eae0
+    member_id: 0x878f42b1
+    member_id: 0x153663fe
+    member_id: 0x08e67071
+    member_id: 0xdc23935c
+    member_id: 0x8d9b8e3b
+    member_id: 0x6b9309b0
+    member_id: 0x3b0d5e03
+    member_id: 0x5c0b5791
+    member_id: 0x5f783075
+  }
+}
+struct_union {
+  id: 0x0bc8cfd5
+  kind: STRUCT
+  name: "audit_node"
+  definition {
+    bytesize: 32
+    member_id: 0x7c00ef52
+    member_id: 0x4a968e48
+    member_id: 0xad7c8510
+  }
+}
+struct_union {
+  id: 0x0decc7d7
+  kind: STRUCT
+  name: "audit_ntp_data"
+  definition {
+    bytesize: 96
+    member_id: 0xa92524fe
+  }
+}
+struct_union {
+  id: 0xa9ed3e9e
+  kind: STRUCT
+  name: "audit_ntp_val"
+  definition {
+    bytesize: 16
+    member_id: 0xec1f9bc8
+    member_id: 0x7dc4ff2e
+  }
+}
+struct_union {
+  id: 0x432b1ab1
+  kind: STRUCT
+  name: "audit_proctitle"
+  definition {
+    bytesize: 16
+    member_id: 0xb862f585
+    member_id: 0xa00cdbc3
+  }
+}
+struct_union {
+  id: 0x0588ff69
+  kind: STRUCT
+  name: "audit_tree"
+  definition {
+    bytesize: 96
+    member_id: 0x65827d05
+    member_id: 0x023f6d04
+    member_id: 0x93f07164
+    member_id: 0xa9153a6a
+    member_id: 0x2b10a0fb
+    member_id: 0x7c00eec0
+    member_id: 0x9b9fa9a3
+    member_id: 0xb5b99d57
+    member_id: 0xa18cd207
+  }
+}
+struct_union {
+  id: 0xcb5affae
+  kind: STRUCT
+  name: "audit_tree_refs"
+  definition {
+    bytesize: 256
+    member_id: 0x11cb4659
+    member_id: 0x0fdf6e98
+  }
+}
+struct_union {
+  id: 0x7337ecd4
+  kind: STRUCT
+  name: "auxiliary_device"
+  definition {
+    bytesize: 928
+    member_id: 0xce1ac149
+    member_id: 0x0de5766b
+    member_id: 0xcce625f2
+  }
+}
+struct_union {
+  id: 0x40033ed1
+  kind: STRUCT
+  name: "auxiliary_device_id"
+  definition {
+    bytesize: 40
+    member_id: 0x0d81b30a
+    member_id: 0x6d08aa33
+  }
+}
+struct_union {
+  id: 0x63ee7911
+  kind: STRUCT
+  name: "auxiliary_driver"
+  definition {
+    bytesize: 232
+    member_id: 0xd77aaf7e
+    member_id: 0xb4ac07aa
+    member_id: 0x9efaea14
+    member_id: 0xf396bb3a
+    member_id: 0xcab3751a
+    member_id: 0x0de57b2f
+    member_id: 0xd4ad4dfa
+    member_id: 0xc4fa557c
+  }
+}
+struct_union {
+  id: 0xb65e540b
+  kind: STRUCT
+  name: "av_decision"
+  definition {
+    bytesize: 20
+    member_id: 0xcf92c78a
+    member_id: 0x242a71d3
+    member_id: 0x3a9cc23a
+    member_id: 0x792b5ed3
+    member_id: 0x2da185b7
+  }
+}
+struct_union {
+  id: 0x22e22107
+  kind: STRUCT
+  name: "avc_cache"
+  definition {
+    bytesize: 6160
+    member_id: 0x4fe96ca2
+    member_id: 0xdd8a193d
+    member_id: 0xff719763
+    member_id: 0x7d99680b
+    member_id: 0x41995401
+  }
+}
+struct_union {
+  id: 0x25802b70
+  kind: STRUCT
+  name: "avc_entry"
+  definition {
+    bytesize: 40
+    member_id: 0xb08e32fc
+    member_id: 0xd60cdd86
+    member_id: 0x51579d7e
+    member_id: 0xce3c6bac
+    member_id: 0x6f74e856
+  }
+}
+struct_union {
+  id: 0x53b77d6a
+  kind: STRUCT
+  name: "avc_node"
+  definition {
+    bytesize: 72
+    member_id: 0x1ffcf224
+    member_id: 0x7c9a87a5
+    member_id: 0xbc563875
+  }
+}
+struct_union {
+  id: 0x0a27e1da
+  kind: STRUCT
+  name: "avc_xperms_node"
+  definition {
+    bytesize: 56
+    member_id: 0x48bcaa45
+    member_id: 0x0989f76b
+  }
+}
+struct_union {
+  id: 0xeac6164c
+  kind: STRUCT
+  name: "avg_latency_bucket"
+  definition {
+    bytesize: 16
+    member_id: 0x2076cad5
+    member_id: 0xe9951d59
+  }
+}
+struct_union {
+  id: 0xcab227f8
+  kind: STRUCT
+  name: "avtab"
+  definition {
+    bytesize: 24
+    member_id: 0xf2863c10
+    member_id: 0x7cc2460f
+    member_id: 0x51460e20
+    member_id: 0xa8fa68c4
+  }
+}
+struct_union {
+  id: 0x4fda69a2
+  kind: STRUCT
+  name: "avtab_datum"
+  definition {
+    bytesize: 8
+    member_id: 0xec1659ba
+  }
+}
+struct_union {
+  id: 0x53d09af0
+  kind: STRUCT
+  name: "avtab_extended_perms"
+  definition {
+    bytesize: 36
+    member_id: 0x5f3a1a61
+    member_id: 0xd467c584
+    member_id: 0xdbb0c417
+  }
+}
+struct_union {
+  id: 0x4d57407e
+  kind: STRUCT
+  name: "avtab_key"
+  definition {
+    bytesize: 8
+    member_id: 0x7f0d6cd1
+    member_id: 0x5ada8db3
+    member_id: 0x5d352698
+    member_id: 0x5f82076d
+  }
+}
+struct_union {
+  id: 0x0f4b21b6
+  kind: STRUCT
+  name: "avtab_node"
+  definition {
+    bytesize: 24
+    member_id: 0x201b5dee
+    member_id: 0x13afcd46
+    member_id: 0x11fa4bec
+  }
+}
+struct_union {
+  id: 0x89935f7e
+  kind: STRUCT
+  name: "backing_dev_info"
+  definition {
+    bytesize: 1320
+    member_id: 0xccbd0fa2
+    member_id: 0x23002647
+    member_id: 0x7156e11d
+    member_id: 0x53ebcc11
+    member_id: 0x31c43d4e
+    member_id: 0xb714ccda
+    member_id: 0xa7dd8d71
+    member_id: 0x7a17cd67
+    member_id: 0xf3d009b3
+    member_id: 0x757f4e63
+    member_id: 0x408f26e7
+    member_id: 0x75a691b1
+    member_id: 0xfef7bf06
+    member_id: 0x0167fc83
+    member_id: 0x10280801
+    member_id: 0x5ba6a002
+    member_id: 0xc198b6b5
+    member_id: 0xce3bb95e
+    member_id: 0x863fe5e6
+    member_id: 0x4a9f2085
+    member_id: 0xff972e94
+    member_id: 0x8aa7a24b
+    member_id: 0x2d081dd9
+    member_id: 0x637602d1
+  }
+}
+struct_union {
+  id: 0xe8355efc
+  kind: STRUCT
+  name: "backlight_device"
+  definition {
+    bytesize: 1128
+    member_id: 0x4097cb2a
+    member_id: 0x556f10f2
+    member_id: 0x5d38f3c2
+    member_id: 0xafb162c8
+    member_id: 0xe99e9549
+    member_id: 0x4d878641
+    member_id: 0xce1ac3ba
+    member_id: 0x64d7ca61
+    member_id: 0x99e9635c
+  }
+}
+struct_union {
+  id: 0x7f136064
+  kind: STRUCT
+  name: "backlight_ops"
+  definition {
+    bytesize: 32
+    member_id: 0xd2761d8a
+    member_id: 0x9538131b
+    member_id: 0xc68ea885
+    member_id: 0x442a4047
+  }
+}
+struct_union {
+  id: 0x639c2545
+  kind: STRUCT
+  name: "backlight_properties"
+  definition {
+    bytesize: 28
+    member_id: 0x3938020f
+    member_id: 0x9a514019
+    member_id: 0xa96e7917
+    member_id: 0xa610aba5
+    member_id: 0x5cd8a821
+    member_id: 0x72b67487
+    member_id: 0xe6602200
+  }
+}
+struct_union {
+  id: 0x3310ab43
+  kind: STRUCT
+  name: "badblocks"
+  definition {
+    bytesize: 64
+    member_id: 0xce3bbab3
+    member_id: 0x65427bf6
+    member_id: 0x5b273374
+    member_id: 0x3256e977
+    member_id: 0x322bc39d
+    member_id: 0x9ef63f1b
+    member_id: 0x2decf44f
+    member_id: 0x6695fabc
+    member_id: 0xd9aea8a7
+  }
+}
+struct_union {
+  id: 0x96bbe95c
+  kind: STRUCT
+  name: "badrange"
+  definition {
+    bytesize: 24
+    member_id: 0x7c00ef52
+    member_id: 0x2d1fe547
+  }
+}
+struct_union {
+  id: 0x3e2562ef
+  kind: STRUCT
+  name: "balance_callback"
+  definition {
+    bytesize: 16
+    member_id: 0x11f619be
+    member_id: 0x21038353
+  }
+}
+struct_union {
+  id: 0x2a9dd300
+  kind: STRUCT
+  name: "balloon_dev_info"
+  definition {
+    bytesize: 40
+    member_id: 0xf353faca
+    member_id: 0x4eb10c50
+    member_id: 0x789948d3
+    member_id: 0xaea77217
+  }
+}
+struct_union {
+  id: 0x934115b2
+  kind: STRUCT
+  name: "bcm_set_pcm_int_params"
+  definition {
+    bytesize: 5
+    member_id: 0x1061afd7
+    member_id: 0x5f61bea2
+    member_id: 0xb23a5082
+    member_id: 0x665c19f0
+    member_id: 0x78f951e7
+  }
+}
+struct_union {
+  id: 0x0b7b35bf
+  kind: STRUCT
+  name: "bdi_writeback"
+  definition {
+    bytesize: 896
+    member_id: 0xd5c6c481
+    member_id: 0x72c08d84
+    member_id: 0x80fe5f07
+    member_id: 0x1f901c77
+    member_id: 0x0ac3f92d
+    member_id: 0x6824841c
+    member_id: 0x48ab5cc3
+    member_id: 0x32991f3a
+    member_id: 0x323a54ca
+    member_id: 0xb936ff9f
+    member_id: 0x3c1f4d4f
+    member_id: 0xf515fe65
+    member_id: 0xbe4db64d
+    member_id: 0xc793127e
+    member_id: 0x027dc0a5
+    member_id: 0x2ef6f90f
+    member_id: 0x24f5ee49
+    member_id: 0x44155dde
+    member_id: 0xcaa4df71
+    member_id: 0x791de3c4
+    member_id: 0x46746604
+    member_id: 0x039fb11c
+    member_id: 0x20d980e8
+    member_id: 0xc99f18bc
+    member_id: 0xaa41fb92
+    member_id: 0x43019f87
+    member_id: 0xb74590d4
+    member_id: 0xaac1c49f
+    member_id: 0x4ff68d3c
+    member_id: 0x1a0efd8e
+    member_id: 0x14a5c5db
+    member_id: 0xf1d6a66a
+    member_id: 0xb4d5a05a
+    member_id: 0x4d7469b1
+    member_id: 0x31d2390d
+    member_id: 0x2d0813a7
+    member_id: 0x63760d53
+  }
+}
+struct_union {
+  id: 0x5c509347
+  kind: STRUCT
+  name: "bin_attribute"
+  definition {
+    bytesize: 64
+    member_id: 0x8c29a58d
+    member_id: 0xd98a20d8
+    member_id: 0x91796e7a
+    member_id: 0x762282c2
+    member_id: 0x4853588a
+    member_id: 0x340ed5a9
+    member_id: 0x87ff3445
+  }
+}
+struct_union {
+  id: 0xd159863f
+  kind: STRUCT
+  name: "binder_alloc"
+  definition {
+    bytesize: 152
+    member_id: 0xad898302
+    member_id: 0x23919b81
+    member_id: 0x3025d29c
+    member_id: 0x33c6bda6
+    member_id: 0xc08242c8
+    member_id: 0xc583ca0b
+    member_id: 0x41b3ffd4
+    member_id: 0x67b3989c
+    member_id: 0x787d1848
+    member_id: 0x30e0cbff
+    member_id: 0x74ee4246
+    member_id: 0x70bb9058
+    member_id: 0x39c1244c
+  }
+}
+struct_union {
+  id: 0xc88d4460
+  kind: STRUCT
+  name: "binder_buffer"
+  definition {
+    bytesize: 104
+    member_id: 0x4d87803c
+    member_id: 0x23002b64
+    member_id: 0xd8453e48
+    member_id: 0x9e0df399
+    member_id: 0xd57865fa
+    member_id: 0x5d12d026
+    member_id: 0x52be75be
+    member_id: 0x0a2b1c5c
+    member_id: 0x026fc50b
+    member_id: 0x6b1282d8
+    member_id: 0x56fd1dec
+    member_id: 0xaa43c86e
+    member_id: 0x31669eb3
+    member_id: 0x8e83b5c8
+    member_id: 0x74ee4df7
+  }
+}
+struct_union {
+  id: 0x7d5d2acb
+  kind: STRUCT
+  name: "binder_context"
+  definition {
+    bytesize: 72
+    member_id: 0x8b541841
+    member_id: 0x6f74ad91
+    member_id: 0x67ff21d1
+    member_id: 0x0de577f0
+  }
+}
+struct_union {
+  id: 0x32ad011b
+  kind: STRUCT
+  name: "binder_error"
+  definition {
+    bytesize: 32
+    member_id: 0xd6a6b6a1
+    member_id: 0x1a0cebf8
+  }
+}
+struct_union {
+  id: 0x9ac2fe3a
+  kind: STRUCT
+  name: "binder_extended_error"
+  definition {
+    bytesize: 12
+    member_id: 0xccc9022e
+    member_id: 0x91a85f32
+    member_id: 0xb5b367d2
+  }
+}
+struct_union {
+  id: 0xf42f1e3d
+  kind: STRUCT
+  name: "binder_lru_page"
+  definition {
+    bytesize: 32
+    member_id: 0x54d11c55
+    member_id: 0x2d7fb70a
+    member_id: 0x45d27548
+  }
+}
+struct_union {
+  id: 0x7d927183
+  kind: STRUCT
+  name: "binder_node"
+  definition {
+    bytesize: 128
+    member_id: 0x661f35a2
+    member_id: 0x2d1fe1be
+    member_id: 0xd6a6b240
+    member_id: 0x3448034d
+    member_id: 0x9719f0d3
+    member_id: 0x9a091ac6
+    member_id: 0x14ac60e2
+    member_id: 0x3e5f7a72
+    member_id: 0xa8394c97
+    member_id: 0x04157f80
+    member_id: 0x467611ba
+    member_id: 0x58cc85b4
+    member_id: 0x2098ac9a
+    member_id: 0x20da7038
+    member_id: 0x7b9cb4ec
+    member_id: 0x8c7d72a4
+  }
+}
+struct_union {
+  id: 0xe9da44e2
+  kind: STRUCT
+  name: "binder_priority"
+  definition {
+    bytesize: 8
+    member_id: 0x78e0cb8e
+    member_id: 0xa9b53a60
+  }
+}
+struct_union {
+  id: 0x547618c2
+  kind: STRUCT
+  name: "binder_proc"
+  definition {
+    bytesize: 608
+    member_id: 0xdf6a3890
+    member_id: 0xe1e18175
+    member_id: 0x629a39c3
+    member_id: 0x6a1a3c2a
+    member_id: 0x349357c4
+    member_id: 0x8b39ba92
+    member_id: 0x74ee4e41
+    member_id: 0x33dd3a88
+    member_id: 0xced3c749
+    member_id: 0x3e0669bc
+    member_id: 0x3a27bb21
+    member_id: 0x0cbf51a8
+    member_id: 0x454d5d5b
+    member_id: 0x3952b157
+    member_id: 0x76dd1888
+    member_id: 0xc98f1d6c
+    member_id: 0x704a84bb
+    member_id: 0x898f1b47
+    member_id: 0xb9019dc3
+    member_id: 0x351fa4e7
+    member_id: 0x7a5a041c
+    member_id: 0x7b0048be
+    member_id: 0x6cf80e11
+    member_id: 0xb97ae44e
+    member_id: 0xd15bb728
+    member_id: 0xd170400d
+    member_id: 0x453de491
+    member_id: 0x41a2f5e4
+    member_id: 0x994739f8
+    member_id: 0x2e0d99c7
+    member_id: 0x048ba745
+    member_id: 0x8a9bfdd9
+  }
+}
+struct_union {
+  id: 0x74f5b04b
+  kind: STRUCT
+  name: "binder_stats"
+  definition {
+    bytesize: 212
+    member_id: 0xdac05308
+    member_id: 0x95bc92f9
+    member_id: 0xf6b9778a
+    member_id: 0x5854fa50
+  }
+}
+struct_union {
+  id: 0xba9c2ef8
+  kind: STRUCT
+  name: "binder_thread"
+  definition {
+    bytesize: 448
+    member_id: 0x9719f7a4
+    member_id: 0x23002647
+    member_id: 0x34628ce3
+    member_id: 0x74ee44cb
+    member_id: 0x7dc4312c
+    member_id: 0xb51b50fd
+    member_id: 0xa7c231fa
+    member_id: 0x898f1ce9
+    member_id: 0x3cce5fd6
+    member_id: 0x99e23032
+    member_id: 0xced5e1c9
+    member_id: 0x15617db3
+    member_id: 0x202d9561
+    member_id: 0xb9019206
+    member_id: 0xb9691bc2
+    member_id: 0x454d50bd
+    member_id: 0x9c3a25c9
+    member_id: 0x16422b43
+    member_id: 0xc3d04af9
+    member_id: 0xa7436cf7
+  }
+}
+struct_union {
+  id: 0x20e3a5b9
+  kind: STRUCT
+  name: "binder_transaction"
+  definition {
+    bytesize: 176
+    member_id: 0x661f35a2
+    member_id: 0xd6a6b240
+    member_id: 0xff7ac5f9
+    member_id: 0x49762360
+    member_id: 0x68f8c0c9
+    member_id: 0x7f58d505
+    member_id: 0xd2c1cefc
+    member_id: 0x58414216
+    member_id: 0xa321a199
+    member_id: 0xbce3b23b
+    member_id: 0x33e6ba8e
+    member_id: 0x54a569cc
+    member_id: 0x2d2d0e5f
+    member_id: 0x100d82eb
+    member_id: 0xb406539e
+    member_id: 0x9869eeac
+    member_id: 0x1f3c147c
+    member_id: 0x38a03a81
+    member_id: 0xa34a9832
+    member_id: 0x25fffba3
+    member_id: 0x694e1473
+    member_id: 0x2d1feaf8
+    member_id: 0xed700f2f
+  }
+}
+struct_union {
+  id: 0x69385830
+  kind: STRUCT
+  name: "binder_transaction_data"
+  definition {
+    bytesize: 64
+    member_id: 0xb3da3bc9
+    member_id: 0x58cc89fb
+    member_id: 0x5406c379
+    member_id: 0x2d8ea701
+    member_id: 0xd3bc24ef
+    member_id: 0x38f30d00
+    member_id: 0x569ccc07
+    member_id: 0xaa221c83
+    member_id: 0xffd54088
+  }
+}
+struct_union {
+  id: 0x5fed90c9
+  kind: STRUCT
+  name: "binder_work"
+  definition {
+    bytesize: 24
+    member_id: 0x4d87803c
+    member_id: 0x5c08dd70
+  }
+}
+struct_union {
+  id: 0x7ccce612
+  kind: STRUCT
+  name: "bio"
+  definition {
+    bytesize: 160
+    member_id: 0x43ea5036
+    member_id: 0xc6e979bd
+    member_id: 0xb34d4bf5
+    member_id: 0xc710c1ba
+    member_id: 0xb7092e1a
+    member_id: 0xf1b95fc0
+    member_id: 0x5135346a
+    member_id: 0x4460e917
+    member_id: 0xd71cd499
+    member_id: 0x054de3a1
+    member_id: 0xc701c262
+    member_id: 0xbf0fef01
+    member_id: 0xa42a1c5a
+    member_id: 0x8587f141
+    member_id: 0xdfb4eb50
+    member_id: 0xac26b039
+    member_id: 0x36752018
+    member_id: 0xcf2364f0
+    member_id: 0xb06a5bde
+    member_id: 0x7842c32a
+    member_id: 0x64963801
+    member_id: 0x6dc5a179
+    member_id: 0xd671cb9b
+    member_id: 0x2d081bee
+    member_id: 0x63760b66
+    member_id: 0x35517e9e
+  }
+}
+struct_union {
+  id: 0xe0859c58
+  kind: STRUCT
+  name: "bio_alloc_cache"
+  definition {
+    bytesize: 16
+    member_id: 0xe08d31d4
+    member_id: 0xd1e7b49e
+  }
+}
+struct_union {
+  id: 0x02c9ffd5
+  kind: STRUCT
+  name: "bio_crypt_ctx"
+  definition {
+    bytesize: 40
+    member_id: 0x4fd58db3
+    member_id: 0x8f151ef9
+  }
+}
+struct_union {
+  id: 0x8c08abbf
+  kind: STRUCT
+  name: "bio_issue"
+  definition {
+    bytesize: 8
+    member_id: 0xa09a7ff7
+  }
+}
+struct_union {
+  id: 0x59cf4672
+  kind: STRUCT
+  name: "bio_list"
+  definition {
+    bytesize: 16
+    member_id: 0xb54f1a01
+    member_id: 0xee880718
+  }
+}
+struct_union {
+  id: 0x200a0749
+  kind: STRUCT
+  name: "bio_set"
+  definition {
+    bytesize: 264
+    member_id: 0xb92ebf28
+    member_id: 0xe26c71ab
+    member_id: 0x3b4c6380
+    member_id: 0x817b6267
+    member_id: 0x363a30c7
+    member_id: 0x45455f3a
+    member_id: 0xea686bb7
+    member_id: 0x8236db35
+    member_id: 0x4e3b4641
+    member_id: 0xa9bfa026
+    member_id: 0x3e96c2a6
+  }
+}
+struct_union {
+  id: 0x348515c6
+  kind: STRUCT
+  name: "bio_vec"
+  definition {
+    bytesize: 16
+    member_id: 0x4ecbf58b
+    member_id: 0x23237822
+    member_id: 0x21e41bd1
+  }
+}
+struct_union {
+  id: 0x9a7b04ca
+  kind: STRUCT
+  name: "blk_crypto_config"
+  definition {
+    bytesize: 16
+    member_id: 0xad02928b
+    member_id: 0x7ad90fe7
+    member_id: 0xa374bfc0
+    member_id: 0xee9406d6
+  }
+}
+struct_union {
+  id: 0x670aeda7
+  kind: STRUCT
+  name: "blk_crypto_key"
+  definition {
+    bytesize: 152
+    member_id: 0x8dfe7069
+    member_id: 0xb566189c
+    member_id: 0xd93b94f4
+    member_id: 0x0935e42c
+  }
+}
+struct_union {
+  id: 0x2433570e
+  kind: STRUCT
+  name: "blk_crypto_keyslot"
+  definition {
+    bytesize: 56
+    member_id: 0xcfd6d499
+    member_id: 0xf5c5cc36
+    member_id: 0x64224775
+    member_id: 0x206de985
+    member_id: 0xa19ae4fe
+  }
+}
+struct_union {
+  id: 0x9cceb676
+  kind: STRUCT
+  name: "blk_crypto_ll_ops"
+  definition {
+    bytesize: 24
+    member_id: 0x2b7beb62
+    member_id: 0x4949b8ed
+    member_id: 0x7f5400a8
+  }
+}
+struct_union {
+  id: 0x0815495d
+  kind: STRUCT
+  name: "blk_crypto_profile"
+  definition {
+    bytesize: 208
+    member_id: 0xa0fb3ddd
+    member_id: 0x9a58e948
+    member_id: 0x754fc7f8
+    member_id: 0x5d042d88
+    member_id: 0xce3bbdc4
+    member_id: 0x1c310149
+    member_id: 0x2dc44ffc
+    member_id: 0x9e6e6735
+    member_id: 0x86080473
+    member_id: 0x514a5410
+    member_id: 0xd35da71e
+    member_id: 0x70c2d596
+    member_id: 0x4f4ccd19
+  }
+}
+struct_union {
+  id: 0xa6f7f2e2
+  kind: STRUCT
+  name: "blk_flush_queue"
+  definition {
+    bytesize: 80
+    member_id: 0xaa7e73aa
+    member_id: 0xda0ee758
+    member_id: 0x4f869839
+    member_id: 0xf4d6af9d
+    member_id: 0x5fc382f1
+    member_id: 0xce738796
+    member_id: 0xd66119fb
+    member_id: 0xe7ba652c
+  }
+}
+struct_union {
+  id: 0xf93ed965
+  kind: STRUCT
+  name: "blk_independent_access_range"
+  definition {
+    bytesize: 112
+    member_id: 0x452b206c
+    member_id: 0x6695f380
+    member_id: 0x684459f8
+  }
+}
+struct_union {
+  id: 0x4424f511
+  kind: STRUCT
+  name: "blk_independent_access_ranges"
+  definition {
+    bytesize: 104
+    member_id: 0x452b206c
+    member_id: 0x2cb1d0cd
+    member_id: 0x6b99a036
+    member_id: 0xd81735d2
+  }
+}
+struct_union {
+  id: 0x52ff0f82
+  kind: STRUCT
+  name: "blk_mq_alloc_data"
+  definition {
+    bytesize: 56
+    member_id: 0xe97bac4e
+    member_id: 0x2d211e7b
+    member_id: 0x5bb3ba98
+    member_id: 0x02c0b7ca
+    member_id: 0x97cc8f8d
+    member_id: 0x23cae15c
+    member_id: 0xf1a8f1ff
+    member_id: 0xeca95aeb
+    member_id: 0x57a5cb93
+  }
+}
+struct_union {
+  id: 0xe8f8d87a
+  kind: STRUCT
+  name: "blk_mq_ctx"
+  definition {
+    bytesize: 256
+    member_id: 0x270bfa1f
+    member_id: 0x51431e4b
+    member_id: 0x0bf38ced
+    member_id: 0xe26671a7
+    member_id: 0xaddb4875
+    member_id: 0x6d92f80f
+    member_id: 0x452b289f
+  }
+}
+struct_union {
+  id: 0x72d62916
+  kind: STRUCT
+  name: "blk_mq_ctxs"
+  definition {
+    bytesize: 104
+    member_id: 0x452b206c
+    member_id: 0x05686c9a
+  }
+}
+struct_union {
+  id: 0xded5be7b
+  kind: STRUCT
+  name: "blk_mq_debugfs_attr"
+  definition {
+    bytesize: 40
+    member_id: 0x0de57ce8
+    member_id: 0x878f4209
+    member_id: 0x0a527a1a
+    member_id: 0x340ecafc
+    member_id: 0x0b7928ef
+  }
+}
+struct_union {
+  id: 0xa26304f7
+  kind: STRUCT
+  name: "blk_mq_hw_ctx"
+  definition {
+    bytesize: 640
+    member_id: 0x270d1dfb
+    member_id: 0xb71c7464
+    member_id: 0x3dac8304
+    member_id: 0x0687eb66
+    member_id: 0x7bdae2b9
+    member_id: 0x2d5bf61f
+    member_id: 0x094ae4ea
+    member_id: 0xaddb40d2
+    member_id: 0x1a7ed948
+    member_id: 0x6d52ba36
+    member_id: 0x4b5a12ae
+    member_id: 0xcd5f5474
+    member_id: 0x8ecb65b6
+    member_id: 0x5c9fee55
+    member_id: 0x7962f35a
+    member_id: 0x6d826928
+    member_id: 0xac5a7949
+    member_id: 0xd4202180
+    member_id: 0x7a3b21c2
+    member_id: 0xeb0dfd27
+    member_id: 0xedf685a4
+    member_id: 0x2a8b0a99
+    member_id: 0x021101d3
+    member_id: 0xd4d7edad
+    member_id: 0x88db38ec
+    member_id: 0x728eb117
+    member_id: 0xabb97df2
+    member_id: 0x3e96ca68
+    member_id: 0x452b2605
+    member_id: 0x35a0a098
+    member_id: 0x19335555
+    member_id: 0x224d7a2a
+    member_id: 0x2d081f3f
+  }
+}
+struct_union {
+  id: 0xad6d93d1
+  kind: STRUCT
+  name: "blk_mq_ops"
+  definition {
+    bytesize: 152
+    member_id: 0x3dafdd69
+    member_id: 0x26f52cb6
+    member_id: 0x2b9f46f2
+    member_id: 0x31cc14e6
+    member_id: 0x82bcfe86
+    member_id: 0xddc4bab1
+    member_id: 0x5dc493cf
+    member_id: 0x54d752b2
+    member_id: 0x5e3ab29d
+    member_id: 0x4a56f6ad
+    member_id: 0xf587a1e9
+    member_id: 0x4159b030
+    member_id: 0xbfb83f3d
+    member_id: 0x4648209b
+    member_id: 0x40ef084e
+    member_id: 0x60e4b862
+    member_id: 0x63038849
+    member_id: 0x16c99f0e
+    member_id: 0x2d081bee
+  }
+}
+struct_union {
+  id: 0x3bc50e53
+  kind: STRUCT
+  name: "blk_mq_queue_data"
+  definition {
+    bytesize: 16
+    member_id: 0x0d2e502f
+    member_id: 0x260276bf
+  }
+}
+struct_union {
+  id: 0x77e41525
+  kind: STRUCT
+  name: "blk_mq_queue_map"
+  definition {
+    bytesize: 16
+    member_id: 0xaff0f05a
+    member_id: 0x54436541
+    member_id: 0x29334a99
+  }
+}
+struct_union {
+  id: 0x99433372
+  kind: STRUCT
+  name: "blk_mq_tag_set"
+  definition {
+    bytesize: 192
+    member_id: 0x8df94d47
+    member_id: 0x183eb746
+    member_id: 0xafbc454f
+    member_id: 0x2980a303
+    member_id: 0x728cf45d
+    member_id: 0x647792ac
+    member_id: 0x4e81bce4
+    member_id: 0xd4f54151
+    member_id: 0x548606f0
+    member_id: 0x2d2d0305
+    member_id: 0x6d52b01c
+    member_id: 0xeb098de5
+    member_id: 0x33219031
+    member_id: 0x86820df4
+    member_id: 0x8785dd84
+    member_id: 0x2d081262
+  }
+}
+struct_union {
+  id: 0x1c6093e3
+  kind: STRUCT
+  name: "blk_mq_tags"
+  definition {
+    bytesize: 184
+    member_id: 0x23cae995
+    member_id: 0x4d570578
+    member_id: 0x5ac542d5
+    member_id: 0x6fa601a8
+    member_id: 0x332cfc34
+    member_id: 0xe81ba33b
+    member_id: 0x48952518
+    member_id: 0x197373e1
+    member_id: 0x2d1fee76
+  }
+}
+struct_union {
+  id: 0xc97abb78
+  kind: STRUCT
+  name: "blk_plug"
+  definition {
+    bytesize: 40
+    member_id: 0xf34ef321
+    member_id: 0xf1bb470d
+    member_id: 0xba70b618
+    member_id: 0x76248d89
+    member_id: 0x3e5f7a3f
+    member_id: 0x9b8caf0a
+    member_id: 0xa27f3770
+    member_id: 0xa06fe161
+  }
+}
+struct_union {
+  id: 0xbb19ab6d
+  kind: STRUCT
+  name: "blk_queue_stats"
+  definition {
+    bytesize: 24
+    member_id: 0x725e9295
+    member_id: 0x2d1fe547
+    member_id: 0x384f10b1
+  }
+}
+struct_union {
+  id: 0xbee54ca4
+  kind: STRUCT
+  name: "blk_rq_stat"
+  definition {
+    bytesize: 40
+    member_id: 0x8dae3d1f
+    member_id: 0xf902a638
+    member_id: 0x97642d30
+    member_id: 0xaa6ace79
+    member_id: 0x4ad17f23
+  }
+}
+struct_union {
+  id: 0xb3d6b16f
+  kind: STRUCT
+  name: "blk_stat_callback"
+  definition {
+    bytesize: 136
+    member_id: 0x7c00ef52
+    member_id: 0x1dd188a0
+    member_id: 0xf4908fab
+    member_id: 0x75744c6e
+    member_id: 0xff44654d
+    member_id: 0xb99ea4be
+    member_id: 0x1e8bcae0
+    member_id: 0xff8a93af
+    member_id: 0x95dac185
+  }
+}
+struct_union {
+  id: 0x324d7ae7
+  kind: STRUCT
+  name: "blk_zone"
+  definition {
+    bytesize: 64
+    member_id: 0x46f6c127
+    member_id: 0xb8e823c0
+    member_id: 0xe2c583a3
+    member_id: 0x5ce53a0d
+    member_id: 0x16e66b34
+    member_id: 0x25a27fa0
+    member_id: 0x620e421f
+    member_id: 0xbb1a6213
+    member_id: 0xa7f37e69
+    member_id: 0xd45ace94
+  }
+}
+struct_union {
+  id: 0x455a585a
+  kind: STRUCT
+  name: "blkcg"
+  definition {
+    bytesize: 352
+    member_id: 0xde0d95ff
+    member_id: 0x2d1fe798
+    member_id: 0xf1a1d30d
+    member_id: 0x5b0d31b0
+    member_id: 0x5b755469
+    member_id: 0xa54c0945
+    member_id: 0x9dd1008b
+    member_id: 0x339d88ff
+    member_id: 0x016d52cc
+  }
+}
+struct_union {
+  id: 0x25165733
+  kind: STRUCT
+  name: "blkcg_gq"
+  definition {
+    bytesize: 360
+    member_id: 0xe97bac4e
+    member_id: 0xed7b9043
+    member_id: 0xf14cc730
+    member_id: 0x8a671118
+    member_id: 0x7232a6c4
+    member_id: 0xb7459d1c
+    member_id: 0x7d2f6119
+    member_id: 0x0382d523
+    member_id: 0xb70a02ba
+    member_id: 0x67acf3db
+    member_id: 0xf24f7f46
+    member_id: 0x0a70beb4
+    member_id: 0x3f170cb1
+    member_id: 0xfb73d61c
+    member_id: 0xcda74d2d
+    member_id: 0x64b97471
+    member_id: 0x283a51a5
+    member_id: 0xea615881
+    member_id: 0x56a72561
+  }
+}
+struct_union {
+  id: 0x13b5a562
+  kind: STRUCT
+  name: "blkcg_policy"
+  definition {
+    bytesize: 112
+    member_id: 0x1b04c869
+    member_id: 0x882d22a1
+    member_id: 0xa7a26725
+    member_id: 0xdf1e9756
+    member_id: 0x2a998965
+    member_id: 0x9ff69a44
+    member_id: 0xda9f8f9e
+    member_id: 0xc34fc6f4
+    member_id: 0x3b36d20b
+    member_id: 0x16a8e734
+    member_id: 0x28d07b74
+    member_id: 0x956576a6
+    member_id: 0xa9cc2830
+    member_id: 0x49818f6d
+  }
+}
+struct_union {
+  id: 0xf22cc280
+  kind: STRUCT
+  name: "blkcg_policy_data"
+  definition {
+    bytesize: 16
+    member_id: 0x8a6716df
+    member_id: 0x1b04cc88
+  }
+}
+struct_union {
+  id: 0x02fa8d0a
+  kind: STRUCT
+  name: "blkg_conf_ctx"
+  definition {
+    bytesize: 24
+    member_id: 0x51f028ab
+    member_id: 0x059dcf71
+    member_id: 0x921a8304
+  }
+}
+struct_union {
+  id: 0xec0a20ff
+  kind: STRUCT
+  name: "blkg_iostat"
+  definition {
+    bytesize: 48
+    member_id: 0x5c18a749
+    member_id: 0x13e2082d
+  }
+}
+struct_union {
+  id: 0x407a7203
+  kind: STRUCT
+  name: "blkg_iostat_set"
+  definition {
+    bytesize: 96
+    member_id: 0x50c46936
+    member_id: 0x91ee81f0
+    member_id: 0x268306b3
+  }
+}
+struct_union {
+  id: 0xb0f5919b
+  kind: STRUCT
+  name: "blkg_policy_data"
+  definition {
+    bytesize: 16
+    member_id: 0x059dcb90
+    member_id: 0x1b04cc88
+  }
+}
+struct_union {
+  id: 0x9422d8b9
+  kind: STRUCT
+  name: "blkg_rwstat"
+  definition {
+    bytesize: 240
+    member_id: 0xe35f2973
+    member_id: 0x3771732b
+  }
+}
+struct_union {
+  id: 0x6f28a54f
+  kind: STRUCT
+  name: "blkg_rwstat_sample"
+  definition {
+    bytesize: 40
+    member_id: 0x823c481b
+  }
+}
+struct_union {
+  id: 0x1af883ec
+  kind: STRUCT
+  name: "block_device"
+  definition {
+    bytesize: 1104
+    member_id: 0x074e7d10
+    member_id: 0x436ef75e
+    member_id: 0x03a6ea04
+    member_id: 0x399849b4
+    member_id: 0xaad8a036
+    member_id: 0xf75c89bb
+    member_id: 0x8e5fee32
+    member_id: 0x90d12200
+    member_id: 0xf51d2231
+    member_id: 0x8586c80c
+    member_id: 0xbd6420de
+    member_id: 0xd9cac2dd
+    member_id: 0xb95802d5
+    member_id: 0x572a1057
+    member_id: 0xb19a72aa
+    member_id: 0xe47790ac
+    member_id: 0x8e663da7
+    member_id: 0x93fbf95e
+    member_id: 0x9fd36d3a
+    member_id: 0x56ccb8e7
+    member_id: 0x218db134
+    member_id: 0x32f4d4f1
+    member_id: 0x8bcc0488
+  }
+}
+struct_union {
+  id: 0x0478a9d4
+  kind: STRUCT
+  name: "block_device_operations"
+  definition {
+    bytesize: 168
+    member_id: 0x13eb34e2
+    member_id: 0xb6dad647
+    member_id: 0xad992fa0
+    member_id: 0xae94ca2b
+    member_id: 0x504d78de
+    member_id: 0x4d49fa88
+    member_id: 0x4a54423a
+    member_id: 0xb077c1ce
+    member_id: 0xfdaeb2b1
+    member_id: 0xaf057347
+    member_id: 0xe4d489f8
+    member_id: 0x7f910ba8
+    member_id: 0x91692ea0
+    member_id: 0x0d9120ed
+    member_id: 0x1ea7520b
+    member_id: 0xb14a1a0b
+    member_id: 0x4a96554f
+    member_id: 0xb5b3a85e
+    member_id: 0x0d67515b
+    member_id: 0x2d0817f6
+    member_id: 0x63760fdf
+  }
+}
+struct_union {
+  id: 0x9249a64d
+  kind: STRUCT
+  name: "blocking_notifier_head"
+  definition {
+    bytesize: 72
+    member_id: 0xd610e5b1
+    member_id: 0xb54104bd
+  }
+}
+struct_union {
+  id: 0x8f56989a
+  kind: UNION
+  name: "bpf_attr"
+  definition {
+    bytesize: 144
+    member_id: 0x277f4bd0
+    member_id: 0x20748443
+    member_id: 0x4a42d9c0
+    member_id: 0x26428415
+    member_id: 0x2fcec0ac
+    member_id: 0x288e89a5
+    member_id: 0x8db5d70a
+    member_id: 0x26c9c4e4
+    member_id: 0xcd57a367
+    member_id: 0x8cf261f1
+    member_id: 0xb1b4ba3a
+    member_id: 0x25298ce3
+    member_id: 0xdad191df
+    member_id: 0x8e1a0749
+    member_id: 0x7df6db51
+    member_id: 0x0b033c28
+    member_id: 0x30687d61
+    member_id: 0x07a7ec69
+    member_id: 0x14ffc351
+  }
+}
+struct_union {
+  id: 0xe78b63f2
+  kind: STRUCT
+  name: "bpf_cgroup_storage"
+  definition {
+    bytesize: 104
+    member_id: 0x3fd6133e
+    member_id: 0x8ddf0186
+    member_id: 0x2037343a
+    member_id: 0xc6a43282
+    member_id: 0xc1387737
+    member_id: 0x0f47000c
+    member_id: 0x95dacb4a
+  }
+}
+struct_union {
+  id: 0x61375610
+  kind: STRUCT
+  name: "bpf_cgroup_storage_key"
+  definition {
+    bytesize: 16
+    member_id: 0x57dcbe00
+    member_id: 0x64b75e5b
+  }
+}
+struct_union {
+  id: 0x8f93a54b
+  kind: STRUCT
+  name: "bpf_cgroup_storage_map"
+  definition {
+    bytesize: 384
+    member_id: 0x8dcef71e
+    member_id: 0x2d1fed27
+    member_id: 0x9334b3c4
+    member_id: 0x7c00ea6c
+  }
+}
+struct_union {
+  id: 0x77f1ecc1
+  kind: STRUCT
+  name: "bpf_ctx_arg_aux"
+  definition {
+    bytesize: 12
+    member_id: 0x9bd5d4ef
+    member_id: 0x1c9af96f
+    member_id: 0xf5eb6708
+  }
+}
+struct_union {
+  id: 0x17a9510e
+  kind: STRUCT
+  name: "bpf_func_info"
+  definition {
+    bytesize: 8
+    member_id: 0xe2d79fc8
+    member_id: 0x148d904b
+  }
+}
+struct_union {
+  id: 0x29060f15
+  kind: STRUCT
+  name: "bpf_func_info_aux"
+  definition {
+    bytesize: 4
+    member_id: 0x38f425c4
+    member_id: 0x0049d6a0
+  }
+}
+struct_union {
+  id: 0xa7992b4c
+  kind: STRUCT
+  name: "bpf_func_proto"
+  definition {
+    bytesize: 96
+    member_id: 0x21190ed2
+    member_id: 0x77c47d01
+    member_id: 0xca3e82f5
+    member_id: 0x07ab946a
+    member_id: 0x3418b8d7
+    member_id: 0x34fced0e
+    member_id: 0x2269f66f
+    member_id: 0xcf6dc9bd
+  }
+}
+struct_union {
+  id: 0x2b1e0739
+  kind: STRUCT
+  name: "bpf_func_state"
+  definition {
+    bytesize: 1392
+    member_id: 0x80ec47e6
+    member_id: 0x9dff7ef6
+    member_id: 0xafdeb24a
+    member_id: 0xc87108fe
+    member_id: 0x4379006a
+    member_id: 0x0e27bfce
+    member_id: 0x80b475d5
+    member_id: 0x207c8b70
+    member_id: 0xb4a0bce8
+    member_id: 0x9a538ff0
+    member_id: 0x58b5d7ca
+    member_id: 0xbfd72bf9
+  }
+}
+struct_union {
+  id: 0x733f1f0f
+  kind: STRUCT
+  name: "bpf_id_pair"
+  definition {
+    bytesize: 8
+    member_id: 0xf44d59e2
+    member_id: 0x91cb8ec0
+  }
+}
+struct_union {
+  id: 0xa6a1d9d7
+  kind: STRUCT
+  name: "bpf_idx_pair"
+  definition {
+    bytesize: 8
+    member_id: 0x37e09836
+    member_id: 0x3c4efd37
+  }
+}
+struct_union {
+  id: 0x26966763
+  kind: STRUCT
+  name: "bpf_insn"
+  definition {
+    bytesize: 8
+    member_id: 0x545303be
+    member_id: 0xcdacfab5
+    member_id: 0x14912223
+    member_id: 0x8bd54826
+    member_id: 0x97fee7a0
+  }
+}
+struct_union {
+  id: 0x40adeada
+  kind: STRUCT
+  name: "bpf_insn_access_aux"
+  definition {
+    bytesize: 32
+    member_id: 0x1c9af454
+    member_id: 0x35ea5b97
+    member_id: 0xc054ba10
+  }
+}
+struct_union {
+  id: 0x0c3f5690
+  kind: STRUCT
+  name: "bpf_insn_aux_data"
+  definition {
+    bytesize: 56
+    member_id: 0x39193c98
+    member_id: 0x1d742d06
+    member_id: 0x39d26e8a
+    member_id: 0xae7e1ede
+    member_id: 0x04ae54cb
+    member_id: 0x12bba865
+    member_id: 0x5e00c911
+    member_id: 0x4b1eff4a
+    member_id: 0xece8ac0a
+  }
+}
+struct_union {
+  id: 0x61f68096
+  kind: STRUCT
+  name: "bpf_iter_aux_info"
+  definition {
+    bytesize: 32
+    member_id: 0x8df2c024
+    member_id: 0x6da50d2a
+    member_id: 0x9c286dc1
+  }
+}
+struct_union {
+  id: 0xfda2b595
+  kind: STRUCT
+  name: "bpf_iter_seq_info"
+  definition {
+    bytesize: 32
+    member_id: 0x0b792844
+    member_id: 0x1390689c
+    member_id: 0x2ec27bbd
+    member_id: 0x7bd96afa
+  }
+}
+struct_union {
+  id: 0xcbb3034f
+  kind: STRUCT
+  name: "bpf_jit_poke_descriptor"
+  definition {
+    bytesize: 56
+    member_id: 0x5b130cab
+    member_id: 0xb2bd6524
+    member_id: 0x9131e5e7
+    member_id: 0x7997077d
+    member_id: 0x3d1a48d1
+    member_id: 0x57b07fa2
+    member_id: 0x58ceae8a
+    member_id: 0xbb8bd1e9
+    member_id: 0x0c4aafe8
+  }
+}
+struct_union {
+  id: 0x70eb20da
+  kind: STRUCT
+  name: "bpf_kfunc_btf"
+  definition {
+    bytesize: 24
+    member_id: 0x0f1d715c
+    member_id: 0x965f12df
+    member_id: 0x9b8d98b9
+  }
+}
+struct_union {
+  id: 0xad42c9db
+  kind: STRUCT
+  name: "bpf_kfunc_btf_tab"
+  definition {
+    bytesize: 6152
+    member_id: 0x2bd1f481
+    member_id: 0x3c88906e
+  }
+}
+struct_union {
+  id: 0x4482f870
+  kind: STRUCT
+  name: "bpf_kfunc_desc"
+  definition {
+    bytesize: 40
+    member_id: 0x87de0e0c
+    member_id: 0x74d098cf
+    member_id: 0x97255e5d
+    member_id: 0x9b8d95a2
+  }
+}
+struct_union {
+  id: 0xf5471f2f
+  kind: STRUCT
+  name: "bpf_kfunc_desc_tab"
+  definition {
+    bytesize: 10244
+    member_id: 0x2bdceef7
+    member_id: 0x3c8897db
+  }
+}
+struct_union {
+  id: 0x18628aeb
+  kind: STRUCT
+  name: "bpf_ksym"
+  definition {
+    bytesize: 600
+    member_id: 0x46284634
+    member_id: 0x823c2af9
+    member_id: 0x0d64e1de
+    member_id: 0x497de021
+    member_id: 0x7191d854
+    member_id: 0x9875bce1
+  }
+}
+struct_union {
+  id: 0xca3c230a
+  kind: STRUCT
+  name: "bpf_line_info"
+  definition {
+    bytesize: 16
+    member_id: 0xe2d79fc8
+    member_id: 0xb9d64aa4
+    member_id: 0x17206248
+    member_id: 0x2d22a4be
+  }
+}
+struct_union {
+  id: 0x47ac8321
+  kind: STRUCT
+  name: "bpf_link"
+  definition {
+    bytesize: 80
+    member_id: 0xb7649f1e
+    member_id: 0xcce6205b
+    member_id: 0x5ca01e4e
+    member_id: 0xafb6848a
+    member_id: 0x982b4ef9
+    member_id: 0xd6e6671c
+  }
+}
+struct_union {
+  id: 0xd9065242
+  kind: STRUCT
+  name: "bpf_link_info"
+  definition {
+    bytesize: 48
+    member_id: 0x5cb0fbc1
+    member_id: 0xccc90f15
+    member_id: 0xa18f00c9
+    member_id: 0x3d6f3f3c
+  }
+}
+struct_union {
+  id: 0x019a91c4
+  kind: STRUCT
+  name: "bpf_link_ops"
+  definition {
+    bytesize: 56
+    member_id: 0xae97f307
+    member_id: 0x36b0db88
+    member_id: 0x0e0992c4
+    member_id: 0xc2fbf996
+    member_id: 0x3d8f753f
+    member_id: 0x9d67ee43
+    member_id: 0x2d0814a0
+  }
+}
+struct_union {
+  id: 0x97fb3bb6
+  kind: STRUCT
+  name: "bpf_local_storage"
+  definition {
+    bytesize: 168
+    member_id: 0x3b3a3484
+    member_id: 0x7c8dad8b
+    member_id: 0x4a85c59f
+    member_id: 0x95dac7ab
+    member_id: 0x2d244865
+  }
+}
+struct_union {
+  id: 0xa78541bf
+  kind: STRUCT
+  name: "bpf_local_storage_data"
+  definition {
+    bytesize: 8
+    member_id: 0x81e6cdff
+    member_id: 0xff5c4e1f
+  }
+}
+struct_union {
+  id: 0x541f610f
+  kind: STRUCT
+  name: "bpf_local_storage_map"
+  definition {
+    bytesize: 384
+    member_id: 0x8dcef71e
+    member_id: 0xff2ededc
+    member_id: 0x13ffe5b5
+    member_id: 0x30a4d87e
+    member_id: 0x83cebe61
+  }
+}
+struct_union {
+  id: 0x96b5469b
+  kind: STRUCT
+  name: "bpf_local_storage_map_bucket"
+  definition {
+    bytesize: 16
+    member_id: 0x7c8daa94
+    member_id: 0x2d244af9
+  }
+}
+struct_union {
+  id: 0x3773b61f
+  kind: STRUCT
+  name: "bpf_loop_inline_state"
+  definition {
+    bytesize: 8
+    member_id: 0x5e7db0e0
+    member_id: 0x8c7e6f6b
+    member_id: 0x6c6511db
+  }
+}
+struct_union {
+  id: 0x3886a9ae
+  kind: STRUCT
+  name: "bpf_map"
+  definition {
+    bytesize: 320
+    member_id: 0xafb870eb
+    member_id: 0x2eda277d
+    member_id: 0xf194e82c
+    member_id: 0x2a09347d
+    member_id: 0x7df0272c
+    member_id: 0xd046f79d
+    member_id: 0x6b5128d6
+    member_id: 0x3d93c0fb
+    member_id: 0x65601285
+    member_id: 0x4176cdea
+    member_id: 0xe89db1ad
+    member_id: 0x7fe375c7
+    member_id: 0xcce62a65
+    member_id: 0xd4f54e5a
+    member_id: 0xe9a9e3d4
+    member_id: 0x86ed01a0
+    member_id: 0x2b17661b
+    member_id: 0x0f1d7361
+    member_id: 0x788d7d64
+    member_id: 0x0d994ffa
+    member_id: 0x5ae84e29
+    member_id: 0xb7649801
+    member_id: 0x52e156e4
+    member_id: 0xd6e6696b
+    member_id: 0x5f4d7597
+    member_id: 0xa4b8618f
+    member_id: 0x4a8e4b8e
+    member_id: 0x7ebe7a64
+    member_id: 0xb8c677f5
+  }
+}
+struct_union {
+  id: 0x93a6666a
+  kind: STRUCT
+  name: "bpf_map_dev_ops"
+  definition {
+    bytesize: 40
+    member_id: 0x0a3d6845
+    member_id: 0x64dd4a18
+    member_id: 0xee2f1f12
+    member_id: 0x5429389b
+    member_id: 0x2d081599
+  }
+}
+struct_union {
+  id: 0xb30471a8
+  kind: STRUCT
+  name: "bpf_map_off_arr"
+  definition {
+    bytesize: 56
+    member_id: 0x823834d2
+    member_id: 0xf46a76f3
+    member_id: 0xecb6717a
+  }
+}
+struct_union {
+  id: 0xee40a882
+  kind: STRUCT
+  name: "bpf_map_ops"
+  definition {
+    bytesize: 344
+    member_id: 0x5825c5a8
+    member_id: 0xd69d3cf7
+    member_id: 0xc2f40ee3
+    member_id: 0xce2175fc
+    member_id: 0x0a3de92a
+    member_id: 0x8b43172f
+    member_id: 0x89327ca9
+    member_id: 0xa57744be
+    member_id: 0xe1887ebd
+    member_id: 0xb745ff49
+    member_id: 0xb341c14e
+    member_id: 0xf2793d4c
+    member_id: 0x64ef038c
+    member_id: 0xee2f94ae
+    member_id: 0x5429bb30
+    member_id: 0x1cba89be
+    member_id: 0xa07ebcd2
+    member_id: 0x5e840430
+    member_id: 0x7eb83045
+    member_id: 0xa30896fc
+    member_id: 0xe2bb8994
+    member_id: 0x67a9878d
+    member_id: 0x37f6a70f
+    member_id: 0x9adecb68
+    member_id: 0x7031173c
+    member_id: 0xfca1806f
+    member_id: 0xad0fb3cf
+    member_id: 0x608b4aa4
+    member_id: 0x82e5306e
+    member_id: 0x9a5b94cd
+    member_id: 0xa7043c82
+    member_id: 0x5171a873
+    member_id: 0xa3efc666
+    member_id: 0xbf6003f5
+    member_id: 0xa075dadf
+    member_id: 0x6dd0c702
+    member_id: 0xe6ba1ec3
+    member_id: 0x882c6f79
+    member_id: 0x0ca92364
+    member_id: 0x48e7145d
+    member_id: 0xc48f9407
+    member_id: 0x2d081c68
+    member_id: 0x63760c9c
+  }
+}
+struct_union {
+  id: 0xcc7676b2
+  kind: STRUCT
+  name: "bpf_map_value_off"
+  definition {
+    bytesize: 8
+    member_id: 0x9c6b34f7
+    member_id: 0x8b35cac9
+  }
+}
+struct_union {
+  id: 0x933eca09
+  kind: STRUCT
+  name: "bpf_map_value_off_desc"
+  definition {
+    bytesize: 40
+    member_id: 0x9bd5d4ef
+    member_id: 0x5c05a3de
+    member_id: 0x2c23d29d
+  }
+}
+struct_union {
+  id: 0xb52b1ec7
+  kind: STRUCT
+  name: "bpf_offload_dev"
+  definition {
+    bytesize: 32
+    member_id: 0xafb099be
+    member_id: 0x8d337bdc
+    member_id: 0x59119068
+  }
+}
+struct_union {
+  id: 0x18f78159
+  kind: STRUCT
+  name: "bpf_offloaded_map"
+  definition {
+    bytesize: 384
+    member_id: 0x8dcef71e
+    member_id: 0x92c34d05
+    member_id: 0xc33b73ee
+    member_id: 0xe08fe60a
+    member_id: 0x46bca5c5
+  }
+}
+struct_union {
+  id: 0xe44a7e7f
+  kind: STRUCT
+  name: "bpf_prog"
+  definition {
+    bytesize: 80
+    member_id: 0x78dbc4af
+    member_id: 0x5f38f99a
+    member_id: 0xd5b6a94c
+    member_id: 0x03dc8fd6
+    member_id: 0x361fda1e
+    member_id: 0xa524d57c
+    member_id: 0x2da3404f
+    member_id: 0x02cfdf27
+    member_id: 0x46152dca
+    member_id: 0xc5b8ded3
+    member_id: 0xdabea839
+    member_id: 0xc774a29c
+    member_id: 0x1433c732
+    member_id: 0x9d89ba25
+    member_id: 0x0e762711
+    member_id: 0x5ca90da6
+    member_id: 0x9558ec36
+    member_id: 0xb8ccd4fe
+    member_id: 0x2dc2b268
+    member_id: 0xd54ba9c9
+    member_id: 0xb95cdf4e
+    member_id: 0x2231011e
+    member_id: 0x3e12eb40
+    member_id: 0x79895a82
+    member_id: 0x7ddf8761
+    member_id: 0x2d081c40
+    member_id: 0x343f0acd
+  }
+}
+struct_union {
+  id: 0x1d33ca38
+  kind: STRUCT
+  name: "bpf_prog_array"
+  definition {
+    bytesize: 16
+    member_id: 0x95dac977
+    member_id: 0xb7500dd7
+  }
+}
+struct_union {
+  id: 0x77ee5e6d
+  kind: STRUCT
+  name: "bpf_prog_array_item"
+  definition {
+    bytesize: 24
+    member_id: 0x982b4630
+    member_id: 0x310f528c
+  }
+}
+struct_union {
+  id: 0x31fc742e
+  kind: STRUCT
+  name: "bpf_prog_aux"
+  definition {
+    bytesize: 1096
+    member_id: 0xb7649f1e
+    member_id: 0x59ccffff
+    member_id: 0xc9405f4b
+    member_id: 0x4e469886
+    member_id: 0x463c11e3
+    member_id: 0x3bf5317d
+    member_id: 0x526c2273
+    member_id: 0xcce62411
+    member_id: 0xdf401239
+    member_id: 0xa2c336ee
+    member_id: 0x05e2f95b
+    member_id: 0xfd0e2d5e
+    member_id: 0xc329de1c
+    member_id: 0x8b5438b4
+    member_id: 0x51a77605
+    member_id: 0x5cc54868
+    member_id: 0xf2890bb2
+    member_id: 0x12a60912
+    member_id: 0xb420abbe
+    member_id: 0xbd448174
+    member_id: 0xb70457a3
+    member_id: 0x65238534
+    member_id: 0xdfefd731
+    member_id: 0x133bf735
+    member_id: 0x23c05514
+    member_id: 0x385c08ea
+    member_id: 0x677efda2
+    member_id: 0x4f0461a4
+    member_id: 0xf7434e08
+    member_id: 0x541c67d0
+    member_id: 0x2109a3d5
+    member_id: 0x5b068ff9
+    member_id: 0x8176720f
+    member_id: 0x1a72c5ff
+    member_id: 0x10ae117c
+    member_id: 0xecbc9196
+    member_id: 0x185141de
+    member_id: 0xafb39a5b
+    member_id: 0x6aa9f159
+    member_id: 0x58839111
+    member_id: 0x62a454aa
+    member_id: 0x982b4db5
+    member_id: 0x042a2fad
+    member_id: 0x43978f39
+    member_id: 0x3ddf9814
+    member_id: 0xa417b115
+    member_id: 0x770343fd
+    member_id: 0x0d9944ca
+    member_id: 0xf194efeb
+    member_id: 0xd2db40d6
+    member_id: 0x0f1d7cb9
+    member_id: 0x6c504e57
+    member_id: 0x61b1c2fd
+    member_id: 0x6a764562
+    member_id: 0x5023af1d
+    member_id: 0xf7fef221
+    member_id: 0xfcd02002
+    member_id: 0x46a06866
+    member_id: 0x7f574879
+    member_id: 0x179e6e98
+    member_id: 0x3b12171b
+    member_id: 0x2d081be0
+  }
+}
+struct_union {
+  id: 0x1e814a02
+  kind: STRUCT
+  name: "bpf_prog_offload"
+  definition {
+    bytesize: 80
+    member_id: 0x982b4630
+    member_id: 0x92c34846
+    member_id: 0x3afe784b
+    member_id: 0xe08febfd
+    member_id: 0x46bca653
+    member_id: 0x6bc4755d
+    member_id: 0x3b247fdc
+    member_id: 0x29c07a08
+    member_id: 0x2dc2b0b2
+    member_id: 0x2d081c40
+  }
+}
+struct_union {
+  id: 0x60d5fe6e
+  kind: STRUCT
+  name: "bpf_prog_offload_ops"
+  definition {
+    bytesize: 64
+    member_id: 0x629e2222
+    member_id: 0xfd72718e
+    member_id: 0xb4ed5a08
+    member_id: 0x5c1fdbe3
+    member_id: 0x3d546192
+    member_id: 0xff7f9164
+    member_id: 0xa4fba471
+    member_id: 0x2d081245
+  }
+}
+struct_union {
+  id: 0x5072a8c6
+  kind: STRUCT
+  name: "bpf_prog_ops"
+  definition {
+    bytesize: 8
+    member_id: 0x7e147258
+  }
+}
+struct_union {
+  id: 0x8c874bb3
+  kind: STRUCT
+  name: "bpf_prog_stats"
+  definition {
+    bytesize: 32
+    member_id: 0x82cb024b
+    member_id: 0x18ca584d
+    member_id: 0xa5a2b8a4
+    member_id: 0x0d9bb4ec
+  }
+}
+struct_union {
+  id: 0xb69820f6
+  kind: STRUCT
+  name: "bpf_raw_event_map"
+  definition {
+    bytesize: 32
+    member_id: 0x53d434cb
+    member_id: 0x3e30dbbc
+    member_id: 0x519de530
+    member_id: 0x0082372e
+  }
+}
+struct_union {
+  id: 0x3a354a67
+  kind: STRUCT
+  name: "bpf_reference_state"
+  definition {
+    bytesize: 12
+    member_id: 0xcc480c42
+    member_id: 0x0ce4884b
+    member_id: 0x31e8666a
+  }
+}
+struct_union {
+  id: 0x7f317daf
+  kind: STRUCT
+  name: "bpf_reg_state"
+  definition {
+    bytesize: 120
+    member_id: 0x5c24ce01
+    member_id: 0x8b012ba7
+    member_id: 0x369a926b
+    member_id: 0xcce62c73
+    member_id: 0xe7b54309
+    member_id: 0xa7a1967e
+    member_id: 0x7b7d4edc
+    member_id: 0x06cc0cc1
+    member_id: 0x213c3182
+    member_id: 0x1220a6f4
+    member_id: 0xb959d449
+    member_id: 0x70439f8b
+    member_id: 0x4b998263
+    member_id: 0x80598f11
+    member_id: 0x72242632
+    member_id: 0xafdebc89
+    member_id: 0x7f082f01
+    member_id: 0xf62a2c51
+    member_id: 0xce5b674b
+  }
+}
+struct_union {
+  id: 0xa8cffbc3
+  kind: STRUCT
+  name: "bpf_run_ctx"
+  definition {
+  }
+}
+struct_union {
+  id: 0x8c396a91
+  kind: STRUCT
+  name: "bpf_stack_state"
+  definition {
+    bytesize: 128
+    member_id: 0x835d74e5
+    member_id: 0x3ea9f0a3
+  }
+}
+struct_union {
+  id: 0x7b8c9983
+  kind: STRUCT
+  name: "bpf_storage_buffer"
+  definition {
+    bytesize: 16
+    member_id: 0x95dac977
+    member_id: 0xff5807ff
+  }
+}
+struct_union {
+  id: 0xfe192c0c
+  kind: STRUCT
+  name: "bpf_subprog_info"
+  definition {
+    bytesize: 24
+    member_id: 0x46d23b7b
+    member_id: 0x46a0625c
+    member_id: 0x52346022
+    member_id: 0xc6e2bbdc
+    member_id: 0x677ef67b
+    member_id: 0xe114c970
+    member_id: 0x4d3c5d63
+    member_id: 0x2d081cf0
+  }
+}
+struct_union {
+  id: 0x5d2bc636
+  kind: STRUCT
+  name: "bpf_tramp_image"
+  definition {
+    bytesize: 688
+    member_id: 0x7712821d
+    member_id: 0x1851434c
+    member_id: 0xf40fc00d
+    member_id: 0xd1bd75e0
+    member_id: 0xbc6a844a
+    member_id: 0x3f25e3b3
+  }
+}
+struct_union {
+  id: 0x3ff8b5ef
+  kind: STRUCT
+  name: "bpf_trampoline"
+  definition {
+    bytesize: 216
+    member_id: 0x2d522361
+    member_id: 0xb191f236
+    member_id: 0xad898bcb
+    member_id: 0xb7dcf1de
+    member_id: 0x2da18c87
+    member_id: 0x20c42fe4
+    member_id: 0x212053a5
+    member_id: 0x9478fd81
+    member_id: 0x664fe97f
+    member_id: 0xb81e1c3d
+    member_id: 0xa8603975
+    member_id: 0x10ad34ae
+    member_id: 0x8c1b6635
+    member_id: 0x2d08161e
+  }
+}
+struct_union {
+  id: 0x499574fe
+  kind: STRUCT
+  name: "bpf_verifier_env"
+  definition {
+    bytesize: 9648
+    member_id: 0x0c4aad88
+    member_id: 0x7f5ae705
+    member_id: 0x982b42d1
+    member_id: 0xafbf8112
+    member_id: 0xb55f493d
+    member_id: 0xa645865f
+    member_id: 0xa8de07ae
+    member_id: 0x5b890e6e
+    member_id: 0x0c924176
+    member_id: 0xa791b4e5
+    member_id: 0xe0abacaa
+    member_id: 0x6a90c804
+    member_id: 0x629d6168
+    member_id: 0x59ccfd6e
+    member_id: 0xc94059e9
+    member_id: 0x0d4977ca
+    member_id: 0xeaf7d412
+    member_id: 0x2f8eac26
+    member_id: 0x26d55fa9
+    member_id: 0x84434cb2
+    member_id: 0x06b17283
+    member_id: 0x7ebe7bd8
+    member_id: 0xbb7c45b9
+    member_id: 0x8dc7e253
+    member_id: 0xf0202332
+    member_id: 0x7a314736
+    member_id: 0xc03ddf09
+    member_id: 0xd61c6dbe
+    member_id: 0xa0cfbb99
+    member_id: 0xd4539172
+    member_id: 0xc012f59e
+    member_id: 0x79437342
+    member_id: 0x406b83f4
+    member_id: 0xf372264d
+    member_id: 0x9f3e34b4
+    member_id: 0x30bc0525
+    member_id: 0x816935ff
+    member_id: 0xe38f53c4
+    member_id: 0x7383a058
+    member_id: 0x375e7d1a
+    member_id: 0xcd72550c
+    member_id: 0xcc2fdbf8
+    member_id: 0x29a97016
+    member_id: 0xa944ccfb
+    member_id: 0x8e6a1692
+    member_id: 0xc267fa65
+    member_id: 0x4a3d814f
+    member_id: 0x2d081fd5
+    member_id: 0x637600fb
+  }
+}
+struct_union {
+  id: 0x7cca3c54
+  kind: STRUCT
+  name: "bpf_verifier_log"
+  definition {
+    bytesize: 1048
+    member_id: 0x8673c739
+    member_id: 0x9b6fbbd1
+    member_id: 0xae4712de
+    member_id: 0x0f53c07d
+    member_id: 0x2b9e4f78
+  }
+}
+struct_union {
+  id: 0x91c317c8
+  kind: STRUCT
+  name: "bpf_verifier_ops"
+  definition {
+    bytesize: 56
+    member_id: 0xf0e7d9e4
+    member_id: 0x4a0775e9
+    member_id: 0x8c1742c4
+    member_id: 0x5da4104b
+    member_id: 0x3f2fb089
+    member_id: 0x620d6cc3
+    member_id: 0x2d0814a0
+  }
+}
+struct_union {
+  id: 0x3da33188
+  kind: STRUCT
+  name: "bpf_verifier_stack_elem"
+  definition {
+    bytesize: 144
+    member_id: 0xc9a0d926
+    member_id: 0x0ce48d83
+    member_id: 0x7ff4c214
+    member_id: 0x11f6ff35
+    member_id: 0x86746a74
+  }
+}
+struct_union {
+  id: 0xee05c4c5
+  kind: STRUCT
+  name: "bpf_verifier_state"
+  definition {
+    bytesize: 120
+    member_id: 0x16937a0b
+    member_id: 0x720068aa
+    member_id: 0x11edfc94
+    member_id: 0x0c4aad7a
+    member_id: 0xff0c8cdb
+    member_id: 0xfa0d6c00
+    member_id: 0x5c1dbc47
+    member_id: 0x8e3a4b7c
+    member_id: 0x48cbb7f7
+    member_id: 0x3f6f6ee7
+    member_id: 0x5416b892
+  }
+}
+struct_union {
+  id: 0xe6a4c2b9
+  kind: STRUCT
+  name: "bpf_verifier_state_list"
+  definition {
+    bytesize: 136
+    member_id: 0x721df9c5
+    member_id: 0x11c03125
+    member_id: 0xa02fc4ed
+    member_id: 0x2b9cdb39
+  }
+}
+struct_union {
+  id: 0x2d4a89fa
+  kind: STRUCT
+  name: "bpf_xdp_entity"
+  definition {
+    bytesize: 16
+    member_id: 0x982b4630
+    member_id: 0x55918415
+  }
+}
+struct_union {
+  id: 0x963c8142
+  kind: STRUCT
+  name: "bpf_xdp_link"
+  definition {
+    bytesize: 96
+    member_id: 0x55f9336e
+    member_id: 0xce0b4210
+    member_id: 0x2d0fa6b0
+  }
+}
+struct_union {
+  id: 0x4daa9cfd
+  kind: STRUCT
+  name: "break_hook"
+  definition {
+    bytesize: 32
+    member_id: 0x0fa6c6af
+    member_id: 0xf7ba379c
+    member_id: 0x97600508
+    member_id: 0xa8a220fd
+  }
+}
+struct_union {
+  id: 0x28d698a4
+  kind: STRUCT
+  name: "bsg_buffer"
+  definition {
+    bytesize: 16
+    member_id: 0xe2f15a6e
+    member_id: 0xb52b2515
+    member_id: 0xbf2238b4
+  }
+}
+struct_union {
+  id: 0xa5dd7147
+  kind: STRUCT
+  name: "bsg_device"
+  definition {
+    bytesize: 1080
+    member_id: 0xaddb4bcf
+    member_id: 0xea110f27
+    member_id: 0x05c9771a
+    member_id: 0xfbb3d064
+    member_id: 0x54860802
+    member_id: 0x7f845b4e
+    member_id: 0xdc445158
+  }
+}
+struct_union {
+  id: 0xc6634a90
+  kind: STRUCT
+  name: "bsg_job"
+  definition {
+    bytesize: 104
+    member_id: 0xce3bbab3
+    member_id: 0x02ce5d67
+    member_id: 0x54860832
+    member_id: 0xb6e27ad1
+    member_id: 0x72f80ba2
+    member_id: 0xc61d64c8
+    member_id: 0xa8576a87
+    member_id: 0x25b34691
+    member_id: 0x8aca07a6
+    member_id: 0x0748dce9
+    member_id: 0xc08d4bff
+    member_id: 0xe007a713
+    member_id: 0x9d3b9f4b
+    member_id: 0x0e831890
+  }
+}
+struct_union {
+  id: 0x1e327628
+  kind: STRUCT
+  name: "bt_codec"
+  definition {
+    bytesize: 7
+    member_id: 0xcc9ccb2b
+    member_id: 0x6c35f016
+    member_id: 0x20d123a7
+    member_id: 0x29ecc424
+    member_id: 0xc8ce4c5f
+  }
+}
+struct_union {
+  id: 0xff8884d8
+  kind: STRUCT
+  name: "bt_iso_io_qos"
+  definition {
+    bytesize: 12
+    member_id: 0x492194dc
+    member_id: 0x20adb1ca
+    member_id: 0xfb660fcd
+    member_id: 0xb0c0582f
+    member_id: 0x0773c715
+  }
+}
+struct_union {
+  id: 0x6c3e513c
+  kind: STRUCT
+  name: "bt_iso_qos"
+  definition {
+    bytesize: 32
+    member_id: 0x3cac7aec
+    member_id: 0x3a81b82a
+    member_id: 0x3b8dd38d
+    member_id: 0x716716c4
+    member_id: 0xcb180a4e
+    member_id: 0x5c54e5c6
+    member_id: 0xb30e5514
+  }
+}
+struct_union {
+  id: 0x7ba7fd02
+  kind: STRUCT
+  name: "bt_sock_list"
+  definition {
+    bytesize: 24
+    member_id: 0xb50434c6
+    member_id: 0x2d1868b8
+    member_id: 0x713e1116
+  }
+}
+struct_union {
+  id: 0x2e64345d
+  kind: STRUCT
+  name: "btf"
+  definition {
+    bytesize: 208
+    member_id: 0xff8a9909
+    member_id: 0xf49ecb47
+    member_id: 0x60f712a8
+    member_id: 0x5c154246
+    member_id: 0xdd8f0781
+    member_id: 0x1f8a26fb
+    member_id: 0x2bd33bea
+    member_id: 0x0ce99fa0
+    member_id: 0x8395f638
+    member_id: 0x56c02dce
+    member_id: 0xb7dcffed
+    member_id: 0xcce62687
+    member_id: 0x95dac1d9
+    member_id: 0xc7c124b9
+    member_id: 0xc5d64475
+    member_id: 0x26b2f753
+    member_id: 0x7f583c87
+    member_id: 0xc4be1509
+    member_id: 0x0dda4354
+    member_id: 0xfbf92f1f
+  }
+}
+struct_union {
+  id: 0xdff52411
+  kind: STRUCT
+  name: "btf_func_model"
+  definition {
+    bytesize: 26
+    member_id: 0xf6185381
+    member_id: 0x1cc2c5a9
+    member_id: 0xed87343a
+    member_id: 0x6581ff43
+  }
+}
+struct_union {
+  id: 0xf7276340
+  kind: STRUCT
+  name: "btf_header"
+  definition {
+    bytesize: 24
+    member_id: 0xd69bca36
+    member_id: 0xa6d2dd7e
+    member_id: 0x2ddb6585
+    member_id: 0x4fef1f8b
+    member_id: 0xc29eda83
+    member_id: 0x43a15612
+    member_id: 0x3a239577
+    member_id: 0x9fc8c673
+  }
+}
+struct_union {
+  id: 0x67969a0f
+  kind: STRUCT
+  name: "btf_id_dtor_kfunc"
+  definition {
+    bytesize: 8
+    member_id: 0xf5eb63e9
+    member_id: 0x5421482f
+  }
+}
+struct_union {
+  id: 0xf191a756
+  kind: STRUCT
+  name: "btf_id_dtor_kfunc_tab"
+  definition {
+    bytesize: 4
+    member_id: 0x823834d2
+    member_id: 0x651b018b
+  }
+}
+struct_union {
+  id: 0x120bc9eb
+  kind: STRUCT
+  name: "btf_id_set8"
+  definition {
+    bytesize: 8
+    member_id: 0x823834d2
+    member_id: 0x2da1814e
+    member_id: 0x4e37d0bb
+  }
+}
+struct_union {
+  id: 0xe56ee997
+  kind: STRUCT
+  name: "btf_kfunc_set_tab"
+  definition {
+    bytesize: 40
+    member_id: 0xc109eca1
+  }
+}
+struct_union {
+  id: 0xee7922e7
+  kind: STRUCT
+  name: "btf_mod_pair"
+  definition {
+    bytesize: 16
+    member_id: 0x0f1d715c
+    member_id: 0x965f12df
+  }
+}
+struct_union {
+  id: 0x406b135f
+  kind: STRUCT
+  name: "btf_type"
+  definition {
+    bytesize: 12
+    member_id: 0xec8ed6f4
+    member_id: 0xcdba20f0
+    member_id: 0x3be967b6
+  }
+}
+struct_union {
+  id: 0xc93d4c1c
+  kind: STRUCT
+  name: "bucket_table"
+  definition {
+    bytesize: 64
+    member_id: 0xd93b9914
+    member_id: 0x98c745aa
+    member_id: 0x8d38ad20
+    member_id: 0x58081e19
+    member_id: 0x95dac9dc
+    member_id: 0x5e8abd79
+    member_id: 0xca5e372d
+    member_id: 0xffc2a703
+  }
+}
+struct_union {
+  id: 0xe7d6e0bf
+  kind: STRUCT
+  name: "buffer_data_page"
+  definition {
+    bytesize: 16
+    member_id: 0xd1aa9450
+    member_id: 0xcdd8319a
+    member_id: 0xff417475
+  }
+}
+struct_union {
+  id: 0x4f9f7373
+  kind: STRUCT
+  name: "buffer_head"
+  definition {
+    bytesize: 104
+    member_id: 0x367bb6e9
+    member_id: 0x0a989be5
+    member_id: 0x1ac12dfc
+    member_id: 0x826708f1
+    member_id: 0x1a41bbef
+    member_id: 0xae00129e
+    member_id: 0x9cc802bc
+    member_id: 0x1fe9d8c7
+    member_id: 0x2e6929bb
+    member_id: 0x4ac7ce86
+    member_id: 0x625b4aeb
+    member_id: 0x6aa843fc
+    member_id: 0x4c017f4b
+  }
+}
+struct_union {
+  id: 0xe4a2d212
+  kind: STRUCT
+  name: "buffer_page"
+  definition {
+    bytesize: 56
+    member_id: 0x7c00ef52
+    member_id: 0x34294171
+    member_id: 0x4818d22b
+    member_id: 0xbe54c52f
+    member_id: 0xf198fa32
+    member_id: 0x3236b7b2
+  }
+}
+struct_union {
+  id: 0xd37226bc
+  kind: STRUCT
+  name: "bug_entry"
+  definition {
+    bytesize: 12
+    member_id: 0x12dac63c
+    member_id: 0x0b76bc4b
+    member_id: 0xddf384ee
+    member_id: 0x2da1bec3
+  }
+}
+struct_union {
+  id: 0xdac705ca
+  kind: STRUCT
+  name: "bus_dma_region"
+  definition {
+    bytesize: 32
+    member_id: 0x90ec0ff1
+    member_id: 0xc2724877
+    member_id: 0xd9ec3683
+    member_id: 0x9b8ef73e
+  }
+}
+struct_union {
+  id: 0x257935aa
+  kind: STRUCT
+  name: "bus_type"
+  definition {
+    bytesize: 216
+    member_id: 0x0de57ce8
+    member_id: 0x863c4412
+    member_id: 0xa17af2d0
+    member_id: 0x8fc5419b
+    member_id: 0xf9546bf2
+    member_id: 0x4a516b32
+    member_id: 0xe60eec02
+    member_id: 0x93b05884
+    member_id: 0xd77bdda1
+    member_id: 0x2ae2f8e5
+    member_id: 0xb4ad4561
+    member_id: 0x9efba1b8
+    member_id: 0x7d6fca14
+    member_id: 0x88730b3b
+    member_id: 0xf397f906
+    member_id: 0xcab23d11
+    member_id: 0x494d7324
+    member_id: 0x1a139152
+    member_id: 0xf2ef2bc4
+    member_id: 0x0578db45
+    member_id: 0x4efcd743
+    member_id: 0xa68c3894
+    member_id: 0x5f5e6687
+    member_id: 0x729bc36c
+    member_id: 0x2d081262
+    member_id: 0x63760345
+    member_id: 0xac8940ee
+    member_id: 0xe0f63767
+  }
+}
+struct_union {
+  id: 0xe990f1ec
+  kind: STRUCT
+  name: "bvec_iter"
+  definition {
+    bytesize: 20
+    member_id: 0x5f475873
+    member_id: 0x42ae5812
+    member_id: 0x16ee5b0d
+    member_id: 0x00e14f72
+  }
+}
+struct_union {
+  id: 0xadc524dd
+  kind: STRUCT
+  name: "cacheline_padding"
+  definition {
+    member_id: 0xa0784187
+  }
+}
+struct_union {
+  id: 0xe3222f5b
+  kind: STRUCT
+  name: "callback_head"
+  definition {
+    bytesize: 16
+    member_id: 0x11c1586d
+    member_id: 0x210246f1
+  }
+}
+struct_union {
+  id: 0xfab6f766
+  kind: STRUCT
+  name: "can_berr_counter"
+  definition {
+    bytesize: 4
+    member_id: 0xad625ddb
+    member_id: 0x9f2b2dbe
+  }
+}
+struct_union {
+  id: 0xdf09259e
+  kind: STRUCT
+  name: "can_bittiming"
+  definition {
+    bytesize: 32
+    member_id: 0xd0db6359
+    member_id: 0x811c40ff
+    member_id: 0x14f2c5a7
+    member_id: 0x17154509
+    member_id: 0x2470a8c5
+    member_id: 0xffbf84cd
+    member_id: 0xb091a204
+    member_id: 0xf538f29b
+  }
+}
+struct_union {
+  id: 0xff9bf2eb
+  kind: STRUCT
+  name: "can_bittiming_const"
+  definition {
+    bytesize: 48
+    member_id: 0x0d994c40
+    member_id: 0x982a9478
+    member_id: 0x0ac38887
+    member_id: 0xca7fce62
+    member_id: 0x79a6c720
+    member_id: 0xb51ca4d7
+    member_id: 0x3049f064
+    member_id: 0xf8afa3d7
+    member_id: 0x6859ba1a
+  }
+}
+struct_union {
+  id: 0x74a21f82
+  kind: STRUCT
+  name: "can_clock"
+  definition {
+    bytesize: 4
+    member_id: 0xef40703d
+  }
+}
+struct_union {
+  id: 0x4bcf518b
+  kind: STRUCT
+  name: "can_dev_rcv_lists"
+  definition {
+    bytesize: 24616
+    member_id: 0x6c6ba998
+    member_id: 0x69a75d5c
+    member_id: 0x4c2dbf47
+    member_id: 0xbe1a7a32
+  }
+}
+struct_union {
+  id: 0x3ae16b59
+  kind: STRUCT
+  name: "can_device_stats"
+  definition {
+    bytesize: 24
+    member_id: 0xc44b5a83
+    member_id: 0xa0f4e125
+    member_id: 0xfa96bf5e
+    member_id: 0x70428740
+    member_id: 0xa86038b6
+    member_id: 0x958dcd21
+  }
+}
+struct_union {
+  id: 0x7f05349f
+  kind: STRUCT
+  name: "can_frame"
+  definition {
+    bytesize: 16
+    member_id: 0x6dcf9091
+    member_id: 0x3df96135
+    member_id: 0xe54b97ac
+    member_id: 0x2574fc12
+    member_id: 0xecd18446
+    member_id: 0xff5ae7eb
+  }
+}
+struct_union {
+  id: 0xda0ade0d
+  kind: STRUCT
+  name: "can_pkg_stats"
+  definition {
+    bytesize: 128
+    member_id: 0x3c052c89
+    member_id: 0xc2852fef
+    member_id: 0x13091341
+    member_id: 0xa0122c22
+    member_id: 0xe9318874
+    member_id: 0x3b947ceb
+    member_id: 0x80674f84
+    member_id: 0x3cc3ba53
+    member_id: 0xc9222b6b
+    member_id: 0xaa3ffd87
+    member_id: 0x100444ef
+    member_id: 0x43cb0800
+    member_id: 0xb632066d
+    member_id: 0xa87a1b62
+    member_id: 0xea5ef0ed
+    member_id: 0xff2c408e
+  }
+}
+struct_union {
+  id: 0x3d723eb2
+  kind: STRUCT
+  name: "can_priv"
+  definition {
+    bytesize: 416
+    member_id: 0xce0b4469
+    member_id: 0xe2943e8a
+    member_id: 0xcd84911e
+    member_id: 0x7db8ba3a
+    member_id: 0xfea0d43f
+    member_id: 0x63a17343
+    member_id: 0x7649cc70
+    member_id: 0xea173d2f
+    member_id: 0xe5caf77e
+    member_id: 0x9bfbfeec
+    member_id: 0xb0f5d0b4
+    member_id: 0x63e22c0f
+    member_id: 0x8ff2bc27
+    member_id: 0x45baa7d0
+    member_id: 0xa9931640
+    member_id: 0x3ffa63b7
+    member_id: 0xb8e8d9b9
+    member_id: 0xef3809df
+    member_id: 0x9d8998dd
+    member_id: 0xba5eee7f
+    member_id: 0xda31464b
+    member_id: 0x72c9a3c6
+    member_id: 0x61324db4
+    member_id: 0x3c4f4cd1
+    member_id: 0x1eca4272
+    member_id: 0x069bde37
+    member_id: 0xa24f66d2
+    member_id: 0x5206dada
+    member_id: 0x1e5896e2
+    member_id: 0x34e27298
+    member_id: 0x250fe094
+    member_id: 0x23961113
+    member_id: 0x3b3e3bcb
+  }
+}
+struct_union {
+  id: 0x47a585e3
+  kind: STRUCT
+  name: "can_proto"
+  definition {
+    bytesize: 24
+    member_id: 0x5c31f5ad
+    member_id: 0xdcb863d8
+    member_id: 0xafbe447e
+    member_id: 0xd4fb96f5
+  }
+}
+struct_union {
+  id: 0x4910a95a
+  kind: STRUCT
+  name: "can_rcv_lists_stats"
+  definition {
+    bytesize: 32
+    member_id: 0xefd5a504
+    member_id: 0x7d1ff5bc
+    member_id: 0xb8f1ce8a
+    member_id: 0x5ba29d36
+  }
+}
+struct_union {
+  id: 0xd67f2058
+  kind: STRUCT
+  name: "can_rx_offload"
+  definition {
+    bytesize: 520
+    member_id: 0xce0b4469
+    member_id: 0x35af48e1
+    member_id: 0xd8ba29d3
+    member_id: 0x85e086c4
+    member_id: 0x223a3493
+    member_id: 0xda66f993
+    member_id: 0xae3b446d
+    member_id: 0x1e5ec504
+    member_id: 0x3d3bc9d2
+  }
+}
+struct_union {
+  id: 0x4ded125a
+  kind: STRUCT
+  name: "can_tdc"
+  definition {
+    bytesize: 12
+    member_id: 0xbb05dbb5
+    member_id: 0x4d1e2e46
+    member_id: 0xacdaa778
+  }
+}
+struct_union {
+  id: 0x5d2c67ec
+  kind: STRUCT
+  name: "can_tdc_const"
+  definition {
+    bytesize: 24
+    member_id: 0x8c1427c2
+    member_id: 0x23fd8f72
+    member_id: 0x93564ea2
+    member_id: 0x1557e955
+    member_id: 0x74b8d5ec
+    member_id: 0xf0e59bf5
+  }
+}
+struct_union {
+  id: 0xa9cb5358
+  kind: STRUCT
+  name: "canfd_frame"
+  definition {
+    bytesize: 72
+    member_id: 0x6dcf9091
+    member_id: 0xb8b63fd7
+    member_id: 0x2ddb61b6
+    member_id: 0x2574fc12
+    member_id: 0x4d351f5a
+    member_id: 0xff8d7264
+  }
+}
+struct_union {
+  id: 0x75c4b71d
+  kind: STRUCT
+  name: "canxl_frame"
+  definition {
+    bytesize: 2060
+    member_id: 0xa9bd3464
+    member_id: 0x2ddb6edf
+    member_id: 0xbf7d6196
+    member_id: 0xb8eddad7
+    member_id: 0x5b7ffe05
+    member_id: 0xff3c606a
+  }
+}
+struct_union {
+  id: 0x438f48df
+  kind: STRUCT
+  name: "capture_control"
+  definition {
+    bytesize: 16
+    member_id: 0x92bd71a0
+    member_id: 0x3203541e
+  }
+}
+struct_union {
+  id: 0x5f766fc6
+  kind: STRUCT
+  name: "cdev"
+  definition {
+    bytesize: 136
+    member_id: 0x452b206c
+    member_id: 0x4a965afe
+    member_id: 0xafbdd229
+    member_id: 0x7c00e5f4
+    member_id: 0xced2ea38
+    member_id: 0x6560d383
+  }
+}
+struct_union {
+  id: 0xfa7168f4
+  kind: STRUCT
+  name: "cea_sad"
+  definition {
+    bytesize: 4
+    member_id: 0x087e0fdc
+    member_id: 0xea6e03f4
+    member_id: 0xef8f0c4e
+    member_id: 0x0e298959
+  }
+}
+struct_union {
+  id: 0x91c603b0
+  kind: STRUCT
+  name: "cec_adap_ops"
+  definition {
+    bytesize: 88
+    member_id: 0xdb0b437c
+    member_id: 0x957125b1
+    member_id: 0x6530995c
+    member_id: 0x6fa8f57f
+    member_id: 0x89f78068
+    member_id: 0xeea0fd9b
+    member_id: 0xbbe6fd95
+    member_id: 0x9deaadb0
+    member_id: 0xf2d90fb4
+    member_id: 0xb5c607a8
+    member_id: 0x1763503d
+  }
+}
+struct_union {
+  id: 0xca5802b6
+  kind: STRUCT
+  name: "cec_adapter"
+  definition {
+    bytesize: 1696
+    member_id: 0x4a965250
+    member_id: 0x0d81b7eb
+    member_id: 0x1efe8efb
+    member_id: 0x2d4b3011
+    member_id: 0xb7b3706d
+    member_id: 0xdef8a927
+    member_id: 0x1c87c5df
+    member_id: 0xcc1757b3
+    member_id: 0x45be24a0
+    member_id: 0xee11e17d
+    member_id: 0xaec126f7
+    member_id: 0x14a81932
+    member_id: 0xe0ce5e11
+    member_id: 0xe3ba0596
+    member_id: 0x02bd720c
+    member_id: 0x2dbdf6a0
+    member_id: 0xafbf8b61
+    member_id: 0x59119f28
+    member_id: 0xa75106a9
+    member_id: 0xec2cf306
+    member_id: 0xbddabbe4
+    member_id: 0x9363e061
+    member_id: 0x77ea29b4
+    member_id: 0x6c8b318a
+    member_id: 0xca44ced6
+    member_id: 0xb46f92c4
+    member_id: 0x11ac4459
+    member_id: 0x142a1f06
+    member_id: 0x79bc2888
+    member_id: 0xc2cad849
+    member_id: 0xb1c41efc
+    member_id: 0x0067008e
+    member_id: 0xa5ba605a
+    member_id: 0x74cab7b3
+    member_id: 0x38662307
+    member_id: 0x43937a29
+    member_id: 0xde3f53d2
+    member_id: 0xd96a1925
+    member_id: 0x37e4f5b8
+    member_id: 0xb81b89fb
+    member_id: 0x0019e3db
+    member_id: 0x004765ae
+    member_id: 0xd35d43fd
+  }
+}
+struct_union {
+  id: 0xfd4f9284
+  kind: STRUCT
+  name: "cec_connector_info"
+  definition {
+    bytesize: 68
+    member_id: 0x5cb0fbc1
+    member_id: 0x3f5111eb
+  }
+}
+struct_union {
+  id: 0x129894ec
+  kind: STRUCT
+  name: "cec_data"
+  definition {
+    bytesize: 280
+    member_id: 0x7c00ef52
+    member_id: 0xa4fac842
+    member_id: 0x0772676d
+    member_id: 0xe2743793
+    member_id: 0x4e1d61e4
+    member_id: 0xd6084d17
+    member_id: 0x0f677643
+    member_id: 0x6b2d7853
+    member_id: 0x8e01950d
+    member_id: 0x8c5096f3
+  }
+}
+struct_union {
+  id: 0x5ed33f2f
+  kind: STRUCT
+  name: "cec_devnode"
+  definition {
+    bytesize: 1176
+    member_id: 0xce1ac149
+    member_id: 0x05c97cd1
+    member_id: 0xc840290d
+    member_id: 0x2d4b353f
+    member_id: 0x5137228d
+    member_id: 0x7c7ba3a5
+    member_id: 0x5e3ceadf
+    member_id: 0x3086ecf9
+  }
+}
+struct_union {
+  id: 0x588cbbed
+  kind: STRUCT
+  name: "cec_drm_connector_info"
+  definition {
+    bytesize: 8
+    member_id: 0xe666c75f
+    member_id: 0x74803303
+  }
+}
+struct_union {
+  id: 0xe86c4e97
+  kind: STRUCT
+  name: "cec_event"
+  definition {
+    bytesize: 80
+    member_id: 0x9579c452
+    member_id: 0x0aa9ca3e
+    member_id: 0x2d8ea362
+    member_id: 0x330ec5e1
+  }
+}
+struct_union {
+  id: 0xe2879445
+  kind: STRUCT
+  name: "cec_event_entry"
+  definition {
+    bytesize: 96
+    member_id: 0x7c00ef52
+    member_id: 0x39c8d546
+  }
+}
+struct_union {
+  id: 0x6f3d464c
+  kind: STRUCT
+  name: "cec_event_lost_msgs"
+  definition {
+    bytesize: 4
+    member_id: 0x5109560d
+  }
+}
+struct_union {
+  id: 0x843423e5
+  kind: STRUCT
+  name: "cec_event_state_change"
+  definition {
+    bytesize: 6
+    member_id: 0xbda3f6f6
+    member_id: 0x1388e846
+    member_id: 0x830e03a6
+  }
+}
+struct_union {
+  id: 0x367e2831
+  kind: STRUCT
+  name: "cec_fh"
+  definition {
+    bytesize: 488
+    member_id: 0x7c00ef52
+    member_id: 0xa4fac842
+    member_id: 0x0772676d
+    member_id: 0x0d8b5e63
+    member_id: 0x4d5b509d
+    member_id: 0x202d9600
+    member_id: 0x2d4b3572
+    member_id: 0x112579ab
+    member_id: 0x699426dc
+    member_id: 0x19d7c3bf
+    member_id: 0xa04aea8b
+    member_id: 0x58674a74
+    member_id: 0x87768fc5
+  }
+}
+struct_union {
+  id: 0x669bdfd1
+  kind: STRUCT
+  name: "cec_log_addrs"
+  definition {
+    bytesize: 92
+    member_id: 0x1059beb4
+    member_id: 0x1388ebc3
+    member_id: 0x3d4e8b76
+    member_id: 0x939808f7
+    member_id: 0x0baf8433
+    member_id: 0x2d8ea362
+    member_id: 0x8c00951a
+    member_id: 0x61981f38
+    member_id: 0x323c5d87
+    member_id: 0x25e1f497
+    member_id: 0xc5bc078c
+  }
+}
+struct_union {
+  id: 0x74026623
+  kind: STRUCT
+  name: "cec_msg"
+  definition {
+    bytesize: 56
+    member_id: 0x3a7a89bc
+    member_id: 0x3d23854e
+    member_id: 0xb8e3f22b
+    member_id: 0x5425a788
+    member_id: 0x00684f89
+    member_id: 0x2d8ea9c5
+    member_id: 0xe260f8b5
+    member_id: 0x72535826
+    member_id: 0x68e158a5
+    member_id: 0x0c440955
+    member_id: 0x961fcb98
+    member_id: 0x453e3488
+    member_id: 0x7ebca209
+    member_id: 0x4164b293
+  }
+}
+struct_union {
+  id: 0x776bdb5b
+  kind: STRUCT
+  name: "cec_notifier"
+  definition {
+    bytesize: 176
+    member_id: 0x2d4b3c00
+    member_id: 0xb5897092
+    member_id: 0x02ce529e
+    member_id: 0x596a1b85
+    member_id: 0xde3f5a21
+    member_id: 0xecc1f040
+    member_id: 0x162d054b
+    member_id: 0xbddab28a
+  }
+}
+struct_union {
+  id: 0x6ce6931b
+  kind: STRUCT
+  name: "cec_pin"
+  definition {
+    bytesize: 1648
+    member_id: 0x077267c6
+    member_id: 0xafb54acd
+    member_id: 0x02bd754c
+    member_id: 0x2dbdf50d
+    member_id: 0x1dce6f1c
+    member_id: 0x9585fad2
+    member_id: 0x67f7c1cd
+    member_id: 0xbe79d648
+    member_id: 0xba20c145
+    member_id: 0x86273642
+    member_id: 0xfc790fc5
+    member_id: 0x7273f6d1
+    member_id: 0x962013d6
+    member_id: 0x5249d0b7
+    member_id: 0xc7808745
+    member_id: 0xc66ecf47
+    member_id: 0x5343bc40
+    member_id: 0x8cbbfff6
+    member_id: 0x423d5d15
+    member_id: 0x7d27969c
+    member_id: 0x15ec0ef9
+    member_id: 0xbb3ae9e5
+    member_id: 0x457f64a6
+    member_id: 0xb3773230
+    member_id: 0x31cb7246
+    member_id: 0x60007f41
+    member_id: 0xcfe0d789
+    member_id: 0x1f1d801b
+    member_id: 0xa3c8477f
+    member_id: 0x59321bfb
+    member_id: 0xfd6ba007
+    member_id: 0xc87272b4
+    member_id: 0x4f32f567
+    member_id: 0x2dbda5b7
+    member_id: 0xe97edad9
+    member_id: 0x44ded5a9
+    member_id: 0xeccbdbcb
+    member_id: 0x4dc1b204
+    member_id: 0x405a2437
+    member_id: 0x9156b995
+    member_id: 0xc6ae05bc
+    member_id: 0xc5d631a8
+    member_id: 0xbcf5d290
+    member_id: 0x38d4fdeb
+    member_id: 0x7eaf1789
+    member_id: 0x4d647b83
+    member_id: 0xdc9c94e0
+    member_id: 0x7b03049f
+    member_id: 0x36818505
+    member_id: 0x308f17c1
+    member_id: 0x54a31621
+    member_id: 0xd901a640
+    member_id: 0x481721bf
+    member_id: 0x841d85c4
+    member_id: 0x8953cf27
+    member_id: 0xfd70bd80
+    member_id: 0x7ec64336
+  }
+}
+struct_union {
+  id: 0x3dacd33f
+  kind: STRUCT
+  name: "cec_pin_ops"
+  definition {
+    bytesize: 80
+    member_id: 0x48732fe6
+    member_id: 0xe4b5307c
+    member_id: 0x85d85e36
+    member_id: 0xb6a04911
+    member_id: 0x2d406285
+    member_id: 0xfeaf395a
+    member_id: 0x206a163d
+    member_id: 0x7dabb508
+    member_id: 0xe188c982
+    member_id: 0x17635f36
+  }
+}
+struct_union {
+  id: 0xacf97a1b
+  kind: STRUCT
+  name: "cfg80211_bss_select_adjust"
+  definition {
+    bytesize: 8
+    member_id: 0x398cdb31
+    member_id: 0xe5d13e49
+  }
+}
+struct_union {
+  id: 0x46059ba5
+  kind: STRUCT
+  name: "cfg80211_cached_keys"
+}
+struct_union {
+  id: 0x83d65a6a
+  kind: STRUCT
+  name: "cfg80211_chan_def"
+  definition {
+    bytesize: 32
+    member_id: 0x46a8c46b
+    member_id: 0x0a41b258
+    member_id: 0xc47918dd
+    member_id: 0x82b47f0c
+    member_id: 0x61c1eafd
+    member_id: 0xe2fe06f5
+  }
+}
+struct_union {
+  id: 0xd1a0c350
+  kind: STRUCT
+  name: "cfg80211_conn"
+}
+struct_union {
+  id: 0xb65b96b8
+  kind: STRUCT
+  name: "cfg80211_cqm_config"
+}
+struct_union {
+  id: 0xf37b155d
+  kind: STRUCT
+  name: "cfg80211_internal_bss"
+}
+struct_union {
+  id: 0x551d0131
+  kind: STRUCT
+  name: "cfg80211_match_set"
+  definition {
+    bytesize: 68
+    member_id: 0xb0f70111
+    member_id: 0xb67a7308
+    member_id: 0xfb03d510
+    member_id: 0x528e9321
+  }
+}
+struct_union {
+  id: 0x39817cf5
+  kind: STRUCT
+  name: "cfg80211_pkt_pattern"
+  definition {
+    bytesize: 24
+    member_id: 0xa80c68a8
+    member_id: 0x9b346739
+    member_id: 0xe58f0084
+    member_id: 0xa971f923
+  }
+}
+struct_union {
+  id: 0xae570e1f
+  kind: STRUCT
+  name: "cfg80211_pmsr_capabilities"
+  definition {
+    bytesize: 20
+    member_id: 0xa2079023
+    member_id: 0xd0052656
+    member_id: 0x05204fcf
+    member_id: 0xa761a3f4
+  }
+}
+struct_union {
+  id: 0xd659846e
+  kind: STRUCT
+  name: "cfg80211_sar_capa"
+  definition {
+    bytesize: 16
+    member_id: 0x5cef5f95
+    member_id: 0xcd8ae48b
+    member_id: 0x10ac6500
+  }
+}
+struct_union {
+  id: 0xc062b862
+  kind: STRUCT
+  name: "cfg80211_sar_freq_ranges"
+  definition {
+    bytesize: 8
+    member_id: 0x6895e717
+    member_id: 0x6ce73117
+  }
+}
+struct_union {
+  id: 0x952e23d9
+  kind: STRUCT
+  name: "cfg80211_sched_scan_plan"
+  definition {
+    bytesize: 8
+    member_id: 0x490eb248
+    member_id: 0x1080dfb6
+  }
+}
+struct_union {
+  id: 0x151f9269
+  kind: STRUCT
+  name: "cfg80211_sched_scan_request"
+  definition {
+    bytesize: 200
+    member_id: 0xfdd689f8
+    member_id: 0x38a3ecd7
+    member_id: 0x998218ab
+    member_id: 0x65a9aa0f
+    member_id: 0xc741085d
+    member_id: 0x0cd144cb
+    member_id: 0x96459de0
+    member_id: 0x2da18de7
+    member_id: 0x43973fdd
+    member_id: 0x8369d793
+    member_id: 0xe0731474
+    member_id: 0x84f3a492
+    member_id: 0x0112ef01
+    member_id: 0xfc7caf17
+    member_id: 0x888b9372
+    member_id: 0x3258f8d3
+    member_id: 0x01e1653f
+    member_id: 0x4506118c
+    member_id: 0x9e45ccd9
+    member_id: 0x3f0fa7dd
+    member_id: 0xce0b4376
+    member_id: 0x71ed37ee
+    member_id: 0x1ddb5831
+    member_id: 0x56a72498
+    member_id: 0xf93cf5f3
+    member_id: 0xa221fb65
+    member_id: 0x7c00eda1
+    member_id: 0x2d081fd6
+    member_id: 0xea89b247
+  }
+}
+struct_union {
+  id: 0xb03bc640
+  kind: STRUCT
+  name: "cfg80211_ssid"
+  definition {
+    bytesize: 33
+    member_id: 0xb019a143
+    member_id: 0x649e2a5f
+  }
+}
+struct_union {
+  id: 0x5412580f
+  kind: STRUCT
+  name: "cfg80211_wowlan"
+  definition {
+    bytesize: 40
+    member_id: 0xae7e6b61
+    member_id: 0x8dc6c476
+    member_id: 0xb9b0ac1f
+    member_id: 0x92d68ed9
+    member_id: 0x3b34869d
+    member_id: 0x62553b7d
+    member_id: 0x6ba9654a
+    member_id: 0xce5a8db0
+    member_id: 0xb0e242a5
+    member_id: 0xf39ebfcb
+    member_id: 0x72be2bc5
+  }
+}
+struct_union {
+  id: 0x5c194cde
+  kind: STRUCT
+  name: "cfg80211_wowlan_tcp"
+  definition {
+    bytesize: 96
+    member_id: 0x7614ca61
+    member_id: 0x44d41849
+    member_id: 0xbb13d60c
+    member_id: 0x1ff59df3
+    member_id: 0xe56eac1e
+    member_id: 0xdc8951b9
+    member_id: 0xe2d3fcff
+    member_id: 0xa7511582
+    member_id: 0x2994b7db
+    member_id: 0x4a1ef3b4
+    member_id: 0x478711c2
+    member_id: 0x1373472c
+    member_id: 0xa0d6dba2
+    member_id: 0x68925b30
+    member_id: 0x369464a5
+  }
+}
+struct_union {
+  id: 0xb443a6f5
+  kind: STRUCT
+  name: "cfg802154_ops"
+  definition {
+    bytesize: 136
+    member_id: 0xdcc4bf94
+    member_id: 0xbb26f436
+    member_id: 0xf395b58d
+    member_id: 0xcab082d3
+    member_id: 0xe8d5235e
+    member_id: 0x5e0e77ed
+    member_id: 0x046a4ebb
+    member_id: 0x9c8d8768
+    member_id: 0x276a1c5c
+    member_id: 0x9c730b5b
+    member_id: 0x7887751f
+    member_id: 0x16a88eaa
+    member_id: 0xe052965e
+    member_id: 0x2e8f5455
+    member_id: 0x4e347088
+    member_id: 0xcb4b42d6
+    member_id: 0x8fd22bb3
+  }
+}
+struct_union {
+  id: 0xed44dd85
+  kind: STRUCT
+  name: "cfs_bandwidth"
+  definition {
+  }
+}
+struct_union {
+  id: 0x11205055
+  kind: STRUCT
+  name: "cfs_rq"
+  definition {
+    bytesize: 384
+    member_id: 0x0e290c33
+    member_id: 0xd63677cb
+    member_id: 0xd105c10a
+    member_id: 0x0df87d40
+    member_id: 0xafe870ea
+    member_id: 0xf4cecd5d
+    member_id: 0x63fbebde
+    member_id: 0x197cb371
+    member_id: 0x8ddd7638
+    member_id: 0x11fb2249
+    member_id: 0x2667209c
+    member_id: 0x62a4551b
+    member_id: 0x47396359
+    member_id: 0x0f961bee
+    member_id: 0x0aed277d
+    member_id: 0xdf0c791e
+    member_id: 0x930ee7c9
+    member_id: 0x2b3bb4ec
+    member_id: 0x031118bb
+    member_id: 0x89791ec8
+    member_id: 0x6b5f394b
+    member_id: 0x0d1ed539
+    member_id: 0x8ddcd1f3
+    member_id: 0xde3c5861
+    member_id: 0x86b8ddbd
+    member_id: 0x5762e1d3
+  }
+}
+struct_union {
+  id: 0x44e4edff
+  kind: STRUCT
+  name: "cftype"
+  definition {
+    bytesize: 216
+    member_id: 0x0de6d485
+    member_id: 0x9152a5aa
+    member_id: 0x7c0255c0
+    member_id: 0x2d2d0741
+    member_id: 0x7ee39acb
+    member_id: 0x8c8649b8
+    member_id: 0x0fa6ce01
+    member_id: 0x515e1a2c
+    member_id: 0xad9a83f6
+    member_id: 0xae95b968
+    member_id: 0xacad1dbb
+    member_id: 0x5aa04b7a
+    member_id: 0xc9fbb7d7
+    member_id: 0xcdfa8454
+    member_id: 0x98c64a9a
+    member_id: 0xbfa43520
+    member_id: 0x348a7553
+    member_id: 0xbf955a93
+    member_id: 0x340c802d
+    member_id: 0x5e14c7e2
+  }
+}
+struct_union {
+  id: 0x48c57cd9
+  kind: STRUCT
+  name: "cgroup"
+  definition {
+    bytesize: 1680
+    member_id: 0x3c63ba84
+    member_id: 0x2d5bfa27
+    member_id: 0x86ddee1f
+    member_id: 0xcceb4c50
+    member_id: 0xccaa0d48
+    member_id: 0x4fae811e
+    member_id: 0x5f148ea6
+    member_id: 0xbd02ecd8
+    member_id: 0x28329994
+    member_id: 0xc0c2a3ce
+    member_id: 0x2bf6b9ba
+    member_id: 0x5bb2a4ff
+    member_id: 0xc13a1c16
+    member_id: 0x1e5cec94
+    member_id: 0x93480a7d
+    member_id: 0xe0e3bcf4
+    member_id: 0xdcec01d0
+    member_id: 0x4eb03045
+    member_id: 0xce81a821
+    member_id: 0x9ac0c50d
+    member_id: 0x93eb7f65
+    member_id: 0xe75628b7
+    member_id: 0x2fcdcf1b
+    member_id: 0x626dace8
+    member_id: 0x2e2c4ea9
+    member_id: 0xf5afd1fc
+    member_id: 0xe9941ee8
+    member_id: 0x191711ef
+    member_id: 0xe303a4bc
+    member_id: 0x7ec9d6bf
+    member_id: 0xd93325ed
+    member_id: 0xba18a4ca
+    member_id: 0x21ad6eed
+    member_id: 0x4bfd1e09
+    member_id: 0xe181c27d
+    member_id: 0x68223da1
+    member_id: 0x0d45cf4f
+    member_id: 0x144e1540
+    member_id: 0xd29087ca
+  }
+}
+struct_union {
+  id: 0x20b780d8
+  kind: STRUCT
+  name: "cgroup_base_stat"
+  definition {
+    bytesize: 24
+    member_id: 0x431ecfd7
+  }
+}
+struct_union {
+  id: 0x535f1f9f
+  kind: STRUCT
+  name: "cgroup_bpf"
+  definition {
+    bytesize: 480
+    member_id: 0x319cfbc2
+    member_id: 0x5c28bc2f
+    member_id: 0x2dd0356f
+    member_id: 0x4edbbede
+    member_id: 0x28c1330f
+    member_id: 0xb7459d2b
+    member_id: 0x7ae460ab
+  }
+}
+struct_union {
+  id: 0x0ee0f933
+  kind: STRUCT
+  name: "cgroup_file"
+  definition {
+    bytesize: 72
+    member_id: 0x5bb2ad0c
+    member_id: 0xf41aac94
+    member_id: 0x5c35590f
+  }
+}
+struct_union {
+  id: 0x8eaee9d1
+  kind: STRUCT
+  name: "cgroup_freezer_state"
+  definition {
+    bytesize: 16
+    member_id: 0x2c8c74b5
+    member_id: 0xf9e27450
+    member_id: 0xb0af57e0
+    member_id: 0xea724160
+  }
+}
+struct_union {
+  id: 0x74e43e85
+  kind: STRUCT
+  name: "cgroup_namespace"
+  definition {
+    bytesize: 48
+    member_id: 0x91129d25
+    member_id: 0xde4b742d
+    member_id: 0x9f3016c8
+    member_id: 0x83c4175b
+  }
+}
+struct_union {
+  id: 0xfb056e34
+  kind: STRUCT
+  name: "cgroup_root"
+  definition {
+    bytesize: 5896
+    member_id: 0x9b6253c2
+    member_id: 0x739df3bb
+    member_id: 0x343bd385
+    member_id: 0x0ddc7cde
+    member_id: 0xe18161de
+    member_id: 0x4bc9649f
+    member_id: 0x4f95f889
+    member_id: 0x2d2d0822
+    member_id: 0xe8e1b292
+    member_id: 0x0de6d8a5
+  }
+}
+struct_union {
+  id: 0x7940f53b
+  kind: STRUCT
+  name: "cgroup_rstat_cpu"
+  definition {
+    bytesize: 64
+    member_id: 0x275b0c1e
+    member_id: 0xe303a272
+    member_id: 0x19171723
+    member_id: 0x74c86158
+    member_id: 0x28b8dba0
+  }
+}
+struct_union {
+  id: 0x00571446
+  kind: STRUCT
+  name: "cgroup_subsys"
+  definition {
+    bytesize: 240
+    member_id: 0x8fda1585
+    member_id: 0x73d091b6
+    member_id: 0xa551f332
+    member_id: 0x58fdf145
+    member_id: 0xbef36963
+    member_id: 0x64a8c6fd
+    member_id: 0x9812b386
+    member_id: 0x0c29757e
+    member_id: 0x0ed07ce2
+    member_id: 0x76799615
+    member_id: 0x96388e5d
+    member_id: 0x8ba529c6
+    member_id: 0xe570259b
+    member_id: 0x747c1f7c
+    member_id: 0x8063b31a
+    member_id: 0x0d2f6890
+    member_id: 0xae979233
+    member_id: 0x6d322220
+    member_id: 0xdaa08699
+    member_id: 0xa429dfbf
+    member_id: 0x2a1ff9d0
+    member_id: 0xcc480e69
+    member_id: 0x0de57e2c
+    member_id: 0x36bf9c83
+    member_id: 0x93eb7345
+    member_id: 0x422f5d56
+    member_id: 0x4b7ae416
+    member_id: 0x882d2165
+    member_id: 0xa7a26894
+    member_id: 0x18a77240
+  }
+}
+struct_union {
+  id: 0x861be646
+  kind: STRUCT
+  name: "cgroup_subsys_state"
+  definition {
+    bytesize: 232
+    member_id: 0x6db4695a
+    member_id: 0x8c864f64
+    member_id: 0xb74593a9
+    member_id: 0xee31bbdb
+    member_id: 0x25795fdd
+    member_id: 0x80396213
+    member_id: 0xcc480a3b
+    member_id: 0x2d2d0679
+    member_id: 0x5ccc7348
+    member_id: 0xdab8e121
+    member_id: 0x83803681
+    member_id: 0x74edecc6
+    member_id: 0x721a6249
+  }
+}
+struct_union {
+  id: 0xcf3a8d16
+  kind: STRUCT
+  name: "cgroup_taskset"
+  definition {
+    bytesize: 64
+    member_id: 0x1eade31c
+    member_id: 0x24a0666b
+    member_id: 0xe321d910
+    member_id: 0xb0201edd
+    member_id: 0xf69ec4bf
+    member_id: 0x07e7872a
+    member_id: 0x47642b4f
+  }
+}
+struct_union {
+  id: 0x6e9ab2f8
+  kind: STRUCT
+  name: "cipher_alg"
+  definition {
+    bytesize: 32
+    member_id: 0xb6ab8a37
+    member_id: 0x732d77f8
+    member_id: 0xc31f7053
+    member_id: 0x7c36c1c8
+    member_id: 0xa2988a51
+  }
+}
+struct_union {
+  id: 0xf0e7e9e3
+  kind: STRUCT
+  name: "circ_buf"
+  definition {
+    bytesize: 16
+    member_id: 0x9a1f433c
+    member_id: 0xb53d9d33
+    member_id: 0xeefa89a9
+  }
+}
+struct_union {
+  id: 0x83714889
+  kind: STRUCT
+  name: "class"
+  definition {
+    bytesize: 152
+    member_id: 0x0de57ce8
+    member_id: 0x4a9656b1
+    member_id: 0xc36c86d7
+    member_id: 0xf9546390
+    member_id: 0x34b4b616
+    member_id: 0x4edf8b8d
+    member_id: 0x1ea56fa3
+    member_id: 0xff51833e
+    member_id: 0xbf524a4a
+    member_id: 0x2190c638
+    member_id: 0x9bd48cb1
+    member_id: 0x4a4cb474
+    member_id: 0xa021d35c
+    member_id: 0x0578da3b
+    member_id: 0xa68c38b1
+    member_id: 0x2d081dc1
+    member_id: 0x63760ebd
+    member_id: 0xac894420
+    member_id: 0xe0f63a97
+  }
+}
+struct_union {
+  id: 0xd27c6376
+  kind: STRUCT
+  name: "class_attribute"
+  definition {
+    bytesize: 32
+    member_id: 0x8c29a58d
+    member_id: 0x0a733168
+    member_id: 0xacd4aa03
+  }
+}
+struct_union {
+  id: 0x48a13124
+  kind: STRUCT
+  name: "class_datum"
+  definition {
+    bytesize: 72
+    member_id: 0xa0c154ef
+    member_id: 0x7372cfc3
+    member_id: 0xe994f7e2
+    member_id: 0xf05f0781
+    member_id: 0xfd724d73
+    member_id: 0xe6a3222b
+    member_id: 0x932e00b0
+    member_id: 0x7c01b61e
+    member_id: 0x98b80a03
+    member_id: 0x7ad0edec
+  }
+}
+struct_union {
+  id: 0xfa6f578b
+  kind: STRUCT
+  name: "class_dev_iter"
+  definition {
+    bytesize: 24
+    member_id: 0x1f771786
+    member_id: 0x5c6461df
+  }
+}
+struct_union {
+  id: 0x256b24ab
+  kind: STRUCT
+  name: "class_interface"
+  definition {
+    bytesize: 40
+    member_id: 0x0fa6c6af
+    member_id: 0x866b1911
+    member_id: 0x69f066fe
+    member_id: 0xd0a3be49
+  }
+}
+struct_union {
+  id: 0xdd7b47eb
+  kind: STRUCT
+  name: "clk"
+  definition {
+    bytesize: 72
+    member_id: 0x3eff6fb7
+    member_id: 0xce3bbe52
+    member_id: 0x8e5720f5
+    member_id: 0xd70e055b
+    member_id: 0x78e29eff
+    member_id: 0x5c4b3b62
+    member_id: 0x4da7d7b1
+    member_id: 0x5f036ab2
+  }
+}
+struct_union {
+  id: 0xccd28ae5
+  kind: STRUCT
+  name: "clk_bulk_data"
+  definition {
+    bytesize: 16
+    member_id: 0xcc113c24
+    member_id: 0xc8e82c70
+  }
+}
+struct_union {
+  id: 0x708e556f
+  kind: STRUCT
+  name: "clk_core"
+  definition {
+    bytesize: 248
+    member_id: 0x0de57ce8
+    member_id: 0xafb61a8a
+    member_id: 0x97cde891
+    member_id: 0x4a965a99
+    member_id: 0xce3bba18
+    member_id: 0xf7c3f586
+    member_id: 0x7227c0c4
+    member_id: 0x0a0fa3a3
+    member_id: 0x5f13cddc
+    member_id: 0xde66b021
+    member_id: 0x5fe12ee8
+    member_id: 0x9c3f558c
+    member_id: 0x4c8e95ba
+    member_id: 0x7c11dfa4
+    member_id: 0x4c568493
+    member_id: 0x2d5bfb9c
+    member_id: 0x6ba69c1b
+    member_id: 0x1070b82a
+    member_id: 0xfbc6aa01
+    member_id: 0x1068dd68
+    member_id: 0x7ad6105e
+    member_id: 0x088ec4c0
+    member_id: 0x6fd5241a
+    member_id: 0x78e29322
+    member_id: 0x5c4b3279
+    member_id: 0x6b47fdc8
+    member_id: 0x39ef5b6d
+    member_id: 0xd5562c37
+    member_id: 0x25f4197a
+    member_id: 0x19578fc7
+    member_id: 0x08f4a5ea
+    member_id: 0xbbe14bb7
+    member_id: 0xf3efeb8b
+    member_id: 0xe0038b0c
+    member_id: 0xce703a83
+  }
+}
+struct_union {
+  id: 0x661c32c6
+  kind: STRUCT
+  name: "clk_div_table"
+  definition {
+    bytesize: 8
+    member_id: 0x4f536bbc
+    member_id: 0x29b12afa
+  }
+}
+struct_union {
+  id: 0x7747934c
+  kind: STRUCT
+  name: "clk_duty"
+  definition {
+    bytesize: 8
+    member_id: 0x1c73cad3
+    member_id: 0xc47c5bd5
+  }
+}
+struct_union {
+  id: 0x01d26d83
+  kind: STRUCT
+  name: "clk_hw"
+  definition {
+    bytesize: 24
+    member_id: 0x3eff6fb7
+    member_id: 0xc8e82c70
+    member_id: 0x1ad35dfa
+  }
+}
+struct_union {
+  id: 0x4055fa5e
+  kind: STRUCT
+  name: "clk_init_data"
+  definition {
+    bytesize: 56
+    member_id: 0x0de57ce8
+    member_id: 0xafb61a8a
+    member_id: 0xabfb8b61
+    member_id: 0x0d01ade0
+    member_id: 0x29c2eb11
+    member_id: 0x5f13c103
+    member_id: 0x2d5bf0a8
+  }
+}
+struct_union {
+  id: 0x08a8a88b
+  kind: STRUCT
+  name: "clk_ops"
+  definition {
+    bytesize: 216
+    member_id: 0x3d57f759
+    member_id: 0xc6f7cf31
+    member_id: 0xb1d2ccae
+    member_id: 0xcc016e3c
+    member_id: 0x98ca51ff
+    member_id: 0x0d83fe59
+    member_id: 0x77aa0fb2
+    member_id: 0x87602a43
+    member_id: 0xa886909d
+    member_id: 0x01b315b5
+    member_id: 0x9b5bdaf0
+    member_id: 0x073a4d9a
+    member_id: 0x81c31d2a
+    member_id: 0xd2ea40a7
+    member_id: 0x75950075
+    member_id: 0x37352c1f
+    member_id: 0x58bd165e
+    member_id: 0x659c25bc
+    member_id: 0x04e7f823
+    member_id: 0xabec5550
+    member_id: 0xe89a0dfb
+    member_id: 0xe3124156
+    member_id: 0x1ac7999d
+    member_id: 0xe4674157
+    member_id: 0x21357c80
+    member_id: 0x7ff4a6be
+    member_id: 0xdbe5b0ea
+  }
+}
+struct_union {
+  id: 0x2795e0da
+  kind: STRUCT
+  name: "clk_parent_data"
+  definition {
+    bytesize: 32
+    member_id: 0x97fa8c95
+    member_id: 0x6f04a1ea
+    member_id: 0x0de5752a
+    member_id: 0xad5e20a5
+  }
+}
+struct_union {
+  id: 0xb4a26738
+  kind: STRUCT
+  name: "clk_parent_map"
+  definition {
+    bytesize: 40
+    member_id: 0x97fa8c95
+    member_id: 0x3eff6b56
+    member_id: 0x6f04acc9
+    member_id: 0x0de57421
+    member_id: 0xad5e28c7
+  }
+}
+struct_union {
+  id: 0xdb526eee
+  kind: STRUCT
+  name: "clk_rate_request"
+  definition {
+    bytesize: 40
+    member_id: 0x5fe1279a
+    member_id: 0x78e29ab5
+    member_id: 0x5c4b3567
+    member_id: 0x5c798f4b
+    member_id: 0x7c380860
+  }
+}
+struct_union {
+  id: 0x668debad
+  kind: STRUCT
+  name: "clock_event_device"
+  definition {
+    bytesize: 256
+    member_id: 0x5073ffeb
+    member_id: 0xd1009987
+    member_id: 0x11291b29
+    member_id: 0xd2cda571
+    member_id: 0x34a5c674
+    member_id: 0x89edbaee
+    member_id: 0x662d77cd
+    member_id: 0x32f8ca2d
+    member_id: 0xc0e9c02d
+    member_id: 0xc55df412
+    member_id: 0x4fd8c2ac
+    member_id: 0xef3712e1
+    member_id: 0x6dafe706
+    member_id: 0x59435378
+    member_id: 0x4f4039a7
+    member_id: 0xa20e0a6e
+    member_id: 0x7d954aab
+    member_id: 0xf3b55bd3
+    member_id: 0xca90626a
+    member_id: 0x496793e9
+    member_id: 0x049620cf
+    member_id: 0x0de57e2c
+    member_id: 0x0dd68b53
+    member_id: 0x99159c2d
+    member_id: 0xc720c59c
+    member_id: 0x3d044c2f
+    member_id: 0x7c00e802
+    member_id: 0x4a965be8
+  }
+}
+struct_union {
+  id: 0xfebaf136
+  kind: STRUCT
+  name: "clock_identity"
+  definition {
+    bytesize: 8
+    member_id: 0xccc14505
+  }
+}
+struct_union {
+  id: 0x7bca412c
+  kind: STRUCT
+  name: "clocksource"
+  definition {
+    bytesize: 152
+    member_id: 0x48437f63
+    member_id: 0xa8a14eff
+    member_id: 0x662d7f9d
+    member_id: 0x32f8c5ad
+    member_id: 0x020ebf76
+    member_id: 0x0e97cf54
+    member_id: 0x8aca54d8
+    member_id: 0x2c58cf12
+    member_id: 0x0de57d7a
+    member_id: 0x7c00e825
+    member_id: 0x0dd6845c
+    member_id: 0xcc5281f4
+    member_id: 0x5afc55ba
+    member_id: 0x2d5bf307
+    member_id: 0x98cbb19a
+    member_id: 0x0d821244
+    member_id: 0xf3b52c98
+    member_id: 0xca901898
+    member_id: 0xcc94e530
+    member_id: 0x080a399d
+    member_id: 0x4a965c8c
+  }
+}
+struct_union {
+  id: 0x6acf3546
+  kind: STRUCT
+  name: "cma"
+  definition {
+    bytesize: 136
+    member_id: 0x2d6eaa34
+    member_id: 0x65162e41
+    member_id: 0x8941be6f
+    member_id: 0x434797bc
+    member_id: 0x2d1fefa1
+    member_id: 0xaf3c8a01
+    member_id: 0xd0936a4e
+    member_id: 0x07451d80
+    member_id: 0x0de6df9d
+    member_id: 0x348aae90
+  }
+}
+struct_union {
+  id: 0x52b2a4f5
+  kind: STRUCT
+  name: "common_datum"
+  definition {
+    bytesize: 32
+    member_id: 0xa0c154ef
+    member_id: 0xf05f0ba9
+  }
+}
+struct_union {
+  id: 0x32c940eb
+  kind: STRUCT
+  name: "compact_control"
+  definition {
+    bytesize: 128
+    member_id: 0xb0514dc8
+    member_id: 0x6e66fa31
+    member_id: 0x050371e4
+    member_id: 0x02abbc80
+    member_id: 0x54942a8c
+    member_id: 0xc9e8e147
+    member_id: 0xe96aa3ec
+    member_id: 0xc2e6a287
+    member_id: 0xf64a3494
+    member_id: 0xeadb3f2b
+    member_id: 0x70f6d253
+    member_id: 0xbf942607
+    member_id: 0xa4b05766
+    member_id: 0xb5bed787
+    member_id: 0x48f2053f
+    member_id: 0xa763c31c
+    member_id: 0x2ca966e1
+    member_id: 0x87db819c
+    member_id: 0x008086c9
+    member_id: 0xb5c67b8e
+    member_id: 0x0227b66c
+    member_id: 0xf0e339ea
+    member_id: 0xb124af35
+    member_id: 0x7b0b6ea4
+    member_id: 0xa96567a8
+    member_id: 0x1aa9410e
+    member_id: 0x21677719
+  }
+}
+struct_union {
+  id: 0x4d96f637
+  kind: STRUCT
+  name: "compat_robust_list"
+  definition {
+    bytesize: 4
+    member_id: 0x1196d16f
+  }
+}
+struct_union {
+  id: 0x96d7b994
+  kind: STRUCT
+  name: "compat_robust_list_head"
+  definition {
+    bytesize: 12
+    member_id: 0x7c9eb1a5
+    member_id: 0xdae5110b
+    member_id: 0x73163b28
+  }
+}
+struct_union {
+  id: 0x3fcbf304
+  kind: STRUCT
+  name: "completion"
+  definition {
+    bytesize: 32
+    member_id: 0x1d0af001
+    member_id: 0x20525fec
+  }
+}
+struct_union {
+  id: 0x1dbb8f2a
+  kind: STRUCT
+  name: "component"
+  definition {
+    bytesize: 56
+    member_id: 0x0fa6c6af
+    member_id: 0xa25c6094
+    member_id: 0x2b9f3069
+    member_id: 0xafb2f000
+    member_id: 0xd6494289
+    member_id: 0xce3bbb21
+  }
+}
+struct_union {
+  id: 0xf5b22e3c
+  kind: STRUCT
+  name: "component_master_ops"
+  definition {
+    bytesize: 16
+    member_id: 0x6d13fd99
+    member_id: 0x59946652
+  }
+}
+struct_union {
+  id: 0x3e91b36b
+  kind: STRUCT
+  name: "component_match"
+  definition {
+    bytesize: 24
+    member_id: 0x45188eb1
+    member_id: 0x1cc27e3c
+    member_id: 0x3595933a
+  }
+}
+struct_union {
+  id: 0x00a6d68e
+  kind: STRUCT
+  name: "component_match_array"
+  definition {
+    bytesize: 48
+    member_id: 0xff8a9909
+    member_id: 0x35b2eaa6
+    member_id: 0x0da8ea71
+    member_id: 0xae96714d
+    member_id: 0xe5eb95e0
+    member_id: 0x98e4f9e1
+  }
+}
+struct_union {
+  id: 0x4644a1e5
+  kind: STRUCT
+  name: "component_ops"
+  definition {
+    bytesize: 16
+    member_id: 0x6d13fe4a
+    member_id: 0x59946581
+  }
+}
+struct_union {
+  id: 0xd8c2a455
+  kind: STRUCT
+  name: "compress_alg"
+  definition {
+    bytesize: 16
+    member_id: 0xf50e6b44
+    member_id: 0xaaff0cd3
+  }
+}
+struct_union {
+  id: 0xff8d0786
+  kind: STRUCT
+  name: "compressor"
+  definition {
+    bytesize: 128
+    member_id: 0x755a12dd
+    member_id: 0xcccec18a
+    member_id: 0x17ab98cf
+    member_id: 0xb483fd58
+    member_id: 0x05e6fa53
+    member_id: 0x796bfa50
+    member_id: 0xe6e8c7c6
+    member_id: 0x7a730a17
+    member_id: 0x18e6a082
+    member_id: 0xf64ea857
+    member_id: 0x617a050c
+    member_id: 0x75424e09
+    member_id: 0x05a2abf1
+    member_id: 0xc1942343
+    member_id: 0x4a9658f6
+    member_id: 0x2dbea930
+  }
+}
+struct_union {
+  id: 0xec8f687e
+  kind: STRUCT
+  name: "compstat"
+  definition {
+    bytesize: 40
+    member_id: 0xb52ca4cb
+    member_id: 0xca362358
+    member_id: 0x269c5586
+    member_id: 0x4f11053b
+    member_id: 0xb6fb6b68
+    member_id: 0x123b94be
+    member_id: 0x65df8f98
+    member_id: 0xdacabd30
+    member_id: 0xd168c688
+  }
+}
+struct_union {
+  id: 0xdc39b636
+  kind: STRUCT
+  name: "cond_av_list"
+  definition {
+    bytesize: 16
+    member_id: 0x627963b5
+    member_id: 0xb8ccd99c
+  }
+}
+struct_union {
+  id: 0xbdd82378
+  kind: STRUCT
+  name: "cond_bool_datum"
+  definition {
+    bytesize: 8
+    member_id: 0xa0ee727b
+    member_id: 0x7294d1e9
+  }
+}
+struct_union {
+  id: 0xdf3bd046
+  kind: STRUCT
+  name: "cond_expr"
+  definition {
+    bytesize: 16
+    member_id: 0x62527a67
+    member_id: 0xb8ccd99c
+  }
+}
+struct_union {
+  id: 0xa525b840
+  kind: STRUCT
+  name: "cond_expr_node"
+  definition {
+    bytesize: 8
+    member_id: 0xa0783f48
+    member_id: 0xbfc5857a
+  }
+}
+struct_union {
+  id: 0x09e98633
+  kind: STRUCT
+  name: "cond_node"
+  definition {
+    bytesize: 56
+    member_id: 0x0cc4772a
+    member_id: 0x713c7886
+    member_id: 0x028c1c9f
+    member_id: 0x22c3bf72
+  }
+}
+struct_union {
+  id: 0xe145bd36
+  kind: STRUCT
+  name: "config_group"
+  definition {
+    bytesize: 136
+    member_id: 0x50081034
+    member_id: 0x5f6579ac
+    member_id: 0xeebd3379
+    member_id: 0xb612a728
+    member_id: 0xf3dc84ec
+  }
+}
+struct_union {
+  id: 0x668004f3
+  kind: STRUCT
+  name: "config_item"
+  definition {
+    bytesize: 80
+    member_id: 0x7572328d
+    member_id: 0xebb6586c
+    member_id: 0xf8a051b9
+    member_id: 0xa3eb84f4
+    member_id: 0x67c70c20
+    member_id: 0x31c02a0f
+    member_id: 0x675f2e77
+    member_id: 0x5173269c
+  }
+}
+struct_union {
+  id: 0x7203d36f
+  kind: STRUCT
+  name: "config_item_type"
+  definition {
+    bytesize: 40
+    member_id: 0x386f85a2
+    member_id: 0x3dca0374
+    member_id: 0xb0536a7d
+    member_id: 0x380ba1d1
+    member_id: 0x6c36a06d
+  }
+}
+struct_union {
+  id: 0x44e665d5
+  kind: STRUCT
+  name: "configfs_attribute"
+  definition {
+    bytesize: 40
+    member_id: 0x11ba5fd8
+    member_id: 0xbd0ef7d7
+    member_id: 0x84edb721
+    member_id: 0x0a709d62
+    member_id: 0xacd739ed
+  }
+}
+struct_union {
+  id: 0x7221f3e8
+  kind: STRUCT
+  name: "configfs_bin_attribute"
+  definition {
+    bytesize: 72
+    member_id: 0x73e4f5f9
+    member_id: 0x7857660a
+    member_id: 0xba86d4a3
+    member_id: 0x4853d04f
+    member_id: 0x340e76f4
+  }
+}
+struct_union {
+  id: 0x89b6a05a
+  kind: STRUCT
+  name: "configfs_group_operations"
+  definition {
+    bytesize: 40
+    member_id: 0x7095100b
+    member_id: 0xafa5d1c2
+    member_id: 0x39cd7d86
+    member_id: 0x474deee1
+    member_id: 0x53b34af9
+  }
+}
+struct_union {
+  id: 0x90aae420
+  kind: STRUCT
+  name: "configfs_item_operations"
+  definition {
+    bytesize: 24
+    member_id: 0xae9777b5
+    member_id: 0x491f6334
+    member_id: 0x374bffa6
+  }
+}
+struct_union {
+  id: 0x29d9708a
+  kind: STRUCT
+  name: "configfs_subsystem"
+  definition {
+    bytesize: 184
+    member_id: 0xcebef93a
+    member_id: 0xd0bd9a08
+  }
+}
+struct_union {
+  id: 0x2f3d586f
+  kind: STRUCT
+  name: "console"
+  definition {
+    bytesize: 120
+    member_id: 0x0d994c40
+    member_id: 0x340e44a3
+    member_id: 0x4870b261
+    member_id: 0xea1367b8
+    member_id: 0x14cd081f
+    member_id: 0x84e4ad37
+    member_id: 0x0d0de554
+    member_id: 0xe60ee663
+    member_id: 0x2dd8bc01
+    member_id: 0xad8932a7
+    member_id: 0xe07b1227
+    member_id: 0x502343e7
+    member_id: 0xc8aec238
+    member_id: 0xfa8e2e44
+    member_id: 0xcc3805c6
+    member_id: 0xff8a9ab3
+    member_id: 0x11f25516
+  }
+}
+struct_union {
+  id: 0x21a6617d
+  kind: STRUCT
+  name: "constraint_expr"
+  definition {
+    bytesize: 48
+    member_id: 0xa0783f48
+    member_id: 0x8ccdaf26
+    member_id: 0xf03ba7f6
+    member_id: 0x5542647f
+    member_id: 0xe2794a8c
+    member_id: 0x11f1feb9
+  }
+}
+struct_union {
+  id: 0x44eebdd5
+  kind: STRUCT
+  name: "constraint_node"
+  definition {
+    bytesize: 24
+    member_id: 0xf0063172
+    member_id: 0x71e1baf7
+    member_id: 0x11e8a28b
+  }
+}
+struct_union {
+  id: 0xa1416fb0
+  kind: STRUCT
+  name: "context"
+  definition {
+    bytesize: 72
+    member_id: 0x04fb362d
+    member_id: 0xc0218791
+    member_id: 0x5c9fd9b4
+    member_id: 0xb8ccd4fe
+    member_id: 0x0e5c14b2
+    member_id: 0x3a3545b3
+  }
+}
+struct_union {
+  id: 0xef60ad88
+  kind: STRUCT
+  name: "core_state"
+  definition {
+    bytesize: 56
+    member_id: 0xffdf9b78
+    member_id: 0xfc3fad02
+    member_id: 0x565c19c6
+  }
+}
+struct_union {
+  id: 0x45c9d199
+  kind: STRUCT
+  name: "core_thread"
+  definition {
+    bytesize: 16
+    member_id: 0x9c3a2307
+    member_id: 0x11e8e673
+  }
+}
+struct_union {
+  id: 0x145aa63c
+  kind: STRUCT
+  name: "core_vma_metadata"
+  definition {
+    bytesize: 48
+    member_id: 0x46284634
+    member_id: 0x823c2af9
+    member_id: 0x2d5bf8f8
+    member_id: 0xa06da4bc
+    member_id: 0xadfde675
+    member_id: 0xbf9f39cc
+  }
+}
+struct_union {
+  id: 0xdf883247
+  kind: STRUCT
+  name: "coredump_params"
+  definition {
+    bytesize: 88
+    member_id: 0x361b289e
+    member_id: 0x803a5090
+    member_id: 0xbf9f37c9
+    member_id: 0xa939cfb9
+    member_id: 0x7fa172ce
+    member_id: 0xee9dab88
+    member_id: 0x2683be21
+    member_id: 0x5583ccf6
+    member_id: 0x57f81871
+    member_id: 0xb6eb92b2
+    member_id: 0x64eb00df
+  }
+}
+struct_union {
+  id: 0x53faf1e7
+  kind: STRUCT
+  name: "coupling_desc"
+  definition {
+    bytesize: 24
+    member_id: 0x70db1c35
+    member_id: 0x7e68a235
+    member_id: 0xd41aef39
+    member_id: 0xa215a4d6
+  }
+}
+struct_union {
+  id: 0xa15c4428
+  kind: STRUCT
+  name: "cpu_context"
+  definition {
+    bytesize: 104
+    member_id: 0x9793a81f
+    member_id: 0xca2823eb
+    member_id: 0x0b159a7e
+    member_id: 0x37d5f233
+    member_id: 0x76953aa3
+    member_id: 0xb92a9f60
+    member_id: 0xf8ea01e1
+    member_id: 0x3aaa6ab0
+    member_id: 0x7bd7c30b
+    member_id: 0xbf9666f6
+    member_id: 0x542e2e1a
+    member_id: 0xce7f1e98
+    member_id: 0xa5f746b2
+  }
+}
+struct_union {
+  id: 0xb55a2b15
+  kind: STRUCT
+  name: "cpu_itimer"
+  definition {
+    bytesize: 16
+    member_id: 0x91a23322
+    member_id: 0x878096f6
+  }
+}
+struct_union {
+  id: 0x9dfda184
+  kind: STRUCT
+  name: "cpu_rmap"
+  definition {
+    bytesize: 16
+    member_id: 0x05ec0452
+    member_id: 0xd9ef5cf6
+    member_id: 0x8b2f5e4b
+    member_id: 0x7559cfd9
+    member_id: 0x7810348e
+  }
+}
+struct_union {
+  id: 0x4a9dda12
+  kind: STRUCT
+  name: "cpu_stop_done"
+  definition {
+    bytesize: 40
+    member_id: 0x6ba4178e
+    member_id: 0x51f16f96
+    member_id: 0xc494a83c
+  }
+}
+struct_union {
+  id: 0x5b09d4fb
+  kind: STRUCT
+  name: "cpu_stop_work"
+  definition {
+    bytesize: 48
+    member_id: 0x7c00ef52
+    member_id: 0xf70554da
+    member_id: 0xe95f6e17
+    member_id: 0xa9197700
+    member_id: 0x1d5745ef
+  }
+}
+struct_union {
+  id: 0x1a216aaf
+  kind: STRUCT
+  name: "cpu_topology"
+  definition {
+    bytesize: 56
+    member_id: 0x0664cacd
+    member_id: 0x271b24e3
+    member_id: 0x86cfd07d
+    member_id: 0xab6d4fdb
+    member_id: 0x90132b6a
+    member_id: 0xf33b87c9
+    member_id: 0xbb52f704
+    member_id: 0xdf7fd770
+    member_id: 0xed736627
+  }
+}
+struct_union {
+  id: 0x80033d45
+  kind: STRUCT
+  name: "cpudl"
+  definition {
+    bytesize: 24
+    member_id: 0x2d244e18
+    member_id: 0xd919319a
+    member_id: 0xd358c71d
+    member_id: 0x987fdbe2
+  }
+}
+struct_union {
+  id: 0x12127d58
+  kind: STRUCT
+  name: "cpudl_item"
+  definition {
+    bytesize: 16
+    member_id: 0x460e05ed
+    member_id: 0x5161b407
+    member_id: 0x3ce0d177
+  }
+}
+struct_union {
+  id: 0x4f905e63
+  kind: STRUCT
+  name: "cpufreq_cpuinfo"
+  definition {
+    bytesize: 12
+    member_id: 0xa823d47e
+    member_id: 0x3ad5d587
+    member_id: 0xce54a80d
+  }
+}
+struct_union {
+  id: 0xd52efb9f
+  kind: STRUCT
+  name: "cpufreq_driver"
+  definition {
+    bytesize: 208
+    member_id: 0x0d994c40
+    member_id: 0x2df9c023
+    member_id: 0x6d52b07b
+    member_id: 0x1ac72c6d
+    member_id: 0xf586d6a4
+    member_id: 0x4767039d
+    member_id: 0xb38f7eae
+    member_id: 0xb8074ffd
+    member_id: 0xbca4e4c9
+    member_id: 0xb9f30be1
+    member_id: 0x69c08ebc
+    member_id: 0x54a97f6c
+    member_id: 0x31644260
+    member_id: 0xce498174
+    member_id: 0x24640f13
+    member_id: 0x7d6ff9c8
+    member_id: 0x8873399a
+    member_id: 0x0d0de0eb
+    member_id: 0xf3973d1e
+    member_id: 0xcab20ff2
+    member_id: 0xa393c648
+    member_id: 0x8c09af1b
+    member_id: 0xa4843d55
+    member_id: 0xba23a6b0
+    member_id: 0x0fb6ecfb
+  }
+}
+struct_union {
+  id: 0x3556d3b8
+  kind: STRUCT
+  name: "cpufreq_freqs"
+  definition {
+    bytesize: 24
+    member_id: 0x60e88f7d
+    member_id: 0xf4c1d04e
+    member_id: 0xb18cf5ba
+    member_id: 0x2d41d1ee
+  }
+}
+struct_union {
+  id: 0x279173ae
+  kind: STRUCT
+  name: "cpufreq_frequency_table"
+  definition {
+    bytesize: 12
+    member_id: 0x2d2d0138
+    member_id: 0x6d0f8d8a
+    member_id: 0xe552a4b4
+  }
+}
+struct_union {
+  id: 0x3c26c400
+  kind: STRUCT
+  name: "cpufreq_governor"
+  definition {
+    bytesize: 104
+    member_id: 0x0d994c40
+    member_id: 0x1ac72504
+    member_id: 0x0d2ea0d2
+    member_id: 0x4636da18
+    member_id: 0x6986d254
+    member_id: 0x5dbba419
+    member_id: 0x018d1293
+    member_id: 0x2d1b164c
+    member_id: 0x6e6c09fb
+    member_id: 0x4a96506d
+    member_id: 0x2d41d082
+  }
+}
+struct_union {
+  id: 0x2c38725c
+  kind: STRUCT
+  name: "cpufreq_policy"
+  definition {
+    bytesize: 760
+    member_id: 0xe7eecbaf
+    member_id: 0xa3374b46
+    member_id: 0x046f1e55
+    member_id: 0x107660a6
+    member_id: 0x51431677
+    member_id: 0xc8e8283a
+    member_id: 0xa239462e
+    member_id: 0xf9d506ec
+    member_id: 0x97b385d0
+    member_id: 0x91470f06
+    member_id: 0x7a4213b9
+    member_id: 0x60ac9ae1
+    member_id: 0xc9068bc8
+    member_id: 0xb07c0b16
+    member_id: 0xb1ba21e0
+    member_id: 0x718bab7c
+    member_id: 0xd6ba2184
+    member_id: 0xfd186968
+    member_id: 0xae8eb576
+    member_id: 0x84cadfba
+    member_id: 0x8db94f8f
+    member_id: 0xd8e4896d
+    member_id: 0xe58944ae
+    member_id: 0x452b2a26
+    member_id: 0x6b5fea63
+    member_id: 0xd610e577
+    member_id: 0xf998b12f
+    member_id: 0xad5481c4
+    member_id: 0x934a58fc
+    member_id: 0xa9f1f9ba
+    member_id: 0x96416cdf
+    member_id: 0x305ca20b
+    member_id: 0x2755b3ee
+    member_id: 0xaca8fdae
+    member_id: 0xe4288ca3
+    member_id: 0x1ca17692
+    member_id: 0xe4f070c3
+    member_id: 0x6a478d91
+    member_id: 0xb97ab52c
+    member_id: 0x6d52b05c
+    member_id: 0x0592c329
+    member_id: 0x27499a80
+    member_id: 0x428b2f47
+  }
+}
+struct_union {
+  id: 0xe69a7a33
+  kind: STRUCT
+  name: "cpufreq_policy_data"
+  definition {
+    bytesize: 40
+    member_id: 0xa23941e9
+    member_id: 0x8db9497d
+    member_id: 0x51431d9a
+    member_id: 0xf9d507a8
+    member_id: 0x97b3820c
+  }
+}
+struct_union {
+  id: 0x150693ae
+  kind: STRUCT
+  name: "cpufreq_stats"
+  definition {
+    bytesize: 72
+    member_id: 0x4beb9d8d
+    member_id: 0x32c86483
+    member_id: 0x9cbe2276
+    member_id: 0x98b9223b
+    member_id: 0x4280578a
+    member_id: 0x41e4d5d1
+    member_id: 0x8da1c27d
+    member_id: 0x25b124f1
+    member_id: 0x98c83941
+    member_id: 0xa4c83369
+  }
+}
+struct_union {
+  id: 0xed43dcaf
+  kind: STRUCT
+  name: "cpuidle_device"
+  definition {
+    bytesize: 808
+    member_id: 0x9d3e401b
+    member_id: 0x7ada29d8
+    member_id: 0xe37c5764
+    member_id: 0x51431868
+    member_id: 0x9c2a23d5
+    member_id: 0xeb9628ef
+    member_id: 0x8675e267
+    member_id: 0xd0c78410
+    member_id: 0x0445680c
+    member_id: 0x91b80be1
+    member_id: 0xd54640ae
+    member_id: 0xd330d110
+    member_id: 0x8d3b73a4
+    member_id: 0x5adf7f8c
+    member_id: 0x2d081c28
+  }
+}
+struct_union {
+  id: 0x125dedb2
+  kind: STRUCT
+  name: "cpuidle_device_kobj"
+  definition {
+    bytesize: 136
+    member_id: 0xce082284
+    member_id: 0x6b5fe201
+    member_id: 0x452b27ab
+  }
+}
+struct_union {
+  id: 0x4a83930e
+  kind: STRUCT
+  name: "cpuidle_driver"
+  definition {
+    bytesize: 1096
+    member_id: 0x0de57ce8
+    member_id: 0x4a9656b1
+    member_id: 0xeedf7147
+    member_id: 0x556e2823
+    member_id: 0x95cb6d35
+    member_id: 0x38f149ed
+    member_id: 0x3d0db600
+    member_id: 0xb047819b
+    member_id: 0x2d081be0
+  }
+}
+struct_union {
+  id: 0x7a3b3b4b
+  kind: STRUCT
+  name: "cpuidle_driver_kobj"
+  definition {
+    bytesize: 136
+    member_id: 0xb150f7c5
+    member_id: 0x6b5fe201
+    member_id: 0x452b27ab
+  }
+}
+struct_union {
+  id: 0x09d03afd
+  kind: STRUCT
+  name: "cpuidle_governor"
+  definition {
+    bytesize: 72
+    member_id: 0x0d994c40
+    member_id: 0x6e6c094b
+    member_id: 0x0df42830
+    member_id: 0x98cb4a14
+    member_id: 0x0d82e48b
+    member_id: 0x509de431
+    member_id: 0xb5b19e25
+  }
+}
+struct_union {
+  id: 0xd0fff916
+  kind: STRUCT
+  name: "cpuidle_state"
+  definition {
+    bytesize: 104
+    member_id: 0x0d994c40
+    member_id: 0x8780fb54
+    member_id: 0x46773687
+    member_id: 0x6d2e4fa7
+    member_id: 0x2d2d0a20
+    member_id: 0x180d3bd9
+    member_id: 0xef35881d
+    member_id: 0x02a7ece6
+    member_id: 0x05ece5d8
+    member_id: 0x09305b84
+    member_id: 0x9fb1e055
+  }
+}
+struct_union {
+  id: 0x68db520e
+  kind: STRUCT
+  name: "cpuidle_state_kobj"
+  definition {
+    bytesize: 152
+    member_id: 0x72cd53c6
+    member_id: 0x3b764a91
+    member_id: 0x6b5fef22
+    member_id: 0x452b21fe
+    member_id: 0xea03e6d7
+  }
+}
+struct_union {
+  id: 0xe01f4745
+  kind: STRUCT
+  name: "cpuidle_state_usage"
+  definition {
+    bytesize: 64
+    member_id: 0x0d583e9e
+    member_id: 0x07bf52a9
+    member_id: 0x74426c4d
+    member_id: 0x46f5493a
+    member_id: 0xdcf27b4a
+    member_id: 0x0613b106
+    member_id: 0x040dbb50
+    member_id: 0x1a2d38b9
+  }
+}
+struct_union {
+  id: 0xc9a82d21
+  kind: STRUCT
+  name: "cpumask"
+  definition {
+    bytesize: 8
+    member_id: 0xd7ec8426
+  }
+}
+struct_union {
+  id: 0x99ad16f8
+  kind: STRUCT
+  name: "cpupri"
+  definition {
+    bytesize: 1624
+    member_id: 0x01e1ab11
+    member_id: 0xf60aae61
+  }
+}
+struct_union {
+  id: 0xe8a3d932
+  kind: STRUCT
+  name: "cpupri_vec"
+  definition {
+    bytesize: 16
+    member_id: 0x65518d58
+    member_id: 0xa8aaa76c
+  }
+}
+struct_union {
+  id: 0xb3ca4288
+  kind: STRUCT
+  name: "cq_entry"
+  definition {
+    bytesize: 32
+    member_id: 0x245b99ca
+    member_id: 0xb3633d58
+    member_id: 0x4dbd0339
+    member_id: 0x1d16e61f
+    member_id: 0x4c6ac117
+    member_id: 0x206c8436
+    member_id: 0xd4738ef3
+  }
+}
+struct_union {
+  id: 0xdf149691
+  kind: STRUCT
+  name: "cred"
+  definition {
+    bytesize: 176
+    member_id: 0x071e5bb3
+    member_id: 0x15366f57
+    member_id: 0x08e676f0
+    member_id: 0x9ab99084
+    member_id: 0x37a44d46
+    member_id: 0xcac5b510
+    member_id: 0xdd519b1a
+    member_id: 0xae1bb866
+    member_id: 0xd81f0d18
+    member_id: 0xe38945e4
+    member_id: 0x5787fb7a
+    member_id: 0xadef84f7
+    member_id: 0x1b176c3e
+    member_id: 0x38520624
+    member_id: 0x6e46a0c6
+    member_id: 0x7a623699
+    member_id: 0xebe42158
+    member_id: 0x44535944
+    member_id: 0x000445e0
+    member_id: 0xd78233e4
+    member_id: 0xf194e91d
+    member_id: 0x042a27fc
+    member_id: 0xde4b7192
+    member_id: 0x9f3018bf
+    member_id: 0x0ded372d
+    member_id: 0x35b130ba
+  }
+}
+struct_union {
+  id: 0x4b5e47ce
+  kind: STRUCT
+  name: "crypto_aead"
+  definition {
+    bytesize: 128
+    member_id: 0x0379674b
+    member_id: 0xa9e8c16b
+    member_id: 0x8597b564
+  }
+}
+struct_union {
+  id: 0x7ebccaf7
+  kind: STRUCT
+  name: "crypto_aes_ctx"
+  definition {
+    bytesize: 484
+    member_id: 0xa4dac0f5
+    member_id: 0xbf1d4e31
+    member_id: 0x87a7947b
+  }
+}
+struct_union {
+  id: 0x501cf133
+  kind: STRUCT
+  name: "crypto_ahash"
+  definition {
+    bytesize: 192
+    member_id: 0x1ac4107c
+    member_id: 0xd68bc61c
+    member_id: 0x6fd12469
+    member_id: 0x7e4ab622
+    member_id: 0x5f810d60
+    member_id: 0x24bb4656
+    member_id: 0x6f168d58
+    member_id: 0x177a5b17
+    member_id: 0xa9e8c748
+    member_id: 0x8597b963
+  }
+}
+struct_union {
+  id: 0x293b162f
+  kind: STRUCT
+  name: "crypto_alg"
+  definition {
+    bytesize: 384
+    member_id: 0xe7daba87
+    member_id: 0xe7254ce9
+    member_id: 0x0802328a
+    member_id: 0xa5df205b
+    member_id: 0xc04ce98c
+    member_id: 0xf3e73479
+    member_id: 0xd1e068af
+    member_id: 0xfb3f119b
+    member_id: 0xec7cf9e6
+    member_id: 0x12156763
+    member_id: 0x73195eef
+    member_id: 0x10f96635
+    member_id: 0x8edfada6
+    member_id: 0xb3bdadb2
+    member_id: 0xc4bf7ab0
+    member_id: 0xee07459a
+  }
+}
+struct_union {
+  id: 0x3b0d08ae
+  kind: STRUCT
+  name: "crypto_async_request"
+  definition {
+    bytesize: 48
+    member_id: 0x7c00ef52
+    member_id: 0x4ae72336
+    member_id: 0xff8a91c0
+    member_id: 0xacd7c70e
+    member_id: 0x2da18bb2
+  }
+}
+struct_union {
+  id: 0x85b25628
+  kind: STRUCT
+  name: "crypto_comp"
+  definition {
+    bytesize: 64
+    member_id: 0x8597be7c
+  }
+}
+struct_union {
+  id: 0x9e2c67f2
+  kind: STRUCT
+  name: "crypto_instance"
+  definition {
+    bytesize: 448
+    member_id: 0x2784b70a
+    member_id: 0x8d47e839
+    member_id: 0x31b40958
+    member_id: 0x75906b40
+  }
+}
+struct_union {
+  id: 0x5618f6d1
+  kind: STRUCT
+  name: "crypto_kpp"
+  definition {
+    bytesize: 64
+    member_id: 0x8597be7c
+  }
+}
+struct_union {
+  id: 0x54df9b6e
+  kind: STRUCT
+  name: "crypto_queue"
+  definition {
+    bytesize: 32
+    member_id: 0x7c00ef52
+    member_id: 0x6045302c
+    member_id: 0x9bd70ca2
+    member_id: 0x6bda87af
+  }
+}
+struct_union {
+  id: 0xd8336ca1
+  kind: STRUCT
+  name: "crypto_rng"
+  definition {
+    bytesize: 64
+    member_id: 0x8597be7c
+  }
+}
+struct_union {
+  id: 0x75a847f0
+  kind: STRUCT
+  name: "crypto_shash"
+  definition {
+    bytesize: 128
+    member_id: 0x2bac9f91
+    member_id: 0x8597b564
+  }
+}
+struct_union {
+  id: 0x1b619644
+  kind: STRUCT
+  name: "crypto_skcipher"
+  definition {
+    bytesize: 128
+    member_id: 0xa9e8cc50
+    member_id: 0x8597b564
+  }
+}
+struct_union {
+  id: 0x271bd1e1
+  kind: STRUCT
+  name: "crypto_spawn"
+  definition {
+    bytesize: 48
+    member_id: 0x7c00ef52
+    member_id: 0x27ad5b22
+    member_id: 0x34016e97
+    member_id: 0x02c74d79
+    member_id: 0xa8fa66c1
+    member_id: 0x3bde3148
+    member_id: 0x513724dc
+  }
+}
+struct_union {
+  id: 0x9492b073
+  kind: STRUCT
+  name: "crypto_sync_skcipher"
+  definition {
+    bytesize: 128
+    member_id: 0x85c18f1d
+  }
+}
+struct_union {
+  id: 0x54a91269
+  kind: STRUCT
+  name: "crypto_template"
+  definition {
+    bytesize: 168
+    member_id: 0x7c00ef52
+    member_id: 0x0619e4d0
+    member_id: 0x965f1ef7
+    member_id: 0x0faf7ca9
+    member_id: 0x0dfb96fb
+  }
+}
+struct_union {
+  id: 0x4d50f747
+  kind: STRUCT
+  name: "crypto_tfm"
+  definition {
+    bytesize: 64
+    member_id: 0x605c9c46
+    member_id: 0x0f122346
+    member_id: 0x0d2f2958
+    member_id: 0x581df983
+    member_id: 0x80836247
+  }
+}
+struct_union {
+  id: 0xa000adb4
+  kind: STRUCT
+  name: "crypto_type"
+  definition {
+    bytesize: 72
+    member_id: 0x747e7c41
+    member_id: 0x6e64cfbe
+    member_id: 0x1ac6653e
+    member_id: 0x4a52b1b2
+    member_id: 0x0a70de6c
+    member_id: 0x5cb65fa1
+    member_id: 0xfeae6ede
+    member_id: 0x5c13576f
+    member_id: 0x5229ac0d
+    member_id: 0x882f9636
+    member_id: 0x8507c99b
+  }
+}
+struct_union {
+  id: 0x1c488e9b
+  kind: STRUCT
+  name: "css_set"
+  definition {
+    bytesize: 424
+    member_id: 0x9ac0c685
+    member_id: 0x05243c4b
+    member_id: 0x8c690725
+    member_id: 0xb2edf79f
+    member_id: 0xe321dfc2
+    member_id: 0xe7f8e9e2
+    member_id: 0x10fb552c
+    member_id: 0x17afe2c0
+    member_id: 0xd4a831c8
+    member_id: 0x27c41378
+    member_id: 0x000d6906
+    member_id: 0xc78acab3
+    member_id: 0x2d522a14
+    member_id: 0xdb792488
+    member_id: 0xcd024f91
+    member_id: 0x90817899
+    member_id: 0x227dd300
+    member_id: 0xcac175e1
+    member_id: 0x5442f9de
+    member_id: 0xe7b08e98
+    member_id: 0x3bde3a21
+    member_id: 0x56a72c33
+  }
+}
+struct_union {
+  id: 0x4f0da411
+  kind: STRUCT
+  name: "cstate"
+  definition {
+    bytesize: 192
+    member_id: 0xef46841b
+    member_id: 0xd5629083
+    member_id: 0x11ea576e
+    member_id: 0xfc7060c5
+    member_id: 0xd8a2aa91
+    member_id: 0xb4c97305
+    member_id: 0xf3206014
+    member_id: 0xb231a519
+  }
+}
+struct_union {
+  id: 0x6df67d28
+  kind: STRUCT
+  name: "ctl_dir"
+  definition {
+    bytesize: 88
+    member_id: 0xefd7cf7f
+    member_id: 0x9334bce7
+  }
+}
+struct_union {
+  id: 0x8f447221
+  kind: STRUCT
+  name: "ctl_node"
+  definition {
+    bytesize: 32
+    member_id: 0x0f470b14
+    member_id: 0xef188232
+  }
+}
+struct_union {
+  id: 0xf75f9714
+  kind: STRUCT
+  name: "ctl_table"
+  definition {
+    bytesize: 64
+    member_id: 0xdaab89c5
+    member_id: 0xff8a9de8
+    member_id: 0xd5618744
+    member_id: 0x878f4b08
+    member_id: 0x38ffbb67
+    member_id: 0x97dd65c0
+    member_id: 0x5e0d04df
+    member_id: 0xd4fff240
+    member_id: 0x9bb9a391
+  }
+}
+struct_union {
+  id: 0xfb11ce60
+  kind: STRUCT
+  name: "ctl_table_header"
+  definition {
+    bytesize: 80
+    member_id: 0x346c3fde
+    member_id: 0x9c17bc94
+    member_id: 0x411c5627
+    member_id: 0x93f22e79
+    member_id: 0x3dca10e3
+    member_id: 0x7220982b
+    member_id: 0x0f5c4493
+    member_id: 0x8c1d6d88
+  }
+}
+struct_union {
+  id: 0x4b7bc818
+  kind: STRUCT
+  name: "ctl_table_poll"
+  definition {
+    bytesize: 32
+    member_id: 0x0a3b32fc
+    member_id: 0x202d9373
+  }
+}
+struct_union {
+  id: 0x9e448e2a
+  kind: STRUCT
+  name: "ctl_table_root"
+  definition {
+    bytesize: 120
+    member_id: 0x37301021
+    member_id: 0xd47c59b7
+    member_id: 0xc8c46aca
+    member_id: 0xf0e1b1fd
+  }
+}
+struct_union {
+  id: 0x7b06e63f
+  kind: STRUCT
+  name: "ctl_table_set"
+  definition {
+    bytesize: 96
+    member_id: 0x319bb7e5
+    member_id: 0x2e9bdae0
+  }
+}
+struct_union {
+  id: 0xc776c7f6
+  kind: STRUCT
+  name: "ctx_rq_wait"
+  definition {
+    bytesize: 40
+    member_id: 0x999f4e3f
+    member_id: 0x65518df3
+  }
+}
+struct_union {
+  id: 0xffeff056
+  kind: STRUCT
+  name: "cvt_timing"
+  definition {
+    bytesize: 3
+    member_id: 0x54f876ed
+  }
+}
+struct_union {
+  id: 0x42f845b9
+  kind: STRUCT
+  name: "cyclecounter"
+  definition {
+    bytesize: 24
+    member_id: 0x4841a2f5
+    member_id: 0xa8a14eff
+    member_id: 0x662d7f9d
+    member_id: 0x32f8c5ad
+  }
+}
+struct_union {
+  id: 0x99313a85
+  kind: STRUCT
+  name: "data_chunk"
+  definition {
+    bytesize: 32
+    member_id: 0xd98a291a
+    member_id: 0x0d14b464
+    member_id: 0x0ea7d2ae
+    member_id: 0xf9177f60
+  }
+}
+struct_union {
+  id: 0xfcef8945
+  kind: STRUCT
+  name: "dax_device"
+  definition {
+    bytesize: 880
+    member_id: 0x3b1b2da5
+    member_id: 0x05c97fd4
+    member_id: 0x91796c8d
+    member_id: 0x2d5bffb9
+    member_id: 0xafb75edc
+    member_id: 0x8949e683
+    member_id: 0x43997d98
+  }
+}
+struct_union {
+  id: 0x8485f927
+  kind: STRUCT
+  name: "dax_holder_operations"
+  definition {
+    bytesize: 8
+    member_id: 0xddcb1098
+  }
+}
+struct_union {
+  id: 0x1cf54760
+  kind: STRUCT
+  name: "dax_operations"
+  definition {
+    bytesize: 32
+    member_id: 0x6bfa0272
+    member_id: 0x8b951fe9
+    member_id: 0xa5a19374
+    member_id: 0x7216ea38
+  }
+}
+struct_union {
+  id: 0xcbce42ed
+  kind: STRUCT
+  name: "dbs_data"
+  definition {
+    bytesize: 208
+    member_id: 0x2ae4a5b7
+    member_id: 0xbf2d12a5
+    member_id: 0xe0ac849f
+    member_id: 0xeb82ce95
+    member_id: 0xf64611c2
+    member_id: 0x11ed2432
+    member_id: 0x70716d55
+    member_id: 0xfe460429
+  }
+}
+struct_union {
+  id: 0xd645a65a
+  kind: STRUCT
+  name: "dbs_governor"
+  definition {
+    bytesize: 240
+    member_id: 0xbf2e3fb2
+    member_id: 0x84231c09
+    member_id: 0xd05bee08
+    member_id: 0x8b18c6d7
+    member_id: 0x45ecb8fc
+    member_id: 0xfeafc015
+    member_id: 0x1ac4b43b
+    member_id: 0x0d2d31b0
+    member_id: 0x46159782
+  }
+}
+struct_union {
+  id: 0x5d705e7f
+  kind: STRUCT
+  name: "debug_info"
+  definition {
+    bytesize: 272
+    member_id: 0x7a973a33
+    member_id: 0x6f424547
+    member_id: 0xb8b77cb4
+    member_id: 0xf8ffd9ad
+    member_id: 0x8283c1cd
+  }
+}
+struct_union {
+  id: 0x1040a452
+  kind: STRUCT
+  name: "debugfs_blob_wrapper"
+  definition {
+    bytesize: 16
+    member_id: 0xff8a9909
+    member_id: 0xd94d6df7
+  }
+}
+struct_union {
+  id: 0x94ab2780
+  kind: STRUCT
+  name: "debugfs_reg32"
+  definition {
+    bytesize: 16
+    member_id: 0x0ddfefbb
+    member_id: 0x9b2fad41
+  }
+}
+struct_union {
+  id: 0x208e0d4b
+  kind: STRUCT
+  name: "debugfs_regset32"
+  definition {
+    bytesize: 32
+    member_id: 0x800fa8ae
+    member_id: 0x9c39535d
+    member_id: 0x85c25a2c
+    member_id: 0xce3bb27a
+  }
+}
+struct_union {
+  id: 0x3062c88a
+  kind: STRUCT
+  name: "debugfs_u32_array"
+  definition {
+    bytesize: 16
+    member_id: 0xdf9f7abe
+    member_id: 0x47188cfb
+  }
+}
+struct_union {
+  id: 0x34b43309
+  kind: STRUCT
+  name: "deferred_freelist_item"
+  definition {
+    bytesize: 32
+    member_id: 0xe376f573
+    member_id: 0xfeaca823
+    member_id: 0x7c00e690
+  }
+}
+struct_union {
+  id: 0x814f67d4
+  kind: STRUCT
+  name: "deferred_split"
+  definition {
+    bytesize: 32
+    member_id: 0xa81415fe
+    member_id: 0xc46b8e03
+    member_id: 0x164e13b4
+  }
+}
+struct_union {
+  id: 0xa07499f1
+  kind: STRUCT
+  name: "delayed_call"
+  definition {
+    bytesize: 16
+    member_id: 0xf798d2f3
+    member_id: 0xa919734a
+  }
+}
+struct_union {
+  id: 0xf1159c31
+  kind: STRUCT
+  name: "delayed_work"
+  definition {
+    bytesize: 136
+    member_id: 0xd6e667b7
+    member_id: 0x1dd180f0
+    member_id: 0x22faefc9
+    member_id: 0x5161ba40
+    member_id: 0x2d081dc1
+    member_id: 0x63760ebd
+  }
+}
+struct_union {
+  id: 0x6255e5da
+  kind: STRUCT
+  name: "dentry"
+  definition {
+    bytesize: 208
+    member_id: 0x80dd1944
+    member_id: 0x9095fc0e
+    member_id: 0xe7ca74ba
+    member_id: 0xb894ed7f
+    member_id: 0x41340bdc
+    member_id: 0x19210a18
+    member_id: 0x910e4196
+    member_id: 0xb117d730
+    member_id: 0x52b62b2d
+    member_id: 0x3a5fe75a
+    member_id: 0x3c5fc706
+    member_id: 0x58270184
+    member_id: 0x38e67335
+    member_id: 0x12f42e3b
+    member_id: 0xbd288688
+    member_id: 0xf17c62b2
+    member_id: 0x2d081fd6
+    member_id: 0x6376001a
+  }
+}
+struct_union {
+  id: 0x4474c556
+  kind: STRUCT
+  name: "dentry_operations"
+  definition {
+    bytesize: 192
+    member_id: 0xb0a8c26f
+    member_id: 0xf79a0eb9
+    member_id: 0xe79b1adb
+    member_id: 0x8751a712
+    member_id: 0x016b4daf
+    member_id: 0xcf345cb7
+    member_id: 0x26aede12
+    member_id: 0xc216691a
+    member_id: 0xc7b85112
+    member_id: 0x977ac637
+    member_id: 0xd4f1b234
+    member_id: 0xd6b41596
+    member_id: 0xa3ee3a2f
+    member_id: 0xa070bd00
+    member_id: 0x2d081f94
+    member_id: 0x63760151
+    member_id: 0xac894e49
+    member_id: 0xe0f6393d
+  }
+}
+struct_union {
+  id: 0x2729c17d
+  kind: STRUCT
+  name: "detailed_data_monitor_range"
+  definition {
+    bytesize: 13
+    member_id: 0xbeedf4d0
+    member_id: 0xb1e53859
+    member_id: 0x4c14136a
+    member_id: 0xa6087b15
+    member_id: 0xfa1d223d
+    member_id: 0x2d41da7e
+    member_id: 0x3df0b3d7
+  }
+}
+struct_union {
+  id: 0x4b617734
+  kind: STRUCT
+  name: "detailed_data_string"
+  definition {
+    bytesize: 13
+    member_id: 0x3a7db77d
+  }
+}
+struct_union {
+  id: 0xd6995412
+  kind: STRUCT
+  name: "detailed_data_wpindex"
+  definition {
+    bytesize: 4
+    member_id: 0x77be5454
+    member_id: 0x69491e28
+    member_id: 0x13a42cc5
+    member_id: 0xfacdc687
+  }
+}
+struct_union {
+  id: 0xd196eb43
+  kind: STRUCT
+  name: "detailed_non_pixel"
+  definition {
+    bytesize: 16
+    member_id: 0x66ddb3c1
+    member_id: 0x5c7f82ea
+    member_id: 0xba1fb3eb
+    member_id: 0xffca45c6
+  }
+}
+struct_union {
+  id: 0x69bc8159
+  kind: STRUCT
+  name: "detailed_pixel_timing"
+  definition {
+    bytesize: 16
+    member_id: 0xc8b796c2
+    member_id: 0xba5e974e
+    member_id: 0x49a739b7
+    member_id: 0xb2b4157d
+    member_id: 0x29831e44
+    member_id: 0xc150b773
+    member_id: 0xe4ae5f47
+    member_id: 0x6c9b3d12
+    member_id: 0xdcf26944
+    member_id: 0xed12d806
+    member_id: 0xd6ef5507
+    member_id: 0x08937094
+    member_id: 0x65169b6d
+    member_id: 0x52341f49
+    member_id: 0x83d58286
+    member_id: 0x7ff3ff41
+  }
+}
+struct_union {
+  id: 0x2d8df075
+  kind: STRUCT
+  name: "detailed_timing"
+  definition {
+    bytesize: 18
+    member_id: 0x4eaa4a06
+    member_id: 0xfff2d676
+  }
+}
+struct_union {
+  id: 0xd0721420
+  kind: STRUCT
+  name: "dev_archdata"
+  definition {
+  }
+}
+struct_union {
+  id: 0xe5c2f369
+  kind: STRUCT
+  name: "dev_ifalias"
+  definition {
+    bytesize: 16
+    member_id: 0x085cb7c2
+    member_id: 0xd93134e1
+  }
+}
+struct_union {
+  id: 0x18a4447a
+  kind: STRUCT
+  name: "dev_iommu"
+  definition {
+    bytesize: 96
+    member_id: 0x2d4b3c00
+    member_id: 0x5a9c41ae
+    member_id: 0x3ff870a4
+    member_id: 0xc67a5e74
+    member_id: 0xb2e28dd5
+    member_id: 0x59119ed8
+    member_id: 0xe612b8f2
+  }
+}
+struct_union {
+  id: 0x68311512
+  kind: STRUCT
+  name: "dev_links_info"
+  definition {
+    bytesize: 56
+    member_id: 0xf4d9522e
+    member_id: 0x823c191c
+    member_id: 0xd9d08d96
+    member_id: 0x20a87720
+  }
+}
+struct_union {
+  id: 0xe0037997
+  kind: STRUCT
+  name: "dev_msi_info"
+  definition {
+    bytesize: 16
+    member_id: 0xa719d2fc
+    member_id: 0xffb65cb4
+  }
+}
+struct_union {
+  id: 0x60294eb6
+  kind: STRUCT
+  name: "dev_pagemap"
+  definition {
+    bytesize: 152
+    member_id: 0x011dff57
+    member_id: 0xce216766
+    member_id: 0x1d70b58c
+    member_id: 0x5c6e9e24
+    member_id: 0x2d2d0e5f
+    member_id: 0xa4977b3b
+    member_id: 0xafb48ad1
+    member_id: 0x4a85c01a
+    member_id: 0xeb3f103c
+    member_id: 0x36961302
+  }
+}
+struct_union {
+  id: 0x2149651e
+  kind: STRUCT
+  name: "dev_pagemap_ops"
+  definition {
+    bytesize: 24
+    member_id: 0x883d68b7
+    member_id: 0x3fbe690c
+    member_id: 0xd284628d
+  }
+}
+struct_union {
+  id: 0x9d84d375
+  kind: STRUCT
+  name: "dev_pin_info"
+  definition {
+    bytesize: 40
+    member_id: 0xa6984880
+    member_id: 0xb10f26b3
+    member_id: 0x4a185229
+    member_id: 0x3485089e
+    member_id: 0x64ebbe18
+  }
+}
+struct_union {
+  id: 0xdb44b469
+  kind: STRUCT
+  name: "dev_pm_domain"
+  definition {
+    bytesize: 240
+    member_id: 0xafea7a4d
+    member_id: 0x4636ec39
+    member_id: 0x0e2b2bd3
+    member_id: 0xdcf6f707
+    member_id: 0x50dab767
+    member_id: 0x563420bc
+    member_id: 0x2d081e2f
+  }
+}
+struct_union {
+  id: 0x1976f438
+  kind: STRUCT
+  name: "dev_pm_info"
+  definition {
+    bytesize: 352
+    member_id: 0x6fedd06b
+    member_id: 0xd61d73b2
+    member_id: 0x88efd55b
+    member_id: 0xe27af1b6
+    member_id: 0xeab2a8e8
+    member_id: 0x7f4b683f
+    member_id: 0x31e5c626
+    member_id: 0xdbad0855
+    member_id: 0x7054d878
+    member_id: 0xdaa08a17
+    member_id: 0xdbcffbe4
+    member_id: 0x1efb72d7
+    member_id: 0x2d1fe506
+    member_id: 0x4d8789fe
+    member_id: 0xc494ac76
+    member_id: 0xff3d33af
+    member_id: 0xf5741316
+    member_id: 0x919b625d
+    member_id: 0x5455780f
+    member_id: 0x4888e45a
+    member_id: 0xa4514daf
+    member_id: 0x5885f531
+    member_id: 0xf29973e2
+    member_id: 0xd6e661ca
+    member_id: 0xccc7037a
+    member_id: 0xf7e3e4a9
+    member_id: 0x05a8edba
+    member_id: 0x8a099700
+    member_id: 0xc5a636a8
+    member_id: 0xbd4ff6bb
+    member_id: 0x6b2fd010
+    member_id: 0x6c337333
+    member_id: 0x87f2640c
+    member_id: 0x51199a62
+    member_id: 0xfef01a6d
+    member_id: 0x4613c598
+    member_id: 0x03f31823
+    member_id: 0xb3026d07
+    member_id: 0x7176d308
+    member_id: 0x9ced8ac7
+    member_id: 0x5359c4ed
+    member_id: 0xb69781a6
+    member_id: 0x52cf305e
+    member_id: 0x9f6d32d0
+    member_id: 0xf7745d59
+    member_id: 0x1ca4299b
+    member_id: 0x8ff35db6
+    member_id: 0xc3c37835
+    member_id: 0x4ec6a52f
+    member_id: 0x7fdc61f1
+    member_id: 0x16c2f3ef
+    member_id: 0xb44fd4da
+    member_id: 0xed19b0dc
+    member_id: 0x2d08100c
+    member_id: 0x63760a9f
+  }
+}
+struct_union {
+  id: 0x4dd9575b
+  kind: STRUCT
+  name: "dev_pm_opp"
+  definition {
+    bytesize: 112
+    member_id: 0x0fa6c6af
+    member_id: 0x02ce5044
+    member_id: 0xe376e784
+    member_id: 0xe49c9c74
+    member_id: 0x41f583f3
+    member_id: 0xf3d7a8fc
+    member_id: 0x0a934b05
+    member_id: 0xc49fa7db
+    member_id: 0x3f53f611
+    member_id: 0x86ff4db3
+    member_id: 0xb881f2c0
+    member_id: 0x04acb031
+    member_id: 0x0b7fad3a
+    member_id: 0xc1a26dd8
+    member_id: 0x1dc634ec
+    member_id: 0x5317f113
+    member_id: 0xf3efe400
+    member_id: 0x3dfbc57e
+  }
+}
+struct_union {
+  id: 0x33568043
+  kind: STRUCT
+  name: "dev_pm_opp_config"
+  definition {
+    bytesize: 72
+    member_id: 0x7589f455
+    member_id: 0x02713895
+    member_id: 0xcef62442
+    member_id: 0x2905ec89
+    member_id: 0x44335928
+    member_id: 0xd4b36b00
+    member_id: 0xbad48ee7
+    member_id: 0xd7091b7f
+    member_id: 0xf3ee8263
+  }
+}
+struct_union {
+  id: 0x39d86502
+  kind: STRUCT
+  name: "dev_pm_opp_icc_bw"
+  definition {
+    bytesize: 8
+    member_id: 0x0f8451c4
+    member_id: 0x6ec785ce
+  }
+}
+struct_union {
+  id: 0xfdc42b0e
+  kind: STRUCT
+  name: "dev_pm_opp_supply"
+  definition {
+    bytesize: 40
+    member_id: 0x8ca734fe
+    member_id: 0x4cc6f98e
+    member_id: 0xdc31ee3a
+    member_id: 0xa4e611da
+    member_id: 0xcac77b95
+  }
+}
+struct_union {
+  id: 0x617aeeb3
+  kind: STRUCT
+  name: "dev_pm_ops"
+  definition {
+    bytesize: 192
+    member_id: 0x3d577c9c
+    member_id: 0x4a573691
+    member_id: 0xf3970a75
+    member_id: 0xcab23d2b
+    member_id: 0x2cccdecf
+    member_id: 0x141d2755
+    member_id: 0x9865a105
+    member_id: 0xfa208d76
+    member_id: 0xb13aedcd
+    member_id: 0x1f2177ef
+    member_id: 0x2e51d740
+    member_id: 0x85b7b767
+    member_id: 0xcbe9a11b
+    member_id: 0xde10fa05
+    member_id: 0x86f0bc08
+    member_id: 0xe1b4cd2d
+    member_id: 0xee8a76bf
+    member_id: 0x23483cfb
+    member_id: 0xf5ee1b52
+    member_id: 0x033f10ea
+    member_id: 0x9615b712
+    member_id: 0xd5ff19dd
+    member_id: 0xc48deae8
+    member_id: 0x2d081262
+  }
+}
+struct_union {
+  id: 0x043c03d0
+  kind: STRUCT
+  name: "dev_pm_qos"
+  definition {
+    bytesize: 352
+    member_id: 0x828c0235
+    member_id: 0x6725e1c0
+    member_id: 0xefd7d099
+    member_id: 0x2d85c124
+    member_id: 0x8100936d
+    member_id: 0xf959e81d
+    member_id: 0xae97e9a3
+  }
+}
+struct_union {
+  id: 0x724805ea
+  kind: STRUCT
+  name: "dev_pm_qos_request"
+  definition {
+    bytesize: 80
+    member_id: 0x5c605bbb
+    member_id: 0xffd88cf6
+    member_id: 0xce3bb3c1
+  }
+}
+struct_union {
+  id: 0x42e53a63
+  kind: STRUCT
+  name: "dev_power_governor"
+  definition {
+    bytesize: 16
+    member_id: 0xf8fe749e
+    member_id: 0xe2d495b2
+  }
+}
+struct_union {
+  id: 0x5a67912c
+  kind: STRUCT
+  name: "dev_printk_info"
+  definition {
+    bytesize: 64
+    member_id: 0x11c73d13
+    member_id: 0xea2f40e7
+  }
+}
+struct_union {
+  id: 0xb7e8bb7b
+  kind: STRUCT
+  name: "devfreq"
+  definition {
+    bytesize: 2064
+    member_id: 0x0fa6c6af
+    member_id: 0x2d4b35c2
+    member_id: 0xce1aca51
+    member_id: 0xa18e5a1e
+    member_id: 0xb04ae832
+    member_id: 0x1dc6365e
+    member_id: 0xd5e01ee5
+    member_id: 0xd60849ac
+    member_id: 0x8dbc7a57
+    member_id: 0x9cbe26cc
+    member_id: 0xc9088b8b
+    member_id: 0x9f54f047
+    member_id: 0xff8a9518
+    member_id: 0xb1ba283c
+    member_id: 0x61b405b7
+    member_id: 0x246856f6
+    member_id: 0x068a9bfe
+    member_id: 0x89c0a7bc
+    member_id: 0x5c3a098b
+    member_id: 0x7a34e0e9
+    member_id: 0xb4490be6
+    member_id: 0xdce23cc4
+    member_id: 0xb920e0d3
+    member_id: 0xc8835e1b
+    member_id: 0x0592c107
+    member_id: 0x274997b6
+    member_id: 0x428b2e65
+  }
+}
+struct_union {
+  id: 0x72fb7efe
+  kind: STRUCT
+  name: "devfreq_cooling_power"
+  definition {
+    bytesize: 8
+    member_id: 0x531e364c
+  }
+}
+struct_union {
+  id: 0x5adf14d3
+  kind: STRUCT
+  name: "devfreq_dev_profile"
+  definition {
+    bytesize: 72
+    member_id: 0x457fa503
+    member_id: 0x38d45c66
+    member_id: 0x1d385af7
+    member_id: 0xa69ebb56
+    member_id: 0xb38f067d
+    member_id: 0x56b1619f
+    member_id: 0x3329964b
+    member_id: 0x0d2e95e4
+    member_id: 0x8dbc7ecd
+    member_id: 0x9cbe20ac
+  }
+}
+struct_union {
+  id: 0x7091586a
+  kind: STRUCT
+  name: "devfreq_dev_status"
+  definition {
+    bytesize: 32
+    member_id: 0x8794a694
+    member_id: 0x48632103
+    member_id: 0x211f60d8
+    member_id: 0xf21adff5
+  }
+}
+struct_union {
+  id: 0xeee59200
+  kind: STRUCT
+  name: "devfreq_governor"
+  definition {
+    bytesize: 64
+    member_id: 0x0fa6c6af
+    member_id: 0x0da3d6d1
+    member_id: 0x4d9b2187
+    member_id: 0x2d901ab8
+    member_id: 0x953fe099
+    member_id: 0x5053bf2b
+  }
+}
+struct_union {
+  id: 0x030e9a89
+  kind: STRUCT
+  name: "devfreq_simple_ondemand_data"
+  definition {
+    bytesize: 8
+    member_id: 0x5be9842b
+    member_id: 0xa1b8202d
+  }
+}
+struct_union {
+  id: 0x5589e3d3
+  kind: STRUCT
+  name: "devfreq_stats"
+  definition {
+    bytesize: 32
+    member_id: 0x4beb9d8d
+    member_id: 0x25b12182
+    member_id: 0x41e4dcb8
+    member_id: 0x948ca3a5
+  }
+}
+struct_union {
+  id: 0x23230326
+  kind: STRUCT
+  name: "device"
+  definition {
+    bytesize: 912
+    member_id: 0x452b206c
+    member_id: 0x723322ad
+    member_id: 0xa6b86434
+    member_id: 0xdd57aa4b
+    member_id: 0x5c6460ee
+    member_id: 0xdad3e8d2
+    member_id: 0xd47cf8c1
+    member_id: 0x38c65ad9
+    member_id: 0x6d52ba76
+    member_id: 0xad89857f
+    member_id: 0x34e2fe3e
+    member_id: 0xa9102593
+    member_id: 0x2b2447f8
+    member_id: 0xc10560ba
+    member_id: 0x1667a111
+    member_id: 0x6f632c00
+    member_id: 0x3d3d20d0
+    member_id: 0x4d0c48ad
+    member_id: 0x56a2fe27
+    member_id: 0x514f04c9
+    member_id: 0x70ab2d7e
+    member_id: 0xebecc590
+    member_id: 0x327b1828
+    member_id: 0x1bdb3896
+    member_id: 0x38bc9c37
+    member_id: 0xf4c016ce
+    member_id: 0x5780e821
+    member_id: 0xf7c3f3d5
+    member_id: 0x6e4d8161
+    member_id: 0x70a0348a
+    member_id: 0xcce62b00
+    member_id: 0xda0f5b02
+    member_id: 0x08267623
+    member_id: 0x866b1a2e
+    member_id: 0x93011a84
+    member_id: 0xae9668e1
+    member_id: 0x6622ee76
+    member_id: 0xafaa917c
+    member_id: 0x1e41eb2a
+    member_id: 0x430bd351
+    member_id: 0x911e68b3
+    member_id: 0xfb9190e6
+    member_id: 0xe64283a6
+    member_id: 0x18ad1ca3
+    member_id: 0x0a6ba9e7
+    member_id: 0xc86e7bbe
+    member_id: 0x2d081bb1
+    member_id: 0x63760ccb
+    member_id: 0xac894ddb
+    member_id: 0xe0f6300c
+    member_id: 0x22369248
+    member_id: 0x66775bce
+    member_id: 0xa1b7d108
+    member_id: 0xe3f4b91a
+  }
+}
+struct_union {
+  id: 0x11cf9350
+  kind: STRUCT
+  name: "device_attribute"
+  definition {
+    bytesize: 32
+    member_id: 0x8c29a58d
+    member_id: 0x0a7180cd
+    member_id: 0xacd61ba6
+  }
+}
+struct_union {
+  id: 0x5d0e8a16
+  kind: STRUCT
+  name: "device_dma_parameters"
+  definition {
+    bytesize: 16
+    member_id: 0x60f39738
+    member_id: 0xbefa25ce
+    member_id: 0x52799b8c
+  }
+}
+struct_union {
+  id: 0xe3de788c
+  kind: STRUCT
+  name: "device_driver"
+  definition {
+    bytesize: 176
+    member_id: 0x0de57ce8
+    member_id: 0xdad3eb2c
+    member_id: 0x4a965b92
+    member_id: 0x413b0300
+    member_id: 0xae9f144a
+    member_id: 0xf69ec1af
+    member_id: 0x7e9aaed0
+    member_id: 0xf0b9c32d
+    member_id: 0xd77bd1ce
+    member_id: 0x2ae2fa8f
+    member_id: 0xb48e0c46
+    member_id: 0x9efba5fc
+    member_id: 0xf397f19d
+    member_id: 0xcab23d4c
+    member_id: 0x93011024
+    member_id: 0xf95461ff
+    member_id: 0x0578d172
+    member_id: 0x459e7a1f
+    member_id: 0xa6b5d767
+    member_id: 0x2d081bee
+    member_id: 0x63760b66
+    member_id: 0xac894f2b
+    member_id: 0xe0f63ec8
+  }
+}
+struct_union {
+  id: 0xb86303af
+  kind: STRUCT
+  name: "device_link"
+  definition {
+    bytesize: 1048
+    member_id: 0xf6f7ee6c
+    member_id: 0xb0d1441e
+    member_id: 0x11964435
+    member_id: 0xe4884498
+    member_id: 0x333c9ab0
+    member_id: 0x20fcc1ce
+    member_id: 0x2da18414
+    member_id: 0x583fca22
+    member_id: 0x02ce5129
+    member_id: 0x227902d6
+    member_id: 0x80374537
+    member_id: 0x2d0815a4
+    member_id: 0x63760e1a
+  }
+}
+struct_union {
+  id: 0xfb8ce84e
+  kind: STRUCT
+  name: "device_node"
+  definition {
+    bytesize: 248
+    member_id: 0x0de57ce8
+    member_id: 0xdb759dcb
+    member_id: 0x42a13f51
+    member_id: 0x6e711a27
+    member_id: 0x3f4120f9
+    member_id: 0xb0c7fc0c
+    member_id: 0x72050b5f
+    member_id: 0x38fc8f82
+    member_id: 0xeed6076d
+    member_id: 0x452b2d1a
+    member_id: 0x559335d4
+    member_id: 0xff8a98d7
+  }
+}
+struct_union {
+  id: 0x8e664ff3
+  kind: STRUCT
+  name: "device_physical_location"
+  definition {
+    bytesize: 16
+    member_id: 0xd3a8d2cb
+    member_id: 0x7f926278
+    member_id: 0x43e237a9
+    member_id: 0x43aeb87c
+    member_id: 0x0f82a1ea
+  }
+}
+struct_union {
+  id: 0x0ee4cf81
+  kind: STRUCT
+  name: "device_private"
+  definition {
+    bytesize: 216
+    member_id: 0x1862ef71
+    member_id: 0xb61869dc
+    member_id: 0xe9c74ca5
+    member_id: 0x574556a7
+    member_id: 0x65aa7bde
+    member_id: 0x94bc1785
+    member_id: 0xef977908
+    member_id: 0x572ecc04
+    member_id: 0xea307984
+    member_id: 0x6491a5c4
+  }
+}
+struct_union {
+  id: 0xf292150d
+  kind: STRUCT
+  name: "device_type"
+  definition {
+    bytesize: 48
+    member_id: 0x0de57ce8
+    member_id: 0x9301177f
+    member_id: 0x93b05631
+    member_id: 0x1ea565d3
+    member_id: 0xae966192
+    member_id: 0x0578de46
+  }
+}
+struct_union {
+  id: 0xbc952c91
+  kind: STRUCT
+  name: "devlink"
+}
+struct_union {
+  id: 0x8256fc56
+  kind: STRUCT
+  name: "devlink_linecard"
+}
+struct_union {
+  id: 0xc7e35718
+  kind: STRUCT
+  name: "devlink_port"
+  definition {
+    bytesize: 344
+    member_id: 0x7c00ef52
+    member_id: 0x4fd31bbd
+    member_id: 0x5685a7bf
+    member_id: 0xad7c8a1e
+    member_id: 0xc5a12bbd
+    member_id: 0x5c46dd88
+    member_id: 0x8f7bd607
+    member_id: 0x25da395c
+    member_id: 0x4dd44edb
+    member_id: 0x2fd2bd43
+    member_id: 0x5ed06c25
+    member_id: 0x9d529e18
+    member_id: 0x5e116f00
+    member_id: 0xef96bf4c
+    member_id: 0x6ac6877c
+    member_id: 0xefdb0c31
+    member_id: 0xf45f2394
+    member_id: 0xd1c402eb
+  }
+}
+struct_union {
+  id: 0xb7fdce5e
+  kind: STRUCT
+  name: "devlink_port_attrs"
+  definition {
+    bytesize: 60
+    member_id: 0x509ad375
+    member_id: 0x1d7e2b51
+    member_id: 0x3db0379c
+    member_id: 0xdf2fd3ca
+    member_id: 0x0bc9608d
+    member_id: 0x357170d2
+  }
+}
+struct_union {
+  id: 0xf0f5f897
+  kind: STRUCT
+  name: "devlink_port_pci_pf_attrs"
+  definition {
+    bytesize: 8
+    member_id: 0xd8dc9878
+    member_id: 0xca1045fb
+    member_id: 0x46e927d7
+  }
+}
+struct_union {
+  id: 0xcf1dc34b
+  kind: STRUCT
+  name: "devlink_port_pci_sf_attrs"
+  definition {
+    bytesize: 12
+    member_id: 0xd8dc9878
+    member_id: 0x5c1e3ade
+    member_id: 0xca104c21
+    member_id: 0x46e92f8a
+  }
+}
+struct_union {
+  id: 0x4036527b
+  kind: STRUCT
+  name: "devlink_port_pci_vf_attrs"
+  definition {
+    bytesize: 12
+    member_id: 0xd8dc9878
+    member_id: 0xca1045fb
+    member_id: 0xcfed83e4
+    member_id: 0x46e92ff7
+  }
+}
+struct_union {
+  id: 0x5abe7554
+  kind: STRUCT
+  name: "devlink_port_phys_attrs"
+  definition {
+    bytesize: 8
+    member_id: 0xdcd13b2b
+    member_id: 0xd69a643e
+  }
+}
+struct_union {
+  id: 0x1777d31b
+  kind: STRUCT
+  name: "devlink_rate"
+  definition {
+    bytesize: 80
+    member_id: 0x7c00ef52
+    member_id: 0x5cf2824f
+    member_id: 0x5685afdd
+    member_id: 0x5911980a
+    member_id: 0xd3866153
+    member_id: 0x6d8a9147
+    member_id: 0x723e3840
+    member_id: 0x38c01e38
+  }
+}
+struct_union {
+  id: 0xd1d07704
+  kind: STRUCT
+  name: "dir_context"
+  definition {
+    bytesize: 16
+    member_id: 0x258e7f73
+    member_id: 0x2683bb52
+  }
+}
+struct_union {
+  id: 0xf51d515d
+  kind: STRUCT
+  name: "discovery_state"
+  definition {
+    bytesize: 144
+    member_id: 0x5c31f5ad
+    member_id: 0x729d5690
+    member_id: 0xeebc75a0
+    member_id: 0x71771f41
+    member_id: 0x7434c23f
+    member_id: 0x5a02e301
+    member_id: 0x0e30e1cb
+    member_id: 0xf42c429e
+    member_id: 0x7b99d91c
+    member_id: 0xf7e9992e
+    member_id: 0xe9cc380f
+    member_id: 0x14423a75
+    member_id: 0xec513643
+    member_id: 0x11ce48cf
+    member_id: 0x0fb93397
+    member_id: 0x32cf6f20
+    member_id: 0x4f1b13e5
+    member_id: 0x4d05fb85
+    member_id: 0x71ed326b
+    member_id: 0x6eba58e1
+    member_id: 0x3326d9c7
+  }
+}
+struct_union {
+  id: 0x7a249348
+  kind: STRUCT
+  name: "disk_events"
+  definition {
+    bytesize: 240
+    member_id: 0x0fa6c6af
+    member_id: 0x6071a85b
+    member_id: 0x2d1fe44c
+    member_id: 0x628f85ab
+    member_id: 0x42372350
+    member_id: 0xf98ac68d
+    member_id: 0xcb96bab0
+    member_id: 0x681c7383
+    member_id: 0x20d98a61
+  }
+}
+struct_union {
+  id: 0x34c60c9d
+  kind: STRUCT
+  name: "disk_stats"
+  definition {
+    bytesize: 152
+    member_id: 0x1858a7c1
+    member_id: 0x37e4ca95
+    member_id: 0x1354d68f
+    member_id: 0x5052f78e
+    member_id: 0x145f4d1f
+    member_id: 0x19dba48b
+  }
+}
+struct_union {
+  id: 0x4dc3ffac
+  kind: STRUCT
+  name: "display_timing"
+  definition {
+    bytesize: 112
+    member_id: 0xa5709cfc
+    member_id: 0x8e171597
+    member_id: 0xbd4be4b5
+    member_id: 0x7a0bb21a
+    member_id: 0x0ebdaf8f
+    member_id: 0xb6eda17e
+    member_id: 0xf3b82a4c
+    member_id: 0x0306d4bf
+    member_id: 0xb2ad9e5f
+    member_id: 0x2d0ec9dd
+  }
+}
+struct_union {
+  id: 0x75bc7540
+  kind: STRUCT
+  name: "dl_bw"
+  definition {
+    bytesize: 24
+    member_id: 0x2d244e18
+    member_id: 0x949eefdb
+    member_id: 0xc982dd22
+  }
+}
+struct_union {
+  id: 0xd93398f8
+  kind: STRUCT
+  name: "dl_rq"
+  definition {
+    bytesize: 96
+    member_id: 0x930fdb11
+    member_id: 0xfe6b2d52
+    member_id: 0xe563d939
+    member_id: 0xe55f916d
+    member_id: 0x9b3e67df
+    member_id: 0x75a68eb3
+    member_id: 0x53253f85
+    member_id: 0x2cfef737
+    member_id: 0xad9504ea
+    member_id: 0xb20c2eb5
+  }
+}
+struct_union {
+  id: 0x906b8630
+  kind: STRUCT
+  name: "dma_async_tx_descriptor"
+  definition {
+    bytesize: 144
+    member_id: 0x5805fed3
+    member_id: 0x2d5680df
+    member_id: 0x30b86351
+    member_id: 0x46b9cddd
+    member_id: 0x38e3ba4a
+    member_id: 0xf325ad36
+    member_id: 0x560ee67a
+    member_id: 0x146d901e
+    member_id: 0x0de82081
+    member_id: 0xfeec1f7d
+    member_id: 0x64d13d0a
+    member_id: 0xf7b6b92a
+    member_id: 0x11dd883a
+    member_id: 0x721ff08c
+    member_id: 0x2d1fef3f
+    member_id: 0x2d081f94
+    member_id: 0x63760151
+    member_id: 0xac894e49
+    member_id: 0xe0f6393d
+  }
+}
+struct_union {
+  id: 0x29600806
+  kind: STRUCT
+  name: "dma_buf"
+  definition {
+    bytesize: 304
+    member_id: 0xd98a291a
+    member_id: 0xbf9f3aea
+    member_id: 0x3a9e1210
+    member_id: 0xafb57f42
+    member_id: 0x2d4b3bc7
+    member_id: 0x7a9a7619
+    member_id: 0xd65b5c85
+    member_id: 0x4a63e672
+    member_id: 0x0de5741b
+    member_id: 0x9bc881e4
+    member_id: 0x4a965f26
+    member_id: 0xd773df14
+    member_id: 0x59119edc
+    member_id: 0xbb9d9ad2
+    member_id: 0x5e16de13
+    member_id: 0xb2651d30
+    member_id: 0xaf33f785
+    member_id: 0x5f2a809f
+    member_id: 0x2d081239
+    member_id: 0x637600d7
+  }
+}
+struct_union {
+  id: 0x8e254e86
+  kind: STRUCT
+  name: "dma_buf_attach_ops"
+  definition {
+    bytesize: 24
+    member_id: 0xf70eac77
+    member_id: 0x38f5401c
+    member_id: 0x2d081cf0
+  }
+}
+struct_union {
+  id: 0x5f2435a4
+  kind: STRUCT
+  name: "dma_buf_attachment"
+  definition {
+    bytesize: 96
+    member_id: 0x590c841e
+    member_id: 0xce3bbe52
+    member_id: 0x0fa6cf6d
+    member_id: 0x716e8d34
+    member_id: 0x2e3bab58
+    member_id: 0x3be8531a
+    member_id: 0x5039dde9
+    member_id: 0x749b648c
+    member_id: 0x591193b9
+    member_id: 0x7eeaef14
+    member_id: 0x2d08134b
+    member_id: 0x63760b9f
+  }
+}
+struct_union {
+  id: 0x7157e430
+  kind: STRUCT
+  name: "dma_buf_export_info"
+  definition {
+    bytesize: 72
+    member_id: 0x4a63ecd4
+    member_id: 0x4a9656b1
+    member_id: 0xafb5762b
+    member_id: 0xd98a21d3
+    member_id: 0x2d0fa426
+    member_id: 0xbb9d9796
+    member_id: 0x59119933
+    member_id: 0x2d081245
+    member_id: 0x637602ba
+  }
+}
+struct_union {
+  id: 0x3eb08be2
+  kind: STRUCT
+  name: "dma_buf_ops"
+  definition {
+    bytesize: 144
+    member_id: 0xd7f13156
+    member_id: 0x96184eda
+    member_id: 0x0e2b7283
+    member_id: 0xb8260867
+    member_id: 0x343f148e
+    member_id: 0x8f91342a
+    member_id: 0x98e543dc
+    member_id: 0xae964f42
+    member_id: 0x21bcbcbc
+    member_id: 0xedb63a93
+    member_id: 0x686c597e
+    member_id: 0x8fe6fd91
+    member_id: 0x87fe9188
+    member_id: 0xb703fce6
+    member_id: 0x62f950cd
+    member_id: 0xbb27e3fb
+    member_id: 0x2d08122d
+    member_id: 0x637604d4
+  }
+}
+struct_union {
+  id: 0x359df94e
+  kind: STRUCT
+  name: "dma_buf_poll_cb_t"
+  definition {
+    bytesize: 40
+    member_id: 0x534a0d68
+    member_id: 0x5e1f316f
+    member_id: 0x229b106f
+  }
+}
+struct_union {
+  id: 0x4737f461
+  kind: STRUCT
+  name: "dma_buf_sysfs_entry"
+  definition {
+    bytesize: 104
+    member_id: 0x452b206c
+    member_id: 0x590c8cb0
+  }
+}
+struct_union {
+  id: 0xc3202fd8
+  kind: STRUCT
+  name: "dma_chan"
+  definition {
+    bytesize: 112
+    member_id: 0xea1def0c
+    member_id: 0xcf13e631
+    member_id: 0x5805f711
+    member_id: 0x0ee26bd6
+    member_id: 0x80a4fe76
+    member_id: 0xce261ad4
+    member_id: 0x0de57b2f
+    member_id: 0x7a634154
+    member_id: 0xed7615b7
+    member_id: 0x589ca5be
+    member_id: 0x2aadfa64
+    member_id: 0x7e00079e
+    member_id: 0xfab1d596
+    member_id: 0xf5c410e8
+    member_id: 0x91796509
+  }
+}
+struct_union {
+  id: 0x55a0327c
+  kind: STRUCT
+  name: "dma_chan_dev"
+  definition {
+    bytesize: 928
+    member_id: 0x46b9c41f
+    member_id: 0xea110f27
+    member_id: 0x8e0e1819
+    member_id: 0x8f62471e
+  }
+}
+struct_union {
+  id: 0x1b1d0b2e
+  kind: STRUCT
+  name: "dma_chan_percpu"
+  definition {
+    bytesize: 16
+    member_id: 0xd235358f
+    member_id: 0x8cf55cde
+  }
+}
+struct_union {
+  id: 0x594eacb7
+  kind: STRUCT
+  name: "dma_coherent_mem"
+  definition {
+    bytesize: 48
+    member_id: 0xc21c7538
+    member_id: 0x8fb27242
+    member_id: 0xeb463452
+    member_id: 0xd9193468
+    member_id: 0x8941b706
+    member_id: 0x9a7d37a1
+    member_id: 0x4c5b1a38
+  }
+}
+struct_union {
+  id: 0x5f290d96
+  kind: STRUCT
+  name: "dma_descriptor_metadata_ops"
+  definition {
+    bytesize: 24
+    member_id: 0x961aa4b2
+    member_id: 0xecbe2867
+    member_id: 0xda5efa78
+  }
+}
+struct_union {
+  id: 0x955fc241
+  kind: STRUCT
+  name: "dma_device"
+  definition {
+    bytesize: 384
+    member_id: 0xce703b5d
+    member_id: 0x59c2057b
+    member_id: 0xc35f15b9
+    member_id: 0xea9495a3
+    member_id: 0x523f440f
+    member_id: 0xa374ddcd
+    member_id: 0x7cb8b76c
+    member_id: 0x5b723dba
+    member_id: 0xeedc98e9
+    member_id: 0xf63e7006
+    member_id: 0xec1f94e7
+    member_id: 0x82c3d11e
+    member_id: 0x767dc80c
+    member_id: 0x9e2de752
+    member_id: 0x8e0e1aeb
+    member_id: 0xce3bb015
+    member_id: 0x4a965aa3
+    member_id: 0xebf70950
+    member_id: 0x0a8a64f7
+    member_id: 0x3adb1cd8
+    member_id: 0x6f11451c
+    member_id: 0x7b032040
+    member_id: 0x9c5d0a81
+    member_id: 0xfc90ca3a
+    member_id: 0xb52221b3
+    member_id: 0x0a157815
+    member_id: 0x8efeffd6
+    member_id: 0x38e78b66
+    member_id: 0xefc959d6
+    member_id: 0xe0e2042e
+    member_id: 0x55adb60e
+    member_id: 0xfe49f455
+    member_id: 0xe62b1658
+    member_id: 0x07b7787f
+    member_id: 0x4553af8c
+    member_id: 0xd812ad61
+    member_id: 0xef261a94
+    member_id: 0x3bdeb1a8
+    member_id: 0x2d93d965
+    member_id: 0x0f27fe9a
+    member_id: 0x3ade8125
+    member_id: 0xed43e412
+    member_id: 0xf496a56c
+    member_id: 0x7591e5a4
+    member_id: 0x13ceda9a
+    member_id: 0x1b3a472a
+    member_id: 0x05cc8744
+    member_id: 0x8f624aec
+    member_id: 0x8973821d
+    member_id: 0x58ac3243
+    member_id: 0x8d662f3c
+    member_id: 0xf719f956
+  }
+}
+struct_union {
+  id: 0x266e8da3
+  kind: STRUCT
+  name: "dma_fence"
+  definition {
+    bytesize: 64
+    member_id: 0x2ddaaba2
+    member_id: 0xafba51ac
+    member_id: 0x3c767a21
+    member_id: 0x41251b02
+    member_id: 0x79707b8f
+    member_id: 0x2d5bf0a8
+    member_id: 0x05ec0325
+    member_id: 0x7f61f58c
+  }
+}
+struct_union {
+  id: 0x13749c0f
+  kind: STRUCT
+  name: "dma_fence_array"
+  definition {
+    bytesize: 120
+    member_id: 0x85fc8006
+    member_id: 0x2d1fe79d
+    member_id: 0x3438f5a3
+    member_id: 0x03585a0a
+    member_id: 0xb0ef7cde
+    member_id: 0xd64002f5
+  }
+}
+struct_union {
+  id: 0xb0d2a582
+  kind: STRUCT
+  name: "dma_fence_cb"
+  definition {
+    bytesize: 24
+    member_id: 0x0fa6c6af
+    member_id: 0x21a630e3
+  }
+}
+struct_union {
+  id: 0x10aa46b4
+  kind: STRUCT
+  name: "dma_fence_chain"
+  definition {
+    bytesize: 128
+    member_id: 0x85fc8006
+    member_id: 0xbd8477f7
+    member_id: 0xaa5fe510
+    member_id: 0xcec81bfa
+    member_id: 0x334ced9f
+    member_id: 0x2d1fe476
+  }
+}
+struct_union {
+  id: 0xcc1ac719
+  kind: STRUCT
+  name: "dma_fence_ops"
+  definition {
+    bytesize: 72
+    member_id: 0x38d66b32
+    member_id: 0x3802939d
+    member_id: 0x1829bd8d
+    member_id: 0x5d656617
+    member_id: 0xb61e46bc
+    member_id: 0x200d0b57
+    member_id: 0xae96759d
+    member_id: 0xd5c1efd3
+    member_id: 0x14d0dfac
+  }
+}
+struct_union {
+  id: 0x7f49bdff
+  kind: STRUCT
+  name: "dma_filter"
+  definition {
+    bytesize: 24
+    member_id: 0xf745b309
+    member_id: 0x77124dee
+    member_id: 0x8dcea6f3
+  }
+}
+struct_union {
+  id: 0x1b63e640
+  kind: STRUCT
+  name: "dma_heap"
+  definition {
+    bytesize: 200
+    member_id: 0x0de57ce8
+    member_id: 0xafbcece4
+    member_id: 0x59119163
+    member_id: 0xf81d6349
+    member_id: 0x7c00eff9
+    member_id: 0xd78582b0
+    member_id: 0x05ec0302
+    member_id: 0x2c715c00
+  }
+}
+struct_union {
+  id: 0x534da9f4
+  kind: STRUCT
+  name: "dma_heap_export_info"
+  definition {
+    bytesize: 24
+    member_id: 0x0de57ce8
+    member_id: 0xafbcece4
+    member_id: 0x59119163
+  }
+}
+struct_union {
+  id: 0xa7ce4837
+  kind: STRUCT
+  name: "dma_heap_ops"
+  definition {
+    bytesize: 16
+    member_id: 0x7fa1c349
+    member_id: 0x4f7ab1fa
+  }
+}
+struct_union {
+  id: 0x33876fa0
+  kind: STRUCT
+  name: "dma_interleaved_template"
+  definition {
+    bytesize: 40
+    member_id: 0x43f73cfc
+    member_id: 0xf8fbf216
+    member_id: 0x2e075f03
+    member_id: 0xeb5793cb
+    member_id: 0x04066230
+    member_id: 0xe1be4651
+    member_id: 0x1f0ebced
+    member_id: 0xa531119d
+    member_id: 0xcd725683
+    member_id: 0x6b89914a
+  }
+}
+struct_union {
+  id: 0x04351df2
+  kind: STRUCT
+  name: "dma_map_ops"
+  definition {
+    bytesize: 232
+    member_id: 0x2d2d0138
+    member_id: 0x45f358cc
+    member_id: 0xfeac67ee
+    member_id: 0x75fd54b0
+    member_id: 0xc53637a2
+    member_id: 0xb126ee46
+    member_id: 0x8200ecca
+    member_id: 0x87feb639
+    member_id: 0x293d5227
+    member_id: 0x8b540a00
+    member_id: 0x5c4b363a
+    member_id: 0x69fdbcf4
+    member_id: 0x8cf587ce
+    member_id: 0x7cbb756d
+    member_id: 0x128b36d4
+    member_id: 0xaa62c88f
+    member_id: 0x042805d7
+    member_id: 0x4431d612
+    member_id: 0xbeb08c48
+    member_id: 0xff983583
+    member_id: 0x1c20b4dd
+    member_id: 0x9615af37
+    member_id: 0xf2b20eb6
+    member_id: 0xb8d181f5
+    member_id: 0xc4db6ca3
+    member_id: 0x2d081c8a
+    member_id: 0x63760a8e
+    member_id: 0xac894e73
+    member_id: 0xe0f63238
+  }
+}
+struct_union {
+  id: 0x9fd936b6
+  kind: STRUCT
+  name: "dma_pool"
+  definition {
+    bytesize: 104
+    member_id: 0x1973759c
+    member_id: 0x2d1fe547
+    member_id: 0xd98a21d3
+    member_id: 0xce3bba18
+    member_id: 0x17497109
+    member_id: 0x62ad5394
+    member_id: 0x0d81b47d
+    member_id: 0x6a296ea1
+  }
+}
+struct_union {
+  id: 0xb7568934
+  kind: STRUCT
+  name: "dma_resv"
+  definition {
+    bytesize: 64
+    member_id: 0x2d81aea3
+    member_id: 0xb0e7a0c0
+  }
+}
+struct_union {
+  id: 0x1b646039
+  kind: STRUCT
+  name: "dma_resv_iter"
+  definition {
+    bytesize: 48
+    member_id: 0x757231c3
+    member_id: 0x074cfed2
+    member_id: 0xcec81441
+    member_id: 0x45eaa685
+    member_id: 0xad7c8efd
+    member_id: 0xb0e7a71c
+    member_id: 0x3438fcbb
+    member_id: 0xd901b2d5
+  }
+}
+struct_union {
+  id: 0x207fdbcb
+  kind: STRUCT
+  name: "dma_resv_list"
+  definition {
+    bytesize: 24
+    member_id: 0x95dac977
+    member_id: 0x34b47ff3
+    member_id: 0x5babec5a
+    member_id: 0xb62fc331
+  }
+}
+struct_union {
+  id: 0x060c8a8c
+  kind: STRUCT
+  name: "dma_router"
+  definition {
+    bytesize: 16
+    member_id: 0xce3bbab3
+    member_id: 0xdcdb6d37
+  }
+}
+struct_union {
+  id: 0x363669db
+  kind: STRUCT
+  name: "dma_slave_caps"
+  definition {
+    bytesize: 36
+    member_id: 0x0a8a6a2b
+    member_id: 0x3adb13c8
+    member_id: 0x6f114339
+    member_id: 0x7b03235f
+    member_id: 0x9c5d053e
+    member_id: 0xfc90ce11
+    member_id: 0xf3d4bdbf
+    member_id: 0xe5cdfc8b
+    member_id: 0xeaebb6f5
+    member_id: 0x0a157914
+    member_id: 0xb5222b9b
+  }
+}
+struct_union {
+  id: 0x5ed0bdd0
+  kind: STRUCT
+  name: "dma_slave_config"
+  definition {
+    bytesize: 72
+    member_id: 0xa069b1d1
+    member_id: 0xd2778ee7
+    member_id: 0x59edf322
+    member_id: 0x65a0fd14
+    member_id: 0xe0ef193e
+    member_id: 0x031b1a4e
+    member_id: 0xb25316c3
+    member_id: 0x03f05941
+    member_id: 0xcc87b2e1
+    member_id: 0x5b95c675
+    member_id: 0x1c8604de
+    member_id: 0x3cf38891
+  }
+}
+struct_union {
+  id: 0x54ac4d03
+  kind: STRUCT
+  name: "dma_slave_map"
+  definition {
+    bytesize: 24
+    member_id: 0x8a8d8547
+    member_id: 0xcf2fae7d
+    member_id: 0xb5a47d71
+  }
+}
+struct_union {
+  id: 0x4b1a42d7
+  kind: STRUCT
+  name: "dma_tx_state"
+  definition {
+    bytesize: 16
+    member_id: 0x2620a79a
+    member_id: 0x8bf1b895
+    member_id: 0x4335a816
+    member_id: 0x598c6943
+  }
+}
+struct_union {
+  id: 0x52d42832
+  kind: STRUCT
+  name: "dmabuf_page_pool"
+  definition {
+    bytesize: 72
+    member_id: 0x65503eb0
+    member_id: 0xb7d199ad
+    member_id: 0x2d1feb42
+    member_id: 0xa4a1837d
+    member_id: 0xb59c7b0e
+    member_id: 0x7c00e825
+  }
+}
+struct_union {
+  id: 0xa8c55087
+  kind: STRUCT
+  name: "dmaengine_result"
+  definition {
+    bytesize: 8
+    member_id: 0x07cb2b16
+    member_id: 0x4335a1cc
+  }
+}
+struct_union {
+  id: 0x458eb1b8
+  kind: STRUCT
+  name: "dmaengine_unmap_data"
+  definition {
+    bytesize: 32
+    member_id: 0xd73c42a5
+    member_id: 0xaf10c244
+    member_id: 0xecd173ca
+    member_id: 0x03541dc9
+    member_id: 0xce3bbe52
+    member_id: 0x02ce5044
+    member_id: 0xb8f1e8f7
+    member_id: 0x24d1edc6
+  }
+}
+struct_union {
+  id: 0x33fed362
+  kind: STRUCT
+  name: "dql"
+  definition {
+    bytesize: 128
+    member_id: 0xc7386454
+    member_id: 0x96570ed4
+    member_id: 0xc8030ed6
+    member_id: 0xa94f3c6a
+    member_id: 0x9236753b
+    member_id: 0xf8d0387d
+    member_id: 0x86da78f8
+    member_id: 0x77ea2644
+    member_id: 0xf04cb8a1
+    member_id: 0x837b6426
+    member_id: 0x4b0f53d7
+    member_id: 0xda7d62a6
+    member_id: 0x08c0d60a
+  }
+}
+struct_union {
+  id: 0xd24c3bf1
+  kind: STRUCT
+  name: "dquot"
+  definition {
+    bytesize: 224
+    member_id: 0xf0de3702
+    member_id: 0xb3454cf0
+    member_id: 0xa21aba41
+    member_id: 0xc20b92a6
+    member_id: 0x4870cd96
+    member_id: 0xf8bb696c
+    member_id: 0x535fdeda
+    member_id: 0x9f508694
+    member_id: 0x159eaff6
+    member_id: 0x4be0862b
+    member_id: 0xbad2d986
+    member_id: 0x8fbe1590
+  }
+}
+struct_union {
+  id: 0x0443ddf6
+  kind: STRUCT
+  name: "dquot_operations"
+  definition {
+    bytesize: 104
+    member_id: 0x9f9e7bb5
+    member_id: 0xaf25a3f3
+    member_id: 0xa761d691
+    member_id: 0x18853772
+    member_id: 0xc23f7842
+    member_id: 0x0543a980
+    member_id: 0xb0e34bee
+    member_id: 0x8446c45c
+    member_id: 0x640a95c9
+    member_id: 0xb10f74f3
+    member_id: 0x09a37e30
+    member_id: 0x2d08170f
+    member_id: 0x6376010c
+  }
+}
+struct_union {
+  id: 0x3cd93294
+  kind: STRUCT
+  name: "driver_attribute"
+  definition {
+    bytesize: 32
+    member_id: 0x8c29a58d
+    member_id: 0x0a728910
+    member_id: 0xacd524f6
+  }
+}
+struct_union {
+  id: 0x343b9379
+  kind: STRUCT
+  name: "driver_data"
+}
+struct_union {
+  id: 0xc460028a
+  kind: STRUCT
+  name: "driver_info"
+  definition {
+    bytesize: 160
+    member_id: 0x317e664b
+    member_id: 0x2d0fa06c
+    member_id: 0x6d132c4c
+    member_id: 0x5994b26d
+    member_id: 0x6290827d
+    member_id: 0x69a55104
+    member_id: 0x2afab2be
+    member_id: 0x42f7cb5a
+    member_id: 0x2069471f
+    member_id: 0x027dc99d
+    member_id: 0x92de6fb0
+    member_id: 0xbcd1df4e
+    member_id: 0x8a6b6b4e
+    member_id: 0x61d268eb
+    member_id: 0x9f5f61bb
+    member_id: 0x098f8c42
+    member_id: 0x5ccc4e6f
+    member_id: 0xb396f982
+    member_id: 0xffa15c7e
+    member_id: 0x2d081bee
+    member_id: 0x63760b66
+  }
+}
+struct_union {
+  id: 0x3812b02e
+  kind: STRUCT
+  name: "driver_private"
+  definition {
+    bytesize: 184
+    member_id: 0x452b206c
+    member_id: 0x96ee9142
+    member_id: 0x5745586b
+    member_id: 0x11f0d9f9
+    member_id: 0xd47cf744
+  }
+}
+struct_union {
+  id: 0x9cb7b96f
+  kind: STRUCT
+  name: "drm_atomic_helper_damage_iter"
+  definition {
+    bytesize: 40
+    member_id: 0xcff676ea
+    member_id: 0x7a2292e8
+    member_id: 0x1c9b1176
+    member_id: 0xe5b23071
+    member_id: 0x93c958b7
+  }
+}
+struct_union {
+  id: 0xae401000
+  kind: STRUCT
+  name: "drm_atomic_state"
+  definition {
+    bytesize: 136
+    member_id: 0xce703b5d
+    member_id: 0xce02e215
+    member_id: 0x56151729
+    member_id: 0x7f4a45d1
+    member_id: 0x31cc2a94
+    member_id: 0xe631c0e0
+    member_id: 0x2908bd05
+    member_id: 0x04f04c11
+    member_id: 0x18974d62
+    member_id: 0xf5eefba7
+    member_id: 0xd9ae2f36
+    member_id: 0xf9f27538
+    member_id: 0xb2f1e437
+    member_id: 0x344b99f0
+    member_id: 0xac729b4f
+  }
+}
+struct_union {
+  id: 0xb3e37f8f
+  kind: STRUCT
+  name: "drm_bridge"
+  definition {
+    bytesize: 272
+    member_id: 0x8575e25c
+    member_id: 0xce02e54e
+    member_id: 0x3bc2900d
+    member_id: 0x9d6ea259
+    member_id: 0xf7c3ff37
+    member_id: 0x7c00e18e
+    member_id: 0x1f6734de
+    member_id: 0x361e00a9
+    member_id: 0x2f165559
+    member_id: 0xafed359c
+    member_id: 0x5c31f0a9
+    member_id: 0x50e8b0b9
+    member_id: 0x1036f59b
+    member_id: 0xf97928be
+    member_id: 0x01a76bb5
+    member_id: 0xedc15649
+  }
+}
+struct_union {
+  id: 0x38e4a499
+  kind: STRUCT
+  name: "drm_bridge_funcs"
+  definition {
+    bytesize: 208
+    member_id: 0x961a45b8
+    member_id: 0x0e2908f4
+    member_id: 0xf7b93c75
+    member_id: 0x6294a6c4
+    member_id: 0x0d8131f1
+    member_id: 0x959c0eb0
+    member_id: 0xba6949f0
+    member_id: 0x5e4a7904
+    member_id: 0x98ebd4a4
+    member_id: 0x210c63b1
+    member_id: 0x2d7bf1b1
+    member_id: 0x09a970d7
+    member_id: 0xba3a0b2d
+    member_id: 0x607d5ea7
+    member_id: 0xa33a0314
+    member_id: 0x98dcfed0
+    member_id: 0xf5a4a017
+    member_id: 0xd0a11902
+    member_id: 0xb10210ae
+    member_id: 0x9863bfe7
+    member_id: 0xf8934200
+    member_id: 0x8689b2eb
+    member_id: 0x50f543ca
+    member_id: 0x923a0bd2
+    member_id: 0x51aeab45
+    member_id: 0xebaaf9b9
+  }
+}
+struct_union {
+  id: 0x3aeb2365
+  kind: STRUCT
+  name: "drm_bridge_state"
+  definition {
+    bytesize: 40
+    member_id: 0x85d6188a
+    member_id: 0x7bb521c9
+    member_id: 0xe0020bd6
+    member_id: 0xd4de9aa7
+  }
+}
+struct_union {
+  id: 0x32f7732d
+  kind: STRUCT
+  name: "drm_bridge_timings"
+  definition {
+    bytesize: 16
+    member_id: 0x6b70ce62
+    member_id: 0x4bd47e3e
+    member_id: 0xc2e07f3f
+    member_id: 0x8c9f51a9
+  }
+}
+struct_union {
+  id: 0x4b7d6e32
+  kind: STRUCT
+  name: "drm_bus_cfg"
+  definition {
+    bytesize: 8
+    member_id: 0x089e5b85
+    member_id: 0x2da1814e
+  }
+}
+struct_union {
+  id: 0xbb6e8a40
+  kind: STRUCT
+  name: "drm_client_buffer"
+  definition {
+    bytesize: 48
+    member_id: 0x853226c6
+    member_id: 0xb82a99c7
+    member_id: 0xfae1bedf
+    member_id: 0xf6261b03
+    member_id: 0x8d2050fa
+    member_id: 0xfaa79279
+  }
+}
+struct_union {
+  id: 0x1f56f2cc
+  kind: STRUCT
+  name: "drm_client_dev"
+  definition {
+    bytesize: 104
+    member_id: 0xce02e6f4
+    member_id: 0x0de57809
+    member_id: 0x7c00e690
+    member_id: 0x361b8d9e
+    member_id: 0xbf953559
+    member_id: 0xc817cd42
+    member_id: 0x6bced63f
+  }
+}
+struct_union {
+  id: 0x60955293
+  kind: STRUCT
+  name: "drm_client_funcs"
+  definition {
+    bytesize: 32
+    member_id: 0x4a965250
+    member_id: 0x023fff15
+    member_id: 0xfa207214
+    member_id: 0x75d72ecb
+  }
+}
+struct_union {
+  id: 0x836329dc
+  kind: STRUCT
+  name: "drm_clip_rect"
+  definition {
+    bytesize: 8
+    member_id: 0x99578193
+    member_id: 0x3b89dd3f
+    member_id: 0xd996127e
+    member_id: 0xfa4d7ab6
+  }
+}
+struct_union {
+  id: 0x4c8c4de8
+  kind: STRUCT
+  name: "drm_cmdline_mode"
+  definition {
+    bytesize: 84
+    member_id: 0x0d81b30a
+    member_id: 0x5f7e39e7
+    member_id: 0x80b72eb7
+    member_id: 0x1a51d264
+    member_id: 0x8db2a508
+    member_id: 0xb8005ba2
+    member_id: 0x89eef5ec
+    member_id: 0xd8728415
+    member_id: 0xfb18a717
+    member_id: 0xfbe2a5a1
+    member_id: 0xf59f1343
+    member_id: 0xc8c4fee8
+    member_id: 0xdf3c0ae1
+    member_id: 0x93e0c28c
+    member_id: 0xe3a9ab38
+    member_id: 0x45e2d2d0
+  }
+}
+struct_union {
+  id: 0xec967f20
+  kind: STRUCT
+  name: "drm_connector"
+  definition {
+    bytesize: 1928
+    member_id: 0xce02e6f4
+    member_id: 0xc1884587
+    member_id: 0x8c0a4029
+    member_id: 0x6e4d8897
+    member_id: 0xb58971ab
+    member_id: 0x9719a21e
+    member_id: 0x853396cd
+    member_id: 0x0ddfe715
+    member_id: 0xad8980b8
+    member_id: 0xad7c8f1d
+    member_id: 0x90e22f47
+    member_id: 0xc0a9820f
+    member_id: 0x50e8b395
+    member_id: 0x72a50ec1
+    member_id: 0x92c269fc
+    member_id: 0x9fa4c393
+    member_id: 0x45bcfae8
+    member_id: 0x84952387
+    member_id: 0x202d7d6e
+    member_id: 0x5964abc4
+    member_id: 0x0bb9687a
+    member_id: 0x3618b5a2
+    member_id: 0xabec48fb
+    member_id: 0x3f9849bb
+    member_id: 0x3d8ff1b5
+    member_id: 0xab28431b
+    member_id: 0xc978fef0
+    member_id: 0x50279711
+    member_id: 0xe37d9637
+    member_id: 0xbe7db9bb
+    member_id: 0x6b39d825
+    member_id: 0xcc3e8da0
+    member_id: 0x0cc22383
+    member_id: 0xb9f079d6
+    member_id: 0xf817b513
+    member_id: 0x3b5924e3
+    member_id: 0x080c0551
+    member_id: 0xdf3c0436
+    member_id: 0xb4e4bcf1
+    member_id: 0xfbbd10f7
+    member_id: 0x1b52859f
+    member_id: 0x3bc29405
+    member_id: 0x98bed34f
+    member_id: 0x8a0c4c56
+    member_id: 0x7459b44c
+    member_id: 0x8479dd5f
+    member_id: 0x1036ffd4
+    member_id: 0x37b05525
+    member_id: 0x6941f7ca
+    member_id: 0x96f926dc
+    member_id: 0xa876fb9d
+    member_id: 0xd1704840
+    member_id: 0x72df7a07
+    member_id: 0x7d191394
+    member_id: 0x0e565aaf
+    member_id: 0x9c38b0ec
+    member_id: 0xabc12695
+    member_id: 0x0a575aaf
+    member_id: 0x15769aef
+    member_id: 0xe5d6f061
+    member_id: 0x259c3062
+    member_id: 0xf9659b27
+    member_id: 0xfdf2a9b9
+    member_id: 0x7dca883d
+    member_id: 0x3021fa6d
+  }
+}
+struct_union {
+  id: 0x53ef2dbf
+  kind: STRUCT
+  name: "drm_connector_funcs"
+  definition {
+    bytesize: 128
+    member_id: 0xf85e12a9
+    member_id: 0x62b007df
+    member_id: 0x9862a44a
+    member_id: 0xdf54252e
+    member_id: 0x73e192b7
+    member_id: 0x0a22687f
+    member_id: 0x949bab88
+    member_id: 0xea190c3a
+    member_id: 0xa4fb8d8b
+    member_id: 0x606ec94b
+    member_id: 0xa33b5abb
+    member_id: 0x6dc24868
+    member_id: 0xb986b56c
+    member_id: 0x2b4bab24
+    member_id: 0x0c30ab56
+    member_id: 0xebab8526
+  }
+}
+struct_union {
+  id: 0xdf1c55b5
+  kind: STRUCT
+  name: "drm_connector_helper_funcs"
+  definition {
+    bytesize: 80
+    member_id: 0xf892081c
+    member_id: 0x442a89f1
+    member_id: 0xf7b855e2
+    member_id: 0x54502f24
+    member_id: 0x7c1af9fc
+    member_id: 0x194c109a
+    member_id: 0xd0a04e99
+    member_id: 0xa1d2ba18
+    member_id: 0x9ef237da
+    member_id: 0x482b7339
+  }
+}
+struct_union {
+  id: 0xb91204bf
+  kind: STRUCT
+  name: "drm_connector_list_iter"
+  definition {
+    bytesize: 16
+    member_id: 0xce02e6f4
+    member_id: 0x85e800af
+  }
+}
+struct_union {
+  id: 0x98788c37
+  kind: STRUCT
+  name: "drm_connector_state"
+  definition {
+    bytesize: 152
+    member_id: 0xcf626b63
+    member_id: 0x9e419601
+    member_id: 0x7c0e6ec0
+    member_id: 0x09f06b82
+    member_id: 0x72d2fc97
+    member_id: 0xcdcf172f
+    member_id: 0xd0faf312
+    member_id: 0x6dc61799
+    member_id: 0x5271306c
+    member_id: 0x9fef6c64
+    member_id: 0xa14fe9fd
+    member_id: 0xbb3c1319
+    member_id: 0xa368c0ef
+    member_id: 0x7bb0e5fb
+    member_id: 0xdd80fb1c
+    member_id: 0xa340fecf
+    member_id: 0x1524c99a
+    member_id: 0xba39efad
+    member_id: 0xa5148fc1
+  }
+}
+struct_union {
+  id: 0x39d78d65
+  kind: STRUCT
+  name: "drm_connector_tv_margins"
+  definition {
+    bytesize: 16
+    member_id: 0xfad1b37a
+    member_id: 0x35bce0f8
+    member_id: 0x0b33391b
+    member_id: 0xb609470f
+  }
+}
+struct_union {
+  id: 0xef2d1e99
+  kind: STRUCT
+  name: "drm_crtc"
+  definition {
+    bytesize: 1664
+    member_id: 0xce02e6f4
+    member_id: 0x48cf6e4f
+    member_id: 0xb58978c2
+    member_id: 0x0ddfef10
+    member_id: 0xada34d05
+    member_id: 0x85339773
+    member_id: 0xacf6c66d
+    member_id: 0x5666d648
+    member_id: 0xad7c8ba4
+    member_id: 0x38890843
+    member_id: 0x7ac8932f
+    member_id: 0x3a2d3c99
+    member_id: 0x871cac1a
+    member_id: 0xfa9dde27
+    member_id: 0xa0d54c45
+    member_id: 0xff142554
+    member_id: 0x36145c63
+    member_id: 0xfc46c539
+    member_id: 0x09501ec7
+    member_id: 0x3b5d14e5
+    member_id: 0x3f984663
+    member_id: 0x615d0cd6
+    member_id: 0x72c92aad
+    member_id: 0xb4b13e26
+    member_id: 0x0bf84159
+    member_id: 0xd1704eaa
+    member_id: 0x52943caf
+    member_id: 0xcbf39aa3
+    member_id: 0xccba23de
+    member_id: 0xaaa23b13
+    member_id: 0x92c509ea
+    member_id: 0xe27d4fd6
+  }
+}
+struct_union {
+  id: 0xd0a7ac9f
+  kind: STRUCT
+  name: "drm_crtc_commit"
+  definition {
+    bytesize: 144
+    member_id: 0x9e4192e0
+    member_id: 0xce703fbc
+    member_id: 0xce01c5ff
+    member_id: 0xa076d7f0
+    member_id: 0x963d840a
+    member_id: 0xa53f6a6d
+    member_id: 0x0a5217fc
+    member_id: 0xa8bac25e
+  }
+}
+struct_union {
+  id: 0xa7b169d5
+  kind: STRUCT
+  name: "drm_crtc_crc"
+  definition {
+    bytesize: 72
+    member_id: 0x2d1fec85
+    member_id: 0xd7108b9f
+    member_id: 0xe0fc9b4c
+    member_id: 0xf010517f
+    member_id: 0xbe6b1dbc
+    member_id: 0xb53d9979
+    member_id: 0xeefa84f3
+    member_id: 0xc9c0df89
+    member_id: 0x22ea8465
+  }
+}
+struct_union {
+  id: 0x7372277e
+  kind: STRUCT
+  name: "drm_crtc_crc_entry"
+  definition {
+    bytesize: 48
+    member_id: 0x534977b7
+    member_id: 0x166b61e8
+    member_id: 0x934c6151
+  }
+}
+struct_union {
+  id: 0x9decda7d
+  kind: STRUCT
+  name: "drm_crtc_funcs"
+  definition {
+    bytesize: 192
+    member_id: 0x62b00dd3
+    member_id: 0x2ed262fe
+    member_id: 0x07edff75
+    member_id: 0x8d866bcf
+    member_id: 0x93c99c65
+    member_id: 0xa4fb8fb9
+    member_id: 0x53ccfc08
+    member_id: 0xaf199e69
+    member_id: 0xca724cbb
+    member_id: 0x0a226827
+    member_id: 0x604df296
+    member_id: 0xa33b4646
+    member_id: 0x6dc25a42
+    member_id: 0xb986b500
+    member_id: 0x949bae51
+    member_id: 0xea190d53
+    member_id: 0xbc0d2a7b
+    member_id: 0x55566082
+    member_id: 0xdd9aa113
+    member_id: 0x2b4bafcf
+    member_id: 0xf2712792
+    member_id: 0xedf5ebf0
+    member_id: 0xffeba8d9
+    member_id: 0x2be2010c
+  }
+}
+struct_union {
+  id: 0x9c7e6b50
+  kind: STRUCT
+  name: "drm_crtc_helper_funcs"
+  definition {
+    bytesize: 128
+    member_id: 0xf87d5a68
+    member_id: 0x3d770e69
+    member_id: 0xcdfc0362
+    member_id: 0xf7b84575
+    member_id: 0x6295dd9f
+    member_id: 0xba4b6457
+    member_id: 0x03bcce6b
+    member_id: 0xf6f80d01
+    member_id: 0x10cc8e3a
+    member_id: 0x0d804b11
+    member_id: 0xd0a0479f
+    member_id: 0xdf51424e
+    member_id: 0xdb2022b4
+    member_id: 0x2d7aa261
+    member_id: 0x09a82e5f
+    member_id: 0xb574ecce
+  }
+}
+struct_union {
+  id: 0xc129644e
+  kind: STRUCT
+  name: "drm_crtc_state"
+  definition {
+    bytesize: 336
+    member_id: 0x9e4192e0
+    member_id: 0x988a74a1
+    member_id: 0x224f2dfa
+    member_id: 0x5443f5af
+    member_id: 0xcb411f2d
+    member_id: 0x26bc475d
+    member_id: 0x9ea4cd8e
+    member_id: 0x5fb0baf4
+    member_id: 0x6b770bd1
+    member_id: 0x33c34d4c
+    member_id: 0x20d17aff
+    member_id: 0xe40d0ad2
+    member_id: 0xc1c86b5c
+    member_id: 0xeab20c1b
+    member_id: 0x871ca035
+    member_id: 0x8de5340f
+    member_id: 0x08753e9c
+    member_id: 0x7d794a79
+    member_id: 0x8b99e76a
+    member_id: 0x1481d584
+    member_id: 0x9bb4f872
+    member_id: 0xbfbb0d2d
+    member_id: 0x7f269087
+    member_id: 0x35dd2d57
+    member_id: 0x0a52141a
+    member_id: 0xcdcf114a
+    member_id: 0x72d2f566
+  }
+}
+struct_union {
+  id: 0xc6521c28
+  kind: STRUCT
+  name: "drm_device"
+  definition {
+    bytesize: 1760
+    member_id: 0x585c62eb
+    member_id: 0xce703666
+    member_id: 0xce3bbe52
+    member_id: 0x3ef3e7f4
+    member_id: 0xd47d4689
+    member_id: 0xe9ca3d1b
+    member_id: 0xace66851
+    member_id: 0x26d1e384
+    member_id: 0x51372a65
+    member_id: 0x3a798240
+    member_id: 0x853c6753
+    member_id: 0x9d373835
+    member_id: 0x4326a309
+    member_id: 0x7ebb3e4d
+    member_id: 0x43dccbbb
+    member_id: 0xb1bbcb69
+    member_id: 0x3961e85c
+    member_id: 0xcd457fff
+    member_id: 0x52024db9
+    member_id: 0x3bf3939e
+    member_id: 0x9c413902
+    member_id: 0x0fac4d77
+    member_id: 0x058ab650
+    member_id: 0x2ab87fb6
+    member_id: 0x86da54cc
+    member_id: 0xfc21d322
+    member_id: 0x96cfc851
+    member_id: 0x31d183ed
+    member_id: 0x8afee601
+    member_id: 0x71b1d2c4
+    member_id: 0xe56a9313
+    member_id: 0x4c6737d9
+    member_id: 0x932239c3
+    member_id: 0x27ffbf8f
+    member_id: 0x68001b38
+    member_id: 0x552e8641
+    member_id: 0x48b4a326
+  }
+}
+struct_union {
+  id: 0x0710d451
+  kind: STRUCT
+  name: "drm_display_info"
+  definition {
+    bytesize: 184
+    member_id: 0x1b12a6d9
+    member_id: 0x6beb9230
+    member_id: 0x2b75f097
+    member_id: 0xe75e7481
+    member_id: 0xe34cadd4
+    member_id: 0x6c30435e
+    member_id: 0x5bb06874
+    member_id: 0x32b760e4
+    member_id: 0xf5ae8f84
+    member_id: 0x373ed61a
+    member_id: 0x6f27e8d3
+    member_id: 0x78860331
+    member_id: 0xe70f847a
+    member_id: 0x383b6b28
+    member_id: 0x12380e71
+    member_id: 0xa0b7a587
+    member_id: 0x8fcf8e86
+    member_id: 0xc63cb668
+    member_id: 0x34626f36
+    member_id: 0x6051fdf5
+    member_id: 0x72ef98dd
+    member_id: 0x2f8cccfd
+    member_id: 0x612e2536
+    member_id: 0xaaaeb60b
+  }
+}
+struct_union {
+  id: 0x81bb7781
+  kind: STRUCT
+  name: "drm_display_mode"
+  definition {
+    bytesize: 120
+    member_id: 0x45a92361
+    member_id: 0xa3dc49dc
+    member_id: 0xa58ec940
+    member_id: 0x11c941dc
+    member_id: 0x72895207
+    member_id: 0x1a1fdbac
+    member_id: 0xddcf0c71
+    member_id: 0xdedb2304
+    member_id: 0x818639d5
+    member_id: 0x3231450a
+    member_id: 0x9aa2eb58
+    member_id: 0x2da184bc
+    member_id: 0x2aaff248
+    member_id: 0xbbefd855
+    member_id: 0xf879b467
+    member_id: 0xc3ec1934
+    member_id: 0xf00ec958
+    member_id: 0xbd234a22
+    member_id: 0x47a85d6c
+    member_id: 0xd6397b05
+    member_id: 0x60012b2c
+    member_id: 0x95394aa0
+    member_id: 0x929bb2fb
+    member_id: 0x1e860476
+    member_id: 0xb4552627
+    member_id: 0x3fb54490
+    member_id: 0x1bc66d55
+    member_id: 0x6b3f5662
+    member_id: 0x5c7f8c8c
+    member_id: 0x8b9ebb6a
+    member_id: 0xb5897a18
+    member_id: 0x0d81b573
+    member_id: 0x20615169
+    member_id: 0x52713899
+  }
+}
+struct_union {
+  id: 0xe41498f8
+  kind: STRUCT
+  name: "drm_driver"
+  definition {
+    bytesize: 216
+    member_id: 0x0e06cfb2
+    member_id: 0xad9ad788
+    member_id: 0xda447de8
+    member_id: 0xb41c344d
+    member_id: 0xfe6b3cc3
+    member_id: 0xae95f33a
+    member_id: 0xddf1118b
+    member_id: 0x410178d8
+    member_id: 0xeba837e7
+    member_id: 0x7ca5b0e7
+    member_id: 0xa2252d93
+    member_id: 0x36ac5548
+    member_id: 0x290f4622
+    member_id: 0x6d0f227a
+    member_id: 0xd887ee3d
+    member_id: 0x7dd1fe72
+    member_id: 0x883ab1b9
+    member_id: 0xea8e27e4
+    member_id: 0xcbd8c615
+    member_id: 0xc840214f
+    member_id: 0x70c68164
+    member_id: 0x0ddfe9c6
+    member_id: 0x87dea4a4
+    member_id: 0xf893e364
+    member_id: 0x853c68ad
+    member_id: 0x5cd03acc
+    member_id: 0xdf32959c
+    member_id: 0xb1aa5d9c
+  }
+}
+struct_union {
+  id: 0x2f1609ae
+  kind: STRUCT
+  name: "drm_dsc_config"
+  definition {
+    bytesize: 136
+    member_id: 0x669f3178
+    member_id: 0xcc20aa71
+    member_id: 0x3c519ec3
+    member_id: 0xf3f1fd90
+    member_id: 0x7fb33815
+    member_id: 0xf69d749b
+    member_id: 0x3efa0771
+    member_id: 0x3b40fbe6
+    member_id: 0x8fbeb942
+    member_id: 0x8fdbcb14
+    member_id: 0x80379de2
+    member_id: 0xea46533e
+    member_id: 0xa8718050
+    member_id: 0x035c110c
+    member_id: 0x420143bf
+    member_id: 0xc2118c74
+    member_id: 0x2c956912
+    member_id: 0x7068c236
+    member_id: 0x4eec7232
+    member_id: 0xc8298e5f
+    member_id: 0x7cd51141
+    member_id: 0x5b26350a
+    member_id: 0x63fd0428
+    member_id: 0x01e83504
+    member_id: 0x2a1f9d37
+    member_id: 0x301c549e
+    member_id: 0x3d45ff7b
+    member_id: 0x80c47905
+    member_id: 0x263b9a6d
+    member_id: 0x643f0852
+    member_id: 0xd96b7e57
+    member_id: 0xe35bcbb7
+    member_id: 0xa21d307d
+    member_id: 0x1942199a
+    member_id: 0x27004234
+    member_id: 0xbd9a4039
+    member_id: 0x4596c27c
+    member_id: 0xcfdcc583
+    member_id: 0x4d5c1204
+    member_id: 0xf2862801
+    member_id: 0x7f48ad1a
+    member_id: 0x4f40898e
+  }
+}
+struct_union {
+  id: 0x0394dbf7
+  kind: STRUCT
+  name: "drm_dsc_picture_parameter_set"
+  definition {
+    bytesize: 128
+    member_id: 0xf98dd299
+    member_id: 0x8f5a97bc
+    member_id: 0x809edba2
+    member_id: 0x4c5cf233
+    member_id: 0x0c9c64fe
+    member_id: 0xd758ee01
+    member_id: 0x8f5a7558
+    member_id: 0x3ba432c3
+    member_id: 0xf679b59e
+    member_id: 0x7f57f5f5
+    member_id: 0x8e82bd41
+    member_id: 0x6caef089
+    member_id: 0x497c1d81
+    member_id: 0x2c71aaee
+    member_id: 0x4a1fdb38
+    member_id: 0x301c53cf
+    member_id: 0x8020be2c
+    member_id: 0x60873bee
+    member_id: 0xb136b0e8
+    member_id: 0xebc0a217
+    member_id: 0x4eec7232
+    member_id: 0x26df59fd
+    member_id: 0x64dbc48f
+    member_id: 0xc8cd4488
+    member_id: 0xd98fb726
+    member_id: 0x01e83239
+    member_id: 0x2a1f9a7b
+    member_id: 0x6319c653
+    member_id: 0xa87185fa
+    member_id: 0x42014d06
+    member_id: 0x035c1104
+    member_id: 0x18fe2cee
+    member_id: 0x7cfb137c
+    member_id: 0x4c92143c
+    member_id: 0xf3d0d268
+    member_id: 0xf2862ea4
+    member_id: 0x7fac6631
+    member_id: 0x4fa4499e
+    member_id: 0x9125f95d
+    member_id: 0x180dad2d
+    member_id: 0xa712bada
+    member_id: 0xe069c3fd
+    member_id: 0xe694973f
+    member_id: 0x3c477d8c
+    member_id: 0x1521d17c
+    member_id: 0xdc186ed2
+    member_id: 0x902933a6
+  }
+}
+struct_union {
+  id: 0xe4397676
+  kind: STRUCT
+  name: "drm_dsc_rc_range_parameters"
+  definition {
+    bytesize: 3
+    member_id: 0xac37594b
+    member_id: 0xda30fe11
+    member_id: 0x80852b9d
+  }
+}
+struct_union {
+  id: 0x91901b03
+  kind: STRUCT
+  name: "drm_encoder"
+  definition {
+    bytesize: 120
+    member_id: 0xce02e6f4
+    member_id: 0xb58975e1
+    member_id: 0x8533951c
+    member_id: 0x0ddfe8cc
+    member_id: 0xe92115e0
+    member_id: 0xad7c8306
+    member_id: 0xa7ffbedd
+    member_id: 0x78a76eca
+    member_id: 0x9e419499
+    member_id: 0x84375083
+    member_id: 0x36119a1b
+    member_id: 0x3b53c836
+  }
+}
+struct_union {
+  id: 0xc1dc16e9
+  kind: STRUCT
+  name: "drm_encoder_funcs"
+  definition {
+    bytesize: 32
+    member_id: 0x62b1f727
+    member_id: 0xa4fa766b
+    member_id: 0x949a57c1
+    member_id: 0xea18f79d
+  }
+}
+struct_union {
+  id: 0x717fa90c
+  kind: STRUCT
+  name: "drm_encoder_helper_funcs"
+  definition {
+    bytesize: 104
+    member_id: 0xf87ca09c
+    member_id: 0xf7b9b3a9
+    member_id: 0x62942e02
+    member_id: 0x3d76f8b5
+    member_id: 0xcdfdf0ff
+    member_id: 0xba69d8ee
+    member_id: 0x583f2842
+    member_id: 0x9863022c
+    member_id: 0x09a9d515
+    member_id: 0x2d7b525d
+    member_id: 0x0d81beee
+    member_id: 0x98eb544c
+    member_id: 0xd0a1aaae
+  }
+}
+struct_union {
+  id: 0x4a20f8ef
+  kind: STRUCT
+  name: "drm_event"
+  definition {
+    bytesize: 8
+    member_id: 0x5cb0fbc1
+    member_id: 0xb58b41dc
+  }
+}
+struct_union {
+  id: 0x03b9f0a9
+  kind: STRUCT
+  name: "drm_event_crtc_sequence"
+  definition {
+    bytesize: 32
+    member_id: 0x8590ce73
+    member_id: 0x8e76fc06
+    member_id: 0x740d2191
+    member_id: 0x00639341
+  }
+}
+struct_union {
+  id: 0x6cc6b2f2
+  kind: STRUCT
+  name: "drm_event_vblank"
+  definition {
+    bytesize: 32
+    member_id: 0x8590ce73
+    member_id: 0x8e76fc06
+    member_id: 0x59810e15
+    member_id: 0x5fe2819a
+    member_id: 0x00684f89
+    member_id: 0xa7e520f4
+  }
+}
+struct_union {
+  id: 0xd87238de
+  kind: STRUCT
+  name: "drm_fb_helper"
+  definition {
+    bytesize: 392
+    member_id: 0x852035b1
+    member_id: 0x33fa43fa
+    member_id: 0xfaa79f18
+    member_id: 0xce02ee07
+    member_id: 0x361b83e4
+    member_id: 0x3762dfab
+    member_id: 0x846152fd
+    member_id: 0x28e89f71
+    member_id: 0x5becd2a8
+    member_id: 0xd93f06ca
+    member_id: 0x4b773ec1
+    member_id: 0x2d4b3da2
+    member_id: 0x5d71dc53
+    member_id: 0x28c87ebf
+    member_id: 0x4275680a
+    member_id: 0x9f05839d
+  }
+}
+struct_union {
+  id: 0x6009b3a8
+  kind: STRUCT
+  name: "drm_fb_helper_funcs"
+  definition {
+    bytesize: 8
+    member_id: 0xba4665ca
+  }
+}
+struct_union {
+  id: 0xaba25c38
+  kind: STRUCT
+  name: "drm_fb_helper_surface_size"
+  definition {
+    bytesize: 24
+    member_id: 0xa9fbf1e6
+    member_id: 0x7636b6f9
+    member_id: 0x24429207
+    member_id: 0xd0f89a47
+    member_id: 0x0ac2879c
+    member_id: 0x831c1818
+  }
+}
+struct_union {
+  id: 0x61db1824
+  kind: STRUCT
+  name: "drm_file"
+  definition {
+    bytesize: 400
+    member_id: 0x2ccc7a5c
+    member_id: 0x92c26519
+    member_id: 0xc16855f7
+    member_id: 0x176dead7
+    member_id: 0xb5dc85c7
+    member_id: 0x3638a03c
+    member_id: 0x7fca01b0
+    member_id: 0x021fbd56
+    member_id: 0x3a79849c
+    member_id: 0xdb0dc0ca
+    member_id: 0x74912824
+    member_id: 0xd6e31323
+    member_id: 0xf6c72501
+    member_id: 0xc82c8398
+    member_id: 0xd8c8a8a7
+    member_id: 0xd433db0c
+    member_id: 0xa06350f4
+    member_id: 0xdd5990f9
+    member_id: 0xcca04e73
+    member_id: 0xe49f68ac
+    member_id: 0x3a374984
+    member_id: 0x748ba2af
+    member_id: 0x5b79888e
+    member_id: 0x7dd6bfa3
+    member_id: 0x34ebe213
+    member_id: 0xce528094
+    member_id: 0x6ab8d5b9
+    member_id: 0x5d544312
+    member_id: 0xd79b13be
+  }
+}
+struct_union {
+  id: 0xb0e0ce1a
+  kind: STRUCT
+  name: "drm_flip_work"
+  definition {
+    bytesize: 104
+    member_id: 0x0de57ce8
+    member_id: 0x21165e66
+    member_id: 0xff70462e
+    member_id: 0x2a6bb375
+    member_id: 0x9d598c8e
+    member_id: 0x2d1fe42b
+  }
+}
+struct_union {
+  id: 0x8f2d373e
+  kind: STRUCT
+  name: "drm_format_info"
+  definition {
+    bytesize: 24
+    member_id: 0x089e5b85
+    member_id: 0x1b4d5945
+    member_id: 0x209eb698
+    member_id: 0x3f556da1
+    member_id: 0x2c0d82ae
+    member_id: 0xecca2748
+    member_id: 0x06e8b9a4
+    member_id: 0xd2921bcc
+    member_id: 0xeee91e70
+    member_id: 0x5f2e888d
+    member_id: 0xc07e2464
+  }
+}
+struct_union {
+  id: 0xed62338c
+  kind: STRUCT
+  name: "drm_framebuffer"
+  definition {
+    bytesize: 200
+    member_id: 0xce02e6f4
+    member_id: 0xb58975e1
+    member_id: 0x8533951c
+    member_id: 0x543ca0ef
+    member_id: 0x08623c4d
+    member_id: 0x361daecf
+    member_id: 0x33669725
+    member_id: 0x3572f05b
+    member_id: 0x50182bc1
+    member_id: 0x0ac87879
+    member_id: 0x2b586065
+    member_id: 0x2d0fa9fb
+    member_id: 0x25732f5e
+    member_id: 0x6d30506c
+    member_id: 0x1b7ec983
+    member_id: 0x75d72bf4
+  }
+}
+struct_union {
+  id: 0x02cd67fc
+  kind: STRUCT
+  name: "drm_framebuffer_funcs"
+  definition {
+    bytesize: 24
+    member_id: 0xa4fb8142
+    member_id: 0x2c60906b
+    member_id: 0xb5bde352
+  }
+}
+struct_union {
+  id: 0xf2717d88
+  kind: STRUCT
+  name: "drm_gem_lru"
+  definition {
+    bytesize: 32
+    member_id: 0x2dcf9f83
+    member_id: 0x65d95538
+    member_id: 0x7c00e690
+  }
+}
+struct_union {
+  id: 0xcbc3299e
+  kind: STRUCT
+  name: "drm_gem_object"
+  definition {
+    bytesize: 352
+    member_id: 0x05ec0452
+    member_id: 0x566960e6
+    member_id: 0xce02e215
+    member_id: 0xcca040ae
+    member_id: 0xe25c784a
+    member_id: 0xd98a2e3f
+    member_id: 0x0dbc4afd
+    member_id: 0x597c6763
+    member_id: 0xa17f1d0f
+    member_id: 0xbb9d92d5
+    member_id: 0x0c5ee3fd
+    member_id: 0x361b3f73
+    member_id: 0x37a0133f
+    member_id: 0x5434db0f
+  }
+}
+struct_union {
+  id: 0x6bab1e44
+  kind: STRUCT
+  name: "drm_gem_object_funcs"
+  definition {
+    bytesize: 96
+    member_id: 0xfeaf38f1
+    member_id: 0xad9ae1cc
+    member_id: 0xcd7edc4f
+    member_id: 0x00cfc64c
+    member_id: 0x248e76cf
+    member_id: 0xb82454f5
+    member_id: 0x343d462b
+    member_id: 0x545ea760
+    member_id: 0xb7007ec8
+    member_id: 0x62fad995
+    member_id: 0x87fd15d3
+    member_id: 0x0b54e5c6
+  }
+}
+struct_union {
+  id: 0x5afd6a10
+  kind: STRUCT
+  name: "drm_gem_shmem_object"
+  definition {
+    bytesize: 512
+    member_id: 0x85112da2
+    member_id: 0x4ee5d75e
+    member_id: 0x7841b6ce
+    member_id: 0xf92c9186
+    member_id: 0xfd37a2a4
+    member_id: 0xc2f319c0
+    member_id: 0x016c4163
+    member_id: 0x442de3ee
+    member_id: 0x716e8497
+    member_id: 0xfc7dbede
+    member_id: 0x502781b8
+    member_id: 0x26e529e9
+    member_id: 0x20398c3a
+  }
+}
+struct_union {
+  id: 0xc5cac4c8
+  kind: STRUCT
+  name: "drm_hdmi_dsc_cap"
+  definition {
+    bytesize: 16
+    member_id: 0x80b1cd58
+    member_id: 0x4d5c1c1a
+    member_id: 0x5dec83ca
+    member_id: 0xe47884af
+    member_id: 0xc288bba2
+    member_id: 0x37291a4b
+    member_id: 0x4cb8785a
+    member_id: 0x8f8b88b4
+    member_id: 0x2632ff1d
+  }
+}
+struct_union {
+  id: 0xe1555fa3
+  kind: STRUCT
+  name: "drm_hdmi_info"
+  definition {
+    bytesize: 104
+    member_id: 0x0ac848fc
+    member_id: 0x22a80971
+    member_id: 0xfc8366e3
+    member_id: 0xabb72156
+    member_id: 0x720344f1
+    member_id: 0x8f8b8e42
+    member_id: 0x4cb873ab
+    member_id: 0x402e95a7
+  }
+}
+struct_union {
+  id: 0x5a068d4a
+  kind: STRUCT
+  name: "drm_info_list"
+  definition {
+    bytesize: 32
+    member_id: 0x0de57ce8
+    member_id: 0x0a538469
+    member_id: 0x853c663f
+    member_id: 0xff8a91c0
+  }
+}
+struct_union {
+  id: 0x4f5136b2
+  kind: STRUCT
+  name: "drm_ioctl_desc"
+  definition {
+    bytesize: 24
+    member_id: 0x1a555be9
+    member_id: 0x2de12263
+    member_id: 0x21036894
+    member_id: 0x0de5752a
+  }
+}
+struct_union {
+  id: 0xbf9c7823
+  kind: STRUCT
+  name: "drm_luminance_range_info"
+  definition {
+    bytesize: 8
+    member_id: 0x6532e1f2
+    member_id: 0x5b22e737
+  }
+}
+struct_union {
+  id: 0x371844eb
+  kind: STRUCT
+  name: "drm_master"
+  definition {
+    bytesize: 160
+    member_id: 0x05ec0452
+    member_id: 0xce02e215
+    member_id: 0x7ebb3d29
+    member_id: 0x69d46c12
+    member_id: 0xa18e9dd1
+    member_id: 0xe49f62ad
+    member_id: 0x8830f604
+    member_id: 0x63ad4670
+    member_id: 0xfad497f9
+    member_id: 0xbaa002d3
+    member_id: 0x4d0154e3
+    member_id: 0x48a61936
+  }
+}
+struct_union {
+  id: 0x045d85f9
+  kind: STRUCT
+  name: "drm_minor"
+  definition {
+    bytesize: 96
+    member_id: 0xad5e286c
+    member_id: 0x5c31f896
+    member_id: 0xc1884587
+    member_id: 0xce02ef36
+    member_id: 0x83e53a6f
+    member_id: 0xf47c4072
+    member_id: 0xbbc6908d
+  }
+}
+struct_union {
+  id: 0x8f0e76d7
+  kind: STRUCT
+  name: "drm_mm"
+  definition {
+    bytesize: 240
+    member_id: 0xcdde2bc9
+    member_id: 0x8f6b7140
+    member_id: 0x73c95d3b
+    member_id: 0x49374ef2
+    member_id: 0xf78f4057
+    member_id: 0x15ac6a73
+    member_id: 0x78da1751
+  }
+}
+struct_union {
+  id: 0xb0510713
+  kind: STRUCT
+  name: "drm_mm_node"
+  definition {
+    bytesize: 168
+    member_id: 0x6ef6dc0f
+    member_id: 0x46891482
+    member_id: 0xd9ec3683
+    member_id: 0x3017b841
+    member_id: 0xd7b58380
+    member_id: 0x8f6b7433
+    member_id: 0xfb47d48a
+    member_id: 0xfdce67e4
+    member_id: 0x29ba9be9
+    member_id: 0x016b69bb
+    member_id: 0x4258b0e7
+    member_id: 0xc2b065fa
+    member_id: 0x2d5bf747
+  }
+}
+struct_union {
+  id: 0xf93e8c44
+  kind: STRUCT
+  name: "drm_mm_scan"
+  definition {
+    bytesize: 80
+    member_id: 0x3017b088
+    member_id: 0xd9ec3ba0
+    member_id: 0x361dfe02
+    member_id: 0x8e6a55b7
+    member_id: 0xb97e38a2
+    member_id: 0x7a77cd3c
+    member_id: 0xb3c5bda5
+    member_id: 0x46691f0e
+    member_id: 0x6ef6d717
+    member_id: 0x875b7c69
+  }
+}
+struct_union {
+  id: 0xb31a6532
+  kind: STRUCT
+  name: "drm_mode_config"
+  definition {
+    bytesize: 1232
+    member_id: 0xad898302
+    member_id: 0xd9f047f3
+    member_id: 0xb2f1e5b6
+    member_id: 0x0a93d6a6
+    member_id: 0xd8c8a14c
+    member_id: 0x60ceeed0
+    member_id: 0xd1234ff9
+    member_id: 0x48031c52
+    member_id: 0x23a74f2b
+    member_id: 0xbf700568
+    member_id: 0x18974f8f
+    member_id: 0x74e8bb4c
+    member_id: 0x0a6f0e32
+    member_id: 0x4d3f38a5
+    member_id: 0x2b8b2604
+    member_id: 0x4a422b42
+    member_id: 0x2a645bba
+    member_id: 0x8026d50a
+    member_id: 0xadb3df8b
+    member_id: 0x941c1a06
+    member_id: 0x2c003612
+    member_id: 0x1fefb55a
+    member_id: 0xfbc2c405
+    member_id: 0x3054acf7
+    member_id: 0x9c64da5c
+    member_id: 0x3a232a1e
+    member_id: 0x93d608f3
+    member_id: 0x361a8c17
+    member_id: 0xd833fe37
+    member_id: 0x321b6f47
+    member_id: 0x528ec6c2
+    member_id: 0xa71fc7ec
+    member_id: 0x5303434e
+    member_id: 0xef7b6156
+    member_id: 0xd6998ea5
+    member_id: 0x9d2c5b2f
+    member_id: 0xa362e1f2
+    member_id: 0x5d96bda2
+    member_id: 0xfd467c7d
+    member_id: 0x23fe30a1
+    member_id: 0x99013481
+    member_id: 0xf6fca447
+    member_id: 0xb73d28dd
+    member_id: 0x3fbec685
+    member_id: 0x32f25ec0
+    member_id: 0xa74bff2d
+    member_id: 0x66743c29
+    member_id: 0x880dbe9d
+    member_id: 0xb3f3a00d
+    member_id: 0xe9eb013a
+    member_id: 0x9abf0f4f
+    member_id: 0xdd8a3188
+    member_id: 0xa33cec8b
+    member_id: 0xfde3ca6c
+    member_id: 0xdd98e086
+    member_id: 0x5b4892ce
+    member_id: 0xc4ceb249
+    member_id: 0xc411d17c
+    member_id: 0x32b0d016
+    member_id: 0x1e95895b
+    member_id: 0xfe2feec4
+    member_id: 0x2a63160c
+    member_id: 0xdc54ce2d
+    member_id: 0x015a1a96
+    member_id: 0xb6662de4
+    member_id: 0xdd3f5c67
+    member_id: 0xcb5f585a
+    member_id: 0x64693967
+    member_id: 0xd2dbc169
+    member_id: 0xbe6fe7fe
+    member_id: 0x199f6684
+    member_id: 0x9c3309e1
+    member_id: 0x2b2dab7f
+    member_id: 0x3d8ff816
+    member_id: 0x0b2f2664
+    member_id: 0xc57955e1
+    member_id: 0x8e33b34d
+    member_id: 0x0bb4cb0d
+    member_id: 0x55e038ab
+    member_id: 0xac05b4c0
+    member_id: 0x2194c496
+    member_id: 0x90938126
+    member_id: 0xc0995a7e
+    member_id: 0x6a838faa
+    member_id: 0x3efa4ce5
+    member_id: 0x01ed88dc
+    member_id: 0x9a686e3f
+    member_id: 0x4e1d9866
+    member_id: 0x3ba10298
+    member_id: 0xd53feff4
+    member_id: 0xf1555b7b
+    member_id: 0xf29eb9e1
+    member_id: 0xe8af05e0
+    member_id: 0xd461d50f
+    member_id: 0x47072248
+    member_id: 0x14efd093
+    member_id: 0x0effad0a
+    member_id: 0x9034e89b
+    member_id: 0xf5b27476
+    member_id: 0x77b94c0b
+    member_id: 0x2276468b
+    member_id: 0xee0082ef
+    member_id: 0xae249899
+    member_id: 0x3b5ebfad
+  }
+}
+struct_union {
+  id: 0x7045cb0a
+  kind: STRUCT
+  name: "drm_mode_config_funcs"
+  definition {
+    bytesize: 72
+    member_id: 0xb7d4f660
+    member_id: 0x332182fc
+    member_id: 0x33a8bbd2
+    member_id: 0xf7b8e089
+    member_id: 0xd0a0e4b1
+    member_id: 0xa1f15142
+    member_id: 0x1fceb182
+    member_id: 0x08a59c67
+    member_id: 0x8a1a23fb
+  }
+}
+struct_union {
+  id: 0xa61266da
+  kind: STRUCT
+  name: "drm_mode_config_helper_funcs"
+  definition {
+    bytesize: 16
+    member_id: 0xcf36cc02
+    member_id: 0xb46af7c5
+  }
+}
+struct_union {
+  id: 0x9e3df373
+  kind: STRUCT
+  name: "drm_mode_create_dumb"
+  definition {
+    bytesize: 32
+    member_id: 0x2bfbc29d
+    member_id: 0x0a6bd984
+    member_id: 0x896ffb38
+    member_id: 0x2d8ea362
+    member_id: 0xb805b270
+    member_id: 0xface9c28
+    member_id: 0xd993e6cc
+  }
+}
+struct_union {
+  id: 0xb469cc14
+  kind: STRUCT
+  name: "drm_mode_fb_cmd2"
+  definition {
+    bytesize: 104
+    member_id: 0x1b7be1f5
+    member_id: 0x0a6bd984
+    member_id: 0x2bfbc67c
+    member_id: 0xba56a4b7
+    member_id: 0x2d8ea323
+    member_id: 0xb8284e4d
+    member_id: 0x334e7b37
+    member_id: 0x355a1b77
+    member_id: 0x50b39241
+  }
+}
+struct_union {
+  id: 0x98e32fbd
+  kind: STRUCT
+  name: "drm_mode_modeinfo"
+  definition {
+    bytesize: 68
+    member_id: 0x45282d0d
+    member_id: 0xa3a50723
+    member_id: 0xa5f787bf
+    member_id: 0x11b00f23
+    member_id: 0x72f01cf8
+    member_id: 0x1a669553
+    member_id: 0xddb6428e
+    member_id: 0xdea26dfb
+    member_id: 0x81ff772a
+    member_id: 0x32480bf5
+    member_id: 0x9adba5a7
+    member_id: 0x9f14ce75
+    member_id: 0x2d8ea9c5
+    member_id: 0x5cb0fb6a
+    member_id: 0x0d81b7d3
+  }
+}
+struct_union {
+  id: 0xe9735eb8
+  kind: STRUCT
+  name: "drm_mode_object"
+  definition {
+    bytesize: 32
+    member_id: 0xcc33112f
+    member_id: 0x5c4ae5fb
+    member_id: 0x3f7e22f0
+    member_id: 0x05ec0d90
+    member_id: 0xddcf27cf
+  }
+}
+struct_union {
+  id: 0xdac6e4ed
+  kind: STRUCT
+  name: "drm_mode_set"
+  definition {
+    bytesize: 48
+    member_id: 0xfaa795be
+    member_id: 0x9e419601
+    member_id: 0x87b7e2b8
+    member_id: 0xa0ae5ea1
+    member_id: 0xff6f341e
+    member_id: 0xf5e9e092
+    member_id: 0x77e5ca4d
+  }
+}
+struct_union {
+  id: 0x24777eaf
+  kind: STRUCT
+  name: "drm_modeset_acquire_ctx"
+  definition {
+    bytesize: 64
+    member_id: 0x312658c3
+    member_id: 0xa921c631
+    member_id: 0xc477a658
+    member_id: 0x14a4353b
+    member_id: 0x22c6ae50
+    member_id: 0xf9e8cea8
+  }
+}
+struct_union {
+  id: 0x8d0aa23e
+  kind: STRUCT
+  name: "drm_modeset_lock"
+  definition {
+    bytesize: 72
+    member_id: 0xad4311a1
+    member_id: 0xb5897677
+  }
+}
+struct_union {
+  id: 0xf5fe6ded
+  kind: STRUCT
+  name: "drm_monitor_range_info"
+  definition {
+    bytesize: 4
+    member_id: 0xbe55e51d
+    member_id: 0xb15d2ccc
+  }
+}
+struct_union {
+  id: 0xda60e9a6
+  kind: STRUCT
+  name: "drm_object_properties"
+  definition {
+    bytesize: 1032
+    member_id: 0x65427f17
+    member_id: 0x3f7b1836
+    member_id: 0x0fa1dd87
+  }
+}
+struct_union {
+  id: 0x6bc5142c
+  kind: STRUCT
+  name: "drm_panel"
+  definition {
+    bytesize: 48
+    member_id: 0xce3bbab3
+    member_id: 0x77827b72
+    member_id: 0x36184afd
+    member_id: 0x90e22d12
+    member_id: 0x7c00eff9
+  }
+}
+struct_union {
+  id: 0x5c75f1b8
+  kind: STRUCT
+  name: "drm_panel_funcs"
+  definition {
+    bytesize: 64
+    member_id: 0x3d565f04
+    member_id: 0x98cbfde8
+    member_id: 0x0da11e2d
+    member_id: 0xc6d52d68
+    member_id: 0xf890244f
+    member_id: 0x4aebacca
+    member_id: 0xb0511276
+    member_id: 0xeba997ef
+  }
+}
+struct_union {
+  id: 0x36493e7d
+  kind: STRUCT
+  name: "drm_pending_event"
+  definition {
+    bytesize: 72
+    member_id: 0xc4ae05eb
+    member_id: 0x4ca65aa4
+    member_id: 0x0a57f1a5
+    member_id: 0xcec8154a
+    member_id: 0xda1fca7a
+    member_id: 0x556d502b
+    member_id: 0xe53a2590
+  }
+}
+struct_union {
+  id: 0x5d82e969
+  kind: STRUCT
+  name: "drm_pending_vblank_event"
+  definition {
+    bytesize: 120
+    member_id: 0x85eca7b5
+    member_id: 0x99a9a4ad
+    member_id: 0x001c4cb5
+    member_id: 0x0a384d6c
+  }
+}
+struct_union {
+  id: 0x46f26608
+  kind: STRUCT
+  name: "drm_plane"
+  definition {
+    bytesize: 1320
+    member_id: 0xce02e6f4
+    member_id: 0xb58975e1
+    member_id: 0x0ddfe772
+    member_id: 0xada34a69
+    member_id: 0x85339e6f
+    member_id: 0xa7ffbad9
+    member_id: 0x0d08c526
+    member_id: 0xf3f081ad
+    member_id: 0xea09a74a
+    member_id: 0x37418726
+    member_id: 0xd1fae487
+    member_id: 0x9e419013
+    member_id: 0xfaa792ee
+    member_id: 0x3809bbae
+    member_id: 0x361ddc01
+    member_id: 0x3f984dd7
+    member_id: 0x5c65392f
+    member_id: 0xad7c893f
+    member_id: 0x3b568b1c
+    member_id: 0x72ddd7c2
+    member_id: 0xed803b5e
+    member_id: 0x78fb6b21
+    member_id: 0x310d45cf
+    member_id: 0x2e6c2139
+    member_id: 0xc39dbe9d
+    member_id: 0x0e64ea0d
+    member_id: 0x615d094c
+  }
+}
+struct_union {
+  id: 0x051d9d04
+  kind: STRUCT
+  name: "drm_plane_funcs"
+  definition {
+    bytesize: 104
+    member_id: 0x40ac767e
+    member_id: 0x2f84ea32
+    member_id: 0xa4f926c1
+    member_id: 0x62b2a267
+    member_id: 0x0a20c683
+    member_id: 0x6056c08e
+    member_id: 0xa339f662
+    member_id: 0x6dc0e610
+    member_id: 0xb9841fe2
+    member_id: 0x94990af8
+    member_id: 0xea1ba4a4
+    member_id: 0x2b4baa0b
+    member_id: 0xc8d54592
+  }
+}
+struct_union {
+  id: 0x25232774
+  kind: STRUCT
+  name: "drm_plane_helper_funcs"
+  definition {
+    bytesize: 56
+    member_id: 0x85997c8d
+    member_id: 0x85261434
+    member_id: 0xd0a2ef59
+    member_id: 0x09c0449c
+    member_id: 0x09aa832f
+    member_id: 0xc9ae60b9
+    member_id: 0xc6f54e00
+  }
+}
+struct_union {
+  id: 0x92f28628
+  kind: STRUCT
+  name: "drm_plane_state"
+  definition {
+    bytesize: 152
+    member_id: 0xe0ff1688
+    member_id: 0x9e419601
+    member_id: 0xfaa79c7c
+    member_id: 0xcec8154a
+    member_id: 0x9c600bb5
+    member_id: 0x5d206311
+    member_id: 0xdfe48a5c
+    member_id: 0x88e80467
+    member_id: 0x454db19b
+    member_id: 0x840c1bfd
+    member_id: 0x51571f12
+    member_id: 0x098f82d2
+    member_id: 0x4519db18
+    member_id: 0x36442ff7
+    member_id: 0x46522709
+    member_id: 0xc2f31ff3
+    member_id: 0x7e0b39d3
+    member_id: 0x55105670
+    member_id: 0x6fcb5e0b
+    member_id: 0x3cba997b
+    member_id: 0x4475a595
+    member_id: 0xbbb264ba
+    member_id: 0x666c666b
+    member_id: 0x35dd21fe
+    member_id: 0xcdcf1d9e
+    member_id: 0x72d2f2e0
+  }
+}
+struct_union {
+  id: 0xd826d96d
+  kind: STRUCT
+  name: "drm_prime_file_private"
+  definition {
+    bytesize: 64
+    member_id: 0x2d4b3c00
+    member_id: 0x810e204c
+    member_id: 0xb876105c
+  }
+}
+struct_union {
+  id: 0x87a732ba
+  kind: STRUCT
+  name: "drm_printer"
+  definition {
+    bytesize: 32
+    member_id: 0x9593bf67
+    member_id: 0x2d4e324d
+    member_id: 0xa9197e69
+    member_id: 0x95646679
+  }
+}
+struct_union {
+  id: 0x4342e7d0
+  kind: STRUCT
+  name: "drm_privacy_screen"
+}
+struct_union {
+  id: 0xaf0cd741
+  kind: STRUCT
+  name: "drm_private_obj"
+  definition {
+    bytesize: 104
+    member_id: 0xb5897100
+    member_id: 0x2d61fc02
+    member_id: 0x72fa5385
+    member_id: 0x3617ff28
+  }
+}
+struct_union {
+  id: 0x0cf6014f
+  kind: STRUCT
+  name: "drm_private_state"
+  definition {
+    bytesize: 16
+    member_id: 0x72d2fc3c
+    member_id: 0x757423b5
+  }
+}
+struct_union {
+  id: 0xa73e6bcb
+  kind: STRUCT
+  name: "drm_private_state_funcs"
+  definition {
+    bytesize: 24
+    member_id: 0x6056caa5
+    member_id: 0xa33a736a
+    member_id: 0x2b4ba814
+  }
+}
+struct_union {
+  id: 0x1fe2973f
+  kind: STRUCT
+  name: "drm_prop_enum_list"
+  definition {
+    bytesize: 16
+    member_id: 0x5c31f5ad
+    member_id: 0x0de57809
+  }
+}
+struct_union {
+  id: 0x83dccb99
+  kind: STRUCT
+  name: "drm_property"
+  definition {
+    bytesize: 120
+    member_id: 0xb5897100
+    member_id: 0x85339417
+    member_id: 0x2d74b872
+    member_id: 0x0d81b16a
+    member_id: 0xb8d78273
+    member_id: 0x0f98efcc
+    member_id: 0xce02ee5a
+    member_id: 0x00d8eed6
+  }
+}
+struct_union {
+  id: 0xfaba1511
+  kind: STRUCT
+  name: "drm_property_blob"
+  definition {
+    bytesize: 88
+    member_id: 0x85339dd5
+    member_id: 0xce02e65f
+    member_id: 0x79710f0d
+    member_id: 0x61e179fc
+    member_id: 0xb5995e42
+    member_id: 0xff8a9f70
+  }
+}
+struct_union {
+  id: 0x43c73e81
+  kind: STRUCT
+  name: "drm_rect"
+  definition {
+    bytesize: 16
+    member_id: 0x99f99f41
+    member_id: 0x3b27c068
+    member_id: 0xd9380576
+    member_id: 0xfae36126
+  }
+}
+struct_union {
+  id: 0xd9f17649
+  kind: STRUCT
+  name: "drm_scdc"
+  definition {
+    bytesize: 4
+    member_id: 0x870618b2
+    member_id: 0x6ac2a770
+    member_id: 0x3269ea7c
+  }
+}
+struct_union {
+  id: 0x2006a7c4
+  kind: STRUCT
+  name: "drm_scrambling"
+  definition {
+    bytesize: 2
+    member_id: 0x870618b2
+    member_id: 0x87389bca
+  }
+}
+struct_union {
+  id: 0x236efebd
+  kind: STRUCT
+  name: "drm_self_refresh_data"
+  definition {
+    bytesize: 208
+    member_id: 0x9e4192e0
+    member_id: 0x7577578a
+    member_id: 0x38425ca8
+    member_id: 0x811284bd
+    member_id: 0x32afb000
+  }
+}
+struct_union {
+  id: 0x0631e3bf
+  kind: STRUCT
+  name: "drm_shadow_plane_state"
+  definition {
+    bytesize: 280
+    member_id: 0x85481c0d
+    member_id: 0x8d4fb401
+    member_id: 0xff2be43b
+  }
+}
+struct_union {
+  id: 0x1b59164d
+  kind: STRUCT
+  name: "drm_simple_display_pipe"
+  definition {
+    bytesize: 3120
+    member_id: 0x9e9fe480
+    member_id: 0xe0a2c6e0
+    member_id: 0x3b7df3c9
+    member_id: 0xcf6267fc
+    member_id: 0x3612560b
+  }
+}
+struct_union {
+  id: 0xfde6fb43
+  kind: STRUCT
+  name: "drm_simple_display_pipe_funcs"
+  definition {
+    bytesize: 120
+    member_id: 0xf7bb9c6c
+    member_id: 0x98e9418c
+    member_id: 0x0d839a71
+    member_id: 0x9ee98b88
+    member_id: 0xd6ab4b69
+    member_id: 0x85980de7
+    member_id: 0x852767ea
+    member_id: 0xedf637d4
+    member_id: 0xffe870e2
+    member_id: 0xd659b548
+    member_id: 0x296b205c
+    member_id: 0xf417b3bb
+    member_id: 0x5d8cba9a
+    member_id: 0xa7d37f9b
+    member_id: 0x7151b503
+  }
+}
+struct_union {
+  id: 0x7706b10e
+  kind: STRUCT
+  name: "drm_syncobj"
+  definition {
+    bytesize: 48
+    member_id: 0x05ec0452
+    member_id: 0xcec81962
+    member_id: 0xa06fe06a
+    member_id: 0x2d1fec2e
+    member_id: 0xbf9f39cc
+  }
+}
+struct_union {
+  id: 0xae8fa37e
+  kind: STRUCT
+  name: "drm_tile_group"
+  definition {
+    bytesize: 32
+    member_id: 0x05ec0452
+    member_id: 0xce02e215
+    member_id: 0xcc480580
+    member_id: 0x947ac68d
+  }
+}
+struct_union {
+  id: 0xaca6bcfe
+  kind: STRUCT
+  name: "drm_tv_connector_state"
+  definition {
+    bytesize: 48
+    member_id: 0x8fccb26a
+    member_id: 0xc890510d
+    member_id: 0x87d89d18
+    member_id: 0x391aaf73
+    member_id: 0x380d5de7
+    member_id: 0x10302dee
+    member_id: 0x144e40b6
+    member_id: 0x7c3c7854
+    member_id: 0xadced68e
+  }
+}
+struct_union {
+  id: 0x32020749
+  kind: STRUCT
+  name: "drm_vblank_crtc"
+  definition {
+    bytesize: 320
+    member_id: 0xce02e6f4
+    member_id: 0xadd19c61
+    member_id: 0x53f8f1cf
+    member_id: 0x883df814
+    member_id: 0x653a1219
+    member_id: 0x74f2cae6
+    member_id: 0x05f7c1c7
+    member_id: 0x26a602b8
+    member_id: 0x96cfc991
+    member_id: 0x82b73fdd
+    member_id: 0x99a9aac0
+    member_id: 0xdc2cceb0
+    member_id: 0xc4fd637a
+    member_id: 0xfa9dd98e
+    member_id: 0x3a2d30fe
+    member_id: 0xff5bf99d
+    member_id: 0x3fec9036
+    member_id: 0xf00bd56d
+  }
+}
+struct_union {
+  id: 0x5547943d
+  kind: STRUCT
+  name: "drm_vma_offset_manager"
+  definition {
+    bytesize: 248
+    member_id: 0x159aab26
+    member_id: 0x182c3eca
+  }
+}
+struct_union {
+  id: 0xb2e49b70
+  kind: STRUCT
+  name: "drm_vma_offset_node"
+  definition {
+    bytesize: 192
+    member_id: 0x159aab26
+    member_id: 0xd6314a69
+    member_id: 0x055bd95d
+    member_id: 0x2f1650fa
+  }
+}
+struct_union {
+  id: 0x82fc2620
+  kind: STRUCT
+  name: "drm_vram_mm"
+}
+struct_union {
+  id: 0x967941e5
+  kind: STRUCT
+  name: "drm_writeback_connector"
+  definition {
+    bytesize: 2128
+    member_id: 0x853678f4
+    member_id: 0x3b7dfe4e
+    member_id: 0x29da4171
+    member_id: 0x83d1e0f4
+    member_id: 0xbd72f435
+    member_id: 0xcbf39aa2
+    member_id: 0xccba26ee
+    member_id: 0xaaa23bd8
+    member_id: 0x92c509cd
+  }
+}
+struct_union {
+  id: 0x85346405
+  kind: STRUCT
+  name: "drm_writeback_job"
+  definition {
+    bytesize: 104
+    member_id: 0xcf7cd0ac
+    member_id: 0xcdf96a51
+    member_id: 0xaf3186db
+    member_id: 0x7493659f
+    member_id: 0xfaa793c7
+    member_id: 0x3bf9d57e
+    member_id: 0x5911900f
+  }
+}
+struct_union {
+  id: 0x8eea2d16
+  kind: STRUCT
+  name: "dst_cache"
+  definition {
+    bytesize: 16
+    member_id: 0x3b413998
+    member_id: 0x1956ee0e
+  }
+}
+struct_union {
+  id: 0xd5caf5af
+  kind: STRUCT
+  name: "dst_cache_pcpu"
+  definition {
+    bytesize: 40
+    member_id: 0xaa1496a4
+    member_id: 0xbbe3f420
+    member_id: 0x588355a1
+    member_id: 0x34899d6a
+  }
+}
+struct_union {
+  id: 0x63276b43
+  kind: STRUCT
+  name: "dst_entry"
+  definition {
+    bytesize: 112
+    member_id: 0xce0b4469
+    member_id: 0xafaa588c
+    member_id: 0xf0757ecd
+    member_id: 0x91036dbc
+    member_id: 0x6e6e4830
+    member_id: 0x733ba32b
+    member_id: 0xdf666814
+    member_id: 0x2da1bd28
+    member_id: 0x33953b25
+    member_id: 0x7a0a40c1
+    member_id: 0x551ae8d1
+    member_id: 0x26d9f5f6
+    member_id: 0x206928e2
+    member_id: 0xccd48a1b
+    member_id: 0xecaa7a91
+    member_id: 0x56a72461
+    member_id: 0x7fb6e678
+    member_id: 0xe548408d
+    member_id: 0xbb99034f
+    member_id: 0x94d4255c
+  }
+}
+struct_union {
+  id: 0xfb09a610
+  kind: STRUCT
+  name: "dst_metrics"
+  definition {
+    bytesize: 72
+    member_id: 0xa4c2a93e
+    member_id: 0xb7dcf673
+  }
+}
+struct_union {
+  id: 0xaf33de29
+  kind: STRUCT
+  name: "dst_ops"
+  definition {
+    bytesize: 192
+    member_id: 0x9e9c961c
+    member_id: 0xee9258e8
+    member_id: 0x965b4154
+    member_id: 0x9ee7ba34
+    member_id: 0x162ec05a
+    member_id: 0x70209bcf
+    member_id: 0x5fd6b737
+    member_id: 0xa4f9b9c5
+    member_id: 0x46c48607
+    member_id: 0xd35eb735
+    member_id: 0xb2e99a38
+    member_id: 0x9d170a9b
+    member_id: 0xe4f75ae9
+    member_id: 0x7dcf9bec
+    member_id: 0x8bb2a09a
+    member_id: 0x724a810c
+    member_id: 0x5fc74326
+    member_id: 0x3899056b
+  }
+}
+struct_union {
+  id: 0xdead91c2
+  kind: STRUCT
+  name: "dw_pcie"
+  definition {
+    bytesize: 464
+    member_id: 0xce3bbab3
+    member_id: 0x24017197
+    member_id: 0x819cecf7
+    member_id: 0x273999e2
+    member_id: 0xefc38562
+    member_id: 0x58ef5f22
+    member_id: 0x9cff579c
+    member_id: 0x8a6499cf
+    member_id: 0x50b4abe8
+    member_id: 0x7ec1ca42
+    member_id: 0xb5735b77
+    member_id: 0xafb48c4a
+    member_id: 0xa6a83559
+    member_id: 0x5c9fd2e2
+    member_id: 0x8f706d98
+    member_id: 0x178cf8a4
+    member_id: 0xdf0cc44d
+    member_id: 0xbe9ec451
+  }
+}
+struct_union {
+  id: 0xd55131a8
+  kind: STRUCT
+  name: "dw_pcie_ep"
+  definition {
+    bytesize: 152
+    member_id: 0x39f28b61
+    member_id: 0xa73e8d2d
+    member_id: 0xafb67db2
+    member_id: 0xadafa1c7
+    member_id: 0x64bb5ae8
+    member_id: 0x22710176
+    member_id: 0x96b7498e
+    member_id: 0x9f7717b3
+    member_id: 0xe8f0d6c1
+    member_id: 0xe12b2a85
+    member_id: 0x2e6fa4af
+    member_id: 0xb1da268d
+    member_id: 0x232cfe44
+  }
+}
+struct_union {
+  id: 0x0e19ab30
+  kind: STRUCT
+  name: "dw_pcie_ep_ops"
+  definition {
+    bytesize: 32
+    member_id: 0x93a1b3b9
+    member_id: 0x5632281b
+    member_id: 0xad3dd73d
+    member_id: 0x4c7ab9e9
+  }
+}
+struct_union {
+  id: 0x4e4e2e09
+  kind: STRUCT
+  name: "dw_pcie_host_ops"
+  definition {
+    bytesize: 24
+    member_id: 0xda2e02e2
+    member_id: 0x31ca0bed
+    member_id: 0x72b27aec
+  }
+}
+struct_union {
+  id: 0x212e14a6
+  kind: STRUCT
+  name: "dw_pcie_ops"
+  definition {
+    bytesize: 56
+    member_id: 0x4c158848
+    member_id: 0xa1b42c88
+    member_id: 0x074a81fd
+    member_id: 0x20894fc9
+    member_id: 0x89c1d237
+    member_id: 0x48d4dc26
+    member_id: 0x13ccbb97
+  }
+}
+struct_union {
+  id: 0xbc27a444
+  kind: STRUCT
+  name: "dw_pcie_rp"
+  definition {
+    bytesize: 216
+    member_id: 0x59400335
+    member_id: 0xff4e46f9
+    member_id: 0x2463b959
+    member_id: 0xa0ebc2b4
+    member_id: 0xef5968cc
+    member_id: 0x7aee4108
+    member_id: 0x9009fe4b
+    member_id: 0xc4cd62a4
+    member_id: 0x99159786
+    member_id: 0xafb27774
+    member_id: 0x5748ad6d
+    member_id: 0x1b15be08
+    member_id: 0x26626592
+    member_id: 0x2f714cea
+    member_id: 0x35aa3dce
+    member_id: 0x1820fff1
+    member_id: 0xc146156f
+    member_id: 0x7babfb58
+    member_id: 0x2d244ceb
+    member_id: 0x9047fe65
+  }
+}
+struct_union {
+  id: 0x86a931f9
+  kind: STRUCT
+  name: "ebitmap"
+  definition {
+    bytesize: 16
+    member_id: 0x0f56d7ac
+    member_id: 0x24b8b0fd
+  }
+}
+struct_union {
+  id: 0xa524ed45
+  kind: STRUCT
+  name: "ebitmap_node"
+  definition {
+    bytesize: 64
+    member_id: 0x11d0d9dd
+    member_id: 0xb0b6f056
+    member_id: 0xba5cc544
+  }
+}
+struct_union {
+  id: 0xed9e4341
+  kind: STRUCT
+  name: "ecdh"
+  definition {
+    bytesize: 16
+    member_id: 0x20528948
+    member_id: 0x7df016c3
+  }
+}
+struct_union {
+  id: 0x4a659ad5
+  kind: STRUCT
+  name: "edac_dev_sysfs_attribute"
+  definition {
+    bytesize: 32
+    member_id: 0x8c29a58d
+    member_id: 0x0a7106ca
+    member_id: 0xacd6ab2c
+  }
+}
+struct_union {
+  id: 0x343352a7
+  kind: STRUCT
+  name: "edac_dev_sysfs_block_attribute"
+  definition {
+    bytesize: 48
+    member_id: 0x8c29a58d
+    member_id: 0x0a73957b
+    member_id: 0xacd40e10
+    member_id: 0x42470e00
+    member_id: 0xa04dde65
+  }
+}
+struct_union {
+  id: 0x766da310
+  kind: STRUCT
+  name: "edac_device_block"
+  definition {
+    bytesize: 160
+    member_id: 0xd1731c42
+    member_id: 0x0d81b7eb
+    member_id: 0x9242fbb6
+    member_id: 0x5d7b57b7
+    member_id: 0x921eb8de
+    member_id: 0x452b2b74
+  }
+}
+struct_union {
+  id: 0x563b3475
+  kind: STRUCT
+  name: "edac_device_counter"
+  definition {
+    bytesize: 8
+    member_id: 0xff61f163
+    member_id: 0x1712c7e2
+  }
+}
+struct_union {
+  id: 0x0028f2f5
+  kind: STRUCT
+  name: "edac_device_ctl_info"
+  definition {
+    bytesize: 472
+    member_id: 0x556d57ec
+    member_id: 0x4a965b92
+    member_id: 0x0e855934
+    member_id: 0x03e2b5ec
+    member_id: 0x37286d54
+    member_id: 0x091ba43f
+    member_id: 0x34a7e20f
+    member_id: 0x8409d13d
+    member_id: 0x0aaf78ba
+    member_id: 0x1146bbf2
+    member_id: 0x66b04008
+    member_id: 0xd60848d4
+    member_id: 0x728403c7
+    member_id: 0xce3bbcc0
+    member_id: 0x413b00d4
+    member_id: 0x130efbc9
+    member_id: 0x863c4277
+    member_id: 0x7cfddcb6
+    member_id: 0xa368200f
+    member_id: 0xb70cdf10
+    member_id: 0x0d81b682
+    member_id: 0x2c28e7b5
+    member_id: 0x0651f554
+    member_id: 0x4f8c58ba
+    member_id: 0x7efaba55
+    member_id: 0x9242f52a
+    member_id: 0x452b2664
+  }
+}
+struct_union {
+  id: 0x701a14cb
+  kind: STRUCT
+  name: "edac_device_instance"
+  definition {
+    bytesize: 160
+    member_id: 0xb59b6745
+    member_id: 0x0dcc237c
+    member_id: 0x9242f828
+    member_id: 0x061e4265
+    member_id: 0x4f8c50a7
+    member_id: 0x452b2b74
+  }
+}
+struct_union {
+  id: 0xc6a698e7
+  kind: STRUCT
+  name: "edid"
+  definition {
+    bytesize: 128
+    member_id: 0xefc2b725
+    member_id: 0x1c261f45
+    member_id: 0xf2097183
+    member_id: 0xa74c4eb1
+    member_id: 0x33ce7f28
+    member_id: 0xafc88256
+    member_id: 0xa6486a65
+    member_id: 0x94818e1e
+    member_id: 0x733f5189
+    member_id: 0x0a6200ac
+    member_id: 0x5261d930
+    member_id: 0xfacdc17c
+    member_id: 0xc531247f
+    member_id: 0x8bb53b60
+    member_id: 0xbaa126d5
+    member_id: 0x5233d133
+    member_id: 0x9df2bc5f
+    member_id: 0xf3c22e72
+    member_id: 0x3282c414
+    member_id: 0xf05fb972
+    member_id: 0x2e9e2743
+    member_id: 0xa9b0e5f3
+    member_id: 0xe9f14719
+    member_id: 0xc5f23f89
+    member_id: 0xdee81d31
+    member_id: 0xe981c2b5
+    member_id: 0x408bffde
+    member_id: 0x2a729a89
+  }
+}
+struct_union {
+  id: 0x498e9c84
+  kind: STRUCT
+  name: "ehci_caps"
+  definition {
+    bytesize: 20
+    member_id: 0x1f0c7c43
+    member_id: 0xd3b43f0a
+    member_id: 0x4f2f813c
+    member_id: 0x01b32aa7
+  }
+}
+struct_union {
+  id: 0xd766dade
+  kind: STRUCT
+  name: "ehci_dbg_port"
+  definition {
+    bytesize: 20
+    member_id: 0xfcf56dc8
+    member_id: 0x762ad441
+    member_id: 0x9e14f48e
+    member_id: 0xcd6a080a
+    member_id: 0x30181c04
+  }
+}
+struct_union {
+  id: 0x87b6c259
+  kind: STRUCT
+  name: "ehci_driver_overrides"
+  definition {
+    bytesize: 24
+    member_id: 0x162bfab8
+    member_id: 0x62920d2b
+    member_id: 0x2418a130
+  }
+}
+struct_union {
+  id: 0x234be7cd
+  kind: STRUCT
+  name: "ehci_fstn"
+  definition {
+    bytesize: 32
+    member_id: 0x999cea4d
+    member_id: 0xfd31b028
+    member_id: 0xc58f7cac
+    member_id: 0x7e42b536
+  }
+}
+struct_union {
+  id: 0x5cffdff9
+  kind: STRUCT
+  name: "ehci_hcd"
+  definition {
+    bytesize: 864
+    member_id: 0x467499ec
+    member_id: 0x848dc1f6
+    member_id: 0xa8b37088
+    member_id: 0x8a1dd65a
+    member_id: 0xbaeeecf8
+    member_id: 0x0147efbb
+    member_id: 0x4e3ae6ab
+    member_id: 0x08377eb2
+    member_id: 0x800bad6d
+    member_id: 0x073956d8
+    member_id: 0xd39b1380
+    member_id: 0x2d1fe3aa
+    member_id: 0xee68eb1f
+    member_id: 0xcb96cc8c
+    member_id: 0xa400c41f
+    member_id: 0x3f4178d7
+    member_id: 0xff8cc9b4
+    member_id: 0x0e9f9373
+    member_id: 0x06d55c51
+    member_id: 0xeb34e3ac
+    member_id: 0xf5749b19
+    member_id: 0x1ae9d53c
+    member_id: 0xc84230fd
+    member_id: 0x34d9610c
+    member_id: 0xc476909c
+    member_id: 0x4b2c185a
+    member_id: 0x5d12ef79
+    member_id: 0x1de2c30d
+    member_id: 0xcf899a11
+    member_id: 0x6ed23e9e
+    member_id: 0x34971cc8
+    member_id: 0xc39053d4
+    member_id: 0x13510702
+    member_id: 0x9c15c1a6
+    member_id: 0x109cacba
+    member_id: 0xd267ad6e
+    member_id: 0x4b354ae9
+    member_id: 0xc02d3ffa
+    member_id: 0xf8489542
+    member_id: 0x9d4e6964
+    member_id: 0x559738ea
+    member_id: 0x21714820
+    member_id: 0x100cfc4f
+    member_id: 0xdbc79e8b
+    member_id: 0xbe4bd0ca
+    member_id: 0x46e8ec28
+    member_id: 0x6ba3f708
+    member_id: 0x9bd4cc09
+    member_id: 0xd68cb22b
+    member_id: 0xdda1e604
+    member_id: 0x583d51cc
+    member_id: 0xba81f228
+    member_id: 0x664afe49
+    member_id: 0x9523197c
+    member_id: 0x690ac235
+    member_id: 0xc6d46ff6
+    member_id: 0x6df6577e
+    member_id: 0x774d71cb
+    member_id: 0xe274b605
+    member_id: 0x239bd163
+    member_id: 0x59eebc55
+    member_id: 0x908713f9
+    member_id: 0x91877c73
+    member_id: 0x4a689c02
+    member_id: 0x5202a45d
+    member_id: 0x878e979e
+    member_id: 0xd4947d27
+    member_id: 0xb0c8880e
+    member_id: 0xc9e2f324
+    member_id: 0xe7f80404
+    member_id: 0x0bf1485d
+    member_id: 0x905a02be
+    member_id: 0x86b9e856
+    member_id: 0xa084f1d8
+    member_id: 0x0e91ce78
+    member_id: 0x8cf2790e
+    member_id: 0xcb4cb5f2
+    member_id: 0x0aacc218
+    member_id: 0x7d94e57d
+    member_id: 0xe84e3420
+    member_id: 0x6006a5e2
+    member_id: 0x4f286327
+    member_id: 0x739a04c3
+    member_id: 0x15986526
+    member_id: 0xe77408cb
+    member_id: 0x693c7182
+    member_id: 0x0491a57b
+    member_id: 0x53a26072
+    member_id: 0x23172cde
+    member_id: 0x59c1c59e
+  }
+}
+struct_union {
+  id: 0x2dbb6ba4
+  kind: STRUCT
+  name: "ehci_iso_stream"
+  definition {
+    bytesize: 128
+    member_id: 0x97e39ea4
+    member_id: 0x9f5dfe15
+    member_id: 0x06f8b424
+    member_id: 0x6f1e68cb
+    member_id: 0xe04b5a7e
+    member_id: 0xbab5e8a7
+    member_id: 0x7fcfe1c6
+    member_id: 0xd3b050e2
+    member_id: 0x651c6c2a
+    member_id: 0x7d5d377c
+    member_id: 0x04edd2cd
+    member_id: 0x4169e3af
+    member_id: 0x012e72bf
+    member_id: 0xc2edad26
+    member_id: 0x30dab74f
+  }
+}
+struct_union {
+  id: 0xcf638bb6
+  kind: STRUCT
+  name: "ehci_itd"
+  definition {
+    bytesize: 192
+    member_id: 0x999cea4d
+    member_id: 0x7e3adcfc
+    member_id: 0xdc4e5826
+    member_id: 0x64d3610f
+    member_id: 0x587a6f24
+    member_id: 0x4ac4bfb7
+    member_id: 0x3f51e1b9
+    member_id: 0xc036be2c
+    member_id: 0xe6a0407a
+    member_id: 0x1632dad7
+    member_id: 0x88830a16
+    member_id: 0xadcc55aa
+  }
+}
+struct_union {
+  id: 0x8b520931
+  kind: STRUCT
+  name: "ehci_per_sched"
+  definition {
+    bytesize: 48
+    member_id: 0xbb0eb3a5
+    member_id: 0xb5a59eb8
+    member_id: 0x09e02c79
+    member_id: 0x6149ba9a
+    member_id: 0x3e148ecd
+    member_id: 0xffe019d6
+    member_id: 0x391938e5
+    member_id: 0x7c2f1a44
+    member_id: 0x8ecc8cf1
+    member_id: 0xe483d83b
+    member_id: 0xc7675c64
+    member_id: 0xbb474870
+    member_id: 0x78a16018
+  }
+}
+struct_union {
+  id: 0x3f8349b2
+  kind: STRUCT
+  name: "ehci_qh"
+  definition {
+    bytesize: 144
+    member_id: 0x97e39ea4
+    member_id: 0x2fb9399b
+    member_id: 0x6fd9365f
+    member_id: 0x0dbe8eb2
+    member_id: 0x6570978b
+    member_id: 0x1ac29b88
+    member_id: 0x90e114ab
+    member_id: 0xbab5ef4c
+    member_id: 0x5f03fe33
+    member_id: 0xfe6f73bb
+    member_id: 0xdbe05ee6
+    member_id: 0x14bf9a5c
+    member_id: 0x49469be8
+    member_id: 0xc5db038e
+    member_id: 0x49c42b4e
+    member_id: 0x161e460f
+    member_id: 0x4ab70964
+  }
+}
+struct_union {
+  id: 0xb82db02e
+  kind: STRUCT
+  name: "ehci_qh_hw"
+  definition {
+    bytesize: 96
+    member_id: 0x999cea4d
+    member_id: 0xec485b4b
+    member_id: 0x2bb73e0b
+    member_id: 0xce8c8321
+    member_id: 0x46f7df46
+    member_id: 0x53c152ee
+    member_id: 0x46fd83c9
+    member_id: 0xcdf38e1e
+    member_id: 0x3559632c
+  }
+}
+struct_union {
+  id: 0x92ae55cd
+  kind: STRUCT
+  name: "ehci_qtd"
+  definition {
+    bytesize: 96
+    member_id: 0x999cea4d
+    member_id: 0x53c15235
+    member_id: 0x46fd8fe1
+    member_id: 0xcdf384b9
+    member_id: 0x35596215
+    member_id: 0x5abaf597
+    member_id: 0x0dbe8d63
+    member_id: 0x3f51ed66
+    member_id: 0xb599550d
+  }
+}
+struct_union {
+  id: 0xe90acabb
+  kind: STRUCT
+  name: "ehci_regs"
+  definition {
+    bytesize: 204
+    member_id: 0x9187749d
+    member_id: 0x20ae2294
+    member_id: 0x0f83608e
+    member_id: 0x31db385f
+    member_id: 0xfabecdf4
+    member_id: 0x36e3f38a
+    member_id: 0x5a437881
+    member_id: 0xcbb45ae6
+    member_id: 0x497f22b7
+    member_id: 0x08bb268c
+    member_id: 0xba19062c
+    member_id: 0x347a54ed
+    member_id: 0x34a73897
+    member_id: 0xc6eaf026
+    member_id: 0x94628834
+  }
+}
+struct_union {
+  id: 0x2b015d45
+  kind: UNION
+  name: "ehci_shadow"
+  definition {
+    bytesize: 8
+    member_id: 0xf1d282b9
+    member_id: 0xd9fc27f9
+    member_id: 0x0fe9219f
+    member_id: 0x2d3d047d
+    member_id: 0x999f3a98
+    member_id: 0x46e877b0
+  }
+}
+struct_union {
+  id: 0x35eef6b5
+  kind: STRUCT
+  name: "ehci_sitd"
+  definition {
+    bytesize: 96
+    member_id: 0x999cea4d
+    member_id: 0xef534875
+    member_id: 0xfaee60c9
+    member_id: 0x15d36319
+    member_id: 0xcd76d196
+    member_id: 0xefb47f5a
+    member_id: 0x35dc34f4
+    member_id: 0xc4acf911
+    member_id: 0x6772ee5d
+    member_id: 0x3f51ec68
+    member_id: 0xc036bdc7
+    member_id: 0x45197afa
+    member_id: 0x1632d636
+    member_id: 0xad7c831e
+  }
+}
+struct_union {
+  id: 0x763d201a
+  kind: STRUCT
+  name: "elevator_mq_ops"
+  definition {
+    bytesize: 208
+    member_id: 0x4e4ee97d
+    member_id: 0x24c22e21
+    member_id: 0xf587f732
+    member_id: 0x4159bac4
+    member_id: 0x77fa408e
+    member_id: 0xebdedfa9
+    member_id: 0xedfcfb3f
+    member_id: 0x526c22a5
+    member_id: 0x755d8186
+    member_id: 0x30e3be5a
+    member_id: 0xb909dc44
+    member_id: 0xba3a8b53
+    member_id: 0x9749e7b4
+    member_id: 0xf0b7fa24
+    member_id: 0x7ad5f659
+    member_id: 0x4e53e9b0
+    member_id: 0x1c507a86
+    member_id: 0x886a73b0
+    member_id: 0x9030e796
+    member_id: 0x4074d0ef
+    member_id: 0x1461e86f
+    member_id: 0x195a9d9a
+    member_id: 0x2d0817c1
+    member_id: 0x63760ef2
+    member_id: 0xac8943b1
+    member_id: 0xe0f63df3
+  }
+}
+struct_union {
+  id: 0x34232a4f
+  kind: STRUCT
+  name: "elevator_queue"
+  definition {
+    bytesize: 680
+    member_id: 0x5c730e29
+    member_id: 0xb0fa7085
+    member_id: 0x452b29ae
+    member_id: 0x9df338ee
+    member_id: 0x9d3e4666
+    member_id: 0x631a817a
+  }
+}
+struct_union {
+  id: 0xbd2db99f
+  kind: STRUCT
+  name: "elevator_type"
+  definition {
+    bytesize: 344
+    member_id: 0x49a24dd5
+    member_id: 0xaffd3962
+    member_id: 0x60740a1a
+    member_id: 0x57bbe145
+    member_id: 0x520829b9
+    member_id: 0x438e6148
+    member_id: 0xcc6740a5
+    member_id: 0xead2a3de
+    member_id: 0x9c310fea
+    member_id: 0x0791821a
+    member_id: 0xdaffaec8
+    member_id: 0x1d70cba0
+    member_id: 0x7c00ebab
+    member_id: 0x2d081c68
+    member_id: 0x63760c9c
+  }
+}
+struct_union {
+  id: 0xf1f1e1cf
+  kind: STRUCT
+  name: "elf64_sym"
+  definition {
+    bytesize: 24
+    member_id: 0xc17a378d
+    member_id: 0x7825a44f
+    member_id: 0xfe786e3a
+    member_id: 0x7672aabf
+    member_id: 0x3049f3c4
+    member_id: 0x76fd65ac
+  }
+}
+struct_union {
+  id: 0x947379f8
+  kind: STRUCT
+  name: "elv_fs_entry"
+  definition {
+    bytesize: 32
+    member_id: 0x8c29a58d
+    member_id: 0x0a71d6e5
+    member_id: 0xacd67b03
+  }
+}
+struct_union {
+  id: 0xa822fddc
+  kind: STRUCT
+  name: "em_data_callback"
+  definition {
+    bytesize: 16
+    member_id: 0x6c85fe0a
+    member_id: 0xf322d94c
+  }
+}
+struct_union {
+  id: 0xf7042bb3
+  kind: STRUCT
+  name: "em_perf_domain"
+  definition {
+    bytesize: 24
+    member_id: 0xb6ea05f8
+    member_id: 0xd560a7f7
+    member_id: 0x2d5bf8f8
+    member_id: 0xe7bfed11
+  }
+}
+struct_union {
+  id: 0x2e954673
+  kind: STRUCT
+  name: "em_perf_state"
+  definition {
+    bytesize: 32
+    member_id: 0xe5245057
+    member_id: 0xa93a2ca0
+    member_id: 0x91b27035
+    member_id: 0x2d5bf9f3
+  }
+}
+struct_union {
+  id: 0x86cc41ed
+  kind: STRUCT
+  name: "ep_device"
+  definition {
+    bytesize: 928
+    member_id: 0x87d73dc6
+    member_id: 0xbb0eb744
+    member_id: 0xce1ac88b
+  }
+}
+struct_union {
+  id: 0x56160698
+  kind: STRUCT
+  name: "est_timings"
+  definition {
+    bytesize: 3
+    member_id: 0x87d7707b
+    member_id: 0xc517c4f5
+    member_id: 0x1cd0b4f0
+  }
+}
+struct_union {
+  id: 0xed0cdc47
+  kind: STRUCT
+  name: "ethhdr"
+  definition {
+    bytesize: 14
+    member_id: 0xee3b3d38
+    member_id: 0x93da7389
+    member_id: 0xe385c50b
+  }
+}
+struct_union {
+  id: 0x76713e01
+  kind: STRUCT
+  name: "ethtool_ah_espip4_spec"
+  definition {
+    bytesize: 16
+    member_id: 0xa28b61d2
+    member_id: 0xa0818757
+    member_id: 0xd0c9aeb2
+    member_id: 0xf1a035f9
+  }
+}
+struct_union {
+  id: 0x6df98672
+  kind: STRUCT
+  name: "ethtool_ah_espip6_spec"
+  definition {
+    bytesize: 40
+    member_id: 0x2eafbbb4
+    member_id: 0xe61bc14f
+    member_id: 0xd0c9aaf8
+    member_id: 0x51753743
+  }
+}
+struct_union {
+  id: 0xa5a4159e
+  kind: STRUCT
+  name: "ethtool_channels"
+  definition {
+    bytesize: 36
+    member_id: 0x1af6f030
+    member_id: 0xb1254b2b
+    member_id: 0xb03d8885
+    member_id: 0xbcd32111
+    member_id: 0xbef71264
+    member_id: 0x259e9acd
+    member_id: 0xd4d17de9
+    member_id: 0xbccd0941
+    member_id: 0x26f5c78d
+  }
+}
+struct_union {
+  id: 0x1a60cc51
+  kind: STRUCT
+  name: "ethtool_cmd"
+  definition {
+    bytesize: 44
+    member_id: 0x1af6f030
+    member_id: 0x878d4469
+    member_id: 0x9f97e4f3
+    member_id: 0xa002871a
+    member_id: 0x703907cc
+    member_id: 0x4848fa31
+    member_id: 0xcc9165e4
+    member_id: 0x555e8335
+    member_id: 0xbed54502
+    member_id: 0xe2b8933a
+    member_id: 0x349eb14e
+    member_id: 0x51858165
+    member_id: 0x93cedaae
+    member_id: 0xca94b2d4
+    member_id: 0x8530641a
+    member_id: 0x6279847e
+    member_id: 0xd4368a4c
+  }
+}
+struct_union {
+  id: 0xe87b6f2e
+  kind: STRUCT
+  name: "ethtool_coalesce"
+  definition {
+    bytesize: 92
+    member_id: 0x1af6f030
+    member_id: 0x93a1749c
+    member_id: 0xfd4774fd
+    member_id: 0xa1c0d7ce
+    member_id: 0x18d8e5db
+    member_id: 0x2856266b
+    member_id: 0x55810d6d
+    member_id: 0x3297a17c
+    member_id: 0x70b330f1
+    member_id: 0x4fb8f148
+    member_id: 0x07c67ca6
+    member_id: 0x6eb7a333
+    member_id: 0x607e1775
+    member_id: 0xf002ff57
+    member_id: 0x55d2132b
+    member_id: 0xab46de8d
+    member_id: 0x0cb2d256
+    member_id: 0x5168e51c
+    member_id: 0x7948964e
+    member_id: 0xab0b4944
+    member_id: 0x1ebcd154
+    member_id: 0x6348ab5c
+    member_id: 0x67b69f8d
+  }
+}
+struct_union {
+  id: 0xdd178f2d
+  kind: STRUCT
+  name: "ethtool_drvinfo"
+  definition {
+    bytesize: 196
+    member_id: 0x1af6f030
+    member_id: 0xd414407c
+    member_id: 0xa63beff4
+    member_id: 0xfb37bedf
+    member_id: 0x9db2f754
+    member_id: 0x731aef73
+    member_id: 0x08aacc97
+    member_id: 0x8537da02
+    member_id: 0x79f7146e
+    member_id: 0x6ca576c7
+    member_id: 0x3486ee16
+    member_id: 0xd838f374
+  }
+}
+struct_union {
+  id: 0xc41fffbd
+  kind: STRUCT
+  name: "ethtool_dump"
+  definition {
+    bytesize: 16
+    member_id: 0x1af6f030
+    member_id: 0xa68717fe
+    member_id: 0x25b47614
+    member_id: 0xb8e3f26a
+    member_id: 0xff7aedce
+  }
+}
+struct_union {
+  id: 0xb4f4f790
+  kind: STRUCT
+  name: "ethtool_eee"
+  definition {
+    bytesize: 40
+    member_id: 0x1af6f030
+    member_id: 0x878d4469
+    member_id: 0x686a7031
+    member_id: 0x6c36ba4a
+    member_id: 0xdfd0e2e3
+    member_id: 0x4331f46c
+    member_id: 0xa6a7625f
+    member_id: 0xf0f08665
+    member_id: 0xd4368e3e
+  }
+}
+struct_union {
+  id: 0xbad9ac93
+  kind: STRUCT
+  name: "ethtool_eeprom"
+  definition {
+    bytesize: 16
+    member_id: 0x1af6f030
+    member_id: 0xd695eaf2
+    member_id: 0x9bfaf69a
+    member_id: 0xb8e3f26a
+    member_id: 0xff7aedce
+  }
+}
+struct_union {
+  id: 0xe4f43dd3
+  kind: STRUCT
+  name: "ethtool_eth_ctrl_stats"
+  definition {
+    bytesize: 24
+    member_id: 0xcda73178
+    member_id: 0xf02eff79
+    member_id: 0x107e7ca8
+  }
+}
+struct_union {
+  id: 0x25750584
+  kind: STRUCT
+  name: "ethtool_eth_mac_stats"
+  definition {
+    bytesize: 176
+    member_id: 0x9dd761bd
+    member_id: 0x7c8807d5
+    member_id: 0x97a613b0
+    member_id: 0x40d066e8
+    member_id: 0xb54e06e6
+    member_id: 0x6012493f
+    member_id: 0xc9d71d9b
+    member_id: 0x4763bb60
+    member_id: 0x029c2afc
+    member_id: 0xca8b5878
+    member_id: 0x96dabdda
+    member_id: 0xa49bcaed
+    member_id: 0xfabdd592
+    member_id: 0x54ec9758
+    member_id: 0xdc2f6254
+    member_id: 0xeddb500a
+    member_id: 0x29c0ac93
+    member_id: 0xd467f274
+    member_id: 0xf6aa09ff
+    member_id: 0xa227ee08
+    member_id: 0x864b662d
+    member_id: 0xecb7e052
+  }
+}
+struct_union {
+  id: 0xd8ed88b2
+  kind: STRUCT
+  name: "ethtool_eth_phy_stats"
+  definition {
+    bytesize: 8
+    member_id: 0x71c66907
+  }
+}
+struct_union {
+  id: 0xec739179
+  kind: STRUCT
+  name: "ethtool_fec_stat"
+  definition {
+    bytesize: 72
+    member_id: 0x9dc15149
+    member_id: 0x3db98029
+  }
+}
+struct_union {
+  id: 0x763bbd4c
+  kind: STRUCT
+  name: "ethtool_fec_stats"
+  definition {
+    bytesize: 216
+    member_id: 0xb083d4fc
+    member_id: 0x45ce329c
+    member_id: 0xdcc78c50
+  }
+}
+struct_union {
+  id: 0xd4fe3e59
+  kind: STRUCT
+  name: "ethtool_fecparam"
+  definition {
+    bytesize: 16
+    member_id: 0x1af6f030
+    member_id: 0x35ffcd52
+    member_id: 0x19ab147e
+    member_id: 0xd4858b46
+  }
+}
+struct_union {
+  id: 0x02f8e635
+  kind: STRUCT
+  name: "ethtool_flash"
+  definition {
+    bytesize: 136
+    member_id: 0x1af6f030
+    member_id: 0x2526b55e
+    member_id: 0xffb2ddec
+  }
+}
+struct_union {
+  id: 0xccef9d09
+  kind: STRUCT
+  name: "ethtool_flow_ext"
+  definition {
+    bytesize: 20
+    member_id: 0x64a65d9f
+    member_id: 0xee3b3386
+    member_id: 0xdeda9aa4
+    member_id: 0x276eaaaf
+    member_id: 0xffc61904
+  }
+}
+struct_union {
+  id: 0xec82d04c
+  kind: UNION
+  name: "ethtool_flow_union"
+  definition {
+    bytesize: 52
+    member_id: 0x798ceb2c
+    member_id: 0xcbcc7937
+    member_id: 0xb07960b6
+    member_id: 0x9b642e7a
+    member_id: 0x8c72bd92
+    member_id: 0xa5df2eff
+    member_id: 0x2266bedc
+    member_id: 0x1504e745
+    member_id: 0x08717e6b
+    member_id: 0x5d08a357
+    member_id: 0x5bbc9ea8
+    member_id: 0x17a75665
+    member_id: 0xedf651c0
+    member_id: 0x5c264ac1
+  }
+}
+struct_union {
+  id: 0x977e419a
+  kind: STRUCT
+  name: "ethtool_link_ext_state_info"
+  definition {
+    bytesize: 8
+    member_id: 0x49c17ebb
+    member_id: 0x3d958b01
+  }
+}
+struct_union {
+  id: 0x4e952af8
+  kind: STRUCT
+  name: "ethtool_link_ksettings"
+  definition {
+    bytesize: 104
+    member_id: 0x85c2e109
+    member_id: 0xaa715cc9
+    member_id: 0x3db03209
+  }
+}
+struct_union {
+  id: 0x180f82e8
+  kind: STRUCT
+  name: "ethtool_link_settings"
+  definition {
+    bytesize: 48
+    member_id: 0x1af6f030
+    member_id: 0xa00cae5d
+    member_id: 0x70390fe0
+    member_id: 0x4848f266
+    member_id: 0xcc9168ba
+    member_id: 0xbed548e9
+    member_id: 0xe2b8944e
+    member_id: 0xca94b363
+    member_id: 0x8530689b
+    member_id: 0x947d273c
+    member_id: 0x555e82f8
+    member_id: 0x62eb7e70
+    member_id: 0x2724edb5
+    member_id: 0xd5cf19e3
+    member_id: 0xd432e4ad
+    member_id: 0xa79bb0e8
+  }
+}
+struct_union {
+  id: 0x8af401a4
+  kind: STRUCT
+  name: "ethtool_modinfo"
+  definition {
+    bytesize: 44
+    member_id: 0x1af6f030
+    member_id: 0x5cb0f6fa
+    member_id: 0x9b589369
+    member_id: 0xd4be10de
+  }
+}
+struct_union {
+  id: 0x65d78220
+  kind: STRUCT
+  name: "ethtool_module_eeprom"
+  definition {
+    bytesize: 24
+    member_id: 0x9bd5d4ef
+    member_id: 0xb5a46748
+    member_id: 0x322c8b32
+    member_id: 0xf1f84479
+    member_id: 0x85709fb6
+    member_id: 0xff92ea8b
+  }
+}
+struct_union {
+  id: 0x810828ae
+  kind: STRUCT
+  name: "ethtool_module_power_mode_params"
+  definition {
+    bytesize: 8
+    member_id: 0x604985e0
+    member_id: 0x87efc974
+  }
+}
+struct_union {
+  id: 0x5c33b1ce
+  kind: STRUCT
+  name: "ethtool_ops"
+  definition {
+    bytesize: 592
+    member_id: 0x52367448
+    member_id: 0x5c8cf290
+    member_id: 0x6ba7e4af
+    member_id: 0x4da0477d
+    member_id: 0x246ec66d
+    member_id: 0x4d3f0523
+    member_id: 0x208df2c3
+    member_id: 0x4f887ff9
+    member_id: 0x544169ed
+    member_id: 0x80dac66f
+    member_id: 0xcf5bd856
+    member_id: 0x430106a7
+    member_id: 0xb2b5c2bf
+    member_id: 0x18c1d495
+    member_id: 0x08d9ea4a
+    member_id: 0xe6b154e9
+    member_id: 0x56a095c9
+    member_id: 0x455be24c
+    member_id: 0x12f3c8d8
+    member_id: 0xa174b423
+    member_id: 0x9327c823
+    member_id: 0x3080d2dc
+    member_id: 0xe37aa4c9
+    member_id: 0x8ba886be
+    member_id: 0xab225202
+    member_id: 0x3e5d6d01
+    member_id: 0x0f823a3d
+    member_id: 0x383c84d4
+    member_id: 0x4a543ab8
+    member_id: 0x626604b4
+    member_id: 0xe9c453d9
+    member_id: 0x921d85f7
+    member_id: 0x635bcd50
+    member_id: 0xcb9fe2aa
+    member_id: 0x4ac8a39f
+    member_id: 0x62934967
+    member_id: 0x13dec26e
+    member_id: 0x6359c743
+    member_id: 0x4056955a
+    member_id: 0x142af9ef
+    member_id: 0xfe6a2921
+    member_id: 0x300d4e2f
+    member_id: 0xace931c5
+    member_id: 0xbef3cf26
+    member_id: 0x0ff98153
+    member_id: 0x4d567ba6
+    member_id: 0xa6d60891
+    member_id: 0xbe94364c
+    member_id: 0x9e17f078
+    member_id: 0x1b778049
+    member_id: 0xab650bcc
+    member_id: 0x08dae59e
+    member_id: 0x26720165
+    member_id: 0xbf4e5191
+    member_id: 0xa7341c0e
+    member_id: 0x5071b91d
+    member_id: 0x457ccade
+    member_id: 0x9a6cf748
+    member_id: 0xb9dfc30b
+    member_id: 0x77756563
+    member_id: 0xada2d6c5
+    member_id: 0x463e99b0
+    member_id: 0xf22522e1
+    member_id: 0x02ad034e
+    member_id: 0x9f30d55f
+    member_id: 0xb103b9b2
+    member_id: 0xe4d86285
+    member_id: 0xf5ef910b
+    member_id: 0x0463e185
+    member_id: 0x8bf7a6d3
+    member_id: 0xe54965c1
+    member_id: 0x2d0815f4
+    member_id: 0x637603bc
+    member_id: 0xac89435b
+    member_id: 0xe0f6350c
+  }
+}
+struct_union {
+  id: 0x643ac3c2
+  kind: STRUCT
+  name: "ethtool_pause_stats"
+  definition {
+    bytesize: 16
+    member_id: 0x59366fb4
+    member_id: 0xd14c9642
+  }
+}
+struct_union {
+  id: 0x5f243103
+  kind: STRUCT
+  name: "ethtool_pauseparam"
+  definition {
+    bytesize: 16
+    member_id: 0x1af6f030
+    member_id: 0xbe808351
+    member_id: 0x454bac3e
+    member_id: 0x6005ed42
+  }
+}
+struct_union {
+  id: 0xa405746d
+  kind: STRUCT
+  name: "ethtool_regs"
+  definition {
+    bytesize: 12
+    member_id: 0x1af6f030
+    member_id: 0xa68717fe
+    member_id: 0xb8e3ff08
+    member_id: 0xff7aed8f
+  }
+}
+struct_union {
+  id: 0xc9bb5b62
+  kind: STRUCT
+  name: "ethtool_ringparam"
+  definition {
+    bytesize: 36
+    member_id: 0x1af6f030
+    member_id: 0xb3fd2900
+    member_id: 0x8d7c1266
+    member_id: 0x9f7333aa
+    member_id: 0x7992b00c
+    member_id: 0x2dbf9dde
+    member_id: 0x19be1063
+    member_id: 0x52803368
+    member_id: 0x81a40f2e
+  }
+}
+struct_union {
+  id: 0xc24235ee
+  kind: STRUCT
+  name: "ethtool_rmon_hist_range"
+  definition {
+    bytesize: 4
+    member_id: 0xe4294f6c
+    member_id: 0x854422bb
+  }
+}
+struct_union {
+  id: 0x2c083a61
+  kind: STRUCT
+  name: "ethtool_rmon_stats"
+  definition {
+    bytesize: 192
+    member_id: 0x04b7308b
+    member_id: 0xd6f782b4
+    member_id: 0x8f16c47d
+    member_id: 0x161680e4
+    member_id: 0xba5bf4b5
+    member_id: 0xd81f8a96
+  }
+}
+struct_union {
+  id: 0x9f206b88
+  kind: STRUCT
+  name: "ethtool_rx_flow_spec"
+  definition {
+    bytesize: 168
+    member_id: 0x2fe25e54
+    member_id: 0x31f412b1
+    member_id: 0xc264e9e9
+    member_id: 0x63d123b7
+    member_id: 0xf2bf147e
+    member_id: 0x31683fef
+    member_id: 0xf5ed63af
+  }
+}
+struct_union {
+  id: 0x35bbf101
+  kind: STRUCT
+  name: "ethtool_rxnfc"
+  definition {
+    bytesize: 192
+    member_id: 0x1af6f030
+    member_id: 0x2fe2536f
+    member_id: 0xff7fd2fa
+    member_id: 0x9442b15a
+    member_id: 0x3ec11e42
+    member_id: 0xbdac429c
+  }
+}
+struct_union {
+  id: 0xb746b42c
+  kind: STRUCT
+  name: "ethtool_stats"
+  definition {
+    bytesize: 8
+    member_id: 0x1af6f030
+    member_id: 0x79f71bc9
+    member_id: 0xff6d659e
+  }
+}
+struct_union {
+  id: 0xdc098d1a
+  kind: STRUCT
+  name: "ethtool_tcpip4_spec"
+  definition {
+    bytesize: 16
+    member_id: 0xa28b61d2
+    member_id: 0xa0818757
+    member_id: 0x5dbcd81f
+    member_id: 0xa2ef971a
+    member_id: 0xf1a035f9
+  }
+}
+struct_union {
+  id: 0xe7754efc
+  kind: STRUCT
+  name: "ethtool_tcpip6_spec"
+  definition {
+    bytesize: 40
+    member_id: 0x2eafbbb4
+    member_id: 0xe61bc14f
+    member_id: 0x5dbcdc55
+    member_id: 0xa2ef9390
+    member_id: 0x51753743
+  }
+}
+struct_union {
+  id: 0x21e6d4a8
+  kind: STRUCT
+  name: "ethtool_test"
+  definition {
+    bytesize: 16
+    member_id: 0x1af6f030
+    member_id: 0x2d8ea7da
+    member_id: 0xd4858624
+    member_id: 0xb8e3f26a
+    member_id: 0xff6d68bd
+  }
+}
+struct_union {
+  id: 0x68ffd9e1
+  kind: STRUCT
+  name: "ethtool_ts_info"
+  definition {
+    bytesize: 44
+    member_id: 0x1af6f030
+    member_id: 0xe9bb958d
+    member_id: 0x7b93229e
+    member_id: 0xfe17a0e3
+    member_id: 0x5f95d285
+    member_id: 0x556844e8
+    member_id: 0xb906969b
+  }
+}
+struct_union {
+  id: 0x8734a0df
+  kind: STRUCT
+  name: "ethtool_tunable"
+  definition {
+    bytesize: 16
+    member_id: 0x1af6f030
+    member_id: 0xccc90f15
+    member_id: 0x148d9991
+    member_id: 0xb8e3f26a
+    member_id: 0xff503b79
+  }
+}
+struct_union {
+  id: 0x787ac015
+  kind: STRUCT
+  name: "ethtool_usrip4_spec"
+  definition {
+    bytesize: 16
+    member_id: 0xa28b61d2
+    member_id: 0xa0818757
+    member_id: 0x4587957b
+    member_id: 0xf1a035f9
+    member_id: 0xc6513e8d
+    member_id: 0x5dd027c0
+  }
+}
+struct_union {
+  id: 0x10446400
+  kind: STRUCT
+  name: "ethtool_usrip6_spec"
+  definition {
+    bytesize: 40
+    member_id: 0x2eafbbb4
+    member_id: 0xe61bc14f
+    member_id: 0x45879131
+    member_id: 0x51753743
+    member_id: 0xc5a2f97e
+  }
+}
+struct_union {
+  id: 0xaed3c159
+  kind: STRUCT
+  name: "ethtool_wolinfo"
+  definition {
+    bytesize: 20
+    member_id: 0x1af6f030
+    member_id: 0x878d4469
+    member_id: 0x3f39fe7d
+    member_id: 0x24c2e3b6
+  }
+}
+struct_union {
+  id: 0xf098395b
+  kind: STRUCT
+  name: "event_filter"
+  definition {
+    bytesize: 16
+    member_id: 0x9823e9e8
+    member_id: 0x1f326914
+  }
+}
+struct_union {
+  id: 0x65df6648
+  kind: STRUCT
+  name: "event_subsystem"
+  definition {
+    bytesize: 40
+    member_id: 0x7c00ef52
+    member_id: 0x0de5752a
+    member_id: 0xa33d2b1c
+    member_id: 0x53e1405b
+  }
+}
+struct_union {
+  id: 0xd24b7c89
+  kind: STRUCT
+  name: "eventfd_ctx"
+  definition {
+    bytesize: 48
+    member_id: 0x02ce5986
+    member_id: 0x4dfdad78
+    member_id: 0x65c8ad18
+    member_id: 0x2d2d06ff
+    member_id: 0xcc48081b
+  }
+}
+struct_union {
+  id: 0xd05fb2d0
+  kind: STRUCT
+  name: "ewma_psr_time"
+  definition {
+    bytesize: 8
+    member_id: 0xcf4d905d
+  }
+}
+struct_union {
+  id: 0xee0184a9
+  kind: STRUCT
+  name: "exception_table_entry"
+  definition {
+    bytesize: 12
+    member_id: 0x3b86cec8
+    member_id: 0x8923c81c
+    member_id: 0x5ce6e0b2
+    member_id: 0xff2211dd
+  }
+}
+struct_union {
+  id: 0x87af050a
+  kind: STRUCT
+  name: "execute_work"
+  definition {
+    bytesize: 48
+    member_id: 0xd6e667b7
+  }
+}
+struct_union {
+  id: 0x2c1ee52f
+  kind: STRUCT
+  name: "export_operations"
+  definition {
+    bytesize: 88
+    member_id: 0x6c984f90
+    member_id: 0x4b95f76a
+    member_id: 0x1aa3f6ef
+    member_id: 0x1a6aacc4
+    member_id: 0x75a34ab5
+    member_id: 0xa0d22c3d
+    member_id: 0x96f04e02
+    member_id: 0x11e73392
+    member_id: 0xe0e6cac0
+    member_id: 0x010c004b
+    member_id: 0x2d5bf743
+  }
+}
+struct_union {
+  id: 0x99d47829
+  kind: STRUCT
+  name: "extcon_cable"
+  definition {
+    bytesize: 208
+    member_id: 0xbe46c513
+    member_id: 0xa6115f85
+    member_id: 0xa59eb82e
+    member_id: 0x233aca28
+    member_id: 0xd16312b5
+    member_id: 0x4d7101fe
+    member_id: 0x83895d9b
+    member_id: 0x7ac5b6a8
+    member_id: 0x3948ab48
+    member_id: 0x28df146e
+    member_id: 0x8a756656
+    member_id: 0xbddcf5c5
+    member_id: 0x87ae8577
+    member_id: 0x3814ab00
+  }
+}
+struct_union {
+  id: 0x6a68b125
+  kind: STRUCT
+  name: "extcon_dev"
+  definition {
+    bytesize: 1096
+    member_id: 0x0de57ce8
+    member_id: 0x00b23291
+    member_id: 0x68fd34f2
+    member_id: 0xce1ac980
+    member_id: 0xdb1c1848
+    member_id: 0x71302a23
+    member_id: 0x4d878696
+    member_id: 0xc6381803
+    member_id: 0x2d1fe42a
+    member_id: 0x723af9cf
+    member_id: 0xa5453312
+    member_id: 0x4c3e29cd
+    member_id: 0x465f0653
+    member_id: 0xfe59a021
+    member_id: 0x4d4e6d82
+  }
+}
+struct_union {
+  id: 0x0683618a
+  kind: UNION
+  name: "extcon_property_value"
+  definition {
+    bytesize: 4
+    member_id: 0xff67f40b
+  }
+}
+struct_union {
+  id: 0x18ec8d59
+  kind: STRUCT
+  name: "extended_perms"
+  definition {
+    bytesize: 36
+    member_id: 0xb89498e9
+    member_id: 0x922207d0
+  }
+}
+struct_union {
+  id: 0xc4d82b11
+  kind: STRUCT
+  name: "extended_perms_data"
+  definition {
+    bytesize: 32
+    member_id: 0xa6673206
+  }
+}
+struct_union {
+  id: 0xbdd1c219
+  kind: STRUCT
+  name: "fasync_struct"
+  definition {
+    bytesize: 48
+    member_id: 0x2a3a4275
+    member_id: 0xd614ed44
+    member_id: 0x6f6b6d8a
+    member_id: 0xffd914d8
+    member_id: 0x7cce488e
+    member_id: 0xb724a620
+  }
+}
+struct_union {
+  id: 0xd529883e
+  kind: STRUCT
+  name: "fb_bitfield"
+  definition {
+    bytesize: 12
+    member_id: 0x9bfaf27b
+    member_id: 0xb58b41dc
+    member_id: 0x10b6405f
+  }
+}
+struct_union {
+  id: 0x502c6c93
+  kind: STRUCT
+  name: "fb_blit_caps"
+  definition {
+    bytesize: 16
+    member_id: 0xa07b63fd
+    member_id: 0xffba0f94
+    member_id: 0xb8ccd99c
+    member_id: 0x2da185f6
+  }
+}
+struct_union {
+  id: 0x831ee327
+  kind: STRUCT
+  name: "fb_chroma"
+  definition {
+    bytesize: 32
+    member_id: 0xd7e9e4e1
+    member_id: 0xcbf51d32
+    member_id: 0xbbd85ada
+    member_id: 0x9dd4af54
+    member_id: 0x16a88d75
+    member_id: 0x88793a5f
+    member_id: 0x7a9b3244
+    member_id: 0x5f140185
+  }
+}
+struct_union {
+  id: 0xff60db3e
+  kind: STRUCT
+  name: "fb_cmap"
+  definition {
+    bytesize: 40
+    member_id: 0x46fd1def
+    member_id: 0xb8e3f6d2
+    member_id: 0x4dad491a
+    member_id: 0x43e1eea1
+    member_id: 0x9d8aa43e
+    member_id: 0x2621cc67
+  }
+}
+struct_union {
+  id: 0xe5e7cb60
+  kind: STRUCT
+  name: "fb_copyarea"
+  definition {
+    bytesize: 24
+    member_id: 0x5f6207d0
+    member_id: 0x1b25904f
+    member_id: 0x0a6bd05e
+    member_id: 0x2bfbcb1e
+    member_id: 0xe4a96d72
+    member_id: 0x25eee9d4
+  }
+}
+struct_union {
+  id: 0x13afdb2b
+  kind: STRUCT
+  name: "fb_cursor"
+  definition {
+    bytesize: 104
+    member_id: 0x3d3643b1
+    member_id: 0x980f02e1
+    member_id: 0x38930b8b
+    member_id: 0xa80d7d79
+    member_id: 0x13544c4c
+    member_id: 0x77e682c9
+  }
+}
+struct_union {
+  id: 0xd0c9c8ea
+  kind: STRUCT
+  name: "fb_fillrect"
+  definition {
+    bytesize: 24
+    member_id: 0x5f6207d0
+    member_id: 0x1b25904f
+    member_id: 0x0a6bd05e
+    member_id: 0x2bfbcb1e
+    member_id: 0x6e238e16
+    member_id: 0x389d26af
+  }
+}
+struct_union {
+  id: 0x0d5c9be0
+  kind: STRUCT
+  name: "fb_fix_screeninfo"
+  definition {
+    bytesize: 80
+    member_id: 0xcc6d0c8c
+    member_id: 0x76097e94
+    member_id: 0x0697a2b0
+    member_id: 0x5cb0f8e5
+    member_id: 0xf0496fa3
+    member_id: 0x5816f37f
+    member_id: 0x7c0b3c9f
+    member_id: 0x05f8b7b6
+    member_id: 0x3b743013
+    member_id: 0x4c5f7631
+    member_id: 0x12cc7367
+    member_id: 0xdba12957
+    member_id: 0x2d0aa21d
+    member_id: 0xa7700cfa
+    member_id: 0xd4350edf
+  }
+}
+struct_union {
+  id: 0xecb578cc
+  kind: STRUCT
+  name: "fb_image"
+  definition {
+    bytesize: 80
+    member_id: 0x5f6207d0
+    member_id: 0x1b25904f
+    member_id: 0x0a6bd05e
+    member_id: 0x2bfbcb1e
+    member_id: 0xd52103da
+    member_id: 0x206fab2f
+    member_id: 0x1bd7e77f
+    member_id: 0xffac3472
+    member_id: 0x1a6919d6
+  }
+}
+struct_union {
+  id: 0xc14a6eb8
+  kind: STRUCT
+  name: "fb_info"
+  definition {
+    bytesize: 768
+    member_id: 0x65827d05
+    member_id: 0x0f122346
+    member_id: 0x2d0fa06c
+    member_id: 0xcc4a4101
+    member_id: 0x2d4b35c2
+    member_id: 0x44f084f8
+    member_id: 0xeae03519
+    member_id: 0x7601e027
+    member_id: 0x46f6fcfe
+    member_id: 0xdf400cd4
+    member_id: 0xdcd67875
+    member_id: 0x1a691bdb
+    member_id: 0xfe049796
+    member_id: 0x879d0cfa
+    member_id: 0x09c9cdf1
+    member_id: 0xea3074eb
+    member_id: 0xce3bb00c
+    member_id: 0x201a9113
+    member_id: 0x326ba67e
+    member_id: 0xcfe67f2f
+    member_id: 0x84cf5b81
+    member_id: 0x723af7a2
+    member_id: 0x39db2a64
+    member_id: 0xfe407cce
+    member_id: 0xfc238ba4
+    member_id: 0xe39dc0f6
+  }
+}
+struct_union {
+  id: 0x9906a5a0
+  kind: STRUCT
+  name: "fb_monspecs"
+  definition {
+    bytesize: 144
+    member_id: 0xc31fd43b
+    member_id: 0xc598fcc4
+    member_id: 0xa9f7200f
+    member_id: 0xf37f50f9
+    member_id: 0xa5d6be07
+    member_id: 0x3922b866
+    member_id: 0xc3fe8392
+    member_id: 0xdfacb3c8
+    member_id: 0xa7636908
+    member_id: 0x582546da
+    member_id: 0x2a6305f7
+    member_id: 0xa4292aba
+    member_id: 0xdafb5d16
+    member_id: 0x1e68d7b5
+    member_id: 0xb5781583
+    member_id: 0x73fe0389
+    member_id: 0xf8989279
+    member_id: 0x0900f80a
+    member_id: 0xf04480ba
+    member_id: 0x596498ea
+    member_id: 0xfa0c985b
+    member_id: 0x43e8174e
+    member_id: 0x7f32aab4
+    member_id: 0xa6d2deda
+    member_id: 0x941b3706
+    member_id: 0x725dd377
+    member_id: 0xb2de157c
+  }
+}
+struct_union {
+  id: 0x20e9ec6e
+  kind: STRUCT
+  name: "fb_ops"
+  definition {
+    bytesize: 184
+    member_id: 0x4a965250
+    member_id: 0x5983bf80
+    member_id: 0x2a65fb22
+    member_id: 0x1ae98a5b
+    member_id: 0xc2d99954
+    member_id: 0x0e42cec6
+    member_id: 0x12d8ba1f
+    member_id: 0x7167cccc
+    member_id: 0x78b5168c
+    member_id: 0xa65c3349
+    member_id: 0x3fe6de17
+    member_id: 0x9c609fcf
+    member_id: 0x0f70316b
+    member_id: 0x40beff82
+    member_id: 0x8f212531
+    member_id: 0x85c811af
+    member_id: 0x4e62e8f5
+    member_id: 0x1887c453
+    member_id: 0x9fb0b407
+    member_id: 0x68d222c4
+    member_id: 0x6e69851e
+    member_id: 0x078fe1c9
+    member_id: 0x6ff76bb8
+  }
+}
+struct_union {
+  id: 0x9a93ffb7
+  kind: STRUCT
+  name: "fb_pixmap"
+  definition {
+    bytesize: 56
+    member_id: 0x242d1843
+    member_id: 0xd9b710b8
+    member_id: 0x9bd5dd6c
+    member_id: 0xaaa67b0f
+    member_id: 0x721968d4
+    member_id: 0xefe4e2af
+    member_id: 0x2da18f51
+    member_id: 0x60b5f6bd
+    member_id: 0x23700a6b
+    member_id: 0xecd559ca
+    member_id: 0xda479e71
+  }
+}
+struct_union {
+  id: 0x72197497
+  kind: STRUCT
+  name: "fb_var_screeninfo"
+  definition {
+    bytesize: 160
+    member_id: 0x8d33afbd
+    member_id: 0xb8815f32
+    member_id: 0xe5d56bf3
+    member_id: 0x431fb38a
+    member_id: 0x68095b2f
+    member_id: 0x65be039b
+    member_id: 0xea313135
+    member_id: 0x98448846
+    member_id: 0x4d48f431
+    member_id: 0x43045a5b
+    member_id: 0x9d6f12e1
+    member_id: 0x26c47b72
+    member_id: 0xea5def3c
+    member_id: 0xdc3d085b
+    member_id: 0x2bfbc0a0
+    member_id: 0x0a6bda78
+    member_id: 0x2b4308db
+    member_id: 0xa0f65dad
+    member_id: 0x06c685b4
+    member_id: 0xf729a989
+    member_id: 0xee62c2cc
+    member_id: 0xdbca9a98
+    member_id: 0x0e8e6e58
+    member_id: 0xb29e5e95
+    member_id: 0x50320a40
+    member_id: 0x270c09e3
+    member_id: 0xf9d86c9d
+    member_id: 0x7b9fc686
+    member_id: 0xd4d6641a
+  }
+}
+struct_union {
+  id: 0x2a171dff
+  kind: STRUCT
+  name: "fb_videomode"
+  definition {
+    bytesize: 64
+    member_id: 0x0de57ce8
+    member_id: 0xd8dca99e
+    member_id: 0x8d1c80aa
+    member_id: 0xb8ae7d5f
+    member_id: 0xa0d979be
+    member_id: 0x06e9a853
+    member_id: 0xf7068af4
+    member_id: 0xee4dee55
+    member_id: 0xdbe5bf47
+    member_id: 0x0ea147f8
+    member_id: 0xb2b17c8a
+    member_id: 0x501d2a59
+    member_id: 0x27232436
+    member_id: 0x259b5316
+  }
+}
+struct_union {
+  id: 0xd519c298
+  kind: STRUCT
+  name: "fbcurpos"
+  definition {
+    bytesize: 4
+    member_id: 0xa05a6896
+    member_id: 0xff9b077a
+  }
+}
+struct_union {
+  id: 0x305f514b
+  kind: STRUCT
+  name: "fc_log"
+  definition {
+    bytesize: 80
+    member_id: 0x07cdabee
+    member_id: 0xb573e848
+    member_id: 0xeeb4fed9
+    member_id: 0x34dbea4f
+    member_id: 0x4a9656b1
+    member_id: 0x333b1c68
+  }
+}
+struct_union {
+  id: 0x42e6e9c5
+  kind: STRUCT
+  name: "fdtable"
+  definition {
+    bytesize: 56
+    member_id: 0xbe09b3ed
+    member_id: 0x7f1eb624
+    member_id: 0x44f57bef
+    member_id: 0xcefb3c16
+    member_id: 0x9c1851f6
+    member_id: 0x95daceb0
+  }
+}
+struct_union {
+  id: 0x86b7dd9a
+  kind: STRUCT
+  name: "ff_condition_effect"
+  definition {
+    bytesize: 12
+    member_id: 0x53f3cfab
+    member_id: 0xb6b511c9
+    member_id: 0x0471a4af
+    member_id: 0x84ed1eb9
+    member_id: 0xc48daa2e
+    member_id: 0x4b510d80
+  }
+}
+struct_union {
+  id: 0xd752f3a0
+  kind: STRUCT
+  name: "ff_constant_effect"
+  definition {
+    bytesize: 10
+    member_id: 0x86bab19e
+    member_id: 0x7d518a7d
+  }
+}
+struct_union {
+  id: 0xfe77e903
+  kind: STRUCT
+  name: "ff_device"
+  definition {
+    bytesize: 144
+    member_id: 0x1eb25728
+    member_id: 0x001d37e4
+    member_id: 0xb36f55f3
+    member_id: 0xd3fd73af
+    member_id: 0x4d5d3716
+    member_id: 0xa4fbcad2
+    member_id: 0x91796721
+    member_id: 0x94cea1dd
+    member_id: 0xad898a70
+    member_id: 0x779a4cc8
+    member_id: 0x3e5e79f9
+    member_id: 0x2d081844
+    member_id: 0x509fe27f
+  }
+}
+struct_union {
+  id: 0xdcf68c1a
+  kind: STRUCT
+  name: "ff_effect"
+  definition {
+    bytesize: 48
+    member_id: 0x5cbed63e
+    member_id: 0xcc2f5ca3
+    member_id: 0xa070c117
+    member_id: 0x354d0597
+    member_id: 0x840c245e
+    member_id: 0xec2a2154
+  }
+}
+struct_union {
+  id: 0x8fbb2b03
+  kind: STRUCT
+  name: "ff_envelope"
+  definition {
+    bytesize: 8
+    member_id: 0x6a5b1d5e
+    member_id: 0x9cf83c82
+    member_id: 0x0bad70a4
+    member_id: 0x8c39e7a9
+  }
+}
+struct_union {
+  id: 0x74314a25
+  kind: STRUCT
+  name: "ff_periodic_effect"
+  definition {
+    bytesize: 32
+    member_id: 0x0315a20e
+    member_id: 0xff995d4e
+    member_id: 0xd5c8b7d7
+    member_id: 0x9b1cae89
+    member_id: 0x39607a62
+    member_id: 0x7d51805f
+    member_id: 0xa8806bc9
+    member_id: 0x4bac8214
+  }
+}
+struct_union {
+  id: 0xef5c2474
+  kind: STRUCT
+  name: "ff_ramp_effect"
+  definition {
+    bytesize: 12
+    member_id: 0x4ca5b709
+    member_id: 0xce89a886
+    member_id: 0x7d5189f8
+  }
+}
+struct_union {
+  id: 0x9be40ce7
+  kind: STRUCT
+  name: "ff_replay"
+  definition {
+    bytesize: 4
+    member_id: 0xb5856118
+    member_id: 0x84d2a835
+  }
+}
+struct_union {
+  id: 0x40c4501a
+  kind: STRUCT
+  name: "ff_rumble_effect"
+  definition {
+    bytesize: 4
+    member_id: 0x279f085b
+    member_id: 0x0c425820
+  }
+}
+struct_union {
+  id: 0xd230673a
+  kind: STRUCT
+  name: "ff_trigger"
+  definition {
+    bytesize: 4
+    member_id: 0xfae9cd27
+    member_id: 0x492fb79d
+  }
+}
+struct_union {
+  id: 0xdf8a3659
+  kind: STRUCT
+  name: "fib6_config"
+  definition {
+    bytesize: 184
+    member_id: 0xbe6e6c37
+    member_id: 0x4d10eb54
+    member_id: 0x83436e0b
+    member_id: 0xc1906fd6
+    member_id: 0xebca8cc9
+    member_id: 0x5dccfb23
+    member_id: 0x13c0ce24
+    member_id: 0xed89c2f0
+    member_id: 0x0cf29fc2
+    member_id: 0x1c54d025
+    member_id: 0x87aab722
+    member_id: 0x090a58e7
+    member_id: 0x58b7a193
+    member_id: 0xd31afc58
+    member_id: 0xbdd20c53
+    member_id: 0xdc9fadc0
+    member_id: 0x89459294
+    member_id: 0xe5153567
+    member_id: 0xc6da5e84
+    member_id: 0x1195cca7
+    member_id: 0xef15edf0
+    member_id: 0xf1a1f4e9
+    member_id: 0xc53a5afd
+    member_id: 0xc454e541
+    member_id: 0x67d8519e
+    member_id: 0x2d0817c1
+  }
+}
+struct_union {
+  id: 0xa442a17b
+  kind: STRUCT
+  name: "fib6_info"
+  definition {
+    bytesize: 176
+    member_id: 0x4d42575d
+    member_id: 0x3d0d1cc5
+    member_id: 0x689cad4c
+    member_id: 0x300f892a
+    member_id: 0x4d23fd2d
+    member_id: 0x4bb392c8
+    member_id: 0x910364e7
+    member_id: 0x539c7040
+    member_id: 0x7b54d0eb
+    member_id: 0x5049eb2e
+    member_id: 0xe47fecf1
+    member_id: 0xda8865c9
+    member_id: 0x3559b239
+    member_id: 0xd091fee1
+    member_id: 0x01bd6c40
+    member_id: 0xd2ff2aaf
+    member_id: 0x023e2041
+    member_id: 0x0185f8b2
+    member_id: 0x3a32dd0c
+    member_id: 0xf8fc9a09
+    member_id: 0xf5afa254
+    member_id: 0xcf5344d7
+    member_id: 0xd4ec9f32
+    member_id: 0x95dac7ab
+    member_id: 0x7137a4bf
+    member_id: 0x2d081fb1
+    member_id: 0xb209e9a4
+  }
+}
+struct_union {
+  id: 0x5436403f
+  kind: STRUCT
+  name: "fib6_nh"
+  definition {
+    bytesize: 96
+    member_id: 0xd894d611
+    member_id: 0x8e4ba004
+    member_id: 0x6843bff2
+    member_id: 0x9954bda4
+  }
+}
+struct_union {
+  id: 0xadf8fff6
+  kind: STRUCT
+  name: "fib6_node"
+  definition {
+    bytesize: 72
+    member_id: 0x72109cfc
+    member_id: 0x35d88242
+    member_id: 0x0b575f58
+    member_id: 0x2e50bc30
+    member_id: 0xcde5cade
+    member_id: 0x8294f4ef
+    member_id: 0x0cd089bc
+    member_id: 0x15cd9d51
+    member_id: 0x95dac8e5
+    member_id: 0x2d081e2a
+  }
+}
+struct_union {
+  id: 0xf1653e58
+  kind: STRUCT
+  name: "fib6_result"
+  definition {
+    bytesize: 32
+    member_id: 0x713a432a
+    member_id: 0x6daae6aa
+    member_id: 0x5049e5ad
+    member_id: 0x01bd6ec6
+    member_id: 0x89f8aef5
+  }
+}
+struct_union {
+  id: 0x8ab68a8a
+  kind: STRUCT
+  name: "fib6_table"
+  definition {
+    bytesize: 128
+    member_id: 0x5ecb1260
+    member_id: 0x2c9d891b
+    member_id: 0x14001179
+    member_id: 0x53dda33d
+    member_id: 0x07e47324
+    member_id: 0x2d2d09cb
+    member_id: 0x92f46b62
+  }
+}
+struct_union {
+  id: 0xea8f4184
+  kind: STRUCT
+  name: "fib_info"
+  definition {
+    bytesize: 128
+    member_id: 0x5aa9bfd6
+    member_id: 0xad682054
+    member_id: 0x5e97adce
+    member_id: 0x02c4ba71
+    member_id: 0xe64ca199
+    member_id: 0x2235893f
+    member_id: 0x7d6017c4
+    member_id: 0x7848f1e0
+    member_id: 0xed4451e0
+    member_id: 0xb22db68e
+    member_id: 0xac405697
+    member_id: 0x775c7e71
+    member_id: 0x9c014592
+    member_id: 0x42d945cf
+    member_id: 0x9ad49793
+    member_id: 0x505d4f3b
+    member_id: 0x92443730
+    member_id: 0xe8066849
+    member_id: 0x7137a178
+    member_id: 0x95dac3d1
+    member_id: 0x11f62533
+  }
+}
+struct_union {
+  id: 0xa29493fc
+  kind: STRUCT
+  name: "fib_kuid_range"
+  definition {
+    bytesize: 8
+    member_id: 0x46f23862
+    member_id: 0x82e65d75
+  }
+}
+struct_union {
+  id: 0x7cf92c29
+  kind: STRUCT
+  name: "fib_lookup_arg"
+  definition {
+    bytesize: 40
+    member_id: 0x8276ba48
+    member_id: 0xda1f921c
+    member_id: 0x073741ef
+    member_id: 0x976620da
+    member_id: 0xb6223810
+    member_id: 0x2d0fa054
+  }
+}
+struct_union {
+  id: 0xd1508894
+  kind: STRUCT
+  name: "fib_nh"
+  definition {
+    bytesize: 104
+    member_id: 0xd894d611
+    member_id: 0xa5fa00fd
+    member_id: 0x287de10c
+    member_id: 0xf80bdaeb
+    member_id: 0xf2a33515
+  }
+}
+struct_union {
+  id: 0xa95e3709
+  kind: STRUCT
+  name: "fib_nh_common"
+  definition {
+    bytesize: 72
+    member_id: 0xe9c3a925
+    member_id: 0xdd08bbb7
+    member_id: 0xb24113ab
+    member_id: 0x36e96645
+    member_id: 0x3b2fac83
+    member_id: 0xe6275769
+    member_id: 0x78d3b949
+    member_id: 0x2151bf96
+    member_id: 0x0c98a484
+    member_id: 0x1d087d71
+    member_id: 0xf3164740
+    member_id: 0x026cac42
+    member_id: 0x2ad62bf7
+    member_id: 0x78667f8a
+  }
+}
+struct_union {
+  id: 0x10274a55
+  kind: STRUCT
+  name: "fib_nh_exception"
+  definition {
+    bytesize: 80
+    member_id: 0xab1e9b3d
+    member_id: 0x81911742
+    member_id: 0x076ea1d6
+    member_id: 0x8c6794e5
+    member_id: 0x8862e5aa
+    member_id: 0xb4184b4d
+    member_id: 0x949810b3
+    member_id: 0xb07430ec
+    member_id: 0x522166a7
+    member_id: 0x793edfe5
+    member_id: 0x95dac26f
+  }
+}
+struct_union {
+  id: 0x204f6110
+  kind: STRUCT
+  name: "fib_notifier_ops"
+  definition {
+    bytesize: 64
+    member_id: 0x9e3288ce
+    member_id: 0x7c00ebb3
+    member_id: 0x048da853
+    member_id: 0x72757c48
+    member_id: 0x4a965597
+    member_id: 0x95dac8e5
+  }
+}
+struct_union {
+  id: 0x664d9cb2
+  kind: STRUCT
+  name: "fib_rule"
+  definition {
+    bytesize: 152
+    member_id: 0x7c00ef52
+    member_id: 0xaada75c0
+    member_id: 0xa5064bbb
+    member_id: 0x8196a443
+    member_id: 0xa37cfe78
+    member_id: 0x2da18cde
+    member_id: 0xb6223c62
+    member_id: 0xc07f684d
+    member_id: 0xe6bd1d04
+    member_id: 0x5d4a9e3a
+    member_id: 0x41666e66
+    member_id: 0xb36bdd95
+    member_id: 0xdc494f8b
+    member_id: 0x31139344
+    member_id: 0xa44063ea
+    member_id: 0xb7dcf1de
+    member_id: 0x7944f6c0
+    member_id: 0x128be433
+    member_id: 0xed5d2361
+    member_id: 0x59d0f1df
+    member_id: 0x6e5019cd
+    member_id: 0x9fd1ff31
+    member_id: 0xe2c91fc1
+    member_id: 0x0ea1bfc7
+    member_id: 0x95dac401
+  }
+}
+struct_union {
+  id: 0xf82d47dc
+  kind: STRUCT
+  name: "fib_rule_hdr"
+  definition {
+    bytesize: 12
+    member_id: 0x9ee64fa7
+    member_id: 0x35da4011
+    member_id: 0xe26e0e89
+    member_id: 0xf1a03a1b
+    member_id: 0xb658da11
+    member_id: 0xef6d13eb
+    member_id: 0x25a2ba4c
+    member_id: 0xc0e5d54f
+    member_id: 0x2d8eae00
+  }
+}
+struct_union {
+  id: 0x3e79e71f
+  kind: STRUCT
+  name: "fib_rule_port_range"
+  definition {
+    bytesize: 4
+    member_id: 0x46f33010
+    member_id: 0x82e75682
+  }
+}
+struct_union {
+  id: 0x47e1581b
+  kind: STRUCT
+  name: "fib_rules_ops"
+  definition {
+    bytesize: 176
+    member_id: 0x9e3288ce
+    member_id: 0x7c00ebb3
+    member_id: 0x67a68b18
+    member_id: 0x64284bb0
+    member_id: 0xa630976d
+    member_id: 0x9ae7a902
+    member_id: 0xfdba21fe
+    member_id: 0xc07aed3e
+    member_id: 0x505b26be
+    member_id: 0xe60fde20
+    member_id: 0x73c333e5
+    member_id: 0xd315c629
+    member_id: 0x35b3d5c1
+    member_id: 0x366c63fb
+    member_id: 0x611f64e6
+    member_id: 0x9b04be35
+    member_id: 0x4cff4c27
+    member_id: 0x9d22ebab
+    member_id: 0x4a965c8c
+    member_id: 0x0786113e
+    member_id: 0x95dacf0a
+  }
+}
+struct_union {
+  id: 0xbcce827e
+  kind: STRUCT
+  name: "fib_table"
+  definition {
+    bytesize: 48
+    member_id: 0x9be0b947
+    member_id: 0x4baf83e4
+    member_id: 0xa9cd01b9
+    member_id: 0x95dac1be
+    member_id: 0x69741a59
+    member_id: 0xf4b20642
+  }
+}
+struct_union {
+  id: 0x2d394046
+  kind: STRUCT
+  name: "fid"
+  definition {
+    bytesize: 20
+    member_id: 0x33f3b67a
+  }
+}
+struct_union {
+  id: 0x8fb2b355
+  kind: STRUCT
+  name: "fiemap_extent"
+  definition {
+    bytesize: 56
+    member_id: 0xa622be38
+    member_id: 0x55d199a6
+    member_id: 0x1199eaf0
+    member_id: 0x1feea691
+    member_id: 0x5b59b5d7
+    member_id: 0x7504ef50
+  }
+}
+struct_union {
+  id: 0xfe19e05e
+  kind: STRUCT
+  name: "fiemap_extent_info"
+  definition {
+    bytesize: 24
+    member_id: 0x595c0f86
+    member_id: 0x3ad0fc6e
+    member_id: 0x7eae6bc2
+    member_id: 0x1521f076
+  }
+}
+struct_union {
+  id: 0x49e94d11
+  kind: STRUCT
+  name: "file"
+  definition {
+    bytesize: 264
+    member_id: 0x3c5a40db
+    member_id: 0x9354dccd
+    member_id: 0x2ed501e6
+    member_id: 0x57e23087
+    member_id: 0x6be2c3bf
+    member_id: 0x096d0c2b
+    member_id: 0x385684f0
+    member_id: 0x8f5951cd
+    member_id: 0x17b293a6
+    member_id: 0xaf177062
+    member_id: 0x4a3a9a1a
+    member_id: 0xa6beedbc
+    member_id: 0xe253edb7
+    member_id: 0x1f0efc70
+    member_id: 0x7494e4f3
+    member_id: 0xf21ad019
+    member_id: 0x5010272b
+    member_id: 0x762750ea
+    member_id: 0x8505aa0d
+    member_id: 0xc3689c34
+    member_id: 0x2d0817b6
+    member_id: 0x63760e20
+  }
+}
+struct_union {
+  id: 0xdaddb011
+  kind: STRUCT
+  name: "file_lock"
+  definition {
+    bytesize: 216
+    member_id: 0x7fabf045
+    member_id: 0xa262f80b
+    member_id: 0xf38477e1
+    member_id: 0x15b5a653
+    member_id: 0x0476553f
+    member_id: 0xebb4e700
+    member_id: 0xcb4bc416
+    member_id: 0x8bd6269f
+    member_id: 0x607dea09
+    member_id: 0x07286b97
+    member_id: 0x9e5fa9e2
+    member_id: 0x2e496c84
+    member_id: 0xe729ddb7
+    member_id: 0xd31ef1d8
+    member_id: 0x8c817cf4
+    member_id: 0xb16570ad
+    member_id: 0x0b51bd49
+    member_id: 0xda5f8429
+    member_id: 0xb17cb222
+    member_id: 0xa3170857
+  }
+}
+struct_union {
+  id: 0x22422200
+  kind: STRUCT
+  name: "file_lock_context"
+  definition {
+    bytesize: 56
+    member_id: 0xb8ef7f60
+    member_id: 0x9a18c6a2
+    member_id: 0x850366d0
+    member_id: 0x82e6007e
+  }
+}
+struct_union {
+  id: 0xada52861
+  kind: STRUCT
+  name: "file_lock_operations"
+  definition {
+    bytesize: 16
+    member_id: 0x996dc7f4
+    member_id: 0x4b863bf1
+  }
+}
+struct_union {
+  id: 0xb45721ec
+  kind: STRUCT
+  name: "file_operations"
+  definition {
+    bytesize: 272
+    member_id: 0x4a965250
+    member_id: 0x83860c2c
+    member_id: 0x48537f62
+    member_id: 0x340ecf8c
+    member_id: 0xeb51ccd7
+    member_id: 0xa854c899
+    member_id: 0x5e4901da
+    member_id: 0x252248a4
+    member_id: 0x7b221f4e
+    member_id: 0x5e16b9db
+    member_id: 0xd4534cf0
+    member_id: 0x4a5b727a
+    member_id: 0x87ff13ad
+    member_id: 0x80fb247f
+    member_id: 0xad98dbd1
+    member_id: 0x7f82f6e7
+    member_id: 0xaeb4a536
+    member_id: 0x1a43361a
+    member_id: 0xa35c6c09
+    member_id: 0x2dc0e7e3
+    member_id: 0x236bd6db
+    member_id: 0x42846b0d
+    member_id: 0xf8601164
+    member_id: 0x812ea134
+    member_id: 0xbb767601
+    member_id: 0x226ce87c
+    member_id: 0xa11bca02
+    member_id: 0x5261bd5a
+    member_id: 0x3d8c95de
+    member_id: 0x0462cbc1
+    member_id: 0x081d3bfa
+    member_id: 0x686b6f87
+    member_id: 0xccbdafaa
+    member_id: 0xaf58972b
+  }
+}
+struct_union {
+  id: 0x60ac3160
+  kind: STRUCT
+  name: "file_ra_state"
+  definition {
+    bytesize: 32
+    member_id: 0x46284634
+    member_id: 0xd93b9df5
+    member_id: 0x847796c6
+    member_id: 0x539d3443
+    member_id: 0xcc8a92dc
+    member_id: 0x0d567944
+  }
+}
+struct_union {
+  id: 0xe1f0c556
+  kind: STRUCT
+  name: "file_system_type"
+  definition {
+    bytesize: 72
+    member_id: 0x0de57ce8
+    member_id: 0x2ec9b506
+    member_id: 0x35f4d7c6
+    member_id: 0x3b7c4678
+    member_id: 0x25cb547f
+    member_id: 0x6e77f1a5
+    member_id: 0x4a9653c2
+    member_id: 0x11c1eba0
+    member_id: 0x8d9c85a5
+    member_id: 0xdb1c4cf1
+    member_id: 0xcf59f61b
+    member_id: 0x48025455
+    member_id: 0x9f4bb205
+    member_id: 0x9d1c60dd
+    member_id: 0xfe1c41cb
+    member_id: 0x464df804
+    member_id: 0x91bef77e
+  }
+}
+struct_union {
+  id: 0x9a74663c
+  kind: STRUCT
+  name: "fileattr"
+  definition {
+    bytesize: 28
+    member_id: 0x2da18c75
+    member_id: 0x18d64a30
+    member_id: 0xbc3ba823
+    member_id: 0x4f88d78d
+    member_id: 0x78ca3ce2
+    member_id: 0x035676e6
+    member_id: 0x52898c16
+    member_id: 0x3f2cf778
+  }
+}
+struct_union {
+  id: 0xf0d09bcf
+  kind: STRUCT
+  name: "filename"
+  definition {
+    bytesize: 32
+    member_id: 0x0de57ce8
+    member_id: 0x324b8c10
+    member_id: 0xb71cf37c
+    member_id: 0xf40c955f
+    member_id: 0x21489891
+  }
+}
+struct_union {
+  id: 0x86069d56
+  kind: STRUCT
+  name: "files_struct"
+  definition {
+    bytesize: 704
+    member_id: 0x65518d58
+    member_id: 0x4927781f
+    member_id: 0x3b07b402
+    member_id: 0xf0dd114d
+    member_id: 0x654043c9
+    member_id: 0xfca11463
+    member_id: 0xa92fa8fd
+    member_id: 0x1aac0c74
+    member_id: 0xff1223da
+    member_id: 0x7602aa7c
+    member_id: 0xcc9d8394
+  }
+}
+struct_union {
+  id: 0xcd5284cb
+  kind: STRUCT
+  name: "filter_pred"
+  definition {
+    bytesize: 320
+    member_id: 0xdeb075ae
+    member_id: 0x4f84c908
+    member_id: 0x46cfd35a
+    member_id: 0xafb3d811
+    member_id: 0xc35c4973
+    member_id: 0x9b7bf99f
+    member_id: 0x49138baa
+    member_id: 0xf0958f16
+  }
+}
+struct_union {
+  id: 0xe95538e7
+  kind: STRUCT
+  name: "firmware"
+  definition {
+    bytesize: 24
+    member_id: 0xd98a291a
+    member_id: 0xffad2108
+    member_id: 0x59119163
+  }
+}
+struct_union {
+  id: 0xc8adfcbd
+  kind: STRUCT
+  name: "flow_action"
+  definition {
+    bytesize: 8
+    member_id: 0x4e479c1c
+    member_id: 0xbebf7aee
+  }
+}
+struct_union {
+  id: 0xe18a4ee9
+  kind: STRUCT
+  name: "flow_action_cookie"
+  definition {
+    bytesize: 4
+    member_id: 0x5db0c6dd
+    member_id: 0x588437e1
+  }
+}
+struct_union {
+  id: 0x18791053
+  kind: STRUCT
+  name: "flow_action_entry"
+  definition {
+    bytesize: 112
+    member_id: 0xcc5df5f7
+    member_id: 0xdf172e55
+    member_id: 0xae429cae
+    member_id: 0xa4b58e4f
+    member_id: 0x8bd6cefc
+    member_id: 0x315b0268
+    member_id: 0x5878a558
+  }
+}
+struct_union {
+  id: 0xba1689b9
+  kind: STRUCT
+  name: "flow_block"
+  definition {
+    bytesize: 16
+    member_id: 0xa06fe9a8
+  }
+}
+struct_union {
+  id: 0x3ff65826
+  kind: STRUCT
+  name: "flow_block_offload"
+  definition {
+    bytesize: 80
+    member_id: 0x91805d5b
+    member_id: 0x17e0eb4b
+    member_id: 0x1dff18c9
+    member_id: 0x3639daf0
+    member_id: 0x7203e49d
+    member_id: 0x427418a8
+    member_id: 0xa06fe903
+    member_id: 0xae188906
+    member_id: 0x103ee766
+    member_id: 0x081cdae4
+    member_id: 0x07685b81
+  }
+}
+struct_union {
+  id: 0x82854b3f
+  kind: STRUCT
+  name: "flow_dissector"
+  definition {
+    bytesize: 68
+    member_id: 0x8075eb22
+    member_id: 0x9ba29f20
+  }
+}
+struct_union {
+  id: 0x7b243421
+  kind: STRUCT
+  name: "flow_dissector_key_basic"
+  definition {
+    bytesize: 4
+    member_id: 0x30c77546
+    member_id: 0x416661dc
+    member_id: 0x64cf5722
+  }
+}
+struct_union {
+  id: 0x6efce6ce
+  kind: STRUCT
+  name: "flow_dissector_key_ipv4_addrs"
+  definition {
+    bytesize: 8
+    member_id: 0x44d41ca8
+    member_id: 0xbb13d2b4
+  }
+}
+struct_union {
+  id: 0x493badd2
+  kind: STRUCT
+  name: "flow_dissector_key_ports"
+  definition {
+    bytesize: 4
+    member_id: 0x3a3e9211
+  }
+}
+struct_union {
+  id: 0x940c4ee6
+  kind: STRUCT
+  name: "flow_dissector_key_vlan"
+  definition {
+    bytesize: 8
+    member_id: 0x3451258d
+    member_id: 0x6704d490
+    member_id: 0xd711fa9a
+    member_id: 0x64774c4f
+  }
+}
+struct_union {
+  id: 0x6ac0d553
+  kind: STRUCT
+  name: "flow_match"
+  definition {
+    bytesize: 24
+    member_id: 0x40f260d6
+    member_id: 0xa82bd0a9
+    member_id: 0x204ebe09
+  }
+}
+struct_union {
+  id: 0xc71311d1
+  kind: STRUCT
+  name: "flow_match_basic"
+  definition {
+    bytesize: 16
+    member_id: 0x2042539a
+    member_id: 0xa82734f8
+  }
+}
+struct_union {
+  id: 0x1093e17a
+  kind: STRUCT
+  name: "flow_match_ipv4_addrs"
+  definition {
+    bytesize: 16
+    member_id: 0x204725ae
+    member_id: 0xa82242cc
+  }
+}
+struct_union {
+  id: 0x61859821
+  kind: STRUCT
+  name: "flow_match_ports"
+  definition {
+    bytesize: 16
+    member_id: 0x204ed47c
+    member_id: 0xa82bb31e
+  }
+}
+struct_union {
+  id: 0x6b2ddff9
+  kind: STRUCT
+  name: "flow_match_vlan"
+  definition {
+    bytesize: 16
+    member_id: 0x20799984
+    member_id: 0xa81cfee6
+  }
+}
+struct_union {
+  id: 0xbe067d4b
+  kind: STRUCT
+  name: "flow_rule"
+  definition {
+    bytesize: 32
+    member_id: 0xe649caac
+    member_id: 0xc09e96cd
+  }
+}
+struct_union {
+  id: 0x4e5da42b
+  kind: STRUCT
+  name: "flowi"
+  definition {
+    bytesize: 96
+    member_id: 0xec2faca6
+  }
+}
+struct_union {
+  id: 0xf4616560
+  kind: STRUCT
+  name: "flowi4"
+  definition {
+    bytesize: 64
+    member_id: 0x183ffc0d
+    member_id: 0xf8d0cda8
+    member_id: 0xcbede143
+    member_id: 0xc1b9feb6
+  }
+}
+struct_union {
+  id: 0xb6704284
+  kind: STRUCT
+  name: "flowi6"
+  definition {
+    bytesize: 96
+    member_id: 0x183ffc0d
+    member_id: 0xcb62b1fc
+    member_id: 0xf85f946f
+    member_id: 0x35800d52
+    member_id: 0xc1b9fe80
+    member_id: 0x9a49712d
+  }
+}
+struct_union {
+  id: 0x5a0946d3
+  kind: STRUCT
+  name: "flowi_common"
+  definition {
+    bytesize: 48
+    member_id: 0x69573b44
+    member_id: 0x4e59dec1
+    member_id: 0x1dfaf184
+    member_id: 0x42a8fdb0
+    member_id: 0x55e9bb1d
+    member_id: 0x02d6fb9d
+    member_id: 0x9c3383e7
+    member_id: 0x9e38017c
+    member_id: 0x7e8ca9dd
+    member_id: 0xb5c013bb
+    member_id: 0x2c6f3331
+    member_id: 0x0306be35
+  }
+}
+struct_union {
+  id: 0xc5bbfc38
+  kind: STRUCT
+  name: "flowi_tunnel"
+  definition {
+    bytesize: 8
+    member_id: 0xdc494e19
+  }
+}
+struct_union {
+  id: 0xd0faff22
+  kind: UNION
+  name: "flowi_uli"
+  definition {
+    bytesize: 4
+    member_id: 0xc46a7f1a
+    member_id: 0x626f4094
+    member_id: 0xfa6198be
+    member_id: 0x356b0ede
+  }
+}
+struct_union {
+  id: 0x2eecfc0c
+  kind: STRUCT
+  name: "fnhe_hash_bucket"
+  definition {
+    bytesize: 8
+    member_id: 0x15798222
+  }
+}
+struct_union {
+  id: 0xaf83a728
+  kind: STRUCT
+  name: "folio"
+  definition {
+    bytesize: 96
+    member_id: 0x34066868
+    member_id: 0xc196ead9
+    member_id: 0x3482fa57
+    member_id: 0x73f4e935
+    member_id: 0x110adfeb
+    member_id: 0x26ca4134
+    member_id: 0xc9573605
+    member_id: 0xb4a7dfee
+  }
+}
+struct_union {
+  id: 0x9524b580
+  kind: STRUCT
+  name: "font_desc"
+  definition {
+    bytesize: 48
+    member_id: 0x3ce0d8f4
+    member_id: 0x0de57809
+    member_id: 0x0ac876a4
+    member_id: 0x2b5864a4
+    member_id: 0x7313362d
+    member_id: 0xffab3bd2
+    member_id: 0x79ead90d
+  }
+}
+struct_union {
+  id: 0xd3a8736e
+  kind: STRUCT
+  name: "fown_struct"
+  definition {
+    bytesize: 32
+    member_id: 0x2d186c59
+    member_id: 0x7491240c
+    member_id: 0xd14a4192
+    member_id: 0x15366f8c
+    member_id: 0xcac5b039
+    member_id: 0x58d2d9eb
+  }
+}
+struct_union {
+  id: 0x35aebc23
+  kind: STRUCT
+  name: "fprop_global"
+  definition {
+    bytesize: 48
+    member_id: 0x11f140b1
+    member_id: 0xff34d211
+    member_id: 0x005e8497
+  }
+}
+struct_union {
+  id: 0x5b602dab
+  kind: STRUCT
+  name: "fprop_local_percpu"
+  definition {
+    bytesize: 48
+    member_id: 0x11f140b1
+    member_id: 0xff34d211
+    member_id: 0x2d244a41
+  }
+}
+struct_union {
+  id: 0x1feddd12
+  kind: STRUCT
+  name: "fqdir"
+  definition {
+    bytesize: 320
+    member_id: 0xc1e69a9f
+    member_id: 0x7f5ba031
+    member_id: 0x54a4adc6
+    member_id: 0xacae28b2
+    member_id: 0x41997f46
+    member_id: 0x7203edf4
+    member_id: 0x3bde32d6
+    member_id: 0x66dbd883
+    member_id: 0x52b1974c
+    member_id: 0x83803b79
+    member_id: 0xe0b9dbb6
+  }
+}
+struct_union {
+  id: 0x45ddde21
+  kind: STRUCT
+  name: "frag_v4_compare_key"
+  definition {
+    bytesize: 20
+    member_id: 0xf8d0cc3a
+    member_id: 0xcbedee18
+    member_id: 0x04fb32cc
+    member_id: 0xce737f6e
+    member_id: 0xcc5aa1b4
+    member_id: 0xdc4e01e2
+  }
+}
+struct_union {
+  id: 0x7c866968
+  kind: STRUCT
+  name: "frag_v6_compare_key"
+  definition {
+    bytesize: 44
+    member_id: 0xf85f9f77
+    member_id: 0xcb62b9ac
+    member_id: 0x04fb3686
+    member_id: 0xcccd5ee5
+    member_id: 0xe814f9e5
+  }
+}
+struct_union {
+  id: 0x2d87152f
+  kind: STRUCT
+  name: "frame_vector"
+  definition {
+    bytesize: 16
+    member_id: 0x194f0494
+    member_id: 0x70b30ff0
+    member_id: 0x2adbf7e4
+    member_id: 0x2a76f644
+    member_id: 0xcd6de6fa
+  }
+}
+struct_union {
+  id: 0x11efdbed
+  kind: STRUCT
+  name: "free_area"
+  definition {
+    bytesize: 104
+    member_id: 0xe00dc187
+    member_id: 0xbfba5ff5
+  }
+}
+struct_union {
+  id: 0xec52d7a4
+  kind: STRUCT
+  name: "freelist_head"
+  definition {
+    bytesize: 8
+    member_id: 0xb55bb0e7
+  }
+}
+struct_union {
+  id: 0x2e677f39
+  kind: STRUCT
+  name: "freelist_node"
+  definition {
+    bytesize: 16
+    member_id: 0x9a234e85
+    member_id: 0x11f20dd8
+  }
+}
+struct_union {
+  id: 0x533e9463
+  kind: STRUCT
+  name: "freq_attr"
+  definition {
+    bytesize: 32
+    member_id: 0x8c29a58d
+    member_id: 0x0a71b688
+    member_id: 0xacd61b6e
+  }
+}
+struct_union {
+  id: 0x71886297
+  kind: STRUCT
+  name: "freq_constraints"
+  definition {
+    bytesize: 224
+    member_id: 0x3adbfdf7
+    member_id: 0x8e48043b
+    member_id: 0xa82dfb93
+    member_id: 0x66685abe
+  }
+}
+struct_union {
+  id: 0x8e607093
+  kind: STRUCT
+  name: "freq_qos_request"
+  definition {
+    bytesize: 64
+    member_id: 0x5c5e2fe4
+    member_id: 0x713ca1c8
+    member_id: 0xed04d50c
+    member_id: 0xd671c19a
+  }
+}
+struct_union {
+  id: 0x973fdf40
+  kind: STRUCT
+  name: "fs_context"
+  definition {
+    bytesize: 176
+    member_id: 0xafbac999
+    member_id: 0x3a98dfb1
+    member_id: 0xaa144150
+    member_id: 0x4ef12ece
+    member_id: 0x722ab767
+    member_id: 0x93cd2b9d
+    member_id: 0xde4b7ed9
+    member_id: 0x81121f57
+    member_id: 0xced3c28a
+    member_id: 0xc0d6e3ee
+    member_id: 0xd7108861
+    member_id: 0xf194ec98
+    member_id: 0xb07b1a4b
+    member_id: 0x62ab234e
+    member_id: 0xf9ac4a34
+    member_id: 0x3e50931f
+    member_id: 0xc4ee4a10
+    member_id: 0x8c475fa8
+    member_id: 0x268a2a55
+    member_id: 0xada579fc
+    member_id: 0x9e65d647
+    member_id: 0xe3329fff
+  }
+}
+struct_union {
+  id: 0xc5d78b03
+  kind: STRUCT
+  name: "fs_context_operations"
+  definition {
+    bytesize: 48
+    member_id: 0xfeae4b02
+    member_id: 0x472c7f8e
+    member_id: 0xbc168907
+    member_id: 0x80e00e0c
+    member_id: 0x41912b2f
+    member_id: 0x319bf24e
+  }
+}
+struct_union {
+  id: 0xf4948ee4
+  kind: STRUCT
+  name: "fs_parameter"
+  definition {
+    bytesize: 40
+    member_id: 0x20681a1b
+    member_id: 0x5a6d005f
+    member_id: 0x3b87518b
+    member_id: 0xd98a21d3
+    member_id: 0x212a55f1
+  }
+}
+struct_union {
+  id: 0x422a2ee9
+  kind: STRUCT
+  name: "fs_parameter_spec"
+  definition {
+    bytesize: 32
+    member_id: 0x0de57ce8
+    member_id: 0x5c40fde5
+    member_id: 0xf6637b68
+    member_id: 0x2da1b832
+    member_id: 0xffab33b0
+  }
+}
+struct_union {
+  id: 0x2fa00b83
+  kind: STRUCT
+  name: "fs_parse_result"
+  definition {
+    bytesize: 16
+    member_id: 0x89822649
+    member_id: 0x3cedf871
+  }
+}
+struct_union {
+  id: 0xe7e5b05e
+  kind: STRUCT
+  name: "fs_struct"
+  definition {
+    bytesize: 56
+    member_id: 0x85cad2ce
+    member_id: 0x2d1fe1be
+    member_id: 0xfaf79b3b
+    member_id: 0x7defc977
+    member_id: 0xac2ab618
+    member_id: 0x93ae86ed
+    member_id: 0x47789c67
+  }
+}
+struct_union {
+  id: 0xbd4a3848
+  kind: STRUCT
+  name: "fscrypt_direct_key"
+  definition {
+    bytesize: 128
+    member_id: 0x22c51ecd
+    member_id: 0x0f2deb7a
+    member_id: 0x9743bd71
+    member_id: 0x0cd17eab
+    member_id: 0x882a6d89
+    member_id: 0x4eb6500e
+    member_id: 0x8578df00
+  }
+}
+struct_union {
+  id: 0xaebd989e
+  kind: STRUCT
+  name: "fscrypt_hkdf"
+  definition {
+    bytesize: 8
+    member_id: 0x4122d897
+  }
+}
+struct_union {
+  id: 0xb1a68a3b
+  kind: STRUCT
+  name: "fscrypt_info"
+  definition {
+    bytesize: 136
+    member_id: 0x0534711c
+    member_id: 0x81f8c824
+    member_id: 0x796f533e
+    member_id: 0x5e6a6d58
+    member_id: 0x4025e474
+    member_id: 0xee6c5106
+    member_id: 0xf9682f85
+    member_id: 0x04d04048
+    member_id: 0x701e5162
+    member_id: 0x52ef44ad
+    member_id: 0xbbfbff74
+    member_id: 0xd4003068
+    member_id: 0x30339ddb
+  }
+}
+struct_union {
+  id: 0xb97ba827
+  kind: STRUCT
+  name: "fscrypt_key_specifier"
+  definition {
+    bytesize: 40
+    member_id: 0x5cb0fbc1
+    member_id: 0x5e9651c5
+    member_id: 0xec3e15e2
+  }
+}
+struct_union {
+  id: 0x6a2e770c
+  kind: STRUCT
+  name: "fscrypt_keyring"
+  definition {
+    bytesize: 1032
+    member_id: 0x2d1fec85
+    member_id: 0x8a02aad2
+  }
+}
+struct_union {
+  id: 0xb45a09be
+  kind: STRUCT
+  name: "fscrypt_master_key"
+  definition {
+    bytesize: 872
+    member_id: 0x651b0202
+    member_id: 0x52c54e70
+    member_id: 0x22e90ec4
+    member_id: 0x763577a6
+    member_id: 0xfdc048a2
+    member_id: 0x246c64bd
+    member_id: 0xde332cd8
+    member_id: 0x94531199
+    member_id: 0x03febaff
+    member_id: 0x3bd533ff
+    member_id: 0x00de838b
+    member_id: 0x89939ed5
+    member_id: 0x45fa3c76
+    member_id: 0xbc7cb436
+    member_id: 0x0581471c
+  }
+}
+struct_union {
+  id: 0x0fa2b1e5
+  kind: STRUCT
+  name: "fscrypt_master_key_secret"
+  definition {
+    bytesize: 144
+    member_id: 0xf0e09c62
+    member_id: 0xb8fe46a0
+    member_id: 0xd9b71dda
+    member_id: 0x0935e527
+  }
+}
+struct_union {
+  id: 0xc75f0ff8
+  kind: STRUCT
+  name: "fscrypt_mode"
+  definition {
+    bytesize: 48
+    member_id: 0xa84f24a6
+    member_id: 0xff4e7105
+    member_id: 0x7f4e96a5
+    member_id: 0x7e251cf3
+    member_id: 0x8302bb48
+    member_id: 0x236dffca
+    member_id: 0xba7d5fdd
+    member_id: 0x2dfb65de
+    member_id: 0x42eb8d46
+  }
+}
+struct_union {
+  id: 0xa4ebfc51
+  kind: STRUCT
+  name: "fscrypt_operations"
+  definition {
+    bytesize: 136
+    member_id: 0x2d2d0138
+    member_id: 0xec1b817e
+    member_id: 0xf77bde4b
+    member_id: 0x390749bf
+    member_id: 0xd70facaa
+    member_id: 0x58333903
+    member_id: 0xe911a8e8
+    member_id: 0x8e932e8e
+    member_id: 0x2ca4b2ea
+    member_id: 0x2d081c40
+    member_id: 0x63760fdb
+    member_id: 0xac894b6b
+    member_id: 0xe0f63ce5
+    member_id: 0xd64b23bb
+  }
+}
+struct_union {
+  id: 0xb1b25547
+  kind: UNION
+  name: "fscrypt_policy"
+  definition {
+    bytesize: 24
+    member_id: 0xa6486808
+    member_id: 0x543f6773
+    member_id: 0x987fa9b5
+  }
+}
+struct_union {
+  id: 0x6d0d4c04
+  kind: STRUCT
+  name: "fscrypt_policy_v1"
+  definition {
+    bytesize: 12
+    member_id: 0xa6d2d3c0
+    member_id: 0x4bfa9ecc
+    member_id: 0x3ff8b433
+    member_id: 0x2ddb6585
+    member_id: 0xf0c0d779
+  }
+}
+struct_union {
+  id: 0xe10a7e38
+  kind: STRUCT
+  name: "fscrypt_policy_v2"
+  definition {
+    bytesize: 24
+    member_id: 0xa6d2d3c0
+    member_id: 0x4bfa9ecc
+    member_id: 0x3ff8b433
+    member_id: 0x2ddb6585
+    member_id: 0x5ed0cb87
+    member_id: 0xcf7375db
+  }
+}
+struct_union {
+  id: 0x985efc75
+  kind: STRUCT
+  name: "fscrypt_prepared_key"
+  definition {
+    bytesize: 16
+    member_id: 0xacc24bfd
+    member_id: 0xbdcf4c73
+  }
+}
+struct_union {
+  id: 0xdb5ad6ff
+  kind: STRUCT
+  name: "fsg_buffhd"
+  definition {
+    bytesize: 48
+    member_id: 0x9a037dbf
+    member_id: 0x72dc3da0
+    member_id: 0x11cf4f91
+    member_id: 0xc866f0d4
+    member_id: 0xdc839644
+    member_id: 0xe10968b1
+  }
+}
+struct_union {
+  id: 0x802f4d96
+  kind: STRUCT
+  name: "fsg_common"
+  definition {
+    bytesize: 496
+    member_id: 0x1875f049
+    member_id: 0x05b724ad
+    member_id: 0x205bf412
+    member_id: 0xd93d92ce
+    member_id: 0x3a3817df
+    member_id: 0xbf5c8fa3
+    member_id: 0x2d1fe1f3
+    member_id: 0x3b085d05
+    member_id: 0xd447c2f1
+    member_id: 0x65e997e7
+    member_id: 0x6a3897a9
+    member_id: 0xf867d2ad
+    member_id: 0x7ce1532b
+    member_id: 0x866e2cb9
+    member_id: 0x2ed30cbc
+    member_id: 0x4f5f9848
+    member_id: 0x9219d051
+    member_id: 0x26905ab0
+    member_id: 0x7b32ec53
+    member_id: 0xf52896f4
+    member_id: 0x72589ca2
+    member_id: 0x9620795b
+    member_id: 0xc448ecdc
+    member_id: 0x46c1878d
+    member_id: 0x56c020ba
+    member_id: 0x3796f2ec
+    member_id: 0xd56cc2f5
+    member_id: 0x4335a3c7
+    member_id: 0x4fd51e2a
+    member_id: 0x71ef5321
+    member_id: 0xebf100a8
+    member_id: 0xad142fe3
+    member_id: 0xd4c9fc04
+    member_id: 0x0ec19a8b
+    member_id: 0x0492e273
+    member_id: 0xd747a7b6
+    member_id: 0x36588889
+    member_id: 0xc550b95e
+    member_id: 0xf21adfa4
+    member_id: 0xabbe5bb3
+  }
+}
+struct_union {
+  id: 0xfe2044ec
+  kind: STRUCT
+  name: "fsg_config"
+  definition {
+    bytesize: 816
+    member_id: 0x7dd43c05
+    member_id: 0x26abf707
+    member_id: 0xafb6613a
+    member_id: 0xf21ad19f
+    member_id: 0x4c6798c8
+    member_id: 0x4792cff5
+    member_id: 0x08b93d80
+    member_id: 0x866e2005
+  }
+}
+struct_union {
+  id: 0x3fea8b97
+  kind: STRUCT
+  name: "fsg_dev"
+  definition {
+    bytesize: 264
+    member_id: 0xabc0412f
+    member_id: 0x1875f76c
+    member_id: 0x6435863d
+    member_id: 0xc849a421
+    member_id: 0x0bed83d9
+    member_id: 0x1c3ca9e4
+    member_id: 0x5a4c0bbd
+    member_id: 0x98c50225
+    member_id: 0x223191aa
+  }
+}
+struct_union {
+  id: 0xf8e95bb4
+  kind: STRUCT
+  name: "fsg_lun"
+  definition {
+    bytesize: 1008
+    member_id: 0xcca0496c
+    member_id: 0x9719b834
+    member_id: 0x144eddb6
+    member_id: 0x8f81464b
+    member_id: 0xfaa159ab
+    member_id: 0x71308d8a
+    member_id: 0x12482f1d
+    member_id: 0x619101ab
+    member_id: 0x9d3e42bd
+    member_id: 0x881f3130
+    member_id: 0xc26eef8c
+    member_id: 0x9f32a7f5
+    member_id: 0xc3397729
+    member_id: 0xf65bd591
+    member_id: 0x75a0d046
+    member_id: 0x1d7840f0
+    member_id: 0xce1ac0db
+    member_id: 0x0de572ed
+    member_id: 0x742733f1
+    member_id: 0xabbe56fa
+  }
+}
+struct_union {
+  id: 0xda16f8f0
+  kind: STRUCT
+  name: "fsg_lun_config"
+  definition {
+    bytesize: 48
+    member_id: 0xb07871e2
+    member_id: 0xbc80ab33
+    member_id: 0x43aec183
+    member_id: 0xe89c1e68
+    member_id: 0xc069f5a2
+    member_id: 0xabbe529c
+  }
+}
+struct_union {
+  id: 0xe99f68dc
+  kind: STRUCT
+  name: "fsg_module_parameters"
+  definition {
+    bytesize: 224
+    member_id: 0xbfcac75a
+    member_id: 0xbcef8ba5
+    member_id: 0x43c1e046
+    member_id: 0xe8f33fe1
+    member_id: 0xc006dbbf
+    member_id: 0x3a49b6e6
+    member_id: 0x5a1dbaba
+    member_id: 0x1d1a2124
+    member_id: 0x9f7cc1ac
+    member_id: 0x15b0697a
+    member_id: 0x2694ce7d
+    member_id: 0x718a2fa3
+  }
+}
+struct_union {
+  id: 0x0f2d90b9
+  kind: STRUCT
+  name: "fsg_operations"
+}
+struct_union {
+  id: 0x8ef9edfd
+  kind: STRUCT
+  name: "fsnotify_event"
+  definition {
+    bytesize: 16
+    member_id: 0x7c00ef52
+  }
+}
+struct_union {
+  id: 0x77fff07e
+  kind: STRUCT
+  name: "fsnotify_group"
+  definition {
+    bytesize: 216
+    member_id: 0xafb96aba
+    member_id: 0xb7dcfc4d
+    member_id: 0xfa699bb0
+    member_id: 0xa111810a
+    member_id: 0x1ee0c5c5
+    member_id: 0xb1accaac
+    member_id: 0x17c52880
+    member_id: 0x10a1d56b
+    member_id: 0x9e9841a7
+    member_id: 0x2d0fadff
+    member_id: 0xd7c38ca3
+    member_id: 0x67269651
+    member_id: 0x3b4f6865
+    member_id: 0xcf70053c
+    member_id: 0x992e67b4
+    member_id: 0x25f0f203
+    member_id: 0xc76cffa4
+    member_id: 0x3f6281e0
+  }
+}
+struct_union {
+  id: 0x748f353e
+  kind: STRUCT
+  name: "fsnotify_iter_info"
+  definition {
+    bytesize: 56
+    member_id: 0x22e8bef2
+    member_id: 0x1648fc17
+    member_id: 0x9195303a
+    member_id: 0x27749807
+  }
+}
+struct_union {
+  id: 0x9afcf9d4
+  kind: STRUCT
+  name: "fsnotify_mark"
+  definition {
+    bytesize: 72
+    member_id: 0xa8d54792
+    member_id: 0xb7dcf597
+    member_id: 0xd3856a12
+    member_id: 0x82f5cd5a
+    member_id: 0x2d1fec2e
+    member_id: 0x7554cb00
+    member_id: 0xcf680b0d
+    member_id: 0x110f1c8f
+    member_id: 0x2d2d0fe7
+  }
+}
+struct_union {
+  id: 0xc50a1b96
+  kind: STRUCT
+  name: "fsnotify_mark_connector"
+  definition {
+    bytesize: 32
+    member_id: 0x2d1fec85
+    member_id: 0x5c9fe644
+    member_id: 0x2da1b69e
+    member_id: 0x27cff838
+    member_id: 0x312862eb
+    member_id: 0x7c8da25d
+  }
+}
+struct_union {
+  id: 0xffe5b38c
+  kind: STRUCT
+  name: "fsnotify_ops"
+  definition {
+    bytesize: 48
+    member_id: 0xc1c70b80
+    member_id: 0x86e3acc1
+    member_id: 0x7ff4abec
+    member_id: 0x05ba43e9
+    member_id: 0x2d72891c
+    member_id: 0x80d2057e
+  }
+}
+struct_union {
+  id: 0x9fdea9ce
+  kind: STRUCT
+  name: "fsverity_hash_alg"
+  definition {
+    bytesize: 104
+    member_id: 0xacd094a4
+    member_id: 0x0de57809
+    member_id: 0x19908cca
+    member_id: 0x3c120105
+    member_id: 0x5c7e1ba8
+    member_id: 0x35b264f0
+  }
+}
+struct_union {
+  id: 0x03f06751
+  kind: STRUCT
+  name: "fsverity_info"
+  definition {
+    bytesize: 272
+    member_id: 0x9d037ff2
+    member_id: 0xd4e784ae
+    member_id: 0x9c77ac0d
+    member_id: 0x3b66a8ad
+    member_id: 0x20de0012
+    member_id: 0x9a516c95
+  }
+}
+struct_union {
+  id: 0x689685e8
+  kind: STRUCT
+  name: "fsverity_operations"
+  definition {
+    bytesize: 40
+    member_id: 0x63cd6f18
+    member_id: 0xf6c5f7be
+    member_id: 0x321c4d14
+    member_id: 0x015baead
+    member_id: 0x54db64f6
+  }
+}
+struct_union {
+  id: 0x5e150742
+  kind: STRUCT
+  name: "ftrace_event_field"
+  definition {
+    bytesize: 56
+    member_id: 0x556d57ec
+    member_id: 0x0de5752a
+    member_id: 0x5c68cd02
+    member_id: 0x75615e2d
+    member_id: 0x9b7bf8ce
+    member_id: 0xd9193b66
+    member_id: 0xfd231946
+    member_id: 0xb862f417
+  }
+}
+struct_union {
+  id: 0x1f913650
+  kind: STRUCT
+  name: "ftrace_ops"
+}
+struct_union {
+  id: 0xd06de2a9
+  kind: STRUCT
+  name: "function_desc"
+  definition {
+    bytesize: 32
+    member_id: 0x0de57ce8
+    member_id: 0xbb1fd5b1
+    member_id: 0x2df1d39a
+    member_id: 0xff8a91c0
+  }
+}
+struct_union {
+  id: 0x06440279
+  kind: UNION
+  name: "futex_key"
+  definition {
+    bytesize: 24
+    member_id: 0x3ba6ddc4
+    member_id: 0x9174e720
+    member_id: 0x65742b97
+  }
+}
+struct_union {
+  id: 0x3a111215
+  kind: STRUCT
+  name: "futex_pi_state"
+  definition {
+    bytesize: 88
+    member_id: 0x7c00ef52
+    member_id: 0x71601996
+    member_id: 0x4a806db7
+    member_id: 0x05243c4b
+    member_id: 0x205045b4
+  }
+}
+struct_union {
+  id: 0x080c6fc2
+  kind: STRUCT
+  name: "fwnode_endpoint"
+  definition {
+    bytesize: 16
+    member_id: 0x48be9ccb
+    member_id: 0xcc6aa4cc
+    member_id: 0x57f654fa
+  }
+}
+struct_union {
+  id: 0x38020bb6
+  kind: STRUCT
+  name: "fwnode_handle"
+  definition {
+    bytesize: 72
+    member_id: 0xdfdbb434
+    member_id: 0xafb89c64
+    member_id: 0xce3bb371
+    member_id: 0xf4d95ae7
+    member_id: 0x823c1719
+    member_id: 0x2d41df5b
+    member_id: 0x2d081e2a
+  }
+}
+struct_union {
+  id: 0xe0c64f3d
+  kind: STRUCT
+  name: "fwnode_operations"
+  definition {
+    bytesize: 176
+    member_id: 0x315dbffa
+    member_id: 0x4ae9f680
+    member_id: 0x4432480f
+    member_id: 0x17783559
+    member_id: 0xccdc16ef
+    member_id: 0x110d7733
+    member_id: 0x939cc531
+    member_id: 0xc40bbd61
+    member_id: 0xef4fbd0c
+    member_id: 0x1a6b98f3
+    member_id: 0x26725e34
+    member_id: 0x758cccef
+    member_id: 0xf6bdee19
+    member_id: 0xd1cc770e
+    member_id: 0x70f67beb
+    member_id: 0x5ca5cb73
+    member_id: 0xd24f3203
+    member_id: 0xc37adbb4
+    member_id: 0xb2940221
+    member_id: 0x51cefec4
+    member_id: 0x7105db40
+    member_id: 0xa4960aeb
+  }
+}
+struct_union {
+  id: 0x84738720
+  kind: STRUCT
+  name: "fwnode_reference_args"
+  definition {
+    bytesize: 80
+    member_id: 0x6e4d805e
+    member_id: 0x8b3c92d6
+    member_id: 0x34fb052c
+  }
+}
+struct_union {
+  id: 0x78ef929d
+  kind: STRUCT
+  name: "gen_pool"
+  definition {
+    bytesize: 56
+    member_id: 0x2d1fec85
+    member_id: 0xa9153749
+    member_id: 0x2b31a625
+    member_id: 0x5ad3a365
+    member_id: 0xff8a9ece
+    member_id: 0x0de57d7a
+  }
+}
+struct_union {
+  id: 0xe684d10a
+  kind: STRUCT
+  name: "gen_pool_chunk"
+  definition {
+    bytesize: 56
+    member_id: 0xe124564f
+    member_id: 0xe19ce3ba
+    member_id: 0xbdf62cf6
+    member_id: 0x4a85c842
+    member_id: 0xe093ef2a
+    member_id: 0xc0d3a869
+    member_id: 0xd79d7339
+  }
+}
+struct_union {
+  id: 0xae842235
+  kind: STRUCT
+  name: "gendisk"
+  definition {
+    bytesize: 584
+    member_id: 0xcbd8c8c9
+    member_id: 0xf187a205
+    member_id: 0xc326e22c
+    member_id: 0x256ac234
+    member_id: 0x113c8788
+    member_id: 0x12f8a5e0
+    member_id: 0xd92b5f0d
+    member_id: 0x7ad1703f
+    member_id: 0xb1a1553a
+    member_id: 0xaddb4db6
+    member_id: 0xf21ad501
+    member_id: 0xd5b6d151
+    member_id: 0x2d0faa06
+    member_id: 0x72c0803e
+    member_id: 0x48515f2d
+    member_id: 0x9c778375
+    member_id: 0xd5c6cecb
+    member_id: 0xc3fe2706
+    member_id: 0x1965fbe0
+    member_id: 0xb17030f4
+    member_id: 0xc93d7567
+    member_id: 0x3934a0d0
+    member_id: 0x42b6ca98
+    member_id: 0x08d5075f
+    member_id: 0x85f00a8d
+    member_id: 0xa972e5df
+    member_id: 0x78d47716
+    member_id: 0xf67bc3a4
+    member_id: 0xd5092a04
+    member_id: 0xaa26484e
+    member_id: 0x628ffa80
+    member_id: 0x9a2d1067
+    member_id: 0x2d08147a
+    member_id: 0x63760964
+    member_id: 0xac894348
+    member_id: 0xe0f63e46
+  }
+}
+struct_union {
+  id: 0x30009a7a
+  kind: STRUCT
+  name: "generic_pm_domain"
+  definition {
+    bytesize: 1520
+    member_id: 0xce1ac149
+    member_id: 0xa7da3e30
+    member_id: 0x4298e7ea
+    member_id: 0xb094763b
+    member_id: 0x7e5cba3e
+    member_id: 0x5f7af2f3
+    member_id: 0xbf083c10
+    member_id: 0xc917f3f7
+    member_id: 0x0a15c04f
+    member_id: 0x865c2968
+    member_id: 0x4b4f130b
+    member_id: 0x0de5723f
+    member_id: 0x16a58108
+    member_id: 0x20282bb7
+    member_id: 0x36893246
+    member_id: 0xee06b6fb
+    member_id: 0x7e20550d
+    member_id: 0xefb144e2
+    member_id: 0xe7eec35c
+    member_id: 0xd7d5a9df
+    member_id: 0x20969be8
+    member_id: 0x34c55ea6
+    member_id: 0x1dc636cd
+    member_id: 0xba0774bf
+    member_id: 0xc30b3206
+    member_id: 0xc3d6dca3
+    member_id: 0xce6d239f
+    member_id: 0xa312bc9c
+    member_id: 0x2d2d0972
+    member_id: 0x55172ceb
+    member_id: 0x648f0bcc
+    member_id: 0x95e9c6a0
+    member_id: 0xd968b3cd
+    member_id: 0x9de8e0d2
+    member_id: 0x1db35d8c
+    member_id: 0x53c1fdc0
+    member_id: 0x3bd41d95
+  }
+}
+struct_union {
+  id: 0x91717a9b
+  kind: STRUCT
+  name: "genfs"
+  definition {
+    bytesize: 24
+    member_id: 0x51d40905
+    member_id: 0xb57b63c2
+    member_id: 0x11ddc57a
+  }
+}
+struct_union {
+  id: 0x79013954
+  kind: STRUCT
+  name: "geni_icc_path"
+  definition {
+    bytesize: 16
+    member_id: 0x776fe9d5
+    member_id: 0xf1fcdb3d
+  }
+}
+struct_union {
+  id: 0x5a922555
+  kind: STRUCT
+  name: "geni_se"
+  definition {
+    bytesize: 96
+    member_id: 0x85c253ee
+    member_id: 0xce3bbe52
+    member_id: 0xbffa8f35
+    member_id: 0xc8e82058
+    member_id: 0x77637193
+    member_id: 0x6681a48b
+    member_id: 0x9dfcef2c
+  }
+}
+struct_union {
+  id: 0xa0fdf9dd
+  kind: STRUCT
+  name: "geni_wrapper"
+  definition {
+    bytesize: 48
+    member_id: 0xce3bbab3
+    member_id: 0x85c2570f
+    member_id: 0x22e9c7ff
+  }
+}
+struct_union {
+  id: 0xdf713fb7
+  kind: STRUCT
+  name: "genl_family"
+  definition {
+    bytesize: 112
+    member_id: 0xcc480c42
+    member_id: 0x43720648
+    member_id: 0x0d9948a1
+    member_id: 0xa624b9d5
+    member_id: 0x5a7d3afb
+    member_id: 0x2cf10ddb
+    member_id: 0xe3945ea5
+    member_id: 0x6380e6ce
+    member_id: 0x6889cc14
+    member_id: 0xeeaf2a65
+    member_id: 0x176d0301
+    member_id: 0xaed031f5
+    member_id: 0x60d35036
+    member_id: 0x8bc6f8d7
+    member_id: 0x14dc16ff
+    member_id: 0xafbe4be2
+    member_id: 0x89e8c72a
+    member_id: 0x34d860de
+    member_id: 0x965f1e90
+    member_id: 0x2d081688
+  }
+}
+struct_union {
+  id: 0xeef9eaf5
+  kind: STRUCT
+  name: "genl_info"
+  definition {
+    bytesize: 72
+    member_id: 0x4317775f
+    member_id: 0x05fda169
+    member_id: 0x069bedc0
+    member_id: 0xac10a6dd
+    member_id: 0xbf959fe4
+    member_id: 0x4d61cf19
+    member_id: 0x3e759d99
+    member_id: 0x311073a2
+    member_id: 0x103eeb09
+  }
+}
+struct_union {
+  id: 0x72ec8660
+  kind: STRUCT
+  name: "genl_multicast_group"
+  definition {
+    bytesize: 17
+    member_id: 0x0d994c40
+    member_id: 0x2d41d1ee
+  }
+}
+struct_union {
+  id: 0x8d671a17
+  kind: STRUCT
+  name: "genl_ops"
+  definition {
+    bytesize: 56
+    member_id: 0xd905fcdc
+    member_id: 0x46340b8e
+    member_id: 0x7dac642e
+    member_id: 0x1d604191
+    member_id: 0x60d3510f
+    member_id: 0x5a7d3e18
+    member_id: 0x1a3986a4
+    member_id: 0x0837e836
+    member_id: 0x2d41d6c0
+    member_id: 0x2a159db5
+    member_id: 0x2d0814a0
+  }
+}
+struct_union {
+  id: 0xf3a9d4a8
+  kind: STRUCT
+  name: "genl_small_ops"
+  definition {
+    bytesize: 24
+    member_id: 0xd905fcdc
+    member_id: 0x7dac690d
+    member_id: 0x1a398b3f
+    member_id: 0x0837e8f9
+    member_id: 0x2d41da41
+    member_id: 0x2a159a62
+  }
+}
+struct_union {
+  id: 0xe0d55a56
+  kind: STRUCT
+  name: "genlmsghdr"
+  definition {
+    bytesize: 4
+    member_id: 0x1aa33935
+    member_id: 0xa6d2d826
+    member_id: 0xd48ba184
+  }
+}
+struct_union {
+  id: 0xa3652854
+  kind: STRUCT
+  name: "genpd_governor_data"
+  definition {
+    bytesize: 32
+    member_id: 0x7c543d79
+    member_id: 0x17df4fd7
+    member_id: 0xd69bf665
+    member_id: 0x3339d670
+    member_id: 0x6749fe4b
+  }
+}
+struct_union {
+  id: 0xb5956fc5
+  kind: STRUCT
+  name: "genpd_lock_ops"
+  definition {
+    bytesize: 32
+    member_id: 0x2de2204e
+    member_id: 0x3bbbeef5
+    member_id: 0xff4b5d85
+    member_id: 0x815e460d
+  }
+}
+struct_union {
+  id: 0x49772f83
+  kind: STRUCT
+  name: "genpd_onecell_data"
+  definition {
+    bytesize: 24
+    member_id: 0xf631d953
+    member_id: 0x9494166e
+    member_id: 0x30911f6a
+  }
+}
+struct_union {
+  id: 0xc1035c93
+  kind: STRUCT
+  name: "genpd_power_state"
+  definition {
+    bytesize: 64
+    member_id: 0x00b4cd45
+    member_id: 0x4285a736
+    member_id: 0x55c49546
+    member_id: 0x07f8a2d5
+    member_id: 0x06544a3e
+    member_id: 0x6e4d8799
+    member_id: 0x74d6a2cd
+    member_id: 0xff8a9e7e
+  }
+}
+struct_union {
+  id: 0x227d416d
+  kind: STRUCT
+  name: "gh_rm_mem_acl_entry"
+  definition {
+    bytesize: 4
+    member_id: 0x69834c4a
+    member_id: 0xdb5d43cb
+    member_id: 0xd44af669
+  }
+}
+struct_union {
+  id: 0x3d94d064
+  kind: STRUCT
+  name: "gh_rm_mem_entry"
+  definition {
+    bytesize: 16
+    member_id: 0xbd330153
+    member_id: 0xd906ec76
+  }
+}
+struct_union {
+  id: 0x56b38fb3
+  kind: STRUCT
+  name: "gh_rm_mem_parcel"
+  definition {
+    bytesize: 112
+    member_id: 0xbf5bc6b1
+    member_id: 0x05e0162a
+    member_id: 0xe32bed7e
+    member_id: 0x5d7bb2c5
+    member_id: 0x0f34750e
+    member_id: 0x85642765
+    member_id: 0x33ddb23c
+    member_id: 0xb26b8f5d
+    member_id: 0x71aeb5ba
+    member_id: 0x30eedf43
+    member_id: 0xf02995d4
+    member_id: 0xb16e1f4b
+    member_id: 0x72ed70ff
+    member_id: 0x322cd2d8
+    member_id: 0xe92a5365
+  }
+}
+struct_union {
+  id: 0xd3b8d3d4
+  kind: STRUCT
+  name: "gh_rm_platform_ops"
+  definition {
+    bytesize: 48
+    member_id: 0x407a0010
+    member_id: 0xf5022a3d
+    member_id: 0xb26b870d
+    member_id: 0x71aeba04
+    member_id: 0x30eed4f0
+    member_id: 0xf0299b61
+  }
+}
+struct_union {
+  id: 0x918d6fc0
+  kind: STRUCT
+  name: "gic_chip_data_v3"
+  definition {
+    bytesize: 120
+    member_id: 0x6e4d805e
+    member_id: 0x9afd7b44
+    member_id: 0xe8134608
+    member_id: 0x15ff4b8b
+    member_id: 0xa719db8e
+    member_id: 0x0afac9f7
+    member_id: 0xda39f59e
+    member_id: 0x2dfaafc3
+    member_id: 0x11c79ca4
+    member_id: 0xdbd5b2cb
+    member_id: 0x1bb98a07
+  }
+}
+struct_union {
+  id: 0x5395485e
+  kind: STRUCT
+  name: "giveback_urb_bh"
+  definition {
+    bytesize: 72
+    member_id: 0xad05edf9
+    member_id: 0x7225cb63
+    member_id: 0x2d1fe1be
+    member_id: 0xb58975e1
+    member_id: 0x5e2b8380
+    member_id: 0x7c08e441
+  }
+}
+struct_union {
+  id: 0xe129f216
+  kind: STRUCT
+  name: "gnet_dump"
+  definition {
+    bytesize: 96
+    member_id: 0x2ddaaba2
+    member_id: 0xb0b8629f
+    member_id: 0xeebe3723
+    member_id: 0x6b351904
+    member_id: 0xcb763ef8
+    member_id: 0x58c03139
+    member_id: 0x8c996ca6
+    member_id: 0xdd71e706
+    member_id: 0xcf7bfd59
+  }
+}
+struct_union {
+  id: 0x2d385376
+  kind: STRUCT
+  name: "gnet_stats_basic_sync"
+  definition {
+    bytesize: 16
+    member_id: 0x5c14d4c2
+    member_id: 0x4866d7ee
+    member_id: 0x0d9bb5e7
+  }
+}
+struct_union {
+  id: 0x1c5200f3
+  kind: STRUCT
+  name: "gnet_stats_queue"
+  definition {
+    bytesize: 20
+    member_id: 0x9b74afb2
+    member_id: 0x609d7853
+    member_id: 0x09b19038
+    member_id: 0xbaaf6c14
+    member_id: 0x02ff46d2
+  }
+}
+struct_union {
+  id: 0xb94739b9
+  kind: STRUCT
+  name: "gov_attr_set"
+  definition {
+    bytesize: 168
+    member_id: 0x452b206c
+    member_id: 0xe5894b40
+    member_id: 0x556f1aff
+    member_id: 0x05bb1856
+  }
+}
+struct_union {
+  id: 0xd90f114b
+  kind: STRUCT
+  name: "gpd_dev_ops"
+  definition {
+    bytesize: 16
+    member_id: 0x4636e6de
+    member_id: 0x69a5ab33
+  }
+}
+struct_union {
+  id: 0xc2d2c0ac
+  kind: STRUCT
+  name: "gpio"
+  definition {
+    bytesize: 24
+    member_id: 0x07481c1e
+    member_id: 0x2d5bf5db
+    member_id: 0x05170a4d
+  }
+}
+struct_union {
+  id: 0xcc6c2554
+  kind: STRUCT
+  name: "gpio_array"
+  definition {
+    bytesize: 48
+    member_id: 0x87d9e5d0
+    member_id: 0xd93b9df5
+    member_id: 0xc67adc61
+    member_id: 0x24dcf28c
+    member_id: 0x65f10173
+    member_id: 0x2d0812f5
+    member_id: 0xbbb3a1bf
+  }
+}
+struct_union {
+  id: 0x49d9db4c
+  kind: STRUCT
+  name: "gpio_chip"
+  definition {
+    bytesize: 648
+    member_id: 0x0517038f
+    member_id: 0x517d2606
+    member_id: 0x723323c1
+    member_id: 0x6e4d8897
+    member_id: 0x4a9652fb
+    member_id: 0xb6d6f251
+    member_id: 0xfead748d
+    member_id: 0x862306b2
+    member_id: 0x2773b302
+    member_id: 0xd53a148a
+    member_id: 0x317502f3
+    member_id: 0xc45a4303
+    member_id: 0x3dd133e1
+    member_id: 0x2e31bb5d
+    member_id: 0x53cefe7f
+    member_id: 0xbb1337b9
+    member_id: 0xa6878b87
+    member_id: 0x2924d656
+    member_id: 0xddf9cb86
+    member_id: 0x1d3635db
+    member_id: 0xd7a3d362
+    member_id: 0x85bdc4db
+    member_id: 0xe49ba3c7
+    member_id: 0x9b8d9e1f
+    member_id: 0x55fab336
+    member_id: 0xfbd54a38
+    member_id: 0x9795d47d
+    member_id: 0xf470ad9d
+    member_id: 0xd4e45e24
+    member_id: 0xdc032ec7
+    member_id: 0x934b1c23
+    member_id: 0x6ac550a9
+    member_id: 0xe5bbf069
+    member_id: 0x30dd92f2
+    member_id: 0xfafbec34
+    member_id: 0x95185f9f
+    member_id: 0x41fa2863
+    member_id: 0x6d19b14d
+    member_id: 0x2dd41454
+    member_id: 0x99d63bfd
+    member_id: 0x43e438e6
+    member_id: 0xf7c3f412
+    member_id: 0xe881bc5b
+    member_id: 0x4a7d64da
+    member_id: 0x5381e473
+    member_id: 0x2d081102
+    member_id: 0x63760394
+  }
+}
+struct_union {
+  id: 0xbfc26e57
+  kind: STRUCT
+  name: "gpio_desc"
+  definition {
+    bytesize: 48
+    member_id: 0xc0b7e746
+    member_id: 0x2d5bf5db
+    member_id: 0x05170a4d
+    member_id: 0x0de57421
+    member_id: 0x6b1d26fa
+    member_id: 0x2d0812f5
+  }
+}
+struct_union {
+  id: 0xe3e907b3
+  kind: STRUCT
+  name: "gpio_descs"
+  definition {
+    bytesize: 16
+    member_id: 0xcd658844
+    member_id: 0x6e81fced
+    member_id: 0x871745a5
+  }
+}
+struct_union {
+  id: 0x407fd792
+  kind: STRUCT
+  name: "gpio_device"
+  definition {
+    bytesize: 1288
+    member_id: 0xcc480c42
+    member_id: 0xce1ac5a8
+    member_id: 0x697fbc8c
+    member_id: 0x66b5a73e
+    member_id: 0x4a965b4e
+    member_id: 0xc67ad98d
+    member_id: 0x2b914e16
+    member_id: 0x85bdc08a
+    member_id: 0xe49bac99
+    member_id: 0x05170fcc
+    member_id: 0xff8a9798
+    member_id: 0x7c00e786
+    member_id: 0x3761f1d2
+    member_id: 0xf53d14f9
+    member_id: 0x43df6000
+    member_id: 0x2d081fab
+  }
+}
+struct_union {
+  id: 0xa489c3d0
+  kind: STRUCT
+  name: "gpio_irq_chip"
+  definition {
+    bytesize: 304
+    member_id: 0xc643d626
+    member_id: 0xa719d61d
+    member_id: 0xba32bd20
+    member_id: 0x6e4d8897
+    member_id: 0xbb141a94
+    member_id: 0xf50648d5
+    member_id: 0x68203f29
+    member_id: 0x48bb0b53
+    member_id: 0xff650164
+    member_id: 0xf9ead752
+    member_id: 0x98c5ce6d
+    member_id: 0x5f02774a
+    member_id: 0x15afa338
+    member_id: 0x955b6231
+    member_id: 0x3e1ae96f
+    member_id: 0x5f7f1537
+    member_id: 0x0a33e4ac
+    member_id: 0x8ded83fb
+    member_id: 0xf03d79fd
+    member_id: 0xd61b14f9
+    member_id: 0xd5629500
+    member_id: 0xd0e81373
+    member_id: 0x29079611
+    member_id: 0x43e43e10
+    member_id: 0x1fa2b0c1
+    member_id: 0xea49f6ac
+    member_id: 0x07d8062b
+    member_id: 0x9b794184
+    member_id: 0xc19e68d6
+    member_id: 0x2d081239
+    member_id: 0x637600d7
+  }
+}
+struct_union {
+  id: 0xd7a54493
+  kind: UNION
+  name: "gpio_irq_fwspec"
+  definition {
+    bytesize: 80
+    member_id: 0xc6476ee8
+    member_id: 0xe1f4ccd1
+  }
+}
+struct_union {
+  id: 0x3027380c
+  kind: STRUCT
+  name: "gre_protocol"
+  definition {
+    bytesize: 16
+    member_id: 0xf977bf92
+    member_id: 0x4e3d83f6
+  }
+}
+struct_union {
+  id: 0x3bb847e5
+  kind: STRUCT
+  name: "gro_cell"
+  definition {
+    bytesize: 456
+    member_id: 0x55315f71
+    member_id: 0x1e5ecbb4
+  }
+}
+struct_union {
+  id: 0x913e5f80
+  kind: STRUCT
+  name: "gro_cells"
+  definition {
+    bytesize: 8
+    member_id: 0xc93522de
+  }
+}
+struct_union {
+  id: 0x7f6ac0ec
+  kind: STRUCT
+  name: "gro_list"
+  definition {
+    bytesize: 24
+    member_id: 0x7c00ef52
+    member_id: 0x654276d5
+  }
+}
+struct_union {
+  id: 0x8cec09e9
+  kind: STRUCT
+  name: "group_desc"
+  definition {
+    bytesize: 32
+    member_id: 0x0de57ce8
+    member_id: 0x165908c0
+    member_id: 0xbbc6f920
+    member_id: 0xff8a91c0
+  }
+}
+struct_union {
+  id: 0x5a93fcf2
+  kind: STRUCT
+  name: "group_info"
+  definition {
+    bytesize: 8
+    member_id: 0x071e5bb3
+    member_id: 0x2bcea793
+    member_id: 0x08bea5a0
+  }
+}
+struct_union {
+  id: 0xc17cd5be
+  kind: STRUCT
+  name: "gs_port"
+  definition {
+    bytesize: 776
+    member_id: 0x48b9180d
+    member_id: 0x7daf8d82
+    member_id: 0x4b84c909
+    member_id: 0xe64fd4ef
+    member_id: 0x2f8027e8
+    member_id: 0x4f66f053
+    member_id: 0xf00fdac5
+    member_id: 0x3373f200
+    member_id: 0x84132b23
+    member_id: 0xb6e523c6
+    member_id: 0xc72eac0e
+    member_id: 0x8b22f978
+    member_id: 0xe34084b1
+    member_id: 0xabdfb454
+    member_id: 0x83a02723
+    member_id: 0xfeec5ed1
+    member_id: 0x6cd776a7
+    member_id: 0xff7650d9
+    member_id: 0xe3e1108e
+    member_id: 0x5425f375
+  }
+}
+struct_union {
+  id: 0x9d38ee69
+  kind: STRUCT
+  name: "gserial"
+  definition {
+    bytesize: 272
+    member_id: 0x21a4123c
+    member_id: 0x695e350f
+    member_id: 0x5ca54950
+    member_id: 0xb3fffded
+    member_id: 0x5425f5b9
+    member_id: 0xbd6086b0
+    member_id: 0x8da7dc80
+    member_id: 0x2cd25bd7
+  }
+}
+struct_union {
+  id: 0xdd881191
+  kind: STRUCT
+  name: "h4_recv_pkt"
+  definition {
+    bytesize: 16
+    member_id: 0x5c7f890c
+    member_id: 0x5f06cd21
+    member_id: 0x6fe580fb
+    member_id: 0x9d07f37f
+    member_id: 0xd597eed1
+    member_id: 0x5ed04984
+  }
+}
+struct_union {
+  id: 0xb24f0745
+  kind: STRUCT
+  name: "hash_alg_common"
+  definition {
+    bytesize: 448
+    member_id: 0x9f7a3aba
+    member_id: 0x1b3dcedf
+    member_id: 0x85f3de85
+  }
+}
+struct_union {
+  id: 0x26a23d9b
+  kind: STRUCT
+  name: "hashtab"
+  definition {
+    bytesize: 16
+    member_id: 0xf28957eb
+    member_id: 0xd9b710b8
+    member_id: 0x7cc24b6d
+  }
+}
+struct_union {
+  id: 0xf9f49fb7
+  kind: STRUCT
+  name: "hashtab_node"
+  definition {
+    bytesize: 24
+    member_id: 0x204eb7cb
+    member_id: 0x13f8aa4a
+    member_id: 0x11c7e403
+  }
+}
+struct_union {
+  id: 0x6101d583
+  kind: STRUCT
+  name: "hc_driver"
+  definition {
+    bytesize: 400
+    member_id: 0x3144f518
+    member_id: 0x703f2b70
+    member_id: 0x5446949f
+    member_id: 0x9972cb66
+    member_id: 0x2d0fa426
+    member_id: 0x62920e0d
+    member_id: 0x46349541
+    member_id: 0x830a9107
+    member_id: 0x64fafbf7
+    member_id: 0x69849281
+    member_id: 0x9ef9d7f1
+    member_id: 0x3b12433d
+    member_id: 0xb5e53ffa
+    member_id: 0xad94a034
+    member_id: 0x75ed4da2
+    member_id: 0x8056e065
+    member_id: 0xb1d77507
+    member_id: 0xc695491c
+    member_id: 0xe3ad9a2c
+    member_id: 0x7dcba85d
+    member_id: 0x919933b5
+    member_id: 0x2a260a7a
+    member_id: 0x7ce7c0a6
+    member_id: 0xb775d4db
+    member_id: 0xc76ee726
+    member_id: 0x97b320de
+    member_id: 0x6fa2005a
+    member_id: 0x01677e52
+    member_id: 0xcd8f3d51
+    member_id: 0x32b9bad9
+    member_id: 0xcd27ac18
+    member_id: 0xcacf1995
+    member_id: 0x3b5f3e3d
+    member_id: 0x8372dbd8
+    member_id: 0x1a3851a4
+    member_id: 0x2bbb1733
+    member_id: 0xd6605ae1
+    member_id: 0x31371bcd
+    member_id: 0x859f82e8
+    member_id: 0xbd69a3a6
+    member_id: 0xfd9ed8c6
+    member_id: 0xb0796c56
+    member_id: 0x9d571f16
+    member_id: 0xe38dd418
+    member_id: 0x2418a798
+    member_id: 0x90eb7979
+    member_id: 0x2d081c69
+    member_id: 0x63760faa
+    member_id: 0xac8946c7
+    member_id: 0xe0f63d78
+  }
+}
+struct_union {
+  id: 0x9a03648c
+  kind: STRUCT
+  name: "hci_cb"
+  definition {
+    bytesize: 72
+    member_id: 0x7c00ef52
+    member_id: 0x0ddfe679
+    member_id: 0xca99ac61
+    member_id: 0x513a35c9
+    member_id: 0xad84e518
+    member_id: 0x203b913e
+    member_id: 0xf59baf0b
+    member_id: 0x2d081e2a
+  }
+}
+struct_union {
+  id: 0x8162b279
+  kind: STRUCT
+  name: "hci_chan"
+  definition {
+    bytesize: 72
+    member_id: 0x7c00ef52
+    member_id: 0xb80b9f8f
+    member_id: 0x85f2b71e
+    member_id: 0x08a261d1
+    member_id: 0x87317109
+    member_id: 0x72401a0b
+    member_id: 0x7dedd401
+    member_id: 0x2d081e2a
+  }
+}
+struct_union {
+  id: 0x86781959
+  kind: STRUCT
+  name: "hci_conn"
+  definition {
+    bytesize: 2160
+    member_id: 0x7c00ef52
+    member_id: 0xb70f0133
+    member_id: 0xbb57bdd3
+    member_id: 0x156c5692
+    member_id: 0x449078f8
+    member_id: 0x3f74dce4
+    member_id: 0xc9830a15
+    member_id: 0xb9c86f38
+    member_id: 0x24e6c354
+    member_id: 0xc1610829
+    member_id: 0x99b1c526
+    member_id: 0xb80b9f9a
+    member_id: 0x93ba44c7
+    member_id: 0x721bf22a
+    member_id: 0x872ef553
+    member_id: 0x5ce53fde
+    member_id: 0xc05b666e
+    member_id: 0xb39ca275
+    member_id: 0xe5043b9d
+    member_id: 0x72b493a5
+    member_id: 0xc5388ff0
+    member_id: 0x3fe97d07
+    member_id: 0xf6e181ca
+    member_id: 0xeedef856
+    member_id: 0xc3d3954f
+    member_id: 0x0e936326
+    member_id: 0x74f0dee3
+    member_id: 0x50d25879
+    member_id: 0xf668a047
+    member_id: 0xc9427d46
+    member_id: 0x24430b67
+    member_id: 0xadef5c34
+    member_id: 0x59dd05d4
+    member_id: 0xe7e3b868
+    member_id: 0x4708182d
+    member_id: 0x68e4e565
+    member_id: 0x83b23c2a
+    member_id: 0x22f820e8
+    member_id: 0x096b15dd
+    member_id: 0x835563ee
+    member_id: 0x9c1e1cf9
+    member_id: 0x67d84ae8
+    member_id: 0x5e70ec06
+    member_id: 0xa054824b
+    member_id: 0x150525b3
+    member_id: 0x3ebdde4d
+    member_id: 0x2fe58a0b
+    member_id: 0x3276c7fc
+    member_id: 0x722296b4
+    member_id: 0x29e42e01
+    member_id: 0x39eaab32
+    member_id: 0x2d5bf753
+    member_id: 0xddef3ec7
+    member_id: 0x45282b3d
+    member_id: 0x02bda3cf
+    member_id: 0xa9efc967
+    member_id: 0x57de2881
+    member_id: 0x55e76066
+    member_id: 0xb58f02ec
+    member_id: 0x873175c0
+    member_id: 0x08a263aa
+    member_id: 0xabff6c11
+    member_id: 0x5c30c99f
+    member_id: 0xd58c5c2c
+    member_id: 0x35846471
+    member_id: 0x0f35b386
+    member_id: 0x2a5e8a3e
+    member_id: 0xce1ac741
+    member_id: 0x1c357d5d
+    member_id: 0xaf38e467
+    member_id: 0x1dcf84db
+    member_id: 0x853bbcd4
+    member_id: 0xc1208b52
+    member_id: 0x13050033
+    member_id: 0x55959838
+    member_id: 0xb8e18a29
+    member_id: 0x0a484342
+    member_id: 0x92ed2d29
+    member_id: 0x82203533
+    member_id: 0x200fb526
+    member_id: 0x2d08134c
+    member_id: 0x63760a9a
+    member_id: 0xac8947dc
+    member_id: 0xe0f63bdb
+  }
+}
+struct_union {
+  id: 0xf1245c57
+  kind: STRUCT
+  name: "hci_conn_hash"
+  definition {
+    bytesize: 40
+    member_id: 0x7c00ef52
+    member_id: 0xe08e16a4
+    member_id: 0x183c286e
+    member_id: 0x560b5e17
+    member_id: 0x15e5eeb5
+    member_id: 0x02559a7b
+    member_id: 0xc8503086
+  }
+}
+struct_union {
+  id: 0x5d4fb63f
+  kind: STRUCT
+  name: "hci_dev"
+  definition {
+    bytesize: 6464
+    member_id: 0x7c00ef52
+    member_id: 0x2d4b35c2
+    member_id: 0x0d314a12
+    member_id: 0x2d5bf848
+    member_id: 0xccc729a8
+    member_id: 0xda63c471
+    member_id: 0x79d4a214
+    member_id: 0x17ebad26
+    member_id: 0x72fca683
+    member_id: 0x2bb3fb8f
+    member_id: 0x2c59a8ee
+    member_id: 0x0c2a232c
+    member_id: 0xc6d6a32c
+    member_id: 0x863d7f7b
+    member_id: 0x543ffd14
+    member_id: 0xe65c7be8
+    member_id: 0x6e3edc08
+    member_id: 0x72b49762
+    member_id: 0x3c0ffa2f
+    member_id: 0x850041c9
+    member_id: 0xc09a441d
+    member_id: 0xc5388d91
+    member_id: 0x6e331241
+    member_id: 0x082a7070
+    member_id: 0x75a1e881
+    member_id: 0xc8b6e1aa
+    member_id: 0x7a7abbcb
+    member_id: 0xc8578daa
+    member_id: 0x9a07655b
+    member_id: 0x2a672cd4
+    member_id: 0x9262a5ee
+    member_id: 0x17dd5b60
+    member_id: 0xc2344046
+    member_id: 0xa9bf914a
+    member_id: 0xb0312eeb
+    member_id: 0x57d4dc2b
+    member_id: 0x0c47d533
+    member_id: 0x97b7885f
+    member_id: 0x16af1257
+    member_id: 0xc94272a1
+    member_id: 0xa4895f02
+    member_id: 0xccd72ae9
+    member_id: 0x175839e1
+    member_id: 0xf5d43022
+    member_id: 0x052537d8
+    member_id: 0x9d98b672
+    member_id: 0x09a35e60
+    member_id: 0x9a1249a9
+    member_id: 0x32b8a7c0
+    member_id: 0x091a6c17
+    member_id: 0xc5f84af4
+    member_id: 0xf6702779
+    member_id: 0x7702aff1
+    member_id: 0x608a5ddc
+    member_id: 0xd4fa2334
+    member_id: 0x23bc5cfc
+    member_id: 0xaab35ddd
+    member_id: 0xaa42386f
+    member_id: 0xb73e5e75
+    member_id: 0x83b23cdc
+    member_id: 0x22f823e0
+    member_id: 0x83556531
+    member_id: 0x9c1e1541
+    member_id: 0xbcb875d4
+    member_id: 0x8ea80b48
+    member_id: 0xb1f31934
+    member_id: 0x89165678
+    member_id: 0x84378713
+    member_id: 0x13fd0633
+    member_id: 0x70017b28
+    member_id: 0x7b4b1362
+    member_id: 0x77b2ddab
+    member_id: 0xbd91da92
+    member_id: 0x664acf2b
+    member_id: 0x68e4ed9e
+    member_id: 0xe335a60c
+    member_id: 0x8f1b54ca
+    member_id: 0xb1803fc6
+    member_id: 0xc720b38a
+    member_id: 0x0d3b5bd1
+    member_id: 0x45282e69
+    member_id: 0xcc74652e
+    member_id: 0xe88abc76
+    member_id: 0x19ee662b
+    member_id: 0xcc74db49
+    member_id: 0x8f4bcfaa
+    member_id: 0xad2eefd3
+    member_id: 0x811b1d72
+    member_id: 0x434c9ecc
+    member_id: 0x340db501
+    member_id: 0xa30bfddb
+    member_id: 0x73920265
+    member_id: 0xbf88522e
+    member_id: 0xa0df1bbb
+    member_id: 0xffdeb7b9
+    member_id: 0x5a7b4662
+    member_id: 0x0c8eba16
+    member_id: 0xb0bb8540
+    member_id: 0xa51a50b8
+    member_id: 0xc860bd45
+    member_id: 0x3fe972c9
+    member_id: 0x52b08a03
+    member_id: 0xf6e18c0d
+    member_id: 0x94c9a78a
+    member_id: 0xb1be65fe
+    member_id: 0xc0033c9d
+    member_id: 0x8f0cab7f
+    member_id: 0xfc24f02b
+    member_id: 0xf06982b8
+    member_id: 0x3c187ce2
+    member_id: 0x2fadbc0c
+    member_id: 0x216e6075
+    member_id: 0x09bd16a3
+    member_id: 0x5770d188
+    member_id: 0x46147565
+    member_id: 0x4c7cf425
+    member_id: 0x7bdded34
+    member_id: 0x2d37b152
+    member_id: 0x737a791c
+    member_id: 0xa34b4567
+    member_id: 0x2a708dde
+    member_id: 0xfeddaede
+    member_id: 0xf17c8f4c
+    member_id: 0xe1b8deee
+    member_id: 0x026ea6ed
+    member_id: 0x4f6ccbdc
+    member_id: 0x12517395
+    member_id: 0x3171bf74
+    member_id: 0xf3771713
+    member_id: 0xcd76b47e
+    member_id: 0xd28bda77
+    member_id: 0x71d3a39c
+    member_id: 0xb3ca2e9b
+    member_id: 0xc165230a
+    member_id: 0x215a13ec
+    member_id: 0x377c522b
+    member_id: 0x94ccc01c
+    member_id: 0xe2270b65
+    member_id: 0xdc1b3211
+    member_id: 0x7c6b567e
+    member_id: 0x33b1974f
+    member_id: 0x22644f52
+    member_id: 0x12298c1b
+    member_id: 0x324dabc9
+    member_id: 0xba5af507
+    member_id: 0x20a435f2
+    member_id: 0xd70922f1
+    member_id: 0x432861bc
+    member_id: 0x688a5a69
+    member_id: 0x8bdadf1b
+    member_id: 0xaee6ff53
+    member_id: 0xdb3467f3
+    member_id: 0x30eff64b
+    member_id: 0xe795c368
+    member_id: 0x9d30956d
+    member_id: 0xec10e729
+    member_id: 0x6f0a17b5
+    member_id: 0x091c4964
+    member_id: 0xe5f6efa3
+    member_id: 0x6e7f7dae
+    member_id: 0x15ef3a47
+    member_id: 0xa75cede3
+    member_id: 0x4b83bf04
+    member_id: 0xf9311273
+    member_id: 0x71481e19
+    member_id: 0x6fa9d3ef
+    member_id: 0xa57ecd8e
+    member_id: 0x8fd1e923
+    member_id: 0x0cd354a8
+    member_id: 0x41d7be50
+    member_id: 0x380f1158
+    member_id: 0xd432cc5e
+    member_id: 0xfa136415
+    member_id: 0x3e305123
+    member_id: 0x6188e4ee
+    member_id: 0x1b3970e4
+    member_id: 0xd0a93c31
+    member_id: 0x45128248
+    member_id: 0x98e47471
+    member_id: 0x6e09ac61
+    member_id: 0x4821ea2b
+    member_id: 0x10dabda2
+    member_id: 0xa136ba5d
+    member_id: 0xae6114cc
+    member_id: 0xb40bd33a
+    member_id: 0xff765d59
+    member_id: 0x15af76a2
+    member_id: 0x58a1ba40
+    member_id: 0x4505a488
+    member_id: 0x938b4e26
+    member_id: 0x9962bd46
+    member_id: 0x285f05be
+    member_id: 0x020eccd3
+    member_id: 0xe71cc1d9
+    member_id: 0x4dcd3a37
+    member_id: 0x4ba7b24a
+    member_id: 0x4e9500ec
+    member_id: 0x115fa561
+    member_id: 0x17a11866
+    member_id: 0x3c8ef028
+    member_id: 0xdc9e19ca
+    member_id: 0x78450d9f
+    member_id: 0xfe933c61
+    member_id: 0x5520b6a1
+    member_id: 0xe27e8ce3
+    member_id: 0x1d6fbf33
+    member_id: 0xb9498bcf
+    member_id: 0xc9aa7d35
+    member_id: 0x371784a6
+    member_id: 0xed3cf7e2
+    member_id: 0x1c35794d
+    member_id: 0xce1acc55
+    member_id: 0x80a0a3ee
+    member_id: 0x76701448
+    member_id: 0x35c9dc28
+    member_id: 0x105c3c4d
+    member_id: 0x71a815c7
+    member_id: 0x5d9e95ae
+    member_id: 0x2e353a9c
+    member_id: 0x83054658
+    member_id: 0xfa7845a1
+    member_id: 0x1b95ac31
+    member_id: 0x86b94497
+    member_id: 0x003ea69f
+    member_id: 0xee8bae4d
+    member_id: 0x030b0ab6
+    member_id: 0xaa882ed4
+    member_id: 0xff86bb58
+    member_id: 0x546851f2
+    member_id: 0x068f454d
+    member_id: 0x0eb3e9bf
+    member_id: 0x2fd08efd
+    member_id: 0x4b6f45cd
+    member_id: 0x81de61c0
+    member_id: 0x95cc43f7
+    member_id: 0x8064b4f4
+    member_id: 0xc6a08382
+    member_id: 0xaaa3fd42
+    member_id: 0xad98a9ad
+    member_id: 0xcd5fd921
+    member_id: 0x7f8229da
+    member_id: 0x84e56f17
+    member_id: 0x9ed91ea3
+    member_id: 0xe39f1481
+    member_id: 0x56f92467
+    member_id: 0xa65cd12c
+    member_id: 0x319b89ab
+    member_id: 0xfedee1e7
+    member_id: 0x284bd920
+    member_id: 0x08a92d3f
+    member_id: 0xff0b3458
+    member_id: 0xe84b7153
+    member_id: 0x6ae7b5b9
+    member_id: 0x483f3007
+    member_id: 0x2d0818b7
+    member_id: 0x637608bd
+    member_id: 0xac894467
+    member_id: 0xe0f63f30
+  }
+}
+struct_union {
+  id: 0xf2078d09
+  kind: STRUCT
+  name: "hci_dev_stats"
+  definition {
+    bytesize: 40
+    member_id: 0xeb51f05c
+    member_id: 0xe3bf32f2
+    member_id: 0x802b8087
+    member_id: 0x6ad2f83c
+    member_id: 0x4da05652
+    member_id: 0x455f4f04
+    member_id: 0x44de5212
+    member_id: 0x64be414e
+    member_id: 0x597c8910
+    member_id: 0x45261f18
+  }
+}
+struct_union {
+  id: 0x50d7f752
+  kind: STRUCT
+  name: "hci_mgmt_chan"
+  definition {
+    bytesize: 56
+    member_id: 0x7c00ef52
+    member_id: 0x4c7bbeeb
+    member_id: 0xa191b952
+    member_id: 0xef0accef
+    member_id: 0xc429f5c2
+    member_id: 0x2d0814a0
+  }
+}
+struct_union {
+  id: 0x765ffa2c
+  kind: STRUCT
+  name: "hci_mgmt_handler"
+  definition {
+    bytesize: 24
+    member_id: 0x2123e92d
+    member_id: 0x7312d341
+    member_id: 0x2d5bf8f8
+  }
+}
+struct_union {
+  id: 0xa77165e8
+  kind: STRUCT
+  name: "hci_uart"
+  definition {
+    bytesize: 280
+    member_id: 0xa34e4158
+    member_id: 0x2726387e
+    member_id: 0xaf38e1a7
+    member_id: 0x2d5bf9f3
+    member_id: 0x6b10d6d5
+    member_id: 0xf8fed40c
+    member_id: 0x8a6a87b7
+    member_id: 0x5d519bea
+    member_id: 0xc10f19a2
+    member_id: 0x5911997f
+    member_id: 0xd2a98d48
+    member_id: 0x4a0d7b72
+    member_id: 0x7ab1d3e0
+    member_id: 0x5d630d19
+    member_id: 0x36a68d1e
+    member_id: 0x64cf57ca
+  }
+}
+struct_union {
+  id: 0xfce69ba4
+  kind: STRUCT
+  name: "hci_uart_proto"
+  definition {
+    bytesize: 96
+    member_id: 0xcc6aa9f7
+    member_id: 0x0de57809
+    member_id: 0xa9121f91
+    member_id: 0x7ab1d042
+    member_id: 0x5d630ec6
+    member_id: 0xad9b45a9
+    member_id: 0xcd5c3449
+    member_id: 0x7f81ca37
+    member_id: 0x84e68e61
+    member_id: 0xb4ef9460
+    member_id: 0x5ed396ce
+    member_id: 0xb711cfc3
+    member_id: 0x31f9e318
+  }
+}
+struct_union {
+  id: 0x4db3b057
+  kind: STRUCT
+  name: "hd_geometry"
+  definition {
+    bytesize: 16
+    member_id: 0xdcbe69b8
+    member_id: 0x3739d0c7
+    member_id: 0xcbff9883
+    member_id: 0x462842d5
+  }
+}
+struct_union {
+  id: 0x854f38c5
+  kind: STRUCT
+  name: "hdmi_any_infoframe"
+  definition {
+    bytesize: 8
+    member_id: 0x5c7bba62
+    member_id: 0xa63cb814
+    member_id: 0xb530e15f
+  }
+}
+struct_union {
+  id: 0x994177db
+  kind: STRUCT
+  name: "hdmi_audio_infoframe"
+  definition {
+    bytesize: 28
+    member_id: 0x5c7bba62
+    member_id: 0xa63cb814
+    member_id: 0xb530e15f
+    member_id: 0xea1ad9f4
+    member_id: 0x1d6c7a97
+    member_id: 0xa30ebd21
+    member_id: 0x5942daa4
+    member_id: 0x253518a3
+    member_id: 0xd132e769
+    member_id: 0xaa3960de
+    member_id: 0xfd3cc788
+  }
+}
+struct_union {
+  id: 0x62436c35
+  kind: STRUCT
+  name: "hdmi_avi_infoframe"
+  definition {
+    bytesize: 68
+    member_id: 0x5c7bba62
+    member_id: 0xa63cb814
+    member_id: 0xb530e15f
+    member_id: 0x7b31b339
+    member_id: 0x27ba886c
+    member_id: 0x9cba7bc6
+    member_id: 0x2e08fd3b
+    member_id: 0xfbe129c1
+    member_id: 0x18f796ee
+    member_id: 0xa9debf46
+    member_id: 0x03392f90
+    member_id: 0xdb8e60db
+    member_id: 0x333d7fad
+    member_id: 0x4cc72794
+    member_id: 0x9f340c7d
+    member_id: 0x0ae79794
+    member_id: 0x9d9649f5
+    member_id: 0xc8e304e4
+    member_id: 0x68768233
+    member_id: 0x915cadeb
+  }
+}
+struct_union {
+  id: 0x019a878e
+  kind: STRUCT
+  name: "hdmi_drm_infoframe"
+  definition {
+    bytesize: 40
+    member_id: 0x5c7bba62
+    member_id: 0xa63cb814
+    member_id: 0xb530e15f
+    member_id: 0xa4fd15ff
+    member_id: 0x0e60addc
+    member_id: 0x07dfd492
+    member_id: 0x28b8deb0
+    member_id: 0x6b2c9d3a
+    member_id: 0x4494ef70
+    member_id: 0x13854277
+    member_id: 0x39765c90
+  }
+}
+struct_union {
+  id: 0xc98ebbd8
+  kind: UNION
+  name: "hdmi_infoframe"
+  definition {
+    bytesize: 68
+    member_id: 0xae965b06
+    member_id: 0x8daa6408
+    member_id: 0x8f6f4486
+    member_id: 0x7ac9a674
+    member_id: 0xe5495956
+    member_id: 0x92130897
+  }
+}
+struct_union {
+  id: 0x7c080f97
+  kind: STRUCT
+  name: "hdmi_spd_infoframe"
+  definition {
+    bytesize: 36
+    member_id: 0x5c7bba62
+    member_id: 0xa63cb814
+    member_id: 0xb530e15f
+    member_id: 0x7a84c23b
+    member_id: 0xdfd49ece
+    member_id: 0x2a053556
+  }
+}
+struct_union {
+  id: 0xa745d9ba
+  kind: UNION
+  name: "hdmi_vendor_any_infoframe"
+  definition {
+    bytesize: 24
+    member_id: 0xae1c4f36
+    member_id: 0xc6008baa
+  }
+}
+struct_union {
+  id: 0xdd6fea91
+  kind: STRUCT
+  name: "hdmi_vendor_infoframe"
+  definition {
+    bytesize: 24
+    member_id: 0x5c7bba62
+    member_id: 0xa63cb814
+    member_id: 0xb530e15f
+    member_id: 0x113e9160
+    member_id: 0xe1d0d518
+    member_id: 0x2038621e
+    member_id: 0x87554dcf
+  }
+}
+struct_union {
+  id: 0xb7cd5fb5
+  kind: STRUCT
+  name: "hdr_sink_metadata"
+  definition {
+    bytesize: 12
+    member_id: 0x0e41ca7b
+    member_id: 0x307b36dc
+  }
+}
+struct_union {
+  id: 0xc84a0499
+  kind: STRUCT
+  name: "hdr_static_metadata"
+  definition {
+    bytesize: 8
+    member_id: 0xa4abc6f0
+    member_id: 0x0e140898
+    member_id: 0x13fc06ef
+    member_id: 0x390f17cd
+    member_id: 0x58931622
+  }
+}
+struct_union {
+  id: 0x993e8dbd
+  kind: STRUCT
+  name: "header_ops"
+  definition {
+    bytesize: 64
+    member_id: 0x0faee1ca
+    member_id: 0x9e0bc4a7
+    member_id: 0x3b50f609
+    member_id: 0x604e0cc3
+    member_id: 0x2a0a55ed
+    member_id: 0xcfa2fa2e
+    member_id: 0x2d0814a0
+    member_id: 0x63760ed5
+  }
+}
+struct_union {
+  id: 0x16c2f3e5
+  kind: STRUCT
+  name: "hh_cache"
+  definition {
+    bytesize: 112
+    member_id: 0x5ccf8ed0
+    member_id: 0x462db394
+    member_id: 0x6a915593
+  }
+}
+struct_union {
+  id: 0xe038416b
+  kind: STRUCT
+  name: "hid_collection"
+  definition {
+    bytesize: 16
+    member_id: 0x018c7f62
+    member_id: 0x5c135d23
+    member_id: 0x072f08a8
+    member_id: 0x86ff43f7
+  }
+}
+struct_union {
+  id: 0x1dd3fc58
+  kind: STRUCT
+  name: "hid_device"
+  definition {
+    bytesize: 7864
+    member_id: 0x11a479d5
+    member_id: 0x0939a4ee
+    member_id: 0xe349e428
+    member_id: 0x4a42b1d1
+    member_id: 0x48c91cfd
+    member_id: 0xd205c634
+    member_id: 0x6e9103d9
+    member_id: 0x962d52d7
+    member_id: 0xda382099
+    member_id: 0xd37a0f1d
+    member_id: 0x7a88ca65
+    member_id: 0xdf709d11
+    member_id: 0xa68711dd
+    member_id: 0x5c61158d
+    member_id: 0x1427851b
+    member_id: 0xa3c733bc
+    member_id: 0x03dcbfb4
+    member_id: 0x3f6b1d8c
+    member_id: 0xce1ac1fe
+    member_id: 0xd44dce66
+    member_id: 0xdeb73004
+    member_id: 0xf7535b37
+    member_id: 0x18a127c9
+    member_id: 0x54126407
+    member_id: 0x2b3e3bb1
+    member_id: 0xd382ab7e
+    member_id: 0x68976a7a
+    member_id: 0xbbbc650d
+    member_id: 0x7c54d5f8
+    member_id: 0x73492b8d
+    member_id: 0x7d9c785a
+    member_id: 0xc2bf0459
+    member_id: 0x205457c1
+    member_id: 0xca5668d0
+    member_id: 0x2a0679a5
+    member_id: 0x989b8848
+    member_id: 0x94c205c0
+    member_id: 0x342e5668
+    member_id: 0x44106ed8
+    member_id: 0x900b35d9
+    member_id: 0x0dfb9ad8
+    member_id: 0x3065f315
+    member_id: 0xb7a98fcb
+    member_id: 0x6d52b896
+    member_id: 0x53d0c010
+    member_id: 0x7b2bccdd
+    member_id: 0x5ad99975
+    member_id: 0x2e5d8158
+    member_id: 0x7515f016
+    member_id: 0x07cf2cee
+    member_id: 0x8aa7ae55
+    member_id: 0x2c8c53b8
+    member_id: 0x58740fba
+    member_id: 0xab17d40e
+    member_id: 0xaf4362fa
+    member_id: 0xff66bcf9
+    member_id: 0xcc6aaeab
+    member_id: 0x2d081576
+    member_id: 0x637601c1
+  }
+}
+struct_union {
+  id: 0xabb1637b
+  kind: STRUCT
+  name: "hid_device_id"
+  definition {
+    bytesize: 24
+    member_id: 0xda3822f9
+    member_id: 0xd37a0cc8
+    member_id: 0x7a88c029
+    member_id: 0xdf709840
+    member_id: 0x6d08a35a
+  }
+}
+struct_union {
+  id: 0x271fade8
+  kind: STRUCT
+  name: "hid_driver"
+  definition {
+    bytesize: 368
+    member_id: 0x0ddfefbb
+    member_id: 0xc4f4eccb
+    member_id: 0x99d52cf2
+    member_id: 0x3b349498
+    member_id: 0xe61687a2
+    member_id: 0xd77b1bc7
+    member_id: 0xb4adbfac
+    member_id: 0x3d46eed7
+    member_id: 0xb773a56a
+    member_id: 0x640c32f6
+    member_id: 0x0a62e6fa
+    member_id: 0x5c95b22b
+    member_id: 0x7ff1c028
+    member_id: 0xeb9794ab
+    member_id: 0xfd9bce1c
+    member_id: 0xa3d081a0
+    member_id: 0x3459ef31
+    member_id: 0xf39706bf
+    member_id: 0xcab2cce5
+    member_id: 0xa793f54a
+    member_id: 0x2d081fb1
+    member_id: 0x63760b51
+    member_id: 0xac894e06
+    member_id: 0xd4ad468f
+  }
+}
+struct_union {
+  id: 0x8ebc7f13
+  kind: STRUCT
+  name: "hid_field"
+  definition {
+    bytesize: 136
+    member_id: 0xcab49657
+    member_id: 0x4c1ed939
+    member_id: 0xe66b3c23
+    member_id: 0x07572045
+    member_id: 0x084c6689
+    member_id: 0x2d2d021c
+    member_id: 0x1d6b9203
+    member_id: 0xbb621b8f
+    member_id: 0xd62d0278
+    member_id: 0x2f3fb13b
+    member_id: 0xa00127d6
+    member_id: 0xe723c4b2
+    member_id: 0xeca141e1
+    member_id: 0x783047b2
+    member_id: 0x22f480cb
+    member_id: 0x4fa37590
+    member_id: 0xbe573241
+    member_id: 0xd3e833f4
+    member_id: 0xff13a397
+    member_id: 0x9a38a9cd
+    member_id: 0x5cb554ae
+    member_id: 0xad7c877f
+    member_id: 0x0348f16f
+    member_id: 0x897a51af
+    member_id: 0x5d1aeaf9
+  }
+}
+struct_union {
+  id: 0x41ace385
+  kind: STRUCT
+  name: "hid_field_entry"
+  definition {
+    bytesize: 32
+    member_id: 0x7c00ef52
+    member_id: 0xc368639a
+    member_id: 0xad7c8510
+    member_id: 0x10ebf2d4
+  }
+}
+struct_union {
+  id: 0xee8aaaa0
+  kind: STRUCT
+  name: "hid_input"
+  definition {
+    bytesize: 80
+    member_id: 0x7c00ef52
+    member_id: 0x5cb55ed6
+    member_id: 0x73064a1b
+    member_id: 0x0de57c43
+    member_id: 0x51372bdb
+    member_id: 0x5e7ab334
+    member_id: 0xe66b33da
+    member_id: 0x2d081c40
+  }
+}
+struct_union {
+  id: 0x2def15e8
+  kind: STRUCT
+  name: "hid_ll_driver"
+  definition {
+    bytesize: 112
+    member_id: 0x46361d1d
+    member_id: 0x698616dc
+    member_id: 0xad99a64a
+    member_id: 0xcd7d97e1
+    member_id: 0xa92414e3
+    member_id: 0x9e08e204
+    member_id: 0xb6f48f5c
+    member_id: 0x20032f9b
+    member_id: 0x3d617ac5
+    member_id: 0x61e4c7b9
+    member_id: 0x57288b3c
+    member_id: 0x807d9f19
+    member_id: 0x2d081d9c
+    member_id: 0x63760a18
+  }
+}
+struct_union {
+  id: 0x90ed88b5
+  kind: STRUCT
+  name: "hid_report"
+  definition {
+    bytesize: 2152
+    member_id: 0x7c00ef52
+    member_id: 0x3af855d4
+    member_id: 0x658221e2
+    member_id: 0xcc6aa865
+    member_id: 0x5cac8829
+    member_id: 0xe66b3fb5
+    member_id: 0xc332f49b
+    member_id: 0x22ca3b62
+    member_id: 0x32e2dd56
+    member_id: 0xd93b9dfd
+    member_id: 0xea3fca7a
+    member_id: 0x322da375
+    member_id: 0x4804413e
+    member_id: 0x2d081bb8
+  }
+}
+struct_union {
+  id: 0xdd71c7aa
+  kind: STRUCT
+  name: "hid_report_enum"
+  definition {
+    bytesize: 2072
+    member_id: 0xbe7c87cd
+    member_id: 0x0e9c0750
+    member_id: 0x45e9fdd0
+  }
+}
+struct_union {
+  id: 0x8d238799
+  kind: STRUCT
+  name: "hid_report_id"
+  definition {
+    bytesize: 4
+    member_id: 0x2f9c1ebb
+  }
+}
+struct_union {
+  id: 0xdcc24511
+  kind: STRUCT
+  name: "hid_usage"
+  definition {
+    bytesize: 24
+    member_id: 0x1f443f36
+    member_id: 0xd333cb06
+    member_id: 0xdaf5a26c
+    member_id: 0xe4c2f902
+    member_id: 0x0098fbc5
+    member_id: 0x5408eb89
+    member_id: 0x5ce53b06
+    member_id: 0xf6527f43
+    member_id: 0xb327fb86
+    member_id: 0x21a14485
+    member_id: 0x149f4f99
+  }
+}
+struct_union {
+  id: 0xb6099d09
+  kind: STRUCT
+  name: "hid_usage_id"
+  definition {
+    bytesize: 12
+    member_id: 0xeaee801b
+    member_id: 0x1757263e
+    member_id: 0xec42fdae
+  }
+}
+struct_union {
+  id: 0x7abbe318
+  kind: STRUCT
+  name: "hlist_bl_head"
+  definition {
+    bytesize: 8
+    member_id: 0x1ff26c3e
+  }
+}
+struct_union {
+  id: 0x7f2c93f7
+  kind: STRUCT
+  name: "hlist_bl_node"
+  definition {
+    bytesize: 16
+    member_id: 0x11e65bc2
+    member_id: 0x5e3b8973
+  }
+}
+struct_union {
+  id: 0x5e8dc7f4
+  kind: STRUCT
+  name: "hlist_head"
+  definition {
+    bytesize: 8
+    member_id: 0x1fffced6
+  }
+}
+struct_union {
+  id: 0x49a73111
+  kind: STRUCT
+  name: "hlist_node"
+  definition {
+    bytesize: 16
+    member_id: 0x11ebf92a
+    member_id: 0x5e38e1c9
+  }
+}
+struct_union {
+  id: 0xdf9f948b
+  kind: STRUCT
+  name: "hlist_nulls_head"
+  definition {
+    bytesize: 8
+    member_id: 0x1fdb6cf4
+  }
+}
+struct_union {
+  id: 0xdb2fb9a5
+  kind: STRUCT
+  name: "hlist_nulls_node"
+  definition {
+    bytesize: 16
+    member_id: 0x11cf5b08
+    member_id: 0x5e31c941
+  }
+}
+struct_union {
+  id: 0x76513fcc
+  kind: STRUCT
+  name: "hotplug_slot"
+  definition {
+    bytesize: 48
+    member_id: 0xafb7f6ab
+    member_id: 0xc807bb4d
+    member_id: 0x2c412ef8
+    member_id: 0x4a9652fb
+    member_id: 0x413b0c0e
+  }
+}
+struct_union {
+  id: 0x1624abd5
+  kind: STRUCT
+  name: "hotplug_slot_ops"
+  definition {
+    bytesize: 72
+    member_id: 0xd0725d42
+    member_id: 0xc7de10d0
+    member_id: 0x78465be5
+    member_id: 0x7a882c59
+    member_id: 0xa9079cd6
+    member_id: 0x022f008e
+    member_id: 0x9c3a679c
+    member_id: 0x5089d640
+    member_id: 0xf32d4080
+  }
+}
+struct_union {
+  id: 0xcd7704bf
+  kind: STRUCT
+  name: "hrtimer"
+  definition {
+    bytesize: 72
+    member_id: 0x0f4eedc8
+    member_id: 0x313ff873
+    member_id: 0xab75b859
+    member_id: 0x85da81e7
+    member_id: 0x72daa704
+    member_id: 0x648f25ee
+    member_id: 0x19add46f
+    member_id: 0x149367ac
+    member_id: 0x2d081e2a
+  }
+}
+struct_union {
+  id: 0x2bfb1e57
+  kind: STRUCT
+  name: "hrtimer_clock_base"
+  definition {
+    bytesize: 64
+    member_id: 0x73c33355
+    member_id: 0xad7c8938
+    member_id: 0x2f7cd756
+    member_id: 0xfaa95cb5
+    member_id: 0xad515797
+    member_id: 0x22776f34
+    member_id: 0xcec1755a
+    member_id: 0x9b0d1fb7
+  }
+}
+struct_union {
+  id: 0x24199318
+  kind: STRUCT
+  name: "hrtimer_cpu_base"
+  definition {
+    bytesize: 576
+    member_id: 0x2d244e18
+    member_id: 0x51431868
+    member_id: 0xf4838cd1
+    member_id: 0xad4aaa69
+    member_id: 0x06d507a2
+    member_id: 0xba47f0d6
+    member_id: 0x5b9eadfb
+    member_id: 0xaa82e2a6
+    member_id: 0x3354e0c8
+    member_id: 0x3d7c5cec
+    member_id: 0xc0b0a815
+    member_id: 0x7e72c641
+    member_id: 0xebec3231
+    member_id: 0x81fdf941
+    member_id: 0xefe07c73
+    member_id: 0x4639302c
+    member_id: 0x3e2fe4e8
+  }
+}
+struct_union {
+  id: 0x78099bb5
+  kind: STRUCT
+  name: "hrtimer_sleeper"
+  definition {
+    bytesize: 80
+    member_id: 0x1dce6e8e
+    member_id: 0x9c3a2a75
+  }
+}
+struct_union {
+  id: 0xe496c8a2
+  kind: STRUCT
+  name: "hv_ops"
+  definition {
+    bytesize: 72
+    member_id: 0xca3b484b
+    member_id: 0x62f6d986
+    member_id: 0x7f825805
+    member_id: 0x5e95afb2
+    member_id: 0xdec375c9
+    member_id: 0xc8b8629b
+    member_id: 0x73627a10
+    member_id: 0x7e407b75
+    member_id: 0xc972e404
+  }
+}
+struct_union {
+  id: 0xdb3efff0
+  kind: STRUCT
+  name: "hvc_struct"
+  definition {
+    bytesize: 584
+    member_id: 0x48b9180d
+    member_id: 0x2d1feaec
+    member_id: 0xad5e2822
+    member_id: 0xfde70709
+    member_id: 0xef8e399f
+    member_id: 0xd729cec6
+    member_id: 0x5abaf1c1
+    member_id: 0xc821afee
+    member_id: 0xafb8df5d
+    member_id: 0x314e3194
+    member_id: 0xfff50d81
+    member_id: 0xa03044f2
+    member_id: 0x435b96af
+    member_id: 0x1120c818
+    member_id: 0x2d5bfb37
+  }
+}
+struct_union {
+  id: 0xf181ace2
+  kind: STRUCT
+  name: "hw_perf_event"
+  definition {
+    bytesize: 192
+    member_id: 0x34fb349d
+    member_id: 0xb3bfc0e0
+    member_id: 0x1c049182
+    member_id: 0xf0d79630
+    member_id: 0x7294d421
+    member_id: 0x0003d871
+    member_id: 0x58a5d4c8
+    member_id: 0x34350253
+    member_id: 0xedf1791b
+    member_id: 0x34ee1231
+    member_id: 0x50a14007
+    member_id: 0x56dce16b
+  }
+}
+struct_union {
+  id: 0x0dc57607
+  kind: STRUCT
+  name: "hw_perf_event_extra"
+  definition {
+    bytesize: 24
+    member_id: 0xd137e8f5
+    member_id: 0x0f0503bf
+    member_id: 0x458b9289
+    member_id: 0x3ce0d136
+  }
+}
+struct_union {
+  id: 0x19086ca4
+  kind: STRUCT
+  name: "hw_port_info"
+  definition {
+    bytesize: 16
+    member_id: 0x7dc41384
+    member_id: 0xd3b83d9b
+  }
+}
+struct_union {
+  id: 0x7d88e7d5
+  kind: STRUCT
+  name: "hwrng"
+  definition {
+    bytesize: 152
+    member_id: 0x0de57ce8
+    member_id: 0x1ac66ee5
+    member_id: 0x200c5c7a
+    member_id: 0x65bb5e0b
+    member_id: 0x8455130d
+    member_id: 0x4871e0f1
+    member_id: 0x593a5132
+    member_id: 0xb8e19b3b
+    member_id: 0x7c00e44a
+    member_id: 0xce703d24
+    member_id: 0x963d804e
+    member_id: 0x0cb031de
+  }
+}
+struct_union {
+  id: 0x00a70faf
+  kind: STRUCT
+  name: "hwspinlock"
+  definition {
+    bytesize: 24
+    member_id: 0xf1deb46e
+    member_id: 0x2d1fe864
+    member_id: 0x59119163
+  }
+}
+struct_union {
+  id: 0x14c0b4cf
+  kind: STRUCT
+  name: "hwspinlock_device"
+  definition {
+    bytesize: 24
+    member_id: 0xce3bbab3
+    member_id: 0xafb3c733
+    member_id: 0x41fdd0f0
+    member_id: 0x392a7dd4
+    member_id: 0x2d28e7e6
+  }
+}
+struct_union {
+  id: 0x55733825
+  kind: STRUCT
+  name: "hwspinlock_ops"
+  definition {
+    bytesize: 24
+    member_id: 0x8779ee23
+    member_id: 0x815e88bb
+    member_id: 0xc4be0498
+  }
+}
+struct_union {
+  id: 0xb82581e5
+  kind: STRUCT
+  name: "i2c_adapter"
+  definition {
+    bytesize: 1216
+    member_id: 0x4a965250
+    member_id: 0x8604dd3f
+    member_id: 0x5a21819e
+    member_id: 0x3c8dab57
+    member_id: 0x53c021b3
+    member_id: 0x3d9661fa
+    member_id: 0xdf96f122
+    member_id: 0x54a4a7be
+    member_id: 0x4f8c9ace
+    member_id: 0xce1acbef
+    member_id: 0x3f80502f
+    member_id: 0xd1c5155c
+    member_id: 0x0dc6099d
+    member_id: 0xdc65c001
+    member_id: 0x1ad9bdad
+    member_id: 0x3bb591b4
+    member_id: 0x7545cc7a
+    member_id: 0x2a77a834
+    member_id: 0xae4d69ac
+    member_id: 0x931375de
+  }
+}
+struct_union {
+  id: 0x9c3d8016
+  kind: STRUCT
+  name: "i2c_adapter_quirks"
+  definition {
+    bytesize: 24
+    member_id: 0x2dfaa76d
+    member_id: 0x49b08c59
+    member_id: 0x7c672de6
+    member_id: 0x5c23fe19
+    member_id: 0xeeb21770
+    member_id: 0x1e8b2d23
+  }
+}
+struct_union {
+  id: 0x84ff51c0
+  kind: STRUCT
+  name: "i2c_algorithm"
+  definition {
+    bytesize: 40
+    member_id: 0x80f1dc21
+    member_id: 0x9abcfab8
+    member_id: 0x20b3b280
+    member_id: 0xcaf81962
+    member_id: 0x7daa945a
+  }
+}
+struct_union {
+  id: 0x94069e92
+  kind: STRUCT
+  name: "i2c_board_info"
+  definition {
+    bytesize: 80
+    member_id: 0x5c4f1bfe
+    member_id: 0x2da1b7bf
+    member_id: 0x24e4e5b0
+    member_id: 0x863c483a
+    member_id: 0x38c654ae
+    member_id: 0xf7c3f586
+    member_id: 0x6e4d81cc
+    member_id: 0xb36c4a5a
+    member_id: 0x19740daa
+    member_id: 0xdc64f0fb
+    member_id: 0x99159514
+  }
+}
+struct_union {
+  id: 0x3c04aff6
+  kind: STRUCT
+  name: "i2c_bus_recovery_info"
+  definition {
+    bytesize: 104
+    member_id: 0x26de94f4
+    member_id: 0x78771baa
+    member_id: 0x6c555792
+    member_id: 0x0de9cd61
+    member_id: 0xb84a83d2
+    member_id: 0xc7ab38a4
+    member_id: 0x1b86c00a
+    member_id: 0xa0e3f293
+    member_id: 0x0f8ce379
+    member_id: 0x80786192
+    member_id: 0xff5a94db
+    member_id: 0xecad2822
+    member_id: 0x32cfd28c
+  }
+}
+struct_union {
+  id: 0xe3d969a8
+  kind: STRUCT
+  name: "i2c_client"
+  definition {
+    bytesize: 976
+    member_id: 0x2da1ba5f
+    member_id: 0x24e4efd9
+    member_id: 0x0dc2afe6
+    member_id: 0xbdffad6c
+    member_id: 0xce1ac1e2
+    member_id: 0x17b23bfd
+    member_id: 0x99159a36
+    member_id: 0x9a203f42
+    member_id: 0xd049376f
+  }
+}
+struct_union {
+  id: 0x4a7c47b9
+  kind: STRUCT
+  name: "i2c_dev_desc"
+  definition {
+    bytesize: 48
+    member_id: 0x64e42014
+    member_id: 0xce0b8482
+    member_id: 0x24bc951e
+    member_id: 0x1d58be89
+  }
+}
+struct_union {
+  id: 0x009408f1
+  kind: STRUCT
+  name: "i2c_device_id"
+  definition {
+    bytesize: 32
+    member_id: 0x0dc2a2dd
+    member_id: 0x6d08a251
+  }
+}
+struct_union {
+  id: 0x85c36dfe
+  kind: STRUCT
+  name: "i2c_device_identity"
+  definition {
+    bytesize: 6
+    member_id: 0xc6dcb028
+    member_id: 0x44725bb9
+    member_id: 0x74ab0220
+  }
+}
+struct_union {
+  id: 0xe3f1c27c
+  kind: STRUCT
+  name: "i2c_driver"
+  definition {
+    bytesize: 280
+    member_id: 0x8604d9de
+    member_id: 0xd778ec2c
+    member_id: 0xb4ae4933
+    member_id: 0x25f9c0aa
+    member_id: 0x9ef8a0c7
+    member_id: 0x8778e04f
+    member_id: 0x9160ef4d
+    member_id: 0xd4ad4b1f
+    member_id: 0xc4fe5161
+    member_id: 0x9878e916
+    member_id: 0xb406a310
+    member_id: 0x1bbcf6b9
+    member_id: 0x2da189ea
+  }
+}
+struct_union {
+  id: 0xa87f57ec
+  kind: STRUCT
+  name: "i2c_lock_operations"
+  definition {
+    bytesize: 24
+    member_id: 0x811f1f57
+    member_id: 0x2fb73624
+    member_id: 0x054e3266
+  }
+}
+struct_union {
+  id: 0x15f07039
+  kind: STRUCT
+  name: "i2c_msg"
+  definition {
+    bytesize: 16
+    member_id: 0x24c5dc26
+    member_id: 0x2d8089a0
+    member_id: 0xb8eddb2d
+    member_id: 0x9a3dadec
+  }
+}
+struct_union {
+  id: 0x07142e13
+  kind: UNION
+  name: "i2c_smbus_data"
+  definition {
+    bytesize: 34
+    member_id: 0x3caf08ba
+    member_id: 0x834f06fa
+    member_id: 0x4232e32e
+  }
+}
+struct_union {
+  id: 0x86a0a463
+  kind: STRUCT
+  name: "i2c_timings"
+  definition {
+    bytesize: 32
+    member_id: 0xd82e7b92
+    member_id: 0x318a690a
+    member_id: 0xb3ae48f4
+    member_id: 0x2d689b99
+    member_id: 0x0ffc9d38
+    member_id: 0xf0213acf
+    member_id: 0xbbd7bc53
+    member_id: 0x5bdafb13
+  }
+}
+struct_union {
+  id: 0x00447895
+  kind: STRUCT
+  name: "i3c_bus"
+  definition {
+    bytesize: 168
+    member_id: 0x1d84c3f4
+    member_id: 0xcc4808a3
+    member_id: 0x5a20b8b0
+    member_id: 0x8709c295
+    member_id: 0x8ab3e875
+    member_id: 0xb7376579
+    member_id: 0x2dc44534
+  }
+}
+struct_union {
+  id: 0x13e38c46
+  kind: STRUCT
+  name: "i3c_ccc_cmd"
+  definition {
+    bytesize: 24
+    member_id: 0xe65e5168
+    member_id: 0xcc067b05
+    member_id: 0x431209be
+    member_id: 0x2c982314
+    member_id: 0x6d0d728f
+  }
+}
+struct_union {
+  id: 0x96600939
+  kind: STRUCT
+  name: "i3c_ccc_cmd_dest"
+  definition {
+    bytesize: 24
+    member_id: 0x24048314
+    member_id: 0xa72a5ddc
+  }
+}
+struct_union {
+  id: 0x444d9145
+  kind: STRUCT
+  name: "i3c_ccc_cmd_payload"
+  definition {
+    bytesize: 16
+    member_id: 0xb89498e9
+    member_id: 0xff8a9de8
+  }
+}
+struct_union {
+  id: 0x5a4da184
+  kind: STRUCT
+  name: "i3c_dev_boardinfo"
+  definition {
+    bytesize: 40
+    member_id: 0x0fa6c6af
+    member_id: 0xa088567d
+    member_id: 0x0ca5688d
+    member_id: 0x741b4e70
+    member_id: 0xf7c3f2ea
+  }
+}
+struct_union {
+  id: 0x13d8858f
+  kind: STRUCT
+  name: "i3c_dev_desc"
+  definition {
+    bytesize: 128
+    member_id: 0x64e42014
+    member_id: 0xcd0f9fce
+    member_id: 0x8037a98d
+    member_id: 0x92f5ddb1
+    member_id: 0xce0a8660
+    member_id: 0x2dc0240f
+  }
+}
+struct_union {
+  id: 0xe7fad7ce
+  kind: STRUCT
+  name: "i3c_device"
+  definition {
+    bytesize: 928
+    member_id: 0xce1ac149
+    member_id: 0x87d4415a
+    member_id: 0xdadaa1d6
+  }
+}
+struct_union {
+  id: 0x7023a491
+  kind: STRUCT
+  name: "i3c_device_ibi_info"
+  definition {
+    bytesize: 56
+    member_id: 0xd22cb699
+    member_id: 0x5503fbb7
+    member_id: 0x1c761191
+    member_id: 0x1c310d96
+    member_id: 0x3a05c0dc
+    member_id: 0xf957acc9
+  }
+}
+struct_union {
+  id: 0x1c7570c6
+  kind: STRUCT
+  name: "i3c_device_id"
+  definition {
+    bytesize: 16
+    member_id: 0x4e660a08
+    member_id: 0xc7d03741
+    member_id: 0xf96d97af
+    member_id: 0x440b16c3
+    member_id: 0x6b305499
+    member_id: 0xffab3f98
+  }
+}
+struct_union {
+  id: 0x539c11fe
+  kind: STRUCT
+  name: "i3c_device_info"
+  definition {
+    bytesize: 24
+    member_id: 0x741b46b9
+    member_id: 0x924bde0a
+    member_id: 0xc74a8b1e
+    member_id: 0x0ca5641e
+    member_id: 0xca5e8958
+    member_id: 0x9b184179
+    member_id: 0x8bf84633
+    member_id: 0xc66e0163
+    member_id: 0xa41c9648
+    member_id: 0xd9558ca9
+    member_id: 0x5c23ff34
+    member_id: 0x7c6720b2
+  }
+}
+struct_union {
+  id: 0xa22917ec
+  kind: STRUCT
+  name: "i3c_driver"
+  definition {
+    bytesize: 200
+    member_id: 0xd4ad4c68
+    member_id: 0xd778c72d
+    member_id: 0xb4ae572f
+    member_id: 0xc4ff9e8c
+  }
+}
+struct_union {
+  id: 0x907bbcc4
+  kind: STRUCT
+  name: "i3c_generic_ibi_pool"
+  definition {
+    bytesize: 56
+    member_id: 0x2d1fec85
+    member_id: 0x1c31076a
+    member_id: 0x4f7b290c
+    member_id: 0x4b26b3b7
+    member_id: 0x1e4ad0bd
+    member_id: 0xf91c8b6c
+  }
+}
+struct_union {
+  id: 0xfb966736
+  kind: STRUCT
+  name: "i3c_generic_ibi_slot"
+  definition {
+    bytesize: 88
+    member_id: 0x0fa6c6af
+    member_id: 0x85f02375
+  }
+}
+struct_union {
+  id: 0xfb3bb098
+  kind: STRUCT
+  name: "i3c_i2c_dev_desc"
+  definition {
+    bytesize: 32
+    member_id: 0x0fa6c6af
+    member_id: 0x3a7c3290
+    member_id: 0x8a0f4d2e
+  }
+}
+struct_union {
+  id: 0xb6fd4c56
+  kind: STRUCT
+  name: "i3c_ibi_payload"
+  definition {
+    bytesize: 16
+    member_id: 0xb8405030
+    member_id: 0xffab3f98
+  }
+}
+struct_union {
+  id: 0x82b63741
+  kind: STRUCT
+  name: "i3c_ibi_setup"
+  definition {
+    bytesize: 16
+    member_id: 0x1c761548
+    member_id: 0x1c31076a
+    member_id: 0xf957a9ba
+  }
+}
+struct_union {
+  id: 0x2ac43c51
+  kind: STRUCT
+  name: "i3c_ibi_slot"
+  definition {
+    bytesize: 72
+    member_id: 0xd6e667b7
+    member_id: 0xce3785c0
+    member_id: 0xb8405747
+    member_id: 0xff8a9211
+  }
+}
+struct_union {
+  id: 0x21f4fbc9
+  kind: STRUCT
+  name: "i3c_master_controller"
+  definition {
+    bytesize: 2360
+    member_id: 0xce1ac149
+    member_id: 0x701b6c48
+    member_id: 0xd4be13cc
+    member_id: 0xafb9e195
+    member_id: 0xfb8eebcd
+    member_id: 0x39ba03d7
+    member_id: 0x2dd987ac
+    member_id: 0xdad060a0
+    member_id: 0x22fae297
+  }
+}
+struct_union {
+  id: 0xf764c311
+  kind: STRUCT
+  name: "i3c_master_controller_ops"
+  definition {
+    bytesize: 136
+    member_id: 0x50429302
+    member_id: 0x1639ef00
+    member_id: 0x225ec8a2
+    member_id: 0x63a5e94a
+    member_id: 0xa7152c15
+    member_id: 0xe7001841
+    member_id: 0xa40f0045
+    member_id: 0x2e87bba3
+    member_id: 0x69f0c452
+    member_id: 0x2bbedee9
+    member_id: 0x00e54f1d
+    member_id: 0xaa53641e
+    member_id: 0x54cc58dc
+    member_id: 0x6d19de42
+    member_id: 0x839dca78
+    member_id: 0xc2d0cf11
+    member_id: 0xfd896136
+  }
+}
+struct_union {
+  id: 0x8f1826df
+  kind: STRUCT
+  name: "i3c_priv_xfer"
+  definition {
+    bytesize: 24
+    member_id: 0xe65e5168
+    member_id: 0xb8949657
+    member_id: 0xffd3da57
+    member_id: 0x6d0d728f
+  }
+}
+struct_union {
+  id: 0x079549c7
+  kind: STRUCT
+  name: "iattr"
+  definition {
+    bytesize: 80
+    member_id: 0xb29d64d4
+    member_id: 0xb45d76b8
+    member_id: 0x3ab4cae6
+    member_id: 0x33adf6e7
+    member_id: 0xce69e6d3
+    member_id: 0xa90e4c48
+    member_id: 0x068478ef
+    member_id: 0x7af3be67
+    member_id: 0x90455469
+  }
+}
+struct_union {
+  id: 0x131bd315
+  kind: STRUCT
+  name: "icc_node"
+  definition {
+    bytesize: 120
+    member_id: 0xcc480c42
+    member_id: 0x0de57809
+    member_id: 0x3483c04f
+    member_id: 0x617cd7a5
+    member_id: 0x866a71db
+    member_id: 0xd7b584ec
+    member_id: 0x39bd6d5d
+    member_id: 0x6ef6398b
+    member_id: 0x34734629
+    member_id: 0x0feca5d4
+    member_id: 0xf1705a3f
+    member_id: 0x89393563
+    member_id: 0xb0c8b6a9
+    member_id: 0xdb38de26
+    member_id: 0xff8a93af
+  }
+}
+struct_union {
+  id: 0xf572fd14
+  kind: STRUCT
+  name: "icc_node_data"
+  definition {
+    bytesize: 16
+    member_id: 0x0f7b5863
+    member_id: 0xd56cc177
+  }
+}
+struct_union {
+  id: 0x8795f794
+  kind: STRUCT
+  name: "icc_path"
+  definition {
+    bytesize: 16
+    member_id: 0x0de57ce8
+    member_id: 0x4f24dfe4
+    member_id: 0x94cc591f
+  }
+}
+struct_union {
+  id: 0xe1480d10
+  kind: STRUCT
+  name: "icc_provider"
+  definition {
+    bytesize: 104
+    member_id: 0x082afb6d
+    member_id: 0x62a262f3
+    member_id: 0x3df35b61
+    member_id: 0xd7bdf897
+    member_id: 0x2ffb164d
+    member_id: 0xd0a236fe
+    member_id: 0x3025ab5e
+    member_id: 0x0b59f17d
+    member_id: 0xce3bbcca
+    member_id: 0x85cad0f3
+    member_id: 0xec1c21de
+    member_id: 0xff8a91a7
+  }
+}
+struct_union {
+  id: 0x604a2bda
+  kind: STRUCT
+  name: "icc_req"
+  definition {
+    bytesize: 48
+    member_id: 0x6561a8f0
+    member_id: 0x0f7b51a1
+    member_id: 0xce3bb27a
+    member_id: 0x3a2d3e17
+    member_id: 0xd56cc14f
+    member_id: 0xf1705556
+    member_id: 0x89393e5d
+  }
+}
+struct_union {
+  id: 0x869137c4
+  kind: STRUCT
+  name: "icmp_mib"
+  definition {
+    bytesize: 224
+    member_id: 0x0d690b57
+  }
+}
+struct_union {
+  id: 0xaddbca2c
+  kind: STRUCT
+  name: "icmpmsg_mib"
+  definition {
+    bytesize: 4096
+    member_id: 0x0de345aa
+  }
+}
+struct_union {
+  id: 0x5d7f46a5
+  kind: STRUCT
+  name: "icmpv6_mib"
+  definition {
+    bytesize: 48
+    member_id: 0x0dd3a4f3
+  }
+}
+struct_union {
+  id: 0xf2897725
+  kind: STRUCT
+  name: "icmpv6_mib_device"
+  definition {
+    bytesize: 48
+    member_id: 0x0df37367
+  }
+}
+struct_union {
+  id: 0xd920878f
+  kind: STRUCT
+  name: "icmpv6msg_mib"
+  definition {
+    bytesize: 4096
+    member_id: 0x0de345aa
+  }
+}
+struct_union {
+  id: 0x2000f384
+  kind: STRUCT
+  name: "icmpv6msg_mib_device"
+  definition {
+    bytesize: 4096
+    member_id: 0x0de345aa
+  }
+}
+struct_union {
+  id: 0xe1a31370
+  kind: STRUCT
+  name: "ida"
+  definition {
+    bytesize: 16
+    member_id: 0x2de9701e
+  }
+}
+struct_union {
+  id: 0x04b89667
+  kind: STRUCT
+  name: "idr"
+  definition {
+    bytesize: 24
+    member_id: 0x698983ea
+    member_id: 0xb39497dd
+    member_id: 0xf67054d4
+  }
+}
+struct_union {
+  id: 0x8721fed4
+  kind: STRUCT
+  name: "ieee80211_channel"
+  definition {
+    bytesize: 64
+    member_id: 0x398cdb31
+    member_id: 0x8dd356ad
+    member_id: 0xa43e8339
+    member_id: 0xb28194ad
+    member_id: 0x2da185f6
+    member_id: 0xc493eff8
+    member_id: 0x03ff4ca2
+    member_id: 0xac9bc9eb
+    member_id: 0x813cc5f8
+    member_id: 0x90cadd40
+    member_id: 0x20beddbc
+    member_id: 0x1b6ebf70
+    member_id: 0x2ff7682c
+    member_id: 0xe5f1eaa0
+    member_id: 0xc328acd3
+  }
+}
+struct_union {
+  id: 0x7690c707
+  kind: STRUCT
+  name: "ieee80211_edmg"
+  definition {
+    bytesize: 8
+    member_id: 0xea6e0812
+    member_id: 0xe0c9586e
+  }
+}
+struct_union {
+  id: 0xc51b2b2c
+  kind: STRUCT
+  name: "ieee80211_eht_cap_elem_fixed"
+  definition {
+    bytesize: 11
+    member_id: 0xce87d15d
+    member_id: 0x34339037
+  }
+}
+struct_union {
+  id: 0x608c9042
+  kind: STRUCT
+  name: "ieee80211_eht_mcs_nss_supp"
+  definition {
+    bytesize: 9
+    member_id: 0x32de102a
+  }
+}
+struct_union {
+  id: 0xa6cee90b
+  kind: STRUCT
+  name: "ieee80211_eht_mcs_nss_supp_20mhz_only"
+  definition {
+    bytesize: 4
+    member_id: 0x5669daf4
+    member_id: 0x50cf8a81
+    member_id: 0x9d1aaa3e
+    member_id: 0x15b4396f
+  }
+}
+struct_union {
+  id: 0x312fa971
+  kind: STRUCT
+  name: "ieee80211_eht_mcs_nss_supp_bw"
+  definition {
+    bytesize: 3
+    member_id: 0x50cf8167
+    member_id: 0x9d1aaf66
+    member_id: 0x15b431b0
+  }
+}
+struct_union {
+  id: 0x4fb02048
+  kind: STRUCT
+  name: "ieee80211_freq_range"
+  definition {
+    bytesize: 12
+    member_id: 0xf4fe8ea1
+    member_id: 0xb920add3
+    member_id: 0xb580f3da
+  }
+}
+struct_union {
+  id: 0x4c7077ef
+  kind: STRUCT
+  name: "ieee80211_he_6ghz_capa"
+  definition {
+    bytesize: 2
+    member_id: 0x6e3344d6
+  }
+}
+struct_union {
+  id: 0xad549560
+  kind: STRUCT
+  name: "ieee80211_he_cap_elem"
+  definition {
+    bytesize: 17
+    member_id: 0xce4ad94e
+    member_id: 0x34505c20
+  }
+}
+struct_union {
+  id: 0x99a5bef5
+  kind: STRUCT
+  name: "ieee80211_he_mcs_nss_supp"
+  definition {
+    bytesize: 12
+    member_id: 0x91676654
+    member_id: 0x9002250d
+    member_id: 0x2e30d10f
+    member_id: 0xc6117683
+    member_id: 0x8d3b9280
+    member_id: 0xa079f47b
+  }
+}
+struct_union {
+  id: 0x15ff878a
+  kind: STRUCT
+  name: "ieee80211_ht_cap"
+  definition {
+    bytesize: 26
+    member_id: 0x20eaca1c
+    member_id: 0xa985cfb6
+    member_id: 0xd9284316
+    member_id: 0x47d5739d
+    member_id: 0x5a82189d
+    member_id: 0xa16ca1b7
+  }
+}
+struct_union {
+  id: 0xc2188e98
+  kind: STRUCT
+  name: "ieee80211_iface_combination"
+  definition {
+    bytesize: 24
+    member_id: 0x5d8109d5
+    member_id: 0x8833a085
+    member_id: 0x0039a713
+    member_id: 0xcb9a62cc
+    member_id: 0xcdc0c2e4
+    member_id: 0x4d143d91
+    member_id: 0x7a85796a
+    member_id: 0x0d748c66
+  }
+}
+struct_union {
+  id: 0x997d3c01
+  kind: STRUCT
+  name: "ieee80211_iface_limit"
+  definition {
+    bytesize: 4
+    member_id: 0x97674a7e
+    member_id: 0xf403be21
+  }
+}
+struct_union {
+  id: 0x195436be
+  kind: STRUCT
+  name: "ieee80211_mcs_info"
+  definition {
+    bytesize: 16
+    member_id: 0x72346b8d
+    member_id: 0x722e73c3
+    member_id: 0x676d00b6
+    member_id: 0xd47b3d33
+  }
+}
+struct_union {
+  id: 0xec0f8540
+  kind: STRUCT
+  name: "ieee80211_power_rule"
+  definition {
+    bytesize: 8
+    member_id: 0xc43dcec2
+    member_id: 0x5da37275
+  }
+}
+struct_union {
+  id: 0xac096dcc
+  kind: STRUCT
+  name: "ieee80211_rate"
+  definition {
+    bytesize: 12
+    member_id: 0x2da18c75
+    member_id: 0xd0ac0d62
+    member_id: 0xb2819cf0
+    member_id: 0x49a7c8f6
+  }
+}
+struct_union {
+  id: 0x5292f5ee
+  kind: STRUCT
+  name: "ieee80211_reg_rule"
+  definition {
+    bytesize: 96
+    member_id: 0x4fa48466
+    member_id: 0xd6fb86ea
+    member_id: 0xbd6c6927
+    member_id: 0x2da18b34
+    member_id: 0xc3a424d4
+    member_id: 0xdf232b09
+  }
+}
+struct_union {
+  id: 0x10625e67
+  kind: STRUCT
+  name: "ieee80211_regdomain"
+  definition {
+    bytesize: 32
+    member_id: 0x56a7265c
+    member_id: 0x9fb9aa42
+    member_id: 0xbb800d59
+    member_id: 0x81631998
+    member_id: 0xaf393dec
+  }
+}
+struct_union {
+  id: 0x370bf50e
+  kind: STRUCT
+  name: "ieee80211_sband_iftype_data"
+  definition {
+    bytesize: 128
+    member_id: 0x3f590b7c
+    member_id: 0x151c08ba
+    member_id: 0x62a47f0c
+    member_id: 0xf3eccafa
+    member_id: 0xba099737
+  }
+}
+struct_union {
+  id: 0xf02e1c56
+  kind: STRUCT
+  name: "ieee80211_sta_eht_cap"
+  definition {
+    bytesize: 53
+    member_id: 0xa182581f
+    member_id: 0xae89106e
+    member_id: 0xc00a1c17
+    member_id: 0x041e2c61
+  }
+}
+struct_union {
+  id: 0x081133cf
+  kind: STRUCT
+  name: "ieee80211_sta_he_cap"
+  definition {
+    bytesize: 55
+    member_id: 0x929fd826
+    member_id: 0x68f375dd
+    member_id: 0xb2c93231
+    member_id: 0x32166a14
+  }
+}
+struct_union {
+  id: 0xa3f15079
+  kind: STRUCT
+  name: "ieee80211_sta_ht_cap"
+  definition {
+    bytesize: 22
+    member_id: 0x1e22ba34
+    member_id: 0x31722d1e
+    member_id: 0x48e14a83
+    member_id: 0xc59f8c99
+    member_id: 0xd9284725
+  }
+}
+struct_union {
+  id: 0x5a4dc0e7
+  kind: STRUCT
+  name: "ieee80211_sta_s1g_cap"
+  definition {
+    bytesize: 16
+    member_id: 0x5d861b13
+    member_id: 0x1ece4155
+    member_id: 0xc54f0f52
+  }
+}
+struct_union {
+  id: 0x8667cdb7
+  kind: STRUCT
+  name: "ieee80211_sta_vht_cap"
+  definition {
+    bytesize: 16
+    member_id: 0x41db1bb7
+    member_id: 0x1e7af29b
+    member_id: 0x858da26f
+  }
+}
+struct_union {
+  id: 0x732db6e9
+  kind: STRUCT
+  name: "ieee80211_supported_band"
+  definition {
+    bytesize: 104
+    member_id: 0xea6c0c26
+    member_id: 0x4c00367e
+    member_id: 0x398cd2f3
+    member_id: 0x650782f7
+    member_id: 0x12acba44
+    member_id: 0x72f67066
+    member_id: 0x4e9808a4
+    member_id: 0x6bb00a05
+    member_id: 0xbcb130f4
+    member_id: 0xaea7053f
+    member_id: 0x49a8930e
+  }
+}
+struct_union {
+  id: 0x8d9a7429
+  kind: STRUCT
+  name: "ieee80211_txrx_stypes"
+  definition {
+    bytesize: 4
+    member_id: 0x6549cc3c
+    member_id: 0x6c6104fb
+  }
+}
+struct_union {
+  id: 0x4a30d0ac
+  kind: STRUCT
+  name: "ieee80211_vht_cap"
+  definition {
+    bytesize: 12
+    member_id: 0xc4d57bf4
+    member_id: 0x09af4eeb
+  }
+}
+struct_union {
+  id: 0x8a756038
+  kind: STRUCT
+  name: "ieee80211_vht_mcs_info"
+  definition {
+    bytesize: 8
+    member_id: 0xe05d717a
+    member_id: 0x722e79e1
+    member_id: 0xf85e8a62
+    member_id: 0xd007ef72
+  }
+}
+struct_union {
+  id: 0xf190dea2
+  kind: STRUCT
+  name: "ieee80211_wmm_ac"
+  definition {
+    bytesize: 8
+    member_id: 0xa033f445
+    member_id: 0x085b4a46
+    member_id: 0x1ee75211
+    member_id: 0xb70ae771
+  }
+}
+struct_union {
+  id: 0xbbd1bd9f
+  kind: STRUCT
+  name: "ieee80211_wmm_rule"
+  definition {
+    bytesize: 64
+    member_id: 0x858f4a67
+    member_id: 0xd49198c3
+  }
+}
+struct_union {
+  id: 0xcc87604a
+  kind: STRUCT
+  name: "ieee802154_addr"
+  definition {
+    bytesize: 16
+    member_id: 0x87b449ec
+    member_id: 0xdee069f9
+    member_id: 0x39a6859a
+  }
+}
+struct_union {
+  id: 0xcbee51a2
+  kind: STRUCT
+  name: "ieee802154_hdr"
+  definition {
+    bytesize: 56
+    member_id: 0xb84e4ae2
+    member_id: 0xfa355d86
+    member_id: 0xd7e21c4a
+    member_id: 0xe95d9481
+    member_id: 0x6c922b0d
+  }
+}
+struct_union {
+  id: 0x98ac6d35
+  kind: STRUCT
+  name: "ieee802154_hdr_fc"
+  definition {
+    bytesize: 2
+    member_id: 0x1d9bc840
+    member_id: 0x39f8c8e0
+    member_id: 0x9d0a5ff2
+    member_id: 0xa64a78f5
+    member_id: 0xdbb39863
+    member_id: 0x8adaf1e5
+    member_id: 0xcd290515
+    member_id: 0x40e32c48
+    member_id: 0x35ef3ba9
+  }
+}
+struct_union {
+  id: 0x0e83fdf9
+  kind: STRUCT
+  name: "ieee802154_hw"
+  definition {
+    bytesize: 32
+    member_id: 0x19c3e87e
+    member_id: 0x2da1814e
+    member_id: 0x72332ee2
+    member_id: 0x59119163
+    member_id: 0xb05a14c2
+  }
+}
+struct_union {
+  id: 0x5d00367f
+  kind: STRUCT
+  name: "ieee802154_hw_addr_filt"
+  definition {
+    bytesize: 24
+    member_id: 0xdee06747
+    member_id: 0xfd2d921d
+    member_id: 0xb689ab72
+    member_id: 0xa30c0a0b
+  }
+}
+struct_union {
+  id: 0xf446cd86
+  kind: STRUCT
+  name: "ieee802154_ops"
+  definition {
+    bytesize: 120
+    member_id: 0x4a965250
+    member_id: 0x463654bc
+    member_id: 0x698656bf
+    member_id: 0x37e5714d
+    member_id: 0x67ebfb92
+    member_id: 0xd4971fcb
+    member_id: 0x046847c0
+    member_id: 0x436ab2e5
+    member_id: 0x71974348
+    member_id: 0xd1fc2f6b
+    member_id: 0x9c8f8f1d
+    member_id: 0x27681c02
+    member_id: 0x80e96539
+    member_id: 0x0c34191e
+    member_id: 0x9fa5cb5f
+  }
+}
+struct_union {
+  id: 0x07d5bce9
+  kind: STRUCT
+  name: "ieee802154_sechdr"
+  definition {
+    bytesize: 16
+    member_id: 0xfa8c9eb9
+    member_id: 0x8ee72011
+    member_id: 0x8a62eaf9
+    member_id: 0x8ec1ce72
+    member_id: 0xabd22e79
+    member_id: 0x369a12d0
+  }
+}
+struct_union {
+  id: 0x54cdf9fa
+  kind: STRUCT
+  name: "if_settings"
+  definition {
+    bytesize: 16
+    member_id: 0x5c135018
+    member_id: 0xd93b942f
+    member_id: 0x3c17c89c
+  }
+}
+struct_union {
+  id: 0x8b3c441e
+  kind: STRUCT
+  name: "ifacaddr6"
+  definition {
+    bytesize: 88
+    member_id: 0x39c0643f
+    member_id: 0x6fcbaed1
+    member_id: 0x55b111b3
+    member_id: 0x6dabf00a
+    member_id: 0x971567cb
+    member_id: 0x17e676e5
+    member_id: 0xdb5e306b
+    member_id: 0x892066a3
+    member_id: 0x95dac005
+  }
+}
+struct_union {
+  id: 0x41f1df67
+  kind: STRUCT
+  name: "ifla_vf_guid"
+  definition {
+    bytesize: 16
+    member_id: 0xcf9aec25
+    member_id: 0x3cad5ec0
+  }
+}
+struct_union {
+  id: 0x2eea6b28
+  kind: STRUCT
+  name: "ifla_vf_info"
+  definition {
+    bytesize: 72
+    member_id: 0xcf9aec25
+    member_id: 0xb2c91492
+    member_id: 0xf7d3dc3c
+    member_id: 0xedf40fc7
+    member_id: 0x64aca0d0
+    member_id: 0xc6fe1e21
+    member_id: 0x47fc27ee
+    member_id: 0x431e5691
+    member_id: 0x9625f4bd
+    member_id: 0xc53ca24d
+    member_id: 0x1e9937a0
+  }
+}
+struct_union {
+  id: 0x8eb5b67a
+  kind: STRUCT
+  name: "ifla_vf_stats"
+  definition {
+    bytesize: 64
+    member_id: 0x6a4eba4a
+    member_id: 0x92d853cf
+    member_id: 0xe8021494
+    member_id: 0xb5918977
+    member_id: 0x7d751410
+    member_id: 0xc47d7b23
+    member_id: 0x2b149926
+    member_id: 0xb78b6448
+  }
+}
+struct_union {
+  id: 0xf183f924
+  kind: STRUCT
+  name: "ifmap"
+  definition {
+    bytesize: 24
+    member_id: 0x499d9077
+    member_id: 0xea98a7cc
+    member_id: 0xf93eb8d5
+    member_id: 0x992f360d
+    member_id: 0x81a75281
+    member_id: 0x48a69518
+  }
+}
+struct_union {
+  id: 0x05cc7373
+  kind: STRUCT
+  name: "ifmcaddr6"
+  definition {
+    bytesize: 256
+    member_id: 0x0e07dfa8
+    member_id: 0x0c06b72f
+    member_id: 0x11f8eb33
+    member_id: 0x63dab7cd
+    member_id: 0xc15907a5
+    member_id: 0x5dc88dee
+    member_id: 0xb689518b
+    member_id: 0x93969879
+    member_id: 0x929b0f59
+    member_id: 0xfc51a126
+    member_id: 0x85464695
+    member_id: 0xe87640c7
+    member_id: 0xe33bc190
+    member_id: 0x4b16f22f
+    member_id: 0x95dac8a9
+  }
+}
+struct_union {
+  id: 0xf28d2496
+  kind: STRUCT
+  name: "ifreq"
+  definition {
+    bytesize: 40
+    member_id: 0xe955f32e
+    member_id: 0x1e1e1d10
+  }
+}
+struct_union {
+  id: 0x968ac51c
+  kind: STRUCT
+  name: "iio_buffer"
+  definition {
+    bytesize: 208
+    member_id: 0xb528e73e
+    member_id: 0x2d5bf5db
+    member_id: 0x3a4df9b6
+    member_id: 0xa07479bb
+    member_id: 0x6c303a84
+    member_id: 0x2c454328
+    member_id: 0xb1989cbe
+    member_id: 0x35b4dbe4
+    member_id: 0xf0b91df4
+    member_id: 0x7a78ae75
+    member_id: 0xc18602c8
+    member_id: 0xe22751df
+    member_id: 0x4d66fbde
+    member_id: 0x7ebb1d84
+    member_id: 0x5f81013f
+    member_id: 0x9638544d
+    member_id: 0xce7032e5
+  }
+}
+struct_union {
+  id: 0x15fa2a27
+  kind: STRUCT
+  name: "iio_buffer_access_funcs"
+  definition {
+    bytesize: 104
+    member_id: 0x776ae721
+    member_id: 0x4872ac31
+    member_id: 0x7da23215
+    member_id: 0xcf681777
+    member_id: 0x342f20a4
+    member_id: 0x4b5ea168
+    member_id: 0x17c47cae
+    member_id: 0x18873ff0
+    member_id: 0x2b39e177
+    member_id: 0x98c81dcf
+    member_id: 0x0da2fc22
+    member_id: 0xae94b5a3
+    member_id: 0x840364bd
+    member_id: 0x2d2d0e5f
+  }
+}
+struct_union {
+  id: 0x37169913
+  kind: STRUCT
+  name: "iio_buffer_setup_ops"
+  definition {
+    bytesize: 40
+    member_id: 0xa093e6ac
+    member_id: 0xa738ef9c
+    member_id: 0x819a572d
+    member_id: 0x8b7f06e4
+    member_id: 0x1c59f3ef
+  }
+}
+struct_union {
+  id: 0xd72c8f32
+  kind: STRUCT
+  name: "iio_chan_spec"
+  definition {
+    bytesize: 152
+    member_id: 0x5c20fa3d
+    member_id: 0x4cd5a4c0
+    member_id: 0x7cc948f8
+    member_id: 0x30e2614b
+    member_id: 0xa9990381
+    member_id: 0x4364afcf
+    member_id: 0xb5304ec7
+    member_id: 0xdae74659
+    member_id: 0xd9827d70
+    member_id: 0xc774b544
+    member_id: 0x4d23cb08
+    member_id: 0x09093234
+    member_id: 0x588c9540
+    member_id: 0x4b9843cc
+    member_id: 0xb3a10702
+    member_id: 0xcc85e7c7
+    member_id: 0xd2804251
+    member_id: 0x19e42f07
+    member_id: 0x6f49e81a
+    member_id: 0xc887e988
+    member_id: 0xe250c05c
+    member_id: 0xc2a5c4de
+    member_id: 0x304d338c
+  }
+}
+struct_union {
+  id: 0xad7f59fb
+  kind: STRUCT
+  name: "iio_chan_spec_ext_info"
+  definition {
+    bytesize: 40
+    member_id: 0x0de57ce8
+    member_id: 0x3b30b9e2
+    member_id: 0x48531f7b
+    member_id: 0x340e9533
+    member_id: 0x910f145b
+  }
+}
+struct_union {
+  id: 0xccd34661
+  kind: STRUCT
+  name: "iio_channel"
+  definition {
+    bytesize: 24
+    member_id: 0x3d384dd8
+    member_id: 0x4c826b43
+    member_id: 0xff8a90cb
+  }
+}
+struct_union {
+  id: 0x486e9c99
+  kind: STRUCT
+  name: "iio_dev"
+  definition {
+    bytesize: 1096
+    member_id: 0x8421c9a6
+    member_id: 0xce1ac5a8
+    member_id: 0x33f1381b
+    member_id: 0x94dbf2ad
+    member_id: 0xda32aae8
+    member_id: 0x01624dd9
+    member_id: 0x8d60f2c2
+    member_id: 0x692031ff
+    member_id: 0x7a78a7dd
+    member_id: 0xa1c1d80a
+    member_id: 0xe9bbb3b8
+    member_id: 0x6cd82727
+    member_id: 0xea77b552
+    member_id: 0x5facbc84
+    member_id: 0x0de575d7
+    member_id: 0x05170a91
+    member_id: 0xcd6bb7a2
+    member_id: 0x2e0bc19e
+    member_id: 0x59119673
+  }
+}
+struct_union {
+  id: 0x30a49fb4
+  kind: STRUCT
+  name: "iio_event_spec"
+  definition {
+    bytesize: 40
+    member_id: 0x5c839712
+    member_id: 0x2e17083a
+    member_id: 0x006218db
+    member_id: 0x925b0a11
+    member_id: 0x4ab66ba1
+    member_id: 0xa35b6145
+  }
+}
+struct_union {
+  id: 0xa2cbac0e
+  kind: STRUCT
+  name: "iio_info"
+  definition {
+    bytesize: 144
+    member_id: 0x902743aa
+    member_id: 0x4d50f0eb
+    member_id: 0x915d2f62
+    member_id: 0xfe8d1585
+    member_id: 0x7ce6fd69
+    member_id: 0xa435e19f
+    member_id: 0xc6d968d4
+    member_id: 0xf9d5cedb
+    member_id: 0x26d2a405
+    member_id: 0x2d1f9b2d
+    member_id: 0xb9240432
+    member_id: 0xac3808e0
+    member_id: 0x42dff916
+    member_id: 0x63106a08
+    member_id: 0xabe5b2a9
+    member_id: 0x94fd0d5e
+    member_id: 0xc36ed4fb
+    member_id: 0x712b765b
+  }
+}
+struct_union {
+  id: 0x133963d3
+  kind: STRUCT
+  name: "iio_mount_matrix"
+  definition {
+    bytesize: 72
+    member_id: 0x46b31b12
+  }
+}
+struct_union {
+  id: 0xc8994ffb
+  kind: STRUCT
+  name: "iio_poll_func"
+  definition {
+    bytesize: 56
+    member_id: 0x3d384dd8
+    member_id: 0xa8e2bc23
+    member_id: 0xfc64178d
+    member_id: 0x5c31fd64
+    member_id: 0x0ddfef10
+    member_id: 0x99159221
+    member_id: 0x5acac4ca
+  }
+}
+struct_union {
+  id: 0x1a065450
+  kind: STRUCT
+  name: "iio_subirq"
+  definition {
+    bytesize: 1
+    member_id: 0x3a2d3ebc
+  }
+}
+struct_union {
+  id: 0x4e06fb40
+  kind: STRUCT
+  name: "iio_trigger"
+  definition {
+    bytesize: 1368
+    member_id: 0xafbf01cd
+    member_id: 0x4a9656b1
+    member_id: 0xcc480580
+    member_id: 0x0de57421
+    member_id: 0xce1ac1e2
+    member_id: 0x7c00e7d8
+    member_id: 0xa2fdf321
+    member_id: 0x99fa9afe
+    member_id: 0x9c6dc805
+    member_id: 0x56a16eeb
+    member_id: 0x76c2672c
+    member_id: 0xde39de75
+    member_id: 0x01a8c232
+    member_id: 0xf3acaabf
+    member_id: 0xf5a4777f
+  }
+}
+struct_union {
+  id: 0x9952c4d4
+  kind: STRUCT
+  name: "iio_trigger_ops"
+  definition {
+    bytesize: 24
+    member_id: 0x164de68f
+    member_id: 0x063e1868
+    member_id: 0x0d93a039
+  }
+}
+struct_union {
+  id: 0x6d25e07f
+  kind: STRUCT
+  name: "in6_addr"
+  definition {
+    bytesize: 16
+    member_id: 0xb4bb2348
+  }
+}
+struct_union {
+  id: 0xa54936d5
+  kind: STRUCT
+  name: "in_addr"
+  definition {
+    bytesize: 4
+    member_id: 0x90a656a4
+  }
+}
+struct_union {
+  id: 0x58502715
+  kind: STRUCT
+  name: "in_device"
+  definition {
+    bytesize: 392
+    member_id: 0xce0b4469
+    member_id: 0x94d42b1b
+    member_id: 0xb7dcfc4d
+    member_id: 0x3bd4631e
+    member_id: 0x4743c5f5
+    member_id: 0x9c4c6ca6
+    member_id: 0x906eca72
+    member_id: 0x9ee8235b
+    member_id: 0x66f17147
+    member_id: 0x5509541e
+    member_id: 0x4b1c218f
+    member_id: 0x2c0a6078
+    member_id: 0xda5c950e
+    member_id: 0x1be5681f
+    member_id: 0x7cce4d55
+    member_id: 0x25e57a10
+    member_id: 0xeb62c586
+    member_id: 0x510548ab
+    member_id: 0xb1ee1de3
+    member_id: 0x3a2fb3c2
+    member_id: 0x282498ec
+    member_id: 0x14f6fd8c
+    member_id: 0x56a72054
+  }
+}
+struct_union {
+  id: 0x71bf78cf
+  kind: STRUCT
+  name: "in_ifaddr"
+  definition {
+    bytesize: 120
+    member_id: 0x637724be
+    member_id: 0xa57a8ed4
+    member_id: 0x9188bce9
+    member_id: 0x56a726f7
+    member_id: 0xb46a6c97
+    member_id: 0x6f633b58
+    member_id: 0xc795fcb9
+    member_id: 0x7b3fb3e8
+    member_id: 0x119b718e
+    member_id: 0x5db2294e
+    member_id: 0x2b3621e1
+    member_id: 0x5afec1a1
+    member_id: 0xdb88cf38
+    member_id: 0x73b27347
+    member_id: 0x49f4246b
+    member_id: 0xd13377ca
+    member_id: 0xa09b26bb
+    member_id: 0xb121c544
+  }
+}
+struct_union {
+  id: 0xc4c18dc3
+  kind: STRUCT
+  name: "inet6_dev"
+  definition {
+    bytesize: 1352
+    member_id: 0xce0b4469
+    member_id: 0x94d42b1b
+    member_id: 0x7ee20f50
+    member_id: 0x9c6ad1bd
+    member_id: 0x552fe83c
+    member_id: 0xc678c4d8
+    member_id: 0xd51be805
+    member_id: 0xa9223a07
+    member_id: 0x9e4751e5
+    member_id: 0xd4582df4
+    member_id: 0xa17f5a1c
+    member_id: 0x87575c81
+    member_id: 0x99f606f1
+    member_id: 0xa2c5b2db
+    member_id: 0x615ec3f5
+    member_id: 0x8cc10130
+    member_id: 0xe8a0e215
+    member_id: 0xbbc5489e
+    member_id: 0x435609a4
+    member_id: 0x65503a42
+    member_id: 0x16f3f61b
+    member_id: 0x045bfd9c
+    member_id: 0xa8e2c1a0
+    member_id: 0x846096f3
+    member_id: 0x2d18681e
+    member_id: 0xb7dcfe39
+    member_id: 0x7d1e2280
+    member_id: 0x3bd46e6c
+    member_id: 0x059dad50
+    member_id: 0x77af78a1
+    member_id: 0x36b3b9b5
+    member_id: 0x6b4beb7f
+    member_id: 0x141e1b04
+    member_id: 0xb9d78a9f
+    member_id: 0x4a3e87f9
+    member_id: 0x5f4c5fc3
+    member_id: 0x95399c15
+    member_id: 0x7f1030b7
+    member_id: 0x95dac184
+    member_id: 0x66aa8ae5
+  }
+}
+struct_union {
+  id: 0x89a37894
+  kind: STRUCT
+  name: "inet_bind_hashbucket"
+  definition {
+    bytesize: 16
+    member_id: 0x2d1fec85
+    member_id: 0x152992ef
+  }
+}
+struct_union {
+  id: 0x28cc893a
+  kind: STRUCT
+  name: "inet_ehash_bucket"
+  definition {
+    bytesize: 8
+    member_id: 0x15a8845d
+  }
+}
+struct_union {
+  id: 0xce0ac13e
+  kind: STRUCT
+  name: "inet_frag_queue"
+  definition {
+    bytesize: 192
+    member_id: 0x0ff5b15e
+    member_id: 0x20068778
+    member_id: 0x1dd18615
+    member_id: 0x2d1fe623
+    member_id: 0xb7dcff3e
+    member_id: 0x4313e44f
+    member_id: 0xdc7af762
+    member_id: 0x38fae966
+    member_id: 0xb6f904c8
+    member_id: 0xb862f741
+    member_id: 0x15c3a7f9
+    member_id: 0x6383498a
+    member_id: 0x2ddb6d82
+    member_id: 0xcf7d6fa4
+    member_id: 0x77717339
+    member_id: 0x95dacb84
+  }
+}
+struct_union {
+  id: 0x20585ece
+  kind: STRUCT
+  name: "inet_frags"
+  definition {
+    bytesize: 128
+    member_id: 0x2ca65a96
+    member_id: 0x0470e987
+    member_id: 0xa4170694
+    member_id: 0xd70f7af3
+    member_id: 0x90b83af0
+    member_id: 0x5ed9c6c0
+    member_id: 0x35e99c1b
+    member_id: 0xb7dcfa91
+    member_id: 0xc494a473
+  }
+}
+struct_union {
+  id: 0x5760fe36
+  kind: STRUCT
+  name: "inet_hashinfo"
+  definition {
+    bytesize: 80
+    member_id: 0xe8a98a46
+    member_id: 0xe1aa6ce2
+    member_id: 0xbd9b2317
+    member_id: 0x4921975c
+    member_id: 0x23af1384
+    member_id: 0xb592ec0b
+    member_id: 0x5c4ffa8d
+    member_id: 0x24a66c8c
+    member_id: 0xd8ee181c
+    member_id: 0x574956e4
+    member_id: 0xc23ae739
+    member_id: 0xc18525b9
+  }
+}
+struct_union {
+  id: 0xc09d4dab
+  kind: STRUCT
+  name: "inet_listen_hashbucket"
+  definition {
+    bytesize: 16
+    member_id: 0x2d1fec85
+    member_id: 0x5106ba16
+  }
+}
+struct_union {
+  id: 0x151842c6
+  kind: STRUCT
+  name: "inet_peer_base"
+  definition {
+    bytesize: 24
+    member_id: 0x82e5fa96
+    member_id: 0x2decf477
+    member_id: 0x9d345b6b
+  }
+}
+struct_union {
+  id: 0x53a9065e
+  kind: STRUCT
+  name: "inet_timewait_death_row"
+  definition {
+    bytesize: 128
+    member_id: 0xe2540127
+    member_id: 0x2120b303
+    member_id: 0x198b6cfe
+  }
+}
+struct_union {
+  id: 0x4456a43e
+  kind: STRUCT
+  name: "inode"
+  definition {
+    bytesize: 704
+    member_id: 0x4bfa0565
+    member_id: 0x5a533102
+    member_id: 0xdfbcd436
+    member_id: 0xf7de4eb3
+    member_id: 0xac8a1716
+    member_id: 0xfffdd592
+    member_id: 0x2665f7b3
+    member_id: 0x811fd17d
+    member_id: 0x0b4fee75
+    member_id: 0x4ddb9822
+    member_id: 0xa327e1be
+    member_id: 0x47eee67e
+    member_id: 0x350e85d0
+    member_id: 0xc0a2ce86
+    member_id: 0x426ac742
+    member_id: 0xa8200ce9
+    member_id: 0xfea11fab
+    member_id: 0xe3b9ec16
+    member_id: 0x0adf36ee
+    member_id: 0xd8699378
+    member_id: 0x015a04f2
+    member_id: 0xfe916464
+    member_id: 0xf84ea954
+    member_id: 0x7a5f1cd6
+    member_id: 0x5911dd75
+    member_id: 0x6fa1a70e
+    member_id: 0x483b8d41
+    member_id: 0xe17fe409
+    member_id: 0xde7fd39f
+    member_id: 0x10d1f0ba
+    member_id: 0xd1bb1f30
+    member_id: 0x02644289
+    member_id: 0x315b8712
+    member_id: 0x683d38c1
+    member_id: 0x4eca23b5
+    member_id: 0xc1e6ff96
+    member_id: 0x35c171e2
+    member_id: 0x01184216
+    member_id: 0x5da31216
+    member_id: 0x2d1f7404
+    member_id: 0x8d92da03
+    member_id: 0x34db220a
+    member_id: 0xb1540c02
+    member_id: 0x3e2f835f
+    member_id: 0x3f66e156
+    member_id: 0x5bafa68d
+    member_id: 0x26826d33
+    member_id: 0x3ec4525e
+    member_id: 0x79ad2302
+    member_id: 0x5b9ce8bd
+    member_id: 0x0cb03e11
+    member_id: 0x7e005c8d
+    member_id: 0xd66fa8cb
+    member_id: 0x68bd901c
+  }
+}
+struct_union {
+  id: 0x22563b05
+  kind: STRUCT
+  name: "inode_operations"
+  definition {
+    bytesize: 192
+    member_id: 0xd455a2f6
+    member_id: 0x4336f8ab
+    member_id: 0xc2284f3c
+    member_id: 0x3eaa603e
+    member_id: 0x9c769862
+    member_id: 0x0fae6cff
+    member_id: 0x5592548f
+    member_id: 0xe4d4d2c4
+    member_id: 0x8db74514
+    member_id: 0x7cc537b5
+    member_id: 0x9c0998f4
+    member_id: 0x98ea5c80
+    member_id: 0xd86d68a7
+    member_id: 0x0b82dae9
+    member_id: 0xd057157a
+    member_id: 0x1b95d57a
+    member_id: 0x53870b05
+    member_id: 0xc78df42c
+    member_id: 0xbc21a604
+    member_id: 0x1374ba81
+    member_id: 0x35dcd5d1
+    member_id: 0x6f1d74c1
+    member_id: 0x3242b618
+  }
+}
+struct_union {
+  id: 0x43337176
+  kind: STRUCT
+  name: "inotify_group_private_data"
+  definition {
+    bytesize: 40
+    member_id: 0x607ab1a7
+    member_id: 0xb0053fbe
+    member_id: 0x9f3016c8
+  }
+}
+struct_union {
+  id: 0xc13aa4db
+  kind: STRUCT
+  name: "input_absinfo"
+  definition {
+    bytesize: 24
+    member_id: 0xa007f621
+    member_id: 0x82fc471c
+    member_id: 0x3c3f43d7
+    member_id: 0x76ffbb77
+    member_id: 0x4ad49fc7
+    member_id: 0x7ff733c9
+  }
+}
+struct_union {
+  id: 0x6b4bc1db
+  kind: STRUCT
+  name: "input_dev"
+  definition {
+    bytesize: 1608
+    member_id: 0x0de57ce8
+    member_id: 0x30665df0
+    member_id: 0xb7aa2038
+    member_id: 0xcc67e003
+    member_id: 0x29981a8d
+    member_id: 0xb1d9de7e
+    member_id: 0xfcb2ad30
+    member_id: 0x63eb9a3b
+    member_id: 0x249a96b6
+    member_id: 0x8bef7e99
+    member_id: 0xc5ab05e4
+    member_id: 0xb374da8b
+    member_id: 0x94cea1fa
+    member_id: 0x9c5258d3
+    member_id: 0x5c364e77
+    member_id: 0xead6e095
+    member_id: 0x64c72300
+    member_id: 0xcb594713
+    member_id: 0x83fba385
+    member_id: 0xc8e0239f
+    member_id: 0xfda1eba1
+    member_id: 0x2bc3a3ee
+    member_id: 0x8b2e8815
+    member_id: 0x1dd184fd
+    member_id: 0x52e0ed5f
+    member_id: 0xeb62513d
+    member_id: 0x4e736bf5
+    member_id: 0x20d6cc0c
+    member_id: 0x23373c52
+    member_id: 0xae699d06
+    member_id: 0x89342c67
+    member_id: 0xad987839
+    member_id: 0xcd7c4c4f
+    member_id: 0x7f82e175
+    member_id: 0x0a6350ff
+    member_id: 0x1ef489e6
+    member_id: 0x8afeed6a
+    member_id: 0xad89884a
+    member_id: 0x85e87d65
+    member_id: 0xf4b15a60
+    member_id: 0xce1acb44
+    member_id: 0x94d399f9
+    member_id: 0x0fa6c014
+    member_id: 0xc3b33daa
+    member_id: 0xee8d0adc
+    member_id: 0xa9bb3229
+    member_id: 0xb523f202
+    member_id: 0x5af27e71
+    member_id: 0xc9407182
+    member_id: 0x2d0815b5
+    member_id: 0x63760c18
+    member_id: 0xac894653
+    member_id: 0xe0f6323b
+  }
+}
+struct_union {
+  id: 0x9c3ee5c7
+  kind: STRUCT
+  name: "input_dev_poller"
+  definition {
+    bytesize: 168
+    member_id: 0x5e1affd2
+    member_id: 0x995fc20c
+    member_id: 0x1bf83634
+    member_id: 0x85c0f03e
+    member_id: 0x73064a1b
+    member_id: 0xd6084e06
+  }
+}
+struct_union {
+  id: 0x32df7251
+  kind: STRUCT
+  name: "input_device_id"
+  definition {
+    bytesize: 200
+    member_id: 0x2d2a2b11
+    member_id: 0xb3b001a6
+    member_id: 0x7a86e471
+    member_id: 0xdf7eb8dd
+    member_id: 0xa6893bf7
+    member_id: 0xb1c5a6f1
+    member_id: 0xfcaed2e1
+    member_id: 0x63f7ea9e
+    member_id: 0x2486e5e7
+    member_id: 0x8bf30318
+    member_id: 0xc5b77731
+    member_id: 0xb368ac36
+    member_id: 0x94d2d65d
+    member_id: 0x9c4e2512
+    member_id: 0x29846bfc
+    member_id: 0x5e2beb6a
+  }
+}
+struct_union {
+  id: 0xcd4e15d4
+  kind: STRUCT
+  name: "input_handle"
+  definition {
+    bytesize: 80
+    member_id: 0x917966b3
+    member_id: 0xadd3a5f7
+    member_id: 0x0de5752a
+    member_id: 0xce29a84a
+    member_id: 0xf941b37c
+    member_id: 0x5bdcd967
+    member_id: 0xa82d27b6
+    member_id: 0x2d081c40
+  }
+}
+struct_union {
+  id: 0x44e22e3f
+  kind: STRUCT
+  name: "input_handler"
+  definition {
+    bytesize: 128
+    member_id: 0x917966b3
+    member_id: 0x0a428f2d
+    member_id: 0x11f8a01d
+    member_id: 0xa33d7985
+    member_id: 0xe6179934
+    member_id: 0xbd40b11d
+    member_id: 0x8da69b4b
+    member_id: 0x46161e31
+    member_id: 0xe9217627
+    member_id: 0xc8402dbb
+    member_id: 0x0de5759a
+    member_id: 0xc4fd78b2
+    member_id: 0x94d3952d
+    member_id: 0x0fa6c515
+    member_id: 0x2d081dc1
+  }
+}
+struct_union {
+  id: 0x48c45b15
+  kind: STRUCT
+  name: "input_id"
+  definition {
+    bytesize: 8
+    member_id: 0xb3b00547
+    member_id: 0x7a86ee53
+    member_id: 0xdf7ebc65
+    member_id: 0xa6893bfb
+  }
+}
+struct_union {
+  id: 0x89c605e5
+  kind: STRUCT
+  name: "input_keymap_entry"
+  definition {
+    bytesize: 40
+    member_id: 0x2ddb63e4
+    member_id: 0xb8b6390a
+    member_id: 0xadd10541
+    member_id: 0xcba7df81
+    member_id: 0xc48a5711
+  }
+}
+struct_union {
+  id: 0x4d998a91
+  kind: STRUCT
+  name: "input_mt"
+  definition {
+    bytesize: 32
+    member_id: 0x92652cdf
+    member_id: 0x1c13a2df
+    member_id: 0x68b14895
+    member_id: 0x2d2d08bb
+    member_id: 0x1632ddc9
+    member_id: 0x4d8e8dd6
+    member_id: 0x4f8ee0c6
+  }
+}
+struct_union {
+  id: 0xb0fb3405
+  kind: STRUCT
+  name: "input_mt_pos"
+  definition {
+    bytesize: 4
+    member_id: 0xa09bd4d0
+    member_id: 0xff5abb3c
+  }
+}
+struct_union {
+  id: 0x1606b8f1
+  kind: STRUCT
+  name: "input_mt_slot"
+  definition {
+    bytesize: 64
+    member_id: 0x2bc3fdd0
+    member_id: 0x1632d37c
+    member_id: 0x20138e78
+  }
+}
+struct_union {
+  id: 0x7d5454d7
+  kind: STRUCT
+  name: "input_value"
+  definition {
+    bytesize: 8
+    member_id: 0x5cbed63e
+    member_id: 0x5408e9fa
+    member_id: 0xa007fb1a
+  }
+}
+struct_union {
+  id: 0x3268ee29
+  kind: STRUCT
+  name: "internal_state"
+  definition {
+    bytesize: 4
+    member_id: 0x1a8b8780
+  }
+}
+struct_union {
+  id: 0x98a855cd
+  kind: STRUCT
+  name: "interval_tree_node"
+  definition {
+    bytesize: 48
+    member_id: 0xfb47df92
+    member_id: 0x46284efd
+    member_id: 0x265c78ce
+    member_id: 0x01ca355d
+  }
+}
+struct_union {
+  id: 0xa2b31df2
+  kind: STRUCT
+  name: "io_alloc_cache"
+  definition {
+    bytesize: 16
+    member_id: 0x7c8daa94
+    member_id: 0x9851f2d5
+  }
+}
+struct_union {
+  id: 0xb7f41573
+  kind: STRUCT
+  name: "io_buffer"
+  definition {
+    bytesize: 32
+    member_id: 0x7c00ef52
+    member_id: 0x24c024d3
+    member_id: 0xb8e3f320
+    member_id: 0x077a6e5d
+    member_id: 0x29a6bbbc
+  }
+}
+struct_union {
+  id: 0xc7b192bd
+  kind: STRUCT
+  name: "io_buffer_list"
+  definition {
+    bytesize: 32
+    member_id: 0x376f5eba
+    member_id: 0x29a6b069
+    member_id: 0x3c84b9cf
+    member_id: 0xeccf704c
+    member_id: 0xb5b2be96
+    member_id: 0xa8db62a4
+  }
+}
+struct_union {
+  id: 0x2862b65b
+  kind: STRUCT
+  name: "io_cache_entry"
+  definition {
+    bytesize: 16
+    member_id: 0x0f3ca99f
+  }
+}
+struct_union {
+  id: 0xc82222ca
+  kind: STRUCT
+  name: "io_cmd_data"
+  definition {
+    bytesize: 64
+    member_id: 0xbf9f3e0b
+    member_id: 0xffb1eb69
+  }
+}
+struct_union {
+  id: 0xb923f832
+  kind: STRUCT
+  name: "io_comp_batch"
+  definition {
+    bytesize: 24
+    member_id: 0x0faca82f
+    member_id: 0x88c3da72
+    member_id: 0x4a5553b1
+  }
+}
+struct_union {
+  id: 0xc98c655a
+  kind: STRUCT
+  name: "io_context"
+  definition {
+    bytesize: 104
+    member_id: 0x053332c8
+    member_id: 0xa3c1586b
+    member_id: 0x082edd7f
+    member_id: 0x2d1fe547
+    member_id: 0xd9df7ea6
+    member_id: 0x6e0e0c77
+    member_id: 0xe0811809
+    member_id: 0x7ae46d96
+  }
+}
+struct_union {
+  id: 0x500dbf75
+  kind: STRUCT
+  name: "io_cq"
+  definition {
+    bytesize: 56
+    member_id: 0xe97bac4e
+    member_id: 0x1fe6f198
+    member_id: 0x38a2ba12
+    member_id: 0x3f60dd39
+    member_id: 0x2d2d00aa
+  }
+}
+struct_union {
+  id: 0x8199a9b2
+  kind: STRUCT
+  name: "io_cqe"
+  definition {
+    bytesize: 16
+    member_id: 0x8e76f8e7
+    member_id: 0x16588d85
+    member_id: 0x34aa3f0a
+  }
+}
+struct_union {
+  id: 0xdb10e164
+  kind: STRUCT
+  name: "io_ev_fd"
+  definition {
+    bytesize: 40
+    member_id: 0xea12dcb9
+    member_id: 0x60ae210b
+    member_id: 0x95dac0b5
+    member_id: 0x9a234e2e
+    member_id: 0xafffd6e6
+  }
+}
+struct_union {
+  id: 0x6f540d85
+  kind: STRUCT
+  name: "io_file_table"
+  definition {
+    bytesize: 24
+    member_id: 0xc7947d1f
+    member_id: 0x8941b34c
+    member_id: 0x8ff85140
+  }
+}
+struct_union {
+  id: 0x9352af9c
+  kind: STRUCT
+  name: "io_fixed_file"
+  definition {
+    bytesize: 8
+    member_id: 0x4a5470bb
+  }
+}
+struct_union {
+  id: 0xbbf2c351
+  kind: STRUCT
+  name: "io_hash_bucket"
+  definition {
+    bytesize: 64
+    member_id: 0x2d1fec85
+    member_id: 0x7c8dae75
+  }
+}
+struct_union {
+  id: 0xea603000
+  kind: STRUCT
+  name: "io_hash_table"
+  definition {
+    bytesize: 16
+    member_id: 0x63ea5795
+    member_id: 0xf67f55a9
+  }
+}
+struct_union {
+  id: 0x6a290c0b
+  kind: STRUCT
+  name: "io_kiocb"
+  definition {
+    bytesize: 216
+    member_id: 0x3d8d751b
+    member_id: 0xfcec5c24
+    member_id: 0x072679da
+    member_id: 0x5793ee90
+    member_id: 0x2d2d0fe7
+    member_id: 0x71ba730f
+    member_id: 0xec8a4829
+    member_id: 0x9c3a2ba9
+    member_id: 0x37c1d51d
+    member_id: 0x3f659a69
+    member_id: 0x32a8ea3c
+    member_id: 0x9a23499a
+    member_id: 0x9f51371c
+    member_id: 0x8b906365
+    member_id: 0x303584ad
+    member_id: 0x5581205d
+    member_id: 0x82cdc39d
+    member_id: 0x55ae82c7
+    member_id: 0xa26b49c5
+    member_id: 0xd6f49657
+  }
+}
+struct_union {
+  id: 0x80b6103a
+  kind: STRUCT
+  name: "io_mapped_ubuf"
+  definition {
+    bytesize: 32
+    member_id: 0xaed1b29d
+    member_id: 0x5ab488ff
+    member_id: 0x3f72155d
+    member_id: 0x2dfe16f9
+    member_id: 0x4e206c34
+  }
+}
+struct_union {
+  id: 0x00d424ec
+  kind: STRUCT
+  name: "io_pgtable_cfg"
+  definition {
+    bytesize: 88
+    member_id: 0x2a70887a
+    member_id: 0xa55690a4
+    member_id: 0x11d4a82c
+    member_id: 0xbfc310ee
+    member_id: 0x8f0302a4
+    member_id: 0x5ca776de
+    member_id: 0xb2de3315
+    member_id: 0x36c41f11
+  }
+}
+struct_union {
+  id: 0x4661f894
+  kind: STRUCT
+  name: "io_pgtable_ops"
+  definition {
+    bytesize: 40
+    member_id: 0x8dda0968
+    member_id: 0xa60cf7ca
+    member_id: 0xfed93d41
+    member_id: 0xd12939ed
+    member_id: 0x80f69829
+  }
+}
+struct_union {
+  id: 0x898bdb04
+  kind: STRUCT
+  name: "io_poll"
+  definition {
+    bytesize: 64
+    member_id: 0xbf9f3e0b
+    member_id: 0xb54d95a7
+    member_id: 0x114cfa02
+    member_id: 0x4f8c91e3
+    member_id: 0x201ba81a
+  }
+}
+struct_union {
+  id: 0x796260d9
+  kind: STRUCT
+  name: "io_restriction"
+  definition {
+    bytesize: 24
+    member_id: 0x441b519d
+    member_id: 0x72fe1939
+    member_id: 0x73a2ed89
+    member_id: 0x1d876734
+    member_id: 0x51372e71
+  }
+}
+struct_union {
+  id: 0x64a438fc
+  kind: STRUCT
+  name: "io_ring_ctx"
+  definition {
+    bytesize: 1344
+    member_id: 0x2c717118
+    member_id: 0x246f2632
+    member_id: 0x7adfc058
+    member_id: 0x73d59397
+    member_id: 0xa442a679
+    member_id: 0xe399ddfe
+    member_id: 0xe005d64f
+    member_id: 0xfd9d6e09
+    member_id: 0x9a06e741
+    member_id: 0x0a9e5eb3
+    member_id: 0xa5b54910
+    member_id: 0xbf23b1d6
+    member_id: 0xfaf2130e
+    member_id: 0x24274642
+    member_id: 0x2961aaa2
+    member_id: 0x2401b002
+    member_id: 0x5c36e07a
+    member_id: 0x3044c584
+    member_id: 0x7bce6fcb
+    member_id: 0x5272cd4d
+    member_id: 0xf7f7e37b
+    member_id: 0x66f24f37
+    member_id: 0x9beef7f7
+    member_id: 0x79d40ff6
+    member_id: 0xd965dce8
+    member_id: 0x5ec15b6d
+    member_id: 0xd2b7f290
+    member_id: 0x55faf029
+    member_id: 0xdd1ec491
+    member_id: 0x042a2075
+    member_id: 0xf2c3ca3b
+    member_id: 0x2bc8f70b
+    member_id: 0xfa3ad812
+    member_id: 0xcbce197b
+    member_id: 0x36605bb5
+    member_id: 0x859f0b38
+    member_id: 0x3dd48798
+    member_id: 0x1547851d
+    member_id: 0x31444ba6
+    member_id: 0x1d068fc6
+    member_id: 0xd2c00a64
+  }
+}
+struct_union {
+  id: 0x71511504
+  kind: STRUCT
+  name: "io_rings"
+  definition {
+    bytesize: 320
+    member_id: 0x0f618a01
+    member_id: 0x1d5443ea
+    member_id: 0x90914bf4
+    member_id: 0x59a9a4d1
+    member_id: 0x85579e1c
+    member_id: 0xc9e08424
+    member_id: 0x367f5e32
+    member_id: 0x9cf97af5
+    member_id: 0xdd74d5b6
+    member_id: 0x456f3d17
+    member_id: 0xa1a6b71e
+  }
+}
+struct_union {
+  id: 0x89ee685d
+  kind: STRUCT
+  name: "io_rsrc_data"
+  definition {
+    bytesize: 80
+    member_id: 0xec8a4a14
+    member_id: 0xeb016e84
+    member_id: 0xd1e7b9bd
+    member_id: 0xaeaf989d
+    member_id: 0x9a234e2e
+    member_id: 0x1d70b953
+    member_id: 0xffcbb008
+  }
+}
+struct_union {
+  id: 0x978e65c1
+  kind: STRUCT
+  name: "io_rsrc_node"
+  definition {
+    bytesize: 72
+    member_id: 0x9a69dc1f
+    member_id: 0x0fa6cf6d
+    member_id: 0x1bd908e5
+    member_id: 0xa7978683
+    member_id: 0x46cb6a51
+    member_id: 0x1d220120
+  }
+}
+struct_union {
+  id: 0x0c427f17
+  kind: STRUCT
+  name: "io_rsrc_put"
+  definition {
+    bytesize: 32
+    member_id: 0x7c00ef52
+    member_id: 0xd537e74c
+    member_id: 0x33ae9a78
+  }
+}
+struct_union {
+  id: 0x6be8c637
+  kind: STRUCT
+  name: "io_sq_data"
+  definition {
+    bytesize: 160
+    member_id: 0x9af0bed8
+    member_id: 0x53dc4767
+    member_id: 0x2d4b38e1
+    member_id: 0x47f610c5
+    member_id: 0xfc7d453c
+    member_id: 0x2058e120
+    member_id: 0x1d06822f
+    member_id: 0x0767645e
+    member_id: 0xc2e2fdee
+    member_id: 0x6f689d99
+    member_id: 0x72c08196
+    member_id: 0x154265da
+  }
+}
+struct_union {
+  id: 0x633815f0
+  kind: STRUCT
+  name: "io_submit_link"
+  definition {
+    bytesize: 16
+    member_id: 0xb54aa37b
+    member_id: 0x267f139a
+  }
+}
+struct_union {
+  id: 0x42189fc0
+  kind: STRUCT
+  name: "io_submit_state"
+  definition {
+    bytesize: 88
+    member_id: 0xe029edcd
+    member_id: 0x989c0466
+    member_id: 0x55ddaf31
+    member_id: 0x54f5b38b
+    member_id: 0x738a39a9
+    member_id: 0x89760567
+    member_id: 0xc2797150
+  }
+}
+struct_union {
+  id: 0xb51e9b76
+  kind: STRUCT
+  name: "io_task_work"
+  definition {
+    bytesize: 16
+    member_id: 0x0f544335
+    member_id: 0x21a4f665
+  }
+}
+struct_union {
+  id: 0x9095e0a9
+  kind: STRUCT
+  name: "io_tlb_area"
+  definition {
+    bytesize: 16
+    member_id: 0x8b8d6a51
+    member_id: 0xad7c8938
+    member_id: 0x2d1fe506
+  }
+}
+struct_union {
+  id: 0x2fb54871
+  kind: STRUCT
+  name: "io_tlb_mem"
+  definition {
+    bytesize: 80
+    member_id: 0x46a6e2d9
+    member_id: 0x82b28e14
+    member_id: 0x50278d72
+    member_id: 0xd9600ae9
+    member_id: 0x8b8d6afa
+    member_id: 0x1c3575d0
+    member_id: 0x70b41242
+    member_id: 0x4d604309
+    member_id: 0xfc95e22f
+    member_id: 0xcb0d6ddd
+    member_id: 0xb5aea22c
+    member_id: 0xc5c94b61
+    member_id: 0x4f7c1d3a
+  }
+}
+struct_union {
+  id: 0xe770f257
+  kind: STRUCT
+  name: "io_tlb_slot"
+  definition {
+    bytesize: 24
+    member_id: 0x0c63d6dd
+    member_id: 0x2fd193ed
+    member_id: 0x7c96abf7
+  }
+}
+struct_union {
+  id: 0x6d8d3492
+  kind: STRUCT
+  name: "io_uring"
+  definition {
+    bytesize: 128
+    member_id: 0xb593b12a
+    member_id: 0xee54a3ca
+  }
+}
+struct_union {
+  id: 0xe4ba5b3d
+  kind: STRUCT
+  name: "io_uring_buf"
+  definition {
+    bytesize: 16
+    member_id: 0x24c02d11
+    member_id: 0xb8e3ff08
+    member_id: 0x077a64fa
+    member_id: 0xbb52da47
+  }
+}
+struct_union {
+  id: 0xaab0d999
+  kind: STRUCT
+  name: "io_uring_buf_ring"
+  definition {
+    bytesize: 16
+    member_id: 0x34be27ed
+  }
+}
+struct_union {
+  id: 0x0a897e7f
+  kind: STRUCT
+  name: "io_uring_cmd"
+  definition {
+    bytesize: 64
+    member_id: 0xbf9f3e0b
+    member_id: 0x1a29c57b
+    member_id: 0x39e9b87f
+    member_id: 0x2fa36869
+    member_id: 0x2da18f51
+    member_id: 0xafb272a1
+  }
+}
+struct_union {
+  id: 0xbdaad85b
+  kind: STRUCT
+  name: "io_uring_cqe"
+  definition {
+    bytesize: 16
+    member_id: 0x8e76f8e7
+    member_id: 0x16588d85
+    member_id: 0x2d8ea362
+    member_id: 0x66d9eb14
+  }
+}
+struct_union {
+  id: 0xadc3fd26
+  kind: STRUCT
+  name: "io_uring_sqe"
+  definition {
+    bytesize: 64
+    member_id: 0xfc76ecf4
+    member_id: 0x2ddb6802
+    member_id: 0x080fe703
+    member_id: 0x7f1dbfb8
+    member_id: 0x3ec9f2e1
+    member_id: 0x3435281c
+    member_id: 0xb8e3f320
+    member_id: 0x3fccc8c0
+    member_id: 0x8e76f84c
+    member_id: 0x330a99ba
+    member_id: 0x2a4197f6
+    member_id: 0x3403549d
+    member_id: 0x341df286
+  }
+}
+struct_union {
+  id: 0xd4fcaf6b
+  kind: STRUCT
+  name: "io_uring_task"
+  definition {
+    bytesize: 320
+    member_id: 0xd8c78590
+    member_id: 0x2654d7e1
+    member_id: 0xd458e40b
+    member_id: 0xa5f16598
+    member_id: 0x2de972da
+    member_id: 0x2058edda
+    member_id: 0xa818c2d6
+    member_id: 0x6af718e5
+    member_id: 0x79f74293
+    member_id: 0x223fa1fa
+  }
+}
+struct_union {
+  id: 0x9b8668d4
+  kind: STRUCT
+  name: "io_wq"
+  definition {
+    bytesize: 96
+    member_id: 0x72c08965
+    member_id: 0x8a7b13bd
+    member_id: 0x83eaed13
+    member_id: 0x6300a4a2
+    member_id: 0x58c38e55
+    member_id: 0x3c046673
+    member_id: 0x01bd5464
+    member_id: 0x9c3a213a
+    member_id: 0x21010b52
+  }
+}
+struct_union {
+  id: 0xd2ff77b3
+  kind: STRUCT
+  name: "io_wq_hash"
+  definition {
+    bytesize: 40
+    member_id: 0x9af0bed8
+    member_id: 0x8dc50032
+    member_id: 0x2058ee9b
+  }
+}
+struct_union {
+  id: 0x0dc4dee3
+  kind: STRUCT
+  name: "io_wq_work"
+  definition {
+    bytesize: 16
+    member_id: 0x7c62584a
+    member_id: 0x2d2d05d9
+    member_id: 0x50b4ec37
+  }
+}
+struct_union {
+  id: 0x25eef749
+  kind: STRUCT
+  name: "io_wq_work_list"
+  definition {
+    bytesize: 16
+    member_id: 0x1fc1f8dc
+    member_id: 0x2649c61f
+  }
+}
+struct_union {
+  id: 0xb17f19c3
+  kind: STRUCT
+  name: "io_wq_work_node"
+  definition {
+    bytesize: 8
+    member_id: 0x11d5cf20
+  }
+}
+struct_union {
+  id: 0xe86112c3
+  kind: STRUCT
+  name: "io_wqe"
+  definition {
+    bytesize: 704
+    member_id: 0x2d244e18
+    member_id: 0x542cf718
+    member_id: 0x0f122dc7
+    member_id: 0xe04707e6
+    member_id: 0x8903ccb4
+    member_id: 0x201bada5
+    member_id: 0x22c56794
+    member_id: 0x4004bf96
+    member_id: 0xaa7a9d82
+  }
+}
+struct_union {
+  id: 0x5b5a14cd
+  kind: STRUCT
+  name: "io_wqe_acct"
+  definition {
+    bytesize: 48
+    member_id: 0xa9bd5db8
+    member_id: 0x02a4136b
+    member_id: 0xad5e2c8d
+    member_id: 0xd6072070
+    member_id: 0x2d2447da
+    member_id: 0x0369992b
+    member_id: 0x2d5bf6fd
+  }
+}
+struct_union {
+  id: 0xca1740f9
+  kind: STRUCT
+  name: "ioam6_pernet_data"
+  definition {
+    bytesize: 384
+    member_id: 0x2d4b3c00
+    member_id: 0x4b4cad27
+    member_id: 0xc70d2bad
+  }
+}
+struct_union {
+  id: 0xe01fdb16
+  kind: STRUCT
+  name: "iomap"
+  definition {
+    bytesize: 80
+    member_id: 0x24bffc55
+    member_id: 0x9b3b7fe3
+    member_id: 0xb5ff48a9
+    member_id: 0x5cc79008
+    member_id: 0x2df9cd8e
+    member_id: 0x51f02800
+    member_id: 0x57d05f3f
+    member_id: 0x73246f04
+    member_id: 0x917961c4
+    member_id: 0x48213d44
+    member_id: 0x2d081c40
+  }
+}
+struct_union {
+  id: 0xfa0729e1
+  kind: STRUCT
+  name: "iomap_page_ops"
+  definition {
+    bytesize: 16
+    member_id: 0x1a103474
+    member_id: 0x3189af2e
+  }
+}
+struct_union {
+  id: 0xd1e2d78b
+  kind: STRUCT
+  name: "iommu_device"
+  definition {
+    bytesize: 48
+    member_id: 0x7c00ef52
+    member_id: 0xafb5e416
+    member_id: 0x6e4d8897
+    member_id: 0xce3bba18
+    member_id: 0xe612bd08
+  }
+}
+struct_union {
+  id: 0x4adbec55
+  kind: STRUCT
+  name: "iommu_dma_cookie"
+  definition {
+    bytesize: 304
+    member_id: 0x5c2638e4
+    member_id: 0x348f5d6c
+    member_id: 0x771c8cad
+    member_id: 0xa2e7db0a
+    member_id: 0xad898480
+  }
+}
+struct_union {
+  id: 0x9012611a
+  kind: STRUCT
+  name: "iommu_domain"
+  definition {
+    bytesize: 88
+    member_id: 0x5c135018
+    member_id: 0xafbb0d65
+    member_id: 0xa5569d87
+    member_id: 0x3a570a9f
+    member_id: 0x78c9a63b
+    member_id: 0x90810ddc
+    member_id: 0x1e5ce302
+    member_id: 0x34d349be
+  }
+}
+struct_union {
+  id: 0x3c416994
+  kind: STRUCT
+  name: "iommu_domain_geometry"
+  definition {
+    bytesize: 24
+    member_id: 0x7d5f705c
+    member_id: 0xaafcf649
+    member_id: 0x6a723e5d
+  }
+}
+struct_union {
+  id: 0xd9d65ece
+  kind: STRUCT
+  name: "iommu_domain_ops"
+  definition {
+    bytesize: 120
+    member_id: 0xce6fa034
+    member_id: 0xa3103fbf
+    member_id: 0xdfdf0c6c
+    member_id: 0x8dd9586f
+    member_id: 0xa60faa4e
+    member_id: 0xfeda6a8a
+    member_id: 0xd12a6978
+    member_id: 0xba50d077
+    member_id: 0xc1a6e711
+    member_id: 0x9f65e3e7
+    member_id: 0x80f5146e
+    member_id: 0x5a282cb1
+    member_id: 0xe86f5ee1
+    member_id: 0x3f6d9e6d
+    member_id: 0xfeae5d12
+  }
+}
+struct_union {
+  id: 0x706158d6
+  kind: STRUCT
+  name: "iommu_fault"
+  definition {
+    bytesize: 64
+    member_id: 0x5cb0fbc1
+    member_id: 0x64002eb5
+    member_id: 0x36d168ea
+  }
+}
+struct_union {
+  id: 0x982077da
+  kind: STRUCT
+  name: "iommu_fault_event"
+  definition {
+    bytesize: 80
+    member_id: 0x7bfe1f40
+    member_id: 0x7c00e44a
+  }
+}
+struct_union {
+  id: 0x043ce534
+  kind: STRUCT
+  name: "iommu_fault_page_request"
+  definition {
+    bytesize: 40
+    member_id: 0x2d8eaae1
+    member_id: 0x22663355
+    member_id: 0x8ab9b44b
+    member_id: 0xf2c23813
+    member_id: 0x24c024d3
+    member_id: 0xf255b74d
+  }
+}
+struct_union {
+  id: 0x8f9269e8
+  kind: STRUCT
+  name: "iommu_fault_param"
+  definition {
+    bytesize: 80
+    member_id: 0xf91dda73
+    member_id: 0xff8a9de8
+    member_id: 0xf332289b
+    member_id: 0x2d4b3cab
+  }
+}
+struct_union {
+  id: 0x82107bd5
+  kind: STRUCT
+  name: "iommu_fault_unrecoverable"
+  definition {
+    bytesize: 32
+    member_id: 0xbbfcbb3e
+    member_id: 0x2d8ea7da
+    member_id: 0x22663a8f
+    member_id: 0xf2c23813
+    member_id: 0x24c024d3
+    member_id: 0xae57f1d8
+  }
+}
+struct_union {
+  id: 0x047c1691
+  kind: STRUCT
+  name: "iommu_flush_ops"
+  definition {
+    bytesize: 24
+    member_id: 0xdf4d1053
+    member_id: 0x795ad311
+    member_id: 0xce55476e
+  }
+}
+struct_union {
+  id: 0x65ecac3c
+  kind: STRUCT
+  name: "iommu_fwspec"
+  definition {
+    bytesize: 24
+    member_id: 0xafb5edd4
+    member_id: 0x22809337
+    member_id: 0x2da185b7
+    member_id: 0x3e07f1e9
+    member_id: 0x7637ba60
+  }
+}
+struct_union {
+  id: 0x0f8cb195
+  kind: STRUCT
+  name: "iommu_group"
+  definition {
+    bytesize: 272
+    member_id: 0x452b206c
+    member_id: 0xeb0d43ae
+    member_id: 0x33ed5762
+    member_id: 0x0ff1f1d2
+    member_id: 0xad898e74
+    member_id: 0x3279112f
+    member_id: 0x98493de4
+    member_id: 0x0ddfe603
+    member_id: 0xcc480f6e
+    member_id: 0xe1eb9c42
+    member_id: 0x48c48bbc
+    member_id: 0xa72fefbb
+    member_id: 0x4d8781e2
+    member_id: 0x9241af50
+    member_id: 0x4a85c6ab
+  }
+}
+struct_union {
+  id: 0x0087248c
+  kind: STRUCT
+  name: "iommu_iotlb_gather"
+  definition {
+    bytesize: 48
+    member_id: 0x46284634
+    member_id: 0x823c2af9
+    member_id: 0x725d40d7
+    member_id: 0xf0cb04a1
+    member_id: 0x2ad508f4
+  }
+}
+struct_union {
+  id: 0x379350f1
+  kind: STRUCT
+  name: "iommu_ops"
+  definition {
+    bytesize: 136
+    member_id: 0x3773a0c0
+    member_id: 0x73013631
+    member_id: 0xe5e1630d
+    member_id: 0x8f7df74a
+    member_id: 0xf6b66ca8
+    member_id: 0x03c8dac7
+    member_id: 0xced6d874
+    member_id: 0x4a7cf415
+    member_id: 0xcea8232d
+    member_id: 0xab76d4fd
+    member_id: 0x0b7248bd
+    member_id: 0x640df02b
+    member_id: 0xd2bea8af
+    member_id: 0x0104be90
+    member_id: 0x91bbb2d5
+    member_id: 0xa5569cb6
+    member_id: 0x4a96554f
+  }
+}
+struct_union {
+  id: 0x64b72bba
+  kind: STRUCT
+  name: "iommu_page_response"
+  definition {
+    bytesize: 24
+    member_id: 0xcb9ebca9
+    member_id: 0xa68717fe
+    member_id: 0x2d8eae00
+    member_id: 0x226637ed
+    member_id: 0x8ab9b968
+    member_id: 0x5406c75b
+  }
+}
+struct_union {
+  id: 0x554dc994
+  kind: STRUCT
+  name: "iommu_resv_region"
+  definition {
+    bytesize: 48
+    member_id: 0x7c00ef52
+    member_id: 0x46a6eb1b
+    member_id: 0xb5995ff9
+    member_id: 0xd4a74498
+    member_id: 0x5ca61a87
+    member_id: 0xfeac8375
+  }
+}
+struct_union {
+  id: 0x5050c787
+  kind: STRUCT
+  name: "iopf_device_param"
+}
+struct_union {
+  id: 0xd6298487
+  kind: STRUCT
+  name: "iosys_map"
+  definition {
+    bytesize: 16
+    member_id: 0x3c4aa836
+    member_id: 0x25db6745
+  }
+}
+struct_union {
+  id: 0x978f8e70
+  kind: STRUCT
+  name: "iov_iter"
+  definition {
+    bytesize: 40
+    member_id: 0x4681264b
+    member_id: 0xa8924c30
+    member_id: 0x250d30e0
+    member_id: 0x9a92f005
+    member_id: 0x3e69e790
+    member_id: 0x65d1636e
+    member_id: 0x3b82c26c
+    member_id: 0x3f79f6bc
+  }
+}
+struct_union {
+  id: 0xfe81d85b
+  kind: STRUCT
+  name: "iova"
+  definition {
+    bytesize: 40
+    member_id: 0x0f470b14
+    member_id: 0xe32968ec
+    member_id: 0x4cfb0498
+  }
+}
+struct_union {
+  id: 0xfeac3bf4
+  kind: STRUCT
+  name: "iova_cpu_rcache"
+  definition {
+    bytesize: 24
+    member_id: 0x2d1fec85
+    member_id: 0xbcc151ab
+    member_id: 0xbd9d8cc4
+  }
+}
+struct_union {
+  id: 0xd4535e6d
+  kind: STRUCT
+  name: "iova_domain"
+  definition {
+    bytesize: 136
+    member_id: 0x9e6e7abb
+    member_id: 0x48f62bf3
+    member_id: 0xd4933eac
+    member_id: 0x3722f485
+    member_id: 0x98466da3
+    member_id: 0x152ab9f3
+    member_id: 0x1e86e785
+    member_id: 0xbe6f6d98
+    member_id: 0xccc355f4
+    member_id: 0xe96d3f15
+    member_id: 0x3e96ca84
+    member_id: 0xed7002b3
+  }
+}
+struct_union {
+  id: 0x3afd832e
+  kind: STRUCT
+  name: "iova_fq"
+  definition {
+    bytesize: 10256
+    member_id: 0xbe2295bb
+    member_id: 0xb51f3196
+    member_id: 0xeed82a5c
+    member_id: 0x2d1fee46
+  }
+}
+struct_union {
+  id: 0x98a52b9a
+  kind: STRUCT
+  name: "iova_fq_entry"
+  definition {
+    bytesize: 40
+    member_id: 0xaac1924b
+    member_id: 0x7879f895
+    member_id: 0xf0cb05aa
+    member_id: 0x20bd6891
+  }
+}
+struct_union {
+  id: 0x41892913
+  kind: STRUCT
+  name: "iova_magazine"
+  definition {
+    bytesize: 1024
+    member_id: 0xd94d6916
+    member_id: 0x8957764f
+  }
+}
+struct_union {
+  id: 0x15e961f4
+  kind: STRUCT
+  name: "iova_rcache"
+  definition {
+    bytesize: 280
+    member_id: 0x2d1fec85
+    member_id: 0xe364f79b
+    member_id: 0x99c3b854
+    member_id: 0x635d61e3
+  }
+}
+struct_union {
+  id: 0x332ff439
+  kind: STRUCT
+  name: "iovec"
+  definition {
+    bytesize: 16
+    member_id: 0x7f9d2120
+    member_id: 0x962b59ac
+  }
+}
+struct_union {
+  id: 0xdcb15adf
+  kind: STRUCT
+  name: "ip6_sf_list"
+  definition {
+    bytesize: 64
+    member_id: 0x9c290ab3
+    member_id: 0x3825eed4
+    member_id: 0x31391355
+    member_id: 0x4af3f875
+    member_id: 0x2c1199d0
+    member_id: 0x49449d09
+    member_id: 0x95dac8e5
+  }
+}
+struct_union {
+  id: 0x5096f267
+  kind: STRUCT
+  name: "ip_conntrack_stat"
+  definition {
+    bytesize: 52
+    member_id: 0x61baed46
+    member_id: 0x88bfd448
+    member_id: 0x51e91fc8
+    member_id: 0xb76bc885
+    member_id: 0x1103ebfd
+    member_id: 0xf21ad3f0
+    member_id: 0x014c765a
+    member_id: 0x7f4352ad
+    member_id: 0x517fd762
+    member_id: 0xc970881d
+    member_id: 0x09769915
+    member_id: 0x14e1693b
+    member_id: 0xbb09fda0
+  }
+}
+struct_union {
+  id: 0xdf48af38
+  kind: STRUCT
+  name: "ip_ct_sctp"
+  definition {
+    bytesize: 16
+    member_id: 0x7261a786
+    member_id: 0xfbbbe884
+    member_id: 0x555f8830
+    member_id: 0x2d41db8c
+  }
+}
+struct_union {
+  id: 0x2ec4540f
+  kind: STRUCT
+  name: "ip_ct_tcp"
+  definition {
+    bytesize: 60
+    member_id: 0xaecb49ff
+    member_id: 0x72f94559
+    member_id: 0x557c6007
+    member_id: 0x533104e4
+    member_id: 0x42cf65be
+    member_id: 0xadd33b5a
+    member_id: 0x46917fc8
+    member_id: 0x17a5e8ce
+    member_id: 0x3dc7ac1a
+    member_id: 0xe503544a
+    member_id: 0x45c7feeb
+  }
+}
+struct_union {
+  id: 0x43ca4c9d
+  kind: STRUCT
+  name: "ip_ct_tcp_state"
+  definition {
+    bytesize: 20
+    member_id: 0x43a6cfb9
+    member_id: 0x8eed7305
+    member_id: 0x8a35f63c
+    member_id: 0x36bc1522
+    member_id: 0xceee1d0b
+    member_id: 0x2d6232ce
+  }
+}
+struct_union {
+  id: 0x9f381f44
+  kind: STRUCT
+  name: "ip_mc_list"
+  definition {
+    bytesize: 160
+    member_id: 0x1e64a125
+    member_id: 0x5c6fc30f
+    member_id: 0x00c081a9
+    member_id: 0xf720feb9
+    member_id: 0xf2746f1a
+    member_id: 0x0117694f
+    member_id: 0x3769db75
+    member_id: 0x4d6204ba
+    member_id: 0x1dd18a7a
+    member_id: 0x85cada3d
+    member_id: 0xb7dcf87e
+    member_id: 0x2d1feb9a
+    member_id: 0x350c8cc3
+    member_id: 0xb48ef3e4
+    member_id: 0xb5487b20
+    member_id: 0xbce3e545
+    member_id: 0xf913a5b3
+    member_id: 0xeff5afc8
+    member_id: 0x95dac7ab
+  }
+}
+struct_union {
+  id: 0xf86b845e
+  kind: STRUCT
+  name: "ip_mreqn"
+  definition {
+    bytesize: 12
+    member_id: 0xf7a2175f
+    member_id: 0x19ade51f
+    member_id: 0xf77583a5
+  }
+}
+struct_union {
+  id: 0xe6a8bc0b
+  kind: STRUCT
+  name: "ip_ra_chain"
+  definition {
+    bytesize: 40
+    member_id: 0x11c03ac9
+    member_id: 0x828c8d54
+    member_id: 0x3c3b7173
+    member_id: 0x95dac1be
+  }
+}
+struct_union {
+  id: 0x84915608
+  kind: STRUCT
+  name: "ip_sf_list"
+  definition {
+    bytesize: 32
+    member_id: 0x9c3f02b0
+    member_id: 0x31391f7d
+    member_id: 0x51261bcd
+    member_id: 0x4af3fc96
+    member_id: 0x2c119e4c
+    member_id: 0x494491e1
+  }
+}
+struct_union {
+  id: 0x19e78670
+  kind: STRUCT
+  name: "ip_tunnel_info"
+  definition {
+    bytesize: 80
+    member_id: 0x20bce5a7
+    member_id: 0x6de7cfa7
+    member_id: 0xf3390048
+    member_id: 0x87b44a3f
+  }
+}
+struct_union {
+  id: 0xeaef09c4
+  kind: STRUCT
+  name: "ip_tunnel_key"
+  definition {
+    bytesize: 56
+    member_id: 0xdc494e19
+    member_id: 0xec06f365
+    member_id: 0x67b5a6fb
+    member_id: 0xf13a894d
+    member_id: 0xf440f305
+    member_id: 0x05cb61ce
+    member_id: 0x706bbb34
+    member_id: 0xe812f364
+    member_id: 0x24112253
+  }
+}
+struct_union {
+  id: 0xccec15dd
+  kind: STRUCT
+  name: "ip_tunnel_parm"
+  definition {
+    bytesize: 52
+    member_id: 0x0d994c40
+    member_id: 0x55d9b6fc
+    member_id: 0xacba12f4
+    member_id: 0xbc851a74
+    member_id: 0xfbc9b763
+    member_id: 0xaac04d6d
+    member_id: 0xf696f182
+  }
+}
+struct_union {
+  id: 0x666bcb01
+  kind: STRUCT
+  name: "ipc_ids"
+  definition {
+    bytesize: 272
+    member_id: 0x69ac3859
+    member_id: 0xfad53c70
+    member_id: 0xd610e150
+    member_id: 0x553eb9fd
+    member_id: 0xa4cba179
+    member_id: 0x5ed3d0f0
+    member_id: 0x3a668586
+  }
+}
+struct_union {
+  id: 0xeaabc7cc
+  kind: STRUCT
+  name: "ipc_namespace"
+  definition {
+    bytesize: 1272
+    member_id: 0x76ca962a
+    member_id: 0x319d2652
+    member_id: 0xcd075131
+    member_id: 0x4e076dbe
+    member_id: 0x73cbb1a8
+    member_id: 0xad8c1e2a
+    member_id: 0xc8a03455
+    member_id: 0x9d311a98
+    member_id: 0xaa22986b
+    member_id: 0x635a8821
+    member_id: 0x04c930c7
+    member_id: 0x5b41e34f
+    member_id: 0xb28cb21e
+    member_id: 0x4c8db422
+    member_id: 0x378b0c45
+    member_id: 0xbc8b04d3
+    member_id: 0xc91b139f
+    member_id: 0xfc50d140
+    member_id: 0x699a43f9
+    member_id: 0x2ad0b1d0
+    member_id: 0x7a21d6d9
+    member_id: 0x35dfddf4
+    member_id: 0xc6f14fe7
+    member_id: 0x05889fb1
+    member_id: 0xb985d006
+    member_id: 0xde4b7705
+    member_id: 0x9f301b93
+    member_id: 0x57272c55
+    member_id: 0x91129161
+  }
+}
+struct_union {
+  id: 0x23317b59
+  kind: STRUCT
+  name: "iphdr"
+  definition {
+    bytesize: 20
+    member_id: 0xf3bb30dc
+    member_id: 0x2d50e6ed
+    member_id: 0xf1a0379c
+    member_id: 0x3ea5233d
+    member_id: 0xcc5aa54d
+    member_id: 0x9fdfc4ad
+    member_id: 0xf4da4d28
+    member_id: 0xdc6ca5fb
+    member_id: 0x9e156774
+    member_id: 0x34dc7c7e
+  }
+}
+struct_union {
+  id: 0xf74eb48d
+  kind: STRUCT
+  name: "ipstats_mib"
+  definition {
+    bytesize: 296
+    member_id: 0x0d374ef2
+    member_id: 0x0d9bb550
+  }
+}
+struct_union {
+  id: 0x8e2216f3
+  kind: STRUCT
+  name: "ipv4_devconf"
+  definition {
+    bytesize: 152
+    member_id: 0x0d642b2f
+    member_id: 0xffd1f15e
+    member_id: 0x724ae662
+  }
+}
+struct_union {
+  id: 0x66c6fbfa
+  kind: STRUCT
+  name: "ipv6_devconf"
+  definition {
+    bytesize: 288
+    member_id: 0x7cc73ef8
+    member_id: 0x9f4d6a46
+    member_id: 0x3ed76e50
+    member_id: 0x0b8c62ff
+    member_id: 0x6b1f84cb
+    member_id: 0x2133b79d
+    member_id: 0x890ec0c1
+    member_id: 0xdbf79183
+    member_id: 0x455870a1
+    member_id: 0x63ac2582
+    member_id: 0x8edcbba4
+    member_id: 0x4f817797
+    member_id: 0x5134194c
+    member_id: 0x90672bf6
+    member_id: 0x1fb60be2
+    member_id: 0x5f679fb2
+    member_id: 0x01e38856
+    member_id: 0xa7cf55f2
+    member_id: 0x4912b632
+    member_id: 0xf8eed16f
+    member_id: 0x375f3296
+    member_id: 0xe7b5c400
+    member_id: 0x32d8bd34
+    member_id: 0x6b9db8d7
+    member_id: 0xa6432924
+    member_id: 0xf4943255
+    member_id: 0x37f3dfc1
+    member_id: 0xeb68f3df
+    member_id: 0xf4aca695
+    member_id: 0xfcbcc1a2
+    member_id: 0x61ba1604
+    member_id: 0x45f850b1
+    member_id: 0xb9bb501c
+    member_id: 0x443d5e49
+    member_id: 0x9030fc4b
+    member_id: 0xf100fc5d
+    member_id: 0x4e51103b
+    member_id: 0x0bc63dc4
+    member_id: 0xe3f0356b
+    member_id: 0x6ed63d49
+    member_id: 0xeac5a0a4
+    member_id: 0x3d94707e
+    member_id: 0x2c2f941d
+    member_id: 0xe41ce71b
+    member_id: 0x35668112
+    member_id: 0xf4018458
+    member_id: 0x80b51ca0
+    member_id: 0xdd0487c4
+    member_id: 0x2adfb7f4
+    member_id: 0x9ebb73b1
+    member_id: 0xf3e39e64
+    member_id: 0xaffcfb85
+    member_id: 0x9487ac0c
+    member_id: 0x4405af20
+    member_id: 0x48e39a23
+    member_id: 0x6180068e
+    member_id: 0xef330e54
+    member_id: 0xb7f742d4
+    member_id: 0x04607474
+    member_id: 0x2d0812b0
+    member_id: 0x637607e0
+    member_id: 0xac894cc9
+    member_id: 0xe0f63db8
+  }
+}
+struct_union {
+  id: 0xa2ef7066
+  kind: STRUCT
+  name: "ipv6_devstat"
+  definition {
+    bytesize: 32
+    member_id: 0x8243248c
+    member_id: 0x3bc426f6
+    member_id: 0x33b71b9d
+    member_id: 0xda3c6150
+  }
+}
+struct_union {
+  id: 0x8b8aa3c2
+  kind: STRUCT
+  name: "ipv6_stable_secret"
+  definition {
+    bytesize: 20
+    member_id: 0xd5629b65
+    member_id: 0x83e89644
+  }
+}
+struct_union {
+  id: 0x0b3c8cf4
+  kind: STRUCT
+  name: "ipv6_stub"
+  definition {
+    bytesize: 184
+    member_id: 0xb4ff0dc3
+    member_id: 0x92a42033
+    member_id: 0x3898a978
+    member_id: 0xdf622691
+    member_id: 0x97d16e82
+    member_id: 0xcf8b2454
+    member_id: 0xc4a259e4
+    member_id: 0x7c31c5bb
+    member_id: 0x747dade5
+    member_id: 0x40832266
+    member_id: 0x33e7eefb
+    member_id: 0x353c0870
+    member_id: 0x0bad077a
+    member_id: 0xd9d01299
+    member_id: 0x8bc2759f
+    member_id: 0x7cc85587
+    member_id: 0xfadff2b0
+    member_id: 0x5409e737
+    member_id: 0xe3d0d572
+    member_id: 0x650cb617
+    member_id: 0xc200b0b0
+    member_id: 0xcf78c1e2
+    member_id: 0x12832f3f
+  }
+}
+struct_union {
+  id: 0x97012809
+  kind: STRUCT
+  name: "ir_raw_event"
+  definition {
+    bytesize: 8
+    member_id: 0x3875cd22
+    member_id: 0xc14fb55d
+    member_id: 0x8b7beef9
+    member_id: 0x4cbc83db
+    member_id: 0x6b2e4447
+    member_id: 0x0100feb5
+  }
+}
+struct_union {
+  id: 0xd6e255bb
+  kind: STRUCT
+  name: "ir_raw_event_ctrl"
+  definition {
+    bytesize: 4256
+    member_id: 0x7c00ef52
+    member_id: 0xfc7d458c
+    member_id: 0xd1b69eca
+    member_id: 0x5852724b
+    member_id: 0xce3fe2d9
+    member_id: 0x520d4ba6
+    member_id: 0x371a0f37
+    member_id: 0x16293fe8
+    member_id: 0x6a3f16b1
+    member_id: 0x83397fb4
+    member_id: 0x5c80282e
+  }
+}
+struct_union {
+  id: 0xf1be35e6
+  kind: STRUCT
+  name: "irq_affinity"
+  definition {
+    bytesize: 48
+    member_id: 0x3f35349d
+    member_id: 0x522df237
+    member_id: 0x980ca3e6
+    member_id: 0xe3ead1c7
+    member_id: 0x8d929646
+    member_id: 0x59119f66
+  }
+}
+struct_union {
+  id: 0x95d60479
+  kind: STRUCT
+  name: "irq_affinity_desc"
+  definition {
+    bytesize: 16
+    member_id: 0xa8fac100
+    member_id: 0x547b64ea
+  }
+}
+struct_union {
+  id: 0xe061253c
+  kind: STRUCT
+  name: "irq_affinity_notify"
+  definition {
+    bytesize: 72
+    member_id: 0x99373053
+    member_id: 0x02ce54bd
+    member_id: 0xd6e66356
+    member_id: 0x56fba0e3
+    member_id: 0xae975adb
+  }
+}
+struct_union {
+  id: 0xcd6071b7
+  kind: STRUCT
+  name: "irq_bypass_consumer"
+  definition {
+    bytesize: 56
+    member_id: 0x0fa6c6af
+    member_id: 0x36c62271
+    member_id: 0x4dcf2c11
+    member_id: 0x5e7ee5d3
+    member_id: 0x69855734
+    member_id: 0x4616186d
+  }
+}
+struct_union {
+  id: 0x61eb4c0a
+  kind: STRUCT
+  name: "irq_bypass_producer"
+  definition {
+    bytesize: 64
+    member_id: 0x0fa6c6af
+    member_id: 0x36c62271
+    member_id: 0x99159d2f
+    member_id: 0xc5890632
+    member_id: 0xb732adca
+    member_id: 0x6987e34d
+    member_id: 0x4614aca4
+  }
+}
+struct_union {
+  id: 0xadd7ccb6
+  kind: STRUCT
+  name: "irq_chip"
+  definition {
+    bytesize: 264
+    member_id: 0x0de57ce8
+    member_id: 0x85519df9
+    member_id: 0x0da6334f
+    member_id: 0xea49f9e7
+    member_id: 0x07d808c2
+    member_id: 0x2fffb3ae
+    member_id: 0xc19e60b7
+    member_id: 0x550b5ccf
+    member_id: 0x9b794f03
+    member_id: 0x2ffc0523
+    member_id: 0xa48c1053
+    member_id: 0xc14ed3a7
+    member_id: 0x3e271c5a
+    member_id: 0xd6037600
+    member_id: 0xd443e46c
+    member_id: 0x46814ecd
+    member_id: 0xfed947c1
+    member_id: 0xdf027f69
+    member_id: 0xf98b5c37
+    member_id: 0x968e29d0
+    member_id: 0xf4789399
+    member_id: 0x05ae29fe
+    member_id: 0x999dfd41
+    member_id: 0xc7b22a37
+    member_id: 0xdfe72b60
+    member_id: 0x9a744d18
+    member_id: 0xc577a772
+    member_id: 0x3e45b929
+    member_id: 0xfe5f6990
+    member_id: 0x9c3eba74
+    member_id: 0x1bfa39cd
+    member_id: 0x91ce8147
+    member_id: 0x2d5bf6b8
+  }
+}
+struct_union {
+  id: 0xc120bede
+  kind: STRUCT
+  name: "irq_chip_generic"
+  definition {
+    bytesize: 128
+    member_id: 0x2d244e18
+    member_id: 0x648a91cd
+    member_id: 0x53bd41b8
+    member_id: 0x9adda697
+    member_id: 0xf3b7cd3e
+    member_id: 0xca92fc07
+    member_id: 0x8def7afc
+    member_id: 0xd6ff3603
+    member_id: 0x6db2cced
+    member_id: 0xd923e10f
+    member_id: 0x63a1568a
+    member_id: 0x0bd013d5
+    member_id: 0xcf212908
+    member_id: 0x4226aa25
+    member_id: 0x917960ca
+    member_id: 0xf47d66b2
+    member_id: 0x3c987349
+    member_id: 0xa719d146
+    member_id: 0x7c00e5f4
+    member_id: 0x27578761
+  }
+}
+struct_union {
+  id: 0x42755f51
+  kind: STRUCT
+  name: "irq_chip_regs"
+  definition {
+    bytesize: 56
+    member_id: 0x98d47a7b
+    member_id: 0x0dbe907c
+    member_id: 0xa800158b
+    member_id: 0x87ee0bdf
+    member_id: 0xa2dfe6ad
+    member_id: 0x5c65a7dd
+    member_id: 0xe09e2df3
+  }
+}
+struct_union {
+  id: 0xbc61fd2c
+  kind: STRUCT
+  name: "irq_chip_type"
+  definition {
+    bytesize: 344
+    member_id: 0xc6cfe420
+    member_id: 0x80790d43
+    member_id: 0xf9ead82c
+    member_id: 0x5c9fd40f
+    member_id: 0x04de45d5
+    member_id: 0x6d4314bc
+  }
+}
+struct_union {
+  id: 0xf18cf4eb
+  kind: STRUCT
+  name: "irq_common_data"
+  definition {
+    bytesize: 48
+    member_id: 0xc05a39d0
+    member_id: 0x5703ce72
+    member_id: 0xe799b3ba
+    member_id: 0xf3275b98
+    member_id: 0x6eec14d5
+    member_id: 0x87060f64
+  }
+}
+struct_union {
+  id: 0x07b1db01
+  kind: STRUCT
+  name: "irq_data"
+  definition {
+    bytesize: 56
+    member_id: 0xa8fa6106
+    member_id: 0x99373d68
+    member_id: 0xeac4d9d6
+    member_id: 0x6429e162
+    member_id: 0xc643deef
+    member_id: 0xa719d257
+    member_id: 0x0d3533bd
+    member_id: 0x50c8213c
+  }
+}
+struct_union {
+  id: 0xe7647945
+  kind: STRUCT
+  name: "irq_desc"
+  definition {
+    bytesize: 512
+    member_id: 0x097365c0
+    member_id: 0x71a5f6ff
+    member_id: 0x744c7d97
+    member_id: 0x72138c01
+    member_id: 0xc062118d
+    member_id: 0x3205308c
+    member_id: 0xbd71f5b9
+    member_id: 0x1b21801c
+    member_id: 0xc9b98a90
+    member_id: 0xf19fb740
+    member_id: 0x5200c798
+    member_id: 0x1a01192b
+    member_id: 0x33bed567
+    member_id: 0xb0ee8fc8
+    member_id: 0xb6a24236
+    member_id: 0x2d244c3d
+    member_id: 0xf2bf231a
+    member_id: 0xd782572d
+    member_id: 0xcea29a17
+    member_id: 0x114047a0
+    member_id: 0xb3ec22fd
+    member_id: 0xd03ef149
+    member_id: 0x36abe075
+    member_id: 0xa23c2b3f
+    member_id: 0x1a21ce51
+    member_id: 0x9c734fbf
+    member_id: 0xecfeccb9
+    member_id: 0x2eee666c
+    member_id: 0x95dacce8
+    member_id: 0x452b2767
+    member_id: 0x26fe77cd
+    member_id: 0x57ba9719
+    member_id: 0x4a965b58
+    member_id: 0x0de57a81
+    member_id: 0xed700d34
+  }
+}
+struct_union {
+  id: 0x48cb0b10
+  kind: STRUCT
+  name: "irq_domain"
+  definition {
+    bytesize: 200
+    member_id: 0x556d57ec
+    member_id: 0x0de5752a
+    member_id: 0xafbb3d7c
+    member_id: 0xdabe92ad
+    member_id: 0x2d2d06ff
+    member_id: 0x1da3c3d8
+    member_id: 0x6e4d81cc
+    member_id: 0xb6d7d4b7
+    member_id: 0x96527b3e
+    member_id: 0xce3bb3c1
+    member_id: 0x7229d678
+    member_id: 0x2d08170f
+    member_id: 0x6376010c
+    member_id: 0xac894aec
+    member_id: 0xe0f63eed
+    member_id: 0x9f1700c3
+    member_id: 0x19eb79be
+    member_id: 0xa5f55c89
+    member_id: 0x2f9b3f87
+    member_id: 0xbcd2bd0f
+  }
+}
+struct_union {
+  id: 0xb1019e99
+  kind: STRUCT
+  name: "irq_domain_chip_generic"
+  definition {
+    bytesize: 24
+    member_id: 0x1b4538bc
+    member_id: 0x2c04206f
+    member_id: 0xef8e9eec
+    member_id: 0x747c2b35
+    member_id: 0x80403b50
+    member_id: 0x96be273a
+  }
+}
+struct_union {
+  id: 0xda154dec
+  kind: STRUCT
+  name: "irq_domain_ops"
+  definition {
+    bytesize: 80
+    member_id: 0xe60f4d61
+    member_id: 0x509dd638
+    member_id: 0x8dda45f5
+    member_id: 0xfef896be
+    member_id: 0x302c47a4
+    member_id: 0x45c087f5
+    member_id: 0xfead749e
+    member_id: 0xdcf75157
+    member_id: 0x6ac8a1eb
+    member_id: 0xff7d2c8f
+  }
+}
+struct_union {
+  id: 0x2ed09696
+  kind: STRUCT
+  name: "irq_fwspec"
+  definition {
+    bytesize: 80
+    member_id: 0x6e4d805e
+    member_id: 0x91d9a625
+    member_id: 0xb5c2b19d
+  }
+}
+struct_union {
+  id: 0x2259094e
+  kind: STRUCT
+  name: "irq_ops"
+  definition {
+    bytesize: 16
+    member_id: 0x2d5bf13a
+    member_id: 0x682b5a38
+  }
+}
+struct_union {
+  id: 0xb95bf932
+  kind: STRUCT
+  name: "irq_work"
+  definition {
+    bytesize: 32
+    member_id: 0x0f43c472
+    member_id: 0x21032235
+    member_id: 0xd5f4b853
+  }
+}
+struct_union {
+  id: 0xfaeafe16
+  kind: STRUCT
+  name: "irqaction"
+  definition {
+    bytesize: 128
+    member_id: 0xf9833078
+    member_id: 0x8e718006
+    member_id: 0xaf08ef33
+    member_id: 0x11c72290
+    member_id: 0x3e5ba81d
+    member_id: 0xfc7d4b89
+    member_id: 0xdfeb0f9b
+    member_id: 0x99373724
+    member_id: 0x2d2d0088
+    member_id: 0x8b87e4f0
+    member_id: 0xfdf621b8
+    member_id: 0x0de57a91
+    member_id: 0x2eee6a13
+  }
+}
+struct_union {
+  id: 0x2ae742de
+  kind: STRUCT
+  name: "irqtime"
+  definition {
+    bytesize: 24
+    member_id: 0x9dc15149
+    member_id: 0x979a95d2
+    member_id: 0xb989726e
+    member_id: 0x50c461ff
+  }
+}
+struct_union {
+  id: 0x39aedbce
+  kind: STRUCT
+  name: "its_vm"
+  definition {
+    bytesize: 128
+    member_id: 0x6e4d805e
+    member_id: 0xa719d61d
+    member_id: 0x18a69b62
+    member_id: 0xade8e87b
+    member_id: 0x6ba53b1d
+    member_id: 0x3baa0bf3
+    member_id: 0xd3a54092
+    member_id: 0xb9a58615
+    member_id: 0xd2927ea1
+  }
+}
+struct_union {
+  id: 0x19bba071
+  kind: STRUCT
+  name: "its_vpe"
+  definition {
+    bytesize: 128
+    member_id: 0xdca92f00
+    member_id: 0xa70b7acb
+    member_id: 0xd298d587
+    member_id: 0x99159806
+    member_id: 0x3e9547ca
+    member_id: 0x3a956acf
+    member_id: 0xa3f01223
+    member_id: 0x345b10fd
+    member_id: 0xa8c6574f
+    member_id: 0x6710a2d3
+    member_id: 0x1b58edc6
+    member_id: 0x141c8cee
+  }
+}
+struct_union {
+  id: 0xb34a0d30
+  kind: STRUCT
+  name: "iw_discarded"
+  definition {
+    bytesize: 20
+    member_id: 0xa7954e57
+    member_id: 0x5406c780
+    member_id: 0x9e3d7ecc
+    member_id: 0x4f0d9bec
+    member_id: 0x7f3c8068
+  }
+}
+struct_union {
+  id: 0x4b68a2e4
+  kind: STRUCT
+  name: "iw_event"
+  definition {
+    bytesize: 24
+    member_id: 0xb8edd616
+    member_id: 0x1af8d371
+    member_id: 0xec76bd98
+  }
+}
+struct_union {
+  id: 0x8c385115
+  kind: STRUCT
+  name: "iw_freq"
+  definition {
+    bytesize: 8
+    member_id: 0x8dd7b706
+    member_id: 0x87d95526
+    member_id: 0x861586bb
+    member_id: 0x2ddb62e9
+  }
+}
+struct_union {
+  id: 0x02d90cbd
+  kind: STRUCT
+  name: "iw_handler_def"
+  definition {
+    bytesize: 40
+    member_id: 0xe8cd62b1
+    member_id: 0xff533794
+    member_id: 0x4c06bbb4
+    member_id: 0x1b4d9841
+    member_id: 0x91502702
+    member_id: 0x3666a386
+    member_id: 0xd6627db5
+  }
+}
+struct_union {
+  id: 0xb5631503
+  kind: STRUCT
+  name: "iw_missed"
+  definition {
+    bytesize: 4
+    member_id: 0x4724f9be
+  }
+}
+struct_union {
+  id: 0xe8d14bc6
+  kind: STRUCT
+  name: "iw_param"
+  definition {
+    bytesize: 8
+    member_id: 0xa007f621
+    member_id: 0xb3a451b8
+    member_id: 0x1e21049c
+    member_id: 0x2d808bdf
+  }
+}
+struct_union {
+  id: 0xb76debc5
+  kind: STRUCT
+  name: "iw_point"
+  definition {
+    bytesize: 16
+    member_id: 0x693905f9
+    member_id: 0xb58565f9
+    member_id: 0x2d808382
+  }
+}
+struct_union {
+  id: 0x005d60c6
+  kind: STRUCT
+  name: "iw_priv_args"
+  definition {
+    bytesize: 24
+    member_id: 0x1af6f030
+    member_id: 0xc5f4bb7e
+    member_id: 0x7eb4fe41
+    member_id: 0x0d9948a1
+  }
+}
+struct_union {
+  id: 0x50162095
+  kind: STRUCT
+  name: "iw_public_data"
+  definition {
+    bytesize: 16
+    member_id: 0x1db6f440
+    member_id: 0x6f5b3405
+  }
+}
+struct_union {
+  id: 0x9e71aa1e
+  kind: STRUCT
+  name: "iw_quality"
+  definition {
+    bytesize: 4
+    member_id: 0xcbe0098b
+    member_id: 0x8609234e
+    member_id: 0x5137e14b
+    member_id: 0xb04ac5ce
+  }
+}
+struct_union {
+  id: 0xab9cb981
+  kind: STRUCT
+  name: "iw_request_info"
+  definition {
+    bytesize: 4
+    member_id: 0x1af8ddcf
+    member_id: 0x2d8089a0
+  }
+}
+struct_union {
+  id: 0xb0af91f1
+  kind: STRUCT
+  name: "iw_spy_data"
+  definition {
+    bytesize: 100
+    member_id: 0xe11e117e
+    member_id: 0x356e2448
+    member_id: 0xdec149f0
+    member_id: 0x3dada5f0
+    member_id: 0xc0f7adc5
+    member_id: 0x164b8f7a
+  }
+}
+struct_union {
+  id: 0x1c4da897
+  kind: STRUCT
+  name: "iw_statistics"
+  definition {
+    bytesize: 32
+    member_id: 0x208f24c4
+    member_id: 0xcbcd9125
+    member_id: 0x8c3076ff
+    member_id: 0x036970a0
+  }
+}
+struct_union {
+  id: 0x09e514cb
+  kind: UNION
+  name: "iwreq_data"
+  definition {
+    bytesize: 16
+    member_id: 0x0d994c40
+    member_id: 0x951f933e
+    member_id: 0xa79bb1a3
+    member_id: 0xef2a66d3
+    member_id: 0xdd5cd2ce
+    member_id: 0xd0d59cad
+    member_id: 0x9565d3f1
+    member_id: 0xecbc1162
+    member_id: 0x461c29ab
+    member_id: 0x877b3b21
+    member_id: 0x7f86d402
+    member_id: 0x6a058a2e
+    member_id: 0xa9e18c6e
+    member_id: 0xcbcd9f9b
+    member_id: 0x445f83fb
+    member_id: 0x24d4d29a
+    member_id: 0xb554189d
+    member_id: 0xff254987
+  }
+}
+struct_union {
+  id: 0xea8013dd
+  kind: STRUCT
+  name: "jump_entry"
+  definition {
+    bytesize: 16
+    member_id: 0x5434fa8c
+    member_id: 0xb376c254
+    member_id: 0x20aa0052
+  }
+}
+struct_union {
+  id: 0x8ca9fd9e
+  kind: STRUCT
+  name: "k_sigaction"
+  definition {
+    bytesize: 32
+    member_id: 0x1be9c1b7
+  }
+}
+struct_union {
+  id: 0x3e77001f
+  kind: STRUCT
+  name: "kasan_cache"
+  definition {
+    bytesize: 1
+    member_id: 0x7253e239
+  }
+}
+struct_union {
+  id: 0xa8da1c83
+  kind: STRUCT
+  name: "kernel_cap_struct"
+  definition {
+    bytesize: 8
+    member_id: 0x1ee6d564
+  }
+}
+struct_union {
+  id: 0x3643daf2
+  kind: STRUCT
+  name: "kernel_cpustat"
+  definition {
+    bytesize: 80
+    member_id: 0x86895467
+  }
+}
+struct_union {
+  id: 0xc719108a
+  kind: STRUCT
+  name: "kernel_ethtool_coalesce"
+  definition {
+    bytesize: 2
+    member_id: 0xe07668c5
+    member_id: 0x185e93b6
+  }
+}
+struct_union {
+  id: 0x7e2ab496
+  kind: STRUCT
+  name: "kernel_ethtool_ringparam"
+  definition {
+    bytesize: 12
+    member_id: 0x62c1520b
+    member_id: 0x1de37c96
+    member_id: 0x819a977c
+    member_id: 0x88b01fb3
+  }
+}
+struct_union {
+  id: 0xc11c3e45
+  kind: STRUCT
+  name: "kernel_param"
+  definition {
+    bytesize: 40
+    member_id: 0x0de57ce8
+    member_id: 0x8c1b6b6c
+    member_id: 0xafb7802d
+    member_id: 0xf2dc5564
+    member_id: 0x86937c04
+    member_id: 0x2d41d3c0
+    member_id: 0x3ce71ba5
+  }
+}
+struct_union {
+  id: 0x11d0e05d
+  kind: STRUCT
+  name: "kernel_param_ops"
+  definition {
+    bytesize: 32
+    member_id: 0x2d2d0138
+    member_id: 0x3df0649f
+    member_id: 0x3174bf12
+    member_id: 0xfead3de1
+  }
+}
+struct_union {
+  id: 0x88b6c805
+  kind: STRUCT
+  name: "kernel_pkey_params"
+  definition {
+    bytesize: 48
+    member_id: 0x2057ac26
+    member_id: 0x6a8cf391
+    member_id: 0x637c436d
+    member_id: 0xcd58885b
+    member_id: 0xb2ce8b46
+    member_id: 0x3be5ec8e
+    member_id: 0x382ef493
+  }
+}
+struct_union {
+  id: 0xb29027b3
+  kind: STRUCT
+  name: "kernel_pkey_query"
+  definition {
+    bytesize: 16
+    member_id: 0x841c56e5
+    member_id: 0x7ddf0fa7
+    member_id: 0xeacdd7c2
+    member_id: 0xc6cf0804
+    member_id: 0x34fa575b
+    member_id: 0x6252d912
+  }
+}
+struct_union {
+  id: 0xcad9da82
+  kind: STRUCT
+  name: "kernel_siginfo"
+  definition {
+    bytesize: 48
+    member_id: 0x209db56e
+  }
+}
+struct_union {
+  id: 0xebfdc849
+  kind: STRUCT
+  name: "kernel_stat"
+  definition {
+    bytesize: 48
+    member_id: 0xbaeb367d
+    member_id: 0xcdab136f
+  }
+}
+struct_union {
+  id: 0x39d2eea6
+  kind: STRUCT
+  name: "kernel_symbol"
+  definition {
+    bytesize: 12
+    member_id: 0x0e144f7f
+    member_id: 0x0d875143
+    member_id: 0xb511f4c8
+  }
+}
+struct_union {
+  id: 0x9b7b4548
+  kind: STRUCT
+  name: "kernfs_elem_attr"
+  definition {
+    bytesize: 32
+    member_id: 0xafb936a4
+    member_id: 0xadbed88a
+    member_id: 0xd959b276
+    member_id: 0x5a4ea87b
+  }
+}
+struct_union {
+  id: 0xeb118b6a
+  kind: STRUCT
+  name: "kernfs_elem_dir"
+  definition {
+    bytesize: 32
+    member_id: 0xd5fc5804
+    member_id: 0x25410095
+    member_id: 0x93d246f9
+    member_id: 0xd2297123
+  }
+}
+struct_union {
+  id: 0x12bd2d82
+  kind: STRUCT
+  name: "kernfs_elem_symlink"
+  definition {
+    bytesize: 8
+    member_id: 0xbc9fd2b0
+  }
+}
+struct_union {
+  id: 0x3d304f71
+  kind: STRUCT
+  name: "kernfs_iattrs"
+  definition {
+    bytesize: 88
+    member_id: 0xcc167c20
+    member_id: 0x5d327a38
+    member_id: 0xa90e4060
+    member_id: 0x068477e1
+    member_id: 0x7af3bed7
+    member_id: 0xb7f10cd3
+    member_id: 0x04cae934
+    member_id: 0x574dfda0
+  }
+}
+struct_union {
+  id: 0xc30dcffc
+  kind: STRUCT
+  name: "kernfs_node"
+  definition {
+    bytesize: 136
+    member_id: 0x65518d58
+    member_id: 0x22568173
+    member_id: 0x720b2551
+    member_id: 0x0de5752a
+    member_id: 0xfb47d75b
+    member_id: 0x91dbd15a
+    member_id: 0x637b019e
+    member_id: 0x349c23b4
+    member_id: 0x5911900f
+    member_id: 0xccbd0c18
+    member_id: 0x2da1b0f9
+    member_id: 0x878f4f04
+    member_id: 0x481a087b
+    member_id: 0x2d08122d
+  }
+}
+struct_union {
+  id: 0xd4f09215
+  kind: STRUCT
+  name: "kernfs_open_file"
+  definition {
+    bytesize: 192
+    member_id: 0x5bb2ad0c
+    member_id: 0xbf9f3aea
+    member_id: 0x87634c04
+    member_id: 0x59119068
+    member_id: 0xad8983a9
+    member_id: 0xcc136178
+    member_id: 0x0a28c7ac
+    member_id: 0x7c00e224
+    member_id: 0x077ecf9a
+    member_id: 0xf1ad7caa
+    member_id: 0x02cb4f99
+    member_id: 0x7b82f804
+    member_id: 0x0b54e508
+    member_id: 0x2d081262
+  }
+}
+struct_union {
+  id: 0x03365d70
+  kind: STRUCT
+  name: "kernfs_open_node"
+  definition {
+    bytesize: 72
+    member_id: 0x56a7265c
+    member_id: 0x0a3b3b3e
+    member_id: 0x5e16d429
+    member_id: 0xc769f01e
+    member_id: 0x8232adc2
+    member_id: 0xb9801a85
+  }
+}
+struct_union {
+  id: 0xfa2455af
+  kind: STRUCT
+  name: "kernfs_ops"
+  definition {
+    bytesize: 112
+    member_id: 0xad9a8b05
+    member_id: 0xae95ba96
+    member_id: 0xc9fbbcd1
+    member_id: 0xcdfa8ae0
+    member_id: 0x98c640b2
+    member_id: 0xbfa43014
+    member_id: 0x48510371
+    member_id: 0xf1ad7da0
+    member_id: 0x750eca39
+    member_id: 0x340c80e7
+    member_id: 0x5e14c2b7
+    member_id: 0x87fd6d59
+    member_id: 0x2d081d9c
+    member_id: 0x63760a18
+  }
+}
+struct_union {
+  id: 0x1fde992a
+  kind: STRUCT
+  name: "kernfs_root"
+  definition {
+    bytesize: 160
+    member_id: 0x5bb2ad0c
+    member_id: 0x2d2d05d9
+    member_id: 0x37e22f9b
+    member_id: 0xe17a01a0
+    member_id: 0x109fae1f
+    member_id: 0xf2142743
+    member_id: 0xa06f40ea
+    member_id: 0x5dc905f7
+    member_id: 0xb96eb3c9
+  }
+}
+struct_union {
+  id: 0x06c29462
+  kind: STRUCT
+  name: "kernfs_syscall_ops"
+  definition {
+    bytesize: 72
+    member_id: 0x5047c373
+    member_id: 0x7cc6402a
+    member_id: 0x9c0b9827
+    member_id: 0xd86e1443
+    member_id: 0x1ab36ed3
+    member_id: 0x2d0812f5
+    member_id: 0x63760830
+    member_id: 0xac894e21
+    member_id: 0xe0f63f53
+  }
+}
+struct_union {
+  id: 0x2cdac427
+  kind: STRUCT
+  name: "key"
+  definition {
+    bytesize: 240
+    member_id: 0x07cdabee
+    member_id: 0xa767c14d
+    member_id: 0x3bd94fab
+    member_id: 0xf53d18cc
+    member_id: 0x043550f2
+    member_id: 0xf194e254
+    member_id: 0x318695b6
+    member_id: 0xd30e7268
+    member_id: 0x15366573
+    member_id: 0x08e67b30
+    member_id: 0xf2e55440
+    member_id: 0x114c8d37
+    member_id: 0xb9e1f779
+    member_id: 0x7243c3f0
+    member_id: 0x2d5bf3fe
+    member_id: 0x300353c5
+    member_id: 0x3c0aea42
+    member_id: 0xf1a0141c
+  }
+}
+struct_union {
+  id: 0xd0454fb3
+  kind: STRUCT
+  name: "key_match_data"
+  definition {
+    bytesize: 32
+    member_id: 0x093f7b1f
+    member_id: 0xbbaae794
+    member_id: 0x2c18d451
+    member_id: 0xd47db283
+  }
+}
+struct_union {
+  id: 0xb995416c
+  kind: UNION
+  name: "key_payload"
+  definition {
+    bytesize: 32
+    member_id: 0x41a83149
+    member_id: 0xff184626
+  }
+}
+struct_union {
+  id: 0x1dfa1740
+  kind: STRUCT
+  name: "key_preparsed_payload"
+  definition {
+    bytesize: 80
+    member_id: 0x25ffe762
+    member_id: 0x317e62aa
+    member_id: 0xa7d7882f
+    member_id: 0xffab3aeb
+    member_id: 0xb9dcf471
+    member_id: 0x1171805c
+    member_id: 0x7fe30715
+  }
+}
+struct_union {
+  id: 0x03929630
+  kind: STRUCT
+  name: "key_restriction"
+  definition {
+    bytesize: 24
+    member_id: 0x9e3a03cd
+    member_id: 0x2057a8c7
+    member_id: 0x3f485f71
+  }
+}
+struct_union {
+  id: 0xa0ac1862
+  kind: STRUCT
+  name: "key_tag"
+  definition {
+    bytesize: 24
+    member_id: 0x95dac977
+    member_id: 0x07cda22c
+    member_id: 0x0a934e2c
+  }
+}
+struct_union {
+  id: 0x70588905
+  kind: STRUCT
+  name: "key_type"
+  definition {
+    bytesize: 184
+    member_id: 0x0de57ce8
+    member_id: 0x1ce021c4
+    member_id: 0x2d2d08fa
+    member_id: 0x444fc004
+    member_id: 0x27d7b870
+    member_id: 0xeab8c633
+    member_id: 0x2111d246
+    member_id: 0xd688f754
+    member_id: 0x587bfdf6
+    member_id: 0x651ca61e
+    member_id: 0x9deb3429
+    member_id: 0xa4f8859c
+    member_id: 0x703132a7
+    member_id: 0x487dfa57
+    member_id: 0x1526eebc
+    member_id: 0xe68bacda
+    member_id: 0xe135719d
+    member_id: 0xfa508d60
+    member_id: 0xf529298c
+    member_id: 0x2d0817f6
+    member_id: 0x63760fdf
+    member_id: 0x556d5d6f
+    member_id: 0x7097248a
+  }
+}
+struct_union {
+  id: 0x37d98ee3
+  kind: STRUCT
+  name: "key_user"
+  definition {
+    bytesize: 104
+    member_id: 0x0f470b14
+    member_id: 0x19845b55
+    member_id: 0x2d1fe5f7
+    member_id: 0x07cdab1c
+    member_id: 0x723c58fa
+    member_id: 0xe2ed26fb
+    member_id: 0x15366051
+    member_id: 0xab0b1c24
+    member_id: 0x91da22df
+  }
+}
+struct_union {
+  id: 0x967269b3
+  kind: STRUCT
+  name: "keyring_index_key"
+  definition {
+    bytesize: 40
+    member_id: 0x630df6eb
+    member_id: 0x3451a149
+    member_id: 0x5c405aa7
+    member_id: 0x015536d8
+    member_id: 0x3144f5b3
+  }
+}
+struct_union {
+  id: 0x18745118
+  kind: STRUCT
+  name: "kfifo"
+  definition {
+    bytesize: 24
+    member_id: 0x3b659257
+    member_id: 0x9ac891c8
+  }
+}
+struct_union {
+  id: 0x08b52b5b
+  kind: STRUCT
+  name: "kiocb"
+  definition {
+    bytesize: 48
+    member_id: 0xab087d35
+    member_id: 0x4785f578
+    member_id: 0xc77bcbbf
+    member_id: 0x91796e7a
+    member_id: 0xb81d5e7e
+    member_id: 0x54e9b90d
+    member_id: 0x3689fed1
+  }
+}
+struct_union {
+  id: 0xc3333af0
+  kind: STRUCT
+  name: "kioctx"
+  definition {
+    bytesize: 640
+    member_id: 0x8593b21b
+    member_id: 0x3bc79110
+    member_id: 0x942e3316
+    member_id: 0x8c221133
+    member_id: 0x510c8cb9
+    member_id: 0x83fb5f77
+    member_id: 0x2e5739dd
+    member_id: 0x3354e630
+    member_id: 0xb4fc5ce9
+    member_id: 0xc0287d87
+    member_id: 0x44db6fdd
+    member_id: 0xe37ec6a8
+    member_id: 0x796fba13
+    member_id: 0xa9a3469b
+    member_id: 0x2befc6c5
+    member_id: 0x2634e12c
+    member_id: 0x2f5313ba
+    member_id: 0x2b33b39f
+    member_id: 0xcb8aec26
+    member_id: 0xbf6035d5
+    member_id: 0xcc6aa8b0
+  }
+}
+struct_union {
+  id: 0x02349d89
+  kind: STRUCT
+  name: "kioctx_cpu"
+  definition {
+    bytesize: 4
+    member_id: 0xe3c546f7
+  }
+}
+struct_union {
+  id: 0x4d58e67f
+  kind: STRUCT
+  name: "kioctx_table"
+  definition {
+    bytesize: 24
+    member_id: 0x95dac977
+    member_id: 0xd1e7b9bd
+    member_id: 0xb62196ea
+  }
+}
+struct_union {
+  id: 0x95f8b1fc
+  kind: STRUCT
+  name: "klist"
+  definition {
+    bytesize: 40
+    member_id: 0x873cedd8
+    member_id: 0x9fcf4af2
+    member_id: 0x315788a2
+    member_id: 0x4ae9b2ed
+  }
+}
+struct_union {
+  id: 0xbe482fa0
+  kind: STRUCT
+  name: "klist_iter"
+  definition {
+    bytesize: 16
+    member_id: 0x3f32c519
+    member_id: 0x8502b23a
+  }
+}
+struct_union {
+  id: 0x280be654
+  kind: STRUCT
+  name: "klist_node"
+  definition {
+    bytesize: 32
+    member_id: 0xfc42b4b6
+    member_id: 0x3d1b3725
+    member_id: 0xf3c9617f
+  }
+}
+struct_union {
+  id: 0x470694ff
+  kind: STRUCT
+  name: "kmap_ctrl"
+  definition {
+  }
+}
+struct_union {
+  id: 0x91b5a647
+  kind: STRUCT
+  name: "kmem_cache"
+  definition {
+    bytesize: 256
+    member_id: 0xc348a85a
+    member_id: 0x2d2ce67a
+    member_id: 0x8ce23c6d
+    member_id: 0xd93b91dd
+    member_id: 0x7bed058b
+    member_id: 0x91d10d59
+    member_id: 0x9b595e65
+    member_id: 0xf19eb492
+    member_id: 0xe49a363c
+    member_id: 0xb0c004da
+    member_id: 0xf9631b9e
+    member_id: 0x67471310
+    member_id: 0x05e43236
+    member_id: 0x16d2c2bd
+    member_id: 0x418fa2a6
+    member_id: 0x33a4f7f4
+    member_id: 0xbc8cd95a
+    member_id: 0x0de57446
+    member_id: 0x7c00ece8
+    member_id: 0x452b289f
+    member_id: 0xb165727b
+    member_id: 0x2db6a778
+    member_id: 0xabd5a6b3
+    member_id: 0xe3db14ff
+    member_id: 0xbb6c91c3
+    member_id: 0x0fc7cdb4
+  }
+}
+struct_union {
+  id: 0x2faa076d
+  kind: STRUCT
+  name: "kmem_cache_cpu"
+  definition {
+    bytesize: 32
+    member_id: 0xf0147b09
+    member_id: 0x64e7e322
+    member_id: 0xe0c5ed6b
+    member_id: 0xed33ceb5
+    member_id: 0x2df2d60d
+  }
+}
+struct_union {
+  id: 0x5ac769bf
+  kind: STRUCT
+  name: "kmem_cache_node"
+  definition {
+    bytesize: 64
+    member_id: 0x32991d07
+    member_id: 0xa3827374
+    member_id: 0xedef9663
+    member_id: 0x004eca1b
+    member_id: 0x75abfba8
+    member_id: 0xdb782239
+  }
+}
+struct_union {
+  id: 0xf39d0370
+  kind: STRUCT
+  name: "kmem_cache_order_objects"
+  definition {
+    bytesize: 4
+    member_id: 0xa0f7eeb0
+  }
+}
+struct_union {
+  id: 0x5e0b47e5
+  kind: STRUCT
+  name: "kmsg_dump_iter"
+  definition {
+    bytesize: 16
+    member_id: 0xd61ee617
+    member_id: 0x430d2e4c
+  }
+}
+struct_union {
+  id: 0xa660715d
+  kind: STRUCT
+  name: "kmsg_dumper"
+  definition {
+    bytesize: 32
+    member_id: 0x7c00ef52
+    member_id: 0x0a5faf30
+    member_id: 0xc45e1d81
+    member_id: 0x51372f38
+  }
+}
+struct_union {
+  id: 0xdabc347f
+  kind: STRUCT
+  name: "kobj_ns_type_operations"
+  definition {
+    bytesize: 48
+    member_id: 0x5cea9bce
+    member_id: 0xcfc20a47
+    member_id: 0x816c9dc2
+    member_id: 0xe68e5854
+    member_id: 0x8bea6ee2
+    member_id: 0x00449fae
+  }
+}
+struct_union {
+  id: 0x8ffe5e7d
+  kind: STRUCT
+  name: "kobj_type"
+  definition {
+    bytesize: 80
+    member_id: 0xae947bbf
+    member_id: 0xb9f1e7c4
+    member_id: 0xb6c72669
+    member_id: 0x76511bd1
+    member_id: 0x4a4eac64
+    member_id: 0xa023c6b3
+    member_id: 0x2d0814a0
+    member_id: 0x63760ed5
+    member_id: 0xac89424e
+    member_id: 0xe0f63d39
+  }
+}
+struct_union {
+  id: 0xfe38420a
+  kind: STRUCT
+  name: "kobj_uevent_env"
+  definition {
+    bytesize: 2592
+    member_id: 0xe86b095d
+    member_id: 0x39ffa241
+    member_id: 0xb57fe2a7
+    member_id: 0x9a976b6d
+    member_id: 0x9d53fbf9
+  }
+}
+struct_union {
+  id: 0xa582964d
+  kind: STRUCT
+  name: "kobject"
+  definition {
+    bytesize: 96
+    member_id: 0x0de57ce8
+    member_id: 0x4d8784dd
+    member_id: 0x72128aaf
+    member_id: 0x85969cba
+    member_id: 0x75359e44
+    member_id: 0xdd6d5486
+    member_id: 0x02ce5ef1
+    member_id: 0xf1dce3ba
+    member_id: 0x44fe19ca
+    member_id: 0x70bc5e10
+    member_id: 0xa38f52ad
+    member_id: 0x9b449b99
+    member_id: 0x2d081e2a
+    member_id: 0x637600d0
+    member_id: 0xac894f2f
+    member_id: 0xe0f63676
+  }
+}
+struct_union {
+  id: 0xa0bcedf5
+  kind: STRUCT
+  name: "kparam_array"
+  definition {
+    bytesize: 32
+    member_id: 0x97b382a7
+    member_id: 0xfb6bbf1c
+    member_id: 0x1c2dba34
+    member_id: 0xafb7802d
+    member_id: 0x03146c3c
+  }
+}
+struct_union {
+  id: 0x5a2dd630
+  kind: STRUCT
+  name: "kparam_string"
+  definition {
+    bytesize: 16
+    member_id: 0xd5432b33
+    member_id: 0xdff6a514
+  }
+}
+struct_union {
+  id: 0xf2a3d079
+  kind: STRUCT
+  name: "kprobe"
+  definition {
+    bytesize: 128
+    member_id: 0x2d522361
+    member_id: 0x7c00e690
+    member_id: 0xbfbe12ff
+    member_id: 0x241af347
+    member_id: 0x6b697008
+    member_id: 0x9b595ed5
+    member_id: 0x84a8f8f1
+    member_id: 0xc99b2509
+    member_id: 0xfc33e24a
+    member_id: 0xa62eacfd
+    member_id: 0x2da18486
+  }
+}
+struct_union {
+  id: 0x508a987d
+  kind: STRUCT
+  name: "kqid"
+  definition {
+    bytesize: 8
+    member_id: 0x3726cc57
+    member_id: 0x5cab6e0c
+  }
+}
+struct_union {
+  id: 0x6f1daf87
+  kind: STRUCT
+  name: "kref"
+  definition {
+    bytesize: 4
+    member_id: 0x05243b3c
+  }
+}
+struct_union {
+  id: 0x83d40c06
+  kind: STRUCT
+  name: "kretprobe"
+  definition {
+    bytesize: 176
+    member_id: 0xeff6ae77
+    member_id: 0xf92a6960
+    member_id: 0xb0dd5f8b
+    member_id: 0x2f2e35dc
+    member_id: 0xbfea45c8
+    member_id: 0x56fd1430
+    member_id: 0xf0f490c3
+    member_id: 0x81a78f71
+  }
+}
+struct_union {
+  id: 0x85aaed18
+  kind: STRUCT
+  name: "kretprobe_holder"
+  definition {
+    bytesize: 16
+    member_id: 0x62a51782
+    member_id: 0xceb800d2
+  }
+}
+struct_union {
+  id: 0x2c6164ac
+  kind: STRUCT
+  name: "kretprobe_instance"
+  definition {
+    bytesize: 48
+    member_id: 0x397f1ce9
+    member_id: 0x46cb64e4
+    member_id: 0x81a78d3b
+    member_id: 0x4c003468
+    member_id: 0x5405e7a5
+    member_id: 0xff580faf
+  }
+}
+struct_union {
+  id: 0x7b1fd27f
+  kind: STRUCT
+  name: "kset"
+  definition {
+    bytesize: 160
+    member_id: 0x7c00ef52
+    member_id: 0x329914c5
+    member_id: 0x452b28a5
+    member_id: 0x7a23f532
+    member_id: 0x2d08122d
+    member_id: 0x637604d4
+    member_id: 0xac89478a
+    member_id: 0xe0f6368f
+  }
+}
+struct_union {
+  id: 0x24fc83c0
+  kind: STRUCT
+  name: "kset_uevent_ops"
+  definition {
+    bytesize: 24
+    member_id: 0xa3dc77cd
+    member_id: 0x0d0c76dc
+    member_id: 0x934a59c9
+  }
+}
+struct_union {
+  id: 0x641903ae
+  kind: STRUCT
+  name: "kstat"
+  definition {
+    bytesize: 152
+    member_id: 0x96ec44c1
+    member_id: 0x878f4bd3
+    member_id: 0x2af46833
+    member_id: 0x1d21f5f2
+    member_id: 0x03d4590d
+    member_id: 0xc9a20fe4
+    member_id: 0x0cdb9a21
+    member_id: 0xced2eae0
+    member_id: 0xdc239072
+    member_id: 0x153663fe
+    member_id: 0x08e67071
+    member_id: 0xd959bcc3
+    member_id: 0x6483b863
+    member_id: 0x50e4fa53
+    member_id: 0xcfcde9b6
+    member_id: 0x68123d93
+    member_id: 0x4f0978ad
+    member_id: 0xef1875a1
+    member_id: 0x24821b6b
+    member_id: 0x84f0fa66
+  }
+}
+struct_union {
+  id: 0xc6e2b4bc
+  kind: STRUCT
+  name: "kstatfs"
+  definition {
+    bytesize: 120
+    member_id: 0xba48c3e7
+    member_id: 0x23e4127f
+    member_id: 0xf06da157
+    member_id: 0xa047e2a9
+    member_id: 0x3094987c
+    member_id: 0x6b702cf0
+    member_id: 0x93209157
+    member_id: 0xc14b2ed8
+    member_id: 0x072a4028
+    member_id: 0x08a5d13a
+    member_id: 0x38ef02ea
+    member_id: 0x611c8426
+  }
+}
+struct_union {
+  id: 0xdc0b0182
+  kind: STRUCT
+  name: "ktermios"
+  definition {
+    bytesize: 44
+    member_id: 0x5e0f463e
+    member_id: 0x4ec376c9
+    member_id: 0x125ab112
+    member_id: 0x271dc786
+    member_id: 0xe9cc5f1b
+    member_id: 0xe03ef75b
+    member_id: 0x88e8c2ee
+    member_id: 0xf7c05dbb
+  }
+}
+struct_union {
+  id: 0x26dfd527
+  kind: STRUCT
+  name: "kthread_delayed_work"
+  definition {
+    bytesize: 96
+    member_id: 0xd6c16eed
+    member_id: 0x1dd186a5
+  }
+}
+struct_union {
+  id: 0x3835dcc0
+  kind: STRUCT
+  name: "kthread_work"
+  definition {
+    bytesize: 40
+    member_id: 0x0fa6c6af
+    member_id: 0x217017b6
+    member_id: 0xff5bf4cb
+    member_id: 0xa05e2162
+  }
+}
+struct_union {
+  id: 0xf87d4486
+  kind: STRUCT
+  name: "kthread_worker"
+  definition {
+    bytesize: 56
+    member_id: 0x2d2d0138
+    member_id: 0x2d244323
+    member_id: 0x039fb3f5
+    member_id: 0xcdb81539
+    member_id: 0x9c3a24c0
+    member_id: 0xc8e8a0f0
+  }
+}
+struct_union {
+  id: 0x8e3acff3
+  kind: STRUCT
+  name: "kunit"
+  definition {
+    bytesize: 368
+    member_id: 0x591198a1
+    member_id: 0x0de57809
+    member_id: 0xc0459a4b
+    member_id: 0x15344fba
+    member_id: 0x1c7fe391
+    member_id: 0x55524858
+    member_id: 0x2d1febc4
+    member_id: 0x2083f5a0
+    member_id: 0x19962569
+    member_id: 0xf75d6935
+  }
+}
+struct_union {
+  id: 0x8ab1915b
+  kind: STRUCT
+  name: "kunit_assert"
+  definition {
+  }
+}
+struct_union {
+  id: 0x09f9bf26
+  kind: STRUCT
+  name: "kunit_case"
+  definition {
+    bytesize: 40
+    member_id: 0xdc80fc18
+    member_id: 0x0de57809
+    member_id: 0xae56385f
+    member_id: 0x2083ff54
+    member_id: 0xc0459322
+  }
+}
+struct_union {
+  id: 0xe4b02656
+  kind: STRUCT
+  name: "kunit_loc"
+  definition {
+    bytesize: 16
+    member_id: 0xdd5d9edd
+    member_id: 0xbfb9c035
+  }
+}
+struct_union {
+  id: 0xb2e34d06
+  kind: STRUCT
+  name: "kunit_suite"
+  definition {
+    bytesize: 576
+    member_id: 0x0d9609e5
+    member_id: 0x43476f3f
+    member_id: 0x15068e74
+    member_id: 0x1ac5a153
+    member_id: 0x0d2c29e2
+    member_id: 0xa6737c80
+    member_id: 0xf75d6ae6
+    member_id: 0x1c35735f
+    member_id: 0xc045934f
+    member_id: 0xc49c4949
+  }
+}
+struct_union {
+  id: 0x1703546d
+  kind: STRUCT
+  name: "kunit_try_catch"
+  definition {
+    bytesize: 48
+    member_id: 0x8db2ff16
+    member_id: 0x739fffb2
+    member_id: 0xdadea23d
+    member_id: 0x4f9731a7
+    member_id: 0xa971e10c
+    member_id: 0x41af8238
+  }
+}
+struct_union {
+  id: 0x45432d18
+  kind: STRUCT
+  name: "kvec"
+  definition {
+    bytesize: 16
+    member_id: 0x7f9d2120
+    member_id: 0x96845159
+  }
+}
+struct_union {
+  id: 0xf2aeafb9
+  kind: STRUCT
+  name: "kvm"
+  definition {
+    bytesize: 4352
+    member_id: 0x833819ed
+    member_id: 0xdda08f2f
+    member_id: 0x59597675
+    member_id: 0x3025d651
+    member_id: 0x8a52dd6e
+    member_id: 0xf0778c7b
+    member_id: 0x4f1355bb
+    member_id: 0xcd6e2d79
+    member_id: 0x8174053d
+    member_id: 0x1a817692
+    member_id: 0xf11c4ad7
+    member_id: 0x46e189ff
+    member_id: 0xca660682
+    member_id: 0xc21468d0
+    member_id: 0x107724e0
+    member_id: 0x221ad62a
+    member_id: 0x85550ce5
+    member_id: 0x5d9a7aad
+    member_id: 0x2d4b3b7e
+    member_id: 0xfa427670
+    member_id: 0x450927c5
+    member_id: 0x0d7ae40f
+    member_id: 0xb9403407
+    member_id: 0xb857a998
+    member_id: 0x914f88a3
+    member_id: 0x48aab379
+    member_id: 0xa84d097f
+    member_id: 0x02a639fa
+    member_id: 0x8cfde860
+    member_id: 0x71efddfa
+    member_id: 0x3b21a108
+    member_id: 0x4938a60d
+    member_id: 0x59a47d0f
+    member_id: 0x1c0c4ea6
+    member_id: 0xc81d2fc7
+    member_id: 0xf7c73e7d
+    member_id: 0x33ed52b5
+    member_id: 0x69005a44
+    member_id: 0x6425d0fe
+    member_id: 0xcd446a90
+    member_id: 0x2b889279
+    member_id: 0xb5417608
+    member_id: 0xff77b3c7
+    member_id: 0x8dc5ba0f
+    member_id: 0xf60ae606
+    member_id: 0x8de27dbd
+    member_id: 0x3046b926
+    member_id: 0x82dad882
+    member_id: 0xd657a07c
+  }
+}
+struct_union {
+  id: 0xfd71f39d
+  kind: STRUCT
+  name: "kvm_arch"
+  definition {
+    bytesize: 488
+    member_id: 0x6dab2c05
+    member_id: 0x8b881e3c
+    member_id: 0xf510916c
+    member_id: 0x2c10bf52
+    member_id: 0x2d5bffb1
+    member_id: 0x3957d3b9
+    member_id: 0xce7b08c8
+    member_id: 0x86378461
+    member_id: 0x03a47022
+    member_id: 0x42988d63
+    member_id: 0xe4cebf61
+    member_id: 0xe908f26f
+  }
+}
+struct_union {
+  id: 0x99ce8ef3
+  kind: STRUCT
+  name: "kvm_arch_memory_slot"
+  definition {
+  }
+}
+struct_union {
+  id: 0xef8b9e67
+  kind: STRUCT
+  name: "kvm_coalesced_mmio"
+  definition {
+    bytesize: 24
+    member_id: 0xbda607c1
+    member_id: 0xb8e3ff08
+    member_id: 0x30c18aff
+    member_id: 0xff5aeac8
+  }
+}
+struct_union {
+  id: 0x99f4eb25
+  kind: STRUCT
+  name: "kvm_coalesced_mmio_ring"
+  definition {
+    bytesize: 8
+    member_id: 0x1f01199c
+    member_id: 0x26892e85
+    member_id: 0xe2ce2718
+  }
+}
+struct_union {
+  id: 0x6a241fb6
+  kind: STRUCT
+  name: "kvm_cpu_context"
+  definition {
+    bytesize: 1824
+    member_id: 0x802b092a
+    member_id: 0x2a5b82d6
+    member_id: 0xebeb5efe
+    member_id: 0xd5f3b549
+    member_id: 0x0763cc89
+    member_id: 0x5b05aaff
+    member_id: 0x792a2a11
+    member_id: 0x983c1d18
+  }
+}
+struct_union {
+  id: 0xb47f1c0e
+  kind: STRUCT
+  name: "kvm_debug_exit_arch"
+  definition {
+    bytesize: 16
+    member_id: 0x8c045ea7
+    member_id: 0x440037d1
+    member_id: 0xe9c99bd1
+  }
+}
+struct_union {
+  id: 0xe2d4c01c
+  kind: STRUCT
+  name: "kvm_device"
+  definition {
+    bytesize: 40
+    member_id: 0xafbacb95
+    member_id: 0x730e8f88
+    member_id: 0x91796f71
+    member_id: 0xd652df47
+  }
+}
+struct_union {
+  id: 0xc6171ee9
+  kind: STRUCT
+  name: "kvm_device_attr"
+  definition {
+    bytesize: 24
+    member_id: 0x2d8eaae1
+    member_id: 0xd37422b2
+    member_id: 0x8ce95ca0
+    member_id: 0x24c024d3
+  }
+}
+struct_union {
+  id: 0xc5f74818
+  kind: STRUCT
+  name: "kvm_device_ops"
+  definition {
+    bytesize: 80
+    member_id: 0x0de57ce8
+    member_id: 0x0fad648a
+    member_id: 0x1ae7589a
+    member_id: 0xa4fbb750
+    member_id: 0xae95664d
+    member_id: 0x0bb97dbd
+    member_id: 0xbe7a98dd
+    member_id: 0x5d4925a5
+    member_id: 0x4d44694e
+    member_id: 0x87fdbe87
+  }
+}
+struct_union {
+  id: 0xfe89d18d
+  kind: STRUCT
+  name: "kvm_dirty_gfn"
+  definition {
+    bytesize: 16
+    member_id: 0x2d8eaae1
+    member_id: 0x68304f23
+    member_id: 0x9bf12a52
+  }
+}
+struct_union {
+  id: 0x95e9e529
+  kind: STRUCT
+  name: "kvm_dirty_ring"
+  definition {
+    bytesize: 32
+    member_id: 0x4647cbd4
+    member_id: 0xcfe72c2d
+    member_id: 0xd9b710b8
+    member_id: 0x275ed516
+    member_id: 0x69efcf5e
+    member_id: 0xad5e20a5
+  }
+}
+struct_union {
+  id: 0x590c6dd8
+  kind: STRUCT
+  name: "kvm_guest_debug_arch"
+  definition {
+    bytesize: 512
+    member_id: 0x5cb6e321
+    member_id: 0xb8d95da8
+    member_id: 0x6a57f232
+    member_id: 0x88756f7c
+  }
+}
+struct_union {
+  id: 0xce6b97ea
+  kind: STRUCT
+  name: "kvm_hyp_memcache"
+  definition {
+    bytesize: 16
+    member_id: 0xb5e76888
+    member_id: 0xe3b1b19e
+  }
+}
+struct_union {
+  id: 0x7ff97877
+  kind: STRUCT
+  name: "kvm_hyperv_exit"
+  definition {
+    bytesize: 56
+    member_id: 0x5cb0fbc1
+    member_id: 0x6612cc37
+    member_id: 0xec3c82cc
+  }
+}
+struct_union {
+  id: 0x1b5f79d9
+  kind: STRUCT
+  name: "kvm_io_bus"
+  definition {
+    bytesize: 8
+    member_id: 0xa05ae8b2
+    member_id: 0x3103f4d5
+    member_id: 0x0e6e7fb8
+  }
+}
+struct_union {
+  id: 0x3fc5b8b3
+  kind: STRUCT
+  name: "kvm_io_device"
+  definition {
+    bytesize: 8
+    member_id: 0xafbcd9c0
+  }
+}
+struct_union {
+  id: 0xa4d21be9
+  kind: STRUCT
+  name: "kvm_io_device_ops"
+  definition {
+    bytesize: 24
+    member_id: 0x487026f9
+    member_id: 0x342da96c
+    member_id: 0xa414c1a9
+  }
+}
+struct_union {
+  id: 0x5b1f6457
+  kind: STRUCT
+  name: "kvm_io_range"
+  definition {
+    bytesize: 24
+    member_id: 0x243694c7
+    member_id: 0xb862f164
+    member_id: 0xce3c8adf
+  }
+}
+struct_union {
+  id: 0xd9729a52
+  kind: STRUCT
+  name: "kvm_irq_level"
+  definition {
+    bytesize: 8
+    member_id: 0x3fee6444
+    member_id: 0x865cec96
+  }
+}
+struct_union {
+  id: 0xaf573835
+  kind: STRUCT
+  name: "kvm_irq_routing_table"
+  definition {
+    bytesize: 3960
+    member_id: 0xc6fa2a23
+    member_id: 0xf6e30a95
+    member_id: 0x8d25e654
+  }
+}
+struct_union {
+  id: 0xdf042930
+  kind: STRUCT
+  name: "kvm_memory_slot"
+  definition {
+    bytesize: 216
+    member_id: 0x5fb9b5cc
+    member_id: 0x864648d5
+    member_id: 0x3182bf25
+    member_id: 0x12bc1e7d
+    member_id: 0x784e4061
+    member_id: 0x050fb49d
+    member_id: 0xb83316b3
+    member_id: 0x557afbd5
+    member_id: 0x2da18f59
+    member_id: 0xcc9f133d
+    member_id: 0x2ea5323b
+  }
+}
+struct_union {
+  id: 0x07a8c893
+  kind: STRUCT
+  name: "kvm_memslots"
+  definition {
+    bytesize: 1072
+    member_id: 0x694cfe41
+    member_id: 0xabf33787
+    member_id: 0x130ace31
+    member_id: 0xc25cb27c
+    member_id: 0xba6f54b9
+    member_id: 0xdeaef990
+  }
+}
+struct_union {
+  id: 0xc6388883
+  kind: STRUCT
+  name: "kvm_mmio_fragment"
+  definition {
+    bytesize: 24
+    member_id: 0xc1d9a180
+    member_id: 0xff8a9de8
+    member_id: 0xb84059f2
+  }
+}
+struct_union {
+  id: 0xa2ba72d6
+  kind: STRUCT
+  name: "kvm_mmu_memory_cache"
+  definition {
+    bytesize: 40
+    member_id: 0x603fc5a7
+    member_id: 0x8e40fa3f
+    member_id: 0xde99678b
+    member_id: 0x85e4ba6c
+    member_id: 0xa779a4af
+    member_id: 0x2aa4f724
+  }
+}
+struct_union {
+  id: 0x029d28cb
+  kind: STRUCT
+  name: "kvm_mp_state"
+  definition {
+    bytesize: 4
+    member_id: 0xfc27981e
+  }
+}
+struct_union {
+  id: 0x6f796009
+  kind: STRUCT
+  name: "kvm_pgtable"
+  definition {
+    bytesize: 48
+    member_id: 0x83618e44
+    member_id: 0x4c6ccc95
+    member_id: 0x331a3623
+    member_id: 0xa69ad382
+    member_id: 0x6d5a2dc5
+    member_id: 0x2ddb7ced
+    member_id: 0x8661d99b
+  }
+}
+struct_union {
+  id: 0x1c1e6c54
+  kind: STRUCT
+  name: "kvm_pgtable_mm_ops"
+  definition {
+    bytesize: 80
+    member_id: 0xe15e2cfc
+    member_id: 0x511e5f54
+    member_id: 0xef540e05
+    member_id: 0xcf22b6e3
+    member_id: 0x68c1b0bb
+    member_id: 0x21516548
+    member_id: 0x66a97394
+    member_id: 0x40e6d42e
+    member_id: 0x0a10a4f8
+    member_id: 0x27f5e987
+  }
+}
+struct_union {
+  id: 0x93ebc7c6
+  kind: STRUCT
+  name: "kvm_pgtable_pte_ops"
+  definition {
+    bytesize: 16
+    member_id: 0x53106073
+    member_id: 0xeef9224d
+  }
+}
+struct_union {
+  id: 0x4025bdaf
+  kind: STRUCT
+  name: "kvm_pmc"
+  definition {
+    bytesize: 16
+    member_id: 0x3caea455
+    member_id: 0xf94346ab
+  }
+}
+struct_union {
+  id: 0xbe704ca9
+  kind: STRUCT
+  name: "kvm_pmu"
+  definition {
+    bytesize: 560
+    member_id: 0x39d6cdec
+    member_id: 0x112c08c3
+    member_id: 0x15c30de0
+    member_id: 0x94f98f17
+    member_id: 0x92faaaee
+    member_id: 0xd133b0b1
+  }
+}
+struct_union {
+  id: 0xd9b5b8b6
+  kind: STRUCT
+  name: "kvm_pmu_events"
+  definition {
+    bytesize: 8
+    member_id: 0xa9fd6a40
+    member_id: 0x97ab0bd6
+  }
+}
+struct_union {
+  id: 0xf75540c7
+  kind: STRUCT
+  name: "kvm_protected_vm"
+  definition {
+    bytesize: 64
+    member_id: 0xb8f5134f
+    member_id: 0xb6388968
+    member_id: 0xc6b10bc0
+    member_id: 0x037e99ae
+    member_id: 0x0f7f629e
+    member_id: 0x3a2d39cb
+  }
+}
+struct_union {
+  id: 0xdcd5c554
+  kind: STRUCT
+  name: "kvm_run"
+  definition {
+    bytesize: 2352
+    member_id: 0xf6476a4c
+    member_id: 0xb85c9514
+    member_id: 0xd06a5757
+    member_id: 0x4f84d1da
+    member_id: 0x6bffa57c
+    member_id: 0x7eaf49aa
+    member_id: 0x2d808bd3
+    member_id: 0x00fa5522
+    member_id: 0x5ba521f2
+    member_id: 0x3f0e6b4d
+    member_id: 0x4b1e23b0
+    member_id: 0xaa4c4a21
+    member_id: 0x67846dd9
+  }
+}
+struct_union {
+  id: 0xc9e16a53
+  kind: STRUCT
+  name: "kvm_s2_mmu"
+  definition {
+    bytesize: 40
+    member_id: 0x69149bd4
+    member_id: 0x99236fa3
+    member_id: 0x7f170713
+    member_id: 0x9555d521
+    member_id: 0xb89f1d6b
+  }
+}
+struct_union {
+  id: 0x2c432ef9
+  kind: STRUCT
+  name: "kvm_smccc_features"
+  definition {
+    bytesize: 24
+    member_id: 0x368deee8
+    member_id: 0x17d504ad
+    member_id: 0xba785216
+  }
+}
+struct_union {
+  id: 0xf0ca3374
+  kind: STRUCT
+  name: "kvm_stat_data"
+  definition {
+    bytesize: 24
+    member_id: 0x730e8b69
+    member_id: 0x87e1eb87
+    member_id: 0xd7f60431
+  }
+}
+struct_union {
+  id: 0x5a5219ed
+  kind: STRUCT
+  name: "kvm_stats_desc"
+  definition {
+    bytesize: 16
+    member_id: 0x2d8eaae1
+    member_id: 0xdf3a40d2
+    member_id: 0xd99613f3
+    member_id: 0x9bfaf69a
+    member_id: 0xe6502bd9
+    member_id: 0x0d114fce
+  }
+}
+struct_union {
+  id: 0xca67e5f6
+  kind: STRUCT
+  name: "kvm_sync_regs"
+  definition {
+    bytesize: 8
+    member_id: 0xf5b742db
+  }
+}
+struct_union {
+  id: 0x09330b45
+  kind: STRUCT
+  name: "kvm_vcpu"
+  definition {
+    bytesize: 9712
+    member_id: 0x730e8b69
+    member_id: 0xad12ae54
+    member_id: 0x5161b04d
+    member_id: 0x7c4a52b5
+    member_id: 0xbcb323c9
+    member_id: 0xfc4129b1
+    member_id: 0x87fa34df
+    member_id: 0x9f936789
+    member_id: 0xd014eabd
+    member_id: 0xad898a70
+    member_id: 0x021fd03f
+    member_id: 0x20f5a5f4
+    member_id: 0x74912d9b
+    member_id: 0x54ebc83a
+    member_id: 0xd1201d45
+    member_id: 0xcffef03f
+    member_id: 0x7e5c1bb6
+    member_id: 0xb16b8efe
+    member_id: 0xf337f353
+    member_id: 0xe4aa6cb8
+    member_id: 0x41a58807
+    member_id: 0x22a96429
+    member_id: 0x0abc4886
+    member_id: 0x36ede007
+    member_id: 0x1bd1d822
+    member_id: 0xa3f0172f
+    member_id: 0xb81bb253
+    member_id: 0xb934c444
+    member_id: 0xd657a20e
+    member_id: 0x0741ce14
+    member_id: 0xab7e4a6e
+    member_id: 0x1838fabc
+  }
+}
+struct_union {
+  id: 0xb16454d0
+  kind: STRUCT
+  name: "kvm_vcpu_arch"
+  definition {
+    bytesize: 8464
+    member_id: 0x2723fe2c
+    member_id: 0x2e0a3f7d
+    member_id: 0x05e10aeb
+    member_id: 0xae35f89b
+    member_id: 0xf34e08bb
+    member_id: 0xc4593e51
+    member_id: 0x376609fd
+    member_id: 0x0cc65d59
+    member_id: 0xdb73cbc4
+    member_id: 0x7b6a6e0c
+    member_id: 0x06effd42
+    member_id: 0x9608d64b
+    member_id: 0x50f909b7
+    member_id: 0x4e4c2253
+    member_id: 0x6d45f1ba
+    member_id: 0x7e662956
+    member_id: 0xf58a324e
+    member_id: 0x15ff4fe5
+    member_id: 0x909d979f
+    member_id: 0x2edd8c13
+    member_id: 0x76772152
+    member_id: 0x0120b46e
+    member_id: 0x93b6279b
+    member_id: 0x57b4f0b1
+    member_id: 0xfcc328ac
+    member_id: 0x37f52c8e
+    member_id: 0xb3c5f85e
+    member_id: 0xc5a16f87
+    member_id: 0xf681ca11
+    member_id: 0xa700e1ff
+    member_id: 0x80093c04
+  }
+}
+struct_union {
+  id: 0xe41fd2fe
+  kind: STRUCT
+  name: "kvm_vcpu_fault_info"
+  definition {
+    bytesize: 32
+    member_id: 0xfe44cfde
+    member_id: 0x550ab6b9
+    member_id: 0xd6cec4c2
+    member_id: 0x1de22279
+  }
+}
+struct_union {
+  id: 0x8f4af0b6
+  kind: STRUCT
+  name: "kvm_vcpu_stat"
+  definition {
+    bytesize: 888
+    member_id: 0x42be7fea
+    member_id: 0x65c703ea
+    member_id: 0x33be0c85
+    member_id: 0xff2da133
+    member_id: 0x3c9c64dc
+    member_id: 0x22f5be35
+    member_id: 0xbf28dc5b
+    member_id: 0x237f1104
+  }
+}
+struct_union {
+  id: 0x84fc1211
+  kind: STRUCT
+  name: "kvm_vcpu_stat_generic"
+  definition {
+    bytesize: 832
+    member_id: 0x0946dc8b
+    member_id: 0x0e3de808
+    member_id: 0x5f0d9541
+    member_id: 0xe9b25d2a
+    member_id: 0xdc094b5c
+    member_id: 0x5e1d7f8d
+    member_id: 0xa1ad1dfd
+    member_id: 0x47baacc5
+    member_id: 0xd7979ded
+    member_id: 0x2665d054
+    member_id: 0x8efec678
+  }
+}
+struct_union {
+  id: 0xfbb47533
+  kind: STRUCT
+  name: "kvm_vm_stat"
+  definition {
+    bytesize: 32
+    member_id: 0x42aa8b1f
+    member_id: 0x7efa09f3
+    member_id: 0x46e4dafc
+  }
+}
+struct_union {
+  id: 0x9008e757
+  kind: STRUCT
+  name: "kvm_vm_stat_generic"
+  definition {
+    bytesize: 16
+    member_id: 0x8726cc6c
+    member_id: 0xe4dfd298
+  }
+}
+struct_union {
+  id: 0x0c039fcc
+  kind: STRUCT
+  name: "kvm_vmid"
+  definition {
+    bytesize: 8
+    member_id: 0xcc3069e2
+  }
+}
+struct_union {
+  id: 0x56bbf50a
+  kind: STRUCT
+  name: "kvm_xen_exit"
+  definition {
+    bytesize: 80
+    member_id: 0x5cb0fbc1
+    member_id: 0xec1fd483
+  }
+}
+struct_union {
+  id: 0x27179756
+  kind: STRUCT
+  name: "l2cap_chan"
+  definition {
+    bytesize: 1016
+    member_id: 0x85e01956
+    member_id: 0x1804f79f
+    member_id: 0xe7c6f24f
+    member_id: 0x02ce514f
+    member_id: 0x6c332926
+    member_id: 0x72401b10
+    member_id: 0xbb57be4b
+    member_id: 0x156c52a8
+    member_id: 0x449074d3
+    member_id: 0x3f74dc70
+    member_id: 0xe6324ea8
+    member_id: 0xcfb68690
+    member_id: 0x389f86e6
+    member_id: 0x5ba8c050
+    member_id: 0xcd7f7610
+    member_id: 0x0f2ea424
+    member_id: 0x702e33bb
+    member_id: 0x872ef7a4
+    member_id: 0xc97ee4f8
+    member_id: 0x30e9183a
+    member_id: 0x0e936305
+    member_id: 0xc093344b
+    member_id: 0x01ff4e52
+    member_id: 0x082ecdd2
+    member_id: 0xb2909919
+    member_id: 0xd81d7262
+    member_id: 0x271bad93
+    member_id: 0x88a996ec
+    member_id: 0x346f4277
+    member_id: 0xbe09938e
+    member_id: 0xb0684a77
+    member_id: 0x2f1b8a8e
+    member_id: 0x63193b94
+    member_id: 0xe00a88ac
+    member_id: 0xd181d4eb
+    member_id: 0x1d659b3c
+    member_id: 0x4a8de760
+    member_id: 0x2d93321b
+    member_id: 0xe2df89eb
+    member_id: 0x220e0197
+    member_id: 0x2d5bf3c9
+    member_id: 0x07f9200a
+    member_id: 0x82644086
+    member_id: 0xa32f3594
+    member_id: 0x11eccb6a
+    member_id: 0xe2202a6c
+    member_id: 0x40d782b0
+    member_id: 0x5aeb5c9f
+    member_id: 0x944087a5
+    member_id: 0x4d6c8da9
+    member_id: 0xc1b0325d
+    member_id: 0xca85bec0
+    member_id: 0x145e355d
+    member_id: 0x3f80d66d
+    member_id: 0x0a6b3115
+    member_id: 0xc7e71b84
+    member_id: 0xfb8b4800
+    member_id: 0x71c6c5ab
+    member_id: 0x39638edc
+    member_id: 0x1d38fb44
+    member_id: 0x08fe5578
+    member_id: 0xeae65a45
+    member_id: 0xc977ae91
+    member_id: 0xd20b4d9d
+    member_id: 0x11369f07
+    member_id: 0xdd41dc2f
+    member_id: 0x6da9c259
+    member_id: 0xb58f0395
+    member_id: 0x3cacc052
+    member_id: 0x690d561b
+    member_id: 0xa3daa863
+    member_id: 0xb37d3960
+    member_id: 0xa91ea0c5
+    member_id: 0xc983e1f2
+    member_id: 0x3c96e57b
+    member_id: 0x0f6e1d34
+    member_id: 0xc0c7b6ad
+    member_id: 0xfca1d7ea
+    member_id: 0x0776a1f3
+    member_id: 0x9f26f5c6
+    member_id: 0x9546378f
+    member_id: 0x274e5514
+    member_id: 0x7c00e01c
+    member_id: 0x88f8622b
+    member_id: 0xff8a9d1f
+    member_id: 0xafbb0869
+    member_id: 0x2d4b3aaa
+    member_id: 0x2d0819dd
+    member_id: 0x63760ecd
+  }
+}
+struct_union {
+  id: 0xcce21ead
+  kind: STRUCT
+  name: "l2cap_conn"
+  definition {
+    bytesize: 472
+    member_id: 0x44415b23
+    member_id: 0x48078053
+    member_id: 0x705f8b45
+    member_id: 0xb75018f5
+    member_id: 0x4a94fedb
+    member_id: 0x9ddaf23a
+    member_id: 0xc7381900
+    member_id: 0x2f8cd3f3
+    member_id: 0xe1e6808b
+    member_id: 0xe0a3a262
+    member_id: 0x265cbc30
+    member_id: 0xf5c9c79a
+    member_id: 0xf8931a4b
+    member_id: 0xe6611b8e
+    member_id: 0x18992cf1
+    member_id: 0x8391d94d
+    member_id: 0x745075c8
+    member_id: 0x0c1eb745
+    member_id: 0xa5f84ac6
+    member_id: 0x2fb4d65d
+    member_id: 0xce703117
+    member_id: 0x857e3314
+    member_id: 0x2d081daa
+    member_id: 0x6376090e
+  }
+}
+struct_union {
+  id: 0xd9402e22
+  kind: STRUCT
+  name: "l2cap_ops"
+  definition {
+    bytesize: 136
+    member_id: 0x0ddfefbb
+    member_id: 0x6fa9956d
+    member_id: 0x5ed1adc7
+    member_id: 0xc16e0c1e
+    member_id: 0xcd7d7492
+    member_id: 0x57652d91
+    member_id: 0xa393e1e6
+    member_id: 0x49d6256c
+    member_id: 0xca916804
+    member_id: 0xf3b45c3b
+    member_id: 0xe13664ea
+    member_id: 0xea1ad985
+    member_id: 0x162031d3
+    member_id: 0xc15a5f1e
+    member_id: 0xa3265f57
+    member_id: 0x2d081dc1
+    member_id: 0x63760ebd
+  }
+}
+struct_union {
+  id: 0xa9daefe1
+  kind: STRUCT
+  name: "l2cap_seq_list"
+  definition {
+    bytesize: 16
+    member_id: 0xb5b2ba41
+    member_id: 0xee75ad07
+    member_id: 0xa8db6756
+    member_id: 0x7ce3b35b
+  }
+}
+struct_union {
+  id: 0x50798f79
+  kind: STRUCT
+  name: "l2cap_user"
+  definition {
+    bytesize: 32
+    member_id: 0x7c00ef52
+    member_id: 0xd7787ef1
+    member_id: 0xb4aeea5b
+  }
+}
+struct_union {
+  id: 0x77e7f5fe
+  kind: STRUCT
+  name: "l2tp_session"
+  definition {
+    bytesize: 328
+    member_id: 0xd614e9a5
+    member_id: 0x3b4f40b2
+    member_id: 0x152405f1
+    member_id: 0xd0759f3e
+    member_id: 0x35b0823e
+    member_id: 0x58a43d77
+    member_id: 0x5d1ee9e2
+    member_id: 0xeb14d7f0
+    member_id: 0xaffd49af
+    member_id: 0xf3486adb
+    member_id: 0x4f9872e5
+    member_id: 0xd16b3c82
+    member_id: 0x912bccee
+    member_id: 0x2e9f9cf8
+    member_id: 0x33e05349
+    member_id: 0xf5e6d5da
+    member_id: 0x6dc4334e
+    member_id: 0x0e44d10d
+    member_id: 0xcbb74623
+    member_id: 0x2d522b92
+    member_id: 0x53214f94
+    member_id: 0x0d81be10
+    member_id: 0x106237c4
+    member_id: 0xc16c3978
+    member_id: 0xb8594017
+    member_id: 0x7995666d
+    member_id: 0x62b5d817
+    member_id: 0x98f95bb3
+    member_id: 0x36015668
+    member_id: 0xb9f431ff
+    member_id: 0x5d92f8b0
+    member_id: 0x34fceaa4
+    member_id: 0xac92ac66
+    member_id: 0x0a70c706
+    member_id: 0x59c7420c
+  }
+}
+struct_union {
+  id: 0x858f3c6d
+  kind: STRUCT
+  name: "l2tp_session_cfg"
+  definition {
+    bytesize: 48
+    member_id: 0xe8e0db23
+    member_id: 0xc16c3147
+    member_id: 0xb8594e54
+    member_id: 0x79956ac1
+    member_id: 0xf348616d
+    member_id: 0x58a4393d
+    member_id: 0x5d1ee7e7
+    member_id: 0xeb14de49
+    member_id: 0xaffd48eb
+    member_id: 0x62b5d25b
+    member_id: 0x102491dd
+  }
+}
+struct_union {
+  id: 0x815cddc3
+  kind: STRUCT
+  name: "l2tp_stats"
+  definition {
+    bytesize: 80
+    member_id: 0x92858e6c
+    member_id: 0xb5cc5c1d
+    member_id: 0x641c1abd
+    member_id: 0x6a136bc1
+    member_id: 0xe85fc4bf
+    member_id: 0xa6aa7bdf
+    member_id: 0x9fdf2166
+    member_id: 0x8f865728
+    member_id: 0x44165f5d
+    member_id: 0x062a3002
+  }
+}
+struct_union {
+  id: 0xb49c82de
+  kind: STRUCT
+  name: "l2tp_tunnel"
+  definition {
+    bytesize: 392
+    member_id: 0xd614e9a5
+    member_id: 0x3b803bcb
+    member_id: 0x95dac0b5
+    member_id: 0x4dd0215a
+    member_id: 0x54cf8c37
+    member_id: 0x581f0287
+    member_id: 0x3162a41c
+    member_id: 0x2ac6dfd8
+    member_id: 0xa606165a
+    member_id: 0x0dc2a041
+    member_id: 0x28c2744c
+    member_id: 0xb9f431ff
+    member_id: 0x7c00e859
+    member_id: 0x36f832fd
+    member_id: 0x5321461b
+    member_id: 0xa9aee94d
+    member_id: 0x7619e720
+    member_id: 0x7f753d8b
+    member_id: 0xa0e8ef7b
+  }
+}
+struct_union {
+  id: 0x1790b53d
+  kind: STRUCT
+  name: "l2tp_tunnel_cfg"
+  definition {
+    bytesize: 40
+    member_id: 0x28c27df4
+    member_id: 0x93f3e583
+    member_id: 0xe1cec8c2
+    member_id: 0x7e5ef414
+    member_id: 0xf71d8398
+    member_id: 0x313d2e1a
+    member_id: 0x43389f67
+    member_id: 0x3761c8b4
+    member_id: 0x0ef2aef1
+    member_id: 0x95d4dd14
+  }
+}
+struct_union {
+  id: 0x32551440
+  kind: STRUCT
+  name: "latch_tree_node"
+  definition {
+    bytesize: 48
+    member_id: 0x0f152680
+  }
+}
+struct_union {
+  id: 0xd1b09f9e
+  kind: STRUCT
+  name: "latency_bucket"
+  definition {
+    bytesize: 16
+    member_id: 0x6a01c8ce
+    member_id: 0x153d5d78
+  }
+}
+struct_union {
+  id: 0x290e4f04
+  kind: STRUCT
+  name: "ld_semaphore"
+  definition {
+    bytesize: 48
+    member_id: 0x659574f1
+    member_id: 0xebe27333
+    member_id: 0x92caf65f
+    member_id: 0x76cc7582
+    member_id: 0x9562543e
+  }
+}
+struct_union {
+  id: 0xe16a5a0c
+  kind: STRUCT
+  name: "led_classdev"
+  definition {
+    bytesize: 424
+    member_id: 0x0de57ce8
+    member_id: 0x391aa35b
+    member_id: 0x9a73e114
+    member_id: 0x2d0fad4f
+    member_id: 0x4bd8dff1
+    member_id: 0x81a86c53
+    member_id: 0x48f50e09
+    member_id: 0xf89c6e07
+    member_id: 0x556c2adb
+    member_id: 0xecfc7880
+    member_id: 0x11dfa0ae
+    member_id: 0xce3bbcca
+    member_id: 0x930111a3
+    member_id: 0x0fa6ce01
+    member_id: 0x6bd84209
+    member_id: 0xca142b8d
+    member_id: 0xaeff4948
+    member_id: 0x74dc8ee7
+    member_id: 0x8ada29b1
+    member_id: 0x685fbe45
+    member_id: 0x678f7df1
+    member_id: 0x2c253583
+    member_id: 0xd3364d7b
+    member_id: 0xfe4ad885
+    member_id: 0x35915bcd
+    member_id: 0x441d4df3
+    member_id: 0xd5866f05
+    member_id: 0xbe478d0e
+    member_id: 0x6782af2f
+    member_id: 0x8c6c23b0
+  }
+}
+struct_union {
+  id: 0xda5f0b9e
+  kind: STRUCT
+  name: "led_classdev_flash"
+  definition {
+    bytesize: 504
+    member_id: 0xbbd532fd
+    member_id: 0xafbc9ca0
+    member_id: 0x39aed1f5
+    member_id: 0x54327bdd
+    member_id: 0x254dc3d1
+  }
+}
+struct_union {
+  id: 0xdb47e0f3
+  kind: STRUCT
+  name: "led_classdev_mc"
+  definition {
+    bytesize: 440
+    member_id: 0xbbd532fd
+    member_id: 0xbff9f20f
+    member_id: 0xc06fde3b
+  }
+}
+struct_union {
+  id: 0xa0e8fc65
+  kind: STRUCT
+  name: "led_flash_ops"
+  definition {
+    bytesize: 48
+    member_id: 0x15360220
+    member_id: 0xc169af5a
+    member_id: 0x75f61e46
+    member_id: 0x7e117656
+    member_id: 0x39fee070
+    member_id: 0xe9aff641
+  }
+}
+struct_union {
+  id: 0xf1f96361
+  kind: STRUCT
+  name: "led_flash_setting"
+  definition {
+    bytesize: 16
+    member_id: 0xf95989c1
+    member_id: 0x973f02d1
+    member_id: 0x6a086ae6
+    member_id: 0x4fdfef72
+  }
+}
+struct_union {
+  id: 0x7c389ede
+  kind: STRUCT
+  name: "led_hw_trigger_type"
+  definition {
+    bytesize: 4
+    member_id: 0x1a8b8780
+  }
+}
+struct_union {
+  id: 0xd8784143
+  kind: STRUCT
+  name: "led_init_data"
+  definition {
+    bytesize: 32
+    member_id: 0x6e4d805e
+    member_id: 0x16a5b6d7
+    member_id: 0xb718c564
+    member_id: 0xad5cb64a
+  }
+}
+struct_union {
+  id: 0xa38a6af8
+  kind: STRUCT
+  name: "led_pattern"
+  definition {
+    bytesize: 8
+    member_id: 0x30af0b87
+    member_id: 0x39380f34
+  }
+}
+struct_union {
+  id: 0x13ee7d42
+  kind: STRUCT
+  name: "led_trigger"
+  definition {
+    bytesize: 80
+    member_id: 0x0de57ce8
+    member_id: 0xdcf5f9ef
+    member_id: 0x6aca0ec8
+    member_id: 0x6782aebd
+    member_id: 0xa96b3380
+    member_id: 0xbdf74209
+    member_id: 0xe551d421
+    member_id: 0x93011aec
+  }
+}
+struct_union {
+  id: 0x6ddb99e1
+  kind: STRUCT
+  name: "libipw_device"
+}
+struct_union {
+  id: 0xa97429ce
+  kind: STRUCT
+  name: "linear_range"
+  definition {
+    bytesize: 16
+    member_id: 0xf9d5048c
+    member_id: 0xc9823ae8
+    member_id: 0x9cfcb89b
+    member_id: 0x6a84eac9
+  }
+}
+struct_union {
+  id: 0x2bf38f66
+  kind: STRUCT
+  name: "linux_binfmt"
+  definition {
+    bytesize: 56
+    member_id: 0x5e1e6450
+    member_id: 0x965f1ffc
+    member_id: 0x5ed96d73
+    member_id: 0x1c8b6f27
+    member_id: 0x72471939
+    member_id: 0xe78649a9
+  }
+}
+struct_union {
+  id: 0xea4d6d5e
+  kind: STRUCT
+  name: "linux_binprm"
+  definition {
+    bytesize: 416
+    member_id: 0x23919a13
+    member_id: 0x1b733720
+    member_id: 0x3025dc29
+    member_id: 0xa6823329
+    member_id: 0x6fcff76c
+    member_id: 0xa4fec0e3
+    member_id: 0xb549bf0e
+    member_id: 0x1be93c1d
+    member_id: 0x3247150e
+    member_id: 0xaa435256
+    member_id: 0x2bc01c2b
+    member_id: 0xbf9f3513
+    member_id: 0xcedef855
+    member_id: 0x7744e8f8
+    member_id: 0x2dbf0f8e
+    member_id: 0x20571f78
+    member_id: 0x6ef2aeb4
+    member_id: 0xb078794c
+    member_id: 0xb4f3917c
+    member_id: 0xc3f66676
+    member_id: 0x60e16ced
+    member_id: 0x2e311282
+    member_id: 0x256fc591
+    member_id: 0x455ccc20
+    member_id: 0xfc2a57f8
+    member_id: 0x9a6c304c
+  }
+}
+struct_union {
+  id: 0x823009ea
+  kind: STRUCT
+  name: "linux_mib"
+  definition {
+    bytesize: 1008
+    member_id: 0x0d6d743f
+  }
+}
+struct_union {
+  id: 0xe150c299
+  kind: STRUCT
+  name: "linux_xfrm_mib"
+  definition {
+    bytesize: 232
+    member_id: 0x0d669665
+  }
+}
+struct_union {
+  id: 0xd3c80119
+  kind: STRUCT
+  name: "list_head"
+  definition {
+    bytesize: 16
+    member_id: 0x11cd62e6
+    member_id: 0xbdb911ad
+  }
+}
+struct_union {
+  id: 0xddabec2b
+  kind: STRUCT
+  name: "list_lru"
+  definition {
+    bytesize: 48
+    member_id: 0x0f71e4ec
+    member_id: 0x7c00ebb3
+    member_id: 0x927ef18a
+    member_id: 0xe41e7098
+    member_id: 0x2de970b5
+  }
+}
+struct_union {
+  id: 0x39e9ec01
+  kind: STRUCT
+  name: "list_lru_node"
+  definition {
+    bytesize: 64
+    member_id: 0x2d1fec85
+    member_id: 0x5484b289
+    member_id: 0x4812d2a9
+  }
+}
+struct_union {
+  id: 0x86623cce
+  kind: STRUCT
+  name: "list_lru_one"
+  definition {
+    bytesize: 24
+    member_id: 0x7c00ef52
+    member_id: 0x4812dbc0
+  }
+}
+struct_union {
+  id: 0x0bf3e543
+  kind: STRUCT
+  name: "llist_head"
+  definition {
+    bytesize: 8
+    member_id: 0x1fe5f47c
+  }
+}
+struct_union {
+  id: 0x214d9bc0
+  kind: STRUCT
+  name: "llist_node"
+  definition {
+    bytesize: 8
+    member_id: 0x11f1c380
+  }
+}
+struct_union {
+  id: 0x01b0be63
+  kind: STRUCT
+  name: "load_weight"
+  definition {
+    bytesize: 16
+    member_id: 0x7e5b292d
+    member_id: 0xd13e694b
+  }
+}
+struct_union {
+  id: 0x9dc63437
+  kind: STRUCT
+  name: "local_ports"
+  definition {
+    bytesize: 20
+    member_id: 0x2decf096
+    member_id: 0x0ec9e09b
+    member_id: 0xb7cc89ba
+  }
+}
+struct_union {
+  id: 0x475137a2
+  kind: STRUCT
+  name: "lock_class_key"
+  definition {
+  }
+}
+struct_union {
+  id: 0x0aaeb24e
+  kind: STRUCT
+  name: "lock_manager_operations"
+  definition {
+    bytesize: 88
+    member_id: 0x170e74a6
+    member_id: 0x11e76197
+    member_id: 0x1492ac72
+    member_id: 0xb7c8a017
+    member_id: 0x16ef23df
+    member_id: 0xb57cc749
+    member_id: 0x8124c78d
+    member_id: 0xf2743bcf
+    member_id: 0xc68f0ffb
+    member_id: 0xec16643a
+    member_id: 0xceee7728
+  }
+}
+struct_union {
+  id: 0x5f2909b3
+  kind: STRUCT
+  name: "lockdep_map"
+  definition {
+  }
+}
+struct_union {
+  id: 0xae6f8936
+  kind: STRUCT
+  name: "lockref"
+  definition {
+    bytesize: 8
+    member_id: 0x395e097c
+  }
+}
+struct_union {
+  id: 0xd08293b6
+  kind: UNION
+  name: "lower_chunk"
+  definition {
+    bytesize: 2048
+    member_id: 0x11cdb042
+    member_id: 0xffe71c01
+  }
+}
+struct_union {
+  id: 0x18cac22d
+  kind: STRUCT
+  name: "lowpan_nhc"
+  definition {
+    bytesize: 48
+    member_id: 0x0de57ce8
+    member_id: 0xe8c4a21b
+    member_id: 0xff39e9ad
+    member_id: 0xcc06782a
+    member_id: 0xb7a34395
+    member_id: 0x1afb5041
+    member_id: 0x796a339f
+  }
+}
+struct_union {
+  id: 0x2d4e0fb5
+  kind: STRUCT
+  name: "lru_gen_folio"
+  definition {
+    bytesize: 1168
+    member_id: 0x5ac83b71
+    member_id: 0x8ae2ad7a
+    member_id: 0x5ae26986
+    member_id: 0x53e7f764
+    member_id: 0xe31e99af
+    member_id: 0x83570183
+    member_id: 0x78e6fa74
+    member_id: 0x271bcf4c
+    member_id: 0x9cd3894a
+    member_id: 0x2ee403bd
+    member_id: 0x3a2d3543
+    member_id: 0xa9f41a7b
+    member_id: 0x69bd734e
+    member_id: 0x7c080a44
+    member_id: 0x2d081497
+    member_id: 0x63760a4f
+  }
+}
+struct_union {
+  id: 0xe524f4fb
+  kind: STRUCT
+  name: "lru_gen_memcg"
+  definition {
+    bytesize: 176
+    member_id: 0xfa2f7a2e
+    member_id: 0x1a968f83
+    member_id: 0x128ba8c8
+    member_id: 0x2d1fee41
+    member_id: 0x2d08134f
+    member_id: 0x63760321
+  }
+}
+struct_union {
+  id: 0xc16769d9
+  kind: STRUCT
+  name: "lru_gen_mm_list"
+  definition {
+    bytesize: 24
+    member_id: 0x1200371b
+    member_id: 0x2d1fe547
+  }
+}
+struct_union {
+  id: 0xeb51a15e
+  kind: STRUCT
+  name: "lru_gen_mm_state"
+  definition {
+    bytesize: 96
+    member_id: 0xfa2f7a2e
+    member_id: 0xb564dfd9
+    member_id: 0xeea3cb02
+    member_id: 0x65aadbb7
+    member_id: 0xb9ebff2d
+    member_id: 0x2d08170f
+  }
+}
+struct_union {
+  id: 0x8588b58b
+  kind: STRUCT
+  name: "lru_gen_mm_walk"
+  definition {
+    bytesize: 200
+    member_id: 0x3b7b9448
+    member_id: 0x5ac83f90
+    member_id: 0x7b6ac82c
+    member_id: 0xe31cf7c3
+    member_id: 0xa668b012
+    member_id: 0xa5be4038
+    member_id: 0x297d1e7e
+    member_id: 0x056fdf60
+    member_id: 0x2d081262
+    member_id: 0x63760345
+  }
+}
+struct_union {
+  id: 0xce2040d6
+  kind: STRUCT
+  name: "lruvec"
+  definition {
+    bytesize: 1432
+    member_id: 0x56c4b4af
+    member_id: 0x50d1f939
+    member_id: 0xcabb31d9
+    member_id: 0x0a08d79f
+    member_id: 0xbd2c8ad6
+    member_id: 0x8efe1e4f
+    member_id: 0x2d5bf625
+    member_id: 0x9af97a5e
+    member_id: 0x0abfe66e
+    member_id: 0x2d272759
+    member_id: 0xed700225
+    member_id: 0x2d081d78
+    member_id: 0x63760097
+  }
+}
+struct_union {
+  id: 0xc634f4ac
+  kind: STRUCT
+  name: "lruvec_stats"
+  definition {
+    bytesize: 672
+    member_id: 0x721cc2b1
+    member_id: 0x20137fca
+  }
+}
+struct_union {
+  id: 0x99f45176
+  kind: STRUCT
+  name: "lruvec_stats_percpu"
+  definition {
+    bytesize: 672
+    member_id: 0x721cc2b1
+    member_id: 0x7d1a8137
+  }
+}
+struct_union {
+  id: 0xf18067ea
+  kind: STRUCT
+  name: "lwtunnel_state"
+  definition {
+    bytesize: 48
+    member_id: 0x5cbed63e
+    member_id: 0x2d8089a0
+    member_id: 0x3e17b5ef
+    member_id: 0xb70f0c10
+    member_id: 0x583ed41a
+    member_id: 0x12efd327
+    member_id: 0x95dac9dc
+    member_id: 0xff7ae59e
+  }
+}
+struct_union {
+  id: 0x5b3c881c
+  kind: STRUCT
+  name: "ma_state"
+  definition {
+    bytesize: 64
+    member_id: 0x29e5189b
+    member_id: 0xad0a793a
+    member_id: 0x265c71a7
+    member_id: 0x0f7b6685
+    member_id: 0xf9a3f425
+    member_id: 0x97c57562
+    member_id: 0x45c97ff8
+    member_id: 0x1b398e2e
+    member_id: 0x9b41508b
+    member_id: 0xa0e63886
+  }
+}
+struct_union {
+  id: 0x755b6647
+  kind: STRUCT
+  name: "mac_address"
+  definition {
+    bytesize: 6
+    member_id: 0x24862929
+  }
+}
+struct_union {
+  id: 0xffd81d66
+  kind: STRUCT
+  name: "macsec_context"
+  definition {
+    bytesize: 184
+    member_id: 0x3f591033
+    member_id: 0xd2dd700d
+    member_id: 0x77b9a9d1
+    member_id: 0x27a1ca9a
+    member_id: 0x1b3dda4f
+    member_id: 0xb907574d
+  }
+}
+struct_union {
+  id: 0xb302663f
+  kind: STRUCT
+  name: "macsec_dev_stats"
+  definition {
+    bytesize: 64
+    member_id: 0x7efa8968
+    member_id: 0x002015f1
+    member_id: 0x5c9b797b
+    member_id: 0x2c901a70
+    member_id: 0x2c50828d
+    member_id: 0xfcd57d78
+    member_id: 0x1dd80c1f
+    member_id: 0x40b96a74
+  }
+}
+struct_union {
+  id: 0x7c9c61bf
+  kind: STRUCT
+  name: "macsec_info"
+  definition {
+    bytesize: 8
+    member_id: 0xc9c379ce
+  }
+}
+struct_union {
+  id: 0xe8b6eac7
+  kind: STRUCT
+  name: "macsec_key"
+  definition {
+    bytesize: 40
+    member_id: 0xcc69484f
+    member_id: 0xacd64dcb
+    member_id: 0x172628fd
+  }
+}
+struct_union {
+  id: 0xd6b6e5d5
+  kind: STRUCT
+  name: "macsec_ops"
+  definition {
+    bytesize: 152
+    member_id: 0xa8e1f100
+    member_id: 0x1c38e231
+    member_id: 0xd9187e59
+    member_id: 0x780607f4
+    member_id: 0xa3c77f2c
+    member_id: 0x496bd486
+    member_id: 0xd045c881
+    member_id: 0xcfe9bda3
+    member_id: 0xc8eaf519
+    member_id: 0x57c8af1d
+    member_id: 0x4d6ac6ed
+    member_id: 0xf1cc6cb7
+    member_id: 0x0649a632
+    member_id: 0x8e9e922d
+    member_id: 0x22d49d42
+    member_id: 0x2eafa882
+    member_id: 0xba4596c7
+    member_id: 0x8a3f37b0
+    member_id: 0xbc936517
+  }
+}
+struct_union {
+  id: 0x0088b64d
+  kind: STRUCT
+  name: "macsec_rx_sa"
+  definition {
+    bytesize: 96
+    member_id: 0x20bebc44
+    member_id: 0x2019466c
+    member_id: 0x2d1fe8dc
+    member_id: 0x3a8b0ed7
+    member_id: 0xb7dcffdb
+    member_id: 0x224f203b
+    member_id: 0xb94f2726
+    member_id: 0x98ac95ed
+    member_id: 0x95dacf0e
+  }
+}
+struct_union {
+  id: 0xc348272f
+  kind: STRUCT
+  name: "macsec_rx_sa_stats"
+  definition {
+    bytesize: 20
+    member_id: 0xd08a56d3
+    member_id: 0xf7afe1f1
+    member_id: 0xdfa934f1
+    member_id: 0x1a2534fc
+    member_id: 0xc7418cf7
+  }
+}
+struct_union {
+  id: 0xccbdcf13
+  kind: STRUCT
+  name: "macsec_rx_sc"
+  definition {
+    bytesize: 88
+    member_id: 0x11cabf95
+    member_id: 0xc9c37d2f
+    member_id: 0x224f2849
+    member_id: 0x1b98b52e
+    member_id: 0xb94f0278
+    member_id: 0xb7dcf3b4
+    member_id: 0x56a72f2e
+  }
+}
+struct_union {
+  id: 0xd797353d
+  kind: STRUCT
+  name: "macsec_rx_sc_stats"
+  definition {
+    bytesize: 80
+    member_id: 0xfacb73b6
+    member_id: 0xc31a401f
+    member_id: 0x194a3117
+    member_id: 0xefc28b54
+    member_id: 0xd0818ab0
+    member_id: 0xf7a437c5
+    member_id: 0xceb56fc2
+    member_id: 0xdfa2ebaf
+    member_id: 0x1a2eeaaf
+    member_id: 0xc74a508f
+  }
+}
+struct_union {
+  id: 0x89af554e
+  kind: STRUCT
+  name: "macsec_secy"
+  definition {
+    bytesize: 104
+    member_id: 0x92c34ca7
+    member_id: 0xa072a048
+    member_id: 0xc9c3700c
+    member_id: 0x043870df
+    member_id: 0xa75f3275
+    member_id: 0x4eba78a3
+    member_id: 0x75da330f
+    member_id: 0xcd538228
+    member_id: 0xbe992d26
+    member_id: 0x82824682
+    member_id: 0x0d2403fc
+    member_id: 0x2754e087
+    member_id: 0x27a1cafd
+  }
+}
+struct_union {
+  id: 0x3c16f8ae
+  kind: STRUCT
+  name: "macsec_tx_sa"
+  definition {
+    bytesize: 88
+    member_id: 0x20bebc44
+    member_id: 0x2019466c
+    member_id: 0x2d1fe8dc
+    member_id: 0x3a8b0ed7
+    member_id: 0xb7dcffdb
+    member_id: 0x224f203b
+    member_id: 0xb945ac82
+    member_id: 0x95dac005
+  }
+}
+struct_union {
+  id: 0xe966b60f
+  kind: STRUCT
+  name: "macsec_tx_sa_stats"
+  definition {
+    bytesize: 8
+    member_id: 0xaf324578
+    member_id: 0x558027a1
+  }
+}
+struct_union {
+  id: 0x10133b9a
+  kind: STRUCT
+  name: "macsec_tx_sc"
+  definition {
+    bytesize: 56
+    member_id: 0x224f218b
+    member_id: 0x5ce87ef3
+    member_id: 0x897f3adb
+    member_id: 0xaf915012
+    member_id: 0x357800a2
+    member_id: 0x93a30d5c
+    member_id: 0x1b9b70e2
+    member_id: 0xb9766b83
+    member_id: 0x966b766d
+  }
+}
+struct_union {
+  id: 0x3c4b5da3
+  kind: STRUCT
+  name: "macsec_tx_sc_stats"
+  definition {
+    bytesize: 32
+    member_id: 0xaf3999b0
+    member_id: 0x558bf2b3
+    member_id: 0x0606d979
+    member_id: 0xd590f436
+  }
+}
+struct_union {
+  id: 0xbd562aba
+  kind: STRUCT
+  name: "maple_alloc"
+  definition {
+    bytesize: 256
+    member_id: 0x9d60071e
+    member_id: 0x34366eb8
+    member_id: 0xb494a852
+    member_id: 0x68e48e5e
+  }
+}
+struct_union {
+  id: 0x13c36ed4
+  kind: STRUCT
+  name: "maple_enode"
+}
+struct_union {
+  id: 0xa179a8c5
+  kind: STRUCT
+  name: "maple_tree"
+  definition {
+    bytesize: 24
+    member_id: 0x3522cd70
+    member_id: 0x70fc2f56
+    member_id: 0x7cfb135c
+  }
+}
+struct_union {
+  id: 0x29d77c73
+  kind: STRUCT
+  name: "match_token"
+  definition {
+    bytesize: 16
+    member_id: 0x36b9b605
+    member_id: 0x9b357609
+  }
+}
+struct_union {
+  id: 0xe0108a33
+  kind: STRUCT
+  name: "mbox_chan"
+  definition {
+    bytesize: 248
+    member_id: 0xaea16832
+    member_id: 0x74f35584
+    member_id: 0xc995a488
+    member_id: 0xafefa22d
+    member_id: 0x71a4e651
+    member_id: 0xb97aec9d
+    member_id: 0x2a36e18d
+    member_id: 0x7fc2dde8
+    member_id: 0x2d1fe798
+    member_id: 0x7717d8b7
+  }
+}
+struct_union {
+  id: 0xcafb17d7
+  kind: STRUCT
+  name: "mbox_chan_ops"
+  definition {
+    bytesize: 48
+    member_id: 0xbd9e514e
+    member_id: 0x7f80e1b6
+    member_id: 0x564d0a7e
+    member_id: 0x9ef8a782
+    member_id: 0x996b918d
+    member_id: 0xa62afb0a
+  }
+}
+struct_union {
+  id: 0x79b84dfe
+  kind: STRUCT
+  name: "mbox_client"
+  definition {
+    bytesize: 56
+    member_id: 0xce3bbab3
+    member_id: 0xb9afe49e
+    member_id: 0xcff5d22d
+    member_id: 0x566fd7a7
+    member_id: 0xc1649620
+    member_id: 0xd929934a
+    member_id: 0xf94b13c8
+  }
+}
+struct_union {
+  id: 0xc9b7b39b
+  kind: STRUCT
+  name: "mbox_controller"
+  definition {
+    bytesize: 144
+    member_id: 0xce3bbab3
+    member_id: 0xafba3fb1
+    member_id: 0x49bb581e
+    member_id: 0xc21eb7ca
+    member_id: 0x6bfc4a3f
+    member_id: 0x9152f264
+    member_id: 0x62422f28
+    member_id: 0x4a6638cf
+    member_id: 0x13754151
+    member_id: 0xf6cb8558
+    member_id: 0x0fa6c1b0
+  }
+}
+struct_union {
+  id: 0x6cf91ce1
+  kind: STRUCT
+  name: "mc_subled"
+  definition {
+    bytesize: 16
+    member_id: 0x34e51729
+    member_id: 0x391aaa81
+    member_id: 0x31cd18d3
+    member_id: 0x4cf705cd
+  }
+}
+struct_union {
+  id: 0x189e54fa
+  kind: STRUCT
+  name: "mctrl_gpios"
+  definition {
+    bytesize: 88
+    member_id: 0x48fbae39
+    member_id: 0x07a564e2
+    member_id: 0x99cadb25
+    member_id: 0x949ab98b
+    member_id: 0xe219365f
+  }
+}
+struct_union {
+  id: 0xbc744b2f
+  kind: STRUCT
+  name: "mdio_bus_stats"
+  definition {
+    bytesize: 32
+    member_id: 0x09882146
+    member_id: 0x636e25c6
+    member_id: 0x3b2f460a
+    member_id: 0x28e68b29
+    member_id: 0x0d9bbc8e
+  }
+}
+struct_union {
+  id: 0x6fb840c8
+  kind: STRUCT
+  name: "mdio_device"
+  definition {
+    bytesize: 1008
+    member_id: 0xce1ac149
+    member_id: 0xdae5fe2a
+    member_id: 0x2f2ce7e5
+    member_id: 0xcb67cf5e
+    member_id: 0x17ccf7c2
+    member_id: 0x31f01d64
+    member_id: 0x244af250
+    member_id: 0x2d0fa7a2
+    member_id: 0x68b1ce86
+    member_id: 0xc7abed37
+    member_id: 0x147cd330
+    member_id: 0x84f603b2
+  }
+}
+struct_union {
+  id: 0x4814eed5
+  kind: STRUCT
+  name: "mdio_driver_common"
+  definition {
+    bytesize: 184
+    member_id: 0xd4ad4c68
+    member_id: 0x2d0fa67e
+  }
+}
+struct_union {
+  id: 0x44a88bea
+  kind: STRUCT
+  name: "media_ctl"
+  definition {
+    bytesize: 248
+    member_id: 0xdda9231e
+    member_id: 0x68246ee4
+    member_id: 0x02cbf0af
+    member_id: 0xa4ad6340
+    member_id: 0x960530b0
+    member_id: 0xf70ae3f7
+  }
+}
+struct_union {
+  id: 0x72ce92ac
+  kind: STRUCT
+  name: "media_device"
+  definition {
+    bytesize: 696
+    member_id: 0xce3bbab3
+    member_id: 0x1e9a3896
+    member_id: 0xdf104525
+    member_id: 0xf47131f4
+    member_id: 0xa7a9403c
+    member_id: 0x9db2f0c0
+    member_id: 0x27c7648e
+    member_id: 0x6598db31
+    member_id: 0xcce62e39
+    member_id: 0x976a6568
+    member_id: 0x94e4b92e
+    member_id: 0xe259ca35
+    member_id: 0x54b2e97d
+    member_id: 0xabcf2b3f
+    member_id: 0x34590682
+    member_id: 0x95a10973
+    member_id: 0x0c41e25a
+    member_id: 0x714b0910
+    member_id: 0x020e349b
+    member_id: 0x05308db5
+    member_id: 0xe3d208ab
+    member_id: 0xafb84cb3
+    member_id: 0x14ca1102
+    member_id: 0xde8058c3
+  }
+}
+struct_union {
+  id: 0xedc623ec
+  kind: STRUCT
+  name: "media_device_ops"
+  definition {
+    bytesize: 40
+    member_id: 0x0a406ba2
+    member_id: 0x6b7d005a
+    member_id: 0x730fbdc7
+    member_id: 0x6b98bee2
+    member_id: 0x0cb3ae89
+  }
+}
+struct_union {
+  id: 0xc3d9368e
+  kind: STRUCT
+  name: "media_devnode"
+  definition {
+    bytesize: 1096
+    member_id: 0xdda9231e
+    member_id: 0xb1a0ccc6
+    member_id: 0xce1ac88b
+    member_id: 0x05c97a40
+    member_id: 0x7233231d
+    member_id: 0xc8402f4a
+    member_id: 0x2d5bf4f3
+    member_id: 0xae95ec03
+  }
+}
+struct_union {
+  id: 0x501df1d2
+  kind: STRUCT
+  name: "media_entity"
+  definition {
+    bytesize: 120
+    member_id: 0xa9a4a65a
+    member_id: 0x0de57c43
+    member_id: 0x9c9c695d
+    member_id: 0xaba28ed7
+    member_id: 0x2d5bf0a8
+    member_id: 0xcdf1987b
+    member_id: 0x6119a4ee
+    member_id: 0x373ff332
+    member_id: 0x589ca94a
+    member_id: 0xab0027ec
+    member_id: 0x3459027f
+    member_id: 0xafb04961
+    member_id: 0x99e966ee
+    member_id: 0xcd397bbc
+  }
+}
+struct_union {
+  id: 0xd7f1f384
+  kind: STRUCT
+  name: "media_entity_enum"
+  definition {
+    bytesize: 16
+    member_id: 0xdb7d584f
+    member_id: 0x97fb3277
+  }
+}
+struct_union {
+  id: 0x6d52e181
+  kind: STRUCT
+  name: "media_entity_operations"
+  definition {
+    bytesize: 32
+    member_id: 0xf8564730
+    member_id: 0x8a9ef2e8
+    member_id: 0x0afca38e
+    member_id: 0xa6070b52
+  }
+}
+struct_union {
+  id: 0x1d3e5adb
+  kind: STRUCT
+  name: "media_file_operations"
+  definition {
+    bytesize: 64
+    member_id: 0x4a965250
+    member_id: 0x48537241
+    member_id: 0x340ece87
+    member_id: 0x5e16b860
+    member_id: 0x4d46ce0b
+    member_id: 0x4a5b7780
+    member_id: 0xad98fef0
+    member_id: 0xaeb48b4b
+  }
+}
+struct_union {
+  id: 0x91a3b063
+  kind: STRUCT
+  name: "media_gobj"
+  definition {
+    bytesize: 32
+    member_id: 0xbb1af1d1
+    member_id: 0xcce6205b
+    member_id: 0x7c00e690
+  }
+}
+struct_union {
+  id: 0x6007f65d
+  kind: STRUCT
+  name: "media_graph"
+  definition {
+    bytesize: 280
+    member_id: 0xbfb0d276
+    member_id: 0x9fb41354
+    member_id: 0xb62beea6
+  }
+}
+struct_union {
+  id: 0xb6a3bde6
+  kind: STRUCT
+  name: "media_interface"
+  definition {
+    bytesize: 56
+    member_id: 0xa9a4a65a
+    member_id: 0x345904ad
+    member_id: 0x5c9fdcc7
+    member_id: 0x2da18e15
+  }
+}
+struct_union {
+  id: 0x67677a67
+  kind: STRUCT
+  name: "media_intf_devnode"
+  definition {
+    bytesize: 64
+    member_id: 0x8a8c82f2
+    member_id: 0xcb76e746
+    member_id: 0xc8ee0a2c
+  }
+}
+struct_union {
+  id: 0xc1cf188c
+  kind: STRUCT
+  name: "media_link"
+  definition {
+    bytesize: 88
+    member_id: 0xa9a4a65a
+    member_id: 0x7c00eff9
+    member_id: 0x336ede77
+    member_id: 0x3f6251d7
+    member_id: 0x6ec28ed3
+    member_id: 0x2d5bf848
+    member_id: 0x2c97ece5
+  }
+}
+struct_union {
+  id: 0x595a11b6
+  kind: STRUCT
+  name: "media_pad"
+  definition {
+    bytesize: 64
+    member_id: 0xa9a4a65a
+    member_id: 0x44d450be
+    member_id: 0xada842c7
+    member_id: 0xb79e9d9b
+    member_id: 0x2d5bf0a8
+    member_id: 0x99fb0614
+  }
+}
+struct_union {
+  id: 0x76e78cd9
+  kind: STRUCT
+  name: "media_pipeline"
+  definition {
+    bytesize: 40
+    member_id: 0x416117c9
+    member_id: 0xbb1af530
+    member_id: 0xabcf29e0
+    member_id: 0x991358b4
+  }
+}
+struct_union {
+  id: 0xbf08d2c8
+  kind: STRUCT
+  name: "media_request"
+  definition {
+    bytesize: 112
+    member_id: 0xbb1af1d1
+    member_id: 0x02ce5d67
+    member_id: 0xd48f2f23
+    member_id: 0x72e6fd6b
+    member_id: 0xb16eef89
+    member_id: 0xb2f2c4ad
+    member_id: 0x2a7b8799
+    member_id: 0xe858894f
+    member_id: 0x33cdf4b3
+    member_id: 0x2d1fef3f
+  }
+}
+struct_union {
+  id: 0xb8aff650
+  kind: STRUCT
+  name: "media_request_object"
+  definition {
+    bytesize: 48
+    member_id: 0xafb1da32
+    member_id: 0x59119c40
+    member_id: 0x93fd6a0a
+    member_id: 0x7c00e79b
+    member_id: 0x02ce5e41
+    member_id: 0x8c509758
+  }
+}
+struct_union {
+  id: 0x74ed3911
+  kind: STRUCT
+  name: "media_request_object_ops"
+  definition {
+    bytesize: 40
+    member_id: 0x3d5512af
+    member_id: 0xc6f52ac7
+    member_id: 0xaddefde0
+    member_id: 0x59960449
+    member_id: 0xae940fa1
+  }
+}
+struct_union {
+  id: 0x5f2e5e34
+  kind: STRUCT
+  name: "mem_cgroup"
+  definition {
+    bytesize: 2304
+    member_id: 0xde0d95ff
+    member_id: 0xccfa0c4b
+    member_id: 0x1f7cc14f
+    member_id: 0x30a73d6c
+    member_id: 0x7fa3827e
+    member_id: 0x285a3906
+    member_id: 0x98e704a8
+    member_id: 0x27a4adf4
+    member_id: 0xc275ef88
+    member_id: 0xffe1ad3e
+    member_id: 0xdc2bf7db
+    member_id: 0x46c8b3a0
+    member_id: 0x74f180d0
+    member_id: 0xb975b75f
+    member_id: 0x1e5cee5b
+    member_id: 0x5701ba28
+    member_id: 0x6f574ae5
+    member_id: 0xb2fb579d
+    member_id: 0x3b00e790
+    member_id: 0xcb363735
+    member_id: 0x005ca579
+    member_id: 0x77a15088
+    member_id: 0x8e13da67
+    member_id: 0xb1f53d97
+    member_id: 0xcb455b08
+    member_id: 0x82af8809
+    member_id: 0x46beaefc
+    member_id: 0xe141f65e
+    member_id: 0x4f73c01d
+    member_id: 0x9cdca32e
+    member_id: 0x93bed98e
+    member_id: 0x839950d1
+    member_id: 0x788d7bed
+    member_id: 0xfd0689cd
+    member_id: 0x1aacf97b
+    member_id: 0x9ae05512
+    member_id: 0x833679bd
+    member_id: 0x179889d6
+    member_id: 0x016d580f
+    member_id: 0x40cb6140
+    member_id: 0x7bc96ce3
+    member_id: 0xce528668
+    member_id: 0x5812a5b7
+    member_id: 0x5cbd60fc
+    member_id: 0xd1665174
+    member_id: 0xd6abc98b
+    member_id: 0xd988ce91
+  }
+}
+struct_union {
+  id: 0xd52bc7d2
+  kind: STRUCT
+  name: "mem_cgroup_id"
+  definition {
+    bytesize: 8
+    member_id: 0xcc480c42
+    member_id: 0xceb80908
+  }
+}
+struct_union {
+  id: 0x56af600e
+  kind: STRUCT
+  name: "mem_cgroup_per_node"
+  definition {
+    bytesize: 2344
+    member_id: 0x3b8cac21
+    member_id: 0xa2a9e3ca
+    member_id: 0xd9cef51a
+    member_id: 0xaf750508
+    member_id: 0x2ba084ff
+    member_id: 0x8f88eff7
+    member_id: 0x22d40447
+    member_id: 0x46bd9b3d
+    member_id: 0xe0a29eeb
+    member_id: 0xc76cf9c1
+  }
+}
+struct_union {
+  id: 0xc24d58cd
+  kind: STRUCT
+  name: "mem_cgroup_reclaim_iter"
+  definition {
+    bytesize: 16
+    member_id: 0x90dad6ba
+    member_id: 0x699b5cf5
+  }
+}
+struct_union {
+  id: 0xd4b51d53
+  kind: STRUCT
+  name: "mem_cgroup_threshold"
+  definition {
+    bytesize: 16
+    member_id: 0xf60cfd18
+    member_id: 0x56fabdc6
+  }
+}
+struct_union {
+  id: 0xc28f8b49
+  kind: STRUCT
+  name: "mem_cgroup_threshold_ary"
+  definition {
+    bytesize: 8
+    member_id: 0x14022003
+    member_id: 0xd93b942f
+    member_id: 0xbe8c49ed
+  }
+}
+struct_union {
+  id: 0x2f2113b1
+  kind: STRUCT
+  name: "mem_cgroup_thresholds"
+  definition {
+    bytesize: 16
+    member_id: 0xacd7d7ca
+    member_id: 0x420573cb
+  }
+}
+struct_union {
+  id: 0x18b59e5b
+  kind: STRUCT
+  name: "mem_dqblk"
+  definition {
+    bytesize: 72
+    member_id: 0xdae271b1
+    member_id: 0x19616f8a
+    member_id: 0xaafb29a3
+    member_id: 0xa161f6cc
+    member_id: 0x115e672d
+    member_id: 0x442bbd24
+    member_id: 0x33406084
+    member_id: 0xcfc394d4
+    member_id: 0x9b945d6d
+  }
+}
+struct_union {
+  id: 0x5b05faf7
+  kind: STRUCT
+  name: "mem_dqinfo"
+  definition {
+    bytesize: 72
+    member_id: 0x4c9cbc41
+    member_id: 0x20d96c9a
+    member_id: 0x5abab5f6
+    member_id: 0x21a42924
+    member_id: 0x03c6a3bb
+    member_id: 0x0d03d1ca
+    member_id: 0xda949563
+    member_id: 0xc056064d
+    member_id: 0xf97c2c47
+  }
+}
+struct_union {
+  id: 0x509cd61e
+  kind: STRUCT
+  name: "mem_section"
+  definition {
+    bytesize: 32
+    member_id: 0x1e3506ce
+    member_id: 0x076f0c3b
+    member_id: 0x15bab41a
+    member_id: 0x6be7fc11
+  }
+}
+struct_union {
+  id: 0x3c4732a3
+  kind: STRUCT
+  name: "mem_section_usage"
+  definition {
+    bytesize: 8
+    member_id: 0x16cbf547
+    member_id: 0x71dc8fac
+  }
+}
+struct_union {
+  id: 0x91a6d74c
+  kind: STRUCT
+  name: "memcg_cgwb_frn"
+  definition {
+    bytesize: 40
+    member_id: 0xc1d6024c
+    member_id: 0x042fd3b9
+    member_id: 0xd1b258a6
+    member_id: 0x1dcb6606
+  }
+}
+struct_union {
+  id: 0x9ffa3bcc
+  kind: STRUCT
+  name: "memcg_vmstats"
+  definition {
+    bytesize: 1024
+    member_id: 0x7280b587
+    member_id: 0x110fb720
+    member_id: 0x208f01e9
+    member_id: 0xcd1bd01e
+  }
+}
+struct_union {
+  id: 0x14f19451
+  kind: STRUCT
+  name: "memcg_vmstats_percpu"
+  definition {
+    bytesize: 1048
+    member_id: 0x7280b587
+    member_id: 0x110fb720
+    member_id: 0x7d86ff14
+    member_id: 0x2134a503
+    member_id: 0x75f0a37b
+    member_id: 0x167e5754
+  }
+}
+struct_union {
+  id: 0x3df30456
+  kind: STRUCT
+  name: "mempool_s"
+  definition {
+    bytesize: 72
+    member_id: 0x2d1fec85
+    member_id: 0x31458425
+    member_id: 0x6eb1afd3
+    member_id: 0x987d7024
+    member_id: 0x3772a386
+    member_id: 0x45f1ded2
+    member_id: 0xfe9e40c2
+    member_id: 0x202d9600
+  }
+}
+struct_union {
+  id: 0xabe3bacb
+  kind: STRUCT
+  name: "merkle_tree_params"
+  definition {
+    bytesize: 120
+    member_id: 0x13cc7c9a
+    member_id: 0x0f1ed096
+    member_id: 0x19908cca
+    member_id: 0x3c120105
+    member_id: 0x5c144d3c
+    member_id: 0xc5b263cc
+    member_id: 0xafe59b54
+    member_id: 0x586b7df7
+    member_id: 0xec651640
+    member_id: 0x8615b3ed
+    member_id: 0xe792adb8
+    member_id: 0xc20874ac
+    member_id: 0xe43a5cb4
+    member_id: 0x0fa7a04b
+  }
+}
+struct_union {
+  id: 0xc4315fb9
+  kind: STRUCT
+  name: "metadata_dst"
+  definition {
+    bytesize: 200
+    member_id: 0xbb928e49
+    member_id: 0x5c32c5f3
+    member_id: 0xec395aa8
+  }
+}
+struct_union {
+  id: 0xf865cc2f
+  kind: STRUCT
+  name: "mfd_cell"
+  definition {
+    bytesize: 144
+    member_id: 0x0de57ce8
+    member_id: 0xcc4808a3
+    member_id: 0x86dde642
+    member_id: 0x98c905a1
+    member_id: 0x0da3ea4c
+    member_id: 0xf394d5ee
+    member_id: 0xcab1e4d7
+    member_id: 0x38c65597
+    member_id: 0x5a412c6a
+    member_id: 0xb36c4635
+    member_id: 0x862e8516
+    member_id: 0x42ee2b24
+    member_id: 0x765641af
+    member_id: 0x4ff7664a
+    member_id: 0xdc465f86
+    member_id: 0x19740c14
+    member_id: 0x3c0613fc
+    member_id: 0x341fe036
+    member_id: 0x48a33f11
+    member_id: 0xed43063f
+  }
+}
+struct_union {
+  id: 0x09e792ae
+  kind: STRUCT
+  name: "mfd_cell_acpi_match"
+  definition {
+    bytesize: 16
+    member_id: 0x207c8d17
+    member_id: 0x6e613216
+  }
+}
+struct_union {
+  id: 0xfd14a591
+  kind: STRUCT
+  name: "mii_bus"
+  definition {
+    bytesize: 2832
+    member_id: 0x4a965250
+    member_id: 0x0de57809
+    member_id: 0xcc14b602
+    member_id: 0x59119ed8
+    member_id: 0x487391bb
+    member_id: 0x342e10cf
+    member_id: 0x629300a3
+    member_id: 0xb90eb532
+    member_id: 0xe9193316
+    member_id: 0x72332a86
+    member_id: 0x72a0ef25
+    member_id: 0xce1acdd7
+    member_id: 0xd1b6ba65
+    member_id: 0x3c458f83
+    member_id: 0x6ffc7b88
+    member_id: 0x993fb5da
+    member_id: 0x88983d46
+    member_id: 0x7df2f22e
+    member_id: 0x3e118cfb
+    member_id: 0xc9684970
+    member_id: 0x079a91c2
+    member_id: 0x3bc105b2
+  }
+}
+struct_union {
+  id: 0x62249e35
+  kind: STRUCT
+  name: "mii_if_info"
+  definition {
+    bytesize: 48
+    member_id: 0xad6edd33
+    member_id: 0x9f16e345
+    member_id: 0xd6e5c6b0
+    member_id: 0x386b59a8
+    member_id: 0x9034a01c
+    member_id: 0x5c082ca7
+    member_id: 0xa91c3239
+    member_id: 0xce0b4ca0
+    member_id: 0x8da29d66
+    member_id: 0x2fb1c3e7
+  }
+}
+struct_union {
+  id: 0xfdc61042
+  kind: STRUCT
+  name: "mii_ioctl_data"
+  definition {
+    bytesize: 8
+    member_id: 0xade1fea0
+    member_id: 0x5b0ec69f
+    member_id: 0xdf4f7b1b
+    member_id: 0xc7438034
+  }
+}
+struct_union {
+  id: 0x0e1ea6e1
+  kind: STRUCT
+  name: "mii_timestamper"
+  definition {
+    bytesize: 48
+    member_id: 0x2aa685e6
+    member_id: 0x6f2ecf9b
+    member_id: 0xbf26ddb2
+    member_id: 0x46f0d47d
+    member_id: 0x846f423a
+    member_id: 0xea3077fb
+  }
+}
+struct_union {
+  id: 0xf1831254
+  kind: STRUCT
+  name: "mini_Qdisc"
+  definition {
+    bytesize: 40
+    member_id: 0x73f00c79
+    member_id: 0x426a4225
+    member_id: 0x24779a6a
+    member_id: 0x0d67a7df
+    member_id: 0x73407d9e
+  }
+}
+struct_union {
+  id: 0x0fc94b61
+  kind: STRUCT
+  name: "mipi_dsi_device"
+  definition {
+    bytesize: 984
+    member_id: 0xb8db8057
+    member_id: 0xce1ac5a8
+    member_id: 0x0dc2a395
+    member_id: 0x4cf7008a
+    member_id: 0x3d3cbf60
+    member_id: 0x08969809
+    member_id: 0x8b426491
+    member_id: 0xcbd5c12a
+    member_id: 0x9a3a1e6c
+    member_id: 0x3c3a7c4f
+  }
+}
+struct_union {
+  id: 0xcf88a243
+  kind: STRUCT
+  name: "mipi_dsi_device_info"
+  definition {
+    bytesize: 32
+    member_id: 0x5c4f1bfe
+    member_id: 0x4c7b8ce3
+    member_id: 0x0f417564
+  }
+}
+struct_union {
+  id: 0xf07658d4
+  kind: STRUCT
+  name: "mipi_dsi_driver"
+  definition {
+    bytesize: 200
+    member_id: 0xd4ad4c68
+    member_id: 0xd77b67e3
+    member_id: 0xb4adf7e1
+    member_id: 0x9efb1acb
+  }
+}
+struct_union {
+  id: 0x94df28bf
+  kind: STRUCT
+  name: "mipi_dsi_host"
+  definition {
+    bytesize: 32
+    member_id: 0xce3bbab3
+    member_id: 0xafb9c47f
+    member_id: 0x7c00e690
+  }
+}
+struct_union {
+  id: 0xf547f66b
+  kind: STRUCT
+  name: "mipi_dsi_host_ops"
+  definition {
+    bytesize: 24
+    member_id: 0x961aa8fc
+    member_id: 0x0e0adb4b
+    member_id: 0x625eae55
+  }
+}
+struct_union {
+  id: 0x6682a341
+  kind: STRUCT
+  name: "mipi_dsi_msg"
+  definition {
+    bytesize: 40
+    member_id: 0x4c9bd55a
+    member_id: 0x5c7f82ea
+    member_id: 0x2df9c75f
+    member_id: 0xe94d3e4e
+    member_id: 0xa2a43932
+    member_id: 0x264eaddd
+    member_id: 0xfeaea4ba
+  }
+}
+struct_union {
+  id: 0xa4b4a67c
+  kind: STRUCT
+  name: "mipi_dsi_packet"
+  definition {
+    bytesize: 32
+    member_id: 0xd98a291a
+    member_id: 0xefaac05f
+    member_id: 0x9fa30dde
+    member_id: 0xa7511de0
+  }
+}
+struct_union {
+  id: 0x93c27c54
+  kind: STRUCT
+  name: "miscdevice"
+  definition {
+    bytesize: 80
+    member_id: 0xc8402364
+    member_id: 0x0de57809
+    member_id: 0xb1aa5772
+    member_id: 0x7c00e79b
+    member_id: 0x72332dc4
+    member_id: 0x2d659a6d
+    member_id: 0x930114e9
+    member_id: 0x8b5fc0c2
+    member_id: 0x878f4f9a
+  }
+}
+struct_union {
+  id: 0xf681317f
+  kind: STRUCT
+  name: "mls_level"
+  definition {
+    bytesize: 24
+    member_id: 0xdd7d0bae
+    member_id: 0x1133d766
+  }
+}
+struct_union {
+  id: 0xe0987ef0
+  kind: STRUCT
+  name: "mls_range"
+  definition {
+    bytesize: 48
+    member_id: 0x86ebc61e
+  }
+}
+struct_union {
+  id: 0x51c04992
+  kind: STRUCT
+  name: "mm_rss_stat"
+  definition {
+    bytesize: 32
+    member_id: 0x6585181a
+  }
+}
+struct_union {
+  id: 0x469bf814
+  kind: STRUCT
+  name: "mm_struct"
+  definition {
+    bytesize: 960
+    member_id: 0x26c145c8
+    member_id: 0x1e7e63bb
+  }
+}
+struct_union {
+  id: 0x9b209e15
+  kind: STRUCT
+  name: "mmc_blk_data"
+  definition {
+    bytesize: 536
+    member_id: 0x72332a03
+    member_id: 0x6071a578
+    member_id: 0xadd44406
+    member_id: 0x799ca105
+    member_id: 0x5e45de2a
+    member_id: 0x2d2d03e8
+    member_id: 0x02ce5707
+    member_id: 0xd9c40125
+    member_id: 0x13792d21
+    member_id: 0xd6333fad
+    member_id: 0x2b5d1df4
+    member_id: 0xa9845e3d
+    member_id: 0x7a7d136d
+    member_id: 0x2b9f6f75
+  }
+}
+struct_union {
+  id: 0xe1f2ee1b
+  kind: STRUCT
+  name: "mmc_bus_ops"
+  definition {
+    bytesize: 104
+    member_id: 0xb4ae0703
+    member_id: 0x985bc266
+    member_id: 0xfd67730a
+    member_id: 0xf3944f65
+    member_id: 0xcab17152
+    member_id: 0x9616f2b3
+    member_id: 0xd5fc56d7
+    member_id: 0xe88dc597
+    member_id: 0x9edbaaaa
+    member_id: 0xdb5a03f4
+    member_id: 0x52202ab0
+    member_id: 0xe1b6e589
+    member_id: 0x9b252d03
+  }
+}
+struct_union {
+  id: 0x23d47139
+  kind: STRUCT
+  name: "mmc_card"
+  definition {
+    bytesize: 1888
+    member_id: 0xb8c23eec
+    member_id: 0xce1ac5a8
+    member_id: 0xec90d247
+    member_id: 0x5c647429
+    member_id: 0x5c135c0a
+    member_id: 0x72b6775d
+    member_id: 0x2a067c6e
+    member_id: 0xdd760636
+    member_id: 0x2526a39a
+    member_id: 0xd5efa22e
+    member_id: 0x5442c317
+    member_id: 0x672512e5
+    member_id: 0x22996cc3
+    member_id: 0xdd66cdcc
+    member_id: 0x76ff32c6
+    member_id: 0xb0528a7b
+    member_id: 0xb1cc99d8
+    member_id: 0xe598aee8
+    member_id: 0xe3e214cc
+    member_id: 0x6c74541a
+    member_id: 0x03bc3c31
+    member_id: 0xead7848f
+    member_id: 0x9755fab4
+    member_id: 0xb9810bdf
+    member_id: 0x5e970f2a
+    member_id: 0xc37c7785
+    member_id: 0x7fec7163
+    member_id: 0x4e254e0a
+    member_id: 0x8e0ff611
+    member_id: 0x44d8db7d
+    member_id: 0xcf891492
+    member_id: 0xc5c0de60
+    member_id: 0x8f8b8553
+    member_id: 0x659b959c
+    member_id: 0x398f5aba
+    member_id: 0x2da84bc5
+    member_id: 0xcd591692
+    member_id: 0x93ee636b
+    member_id: 0x480b02c3
+    member_id: 0x2716b082
+    member_id: 0x0022ce3c
+    member_id: 0x83e53eaa
+    member_id: 0x793fd355
+    member_id: 0x79bd2bfb
+    member_id: 0xc938cc08
+    member_id: 0x2d08155b
+    member_id: 0x6376065f
+  }
+}
+struct_union {
+  id: 0xa9acd9db
+  kind: STRUCT
+  name: "mmc_cid"
+  definition {
+    bytesize: 28
+    member_id: 0x0cac834b
+    member_id: 0x6c30be40
+    member_id: 0x5c8886c7
+    member_id: 0xa7c0c3bd
+    member_id: 0xc03481fc
+    member_id: 0x580a5dd4
+    member_id: 0x069b968a
+    member_id: 0xcbb00db4
+    member_id: 0x6418478e
+  }
+}
+struct_union {
+  id: 0x90e38325
+  kind: STRUCT
+  name: "mmc_command"
+  definition {
+    bytesize: 56
+    member_id: 0xfc0c0365
+    member_id: 0xa9c8cfde
+    member_id: 0x7347b99f
+    member_id: 0x2d2d09f1
+    member_id: 0x4fae3a92
+    member_id: 0x7f61f497
+    member_id: 0xe42c71a2
+    member_id: 0xff886278
+    member_id: 0x6360d0b2
+  }
+}
+struct_union {
+  id: 0xa687d0b4
+  kind: STRUCT
+  name: "mmc_cqe_ops"
+  definition {
+    bytesize: 88
+    member_id: 0xe10ed008
+    member_id: 0x8463fadc
+    member_id: 0x5e9a8bd6
+    member_id: 0xba80e69a
+    member_id: 0x07120003
+    member_id: 0xec8c247e
+    member_id: 0xe4f0e93f
+    member_id: 0x36d7ef94
+    member_id: 0x82f1252c
+    member_id: 0x2d081c40
+    member_id: 0x63760fdb
+  }
+}
+struct_union {
+  id: 0xaaead086
+  kind: STRUCT
+  name: "mmc_csd"
+  definition {
+    bytesize: 44
+    member_id: 0xbf42bb10
+    member_id: 0xcb1b98a9
+    member_id: 0xdd039da5
+    member_id: 0xd50b957b
+    member_id: 0x526b1694
+    member_id: 0x4c18e92a
+    member_id: 0x9e0af45c
+    member_id: 0x6b1c0fe3
+    member_id: 0xd5efa537
+    member_id: 0x75e10416
+    member_id: 0x3b713cd5
+    member_id: 0xa75b0d0a
+    member_id: 0x62eddcd3
+    member_id: 0x9cafdf4b
+    member_id: 0xa6b017d1
+    member_id: 0xd581a195
+    member_id: 0x1dff11a3
+  }
+}
+struct_union {
+  id: 0x0d68946d
+  kind: STRUCT
+  name: "mmc_ctx"
+  definition {
+    bytesize: 8
+    member_id: 0x9c3a2307
+  }
+}
+struct_union {
+  id: 0x4347a884
+  kind: STRUCT
+  name: "mmc_data"
+  definition {
+    bytesize: 72
+    member_id: 0x0a734d27
+    member_id: 0x63444d84
+    member_id: 0xea9e68a2
+    member_id: 0x4fded064
+    member_id: 0xd2679b24
+    member_id: 0x7f61f9dc
+    member_id: 0x2d2d09f1
+    member_id: 0xa1e6aaa4
+    member_id: 0x69a6d22e
+    member_id: 0x6360d6e7
+    member_id: 0x3a8b55b2
+    member_id: 0x621a8c77
+    member_id: 0x9d865595
+    member_id: 0x17c45121
+  }
+}
+struct_union {
+  id: 0x1bbbf9dc
+  kind: STRUCT
+  name: "mmc_ext_csd"
+  definition {
+    bytesize: 168
+    member_id: 0xd23350fc
+    member_id: 0x7644bdb7
+    member_id: 0xc8b12bed
+    member_id: 0xbaade3aa
+    member_id: 0x11d346c6
+    member_id: 0x75277575
+    member_id: 0x76671c2e
+    member_id: 0x53cc23d1
+    member_id: 0x9f43f7af
+    member_id: 0x9779ceb2
+    member_id: 0x258a31cb
+    member_id: 0x1ccacc7a
+    member_id: 0xec9db3aa
+    member_id: 0x5577a750
+    member_id: 0x87c62ab5
+    member_id: 0xcf90d823
+    member_id: 0x0a87c04b
+    member_id: 0x68d57a43
+    member_id: 0xf9df2d32
+    member_id: 0x3721d8d5
+    member_id: 0xa3904702
+    member_id: 0xe31cbd4e
+    member_id: 0x5f20510d
+    member_id: 0x05abffa1
+    member_id: 0x119ad176
+    member_id: 0x5669ee49
+    member_id: 0x4262cdb7
+    member_id: 0x5fad1f1a
+    member_id: 0xb4e08b8b
+    member_id: 0xcf7037b7
+    member_id: 0xa2d9b50c
+    member_id: 0x7a2a68f5
+    member_id: 0x9cc8208d
+    member_id: 0xf3161c1f
+    member_id: 0x7bdd8289
+    member_id: 0x52e02b4b
+    member_id: 0x132ae04f
+    member_id: 0x08f034ff
+    member_id: 0x7b185751
+    member_id: 0x7ef1e3bb
+    member_id: 0x57f92f3f
+    member_id: 0xe6e9f654
+    member_id: 0x7c23bd7a
+    member_id: 0xcb03eff2
+    member_id: 0x822cd836
+    member_id: 0x7ce65205
+    member_id: 0x83e1a633
+    member_id: 0x3edc2471
+    member_id: 0x8b0edfe8
+    member_id: 0xda9c4412
+    member_id: 0x4e5b92e9
+    member_id: 0x292e8f1f
+    member_id: 0x564c6f2c
+    member_id: 0xc1e72aef
+    member_id: 0xac43d9a5
+    member_id: 0x30184500
+    member_id: 0x34e9a78b
+    member_id: 0xf5ec2d62
+    member_id: 0x3a52ac5b
+    member_id: 0x8bd7fb55
+    member_id: 0x36df599d
+    member_id: 0xd9a92aff
+    member_id: 0xdd6c43a6
+    member_id: 0xeca2b05d
+    member_id: 0xff6d3c31
+    member_id: 0x8cf71553
+    member_id: 0x830fc7c1
+    member_id: 0x97b3adbd
+    member_id: 0x7cd954a6
+    member_id: 0xa617d0b8
+    member_id: 0x4063c0b6
+    member_id: 0x7530062f
+    member_id: 0x5f028fe5
+    member_id: 0x3cd08da3
+    member_id: 0x9eb98b20
+    member_id: 0xdcf92ce0
+    member_id: 0xee5ec5ed
+  }
+}
+struct_union {
+  id: 0xf225c65d
+  kind: STRUCT
+  name: "mmc_host"
+  definition {
+    bytesize: 1856
+    member_id: 0x72332a03
+    member_id: 0x0a04a764
+    member_id: 0xad5e2924
+    member_id: 0xafb5aa85
+    member_id: 0x705b765d
+    member_id: 0xf90d8761
+    member_id: 0x66cbe762
+    member_id: 0x6f655677
+    member_id: 0xdf3734e2
+    member_id: 0x6b410bd6
+    member_id: 0xb9984e34
+    member_id: 0x4b018a2a
+    member_id: 0xa06a2755
+    member_id: 0xfa6028d0
+    member_id: 0xf2698208
+    member_id: 0xf98adbb0
+    member_id: 0x08e68d3e
+    member_id: 0xefce55b7
+    member_id: 0x59f346f2
+    member_id: 0x970b88df
+    member_id: 0x1f0ee50e
+    member_id: 0x8ed652df
+    member_id: 0x3c62344c
+    member_id: 0x68bd6a18
+    member_id: 0x7b0a1115
+    member_id: 0xf91efeea
+    member_id: 0xcce2bbdb
+    member_id: 0x2d1fe8a5
+    member_id: 0x13233d1b
+    member_id: 0x5649a4a3
+    member_id: 0x557d4c35
+    member_id: 0xa5425246
+    member_id: 0xba15c865
+    member_id: 0x75745ff2
+    member_id: 0x30fa26d8
+    member_id: 0x9d12520a
+    member_id: 0x920b63e5
+    member_id: 0xbce47e90
+    member_id: 0x3ccd8fd5
+    member_id: 0x1496480a
+    member_id: 0xa5ad7a15
+    member_id: 0xb0e51cf3
+    member_id: 0x600fcfb3
+    member_id: 0x8034ecbd
+    member_id: 0xb4457fa3
+    member_id: 0x6cae1e30
+    member_id: 0x22ea861a
+    member_id: 0xac60d5d1
+    member_id: 0x6f1c2112
+    member_id: 0x012000c0
+    member_id: 0x98a7089d
+    member_id: 0x9579f947
+    member_id: 0x688c706c
+    member_id: 0xf3753de0
+    member_id: 0xf05ee0ff
+    member_id: 0x1ab28625
+    member_id: 0x242a3299
+    member_id: 0xcc1042e9
+    member_id: 0xd7f34ce3
+    member_id: 0x4dd8bc2c
+    member_id: 0x238044e8
+    member_id: 0xbfacee57
+    member_id: 0x0db2e736
+    member_id: 0x83e53c4f
+    member_id: 0x6cce0072
+    member_id: 0x27cf8be2
+    member_id: 0x89fa1767
+    member_id: 0x90ad81e0
+    member_id: 0x39bdc394
+    member_id: 0x598e7142
+    member_id: 0x94974a29
+    member_id: 0x51e1a9e8
+    member_id: 0xe9079b05
+    member_id: 0x1fb39acc
+    member_id: 0x54976380
+    member_id: 0x39fac508
+    member_id: 0xd39b9ad3
+    member_id: 0x2d081dd2
+    member_id: 0x63760a55
+    member_id: 0x91a9371d
+  }
+}
+struct_union {
+  id: 0x33276ae3
+  kind: STRUCT
+  name: "mmc_host_ops"
+  definition {
+    bytesize: 208
+    member_id: 0xeb98316e
+    member_id: 0x539ea6ff
+    member_id: 0xb6f73921
+    member_id: 0x21805a26
+    member_id: 0xce6643c0
+    member_id: 0x24d5235b
+    member_id: 0x7d1149e7
+    member_id: 0x02c93501
+    member_id: 0x9c7969bf
+    member_id: 0x3b9c8ffe
+    member_id: 0x00cda1f9
+    member_id: 0xfbedbdd0
+    member_id: 0xa48ff337
+    member_id: 0x8fc83bcb
+    member_id: 0x8a71767e
+    member_id: 0xc8388aed
+    member_id: 0x9de9060a
+    member_id: 0xeadd7fd9
+    member_id: 0x7c5b8fff
+    member_id: 0x6a9b0486
+    member_id: 0x0d0a8549
+    member_id: 0x354dfb4d
+    member_id: 0x431cdf42
+    member_id: 0x447e4699
+    member_id: 0x2d081fd6
+    member_id: 0x6376001a
+  }
+}
+struct_union {
+  id: 0xf7777e11
+  kind: STRUCT
+  name: "mmc_ios"
+  definition {
+    bytesize: 20
+    member_id: 0x458b86d4
+    member_id: 0xcb07581f
+    member_id: 0xf22db307
+    member_id: 0xe8af03af
+    member_id: 0x956a4afe
+    member_id: 0x4c5df948
+    member_id: 0xb43c45b4
+    member_id: 0xe1586a45
+    member_id: 0x8c28f01f
+    member_id: 0xe18252ff
+    member_id: 0x9a5ad143
+  }
+}
+struct_union {
+  id: 0x61d43a5c
+  kind: STRUCT
+  name: "mmc_part"
+  definition {
+    bytesize: 48
+    member_id: 0xd9ec3f41
+    member_id: 0xda18eac7
+    member_id: 0x0dc2ab5e
+    member_id: 0x23382e9a
+    member_id: 0xa9a6f37a
+    member_id: 0x2d0812f5
+  }
+}
+struct_union {
+  id: 0x931129aa
+  kind: STRUCT
+  name: "mmc_pwrseq"
+  definition {
+    bytesize: 40
+    member_id: 0xafb69089
+    member_id: 0xce3bbe52
+    member_id: 0x2a994aef
+    member_id: 0x4a9652fb
+  }
+}
+struct_union {
+  id: 0x00468147
+  kind: STRUCT
+  name: "mmc_pwrseq_ops"
+  definition {
+    bytesize: 32
+    member_id: 0xe19ce455
+    member_id: 0xf4ea6bfd
+    member_id: 0xd7f5ea18
+    member_id: 0x62b07139
+  }
+}
+struct_union {
+  id: 0x06447717
+  kind: STRUCT
+  name: "mmc_queue"
+  definition {
+    bytesize: 440
+    member_id: 0x6cae1f95
+    member_id: 0xec949f56
+    member_id: 0x0d558dc7
+    member_id: 0x3c227495
+    member_id: 0xaddb4cea
+    member_id: 0x2d1feaf6
+    member_id: 0x19b66306
+    member_id: 0xa2af5714
+    member_id: 0x60bc6a32
+    member_id: 0xb418d3ea
+    member_id: 0x6f020de3
+    member_id: 0x4f61a09c
+    member_id: 0x3e50f6f4
+    member_id: 0xdd1c49fd
+    member_id: 0x202d921a
+    member_id: 0x9cfea388
+    member_id: 0x6de77685
+    member_id: 0xafb9780a
+    member_id: 0x2a8095b3
+  }
+}
+struct_union {
+  id: 0x8ef22f3d
+  kind: STRUCT
+  name: "mmc_request"
+  definition {
+    bytesize: 144
+    member_id: 0x7ac264e0
+    member_id: 0x1a3e72b7
+    member_id: 0xff886c7d
+    member_id: 0x69a6da4c
+    member_id: 0xc494ac76
+    member_id: 0x8af87765
+    member_id: 0x1d43592f
+    member_id: 0xb1e71f03
+    member_id: 0xb8c2344a
+    member_id: 0x205f1b89
+    member_id: 0xd5c2edbc
+    member_id: 0xbd8a47cb
+    member_id: 0x9e40d915
+  }
+}
+struct_union {
+  id: 0x5a1fb439
+  kind: STRUCT
+  name: "mmc_slot"
+  definition {
+    bytesize: 16
+    member_id: 0x180c21c0
+    member_id: 0xcedc3f0d
+    member_id: 0x8018aab6
+  }
+}
+struct_union {
+  id: 0xf4ae543b
+  kind: STRUCT
+  name: "mmc_supply"
+  definition {
+    bytesize: 16
+    member_id: 0x5d71e9d3
+    member_id: 0xc5916613
+  }
+}
+struct_union {
+  id: 0x846ab93f
+  kind: STRUCT
+  name: "mmu_notifier"
+  definition {
+    bytesize: 72
+    member_id: 0x2d522361
+    member_id: 0xafb0c299
+    member_id: 0x3025dd22
+    member_id: 0x95dac9dc
+    member_id: 0x85e876e9
+    member_id: 0x2d081245
+    member_id: 0x637602ba
+  }
+}
+struct_union {
+  id: 0x65fba0a9
+  kind: STRUCT
+  name: "mmu_notifier_ops"
+  definition {
+    bytesize: 112
+    member_id: 0xae94e729
+    member_id: 0xe32eadd5
+    member_id: 0xf2531964
+    member_id: 0xa10fc33f
+    member_id: 0x83d10832
+    member_id: 0x0545c767
+    member_id: 0x4f063390
+    member_id: 0x6e9b1c0d
+    member_id: 0xaf409590
+    member_id: 0xfc81ed63
+    member_id: 0x2d08134b
+    member_id: 0x63760b9f
+    member_id: 0xac8941f8
+    member_id: 0xe0f637f1
+  }
+}
+struct_union {
+  id: 0xa68d9aed
+  kind: STRUCT
+  name: "mmu_notifier_range"
+  definition {
+    bytesize: 48
+    member_id: 0x23919a13
+    member_id: 0x3025d10a
+    member_id: 0x46284ff6
+    member_id: 0x823c26d1
+    member_id: 0x2d2d0193
+    member_id: 0x0ad7602b
+    member_id: 0x4a85cf2e
+  }
+}
+struct_union {
+  id: 0xd1ebc718
+  kind: STRUCT
+  name: "mmu_notifier_subscriptions"
+  definition {
+    bytesize: 80
+    member_id: 0x7c8daa94
+    member_id: 0xe8372eb1
+    member_id: 0x2d1fe506
+    member_id: 0xa4356576
+    member_id: 0x2e95fdeb
+    member_id: 0xa331f04a
+    member_id: 0x22ea8465
+    member_id: 0xb9af3377
+  }
+}
+struct_union {
+  id: 0x9fba7706
+  kind: STRUCT
+  name: "mnt_namespace"
+  definition {
+    bytesize: 120
+    member_id: 0x91129d25
+    member_id: 0x93c89d97
+    member_id: 0x7c00eff9
+    member_id: 0x3f2735e9
+    member_id: 0xde4b7b93
+    member_id: 0x9f301d7b
+    member_id: 0xfa8e250b
+    member_id: 0x5e16da99
+    member_id: 0x0addc0e9
+    member_id: 0x9b4b43af
+    member_id: 0x92251f1a
+  }
+}
+struct_union {
+  id: 0x7ad990d5
+  kind: STRUCT
+  name: "mnt_pcp"
+  definition {
+    bytesize: 8
+    member_id: 0x5dfed4f8
+    member_id: 0x9918aa5b
+  }
+}
+struct_union {
+  id: 0x7565ef4f
+  kind: STRUCT
+  name: "mod_arch_specific"
+  definition {
+    bytesize: 120
+    member_id: 0x3ef56c3a
+    member_id: 0x1af67c87
+    member_id: 0xf9f81129
+    member_id: 0x26a7a62e
+  }
+}
+struct_union {
+  id: 0xf5b61458
+  kind: STRUCT
+  name: "mod_kallsyms"
+  definition {
+    bytesize: 32
+    member_id: 0x5611fbcb
+    member_id: 0xba394221
+    member_id: 0x8320f168
+    member_id: 0xe2072187
+  }
+}
+struct_union {
+  id: 0x1cb0211a
+  kind: STRUCT
+  name: "mod_plt_sec"
+  definition {
+    bytesize: 12
+    member_id: 0x8d36c2ec
+    member_id: 0xae340b41
+    member_id: 0xa55a1997
+  }
+}
+struct_union {
+  id: 0xd6c32672
+  kind: STRUCT
+  name: "mod_tree_node"
+  definition {
+    bytesize: 56
+    member_id: 0x8c1b6f8d
+    member_id: 0x0f475f5b
+  }
+}
+struct_union {
+  id: 0x06df9791
+  kind: STRUCT
+  name: "module"
+  definition {
+    bytesize: 1088
+    member_id: 0x728e6b8f
+    member_id: 0x7c00ebb3
+    member_id: 0x0dda4541
+    member_id: 0x1195bfbc
+    member_id: 0x93d2d8d5
+    member_id: 0xa65f23ea
+    member_id: 0x045f66fb
+    member_id: 0x7355a2a5
+    member_id: 0xf82bbc03
+    member_id: 0x2aa9f0c8
+    member_id: 0x930c52d3
+    member_id: 0x313aeebb
+    member_id: 0xb8ba1efc
+    member_id: 0xef3edb33
+    member_id: 0xa836b26e
+    member_id: 0x4a37f6b8
+    member_id: 0xcb721694
+    member_id: 0x15c7f286
+    member_id: 0x4f24f2f6
+    member_id: 0xdf88a085
+    member_id: 0xa14e3ebe
+    member_id: 0x7fdbce61
+    member_id: 0x179e6085
+    member_id: 0x1ac73c7f
+    member_id: 0x5ae8cd27
+    member_id: 0xf17f2c5f
+    member_id: 0xb8dfb29f
+    member_id: 0xca16056c
+    member_id: 0x0bae61d1
+    member_id: 0xac3eb18a
+    member_id: 0x3a9e64a8
+    member_id: 0x97ea6ec7
+    member_id: 0x7197fca1
+    member_id: 0xebaf9065
+    member_id: 0x6980b9f2
+    member_id: 0x343f35e0
+    member_id: 0x6816acc0
+    member_id: 0x9c4094ae
+    member_id: 0xe2c60df7
+    member_id: 0xe1d93893
+    member_id: 0xa9cfd438
+    member_id: 0x9e2162f0
+    member_id: 0x59b6393d
+    member_id: 0xa0f67284
+    member_id: 0x308c6acc
+    member_id: 0xdba7c4e4
+    member_id: 0xa784bb16
+    member_id: 0xc9406969
+    member_id: 0x8b1918c5
+    member_id: 0x7eeefc20
+    member_id: 0x77c230b5
+    member_id: 0x98c4ef1f
+    member_id: 0xd0bfdeda
+    member_id: 0x75e96b8c
+    member_id: 0xf84bdc6b
+    member_id: 0x2eb74fd1
+    member_id: 0x382bf5d7
+    member_id: 0xf6a27cf4
+    member_id: 0xfafcfaf9
+    member_id: 0x69a5f68d
+    member_id: 0xbee16527
+    member_id: 0x97aff8d0
+    member_id: 0x3c2dda48
+    member_id: 0x3f41c8b9
+    member_id: 0x0d2eb737
+    member_id: 0xb70f0c3a
+    member_id: 0x2d0819dd
+    member_id: 0x63760ecd
+    member_id: 0xac894430
+    member_id: 0xe0f6334a
+  }
+}
+struct_union {
+  id: 0x5f7bacbb
+  kind: STRUCT
+  name: "module_attribute"
+  definition {
+    bytesize: 56
+    member_id: 0x8c29a58d
+    member_id: 0x0a706911
+    member_id: 0xacd7f27a
+    member_id: 0x84c7773a
+    member_id: 0x8db6a427
+    member_id: 0xfeac0d11
+  }
+}
+struct_union {
+  id: 0x73375287
+  kind: STRUCT
+  name: "module_kobject"
+  definition {
+    bytesize: 128
+    member_id: 0x452b206c
+    member_id: 0x8c1b6723
+    member_id: 0xd57dfc23
+    member_id: 0xd87e6374
+    member_id: 0xc1ca025b
+  }
+}
+struct_union {
+  id: 0xde200f0c
+  kind: STRUCT
+  name: "module_layout"
+  definition {
+    bytesize: 80
+    member_id: 0x85c253ee
+    member_id: 0xd93b9df5
+    member_id: 0x61317943
+    member_id: 0xd8a6e596
+    member_id: 0x9d87c86c
+    member_id: 0x7b8b7304
+  }
+}
+struct_union {
+  id: 0xd5fa1d70
+  kind: STRUCT
+  name: "module_notes_attrs"
+  definition {
+    bytesize: 16
+    member_id: 0x2ed5d8e0
+    member_id: 0xa6c4c003
+    member_id: 0x4db09c65
+  }
+}
+struct_union {
+  id: 0x337241c9
+  kind: STRUCT
+  name: "module_param_attrs"
+  definition {
+    bytesize: 48
+    member_id: 0x1c73cad3
+    member_id: 0x96bddb60
+    member_id: 0x4db3119c
+  }
+}
+struct_union {
+  id: 0x50fc2872
+  kind: STRUCT
+  name: "module_sect_attr"
+  definition {
+    bytesize: 72
+    member_id: 0x00221f9d
+    member_id: 0x30e26391
+  }
+}
+struct_union {
+  id: 0xb837e52e
+  kind: STRUCT
+  name: "module_sect_attrs"
+  definition {
+    bytesize: 48
+    member_id: 0x96bddf81
+    member_id: 0xcc723c40
+    member_id: 0x4db3bf1b
+  }
+}
+struct_union {
+  id: 0xadc97e53
+  kind: STRUCT
+  name: "modversion_info"
+  definition {
+    bytesize: 64
+    member_id: 0x5200f72d
+    member_id: 0x0dda4969
+  }
+}
+struct_union {
+  id: 0x74b70e80
+  kind: STRUCT
+  name: "mount"
+  definition {
+    bytesize: 352
+    member_id: 0x119666b3
+    member_id: 0x17d8121e
+    member_id: 0x4bfbc43c
+    member_id: 0x32301a1f
+    member_id: 0x32ed40bb
+    member_id: 0x391182fa
+    member_id: 0x30974d0b
+    member_id: 0x6af18925
+    member_id: 0xac4342e9
+    member_id: 0xcc1d8de2
+    member_id: 0xe0213f3e
+    member_id: 0xa838376f
+    member_id: 0x057a2026
+    member_id: 0x6e563301
+    member_id: 0xe097253c
+    member_id: 0x145d0dca
+    member_id: 0x22c37289
+    member_id: 0xd5c53e09
+    member_id: 0x32b11489
+    member_id: 0xbba7a8bf
+    member_id: 0x9e8f483d
+    member_id: 0xbe378579
+    member_id: 0xefed76c5
+    member_id: 0x79ca6e96
+    member_id: 0x282f13c3
+    member_id: 0xe6e98d17
+    member_id: 0x38595af7
+  }
+}
+struct_union {
+  id: 0xd77a0db3
+  kind: STRUCT
+  name: "mountpoint"
+  definition {
+    bytesize: 40
+    member_id: 0x2a890496
+    member_id: 0xddb66434
+    member_id: 0x4be35905
+    member_id: 0x76483be4
+  }
+}
+struct_union {
+  id: 0xbd7a7e80
+  kind: STRUCT
+  name: "movable_operations"
+  definition {
+    bytesize: 24
+    member_id: 0xa0ea2f4a
+    member_id: 0x8edaa968
+    member_id: 0xf9ece718
+  }
+}
+struct_union {
+  id: 0xdcbf4c2a
+  kind: STRUCT
+  name: "mq_attr"
+  definition {
+    bytesize: 64
+    member_id: 0x53b514ec
+    member_id: 0x5005024d
+    member_id: 0xaf3dcf24
+    member_id: 0xa007c292
+    member_id: 0x5ee63f2d
+  }
+}
+struct_union {
+  id: 0x992e3b77
+  kind: STRUCT
+  name: "msghdr"
+  definition {
+    bytesize: 104
+    member_id: 0x7d0613dd
+    member_id: 0x461c5745
+    member_id: 0xdbf3727e
+    member_id: 0x977c4e42
+    member_id: 0x32eac224
+    member_id: 0xd7b46612
+    member_id: 0x2c033520
+    member_id: 0xc31fa462
+    member_id: 0xd9583daf
+    member_id: 0xc08de3a8
+    member_id: 0x41792067
+    member_id: 0x1cfc27e4
+  }
+}
+struct_union {
+  id: 0x986b89cb
+  kind: STRUCT
+  name: "msi_alloc_info"
+  definition {
+    bytesize: 40
+    member_id: 0x87d47374
+    member_id: 0xead51fd1
+    member_id: 0x2d5bf8f8
+    member_id: 0x9989142b
+  }
+}
+struct_union {
+  id: 0x133a33c5
+  kind: STRUCT
+  name: "msi_desc"
+  definition {
+    bytesize: 104
+    member_id: 0x99373053
+    member_id: 0xc07f8888
+    member_id: 0xce3bbe52
+    member_id: 0xe2b904c8
+    member_id: 0xf3917ce2
+    member_id: 0xd6ccb829
+    member_id: 0x978612ce
+    member_id: 0x77a8a893
+    member_id: 0xc182e472
+    member_id: 0xf9932586
+    member_id: 0xa33342ec
+  }
+}
+struct_union {
+  id: 0xbbb00216
+  kind: STRUCT
+  name: "msi_device_data"
+  definition {
+    bytesize: 88
+    member_id: 0x3f715b76
+    member_id: 0x38f2d790
+    member_id: 0xad898ac0
+    member_id: 0xf30556e2
+    member_id: 0x1d90045d
+  }
+}
+struct_union {
+  id: 0x6bdc2a7a
+  kind: STRUCT
+  name: "msi_domain_info"
+  definition {
+    bytesize: 64
+    member_id: 0x2da18c75
+    member_id: 0xaf999893
+    member_id: 0xc643dfe4
+    member_id: 0x50c82867
+    member_id: 0xf9ead925
+    member_id: 0x5703cd54
+    member_id: 0x3b82ac3f
+    member_id: 0xff8a9e7e
+  }
+}
+struct_union {
+  id: 0x6033a0b0
+  kind: STRUCT
+  name: "msi_domain_ops"
+  definition {
+    bytesize: 64
+    member_id: 0xa1f2295c
+    member_id: 0xb2aecca9
+    member_id: 0x9a0e48a8
+    member_id: 0xde1dd7b7
+    member_id: 0xeecc3fda
+    member_id: 0x976bcee9
+    member_id: 0x545e84ab
+    member_id: 0x617add50
+  }
+}
+struct_union {
+  id: 0xb93f386b
+  kind: STRUCT
+  name: "msi_msg"
+  definition {
+    bytesize: 12
+    member_id: 0x3bde97bc
+    member_id: 0x3c5f2e17
+    member_id: 0x398a03cc
+  }
+}
+struct_union {
+  id: 0x7b48c53f
+  kind: STRUCT
+  name: "msix_entry"
+  definition {
+    bytesize: 8
+    member_id: 0x8367d3d9
+    member_id: 0x4dc508b9
+  }
+}
+struct_union {
+  id: 0x185e3c3b
+  kind: STRUCT
+  name: "mtd_info"
+}
+struct_union {
+  id: 0xa7c362b0
+  kind: STRUCT
+  name: "mutex"
+  definition {
+    bytesize: 48
+    member_id: 0x4a2d5eb9
+    member_id: 0xebe27333
+    member_id: 0x27281267
+    member_id: 0x46d7c426
+    member_id: 0xd6abc4f9
+  }
+}
+struct_union {
+  id: 0x4ec91117
+  kind: STRUCT
+  name: "mutex_waiter"
+  definition {
+    bytesize: 32
+    member_id: 0x7c00ef52
+    member_id: 0x9c3a2ac5
+    member_id: 0x3190e947
+  }
+}
+struct_union {
+  id: 0x6e3846e1
+  kind: STRUCT
+  name: "nameidata"
+  definition {
+    bytesize: 232
+    member_id: 0x77353a11
+    member_id: 0x2656412c
+    member_id: 0x93ae8e8f
+    member_id: 0x3b44ff03
+    member_id: 0x2d2d064f
+    member_id: 0x72b678d7
+    member_id: 0xfa598134
+    member_id: 0x43da8227
+    member_id: 0x61847606
+    member_id: 0x88d851e8
+    member_id: 0x42e840b0
+    member_id: 0x1b218a2b
+    member_id: 0x5cfde3c8
+    member_id: 0xbfce9d0f
+    member_id: 0xcf28f8e3
+    member_id: 0x0dedc1fa
+    member_id: 0x10476fa4
+    member_id: 0x911ecef3
+    member_id: 0xca2af15b
+    member_id: 0x2ed2245a
+    member_id: 0xe95f14cb
+  }
+}
+struct_union {
+  id: 0x4a46ba94
+  kind: STRUCT
+  name: "napi_struct"
+  definition {
+    bytesize: 432
+    member_id: 0x73a6e99a
+    member_id: 0x72c080a7
+    member_id: 0x7e0f7453
+    member_id: 0x50bb24ce
+    member_id: 0x8f4e7388
+    member_id: 0x5e395d2c
+    member_id: 0xce0b45fb
+    member_id: 0x31111b5e
+    member_id: 0xb0b864fa
+    member_id: 0x68f59c82
+    member_id: 0x251f9cde
+    member_id: 0x1dce677d
+    member_id: 0x5f7af107
+    member_id: 0xbd015c91
+    member_id: 0x79400b70
+    member_id: 0xfc7d457d
+    member_id: 0x2d081a02
+    member_id: 0x637603cd
+    member_id: 0xac894e16
+    member_id: 0xe0f63285
+  }
+}
+struct_union {
+  id: 0x946da50f
+  kind: STRUCT
+  name: "nd_cmd_get_config_size"
+  definition {
+    bytesize: 12
+    member_id: 0x2081093b
+    member_id: 0x65a67885
+    member_id: 0x9af65776
+  }
+}
+struct_union {
+  id: 0x4a6aedc5
+  kind: STRUCT
+  name: "nd_interleave_set"
+  definition {
+    bytesize: 40
+    member_id: 0x14bf8247
+    member_id: 0xd5fe2ed0
+    member_id: 0xf1ba528d
+    member_id: 0x2c33f3a3
+  }
+}
+struct_union {
+  id: 0x928d625a
+  kind: STRUCT
+  name: "nd_mapping"
+  definition {
+    bytesize: 104
+    member_id: 0xafebceb1
+    member_id: 0x46891482
+    member_id: 0xd9ec3683
+    member_id: 0x90a0a50e
+    member_id: 0x00abb49e
+    member_id: 0x2d4b3d92
+    member_id: 0xe6090375
+  }
+}
+struct_union {
+  id: 0x37265f81
+  kind: STRUCT
+  name: "nd_mapping_desc"
+  definition {
+    bytesize: 32
+    member_id: 0xafebceb1
+    member_id: 0x46891482
+    member_id: 0xd9ec3683
+    member_id: 0x90a0a50e
+  }
+}
+struct_union {
+  id: 0xddcf3019
+  kind: STRUCT
+  name: "nd_opt_hdr"
+  definition {
+    bytesize: 2
+    member_id: 0xb1e8621c
+    member_id: 0xea4eee51
+  }
+}
+struct_union {
+  id: 0x4c2bbd1f
+  kind: STRUCT
+  name: "nd_percpu_lane"
+  definition {
+    bytesize: 8
+    member_id: 0x65427f17
+    member_id: 0x2d1fe1be
+  }
+}
+struct_union {
+  id: 0xb08dfec9
+  kind: STRUCT
+  name: "nd_region"
+  definition {
+    bytesize: 1176
+    member_id: 0xce1ac149
+    member_id: 0x181e6600
+    member_id: 0x13dab964
+    member_id: 0x9defad75
+    member_id: 0x49b9746f
+    member_id: 0x2d5bfcdf
+    member_id: 0x278111a2
+    member_id: 0xb61bc8d8
+    member_id: 0x5099f186
+    member_id: 0x08509b5c
+    member_id: 0x33d20dd1
+    member_id: 0x971569ce
+    member_id: 0x15f17834
+    member_id: 0x2155bc8f
+    member_id: 0xcc48062b
+    member_id: 0x8f706add
+    member_id: 0xbcdfc943
+    member_id: 0xd4f54e9b
+    member_id: 0x6b6058c7
+    member_id: 0xa159a1de
+    member_id: 0x1103ab36
+    member_id: 0xd53c6ced
+    member_id: 0xf108a886
+    member_id: 0x8224deaf
+    member_id: 0x7f818c8c
+    member_id: 0x5d0a0efb
+  }
+}
+struct_union {
+  id: 0x4bbbaeb8
+  kind: STRUCT
+  name: "nd_region_desc"
+  definition {
+    bytesize: 96
+    member_id: 0x166c6f61
+    member_id: 0x5dedc95b
+    member_id: 0xae245efc
+    member_id: 0xf8e01f1b
+    member_id: 0xf108a988
+    member_id: 0xa159aa37
+    member_id: 0x8f706a63
+    member_id: 0xd4f54548
+    member_id: 0x6b6056ae
+    member_id: 0x2d5bfa22
+    member_id: 0xebf8e0ed
+    member_id: 0xf7c3f438
+    member_id: 0x7f8183c9
+  }
+}
+struct_union {
+  id: 0x28190c52
+  kind: STRUCT
+  name: "ndisc_ops"
+  definition {
+    bytesize: 48
+    member_id: 0x567e927d
+    member_id: 0xdb171168
+    member_id: 0xd6a89687
+    member_id: 0x881f9a02
+    member_id: 0x0d1be271
+    member_id: 0x9c7bb99d
+  }
+}
+struct_union {
+  id: 0xb0443d0a
+  kind: STRUCT
+  name: "ndisc_options"
+  definition {
+    bytesize: 176
+    member_id: 0x9364bc46
+    member_id: 0x5fa1f99d
+    member_id: 0x9ba73e83
+    member_id: 0xd94a3d00
+    member_id: 0x23904aff
+    member_id: 0x13b230cf
+  }
+}
+struct_union {
+  id: 0x41ced7f8
+  kind: STRUCT
+  name: "ndmsg"
+  definition {
+    bytesize: 12
+    member_id: 0x78779539
+    member_id: 0xed838e7e
+    member_id: 0x2c98d2aa
+    member_id: 0xedf73f50
+    member_id: 0xea8b64db
+    member_id: 0xd3b30610
+    member_id: 0x10fa7c4d
+  }
+}
+struct_union {
+  id: 0xea1c6e71
+  kind: STRUCT
+  name: "neigh_hash_table"
+  definition {
+    bytesize: 48
+    member_id: 0x88b6db32
+    member_id: 0xbbd4f799
+    member_id: 0x8d446ed5
+    member_id: 0x95dac9dc
+  }
+}
+struct_union {
+  id: 0x9f3af57a
+  kind: STRUCT
+  name: "neigh_ops"
+  definition {
+    bytesize: 40
+    member_id: 0x9e3288ce
+    member_id: 0xf508a5b8
+    member_id: 0xee552106
+    member_id: 0xdf660d9c
+    member_id: 0x5ccc5a40
+  }
+}
+struct_union {
+  id: 0xed418e18
+  kind: STRUCT
+  name: "neigh_parms"
+  definition {
+    bytesize: 160
+    member_id: 0x72bc7afa
+    member_id: 0xce0b4088
+    member_id: 0x94d42638
+    member_id: 0x7c00e690
+    member_id: 0xdb7c7a0a
+    member_id: 0xedfea14a
+    member_id: 0x8fb7bd15
+    member_id: 0x3bd46dea
+    member_id: 0xb7dcf91c
+    member_id: 0x56a72d44
+    member_id: 0x532ef508
+    member_id: 0x9b5b8e67
+    member_id: 0xff57adaa
+    member_id: 0xf93a991e
+    member_id: 0x2d0817f6
+  }
+}
+struct_union {
+  id: 0x23734d18
+  kind: STRUCT
+  name: "neigh_statistics"
+  definition {
+    bytesize: 96
+    member_id: 0xaf17c0dc
+    member_id: 0xa8329ff7
+    member_id: 0xe1e55d14
+    member_id: 0xeec31c44
+    member_id: 0x2d64c3b0
+    member_id: 0xb3997f00
+    member_id: 0xd699ecd4
+    member_id: 0x849f9a9f
+    member_id: 0xac3a0b3b
+    member_id: 0xed8ccca2
+    member_id: 0xde0379d5
+    member_id: 0x4df2d47b
+  }
+}
+struct_union {
+  id: 0x77670b3b
+  kind: STRUCT
+  name: "neigh_table"
+  definition {
+    bytesize: 728
+    member_id: 0x9e3288ce
+    member_id: 0x0f422a0f
+    member_id: 0x04ecb42e
+    member_id: 0xdcaac354
+    member_id: 0x6339472a
+    member_id: 0x5fb64933
+    member_id: 0x0450bd7d
+    member_id: 0x4d19040d
+    member_id: 0x414b677e
+    member_id: 0x604dab7a
+    member_id: 0xccea3537
+    member_id: 0x3722a24f
+    member_id: 0xcc2ba90e
+    member_id: 0x232e5373
+    member_id: 0x6fd3d043
+    member_id: 0x8fd944b0
+    member_id: 0xb3e087fd
+    member_id: 0x7123da5e
+    member_id: 0x30605474
+    member_id: 0xf5a2f0f7
+    member_id: 0x6909a6a1
+    member_id: 0x4a20351f
+    member_id: 0x713b5b70
+    member_id: 0xa6d9287d
+    member_id: 0xbe09816f
+    member_id: 0x802c069a
+    member_id: 0xacc9f166
+    member_id: 0xfe75b48e
+    member_id: 0x2d18688e
+    member_id: 0x7668fd22
+    member_id: 0xb9772a0a
+    member_id: 0xd1269bee
+    member_id: 0x04d41121
+    member_id: 0x2d0813e8
+  }
+}
+struct_union {
+  id: 0x05ea30f1
+  kind: STRUCT
+  name: "neighbour"
+  definition {
+    bytesize: 392
+    member_id: 0x11f8ea6a
+    member_id: 0xedfea26c
+    member_id: 0x23f2d958
+    member_id: 0xcab12c42
+    member_id: 0xb0ca51da
+    member_id: 0x2d186b9e
+    member_id: 0xb7dcf93e
+    member_id: 0xfe387221
+    member_id: 0x6d627c05
+    member_id: 0x1dd1871b
+    member_id: 0x8b8d6727
+    member_id: 0x7ca0a47d
+    member_id: 0x77ba38b0
+    member_id: 0x5c7f89f2
+    member_id: 0x3b9a1c89
+    member_id: 0xdcf61d65
+    member_id: 0x2da18eb1
+    member_id: 0x7983f91d
+    member_id: 0x330e242c
+    member_id: 0x791c9d5d
+    member_id: 0xdf6601ac
+    member_id: 0xafbf66ec
+    member_id: 0xacc9f954
+    member_id: 0xfe75bb29
+    member_id: 0x95dac7fc
+    member_id: 0xce0b4261
+    member_id: 0x94d4206b
+    member_id: 0x2d081aa3
+    member_id: 0x7bc36d30
+  }
+}
+struct_union {
+  id: 0x18c93498
+  kind: STRUCT
+  name: "net"
+  definition {
+    bytesize: 4096
+    member_id: 0x9a7fa8f2
+    member_id: 0xee23ae55
+    member_id: 0x90b1b2dc
+    member_id: 0x17ed5e12
+    member_id: 0x90568e8d
+    member_id: 0x4fc24ab6
+    member_id: 0x8182e925
+    member_id: 0x7c00eff9
+    member_id: 0x96d146eb
+    member_id: 0xe1482e9d
+    member_id: 0x146c2431
+    member_id: 0xde4b7a9d
+    member_id: 0x9f30145e
+    member_id: 0xcee0ecf3
+    member_id: 0x911295d6
+    member_id: 0xcb342860
+    member_id: 0x81f55009
+    member_id: 0x25785b2d
+    member_id: 0x9e692323
+    member_id: 0x1cf1524b
+    member_id: 0xd8212d62
+    member_id: 0x263a4bab
+    member_id: 0x069b6afd
+    member_id: 0x4ae5eb53
+    member_id: 0x9a69033e
+    member_id: 0x7ffb6c7c
+    member_id: 0xa31ad885
+    member_id: 0x963d3d26
+    member_id: 0xaf7a71ce
+    member_id: 0x3e7a09fb
+    member_id: 0xf22c651d
+    member_id: 0x2a8b4dbc
+    member_id: 0xa37704a2
+    member_id: 0xe2b01a04
+    member_id: 0xbd2ac666
+    member_id: 0x3baab289
+    member_id: 0x4d3cf4a5
+    member_id: 0xd02f52bb
+    member_id: 0xd7405bb5
+    member_id: 0x13a79540
+    member_id: 0xa9dece9e
+    member_id: 0x685a0a71
+    member_id: 0x6ef0e081
+    member_id: 0x68533833
+    member_id: 0x8d14ad13
+    member_id: 0xebf2c33e
+    member_id: 0x5089c972
+  }
+}
+struct_union {
+  id: 0xe0d869c2
+  kind: STRUCT
+  name: "net_device"
+  definition {
+    bytesize: 2624
+    member_id: 0x0d994c40
+    member_id: 0xcd61d8df
+    member_id: 0xd9c8ff3e
+    member_id: 0xea98a386
+    member_id: 0x499d97b0
+    member_id: 0xf9c4fbe0
+    member_id: 0x72c08e12
+    member_id: 0x5f7af575
+    member_id: 0xd2475210
+    member_id: 0x8ea4f872
+    member_id: 0x55708755
+    member_id: 0x6807f41d
+    member_id: 0x795117a4
+    member_id: 0xecd28cfb
+    member_id: 0x2d2d0bdf
+    member_id: 0x276a0040
+    member_id: 0x92a8c4b9
+    member_id: 0x9056806a
+    member_id: 0x6464ee1d
+    member_id: 0xe701dc68
+    member_id: 0x705f84f4
+    member_id: 0x5d7712f8
+    member_id: 0x97549e6d
+    member_id: 0xc53dff7a
+    member_id: 0x912b066b
+    member_id: 0x6b3d1ac5
+    member_id: 0xacb9f6e0
+    member_id: 0x76201d98
+    member_id: 0x9410bf1b
+    member_id: 0xa865e417
+    member_id: 0xd70b271f
+    member_id: 0x1f8e8efe
+    member_id: 0x5c9fe20a
+    member_id: 0x41b56623
+    member_id: 0xba9d0a41
+    member_id: 0xd3f524cf
+    member_id: 0xb90ab6a5
+    member_id: 0xcf176676
+    member_id: 0x8f74d212
+    member_id: 0xa6d57989
+    member_id: 0xe6125b0d
+    member_id: 0xfcf35a7a
+    member_id: 0xa6cc6c59
+    member_id: 0x51930c44
+    member_id: 0x8e312365
+    member_id: 0xaa2f0c93
+    member_id: 0x947c210a
+    member_id: 0xc85e6aab
+    member_id: 0x81a75cde
+    member_id: 0xf0266f0d
+    member_id: 0x6f604d48
+    member_id: 0x990f3822
+    member_id: 0x39469b41
+    member_id: 0x1fe916f4
+    member_id: 0xa0075dfb
+    member_id: 0x8ea00f58
+    member_id: 0xf5680d3e
+    member_id: 0xa9664807
+    member_id: 0xfaaae8b9
+    member_id: 0x99159805
+    member_id: 0xac8fb3b4
+    member_id: 0xbbffd5d1
+    member_id: 0x78528128
+    member_id: 0x73a7250c
+    member_id: 0x66064d03
+    member_id: 0xb047108d
+    member_id: 0x70a44081
+    member_id: 0x9d0d4d9c
+    member_id: 0xecef5afa
+    member_id: 0x159ed2a7
+    member_id: 0x073cfcb8
+    member_id: 0x8e95fdea
+    member_id: 0x1de87632
+    member_id: 0xb4fb89c4
+    member_id: 0x24d59e7d
+    member_id: 0x38cbfd24
+    member_id: 0x1e1db947
+    member_id: 0xa71f034e
+    member_id: 0x7755b9c0
+    member_id: 0x7c1b4df3
+    member_id: 0xcc3caa98
+    member_id: 0x8d4d41cd
+    member_id: 0xa8141076
+    member_id: 0xedd0275d
+    member_id: 0xde52c13f
+    member_id: 0x4fe1d60f
+    member_id: 0x7ddb4f78
+    member_id: 0x2842726c
+    member_id: 0x9cd2bd94
+    member_id: 0xdc77e8ad
+    member_id: 0x7c8ca69e
+    member_id: 0xcac448c7
+    member_id: 0x3d7cf1f3
+    member_id: 0x580681a6
+    member_id: 0x1912f863
+    member_id: 0x90ed296e
+    member_id: 0x40caf403
+    member_id: 0x0eef50fa
+    member_id: 0xc4c0ff26
+    member_id: 0x9cb0c470
+    member_id: 0xbb1eeb33
+    member_id: 0xea248be1
+    member_id: 0xbc9d8c45
+    member_id: 0x7397b85e
+    member_id: 0x44032591
+    member_id: 0xcb342af8
+    member_id: 0xb6c23c5e
+    member_id: 0xe7272450
+    member_id: 0xc4b80724
+    member_id: 0xd7c41f70
+    member_id: 0xb32edac8
+    member_id: 0xef9043e5
+    member_id: 0x213ffb23
+    member_id: 0x456eb44b
+    member_id: 0xf5d88955
+    member_id: 0x37be6f93
+    member_id: 0xce1aca3a
+    member_id: 0x25287e62
+    member_id: 0x295f2305
+    member_id: 0xc76e5f64
+    member_id: 0x723feab2
+    member_id: 0x80115e02
+    member_id: 0xe0d914d3
+    member_id: 0xb9e55862
+    member_id: 0x04a161a0
+    member_id: 0x4da040e2
+    member_id: 0x6ed74590
+    member_id: 0x2ad7adc5
+    member_id: 0x00f8d368
+    member_id: 0x65a2356f
+    member_id: 0xc8517d64
+    member_id: 0x0e421197
+    member_id: 0x2abad4e4
+    member_id: 0x2a370fab
+    member_id: 0x5770ab3a
+    member_id: 0x3686b863
+    member_id: 0x55ed6856
+    member_id: 0x9ad37bf4
+    member_id: 0x28f67828
+    member_id: 0xc746f55a
+    member_id: 0xe3ab65c4
+    member_id: 0xc2552ea1
+    member_id: 0x67526130
+    member_id: 0x757e2857
+    member_id: 0x2d08193b
+    member_id: 0x63760ce7
+    member_id: 0xac894c5e
+    member_id: 0xe0f63f6c
+    member_id: 0x223696d4
+    member_id: 0x66775aa9
+    member_id: 0xa1b7d363
+    member_id: 0xe3f4b3b0
+  }
+}
+struct_union {
+  id: 0xb3230240
+  kind: STRUCT
+  name: "net_device_core_stats"
+  definition {
+    bytesize: 32
+    member_id: 0x2bca1fa7
+    member_id: 0xb755e0cd
+    member_id: 0x8e251439
+    member_id: 0x92c8a658
+  }
+}
+struct_union {
+  id: 0x47dbda46
+  kind: STRUCT
+  name: "net_device_ops"
+  definition {
+    bytesize: 672
+    member_id: 0x531023fc
+    member_id: 0x832f998d
+    member_id: 0x048d6b96
+    member_id: 0x31b87a28
+    member_id: 0x0fd89812
+    member_id: 0xe653d82e
+    member_id: 0x821dab47
+    member_id: 0xe5b8e323
+    member_id: 0xf89f32ef
+    member_id: 0x0ed7dd61
+    member_id: 0x90f69fb8
+    member_id: 0x42aafa01
+    member_id: 0x04ed7238
+    member_id: 0x489f8b6b
+    member_id: 0x01bfee66
+    member_id: 0x0a62bd2c
+    member_id: 0x1fed8b14
+    member_id: 0x71a06f70
+    member_id: 0x5128918e
+    member_id: 0x1870e87a
+    member_id: 0x6eedda4c
+    member_id: 0x3e979042
+    member_id: 0xc2c6e6e6
+    member_id: 0x3a5a6057
+    member_id: 0x15c8b81c
+    member_id: 0x3405aa0e
+    member_id: 0xef6fb8ec
+    member_id: 0x35b77446
+    member_id: 0x3612d79b
+    member_id: 0xe4107fff
+    member_id: 0xe2308d2a
+    member_id: 0x58be93da
+    member_id: 0xc54548e5
+    member_id: 0xefda1249
+    member_id: 0x60bf7816
+    member_id: 0xfff5e358
+    member_id: 0x76669f23
+    member_id: 0x7d665065
+    member_id: 0x87b52c6e
+    member_id: 0x0cad881a
+    member_id: 0xdc89fb16
+    member_id: 0x705ad8da
+    member_id: 0xc43d8c6c
+    member_id: 0xe984d54a
+    member_id: 0x1d50d68b
+    member_id: 0x3b5db0ff
+    member_id: 0xb62c4c6b
+    member_id: 0xd357e987
+    member_id: 0xbbb71df0
+    member_id: 0x249aedd9
+    member_id: 0x3186e4b7
+    member_id: 0x749ac6c2
+    member_id: 0x76d81eb6
+    member_id: 0x3d2d5dfd
+    member_id: 0x9d50fb46
+    member_id: 0x98e94462
+    member_id: 0x8c531076
+    member_id: 0x3cfc25eb
+    member_id: 0x077a9701
+    member_id: 0xb078b63f
+    member_id: 0x4318f0e7
+    member_id: 0xf4ab5d1e
+    member_id: 0x4961a0f3
+    member_id: 0xf2627b6c
+    member_id: 0x6aa950d5
+    member_id: 0xaa82b91e
+    member_id: 0x479f9b47
+    member_id: 0xc42ca310
+    member_id: 0x4cbe94a3
+    member_id: 0xca4da219
+    member_id: 0xe893cf76
+    member_id: 0x02f1915c
+    member_id: 0xa6e950b0
+    member_id: 0xc5de136c
+    member_id: 0xb919468b
+    member_id: 0x6f7c60f4
+    member_id: 0x2d0810f8
+    member_id: 0x637606ba
+    member_id: 0xac894a2b
+    member_id: 0xe0f6307b
+    member_id: 0x22369eeb
+    member_id: 0x66775e57
+    member_id: 0xa1b7d916
+    member_id: 0xe3f4bace
+  }
+}
+struct_union {
+  id: 0x2a3aff26
+  kind: STRUCT
+  name: "net_device_path"
+  definition {
+    bytesize: 32
+    member_id: 0x5cf7e9a9
+    member_id: 0xce0a7f6f
+    member_id: 0x34fb9312
+  }
+}
+struct_union {
+  id: 0x451aa0f9
+  kind: STRUCT
+  name: "net_device_path_ctx"
+  definition {
+    bytesize: 32
+    member_id: 0xce0a7b8e
+    member_id: 0xcba46720
+    member_id: 0xcb4eaa9e
+    member_id: 0xf75387dc
+  }
+}
+struct_union {
+  id: 0x7fdd230a
+  kind: STRUCT
+  name: "net_device_stats"
+  definition {
+    bytesize: 184
+    member_id: 0x30d0761f
+    member_id: 0x3f510463
+    member_id: 0x38f9d2be
+    member_id: 0x3d2323b2
+    member_id: 0x3e89384c
+    member_id: 0x303da1de
+    member_id: 0x34c421be
+    member_id: 0x3d036096
+    member_id: 0x3a3e30f1
+    member_id: 0x3abe25ae
+    member_id: 0x3adf0b6e
+    member_id: 0x302f914f
+    member_id: 0x3ba19b7e
+    member_id: 0x3801ddd5
+    member_id: 0x3dbd80ff
+    member_id: 0x37e17339
+    member_id: 0x32f92d43
+    member_id: 0x3cfc75af
+    member_id: 0x3f855871
+    member_id: 0x3265794f
+    member_id: 0x3c66e6e0
+    member_id: 0x3ebdb54f
+    member_id: 0x364b4150
+  }
+}
+struct_union {
+  id: 0x245e77a8
+  kind: STRUCT
+  name: "net_generic"
+  definition {
+    bytesize: 24
+    member_id: 0x300b75af
+  }
+}
+struct_union {
+  id: 0x49f26d22
+  kind: STRUCT
+  name: "net_proto_family"
+  definition {
+    bytesize: 24
+    member_id: 0x9e3288ce
+    member_id: 0x0fae5380
+    member_id: 0x4a965b92
+  }
+}
+struct_union {
+  id: 0xb0a17437
+  kind: STRUCT
+  name: "net_rate_estimator"
+  definition {
+    bytesize: 152
+    member_id: 0x3e04671b
+    member_id: 0x17c68b0c
+    member_id: 0xad05e43b
+    member_id: 0x24779b61
+    member_id: 0x079a692a
+    member_id: 0xac059c76
+    member_id: 0xfacce2a2
+    member_id: 0x2d186b1f
+    member_id: 0xaa04091e
+    member_id: 0x66d9b736
+    member_id: 0xada3cb19
+    member_id: 0xd9321edf
+    member_id: 0x1dd1871b
+    member_id: 0x95dac401
+  }
+}
+struct_union {
+  id: 0x1ad2bca0
+  kind: STRUCT
+  name: "netdev_bpf"
+  definition {
+    bytesize: 32
+    member_id: 0x91f504cf
+    member_id: 0x34079a50
+  }
+}
+struct_union {
+  id: 0x4f5972f9
+  kind: STRUCT
+  name: "netdev_hw_addr_list"
+  definition {
+    bytesize: 32
+    member_id: 0x7c00ef52
+    member_id: 0x654276d5
+    member_id: 0x292c4c3b
+  }
+}
+struct_union {
+  id: 0x4d92cf80
+  kind: STRUCT
+  name: "netdev_name_node"
+  definition {
+    bytesize: 48
+    member_id: 0x2d522361
+    member_id: 0x7c00e690
+    member_id: 0xce0b44c2
+    member_id: 0x0de57b2f
+  }
+}
+struct_union {
+  id: 0xfe145033
+  kind: STRUCT
+  name: "netdev_phys_item_id"
+  definition {
+    bytesize: 33
+    member_id: 0xcc6c804c
+    member_id: 0x893f7dee
+  }
+}
+struct_union {
+  id: 0x43846c49
+  kind: STRUCT
+  name: "netdev_queue"
+  definition {
+    bytesize: 448
+    member_id: 0xce0b4469
+    member_id: 0x94d42b1b
+    member_id: 0x3d7cf8f7
+    member_id: 0xe8ae602a
+    member_id: 0x452b28a5
+    member_id: 0x19b631b4
+    member_id: 0xad1fc718
+    member_id: 0x0233d491
+    member_id: 0xde82c5ab
+    member_id: 0x2749087a
+    member_id: 0xf5166f2a
+    member_id: 0x58786d8a
+    member_id: 0x72c08a49
+    member_id: 0xbbe5188a
+    member_id: 0x2d081aa3
+    member_id: 0x63760091
+    member_id: 0xac894666
+    member_id: 0xe0f63e24
+  }
+}
+struct_union {
+  id: 0xeeffd8b3
+  kind: STRUCT
+  name: "netdev_rx_queue"
+  definition {
+    bytesize: 256
+    member_id: 0xce7c725f
+    member_id: 0x80c6152c
+    member_id: 0x3c98b297
+    member_id: 0x452b2615
+    member_id: 0xce0b469a
+    member_id: 0x94d428aa
+    member_id: 0xde82cc27
+    member_id: 0x2d081fd6
+    member_id: 0x6376001a
+    member_id: 0xac894a7a
+    member_id: 0xe0f6336e
+  }
+}
+struct_union {
+  id: 0x60835333
+  kind: STRUCT
+  name: "netdev_tc_txq"
+  definition {
+    bytesize: 4
+    member_id: 0x65b4127b
+    member_id: 0x9b8d9fc5
+  }
+}
+struct_union {
+  id: 0x994f75bf
+  kind: STRUCT
+  name: "netlink_callback"
+  definition {
+    bytesize: 128
+    member_id: 0xb0b8667e
+    member_id: 0xda734228
+    member_id: 0x0a7eefa0
+    member_id: 0x1d604191
+    member_id: 0xff8a99a2
+    member_id: 0x965f11f9
+    member_id: 0x103ee183
+    member_id: 0x9ec4e2d5
+    member_id: 0x2b0830f7
+    member_id: 0x3c4981e0
+    member_id: 0x286d4466
+    member_id: 0xfa5984f3
+    member_id: 0x052de968
+    member_id: 0x38be6a3c
+  }
+}
+struct_union {
+  id: 0xe838842a
+  kind: STRUCT
+  name: "netlink_dump_control"
+  definition {
+    bytesize: 48
+    member_id: 0x46340f6f
+    member_id: 0x0a7ee283
+    member_id: 0x1d60409a
+    member_id: 0xff8a91c0
+    member_id: 0x965f1695
+    member_id: 0x3c498797
+  }
+}
+struct_union {
+  id: 0x35338919
+  kind: STRUCT
+  name: "netlink_ext_ack"
+  definition {
+    bytesize: 56
+    member_id: 0xbd981866
+    member_id: 0xa01f6dc5
+    member_id: 0x60d35866
+    member_id: 0xe99b50d5
+    member_id: 0xa3f180be
+    member_id: 0x5857de1d
+    member_id: 0x5d509fef
+  }
+}
+struct_union {
+  id: 0x9002e418
+  kind: STRUCT
+  name: "netlink_kernel_cfg"
+  definition {
+    bytesize: 48
+    member_id: 0x9342d5c0
+    member_id: 0x2d2d0c03
+    member_id: 0x7318e621
+    member_id: 0x6dc5f19d
+    member_id: 0x6d137dd8
+    member_id: 0x5994ea90
+    member_id: 0x35aacaff
+  }
+}
+struct_union {
+  id: 0x8da7fab2
+  kind: STRUCT
+  name: "netlink_range_validation"
+  definition {
+    bytesize: 16
+    member_id: 0xf902a2d9
+    member_id: 0x97642013
+  }
+}
+struct_union {
+  id: 0x69557734
+  kind: STRUCT
+  name: "netlink_range_validation_signed"
+  definition {
+    bytesize: 16
+    member_id: 0xf9be8e7b
+    member_id: 0x97d80cb1
+  }
+}
+struct_union {
+  id: 0x2b6db8d1
+  kind: STRUCT
+  name: "netns_bpf"
+  definition {
+    bytesize: 64
+    member_id: 0x2f68ddc4
+    member_id: 0x5cedb753
+    member_id: 0x34d297ec
+  }
+}
+struct_union {
+  id: 0x5533923b
+  kind: STRUCT
+  name: "netns_can"
+  definition {
+    bytesize: 184
+    member_id: 0x1149c709
+    member_id: 0x1d6bf1a8
+    member_id: 0x228b5849
+    member_id: 0x8bc715c7
+    member_id: 0x1597abb9
+    member_id: 0xa6d4745a
+    member_id: 0x01482817
+    member_id: 0x39999813
+    member_id: 0xc946c360
+    member_id: 0x5616c4c1
+    member_id: 0xfa970a06
+    member_id: 0x75627b5b
+    member_id: 0xd8580a44
+    member_id: 0x799e6a47
+    member_id: 0xa4040522
+    member_id: 0x9fb810b3
+    member_id: 0x2d0817c1
+  }
+}
+struct_union {
+  id: 0x93da8a57
+  kind: STRUCT
+  name: "netns_core"
+  definition {
+    bytesize: 24
+    member_id: 0x7bee0246
+    member_id: 0xd6cd2ca4
+    member_id: 0x4d9fc2aa
+    member_id: 0x985d5f0d
+  }
+}
+struct_union {
+  id: 0x3fa33e64
+  kind: STRUCT
+  name: "netns_ct"
+  definition {
+    bytesize: 216
+    member_id: 0x4989644a
+    member_id: 0xed537189
+    member_id: 0x77eea581
+    member_id: 0xdeefc673
+    member_id: 0x2a9193c8
+    member_id: 0xed38d61b
+    member_id: 0xb9a5341e
+    member_id: 0xad249668
+    member_id: 0x7085fd8a
+  }
+}
+struct_union {
+  id: 0x7eee0fca
+  kind: STRUCT
+  name: "netns_ieee802154_lowpan"
+  definition {
+    bytesize: 16
+    member_id: 0x0dc0cd12
+    member_id: 0x77717d5b
+  }
+}
+struct_union {
+  id: 0x5c902307
+  kind: STRUCT
+  name: "netns_ipv4"
+  definition {
+    bytesize: 704
+    member_id: 0x57a7a25c
+    member_id: 0xcd137f78
+    member_id: 0x1e5cfacf
+    member_id: 0x1a4dcd1c
+    member_id: 0xde64bd44
+    member_id: 0x327af59a
+    member_id: 0xad53442b
+    member_id: 0x50746a51
+    member_id: 0x0e79d07a
+    member_id: 0x7120816c
+    member_id: 0xafb2d540
+    member_id: 0x650e84e9
+    member_id: 0xa94071c9
+    member_id: 0xb2d5371e
+    member_id: 0x70b99b07
+    member_id: 0x475440e7
+    member_id: 0x1c61123e
+    member_id: 0x59046687
+    member_id: 0x9285934f
+    member_id: 0xedd041f2
+    member_id: 0xc29a8123
+    member_id: 0x77717c32
+    member_id: 0xd11b0661
+    member_id: 0x2581f720
+    member_id: 0xb1e99388
+    member_id: 0x4feaeb67
+    member_id: 0xe8b523f6
+    member_id: 0x15f35855
+    member_id: 0x4af4486b
+    member_id: 0x770088bd
+    member_id: 0x0a8fa36d
+    member_id: 0x3d0b64f5
+    member_id: 0xd2929e47
+    member_id: 0xc994ba7a
+    member_id: 0x85bb35ef
+    member_id: 0x20b2e8a5
+    member_id: 0x683682a2
+    member_id: 0x6c717da8
+    member_id: 0xb917d4b4
+    member_id: 0x08f163d4
+    member_id: 0x2fb607f1
+    member_id: 0x09f71709
+    member_id: 0xdf4be73b
+    member_id: 0xe3e0be38
+    member_id: 0xf71a4a50
+    member_id: 0xf9cbc457
+    member_id: 0x7c146a0a
+    member_id: 0x855de6ed
+    member_id: 0x9af09765
+    member_id: 0x070aab3a
+    member_id: 0x7f0f3380
+    member_id: 0xebe2af3a
+    member_id: 0x2943a006
+    member_id: 0x2ef4f0f3
+    member_id: 0x0d29d271
+    member_id: 0xa9c07b41
+    member_id: 0xcedb9a78
+    member_id: 0x2ef712c6
+    member_id: 0x564e8268
+    member_id: 0x59c3e5ae
+    member_id: 0x712769f6
+    member_id: 0x4432cea5
+    member_id: 0x7faf4469
+    member_id: 0x89e0ecff
+    member_id: 0xcb2f866e
+    member_id: 0x908eaef0
+    member_id: 0xfa41f87a
+    member_id: 0xbdbbe5a3
+    member_id: 0x0cbb4915
+    member_id: 0x49034fb3
+    member_id: 0xe76fa154
+    member_id: 0x8c45d0aa
+    member_id: 0xe967b815
+    member_id: 0x3db8ca72
+    member_id: 0x3517b778
+    member_id: 0xce4d3cf0
+    member_id: 0x9aeee61e
+    member_id: 0xa71919cc
+    member_id: 0xadda64ae
+    member_id: 0x4b3f6cc8
+    member_id: 0x060f42d3
+    member_id: 0x364aa10e
+    member_id: 0xe1746060
+    member_id: 0x50b0d003
+    member_id: 0xbebcefd7
+    member_id: 0x8c22335d
+    member_id: 0x7218c28e
+    member_id: 0x59adc2d2
+    member_id: 0x381d17ec
+    member_id: 0xfc8a2bee
+    member_id: 0xd2ddbd2d
+    member_id: 0xf0a21c68
+    member_id: 0x9fa83912
+    member_id: 0x0481ab4a
+    member_id: 0xc7e6e121
+    member_id: 0x5db4d8ed
+    member_id: 0xb8e37d35
+    member_id: 0x10d92cce
+    member_id: 0xf8eed10c
+    member_id: 0x4a4463fd
+    member_id: 0x20b218a7
+    member_id: 0xe5ff33a4
+    member_id: 0x7910cea0
+    member_id: 0xb1ae8222
+    member_id: 0x774e5026
+    member_id: 0x8a901ce5
+    member_id: 0x79bc3da9
+    member_id: 0xdf142f76
+    member_id: 0x77c51ee3
+    member_id: 0x26715148
+    member_id: 0x41f3d9f7
+    member_id: 0x4e07a941
+    member_id: 0xa1393361
+    member_id: 0x20af02e4
+    member_id: 0xa398de14
+    member_id: 0xf7c1bdc7
+    member_id: 0x635ddc7d
+    member_id: 0x29b95bfe
+    member_id: 0x99862748
+    member_id: 0xe2937f2e
+    member_id: 0x91cdfe9a
+    member_id: 0xcbbf5774
+    member_id: 0xe9a4fde6
+    member_id: 0x6571c768
+    member_id: 0xce87a023
+    member_id: 0x958b51ce
+    member_id: 0xd6463eb0
+    member_id: 0x92f46ad8
+    member_id: 0xf18fc8e0
+    member_id: 0x3d44bfa5
+    member_id: 0x30f36b2c
+    member_id: 0x9348db88
+    member_id: 0x2d081f8d
+  }
+}
+struct_union {
+  id: 0x59d48311
+  kind: STRUCT
+  name: "netns_ipv6"
+  definition {
+    bytesize: 896
+    member_id: 0xb565c09d
+    member_id: 0x0d06a9bb
+    member_id: 0xad697802
+    member_id: 0x504e58aa
+    member_id: 0xc29a8766
+    member_id: 0x777173d5
+    member_id: 0xbe6b46db
+    member_id: 0xf6f90c3e
+    member_id: 0xcb39ea73
+    member_id: 0x9dbbf18c
+    member_id: 0x59046610
+    member_id: 0xd93c6299
+    member_id: 0xffcc59fe
+    member_id: 0xf279a37a
+    member_id: 0x389ce5b9
+    member_id: 0xd5da7d05
+    member_id: 0x051d50f0
+    member_id: 0x1732a364
+    member_id: 0x50257db9
+    member_id: 0xe2eb1f5c
+    member_id: 0xedc3c45f
+    member_id: 0x3ce92240
+    member_id: 0x204cb9ba
+    member_id: 0x46fed137
+    member_id: 0xe14dd8ff
+    member_id: 0x164bcb7c
+    member_id: 0xfa360066
+    member_id: 0xedd049e1
+    member_id: 0xfa8d43c0
+    member_id: 0x437b82b7
+    member_id: 0xb6de9163
+    member_id: 0xd7168d43
+    member_id: 0xdc9f3663
+    member_id: 0x6571c16a
+    member_id: 0x8faf41e7
+    member_id: 0x99f99f8e
+    member_id: 0xd6463ae4
+    member_id: 0x097dd455
+    member_id: 0x3d44ba44
+    member_id: 0x2bee09c2
+    member_id: 0xdb660d5a
+    member_id: 0x2d0811bf
+  }
+}
+struct_union {
+  id: 0xf0ff70b4
+  kind: STRUCT
+  name: "netns_mib"
+  definition {
+    bytesize: 112
+    member_id: 0xe759e741
+    member_id: 0x40f17969
+    member_id: 0xd2464ed0
+    member_id: 0xc2d98296
+    member_id: 0xb449abcc
+    member_id: 0xf7f9f4c6
+    member_id: 0xb8e70959
+    member_id: 0x78a32375
+    member_id: 0xfe36567e
+    member_id: 0xdf929f4a
+    member_id: 0x79cc740e
+    member_id: 0xd92e42e6
+    member_id: 0x988f4b0d
+    member_id: 0x2e94177a
+  }
+}
+struct_union {
+  id: 0x81cadb9e
+  kind: STRUCT
+  name: "netns_nexthop"
+  definition {
+    bytesize: 96
+    member_id: 0x82e5fa96
+    member_id: 0xb2c3ab53
+    member_id: 0xfa5983ee
+    member_id: 0x2827065a
+    member_id: 0xdf770227
+  }
+}
+struct_union {
+  id: 0x856ef6c4
+  kind: STRUCT
+  name: "netns_nf"
+  definition {
+    bytesize: 224
+    member_id: 0xbffd168e
+    member_id: 0x5f33aa63
+    member_id: 0x788992a7
+    member_id: 0xa1b27de9
+    member_id: 0x0f375eeb
+    member_id: 0x28df8f7a
+    member_id: 0x76fb30d4
+    member_id: 0x1b4fab6d
+    member_id: 0x2d081217
+  }
+}
+struct_union {
+  id: 0x0873dbe3
+  kind: STRUCT
+  name: "netns_packet"
+  definition {
+    bytesize: 56
+    member_id: 0xdf4ccd45
+    member_id: 0x5b3140b8
+  }
+}
+struct_union {
+  id: 0x7a3516be
+  kind: STRUCT
+  name: "netns_sysctl_ipv6"
+  definition {
+    bytesize: 192
+    member_id: 0x2b104951
+    member_id: 0xde64bb61
+    member_id: 0x5018d4ab
+    member_id: 0x1e5cff70
+    member_id: 0xff317363
+    member_id: 0x94ec9329
+    member_id: 0x7c7aa7e6
+    member_id: 0x66896532
+    member_id: 0xbaf83254
+    member_id: 0x61a97677
+    member_id: 0xe6888227
+    member_id: 0xede8772f
+    member_id: 0x2e9cb087
+    member_id: 0xc973e169
+    member_id: 0xc19c2718
+    member_id: 0x975a5c19
+    member_id: 0x6879d7d9
+    member_id: 0xaa0ea302
+    member_id: 0x970b933d
+    member_id: 0x8fefe80d
+    member_id: 0xf64736d0
+    member_id: 0xda6d244f
+    member_id: 0x230c5b9d
+    member_id: 0xee9eaf49
+    member_id: 0xe3738d62
+    member_id: 0x80a6bd43
+    member_id: 0x54642065
+    member_id: 0x3d18ebaf
+    member_id: 0xf196cd6c
+    member_id: 0xeabb476a
+    member_id: 0xbb70d4f6
+    member_id: 0x4c5d384d
+    member_id: 0x02f73413
+    member_id: 0x65cc59ba
+    member_id: 0x006140ef
+    member_id: 0xada1cece
+    member_id: 0x48ccbe61
+    member_id: 0x61f40f68
+    member_id: 0x567d4292
+    member_id: 0xfbd4593e
+    member_id: 0x2d081262
+  }
+}
+struct_union {
+  id: 0xbc5b58b9
+  kind: STRUCT
+  name: "netns_sysctl_lowpan"
+  definition {
+    bytesize: 8
+    member_id: 0x1e5cf7b9
+  }
+}
+struct_union {
+  id: 0xaf070227
+  kind: STRUCT
+  name: "netns_unix"
+  definition {
+    bytesize: 32
+    member_id: 0xb6d4bf02
+    member_id: 0x118dc1ad
+    member_id: 0xb5a5a1c3
+  }
+}
+struct_union {
+  id: 0x68b01961
+  kind: STRUCT
+  name: "netns_xdp"
+  definition {
+    bytesize: 56
+    member_id: 0x2d4b3c00
+    member_id: 0x7c8dab06
+  }
+}
+struct_union {
+  id: 0x9b970fcd
+  kind: STRUCT
+  name: "netns_xfrm"
+  definition {
+    bytesize: 960
+    member_id: 0x9e9a83f6
+    member_id: 0x577ece25
+    member_id: 0x15d178c3
+    member_id: 0xa6f4e469
+    member_id: 0xa49ff249
+    member_id: 0x5e09a6bc
+    member_id: 0x98b92dbb
+    member_id: 0x533e3bdc
+    member_id: 0x8ecfd706
+    member_id: 0x8297e4ba
+    member_id: 0x2b331eac
+    member_id: 0xab6e5bdd
+    member_id: 0xc33c28a5
+    member_id: 0x14dab422
+    member_id: 0x586ac588
+    member_id: 0x85aa52ae
+    member_id: 0x3e2089f0
+    member_id: 0xc9b27f69
+    member_id: 0x6d93a20e
+    member_id: 0x3f7a174b
+    member_id: 0x223e673d
+    member_id: 0x8c372bc0
+    member_id: 0xa7267479
+    member_id: 0xd9a8ff78
+    member_id: 0x7bee0d76
+    member_id: 0x1cef4cdb
+    member_id: 0x46a35b1d
+    member_id: 0x2f6f3f38
+    member_id: 0x1bbfac9e
+    member_id: 0xb6b767d1
+    member_id: 0x42a2340b
+    member_id: 0x28edafb5
+    member_id: 0x2d081eb7
+  }
+}
+struct_union {
+  id: 0xbf972a1c
+  kind: STRUCT
+  name: "netprio_map"
+  definition {
+    bytesize: 24
+    member_id: 0x95dac977
+    member_id: 0x4d44a01f
+    member_id: 0x2a04a92c
+  }
+}
+struct_union {
+  id: 0x9b10fce3
+  kind: STRUCT
+  name: "new_utsname"
+  definition {
+    bytesize: 390
+    member_id: 0x708541bb
+    member_id: 0x8b9f6bc5
+    member_id: 0xae6647ee
+    member_id: 0xa69f80b8
+    member_id: 0xcd1a0cff
+    member_id: 0x93618294
+  }
+}
+struct_union {
+  id: 0x63b1e2ab
+  kind: STRUCT
+  name: "nexthop"
+  definition {
+    bytesize: 136
+    member_id: 0x230022a6
+    member_id: 0x1f978d51
+    member_id: 0x4e6c1cfa
+    member_id: 0xb44a6809
+    member_id: 0x105f6a85
+    member_id: 0x7203ef62
+    member_id: 0xcce62c14
+    member_id: 0xdcf61d25
+    member_id: 0x9fb787a3
+    member_id: 0x222ef7a6
+    member_id: 0xb7dcfb16
+    member_id: 0x95dac3d1
+    member_id: 0x3efb7088
+  }
+}
+struct_union {
+  id: 0xc06242e6
+  kind: STRUCT
+  name: "nf_conn"
+  definition {
+    bytesize: 272
+    member_id: 0x980f575e
+    member_id: 0x2d1fe1be
+    member_id: 0x540a881d
+    member_id: 0xfb670324
+    member_id: 0x205455ff
+    member_id: 0x4f31defb
+    member_id: 0x452670ab
+    member_id: 0xc815302a
+    member_id: 0x3a445881
+    member_id: 0x816a53f4
+    member_id: 0x3bd928e4
+    member_id: 0x9979519f
+    member_id: 0x5d6e783d
+    member_id: 0xd671c469
+    member_id: 0x2d0812b0
+    member_id: 0x637607e0
+  }
+}
+struct_union {
+  id: 0x270c242d
+  kind: STRUCT
+  name: "nf_conntrack"
+  definition {
+    bytesize: 4
+    member_id: 0xd31108c5
+  }
+}
+struct_union {
+  id: 0x6b9e021d
+  kind: STRUCT
+  name: "nf_conntrack_expect"
+  definition {
+    bytesize: 232
+    member_id: 0x49e78392
+    member_id: 0x6c20ec89
+    member_id: 0xc762812b
+    member_id: 0xa878d68f
+    member_id: 0xee71f93c
+    member_id: 0x48bb3489
+    member_id: 0x3a44545a
+    member_id: 0x541114cc
+    member_id: 0xd3110a36
+    member_id: 0x2d2d03a4
+    member_id: 0x8604de8e
+    member_id: 0x0828df49
+    member_id: 0x76c06a7e
+    member_id: 0x2e561a88
+    member_id: 0x95dace52
+  }
+}
+struct_union {
+  id: 0x4fc61c75
+  kind: STRUCT
+  name: "nf_conntrack_expect_policy"
+  definition {
+    bytesize: 24
+    member_id: 0x5d9d28b7
+    member_id: 0x54860c8a
+    member_id: 0x0d9948a1
+  }
+}
+struct_union {
+  id: 0xcc90706c
+  kind: STRUCT
+  name: "nf_conntrack_helper"
+  definition {
+    bytesize: 160
+    member_id: 0x6c20e54b
+    member_id: 0x0d994582
+    member_id: 0xb7dcf807
+    member_id: 0x3e3e8af5
+    member_id: 0xfcf50bf9
+    member_id: 0xc76286f7
+    member_id: 0x37cb260a
+    member_id: 0xa4fb36f9
+    member_id: 0xb90a83b8
+    member_id: 0x7ba95e54
+    member_id: 0x40cc35fe
+    member_id: 0x2d2d0819
+    member_id: 0x88db3a0d
+    member_id: 0x7377a26d
+    member_id: 0x51dc5a84
+  }
+}
+struct_union {
+  id: 0x9676bb5b
+  kind: STRUCT
+  name: "nf_conntrack_man"
+  definition {
+    bytesize: 20
+    member_id: 0x79caa317
+    member_id: 0xec594ac3
+    member_id: 0xa2b82643
+  }
+}
+struct_union {
+  id: 0x261f6c9d
+  kind: UNION
+  name: "nf_conntrack_man_proto"
+  definition {
+    bytesize: 2
+    member_id: 0xee1a3da7
+    member_id: 0xb0f592ee
+    member_id: 0xaec5d3b3
+    member_id: 0xf5fed2dd
+    member_id: 0xaa26b880
+    member_id: 0xe5684527
+    member_id: 0xf506281c
+  }
+}
+struct_union {
+  id: 0x0db3daed
+  kind: UNION
+  name: "nf_conntrack_proto"
+  definition {
+    bytesize: 64
+    member_id: 0xaa738a91
+    member_id: 0xe5bd426b
+    member_id: 0xb0d11959
+    member_id: 0xaead79f4
+    member_id: 0xf59d2de9
+    member_id: 0x08c5ba3e
+  }
+}
+struct_union {
+  id: 0x24105774
+  kind: STRUCT
+  name: "nf_conntrack_tuple"
+  definition {
+    bytesize: 40
+    member_id: 0x44a01cbe
+    member_id: 0xbbf78102
+  }
+}
+struct_union {
+  id: 0xd96df1fa
+  kind: STRUCT
+  name: "nf_conntrack_tuple_hash"
+  definition {
+    bytesize: 56
+    member_id: 0x37a2e18e
+    member_id: 0xc7628842
+  }
+}
+struct_union {
+  id: 0x4bb6d015
+  kind: STRUCT
+  name: "nf_conntrack_tuple_mask"
+  definition {
+    bytesize: 20
+    member_id: 0x44304fff
+  }
+}
+struct_union {
+  id: 0x5f7df287
+  kind: STRUCT
+  name: "nf_ct_dccp"
+  definition {
+    bytesize: 16
+    member_id: 0xc0868466
+    member_id: 0x72f94c20
+    member_id: 0x3c9a6b57
+    member_id: 0x557c6e65
+    member_id: 0x57b0ce70
+  }
+}
+struct_union {
+  id: 0xbb86735c
+  kind: STRUCT
+  name: "nf_ct_event"
+  definition {
+    bytesize: 16
+    member_id: 0xd7457567
+    member_id: 0x57a4d161
+    member_id: 0x5cfcd51f
+  }
+}
+struct_union {
+  id: 0xb4e7b72e
+  kind: STRUCT
+  name: "nf_ct_event_notifier"
+  definition {
+    bytesize: 16
+    member_id: 0x32ef48bb
+    member_id: 0xc563626c
+  }
+}
+struct_union {
+  id: 0xbf78c6b4
+  kind: STRUCT
+  name: "nf_ct_ext"
+  definition {
+    bytesize: 16
+    member_id: 0x9bff77f6
+    member_id: 0xb82c8b76
+    member_id: 0xa36a9456
+    member_id: 0xff5807ff
+  }
+}
+struct_union {
+  id: 0x8b615255
+  kind: STRUCT
+  name: "nf_ct_gre"
+  definition {
+    bytesize: 8
+    member_id: 0xf042e50f
+    member_id: 0x54860c8a
+  }
+}
+struct_union {
+  id: 0x62e5a488
+  kind: STRUCT
+  name: "nf_ct_udp"
+  definition {
+    bytesize: 8
+    member_id: 0xfd03a992
+  }
+}
+struct_union {
+  id: 0xbcce5d07
+  kind: STRUCT
+  name: "nf_dccp_net"
+  definition {
+    bytesize: 44
+    member_id: 0xb3cadc7d
+    member_id: 0x2bd05108
+  }
+}
+struct_union {
+  id: 0xe0235496
+  kind: STRUCT
+  name: "nf_exp_event"
+  definition {
+    bytesize: 16
+    member_id: 0x964efc36
+    member_id: 0x57a4d161
+    member_id: 0x5cfcd51f
+  }
+}
+struct_union {
+  id: 0xb02dec4e
+  kind: STRUCT
+  name: "nf_flowtable"
+}
+struct_union {
+  id: 0x09dc021e
+  kind: STRUCT
+  name: "nf_generic_net"
+  definition {
+    bytesize: 4
+    member_id: 0x548601b1
+  }
+}
+struct_union {
+  id: 0x55e1f12c
+  kind: STRUCT
+  name: "nf_gre_net"
+  definition {
+    bytesize: 24
+    member_id: 0xebd2bfd1
+    member_id: 0xe62bdfd0
+  }
+}
+struct_union {
+  id: 0x3fba3933
+  kind: STRUCT
+  name: "nf_hook_entries"
+  definition {
+    bytesize: 8
+    member_id: 0x32f14c09
+    member_id: 0x645b3570
+  }
+}
+struct_union {
+  id: 0x1e5431c2
+  kind: STRUCT
+  name: "nf_hook_entry"
+  definition {
+    bytesize: 16
+    member_id: 0xcc6ce804
+    member_id: 0x59119c40
+  }
+}
+struct_union {
+  id: 0xe7176adb
+  kind: STRUCT
+  name: "nf_hook_ops"
+  definition {
+    bytesize: 40
+    member_id: 0xcc6ce804
+    member_id: 0xce0b4088
+    member_id: 0x59119163
+    member_id: 0xcaa851c4
+    member_id: 0x4baf7b66
+    member_id: 0xe4d65578
+    member_id: 0x10837b6d
+  }
+}
+struct_union {
+  id: 0xf66ec631
+  kind: STRUCT
+  name: "nf_hook_state"
+  definition {
+    bytesize: 48
+    member_id: 0xcc58a4be
+    member_id: 0xcaa852eb
+    member_id: 0x5c99cb61
+    member_id: 0xb3c37f91
+    member_id: 0x828c817c
+    member_id: 0x7203edf4
+    member_id: 0x1e0dc421
+  }
+}
+struct_union {
+  id: 0xa82466eb
+  kind: STRUCT
+  name: "nf_icmp_net"
+  definition {
+    bytesize: 4
+    member_id: 0x548601b1
+  }
+}
+struct_union {
+  id: 0xf60ed6a0
+  kind: UNION
+  name: "nf_inet_addr"
+  definition {
+    bytesize: 16
+    member_id: 0xeeda7ffc
+    member_id: 0xd3b5d29f
+    member_id: 0x92f6c42b
+    member_id: 0x5c0e2095
+    member_id: 0x2fd917c3
+  }
+}
+struct_union {
+  id: 0xfc235432
+  kind: STRUCT
+  name: "nf_ip_net"
+  definition {
+    bytesize: 192
+    member_id: 0x42335ffa
+    member_id: 0xb0d2f083
+    member_id: 0xae6205c1
+    member_id: 0xf57d8527
+    member_id: 0x8df0f880
+    member_id: 0xaa903f47
+    member_id: 0xe536536a
+    member_id: 0xf543a7c9
+  }
+}
+struct_union {
+  id: 0x2889169c
+  kind: STRUCT
+  name: "nf_logger"
+  definition {
+    bytesize: 32
+    member_id: 0x0ddfefbb
+    member_id: 0x5c426bba
+    member_id: 0xa7e52a59
+    member_id: 0x3e3e85fb
+  }
+}
+struct_union {
+  id: 0xef809d63
+  kind: STRUCT
+  name: "nf_loginfo"
+  definition {
+    bytesize: 16
+    member_id: 0x5c5c6be1
+    member_id: 0xec049603
+  }
+}
+struct_union {
+  id: 0x54597ca4
+  kind: STRUCT
+  name: "nf_sctp_net"
+  definition {
+    bytesize: 40
+    member_id: 0xe6309576
+  }
+}
+struct_union {
+  id: 0x2d20b515
+  kind: STRUCT
+  name: "nf_tcp_net"
+  definition {
+    bytesize: 60
+    member_id: 0xe69b3c9d
+    member_id: 0x203df644
+    member_id: 0x416a89cd
+    member_id: 0x76ddec24
+    member_id: 0xc0a9db63
+  }
+}
+struct_union {
+  id: 0xad9289eb
+  kind: STRUCT
+  name: "nf_udp_net"
+  definition {
+    bytesize: 8
+    member_id: 0xe62bd612
+  }
+}
+struct_union {
+  id: 0x399e7ea8
+  kind: STRUCT
+  name: "nfc_dev"
+  definition {
+    bytesize: 1200
+    member_id: 0x3ce0d8f4
+    member_id: 0x2f880827
+    member_id: 0x16133746
+    member_id: 0x1053f6ae
+    member_id: 0x2c7d614f
+    member_id: 0xce1ac980
+    member_id: 0x846a4adb
+    member_id: 0x8ec1b317
+    member_id: 0x6f6cda9d
+    member_id: 0x611c4b54
+    member_id: 0x8558d7df
+    member_id: 0x3428ed37
+    member_id: 0x071c92aa
+    member_id: 0x6d9a3f44
+    member_id: 0xb0199c94
+    member_id: 0x0909e217
+    member_id: 0x6af1b6af
+    member_id: 0x37597850
+    member_id: 0x44cb2b5e
+    member_id: 0xce8d2968
+    member_id: 0x80a0a360
+    member_id: 0xb9270675
+    member_id: 0x814ab903
+    member_id: 0xafbdad0b
+    member_id: 0x5b87e129
+  }
+}
+struct_union {
+  id: 0x571672df
+  kind: STRUCT
+  name: "nfc_evt_transaction"
+  definition {
+    bytesize: 21
+    member_id: 0x953e7334
+    member_id: 0x596040ee
+    member_id: 0xe64a6945
+    member_id: 0x4b6003a3
+  }
+}
+struct_union {
+  id: 0x00c50bec
+  kind: STRUCT
+  name: "nfc_genl_data"
+  definition {
+    bytesize: 56
+    member_id: 0x73609611
+    member_id: 0xe84562f4
+  }
+}
+struct_union {
+  id: 0xb396f194
+  kind: STRUCT
+  name: "nfc_ops"
+  definition {
+    bytesize: 128
+    member_id: 0x842a8ee9
+    member_id: 0x85c62e9f
+    member_id: 0x8600e517
+    member_id: 0xd37be272
+    member_id: 0x34682498
+    member_id: 0x7f5ce60e
+    member_id: 0x29e19b98
+    member_id: 0x30087383
+    member_id: 0xb3b072d5
+    member_id: 0x6754d613
+    member_id: 0x10a71e1e
+    member_id: 0x51f9c40d
+    member_id: 0x8ca232e1
+    member_id: 0xbbab763d
+    member_id: 0xf5f43594
+    member_id: 0x7de4d40d
+  }
+}
+struct_union {
+  id: 0x9c07842f
+  kind: STRUCT
+  name: "nfc_protocol"
+  definition {
+    bytesize: 32
+    member_id: 0xcc480c42
+    member_id: 0x5d583381
+    member_id: 0x4a965b92
+    member_id: 0x0fae5a9f
+  }
+}
+struct_union {
+  id: 0x93a29c3d
+  kind: STRUCT
+  name: "nfc_se"
+  definition {
+    bytesize: 24
+    member_id: 0x7c00ef52
+    member_id: 0x3c4ef9ce
+    member_id: 0x5cc79521
+    member_id: 0x7262b569
+  }
+}
+struct_union {
+  id: 0x1e011633
+  kind: STRUCT
+  name: "nfc_target"
+  definition {
+    bytesize: 76
+    member_id: 0x3c4ef00c
+    member_id: 0x6d9a3f19
+    member_id: 0x4036d71d
+    member_id: 0x72d71532
+    member_id: 0x87be1d5f
+    member_id: 0xd83c0113
+    member_id: 0xb85ceabd
+    member_id: 0x19efa420
+    member_id: 0xb6683538
+    member_id: 0x5a77a500
+    member_id: 0x201575c0
+    member_id: 0x604ad12b
+    member_id: 0x1a86e157
+    member_id: 0xcb446efe
+    member_id: 0xbdc356d6
+    member_id: 0x8238342c
+    member_id: 0xa61583da
+  }
+}
+struct_union {
+  id: 0xca5d3b28
+  kind: STRUCT
+  name: "nfc_vendor_cmd"
+  definition {
+    bytesize: 16
+    member_id: 0x0baf80d2
+    member_id: 0xd6e4c677
+    member_id: 0xd905c561
+  }
+}
+struct_union {
+  id: 0x5d26223d
+  kind: STRUCT
+  name: "nfs4_lock_info"
+  definition {
+    bytesize: 8
+    member_id: 0x4aad85e8
+  }
+}
+struct_union {
+  id: 0xe98176bf
+  kind: STRUCT
+  name: "nfs4_lock_state"
+}
+struct_union {
+  id: 0x35981da9
+  kind: STRUCT
+  name: "nfs_lock_info"
+  definition {
+    bytesize: 32
+    member_id: 0x723af42a
+    member_id: 0x4aa4bed9
+    member_id: 0x7c00e690
+  }
+}
+struct_union {
+  id: 0xca69055f
+  kind: STRUCT
+  name: "nh_group"
+  definition {
+    bytesize: 24
+    member_id: 0x42074e89
+    member_id: 0x2528d76c
+    member_id: 0xffadbe86
+    member_id: 0x3af23505
+    member_id: 0xe9943b0c
+    member_id: 0x837a984a
+    member_id: 0xfa50e7db
+    member_id: 0xa7655f29
+    member_id: 0xd1be93e2
+  }
+}
+struct_union {
+  id: 0x7488a7f3
+  kind: STRUCT
+  name: "nh_grp_entry"
+  definition {
+    bytesize: 64
+    member_id: 0x7137a2c2
+    member_id: 0x7e4104da
+    member_id: 0x3ef88201
+    member_id: 0x5e97aaa2
+    member_id: 0x285fabee
+  }
+}
+struct_union {
+  id: 0xe809f657
+  kind: STRUCT
+  name: "nh_info"
+  definition {
+    bytesize: 136
+    member_id: 0xb883ae1d
+    member_id: 0x285fa55b
+    member_id: 0x9e7cfca6
+    member_id: 0xdc7effff
+    member_id: 0x837a9f85
+    member_id: 0x323da4b5
+  }
+}
+struct_union {
+  id: 0xd503ee8c
+  kind: STRUCT
+  name: "nh_res_bucket"
+  definition {
+    bytesize: 32
+    member_id: 0xb97ecd81
+    member_id: 0xeedb61d6
+    member_id: 0x3267ae0e
+    member_id: 0xec4ad7d3
+    member_id: 0x9fb7898e
+  }
+}
+struct_union {
+  id: 0xaea51fc6
+  kind: STRUCT
+  name: "nh_res_table"
+  definition {
+    bytesize: 192
+    member_id: 0x7203ed5f
+    member_id: 0xf3cce6ca
+    member_id: 0xe3b51280
+    member_id: 0xdb115a10
+    member_id: 0xa8fd1366
+    member_id: 0x83fcb6b8
+    member_id: 0x0d4684a8
+    member_id: 0x92b2288d
+    member_id: 0x2e937c1b
+  }
+}
+struct_union {
+  id: 0x07afa3be
+  kind: STRUCT
+  name: "nl80211_vendor_cmd_info"
+  definition {
+    bytesize: 8
+    member_id: 0x0baf80d2
+    member_id: 0xd6e4c677
+  }
+}
+struct_union {
+  id: 0x7b599407
+  kind: STRUCT
+  name: "nl80211_wowlan_tcp_data_seq"
+  definition {
+    bytesize: 12
+    member_id: 0x46fd1def
+    member_id: 0x9bfaff40
+    member_id: 0xb8e3ff08
+  }
+}
+struct_union {
+  id: 0xa91933be
+  kind: STRUCT
+  name: "nl80211_wowlan_tcp_data_token"
+  definition {
+    bytesize: 8
+    member_id: 0x9bfaf27b
+    member_id: 0xb8e3f6d2
+    member_id: 0x367084ef
+  }
+}
+struct_union {
+  id: 0x3483983e
+  kind: STRUCT
+  name: "nl80211_wowlan_tcp_data_token_feature"
+  definition {
+    bytesize: 12
+    member_id: 0x638a0c13
+    member_id: 0xfe6eb0c5
+    member_id: 0xdd38cf41
+  }
+}
+struct_union {
+  id: 0x3f38d6ad
+  kind: STRUCT
+  name: "nl_info"
+  definition {
+    bytesize: 24
+    member_id: 0xda5b39bc
+    member_id: 0xc56a7e08
+    member_id: 0x57a4dc42
+    member_id: 0xb92557c4
+    member_id: 0x2a07186e
+  }
+}
+struct_union {
+  id: 0x7d4be8dc
+  kind: STRUCT
+  name: "nla_policy"
+  definition {
+    bytesize: 16
+    member_id: 0x5c7f890c
+    member_id: 0xe2a9ed02
+    member_id: 0xb8949657
+    member_id: 0x3ddcd715
+  }
+}
+struct_union {
+  id: 0xa4388448
+  kind: STRUCT
+  name: "nlattr"
+  definition {
+    bytesize: 4
+    member_id: 0x97c34ed5
+    member_id: 0x49f93a92
+  }
+}
+struct_union {
+  id: 0xcd7e34e4
+  kind: STRUCT
+  name: "nlm_lockowner"
+}
+struct_union {
+  id: 0x64da9c42
+  kind: STRUCT
+  name: "nlmsghdr"
+  definition {
+    bytesize: 16
+    member_id: 0xaf94917b
+    member_id: 0x9d3c4a93
+    member_id: 0x20f0e7a9
+    member_id: 0x16c9fa36
+    member_id: 0x7bb01964
+  }
+}
+struct_union {
+  id: 0x594b6ab2
+  kind: STRUCT
+  name: "notification"
+  definition {
+    bytesize: 48
+    member_id: 0xb694f50b
+    member_id: 0x1cedfb3f
+    member_id: 0x2749fa8e
+  }
+}
+struct_union {
+  id: 0x9ceff924
+  kind: STRUCT
+  name: "notification_limit"
+  definition {
+    bytesize: 12
+    member_id: 0xd4a74433
+    member_id: 0x6d211276
+    member_id: 0x127d8375
+  }
+}
+struct_union {
+  id: 0x449a775b
+  kind: STRUCT
+  name: "notifier_block"
+  definition {
+    bytesize: 24
+    member_id: 0xba5da6b0
+    member_id: 0x11e8b29a
+    member_id: 0x10837204
+  }
+}
+struct_union {
+  id: 0xf052f867
+  kind: STRUCT
+  name: "ns_common"
+  definition {
+    bytesize: 24
+    member_id: 0xa1dc9cb8
+    member_id: 0xafb42f46
+    member_id: 0x7feeb498
+    member_id: 0x658270e5
+  }
+}
+struct_union {
+  id: 0x74487c54
+  kind: STRUCT
+  name: "nsproxy"
+  definition {
+    bytesize: 72
+    member_id: 0x65518d58
+    member_id: 0x743bd138
+    member_id: 0xaa5624b1
+    member_id: 0x22c37402
+    member_id: 0x5dd23698
+    member_id: 0x8112103e
+    member_id: 0x74f2b1e5
+    member_id: 0x4aef362f
+    member_id: 0x2baff1a3
+  }
+}
+struct_union {
+  id: 0x9bfdd1d8
+  kind: STRUCT
+  name: "nsset"
+  definition {
+    bytesize: 32
+    member_id: 0x2d2d0138
+    member_id: 0xac738cad
+    member_id: 0x94eef864
+    member_id: 0xced3c9f9
+  }
+}
+struct_union {
+  id: 0xb9198b14
+  kind: STRUCT
+  name: "nvdimm"
+  definition {
+    bytesize: 1152
+    member_id: 0x2d5bf13a
+    member_id: 0xa159a911
+    member_id: 0xc1343f28
+    member_id: 0xce1ac980
+    member_id: 0x60a5cb13
+    member_id: 0xcc480086
+    member_id: 0xcd689a7d
+    member_id: 0xd9f93d25
+    member_id: 0xeed2b692
+    member_id: 0x6ca67214
+    member_id: 0x20d98eb4
+    member_id: 0x0ec73713
+  }
+}
+struct_union {
+  id: 0x9d901f21
+  kind: STRUCT
+  name: "nvdimm_bus"
+  definition {
+    bytesize: 1064
+    member_id: 0x15524bef
+    member_id: 0x202d9373
+    member_id: 0x7c00eff9
+    member_id: 0xce1ac0db
+    member_id: 0xcc480247
+    member_id: 0x14050cd8
+    member_id: 0x179647c1
+    member_id: 0x0e1ab1dc
+    member_id: 0x75073450
+    member_id: 0x9d72d2d7
+  }
+}
+struct_union {
+  id: 0x259cd73c
+  kind: STRUCT
+  name: "nvdimm_bus_descriptor"
+  definition {
+    bytesize: 88
+    member_id: 0xf8e017d2
+    member_id: 0xc134320b
+    member_id: 0xcc56f1ed
+    member_id: 0x59128a51
+    member_id: 0x965f1695
+    member_id: 0x0415cf67
+    member_id: 0xf7c3f3d3
+    member_id: 0x4ce502de
+    member_id: 0x6e8e256e
+    member_id: 0x50872346
+    member_id: 0x0ec44d6d
+  }
+}
+struct_union {
+  id: 0x6a3a735b
+  kind: STRUCT
+  name: "nvdimm_bus_fw_ops"
+  definition {
+    bytesize: 24
+    member_id: 0x8e9d1882
+    member_id: 0xd93e1e63
+    member_id: 0xdcf6e716
+  }
+}
+struct_union {
+  id: 0xc83bd7a5
+  kind: STRUCT
+  name: "nvdimm_drvdata"
+  definition {
+    bytesize: 152
+    member_id: 0xce3bbab3
+    member_id: 0x731737b1
+    member_id: 0xd90bc7bf
+    member_id: 0xff8a91c0
+    member_id: 0x9ed15d15
+    member_id: 0xaa9f6a1a
+    member_id: 0xacf5c92a
+    member_id: 0x93b48e83
+    member_id: 0x02ce575a
+  }
+}
+struct_union {
+  id: 0x5d182cc1
+  kind: STRUCT
+  name: "nvdimm_fw_ops"
+  definition {
+    bytesize: 24
+    member_id: 0x8e9f6a97
+    member_id: 0xcb4dc205
+    member_id: 0x34ac7d37
+  }
+}
+struct_union {
+  id: 0x9d70ae83
+  kind: STRUCT
+  name: "nvdimm_key_data"
+  definition {
+    bytesize: 32
+    member_id: 0xffccbff8
+  }
+}
+struct_union {
+  id: 0x02d700c1
+  kind: STRUCT
+  name: "nvdimm_security_ops"
+  definition {
+    bytesize: 64
+    member_id: 0xbb0e6a74
+    member_id: 0x2cceb26f
+    member_id: 0x266e10fe
+    member_id: 0x817f1006
+    member_id: 0x0da26875
+    member_id: 0x001e2235
+    member_id: 0xa98ba033
+    member_id: 0xfd57e798
+  }
+}
+struct_union {
+  id: 0xcffedea2
+  kind: STRUCT
+  name: "nvmem_cell"
+  definition {
+    bytesize: 16
+    member_id: 0x4d497457
+    member_id: 0xcc1138c5
+  }
+}
+struct_union {
+  id: 0x5eb14c2a
+  kind: STRUCT
+  name: "nvmem_cell_entry"
+  definition {
+    bytesize: 56
+    member_id: 0x0de57ce8
+    member_id: 0x9b7bf8f6
+    member_id: 0x5c49c320
+    member_id: 0xfd809d37
+    member_id: 0x13047be9
+    member_id: 0x5317fbe7
+    member_id: 0x445c5fab
+    member_id: 0x0fa6c168
+  }
+}
+struct_union {
+  id: 0x55a80057
+  kind: STRUCT
+  name: "nvmem_cell_info"
+  definition {
+    bytesize: 32
+    member_id: 0x0de57ce8
+    member_id: 0x9b595d43
+    member_id: 0x5c6b6695
+    member_id: 0xfda23882
+    member_id: 0x1326de5c
+    member_id: 0x5317fbe7
+  }
+}
+struct_union {
+  id: 0x0481f23c
+  kind: STRUCT
+  name: "nvmem_config"
+  definition {
+    bytesize: 152
+    member_id: 0xce3bbab3
+    member_id: 0x0de57809
+    member_id: 0xcc480580
+    member_id: 0x4a965a99
+    member_id: 0xc909929f
+    member_id: 0x702253d3
+    member_id: 0x3f65622e
+    member_id: 0x4d58065e
+    member_id: 0x5c962823
+    member_id: 0xd9ecf50c
+    member_id: 0xc2f21cc5
+    member_id: 0x3cae1379
+    member_id: 0xf7c3fb33
+    member_id: 0xbfd35620
+    member_id: 0x72d2154a
+    member_id: 0x690f00a5
+    member_id: 0xa4292034
+    member_id: 0xd9193607
+    member_id: 0x4a30bfb7
+    member_id: 0x5e325fa3
+    member_id: 0x59119fbe
+    member_id: 0xb740b261
+    member_id: 0xa4e8c53f
+  }
+}
+struct_union {
+  id: 0x7b3d0a9f
+  kind: STRUCT
+  name: "nvmem_device"
+  definition {
+    bytesize: 1104
+    member_id: 0x4a965250
+    member_id: 0xce1ac5a8
+    member_id: 0x5e325618
+    member_id: 0x4a30b80b
+    member_id: 0xcc480050
+    member_id: 0xb714c9f8
+    member_id: 0xd98a2d0c
+    member_id: 0xd9ecf69e
+    member_id: 0xc2f2179a
+    member_id: 0x2d0fab5d
+    member_id: 0x5c962f39
+    member_id: 0x50c14745
+    member_id: 0xa4e8cce2
+    member_id: 0xc9e29461
+    member_id: 0x3f6569d5
+    member_id: 0x4d580816
+    member_id: 0x72d21e69
+    member_id: 0x690f0425
+    member_id: 0xa4292647
+    member_id: 0xbcd7e386
+    member_id: 0x591194e2
+  }
+}
+struct_union {
+  id: 0x999a8ee6
+  kind: STRUCT
+  name: "nvmem_keepout"
+  definition {
+    bytesize: 12
+    member_id: 0x465eb636
+    member_id: 0x824ad321
+    member_id: 0xa055d970
+  }
+}
+struct_union {
+  id: 0x480b5dec
+  kind: STRUCT
+  name: "obj_cgroup"
+  definition {
+    bytesize: 48
+    member_id: 0xb7459a6b
+    member_id: 0xc76cfce5
+    member_id: 0x837d50f7
+    member_id: 0x31bc7886
+  }
+}
+struct_union {
+  id: 0xad386ff8
+  kind: STRUCT
+  name: "ocontext"
+  definition {
+    bytesize: 200
+    member_id: 0xec2ac37d
+    member_id: 0x28775171
+    member_id: 0x41f3c646
+    member_id: 0x086ca956
+    member_id: 0x11d2d41a
+  }
+}
+struct_union {
+  id: 0x76b1559f
+  kind: STRUCT
+  name: "of_dev_auxdata"
+  definition {
+    bytesize: 32
+    member_id: 0x7ce16273
+    member_id: 0xbdde9422
+    member_id: 0x0ddfe679
+    member_id: 0x38c65ccc
+  }
+}
+struct_union {
+  id: 0x7670fa09
+  kind: STRUCT
+  name: "of_device_id"
+  definition {
+    bytesize: 200
+    member_id: 0x0d81b30a
+    member_id: 0x5c0c0a82
+    member_id: 0x7cc517ec
+    member_id: 0xffab319e
+  }
+}
+struct_union {
+  id: 0x33c203fc
+  kind: STRUCT
+  name: "of_dma"
+  definition {
+    bytesize: 56
+    member_id: 0x33a246e4
+    member_id: 0xf7c3fb83
+    member_id: 0x783ce174
+    member_id: 0x9e955a05
+    member_id: 0xc009bf1b
+    member_id: 0x486054f7
+  }
+}
+struct_union {
+  id: 0x257da0bd
+  kind: STRUCT
+  name: "of_endpoint"
+  definition {
+    bytesize: 16
+    member_id: 0x48be9ccb
+    member_id: 0xcc6aa4cc
+    member_id: 0x5a5653f7
+  }
+}
+struct_union {
+  id: 0x195ec392
+  kind: STRUCT
+  name: "of_phandle_args"
+  definition {
+    bytesize: 80
+    member_id: 0x5317f32e
+    member_id: 0xd4fa37b3
+    member_id: 0x34708f84
+  }
+}
+struct_union {
+  id: 0xb8108b21
+  kind: STRUCT
+  name: "of_phandle_iterator"
+  definition {
+    bytesize: 64
+    member_id: 0xe2a12db9
+    member_id: 0x21d42898
+    member_id: 0x720357b4
+    member_id: 0x6037ea07
+    member_id: 0x5e389e55
+    member_id: 0x91313f3f
+    member_id: 0xdac902e6
+    member_id: 0xdb759b4a
+    member_id: 0x0f417ada
+  }
+}
+struct_union {
+  id: 0x6cd9c1ba
+  kind: STRUCT
+  name: "of_regulator_match"
+  definition {
+    bytesize: 40
+    member_id: 0x0de57ce8
+    member_id: 0x6d52bc53
+    member_id: 0x97842617
+    member_id: 0xf7c3fa88
+    member_id: 0x87e3bc35
+  }
+}
+struct_union {
+  id: 0xa8c6a1ce
+  kind: STRUCT
+  name: "of_timer_base"
+  definition {
+    bytesize: 24
+    member_id: 0x85c253ee
+    member_id: 0x0de57809
+    member_id: 0xad5e21ae
+  }
+}
+struct_union {
+  id: 0x0d65bd2b
+  kind: STRUCT
+  name: "of_timer_clk"
+  definition {
+    bytesize: 40
+    member_id: 0xc8e82891
+    member_id: 0x0de57809
+    member_id: 0xad5e21ae
+    member_id: 0x5fe12f53
+    member_id: 0xff42257f
+  }
+}
+struct_union {
+  id: 0x850fbb44
+  kind: STRUCT
+  name: "of_timer_irq"
+  definition {
+    bytesize: 40
+    member_id: 0x991595e6
+    member_id: 0xad5e2557
+    member_id: 0x68693f75
+    member_id: 0x0de5752a
+    member_id: 0x2d5bf9f3
+    member_id: 0xf98330d3
+  }
+}
+struct_union {
+  id: 0x7556b101
+  kind: STRUCT
+  name: "old_timespec32"
+  definition {
+    bytesize: 8
+    member_id: 0x59dcca01
+    member_id: 0x386c7184
+  }
+}
+struct_union {
+  id: 0x95539d46
+  kind: STRUCT
+  name: "open_how"
+  definition {
+    bytesize: 24
+    member_id: 0x2d857629
+    member_id: 0x8770e308
+    member_id: 0x740af64c
+  }
+}
+struct_union {
+  id: 0xb5002363
+  kind: STRUCT
+  name: "opp_table"
+  definition {
+    bytesize: 680
+    member_id: 0x0fa6c6af
+    member_id: 0x967f749f
+    member_id: 0xb5c8f00c
+    member_id: 0x5f7afdd7
+    member_id: 0x230322fd
+    member_id: 0x02ce54f0
+    member_id: 0x2d4b32dc
+    member_id: 0x5317f9c9
+    member_id: 0x6a0b142c
+    member_id: 0x2bceab72
+    member_id: 0x5d8a6b26
+    member_id: 0xc83535b5
+    member_id: 0x8d8ea53b
+    member_id: 0xb650b8d4
+    member_id: 0x0b4c6d3f
+    member_id: 0xf8a17242
+    member_id: 0x8ecf58e7
+    member_id: 0x0376e525
+    member_id: 0x4fd1779f
+    member_id: 0x44116555
+    member_id: 0xd4b3659d
+    member_id: 0xcef628be
+    member_id: 0x02713f49
+    member_id: 0x08afcd7c
+    member_id: 0xc8e8261a
+    member_id: 0x675c7697
+    member_id: 0x2905e248
+    member_id: 0x8d30c638
+    member_id: 0x3b1ab314
+    member_id: 0x0074c878
+    member_id: 0x446e9ce1
+    member_id: 0x3a2d3ce8
+    member_id: 0x62c4f6d1
+    member_id: 0x5cf7792d
+    member_id: 0xf3efebee
+    member_id: 0x5101454d
+  }
+}
+struct_union {
+  id: 0x54bb1a65
+  kind: STRUCT
+  name: "optimistic_spin_queue"
+  definition {
+    bytesize: 4
+    member_id: 0xeee97265
+  }
+}
+struct_union {
+  id: 0x97f9278b
+  kind: STRUCT
+  name: "p_log"
+  definition {
+    bytesize: 16
+    member_id: 0x95646eb0
+    member_id: 0xc0479363
+  }
+}
+struct_union {
+  id: 0x7f6a4515
+  kind: STRUCT
+  name: "packet_type"
+  definition {
+    bytesize: 104
+    member_id: 0x5c235199
+    member_id: 0x2a1caddd
+    member_id: 0xce0b4088
+    member_id: 0x94d42638
+    member_id: 0x21224f43
+    member_id: 0xcfa8fc61
+    member_id: 0x6fdd8745
+    member_id: 0xb375ae2c
+    member_id: 0x0dd88be0
+    member_id: 0x7c00e825
+    member_id: 0x2d081c40
+    member_id: 0x63760fdb
+    member_id: 0xac894b6b
+    member_id: 0xe0f63ce5
+  }
+}
+struct_union {
+  id: 0x304d9ced
+  kind: STRUCT
+  name: "page"
+  definition {
+    bytesize: 64
+    member_id: 0x2d5bf13a
+    member_id: 0x3419ac05
+    member_id: 0x3c430170
+    member_id: 0x5f094371
+    member_id: 0xbf75fe15
+  }
+}
+struct_union {
+  id: 0xd079ba20
+  kind: STRUCT
+  name: "page_counter"
+  definition {
+    bytesize: 192
+    member_id: 0x07daa21a
+    member_id: 0xcb455660
+    member_id: 0xfcf1c4f6
+    member_id: 0x814997db
+    member_id: 0x4f77e82c
+    member_id: 0x81b72f57
+    member_id: 0xf655dc27
+    member_id: 0x7d657f67
+    member_id: 0xf0cfe56d
+    member_id: 0x75d852d0
+    member_id: 0x1aacf678
+    member_id: 0xf9a3f391
+    member_id: 0xe48b7ac1
+    member_id: 0x85e61a02
+    member_id: 0x97c57061
+    member_id: 0x720ffad0
+  }
+}
+struct_union {
+  id: 0x62c293ca
+  kind: STRUCT
+  name: "page_ext"
+  definition {
+    bytesize: 8
+    member_id: 0x2d5bf13a
+  }
+}
+struct_union {
+  id: 0x87af4650
+  kind: STRUCT
+  name: "page_frag"
+  definition {
+    bytesize: 16
+    member_id: 0x320350ff
+    member_id: 0x9bfaf69a
+    member_id: 0xd9983b4e
+  }
+}
+struct_union {
+  id: 0xe97eba14
+  kind: STRUCT
+  name: "page_frag_cache"
+  definition {
+    bytesize: 24
+    member_id: 0x1829b0c6
+    member_id: 0x9bf4db65
+    member_id: 0xd9961bae
+    member_id: 0x946a4014
+    member_id: 0xdfaa22c7
+  }
+}
+struct_union {
+  id: 0x6753b66e
+  kind: STRUCT
+  name: "page_pool"
+  definition {
+    bytesize: 1600
+    member_id: 0xa67023cc
+    member_id: 0xb2cc8a16
+    member_id: 0x8da487d3
+    member_id: 0x894f196d
+    member_id: 0xfda405f7
+    member_id: 0x9cb8b0e3
+    member_id: 0xe81e79bc
+    member_id: 0x77233d71
+    member_id: 0x79f33795
+    member_id: 0xe5abd152
+    member_id: 0x4561e8d7
+    member_id: 0xd4d3c606
+    member_id: 0xe5b03808
+    member_id: 0xa29c36ce
+    member_id: 0x84f892e5
+    member_id: 0x2d081dc5
+  }
+}
+struct_union {
+  id: 0xc16d487e
+  kind: STRUCT
+  name: "page_pool_params"
+  definition {
+    bytesize: 56
+    member_id: 0x2d2d0138
+    member_id: 0xb59c77a7
+    member_id: 0xad407369
+    member_id: 0x45d78e00
+    member_id: 0xce3bb371
+    member_id: 0xeed6dab9
+    member_id: 0xfecd1503
+    member_id: 0x9b595909
+    member_id: 0xed4a99de
+    member_id: 0xa7aec9f2
+  }
+}
+struct_union {
+  id: 0xb59d3734
+  kind: STRUCT
+  name: "page_reporting_dev_info"
+  definition {
+    bytesize: 152
+    member_id: 0x5cb466ae
+    member_id: 0xd6084a4c
+    member_id: 0x72872041
+    member_id: 0xb59c78b7
+  }
+}
+struct_union {
+  id: 0x3844dda9
+  kind: STRUCT
+  name: "pagevec"
+  definition {
+    bytesize: 128
+    member_id: 0xd1ffb44c
+    member_id: 0x4db3a084
+    member_id: 0x78bdf3bc
+  }
+}
+struct_union {
+  id: 0x524636a2
+  kind: STRUCT
+  name: "param_attribute"
+  definition {
+    bytesize: 64
+    member_id: 0xcf872d8f
+    member_id: 0xb58d4b20
+  }
+}
+struct_union {
+  id: 0x6fb2e92e
+  kind: STRUCT
+  name: "partition_affinity"
+  definition {
+    bytesize: 16
+    member_id: 0xa82f6dfe
+    member_id: 0x220c3d20
+  }
+}
+struct_union {
+  id: 0xb0382dfd
+  kind: STRUCT
+  name: "partition_desc"
+  definition {
+    bytesize: 120
+    member_id: 0x799f8652
+    member_id: 0x2e76cf6e
+    member_id: 0xa719db3e
+    member_id: 0xb465a60b
+    member_id: 0x8941b706
+    member_id: 0xaf511229
+  }
+}
+struct_union {
+  id: 0x8e4362ff
+  kind: STRUCT
+  name: "partition_meta_info"
+  definition {
+    bytesize: 101
+    member_id: 0xfd2c1b4e
+    member_id: 0xbc1c8332
+  }
+}
+struct_union {
+  id: 0x71a68091
+  kind: STRUCT
+  name: "path"
+  definition {
+    bytesize: 16
+    member_id: 0x3284e718
+    member_id: 0xf3efe84f
+  }
+}
+struct_union {
+  id: 0xa6665265
+  kind: STRUCT
+  name: "pci_bus"
+  definition {
+    bytesize: 1288
+    member_id: 0x0fa6c6af
+    member_id: 0x72127295
+    member_id: 0x25795686
+    member_id: 0x33ed531f
+    member_id: 0x3cf44093
+    member_id: 0x4f9c9b54
+    member_id: 0x5d82cb52
+    member_id: 0x19962761
+    member_id: 0x854f5ea0
+    member_id: 0xaf8c0a54
+    member_id: 0xe2456449
+    member_id: 0x8fadbfb1
+    member_id: 0xd94e9a70
+    member_id: 0xacb0629d
+    member_id: 0x9db731a9
+    member_id: 0x97a04eff
+    member_id: 0xbee5988a
+    member_id: 0x0dc60a3f
+    member_id: 0x5ea05abf
+    member_id: 0xf5e979ce
+    member_id: 0x7b911ced
+    member_id: 0xce1ac0eb
+    member_id: 0x717bb538
+    member_id: 0x3cc498c8
+    member_id: 0x0596a7a3
+    member_id: 0x24d5cc41
+    member_id: 0x2d081269
+    member_id: 0x63760eb9
+    member_id: 0xac894c1c
+    member_id: 0xe0f63ed2
+  }
+}
+struct_union {
+  id: 0x8adf96f5
+  kind: STRUCT
+  name: "pci_cap_saved_data"
+  definition {
+    bytesize: 8
+    member_id: 0x8638adb5
+    member_id: 0x78fafb3d
+    member_id: 0xd93b942f
+    member_id: 0xff645b09
+  }
+}
+struct_union {
+  id: 0x6ddaffac
+  kind: STRUCT
+  name: "pci_dev"
+  definition {
+    bytesize: 3288
+    member_id: 0x1c1fa3ce
+    member_id: 0xdaf321d6
+    member_id: 0xe08009d2
+    member_id: 0xe2456fff
+    member_id: 0xc5244ab4
+    member_id: 0x68d274ac
+    member_id: 0x23225d98
+    member_id: 0x7aa7dc1c
+    member_id: 0xeafb1344
+    member_id: 0x94fc8d9d
+    member_id: 0x5d8f77ce
+    member_id: 0x8604d701
+    member_id: 0x9481899b
+    member_id: 0x6d657971
+    member_id: 0x405b6024
+    member_id: 0xb0533aa4
+    member_id: 0x7c0ba1c4
+    member_id: 0x7b8aa32e
+    member_id: 0x4a446333
+    member_id: 0x2b400640
+    member_id: 0x1414f546
+    member_id: 0x3636dc69
+    member_id: 0x415a2d86
+    member_id: 0x26310f84
+    member_id: 0xb8237b58
+    member_id: 0x8439b1e8
+    member_id: 0x26c09503
+    member_id: 0xd464c7d1
+    member_id: 0x4db07287
+    member_id: 0xebac1eb3
+    member_id: 0xcffa7369
+    member_id: 0x56b3ee5e
+    member_id: 0x4de92006
+    member_id: 0xc65795be
+    member_id: 0x04ca74e8
+    member_id: 0x8b60974a
+    member_id: 0x6ec160e2
+    member_id: 0x97183b87
+    member_id: 0xbff8906c
+    member_id: 0xf66cf284
+    member_id: 0x61ea58ed
+    member_id: 0x78030744
+    member_id: 0x85bc813a
+    member_id: 0xc1d96113
+    member_id: 0xfddfadba
+    member_id: 0xf51f6b3d
+    member_id: 0xbb507998
+    member_id: 0xeba01c36
+    member_id: 0xfb07fb2a
+    member_id: 0x46fceb17
+    member_id: 0xe5cc3197
+    member_id: 0x655ea8bc
+    member_id: 0xc1becfa8
+    member_id: 0x262fa572
+    member_id: 0x4404e020
+    member_id: 0xce1ac265
+    member_id: 0x01e5f34a
+    member_id: 0x993739d5
+    member_id: 0x5db57a33
+    member_id: 0xb97cb588
+    member_id: 0x738f5598
+    member_id: 0xcbc66b8c
+    member_id: 0xd552c15c
+    member_id: 0xf25479e8
+    member_id: 0xe1fcb5f3
+    member_id: 0x9c33918b
+    member_id: 0x9f6bf998
+    member_id: 0xb017a1d2
+    member_id: 0x00ef5f6a
+    member_id: 0x21602a3e
+    member_id: 0x859848e8
+    member_id: 0x8c48ba28
+    member_id: 0xfc3fee64
+    member_id: 0xafe23112
+    member_id: 0xf07c1a9d
+    member_id: 0x5597c7aa
+    member_id: 0xc695bc1e
+    member_id: 0x547b670e
+    member_id: 0xd1074880
+    member_id: 0xba8c8a07
+    member_id: 0xaaf7ba84
+    member_id: 0x550bb72a
+    member_id: 0x8572de7d
+    member_id: 0xc66fe3c7
+    member_id: 0x731ffc29
+    member_id: 0x83671a00
+    member_id: 0x4e65e89e
+    member_id: 0x77b6c0c4
+    member_id: 0x20d3ef1e
+    member_id: 0x7fcdc1bf
+    member_id: 0xa09e6601
+    member_id: 0x8610592e
+    member_id: 0x203b77b5
+    member_id: 0xca212731
+    member_id: 0xbd7e1b2f
+    member_id: 0xad244516
+    member_id: 0xf711191b
+    member_id: 0x76275ed5
+    member_id: 0xf88f7b9d
+    member_id: 0x4005779e
+    member_id: 0x591a837c
+    member_id: 0x3a36f5b3
+    member_id: 0x1e6208cc
+    member_id: 0x5c2e5646
+    member_id: 0x8e2397ea
+    member_id: 0xa2184f99
+    member_id: 0xcfce9367
+    member_id: 0x3e9c69fd
+    member_id: 0xd1959486
+    member_id: 0x1f35fc7a
+    member_id: 0x4120ef8b
+    member_id: 0x9d7c2258
+    member_id: 0x29795d54
+    member_id: 0x09f1f71e
+    member_id: 0x278ca223
+    member_id: 0xb1b2f32e
+    member_id: 0x2d0819d8
+    member_id: 0x6376079f
+    member_id: 0xac89436d
+    member_id: 0xe0f63226
+  }
+}
+struct_union {
+  id: 0xc397e11a
+  kind: STRUCT
+  name: "pci_device_id"
+  definition {
+    bytesize: 40
+    member_id: 0x7a88cd12
+    member_id: 0xead40b41
+    member_id: 0xedc90787
+    member_id: 0x74fa54f5
+    member_id: 0x86a77bc5
+    member_id: 0xefcfbc4c
+    member_id: 0x6d08a251
+    member_id: 0xf1d2ff61
+  }
+}
+struct_union {
+  id: 0x830b9f30
+  kind: STRUCT
+  name: "pci_driver"
+  definition {
+    bytesize: 360
+    member_id: 0x0fa6c6af
+    member_id: 0x0de5752a
+    member_id: 0xc4f2628b
+    member_id: 0xd77adc58
+    member_id: 0xb4ac7f38
+    member_id: 0xf396c9d5
+    member_id: 0xcab30972
+    member_id: 0x9efa937a
+    member_id: 0xd538e9fd
+    member_id: 0x0041f95c
+    member_id: 0xa36be11a
+    member_id: 0x4e049d50
+    member_id: 0x93011024
+    member_id: 0xf95461ff
+    member_id: 0xd4ad449b
+    member_id: 0x1b277230
+    member_id: 0xdbbc115d
+    member_id: 0x2d081c68
+    member_id: 0x63760c9c
+    member_id: 0xac894a6b
+    member_id: 0xe0f63b21
+  }
+}
+struct_union {
+  id: 0x3077bd6f
+  kind: STRUCT
+  name: "pci_dynids"
+  definition {
+    bytesize: 24
+    member_id: 0x2d1fec85
+    member_id: 0x7c00ebb3
+  }
+}
+struct_union {
+  id: 0x74cd16ec
+  kind: STRUCT
+  name: "pci_epc"
+  definition {
+    bytesize: 1048
+    member_id: 0xce1ac149
+    member_id: 0x60c1e32f
+    member_id: 0xafb370a4
+    member_id: 0x3edfccd1
+    member_id: 0x521d48b9
+    member_id: 0x908e02e3
+    member_id: 0x49f5343b
+    member_id: 0x5d55840a
+    member_id: 0xd3a0c18f
+    member_id: 0x2d4b31e5
+    member_id: 0x364a66b1
+    member_id: 0x37039c6e
+  }
+}
+struct_union {
+  id: 0x0d6c22fa
+  kind: STRUCT
+  name: "pci_epc_features"
+  definition {
+    bytesize: 64
+    member_id: 0xd4b35970
+    member_id: 0x984d2605
+    member_id: 0xa938e296
+    member_id: 0xf379d303
+    member_id: 0xeacde004
+    member_id: 0x31826e55
+    member_id: 0x99a4a25a
+    member_id: 0x331547cc
+  }
+}
+struct_union {
+  id: 0x59afc616
+  kind: STRUCT
+  name: "pci_epc_mem"
+  definition {
+    bytesize: 88
+    member_id: 0x105bc79a
+    member_id: 0x8941bf64
+    member_id: 0x782da968
+    member_id: 0x2d4b3bc7
+  }
+}
+struct_union {
+  id: 0xbb548821
+  kind: STRUCT
+  name: "pci_epc_mem_window"
+  definition {
+    bytesize: 24
+    member_id: 0xadafa16c
+    member_id: 0xd98a2dfb
+    member_id: 0x22710926
+  }
+}
+struct_union {
+  id: 0x5e857614
+  kind: STRUCT
+  name: "pci_epc_ops"
+  definition {
+    bytesize: 120
+    member_id: 0x90cecd8c
+    member_id: 0x1bccce8f
+    member_id: 0x39ab848c
+    member_id: 0x466a7233
+    member_id: 0xa9e2d5ae
+    member_id: 0x84026618
+    member_id: 0x142f125b
+    member_id: 0x665da17d
+    member_id: 0x6423a061
+    member_id: 0x5630acac
+    member_id: 0xf06a5118
+    member_id: 0x4637bb5b
+    member_id: 0x6987bee8
+    member_id: 0xad3f70fc
+    member_id: 0x4a9658f6
+  }
+}
+struct_union {
+  id: 0xb0b88d26
+  kind: STRUCT
+  name: "pci_epf_bar"
+  definition {
+    bytesize: 32
+    member_id: 0xbdabdba2
+    member_id: 0x243566e2
+    member_id: 0xd98a20d8
+    member_id: 0xf2e9a899
+    member_id: 0x2d0fa7a9
+  }
+}
+struct_union {
+  id: 0x7d88316b
+  kind: STRUCT
+  name: "pci_epf_header"
+  definition {
+    bytesize: 20
+    member_id: 0x2e0a0fbc
+    member_id: 0xae47d4ca
+    member_id: 0x5ab88fd9
+    member_id: 0x48202894
+    member_id: 0x2c4470df
+    member_id: 0x1b7c9f4d
+    member_id: 0xfd122136
+    member_id: 0xe55b43db
+    member_id: 0x7f7ac96d
+    member_id: 0x05278e35
+  }
+}
+struct_union {
+  id: 0xaad789ea
+  kind: STRUCT
+  name: "pci_error_handlers"
+  definition {
+    bytesize: 56
+    member_id: 0x1446043f
+    member_id: 0xdd74e29a
+    member_id: 0xb4039e16
+    member_id: 0xb71e6da0
+    member_id: 0xd67914d7
+    member_id: 0xca904fee
+    member_id: 0x2d0814a0
+  }
+}
+struct_union {
+  id: 0xc8843dd2
+  kind: STRUCT
+  name: "pci_host_bridge"
+  definition {
+    bytesize: 1088
+    member_id: 0xce1ac149
+    member_id: 0xdaf32297
+    member_id: 0xaf8c0d6f
+    member_id: 0x77ef9537
+    member_id: 0xe2456b42
+    member_id: 0x3c091e3d
+    member_id: 0xbee592c3
+    member_id: 0x3e01a8a7
+    member_id: 0x5b2ae144
+    member_id: 0x7b6d7eb2
+    member_id: 0x851eba8c
+    member_id: 0xbf22c304
+    member_id: 0x20045421
+    member_id: 0x24e8bd83
+    member_id: 0xb9e403e1
+    member_id: 0x30d5b78d
+    member_id: 0x85063ded
+    member_id: 0x24fa7507
+    member_id: 0x0c7e97de
+    member_id: 0x8e9b1c1c
+    member_id: 0x06bb141a
+    member_id: 0x96d4e589
+    member_id: 0x22e05b57
+    member_id: 0x99d63969
+    member_id: 0x721b0de0
+    member_id: 0x5b337c99
+    member_id: 0x2d0815a4
+    member_id: 0x63760e1a
+    member_id: 0x91a931d3
+  }
+}
+struct_union {
+  id: 0x2b34b7f1
+  kind: STRUCT
+  name: "pci_msi_desc"
+  definition {
+    bytesize: 24
+    member_id: 0x33fa5fab
+    member_id: 0x63e927d0
+    member_id: 0x3d264381
+  }
+}
+struct_union {
+  id: 0x3672f594
+  kind: STRUCT
+  name: "pci_ops"
+  definition {
+    bytesize: 48
+    member_id: 0x733b5607
+    member_id: 0x9e2122d5
+    member_id: 0x42a51e44
+    member_id: 0x4872d445
+    member_id: 0x342f575e
+    member_id: 0x2d0812f5
+  }
+}
+struct_union {
+  id: 0x09ab2eb8
+  kind: STRUCT
+  name: "pci_saved_state"
+  definition {
+    bytesize: 64
+    member_id: 0x46181a4f
+    member_id: 0x1e5572f8
+  }
+}
+struct_union {
+  id: 0x3a2680c6
+  kind: STRUCT
+  name: "pci_slot"
+  definition {
+    bytesize: 136
+    member_id: 0xdaf32814
+    member_id: 0x7c00ebb3
+    member_id: 0x75ed0ee4
+    member_id: 0xd94e985f
+    member_id: 0x452b27ab
+  }
+}
+struct_union {
+  id: 0x327e4dc7
+  kind: STRUCT
+  name: "pci_sriov"
+  definition {
+    bytesize: 160
+    member_id: 0x26c338a6
+    member_id: 0xd1fbad24
+    member_id: 0x1e7afb41
+    member_id: 0x691f4f84
+    member_id: 0x8b97c6cb
+    member_id: 0x691cc638
+    member_id: 0x5085d9db
+    member_id: 0x9b8d9c9b
+    member_id: 0x5ec43eeb
+    member_id: 0x69a19ce5
+    member_id: 0x7733c220
+    member_id: 0x5597c334
+    member_id: 0xa067c94f
+    member_id: 0xb3c8d0ce
+    member_id: 0xce28030b
+    member_id: 0x3cf44676
+    member_id: 0x868853e4
+    member_id: 0x6d657b12
+    member_id: 0x94a4f0bb
+    member_id: 0x5dd703d9
+    member_id: 0xfbaa52b5
+    member_id: 0x97eace38
+    member_id: 0x2d08122d
+    member_id: 0x637604d4
+    member_id: 0xac89478a
+    member_id: 0xe0f6368f
+  }
+}
+struct_union {
+  id: 0x96fcb104
+  kind: STRUCT
+  name: "pci_vpd"
+  definition {
+    bytesize: 56
+    member_id: 0x2d4b3c00
+    member_id: 0xb84051a2
+    member_id: 0x1e9aa999
+  }
+}
+struct_union {
+  id: 0x22dba075
+  kind: STRUCT
+  name: "pcie_link_state"
+  definition {
+    bytesize: 56
+    member_id: 0xb829e445
+    member_id: 0x046aa1ff
+    member_id: 0x93dd07b7
+    member_id: 0x72335ce2
+    member_id: 0xee31bbdb
+    member_id: 0x2bdb287b
+    member_id: 0x6b4d3f19
+    member_id: 0x45b3ddb1
+    member_id: 0x0a8e2cf2
+    member_id: 0x9750a322
+    member_id: 0x0fb4f072
+    member_id: 0xf74fa943
+    member_id: 0xed903fed
+    member_id: 0xd0399579
+  }
+}
+struct_union {
+  id: 0x857c71d8
+  kind: STRUCT
+  name: "pcpu_dstats"
+}
+struct_union {
+  id: 0x699c572b
+  kind: STRUCT
+  name: "pcpu_lstats"
+  definition {
+    bytesize: 16
+    member_id: 0x4866d30f
+    member_id: 0x5c14d023
+    member_id: 0x0d9bb5e7
+  }
+}
+struct_union {
+  id: 0xc3ece312
+  kind: STRUCT
+  name: "pcpu_rx_sc_stats"
+  definition {
+    bytesize: 80
+    member_id: 0xb9a2f93b
+    member_id: 0x0d9bba5c
+  }
+}
+struct_union {
+  id: 0x8905d682
+  kind: STRUCT
+  name: "pcpu_sw_netstats"
+  definition {
+    bytesize: 32
+    member_id: 0x6a99768f
+    member_id: 0xe8d5d572
+    member_id: 0x920f9229
+    member_id: 0xb54645b2
+    member_id: 0x0d9bbc8e
+  }
+}
+struct_union {
+  id: 0x2649cdec
+  kind: STRUCT
+  name: "pcpu_tx_sc_stats"
+  definition {
+    bytesize: 32
+    member_id: 0xb9492553
+    member_id: 0x0d9bbc8e
+  }
+}
+struct_union {
+  id: 0xf24f58c4
+  kind: STRUCT
+  name: "pd_chunked_ext_message_data"
+  definition {
+    bytesize: 28
+    member_id: 0xefb70ab0
+    member_id: 0xff5912bc
+  }
+}
+struct_union {
+  id: 0xe5566452
+  kind: STRUCT
+  name: "pd_message"
+  definition {
+    bytesize: 30
+    member_id: 0xefb70ab0
+    member_id: 0x3c0f0a11
+  }
+}
+struct_union {
+  id: 0x85164ba0
+  kind: STRUCT
+  name: "pd_mode_data"
+  definition {
+    bytesize: 1196
+    member_id: 0xbc39ac28
+    member_id: 0x8341f080
+    member_id: 0x457f2de9
+    member_id: 0x34e776fc
+    member_id: 0x82e662b1
+  }
+}
+struct_union {
+  id: 0x593c0f6e
+  kind: STRUCT
+  name: "pd_pps_data"
+  definition {
+    bytesize: 36
+    member_id: 0x01a2cbed
+    member_id: 0xc0ae2f54
+    member_id: 0xdbee7fb9
+    member_id: 0x6cdb91bc
+    member_id: 0x2944542c
+    member_id: 0x49eaafac
+    member_id: 0x31314bfa
+    member_id: 0x000df0ed
+    member_id: 0x87061819
+    member_id: 0x224f2ff3
+  }
+}
+struct_union {
+  id: 0x308c0299
+  kind: STRUCT
+  name: "pdev_archdata"
+  definition {
+  }
+}
+struct_union {
+  id: 0x68ddb9bc
+  kind: STRUCT
+  name: "per_cpu_nodestat"
+  definition {
+    bytesize: 43
+    member_id: 0x7e9dc7ba
+    member_id: 0x5a0cf049
+  }
+}
+struct_union {
+  id: 0x66c67054
+  kind: STRUCT
+  name: "per_cpu_pages"
+  definition {
+    bytesize: 320
+    member_id: 0x2d1fec85
+    member_id: 0x6542722c
+    member_id: 0x85b24588
+    member_id: 0x4a2475eb
+    member_id: 0x2a649941
+    member_id: 0x56a9be5d
+  }
+}
+struct_union {
+  id: 0x973ee7d0
+  kind: STRUCT
+  name: "per_cpu_zonestat"
+  definition {
+    bytesize: 12
+    member_id: 0xd6cd8686
+    member_id: 0x7e9dc83c
+  }
+}
+struct_union {
+  id: 0xd0e97631
+  kind: STRUCT
+  name: "percpu_cluster"
+  definition {
+    bytesize: 12
+    member_id: 0xad66bd2e
+    member_id: 0x11b68158
+  }
+}
+struct_union {
+  id: 0x04fd619c
+  kind: STRUCT
+  name: "percpu_counter"
+  definition {
+    bytesize: 40
+    member_id: 0x2d244e18
+    member_id: 0x650b54b4
+    member_id: 0x7c00e690
+    member_id: 0x922b5075
+  }
+}
+struct_union {
+  id: 0x3e40064a
+  kind: STRUCT
+  name: "percpu_ref"
+  definition {
+    bytesize: 16
+    member_id: 0x2ad85041
+    member_id: 0xffbbfe85
+  }
+}
+struct_union {
+  id: 0x8d38c78e
+  kind: STRUCT
+  name: "percpu_ref_data"
+  definition {
+    bytesize: 56
+    member_id: 0x659574f1
+    member_id: 0xaea902ed
+    member_id: 0xb2018ea7
+    member_id: 0xf5ad883b
+    member_id: 0x4ffaf366
+    member_id: 0x95dac9dc
+    member_id: 0xce1a2758
+  }
+}
+struct_union {
+  id: 0x6c952252
+  kind: STRUCT
+  name: "percpu_rw_semaphore"
+  definition {
+    bytesize: 96
+    member_id: 0x10ad0965
+    member_id: 0xe8a25d44
+    member_id: 0x7a8d36d1
+    member_id: 0x939ca0e5
+    member_id: 0x4224d55b
+  }
+}
+struct_union {
+  id: 0xd2e61f73
+  kind: STRUCT
+  name: "perf_addr_filter_range"
+  definition {
+    bytesize: 16
+    member_id: 0x46284634
+    member_id: 0xd94d6df7
+  }
+}
+struct_union {
+  id: 0xcc4284be
+  kind: STRUCT
+  name: "perf_addr_filters_head"
+  definition {
+    bytesize: 24
+    member_id: 0x7c00ef52
+    member_id: 0x2d2447da
+    member_id: 0xc661bf13
+  }
+}
+struct_union {
+  id: 0x7a1fb665
+  kind: STRUCT
+  name: "perf_branch_entry"
+  definition {
+    bytesize: 24
+    member_id: 0xffb30017
+    member_id: 0x987f4e5e
+    member_id: 0xdc031d8b
+    member_id: 0x649fc3ef
+    member_id: 0xd8c3755f
+    member_id: 0x370a3acc
+    member_id: 0xc8db3058
+    member_id: 0x6bcbf9a6
+    member_id: 0x0c2aa8a0
+    member_id: 0x919483dd
+    member_id: 0x1920e605
+    member_id: 0xc5c2fe1d
+  }
+}
+struct_union {
+  id: 0xfba05a49
+  kind: STRUCT
+  name: "perf_branch_stack"
+  definition {
+    bytesize: 16
+    member_id: 0xd14fc76e
+    member_id: 0x9c6779ff
+    member_id: 0xbea7ee64
+  }
+}
+struct_union {
+  id: 0xa0fa0b4e
+  kind: STRUCT
+  name: "perf_buffer"
+  definition {
+    bytesize: 240
+    member_id: 0x05243b3c
+    member_id: 0x56a722bd
+    member_id: 0xe3e5e801
+    member_id: 0xa9c30b71
+    member_id: 0x6fcec67f
+    member_id: 0x5e619b96
+    member_id: 0xb5732287
+    member_id: 0x98c74903
+    member_id: 0x11dc26e6
+    member_id: 0xff1644fe
+    member_id: 0x1445ee58
+    member_id: 0xf00092cb
+    member_id: 0x182e5f5b
+    member_id: 0x8afee9ef
+    member_id: 0xce528d6c
+    member_id: 0xc392280d
+    member_id: 0x7f0fa5a9
+    member_id: 0x40c6ec32
+    member_id: 0x6cd14a83
+    member_id: 0x32e43d34
+    member_id: 0xb8cc16b4
+    member_id: 0x0328ce0a
+    member_id: 0x962230ca
+    member_id: 0xdf98d9cb
+    member_id: 0x805a87f5
+    member_id: 0x76bb7cc3
+    member_id: 0x7eeeca13
+    member_id: 0xffacf641
+    member_id: 0xb21d59f4
+    member_id: 0xf3d07746
+    member_id: 0x80cba19d
+    member_id: 0xbf37cad2
+    member_id: 0xe478959f
+  }
+}
+struct_union {
+  id: 0xe821f397
+  kind: STRUCT
+  name: "perf_callchain_entry"
+  definition {
+    bytesize: 8
+    member_id: 0xd14fc76e
+    member_id: 0xd3a8e5c0
+  }
+}
+struct_union {
+  id: 0xe8b6ccd5
+  kind: STRUCT
+  name: "perf_cpu_context"
+  definition {
+    bytesize: 464
+    member_id: 0xec3d2f19
+    member_id: 0x1bc3eaec
+    member_id: 0x173bb389
+    member_id: 0xeed7a28d
+    member_id: 0x04598178
+    member_id: 0x8a1dd442
+    member_id: 0xa015c3d5
+    member_id: 0x7e4bc277
+    member_id: 0xf3f4f775
+    member_id: 0x146c48c0
+    member_id: 0x7d253971
+    member_id: 0x83ebabc6
+    member_id: 0x049198e2
+    member_id: 0x2f8cdd80
+  }
+}
+struct_union {
+  id: 0xa3da898e
+  kind: STRUCT
+  name: "perf_domain"
+  definition {
+    bytesize: 32
+    member_id: 0xc10563c7
+    member_id: 0x11d162a5
+    member_id: 0x95dac0b5
+  }
+}
+struct_union {
+  id: 0x5d78d9e8
+  kind: STRUCT
+  name: "perf_event"
+  definition {
+    bytesize: 1072
+    member_id: 0x47d29fbd
+    member_id: 0x1b2e3274
+    member_id: 0x945c0ae1
+    member_id: 0x9b1a5b6f
+    member_id: 0x0f81c321
+    member_id: 0x0fb003f6
+    member_id: 0xd7e17fd3
+    member_id: 0x5292e53f
+    member_id: 0xb826ad15
+    member_id: 0xf0897d29
+    member_id: 0x26e58ea7
+    member_id: 0xc397b990
+    member_id: 0x933349d1
+    member_id: 0xbadfff7b
+    member_id: 0x72289db4
+    member_id: 0x825aa415
+    member_id: 0x652ca453
+    member_id: 0x8a620f4b
+    member_id: 0x6eaf8187
+    member_id: 0xbcd48edb
+    member_id: 0x7fb16b9f
+    member_id: 0x8cbf5ebf
+    member_id: 0xf6729aba
+    member_id: 0xeee8ea60
+    member_id: 0x190c6150
+    member_id: 0x97368b37
+    member_id: 0xecba52e1
+    member_id: 0x05333380
+    member_id: 0xef46876d
+    member_id: 0x61ca5ef6
+    member_id: 0x6cd09595
+    member_id: 0x783b9f6a
+    member_id: 0x722cb6c3
+    member_id: 0x598d35ff
+    member_id: 0x5161bb99
+    member_id: 0xfbf14eca
+    member_id: 0x4a806a1e
+    member_id: 0x0c233c10
+    member_id: 0xc3922376
+    member_id: 0xfb5779b3
+    member_id: 0x3afea870
+    member_id: 0x69de27c4
+    member_id: 0x20839f02
+    member_id: 0xe064d640
+    member_id: 0xa3521312
+    member_id: 0x7fb3b2ea
+    member_id: 0x33752173
+    member_id: 0x53869c3a
+    member_id: 0xf2481d71
+    member_id: 0x692c76a5
+    member_id: 0x9f9c13ba
+    member_id: 0x13d6fa39
+    member_id: 0x3f7ad237
+    member_id: 0x7f9e1bf4
+    member_id: 0x1cd06928
+    member_id: 0x631e0373
+    member_id: 0xf0d79dde
+    member_id: 0xc99a1792
+    member_id: 0xa4f9453f
+    member_id: 0x56a72ed6
+    member_id: 0x91e8d8e3
+    member_id: 0xccbd0e4d
+    member_id: 0xa0d3e60e
+    member_id: 0x45d163b1
+    member_id: 0xad86c319
+    member_id: 0xa85cd282
+    member_id: 0x8d800e13
+    member_id: 0x982b4b56
+    member_id: 0xa96eaa56
+    member_id: 0x0ae3c983
+    member_id: 0xa33d246d
+    member_id: 0xf194eb87
+    member_id: 0xe1b6b51b
+  }
+}
+struct_union {
+  id: 0xbbf3ac86
+  kind: STRUCT
+  name: "perf_event_attr"
+  definition {
+    bytesize: 128
+    member_id: 0x5cb0fbc1
+    member_id: 0xd9983ff6
+    member_id: 0xd1483d50
+    member_id: 0x33f5d799
+    member_id: 0x6d4d79d7
+    member_id: 0x40e49a3e
+    member_id: 0x145ca6f0
+    member_id: 0x7b6c5dc4
+    member_id: 0xf221b9f3
+    member_id: 0x15889228
+    member_id: 0x00285819
+    member_id: 0x94724c76
+    member_id: 0x1e4c8039
+    member_id: 0x90a3ebca
+    member_id: 0xb8ecf3f7
+    member_id: 0x09c989f6
+    member_id: 0xd5e4618a
+    member_id: 0xe10643d9
+    member_id: 0xca494c13
+    member_id: 0xcfbd6d30
+    member_id: 0x22ba845d
+    member_id: 0xc6dcd5a4
+    member_id: 0x009bd1e3
+    member_id: 0xe2c0069f
+    member_id: 0x84fd3714
+    member_id: 0xeb515033
+    member_id: 0x5d289cd9
+    member_id: 0x878a9371
+    member_id: 0xde651ec1
+    member_id: 0xd08ec6c7
+    member_id: 0x39406b1c
+    member_id: 0x0af44903
+    member_id: 0xca29fad4
+    member_id: 0x91018347
+    member_id: 0xc54733a4
+    member_id: 0xd6eb1e64
+    member_id: 0xf9cc30a6
+    member_id: 0xa9b54f06
+    member_id: 0xb58dc65f
+    member_id: 0xfecd3e2c
+    member_id: 0x28b27248
+    member_id: 0x9ad98ca4
+    member_id: 0x08f6c3d8
+    member_id: 0x42248362
+    member_id: 0x37e177b8
+    member_id: 0x2f8da53c
+    member_id: 0x30e75ef9
+    member_id: 0x32f3b9e8
+    member_id: 0x8bc42faa
+    member_id: 0xa1f3f534
+    member_id: 0x55f818a2
+    member_id: 0x2f37024d
+    member_id: 0x4d7e7daf
+    member_id: 0x18347e7e
+    member_id: 0xa9bbdf73
+    member_id: 0xd5acdefc
+    member_id: 0xbb9e3707
+    member_id: 0x146e52b1
+    member_id: 0xa85f5b90
+  }
+}
+struct_union {
+  id: 0xa4dc3a54
+  kind: STRUCT
+  name: "perf_event_context"
+  definition {
+    bytesize: 296
+    member_id: 0x93334b15
+    member_id: 0x2d244af9
+    member_id: 0xad898ac0
+    member_id: 0x3528331b
+    member_id: 0x12e99f20
+    member_id: 0x33975e6d
+    member_id: 0xce528470
+    member_id: 0x036b22d6
+    member_id: 0x97f1db17
+    member_id: 0x33764ee0
+    member_id: 0x729d40fc
+    member_id: 0xfb6f30c8
+    member_id: 0x6fc3ada5
+    member_id: 0xd297eba7
+    member_id: 0xfee8f39f
+    member_id: 0x38597ab8
+    member_id: 0x8a8cbcd0
+    member_id: 0x052431db
+    member_id: 0x9c3a2abf
+    member_id: 0x74712d47
+    member_id: 0x5a76eedf
+    member_id: 0x697f56d0
+    member_id: 0xd2873ebd
+    member_id: 0x20ee8995
+    member_id: 0x694cfcc5
+    member_id: 0xe8b6687e
+    member_id: 0xf638895f
+    member_id: 0x56a723c3
+    member_id: 0x7a21743a
+  }
+}
+struct_union {
+  id: 0xb3579875
+  kind: STRUCT
+  name: "perf_event_groups"
+  definition {
+    bytesize: 16
+    member_id: 0x292c44f2
+    member_id: 0xadab2f6d
+  }
+}
+struct_union {
+  id: 0xbf48f3ec
+  kind: STRUCT
+  name: "perf_event_mmap_page"
+  definition {
+    bytesize: 1088
+    member_id: 0xa6871ac5
+    member_id: 0x7a39bd0a
+    member_id: 0x2d0ad53c
+    member_id: 0xaddf2f83
+    member_id: 0x9bc1bbe9
+    member_id: 0xf49aad5a
+    member_id: 0xfef66273
+    member_id: 0x3c006bca
+    member_id: 0x6ed4d38c
+    member_id: 0xc0fbf2d8
+    member_id: 0x5ce69de0
+    member_id: 0xaec8823b
+    member_id: 0x98e09e53
+    member_id: 0xd9983bbf
+    member_id: 0x9ded1b85
+    member_id: 0x13cc2de8
+    member_id: 0xcc22a730
+    member_id: 0x5e19498b
+    member_id: 0xba0523d9
+    member_id: 0xc71824a4
+    member_id: 0x97a5dfa6
+    member_id: 0x56e4db82
+    member_id: 0x6cc0b10a
+    member_id: 0x5c827059
+    member_id: 0x4751f029
+    member_id: 0x9315bbc5
+  }
+}
+struct_union {
+  id: 0xad4e3ade
+  kind: UNION
+  name: "perf_mem_data_src"
+  definition {
+    bytesize: 8
+    member_id: 0x4ffb1cad
+    member_id: 0x2392bf81
+  }
+}
+struct_union {
+  id: 0x00db59bc
+  kind: STRUCT
+  name: "perf_output_handle"
+  definition {
+    bytesize: 56
+    member_id: 0x0a522e6f
+    member_id: 0xfb577072
+    member_id: 0xff0caf01
+    member_id: 0xd94d61df
+    member_id: 0x8557c146
+    member_id: 0x343d2c0f
+    member_id: 0x3262f2e0
+  }
+}
+struct_union {
+  id: 0x29b83e1a
+  kind: STRUCT
+  name: "perf_raw_frag"
+  definition {
+    bytesize: 28
+    member_id: 0x376caae5
+    member_id: 0x29617348
+    member_id: 0xff8a90cb
+    member_id: 0xd9b71c90
+  }
+}
+struct_union {
+  id: 0xe5392bbd
+  kind: STRUCT
+  name: "perf_raw_record"
+  definition {
+    bytesize: 32
+    member_id: 0x46dd40de
+    member_id: 0xd9b7177d
+  }
+}
+struct_union {
+  id: 0x63bbe8bf
+  kind: STRUCT
+  name: "perf_regs"
+  definition {
+    bytesize: 16
+    member_id: 0xb757a5d6
+    member_id: 0x803a5090
+  }
+}
+struct_union {
+  id: 0x411e05ea
+  kind: STRUCT
+  name: "perf_sample_data"
+  definition {
+    bytesize: 256
+    member_id: 0xa3b36710
+    member_id: 0xffe37762
+    member_id: 0x123c9712
+    member_id: 0x7eb51a7c
+    member_id: 0x31272409
+    member_id: 0x830688ae
+    member_id: 0x24bffdc7
+    member_id: 0x09228c43
+    member_id: 0x5cc4fd55
+    member_id: 0xd3c58e73
+    member_id: 0x8aff197b
+    member_id: 0x74712c56
+    member_id: 0xccbd070c
+    member_id: 0x742086f4
+    member_id: 0x36e273a2
+    member_id: 0xb8d4b30e
+    member_id: 0x936a6857
+    member_id: 0xe142387e
+    member_id: 0x21d1f57f
+    member_id: 0xaf7a7986
+    member_id: 0xbdd9d476
+    member_id: 0x6d3eec5f
+    member_id: 0x708d8054
+    member_id: 0x010de754
+  }
+}
+struct_union {
+  id: 0xdd4efc25
+  kind: UNION
+  name: "perf_sample_weight"
+  definition {
+    bytesize: 8
+    member_id: 0xdb4619dd
+    member_id: 0x2d400d39
+  }
+}
+struct_union {
+  id: 0x8b2784f9
+  kind: STRUCT
+  name: "pernet_operations"
+  definition {
+    bytesize: 64
+    member_id: 0x7c00ef52
+    member_id: 0x1ac7f6c1
+    member_id: 0x3f9ad514
+    member_id: 0x0d2e7b75
+    member_id: 0xeb4404a9
+    member_id: 0xcc34dc63
+    member_id: 0xd98a2e6d
+  }
+}
+struct_union {
+  id: 0x264eeece
+  kind: STRUCT
+  name: "pglist_data"
+  definition {
+    bytesize: 9216
+    member_id: 0x65adc63c
+    member_id: 0xc08945c3
+    member_id: 0x429467d6
+    member_id: 0x74f980f4
+    member_id: 0x23216bf8
+    member_id: 0x0cee492b
+    member_id: 0x7a54208c
+    member_id: 0xf67bcc6a
+    member_id: 0x91281e96
+    member_id: 0x1870ebaa
+    member_id: 0xcae142e2
+    member_id: 0x916f6aa9
+    member_id: 0x14baa8ed
+    member_id: 0xff6f5b56
+    member_id: 0xfe0f369c
+    member_id: 0xa28764f4
+    member_id: 0x34381759
+    member_id: 0x053ab370
+    member_id: 0x678d6528
+    member_id: 0xd671cb34
+    member_id: 0xc6101310
+    member_id: 0x44835e36
+    member_id: 0xda079936
+    member_id: 0x4d9c8a0c
+    member_id: 0xb84165b0
+    member_id: 0xb74e4a4d
+    member_id: 0xcb455f52
+    member_id: 0x5cbd6512
+    member_id: 0x5cfa992f
+    member_id: 0x2d5bf44a
+    member_id: 0xa89287d6
+    member_id: 0x5b9e4488
+    member_id: 0x1aacf90c
+    member_id: 0xd8353c99
+    member_id: 0xca8e5863
+  }
+}
+struct_union {
+  id: 0x05b2a65b
+  kind: STRUCT
+  name: "phy"
+  definition {
+    bytesize: 1008
+    member_id: 0xce1ac149
+    member_id: 0xcc4806c1
+    member_id: 0xafb05421
+    member_id: 0xad898f10
+    member_id: 0x0fcb1785
+    member_id: 0x287b1fd0
+    member_id: 0x4ded783f
+    member_id: 0xc58e0dce
+  }
+}
+struct_union {
+  id: 0x8ec6fcdc
+  kind: STRUCT
+  name: "phy_attrs"
+  definition {
+    bytesize: 12
+    member_id: 0xb4a8c8ec
+    member_id: 0x6501f940
+    member_id: 0x87762b79
+  }
+}
+struct_union {
+  id: 0x89717197
+  kind: STRUCT
+  name: "phy_c45_device_ids"
+  definition {
+    bytesize: 136
+    member_id: 0x7c9dc892
+    member_id: 0xbe0bc580
+    member_id: 0x45ad335c
+  }
+}
+struct_union {
+  id: 0xfae8b2ca
+  kind: UNION
+  name: "phy_configure_opts"
+  definition {
+    bytesize: 112
+    member_id: 0xe790793b
+    member_id: 0x554f78fe
+    member_id: 0xe3684bd6
+  }
+}
+struct_union {
+  id: 0x80ba3719
+  kind: STRUCT
+  name: "phy_configure_opts_dp"
+  definition {
+    bytesize: 44
+    member_id: 0xa3ec8853
+    member_id: 0x3d3cbad1
+    member_id: 0x2813ed17
+    member_id: 0xa3b7b05e
+    member_id: 0xde99cd79
+    member_id: 0xb4135916
+    member_id: 0xdbfcbfe4
+    member_id: 0xf0fff49b
+  }
+}
+struct_union {
+  id: 0xcdd3a5be
+  kind: STRUCT
+  name: "phy_configure_opts_lvds"
+  definition {
+    bytesize: 24
+    member_id: 0x6cf5d11a
+    member_id: 0x9a1f65df
+    member_id: 0x3d3cbe28
+    member_id: 0xa8546fab
+  }
+}
+struct_union {
+  id: 0xb6562a7c
+  kind: STRUCT
+  name: "phy_configure_opts_mipi_dphy"
+  definition {
+    bytesize: 112
+    member_id: 0x8c5120d6
+    member_id: 0xca0c69fe
+    member_id: 0x3c24cb61
+    member_id: 0x863c614d
+    member_id: 0x384a60cf
+    member_id: 0x5b36ec0a
+    member_id: 0x91839f80
+    member_id: 0x27ea9b53
+    member_id: 0x8fb0e835
+    member_id: 0x7c74f998
+    member_id: 0xb554924c
+    member_id: 0xc3076d20
+    member_id: 0x5eed6cd9
+    member_id: 0x341c053f
+    member_id: 0xe1818e15
+    member_id: 0x04b9775c
+    member_id: 0x1aaf4b5b
+    member_id: 0xa884151a
+    member_id: 0x6ed362d4
+    member_id: 0x4255868f
+    member_id: 0xe6bc86a8
+    member_id: 0xff7a5180
+    member_id: 0x67b99265
+    member_id: 0xe94c7b1e
+    member_id: 0x3d24b063
+  }
+}
+struct_union {
+  id: 0xef9a648b
+  kind: STRUCT
+  name: "phy_device"
+  definition {
+    bytesize: 1656
+    member_id: 0xc96faa23
+    member_id: 0xb14afb27
+    member_id: 0xadc0f8ad
+    member_id: 0x13d3c473
+    member_id: 0x77e73c7c
+    member_id: 0xeacce46e
+    member_id: 0xb1a87d96
+    member_id: 0x1a65f7f9
+    member_id: 0xa56ce0b4
+    member_id: 0x1e8cc137
+    member_id: 0xe8c51b31
+    member_id: 0x2eef2d94
+    member_id: 0x1ad1dac8
+    member_id: 0x7fe17814
+    member_id: 0xec034224
+    member_id: 0xb2574efe
+    member_id: 0xa20a923e
+    member_id: 0xab30390b
+    member_id: 0x76c2c4ca
+    member_id: 0xa5ae1e5b
+    member_id: 0xf49ead5d
+    member_id: 0x3f9a1390
+    member_id: 0xd51bd390
+    member_id: 0x729c3aeb
+    member_id: 0x760001ae
+    member_id: 0x1e96cfa1
+    member_id: 0xa08dad33
+    member_id: 0x70edc607
+    member_id: 0x489c39fb
+    member_id: 0x6d4faa91
+    member_id: 0xaa605258
+    member_id: 0xe4bfcb6e
+    member_id: 0x05a96c02
+    member_id: 0x27be585f
+    member_id: 0x870b1f6a
+    member_id: 0x9f11b6a5
+    member_id: 0x62ffd383
+    member_id: 0xfef7071c
+    member_id: 0xb467424d
+    member_id: 0x1fc9ddcc
+    member_id: 0xa29e5c59
+    member_id: 0xf21c331d
+    member_id: 0xd41dc3fc
+    member_id: 0xb80857ea
+    member_id: 0x99159e95
+    member_id: 0x591196f2
+    member_id: 0x3b9417fe
+    member_id: 0xb0b862c2
+    member_id: 0x97fcea8a
+    member_id: 0x98a15090
+    member_id: 0x406a5acc
+    member_id: 0x2d4b30cc
+    member_id: 0x494b170a
+    member_id: 0x65a238b8
+    member_id: 0xdb42b2d4
+    member_id: 0x95a2a074
+    member_id: 0xbf23b09d
+    member_id: 0x2bf0ee90
+    member_id: 0x0a576241
+    member_id: 0xf13d7d29
+    member_id: 0x2e0e87b6
+    member_id: 0x418b90c0
+    member_id: 0x71e66c06
+    member_id: 0x3686b889
+    member_id: 0x2d081e12
+    member_id: 0x6376055e
+    member_id: 0xac894c0c
+    member_id: 0xe0f6332d
+  }
+}
+struct_union {
+  id: 0x22ada5b1
+  kind: STRUCT
+  name: "phy_driver"
+  definition {
+    bytesize: 520
+    member_id: 0x64615c20
+    member_id: 0xadc0f29b
+    member_id: 0x0ddfe55c
+    member_id: 0xd64be311
+    member_id: 0xc5cbcac0
+    member_id: 0x2da18b50
+    member_id: 0x6d731cb1
+    member_id: 0xa832ba59
+    member_id: 0xa02c1275
+    member_id: 0xd778e6d8
+    member_id: 0xad0b27c9
+    member_id: 0x3e5fd845
+    member_id: 0xf39434cd
+    member_id: 0xcab10ef4
+    member_id: 0x22755b1f
+    member_id: 0xb4368049
+    member_id: 0x2d43e066
+    member_id: 0xaa45be11
+    member_id: 0x22eb645a
+    member_id: 0xb4ae78a7
+    member_id: 0xefcc9ace
+    member_id: 0x4f88405e
+    member_id: 0x208dc766
+    member_id: 0x05661ab9
+    member_id: 0xe1ac9973
+    member_id: 0xfe79438a
+    member_id: 0x1cb02422
+    member_id: 0xfdca1068
+    member_id: 0x1a03b22f
+    member_id: 0x1229148b
+    member_id: 0x2330e525
+    member_id: 0x10a43a25
+    member_id: 0x7e1376e1
+    member_id: 0x921dd709
+    member_id: 0xab22a7f0
+    member_id: 0xba32645c
+    member_id: 0x26722814
+    member_id: 0xbf4e78b2
+    member_id: 0xaedef102
+    member_id: 0x67a9383c
+    member_id: 0xce8e0fb3
+    member_id: 0x2d0813c0
+    member_id: 0x63760589
+  }
+}
+struct_union {
+  id: 0xa5348d85
+  kind: STRUCT
+  name: "phy_led_trigger"
+  definition {
+    bytesize: 160
+    member_id: 0x358cd74c
+    member_id: 0x0de7660c
+    member_id: 0xa0af0223
+  }
+}
+struct_union {
+  id: 0x6c1884ef
+  kind: STRUCT
+  name: "phy_ops"
+  definition {
+    bytesize: 104
+    member_id: 0x1ac78aed
+    member_id: 0x0d0d4cfd
+    member_id: 0x20964d1b
+    member_id: 0xd7d57362
+    member_id: 0xaa012d31
+    member_id: 0x2dca0bee
+    member_id: 0x37bf3e8a
+    member_id: 0x73c28032
+    member_id: 0x2a11614b
+    member_id: 0x6290e8f3
+    member_id: 0xfb48a583
+    member_id: 0xae96f942
+    member_id: 0x4a965afe
+  }
+}
+struct_union {
+  id: 0x2cb2e07e
+  kind: STRUCT
+  name: "phy_package_shared"
+  definition {
+    bytesize: 32
+    member_id: 0x244affb5
+    member_id: 0xb7dcf597
+    member_id: 0x2d5bf5db
+    member_id: 0x982aca23
+    member_id: 0x59119068
+  }
+}
+struct_union {
+  id: 0x7e3fcf3e
+  kind: STRUCT
+  name: "phy_provider"
+  definition {
+    bytesize: 48
+    member_id: 0xce3bbab3
+    member_id: 0x259ee1ac
+    member_id: 0x4a965b92
+    member_id: 0x7c00e79b
+    member_id: 0x4a5fda2e
+  }
+}
+struct_union {
+  id: 0x5af8c6c3
+  kind: STRUCT
+  name: "phy_tdr_config"
+  definition {
+    bytesize: 16
+    member_id: 0x1f2e3f08
+    member_id: 0x26a60811
+    member_id: 0x6a086ae6
+    member_id: 0x74f3b58d
+  }
+}
+struct_union {
+  id: 0xd0cb7d9a
+  kind: STRUCT
+  name: "phylink"
+  definition {
+    bytesize: 440
+    member_id: 0x92c34ca7
+    member_id: 0x31f75ec1
+    member_id: 0xd190daa2
+    member_id: 0x27bf40af
+    member_id: 0xce3bba18
+    member_id: 0x59a75e79
+    member_id: 0xc66490fe
+    member_id: 0x00f8d04c
+    member_id: 0xc1766149
+    member_id: 0x936f82a6
+    member_id: 0x29539a57
+    member_id: 0x9a187b24
+    member_id: 0x870b1a86
+    member_id: 0x39c4819f
+    member_id: 0xaf87ede4
+    member_id: 0xa7e3aa93
+    member_id: 0x8b9b8d50
+    member_id: 0xe0ed6b10
+    member_id: 0x9cbd4137
+    member_id: 0x96f371cc
+    member_id: 0x11949085
+    member_id: 0x74f83441
+    member_id: 0x7667f684
+    member_id: 0x7e6f6486
+    member_id: 0x65a2397c
+    member_id: 0x59a335a2
+    member_id: 0xf5c5204a
+    member_id: 0x53572de1
+    member_id: 0x848db2f6
+  }
+}
+struct_union {
+  id: 0xfe227c33
+  kind: STRUCT
+  name: "phylink_config"
+  definition {
+    bytesize: 40
+    member_id: 0xce3bbab3
+    member_id: 0x5ce33492
+    member_id: 0x2cd25050
+    member_id: 0x73c7b8fd
+    member_id: 0x6244381e
+    member_id: 0x2fa9923d
+    member_id: 0x9cbd356e
+    member_id: 0x2180799d
+    member_id: 0xad9c4abb
+  }
+}
+struct_union {
+  id: 0xdd301cd7
+  kind: STRUCT
+  name: "phylink_link_state"
+  definition {
+    bytesize: 56
+    member_id: 0x9f11bab4
+    member_id: 0x62ffd7b1
+    member_id: 0x1e96c8d6
+    member_id: 0xa08da9d3
+    member_id: 0x70edcbaf
+    member_id: 0x6d4faa04
+    member_id: 0xd51bd1ef
+    member_id: 0xab3031e9
+    member_id: 0x60f1e8e8
+    member_id: 0x31fec685
+  }
+}
+struct_union {
+  id: 0x67ce5d5b
+  kind: STRUCT
+  name: "phylink_mac_ops"
+  definition {
+    bytesize: 72
+    member_id: 0x2a312ad0
+    member_id: 0xc74dc59a
+    member_id: 0xc44a6164
+    member_id: 0xcdb6c9ff
+    member_id: 0x40c5e9e7
+    member_id: 0x6db67fc5
+    member_id: 0x84c7da07
+    member_id: 0x571f646f
+    member_id: 0x528ab765
+  }
+}
+struct_union {
+  id: 0xa6123ce2
+  kind: STRUCT
+  name: "phylink_pcs"
+  definition {
+    bytesize: 16
+    member_id: 0xafb2dbed
+    member_id: 0x5e78366d
+  }
+}
+struct_union {
+  id: 0x44f0cfc0
+  kind: STRUCT
+  name: "phylink_pcs_ops"
+  definition {
+    bytesize: 40
+    member_id: 0x35bdc4be
+    member_id: 0xe79e65ea
+    member_id: 0x202c78cc
+    member_id: 0x27008117
+    member_id: 0x684c4554
+  }
+}
+struct_union {
+  id: 0x4b557a5c
+  kind: STRUCT
+  name: "pid"
+  definition {
+    bytesize: 112
+    member_id: 0x65827d05
+    member_id: 0x86ff474f
+    member_id: 0x2d1fe864
+    member_id: 0xe7b0c47e
+    member_id: 0x8c1d6568
+    member_id: 0x93dcf59d
+    member_id: 0x95dacf0e
+    member_id: 0x15c49b03
+  }
+}
+struct_union {
+  id: 0x02240842
+  kind: STRUCT
+  name: "pid_namespace"
+  definition {
+    bytesize: 128
+    member_id: 0xb0053b5f
+    member_id: 0x95dac1be
+    member_id: 0x8346a620
+    member_id: 0xcd6379b5
+    member_id: 0x73a835c0
+    member_id: 0x86ff416c
+    member_id: 0x723b62b3
+    member_id: 0xde4b7a9d
+    member_id: 0x9f30145e
+    member_id: 0xb701b30e
+    member_id: 0x91129e9f
+  }
+}
+struct_union {
+  id: 0x15a12ff1
+  kind: STRUCT
+  name: "pin_config_item"
+  definition {
+    bytesize: 32
+    member_id: 0xb540a535
+    member_id: 0x6ede6239
+    member_id: 0x0884cfac
+    member_id: 0x7760f0a7
+  }
+}
+struct_union {
+  id: 0x0fec2355
+  kind: STRUCT
+  name: "pin_cookie"
+  definition {
+  }
+}
+struct_union {
+  id: 0x95a5decf
+  kind: STRUCT
+  name: "pinconf_generic_params"
+  definition {
+    bytesize: 16
+    member_id: 0x6a89c1c7
+    member_id: 0xb53d390d
+    member_id: 0x126d860d
+  }
+}
+struct_union {
+  id: 0x9866273d
+  kind: STRUCT
+  name: "pinconf_ops"
+  definition {
+    bytesize: 64
+    member_id: 0x5c3bdf6f
+    member_id: 0xe1f820da
+    member_id: 0x0b1e0b4b
+    member_id: 0x13831cfb
+    member_id: 0x288e7be7
+    member_id: 0x490d4a3f
+    member_id: 0x9dce78a1
+    member_id: 0xe66f85ee
+  }
+}
+struct_union {
+  id: 0x8e58f584
+  kind: STRUCT
+  name: "pinctrl"
+  definition {
+    bytesize: 72
+    member_id: 0x0fa6c6af
+    member_id: 0xce3bb371
+    member_id: 0x55fe35f8
+    member_id: 0x72c9bc2c
+    member_id: 0x7f8e5830
+    member_id: 0x85c2e4aa
+  }
+}
+struct_union {
+  id: 0xdb0ebdcd
+  kind: STRUCT
+  name: "pinctrl_desc"
+  definition {
+    bytesize: 88
+    member_id: 0x0de57ce8
+    member_id: 0x1678e3c4
+    member_id: 0xcac01b69
+    member_id: 0x8727635b
+    member_id: 0x809d8aa2
+    member_id: 0x36a76fcc
+    member_id: 0x4a9653c2
+    member_id: 0xad2f5ed4
+    member_id: 0x99479bd2
+    member_id: 0x7f5f2be0
+    member_id: 0x28b46289
+  }
+}
+struct_union {
+  id: 0x47164554
+  kind: STRUCT
+  name: "pinctrl_dev"
+  definition {
+    bytesize: 208
+    member_id: 0x0fa6c6af
+    member_id: 0x87e67795
+    member_id: 0x488642e6
+    member_id: 0x0348563b
+    member_id: 0x1eceb53f
+    member_id: 0xc17ac98a
+    member_id: 0x5a168f19
+    member_id: 0x3c552680
+    member_id: 0xce3bb909
+    member_id: 0x4a9658f6
+    member_id: 0x6d52b041
+    member_id: 0xa6984f9f
+    member_id: 0xacd68a1b
+    member_id: 0x9f3b60a3
+    member_id: 0xad8981c6
+    member_id: 0xdad98644
+  }
+}
+struct_union {
+  id: 0x3a432334
+  kind: STRUCT
+  name: "pinctrl_gpio_range"
+  definition {
+    bytesize: 56
+    member_id: 0x0fa6c6af
+    member_id: 0x0de5752a
+    member_id: 0xcc6aa13e
+    member_id: 0x859f68c9
+    member_id: 0x59f4296f
+    member_id: 0xcac01672
+    member_id: 0x16739fff
+    member_id: 0x966c47a5
+  }
+}
+struct_union {
+  id: 0xf92e3dc3
+  kind: STRUCT
+  name: "pinctrl_map"
+  definition {
+    bytesize: 56
+    member_id: 0x863c40f3
+    member_id: 0x0de57809
+    member_id: 0x5c7f2cfe
+    member_id: 0x71154a5d
+    member_id: 0xffed4285
+  }
+}
+struct_union {
+  id: 0xdab6dbd1
+  kind: STRUCT
+  name: "pinctrl_map_configs"
+  definition {
+    bytesize: 24
+    member_id: 0x58e839a3
+    member_id: 0xe99876f3
+    member_id: 0x8416511d
+  }
+}
+struct_union {
+  id: 0x71684ad9
+  kind: STRUCT
+  name: "pinctrl_map_mux"
+  definition {
+    bytesize: 16
+    member_id: 0xd3ac1183
+    member_id: 0xab5596f1
+  }
+}
+struct_union {
+  id: 0xf0bfde54
+  kind: STRUCT
+  name: "pinctrl_ops"
+  definition {
+    bytesize: 48
+    member_id: 0x5aec42ff
+    member_id: 0x4996d1dc
+    member_id: 0x779c1f46
+    member_id: 0x5e2b8097
+    member_id: 0x1545ec7a
+    member_id: 0xdfa39fbf
+  }
+}
+struct_union {
+  id: 0xf274b676
+  kind: STRUCT
+  name: "pinctrl_pin_desc"
+  definition {
+    bytesize: 24
+    member_id: 0xd9569cc7
+    member_id: 0x0de57809
+    member_id: 0x8fa864d8
+  }
+}
+struct_union {
+  id: 0xc35f4f74
+  kind: STRUCT
+  name: "pinctrl_state"
+  definition {
+    bytesize: 40
+    member_id: 0x0fa6c6af
+    member_id: 0x0de5752a
+    member_id: 0x2c222e7f
+  }
+}
+struct_union {
+  id: 0x5d6e0aa2
+  kind: STRUCT
+  name: "ping_group_range"
+  definition {
+    bytesize: 16
+    member_id: 0x2decf096
+    member_id: 0x0efc1fc3
+  }
+}
+struct_union {
+  id: 0xc48c3c9d
+  kind: STRUCT
+  name: "pinmux_ops"
+  definition {
+    bytesize: 80
+    member_id: 0xb6d6cea8
+    member_id: 0xfe8e0cec
+    member_id: 0x6c26df5c
+    member_id: 0x76b55a75
+    member_id: 0x3ac1d32a
+    member_id: 0x48119710
+    member_id: 0x718bddf0
+    member_id: 0x13043101
+    member_id: 0xb0f831fb
+    member_id: 0x8f5ee949
+  }
+}
+struct_union {
+  id: 0xb5f35143
+  kind: STRUCT
+  name: "pipe_buf_operations"
+  definition {
+    bytesize: 32
+    member_id: 0x1bd9b3e7
+    member_id: 0xae96d58d
+    member_id: 0x56bf7a2e
+    member_id: 0x316c9b56
+  }
+}
+struct_union {
+  id: 0xb3a58e7e
+  kind: STRUCT
+  name: "pipe_buffer"
+  definition {
+    bytesize: 40
+    member_id: 0x320350ff
+    member_id: 0x9b595d43
+    member_id: 0xb84059b3
+    member_id: 0xafbdc216
+    member_id: 0x2d2d09f1
+    member_id: 0x9152ae19
+  }
+}
+struct_union {
+  id: 0x06a83a86
+  kind: STRUCT
+  name: "pipe_inode_info"
+  definition {
+    bytesize: 184
+    member_id: 0xad898302
+    member_id: 0x0c716ce5
+    member_id: 0x4f5ae8a9
+    member_id: 0xb51f34c9
+    member_id: 0xeed82af8
+    member_id: 0xdc6f097a
+    member_id: 0x9481d6fb
+    member_id: 0xcf9ecc00
+    member_id: 0x28fbab3c
+    member_id: 0x17d97ae6
+    member_id: 0xc7ffbc39
+    member_id: 0x6f1fd62e
+    member_id: 0xf3982621
+    member_id: 0xa5396d7e
+    member_id: 0xa82852e1
+    member_id: 0xc34194fd
+    member_id: 0xa5eb13a1
+    member_id: 0xd0e95938
+    member_id: 0x042a2210
+  }
+}
+struct_union {
+  id: 0x5f02424f
+  kind: STRUCT
+  name: "pkvm_el2_module"
+  definition {
+    bytesize: 88
+    member_id: 0x2349e19b
+    member_id: 0x3eb33e63
+    member_id: 0x51650e94
+    member_id: 0xff675e8e
+    member_id: 0x88c18b9a
+    member_id: 0x5a432fb1
+    member_id: 0x1ac4f5f6
+  }
+}
+struct_union {
+  id: 0x1fef8485
+  kind: STRUCT
+  name: "pkvm_module_ops"
+  definition {
+    bytesize: 512
+    member_id: 0xf1e61a6b
+    member_id: 0x7b7aaacc
+    member_id: 0xd08a2381
+    member_id: 0xb8647f45
+    member_id: 0x2d4f5e83
+    member_id: 0x26fa53f2
+    member_id: 0xa6c91222
+    member_id: 0x261d1b5e
+    member_id: 0x50648c87
+    member_id: 0x321f37bf
+    member_id: 0x4712ad7c
+    member_id: 0x875d4218
+    member_id: 0xf203bc06
+    member_id: 0xa7bbdea7
+    member_id: 0x6ff07732
+    member_id: 0x4c5d8a29
+    member_id: 0x43b06c02
+    member_id: 0xa45f1ee8
+    member_id: 0x29e43d16
+    member_id: 0x32f8a9ba
+    member_id: 0x51e5dd3a
+    member_id: 0x93f7c7a1
+    member_id: 0x2308514c
+    member_id: 0x97147ad4
+    member_id: 0x3f896917
+    member_id: 0xe53a4787
+    member_id: 0xdc6f236d
+    member_id: 0x26116682
+    member_id: 0x7cfa79a6
+    member_id: 0x636da10f
+    member_id: 0x6f066e7f
+    member_id: 0x3afd0925
+    member_id: 0x2d0812b0
+    member_id: 0x637607e0
+    member_id: 0xac894cc9
+    member_id: 0xe0f63db8
+    member_id: 0x223693d6
+    member_id: 0x6677564a
+    member_id: 0xa1b7df05
+    member_id: 0xe3f4b2ad
+    member_id: 0x2734d962
+    member_id: 0x4f087fbc
+    member_id: 0x0bcb068c
+    member_id: 0xca84ad27
+    member_id: 0x894b5994
+    member_id: 0x480bfaa2
+    member_id: 0xe6ca9dc4
+    member_id: 0x27853b51
+    member_id: 0x64469672
+    member_id: 0xa5057e87
+    member_id: 0xedc43970
+    member_id: 0x8b2affdb
+    member_id: 0x4a6d6ba0
+    member_id: 0x06aa1a3a
+    member_id: 0xc7eaba0a
+    member_id: 0x982b4b61
+    member_id: 0x596bf84a
+    member_id: 0x1bf49b41
+    member_id: 0xda2b77e3
+    member_id: 0x812e3c37
+    member_id: 0x406e4055
+    member_id: 0x031a13a1
+    member_id: 0x4fda68d3
+    member_id: 0x819947e3
+  }
+}
+struct_union {
+  id: 0xf57b706b
+  kind: STRUCT
+  name: "pkvm_module_section"
+  definition {
+    bytesize: 16
+    member_id: 0x46038e35
+    member_id: 0x8217e2f8
+  }
+}
+struct_union {
+  id: 0xd69f81c9
+  kind: STRUCT
+  name: "platform_device"
+  definition {
+    bytesize: 1008
+    member_id: 0x0de57ce8
+    member_id: 0xcc4808a3
+    member_id: 0x737238c3
+    member_id: 0xce1ac88b
+    member_id: 0xeea011fc
+    member_id: 0xebac1479
+    member_id: 0xdce8726e
+    member_id: 0x5d3b11e5
+    member_id: 0xf3ddde22
+    member_id: 0x09f1f745
+    member_id: 0x6eef360d
+    member_id: 0x57601368
+    member_id: 0x2d0811f9
+    member_id: 0x6376054d
+  }
+}
+struct_union {
+  id: 0xd35c8571
+  kind: STRUCT
+  name: "platform_device_id"
+  definition {
+    bytesize: 32
+    member_id: 0x0dc2a2dd
+    member_id: 0x6d08a251
+  }
+}
+struct_union {
+  id: 0xd4db6c9b
+  kind: STRUCT
+  name: "platform_device_info"
+  definition {
+    bytesize: 96
+    member_id: 0x72332a03
+    member_id: 0x6e4d84bf
+    member_id: 0xbd80d2ad
+    member_id: 0x0de57421
+    member_id: 0xcc480ce9
+    member_id: 0x1666c732
+    member_id: 0xcf1a3e5e
+    member_id: 0xffab3c0e
+    member_id: 0xfb29bcdd
+    member_id: 0x4db07683
+    member_id: 0x3f74cf3f
+    member_id: 0x2d08170f
+  }
+}
+struct_union {
+  id: 0x468e85af
+  kind: STRUCT
+  name: "platform_driver"
+  definition {
+    bytesize: 248
+    member_id: 0xd778004b
+    member_id: 0xb48dd727
+    member_id: 0xeab05327
+    member_id: 0x9ef87dbe
+    member_id: 0xf39425f9
+    member_id: 0xcab1e4d7
+    member_id: 0xd4ad4dfa
+    member_id: 0xc4f36087
+    member_id: 0x6a17fd3d
+    member_id: 0xdbbc170f
+    member_id: 0x2d0814ec
+  }
+}
+struct_union {
+  id: 0x9aa8a1ba
+  kind: STRUCT
+  name: "platform_msi_priv_data"
+  definition {
+    bytesize: 72
+    member_id: 0xce3bbab3
+    member_id: 0xdabe96e7
+    member_id: 0xa9a422b1
+    member_id: 0x8d122294
+    member_id: 0x3363027c
+  }
+}
+struct_union {
+  id: 0xb76e80ab
+  kind: STRUCT
+  name: "platform_suspend_ops"
+  definition {
+    bytesize: 88
+    member_id: 0xe9de33a2
+    member_id: 0x38340c3f
+    member_id: 0x3d5750d1
+    member_id: 0x25513c26
+    member_id: 0x05e44400
+    member_id: 0x26f3b7c4
+    member_id: 0x7a288181
+    member_id: 0xcc3d72ff
+    member_id: 0x8201e649
+    member_id: 0x8a6bb60c
+    member_id: 0x2d08134b
+  }
+}
+struct_union {
+  id: 0xae1656c9
+  kind: STRUCT
+  name: "plist_head"
+  definition {
+    bytesize: 16
+    member_id: 0xd7b5832b
+  }
+}
+struct_union {
+  id: 0x6c32e522
+  kind: STRUCT
+  name: "plist_node"
+  definition {
+    bytesize: 40
+    member_id: 0xa9b5375b
+    member_id: 0x6e2b37ff
+    member_id: 0xd7b58be2
+  }
+}
+struct_union {
+  id: 0x4698ad78
+  kind: STRUCT
+  name: "plt_entry"
+  definition {
+    bytesize: 12
+    member_id: 0xfd7bf76c
+    member_id: 0xc73a936f
+    member_id: 0xdac11461
+  }
+}
+struct_union {
+  id: 0x357bdea2
+  kind: STRUCT
+  name: "pm_domain_data"
+  definition {
+    bytesize: 24
+    member_id: 0xd773d1c8
+    member_id: 0xce3bb371
+  }
+}
+struct_union {
+  id: 0x4eef2f1a
+  kind: STRUCT
+  name: "pm_message"
+  definition {
+    bytesize: 4
+    member_id: 0x0a28c0b3
+  }
+}
+struct_union {
+  id: 0x4ba02d1a
+  kind: STRUCT
+  name: "pm_qos_constraints"
+  definition {
+    bytesize: 40
+    member_id: 0x7c7d3105
+    member_id: 0x4dbba87a
+    member_id: 0x127094cd
+    member_id: 0x680115b2
+    member_id: 0x5c2b2ab6
+    member_id: 0xe8601130
+  }
+}
+struct_union {
+  id: 0xed40f2c0
+  kind: STRUCT
+  name: "pm_qos_flags"
+  definition {
+    bytesize: 24
+    member_id: 0x7c00ef52
+    member_id: 0x7820c46d
+  }
+}
+struct_union {
+  id: 0x029ed369
+  kind: STRUCT
+  name: "pm_qos_flags_request"
+  definition {
+    bytesize: 24
+    member_id: 0x0fa6c6af
+    member_id: 0x2dbc9314
+  }
+}
+struct_union {
+  id: 0x5ed72256
+  kind: STRUCT
+  name: "pm_qos_request"
+  definition {
+    bytesize: 48
+    member_id: 0x0f193c4b
+    member_id: 0xed0a594a
+  }
+}
+struct_union {
+  id: 0x5b335943
+  kind: STRUCT
+  name: "pm_subsys_data"
+  definition {
+    bytesize: 88
+    member_id: 0x2d1fec85
+    member_id: 0x05c691a0
+    member_id: 0x1a3d8018
+    member_id: 0xecfef29a
+    member_id: 0x8109584f
+    member_id: 0x5d0e2c97
+  }
+}
+struct_union {
+  id: 0xc60bc51e
+  kind: STRUCT
+  name: "pmu"
+  definition {
+    bytesize: 296
+    member_id: 0x4d87803c
+    member_id: 0x965f1ffc
+    member_id: 0xce3bb27a
+    member_id: 0xf8e01779
+    member_id: 0xef73ee2a
+    member_id: 0x0de57d7a
+    member_id: 0x5c31f2da
+    member_id: 0xa7ff27ab
+    member_id: 0xc9832340
+    member_id: 0x2cb55697
+    member_id: 0x78a381ab
+    member_id: 0xc7f33665
+    member_id: 0x14169e6c
+    member_id: 0xd5787a5d
+    member_id: 0x01dd58e0
+    member_id: 0xc98b59e3
+    member_id: 0x02f003dd
+    member_id: 0xbb0d1ab9
+    member_id: 0x97f617b5
+    member_id: 0xc71d7293
+    member_id: 0x46b00ed5
+    member_id: 0x46143c79
+    member_id: 0x698771cc
+    member_id: 0x48523fca
+    member_id: 0x4d4403fa
+    member_id: 0xbe00eda0
+    member_id: 0x283365fe
+    member_id: 0xd3e4f2b9
+    member_id: 0x18174f13
+    member_id: 0xdb076f0a
+    member_id: 0x37490ca7
+    member_id: 0x4a835917
+    member_id: 0x7eeec275
+    member_id: 0xf5a15be5
+    member_id: 0xd7f9a0e8
+    member_id: 0x29fead99
+    member_id: 0x77fe3544
+    member_id: 0x033b7c37
+    member_id: 0x987465ac
+  }
+}
+struct_union {
+  id: 0x5fd7ae1b
+  kind: STRUCT
+  name: "pmu_hw_events"
+  definition {
+    bytesize: 288
+    member_id: 0x11a602db
+    member_id: 0x0170d376
+    member_id: 0x03f344e6
+    member_id: 0x34c743f9
+    member_id: 0x99159c15
+  }
+}
+struct_union {
+  id: 0x0f15c20c
+  kind: UNION
+  name: "pn"
+  definition {
+    bytesize: 8
+    member_id: 0x2b75dcb3
+    member_id: 0xc8ce2e98
+  }
+}
+struct_union {
+  id: 0xc2b82f0e
+  kind: STRUCT
+  name: "pneigh_entry"
+  definition {
+    bytesize: 32
+    member_id: 0x11c93eed
+    member_id: 0x72bc7e1b
+    member_id: 0xce0b4dab
+    member_id: 0x94d42733
+    member_id: 0x2da184bc
+    member_id: 0xdcf61166
+    member_id: 0x20a07181
+  }
+}
+struct_union {
+  id: 0xf5312fdb
+  kind: STRUCT
+  name: "policy_dbs_info"
+  definition {
+    bytesize: 200
+    member_id: 0x60e88f7d
+    member_id: 0x5ec30cf4
+    member_id: 0xa444a488
+    member_id: 0x73f4b0b4
+    member_id: 0x5894f298
+    member_id: 0xed01f566
+    member_id: 0xd6e66d11
+    member_id: 0xef2014c6
+    member_id: 0x7c00e5d2
+    member_id: 0xe9d2a54b
+    member_id: 0x3bb616b6
+    member_id: 0x70e54a35
+    member_id: 0x98b9a598
+  }
+}
+struct_union {
+  id: 0x9146342b
+  kind: STRUCT
+  name: "policydb"
+  definition {
+    bytesize: 600
+    member_id: 0x3219aca6
+    member_id: 0x395073a8
+    member_id: 0x6fcc260e
+    member_id: 0x56e2856b
+    member_id: 0x04a57576
+    member_id: 0x3ebbdd01
+    member_id: 0x9361a429
+    member_id: 0x5be84f8f
+    member_id: 0xe75ebaee
+    member_id: 0xd7fbd304
+    member_id: 0x3981996e
+    member_id: 0x0048fc1f
+    member_id: 0xe3a3c2c5
+    member_id: 0xd79237c9
+    member_id: 0x9fd51a6e
+    member_id: 0x249ad332
+    member_id: 0x75447ac6
+    member_id: 0x56da2358
+    member_id: 0xf14b14bf
+    member_id: 0x67879250
+    member_id: 0x4a8a7a23
+    member_id: 0x2f5e77ea
+    member_id: 0x737fb73e
+    member_id: 0x37828654
+    member_id: 0x616c799d
+    member_id: 0xb8f1ea33
+    member_id: 0x23820e22
+    member_id: 0xe91e5dbc
+    member_id: 0x2aaa0939
+    member_id: 0x055eb011
+    member_id: 0x9e219cb6
+  }
+}
+struct_union {
+  id: 0x9122057b
+  kind: STRUCT
+  name: "poll_table_struct"
+  definition {
+    bytesize: 16
+    member_id: 0xebd725d9
+    member_id: 0xf6a502a9
+  }
+}
+struct_union {
+  id: 0xd9c609d0
+  kind: STRUCT
+  name: "pollfd"
+  definition {
+    bytesize: 8
+    member_id: 0x7f7538b5
+    member_id: 0x114581c6
+    member_id: 0x006556c8
+  }
+}
+struct_union {
+  id: 0xaa8f7095
+  kind: STRUCT
+  name: "pool_workqueue"
+  definition {
+    bytesize: 256
+    member_id: 0xde940420
+    member_id: 0x22fae892
+    member_id: 0x9fac6498
+    member_id: 0xe71243d6
+    member_id: 0xb71cf277
+    member_id: 0x26639b7e
+    member_id: 0x729d47f0
+    member_id: 0xb7493031
+    member_id: 0x7f540fa6
+    member_id: 0x4b206cec
+    member_id: 0xafb0699e
+    member_id: 0x153177cc
+    member_id: 0x95dac0cf
+  }
+}
+struct_union {
+  id: 0xfc233743
+  kind: STRUCT
+  name: "port_identity"
+  definition {
+    bytesize: 10
+    member_id: 0xf3568319
+    member_id: 0xdc6db306
+  }
+}
+struct_union {
+  id: 0xa9e317f6
+  kind: STRUCT
+  name: "posix_acl"
+  definition {
+    bytesize: 32
+    member_id: 0x47a3d1ab
+    member_id: 0xcb089e43
+    member_id: 0x64cf71ba
+    member_id: 0x4484f193
+  }
+}
+struct_union {
+  id: 0x49b8a7fd
+  kind: STRUCT
+  name: "posix_acl_entry"
+  definition {
+    bytesize: 8
+    member_id: 0x8c50076a
+    member_id: 0x801db84e
+    member_id: 0x3b9c7f08
+  }
+}
+struct_union {
+  id: 0x41fa8278
+  kind: STRUCT
+  name: "posix_clock"
+  definition {
+    bytesize: 296
+    member_id: 0xaf3431b0
+    member_id: 0x05c9702b
+    member_id: 0xce3bbd96
+    member_id: 0xd610e3c2
+    member_id: 0x8134c684
+  }
+}
+struct_union {
+  id: 0xbf311330
+  kind: STRUCT
+  name: "posix_clock_operations"
+  definition {
+    bytesize: 80
+    member_id: 0x4a965250
+    member_id: 0x5f8d8a58
+    member_id: 0xc5b258e4
+    member_id: 0x2498089a
+    member_id: 0xcabf01dc
+    member_id: 0x4d46e928
+    member_id: 0xad984bf8
+    member_id: 0x5e16a32e
+    member_id: 0xaeb4a76b
+    member_id: 0x4853f8ef
+  }
+}
+struct_union {
+  id: 0x50a2bf1c
+  kind: STRUCT
+  name: "posix_cputimer_base"
+  definition {
+    bytesize: 24
+    member_id: 0xe88670ff
+    member_id: 0xd4597863
+  }
+}
+struct_union {
+  id: 0x6ea71d7e
+  kind: STRUCT
+  name: "posix_cputimers"
+  definition {
+    bytesize: 80
+    member_id: 0x70cac30d
+    member_id: 0x5742dd35
+    member_id: 0x1bdc2ede
+  }
+}
+struct_union {
+  id: 0xf8399b21
+  kind: STRUCT
+  name: "posix_cputimers_work"
+  definition {
+    bytesize: 72
+    member_id: 0xd61a791e
+    member_id: 0xad898ac0
+    member_id: 0x8500bc1d
+  }
+}
+struct_union {
+  id: 0x4a14d0e0
+  kind: STRUCT
+  name: "power_supply"
+  definition {
+    bytesize: 1272
+    member_id: 0x87eddf67
+    member_id: 0xd3d44b4c
+    member_id: 0x68744792
+    member_id: 0x5df244cc
+    member_id: 0xd38eba23
+    member_id: 0xf7c3f586
+    member_id: 0x8fa86c88
+    member_id: 0xce1ac63e
+    member_id: 0x20adec90
+    member_id: 0xabac390c
+    member_id: 0x765ca7db
+    member_id: 0x9efc66cb
+    member_id: 0xd56298af
+    member_id: 0xa0b501cd
+    member_id: 0x9b323a0d
+    member_id: 0xf0c0380f
+    member_id: 0xa78058d5
+    member_id: 0x879c1fbd
+    member_id: 0xca83f146
+    member_id: 0xdcc71d26
+    member_id: 0xd4522649
+    member_id: 0xeebefb67
+    member_id: 0x4ec28876
+    member_id: 0x5182f15a
+    member_id: 0x9abbf6bc
+    member_id: 0x48e610c3
+    member_id: 0x78b5fada
+    member_id: 0x2d081229
+  }
+}
+struct_union {
+  id: 0xe8d558c0
+  kind: STRUCT
+  name: "power_supply_battery_info"
+  definition {
+    bytesize: 504
+    member_id: 0x1bd6a7d2
+    member_id: 0x8e671da0
+    member_id: 0xad965b7e
+    member_id: 0x73f010ca
+    member_id: 0xbcdf5f20
+    member_id: 0xd1709568
+    member_id: 0x7041d448
+    member_id: 0x3f89e85e
+    member_id: 0x0d32eba8
+    member_id: 0x99ab36b3
+    member_id: 0x1ce72760
+    member_id: 0x1ad05349
+    member_id: 0xb31cfb42
+    member_id: 0xfb434624
+    member_id: 0xa689ee3c
+    member_id: 0x75e92ccd
+    member_id: 0x6fcc5574
+    member_id: 0xa9ecb908
+    member_id: 0x376bb0df
+    member_id: 0x808b228e
+    member_id: 0x3fa23f63
+    member_id: 0x6b22b6f2
+    member_id: 0x9495a573
+    member_id: 0x206dbc2c
+    member_id: 0xc09003f9
+    member_id: 0x680ad66e
+    member_id: 0x8dc8880f
+    member_id: 0x1bb669d9
+    member_id: 0x694c1c28
+    member_id: 0x24c75fc6
+    member_id: 0x779e58ad
+    member_id: 0x5f01bd55
+    member_id: 0x2cac7fc8
+    member_id: 0xa14629c6
+    member_id: 0xa6cf5d04
+    member_id: 0x18405790
+    member_id: 0x20a1652f
+    member_id: 0xa9d9998a
+    member_id: 0x2d08103a
+  }
+}
+struct_union {
+  id: 0x60a0624a
+  kind: STRUCT
+  name: "power_supply_battery_ocv_table"
+  definition {
+    bytesize: 8
+    member_id: 0xe9334d1a
+    member_id: 0xa779a15d
+  }
+}
+struct_union {
+  id: 0x30169091
+  kind: STRUCT
+  name: "power_supply_config"
+  definition {
+    bytesize: 56
+    member_id: 0xf7c3f241
+    member_id: 0x6e4d84bf
+    member_id: 0x8fa864d8
+    member_id: 0x99991b53
+    member_id: 0xd3d44f06
+    member_id: 0x68744997
+    member_id: 0x2d0814a0
+  }
+}
+struct_union {
+  id: 0xa66e4d3d
+  kind: STRUCT
+  name: "power_supply_desc"
+  definition {
+    bytesize: 104
+    member_id: 0x0de57ce8
+    member_id: 0x5cca4b3a
+    member_id: 0x73dbac61
+    member_id: 0xdbcfb298
+    member_id: 0x3f7f27de
+    member_id: 0x67695a0a
+    member_id: 0x493a4fb5
+    member_id: 0x0a20d354
+    member_id: 0x71c55732
+    member_id: 0x56f90532
+    member_id: 0x0e5553d2
+    member_id: 0x95bb8e3c
+    member_id: 0x7544deb6
+    member_id: 0x2d081d9c
+  }
+}
+struct_union {
+  id: 0x70c25c99
+  kind: STRUCT
+  name: "power_supply_maintenance_charge_table"
+  definition {
+    bytesize: 12
+    member_id: 0xaf77fc55
+    member_id: 0x1581fa41
+    member_id: 0x4172d4ea
+  }
+}
+struct_union {
+  id: 0x35978411
+  kind: UNION
+  name: "power_supply_propval"
+  definition {
+    bytesize: 8
+    member_id: 0xff67f40b
+    member_id: 0xdf2ec64d
+  }
+}
+struct_union {
+  id: 0x4401b9b8
+  kind: STRUCT
+  name: "power_supply_resistance_temp_table"
+  definition {
+    bytesize: 8
+    member_id: 0x93b657d5
+    member_id: 0x46fd4851
+  }
+}
+struct_union {
+  id: 0xf72e5e23
+  kind: STRUCT
+  name: "power_supply_vbat_ri_table"
+  definition {
+    bytesize: 8
+    member_id: 0x991c0e36
+    member_id: 0x7f88b19c
+  }
+}
+struct_union {
+  id: 0x8d548cbf
+  kind: STRUCT
+  name: "pp_alloc_cache"
+  definition {
+    bytesize: 1032
+    member_id: 0x65ec57ef
+    member_id: 0x3b519194
+  }
+}
+struct_union {
+  id: 0x68dec87d
+  kind: STRUCT
+  name: "ppp_channel"
+  definition {
+    bytesize: 40
+    member_id: 0x917966b3
+    member_id: 0xafb4389a
+    member_id: 0x707d2ef0
+    member_id: 0xd6dc741c
+    member_id: 0xc71ecdda
+    member_id: 0xa08dada1
+    member_id: 0x20229bbb
+  }
+}
+struct_union {
+  id: 0x2a89a555
+  kind: STRUCT
+  name: "ppp_channel_ops"
+  definition {
+    bytesize: 24
+    member_id: 0x29a07d14
+    member_id: 0x4d48e6a9
+    member_id: 0xa245a3b2
+  }
+}
+struct_union {
+  id: 0x69546368
+  kind: STRUCT
+  name: "pppox_proto"
+  definition {
+    bytesize: 24
+    member_id: 0x0fae5706
+    member_id: 0x4d48ead3
+    member_id: 0x4a965b92
+  }
+}
+struct_union {
+  id: 0x5cd17c3c
+  kind: STRUCT
+  name: "pps_device"
+  definition {
+    bytesize: 384
+    member_id: 0xcdd838c9
+    member_id: 0x4b3911d5
+    member_id: 0xdcb6347e
+    member_id: 0xb15452a6
+    member_id: 0x0cca1d03
+    member_id: 0x9c2756e0
+    member_id: 0x87878b9b
+    member_id: 0x069a99d3
+    member_id: 0xadd19fd0
+    member_id: 0xcc6aaadb
+    member_id: 0xd47f6364
+    member_id: 0x05c97021
+    member_id: 0xce3bb438
+    member_id: 0xc017aa62
+    member_id: 0x2d1fea8d
+  }
+}
+struct_union {
+  id: 0xf2c78cfb
+  kind: STRUCT
+  name: "pps_event_time"
+  definition {
+    bytesize: 16
+    member_id: 0x6f338061
+  }
+}
+struct_union {
+  id: 0x9775d653
+  kind: STRUCT
+  name: "pps_kparams"
+  definition {
+    bytesize: 40
+    member_id: 0x81567db7
+    member_id: 0x87fa3876
+    member_id: 0xab14475a
+    member_id: 0x2e5f7f2b
+  }
+}
+struct_union {
+  id: 0xec2499ed
+  kind: STRUCT
+  name: "pps_ktime"
+  definition {
+    bytesize: 16
+    member_id: 0x6c489799
+    member_id: 0x4ebb99b3
+    member_id: 0x2d8ea362
+  }
+}
+struct_union {
+  id: 0x843bbd62
+  kind: STRUCT
+  name: "pps_source_info"
+  definition {
+    bytesize: 96
+    member_id: 0x0d81b30a
+    member_id: 0x771e436d
+    member_id: 0x87fa3e55
+    member_id: 0xd2740022
+    member_id: 0x4a965429
+    member_id: 0xce3bb88e
+  }
+}
+struct_union {
+  id: 0xeba4615d
+  kind: STRUCT
+  name: "pr_ops"
+  definition {
+    bytesize: 40
+    member_id: 0xd7f8dcc3
+    member_id: 0x83bffc27
+    member_id: 0x1e870558
+    member_id: 0x064a4943
+    member_id: 0xcca579d8
+  }
+}
+struct_union {
+  id: 0x89c67026
+  kind: STRUCT
+  name: "preempt_notifier"
+  definition {
+    bytesize: 24
+    member_id: 0x55f738dc
+    member_id: 0xafaa08ab
+  }
+}
+struct_union {
+  id: 0xae47ce96
+  kind: STRUCT
+  name: "preempt_ops"
+  definition {
+    bytesize: 16
+    member_id: 0xe0b448e4
+    member_id: 0x7b24028f
+  }
+}
+struct_union {
+  id: 0x1331151e
+  kind: STRUCT
+  name: "prefix_info"
+  definition {
+    bytesize: 32
+    member_id: 0x5ce532c4
+    member_id: 0xb5de8e04
+    member_id: 0x2165da89
+    member_id: 0x688b9047
+    member_id: 0xb2dd57f2
+    member_id: 0x7adb50ba
+    member_id: 0xe91a1d71
+    member_id: 0xbada6e7d
+    member_id: 0x08cabd3c
+    member_id: 0x95375227
+  }
+}
+struct_union {
+  id: 0xade5df6d
+  kind: STRUCT
+  name: "prev_cputime"
+  definition {
+    bytesize: 24
+    member_id: 0xd605d2ce
+    member_id: 0x59af9e5b
+    member_id: 0x2d2447da
+  }
+}
+struct_union {
+  id: 0x4b41ad6f
+  kind: STRUCT
+  name: "proc_dir_entry"
+  definition {
+    bytesize: 176
+    member_id: 0x69bfca16
+    member_id: 0xb7dcf597
+    member_id: 0x58733d10
+    member_id: 0xda3496b4
+    member_id: 0x4fe1718c
+    member_id: 0xfbfa79a2
+    member_id: 0x33af0a5f
+    member_id: 0xe6376f39
+    member_id: 0x36c08cca
+    member_id: 0x346b1ad7
+    member_id: 0xff8a9f70
+    member_id: 0xb68c0ef7
+    member_id: 0x2ffe4a12
+    member_id: 0x2ab418ef
+    member_id: 0x15366d0b
+    member_id: 0x08e671ab
+    member_id: 0xd959b112
+    member_id: 0x72293a5b
+    member_id: 0x525d1f0d
+    member_id: 0x0c6a0379
+    member_id: 0x0ddfe9c6
+    member_id: 0x878f4c6b
+    member_id: 0x2d41d032
+    member_id: 0x0017f014
+    member_id: 0x10e8cee8
+  }
+}
+struct_union {
+  id: 0x2bf46481
+  kind: STRUCT
+  name: "proc_ns_operations"
+  definition {
+    bytesize: 64
+    member_id: 0x0de57ce8
+    member_id: 0x56664ab3
+    member_id: 0x5c31fc6f
+    member_id: 0x316e0eb1
+    member_id: 0x4aead389
+    member_id: 0x70682057
+    member_id: 0x4a96b8fe
+    member_id: 0x75be61b8
+  }
+}
+struct_union {
+  id: 0x5fabd062
+  kind: STRUCT
+  name: "proc_ops"
+  definition {
+    bytesize: 96
+    member_id: 0x1554a6fe
+    member_id: 0xf92b0429
+    member_id: 0x5e72d32c
+    member_id: 0x6916c8aa
+    member_id: 0x0b06c408
+    member_id: 0x066f7dfd
+    member_id: 0x637f0c5b
+    member_id: 0x8209f3a4
+    member_id: 0xf14efdb8
+    member_id: 0x8397793d
+    member_id: 0x3fd07bbe
+    member_id: 0xca323da4
+  }
+}
+struct_union {
+  id: 0xc6f51f0f
+  kind: STRUCT
+  name: "prog_entry"
+  definition {
+    bytesize: 16
+    member_id: 0xb3c5f134
+    member_id: 0x3324cb8b
+    member_id: 0xfe392514
+  }
+}
+struct_union {
+  id: 0x2659f0fb
+  kind: STRUCT
+  name: "property"
+  definition {
+    bytesize: 96
+    member_id: 0x0ddfefbb
+    member_id: 0xb50a466a
+    member_id: 0xa010e863
+    member_id: 0x11f00e53
+    member_id: 0x8c58fa0e
+  }
+}
+struct_union {
+  id: 0xb7316ef5
+  kind: STRUCT
+  name: "property_entry"
+  definition {
+    bytesize: 32
+    member_id: 0x0de57ce8
+    member_id: 0xb59953d1
+    member_id: 0xc2e8d966
+    member_id: 0x5c6e5732
+    member_id: 0x30eeaef7
+  }
+}
+struct_union {
+  id: 0xa9d6d944
+  kind: STRUCT
+  name: "prot_inuse"
+  definition {
+    bytesize: 260
+    member_id: 0xee089993
+    member_id: 0x4f3c80d2
+  }
+}
+struct_union {
+  id: 0xc5afb9a0
+  kind: STRUCT
+  name: "proto"
+  definition {
+    bytesize: 448
+    member_id: 0xcd7c6929
+    member_id: 0xff877f1e
+    member_id: 0xbd40f0d8
+    member_id: 0x8d87fb64
+    member_id: 0x8fe9720d
+    member_id: 0x4d481911
+    member_id: 0x1ac6e0f5
+    member_id: 0xa4f94efd
+    member_id: 0x9efa3e71
+    member_id: 0x85259dc7
+    member_id: 0xd9ad3786
+    member_id: 0x4422b026
+    member_id: 0x4a558a3a
+    member_id: 0xc26d9913
+    member_id: 0x73249796
+    member_id: 0x2349def6
+    member_id: 0x6d1239eb
+    member_id: 0xf733bed8
+    member_id: 0x4af5295f
+    member_id: 0x775d894b
+    member_id: 0x6011f2ea
+    member_id: 0x6312ad4e
+    member_id: 0x047679da
+    member_id: 0xaa056b0f
+    member_id: 0x068909a2
+    member_id: 0xee3c87e4
+    member_id: 0x660e01ed
+    member_id: 0x8a2e383f
+    member_id: 0x0ca84d6b
+    member_id: 0x06365087
+    member_id: 0x00bf2404
+    member_id: 0x168a3497
+    member_id: 0x449ef992
+    member_id: 0xa51c29bd
+    member_id: 0xaed5919b
+    member_id: 0x797693fc
+    member_id: 0x584251b8
+    member_id: 0xbd2a501d
+    member_id: 0x317a7392
+    member_id: 0x9147d2f1
+    member_id: 0xa81d563e
+    member_id: 0x25d8bb1e
+    member_id: 0xffd79d44
+    member_id: 0xe0e4817f
+    member_id: 0x852fa1e1
+    member_id: 0xc86ce75b
+    member_id: 0xe3db192b
+    member_id: 0xbb6c9486
+    member_id: 0x304e36cb
+    member_id: 0x6cfb5ebc
+    member_id: 0x74a62beb
+    member_id: 0xa8b85168
+    member_id: 0x4a965dc1
+    member_id: 0x0d81ba39
+    member_id: 0x0fa6c061
+    member_id: 0xd75c46c1
+  }
+}
+struct_union {
+  id: 0x8d47e2c1
+  kind: STRUCT
+  name: "proto_ops"
+  definition {
+    bytesize: 264
+    member_id: 0x9e3288ce
+    member_id: 0x4a9656b1
+    member_id: 0xaeb40d5a
+    member_id: 0x6d12e47c
+    member_id: 0xbd402b97
+    member_id: 0x97f6d42d
+    member_id: 0x8fd5a073
+    member_id: 0xb1f64dc9
+    member_id: 0x5e1687e4
+    member_id: 0x4d48e740
+    member_id: 0x4a5556ac
+    member_id: 0xa6c1c6c4
+    member_id: 0xc7c64d20
+    member_id: 0x9ed9a2be
+    member_id: 0x85254c52
+    member_id: 0xd9adeb4d
+    member_id: 0x3d8c9c38
+    member_id: 0xc26d459e
+    member_id: 0x732441ac
+    member_id: 0x87ff0315
+    member_id: 0x236b5e79
+    member_id: 0x226c63e3
+    member_id: 0xd1bb476c
+    member_id: 0x55a9c021
+    member_id: 0x07204b63
+    member_id: 0x2addea85
+    member_id: 0x723a5075
+    member_id: 0xaf32bdda
+    member_id: 0xbb7a4121
+    member_id: 0x2d081e2f
+    member_id: 0x6376087c
+    member_id: 0xac894bd2
+    member_id: 0xe0f633c9
+  }
+}
+struct_union {
+  id: 0x6b74fcf6
+  kind: STRUCT
+  name: "ps2dev"
+  definition {
+    bytesize: 104
+    member_id: 0xb5d409d6
+    member_id: 0x9dbedc75
+    member_id: 0x202d90e5
+    member_id: 0x2d5bf743
+    member_id: 0x616075f5
+    member_id: 0x6cf9b0ce
+    member_id: 0x3f8f07fc
+  }
+}
+struct_union {
+  id: 0x1f4d5f93
+  kind: STRUCT
+  name: "psample_group"
+  definition {
+    bytesize: 56
+    member_id: 0x7c00ef52
+    member_id: 0x7203e49d
+    member_id: 0x88085ba4
+    member_id: 0x054a12f2
+    member_id: 0xfad507ca
+    member_id: 0x95daceb0
+  }
+}
+struct_union {
+  id: 0x9972ab36
+  kind: STRUCT
+  name: "pse_control"
+}
+struct_union {
+  id: 0xaf2432f4
+  kind: STRUCT
+  name: "pseudo_fs_context"
+  definition {
+    bytesize: 32
+    member_id: 0xafba592d
+    member_id: 0xe4c50312
+    member_id: 0x25d46e52
+    member_id: 0xd640b4db
+  }
+}
+struct_union {
+  id: 0x8eca69de
+  kind: STRUCT
+  name: "psi_group"
+  definition {
+    bytesize: 832
+    member_id: 0x72185059
+    member_id: 0x3a2d3a5d
+    member_id: 0x216040a6
+    member_id: 0xe8fb80f6
+    member_id: 0x78e63cf1
+    member_id: 0x30ff6943
+    member_id: 0xca15f443
+    member_id: 0x5e2ae57d
+    member_id: 0x9d2cc35c
+    member_id: 0x0f22186f
+    member_id: 0xdc1954a9
+    member_id: 0xabe7c644
+    member_id: 0x33cdf1b7
+    member_id: 0x474c7f5b
+    member_id: 0x57fcc708
+    member_id: 0xfec5afd2
+    member_id: 0x614a69fa
+    member_id: 0x70f4d1fd
+    member_id: 0x301d9589
+    member_id: 0xbaa16f25
+    member_id: 0xf5b10364
+    member_id: 0xbdab34e3
+    member_id: 0x9d434d85
+  }
+}
+struct_union {
+  id: 0xe0f5227f
+  kind: STRUCT
+  name: "psi_group_cpu"
+  definition {
+    bytesize: 128
+    member_id: 0xfacce67b
+    member_id: 0xe7b602af
+    member_id: 0x832b1953
+    member_id: 0x5c94c93b
+    member_id: 0xc69d7029
+    member_id: 0x10bf8cbd
+  }
+}
+struct_union {
+  id: 0x180fc99a
+  kind: STRUCT
+  name: "psi_trigger"
+  definition {
+    bytesize: 120
+    member_id: 0x72a3be34
+    member_id: 0x565beb91
+    member_id: 0x0fa6cf6d
+    member_id: 0xd3bb233e
+    member_id: 0x7dd6be17
+    member_id: 0x0a28cbab
+    member_id: 0xf573f559
+    member_id: 0xdc176719
+    member_id: 0x5e9a3cf4
+  }
+}
+struct_union {
+  id: 0x83a99a4f
+  kind: STRUCT
+  name: "psi_window"
+  definition {
+    bytesize: 32
+    member_id: 0xd9ec3f41
+    member_id: 0xa3c97cfb
+    member_id: 0x161a63ce
+    member_id: 0x4ac13271
+  }
+}
+struct_union {
+  id: 0x0b97df98
+  kind: STRUCT
+  name: "pstore_info"
+  definition {
+    bytesize: 152
+    member_id: 0x4a965250
+    member_id: 0x0de57809
+    member_id: 0x01dad6f8
+    member_id: 0x9a1f4bf5
+    member_id: 0xdd2ad0dc
+    member_id: 0xaa297c2d
+    member_id: 0x2d0fa6b0
+    member_id: 0xc47730f1
+    member_id: 0xff8a91a7
+    member_id: 0xad99f522
+    member_id: 0xcd5e8ab2
+    member_id: 0x4851e699
+    member_id: 0x342e3e43
+    member_id: 0x249745b5
+    member_id: 0x001f437a
+  }
+}
+struct_union {
+  id: 0xed2b098c
+  kind: STRUCT
+  name: "pstore_record"
+  definition {
+    bytesize: 88
+    member_id: 0xe1a09868
+    member_id: 0x5c1447eb
+    member_id: 0xccbd0660
+    member_id: 0x74da99d4
+    member_id: 0x9a1f44fb
+    member_id: 0xd9abd17c
+    member_id: 0xd308fa63
+    member_id: 0x591193b9
+    member_id: 0x65427665
+    member_id: 0xbb549ede
+    member_id: 0x790ae283
+    member_id: 0x97eea192
+  }
+}
+struct_union {
+  id: 0x2ec85b6a
+  kind: STRUCT
+  name: "pt_regs"
+  definition {
+    bytesize: 336
+    member_id: 0x3190e1a6
+    member_id: 0x521c341e
+    member_id: 0x4d2ae62e
+    member_id: 0x15fad9cf
+    member_id: 0xb1d1daf5
+    member_id: 0x8f28eca8
+    member_id: 0x0e3f2404
+    member_id: 0xebb41cf0
+    member_id: 0x42bd9428
+  }
+}
+struct_union {
+  id: 0x84c15d35
+  kind: STRUCT
+  name: "ptp_clock"
+  definition {
+    bytesize: 5728
+    member_id: 0x458ff930
+    member_id: 0xce1ac83c
+    member_id: 0xcd79f0a5
+    member_id: 0x33ef2acb
+    member_id: 0xad5e20f7
+    member_id: 0xa5dd530f
+    member_id: 0xc3552be5
+    member_id: 0x3ad08c08
+    member_id: 0xb6d66149
+    member_id: 0x3acac1d6
+    member_id: 0xbb298c10
+    member_id: 0x2674640e
+    member_id: 0xcf12f6b9
+    member_id: 0xb108a733
+    member_id: 0xe5725a92
+    member_id: 0xbbeb5e6f
+    member_id: 0x6f6286ef
+    member_id: 0x99141802
+    member_id: 0xcf6c7dc9
+    member_id: 0xd36e73ca
+    member_id: 0x1fc336f7
+    member_id: 0x22d54ac6
+    member_id: 0x70e7a631
+    member_id: 0x09d5d38f
+  }
+}
+struct_union {
+  id: 0x220adcb6
+  kind: STRUCT
+  name: "ptp_clock_event"
+  definition {
+    bytesize: 24
+    member_id: 0x5c31f5ad
+    member_id: 0xad5e2557
+    member_id: 0x33d3db2f
+  }
+}
+struct_union {
+  id: 0xbdbf5c0a
+  kind: STRUCT
+  name: "ptp_clock_info"
+  definition {
+    bytesize: 184
+    member_id: 0x4a965250
+    member_id: 0x0d81b7eb
+    member_id: 0x663e1f11
+    member_id: 0x95de6868
+    member_id: 0x0d85b8a6
+    member_id: 0x7e955d76
+    member_id: 0x235ae6d9
+    member_id: 0x6b3dfbc3
+    member_id: 0x512d1e2b
+    member_id: 0x83880008
+    member_id: 0xac8ff6e3
+    member_id: 0xc543c9fe
+    member_id: 0x593e57da
+    member_id: 0x5875fd5c
+    member_id: 0xea4526a2
+    member_id: 0xd016ff27
+    member_id: 0x73eab9b0
+    member_id: 0xd6d2a311
+    member_id: 0xab1b31a6
+    member_id: 0xb8237f7d
+    member_id: 0x98c89b65
+    member_id: 0xf587f129
+    member_id: 0x8c0f52a7
+  }
+}
+struct_union {
+  id: 0xc4690c15
+  kind: STRUCT
+  name: "ptp_clock_request"
+  definition {
+    bytesize: 64
+    member_id: 0x5c053fe3
+    member_id: 0x3a931eaa
+  }
+}
+struct_union {
+  id: 0x9c649622
+  kind: STRUCT
+  name: "ptp_clock_time"
+  definition {
+    bytesize: 16
+    member_id: 0x6c489799
+    member_id: 0x4e521de9
+    member_id: 0xd4858b46
+  }
+}
+struct_union {
+  id: 0x1cce5ceb
+  kind: STRUCT
+  name: "ptp_extts_event"
+  definition {
+    bytesize: 32
+    member_id: 0xab23b73f
+    member_id: 0xad7c841b
+    member_id: 0x2d2d0cd8
+    member_id: 0xd470371e
+  }
+}
+struct_union {
+  id: 0x9c5a8d11
+  kind: STRUCT
+  name: "ptp_extts_request"
+  definition {
+    bytesize: 16
+    member_id: 0xad7c8dd9
+    member_id: 0x2d2d0c03
+    member_id: 0xd4703b36
+  }
+}
+struct_union {
+  id: 0xd27abdde
+  kind: STRUCT
+  name: "ptp_header"
+  definition {
+    bytesize: 34
+    member_id: 0xe091062f
+    member_id: 0xef4c0c86
+    member_id: 0x673f72e8
+    member_id: 0x7441b38b
+    member_id: 0xcbc3eca8
+    member_id: 0x9706c321
+    member_id: 0x3a5aba43
+    member_id: 0x08cabd7d
+    member_id: 0x26183ba3
+    member_id: 0xf61da2d5
+    member_id: 0xfc15393a
+    member_id: 0x5515654a
+  }
+}
+struct_union {
+  id: 0xdb9f5d61
+  kind: STRUCT
+  name: "ptp_perout_request"
+  definition {
+    bytesize: 56
+    member_id: 0x321ecf49
+    member_id: 0xffed3de4
+    member_id: 0xad7c8d72
+    member_id: 0x2d2d05e1
+    member_id: 0x31669da2
+  }
+}
+struct_union {
+  id: 0x2aebdf52
+  kind: STRUCT
+  name: "ptp_pin_desc"
+  definition {
+    bytesize: 96
+    member_id: 0x0de6d485
+    member_id: 0xad7c86c1
+    member_id: 0x214a5a0f
+    member_id: 0x46c61039
+    member_id: 0xd4f56a4b
+  }
+}
+struct_union {
+  id: 0xae173716
+  kind: STRUCT
+  name: "ptp_system_timestamp"
+  definition {
+    bytesize: 32
+    member_id: 0xefe31069
+    member_id: 0x5dd7fad3
+  }
+}
+struct_union {
+  id: 0x4d9ad078
+  kind: STRUCT
+  name: "ptr_ring"
+  definition {
+    bytesize: 192
+    member_id: 0x6c53e55d
+    member_id: 0x8d1d2604
+    member_id: 0x6bcdf1bd
+    member_id: 0xbc3b24d0
+    member_id: 0x65e6abc3
+    member_id: 0xd9193bbe
+    member_id: 0x4a247549
+    member_id: 0xaddebba5
+  }
+}
+struct_union {
+  id: 0xe93b4eda
+  kind: STRUCT
+  name: "ptrauth_key"
+  definition {
+    bytesize: 16
+    member_id: 0x9fbe75ca
+    member_id: 0x39784625
+  }
+}
+struct_union {
+  id: 0xc380e7d1
+  kind: STRUCT
+  name: "ptrauth_keys_kernel"
+  definition {
+    bytesize: 16
+    member_id: 0x3a433cd0
+  }
+}
+struct_union {
+  id: 0xf0e5387c
+  kind: STRUCT
+  name: "ptrauth_keys_user"
+  definition {
+    bytesize: 80
+    member_id: 0x3a433cd0
+    member_id: 0xfa83aed4
+    member_id: 0x13b6007c
+    member_id: 0x4ff6bc3d
+    member_id: 0x1db23a75
+  }
+}
+struct_union {
+  id: 0xc9228df8
+  kind: STRUCT
+  name: "public_key"
+  definition {
+    bytesize: 48
+    member_id: 0x204eb7cb
+    member_id: 0x153981eb
+    member_id: 0x5a1dac3a
+    member_id: 0x4bb6d80a
+    member_id: 0x1e5d0663
+    member_id: 0x16578008
+    member_id: 0xdf043932
+    member_id: 0xec6d1882
+  }
+}
+struct_union {
+  id: 0xf62d2702
+  kind: STRUCT
+  name: "public_key_signature"
+  definition {
+    bytesize: 88
+    member_id: 0xf4dca130
+    member_id: 0x67f2783e
+    member_id: 0x5faf1f1c
+    member_id: 0x51ed5557
+    member_id: 0x191c0c1c
+    member_id: 0xec6d1ed7
+    member_id: 0x637c4dd8
+    member_id: 0x6a8cfc68
+    member_id: 0xffab320b
+    member_id: 0x564ca083
+  }
+}
+struct_union {
+  id: 0x3ea9cea9
+  kind: STRUCT
+  name: "pwm_args"
+  definition {
+    bytesize: 16
+    member_id: 0xffe37383
+    member_id: 0xe0268498
+  }
+}
+struct_union {
+  id: 0x265a9ae6
+  kind: STRUCT
+  name: "pwm_capture"
+  definition {
+    bytesize: 8
+    member_id: 0xff34d5d6
+    member_id: 0xc1236c49
+  }
+}
+struct_union {
+  id: 0xb815f8d7
+  kind: STRUCT
+  name: "pwm_chip"
+  definition {
+    bytesize: 72
+    member_id: 0xce3bbab3
+    member_id: 0xafbc5acb
+    member_id: 0x85bdc79a
+    member_id: 0x1cabc60b
+    member_id: 0x4a590760
+    member_id: 0x0dfe7bf0
+    member_id: 0x7c00e895
+    member_id: 0x5609f945
+    member_id: 0x2d081e2a
+  }
+}
+struct_union {
+  id: 0x8ac78d2d
+  kind: STRUCT
+  name: "pwm_device"
+  definition {
+    bytesize: 112
+    member_id: 0x0517038f
+    member_id: 0x2d5bf5db
+    member_id: 0x06e3e847
+    member_id: 0x8d1213ae
+    member_id: 0xc646ae62
+    member_id: 0x50c82005
+    member_id: 0x340514a3
+    member_id: 0x72f7526b
+    member_id: 0x266ba265
+    member_id: 0x2d081688
+  }
+}
+struct_union {
+  id: 0xacacb81b
+  kind: STRUCT
+  name: "pwm_ops"
+  definition {
+    bytesize: 56
+    member_id: 0xb6d55f02
+    member_id: 0xfeaedb6a
+    member_id: 0x8143eeb6
+    member_id: 0x8e5f864b
+    member_id: 0x7e8c8476
+    member_id: 0x4a965597
+    member_id: 0x2d0814a0
+  }
+}
+struct_union {
+  id: 0x04a91d68
+  kind: STRUCT
+  name: "pwm_state"
+  definition {
+    bytesize: 24
+    member_id: 0xffe37383
+    member_id: 0xc1f4c3c6
+    member_id: 0xe02689bb
+    member_id: 0x3a2d335c
+    member_id: 0x350e5f1a
+  }
+}
+struct_union {
+  id: 0x814b9302
+  kind: STRUCT
+  name: "qc_dqblk"
+  definition {
+    bytesize: 120
+    member_id: 0xf4286856
+    member_id: 0x7b1f57bf
+    member_id: 0x632da346
+    member_id: 0xea30fff1
+    member_id: 0xf9c52b7d
+    member_id: 0x0096f644
+    member_id: 0x631644e0
+    member_id: 0x89ebfcc3
+    member_id: 0xcbb0c33e
+    member_id: 0x50b54e8f
+    member_id: 0x9ff2dd0d
+    member_id: 0x3a80de66
+    member_id: 0x46e2e14f
+    member_id: 0x0800370c
+    member_id: 0x7ec4fea7
+    member_id: 0x55ea559b
+  }
+}
+struct_union {
+  id: 0x847e0a1c
+  kind: STRUCT
+  name: "qc_info"
+  definition {
+    bytesize: 32
+    member_id: 0x1ff56383
+    member_id: 0xac8a13ae
+    member_id: 0x63c48faf
+    member_id: 0x27bc9e88
+    member_id: 0x66815328
+    member_id: 0x3ebd1267
+    member_id: 0x128cdf09
+    member_id: 0xff287409
+  }
+}
+struct_union {
+  id: 0xa1229d28
+  kind: STRUCT
+  name: "qc_state"
+  definition {
+    bytesize: 176
+    member_id: 0x852d6b86
+    member_id: 0x60645811
+  }
+}
+struct_union {
+  id: 0x7d09e840
+  kind: STRUCT
+  name: "qc_type_state"
+  definition {
+    bytesize: 56
+    member_id: 0x2d2d0138
+    member_id: 0x0a903c3e
+    member_id: 0x555cf737
+    member_id: 0x9432f136
+    member_id: 0xe615e654
+    member_id: 0x87dcb2af
+    member_id: 0xd6b9261d
+    member_id: 0x0c9c6675
+    member_id: 0x4f997b4e
+    member_id: 0x6067174e
+  }
+}
+struct_union {
+  id: 0xaad76fc1
+  kind: STRUCT
+  name: "qca_btsoc_version"
+  definition {
+    bytesize: 12
+    member_id: 0x2170d066
+    member_id: 0xf600edb5
+    member_id: 0x9ae71fdb
+    member_id: 0x66da3ddb
+  }
+}
+struct_union {
+  id: 0x292a6e73
+  kind: STRUCT
+  name: "qcom_smem_state"
+  definition {
+    bytesize: 48
+    member_id: 0x05ec0452
+    member_id: 0x6ba699d3
+    member_id: 0x7c00ebb3
+    member_id: 0xf7c3fa88
+    member_id: 0x5911980a
+    member_id: 0xaf8fa4ab
+  }
+}
+struct_union {
+  id: 0x04a3cf0f
+  kind: STRUCT
+  name: "qcom_smem_state_ops"
+  definition {
+    bytesize: 8
+    member_id: 0x8e2029f5
+  }
+}
+struct_union {
+  id: 0xaf86107e
+  kind: STRUCT
+  name: "qdisc_size_table"
+  definition {
+    bytesize: 64
+    member_id: 0x95dac977
+    member_id: 0x7c00e690
+    member_id: 0xd9182f78
+    member_id: 0xb71cfdc9
+    member_id: 0xff724f3d
+  }
+}
+struct_union {
+  id: 0x0cd7c6a4
+  kind: STRUCT
+  name: "qdisc_skb_head"
+  definition {
+    bytesize: 24
+    member_id: 0xb55ff668
+    member_id: 0xee98eb71
+    member_id: 0x9b74a670
+    member_id: 0x2d1fe165
+  }
+}
+struct_union {
+  id: 0x45cda86d
+  kind: STRUCT
+  name: "qdisc_walker"
+  definition {
+    bytesize: 24
+    member_id: 0x69ef5a8f
+    member_id: 0x62cb512a
+    member_id: 0x65427bf6
+    member_id: 0xf7b8ccd5
+  }
+}
+struct_union {
+  id: 0xed946547
+  kind: STRUCT
+  name: "qrwlock"
+  definition {
+    bytesize: 8
+    member_id: 0x35b86f03
+    member_id: 0xeb494cc1
+  }
+}
+struct_union {
+  id: 0xeea291c0
+  kind: STRUCT
+  name: "qspinlock"
+  definition {
+    bytesize: 4
+    member_id: 0x32814327
+  }
+}
+struct_union {
+  id: 0x3945ef63
+  kind: STRUCT
+  name: "qstr"
+  definition {
+    bytesize: 16
+    member_id: 0x34437040
+    member_id: 0x0de324eb
+  }
+}
+struct_union {
+  id: 0xc51b0e75
+  kind: STRUCT
+  name: "queue_limits"
+  definition {
+    bytesize: 136
+    member_id: 0xf28f9bf8
+    member_id: 0xb955d92c
+    member_id: 0xd60fe507
+    member_id: 0x677475a7
+    member_id: 0xf048880e
+    member_id: 0x050e515a
+    member_id: 0x51f34597
+    member_id: 0x60f390ff
+    member_id: 0x3a19487a
+    member_id: 0xd85daa1c
+    member_id: 0x1ede05af
+    member_id: 0xcebee4f2
+    member_id: 0xac78b3d9
+    member_id: 0x6108ac87
+    member_id: 0x2e0bfc39
+    member_id: 0x079d7b3f
+    member_id: 0xa9e9960e
+    member_id: 0xe388c14a
+    member_id: 0xfbff1b4b
+    member_id: 0x99be6e27
+    member_id: 0xb5d14adb
+    member_id: 0x6dd0cee2
+    member_id: 0x8e370577
+    member_id: 0x89074eed
+    member_id: 0x06473753
+    member_id: 0x1bdd5453
+    member_id: 0x26582f94
+    member_id: 0xaf3e33dd
+    member_id: 0x8d05d4ec
+    member_id: 0xd671ce1e
+    member_id: 0x2d08122d
+  }
+}
+struct_union {
+  id: 0x8d0cdac4
+  kind: STRUCT
+  name: "quota_format_ops"
+  definition {
+    bytesize: 80
+    member_id: 0x693803cc
+    member_id: 0x883cf01e
+    member_id: 0x2ec77a1f
+    member_id: 0x83445041
+    member_id: 0xa5774d76
+    member_id: 0x94b7eca7
+    member_id: 0xe1c924c3
+    member_id: 0x09a37f3e
+    member_id: 0x2d081e2a
+    member_id: 0x637600d0
+  }
+}
+struct_union {
+  id: 0x31e7614c
+  kind: STRUCT
+  name: "quota_format_type"
+  definition {
+    bytesize: 32
+    member_id: 0xaa7d95ca
+    member_id: 0x68c5eb54
+    member_id: 0xd53b285f
+    member_id: 0xef41ed08
+  }
+}
+struct_union {
+  id: 0x70d172e6
+  kind: STRUCT
+  name: "quota_info"
+  definition {
+    bytesize: 336
+    member_id: 0x2d2d0138
+    member_id: 0x4faa329a
+    member_id: 0xc7ae146e
+    member_id: 0xcd580f51
+    member_id: 0xaf94908c
+  }
+}
+struct_union {
+  id: 0x0a470c27
+  kind: STRUCT
+  name: "quotactl_ops"
+  definition {
+    bytesize: 104
+    member_id: 0x38668d0b
+    member_id: 0x3ec4d9fd
+    member_id: 0xf4353a73
+    member_id: 0x9875a38c
+    member_id: 0x069fd15c
+    member_id: 0x9bb7ecf7
+    member_id: 0x0013b024
+    member_id: 0x7bcf7568
+    member_id: 0x52694803
+    member_id: 0x7e8ca05f
+    member_id: 0x1b361d35
+    member_id: 0x2d08170f
+    member_id: 0x6376010c
+  }
+}
+struct_union {
+  id: 0x86c24c9e
+  kind: STRUCT
+  name: "radix_tree_iter"
+  definition {
+    bytesize: 32
+    member_id: 0xad0a7ddb
+    member_id: 0x79241ade
+    member_id: 0xeb3300c7
+    member_id: 0x0f48a631
+  }
+}
+struct_union {
+  id: 0xb4bee03b
+  kind: STRUCT
+  name: "range"
+  definition {
+    bytesize: 16
+    member_id: 0x46891063
+    member_id: 0x829d7cae
+  }
+}
+struct_union {
+  id: 0xebb94dab
+  kind: STRUCT
+  name: "rate_sample"
+  definition {
+    bytesize: 72
+    member_id: 0x11000098
+    member_id: 0x8be7c123
+    member_id: 0x412290aa
+    member_id: 0x9871b666
+    member_id: 0xe07a91f0
+    member_id: 0x02e2818d
+    member_id: 0xc2ae7a6f
+    member_id: 0xeae5b95c
+    member_id: 0x2e67f9bb
+    member_id: 0x419a6349
+    member_id: 0x5a726862
+    member_id: 0xec853087
+    member_id: 0x0a73bd57
+    member_id: 0x64560e03
+    member_id: 0x7e1055a6
+    member_id: 0x76a994d8
+  }
+}
+struct_union {
+  id: 0xa3ac7ea1
+  kind: STRUCT
+  name: "ratelimit_state"
+  definition {
+    bytesize: 40
+    member_id: 0x2d244e18
+    member_id: 0x49a0978b
+    member_id: 0x46ab24d9
+    member_id: 0x2772c005
+    member_id: 0xed3f02a4
+    member_id: 0x38212036
+    member_id: 0x2d5bf191
+  }
+}
+struct_union {
+  id: 0x834316b8
+  kind: STRUCT
+  name: "raw_hashinfo"
+  definition {
+    bytesize: 2112
+    member_id: 0x2d1fec85
+    member_id: 0x5c6b0b5c
+  }
+}
+struct_union {
+  id: 0x7db04ce7
+  kind: STRUCT
+  name: "raw_notifier_head"
+  definition {
+    bytesize: 8
+    member_id: 0xb5410fa5
+  }
+}
+struct_union {
+  id: 0x6a35bdd9
+  kind: STRUCT
+  name: "raw_spinlock"
+  definition {
+    bytesize: 4
+    member_id: 0x4fd25a9e
+  }
+}
+struct_union {
+  id: 0x0362ee21
+  kind: STRUCT
+  name: "rb_irq_work"
+  definition {
+    bytesize: 96
+    member_id: 0xd64000c8
+    member_id: 0x939cab56
+    member_id: 0x7f337099
+    member_id: 0x7ab3f5b1
+    member_id: 0xc133acab
+    member_id: 0xabba6f98
+    member_id: 0x3766071b
+  }
+}
+struct_union {
+  id: 0x3205ba2f
+  kind: STRUCT
+  name: "rb_node"
+  definition {
+    bytesize: 24
+    member_id: 0x980ba38a
+    member_id: 0x24064dd2
+    member_id: 0xfc83ac9a
+  }
+}
+struct_union {
+  id: 0xeb923a9b
+  kind: STRUCT
+  name: "rb_root"
+  definition {
+    bytesize: 8
+    member_id: 0x2334364b
+  }
+}
+struct_union {
+  id: 0xd0f3b5bf
+  kind: STRUCT
+  name: "rb_root_cached"
+  definition {
+    bytesize: 16
+    member_id: 0x82e5fa96
+    member_id: 0x2bb91e1d
+  }
+}
+struct_union {
+  id: 0x4fb3e0ce
+  kind: STRUCT
+  name: "rb_time_struct"
+  definition {
+    bytesize: 8
+    member_id: 0x74eaf43c
+  }
+}
+struct_union {
+  id: 0x327336d2
+  kind: STRUCT
+  name: "rc_dev"
+  definition {
+    bytesize: 2552
+    member_id: 0xce1ac149
+    member_id: 0xe5d96e89
+    member_id: 0x254dc235
+    member_id: 0x3afe32c8
+    member_id: 0xd33986fc
+    member_id: 0x25d41955
+    member_id: 0xf415f94a
+    member_id: 0xc959ce19
+    member_id: 0x0e2e8020
+    member_id: 0x2d4b3bb8
+    member_id: 0xc8628803
+    member_id: 0x092e71a8
+    member_id: 0xd74da061
+    member_id: 0xd759fe1e
+    member_id: 0x5768b95e
+    member_id: 0x494c0817
+    member_id: 0x0a18e81e
+    member_id: 0x9cdfb0ea
+    member_id: 0x5205e770
+    member_id: 0xb13ba3b7
+    member_id: 0x04458267
+    member_id: 0xf30e73e0
+    member_id: 0x4bc6fa80
+    member_id: 0x8564f74e
+    member_id: 0x59119898
+    member_id: 0x67a32b63
+    member_id: 0x4549f3c5
+    member_id: 0xf67243e5
+    member_id: 0x634693e3
+    member_id: 0x8f229572
+    member_id: 0x6d62190d
+    member_id: 0xbc17d729
+    member_id: 0x6f1ecde9
+    member_id: 0xb24cf075
+    member_id: 0x540a8d95
+    member_id: 0x351e67e0
+    member_id: 0xbe187c0e
+    member_id: 0x41f2ce8e
+    member_id: 0x1637af8a
+    member_id: 0x393e768a
+    member_id: 0xfa7940e4
+    member_id: 0xc8f8f278
+    member_id: 0xbab84db6
+    member_id: 0x3a5d79c0
+    member_id: 0x5137224a
+    member_id: 0x6242a9b1
+    member_id: 0xad991fbf
+    member_id: 0xcd7d27d8
+    member_id: 0x20038b5b
+    member_id: 0x1b6412a2
+    member_id: 0xa796def6
+    member_id: 0x87490ae5
+    member_id: 0x489a6749
+    member_id: 0x8f365def
+    member_id: 0x822c7eed
+    member_id: 0xf684d231
+    member_id: 0x1b86c5cd
+    member_id: 0xeeb5498b
+    member_id: 0x83de49c6
+  }
+}
+struct_union {
+  id: 0x686d198e
+  kind: STRUCT
+  name: "rc_map"
+  definition {
+    bytesize: 40
+    member_id: 0xa105764c
+    member_id: 0xd93b9df5
+    member_id: 0xb84059b3
+    member_id: 0x45a9377d
+    member_id: 0xb3989fc8
+    member_id: 0x0de57421
+    member_id: 0x2d1fec2e
+  }
+}
+struct_union {
+  id: 0xed49aaad
+  kind: STRUCT
+  name: "rc_map_table"
+  definition {
+    bytesize: 16
+    member_id: 0xc46045a5
+    member_id: 0xcb88f0cf
+  }
+}
+struct_union {
+  id: 0x644d80b1
+  kind: STRUCT
+  name: "rc_scancode_filter"
+  definition {
+    bytesize: 8
+    member_id: 0xff5b2c47
+    member_id: 0xa8fa6c3d
+  }
+}
+struct_union {
+  id: 0x819882dc
+  kind: STRUCT
+  name: "rcec_ea"
+  definition {
+    bytesize: 8
+    member_id: 0x99f024f1
+    member_id: 0xcbb37151
+    member_id: 0x898effdd
+  }
+}
+struct_union {
+  id: 0xf961bea8
+  kind: STRUCT
+  name: "rcu_exp_work"
+  definition {
+    bytesize: 48
+    member_id: 0x880ef212
+    member_id: 0x408b49f8
+  }
+}
+struct_union {
+  id: 0x4fd33893
+  kind: STRUCT
+  name: "rcu_node"
+  definition {
+    bytesize: 704
+    member_id: 0x2d244e18
+    member_id: 0x0fd69496
+    member_id: 0xbffba1d3
+    member_id: 0xdffc4dce
+    member_id: 0x755ea494
+    member_id: 0x1b514c84
+    member_id: 0x73526296
+    member_id: 0xcb6188a8
+    member_id: 0x048b67fd
+    member_id: 0x8a553b94
+    member_id: 0x2d768635
+    member_id: 0xd34c00a5
+    member_id: 0x5313b57d
+    member_id: 0x55f3e08a
+    member_id: 0x74abca35
+    member_id: 0xba1b0d5b
+    member_id: 0x513a8d6d
+    member_id: 0x86939250
+    member_id: 0x9c8dc12c
+    member_id: 0x72281112
+    member_id: 0x3b89facc
+    member_id: 0x581b9763
+    member_id: 0x938527d6
+    member_id: 0xb53c3de1
+    member_id: 0x74673511
+    member_id: 0xe6f10469
+    member_id: 0x4a266fad
+    member_id: 0xb9533bcc
+    member_id: 0xa6787da6
+    member_id: 0xd0f69068
+    member_id: 0xb9c6c9cf
+    member_id: 0x92e43c58
+    member_id: 0x3333aa70
+    member_id: 0x9338d0c9
+    member_id: 0x042bfe7b
+    member_id: 0x13a02804
+    member_id: 0xe7acad8a
+    member_id: 0x4cc1bc64
+    member_id: 0x7275db5f
+    member_id: 0x42ae50e3
+  }
+}
+struct_union {
+  id: 0xe59e6c5f
+  kind: STRUCT
+  name: "rcu_segcblist"
+  definition {
+    bytesize: 120
+    member_id: 0xb568e1b3
+    member_id: 0xdbcb1d62
+    member_id: 0x0f65729e
+    member_id: 0xb8b5f711
+    member_id: 0x07720577
+    member_id: 0x2d41d28a
+  }
+}
+struct_union {
+  id: 0xa0a12471
+  kind: UNION
+  name: "rcu_special"
+  definition {
+    bytesize: 4
+    member_id: 0x4ca0a7d8
+    member_id: 0x673bbff9
+  }
+}
+struct_union {
+  id: 0xe6e2b0f1
+  kind: STRUCT
+  name: "rcu_sync"
+  definition {
+    bytesize: 48
+    member_id: 0x880ef57c
+    member_id: 0x3b672c9b
+    member_id: 0xc9515701
+    member_id: 0x3bedd6c3
+  }
+}
+struct_union {
+  id: 0xe0593ba2
+  kind: STRUCT
+  name: "rcu_synchronize"
+  definition {
+    bytesize: 48
+    member_id: 0xb5b99b2e
+    member_id: 0xc494a51f
+  }
+}
+struct_union {
+  id: 0xd15fd98f
+  kind: STRUCT
+  name: "rcu_work"
+  definition {
+    bytesize: 72
+    member_id: 0xd6e667b7
+    member_id: 0x95dac8e5
+    member_id: 0x22fae76b
+  }
+}
+struct_union {
+  id: 0xdba44af3
+  kind: STRUCT
+  name: "rcuwait"
+  definition {
+    bytesize: 8
+    member_id: 0x9c3a2307
+  }
+}
+struct_union {
+  id: 0xc58f49ae
+  kind: STRUCT
+  name: "rdists"
+  definition {
+    bytesize: 48
+    member_id: 0x1ac47f21
+    member_id: 0x5b0eeaf9
+    member_id: 0x6e6dd09e
+    member_id: 0x2dfaafa4
+    member_id: 0x3b2054a4
+    member_id: 0xc50214cc
+    member_id: 0xe9799532
+    member_id: 0xd98bc305
+    member_id: 0xdda2b370
+    member_id: 0x907f5a56
+    member_id: 0x7a9a4a81
+  }
+}
+struct_union {
+  id: 0xb72a2600
+  kind: STRUCT
+  name: "readahead_control"
+  definition {
+    bytesize: 56
+    member_id: 0xbf9f3e0b
+    member_id: 0x5dff125e
+    member_id: 0x29279995
+    member_id: 0x6d2dba43
+    member_id: 0x2c95e938
+    member_id: 0x3c39b2b2
+    member_id: 0xa8b889e9
+    member_id: 0x1517dd06
+  }
+}
+struct_union {
+  id: 0x46fba20b
+  kind: STRUCT
+  name: "reciprocal_value"
+  definition {
+    bytesize: 8
+    member_id: 0x8d1115c8
+    member_id: 0x6307aec3
+    member_id: 0x3cc1ce90
+  }
+}
+struct_union {
+  id: 0x88c7ff3b
+  kind: STRUCT
+  name: "reclaim_state"
+  definition {
+    bytesize: 16
+    member_id: 0xaf508177
+    member_id: 0xa83cff72
+  }
+}
+struct_union {
+  id: 0xab139560
+  kind: STRUCT
+  name: "redist_region"
+  definition {
+    bytesize: 24
+    member_id: 0xfb0236d4
+    member_id: 0xadafa58d
+    member_id: 0x2deb6459
+  }
+}
+struct_union {
+  id: 0xb381c899
+  kind: STRUCT
+  name: "ref_tracker_dir"
+  definition {
+  }
+}
+struct_union {
+  id: 0x73bf28be
+  kind: STRUCT
+  name: "refcount_struct"
+  definition {
+    bytesize: 4
+    member_id: 0x9a234e85
+  }
+}
+struct_union {
+  id: 0xdfb9dcb9
+  kind: STRUCT
+  name: "reg_default"
+  definition {
+    bytesize: 8
+    member_id: 0x0f05075e
+    member_id: 0xea76816b
+  }
+}
+struct_union {
+  id: 0x68afbc33
+  kind: STRUCT
+  name: "reg_field"
+  definition {
+    bytesize: 20
+    member_id: 0x0f05075e
+    member_id: 0xb1654cb6
+    member_id: 0x2604a522
+    member_id: 0xc0f9d53d
+    member_id: 0xdaeab50e
+  }
+}
+struct_union {
+  id: 0x1cd99260
+  kind: STRUCT
+  name: "reg_sequence"
+  definition {
+    bytesize: 12
+    member_id: 0x0f05075e
+    member_id: 0xea76816b
+    member_id: 0xb45614e6
+  }
+}
+struct_union {
+  id: 0x9f4bdf73
+  kind: STRUCT
+  name: "regcache_ops"
+  definition {
+    bytesize: 72
+    member_id: 0x0de57ce8
+    member_id: 0x5c368a26
+    member_id: 0x1ac7a665
+    member_id: 0x0d0d659f
+    member_id: 0xeba81ea2
+    member_id: 0x487076fb
+    member_id: 0x342dfe3f
+    member_id: 0x50f90fc8
+    member_id: 0xf2727b31
+  }
+}
+struct_union {
+  id: 0x12dd3ba6
+  kind: STRUCT
+  name: "regex"
+  definition {
+    bytesize: 272
+    member_id: 0x9b7c94b6
+    member_id: 0xb862f207
+    member_id: 0x2c49fc38
+    member_id: 0xe6afb6aa
+  }
+}
+struct_union {
+  id: 0x0ce01aef
+  kind: STRUCT
+  name: "regmap"
+  definition {
+    bytesize: 680
+    member_id: 0x3caf7635
+    member_id: 0x2d27ae8f
+    member_id: 0x8153d386
+    member_id: 0xfc1baa41
+    member_id: 0xa75f1fbf
+    member_id: 0x64d7addd
+    member_id: 0xce3bbcca
+    member_id: 0xe2ca3110
+    member_id: 0x081f58c5
+    member_id: 0xdae080ed
+    member_id: 0xf94d26a7
+    member_id: 0x0de5760f
+    member_id: 0xf51c9ccb
+    member_id: 0x0081d531
+    member_id: 0x2f4affb6
+    member_id: 0xec1ec1ff
+    member_id: 0xc07c1d36
+    member_id: 0x4acca2d3
+    member_id: 0xa645680e
+    member_id: 0x1c357788
+    member_id: 0x26d88a14
+    member_id: 0x038c835b
+    member_id: 0x486b7345
+    member_id: 0xa113b6ec
+    member_id: 0x6e65816a
+    member_id: 0x681316ad
+    member_id: 0xe96a8172
+    member_id: 0x97b04fa4
+    member_id: 0xc54379f6
+    member_id: 0x762946d6
+    member_id: 0xe1a7b8e5
+    member_id: 0x5893a9e6
+    member_id: 0xda9945e1
+    member_id: 0xf70bd962
+    member_id: 0x39c538b8
+    member_id: 0x99961099
+    member_id: 0x350d14c8
+    member_id: 0x75c8cff7
+    member_id: 0x93d4de44
+    member_id: 0x72968fb5
+    member_id: 0x699c4af4
+    member_id: 0xb585f716
+    member_id: 0x48711710
+    member_id: 0x342c9f8b
+    member_id: 0xd590f14b
+    member_id: 0xa238cc2b
+    member_id: 0x1c7bbdd7
+    member_id: 0x714b2626
+    member_id: 0x31e9ff2d
+    member_id: 0xc921bbd4
+    member_id: 0xc4a4f0cc
+    member_id: 0x44f24098
+    member_id: 0x97d9f4b4
+    member_id: 0x0e52709d
+    member_id: 0x742441cb
+    member_id: 0xd8021562
+    member_id: 0x754cbc72
+    member_id: 0x08adff49
+    member_id: 0x212f2ffe
+    member_id: 0x4c3a3764
+    member_id: 0xcd8c8d0c
+    member_id: 0x3b66602a
+    member_id: 0xc56f9caa
+    member_id: 0xd1bb1ce0
+    member_id: 0xbc0bb838
+    member_id: 0x04b8e839
+    member_id: 0x47173f90
+    member_id: 0xa93f8874
+    member_id: 0xe01291db
+    member_id: 0x55f45bd5
+    member_id: 0x5cbc828b
+    member_id: 0xce7c9aa9
+    member_id: 0x51d8849f
+    member_id: 0x52f49bde
+    member_id: 0xfbd54b53
+  }
+}
+struct_union {
+  id: 0x5d667554
+  kind: STRUCT
+  name: "regmap_access_table"
+  definition {
+    bytesize: 32
+    member_id: 0xd01d6076
+    member_id: 0x9036fca0
+    member_id: 0x74bfe03b
+    member_id: 0xfee38f97
+  }
+}
+struct_union {
+  id: 0xf5a6abf0
+  kind: STRUCT
+  name: "regmap_async"
+  definition {
+    bytesize: 32
+    member_id: 0x7c00ef52
+    member_id: 0x8dffd04a
+    member_id: 0xe2ca3be4
+  }
+}
+struct_union {
+  id: 0xd37e5ece
+  kind: STRUCT
+  name: "regmap_bus"
+  definition {
+    bytesize: 144
+    member_id: 0x0b6f4eb5
+    member_id: 0x346349d2
+    member_id: 0xb154a56e
+    member_id: 0xd3bbb46e
+    member_id: 0x69cdbb0e
+    member_id: 0x66f67564
+    member_id: 0xb584bb09
+    member_id: 0x486676cf
+    member_id: 0x7288a0e4
+    member_id: 0x33ab1a91
+    member_id: 0x3e10e356
+    member_id: 0x289bd1af
+    member_id: 0xa222e6db
+    member_id: 0xf5244d0e
+    member_id: 0x5cfa81e4
+    member_id: 0x55f45543
+    member_id: 0x5cbc804e
+    member_id: 0x79d71685
+    member_id: 0x2d081844
+  }
+}
+struct_union {
+  id: 0x063a1f8b
+  kind: STRUCT
+  name: "regmap_config"
+  definition {
+    bytesize: 328
+    member_id: 0x0de57ce8
+    member_id: 0xccc2c74d
+    member_id: 0x31e9faad
+    member_id: 0x44e8fce8
+    member_id: 0x64d7a0cf
+    member_id: 0xd17b1341
+    member_id: 0x5c3ee5ef
+    member_id: 0x97b04907
+    member_id: 0xc54371a0
+    member_id: 0x76294e77
+    member_id: 0xe1a7b0a2
+    member_id: 0x5893a891
+    member_id: 0xda994bd3
+    member_id: 0x4129b94c
+    member_id: 0x2d27ad20
+    member_id: 0x8153dc5f
+    member_id: 0xfc1ba2e3
+    member_id: 0x729688c2
+    member_id: 0x699c4b00
+    member_id: 0xb585f2d9
+    member_id: 0x48711f6e
+    member_id: 0x342c97a5
+    member_id: 0x55f45d21
+    member_id: 0x5cbc8ec0
+    member_id: 0x0b6f4436
+    member_id: 0x8eec5613
+    member_id: 0xe96a8a0c
+    member_id: 0xf70bdd5f
+    member_id: 0x39c535a2
+    member_id: 0x99961376
+    member_id: 0x350d1b19
+    member_id: 0x75c8c443
+    member_id: 0x93d4d9cd
+    member_id: 0x4c3721c1
+    member_id: 0x74244625
+    member_id: 0x44f24eb7
+    member_id: 0xcd8c8bfa
+    member_id: 0xd8021deb
+    member_id: 0xa238c0e1
+    member_id: 0x1c7bbf16
+    member_id: 0xf58e8342
+    member_id: 0x47173cb7
+    member_id: 0xa93f836c
+    member_id: 0x51bdacc3
+    member_id: 0xe01298ba
+    member_id: 0x87846ca3
+    member_id: 0x889c7bd5
+    member_id: 0x3bbe0b97
+    member_id: 0x1f2f13a4
+    member_id: 0x2f654b9a
+    member_id: 0x68ff1efa
+    member_id: 0x9d887656
+    member_id: 0xe06569e0
+    member_id: 0xfbd54991
+    member_id: 0x2d081490
+  }
+}
+struct_union {
+  id: 0xa324c7a3
+  kind: STRUCT
+  name: "regmap_field"
+  definition {
+    bytesize: 32
+    member_id: 0x36e6f99c
+    member_id: 0xa876e8aa
+    member_id: 0x32744c83
+    member_id: 0x0f050e9c
+    member_id: 0xc0f9d15e
+    member_id: 0xdaeab405
+  }
+}
+struct_union {
+  id: 0x4803c51f
+  kind: STRUCT
+  name: "regmap_format"
+  definition {
+    bytesize: 80
+    member_id: 0x44e2ff4b
+    member_id: 0x22cd20dd
+    member_id: 0x3fd6b442
+    member_id: 0x447be858
+    member_id: 0x21e553de
+    member_id: 0x619c508c
+    member_id: 0xfa03aa63
+    member_id: 0x25ef1b76
+    member_id: 0x61146e24
+    member_id: 0x45363579
+  }
+}
+struct_union {
+  id: 0xe6f6bb7d
+  kind: STRUCT
+  name: "regmap_irq"
+  definition {
+    bytesize: 36
+    member_id: 0x83dea94b
+    member_id: 0xa876e170
+    member_id: 0x5c6ab0dd
+  }
+}
+struct_union {
+  id: 0xbfb005b6
+  kind: STRUCT
+  name: "regmap_irq_chip"
+  definition {
+    bytesize: 168
+    member_id: 0x0de57ce8
+    member_id: 0xa7fc0bdf
+    member_id: 0x5881665b
+    member_id: 0xedd64f59
+    member_id: 0x46fa4e4f
+    member_id: 0x3d3f4bc2
+    member_id: 0xbaacb69d
+    member_id: 0x360220cb
+    member_id: 0xf355e9cd
+    member_id: 0x6f0eb254
+    member_id: 0x2c8adf6f
+    member_id: 0xf294dec5
+    member_id: 0x20e3cde2
+    member_id: 0x6c801fcf
+    member_id: 0x2313299e
+    member_id: 0xf31a8952
+    member_id: 0xc9b4d99c
+    member_id: 0x76d7747f
+    member_id: 0x3804cc00
+    member_id: 0x05fcd8fb
+    member_id: 0x323774ce
+    member_id: 0xab22d4a9
+    member_id: 0xf0721b0e
+    member_id: 0x1c682151
+    member_id: 0x05723160
+    member_id: 0x1b0af2a3
+    member_id: 0xa13097a3
+    member_id: 0xe75e1576
+    member_id: 0xbd68871b
+    member_id: 0xb86d05c6
+    member_id: 0xd48e12cb
+    member_id: 0xad9b7a4b
+    member_id: 0x0a9e514d
+    member_id: 0xc6455afe
+    member_id: 0x656db934
+    member_id: 0x49a800a4
+    member_id: 0x29fa16d4
+    member_id: 0x400a3f51
+    member_id: 0xb949e4ee
+    member_id: 0x98b939b4
+  }
+}
+struct_union {
+  id: 0x65159935
+  kind: STRUCT
+  name: "regmap_irq_chip_data"
+  definition {
+    bytesize: 464
+    member_id: 0x2d4b3c00
+    member_id: 0x7814c1bd
+    member_id: 0x8dffdd71
+    member_id: 0xc6545d0c
+    member_id: 0x8dcdd781
+    member_id: 0xa719d7c2
+    member_id: 0x991596db
+    member_id: 0xf40c8bc4
+    member_id: 0xbaacb95c
+    member_id: 0x3602222f
+    member_id: 0x1c1b349b
+    member_id: 0xe2a32069
+    member_id: 0xbfe8d946
+    member_id: 0xcec853a6
+    member_id: 0xe7d5bf8a
+    member_id: 0x4380ab3a
+    member_id: 0xb7a17035
+    member_id: 0x43870308
+    member_id: 0x6291401f
+    member_id: 0x4b7a1f7b
+    member_id: 0x6c801fb5
+    member_id: 0xb949e043
+    member_id: 0xd28cca77
+  }
+}
+struct_union {
+  id: 0x9ca33ac1
+  kind: STRUCT
+  name: "regmap_irq_sub_irq_map"
+  definition {
+    bytesize: 16
+    member_id: 0xe77cb6ba
+    member_id: 0x9b072945
+  }
+}
+struct_union {
+  id: 0x3c614288
+  kind: STRUCT
+  name: "regmap_irq_type"
+  definition {
+    bytesize: 28
+    member_id: 0x32f4985d
+    member_id: 0xd53be527
+    member_id: 0xcf857d26
+    member_id: 0xe6df641d
+    member_id: 0xa1bb7e2a
+    member_id: 0x2f0e885b
+    member_id: 0xad7e0d48
+  }
+}
+struct_union {
+  id: 0x7c0872fc
+  kind: STRUCT
+  name: "regmap_range"
+  definition {
+    bytesize: 8
+    member_id: 0x54860881
+    member_id: 0xd02e8d05
+  }
+}
+struct_union {
+  id: 0x1637ba4d
+  kind: STRUCT
+  name: "regmap_range_cfg"
+  definition {
+    bytesize: 48
+    member_id: 0x0de57ce8
+    member_id: 0x54860c60
+    member_id: 0xd02e89bd
+    member_id: 0xe3fcb897
+    member_id: 0x551aa3fe
+    member_id: 0x5c00b9b7
+    member_id: 0x3769ceaf
+    member_id: 0x1afab587
+    member_id: 0x2d0812f5
+  }
+}
+struct_union {
+  id: 0x938639de
+  kind: STRUCT
+  name: "regulation_constraints"
+  definition {
+    bytesize: 224
+    member_id: 0x0de57ce8
+    member_id: 0x9759f49f
+    member_id: 0x052382fd
+    member_id: 0x8e5581df
+    member_id: 0x73d133c9
+    member_id: 0xc8b94b5c
+    member_id: 0x4194734d
+    member_id: 0x10e96a60
+    member_id: 0xe9aacb0d
+    member_id: 0x509c87f8
+    member_id: 0x528484ca
+    member_id: 0xb262b64e
+    member_id: 0x2cebd491
+    member_id: 0xb4a7160c
+    member_id: 0x2a10c7d4
+    member_id: 0x0545db00
+    member_id: 0x45437171
+    member_id: 0xabedc5d6
+    member_id: 0xf15afa6b
+    member_id: 0x0b82d7f7
+    member_id: 0x4043cb41
+    member_id: 0x3629e570
+    member_id: 0x59dd0941
+    member_id: 0xdade10e8
+    member_id: 0x19b12c08
+    member_id: 0xe75fa254
+    member_id: 0x1b030eda
+    member_id: 0x16c05d36
+    member_id: 0x29e86768
+    member_id: 0xc12e10df
+    member_id: 0xcc3f523d
+    member_id: 0x21dee7ce
+    member_id: 0xafe26f7e
+    member_id: 0x6978f8c1
+    member_id: 0x5b8c9461
+    member_id: 0xc291d0e2
+    member_id: 0xbb30bca4
+    member_id: 0x98078cc7
+    member_id: 0xe8b2a514
+  }
+}
+struct_union {
+  id: 0x2cf89e50
+  kind: STRUCT
+  name: "regulator"
+  definition {
+    bytesize: 136
+    member_id: 0xce3bbab3
+    member_id: 0x7c00ebb3
+    member_id: 0x29e86884
+    member_id: 0xdb28b4a0
+    member_id: 0xaa4339de
+    member_id: 0x7ad222dc
+    member_id: 0x7ad61027
+    member_id: 0xaf9d5f6e
+    member_id: 0x2852c2c6
+    member_id: 0x39868c83
+    member_id: 0x6d7ba4a7
+    member_id: 0xdcc7ebf2
+    member_id: 0x1c357508
+  }
+}
+struct_union {
+  id: 0xfb7d4357
+  kind: STRUCT
+  name: "regulator_bulk_data"
+  definition {
+    bytesize: 32
+    member_id: 0x0d785562
+    member_id: 0x8025b3ff
+    member_id: 0x1195b3d9
+    member_id: 0x51f16a64
+  }
+}
+struct_union {
+  id: 0xf3f9594e
+  kind: STRUCT
+  name: "regulator_config"
+  definition {
+    bytesize: 48
+    member_id: 0xce3bbab3
+    member_id: 0x97a385e3
+    member_id: 0x6d52b170
+    member_id: 0xf7c3fa88
+    member_id: 0x36e6f937
+    member_id: 0xb359c9a9
+  }
+}
+struct_union {
+  id: 0xb0c85d25
+  kind: STRUCT
+  name: "regulator_consumer_supply"
+  definition {
+    bytesize: 16
+    member_id: 0x863c40f3
+    member_id: 0x0d785183
+  }
+}
+struct_union {
+  id: 0x83a72d08
+  kind: STRUCT
+  name: "regulator_coupler"
+  definition {
+    bytesize: 40
+    member_id: 0x7c00ef52
+    member_id: 0x44407a1a
+    member_id: 0xa7e441b0
+    member_id: 0x91350bc0
+  }
+}
+struct_union {
+  id: 0x4051d4ba
+  kind: STRUCT
+  name: "regulator_desc"
+  definition {
+    bytesize: 312
+    member_id: 0x0de57ce8
+    member_id: 0x39868e1b
+    member_id: 0xacc971ca
+    member_id: 0xb13db7cf
+    member_id: 0x341037db
+    member_id: 0xca85a221
+    member_id: 0xcc480dd0
+    member_id: 0x27917b84
+    member_id: 0x28d71a7a
+    member_id: 0xf0bda056
+    member_id: 0xafb31081
+    member_id: 0x99159c94
+    member_id: 0x5c7494f2
+    member_id: 0x4a965429
+    member_id: 0x977b57f6
+    member_id: 0xf4174ffd
+    member_id: 0xe63a680b
+    member_id: 0xb8f884d1
+    member_id: 0x59dd001c
+    member_id: 0x04911de9
+    member_id: 0xaafe44c1
+    member_id: 0x2a70ae77
+    member_id: 0x81055b69
+    member_id: 0x365afd91
+    member_id: 0xda110f4a
+    member_id: 0xbb50c226
+    member_id: 0xa480476b
+    member_id: 0x5f7f21f9
+    member_id: 0x447bbb2c
+    member_id: 0x913be081
+    member_id: 0x7a36f556
+    member_id: 0x7eb62f5a
+    member_id: 0x06fd5f89
+    member_id: 0x30ddf99c
+    member_id: 0xaff9623e
+    member_id: 0x49ced59b
+    member_id: 0x63746f9e
+    member_id: 0xbd0aaa89
+    member_id: 0x314c3709
+    member_id: 0x98366cfa
+    member_id: 0x39c7d25a
+    member_id: 0xf8d687cf
+    member_id: 0x179d59e4
+    member_id: 0xdc85982e
+    member_id: 0x116d1ab2
+    member_id: 0x515945bc
+    member_id: 0xf8d3f2a1
+    member_id: 0xd3b8a8ac
+    member_id: 0x168567d0
+    member_id: 0xf21ea0f4
+    member_id: 0x32b8c25f
+    member_id: 0xd68f5933
+    member_id: 0xcae88ee0
+    member_id: 0x5b41f1bf
+    member_id: 0x7e287ac4
+    member_id: 0xe72c249d
+    member_id: 0x5f44889a
+    member_id: 0x1b0302e5
+    member_id: 0x085373b2
+    member_id: 0x904caa86
+    member_id: 0x4a308ec6
+    member_id: 0x2d0810ba
+  }
+}
+struct_union {
+  id: 0x17a1fba0
+  kind: STRUCT
+  name: "regulator_dev"
+  definition {
+    bytesize: 1376
+    member_id: 0x87e3bc9e
+    member_id: 0xeed7ab21
+    member_id: 0x9947442f
+    member_id: 0x39dc3c0c
+    member_id: 0x5d10791f
+    member_id: 0x7c00e79b
+    member_id: 0x5d3485c5
+    member_id: 0x0760784f
+    member_id: 0x3761fc54
+    member_id: 0xad431365
+    member_id: 0x64ea63ca
+    member_id: 0xd264a237
+    member_id: 0x4a965423
+    member_id: 0xce1aca54
+    member_id: 0xfd4798e2
+    member_id: 0x0d47ea6c
+    member_id: 0x39868917
+    member_id: 0x36e6f4e4
+    member_id: 0xca170866
+    member_id: 0xd6e554b5
+    member_id: 0x1c357c44
+    member_id: 0x14c471d3
+    member_id: 0xf6c9ad96
+    member_id: 0x029d1c03
+    member_id: 0xc2622789
+    member_id: 0xc932e451
+    member_id: 0x3047e0c8
+    member_id: 0x385e95e2
+    member_id: 0x2d081bb0
+  }
+}
+struct_union {
+  id: 0xf733f9f6
+  kind: STRUCT
+  name: "regulator_enable_gpio"
+  definition {
+    bytesize: 32
+    member_id: 0x7c00ef52
+    member_id: 0xa38bbaa8
+    member_id: 0x7a5a9508
+    member_id: 0xb4182fb8
+  }
+}
+struct_union {
+  id: 0x577768e5
+  kind: STRUCT
+  name: "regulator_init_data"
+  definition {
+    bytesize: 264
+    member_id: 0x91e8a28f
+    member_id: 0xfdfa65af
+    member_id: 0xf77fa843
+    member_id: 0xce3dd8e0
+    member_id: 0x091bbbc6
+    member_id: 0x6d52bf30
+  }
+}
+struct_union {
+  id: 0x58f78c47
+  kind: STRUCT
+  name: "regulator_ops"
+  definition {
+    bytesize: 296
+    member_id: 0xff233493
+    member_id: 0xde8621f7
+    member_id: 0x8ca6b602
+    member_id: 0xe3487ad9
+    member_id: 0x89d35265
+    member_id: 0xd9d8295f
+    member_id: 0x7a371234
+    member_id: 0xdf9ba88e
+    member_id: 0xb2608f99
+    member_id: 0x01b2c6d9
+    member_id: 0x1dd28a1f
+    member_id: 0xbada1dd2
+    member_id: 0x15c6a182
+    member_id: 0xde1e7591
+    member_id: 0x98ca023c
+    member_id: 0x0da0ee8f
+    member_id: 0x77aa50f1
+    member_id: 0xaa01c06c
+    member_id: 0x9c2b1ad1
+    member_id: 0x522a2d74
+    member_id: 0x1b6b8968
+    member_id: 0x602695e6
+    member_id: 0x75b9b81d
+    member_id: 0x5bfef493
+    member_id: 0x911b3483
+    member_id: 0x022670cd
+    member_id: 0x7e273f9e
+    member_id: 0x3ebf1bcb
+    member_id: 0x3168df75
+    member_id: 0x064b5040
+    member_id: 0x82a79577
+    member_id: 0x0c8c248e
+    member_id: 0xd5fa074e
+    member_id: 0x9e27a0cc
+    member_id: 0xcab2e276
+    member_id: 0xff542925
+    member_id: 0x2d081239
+  }
+}
+struct_union {
+  id: 0x87250629
+  kind: STRUCT
+  name: "regulator_state"
+  definition {
+    bytesize: 24
+    member_id: 0x6756e005
+    member_id: 0x9759fd45
+    member_id: 0x05238f9f
+    member_id: 0x87d8997b
+    member_id: 0x3a2768f2
+    member_id: 0x8538850d
+  }
+}
+struct_union {
+  id: 0xd7f24c7d
+  kind: STRUCT
+  name: "regulator_voltage"
+  definition {
+    bytesize: 8
+    member_id: 0x9759f07e
+    member_id: 0x05238645
+  }
+}
+struct_union {
+  id: 0x7eadef89
+  kind: STRUCT
+  name: "regulatory_request"
+  definition {
+    bytesize: 64
+    member_id: 0x56a7265c
+    member_id: 0xcab1474b
+    member_id: 0xd0dc328d
+    member_id: 0x55ef1c5b
+    member_id: 0xbb80039d
+    member_id: 0x816311fa
+    member_id: 0x9f27e99b
+    member_id: 0xbe3b05ea
+    member_id: 0x299e683b
+    member_id: 0x7c00eec0
+  }
+}
+struct_union {
+  id: 0x5048e0d1
+  kind: STRUCT
+  name: "request"
+  definition {
+    bytesize: 320
+    member_id: 0xe97bac4e
+    member_id: 0x31ca3c6f
+    member_id: 0xa4aa035b
+    member_id: 0x02c0b6c1
+    member_id: 0x97cc8149
+    member_id: 0xd5c2edc5
+    member_id: 0x52285a55
+    member_id: 0x54860676
+    member_id: 0xb47ed33a
+    member_id: 0x2e2d509e
+    member_id: 0xcac866d8
+    member_id: 0x58a68188
+    member_id: 0x36245558
+    member_id: 0x79434db8
+    member_id: 0xefdc36ea
+    member_id: 0x329300ed
+    member_id: 0xca2ca1b1
+    member_id: 0x7ac6bae9
+    member_id: 0x4eae9fa1
+    member_id: 0xe6077053
+    member_id: 0xf3c26547
+    member_id: 0x0b738ff3
+    member_id: 0x082edaac
+    member_id: 0x725251bd
+    member_id: 0xce6bf6aa
+    member_id: 0xd0c7ffe9
+    member_id: 0x304c3a6e
+    member_id: 0x34488f39
+    member_id: 0x0a35c819
+    member_id: 0x7f88e152
+    member_id: 0x364ab1f7
+    member_id: 0xec1d03ea
+    member_id: 0xb9877618
+    member_id: 0x2d0811cb
+  }
+}
+struct_union {
+  id: 0x78d3f191
+  kind: STRUCT
+  name: "request_desc_header"
+  definition {
+    bytesize: 16
+    member_id: 0x301130d9
+    member_id: 0x72518106
+    member_id: 0xb292c82c
+    member_id: 0xecd329ca
+  }
+}
+struct_union {
+  id: 0x0f49179e
+  kind: STRUCT
+  name: "request_queue"
+  definition {
+    bytesize: 1160
+    member_id: 0xbdffd021
+    member_id: 0x4a002120
+    member_id: 0xc5c43282
+    member_id: 0xb95138f6
+    member_id: 0x887ded26
+    member_id: 0x2e391992
+    member_id: 0x05686343
+    member_id: 0x728cf19a
+    member_id: 0x4a9127b4
+    member_id: 0x2980aa26
+    member_id: 0xcf8fd0aa
+    member_id: 0xe2023ea8
+    member_id: 0x8ec53b22
+    member_id: 0xcc480bd0
+    member_id: 0x16818d5e
+    member_id: 0x6071a686
+    member_id: 0x452b2d1a
+    member_id: 0x93bdc08d
+    member_id: 0xce3bbb6d
+    member_id: 0x82287aae
+    member_id: 0x9e262dce
+    member_id: 0x6ca431a2
+    member_id: 0x5497e671
+    member_id: 0x035ef70e
+    member_id: 0xdd46fda5
+    member_id: 0x1d3546d0
+    member_id: 0xf8632325
+    member_id: 0xf66947a0
+    member_id: 0x541118c6
+    member_id: 0xbe8dc770
+    member_id: 0x95ba9b60
+    member_id: 0x621e2dc9
+    member_id: 0xe00c5617
+    member_id: 0x939567e0
+    member_id: 0xab5b3588
+    member_id: 0xa5c1426d
+    member_id: 0x5d70184d
+    member_id: 0x4dc025a8
+    member_id: 0x0f122bde
+    member_id: 0x1a7edbeb
+    member_id: 0xeec50ace
+    member_id: 0xaa806a41
+    member_id: 0x37a61301
+    member_id: 0x9df338b5
+    member_id: 0x3451ff36
+    member_id: 0xcd0e1ab3
+    member_id: 0xed3c173f
+    member_id: 0x4cc6292e
+    member_id: 0x5ad5289c
+    member_id: 0x56a72714
+    member_id: 0x893ed3d1
+    member_id: 0x26f964ef
+    member_id: 0x7d2da924
+    member_id: 0x0de00aa5
+    member_id: 0xd7cdcfc0
+    member_id: 0x35a0a1d5
+    member_id: 0x19335e74
+    member_id: 0x4e3f6f3b
+    member_id: 0x1120fdc2
+    member_id: 0x1302a5da
+    member_id: 0xd671c0e5
+    member_id: 0x2d081ecd
+    member_id: 0x63760b0c
+    member_id: 0xac894774
+    member_id: 0xe0f635ee
+    member_id: 0x2bc1da59
+  }
+}
+struct_union {
+  id: 0xb4510cf7
+  kind: STRUCT
+  name: "request_sock"
+  definition {
+    bytesize: 248
+    member_id: 0x44af06da
+    member_id: 0xb0cc3d9b
+    member_id: 0xf3997936
+    member_id: 0x8286d165
+    member_id: 0x30806371
+    member_id: 0x86248cac
+    member_id: 0x851fe0bd
+    member_id: 0xa0a10c3a
+    member_id: 0x1e9f7def
+    member_id: 0x828c8e90
+    member_id: 0x72f4c281
+    member_id: 0xe377cd7e
+    member_id: 0xc65c3855
+    member_id: 0x540a8d22
+  }
+}
+struct_union {
+  id: 0xb65d6f6d
+  kind: STRUCT
+  name: "request_sock_ops"
+  definition {
+    bytesize: 64
+    member_id: 0x9e3288ce
+    member_id: 0x852fa9e4
+    member_id: 0xe0e48cc4
+    member_id: 0x24847519
+    member_id: 0xe53f0bca
+    member_id: 0x300665d2
+    member_id: 0xff03dded
+    member_id: 0xa416e7ab
+    member_id: 0xd072e4b9
+  }
+}
+struct_union {
+  id: 0x85641a49
+  kind: STRUCT
+  name: "reserved_mem"
+  definition {
+    bytesize: 56
+    member_id: 0x0de57ce8
+    member_id: 0x2b3d381e
+    member_id: 0xdb5ad525
+    member_id: 0xafb79c37
+    member_id: 0x85673fa9
+    member_id: 0xd9c3ca3c
+    member_id: 0x59119933
+  }
+}
+struct_union {
+  id: 0x1001f639
+  kind: STRUCT
+  name: "reserved_mem_ops"
+  definition {
+    bytesize: 16
+    member_id: 0x4f2a634f
+    member_id: 0x58ac7a9e
+  }
+}
+struct_union {
+  id: 0x8a0d5fb1
+  kind: STRUCT
+  name: "reset_control"
+  definition {
+    bytesize: 48
+    member_id: 0x88eea875
+    member_id: 0x7c00ebb3
+    member_id: 0xcc6aa13e
+    member_id: 0xb714c4e6
+    member_id: 0xa95e659c
+    member_id: 0x3bf8d2ab
+    member_id: 0xdfcad7c4
+    member_id: 0x0c2c0b05
+    member_id: 0xd7035ac8
+  }
+}
+struct_union {
+  id: 0xa5289ef2
+  kind: STRUCT
+  name: "reset_control_bulk_data"
+  definition {
+    bytesize: 16
+    member_id: 0xcc113c24
+    member_id: 0x795263d6
+  }
+}
+struct_union {
+  id: 0x34bdcf99
+  kind: STRUCT
+  name: "reset_control_ops"
+  definition {
+    bytesize: 32
+    member_id: 0x62924365
+    member_id: 0xe50c7216
+    member_id: 0x45801629
+    member_id: 0x2048c261
+  }
+}
+struct_union {
+  id: 0xa1d6f6c0
+  kind: STRUCT
+  name: "reset_controller_dev"
+  definition {
+    bytesize: 88
+    member_id: 0xafb5df3d
+    member_id: 0x4a9656b1
+    member_id: 0x7c00e690
+    member_id: 0xb154573d
+    member_id: 0xce3bbb21
+    member_id: 0xf7c3f536
+    member_id: 0x4368c0a6
+    member_id: 0x4a7ec101
+    member_id: 0x4ab59ebd
+  }
+}
+struct_union {
+  id: 0xc7736674
+  kind: STRUCT
+  name: "resource"
+  definition {
+    bytesize: 96
+    member_id: 0x468e5625
+    member_id: 0x829a3ae8
+    member_id: 0x0de5752a
+    member_id: 0x2d5bf9f3
+    member_id: 0x87e9580e
+    member_id: 0x720a39dd
+    member_id: 0xeed93e03
+    member_id: 0x38f3bfe5
+    member_id: 0x2d081e2a
+    member_id: 0x637600d0
+    member_id: 0xac894f2f
+    member_id: 0xe0f63676
+  }
+}
+struct_union {
+  id: 0xc4e323c9
+  kind: STRUCT
+  name: "resource_table"
+  definition {
+    bytesize: 16
+    member_id: 0xefac5339
+    member_id: 0x1cff4aa5
+    member_id: 0xd43d43d1
+    member_id: 0x9beaae82
+  }
+}
+struct_union {
+  id: 0x922075d2
+  kind: STRUCT
+  name: "restart_block"
+  definition {
+    bytesize: 56
+    member_id: 0xa98605e2
+    member_id: 0xf7b6525c
+    member_id: 0x3b09e1df
+  }
+}
+struct_union {
+  id: 0x19fdc34f
+  kind: STRUCT
+  name: "return_instance"
+  definition {
+    bytesize: 48
+    member_id: 0xb97a7d68
+    member_id: 0x213ca033
+    member_id: 0xbfcdce1e
+    member_id: 0x376bb83b
+    member_id: 0x3e2779de
+    member_id: 0x11ffe851
+  }
+}
+struct_union {
+  id: 0x343f38db
+  kind: STRUCT
+  name: "rfkill"
+  definition {
+    bytesize: 1296
+    member_id: 0x2d1fec85
+    member_id: 0x5c41fc08
+    member_id: 0x72c08d84
+    member_id: 0x6dbede14
+    member_id: 0x3c4ef8c5
+    member_id: 0x51372f38
+    member_id: 0x21b08dd3
+    member_id: 0x511cea61
+    member_id: 0xff765c39
+    member_id: 0xafb1995f
+    member_id: 0xff8a9ece
+    member_id: 0x0358f080
+    member_id: 0xb54a0f84
+    member_id: 0xce1acc3f
+    member_id: 0x0fa6ccc6
+    member_id: 0x3702eb4b
+    member_id: 0x7f8f8e21
+    member_id: 0x998dc09e
+    member_id: 0x0d1148db
+  }
+}
+struct_union {
+  id: 0x70d15e47
+  kind: STRUCT
+  name: "rfkill_ops"
+  definition {
+    bytesize: 24
+    member_id: 0x5e1b9abc
+    member_id: 0x8cd1b597
+    member_id: 0x19324de4
+  }
+}
+struct_union {
+  id: 0x80bff031
+  kind: STRUCT
+  name: "rhash_head"
+  definition {
+    bytesize: 8
+    member_id: 0x11d9bf1a
+  }
+}
+struct_union {
+  id: 0x5d38ddbe
+  kind: STRUCT
+  name: "rhash_lock_head"
+  definition {
+  }
+}
+struct_union {
+  id: 0x674028f7
+  kind: STRUCT
+  name: "rhashtable"
+  definition {
+    bytesize: 168
+    member_id: 0xedd1301c
+    member_id: 0x04ecb42e
+    member_id: 0x152e11eb
+    member_id: 0xa68849b8
+    member_id: 0xe3226e74
+    member_id: 0xb7f25d7e
+    member_id: 0xad8989a4
+    member_id: 0x2d1feaf8
+    member_id: 0xcb40d493
+  }
+}
+struct_union {
+  id: 0x5d3c1b59
+  kind: STRUCT
+  name: "rhashtable_compare_arg"
+  definition {
+    bytesize: 16
+    member_id: 0x5c160632
+    member_id: 0x206f115a
+  }
+}
+struct_union {
+  id: 0xf9d85a97
+  kind: STRUCT
+  name: "rhashtable_iter"
+  definition {
+    bytesize: 64
+    member_id: 0x5c160632
+    member_id: 0xa69bf5a0
+    member_id: 0x7cd87882
+    member_id: 0xf5e4c1c4
+    member_id: 0x6893e853
+    member_id: 0x62e9fbc4
+    member_id: 0x745c0fb5
+  }
+}
+struct_union {
+  id: 0x390efe6c
+  kind: STRUCT
+  name: "rhashtable_params"
+  definition {
+    bytesize: 40
+    member_id: 0xc531a02f
+    member_id: 0x043876a8
+    member_id: 0xe91897f5
+    member_id: 0x226ed7b2
+    member_id: 0xcfa9a3ac
+    member_id: 0x2fff43e1
+    member_id: 0xf1e86eba
+    member_id: 0x4f0ed235
+    member_id: 0x3ea61913
+    member_id: 0x5747216b
+  }
+}
+struct_union {
+  id: 0x4a97f393
+  kind: STRUCT
+  name: "rhashtable_walker"
+  definition {
+    bytesize: 24
+    member_id: 0x7c00ef52
+    member_id: 0xedd139de
+  }
+}
+struct_union {
+  id: 0x0718aa8b
+  kind: STRUCT
+  name: "rhlist_head"
+  definition {
+    bytesize: 16
+    member_id: 0xbc35a2dd
+    member_id: 0x11f8522d
+  }
+}
+struct_union {
+  id: 0xa83211ac
+  kind: STRUCT
+  name: "rhltable"
+  definition {
+    bytesize: 168
+    member_id: 0x5c620629
+  }
+}
+struct_union {
+  id: 0x29204afd
+  kind: STRUCT
+  name: "ring_buffer_event"
+  definition {
+    bytesize: 4
+    member_id: 0x7af05c61
+    member_id: 0x2ac72229
+    member_id: 0xdf51de32
+  }
+}
+struct_union {
+  id: 0xd5fe3622
+  kind: STRUCT
+  name: "ring_buffer_ext_cb"
+  definition {
+    bytesize: 16
+    member_id: 0xce936c6c
+    member_id: 0x3fc3a783
+  }
+}
+struct_union {
+  id: 0x6976b87f
+  kind: STRUCT
+  name: "ring_buffer_iter"
+  definition {
+    bytesize: 80
+    member_id: 0x8a56cb6c
+    member_id: 0xb569c884
+    member_id: 0xd2ef151a
+    member_id: 0x77aa8378
+    member_id: 0x75c2c8a1
+    member_id: 0xad7468a6
+    member_id: 0x1ca95e7f
+    member_id: 0x486511ce
+    member_id: 0x0a4f3353
+    member_id: 0xd27f7167
+  }
+}
+struct_union {
+  id: 0xb758af9d
+  kind: STRUCT
+  name: "ring_buffer_per_cpu"
+  definition {
+    bytesize: 496
+    member_id: 0x5161b0e6
+    member_id: 0x9fc7ddba
+    member_id: 0xd712613b
+    member_id: 0x33f3fc4f
+    member_id: 0x82e17373
+    member_id: 0x2d8f7b14
+    member_id: 0x5f5e64df
+    member_id: 0xcfa7c994
+    member_id: 0xe3b1b2b8
+    member_id: 0x054f9c19
+    member_id: 0x7874ec5e
+    member_id: 0x77aa80a9
+    member_id: 0xb71d422b
+    member_id: 0x1ca1bc7c
+    member_id: 0x0dcc5551
+    member_id: 0xc431d6f2
+    member_id: 0x7c2533b6
+    member_id: 0x98b1b235
+    member_id: 0x874cc7f4
+    member_id: 0xbe54c29b
+    member_id: 0x459593a0
+    member_id: 0x1482525b
+    member_id: 0xf5732422
+    member_id: 0x4b2cba89
+    member_id: 0xe6667780
+    member_id: 0xeb6d9f1f
+    member_id: 0x25777528
+    member_id: 0xf9521fd2
+    member_id: 0x12d4f89d
+    member_id: 0x15fdf59e
+    member_id: 0x486e2dc5
+    member_id: 0xc9e7fb97
+    member_id: 0x0a06727e
+    member_id: 0x90edb7b4
+    member_id: 0x06d9d888
+    member_id: 0x1ca958e6
+    member_id: 0x26b96116
+    member_id: 0xffaef1fc
+    member_id: 0xfe983ebb
+    member_id: 0x98f177e2
+    member_id: 0xedbbc538
+  }
+}
+struct_union {
+  id: 0x4e470864
+  kind: STRUCT
+  name: "rlimit"
+  definition {
+    bytesize: 16
+    member_id: 0x9588fa25
+    member_id: 0xc546fb05
+  }
+}
+struct_union {
+  id: 0x3ed351ff
+  kind: STRUCT
+  name: "rng_alg"
+  definition {
+    bytesize: 448
+    member_id: 0x339b742c
+    member_id: 0x221d31c9
+    member_id: 0xc51a7ec1
+    member_id: 0x6078f7cb
+    member_id: 0x85f3de85
+  }
+}
+struct_union {
+  id: 0x05c7db24
+  kind: STRUCT
+  name: "robust_list"
+  definition {
+    bytesize: 8
+    member_id: 0x11f8e110
+  }
+}
+struct_union {
+  id: 0xe15b420e
+  kind: STRUCT
+  name: "robust_list_head"
+  definition {
+    bytesize: 24
+    member_id: 0x7cd6e088
+    member_id: 0xda866af9
+    member_id: 0x73780674
+  }
+}
+struct_union {
+  id: 0x70755111
+  kind: STRUCT
+  name: "role_allow"
+  definition {
+    bytesize: 16
+    member_id: 0xc0218aaa
+    member_id: 0xa3831cac
+    member_id: 0x11e58953
+  }
+}
+struct_union {
+  id: 0xaeb84542
+  kind: STRUCT
+  name: "role_datum"
+  definition {
+    bytesize: 40
+    member_id: 0xa0c154ef
+    member_id: 0x41a916e7
+    member_id: 0xd2c2119f
+    member_id: 0xf4145cd8
+  }
+}
+struct_union {
+  id: 0xcecb0ebd
+  kind: STRUCT
+  name: "root_domain"
+  definition {
+    bytesize: 1864
+    member_id: 0x05f7cb61
+    member_id: 0x74a1e6d8
+    member_id: 0x95dacd96
+    member_id: 0x97e3f72a
+    member_id: 0x7ddbdd3f
+    member_id: 0x305446a2
+    member_id: 0x2b2449ce
+    member_id: 0x8151d716
+    member_id: 0xd38b4e37
+    member_id: 0xe8cf425a
+    member_id: 0x0c15d92b
+    member_id: 0xd6d6ec44
+    member_id: 0x9581d04a
+    member_id: 0xd132701d
+    member_id: 0x071ca31f
+    member_id: 0xae12a28a
+    member_id: 0x1147e128
+    member_id: 0xf46d4f65
+    member_id: 0xdd4e185d
+    member_id: 0x954a0e7b
+    member_id: 0xe360cb00
+    member_id: 0x672690f4
+    member_id: 0xed736442
+    member_id: 0x2d081d4f
+    member_id: 0x63760eb4
+    member_id: 0xac89465b
+    member_id: 0xe0f63c57
+  }
+}
+struct_union {
+  id: 0xbd6515b8
+  kind: STRUCT
+  name: "rpmsg_channel_info"
+  definition {
+    bytesize: 40
+    member_id: 0x0d81b30a
+    member_id: 0x44ff6285
+    member_id: 0xbb38a5d0
+  }
+}
+struct_union {
+  id: 0xbc9c1035
+  kind: STRUCT
+  name: "rpmsg_device"
+  definition {
+    bytesize: 992
+    member_id: 0xce1ac149
+    member_id: 0xccb0ba9e
+    member_id: 0x09f1fc0a
+    member_id: 0x44ff6c2b
+    member_id: 0xbb38a968
+    member_id: 0x86162104
+    member_id: 0xc31d0816
+    member_id: 0xb4f1f7cc
+    member_id: 0xafbcdef5
+  }
+}
+struct_union {
+  id: 0x9f9c8c2b
+  kind: STRUCT
+  name: "rpmsg_device_id"
+  definition {
+    bytesize: 40
+    member_id: 0x0d81b30a
+    member_id: 0x6d08aa33
+  }
+}
+struct_union {
+  id: 0xa4cdaf1d
+  kind: STRUCT
+  name: "rpmsg_device_ops"
+  definition {
+    bytesize: 40
+    member_id: 0x835b379d
+    member_id: 0xcb4ea02a
+    member_id: 0x0394a0b1
+    member_id: 0x986024a1
+    member_id: 0xc43dd881
+  }
+}
+struct_union {
+  id: 0xae77e31e
+  kind: STRUCT
+  name: "rpmsg_driver"
+  definition {
+    bytesize: 208
+    member_id: 0xb1ab1960
+    member_id: 0xc4f7a807
+    member_id: 0xd779af15
+    member_id: 0xb4af3703
+    member_id: 0x56ca47e4
+  }
+}
+struct_union {
+  id: 0xdf4d92db
+  kind: STRUCT
+  name: "rpmsg_endpoint"
+  definition {
+    bytesize: 96
+    member_id: 0x602447ba
+    member_id: 0x05ec00b3
+    member_id: 0x53f61219
+    member_id: 0x85882167
+    member_id: 0x24e4de3f
+    member_id: 0x59119ed8
+    member_id: 0xafb33ebc
+  }
+}
+struct_union {
+  id: 0x5a860f56
+  kind: STRUCT
+  name: "rpmsg_endpoint_ops"
+  definition {
+    bytesize: 72
+    member_id: 0x2f2fe86c
+    member_id: 0xe39d046e
+    member_id: 0x76f671bc
+    member_id: 0x1f8b80c7
+    member_id: 0x937ac73c
+    member_id: 0x5563d857
+    member_id: 0x4f1292d7
+    member_id: 0x5e14d9f2
+    member_id: 0x13d4f19e
+  }
+}
+struct_union {
+  id: 0x8d58e470
+  kind: STRUCT
+  name: "rproc"
+  definition {
+    bytesize: 1448
+    member_id: 0x0fa6c6af
+    member_id: 0xa72fed64
+    member_id: 0x0de57421
+    member_id: 0x9c5c45b0
+    member_id: 0x59119f66
+    member_id: 0xaf9730e8
+    member_id: 0xce1ac63e
+    member_id: 0xa97d8e56
+    member_id: 0x72b671c8
+    member_id: 0x29edb505
+    member_id: 0x2d4b3ace
+    member_id: 0xdd406d35
+    member_id: 0x06968d67
+    member_id: 0xea8868ea
+    member_id: 0x97355ee3
+    member_id: 0x4971df2a
+    member_id: 0x3596f0aa
+    member_id: 0xb1650641
+    member_id: 0xc5006abf
+    member_id: 0x813be465
+    member_id: 0xad5e2b81
+    member_id: 0xedefbe2b
+    member_id: 0x2b54aafe
+    member_id: 0xe75c7f73
+    member_id: 0x20fe5264
+    member_id: 0xff6245b9
+    member_id: 0x21497d95
+    member_id: 0x54c27d56
+    member_id: 0xaecc14c6
+    member_id: 0x7b74bdb9
+    member_id: 0x5fd282b8
+    member_id: 0x3a43a3e4
+    member_id: 0xc82958b0
+    member_id: 0x205a36d1
+    member_id: 0x8525586f
+    member_id: 0xf59eaa00
+    member_id: 0x05c97885
+    member_id: 0x98bfd53b
+    member_id: 0xc5a16345
+  }
+}
+struct_union {
+  id: 0x6d35f6f5
+  kind: STRUCT
+  name: "rproc_dump_segment"
+  definition {
+    bytesize: 56
+    member_id: 0x0fa6c6af
+    member_id: 0x1124c3bf
+    member_id: 0xd98a21d3
+    member_id: 0x5911980a
+    member_id: 0x0a5f5371
+    member_id: 0x9b3b7a90
+  }
+}
+struct_union {
+  id: 0x42f11aa4
+  kind: STRUCT
+  name: "rproc_mem_entry"
+  definition {
+    bytesize: 128
+    member_id: 0x1829b0c6
+    member_id: 0x25db6745
+    member_id: 0x811afaf5
+    member_id: 0xb8f1e8f7
+    member_id: 0x110dece9
+    member_id: 0x59119f66
+    member_id: 0x0d81b298
+    member_id: 0x0fa6c0d6
+    member_id: 0x35736461
+    member_id: 0x2da18312
+    member_id: 0xc4aa6713
+    member_id: 0x45c3c732
+    member_id: 0xaeb78c25
+  }
+}
+struct_union {
+  id: 0x5a8780f1
+  kind: STRUCT
+  name: "rproc_ops"
+  definition {
+    bytesize: 136
+    member_id: 0x3d55c573
+    member_id: 0xc6d6bb37
+    member_id: 0x463456f3
+    member_id: 0x69a71ef4
+    member_id: 0x961ac72a
+    member_id: 0x0e0ab710
+    member_id: 0x1b4576bf
+    member_id: 0xcbe0aa41
+    member_id: 0x74a87cb3
+    member_id: 0x98764b70
+    member_id: 0x3d2c3bd2
+    member_id: 0x51575a50
+    member_id: 0x0e07eb43
+    member_id: 0x6ce8bf12
+    member_id: 0xd9eaaef2
+    member_id: 0x616a797d
+    member_id: 0x459cc3f0
+  }
+}
+struct_union {
+  id: 0x990caa3e
+  kind: STRUCT
+  name: "rproc_subdev"
+  definition {
+    bytesize: 48
+    member_id: 0x0fa6c6af
+    member_id: 0x3d559de0
+    member_id: 0x463406a9
+    member_id: 0x69846c94
+    member_id: 0xc6f5af6c
+  }
+}
+struct_union {
+  id: 0x295e6e7f
+  kind: STRUCT
+  name: "rps_dev_flow"
+  definition {
+    bytesize: 8
+    member_id: 0x5197dd8a
+    member_id: 0xa39ad6e3
+    member_id: 0x7164a4fb
+  }
+}
+struct_union {
+  id: 0x8e48cd62
+  kind: STRUCT
+  name: "rps_dev_flow_table"
+  definition {
+    bytesize: 24
+    member_id: 0xa876ec4b
+    member_id: 0x95dacd96
+    member_id: 0x792ab242
+  }
+}
+struct_union {
+  id: 0x50805cb3
+  kind: STRUCT
+  name: "rps_map"
+  definition {
+    bytesize: 24
+    member_id: 0xb8405030
+    member_id: 0x95dacd96
+    member_id: 0xe7976327
+  }
+}
+struct_union {
+  id: 0x924a9b47
+  kind: STRUCT
+  name: "rq"
+  definition {
+    bytesize: 3840
+    member_id: 0x5f19e504
+    member_id: 0xd6367332
+    member_id: 0xeed48968
+    member_id: 0x698e14ba
+    member_id: 0x0078e4aa
+    member_id: 0x88e11269
+    member_id: 0xd6c83ff0
+    member_id: 0xb7ade5b8
+    member_id: 0x74a3a51a
+    member_id: 0xee54f547
+    member_id: 0x185fb497
+    member_id: 0xd57ac3a1
+    member_id: 0x4fb9e2cc
+    member_id: 0x464510a2
+    member_id: 0xde3c53a6
+    member_id: 0xc453ae53
+    member_id: 0x1e8862bc
+    member_id: 0x8dc8471a
+    member_id: 0x5718db2f
+    member_id: 0x69956674
+    member_id: 0x43a6c314
+    member_id: 0x79b1dc46
+    member_id: 0x7ce691f5
+    member_id: 0x455c2030
+    member_id: 0x9b86b60a
+    member_id: 0xe157d22b
+    member_id: 0x93f95db4
+    member_id: 0x6ae3dbb0
+    member_id: 0x82823fd0
+    member_id: 0xb0b7dd6b
+    member_id: 0xbc5fbc6b
+    member_id: 0xe5a57fdf
+    member_id: 0xaf70c450
+    member_id: 0x58ffe2b9
+    member_id: 0x6bca0440
+    member_id: 0xdd532fa4
+    member_id: 0xe41a4728
+    member_id: 0xfa8789a6
+    member_id: 0x7991c9b0
+    member_id: 0xbe7ada8f
+    member_id: 0x23a8176e
+    member_id: 0xf365cab6
+    member_id: 0xd7ea8fc6
+    member_id: 0x732856f5
+    member_id: 0xa866bd4c
+    member_id: 0xd64f6769
+    member_id: 0x5161bb06
+    member_id: 0x7d2533ba
+    member_id: 0x49c92b3b
+    member_id: 0x9f9132df
+    member_id: 0xf0001df5
+    member_id: 0x3b9f53ff
+    member_id: 0xe6582ece
+    member_id: 0xccf5fa83
+    member_id: 0x28fcb87d
+    member_id: 0x692e11ef
+    member_id: 0x4d54241b
+    member_id: 0x8394863c
+    member_id: 0x843ea001
+    member_id: 0x1eb22fc2
+    member_id: 0xf0cec3f3
+    member_id: 0xfa84d17c
+    member_id: 0x3a82a56f
+    member_id: 0x3ec0474f
+    member_id: 0xf1772459
+    member_id: 0xebb9ac97
+    member_id: 0x928f3aa8
+    member_id: 0x4a732b8a
+    member_id: 0x327e14af
+    member_id: 0xb1924092
+    member_id: 0x17e1de27
+    member_id: 0x87e6fe9b
+    member_id: 0x81e14318
+    member_id: 0x9555a840
+    member_id: 0x64ef54cb
+    member_id: 0xcf992773
+    member_id: 0x49bced4a
+    member_id: 0x643f7f82
+    member_id: 0xed73670e
+    member_id: 0xd68b5760
+    member_id: 0x2d081384
+    member_id: 0x63760aa1
+    member_id: 0xac894736
+    member_id: 0xe0f632f5
+  }
+}
+struct_union {
+  id: 0xdbcfcd34
+  kind: STRUCT
+  name: "rq_flags"
+  definition {
+    bytesize: 16
+    member_id: 0x2d5bf13a
+    member_id: 0x5845bc8a
+    member_id: 0x7ce69736
+  }
+}
+struct_union {
+  id: 0x7b19c8e5
+  kind: STRUCT
+  name: "rq_map_data"
+  definition {
+    bytesize: 24
+    member_id: 0x7841b9fe
+    member_id: 0x9b2fad41
+    member_id: 0xf64fa2f5
+    member_id: 0xecee4280
+    member_id: 0xbf71c2fe
+    member_id: 0xcad7e6ac
+  }
+}
+struct_union {
+  id: 0x5e142822
+  kind: STRUCT
+  name: "rq_qos"
+  definition {
+    bytesize: 40
+    member_id: 0xaf9319f9
+    member_id: 0xe97ba8af
+    member_id: 0xccfff7cf
+    member_id: 0x11ee1d25
+    member_id: 0x35a0a6c6
+  }
+}
+struct_union {
+  id: 0x4a258d46
+  kind: STRUCT
+  name: "rq_qos_ops"
+  definition {
+    bytesize: 88
+    member_id: 0xca52008f
+    member_id: 0xb2a68bad
+    member_id: 0x1bc20b6a
+    member_id: 0x3c46e3dc
+    member_id: 0xf277f5bf
+    member_id: 0x1d400b5c
+    member_id: 0x2aa20717
+    member_id: 0x200cc91f
+    member_id: 0x7793d104
+    member_id: 0x0d2f69d8
+    member_id: 0x055225e4
+  }
+}
+struct_union {
+  id: 0xdbc8b0ff
+  kind: STRUCT
+  name: "rt6_exception_bucket"
+  definition {
+    bytesize: 16
+    member_id: 0x1529960e
+    member_id: 0x1b032c3e
+  }
+}
+struct_union {
+  id: 0x7497d4d2
+  kind: STRUCT
+  name: "rt6_info"
+  definition {
+    bytesize: 240
+    member_id: 0xbb928e49
+    member_id: 0xff7d7857
+    member_id: 0xca59c5b9
+    member_id: 0x470759e6
+    member_id: 0xf5dc3c24
+    member_id: 0x7404bdcb
+    member_id: 0xd44858bd
+    member_id: 0x1b5b8c97
+    member_id: 0xf81423ef
+    member_id: 0xe5248a71
+    member_id: 0xa4439ff0
+    member_id: 0x2d081e2f
+  }
+}
+struct_union {
+  id: 0x2adf9592
+  kind: STRUCT
+  name: "rt6_statistics"
+  definition {
+    bytesize: 24
+    member_id: 0xeb30799c
+    member_id: 0x8ab8249c
+    member_id: 0x6ac6d26b
+    member_id: 0x06778c54
+    member_id: 0x8271e1f2
+    member_id: 0xd1d4f7b2
+  }
+}
+struct_union {
+  id: 0xebdf1fd0
+  kind: STRUCT
+  name: "rt6key"
+  definition {
+    bytesize: 20
+    member_id: 0x2440fa86
+    member_id: 0xacd4ccce
+  }
+}
+struct_union {
+  id: 0xf7998f6d
+  kind: STRUCT
+  name: "rt_mutex"
+  definition {
+    bytesize: 32
+    member_id: 0xc43c3b53
+  }
+}
+struct_union {
+  id: 0x6a0f9ac9
+  kind: STRUCT
+  name: "rt_mutex_base"
+  definition {
+    bytesize: 32
+    member_id: 0xebe277d2
+    member_id: 0x934fcd9a
+    member_id: 0x4a8064ec
+  }
+}
+struct_union {
+  id: 0xb512109a
+  kind: STRUCT
+  name: "rt_mutex_waiter"
+  definition {
+    bytesize: 88
+    member_id: 0x1ef3f83f
+    member_id: 0x2b74ba72
+    member_id: 0x9c3a2295
+    member_id: 0x2dfcebca
+    member_id: 0xf0919aa1
+    member_id: 0xa9b53984
+    member_id: 0xd066a6b1
+    member_id: 0x3190e7f7
+  }
+}
+struct_union {
+  id: 0x45ae5b04
+  kind: STRUCT
+  name: "rt_prio_array"
+  definition {
+    bytesize: 1616
+    member_id: 0x89278ed4
+    member_id: 0xad68f0f7
+  }
+}
+struct_union {
+  id: 0x3426fcf0
+  kind: STRUCT
+  name: "rt_rq"
+  definition {
+    bytesize: 1696
+    member_id: 0x2267f08f
+    member_id: 0x481de2e5
+    member_id: 0xf254d9f5
+    member_id: 0x8aa37a29
+    member_id: 0x36765121
+    member_id: 0x4f368141
+    member_id: 0x9b3e66dc
+    member_id: 0x04e46363
+    member_id: 0xced34f4f
+    member_id: 0xfc5c587b
+    member_id: 0x25430d4b
+    member_id: 0x503a1618
+    member_id: 0x71e12499
+  }
+}
+struct_union {
+  id: 0x6e8aaa6e
+  kind: STRUCT
+  name: "rtable"
+  definition {
+    bytesize: 176
+    member_id: 0xbb928e49
+    member_id: 0x30e09f20
+    member_id: 0xa132ae06
+    member_id: 0xb8cdb685
+    member_id: 0x72a27798
+    member_id: 0xe1a2be7c
+    member_id: 0x5600c7e5
+    member_id: 0x8f90190b
+    member_id: 0x3c05c887
+    member_id: 0x0916635f
+    member_id: 0x65ee9e37
+    member_id: 0x78220857
+    member_id: 0x1cb4e6a1
+  }
+}
+struct_union {
+  id: 0x4a2ccda9
+  kind: STRUCT
+  name: "rtattr"
+  definition {
+    bytesize: 4
+    member_id: 0x8d372bc5
+    member_id: 0xe663dafa
+  }
+}
+struct_union {
+  id: 0x12527a54
+  kind: STRUCT
+  name: "rtc_class_ops"
+  definition {
+    bytesize: 96
+    member_id: 0x4d49cdbf
+    member_id: 0xa21fa507
+    member_id: 0x6a35d0ba
+    member_id: 0xf9d6e92c
+    member_id: 0xfaec49ee
+    member_id: 0x972bae37
+    member_id: 0x60b1b6c0
+    member_id: 0x3735cfab
+    member_id: 0x9ae1c7c4
+    member_id: 0x3dc8f1db
+    member_id: 0x282a3d0d
+    member_id: 0x2d08170f
+  }
+}
+struct_union {
+  id: 0xb9c9c211
+  kind: STRUCT
+  name: "rtc_device"
+  definition {
+    bytesize: 1520
+    member_id: 0xce1ac149
+    member_id: 0x4a9658d4
+    member_id: 0xcc480d0a
+    member_id: 0xafb7bdd4
+    member_id: 0x5d38f1ad
+    member_id: 0xfdbbc663
+    member_id: 0x2d5bf732
+    member_id: 0x7191382d
+    member_id: 0x8ca9364f
+    member_id: 0x2833a9d5
+    member_id: 0xc017ae41
+    member_id: 0xc5acf896
+    member_id: 0xa4b8740d
+    member_id: 0x603067fa
+    member_id: 0x81cbc424
+    member_id: 0xe5f707ce
+    member_id: 0x9f521997
+    member_id: 0x90ab80d0
+    member_id: 0x42b06a27
+    member_id: 0x6a056539
+    member_id: 0xc5a16600
+    member_id: 0x5445db9e
+    member_id: 0xd0535f73
+    member_id: 0xb352d0ff
+    member_id: 0x2b4a89bd
+    member_id: 0x8c2b6d64
+    member_id: 0x2d08193e
+  }
+}
+struct_union {
+  id: 0x8e1130cb
+  kind: STRUCT
+  name: "rtc_param"
+  definition {
+    bytesize: 24
+    member_id: 0xb5513ba1
+    member_id: 0x3f7ffccd
+    member_id: 0xaddf2fc2
+    member_id: 0xe51e511b
+  }
+}
+struct_union {
+  id: 0xf419f1fe
+  kind: STRUCT
+  name: "rtc_time"
+  definition {
+    bytesize: 36
+    member_id: 0x29641bf2
+    member_id: 0xc759cf05
+    member_id: 0x8f144bb3
+    member_id: 0xe8b129bc
+    member_id: 0xe72dc2c9
+    member_id: 0xd99e8133
+    member_id: 0xf9443474
+    member_id: 0xd854a9ba
+    member_id: 0xad1569fe
+  }
+}
+struct_union {
+  id: 0x3050a963
+  kind: STRUCT
+  name: "rtc_timer"
+  definition {
+    bytesize: 64
+    member_id: 0x0f4eedc8
+    member_id: 0xff60941f
+    member_id: 0x21032e78
+    member_id: 0xe06b5dfe
+    member_id: 0x3a276647
+  }
+}
+struct_union {
+  id: 0x4bab5dfd
+  kind: STRUCT
+  name: "rtc_wkalrm"
+  definition {
+    bytesize: 40
+    member_id: 0x3a1dc0b6
+    member_id: 0xf992ce19
+    member_id: 0x74171992
+  }
+}
+struct_union {
+  id: 0x4d4c6e96
+  kind: STRUCT
+  name: "rtnl_hw_stats64"
+  definition {
+    bytesize: 72
+    member_id: 0x6a4eba4a
+    member_id: 0x92d853cf
+    member_id: 0xe8021494
+    member_id: 0xb5918977
+    member_id: 0x8fdb89b6
+    member_id: 0x6441cdfa
+    member_id: 0x2b149926
+    member_id: 0xb78b6448
+    member_id: 0xc47d77fc
+  }
+}
+struct_union {
+  id: 0xeef394e6
+  kind: STRUCT
+  name: "rtnl_link_ops"
+  definition {
+    bytesize: 208
+    member_id: 0x7c00ef52
+    member_id: 0xd7351556
+    member_id: 0x982acb28
+    member_id: 0x45d92b5a
+    member_id: 0x84c4d659
+    member_id: 0x035c5fee
+    member_id: 0x32c64e99
+    member_id: 0x60d356d3
+    member_id: 0x2a11168f
+    member_id: 0x4a43cc8b
+    member_id: 0xf28ed126
+    member_id: 0xb362d7b2
+    member_id: 0xb75fe6a4
+    member_id: 0x7fc74744
+    member_id: 0xed667463
+    member_id: 0xe7d2782d
+    member_id: 0x05867e05
+    member_id: 0x8449505a
+    member_id: 0x05dac90b
+    member_id: 0x9575c62e
+    member_id: 0x1fdc7100
+    member_id: 0xb02b5dc5
+    member_id: 0x0687957a
+    member_id: 0x2097a37c
+    member_id: 0xf784051e
+    member_id: 0x7205c2eb
+  }
+}
+struct_union {
+  id: 0x2c14fa3a
+  kind: STRUCT
+  name: "rtnl_link_stats64"
+  definition {
+    bytesize: 200
+    member_id: 0x6a4eba4a
+    member_id: 0x92d853cf
+    member_id: 0xe8021494
+    member_id: 0xb5918977
+    member_id: 0x8fdb89b6
+    member_id: 0x6441cdfa
+    member_id: 0x2b149926
+    member_id: 0xb78b6448
+    member_id: 0xc47d77fc
+    member_id: 0xcc8a00f1
+    member_id: 0xca35fbec
+    member_id: 0x65bf65a0
+    member_id: 0xdd8d89ea
+    member_id: 0xe7ed6032
+    member_id: 0xbcaa5198
+    member_id: 0x19705936
+    member_id: 0x485eae99
+    member_id: 0xa8ab4e0d
+    member_id: 0x9f8f47fd
+    member_id: 0x415301ca
+    member_id: 0xa17f46b3
+    member_id: 0x8cd097c0
+    member_id: 0x03e71e9b
+    member_id: 0x8efb9db8
+    member_id: 0x92162365
+  }
+}
+struct_union {
+  id: 0x28b9ec9a
+  kind: STRUCT
+  name: "rw_semaphore"
+  definition {
+    bytesize: 64
+    member_id: 0x659574f1
+    member_id: 0x4a2d5a58
+    member_id: 0x27281226
+    member_id: 0xebe27a32
+    member_id: 0x46d7c52d
+    member_id: 0xed70026b
+    member_id: 0xd6abc5c0
+  }
+}
+struct_union {
+  id: 0x34cf4fc9
+  kind: STRUCT
+  name: "rwsem_waiter"
+  definition {
+    bytesize: 48
+    member_id: 0x7c00ef52
+    member_id: 0x9c3a2ac5
+    member_id: 0x5c90d4fc
+    member_id: 0x54f0f118
+    member_id: 0x85fded81
+  }
+}
+struct_union {
+  id: 0x536562de
+  kind: STRUCT
+  name: "s3_save"
+  definition {
+    bytesize: 48
+    member_id: 0x9187749d
+    member_id: 0x10607605
+    member_id: 0x0f4c2404
+    member_id: 0x67409233
+    member_id: 0x74c90e0f
+    member_id: 0xc3423640
+    member_id: 0x35becfda
+    member_id: 0x1e6122f6
+    member_id: 0x50e487f5
+  }
+}
+struct_union {
+  id: 0x1deb8a5f
+  kind: UNION
+  name: "salt"
+  definition {
+    bytesize: 12
+    member_id: 0x27d75559
+    member_id: 0x5ca8a9fd
+  }
+}
+struct_union {
+  id: 0xeadc8100
+  kind: STRUCT
+  name: "saved"
+  definition {
+    bytesize: 48
+    member_id: 0x55cf396d
+    member_id: 0x1def083c
+    member_id: 0x0de57c43
+    member_id: 0xfa598deb
+  }
+}
+struct_union {
+  id: 0x69597bf4
+  kind: STRUCT
+  name: "saved_syn"
+  definition {
+    bytesize: 12
+    member_id: 0x41dae600
+    member_id: 0xfc8747d2
+    member_id: 0x1e0430bf
+    member_id: 0xff5c437d
+  }
+}
+struct_union {
+  id: 0x4a46abb3
+  kind: STRUCT
+  name: "sb_writers"
+  definition {
+    bytesize: 320
+    member_id: 0xb8cc2142
+    member_id: 0x34198c7b
+    member_id: 0xc3766b4d
+  }
+}
+struct_union {
+  id: 0xa3189db3
+  kind: STRUCT
+  name: "sbitmap"
+  definition {
+    bytesize: 32
+    member_id: 0x1b218d6a
+    member_id: 0x3274483b
+    member_id: 0x847eff97
+    member_id: 0xd4cac89e
+    member_id: 0x8df87907
+    member_id: 0x8fa6244d
+  }
+}
+struct_union {
+  id: 0x61c9dd1a
+  kind: STRUCT
+  name: "sbitmap_queue"
+  definition {
+    bytesize: 64
+    member_id: 0x597655fc
+    member_id: 0x6cf4244f
+    member_id: 0xea6e4c7d
+    member_id: 0xa0695bac
+    member_id: 0x9b01420a
+    member_id: 0xf1475625
+    member_id: 0xa06e7da8
+    member_id: 0x5ed6ef19
+  }
+}
+struct_union {
+  id: 0x12452fd6
+  kind: STRUCT
+  name: "sbitmap_word"
+  definition {
+    bytesize: 128
+    member_id: 0x839470de
+    member_id: 0xf225f799
+  }
+}
+struct_union {
+  id: 0x2c37cb88
+  kind: STRUCT
+  name: "sbq_wait_state"
+  definition {
+    bytesize: 64
+    member_id: 0x202d9792
+  }
+}
+struct_union {
+  id: 0x6d7f0eb8
+  kind: STRUCT
+  name: "scatterlist"
+  definition {
+    bytesize: 32
+    member_id: 0xdb001408
+    member_id: 0x9b595d43
+    member_id: 0xb528eebd
+    member_id: 0x93dda3c8
+    member_id: 0xc58e6844
+  }
+}
+struct_union {
+  id: 0x52bb857d
+  kind: STRUCT
+  name: "sched_attr"
+  definition {
+    bytesize: 56
+    member_id: 0xd99832cd
+    member_id: 0x78436d6c
+    member_id: 0x630913d8
+    member_id: 0xb1b19fad
+    member_id: 0x24ac925a
+    member_id: 0x499e9d71
+    member_id: 0xf3d2c93c
+    member_id: 0x848a6070
+    member_id: 0xa51e1e2c
+    member_id: 0x30a7b077
+  }
+}
+struct_union {
+  id: 0xdb451e9a
+  kind: STRUCT
+  name: "sched_avg"
+  definition {
+    bytesize: 64
+    member_id: 0x56821ee1
+    member_id: 0x79446440
+    member_id: 0x5abf4f67
+    member_id: 0xc12a5418
+    member_id: 0xcf1c894e
+    member_id: 0xbc016328
+    member_id: 0xcf0bf05f
+    member_id: 0xbd0eb979
+    member_id: 0xa03e6e79
+  }
+}
+struct_union {
+  id: 0xdbda8385
+  kind: STRUCT
+  name: "sched_class"
+  definition {
+    bytesize: 216
+    member_id: 0x1bb50d20
+    member_id: 0x5a976025
+    member_id: 0x44b53fb0
+    member_id: 0x2bfee0bf
+    member_id: 0x857fc2c6
+    member_id: 0xf0380373
+    member_id: 0x35bb32d9
+    member_id: 0xc9a46e38
+    member_id: 0xe11aeaed
+    member_id: 0x45a7f04a
+    member_id: 0x1bf27a7b
+    member_id: 0xed047e32
+    member_id: 0xd1896a95
+    member_id: 0xcd43f02f
+    member_id: 0x47f4acb0
+    member_id: 0x5989d0ea
+    member_id: 0x1410b593
+    member_id: 0x556b4aa3
+    member_id: 0xa448a32a
+    member_id: 0x18e17d77
+    member_id: 0xd4492aeb
+    member_id: 0xc3e7232a
+    member_id: 0x3f3b41ea
+    member_id: 0x7446ee73
+    member_id: 0xa70c4267
+    member_id: 0x56b05005
+    member_id: 0x08a5f0a3
+  }
+}
+struct_union {
+  id: 0x0f61fb85
+  kind: STRUCT
+  name: "sched_dl_entity"
+  definition {
+    bytesize: 240
+    member_id: 0x230022a6
+    member_id: 0x45e7f049
+    member_id: 0xeaaeed05
+    member_id: 0x768a9be0
+    member_id: 0xe828d796
+    member_id: 0xef99326a
+    member_id: 0x29148356
+    member_id: 0xd066a6b1
+    member_id: 0x2d2d0741
+    member_id: 0xa4b04617
+    member_id: 0xd19c0196
+    member_id: 0xbf5cfb82
+    member_id: 0x9121e4f5
+    member_id: 0x372017ff
+    member_id: 0xda403e43
+    member_id: 0xca9329f5
+  }
+}
+struct_union {
+  id: 0x3aef82b0
+  kind: STRUCT
+  name: "sched_domain"
+  definition {
+    bytesize: 312
+    member_id: 0x72355923
+    member_id: 0x38ccdb4a
+    member_id: 0x93302fc5
+    member_id: 0x2954b84e
+    member_id: 0xe1d85e35
+    member_id: 0x32f213f2
+    member_id: 0x5e178238
+    member_id: 0xc81cf99a
+    member_id: 0x29fda9b7
+    member_id: 0x2b7c7936
+    member_id: 0x2d0fa53d
+    member_id: 0x86dde4d9
+    member_id: 0x9ac11ab7
+    member_id: 0xab9a8761
+    member_id: 0xbbabfea2
+    member_id: 0x4f305ba6
+    member_id: 0xbbca5df7
+    member_id: 0xaaa0430b
+    member_id: 0x5842e7db
+    member_id: 0xa91b8271
+    member_id: 0x5af11924
+    member_id: 0x9244f9cb
+    member_id: 0xb46d5432
+    member_id: 0x772bd845
+    member_id: 0xe5e36c99
+    member_id: 0x7da8b532
+    member_id: 0xaa638556
+    member_id: 0x451d8c76
+    member_id: 0x336c46f0
+    member_id: 0x218b0115
+    member_id: 0x479a228c
+    member_id: 0x5e0adb24
+    member_id: 0xe679a90c
+    member_id: 0xceeafb1e
+    member_id: 0xac4477ba
+    member_id: 0x156fe382
+    member_id: 0xceae490c
+    member_id: 0x6898fd37
+    member_id: 0x0ddfe839
+    member_id: 0x3f6beef1
+    member_id: 0x3bacfa29
+    member_id: 0xaaa96e27
+    member_id: 0x2d081c47
+    member_id: 0x63760c2a
+    member_id: 0x97b2d56d
+  }
+}
+struct_union {
+  id: 0xcf01bca1
+  kind: STRUCT
+  name: "sched_domain_shared"
+  definition {
+    bytesize: 24
+    member_id: 0xce6bf46e
+    member_id: 0x2ef857ba
+    member_id: 0x8aa30e2d
+    member_id: 0xe990ee46
+    member_id: 0xed700c6e
+  }
+}
+struct_union {
+  id: 0x0aef74e6
+  kind: STRUCT
+  name: "sched_entity"
+  definition {
+    bytesize: 320
+    member_id: 0x0e290c33
+    member_id: 0x970bccac
+    member_id: 0x9bfb9081
+    member_id: 0x742b0419
+    member_id: 0xba997698
+    member_id: 0x56d75cf5
+    member_id: 0x67894646
+    member_id: 0x221108cc
+    member_id: 0x0688be34
+    member_id: 0x1b032b65
+    member_id: 0x723953b8
+    member_id: 0xabbd00a4
+    member_id: 0x356f8eee
+    member_id: 0x552b7986
+    member_id: 0x0f961616
+    member_id: 0x2d0812b0
+    member_id: 0x637607e0
+    member_id: 0xac894cc9
+    member_id: 0xe0f63db8
+  }
+}
+struct_union {
+  id: 0xf79a6305
+  kind: STRUCT
+  name: "sched_group"
+  definition {
+    bytesize: 32
+    member_id: 0x11c4767e
+    member_id: 0xce6bf08f
+    member_id: 0x515cde67
+    member_id: 0x5d1a8055
+    member_id: 0x2059f065
+    member_id: 0x2d0fa7a9
+    member_id: 0x3dfda460
+  }
+}
+struct_union {
+  id: 0xd1c5cb7b
+  kind: STRUCT
+  name: "sched_group_capacity"
+  definition {
+    bytesize: 48
+    member_id: 0xce6bf46e
+    member_id: 0xa72dfd30
+    member_id: 0x603d49ac
+    member_id: 0x38693b32
+    member_id: 0x00e2ff47
+    member_id: 0x5e8c1465
+    member_id: 0xcc48081b
+    member_id: 0x3dfda559
+  }
+}
+struct_union {
+  id: 0x4d09650b
+  kind: STRUCT
+  name: "sched_info"
+  definition {
+    bytesize: 32
+    member_id: 0x581f8d4d
+    member_id: 0x67846ce9
+    member_id: 0x753fa389
+    member_id: 0x0e3da947
+  }
+}
+struct_union {
+  id: 0xf76211a5
+  kind: STRUCT
+  name: "sched_param"
+  definition {
+    bytesize: 4
+    member_id: 0x242d91d6
+  }
+}
+struct_union {
+  id: 0x6aee0185
+  kind: STRUCT
+  name: "sched_rt_entity"
+  definition {
+    bytesize: 80
+    member_id: 0x3815e40b
+    member_id: 0x54f0f871
+    member_id: 0xdfa57e84
+    member_id: 0x4940d15d
+    member_id: 0x74a7bcd0
+    member_id: 0x8d72c341
+    member_id: 0xcc435814
+    member_id: 0x2d0814a0
+    member_id: 0x63760ed5
+    member_id: 0xac89424e
+    member_id: 0xe0f63d39
+  }
+}
+struct_union {
+  id: 0x35f5ad19
+  kind: STRUCT
+  name: "sched_statistics"
+  definition {
+    bytesize: 256
+    member_id: 0x5f1a8cd1
+    member_id: 0xfdb5542d
+    member_id: 0xaf6418f7
+    member_id: 0xaa1a81b7
+    member_id: 0x1aef7561
+    member_id: 0x31f0acd0
+    member_id: 0xf832d515
+    member_id: 0xe803a131
+    member_id: 0x8064005e
+    member_id: 0xb034a057
+    member_id: 0x78f17176
+    member_id: 0x50665441
+    member_id: 0x64486323
+    member_id: 0x4b599beb
+    member_id: 0x1155b128
+    member_id: 0x3d31bfe2
+    member_id: 0x92a2da7d
+    member_id: 0x291d1c63
+    member_id: 0xfe440a25
+    member_id: 0xd52b9423
+    member_id: 0xef19c431
+    member_id: 0x3025ddaa
+    member_id: 0xc763bb70
+    member_id: 0x5bbea6f5
+    member_id: 0x2187018a
+    member_id: 0xd49caff3
+    member_id: 0x7d617a35
+    member_id: 0x176e9ff8
+  }
+}
+struct_union {
+  id: 0x5fb27b38
+  kind: STRUCT
+  name: "scmi_device"
+  definition {
+    bytesize: 944
+    member_id: 0xcce624ba
+    member_id: 0x02ed3eb0
+    member_id: 0x0de57809
+    member_id: 0xce1ac88b
+    member_id: 0xb8ca2234
+    member_id: 0x2d081124
+  }
+}
+struct_union {
+  id: 0xa8dadd1d
+  kind: STRUCT
+  name: "scmi_device_id"
+  definition {
+    bytesize: 16
+    member_id: 0x02ed338b
+    member_id: 0x0de57809
+  }
+}
+struct_union {
+  id: 0xe1f8fe60
+  kind: STRUCT
+  name: "scmi_driver"
+  definition {
+    bytesize: 208
+    member_id: 0x0de57ce8
+    member_id: 0xd77a201d
+    member_id: 0xb4acb89f
+    member_id: 0xc4f4d658
+    member_id: 0xd4ad4cc3
+  }
+}
+struct_union {
+  id: 0x5efaeb2e
+  kind: STRUCT
+  name: "scmi_event"
+  definition {
+    bytesize: 24
+    member_id: 0xcc0670e3
+    member_id: 0xc86da341
+    member_id: 0x10b66e39
+  }
+}
+struct_union {
+  id: 0xdfc89992
+  kind: STRUCT
+  name: "scmi_event_ops"
+  definition {
+    bytesize: 24
+    member_id: 0xcf1dfd83
+    member_id: 0x372bebe1
+    member_id: 0xf2b8f92e
+  }
+}
+struct_union {
+  id: 0x16e0bf9a
+  kind: STRUCT
+  name: "scmi_fc_db_info"
+  definition {
+    bytesize: 32
+    member_id: 0x0aeadad3
+    member_id: 0x3d4c6723
+    member_id: 0xa8a143dc
+    member_id: 0x24356aca
+  }
+}
+struct_union {
+  id: 0x8cac4a52
+  kind: STRUCT
+  name: "scmi_handle"
+  definition {
+    bytesize: 64
+    member_id: 0xce3bbab3
+    member_id: 0xa648fc2c
+    member_id: 0x9d8e8b56
+    member_id: 0x438cdaee
+    member_id: 0x96f98d6d
+    member_id: 0xddfd3513
+    member_id: 0xdd919e40
+    member_id: 0x2d081245
+  }
+}
+struct_union {
+  id: 0x6d7d41d4
+  kind: STRUCT
+  name: "scmi_iterator_ops"
+  definition {
+    bytesize: 24
+    member_id: 0x751e0b52
+    member_id: 0x02e857e6
+    member_id: 0xccc4b7ef
+  }
+}
+struct_union {
+  id: 0x835ada6a
+  kind: STRUCT
+  name: "scmi_iterator_state"
+  definition {
+    bytesize: 40
+    member_id: 0xad9c0e13
+    member_id: 0xa119e0a2
+    member_id: 0xa51d67e6
+    member_id: 0x2e4e5452
+    member_id: 0x514eee33
+    member_id: 0x264eaddd
+    member_id: 0x5911980a
+  }
+}
+struct_union {
+  id: 0xa1571851
+  kind: STRUCT
+  name: "scmi_msg"
+  definition {
+    bytesize: 16
+    member_id: 0x9a037dbf
+    member_id: 0xb8f1e4df
+  }
+}
+struct_union {
+  id: 0x2c6930c3
+  kind: STRUCT
+  name: "scmi_msg_hdr"
+  definition {
+    bytesize: 16
+    member_id: 0xcc0670e3
+    member_id: 0x02ed386d
+    member_id: 0x5c7f87b2
+    member_id: 0xfa8d4fce
+    member_id: 0x20ae2b4e
+    member_id: 0x5d93d2aa
+  }
+}
+struct_union {
+  id: 0xdfae077a
+  kind: STRUCT
+  name: "scmi_notify_ops"
+  definition {
+    bytesize: 32
+    member_id: 0x314dcd25
+    member_id: 0x1fa57148
+    member_id: 0xbd289bca
+    member_id: 0x44c90196
+  }
+}
+struct_union {
+  id: 0xdd2098b1
+  kind: STRUCT
+  name: "scmi_proto_helpers_ops"
+  definition {
+    bytesize: 40
+    member_id: 0x6b1114e9
+    member_id: 0x00b2a40c
+    member_id: 0x224ce677
+    member_id: 0x15edb896
+    member_id: 0xbe23cb67
+  }
+}
+struct_union {
+  id: 0xf7b13a3e
+  kind: STRUCT
+  name: "scmi_protocol"
+  definition {
+    bytesize: 48
+    member_id: 0xccf96a60
+    member_id: 0x4a9656b1
+    member_id: 0x3c055709
+    member_id: 0x6b0d6a44
+    member_id: 0xafb21f1d
+    member_id: 0x11c1079f
+  }
+}
+struct_union {
+  id: 0x929ca626
+  kind: STRUCT
+  name: "scmi_protocol_events"
+  definition {
+    bytesize: 32
+    member_id: 0x6334960f
+    member_id: 0xafbb6c89
+    member_id: 0x6a9a7eaf
+    member_id: 0xaecf4dbd
+    member_id: 0xd6c0c4b3
+  }
+}
+struct_union {
+  id: 0x19adcb6c
+  kind: STRUCT
+  name: "scmi_protocol_handle"
+  definition {
+    bytesize: 40
+    member_id: 0xce3bbab3
+    member_id: 0x66082ad0
+    member_id: 0xe90d2c02
+    member_id: 0xcde93702
+    member_id: 0x5a0e21ce
+  }
+}
+struct_union {
+  id: 0x8d723929
+  kind: STRUCT
+  name: "scmi_revision_info"
+  definition {
+    bytesize: 44
+    member_id: 0x429aa006
+    member_id: 0x9f985881
+    member_id: 0x1c1fbbc8
+    member_id: 0x4b1eeeac
+    member_id: 0x63af1c68
+    member_id: 0x0b0b87f3
+    member_id: 0xe54bfd9f
+  }
+}
+struct_union {
+  id: 0x6c8a7cc4
+  kind: STRUCT
+  name: "scmi_xfer"
+  definition {
+    bytesize: 144
+    member_id: 0x872a7d1a
+    member_id: 0x2b087910
+    member_id: 0x6579de52
+    member_id: 0x6c511725
+    member_id: 0x1d70b9e3
+    member_id: 0xb4b6a5b9
+    member_id: 0xf9a2335b
+    member_id: 0x0f3caa25
+    member_id: 0x850ad82f
+    member_id: 0x60a5cfd7
+    member_id: 0x7294dbcd
+    member_id: 0x2d1fe5a4
+    member_id: 0x591195d7
+  }
+}
+struct_union {
+  id: 0x206c47aa
+  kind: STRUCT
+  name: "scmi_xfer_ops"
+  definition {
+    bytesize: 48
+    member_id: 0x88d1b3ba
+    member_id: 0x4b7b4670
+    member_id: 0x6b30e712
+    member_id: 0x1998e805
+    member_id: 0x4fd3f604
+    member_id: 0x87a2e798
+  }
+}
+struct_union {
+  id: 0xd412973b
+  kind: STRUCT
+  name: "scsi_cmnd"
+  definition {
+    bytesize: 376
+    member_id: 0xea1755d7
+    member_id: 0xd80ff95d
+    member_id: 0x872ff227
+    member_id: 0x95dacf0a
+    member_id: 0x2bf10965
+    member_id: 0xffe50295
+    member_id: 0xa9c091b7
+    member_id: 0x4f8c96e4
+    member_id: 0xcf3ce574
+    member_id: 0x2931e5fa
+    member_id: 0xae3e6aed
+    member_id: 0xde51ecf4
+    member_id: 0x4f0fe46e
+    member_id: 0xdb7340d8
+    member_id: 0x2c1c8ac0
+    member_id: 0x4f5a5772
+    member_id: 0x7cc6b54d
+    member_id: 0x92e49ac9
+    member_id: 0xd3f0097f
+    member_id: 0xe35fada3
+    member_id: 0x0b9f35f0
+    member_id: 0x771a41ab
+    member_id: 0x4001a833
+    member_id: 0x2d0fa105
+    member_id: 0x72c08d9c
+    member_id: 0x358ddfc1
+    member_id: 0x330142dc
+    member_id: 0x0748d0a5
+    member_id: 0x2d08160f
+    member_id: 0x637606c8
+    member_id: 0xac8947dd
+    member_id: 0xe0f63d10
+  }
+}
+struct_union {
+  id: 0x943374e3
+  kind: STRUCT
+  name: "scsi_data_buffer"
+  definition {
+    bytesize: 24
+    member_id: 0xb6c3e0b7
+    member_id: 0xb528eefc
+  }
+}
+struct_union {
+  id: 0xbfb4ac23
+  kind: STRUCT
+  name: "scsi_device"
+  definition {
+    bytesize: 2544
+    member_id: 0xb8e3fd19
+    member_id: 0xc7a8d656
+    member_id: 0xd9950200
+    member_id: 0xd9579a34
+    member_id: 0x7ebd9064
+    member_id: 0xe9d2e48d
+    member_id: 0x951f3ba3
+    member_id: 0x32991f3a
+    member_id: 0xbed83b91
+    member_id: 0x72004b43
+    member_id: 0xedbbde87
+    member_id: 0x560041f5
+    member_id: 0x644a32f0
+    member_id: 0xbeced76c
+    member_id: 0x3a581c18
+    member_id: 0x193d6790
+    member_id: 0xcc6aa72b
+    member_id: 0x4cf70e65
+    member_id: 0x92ce73e5
+    member_id: 0xa912102e
+    member_id: 0x173ce3ee
+    member_id: 0x33ae5724
+    member_id: 0x5c0b56d8
+    member_id: 0x581cb9a8
+    member_id: 0xbef28bc2
+    member_id: 0x99e4114f
+    member_id: 0xfa8094b6
+    member_id: 0x8268cabd
+    member_id: 0x7a50f19c
+    member_id: 0xdf748487
+    member_id: 0xd2241279
+    member_id: 0x051e5965
+    member_id: 0x34a88931
+    member_id: 0x76e8efbf
+    member_id: 0xb1292fc9
+    member_id: 0x1093c118
+    member_id: 0x51d360fb
+    member_id: 0x96108b56
+    member_id: 0x381e9f08
+    member_id: 0x73a984b7
+    member_id: 0xf34ef00c
+    member_id: 0x7130840c
+    member_id: 0xcd663e68
+    member_id: 0x9da75c05
+    member_id: 0x2841c5c3
+    member_id: 0x6ce5e69b
+    member_id: 0x1a18e027
+    member_id: 0xd6395374
+    member_id: 0xd783af78
+    member_id: 0x5bde5a2f
+    member_id: 0x69b2857e
+    member_id: 0x564576e9
+    member_id: 0x682dc718
+    member_id: 0x240c2a64
+    member_id: 0x59754f66
+    member_id: 0x7bd3cf41
+    member_id: 0x71ac426b
+    member_id: 0x74903218
+    member_id: 0x8d94163d
+    member_id: 0x7e425804
+    member_id: 0x806a2296
+    member_id: 0xe37dd9ad
+    member_id: 0x4638efb1
+    member_id: 0x7d76bf6a
+    member_id: 0x9a517161
+    member_id: 0xcd9ab313
+    member_id: 0x58168fb6
+    member_id: 0x1ccebffc
+    member_id: 0xac14ca9c
+    member_id: 0x42ee5074
+    member_id: 0xfd5407e6
+    member_id: 0x6350aef3
+    member_id: 0x3f69453e
+    member_id: 0x6621c0d3
+    member_id: 0xc4de146d
+    member_id: 0x2bff12fb
+    member_id: 0x02f7d82f
+    member_id: 0xf0355af8
+    member_id: 0xa3e97de0
+    member_id: 0x7f3ffc26
+    member_id: 0xc9763ac0
+    member_id: 0x7fde2439
+    member_id: 0xee383561
+    member_id: 0xb76eb22e
+    member_id: 0xd9eb441e
+    member_id: 0x37d32427
+    member_id: 0xa2393bc6
+    member_id: 0xdeaf70e9
+    member_id: 0x480acad7
+    member_id: 0x7bded600
+    member_id: 0xad3b1533
+    member_id: 0x645fc1ac
+    member_id: 0xdf08d03a
+    member_id: 0xe00832b6
+    member_id: 0x8d29a756
+    member_id: 0xda1cf3a6
+    member_id: 0xce528147
+    member_id: 0x4fd97d98
+    member_id: 0x3828b971
+    member_id: 0x4bff3b8c
+    member_id: 0x5a8c2ccc
+    member_id: 0x37b6b6f1
+    member_id: 0x61cf6b3e
+    member_id: 0x3522cf20
+    member_id: 0x5bc035f4
+    member_id: 0x78e47074
+    member_id: 0x374832f8
+    member_id: 0xf96a116e
+    member_id: 0x5703cbe9
+    member_id: 0xe856e7f5
+    member_id: 0x4df857e5
+    member_id: 0x2dbd041d
+    member_id: 0xe1e1cac3
+    member_id: 0xff1a115d
+    member_id: 0x03d4ab2a
+    member_id: 0x96f37465
+    member_id: 0x379818ca
+    member_id: 0x1d6f3496
+    member_id: 0x2d081f5d
+    member_id: 0x637604d1
+    member_id: 0xac894975
+    member_id: 0xe0f63842
+    member_id: 0x43fd7508
+  }
+}
+struct_union {
+  id: 0xea657c7f
+  kind: STRUCT
+  name: "scsi_device_handler"
+  definition {
+    bytesize: 88
+    member_id: 0x7c00ef52
+    member_id: 0x965f1ffc
+    member_id: 0x0de57421
+    member_id: 0x2bcb3610
+    member_id: 0x961a0bf7
+    member_id: 0x0e293cd8
+    member_id: 0xdcf4dd14
+    member_id: 0xb5fe7b0d
+    member_id: 0xaf1305cc
+    member_id: 0x1ac8d698
+  }
+}
+struct_union {
+  id: 0x95575131
+  kind: STRUCT
+  name: "scsi_exec_args"
+  definition {
+    bytesize: 40
+    member_id: 0x0dda740d
+    member_id: 0x771a4366
+    member_id: 0x5688258a
+    member_id: 0x88be070f
+    member_id: 0xe94f5bce
+    member_id: 0x01746af4
+  }
+}
+struct_union {
+  id: 0xe4ab49c8
+  kind: STRUCT
+  name: "scsi_host_template"
+  definition {
+    bytesize: 400
+    member_id: 0x4e81bc16
+    member_id: 0xaa971b00
+    member_id: 0x26f6edfc
+    member_id: 0x965f1ef7
+    member_id: 0x0de57c43
+    member_id: 0xcd737824
+    member_id: 0x4d4bbccf
+    member_id: 0x4a5604cd
+    member_id: 0x4d333531
+    member_id: 0x51eb1ae4
+    member_id: 0x3ac18339
+    member_id: 0xff8a293e
+    member_id: 0xf7d3f811
+    member_id: 0x45007cf9
+    member_id: 0x3a43c628
+    member_id: 0x937248c8
+    member_id: 0xfc783a92
+    member_id: 0xcadd48b8
+    member_id: 0x30229734
+    member_id: 0x694dae95
+    member_id: 0xccfe424f
+    member_id: 0x71d18ef9
+    member_id: 0x8c70199e
+    member_id: 0x630039a2
+    member_id: 0x87792617
+    member_id: 0xf5bb7fa5
+    member_id: 0xbb5a00f9
+    member_id: 0xfdaefa4e
+    member_id: 0xb10daf25
+    member_id: 0xb0e037fd
+    member_id: 0x4b90d295
+    member_id: 0x87cff5e1
+    member_id: 0x6f6f9e04
+    member_id: 0xf58f775c
+    member_id: 0x1149c296
+    member_id: 0x41e3cc61
+    member_id: 0xc33ad042
+    member_id: 0xd8f9fc00
+    member_id: 0xe5db58f5
+    member_id: 0x51f34762
+    member_id: 0x60f39e4d
+    member_id: 0x656a2711
+    member_id: 0xd60fe83c
+    member_id: 0x22230204
+    member_id: 0x34aa29cb
+    member_id: 0xb3d26169
+    member_id: 0x2e760103
+    member_id: 0xaec39793
+    member_id: 0x030a11d9
+    member_id: 0x5bcf27c2
+    member_id: 0x806a2c70
+    member_id: 0xfa2a890e
+    member_id: 0x51e36932
+    member_id: 0x5e72b4eb
+    member_id: 0xc88f6617
+    member_id: 0x0bdb8234
+    member_id: 0x95db197e
+    member_id: 0x2d081c69
+    member_id: 0x63760faa
+    member_id: 0xac8946c7
+    member_id: 0xe0f63d78
+  }
+}
+struct_union {
+  id: 0xae0345ef
+  kind: STRUCT
+  name: "scsi_lun"
+  definition {
+    bytesize: 8
+    member_id: 0x82e8f5ef
+  }
+}
+struct_union {
+  id: 0x04937ea2
+  kind: STRUCT
+  name: "scsi_sense_hdr"
+  definition {
+    bytesize: 8
+    member_id: 0xa7a0b5c6
+    member_id: 0xe02668b5
+    member_id: 0x33304170
+    member_id: 0x5a1e7550
+    member_id: 0x8ca9477e
+    member_id: 0xc2eec063
+    member_id: 0x032e4fc4
+    member_id: 0x69f61b6c
+  }
+}
+struct_union {
+  id: 0x4c1dfa6d
+  kind: STRUCT
+  name: "scsi_target"
+  definition {
+    bytesize: 1000
+    member_id: 0x0f30ed27
+    member_id: 0xd9950f23
+    member_id: 0x33ed5c11
+    member_id: 0xce1ac68e
+    member_id: 0xd36420aa
+    member_id: 0x4cf70b6b
+    member_id: 0xcc6aa7f2
+    member_id: 0x506dd939
+    member_id: 0x70b795c3
+    member_id: 0x88e273b6
+    member_id: 0xaa6a7d8e
+    member_id: 0xe5dfa714
+    member_id: 0xbd8f94ee
+    member_id: 0xa2d76a12
+    member_id: 0x41c16dc2
+    member_id: 0xcd032fd1
+    member_id: 0x581cb8e9
+    member_id: 0x72ebef8d
+    member_id: 0x33ae596c
+    member_id: 0x887c193a
+  }
+}
+struct_union {
+  id: 0xd061df55
+  kind: STRUCT
+  name: "scsi_transport_template"
+  definition {
+    bytesize: 352
+    member_id: 0x8c340ee7
+    member_id: 0x6b0b885d
+    member_id: 0xe2fb6df4
+    member_id: 0xdf775bab
+    member_id: 0x87bb0e2b
+    member_id: 0xd71c91d0
+    member_id: 0xf7c7530f
+    member_id: 0xde35441e
+    member_id: 0x5fd8f936
+    member_id: 0x0cf44151
+    member_id: 0xae8a02ed
+  }
+}
+struct_union {
+  id: 0x974e77ff
+  kind: STRUCT
+  name: "scsi_vpd"
+  definition {
+    bytesize: 24
+    member_id: 0x95dac977
+    member_id: 0xb862fc47
+    member_id: 0xff417057
+  }
+}
+struct_union {
+  id: 0xe4fe739b
+  kind: STRUCT
+  name: "sd_ext_reg"
+  definition {
+    bytesize: 8
+    member_id: 0x26d168ad
+    member_id: 0x322c8435
+    member_id: 0x9b8d9fc5
+    member_id: 0xd2335dc7
+    member_id: 0xae3c373d
+    member_id: 0xee3219f3
+  }
+}
+struct_union {
+  id: 0x73d992cf
+  kind: STRUCT
+  name: "sd_flow_limit"
+  definition {
+    bytesize: 272
+    member_id: 0x65b77cf7
+    member_id: 0x5e8c6d34
+    member_id: 0x50bcf84f
+    member_id: 0xa164e403
+    member_id: 0xffcf891b
+  }
+}
+struct_union {
+  id: 0x95350a7d
+  kind: STRUCT
+  name: "sd_scr"
+  definition {
+    bytesize: 6
+    member_id: 0xf202cbe0
+    member_id: 0xafea47a9
+    member_id: 0x46a4501a
+    member_id: 0x740d07fa
+    member_id: 0x8bd2d8e0
+    member_id: 0xc2100fe0
+  }
+}
+struct_union {
+  id: 0xced26d56
+  kind: STRUCT
+  name: "sd_ssr"
+  definition {
+    bytesize: 12
+    member_id: 0x139a7b25
+    member_id: 0xdf67c9a0
+    member_id: 0x6d44203a
+  }
+}
+struct_union {
+  id: 0xe7f64c31
+  kind: STRUCT
+  name: "sd_switch_caps"
+  definition {
+    bytesize: 20
+    member_id: 0x68d57ae8
+    member_id: 0xe73c3df2
+    member_id: 0xb8cbcbe6
+    member_id: 0x25a5b889
+    member_id: 0xefdbc803
+  }
+}
+struct_union {
+  id: 0xcfb4e430
+  kind: STRUCT
+  name: "sdhci_host"
+  definition {
+    bytesize: 1344
+    member_id: 0xcc4e42e2
+    member_id: 0x2a067c99
+    member_id: 0xe2744e54
+    member_id: 0x99159c24
+    member_id: 0xa8ccc093
+    member_id: 0x7d203628
+    member_id: 0x9a3a0d64
+    member_id: 0x9ad754da
+    member_id: 0x13733ee5
+    member_id: 0xafbeda4b
+    member_id: 0xfed3cf4a
+    member_id: 0xd2373134
+    member_id: 0x4db078fa
+    member_id: 0x236f4dab
+    member_id: 0xb6a1dcbb
+    member_id: 0x2d1fedba
+    member_id: 0x2d0fa7ad
+    member_id: 0xa624bdb0
+    member_id: 0xdf978ca6
+    member_id: 0xdee7c841
+    member_id: 0xbb3e1088
+    member_id: 0xb953c842
+    member_id: 0x458b8711
+    member_id: 0xc5a6f5ee
+    member_id: 0xe1f68161
+    member_id: 0xbea26762
+    member_id: 0x5ede75fd
+    member_id: 0x95afdab9
+    member_id: 0x96393c2c
+    member_id: 0x8c0336f4
+    member_id: 0x09f51326
+    member_id: 0xfe116e91
+    member_id: 0x45ea5e18
+    member_id: 0x7f18817a
+    member_id: 0x3c20aa8d
+    member_id: 0x1a3e7834
+    member_id: 0xdbff96da
+    member_id: 0x17c292e0
+    member_id: 0xff886f81
+    member_id: 0xd402f675
+    member_id: 0xe56b23aa
+    member_id: 0x4fded5f5
+    member_id: 0x621a802d
+    member_id: 0xacd234b7
+    member_id: 0xbc224fc4
+    member_id: 0x18c64942
+    member_id: 0x8dfc4474
+    member_id: 0x83ff8934
+    member_id: 0x275b6306
+    member_id: 0x5086642c
+    member_id: 0x1d980984
+    member_id: 0xfd6395d5
+    member_id: 0xc938c455
+    member_id: 0x2a809bef
+    member_id: 0x1dd1885d
+    member_id: 0x0d6b4488
+    member_id: 0x08e68298
+    member_id: 0xae8e9b70
+    member_id: 0x1f33dc7e
+    member_id: 0xf8629d43
+    member_id: 0x6bcd82f1
+    member_id: 0xb914cb9d
+    member_id: 0x4b8d0244
+    member_id: 0x9e7eeb5c
+    member_id: 0xe1406108
+    member_id: 0x2582d3cd
+    member_id: 0x37bf2dff
+    member_id: 0x1fb39a4a
+    member_id: 0x5a4af70d
+    member_id: 0xb465cbc3
+    member_id: 0x1b911aea
+    member_id: 0x5fa7ece8
+    member_id: 0xf9365273
+    member_id: 0x9d50bb82
+    member_id: 0xbf5252d5
+    member_id: 0x92c981e0
+    member_id: 0xbec38849
+    member_id: 0x94f72bd4
+    member_id: 0x0c3c6154
+    member_id: 0x45ba9eb3
+    member_id: 0x2d081ffd
+    member_id: 0x91a936f8
+  }
+}
+struct_union {
+  id: 0x845b277e
+  kind: STRUCT
+  name: "sdhci_ops"
+  definition {
+    bytesize: 248
+    member_id: 0x64c7d58e
+    member_id: 0x1cafcc11
+    member_id: 0xd37e2cfc
+    member_id: 0x64fd9972
+    member_id: 0x10a6114d
+    member_id: 0xeb7ced97
+    member_id: 0x30dcea44
+    member_id: 0x8086060a
+    member_id: 0x996a0ec6
+    member_id: 0x1709314e
+    member_id: 0xb9f589d3
+    member_id: 0x3c7d77d7
+    member_id: 0x833f2253
+    member_id: 0x5428b8dc
+    member_id: 0x98fbeba0
+    member_id: 0x05768432
+    member_id: 0xbfcab77b
+    member_id: 0x9c5127f1
+    member_id: 0x24c10ae3
+    member_id: 0x62b0a42c
+    member_id: 0xca284f14
+    member_id: 0x56663f41
+    member_id: 0xdb79b81d
+    member_id: 0xe100eb29
+    member_id: 0x354d0d6d
+    member_id: 0x2d4d4964
+    member_id: 0x657604fd
+    member_id: 0xca628fba
+    member_id: 0x80bdc513
+    member_id: 0xa92e0890
+    member_id: 0x2d0814ec
+  }
+}
+struct_union {
+  id: 0x834f5c57
+  kind: STRUCT
+  name: "sdhci_pltfm_data"
+  definition {
+    bytesize: 16
+    member_id: 0xafbed153
+    member_id: 0x2a067c99
+    member_id: 0xe2744e54
+  }
+}
+struct_union {
+  id: 0x3abcce84
+  kind: STRUCT
+  name: "sdio_cccr"
+  definition {
+    bytesize: 12
+    member_id: 0x2b7b0604
+    member_id: 0x9ad21d49
+    member_id: 0xfcd3aab9
+    member_id: 0x8294fd8d
+    member_id: 0x20460892
+    member_id: 0x214261e5
+    member_id: 0x15795ada
+    member_id: 0x3e7eba01
+    member_id: 0xe95444c9
+  }
+}
+struct_union {
+  id: 0xae13575f
+  kind: STRUCT
+  name: "sdio_cis"
+  definition {
+    bytesize: 12
+    member_id: 0x7aa7ddac
+    member_id: 0xeafb187a
+    member_id: 0x1df4f2f5
+    member_id: 0x6b1c06e2
+  }
+}
+struct_union {
+  id: 0x6b8e6272
+  kind: STRUCT
+  name: "sdio_device_id"
+  definition {
+    bytesize: 16
+    member_id: 0x86f2bb02
+    member_id: 0x7a86ee53
+    member_id: 0xeada26be
+    member_id: 0x6d08ae79
+  }
+}
+struct_union {
+  id: 0xd84f47eb
+  kind: STRUCT
+  name: "sdio_driver"
+  definition {
+    bytesize: 208
+    member_id: 0x0ddfefbb
+    member_id: 0xc4f8ef3b
+    member_id: 0xd77ae775
+    member_id: 0xb4ac48f3
+    member_id: 0xb1ab19cb
+  }
+}
+struct_union {
+  id: 0x63eb92ec
+  kind: STRUCT
+  name: "sdio_func"
+  definition {
+    bytesize: 992
+    member_id: 0x6cae1f95
+    member_id: 0xce1ac5a8
+    member_id: 0x4efebe61
+    member_id: 0x1c73c6c1
+    member_id: 0x861cd3d7
+    member_id: 0x7aa7d4a1
+    member_id: 0xeafb12d2
+    member_id: 0xdde27e0a
+    member_id: 0xb27b9f9b
+    member_id: 0x924e54b1
+    member_id: 0x72b67fcd
+    member_id: 0x1b65b640
+    member_id: 0x659b98c6
+    member_id: 0x398f59dc
+    member_id: 0x2da84642
+    member_id: 0xcd591a85
+    member_id: 0x93ee6b4c
+  }
+}
+struct_union {
+  id: 0x898898b9
+  kind: STRUCT
+  name: "sdio_func_tuple"
+  definition {
+    bytesize: 16
+    member_id: 0x11dbf2c0
+    member_id: 0x54bd61b0
+    member_id: 0xd9239156
+    member_id: 0xff41792b
+  }
+}
+struct_union {
+  id: 0x85314ac9
+  kind: STRUCT
+  name: "seccomp"
+  definition {
+    bytesize: 16
+    member_id: 0x87fa354d
+    member_id: 0x73c742ad
+    member_id: 0xa30a5671
+  }
+}
+struct_union {
+  id: 0x2d5d2fbd
+  kind: STRUCT
+  name: "seccomp_filter"
+  definition {
+    bytesize: 240
+    member_id: 0x9af0bed8
+    member_id: 0x850adde7
+    member_id: 0xc02c6bd1
+    member_id: 0x90a037f1
+    member_id: 0x3ba69f9d
+    member_id: 0xbd86bedb
+    member_id: 0x982b44f4
+    member_id: 0x39762e08
+    member_id: 0x5bdfa110
+    member_id: 0x4dfdaebc
+  }
+}
+struct_union {
+  id: 0xe91955ce
+  kind: STRUCT
+  name: "seg6_pernet_data"
+  definition {
+    bytesize: 56
+    member_id: 0x2d4b3c00
+    member_id: 0xa2420da1
+  }
+}
+struct_union {
+  id: 0xc8601982
+  kind: STRUCT
+  name: "selinux_avc"
+  definition {
+    bytesize: 6168
+    member_id: 0xac537364
+    member_id: 0x4133d93e
+  }
+}
+struct_union {
+  id: 0x4bc42bec
+  kind: STRUCT
+  name: "selinux_map"
+  definition {
+    bytesize: 16
+    member_id: 0x5dcf7d96
+    member_id: 0xd9ef552c
+  }
+}
+struct_union {
+  id: 0xbde6ed0a
+  kind: STRUCT
+  name: "selinux_mapping"
+  definition {
+    bytesize: 136
+    member_id: 0xa099117b
+    member_id: 0xbe3e9d70
+    member_id: 0xdb129b64
+  }
+}
+struct_union {
+  id: 0xf8edba3f
+  kind: STRUCT
+  name: "selinux_policy"
+  definition {
+    bytesize: 632
+    member_id: 0x71a9d2d2
+    member_id: 0xbb7445e4
+    member_id: 0x8dbdb056
+    member_id: 0xac824246
+  }
+}
+struct_union {
+  id: 0x383e783f
+  kind: STRUCT
+  name: "selinux_state"
+  definition {
+    bytesize: 136
+    member_id: 0x0eb6d2c5
+    member_id: 0x666c167f
+    member_id: 0xd56295db
+    member_id: 0x0d6726b0
+    member_id: 0x395a2e99
+    member_id: 0x6fc674e0
+    member_id: 0xd41c6df7
+    member_id: 0x8e288971
+    member_id: 0x0a770fbf
+    member_id: 0x60ddbc76
+    member_id: 0x478ff386
+  }
+}
+struct_union {
+  id: 0x6e3b7d7f
+  kind: STRUCT
+  name: "semaphore"
+  definition {
+    bytesize: 24
+    member_id: 0x2d244e18
+    member_id: 0x6560d799
+    member_id: 0x46d7c905
+  }
+}
+struct_union {
+  id: 0x33eb3ac5
+  kind: STRUCT
+  name: "seq_buf"
+  definition {
+    bytesize: 32
+    member_id: 0x33da883d
+    member_id: 0xd98a2dfb
+    member_id: 0xb8f1e9fc
+    member_id: 0x2498e0fa
+  }
+}
+struct_union {
+  id: 0x33d77c47
+  kind: STRUCT
+  name: "seq_file"
+  definition {
+    bytesize: 136
+    member_id: 0x9a1f433c
+    member_id: 0xd98a2dfb
+    member_id: 0xffaaceca
+    member_id: 0x65d16265
+    member_id: 0xace1880a
+    member_id: 0xad1ea8be
+    member_id: 0xef6a3ad0
+    member_id: 0x2d4b3b77
+    member_id: 0xf0cdfd52
+    member_id: 0xb32d7cad
+    member_id: 0xbfbed644
+    member_id: 0x917961ac
+  }
+}
+struct_union {
+  id: 0x2c196579
+  kind: STRUCT
+  name: "seq_operations"
+  definition {
+    bytesize: 32
+    member_id: 0x460463e2
+    member_id: 0x6986b673
+    member_id: 0x11ec425c
+    member_id: 0x0a538841
+  }
+}
+struct_union {
+  id: 0xe5e17f59
+  kind: STRUCT
+  name: "seqcount"
+  definition {
+    bytesize: 4
+    member_id: 0x00cbec99
+  }
+}
+struct_union {
+  id: 0xd3efa1da
+  kind: STRUCT
+  name: "seqcount_raw_spinlock"
+  definition {
+    bytesize: 4
+    member_id: 0x0849df30
+  }
+}
+struct_union {
+  id: 0x39db9027
+  kind: STRUCT
+  name: "seqcount_spinlock"
+  definition {
+    bytesize: 4
+    member_id: 0x0849df30
+  }
+}
+struct_union {
+  id: 0x7d4ec147
+  kind: STRUCT
+  name: "serdev_controller"
+  definition {
+    bytesize: 936
+    member_id: 0xce1ac149
+    member_id: 0xd1e7bafc
+    member_id: 0x27263dd7
+    member_id: 0xafbf3a8e
+  }
+}
+struct_union {
+  id: 0x9a27d833
+  kind: STRUCT
+  name: "serdev_controller_ops"
+  definition {
+    bytesize: 88
+    member_id: 0xc3927f09
+    member_id: 0x879d4a8f
+    member_id: 0xb0995196
+    member_id: 0xad982535
+    member_id: 0xcd7c1df7
+    member_id: 0xce7991af
+    member_id: 0x80b3275d
+    member_id: 0xb4f82616
+    member_id: 0x691e4bbe
+    member_id: 0xb99ca7cf
+    member_id: 0x75703398
+  }
+}
+struct_union {
+  id: 0xc4c9605c
+  kind: STRUCT
+  name: "serdev_device"
+  definition {
+    bytesize: 1016
+    member_id: 0xce1ac149
+    member_id: 0xd1c51f49
+    member_id: 0x699bc979
+    member_id: 0xafbf6da2
+    member_id: 0x75a61196
+    member_id: 0x3b7c6234
+  }
+}
+struct_union {
+  id: 0x6f625c99
+  kind: STRUCT
+  name: "serdev_device_driver"
+  definition {
+    bytesize: 192
+    member_id: 0xd4ad4c68
+    member_id: 0xd7784be3
+    member_id: 0xb4aedbe1
+  }
+}
+struct_union {
+  id: 0x9f55132d
+  kind: STRUCT
+  name: "serdev_device_ops"
+  definition {
+    bytesize: 16
+    member_id: 0x6ac7532f
+    member_id: 0xa36b9776
+  }
+}
+struct_union {
+  id: 0x3c4a75b2
+  kind: STRUCT
+  name: "serial_icounter_struct"
+  definition {
+    bytesize: 80
+    member_id: 0x27be06b6
+    member_id: 0x3913e589
+    member_id: 0xddd94244
+    member_id: 0x518f96fa
+    member_id: 0x6c976eeb
+    member_id: 0x65bfacb0
+    member_id: 0x16107977
+    member_id: 0x45db2160
+    member_id: 0xd666f314
+    member_id: 0x56469cd2
+    member_id: 0x40000fa6
+    member_id: 0xd4d15398
+  }
+}
+struct_union {
+  id: 0xcc9e8a5e
+  kind: STRUCT
+  name: "serial_iso7816"
+  definition {
+    bytesize: 40
+    member_id: 0x2d8eaae1
+    member_id: 0x86755e72
+    member_id: 0xdb2908a4
+    member_id: 0xdfc75d73
+    member_id: 0xc833c104
+    member_id: 0xd4b3d61b
+  }
+}
+struct_union {
+  id: 0x33341885
+  kind: STRUCT
+  name: "serial_rs485"
+  definition {
+    bytesize: 32
+    member_id: 0x2d8eaae1
+    member_id: 0x89172632
+    member_id: 0xe2e47fe5
+    member_id: 0x30345aac
+  }
+}
+struct_union {
+  id: 0x40f95ea3
+  kind: STRUCT
+  name: "serial_struct"
+  definition {
+    bytesize: 72
+    member_id: 0x5c31f5ad
+    member_id: 0xdd5d93e6
+    member_id: 0x48be982a
+    member_id: 0x99159c65
+    member_id: 0x2d0fad4f
+    member_id: 0x413fe0a6
+    member_id: 0xdb1596d4
+    member_id: 0xd3c09bbc
+    member_id: 0xa72401bb
+    member_id: 0xb9b2029f
+    member_id: 0xaa963da5
+    member_id: 0x539eff1d
+    member_id: 0xf6799578
+    member_id: 0x254b3af6
+    member_id: 0x440adea8
+    member_id: 0x9e7a7e73
+    member_id: 0x01453404
+    member_id: 0xee320da7
+  }
+}
+struct_union {
+  id: 0x21931005
+  kind: STRUCT
+  name: "serio"
+  definition {
+    bytesize: 1304
+    member_id: 0x8323329c
+    member_id: 0x0d81b7eb
+    member_id: 0x30029134
+    member_id: 0xd6eb3ef5
+    member_id: 0x11bab798
+    member_id: 0xcc18347c
+    member_id: 0x2d1fefa9
+    member_id: 0x342d5118
+    member_id: 0xad9958f8
+    member_id: 0xcd7d6536
+    member_id: 0x4636edc0
+    member_id: 0x6986e1ba
+    member_id: 0x72338185
+    member_id: 0x19cde9e5
+    member_id: 0x257957bc
+    member_id: 0x1b21841f
+    member_id: 0xb141f30f
+    member_id: 0x0a3a8a02
+    member_id: 0xce1acfc2
+    member_id: 0x0fa6c3e5
+    member_id: 0x9355c01e
+    member_id: 0x2d081be5
+  }
+}
+struct_union {
+  id: 0x37145079
+  kind: STRUCT
+  name: "serio_device_id"
+  definition {
+    bytesize: 4
+    member_id: 0x5ce532c4
+    member_id: 0x50e885d1
+    member_id: 0xcc9cc595
+    member_id: 0x5dd02d6c
+  }
+}
+struct_union {
+  id: 0x0e869ad2
+  kind: STRUCT
+  name: "serio_driver"
+  definition {
+    bytesize: 264
+    member_id: 0x3144f518
+    member_id: 0xc4fd2698
+    member_id: 0x11bab7e2
+    member_id: 0xa3680e37
+    member_id: 0xdd4afb18
+    member_id: 0xbd413e41
+    member_id: 0x605def21
+    member_id: 0xd0fd5f6f
+    member_id: 0x8da522b5
+    member_id: 0x200d2ca5
+    member_id: 0xd4ad4a11
+    member_id: 0x2d0812b0
+  }
+}
+struct_union {
+  id: 0x284d4b46
+  kind: STRUCT
+  name: "sfp_bus"
+}
+struct_union {
+  id: 0x85c33988
+  kind: STRUCT
+  name: "sfp_eeprom_base"
+  definition {
+    bytesize: 64
+    member_id: 0xf35b99e7
+    member_id: 0xf07c14d3
+    member_id: 0xcf7a8c09
+    member_id: 0x688215e3
+    member_id: 0x76ed56ef
+    member_id: 0xaa36082d
+    member_id: 0x90b156bc
+    member_id: 0xe098277b
+    member_id: 0x1320a37b
+    member_id: 0xeae779c8
+    member_id: 0x9e22d9d5
+    member_id: 0x2a64de0d
+    member_id: 0x5b34f105
+    member_id: 0x968a3ee3
+    member_id: 0x3c678fa3
+    member_id: 0xff3c8659
+    member_id: 0x1be3ebb4
+    member_id: 0xfdc46c1e
+    member_id: 0x236d0025
+    member_id: 0x736f4c40
+    member_id: 0x42241c18
+    member_id: 0xe04d8d8d
+    member_id: 0x061443f2
+    member_id: 0xc7db7b1b
+    member_id: 0xb8c74403
+    member_id: 0x9d5d5e27
+    member_id: 0xe208a9c9
+    member_id: 0x9b3de412
+    member_id: 0x1311c4c0
+    member_id: 0x8d6d2188
+    member_id: 0xddd8f07c
+    member_id: 0x435ea61f
+    member_id: 0x4e671afe
+    member_id: 0x3e3c8bce
+    member_id: 0x59832ba9
+    member_id: 0xafa52b95
+    member_id: 0x3f830473
+    member_id: 0xa7b5560e
+    member_id: 0xe93a796f
+    member_id: 0xb37bde81
+    member_id: 0xea3da452
+    member_id: 0x1ea31862
+    member_id: 0x59e904ff
+    member_id: 0xa88dde5f
+    member_id: 0xeccd0904
+    member_id: 0xf4bf9113
+    member_id: 0x1db0f20b
+    member_id: 0xef4ae62a
+    member_id: 0x60f7452b
+    member_id: 0xfb701453
+    member_id: 0x8d208f17
+    member_id: 0x40e2095a
+    member_id: 0xdf2cd33c
+    member_id: 0xbe97137f
+    member_id: 0x4cdbd501
+    member_id: 0x09090110
+    member_id: 0x925cbcbe
+    member_id: 0x8236d690
+    member_id: 0xc8cee9f5
+    member_id: 0xa0439909
+    member_id: 0xe9842313
+    member_id: 0xfd9828d4
+    member_id: 0xeb60a483
+    member_id: 0x4c601a7a
+    member_id: 0x6dad8c1e
+    member_id: 0x3c5327ec
+    member_id: 0x1164cbd9
+    member_id: 0x6a9bb431
+    member_id: 0xbf5108bb
+    member_id: 0x830e78aa
+    member_id: 0x302a5d27
+    member_id: 0x4c1baf7d
+    member_id: 0x63e94fbc
+    member_id: 0xfd44cde8
+    member_id: 0x24e04a13
+    member_id: 0xd3926a7e
+    member_id: 0x37c98b2e
+    member_id: 0xa74b5053
+    member_id: 0xb695e7ed
+  }
+}
+struct_union {
+  id: 0xc6b28f4f
+  kind: STRUCT
+  name: "sfp_eeprom_ext"
+  definition {
+    bytesize: 32
+    member_id: 0xd2461c0b
+    member_id: 0xa1900f15
+    member_id: 0x16d97d87
+    member_id: 0xa9bb8625
+    member_id: 0xe0d54692
+    member_id: 0xbd827e06
+    member_id: 0x5c4e7f13
+    member_id: 0x84e06666
+    member_id: 0x7008b922
+  }
+}
+struct_union {
+  id: 0xb8dc6abb
+  kind: STRUCT
+  name: "sfp_eeprom_id"
+  definition {
+    bytesize: 96
+    member_id: 0x855f2db2
+    member_id: 0x999aa4f3
+  }
+}
+struct_union {
+  id: 0x8b5d2b50
+  kind: STRUCT
+  name: "sfp_upstream_ops"
+  definition {
+    bytesize: 80
+    member_id: 0x963a9698
+    member_id: 0x0e2ae52f
+    member_id: 0x417d665e
+    member_id: 0xb4088308
+    member_id: 0xccd41f41
+    member_id: 0x96237943
+    member_id: 0xfaf17b39
+    member_id: 0x89e0cba4
+    member_id: 0xee1e8424
+    member_id: 0x7589247f
+  }
+}
+struct_union {
+  id: 0xac0d4f27
+  kind: STRUCT
+  name: "sg_dma_page_iter"
+  definition {
+    bytesize: 24
+    member_id: 0x85fdcbb5
+  }
+}
+struct_union {
+  id: 0x8a2b3e9d
+  kind: STRUCT
+  name: "sg_io_hdr"
+  definition {
+    bytesize: 88
+    member_id: 0x5f7feca4
+    member_id: 0x9ac4dd8c
+    member_id: 0xdbe7f439
+    member_id: 0x9afae69e
+    member_id: 0x295554bc
+    member_id: 0xdf573ef5
+    member_id: 0x30448525
+    member_id: 0x81136256
+    member_id: 0x920d0f6b
+    member_id: 0x54860676
+    member_id: 0x2d2d0561
+    member_id: 0xa9322d92
+    member_id: 0xecbbc55e
+    member_id: 0x203aadc9
+    member_id: 0x5e4bd206
+    member_id: 0xcb17f21b
+    member_id: 0xa49e8276
+    member_id: 0xedc7b540
+    member_id: 0x502787db
+    member_id: 0x01001bf3
+    member_id: 0xe034cb7a
+    member_id: 0xcd19806b
+  }
+}
+struct_union {
+  id: 0x246d581d
+  kind: STRUCT
+  name: "sg_io_v4"
+  definition {
+    bytesize: 160
+    member_id: 0xc0d27302
+    member_id: 0xdc396db4
+    member_id: 0x7e492b52
+    member_id: 0xc6bec639
+    member_id: 0xb61735c3
+    member_id: 0x828ba6ac
+    member_id: 0xbfd3c659
+    member_id: 0xf42fa8ae
+    member_id: 0x4da5696b
+    member_id: 0x32dc710e
+    member_id: 0x409a9cb6
+    member_id: 0x9c3663f5
+    member_id: 0x75edeb0e
+    member_id: 0x75eaad94
+    member_id: 0xaa5532aa
+    member_id: 0x032bb43a
+    member_id: 0x61391f09
+    member_id: 0x5425a855
+    member_id: 0x2d8ea426
+    member_id: 0xec4e8595
+    member_id: 0x8b74af20
+    member_id: 0x50089098
+    member_id: 0xd0af636a
+    member_id: 0x20e30432
+    member_id: 0x89243658
+    member_id: 0xcdba2d19
+    member_id: 0xe097674e
+    member_id: 0x7742509c
+    member_id: 0x3fc8f113
+    member_id: 0x99a4f9f9
+    member_id: 0x3a17233d
+    member_id: 0x946d8cd5
+    member_id: 0x64002912
+  }
+}
+struct_union {
+  id: 0xe2612112
+  kind: STRUCT
+  name: "sg_mapping_iter"
+  definition {
+    bytesize: 72
+    member_id: 0x320350ff
+    member_id: 0x243566e2
+    member_id: 0xb5995ef2
+    member_id: 0x9ce697a9
+    member_id: 0x6d889771
+    member_id: 0x4ba3f52c
+    member_id: 0x701327dc
+    member_id: 0xb84bd82e
+  }
+}
+struct_union {
+  id: 0x27253e64
+  kind: STRUCT
+  name: "sg_page_iter"
+  definition {
+    bytesize: 24
+    member_id: 0x9d8652e2
+    member_id: 0x2b5980ff
+    member_id: 0xd6544089
+    member_id: 0xd18542dd
+  }
+}
+struct_union {
+  id: 0x28d027d4
+  kind: STRUCT
+  name: "sg_table"
+  definition {
+    bytesize: 16
+    member_id: 0x6b7a2cb7
+    member_id: 0x962b90e3
+    member_id: 0x4e8c3d5f
+  }
+}
+struct_union {
+  id: 0x6c1beca0
+  kind: STRUCT
+  name: "shared_policy"
+  definition {
+  }
+}
+struct_union {
+  id: 0x1b1b6127
+  kind: STRUCT
+  name: "shash_alg"
+  definition {
+    bytesize: 576
+    member_id: 0x1ac78232
+    member_id: 0xd6886f0b
+    member_id: 0x6fd2b6e0
+    member_id: 0x7e491f35
+    member_id: 0x5f82a477
+    member_id: 0x24b8d418
+    member_id: 0x6f151f16
+    member_id: 0x177acdc5
+    member_id: 0x4a525181
+    member_id: 0x7c86a539
+    member_id: 0x2bac99e8
+    member_id: 0x9f7a3da5
+    member_id: 0x1b3dcac5
+    member_id: 0x85f3df7a
+  }
+}
+struct_union {
+  id: 0x07855656
+  kind: STRUCT
+  name: "shash_desc"
+  definition {
+    bytesize: 8
+    member_id: 0xacd9f989
+    member_id: 0x759069c8
+  }
+}
+struct_union {
+  id: 0x993d1b03
+  kind: STRUCT
+  name: "shmem_inode_info"
+  definition {
+    bytesize: 840
+    member_id: 0x2d1fec85
+    member_id: 0x232be5c0
+    member_id: 0x2d5bf5db
+    member_id: 0xc34f971c
+    member_id: 0x88ac4bf2
+    member_id: 0x5aeeb2c1
+    member_id: 0x89a152e5
+    member_id: 0x3ae15676
+    member_id: 0x608503c6
+    member_id: 0xb7f102d6
+    member_id: 0x698a5df0
+    member_id: 0x9829bbfd
+    member_id: 0x62129df4
+    member_id: 0x8851157c
+    member_id: 0xed700cd7
+  }
+}
+struct_union {
+  id: 0x394048de
+  kind: STRUCT
+  name: "shrink_control"
+  definition {
+    bytesize: 32
+    member_id: 0xa4a18724
+    member_id: 0x45d78ab8
+    member_id: 0xe951aec2
+    member_id: 0x1d5baf9e
+    member_id: 0xc76cfdee
+  }
+}
+struct_union {
+  id: 0xb4975242
+  kind: STRUCT
+  name: "shrinker"
+  definition {
+    bytesize: 64
+    member_id: 0xa5eec422
+    member_id: 0x096a2656
+    member_id: 0x4abf5b64
+    member_id: 0x82f62ea7
+    member_id: 0x2d2d021c
+    member_id: 0x7c00eff9
+    member_id: 0xcc480dd0
+    member_id: 0x244cde08
+  }
+}
+struct_union {
+  id: 0x071fdfa7
+  kind: STRUCT
+  name: "shrinker_info"
+  definition {
+    bytesize: 32
+    member_id: 0x95dac977
+    member_id: 0x244cd0bd
+    member_id: 0x8df0341e
+  }
+}
+struct_union {
+  id: 0x166c7a96
+  kind: STRUCT
+  name: "sidtab"
+  definition {
+    bytesize: 7208
+    member_id: 0xb97636cd
+    member_id: 0x65ec5744
+    member_id: 0xb5c7762e
+    member_id: 0xb8c67f5c
+    member_id: 0x2d1feee5
+    member_id: 0x10ef1bf4
+    member_id: 0xfb7d6571
+    member_id: 0x6847c1f3
+    member_id: 0xfa661c0d
+    member_id: 0x3ac44cab
+  }
+}
+struct_union {
+  id: 0x536fcdfa
+  kind: STRUCT
+  name: "sidtab_convert_params"
+  definition {
+    bytesize: 24
+    member_id: 0x21202e0b
+    member_id: 0x3423032e
+    member_id: 0xb3add302
+  }
+}
+struct_union {
+  id: 0xd79dd5b3
+  kind: STRUCT
+  name: "sidtab_entry"
+  definition {
+    bytesize: 104
+    member_id: 0x08fb4d67
+    member_id: 0x63f7869f
+    member_id: 0x41167d14
+    member_id: 0x3b4729d9
+    member_id: 0x7c9a825f
+  }
+}
+struct_union {
+  id: 0x4027b0c0
+  kind: UNION
+  name: "sidtab_entry_inner"
+  definition {
+    bytesize: 8
+    member_id: 0x1db8f0e1
+    member_id: 0xc0d22edd
+  }
+}
+struct_union {
+  id: 0x585c2d3c
+  kind: STRUCT
+  name: "sidtab_isid_entry"
+  definition {
+    bytesize: 112
+    member_id: 0x3db96022
+    member_id: 0x4d83d109
+  }
+}
+struct_union {
+  id: 0x0aaf9a0a
+  kind: STRUCT
+  name: "sidtab_node_inner"
+  definition {
+    bytesize: 4096
+    member_id: 0xbedcc7b7
+  }
+}
+struct_union {
+  id: 0x2ca85530
+  kind: STRUCT
+  name: "sidtab_node_leaf"
+  definition {
+    bytesize: 4056
+    member_id: 0xbe09c685
+  }
+}
+struct_union {
+  id: 0xcd921577
+  kind: STRUCT
+  name: "sidtab_str_cache"
+  definition {
+    bytesize: 48
+    member_id: 0xe2ce8a90
+    member_id: 0x7974d3dd
+    member_id: 0x720e051d
+    member_id: 0xb8ccdaba
+    member_id: 0x3afbe345
+  }
+}
+struct_union {
+  id: 0xff9dc6cd
+  kind: STRUCT
+  name: "sigaction"
+  definition {
+    bytesize: 32
+    member_id: 0xb230b13e
+    member_id: 0x1d75d0bb
+    member_id: 0x350b42d4
+    member_id: 0x8c6d2d46
+  }
+}
+struct_union {
+  id: 0xa85f08b1
+  kind: STRUCT
+  name: "sighand_struct"
+  definition {
+    bytesize: 2080
+    member_id: 0x7ad15371
+    member_id: 0x6582703e
+    member_id: 0xf72a7db5
+    member_id: 0xc046b22b
+  }
+}
+struct_union {
+  id: 0x2dd71fb4
+  kind: STRUCT
+  name: "signal_struct"
+  definition {
+    bytesize: 1128
+    member_id: 0x20a8b2d4
+    member_id: 0xf69a0093
+    member_id: 0xffcc6dd6
+    member_id: 0x625ab578
+    member_id: 0x46698f03
+    member_id: 0x40f00151
+    member_id: 0xe1b47aa6
+    member_id: 0x70e20f4a
+    member_id: 0x50925cfa
+    member_id: 0x5776ae51
+    member_id: 0xc13945f5
+    member_id: 0x732e360b
+    member_id: 0x69a3953c
+    member_id: 0x2d2d06aa
+    member_id: 0x5e89eea1
+    member_id: 0xcf3f1b2e
+    member_id: 0xd9407919
+    member_id: 0xe282a1a2
+    member_id: 0x30a0a7aa
+    member_id: 0x25756122
+    member_id: 0xe29ffb31
+    member_id: 0xd015d2ba
+    member_id: 0xf3711bd1
+    member_id: 0x051ec7b2
+    member_id: 0x76698440
+    member_id: 0x2929c07b
+    member_id: 0xc8f1b3a4
+    member_id: 0xa34e4618
+    member_id: 0x17f0d217
+    member_id: 0xd605d884
+    member_id: 0x59af93b2
+    member_id: 0xe2992f8a
+    member_id: 0xf5ed83e7
+    member_id: 0x1424892f
+    member_id: 0x5d91bec1
+    member_id: 0x7ec9d8d7
+    member_id: 0x2ef70390
+    member_id: 0x0c9b4335
+    member_id: 0xb42e0dd9
+    member_id: 0x0e7744ff
+    member_id: 0x779ea818
+    member_id: 0x53ef4dbe
+    member_id: 0xcb2b95fc
+    member_id: 0x3f843523
+    member_id: 0x4bd45279
+    member_id: 0x98cf754c
+    member_id: 0x89ac81ab
+    member_id: 0xf73481c1
+    member_id: 0x6af8282b
+    member_id: 0xa5e33ed7
+    member_id: 0x63f210eb
+    member_id: 0xa714212b
+    member_id: 0xef0151a4
+    member_id: 0xb948cf71
+    member_id: 0x5c6d0558
+    member_id: 0xb1a2a438
+    member_id: 0x97510416
+    member_id: 0x8af540e4
+    member_id: 0xd123612d
+    member_id: 0x3723dc05
+    member_id: 0xe5afa084
+    member_id: 0x99530108
+    member_id: 0x2d081971
+    member_id: 0x63760733
+    member_id: 0xac894182
+    member_id: 0xe0f63243
+  }
+}
+struct_union {
+  id: 0x9ec07527
+  kind: STRUCT
+  name: "sigpending"
+  definition {
+    bytesize: 24
+    member_id: 0x7c00ef52
+    member_id: 0x09eafce8
+  }
+}
+struct_union {
+  id: 0x23cef90c
+  kind: UNION
+  name: "sigval"
+  definition {
+    bytesize: 8
+    member_id: 0x86d3990a
+    member_id: 0x452d9f5e
+  }
+}
+struct_union {
+  id: 0x283919e1
+  kind: STRUCT
+  name: "simple_xattrs"
+  definition {
+    bytesize: 24
+    member_id: 0xb5897100
+    member_id: 0x2d1fe547
+  }
+}
+struct_union {
+  id: 0x97c17f3f
+  kind: STRUCT
+  name: "size_class"
+  definition {
+    bytesize: 136
+    member_id: 0x2d1fec85
+    member_id: 0xf667d80f
+    member_id: 0xd91935d3
+    member_id: 0x7a226550
+    member_id: 0x338646f2
+    member_id: 0xad7c8a98
+    member_id: 0xb91e0d04
+  }
+}
+struct_union {
+  id: 0x3f7d42f7
+  kind: STRUCT
+  name: "sk_buff"
+  definition {
+    bytesize: 248
+    member_id: 0x34366909
+    member_id: 0x3e5d0376
+    member_id: 0x318fd08b
+    member_id: 0x53e7b9ea
+    member_id: 0x345f6930
+    member_id: 0x6713c24e
+    member_id: 0xb8405a96
+    member_id: 0x73a3603c
+    member_id: 0xde6b3a29
+    member_id: 0x4fe13bd1
+    member_id: 0x4b4ff38e
+    member_id: 0x1937cd0c
+    member_id: 0xcf60e1c3
+    member_id: 0xcc86646d
+    member_id: 0x70d9ed1a
+    member_id: 0x16213c73
+    member_id: 0x9f51d5ee
+    member_id: 0x1ffe8e64
+    member_id: 0xa6c6116f
+    member_id: 0x626cc8bb
+    member_id: 0x345b12e5
+    member_id: 0xee1b858a
+    member_id: 0x828973a2
+    member_id: 0xb5474e48
+    member_id: 0xff8fd273
+    member_id: 0xfafe7861
+    member_id: 0x850ade35
+    member_id: 0x40970d29
+  }
+}
+struct_union {
+  id: 0x578f9c2b
+  kind: STRUCT
+  name: "sk_buff_head"
+  definition {
+    bytesize: 24
+    member_id: 0x343eab32
+    member_id: 0x9b74a670
+    member_id: 0x2d1fe165
+  }
+}
+struct_union {
+  id: 0xe6a87d74
+  kind: STRUCT
+  name: "sk_buff_list"
+  definition {
+    bytesize: 16
+    member_id: 0x11f64fb6
+    member_id: 0xbd823cfd
+  }
+}
+struct_union {
+  id: 0x1dbe4538
+  kind: STRUCT
+  name: "sk_filter"
+  definition {
+    bytesize: 32
+    member_id: 0xb7dcf8ac
+    member_id: 0x95dacd96
+    member_id: 0x982b4ef9
+  }
+}
+struct_union {
+  id: 0xbdae1466
+  kind: STRUCT
+  name: "sk_msg"
+  definition {
+    bytesize: 712
+    member_id: 0x9dd08ad9
+    member_id: 0xff8a933f
+    member_id: 0x496ed7fa
+    member_id: 0x893396e4
+    member_id: 0x71050590
+    member_id: 0x2da180ef
+    member_id: 0xb0b86045
+    member_id: 0xbca70c43
+    member_id: 0x828c830a
+    member_id: 0x7c00e7bc
+  }
+}
+struct_union {
+  id: 0x4717c167
+  kind: STRUCT
+  name: "sk_msg_sg"
+  definition {
+    bytesize: 640
+    member_id: 0x46d23b7b
+    member_id: 0x8d1c53d4
+    member_id: 0x82c657b6
+    member_id: 0xd9b71dda
+    member_id: 0xb5622c50
+    member_id: 0x297ece16
+    member_id: 0xff670d65
+  }
+}
+struct_union {
+  id: 0x4c4281ed
+  kind: STRUCT
+  name: "sk_psock"
+  definition {
+    bytesize: 472
+    member_id: 0x828c89b5
+    member_id: 0xbca70c75
+    member_id: 0x89339cbd
+    member_id: 0x7105015a
+    member_id: 0x9b60f7ce
+    member_id: 0x52d03a2d
+    member_id: 0xa64d7141
+    member_id: 0x5c46118a
+    member_id: 0x00275ba9
+    member_id: 0xb288c76d
+    member_id: 0xaa9f4733
+    member_id: 0x72c08196
+    member_id: 0x556d50f3
+    member_id: 0x2f57a9d5
+    member_id: 0xb7dcfa87
+    member_id: 0xdd03d972
+    member_id: 0xc6c2067e
+    member_id: 0xf18bd3bf
+    member_id: 0xd444f1ad
+    member_id: 0xa1a75ac9
+    member_id: 0x660e0826
+    member_id: 0xd95f8065
+    member_id: 0xd6e43b14
+    member_id: 0xaf49a3ae
+    member_id: 0xd60840ef
+    member_id: 0xa568765c
+  }
+}
+struct_union {
+  id: 0xcbe13559
+  kind: STRUCT
+  name: "sk_psock_progs"
+  definition {
+    bytesize: 32
+    member_id: 0x91e9d7fd
+    member_id: 0x90f74116
+    member_id: 0xe7162ce8
+    member_id: 0xa41a9a3d
+  }
+}
+struct_union {
+  id: 0x3979d367
+  kind: STRUCT
+  name: "sk_psock_work_state"
+  definition {
+    bytesize: 8
+    member_id: 0xb8ccdd7d
+    member_id: 0x8b1c3d04
+  }
+}
+struct_union {
+  id: 0xfcc22539
+  kind: STRUCT
+  name: "skb_ext"
+  definition {
+    bytesize: 8
+    member_id: 0xb7dcf8ac
+    member_id: 0x9ba34f05
+    member_id: 0xa9efa589
+    member_id: 0xff580adc
+  }
+}
+struct_union {
+  id: 0x326f872a
+  kind: STRUCT
+  name: "skb_shared_hwtstamps"
+  definition {
+    bytesize: 8
+    member_id: 0x3d830300
+  }
+}
+struct_union {
+  id: 0xdabf4001
+  kind: STRUCT
+  name: "skcipher_alg"
+  definition {
+    bytesize: 448
+    member_id: 0x177b7195
+    member_id: 0x893e7eb8
+    member_id: 0x70fa8381
+    member_id: 0x1ac7f968
+    member_id: 0x0d2e75d7
+    member_id: 0x2fb1edd2
+    member_id: 0xf058f4c8
+    member_id: 0x832017a6
+    member_id: 0x8c9ba691
+    member_id: 0xb500c36a
+    member_id: 0x85f3de85
+  }
+}
+struct_union {
+  id: 0x5a18785c
+  kind: STRUCT
+  name: "skcipher_request"
+  definition {
+    bytesize: 128
+    member_id: 0xc7060a35
+    member_id: 0x56d4cfd5
+    member_id: 0x4427ac3d
+    member_id: 0xbbe06e11
+    member_id: 0x85e1e328
+    member_id: 0x75906a36
+  }
+}
+struct_union {
+  id: 0x140795ac
+  kind: STRUCT
+  name: "slab"
+  definition {
+    bytesize: 64
+    member_id: 0xddf65eaa
+    member_id: 0x3c73293a
+    member_id: 0x031126d0
+    member_id: 0xf00079a7
+    member_id: 0x3f558b0b
+    member_id: 0x9086e58b
+    member_id: 0xa765e551
+    member_id: 0xbf75fe15
+  }
+}
+struct_union {
+  id: 0xc868bcf0
+  kind: STRUCT
+  name: "slabinfo"
+  definition {
+    bytesize: 64
+    member_id: 0x5adc2ffa
+    member_id: 0x9f316ffe
+    member_id: 0x0ea82549
+    member_id: 0x0fa9d5ad
+    member_id: 0x6046bc87
+    member_id: 0xa94f30b5
+    member_id: 0x6d47c90b
+    member_id: 0x3bd02778
+    member_id: 0x742b4b06
+    member_id: 0x0d231274
+  }
+}
+struct_union {
+  id: 0x7df9baf9
+  kind: STRUCT
+  name: "slcompress"
+  definition {
+    bytesize: 72
+    member_id: 0xcde7be64
+    member_id: 0x68dbed84
+    member_id: 0x25bdb98d
+    member_id: 0x94b16558
+    member_id: 0x5b2a8486
+    member_id: 0x90e05eee
+    member_id: 0x473bb9ee
+    member_id: 0x2de16f98
+    member_id: 0xb2f66e5e
+    member_id: 0x20397abd
+    member_id: 0x21cc5494
+    member_id: 0xeaa71f54
+    member_id: 0x6abcc473
+    member_id: 0x8dbaabdd
+    member_id: 0x92bee8df
+    member_id: 0x9b5520fa
+    member_id: 0x814d1d86
+    member_id: 0xd08c7061
+    member_id: 0x21781d41
+    member_id: 0x41b9f20b
+  }
+}
+struct_union {
+  id: 0xdb7bb2af
+  kind: STRUCT
+  name: "smc_hashinfo"
+}
+struct_union {
+  id: 0x6c8e86b4
+  kind: STRUCT
+  name: "snd_aes_iec958"
+  definition {
+    bytesize: 176
+    member_id: 0x2065db16
+    member_id: 0x3659eaf2
+    member_id: 0x6b8901f5
+    member_id: 0x092bc083
+  }
+}
+struct_union {
+  id: 0xe5a233b0
+  kind: STRUCT
+  name: "snd_card"
+  definition {
+    bytesize: 2680
+    member_id: 0xd9743972
+    member_id: 0xcc6d01b7
+    member_id: 0xd40cbfed
+    member_id: 0x3f389d8f
+    member_id: 0xe77d91bb
+    member_id: 0x5ea90e65
+    member_id: 0x91245448
+    member_id: 0xb081b38f
+    member_id: 0x965f1f0d
+    member_id: 0xf21ad80c
+    member_id: 0x567fc0e3
+    member_id: 0x33ed5398
+    member_id: 0x5673cda6
+    member_id: 0xc685feed
+    member_id: 0x2208bb24
+    member_id: 0x556afd8a
+    member_id: 0x69dc9e54
+    member_id: 0xc96b1b7e
+    member_id: 0x474fe3e5
+    member_id: 0x1033d956
+    member_id: 0xd8d9c596
+    member_id: 0x62766f25
+    member_id: 0x3867609b
+    member_id: 0x423982c7
+    member_id: 0xb8a06d33
+    member_id: 0x6753c78f
+    member_id: 0x481ae005
+    member_id: 0x0fd6db1c
+    member_id: 0x9e921ef2
+    member_id: 0x06fc76ed
+    member_id: 0xce3bb900
+    member_id: 0x1b8748fa
+    member_id: 0xf9d2bfb7
+    member_id: 0x5137216f
+    member_id: 0x3e80afef
+    member_id: 0x6b5c80f0
+    member_id: 0x78f95a52
+    member_id: 0x0525b4bd
+    member_id: 0xa1780a27
+    member_id: 0x45940c20
+    member_id: 0x6f584342
+    member_id: 0xd07fbc74
+    member_id: 0xd9fd2533
+    member_id: 0xf3f94adb
+    member_id: 0x2d081265
+    member_id: 0x637606cf
+  }
+}
+struct_union {
+  id: 0x1e7452a1
+  kind: STRUCT
+  name: "snd_codec"
+  definition {
+    bytesize: 120
+    member_id: 0xccc9022e
+    member_id: 0xd0edaa59
+    member_id: 0x668253fe
+    member_id: 0x7a708b10
+    member_id: 0x57af26e5
+    member_id: 0xfdf8bb55
+    member_id: 0xa1745671
+    member_id: 0x865ce289
+    member_id: 0x2054ca12
+    member_id: 0x08b179c8
+    member_id: 0x33075cab
+    member_id: 0xd2994b93
+    member_id: 0xd448e4ed
+  }
+}
+struct_union {
+  id: 0x9c143f30
+  kind: STRUCT
+  name: "snd_codec_desc"
+  definition {
+    bytesize: 348
+    member_id: 0x3fd19938
+    member_id: 0x23cb252f
+    member_id: 0xbcb6b731
+    member_id: 0x57244bc9
+    member_id: 0xd057c3f3
+    member_id: 0xfdf8bda3
+    member_id: 0xf895baee
+    member_id: 0x84a0ca09
+    member_id: 0x28a75289
+    member_id: 0xb9842fda
+    member_id: 0xd4acfe44
+  }
+}
+struct_union {
+  id: 0xaad72634
+  kind: UNION
+  name: "snd_codec_options"
+  definition {
+    bytesize: 64
+    member_id: 0xb8c4383f
+    member_id: 0x9272f8d8
+    member_id: 0x464757ea
+    member_id: 0x38c4a1e8
+    member_id: 0x420c3fb9
+    member_id: 0x8b435091
+    member_id: 0x58494c44
+    member_id: 0xa750b903
+    member_id: 0xaea74699
+  }
+}
+struct_union {
+  id: 0x8b664062
+  kind: STRUCT
+  name: "snd_compr"
+  definition {
+    bytesize: 1016
+    member_id: 0x0de57ce8
+    member_id: 0xce1ac5a8
+    member_id: 0xaf967574
+    member_id: 0xf21adb2e
+    member_id: 0x6c9f8613
+    member_id: 0xa0dd4280
+    member_id: 0x2d4b3aaa
+    member_id: 0xea5504f9
+    member_id: 0xe5fa91c6
+    member_id: 0x2d08125d
+  }
+}
+struct_union {
+  id: 0x9ba5cae2
+  kind: STRUCT
+  name: "snd_compr_caps"
+  definition {
+    bytesize: 196
+    member_id: 0x3566dfff
+    member_id: 0xa07eece8
+    member_id: 0x83177db4
+    member_id: 0x5540483b
+    member_id: 0xd3806cc2
+    member_id: 0x0731cf62
+    member_id: 0xf978d758
+    member_id: 0xd492d8f6
+  }
+}
+struct_union {
+  id: 0xc36b6dcd
+  kind: STRUCT
+  name: "snd_compr_codec_caps"
+  definition {
+    bytesize: 11144
+    member_id: 0xb819938f
+    member_id: 0x41ad9b12
+    member_id: 0xd6a3598f
+  }
+}
+struct_union {
+  id: 0x764877c2
+  kind: STRUCT
+  name: "snd_compr_metadata"
+  definition {
+    bytesize: 36
+    member_id: 0x20b02411
+    member_id: 0xa0d5e4d8
+  }
+}
+struct_union {
+  id: 0x5f929a2d
+  kind: STRUCT
+  name: "snd_compr_ops"
+  definition {
+    bytesize: 112
+    member_id: 0xad98df2e
+    member_id: 0xfe8e52d9
+    member_id: 0xaf10d80a
+    member_id: 0xacf6b6c0
+    member_id: 0x77de5711
+    member_id: 0xc2404f78
+    member_id: 0x35b30168
+    member_id: 0x690dc8c4
+    member_id: 0x29eb8c53
+    member_id: 0x87ff323d
+    member_id: 0x87f1dad5
+    member_id: 0xf181007e
+    member_id: 0x5a7570e7
+    member_id: 0x2d081688
+  }
+}
+struct_union {
+  id: 0x4334f3ba
+  kind: STRUCT
+  name: "snd_compr_params"
+  definition {
+    bytesize: 132
+    member_id: 0x335a61cc
+    member_id: 0xb8e1cd83
+    member_id: 0x3bf7d4c4
+  }
+}
+struct_union {
+  id: 0x49dc05f2
+  kind: STRUCT
+  name: "snd_compr_runtime"
+  definition {
+    bytesize: 128
+    member_id: 0x72e1f985
+    member_id: 0xaf9670dd
+    member_id: 0x33c6bf7c
+    member_id: 0x3086dd9e
+    member_id: 0x9ac67cee
+    member_id: 0x8f4de27e
+    member_id: 0x28980c42
+    member_id: 0xaa403ce9
+    member_id: 0xdb9e68f3
+    member_id: 0xf21ad145
+    member_id: 0x40414bb9
+    member_id: 0xfb57275f
+    member_id: 0xe342eebb
+    member_id: 0x1fa10880
+    member_id: 0x2d081dc1
+  }
+}
+struct_union {
+  id: 0x41fa510d
+  kind: STRUCT
+  name: "snd_compr_stream"
+  definition {
+    bytesize: 248
+    member_id: 0x0de57ce8
+    member_id: 0xaf9670dd
+    member_id: 0x29226925
+    member_id: 0xea1a69a5
+    member_id: 0xf528854b
+    member_id: 0xa0c61f9f
+    member_id: 0xfae2d2e9
+    member_id: 0x6cd9cff6
+    member_id: 0xe697de29
+    member_id: 0x83842b42
+    member_id: 0xf21ad5cf
+    member_id: 0x941cf969
+    member_id: 0x2d0814ec
+  }
+}
+struct_union {
+  id: 0x8d524175
+  kind: STRUCT
+  name: "snd_compr_tstamp"
+  definition {
+    bytesize: 20
+    member_id: 0x78351206
+    member_id: 0xec262afd
+    member_id: 0xd4aea65d
+    member_id: 0x1bbf4d02
+    member_id: 0xf6e5b6dd
+  }
+}
+struct_union {
+  id: 0x0e6ff7ef
+  kind: STRUCT
+  name: "snd_compress_ops"
+  definition {
+    bytesize: 104
+    member_id: 0xad987d52
+    member_id: 0xfe8ef0a5
+    member_id: 0xaf10618e
+    member_id: 0xacf61961
+    member_id: 0x77dee31f
+    member_id: 0xc240fb76
+    member_id: 0x35b3c246
+    member_id: 0x690d41e0
+    member_id: 0x29eb2553
+    member_id: 0x87ff9af3
+    member_id: 0x87f183df
+    member_id: 0xf1818cbc
+    member_id: 0x5a75eb75
+  }
+}
+struct_union {
+  id: 0x846a1700
+  kind: STRUCT
+  name: "snd_compressed_buffer"
+  definition {
+    bytesize: 8
+    member_id: 0x9ae95ad1
+    member_id: 0x8f62cd08
+  }
+}
+struct_union {
+  id: 0x05867ff1
+  kind: STRUCT
+  name: "snd_ctl_elem_id"
+  definition {
+    bytesize: 64
+    member_id: 0x0c3d5ffd
+    member_id: 0x81e47045
+    member_id: 0xea77a942
+    member_id: 0x7459ff2c
+    member_id: 0x0d273c21
+    member_id: 0xad7c8c69
+  }
+}
+struct_union {
+  id: 0x59ddc5eb
+  kind: STRUCT
+  name: "snd_ctl_elem_info"
+  definition {
+    bytesize: 272
+    member_id: 0xcc2aaaee
+    member_id: 0x5c988371
+    member_id: 0x6c497a76
+    member_id: 0x6560d3d0
+    member_id: 0x4aeb46f7
+    member_id: 0xa07ec19f
+    member_id: 0xd4476404
+  }
+}
+struct_union {
+  id: 0x7326cb99
+  kind: STRUCT
+  name: "snd_ctl_elem_value"
+  definition {
+    bytesize: 1224
+    member_id: 0xcc2aaaee
+    member_id: 0xcf285434
+    member_id: 0xa07ed8b5
+    member_id: 0xd45a2ed2
+  }
+}
+struct_union {
+  id: 0xef249147
+  kind: STRUCT
+  name: "snd_ctl_file"
+  definition {
+    bytesize: 104
+    member_id: 0x7c00ef52
+    member_id: 0x6c9f8bc7
+    member_id: 0x74912824
+    member_id: 0xf804e19d
+    member_id: 0x1f721569
+    member_id: 0x4a500d6a
+    member_id: 0xa3644d31
+    member_id: 0xd35a20a6
+    member_id: 0x112677ec
+  }
+}
+struct_union {
+  id: 0xca95e0dc
+  kind: STRUCT
+  name: "snd_dec_alac"
+  definition {
+    bytesize: 16
+    member_id: 0x4ce0c9a2
+    member_id: 0x02849372
+    member_id: 0xe537662a
+    member_id: 0x7a430b3c
+    member_id: 0x5638ee2c
+    member_id: 0xa02f9c03
+    member_id: 0xf9dbc45e
+  }
+}
+struct_union {
+  id: 0x28abbcf7
+  kind: STRUCT
+  name: "snd_dec_ape"
+  definition {
+    bytesize: 24
+    member_id: 0x02df7ab3
+    member_id: 0xd5a82d64
+    member_id: 0x6a5020ab
+    member_id: 0x0bf959cb
+    member_id: 0xd9177c13
+    member_id: 0x5d3c1feb
+    member_id: 0xebaa8c51
+  }
+}
+struct_union {
+  id: 0xbe23a657
+  kind: STRUCT
+  name: "snd_dec_flac"
+  definition {
+    bytesize: 12
+    member_id: 0xa329cde9
+    member_id: 0x8c6c82a3
+    member_id: 0x7ba79d09
+    member_id: 0x8da5b0bd
+    member_id: 0x96d82747
+    member_id: 0xd48baba6
+  }
+}
+struct_union {
+  id: 0xcf5f4bd8
+  kind: STRUCT
+  name: "snd_dec_wma"
+  definition {
+    bytesize: 16
+    member_id: 0x72d84882
+    member_id: 0xb2cd9d5d
+    member_id: 0x1e54b3af
+    member_id: 0xd4858b46
+  }
+}
+struct_union {
+  id: 0xe1b79909
+  kind: STRUCT
+  name: "snd_dma_buffer"
+  definition {
+    bytesize: 56
+    member_id: 0xcee162bb
+    member_id: 0xa6d82885
+    member_id: 0x24cdf1d9
+    member_id: 0x5cdad8df
+    member_id: 0xf21ad6ae
+  }
+}
+struct_union {
+  id: 0xd880f174
+  kind: STRUCT
+  name: "snd_dma_device"
+  definition {
+    bytesize: 24
+    member_id: 0x5c31f5ad
+    member_id: 0x2e3ba1a4
+    member_id: 0xfbc6aa7e
+    member_id: 0xce3bb371
+  }
+}
+struct_union {
+  id: 0xadc1353c
+  kind: STRUCT
+  name: "snd_dmaengine_dai_dma_data"
+  definition {
+    bytesize: 56
+    member_id: 0x24cdf172
+    member_id: 0xbf9e6a1c
+    member_id: 0x3c6e033a
+    member_id: 0xcdf1f176
+    member_id: 0xee09adb9
+    member_id: 0xf67ca8c0
+    member_id: 0x2d2d05e1
+    member_id: 0x1c86046e
+    member_id: 0x3cf3821b
+  }
+}
+struct_union {
+  id: 0x3b9a7569
+  kind: STRUCT
+  name: "snd_dmaengine_pcm_config"
+  definition {
+    bytesize: 72
+    member_id: 0x2c117e99
+    member_id: 0xeaadb518
+    member_id: 0x0d963983
+    member_id: 0xef52906a
+    member_id: 0x810a0b09
+    member_id: 0x3ac8d3b5
+    member_id: 0x73fb7c91
+    member_id: 0xb6e58275
+  }
+}
+struct_union {
+  id: 0x944b9ff1
+  kind: STRUCT
+  name: "snd_enc_flac"
+  definition {
+    bytesize: 8
+    member_id: 0x1cd0610a
+    member_id: 0xf52a06bf
+  }
+}
+struct_union {
+  id: 0x36bc4154
+  kind: STRUCT
+  name: "snd_enc_generic"
+  definition {
+    bytesize: 64
+    member_id: 0x94eae6b6
+    member_id: 0xd4969562
+  }
+}
+struct_union {
+  id: 0x1b6f9866
+  kind: STRUCT
+  name: "snd_enc_real"
+  definition {
+    bytesize: 12
+    member_id: 0x852b051b
+    member_id: 0x652ac194
+    member_id: 0xad41df35
+  }
+}
+struct_union {
+  id: 0xf33674f6
+  kind: STRUCT
+  name: "snd_enc_vorbis"
+  definition {
+    bytesize: 20
+    member_id: 0xb82708a8
+    member_id: 0x3e0bf3cd
+    member_id: 0x907cd29e
+    member_id: 0xc6b61399
+    member_id: 0xf7afd81a
+  }
+}
+struct_union {
+  id: 0x25040ecb
+  kind: STRUCT
+  name: "snd_enc_wma"
+  definition {
+    bytesize: 4
+    member_id: 0xc6d8a98e
+  }
+}
+struct_union {
+  id: 0x64a8efe4
+  kind: STRUCT
+  name: "snd_fasync"
+  definition {
+    bytesize: 40
+    member_id: 0xa3521a08
+    member_id: 0x098fd867
+    member_id: 0x5e726483
+    member_id: 0x7114cc4c
+    member_id: 0x7c00e79b
+  }
+}
+struct_union {
+  id: 0xa17b47ca
+  kind: STRUCT
+  name: "snd_hwdep"
+  definition {
+    bytesize: 1264
+    member_id: 0x6c9f8205
+    member_id: 0x7c00ebb3
+    member_id: 0xea5500df
+    member_id: 0xcc75f0e2
+    member_id: 0x0dda82b2
+    member_id: 0x817b9489
+    member_id: 0xaf67dd7d
+    member_id: 0x60e6f6bf
+    member_id: 0xf21ad97e
+    member_id: 0x567edc76
+    member_id: 0xce1ac8ba
+    member_id: 0x48515b95
+    member_id: 0x8bd9301a
+    member_id: 0x7d8ebaa3
+    member_id: 0x1520e90b
+    member_id: 0x2d081269
+  }
+}
+struct_union {
+  id: 0xfc7bb24b
+  kind: STRUCT
+  name: "snd_hwdep_dsp_image"
+  definition {
+    bytesize: 96
+    member_id: 0xad7c8dd9
+    member_id: 0x0dffaa34
+    member_id: 0x7717c666
+    member_id: 0xb5995149
+    member_id: 0x6d79728e
+  }
+}
+struct_union {
+  id: 0x4c0bdc8a
+  kind: STRUCT
+  name: "snd_hwdep_dsp_status"
+  definition {
+    bytesize: 64
+    member_id: 0xa624b11c
+    member_id: 0xcc6c8d77
+    member_id: 0xe0dce54c
+    member_id: 0x7d8eb982
+    member_id: 0xb681e609
+    member_id: 0xd438fe7f
+  }
+}
+struct_union {
+  id: 0xecd302d8
+  kind: STRUCT
+  name: "snd_hwdep_ops"
+  definition {
+    bytesize: 96
+    member_id: 0x839f19f1
+    member_id: 0x487c24fc
+    member_id: 0x3421983a
+    member_id: 0xad9b4d09
+    member_id: 0xaeb73635
+    member_id: 0x5e152199
+    member_id: 0x4d4b9f7f
+    member_id: 0x7f374859
+    member_id: 0x87fca00b
+    member_id: 0x51fefdf1
+    member_id: 0xbf3c7083
+    member_id: 0x2d08170f
+  }
+}
+struct_union {
+  id: 0x7c95d721
+  kind: STRUCT
+  name: "snd_info_buffer"
+  definition {
+    bytesize: 32
+    member_id: 0x33da883d
+    member_id: 0x8d90d743
+    member_id: 0xd93b9097
+    member_id: 0xb84059f2
+    member_id: 0x69ef576f
+    member_id: 0x7f61fcf5
+  }
+}
+struct_union {
+  id: 0xd6c8573e
+  kind: STRUCT
+  name: "snd_info_entry"
+  definition {
+    bytesize: 176
+    member_id: 0x0de57ce8
+    member_id: 0x878f4209
+    member_id: 0xd9821bad
+    member_id: 0x3655700a
+    member_id: 0x0f06a755
+    member_id: 0x720e5144
+    member_id: 0x965f1149
+    member_id: 0xf21adc24
+    member_id: 0x567f0e57
+    member_id: 0xa6a908af
+    member_id: 0x6cab3090
+    member_id: 0x25795339
+    member_id: 0x7c00ed96
+    member_id: 0x2d081fb1
+  }
+}
+struct_union {
+  id: 0x9d8c50e2
+  kind: STRUCT
+  name: "snd_info_entry_ops"
+  definition {
+    bytesize: 72
+    member_id: 0xad9a4a13
+    member_id: 0xaeb63cec
+    member_id: 0x4851111d
+    member_id: 0x340c9b5a
+    member_id: 0x83844c25
+    member_id: 0x5e14fc29
+    member_id: 0x4d4a4447
+    member_id: 0x87fd73fe
+    member_id: 0x2d081e2a
+  }
+}
+struct_union {
+  id: 0x9611bf2f
+  kind: STRUCT
+  name: "snd_info_entry_text"
+  definition {
+    bytesize: 16
+    member_id: 0x48500e3e
+    member_id: 0x340d81a9
+  }
+}
+struct_union {
+  id: 0x86c67cc5
+  kind: STRUCT
+  name: "snd_interval"
+  definition {
+    bytesize: 12
+    member_id: 0xf9d5048c
+    member_id: 0x97b38f9c
+    member_id: 0x6b1e1a20
+    member_id: 0xc04f327d
+    member_id: 0x13b0e742
+    member_id: 0x307847a2
+  }
+}
+struct_union {
+  id: 0x06d9714e
+  kind: STRUCT
+  name: "snd_jack"
+  definition {
+    bytesize: 248
+    member_id: 0xc5eae45f
+    member_id: 0x6c9f8bc7
+    member_id: 0xcc1134ed
+    member_id: 0xd74dae5b
+    member_id: 0x3fcc6a76
+    member_id: 0x513d71ad
+    member_id: 0x5c31fb6a
+    member_id: 0x0d5b75aa
+    member_id: 0x20e6c0a2
+    member_id: 0x995b248a
+    member_id: 0xf21ad14f
+    member_id: 0x567c4c7c
+    member_id: 0x2d0814ec
+  }
+}
+struct_union {
+  id: 0x847ca850
+  kind: STRUCT
+  name: "snd_kcontrol"
+  definition {
+    bytesize: 144
+    member_id: 0x7c00ef52
+    member_id: 0xcc2aa32c
+    member_id: 0x6560dcdb
+    member_id: 0xcd68ecf5
+    member_id: 0x316babd4
+    member_id: 0x4ad8e073
+    member_id: 0x7404e326
+    member_id: 0x29c8f0ee
+    member_id: 0xf21ad023
+    member_id: 0x567e4080
+    member_id: 0x522a42f5
+  }
+}
+struct_union {
+  id: 0x592e728c
+  kind: STRUCT
+  name: "snd_kcontrol_new"
+  definition {
+    bytesize: 80
+    member_id: 0x81e47d7e
+    member_id: 0xea77a098
+    member_id: 0x7459f24e
+    member_id: 0x0de5752a
+    member_id: 0xad7c8510
+    member_id: 0x6c49778d
+    member_id: 0x6560da09
+    member_id: 0xcd68e90f
+    member_id: 0x316ba2e8
+    member_id: 0x4ad8e4be
+    member_id: 0x7404e298
+    member_id: 0x29c8f16f
+  }
+}
+struct_union {
+  id: 0x75283450
+  kind: STRUCT
+  name: "snd_kcontrol_volatile"
+  definition {
+    bytesize: 16
+    member_id: 0x4aac2c91
+    member_id: 0x6c497048
+  }
+}
+struct_union {
+  id: 0x091a1d90
+  kind: STRUCT
+  name: "snd_mask"
+  definition {
+    bytesize: 32
+    member_id: 0xd78825be
+  }
+}
+struct_union {
+  id: 0x6c76b9b2
+  kind: STRUCT
+  name: "snd_pcm"
+  definition {
+    bytesize: 2208
+    member_id: 0x6c9f8205
+    member_id: 0x7c00ebb3
+    member_id: 0xea5500df
+    member_id: 0xc382f0bf
+    member_id: 0x72439acb
+    member_id: 0xc6e019f2
+    member_id: 0xcc129090
+    member_id: 0x0dda8c65
+    member_id: 0x8dbca30a
+    member_id: 0x48515ff8
+    member_id: 0x60e6f8f0
+    member_id: 0xf21ad2dc
+    member_id: 0x567de8bf
+    member_id: 0xcf1392d8
+    member_id: 0x5cf54d0d
+    member_id: 0x752dbd68
+    member_id: 0x2d081ed3
+  }
+}
+struct_union {
+  id: 0xaabc2e1f
+  kind: STRUCT
+  name: "snd_pcm_audio_tstamp_config"
+  definition {
+    bytesize: 4
+    member_id: 0x62ccd57f
+    member_id: 0x080b53cf
+  }
+}
+struct_union {
+  id: 0x06779076
+  kind: STRUCT
+  name: "snd_pcm_audio_tstamp_report"
+  definition {
+    bytesize: 8
+    member_id: 0xe2ab09c2
+    member_id: 0x025c9ea4
+    member_id: 0xee7fc88b
+    member_id: 0x6bbd8f78
+  }
+}
+struct_union {
+  id: 0x54945569
+  kind: STRUCT
+  name: "snd_pcm_chmap"
+  definition {
+    bytesize: 48
+    member_id: 0xa60a4348
+    member_id: 0xc0506c0e
+    member_id: 0xfc4536a4
+    member_id: 0x7ec34a49
+    member_id: 0x3d071253
+    member_id: 0xdf19c475
+    member_id: 0xf21ad0fb
+  }
+}
+struct_union {
+  id: 0xae565365
+  kind: STRUCT
+  name: "snd_pcm_chmap_elem"
+  definition {
+    bytesize: 16
+    member_id: 0xea1ad535
+    member_id: 0x8d17c49e
+  }
+}
+struct_union {
+  id: 0x9a6a4125
+  kind: STRUCT
+  name: "snd_pcm_group"
+  definition {
+    bytesize: 80
+    member_id: 0x2d1fec85
+    member_id: 0xad8987e3
+    member_id: 0x08ec1508
+    member_id: 0x9af0b7aa
+  }
+}
+struct_union {
+  id: 0x21b62a20
+  kind: STRUCT
+  name: "snd_pcm_hardware"
+  definition {
+    bytesize: 80
+    member_id: 0xcd198612
+    member_id: 0x28d35217
+    member_id: 0x3f10377e
+    member_id: 0x325fdfe6
+    member_id: 0xe742b45a
+    member_id: 0x363f38c6
+    member_id: 0x8ca402a4
+    member_id: 0xdcf07c8c
+    member_id: 0xc171cc08
+    member_id: 0x4b77ed46
+    member_id: 0xd2cf0a72
+    member_id: 0x97dc3788
+    member_id: 0xf6cd1117
+  }
+}
+struct_union {
+  id: 0xe35b0180
+  kind: STRUCT
+  name: "snd_pcm_hw_constraint_list"
+  definition {
+    bytesize: 16
+    member_id: 0x7ceaeb47
+    member_id: 0x6560de43
+    member_id: 0xa876e5c8
+  }
+}
+struct_union {
+  id: 0xc8293d17
+  kind: STRUCT
+  name: "snd_pcm_hw_constraint_ratnums"
+  definition {
+    bytesize: 16
+    member_id: 0xc487c4c7
+    member_id: 0x5660c3f2
+  }
+}
+struct_union {
+  id: 0x001c9928
+  kind: STRUCT
+  name: "snd_pcm_hw_constraints"
+  definition {
+    bytesize: 256
+    member_id: 0x91c869b5
+    member_id: 0x01a3048f
+    member_id: 0xd9538be7
+    member_id: 0x37f13380
+    member_id: 0x2bd97fb6
+  }
+}
+struct_union {
+  id: 0x9cedf3c4
+  kind: STRUCT
+  name: "snd_pcm_hw_params"
+  definition {
+    bytesize: 608
+    member_id: 0x2d2d0138
+    member_id: 0x91c8648e
+    member_id: 0x96dd389f
+    member_id: 0x01a304e2
+    member_id: 0xae64c19d
+    member_id: 0xb18e33dc
+    member_id: 0xaa2a2b81
+    member_id: 0xcd198d5a
+    member_id: 0xaaa7b292
+    member_id: 0xbc979606
+    member_id: 0x0f313ec6
+    member_id: 0xf691d227
+    member_id: 0xd44761dd
+  }
+}
+struct_union {
+  id: 0x4215681c
+  kind: STRUCT
+  name: "snd_pcm_hw_rule"
+  definition {
+    bytesize: 48
+    member_id: 0x16100b9c
+    member_id: 0xeaf50b23
+    member_id: 0xac1da223
+    member_id: 0x216be8e8
+    member_id: 0x91796174
+  }
+}
+struct_union {
+  id: 0x848e8806
+  kind: STRUCT
+  name: "snd_pcm_mmap_control"
+  definition {
+    bytesize: 16
+    member_id: 0xc4b1bab6
+    member_id: 0x7b340b5f
+    member_id: 0x86715b21
+    member_id: 0x4730f2b3
+    member_id: 0xc04b62b9
+    member_id: 0x0e2c03cf
+  }
+}
+struct_union {
+  id: 0x0bdce3f9
+  kind: STRUCT
+  name: "snd_pcm_mmap_status"
+  definition {
+    bytesize: 56
+    member_id: 0x72e1f985
+    member_id: 0x6612cc37
+    member_id: 0xc4b1be57
+    member_id: 0x14b420e6
+    member_id: 0x86aee850
+    member_id: 0x7fbadaaf
+    member_id: 0xf5fbdec8
+    member_id: 0xfbec1fb5
+    member_id: 0x211fd663
+  }
+}
+struct_union {
+  id: 0x6798ba36
+  kind: STRUCT
+  name: "snd_pcm_ops"
+  definition {
+    bytesize: 136
+    member_id: 0xad983a50
+    member_id: 0xcd5f483d
+    member_id: 0x4d48a8da
+    member_id: 0x0375b768
+    member_id: 0x0ba0be1f
+    member_id: 0x3d561540
+    member_id: 0x35b3e416
+    member_id: 0x86e9821c
+    member_id: 0x6920efc6
+    member_id: 0x889961f9
+    member_id: 0x944bdff2
+    member_id: 0xc91146cb
+    member_id: 0x5d4ec39f
+    member_id: 0x32215eff
+    member_id: 0x87ffd497
+    member_id: 0x87f1c514
+    member_id: 0x2d08122d
+  }
+}
+struct_union {
+  id: 0x39490e40
+  kind: STRUCT
+  name: "snd_pcm_runtime"
+  definition {
+    bytesize: 848
+    member_id: 0x72e1f985
+    member_id: 0xf5fbd358
+    member_id: 0x2223a46e
+    member_id: 0xd3445501
+    member_id: 0x9f27b425
+    member_id: 0xb4447832
+    member_id: 0x78e33d00
+    member_id: 0x3b9b55c4
+    member_id: 0x56cf5cbd
+    member_id: 0x8dd6d069
+    member_id: 0xbf5570ce
+    member_id: 0x845e0640
+    member_id: 0xf6a2cbfd
+    member_id: 0x6c6914de
+    member_id: 0x0890487c
+    member_id: 0x31604159
+    member_id: 0x5f97d155
+    member_id: 0xea02dba0
+    member_id: 0x58d7ca4a
+    member_id: 0xb5d49851
+    member_id: 0x30bc04e6
+    member_id: 0xaa4f7dd4
+    member_id: 0xdb212aea
+    member_id: 0x02bdbb97
+    member_id: 0xa26bd18c
+    member_id: 0xcd198c91
+    member_id: 0xbc9798a0
+    member_id: 0x0f313303
+    member_id: 0x685ed9c1
+    member_id: 0x0923f948
+    member_id: 0x2cd1844d
+    member_id: 0x022d2e66
+    member_id: 0x54f1b9c5
+    member_id: 0x4b2a2dde
+    member_id: 0x724559fa
+    member_id: 0x62f19ee9
+    member_id: 0x59173356
+    member_id: 0x689afd46
+    member_id: 0x50e484e0
+    member_id: 0x206f4ec7
+    member_id: 0xfc17d3e7
+    member_id: 0xf52d05fa
+    member_id: 0xdb9e688f
+    member_id: 0x7bb305a7
+    member_id: 0xa364417d
+    member_id: 0xe651a2e5
+    member_id: 0x65416df2
+    member_id: 0x790ede18
+    member_id: 0xf21add53
+    member_id: 0x567cbe60
+    member_id: 0x97e6b515
+    member_id: 0x5c83a15a
+    member_id: 0xfa80ac1e
+    member_id: 0x724f5b37
+    member_id: 0x40414366
+    member_id: 0xfb5728f3
+    member_id: 0xe342eba2
+    member_id: 0x1fa108db
+    member_id: 0xfa0ae022
+    member_id: 0xc8a91dc8
+    member_id: 0x92a1d54f
+    member_id: 0x8cc1f8e4
+    member_id: 0x2d081c49
+    member_id: 0x6376039c
+  }
+}
+struct_union {
+  id: 0xbcedc070
+  kind: STRUCT
+  name: "snd_pcm_str"
+  definition {
+    bytesize: 960
+    member_id: 0xc05068ef
+    member_id: 0xa60a47a9
+    member_id: 0xe80be976
+    member_id: 0xfa6e64e6
+    member_id: 0x87335214
+    member_id: 0x19316439
+    member_id: 0xce1ac68e
+    member_id: 0x2d081398
+  }
+}
+struct_union {
+  id: 0x78a5f271
+  kind: STRUCT
+  name: "snd_pcm_substream"
+  definition {
+    bytesize: 384
+    member_id: 0xa60a4348
+    member_id: 0x946deb91
+    member_id: 0xf21adefe
+    member_id: 0xd97431bb
+    member_id: 0x0d81b02e
+    member_id: 0xc050695f
+    member_id: 0xa59496fe
+    member_id: 0xdcf071ed
+    member_id: 0x941cf6ca
+    member_id: 0x5fa99e1d
+    member_id: 0xafb0ea3a
+    member_id: 0x293e4f42
+    member_id: 0x1d144369
+    member_id: 0xb11f7695
+    member_id: 0x84384d66
+    member_id: 0x11e7bfe9
+    member_id: 0xc6b02067
+    member_id: 0x2df7aab6
+    member_id: 0xd3be02c5
+    member_id: 0x53e145ce
+    member_id: 0xc392230a
+    member_id: 0x38568cd5
+    member_id: 0x7454b0ec
+    member_id: 0x74912e66
+    member_id: 0x4624a51b
+    member_id: 0x9f00b155
+    member_id: 0x2d08133a
+  }
+}
+struct_union {
+  id: 0x30a584b4
+  kind: UNION
+  name: "snd_pcm_sync_id"
+  definition {
+    bytesize: 16
+    member_id: 0xcc747f06
+    member_id: 0xbbe2c6ec
+    member_id: 0xa3d1df19
+  }
+}
+struct_union {
+  id: 0x63e8e4d3
+  kind: STRUCT
+  name: "snd_ratnum"
+  definition {
+    bytesize: 16
+    member_id: 0x1c73cad3
+    member_id: 0x68887f5e
+    member_id: 0xe61594eb
+    member_id: 0x17885c62
+  }
+}
+struct_union {
+  id: 0xccbce468
+  kind: STRUCT
+  name: "snd_shutdown_f_ops"
+}
+struct_union {
+  id: 0x700bda61
+  kind: STRUCT
+  name: "snd_soc_aux_dev"
+  definition {
+    bytesize: 32
+    member_id: 0x7dae7895
+    member_id: 0x1ac62b95
+  }
+}
+struct_union {
+  id: 0x4e376b5d
+  kind: STRUCT
+  name: "snd_soc_card"
+  definition {
+    bytesize: 832
+    member_id: 0x0de57ce8
+    member_id: 0x7575eb94
+    member_id: 0xf415f646
+    member_id: 0xb09f5e51
+    member_id: 0x1827b5b6
+    member_id: 0xce3bb1ab
+    member_id: 0x0c497c99
+    member_id: 0x4a965429
+    member_id: 0xad89813f
+    member_id: 0x4d6b744a
+    member_id: 0x69bbb514
+    member_id: 0xd2d2e828
+    member_id: 0xd77a6336
+    member_id: 0xcff0db63
+    member_id: 0x7071b1b4
+    member_id: 0xb48fbf27
+    member_id: 0x4b7cfee6
+    member_id: 0x0d88e94f
+    member_id: 0x2e249adf
+    member_id: 0xf08d6209
+    member_id: 0x04c68bb6
+    member_id: 0xe5cef2f6
+    member_id: 0x34f9daac
+    member_id: 0x8d7a286c
+    member_id: 0xab3ce933
+    member_id: 0xdf11a290
+    member_id: 0x61efc5bd
+    member_id: 0x5d6944d6
+    member_id: 0xcf06c1e5
+    member_id: 0x78d9657f
+    member_id: 0x8434f459
+    member_id: 0x3603bd3a
+    member_id: 0xa846e1ec
+    member_id: 0x935a4418
+    member_id: 0x47a42035
+    member_id: 0xc3579000
+    member_id: 0xe8b65e69
+    member_id: 0x1da90ec6
+    member_id: 0x3861b9dc
+    member_id: 0xfa7f01f9
+    member_id: 0x6456a213
+    member_id: 0x3265cef6
+    member_id: 0xd603b4f4
+    member_id: 0xb56af488
+    member_id: 0xa08ce4f8
+    member_id: 0x7c00e3d1
+    member_id: 0xb0f315b6
+    member_id: 0x00a742e7
+    member_id: 0x2e266fde
+    member_id: 0x5a40bfe4
+    member_id: 0x6bd9d4c0
+    member_id: 0x986840f1
+    member_id: 0x14588350
+    member_id: 0xd694f198
+    member_id: 0x5ce8eefb
+    member_id: 0xfcf41a58
+    member_id: 0x01383f72
+    member_id: 0xdc45187d
+    member_id: 0x6a624cc4
+    member_id: 0xf9bad50a
+    member_id: 0x905fb5ad
+    member_id: 0xe33e7360
+    member_id: 0x5c6564e5
+    member_id: 0x7020bc06
+    member_id: 0x2d081c28
+    member_id: 0x6376007a
+    member_id: 0xac894734
+    member_id: 0xe0f63ddb
+  }
+}
+struct_union {
+  id: 0xf4cd4246
+  kind: STRUCT
+  name: "snd_soc_cdai_ops"
+  definition {
+    bytesize: 72
+    member_id: 0x564f8138
+    member_id: 0x9ed96f02
+    member_id: 0xaf10d858
+    member_id: 0xacf6b692
+    member_id: 0x77de5743
+    member_id: 0xc2404f2a
+    member_id: 0x35b3013a
+    member_id: 0x690dc896
+    member_id: 0x87f1d7e6
+  }
+}
+struct_union {
+  id: 0xc2cc478a
+  kind: STRUCT
+  name: "snd_soc_codec_conf"
+  definition {
+    bytesize: 32
+    member_id: 0x7dae7895
+    member_id: 0x1029a2c0
+  }
+}
+struct_union {
+  id: 0x6fdef12a
+  kind: STRUCT
+  name: "snd_soc_component"
+  definition {
+    bytesize: 360
+    member_id: 0x0de57ce8
+    member_id: 0xcc4808a3
+    member_id: 0x1029a3cb
+    member_id: 0xce3bb27a
+    member_id: 0x6cb567f8
+    member_id: 0x2267dc75
+    member_id: 0x1e8ccc49
+    member_id: 0x7c00eec0
+    member_id: 0xb59b47e2
+    member_id: 0x189e025f
+    member_id: 0xd47ca86a
+    member_id: 0x187194c9
+    member_id: 0xc26728ff
+    member_id: 0x36e6fe83
+    member_id: 0x21764bb8
+    member_id: 0xc85960c3
+    member_id: 0x6bd9dbed
+    member_id: 0x986840a0
+    member_id: 0x1ac62457
+    member_id: 0x5c4657b0
+    member_id: 0x27aa812a
+    member_id: 0xde7d8eb9
+    member_id: 0x63905310
+    member_id: 0x31ed78a0
+    member_id: 0xb16d0120
+    member_id: 0x83e5319b
+    member_id: 0xd11f5b0c
+  }
+}
+struct_union {
+  id: 0xfa69691f
+  kind: STRUCT
+  name: "snd_soc_component_driver"
+  definition {
+    bytesize: 368
+    member_id: 0x0de57ce8
+    member_id: 0x47a42e9e
+    member_id: 0xc375357f
+    member_id: 0xe8b650c9
+    member_id: 0x1d8ba340
+    member_id: 0x3861beb7
+    member_id: 0xfa5da80f
+    member_id: 0xd77ae239
+    member_id: 0xb4ac7bf7
+    member_id: 0xf3963932
+    member_id: 0xcab3006c
+    member_id: 0x486528a2
+    member_id: 0x342c7bf8
+    member_id: 0xe33dd190
+    member_id: 0x164de05f
+    member_id: 0x720b281a
+    member_id: 0xee76fb35
+    member_id: 0xad0b1b00
+    member_id: 0xece375a8
+    member_id: 0xb84e4d03
+    member_id: 0xb21bf9f4
+    member_id: 0x8af0d86a
+    member_id: 0x04c66be5
+    member_id: 0xad987455
+    member_id: 0xcd5f0f6e
+    member_id: 0x4d48a1bb
+    member_id: 0x0375daa9
+    member_id: 0x0ba0f0c4
+    member_id: 0x3d565da1
+    member_id: 0x35b3c69e
+    member_id: 0x86e9cde0
+    member_id: 0x6920af0f
+    member_id: 0x8899228d
+    member_id: 0xc91161ad
+    member_id: 0x322121cd
+    member_id: 0x87ff9425
+    member_id: 0x87f183b9
+    member_id: 0x843ec56a
+    member_id: 0x14524000
+    member_id: 0x84f7c948
+    member_id: 0xfc3d788b
+    member_id: 0x4877b1eb
+    member_id: 0x0070780a
+    member_id: 0x490ad16b
+    member_id: 0x73caff89
+    member_id: 0x3041280e
+    member_id: 0x21781384
+    member_id: 0x3dde7626
+    member_id: 0xf19964b6
+    member_id: 0x9edaecac
+    member_id: 0x67f57168
+    member_id: 0xf85cf421
+    member_id: 0xd11f5aed
+  }
+}
+struct_union {
+  id: 0x94a25fdd
+  kind: STRUCT
+  name: "snd_soc_compr_ops"
+  definition {
+    bytesize: 32
+    member_id: 0x564f8417
+    member_id: 0x9efa2c01
+    member_id: 0xaf10c257
+    member_id: 0x35b36f13
+  }
+}
+struct_union {
+  id: 0x3efe569e
+  kind: STRUCT
+  name: "snd_soc_dai"
+  definition {
+    bytesize: 160
+    member_id: 0x0de57ce8
+    member_id: 0xcc4808a3
+    member_id: 0xce3bb371
+    member_id: 0xd45092fb
+    member_id: 0x26ad7845
+    member_id: 0x2cffe3ab
+    member_id: 0x39594d94
+    member_id: 0x5375b727
+    member_id: 0x6fc26f08
+    member_id: 0x5f97deea
+    member_id: 0xea02d1f4
+    member_id: 0xa26bde3e
+    member_id: 0xe5f70e29
+    member_id: 0x15d7172a
+    member_id: 0x720c5cb4
+    member_id: 0x7c00ece8
+    member_id: 0xc9e95a8c
+    member_id: 0xde7d8d5f
+    member_id: 0x63905fc4
+    member_id: 0x5b36107b
+    member_id: 0xe33e78e2
+  }
+}
+struct_union {
+  id: 0x52606d54
+  kind: STRUCT
+  name: "snd_soc_dai_driver"
+  definition {
+    bytesize: 224
+    member_id: 0x0de57ce8
+    member_id: 0xcc6aad16
+    member_id: 0x859f626e
+    member_id: 0xb0684380
+    member_id: 0xd77ba7b5
+    member_id: 0xb48e707c
+    member_id: 0x07279879
+    member_id: 0xa040c173
+    member_id: 0xafb9c62e
+    member_id: 0xbd78746b
+    member_id: 0x81e8396e
+    member_id: 0xb3c78bbf
+    member_id: 0x8ee417c2
+    member_id: 0x515f97e7
+    member_id: 0xb31a3265
+    member_id: 0x84f7c330
+    member_id: 0xfc3d730d
+  }
+}
+struct_union {
+  id: 0xaa55cf70
+  kind: STRUCT
+  name: "snd_soc_dai_link"
+  definition {
+    bytesize: 208
+    member_id: 0x0de57ce8
+    member_id: 0x4a048c22
+    member_id: 0xe76a6b02
+    member_id: 0xe2bd9b59
+    member_id: 0xf908fbd2
+    member_id: 0x35c573e1
+    member_id: 0xc1e5cfd0
+    member_id: 0xadcde01f
+    member_id: 0xcc480df2
+    member_id: 0x4b9bb770
+    member_id: 0x43707b0e
+    member_id: 0x59398359
+    member_id: 0x35df82ac
+    member_id: 0x1ac761d6
+    member_id: 0x0d2eef98
+    member_id: 0x9edaec2b
+    member_id: 0xafb0005b
+    member_id: 0x279e0e8b
+    member_id: 0x9d9055f7
+    member_id: 0xbe2220ca
+    member_id: 0xa8580cd6
+    member_id: 0xb29e4f29
+    member_id: 0x8ee4176e
+    member_id: 0x515f99e8
+    member_id: 0xb31a3e47
+    member_id: 0x019c11ca
+    member_id: 0xfc641347
+    member_id: 0xda5953eb
+    member_id: 0xfb32caec
+    member_id: 0x247b24f9
+    member_id: 0xc8ef6400
+    member_id: 0x26e3a132
+    member_id: 0x26f8481d
+    member_id: 0x26baa2dd
+    member_id: 0x2930d75d
+    member_id: 0xb0684734
+    member_id: 0x2d081c8a
+  }
+}
+struct_union {
+  id: 0x5fcfd92a
+  kind: STRUCT
+  name: "snd_soc_dai_link_component"
+  definition {
+    bytesize: 24
+    member_id: 0x0de57ce8
+    member_id: 0xf7c3f6a0
+    member_id: 0x5f8a467f
+  }
+}
+struct_union {
+  id: 0xf5869074
+  kind: STRUCT
+  name: "snd_soc_dai_ops"
+  definition {
+    bytesize: 184
+    member_id: 0x720a6665
+    member_id: 0xee77bc49
+    member_id: 0xb55f07c0
+    member_id: 0x2aa82a8d
+    member_id: 0x41dbc8f1
+    member_id: 0xee360321
+    member_id: 0x82991dce
+    member_id: 0xa6d7a449
+    member_id: 0x5eeef84b
+    member_id: 0xca262476
+    member_id: 0x6f57aa7b
+    member_id: 0xd7255615
+    member_id: 0x5c90df82
+    member_id: 0x564f67fc
+    member_id: 0x9efac217
+    member_id: 0x0375b700
+    member_id: 0x0ba0bc84
+    member_id: 0x3d561ade
+    member_id: 0x35b3eb0a
+    member_id: 0xe9fd6490
+    member_id: 0x843e8618
+    member_id: 0xeee1b9c5
+    member_id: 0x4a3e96b6
+    member_id: 0xc31d4bc3
+  }
+}
+struct_union {
+  id: 0x2a1fba3e
+  kind: STRUCT
+  name: "snd_soc_dapm_context"
+  definition {
+    bytesize: 80
+    member_id: 0x649ecef1
+    member_id: 0x4a8c7ce1
+    member_id: 0x490ad300
+    member_id: 0xce3bbe52
+    member_id: 0xe5f705d6
+    member_id: 0x6cb56f9a
+    member_id: 0x8662f86e
+    member_id: 0x7c00e895
+    member_id: 0x846e3718
+    member_id: 0x4f2c9dc2
+    member_id: 0x1678052a
+  }
+}
+struct_union {
+  id: 0x016ce165
+  kind: STRUCT
+  name: "snd_soc_dapm_route"
+  definition {
+    bytesize: 96
+    member_id: 0x5ca152fb
+    member_id: 0xfc0271b7
+    member_id: 0xd71086bc
+    member_id: 0x7951cfa6
+    member_id: 0xb0684ae9
+  }
+}
+struct_union {
+  id: 0x04a70038
+  kind: STRUCT
+  name: "snd_soc_dapm_stats"
+  definition {
+    bytesize: 12
+    member_id: 0xac320c2b
+    member_id: 0x878459dc
+    member_id: 0x6da2bf74
+  }
+}
+struct_union {
+  id: 0xedc37d87
+  kind: STRUCT
+  name: "snd_soc_dapm_update"
+  definition {
+    bytesize: 40
+    member_id: 0xdbfaccd7
+    member_id: 0x0f27a60a
+    member_id: 0xa854407d
+    member_id: 0x4f71c7cb
+    member_id: 0x36745faf
+    member_id: 0x809aefb9
+    member_id: 0xc5535c33
+    member_id: 0x75f4e5e7
+  }
+}
+struct_union {
+  id: 0x45bef0b7
+  kind: STRUCT
+  name: "snd_soc_dapm_wcache"
+  definition {
+    bytesize: 8
+    member_id: 0x1581e8eb
+  }
+}
+struct_union {
+  id: 0x023b98ff
+  kind: STRUCT
+  name: "snd_soc_dapm_widget"
+  definition {
+    bytesize: 320
+    member_id: 0xcc8634a1
+    member_id: 0x0de57809
+    member_id: 0x722447d2
+    member_id: 0x7c00e79b
+    member_id: 0x98424c26
+    member_id: 0x59119933
+    member_id: 0xbd8dbda2
+    member_id: 0xff5a99ba
+    member_id: 0x0f27ab99
+    member_id: 0x326c41c1
+    member_id: 0xa876ea32
+    member_id: 0xcd1e25eb
+    member_id: 0x2ef5a066
+    member_id: 0x002f56c1
+    member_id: 0x1ad6f7a9
+    member_id: 0x908b9125
+    member_id: 0x2a313b07
+    member_id: 0xc2b7c45b
+    member_id: 0xb28645a0
+    member_id: 0x47a34ff8
+    member_id: 0xf33fc9cc
+    member_id: 0xd92434cf
+    member_id: 0x7e25aaa2
+    member_id: 0x7fa3f263
+    member_id: 0xdeb3de40
+    member_id: 0x12f8a1aa
+    member_id: 0x0a629482
+    member_id: 0xd01ebee8
+    member_id: 0x4f868a0d
+    member_id: 0xc96bafdd
+    member_id: 0xb0684886
+    member_id: 0x7692e117
+    member_id: 0x039fb590
+    member_id: 0x37d5074a
+    member_id: 0xb540d111
+    member_id: 0x0cde76a3
+    member_id: 0xc8e82d19
+    member_id: 0x4cd5ad02
+  }
+}
+struct_union {
+  id: 0x035e67c4
+  kind: STRUCT
+  name: "snd_soc_dapm_widget_list"
+  definition {
+    bytesize: 8
+    member_id: 0x745815f4
+    member_id: 0xb0e6619a
+  }
+}
+struct_union {
+  id: 0xcff0a13b
+  kind: STRUCT
+  name: "snd_soc_dobj"
+  definition {
+    bytesize: 64
+    member_id: 0x5ce5a332
+    member_id: 0xad7c80e2
+    member_id: 0x7c00ebb3
+    member_id: 0xafaa22ec
+    member_id: 0x39b53975
+    member_id: 0x917961c4
+  }
+}
+struct_union {
+  id: 0x285eb7a0
+  kind: STRUCT
+  name: "snd_soc_dobj_control"
+  definition {
+    bytesize: 24
+    member_id: 0xdbfaccd7
+    member_id: 0x7f05c2c5
+    member_id: 0xb7618523
+  }
+}
+struct_union {
+  id: 0x9a06f3c7
+  kind: STRUCT
+  name: "snd_soc_dobj_widget"
+  definition {
+    bytesize: 8
+    member_id: 0xf36e20fb
+  }
+}
+struct_union {
+  id: 0x9f340492
+  kind: STRUCT
+  name: "snd_soc_dpcm_runtime"
+  definition {
+    bytesize: 680
+    member_id: 0xc4d45729
+    member_id: 0xaa33d21c
+    member_id: 0x85cad265
+    member_id: 0x293e4262
+    member_id: 0x03c5c5fe
+    member_id: 0x9b981384
+    member_id: 0x72846323
+    member_id: 0x32e47641
+    member_id: 0x58a658cc
+    member_id: 0x4229ebcc
+    member_id: 0x76d3b9a9
+  }
+}
+struct_union {
+  id: 0x0dd91f48
+  kind: STRUCT
+  name: "snd_soc_jack"
+  definition {
+    bytesize: 176
+    member_id: 0xad898302
+    member_id: 0x8f2980d7
+    member_id: 0x6cb56024
+    member_id: 0x16999735
+    member_id: 0x2000012e
+    member_id: 0x3761f810
+    member_id: 0x5d9c18bc
+  }
+}
+struct_union {
+  id: 0xc9561ee1
+  kind: STRUCT
+  name: "snd_soc_jack_gpio"
+  definition {
+    bytesize: 232
+    member_id: 0x07481c1e
+    member_id: 0x3cc2707a
+    member_id: 0x5e4308ff
+    member_id: 0x0de5752a
+    member_id: 0x5cfcd455
+    member_id: 0x72093a5c
+    member_id: 0x7480ca51
+    member_id: 0x26907da8
+    member_id: 0x8f2b4699
+    member_id: 0xd6084f3f
+    member_id: 0x3e7be960
+    member_id: 0x87ff4e4f
+    member_id: 0xff8a9e2c
+    member_id: 0xc33f915e
+  }
+}
+struct_union {
+  id: 0x1bfdeb3d
+  kind: STRUCT
+  name: "snd_soc_jack_pin"
+  definition {
+    bytesize: 32
+    member_id: 0x7c00ef52
+    member_id: 0xb8343c4b
+    member_id: 0xa8544137
+    member_id: 0x720365d0
+  }
+}
+struct_union {
+  id: 0x69e1c6f0
+  kind: STRUCT
+  name: "snd_soc_ops"
+  definition {
+    bytesize: 48
+    member_id: 0x564f6169
+    member_id: 0x9efac97f
+    member_id: 0x0375b663
+    member_id: 0x0ba0b67d
+    member_id: 0x3d56122c
+    member_id: 0x35b3e243
+  }
+}
+struct_union {
+  id: 0x3ff33e91
+  kind: STRUCT
+  name: "snd_soc_pcm_runtime"
+  definition {
+    bytesize: 1800
+    member_id: 0xce3bbab3
+    member_id: 0x6cb563b2
+    member_id: 0xdf11a86f
+    member_id: 0xafec90d0
+    member_id: 0x991ac7d9
+    member_id: 0x50cf371b
+    member_id: 0xf9fd1c53
+    member_id: 0xab3cec41
+    member_id: 0xa60a4bbf
+    member_id: 0xcb9776c4
+    member_id: 0x3c40f1d9
+    member_id: 0xed6159d1
+    member_id: 0x6103d166
+    member_id: 0xfebe6b8b
+    member_id: 0x1c73c3c9
+    member_id: 0x7c00ed37
+    member_id: 0xc9e955a1
+    member_id: 0xde7d86ab
+    member_id: 0x63905e22
+    member_id: 0x5b361080
+    member_id: 0xac8db346
+    member_id: 0xeada1648
+    member_id: 0x543c9979
+    member_id: 0x2d0814f1
+    member_id: 0xb0612d6d
+  }
+}
+struct_union {
+  id: 0x84487217
+  kind: STRUCT
+  name: "snd_soc_pcm_stream"
+  definition {
+    bytesize: 40
+    member_id: 0x4a0488c3
+    member_id: 0x28d35217
+    member_id: 0x3f10377e
+    member_id: 0x325fdfe6
+    member_id: 0xe742b45a
+    member_id: 0x363f38c6
+    member_id: 0x8ca402a4
+    member_id: 0x9cb4386e
+  }
+}
+struct_union {
+  id: 0x9a70ca20
+  kind: STRUCT
+  name: "snd_soc_tplg_bytes_ext_ops"
+  definition {
+    bytesize: 24
+    member_id: 0xcce624ba
+    member_id: 0x31766cd2
+    member_id: 0x4ac871e1
+  }
+}
+struct_union {
+  id: 0x6d677ec1
+  kind: STRUCT
+  name: "snd_soc_tplg_ctl_hdr"
+  definition {
+    bytesize: 204
+    member_id: 0xd975b602
+    member_id: 0x5c5d7235
+    member_id: 0x0d3e4288
+    member_id: 0x6c0759df
+    member_id: 0xaf94f770
+    member_id: 0x745c29f7
+  }
+}
+struct_union {
+  id: 0x0dc77f8a
+  kind: STRUCT
+  name: "snd_soc_tplg_ctl_tlv"
+  definition {
+    bytesize: 136
+    member_id: 0xd975b602
+    member_id: 0x5c5d7235
+    member_id: 0x3987082b
+  }
+}
+struct_union {
+  id: 0x26e016fa
+  kind: STRUCT
+  name: "snd_soc_tplg_dapm_widget"
+  definition {
+    bytesize: 132
+    member_id: 0xd975b602
+    member_id: 0xcc248bda
+    member_id: 0x0d3e4288
+    member_id: 0x72ff76f1
+    member_id: 0x0f4b20e6
+    member_id: 0x323a6571
+    member_id: 0xa838c0e7
+    member_id: 0x7fcf76a3
+    member_id: 0x7265b97d
+    member_id: 0x568f1cf9
+    member_id: 0x12aa49ff
+    member_id: 0x8dfc7230
+    member_id: 0xd0723386
+    member_id: 0x59355948
+  }
+}
+struct_union {
+  id: 0x2a996cea
+  kind: STRUCT
+  name: "snd_soc_tplg_hdr"
+  definition {
+    bytesize: 36
+    member_id: 0xd6786306
+    member_id: 0xb7b1f0ea
+    member_id: 0xa66a9aeb
+    member_id: 0x5c5d768d
+    member_id: 0xd975bfc0
+    member_id: 0x4dd6839e
+    member_id: 0x9fcdeae5
+    member_id: 0xad32a1eb
+    member_id: 0x652ef51f
+  }
+}
+struct_union {
+  id: 0x5586c3b0
+  kind: STRUCT
+  name: "snd_soc_tplg_hw_config"
+  definition {
+    bytesize: 120
+    member_id: 0xd975b602
+    member_id: 0xcc248bda
+    member_id: 0x69eadea2
+    member_id: 0xf2f8a067
+    member_id: 0xe41df53a
+    member_id: 0xd7cbf1a5
+    member_id: 0xed59899f
+    member_id: 0xc324b680
+    member_id: 0xe09033b8
+    member_id: 0xd4f87a16
+    member_id: 0x3f4da681
+    member_id: 0x9d00c69c
+    member_id: 0x11396c0b
+    member_id: 0x45d57c9e
+    member_id: 0xf874a0c8
+    member_id: 0x282b5eed
+    member_id: 0x41730461
+    member_id: 0x3a36b26a
+    member_id: 0x12ca6682
+    member_id: 0xce5d35a8
+    member_id: 0x48f838a4
+  }
+}
+struct_union {
+  id: 0x1ff0a4fc
+  kind: STRUCT
+  name: "snd_soc_tplg_io_ops"
+  definition {
+    bytesize: 12
+    member_id: 0x3152951a
+    member_id: 0x4aecaa0c
+    member_id: 0xcd57ade5
+  }
+}
+struct_union {
+  id: 0x0ec88431
+  kind: STRUCT
+  name: "snd_soc_tplg_kcontrol_ops"
+  definition {
+    bytesize: 32
+    member_id: 0xcce624ba
+    member_id: 0x31766522
+    member_id: 0x4ac85a2c
+    member_id: 0xcd735faa
+  }
+}
+struct_union {
+  id: 0x012b6fd9
+  kind: STRUCT
+  name: "snd_soc_tplg_link_config"
+  definition {
+    bytesize: 1656
+    member_id: 0xd975b602
+    member_id: 0xcc248bda
+    member_id: 0x0d3e4288
+    member_id: 0x4adfb022
+    member_id: 0xc0ee11f9
+    member_id: 0x971c1d61
+    member_id: 0xa6d9d55d
+    member_id: 0xacb8d376
+    member_id: 0x5d35f8c7
+    member_id: 0xd356f14d
+    member_id: 0x2d632948
+    member_id: 0x59355a43
+  }
+}
+struct_union {
+  id: 0x6d634461
+  kind: STRUCT
+  name: "snd_soc_tplg_manifest"
+  definition {
+    bytesize: 112
+    member_id: 0xd975b602
+    member_id: 0x549bb35a
+    member_id: 0x30d7efbc
+    member_id: 0x673d5a4a
+    member_id: 0xa37a7538
+    member_id: 0x6938c15d
+    member_id: 0xf25f00aa
+    member_id: 0xd476989d
+    member_id: 0x5935589a
+  }
+}
+struct_union {
+  id: 0xaeeaff23
+  kind: STRUCT
+  name: "snd_soc_tplg_ops"
+  definition {
+    bytesize: 152
+    member_id: 0x46987270
+    member_id: 0x28722417
+    member_id: 0xce768491
+    member_id: 0x2e03a205
+    member_id: 0xb35b6257
+    member_id: 0x5e9aac92
+    member_id: 0x5fb10a84
+    member_id: 0xd1e4d086
+    member_id: 0x7d1d8d7c
+    member_id: 0xf4d102e1
+    member_id: 0xe4c480c6
+    member_id: 0xc240aa08
+    member_id: 0x8ea2d68d
+    member_id: 0x4a754411
+    member_id: 0x93828c5b
+    member_id: 0x9646647d
+    member_id: 0xcf46a0ed
+    member_id: 0x4d36c98b
+    member_id: 0x2b8ab3ea
+  }
+}
+struct_union {
+  id: 0xaecb89a0
+  kind: STRUCT
+  name: "snd_soc_tplg_pcm"
+  definition {
+    bytesize: 912
+    member_id: 0xd975b602
+    member_id: 0x384f10b5
+    member_id: 0x5f5174ae
+    member_id: 0x22220408
+    member_id: 0xdec72f09
+    member_id: 0xb3486c59
+    member_id: 0x8167dfc9
+    member_id: 0x794c36b3
+    member_id: 0xc0ee13f1
+    member_id: 0x971c11e5
+    member_id: 0x0865089f
+    member_id: 0xd356f480
+    member_id: 0x2d632160
+    member_id: 0x5935516c
+  }
+}
+struct_union {
+  id: 0x3c7b932c
+  kind: STRUCT
+  name: "snd_soc_tplg_private"
+  definition {
+    bytesize: 4
+    member_id: 0xd975b602
+    member_id: 0x34061209
+  }
+}
+struct_union {
+  id: 0xf5bf8f91
+  kind: STRUCT
+  name: "snd_soc_tplg_stream"
+  definition {
+    bytesize: 72
+    member_id: 0xd975b602
+    member_id: 0x0d3e4b52
+    member_id: 0x082fa6d9
+    member_id: 0x5fd9fff9
+    member_id: 0x6474f9b3
+    member_id: 0xfaa447cc
+    member_id: 0xea4cf0cf
+  }
+}
+struct_union {
+  id: 0x989d9b6e
+  kind: STRUCT
+  name: "snd_soc_tplg_stream_caps"
+  definition {
+    bytesize: 104
+    member_id: 0xd975b602
+    member_id: 0x0d3e4b52
+    member_id: 0x283980b2
+    member_id: 0x3f5e16dd
+    member_id: 0x3211fca0
+    member_id: 0xe70c989d
+    member_id: 0x36711a2b
+    member_id: 0x8cea246b
+    member_id: 0xd2812e8e
+    member_id: 0x97921038
+    member_id: 0xac3c989d
+    member_id: 0x19d9d17e
+    member_id: 0xb9d19e3f
+    member_id: 0x1e43c0c3
+    member_id: 0x9cfa1cc6
+  }
+}
+struct_union {
+  id: 0x559cf452
+  kind: STRUCT
+  name: "snd_soc_tplg_tlv_dbscale"
+  definition {
+    bytesize: 12
+    member_id: 0xf99b2b9a
+    member_id: 0x6acac167
+    member_id: 0x1a73183d
+  }
+}
+struct_union {
+  id: 0x3f8766fd
+  kind: STRUCT
+  name: "snd_soc_tplg_vendor_array"
+  definition {
+    bytesize: 12
+    member_id: 0xd975b602
+    member_id: 0x5c5d7235
+    member_id: 0x20cdc315
+    member_id: 0x39a7da61
+  }
+}
+struct_union {
+  id: 0x679db08d
+  kind: STRUCT
+  name: "snd_soc_tplg_vendor_string_elem"
+  definition {
+    bytesize: 48
+    member_id: 0x36d53ca6
+    member_id: 0xdf17051c
+  }
+}
+struct_union {
+  id: 0x12faeeca
+  kind: STRUCT
+  name: "snd_soc_tplg_vendor_uuid_elem"
+  definition {
+    bytesize: 20
+    member_id: 0x36d53ca6
+    member_id: 0xfd0d3b70
+  }
+}
+struct_union {
+  id: 0x2d196ec6
+  kind: STRUCT
+  name: "snd_soc_tplg_vendor_value_elem"
+  definition {
+    bytesize: 8
+    member_id: 0x36d53ca6
+    member_id: 0xa003fb8f
+  }
+}
+struct_union {
+  id: 0x13cfeaf0
+  kind: STRUCT
+  name: "snd_soc_tplg_widget_events"
+  definition {
+    bytesize: 16
+    member_id: 0x5cc798c1
+    member_id: 0x50510202
+  }
+}
+struct_union {
+  id: 0x770d8b8c
+  kind: STRUCT
+  name: "snd_timer"
+  definition {
+    bytesize: 464
+    member_id: 0x6f33e177
+    member_id: 0x6c9f86e4
+    member_id: 0x965f1ffc
+    member_id: 0x7a9be5e3
+    member_id: 0x3d39f582
+    member_id: 0xcc1294e2
+    member_id: 0x0dda8bac
+    member_id: 0x2d2d03cb
+    member_id: 0xad0fb0e9
+    member_id: 0x1823d926
+    member_id: 0xf21adddb
+    member_id: 0x567d898a
+    member_id: 0x97db0863
+    member_id: 0x2d1fe87c
+    member_id: 0x5adf788d
+    member_id: 0xce3ecd5a
+    member_id: 0xe9c3df3a
+    member_id: 0xc3c10aac
+    member_id: 0x48ddf3dd
+    member_id: 0xda774dce
+    member_id: 0xbf3ad522
+    member_id: 0xd0fbf13d
+    member_id: 0x2d081daa
+  }
+}
+struct_union {
+  id: 0x1c0ebea9
+  kind: STRUCT
+  name: "snd_timer_hardware"
+  definition {
+    bytesize: 104
+    member_id: 0x2d2d0138
+    member_id: 0x7fcbe549
+    member_id: 0x0385af98
+    member_id: 0xb3fa8c16
+    member_id: 0x60d3842f
+    member_id: 0xad980336
+    member_id: 0xcd5f73ef
+    member_id: 0xb5d87eb8
+    member_id: 0x4637bd7c
+    member_id: 0x69a4f61a
+    member_id: 0x0628acc9
+    member_id: 0x935d3998
+    member_id: 0x2d081d9c
+  }
+}
+struct_union {
+  id: 0xc8e8e4f1
+  kind: STRUCT
+  name: "snd_urb_ctx"
+  definition {
+    bytesize: 256
+    member_id: 0x3f51eb1f
+    member_id: 0x305177e3
+    member_id: 0x48baa384
+    member_id: 0xb5827b12
+    member_id: 0xad5e28c7
+    member_id: 0x483bc9b7
+    member_id: 0x2adf5778
+    member_id: 0xb06ecc6f
+    member_id: 0xb8c769bd
+  }
+}
+struct_union {
+  id: 0x43fa68d6
+  kind: STRUCT
+  name: "snd_usb_audio"
+  definition {
+    bytesize: 448
+    member_id: 0xad5e286c
+    member_id: 0xce349a4c
+    member_id: 0x6c9f8bc7
+    member_id: 0x8a7e5be3
+    member_id: 0x075c8af5
+    member_id: 0x877d5113
+    member_id: 0xad89857f
+    member_id: 0x5a8ce3de
+    member_id: 0x225682c9
+    member_id: 0x9e81e59e
+    member_id: 0x05a8e34b
+    member_id: 0x63640e02
+    member_id: 0xc871aeeb
+    member_id: 0x298abdd9
+    member_id: 0x4c24ed2f
+    member_id: 0x783e63f7
+    member_id: 0xc97080ef
+    member_id: 0x58187b9b
+    member_id: 0x8cb594de
+    member_id: 0x5201ec52
+    member_id: 0xb89868d5
+    member_id: 0xf7efa6ab
+    member_id: 0x137ecae6
+    member_id: 0xe2cb8acf
+    member_id: 0x80e66035
+    member_id: 0x20799ec4
+    member_id: 0x84ae6293
+    member_id: 0x300a07a6
+    member_id: 0xbdb80151
+    member_id: 0xfb1e4220
+    member_id: 0x94cca69f
+    member_id: 0xdda92c2e
+    member_id: 0xc69c650f
+    member_id: 0x2d081272
+    member_id: 0x63760f6c
+    member_id: 0xac89431c
+    member_id: 0xe0f63d43
+  }
+}
+struct_union {
+  id: 0xb7b99e10
+  kind: STRUCT
+  name: "snd_usb_clock_ref"
+  definition {
+    bytesize: 40
+    member_id: 0x459382e7
+    member_id: 0x1403255a
+    member_id: 0xe0f6c9e3
+    member_id: 0x5fb57bae
+    member_id: 0x5472dd8c
+    member_id: 0x7c00e79b
+  }
+}
+struct_union {
+  id: 0xbb815e3f
+  kind: STRUCT
+  name: "snd_usb_endpoint"
+  definition {
+    bytesize: 5776
+    member_id: 0xc6785d4f
+    member_id: 0xbb70df22
+    member_id: 0x62a690da
+    member_id: 0xe0f6c5cb
+    member_id: 0xad1c431e
+    member_id: 0x1c3934f3
+    member_id: 0x5c31f174
+    member_id: 0x81413fd2
+    member_id: 0x92c6375b
+    member_id: 0xc7a83ff7
+    member_id: 0x72872ac4
+    member_id: 0x90c1fac3
+    member_id: 0x074c5274
+    member_id: 0xbbf02f32
+    member_id: 0x9ec45d54
+    member_id: 0x6cdf2a62
+    member_id: 0x3feef7ab
+    member_id: 0x11a14a0a
+    member_id: 0x9c92d4d9
+    member_id: 0x0b6cdc5c
+    member_id: 0xf6bbf3f2
+    member_id: 0x54a4d18c
+    member_id: 0x9c81b085
+    member_id: 0x7cdb26d6
+    member_id: 0x5e6786ba
+    member_id: 0xf7e957a9
+    member_id: 0xaa5b83a9
+    member_id: 0x99a9a891
+    member_id: 0xdbefe5f2
+    member_id: 0x0a3f8c5f
+    member_id: 0x1beea273
+    member_id: 0x6b1f53ba
+    member_id: 0x8d8096c1
+    member_id: 0x4cc73741
+    member_id: 0x9af62beb
+    member_id: 0xe35e9914
+    member_id: 0x39cdf0ed
+    member_id: 0x4fcae8b0
+    member_id: 0xd40d27d0
+    member_id: 0xea527421
+    member_id: 0xbccab28d
+    member_id: 0xf740bb6e
+    member_id: 0x699bf8aa
+    member_id: 0x3316a2a2
+    member_id: 0xb1694b94
+    member_id: 0x3031a149
+    member_id: 0xf820ab53
+    member_id: 0xab6f20ab
+    member_id: 0x5e10fd0f
+    member_id: 0xb0732d0b
+    member_id: 0xd49a75eb
+    member_id: 0x079f821d
+    member_id: 0x5472d811
+    member_id: 0x02f79d12
+    member_id: 0x2899a5e8
+    member_id: 0x15c836df
+    member_id: 0x4a281c7b
+    member_id: 0xc593684b
+    member_id: 0x50989b56
+    member_id: 0x9c3b5585
+    member_id: 0x92b660f8
+    member_id: 0xb34b435a
+    member_id: 0x0f396cf3
+    member_id: 0x2d1fea10
+    member_id: 0x7c00e287
+    member_id: 0x2d08194b
+    member_id: 0x6376095f
+    member_id: 0xac894f0c
+    member_id: 0xe0f6381a
+  }
+}
+struct_union {
+  id: 0xed759acf
+  kind: STRUCT
+  name: "snd_usb_iface_ref"
+  definition {
+    bytesize: 32
+    member_id: 0x81413815
+    member_id: 0x5472dfa8
+    member_id: 0xe0f6c039
+    member_id: 0xed0f8396
+    member_id: 0x7c00e690
+  }
+}
+struct_union {
+  id: 0xb49bd643
+  kind: STRUCT
+  name: "snd_usb_packet_info"
+  definition {
+    bytesize: 196
+    member_id: 0xb0700f6d
+    member_id: 0x483bc789
+  }
+}
+struct_union {
+  id: 0x0cc547b2
+  kind: STRUCT
+  name: "snd_usb_power_domain"
+  definition {
+    bytesize: 12
+    member_id: 0x0e0f4b25
+    member_id: 0x24dcb717
+    member_id: 0xa3f385a4
+  }
+}
+struct_union {
+  id: 0x8a6789b1
+  kind: STRUCT
+  name: "snd_usb_stream"
+  definition {
+    bytesize: 456
+    member_id: 0xc6785d4f
+    member_id: 0xa60a47a9
+    member_id: 0xa6de1752
+    member_id: 0x2a040fd0
+    member_id: 0x87496810
+    member_id: 0x7c00e65a
+  }
+}
+struct_union {
+  id: 0x08a804af
+  kind: STRUCT
+  name: "snd_usb_substream"
+  definition {
+    bytesize: 208
+    member_id: 0xc01f41e7
+    member_id: 0xce349a4c
+    member_id: 0xb1c38868
+    member_id: 0xa0ffe776
+    member_id: 0xd28d836d
+    member_id: 0x15c83da7
+    member_id: 0x4d41138a
+    member_id: 0x8ca4039d
+    member_id: 0x305e2804
+    member_id: 0xd84fbda6
+    member_id: 0x2a040547
+    member_id: 0x3b313ebb
+    member_id: 0x9e2efb28
+    member_id: 0x0492e97a
+    member_id: 0x3d77e8c3
+    member_id: 0xfaea6330
+    member_id: 0x6fe5be72
+    member_id: 0xb6590178
+    member_id: 0xcd47b1ad
+    member_id: 0xabb0a664
+    member_id: 0x1c1b9943
+    member_id: 0x1f84d6b1
+    member_id: 0x349fecf2
+    member_id: 0x2d5bf9c9
+    member_id: 0xa0af0fa0
+    member_id: 0x28d35b80
+    member_id: 0x7bcccefc
+    member_id: 0x608f71fe
+    member_id: 0x2d1fe606
+    member_id: 0xc312300f
+    member_id: 0xc6d7422d
+    member_id: 0xe42cffef
+    member_id: 0x079f80c5
+    member_id: 0x32f10052
+    member_id: 0x2d081c8a
+  }
+}
+struct_union {
+  id: 0x74799f87
+  kind: STRUCT
+  name: "soc_device"
+  definition {
+    bytesize: 928
+    member_id: 0xce1ac149
+    member_id: 0x8c2a0595
+    member_id: 0x3de92190
+  }
+}
+struct_union {
+  id: 0x90d464ca
+  kind: STRUCT
+  name: "soc_device_attribute"
+  definition {
+    bytesize: 56
+    member_id: 0xcddaac12
+    member_id: 0x9e6bbc49
+    member_id: 0x9496c5ec
+    member_id: 0xff69e65c
+    member_id: 0x66ef8354
+    member_id: 0xffab3cbe
+    member_id: 0x91afab90
+  }
+}
+struct_union {
+  id: 0x4ff92706
+  kind: STRUCT
+  name: "soc_enum"
+  definition {
+    bytesize: 112
+    member_id: 0x0f27a2eb
+    member_id: 0x67d3dfb0
+    member_id: 0xc35b4798
+    member_id: 0xb7cc478b
+    member_id: 0xa876e5c8
+    member_id: 0x916d04d9
+    member_id: 0x0fac9b76
+    member_id: 0x400af110
+    member_id: 0xb0684d85
+    member_id: 0x2d081688
+  }
+}
+struct_union {
+  id: 0x5f502f26
+  kind: STRUCT
+  name: "sock"
+  definition {
+    bytesize: 856
+    member_id: 0x8ca3627c
+    member_id: 0xc25e0cf5
+    member_id: 0xf13f5358
+    member_id: 0x8fa4d047
+    member_id: 0x041b803c
+    member_id: 0x68a80f57
+    member_id: 0x86bee79d
+    member_id: 0xec22ac4e
+    member_id: 0xca65981b
+    member_id: 0xb11b219c
+    member_id: 0xdccd2ca6
+    member_id: 0xc8fa3812
+    member_id: 0x69be7cba
+    member_id: 0xa5fca811
+    member_id: 0x519959d7
+    member_id: 0x8a1dbb2d
+    member_id: 0xbbf2e8a0
+    member_id: 0x3bc43305
+    member_id: 0x729e4302
+    member_id: 0x146c2e15
+    member_id: 0x1d9e94f8
+    member_id: 0xdeaf9b88
+    member_id: 0x268f3cf0
+    member_id: 0xca81d80d
+    member_id: 0x6e06265d
+    member_id: 0x3f155004
+    member_id: 0xbcb23072
+    member_id: 0x2c5225af
+    member_id: 0x9a7248d0
+    member_id: 0x115e6000
+    member_id: 0xed8db781
+    member_id: 0x618f67aa
+    member_id: 0xa83bf5b5
+    member_id: 0x23b3d623
+    member_id: 0x7e278858
+    member_id: 0xe25d0220
+    member_id: 0xb7cb7b64
+    member_id: 0xdfc44efd
+    member_id: 0x97af3a36
+    member_id: 0x0e7639a8
+    member_id: 0x5318e58c
+    member_id: 0x00e91683
+    member_id: 0x6b378204
+    member_id: 0x80fe1e64
+    member_id: 0x5342b566
+    member_id: 0xb60a80ee
+    member_id: 0xbfd7b468
+    member_id: 0x9987a493
+    member_id: 0x908a54de
+    member_id: 0x268da99f
+    member_id: 0x2b1ecd8e
+    member_id: 0xda646e4a
+    member_id: 0xe5adeb29
+    member_id: 0x8440bea9
+    member_id: 0xc26863a7
+    member_id: 0x4e05e58e
+    member_id: 0x8fb33fea
+    member_id: 0x732f4228
+    member_id: 0xef6f3039
+    member_id: 0x4c474af2
+    member_id: 0x88640c5c
+    member_id: 0x43fd69bd
+    member_id: 0x330c590c
+    member_id: 0x37d516ac
+    member_id: 0xed4f8cde
+    member_id: 0x78172a1f
+    member_id: 0x3c13fa71
+    member_id: 0x5f82102c
+    member_id: 0xf3f896c7
+    member_id: 0xc251838d
+    member_id: 0x1e808a18
+    member_id: 0xe1e14251
+    member_id: 0xf0cb1cd4
+    member_id: 0xa92e39cb
+    member_id: 0x094e9a19
+    member_id: 0x3854487c
+    member_id: 0xa49d0352
+    member_id: 0x4ccefd51
+    member_id: 0x01b872f2
+    member_id: 0x30149a66
+    member_id: 0x517e951b
+    member_id: 0x4fd32333
+    member_id: 0x7bf5e4e6
+    member_id: 0x072b7087
+    member_id: 0x6b6b8b1a
+    member_id: 0x7190919f
+    member_id: 0xd530344e
+    member_id: 0xf4dbc66f
+    member_id: 0x0a72fbcd
+    member_id: 0x30a93d3a
+    member_id: 0xad5a8590
+    member_id: 0xdcf9b6f4
+    member_id: 0xf68cf2ba
+    member_id: 0xd671c04e
+    member_id: 0x2d081fcf
+    member_id: 0x637600b8
+    member_id: 0xac89408e
+    member_id: 0xe0f63a29
+    member_id: 0x22369d4d
+    member_id: 0x66775644
+    member_id: 0xa1b7d0b3
+    member_id: 0xe3f4b8d7
+  }
+}
+struct_union {
+  id: 0xd1fefc64
+  kind: STRUCT
+  name: "sock_cgroup_data"
+  definition {
+    bytesize: 16
+    member_id: 0x6db4695a
+    member_id: 0x9641c4b5
+  }
+}
+struct_union {
+  id: 0x61a74d47
+  kind: STRUCT
+  name: "sock_common"
+  definition {
+    bytesize: 136
+    member_id: 0x3e4f626d
+    member_id: 0x3154e149
+    member_id: 0x31aa1057
+    member_id: 0xb9240646
+    member_id: 0x4db4db53
+    member_id: 0x0a79af2d
+    member_id: 0xb4ad6c03
+    member_id: 0x378f034f
+    member_id: 0x79ef737e
+    member_id: 0x2a60e3da
+    member_id: 0x3dccc171
+    member_id: 0x6fa16348
+    member_id: 0x6c53f160
+    member_id: 0x9ba46ff7
+    member_id: 0x5baedae6
+    member_id: 0xe1e6717e
+    member_id: 0x3f37220a
+    member_id: 0x759600c5
+    member_id: 0x3eea17c5
+    member_id: 0x6467aea5
+    member_id: 0x3355d7fa
+    member_id: 0x36c9824c
+    member_id: 0x45e71f8b
+    member_id: 0xb06b37f6
+    member_id: 0x3be2aae8
+  }
+}
+struct_union {
+  id: 0xa90d2a4f
+  kind: STRUCT
+  name: "sock_diag_handler"
+  definition {
+    bytesize: 32
+    member_id: 0x9ee64fa7
+    member_id: 0x0a7edde6
+    member_id: 0x1d985f71
+    member_id: 0xa4db947c
+  }
+}
+struct_union {
+  id: 0x6c1b2db0
+  kind: STRUCT
+  name: "sock_filter"
+  definition {
+    bytesize: 8
+    member_id: 0x5408e744
+    member_id: 0x68e4869b
+    member_id: 0xf599ee88
+    member_id: 0x69c19b08
+  }
+}
+struct_union {
+  id: 0x835c8221
+  kind: STRUCT
+  name: "sock_fprog_kern"
+  definition {
+    bytesize: 16
+    member_id: 0xb89498e9
+    member_id: 0xa31a07f1
+  }
+}
+struct_union {
+  id: 0xe6d736b2
+  kind: STRUCT
+  name: "sock_reuseport"
+  definition {
+    bytesize: 48
+    member_id: 0x95dac977
+    member_id: 0x9213bcc2
+    member_id: 0xa373c7a6
+    member_id: 0xdd3030e0
+    member_id: 0x8e55a040
+    member_id: 0x8e7c5fc5
+    member_id: 0x26e4f244
+    member_id: 0x5ee2d781
+    member_id: 0x0f2de2c4
+    member_id: 0x982b41f7
+    member_id: 0xd0f5b33e
+  }
+}
+struct_union {
+  id: 0xf90dfce8
+  kind: STRUCT
+  name: "sockaddr"
+  definition {
+    bytesize: 16
+    member_id: 0xac335a9e
+    member_id: 0x6f6a03e4
+  }
+}
+struct_union {
+  id: 0x75918642
+  kind: STRUCT
+  name: "sockaddr_tipc"
+  definition {
+    bytesize: 16
+    member_id: 0x9e9c961c
+    member_id: 0x92d3d6a1
+    member_id: 0x3485b8be
+    member_id: 0x24481993
+  }
+}
+struct_union {
+  id: 0x14637955
+  kind: STRUCT
+  name: "sockaddr_vm"
+  definition {
+    bytesize: 16
+    member_id: 0x2bb44e63
+    member_id: 0x353b8efe
+    member_id: 0x8baea52d
+    member_id: 0xa8bfaeca
+    member_id: 0xa8def237
+    member_id: 0x6291bd31
+  }
+}
+struct_union {
+  id: 0x69c59f65
+  kind: STRUCT
+  name: "sockcm_cookie"
+  definition {
+    bytesize: 16
+    member_id: 0x1b258baa
+    member_id: 0x8196a86b
+    member_id: 0x19ec4c5d
+  }
+}
+struct_union {
+  id: 0x6bc04187
+  kind: STRUCT
+  name: "socket"
+  definition {
+    bytesize: 128
+    member_id: 0x7272eff8
+    member_id: 0x5ce6e968
+    member_id: 0x2d5bf5db
+    member_id: 0xbf9f37c9
+    member_id: 0x828c817c
+    member_id: 0xafbe4034
+    member_id: 0x22b7f1fc
+  }
+}
+struct_union {
+  id: 0x5eee2044
+  kind: STRUCT
+  name: "socket_wq"
+  definition {
+    bytesize: 64
+    member_id: 0x202d9792
+    member_id: 0x7060704a
+    member_id: 0x2d5bf191
+    member_id: 0x95daceb0
+  }
+}
+struct_union {
+  id: 0x06066110
+  kind: STRUCT
+  name: "softnet_data"
+  definition {
+    bytesize: 768
+    member_id: 0x73a6e99a
+    member_id: 0xbfe14d2f
+    member_id: 0xbe13f636
+    member_id: 0x94576740
+    member_id: 0x8a09e2e8
+    member_id: 0xbde0a66c
+    member_id: 0xe809ed63
+    member_id: 0x734f3a83
+    member_id: 0x4ba4fb13
+    member_id: 0x48a832aa
+    member_id: 0xb6e43317
+    member_id: 0x7505e6cc
+    member_id: 0x03faa0b9
+    member_id: 0xb8c846ec
+    member_id: 0x51431e4e
+    member_id: 0x8f3e1d1a
+    member_id: 0xcc4efcb4
+    member_id: 0x762f7391
+    member_id: 0x603118f2
+    member_id: 0x9a8b61e0
+    member_id: 0x81689872
+    member_id: 0x1bbf5875
+    member_id: 0x3192c2ff
+    member_id: 0x454aae2a
+  }
+}
+struct_union {
+  id: 0x98793b4d
+  kind: STRUCT
+  name: "software_node"
+  definition {
+    bytesize: 24
+    member_id: 0x0de57ce8
+    member_id: 0x720565ca
+    member_id: 0x3f74c084
+  }
+}
+struct_union {
+  id: 0x2936ac20
+  kind: STRUCT
+  name: "spi_controller"
+  definition {
+    bytesize: 1568
+    member_id: 0xce1ac149
+    member_id: 0x7c00e5d1
+    member_id: 0xbc9a0684
+    member_id: 0xab6f5061
+    member_id: 0x8dd118a9
+    member_id: 0x18fb1318
+    member_id: 0x794ca0b3
+    member_id: 0xbd35fbdb
+    member_id: 0xd0acf743
+    member_id: 0x195fe4f2
+    member_id: 0x2df9cec4
+    member_id: 0x68ca31a9
+    member_id: 0xcf7ccab0
+    member_id: 0xa0a3dcbe
+    member_id: 0xf04826fc
+    member_id: 0xc85963fa
+    member_id: 0xfbf6c3d8
+    member_id: 0xcb53fa2e
+    member_id: 0xeda60a91
+    member_id: 0xf64ef717
+    member_id: 0x84e59375
+    member_id: 0x6eff7727
+    member_id: 0x627f3625
+    member_id: 0x200c257e
+    member_id: 0xe1176b8d
+    member_id: 0x04ffa34f
+    member_id: 0xa21ac6ac
+    member_id: 0xe74765cd
+    member_id: 0x2ad503ad
+    member_id: 0x6f628ccf
+    member_id: 0xa5987b16
+    member_id: 0x168182f6
+    member_id: 0xad01c6a9
+    member_id: 0x8475cda7
+    member_id: 0x27d4ac0a
+    member_id: 0xed426229
+    member_id: 0xb09c325b
+    member_id: 0x60bc6d79
+    member_id: 0xad05e736
+    member_id: 0x4fe0bd93
+    member_id: 0xc5fa3041
+    member_id: 0x0f783ecd
+    member_id: 0xa4c25843
+    member_id: 0x481f377d
+    member_id: 0x64aebb60
+    member_id: 0x768fe3f7
+    member_id: 0xb37d3271
+    member_id: 0xc7c39494
+    member_id: 0x9e82faf8
+    member_id: 0x13f81a2b
+    member_id: 0x753caf5a
+    member_id: 0x62f6d1c9
+    member_id: 0xcfbcfdf1
+    member_id: 0xcb69bf92
+    member_id: 0x32830a22
+    member_id: 0x06f5eeb8
+    member_id: 0xae599ff2
+    member_id: 0xb713e7eb
+    member_id: 0xa5c65b9e
+    member_id: 0x94b75d05
+    member_id: 0x84d0956a
+    member_id: 0x7b864e19
+    member_id: 0xb1b51cdd
+    member_id: 0x297f5e4a
+    member_id: 0x28a6404f
+    member_id: 0xf20c003b
+    member_id: 0xc2a8860c
+    member_id: 0xa40db181
+    member_id: 0xd3b103c3
+    member_id: 0x3ff2fd41
+    member_id: 0xa9229fec
+    member_id: 0x0a41a364
+    member_id: 0x2d081dc5
+    member_id: 0x63760628
+  }
+}
+struct_union {
+  id: 0x4732cc52
+  kind: STRUCT
+  name: "spi_controller_mem_caps"
+  definition {
+    bytesize: 2
+    member_id: 0xb06d8177
+    member_id: 0x35b6d5ce
+  }
+}
+struct_union {
+  id: 0x82bb5d79
+  kind: STRUCT
+  name: "spi_controller_mem_ops"
+  definition {
+    bytesize: 72
+    member_id: 0xbc9ff97c
+    member_id: 0x2138b2e5
+    member_id: 0x4ff53cc7
+    member_id: 0x1a6878f3
+    member_id: 0x4f12e4ce
+    member_id: 0xdd19f9e4
+    member_id: 0x730d35b8
+    member_id: 0xef3c267f
+    member_id: 0x221e202e
+  }
+}
+struct_union {
+  id: 0x120d5977
+  kind: STRUCT
+  name: "spi_delay"
+  definition {
+    bytesize: 4
+    member_id: 0xa099117b
+    member_id: 0xff7f7afa
+  }
+}
+struct_union {
+  id: 0x61420f91
+  kind: STRUCT
+  name: "spi_device"
+  definition {
+    bytesize: 1048
+    member_id: 0xce1ac149
+    member_id: 0xd8154742
+    member_id: 0x3a7e0a8f
+    member_id: 0x195fee4a
+    member_id: 0x951e9a43
+    member_id: 0x3657755f
+    member_id: 0x4fe0b9e7
+    member_id: 0x875419a3
+    member_id: 0x99159922
+    member_id: 0xd414012b
+    member_id: 0x608f2d5b
+    member_id: 0x2f2ce8a8
+    member_id: 0x09f1fe6b
+    member_id: 0x7c8cfa37
+    member_id: 0xbf9497f3
+    member_id: 0x6d4d08d1
+    member_id: 0x80f06bf6
+    member_id: 0x03957d5a
+    member_id: 0xb1b51a2e
+    member_id: 0x2d0815a4
+    member_id: 0x63760e1a
+  }
+}
+struct_union {
+  id: 0x29d16967
+  kind: STRUCT
+  name: "spi_device_id"
+  definition {
+    bytesize: 40
+    member_id: 0x0d81b30a
+    member_id: 0x6d08aa33
+  }
+}
+struct_union {
+  id: 0xe0860905
+  kind: STRUCT
+  name: "spi_driver"
+  definition {
+    bytesize: 216
+    member_id: 0xc4fcce2a
+    member_id: 0xd77adbdc
+    member_id: 0xb4ac435e
+    member_id: 0x9efaa2c8
+    member_id: 0xd4ad4cc3
+    member_id: 0x2d08161e
+  }
+}
+struct_union {
+  id: 0x2a7f980e
+  kind: STRUCT
+  name: "spi_mem"
+  definition {
+    bytesize: 24
+    member_id: 0xd0391c44
+    member_id: 0xacd4449f
+    member_id: 0x0de5752a
+  }
+}
+struct_union {
+  id: 0x685249c5
+  kind: STRUCT
+  name: "spi_mem_dirmap_desc"
+  definition {
+    bytesize: 96
+    member_id: 0x5201b424
+    member_id: 0xcd0027db
+    member_id: 0xb372aead
+    member_id: 0x59119a9c
+  }
+}
+struct_union {
+  id: 0x5c204eda
+  kind: STRUCT
+  name: "spi_mem_dirmap_info"
+  definition {
+    bytesize: 72
+    member_id: 0x4fc39784
+    member_id: 0x9b8ef880
+    member_id: 0xb5ff4a73
+  }
+}
+struct_union {
+  id: 0xeb8a4494
+  kind: STRUCT
+  name: "spi_mem_driver"
+  definition {
+    bytesize: 240
+    member_id: 0xb4331c8b
+    member_id: 0xd77bf4ee
+    member_id: 0xb48e2635
+    member_id: 0x9efb8dea
+  }
+}
+struct_union {
+  id: 0x4a4e49a4
+  kind: STRUCT
+  name: "spi_mem_op"
+  definition {
+    bytesize: 56
+    member_id: 0x1a2e13d9
+    member_id: 0x241316d1
+    member_id: 0x1ad262cc
+    member_id: 0xffa0df76
+  }
+}
+struct_union {
+  id: 0xad3d41de
+  kind: STRUCT
+  name: "spi_message"
+  definition {
+    bytesize: 120
+    member_id: 0x0961d7f5
+    member_id: 0xd0391586
+    member_id: 0x35d38cf1
+    member_id: 0x4a569c82
+    member_id: 0x41af8238
+    member_id: 0x4c4363e9
+    member_id: 0x81433876
+    member_id: 0x20000020
+    member_id: 0xad01caaa
+    member_id: 0x72eb471d
+    member_id: 0x19962ffa
+    member_id: 0xcdf96d0a
+    member_id: 0x2d081f94
+  }
+}
+struct_union {
+  id: 0x61778ba5
+  kind: STRUCT
+  name: "spi_statistics"
+  definition {
+    bytesize: 224
+    member_id: 0x0d9bbc25
+    member_id: 0xad82d082
+    member_id: 0x098825a7
+    member_id: 0x636e28e5
+    member_id: 0xfa10391b
+    member_id: 0xde006f81
+    member_id: 0x0e0edcb3
+    member_id: 0x7f6db6ac
+    member_id: 0x5c14d3b5
+    member_id: 0xf2787e23
+    member_id: 0xfa1854d0
+    member_id: 0x76535001
+    member_id: 0xb6bedb22
+  }
+}
+struct_union {
+  id: 0xd6581015
+  kind: STRUCT
+  name: "spi_transfer"
+  definition {
+    bytesize: 152
+    member_id: 0xa2a430f0
+    member_id: 0xfeaea0f0
+    member_id: 0xb84059f2
+    member_id: 0x41957937
+    member_id: 0x98bca5e0
+    member_id: 0x2862bcb8
+    member_id: 0x2ab1386a
+    member_id: 0xd22ca869
+    member_id: 0x27d98434
+    member_id: 0x2206cfe9
+    member_id: 0xb864c802
+    member_id: 0xcca82bfa
+    member_id: 0x36577ef8
+    member_id: 0x8428a860
+    member_id: 0x246f0250
+    member_id: 0xbf9497dd
+    member_id: 0x5ba71926
+    member_id: 0x39726e08
+    member_id: 0x03204e7e
+    member_id: 0xaf603918
+    member_id: 0xc58bd4db
+    member_id: 0x9ee8b243
+    member_id: 0xd1752f0b
+    member_id: 0x7f979426
+    member_id: 0x2d081bee
+  }
+}
+struct_union {
+  id: 0x08dbd935
+  kind: STRUCT
+  name: "spinlock"
+  definition {
+    bytesize: 4
+    member_id: 0x309d59f5
+  }
+}
+struct_union {
+  id: 0xd9b2c095
+  kind: STRUCT
+  name: "splice_desc"
+  definition {
+    bytesize: 56
+    member_id: 0xaebc880a
+    member_id: 0xb84054d1
+    member_id: 0x2d2d08bb
+    member_id: 0xec3d71ae
+    member_id: 0x2683b77a
+    member_id: 0x002ee513
+    member_id: 0x884a3c8a
+    member_id: 0x66ced5ce
+  }
+}
+struct_union {
+  id: 0x79dc46b1
+  kind: STRUCT
+  name: "spmi_controller"
+  definition {
+    bytesize: 952
+    member_id: 0xce1ac149
+    member_id: 0xd1e7bafc
+    member_id: 0x1a3c4a7d
+    member_id: 0x90968fd2
+    member_id: 0x137bb5d0
+    member_id: 0x2d081db8
+  }
+}
+struct_union {
+  id: 0x59d491e4
+  kind: STRUCT
+  name: "spmi_device"
+  definition {
+    bytesize: 928
+    member_id: 0xce1ac149
+    member_id: 0x699ae613
+    member_id: 0xb03da298
+  }
+}
+struct_union {
+  id: 0x8fda1bd5
+  kind: STRUCT
+  name: "spmi_driver"
+  definition {
+    bytesize: 208
+    member_id: 0xd4ad4c68
+    member_id: 0xd77a3f94
+    member_id: 0xb4acaf96
+    member_id: 0x9efa42bc
+    member_id: 0x2d081c8a
+  }
+}
+struct_union {
+  id: 0xd2de9eb7
+  kind: STRUCT
+  name: "srcu_data"
+  definition {
+    bytesize: 384
+    member_id: 0x0ccfa81f
+    member_id: 0x53453710
+    member_id: 0x2d1fe79d
+    member_id: 0x30425f7e
+    member_id: 0xbd203ddf
+    member_id: 0x9152fa11
+    member_id: 0xb531ef3f
+    member_id: 0x0b72420c
+    member_id: 0xd6e66228
+    member_id: 0x4c85ba2b
+    member_id: 0x80169552
+    member_id: 0x55f3e00d
+    member_id: 0x5161bf8c
+    member_id: 0x37e1e601
+  }
+}
+struct_union {
+  id: 0x7c0ab363
+  kind: STRUCT
+  name: "srcu_node"
+  definition {
+    bytesize: 96
+    member_id: 0x2d1fec85
+    member_id: 0xa3895fa8
+    member_id: 0xa5160237
+    member_id: 0x9152fadb
+    member_id: 0x862aabd3
+    member_id: 0x74abc2ae
+    member_id: 0xba1b040e
+  }
+}
+struct_union {
+  id: 0x97905ec6
+  kind: STRUCT
+  name: "srcu_notifier_head"
+  definition {
+    bytesize: 536
+    member_id: 0xad898302
+    member_id: 0x2b8894ec
+    member_id: 0xb5410326
+  }
+}
+struct_union {
+  id: 0xa46efa19
+  kind: STRUCT
+  name: "srcu_struct"
+  definition {
+    bytesize: 480
+    member_id: 0x0f609c3b
+    member_id: 0x86ad6aa3
+    member_id: 0x777dcfbf
+    member_id: 0xb2ae348c
+    member_id: 0x2d1feeb8
+    member_id: 0x4b6a96b7
+    member_id: 0x2756310e
+    member_id: 0xbecccede
+    member_id: 0xbd203145
+    member_id: 0x9152f92a
+    member_id: 0x31674242
+    member_id: 0xac03d96a
+    member_id: 0x1b45dd20
+    member_id: 0x207cc20e
+    member_id: 0x375e3f50
+    member_id: 0x30aeb36e
+    member_id: 0xcd3582bb
+    member_id: 0xfc2e5f88
+    member_id: 0xcc2d8179
+    member_id: 0x7bca816d
+    member_id: 0xc17e127a
+    member_id: 0xe7a82cb4
+    member_id: 0xbd1dca9a
+    member_id: 0xd6084d90
+    member_id: 0xca5e395d
+  }
+}
+struct_union {
+  id: 0x69e3fc22
+  kind: STRUCT
+  name: "static_call_key"
+  definition {
+    bytesize: 8
+    member_id: 0x21176cd3
+  }
+}
+struct_union {
+  id: 0x906b5bab
+  kind: STRUCT
+  name: "static_key"
+  definition {
+    bytesize: 16
+    member_id: 0x3a34937f
+    member_id: 0x33b8905f
+  }
+}
+struct_union {
+  id: 0x8e47c273
+  kind: STRUCT
+  name: "static_key_false"
+  definition {
+    bytesize: 16
+    member_id: 0x20c661f5
+  }
+}
+struct_union {
+  id: 0x812c7505
+  kind: STRUCT
+  name: "static_key_mod"
+  definition {
+    bytesize: 24
+    member_id: 0x11d9dbfb
+    member_id: 0xbe4d6d19
+    member_id: 0x8c1b664f
+  }
+}
+struct_union {
+  id: 0xd2755d5f
+  kind: STRUCT
+  name: "static_key_true"
+  definition {
+    bytesize: 16
+    member_id: 0x20c661f5
+  }
+}
+struct_union {
+  id: 0xdce3c92e
+  kind: STRUCT
+  name: "std_timing"
+  definition {
+    bytesize: 2
+    member_id: 0xe3312595
+    member_id: 0xfc548b06
+  }
+}
+struct_union {
+  id: 0x228ed64b
+  kind: STRUCT
+  name: "string_stream"
+  definition {
+    bytesize: 48
+    member_id: 0xb5995730
+    member_id: 0x8f57226c
+    member_id: 0x2d1fe44c
+    member_id: 0x8db2ffbd
+    member_id: 0x8b338b1d
+  }
+}
+struct_union {
+  id: 0xdfb2a9e2
+  kind: STRUCT
+  name: "subsys_private"
+  definition {
+    bytesize: 576
+    member_id: 0x9ad9d27f
+    member_id: 0xcb5febda
+    member_id: 0x54b2e4db
+    member_id: 0xad898452
+    member_id: 0x375fc1ed
+    member_id: 0x96ee9832
+    member_id: 0x62cbccd9
+    member_id: 0x18897274
+    member_id: 0x12f21060
+    member_id: 0xdad3e0fd
+    member_id: 0xab2426d6
+    member_id: 0x866b1acd
+  }
+}
+struct_union {
+  id: 0xb1f94634
+  kind: STRUCT
+  name: "super_block"
+  definition {
+    bytesize: 1536
+    member_id: 0xa9144905
+    member_id: 0xf182a49a
+    member_id: 0x238ec0d5
+    member_id: 0xabc06340
+    member_id: 0xaace0885
+    member_id: 0x906a90c7
+    member_id: 0x5639cf6f
+    member_id: 0x10c97e90
+    member_id: 0x4cf676cc
+    member_id: 0x5acb0923
+    member_id: 0x0fb000e6
+    member_id: 0x3e26675d
+    member_id: 0x254d63e8
+    member_id: 0xbdb2f3ed
+    member_id: 0xf6216f18
+    member_id: 0xc88affe3
+    member_id: 0x0d3ddc09
+    member_id: 0x0bbf6cb2
+    member_id: 0xfa02d09d
+    member_id: 0x04c93e42
+    member_id: 0x6b84af04
+    member_id: 0x048b499d
+    member_id: 0x0f33881d
+    member_id: 0x473fbbcf
+    member_id: 0xc13bbd62
+    member_id: 0xdef113f4
+    member_id: 0x5c264fc4
+    member_id: 0x47c7f2aa
+    member_id: 0x918eb782
+    member_id: 0x3a798b1e
+    member_id: 0xc1ddefc6
+    member_id: 0x70a8dfe7
+    member_id: 0x1266cb98
+    member_id: 0xb07b1578
+    member_id: 0x4e758ec6
+    member_id: 0x3dd2dfb0
+    member_id: 0xadcfb23e
+    member_id: 0x8052ccfc
+    member_id: 0xd705f803
+    member_id: 0x2474874d
+    member_id: 0x4165ab3e
+    member_id: 0xaba86e4d
+    member_id: 0xedf4ce77
+    member_id: 0x166d99fd
+    member_id: 0x86d6c6f8
+    member_id: 0x3258ef89
+    member_id: 0x350a8baf
+    member_id: 0x469aa420
+    member_id: 0x27fea713
+    member_id: 0x24528520
+    member_id: 0x991030ac
+    member_id: 0x6ba2c35c
+    member_id: 0x69080c31
+    member_id: 0xc3db728d
+    member_id: 0x5c40ac73
+    member_id: 0x48954bf1
+    member_id: 0x1f8277ea
+    member_id: 0x95daca08
+    member_id: 0x83803bb9
+    member_id: 0x91d3c1a8
+    member_id: 0xfcc485bf
+    member_id: 0x84958409
+    member_id: 0x952b2aef
+    member_id: 0x40818645
+    member_id: 0x681f8906
+  }
+}
+struct_union {
+  id: 0xccdccc08
+  kind: STRUCT
+  name: "super_operations"
+  definition {
+    bytesize: 200
+    member_id: 0x5acf0712
+    member_id: 0x2eb7b28b
+    member_id: 0x6f43c6d6
+    member_id: 0xcd7da86d
+    member_id: 0x1465c659
+    member_id: 0xda291e19
+    member_id: 0x51a47e4c
+    member_id: 0xb1102fe3
+    member_id: 0x57f195a4
+    member_id: 0xebc21405
+    member_id: 0xe14102c7
+    member_id: 0xfc7b6f7e
+    member_id: 0x0645ccd5
+    member_id: 0x5f909c12
+    member_id: 0x01c9719c
+    member_id: 0x1d0d795b
+    member_id: 0x5047db0e
+    member_id: 0xef063991
+    member_id: 0x1ab34824
+    member_id: 0xe3c0912d
+    member_id: 0xfdfa0099
+    member_id: 0x8d5eaaec
+    member_id: 0xa55c212a
+    member_id: 0x2ee53739
+    member_id: 0xf5d2401f
+  }
+}
+struct_union {
+  id: 0x7c5dac4b
+  kind: STRUCT
+  name: "swait_queue_head"
+  definition {
+    bytesize: 24
+    member_id: 0x2d244e18
+    member_id: 0x7ef000f8
+  }
+}
+struct_union {
+  id: 0x5fb59157
+  kind: STRUCT
+  name: "swap_cluster_info"
+  definition {
+    bytesize: 8
+    member_id: 0x2d1fec85
+    member_id: 0xc8691905
+    member_id: 0x4db09f5f
+  }
+}
+struct_union {
+  id: 0x696e069f
+  kind: STRUCT
+  name: "swap_cluster_list"
+  definition {
+    bytesize: 16
+    member_id: 0xb5050c90
+    member_id: 0xeec21189
+  }
+}
+struct_union {
+  id: 0xa59b2946
+  kind: STRUCT
+  name: "swap_info_struct"
+  definition {
+    bytesize: 296
+    member_id: 0x8593b21b
+    member_id: 0x2d5bf8f8
+    member_id: 0xa9622e6c
+    member_id: 0x7cbf151d
+    member_id: 0x5c0c6f5c
+    member_id: 0x97b38255
+    member_id: 0xd08ccfb0
+    member_id: 0x7e7f8e15
+    member_id: 0x5afe9f54
+    member_id: 0xcb44bc4a
+    member_id: 0x90fb51f7
+    member_id: 0x780f0485
+    member_id: 0xaeb3050f
+    member_id: 0x6755cf0e
+    member_id: 0x956344f0
+    member_id: 0xebca4c47
+    member_id: 0xdcc5c8a3
+    member_id: 0xec19f1e8
+    member_id: 0x51f02ed6
+    member_id: 0xe1d98483
+    member_id: 0x9aa7dbb8
+    member_id: 0x999f496f
+    member_id: 0x2d1feba0
+    member_id: 0x3c122913
+    member_id: 0x9de4bcbd
+    member_id: 0x6f393deb
+    member_id: 0xed7002a7
+    member_id: 0xaa88e059
+  }
+}
+struct_union {
+  id: 0x823e5f02
+  kind: STRUCT
+  name: "swap_iocb"
+  definition {
+    bytesize: 568
+    member_id: 0xa393a6c9
+    member_id: 0x4eb0980b
+    member_id: 0x782da905
+    member_id: 0xb862f266
+  }
+}
+struct_union {
+  id: 0x9036114e
+  kind: STRUCT
+  name: "symtab"
+  definition {
+    bytesize: 24
+    member_id: 0xb6cd92ad
+    member_id: 0xb4f51360
+  }
+}
+struct_union {
+  id: 0xf5cf19c0
+  kind: STRUCT
+  name: "sync_file"
+  definition {
+    bytesize: 120
+    member_id: 0xbf9f3e0b
+    member_id: 0xf44982ea
+    member_id: 0xd1c4a29b
+    member_id: 0x22ea8280
+    member_id: 0x2d5bf743
+    member_id: 0xcec81fbe
+    member_id: 0x534a05c6
+  }
+}
+struct_union {
+  id: 0x7ecbaeb2
+  kind: STRUCT
+  name: "synth_field_desc"
+  definition {
+    bytesize: 16
+    member_id: 0x5c68c5cb
+    member_id: 0x0de57809
+  }
+}
+struct_union {
+  id: 0x9f53bf8e
+  kind: STRUCT
+  name: "sys_off_data"
+  definition {
+    bytesize: 24
+    member_id: 0x87fa354d
+    member_id: 0xd8f42eb6
+    member_id: 0x1a2ec7f8
+  }
+}
+struct_union {
+  id: 0xff832d5d
+  kind: STRUCT
+  name: "syscall_user_dispatch"
+  definition {
+  }
+}
+struct_union {
+  id: 0xe4a2bd4c
+  kind: STRUCT
+  name: "syscore_ops"
+  definition {
+    bytesize: 40
+    member_id: 0x0fa6c6af
+    member_id: 0xf3972ffa
+    member_id: 0xca915e88
+    member_id: 0x9efb86a1
+  }
+}
+struct_union {
+  id: 0xef131e69
+  kind: STRUCT
+  name: "sysfs_ops"
+  definition {
+    bytesize: 16
+    member_id: 0x0a739cb9
+    member_id: 0xacd40238
+  }
+}
+struct_union {
+  id: 0xff15be3a
+  kind: STRUCT
+  name: "sysinfo"
+  definition {
+    bytesize: 112
+    member_id: 0xadcb7881
+    member_id: 0x6bbab6fd
+    member_id: 0x0d628d12
+    member_id: 0x6ca0b878
+    member_id: 0x243c6756
+    member_id: 0xb6a70840
+    member_id: 0x54a83197
+    member_id: 0xdbc7ce3e
+    member_id: 0x4b4cacb0
+    member_id: 0x6b3c808e
+    member_id: 0x9e418703
+    member_id: 0xedafcd8e
+    member_id: 0x23daaa40
+    member_id: 0x3d20f367
+  }
+}
+struct_union {
+  id: 0x67e29bf0
+  kind: STRUCT
+  name: "system_counterval_t"
+  definition {
+    bytesize: 16
+    member_id: 0x32f0095e
+    member_id: 0x9ea9cecd
+  }
+}
+struct_union {
+  id: 0x4fdc8b87
+  kind: STRUCT
+  name: "system_device_crosststamp"
+  definition {
+    bytesize: 24
+    member_id: 0xea23ecc1
+    member_id: 0xef30f0c8
+    member_id: 0x5f2a979c
+  }
+}
+struct_union {
+  id: 0x254c0a7c
+  kind: STRUCT
+  name: "system_time_snapshot"
+  definition {
+    bytesize: 56
+    member_id: 0x32f0095e
+    member_id: 0x464df897
+    member_id: 0xf0e154ce
+    member_id: 0x0900998a
+    member_id: 0xed1538d9
+    member_id: 0xad4aa733
+    member_id: 0x1cac780d
+    member_id: 0x21b41a9e
+    member_id: 0xd1fdbf5e
+  }
+}
+struct_union {
+  id: 0x4e9556c5
+  kind: STRUCT
+  name: "task_cputime"
+  definition {
+    bytesize: 24
+    member_id: 0x59af9aba
+    member_id: 0xd605d62f
+    member_id: 0x5690a011
+  }
+}
+struct_union {
+  id: 0xf782715b
+  kind: STRUCT
+  name: "task_cputime_atomic"
+  definition {
+    bytesize: 24
+    member_id: 0xd688b48e
+    member_id: 0x5922f81b
+    member_id: 0x565a3a05
+  }
+}
+struct_union {
+  id: 0x84d533ac
+  kind: STRUCT
+  name: "task_group"
+  definition {
+    bytesize: 512
+    member_id: 0xde0d95ff
+    member_id: 0x1c1803b1
+    member_id: 0xabbaf796
+    member_id: 0x5bdb19bf
+    member_id: 0x5762e56c
+    member_id: 0xbc823c70
+    member_id: 0x95dac02d
+    member_id: 0x7c00ec6f
+    member_id: 0x721ad904
+    member_id: 0xd9950299
+    member_id: 0x257951de
+    member_id: 0x34ac40d7
+    member_id: 0x05fd18ff
+    member_id: 0x350dae81
+    member_id: 0xee527439
+    member_id: 0x198f26bd
+    member_id: 0xed4ae90a
+    member_id: 0x2d08159e
+    member_id: 0x63760473
+    member_id: 0xac894051
+    member_id: 0xe0f6369b
+  }
+}
+struct_union {
+  id: 0x81bf1eaa
+  kind: STRUCT
+  name: "task_io_accounting"
+  definition {
+    bytesize: 64
+    member_id: 0xdd1042ed
+    member_id: 0x0eaf9392
+    member_id: 0x207fe04f
+    member_id: 0x6241f2ad
+    member_id: 0x0085daff
+    member_id: 0xc946ac74
+    member_id: 0x558559a4
+    member_id: 0xe86dc832
+  }
+}
+struct_union {
+  id: 0x420b3f7d
+  kind: STRUCT
+  name: "task_rss_stat"
+  definition {
+    bytesize: 20
+    member_id: 0x11929d03
+    member_id: 0x65b0d7d8
+  }
+}
+struct_union {
+  id: 0x5e2641cb
+  kind: STRUCT
+  name: "task_struct"
+  definition {
+    bytesize: 4800
+    member_id: 0xa981eb2d
+    member_id: 0xa175f0a0
+    member_id: 0xbfe608aa
+    member_id: 0x07cda0f6
+    member_id: 0x2d2d0fe7
+    member_id: 0x6203780a
+    member_id: 0x094debc6
+    member_id: 0x4aba56a2
+    member_id: 0xb5113bec
+    member_id: 0x15c79b55
+    member_id: 0x9898696f
+    member_id: 0x83d3b529
+    member_id: 0x6a4872be
+    member_id: 0x7409a1c4
+    member_id: 0xa9b53e7a
+    member_id: 0x02db3d21
+    member_id: 0x8e9cf29a
+    member_id: 0x01e550bc
+    member_id: 0x1c1a77ff
+    member_id: 0x4fe72d9f
+    member_id: 0x4693400d
+    member_id: 0xdb388059
+    member_id: 0xde5278f2
+    member_id: 0x350daa6d
+    member_id: 0xee527610
+    member_id: 0xb9409026
+    member_id: 0x44e4fcbb
+    member_id: 0x60ac97d3
+    member_id: 0x98f55073
+    member_id: 0xffa6f833
+    member_id: 0x89b32feb
+    member_id: 0x25ed619c
+    member_id: 0x9ca3666b
+    member_id: 0x129a9597
+    member_id: 0xf0bb75eb
+    member_id: 0x587d2bb7
+    member_id: 0xc12ce7f9
+    member_id: 0x3040a5c1
+    member_id: 0x7feacf27
+    member_id: 0x1f7224f8
+    member_id: 0x0d460f06
+    member_id: 0x14585e46
+    member_id: 0x960e4a88
+    member_id: 0x51bcdc0c
+    member_id: 0x6d951069
+    member_id: 0x53f95299
+    member_id: 0xf6f22641
+    member_id: 0x5957b204
+    member_id: 0xcef58b2b
+    member_id: 0x09d8395c
+    member_id: 0x03385852
+    member_id: 0xe7f8ef87
+    member_id: 0x04264bd2
+    member_id: 0xad7ee9bd
+    member_id: 0x3025d2d5
+    member_id: 0xb6958d8f
+    member_id: 0xe627b7c0
+    member_id: 0x6e4f158e
+    member_id: 0xe8fd4df4
+    member_id: 0xb4e1569b
+    member_id: 0x1b1fb6c3
+    member_id: 0x85efc360
+    member_id: 0x2aec1994
+    member_id: 0x74400dcf
+    member_id: 0xb10bbbfb
+    member_id: 0xde922811
+    member_id: 0x4a100a19
+    member_id: 0x90478055
+    member_id: 0xb4468c72
+    member_id: 0xb1d88a0c
+    member_id: 0x8bf6285a
+    member_id: 0x73f70ce8
+    member_id: 0x333515a1
+    member_id: 0x25d9c05f
+    member_id: 0x234ad6a6
+    member_id: 0x6d3fe298
+    member_id: 0x6ea7d2a1
+    member_id: 0xedb3d9ab
+    member_id: 0x6461b06f
+    member_id: 0x3c43bf89
+    member_id: 0x74c0d8b9
+    member_id: 0x3c598738
+    member_id: 0xf5914596
+    member_id: 0x20607554
+    member_id: 0x722c62b8
+    member_id: 0x25795beb
+    member_id: 0xee31b78c
+    member_id: 0xc397678c
+    member_id: 0x6457d290
+    member_id: 0xe702c16b
+    member_id: 0x27252943
+    member_id: 0xd7668594
+    member_id: 0xb282a928
+    member_id: 0x42810053
+    member_id: 0xf18363a7
+    member_id: 0x893f2264
+    member_id: 0x8b1dacca
+    member_id: 0x03310064
+    member_id: 0xd605d139
+    member_id: 0x59af92c7
+    member_id: 0x14248e95
+    member_id: 0x41e4da77
+    member_id: 0x9cbe23a8
+    member_id: 0x7ec9d562
+    member_id: 0x2ef70aa4
+    member_id: 0x0c9b4944
+    member_id: 0xa3c97b9b
+    member_id: 0x816a5e28
+    member_id: 0x779ea23a
+    member_id: 0x53ef4b8a
+    member_id: 0x051ec4e2
+    member_id: 0x0df921b1
+    member_id: 0x12e9dafd
+    member_id: 0x45304ba5
+    member_id: 0xced3c7ed
+    member_id: 0xde182d47
+    member_id: 0x543ca8c5
+    member_id: 0xa0691bb2
+    member_id: 0x4ac408b3
+    member_id: 0x887958a2
+    member_id: 0x94eef3e2
+    member_id: 0xc7912b9b
+    member_id: 0xc74ec4e7
+    member_id: 0xac738d2d
+    member_id: 0x09e91115
+    member_id: 0x7ddaea3c
+    member_id: 0x826c5eec
+    member_id: 0x90607691
+    member_id: 0x7e4c3092
+    member_id: 0xf9518463
+    member_id: 0xe4606681
+    member_id: 0x06bfc90f
+    member_id: 0x302bb6cd
+    member_id: 0x26db277c
+    member_id: 0x7b2aad72
+    member_id: 0xa2e21022
+    member_id: 0x1f35e5fa
+    member_id: 0xd7c5251e
+    member_id: 0x2349f1b8
+    member_id: 0xeabf13b3
+    member_id: 0x6257d2ab
+    member_id: 0xeabbfa31
+    member_id: 0x3e105334
+    member_id: 0x345f5dc5
+    member_id: 0xda079ca9
+    member_id: 0xcfe68be5
+    member_id: 0x71c12f52
+    member_id: 0x743b63e6
+    member_id: 0xb0dd3064
+    member_id: 0x70b501f7
+    member_id: 0xc288c5e9
+    member_id: 0x2f799fdc
+    member_id: 0x68e3e0c5
+    member_id: 0x92838a4e
+    member_id: 0x2cb0dfb7
+    member_id: 0xe8b5be89
+    member_id: 0xe81e4d64
+    member_id: 0x63f215e6
+    member_id: 0x83cf23de
+    member_id: 0x89aca753
+    member_id: 0xbfffdb12
+    member_id: 0x48e00c7e
+    member_id: 0xcc952c00
+    member_id: 0xb1f5e0b7
+    member_id: 0x48664d9e
+    member_id: 0x7b88834f
+    member_id: 0x41833d9e
+    member_id: 0x471db73e
+    member_id: 0x463c4be7
+    member_id: 0x51062bba
+    member_id: 0xebd1d6d1
+    member_id: 0x0732fca1
+    member_id: 0x9f472cbf
+    member_id: 0x66b11fb9
+    member_id: 0x25545e86
+    member_id: 0x458bf5d2
+    member_id: 0x48f3a473
+    member_id: 0xd0fcf8e2
+    member_id: 0x38620a39
+    member_id: 0xf414050e
+    member_id: 0x0cacbbdb
+    member_id: 0x3c4c38d0
+    member_id: 0x247eddeb
+    member_id: 0x32d7478b
+    member_id: 0x11aef9b3
+    member_id: 0xb02c4bf8
+    member_id: 0xa2d27584
+    member_id: 0xfe07e9ee
+    member_id: 0x07688065
+    member_id: 0x353e5511
+    member_id: 0x193acfa9
+    member_id: 0x0880b875
+    member_id: 0x787940b4
+    member_id: 0xbac6f840
+    member_id: 0x4021f538
+    member_id: 0x8c886273
+    member_id: 0xb6138865
+    member_id: 0xf5a1b8a3
+    member_id: 0x53a6c99e
+    member_id: 0x5db91ea2
+    member_id: 0x29913665
+    member_id: 0xf194ea0e
+    member_id: 0xede394b6
+    member_id: 0xb90acda2
+    member_id: 0xedf50137
+    member_id: 0xd666cd53
+    member_id: 0x9a3ad7bf
+    member_id: 0x2d081767
+    member_id: 0x63760531
+    member_id: 0xac894e97
+    member_id: 0xe0f63fac
+    member_id: 0x22369867
+    member_id: 0x66775c88
+    member_id: 0xa1b7d7ff
+    member_id: 0xe3f4b23a
+    member_id: 0xfcf60fe3
+  }
+}
+struct_union {
+  id: 0xa5960bec
+  kind: STRUCT
+  name: "tasklet_struct"
+  definition {
+    bytesize: 40
+    member_id: 0x11d0f564
+    member_id: 0x72c08d84
+    member_id: 0x6551849a
+    member_id: 0xc68cfbe1
+    member_id: 0x34606826
+    member_id: 0xffa151a3
+  }
+}
+struct_union {
+  id: 0xdce73138
+  kind: STRUCT
+  name: "taskstats"
+  definition {
+    bytesize: 416
+    member_id: 0xa689373a
+    member_id: 0xcf6aa179
+    member_id: 0xa71c6eec
+    member_id: 0x74567cc3
+    member_id: 0x5c554660
+    member_id: 0xdd226fa3
+    member_id: 0x5e58bb99
+    member_id: 0x065d00f5
+    member_id: 0xcb840ba6
+    member_id: 0x2f86e42b
+    member_id: 0x4b09e1eb
+    member_id: 0xbbcec457
+    member_id: 0x073c5f1d
+    member_id: 0xc416a30c
+    member_id: 0x6bb45bd3
+    member_id: 0xd163e5f2
+    member_id: 0x3c8847ee
+    member_id: 0x0cdf3804
+    member_id: 0xc7b479d1
+    member_id: 0xaee9181f
+    member_id: 0x3bc5d39e
+    member_id: 0x84fe4b9a
+    member_id: 0xcbf0bbf1
+    member_id: 0xb24975c2
+    member_id: 0x093799df
+    member_id: 0x28c91378
+    member_id: 0x47f05b51
+    member_id: 0x011a7c01
+    member_id: 0x451aef27
+    member_id: 0x52f59200
+    member_id: 0xf2bc2b47
+    member_id: 0x729d81e9
+    member_id: 0x067f8a3d
+    member_id: 0xc9397873
+    member_id: 0x55fa8ef0
+    member_id: 0xe8121043
+    member_id: 0x2e2987ee
+    member_id: 0x0c45c1fe
+    member_id: 0x1cb78f52
+    member_id: 0x056f8f7d
+    member_id: 0xb9c6b9bb
+    member_id: 0xb88e078f
+    member_id: 0x3b1114c4
+    member_id: 0x0b535931
+    member_id: 0x530441eb
+    member_id: 0x564b914e
+    member_id: 0x2da6f519
+    member_id: 0x395b29ba
+    member_id: 0x1cdea3d3
+    member_id: 0x5c44908a
+    member_id: 0x92cb5463
+    member_id: 0x67d1ded9
+    member_id: 0xe119f5e3
+    member_id: 0xee4b16dc
+  }
+}
+struct_union {
+  id: 0xd4ec45bf
+  kind: STRUCT
+  name: "tc_action"
+  definition {
+    bytesize: 208
+    member_id: 0xafb1407e
+    member_id: 0x5cb0ff20
+    member_id: 0x63938e73
+    member_id: 0xd78dde13
+    member_id: 0xdcd788ff
+    member_id: 0x019c96cf
+    member_id: 0x2cc7c467
+    member_id: 0xce287368
+    member_id: 0x3b50b2ff
+    member_id: 0x0409c628
+    member_id: 0x3b0f1bb9
+    member_id: 0x93b2f806
+    member_id: 0x596ac1ed
+    member_id: 0x2477916c
+    member_id: 0xbed4bd15
+    member_id: 0x0d67a595
+    member_id: 0xfff2923c
+    member_id: 0xc608ae45
+    member_id: 0x9c837f56
+    member_id: 0xaef2f254
+    member_id: 0x5d82d851
+    member_id: 0xfa5e0fee
+    member_id: 0x59c72968
+  }
+}
+struct_union {
+  id: 0x7d49fa3c
+  kind: STRUCT
+  name: "tc_action_ops"
+  definition {
+    bytesize: 144
+    member_id: 0xb5897100
+    member_id: 0xd74925fe
+    member_id: 0xcc104442
+    member_id: 0x61d0c33e
+    member_id: 0xd98a2edd
+    member_id: 0x4a9653c2
+    member_id: 0x483ea176
+    member_id: 0x0a7ef807
+    member_id: 0x200ef958
+    member_id: 0xd450b502
+    member_id: 0x1ac7dc9c
+    member_id: 0x5e08de82
+    member_id: 0xeeac67d8
+    member_id: 0x778ee952
+    member_id: 0x6b09f785
+    member_id: 0x14bf117e
+    member_id: 0xb77dd383
+  }
+}
+struct_union {
+  id: 0x0cae8b66
+  kind: STRUCT
+  name: "tc_cookie"
+  definition {
+    bytesize: 32
+    member_id: 0xff92e349
+    member_id: 0xb8ccd99c
+    member_id: 0x95dac0b5
+  }
+}
+struct_union {
+  id: 0xd78aa293
+  kind: STRUCT
+  name: "tc_sizespec"
+  definition {
+    bytesize: 24
+    member_id: 0x60842ca1
+    member_id: 0x06ed7647
+    member_id: 0xb12baf4b
+    member_id: 0x4c8ffe38
+    member_id: 0x380c2401
+    member_id: 0x62264fbf
+    member_id: 0x705f8b45
+    member_id: 0xaa343f4c
+  }
+}
+struct_union {
+  id: 0x30dfd6aa
+  kind: STRUCT
+  name: "tc_stats"
+  definition {
+    bytesize: 40
+    member_id: 0x5cc31807
+    member_id: 0x48bac7e3
+    member_id: 0x09b19d5a
+    member_id: 0x02ff46d2
+    member_id: 0x4f2ce92b
+    member_id: 0x6bbcfcd6
+    member_id: 0x9b74ac96
+    member_id: 0x609d75c3
+  }
+}
+struct_union {
+  id: 0xc34c1ea7
+  kind: STRUCT
+  name: "tcf_block"
+  definition {
+    bytesize: 1320
+    member_id: 0x2d4b3c00
+    member_id: 0x20dd8606
+    member_id: 0xadf00b8c
+    member_id: 0x5671f962
+    member_id: 0xb7dcf1de
+    member_id: 0x7203eb26
+    member_id: 0xe95c6150
+    member_id: 0x85075b8e
+    member_id: 0x0ec0d80f
+    member_id: 0x7e59e058
+    member_id: 0xa389e866
+    member_id: 0xab41d7d7
+    member_id: 0xbf86ee90
+    member_id: 0x2c77dffb
+    member_id: 0x085a87a1
+    member_id: 0x95dac26a
+    member_id: 0x7ddb3075
+    member_id: 0x396c708f
+  }
+}
+struct_union {
+  id: 0x406cf50b
+  kind: STRUCT
+  name: "tcf_chain"
+  definition {
+    bytesize: 128
+    member_id: 0xf17615fa
+    member_id: 0x652ba159
+    member_id: 0x7c00e825
+    member_id: 0x426a4fb6
+    member_id: 0xadf006ed
+    member_id: 0xb73e584a
+    member_id: 0xf964a830
+    member_id: 0x45100f6b
+    member_id: 0x772e2e78
+    member_id: 0x0d6b321b
+    member_id: 0x9c85f3cd
+    member_id: 0x95dac3d1
+  }
+}
+struct_union {
+  id: 0x640c0226
+  kind: STRUCT
+  name: "tcf_exts"
+  definition {
+    bytesize: 32
+    member_id: 0x5cb0fbc1
+    member_id: 0xa21e8135
+    member_id: 0x0d5b572a
+    member_id: 0x7203e49d
+    member_id: 0xdcf9b4df
+    member_id: 0xc0311be2
+    member_id: 0x7f860acc
+  }
+}
+struct_union {
+  id: 0xfb4a77e8
+  kind: STRUCT
+  name: "tcf_idrinfo"
+  definition {
+    bytesize: 80
+    member_id: 0x2d4b3c00
+    member_id: 0xa14c735e
+    member_id: 0x7203e42d
+  }
+}
+struct_union {
+  id: 0x0f54a4fe
+  kind: STRUCT
+  name: "tcf_proto"
+  definition {
+    bytesize: 104
+    member_id: 0x11fa45cf
+    member_id: 0x93c79120
+    member_id: 0x843edcdb
+    member_id: 0xdcaac21e
+    member_id: 0xa91b1c87
+    member_id: 0xff8a99a2
+    member_id: 0xafb34bdd
+    member_id: 0x156d915f
+    member_id: 0x2d1febf2
+    member_id: 0x1144d809
+    member_id: 0xb7dcf3b4
+    member_id: 0x95dac005
+    member_id: 0x21fbcf76
+  }
+}
+struct_union {
+  id: 0x5d8fb74a
+  kind: STRUCT
+  name: "tcf_proto_ops"
+  definition {
+    bytesize: 192
+    member_id: 0xb5897100
+    member_id: 0xd74925fe
+    member_id: 0x843ed5b2
+    member_id: 0x1ac7a6b2
+    member_id: 0xa4f86508
+    member_id: 0x314650d1
+    member_id: 0x4ae93c9e
+    member_id: 0x949b21ba
+    member_id: 0xd3147b81
+    member_id: 0x5096ad3d
+    member_id: 0x5e2bd4d7
+    member_id: 0x5f8678ed
+    member_id: 0x78c1b899
+    member_id: 0x15a9ea6c
+    member_id: 0xd1625e70
+    member_id: 0x0cef4cec
+    member_id: 0x904a1caa
+    member_id: 0x0a7e5e7c
+    member_id: 0xdb714410
+    member_id: 0x4fbac223
+    member_id: 0x4a9650a3
+    member_id: 0x2d0fa3dd
+  }
+}
+struct_union {
+  id: 0x8c89b7a5
+  kind: STRUCT
+  name: "tcf_result"
+  definition {
+    bytesize: 16
+    member_id: 0x34a07297
+  }
+}
+struct_union {
+  id: 0xe0b08da9
+  kind: STRUCT
+  name: "tcf_t"
+  definition {
+    bytesize: 32
+    member_id: 0x70aad596
+    member_id: 0xcc0a009b
+    member_id: 0x91ddeba4
+    member_id: 0x7fb051f9
+  }
+}
+struct_union {
+  id: 0x66bed279
+  kind: STRUCT
+  name: "tcf_walker"
+  definition {
+    bytesize: 32
+    member_id: 0x69ef5a8f
+    member_id: 0x62cb512a
+    member_id: 0x65427bf6
+    member_id: 0x0bc105f2
+    member_id: 0x587928ee
+    member_id: 0xf7ba9a1f
+  }
+}
+struct_union {
+  id: 0xd5e3cf5e
+  kind: STRUCT
+  name: "tcmsg"
+  definition {
+    bytesize: 20
+    member_id: 0x2f131eaa
+    member_id: 0xa3b1e4c0
+    member_id: 0x0de44bd8
+    member_id: 0x96986704
+    member_id: 0x0e9da7f1
+    member_id: 0x6ca67b93
+    member_id: 0xe460861d
+  }
+}
+struct_union {
+  id: 0x4a4120f1
+  kind: STRUCT
+  name: "tcp_bbr_info"
+  definition {
+    bytesize: 20
+    member_id: 0x2688a553
+    member_id: 0x99cfc600
+    member_id: 0x2aa457a0
+    member_id: 0x7a50d16f
+    member_id: 0x8901d5be
+  }
+}
+struct_union {
+  id: 0x586f016b
+  kind: UNION
+  name: "tcp_cc_info"
+  definition {
+    bytesize: 20
+    member_id: 0x9dc6f783
+    member_id: 0x6a932528
+    member_id: 0x1453f328
+  }
+}
+struct_union {
+  id: 0xd2e44dd9
+  kind: STRUCT
+  name: "tcp_congestion_ops"
+  definition {
+    bytesize: 192
+    member_id: 0x10142d66
+    member_id: 0xe7e5440f
+    member_id: 0x93b3fedd
+    member_id: 0x453a997e
+    member_id: 0x2e6facb4
+    member_id: 0x0afdb06d
+    member_id: 0xcdde5ab5
+    member_id: 0xcc7bb01a
+    member_id: 0xddb58e17
+    member_id: 0x3c857f08
+    member_id: 0x1d9baad0
+    member_id: 0x0d994e7d
+    member_id: 0x4a9651ea
+    member_id: 0x7c00e5f4
+    member_id: 0x209f059a
+    member_id: 0x2da18554
+    member_id: 0x1ae5aa3d
+    member_id: 0xae979e29
+  }
+}
+struct_union {
+  id: 0x2a9ada2a
+  kind: STRUCT
+  name: "tcp_dctcp_info"
+  definition {
+    bytesize: 16
+    member_id: 0xf116d4ed
+    member_id: 0x8add888a
+    member_id: 0xcf44f1be
+    member_id: 0x158e583c
+    member_id: 0x95532d6d
+  }
+}
+struct_union {
+  id: 0x1e0b37f3
+  kind: STRUCT
+  name: "tcp_fastopen_context"
+  definition {
+    bytesize: 56
+    member_id: 0x2029145f
+    member_id: 0x1c516fcd
+    member_id: 0x95daceb0
+  }
+}
+struct_union {
+  id: 0x85ab6757
+  kind: STRUCT
+  name: "tcp_mib"
+  definition {
+    bytesize: 128
+    member_id: 0x0d3e3662
+  }
+}
+struct_union {
+  id: 0xcfff757d
+  kind: STRUCT
+  name: "tcpc_dev"
+  definition {
+    bytesize: 192
+    member_id: 0x6e4d805e
+    member_id: 0x1ac4a73b
+    member_id: 0xe4c710c3
+    member_id: 0xdf98c64a
+    member_id: 0xef45bdcb
+    member_id: 0xca44b9a5
+    member_id: 0xb72e0956
+    member_id: 0xcb2c9ebd
+    member_id: 0xc8f2e002
+    member_id: 0xfef444a6
+    member_id: 0x7a34d06f
+    member_id: 0xf0a8a677
+    member_id: 0xfcec761c
+    member_id: 0xf6679407
+    member_id: 0x358d213f
+    member_id: 0x904e9fd3
+    member_id: 0x8c39ceda
+    member_id: 0x161603e0
+    member_id: 0x796c0b23
+    member_id: 0x1518267c
+    member_id: 0xd1a721b7
+    member_id: 0xedef04ab
+    member_id: 0x2a47c19a
+    member_id: 0xca196e18
+  }
+}
+struct_union {
+  id: 0x7b0af2c6
+  kind: STRUCT
+  name: "tcpci"
+  definition {
+    bytesize: 232
+    member_id: 0xce3bbab3
+    member_id: 0x48f30c76
+    member_id: 0x36e6f05e
+    member_id: 0x62b69278
+    member_id: 0xeee895ab
+    member_id: 0xffb530a9
+  }
+}
+struct_union {
+  id: 0xb60a3d7a
+  kind: STRUCT
+  name: "tcpci_data"
+  definition {
+    bytesize: 72
+    member_id: 0x36e6f99c
+    member_id: 0xe8b65c9e
+    member_id: 0x7db25385
+    member_id: 0xd309fdc6
+    member_id: 0x1ac65edc
+    member_id: 0xc8f07cbf
+    member_id: 0xa8af9250
+    member_id: 0xfef6d3c5
+    member_id: 0x796ef0a9
+    member_id: 0x2a455b72
+    member_id: 0xca1b9694
+  }
+}
+struct_union {
+  id: 0x2083530c
+  kind: STRUCT
+  name: "tcphdr"
+  definition {
+    bytesize: 20
+    member_id: 0xd75b1b2c
+    member_id: 0xe9e49171
+    member_id: 0xfafe74dc
+    member_id: 0xecf1f48f
+    member_id: 0x775f3005
+    member_id: 0xd0082b22
+    member_id: 0x32fe8ef8
+    member_id: 0xf28e07a8
+    member_id: 0xd7a5f52b
+    member_id: 0x597a2336
+    member_id: 0xda94cb14
+    member_id: 0xefe85c23
+    member_id: 0xe2170c7c
+    member_id: 0x1d7a6d67
+    member_id: 0x10951b38
+    member_id: 0x9e156a2a
+    member_id: 0xcd5c6021
+  }
+}
+struct_union {
+  id: 0x0a040c22
+  kind: STRUCT
+  name: "tcpm_port"
+  definition {
+    bytesize: 12536
+    member_id: 0xce3bbab3
+    member_id: 0x2d4b38e1
+    member_id: 0x22dd9cdb
+    member_id: 0x7398e573
+    member_id: 0xe234c9e1
+    member_id: 0xee1e03ec
+    member_id: 0x8230dfbb
+    member_id: 0x9d280928
+    member_id: 0xdd6b9f0d
+    member_id: 0xac65ebc1
+    member_id: 0xec1f7e89
+    member_id: 0xc77dfc66
+    member_id: 0x59c561be
+    member_id: 0xdaa09517
+    member_id: 0xbbeb9df4
+    member_id: 0x2fc1f576
+    member_id: 0x10853c9d
+    member_id: 0xd1459674
+    member_id: 0xe07d66bd
+    member_id: 0x09df7a39
+    member_id: 0x7911ef35
+    member_id: 0x51372a1e
+    member_id: 0x07fc5ef7
+    member_id: 0x91048773
+    member_id: 0x0b369749
+    member_id: 0xaafd2a52
+    member_id: 0xf456429e
+    member_id: 0xf1c764b7
+    member_id: 0x7dc18b99
+    member_id: 0x285ca7ea
+    member_id: 0xc8d27b1b
+    member_id: 0x35c40586
+    member_id: 0xb89e26a7
+    member_id: 0xc0e3445b
+    member_id: 0x42e76a02
+    member_id: 0xf1409c62
+    member_id: 0xbe9bab1c
+    member_id: 0x7290481b
+    member_id: 0xc11a364c
+    member_id: 0x506f3dc2
+    member_id: 0xf158fce1
+    member_id: 0x50429455
+    member_id: 0xd1b752a3
+    member_id: 0x4ffe78cf
+    member_id: 0x7d470137
+    member_id: 0xeccd8227
+    member_id: 0x0bd07878
+    member_id: 0x06868f0a
+    member_id: 0x24b470bf
+    member_id: 0x1600341d
+    member_id: 0xf657e251
+    member_id: 0x9ddfe40f
+    member_id: 0x0d8d564a
+    member_id: 0xc4350055
+    member_id: 0xafefa0da
+    member_id: 0x0c70b377
+    member_id: 0x43f21c51
+    member_id: 0x7933afef
+    member_id: 0x32301b30
+    member_id: 0xc43ef2ec
+    member_id: 0x62f8cc7c
+    member_id: 0x325061d9
+    member_id: 0x8cf2c6b7
+    member_id: 0x112ab7bd
+    member_id: 0x62164ebf
+    member_id: 0x769578e9
+    member_id: 0x01992270
+    member_id: 0x2fffd25b
+    member_id: 0x6733a6b6
+    member_id: 0x1bd4a20c
+    member_id: 0x7b044f0a
+    member_id: 0xb74f4f82
+    member_id: 0xdae5533d
+    member_id: 0x15e6ae4f
+    member_id: 0xf61f0ac5
+    member_id: 0xab725605
+    member_id: 0xb0b60c88
+    member_id: 0xe2d1147a
+    member_id: 0x033a9549
+    member_id: 0x8b46a1dd
+    member_id: 0x639c131a
+    member_id: 0x8953a7d6
+    member_id: 0xb41e9884
+    member_id: 0xf23f9fe4
+    member_id: 0x00b04f21
+    member_id: 0x85509fb3
+    member_id: 0xc545eb16
+    member_id: 0x271e858e
+    member_id: 0x51701f62
+    member_id: 0xbb722e20
+    member_id: 0x48ed2ec0
+    member_id: 0xe5ef799d
+    member_id: 0x92024d5f
+    member_id: 0x85ba538c
+    member_id: 0x84ab1052
+    member_id: 0x414594be
+    member_id: 0xe59faff2
+    member_id: 0x46a0ec2d
+    member_id: 0x6011d4c2
+    member_id: 0x02b3bb9e
+    member_id: 0x2ad86005
+    member_id: 0x91c81583
+    member_id: 0x3dd8249d
+    member_id: 0x8d3c7b36
+    member_id: 0xb828e7c0
+    member_id: 0x7ec6d9ab
+    member_id: 0x9d25f138
+    member_id: 0xeea87524
+    member_id: 0x7b09cd83
+    member_id: 0x52f29850
+    member_id: 0x259c81f5
+    member_id: 0x4fa1c1e5
+    member_id: 0xfff33e76
+    member_id: 0x1dc21b9c
+    member_id: 0x27728fa6
+    member_id: 0x0e49b8e7
+    member_id: 0xf609412d
+    member_id: 0x01610524
+    member_id: 0x3e932eb1
+    member_id: 0x5016a0d8
+    member_id: 0xf3efe74d
+    member_id: 0x6339abb1
+    member_id: 0x2a721390
+    member_id: 0x90e05c99
+    member_id: 0xd27fca71
+  }
+}
+struct_union {
+  id: 0x3e3a5032
+  kind: STRUCT
+  name: "tcpvegas_info"
+  definition {
+    bytesize: 16
+    member_id: 0x8c1ae929
+    member_id: 0x24caa663
+    member_id: 0xef68366e
+    member_id: 0x08c59955
+  }
+}
+struct_union {
+  id: 0x6a268aa0
+  kind: STRUCT
+  name: "thermal_attr"
+  definition {
+    bytesize: 56
+    member_id: 0x8c1565a5
+    member_id: 0x0dc2a276
+  }
+}
+struct_union {
+  id: 0x72707335
+  kind: STRUCT
+  name: "thermal_bind_params"
+  definition {
+    bytesize: 40
+    member_id: 0x0592caaf
+    member_id: 0x7e0f787b
+    member_id: 0x6d50f477
+    member_id: 0x192ddeb3
+    member_id: 0xe60c982e
+    member_id: 0x2d081599
+  }
+}
+struct_union {
+  id: 0x396aaf86
+  kind: STRUCT
+  name: "thermal_cooling_device"
+  definition {
+    bytesize: 1064
+    member_id: 0xcc480c42
+    member_id: 0x5c525279
+    member_id: 0x9cc8d274
+    member_id: 0xea11030f
+    member_id: 0x5317f738
+    member_id: 0xaf9a2d47
+    member_id: 0xb96dd5c1
+    member_id: 0xafb45a06
+    member_id: 0xb0945aa5
+    member_id: 0x2d4b31e5
+    member_id: 0x67e842ab
+    member_id: 0x0fa6c117
+    member_id: 0x2d081c0d
+  }
+}
+struct_union {
+  id: 0x2c0e2dc4
+  kind: STRUCT
+  name: "thermal_cooling_device_ops"
+  definition {
+    bytesize: 56
+    member_id: 0x9a73d86b
+    member_id: 0x372adf65
+    member_id: 0x17a0ffa9
+    member_id: 0xde75445c
+    member_id: 0xacab5c5b
+    member_id: 0x880932d0
+    member_id: 0x2d0814a0
+  }
+}
+struct_union {
+  id: 0x5cea4e71
+  kind: STRUCT
+  name: "thermal_governor"
+  definition {
+    bytesize: 72
+    member_id: 0x0dc2a2dd
+    member_id: 0x58063b0f
+    member_id: 0xbde8755b
+    member_id: 0xca728ce1
+    member_id: 0x6e6c011b
+    member_id: 0x2d081e2a
+  }
+}
+struct_union {
+  id: 0x52a69869
+  kind: STRUCT
+  name: "thermal_instance"
+  definition {
+    bytesize: 224
+    member_id: 0xcc480c42
+    member_id: 0x0dc2afe6
+    member_id: 0xe37d1ffb
+    member_id: 0x0592ca04
+    member_id: 0x753fdbd8
+    member_id: 0xd5629f3c
+    member_id: 0x0abf47d0
+    member_id: 0xeaa5271b
+    member_id: 0xb391af9b
+    member_id: 0x2332c53e
+    member_id: 0x8c156d0b
+    member_id: 0x811591d4
+    member_id: 0x4a46b82c
+    member_id: 0x27ca9166
+    member_id: 0x26c2e5ba
+    member_id: 0x7e2dde0a
+  }
+}
+struct_union {
+  id: 0x077a1980
+  kind: STRUCT
+  name: "thermal_trip"
+  definition {
+    bytesize: 12
+    member_id: 0x0a231583
+    member_id: 0xaf8a45d4
+    member_id: 0x5c62c4df
+  }
+}
+struct_union {
+  id: 0xb1d5a08f
+  kind: STRUCT
+  name: "thermal_zone_device"
+  definition {
+    bytesize: 1368
+    member_id: 0xcc480c42
+    member_id: 0x5c4f16c5
+    member_id: 0xea11030f
+    member_id: 0x8e78974e
+    member_id: 0xd30bdaef
+    member_id: 0xc9e5017e
+    member_id: 0xf94b0a22
+    member_id: 0x87be06bf
+    member_id: 0xaf9a22a2
+    member_id: 0x028a4aca
+    member_id: 0xc0e3d664
+    member_id: 0x962453e6
+    member_id: 0x2f67e263
+    member_id: 0x666255ee
+    member_id: 0x0a231cbc
+    member_id: 0xee05700b
+    member_id: 0x3e92b3e5
+    member_id: 0x9abfad9d
+    member_id: 0xe874e5aa
+    member_id: 0x57943168
+    member_id: 0x0282cbad
+    member_id: 0xafa3b9d2
+    member_id: 0xe1eb34b0
+    member_id: 0xb06430dc
+    member_id: 0xb1ba2b09
+    member_id: 0x67e843a2
+    member_id: 0x9c6baca0
+    member_id: 0x2d4b3da5
+    member_id: 0x0fa6ca31
+    member_id: 0xa43179b6
+    member_id: 0x9b6d2dfa
+    member_id: 0x2d08116a
+  }
+}
+struct_union {
+  id: 0x889e6843
+  kind: STRUCT
+  name: "thermal_zone_device_ops"
+  definition {
+    bytesize: 128
+    member_id: 0x6d11b289
+    member_id: 0x59b56f6e
+    member_id: 0xe51dd025
+    member_id: 0xe02a5975
+    member_id: 0x43e8c08e
+    member_id: 0xfb1b2aa4
+    member_id: 0xffbb6591
+    member_id: 0x2e6bf86e
+    member_id: 0xb2259f72
+    member_id: 0xa5bfca74
+    member_id: 0xda5bf484
+    member_id: 0xf4871c6b
+    member_id: 0x22c50ed1
+    member_id: 0x138d878e
+    member_id: 0x6d5ff609
+    member_id: 0x2d081dc1
+  }
+}
+struct_union {
+  id: 0x3a9535f4
+  kind: STRUCT
+  name: "thermal_zone_params"
+  definition {
+    bytesize: 80
+    member_id: 0x480ac2e2
+    member_id: 0xbd1488ad
+    member_id: 0x72a5b6f7
+    member_id: 0x38f6c3ef
+    member_id: 0x4207fd60
+    member_id: 0x6d89b284
+    member_id: 0xc4c7dc55
+    member_id: 0x0242c2ee
+    member_id: 0x400135b0
+    member_id: 0xcb311e87
+    member_id: 0xe695117c
+    member_id: 0x9b7bf2c8
+    member_id: 0x2d081c40
+  }
+}
+struct_union {
+  id: 0x836a8aa9
+  kind: STRUCT
+  name: "thread_group_cputimer"
+  definition {
+    bytesize: 24
+    member_id: 0x080536ca
+  }
+}
+struct_union {
+  id: 0x51c36be5
+  kind: STRUCT
+  name: "thread_info"
+  definition {
+    bytesize: 48
+    member_id: 0x2d5bf13a
+    member_id: 0x0e5abb66
+    member_id: 0x3568359b
+    member_id: 0x8f6b43c5
+    member_id: 0x2ae2387d
+    member_id: 0x51cf9fd9
+  }
+}
+struct_union {
+  id: 0x965abf66
+  kind: STRUCT
+  name: "thread_struct"
+  definition {
+    bytesize: 1120
+    member_id: 0xda98dd92
+    member_id: 0x8dff436d
+    member_id: 0xed700637
+    member_id: 0x8537c357
+    member_id: 0x2e0a3ab1
+    member_id: 0xdc4044fc
+    member_id: 0x588c38ae
+    member_id: 0xd4351d46
+    member_id: 0x3f19072b
+    member_id: 0x657683aa
+    member_id: 0x075b6aff
+    member_id: 0x1841c89e
+    member_id: 0x228cbc29
+    member_id: 0xb4b592cb
+    member_id: 0xc64ab41c
+    member_id: 0xae35f11c
+    member_id: 0x0b77a1fd
+  }
+}
+struct_union {
+  id: 0x3c100bd7
+  kind: STRUCT
+  name: "throtl_data"
+  definition {
+    bytesize: 856
+    member_id: 0xeb516c71
+    member_id: 0xaddb46b9
+    member_id: 0x9607da24
+    member_id: 0xca35afa6
+    member_id: 0x6a755c2e
+    member_id: 0xcf818d34
+    member_id: 0x6270d42c
+    member_id: 0xd69dad00
+    member_id: 0x6ae49bf1
+    member_id: 0xe669861c
+    member_id: 0xb91a78c3
+    member_id: 0x28b85d24
+    member_id: 0x56113865
+    member_id: 0xb1361b0c
+    member_id: 0xc345bb5b
+    member_id: 0x01a28b38
+  }
+}
+struct_union {
+  id: 0x8bcb07f8
+  kind: STRUCT
+  name: "throtl_service_queue"
+  definition {
+    bytesize: 136
+    member_id: 0x064468c0
+    member_id: 0x2ae02fcd
+    member_id: 0x9607d33f
+    member_id: 0xa2261158
+    member_id: 0x7a4d610e
+    member_id: 0x95cb5ba0
+    member_id: 0x80d710f4
+  }
+}
+struct_union {
+  id: 0xa19bcbf3
+  kind: STRUCT
+  name: "time_namespace"
+  definition {
+    bytesize: 88
+    member_id: 0xde4b7ce4
+    member_id: 0x9f301282
+    member_id: 0x911294e7
+    member_id: 0x35639bb0
+    member_id: 0xd91829ca
+    member_id: 0x696cf202
+  }
+}
+struct_union {
+  id: 0x4a463598
+  kind: STRUCT
+  name: "timecounter"
+  definition {
+    bytesize: 40
+    member_id: 0x9282e80f
+    member_id: 0x89f08835
+    member_id: 0x4e261d46
+    member_id: 0xa8a142d7
+    member_id: 0x4d645285
+  }
+}
+struct_union {
+  id: 0x8c43dc29
+  kind: STRUCT
+  name: "timens_offsets"
+  definition {
+    bytesize: 32
+    member_id: 0x7a15ae87
+    member_id: 0x4546988b
+  }
+}
+struct_union {
+  id: 0xd298e888
+  kind: STRUCT
+  name: "timer_list"
+  definition {
+    bytesize: 56
+    member_id: 0x4d1def0c
+    member_id: 0x91036cb7
+    member_id: 0xab66df21
+    member_id: 0x2da18cde
+    member_id: 0x2d0812f5
+    member_id: 0x63760830
+  }
+}
+struct_union {
+  id: 0x5e0e0cc8
+  kind: STRUCT
+  name: "timer_of"
+  definition {
+    bytesize: 448
+    member_id: 0x2d2d0138
+    member_id: 0x5317f7cf
+    member_id: 0x0413f3fc
+    member_id: 0xb3bb33a4
+    member_id: 0x18f3f23f
+    member_id: 0xc75c5a51
+    member_id: 0xf21ad1f2
+  }
+}
+struct_union {
+  id: 0xb2816d95
+  kind: STRUCT
+  name: "timer_rand_state"
+  definition {
+    bytesize: 24
+    member_id: 0x322eca61
+    member_id: 0x0c7f9894
+    member_id: 0x15fecd55
+  }
+}
+struct_union {
+  id: 0x55314bfb
+  kind: STRUCT
+  name: "timerqueue_head"
+  definition {
+    bytesize: 16
+    member_id: 0x82de9b19
+  }
+}
+struct_union {
+  id: 0x3be3663e
+  kind: STRUCT
+  name: "timerqueue_node"
+  definition {
+    bytesize: 32
+    member_id: 0x0f470b14
+    member_id: 0x9121dcdc
+  }
+}
+struct_union {
+  id: 0x399c459b
+  kind: STRUCT
+  name: "timespec64"
+  definition {
+    bytesize: 16
+    member_id: 0x59e173a4
+    member_id: 0x384468cb
+  }
+}
+struct_union {
+  id: 0x11edff4c
+  kind: STRUCT
+  name: "timestamp_event_queue"
+  definition {
+    bytesize: 4112
+    member_id: 0x9a321df3
+    member_id: 0xb53d9b24
+    member_id: 0xeefa8977
+    member_id: 0x2d1fe404
+  }
+}
+struct_union {
+  id: 0x1a6a6b8f
+  kind: STRUCT
+  name: "timewait_sock_ops"
+  definition {
+    bytesize: 40
+    member_id: 0xae749065
+    member_id: 0x448408cf
+    member_id: 0xd54c1cc7
+    member_id: 0xef561df4
+    member_id: 0xc5e69fbd
+  }
+}
+struct_union {
+  id: 0x15b306bc
+  kind: STRUCT
+  name: "timezone"
+  definition {
+    bytesize: 8
+    member_id: 0xe039817a
+    member_id: 0x00bfd587
+  }
+}
+struct_union {
+  id: 0xd5e60968
+  kind: STRUCT
+  name: "timing_entry"
+  definition {
+    bytesize: 12
+    member_id: 0xf95989c1
+    member_id: 0x64d3fc68
+    member_id: 0x973f0b0b
+  }
+}
+struct_union {
+  id: 0xe49d22b8
+  kind: STRUCT
+  name: "tipc_bearer"
+  definition {
+    bytesize: 304
+    member_id: 0x83b96b6a
+    member_id: 0x70d30b2b
+    member_id: 0x24cd9978
+    member_id: 0x0d81bde6
+    member_id: 0x80a7a1d2
+    member_id: 0xb7810e3a
+    member_id: 0x7b014ca9
+    member_id: 0x95dac26a
+    member_id: 0x102d51ba
+    member_id: 0x6f598dab
+    member_id: 0xae29ab09
+    member_id: 0xb10092e7
+    member_id: 0xa7c8766e
+    member_id: 0x0b59635e
+    member_id: 0x66b91ede
+    member_id: 0x871bd136
+    member_id: 0xeeda6a9b
+    member_id: 0xc7b706ee
+    member_id: 0xb7dcf1d9
+  }
+}
+struct_union {
+  id: 0x89b9badd
+  kind: STRUCT
+  name: "tipc_discoverer"
+  definition {
+    bytesize: 136
+    member_id: 0x342ee534
+    member_id: 0xe971598e
+    member_id: 0x7203ea98
+    member_id: 0xa7c879be
+    member_id: 0x4fb7ccde
+    member_id: 0x2d1febf2
+    member_id: 0xb0b86d66
+    member_id: 0x1dd18810
+    member_id: 0x64abf1a3
+  }
+}
+struct_union {
+  id: 0x6a83c970
+  kind: STRUCT
+  name: "tipc_group"
+  definition {
+    bytesize: 136
+    member_id: 0x1fdb4157
+    member_id: 0x4c222494
+    member_id: 0xf91c8462
+    member_id: 0x22f19112
+    member_id: 0x2cd7e484
+    member_id: 0x7203eb26
+    member_id: 0xcd7f1dab
+    member_id: 0x5c9fd392
+    member_id: 0xd1ac8a7b
+    member_id: 0x34160ac3
+    member_id: 0x57a4d63a
+    member_id: 0x7a26649e
+    member_id: 0x03338cac
+    member_id: 0xb7bf5f55
+    member_id: 0xe0530296
+    member_id: 0x80690d75
+    member_id: 0xada546d8
+    member_id: 0x41966f08
+    member_id: 0x1198c777
+  }
+}
+struct_union {
+  id: 0x2025fcf3
+  kind: STRUCT
+  name: "tipc_mc_method"
+  definition {
+    bytesize: 40
+    member_id: 0x3fbc741c
+    member_id: 0x5abd868a
+    member_id: 0xdea4963e
+    member_id: 0x910365de
+  }
+}
+struct_union {
+  id: 0x57958d13
+  kind: STRUCT
+  name: "tipc_media"
+  definition {
+    bytesize: 104
+    member_id: 0x65b11b4b
+    member_id: 0xf334224f
+    member_id: 0xc52241bb
+    member_id: 0x29cfb070
+    member_id: 0x8862d6e8
+    member_id: 0x66383f77
+    member_id: 0x0f6b06ef
+    member_id: 0x102d5449
+    member_id: 0xb1009b94
+    member_id: 0x6f59832a
+    member_id: 0xae29a254
+    member_id: 0x70d306b8
+    member_id: 0x14a2bb16
+    member_id: 0xdc67b1f1
+    member_id: 0x0d994b01
+  }
+}
+struct_union {
+  id: 0xe04f9dc7
+  kind: STRUCT
+  name: "tipc_media_addr"
+  definition {
+    bytesize: 34
+    member_id: 0xa056c750
+    member_id: 0x9ecbe5e8
+    member_id: 0x7db1b4c6
+  }
+}
+struct_union {
+  id: 0xced65086
+  kind: STRUCT
+  name: "tipc_msg"
+  definition {
+    bytesize: 60
+    member_id: 0x2bea5e2a
+  }
+}
+struct_union {
+  id: 0x60cc3da0
+  kind: STRUCT
+  name: "tipc_nlist"
+  definition {
+    bytesize: 24
+    member_id: 0x7c00ef52
+    member_id: 0x3c2ca08b
+    member_id: 0x7e1d61b2
+    member_id: 0x58fd803f
+  }
+}
+struct_union {
+  id: 0xf0be0466
+  kind: STRUCT
+  name: "tipc_service_addr"
+  definition {
+    bytesize: 8
+    member_id: 0x5cb0fbc1
+    member_id: 0xd183a97a
+  }
+}
+struct_union {
+  id: 0x72aab1d3
+  kind: STRUCT
+  name: "tipc_service_range"
+  definition {
+    bytesize: 12
+    member_id: 0x5cb0fbc1
+    member_id: 0xea70768c
+    member_id: 0x0a6a1978
+  }
+}
+struct_union {
+  id: 0xee8ac777
+  kind: STRUCT
+  name: "tipc_sock"
+  definition {
+    bytesize: 1096
+    member_id: 0x82ce9da8
+    member_id: 0x988dfb2b
+    member_id: 0xce0ec3ee
+    member_id: 0x57a4d10d
+    member_id: 0xce64db85
+    member_id: 0x0ba4e1ad
+    member_id: 0x71e981db
+    member_id: 0xcddbf565
+    member_id: 0x88d9cc44
+    member_id: 0xe79af1b5
+    member_id: 0x85dcb119
+    member_id: 0xf05bfb8e
+    member_id: 0x89903be4
+    member_id: 0xac63a41d
+    member_id: 0xd9fb42ad
+    member_id: 0x1f3accfe
+    member_id: 0x6ae39863
+    member_id: 0xb7fc7bad
+    member_id: 0x0ff5bdb1
+    member_id: 0x3144ac7d
+    member_id: 0x95dac31e
+    member_id: 0xd38238e3
+    member_id: 0x5b213704
+    member_id: 0x06334880
+    member_id: 0x0f534fe3
+    member_id: 0x25bd144d
+    member_id: 0x16d5b3cc
+    member_id: 0xe06305b6
+    member_id: 0x31d56dbc
+    member_id: 0x9ced5af9
+    member_id: 0xa24d7e9d
+    member_id: 0x0aa16a1f
+  }
+}
+struct_union {
+  id: 0xc2953b3a
+  kind: STRUCT
+  name: "tipc_socket_addr"
+  definition {
+    bytesize: 8
+    member_id: 0xcef9084d
+    member_id: 0x0f932d2a
+  }
+}
+struct_union {
+  id: 0x78d9d56e
+  kind: STRUCT
+  name: "tlbflush_unmap_batch"
+  definition {
+  }
+}
+struct_union {
+  id: 0xd4437fe1
+  kind: STRUCT
+  name: "tm"
+  definition {
+    bytesize: 40
+    member_id: 0x29641bf2
+    member_id: 0xc759cf05
+    member_id: 0x8f144bb3
+    member_id: 0xe8b129bc
+    member_id: 0xe72dc2c9
+    member_id: 0xd905aad4
+    member_id: 0xf9443c16
+    member_id: 0xd854ae47
+  }
+}
+struct_union {
+  id: 0x2d645042
+  kind: STRUCT
+  name: "tnum"
+  definition {
+    bytesize: 16
+    member_id: 0xa09a7ff7
+    member_id: 0xa8a14eff
+  }
+}
+struct_union {
+  id: 0xddc0931f
+  kind: STRUCT
+  name: "touchscreen_properties"
+  definition {
+    bytesize: 12
+    member_id: 0x72abbebd
+    member_id: 0xb2287342
+    member_id: 0x16507b8b
+    member_id: 0x5490facf
+    member_id: 0x6f829472
+  }
+}
+struct_union {
+  id: 0x358a5bb8
+  kind: STRUCT
+  name: "trace_array"
+  definition {
+    bytesize: 312
+    member_id: 0x7c00ef52
+    member_id: 0x0ddfe679
+    member_id: 0xf2494c3c
+    member_id: 0x9df6a2cf
+    member_id: 0xc0b3a49e
+    member_id: 0xb855a7c1
+    member_id: 0x5a49330e
+    member_id: 0x02ed8160
+    member_id: 0xf61c4f9f
+    member_id: 0x9ecdc7e4
+    member_id: 0xf7fc18fc
+    member_id: 0xcf83e119
+    member_id: 0x697a328b
+    member_id: 0xd8809cf2
+    member_id: 0x05d56f95
+    member_id: 0x3d48b553
+    member_id: 0x2d2d0ba4
+    member_id: 0x58834011
+    member_id: 0xc97224e2
+    member_id: 0x2ee42a6c
+    member_id: 0xd221974b
+    member_id: 0x7dbd4b0a
+    member_id: 0xfce16356
+    member_id: 0x4486f064
+    member_id: 0xbdc546d8
+    member_id: 0x1126740f
+    member_id: 0x15761e66
+    member_id: 0xa76380ea
+    member_id: 0xce7803be
+    member_id: 0xa5029202
+    member_id: 0x82f61967
+    member_id: 0x8e54487b
+    member_id: 0x004288a6
+  }
+}
+struct_union {
+  id: 0x247022a8
+  kind: STRUCT
+  name: "trace_array_cpu"
+  definition {
+    bytesize: 128
+    member_id: 0x1ee633e8
+    member_id: 0x7c5d72e2
+    member_id: 0xbe4e2563
+    member_id: 0xd71a53af
+    member_id: 0xe3e2d9db
+    member_id: 0x5f13186b
+    member_id: 0x48bc0aa5
+    member_id: 0x2be53ce9
+    member_id: 0x60da6f24
+    member_id: 0x0193a710
+    member_id: 0x024e10a2
+    member_id: 0xcd3210dd
+    member_id: 0x74c0d5ad
+    member_id: 0x15366d0b
+    member_id: 0x543ca422
+    member_id: 0x35f8b7d7
+  }
+}
+struct_union {
+  id: 0x9db9bc69
+  kind: STRUCT
+  name: "trace_buffer"
+  definition {
+    bytesize: 224
+    member_id: 0x2d2d0138
+    member_id: 0xe7102ce7
+    member_id: 0x9fc7d460
+    member_id: 0x3dac837e
+    member_id: 0xaa1570ba
+    member_id: 0xad8983a9
+    member_id: 0xc052c47f
+    member_id: 0x0f3caba2
+    member_id: 0x45d166c5
+    member_id: 0xedbbc0ae
+    member_id: 0xfeab2cc0
+    member_id: 0x58d13e53
+  }
+}
+struct_union {
+  id: 0x935e60af
+  kind: STRUCT
+  name: "trace_entry"
+  definition {
+    bytesize: 8
+    member_id: 0x5c9feb7f
+    member_id: 0x2d350bb5
+    member_id: 0x3118936e
+    member_id: 0x74ee4862
+  }
+}
+struct_union {
+  id: 0x2fb70d10
+  kind: STRUCT
+  name: "trace_eval_map"
+  definition {
+    bytesize: 24
+    member_id: 0x55d78597
+    member_id: 0x47151a95
+    member_id: 0x8e19da6d
+  }
+}
+struct_union {
+  id: 0x9264e992
+  kind: STRUCT
+  name: "trace_event"
+  definition {
+    bytesize: 48
+    member_id: 0x0f3ca99f
+    member_id: 0x7c00e690
+    member_id: 0x5c31f506
+    member_id: 0x360fe90c
+  }
+}
+struct_union {
+  id: 0x87c00d71
+  kind: STRUCT
+  name: "trace_event_buffer"
+  definition {
+    bytesize: 48
+    member_id: 0x33f3f58d
+    member_id: 0x0a4f3caa
+    member_id: 0x02b24a76
+    member_id: 0x4d4cfd91
+    member_id: 0x64201f43
+    member_id: 0x803a53b6
+  }
+}
+struct_union {
+  id: 0xb032df9d
+  kind: STRUCT
+  name: "trace_event_call"
+  definition {
+    bytesize: 144
+    member_id: 0x7c00ef52
+    member_id: 0x86589574
+    member_id: 0x36ade005
+    member_id: 0x0add8422
+    member_id: 0x0cf05df0
+    member_id: 0xa33d21e8
+    member_id: 0x3f1a9be2
+    member_id: 0xff8a9ab3
+    member_id: 0x2d0fae2b
+    member_id: 0x326fdb82
+    member_id: 0x3b7ddf24
+    member_id: 0x704cd88c
+    member_id: 0x5ff33db5
+  }
+}
+struct_union {
+  id: 0x4d40df5c
+  kind: STRUCT
+  name: "trace_event_class"
+  definition {
+    bytesize: 72
+    member_id: 0x55d78597
+    member_id: 0xd74ebab3
+    member_id: 0x7d606787
+    member_id: 0x0f6f7f0d
+    member_id: 0x21467a77
+    member_id: 0x02b22ff9
+    member_id: 0x788054c9
+    member_id: 0x92b15570
+  }
+}
+struct_union {
+  id: 0x9ca67c93
+  kind: STRUCT
+  name: "trace_event_fields"
+  definition {
+    bytesize: 40
+    member_id: 0x5c68c5cb
+    member_id: 0x34206e86
+  }
+}
+struct_union {
+  id: 0x27357fa9
+  kind: STRUCT
+  name: "trace_event_file"
+  definition {
+    bytesize: 88
+    member_id: 0x7c00ef52
+    member_id: 0xbb26541d
+    member_id: 0xa33d2b1c
+    member_id: 0x2ee42d97
+    member_id: 0xd5537fd9
+    member_id: 0x55e889a7
+    member_id: 0x614a670b
+    member_id: 0x2d5bf848
+    member_id: 0x2f686c5b
+    member_id: 0x80b4279c
+  }
+}
+struct_union {
+  id: 0x95bb4313
+  kind: STRUCT
+  name: "trace_event_functions"
+  definition {
+    bytesize: 32
+    member_id: 0x2a53e26c
+    member_id: 0x096aa7bd
+    member_id: 0x2b8d487d
+    member_id: 0x237418e8
+  }
+}
+struct_union {
+  id: 0xc71a9595
+  kind: STRUCT
+  name: "trace_export"
+  definition {
+    bytesize: 24
+    member_id: 0x11c85643
+    member_id: 0x340dee10
+    member_id: 0x2d0fad4f
+  }
+}
+struct_union {
+  id: 0xaae5150f
+  kind: STRUCT
+  name: "trace_func_repeats"
+  definition {
+    bytesize: 32
+    member_id: 0xd364d156
+    member_id: 0x5d34d0b7
+    member_id: 0x65162362
+    member_id: 0x20e59a99
+  }
+}
+struct_union {
+  id: 0x6faacdf3
+  kind: STRUCT
+  name: "trace_iterator"
+  definition {
+    bytesize: 8488
+    member_id: 0xd553781e
+    member_id: 0x2a328548
+    member_id: 0xf219767a
+    member_id: 0x91796e7a
+    member_id: 0xe59bd450
+    member_id: 0xad8984c5
+    member_id: 0x2bad6d35
+    member_id: 0x6e0282b9
+    member_id: 0x93c9c9d9
+    member_id: 0x0b295601
+    member_id: 0x69e5fb26
+    member_id: 0xa9443513
+    member_id: 0x7ab3febe
+    member_id: 0x7361df02
+    member_id: 0x539372a0
+    member_id: 0x0cc029ea
+    member_id: 0xfa345940
+    member_id: 0xfe288601
+    member_id: 0xc431db2c
+    member_id: 0x812ed557
+    member_id: 0x94f37550
+    member_id: 0x5161bf9a
+    member_id: 0x95061f00
+    member_id: 0x2683b677
+    member_id: 0x3c7bf3b6
+  }
+}
+struct_union {
+  id: 0xa226ef51
+  kind: STRUCT
+  name: "trace_option_dentry"
+  definition {
+    bytesize: 32
+    member_id: 0xf6548174
+    member_id: 0x2d6abf39
+    member_id: 0xd55371dc
+    member_id: 0x4d4645b4
+  }
+}
+struct_union {
+  id: 0xd1983cb3
+  kind: STRUCT
+  name: "trace_options"
+  definition {
+    bytesize: 16
+    member_id: 0xc19003f2
+    member_id: 0x449a1c14
+  }
+}
+struct_union {
+  id: 0x5ff8290a
+  kind: STRUCT
+  name: "trace_pid_list"
+  definition {
+    bytesize: 2112
+    member_id: 0x2d244e18
+    member_id: 0xdb10a286
+    member_id: 0x0afd34c9
+    member_id: 0x02cbf643
+    member_id: 0xc515453c
+    member_id: 0x5584ef29
+    member_id: 0x46c2ba3a
+  }
+}
+struct_union {
+  id: 0xef374b64
+  kind: STRUCT
+  name: "trace_print_flags"
+  definition {
+    bytesize: 16
+    member_id: 0xa8001c49
+    member_id: 0x0de57809
+  }
+}
+struct_union {
+  id: 0x285ee61e
+  kind: STRUCT
+  name: "trace_seq"
+  definition {
+    bytesize: 4136
+    member_id: 0x33507050
+    member_id: 0xfa2fe686
+    member_id: 0xdbccc5a8
+  }
+}
+struct_union {
+  id: 0x2e34bb92
+  kind: STRUCT
+  name: "trace_subsystem_dir"
+  definition {
+    bytesize: 48
+    member_id: 0x7c00ef52
+    member_id: 0x1196f32c
+    member_id: 0xd55370d7
+    member_id: 0x4d464dd6
+    member_id: 0x53e14737
+    member_id: 0x33764cc4
+  }
+}
+struct_union {
+  id: 0x18ccbd2c
+  kind: STRUCT
+  name: "tracepoint"
+  definition {
+    bytesize: 72
+    member_id: 0x0de57ce8
+    member_id: 0x20c66514
+    member_id: 0x454656fe
+    member_id: 0x82faadc2
+    member_id: 0xec45951e
+    member_id: 0xbb2d7141
+    member_id: 0xf7c498eb
+    member_id: 0x361e61c6
+  }
+}
+struct_union {
+  id: 0xd3ab17fd
+  kind: STRUCT
+  name: "tracepoint_func"
+  definition {
+    bytesize: 24
+    member_id: 0x21176cd3
+    member_id: 0xff8a9de8
+    member_id: 0xa9b53e99
+  }
+}
+struct_union {
+  id: 0x40179d9d
+  kind: STRUCT
+  name: "tracer"
+  definition {
+    bytesize: 152
+    member_id: 0x0de57ce8
+    member_id: 0x1ac74eef
+    member_id: 0x62b36e8c
+    member_id: 0x4615f29e
+    member_id: 0x6986b3f0
+    member_id: 0x43071b19
+    member_id: 0xadbb21d2
+    member_id: 0xa16bde22
+    member_id: 0xcd7c5dd4
+    member_id: 0x8a52e558
+    member_id: 0x4853fa42
+    member_id: 0x226c6114
+    member_id: 0xbbf71ca8
+    member_id: 0x91bcf079
+    member_id: 0x01f7b02d
+    member_id: 0xf0176218
+    member_id: 0x11e9921e
+    member_id: 0x2d6ab6ae
+    member_id: 0x3a276fec
+    member_id: 0x4dc612a1
+    member_id: 0x1098af81
+    member_id: 0x0934e011
+  }
+}
+struct_union {
+  id: 0x22befc0f
+  kind: STRUCT
+  name: "tracer_flags"
+  definition {
+    bytesize: 24
+    member_id: 0x4fdfe6f1
+    member_id: 0x39c46a92
+    member_id: 0x2a32886b
+  }
+}
+struct_union {
+  id: 0x50fe5738
+  kind: STRUCT
+  name: "tracer_opt"
+  definition {
+    bytesize: 16
+    member_id: 0x0de57ce8
+    member_id: 0x1352cf9f
+  }
+}
+struct_union {
+  id: 0x8f902d54
+  kind: STRUCT
+  name: "track"
+  definition {
+    bytesize: 32
+    member_id: 0x241eaa02
+    member_id: 0xb87688ff
+    member_id: 0x5161b965
+    member_id: 0x74ee4c9b
+    member_id: 0xba11b0ec
+  }
+}
+struct_union {
+  id: 0x626cbe56
+  kind: STRUCT
+  name: "transport_container"
+  definition {
+    bytesize: 104
+    member_id: 0x9753362a
+    member_id: 0xc31ae63d
+  }
+}
+struct_union {
+  id: 0xee532b56
+  kind: STRUCT
+  name: "tso_t"
+  definition {
+    bytesize: 24
+    member_id: 0xb6772014
+    member_id: 0xd919319a
+    member_id: 0xff8a9de8
+    member_id: 0x7debab67
+    member_id: 0xa2d46fa9
+    member_id: 0x3b9e102b
+    member_id: 0x5878fd7b
+  }
+}
+struct_union {
+  id: 0x512f8279
+  kind: STRUCT
+  name: "ttm_bo_kmap_obj"
+  definition {
+    bytesize: 32
+    member_id: 0x48dc596f
+    member_id: 0x3203541e
+    member_id: 0xe57b9e75
+    member_id: 0x92654565
+  }
+}
+struct_union {
+  id: 0xbbf7f9cc
+  kind: STRUCT
+  name: "ttm_buffer_object"
+  definition {
+    bytesize: 448
+    member_id: 0x85112da2
+    member_id: 0x51ec1a96
+    member_id: 0x5c28d22c
+    member_id: 0xdb90e959
+    member_id: 0xa4fad24e
+    member_id: 0x02ce5f8e
+    member_id: 0x5d20698b
+    member_id: 0xaaa77c10
+    member_id: 0x7ccfd443
+    member_id: 0x1777acfb
+    member_id: 0x71b92056
+    member_id: 0x10a1d439
+    member_id: 0xe894c683
+    member_id: 0x9d973020
+  }
+}
+struct_union {
+  id: 0xb3991470
+  kind: STRUCT
+  name: "ttm_bus_placement"
+  definition {
+    bytesize: 24
+    member_id: 0x24356203
+    member_id: 0x9ba109ac
+    member_id: 0x25db6a66
+    member_id: 0xadefe9b2
+  }
+}
+struct_union {
+  id: 0x6a0dde59
+  kind: STRUCT
+  name: "ttm_device"
+  definition {
+    bytesize: 2264
+    member_id: 0x5adf792f
+    member_id: 0x360c36ba
+    member_id: 0xc1372959
+    member_id: 0xd89fccfd
+    member_id: 0x86d21e8e
+    member_id: 0xde9703bd
+    member_id: 0x50d1f6aa
+    member_id: 0x71b92279
+    member_id: 0xc9b75710
+    member_id: 0x31c5367f
+    member_id: 0x22180721
+  }
+}
+struct_union {
+  id: 0x9afd8fbd
+  kind: STRUCT
+  name: "ttm_device_funcs"
+  definition {
+    bytesize: 112
+    member_id: 0x328cc0d5
+    member_id: 0x5bc01f46
+    member_id: 0x4baf255e
+    member_id: 0xfee3c09f
+    member_id: 0x44e1a460
+    member_id: 0xb31e7df6
+    member_id: 0xb96bd08b
+    member_id: 0x28292c47
+    member_id: 0xfac27e72
+    member_id: 0x1775b64f
+    member_id: 0xa8db7330
+    member_id: 0xee6c232c
+    member_id: 0x4d798a84
+    member_id: 0x640da2dc
+  }
+}
+struct_union {
+  id: 0xfeb03d10
+  kind: STRUCT
+  name: "ttm_global"
+  definition {
+    bytesize: 32
+    member_id: 0x13a85d35
+    member_id: 0x5adf7dce
+    member_id: 0xcbcedd63
+  }
+}
+struct_union {
+  id: 0x4dd8930e
+  kind: STRUCT
+  name: "ttm_lru_bulk_move"
+  definition {
+    bytesize: 512
+    member_id: 0x26693333
+  }
+}
+struct_union {
+  id: 0xa068a162
+  kind: STRUCT
+  name: "ttm_lru_bulk_move_pos"
+  definition {
+    bytesize: 16
+    member_id: 0x1fc70239
+    member_id: 0x264f3cfa
+  }
+}
+struct_union {
+  id: 0x0b753461
+  kind: STRUCT
+  name: "ttm_operation_ctx"
+  definition {
+    bytesize: 24
+    member_id: 0xf9e8c3b2
+    member_id: 0x6fb182f2
+    member_id: 0x961708ca
+    member_id: 0x611d304f
+    member_id: 0xe3f745b6
+    member_id: 0xbb9d94b0
+    member_id: 0x4d89ccab
+  }
+}
+struct_union {
+  id: 0xe82bebbb
+  kind: STRUCT
+  name: "ttm_place"
+  definition {
+    bytesize: 16
+    member_id: 0x9030452d
+    member_id: 0xeb74212a
+    member_id: 0xbf7093f8
+    member_id: 0x2d74b063
+  }
+}
+struct_union {
+  id: 0xaeb8c7a1
+  kind: STRUCT
+  name: "ttm_placement"
+  definition {
+    bytesize: 32
+    member_id: 0x957ec1d7
+    member_id: 0x451925c4
+    member_id: 0xbd0cc112
+    member_id: 0x7cfc1602
+  }
+}
+struct_union {
+  id: 0x17c909bc
+  kind: STRUCT
+  name: "ttm_pool"
+  definition {
+    bytesize: 1864
+    member_id: 0xce3bbab3
+    member_id: 0xa53c530a
+    member_id: 0x4fb6ce5b
+    member_id: 0xadcd7f4f
+  }
+}
+struct_union {
+  id: 0xe68515bf
+  kind: STRUCT
+  name: "ttm_pool_type"
+  definition {
+    bytesize: 56
+    member_id: 0xde8fafea
+    member_id: 0xb59c7e7d
+    member_id: 0xadefedd1
+    member_id: 0xad36439e
+    member_id: 0x2d1fec2e
+    member_id: 0x789946d6
+  }
+}
+struct_union {
+  id: 0xaa948e95
+  kind: STRUCT
+  name: "ttm_resource"
+  definition {
+    bytesize: 72
+    member_id: 0x46284634
+    member_id: 0x9697faa5
+    member_id: 0xbf709edb
+    member_id: 0x45360787
+    member_id: 0xda63b064
+    member_id: 0x92654c3e
+    member_id: 0x54d11b22
+  }
+}
+struct_union {
+  id: 0xae6ebc99
+  kind: STRUCT
+  name: "ttm_resource_manager"
+  definition {
+    bytesize: 120
+    member_id: 0xcd7ce15e
+    member_id: 0xeccb4cfe
+    member_id: 0x51ec111d
+    member_id: 0xd9629c3f
+    member_id: 0x21351e07
+    member_id: 0x8e13d97f
+    member_id: 0xb9470641
+    member_id: 0x54ba6ad5
+    member_id: 0x07760a06
+  }
+}
+struct_union {
+  id: 0x7533a42d
+  kind: STRUCT
+  name: "ttm_resource_manager_func"
+  definition {
+    bytesize: 40
+    member_id: 0x45c37c3f
+    member_id: 0xfeae8a93
+    member_id: 0xd3ce1868
+    member_id: 0x7cd2e33a
+    member_id: 0x070a913d
+  }
+}
+struct_union {
+  id: 0x02ca7611
+  kind: STRUCT
+  name: "ttm_tt"
+  definition {
+    bytesize: 48
+    member_id: 0x7841b9fe
+    member_id: 0x7a026535
+    member_id: 0x96b8bf1d
+    member_id: 0x9d9730ea
+    member_id: 0x930f176b
+    member_id: 0x7a46747c
+    member_id: 0xadefe395
+  }
+}
+struct_union {
+  id: 0x9171f4eb
+  kind: STRUCT
+  name: "tty_audit_buf"
+  definition {
+    bytesize: 72
+    member_id: 0xad898302
+    member_id: 0xced2ecb5
+    member_id: 0x8b721752
+    member_id: 0xe90c54f8
+    member_id: 0xff8fdf18
+  }
+}
+struct_union {
+  id: 0xffa4c057
+  kind: STRUCT
+  name: "tty_buffer"
+  definition {
+    bytesize: 32
+    member_id: 0x3766a4dd
+    member_id: 0x8bd93b07
+    member_id: 0xd9193522
+    member_id: 0xcd96802b
+    member_id: 0x058c4e2e
+    member_id: 0x483a779e
+    member_id: 0x2d0fa7a9
+    member_id: 0xff5ac010
+  }
+}
+struct_union {
+  id: 0xf43065cd
+  kind: STRUCT
+  name: "tty_bufhead"
+  definition {
+    bytesize: 168
+    member_id: 0xb56fc008
+    member_id: 0xd6e66356
+    member_id: 0x2d4b3b77
+    member_id: 0x10908a33
+    member_id: 0x2b36a0b0
+    member_id: 0xfea9f5ea
+    member_id: 0x3e3c07d6
+    member_id: 0x8e440db0
+    member_id: 0xeea8df8d
+  }
+}
+struct_union {
+  id: 0xedd6d91c
+  kind: STRUCT
+  name: "tty_driver"
+  definition {
+    bytesize: 200
+    member_id: 0x02ce5986
+    member_id: 0x08b57c67
+    member_id: 0x4a965b92
+    member_id: 0xf415f74d
+    member_id: 0x0de57c43
+    member_id: 0xc29b12a1
+    member_id: 0xcbd8cc90
+    member_id: 0x6f16a92e
+    member_id: 0x1c73c8b3
+    member_id: 0x5ce6e324
+    member_id: 0x18c8fa92
+    member_id: 0xe7c0151f
+    member_id: 0x2d5bf280
+    member_id: 0x105fd16a
+    member_id: 0xbcefa9fc
+    member_id: 0x4b75d276
+    member_id: 0xc47466a7
+    member_id: 0xbb6e2797
+    member_id: 0xbb66fad9
+    member_id: 0xafb7b52f
+    member_id: 0x5a07beb3
+    member_id: 0x2d081262
+    member_id: 0x63760345
+  }
+}
+struct_union {
+  id: 0x4e909f64
+  kind: STRUCT
+  name: "tty_ldisc"
+  definition {
+    bytesize: 16
+    member_id: 0xafbbdd14
+    member_id: 0xa34e45b9
+  }
+}
+struct_union {
+  id: 0xe93638e4
+  kind: STRUCT
+  name: "tty_ldisc_ops"
+  definition {
+    bytesize: 160
+    member_id: 0x0ddfefbb
+    member_id: 0x1c516b87
+    member_id: 0xad9b97ee
+    member_id: 0xcd7fa645
+    member_id: 0x89367883
+    member_id: 0x4850022b
+    member_id: 0x340d8d53
+    member_id: 0x4d4b00af
+    member_id: 0x4a56b227
+    member_id: 0x7e9cb431
+    member_id: 0x5e15e341
+    member_id: 0x99975b4a
+    member_id: 0x6ae544a6
+    member_id: 0xa36ac5e3
+    member_id: 0x2e02b0bf
+    member_id: 0x2626a69f
+    member_id: 0xcfbe7596
+    member_id: 0x4a965f26
+    member_id: 0x2d081bee
+    member_id: 0x63760b66
+  }
+}
+struct_union {
+  id: 0x127b34cf
+  kind: STRUCT
+  name: "tty_operations"
+  definition {
+    bytesize: 280
+    member_id: 0xd446af54
+    member_id: 0x7069e3a7
+    member_id: 0xb4ae5ff3
+    member_id: 0xad9b8e0f
+    member_id: 0xcd7fb6cd
+    member_id: 0x9ef96e25
+    member_id: 0x200fe4e2
+    member_id: 0x342ff252
+    member_id: 0xe2e23ae7
+    member_id: 0x52bae714
+    member_id: 0xb08e3b1a
+    member_id: 0xd08d5d4d
+    member_id: 0x4d4b0f76
+    member_id: 0x4a5812b3
+    member_id: 0x7e9cb7e5
+    member_id: 0xca512364
+    member_id: 0x80cd10c5
+    member_id: 0x69842eef
+    member_id: 0x46176449
+    member_id: 0x99975bb3
+    member_id: 0xfd76609c
+    member_id: 0x893672ab
+    member_id: 0xb31f78bc
+    member_id: 0x691d6f08
+    member_id: 0x7f4d28bd
+    member_id: 0x7363582a
+    member_id: 0x7e41553e
+    member_id: 0x36433257
+    member_id: 0x34f4a83a
+    member_id: 0x954df68c
+    member_id: 0xd99430da
+    member_id: 0x3d8e0610
+    member_id: 0x3ba75864
+    member_id: 0x2d081b70
+    member_id: 0x63760c3d
+  }
+}
+struct_union {
+  id: 0x4201a01e
+  kind: STRUCT
+  name: "tty_port"
+  definition {
+    bytesize: 448
+    member_id: 0x9aeff0bf
+    member_id: 0xa34e4bdb
+    member_id: 0x7dc35cdf
+    member_id: 0xafb697a5
+    member_id: 0xa9f3f07b
+    member_id: 0x2d1fe53d
+    member_id: 0xa9b1ec07
+    member_id: 0x65427c3b
+    member_id: 0x60e6f044
+    member_id: 0x4aaf1ade
+    member_id: 0x2d5bff78
+    member_id: 0x50e32ab9
+    member_id: 0xbd6527fa
+    member_id: 0xad898409
+    member_id: 0x34bad5de
+    member_id: 0x49b65044
+    member_id: 0x26808f7d
+    member_id: 0xa7a8bd37
+    member_id: 0xf6f526db
+    member_id: 0xd4b64bd1
+    member_id: 0x02ce5710
+    member_id: 0x7300aecc
+    member_id: 0x2d081c3a
+  }
+}
+struct_union {
+  id: 0x9d788207
+  kind: STRUCT
+  name: "tty_port_client_operations"
+  definition {
+    bytesize: 24
+    member_id: 0x6ac5443f
+    member_id: 0xcfbd3885
+    member_id: 0xa3698176
+  }
+}
+struct_union {
+  id: 0x00414489
+  kind: STRUCT
+  name: "tty_port_operations"
+  definition {
+    bytesize: 48
+    member_id: 0x594b0e58
+    member_id: 0xc9708f00
+    member_id: 0x9efa2ecd
+    member_id: 0xdcf75696
+    member_id: 0x628e8c9d
+    member_id: 0x2d0812f5
+  }
+}
+struct_union {
+  id: 0x91bae70a
+  kind: STRUCT
+  name: "tty_struct"
+  definition {
+    bytesize: 832
+    member_id: 0x02ce5986
+    member_id: 0xce3bbe52
+    member_id: 0xd47f7e5d
+    member_id: 0xafb7bb9b
+    member_id: 0xad5e28c7
+    member_id: 0xbb8e96b0
+    member_id: 0x3e9cd6e3
+    member_id: 0xa6bbf04b
+    member_id: 0x304002ef
+    member_id: 0xce50971f
+    member_id: 0xfbdb1b2a
+    member_id: 0xbc8d810e
+    member_id: 0xbbb7d9a7
+    member_id: 0x2bb0baa2
+    member_id: 0x0de6dd8d
+    member_id: 0x2d5bf7c8
+    member_id: 0x6542733c
+    member_id: 0xd219e788
+    member_id: 0x1cf87de0
+    member_id: 0x699d2cfb
+    member_id: 0xbf5bc2e4
+    member_id: 0x898bda70
+    member_id: 0x62a96efa
+    member_id: 0x5590602a
+    member_id: 0xa3521d20
+    member_id: 0x95b20bf4
+    member_id: 0x761c260f
+    member_id: 0x8cfbac22
+    member_id: 0xd4cf1f92
+    member_id: 0x6d52b134
+    member_id: 0x0fd6d755
+    member_id: 0x95d81ae1
+    member_id: 0x49829993
+    member_id: 0xc3a315c7
+    member_id: 0x3b7bcb9e
+    member_id: 0xdaf9bd67
+    member_id: 0x48e10024
+    member_id: 0x2d081b50
+    member_id: 0x63760032
+  }
+}
+struct_union {
+  id: 0xa604cacc
+  kind: STRUCT
+  name: "tuner_setup"
+}
+struct_union {
+  id: 0x77f42e7c
+  kind: STRUCT
+  name: "type_datum"
+  definition {
+    bytesize: 12
+    member_id: 0xa0c154ef
+    member_id: 0x41a916e7
+    member_id: 0xacb061a5
+    member_id: 0xa926c7e0
+  }
+}
+struct_union {
+  id: 0x833ba199
+  kind: STRUCT
+  name: "type_set"
+  definition {
+    bytesize: 40
+    member_id: 0xf4145411
+    member_id: 0xcf8ca44d
+    member_id: 0x2da18cde
+  }
+}
+struct_union {
+  id: 0xf1a685d1
+  kind: STRUCT
+  name: "typec_altmode"
+  definition {
+    bytesize: 952
+    member_id: 0xce1ac149
+    member_id: 0x0faf28a3
+    member_id: 0x87fa3649
+    member_id: 0x9a4550ac
+    member_id: 0x1acef530
+    member_id: 0x87dea235
+    member_id: 0xafb87bd8
+    member_id: 0x2d081db8
+  }
+}
+struct_union {
+  id: 0xd9b9e56c
+  kind: STRUCT
+  name: "typec_altmode_desc"
+  definition {
+    bytesize: 12
+    member_id: 0x0faf2220
+    member_id: 0x87b44752
+    member_id: 0x9a455cdf
+    member_id: 0x39f4cfd4
+  }
+}
+struct_union {
+  id: 0xeeb2f917
+  kind: STRUCT
+  name: "typec_altmode_ops"
+  definition {
+    bytesize: 56
+    member_id: 0x05ecb6a4
+    member_id: 0x0d0e9cad
+    member_id: 0x92699037
+    member_id: 0x1f266411
+    member_id: 0x56d8a8a7
+    member_id: 0xdcf5deda
+    member_id: 0x2d0814a0
+  }
+}
+struct_union {
+  id: 0x2d759fd7
+  kind: STRUCT
+  name: "typec_capability"
+  definition {
+    bytesize: 88
+    member_id: 0x5c2c564b
+    member_id: 0xff1240f1
+    member_id: 0x943995c5
+    member_id: 0x148ddd0a
+    member_id: 0x81787084
+    member_id: 0xb4e45886
+    member_id: 0x6311fd99
+    member_id: 0xf1103292
+    member_id: 0x6e4d8799
+    member_id: 0x6d52b920
+    member_id: 0x6733ad2e
+    member_id: 0xafba6953
+    member_id: 0x2d081c40
+    member_id: 0x63760fdb
+  }
+}
+struct_union {
+  id: 0x5b149125
+  kind: STRUCT
+  name: "typec_mux"
+  definition {
+    bytesize: 32
+    member_id: 0x9e1509ad
+    member_id: 0xf832711c
+  }
+}
+struct_union {
+  id: 0xb00910d2
+  kind: STRUCT
+  name: "typec_mux_desc"
+  definition {
+    bytesize: 32
+    member_id: 0x6e4d805e
+    member_id: 0x3d9ec2a7
+    member_id: 0x0de5752a
+    member_id: 0x7020be32
+  }
+}
+struct_union {
+  id: 0xe936a00b
+  kind: STRUCT
+  name: "typec_mux_dev"
+  definition {
+    bytesize: 928
+    member_id: 0xce1ac149
+    member_id: 0x3d9eccc5
+    member_id: 0x2d08147b
+  }
+}
+struct_union {
+  id: 0xea4ef7ea
+  kind: STRUCT
+  name: "typec_mux_state"
+  definition {
+    bytesize: 24
+    member_id: 0xe458432a
+    member_id: 0x87ae641b
+    member_id: 0xff8a90cb
+  }
+}
+struct_union {
+  id: 0xcf6aab90
+  kind: STRUCT
+  name: "typec_operations"
+  definition {
+    bytesize: 72
+    member_id: 0x358dcb60
+    member_id: 0xeca9acd6
+    member_id: 0x0262e024
+    member_id: 0x248a3848
+    member_id: 0xf43a52a4
+    member_id: 0x99103ae8
+    member_id: 0xaff438e4
+    member_id: 0x2d081245
+    member_id: 0x637602ba
+  }
+}
+struct_union {
+  id: 0x6b32e600
+  kind: STRUCT
+  name: "typec_partner"
+  definition {
+    bytesize: 984
+    member_id: 0xce1ac149
+    member_id: 0x171fc924
+    member_id: 0x0b8faa08
+    member_id: 0x63f336f5
+    member_id: 0x21928d6a
+    member_id: 0xf2fde14c
+    member_id: 0x148ddeb3
+    member_id: 0x81787702
+    member_id: 0x6733abb6
+    member_id: 0x2d0818d7
+  }
+}
+struct_union {
+  id: 0xdaa2f673
+  kind: STRUCT
+  name: "typec_partner_desc"
+  definition {
+    bytesize: 24
+    member_id: 0x171fc3a7
+    member_id: 0x63f337dc
+    member_id: 0x0b8fafa1
+    member_id: 0x148dd054
+  }
+}
+struct_union {
+  id: 0xf7c13f2a
+  kind: STRUCT
+  name: "typec_port"
+  definition {
+    bytesize: 1072
+    member_id: 0xcc6aa9f7
+    member_id: 0xce1ac5a8
+    member_id: 0x21928834
+    member_id: 0x6733ae4f
+    member_id: 0xb4e459ce
+    member_id: 0xac65e341
+    member_id: 0xdd6b9b3b
+    member_id: 0x9d280cfe
+    member_id: 0xec1f7588
+    member_id: 0x91048a8d
+    member_id: 0x4034653e
+    member_id: 0xf43c501f
+    member_id: 0x899e550a
+    member_id: 0xa6f605e9
+    member_id: 0xf64e43b1
+    member_id: 0x1e8cbef9
+    member_id: 0xafba6b74
+    member_id: 0x2d081c2c
+  }
+}
+struct_union {
+  id: 0xb0090c73
+  kind: STRUCT
+  name: "typec_retimer"
+  definition {
+    bytesize: 920
+    member_id: 0xce1ac149
+    member_id: 0x3d005ac2
+  }
+}
+struct_union {
+  id: 0x1a8d07bb
+  kind: STRUCT
+  name: "typec_retimer_state"
+  definition {
+    bytesize: 24
+    member_id: 0xe458432a
+    member_id: 0x87ae641b
+    member_id: 0xff8a90cb
+  }
+}
+struct_union {
+  id: 0x67e91a22
+  kind: STRUCT
+  name: "typec_switch"
+  definition {
+    bytesize: 32
+    member_id: 0x565fe930
+    member_id: 0x4efba86c
+  }
+}
+struct_union {
+  id: 0xf170be41
+  kind: STRUCT
+  name: "typec_switch_desc"
+  definition {
+    bytesize: 32
+    member_id: 0x6e4d805e
+    member_id: 0x3dec3b75
+    member_id: 0x0de5752a
+    member_id: 0x7020be32
+  }
+}
+struct_union {
+  id: 0x3abbd1f3
+  kind: STRUCT
+  name: "typec_switch_dev"
+  definition {
+    bytesize: 928
+    member_id: 0xce1ac149
+    member_id: 0x3dec3517
+    member_id: 0x2d08147b
+  }
+}
+struct_union {
+  id: 0x104ad696
+  kind: STRUCT
+  name: "u64_stats_sync"
+  definition {
+  }
+}
+struct_union {
+  id: 0xca112d16
+  kind: STRUCT
+  name: "uart_8250_dma"
+  definition {
+    bytesize: 288
+    member_id: 0x41596303
+    member_id: 0x9870b357
+    member_id: 0xd4d1bc6a
+    member_id: 0xeb2269d4
+    member_id: 0xf745b3a2
+    member_id: 0x220f7d47
+    member_id: 0x1a413398
+    member_id: 0x6a3ffd93
+    member_id: 0x00c402e1
+    member_id: 0x8be6c17d
+    member_id: 0xab0cc158
+    member_id: 0xb007110e
+    member_id: 0x96db7beb
+    member_id: 0xec2f95e2
+    member_id: 0x16f893cf
+    member_id: 0x97879fac
+    member_id: 0x262e94a5
+    member_id: 0xfeaea393
+    member_id: 0x731c06c7
+    member_id: 0x1f602b1e
+    member_id: 0x76be6d4b
+    member_id: 0x6d65c2fe
+    member_id: 0xf72431e1
+  }
+}
+struct_union {
+  id: 0xd696e67d
+  kind: STRUCT
+  name: "uart_8250_em485"
+  definition {
+    bytesize: 168
+    member_id: 0x9699f78d
+    member_id: 0x052da770
+    member_id: 0x0e1527d7
+    member_id: 0x48e7d5e9
+    member_id: 0x9f8c43cd
+  }
+}
+struct_union {
+  id: 0x190e051e
+  kind: STRUCT
+  name: "uart_8250_ops"
+  definition {
+    bytesize: 24
+    member_id: 0xc7fd6253
+    member_id: 0x860f7c9c
+    member_id: 0xdc217072
+  }
+}
+struct_union {
+  id: 0x597ae613
+  kind: STRUCT
+  name: "uart_8250_port"
+  definition {
+    bytesize: 848
+    member_id: 0x48d3871a
+    member_id: 0x1dd18de1
+    member_id: 0x7c00ee15
+    member_id: 0xa75108b0
+    member_id: 0xf1cfa7c2
+    member_id: 0x1419f8d8
+    member_id: 0xb0b17ddb
+    member_id: 0xcdcc063f
+    member_id: 0xd93523f0
+    member_id: 0x372baab8
+    member_id: 0x8848c685
+    member_id: 0x18ac35f8
+    member_id: 0xc335f99d
+    member_id: 0x97854725
+    member_id: 0x8f4d2c19
+    member_id: 0xd70b8c87
+    member_id: 0xf39b3763
+    member_id: 0xab565a69
+    member_id: 0xabed406f
+    member_id: 0xcf473d6a
+    member_id: 0x81c2c839
+    member_id: 0xafb7079a
+    member_id: 0x7cfef104
+    member_id: 0x9d133319
+    member_id: 0x336a0f49
+    member_id: 0x56818287
+    member_id: 0x19d0ecc6
+    member_id: 0x273a9876
+    member_id: 0xdf775a49
+  }
+}
+struct_union {
+  id: 0x17fb3dac
+  kind: STRUCT
+  name: "uart_driver"
+  definition {
+    bytesize: 72
+    member_id: 0x4a965250
+    member_id: 0xf415fb65
+    member_id: 0x863c4931
+    member_id: 0xcbd8c000
+    member_id: 0xc8402040
+    member_id: 0xd1c51561
+    member_id: 0x52103627
+    member_id: 0x72fae9cb
+    member_id: 0x82200b55
+    member_id: 0x2d081e2a
+  }
+}
+struct_union {
+  id: 0x1dd4b558
+  kind: STRUCT
+  name: "uart_icount"
+  definition {
+    bytesize: 44
+    member_id: 0x273f08da
+    member_id: 0x3992ebe5
+    member_id: 0xdd584c28
+    member_id: 0x510e9896
+    member_id: 0x6c166087
+    member_id: 0x653ea2dc
+    member_id: 0x1691771b
+    member_id: 0x455a2f0c
+    member_id: 0xd6e7fd78
+    member_id: 0x56c792be
+    member_id: 0x408101ca
+  }
+}
+struct_union {
+  id: 0x6914a5f7
+  kind: STRUCT
+  name: "uart_ops"
+  definition {
+    bytesize: 208
+    member_id: 0x1459039b
+    member_id: 0xd1ba91a8
+    member_id: 0x14194426
+    member_id: 0xe1df018f
+    member_id: 0x01d8b9d1
+    member_id: 0xca53c8c1
+    member_id: 0x80cff2d9
+    member_id: 0x7f4fc1bc
+    member_id: 0xe8208fb4
+    member_id: 0xe9c90312
+    member_id: 0x3f83561e
+    member_id: 0xfd57c661
+    member_id: 0x564e292a
+    member_id: 0x9efb8ec9
+    member_id: 0x8934961f
+    member_id: 0x7e9e5fe2
+    member_id: 0xb31da453
+    member_id: 0x054dab92
+    member_id: 0x5c78d1e7
+    member_id: 0x5577dc86
+    member_id: 0xbd5b1f30
+    member_id: 0x0a84c182
+    member_id: 0x397ee7b7
+    member_id: 0x4d49e419
+    member_id: 0x2d081fd6
+    member_id: 0x6376001a
+  }
+}
+struct_union {
+  id: 0x289eb761
+  kind: STRUCT
+  name: "uart_port"
+  definition {
+    bytesize: 528
+    member_id: 0x2d1fec85
+    member_id: 0xe09a972f
+    member_id: 0x2aa25ca7
+    member_id: 0xcf3d6dd4
+    member_id: 0xac585840
+    member_id: 0x7e9e50d6
+    member_id: 0xb31da2de
+    member_id: 0x14194a93
+    member_id: 0xd1ba9e51
+    member_id: 0xf2d93010
+    member_id: 0xb9a43c35
+    member_id: 0x564e23b9
+    member_id: 0x9efb85dd
+    member_id: 0xca53ccbc
+    member_id: 0x80cff9ed
+    member_id: 0x728eb7c7
+    member_id: 0x054da1fb
+    member_id: 0xf4a652d3
+    member_id: 0x7ad02a5b
+    member_id: 0x1869ca89
+    member_id: 0x9937362e
+    member_id: 0x53de8d1e
+    member_id: 0x46701e28
+    member_id: 0x642102ed
+    member_id: 0x717adc21
+    member_id: 0x8b19cebf
+    member_id: 0x2f72ea82
+    member_id: 0x2a1e7779
+    member_id: 0xce77f219
+    member_id: 0x99d58e2f
+    member_id: 0x72fae1e1
+    member_id: 0x0843960a
+    member_id: 0x52103662
+    member_id: 0x2d6c6d16
+    member_id: 0x2085db59
+    member_id: 0xbf5bc539
+    member_id: 0x0af4889a
+    member_id: 0x3c55a193
+    member_id: 0x5c135713
+    member_id: 0xafb00cde
+    member_id: 0xdb373e20
+    member_id: 0xdd7f3625
+    member_id: 0xc8628228
+    member_id: 0x7d0883dd
+    member_id: 0xbba253c6
+    member_id: 0xce3bbf8d
+    member_id: 0x1e9bc077
+    member_id: 0x4d8ad507
+    member_id: 0x7119c2a6
+    member_id: 0x9b3f7786
+    member_id: 0x53a45343
+    member_id: 0xff46aaec
+    member_id: 0x5e056c04
+    member_id: 0x0de575b3
+    member_id: 0xc5717af6
+    member_id: 0x39b3adc6
+    member_id: 0x3c53492c
+    member_id: 0xca00bab7
+    member_id: 0x639fa600
+    member_id: 0x2bac62ea
+    member_id: 0xf21ad1ce
+    member_id: 0x2d081919
+    member_id: 0x637602ea
+  }
+}
+struct_union {
+  id: 0x0e118705
+  kind: STRUCT
+  name: "uart_state"
+  definition {
+    bytesize: 512
+    member_id: 0x48b9180d
+    member_id: 0xa1b1e08a
+    member_id: 0xb62bfce4
+    member_id: 0x05f7c6b0
+    member_id: 0xcbcd79e3
+    member_id: 0x6a0a74ef
+  }
+}
+struct_union {
+  id: 0xfd2f663a
+  kind: STRUCT
+  name: "ubuf_info"
+  definition {
+    bytesize: 16
+    member_id: 0x56eb2a22
+    member_id: 0xb7dcfc4d
+    member_id: 0x2d41d1af
+  }
+}
+struct_union {
+  id: 0x3cebb086
+  kind: STRUCT
+  name: "uclamp_bucket"
+  definition {
+    bytesize: 8
+    member_id: 0xdf220102
+    member_id: 0x1fc67c74
+  }
+}
+struct_union {
+  id: 0x4c85207f
+  kind: STRUCT
+  name: "uclamp_rq"
+  definition {
+    bytesize: 168
+    member_id: 0xa04dd9a2
+    member_id: 0xc0fef600
+  }
+}
+struct_union {
+  id: 0x5681a49c
+  kind: STRUCT
+  name: "uclamp_se"
+  definition {
+    bytesize: 4
+    member_id: 0xdf54f100
+    member_id: 0x2180a015
+    member_id: 0x1acefba0
+    member_id: 0x71d4eef6
+  }
+}
+struct_union {
+  id: 0x1eee0872
+  kind: STRUCT
+  name: "ucounts"
+  definition {
+    bytesize: 144
+    member_id: 0x0f3ca99f
+    member_id: 0x91ed6db0
+    member_id: 0x15366aa5
+    member_id: 0x65518e7c
+    member_id: 0x26c7d8da
+    member_id: 0xfccdbbc8
+  }
+}
+struct_union {
+  id: 0x9499f99d
+  kind: STRUCT
+  name: "ucsi"
+  definition {
+    bytesize: 312
+    member_id: 0xa6f079c5
+    member_id: 0xce3bbe52
+    member_id: 0x6d4d92c8
+    member_id: 0xafbba914
+    member_id: 0x1e4f6847
+    member_id: 0xcf462e1f
+    member_id: 0x4b773c29
+    member_id: 0xd6084d17
+    member_id: 0x5887087b
+    member_id: 0x58f6b91e
+    member_id: 0xaead052b
+    member_id: 0x2d5bf4b2
+  }
+}
+struct_union {
+  id: 0x52fc1a74
+  kind: STRUCT
+  name: "ucsi_altmode"
+  definition {
+    bytesize: 6
+    member_id: 0x0faf2220
+    member_id: 0x75da0c89
+  }
+}
+struct_union {
+  id: 0xfc9f67b9
+  kind: STRUCT
+  name: "ucsi_capability"
+  definition {
+    bytesize: 16
+    member_id: 0x038f7bd7
+    member_id: 0x7738a9ab
+    member_id: 0xc5312ee4
+    member_id: 0x97222146
+    member_id: 0xf074f928
+    member_id: 0xd4c7db11
+    member_id: 0xb1760162
+    member_id: 0xd203429d
+    member_id: 0xb9144135
+  }
+}
+struct_union {
+  id: 0x7d85c545
+  kind: STRUCT
+  name: "ucsi_connector"
+  definition {
+    bytesize: 928
+    member_id: 0x1c516f66
+    member_id: 0xe85f926a
+    member_id: 0x2d4b35c2
+    member_id: 0xd6e66caf
+    member_id: 0x4a666087
+    member_id: 0x22fae2af
+    member_id: 0x4592de1d
+    member_id: 0x48cc7358
+    member_id: 0xdaa0963a
+    member_id: 0x7b1c4643
+    member_id: 0xeebdf358
+    member_id: 0xa984c17f
+    member_id: 0x2027a418
+    member_id: 0x1ee8397d
+    member_id: 0x85ba5e75
+    member_id: 0x84ab121a
+    member_id: 0xdd0de586
+    member_id: 0x6c861a98
+    member_id: 0xa85e79f2
+    member_id: 0xb144e2fb
+  }
+}
+struct_union {
+  id: 0x5bcdc80b
+  kind: STRUCT
+  name: "ucsi_connector_capability"
+  definition {
+    bytesize: 2
+    member_id: 0x76264b3d
+    member_id: 0x2d41d3ca
+  }
+}
+struct_union {
+  id: 0x4082a3ec
+  kind: STRUCT
+  name: "ucsi_connector_status"
+  definition {
+    bytesize: 9
+    member_id: 0x94275ab5
+    member_id: 0x2df9c75f
+    member_id: 0x51813eac
+    member_id: 0x69e404d3
+  }
+}
+struct_union {
+  id: 0xd353c5a7
+  kind: STRUCT
+  name: "ucsi_operations"
+  definition {
+    bytesize: 32
+    member_id: 0x4872101b
+    member_id: 0xc5450536
+    member_id: 0xd30a725f
+    member_id: 0xb865fc86
+  }
+}
+struct_union {
+  id: 0x22dad0cd
+  kind: STRUCT
+  name: "udp_hslot"
+  definition {
+    bytesize: 16
+    member_id: 0xb50434c6
+    member_id: 0x65427bf6
+    member_id: 0x2d1fe506
+  }
+}
+struct_union {
+  id: 0xb758a6ae
+  kind: STRUCT
+  name: "udp_mib"
+  definition {
+    bytesize: 80
+    member_id: 0x0d05ef84
+  }
+}
+struct_union {
+  id: 0x2062e6df
+  kind: STRUCT
+  name: "udp_port_cfg"
+  definition {
+    bytesize: 48
+    member_id: 0x9e7cf46f
+    member_id: 0x3f4dfae4
+    member_id: 0x3866bc41
+    member_id: 0x31d9e330
+    member_id: 0x43dc5eb0
+    member_id: 0x595093f4
+    member_id: 0x3761c834
+    member_id: 0xaea8dd61
+    member_id: 0x760852e7
+    member_id: 0xbc7b8ea2
+  }
+}
+struct_union {
+  id: 0x0148098b
+  kind: STRUCT
+  name: "udp_table"
+  definition {
+    bytesize: 24
+    member_id: 0x633ca502
+    member_id: 0xdc0d2a9d
+    member_id: 0xa876e589
+    member_id: 0xc00498e9
+  }
+}
+struct_union {
+  id: 0x25f258cf
+  kind: STRUCT
+  name: "udp_tunnel_info"
+  definition {
+    bytesize: 8
+    member_id: 0x5c9feb7f
+    member_id: 0xac335420
+    member_id: 0x488e9071
+    member_id: 0xff59b17d
+  }
+}
+struct_union {
+  id: 0x94517c6b
+  kind: STRUCT
+  name: "udp_tunnel_nic"
+  definition {
+    bytesize: 80
+    member_id: 0xd6e667b7
+    member_id: 0xce0b45fb
+    member_id: 0x394e18c1
+    member_id: 0x6cb8fd7d
+    member_id: 0xc7069366
+    member_id: 0xdc10e384
+    member_id: 0xed6b55c9
+    member_id: 0xbe72bbaa
+  }
+}
+struct_union {
+  id: 0xd336f93c
+  kind: STRUCT
+  name: "udp_tunnel_nic_info"
+  definition {
+    bytesize: 72
+    member_id: 0x33179555
+    member_id: 0xa8628923
+    member_id: 0xcf67dd03
+    member_id: 0x3ba537c2
+    member_id: 0x2d2d0193
+    member_id: 0xb0bb615b
+  }
+}
+struct_union {
+  id: 0xe832fb84
+  kind: STRUCT
+  name: "udp_tunnel_nic_shared"
+  definition {
+    bytesize: 24
+    member_id: 0x55f2454b
+    member_id: 0x33ed5039
+  }
+}
+struct_union {
+  id: 0x7df2a4b1
+  kind: STRUCT
+  name: "udp_tunnel_nic_table_entry"
+  definition {
+    bytesize: 8
+    member_id: 0x488e9d4a
+    member_id: 0x5c7f87b2
+    member_id: 0x2d41de4d
+    member_id: 0x9bd7abf8
+    member_id: 0xff59b17d
+  }
+}
+struct_union {
+  id: 0x1a8b45a0
+  kind: STRUCT
+  name: "udp_tunnel_nic_table_info"
+  definition {
+    bytesize: 8
+    member_id: 0x8934f4a0
+    member_id: 0x45bb8fbc
+  }
+}
+struct_union {
+  id: 0x7471923f
+  kind: STRUCT
+  name: "udp_tunnel_sock_cfg"
+  definition {
+    bytesize: 64
+    member_id: 0x01b8739a
+    member_id: 0x2cf7dce1
+    member_id: 0x2354f4ac
+    member_id: 0xf79bb379
+    member_id: 0x82526de6
+    member_id: 0x5ac68566
+    member_id: 0x1df1df5b
+    member_id: 0x1b75c63b
+  }
+}
+struct_union {
+  id: 0xfbcbbd6c
+  kind: STRUCT
+  name: "uevent_sock"
+  definition {
+    bytesize: 24
+    member_id: 0x7c00ef52
+    member_id: 0x828c8077
+  }
+}
+struct_union {
+  id: 0x0b23097c
+  kind: STRUCT
+  name: "ufs_clk_gating"
+  definition {
+    bytesize: 296
+    member_id: 0x3050233e
+    member_id: 0x8d637309
+    member_id: 0x72f051fa
+    member_id: 0xf158ff5c
+    member_id: 0x2061fc2e
+    member_id: 0x9a2f5ed9
+    member_id: 0xc244b0c7
+    member_id: 0x77ea2aab
+    member_id: 0xbbefbfa3
+    member_id: 0xaf5b779f
+    member_id: 0x53ca75d2
+    member_id: 0x2d081239
+  }
+}
+struct_union {
+  id: 0xe1c039c0
+  kind: STRUCT
+  name: "ufs_clk_scaling"
+  definition {
+    bytesize: 224
+    member_id: 0xaf5b7a5c
+    member_id: 0xd7e12520
+    member_id: 0x52d8b184
+    member_id: 0x0185484d
+    member_id: 0xc244b1b2
+    member_id: 0x59505ceb
+    member_id: 0x92e9b358
+    member_id: 0xa6f8ee3f
+    member_id: 0x4b77399a
+    member_id: 0x143d796c
+    member_id: 0x77ea2060
+    member_id: 0x1aca297a
+    member_id: 0xbbefba04
+    member_id: 0xb768ef54
+    member_id: 0x2061f6ba
+    member_id: 0x2d081217
+  }
+}
+struct_union {
+  id: 0xe7f0b44a
+  kind: UNION
+  name: "ufs_crypto_cap_entry"
+  definition {
+    bytesize: 4
+    member_id: 0xa861c260
+    member_id: 0x22ce0593
+  }
+}
+struct_union {
+  id: 0x783fe198
+  kind: UNION
+  name: "ufs_crypto_capabilities"
+  definition {
+    bytesize: 4
+    member_id: 0xa861c260
+    member_id: 0x2bfbe1fc
+  }
+}
+struct_union {
+  id: 0x0a97be91
+  kind: UNION
+  name: "ufs_crypto_cfg_entry"
+  definition {
+    bytesize: 128
+    member_id: 0xa83c4e04
+    member_id: 0x2f71fc30
+  }
+}
+struct_union {
+  id: 0xd2481e52
+  kind: STRUCT
+  name: "ufs_dev_cmd"
+  definition {
+    bytesize: 128
+    member_id: 0x5c0f21f9
+    member_id: 0x2d4b38e1
+    member_id: 0x4a5cc460
+    member_id: 0x8c714c8a
+    member_id: 0x711d898e
+  }
+}
+struct_union {
+  id: 0xc97fa0d5
+  kind: STRUCT
+  name: "ufs_dev_info"
+  definition {
+    bytesize: 56
+    member_id: 0x9edc9408
+    member_id: 0x3df7be1c
+    member_id: 0xbc22c51e
+    member_id: 0xe6daa685
+    member_id: 0xdf4a5074
+    member_id: 0x8986dade
+    member_id: 0x19964093
+    member_id: 0xc8a5d611
+    member_id: 0xd1711a8c
+    member_id: 0xe3af90be
+    member_id: 0x194c4bd6
+    member_id: 0x2ee12f95
+    member_id: 0x175b77ec
+    member_id: 0xe5169cd4
+    member_id: 0x23294895
+    member_id: 0xaa664cd0
+    member_id: 0x06ed160b
+    member_id: 0xd671c12a
+    member_id: 0x2d0814a0
+  }
+}
+struct_union {
+  id: 0x486991ba
+  kind: STRUCT
+  name: "ufs_dev_params"
+  definition {
+    bytesize: 48
+    member_id: 0xb6db9a0a
+    member_id: 0xabcefd8e
+    member_id: 0xde48f6f6
+    member_id: 0xe61fdf73
+    member_id: 0xc946515a
+    member_id: 0xa0082572
+    member_id: 0x1c06b4bf
+    member_id: 0x5dc72d35
+    member_id: 0x28a5b4f3
+    member_id: 0xb8e8c74c
+    member_id: 0xcb2fb5a7
+    member_id: 0xc2d89a26
+  }
+}
+struct_union {
+  id: 0x34e82837
+  kind: STRUCT
+  name: "ufs_dev_quirk"
+  definition {
+    bytesize: 24
+    member_id: 0xe6daabbe
+    member_id: 0xdf7596d4
+    member_id: 0xce3dd3dc
+  }
+}
+struct_union {
+  id: 0x7416a92c
+  kind: STRUCT
+  name: "ufs_event_hist"
+  definition {
+    bytesize: 112
+    member_id: 0x26c338a6
+    member_id: 0x4fc09f63
+    member_id: 0x7fe3fa03
+    member_id: 0x8224e024
+  }
+}
+struct_union {
+  id: 0x344cbd63
+  kind: STRUCT
+  name: "ufs_hba"
+  definition {
+    bytesize: 5336
+    member_id: 0x6138df6b
+    member_id: 0xd60d1ea3
+    member_id: 0xc8af3fe4
+    member_id: 0x75f3a99d
+    member_id: 0x085e36e6
+    member_id: 0x9fcca934
+    member_id: 0xf8075979
+    member_id: 0xb8e3fa6e
+    member_id: 0xce3bb1ab
+    member_id: 0xc34cf945
+    member_id: 0x992cd0cb
+    member_id: 0xd5c5cb2a
+    member_id: 0x175e0853
+    member_id: 0xbc0a18c4
+    member_id: 0x418d6286
+    member_id: 0xadeefc03
+    member_id: 0x05d6d7bd
+    member_id: 0x25127366
+    member_id: 0x598dda18
+    member_id: 0x0687f65a
+    member_id: 0xa7510395
+    member_id: 0x470a3aa7
+    member_id: 0xc367159d
+    member_id: 0x47678426
+    member_id: 0xe6804775
+    member_id: 0x1bc99ab8
+    member_id: 0x409894aa
+    member_id: 0x991cc136
+    member_id: 0x59119a52
+    member_id: 0xfa599941
+    member_id: 0x99373ab4
+    member_id: 0xba09598f
+    member_id: 0x2d4e5988
+    member_id: 0x2a06772c
+    member_id: 0x9170c461
+    member_id: 0xf64f7078
+    member_id: 0x89362d2d
+    member_id: 0x056d6f2d
+    member_id: 0x7d5fb82a
+    member_id: 0x646ca433
+    member_id: 0x47ed9812
+    member_id: 0xdf215517
+    member_id: 0x6c1d62c8
+    member_id: 0xd42bbec1
+    member_id: 0x5fea16fd
+    member_id: 0x82f270d7
+    member_id: 0x90a34da9
+    member_id: 0x1e3195b0
+    member_id: 0xca4b8ab1
+    member_id: 0xbd4b0af6
+    member_id: 0xa1d3d0ee
+    member_id: 0xce8d2794
+    member_id: 0xce184a90
+    member_id: 0xddd3f7db
+    member_id: 0xba1da164
+    member_id: 0x7e49fc07
+    member_id: 0x639d1f50
+    member_id: 0x8908e7f8
+    member_id: 0xfc44bb66
+    member_id: 0x679b6d54
+    member_id: 0xcd167c27
+    member_id: 0x9bf39d6f
+    member_id: 0x61b0fb48
+    member_id: 0xa3d0d6ca
+    member_id: 0xf0b1fc8e
+    member_id: 0xb7a2a1df
+    member_id: 0x10e36a3b
+    member_id: 0x1d86e345
+    member_id: 0xe7bc06c5
+    member_id: 0xcf118b97
+    member_id: 0x36da2546
+    member_id: 0x8e42a998
+    member_id: 0x93066213
+    member_id: 0x8ee837da
+    member_id: 0x307e09fb
+    member_id: 0x334bc297
+    member_id: 0x08e68f0d
+    member_id: 0x7b6d6b82
+    member_id: 0x15668869
+    member_id: 0x545d0929
+    member_id: 0x16b72d77
+    member_id: 0x3bf0a986
+    member_id: 0x4e6ce9a6
+    member_id: 0x45552a24
+    member_id: 0x14fb0afb
+    member_id: 0x7e720bd0
+    member_id: 0xff1ad091
+    member_id: 0x43d19cf2
+    member_id: 0xd6a69c34
+    member_id: 0xf30fcad7
+    member_id: 0x72f8cfcb
+    member_id: 0x66da184b
+    member_id: 0xf51396d0
+    member_id: 0x54976880
+    member_id: 0x83e539f9
+    member_id: 0xcb2b5333
+    member_id: 0x58afd2ad
+    member_id: 0xe9c6751b
+    member_id: 0x2980ac31
+    member_id: 0x54054154
+    member_id: 0x87c8e2fc
+    member_id: 0xb8eec506
+    member_id: 0x6538b597
+    member_id: 0x51f95764
+    member_id: 0xa52faf23
+    member_id: 0x16252c8c
+    member_id: 0x5fe5580a
+    member_id: 0xfbeda989
+    member_id: 0x533062f2
+    member_id: 0x920d28d3
+    member_id: 0xd671c406
+  }
+}
+struct_union {
+  id: 0x8026b687
+  kind: STRUCT
+  name: "ufs_hba_monitor"
+  definition {
+    bytesize: 144
+    member_id: 0x8ec4400f
+    member_id: 0x41b0c604
+    member_id: 0x35b0f4d5
+    member_id: 0xb0173df2
+    member_id: 0x3d4d25f3
+    member_id: 0xa37793d0
+    member_id: 0x21361bb0
+    member_id: 0x9624f411
+    member_id: 0xaeb8643f
+    member_id: 0xf0d53ed1
+    member_id: 0x3a2d33ca
+  }
+}
+struct_union {
+  id: 0xf34213cc
+  kind: STRUCT
+  name: "ufs_hba_variant_ops"
+  definition {
+    bytesize: 224
+    member_id: 0x0de57ce8
+    member_id: 0x1ac749f4
+    member_id: 0x0d2ec00a
+    member_id: 0x899074db
+    member_id: 0xb3a0b5b7
+    member_id: 0xd3ae598c
+    member_id: 0x7dea403f
+    member_id: 0x890f03e1
+    member_id: 0x5fe55f82
+    member_id: 0x6b49b6a0
+    member_id: 0xb57c2df0
+    member_id: 0x519530af
+    member_id: 0x31fe6515
+    member_id: 0x1fa993f1
+    member_id: 0xf397a4ef
+    member_id: 0xcab2944f
+    member_id: 0x82a62b80
+    member_id: 0x2f7fef5e
+    member_id: 0x5f551195
+    member_id: 0xfa3c41c0
+    member_id: 0xf5106a1d
+    member_id: 0x9744f8f8
+    member_id: 0x7103f619
+    member_id: 0x0a3c7160
+    member_id: 0x800094b4
+    member_id: 0x9e8f5f94
+    member_id: 0x585c8a51
+    member_id: 0x18dbd135
+  }
+}
+struct_union {
+  id: 0xdcb39c32
+  kind: STRUCT
+  name: "ufs_hba_variant_params"
+  definition {
+    bytesize: 88
+    member_id: 0xd5ef67a8
+    member_id: 0xc354c852
+    member_id: 0x465db837
+    member_id: 0x7b1d6942
+  }
+}
+struct_union {
+  id: 0x9eadd986
+  kind: STRUCT
+  name: "ufs_hw_queue"
+  definition {
+    bytesize: 144
+    member_id: 0xcdef6e49
+    member_id: 0xc338b34a
+    member_id: 0x9ace4517
+    member_id: 0xa25333c6
+    member_id: 0xca7ac45b
+    member_id: 0xc8306671
+    member_id: 0xa8b4409a
+    member_id: 0x3a8bfc8d
+    member_id: 0x6b512717
+    member_id: 0xcce62a65
+    member_id: 0xf0ff45b9
+    member_id: 0x31abbe13
+    member_id: 0x2aca7ebe
+    member_id: 0x26014798
+    member_id: 0x13ba1d30
+    member_id: 0x8a94bafb
+  }
+}
+struct_union {
+  id: 0x5786c646
+  kind: STRUCT
+  name: "ufs_pa_layer_attr"
+  definition {
+    bytesize: 28
+    member_id: 0x33b58470
+    member_id: 0x526d9022
+    member_id: 0xa02d82da
+    member_id: 0xa04c4862
+    member_id: 0xb51decea
+    member_id: 0xb23533b1
+    member_id: 0xcb2fbaa9
+  }
+}
+struct_union {
+  id: 0xcddc22d8
+  kind: STRUCT
+  name: "ufs_pwr_mode_info"
+  definition {
+    bytesize: 32
+    member_id: 0x36845252
+    member_id: 0xcd0b8889
+  }
+}
+struct_union {
+  id: 0xae218bc3
+  kind: STRUCT
+  name: "ufs_query"
+  definition {
+    bytesize: 56
+    member_id: 0xb600f599
+    member_id: 0xd6d05b05
+    member_id: 0x40c8df2e
+  }
+}
+struct_union {
+  id: 0xfa3bef7b
+  kind: STRUCT
+  name: "ufs_query_req"
+  definition {
+    bytesize: 24
+    member_id: 0xc513a120
+    member_id: 0x1d077cb4
+  }
+}
+struct_union {
+  id: 0xbfb0d67f
+  kind: STRUCT
+  name: "ufs_query_res"
+  definition {
+    bytesize: 24
+    member_id: 0x405e3321
+    member_id: 0x83800020
+  }
+}
+struct_union {
+  id: 0x4aaab821
+  kind: STRUCT
+  name: "ufs_saved_pwr_info"
+  definition {
+    bytesize: 32
+    member_id: 0xcd0b85b2
+    member_id: 0x36845176
+  }
+}
+struct_union {
+  id: 0x71de5105
+  kind: STRUCT
+  name: "ufs_stats"
+  definition {
+    bytesize: 1712
+    member_id: 0x1b271e62
+    member_id: 0x446ac301
+    member_id: 0xf5cc8294
+    member_id: 0x5ff3caaa
+    member_id: 0x0aa43bfb
+  }
+}
+struct_union {
+  id: 0x77ee532f
+  kind: STRUCT
+  name: "ufs_vreg"
+  definition {
+    bytesize: 24
+    member_id: 0x0f412c26
+    member_id: 0x0de57809
+    member_id: 0xfde7bab3
+    member_id: 0x3a2d36b3
+    member_id: 0xc8b94e75
+  }
+}
+struct_union {
+  id: 0xea129124
+  kind: STRUCT
+  name: "ufs_vreg_info"
+  definition {
+    bytesize: 32
+    member_id: 0x99f376cb
+    member_id: 0x941f433e
+    member_id: 0x146a6f22
+    member_id: 0x4f785b50
+  }
+}
+struct_union {
+  id: 0x5d113536
+  kind: STRUCT
+  name: "ufshcd_lrb"
+  definition {
+    bytesize: 152
+    member_id: 0xec332165
+    member_id: 0x5006fd4c
+    member_id: 0x2afea591
+    member_id: 0xf1576763
+    member_id: 0xdd3b075e
+    member_id: 0xb72416a0
+    member_id: 0x3a05bdd8
+    member_id: 0xd2f70d3b
+    member_id: 0x1a2f410b
+    member_id: 0x2658b66c
+    member_id: 0x86d6a29d
+    member_id: 0x1dd8331e
+    member_id: 0x92750921
+    member_id: 0x5dfd62b5
+    member_id: 0xd3c7df98
+    member_id: 0xee1047fd
+    member_id: 0xe1bedce8
+    member_id: 0x74cdc5a9
+    member_id: 0x9e40dc90
+    member_id: 0xa7729ae1
+    member_id: 0x238349de
+    member_id: 0x2d081bee
+  }
+}
+struct_union {
+  id: 0xdeb14747
+  kind: STRUCT
+  name: "ufshcd_mcq_opr_info_t"
+  definition {
+    bytesize: 24
+    member_id: 0x9b2fa9a0
+    member_id: 0x5e660606
+    member_id: 0x85c25a2c
+  }
+}
+struct_union {
+  id: 0x6b07f76e
+  kind: STRUCT
+  name: "ufshcd_res_info"
+  definition {
+    bytesize: 24
+    member_id: 0x0de57ce8
+    member_id: 0x5d3b1b01
+    member_id: 0x85c25a2c
+  }
+}
+struct_union {
+  id: 0x62ec3dc4
+  kind: STRUCT
+  name: "ufshcd_sg_entry"
+  definition {
+    bytesize: 16
+    member_id: 0x24552b83
+    member_id: 0xd46802eb
+    member_id: 0xd975bf81
+  }
+}
+struct_union {
+  id: 0x43bf1d1a
+  kind: STRUCT
+  name: "ufshpb_active_field"
+  definition {
+    bytesize: 4
+    member_id: 0xa4e63499
+    member_id: 0x943de2d1
+  }
+}
+struct_union {
+  id: 0x4b22611e
+  kind: STRUCT
+  name: "uic_command"
+  definition {
+    bytesize: 56
+    member_id: 0x9187749d
+    member_id: 0x51767e64
+    member_id: 0x97b766ac
+    member_id: 0xd3f7ab38
+    member_id: 0x4d22c28e
+    member_id: 0x1d70b65d
+  }
+}
+struct_union {
+  id: 0xd114484a
+  kind: STRUCT
+  name: "uid_gid_extent"
+  definition {
+    bytesize: 12
+    member_id: 0x1f2e3f08
+    member_id: 0xe81f7023
+    member_id: 0x65ec530e
+  }
+}
+struct_union {
+  id: 0xe742397c
+  kind: STRUCT
+  name: "uid_gid_map"
+  definition {
+    bytesize: 72
+    member_id: 0x1f5b7385
+    member_id: 0x3ade5d50
+  }
+}
+struct_union {
+  id: 0x56eec1e5
+  kind: STRUCT
+  name: "uio_device"
+  definition {
+    bytesize: 1040
+    member_id: 0x4a965250
+    member_id: 0xce1ac5a8
+    member_id: 0xc840222c
+    member_id: 0x0a3b32d2
+    member_id: 0xc017af2b
+    member_id: 0x202d9384
+    member_id: 0xcd51b880
+    member_id: 0x79da7b28
+    member_id: 0xfe3c291d
+    member_id: 0x339b92a9
+    member_id: 0x2d0815a4
+  }
+}
+struct_union {
+  id: 0x1c9720b7
+  kind: STRUCT
+  name: "uio_info"
+  definition {
+    bytesize: 576
+    member_id: 0x97334934
+    member_id: 0x0de57809
+    member_id: 0xa65f2d0d
+    member_id: 0x52fec110
+    member_id: 0x4805246e
+    member_id: 0x998ebdda
+    member_id: 0x3ff2fee5
+    member_id: 0x591193e9
+    member_id: 0xf95e4946
+    member_id: 0x87fe4e24
+    member_id: 0xad99b7eb
+    member_id: 0xaeb5c308
+    member_id: 0x9bdb7d24
+    member_id: 0x2d081f2c
+  }
+}
+struct_union {
+  id: 0x3793830a
+  kind: STRUCT
+  name: "uio_map"
+  definition {
+    bytesize: 104
+    member_id: 0x452b206c
+    member_id: 0x521dad60
+  }
+}
+struct_union {
+  id: 0x5a38311c
+  kind: STRUCT
+  name: "uio_mem"
+  definition {
+    bytesize: 56
+    member_id: 0x0de57ce8
+    member_id: 0x24900a0e
+    member_id: 0x0e2aaf7d
+    member_id: 0xd9eb71ce
+    member_id: 0xddb2c393
+    member_id: 0xeba68a32
+    member_id: 0x8df104fc
+  }
+}
+struct_union {
+  id: 0x5f1195f5
+  kind: STRUCT
+  name: "uio_port"
+  definition {
+    bytesize: 40
+    member_id: 0x0de57ce8
+    member_id: 0x462842d5
+    member_id: 0xd94d60d4
+    member_id: 0x4f143783
+    member_id: 0x8c1fc5f0
+  }
+}
+struct_union {
+  id: 0xffd3cee2
+  kind: STRUCT
+  name: "uio_portio"
+  definition {
+    bytesize: 104
+    member_id: 0x452b206c
+    member_id: 0x48e6455f
+  }
+}
+struct_union {
+  id: 0x88abb6f7
+  kind: STRUCT
+  name: "uncached_list"
+  definition {
+    bytesize: 40
+    member_id: 0x2d1fec85
+    member_id: 0xb58975e1
+    member_id: 0xb9d75867
+  }
+}
+struct_union {
+  id: 0x8e583bcd
+  kind: STRUCT
+  name: "unicode_map"
+  definition {
+    bytesize: 32
+    member_id: 0xa624b11c
+    member_id: 0x736322a3
+    member_id: 0xb008455d
+  }
+}
+struct_union {
+  id: 0x3f8f92cb
+  kind: STRUCT
+  name: "unix_table"
+  definition {
+    bytesize: 16
+    member_id: 0xabc6d609
+    member_id: 0xff1cd5bf
+  }
+}
+struct_union {
+  id: 0xad1e2d0f
+  kind: STRUCT
+  name: "update_util_data"
+  definition {
+    bytesize: 8
+    member_id: 0x2103ec9b
+  }
+}
+struct_union {
+  id: 0x3d915ab9
+  kind: STRUCT
+  name: "upid"
+  definition {
+    bytesize: 16
+    member_id: 0xd1c515ca
+    member_id: 0x91e8d207
+  }
+}
+struct_union {
+  id: 0xa41120db
+  kind: UNION
+  name: "upper_chunk"
+  definition {
+    bytesize: 2048
+    member_id: 0x11d094ae
+    member_id: 0xffe46d7f
+  }
+}
+struct_union {
+  id: 0x8aefc5c6
+  kind: STRUCT
+  name: "uprobe"
+  definition {
+    bytesize: 264
+    member_id: 0x230022a6
+    member_id: 0xceb80cfa
+    member_id: 0x09b6e3f8
+    member_id: 0x8cda3bf9
+    member_id: 0x7a4a1d30
+    member_id: 0x82e15cd4
+    member_id: 0x3b44f9c1
+    member_id: 0x9b3b71e5
+    member_id: 0x210c5bf3
+    member_id: 0x2d5bf216
+    member_id: 0xb864f388
+  }
+}
+struct_union {
+  id: 0x105b054f
+  kind: STRUCT
+  name: "uprobe_consumer"
+  definition {
+    bytesize: 32
+    member_id: 0xf9770229
+    member_id: 0x3f46e4cc
+    member_id: 0xa33eb7b1
+    member_id: 0x11fd8eee
+  }
+}
+struct_union {
+  id: 0xc639c5af
+  kind: STRUCT
+  name: "uprobe_task"
+  definition {
+    bytesize: 64
+    member_id: 0x72873e78
+    member_id: 0x34805b66
+    member_id: 0xab159568
+    member_id: 0x77d0756f
+    member_id: 0xea1cc4b8
+    member_id: 0x1b218a1d
+  }
+}
+struct_union {
+  id: 0x527bb441
+  kind: STRUCT
+  name: "uprobes_state"
+  definition {
+    bytesize: 8
+    member_id: 0x8eccdd4e
+  }
+}
+struct_union {
+  id: 0x2e8060e3
+  kind: STRUCT
+  name: "urb"
+  definition {
+    bytesize: 216
+    member_id: 0x02ce5986
+    member_id: 0x94611ed1
+    member_id: 0x7680e790
+    member_id: 0x99fa9ed9
+    member_id: 0x20f644f9
+    member_id: 0x4ad297e0
+    member_id: 0x3433cf74
+    member_id: 0xcc098f06
+    member_id: 0xce3495b5
+    member_id: 0xb5a5932b
+    member_id: 0x99a9aba6
+    member_id: 0x74f7245a
+    member_id: 0x2000056a
+    member_id: 0x8cd14077
+    member_id: 0x6bc702cc
+    member_id: 0x9f25699b
+    member_id: 0x9d865844
+    member_id: 0x60298517
+    member_id: 0x7a3dc1e1
+    member_id: 0x6e0321eb
+    member_id: 0x81cfbe7a
+    member_id: 0xcfa03b24
+    member_id: 0xe6d1a9b9
+    member_id: 0x786ffa71
+    member_id: 0xd6b6c530
+    member_id: 0x49a09ccd
+    member_id: 0x0b9ba55b
+    member_id: 0x41af8f7c
+    member_id: 0x4ae38270
+    member_id: 0x2d081262
+    member_id: 0x63760345
+    member_id: 0xac8940ee
+    member_id: 0xe0f63767
+    member_id: 0x6b683df2
+  }
+}
+struct_union {
+  id: 0xf73d9c84
+  kind: STRUCT
+  name: "usb2_lpm_parameters"
+  definition {
+    bytesize: 8
+    member_id: 0x69011a3e
+    member_id: 0x54a4a93f
+  }
+}
+struct_union {
+  id: 0x48683747
+  kind: STRUCT
+  name: "usb3_lpm_parameters"
+  definition {
+    bytesize: 16
+    member_id: 0x93845459
+    member_id: 0x3feb3084
+    member_id: 0x339d15e8
+    member_id: 0x54a4ad87
+  }
+}
+struct_union {
+  id: 0xfb1df068
+  kind: STRUCT
+  name: "usb_anchor"
+  definition {
+    bytesize: 56
+    member_id: 0x4ad29f29
+    member_id: 0x202d9e50
+    member_id: 0x2d1feb42
+    member_id: 0xb9962be6
+    member_id: 0xaaa09e32
+  }
+}
+struct_union {
+  id: 0x5b7d5acf
+  kind: STRUCT
+  name: "usb_bos_descriptor"
+  definition {
+    bytesize: 5
+    member_id: 0xe74b71e2
+    member_id: 0xfab9d95b
+    member_id: 0x8dd2349f
+    member_id: 0x6f203337
+  }
+}
+struct_union {
+  id: 0xdc65a14c
+  kind: STRUCT
+  name: "usb_bus"
+  definition {
+    bytesize: 176
+    member_id: 0xd817c8aa
+    member_id: 0x3d952d66
+    member_id: 0x0b59345b
+    member_id: 0x8c7aa07d
+    member_id: 0xfb5c8b36
+    member_id: 0x5b0f4ad4
+    member_id: 0x5f9742c5
+    member_id: 0x66b3ddbd
+    member_id: 0x15069ad5
+    member_id: 0xd55d762c
+    member_id: 0xd87544b5
+    member_id: 0x8b6ecdd4
+    member_id: 0x83a6f74b
+    member_id: 0x57939da4
+    member_id: 0xa2cb8ced
+    member_id: 0xfd933f9f
+    member_id: 0xfeb54b09
+    member_id: 0x3cd3d123
+    member_id: 0x1d9b11ef
+    member_id: 0x697c3b1d
+    member_id: 0x2d081bee
+    member_id: 0x63760b66
+    member_id: 0xac894f2b
+    member_id: 0xe0f63ec8
+  }
+}
+struct_union {
+  id: 0x2cd73c9a
+  kind: STRUCT
+  name: "usb_cdc_acm_descriptor"
+  definition {
+    bytesize: 4
+    member_id: 0xe74b71e2
+    member_id: 0xfab9d95b
+    member_id: 0x621a5fb2
+    member_id: 0x916278f8
+  }
+}
+struct_union {
+  id: 0x12718cba
+  kind: STRUCT
+  name: "usb_cdc_call_mgmt_descriptor"
+  definition {
+    bytesize: 5
+    member_id: 0xe74b71e2
+    member_id: 0xfab9d95b
+    member_id: 0x621a5fb2
+    member_id: 0x916278f8
+    member_id: 0x0fdfca44
+  }
+}
+struct_union {
+  id: 0x58912da5
+  kind: STRUCT
+  name: "usb_cdc_country_functional_desc"
+  definition {
+    bytesize: 6
+    member_id: 0xe74b71e2
+    member_id: 0xfab9d95b
+    member_id: 0x621a5fb2
+    member_id: 0x8d9bb436
+    member_id: 0xd3595cd3
+  }
+}
+struct_union {
+  id: 0xd8760162
+  kind: STRUCT
+  name: "usb_cdc_dmm_desc"
+  definition {
+    bytesize: 7
+    member_id: 0xb40b1915
+    member_id: 0xfab9d95b
+    member_id: 0xfaa868ba
+    member_id: 0x3e045e5e
+    member_id: 0x5adfd000
+  }
+}
+struct_union {
+  id: 0x2ac36a79
+  kind: STRUCT
+  name: "usb_cdc_ether_desc"
+  definition {
+    bytesize: 13
+    member_id: 0xe74b71e2
+    member_id: 0xfab9d95b
+    member_id: 0x621a5fb2
+    member_id: 0x2b8bb683
+    member_id: 0x0ef04bd6
+    member_id: 0x9e734d77
+    member_id: 0xd6499e1b
+    member_id: 0x68fc8a5e
+  }
+}
+struct_union {
+  id: 0x9db2827f
+  kind: STRUCT
+  name: "usb_cdc_header_desc"
+  definition {
+    bytesize: 5
+    member_id: 0xe74b71e2
+    member_id: 0xfab9d95b
+    member_id: 0x621a5fb2
+    member_id: 0x638c2bea
+  }
+}
+struct_union {
+  id: 0x971eca3d
+  kind: STRUCT
+  name: "usb_cdc_line_coding"
+  definition {
+    bytesize: 7
+    member_id: 0x7b985831
+    member_id: 0xc2707355
+    member_id: 0xcea9a8fa
+    member_id: 0xd8483312
+  }
+}
+struct_union {
+  id: 0xfd99c0c6
+  kind: STRUCT
+  name: "usb_cdc_mbim_desc"
+  definition {
+    bytesize: 12
+    member_id: 0xe74b71e2
+    member_id: 0xfab9d95b
+    member_id: 0x621a5fb2
+    member_id: 0xc7d241c6
+    member_id: 0x3e209b51
+    member_id: 0x6ac807c2
+    member_id: 0x6dc343b7
+    member_id: 0x9e7345e7
+    member_id: 0xfb7cc3c9
+  }
+}
+struct_union {
+  id: 0x6f66da8d
+  kind: STRUCT
+  name: "usb_cdc_mbim_extended_desc"
+  definition {
+    bytesize: 8
+    member_id: 0xe74b71e2
+    member_id: 0xfab9d95b
+    member_id: 0x621a5fb2
+    member_id: 0x01f53df9
+    member_id: 0x75825832
+    member_id: 0xb75b254f
+  }
+}
+struct_union {
+  id: 0xca553a6b
+  kind: STRUCT
+  name: "usb_cdc_mdlm_desc"
+  definition {
+    bytesize: 21
+    member_id: 0xe74b71e2
+    member_id: 0xfab9d95b
+    member_id: 0x621a5fb2
+    member_id: 0x3e77891f
+    member_id: 0x80b709f0
+  }
+}
+struct_union {
+  id: 0xab3dca9b
+  kind: STRUCT
+  name: "usb_cdc_mdlm_detail_desc"
+  definition {
+    bytesize: 4
+    member_id: 0xe74b71e2
+    member_id: 0xfab9d95b
+    member_id: 0x621a5fb2
+    member_id: 0xbe7ef6db
+    member_id: 0x271d5ab9
+  }
+}
+struct_union {
+  id: 0x67f7c9ff
+  kind: STRUCT
+  name: "usb_cdc_ncm_desc"
+  definition {
+    bytesize: 6
+    member_id: 0xe74b71e2
+    member_id: 0xfab9d95b
+    member_id: 0x621a5fb2
+    member_id: 0xdb28e038
+    member_id: 0xfb7cce1d
+  }
+}
+struct_union {
+  id: 0x50209186
+  kind: STRUCT
+  name: "usb_cdc_network_terminal_desc"
+  definition {
+    bytesize: 7
+    member_id: 0xe74b71e2
+    member_id: 0xfab9d95b
+    member_id: 0x621a5fb2
+    member_id: 0xde552fb9
+    member_id: 0x1d11bec1
+    member_id: 0xa7b8c4d1
+    member_id: 0x1c1dff1a
+  }
+}
+struct_union {
+  id: 0x8e126b2d
+  kind: STRUCT
+  name: "usb_cdc_obex_desc"
+  definition {
+    bytesize: 5
+    member_id: 0xe74b71e2
+    member_id: 0xfab9d95b
+    member_id: 0x621a5fb2
+    member_id: 0x3e77891f
+  }
+}
+struct_union {
+  id: 0x64c7de23
+  kind: STRUCT
+  name: "usb_cdc_parsed_header"
+  definition {
+    bytesize: 120
+    member_id: 0x2ab8ec07
+    member_id: 0x2901a2d1
+    member_id: 0x3ad33d1e
+    member_id: 0x036b12ba
+    member_id: 0x19b2cb91
+    member_id: 0x6be7d1f9
+    member_id: 0x0c2aa389
+    member_id: 0x91386300
+    member_id: 0xcf1e9a16
+    member_id: 0x98da853d
+    member_id: 0x7ccfd756
+    member_id: 0xa3686277
+    member_id: 0x418c9cd2
+    member_id: 0xe4628853
+    member_id: 0xab602669
+  }
+}
+struct_union {
+  id: 0xb8367f6d
+  kind: STRUCT
+  name: "usb_cdc_union_desc"
+  definition {
+    bytesize: 5
+    member_id: 0xe74b71e2
+    member_id: 0xfab9d95b
+    member_id: 0x621a5fb2
+    member_id: 0x3fa47d82
+    member_id: 0x6558ecdc
+  }
+}
+struct_union {
+  id: 0xe545a74a
+  kind: STRUCT
+  name: "usb_charger_current"
+  definition {
+    bytesize: 32
+    member_id: 0xa4ecd7f8
+    member_id: 0x682990f8
+    member_id: 0xe2fa3c27
+    member_id: 0x5b2564e2
+    member_id: 0xc3a22176
+    member_id: 0x63df01df
+    member_id: 0x9e8ac6c8
+    member_id: 0xe7429092
+  }
+}
+struct_union {
+  id: 0xaec12290
+  kind: STRUCT
+  name: "usb_composite_dev"
+  definition {
+    bytesize: 152
+    member_id: 0x1875f049
+    member_id: 0x93f7acd6
+    member_id: 0xca6652f0
+    member_id: 0xd1ab3cca
+    member_id: 0x5e1b43b2
+    member_id: 0x29f1499b
+    member_id: 0x64ca3b41
+    member_id: 0x830f3d67
+    member_id: 0x1e8ccb82
+    member_id: 0x87f8311e
+    member_id: 0xe94df10a
+    member_id: 0x6f99e521
+    member_id: 0xd452c872
+    member_id: 0xe211dd14
+    member_id: 0x27cc5bcb
+    member_id: 0xd2107705
+    member_id: 0xab993d43
+    member_id: 0x2d1fe259
+    member_id: 0x9b4150c9
+    member_id: 0xa75386f3
+  }
+}
+struct_union {
+  id: 0x5b03f42b
+  kind: STRUCT
+  name: "usb_composite_driver"
+  definition {
+    bytesize: 336
+    member_id: 0x0de57ce8
+    member_id: 0xce0653f5
+    member_id: 0xddbb8da5
+    member_id: 0xa9e24ce7
+    member_id: 0xfeb43495
+    member_id: 0x6d11caba
+    member_id: 0x59b514d0
+    member_id: 0x8da71577
+    member_id: 0xf3b67564
+    member_id: 0xca934f5e
+    member_id: 0x2c80bff4
+  }
+}
+struct_union {
+  id: 0x6272783c
+  kind: STRUCT
+  name: "usb_config_descriptor"
+  definition {
+    bytesize: 9
+    member_id: 0xe74b71e2
+    member_id: 0xfab9d95b
+    member_id: 0x8dd2349f
+    member_id: 0xea61f760
+    member_id: 0xe87e5e05
+    member_id: 0x7c005144
+    member_id: 0x0f7c3118
+    member_id: 0x216b433b
+  }
+}
+struct_union {
+  id: 0x11bff01b
+  kind: STRUCT
+  name: "usb_configuration"
+  definition {
+    bytesize: 224
+    member_id: 0x0517038f
+    member_id: 0xddbb8086
+    member_id: 0x148adbbf
+    member_id: 0x5994a009
+    member_id: 0x84e46063
+    member_id: 0xe8e4e058
+    member_id: 0x7c9ae514
+    member_id: 0x0fe68522
+    member_id: 0x0784653e
+    member_id: 0x05b721de
+    member_id: 0x7c00e825
+    member_id: 0x56c788cc
+    member_id: 0x61cd2a5c
+    member_id: 0x0a4e4bd1
+    member_id: 0x5e08123a
+    member_id: 0xfeb50ea0
+    member_id: 0xe2abd8c5
+    member_id: 0x1e3c064f
+  }
+}
+struct_union {
+  id: 0xf70d15f8
+  kind: STRUCT
+  name: "usb_ctrlrequest"
+  definition {
+    bytesize: 8
+    member_id: 0x4a455418
+    member_id: 0xbd733e2a
+    member_id: 0x691d7ee5
+    member_id: 0x2021ba82
+    member_id: 0x070c80f2
+  }
+}
+struct_union {
+  id: 0xfd051fb3
+  kind: STRUCT
+  name: "usb_dcd_config_params"
+  definition {
+    bytesize: 6
+    member_id: 0x4cea40ec
+    member_id: 0xbd80152e
+    member_id: 0x27a19177
+    member_id: 0xc73982ff
+  }
+}
+struct_union {
+  id: 0x36dc4de8
+  kind: STRUCT
+  name: "usb_descriptor_header"
+  definition {
+    bytesize: 2
+    member_id: 0xe74b71e2
+    member_id: 0xfab9d95b
+  }
+}
+struct_union {
+  id: 0x1fb379af
+  kind: STRUCT
+  name: "usb_device"
+  definition {
+    bytesize: 1584
+    member_id: 0x575bee81
+    member_id: 0x18249e35
+    member_id: 0x995819c8
+    member_id: 0x725e8c9b
+    member_id: 0xa0b8eb7f
+    member_id: 0xc9cad57e
+    member_id: 0xa084a106
+    member_id: 0x24cac820
+    member_id: 0x5efed635
+    member_id: 0x77072155
+    member_id: 0x174df41d
+    member_id: 0x723c076f
+    member_id: 0xdaedae91
+    member_id: 0x3b225032
+    member_id: 0xce1acbca
+    member_id: 0xd6f280e5
+    member_id: 0x50297645
+    member_id: 0xd195dd1d
+    member_id: 0x2b4d96be
+    member_id: 0xd80e161f
+    member_id: 0x775f75c8
+    member_id: 0x018e63c8
+    member_id: 0xb6309565
+    member_id: 0x07fa68be
+    member_id: 0x869394b3
+    member_id: 0x3a503292
+    member_id: 0xd08414b5
+    member_id: 0xe4db73cd
+    member_id: 0x3a333154
+    member_id: 0xbf831cb1
+    member_id: 0x14fe6405
+    member_id: 0x86d7f4fb
+    member_id: 0xdc35308a
+    member_id: 0x0a9f8132
+    member_id: 0xb5e79513
+    member_id: 0x90eb88f9
+    member_id: 0x71e64007
+    member_id: 0x9fd26060
+    member_id: 0x5ec7864c
+    member_id: 0x33fe5eaa
+    member_id: 0x6904f922
+    member_id: 0x6983cb7e
+    member_id: 0xdf923671
+    member_id: 0xa9531899
+    member_id: 0xa781c5ca
+    member_id: 0x52024921
+    member_id: 0xd8d01ef5
+    member_id: 0x2a8af503
+    member_id: 0x7fecfc90
+    member_id: 0x1bcf24f2
+    member_id: 0x1c7178cc
+    member_id: 0x95931458
+    member_id: 0xac4bf7f1
+    member_id: 0x10042bd2
+    member_id: 0x3a655266
+    member_id: 0x05d05741
+    member_id: 0x18f3bb6c
+    member_id: 0x76ff1609
+    member_id: 0x07dd6a6b
+    member_id: 0x7407d3f8
+    member_id: 0xcbfaf84d
+    member_id: 0x0e98d4e4
+    member_id: 0x2d081dc5
+    member_id: 0x63760628
+    member_id: 0xac894ae5
+    member_id: 0xe0f634cc
+  }
+}
+struct_union {
+  id: 0x2211c501
+  kind: STRUCT
+  name: "usb_device_descriptor"
+  definition {
+    bytesize: 18
+    member_id: 0xe74b71e2
+    member_id: 0xfab9d95b
+    member_id: 0x6db65ab2
+    member_id: 0xfdd5b655
+    member_id: 0x266be4d9
+    member_id: 0x1a3b0e59
+    member_id: 0x9dc6a977
+    member_id: 0x4a2da691
+    member_id: 0xfff71b51
+    member_id: 0x4cb62a42
+    member_id: 0x75a6bfff
+    member_id: 0xe6970d0f
+    member_id: 0xd8623ec9
+    member_id: 0xd8aa6512
+  }
+}
+struct_union {
+  id: 0x59048a3d
+  kind: STRUCT
+  name: "usb_device_id"
+  definition {
+    bytesize: 32
+    member_id: 0x4e3deef2
+    member_id: 0x4a5e7b8f
+    member_id: 0xff84c5b7
+    member_id: 0xce1028be
+    member_id: 0x6d668bf4
+    member_id: 0xfdd5bff2
+    member_id: 0x266be90d
+    member_id: 0x1a3b0b1b
+    member_id: 0xff57285d
+    member_id: 0xdcfce30d
+    member_id: 0x0d79bf14
+    member_id: 0x54ab1033
+    member_id: 0x5e2be944
+  }
+}
+struct_union {
+  id: 0x9111b86d
+  kind: STRUCT
+  name: "usb_devmap"
+  definition {
+    bytesize: 16
+    member_id: 0x0eb05570
+  }
+}
+struct_union {
+  id: 0xd82a9856
+  kind: STRUCT
+  name: "usb_driver"
+  definition {
+    bytesize: 336
+    member_id: 0x0de57ce8
+    member_id: 0xd779dfba
+    member_id: 0x8da71f49
+    member_id: 0xd45e7605
+    member_id: 0xf395c6ed
+    member_id: 0xcab007c3
+    member_id: 0xa7913c80
+    member_id: 0x5e0fd3fb
+    member_id: 0xb58eff62
+    member_id: 0xc4fbca06
+    member_id: 0xf9546d20
+    member_id: 0x1b86a7a5
+    member_id: 0x51e2015b
+    member_id: 0xd2f1955a
+    member_id: 0x26cce85e
+    member_id: 0x46c16626
+    member_id: 0x6cbf6eaa
+    member_id: 0x2d0810ba
+    member_id: 0x63760d5b
+    member_id: 0xac8948f4
+    member_id: 0xe0f63d11
+  }
+}
+struct_union {
+  id: 0x91a9600d
+  kind: STRUCT
+  name: "usb_dynids"
+  definition {
+    bytesize: 24
+    member_id: 0x2d1fec85
+    member_id: 0x7c00ebb3
+  }
+}
+struct_union {
+  id: 0x1e00fa69
+  kind: STRUCT
+  name: "usb_endpoint_descriptor"
+  definition {
+    bytesize: 9
+    member_id: 0xe74b71e2
+    member_id: 0xfab9d95b
+    member_id: 0x9fc74f82
+    member_id: 0x0f7c3674
+    member_id: 0x25b0c8a9
+    member_id: 0x788f1d18
+    member_id: 0x5f38a7e3
+    member_id: 0xc83fcbb8
+  }
+}
+struct_union {
+  id: 0x12dae594
+  kind: STRUCT
+  name: "usb_ep"
+  definition {
+    bytesize: 80
+    member_id: 0x6d52b8b2
+    member_id: 0x0de57809
+    member_id: 0xafb67e05
+    member_id: 0xb8986969
+    member_id: 0x0883a927
+    member_id: 0xca7e9251
+    member_id: 0x3a2d367c
+    member_id: 0x38582cd7
+    member_id: 0x0806dc1f
+    member_id: 0x08da9d9b
+    member_id: 0x618d33ac
+    member_id: 0x2817de6d
+    member_id: 0x30f84189
+    member_id: 0x87e65efb
+    member_id: 0x205151e6
+    member_id: 0x2d081c40
+  }
+}
+struct_union {
+  id: 0xac292bee
+  kind: STRUCT
+  name: "usb_ep_caps"
+  definition {
+    bytesize: 4
+    member_id: 0xb38ca977
+    member_id: 0xc29ac9a5
+    member_id: 0xeb47058c
+    member_id: 0xb9c73019
+    member_id: 0xe029b7a1
+    member_id: 0x648b9613
+  }
+}
+struct_union {
+  id: 0x0e326f05
+  kind: STRUCT
+  name: "usb_ep_ops"
+  definition {
+    bytesize: 96
+    member_id: 0x98ca2102
+    member_id: 0x0da0f771
+    member_id: 0xfe72437a
+    member_id: 0x179f1e50
+    member_id: 0x8cafaf6f
+    member_id: 0xadff3c9e
+    member_id: 0x31c65e36
+    member_id: 0x86f35fb4
+    member_id: 0xf4be2934
+    member_id: 0xc7f4195b
+    member_id: 0x9d361053
+    member_id: 0x2d08170f
+  }
+}
+struct_union {
+  id: 0x2d43fd7f
+  kind: STRUCT
+  name: "usb_ext_cap_descriptor"
+  definition {
+    bytesize: 7
+    member_id: 0xe74b71e2
+    member_id: 0xfab9d95b
+    member_id: 0x44bf4180
+    member_id: 0x0fc47bbe
+  }
+}
+struct_union {
+  id: 0xabc38a13
+  kind: STRUCT
+  name: "usb_function"
+  definition {
+    bytesize: 216
+    member_id: 0x0de57ce8
+    member_id: 0xddbb8086
+    member_id: 0x778c7e1c
+    member_id: 0x91ca3fe6
+    member_id: 0xe2cd15ca
+    member_id: 0x458e1416
+    member_id: 0xd1ab3591
+    member_id: 0xf4f54d8b
+    member_id: 0x4f63baa6
+    member_id: 0x6d131ef8
+    member_id: 0x59948ed9
+    member_id: 0x3e677cf1
+    member_id: 0x8c1b6723
+    member_id: 0x00a1b279
+    member_id: 0xfa9e1262
+    member_id: 0x0d81592a
+    member_id: 0x84e68e26
+    member_id: 0x5b6c091d
+    member_id: 0xf3b668c5
+    member_id: 0xca935288
+    member_id: 0x02248e81
+    member_id: 0x88373043
+    member_id: 0x7c00eda1
+    member_id: 0x0c1200fa
+    member_id: 0x10601c0f
+    member_id: 0xdf38ee46
+  }
+}
+struct_union {
+  id: 0x077cab24
+  kind: STRUCT
+  name: "usb_function_driver"
+  definition {
+    bytesize: 48
+    member_id: 0x0de57ce8
+    member_id: 0x8c1b6b6c
+    member_id: 0x7c00e690
+    member_id: 0x1ab9e524
+    member_id: 0x8e2f4601
+  }
+}
+struct_union {
+  id: 0x6a2e8c34
+  kind: STRUCT
+  name: "usb_function_instance"
+  definition {
+    bytesize: 184
+    member_id: 0xd373448b
+    member_id: 0x01788a09
+    member_id: 0x7f1955b1
+    member_id: 0x41bb9707
+    member_id: 0x80b101bf
+    member_id: 0xe66f3f36
+  }
+}
+struct_union {
+  id: 0xbfd40a95
+  kind: STRUCT
+  name: "usb_gadget"
+  definition {
+    bytesize: 1072
+    member_id: 0xd6e667b7
+    member_id: 0x5531ad4b
+    member_id: 0xafb6744b
+    member_id: 0x3b0858c1
+    member_id: 0xb89868d2
+    member_id: 0xa0b8ea66
+    member_id: 0xa9e24ae9
+    member_id: 0x24cac749
+    member_id: 0x03300c8d
+    member_id: 0x725e87e8
+    member_id: 0x0de5764e
+    member_id: 0xce1ac9ba
+    member_id: 0x2f497469
+    member_id: 0x4b42e885
+    member_id: 0xe760cbcd
+    member_id: 0x6d293ed3
+    member_id: 0xdf79facb
+    member_id: 0x61e60032
+    member_id: 0x1ad2b967
+    member_id: 0x30d08fca
+    member_id: 0x66b3d9d9
+    member_id: 0xc46b83a7
+    member_id: 0xfb59b28c
+    member_id: 0x6bce491a
+    member_id: 0xc80b5bf6
+    member_id: 0xa61d8d92
+    member_id: 0x382c000a
+    member_id: 0xe0141e5d
+    member_id: 0xfcfe44a4
+    member_id: 0xf0e41911
+    member_id: 0x7b7cfb93
+    member_id: 0x4397dac6
+    member_id: 0x90939b75
+    member_id: 0x0a9f8d5e
+    member_id: 0x99159c55
+    member_id: 0xd3d51732
+  }
+}
+struct_union {
+  id: 0xcffecd3e
+  kind: STRUCT
+  name: "usb_gadget_driver"
+  definition {
+    bytesize: 264
+    member_id: 0xab6f0143
+    member_id: 0xa9e240cf
+    member_id: 0x6d11bee8
+    member_id: 0x599619a6
+    member_id: 0x84e6d9cc
+    member_id: 0x8da75776
+    member_id: 0xf3b637d5
+    member_id: 0xca930765
+    member_id: 0x62b1452f
+    member_id: 0xd4ad451a
+    member_id: 0x9c5173fa
+    member_id: 0xe5eb8f2c
+    member_id: 0x8b933b4a
+  }
+}
+struct_union {
+  id: 0x0e7dd04d
+  kind: STRUCT
+  name: "usb_gadget_ops"
+  definition {
+    bytesize: 152
+    member_id: 0x113929de
+    member_id: 0xff107114
+    member_id: 0xb1200e59
+    member_id: 0x3fa6c907
+    member_id: 0x099227c5
+    member_id: 0xc1fd1a70
+    member_id: 0x4d4bbff1
+    member_id: 0xc0137b3b
+    member_id: 0x93e0dfac
+    member_id: 0x3d398bbb
+    member_id: 0x74c677a1
+    member_id: 0x87c54f5a
+    member_id: 0xedaf20a8
+    member_id: 0x5dc4030f
+    member_id: 0x68e21a91
+    member_id: 0x2d081dc1
+    member_id: 0x63760ebd
+    member_id: 0xac894420
+    member_id: 0xe0f63a97
+  }
+}
+struct_union {
+  id: 0x2a7cfa14
+  kind: STRUCT
+  name: "usb_gadget_strings"
+  definition {
+    bytesize: 16
+    member_id: 0x34365764
+    member_id: 0xdd9b4443
+  }
+}
+struct_union {
+  id: 0xbfa06b14
+  kind: STRUCT
+  name: "usb_hcd"
+  definition {
+    bytesize: 720
+    member_id: 0x3c39c4c3
+    member_id: 0x02ce5b75
+    member_id: 0x703f28c1
+    member_id: 0xa08da7ed
+    member_id: 0x5ee85607
+    member_id: 0x4e68600e
+    member_id: 0xe59a485e
+    member_id: 0x1a8d5950
+    member_id: 0xfc7e0dba
+    member_id: 0xd47519de
+    member_id: 0x1058a1fb
+    member_id: 0xba419099
+    member_id: 0x2d5bfb55
+    member_id: 0x7a05079e
+    member_id: 0x46ed8f1f
+    member_id: 0x19fc01b5
+    member_id: 0xfc3feae9
+    member_id: 0x8c48bd78
+    member_id: 0xdecf871e
+    member_id: 0x3acabb1f
+    member_id: 0xe7b27044
+    member_id: 0xb5f94af8
+    member_id: 0xb7d6c67c
+    member_id: 0xdf02d1f8
+    member_id: 0x5cdf43f2
+    member_id: 0xe33ac34a
+    member_id: 0x9937369d
+    member_id: 0x8023c171
+    member_id: 0xb34e2759
+    member_id: 0xd06f4d55
+    member_id: 0xd13842eb
+    member_id: 0x8f065dcb
+    member_id: 0x468f26e8
+    member_id: 0x4ab853e8
+    member_id: 0xbf5f26d7
+    member_id: 0x3d623c4e
+    member_id: 0xe21962de
+    member_id: 0xde07d329
+    member_id: 0x7294dae9
+    member_id: 0x8c567013
+    member_id: 0x2d081f8d
+    member_id: 0x6376014c
+    member_id: 0xac8940d0
+    member_id: 0xe0f630f5
+    member_id: 0xe8de00d5
+  }
+}
+struct_union {
+  id: 0x8b90fc01
+  kind: STRUCT
+  name: "usb_host_bos"
+  definition {
+    bytesize: 80
+    member_id: 0x87c662ae
+    member_id: 0x997db32f
+    member_id: 0x3241d5d1
+    member_id: 0x4237b475
+    member_id: 0x4b0726eb
+    member_id: 0x87e709e7
+    member_id: 0x2d0814a0
+    member_id: 0x63760ed5
+    member_id: 0xac89424e
+    member_id: 0xe0f63d39
+  }
+}
+struct_union {
+  id: 0xea38dbab
+  kind: STRUCT
+  name: "usb_host_config"
+  definition {
+    bytesize: 680
+    member_id: 0x87b85fb9
+    member_id: 0xdff6a837
+    member_id: 0x70599fda
+    member_id: 0x1e24aafe
+    member_id: 0x765bfcd9
+    member_id: 0x5046957b
+    member_id: 0x942c9a19
+  }
+}
+struct_union {
+  id: 0x24275666
+  kind: STRUCT
+  name: "usb_host_endpoint"
+  definition {
+    bytesize: 80
+    member_id: 0x87c42d3b
+    member_id: 0x8b878c0f
+    member_id: 0xb5c66276
+    member_id: 0x4ad297e0
+    member_id: 0x7680e4b6
+    member_id: 0xd0ba5b1b
+    member_id: 0x50469e96
+    member_id: 0x942c973a
+    member_id: 0x3a276fef
+    member_id: 0x8d981fcb
+  }
+}
+struct_union {
+  id: 0x2cf36fc9
+  kind: STRUCT
+  name: "usb_host_interface"
+  definition {
+    bytesize: 40
+    member_id: 0x87afc747
+    member_id: 0x942c95a1
+    member_id: 0x50469023
+    member_id: 0xd2e931bf
+    member_id: 0xdff6a15e
+  }
+}
+struct_union {
+  id: 0xae5a9933
+  kind: STRUCT
+  name: "usb_interface"
+  definition {
+    bytesize: 1048
+    member_id: 0x929a19b5
+    member_id: 0x2dbb1524
+    member_id: 0x90d99972
+    member_id: 0x702d8941
+    member_id: 0xc84023cf
+    member_id: 0x1372563a
+    member_id: 0x8b2bbe4d
+    member_id: 0x11dac179
+    member_id: 0x39772a8e
+    member_id: 0xd78c5d79
+    member_id: 0x8fc027a8
+    member_id: 0x13d49b3e
+    member_id: 0x4381fffc
+    member_id: 0x14fe6fd9
+    member_id: 0xce1ac0db
+    member_id: 0xcea50aff
+    member_id: 0x141797df
+    member_id: 0x2d081854
+    member_id: 0x63760ea3
+    member_id: 0xac8949c0
+    member_id: 0xe0f633f3
+  }
+}
+struct_union {
+  id: 0xffae37a8
+  kind: STRUCT
+  name: "usb_interface_assoc_descriptor"
+  definition {
+    bytesize: 8
+    member_id: 0xe74b71e2
+    member_id: 0xfab9d95b
+    member_id: 0x1a9ce8d2
+    member_id: 0x56212c03
+    member_id: 0xaad8b184
+    member_id: 0x24451e91
+    member_id: 0xed6b3e84
+    member_id: 0x6000efd9
+  }
+}
+struct_union {
+  id: 0x7bdc8a60
+  kind: STRUCT
+  name: "usb_interface_cache"
+  definition {
+    bytesize: 8
+    member_id: 0x90d990b0
+    member_id: 0xce703666
+    member_id: 0x9254b4e3
+  }
+}
+struct_union {
+  id: 0x75ea86c7
+  kind: STRUCT
+  name: "usb_interface_descriptor"
+  definition {
+    bytesize: 9
+    member_id: 0xe74b71e2
+    member_id: 0xfab9d95b
+    member_id: 0x54ab174f
+    member_id: 0xeeab7a86
+    member_id: 0x61b6ff99
+    member_id: 0xff5729af
+    member_id: 0xdcfce301
+    member_id: 0x0d79ba3f
+    member_id: 0x2a5c2a49
+  }
+}
+struct_union {
+  id: 0xf233d0b8
+  kind: STRUCT
+  name: "usb_iso_packet_descriptor"
+  definition {
+    bytesize: 16
+    member_id: 0x9b5959a2
+    member_id: 0xb528ea05
+    member_id: 0x81433ef7
+    member_id: 0x20000ed4
+  }
+}
+struct_union {
+  id: 0x06d1bf9c
+  kind: STRUCT
+  name: "usb_os_desc"
+  definition {
+    bytesize: 184
+    member_id: 0x50922243
+    member_id: 0xd1caa58e
+    member_id: 0xe899f6f3
+    member_id: 0xb3825cd2
+    member_id: 0xf12db66c
+    member_id: 0xd373434c
+    member_id: 0x4a9650a3
+  }
+}
+struct_union {
+  id: 0x933d106c
+  kind: STRUCT
+  name: "usb_os_desc_table"
+  definition {
+    bytesize: 16
+    member_id: 0x2e77e7fa
+    member_id: 0xd2413ce2
+  }
+}
+struct_union {
+  id: 0x1c8e56a3
+  kind: STRUCT
+  name: "usb_otg"
+  definition {
+    bytesize: 96
+    member_id: 0xce2fcc13
+    member_id: 0xb0784305
+    member_id: 0x1058a10a
+    member_id: 0xb8c9a63c
+    member_id: 0x1875f0e2
+    member_id: 0x7239f3be
+    member_id: 0x5aecd6ed
+    member_id: 0x1cd0b9ff
+    member_id: 0xfef70ddf
+    member_id: 0x9eb9acd8
+    member_id: 0x22b775eb
+    member_id: 0x2d08170f
+  }
+}
+struct_union {
+  id: 0x0e80756d
+  kind: STRUCT
+  name: "usb_otg_caps"
+  definition {
+    bytesize: 6
+    member_id: 0x48b8b314
+    member_id: 0x4c0b21cc
+    member_id: 0xc079228b
+    member_id: 0xd97f8733
+  }
+}
+struct_union {
+  id: 0x556c6bb0
+  kind: STRUCT
+  name: "usb_pd_identity"
+  definition {
+    bytesize: 24
+    member_id: 0x05495988
+    member_id: 0x3df2e951
+    member_id: 0xdf5fbed4
+    member_id: 0x9aacd7b3
+  }
+}
+struct_union {
+  id: 0x3d4a69b5
+  kind: STRUCT
+  name: "usb_phy"
+  definition {
+    bytesize: 392
+    member_id: 0xce3bbab3
+    member_id: 0x0517076e
+    member_id: 0x2d2d08fa
+    member_id: 0x5cf43c55
+    member_id: 0x58817fdc
+    member_id: 0x9dbc540c
+    member_id: 0xa3dbd5d1
+    member_id: 0x9673a617
+    member_id: 0xd5efcf8b
+    member_id: 0xbe46ce0b
+    member_id: 0x67a1f303
+    member_id: 0xf13b54fd
+    member_id: 0xb773aefe
+    member_id: 0x1ea46e33
+    member_id: 0x6501f0a9
+    member_id: 0xb7447353
+    member_id: 0x85f5483d
+    member_id: 0x841775ec
+    member_id: 0x37039d26
+    member_id: 0x2083fe73
+    member_id: 0x65373c2d
+    member_id: 0xb5897f42
+    member_id: 0x1ac760fd
+    member_id: 0x9efbdd2b
+    member_id: 0xfef782fd
+    member_id: 0x80a69db4
+    member_id: 0x13055279
+    member_id: 0xbd51e7df
+    member_id: 0x56fe5fc2
+    member_id: 0x975fa344
+    member_id: 0x04f8f40a
+    member_id: 0xedc9a6ac
+    member_id: 0x2d081bb9
+    member_id: 0x637600f9
+    member_id: 0xac894f5e
+    member_id: 0xe0f63bda
+  }
+}
+struct_union {
+  id: 0x088fe257
+  kind: STRUCT
+  name: "usb_phy_io_ops"
+  definition {
+    bytesize: 16
+    member_id: 0x48703aa7
+    member_id: 0x342db9a0
+  }
+}
+struct_union {
+  id: 0x30a605b1
+  kind: STRUCT
+  name: "usb_phy_roothub"
+  definition {
+    bytesize: 24
+    member_id: 0xb07847e4
+    member_id: 0x7c00ebb3
+  }
+}
+struct_union {
+  id: 0xf713be4d
+  kind: STRUCT
+  name: "usb_power_delivery"
+  definition {
+    bytesize: 920
+    member_id: 0xce1ac149
+    member_id: 0xcc4806c1
+    member_id: 0x94399220
+    member_id: 0xa6f07398
+  }
+}
+struct_union {
+  id: 0xc5309455
+  kind: STRUCT
+  name: "usb_power_delivery_capabilities"
+  definition {
+    bytesize: 928
+    member_id: 0xce1ac149
+    member_id: 0x6733a0da
+    member_id: 0xc069e42e
+  }
+}
+struct_union {
+  id: 0x6621953c
+  kind: STRUCT
+  name: "usb_ptm_cap_descriptor"
+  definition {
+    bytesize: 3
+    member_id: 0xe74b71e2
+    member_id: 0xfab9d95b
+    member_id: 0x44bf4180
+  }
+}
+struct_union {
+  id: 0x94272e47
+  kind: STRUCT
+  name: "usb_request"
+  definition {
+    bytesize: 104
+    member_id: 0x9a037dbf
+    member_id: 0xb528e3df
+    member_id: 0x811afaf5
+    member_id: 0x9d865a2b
+    member_id: 0x7a1f642d
+    member_id: 0x600b2c88
+    member_id: 0xfd400845
+    member_id: 0xdad0932b
+    member_id: 0xf3a49bd3
+    member_id: 0xe7701d1b
+    member_id: 0x5b4328e9
+    member_id: 0x2af3d123
+    member_id: 0x4a57db9c
+    member_id: 0x41af8288
+    member_id: 0x7c00e44a
+    member_id: 0x2c35055f
+    member_id: 0x20000016
+    member_id: 0x92f98fb9
+    member_id: 0x2d081d9c
+  }
+}
+struct_union {
+  id: 0xc3c4fdc9
+  kind: STRUCT
+  name: "usb_role_switch"
+  definition {
+    bytesize: 1016
+    member_id: 0xce1ac149
+    member_id: 0x2d4b3683
+    member_id: 0xc024bfe6
+    member_id: 0x11d1c620
+    member_id: 0x45a3a468
+    member_id: 0x55056191
+    member_id: 0x3d95b448
+    member_id: 0x317385e4
+    member_id: 0x408deb05
+  }
+}
+struct_union {
+  id: 0xa576f3da
+  kind: STRUCT
+  name: "usb_role_switch_desc"
+  definition {
+    bytesize: 72
+    member_id: 0x6e4d805e
+    member_id: 0x11d1c32e
+    member_id: 0x45a3a04f
+    member_id: 0x55056f96
+    member_id: 0x3d95b028
+    member_id: 0x31738ecc
+    member_id: 0x408dedf8
+    member_id: 0x6d52bfc5
+    member_id: 0x0de577f0
+  }
+}
+struct_union {
+  id: 0x505cf77f
+  kind: STRUCT
+  name: "usb_serial"
+  definition {
+    bytesize: 240
+    member_id: 0xce349ead
+    member_id: 0x5c62ac77
+    member_id: 0x1e592a48
+    member_id: 0xeec37d27
+    member_id: 0xdcd36a92
+    member_id: 0xd1a76d30
+    member_id: 0x57f5e518
+    member_id: 0x4d99c9ee
+    member_id: 0x0f194513
+    member_id: 0x176ff071
+    member_id: 0x1968f7ca
+    member_id: 0xc578d580
+    member_id: 0x4cfd4941
+    member_id: 0xd78f5a1c
+    member_id: 0x48bfae31
+    member_id: 0x02ce5b75
+    member_id: 0xdc0f3007
+    member_id: 0x91796dae
+  }
+}
+struct_union {
+  id: 0xfbb74458
+  kind: STRUCT
+  name: "usb_serial_driver"
+  definition {
+    bytesize: 560
+    member_id: 0x3144f518
+    member_id: 0xc4fbc795
+    member_id: 0xee864cc4
+    member_id: 0xd4ad4cc3
+    member_id: 0xfc09f0db
+    member_id: 0x1b86a2bd
+    member_id: 0x0f194aef
+    member_id: 0x4cfd40f2
+    member_id: 0xd78f59f9
+    member_id: 0x1968fceb
+    member_id: 0xc578dab3
+    member_id: 0x7ec3e667
+    member_id: 0x65ba3b43
+    member_id: 0xd77a2d00
+    member_id: 0x9619b60e
+    member_id: 0x7e1dc95a
+    member_id: 0x8da4e999
+    member_id: 0xae97a5b3
+    member_id: 0x66c5c2ea
+    member_id: 0xe4114db1
+    member_id: 0xf3963ffd
+    member_id: 0xcab3f147
+    member_id: 0xa792c035
+    member_id: 0xad9bbf06
+    member_id: 0xcd7f6f7d
+    member_id: 0x342fe464
+    member_id: 0xb08e3438
+    member_id: 0x4d4b01d0
+    member_id: 0x956eb42c
+    member_id: 0xd9943837
+    member_id: 0x7e9ca335
+    member_id: 0xfd552aa2
+    member_id: 0xd08d5830
+    member_id: 0x691df5b8
+    member_id: 0x14573c12
+    member_id: 0xca51229f
+    member_id: 0x80cd11b3
+    member_id: 0x7363590a
+    member_id: 0x7e4156be
+    member_id: 0x6e7a79e5
+    member_id: 0x34f4a74e
+    member_id: 0xc9730947
+    member_id: 0x59488b26
+    member_id: 0xe7104099
+    member_id: 0xe2acc05f
+    member_id: 0x84573c9c
+    member_id: 0xda4d0f3d
+    member_id: 0x68c4d9d3
+    member_id: 0x320901bb
+    member_id: 0x934f43bd
+  }
+}
+struct_union {
+  id: 0xe0ad154a
+  kind: STRUCT
+  name: "usb_serial_endpoints"
+  definition {
+    bytesize: 520
+    member_id: 0x4cfd4a18
+    member_id: 0xd78f5f05
+    member_id: 0x1968f921
+    member_id: 0xc578d426
+    member_id: 0x98845503
+    member_id: 0x2270ca1d
+    member_id: 0xb25f3460
+    member_id: 0x88026c22
+  }
+}
+struct_union {
+  id: 0xa21c2d88
+  kind: STRUCT
+  name: "usb_serial_port"
+  definition {
+    bytesize: 1720
+    member_id: 0xa79bc81d
+    member_id: 0x48b91cec
+    member_id: 0x2d1fe41d
+    member_id: 0xc8ee0dac
+    member_id: 0xdc316fde
+    member_id: 0xff6c3cd6
+    member_id: 0xa213a8a1
+    member_id: 0x85b71c5f
+    member_id: 0xf35c54ea
+    member_id: 0xa8309f44
+    member_id: 0x5e3b6ecc
+    member_id: 0xda583bd0
+    member_id: 0x80e88f85
+    member_id: 0x7e50f186
+    member_id: 0x20931093
+    member_id: 0x1926c096
+    member_id: 0xfd487f6f
+    member_id: 0xc6c74fe8
+    member_id: 0x59992c87
+    member_id: 0x6fbe0a7f
+    member_id: 0x65292cb0
+    member_id: 0xd4bce900
+    member_id: 0xa200605d
+    member_id: 0x2b178ab5
+    member_id: 0x47ac8207
+    member_id: 0x34019ec8
+    member_id: 0xa1532d41
+    member_id: 0x083df854
+    member_id: 0xb51b5e3a
+    member_id: 0x2d5bf0ae
+    member_id: 0xd6e66688
+    member_id: 0x1e9bca50
+    member_id: 0xce1ac891
+  }
+}
+struct_union {
+  id: 0x2e350ac8
+  kind: STRUCT
+  name: "usb_ss_cap_descriptor"
+  definition {
+    bytesize: 10
+    member_id: 0xe74b71e2
+    member_id: 0xfab9d95b
+    member_id: 0x44bf4180
+    member_id: 0x0f7c3674
+    member_id: 0x77a6f28c
+    member_id: 0xdc4d18d7
+    member_id: 0x4cea41e1
+    member_id: 0xbd801f71
+  }
+}
+struct_union {
+  id: 0x1d2702e8
+  kind: STRUCT
+  name: "usb_ss_container_id_descriptor"
+  definition {
+    bytesize: 20
+    member_id: 0xe74b71e2
+    member_id: 0xfab9d95b
+    member_id: 0x44bf4180
+    member_id: 0x8adb19a1
+    member_id: 0xc39ac173
+  }
+}
+struct_union {
+  id: 0xea5f49fa
+  kind: STRUCT
+  name: "usb_ss_ep_comp_descriptor"
+  definition {
+    bytesize: 6
+    member_id: 0xe74b71e2
+    member_id: 0xfab9d95b
+    member_id: 0x4741b29e
+    member_id: 0x0f7c3674
+    member_id: 0x0e4285a0
+  }
+}
+struct_union {
+  id: 0x4348ee1a
+  kind: STRUCT
+  name: "usb_ssp_cap_descriptor"
+  definition {
+    bytesize: 16
+    member_id: 0xe74b71e2
+    member_id: 0xfab9d95b
+    member_id: 0x44bf4180
+    member_id: 0x8adb19a1
+    member_id: 0x0fc470e4
+    member_id: 0x3b766446
+    member_id: 0x84d40eb1
+    member_id: 0xb0e7ec93
+  }
+}
+struct_union {
+  id: 0xfa38625c
+  kind: STRUCT
+  name: "usb_ssp_isoc_ep_comp_descriptor"
+  definition {
+    bytesize: 8
+    member_id: 0xe74b71e2
+    member_id: 0xfab9d95b
+    member_id: 0xeffe0b79
+    member_id: 0x5afe07a0
+  }
+}
+struct_union {
+  id: 0x831c10ec
+  kind: STRUCT
+  name: "usb_string"
+  definition {
+    bytesize: 16
+    member_id: 0xcc0670e3
+    member_id: 0x67cca386
+  }
+}
+struct_union {
+  id: 0x8a9afb74
+  kind: STRUCT
+  name: "usb_tt"
+  definition {
+    bytesize: 128
+    member_id: 0xe5c68ce9
+    member_id: 0xe77081c4
+    member_id: 0xca538c03
+    member_id: 0x7680eab3
+    member_id: 0x2d1fe44c
+    member_id: 0x0d593536
+    member_id: 0xf3fecb5a
+    member_id: 0x2d081d9c
+    member_id: 0x63760a18
+    member_id: 0xac8943f0
+    member_id: 0xe0f63cb8
+  }
+}
+struct_union {
+  id: 0xf00d1aa1
+  kind: STRUCT
+  name: "usb_udc"
+  definition {
+    bytesize: 1048
+    member_id: 0xd477fd9a
+    member_id: 0x1875f4a8
+    member_id: 0xce1ac88b
+    member_id: 0x7c00e340
+    member_id: 0xa8b1a153
+    member_id: 0x5367cfd2
+    member_id: 0x14e2bc0d
+    member_id: 0xdf3f679f
+    member_id: 0x997c2cff
+  }
+}
+struct_union {
+  id: 0x3c6b8341
+  kind: STRUCT
+  name: "usbdrv_wrap"
+  definition {
+    bytesize: 184
+    member_id: 0xd4ad4c68
+    member_id: 0x4b47d823
+  }
+}
+struct_union {
+  id: 0x1d6740b1
+  kind: STRUCT
+  name: "usbnet"
+  definition {
+    bytesize: 696
+    member_id: 0xbb0eb3a5
+    member_id: 0x8a1b2331
+    member_id: 0x5e589542
+    member_id: 0xf415f74d
+    member_id: 0xe49f6571
+    member_id: 0x202d9055
+    member_id: 0x1173939d
+    member_id: 0xdccb64ac
+    member_id: 0x1619739e
+    member_id: 0xe531626b
+    member_id: 0x671dc45f
+    member_id: 0x327a5eed
+    member_id: 0x372f6ae9
+    member_id: 0x5ceeec17
+    member_id: 0xb3b45209
+    member_id: 0x2064b31e
+    member_id: 0x63fb0e8e
+    member_id: 0x84e83fe7
+    member_id: 0xbedde9a2
+    member_id: 0x723dee2d
+    member_id: 0x8935554d
+    member_id: 0xff770e06
+    member_id: 0x4ddbf650
+    member_id: 0xb7653122
+    member_id: 0x415177a2
+    member_id: 0x3ebe7eb6
+    member_id: 0x0b67960e
+    member_id: 0x71b830b2
+    member_id: 0x94aefae8
+    member_id: 0x420ec279
+    member_id: 0x1d18f5cb
+    member_id: 0x6e10a38c
+    member_id: 0xdd499a75
+    member_id: 0x72db081c
+    member_id: 0x19761760
+    member_id: 0xf04d7467
+    member_id: 0x5e2b8157
+    member_id: 0x7de43299
+    member_id: 0x2d5bf2a1
+    member_id: 0x2d0819a8
+    member_id: 0x63760f99
+    member_id: 0xac894d81
+    member_id: 0xe0f63ef4
+  }
+}
+struct_union {
+  id: 0x05ebf2f3
+  kind: STRUCT
+  name: "user_datum"
+  definition {
+    bytesize: 96
+    member_id: 0xa0c154ef
+    member_id: 0x41a916e7
+    member_id: 0x39f20f43
+    member_id: 0x0e5c15b9
+    member_id: 0x5898f7bd
+  }
+}
+struct_union {
+  id: 0xd19129ce
+  kind: STRUCT
+  name: "user_fpsimd_state"
+  definition {
+    bytesize: 528
+    member_id: 0x9ff45f4a
+    member_id: 0x019e9603
+    member_id: 0x13eb8d7b
+    member_id: 0x5e255be6
+  }
+}
+struct_union {
+  id: 0x14ee5a71
+  kind: STRUCT
+  name: "user_namespace"
+  definition {
+    bytesize: 656
+    member_id: 0x15653884
+    member_id: 0xe2053ef5
+    member_id: 0x1d4070e7
+    member_id: 0x723ede70
+    member_id: 0x86dde9b2
+    member_id: 0x4a7477d4
+    member_id: 0xd322d799
+    member_id: 0x91129cfb
+    member_id: 0x2d5bff78
+    member_id: 0xbed76ca8
+    member_id: 0x65d65e9f
+    member_id: 0x26de6193
+    member_id: 0x79fd896f
+    member_id: 0xd6e66eec
+    member_id: 0x3da54157
+    member_id: 0x1cbe0e3f
+    member_id: 0x9f301d2b
+    member_id: 0x63afeb77
+    member_id: 0x4ba8c21a
+    member_id: 0x2d081f04
+    member_id: 0x637608ca
+  }
+}
+struct_union {
+  id: 0x107f740f
+  kind: STRUCT
+  name: "user_pt_regs"
+  definition {
+    bytesize: 272
+    member_id: 0x808c0b9c
+    member_id: 0xcea19932
+    member_id: 0xa529ce8d
+    member_id: 0xc437ddac
+  }
+}
+struct_union {
+  id: 0x4a3b70cf
+  kind: STRUCT
+  name: "user_struct"
+  definition {
+    bytesize: 168
+    member_id: 0xb62baaf3
+    member_id: 0x65a4a799
+    member_id: 0x47877fa9
+    member_id: 0xb1dbad41
+    member_id: 0xe2f438ce
+    member_id: 0x15366415
+    member_id: 0xb82d7a23
+    member_id: 0xb3d910e2
+    member_id: 0xd6abc924
+    member_id: 0x2d0817f6
+    member_id: 0x63760fdf
+  }
+}
+struct_union {
+  id: 0xdd1d9e08
+  kind: STRUCT
+  name: "userfaultfd_ctx"
+  definition {
+    bytesize: 128
+    member_id: 0x3162bad8
+    member_id: 0x05e73814
+    member_id: 0xc409a485
+    member_id: 0x1c08be87
+    member_id: 0xe8ffd91c
+    member_id: 0x0524345b
+    member_id: 0x2d2d0282
+    member_id: 0xc55df36f
+    member_id: 0x79d263fe
+    member_id: 0xdd180b6b
+    member_id: 0x3025dd18
+  }
+}
+struct_union {
+  id: 0x244f5434
+  kind: STRUCT
+  name: "utf8data"
+  definition {
+    bytesize: 8
+    member_id: 0x64b30279
+    member_id: 0x9b595499
+  }
+}
+struct_union {
+  id: 0x45396185
+  kind: STRUCT
+  name: "utf8data_table"
+  definition {
+    bytesize: 56
+    member_id: 0x37ff5ef8
+    member_id: 0xced3a623
+    member_id: 0x926cbc83
+    member_id: 0xbd20c3b1
+    member_id: 0x07ca8fa2
+    member_id: 0xb6a91f3e
+    member_id: 0xdf34f92f
+  }
+}
+struct_union {
+  id: 0x0d7e2cae
+  kind: STRUCT
+  name: "util_est"
+  definition {
+    bytesize: 8
+    member_id: 0x8905c22d
+    member_id: 0x08a7a3fa
+  }
+}
+struct_union {
+  id: 0xca785f45
+  kind: STRUCT
+  name: "utp_cmd_rsp"
+  definition {
+    bytesize: 40
+    member_id: 0x38e53c13
+    member_id: 0xd4d771f9
+    member_id: 0xf72b4cee
+    member_id: 0x9fefc1b9
+  }
+}
+struct_union {
+  id: 0x7f518726
+  kind: STRUCT
+  name: "utp_hpb_rsp"
+  definition {
+    bytesize: 40
+    member_id: 0x38e53c13
+    member_id: 0xcb5e6f0b
+    member_id: 0xf72b4cee
+    member_id: 0xa4d83fb9
+    member_id: 0x14c9b565
+    member_id: 0xde4f199a
+    member_id: 0x92750c14
+    member_id: 0x35d5530e
+    member_id: 0xada310fb
+    member_id: 0x35590a19
+    member_id: 0xc4789567
+  }
+}
+struct_union {
+  id: 0x8c057ac5
+  kind: STRUCT
+  name: "utp_task_req_desc"
+  definition {
+    bytesize: 80
+    member_id: 0xef540d40
+    member_id: 0x1d54a5e3
+    member_id: 0xb958498a
+  }
+}
+struct_union {
+  id: 0xb7488359
+  kind: STRUCT
+  name: "utp_transfer_cmd_desc"
+  definition {
+    bytesize: 1024
+    member_id: 0x28bc7764
+    member_id: 0xdce92892
+    member_id: 0x8f39437e
+  }
+}
+struct_union {
+  id: 0x27e463ec
+  kind: STRUCT
+  name: "utp_transfer_req_desc"
+  definition {
+    bytesize: 32
+    member_id: 0xef540d40
+    member_id: 0x245b9008
+    member_id: 0xb3633170
+    member_id: 0x4dbd03ca
+    member_id: 0x1d16ecb8
+    member_id: 0x4c6acfcd
+  }
+}
+struct_union {
+  id: 0x94d22c44
+  kind: STRUCT
+  name: "utp_upiu_cmd"
+  definition {
+    bytesize: 20
+    member_id: 0x469a1cc1
+    member_id: 0x60faf456
+  }
+}
+struct_union {
+  id: 0x6e3da889
+  kind: STRUCT
+  name: "utp_upiu_header"
+  definition {
+    bytesize: 12
+    member_id: 0x30f8ec04
+    member_id: 0x72b85ddb
+    member_id: 0xb27b14f1
+  }
+}
+struct_union {
+  id: 0x6dad7303
+  kind: STRUCT
+  name: "utp_upiu_query"
+  definition {
+    bytesize: 20
+    member_id: 0xfc76ecf4
+    member_id: 0xafb033a8
+    member_id: 0xad8ae1bb
+    member_id: 0x108cfca1
+    member_id: 0xca351458
+    member_id: 0xb518ea7e
+    member_id: 0xa0ea2e88
+    member_id: 0xd4379112
+  }
+}
+struct_union {
+  id: 0x1d2aaf92
+  kind: STRUCT
+  name: "utp_upiu_req"
+  definition {
+    bytesize: 32
+    member_id: 0xef42e319
+    member_id: 0x3ff2757d
+  }
+}
+struct_union {
+  id: 0x33d8b4a6
+  kind: STRUCT
+  name: "utp_upiu_rsp"
+  definition {
+    bytesize: 52
+    member_id: 0xef42e319
+    member_id: 0x32a95def
+  }
+}
+struct_union {
+  id: 0xed5f8e3e
+  kind: STRUCT
+  name: "uts_namespace"
+  definition {
+    bytesize: 432
+    member_id: 0x0d407ca1
+    member_id: 0xde4b75d7
+    member_id: 0x9f301953
+    member_id: 0x9112974a
+  }
+}
+struct_union {
+  id: 0x1ae416b5
+  kind: STRUCT
+  name: "v4l2_area"
+  definition {
+    bytesize: 8
+    member_id: 0x0a6bd4bf
+    member_id: 0x2bfbcfa6
+  }
+}
+struct_union {
+  id: 0xd9b93b7c
+  kind: STRUCT
+  name: "v4l2_async_notifier"
+  definition {
+    bytesize: 96
+    member_id: 0xafb7534d
+    member_id: 0x57c90e36
+    member_id: 0xdd56ca3b
+    member_id: 0x720d8444
+    member_id: 0xc3695bc2
+    member_id: 0x3eee42bc
+    member_id: 0x1d9cb67e
+    member_id: 0x7c00e92b
+  }
+}
+struct_union {
+  id: 0x1c7ac324
+  kind: STRUCT
+  name: "v4l2_async_notifier_operations"
+  definition {
+    bytesize: 32
+    member_id: 0x2bdc7a1e
+    member_id: 0x4a779ad5
+    member_id: 0x5997831e
+    member_id: 0xa4fb57dd
+  }
+}
+struct_union {
+  id: 0xdaf7a1b4
+  kind: STRUCT
+  name: "v4l2_async_subdev"
+  definition {
+    bytesize: 48
+    member_id: 0xba3ec40f
+    member_id: 0xe66e5220
+    member_id: 0x7c00e690
+    member_id: 0xc3695bc2
+  }
+}
+struct_union {
+  id: 0x7912488e
+  kind: STRUCT
+  name: "v4l2_audio"
+  definition {
+    bytesize: 52
+    member_id: 0xaddf2600
+    member_id: 0x0da35400
+    member_id: 0xd9fcc568
+    member_id: 0x877b3ce6
+    member_id: 0xd4368acc
+  }
+}
+struct_union {
+  id: 0x658ec0e0
+  kind: STRUCT
+  name: "v4l2_audioout"
+  definition {
+    bytesize: 52
+    member_id: 0xaddf2600
+    member_id: 0x0da35400
+    member_id: 0xd9fcc568
+    member_id: 0x877b3ce6
+    member_id: 0xd4368acc
+  }
+}
+struct_union {
+  id: 0x12463520
+  kind: STRUCT
+  name: "v4l2_bt_timings"
+  definition {
+    bytesize: 124
+    member_id: 0x0a6bd4bf
+    member_id: 0x2bfbcfa6
+    member_id: 0xc39dd626
+    member_id: 0x93df7858
+    member_id: 0xa5488140
+    member_id: 0xeff08db4
+    member_id: 0x70b87e6e
+    member_id: 0xfdd2cff1
+    member_id: 0x4c98d106
+    member_id: 0x309bc345
+    member_id: 0xa3fdc05a
+    member_id: 0xb4486525
+    member_id: 0x273d2e8a
+    member_id: 0x49daf99c
+    member_id: 0x5172f794
+    member_id: 0x2d8ea1f9
+    member_id: 0x2ecd535e
+    member_id: 0xa03105b3
+    member_id: 0x5f99e632
+    member_id: 0xd450ed4d
+  }
+}
+struct_union {
+  id: 0x31e3a331
+  kind: STRUCT
+  name: "v4l2_bt_timings_cap"
+  definition {
+    bytesize: 104
+    member_id: 0x30d5a793
+    member_id: 0x3aa22fbb
+    member_id: 0x9ce5d9ef
+    member_id: 0x9357033f
+    member_id: 0x72e7acdc
+    member_id: 0x8b8c62e5
+    member_id: 0x5172f68f
+    member_id: 0xa77e2cae
+    member_id: 0xd41613d0
+  }
+}
+struct_union {
+  id: 0x58c140ba
+  kind: STRUCT
+  name: "v4l2_buffer"
+  definition {
+    bytesize: 88
+    member_id: 0xaddf2600
+    member_id: 0x5cb0f6fa
+    member_id: 0x69a2ed69
+    member_id: 0x2d8ea362
+    member_id: 0xc3a77203
+    member_id: 0x5af5ef9b
+    member_id: 0x12fb6935
+    member_id: 0x00684037
+    member_id: 0x1f4a9078
+    member_id: 0x8da8066b
+    member_id: 0xb58b4595
+    member_id: 0x08ceec5f
+    member_id: 0x3a7ed482
+  }
+}
+struct_union {
+  id: 0xb6879087
+  kind: STRUCT
+  name: "v4l2_capability"
+  definition {
+    bytesize: 104
+    member_id: 0xd42e583c
+    member_id: 0x6cd44614
+    member_id: 0x9d901390
+    member_id: 0xa6871cbc
+    member_id: 0xa77e2f36
+    member_id: 0xeda8d556
+    member_id: 0xd448ece7
+  }
+}
+struct_union {
+  id: 0xe316bb39
+  kind: STRUCT
+  name: "v4l2_captureparm"
+  definition {
+    bytesize: 40
+    member_id: 0xd9fcc1b1
+    member_id: 0x1cb44c27
+    member_id: 0x5d7d6301
+    member_id: 0x786e8718
+    member_id: 0x266c4264
+    member_id: 0xd4d6620f
+  }
+}
+struct_union {
+  id: 0xefc0ef04
+  kind: STRUCT
+  name: "v4l2_clip"
+  definition {
+    bytesize: 24
+    member_id: 0x0fa4ebff
+    member_id: 0x11c2691f
+  }
+}
+struct_union {
+  id: 0xfebd7a4e
+  kind: STRUCT
+  name: "v4l2_control"
+  definition {
+    bytesize: 8
+    member_id: 0xccc9022e
+    member_id: 0xa007fb1a
+  }
+}
+struct_union {
+  id: 0x83286178
+  kind: STRUCT
+  name: "v4l2_create_buffers"
+  definition {
+    bytesize: 256
+    member_id: 0xaddf2600
+    member_id: 0x65c37c40
+    member_id: 0x1f4a9529
+    member_id: 0x08af84df
+    member_id: 0xa77e2e04
+    member_id: 0x2d8ea38b
+    member_id: 0xd4fb8d9b
+  }
+}
+struct_union {
+  id: 0xfa078858
+  kind: STRUCT
+  name: "v4l2_ctrl"
+  definition {
+    bytesize: 240
+    member_id: 0x0fa6c6af
+    member_id: 0x392f00ec
+    member_id: 0xf95877f3
+    member_id: 0x9dfd1276
+    member_id: 0x724b21cb
+    member_id: 0x5a295f6f
+    member_id: 0xc8830be2
+    member_id: 0x8db377e7
+    member_id: 0x2f797306
+    member_id: 0x9a46ac52
+    member_id: 0x7c55952c
+    member_id: 0x3fe7857f
+    member_id: 0x6f7f03f2
+    member_id: 0x850a2902
+    member_id: 0x0847d479
+    member_id: 0xc04ca023
+    member_id: 0x966c600d
+    member_id: 0xac46515e
+    member_id: 0xafb429f1
+    member_id: 0x9d444403
+    member_id: 0xcce62dc8
+    member_id: 0x0de57a91
+    member_id: 0x5c1a423c
+    member_id: 0x82dde7fd
+    member_id: 0x3c1ee1f8
+    member_id: 0x128a8292
+    member_id: 0x9b27d70f
+    member_id: 0x30fc95c8
+    member_id: 0xb79bbf0c
+    member_id: 0x553ebda3
+    member_id: 0x828f709d
+    member_id: 0x30d4ec9b
+    member_id: 0x35af4bad
+    member_id: 0x2d5bfbb9
+    member_id: 0x59119a52
+    member_id: 0x0a414acb
+    member_id: 0x09ae2149
+    member_id: 0x4fc2fa54
+    member_id: 0x91091e90
+    member_id: 0xfb6e9c37
+    member_id: 0x3b232807
+    member_id: 0x654b7430
+    member_id: 0x2d081e2f
+  }
+}
+struct_union {
+  id: 0x697a2eb1
+  kind: STRUCT
+  name: "v4l2_ctrl_config"
+  definition {
+    bytesize: 144
+    member_id: 0xafb42e86
+    member_id: 0x9d444bfa
+    member_id: 0xcce62d78
+    member_id: 0x0de57421
+    member_id: 0x5c1a40aa
+    member_id: 0xf9be89bc
+    member_id: 0x97d809c2
+    member_id: 0x6a534268
+    member_id: 0xea1d0dbf
+    member_id: 0xfb6e9669
+    member_id: 0x553eb2fb
+    member_id: 0x30fc9db4
+    member_id: 0x2da18312
+    member_id: 0x4f17ad5b
+    member_id: 0x3d54be0a
+    member_id: 0xf2dee2ba
+    member_id: 0x2f797cff
+    member_id: 0x2d081844
+  }
+}
+struct_union {
+  id: 0x7a8d7f0c
+  kind: STRUCT
+  name: "v4l2_ctrl_fwht_params"
+  definition {
+    bytesize: 40
+    member_id: 0x3a9ba983
+    member_id: 0xa6871e24
+    member_id: 0x0a6bdd3c
+    member_id: 0x2bfbcb5f
+    member_id: 0x2d8ea701
+    member_id: 0x7b9fc355
+    member_id: 0x32032ea7
+    member_id: 0x60d541bd
+    member_id: 0xc2c55a16
+  }
+}
+struct_union {
+  id: 0x2efb60da
+  kind: STRUCT
+  name: "v4l2_ctrl_h264_decode_params"
+  definition {
+    bytesize: 560
+    member_id: 0xd5cd0c36
+    member_id: 0xe16c372b
+    member_id: 0xcfd4c74e
+    member_id: 0x2ab946b8
+    member_id: 0x1145d64c
+    member_id: 0x1d1b69d4
+    member_id: 0x03ca4d80
+    member_id: 0xa0b37a3d
+    member_id: 0x67d3399c
+    member_id: 0x2b907e90
+    member_id: 0xeb4c7e28
+    member_id: 0xfafe2363
+    member_id: 0x7f96cfb9
+    member_id: 0xd485838d
+    member_id: 0x2d8ea71b
+  }
+}
+struct_union {
+  id: 0xb39e3aab
+  kind: STRUCT
+  name: "v4l2_ctrl_h264_pps"
+  definition {
+    bytesize: 12
+    member_id: 0xe9437526
+    member_id: 0x3ba9d2a2
+    member_id: 0x24403104
+    member_id: 0x9abcb01a
+    member_id: 0x3d0e4f00
+    member_id: 0x10e666c7
+    member_id: 0xf746f3e3
+    member_id: 0xc4b4245f
+    member_id: 0x76164601
+    member_id: 0xcae5ab59
+    member_id: 0x2d808382
+  }
+}
+struct_union {
+  id: 0x4c22bed4
+  kind: STRUCT
+  name: "v4l2_ctrl_h264_pred_weights"
+  definition {
+    bytesize: 772
+    member_id: 0xd20636f7
+    member_id: 0x73280af0
+    member_id: 0x8525c1be
+  }
+}
+struct_union {
+  id: 0x3d236973
+  kind: STRUCT
+  name: "v4l2_ctrl_h264_scaling_matrix"
+  definition {
+    bytesize: 480
+    member_id: 0x5e484273
+    member_id: 0x08536198
+  }
+}
+struct_union {
+  id: 0xe2a728bc
+  kind: STRUCT
+  name: "v4l2_ctrl_h264_slice_params"
+  definition {
+    bytesize: 152
+    member_id: 0xd44b0645
+    member_id: 0x4e852d55
+    member_id: 0xf6f9eaf7
+    member_id: 0xb64dd66a
+    member_id: 0x9ff3b23a
+    member_id: 0x57ee04b9
+    member_id: 0x28c17086
+    member_id: 0x5e1be640
+    member_id: 0xfa0e8e2d
+    member_id: 0x171f4543
+    member_id: 0x6a048cae
+    member_id: 0x571d0af3
+    member_id: 0x3ab734c7
+    member_id: 0xd4d04537
+    member_id: 0xab947c96
+    member_id: 0xef5428d3
+    member_id: 0x2d8ea8ca
+  }
+}
+struct_union {
+  id: 0x4d4934b1
+  kind: STRUCT
+  name: "v4l2_ctrl_h264_sps"
+  definition {
+    bytesize: 1048
+    member_id: 0x54f88198
+    member_id: 0x02afc8a1
+    member_id: 0xbe1f93d3
+    member_id: 0x3ba9df25
+    member_id: 0xb61cc43e
+    member_id: 0x555ed01f
+    member_id: 0xd3a17efa
+    member_id: 0xec9d9993
+    member_id: 0x867a7380
+    member_id: 0x282d3ce9
+    member_id: 0x359cc1e4
+    member_id: 0x86b682e1
+    member_id: 0x7ab9fc4d
+    member_id: 0x40f4440f
+    member_id: 0xb15aba88
+    member_id: 0xde8810ce
+    member_id: 0x6c760bb2
+    member_id: 0x2d8ea79f
+  }
+}
+struct_union {
+  id: 0x23f01134
+  kind: STRUCT
+  name: "v4l2_ctrl_handler"
+  definition {
+    bytesize: 224
+    member_id: 0xb74e1877
+    member_id: 0x2dcf9e11
+    member_id: 0xea2e3566
+    member_id: 0x1586844f
+    member_id: 0x6ff46f9c
+    member_id: 0xff0ba4fe
+    member_id: 0x568a338d
+    member_id: 0xe90f3a32
+    member_id: 0xd2f30d9f
+    member_id: 0x7f61f4ee
+    member_id: 0x6fead5f8
+    member_id: 0x9fd286ba
+    member_id: 0x7c2cfc2f
+    member_id: 0xcc9349cc
+    member_id: 0x2d081217
+  }
+}
+struct_union {
+  id: 0x1a1e611d
+  kind: STRUCT
+  name: "v4l2_ctrl_hdr10_cll_info"
+  definition {
+    bytesize: 4
+    member_id: 0xa015bb40
+    member_id: 0xc38869f9
+  }
+}
+struct_union {
+  id: 0xc0241229
+  kind: STRUCT
+  name: "v4l2_ctrl_hdr10_mastering_display"
+  definition {
+    bytesize: 24
+    member_id: 0xecca7136
+    member_id: 0x2e893d03
+    member_id: 0x2b8bd573
+    member_id: 0xf54c3177
+    member_id: 0x6b5bf753
+    member_id: 0x44e38186
+  }
+}
+struct_union {
+  id: 0xcb6d8b1d
+  kind: STRUCT
+  name: "v4l2_ctrl_helper"
+  definition {
+    bytesize: 24
+    member_id: 0xd4c96fa0
+    member_id: 0xce1c5bef
+    member_id: 0x113a0136
+  }
+}
+struct_union {
+  id: 0x51d47b72
+  kind: STRUCT
+  name: "v4l2_ctrl_hevc_decode_params"
+  definition {
+    bytesize: 328
+    member_id: 0x8045b5fe
+    member_id: 0x9f90eb44
+    member_id: 0xf24e9449
+    member_id: 0x287999e2
+    member_id: 0xc096237f
+    member_id: 0x31586767
+    member_id: 0xd21921dc
+    member_id: 0xe6fb48ac
+    member_id: 0xccbb0b06
+    member_id: 0x768763dc
+    member_id: 0xd4c31937
+    member_id: 0xd5ccee65
+    member_id: 0x2d85778b
+  }
+}
+struct_union {
+  id: 0x2a211709
+  kind: STRUCT
+  name: "v4l2_ctrl_hevc_pps"
+  definition {
+    bytesize: 64
+    member_id: 0xe9437526
+    member_id: 0x5896be81
+    member_id: 0x9abcb8c5
+    member_id: 0x3d0e445a
+    member_id: 0x015559ae
+    member_id: 0x990d3fd2
+    member_id: 0xde8ae941
+    member_id: 0x9c354b81
+    member_id: 0x16aa27a8
+    member_id: 0x626a468d
+    member_id: 0xbd645b56
+    member_id: 0x9974ea67
+    member_id: 0x7046e533
+    member_id: 0x1c8b23f2
+    member_id: 0xc1145683
+    member_id: 0xd4d041cc
+    member_id: 0x2d85715e
+  }
+}
+struct_union {
+  id: 0x4b86b241
+  kind: STRUCT
+  name: "v4l2_ctrl_hevc_scaling_matrix"
+  definition {
+    bytesize: 1000
+    member_id: 0x5e484273
+    member_id: 0x08536198
+    member_id: 0x5435f425
+    member_id: 0x84c45f18
+    member_id: 0x523f2540
+    member_id: 0x359b9a1e
+  }
+}
+struct_union {
+  id: 0x434b133c
+  kind: STRUCT
+  name: "v4l2_ctrl_hevc_slice_params"
+  definition {
+    bytesize: 280
+    member_id: 0xeaf2eefb
+    member_id: 0xc3c8ed87
+    member_id: 0x1b22c44e
+    member_id: 0x4cd3c235
+    member_id: 0x2766192d
+    member_id: 0xf6f9e2db
+    member_id: 0xb64dde3d
+    member_id: 0x7621ff12
+    member_id: 0x571d0f1c
+    member_id: 0x3ab73736
+    member_id: 0x9beb9103
+    member_id: 0x1f0cc0f4
+    member_id: 0x28c171cc
+    member_id: 0x4e779cfa
+    member_id: 0x4ee6a655
+    member_id: 0xe2e45a27
+    member_id: 0x34f92049
+    member_id: 0x652db7dc
+    member_id: 0x6a04877b
+    member_id: 0xe9ee8942
+    member_id: 0x3bcb584d
+    member_id: 0x8f8b2011
+    member_id: 0xfcf71622
+    member_id: 0x1e061b2f
+    member_id: 0x5f438f29
+    member_id: 0x9f90ef0d
+    member_id: 0xf24e93bd
+    member_id: 0x42b6cb90
+    member_id: 0xcbaae424
+    member_id: 0x2d8573b6
+  }
+}
+struct_union {
+  id: 0x8bd5312d
+  kind: STRUCT
+  name: "v4l2_ctrl_hevc_sps"
+  definition {
+    bytesize: 40
+    member_id: 0xf98fda20
+    member_id: 0x3ba9d2a2
+    member_id: 0x716e3334
+    member_id: 0x4370f908
+    member_id: 0x555ede8c
+    member_id: 0xd3a17336
+    member_id: 0x282d3479
+    member_id: 0x3139536f
+    member_id: 0xd371d62d
+    member_id: 0x03388737
+    member_id: 0x141ae939
+    member_id: 0xa0fdc6e2
+    member_id: 0x627e417b
+    member_id: 0xc0c6b7b5
+    member_id: 0xd4251a67
+    member_id: 0x1c77a9bb
+    member_id: 0x56a524f5
+    member_id: 0xda74c805
+    member_id: 0x07f28fd9
+    member_id: 0x791dc692
+    member_id: 0xea992807
+    member_id: 0x7d420eb7
+    member_id: 0xb61cc1cc
+    member_id: 0x1c225574
+    member_id: 0xd4eef0a8
+    member_id: 0x2d857682
+  }
+}
+struct_union {
+  id: 0x0d6e6f2b
+  kind: STRUCT
+  name: "v4l2_ctrl_mpeg2_picture"
+  definition {
+    bytesize: 32
+    member_id: 0x3a9ba983
+    member_id: 0x08e5fd11
+    member_id: 0x2d8ea323
+    member_id: 0x7951306b
+    member_id: 0xda2bf90d
+    member_id: 0x92f43c11
+    member_id: 0x4dfec8dd
+    member_id: 0xd4a6a256
+  }
+}
+struct_union {
+  id: 0x5dffc859
+  kind: STRUCT
+  name: "v4l2_ctrl_mpeg2_quantisation"
+  definition {
+    bytesize: 256
+    member_id: 0xc87ec328
+    member_id: 0x79b71421
+    member_id: 0xf1a35880
+    member_id: 0x67de2239
+  }
+}
+struct_union {
+  id: 0xab79b10b
+  kind: STRUCT
+  name: "v4l2_ctrl_mpeg2_sequence"
+  definition {
+    bytesize: 12
+    member_id: 0xe41e57a7
+    member_id: 0xef26e14a
+    member_id: 0xf6f15b5e
+    member_id: 0x9572b52d
+    member_id: 0x6be1b617
+    member_id: 0x2ddb6c62
+  }
+}
+struct_union {
+  id: 0x2ba676fa
+  kind: STRUCT
+  name: "v4l2_ctrl_ops"
+  definition {
+    bytesize: 32
+    member_id: 0x6005f59a
+    member_id: 0x80920d33
+    member_id: 0x75e99e43
+    member_id: 0x2d081dfb
+  }
+}
+struct_union {
+  id: 0x3545954a
+  kind: UNION
+  name: "v4l2_ctrl_ptr"
+  definition {
+    bytesize: 8
+    member_id: 0x3cafff2b
+    member_id: 0x569d4082
+    member_id: 0x5abec441
+    member_id: 0x5fce0bc2
+    member_id: 0xb386f959
+    member_id: 0x8eac1d28
+    member_id: 0xcf05862d
+    member_id: 0xff3673ae
+    member_id: 0xfba5793f
+    member_id: 0x1a3fe3b0
+    member_id: 0x3ed9d615
+    member_id: 0xaab84514
+    member_id: 0x724954ba
+    member_id: 0xec2ca7d7
+    member_id: 0x13aaf227
+    member_id: 0x8dc726e7
+    member_id: 0x9a0156fb
+    member_id: 0x247b0c0b
+    member_id: 0xd1f48706
+    member_id: 0x4de323c8
+    member_id: 0x0749911a
+    member_id: 0x45c645a7
+    member_id: 0xbd23d9ab
+    member_id: 0x37f96bb4
+    member_id: 0xb065acb9
+    member_id: 0xa6a9f3e1
+    member_id: 0xbb05d25c
+    member_id: 0x2d081532
+    member_id: 0x637609a2
+  }
+}
+struct_union {
+  id: 0x27a71563
+  kind: STRUCT
+  name: "v4l2_ctrl_ref"
+  definition {
+    bytesize: 72
+    member_id: 0x0fa6c6af
+    member_id: 0x11f070e1
+    member_id: 0x69ba12aa
+    member_id: 0x48bac8e6
+    member_id: 0xaa4cc195
+    member_id: 0x667936b6
+    member_id: 0xccf61d2f
+    member_id: 0x82918afd
+    member_id: 0x0bb1b59b
+    member_id: 0x3fc3c416
+    member_id: 0xcbf4c251
+    member_id: 0x2d081e2a
+  }
+}
+struct_union {
+  id: 0x5fbdc8d9
+  kind: STRUCT
+  name: "v4l2_ctrl_type_ops"
+  definition {
+    bytesize: 40
+    member_id: 0xf6e89639
+    member_id: 0x1ae79ef6
+    member_id: 0xc04c8cc3
+    member_id: 0x2a122629
+    member_id: 0x2d081599
+  }
+}
+struct_union {
+  id: 0xd1a5a85f
+  kind: STRUCT
+  name: "v4l2_ctrl_vp8_frame"
+  definition {
+    bytesize: 1232
+    member_id: 0xfa8d93d0
+    member_id: 0xd1f38063
+    member_id: 0xc083fbc2
+    member_id: 0xec780fc8
+    member_id: 0x0fc968c6
+    member_id: 0x0a65f562
+    member_id: 0x2bf5e16d
+    member_id: 0xf048d88c
+    member_id: 0x09f00e2d
+    member_id: 0xa6d2d29c
+    member_id: 0x11d92d0d
+    member_id: 0x4a873bbe
+    member_id: 0x6da25d21
+    member_id: 0x90c82802
+    member_id: 0xadf00f99
+    member_id: 0xeb7c92de
+    member_id: 0x804b0c9d
+    member_id: 0x50d8a1f7
+    member_id: 0xed9c5b0c
+    member_id: 0x827a5cb3
+    member_id: 0x0d5dbbff
+    member_id: 0x2d857dc8
+  }
+}
+struct_union {
+  id: 0x9734ad0b
+  kind: STRUCT
+  name: "v4l2_ctrl_vp9_compressed_hdr"
+  definition {
+    bytesize: 2040
+    member_id: 0x5c0c16d9
+    member_id: 0xdfbffedf
+    member_id: 0x562b2b94
+    member_id: 0x488e77bd
+    member_id: 0x3053ec6d
+    member_id: 0x629240af
+    member_id: 0xed328438
+    member_id: 0x8e3249ab
+    member_id: 0x46088d07
+    member_id: 0x08a5d3bf
+    member_id: 0x219b6ad6
+    member_id: 0x4abe7b9a
+    member_id: 0xed136dde
+    member_id: 0xe735ca23
+    member_id: 0xd92f3da1
+    member_id: 0x6d4ebb06
+  }
+}
+struct_union {
+  id: 0x57f5c250
+  kind: STRUCT
+  name: "v4l2_ctrl_vp9_frame"
+  definition {
+    bytesize: 168
+    member_id: 0xd10df423
+    member_id: 0xc03264fa
+    member_id: 0x693b3fc2
+    member_id: 0x2d8ea047
+    member_id: 0xfb567eb3
+    member_id: 0x4ecfbc08
+    member_id: 0x81b469b9
+    member_id: 0x1009c5dc
+    member_id: 0xeae87782
+    member_id: 0x95bfd0a9
+    member_id: 0xed9c508d
+    member_id: 0x827a5dfa
+    member_id: 0x0d5db932
+    member_id: 0xf88c23b6
+    member_id: 0x158b8e39
+    member_id: 0xf3bb94f5
+    member_id: 0xa1219f9e
+    member_id: 0x40d0f254
+    member_id: 0xfa2eae34
+    member_id: 0xa9a2af67
+    member_id: 0x0f2733de
+    member_id: 0x0e5e4cec
+    member_id: 0xd427956a
+  }
+}
+struct_union {
+  id: 0x0a26d4f5
+  kind: STRUCT
+  name: "v4l2_decode_vbi_line"
+  definition {
+    bytesize: 24
+    member_id: 0x7855a324
+    member_id: 0xa6b18d40
+    member_id: 0xddf3bfe7
+    member_id: 0x5c9fd0b5
+  }
+}
+struct_union {
+  id: 0x74b123c5
+  kind: STRUCT
+  name: "v4l2_decoder_cmd"
+  definition {
+    bytesize: 72
+    member_id: 0x1af6f030
+    member_id: 0x2d8ea7da
+    member_id: 0x30e851a7
+  }
+}
+struct_union {
+  id: 0x377c8ecf
+  kind: STRUCT
+  name: "v4l2_device"
+  definition {
+    bytesize: 120
+    member_id: 0xce3bbab3
+    member_id: 0xbb1af530
+    member_id: 0xc5006575
+    member_id: 0x2d1fec2e
+    member_id: 0x0d5ccfce
+    member_id: 0x56f8e261
+    member_id: 0x823928c2
+    member_id: 0xa9eaa0db
+    member_id: 0xce7038e7
+    member_id: 0xae963ae1
+  }
+}
+struct_union {
+  id: 0xfda3dc09
+  kind: STRUCT
+  name: "v4l2_dv_timings"
+  definition {
+    bytesize: 132
+    member_id: 0x5cb0fbc1
+    member_id: 0x332df434
+  }
+}
+struct_union {
+  id: 0x6594ecd4
+  kind: STRUCT
+  name: "v4l2_dv_timings_cap"
+  definition {
+    bytesize: 144
+    member_id: 0x5cb0fbc1
+    member_id: 0x6b32a238
+    member_id: 0xd4368a74
+    member_id: 0x33293591
+  }
+}
+struct_union {
+  id: 0x66ce5be5
+  kind: STRUCT
+  name: "v4l2_edid"
+  definition {
+    bytesize: 40
+    member_id: 0x6b32af03
+    member_id: 0x534a5663
+    member_id: 0x4f7d76df
+    member_id: 0xd4b3d278
+    member_id: 0x31c31f3f
+  }
+}
+struct_union {
+  id: 0x34996851
+  kind: STRUCT
+  name: "v4l2_enc_idx"
+  definition {
+    bytesize: 2072
+    member_id: 0xbe9b777a
+    member_id: 0x81589b00
+    member_id: 0xd4d66e27
+    member_id: 0x4d51f42d
+  }
+}
+struct_union {
+  id: 0xd87f78a5
+  kind: STRUCT
+  name: "v4l2_enc_idx_entry"
+  definition {
+    bytesize: 32
+    member_id: 0x9bf12eb3
+    member_id: 0x075d9937
+    member_id: 0xb58b4525
+    member_id: 0x2d8ea701
+    member_id: 0xd436865c
+  }
+}
+struct_union {
+  id: 0x201aebe0
+  kind: STRUCT
+  name: "v4l2_encoder_cmd"
+  definition {
+    bytesize: 40
+    member_id: 0x1af6f030
+    member_id: 0x2d8ea7da
+    member_id: 0x36e6413b
+  }
+}
+struct_union {
+  id: 0xf7dec1ea
+  kind: STRUCT
+  name: "v4l2_enum_dv_timings"
+  definition {
+    bytesize: 148
+    member_id: 0xaddf2600
+    member_id: 0x6b32a238
+    member_id: 0xd4368a74
+    member_id: 0x1fa42388
+  }
+}
+struct_union {
+  id: 0x0bababb1
+  kind: STRUCT
+  name: "v4l2_event"
+  definition {
+    bytesize: 136
+    member_id: 0x5cb0fbc1
+    member_id: 0xec25b730
+    member_id: 0xf9296367
+    member_id: 0x006847b2
+    member_id: 0x5a7d545d
+    member_id: 0xccc90a80
+    member_id: 0xd4be163a
+  }
+}
+struct_union {
+  id: 0x8e6fc5b1
+  kind: STRUCT
+  name: "v4l2_event_ctrl"
+  definition {
+    bytesize: 40
+    member_id: 0xcbb3d59b
+    member_id: 0x5cb0f6fa
+    member_id: 0x3c7d4866
+    member_id: 0x2d8ea323
+    member_id: 0x82fc47c7
+    member_id: 0x3c3f4fff
+    member_id: 0x6acecfed
+    member_id: 0x12ab2deb
+  }
+}
+struct_union {
+  id: 0x52efb991
+  kind: STRUCT
+  name: "v4l2_event_frame_sync"
+  definition {
+    bytesize: 4
+    member_id: 0x65fefee7
+  }
+}
+struct_union {
+  id: 0x5c965122
+  kind: STRUCT
+  name: "v4l2_event_motion_det"
+  definition {
+    bytesize: 12
+    member_id: 0x2d8eaae1
+    member_id: 0x65fef3dc
+    member_id: 0x7d12e697
+  }
+}
+struct_union {
+  id: 0x7d057964
+  kind: STRUCT
+  name: "v4l2_event_src_change"
+  definition {
+    bytesize: 4
+    member_id: 0xcbb3d59b
+  }
+}
+struct_union {
+  id: 0xe70205c6
+  kind: STRUCT
+  name: "v4l2_event_subscription"
+  definition {
+    bytesize: 32
+    member_id: 0x5cb0fbc1
+    member_id: 0xccc90f15
+    member_id: 0x2d8eae00
+    member_id: 0xd4b3d278
+  }
+}
+struct_union {
+  id: 0x41dc2151
+  kind: STRUCT
+  name: "v4l2_event_vsync"
+  definition {
+    bytesize: 1
+    member_id: 0xc3f2b2c4
+  }
+}
+struct_union {
+  id: 0xe6890363
+  kind: STRUCT
+  name: "v4l2_exportbuffer"
+  definition {
+    bytesize: 64
+    member_id: 0x5cb0fbc1
+    member_id: 0xaddf2b3b
+    member_id: 0xe0021076
+    member_id: 0x2d8ea362
+    member_id: 0x7f1dbb41
+    member_id: 0xd492d7d2
+  }
+}
+struct_union {
+  id: 0xad463304
+  kind: STRUCT
+  name: "v4l2_ext_control"
+  definition {
+    bytesize: 20
+    member_id: 0xccc9022e
+    member_id: 0xd9983ff6
+    member_id: 0x08a484ba
+    member_id: 0x3c7d48fe
+  }
+}
+struct_union {
+  id: 0x3e9f4b6c
+  kind: STRUCT
+  name: "v4l2_ext_controls"
+  definition {
+    bytesize: 32
+    member_id: 0x3fc4fd06
+    member_id: 0x65c37c40
+    member_id: 0x41a66438
+    member_id: 0xc06b14f2
+    member_id: 0xd4efe7f1
+    member_id: 0x47bde5a6
+  }
+}
+struct_union {
+  id: 0xec7ec9b2
+  kind: STRUCT
+  name: "v4l2_fh"
+  definition {
+    bytesize: 160
+    member_id: 0x7c00ef52
+    member_id: 0xebf1169b
+    member_id: 0x82392672
+    member_id: 0xa97d0900
+    member_id: 0x202d9055
+    member_id: 0x40fe2d51
+    member_id: 0xd3eec4ab
+    member_id: 0xe3c85a25
+    member_id: 0xb3731758
+    member_id: 0x004763ff
+    member_id: 0xb254a7d1
+  }
+}
+struct_union {
+  id: 0xc7931c84
+  kind: STRUCT
+  name: "v4l2_file_operations"
+  definition {
+    bytesize: 88
+    member_id: 0x4a965250
+    member_id: 0x48537241
+    member_id: 0x340ece87
+    member_id: 0x5e16b860
+    member_id: 0xd4534a22
+    member_id: 0xd3611639
+    member_id: 0x4284601c
+    member_id: 0x87ff1c74
+    member_id: 0xad98f47a
+    member_id: 0xaeb4854e
+    member_id: 0x2d08134b
+  }
+}
+struct_union {
+  id: 0x65b569e7
+  kind: STRUCT
+  name: "v4l2_fmtdesc"
+  definition {
+    bytesize: 64
+    member_id: 0xaddf2600
+    member_id: 0x5cb0f6fa
+    member_id: 0x2d8eae00
+    member_id: 0x3102d948
+    member_id: 0xde4c0a8f
+    member_id: 0x4197a5a3
+    member_id: 0xd448e040
+  }
+}
+struct_union {
+  id: 0xf8deb354
+  kind: STRUCT
+  name: "v4l2_format"
+  definition {
+    bytesize: 208
+    member_id: 0x5cb0fbc1
+    member_id: 0x69aa4dd1
+  }
+}
+struct_union {
+  id: 0xa6dbf5bd
+  kind: STRUCT
+  name: "v4l2_format_info"
+  definition {
+    bytesize: 24
+    member_id: 0x089e5b85
+    member_id: 0x72c603fa
+    member_id: 0xf7ca965f
+    member_id: 0xdeb1d105
+    member_id: 0x890fca64
+    member_id: 0xc6956a9e
+    member_id: 0xef1798e1
+    member_id: 0x2c0d8592
+    member_id: 0xecca238a
+  }
+}
+struct_union {
+  id: 0xaedb15fc
+  kind: STRUCT
+  name: "v4l2_fract"
+  definition {
+    bytesize: 8
+    member_id: 0x9654671b
+    member_id: 0x87b01a1d
+  }
+}
+struct_union {
+  id: 0x5fcc176b
+  kind: STRUCT
+  name: "v4l2_framebuffer"
+  definition {
+    bytesize: 48
+    member_id: 0xd9fcc1b1
+    member_id: 0x2d8ea7da
+    member_id: 0x85c2570f
+    member_id: 0x69fb8589
+  }
+}
+struct_union {
+  id: 0x7c6201b4
+  kind: STRUCT
+  name: "v4l2_frequency"
+  definition {
+    bytesize: 44
+    member_id: 0x3203cdaa
+    member_id: 0x5cb0f6fa
+    member_id: 0xe5f10f6d
+    member_id: 0xd4be10de
+  }
+}
+struct_union {
+  id: 0xe11370cc
+  kind: STRUCT
+  name: "v4l2_frequency_band"
+  definition {
+    bytesize: 64
+    member_id: 0x3203cdaa
+    member_id: 0x5cb0f6fa
+    member_id: 0xaddf22e1
+    member_id: 0xd9fcc832
+    member_id: 0xd8b7022a
+    member_id: 0xc3f410bb
+    member_id: 0x2940fa05
+    member_id: 0xd4f1177e
+  }
+}
+struct_union {
+  id: 0x6b627e92
+  kind: STRUCT
+  name: "v4l2_frmival_stepwise"
+  definition {
+    bytesize: 24
+    member_id: 0xf93e5aff
+    member_id: 0x9758d835
+    member_id: 0x6a6fb4fb
+  }
+}
+struct_union {
+  id: 0x16d090d3
+  kind: STRUCT
+  name: "v4l2_frmivalenum"
+  definition {
+    bytesize: 52
+    member_id: 0xaddf2600
+    member_id: 0xba56a00f
+    member_id: 0x0a6bd05e
+    member_id: 0x2bfbcb1e
+    member_id: 0x5cb0f203
+    member_id: 0x3eb58aae
+    member_id: 0xd4368acc
+  }
+}
+struct_union {
+  id: 0xedcc276b
+  kind: STRUCT
+  name: "v4l2_frmsize_discrete"
+  definition {
+    bytesize: 8
+    member_id: 0x0a6bd4bf
+    member_id: 0x2bfbcfa6
+  }
+}
+struct_union {
+  id: 0x93f045f1
+  kind: STRUCT
+  name: "v4l2_frmsize_stepwise"
+  definition {
+    bytesize: 24
+    member_id: 0x30d5a793
+    member_id: 0x3aa22fbb
+    member_id: 0x03504f54
+    member_id: 0x9ce5d48d
+    member_id: 0x9357037e
+    member_id: 0xe49eb740
+  }
+}
+struct_union {
+  id: 0x7a3af44f
+  kind: STRUCT
+  name: "v4l2_frmsizeenum"
+  definition {
+    bytesize: 44
+    member_id: 0xaddf2600
+    member_id: 0xba56a00f
+    member_id: 0x5cb0ff20
+    member_id: 0x3eb1b037
+    member_id: 0xd4368a4c
+  }
+}
+struct_union {
+  id: 0xc50f0744
+  kind: STRUCT
+  name: "v4l2_fwnode_device_properties"
+  definition {
+    bytesize: 8
+    member_id: 0xf49dde6b
+    member_id: 0x465224ed
+  }
+}
+struct_union {
+  id: 0xccd4dc1a
+  kind: STRUCT
+  name: "v4l2_h264_dpb_entry"
+  definition {
+    bytesize: 32
+    member_id: 0x9d9d3bba
+    member_id: 0xc3ea8f56
+    member_id: 0xcfd4c7b2
+    member_id: 0x78e0762d
+    member_id: 0xd4a6ad9c
+    member_id: 0x2ab94317
+    member_id: 0x1145d5cd
+    member_id: 0x2d8ea9c5
+  }
+}
+struct_union {
+  id: 0xce5087f5
+  kind: STRUCT
+  name: "v4l2_h264_reference"
+  definition {
+    bytesize: 2
+    member_id: 0x78e07ae0
+    member_id: 0xad8ae4e3
+  }
+}
+struct_union {
+  id: 0xf9410dda
+  kind: STRUCT
+  name: "v4l2_h264_weight_factors"
+  definition {
+    bytesize: 384
+    member_id: 0xef85e86d
+    member_id: 0x4535d96e
+    member_id: 0x1aa8bace
+    member_id: 0x0d86c143
+  }
+}
+struct_union {
+  id: 0xcb71f1c0
+  kind: STRUCT
+  name: "v4l2_hevc_dpb_entry"
+  definition {
+    bytesize: 16
+    member_id: 0x5a0938be
+    member_id: 0x2ddb6705
+    member_id: 0xf94f688e
+    member_id: 0xd48baba6
+    member_id: 0x8045bc7d
+  }
+}
+struct_union {
+  id: 0x6423b0d9
+  kind: STRUCT
+  name: "v4l2_hevc_pred_weight_table"
+  definition {
+    bytesize: 194
+    member_id: 0x6234def3
+    member_id: 0xe6e8cf2b
+    member_id: 0xa11966ff
+    member_id: 0xc7a255c7
+    member_id: 0x20f4728b
+    member_id: 0xa4a84cf9
+    member_id: 0x615881dd
+    member_id: 0x89639c56
+    member_id: 0xd25dd8ea
+    member_id: 0x837b8373
+  }
+}
+struct_union {
+  id: 0xdccf2d8f
+  kind: STRUCT
+  name: "v4l2_hw_freq_seek"
+  definition {
+    bytesize: 48
+    member_id: 0x3203cdaa
+    member_id: 0x5cb0f6fa
+    member_id: 0x5e17f262
+    member_id: 0x48aef34d
+    member_id: 0xcbeff206
+    member_id: 0xd8b70608
+    member_id: 0xc3f41592
+    member_id: 0xd4b3d8df
+  }
+}
+struct_union {
+  id: 0x796e076d
+  kind: STRUCT
+  name: "v4l2_input"
+  definition {
+    bytesize: 80
+    member_id: 0xaddf2600
+    member_id: 0x0da35400
+    member_id: 0x5cb0ff18
+    member_id: 0x62ee79f4
+    member_id: 0x3203c9f3
+    member_id: 0xa1a7f216
+    member_id: 0x20810e4c
+    member_id: 0xa77e29c7
+    member_id: 0xd448e938
+  }
+}
+struct_union {
+  id: 0x44876a34
+  kind: STRUCT
+  name: "v4l2_ioctl_ops"
+  definition {
+    bytesize: 952
+    member_id: 0x5de47b90
+    member_id: 0xf91a95af
+    member_id: 0xa52b74ae
+    member_id: 0x4bda91a8
+    member_id: 0xcc4843c9
+    member_id: 0xaa75cff2
+    member_id: 0x9f3196b6
+    member_id: 0x31516e14
+    member_id: 0xb7f94c1c
+    member_id: 0xa1d51754
+    member_id: 0x39cd0966
+    member_id: 0x6ccf5740
+    member_id: 0xfd7675fb
+    member_id: 0x9454a378
+    member_id: 0x4b0834b2
+    member_id: 0x969ae6ea
+    member_id: 0xf2544e62
+    member_id: 0x51c05ca6
+    member_id: 0xaa03284a
+    member_id: 0x370ea501
+    member_id: 0x59a6fb4f
+    member_id: 0xb4c31e36
+    member_id: 0xfd801ebc
+    member_id: 0xa1199bfd
+    member_id: 0xf0b2aa5f
+    member_id: 0xd72a878a
+    member_id: 0xce2b3cc2
+    member_id: 0x0b27bc98
+    member_id: 0x9007fa62
+    member_id: 0xddb8dafd
+    member_id: 0xd0b9f55e
+    member_id: 0x3f75a6a5
+    member_id: 0x22f0c321
+    member_id: 0x23de4cfe
+    member_id: 0x051b7cd2
+    member_id: 0x6fb82b21
+    member_id: 0xe2e196c2
+    member_id: 0xb4297b4e
+    member_id: 0xd53e222e
+    member_id: 0x63b82bf9
+    member_id: 0x73f153d2
+    member_id: 0x3523cea1
+    member_id: 0x5d24c0a1
+    member_id: 0x2214767f
+    member_id: 0x19446128
+    member_id: 0x13f8a84c
+    member_id: 0x868983ba
+    member_id: 0x0632acb6
+    member_id: 0x42668b36
+    member_id: 0x791b8e0b
+    member_id: 0xca155833
+    member_id: 0xeb4d4a57
+    member_id: 0xfdf5b9b3
+    member_id: 0xa27fb559
+    member_id: 0x8790a7dd
+    member_id: 0xb5ba2603
+    member_id: 0x75a1c2be
+    member_id: 0x7176e130
+    member_id: 0x0c4cf59b
+    member_id: 0x24359537
+    member_id: 0x1744f936
+    member_id: 0xe04da70e
+    member_id: 0xab31c8b9
+    member_id: 0x66d5c953
+    member_id: 0x4ebb3391
+    member_id: 0x21610571
+    member_id: 0xd4a1c386
+    member_id: 0xc22562af
+    member_id: 0x2ea84b30
+    member_id: 0x03ceb473
+    member_id: 0x2a4fd485
+    member_id: 0xe58ca5e3
+    member_id: 0xdd907d66
+    member_id: 0xbe9a4edb
+    member_id: 0x4e86631f
+    member_id: 0xeab1e892
+    member_id: 0x531f8410
+    member_id: 0xd78cac2c
+    member_id: 0x12637e92
+    member_id: 0x48732eff
+    member_id: 0x7dba3a99
+    member_id: 0x052f00fd
+    member_id: 0xa696d0cf
+    member_id: 0x4f3a7dbe
+    member_id: 0x547a0997
+    member_id: 0xb54d78ab
+    member_id: 0x6484eb9c
+    member_id: 0x337689c4
+    member_id: 0xa145c7f3
+    member_id: 0xddd47044
+    member_id: 0x700a5b0c
+    member_id: 0x29ef13c5
+    member_id: 0x6c09af1c
+    member_id: 0xf97db5c6
+    member_id: 0x929f3628
+    member_id: 0xf3ceb1cd
+    member_id: 0xdb32eee1
+    member_id: 0x9aff527b
+    member_id: 0xa0064237
+    member_id: 0x37ef1f21
+    member_id: 0xb72b0902
+    member_id: 0x98d2efb1
+    member_id: 0x8d2e7443
+    member_id: 0x40fc6763
+    member_id: 0xdeddfdf2
+    member_id: 0x529c76c4
+    member_id: 0x5a4c45d6
+    member_id: 0xdefaa473
+    member_id: 0xf1ce4983
+    member_id: 0x092540bf
+    member_id: 0xa0e26544
+    member_id: 0x6ffb57c4
+    member_id: 0xedc36e80
+    member_id: 0xb8b656e0
+    member_id: 0x8afdda9f
+    member_id: 0x3a75e419
+    member_id: 0x0e22510c
+    member_id: 0x18e9d136
+    member_id: 0x045363e1
+  }
+}
+struct_union {
+  id: 0xedd7477a
+  kind: STRUCT
+  name: "v4l2_jpegcompression"
+  definition {
+    bytesize: 140
+    member_id: 0xb84f829e
+    member_id: 0x8750736d
+    member_id: 0x6e76d493
+    member_id: 0x70e5811c
+    member_id: 0xbafda30b
+    member_id: 0xdb523a9f
+    member_id: 0xebc086eb
+  }
+}
+struct_union {
+  id: 0x6f523604
+  kind: STRUCT
+  name: "v4l2_kevent"
+  definition {
+    bytesize: 168
+    member_id: 0x7c00ef52
+    member_id: 0xbc747788
+    member_id: 0x0a444302
+    member_id: 0x9506136b
+  }
+}
+struct_union {
+  id: 0x0b21ebae
+  kind: STRUCT
+  name: "v4l2_m2m_ctx"
+  definition {
+    bytesize: 1888
+    member_id: 0xa4aa3498
+    member_id: 0x5191c7d5
+    member_id: 0x8d9c7f4e
+    member_id: 0xd4502f73
+    member_id: 0xbf0297d0
+    member_id: 0x404ad063
+    member_id: 0xbfcfba97
+    member_id: 0xcb7a3a33
+    member_id: 0x21d1ea91
+    member_id: 0xad01c9cf
+    member_id: 0xc927b25c
+    member_id: 0x3284cdc6
+    member_id: 0x5911975c
+  }
+}
+struct_union {
+  id: 0x0f6013e7
+  kind: STRUCT
+  name: "v4l2_m2m_dev"
+  definition {
+    bytesize: 608
+    member_id: 0x3ba2face
+    member_id: 0xd7300c6f
+    member_id: 0x3fcc657f
+    member_id: 0x5ccf59c6
+    member_id: 0x02ad13b2
+    member_id: 0x975669a8
+    member_id: 0x28d18312
+    member_id: 0x02cbfb9b
+    member_id: 0xbd72f615
+    member_id: 0xcf18f557
+    member_id: 0xca2b6d9f
+    member_id: 0x1457cbeb
+    member_id: 0xe23c0b58
+  }
+}
+struct_union {
+  id: 0x6e373489
+  kind: STRUCT
+  name: "v4l2_m2m_ops"
+  definition {
+    bytesize: 24
+    member_id: 0x8cabe080
+    member_id: 0xbb61bdb7
+    member_id: 0xca07ed31
+  }
+}
+struct_union {
+  id: 0x09b350b9
+  kind: STRUCT
+  name: "v4l2_m2m_queue_ctx"
+  definition {
+    bytesize: 896
+    member_id: 0xe9329abb
+    member_id: 0x4163d7c4
+    member_id: 0x50e91245
+    member_id: 0x409f1b2e
+    member_id: 0xe613256f
+  }
+}
+struct_union {
+  id: 0x74ddc074
+  kind: STRUCT
+  name: "v4l2_mbus_config"
+  definition {
+    bytesize: 28
+    member_id: 0x5c6a826a
+    member_id: 0xdab6d08e
+  }
+}
+struct_union {
+  id: 0xe49bfc8b
+  kind: STRUCT
+  name: "v4l2_mbus_config_mipi_csi1"
+  definition {
+    bytesize: 5
+    member_id: 0xd0e9d82f
+    member_id: 0xb20aab08
+    member_id: 0x87174cb6
+    member_id: 0x35541bc6
+    member_id: 0xdb605eda
+  }
+}
+struct_union {
+  id: 0xe72f0de6
+  kind: STRUCT
+  name: "v4l2_mbus_config_mipi_csi2"
+  definition {
+    bytesize: 24
+    member_id: 0x2d2d0138
+    member_id: 0x79e40a9c
+    member_id: 0xdb605a62
+    member_id: 0x55ff1bee
+    member_id: 0xdcb2d9c7
+  }
+}
+struct_union {
+  id: 0x5cede1dc
+  kind: STRUCT
+  name: "v4l2_mbus_config_parallel"
+  definition {
+    bytesize: 8
+    member_id: 0x2d2d0138
+    member_id: 0xb43c4ca9
+    member_id: 0x9e8ccb80
+  }
+}
+struct_union {
+  id: 0x2cb416a0
+  kind: STRUCT
+  name: "v4l2_mbus_frame_desc"
+  definition {
+    bytesize: 136
+    member_id: 0x5c963569
+    member_id: 0x4dae719d
+    member_id: 0x4ecb2e5a
+  }
+}
+struct_union {
+  id: 0x78284f97
+  kind: STRUCT
+  name: "v4l2_mbus_frame_desc_entry"
+  definition {
+    bytesize: 16
+    member_id: 0x2d603bf3
+    member_id: 0xacac4b41
+    member_id: 0xb5a46e92
+    member_id: 0xdab17a81
+  }
+}
+struct_union {
+  id: 0xc3a2e399
+  kind: STRUCT
+  name: "v4l2_mbus_frame_desc_entry_csi2"
+  definition {
+    bytesize: 2
+    member_id: 0x969abb91
+    member_id: 0x58e808e0
+  }
+}
+struct_union {
+  id: 0x327b4cfa
+  kind: STRUCT
+  name: "v4l2_mbus_framefmt"
+  definition {
+    bytesize: 48
+    member_id: 0x0a6bd4bf
+    member_id: 0x2bfbcfa6
+    member_id: 0x5406ce5a
+    member_id: 0xc3a77242
+    member_id: 0x7b9fc25e
+    member_id: 0x30706b35
+    member_id: 0xc2cb77e7
+    member_id: 0x320d08b5
+    member_id: 0x2d808371
+    member_id: 0xd42e45aa
+  }
+}
+struct_union {
+  id: 0x0f63bc75
+  kind: STRUCT
+  name: "v4l2_meta_format"
+  definition {
+    bytesize: 8
+    member_id: 0x7c7bb469
+    member_id: 0x803be3e4
+  }
+}
+struct_union {
+  id: 0xdf4435ed
+  kind: STRUCT
+  name: "v4l2_modulator"
+  definition {
+    bytesize: 68
+    member_id: 0xaddf2600
+    member_id: 0x0da35400
+    member_id: 0xd9fcc568
+    member_id: 0xd8b70c2f
+    member_id: 0xc3f41902
+    member_id: 0x4d90da75
+    member_id: 0x5cb0f9a1
+    member_id: 0xd448e557
+  }
+}
+struct_union {
+  id: 0xeec4d3d8
+  kind: STRUCT
+  name: "v4l2_output"
+  definition {
+    bytesize: 72
+    member_id: 0xaddf2600
+    member_id: 0x0da35400
+    member_id: 0x5cb0ff18
+    member_id: 0x62ee79f4
+    member_id: 0xc1f98b0b
+    member_id: 0xa1a7f216
+    member_id: 0xa77e2f00
+    member_id: 0xd448e390
+  }
+}
+struct_union {
+  id: 0x89bda23d
+  kind: STRUCT
+  name: "v4l2_outputparm"
+  definition {
+    bytesize: 40
+    member_id: 0xd9fcc1b1
+    member_id: 0xf2064612
+    member_id: 0x5d7d6301
+    member_id: 0x786e8718
+    member_id: 0xdfa15c0f
+    member_id: 0xd4d6620f
+  }
+}
+struct_union {
+  id: 0x9947e93f
+  kind: STRUCT
+  name: "v4l2_pix_format"
+  definition {
+    bytesize: 48
+    member_id: 0x0a6bd4bf
+    member_id: 0x2bfbcfa6
+    member_id: 0xde4c0a37
+    member_id: 0xc3a77242
+    member_id: 0xaf125156
+    member_id: 0xfe1eaf0e
+    member_id: 0x7b9fc355
+    member_id: 0x59ef085f
+    member_id: 0x2d8eaa4a
+    member_id: 0x30708031
+    member_id: 0xc2c55908
+    member_id: 0x320329da
+  }
+}
+struct_union {
+  id: 0x6a31845f
+  kind: STRUCT
+  name: "v4l2_pix_format_mplane"
+  definition {
+    bytesize: 192
+    member_id: 0x0a6bd4bf
+    member_id: 0x2bfbcfa6
+    member_id: 0xde4c0a37
+    member_id: 0xc3a77242
+    member_id: 0x7b9fc25e
+    member_id: 0xea853c39
+    member_id: 0x20040d9e
+    member_id: 0x2ddb659d
+    member_id: 0x3075d67f
+    member_id: 0xc2909a30
+    member_id: 0x3256e3d6
+    member_id: 0xd4279384
+  }
+}
+struct_union {
+  id: 0x70d215cd
+  kind: STRUCT
+  name: "v4l2_plane"
+  definition {
+    bytesize: 64
+    member_id: 0x69a2e988
+    member_id: 0xb58b41dc
+    member_id: 0x8d94b985
+    member_id: 0x97ae0d14
+    member_id: 0xd492d7d2
+  }
+}
+struct_union {
+  id: 0xa811788b
+  kind: STRUCT
+  name: "v4l2_plane_pix_format"
+  definition {
+    bytesize: 20
+    member_id: 0xfe1ea2ee
+    member_id: 0xaf1255af
+    member_id: 0xd4f80918
+  }
+}
+struct_union {
+  id: 0x38b56e39
+  kind: STRUCT
+  name: "v4l2_prio_state"
+  definition {
+    bytesize: 16
+    member_id: 0x6151727c
+  }
+}
+struct_union {
+  id: 0x60595437
+  kind: STRUCT
+  name: "v4l2_priv_tun_config"
+  definition {
+    bytesize: 16
+    member_id: 0x3282c3c6
+    member_id: 0x59119c40
+  }
+}
+struct_union {
+  id: 0x06913c57
+  kind: STRUCT
+  name: "v4l2_query_ext_ctrl"
+  definition {
+    bytesize: 232
+    member_id: 0xccc9022e
+    member_id: 0x5cb0f6fa
+    member_id: 0x0d81b7eb
+    member_id: 0x822e89ea
+    member_id: 0x3ced82ae
+    member_id: 0x6a2c932c
+    member_id: 0x1279e252
+    member_id: 0x2d8ea393
+    member_id: 0x30d3b37c
+    member_id: 0x9b08ff11
+    member_id: 0x82a05363
+    member_id: 0x55357f1a
+    member_id: 0xd40ee8e7
+  }
+}
+struct_union {
+  id: 0x1a25fbdb
+  kind: STRUCT
+  name: "v4l2_queryctrl"
+  definition {
+    bytesize: 68
+    member_id: 0xccc9022e
+    member_id: 0x5cb0f6fa
+    member_id: 0x0da35dda
+    member_id: 0x82fc4de0
+    member_id: 0x3c3f436f
+    member_id: 0x6acecd5b
+    member_id: 0x12ab2f20
+    member_id: 0x2d8ead96
+    member_id: 0xd4368f25
+  }
+}
+struct_union {
+  id: 0x01faddc4
+  kind: STRUCT
+  name: "v4l2_querymenu"
+  definition {
+    bytesize: 44
+    member_id: 0xccc9022e
+    member_id: 0xaddf2b3b
+    member_id: 0x36a51755
+    member_id: 0xd4858502
+  }
+}
+struct_union {
+  id: 0xfc5791f4
+  kind: STRUCT
+  name: "v4l2_rect"
+  definition {
+    bytesize: 16
+    member_id: 0x35f6c240
+    member_id: 0xb6436c34
+    member_id: 0x0a6bd05e
+    member_id: 0x2bfbcb1e
+  }
+}
+struct_union {
+  id: 0x4260db25
+  kind: STRUCT
+  name: "v4l2_requestbuffers"
+  definition {
+    bytesize: 20
+    member_id: 0x65c3717b
+    member_id: 0x5cb0f6fa
+    member_id: 0x1f4a9529
+    member_id: 0xa77e21f4
+    member_id: 0x2ddb6a26
+    member_id: 0xd45d986e
+  }
+}
+struct_union {
+  id: 0xca331095
+  kind: STRUCT
+  name: "v4l2_sdr_format"
+  definition {
+    bytesize: 32
+    member_id: 0xde4c0ed6
+    member_id: 0x803be3e4
+    member_id: 0xd45acdb2
+  }
+}
+struct_union {
+  id: 0x5e6c6d6c
+  kind: STRUCT
+  name: "v4l2_selection"
+  definition {
+    bytesize: 64
+    member_id: 0x5cb0fbc1
+    member_id: 0xb344f263
+    member_id: 0x2d8eae00
+    member_id: 0x3bcd490a
+    member_id: 0xd4f1177e
+  }
+}
+struct_union {
+  id: 0xfde1f5a7
+  kind: STRUCT
+  name: "v4l2_sliced_vbi_cap"
+  definition {
+    bytesize: 116
+    member_id: 0xb0888f56
+    member_id: 0x5f901528
+    member_id: 0x5cb0f4a6
+    member_id: 0xd448e19a
+  }
+}
+struct_union {
+  id: 0xc695b875
+  kind: STRUCT
+  name: "v4l2_sliced_vbi_data"
+  definition {
+    bytesize: 64
+    member_id: 0xccc9022e
+    member_id: 0xc3a776fa
+    member_id: 0xdddc9450
+    member_id: 0xd4858b46
+    member_id: 0xffada67f
+  }
+}
+struct_union {
+  id: 0x92dfa217
+  kind: STRUCT
+  name: "v4l2_sliced_vbi_format"
+  definition {
+    bytesize: 112
+    member_id: 0xb0888f56
+    member_id: 0x5f901528
+    member_id: 0xc4e24ac5
+    member_id: 0xd4368d2f
+  }
+}
+struct_union {
+  id: 0x97ad02f9
+  kind: STRUCT
+  name: "v4l2_streamparm"
+  definition {
+    bytesize: 204
+    member_id: 0x5cb0fbc1
+    member_id: 0x4af10ff0
+  }
+}
+struct_union {
+  id: 0x2d567bb9
+  kind: STRUCT
+  name: "v4l2_subdev"
+  definition {
+    bytesize: 328
+    member_id: 0x449adaa1
+    member_id: 0x7c00e7a1
+    member_id: 0x4a965f26
+    member_id: 0x01b6c681
+    member_id: 0x2da18e5e
+    member_id: 0x57c90813
+    member_id: 0xafb56e5a
+    member_id: 0xf70f37ac
+    member_id: 0x82392c48
+    member_id: 0x0d81b45a
+    member_id: 0x6bc930d2
+    member_id: 0xe08fe547
+    member_id: 0x5b25aa6b
+    member_id: 0x1ea1bb6d
+    member_id: 0xce3bb837
+    member_id: 0x6e4d87dc
+    member_id: 0xec1ec4a0
+    member_id: 0x73e738e5
+    member_id: 0x37cf4af7
+    member_id: 0xec14ff88
+    member_id: 0x03ff2305
+    member_id: 0x46686050
+    member_id: 0x8c1424f8
+  }
+}
+struct_union {
+  id: 0xcaab19b4
+  kind: STRUCT
+  name: "v4l2_subdev_audio_ops"
+  definition {
+    bytesize: 32
+    member_id: 0x352c4964
+    member_id: 0xfbf11a23
+    member_id: 0xc248e9c0
+    member_id: 0x969fe988
+  }
+}
+struct_union {
+  id: 0x1d1109a0
+  kind: STRUCT
+  name: "v4l2_subdev_core_ops"
+  definition {
+    bytesize: 104
+    member_id: 0x300bda87
+    member_id: 0x963e685d
+    member_id: 0x1ac7e9b4
+    member_id: 0x387efce1
+    member_id: 0x62908bb1
+    member_id: 0x0bedb33e
+    member_id: 0x916d7d47
+    member_id: 0x4d475997
+    member_id: 0xd360881a
+    member_id: 0xbfcc3b0a
+    member_id: 0x02d1cd00
+    member_id: 0xdece04a2
+    member_id: 0x3d971f1e
+  }
+}
+struct_union {
+  id: 0x1f686db1
+  kind: STRUCT
+  name: "v4l2_subdev_fh"
+  definition {
+    bytesize: 176
+    member_id: 0xc3ccf4e5
+    member_id: 0x4a96542d
+    member_id: 0x72e19394
+  }
+}
+struct_union {
+  id: 0x5946f795
+  kind: STRUCT
+  name: "v4l2_subdev_format"
+  definition {
+    bytesize: 88
+    member_id: 0x9b1d6725
+    member_id: 0x6b32a238
+    member_id: 0x08652c03
+    member_id: 0xd4be1e2a
+  }
+}
+struct_union {
+  id: 0x079f291a
+  kind: STRUCT
+  name: "v4l2_subdev_frame_interval"
+  definition {
+    bytesize: 48
+    member_id: 0x6b32af03
+    member_id: 0x49696c4d
+    member_id: 0xd4f11dd9
+  }
+}
+struct_union {
+  id: 0x3300e7cb
+  kind: STRUCT
+  name: "v4l2_subdev_frame_interval_enum"
+  definition {
+    bytesize: 64
+    member_id: 0xaddf2600
+    member_id: 0x6b32a238
+    member_id: 0x5406ce5a
+    member_id: 0x0a6bdd3c
+    member_id: 0x2bfbcb5f
+    member_id: 0x49696c96
+    member_id: 0x9b1d6401
+    member_id: 0xd4be19f6
+  }
+}
+struct_union {
+  id: 0x672c433e
+  kind: STRUCT
+  name: "v4l2_subdev_frame_size_enum"
+  definition {
+    bytesize: 64
+    member_id: 0xaddf2600
+    member_id: 0x6b32a238
+    member_id: 0x5406ce5a
+    member_id: 0x30d5ae10
+    member_id: 0x3aa22b42
+    member_id: 0x9ce5d0ee
+    member_id: 0x93570275
+    member_id: 0x9b1d6401
+    member_id: 0xd4be19f6
+  }
+}
+struct_union {
+  id: 0xc3a94ecd
+  kind: STRUCT
+  name: "v4l2_subdev_internal_ops"
+  definition {
+    bytesize: 40
+    member_id: 0x5177bf18
+    member_id: 0x7c187e24
+    member_id: 0xad996916
+    member_id: 0xcd5e1e91
+    member_id: 0xae965847
+  }
+}
+struct_union {
+  id: 0xb037a540
+  kind: STRUCT
+  name: "v4l2_subdev_io_pin_config"
+  definition {
+    bytesize: 8
+    member_id: 0x2da18c75
+    member_id: 0xb8237475
+    member_id: 0xab42dc85
+    member_id: 0xa0210c77
+    member_id: 0xe7e842ca
+  }
+}
+struct_union {
+  id: 0x511a0d69
+  kind: STRUCT
+  name: "v4l2_subdev_ir_ops"
+  definition {
+    bytesize: 48
+    member_id: 0x01edd63e
+    member_id: 0xea7523e6
+    member_id: 0x9c2c4994
+    member_id: 0xdebcf805
+    member_id: 0xf3a33eef
+    member_id: 0x70b69280
+  }
+}
+struct_union {
+  id: 0x1e840f82
+  kind: STRUCT
+  name: "v4l2_subdev_ir_parameters"
+  definition {
+    bytesize: 44
+    member_id: 0x86692e21
+    member_id: 0x87866629
+    member_id: 0x988a74a1
+    member_id: 0xd6a7ee2b
+    member_id: 0x9e984be4
+    member_id: 0x29cbacaa
+    member_id: 0x8e1672a1
+    member_id: 0xe8cd9e66
+    member_id: 0xc1236c92
+    member_id: 0xa7c3689d
+    member_id: 0x0242ee38
+    member_id: 0x5a141c54
+    member_id: 0x06d60bde
+    member_id: 0x07a28f27
+    member_id: 0x7f319b20
+  }
+}
+struct_union {
+  id: 0x35e939a9
+  kind: STRUCT
+  name: "v4l2_subdev_mbus_code_enum"
+  definition {
+    bytesize: 48
+    member_id: 0x6b32af03
+    member_id: 0xaddf2b3b
+    member_id: 0x5406ce5a
+    member_id: 0x9b1d6ea6
+    member_id: 0x2d8ea323
+    member_id: 0xd432e4ad
+  }
+}
+struct_union {
+  id: 0x3fcc61be
+  kind: STRUCT
+  name: "v4l2_subdev_ops"
+  definition {
+    bytesize: 64
+    member_id: 0x3ed59949
+    member_id: 0x32d748a6
+    member_id: 0xe5e12f10
+    member_id: 0x4e598de8
+    member_id: 0x0a061bb7
+    member_id: 0x5def1bf7
+    member_id: 0x4fe905c3
+    member_id: 0x6beede63
+  }
+}
+struct_union {
+  id: 0xb57d2931
+  kind: STRUCT
+  name: "v4l2_subdev_pad_config"
+  definition {
+    bytesize: 80
+    member_id: 0xce5cbdd9
+    member_id: 0x76c7accc
+    member_id: 0x783807ab
+  }
+}
+struct_union {
+  id: 0x7ccea54c
+  kind: STRUCT
+  name: "v4l2_subdev_pad_ops"
+  definition {
+    bytesize: 128
+    member_id: 0xab1ec726
+    member_id: 0xf6178941
+    member_id: 0x63c87cc3
+    member_id: 0x315f6686
+    member_id: 0x7c152cac
+    member_id: 0x41dbd711
+    member_id: 0xcbc2643f
+    member_id: 0xf0ecec7b
+    member_id: 0x869f3332
+    member_id: 0xa8a7c17b
+    member_id: 0x726a3c29
+    member_id: 0x8ef9a4f4
+    member_id: 0x0aff2bb4
+    member_id: 0xe678e3db
+    member_id: 0xd3d03cf4
+    member_id: 0x835465b4
+  }
+}
+struct_union {
+  id: 0x9ec85959
+  kind: STRUCT
+  name: "v4l2_subdev_platform_data"
+  definition {
+    bytesize: 24
+    member_id: 0x8d0e7d7e
+    member_id: 0x6dc81d0c
+    member_id: 0x5b25a8b4
+  }
+}
+struct_union {
+  id: 0x5ce95d77
+  kind: STRUCT
+  name: "v4l2_subdev_selection"
+  definition {
+    bytesize: 64
+    member_id: 0x9b1d6725
+    member_id: 0x6b32a238
+    member_id: 0xb344fbb9
+    member_id: 0x2d8ea362
+    member_id: 0x3bcd494b
+    member_id: 0xd4be19f6
+  }
+}
+struct_union {
+  id: 0xe4f48aa8
+  kind: STRUCT
+  name: "v4l2_subdev_sensor_ops"
+  definition {
+    bytesize: 16
+    member_id: 0xfa7d34b6
+    member_id: 0xa9b6272a
+  }
+}
+struct_union {
+  id: 0x63d4bcbd
+  kind: STRUCT
+  name: "v4l2_subdev_state"
+  definition {
+    bytesize: 64
+    member_id: 0xb74e1877
+    member_id: 0x2dcf9e11
+    member_id: 0xab3b2027
+  }
+}
+struct_union {
+  id: 0xf3b10f9e
+  kind: STRUCT
+  name: "v4l2_subdev_tuner_ops"
+  definition {
+    bytesize: 88
+    member_id: 0xc5e07058
+    member_id: 0xd7cce5b8
+    member_id: 0xf13b57fb
+    member_id: 0x523113ef
+    member_id: 0x70cdee30
+    member_id: 0x40e5831f
+    member_id: 0xfdbef538
+    member_id: 0xb88348e7
+    member_id: 0xad0a67a4
+    member_id: 0xc5ff95d9
+    member_id: 0xca1f6ca7
+  }
+}
+struct_union {
+  id: 0xea80908f
+  kind: STRUCT
+  name: "v4l2_subdev_vbi_ops"
+  definition {
+    bytesize: 56
+    member_id: 0x86c5c02d
+    member_id: 0xf24ecf40
+    member_id: 0x6af4aa8c
+    member_id: 0x00ce7033
+    member_id: 0xfde8df1c
+    member_id: 0x1752173c
+    member_id: 0xce6743a2
+  }
+}
+struct_union {
+  id: 0x3d08d184
+  kind: STRUCT
+  name: "v4l2_subdev_video_ops"
+  definition {
+    bytesize: 160
+    member_id: 0xc248e002
+    member_id: 0xfbc081d1
+    member_id: 0xfbc2503c
+    member_id: 0xe62d9df5
+    member_id: 0xd7393168
+    member_id: 0x76da3c3a
+    member_id: 0xb2749bb6
+    member_id: 0x494fa3dd
+    member_id: 0xe89c0421
+    member_id: 0xcc07ba05
+    member_id: 0x969fe738
+    member_id: 0xb2c4b200
+    member_id: 0x992b5487
+    member_id: 0x2cd2c09e
+    member_id: 0x17b3ec6e
+    member_id: 0x24b0617a
+    member_id: 0xb20e9921
+    member_id: 0xab2a9968
+    member_id: 0x49820eb0
+    member_id: 0xc30b4ab5
+  }
+}
+struct_union {
+  id: 0x897bba23
+  kind: STRUCT
+  name: "v4l2_subscribed_event"
+  definition {
+    bytesize: 80
+    member_id: 0x7c00ef52
+    member_id: 0x5c9fd497
+    member_id: 0xcce6295a
+    member_id: 0x2da184bc
+    member_id: 0x4e2be9d9
+    member_id: 0x0fa6c168
+    member_id: 0xafbb285d
+    member_id: 0x9bab59a9
+    member_id: 0x1fa2bc9a
+    member_id: 0x698e949e
+    member_id: 0x112a56aa
+  }
+}
+struct_union {
+  id: 0xdbbcb810
+  kind: STRUCT
+  name: "v4l2_subscribed_event_ops"
+  definition {
+    bytesize: 32
+    member_id: 0xc71e0d4d
+    member_id: 0x46b333c5
+    member_id: 0x04dbf32d
+    member_id: 0x1bc01e7f
+  }
+}
+struct_union {
+  id: 0x6fc64509
+  kind: STRUCT
+  name: "v4l2_timecode"
+  definition {
+    bytesize: 16
+    member_id: 0x5cb0fbc1
+    member_id: 0x2d8ea7da
+    member_id: 0xa4701467
+    member_id: 0x99905e87
+    member_id: 0x096ecb61
+    member_id: 0x386f84a8
+    member_id: 0xff72c9ba
+  }
+}
+struct_union {
+  id: 0xe6ce7c37
+  kind: STRUCT
+  name: "v4l2_tuner"
+  definition {
+    bytesize: 84
+    member_id: 0xaddf2600
+    member_id: 0x0da35400
+    member_id: 0x5cb0ff18
+    member_id: 0xd9fcc676
+    member_id: 0xd8b70fb1
+    member_id: 0xc3f41cc9
+    member_id: 0x6e477e5d
+    member_id: 0x56e37738
+    member_id: 0x09e75700
+    member_id: 0x9aeabf13
+    member_id: 0xd4d66419
+  }
+}
+struct_union {
+  id: 0x33f4564a
+  kind: STRUCT
+  name: "v4l2_vbi_format"
+  definition {
+    bytesize: 44
+    member_id: 0xf6e5bf1f
+    member_id: 0x9bfaff40
+    member_id: 0xa67ab6c4
+    member_id: 0x9b4da27b
+    member_id: 0x4674796b
+    member_id: 0x657075e2
+    member_id: 0x2d8eaa4a
+    member_id: 0xd4368a4c
+  }
+}
+struct_union {
+  id: 0x79fb914f
+  kind: STRUCT
+  name: "v4l2_vp8_entropy"
+  definition {
+    bytesize: 1104
+    member_id: 0x2553f11e
+    member_id: 0x439f779d
+    member_id: 0x6d2b82d0
+    member_id: 0x0c74d6b1
+    member_id: 0x64d837a8
+  }
+}
+struct_union {
+  id: 0x3195cfe9
+  kind: STRUCT
+  name: "v4l2_vp8_entropy_coder_state"
+  definition {
+    bytesize: 4
+    member_id: 0x0e0f62b4
+    member_id: 0xa0bbb098
+    member_id: 0xdd1aee2e
+    member_id: 0x6455ecea
+  }
+}
+struct_union {
+  id: 0xba05dbf8
+  kind: STRUCT
+  name: "v4l2_vp8_loop_filter"
+  definition {
+    bytesize: 16
+    member_id: 0x3d58cb0e
+    member_id: 0x4c31afa1
+    member_id: 0xbf23c651
+    member_id: 0x860924d9
+    member_id: 0x640e0aed
+    member_id: 0x2d8ea362
+  }
+}
+struct_union {
+  id: 0xb53ba797
+  kind: STRUCT
+  name: "v4l2_vp8_quantization"
+  definition {
+    bytesize: 8
+    member_id: 0x9b19b0fb
+    member_id: 0xdf846721
+    member_id: 0x25476b94
+    member_id: 0x81421250
+    member_id: 0x8f05f139
+    member_id: 0xba94773b
+    member_id: 0x640e02b0
+  }
+}
+struct_union {
+  id: 0xfa5fcd78
+  kind: STRUCT
+  name: "v4l2_vp8_segment"
+  definition {
+    bytesize: 16
+    member_id: 0x4413cb9f
+    member_id: 0x5d8e6bfa
+    member_id: 0x1e1ecce7
+    member_id: 0x6455e50d
+    member_id: 0x2d8ea362
+  }
+}
+struct_union {
+  id: 0x447859a7
+  kind: STRUCT
+  name: "v4l2_vp9_loop_filter"
+  definition {
+    bytesize: 16
+    member_id: 0x67c165c4
+    member_id: 0x0014ce38
+    member_id: 0x86092469
+    member_id: 0x00328324
+    member_id: 0x2ddb6705
+    member_id: 0xd427977d
+  }
+}
+struct_union {
+  id: 0xb1213eb0
+  kind: STRUCT
+  name: "v4l2_vp9_mv_probs"
+  definition {
+    bytesize: 69
+    member_id: 0x452661f9
+    member_id: 0x900f67a7
+    member_id: 0x742a7c0e
+    member_id: 0xfb91ea35
+    member_id: 0xd72ff6c7
+    member_id: 0x241d1940
+    member_id: 0xd6ffcb5b
+    member_id: 0x83a6e820
+    member_id: 0x5b43853c
+  }
+}
+struct_union {
+  id: 0x04adf695
+  kind: STRUCT
+  name: "v4l2_vp9_quantization"
+  definition {
+    bytesize: 8
+    member_id: 0x27e716ec
+    member_id: 0x24ad3b40
+    member_id: 0xd3b9d90a
+    member_id: 0x55b29743
+    member_id: 0xd4c315bc
+  }
+}
+struct_union {
+  id: 0xaf197605
+  kind: STRUCT
+  name: "v4l2_vp9_segmentation"
+  definition {
+    bytesize: 88
+    member_id: 0xbbb2cfc1
+    member_id: 0xaedda563
+    member_id: 0xac3091ae
+    member_id: 0xd9582306
+    member_id: 0x2ddb6196
+    member_id: 0xd4a6a43b
+  }
+}
+struct_union {
+  id: 0xaa39e76e
+  kind: STRUCT
+  name: "v4l2_window"
+  definition {
+    bytesize: 56
+    member_id: 0x6a036180
+    member_id: 0xc3a77203
+    member_id: 0xa6537f8a
+    member_id: 0x7a2a5bd0
+    member_id: 0x1fcc68e0
+    member_id: 0x895f406f
+    member_id: 0xd3fc3594
+  }
+}
+struct_union {
+  id: 0xa3cd8855
+  kind: STRUCT
+  name: "va_format"
+  definition {
+    bytesize: 16
+    member_id: 0x69df6086
+    member_id: 0x1802e020
+  }
+}
+struct_union {
+  id: 0x2c4e98b1
+  kind: STRUCT
+  name: "vb2_buf_ops"
+  definition {
+    bytesize: 40
+    member_id: 0x71d0eed7
+    member_id: 0xf464be53
+    member_id: 0x3fc99ae4
+    member_id: 0x1e142a57
+    member_id: 0x9bdfc0ed
+  }
+}
+struct_union {
+  id: 0x98f1d602
+  kind: STRUCT
+  name: "vb2_buffer"
+  definition {
+    bytesize: 512
+    member_id: 0x76ce568b
+    member_id: 0xad7c8938
+    member_id: 0x5c13599b
+    member_id: 0x1fe933d3
+    member_id: 0x20f2603e
+    member_id: 0x5a76e133
+    member_id: 0xb6df9cd0
+    member_id: 0xcc934488
+    member_id: 0x72d854fd
+    member_id: 0xb574687c
+    member_id: 0xdc7238dc
+    member_id: 0x58138131
+    member_id: 0xfbb91426
+    member_id: 0x488dcd37
+    member_id: 0x29fe9b68
+    member_id: 0xf21d6976
+    member_id: 0xda255ba3
+  }
+}
+struct_union {
+  id: 0x1ff6bc52
+  kind: STRUCT
+  name: "vb2_fileio_buf"
+  definition {
+    bytesize: 24
+    member_id: 0x502784b0
+    member_id: 0xd93b9df5
+    member_id: 0x26e19490
+    member_id: 0x6a57f9a9
+  }
+}
+struct_union {
+  id: 0x6a16175b
+  kind: STRUCT
+  name: "vb2_fileio_data"
+  definition {
+    bytesize: 1576
+    member_id: 0x6560daa2
+    member_id: 0x5c135d23
+    member_id: 0x1fe93ef0
+    member_id: 0xd0fb758b
+    member_id: 0xf1488153
+    member_id: 0xdf872655
+    member_id: 0x8d88e575
+    member_id: 0x536e83d7
+    member_id: 0xe0bd6d38
+    member_id: 0xfbdc7402
+  }
+}
+struct_union {
+  id: 0xfcf93c50
+  kind: STRUCT
+  name: "vb2_mem_ops"
+  definition {
+    bytesize: 120
+    member_id: 0x45f145e7
+    member_id: 0x4ae8345d
+    member_id: 0x45a2fde2
+    member_id: 0xe15c46ee
+    member_id: 0xa865a1c0
+    member_id: 0x3d75932e
+    member_id: 0x7a290a57
+    member_id: 0x49f2e487
+    member_id: 0xc045a990
+    member_id: 0x6288b972
+    member_id: 0x14403a34
+    member_id: 0x5022dc04
+    member_id: 0x5857bb0a
+    member_id: 0x86f33b48
+    member_id: 0x87ff14d5
+  }
+}
+struct_union {
+  id: 0x9b1c2c87
+  kind: STRUCT
+  name: "vb2_ops"
+  definition {
+    bytesize: 96
+    member_id: 0x3af18ebc
+    member_id: 0xe0fb8719
+    member_id: 0xc97fc826
+    member_id: 0xad93cdd2
+    member_id: 0xba8f3c01
+    member_id: 0x2ad2c5fc
+    member_id: 0x07ec5f42
+    member_id: 0x9050692d
+    member_id: 0xb02c9382
+    member_id: 0xd25ddc6c
+    member_id: 0xeb7613c7
+    member_id: 0x80cd9e46
+  }
+}
+struct_union {
+  id: 0x38160275
+  kind: STRUCT
+  name: "vb2_plane"
+  definition {
+    bytesize: 48
+    member_id: 0x5614fb8d
+    member_id: 0x6afdae54
+    member_id: 0x9a9e2353
+    member_id: 0x69014fb1
+    member_id: 0xb528eff7
+    member_id: 0x19313aaa
+    member_id: 0x8da82527
+    member_id: 0x970da8c8
+  }
+}
+struct_union {
+  id: 0x407489b0
+  kind: STRUCT
+  name: "vb2_queue"
+  definition {
+    bytesize: 872
+    member_id: 0x5c135018
+    member_id: 0x893d25b0
+    member_id: 0xce3bbe52
+    member_id: 0x6450e529
+    member_id: 0x06322123
+    member_id: 0xa8f477ff
+    member_id: 0x58f7611f
+    member_id: 0x4fbe8fdc
+    member_id: 0xe93239ea
+    member_id: 0x065dd0db
+    member_id: 0x1e719d10
+    member_id: 0x060be66b
+    member_id: 0x96ee5f4a
+    member_id: 0xbea682a9
+    member_id: 0x45187c22
+    member_id: 0x2dcf9f28
+    member_id: 0x4a85cf2e
+    member_id: 0xafbf24b1
+    member_id: 0xae5e72b8
+    member_id: 0xb671e184
+    member_id: 0x20b4d470
+    member_id: 0xdf04d97b
+    member_id: 0xb0b51417
+    member_id: 0x7251c4e8
+    member_id: 0x81a9f110
+    member_id: 0x0e0e3c14
+    member_id: 0x44c49663
+    member_id: 0xa555816f
+    member_id: 0x1fe93d34
+    member_id: 0xeed6dd5f
+    member_id: 0xd0f7ac86
+    member_id: 0xdc40d5b4
+    member_id: 0x824e12df
+    member_id: 0x620d04f5
+    member_id: 0x3daa5397
+    member_id: 0xd715f08e
+    member_id: 0xbfd145e8
+    member_id: 0x10ba6614
+    member_id: 0xc284eb1d
+    member_id: 0xd96f0d39
+    member_id: 0xfbf188de
+    member_id: 0xcdb92068
+    member_id: 0x6fa5176a
+    member_id: 0x294a7c18
+    member_id: 0x66f841a5
+    member_id: 0xc38cba61
+    member_id: 0x0bd89cb9
+    member_id: 0xb6bd14f5
+    member_id: 0x6f4904a6
+    member_id: 0x0d81b934
+  }
+}
+struct_union {
+  id: 0xb33fe11e
+  kind: STRUCT
+  name: "vb2_threadio_data"
+  definition {
+    bytesize: 32
+    member_id: 0xfc7d4c4e
+    member_id: 0x2175946c
+    member_id: 0x59119163
+    member_id: 0x69e50dca
+  }
+}
+struct_union {
+  id: 0xf7a470d0
+  kind: STRUCT
+  name: "vb2_v4l2_buffer"
+  definition {
+    bytesize: 944
+    member_id: 0xee747e95
+    member_id: 0x2d8ea6ca
+    member_id: 0xc3a7738e
+    member_id: 0x12fb65ba
+    member_id: 0x0068479e
+    member_id: 0xc06b1172
+    member_id: 0x651c3980
+    member_id: 0x29fe928e
+    member_id: 0x2d081124
+  }
+}
+struct_union {
+  id: 0x3f42023f
+  kind: STRUCT
+  name: "vcpu_reset_state"
+  definition {
+    bytesize: 24
+    member_id: 0xa5f74e1c
+    member_id: 0x766556ed
+    member_id: 0x09a85b04
+    member_id: 0x62d0d919
+  }
+}
+struct_union {
+  id: 0x9871ee6b
+  kind: STRUCT
+  name: "vfsmount"
+  definition {
+    bytesize: 64
+    member_id: 0xc615127f
+    member_id: 0x29094539
+    member_id: 0xe1694592
+    member_id: 0xf8572128
+    member_id: 0x2d081599
+    member_id: 0x63760e65
+    member_id: 0xac8948c4
+    member_id: 0xe0f6333c
+  }
+}
+struct_union {
+  id: 0xe46534dd
+  kind: STRUCT
+  name: "vgic_cpu"
+  definition {
+    bytesize: 4000
+    member_id: 0x3b3d55bb
+    member_id: 0xdbd2d18f
+    member_id: 0xc8f35c78
+    member_id: 0x18b67de8
+    member_id: 0xb5b5379c
+    member_id: 0x525d4aae
+    member_id: 0xe932d634
+    member_id: 0x5debde6d
+    member_id: 0x8109b274
+    member_id: 0x8ed30508
+    member_id: 0xbf52270e
+    member_id: 0xf95b9cd7
+  }
+}
+struct_union {
+  id: 0x2c25c966
+  kind: STRUCT
+  name: "vgic_dist"
+  definition {
+    bytesize: 304
+    member_id: 0xd935af97
+    member_id: 0xa3f017bd
+    member_id: 0xd56295db
+    member_id: 0xe66fe569
+    member_id: 0x7a0e7466
+    member_id: 0x76466478
+    member_id: 0x7abe829e
+    member_id: 0x5eb23b58
+    member_id: 0xc573cedf
+    member_id: 0x36fb8f0a
+    member_id: 0x3a2d3f2e
+    member_id: 0xb1e7f3ff
+    member_id: 0xde92dea2
+    member_id: 0x6fe87475
+    member_id: 0x557bdab2
+    member_id: 0x703b904f
+    member_id: 0xbe693b59
+    member_id: 0x9c466cf2
+    member_id: 0x4d9128b0
+    member_id: 0xd5bf2684
+    member_id: 0x2b5908df
+    member_id: 0xa736298d
+  }
+}
+struct_union {
+  id: 0x60b9a60c
+  kind: STRUCT
+  name: "vgic_io_device"
+  definition {
+    bytesize: 40
+    member_id: 0xf9ecc4b7
+    member_id: 0x3551435a
+    member_id: 0x4e19f41c
+    member_id: 0x10f4be53
+    member_id: 0xddd1c1b9
+    member_id: 0xce062759
+  }
+}
+struct_union {
+  id: 0x421531e8
+  kind: STRUCT
+  name: "vgic_irq"
+  definition {
+    bytesize: 112
+    member_id: 0x8c92967c
+    member_id: 0x9ecea343
+    member_id: 0xd96ad022
+    member_id: 0xa936a512
+    member_id: 0x096d65bb
+    member_id: 0x4af72c65
+    member_id: 0x2b9d91fc
+    member_id: 0x004ca63d
+    member_id: 0x224f240b
+    member_id: 0x3a2d3590
+    member_id: 0x97aa71b6
+    member_id: 0x05ec0a8d
+    member_id: 0xb62bb539
+    member_id: 0xc2defa03
+    member_id: 0x371515be
+    member_id: 0xd707c4f8
+    member_id: 0x8f0fcc44
+    member_id: 0x10cd0450
+    member_id: 0xd3bb5c92
+    member_id: 0xd1469e0e
+    member_id: 0xaf890e76
+    member_id: 0x4a85cb53
+  }
+}
+struct_union {
+  id: 0xdbe5858f
+  kind: STRUCT
+  name: "vgic_its"
+  definition {
+    bytesize: 232
+    member_id: 0x0f936dd3
+    member_id: 0x3a2d3a5d
+    member_id: 0xc33609f7
+    member_id: 0xce0bc034
+    member_id: 0x58199dc6
+    member_id: 0x9232ba55
+    member_id: 0x28ddf56e
+    member_id: 0xd83a0eba
+    member_id: 0x110caede
+    member_id: 0x09c4ee83
+    member_id: 0xb41bc738
+    member_id: 0x857bfedc
+    member_id: 0x5adf7097
+    member_id: 0x5a9c1331
+  }
+}
+struct_union {
+  id: 0x6ff43c7f
+  kind: STRUCT
+  name: "vgic_redist_region"
+  definition {
+    bytesize: 40
+    member_id: 0xadf00094
+    member_id: 0x85c1a1cb
+    member_id: 0x65ec5e2d
+    member_id: 0x3e423a64
+    member_id: 0x7c00e79b
+  }
+}
+struct_union {
+  id: 0x3ae08515
+  kind: STRUCT
+  name: "vgic_register_region"
+  definition {
+    bytesize: 48
+    member_id: 0x83dea94b
+    member_id: 0xb8405d0b
+    member_id: 0xbab5eab6
+    member_id: 0xcb7a7a49
+    member_id: 0x32f872a3
+    member_id: 0x353d48f5
+    member_id: 0x8638eb22
+    member_id: 0x353b064f
+  }
+}
+struct_union {
+  id: 0xc5586f9b
+  kind: STRUCT
+  name: "vgic_state_iter"
+  definition {
+    bytesize: 40
+    member_id: 0xc2c8918f
+    member_id: 0x5eb23fa1
+    member_id: 0x2af96acc
+    member_id: 0x929175ec
+    member_id: 0x7c4a5fae
+    member_id: 0x4a590e0a
+    member_id: 0x43246e2d
+    member_id: 0xeca52885
+  }
+}
+struct_union {
+  id: 0x020c6b41
+  kind: STRUCT
+  name: "vgic_v2_cpu_if"
+  definition {
+    bytesize: 272
+    member_id: 0x4a8c149d
+    member_id: 0x38bbfe42
+    member_id: 0xc9dbb39f
+    member_id: 0xa73178a4
+    member_id: 0x867737e5
+  }
+}
+struct_union {
+  id: 0xbfc414f5
+  kind: STRUCT
+  name: "vgic_v3_cpu_if"
+  definition {
+    bytesize: 312
+    member_id: 0x4a8c149d
+    member_id: 0x38bbfe42
+    member_id: 0x28fa73a3
+    member_id: 0xaa37d774
+    member_id: 0x47207a3e
+    member_id: 0xa75822b6
+    member_id: 0xa9a971b2
+    member_id: 0x8677397b
+  }
+}
+struct_union {
+  id: 0xcf6d5ce3
+  kind: STRUCT
+  name: "vhost_dev"
+  definition {
+    bytesize: 216
+    member_id: 0x3025d5eb
+    member_id: 0xad8987e3
+    member_id: 0x9afd3c8b
+    member_id: 0xa8e39171
+    member_id: 0x5f496848
+    member_id: 0x03478a89
+    member_id: 0xff7268fe
+    member_id: 0x95886403
+    member_id: 0xbbd1f737
+    member_id: 0xeed94acd
+    member_id: 0xa6a845da
+    member_id: 0x7a4a163b
+    member_id: 0x202d9556
+    member_id: 0x51daf362
+    member_id: 0x7e0f7e06
+    member_id: 0xc47563ba
+    member_id: 0xe79c9d40
+    member_id: 0x4a7465a4
+    member_id: 0xe5072f8f
+  }
+}
+struct_union {
+  id: 0xc106cc47
+  kind: STRUCT
+  name: "vhost_iotlb"
+  definition {
+    bytesize: 48
+    member_id: 0x930fdb11
+    member_id: 0x7c00e690
+    member_id: 0xa94f37d9
+    member_id: 0x61e4525f
+    member_id: 0x2d2d06ff
+  }
+}
+struct_union {
+  id: 0xcce65b1e
+  kind: STRUCT
+  name: "vhost_iotlb_map"
+  definition {
+    bytesize: 96
+    member_id: 0xfb47df92
+    member_id: 0x556d5f25
+    member_id: 0x468917a4
+    member_id: 0x26fd2fa0
+    member_id: 0xd9ec3836
+    member_id: 0x24bff74d
+    member_id: 0xf2ed1e76
+    member_id: 0xcc897683
+    member_id: 0x016b62b4
+    member_id: 0x8fe42b1b
+  }
+}
+struct_union {
+  id: 0xaba05857
+  kind: STRUCT
+  name: "vhost_iotlb_msg"
+  definition {
+    bytesize: 32
+    member_id: 0xc1a94fe9
+    member_id: 0xd993eae4
+    member_id: 0x558adbd8
+    member_id: 0xf297f05c
+    member_id: 0x5ce530b0
+  }
+}
+struct_union {
+  id: 0xf85b33f6
+  kind: STRUCT
+  name: "vhost_log"
+  definition {
+    bytesize: 16
+    member_id: 0x24bffc55
+    member_id: 0xb897f284
+  }
+}
+struct_union {
+  id: 0x31ae010b
+  kind: STRUCT
+  name: "vhost_poll"
+  definition {
+    bytesize: 104
+    member_id: 0xb6620712
+    member_id: 0x4df4451d
+    member_id: 0x201a7190
+    member_id: 0xd6310997
+    member_id: 0xa88a2500
+    member_id: 0xce00a18a
+  }
+}
+struct_union {
+  id: 0x3a748a98
+  kind: STRUCT
+  name: "vhost_virtqueue"
+  definition {
+    bytesize: 18856
+    member_id: 0xce00a924
+    member_id: 0xad8987e3
+    member_id: 0x1c73cda4
+    member_id: 0x87ca6bab
+    member_id: 0xe1383335
+    member_id: 0x8b87862f
+    member_id: 0xbbdc3516
+    member_id: 0x1b51da8c
+    member_id: 0x797795d3
+    member_id: 0x04a1d35d
+    member_id: 0x5f496882
+    member_id: 0x5e24e0fe
+    member_id: 0x33f92e8a
+    member_id: 0xa0dfccc7
+    member_id: 0x6cb75b2a
+    member_id: 0x4b2269ec
+    member_id: 0xf3d9587a
+    member_id: 0x76b0e2db
+    member_id: 0x159939af
+    member_id: 0xdbf890b2
+    member_id: 0x106b2c44
+    member_id: 0xdf21cc08
+    member_id: 0x04877fe9
+    member_id: 0xefc224b0
+    member_id: 0xdcc859e0
+    member_id: 0x95886ba8
+    member_id: 0xbbd1f963
+    member_id: 0xf21ad343
+    member_id: 0x60b77d15
+    member_id: 0xf4cc6454
+    member_id: 0x5de1525d
+    member_id: 0xc0759949
+    member_id: 0x79366138
+    member_id: 0xdfeafd0b
+    member_id: 0xec7ca176
+  }
+}
+struct_union {
+  id: 0x273a06ad
+  kind: STRUCT
+  name: "vhost_vring_call"
+  definition {
+    bytesize: 72
+    member_id: 0xeca7f1c5
+    member_id: 0x6c552a23
+  }
+}
+struct_union {
+  id: 0xc859be95
+  kind: STRUCT
+  name: "vhost_work"
+  definition {
+    bytesize: 24
+    member_id: 0x0f544335
+    member_id: 0xf721f5dc
+    member_id: 0x2d5bf8f8
+  }
+}
+struct_union {
+  id: 0x2dc225a0
+  kind: STRUCT
+  name: "video_device"
+  definition {
+    bytesize: 1304
+    member_id: 0x449adaa1
+    member_id: 0x02cbff43
+    member_id: 0x999ac82a
+    member_id: 0xb1ad6870
+    member_id: 0xed87f30c
+    member_id: 0xce1ac619
+    member_id: 0x058b41dc
+    member_id: 0x57c90446
+    member_id: 0xb0a96c90
+    member_id: 0x823928b3
+    member_id: 0xadc88f57
+    member_id: 0xa9d6a844
+    member_id: 0x0d81bd28
+    member_id: 0xc4c63eb9
+    member_id: 0x2a597328
+    member_id: 0xc84023e1
+    member_id: 0x1ca706c6
+    member_id: 0x2d5bf38a
+    member_id: 0xad5e24f2
+    member_id: 0x5dd6479d
+    member_id: 0x2db4ae9c
+    member_id: 0xa64bb146
+    member_id: 0x06a5b2f2
+    member_id: 0xae965541
+    member_id: 0x71d5bbe6
+    member_id: 0xa6274290
+    member_id: 0x2dcf951a
+    member_id: 0x2d081ffd
+    member_id: 0x63760775
+  }
+}
+struct_union {
+  id: 0x38da44ec
+  kind: STRUCT
+  name: "videomode"
+  definition {
+    bytesize: 48
+    member_id: 0xa5960f91
+    member_id: 0x8e0bf6d7
+    member_id: 0xbd570bdd
+    member_id: 0x7a175123
+    member_id: 0x0ea14ddf
+    member_id: 0xb6f14625
+    member_id: 0xf3a4ce38
+    member_id: 0x031a3d77
+    member_id: 0xb2b17c0a
+    member_id: 0x2d0ec8d7
+  }
+}
+struct_union {
+  id: 0x82e1b2d2
+  kind: STRUCT
+  name: "virt_dma_chan"
+  definition {
+    bytesize: 256
+    member_id: 0x4640bc02
+    member_id: 0x9c82a603
+    member_id: 0xf307b50c
+    member_id: 0x2d1feaf8
+    member_id: 0x6cdf3282
+    member_id: 0xbf901141
+    member_id: 0xef859e21
+    member_id: 0xe174d214
+    member_id: 0xbfb20c6f
+    member_id: 0x3a126875
+  }
+}
+struct_union {
+  id: 0xc775f975
+  kind: STRUCT
+  name: "virt_dma_desc"
+  definition {
+    bytesize: 168
+    member_id: 0x6548ea05
+    member_id: 0xeae26a4d
+    member_id: 0x0fa6c46b
+  }
+}
+struct_union {
+  id: 0x38d40ab5
+  kind: STRUCT
+  name: "virtio_config_ops"
+  definition {
+    bytesize: 136
+    member_id: 0x31555e6e
+    member_id: 0x3dd2270e
+    member_id: 0x69c7a9e1
+    member_id: 0x0217a7cd
+    member_id: 0xb4ff99a3
+    member_id: 0x62b18cc1
+    member_id: 0x8317e158
+    member_id: 0x537845ca
+    member_id: 0x6038fb8d
+    member_id: 0xad383bfd
+    member_id: 0x49bff4c4
+    member_id: 0x8c682862
+    member_id: 0xabd65e76
+    member_id: 0xba5ef8e0
+    member_id: 0x9cc6236c
+    member_id: 0x8965be20
+    member_id: 0x8cbd3660
+  }
+}
+struct_union {
+  id: 0x8e987e6b
+  kind: STRUCT
+  name: "virtio_device"
+  definition {
+    bytesize: 984
+    member_id: 0xad5e286c
+    member_id: 0xf747d410
+    member_id: 0x0928ab5c
+    member_id: 0xc92c2d46
+    member_id: 0xba3ab556
+    member_id: 0x05b06d0c
+    member_id: 0xce1ac88b
+    member_id: 0xccec49b8
+    member_id: 0xd19bd6d2
+    member_id: 0x5d601f09
+    member_id: 0x9a256628
+    member_id: 0xc58a5218
+    member_id: 0x59119544
+  }
+}
+struct_union {
+  id: 0xc3693b57
+  kind: STRUCT
+  name: "virtio_device_id"
+  definition {
+    bytesize: 8
+    member_id: 0xead4067a
+    member_id: 0x7a88c029
+  }
+}
+struct_union {
+  id: 0x698f90ec
+  kind: STRUCT
+  name: "virtio_driver"
+  definition {
+    bytesize: 272
+    member_id: 0xd4ad4c68
+    member_id: 0xc4f2675c
+    member_id: 0x09fa7934
+    member_id: 0xc0f502d0
+    member_id: 0x15ffc9af
+    member_id: 0x5ad3f2bc
+    member_id: 0x2a13aca1
+    member_id: 0xd7796627
+    member_id: 0xa1389a4d
+    member_id: 0xb4aff42b
+    member_id: 0x96bc0a6d
+    member_id: 0x2cce6f0b
+    member_id: 0xfa2232ae
+  }
+}
+struct_union {
+  id: 0x863aeeaf
+  kind: STRUCT
+  name: "virtio_shm_region"
+  definition {
+    bytesize: 16
+    member_id: 0x24bffc55
+    member_id: 0xb897f284
+  }
+}
+struct_union {
+  id: 0xb505475d
+  kind: STRUCT
+  name: "virtio_transport"
+  definition {
+    bytesize: 288
+    member_id: 0xb8f911ce
+    member_id: 0x42f73f70
+  }
+}
+struct_union {
+  id: 0xb8eea35a
+  kind: STRUCT
+  name: "virtio_vsock_hdr"
+  definition {
+    bytesize: 44
+    member_id: 0x2612ce26
+    member_id: 0xbce6c531
+    member_id: 0x1f6f7a3c
+    member_id: 0xe5f4445c
+    member_id: 0xb80e77ef
+    member_id: 0x5ccd025b
+    member_id: 0xf0697d2a
+    member_id: 0x2d632e85
+    member_id: 0x7c3d486b
+    member_id: 0x2d7f7754
+  }
+}
+struct_union {
+  id: 0x20a252e3
+  kind: STRUCT
+  name: "virtio_vsock_pkt"
+  definition {
+    bytesize: 96
+    member_id: 0x2b9cf3b8
+    member_id: 0x7c00eec0
+    member_id: 0x8d8f1051
+    member_id: 0x9a0374cd
+    member_id: 0x9cb9b85b
+    member_id: 0xb8ccda3c
+    member_id: 0x8b1c3202
+    member_id: 0x728dcf96
+    member_id: 0x32137af5
+  }
+}
+struct_union {
+  id: 0xedaaf8ed
+  kind: STRUCT
+  name: "virtqueue"
+  definition {
+    bytesize: 72
+    member_id: 0x7c00ef52
+    member_id: 0x56e85bb2
+    member_id: 0x0de57421
+    member_id: 0xebd9c964
+    member_id: 0xad7c8a1e
+    member_id: 0xee7562a7
+    member_id: 0x918dc52a
+    member_id: 0x59119fd6
+    member_id: 0x62d0da0e
+  }
+}
+struct_union {
+  id: 0xbb2a4815
+  kind: STRUCT
+  name: "vlan_group"
+  definition {
+    bytesize: 152
+    member_id: 0x7d2aa81e
+    member_id: 0x2d522780
+    member_id: 0x5f7b87c5
+  }
+}
+struct_union {
+  id: 0xda58f5f7
+  kind: STRUCT
+  name: "vlan_info"
+  definition {
+    bytesize: 200
+    member_id: 0xd27fced1
+    member_id: 0x96eb7579
+    member_id: 0x6992e1ac
+    member_id: 0x51ca938c
+    member_id: 0x95dace27
+  }
+}
+struct_union {
+  id: 0x020de38d
+  kind: STRUCT
+  name: "vm_area_struct"
+  definition {
+    bytesize: 200
+    member_id: 0x347e5155
+    member_id: 0x4f684438
+    member_id: 0xba954092
+    member_id: 0x3aa631b9
+    member_id: 0xfcf02e56
+    member_id: 0x155d76e4
+    member_id: 0x0c6f73e9
+    member_id: 0x35cdb84a
+    member_id: 0xc1516075
+    member_id: 0x320ccb8c
+    member_id: 0x0b54ef08
+    member_id: 0x6ec5bbfa
+    member_id: 0x768d3eb0
+    member_id: 0x28bbad8b
+    member_id: 0xc8bf0dce
+    member_id: 0xa927e04b
+    member_id: 0x2d081fb1
+    member_id: 0x63760b51
+    member_id: 0xac894e06
+    member_id: 0xe0f63eac
+  }
+}
+struct_union {
+  id: 0x3306692c
+  kind: STRUCT
+  name: "vm_event_state"
+  definition {
+    bytesize: 784
+    member_id: 0x0ac7a0a2
+  }
+}
+struct_union {
+  id: 0xe7c3994d
+  kind: STRUCT
+  name: "vm_fault"
+  definition {
+    bytesize: 112
+    member_id: 0x27e3d457
+    member_id: 0x2df885c3
+    member_id: 0x56639b84
+    member_id: 0x5efa06bd
+    member_id: 0x351d74b1
+    member_id: 0x692bdd3b
+    member_id: 0x32035686
+    member_id: 0xa17fe173
+    member_id: 0xce442d14
+    member_id: 0xdfa9e7fa
+  }
+}
+struct_union {
+  id: 0xa607da82
+  kind: STRUCT
+  name: "vm_operations_struct"
+  definition {
+    bytesize: 144
+    member_id: 0xadba96dc
+    member_id: 0xcd7de4b1
+    member_id: 0x1c281f71
+    member_id: 0xf172082e
+    member_id: 0x689cc991
+    member_id: 0x7bb750d9
+    member_id: 0x6c785781
+    member_id: 0xa61995ce
+    member_id: 0xc3f2c304
+    member_id: 0xb51534d3
+    member_id: 0xc43dc026
+    member_id: 0x6c219058
+    member_id: 0x0df5c4fb
+    member_id: 0x6ee291cd
+    member_id: 0x2d081f94
+    member_id: 0x63760151
+    member_id: 0xac894e49
+    member_id: 0xe0f6393d
+  }
+}
+struct_union {
+  id: 0x5bc753ae
+  kind: STRUCT
+  name: "vm_special_mapping"
+  definition {
+    bytesize: 32
+    member_id: 0x0de57ce8
+    member_id: 0x7841bd1f
+    member_id: 0x7bb7e377
+    member_id: 0xf171218a
+  }
+}
+struct_union {
+  id: 0x91ca70cf
+  kind: STRUCT
+  name: "vm_struct"
+  definition {
+    bytesize: 64
+    member_id: 0x11dde27a
+    member_id: 0x243566e2
+    member_id: 0xd94d60d4
+    member_id: 0x2d5bf9f3
+    member_id: 0x7841b955
+    member_id: 0xf6c31797
+    member_id: 0xe3c74124
+    member_id: 0xbdf625ad
+    member_id: 0xe9550bd8
+  }
+}
+struct_union {
+  id: 0x04fd6761
+  kind: STRUCT
+  name: "vm_userfaultfd_ctx"
+  definition {
+    bytesize: 8
+    member_id: 0xeca4247d
+  }
+}
+struct_union {
+  id: 0xe77d49ec
+  kind: STRUCT
+  name: "vma_lock"
+  definition {
+    bytesize: 64
+    member_id: 0x2dc4468e
+  }
+}
+struct_union {
+  id: 0x4f809dfe
+  kind: STRUCT
+  name: "vmem_altmap"
+  definition {
+    bytesize: 48
+    member_id: 0x2d6eaa34
+    member_id: 0x92aeeccb
+    member_id: 0xf4f71011
+    member_id: 0xfe91757e
+    member_id: 0x33d2001c
+    member_id: 0x45dfc97a
+  }
+}
+struct_union {
+  id: 0xe9ba69cd
+  kind: STRUCT
+  name: "vmpressure"
+  definition {
+    bytesize: 152
+    member_id: 0x3bfa7655
+    member_id: 0x2f1a436f
+    member_id: 0xa2f68ed5
+    member_id: 0xdaf2dfc9
+    member_id: 0x639c3690
+    member_id: 0x11267216
+    member_id: 0x3c569c3a
+    member_id: 0xd6e6640d
+  }
+}
+struct_union {
+  id: 0xdf09be6b
+  kind: STRUCT
+  name: "vring_avail"
+  definition {
+    bytesize: 4
+    member_id: 0x2d7ef0cc
+    member_id: 0x3c91820b
+    member_id: 0xd45ffcbe
+  }
+}
+struct_union {
+  id: 0xbca949ee
+  kind: STRUCT
+  name: "vring_desc"
+  definition {
+    bytesize: 16
+    member_id: 0x24a68b5d
+    member_id: 0xb8735cac
+    member_id: 0x2d7ef94f
+    member_id: 0x11e57880
+  }
+}
+struct_union {
+  id: 0x6cc1b619
+  kind: STRUCT
+  name: "vring_used"
+  definition {
+    bytesize: 4
+    member_id: 0x2d7ef0cc
+    member_id: 0x3c91820b
+    member_id: 0xd46fc5b2
+  }
+}
+struct_union {
+  id: 0x84be8096
+  kind: STRUCT
+  name: "vring_used_elem"
+  definition {
+    bytesize: 8
+    member_id: 0xcc59a18a
+    member_id: 0xb8735576
+  }
+}
+struct_union {
+  id: 0xe0f26092
+  kind: STRUCT
+  name: "vringh_config_ops"
+}
+struct_union {
+  id: 0x7fe9e1e4
+  kind: STRUCT
+  name: "vsock_sock"
+  definition {
+    bytesize: 1456
+    member_id: 0x82ce9da8
+    member_id: 0xb8dcca84
+    member_id: 0x74508206
+    member_id: 0x9a22f566
+    member_id: 0x68d6c4e1
+    member_id: 0xdecd7dd8
+    member_id: 0xc5b7f4a7
+    member_id: 0xed6e7a1a
+    member_id: 0x3f9371b2
+    member_id: 0x4aad1491
+    member_id: 0x168e52ab
+    member_id: 0xe2a2a2d7
+    member_id: 0xb2f24eac
+    member_id: 0x09a04ae8
+    member_id: 0x06ab1232
+    member_id: 0x437f9981
+    member_id: 0x3fce46f6
+    member_id: 0x74c81385
+    member_id: 0xef258c05
+    member_id: 0x4bda1298
+    member_id: 0x2f63fdae
+    member_id: 0xb8c28e15
+    member_id: 0x3086dc62
+    member_id: 0x3025b9ec
+    member_id: 0x64fe2a90
+    member_id: 0xf5deb131
+  }
+}
+struct_union {
+  id: 0x19d71054
+  kind: STRUCT
+  name: "vsock_transport"
+  definition {
+    bytesize: 280
+    member_id: 0x965f163e
+    member_id: 0x1ac6720b
+    member_id: 0x628e7255
+    member_id: 0xae971adb
+    member_id: 0x9fa954f5
+    member_id: 0xbd404e9b
+    member_id: 0xe13c5d33
+    member_id: 0x9dff0348
+    member_id: 0x8ef03263
+    member_id: 0x2476941e
+    member_id: 0xbbd01ac5
+    member_id: 0x2e8d4bcd
+    member_id: 0x68da488e
+    member_id: 0x168badc1
+    member_id: 0x7b3d243c
+    member_id: 0x2dadb239
+    member_id: 0xf293b35f
+    member_id: 0xbb7ac8c3
+    member_id: 0x64f1b5c1
+    member_id: 0x879b0022
+    member_id: 0x9024db2d
+    member_id: 0xa8b95495
+    member_id: 0x6bb79b75
+    member_id: 0xb08882f7
+    member_id: 0xf5ffd8d8
+    member_id: 0x7f7304b0
+    member_id: 0x5eab9f7f
+    member_id: 0x7f89cf42
+    member_id: 0x6631344c
+    member_id: 0x1bde52a2
+    member_id: 0x548787b3
+    member_id: 0x6e85404d
+    member_id: 0x7b726ba8
+    member_id: 0x9ed9ffe0
+    member_id: 0x9289442d
+  }
+}
+struct_union {
+  id: 0x7cffe843
+  kind: STRUCT
+  name: "vsock_transport_recv_notify_data"
+  definition {
+    bytesize: 24
+    member_id: 0x0357f389
+    member_id: 0xc091a862
+    member_id: 0x3c7f33fc
+  }
+}
+struct_union {
+  id: 0xa7072742
+  kind: STRUCT
+  name: "vsock_transport_send_notify_data"
+  definition {
+    bytesize: 16
+    member_id: 0x0357f389
+    member_id: 0xc091a862
+  }
+}
+struct_union {
+  id: 0x468d36dd
+  kind: STRUCT
+  name: "wait_bit_key"
+  definition {
+    bytesize: 24
+    member_id: 0x2d70393b
+    member_id: 0xe51884d1
+    member_id: 0x54f0f871
+  }
+}
+struct_union {
+  id: 0x13f11378
+  kind: STRUCT
+  name: "wait_bit_queue_entry"
+  definition {
+    bytesize: 64
+    member_id: 0x20108798
+    member_id: 0x2aa222ca
+  }
+}
+struct_union {
+  id: 0x8407953d
+  kind: STRUCT
+  name: "wait_page_queue"
+  definition {
+    bytesize: 56
+    member_id: 0xb8119d4a
+    member_id: 0xe51884d1
+    member_id: 0x201a709b
+  }
+}
+struct_union {
+  id: 0x35a67227
+  kind: STRUCT
+  name: "wait_queue_entry"
+  definition {
+    bytesize: 40
+    member_id: 0x2d2d0138
+    member_id: 0x91796252
+    member_id: 0x211d8c18
+    member_id: 0x4d8788f5
+  }
+}
+struct_union {
+  id: 0x76e1f83e
+  kind: STRUCT
+  name: "wait_queue_head"
+  definition {
+    bytesize: 24
+    member_id: 0x2d1fec85
+    member_id: 0xb58975e1
+  }
+}
+struct_union {
+  id: 0x99f549cf
+  kind: STRUCT
+  name: "wake_irq"
+  definition {
+    bytesize: 24
+    member_id: 0xce3bbab3
+    member_id: 0x2022a603
+    member_id: 0x99159c65
+    member_id: 0x0de5752a
+  }
+}
+struct_union {
+  id: 0x01fbf104
+  kind: STRUCT
+  name: "wake_q_node"
+  definition {
+    bytesize: 8
+    member_id: 0x11f9ee1a
+  }
+}
+struct_union {
+  id: 0x21eca7f5
+  kind: STRUCT
+  name: "wakeup_source"
+  definition {
+    bytesize: 208
+    member_id: 0x0de57ce8
+    member_id: 0xcc4808a3
+    member_id: 0x4d8789fe
+    member_id: 0x2d1fec2e
+    member_id: 0xf7e3e873
+    member_id: 0x1dd180f0
+    member_id: 0xf23824cb
+    member_id: 0x87b61d52
+    member_id: 0x0f2e8b32
+    member_id: 0x320c7c1e
+    member_id: 0xad4616ef
+    member_id: 0x44cb53c7
+    member_id: 0x93a48b9c
+    member_id: 0xcb648c91
+    member_id: 0x1ba7b965
+    member_id: 0xbfc5c60c
+    member_id: 0x8e632614
+    member_id: 0xce3bb054
+    member_id: 0x1ae6069f
+    member_id: 0x52191cde
+  }
+}
+struct_union {
+  id: 0x1d033874
+  kind: STRUCT
+  name: "watchdog_core_data"
+  definition {
+    bytesize: 1248
+    member_id: 0xce1ac149
+    member_id: 0x05c97cd1
+    member_id: 0xcf4e05d1
+    member_id: 0x2d4b353f
+    member_id: 0x15e76f66
+    member_id: 0x807bc4cf
+    member_id: 0x0be63d8a
+    member_id: 0x1dce6571
+    member_id: 0xd6c16273
+    member_id: 0x20545d1c
+  }
+}
+struct_union {
+  id: 0x61dd8212
+  kind: STRUCT
+  name: "watchdog_device"
+  definition {
+    bytesize: 192
+    member_id: 0xcc480c42
+    member_id: 0x72332ee2
+    member_id: 0x93011a5c
+    member_id: 0xcd692d2e
+    member_id: 0xafb144a9
+    member_id: 0xbf22ab93
+    member_id: 0x54ce3c04
+    member_id: 0x548603d1
+    member_id: 0xedf11f26
+    member_id: 0x3592efa1
+    member_id: 0xbe94f9ba
+    member_id: 0x402764fb
+    member_id: 0xe9790354
+    member_id: 0xf34d97bb
+    member_id: 0xc74f5c19
+    member_id: 0x3e1a6172
+    member_id: 0x6d52ba76
+    member_id: 0x6ce951af
+    member_id: 0x20545863
+    member_id: 0xf065af4e
+  }
+}
+struct_union {
+  id: 0xd2160ffc
+  kind: STRUCT
+  name: "watchdog_governor"
+  definition {
+    bytesize: 32
+    member_id: 0x0df8318e
+    member_id: 0xedbb0da6
+  }
+}
+struct_union {
+  id: 0x8b2d1a51
+  kind: STRUCT
+  name: "watchdog_info"
+  definition {
+    bytesize: 40
+    member_id: 0xd2d5b653
+    member_id: 0x97467a19
+    member_id: 0x0be851e4
+  }
+}
+struct_union {
+  id: 0x7d0e31e2
+  kind: STRUCT
+  name: "watchdog_ops"
+  definition {
+    bytesize: 80
+    member_id: 0x4a965250
+    member_id: 0x4637e9c5
+    member_id: 0x69a4adea
+    member_id: 0x1762f1c8
+    member_id: 0x205f2fbc
+    member_id: 0x05571fa2
+    member_id: 0x7eba804e
+    member_id: 0x4b2d8406
+    member_id: 0x01c5b15c
+    member_id: 0x4d466701
+  }
+}
+struct_union {
+  id: 0x841ba84b
+  kind: STRUCT
+  name: "wb_completion"
+  definition {
+    bytesize: 16
+    member_id: 0x8285ee65
+    member_id: 0xe06d30e5
+  }
+}
+struct_union {
+  id: 0xb2264c64
+  kind: STRUCT
+  name: "wb_domain"
+  definition {
+    bytesize: 136
+    member_id: 0x2d1fec85
+    member_id: 0x447b9357
+    member_id: 0x812f3ed4
+    member_id: 0xe39a23e1
+    member_id: 0x3935eb38
+    member_id: 0x9decd18f
+  }
+}
+struct_union {
+  id: 0x5883a0f3
+  kind: STRUCT
+  name: "winsize"
+  definition {
+    bytesize: 8
+    member_id: 0x625683d1
+    member_id: 0xc579a0b3
+    member_id: 0xcb337b27
+    member_id: 0x438d37e1
+  }
+}
+struct_union {
+  id: 0x6c8c463d
+  kind: STRUCT
+  name: "wiphy"
+  definition {
+    bytesize: 1504
+    member_id: 0x3a751f5e
+    member_id: 0xf0ce3cc9
+    member_id: 0xc9e61d51
+    member_id: 0x4e4e54e1
+    member_id: 0x9cc5058d
+    member_id: 0x615462ac
+    member_id: 0xfb4e2fed
+    member_id: 0xac9250b6
+    member_id: 0x0b27da47
+    member_id: 0x5656bb52
+    member_id: 0xf69ce7fc
+    member_id: 0x2da18312
+    member_id: 0x73ce8bb3
+    member_id: 0xc5d17e22
+    member_id: 0xd3fd6d41
+    member_id: 0x6892c863
+    member_id: 0x7eb64f1d
+    member_id: 0x4142d858
+    member_id: 0x67c5e3d7
+    member_id: 0x3c3bc696
+    member_id: 0x650991bc
+    member_id: 0x1273815d
+    member_id: 0xf671f028
+    member_id: 0x9b94e658
+    member_id: 0x77131af4
+    member_id: 0x846f56a2
+    member_id: 0x5f5ef4fc
+    member_id: 0x42274fa9
+    member_id: 0x3af84580
+    member_id: 0x5b7b28ca
+    member_id: 0x262fa463
+    member_id: 0xb1258bb8
+    member_id: 0xab25d6fc
+    member_id: 0xb7384bd0
+    member_id: 0x0e577c51
+    member_id: 0x74ebc136
+    member_id: 0x353336d2
+    member_id: 0x1d9e0f02
+    member_id: 0xfb37b87b
+    member_id: 0xe68eef5f
+    member_id: 0xaf6e85c1
+    member_id: 0x1562dab6
+    member_id: 0x1c0f4706
+    member_id: 0x32f21309
+    member_id: 0x26380876
+    member_id: 0x938ebdeb
+    member_id: 0x4e9575d9
+    member_id: 0x340bcff0
+    member_id: 0xdf5846e7
+    member_id: 0x3965bd17
+    member_id: 0x56d998ce
+    member_id: 0xa0a6633e
+    member_id: 0xd37edb2e
+    member_id: 0x88082bb8
+    member_id: 0xbf5b01e7
+    member_id: 0x4ace638f
+    member_id: 0xce1ac87a
+    member_id: 0x513724f7
+    member_id: 0x0b88f597
+    member_id: 0x7723fa9d
+    member_id: 0x4d0af2ad
+    member_id: 0x666b05bf
+    member_id: 0x3e759921
+    member_id: 0xefb2bf17
+    member_id: 0xdddbb481
+    member_id: 0xc85843b6
+    member_id: 0x3c4d3872
+    member_id: 0x4cf44723
+    member_id: 0x22bba09d
+    member_id: 0x6932046b
+    member_id: 0x599e9d65
+    member_id: 0x9480e389
+    member_id: 0xefe29af2
+    member_id: 0xd029c54f
+    member_id: 0xdd1f69f8
+    member_id: 0x58707f20
+    member_id: 0xa69acf8a
+    member_id: 0x5b950813
+    member_id: 0x98e24df0
+    member_id: 0x3bb0b3ab
+    member_id: 0xfd797107
+    member_id: 0xa9b5e658
+    member_id: 0x80a0a17f
+    member_id: 0x350eb9a7
+    member_id: 0x0517ef7d
+    member_id: 0x5fc9adb3
+    member_id: 0x2d0819fe
+    member_id: 0x59c3092e
+  }
+}
+struct_union {
+  id: 0xd6fad4c2
+  kind: STRUCT
+  name: "wiphy_coalesce_support"
+  definition {
+    bytesize: 24
+    member_id: 0xeebfc981
+    member_id: 0x1046ca64
+    member_id: 0xf39eb3e3
+    member_id: 0x6212b647
+    member_id: 0x645411e5
+    member_id: 0x4692391b
+  }
+}
+struct_union {
+  id: 0x93e96c7b
+  kind: STRUCT
+  name: "wiphy_iftype_akm_suites"
+  definition {
+    bytesize: 24
+    member_id: 0x50622db4
+    member_id: 0x262fa271
+    member_id: 0x5b7b2b8b
+  }
+}
+struct_union {
+  id: 0x23b798e8
+  kind: STRUCT
+  name: "wiphy_iftype_ext_capab"
+  definition {
+    bytesize: 32
+    member_id: 0x35a5c1d0
+    member_id: 0x340bc2e2
+    member_id: 0xdf58482e
+    member_id: 0x3965bcab
+    member_id: 0x90736400
+    member_id: 0xbc42139d
+  }
+}
+struct_union {
+  id: 0x7d1691af
+  kind: STRUCT
+  name: "wiphy_vendor_command"
+  definition {
+    bytesize: 56
+    member_id: 0xcd5bacd7
+    member_id: 0x2da18894
+    member_id: 0xd904b1c4
+    member_id: 0x7dad3f8f
+    member_id: 0x60d3510f
+    member_id: 0x5a7d3e18
+    member_id: 0x2d0814a0
+  }
+}
+struct_union {
+  id: 0xe49f3dfa
+  kind: STRUCT
+  name: "wiphy_wowlan_support"
+  definition {
+    bytesize: 32
+    member_id: 0x2da18c75
+    member_id: 0xf39eba39
+    member_id: 0x6212bb25
+    member_id: 0x645411a4
+    member_id: 0x46923d39
+    member_id: 0x1e7bfb76
+    member_id: 0xb0c31015
+  }
+}
+struct_union {
+  id: 0x15193966
+  kind: STRUCT
+  name: "wiphy_wowlan_tcp_support"
+  definition {
+    bytesize: 24
+    member_id: 0xff2c0509
+    member_id: 0x2d064a5e
+    member_id: 0x1da8cdb0
+    member_id: 0xeb0331a3
+    member_id: 0xfa717df5
+  }
+}
+struct_union {
+  id: 0xcd5a788e
+  kind: STRUCT
+  name: "wireless_dev"
+  definition {
+    bytesize: 1216
+    member_id: 0x3f0faf2e
+    member_id: 0x35a5c531
+    member_id: 0x7c00e690
+    member_id: 0x92c34c0c
+    member_id: 0x926bb987
+    member_id: 0x5b8fb9b9
+    member_id: 0x883b39e2
+    member_id: 0x3a75162c
+    member_id: 0x810468bf
+    member_id: 0x02c5d0ed
+    member_id: 0x51372882
+    member_id: 0x8976bc74
+    member_id: 0x307aeb70
+    member_id: 0x85e74497
+    member_id: 0x13290fb8
+    member_id: 0x9954dc9e
+    member_id: 0x39e03c4a
+    member_id: 0xf779586c
+    member_id: 0x9ea573bb
+    member_id: 0xce5289f3
+    member_id: 0x8afeea5c
+    member_id: 0x90ff43bb
+    member_id: 0xba53c7e4
+    member_id: 0xfb2c8dc3
+    member_id: 0x7f0861f0
+    member_id: 0xf93cfdf4
+    member_id: 0xa221fcd9
+    member_id: 0xec7ceeb5
+    member_id: 0x54173395
+    member_id: 0x9b02b0c0
+    member_id: 0x62614b1c
+    member_id: 0xb7706bbf
+    member_id: 0x169d7552
+    member_id: 0xc6fccc00
+    member_id: 0x355770bf
+    member_id: 0xec08e930
+    member_id: 0x34784f8c
+    member_id: 0x90082c4e
+    member_id: 0x2d0819ac
+    member_id: 0x6376059d
+  }
+}
+struct_union {
+  id: 0x1f3c8679
+  kind: STRUCT
+  name: "work_struct"
+  definition {
+    bytesize: 48
+    member_id: 0xff220f59
+    member_id: 0x4d8784dd
+    member_id: 0x21adc830
+    member_id: 0x2d081599
+    member_id: 0x63760e65
+  }
+}
+struct_union {
+  id: 0x83d2ff29
+  kind: STRUCT
+  name: "worker"
+  definition {
+    bytesize: 160
+    member_id: 0x32ae3ded
+    member_id: 0xc8e16af6
+    member_id: 0xc403c8d4
+    member_id: 0xe99549bc
+    member_id: 0xc2e77a46
+    member_id: 0x8596fbf0
+    member_id: 0x9c3a281f
+    member_id: 0xde940d52
+    member_id: 0x0fa6c0d6
+    member_id: 0xc57b7fc6
+    member_id: 0x2d2d0282
+    member_id: 0xcc480a8f
+    member_id: 0x47667eac
+    member_id: 0x87c1a54b
+    member_id: 0x95301324
+    member_id: 0x280cf0ef
+  }
+}
+struct_union {
+  id: 0x7966230c
+  kind: STRUCT
+  name: "worker_pool"
+  definition {
+    bytesize: 800
+    member_id: 0x2d244e18
+    member_id: 0x5161bddd
+    member_id: 0x0f122a9c
+    member_id: 0xcc4805c1
+    member_id: 0x2d2d08fa
+    member_id: 0x658fbfda
+    member_id: 0xd614db17
+    member_id: 0xde98dda9
+    member_id: 0xa99fff7a
+    member_id: 0xffa38ee3
+    member_id: 0x1e0f229f
+    member_id: 0x83e722f1
+    member_id: 0xf420cf89
+    member_id: 0xa708b698
+    member_id: 0xaf4e1f46
+    member_id: 0xfeafe941
+    member_id: 0x5eb183ec
+    member_id: 0x17ec4d9d
+    member_id: 0x4d7b531f
+    member_id: 0x64224310
+    member_id: 0xb71cfdbc
+    member_id: 0x95dacfd4
+  }
+}
+struct_union {
+  id: 0x49e85332
+  kind: STRUCT
+  name: "workqueue_attrs"
+  definition {
+    bytesize: 24
+    member_id: 0x2bb16e29
+    member_id: 0x3dac8e5d
+    member_id: 0x2b67ec41
+  }
+}
+struct_union {
+  id: 0x65a23a84
+  kind: STRUCT
+  name: "workqueue_struct"
+  definition {
+    bytesize: 320
+    member_id: 0x649310ca
+    member_id: 0x7c00e690
+    member_id: 0xad8983a9
+    member_id: 0x9fac6b23
+    member_id: 0xe7124977
+    member_id: 0x83736a55
+    member_id: 0x67a6f683
+    member_id: 0x52ca1c99
+    member_id: 0x91f53b81
+    member_id: 0x91de691b
+    member_id: 0xddde1752
+    member_id: 0x1cde34cc
+    member_id: 0x7ab8a1e7
+    member_id: 0x5c7ec059
+    member_id: 0x95a3d8b7
+    member_id: 0xf3ee0983
+    member_id: 0x0dc0e9a2
+    member_id: 0x95dace52
+    member_id: 0x2d2d06ba
+    member_id: 0xd7b3f93b
+    member_id: 0x35834d78
+  }
+}
+struct_union {
+  id: 0x1b39192a
+  kind: STRUCT
+  name: "wpan_dev"
+  definition {
+    bytesize: 88
+    member_id: 0xb4aebd55
+    member_id: 0x35a06213
+    member_id: 0x7c00e690
+    member_id: 0x92c34c0c
+    member_id: 0x8e3e63cf
+    member_id: 0x0879d38b
+    member_id: 0x926bb937
+    member_id: 0xdee066f7
+    member_id: 0xfd2d9923
+    member_id: 0x173c5725
+    member_id: 0xe4714746
+    member_id: 0x3a026cf2
+    member_id: 0x5138d80c
+    member_id: 0xc58e34e8
+    member_id: 0xc59cb122
+    member_id: 0x55a7860d
+    member_id: 0x8c7accc8
+    member_id: 0x227ae4ba
+    member_id: 0x0c061780
+  }
+}
+struct_union {
+  id: 0x6d45bc40
+  kind: STRUCT
+  name: "wpan_dev_header_ops"
+  definition {
+    bytesize: 8
+    member_id: 0x0faeee43
+  }
+}
+struct_union {
+  id: 0x8cdd1a87
+  kind: STRUCT
+  name: "wpan_phy"
+  definition {
+    bytesize: 1184
+    member_id: 0xd37eda8c
+    member_id: 0x2da18894
+    member_id: 0x65380232
+    member_id: 0x7573b502
+    member_id: 0x87e15787
+    member_id: 0x1dbcaddd
+    member_id: 0x2c2e50db
+    member_id: 0xe4cc2b52
+    member_id: 0xe2f8a213
+    member_id: 0x47f7d600
+    member_id: 0x5897b003
+    member_id: 0x6c4c56c1
+    member_id: 0xce1ac097
+    member_id: 0x3e759bfb
+    member_id: 0x59c30f10
+  }
+}
+struct_union {
+  id: 0x88c59206
+  kind: STRUCT
+  name: "wpan_phy_cca"
+  definition {
+    bytesize: 8
+    member_id: 0x8740e6e7
+    member_id: 0xf6da3e67
+  }
+}
+struct_union {
+  id: 0x8a39a82c
+  kind: STRUCT
+  name: "wpan_phy_supported"
+  definition {
+    bytesize: 184
+    member_id: 0xea21dae2
+    member_id: 0x2ddac3e4
+    member_id: 0x90cf0603
+    member_id: 0x51ec36cd
+    member_id: 0x8cb15aef
+    member_id: 0x5aeef122
+    member_id: 0xea5caa6c
+    member_id: 0xce310541
+    member_id: 0xc6784fdb
+    member_id: 0xfbcf0c3f
+    member_id: 0x75f37536
+    member_id: 0xbe45212d
+    member_id: 0x366a2c9b
+    member_id: 0x5564056a
+    member_id: 0xb513cc70
+    member_id: 0xe88a678e
+    member_id: 0xf3fea671
+  }
+}
+struct_union {
+  id: 0x3f05cac3
+  kind: STRUCT
+  name: "wq_device"
+  definition {
+    bytesize: 920
+    member_id: 0x22faec73
+    member_id: 0xce1ac5a8
+  }
+}
+struct_union {
+  id: 0x3f180c93
+  kind: STRUCT
+  name: "wq_flusher"
+  definition {
+    bytesize: 56
+    member_id: 0x7c00ef52
+    member_id: 0xe71247f4
+    member_id: 0x1d70b65d
+  }
+}
+struct_union {
+  id: 0xaa41279c
+  kind: STRUCT
+  name: "writeback_control"
+  definition {
+    bytesize: 104
+    member_id: 0x7a09cb07
+    member_id: 0x7d5b002a
+    member_id: 0xb9cbb53e
+    member_id: 0x7ac246c7
+    member_id: 0x66d6b0bc
+    member_id: 0x56ed3a56
+    member_id: 0x179a08f7
+    member_id: 0x0b44c445
+    member_id: 0xd0f034ef
+    member_id: 0xfb7076de
+    member_id: 0x9f00d405
+    member_id: 0x7a604c44
+    member_id: 0x583f1229
+    member_id: 0x6aa12130
+    member_id: 0x2899f846
+    member_id: 0x75a5ad4c
+    member_id: 0x3b44f9e6
+    member_id: 0xe9f24aa9
+    member_id: 0x9c6fd219
+    member_id: 0x0c4437a2
+    member_id: 0xde23b95c
+    member_id: 0x7317d4b5
+    member_id: 0xd5069440
+  }
+}
+struct_union {
+  id: 0x9c4af79e
+  kind: STRUCT
+  name: "wusb_dev"
+}
+struct_union {
+  id: 0x9a8b90c4
+  kind: STRUCT
+  name: "ww_acquire_ctx"
+  definition {
+    bytesize: 24
+    member_id: 0x9c3a2307
+    member_id: 0xb6dbbf95
+    member_id: 0xa97696cc
+    member_id: 0x15b05608
+    member_id: 0x60c9ca1a
+  }
+}
+struct_union {
+  id: 0x700bbe07
+  kind: STRUCT
+  name: "ww_class"
+  definition {
+    bytesize: 32
+    member_id: 0xb658e525
+    member_id: 0x44577e67
+    member_id: 0x5750fd71
+    member_id: 0x27ba3fc4
+    member_id: 0xcc5304cf
+    member_id: 0x60457d63
+  }
+}
+struct_union {
+  id: 0x6d51c12f
+  kind: STRUCT
+  name: "ww_mutex"
+  definition {
+    bytesize: 56
+    member_id: 0x857d2de9
+    member_id: 0xecb5c06c
+  }
+}
+struct_union {
+  id: 0xff4bed97
+  kind: STRUCT
+  name: "xa_limit"
+  definition {
+    bytesize: 8
+    member_id: 0x973f0fea
+    member_id: 0xf95984fa
+  }
+}
+struct_union {
+  id: 0xdcc1bea7
+  kind: STRUCT
+  name: "xa_node"
+  definition {
+    bytesize: 576
+    member_id: 0x326c4133
+    member_id: 0x9b415677
+    member_id: 0x6578d02f
+    member_id: 0xb372cc1f
+    member_id: 0x720cd64d
+    member_id: 0xdf8d01f6
+    member_id: 0x31f470a9
+    member_id: 0x4f7adbd4
+    member_id: 0x38c4c69b
+  }
+}
+struct_union {
+  id: 0x80c20070
+  kind: STRUCT
+  name: "xarray"
+  definition {
+    bytesize: 16
+    member_id: 0x310049ee
+    member_id: 0x8c0b8c3b
+    member_id: 0xfbed12c2
+  }
+}
+struct_union {
+  id: 0x1016eff1
+  kind: STRUCT
+  name: "xattr_handler"
+  definition {
+    bytesize: 48
+    member_id: 0x0de57ce8
+    member_id: 0x95646a51
+    member_id: 0x2d0fad4f
+    member_id: 0x7ce736e1
+    member_id: 0x31771510
+    member_id: 0x3df070f6
+  }
+}
+struct_union {
+  id: 0x1a770e0b
+  kind: STRUCT
+  name: "xdp_buff"
+  definition {
+    bytesize: 56
+    member_id: 0xff8a9909
+    member_id: 0x496ed273
+    member_id: 0x8fe034d2
+    member_id: 0x8a9be6c6
+    member_id: 0x94d9a882
+    member_id: 0x427514a8
+    member_id: 0xe418975c
+    member_id: 0x2da18e15
+  }
+}
+struct_union {
+  id: 0x059a1c22
+  kind: STRUCT
+  name: "xdp_buff_xsk"
+  definition {
+    bytesize: 104
+    member_id: 0xeb800b39
+    member_id: 0x811af440
+    member_id: 0xdb894731
+    member_id: 0xde82c205
+    member_id: 0x0c4c221e
+    member_id: 0xea016a3d
+  }
+}
+struct_union {
+  id: 0xca88c599
+  kind: STRUCT
+  name: "xdp_desc"
+  definition {
+    bytesize: 16
+    member_id: 0x24c02d11
+    member_id: 0xb8e3ff08
+    member_id: 0xd2d5bfd0
+  }
+}
+struct_union {
+  id: 0x5d206fcd
+  kind: STRUCT
+  name: "xdp_dev_bulk_queue"
+  definition {
+    bytesize: 176
+    member_id: 0xe930d780
+    member_id: 0x06641e28
+    member_id: 0xce0b4ab5
+    member_id: 0x1e247cc8
+    member_id: 0xa71f0fce
+    member_id: 0x6560d021
+  }
+}
+struct_union {
+  id: 0xcae7eb7d
+  kind: STRUCT
+  name: "xdp_frame"
+  definition {
+    bytesize: 40
+    member_id: 0xff8a9909
+    member_id: 0xb8949c08
+    member_id: 0x3e6ef2b7
+    member_id: 0x939284e5
+    member_id: 0x521ddddc
+    member_id: 0x1e2476c5
+    member_id: 0xe4189665
+    member_id: 0x2da188ac
+  }
+}
+struct_union {
+  id: 0x1c6fe5c8
+  kind: STRUCT
+  name: "xdp_mem_info"
+  definition {
+    bytesize: 8
+    member_id: 0x5c9fdd55
+    member_id: 0xcce62981
+  }
+}
+struct_union {
+  id: 0xf65676a9
+  kind: STRUCT
+  name: "xdp_ring"
+  definition {
+    bytesize: 320
+    member_id: 0x6cfdcda5
+    member_id: 0x663dec80
+    member_id: 0x115d1b31
+    member_id: 0xbaffe3eb
+    member_id: 0x2da18673
+    member_id: 0xfbc33a7a
+  }
+}
+struct_union {
+  id: 0xa9083bc9
+  kind: STRUCT
+  name: "xdp_rxq_info"
+  definition {
+    bytesize: 64
+    member_id: 0xce0b4469
+    member_id: 0x0d8a731d
+    member_id: 0x2f69ec99
+    member_id: 0x521ddddc
+    member_id: 0x79400c28
+    member_id: 0x3c33517f
+  }
+}
+struct_union {
+  id: 0x9b22ed59
+  kind: STRUCT
+  name: "xdp_txq_info"
+  definition {
+    bytesize: 8
+    member_id: 0xce0b4469
+  }
+}
+struct_union {
+  id: 0xb86aaf8f
+  kind: STRUCT
+  name: "xdp_umem"
+  definition {
+    bytesize: 128
+    member_id: 0xc4e96e18
+    member_id: 0xd9ec3ba0
+    member_id: 0x3e36ba7d
+    member_id: 0x8e3e30a0
+    member_id: 0xa90ffb4b
+    member_id: 0x9b1fad55
+    member_id: 0x042a2048
+    member_id: 0x850ad71b
+    member_id: 0x2d41dc75
+    member_id: 0x8aa8a43b
+    member_id: 0x334dea5b
+    member_id: 0xcc480b35
+    member_id: 0x7cb1f9ae
+    member_id: 0xd6e661ce
+  }
+}
+struct_union {
+  id: 0xf2c3e006
+  kind: STRUCT
+  name: "xfrm_address_filter"
+  definition {
+    bytesize: 36
+    member_id: 0xf8038900
+    member_id: 0xcb3eafdb
+    member_id: 0x9ebdabf6
+    member_id: 0xe3c602fa
+    member_id: 0x95152d3f
+  }
+}
+struct_union {
+  id: 0x3de0e4c3
+  kind: STRUCT
+  name: "xfrm_algo"
+  definition {
+    bytesize: 68
+    member_id: 0xd6a9de4e
+    member_id: 0x7206c84a
+    member_id: 0x85ee3d8e
+  }
+}
+struct_union {
+  id: 0xfddfb51c
+  kind: STRUCT
+  name: "xfrm_algo_aead"
+  definition {
+    bytesize: 72
+    member_id: 0xd6a9de4e
+    member_id: 0x7206c84a
+    member_id: 0xc3ae1168
+    member_id: 0x85ee3a23
+  }
+}
+struct_union {
+  id: 0x16e34ae5
+  kind: STRUCT
+  name: "xfrm_algo_auth"
+  definition {
+    bytesize: 72
+    member_id: 0xd6a9de4e
+    member_id: 0x7206c84a
+    member_id: 0x38fafdc0
+    member_id: 0x85ee3a23
+  }
+}
+struct_union {
+  id: 0x8907f312
+  kind: STRUCT
+  name: "xfrm_dev_offload"
+  definition {
+    bytesize: 32
+    member_id: 0xce0b4469
+    member_id: 0x94d42b1b
+    member_id: 0xd27fca30
+    member_id: 0x942737e3
+    member_id: 0x044fbc2f
+  }
+}
+struct_union {
+  id: 0xa3933abf
+  kind: STRUCT
+  name: "xfrm_encap_tmpl"
+  definition {
+    bytesize: 24
+    member_id: 0x2cac3cfa
+    member_id: 0x41b5f511
+    member_id: 0x26cc2252
+    member_id: 0xc0f9acb3
+  }
+}
+struct_union {
+  id: 0xd77e4173
+  kind: STRUCT
+  name: "xfrm_id"
+  definition {
+    bytesize: 24
+    member_id: 0xcb3ea619
+    member_id: 0xd0c9a391
+    member_id: 0x5dd026ed
+  }
+}
+struct_union {
+  id: 0xb427cfca
+  kind: STRUCT
+  name: "xfrm_lifetime_cfg"
+  definition {
+    bytesize: 64
+    member_id: 0xf4fdc11a
+    member_id: 0x22c57758
+    member_id: 0x9a6205f4
+    member_id: 0x195dbd54
+    member_id: 0x44d1ce8f
+    member_id: 0xc5dbda47
+    member_id: 0xd90015a1
+    member_id: 0x30d53623
+  }
+}
+struct_union {
+  id: 0xa2056fd8
+  kind: STRUCT
+  name: "xfrm_lifetime_cur"
+  definition {
+    bytesize: 32
+    member_id: 0x5cc31807
+    member_id: 0x48b11b2b
+    member_id: 0x55a689b2
+    member_id: 0x773697d9
+  }
+}
+struct_union {
+  id: 0x43a4c863
+  kind: STRUCT
+  name: "xfrm_mark"
+  definition {
+    bytesize: 8
+    member_id: 0x28d9847a
+    member_id: 0x8d3e3e67
+  }
+}
+struct_union {
+  id: 0xeeceff4e
+  kind: STRUCT
+  name: "xfrm_md_info"
+  definition {
+    bytesize: 8
+    member_id: 0x2ed9cf02
+    member_id: 0x55d9b205
+  }
+}
+struct_union {
+  id: 0x3f0693b8
+  kind: STRUCT
+  name: "xfrm_mode"
+  definition {
+    bytesize: 3
+    member_id: 0x28923b4e
+    member_id: 0x9e7cff89
+    member_id: 0x2d41d692
+  }
+}
+struct_union {
+  id: 0x9efcdbb6
+  kind: STRUCT
+  name: "xfrm_policy"
+  definition {
+    bytesize: 832
+    member_id: 0xb802c69a
+    member_id: 0x8ed5f00a
+    member_id: 0xcca481cd
+    member_id: 0x2d186b9e
+    member_id: 0xb7dcf93e
+    member_id: 0x266d123e
+    member_id: 0x1dd18615
+    member_id: 0xe46640ff
+    member_id: 0x102d54ac
+    member_id: 0xadf00867
+    member_id: 0x2ed9cfd0
+    member_id: 0x811c0776
+    member_id: 0x104f57f6
+    member_id: 0xa1061599
+    member_id: 0x2f9ca6a8
+    member_id: 0x5e026fd9
+    member_id: 0x71eeea23
+    member_id: 0x201cc54d
+    member_id: 0x5c7f8dfc
+    member_id: 0xc07f66b0
+    member_id: 0x2d41d176
+    member_id: 0x12d4c044
+    member_id: 0x9ec4e718
+    member_id: 0xf18bd7ba
+    member_id: 0x0a6b0d61
+    member_id: 0xa10558ca
+    member_id: 0x95dac715
+  }
+}
+struct_union {
+  id: 0xf8e00636
+  kind: STRUCT
+  name: "xfrm_policy_hash"
+  definition {
+    bytesize: 16
+    member_id: 0xb6f603d8
+    member_id: 0x73ba6f12
+    member_id: 0x2be12600
+    member_id: 0x432405fe
+    member_id: 0xa560d1ea
+    member_id: 0xc0a14274
+  }
+}
+struct_union {
+  id: 0xbd982632
+  kind: STRUCT
+  name: "xfrm_policy_hthresh"
+  definition {
+    bytesize: 64
+    member_id: 0xd6e667b7
+    member_id: 0x2decf104
+    member_id: 0x58753ae2
+    member_id: 0xfadf151e
+    member_id: 0xdaf38040
+    member_id: 0x47423e3e
+  }
+}
+struct_union {
+  id: 0x32b3ae69
+  kind: STRUCT
+  name: "xfrm_policy_queue"
+  definition {
+    bytesize: 88
+    member_id: 0x72254387
+    member_id: 0x477149b3
+    member_id: 0x54f0f7ca
+  }
+}
+struct_union {
+  id: 0x27833f00
+  kind: STRUCT
+  name: "xfrm_policy_walk_entry"
+  definition {
+    bytesize: 24
+    member_id: 0xeebc7141
+    member_id: 0x3b9a1ffe
+  }
+}
+struct_union {
+  id: 0xf7cc861a
+  kind: STRUCT
+  name: "xfrm_replay_state"
+  definition {
+    bytesize: 12
+    member_id: 0x35de41cb
+    member_id: 0xfafa2cce
+    member_id: 0x89a1d093
+  }
+}
+struct_union {
+  id: 0x8bb6504d
+  kind: STRUCT
+  name: "xfrm_replay_state_esn"
+  definition {
+    bytesize: 24
+    member_id: 0x3c6e9048
+    member_id: 0x35de4cf0
+    member_id: 0xfafa2514
+    member_id: 0xffb0f6bf
+    member_id: 0x35e64ea6
+    member_id: 0x0d0b2c51
+    member_id: 0x1a5538db
+  }
+}
+struct_union {
+  id: 0x34459f99
+  kind: STRUCT
+  name: "xfrm_sec_ctx"
+  definition {
+    bytesize: 8
+    member_id: 0xf3af5a76
+    member_id: 0xf0e6c6b3
+    member_id: 0xbee7f62c
+    member_id: 0x8074afd6
+    member_id: 0x9b9919c4
+  }
+}
+struct_union {
+  id: 0x7047fa95
+  kind: STRUCT
+  name: "xfrm_selector"
+  definition {
+    bytesize: 56
+    member_id: 0xcb3ea619
+    member_id: 0xf80380c2
+    member_id: 0x297dd07a
+    member_id: 0xfe8a89a5
+    member_id: 0xcf58db78
+    member_id: 0xb49abc53
+    member_id: 0x9ebdac9a
+    member_id: 0x39eeadf2
+    member_id: 0x08d6a91e
+    member_id: 0x5dd02f54
+    member_id: 0x905686dd
+    member_id: 0x04880323
+  }
+}
+struct_union {
+  id: 0x3e9f0a43
+  kind: STRUCT
+  name: "xfrm_state"
+  definition {
+    bytesize: 768
+    member_id: 0x994b9817
+    member_id: 0x3bb33d1d
+    member_id: 0x0cd10612
+    member_id: 0x78788d38
+    member_id: 0x8e484b4f
+    member_id: 0xb7dcf1de
+    member_id: 0x2d1fec77
+    member_id: 0xccf854a9
+    member_id: 0x33a8d02f
+    member_id: 0x811c0614
+    member_id: 0x2ed9c581
+    member_id: 0x9532517b
+    member_id: 0xe4db921d
+    member_id: 0x1877b647
+    member_id: 0x40d37ee8
+    member_id: 0xa106113c
+    member_id: 0xefb2b8bf
+    member_id: 0xe15cfb15
+    member_id: 0xf74d75aa
+    member_id: 0x59bfd6c9
+    member_id: 0x43a574e3
+    member_id: 0xd6a76a91
+    member_id: 0x0cab4ee0
+    member_id: 0xa70e9634
+    member_id: 0x28991c5a
+    member_id: 0x3890eb97
+    member_id: 0x781c73bd
+    member_id: 0x150686be
+    member_id: 0x558644af
+    member_id: 0x8460074b
+    member_id: 0x9ba94e96
+    member_id: 0xa2bb8da5
+    member_id: 0x12c95611
+    member_id: 0x4b7a046e
+    member_id: 0x8afd4ea7
+    member_id: 0x76c784f7
+    member_id: 0x7af92721
+    member_id: 0x8c467691
+    member_id: 0xb94c512e
+    member_id: 0x2f9ca062
+    member_id: 0x6c1f9ec2
+    member_id: 0x3fb905fd
+    member_id: 0x424e9efd
+    member_id: 0x37a02e60
+    member_id: 0x0367e031
+    member_id: 0x5c6466ef
+    member_id: 0x1df58a40
+    member_id: 0xbb03496e
+    member_id: 0x2350fb28
+    member_id: 0x8f643db8
+    member_id: 0xf18bdcea
+    member_id: 0xff8a95a5
+  }
+}
+struct_union {
+  id: 0xbc1c435b
+  kind: STRUCT
+  name: "xfrm_state_walk"
+  definition {
+    bytesize: 32
+    member_id: 0xeebc7141
+    member_id: 0x72daa9b1
+    member_id: 0x0ca6a6a3
+    member_id: 0x5d4a92a8
+    member_id: 0xfad50a81
+    member_id: 0xa33dbdea
+  }
+}
+struct_union {
+  id: 0x393ffe35
+  kind: STRUCT
+  name: "xfrm_stats"
+  definition {
+    bytesize: 12
+    member_id: 0x0d0b21b1
+    member_id: 0x8471e74a
+    member_id: 0xb37c96b5
+  }
+}
+struct_union {
+  id: 0x80adb538
+  kind: STRUCT
+  name: "xfrm_tmpl"
+  definition {
+    bytesize: 64
+    member_id: 0xccf852d0
+    member_id: 0xf80381c9
+    member_id: 0x4a3707d0
+    member_id: 0xfd8da6b9
+    member_id: 0x87b4487e
+    member_id: 0xeb4f3b1e
+    member_id: 0x723f715c
+    member_id: 0x88ca1362
+    member_id: 0x215128c9
+    member_id: 0x04e0cb81
+    member_id: 0x2196b6c1
+  }
+}
+struct_union {
+  id: 0xf2109de8
+  kind: STRUCT
+  name: "xfrm_type"
+  definition {
+    bytesize: 56
+    member_id: 0x4a965250
+    member_id: 0x5d4a9424
+    member_id: 0x2d41d45d
+    member_id: 0x4a0fb161
+    member_id: 0xa414c5c8
+    member_id: 0x733ba681
+    member_id: 0xdf66ef46
+    member_id: 0x20af3fb1
+  }
+}
+struct_union {
+  id: 0x2c76b380
+  kind: STRUCT
+  name: "xfrm_type_offload"
+  definition {
+    bytesize: 40
+    member_id: 0x4a965250
+    member_id: 0x5d4a9424
+    member_id: 0x28b58ee3
+    member_id: 0xf8d5e00b
+    member_id: 0xb6f6b757
+  }
+}
+struct_union {
+  id: 0x6ecc8b58
+  kind: STRUCT
+  name: "xhci_bus_state"
+  definition {
+    bytesize: 2280
+    member_id: 0xdda1e12c
+    member_id: 0x59eebc63
+    member_id: 0x66b085dc
+    member_id: 0x95d96aae
+    member_id: 0x687fd28c
+    member_id: 0xa4d8edf6
+    member_id: 0x690acff6
+    member_id: 0x0ec75254
+    member_id: 0x51171cc3
+    member_id: 0xa1fa9a24
+  }
+}
+struct_union {
+  id: 0xfd8cc18c
+  kind: STRUCT
+  name: "xhci_bw_info"
+  definition {
+    bytesize: 24
+    member_id: 0x157e411f
+    member_id: 0x66a1f629
+    member_id: 0x984cfbc5
+    member_id: 0xd5da31f8
+    member_id: 0x3accaf97
+    member_id: 0x5c135df8
+  }
+}
+struct_union {
+  id: 0xa75db9a5
+  kind: STRUCT
+  name: "xhci_cap_regs"
+  definition {
+    bytesize: 32
+    member_id: 0x1fcede18
+    member_id: 0x7936ca19
+    member_id: 0x3975a895
+    member_id: 0xfb891001
+    member_id: 0x4fed2e44
+    member_id: 0xf540eeb1
+    member_id: 0xd133014f
+    member_id: 0x6ecb6f14
+  }
+}
+struct_union {
+  id: 0x123cf9e1
+  kind: STRUCT
+  name: "xhci_command"
+  definition {
+    bytesize: 64
+    member_id: 0xc18a018e
+    member_id: 0x20ae2b4e
+    member_id: 0x05d0520e
+    member_id: 0xc4ae0c29
+    member_id: 0x1ef9a3ea
+    member_id: 0xa34283da
+    member_id: 0x2d0814a0
+    member_id: 0x63760ed5
+  }
+}
+struct_union {
+  id: 0xf91eb689
+  kind: STRUCT
+  name: "xhci_container_ctx"
+  definition {
+    bytesize: 24
+    member_id: 0x5c135018
+    member_id: 0xd919319a
+    member_id: 0x5c2e29b4
+    member_id: 0x811afaf5
+  }
+}
+struct_union {
+  id: 0xc66dd4eb
+  kind: STRUCT
+  name: "xhci_device_context_array"
+  definition {
+    bytesize: 2056
+    member_id: 0xab3be6cc
+    member_id: 0x811af935
+  }
+}
+struct_union {
+  id: 0xdde5f938
+  kind: STRUCT
+  name: "xhci_doorbell_array"
+  definition {
+    bytesize: 1024
+    member_id: 0xbd60b76c
+  }
+}
+struct_union {
+  id: 0x0f3e57d3
+  kind: STRUCT
+  name: "xhci_driver_overrides"
+  definition {
+    bytesize: 120
+    member_id: 0x162bfab8
+    member_id: 0x62920d2b
+    member_id: 0x46349d11
+    member_id: 0xcacf13d8
+    member_id: 0x3b5f3914
+    member_id: 0x8372d25d
+    member_id: 0x1a3855a9
+    member_id: 0x313715cf
+    member_id: 0x2bbb15d8
+    member_id: 0x91993cba
+    member_id: 0x2a260680
+    member_id: 0x2d08170f
+    member_id: 0x6376010c
+    member_id: 0xac894aec
+    member_id: 0xe0f63eed
+  }
+}
+struct_union {
+  id: 0x9d27bc05
+  kind: STRUCT
+  name: "xhci_erst"
+  definition {
+    bytesize: 40
+    member_id: 0xbe6c63bb
+    member_id: 0x4e4798fd
+    member_id: 0xc526ab23
+    member_id: 0x3532497a
+    member_id: 0x2d081599
+  }
+}
+struct_union {
+  id: 0x6ea91ece
+  kind: STRUCT
+  name: "xhci_erst_entry"
+  definition {
+    bytesize: 16
+    member_id: 0x9904a359
+    member_id: 0xa3a93201
+    member_id: 0x2f330d28
+  }
+}
+struct_union {
+  id: 0x8b7a3a75
+  kind: STRUCT
+  name: "xhci_event_cmd"
+  definition {
+    bytesize: 16
+    member_id: 0xbab90229
+    member_id: 0x206c8915
+    member_id: 0x2d6327ad
+  }
+}
+struct_union {
+  id: 0xec58de4a
+  kind: STRUCT
+  name: "xhci_generic_trb"
+  definition {
+    bytesize: 16
+    member_id: 0xc3cff2f1
+  }
+}
+struct_union {
+  id: 0x6054a6ab
+  kind: STRUCT
+  name: "xhci_hcd"
+  definition {
+    bytesize: 7440
+    member_id: 0x77fc68d0
+    member_id: 0x3d623bd2
+    member_id: 0x216b98bf
+    member_id: 0xee24b1e6
+    member_id: 0x42749a1d
+    member_id: 0xa5163d35
+    member_id: 0x9e03bc1d
+    member_id: 0x79db449a
+    member_id: 0x3998290b
+    member_id: 0xfb649655
+    member_id: 0x4f00ad96
+    member_id: 0x6e26e18d
+    member_id: 0x2d1fec77
+    member_id: 0x693c74f4
+    member_id: 0xa85d8bdf
+    member_id: 0x26fea5bb
+    member_id: 0xa7af0bc8
+    member_id: 0x879e4341
+    member_id: 0x18de1567
+    member_id: 0x0239d915
+    member_id: 0xd16ba98b
+    member_id: 0x8e44e10f
+    member_id: 0x22e21a38
+    member_id: 0x5bed68c8
+    member_id: 0x45f8d864
+    member_id: 0xc8e82237
+    member_id: 0x5d2b66b4
+    member_id: 0x6295ba38
+    member_id: 0x14599da8
+    member_id: 0x23c9c4e7
+    member_id: 0x5df5b124
+    member_id: 0xa342850c
+    member_id: 0x519f3189
+    member_id: 0x091c4926
+    member_id: 0x66190ac5
+    member_id: 0x3c9a377b
+    member_id: 0x225cba59
+    member_id: 0x0b8d9d58
+    member_id: 0x99e1646a
+    member_id: 0xad898442
+    member_id: 0xb7661625
+    member_id: 0x76ae6d41
+    member_id: 0x8cde7287
+    member_id: 0x704fee1e
+    member_id: 0xc16667bc
+    member_id: 0xd972d98e
+    member_id: 0x8f73e833
+    member_id: 0x9f0f9059
+    member_id: 0x7cb822c2
+    member_id: 0x2a96202a
+    member_id: 0xa7a6cca7
+    member_id: 0x1b5b0712
+    member_id: 0x7f1968d4
+    member_id: 0x4f2cc60f
+    member_id: 0x543df0dd
+    member_id: 0x103aefe8
+    member_id: 0xe71786ec
+    member_id: 0x4ceb995d
+    member_id: 0x8dc4aaad
+    member_id: 0xf7b4b551
+    member_id: 0x67dc25d0
+    member_id: 0x7051faaa
+    member_id: 0xe596689c
+    member_id: 0x9d614f12
+    member_id: 0x72afecec
+    member_id: 0x83e53b5e
+    member_id: 0x06879837
+    member_id: 0xf762467b
+    member_id: 0x26b32295
+    member_id: 0x2d0811d3
+    member_id: 0x63760917
+    member_id: 0xac894244
+    member_id: 0xe0f63158
+    member_id: 0x59c1c6dd
+  }
+}
+struct_union {
+  id: 0xcd18dfb6
+  kind: STRUCT
+  name: "xhci_hub"
+  definition {
+    bytesize: 2312
+    member_id: 0xc47ca9d0
+    member_id: 0x0f014be3
+    member_id: 0x0efdd18e
+    member_id: 0xed4f4708
+    member_id: 0x06fdfa14
+    member_id: 0x9b764ee0
+  }
+}
+struct_union {
+  id: 0xde4a1814
+  kind: STRUCT
+  name: "xhci_interval_bw"
+  definition {
+    bytesize: 40
+    member_id: 0x984cff24
+    member_id: 0x0c78d242
+    member_id: 0x4ceb7fb5
+  }
+}
+struct_union {
+  id: 0x1f58ec61
+  kind: STRUCT
+  name: "xhci_interval_bw_table"
+  definition {
+    bytesize: 664
+    member_id: 0x00435f6b
+    member_id: 0x05eaf784
+    member_id: 0xf56af5c2
+    member_id: 0x2bd2bd8d
+    member_id: 0x9d6d00a1
+  }
+}
+struct_union {
+  id: 0x9152b3e3
+  kind: STRUCT
+  name: "xhci_intr_reg"
+  definition {
+    bytesize: 32
+    member_id: 0x740ba1b4
+    member_id: 0xc38091e9
+    member_id: 0x357c6a44
+    member_id: 0x2f330d28
+    member_id: 0x1e8bfc49
+    member_id: 0x500e5f2d
+  }
+}
+struct_union {
+  id: 0xdf92cbe9
+  kind: STRUCT
+  name: "xhci_link_trb"
+  definition {
+    bytesize: 16
+    member_id: 0xeb0f7ea7
+    member_id: 0x3cab4f9d
+    member_id: 0xfc37c610
+  }
+}
+struct_union {
+  id: 0x0a7e1f0e
+  kind: STRUCT
+  name: "xhci_op_regs"
+  definition {
+    bytesize: 5104
+    member_id: 0x9145d6c6
+    member_id: 0x206c80cf
+    member_id: 0x228e9b1d
+    member_id: 0xcbe1117b
+    member_id: 0x082361a0
+    member_id: 0x2d324066
+    member_id: 0x239084c5
+    member_id: 0x4ee725c0
+    member_id: 0x0fa6f6a1
+    member_id: 0x67823edd
+    member_id: 0x84bed3e5
+    member_id: 0xc025a63a
+    member_id: 0x28a3273c
+    member_id: 0xe4654dda
+    member_id: 0xc6bfbfdb
+    member_id: 0x0df50023
+  }
+}
+struct_union {
+  id: 0xce21bf14
+  kind: STRUCT
+  name: "xhci_port"
+  definition {
+    bytesize: 40
+    member_id: 0x2425a5c3
+    member_id: 0x38186deb
+    member_id: 0xcb5bf6cb
+    member_id: 0x92831ce6
+    member_id: 0xeea08776
+    member_id: 0x24663046
+  }
+}
+struct_union {
+  id: 0x91af36cd
+  kind: STRUCT
+  name: "xhci_port_cap"
+  definition {
+    bytesize: 16
+    member_id: 0xe1903f95
+    member_id: 0xdbe9d915
+    member_id: 0x19bd3082
+    member_id: 0x06fdf947
+    member_id: 0x9b764d84
+  }
+}
+struct_union {
+  id: 0xac8bad4e
+  kind: STRUCT
+  name: "xhci_ring"
+  definition {
+    bytesize: 120
+    member_id: 0x03220741
+    member_id: 0x0b5e9082
+    member_id: 0xb70fdbee
+    member_id: 0x7e8323e0
+    member_id: 0x31dab8e1
+    member_id: 0x02f59ce0
+    member_id: 0x6f1e609b
+    member_id: 0x99763653
+    member_id: 0x74f72dc4
+    member_id: 0xab5509da
+    member_id: 0x9b52a700
+    member_id: 0x730a3758
+    member_id: 0x932cb097
+    member_id: 0x5c04bfec
+    member_id: 0x48e40d1a
+    member_id: 0xc9bb1edd
+    member_id: 0x2d081688
+    member_id: 0x63760304
+  }
+}
+struct_union {
+  id: 0x708fc0fe
+  kind: STRUCT
+  name: "xhci_root_port_bw_info"
+  definition {
+    bytesize: 688
+    member_id: 0xd330ca27
+    member_id: 0x35be4e1b
+    member_id: 0x39688293
+  }
+}
+struct_union {
+  id: 0x2ac91bcb
+  kind: STRUCT
+  name: "xhci_run_regs"
+  definition {
+    bytesize: 4128
+    member_id: 0xfe301115
+    member_id: 0x2f5287e4
+    member_id: 0x9e27c3a3
+  }
+}
+struct_union {
+  id: 0x52ee93b7
+  kind: STRUCT
+  name: "xhci_scratchpad"
+  definition {
+    bytesize: 24
+    member_id: 0xa3036544
+    member_id: 0xa9831634
+    member_id: 0xb9383f7b
+  }
+}
+struct_union {
+  id: 0xd19588be
+  kind: STRUCT
+  name: "xhci_segment"
+  definition {
+    bytesize: 56
+    member_id: 0xde7ea677
+    member_id: 0x11cdf165
+    member_id: 0x811afaf5
+    member_id: 0x118127e8
+    member_id: 0x6cde3128
+    member_id: 0x54bd2d94
+    member_id: 0x0914226d
+    member_id: 0x2d0814a0
+  }
+}
+struct_union {
+  id: 0x051dcd31
+  kind: STRUCT
+  name: "xhci_stream_ctx"
+  definition {
+    bytesize: 16
+    member_id: 0xd9ab38bd
+    member_id: 0xd40deb47
+  }
+}
+struct_union {
+  id: 0x3feba660
+  kind: STRUCT
+  name: "xhci_stream_info"
+  definition {
+    bytesize: 64
+    member_id: 0xc684ecfd
+    member_id: 0x975230ad
+    member_id: 0xb61b0e79
+    member_id: 0x43bbd7be
+    member_id: 0xd95e2f00
+    member_id: 0xc911730d
+    member_id: 0x673d40d0
+  }
+}
+struct_union {
+  id: 0x4901181a
+  kind: STRUCT
+  name: "xhci_transfer_event"
+  definition {
+    bytesize: 16
+    member_id: 0x33a6ff3e
+    member_id: 0x45e1dfe1
+    member_id: 0x2d6327ad
+  }
+}
+struct_union {
+  id: 0xed289c91
+  kind: UNION
+  name: "xhci_trb"
+  definition {
+    bytesize: 16
+    member_id: 0x55610d26
+    member_id: 0xf54fc8f5
+    member_id: 0x7e805d45
+    member_id: 0x42d6db26
+  }
+}
+struct_union {
+  id: 0x347106bd
+  kind: STRUCT
+  name: "xhci_tt_bw_info"
+  definition {
+    bytesize: 696
+    member_id: 0x2317225d
+    member_id: 0x05d0524f
+    member_id: 0x77072bc2
+    member_id: 0x39688293
+    member_id: 0xa72ba76c
+  }
+}
+struct_union {
+  id: 0xbafe14c8
+  kind: STRUCT
+  name: "xhci_virt_device"
+  definition {
+    bytesize: 4544
+    member_id: 0x05d05b8d
+    member_id: 0xbb0eb744
+    member_id: 0x5d3ad02c
+    member_id: 0xc18a0947
+    member_id: 0x4571d9d3
+    member_id: 0xe0a42122
+    member_id: 0xcca17401
+    member_id: 0x397a979d
+    member_id: 0x8909eca8
+    member_id: 0x2d5bf9c0
+    member_id: 0x94fac264
+    member_id: 0x9b75ff8f
+  }
+}
+struct_union {
+  id: 0x58757be8
+  kind: STRUCT
+  name: "xhci_virt_ep"
+  definition {
+    bytesize: 144
+    member_id: 0xebd4d055
+    member_id: 0x76c6e366
+    member_id: 0xd4bfee3f
+    member_id: 0x4f606ed6
+    member_id: 0x0a536b98
+    member_id: 0xa7143d34
+    member_id: 0xcc45743c
+    member_id: 0x0108dfc8
+    member_id: 0x4f5aa765
+    member_id: 0xcb9637b2
+    member_id: 0xb78add22
+    member_id: 0x62c101a0
+    member_id: 0xc6b63682
+    member_id: 0x07daf4d5
+    member_id: 0x19f52f20
+    member_id: 0x0482303b
+  }
+}
+struct_union {
+  id: 0x53aa28c1
+  kind: STRUCT
+  name: "xol_area"
+  definition {
+    bytesize: 96
+    member_id: 0x22ea85f7
+    member_id: 0x1d177ebe
+    member_id: 0x8941b706
+    member_id: 0x160e437d
+    member_id: 0x782789f5
+    member_id: 0x500c4e8c
+  }
+}
+struct_union {
+  id: 0xab1ec04a
+  kind: STRUCT
+  name: "xps_dev_maps"
+  definition {
+    bytesize: 24
+    member_id: 0x95dac977
+    member_id: 0x5a12bce4
+    member_id: 0x04a16aa3
+    member_id: 0xda81cdaa
+  }
+}
+struct_union {
+  id: 0xf62d19c5
+  kind: STRUCT
+  name: "xps_map"
+  definition {
+    bytesize: 24
+    member_id: 0xb8405030
+    member_id: 0x987014f9
+    member_id: 0x95dacd96
+    member_id: 0xd7211e97
+  }
+}
+struct_union {
+  id: 0x225b7cde
+  kind: STRUCT
+  name: "xsk_buff_pool"
+  definition {
+    bytesize: 256
+    member_id: 0xce3bbab3
+    member_id: 0x92c34846
+    member_id: 0x614c5693
+    member_id: 0x006dd85a
+    member_id: 0x850ad405
+    member_id: 0x95963072
+    member_id: 0xd6e66625
+    member_id: 0xe04b527b
+    member_id: 0xba4fbdbe
+    member_id: 0xc1ddfc24
+    member_id: 0x1a4686d6
+    member_id: 0x1d22b02d
+    member_id: 0x69583779
+    member_id: 0xdce81c97
+    member_id: 0x9c145a0e
+    member_id: 0x0c0ce1e9
+    member_id: 0x0115fbe0
+    member_id: 0xba8b2af7
+    member_id: 0x2781097d
+    member_id: 0xb72778bf
+    member_id: 0x3e36b9b9
+    member_id: 0x8e3e34f8
+    member_id: 0x8c9871b9
+    member_id: 0x609d842f
+    member_id: 0x5f658a34
+    member_id: 0x959b553f
+    member_id: 0xbd3a00f7
+    member_id: 0x991d5d91
+    member_id: 0xc4e9693d
+    member_id: 0x13ba197e
+    member_id: 0x121ab4e2
+  }
+}
+struct_union {
+  id: 0x47928e8c
+  kind: STRUCT
+  name: "xsk_queue"
+  definition {
+    bytesize: 40
+    member_id: 0x66a87345
+    member_id: 0xc1045082
+    member_id: 0xd450a229
+    member_id: 0x77864469
+    member_id: 0xd4a95949
+    member_id: 0xdc38c645
+    member_id: 0x24d20612
+  }
+}
+struct_union {
+  id: 0x01c06930
+  kind: STRUCT
+  name: "z_stream_s"
+  definition {
+    bytesize: 96
+    member_id: 0x84cfeecc
+    member_id: 0xa5199b09
+    member_id: 0x1d292d06
+    member_id: 0xfbb31069
+    member_id: 0x0f7c0a90
+    member_id: 0xd48835a2
+    member_id: 0xe204b046
+    member_id: 0x72f5f174
+    member_id: 0xc57cac0c
+    member_id: 0x815eb576
+    member_id: 0x30f9aa2f
+    member_id: 0xd45c0d5e
+  }
+}
+struct_union {
+  id: 0x03cc00a2
+  kind: STRUCT
+  name: "zone"
+  definition {
+    bytesize: 1600
+    member_id: 0x07981254
+    member_id: 0x9b453c32
+    member_id: 0x0a3ca227
+    member_id: 0x8b466b27
+    member_id: 0xde15f2ac
+    member_id: 0x35e57e51
+    member_id: 0xf050196f
+    member_id: 0x0604bd95
+    member_id: 0xf098512e
+    member_id: 0x22a28faf
+    member_id: 0xe083d61b
+    member_id: 0x80fefd42
+    member_id: 0xa43d0489
+    member_id: 0x67e4f214
+    member_id: 0xd226c8d1
+    member_id: 0x0de57a95
+    member_id: 0xc63cf6c9
+    member_id: 0xfb3e84c0
+    member_id: 0xd568c3b9
+    member_id: 0xcb45579f
+    member_id: 0xfbc061e4
+    member_id: 0x2d5bf586
+    member_id: 0x2d1fe57c
+    member_id: 0x1aacf6ee
+    member_id: 0x2bcae2ba
+    member_id: 0xd4a37378
+    member_id: 0xae770587
+    member_id: 0x27c7d3f8
+    member_id: 0x1f4a44c0
+    member_id: 0xf27c3a65
+    member_id: 0x052ff008
+    member_id: 0xc3bfdaae
+    member_id: 0x1be1661c
+    member_id: 0x52eba014
+    member_id: 0x1e2ef2aa
+    member_id: 0xca969630
+    member_id: 0xfbcc07d1
+    member_id: 0x2d081ab8
+    member_id: 0x63760a11
+    member_id: 0xac8949d1
+    member_id: 0xe0f631f1
+  }
+}
+struct_union {
+  id: 0x50573700
+  kind: STRUCT
+  name: "zonelist"
+  definition {
+    bytesize: 80
+    member_id: 0xf521d76a
+  }
+}
+struct_union {
+  id: 0xeff80337
+  kind: STRUCT
+  name: "zoneref"
+  definition {
+    bytesize: 16
+    member_id: 0xc2e6a99f
+    member_id: 0x7ea98be0
+  }
+}
+struct_union {
+  id: 0xefdda716
+  kind: STRUCT
+  name: "zs_pool"
+  definition {
+    bytesize: 2200
+    member_id: 0x0de57ce8
+    member_id: 0x5ce28f0d
+    member_id: 0xaff7e626
+    member_id: 0x309714e1
+    member_id: 0xbeaf0794
+    member_id: 0xb9089225
+    member_id: 0x868caa9e
+    member_id: 0x8a67a9e5
+    member_id: 0xdb33fcdf
+  }
+}
+struct_union {
+  id: 0x7df29f8f
+  kind: STRUCT
+  name: "zs_pool_stats"
+  definition {
+    bytesize: 8
+    member_id: 0x538add2b
+  }
+}
+struct_union {
+  id: 0x6b61371d
+  kind: STRUCT
+  name: "zs_size_stat"
+  definition {
+    bytesize: 48
+    member_id: 0x739d7255
+  }
+}
+enumeration {
+  id: 0x4f34306c
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "NETREG_UNINITIALIZED"
+    }
+    enumerator {
+      name: "NETREG_REGISTERED"
+      value: 1
+    }
+    enumerator {
+      name: "NETREG_UNREGISTERING"
+      value: 2
+    }
+    enumerator {
+      name: "NETREG_UNREGISTERED"
+      value: 3
+    }
+    enumerator {
+      name: "NETREG_RELEASED"
+      value: 4
+    }
+    enumerator {
+      name: "NETREG_DUMMY"
+      value: 5
+    }
+  }
+}
+enumeration {
+  id: 0x51b6e72e
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DEV_PATH_BR_VLAN_KEEP"
+    }
+    enumerator {
+      name: "DEV_PATH_BR_VLAN_TAG"
+      value: 1
+    }
+    enumerator {
+      name: "DEV_PATH_BR_VLAN_UNTAG"
+      value: 2
+    }
+    enumerator {
+      name: "DEV_PATH_BR_VLAN_UNTAG_HW"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x531194dd
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "MDIOBUS_ALLOCATED"
+      value: 1
+    }
+    enumerator {
+      name: "MDIOBUS_REGISTERED"
+      value: 2
+    }
+    enumerator {
+      name: "MDIOBUS_UNREGISTERED"
+      value: 3
+    }
+    enumerator {
+      name: "MDIOBUS_RELEASED"
+      value: 4
+    }
+  }
+}
+enumeration {
+  id: 0x53d434a6
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "SS_FREE"
+    }
+    enumerator {
+      name: "SS_UNCONNECTED"
+      value: 1
+    }
+    enumerator {
+      name: "SS_CONNECTING"
+      value: 2
+    }
+    enumerator {
+      name: "SS_CONNECTED"
+      value: 3
+    }
+    enumerator {
+      name: "SS_DISCONNECTING"
+      value: 4
+    }
+  }
+}
+enumeration {
+  id: 0x53ea9d01
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "PTP_CLK_REQ_EXTTS"
+    }
+    enumerator {
+      name: "PTP_CLK_REQ_PEROUT"
+      value: 1
+    }
+    enumerator {
+      name: "PTP_CLK_REQ_PPS"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x5eab5fef
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "MDIOBUS_NO_CAP"
+    }
+    enumerator {
+      name: "MDIOBUS_C22"
+      value: 1
+    }
+    enumerator {
+      name: "MDIOBUS_C45"
+      value: 2
+    }
+    enumerator {
+      name: "MDIOBUS_C22_C45"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x5fc6ae59
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "RTNL_LINK_INITIALIZED"
+    }
+    enumerator {
+      name: "RTNL_LINK_INITIALIZING"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0x6e2e34cb
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "INTERLEAVE_SCAN_NONE"
+    }
+    enumerator {
+      name: "INTERLEAVE_SCAN_NO_FILTER"
+      value: 1
+    }
+    enumerator {
+      name: "INTERLEAVE_SCAN_ALLOWLIST"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x6ea7aa6c
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DISCOVERY_STOPPED"
+    }
+    enumerator {
+      name: "DISCOVERY_STARTING"
+      value: 1
+    }
+    enumerator {
+      name: "DISCOVERY_FINDING"
+      value: 2
+    }
+    enumerator {
+      name: "DISCOVERY_RESOLVING"
+      value: 3
+    }
+    enumerator {
+      name: "DISCOVERY_STOPPING"
+      value: 4
+    }
+  }
+}
+enumeration {
+  id: 0x6f281063
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "ttm_bo_map_iomap"
+      value: 129
+    }
+    enumerator {
+      name: "ttm_bo_map_vmap"
+      value: 2
+    }
+    enumerator {
+      name: "ttm_bo_map_kmap"
+      value: 3
+    }
+    enumerator {
+      name: "ttm_bo_map_premapped"
+      value: 132
+    }
+  }
+}
+enumeration {
+  id: 0x753f7205
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "AUDIT_CTX_UNUSED"
+    }
+    enumerator {
+      name: "AUDIT_CTX_SYSCALL"
+      value: 1
+    }
+    enumerator {
+      name: "AUDIT_CTX_URING"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x772e934b
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "PHY_INTERFACE_MODE_NA"
+    }
+    enumerator {
+      name: "PHY_INTERFACE_MODE_INTERNAL"
+      value: 1
+    }
+    enumerator {
+      name: "PHY_INTERFACE_MODE_MII"
+      value: 2
+    }
+    enumerator {
+      name: "PHY_INTERFACE_MODE_GMII"
+      value: 3
+    }
+    enumerator {
+      name: "PHY_INTERFACE_MODE_SGMII"
+      value: 4
+    }
+    enumerator {
+      name: "PHY_INTERFACE_MODE_TBI"
+      value: 5
+    }
+    enumerator {
+      name: "PHY_INTERFACE_MODE_REVMII"
+      value: 6
+    }
+    enumerator {
+      name: "PHY_INTERFACE_MODE_RMII"
+      value: 7
+    }
+    enumerator {
+      name: "PHY_INTERFACE_MODE_REVRMII"
+      value: 8
+    }
+    enumerator {
+      name: "PHY_INTERFACE_MODE_RGMII"
+      value: 9
+    }
+    enumerator {
+      name: "PHY_INTERFACE_MODE_RGMII_ID"
+      value: 10
+    }
+    enumerator {
+      name: "PHY_INTERFACE_MODE_RGMII_RXID"
+      value: 11
+    }
+    enumerator {
+      name: "PHY_INTERFACE_MODE_RGMII_TXID"
+      value: 12
+    }
+    enumerator {
+      name: "PHY_INTERFACE_MODE_RTBI"
+      value: 13
+    }
+    enumerator {
+      name: "PHY_INTERFACE_MODE_SMII"
+      value: 14
+    }
+    enumerator {
+      name: "PHY_INTERFACE_MODE_XGMII"
+      value: 15
+    }
+    enumerator {
+      name: "PHY_INTERFACE_MODE_XLGMII"
+      value: 16
+    }
+    enumerator {
+      name: "PHY_INTERFACE_MODE_MOCA"
+      value: 17
+    }
+    enumerator {
+      name: "PHY_INTERFACE_MODE_QSGMII"
+      value: 18
+    }
+    enumerator {
+      name: "PHY_INTERFACE_MODE_TRGMII"
+      value: 19
+    }
+    enumerator {
+      name: "PHY_INTERFACE_MODE_100BASEX"
+      value: 20
+    }
+    enumerator {
+      name: "PHY_INTERFACE_MODE_1000BASEX"
+      value: 21
+    }
+    enumerator {
+      name: "PHY_INTERFACE_MODE_2500BASEX"
+      value: 22
+    }
+    enumerator {
+      name: "PHY_INTERFACE_MODE_5GBASER"
+      value: 23
+    }
+    enumerator {
+      name: "PHY_INTERFACE_MODE_RXAUI"
+      value: 24
+    }
+    enumerator {
+      name: "PHY_INTERFACE_MODE_XAUI"
+      value: 25
+    }
+    enumerator {
+      name: "PHY_INTERFACE_MODE_10GBASER"
+      value: 26
+    }
+    enumerator {
+      name: "PHY_INTERFACE_MODE_25GBASER"
+      value: 27
+    }
+    enumerator {
+      name: "PHY_INTERFACE_MODE_USXGMII"
+      value: 28
+    }
+    enumerator {
+      name: "PHY_INTERFACE_MODE_10GKR"
+      value: 29
+    }
+    enumerator {
+      name: "PHY_INTERFACE_MODE_QUSGMII"
+      value: 30
+    }
+    enumerator {
+      name: "PHY_INTERFACE_MODE_1000BASEKX"
+      value: 31
+    }
+    enumerator {
+      name: "PHY_INTERFACE_MODE_MAX"
+      value: 32
+    }
+  }
+}
+enumeration {
+  id: 0x7e388552
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "FP_STATE_FREE"
+    }
+    enumerator {
+      name: "FP_STATE_HOST_OWNED"
+      value: 1
+    }
+    enumerator {
+      name: "FP_STATE_GUEST_OWNED"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x09f65231
+  name: "OID"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "OID_id_dsa_with_sha1"
+    }
+    enumerator {
+      name: "OID_id_dsa"
+      value: 1
+    }
+    enumerator {
+      name: "OID_id_ecPublicKey"
+      value: 2
+    }
+    enumerator {
+      name: "OID_id_prime192v1"
+      value: 3
+    }
+    enumerator {
+      name: "OID_id_prime256v1"
+      value: 4
+    }
+    enumerator {
+      name: "OID_id_ecdsa_with_sha1"
+      value: 5
+    }
+    enumerator {
+      name: "OID_id_ecdsa_with_sha224"
+      value: 6
+    }
+    enumerator {
+      name: "OID_id_ecdsa_with_sha256"
+      value: 7
+    }
+    enumerator {
+      name: "OID_id_ecdsa_with_sha384"
+      value: 8
+    }
+    enumerator {
+      name: "OID_id_ecdsa_with_sha512"
+      value: 9
+    }
+    enumerator {
+      name: "OID_rsaEncryption"
+      value: 10
+    }
+    enumerator {
+      name: "OID_md2WithRSAEncryption"
+      value: 11
+    }
+    enumerator {
+      name: "OID_md3WithRSAEncryption"
+      value: 12
+    }
+    enumerator {
+      name: "OID_md4WithRSAEncryption"
+      value: 13
+    }
+    enumerator {
+      name: "OID_sha1WithRSAEncryption"
+      value: 14
+    }
+    enumerator {
+      name: "OID_sha256WithRSAEncryption"
+      value: 15
+    }
+    enumerator {
+      name: "OID_sha384WithRSAEncryption"
+      value: 16
+    }
+    enumerator {
+      name: "OID_sha512WithRSAEncryption"
+      value: 17
+    }
+    enumerator {
+      name: "OID_sha224WithRSAEncryption"
+      value: 18
+    }
+    enumerator {
+      name: "OID_data"
+      value: 19
+    }
+    enumerator {
+      name: "OID_signed_data"
+      value: 20
+    }
+    enumerator {
+      name: "OID_email_address"
+      value: 21
+    }
+    enumerator {
+      name: "OID_contentType"
+      value: 22
+    }
+    enumerator {
+      name: "OID_messageDigest"
+      value: 23
+    }
+    enumerator {
+      name: "OID_signingTime"
+      value: 24
+    }
+    enumerator {
+      name: "OID_smimeCapabilites"
+      value: 25
+    }
+    enumerator {
+      name: "OID_smimeAuthenticatedAttrs"
+      value: 26
+    }
+    enumerator {
+      name: "OID_md2"
+      value: 27
+    }
+    enumerator {
+      name: "OID_md4"
+      value: 28
+    }
+    enumerator {
+      name: "OID_md5"
+      value: 29
+    }
+    enumerator {
+      name: "OID_mskrb5"
+      value: 30
+    }
+    enumerator {
+      name: "OID_krb5"
+      value: 31
+    }
+    enumerator {
+      name: "OID_krb5u2u"
+      value: 32
+    }
+    enumerator {
+      name: "OID_msIndirectData"
+      value: 33
+    }
+    enumerator {
+      name: "OID_msStatementType"
+      value: 34
+    }
+    enumerator {
+      name: "OID_msSpOpusInfo"
+      value: 35
+    }
+    enumerator {
+      name: "OID_msPeImageDataObjId"
+      value: 36
+    }
+    enumerator {
+      name: "OID_msIndividualSPKeyPurpose"
+      value: 37
+    }
+    enumerator {
+      name: "OID_msOutlookExpress"
+      value: 38
+    }
+    enumerator {
+      name: "OID_ntlmssp"
+      value: 39
+    }
+    enumerator {
+      name: "OID_spnego"
+      value: 40
+    }
+    enumerator {
+      name: "OID_IAKerb"
+      value: 41
+    }
+    enumerator {
+      name: "OID_PKU2U"
+      value: 42
+    }
+    enumerator {
+      name: "OID_Scram"
+      value: 43
+    }
+    enumerator {
+      name: "OID_certAuthInfoAccess"
+      value: 44
+    }
+    enumerator {
+      name: "OID_sha1"
+      value: 45
+    }
+    enumerator {
+      name: "OID_id_ansip384r1"
+      value: 46
+    }
+    enumerator {
+      name: "OID_sha256"
+      value: 47
+    }
+    enumerator {
+      name: "OID_sha384"
+      value: 48
+    }
+    enumerator {
+      name: "OID_sha512"
+      value: 49
+    }
+    enumerator {
+      name: "OID_sha224"
+      value: 50
+    }
+    enumerator {
+      name: "OID_commonName"
+      value: 51
+    }
+    enumerator {
+      name: "OID_surname"
+      value: 52
+    }
+    enumerator {
+      name: "OID_countryName"
+      value: 53
+    }
+    enumerator {
+      name: "OID_locality"
+      value: 54
+    }
+    enumerator {
+      name: "OID_stateOrProvinceName"
+      value: 55
+    }
+    enumerator {
+      name: "OID_organizationName"
+      value: 56
+    }
+    enumerator {
+      name: "OID_organizationUnitName"
+      value: 57
+    }
+    enumerator {
+      name: "OID_title"
+      value: 58
+    }
+    enumerator {
+      name: "OID_description"
+      value: 59
+    }
+    enumerator {
+      name: "OID_name"
+      value: 60
+    }
+    enumerator {
+      name: "OID_givenName"
+      value: 61
+    }
+    enumerator {
+      name: "OID_initials"
+      value: 62
+    }
+    enumerator {
+      name: "OID_generationalQualifier"
+      value: 63
+    }
+    enumerator {
+      name: "OID_subjectKeyIdentifier"
+      value: 64
+    }
+    enumerator {
+      name: "OID_keyUsage"
+      value: 65
+    }
+    enumerator {
+      name: "OID_subjectAltName"
+      value: 66
+    }
+    enumerator {
+      name: "OID_issuerAltName"
+      value: 67
+    }
+    enumerator {
+      name: "OID_basicConstraints"
+      value: 68
+    }
+    enumerator {
+      name: "OID_crlDistributionPoints"
+      value: 69
+    }
+    enumerator {
+      name: "OID_certPolicies"
+      value: 70
+    }
+    enumerator {
+      name: "OID_authorityKeyIdentifier"
+      value: 71
+    }
+    enumerator {
+      name: "OID_extKeyUsage"
+      value: 72
+    }
+    enumerator {
+      name: "OID_NetlogonMechanism"
+      value: 73
+    }
+    enumerator {
+      name: "OID_appleLocalKdcSupported"
+      value: 74
+    }
+    enumerator {
+      name: "OID_gostCPSignA"
+      value: 75
+    }
+    enumerator {
+      name: "OID_gostCPSignB"
+      value: 76
+    }
+    enumerator {
+      name: "OID_gostCPSignC"
+      value: 77
+    }
+    enumerator {
+      name: "OID_gost2012PKey256"
+      value: 78
+    }
+    enumerator {
+      name: "OID_gost2012PKey512"
+      value: 79
+    }
+    enumerator {
+      name: "OID_gost2012Digest256"
+      value: 80
+    }
+    enumerator {
+      name: "OID_gost2012Digest512"
+      value: 81
+    }
+    enumerator {
+      name: "OID_gost2012Signature256"
+      value: 82
+    }
+    enumerator {
+      name: "OID_gost2012Signature512"
+      value: 83
+    }
+    enumerator {
+      name: "OID_gostTC26Sign256A"
+      value: 84
+    }
+    enumerator {
+      name: "OID_gostTC26Sign256B"
+      value: 85
+    }
+    enumerator {
+      name: "OID_gostTC26Sign256C"
+      value: 86
+    }
+    enumerator {
+      name: "OID_gostTC26Sign256D"
+      value: 87
+    }
+    enumerator {
+      name: "OID_gostTC26Sign512A"
+      value: 88
+    }
+    enumerator {
+      name: "OID_gostTC26Sign512B"
+      value: 89
+    }
+    enumerator {
+      name: "OID_gostTC26Sign512C"
+      value: 90
+    }
+    enumerator {
+      name: "OID_sm2"
+      value: 91
+    }
+    enumerator {
+      name: "OID_sm3"
+      value: 92
+    }
+    enumerator {
+      name: "OID_SM2_with_SM3"
+      value: 93
+    }
+    enumerator {
+      name: "OID_sm3WithRSAEncryption"
+      value: 94
+    }
+    enumerator {
+      name: "OID_TPMLoadableKey"
+      value: 95
+    }
+    enumerator {
+      name: "OID_TPMImportableKey"
+      value: 96
+    }
+    enumerator {
+      name: "OID_TPMSealedData"
+      value: 97
+    }
+    enumerator {
+      name: "OID__NR"
+      value: 98
+    }
+  }
+}
+enumeration {
+  id: 0xf1eeb05c
+  name: "alarmtimer_restart"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "ALARMTIMER_NORESTART"
+    }
+    enumerator {
+      name: "ALARMTIMER_RESTART"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0x760e8adc
+  name: "alarmtimer_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "ALARM_REALTIME"
+    }
+    enumerator {
+      name: "ALARM_BOOTTIME"
+      value: 1
+    }
+    enumerator {
+      name: "ALARM_NUMTYPE"
+      value: 2
+    }
+    enumerator {
+      name: "ALARM_REALTIME_FREEZER"
+      value: 3
+    }
+    enumerator {
+      name: "ALARM_BOOTTIME_FREEZER"
+      value: 4
+    }
+  }
+}
+enumeration {
+  id: 0x635e163e
+  name: "arch_timer_erratum_match_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "ate_match_dt"
+    }
+    enumerator {
+      name: "ate_match_local_cap_id"
+      value: 1
+    }
+    enumerator {
+      name: "ate_match_acpi_oem_info"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x7b6559c5
+  name: "arm_smccc_conduit"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "SMCCC_CONDUIT_NONE"
+    }
+    enumerator {
+      name: "SMCCC_CONDUIT_SMC"
+      value: 1
+    }
+    enumerator {
+      name: "SMCCC_CONDUIT_HVC"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x9db1a2c2
+  name: "attr_idn"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "QUERY_ATTR_IDN_BOOT_LU_EN"
+    }
+    enumerator {
+      name: "QUERY_ATTR_IDN_MAX_HPB_SINGLE_CMD"
+      value: 1
+    }
+    enumerator {
+      name: "QUERY_ATTR_IDN_POWER_MODE"
+      value: 2
+    }
+    enumerator {
+      name: "QUERY_ATTR_IDN_ACTIVE_ICC_LVL"
+      value: 3
+    }
+    enumerator {
+      name: "QUERY_ATTR_IDN_OOO_DATA_EN"
+      value: 4
+    }
+    enumerator {
+      name: "QUERY_ATTR_IDN_BKOPS_STATUS"
+      value: 5
+    }
+    enumerator {
+      name: "QUERY_ATTR_IDN_PURGE_STATUS"
+      value: 6
+    }
+    enumerator {
+      name: "QUERY_ATTR_IDN_MAX_DATA_IN"
+      value: 7
+    }
+    enumerator {
+      name: "QUERY_ATTR_IDN_MAX_DATA_OUT"
+      value: 8
+    }
+    enumerator {
+      name: "QUERY_ATTR_IDN_DYN_CAP_NEEDED"
+      value: 9
+    }
+    enumerator {
+      name: "QUERY_ATTR_IDN_REF_CLK_FREQ"
+      value: 10
+    }
+    enumerator {
+      name: "QUERY_ATTR_IDN_CONF_DESC_LOCK"
+      value: 11
+    }
+    enumerator {
+      name: "QUERY_ATTR_IDN_MAX_NUM_OF_RTT"
+      value: 12
+    }
+    enumerator {
+      name: "QUERY_ATTR_IDN_EE_CONTROL"
+      value: 13
+    }
+    enumerator {
+      name: "QUERY_ATTR_IDN_EE_STATUS"
+      value: 14
+    }
+    enumerator {
+      name: "QUERY_ATTR_IDN_SECONDS_PASSED"
+      value: 15
+    }
+    enumerator {
+      name: "QUERY_ATTR_IDN_CNTX_CONF"
+      value: 16
+    }
+    enumerator {
+      name: "QUERY_ATTR_IDN_CORR_PRG_BLK_NUM"
+      value: 17
+    }
+    enumerator {
+      name: "QUERY_ATTR_IDN_RESERVED2"
+      value: 18
+    }
+    enumerator {
+      name: "QUERY_ATTR_IDN_RESERVED3"
+      value: 19
+    }
+    enumerator {
+      name: "QUERY_ATTR_IDN_FFU_STATUS"
+      value: 20
+    }
+    enumerator {
+      name: "QUERY_ATTR_IDN_PSA_STATE"
+      value: 21
+    }
+    enumerator {
+      name: "QUERY_ATTR_IDN_PSA_DATA_SIZE"
+      value: 22
+    }
+    enumerator {
+      name: "QUERY_ATTR_IDN_REF_CLK_GATING_WAIT_TIME"
+      value: 23
+    }
+    enumerator {
+      name: "QUERY_ATTR_IDN_CASE_ROUGH_TEMP"
+      value: 24
+    }
+    enumerator {
+      name: "QUERY_ATTR_IDN_HIGH_TEMP_BOUND"
+      value: 25
+    }
+    enumerator {
+      name: "QUERY_ATTR_IDN_LOW_TEMP_BOUND"
+      value: 26
+    }
+    enumerator {
+      name: "QUERY_ATTR_IDN_WB_FLUSH_STATUS"
+      value: 28
+    }
+    enumerator {
+      name: "QUERY_ATTR_IDN_AVAIL_WB_BUFF_SIZE"
+      value: 29
+    }
+    enumerator {
+      name: "QUERY_ATTR_IDN_WB_BUFF_LIFE_TIME_EST"
+      value: 30
+    }
+    enumerator {
+      name: "QUERY_ATTR_IDN_CURR_WB_BUFF_SIZE"
+      value: 31
+    }
+    enumerator {
+      name: "QUERY_ATTR_IDN_EXT_IID_EN"
+      value: 42
+    }
+  }
+}
+enumeration {
+  id: 0x6bbe1f72
+  name: "audit_state"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "AUDIT_STATE_DISABLED"
+    }
+    enumerator {
+      name: "AUDIT_STATE_BUILD"
+      value: 1
+    }
+    enumerator {
+      name: "AUDIT_STATE_RECORD"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x4c22aee5
+  name: "backlight_scale"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "BACKLIGHT_SCALE_UNKNOWN"
+    }
+    enumerator {
+      name: "BACKLIGHT_SCALE_LINEAR"
+      value: 1
+    }
+    enumerator {
+      name: "BACKLIGHT_SCALE_NON_LINEAR"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x8e749d69
+  name: "backlight_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "BACKLIGHT_RAW"
+      value: 1
+    }
+    enumerator {
+      name: "BACKLIGHT_PLATFORM"
+      value: 2
+    }
+    enumerator {
+      name: "BACKLIGHT_FIRMWARE"
+      value: 3
+    }
+    enumerator {
+      name: "BACKLIGHT_TYPE_MAX"
+      value: 4
+    }
+  }
+}
+enumeration {
+  id: 0x35359064
+  name: "binder_prio_state"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "BINDER_PRIO_SET"
+    }
+    enumerator {
+      name: "BINDER_PRIO_PENDING"
+      value: 1
+    }
+    enumerator {
+      name: "BINDER_PRIO_ABORT"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x5e01cc43
+  name: "binder_work_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "BINDER_WORK_TRANSACTION"
+      value: 1
+    }
+    enumerator {
+      name: "BINDER_WORK_TRANSACTION_COMPLETE"
+      value: 2
+    }
+    enumerator {
+      name: "BINDER_WORK_TRANSACTION_ONEWAY_SPAM_SUSPECT"
+      value: 3
+    }
+    enumerator {
+      name: "BINDER_WORK_RETURN_ERROR"
+      value: 4
+    }
+    enumerator {
+      name: "BINDER_WORK_NODE"
+      value: 5
+    }
+    enumerator {
+      name: "BINDER_WORK_DEAD_BINDER"
+      value: 6
+    }
+    enumerator {
+      name: "BINDER_WORK_DEAD_BINDER_AND_CLEAR"
+      value: 7
+    }
+    enumerator {
+      name: "BINDER_WORK_CLEAR_DEATH_NOTIFICATION"
+      value: 8
+    }
+  }
+}
+enumeration {
+  id: 0xeab68ea2
+  name: "bkops_status"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "BKOPS_STATUS_NO_OP"
+    }
+    enumerator {
+      name: "BKOPS_STATUS_NON_CRITICAL"
+      value: 1
+    }
+    enumerator {
+      name: "BKOPS_STATUS_PERF_IMPACT"
+      value: 2
+    }
+    enumerator {
+      name: "BKOPS_STATUS_CRITICAL"
+      value: 3
+    }
+    enumerator {
+      name: "BKOPS_STATUS_MAX"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0xa77f528b
+  name: "blk_bounce"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "BLK_BOUNCE_NONE"
+    }
+    enumerator {
+      name: "BLK_BOUNCE_HIGH"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0xf91e7e64
+  name: "blk_crypto_key_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "BLK_CRYPTO_KEY_TYPE_STANDARD"
+      value: 1
+    }
+    enumerator {
+      name: "BLK_CRYPTO_KEY_TYPE_HW_WRAPPED"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x82011f33
+  name: "blk_crypto_mode_num"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "BLK_ENCRYPTION_MODE_INVALID"
+    }
+    enumerator {
+      name: "BLK_ENCRYPTION_MODE_AES_256_XTS"
+      value: 1
+    }
+    enumerator {
+      name: "BLK_ENCRYPTION_MODE_AES_128_CBC_ESSIV"
+      value: 2
+    }
+    enumerator {
+      name: "BLK_ENCRYPTION_MODE_ADIANTUM"
+      value: 3
+    }
+    enumerator {
+      name: "BLK_ENCRYPTION_MODE_SM4_XTS"
+      value: 4
+    }
+    enumerator {
+      name: "BLK_ENCRYPTION_MODE_MAX"
+      value: 5
+    }
+  }
+}
+enumeration {
+  id: 0x679ad455
+  name: "blk_eh_timer_return"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "BLK_EH_DONE"
+    }
+    enumerator {
+      name: "BLK_EH_RESET_TIMER"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0x88b7b7bc
+  name: "blk_unique_id"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "BLK_UID_T10"
+      value: 1
+    }
+    enumerator {
+      name: "BLK_UID_EUI64"
+      value: 2
+    }
+    enumerator {
+      name: "BLK_UID_NAA"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x4e862417
+  name: "blk_zone_cond"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "BLK_ZONE_COND_NOT_WP"
+    }
+    enumerator {
+      name: "BLK_ZONE_COND_EMPTY"
+      value: 1
+    }
+    enumerator {
+      name: "BLK_ZONE_COND_IMP_OPEN"
+      value: 2
+    }
+    enumerator {
+      name: "BLK_ZONE_COND_EXP_OPEN"
+      value: 3
+    }
+    enumerator {
+      name: "BLK_ZONE_COND_CLOSED"
+      value: 4
+    }
+    enumerator {
+      name: "BLK_ZONE_COND_READONLY"
+      value: 13
+    }
+    enumerator {
+      name: "BLK_ZONE_COND_FULL"
+      value: 14
+    }
+    enumerator {
+      name: "BLK_ZONE_COND_OFFLINE"
+      value: 15
+    }
+  }
+}
+enumeration {
+  id: 0xc0a0d1f0
+  name: "blk_zoned_model"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "BLK_ZONED_NONE"
+    }
+    enumerator {
+      name: "BLK_ZONED_HA"
+      value: 1
+    }
+    enumerator {
+      name: "BLK_ZONED_HM"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x171c27b5
+  name: "bpf_access_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "BPF_READ"
+      value: 1
+    }
+    enumerator {
+      name: "BPF_WRITE"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0xb8183ffd
+  name: "bpf_arg_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "ARG_DONTCARE"
+    }
+    enumerator {
+      name: "ARG_CONST_MAP_PTR"
+      value: 1
+    }
+    enumerator {
+      name: "ARG_PTR_TO_MAP_KEY"
+      value: 2
+    }
+    enumerator {
+      name: "ARG_PTR_TO_MAP_VALUE"
+      value: 3
+    }
+    enumerator {
+      name: "ARG_PTR_TO_MEM"
+      value: 4
+    }
+    enumerator {
+      name: "ARG_CONST_SIZE"
+      value: 5
+    }
+    enumerator {
+      name: "ARG_CONST_SIZE_OR_ZERO"
+      value: 6
+    }
+    enumerator {
+      name: "ARG_PTR_TO_CTX"
+      value: 7
+    }
+    enumerator {
+      name: "ARG_ANYTHING"
+      value: 8
+    }
+    enumerator {
+      name: "ARG_PTR_TO_SPIN_LOCK"
+      value: 9
+    }
+    enumerator {
+      name: "ARG_PTR_TO_SOCK_COMMON"
+      value: 10
+    }
+    enumerator {
+      name: "ARG_PTR_TO_INT"
+      value: 11
+    }
+    enumerator {
+      name: "ARG_PTR_TO_LONG"
+      value: 12
+    }
+    enumerator {
+      name: "ARG_PTR_TO_SOCKET"
+      value: 13
+    }
+    enumerator {
+      name: "ARG_PTR_TO_BTF_ID"
+      value: 14
+    }
+    enumerator {
+      name: "ARG_PTR_TO_ALLOC_MEM"
+      value: 15
+    }
+    enumerator {
+      name: "ARG_CONST_ALLOC_SIZE_OR_ZERO"
+      value: 16
+    }
+    enumerator {
+      name: "ARG_PTR_TO_BTF_ID_SOCK_COMMON"
+      value: 17
+    }
+    enumerator {
+      name: "ARG_PTR_TO_PERCPU_BTF_ID"
+      value: 18
+    }
+    enumerator {
+      name: "ARG_PTR_TO_FUNC"
+      value: 19
+    }
+    enumerator {
+      name: "ARG_PTR_TO_STACK"
+      value: 20
+    }
+    enumerator {
+      name: "ARG_PTR_TO_CONST_STR"
+      value: 21
+    }
+    enumerator {
+      name: "ARG_PTR_TO_TIMER"
+      value: 22
+    }
+    enumerator {
+      name: "ARG_PTR_TO_KPTR"
+      value: 23
+    }
+    enumerator {
+      name: "ARG_PTR_TO_DYNPTR"
+      value: 24
+    }
+    enumerator {
+      name: "__BPF_ARG_TYPE_MAX"
+      value: 25
+    }
+    enumerator {
+      name: "ARG_PTR_TO_MAP_VALUE_OR_NULL"
+      value: 259
+    }
+    enumerator {
+      name: "ARG_PTR_TO_MEM_OR_NULL"
+      value: 260
+    }
+    enumerator {
+      name: "ARG_PTR_TO_CTX_OR_NULL"
+      value: 263
+    }
+    enumerator {
+      name: "ARG_PTR_TO_SOCKET_OR_NULL"
+      value: 269
+    }
+    enumerator {
+      name: "ARG_PTR_TO_ALLOC_MEM_OR_NULL"
+      value: 271
+    }
+    enumerator {
+      name: "ARG_PTR_TO_STACK_OR_NULL"
+      value: 276
+    }
+    enumerator {
+      name: "ARG_PTR_TO_BTF_ID_OR_NULL"
+      value: 270
+    }
+    enumerator {
+      name: "ARG_PTR_TO_UNINIT_MEM"
+      value: 32772
+    }
+    enumerator {
+      name: "ARG_PTR_TO_FIXED_SIZE_MEM"
+      value: 262148
+    }
+    enumerator {
+      name: "__BPF_ARG_TYPE_LIMIT"
+      value: 524287
+    }
+  }
+}
+enumeration {
+  id: 0xaf94e3a7
+  name: "bpf_attach_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "BPF_CGROUP_INET_INGRESS"
+    }
+    enumerator {
+      name: "BPF_CGROUP_INET_EGRESS"
+      value: 1
+    }
+    enumerator {
+      name: "BPF_CGROUP_INET_SOCK_CREATE"
+      value: 2
+    }
+    enumerator {
+      name: "BPF_CGROUP_SOCK_OPS"
+      value: 3
+    }
+    enumerator {
+      name: "BPF_SK_SKB_STREAM_PARSER"
+      value: 4
+    }
+    enumerator {
+      name: "BPF_SK_SKB_STREAM_VERDICT"
+      value: 5
+    }
+    enumerator {
+      name: "BPF_CGROUP_DEVICE"
+      value: 6
+    }
+    enumerator {
+      name: "BPF_SK_MSG_VERDICT"
+      value: 7
+    }
+    enumerator {
+      name: "BPF_CGROUP_INET4_BIND"
+      value: 8
+    }
+    enumerator {
+      name: "BPF_CGROUP_INET6_BIND"
+      value: 9
+    }
+    enumerator {
+      name: "BPF_CGROUP_INET4_CONNECT"
+      value: 10
+    }
+    enumerator {
+      name: "BPF_CGROUP_INET6_CONNECT"
+      value: 11
+    }
+    enumerator {
+      name: "BPF_CGROUP_INET4_POST_BIND"
+      value: 12
+    }
+    enumerator {
+      name: "BPF_CGROUP_INET6_POST_BIND"
+      value: 13
+    }
+    enumerator {
+      name: "BPF_CGROUP_UDP4_SENDMSG"
+      value: 14
+    }
+    enumerator {
+      name: "BPF_CGROUP_UDP6_SENDMSG"
+      value: 15
+    }
+    enumerator {
+      name: "BPF_LIRC_MODE2"
+      value: 16
+    }
+    enumerator {
+      name: "BPF_FLOW_DISSECTOR"
+      value: 17
+    }
+    enumerator {
+      name: "BPF_CGROUP_SYSCTL"
+      value: 18
+    }
+    enumerator {
+      name: "BPF_CGROUP_UDP4_RECVMSG"
+      value: 19
+    }
+    enumerator {
+      name: "BPF_CGROUP_UDP6_RECVMSG"
+      value: 20
+    }
+    enumerator {
+      name: "BPF_CGROUP_GETSOCKOPT"
+      value: 21
+    }
+    enumerator {
+      name: "BPF_CGROUP_SETSOCKOPT"
+      value: 22
+    }
+    enumerator {
+      name: "BPF_TRACE_RAW_TP"
+      value: 23
+    }
+    enumerator {
+      name: "BPF_TRACE_FENTRY"
+      value: 24
+    }
+    enumerator {
+      name: "BPF_TRACE_FEXIT"
+      value: 25
+    }
+    enumerator {
+      name: "BPF_MODIFY_RETURN"
+      value: 26
+    }
+    enumerator {
+      name: "BPF_LSM_MAC"
+      value: 27
+    }
+    enumerator {
+      name: "BPF_TRACE_ITER"
+      value: 28
+    }
+    enumerator {
+      name: "BPF_CGROUP_INET4_GETPEERNAME"
+      value: 29
+    }
+    enumerator {
+      name: "BPF_CGROUP_INET6_GETPEERNAME"
+      value: 30
+    }
+    enumerator {
+      name: "BPF_CGROUP_INET4_GETSOCKNAME"
+      value: 31
+    }
+    enumerator {
+      name: "BPF_CGROUP_INET6_GETSOCKNAME"
+      value: 32
+    }
+    enumerator {
+      name: "BPF_XDP_DEVMAP"
+      value: 33
+    }
+    enumerator {
+      name: "BPF_CGROUP_INET_SOCK_RELEASE"
+      value: 34
+    }
+    enumerator {
+      name: "BPF_XDP_CPUMAP"
+      value: 35
+    }
+    enumerator {
+      name: "BPF_SK_LOOKUP"
+      value: 36
+    }
+    enumerator {
+      name: "BPF_XDP"
+      value: 37
+    }
+    enumerator {
+      name: "BPF_SK_SKB_VERDICT"
+      value: 38
+    }
+    enumerator {
+      name: "BPF_SK_REUSEPORT_SELECT"
+      value: 39
+    }
+    enumerator {
+      name: "BPF_SK_REUSEPORT_SELECT_OR_MIGRATE"
+      value: 40
+    }
+    enumerator {
+      name: "BPF_PERF_EVENT"
+      value: 41
+    }
+    enumerator {
+      name: "BPF_TRACE_KPROBE_MULTI"
+      value: 42
+    }
+    enumerator {
+      name: "BPF_LSM_CGROUP"
+      value: 43
+    }
+    enumerator {
+      name: "__MAX_BPF_ATTACH_TYPE"
+      value: 44
+    }
+  }
+}
+enumeration {
+  id: 0x84115126
+  name: "bpf_cgroup_iter_order"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "BPF_CGROUP_ITER_ORDER_UNSPEC"
+    }
+    enumerator {
+      name: "BPF_CGROUP_ITER_SELF_ONLY"
+      value: 1
+    }
+    enumerator {
+      name: "BPF_CGROUP_ITER_DESCENDANTS_PRE"
+      value: 2
+    }
+    enumerator {
+      name: "BPF_CGROUP_ITER_DESCENDANTS_POST"
+      value: 3
+    }
+    enumerator {
+      name: "BPF_CGROUP_ITER_ANCESTORS_UP"
+      value: 4
+    }
+  }
+}
+enumeration {
+  id: 0xac92f5da
+  name: "bpf_dynptr_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "BPF_DYNPTR_TYPE_INVALID"
+    }
+    enumerator {
+      name: "BPF_DYNPTR_TYPE_LOCAL"
+      value: 1
+    }
+    enumerator {
+      name: "BPF_DYNPTR_TYPE_RINGBUF"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x5c2e9379
+  name: "bpf_func_id"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "BPF_FUNC_unspec"
+    }
+    enumerator {
+      name: "BPF_FUNC_map_lookup_elem"
+      value: 1
+    }
+    enumerator {
+      name: "BPF_FUNC_map_update_elem"
+      value: 2
+    }
+    enumerator {
+      name: "BPF_FUNC_map_delete_elem"
+      value: 3
+    }
+    enumerator {
+      name: "BPF_FUNC_probe_read"
+      value: 4
+    }
+    enumerator {
+      name: "BPF_FUNC_ktime_get_ns"
+      value: 5
+    }
+    enumerator {
+      name: "BPF_FUNC_trace_printk"
+      value: 6
+    }
+    enumerator {
+      name: "BPF_FUNC_get_prandom_u32"
+      value: 7
+    }
+    enumerator {
+      name: "BPF_FUNC_get_smp_processor_id"
+      value: 8
+    }
+    enumerator {
+      name: "BPF_FUNC_skb_store_bytes"
+      value: 9
+    }
+    enumerator {
+      name: "BPF_FUNC_l3_csum_replace"
+      value: 10
+    }
+    enumerator {
+      name: "BPF_FUNC_l4_csum_replace"
+      value: 11
+    }
+    enumerator {
+      name: "BPF_FUNC_tail_call"
+      value: 12
+    }
+    enumerator {
+      name: "BPF_FUNC_clone_redirect"
+      value: 13
+    }
+    enumerator {
+      name: "BPF_FUNC_get_current_pid_tgid"
+      value: 14
+    }
+    enumerator {
+      name: "BPF_FUNC_get_current_uid_gid"
+      value: 15
+    }
+    enumerator {
+      name: "BPF_FUNC_get_current_comm"
+      value: 16
+    }
+    enumerator {
+      name: "BPF_FUNC_get_cgroup_classid"
+      value: 17
+    }
+    enumerator {
+      name: "BPF_FUNC_skb_vlan_push"
+      value: 18
+    }
+    enumerator {
+      name: "BPF_FUNC_skb_vlan_pop"
+      value: 19
+    }
+    enumerator {
+      name: "BPF_FUNC_skb_get_tunnel_key"
+      value: 20
+    }
+    enumerator {
+      name: "BPF_FUNC_skb_set_tunnel_key"
+      value: 21
+    }
+    enumerator {
+      name: "BPF_FUNC_perf_event_read"
+      value: 22
+    }
+    enumerator {
+      name: "BPF_FUNC_redirect"
+      value: 23
+    }
+    enumerator {
+      name: "BPF_FUNC_get_route_realm"
+      value: 24
+    }
+    enumerator {
+      name: "BPF_FUNC_perf_event_output"
+      value: 25
+    }
+    enumerator {
+      name: "BPF_FUNC_skb_load_bytes"
+      value: 26
+    }
+    enumerator {
+      name: "BPF_FUNC_get_stackid"
+      value: 27
+    }
+    enumerator {
+      name: "BPF_FUNC_csum_diff"
+      value: 28
+    }
+    enumerator {
+      name: "BPF_FUNC_skb_get_tunnel_opt"
+      value: 29
+    }
+    enumerator {
+      name: "BPF_FUNC_skb_set_tunnel_opt"
+      value: 30
+    }
+    enumerator {
+      name: "BPF_FUNC_skb_change_proto"
+      value: 31
+    }
+    enumerator {
+      name: "BPF_FUNC_skb_change_type"
+      value: 32
+    }
+    enumerator {
+      name: "BPF_FUNC_skb_under_cgroup"
+      value: 33
+    }
+    enumerator {
+      name: "BPF_FUNC_get_hash_recalc"
+      value: 34
+    }
+    enumerator {
+      name: "BPF_FUNC_get_current_task"
+      value: 35
+    }
+    enumerator {
+      name: "BPF_FUNC_probe_write_user"
+      value: 36
+    }
+    enumerator {
+      name: "BPF_FUNC_current_task_under_cgroup"
+      value: 37
+    }
+    enumerator {
+      name: "BPF_FUNC_skb_change_tail"
+      value: 38
+    }
+    enumerator {
+      name: "BPF_FUNC_skb_pull_data"
+      value: 39
+    }
+    enumerator {
+      name: "BPF_FUNC_csum_update"
+      value: 40
+    }
+    enumerator {
+      name: "BPF_FUNC_set_hash_invalid"
+      value: 41
+    }
+    enumerator {
+      name: "BPF_FUNC_get_numa_node_id"
+      value: 42
+    }
+    enumerator {
+      name: "BPF_FUNC_skb_change_head"
+      value: 43
+    }
+    enumerator {
+      name: "BPF_FUNC_xdp_adjust_head"
+      value: 44
+    }
+    enumerator {
+      name: "BPF_FUNC_probe_read_str"
+      value: 45
+    }
+    enumerator {
+      name: "BPF_FUNC_get_socket_cookie"
+      value: 46
+    }
+    enumerator {
+      name: "BPF_FUNC_get_socket_uid"
+      value: 47
+    }
+    enumerator {
+      name: "BPF_FUNC_set_hash"
+      value: 48
+    }
+    enumerator {
+      name: "BPF_FUNC_setsockopt"
+      value: 49
+    }
+    enumerator {
+      name: "BPF_FUNC_skb_adjust_room"
+      value: 50
+    }
+    enumerator {
+      name: "BPF_FUNC_redirect_map"
+      value: 51
+    }
+    enumerator {
+      name: "BPF_FUNC_sk_redirect_map"
+      value: 52
+    }
+    enumerator {
+      name: "BPF_FUNC_sock_map_update"
+      value: 53
+    }
+    enumerator {
+      name: "BPF_FUNC_xdp_adjust_meta"
+      value: 54
+    }
+    enumerator {
+      name: "BPF_FUNC_perf_event_read_value"
+      value: 55
+    }
+    enumerator {
+      name: "BPF_FUNC_perf_prog_read_value"
+      value: 56
+    }
+    enumerator {
+      name: "BPF_FUNC_getsockopt"
+      value: 57
+    }
+    enumerator {
+      name: "BPF_FUNC_override_return"
+      value: 58
+    }
+    enumerator {
+      name: "BPF_FUNC_sock_ops_cb_flags_set"
+      value: 59
+    }
+    enumerator {
+      name: "BPF_FUNC_msg_redirect_map"
+      value: 60
+    }
+    enumerator {
+      name: "BPF_FUNC_msg_apply_bytes"
+      value: 61
+    }
+    enumerator {
+      name: "BPF_FUNC_msg_cork_bytes"
+      value: 62
+    }
+    enumerator {
+      name: "BPF_FUNC_msg_pull_data"
+      value: 63
+    }
+    enumerator {
+      name: "BPF_FUNC_bind"
+      value: 64
+    }
+    enumerator {
+      name: "BPF_FUNC_xdp_adjust_tail"
+      value: 65
+    }
+    enumerator {
+      name: "BPF_FUNC_skb_get_xfrm_state"
+      value: 66
+    }
+    enumerator {
+      name: "BPF_FUNC_get_stack"
+      value: 67
+    }
+    enumerator {
+      name: "BPF_FUNC_skb_load_bytes_relative"
+      value: 68
+    }
+    enumerator {
+      name: "BPF_FUNC_fib_lookup"
+      value: 69
+    }
+    enumerator {
+      name: "BPF_FUNC_sock_hash_update"
+      value: 70
+    }
+    enumerator {
+      name: "BPF_FUNC_msg_redirect_hash"
+      value: 71
+    }
+    enumerator {
+      name: "BPF_FUNC_sk_redirect_hash"
+      value: 72
+    }
+    enumerator {
+      name: "BPF_FUNC_lwt_push_encap"
+      value: 73
+    }
+    enumerator {
+      name: "BPF_FUNC_lwt_seg6_store_bytes"
+      value: 74
+    }
+    enumerator {
+      name: "BPF_FUNC_lwt_seg6_adjust_srh"
+      value: 75
+    }
+    enumerator {
+      name: "BPF_FUNC_lwt_seg6_action"
+      value: 76
+    }
+    enumerator {
+      name: "BPF_FUNC_rc_repeat"
+      value: 77
+    }
+    enumerator {
+      name: "BPF_FUNC_rc_keydown"
+      value: 78
+    }
+    enumerator {
+      name: "BPF_FUNC_skb_cgroup_id"
+      value: 79
+    }
+    enumerator {
+      name: "BPF_FUNC_get_current_cgroup_id"
+      value: 80
+    }
+    enumerator {
+      name: "BPF_FUNC_get_local_storage"
+      value: 81
+    }
+    enumerator {
+      name: "BPF_FUNC_sk_select_reuseport"
+      value: 82
+    }
+    enumerator {
+      name: "BPF_FUNC_skb_ancestor_cgroup_id"
+      value: 83
+    }
+    enumerator {
+      name: "BPF_FUNC_sk_lookup_tcp"
+      value: 84
+    }
+    enumerator {
+      name: "BPF_FUNC_sk_lookup_udp"
+      value: 85
+    }
+    enumerator {
+      name: "BPF_FUNC_sk_release"
+      value: 86
+    }
+    enumerator {
+      name: "BPF_FUNC_map_push_elem"
+      value: 87
+    }
+    enumerator {
+      name: "BPF_FUNC_map_pop_elem"
+      value: 88
+    }
+    enumerator {
+      name: "BPF_FUNC_map_peek_elem"
+      value: 89
+    }
+    enumerator {
+      name: "BPF_FUNC_msg_push_data"
+      value: 90
+    }
+    enumerator {
+      name: "BPF_FUNC_msg_pop_data"
+      value: 91
+    }
+    enumerator {
+      name: "BPF_FUNC_rc_pointer_rel"
+      value: 92
+    }
+    enumerator {
+      name: "BPF_FUNC_spin_lock"
+      value: 93
+    }
+    enumerator {
+      name: "BPF_FUNC_spin_unlock"
+      value: 94
+    }
+    enumerator {
+      name: "BPF_FUNC_sk_fullsock"
+      value: 95
+    }
+    enumerator {
+      name: "BPF_FUNC_tcp_sock"
+      value: 96
+    }
+    enumerator {
+      name: "BPF_FUNC_skb_ecn_set_ce"
+      value: 97
+    }
+    enumerator {
+      name: "BPF_FUNC_get_listener_sock"
+      value: 98
+    }
+    enumerator {
+      name: "BPF_FUNC_skc_lookup_tcp"
+      value: 99
+    }
+    enumerator {
+      name: "BPF_FUNC_tcp_check_syncookie"
+      value: 100
+    }
+    enumerator {
+      name: "BPF_FUNC_sysctl_get_name"
+      value: 101
+    }
+    enumerator {
+      name: "BPF_FUNC_sysctl_get_current_value"
+      value: 102
+    }
+    enumerator {
+      name: "BPF_FUNC_sysctl_get_new_value"
+      value: 103
+    }
+    enumerator {
+      name: "BPF_FUNC_sysctl_set_new_value"
+      value: 104
+    }
+    enumerator {
+      name: "BPF_FUNC_strtol"
+      value: 105
+    }
+    enumerator {
+      name: "BPF_FUNC_strtoul"
+      value: 106
+    }
+    enumerator {
+      name: "BPF_FUNC_sk_storage_get"
+      value: 107
+    }
+    enumerator {
+      name: "BPF_FUNC_sk_storage_delete"
+      value: 108
+    }
+    enumerator {
+      name: "BPF_FUNC_send_signal"
+      value: 109
+    }
+    enumerator {
+      name: "BPF_FUNC_tcp_gen_syncookie"
+      value: 110
+    }
+    enumerator {
+      name: "BPF_FUNC_skb_output"
+      value: 111
+    }
+    enumerator {
+      name: "BPF_FUNC_probe_read_user"
+      value: 112
+    }
+    enumerator {
+      name: "BPF_FUNC_probe_read_kernel"
+      value: 113
+    }
+    enumerator {
+      name: "BPF_FUNC_probe_read_user_str"
+      value: 114
+    }
+    enumerator {
+      name: "BPF_FUNC_probe_read_kernel_str"
+      value: 115
+    }
+    enumerator {
+      name: "BPF_FUNC_tcp_send_ack"
+      value: 116
+    }
+    enumerator {
+      name: "BPF_FUNC_send_signal_thread"
+      value: 117
+    }
+    enumerator {
+      name: "BPF_FUNC_jiffies64"
+      value: 118
+    }
+    enumerator {
+      name: "BPF_FUNC_read_branch_records"
+      value: 119
+    }
+    enumerator {
+      name: "BPF_FUNC_get_ns_current_pid_tgid"
+      value: 120
+    }
+    enumerator {
+      name: "BPF_FUNC_xdp_output"
+      value: 121
+    }
+    enumerator {
+      name: "BPF_FUNC_get_netns_cookie"
+      value: 122
+    }
+    enumerator {
+      name: "BPF_FUNC_get_current_ancestor_cgroup_id"
+      value: 123
+    }
+    enumerator {
+      name: "BPF_FUNC_sk_assign"
+      value: 124
+    }
+    enumerator {
+      name: "BPF_FUNC_ktime_get_boot_ns"
+      value: 125
+    }
+    enumerator {
+      name: "BPF_FUNC_seq_printf"
+      value: 126
+    }
+    enumerator {
+      name: "BPF_FUNC_seq_write"
+      value: 127
+    }
+    enumerator {
+      name: "BPF_FUNC_sk_cgroup_id"
+      value: 128
+    }
+    enumerator {
+      name: "BPF_FUNC_sk_ancestor_cgroup_id"
+      value: 129
+    }
+    enumerator {
+      name: "BPF_FUNC_ringbuf_output"
+      value: 130
+    }
+    enumerator {
+      name: "BPF_FUNC_ringbuf_reserve"
+      value: 131
+    }
+    enumerator {
+      name: "BPF_FUNC_ringbuf_submit"
+      value: 132
+    }
+    enumerator {
+      name: "BPF_FUNC_ringbuf_discard"
+      value: 133
+    }
+    enumerator {
+      name: "BPF_FUNC_ringbuf_query"
+      value: 134
+    }
+    enumerator {
+      name: "BPF_FUNC_csum_level"
+      value: 135
+    }
+    enumerator {
+      name: "BPF_FUNC_skc_to_tcp6_sock"
+      value: 136
+    }
+    enumerator {
+      name: "BPF_FUNC_skc_to_tcp_sock"
+      value: 137
+    }
+    enumerator {
+      name: "BPF_FUNC_skc_to_tcp_timewait_sock"
+      value: 138
+    }
+    enumerator {
+      name: "BPF_FUNC_skc_to_tcp_request_sock"
+      value: 139
+    }
+    enumerator {
+      name: "BPF_FUNC_skc_to_udp6_sock"
+      value: 140
+    }
+    enumerator {
+      name: "BPF_FUNC_get_task_stack"
+      value: 141
+    }
+    enumerator {
+      name: "BPF_FUNC_load_hdr_opt"
+      value: 142
+    }
+    enumerator {
+      name: "BPF_FUNC_store_hdr_opt"
+      value: 143
+    }
+    enumerator {
+      name: "BPF_FUNC_reserve_hdr_opt"
+      value: 144
+    }
+    enumerator {
+      name: "BPF_FUNC_inode_storage_get"
+      value: 145
+    }
+    enumerator {
+      name: "BPF_FUNC_inode_storage_delete"
+      value: 146
+    }
+    enumerator {
+      name: "BPF_FUNC_d_path"
+      value: 147
+    }
+    enumerator {
+      name: "BPF_FUNC_copy_from_user"
+      value: 148
+    }
+    enumerator {
+      name: "BPF_FUNC_snprintf_btf"
+      value: 149
+    }
+    enumerator {
+      name: "BPF_FUNC_seq_printf_btf"
+      value: 150
+    }
+    enumerator {
+      name: "BPF_FUNC_skb_cgroup_classid"
+      value: 151
+    }
+    enumerator {
+      name: "BPF_FUNC_redirect_neigh"
+      value: 152
+    }
+    enumerator {
+      name: "BPF_FUNC_per_cpu_ptr"
+      value: 153
+    }
+    enumerator {
+      name: "BPF_FUNC_this_cpu_ptr"
+      value: 154
+    }
+    enumerator {
+      name: "BPF_FUNC_redirect_peer"
+      value: 155
+    }
+    enumerator {
+      name: "BPF_FUNC_task_storage_get"
+      value: 156
+    }
+    enumerator {
+      name: "BPF_FUNC_task_storage_delete"
+      value: 157
+    }
+    enumerator {
+      name: "BPF_FUNC_get_current_task_btf"
+      value: 158
+    }
+    enumerator {
+      name: "BPF_FUNC_bprm_opts_set"
+      value: 159
+    }
+    enumerator {
+      name: "BPF_FUNC_ktime_get_coarse_ns"
+      value: 160
+    }
+    enumerator {
+      name: "BPF_FUNC_ima_inode_hash"
+      value: 161
+    }
+    enumerator {
+      name: "BPF_FUNC_sock_from_file"
+      value: 162
+    }
+    enumerator {
+      name: "BPF_FUNC_check_mtu"
+      value: 163
+    }
+    enumerator {
+      name: "BPF_FUNC_for_each_map_elem"
+      value: 164
+    }
+    enumerator {
+      name: "BPF_FUNC_snprintf"
+      value: 165
+    }
+    enumerator {
+      name: "BPF_FUNC_sys_bpf"
+      value: 166
+    }
+    enumerator {
+      name: "BPF_FUNC_btf_find_by_name_kind"
+      value: 167
+    }
+    enumerator {
+      name: "BPF_FUNC_sys_close"
+      value: 168
+    }
+    enumerator {
+      name: "BPF_FUNC_timer_init"
+      value: 169
+    }
+    enumerator {
+      name: "BPF_FUNC_timer_set_callback"
+      value: 170
+    }
+    enumerator {
+      name: "BPF_FUNC_timer_start"
+      value: 171
+    }
+    enumerator {
+      name: "BPF_FUNC_timer_cancel"
+      value: 172
+    }
+    enumerator {
+      name: "BPF_FUNC_get_func_ip"
+      value: 173
+    }
+    enumerator {
+      name: "BPF_FUNC_get_attach_cookie"
+      value: 174
+    }
+    enumerator {
+      name: "BPF_FUNC_task_pt_regs"
+      value: 175
+    }
+    enumerator {
+      name: "BPF_FUNC_get_branch_snapshot"
+      value: 176
+    }
+    enumerator {
+      name: "BPF_FUNC_trace_vprintk"
+      value: 177
+    }
+    enumerator {
+      name: "BPF_FUNC_skc_to_unix_sock"
+      value: 178
+    }
+    enumerator {
+      name: "BPF_FUNC_kallsyms_lookup_name"
+      value: 179
+    }
+    enumerator {
+      name: "BPF_FUNC_find_vma"
+      value: 180
+    }
+    enumerator {
+      name: "BPF_FUNC_loop"
+      value: 181
+    }
+    enumerator {
+      name: "BPF_FUNC_strncmp"
+      value: 182
+    }
+    enumerator {
+      name: "BPF_FUNC_get_func_arg"
+      value: 183
+    }
+    enumerator {
+      name: "BPF_FUNC_get_func_ret"
+      value: 184
+    }
+    enumerator {
+      name: "BPF_FUNC_get_func_arg_cnt"
+      value: 185
+    }
+    enumerator {
+      name: "BPF_FUNC_get_retval"
+      value: 186
+    }
+    enumerator {
+      name: "BPF_FUNC_set_retval"
+      value: 187
+    }
+    enumerator {
+      name: "BPF_FUNC_xdp_get_buff_len"
+      value: 188
+    }
+    enumerator {
+      name: "BPF_FUNC_xdp_load_bytes"
+      value: 189
+    }
+    enumerator {
+      name: "BPF_FUNC_xdp_store_bytes"
+      value: 190
+    }
+    enumerator {
+      name: "BPF_FUNC_copy_from_user_task"
+      value: 191
+    }
+    enumerator {
+      name: "BPF_FUNC_skb_set_tstamp"
+      value: 192
+    }
+    enumerator {
+      name: "BPF_FUNC_ima_file_hash"
+      value: 193
+    }
+    enumerator {
+      name: "BPF_FUNC_kptr_xchg"
+      value: 194
+    }
+    enumerator {
+      name: "BPF_FUNC_map_lookup_percpu_elem"
+      value: 195
+    }
+    enumerator {
+      name: "BPF_FUNC_skc_to_mptcp_sock"
+      value: 196
+    }
+    enumerator {
+      name: "BPF_FUNC_dynptr_from_mem"
+      value: 197
+    }
+    enumerator {
+      name: "BPF_FUNC_ringbuf_reserve_dynptr"
+      value: 198
+    }
+    enumerator {
+      name: "BPF_FUNC_ringbuf_submit_dynptr"
+      value: 199
+    }
+    enumerator {
+      name: "BPF_FUNC_ringbuf_discard_dynptr"
+      value: 200
+    }
+    enumerator {
+      name: "BPF_FUNC_dynptr_read"
+      value: 201
+    }
+    enumerator {
+      name: "BPF_FUNC_dynptr_write"
+      value: 202
+    }
+    enumerator {
+      name: "BPF_FUNC_dynptr_data"
+      value: 203
+    }
+    enumerator {
+      name: "BPF_FUNC_tcp_raw_gen_syncookie_ipv4"
+      value: 204
+    }
+    enumerator {
+      name: "BPF_FUNC_tcp_raw_gen_syncookie_ipv6"
+      value: 205
+    }
+    enumerator {
+      name: "BPF_FUNC_tcp_raw_check_syncookie_ipv4"
+      value: 206
+    }
+    enumerator {
+      name: "BPF_FUNC_tcp_raw_check_syncookie_ipv6"
+      value: 207
+    }
+    enumerator {
+      name: "BPF_FUNC_ktime_get_tai_ns"
+      value: 208
+    }
+    enumerator {
+      name: "BPF_FUNC_user_ringbuf_drain"
+      value: 209
+    }
+    enumerator {
+      name: "__BPF_FUNC_MAX_ID"
+      value: 210
+    }
+  }
+}
+enumeration {
+  id: 0xed1c1cd5
+  name: "bpf_iter_task_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "BPF_TASK_ITER_ALL"
+    }
+    enumerator {
+      name: "BPF_TASK_ITER_TID"
+      value: 1
+    }
+    enumerator {
+      name: "BPF_TASK_ITER_TGID"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x537b9bfd
+  name: "bpf_kptr_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "BPF_KPTR_UNREF"
+    }
+    enumerator {
+      name: "BPF_KPTR_REF"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0xf6c2b30c
+  name: "bpf_link_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "BPF_LINK_TYPE_UNSPEC"
+    }
+    enumerator {
+      name: "BPF_LINK_TYPE_RAW_TRACEPOINT"
+      value: 1
+    }
+    enumerator {
+      name: "BPF_LINK_TYPE_TRACING"
+      value: 2
+    }
+    enumerator {
+      name: "BPF_LINK_TYPE_CGROUP"
+      value: 3
+    }
+    enumerator {
+      name: "BPF_LINK_TYPE_ITER"
+      value: 4
+    }
+    enumerator {
+      name: "BPF_LINK_TYPE_NETNS"
+      value: 5
+    }
+    enumerator {
+      name: "BPF_LINK_TYPE_XDP"
+      value: 6
+    }
+    enumerator {
+      name: "BPF_LINK_TYPE_PERF_EVENT"
+      value: 7
+    }
+    enumerator {
+      name: "BPF_LINK_TYPE_KPROBE_MULTI"
+      value: 8
+    }
+    enumerator {
+      name: "BPF_LINK_TYPE_STRUCT_OPS"
+      value: 9
+    }
+    enumerator {
+      name: "MAX_BPF_LINK_TYPE"
+      value: 10
+    }
+  }
+}
+enumeration {
+  id: 0x6e73208e
+  name: "bpf_map_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "BPF_MAP_TYPE_UNSPEC"
+    }
+    enumerator {
+      name: "BPF_MAP_TYPE_HASH"
+      value: 1
+    }
+    enumerator {
+      name: "BPF_MAP_TYPE_ARRAY"
+      value: 2
+    }
+    enumerator {
+      name: "BPF_MAP_TYPE_PROG_ARRAY"
+      value: 3
+    }
+    enumerator {
+      name: "BPF_MAP_TYPE_PERF_EVENT_ARRAY"
+      value: 4
+    }
+    enumerator {
+      name: "BPF_MAP_TYPE_PERCPU_HASH"
+      value: 5
+    }
+    enumerator {
+      name: "BPF_MAP_TYPE_PERCPU_ARRAY"
+      value: 6
+    }
+    enumerator {
+      name: "BPF_MAP_TYPE_STACK_TRACE"
+      value: 7
+    }
+    enumerator {
+      name: "BPF_MAP_TYPE_CGROUP_ARRAY"
+      value: 8
+    }
+    enumerator {
+      name: "BPF_MAP_TYPE_LRU_HASH"
+      value: 9
+    }
+    enumerator {
+      name: "BPF_MAP_TYPE_LRU_PERCPU_HASH"
+      value: 10
+    }
+    enumerator {
+      name: "BPF_MAP_TYPE_LPM_TRIE"
+      value: 11
+    }
+    enumerator {
+      name: "BPF_MAP_TYPE_ARRAY_OF_MAPS"
+      value: 12
+    }
+    enumerator {
+      name: "BPF_MAP_TYPE_HASH_OF_MAPS"
+      value: 13
+    }
+    enumerator {
+      name: "BPF_MAP_TYPE_DEVMAP"
+      value: 14
+    }
+    enumerator {
+      name: "BPF_MAP_TYPE_SOCKMAP"
+      value: 15
+    }
+    enumerator {
+      name: "BPF_MAP_TYPE_CPUMAP"
+      value: 16
+    }
+    enumerator {
+      name: "BPF_MAP_TYPE_XSKMAP"
+      value: 17
+    }
+    enumerator {
+      name: "BPF_MAP_TYPE_SOCKHASH"
+      value: 18
+    }
+    enumerator {
+      name: "BPF_MAP_TYPE_CGROUP_STORAGE"
+      value: 19
+    }
+    enumerator {
+      name: "BPF_MAP_TYPE_REUSEPORT_SOCKARRAY"
+      value: 20
+    }
+    enumerator {
+      name: "BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE"
+      value: 21
+    }
+    enumerator {
+      name: "BPF_MAP_TYPE_QUEUE"
+      value: 22
+    }
+    enumerator {
+      name: "BPF_MAP_TYPE_STACK"
+      value: 23
+    }
+    enumerator {
+      name: "BPF_MAP_TYPE_SK_STORAGE"
+      value: 24
+    }
+    enumerator {
+      name: "BPF_MAP_TYPE_DEVMAP_HASH"
+      value: 25
+    }
+    enumerator {
+      name: "BPF_MAP_TYPE_STRUCT_OPS"
+      value: 26
+    }
+    enumerator {
+      name: "BPF_MAP_TYPE_RINGBUF"
+      value: 27
+    }
+    enumerator {
+      name: "BPF_MAP_TYPE_INODE_STORAGE"
+      value: 28
+    }
+    enumerator {
+      name: "BPF_MAP_TYPE_TASK_STORAGE"
+      value: 29
+    }
+    enumerator {
+      name: "BPF_MAP_TYPE_BLOOM_FILTER"
+      value: 30
+    }
+    enumerator {
+      name: "BPF_MAP_TYPE_USER_RINGBUF"
+      value: 31
+    }
+  }
+}
+enumeration {
+  id: 0xbb787969
+  name: "bpf_netdev_command"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "XDP_SETUP_PROG"
+    }
+    enumerator {
+      name: "XDP_SETUP_PROG_HW"
+      value: 1
+    }
+    enumerator {
+      name: "BPF_OFFLOAD_MAP_ALLOC"
+      value: 2
+    }
+    enumerator {
+      name: "BPF_OFFLOAD_MAP_FREE"
+      value: 3
+    }
+    enumerator {
+      name: "XDP_SETUP_XSK_POOL"
+      value: 4
+    }
+  }
+}
+enumeration {
+  id: 0xffd5e3ef
+  name: "bpf_prog_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "BPF_PROG_TYPE_UNSPEC"
+    }
+    enumerator {
+      name: "BPF_PROG_TYPE_SOCKET_FILTER"
+      value: 1
+    }
+    enumerator {
+      name: "BPF_PROG_TYPE_KPROBE"
+      value: 2
+    }
+    enumerator {
+      name: "BPF_PROG_TYPE_SCHED_CLS"
+      value: 3
+    }
+    enumerator {
+      name: "BPF_PROG_TYPE_SCHED_ACT"
+      value: 4
+    }
+    enumerator {
+      name: "BPF_PROG_TYPE_TRACEPOINT"
+      value: 5
+    }
+    enumerator {
+      name: "BPF_PROG_TYPE_XDP"
+      value: 6
+    }
+    enumerator {
+      name: "BPF_PROG_TYPE_PERF_EVENT"
+      value: 7
+    }
+    enumerator {
+      name: "BPF_PROG_TYPE_CGROUP_SKB"
+      value: 8
+    }
+    enumerator {
+      name: "BPF_PROG_TYPE_CGROUP_SOCK"
+      value: 9
+    }
+    enumerator {
+      name: "BPF_PROG_TYPE_LWT_IN"
+      value: 10
+    }
+    enumerator {
+      name: "BPF_PROG_TYPE_LWT_OUT"
+      value: 11
+    }
+    enumerator {
+      name: "BPF_PROG_TYPE_LWT_XMIT"
+      value: 12
+    }
+    enumerator {
+      name: "BPF_PROG_TYPE_SOCK_OPS"
+      value: 13
+    }
+    enumerator {
+      name: "BPF_PROG_TYPE_SK_SKB"
+      value: 14
+    }
+    enumerator {
+      name: "BPF_PROG_TYPE_CGROUP_DEVICE"
+      value: 15
+    }
+    enumerator {
+      name: "BPF_PROG_TYPE_SK_MSG"
+      value: 16
+    }
+    enumerator {
+      name: "BPF_PROG_TYPE_RAW_TRACEPOINT"
+      value: 17
+    }
+    enumerator {
+      name: "BPF_PROG_TYPE_CGROUP_SOCK_ADDR"
+      value: 18
+    }
+    enumerator {
+      name: "BPF_PROG_TYPE_LWT_SEG6LOCAL"
+      value: 19
+    }
+    enumerator {
+      name: "BPF_PROG_TYPE_LIRC_MODE2"
+      value: 20
+    }
+    enumerator {
+      name: "BPF_PROG_TYPE_SK_REUSEPORT"
+      value: 21
+    }
+    enumerator {
+      name: "BPF_PROG_TYPE_FLOW_DISSECTOR"
+      value: 22
+    }
+    enumerator {
+      name: "BPF_PROG_TYPE_CGROUP_SYSCTL"
+      value: 23
+    }
+    enumerator {
+      name: "BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE"
+      value: 24
+    }
+    enumerator {
+      name: "BPF_PROG_TYPE_CGROUP_SOCKOPT"
+      value: 25
+    }
+    enumerator {
+      name: "BPF_PROG_TYPE_TRACING"
+      value: 26
+    }
+    enumerator {
+      name: "BPF_PROG_TYPE_STRUCT_OPS"
+      value: 27
+    }
+    enumerator {
+      name: "BPF_PROG_TYPE_EXT"
+      value: 28
+    }
+    enumerator {
+      name: "BPF_PROG_TYPE_LSM"
+      value: 29
+    }
+    enumerator {
+      name: "BPF_PROG_TYPE_SK_LOOKUP"
+      value: 30
+    }
+    enumerator {
+      name: "BPF_PROG_TYPE_SYSCALL"
+      value: 31
+    }
+    enumerator {
+      name: "BPF_PROG_TYPE_FUSE"
+      value: 32
+    }
+  }
+}
+enumeration {
+  id: 0xc4f9c336
+  name: "bpf_reg_liveness"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "REG_LIVE_NONE"
+    }
+    enumerator {
+      name: "REG_LIVE_READ32"
+      value: 1
+    }
+    enumerator {
+      name: "REG_LIVE_READ64"
+      value: 2
+    }
+    enumerator {
+      name: "REG_LIVE_READ"
+      value: 3
+    }
+    enumerator {
+      name: "REG_LIVE_WRITTEN"
+      value: 4
+    }
+    enumerator {
+      name: "REG_LIVE_DONE"
+      value: 8
+    }
+  }
+}
+enumeration {
+  id: 0x721b7fe3
+  name: "bpf_reg_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "NOT_INIT"
+    }
+    enumerator {
+      name: "SCALAR_VALUE"
+      value: 1
+    }
+    enumerator {
+      name: "PTR_TO_CTX"
+      value: 2
+    }
+    enumerator {
+      name: "CONST_PTR_TO_MAP"
+      value: 3
+    }
+    enumerator {
+      name: "PTR_TO_MAP_VALUE"
+      value: 4
+    }
+    enumerator {
+      name: "PTR_TO_MAP_KEY"
+      value: 5
+    }
+    enumerator {
+      name: "PTR_TO_STACK"
+      value: 6
+    }
+    enumerator {
+      name: "PTR_TO_PACKET_META"
+      value: 7
+    }
+    enumerator {
+      name: "PTR_TO_PACKET"
+      value: 8
+    }
+    enumerator {
+      name: "PTR_TO_PACKET_END"
+      value: 9
+    }
+    enumerator {
+      name: "PTR_TO_FLOW_KEYS"
+      value: 10
+    }
+    enumerator {
+      name: "PTR_TO_SOCKET"
+      value: 11
+    }
+    enumerator {
+      name: "PTR_TO_SOCK_COMMON"
+      value: 12
+    }
+    enumerator {
+      name: "PTR_TO_TCP_SOCK"
+      value: 13
+    }
+    enumerator {
+      name: "PTR_TO_TP_BUFFER"
+      value: 14
+    }
+    enumerator {
+      name: "PTR_TO_XDP_SOCK"
+      value: 15
+    }
+    enumerator {
+      name: "PTR_TO_BTF_ID"
+      value: 16
+    }
+    enumerator {
+      name: "PTR_TO_MEM"
+      value: 17
+    }
+    enumerator {
+      name: "PTR_TO_BUF"
+      value: 18
+    }
+    enumerator {
+      name: "PTR_TO_FUNC"
+      value: 19
+    }
+    enumerator {
+      name: "PTR_TO_DYNPTR"
+      value: 20
+    }
+    enumerator {
+      name: "__BPF_REG_TYPE_MAX"
+      value: 21
+    }
+    enumerator {
+      name: "PTR_TO_MAP_VALUE_OR_NULL"
+      value: 260
+    }
+    enumerator {
+      name: "PTR_TO_SOCKET_OR_NULL"
+      value: 267
+    }
+    enumerator {
+      name: "PTR_TO_SOCK_COMMON_OR_NULL"
+      value: 268
+    }
+    enumerator {
+      name: "PTR_TO_TCP_SOCK_OR_NULL"
+      value: 269
+    }
+    enumerator {
+      name: "PTR_TO_BTF_ID_OR_NULL"
+      value: 272
+    }
+    enumerator {
+      name: "__BPF_REG_TYPE_LIMIT"
+      value: 524287
+    }
+  }
+}
+enumeration {
+  id: 0xe448b2fe
+  name: "bpf_return_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "RET_INTEGER"
+    }
+    enumerator {
+      name: "RET_VOID"
+      value: 1
+    }
+    enumerator {
+      name: "RET_PTR_TO_MAP_VALUE"
+      value: 2
+    }
+    enumerator {
+      name: "RET_PTR_TO_SOCKET"
+      value: 3
+    }
+    enumerator {
+      name: "RET_PTR_TO_TCP_SOCK"
+      value: 4
+    }
+    enumerator {
+      name: "RET_PTR_TO_SOCK_COMMON"
+      value: 5
+    }
+    enumerator {
+      name: "RET_PTR_TO_ALLOC_MEM"
+      value: 6
+    }
+    enumerator {
+      name: "RET_PTR_TO_MEM_OR_BTF_ID"
+      value: 7
+    }
+    enumerator {
+      name: "RET_PTR_TO_BTF_ID"
+      value: 8
+    }
+    enumerator {
+      name: "__BPF_RET_TYPE_MAX"
+      value: 9
+    }
+    enumerator {
+      name: "RET_PTR_TO_MAP_VALUE_OR_NULL"
+      value: 258
+    }
+    enumerator {
+      name: "RET_PTR_TO_SOCKET_OR_NULL"
+      value: 259
+    }
+    enumerator {
+      name: "RET_PTR_TO_TCP_SOCK_OR_NULL"
+      value: 260
+    }
+    enumerator {
+      name: "RET_PTR_TO_SOCK_COMMON_OR_NULL"
+      value: 261
+    }
+    enumerator {
+      name: "RET_PTR_TO_ALLOC_MEM_OR_NULL"
+      value: 1286
+    }
+    enumerator {
+      name: "RET_PTR_TO_DYNPTR_MEM_OR_NULL"
+      value: 262
+    }
+    enumerator {
+      name: "RET_PTR_TO_BTF_ID_OR_NULL"
+      value: 264
+    }
+    enumerator {
+      name: "__BPF_RET_TYPE_LIMIT"
+      value: 524287
+    }
+  }
+}
+enumeration {
+  id: 0x9fee3ddf
+  name: "bpf_type_flag"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "PTR_MAYBE_NULL"
+      value: 256
+    }
+    enumerator {
+      name: "MEM_RDONLY"
+      value: 512
+    }
+    enumerator {
+      name: "MEM_ALLOC"
+      value: 1024
+    }
+    enumerator {
+      name: "MEM_USER"
+      value: 2048
+    }
+    enumerator {
+      name: "MEM_PERCPU"
+      value: 4096
+    }
+    enumerator {
+      name: "OBJ_RELEASE"
+      value: 8192
+    }
+    enumerator {
+      name: "PTR_UNTRUSTED"
+      value: 16384
+    }
+    enumerator {
+      name: "MEM_UNINIT"
+      value: 32768
+    }
+    enumerator {
+      name: "DYNPTR_TYPE_LOCAL"
+      value: 65536
+    }
+    enumerator {
+      name: "DYNPTR_TYPE_RINGBUF"
+      value: 131072
+    }
+    enumerator {
+      name: "MEM_FIXED_SIZE"
+      value: 262144
+    }
+    enumerator {
+      name: "__BPF_TYPE_FLAG_MAX"
+      value: 262145
+    }
+    enumerator {
+      name: "__BPF_TYPE_LAST_FLAG"
+      value: 262144
+    }
+  }
+}
+enumeration {
+  id: 0x2af63e7f
+  name: "can_mode"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "CAN_MODE_STOP"
+    }
+    enumerator {
+      name: "CAN_MODE_START"
+      value: 1
+    }
+    enumerator {
+      name: "CAN_MODE_SLEEP"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x3a5cebed
+  name: "can_state"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "CAN_STATE_ERROR_ACTIVE"
+    }
+    enumerator {
+      name: "CAN_STATE_ERROR_WARNING"
+      value: 1
+    }
+    enumerator {
+      name: "CAN_STATE_ERROR_PASSIVE"
+      value: 2
+    }
+    enumerator {
+      name: "CAN_STATE_BUS_OFF"
+      value: 3
+    }
+    enumerator {
+      name: "CAN_STATE_STOPPED"
+      value: 4
+    }
+    enumerator {
+      name: "CAN_STATE_SLEEPING"
+      value: 5
+    }
+    enumerator {
+      name: "CAN_STATE_MAX"
+      value: 6
+    }
+  }
+}
+enumeration {
+  id: 0x8007ca5c
+  name: "cec_pin_state"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "CEC_ST_OFF"
+    }
+    enumerator {
+      name: "CEC_ST_IDLE"
+      value: 1
+    }
+    enumerator {
+      name: "CEC_ST_TX_WAIT"
+      value: 2
+    }
+    enumerator {
+      name: "CEC_ST_TX_WAIT_FOR_HIGH"
+      value: 3
+    }
+    enumerator {
+      name: "CEC_ST_TX_START_BIT_LOW"
+      value: 4
+    }
+    enumerator {
+      name: "CEC_ST_TX_START_BIT_HIGH"
+      value: 5
+    }
+    enumerator {
+      name: "CEC_ST_TX_START_BIT_HIGH_SHORT"
+      value: 6
+    }
+    enumerator {
+      name: "CEC_ST_TX_START_BIT_HIGH_LONG"
+      value: 7
+    }
+    enumerator {
+      name: "CEC_ST_TX_START_BIT_LOW_CUSTOM"
+      value: 8
+    }
+    enumerator {
+      name: "CEC_ST_TX_START_BIT_HIGH_CUSTOM"
+      value: 9
+    }
+    enumerator {
+      name: "CEC_ST_TX_DATA_BIT_0_LOW"
+      value: 10
+    }
+    enumerator {
+      name: "CEC_ST_TX_DATA_BIT_0_HIGH"
+      value: 11
+    }
+    enumerator {
+      name: "CEC_ST_TX_DATA_BIT_0_HIGH_SHORT"
+      value: 12
+    }
+    enumerator {
+      name: "CEC_ST_TX_DATA_BIT_0_HIGH_LONG"
+      value: 13
+    }
+    enumerator {
+      name: "CEC_ST_TX_DATA_BIT_1_LOW"
+      value: 14
+    }
+    enumerator {
+      name: "CEC_ST_TX_DATA_BIT_1_HIGH"
+      value: 15
+    }
+    enumerator {
+      name: "CEC_ST_TX_DATA_BIT_1_HIGH_SHORT"
+      value: 16
+    }
+    enumerator {
+      name: "CEC_ST_TX_DATA_BIT_1_HIGH_LONG"
+      value: 17
+    }
+    enumerator {
+      name: "CEC_ST_TX_DATA_BIT_1_HIGH_PRE_SAMPLE"
+      value: 18
+    }
+    enumerator {
+      name: "CEC_ST_TX_DATA_BIT_1_HIGH_POST_SAMPLE"
+      value: 19
+    }
+    enumerator {
+      name: "CEC_ST_TX_DATA_BIT_1_HIGH_POST_SAMPLE_SHORT"
+      value: 20
+    }
+    enumerator {
+      name: "CEC_ST_TX_DATA_BIT_1_HIGH_POST_SAMPLE_LONG"
+      value: 21
+    }
+    enumerator {
+      name: "CEC_ST_TX_DATA_BIT_LOW_CUSTOM"
+      value: 22
+    }
+    enumerator {
+      name: "CEC_ST_TX_DATA_BIT_HIGH_CUSTOM"
+      value: 23
+    }
+    enumerator {
+      name: "CEC_ST_TX_PULSE_LOW_CUSTOM"
+      value: 24
+    }
+    enumerator {
+      name: "CEC_ST_TX_PULSE_HIGH_CUSTOM"
+      value: 25
+    }
+    enumerator {
+      name: "CEC_ST_TX_LOW_DRIVE"
+      value: 26
+    }
+    enumerator {
+      name: "CEC_ST_RX_START_BIT_LOW"
+      value: 27
+    }
+    enumerator {
+      name: "CEC_ST_RX_START_BIT_HIGH"
+      value: 28
+    }
+    enumerator {
+      name: "CEC_ST_RX_DATA_SAMPLE"
+      value: 29
+    }
+    enumerator {
+      name: "CEC_ST_RX_DATA_POST_SAMPLE"
+      value: 30
+    }
+    enumerator {
+      name: "CEC_ST_RX_DATA_WAIT_FOR_LOW"
+      value: 31
+    }
+    enumerator {
+      name: "CEC_ST_RX_ACK_LOW"
+      value: 32
+    }
+    enumerator {
+      name: "CEC_ST_RX_ACK_LOW_POST"
+      value: 33
+    }
+    enumerator {
+      name: "CEC_ST_RX_ACK_HIGH_POST"
+      value: 34
+    }
+    enumerator {
+      name: "CEC_ST_RX_ACK_FINISH"
+      value: 35
+    }
+    enumerator {
+      name: "CEC_ST_RX_LOW_DRIVE"
+      value: 36
+    }
+    enumerator {
+      name: "CEC_ST_RX_IRQ"
+      value: 37
+    }
+    enumerator {
+      name: "CEC_PIN_STATES"
+      value: 38
+    }
+  }
+}
+enumeration {
+  id: 0x1b2534c1
+  name: "cfg80211_signal_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "CFG80211_SIGNAL_TYPE_NONE"
+    }
+    enumerator {
+      name: "CFG80211_SIGNAL_TYPE_MBM"
+      value: 1
+    }
+    enumerator {
+      name: "CFG80211_SIGNAL_TYPE_UNSPEC"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x03aaab3d
+  name: "clk_gating_state"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "CLKS_OFF"
+    }
+    enumerator {
+      name: "CLKS_ON"
+      value: 1
+    }
+    enumerator {
+      name: "REQ_CLKS_OFF"
+      value: 2
+    }
+    enumerator {
+      name: "REQ_CLKS_ON"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0xf67bec89
+  name: "clock_event_state"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "CLOCK_EVT_STATE_DETACHED"
+    }
+    enumerator {
+      name: "CLOCK_EVT_STATE_SHUTDOWN"
+      value: 1
+    }
+    enumerator {
+      name: "CLOCK_EVT_STATE_PERIODIC"
+      value: 2
+    }
+    enumerator {
+      name: "CLOCK_EVT_STATE_ONESHOT"
+      value: 3
+    }
+    enumerator {
+      name: "CLOCK_EVT_STATE_ONESHOT_STOPPED"
+      value: 4
+    }
+  }
+}
+enumeration {
+  id: 0x7dad9728
+  name: "clocksource_ids"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "CSID_GENERIC"
+    }
+    enumerator {
+      name: "CSID_ARM_ARCH_COUNTER"
+      value: 1
+    }
+    enumerator {
+      name: "CSID_MAX"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x7bfd6d29
+  name: "conn_reasons"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "CONN_REASON_PAIR_DEVICE"
+    }
+    enumerator {
+      name: "CONN_REASON_L2CAP_CHAN"
+      value: 1
+    }
+    enumerator {
+      name: "CONN_REASON_SCO_CONNECT"
+      value: 2
+    }
+    enumerator {
+      name: "CONN_REASON_ISO_CONNECT"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0xe99880e8
+  name: "cpufreq_table_sorting"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "CPUFREQ_TABLE_UNSORTED"
+    }
+    enumerator {
+      name: "CPUFREQ_TABLE_SORTED_ASCENDING"
+      value: 1
+    }
+    enumerator {
+      name: "CPUFREQ_TABLE_SORTED_DESCENDING"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x0f9d9f68
+  name: "cpuhp_state"
+  definition {
+    underlying_type_id: 0x6720d32f
+    enumerator {
+      name: "CPUHP_INVALID"
+      value: -1
+    }
+    enumerator {
+      name: "CPUHP_OFFLINE"
+    }
+    enumerator {
+      name: "CPUHP_CREATE_THREADS"
+      value: 1
+    }
+    enumerator {
+      name: "CPUHP_PERF_PREPARE"
+      value: 2
+    }
+    enumerator {
+      name: "CPUHP_PERF_X86_PREPARE"
+      value: 3
+    }
+    enumerator {
+      name: "CPUHP_PERF_X86_AMD_UNCORE_PREP"
+      value: 4
+    }
+    enumerator {
+      name: "CPUHP_PERF_POWER"
+      value: 5
+    }
+    enumerator {
+      name: "CPUHP_PERF_SUPERH"
+      value: 6
+    }
+    enumerator {
+      name: "CPUHP_X86_HPET_DEAD"
+      value: 7
+    }
+    enumerator {
+      name: "CPUHP_X86_APB_DEAD"
+      value: 8
+    }
+    enumerator {
+      name: "CPUHP_X86_MCE_DEAD"
+      value: 9
+    }
+    enumerator {
+      name: "CPUHP_VIRT_NET_DEAD"
+      value: 10
+    }
+    enumerator {
+      name: "CPUHP_SLUB_DEAD"
+      value: 11
+    }
+    enumerator {
+      name: "CPUHP_DEBUG_OBJ_DEAD"
+      value: 12
+    }
+    enumerator {
+      name: "CPUHP_MM_WRITEBACK_DEAD"
+      value: 13
+    }
+    enumerator {
+      name: "CPUHP_MM_DEMOTION_DEAD"
+      value: 14
+    }
+    enumerator {
+      name: "CPUHP_MM_VMSTAT_DEAD"
+      value: 15
+    }
+    enumerator {
+      name: "CPUHP_SOFTIRQ_DEAD"
+      value: 16
+    }
+    enumerator {
+      name: "CPUHP_NET_MVNETA_DEAD"
+      value: 17
+    }
+    enumerator {
+      name: "CPUHP_CPUIDLE_DEAD"
+      value: 18
+    }
+    enumerator {
+      name: "CPUHP_ARM64_FPSIMD_DEAD"
+      value: 19
+    }
+    enumerator {
+      name: "CPUHP_ARM_OMAP_WAKE_DEAD"
+      value: 20
+    }
+    enumerator {
+      name: "CPUHP_IRQ_POLL_DEAD"
+      value: 21
+    }
+    enumerator {
+      name: "CPUHP_BLOCK_SOFTIRQ_DEAD"
+      value: 22
+    }
+    enumerator {
+      name: "CPUHP_BIO_DEAD"
+      value: 23
+    }
+    enumerator {
+      name: "CPUHP_ACPI_CPUDRV_DEAD"
+      value: 24
+    }
+    enumerator {
+      name: "CPUHP_S390_PFAULT_DEAD"
+      value: 25
+    }
+    enumerator {
+      name: "CPUHP_BLK_MQ_DEAD"
+      value: 26
+    }
+    enumerator {
+      name: "CPUHP_FS_BUFF_DEAD"
+      value: 27
+    }
+    enumerator {
+      name: "CPUHP_PRINTK_DEAD"
+      value: 28
+    }
+    enumerator {
+      name: "CPUHP_MM_MEMCQ_DEAD"
+      value: 29
+    }
+    enumerator {
+      name: "CPUHP_XFS_DEAD"
+      value: 30
+    }
+    enumerator {
+      name: "CPUHP_PERCPU_CNT_DEAD"
+      value: 31
+    }
+    enumerator {
+      name: "CPUHP_RADIX_DEAD"
+      value: 32
+    }
+    enumerator {
+      name: "CPUHP_PAGE_ALLOC"
+      value: 33
+    }
+    enumerator {
+      name: "CPUHP_NET_DEV_DEAD"
+      value: 34
+    }
+    enumerator {
+      name: "CPUHP_PCI_XGENE_DEAD"
+      value: 35
+    }
+    enumerator {
+      name: "CPUHP_IOMMU_IOVA_DEAD"
+      value: 36
+    }
+    enumerator {
+      name: "CPUHP_LUSTRE_CFS_DEAD"
+      value: 37
+    }
+    enumerator {
+      name: "CPUHP_AP_ARM_CACHE_B15_RAC_DEAD"
+      value: 38
+    }
+    enumerator {
+      name: "CPUHP_PADATA_DEAD"
+      value: 39
+    }
+    enumerator {
+      name: "CPUHP_AP_DTPM_CPU_DEAD"
+      value: 40
+    }
+    enumerator {
+      name: "CPUHP_RANDOM_PREPARE"
+      value: 41
+    }
+    enumerator {
+      name: "CPUHP_WORKQUEUE_PREP"
+      value: 42
+    }
+    enumerator {
+      name: "CPUHP_POWER_NUMA_PREPARE"
+      value: 43
+    }
+    enumerator {
+      name: "CPUHP_HRTIMERS_PREPARE"
+      value: 44
+    }
+    enumerator {
+      name: "CPUHP_PROFILE_PREPARE"
+      value: 45
+    }
+    enumerator {
+      name: "CPUHP_X2APIC_PREPARE"
+      value: 46
+    }
+    enumerator {
+      name: "CPUHP_SMPCFD_PREPARE"
+      value: 47
+    }
+    enumerator {
+      name: "CPUHP_RELAY_PREPARE"
+      value: 48
+    }
+    enumerator {
+      name: "CPUHP_SLAB_PREPARE"
+      value: 49
+    }
+    enumerator {
+      name: "CPUHP_MD_RAID5_PREPARE"
+      value: 50
+    }
+    enumerator {
+      name: "CPUHP_RCUTREE_PREP"
+      value: 51
+    }
+    enumerator {
+      name: "CPUHP_CPUIDLE_COUPLED_PREPARE"
+      value: 52
+    }
+    enumerator {
+      name: "CPUHP_POWERPC_PMAC_PREPARE"
+      value: 53
+    }
+    enumerator {
+      name: "CPUHP_POWERPC_MMU_CTX_PREPARE"
+      value: 54
+    }
+    enumerator {
+      name: "CPUHP_XEN_PREPARE"
+      value: 55
+    }
+    enumerator {
+      name: "CPUHP_XEN_EVTCHN_PREPARE"
+      value: 56
+    }
+    enumerator {
+      name: "CPUHP_ARM_SHMOBILE_SCU_PREPARE"
+      value: 57
+    }
+    enumerator {
+      name: "CPUHP_SH_SH3X_PREPARE"
+      value: 58
+    }
+    enumerator {
+      name: "CPUHP_NET_FLOW_PREPARE"
+      value: 59
+    }
+    enumerator {
+      name: "CPUHP_TOPOLOGY_PREPARE"
+      value: 60
+    }
+    enumerator {
+      name: "CPUHP_NET_IUCV_PREPARE"
+      value: 61
+    }
+    enumerator {
+      name: "CPUHP_ARM_BL_PREPARE"
+      value: 62
+    }
+    enumerator {
+      name: "CPUHP_TRACE_RB_PREPARE"
+      value: 63
+    }
+    enumerator {
+      name: "CPUHP_MM_ZS_PREPARE"
+      value: 64
+    }
+    enumerator {
+      name: "CPUHP_MM_ZSWP_MEM_PREPARE"
+      value: 65
+    }
+    enumerator {
+      name: "CPUHP_MM_ZSWP_POOL_PREPARE"
+      value: 66
+    }
+    enumerator {
+      name: "CPUHP_KVM_PPC_BOOK3S_PREPARE"
+      value: 67
+    }
+    enumerator {
+      name: "CPUHP_ZCOMP_PREPARE"
+      value: 68
+    }
+    enumerator {
+      name: "CPUHP_TIMERS_PREPARE"
+      value: 69
+    }
+    enumerator {
+      name: "CPUHP_MIPS_SOC_PREPARE"
+      value: 70
+    }
+    enumerator {
+      name: "CPUHP_BP_PREPARE_DYN"
+      value: 71
+    }
+    enumerator {
+      name: "CPUHP_BP_PREPARE_DYN_END"
+      value: 91
+    }
+    enumerator {
+      name: "CPUHP_BRINGUP_CPU"
+      value: 92
+    }
+    enumerator {
+      name: "CPUHP_AP_IDLE_DEAD"
+      value: 93
+    }
+    enumerator {
+      name: "CPUHP_AP_OFFLINE"
+      value: 94
+    }
+    enumerator {
+      name: "CPUHP_AP_SCHED_STARTING"
+      value: 95
+    }
+    enumerator {
+      name: "CPUHP_AP_RCUTREE_DYING"
+      value: 96
+    }
+    enumerator {
+      name: "CPUHP_AP_CPU_PM_STARTING"
+      value: 97
+    }
+    enumerator {
+      name: "CPUHP_AP_IRQ_GIC_STARTING"
+      value: 98
+    }
+    enumerator {
+      name: "CPUHP_AP_IRQ_HIP04_STARTING"
+      value: 99
+    }
+    enumerator {
+      name: "CPUHP_AP_IRQ_APPLE_AIC_STARTING"
+      value: 100
+    }
+    enumerator {
+      name: "CPUHP_AP_IRQ_ARMADA_XP_STARTING"
+      value: 101
+    }
+    enumerator {
+      name: "CPUHP_AP_IRQ_BCM2836_STARTING"
+      value: 102
+    }
+    enumerator {
+      name: "CPUHP_AP_IRQ_MIPS_GIC_STARTING"
+      value: 103
+    }
+    enumerator {
+      name: "CPUHP_AP_IRQ_RISCV_STARTING"
+      value: 104
+    }
+    enumerator {
+      name: "CPUHP_AP_IRQ_LOONGARCH_STARTING"
+      value: 105
+    }
+    enumerator {
+      name: "CPUHP_AP_IRQ_SIFIVE_PLIC_STARTING"
+      value: 106
+    }
+    enumerator {
+      name: "CPUHP_AP_ARM_MVEBU_COHERENCY"
+      value: 107
+    }
+    enumerator {
+      name: "CPUHP_AP_MICROCODE_LOADER"
+      value: 108
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_X86_AMD_UNCORE_STARTING"
+      value: 109
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_X86_STARTING"
+      value: 110
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_X86_AMD_IBS_STARTING"
+      value: 111
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_X86_CQM_STARTING"
+      value: 112
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_X86_CSTATE_STARTING"
+      value: 113
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_XTENSA_STARTING"
+      value: 114
+    }
+    enumerator {
+      name: "CPUHP_AP_MIPS_OP_LOONGSON3_STARTING"
+      value: 115
+    }
+    enumerator {
+      name: "CPUHP_AP_ARM_VFP_STARTING"
+      value: 116
+    }
+    enumerator {
+      name: "CPUHP_AP_ARM64_DEBUG_MONITORS_STARTING"
+      value: 117
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_ARM_HW_BREAKPOINT_STARTING"
+      value: 118
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_ARM_ACPI_STARTING"
+      value: 119
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_ARM_STARTING"
+      value: 120
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_RISCV_STARTING"
+      value: 121
+    }
+    enumerator {
+      name: "CPUHP_AP_ARM_L2X0_STARTING"
+      value: 122
+    }
+    enumerator {
+      name: "CPUHP_AP_EXYNOS4_MCT_TIMER_STARTING"
+      value: 123
+    }
+    enumerator {
+      name: "CPUHP_AP_ARM_ARCH_TIMER_STARTING"
+      value: 124
+    }
+    enumerator {
+      name: "CPUHP_AP_ARM_GLOBAL_TIMER_STARTING"
+      value: 125
+    }
+    enumerator {
+      name: "CPUHP_AP_JCORE_TIMER_STARTING"
+      value: 126
+    }
+    enumerator {
+      name: "CPUHP_AP_ARM_TWD_STARTING"
+      value: 127
+    }
+    enumerator {
+      name: "CPUHP_AP_QCOM_TIMER_STARTING"
+      value: 128
+    }
+    enumerator {
+      name: "CPUHP_AP_TEGRA_TIMER_STARTING"
+      value: 129
+    }
+    enumerator {
+      name: "CPUHP_AP_ARMADA_TIMER_STARTING"
+      value: 130
+    }
+    enumerator {
+      name: "CPUHP_AP_MARCO_TIMER_STARTING"
+      value: 131
+    }
+    enumerator {
+      name: "CPUHP_AP_MIPS_GIC_TIMER_STARTING"
+      value: 132
+    }
+    enumerator {
+      name: "CPUHP_AP_ARC_TIMER_STARTING"
+      value: 133
+    }
+    enumerator {
+      name: "CPUHP_AP_RISCV_TIMER_STARTING"
+      value: 134
+    }
+    enumerator {
+      name: "CPUHP_AP_CLINT_TIMER_STARTING"
+      value: 135
+    }
+    enumerator {
+      name: "CPUHP_AP_CSKY_TIMER_STARTING"
+      value: 136
+    }
+    enumerator {
+      name: "CPUHP_AP_TI_GP_TIMER_STARTING"
+      value: 137
+    }
+    enumerator {
+      name: "CPUHP_AP_HYPERV_TIMER_STARTING"
+      value: 138
+    }
+    enumerator {
+      name: "CPUHP_AP_KVM_STARTING"
+      value: 139
+    }
+    enumerator {
+      name: "CPUHP_AP_KVM_ARM_VGIC_INIT_STARTING"
+      value: 140
+    }
+    enumerator {
+      name: "CPUHP_AP_KVM_ARM_VGIC_STARTING"
+      value: 141
+    }
+    enumerator {
+      name: "CPUHP_AP_KVM_ARM_TIMER_STARTING"
+      value: 142
+    }
+    enumerator {
+      name: "CPUHP_AP_DUMMY_TIMER_STARTING"
+      value: 143
+    }
+    enumerator {
+      name: "CPUHP_AP_ARM_XEN_STARTING"
+      value: 144
+    }
+    enumerator {
+      name: "CPUHP_AP_ARM_CORESIGHT_STARTING"
+      value: 145
+    }
+    enumerator {
+      name: "CPUHP_AP_ARM_CORESIGHT_CTI_STARTING"
+      value: 146
+    }
+    enumerator {
+      name: "CPUHP_AP_ARM64_ISNDEP_STARTING"
+      value: 147
+    }
+    enumerator {
+      name: "CPUHP_AP_SMPCFD_DYING"
+      value: 148
+    }
+    enumerator {
+      name: "CPUHP_AP_X86_TBOOT_DYING"
+      value: 149
+    }
+    enumerator {
+      name: "CPUHP_AP_ARM_CACHE_B15_RAC_DYING"
+      value: 150
+    }
+    enumerator {
+      name: "CPUHP_AP_ONLINE"
+      value: 151
+    }
+    enumerator {
+      name: "CPUHP_TEARDOWN_CPU"
+      value: 152
+    }
+    enumerator {
+      name: "CPUHP_AP_ONLINE_IDLE"
+      value: 153
+    }
+    enumerator {
+      name: "CPUHP_AP_SCHED_WAIT_EMPTY"
+      value: 154
+    }
+    enumerator {
+      name: "CPUHP_AP_SMPBOOT_THREADS"
+      value: 155
+    }
+    enumerator {
+      name: "CPUHP_AP_X86_VDSO_VMA_ONLINE"
+      value: 156
+    }
+    enumerator {
+      name: "CPUHP_AP_IRQ_AFFINITY_ONLINE"
+      value: 157
+    }
+    enumerator {
+      name: "CPUHP_AP_BLK_MQ_ONLINE"
+      value: 158
+    }
+    enumerator {
+      name: "CPUHP_AP_ARM_MVEBU_SYNC_CLOCKS"
+      value: 159
+    }
+    enumerator {
+      name: "CPUHP_AP_X86_INTEL_EPB_ONLINE"
+      value: 160
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_ONLINE"
+      value: 161
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_X86_ONLINE"
+      value: 162
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_X86_UNCORE_ONLINE"
+      value: 163
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_X86_AMD_UNCORE_ONLINE"
+      value: 164
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_X86_AMD_POWER_ONLINE"
+      value: 165
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_X86_RAPL_ONLINE"
+      value: 166
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_X86_CQM_ONLINE"
+      value: 167
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_X86_CSTATE_ONLINE"
+      value: 168
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_X86_IDXD_ONLINE"
+      value: 169
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_S390_CF_ONLINE"
+      value: 170
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_S390_SF_ONLINE"
+      value: 171
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_ARM_CCI_ONLINE"
+      value: 172
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_ARM_CCN_ONLINE"
+      value: 173
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_ARM_HISI_CPA_ONLINE"
+      value: 174
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_ARM_HISI_DDRC_ONLINE"
+      value: 175
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_ARM_HISI_HHA_ONLINE"
+      value: 176
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_ARM_HISI_L3_ONLINE"
+      value: 177
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_ARM_HISI_PA_ONLINE"
+      value: 178
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_ARM_HISI_SLLC_ONLINE"
+      value: 179
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_ARM_HISI_PCIE_PMU_ONLINE"
+      value: 180
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_ARM_HNS3_PMU_ONLINE"
+      value: 181
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_ARM_L2X0_ONLINE"
+      value: 182
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_ARM_QCOM_L2_ONLINE"
+      value: 183
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_ARM_QCOM_L3_ONLINE"
+      value: 184
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_ARM_APM_XGENE_ONLINE"
+      value: 185
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_ARM_CAVIUM_TX2_UNCORE_ONLINE"
+      value: 186
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_ARM_MARVELL_CN10K_DDR_ONLINE"
+      value: 187
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_POWERPC_NEST_IMC_ONLINE"
+      value: 188
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_POWERPC_CORE_IMC_ONLINE"
+      value: 189
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_POWERPC_THREAD_IMC_ONLINE"
+      value: 190
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_POWERPC_TRACE_IMC_ONLINE"
+      value: 191
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_POWERPC_HV_24x7_ONLINE"
+      value: 192
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_POWERPC_HV_GPCI_ONLINE"
+      value: 193
+    }
+    enumerator {
+      name: "CPUHP_AP_PERF_CSKY_ONLINE"
+      value: 194
+    }
+    enumerator {
+      name: "CPUHP_AP_WATCHDOG_ONLINE"
+      value: 195
+    }
+    enumerator {
+      name: "CPUHP_AP_WORKQUEUE_ONLINE"
+      value: 196
+    }
+    enumerator {
+      name: "CPUHP_AP_RANDOM_ONLINE"
+      value: 197
+    }
+    enumerator {
+      name: "CPUHP_AP_RCUTREE_ONLINE"
+      value: 198
+    }
+    enumerator {
+      name: "CPUHP_AP_BASE_CACHEINFO_ONLINE"
+      value: 199
+    }
+    enumerator {
+      name: "CPUHP_AP_ONLINE_DYN"
+      value: 200
+    }
+    enumerator {
+      name: "CPUHP_AP_ONLINE_DYN_END"
+      value: 230
+    }
+    enumerator {
+      name: "CPUHP_AP_MM_DEMOTION_ONLINE"
+      value: 231
+    }
+    enumerator {
+      name: "CPUHP_AP_X86_HPET_ONLINE"
+      value: 232
+    }
+    enumerator {
+      name: "CPUHP_AP_X86_KVM_CLK_ONLINE"
+      value: 233
+    }
+    enumerator {
+      name: "CPUHP_AP_ACTIVE"
+      value: 234
+    }
+    enumerator {
+      name: "CPUHP_ANDROID_RESERVED_1"
+      value: 235
+    }
+    enumerator {
+      name: "CPUHP_ANDROID_RESERVED_2"
+      value: 236
+    }
+    enumerator {
+      name: "CPUHP_ANDROID_RESERVED_3"
+      value: 237
+    }
+    enumerator {
+      name: "CPUHP_ANDROID_RESERVED_4"
+      value: 238
+    }
+    enumerator {
+      name: "CPUHP_ONLINE"
+      value: 239
+    }
+  }
+}
+enumeration {
+  id: 0x872c701d
+  name: "data_direction"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DATA_DIR_UNKNOWN"
+    }
+    enumerator {
+      name: "DATA_DIR_FROM_HOST"
+      value: 1
+    }
+    enumerator {
+      name: "DATA_DIR_TO_HOST"
+      value: 2
+    }
+    enumerator {
+      name: "DATA_DIR_NONE"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x2b23aa9d
+  name: "dax_access_mode"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DAX_ACCESS"
+    }
+    enumerator {
+      name: "DAX_RECOVERY_WRITE"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0xf2289b65
+  name: "desc_idn"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "QUERY_DESC_IDN_DEVICE"
+    }
+    enumerator {
+      name: "QUERY_DESC_IDN_CONFIGURATION"
+      value: 1
+    }
+    enumerator {
+      name: "QUERY_DESC_IDN_UNIT"
+      value: 2
+    }
+    enumerator {
+      name: "QUERY_DESC_IDN_RFU_0"
+      value: 3
+    }
+    enumerator {
+      name: "QUERY_DESC_IDN_INTERCONNECT"
+      value: 4
+    }
+    enumerator {
+      name: "QUERY_DESC_IDN_STRING"
+      value: 5
+    }
+    enumerator {
+      name: "QUERY_DESC_IDN_RFU_1"
+      value: 6
+    }
+    enumerator {
+      name: "QUERY_DESC_IDN_GEOMETRY"
+      value: 7
+    }
+    enumerator {
+      name: "QUERY_DESC_IDN_POWER"
+      value: 8
+    }
+    enumerator {
+      name: "QUERY_DESC_IDN_HEALTH"
+      value: 9
+    }
+    enumerator {
+      name: "QUERY_DESC_IDN_MAX"
+      value: 10
+    }
+  }
+}
+enumeration {
+  id: 0x59f48707
+  name: "dev_cmd_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DEV_CMD_TYPE_NOP"
+    }
+    enumerator {
+      name: "DEV_CMD_TYPE_QUERY"
+      value: 1
+    }
+    enumerator {
+      name: "DEV_CMD_TYPE_RPMB"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0xf23e8927
+  name: "dev_dma_attr"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DEV_DMA_NOT_SUPPORTED"
+    }
+    enumerator {
+      name: "DEV_DMA_NON_COHERENT"
+      value: 1
+    }
+    enumerator {
+      name: "DEV_DMA_COHERENT"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x368ec5cb
+  name: "dev_pm_qos_req_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DEV_PM_QOS_RESUME_LATENCY"
+      value: 1
+    }
+    enumerator {
+      name: "DEV_PM_QOS_LATENCY_TOLERANCE"
+      value: 2
+    }
+    enumerator {
+      name: "DEV_PM_QOS_MIN_FREQUENCY"
+      value: 3
+    }
+    enumerator {
+      name: "DEV_PM_QOS_MAX_FREQUENCY"
+      value: 4
+    }
+    enumerator {
+      name: "DEV_PM_QOS_FLAGS"
+      value: 5
+    }
+  }
+}
+enumeration {
+  id: 0x388fac8e
+  name: "dev_prop_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DEV_PROP_U8"
+    }
+    enumerator {
+      name: "DEV_PROP_U16"
+      value: 1
+    }
+    enumerator {
+      name: "DEV_PROP_U32"
+      value: 2
+    }
+    enumerator {
+      name: "DEV_PROP_U64"
+      value: 3
+    }
+    enumerator {
+      name: "DEV_PROP_STRING"
+      value: 4
+    }
+    enumerator {
+      name: "DEV_PROP_REF"
+      value: 5
+    }
+  }
+}
+enumeration {
+  id: 0x3b4afe23
+  name: "devfreq_timer"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DEVFREQ_TIMER_DEFERRABLE"
+    }
+    enumerator {
+      name: "DEVFREQ_TIMER_DELAYED"
+      value: 1
+    }
+    enumerator {
+      name: "DEVFREQ_TIMER_NUM"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x9be84f35
+  name: "device_link_state"
+  definition {
+    underlying_type_id: 0x6720d32f
+    enumerator {
+      name: "DL_STATE_NONE"
+      value: -1
+    }
+    enumerator {
+      name: "DL_STATE_DORMANT"
+    }
+    enumerator {
+      name: "DL_STATE_AVAILABLE"
+      value: 1
+    }
+    enumerator {
+      name: "DL_STATE_CONSUMER_PROBE"
+      value: 2
+    }
+    enumerator {
+      name: "DL_STATE_ACTIVE"
+      value: 3
+    }
+    enumerator {
+      name: "DL_STATE_SUPPLIER_UNBIND"
+      value: 4
+    }
+  }
+}
+enumeration {
+  id: 0x8da29217
+  name: "device_physical_location_horizontal_position"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DEVICE_HORI_POS_LEFT"
+    }
+    enumerator {
+      name: "DEVICE_HORI_POS_CENTER"
+      value: 1
+    }
+    enumerator {
+      name: "DEVICE_HORI_POS_RIGHT"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x8acbefdb
+  name: "device_physical_location_panel"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DEVICE_PANEL_TOP"
+    }
+    enumerator {
+      name: "DEVICE_PANEL_BOTTOM"
+      value: 1
+    }
+    enumerator {
+      name: "DEVICE_PANEL_LEFT"
+      value: 2
+    }
+    enumerator {
+      name: "DEVICE_PANEL_RIGHT"
+      value: 3
+    }
+    enumerator {
+      name: "DEVICE_PANEL_FRONT"
+      value: 4
+    }
+    enumerator {
+      name: "DEVICE_PANEL_BACK"
+      value: 5
+    }
+    enumerator {
+      name: "DEVICE_PANEL_UNKNOWN"
+      value: 6
+    }
+  }
+}
+enumeration {
+  id: 0x04a177c7
+  name: "device_physical_location_vertical_position"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DEVICE_VERT_POS_UPPER"
+    }
+    enumerator {
+      name: "DEVICE_VERT_POS_CENTER"
+      value: 1
+    }
+    enumerator {
+      name: "DEVICE_VERT_POS_LOWER"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x9d5be0f6
+  name: "device_removable"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DEVICE_REMOVABLE_NOT_SUPPORTED"
+    }
+    enumerator {
+      name: "DEVICE_REMOVABLE_UNKNOWN"
+      value: 1
+    }
+    enumerator {
+      name: "DEVICE_FIXED"
+      value: 2
+    }
+    enumerator {
+      name: "DEVICE_REMOVABLE"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x03e0374b
+  name: "devlink_port_flavour"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DEVLINK_PORT_FLAVOUR_PHYSICAL"
+    }
+    enumerator {
+      name: "DEVLINK_PORT_FLAVOUR_CPU"
+      value: 1
+    }
+    enumerator {
+      name: "DEVLINK_PORT_FLAVOUR_DSA"
+      value: 2
+    }
+    enumerator {
+      name: "DEVLINK_PORT_FLAVOUR_PCI_PF"
+      value: 3
+    }
+    enumerator {
+      name: "DEVLINK_PORT_FLAVOUR_PCI_VF"
+      value: 4
+    }
+    enumerator {
+      name: "DEVLINK_PORT_FLAVOUR_VIRTUAL"
+      value: 5
+    }
+    enumerator {
+      name: "DEVLINK_PORT_FLAVOUR_UNUSED"
+      value: 6
+    }
+    enumerator {
+      name: "DEVLINK_PORT_FLAVOUR_PCI_SF"
+      value: 7
+    }
+  }
+}
+enumeration {
+  id: 0x100964d4
+  name: "devlink_port_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DEVLINK_PORT_TYPE_NOTSET"
+    }
+    enumerator {
+      name: "DEVLINK_PORT_TYPE_AUTO"
+      value: 1
+    }
+    enumerator {
+      name: "DEVLINK_PORT_TYPE_ETH"
+      value: 2
+    }
+    enumerator {
+      name: "DEVLINK_PORT_TYPE_IB"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0xa45ef3d0
+  name: "devlink_rate_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DEVLINK_RATE_TYPE_LEAF"
+    }
+    enumerator {
+      name: "DEVLINK_RATE_TYPE_NODE"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0x69efc53e
+  name: "df_reason"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DF_NORMAL"
+    }
+    enumerator {
+      name: "DF_UNDER_PRESSURE"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0x664b4e02
+  name: "display_flags"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DISPLAY_FLAGS_HSYNC_LOW"
+      value: 1
+    }
+    enumerator {
+      name: "DISPLAY_FLAGS_HSYNC_HIGH"
+      value: 2
+    }
+    enumerator {
+      name: "DISPLAY_FLAGS_VSYNC_LOW"
+      value: 4
+    }
+    enumerator {
+      name: "DISPLAY_FLAGS_VSYNC_HIGH"
+      value: 8
+    }
+    enumerator {
+      name: "DISPLAY_FLAGS_DE_LOW"
+      value: 16
+    }
+    enumerator {
+      name: "DISPLAY_FLAGS_DE_HIGH"
+      value: 32
+    }
+    enumerator {
+      name: "DISPLAY_FLAGS_PIXDATA_POSEDGE"
+      value: 64
+    }
+    enumerator {
+      name: "DISPLAY_FLAGS_PIXDATA_NEGEDGE"
+      value: 128
+    }
+    enumerator {
+      name: "DISPLAY_FLAGS_INTERLACED"
+      value: 256
+    }
+    enumerator {
+      name: "DISPLAY_FLAGS_DOUBLESCAN"
+      value: 512
+    }
+    enumerator {
+      name: "DISPLAY_FLAGS_DOUBLECLK"
+      value: 1024
+    }
+    enumerator {
+      name: "DISPLAY_FLAGS_SYNC_POSEDGE"
+      value: 2048
+    }
+    enumerator {
+      name: "DISPLAY_FLAGS_SYNC_NEGEDGE"
+      value: 4096
+    }
+  }
+}
+enumeration {
+  id: 0xcf5136cf
+  name: "dl_dev_state"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DL_DEV_NO_DRIVER"
+    }
+    enumerator {
+      name: "DL_DEV_PROBING"
+      value: 1
+    }
+    enumerator {
+      name: "DL_DEV_DRIVER_BOUND"
+      value: 2
+    }
+    enumerator {
+      name: "DL_DEV_UNBINDING"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x3e09ba9c
+  name: "dma_ctrl_flags"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DMA_PREP_INTERRUPT"
+      value: 1
+    }
+    enumerator {
+      name: "DMA_CTRL_ACK"
+      value: 2
+    }
+    enumerator {
+      name: "DMA_PREP_PQ_DISABLE_P"
+      value: 4
+    }
+    enumerator {
+      name: "DMA_PREP_PQ_DISABLE_Q"
+      value: 8
+    }
+    enumerator {
+      name: "DMA_PREP_CONTINUE"
+      value: 16
+    }
+    enumerator {
+      name: "DMA_PREP_FENCE"
+      value: 32
+    }
+    enumerator {
+      name: "DMA_CTRL_REUSE"
+      value: 64
+    }
+    enumerator {
+      name: "DMA_PREP_CMD"
+      value: 128
+    }
+    enumerator {
+      name: "DMA_PREP_REPEAT"
+      value: 256
+    }
+    enumerator {
+      name: "DMA_PREP_LOAD_EOT"
+      value: 512
+    }
+  }
+}
+enumeration {
+  id: 0xcd84e3cd
+  name: "dma_data_direction"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DMA_BIDIRECTIONAL"
+    }
+    enumerator {
+      name: "DMA_TO_DEVICE"
+      value: 1
+    }
+    enumerator {
+      name: "DMA_FROM_DEVICE"
+      value: 2
+    }
+    enumerator {
+      name: "DMA_NONE"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x86728ee6
+  name: "dma_desc_metadata_mode"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DESC_METADATA_NONE"
+    }
+    enumerator {
+      name: "DESC_METADATA_CLIENT"
+      value: 1
+    }
+    enumerator {
+      name: "DESC_METADATA_ENGINE"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x9d079a43
+  name: "dma_residue_granularity"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DMA_RESIDUE_GRANULARITY_DESCRIPTOR"
+    }
+    enumerator {
+      name: "DMA_RESIDUE_GRANULARITY_SEGMENT"
+      value: 1
+    }
+    enumerator {
+      name: "DMA_RESIDUE_GRANULARITY_BURST"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x26731c99
+  name: "dma_resv_usage"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DMA_RESV_USAGE_KERNEL"
+    }
+    enumerator {
+      name: "DMA_RESV_USAGE_WRITE"
+      value: 1
+    }
+    enumerator {
+      name: "DMA_RESV_USAGE_READ"
+      value: 2
+    }
+    enumerator {
+      name: "DMA_RESV_USAGE_BOOKKEEP"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x5258ec21
+  name: "dma_slave_buswidth"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DMA_SLAVE_BUSWIDTH_UNDEFINED"
+    }
+    enumerator {
+      name: "DMA_SLAVE_BUSWIDTH_1_BYTE"
+      value: 1
+    }
+    enumerator {
+      name: "DMA_SLAVE_BUSWIDTH_2_BYTES"
+      value: 2
+    }
+    enumerator {
+      name: "DMA_SLAVE_BUSWIDTH_3_BYTES"
+      value: 3
+    }
+    enumerator {
+      name: "DMA_SLAVE_BUSWIDTH_4_BYTES"
+      value: 4
+    }
+    enumerator {
+      name: "DMA_SLAVE_BUSWIDTH_8_BYTES"
+      value: 8
+    }
+    enumerator {
+      name: "DMA_SLAVE_BUSWIDTH_16_BYTES"
+      value: 16
+    }
+    enumerator {
+      name: "DMA_SLAVE_BUSWIDTH_32_BYTES"
+      value: 32
+    }
+    enumerator {
+      name: "DMA_SLAVE_BUSWIDTH_64_BYTES"
+      value: 64
+    }
+    enumerator {
+      name: "DMA_SLAVE_BUSWIDTH_128_BYTES"
+      value: 128
+    }
+  }
+}
+enumeration {
+  id: 0x3e77b2d8
+  name: "dma_status"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DMA_COMPLETE"
+    }
+    enumerator {
+      name: "DMA_IN_PROGRESS"
+      value: 1
+    }
+    enumerator {
+      name: "DMA_PAUSED"
+      value: 2
+    }
+    enumerator {
+      name: "DMA_ERROR"
+      value: 3
+    }
+    enumerator {
+      name: "DMA_OUT_OF_ORDER"
+      value: 4
+    }
+  }
+}
+enumeration {
+  id: 0xf17ebd32
+  name: "dma_transfer_direction"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DMA_MEM_TO_MEM"
+    }
+    enumerator {
+      name: "DMA_MEM_TO_DEV"
+      value: 1
+    }
+    enumerator {
+      name: "DMA_DEV_TO_MEM"
+      value: 2
+    }
+    enumerator {
+      name: "DMA_DEV_TO_DEV"
+      value: 3
+    }
+    enumerator {
+      name: "DMA_TRANS_NONE"
+      value: 4
+    }
+  }
+}
+enumeration {
+  id: 0x5d9a121f
+  name: "dmaengine_alignment"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DMAENGINE_ALIGN_1_BYTE"
+    }
+    enumerator {
+      name: "DMAENGINE_ALIGN_2_BYTES"
+      value: 1
+    }
+    enumerator {
+      name: "DMAENGINE_ALIGN_4_BYTES"
+      value: 2
+    }
+    enumerator {
+      name: "DMAENGINE_ALIGN_8_BYTES"
+      value: 3
+    }
+    enumerator {
+      name: "DMAENGINE_ALIGN_16_BYTES"
+      value: 4
+    }
+    enumerator {
+      name: "DMAENGINE_ALIGN_32_BYTES"
+      value: 5
+    }
+    enumerator {
+      name: "DMAENGINE_ALIGN_64_BYTES"
+      value: 6
+    }
+    enumerator {
+      name: "DMAENGINE_ALIGN_128_BYTES"
+      value: 7
+    }
+    enumerator {
+      name: "DMAENGINE_ALIGN_256_BYTES"
+      value: 8
+    }
+  }
+}
+enumeration {
+  id: 0xe4de5ee5
+  name: "dmaengine_tx_result"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DMA_TRANS_NOERROR"
+    }
+    enumerator {
+      name: "DMA_TRANS_READ_FAILED"
+      value: 1
+    }
+    enumerator {
+      name: "DMA_TRANS_WRITE_FAILED"
+      value: 2
+    }
+    enumerator {
+      name: "DMA_TRANS_ABORTED"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0xe5c5fb3f
+  name: "dpm_order"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DPM_ORDER_NONE"
+    }
+    enumerator {
+      name: "DPM_ORDER_DEV_AFTER_PARENT"
+      value: 1
+    }
+    enumerator {
+      name: "DPM_ORDER_PARENT_BEFORE_DEV"
+      value: 2
+    }
+    enumerator {
+      name: "DPM_ORDER_DEV_LAST"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x78d7d113
+  name: "drm_bridge_attach_flags"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DRM_BRIDGE_ATTACH_NO_CONNECTOR"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0x66326f89
+  name: "drm_bridge_ops"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DRM_BRIDGE_OP_DETECT"
+      value: 1
+    }
+    enumerator {
+      name: "DRM_BRIDGE_OP_EDID"
+      value: 2
+    }
+    enumerator {
+      name: "DRM_BRIDGE_OP_HPD"
+      value: 4
+    }
+    enumerator {
+      name: "DRM_BRIDGE_OP_MODES"
+      value: 8
+    }
+  }
+}
+enumeration {
+  id: 0x24c39c69
+  name: "drm_color_encoding"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DRM_COLOR_YCBCR_BT601"
+    }
+    enumerator {
+      name: "DRM_COLOR_YCBCR_BT709"
+      value: 1
+    }
+    enumerator {
+      name: "DRM_COLOR_YCBCR_BT2020"
+      value: 2
+    }
+    enumerator {
+      name: "DRM_COLOR_ENCODING_MAX"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x1cded491
+  name: "drm_color_range"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DRM_COLOR_YCBCR_LIMITED_RANGE"
+    }
+    enumerator {
+      name: "DRM_COLOR_YCBCR_FULL_RANGE"
+      value: 1
+    }
+    enumerator {
+      name: "DRM_COLOR_RANGE_MAX"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x658d0669
+  name: "drm_connector_force"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DRM_FORCE_UNSPECIFIED"
+    }
+    enumerator {
+      name: "DRM_FORCE_OFF"
+      value: 1
+    }
+    enumerator {
+      name: "DRM_FORCE_ON"
+      value: 2
+    }
+    enumerator {
+      name: "DRM_FORCE_ON_DIGITAL"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x0203f20d
+  name: "drm_connector_registration_state"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DRM_CONNECTOR_INITIALIZING"
+    }
+    enumerator {
+      name: "DRM_CONNECTOR_REGISTERED"
+      value: 1
+    }
+    enumerator {
+      name: "DRM_CONNECTOR_UNREGISTERED"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x4a500dc8
+  name: "drm_connector_status"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "connector_status_connected"
+      value: 1
+    }
+    enumerator {
+      name: "connector_status_disconnected"
+      value: 2
+    }
+    enumerator {
+      name: "connector_status_unknown"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x65b2ef28
+  name: "drm_debug_category"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DRM_UT_CORE"
+    }
+    enumerator {
+      name: "DRM_UT_DRIVER"
+      value: 1
+    }
+    enumerator {
+      name: "DRM_UT_KMS"
+      value: 2
+    }
+    enumerator {
+      name: "DRM_UT_PRIME"
+      value: 3
+    }
+    enumerator {
+      name: "DRM_UT_ATOMIC"
+      value: 4
+    }
+    enumerator {
+      name: "DRM_UT_VBL"
+      value: 5
+    }
+    enumerator {
+      name: "DRM_UT_STATE"
+      value: 6
+    }
+    enumerator {
+      name: "DRM_UT_LEASE"
+      value: 7
+    }
+    enumerator {
+      name: "DRM_UT_DP"
+      value: 8
+    }
+    enumerator {
+      name: "DRM_UT_DRMRES"
+      value: 9
+    }
+  }
+}
+enumeration {
+  id: 0x89ab06e3
+  name: "drm_ioctl_flags"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DRM_AUTH"
+      value: 1
+    }
+    enumerator {
+      name: "DRM_MASTER"
+      value: 2
+    }
+    enumerator {
+      name: "DRM_ROOT_ONLY"
+      value: 4
+    }
+    enumerator {
+      name: "DRM_UNLOCKED"
+      value: 16
+    }
+    enumerator {
+      name: "DRM_RENDER_ALLOW"
+      value: 32
+    }
+  }
+}
+enumeration {
+  id: 0x0bc9f5b4
+  name: "drm_link_status"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DRM_LINK_STATUS_GOOD"
+    }
+    enumerator {
+      name: "DRM_LINK_STATUS_BAD"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0xc66085ec
+  name: "drm_mm_insert_mode"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DRM_MM_INSERT_BEST"
+    }
+    enumerator {
+      name: "DRM_MM_INSERT_LOW"
+      value: 1
+    }
+    enumerator {
+      name: "DRM_MM_INSERT_HIGH"
+      value: 2
+    }
+    enumerator {
+      name: "DRM_MM_INSERT_EVICT"
+      value: 3
+    }
+    enumerator {
+      name: "DRM_MM_INSERT_ONCE"
+      value: 2147483648
+    }
+    enumerator {
+      name: "DRM_MM_INSERT_HIGHEST"
+      value: 2147483650
+    }
+    enumerator {
+      name: "DRM_MM_INSERT_LOWEST"
+      value: 2147483649
+    }
+  }
+}
+enumeration {
+  id: 0x067c4b9a
+  name: "drm_mode_status"
+  definition {
+    underlying_type_id: 0x6720d32f
+    enumerator {
+      name: "MODE_OK"
+    }
+    enumerator {
+      name: "MODE_HSYNC"
+      value: 1
+    }
+    enumerator {
+      name: "MODE_VSYNC"
+      value: 2
+    }
+    enumerator {
+      name: "MODE_H_ILLEGAL"
+      value: 3
+    }
+    enumerator {
+      name: "MODE_V_ILLEGAL"
+      value: 4
+    }
+    enumerator {
+      name: "MODE_BAD_WIDTH"
+      value: 5
+    }
+    enumerator {
+      name: "MODE_NOMODE"
+      value: 6
+    }
+    enumerator {
+      name: "MODE_NO_INTERLACE"
+      value: 7
+    }
+    enumerator {
+      name: "MODE_NO_DBLESCAN"
+      value: 8
+    }
+    enumerator {
+      name: "MODE_NO_VSCAN"
+      value: 9
+    }
+    enumerator {
+      name: "MODE_MEM"
+      value: 10
+    }
+    enumerator {
+      name: "MODE_VIRTUAL_X"
+      value: 11
+    }
+    enumerator {
+      name: "MODE_VIRTUAL_Y"
+      value: 12
+    }
+    enumerator {
+      name: "MODE_MEM_VIRT"
+      value: 13
+    }
+    enumerator {
+      name: "MODE_NOCLOCK"
+      value: 14
+    }
+    enumerator {
+      name: "MODE_CLOCK_HIGH"
+      value: 15
+    }
+    enumerator {
+      name: "MODE_CLOCK_LOW"
+      value: 16
+    }
+    enumerator {
+      name: "MODE_CLOCK_RANGE"
+      value: 17
+    }
+    enumerator {
+      name: "MODE_BAD_HVALUE"
+      value: 18
+    }
+    enumerator {
+      name: "MODE_BAD_VVALUE"
+      value: 19
+    }
+    enumerator {
+      name: "MODE_BAD_VSCAN"
+      value: 20
+    }
+    enumerator {
+      name: "MODE_HSYNC_NARROW"
+      value: 21
+    }
+    enumerator {
+      name: "MODE_HSYNC_WIDE"
+      value: 22
+    }
+    enumerator {
+      name: "MODE_HBLANK_NARROW"
+      value: 23
+    }
+    enumerator {
+      name: "MODE_HBLANK_WIDE"
+      value: 24
+    }
+    enumerator {
+      name: "MODE_VSYNC_NARROW"
+      value: 25
+    }
+    enumerator {
+      name: "MODE_VSYNC_WIDE"
+      value: 26
+    }
+    enumerator {
+      name: "MODE_VBLANK_NARROW"
+      value: 27
+    }
+    enumerator {
+      name: "MODE_VBLANK_WIDE"
+      value: 28
+    }
+    enumerator {
+      name: "MODE_PANEL"
+      value: 29
+    }
+    enumerator {
+      name: "MODE_INTERLACE_WIDTH"
+      value: 30
+    }
+    enumerator {
+      name: "MODE_ONE_WIDTH"
+      value: 31
+    }
+    enumerator {
+      name: "MODE_ONE_HEIGHT"
+      value: 32
+    }
+    enumerator {
+      name: "MODE_ONE_SIZE"
+      value: 33
+    }
+    enumerator {
+      name: "MODE_NO_REDUCED"
+      value: 34
+    }
+    enumerator {
+      name: "MODE_NO_STEREO"
+      value: 35
+    }
+    enumerator {
+      name: "MODE_NO_420"
+      value: 36
+    }
+    enumerator {
+      name: "MODE_STALE"
+      value: -3
+    }
+    enumerator {
+      name: "MODE_BAD"
+      value: -2
+    }
+    enumerator {
+      name: "MODE_ERROR"
+      value: -1
+    }
+  }
+}
+enumeration {
+  id: 0xf24d5b17
+  name: "drm_mode_subconnector"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DRM_MODE_SUBCONNECTOR_Automatic"
+    }
+    enumerator {
+      name: "DRM_MODE_SUBCONNECTOR_Unknown"
+    }
+    enumerator {
+      name: "DRM_MODE_SUBCONNECTOR_VGA"
+      value: 1
+    }
+    enumerator {
+      name: "DRM_MODE_SUBCONNECTOR_DVID"
+      value: 3
+    }
+    enumerator {
+      name: "DRM_MODE_SUBCONNECTOR_DVIA"
+      value: 4
+    }
+    enumerator {
+      name: "DRM_MODE_SUBCONNECTOR_Composite"
+      value: 5
+    }
+    enumerator {
+      name: "DRM_MODE_SUBCONNECTOR_SVIDEO"
+      value: 6
+    }
+    enumerator {
+      name: "DRM_MODE_SUBCONNECTOR_Component"
+      value: 8
+    }
+    enumerator {
+      name: "DRM_MODE_SUBCONNECTOR_SCART"
+      value: 9
+    }
+    enumerator {
+      name: "DRM_MODE_SUBCONNECTOR_DisplayPort"
+      value: 10
+    }
+    enumerator {
+      name: "DRM_MODE_SUBCONNECTOR_HDMIA"
+      value: 11
+    }
+    enumerator {
+      name: "DRM_MODE_SUBCONNECTOR_Native"
+      value: 15
+    }
+    enumerator {
+      name: "DRM_MODE_SUBCONNECTOR_Wireless"
+      value: 18
+    }
+  }
+}
+enumeration {
+  id: 0x8224e5a5
+  name: "drm_panel_orientation"
+  definition {
+    underlying_type_id: 0x6720d32f
+    enumerator {
+      name: "DRM_MODE_PANEL_ORIENTATION_UNKNOWN"
+      value: -1
+    }
+    enumerator {
+      name: "DRM_MODE_PANEL_ORIENTATION_NORMAL"
+    }
+    enumerator {
+      name: "DRM_MODE_PANEL_ORIENTATION_BOTTOM_UP"
+      value: 1
+    }
+    enumerator {
+      name: "DRM_MODE_PANEL_ORIENTATION_LEFT_UP"
+      value: 2
+    }
+    enumerator {
+      name: "DRM_MODE_PANEL_ORIENTATION_RIGHT_UP"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x33e3ad2f
+  name: "drm_plane_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DRM_PLANE_TYPE_OVERLAY"
+    }
+    enumerator {
+      name: "DRM_PLANE_TYPE_PRIMARY"
+      value: 1
+    }
+    enumerator {
+      name: "DRM_PLANE_TYPE_CURSOR"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x2ec9644b
+  name: "drm_privacy_screen_status"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "PRIVACY_SCREEN_DISABLED"
+    }
+    enumerator {
+      name: "PRIVACY_SCREEN_ENABLED"
+      value: 1
+    }
+    enumerator {
+      name: "PRIVACY_SCREEN_DISABLED_LOCKED"
+      value: 2
+    }
+    enumerator {
+      name: "PRIVACY_SCREEN_ENABLED_LOCKED"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x7802cc54
+  name: "drm_scaling_filter"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DRM_SCALING_FILTER_DEFAULT"
+    }
+    enumerator {
+      name: "DRM_SCALING_FILTER_NEAREST_NEIGHBOR"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0x8f1b3fcf
+  name: "ehci_hrtimer_event"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "EHCI_HRTIMER_POLL_ASS"
+    }
+    enumerator {
+      name: "EHCI_HRTIMER_POLL_PSS"
+      value: 1
+    }
+    enumerator {
+      name: "EHCI_HRTIMER_POLL_DEAD"
+      value: 2
+    }
+    enumerator {
+      name: "EHCI_HRTIMER_UNLINK_INTR"
+      value: 3
+    }
+    enumerator {
+      name: "EHCI_HRTIMER_FREE_ITDS"
+      value: 4
+    }
+    enumerator {
+      name: "EHCI_HRTIMER_ACTIVE_UNLINK"
+      value: 5
+    }
+    enumerator {
+      name: "EHCI_HRTIMER_START_UNLINK_INTR"
+      value: 6
+    }
+    enumerator {
+      name: "EHCI_HRTIMER_ASYNC_UNLINKS"
+      value: 7
+    }
+    enumerator {
+      name: "EHCI_HRTIMER_IAA_WATCHDOG"
+      value: 8
+    }
+    enumerator {
+      name: "EHCI_HRTIMER_DISABLE_PERIODIC"
+      value: 9
+    }
+    enumerator {
+      name: "EHCI_HRTIMER_DISABLE_ASYNC"
+      value: 10
+    }
+    enumerator {
+      name: "EHCI_HRTIMER_IO_WATCHDOG"
+      value: 11
+    }
+    enumerator {
+      name: "EHCI_HRTIMER_NUM_EVENTS"
+      value: 12
+    }
+  }
+}
+enumeration {
+  id: 0x1f1172b5
+  name: "ehci_rh_state"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "EHCI_RH_HALTED"
+    }
+    enumerator {
+      name: "EHCI_RH_SUSPENDED"
+      value: 1
+    }
+    enumerator {
+      name: "EHCI_RH_RUNNING"
+      value: 2
+    }
+    enumerator {
+      name: "EHCI_RH_STOPPING"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x181d94fa
+  name: "elv_merge"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "ELEVATOR_NO_MERGE"
+    }
+    enumerator {
+      name: "ELEVATOR_FRONT_MERGE"
+      value: 1
+    }
+    enumerator {
+      name: "ELEVATOR_BACK_MERGE"
+      value: 2
+    }
+    enumerator {
+      name: "ELEVATOR_DISCARD_MERGE"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x07d29d85
+  name: "environment_cap"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "ENVIRON_ANY"
+    }
+    enumerator {
+      name: "ENVIRON_INDOOR"
+      value: 1
+    }
+    enumerator {
+      name: "ENVIRON_OUTDOOR"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0xcd568da6
+  name: "ethtool_link_ext_state"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "ETHTOOL_LINK_EXT_STATE_AUTONEG"
+    }
+    enumerator {
+      name: "ETHTOOL_LINK_EXT_STATE_LINK_TRAINING_FAILURE"
+      value: 1
+    }
+    enumerator {
+      name: "ETHTOOL_LINK_EXT_STATE_LINK_LOGICAL_MISMATCH"
+      value: 2
+    }
+    enumerator {
+      name: "ETHTOOL_LINK_EXT_STATE_BAD_SIGNAL_INTEGRITY"
+      value: 3
+    }
+    enumerator {
+      name: "ETHTOOL_LINK_EXT_STATE_NO_CABLE"
+      value: 4
+    }
+    enumerator {
+      name: "ETHTOOL_LINK_EXT_STATE_CABLE_ISSUE"
+      value: 5
+    }
+    enumerator {
+      name: "ETHTOOL_LINK_EXT_STATE_EEPROM_ISSUE"
+      value: 6
+    }
+    enumerator {
+      name: "ETHTOOL_LINK_EXT_STATE_CALIBRATION_FAILURE"
+      value: 7
+    }
+    enumerator {
+      name: "ETHTOOL_LINK_EXT_STATE_POWER_BUDGET_EXCEEDED"
+      value: 8
+    }
+    enumerator {
+      name: "ETHTOOL_LINK_EXT_STATE_OVERHEAT"
+      value: 9
+    }
+    enumerator {
+      name: "ETHTOOL_LINK_EXT_STATE_MODULE"
+      value: 10
+    }
+  }
+}
+enumeration {
+  id: 0x4e2542af
+  name: "ethtool_link_ext_substate_autoneg"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED"
+      value: 1
+    }
+    enumerator {
+      name: "ETHTOOL_LINK_EXT_SUBSTATE_AN_ACK_NOT_RECEIVED"
+      value: 2
+    }
+    enumerator {
+      name: "ETHTOOL_LINK_EXT_SUBSTATE_AN_NEXT_PAGE_EXCHANGE_FAILED"
+      value: 3
+    }
+    enumerator {
+      name: "ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED_FORCE_MODE"
+      value: 4
+    }
+    enumerator {
+      name: "ETHTOOL_LINK_EXT_SUBSTATE_AN_FEC_MISMATCH_DURING_OVERRIDE"
+      value: 5
+    }
+    enumerator {
+      name: "ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_HCD"
+      value: 6
+    }
+  }
+}
+enumeration {
+  id: 0x8b205321
+  name: "ethtool_link_ext_substate_bad_signal_integrity"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "ETHTOOL_LINK_EXT_SUBSTATE_BSI_LARGE_NUMBER_OF_PHYSICAL_ERRORS"
+      value: 1
+    }
+    enumerator {
+      name: "ETHTOOL_LINK_EXT_SUBSTATE_BSI_UNSUPPORTED_RATE"
+      value: 2
+    }
+    enumerator {
+      name: "ETHTOOL_LINK_EXT_SUBSTATE_BSI_SERDES_REFERENCE_CLOCK_LOST"
+      value: 3
+    }
+    enumerator {
+      name: "ETHTOOL_LINK_EXT_SUBSTATE_BSI_SERDES_ALOS"
+      value: 4
+    }
+  }
+}
+enumeration {
+  id: 0xf9158ecd
+  name: "ethtool_link_ext_substate_cable_issue"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "ETHTOOL_LINK_EXT_SUBSTATE_CI_UNSUPPORTED_CABLE"
+      value: 1
+    }
+    enumerator {
+      name: "ETHTOOL_LINK_EXT_SUBSTATE_CI_CABLE_TEST_FAILURE"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0xf26b2636
+  name: "ethtool_link_ext_substate_link_logical_mismatch"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_BLOCK_LOCK"
+      value: 1
+    }
+    enumerator {
+      name: "ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_AM_LOCK"
+      value: 2
+    }
+    enumerator {
+      name: "ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_GET_ALIGN_STATUS"
+      value: 3
+    }
+    enumerator {
+      name: "ETHTOOL_LINK_EXT_SUBSTATE_LLM_FC_FEC_IS_NOT_LOCKED"
+      value: 4
+    }
+    enumerator {
+      name: "ETHTOOL_LINK_EXT_SUBSTATE_LLM_RS_FEC_IS_NOT_LOCKED"
+      value: 5
+    }
+  }
+}
+enumeration {
+  id: 0x4bb6e057
+  name: "ethtool_link_ext_substate_link_training"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_FRAME_LOCK_NOT_ACQUIRED"
+      value: 1
+    }
+    enumerator {
+      name: "ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_INHIBIT_TIMEOUT"
+      value: 2
+    }
+    enumerator {
+      name: "ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_PARTNER_DID_NOT_SET_RECEIVER_READY"
+      value: 3
+    }
+    enumerator {
+      name: "ETHTOOL_LINK_EXT_SUBSTATE_LT_REMOTE_FAULT"
+      value: 4
+    }
+  }
+}
+enumeration {
+  id: 0x84c81534
+  name: "ethtool_link_ext_substate_module"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "ETHTOOL_LINK_EXT_SUBSTATE_MODULE_CMIS_NOT_READY"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0x72d1d1c0
+  name: "ethtool_module_power_mode"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "ETHTOOL_MODULE_POWER_MODE_LOW"
+      value: 1
+    }
+    enumerator {
+      name: "ETHTOOL_MODULE_POWER_MODE_HIGH"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0xa094b81e
+  name: "ethtool_module_power_mode_policy"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "ETHTOOL_MODULE_POWER_MODE_POLICY_HIGH"
+      value: 1
+    }
+    enumerator {
+      name: "ETHTOOL_MODULE_POWER_MODE_POLICY_AUTO"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x2f4de54f
+  name: "ethtool_phys_id_state"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "ETHTOOL_ID_INACTIVE"
+    }
+    enumerator {
+      name: "ETHTOOL_ID_ACTIVE"
+      value: 1
+    }
+    enumerator {
+      name: "ETHTOOL_ID_ON"
+      value: 2
+    }
+    enumerator {
+      name: "ETHTOOL_ID_OFF"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x84d1b470
+  name: "event_trigger_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "ETT_NONE"
+    }
+    enumerator {
+      name: "ETT_TRACE_ONOFF"
+      value: 1
+    }
+    enumerator {
+      name: "ETT_SNAPSHOT"
+      value: 2
+    }
+    enumerator {
+      name: "ETT_STACKTRACE"
+      value: 4
+    }
+    enumerator {
+      name: "ETT_EVENT_ENABLE"
+      value: 8
+    }
+    enumerator {
+      name: "ETT_EVENT_HIST"
+      value: 16
+    }
+    enumerator {
+      name: "ETT_HIST_ENABLE"
+      value: 32
+    }
+    enumerator {
+      name: "ETT_EVENT_EPROBE"
+      value: 64
+    }
+  }
+}
+enumeration {
+  id: 0x90065ac1
+  name: "fault_flag"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "FAULT_FLAG_WRITE"
+      value: 1
+    }
+    enumerator {
+      name: "FAULT_FLAG_MKWRITE"
+      value: 2
+    }
+    enumerator {
+      name: "FAULT_FLAG_ALLOW_RETRY"
+      value: 4
+    }
+    enumerator {
+      name: "FAULT_FLAG_RETRY_NOWAIT"
+      value: 8
+    }
+    enumerator {
+      name: "FAULT_FLAG_KILLABLE"
+      value: 16
+    }
+    enumerator {
+      name: "FAULT_FLAG_TRIED"
+      value: 32
+    }
+    enumerator {
+      name: "FAULT_FLAG_USER"
+      value: 64
+    }
+    enumerator {
+      name: "FAULT_FLAG_REMOTE"
+      value: 128
+    }
+    enumerator {
+      name: "FAULT_FLAG_INSTRUCTION"
+      value: 256
+    }
+    enumerator {
+      name: "FAULT_FLAG_INTERRUPTIBLE"
+      value: 512
+    }
+    enumerator {
+      name: "FAULT_FLAG_UNSHARE"
+      value: 1024
+    }
+    enumerator {
+      name: "FAULT_FLAG_ORIG_PTE_VALID"
+      value: 2048
+    }
+    enumerator {
+      name: "FAULT_FLAG_VMA_LOCK"
+      value: 4096
+    }
+  }
+}
+enumeration {
+  id: 0x06641f04
+  name: "filter_pred_fn"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "FILTER_PRED_FN_NOP"
+    }
+    enumerator {
+      name: "FILTER_PRED_FN_64"
+      value: 1
+    }
+    enumerator {
+      name: "FILTER_PRED_FN_S64"
+      value: 2
+    }
+    enumerator {
+      name: "FILTER_PRED_FN_U64"
+      value: 3
+    }
+    enumerator {
+      name: "FILTER_PRED_FN_32"
+      value: 4
+    }
+    enumerator {
+      name: "FILTER_PRED_FN_S32"
+      value: 5
+    }
+    enumerator {
+      name: "FILTER_PRED_FN_U32"
+      value: 6
+    }
+    enumerator {
+      name: "FILTER_PRED_FN_16"
+      value: 7
+    }
+    enumerator {
+      name: "FILTER_PRED_FN_S16"
+      value: 8
+    }
+    enumerator {
+      name: "FILTER_PRED_FN_U16"
+      value: 9
+    }
+    enumerator {
+      name: "FILTER_PRED_FN_8"
+      value: 10
+    }
+    enumerator {
+      name: "FILTER_PRED_FN_S8"
+      value: 11
+    }
+    enumerator {
+      name: "FILTER_PRED_FN_U8"
+      value: 12
+    }
+    enumerator {
+      name: "FILTER_PRED_FN_COMM"
+      value: 13
+    }
+    enumerator {
+      name: "FILTER_PRED_FN_STRING"
+      value: 14
+    }
+    enumerator {
+      name: "FILTER_PRED_FN_STRLOC"
+      value: 15
+    }
+    enumerator {
+      name: "FILTER_PRED_FN_STRRELLOC"
+      value: 16
+    }
+    enumerator {
+      name: "FILTER_PRED_FN_PCHAR_USER"
+      value: 17
+    }
+    enumerator {
+      name: "FILTER_PRED_FN_PCHAR"
+      value: 18
+    }
+    enumerator {
+      name: "FILTER_PRED_FN_CPU"
+      value: 19
+    }
+    enumerator {
+      name: "FILTER_PRED_FN_"
+      value: 20
+    }
+    enumerator {
+      name: "FILTER_PRED_TEST_VISITED"
+      value: 21
+    }
+  }
+}
+enumeration {
+  id: 0x099a2ff8
+  name: "flag_idn"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "QUERY_FLAG_IDN_FDEVICEINIT"
+      value: 1
+    }
+    enumerator {
+      name: "QUERY_FLAG_IDN_PERMANENT_WPE"
+      value: 2
+    }
+    enumerator {
+      name: "QUERY_FLAG_IDN_PWR_ON_WPE"
+      value: 3
+    }
+    enumerator {
+      name: "QUERY_FLAG_IDN_BKOPS_EN"
+      value: 4
+    }
+    enumerator {
+      name: "QUERY_FLAG_IDN_LIFE_SPAN_MODE_ENABLE"
+      value: 5
+    }
+    enumerator {
+      name: "QUERY_FLAG_IDN_PURGE_ENABLE"
+      value: 6
+    }
+    enumerator {
+      name: "QUERY_FLAG_IDN_RESERVED2"
+      value: 7
+    }
+    enumerator {
+      name: "QUERY_FLAG_IDN_FPHYRESOURCEREMOVAL"
+      value: 8
+    }
+    enumerator {
+      name: "QUERY_FLAG_IDN_BUSY_RTC"
+      value: 9
+    }
+    enumerator {
+      name: "QUERY_FLAG_IDN_RESERVED3"
+      value: 10
+    }
+    enumerator {
+      name: "QUERY_FLAG_IDN_PERMANENTLY_DISABLE_FW_UPDATE"
+      value: 11
+    }
+    enumerator {
+      name: "QUERY_FLAG_IDN_WB_EN"
+      value: 14
+    }
+    enumerator {
+      name: "QUERY_FLAG_IDN_WB_BUFF_FLUSH_EN"
+      value: 15
+    }
+    enumerator {
+      name: "QUERY_FLAG_IDN_WB_BUFF_FLUSH_DURING_HIBERN8"
+      value: 16
+    }
+    enumerator {
+      name: "QUERY_FLAG_IDN_HPB_RESET"
+      value: 17
+    }
+    enumerator {
+      name: "QUERY_FLAG_IDN_HPB_EN"
+      value: 18
+    }
+  }
+}
+enumeration {
+  id: 0x993c6f33
+  name: "flow_action_hw_stats"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "FLOW_ACTION_HW_STATS_IMMEDIATE"
+      value: 1
+    }
+    enumerator {
+      name: "FLOW_ACTION_HW_STATS_DELAYED"
+      value: 2
+    }
+    enumerator {
+      name: "FLOW_ACTION_HW_STATS_ANY"
+      value: 3
+    }
+    enumerator {
+      name: "FLOW_ACTION_HW_STATS_DISABLED"
+      value: 4
+    }
+    enumerator {
+      name: "FLOW_ACTION_HW_STATS_DONT_CARE"
+      value: 7
+    }
+  }
+}
+enumeration {
+  id: 0x72d96628
+  name: "flow_action_id"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "FLOW_ACTION_ACCEPT"
+    }
+    enumerator {
+      name: "FLOW_ACTION_DROP"
+      value: 1
+    }
+    enumerator {
+      name: "FLOW_ACTION_TRAP"
+      value: 2
+    }
+    enumerator {
+      name: "FLOW_ACTION_GOTO"
+      value: 3
+    }
+    enumerator {
+      name: "FLOW_ACTION_REDIRECT"
+      value: 4
+    }
+    enumerator {
+      name: "FLOW_ACTION_MIRRED"
+      value: 5
+    }
+    enumerator {
+      name: "FLOW_ACTION_REDIRECT_INGRESS"
+      value: 6
+    }
+    enumerator {
+      name: "FLOW_ACTION_MIRRED_INGRESS"
+      value: 7
+    }
+    enumerator {
+      name: "FLOW_ACTION_VLAN_PUSH"
+      value: 8
+    }
+    enumerator {
+      name: "FLOW_ACTION_VLAN_POP"
+      value: 9
+    }
+    enumerator {
+      name: "FLOW_ACTION_VLAN_MANGLE"
+      value: 10
+    }
+    enumerator {
+      name: "FLOW_ACTION_TUNNEL_ENCAP"
+      value: 11
+    }
+    enumerator {
+      name: "FLOW_ACTION_TUNNEL_DECAP"
+      value: 12
+    }
+    enumerator {
+      name: "FLOW_ACTION_MANGLE"
+      value: 13
+    }
+    enumerator {
+      name: "FLOW_ACTION_ADD"
+      value: 14
+    }
+    enumerator {
+      name: "FLOW_ACTION_CSUM"
+      value: 15
+    }
+    enumerator {
+      name: "FLOW_ACTION_MARK"
+      value: 16
+    }
+    enumerator {
+      name: "FLOW_ACTION_PTYPE"
+      value: 17
+    }
+    enumerator {
+      name: "FLOW_ACTION_PRIORITY"
+      value: 18
+    }
+    enumerator {
+      name: "FLOW_ACTION_WAKE"
+      value: 19
+    }
+    enumerator {
+      name: "FLOW_ACTION_QUEUE"
+      value: 20
+    }
+    enumerator {
+      name: "FLOW_ACTION_SAMPLE"
+      value: 21
+    }
+    enumerator {
+      name: "FLOW_ACTION_POLICE"
+      value: 22
+    }
+    enumerator {
+      name: "FLOW_ACTION_CT"
+      value: 23
+    }
+    enumerator {
+      name: "FLOW_ACTION_CT_METADATA"
+      value: 24
+    }
+    enumerator {
+      name: "FLOW_ACTION_MPLS_PUSH"
+      value: 25
+    }
+    enumerator {
+      name: "FLOW_ACTION_MPLS_POP"
+      value: 26
+    }
+    enumerator {
+      name: "FLOW_ACTION_MPLS_MANGLE"
+      value: 27
+    }
+    enumerator {
+      name: "FLOW_ACTION_GATE"
+      value: 28
+    }
+    enumerator {
+      name: "FLOW_ACTION_PPPOE_PUSH"
+      value: 29
+    }
+    enumerator {
+      name: "FLOW_ACTION_JUMP"
+      value: 30
+    }
+    enumerator {
+      name: "FLOW_ACTION_PIPE"
+      value: 31
+    }
+    enumerator {
+      name: "FLOW_ACTION_VLAN_PUSH_ETH"
+      value: 32
+    }
+    enumerator {
+      name: "FLOW_ACTION_VLAN_POP_ETH"
+      value: 33
+    }
+    enumerator {
+      name: "FLOW_ACTION_CONTINUE"
+      value: 34
+    }
+    enumerator {
+      name: "NUM_FLOW_ACTIONS"
+      value: 35
+    }
+  }
+}
+enumeration {
+  id: 0xa6d212cf
+  name: "flow_action_mangle_base"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "FLOW_ACT_MANGLE_UNSPEC"
+    }
+    enumerator {
+      name: "FLOW_ACT_MANGLE_HDR_TYPE_ETH"
+      value: 1
+    }
+    enumerator {
+      name: "FLOW_ACT_MANGLE_HDR_TYPE_IP4"
+      value: 2
+    }
+    enumerator {
+      name: "FLOW_ACT_MANGLE_HDR_TYPE_IP6"
+      value: 3
+    }
+    enumerator {
+      name: "FLOW_ACT_MANGLE_HDR_TYPE_TCP"
+      value: 4
+    }
+    enumerator {
+      name: "FLOW_ACT_MANGLE_HDR_TYPE_UDP"
+      value: 5
+    }
+  }
+}
+enumeration {
+  id: 0x3c7d9af3
+  name: "flow_block_binder_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "FLOW_BLOCK_BINDER_TYPE_UNSPEC"
+    }
+    enumerator {
+      name: "FLOW_BLOCK_BINDER_TYPE_CLSACT_INGRESS"
+      value: 1
+    }
+    enumerator {
+      name: "FLOW_BLOCK_BINDER_TYPE_CLSACT_EGRESS"
+      value: 2
+    }
+    enumerator {
+      name: "FLOW_BLOCK_BINDER_TYPE_RED_EARLY_DROP"
+      value: 3
+    }
+    enumerator {
+      name: "FLOW_BLOCK_BINDER_TYPE_RED_MARK"
+      value: 4
+    }
+  }
+}
+enumeration {
+  id: 0xce21ed0b
+  name: "flow_block_command"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "FLOW_BLOCK_BIND"
+    }
+    enumerator {
+      name: "FLOW_BLOCK_UNBIND"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0x08fa9aab
+  name: "freq_qos_req_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "FREQ_QOS_MIN"
+      value: 1
+    }
+    enumerator {
+      name: "FREQ_QOS_MAX"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x9f5bfa55
+  name: "frs_typec_current"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "FRS_NOT_SUPPORTED"
+    }
+    enumerator {
+      name: "FRS_DEFAULT_POWER"
+      value: 1
+    }
+    enumerator {
+      name: "FRS_5V_1P5A"
+      value: 2
+    }
+    enumerator {
+      name: "FRS_5V_3A"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0xd19284d3
+  name: "fs_context_phase"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "FS_CONTEXT_CREATE_PARAMS"
+    }
+    enumerator {
+      name: "FS_CONTEXT_CREATING"
+      value: 1
+    }
+    enumerator {
+      name: "FS_CONTEXT_AWAITING_MOUNT"
+      value: 2
+    }
+    enumerator {
+      name: "FS_CONTEXT_AWAITING_RECONF"
+      value: 3
+    }
+    enumerator {
+      name: "FS_CONTEXT_RECONF_PARAMS"
+      value: 4
+    }
+    enumerator {
+      name: "FS_CONTEXT_RECONFIGURING"
+      value: 5
+    }
+    enumerator {
+      name: "FS_CONTEXT_FAILED"
+      value: 6
+    }
+  }
+}
+enumeration {
+  id: 0x362692fd
+  name: "fs_context_purpose"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "FS_CONTEXT_FOR_MOUNT"
+    }
+    enumerator {
+      name: "FS_CONTEXT_FOR_SUBMOUNT"
+      value: 1
+    }
+    enumerator {
+      name: "FS_CONTEXT_FOR_RECONFIGURE"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x355c4a0f
+  name: "fs_value_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "fs_value_is_undefined"
+    }
+    enumerator {
+      name: "fs_value_is_flag"
+      value: 1
+    }
+    enumerator {
+      name: "fs_value_is_string"
+      value: 2
+    }
+    enumerator {
+      name: "fs_value_is_blob"
+      value: 3
+    }
+    enumerator {
+      name: "fs_value_is_filename"
+      value: 4
+    }
+    enumerator {
+      name: "fs_value_is_file"
+      value: 5
+    }
+  }
+}
+enumeration {
+  id: 0x2fc540aa
+  name: "fsg_buffer_state"
+  definition {
+    underlying_type_id: 0x6720d32f
+    enumerator {
+      name: "BUF_STATE_SENDING"
+      value: -2
+    }
+    enumerator {
+      name: "BUF_STATE_RECEIVING"
+      value: -1
+    }
+    enumerator {
+      name: "BUF_STATE_EMPTY"
+    }
+    enumerator {
+      name: "BUF_STATE_FULL"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0xab62ccb0
+  name: "fsg_state"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "FSG_STATE_NORMAL"
+    }
+    enumerator {
+      name: "FSG_STATE_ABORT_BULK_OUT"
+      value: 1
+    }
+    enumerator {
+      name: "FSG_STATE_PROTOCOL_RESET"
+      value: 2
+    }
+    enumerator {
+      name: "FSG_STATE_CONFIG_CHANGE"
+      value: 3
+    }
+    enumerator {
+      name: "FSG_STATE_EXIT"
+      value: 4
+    }
+    enumerator {
+      name: "FSG_STATE_TERMINATED"
+      value: 5
+    }
+  }
+}
+enumeration {
+  id: 0x9fe5c5a6
+  name: "ftrace_dump_mode"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DUMP_NONE"
+    }
+    enumerator {
+      name: "DUMP_ALL"
+      value: 1
+    }
+    enumerator {
+      name: "DUMP_ORIG"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x42ebe6bd
+  name: "geni_se_xfer_mode"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "GENI_SE_INVALID"
+    }
+    enumerator {
+      name: "GENI_SE_FIFO"
+      value: 1
+    }
+    enumerator {
+      name: "GENI_SE_DMA"
+      value: 2
+    }
+    enumerator {
+      name: "GENI_GPI_DMA"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x376c164b
+  name: "gh_rm_mem_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "GH_RM_MEM_TYPE_NORMAL"
+    }
+    enumerator {
+      name: "GH_RM_MEM_TYPE_IO"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0x4f09ffdc
+  name: "gpd_status"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "GENPD_STATE_ON"
+    }
+    enumerator {
+      name: "GENPD_STATE_OFF"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0x285cedbe
+  name: "gpiod_flags"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "GPIOD_ASIS"
+    }
+    enumerator {
+      name: "GPIOD_IN"
+      value: 1
+    }
+    enumerator {
+      name: "GPIOD_OUT_LOW"
+      value: 3
+    }
+    enumerator {
+      name: "GPIOD_OUT_HIGH"
+      value: 7
+    }
+    enumerator {
+      name: "GPIOD_OUT_LOW_OPEN_DRAIN"
+      value: 11
+    }
+    enumerator {
+      name: "GPIOD_OUT_HIGH_OPEN_DRAIN"
+      value: 15
+    }
+  }
+}
+enumeration {
+  id: 0xcc8a47b3
+  name: "gro_result"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "GRO_MERGED"
+    }
+    enumerator {
+      name: "GRO_MERGED_FREE"
+      value: 1
+    }
+    enumerator {
+      name: "GRO_HELD"
+      value: 2
+    }
+    enumerator {
+      name: "GRO_NORMAL"
+      value: 3
+    }
+    enumerator {
+      name: "GRO_CONSUMED"
+      value: 4
+    }
+  }
+}
+enumeration {
+  id: 0x943e0549
+  name: "hash_algo"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "HASH_ALGO_MD4"
+    }
+    enumerator {
+      name: "HASH_ALGO_MD5"
+      value: 1
+    }
+    enumerator {
+      name: "HASH_ALGO_SHA1"
+      value: 2
+    }
+    enumerator {
+      name: "HASH_ALGO_RIPE_MD_160"
+      value: 3
+    }
+    enumerator {
+      name: "HASH_ALGO_SHA256"
+      value: 4
+    }
+    enumerator {
+      name: "HASH_ALGO_SHA384"
+      value: 5
+    }
+    enumerator {
+      name: "HASH_ALGO_SHA512"
+      value: 6
+    }
+    enumerator {
+      name: "HASH_ALGO_SHA224"
+      value: 7
+    }
+    enumerator {
+      name: "HASH_ALGO_RIPE_MD_128"
+      value: 8
+    }
+    enumerator {
+      name: "HASH_ALGO_RIPE_MD_256"
+      value: 9
+    }
+    enumerator {
+      name: "HASH_ALGO_RIPE_MD_320"
+      value: 10
+    }
+    enumerator {
+      name: "HASH_ALGO_WP_256"
+      value: 11
+    }
+    enumerator {
+      name: "HASH_ALGO_WP_384"
+      value: 12
+    }
+    enumerator {
+      name: "HASH_ALGO_WP_512"
+      value: 13
+    }
+    enumerator {
+      name: "HASH_ALGO_TGR_128"
+      value: 14
+    }
+    enumerator {
+      name: "HASH_ALGO_TGR_160"
+      value: 15
+    }
+    enumerator {
+      name: "HASH_ALGO_TGR_192"
+      value: 16
+    }
+    enumerator {
+      name: "HASH_ALGO_SM3_256"
+      value: 17
+    }
+    enumerator {
+      name: "HASH_ALGO_STREEBOG_256"
+      value: 18
+    }
+    enumerator {
+      name: "HASH_ALGO_STREEBOG_512"
+      value: 19
+    }
+    enumerator {
+      name: "HASH_ALGO__LAST"
+      value: 20
+    }
+  }
+}
+enumeration {
+  id: 0x3d799fd5
+  name: "hdmi_3d_structure"
+  definition {
+    underlying_type_id: 0x6720d32f
+    enumerator {
+      name: "HDMI_3D_STRUCTURE_INVALID"
+      value: -1
+    }
+    enumerator {
+      name: "HDMI_3D_STRUCTURE_FRAME_PACKING"
+    }
+    enumerator {
+      name: "HDMI_3D_STRUCTURE_FIELD_ALTERNATIVE"
+      value: 1
+    }
+    enumerator {
+      name: "HDMI_3D_STRUCTURE_LINE_ALTERNATIVE"
+      value: 2
+    }
+    enumerator {
+      name: "HDMI_3D_STRUCTURE_SIDE_BY_SIDE_FULL"
+      value: 3
+    }
+    enumerator {
+      name: "HDMI_3D_STRUCTURE_L_DEPTH"
+      value: 4
+    }
+    enumerator {
+      name: "HDMI_3D_STRUCTURE_L_DEPTH_GFX_GFX_DEPTH"
+      value: 5
+    }
+    enumerator {
+      name: "HDMI_3D_STRUCTURE_TOP_AND_BOTTOM"
+      value: 6
+    }
+    enumerator {
+      name: "HDMI_3D_STRUCTURE_SIDE_BY_SIDE_HALF"
+      value: 8
+    }
+  }
+}
+enumeration {
+  id: 0x9bb709db
+  name: "hdmi_active_aspect"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "HDMI_ACTIVE_ASPECT_16_9_TOP"
+      value: 2
+    }
+    enumerator {
+      name: "HDMI_ACTIVE_ASPECT_14_9_TOP"
+      value: 3
+    }
+    enumerator {
+      name: "HDMI_ACTIVE_ASPECT_16_9_CENTER"
+      value: 4
+    }
+    enumerator {
+      name: "HDMI_ACTIVE_ASPECT_PICTURE"
+      value: 8
+    }
+    enumerator {
+      name: "HDMI_ACTIVE_ASPECT_4_3"
+      value: 9
+    }
+    enumerator {
+      name: "HDMI_ACTIVE_ASPECT_16_9"
+      value: 10
+    }
+    enumerator {
+      name: "HDMI_ACTIVE_ASPECT_14_9"
+      value: 11
+    }
+    enumerator {
+      name: "HDMI_ACTIVE_ASPECT_4_3_SP_14_9"
+      value: 13
+    }
+    enumerator {
+      name: "HDMI_ACTIVE_ASPECT_16_9_SP_14_9"
+      value: 14
+    }
+    enumerator {
+      name: "HDMI_ACTIVE_ASPECT_16_9_SP_4_3"
+      value: 15
+    }
+  }
+}
+enumeration {
+  id: 0xa88b074d
+  name: "hdmi_audio_coding_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "HDMI_AUDIO_CODING_TYPE_STREAM"
+    }
+    enumerator {
+      name: "HDMI_AUDIO_CODING_TYPE_PCM"
+      value: 1
+    }
+    enumerator {
+      name: "HDMI_AUDIO_CODING_TYPE_AC3"
+      value: 2
+    }
+    enumerator {
+      name: "HDMI_AUDIO_CODING_TYPE_MPEG1"
+      value: 3
+    }
+    enumerator {
+      name: "HDMI_AUDIO_CODING_TYPE_MP3"
+      value: 4
+    }
+    enumerator {
+      name: "HDMI_AUDIO_CODING_TYPE_MPEG2"
+      value: 5
+    }
+    enumerator {
+      name: "HDMI_AUDIO_CODING_TYPE_AAC_LC"
+      value: 6
+    }
+    enumerator {
+      name: "HDMI_AUDIO_CODING_TYPE_DTS"
+      value: 7
+    }
+    enumerator {
+      name: "HDMI_AUDIO_CODING_TYPE_ATRAC"
+      value: 8
+    }
+    enumerator {
+      name: "HDMI_AUDIO_CODING_TYPE_DSD"
+      value: 9
+    }
+    enumerator {
+      name: "HDMI_AUDIO_CODING_TYPE_EAC3"
+      value: 10
+    }
+    enumerator {
+      name: "HDMI_AUDIO_CODING_TYPE_DTS_HD"
+      value: 11
+    }
+    enumerator {
+      name: "HDMI_AUDIO_CODING_TYPE_MLP"
+      value: 12
+    }
+    enumerator {
+      name: "HDMI_AUDIO_CODING_TYPE_DST"
+      value: 13
+    }
+    enumerator {
+      name: "HDMI_AUDIO_CODING_TYPE_WMA_PRO"
+      value: 14
+    }
+    enumerator {
+      name: "HDMI_AUDIO_CODING_TYPE_CXT"
+      value: 15
+    }
+  }
+}
+enumeration {
+  id: 0xc289d967
+  name: "hdmi_audio_coding_type_ext"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "HDMI_AUDIO_CODING_TYPE_EXT_CT"
+    }
+    enumerator {
+      name: "HDMI_AUDIO_CODING_TYPE_EXT_HE_AAC"
+      value: 1
+    }
+    enumerator {
+      name: "HDMI_AUDIO_CODING_TYPE_EXT_HE_AAC_V2"
+      value: 2
+    }
+    enumerator {
+      name: "HDMI_AUDIO_CODING_TYPE_EXT_MPEG_SURROUND"
+      value: 3
+    }
+    enumerator {
+      name: "HDMI_AUDIO_CODING_TYPE_EXT_MPEG4_HE_AAC"
+      value: 4
+    }
+    enumerator {
+      name: "HDMI_AUDIO_CODING_TYPE_EXT_MPEG4_HE_AAC_V2"
+      value: 5
+    }
+    enumerator {
+      name: "HDMI_AUDIO_CODING_TYPE_EXT_MPEG4_AAC_LC"
+      value: 6
+    }
+    enumerator {
+      name: "HDMI_AUDIO_CODING_TYPE_EXT_DRA"
+      value: 7
+    }
+    enumerator {
+      name: "HDMI_AUDIO_CODING_TYPE_EXT_MPEG4_HE_AAC_SURROUND"
+      value: 8
+    }
+    enumerator {
+      name: "HDMI_AUDIO_CODING_TYPE_EXT_MPEG4_AAC_LC_SURROUND"
+      value: 10
+    }
+  }
+}
+enumeration {
+  id: 0x87af27f9
+  name: "hdmi_audio_sample_frequency"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "HDMI_AUDIO_SAMPLE_FREQUENCY_STREAM"
+    }
+    enumerator {
+      name: "HDMI_AUDIO_SAMPLE_FREQUENCY_32000"
+      value: 1
+    }
+    enumerator {
+      name: "HDMI_AUDIO_SAMPLE_FREQUENCY_44100"
+      value: 2
+    }
+    enumerator {
+      name: "HDMI_AUDIO_SAMPLE_FREQUENCY_48000"
+      value: 3
+    }
+    enumerator {
+      name: "HDMI_AUDIO_SAMPLE_FREQUENCY_88200"
+      value: 4
+    }
+    enumerator {
+      name: "HDMI_AUDIO_SAMPLE_FREQUENCY_96000"
+      value: 5
+    }
+    enumerator {
+      name: "HDMI_AUDIO_SAMPLE_FREQUENCY_176400"
+      value: 6
+    }
+    enumerator {
+      name: "HDMI_AUDIO_SAMPLE_FREQUENCY_192000"
+      value: 7
+    }
+  }
+}
+enumeration {
+  id: 0xcf7a0b70
+  name: "hdmi_audio_sample_size"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "HDMI_AUDIO_SAMPLE_SIZE_STREAM"
+    }
+    enumerator {
+      name: "HDMI_AUDIO_SAMPLE_SIZE_16"
+      value: 1
+    }
+    enumerator {
+      name: "HDMI_AUDIO_SAMPLE_SIZE_20"
+      value: 2
+    }
+    enumerator {
+      name: "HDMI_AUDIO_SAMPLE_SIZE_24"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x601c6112
+  name: "hdmi_colorimetry"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "HDMI_COLORIMETRY_NONE"
+    }
+    enumerator {
+      name: "HDMI_COLORIMETRY_ITU_601"
+      value: 1
+    }
+    enumerator {
+      name: "HDMI_COLORIMETRY_ITU_709"
+      value: 2
+    }
+    enumerator {
+      name: "HDMI_COLORIMETRY_EXTENDED"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x4852fb5d
+  name: "hdmi_colorspace"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "HDMI_COLORSPACE_RGB"
+    }
+    enumerator {
+      name: "HDMI_COLORSPACE_YUV422"
+      value: 1
+    }
+    enumerator {
+      name: "HDMI_COLORSPACE_YUV444"
+      value: 2
+    }
+    enumerator {
+      name: "HDMI_COLORSPACE_YUV420"
+      value: 3
+    }
+    enumerator {
+      name: "HDMI_COLORSPACE_RESERVED4"
+      value: 4
+    }
+    enumerator {
+      name: "HDMI_COLORSPACE_RESERVED5"
+      value: 5
+    }
+    enumerator {
+      name: "HDMI_COLORSPACE_RESERVED6"
+      value: 6
+    }
+    enumerator {
+      name: "HDMI_COLORSPACE_IDO_DEFINED"
+      value: 7
+    }
+  }
+}
+enumeration {
+  id: 0x9ee4a55c
+  name: "hdmi_content_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "HDMI_CONTENT_TYPE_GRAPHICS"
+    }
+    enumerator {
+      name: "HDMI_CONTENT_TYPE_PHOTO"
+      value: 1
+    }
+    enumerator {
+      name: "HDMI_CONTENT_TYPE_CINEMA"
+      value: 2
+    }
+    enumerator {
+      name: "HDMI_CONTENT_TYPE_GAME"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0xe5305400
+  name: "hdmi_eotf"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "HDMI_EOTF_TRADITIONAL_GAMMA_SDR"
+    }
+    enumerator {
+      name: "HDMI_EOTF_TRADITIONAL_GAMMA_HDR"
+      value: 1
+    }
+    enumerator {
+      name: "HDMI_EOTF_SMPTE_ST2084"
+      value: 2
+    }
+    enumerator {
+      name: "HDMI_EOTF_BT_2100_HLG"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x35cc5e1b
+  name: "hdmi_extended_colorimetry"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "HDMI_EXTENDED_COLORIMETRY_XV_YCC_601"
+    }
+    enumerator {
+      name: "HDMI_EXTENDED_COLORIMETRY_XV_YCC_709"
+      value: 1
+    }
+    enumerator {
+      name: "HDMI_EXTENDED_COLORIMETRY_S_YCC_601"
+      value: 2
+    }
+    enumerator {
+      name: "HDMI_EXTENDED_COLORIMETRY_OPYCC_601"
+      value: 3
+    }
+    enumerator {
+      name: "HDMI_EXTENDED_COLORIMETRY_OPRGB"
+      value: 4
+    }
+    enumerator {
+      name: "HDMI_EXTENDED_COLORIMETRY_BT2020_CONST_LUM"
+      value: 5
+    }
+    enumerator {
+      name: "HDMI_EXTENDED_COLORIMETRY_BT2020"
+      value: 6
+    }
+    enumerator {
+      name: "HDMI_EXTENDED_COLORIMETRY_RESERVED"
+      value: 7
+    }
+  }
+}
+enumeration {
+  id: 0x2d6f1c55
+  name: "hdmi_infoframe_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "HDMI_INFOFRAME_TYPE_VENDOR"
+      value: 129
+    }
+    enumerator {
+      name: "HDMI_INFOFRAME_TYPE_AVI"
+      value: 130
+    }
+    enumerator {
+      name: "HDMI_INFOFRAME_TYPE_SPD"
+      value: 131
+    }
+    enumerator {
+      name: "HDMI_INFOFRAME_TYPE_AUDIO"
+      value: 132
+    }
+    enumerator {
+      name: "HDMI_INFOFRAME_TYPE_DRM"
+      value: 135
+    }
+  }
+}
+enumeration {
+  id: 0xc7409b5c
+  name: "hdmi_metadata_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "HDMI_STATIC_METADATA_TYPE1"
+    }
+  }
+}
+enumeration {
+  id: 0x3e579862
+  name: "hdmi_nups"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "HDMI_NUPS_UNKNOWN"
+    }
+    enumerator {
+      name: "HDMI_NUPS_HORIZONTAL"
+      value: 1
+    }
+    enumerator {
+      name: "HDMI_NUPS_VERTICAL"
+      value: 2
+    }
+    enumerator {
+      name: "HDMI_NUPS_BOTH"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x6b764f15
+  name: "hdmi_picture_aspect"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "HDMI_PICTURE_ASPECT_NONE"
+    }
+    enumerator {
+      name: "HDMI_PICTURE_ASPECT_4_3"
+      value: 1
+    }
+    enumerator {
+      name: "HDMI_PICTURE_ASPECT_16_9"
+      value: 2
+    }
+    enumerator {
+      name: "HDMI_PICTURE_ASPECT_64_27"
+      value: 3
+    }
+    enumerator {
+      name: "HDMI_PICTURE_ASPECT_256_135"
+      value: 4
+    }
+    enumerator {
+      name: "HDMI_PICTURE_ASPECT_RESERVED"
+      value: 5
+    }
+  }
+}
+enumeration {
+  id: 0x709946fa
+  name: "hdmi_quantization_range"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "HDMI_QUANTIZATION_RANGE_DEFAULT"
+    }
+    enumerator {
+      name: "HDMI_QUANTIZATION_RANGE_LIMITED"
+      value: 1
+    }
+    enumerator {
+      name: "HDMI_QUANTIZATION_RANGE_FULL"
+      value: 2
+    }
+    enumerator {
+      name: "HDMI_QUANTIZATION_RANGE_RESERVED"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0xb5ec15e2
+  name: "hdmi_scan_mode"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "HDMI_SCAN_MODE_NONE"
+    }
+    enumerator {
+      name: "HDMI_SCAN_MODE_OVERSCAN"
+      value: 1
+    }
+    enumerator {
+      name: "HDMI_SCAN_MODE_UNDERSCAN"
+      value: 2
+    }
+    enumerator {
+      name: "HDMI_SCAN_MODE_RESERVED"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x930c1601
+  name: "hdmi_spd_sdi"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "HDMI_SPD_SDI_UNKNOWN"
+    }
+    enumerator {
+      name: "HDMI_SPD_SDI_DSTB"
+      value: 1
+    }
+    enumerator {
+      name: "HDMI_SPD_SDI_DVDP"
+      value: 2
+    }
+    enumerator {
+      name: "HDMI_SPD_SDI_DVHS"
+      value: 3
+    }
+    enumerator {
+      name: "HDMI_SPD_SDI_HDDVR"
+      value: 4
+    }
+    enumerator {
+      name: "HDMI_SPD_SDI_DVC"
+      value: 5
+    }
+    enumerator {
+      name: "HDMI_SPD_SDI_DSC"
+      value: 6
+    }
+    enumerator {
+      name: "HDMI_SPD_SDI_VCD"
+      value: 7
+    }
+    enumerator {
+      name: "HDMI_SPD_SDI_GAME"
+      value: 8
+    }
+    enumerator {
+      name: "HDMI_SPD_SDI_PC"
+      value: 9
+    }
+    enumerator {
+      name: "HDMI_SPD_SDI_BD"
+      value: 10
+    }
+    enumerator {
+      name: "HDMI_SPD_SDI_SACD"
+      value: 11
+    }
+    enumerator {
+      name: "HDMI_SPD_SDI_HDDVD"
+      value: 12
+    }
+    enumerator {
+      name: "HDMI_SPD_SDI_PMP"
+      value: 13
+    }
+  }
+}
+enumeration {
+  id: 0xcfb545c6
+  name: "hdmi_ycc_quantization_range"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "HDMI_YCC_QUANTIZATION_RANGE_LIMITED"
+    }
+    enumerator {
+      name: "HDMI_YCC_QUANTIZATION_RANGE_FULL"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0x74acd685
+  name: "hid_battery_status"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "HID_BATTERY_UNKNOWN"
+    }
+    enumerator {
+      name: "HID_BATTERY_QUERIED"
+      value: 1
+    }
+    enumerator {
+      name: "HID_BATTERY_REPORTED"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0xfa5f37bb
+  name: "hid_report_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "HID_INPUT_REPORT"
+    }
+    enumerator {
+      name: "HID_OUTPUT_REPORT"
+      value: 1
+    }
+    enumerator {
+      name: "HID_FEATURE_REPORT"
+      value: 2
+    }
+    enumerator {
+      name: "HID_REPORT_TYPES"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x37ce2c2c
+  name: "hid_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "HID_TYPE_OTHER"
+    }
+    enumerator {
+      name: "HID_TYPE_USBMOUSE"
+      value: 1
+    }
+    enumerator {
+      name: "HID_TYPE_USBNONE"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0xce99e6fa
+  name: "hk_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "HK_TYPE_TIMER"
+    }
+    enumerator {
+      name: "HK_TYPE_RCU"
+      value: 1
+    }
+    enumerator {
+      name: "HK_TYPE_MISC"
+      value: 2
+    }
+    enumerator {
+      name: "HK_TYPE_SCHED"
+      value: 3
+    }
+    enumerator {
+      name: "HK_TYPE_TICK"
+      value: 4
+    }
+    enumerator {
+      name: "HK_TYPE_DOMAIN"
+      value: 5
+    }
+    enumerator {
+      name: "HK_TYPE_WQ"
+      value: 6
+    }
+    enumerator {
+      name: "HK_TYPE_MANAGED_IRQ"
+      value: 7
+    }
+    enumerator {
+      name: "HK_TYPE_KTHREAD"
+      value: 8
+    }
+    enumerator {
+      name: "HK_TYPE_MAX"
+      value: 9
+    }
+  }
+}
+enumeration {
+  id: 0x4754c3e4
+  name: "hrtimer_mode"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "HRTIMER_MODE_ABS"
+    }
+    enumerator {
+      name: "HRTIMER_MODE_REL"
+      value: 1
+    }
+    enumerator {
+      name: "HRTIMER_MODE_PINNED"
+      value: 2
+    }
+    enumerator {
+      name: "HRTIMER_MODE_SOFT"
+      value: 4
+    }
+    enumerator {
+      name: "HRTIMER_MODE_HARD"
+      value: 8
+    }
+    enumerator {
+      name: "HRTIMER_MODE_ABS_PINNED"
+      value: 2
+    }
+    enumerator {
+      name: "HRTIMER_MODE_REL_PINNED"
+      value: 3
+    }
+    enumerator {
+      name: "HRTIMER_MODE_ABS_SOFT"
+      value: 4
+    }
+    enumerator {
+      name: "HRTIMER_MODE_REL_SOFT"
+      value: 5
+    }
+    enumerator {
+      name: "HRTIMER_MODE_ABS_PINNED_SOFT"
+      value: 6
+    }
+    enumerator {
+      name: "HRTIMER_MODE_REL_PINNED_SOFT"
+      value: 7
+    }
+    enumerator {
+      name: "HRTIMER_MODE_ABS_HARD"
+      value: 8
+    }
+    enumerator {
+      name: "HRTIMER_MODE_REL_HARD"
+      value: 9
+    }
+    enumerator {
+      name: "HRTIMER_MODE_ABS_PINNED_HARD"
+      value: 10
+    }
+    enumerator {
+      name: "HRTIMER_MODE_REL_PINNED_HARD"
+      value: 11
+    }
+  }
+}
+enumeration {
+  id: 0x10be9c51
+  name: "hrtimer_restart"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "HRTIMER_NORESTART"
+    }
+    enumerator {
+      name: "HRTIMER_RESTART"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0x376212c9
+  name: "i2c_alert_protocol"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "I2C_PROTOCOL_SMBUS_ALERT"
+    }
+    enumerator {
+      name: "I2C_PROTOCOL_SMBUS_HOST_NOTIFY"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0x94d699ef
+  name: "i3c_bus_mode"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "I3C_BUS_MODE_PURE"
+    }
+    enumerator {
+      name: "I3C_BUS_MODE_MIXED_FAST"
+      value: 1
+    }
+    enumerator {
+      name: "I3C_BUS_MODE_MIXED_LIMITED"
+      value: 2
+    }
+    enumerator {
+      name: "I3C_BUS_MODE_MIXED_SLOW"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x4b44d3d9
+  name: "i3c_error_code"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "I3C_ERROR_UNKNOWN"
+    }
+    enumerator {
+      name: "I3C_ERROR_M0"
+      value: 1
+    }
+    enumerator {
+      name: "I3C_ERROR_M1"
+      value: 2
+    }
+    enumerator {
+      name: "I3C_ERROR_M2"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x509c8bf0
+  name: "ieee80211_bss_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "IEEE80211_BSS_TYPE_ESS"
+    }
+    enumerator {
+      name: "IEEE80211_BSS_TYPE_PBSS"
+      value: 1
+    }
+    enumerator {
+      name: "IEEE80211_BSS_TYPE_IBSS"
+      value: 2
+    }
+    enumerator {
+      name: "IEEE80211_BSS_TYPE_MBSS"
+      value: 3
+    }
+    enumerator {
+      name: "IEEE80211_BSS_TYPE_ANY"
+      value: 4
+    }
+  }
+}
+enumeration {
+  id: 0xc0da94e3
+  name: "ieee80211_edmg_bw_config"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "IEEE80211_EDMG_BW_CONFIG_4"
+      value: 4
+    }
+    enumerator {
+      name: "IEEE80211_EDMG_BW_CONFIG_5"
+      value: 5
+    }
+    enumerator {
+      name: "IEEE80211_EDMG_BW_CONFIG_6"
+      value: 6
+    }
+    enumerator {
+      name: "IEEE80211_EDMG_BW_CONFIG_7"
+      value: 7
+    }
+    enumerator {
+      name: "IEEE80211_EDMG_BW_CONFIG_8"
+      value: 8
+    }
+    enumerator {
+      name: "IEEE80211_EDMG_BW_CONFIG_9"
+      value: 9
+    }
+    enumerator {
+      name: "IEEE80211_EDMG_BW_CONFIG_10"
+      value: 10
+    }
+    enumerator {
+      name: "IEEE80211_EDMG_BW_CONFIG_11"
+      value: 11
+    }
+    enumerator {
+      name: "IEEE80211_EDMG_BW_CONFIG_12"
+      value: 12
+    }
+    enumerator {
+      name: "IEEE80211_EDMG_BW_CONFIG_13"
+      value: 13
+    }
+    enumerator {
+      name: "IEEE80211_EDMG_BW_CONFIG_14"
+      value: 14
+    }
+    enumerator {
+      name: "IEEE80211_EDMG_BW_CONFIG_15"
+      value: 15
+    }
+  }
+}
+enumeration {
+  id: 0xecbe1e05
+  name: "iio_buffer_direction"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "IIO_BUFFER_DIRECTION_IN"
+    }
+    enumerator {
+      name: "IIO_BUFFER_DIRECTION_OUT"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0xc582424e
+  name: "iio_chan_info_enum"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "IIO_CHAN_INFO_RAW"
+    }
+    enumerator {
+      name: "IIO_CHAN_INFO_PROCESSED"
+      value: 1
+    }
+    enumerator {
+      name: "IIO_CHAN_INFO_SCALE"
+      value: 2
+    }
+    enumerator {
+      name: "IIO_CHAN_INFO_OFFSET"
+      value: 3
+    }
+    enumerator {
+      name: "IIO_CHAN_INFO_CALIBSCALE"
+      value: 4
+    }
+    enumerator {
+      name: "IIO_CHAN_INFO_CALIBBIAS"
+      value: 5
+    }
+    enumerator {
+      name: "IIO_CHAN_INFO_PEAK"
+      value: 6
+    }
+    enumerator {
+      name: "IIO_CHAN_INFO_PEAK_SCALE"
+      value: 7
+    }
+    enumerator {
+      name: "IIO_CHAN_INFO_QUADRATURE_CORRECTION_RAW"
+      value: 8
+    }
+    enumerator {
+      name: "IIO_CHAN_INFO_AVERAGE_RAW"
+      value: 9
+    }
+    enumerator {
+      name: "IIO_CHAN_INFO_LOW_PASS_FILTER_3DB_FREQUENCY"
+      value: 10
+    }
+    enumerator {
+      name: "IIO_CHAN_INFO_HIGH_PASS_FILTER_3DB_FREQUENCY"
+      value: 11
+    }
+    enumerator {
+      name: "IIO_CHAN_INFO_SAMP_FREQ"
+      value: 12
+    }
+    enumerator {
+      name: "IIO_CHAN_INFO_FREQUENCY"
+      value: 13
+    }
+    enumerator {
+      name: "IIO_CHAN_INFO_PHASE"
+      value: 14
+    }
+    enumerator {
+      name: "IIO_CHAN_INFO_HARDWAREGAIN"
+      value: 15
+    }
+    enumerator {
+      name: "IIO_CHAN_INFO_HYSTERESIS"
+      value: 16
+    }
+    enumerator {
+      name: "IIO_CHAN_INFO_HYSTERESIS_RELATIVE"
+      value: 17
+    }
+    enumerator {
+      name: "IIO_CHAN_INFO_INT_TIME"
+      value: 18
+    }
+    enumerator {
+      name: "IIO_CHAN_INFO_ENABLE"
+      value: 19
+    }
+    enumerator {
+      name: "IIO_CHAN_INFO_CALIBHEIGHT"
+      value: 20
+    }
+    enumerator {
+      name: "IIO_CHAN_INFO_CALIBWEIGHT"
+      value: 21
+    }
+    enumerator {
+      name: "IIO_CHAN_INFO_DEBOUNCE_COUNT"
+      value: 22
+    }
+    enumerator {
+      name: "IIO_CHAN_INFO_DEBOUNCE_TIME"
+      value: 23
+    }
+    enumerator {
+      name: "IIO_CHAN_INFO_CALIBEMISSIVITY"
+      value: 24
+    }
+    enumerator {
+      name: "IIO_CHAN_INFO_OVERSAMPLING_RATIO"
+      value: 25
+    }
+    enumerator {
+      name: "IIO_CHAN_INFO_THERMOCOUPLE_TYPE"
+      value: 26
+    }
+    enumerator {
+      name: "IIO_CHAN_INFO_CALIBAMBIENT"
+      value: 27
+    }
+    enumerator {
+      name: "IIO_CHAN_INFO_ZEROPOINT"
+      value: 28
+    }
+  }
+}
+enumeration {
+  id: 0x762f432d
+  name: "iio_chan_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "IIO_VOLTAGE"
+    }
+    enumerator {
+      name: "IIO_CURRENT"
+      value: 1
+    }
+    enumerator {
+      name: "IIO_POWER"
+      value: 2
+    }
+    enumerator {
+      name: "IIO_ACCEL"
+      value: 3
+    }
+    enumerator {
+      name: "IIO_ANGL_VEL"
+      value: 4
+    }
+    enumerator {
+      name: "IIO_MAGN"
+      value: 5
+    }
+    enumerator {
+      name: "IIO_LIGHT"
+      value: 6
+    }
+    enumerator {
+      name: "IIO_INTENSITY"
+      value: 7
+    }
+    enumerator {
+      name: "IIO_PROXIMITY"
+      value: 8
+    }
+    enumerator {
+      name: "IIO_TEMP"
+      value: 9
+    }
+    enumerator {
+      name: "IIO_INCLI"
+      value: 10
+    }
+    enumerator {
+      name: "IIO_ROT"
+      value: 11
+    }
+    enumerator {
+      name: "IIO_ANGL"
+      value: 12
+    }
+    enumerator {
+      name: "IIO_TIMESTAMP"
+      value: 13
+    }
+    enumerator {
+      name: "IIO_CAPACITANCE"
+      value: 14
+    }
+    enumerator {
+      name: "IIO_ALTVOLTAGE"
+      value: 15
+    }
+    enumerator {
+      name: "IIO_CCT"
+      value: 16
+    }
+    enumerator {
+      name: "IIO_PRESSURE"
+      value: 17
+    }
+    enumerator {
+      name: "IIO_HUMIDITYRELATIVE"
+      value: 18
+    }
+    enumerator {
+      name: "IIO_ACTIVITY"
+      value: 19
+    }
+    enumerator {
+      name: "IIO_STEPS"
+      value: 20
+    }
+    enumerator {
+      name: "IIO_ENERGY"
+      value: 21
+    }
+    enumerator {
+      name: "IIO_DISTANCE"
+      value: 22
+    }
+    enumerator {
+      name: "IIO_VELOCITY"
+      value: 23
+    }
+    enumerator {
+      name: "IIO_CONCENTRATION"
+      value: 24
+    }
+    enumerator {
+      name: "IIO_RESISTANCE"
+      value: 25
+    }
+    enumerator {
+      name: "IIO_PH"
+      value: 26
+    }
+    enumerator {
+      name: "IIO_UVINDEX"
+      value: 27
+    }
+    enumerator {
+      name: "IIO_ELECTRICALCONDUCTIVITY"
+      value: 28
+    }
+    enumerator {
+      name: "IIO_COUNT"
+      value: 29
+    }
+    enumerator {
+      name: "IIO_INDEX"
+      value: 30
+    }
+    enumerator {
+      name: "IIO_GRAVITY"
+      value: 31
+    }
+    enumerator {
+      name: "IIO_POSITIONRELATIVE"
+      value: 32
+    }
+    enumerator {
+      name: "IIO_PHASE"
+      value: 33
+    }
+    enumerator {
+      name: "IIO_MASSCONCENTRATION"
+      value: 34
+    }
+  }
+}
+enumeration {
+  id: 0x2c6a91d5
+  name: "iio_endian"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "IIO_CPU"
+    }
+    enumerator {
+      name: "IIO_BE"
+      value: 1
+    }
+    enumerator {
+      name: "IIO_LE"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0xe12d7da8
+  name: "iio_event_direction"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "IIO_EV_DIR_EITHER"
+    }
+    enumerator {
+      name: "IIO_EV_DIR_RISING"
+      value: 1
+    }
+    enumerator {
+      name: "IIO_EV_DIR_FALLING"
+      value: 2
+    }
+    enumerator {
+      name: "IIO_EV_DIR_NONE"
+      value: 3
+    }
+    enumerator {
+      name: "IIO_EV_DIR_SINGLETAP"
+      value: 4
+    }
+    enumerator {
+      name: "IIO_EV_DIR_DOUBLETAP"
+      value: 5
+    }
+  }
+}
+enumeration {
+  id: 0x464d39d6
+  name: "iio_event_info"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "IIO_EV_INFO_ENABLE"
+    }
+    enumerator {
+      name: "IIO_EV_INFO_VALUE"
+      value: 1
+    }
+    enumerator {
+      name: "IIO_EV_INFO_HYSTERESIS"
+      value: 2
+    }
+    enumerator {
+      name: "IIO_EV_INFO_PERIOD"
+      value: 3
+    }
+    enumerator {
+      name: "IIO_EV_INFO_HIGH_PASS_FILTER_3DB"
+      value: 4
+    }
+    enumerator {
+      name: "IIO_EV_INFO_LOW_PASS_FILTER_3DB"
+      value: 5
+    }
+    enumerator {
+      name: "IIO_EV_INFO_TIMEOUT"
+      value: 6
+    }
+    enumerator {
+      name: "IIO_EV_INFO_RESET_TIMEOUT"
+      value: 7
+    }
+    enumerator {
+      name: "IIO_EV_INFO_TAP2_MIN_DELAY"
+      value: 8
+    }
+  }
+}
+enumeration {
+  id: 0xd5426c51
+  name: "iio_event_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "IIO_EV_TYPE_THRESH"
+    }
+    enumerator {
+      name: "IIO_EV_TYPE_MAG"
+      value: 1
+    }
+    enumerator {
+      name: "IIO_EV_TYPE_ROC"
+      value: 2
+    }
+    enumerator {
+      name: "IIO_EV_TYPE_THRESH_ADAPTIVE"
+      value: 3
+    }
+    enumerator {
+      name: "IIO_EV_TYPE_MAG_ADAPTIVE"
+      value: 4
+    }
+    enumerator {
+      name: "IIO_EV_TYPE_CHANGE"
+      value: 5
+    }
+    enumerator {
+      name: "IIO_EV_TYPE_MAG_REFERENCED"
+      value: 6
+    }
+    enumerator {
+      name: "IIO_EV_TYPE_GESTURE"
+      value: 7
+    }
+  }
+}
+enumeration {
+  id: 0xa51e8f9f
+  name: "iio_shared_by"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "IIO_SEPARATE"
+    }
+    enumerator {
+      name: "IIO_SHARED_BY_TYPE"
+      value: 1
+    }
+    enumerator {
+      name: "IIO_SHARED_BY_DIR"
+      value: 2
+    }
+    enumerator {
+      name: "IIO_SHARED_BY_ALL"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0xc062b34e
+  name: "io_pgtable_fmt"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "ARM_32_LPAE_S1"
+    }
+    enumerator {
+      name: "ARM_32_LPAE_S2"
+      value: 1
+    }
+    enumerator {
+      name: "ARM_64_LPAE_S1"
+      value: 2
+    }
+    enumerator {
+      name: "ARM_64_LPAE_S2"
+      value: 3
+    }
+    enumerator {
+      name: "ARM_V7S"
+      value: 4
+    }
+    enumerator {
+      name: "ARM_MALI_LPAE"
+      value: 5
+    }
+    enumerator {
+      name: "AMD_IOMMU_V1"
+      value: 6
+    }
+    enumerator {
+      name: "AMD_IOMMU_V2"
+      value: 7
+    }
+    enumerator {
+      name: "APPLE_DART"
+      value: 8
+    }
+    enumerator {
+      name: "APPLE_DART2"
+      value: 9
+    }
+    enumerator {
+      name: "IO_PGTABLE_NUM_FMTS"
+      value: 10
+    }
+  }
+}
+enumeration {
+  id: 0xf101ec6d
+  name: "iodev_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "IODEV_CPUIF"
+    }
+    enumerator {
+      name: "IODEV_DIST"
+      value: 1
+    }
+    enumerator {
+      name: "IODEV_REDIST"
+      value: 2
+    }
+    enumerator {
+      name: "IODEV_ITS"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0xe5b69de1
+  name: "iommu_cap"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "IOMMU_CAP_CACHE_COHERENCY"
+    }
+    enumerator {
+      name: "IOMMU_CAP_INTR_REMAP"
+      value: 1
+    }
+    enumerator {
+      name: "IOMMU_CAP_NOEXEC"
+      value: 2
+    }
+    enumerator {
+      name: "IOMMU_CAP_PRE_BOOT_PROTECTION"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0xd36b370e
+  name: "iommu_dev_features"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "IOMMU_DEV_FEAT_SVA"
+    }
+    enumerator {
+      name: "IOMMU_DEV_FEAT_IOPF"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0x70ed9abd
+  name: "iommu_dma_cookie_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "IOMMU_DMA_IOVA_COOKIE"
+    }
+    enumerator {
+      name: "IOMMU_DMA_MSI_COOKIE"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0xa1ef211c
+  name: "iommu_page_response_code"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "IOMMU_PAGE_RESP_SUCCESS"
+    }
+    enumerator {
+      name: "IOMMU_PAGE_RESP_INVALID"
+      value: 1
+    }
+    enumerator {
+      name: "IOMMU_PAGE_RESP_FAILURE"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0xf0cb20f0
+  name: "iommu_resv_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "IOMMU_RESV_DIRECT"
+    }
+    enumerator {
+      name: "IOMMU_RESV_DIRECT_RELAXABLE"
+      value: 1
+    }
+    enumerator {
+      name: "IOMMU_RESV_RESERVED"
+      value: 2
+    }
+    enumerator {
+      name: "IOMMU_RESV_MSI"
+      value: 3
+    }
+    enumerator {
+      name: "IOMMU_RESV_SW_MSI"
+      value: 4
+    }
+  }
+}
+enumeration {
+  id: 0xa031d804
+  name: "ip_conntrack_dir"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "IP_CT_DIR_ORIGINAL"
+    }
+    enumerator {
+      name: "IP_CT_DIR_REPLY"
+      value: 1
+    }
+    enumerator {
+      name: "IP_CT_DIR_MAX"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x863d94eb
+  name: "ip_conntrack_info"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "IP_CT_ESTABLISHED"
+    }
+    enumerator {
+      name: "IP_CT_RELATED"
+      value: 1
+    }
+    enumerator {
+      name: "IP_CT_NEW"
+      value: 2
+    }
+    enumerator {
+      name: "IP_CT_IS_REPLY"
+      value: 3
+    }
+    enumerator {
+      name: "IP_CT_ESTABLISHED_REPLY"
+      value: 3
+    }
+    enumerator {
+      name: "IP_CT_RELATED_REPLY"
+      value: 4
+    }
+    enumerator {
+      name: "IP_CT_NUMBER"
+      value: 5
+    }
+    enumerator {
+      name: "IP_CT_UNTRACKED"
+      value: 7
+    }
+  }
+}
+enumeration {
+  id: 0x945e7ef6
+  name: "irq_domain_bus_token"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DOMAIN_BUS_ANY"
+    }
+    enumerator {
+      name: "DOMAIN_BUS_WIRED"
+      value: 1
+    }
+    enumerator {
+      name: "DOMAIN_BUS_GENERIC_MSI"
+      value: 2
+    }
+    enumerator {
+      name: "DOMAIN_BUS_PCI_MSI"
+      value: 3
+    }
+    enumerator {
+      name: "DOMAIN_BUS_PLATFORM_MSI"
+      value: 4
+    }
+    enumerator {
+      name: "DOMAIN_BUS_NEXUS"
+      value: 5
+    }
+    enumerator {
+      name: "DOMAIN_BUS_IPI"
+      value: 6
+    }
+    enumerator {
+      name: "DOMAIN_BUS_FSL_MC_MSI"
+      value: 7
+    }
+    enumerator {
+      name: "DOMAIN_BUS_TI_SCI_INTA_MSI"
+      value: 8
+    }
+    enumerator {
+      name: "DOMAIN_BUS_WAKEUP"
+      value: 9
+    }
+    enumerator {
+      name: "DOMAIN_BUS_VMD_MSI"
+      value: 10
+    }
+  }
+}
+enumeration {
+  id: 0x246497bd
+  name: "irq_gc_flags"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "IRQ_GC_INIT_MASK_CACHE"
+      value: 1
+    }
+    enumerator {
+      name: "IRQ_GC_INIT_NESTED_LOCK"
+      value: 2
+    }
+    enumerator {
+      name: "IRQ_GC_MASK_CACHE_PER_TYPE"
+      value: 4
+    }
+    enumerator {
+      name: "IRQ_GC_NO_MASK"
+      value: 8
+    }
+    enumerator {
+      name: "IRQ_GC_BE_IO"
+      value: 16
+    }
+  }
+}
+enumeration {
+  id: 0x6d9cce5f
+  name: "irqchip_irq_state"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "IRQCHIP_STATE_PENDING"
+    }
+    enumerator {
+      name: "IRQCHIP_STATE_ACTIVE"
+      value: 1
+    }
+    enumerator {
+      name: "IRQCHIP_STATE_MASKED"
+      value: 2
+    }
+    enumerator {
+      name: "IRQCHIP_STATE_LINE_LEVEL"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x7a89ec15
+  name: "irqreturn"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "IRQ_NONE"
+    }
+    enumerator {
+      name: "IRQ_HANDLED"
+      value: 1
+    }
+    enumerator {
+      name: "IRQ_WAKE_THREAD"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0xa1c6c291
+  name: "kernel_pkey_operation"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "kernel_pkey_encrypt"
+    }
+    enumerator {
+      name: "kernel_pkey_decrypt"
+      value: 1
+    }
+    enumerator {
+      name: "kernel_pkey_sign"
+      value: 2
+    }
+    enumerator {
+      name: "kernel_pkey_verify"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x093a9d02
+  name: "key_being_used_for"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "VERIFYING_MODULE_SIGNATURE"
+    }
+    enumerator {
+      name: "VERIFYING_FIRMWARE_SIGNATURE"
+      value: 1
+    }
+    enumerator {
+      name: "VERIFYING_KEXEC_PE_SIGNATURE"
+      value: 2
+    }
+    enumerator {
+      name: "VERIFYING_KEY_SIGNATURE"
+      value: 3
+    }
+    enumerator {
+      name: "VERIFYING_KEY_SELF_SIGNATURE"
+      value: 4
+    }
+    enumerator {
+      name: "VERIFYING_UNSPECIFIED_SIGNATURE"
+      value: 5
+    }
+    enumerator {
+      name: "NR__KEY_BEING_USED_FOR"
+      value: 6
+    }
+  }
+}
+enumeration {
+  id: 0x4e0bad92
+  name: "kmsg_dump_reason"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "KMSG_DUMP_UNDEF"
+    }
+    enumerator {
+      name: "KMSG_DUMP_PANIC"
+      value: 1
+    }
+    enumerator {
+      name: "KMSG_DUMP_OOPS"
+      value: 2
+    }
+    enumerator {
+      name: "KMSG_DUMP_EMERG"
+      value: 3
+    }
+    enumerator {
+      name: "KMSG_DUMP_SHUTDOWN"
+      value: 4
+    }
+    enumerator {
+      name: "KMSG_DUMP_MAX"
+      value: 5
+    }
+  }
+}
+enumeration {
+  id: 0xbc4eb052
+  name: "kobj_ns_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "KOBJ_NS_TYPE_NONE"
+    }
+    enumerator {
+      name: "KOBJ_NS_TYPE_NET"
+      value: 1
+    }
+    enumerator {
+      name: "KOBJ_NS_TYPES"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x1dd302e9
+  name: "kobject_action"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "KOBJ_ADD"
+    }
+    enumerator {
+      name: "KOBJ_REMOVE"
+      value: 1
+    }
+    enumerator {
+      name: "KOBJ_CHANGE"
+      value: 2
+    }
+    enumerator {
+      name: "KOBJ_MOVE"
+      value: 3
+    }
+    enumerator {
+      name: "KOBJ_ONLINE"
+      value: 4
+    }
+    enumerator {
+      name: "KOBJ_OFFLINE"
+      value: 5
+    }
+    enumerator {
+      name: "KOBJ_BIND"
+      value: 6
+    }
+    enumerator {
+      name: "KOBJ_UNBIND"
+      value: 7
+    }
+  }
+}
+enumeration {
+  id: 0x21590b1d
+  name: "kunit_assert_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "KUNIT_ASSERTION"
+    }
+    enumerator {
+      name: "KUNIT_EXPECTATION"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0xe4d0195f
+  name: "kunit_status"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "KUNIT_SUCCESS"
+    }
+    enumerator {
+      name: "KUNIT_FAILURE"
+      value: 1
+    }
+    enumerator {
+      name: "KUNIT_SKIPPED"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x1908b154
+  name: "kvm_pgtable_prot"
+  definition {
+    underlying_type_id: 0x33756485
+    enumerator {
+      name: "KVM_PGTABLE_PROT_X"
+      value: 1
+    }
+    enumerator {
+      name: "KVM_PGTABLE_PROT_W"
+      value: 2
+    }
+    enumerator {
+      name: "KVM_PGTABLE_PROT_R"
+      value: 4
+    }
+    enumerator {
+      name: "KVM_PGTABLE_PROT_DEVICE"
+      value: 8
+    }
+    enumerator {
+      name: "KVM_PGTABLE_PROT_NC"
+      value: 16
+    }
+    enumerator {
+      name: "KVM_PGTABLE_PROT_PXN"
+      value: 32
+    }
+    enumerator {
+      name: "KVM_PGTABLE_PROT_UXN"
+      value: 64
+    }
+    enumerator {
+      name: "KVM_PGTABLE_PROT_SW0"
+      value: 36028797018963968
+    }
+    enumerator {
+      name: "KVM_PGTABLE_PROT_SW1"
+      value: 72057594037927936
+    }
+    enumerator {
+      name: "KVM_PGTABLE_PROT_SW2"
+      value: 144115188075855872
+    }
+    enumerator {
+      name: "KVM_PGTABLE_PROT_SW3"
+      value: 288230376151711744
+    }
+  }
+}
+enumeration {
+  id: 0xb3f81878
+  name: "kvm_pgtable_stage2_flags"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "KVM_PGTABLE_S2_NOFWB"
+      value: 1
+    }
+    enumerator {
+      name: "KVM_PGTABLE_S2_IDMAP"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0xfd01d20e
+  name: "kvm_stat_kind"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "KVM_STAT_VM"
+    }
+    enumerator {
+      name: "KVM_STAT_VCPU"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0x791ac8b7
+  name: "l2tp_encap_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "L2TP_ENCAPTYPE_UDP"
+    }
+    enumerator {
+      name: "L2TP_ENCAPTYPE_IP"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0x240d91a7
+  name: "l2tp_pwtype"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "L2TP_PWTYPE_NONE"
+    }
+    enumerator {
+      name: "L2TP_PWTYPE_ETH_VLAN"
+      value: 4
+    }
+    enumerator {
+      name: "L2TP_PWTYPE_ETH"
+      value: 5
+    }
+    enumerator {
+      name: "L2TP_PWTYPE_PPP"
+      value: 7
+    }
+    enumerator {
+      name: "L2TP_PWTYPE_PPP_AC"
+      value: 8
+    }
+    enumerator {
+      name: "L2TP_PWTYPE_IP"
+      value: 11
+    }
+    enumerator {
+      name: "__L2TP_PWTYPE_MAX"
+      value: 12
+    }
+  }
+}
+enumeration {
+  id: 0x3a9fa744
+  name: "led_brightness"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "LED_OFF"
+    }
+    enumerator {
+      name: "LED_ON"
+      value: 1
+    }
+    enumerator {
+      name: "LED_HALF"
+      value: 127
+    }
+    enumerator {
+      name: "LED_FULL"
+      value: 255
+    }
+  }
+}
+enumeration {
+  id: 0x1eba3506
+  name: "led_default_state"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "LEDS_DEFSTATE_OFF"
+    }
+    enumerator {
+      name: "LEDS_DEFSTATE_ON"
+      value: 1
+    }
+    enumerator {
+      name: "LEDS_DEFSTATE_KEEP"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0xf01a263d
+  name: "lockdep_ok"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "LOCKDEP_STILL_OK"
+    }
+    enumerator {
+      name: "LOCKDEP_NOW_UNRELIABLE"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0xe37d9923
+  name: "lowpan_lltypes"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "LOWPAN_LLTYPE_BTLE"
+    }
+    enumerator {
+      name: "LOWPAN_LLTYPE_IEEE802154"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0x0b05beb9
+  name: "macsec_offload"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "MACSEC_OFFLOAD_OFF"
+    }
+    enumerator {
+      name: "MACSEC_OFFLOAD_PHY"
+      value: 1
+    }
+    enumerator {
+      name: "MACSEC_OFFLOAD_MAC"
+      value: 2
+    }
+    enumerator {
+      name: "__MACSEC_OFFLOAD_END"
+      value: 3
+    }
+    enumerator {
+      name: "MACSEC_OFFLOAD_MAX"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x31983cc8
+  name: "macsec_validation_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "MACSEC_VALIDATE_DISABLED"
+    }
+    enumerator {
+      name: "MACSEC_VALIDATE_CHECK"
+      value: 1
+    }
+    enumerator {
+      name: "MACSEC_VALIDATE_STRICT"
+      value: 2
+    }
+    enumerator {
+      name: "__MACSEC_VALIDATE_END"
+      value: 3
+    }
+    enumerator {
+      name: "MACSEC_VALIDATE_MAX"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x16bd8c09
+  name: "media_entity_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "MEDIA_ENTITY_TYPE_BASE"
+    }
+    enumerator {
+      name: "MEDIA_ENTITY_TYPE_VIDEO_DEVICE"
+      value: 1
+    }
+    enumerator {
+      name: "MEDIA_ENTITY_TYPE_V4L2_SUBDEV"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x5a8462fa
+  name: "media_pad_signal_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "PAD_SIGNAL_DEFAULT"
+    }
+    enumerator {
+      name: "PAD_SIGNAL_ANALOG"
+      value: 1
+    }
+    enumerator {
+      name: "PAD_SIGNAL_DV"
+      value: 2
+    }
+    enumerator {
+      name: "PAD_SIGNAL_AUDIO"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x1506ad97
+  name: "media_request_state"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "MEDIA_REQUEST_STATE_IDLE"
+    }
+    enumerator {
+      name: "MEDIA_REQUEST_STATE_VALIDATING"
+      value: 1
+    }
+    enumerator {
+      name: "MEDIA_REQUEST_STATE_QUEUED"
+      value: 2
+    }
+    enumerator {
+      name: "MEDIA_REQUEST_STATE_COMPLETE"
+      value: 3
+    }
+    enumerator {
+      name: "MEDIA_REQUEST_STATE_CLEANING"
+      value: 4
+    }
+    enumerator {
+      name: "MEDIA_REQUEST_STATE_UPDATING"
+      value: 5
+    }
+    enumerator {
+      name: "NR_OF_MEDIA_REQUEST_STATE"
+      value: 6
+    }
+  }
+}
+enumeration {
+  id: 0x3843f4e3
+  name: "memory_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "MEMORY_DEVICE_PRIVATE"
+      value: 1
+    }
+    enumerator {
+      name: "MEMORY_DEVICE_COHERENT"
+      value: 2
+    }
+    enumerator {
+      name: "MEMORY_DEVICE_FS_DAX"
+      value: 3
+    }
+    enumerator {
+      name: "MEMORY_DEVICE_GENERIC"
+      value: 4
+    }
+    enumerator {
+      name: "MEMORY_DEVICE_PCI_P2PDMA"
+      value: 5
+    }
+  }
+}
+enumeration {
+  id: 0x641a2bf3
+  name: "metadata_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "METADATA_IP_TUNNEL"
+    }
+    enumerator {
+      name: "METADATA_HW_PORT_MUX"
+      value: 1
+    }
+    enumerator {
+      name: "METADATA_MACSEC"
+      value: 2
+    }
+    enumerator {
+      name: "METADATA_XFRM"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x469ea43a
+  name: "migrate_mode"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "MIGRATE_ASYNC"
+    }
+    enumerator {
+      name: "MIGRATE_SYNC_LIGHT"
+      value: 1
+    }
+    enumerator {
+      name: "MIGRATE_SYNC"
+      value: 2
+    }
+    enumerator {
+      name: "MIGRATE_SYNC_NO_COPY"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0xda0bfa94
+  name: "mipi_dsi_dcs_tear_mode"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "MIPI_DSI_DCS_TEAR_MODE_VBLANK"
+    }
+    enumerator {
+      name: "MIPI_DSI_DCS_TEAR_MODE_VHBLANK"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0xc1c477e4
+  name: "mipi_dsi_pixel_format"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "MIPI_DSI_FMT_RGB888"
+    }
+    enumerator {
+      name: "MIPI_DSI_FMT_RGB666"
+      value: 1
+    }
+    enumerator {
+      name: "MIPI_DSI_FMT_RGB666_PACKED"
+      value: 2
+    }
+    enumerator {
+      name: "MIPI_DSI_FMT_RGB565"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x083d3246
+  name: "mmc_issue_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "MMC_ISSUE_SYNC"
+    }
+    enumerator {
+      name: "MMC_ISSUE_DCMD"
+      value: 1
+    }
+    enumerator {
+      name: "MMC_ISSUE_ASYNC"
+      value: 2
+    }
+    enumerator {
+      name: "MMC_ISSUE_MAX"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x98849204
+  name: "mmu_notifier_event"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "MMU_NOTIFY_UNMAP"
+    }
+    enumerator {
+      name: "MMU_NOTIFY_CLEAR"
+      value: 1
+    }
+    enumerator {
+      name: "MMU_NOTIFY_PROTECTION_VMA"
+      value: 2
+    }
+    enumerator {
+      name: "MMU_NOTIFY_PROTECTION_PAGE"
+      value: 3
+    }
+    enumerator {
+      name: "MMU_NOTIFY_SOFT_DIRTY"
+      value: 4
+    }
+    enumerator {
+      name: "MMU_NOTIFY_RELEASE"
+      value: 5
+    }
+    enumerator {
+      name: "MMU_NOTIFY_MIGRATE"
+      value: 6
+    }
+    enumerator {
+      name: "MMU_NOTIFY_EXCLUSIVE"
+      value: 7
+    }
+  }
+}
+enumeration {
+  id: 0x73b81062
+  name: "mode_set_atomic"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "LEAVE_ATOMIC_MODE_SET"
+    }
+    enumerator {
+      name: "ENTER_ATOMIC_MODE_SET"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0x7d978e5b
+  name: "module_state"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "MODULE_STATE_LIVE"
+    }
+    enumerator {
+      name: "MODULE_STATE_COMING"
+      value: 1
+    }
+    enumerator {
+      name: "MODULE_STATE_GOING"
+      value: 2
+    }
+    enumerator {
+      name: "MODULE_STATE_UNFORMED"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0xa1af970a
+  name: "mq_rq_state"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "MQ_RQ_IDLE"
+    }
+    enumerator {
+      name: "MQ_RQ_IN_FLIGHT"
+      value: 1
+    }
+    enumerator {
+      name: "MQ_RQ_COMPLETE"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0xba26dbb2
+  name: "msi_desc_filter"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "MSI_DESC_ALL"
+    }
+    enumerator {
+      name: "MSI_DESC_NOTASSOCIATED"
+      value: 1
+    }
+    enumerator {
+      name: "MSI_DESC_ASSOCIATED"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0xa13cd7c6
+  name: "net_device_path_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DEV_PATH_ETHERNET"
+    }
+    enumerator {
+      name: "DEV_PATH_VLAN"
+      value: 1
+    }
+    enumerator {
+      name: "DEV_PATH_BRIDGE"
+      value: 2
+    }
+    enumerator {
+      name: "DEV_PATH_PPPOE"
+      value: 3
+    }
+    enumerator {
+      name: "DEV_PATH_DSA"
+      value: 4
+    }
+    enumerator {
+      name: "DEV_PATH_MTK_WDMA"
+      value: 5
+    }
+  }
+}
+enumeration {
+  id: 0xc18cfef2
+  name: "netdev_ml_priv_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "ML_PRIV_NONE"
+    }
+    enumerator {
+      name: "ML_PRIV_CAN"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0xb9637b4a
+  name: "netdev_tx"
+  definition {
+    underlying_type_id: 0x6720d32f
+    enumerator {
+      name: "__NETDEV_TX_MIN"
+      value: -2147483648
+    }
+    enumerator {
+      name: "NETDEV_TX_OK"
+    }
+    enumerator {
+      name: "NETDEV_TX_BUSY"
+      value: 16
+    }
+  }
+}
+enumeration {
+  id: 0xd62e128a
+  name: "nf_hook_ops_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "NF_HOOK_OP_UNDEFINED"
+    }
+    enumerator {
+      name: "NF_HOOK_OP_NF_TABLES"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0x14ba251a
+  name: "nf_log_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "NF_LOG_TYPE_LOG"
+    }
+    enumerator {
+      name: "NF_LOG_TYPE_ULOG"
+      value: 1
+    }
+    enumerator {
+      name: "NF_LOG_TYPE_MAX"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0xb1d8b45e
+  name: "nfc_attrs"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "NFC_ATTR_UNSPEC"
+    }
+    enumerator {
+      name: "NFC_ATTR_DEVICE_INDEX"
+      value: 1
+    }
+    enumerator {
+      name: "NFC_ATTR_DEVICE_NAME"
+      value: 2
+    }
+    enumerator {
+      name: "NFC_ATTR_PROTOCOLS"
+      value: 3
+    }
+    enumerator {
+      name: "NFC_ATTR_TARGET_INDEX"
+      value: 4
+    }
+    enumerator {
+      name: "NFC_ATTR_TARGET_SENS_RES"
+      value: 5
+    }
+    enumerator {
+      name: "NFC_ATTR_TARGET_SEL_RES"
+      value: 6
+    }
+    enumerator {
+      name: "NFC_ATTR_TARGET_NFCID1"
+      value: 7
+    }
+    enumerator {
+      name: "NFC_ATTR_TARGET_SENSB_RES"
+      value: 8
+    }
+    enumerator {
+      name: "NFC_ATTR_TARGET_SENSF_RES"
+      value: 9
+    }
+    enumerator {
+      name: "NFC_ATTR_COMM_MODE"
+      value: 10
+    }
+    enumerator {
+      name: "NFC_ATTR_RF_MODE"
+      value: 11
+    }
+    enumerator {
+      name: "NFC_ATTR_DEVICE_POWERED"
+      value: 12
+    }
+    enumerator {
+      name: "NFC_ATTR_IM_PROTOCOLS"
+      value: 13
+    }
+    enumerator {
+      name: "NFC_ATTR_TM_PROTOCOLS"
+      value: 14
+    }
+    enumerator {
+      name: "NFC_ATTR_LLC_PARAM_LTO"
+      value: 15
+    }
+    enumerator {
+      name: "NFC_ATTR_LLC_PARAM_RW"
+      value: 16
+    }
+    enumerator {
+      name: "NFC_ATTR_LLC_PARAM_MIUX"
+      value: 17
+    }
+    enumerator {
+      name: "NFC_ATTR_SE"
+      value: 18
+    }
+    enumerator {
+      name: "NFC_ATTR_LLC_SDP"
+      value: 19
+    }
+    enumerator {
+      name: "NFC_ATTR_FIRMWARE_NAME"
+      value: 20
+    }
+    enumerator {
+      name: "NFC_ATTR_SE_INDEX"
+      value: 21
+    }
+    enumerator {
+      name: "NFC_ATTR_SE_TYPE"
+      value: 22
+    }
+    enumerator {
+      name: "NFC_ATTR_SE_AID"
+      value: 23
+    }
+    enumerator {
+      name: "NFC_ATTR_FIRMWARE_DOWNLOAD_STATUS"
+      value: 24
+    }
+    enumerator {
+      name: "NFC_ATTR_SE_APDU"
+      value: 25
+    }
+    enumerator {
+      name: "NFC_ATTR_TARGET_ISO15693_DSFID"
+      value: 26
+    }
+    enumerator {
+      name: "NFC_ATTR_TARGET_ISO15693_UID"
+      value: 27
+    }
+    enumerator {
+      name: "NFC_ATTR_SE_PARAMS"
+      value: 28
+    }
+    enumerator {
+      name: "NFC_ATTR_VENDOR_ID"
+      value: 29
+    }
+    enumerator {
+      name: "NFC_ATTR_VENDOR_SUBCMD"
+      value: 30
+    }
+    enumerator {
+      name: "NFC_ATTR_VENDOR_DATA"
+      value: 31
+    }
+    enumerator {
+      name: "__NFC_ATTR_AFTER_LAST"
+      value: 32
+    }
+  }
+}
+enumeration {
+  id: 0xa28f9420
+  name: "nl80211_band"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "NL80211_BAND_2GHZ"
+    }
+    enumerator {
+      name: "NL80211_BAND_5GHZ"
+      value: 1
+    }
+    enumerator {
+      name: "NL80211_BAND_60GHZ"
+      value: 2
+    }
+    enumerator {
+      name: "NL80211_BAND_6GHZ"
+      value: 3
+    }
+    enumerator {
+      name: "NL80211_BAND_S1GHZ"
+      value: 4
+    }
+    enumerator {
+      name: "NL80211_BAND_LC"
+      value: 5
+    }
+    enumerator {
+      name: "NUM_NL80211_BANDS"
+      value: 6
+    }
+  }
+}
+enumeration {
+  id: 0x158778bc
+  name: "nl80211_bss_scan_width"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "NL80211_BSS_CHAN_WIDTH_20"
+    }
+    enumerator {
+      name: "NL80211_BSS_CHAN_WIDTH_10"
+      value: 1
+    }
+    enumerator {
+      name: "NL80211_BSS_CHAN_WIDTH_5"
+      value: 2
+    }
+    enumerator {
+      name: "NL80211_BSS_CHAN_WIDTH_1"
+      value: 3
+    }
+    enumerator {
+      name: "NL80211_BSS_CHAN_WIDTH_2"
+      value: 4
+    }
+    enumerator {
+      name: "NL80211_BSS_CHAN_WIDTH_ANDROID_KABI_RESERVED_1"
+      value: 5
+    }
+    enumerator {
+      name: "NL80211_BSS_CHAN_WIDTH_ANDROID_KABI_RESERVED_2"
+      value: 6
+    }
+    enumerator {
+      name: "NL80211_BSS_CHAN_WIDTH_ANDROID_KABI_RESERVED_3"
+      value: 7
+    }
+    enumerator {
+      name: "NL80211_BSS_CHAN_WIDTH_ANDROID_KABI_RESERVED_4"
+      value: 8
+    }
+    enumerator {
+      name: "NL80211_BSS_CHAN_WIDTH_ANDROID_KABI_RESERVED_5"
+      value: 9
+    }
+  }
+}
+enumeration {
+  id: 0xcc4cb9da
+  name: "nl80211_chan_width"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "NL80211_CHAN_WIDTH_20_NOHT"
+    }
+    enumerator {
+      name: "NL80211_CHAN_WIDTH_20"
+      value: 1
+    }
+    enumerator {
+      name: "NL80211_CHAN_WIDTH_40"
+      value: 2
+    }
+    enumerator {
+      name: "NL80211_CHAN_WIDTH_80"
+      value: 3
+    }
+    enumerator {
+      name: "NL80211_CHAN_WIDTH_80P80"
+      value: 4
+    }
+    enumerator {
+      name: "NL80211_CHAN_WIDTH_160"
+      value: 5
+    }
+    enumerator {
+      name: "NL80211_CHAN_WIDTH_5"
+      value: 6
+    }
+    enumerator {
+      name: "NL80211_CHAN_WIDTH_10"
+      value: 7
+    }
+    enumerator {
+      name: "NL80211_CHAN_WIDTH_1"
+      value: 8
+    }
+    enumerator {
+      name: "NL80211_CHAN_WIDTH_2"
+      value: 9
+    }
+    enumerator {
+      name: "NL80211_CHAN_WIDTH_4"
+      value: 10
+    }
+    enumerator {
+      name: "NL80211_CHAN_WIDTH_8"
+      value: 11
+    }
+    enumerator {
+      name: "NL80211_CHAN_WIDTH_16"
+      value: 12
+    }
+    enumerator {
+      name: "NL80211_CHAN_WIDTH_320"
+      value: 13
+    }
+  }
+}
+enumeration {
+  id: 0xa867645b
+  name: "nl80211_dfs_regions"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "NL80211_DFS_UNSET"
+    }
+    enumerator {
+      name: "NL80211_DFS_FCC"
+      value: 1
+    }
+    enumerator {
+      name: "NL80211_DFS_ETSI"
+      value: 2
+    }
+    enumerator {
+      name: "NL80211_DFS_JP"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x79e73f79
+  name: "nl80211_dfs_state"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "NL80211_DFS_USABLE"
+    }
+    enumerator {
+      name: "NL80211_DFS_UNAVAILABLE"
+      value: 1
+    }
+    enumerator {
+      name: "NL80211_DFS_AVAILABLE"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x6287f13b
+  name: "nl80211_iftype"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "NL80211_IFTYPE_UNSPECIFIED"
+    }
+    enumerator {
+      name: "NL80211_IFTYPE_ADHOC"
+      value: 1
+    }
+    enumerator {
+      name: "NL80211_IFTYPE_STATION"
+      value: 2
+    }
+    enumerator {
+      name: "NL80211_IFTYPE_AP"
+      value: 3
+    }
+    enumerator {
+      name: "NL80211_IFTYPE_AP_VLAN"
+      value: 4
+    }
+    enumerator {
+      name: "NL80211_IFTYPE_WDS"
+      value: 5
+    }
+    enumerator {
+      name: "NL80211_IFTYPE_MONITOR"
+      value: 6
+    }
+    enumerator {
+      name: "NL80211_IFTYPE_MESH_POINT"
+      value: 7
+    }
+    enumerator {
+      name: "NL80211_IFTYPE_P2P_CLIENT"
+      value: 8
+    }
+    enumerator {
+      name: "NL80211_IFTYPE_P2P_GO"
+      value: 9
+    }
+    enumerator {
+      name: "NL80211_IFTYPE_P2P_DEVICE"
+      value: 10
+    }
+    enumerator {
+      name: "NL80211_IFTYPE_OCB"
+      value: 11
+    }
+    enumerator {
+      name: "NL80211_IFTYPE_NAN"
+      value: 12
+    }
+    enumerator {
+      name: "NUM_NL80211_IFTYPES"
+      value: 13
+    }
+    enumerator {
+      name: "NL80211_IFTYPE_MAX"
+      value: 12
+    }
+  }
+}
+enumeration {
+  id: 0xc5caf5f9
+  name: "nl80211_reg_initiator"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "NL80211_REGDOM_SET_BY_CORE"
+    }
+    enumerator {
+      name: "NL80211_REGDOM_SET_BY_USER"
+      value: 1
+    }
+    enumerator {
+      name: "NL80211_REGDOM_SET_BY_DRIVER"
+      value: 2
+    }
+    enumerator {
+      name: "NL80211_REGDOM_SET_BY_COUNTRY_IE"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0xb98aebc2
+  name: "nl80211_sar_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "NL80211_SAR_TYPE_POWER"
+    }
+    enumerator {
+      name: "NUM_NL80211_SAR_TYPE"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0xc72fc5ee
+  name: "nl80211_user_reg_hint_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "NL80211_USER_REG_HINT_USER"
+    }
+    enumerator {
+      name: "NL80211_USER_REG_HINT_CELL_BASE"
+      value: 1
+    }
+    enumerator {
+      name: "NL80211_USER_REG_HINT_INDOOR"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0xddf37902
+  name: "nl802154_cca_modes"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "__NL802154_CCA_INVALID"
+    }
+    enumerator {
+      name: "NL802154_CCA_ENERGY"
+      value: 1
+    }
+    enumerator {
+      name: "NL802154_CCA_CARRIER"
+      value: 2
+    }
+    enumerator {
+      name: "NL802154_CCA_ENERGY_CARRIER"
+      value: 3
+    }
+    enumerator {
+      name: "NL802154_CCA_ALOHA"
+      value: 4
+    }
+    enumerator {
+      name: "NL802154_CCA_UWB_SHR"
+      value: 5
+    }
+    enumerator {
+      name: "NL802154_CCA_UWB_MULTIPLEXED"
+      value: 6
+    }
+    enumerator {
+      name: "__NL802154_CCA_ATTR_AFTER_LAST"
+      value: 7
+    }
+    enumerator {
+      name: "NL802154_CCA_ATTR_MAX"
+      value: 6
+    }
+  }
+}
+enumeration {
+  id: 0x901d84ad
+  name: "nl802154_cca_opts"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "NL802154_CCA_OPT_ENERGY_CARRIER_AND"
+    }
+    enumerator {
+      name: "NL802154_CCA_OPT_ENERGY_CARRIER_OR"
+      value: 1
+    }
+    enumerator {
+      name: "__NL802154_CCA_OPT_ATTR_AFTER_LAST"
+      value: 2
+    }
+    enumerator {
+      name: "NL802154_CCA_OPT_ATTR_MAX"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0xe5f7924d
+  name: "nl802154_iftype"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "NL802154_IFTYPE_UNSPEC"
+      value: 4294967295
+    }
+    enumerator {
+      name: "NL802154_IFTYPE_NODE"
+    }
+    enumerator {
+      name: "NL802154_IFTYPE_MONITOR"
+      value: 1
+    }
+    enumerator {
+      name: "NL802154_IFTYPE_COORD"
+      value: 2
+    }
+    enumerator {
+      name: "NUM_NL802154_IFTYPES"
+      value: 3
+    }
+    enumerator {
+      name: "NL802154_IFTYPE_MAX"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0xa6e32300
+  name: "nl802154_supported_bool_states"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "NL802154_SUPPORTED_BOOL_FALSE"
+    }
+    enumerator {
+      name: "NL802154_SUPPORTED_BOOL_TRUE"
+      value: 1
+    }
+    enumerator {
+      name: "__NL802154_SUPPORTED_BOOL_INVALD"
+      value: 2
+    }
+    enumerator {
+      name: "NL802154_SUPPORTED_BOOL_BOTH"
+      value: 3
+    }
+    enumerator {
+      name: "__NL802154_SUPPORTED_BOOL_AFTER_LAST"
+      value: 4
+    }
+    enumerator {
+      name: "NL802154_SUPPORTED_BOOL_MAX"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x2c456d6d
+  name: "node_stat_item"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "NR_LRU_BASE"
+    }
+    enumerator {
+      name: "NR_INACTIVE_ANON"
+    }
+    enumerator {
+      name: "NR_ACTIVE_ANON"
+      value: 1
+    }
+    enumerator {
+      name: "NR_INACTIVE_FILE"
+      value: 2
+    }
+    enumerator {
+      name: "NR_ACTIVE_FILE"
+      value: 3
+    }
+    enumerator {
+      name: "NR_UNEVICTABLE"
+      value: 4
+    }
+    enumerator {
+      name: "NR_SLAB_RECLAIMABLE_B"
+      value: 5
+    }
+    enumerator {
+      name: "NR_SLAB_UNRECLAIMABLE_B"
+      value: 6
+    }
+    enumerator {
+      name: "NR_ISOLATED_ANON"
+      value: 7
+    }
+    enumerator {
+      name: "NR_ISOLATED_FILE"
+      value: 8
+    }
+    enumerator {
+      name: "WORKINGSET_NODES"
+      value: 9
+    }
+    enumerator {
+      name: "WORKINGSET_REFAULT_BASE"
+      value: 10
+    }
+    enumerator {
+      name: "WORKINGSET_REFAULT_ANON"
+      value: 10
+    }
+    enumerator {
+      name: "WORKINGSET_REFAULT_FILE"
+      value: 11
+    }
+    enumerator {
+      name: "WORKINGSET_ACTIVATE_BASE"
+      value: 12
+    }
+    enumerator {
+      name: "WORKINGSET_ACTIVATE_ANON"
+      value: 12
+    }
+    enumerator {
+      name: "WORKINGSET_ACTIVATE_FILE"
+      value: 13
+    }
+    enumerator {
+      name: "WORKINGSET_RESTORE_BASE"
+      value: 14
+    }
+    enumerator {
+      name: "WORKINGSET_RESTORE_ANON"
+      value: 14
+    }
+    enumerator {
+      name: "WORKINGSET_RESTORE_FILE"
+      value: 15
+    }
+    enumerator {
+      name: "WORKINGSET_NODERECLAIM"
+      value: 16
+    }
+    enumerator {
+      name: "NR_ANON_MAPPED"
+      value: 17
+    }
+    enumerator {
+      name: "NR_FILE_MAPPED"
+      value: 18
+    }
+    enumerator {
+      name: "NR_FILE_PAGES"
+      value: 19
+    }
+    enumerator {
+      name: "NR_FILE_DIRTY"
+      value: 20
+    }
+    enumerator {
+      name: "NR_WRITEBACK"
+      value: 21
+    }
+    enumerator {
+      name: "NR_WRITEBACK_TEMP"
+      value: 22
+    }
+    enumerator {
+      name: "NR_SHMEM"
+      value: 23
+    }
+    enumerator {
+      name: "NR_SHMEM_THPS"
+      value: 24
+    }
+    enumerator {
+      name: "NR_SHMEM_PMDMAPPED"
+      value: 25
+    }
+    enumerator {
+      name: "NR_FILE_THPS"
+      value: 26
+    }
+    enumerator {
+      name: "NR_FILE_PMDMAPPED"
+      value: 27
+    }
+    enumerator {
+      name: "NR_ANON_THPS"
+      value: 28
+    }
+    enumerator {
+      name: "NR_VMSCAN_WRITE"
+      value: 29
+    }
+    enumerator {
+      name: "NR_VMSCAN_IMMEDIATE"
+      value: 30
+    }
+    enumerator {
+      name: "NR_DIRTIED"
+      value: 31
+    }
+    enumerator {
+      name: "NR_WRITTEN"
+      value: 32
+    }
+    enumerator {
+      name: "NR_THROTTLED_WRITTEN"
+      value: 33
+    }
+    enumerator {
+      name: "NR_KERNEL_MISC_RECLAIMABLE"
+      value: 34
+    }
+    enumerator {
+      name: "NR_FOLL_PIN_ACQUIRED"
+      value: 35
+    }
+    enumerator {
+      name: "NR_FOLL_PIN_RELEASED"
+      value: 36
+    }
+    enumerator {
+      name: "NR_KERNEL_STACK_KB"
+      value: 37
+    }
+    enumerator {
+      name: "NR_KERNEL_SCS_KB"
+      value: 38
+    }
+    enumerator {
+      name: "NR_PAGETABLE"
+      value: 39
+    }
+    enumerator {
+      name: "NR_SECONDARY_PAGETABLE"
+      value: 40
+    }
+    enumerator {
+      name: "NR_SWAPCACHE"
+      value: 41
+    }
+    enumerator {
+      name: "NR_VM_NODE_STAT_ITEMS"
+      value: 42
+    }
+  }
+}
+enumeration {
+  id: 0xc4cf348e
+  name: "nvdimm_fwa_capability"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "NVDIMM_FWA_CAP_INVALID"
+    }
+    enumerator {
+      name: "NVDIMM_FWA_CAP_NONE"
+      value: 1
+    }
+    enumerator {
+      name: "NVDIMM_FWA_CAP_QUIESCE"
+      value: 2
+    }
+    enumerator {
+      name: "NVDIMM_FWA_CAP_LIVE"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x4bcb477a
+  name: "nvdimm_fwa_result"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "NVDIMM_FWA_RESULT_INVALID"
+    }
+    enumerator {
+      name: "NVDIMM_FWA_RESULT_NONE"
+      value: 1
+    }
+    enumerator {
+      name: "NVDIMM_FWA_RESULT_SUCCESS"
+      value: 2
+    }
+    enumerator {
+      name: "NVDIMM_FWA_RESULT_NOTSTAGED"
+      value: 3
+    }
+    enumerator {
+      name: "NVDIMM_FWA_RESULT_NEEDRESET"
+      value: 4
+    }
+    enumerator {
+      name: "NVDIMM_FWA_RESULT_FAIL"
+      value: 5
+    }
+  }
+}
+enumeration {
+  id: 0xe2774cab
+  name: "nvdimm_fwa_state"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "NVDIMM_FWA_INVALID"
+    }
+    enumerator {
+      name: "NVDIMM_FWA_IDLE"
+      value: 1
+    }
+    enumerator {
+      name: "NVDIMM_FWA_ARMED"
+      value: 2
+    }
+    enumerator {
+      name: "NVDIMM_FWA_BUSY"
+      value: 3
+    }
+    enumerator {
+      name: "NVDIMM_FWA_ARM_OVERFLOW"
+      value: 4
+    }
+  }
+}
+enumeration {
+  id: 0xfd21f1cc
+  name: "nvdimm_fwa_trigger"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "NVDIMM_FWA_ARM"
+    }
+    enumerator {
+      name: "NVDIMM_FWA_DISARM"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0xcddc4fff
+  name: "nvdimm_passphrase_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "NVDIMM_USER"
+    }
+    enumerator {
+      name: "NVDIMM_MASTER"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0xc0fced27
+  name: "nvmem_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "NVMEM_TYPE_UNKNOWN"
+    }
+    enumerator {
+      name: "NVMEM_TYPE_EEPROM"
+      value: 1
+    }
+    enumerator {
+      name: "NVMEM_TYPE_OTP"
+      value: 2
+    }
+    enumerator {
+      name: "NVMEM_TYPE_BATTERY_BACKED"
+      value: 3
+    }
+    enumerator {
+      name: "NVMEM_TYPE_FRAM"
+      value: 4
+    }
+  }
+}
+enumeration {
+  id: 0xe03c8fe2
+  name: "of_gpio_flags"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "OF_GPIO_ACTIVE_LOW"
+      value: 1
+    }
+    enumerator {
+      name: "OF_GPIO_SINGLE_ENDED"
+      value: 2
+    }
+    enumerator {
+      name: "OF_GPIO_OPEN_DRAIN"
+      value: 4
+    }
+    enumerator {
+      name: "OF_GPIO_TRANSITORY"
+      value: 8
+    }
+    enumerator {
+      name: "OF_GPIO_PULL_UP"
+      value: 16
+    }
+    enumerator {
+      name: "OF_GPIO_PULL_DOWN"
+      value: 32
+    }
+    enumerator {
+      name: "OF_GPIO_PULL_DISABLE"
+      value: 64
+    }
+  }
+}
+enumeration {
+  id: 0xf7c61c85
+  name: "opp_table_access"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "OPP_TABLE_ACCESS_UNKNOWN"
+    }
+    enumerator {
+      name: "OPP_TABLE_ACCESS_EXCLUSIVE"
+      value: 1
+    }
+    enumerator {
+      name: "OPP_TABLE_ACCESS_SHARED"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x6c069566
+  name: "page_entry_size"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "PE_SIZE_PTE"
+    }
+    enumerator {
+      name: "PE_SIZE_PMD"
+      value: 1
+    }
+    enumerator {
+      name: "PE_SIZE_PUD"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x791165e9
+  name: "pci_barno"
+  definition {
+    underlying_type_id: 0x6720d32f
+    enumerator {
+      name: "NO_BAR"
+      value: -1
+    }
+    enumerator {
+      name: "BAR_0"
+    }
+    enumerator {
+      name: "BAR_1"
+      value: 1
+    }
+    enumerator {
+      name: "BAR_2"
+      value: 2
+    }
+    enumerator {
+      name: "BAR_3"
+      value: 3
+    }
+    enumerator {
+      name: "BAR_4"
+      value: 4
+    }
+    enumerator {
+      name: "BAR_5"
+      value: 5
+    }
+  }
+}
+enumeration {
+  id: 0xa12a969e
+  name: "pci_bus_speed"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "PCI_SPEED_33MHz"
+    }
+    enumerator {
+      name: "PCI_SPEED_66MHz"
+      value: 1
+    }
+    enumerator {
+      name: "PCI_SPEED_66MHz_PCIX"
+      value: 2
+    }
+    enumerator {
+      name: "PCI_SPEED_100MHz_PCIX"
+      value: 3
+    }
+    enumerator {
+      name: "PCI_SPEED_133MHz_PCIX"
+      value: 4
+    }
+    enumerator {
+      name: "PCI_SPEED_66MHz_PCIX_ECC"
+      value: 5
+    }
+    enumerator {
+      name: "PCI_SPEED_100MHz_PCIX_ECC"
+      value: 6
+    }
+    enumerator {
+      name: "PCI_SPEED_133MHz_PCIX_ECC"
+      value: 7
+    }
+    enumerator {
+      name: "PCI_SPEED_66MHz_PCIX_266"
+      value: 9
+    }
+    enumerator {
+      name: "PCI_SPEED_100MHz_PCIX_266"
+      value: 10
+    }
+    enumerator {
+      name: "PCI_SPEED_133MHz_PCIX_266"
+      value: 11
+    }
+    enumerator {
+      name: "AGP_UNKNOWN"
+      value: 12
+    }
+    enumerator {
+      name: "AGP_1X"
+      value: 13
+    }
+    enumerator {
+      name: "AGP_2X"
+      value: 14
+    }
+    enumerator {
+      name: "AGP_4X"
+      value: 15
+    }
+    enumerator {
+      name: "AGP_8X"
+      value: 16
+    }
+    enumerator {
+      name: "PCI_SPEED_66MHz_PCIX_533"
+      value: 17
+    }
+    enumerator {
+      name: "PCI_SPEED_100MHz_PCIX_533"
+      value: 18
+    }
+    enumerator {
+      name: "PCI_SPEED_133MHz_PCIX_533"
+      value: 19
+    }
+    enumerator {
+      name: "PCIE_SPEED_2_5GT"
+      value: 20
+    }
+    enumerator {
+      name: "PCIE_SPEED_5_0GT"
+      value: 21
+    }
+    enumerator {
+      name: "PCIE_SPEED_8_0GT"
+      value: 22
+    }
+    enumerator {
+      name: "PCIE_SPEED_16_0GT"
+      value: 23
+    }
+    enumerator {
+      name: "PCIE_SPEED_32_0GT"
+      value: 24
+    }
+    enumerator {
+      name: "PCIE_SPEED_64_0GT"
+      value: 25
+    }
+    enumerator {
+      name: "PCI_SPEED_UNKNOWN"
+      value: 255
+    }
+  }
+}
+enumeration {
+  id: 0xd81670c8
+  name: "pci_epc_irq_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "PCI_EPC_IRQ_UNKNOWN"
+    }
+    enumerator {
+      name: "PCI_EPC_IRQ_LEGACY"
+      value: 1
+    }
+    enumerator {
+      name: "PCI_EPC_IRQ_MSI"
+      value: 2
+    }
+    enumerator {
+      name: "PCI_EPC_IRQ_MSIX"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0xbee065d7
+  name: "pci_interrupt_pin"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "PCI_INTERRUPT_UNKNOWN"
+    }
+    enumerator {
+      name: "PCI_INTERRUPT_INTA"
+      value: 1
+    }
+    enumerator {
+      name: "PCI_INTERRUPT_INTB"
+      value: 2
+    }
+    enumerator {
+      name: "PCI_INTERRUPT_INTC"
+      value: 3
+    }
+    enumerator {
+      name: "PCI_INTERRUPT_INTD"
+      value: 4
+    }
+  }
+}
+enumeration {
+  id: 0x251fec82
+  name: "pcie_link_width"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "PCIE_LNK_WIDTH_RESRV"
+    }
+    enumerator {
+      name: "PCIE_LNK_X1"
+      value: 1
+    }
+    enumerator {
+      name: "PCIE_LNK_X2"
+      value: 2
+    }
+    enumerator {
+      name: "PCIE_LNK_X4"
+      value: 4
+    }
+    enumerator {
+      name: "PCIE_LNK_X8"
+      value: 8
+    }
+    enumerator {
+      name: "PCIE_LNK_X12"
+      value: 12
+    }
+    enumerator {
+      name: "PCIE_LNK_X16"
+      value: 16
+    }
+    enumerator {
+      name: "PCIE_LNK_X32"
+      value: 32
+    }
+    enumerator {
+      name: "PCIE_LNK_WIDTH_UNKNOWN"
+      value: 255
+    }
+  }
+}
+enumeration {
+  id: 0x633cd80c
+  name: "pd_msg_request"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "PD_MSG_NONE"
+    }
+    enumerator {
+      name: "PD_MSG_CTRL_REJECT"
+      value: 1
+    }
+    enumerator {
+      name: "PD_MSG_CTRL_WAIT"
+      value: 2
+    }
+    enumerator {
+      name: "PD_MSG_CTRL_NOT_SUPP"
+      value: 3
+    }
+    enumerator {
+      name: "PD_MSG_DATA_SINK_CAP"
+      value: 4
+    }
+    enumerator {
+      name: "PD_MSG_DATA_SOURCE_CAP"
+      value: 5
+    }
+  }
+}
+enumeration {
+  id: 0xdb6b364c
+  name: "perf_event_state"
+  definition {
+    underlying_type_id: 0x6720d32f
+    enumerator {
+      name: "PERF_EVENT_STATE_DEAD"
+      value: -4
+    }
+    enumerator {
+      name: "PERF_EVENT_STATE_EXIT"
+      value: -3
+    }
+    enumerator {
+      name: "PERF_EVENT_STATE_ERROR"
+      value: -2
+    }
+    enumerator {
+      name: "PERF_EVENT_STATE_OFF"
+      value: -1
+    }
+    enumerator {
+      name: "PERF_EVENT_STATE_INACTIVE"
+    }
+    enumerator {
+      name: "PERF_EVENT_STATE_ACTIVE"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0xe40ac8ae
+  name: "phy_media"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "PHY_MEDIA_DEFAULT"
+    }
+    enumerator {
+      name: "PHY_MEDIA_SR"
+      value: 1
+    }
+    enumerator {
+      name: "PHY_MEDIA_DAC"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0xeb3a06b4
+  name: "phy_mode"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "PHY_MODE_INVALID"
+    }
+    enumerator {
+      name: "PHY_MODE_USB_HOST"
+      value: 1
+    }
+    enumerator {
+      name: "PHY_MODE_USB_HOST_LS"
+      value: 2
+    }
+    enumerator {
+      name: "PHY_MODE_USB_HOST_FS"
+      value: 3
+    }
+    enumerator {
+      name: "PHY_MODE_USB_HOST_HS"
+      value: 4
+    }
+    enumerator {
+      name: "PHY_MODE_USB_HOST_SS"
+      value: 5
+    }
+    enumerator {
+      name: "PHY_MODE_USB_DEVICE"
+      value: 6
+    }
+    enumerator {
+      name: "PHY_MODE_USB_DEVICE_LS"
+      value: 7
+    }
+    enumerator {
+      name: "PHY_MODE_USB_DEVICE_FS"
+      value: 8
+    }
+    enumerator {
+      name: "PHY_MODE_USB_DEVICE_HS"
+      value: 9
+    }
+    enumerator {
+      name: "PHY_MODE_USB_DEVICE_SS"
+      value: 10
+    }
+    enumerator {
+      name: "PHY_MODE_USB_OTG"
+      value: 11
+    }
+    enumerator {
+      name: "PHY_MODE_UFS_HS_A"
+      value: 12
+    }
+    enumerator {
+      name: "PHY_MODE_UFS_HS_B"
+      value: 13
+    }
+    enumerator {
+      name: "PHY_MODE_PCIE"
+      value: 14
+    }
+    enumerator {
+      name: "PHY_MODE_ETHERNET"
+      value: 15
+    }
+    enumerator {
+      name: "PHY_MODE_MIPI_DPHY"
+      value: 16
+    }
+    enumerator {
+      name: "PHY_MODE_SATA"
+      value: 17
+    }
+    enumerator {
+      name: "PHY_MODE_LVDS"
+      value: 18
+    }
+    enumerator {
+      name: "PHY_MODE_DP"
+      value: 19
+    }
+  }
+}
+enumeration {
+  id: 0x6fcf5ca5
+  name: "phy_state"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "PHY_DOWN"
+    }
+    enumerator {
+      name: "PHY_READY"
+      value: 1
+    }
+    enumerator {
+      name: "PHY_HALTED"
+      value: 2
+    }
+    enumerator {
+      name: "PHY_UP"
+      value: 3
+    }
+    enumerator {
+      name: "PHY_RUNNING"
+      value: 4
+    }
+    enumerator {
+      name: "PHY_NOLINK"
+      value: 5
+    }
+    enumerator {
+      name: "PHY_CABLETEST"
+      value: 6
+    }
+  }
+}
+enumeration {
+  id: 0xb5e50d5b
+  name: "phylink_op_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "PHYLINK_NETDEV"
+    }
+    enumerator {
+      name: "PHYLINK_DEV"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0x94ed3026
+  name: "pid_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "PIDTYPE_PID"
+    }
+    enumerator {
+      name: "PIDTYPE_TGID"
+      value: 1
+    }
+    enumerator {
+      name: "PIDTYPE_PGID"
+      value: 2
+    }
+    enumerator {
+      name: "PIDTYPE_SID"
+      value: 3
+    }
+    enumerator {
+      name: "PIDTYPE_MAX"
+      value: 4
+    }
+  }
+}
+enumeration {
+  id: 0x81f43af3
+  name: "pin_config_param"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "PIN_CONFIG_BIAS_BUS_HOLD"
+    }
+    enumerator {
+      name: "PIN_CONFIG_BIAS_DISABLE"
+      value: 1
+    }
+    enumerator {
+      name: "PIN_CONFIG_BIAS_HIGH_IMPEDANCE"
+      value: 2
+    }
+    enumerator {
+      name: "PIN_CONFIG_BIAS_PULL_DOWN"
+      value: 3
+    }
+    enumerator {
+      name: "PIN_CONFIG_BIAS_PULL_PIN_DEFAULT"
+      value: 4
+    }
+    enumerator {
+      name: "PIN_CONFIG_BIAS_PULL_UP"
+      value: 5
+    }
+    enumerator {
+      name: "PIN_CONFIG_DRIVE_OPEN_DRAIN"
+      value: 6
+    }
+    enumerator {
+      name: "PIN_CONFIG_DRIVE_OPEN_SOURCE"
+      value: 7
+    }
+    enumerator {
+      name: "PIN_CONFIG_DRIVE_PUSH_PULL"
+      value: 8
+    }
+    enumerator {
+      name: "PIN_CONFIG_DRIVE_STRENGTH"
+      value: 9
+    }
+    enumerator {
+      name: "PIN_CONFIG_DRIVE_STRENGTH_UA"
+      value: 10
+    }
+    enumerator {
+      name: "PIN_CONFIG_INPUT_DEBOUNCE"
+      value: 11
+    }
+    enumerator {
+      name: "PIN_CONFIG_INPUT_ENABLE"
+      value: 12
+    }
+    enumerator {
+      name: "PIN_CONFIG_INPUT_SCHMITT"
+      value: 13
+    }
+    enumerator {
+      name: "PIN_CONFIG_INPUT_SCHMITT_ENABLE"
+      value: 14
+    }
+    enumerator {
+      name: "PIN_CONFIG_MODE_LOW_POWER"
+      value: 15
+    }
+    enumerator {
+      name: "PIN_CONFIG_MODE_PWM"
+      value: 16
+    }
+    enumerator {
+      name: "PIN_CONFIG_OUTPUT"
+      value: 17
+    }
+    enumerator {
+      name: "PIN_CONFIG_OUTPUT_ENABLE"
+      value: 18
+    }
+    enumerator {
+      name: "PIN_CONFIG_OUTPUT_IMPEDANCE_OHMS"
+      value: 19
+    }
+    enumerator {
+      name: "PIN_CONFIG_PERSIST_STATE"
+      value: 20
+    }
+    enumerator {
+      name: "PIN_CONFIG_POWER_SOURCE"
+      value: 21
+    }
+    enumerator {
+      name: "PIN_CONFIG_SKEW_DELAY"
+      value: 22
+    }
+    enumerator {
+      name: "PIN_CONFIG_SLEEP_HARDWARE_STATE"
+      value: 23
+    }
+    enumerator {
+      name: "PIN_CONFIG_SLEW_RATE"
+      value: 24
+    }
+    enumerator {
+      name: "PIN_CONFIG_END"
+      value: 127
+    }
+    enumerator {
+      name: "PIN_CONFIG_MAX"
+      value: 255
+    }
+  }
+}
+enumeration {
+  id: 0x29f042bf
+  name: "pinctrl_map_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "PIN_MAP_TYPE_INVALID"
+    }
+    enumerator {
+      name: "PIN_MAP_TYPE_DUMMY_STATE"
+      value: 1
+    }
+    enumerator {
+      name: "PIN_MAP_TYPE_MUX_GROUP"
+      value: 2
+    }
+    enumerator {
+      name: "PIN_MAP_TYPE_CONFIGS_PIN"
+      value: 3
+    }
+    enumerator {
+      name: "PIN_MAP_TYPE_CONFIGS_GROUP"
+      value: 4
+    }
+  }
+}
+enumeration {
+  id: 0x64f641d4
+  name: "pkvm_psci_notification"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "PKVM_PSCI_CPU_SUSPEND"
+    }
+    enumerator {
+      name: "PKVM_PSCI_SYSTEM_SUSPEND"
+      value: 1
+    }
+    enumerator {
+      name: "PKVM_PSCI_CPU_ENTRY"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x7dfcec97
+  name: "pm_qos_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "PM_QOS_UNITIALIZED"
+    }
+    enumerator {
+      name: "PM_QOS_MAX"
+      value: 1
+    }
+    enumerator {
+      name: "PM_QOS_MIN"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x09d25c5b
+  name: "power_supply_property"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "POWER_SUPPLY_PROP_STATUS"
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_CHARGE_TYPE"
+      value: 1
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_HEALTH"
+      value: 2
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_PRESENT"
+      value: 3
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_ONLINE"
+      value: 4
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_AUTHENTIC"
+      value: 5
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_TECHNOLOGY"
+      value: 6
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_CYCLE_COUNT"
+      value: 7
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_VOLTAGE_MAX"
+      value: 8
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_VOLTAGE_MIN"
+      value: 9
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN"
+      value: 10
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN"
+      value: 11
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_VOLTAGE_NOW"
+      value: 12
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_VOLTAGE_AVG"
+      value: 13
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_VOLTAGE_OCV"
+      value: 14
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_VOLTAGE_BOOT"
+      value: 15
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_CURRENT_MAX"
+      value: 16
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_CURRENT_NOW"
+      value: 17
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_CURRENT_AVG"
+      value: 18
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_CURRENT_BOOT"
+      value: 19
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_POWER_NOW"
+      value: 20
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_POWER_AVG"
+      value: 21
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN"
+      value: 22
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_CHARGE_EMPTY_DESIGN"
+      value: 23
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_CHARGE_FULL"
+      value: 24
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_CHARGE_EMPTY"
+      value: 25
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_CHARGE_NOW"
+      value: 26
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_CHARGE_AVG"
+      value: 27
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_CHARGE_COUNTER"
+      value: 28
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT"
+      value: 29
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT_MAX"
+      value: 30
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_CONSTANT_CHARGE_VOLTAGE"
+      value: 31
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_CONSTANT_CHARGE_VOLTAGE_MAX"
+      value: 32
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT"
+      value: 33
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT_MAX"
+      value: 34
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_CHARGE_CONTROL_START_THRESHOLD"
+      value: 35
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_CHARGE_CONTROL_END_THRESHOLD"
+      value: 36
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_CHARGE_BEHAVIOUR"
+      value: 37
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT"
+      value: 38
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_INPUT_VOLTAGE_LIMIT"
+      value: 39
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_INPUT_POWER_LIMIT"
+      value: 40
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_ENERGY_FULL_DESIGN"
+      value: 41
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_ENERGY_EMPTY_DESIGN"
+      value: 42
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_ENERGY_FULL"
+      value: 43
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_ENERGY_EMPTY"
+      value: 44
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_ENERGY_NOW"
+      value: 45
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_ENERGY_AVG"
+      value: 46
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_CAPACITY"
+      value: 47
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_CAPACITY_ALERT_MIN"
+      value: 48
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_CAPACITY_ALERT_MAX"
+      value: 49
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_CAPACITY_ERROR_MARGIN"
+      value: 50
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_CAPACITY_LEVEL"
+      value: 51
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_TEMP"
+      value: 52
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_TEMP_MAX"
+      value: 53
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_TEMP_MIN"
+      value: 54
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_TEMP_ALERT_MIN"
+      value: 55
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_TEMP_ALERT_MAX"
+      value: 56
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_TEMP_AMBIENT"
+      value: 57
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_TEMP_AMBIENT_ALERT_MIN"
+      value: 58
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_TEMP_AMBIENT_ALERT_MAX"
+      value: 59
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_TIME_TO_EMPTY_NOW"
+      value: 60
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_TIME_TO_EMPTY_AVG"
+      value: 61
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_TIME_TO_FULL_NOW"
+      value: 62
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_TIME_TO_FULL_AVG"
+      value: 63
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_TYPE"
+      value: 64
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_USB_TYPE"
+      value: 65
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_SCOPE"
+      value: 66
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_PRECHARGE_CURRENT"
+      value: 67
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_CHARGE_TERM_CURRENT"
+      value: 68
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_CALIBRATE"
+      value: 69
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_MANUFACTURE_YEAR"
+      value: 70
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_MANUFACTURE_MONTH"
+      value: 71
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_MANUFACTURE_DAY"
+      value: 72
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_MODEL_NAME"
+      value: 73
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_MANUFACTURER"
+      value: 74
+    }
+    enumerator {
+      name: "POWER_SUPPLY_PROP_SERIAL_NUMBER"
+      value: 75
+    }
+  }
+}
+enumeration {
+  id: 0x9c9aa5e3
+  name: "power_supply_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "POWER_SUPPLY_TYPE_UNKNOWN"
+    }
+    enumerator {
+      name: "POWER_SUPPLY_TYPE_BATTERY"
+      value: 1
+    }
+    enumerator {
+      name: "POWER_SUPPLY_TYPE_UPS"
+      value: 2
+    }
+    enumerator {
+      name: "POWER_SUPPLY_TYPE_MAINS"
+      value: 3
+    }
+    enumerator {
+      name: "POWER_SUPPLY_TYPE_USB"
+      value: 4
+    }
+    enumerator {
+      name: "POWER_SUPPLY_TYPE_USB_DCP"
+      value: 5
+    }
+    enumerator {
+      name: "POWER_SUPPLY_TYPE_USB_CDP"
+      value: 6
+    }
+    enumerator {
+      name: "POWER_SUPPLY_TYPE_USB_ACA"
+      value: 7
+    }
+    enumerator {
+      name: "POWER_SUPPLY_TYPE_USB_TYPE_C"
+      value: 8
+    }
+    enumerator {
+      name: "POWER_SUPPLY_TYPE_USB_PD"
+      value: 9
+    }
+    enumerator {
+      name: "POWER_SUPPLY_TYPE_USB_PD_DRP"
+      value: 10
+    }
+    enumerator {
+      name: "POWER_SUPPLY_TYPE_APPLE_BRICK_ID"
+      value: 11
+    }
+    enumerator {
+      name: "POWER_SUPPLY_TYPE_WIRELESS"
+      value: 12
+    }
+  }
+}
+enumeration {
+  id: 0xed696ae5
+  name: "power_supply_usb_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "POWER_SUPPLY_USB_TYPE_UNKNOWN"
+    }
+    enumerator {
+      name: "POWER_SUPPLY_USB_TYPE_SDP"
+      value: 1
+    }
+    enumerator {
+      name: "POWER_SUPPLY_USB_TYPE_DCP"
+      value: 2
+    }
+    enumerator {
+      name: "POWER_SUPPLY_USB_TYPE_CDP"
+      value: 3
+    }
+    enumerator {
+      name: "POWER_SUPPLY_USB_TYPE_ACA"
+      value: 4
+    }
+    enumerator {
+      name: "POWER_SUPPLY_USB_TYPE_C"
+      value: 5
+    }
+    enumerator {
+      name: "POWER_SUPPLY_USB_TYPE_PD"
+      value: 6
+    }
+    enumerator {
+      name: "POWER_SUPPLY_USB_TYPE_PD_DRP"
+      value: 7
+    }
+    enumerator {
+      name: "POWER_SUPPLY_USB_TYPE_PD_PPS"
+      value: 8
+    }
+    enumerator {
+      name: "POWER_SUPPLY_USB_TYPE_APPLE_BRICK_ID"
+      value: 9
+    }
+  }
+}
+enumeration {
+  id: 0xabd4afbf
+  name: "pr_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "PR_WRITE_EXCLUSIVE"
+      value: 1
+    }
+    enumerator {
+      name: "PR_EXCLUSIVE_ACCESS"
+      value: 2
+    }
+    enumerator {
+      name: "PR_WRITE_EXCLUSIVE_REG_ONLY"
+      value: 3
+    }
+    enumerator {
+      name: "PR_EXCLUSIVE_ACCESS_REG_ONLY"
+      value: 4
+    }
+    enumerator {
+      name: "PR_WRITE_EXCLUSIVE_ALL_REGS"
+      value: 5
+    }
+    enumerator {
+      name: "PR_EXCLUSIVE_ACCESS_ALL_REGS"
+      value: 6
+    }
+  }
+}
+enumeration {
+  id: 0x150d4db0
+  name: "print_line_t"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "TRACE_TYPE_PARTIAL_LINE"
+    }
+    enumerator {
+      name: "TRACE_TYPE_HANDLED"
+      value: 1
+    }
+    enumerator {
+      name: "TRACE_TYPE_UNHANDLED"
+      value: 2
+    }
+    enumerator {
+      name: "TRACE_TYPE_NO_CONSUME"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x189d62e7
+  name: "probe_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "PROBE_DEFAULT_STRATEGY"
+    }
+    enumerator {
+      name: "PROBE_PREFER_ASYNCHRONOUS"
+      value: 1
+    }
+    enumerator {
+      name: "PROBE_FORCE_SYNCHRONOUS"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x504235bb
+  name: "psi_states"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "PSI_IO_SOME"
+    }
+    enumerator {
+      name: "PSI_IO_FULL"
+      value: 1
+    }
+    enumerator {
+      name: "PSI_MEM_SOME"
+      value: 2
+    }
+    enumerator {
+      name: "PSI_MEM_FULL"
+      value: 3
+    }
+    enumerator {
+      name: "PSI_CPU_SOME"
+      value: 4
+    }
+    enumerator {
+      name: "PSI_CPU_FULL"
+      value: 5
+    }
+    enumerator {
+      name: "PSI_IRQ_FULL"
+      value: 6
+    }
+    enumerator {
+      name: "PSI_NONIDLE"
+      value: 7
+    }
+    enumerator {
+      name: "NR_PSI_STATES"
+      value: 8
+    }
+  }
+}
+enumeration {
+  id: 0x4296745b
+  name: "pstore_type_id"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "PSTORE_TYPE_DMESG"
+    }
+    enumerator {
+      name: "PSTORE_TYPE_MCE"
+      value: 1
+    }
+    enumerator {
+      name: "PSTORE_TYPE_CONSOLE"
+      value: 2
+    }
+    enumerator {
+      name: "PSTORE_TYPE_FTRACE"
+      value: 3
+    }
+    enumerator {
+      name: "PSTORE_TYPE_PPC_RTAS"
+      value: 4
+    }
+    enumerator {
+      name: "PSTORE_TYPE_PPC_OF"
+      value: 5
+    }
+    enumerator {
+      name: "PSTORE_TYPE_PPC_COMMON"
+      value: 6
+    }
+    enumerator {
+      name: "PSTORE_TYPE_PMSG"
+      value: 7
+    }
+    enumerator {
+      name: "PSTORE_TYPE_PPC_OPAL"
+      value: 8
+    }
+    enumerator {
+      name: "PSTORE_TYPE_MAX"
+      value: 9
+    }
+  }
+}
+enumeration {
+  id: 0x39d36c32
+  name: "ptp_pin_function"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "PTP_PF_NONE"
+    }
+    enumerator {
+      name: "PTP_PF_EXTTS"
+      value: 1
+    }
+    enumerator {
+      name: "PTP_PF_PEROUT"
+      value: 2
+    }
+    enumerator {
+      name: "PTP_PF_PHYSYNC"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x8bd97c19
+  name: "pwm_polarity"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "PWM_POLARITY_NORMAL"
+    }
+    enumerator {
+      name: "PWM_POLARITY_INVERSED"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0xf637017b
+  name: "qca_btsoc_type"
+  definition {
+    underlying_type_id: 0x6720d32f
+    enumerator {
+      name: "QCA_INVALID"
+      value: -1
+    }
+    enumerator {
+      name: "QCA_AR3002"
+    }
+    enumerator {
+      name: "QCA_ROME"
+      value: 1
+    }
+    enumerator {
+      name: "QCA_WCN3990"
+      value: 2
+    }
+    enumerator {
+      name: "QCA_WCN3998"
+      value: 3
+    }
+    enumerator {
+      name: "QCA_WCN3991"
+      value: 4
+    }
+    enumerator {
+      name: "QCA_QCA6390"
+      value: 5
+    }
+    enumerator {
+      name: "QCA_WCN6750"
+      value: 6
+    }
+  }
+}
+enumeration {
+  id: 0x391e34eb
+  name: "query_opcode"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "UPIU_QUERY_OPCODE_NOP"
+    }
+    enumerator {
+      name: "UPIU_QUERY_OPCODE_READ_DESC"
+      value: 1
+    }
+    enumerator {
+      name: "UPIU_QUERY_OPCODE_WRITE_DESC"
+      value: 2
+    }
+    enumerator {
+      name: "UPIU_QUERY_OPCODE_READ_ATTR"
+      value: 3
+    }
+    enumerator {
+      name: "UPIU_QUERY_OPCODE_WRITE_ATTR"
+      value: 4
+    }
+    enumerator {
+      name: "UPIU_QUERY_OPCODE_READ_FLAG"
+      value: 5
+    }
+    enumerator {
+      name: "UPIU_QUERY_OPCODE_SET_FLAG"
+      value: 6
+    }
+    enumerator {
+      name: "UPIU_QUERY_OPCODE_CLEAR_FLAG"
+      value: 7
+    }
+    enumerator {
+      name: "UPIU_QUERY_OPCODE_TOGGLE_FLAG"
+      value: 8
+    }
+  }
+}
+enumeration {
+  id: 0xfdb649ac
+  name: "quota_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "USRQUOTA"
+    }
+    enumerator {
+      name: "GRPQUOTA"
+      value: 1
+    }
+    enumerator {
+      name: "PRJQUOTA"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x60f31502
+  name: "rc_driver_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "RC_DRIVER_SCANCODE"
+    }
+    enumerator {
+      name: "RC_DRIVER_IR_RAW"
+      value: 1
+    }
+    enumerator {
+      name: "RC_DRIVER_IR_RAW_TX"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x52a8f1d9
+  name: "rc_proto"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "RC_PROTO_UNKNOWN"
+    }
+    enumerator {
+      name: "RC_PROTO_OTHER"
+      value: 1
+    }
+    enumerator {
+      name: "RC_PROTO_RC5"
+      value: 2
+    }
+    enumerator {
+      name: "RC_PROTO_RC5X_20"
+      value: 3
+    }
+    enumerator {
+      name: "RC_PROTO_RC5_SZ"
+      value: 4
+    }
+    enumerator {
+      name: "RC_PROTO_JVC"
+      value: 5
+    }
+    enumerator {
+      name: "RC_PROTO_SONY12"
+      value: 6
+    }
+    enumerator {
+      name: "RC_PROTO_SONY15"
+      value: 7
+    }
+    enumerator {
+      name: "RC_PROTO_SONY20"
+      value: 8
+    }
+    enumerator {
+      name: "RC_PROTO_NEC"
+      value: 9
+    }
+    enumerator {
+      name: "RC_PROTO_NECX"
+      value: 10
+    }
+    enumerator {
+      name: "RC_PROTO_NEC32"
+      value: 11
+    }
+    enumerator {
+      name: "RC_PROTO_SANYO"
+      value: 12
+    }
+    enumerator {
+      name: "RC_PROTO_MCIR2_KBD"
+      value: 13
+    }
+    enumerator {
+      name: "RC_PROTO_MCIR2_MSE"
+      value: 14
+    }
+    enumerator {
+      name: "RC_PROTO_RC6_0"
+      value: 15
+    }
+    enumerator {
+      name: "RC_PROTO_RC6_6A_20"
+      value: 16
+    }
+    enumerator {
+      name: "RC_PROTO_RC6_6A_24"
+      value: 17
+    }
+    enumerator {
+      name: "RC_PROTO_RC6_6A_32"
+      value: 18
+    }
+    enumerator {
+      name: "RC_PROTO_RC6_MCE"
+      value: 19
+    }
+    enumerator {
+      name: "RC_PROTO_SHARP"
+      value: 20
+    }
+    enumerator {
+      name: "RC_PROTO_XMP"
+      value: 21
+    }
+    enumerator {
+      name: "RC_PROTO_CEC"
+      value: 22
+    }
+    enumerator {
+      name: "RC_PROTO_IMON"
+      value: 23
+    }
+    enumerator {
+      name: "RC_PROTO_RCMM12"
+      value: 24
+    }
+    enumerator {
+      name: "RC_PROTO_RCMM24"
+      value: 25
+    }
+    enumerator {
+      name: "RC_PROTO_RCMM32"
+      value: 26
+    }
+    enumerator {
+      name: "RC_PROTO_XBOX_DVD"
+      value: 27
+    }
+    enumerator {
+      name: "RC_PROTO_MAX"
+      value: 27
+    }
+  }
+}
+enumeration {
+  id: 0xe08ff84f
+  name: "rcutorture_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "RCU_FLAVOR"
+    }
+    enumerator {
+      name: "RCU_TASKS_FLAVOR"
+      value: 1
+    }
+    enumerator {
+      name: "RCU_TASKS_RUDE_FLAVOR"
+      value: 2
+    }
+    enumerator {
+      name: "RCU_TASKS_TRACING_FLAVOR"
+      value: 3
+    }
+    enumerator {
+      name: "RCU_TRIVIAL_FLAVOR"
+      value: 4
+    }
+    enumerator {
+      name: "SRCU_FLAVOR"
+      value: 5
+    }
+    enumerator {
+      name: "INVALID_RCU_FLAVOR"
+      value: 6
+    }
+  }
+}
+enumeration {
+  id: 0x0c05cc79
+  name: "reboot_mode"
+  definition {
+    underlying_type_id: 0x6720d32f
+    enumerator {
+      name: "REBOOT_UNDEFINED"
+      value: -1
+    }
+    enumerator {
+      name: "REBOOT_COLD"
+    }
+    enumerator {
+      name: "REBOOT_WARM"
+      value: 1
+    }
+    enumerator {
+      name: "REBOOT_HARD"
+      value: 2
+    }
+    enumerator {
+      name: "REBOOT_SOFT"
+      value: 3
+    }
+    enumerator {
+      name: "REBOOT_GPIO"
+      value: 4
+    }
+  }
+}
+enumeration {
+  id: 0x378e8064
+  name: "refcount_saturation_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "REFCOUNT_ADD_NOT_ZERO_OVF"
+    }
+    enumerator {
+      name: "REFCOUNT_ADD_OVF"
+      value: 1
+    }
+    enumerator {
+      name: "REFCOUNT_ADD_UAF"
+      value: 2
+    }
+    enumerator {
+      name: "REFCOUNT_SUB_UAF"
+      value: 3
+    }
+    enumerator {
+      name: "REFCOUNT_DEC_LEAK"
+      value: 4
+    }
+  }
+}
+enumeration {
+  id: 0x605bb988
+  name: "regcache_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "REGCACHE_NONE"
+    }
+    enumerator {
+      name: "REGCACHE_RBTREE"
+      value: 1
+    }
+    enumerator {
+      name: "REGCACHE_COMPRESSED"
+      value: 2
+    }
+    enumerator {
+      name: "REGCACHE_FLAT"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0xbbd6353d
+  name: "regmap_endian"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "REGMAP_ENDIAN_DEFAULT"
+    }
+    enumerator {
+      name: "REGMAP_ENDIAN_BIG"
+      value: 1
+    }
+    enumerator {
+      name: "REGMAP_ENDIAN_LITTLE"
+      value: 2
+    }
+    enumerator {
+      name: "REGMAP_ENDIAN_NATIVE"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x22417e55
+  name: "regulator_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "REGULATOR_VOLTAGE"
+    }
+    enumerator {
+      name: "REGULATOR_CURRENT"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0x8bbf7ced
+  name: "req_op"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "REQ_OP_READ"
+    }
+    enumerator {
+      name: "REQ_OP_WRITE"
+      value: 1
+    }
+    enumerator {
+      name: "REQ_OP_FLUSH"
+      value: 2
+    }
+    enumerator {
+      name: "REQ_OP_DISCARD"
+      value: 3
+    }
+    enumerator {
+      name: "REQ_OP_SECURE_ERASE"
+      value: 5
+    }
+    enumerator {
+      name: "REQ_OP_WRITE_ZEROES"
+      value: 9
+    }
+    enumerator {
+      name: "REQ_OP_ZONE_OPEN"
+      value: 10
+    }
+    enumerator {
+      name: "REQ_OP_ZONE_CLOSE"
+      value: 11
+    }
+    enumerator {
+      name: "REQ_OP_ZONE_FINISH"
+      value: 12
+    }
+    enumerator {
+      name: "REQ_OP_ZONE_APPEND"
+      value: 13
+    }
+    enumerator {
+      name: "REQ_OP_ZONE_RESET"
+      value: 15
+    }
+    enumerator {
+      name: "REQ_OP_ZONE_RESET_ALL"
+      value: 17
+    }
+    enumerator {
+      name: "REQ_OP_DRV_IN"
+      value: 34
+    }
+    enumerator {
+      name: "REQ_OP_DRV_OUT"
+      value: 35
+    }
+    enumerator {
+      name: "REQ_OP_LAST"
+      value: 36
+    }
+  }
+}
+enumeration {
+  id: 0x17244d16
+  name: "rfkill_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "RFKILL_TYPE_ALL"
+    }
+    enumerator {
+      name: "RFKILL_TYPE_WLAN"
+      value: 1
+    }
+    enumerator {
+      name: "RFKILL_TYPE_BLUETOOTH"
+      value: 2
+    }
+    enumerator {
+      name: "RFKILL_TYPE_UWB"
+      value: 3
+    }
+    enumerator {
+      name: "RFKILL_TYPE_WIMAX"
+      value: 4
+    }
+    enumerator {
+      name: "RFKILL_TYPE_WWAN"
+      value: 5
+    }
+    enumerator {
+      name: "RFKILL_TYPE_GPS"
+      value: 6
+    }
+    enumerator {
+      name: "RFKILL_TYPE_FM"
+      value: 7
+    }
+    enumerator {
+      name: "RFKILL_TYPE_NFC"
+      value: 8
+    }
+    enumerator {
+      name: "NUM_RFKILL_TYPES"
+      value: 9
+    }
+  }
+}
+enumeration {
+  id: 0x6d48520c
+  name: "rpm_request"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "RPM_REQ_NONE"
+    }
+    enumerator {
+      name: "RPM_REQ_IDLE"
+      value: 1
+    }
+    enumerator {
+      name: "RPM_REQ_SUSPEND"
+      value: 2
+    }
+    enumerator {
+      name: "RPM_REQ_AUTOSUSPEND"
+      value: 3
+    }
+    enumerator {
+      name: "RPM_REQ_RESUME"
+      value: 4
+    }
+  }
+}
+enumeration {
+  id: 0x495d0861
+  name: "rpm_status"
+  definition {
+    underlying_type_id: 0x6720d32f
+    enumerator {
+      name: "RPM_INVALID"
+      value: -1
+    }
+    enumerator {
+      name: "RPM_ACTIVE"
+    }
+    enumerator {
+      name: "RPM_RESUMING"
+      value: 1
+    }
+    enumerator {
+      name: "RPM_SUSPENDED"
+      value: 2
+    }
+    enumerator {
+      name: "RPM_SUSPENDING"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0xe56c2486
+  name: "rproc_crash_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "RPROC_MMUFAULT"
+    }
+    enumerator {
+      name: "RPROC_WATCHDOG"
+      value: 1
+    }
+    enumerator {
+      name: "RPROC_FATAL_ERROR"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x425c572c
+  name: "rproc_dump_mechanism"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "RPROC_COREDUMP_DISABLED"
+    }
+    enumerator {
+      name: "RPROC_COREDUMP_ENABLED"
+      value: 1
+    }
+    enumerator {
+      name: "RPROC_COREDUMP_INLINE"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x8dcb945d
+  name: "rq_end_io_ret"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "RQ_END_IO_NONE"
+    }
+    enumerator {
+      name: "RQ_END_IO_FREE"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0xd0d29caf
+  name: "rq_qos_id"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "RQ_QOS_WBT"
+    }
+    enumerator {
+      name: "RQ_QOS_LATENCY"
+      value: 1
+    }
+    enumerator {
+      name: "RQ_QOS_COST"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0xc6094b6c
+  name: "rwsem_waiter_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "RWSEM_WAITING_FOR_WRITE"
+    }
+    enumerator {
+      name: "RWSEM_WAITING_FOR_READ"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0x62deda67
+  name: "rx_handler_result"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "RX_HANDLER_CONSUMED"
+    }
+    enumerator {
+      name: "RX_HANDLER_ANOTHER"
+      value: 1
+    }
+    enumerator {
+      name: "RX_HANDLER_EXACT"
+      value: 2
+    }
+    enumerator {
+      name: "RX_HANDLER_PASS"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0xe1883390
+  name: "scale_freq_source"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "SCALE_FREQ_SOURCE_CPUFREQ"
+    }
+    enumerator {
+      name: "SCALE_FREQ_SOURCE_ARCH"
+      value: 1
+    }
+    enumerator {
+      name: "SCALE_FREQ_SOURCE_CPPC"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0xbcb85241
+  name: "scsi_cmnd_submitter"
+  definition {
+    underlying_type_id: 0x5d8155a5
+    enumerator {
+      name: "SUBMITTED_BY_BLOCK_LAYER"
+    }
+    enumerator {
+      name: "SUBMITTED_BY_SCSI_ERROR_HANDLER"
+      value: 1
+    }
+    enumerator {
+      name: "SUBMITTED_BY_SCSI_RESET_IOCTL"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0xdf9e95f6
+  name: "scsi_device_state"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "SDEV_CREATED"
+      value: 1
+    }
+    enumerator {
+      name: "SDEV_RUNNING"
+      value: 2
+    }
+    enumerator {
+      name: "SDEV_CANCEL"
+      value: 3
+    }
+    enumerator {
+      name: "SDEV_DEL"
+      value: 4
+    }
+    enumerator {
+      name: "SDEV_QUIESCE"
+      value: 5
+    }
+    enumerator {
+      name: "SDEV_OFFLINE"
+      value: 6
+    }
+    enumerator {
+      name: "SDEV_TRANSPORT_OFFLINE"
+      value: 7
+    }
+    enumerator {
+      name: "SDEV_BLOCK"
+      value: 8
+    }
+    enumerator {
+      name: "SDEV_CREATED_BLOCK"
+      value: 9
+    }
+  }
+}
+enumeration {
+  id: 0x34cf6c51
+  name: "scsi_disposition"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "NEEDS_RETRY"
+      value: 8193
+    }
+    enumerator {
+      name: "SUCCESS"
+      value: 8194
+    }
+    enumerator {
+      name: "FAILED"
+      value: 8195
+    }
+    enumerator {
+      name: "QUEUED"
+      value: 8196
+    }
+    enumerator {
+      name: "SOFT_ERROR"
+      value: 8197
+    }
+    enumerator {
+      name: "ADD_TO_MLQUEUE"
+      value: 8198
+    }
+    enumerator {
+      name: "TIMEOUT_ERROR"
+      value: 8199
+    }
+    enumerator {
+      name: "SCSI_RETURN_NOT_HANDLED"
+      value: 8200
+    }
+    enumerator {
+      name: "FAST_IO_FAIL"
+      value: 8201
+    }
+  }
+}
+enumeration {
+  id: 0x31660354
+  name: "scsi_host_state"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "SHOST_CREATED"
+      value: 1
+    }
+    enumerator {
+      name: "SHOST_RUNNING"
+      value: 2
+    }
+    enumerator {
+      name: "SHOST_CANCEL"
+      value: 3
+    }
+    enumerator {
+      name: "SHOST_DEL"
+      value: 4
+    }
+    enumerator {
+      name: "SHOST_RECOVERY"
+      value: 5
+    }
+    enumerator {
+      name: "SHOST_CANCEL_RECOVERY"
+      value: 6
+    }
+    enumerator {
+      name: "SHOST_DEL_RECOVERY"
+      value: 7
+    }
+  }
+}
+enumeration {
+  id: 0x1811bd1d
+  name: "scsi_target_state"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "STARGET_CREATED"
+      value: 1
+    }
+    enumerator {
+      name: "STARGET_RUNNING"
+      value: 2
+    }
+    enumerator {
+      name: "STARGET_REMOVE"
+      value: 3
+    }
+    enumerator {
+      name: "STARGET_CREATED_REMOVE"
+      value: 4
+    }
+    enumerator {
+      name: "STARGET_DEL"
+      value: 5
+    }
+  }
+}
+enumeration {
+  id: 0xf7c9d4fd
+  name: "scsi_timeout_action"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "SCSI_EH_DONE"
+    }
+    enumerator {
+      name: "SCSI_EH_RESET_TIMER"
+      value: 1
+    }
+    enumerator {
+      name: "SCSI_EH_NOT_HANDLED"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x925b8701
+  name: "sctp_conntrack"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "SCTP_CONNTRACK_NONE"
+    }
+    enumerator {
+      name: "SCTP_CONNTRACK_CLOSED"
+      value: 1
+    }
+    enumerator {
+      name: "SCTP_CONNTRACK_COOKIE_WAIT"
+      value: 2
+    }
+    enumerator {
+      name: "SCTP_CONNTRACK_COOKIE_ECHOED"
+      value: 3
+    }
+    enumerator {
+      name: "SCTP_CONNTRACK_ESTABLISHED"
+      value: 4
+    }
+    enumerator {
+      name: "SCTP_CONNTRACK_SHUTDOWN_SENT"
+      value: 5
+    }
+    enumerator {
+      name: "SCTP_CONNTRACK_SHUTDOWN_RECD"
+      value: 6
+    }
+    enumerator {
+      name: "SCTP_CONNTRACK_SHUTDOWN_ACK_SENT"
+      value: 7
+    }
+    enumerator {
+      name: "SCTP_CONNTRACK_HEARTBEAT_SENT"
+      value: 8
+    }
+    enumerator {
+      name: "SCTP_CONNTRACK_HEARTBEAT_ACKED"
+      value: 9
+    }
+    enumerator {
+      name: "SCTP_CONNTRACK_MAX"
+      value: 10
+    }
+  }
+}
+enumeration {
+  id: 0xd25db1d3
+  name: "serdev_parity"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "SERDEV_PARITY_NONE"
+    }
+    enumerator {
+      name: "SERDEV_PARITY_EVEN"
+      value: 1
+    }
+    enumerator {
+      name: "SERDEV_PARITY_ODD"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x189b551a
+  name: "skb_drop_reason"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "SKB_NOT_DROPPED_YET"
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_NOT_SPECIFIED"
+      value: 1
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_NO_SOCKET"
+      value: 2
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_PKT_TOO_SMALL"
+      value: 3
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_TCP_CSUM"
+      value: 4
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_SOCKET_FILTER"
+      value: 5
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_UDP_CSUM"
+      value: 6
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_NETFILTER_DROP"
+      value: 7
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_OTHERHOST"
+      value: 8
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_IP_CSUM"
+      value: 9
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_IP_INHDR"
+      value: 10
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_IP_RPFILTER"
+      value: 11
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_UNICAST_IN_L2_MULTICAST"
+      value: 12
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_XFRM_POLICY"
+      value: 13
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_IP_NOPROTO"
+      value: 14
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_SOCKET_RCVBUFF"
+      value: 15
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_PROTO_MEM"
+      value: 16
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_TCP_MD5NOTFOUND"
+      value: 17
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_TCP_MD5UNEXPECTED"
+      value: 18
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_TCP_MD5FAILURE"
+      value: 19
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_SOCKET_BACKLOG"
+      value: 20
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_TCP_FLAGS"
+      value: 21
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_TCP_ZEROWINDOW"
+      value: 22
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_TCP_OLD_DATA"
+      value: 23
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_TCP_OVERWINDOW"
+      value: 24
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_TCP_OFOMERGE"
+      value: 25
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_TCP_RFC7323_PAWS"
+      value: 26
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_TCP_INVALID_SEQUENCE"
+      value: 27
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_TCP_RESET"
+      value: 28
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_TCP_INVALID_SYN"
+      value: 29
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_TCP_CLOSE"
+      value: 30
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_TCP_FASTOPEN"
+      value: 31
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_TCP_OLD_ACK"
+      value: 32
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_TCP_TOO_OLD_ACK"
+      value: 33
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_TCP_ACK_UNSENT_DATA"
+      value: 34
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_TCP_OFO_QUEUE_PRUNE"
+      value: 35
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_TCP_OFO_DROP"
+      value: 36
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_IP_OUTNOROUTES"
+      value: 37
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_BPF_CGROUP_EGRESS"
+      value: 38
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_IPV6DISABLED"
+      value: 39
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_NEIGH_CREATEFAIL"
+      value: 40
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_NEIGH_FAILED"
+      value: 41
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_NEIGH_QUEUEFULL"
+      value: 42
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_NEIGH_DEAD"
+      value: 43
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_TC_EGRESS"
+      value: 44
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_QDISC_DROP"
+      value: 45
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_CPU_BACKLOG"
+      value: 46
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_XDP"
+      value: 47
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_TC_INGRESS"
+      value: 48
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_UNHANDLED_PROTO"
+      value: 49
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_SKB_CSUM"
+      value: 50
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_SKB_GSO_SEG"
+      value: 51
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_SKB_UCOPY_FAULT"
+      value: 52
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_DEV_HDR"
+      value: 53
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_DEV_READY"
+      value: 54
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_FULL_RING"
+      value: 55
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_NOMEM"
+      value: 56
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_HDR_TRUNC"
+      value: 57
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_TAP_FILTER"
+      value: 58
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_TAP_TXFILTER"
+      value: 59
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_ICMP_CSUM"
+      value: 60
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_INVALID_PROTO"
+      value: 61
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_IP_INADDRERRORS"
+      value: 62
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_IP_INNOROUTES"
+      value: 63
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_PKT_TOO_BIG"
+      value: 64
+    }
+    enumerator {
+      name: "SKB_DROP_REASON_MAX"
+      value: 65
+    }
+  }
+}
+enumeration {
+  id: 0x78d4fef9
+  name: "skb_free_reason"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "SKB_REASON_CONSUMED"
+    }
+    enumerator {
+      name: "SKB_REASON_DROPPED"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0x5eda7065
+  name: "snd_compr_direction"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "SND_COMPRESS_PLAYBACK"
+    }
+    enumerator {
+      name: "SND_COMPRESS_CAPTURE"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0xf641dd8a
+  name: "snd_dma_sync_mode"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "SNDRV_DMA_SYNC_CPU"
+    }
+    enumerator {
+      name: "SNDRV_DMA_SYNC_DEVICE"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0x452ab998
+  name: "snd_jack_types"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "SND_JACK_HEADPHONE"
+      value: 1
+    }
+    enumerator {
+      name: "SND_JACK_MICROPHONE"
+      value: 2
+    }
+    enumerator {
+      name: "SND_JACK_HEADSET"
+      value: 3
+    }
+    enumerator {
+      name: "SND_JACK_LINEOUT"
+      value: 4
+    }
+    enumerator {
+      name: "SND_JACK_MECHANICAL"
+      value: 8
+    }
+    enumerator {
+      name: "SND_JACK_VIDEOOUT"
+      value: 16
+    }
+    enumerator {
+      name: "SND_JACK_AVOUT"
+      value: 20
+    }
+    enumerator {
+      name: "SND_JACK_LINEIN"
+      value: 32
+    }
+    enumerator {
+      name: "SND_JACK_BTN_0"
+      value: 16384
+    }
+    enumerator {
+      name: "SND_JACK_BTN_1"
+      value: 8192
+    }
+    enumerator {
+      name: "SND_JACK_BTN_2"
+      value: 4096
+    }
+    enumerator {
+      name: "SND_JACK_BTN_3"
+      value: 2048
+    }
+    enumerator {
+      name: "SND_JACK_BTN_4"
+      value: 1024
+    }
+    enumerator {
+      name: "SND_JACK_BTN_5"
+      value: 512
+    }
+  }
+}
+enumeration {
+  id: 0x66f6fc33
+  name: "snd_soc_bias_level"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "SND_SOC_BIAS_OFF"
+    }
+    enumerator {
+      name: "SND_SOC_BIAS_STANDBY"
+      value: 1
+    }
+    enumerator {
+      name: "SND_SOC_BIAS_PREPARE"
+      value: 2
+    }
+    enumerator {
+      name: "SND_SOC_BIAS_ON"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x50fa3148
+  name: "snd_soc_dapm_direction"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "SND_SOC_DAPM_DIR_IN"
+    }
+    enumerator {
+      name: "SND_SOC_DAPM_DIR_OUT"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0xa9183061
+  name: "snd_soc_dapm_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "snd_soc_dapm_input"
+    }
+    enumerator {
+      name: "snd_soc_dapm_output"
+      value: 1
+    }
+    enumerator {
+      name: "snd_soc_dapm_mux"
+      value: 2
+    }
+    enumerator {
+      name: "snd_soc_dapm_demux"
+      value: 3
+    }
+    enumerator {
+      name: "snd_soc_dapm_mixer"
+      value: 4
+    }
+    enumerator {
+      name: "snd_soc_dapm_mixer_named_ctl"
+      value: 5
+    }
+    enumerator {
+      name: "snd_soc_dapm_pga"
+      value: 6
+    }
+    enumerator {
+      name: "snd_soc_dapm_out_drv"
+      value: 7
+    }
+    enumerator {
+      name: "snd_soc_dapm_adc"
+      value: 8
+    }
+    enumerator {
+      name: "snd_soc_dapm_dac"
+      value: 9
+    }
+    enumerator {
+      name: "snd_soc_dapm_micbias"
+      value: 10
+    }
+    enumerator {
+      name: "snd_soc_dapm_mic"
+      value: 11
+    }
+    enumerator {
+      name: "snd_soc_dapm_hp"
+      value: 12
+    }
+    enumerator {
+      name: "snd_soc_dapm_spk"
+      value: 13
+    }
+    enumerator {
+      name: "snd_soc_dapm_line"
+      value: 14
+    }
+    enumerator {
+      name: "snd_soc_dapm_switch"
+      value: 15
+    }
+    enumerator {
+      name: "snd_soc_dapm_vmid"
+      value: 16
+    }
+    enumerator {
+      name: "snd_soc_dapm_pre"
+      value: 17
+    }
+    enumerator {
+      name: "snd_soc_dapm_post"
+      value: 18
+    }
+    enumerator {
+      name: "snd_soc_dapm_supply"
+      value: 19
+    }
+    enumerator {
+      name: "snd_soc_dapm_pinctrl"
+      value: 20
+    }
+    enumerator {
+      name: "snd_soc_dapm_regulator_supply"
+      value: 21
+    }
+    enumerator {
+      name: "snd_soc_dapm_clock_supply"
+      value: 22
+    }
+    enumerator {
+      name: "snd_soc_dapm_aif_in"
+      value: 23
+    }
+    enumerator {
+      name: "snd_soc_dapm_aif_out"
+      value: 24
+    }
+    enumerator {
+      name: "snd_soc_dapm_siggen"
+      value: 25
+    }
+    enumerator {
+      name: "snd_soc_dapm_sink"
+      value: 26
+    }
+    enumerator {
+      name: "snd_soc_dapm_dai_in"
+      value: 27
+    }
+    enumerator {
+      name: "snd_soc_dapm_dai_out"
+      value: 28
+    }
+    enumerator {
+      name: "snd_soc_dapm_dai_link"
+      value: 29
+    }
+    enumerator {
+      name: "snd_soc_dapm_kcontrol"
+      value: 30
+    }
+    enumerator {
+      name: "snd_soc_dapm_buffer"
+      value: 31
+    }
+    enumerator {
+      name: "snd_soc_dapm_scheduler"
+      value: 32
+    }
+    enumerator {
+      name: "snd_soc_dapm_effect"
+      value: 33
+    }
+    enumerator {
+      name: "snd_soc_dapm_src"
+      value: 34
+    }
+    enumerator {
+      name: "snd_soc_dapm_asrc"
+      value: 35
+    }
+    enumerator {
+      name: "snd_soc_dapm_encoder"
+      value: 36
+    }
+    enumerator {
+      name: "snd_soc_dapm_decoder"
+      value: 37
+    }
+    enumerator {
+      name: "SND_SOC_DAPM_TYPE_COUNT"
+      value: 38
+    }
+  }
+}
+enumeration {
+  id: 0xb3764c4a
+  name: "snd_soc_dobj_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "SND_SOC_DOBJ_NONE"
+    }
+    enumerator {
+      name: "SND_SOC_DOBJ_MIXER"
+      value: 1
+    }
+    enumerator {
+      name: "SND_SOC_DOBJ_BYTES"
+      value: 2
+    }
+    enumerator {
+      name: "SND_SOC_DOBJ_ENUM"
+      value: 3
+    }
+    enumerator {
+      name: "SND_SOC_DOBJ_GRAPH"
+      value: 4
+    }
+    enumerator {
+      name: "SND_SOC_DOBJ_WIDGET"
+      value: 5
+    }
+    enumerator {
+      name: "SND_SOC_DOBJ_DAI_LINK"
+      value: 6
+    }
+    enumerator {
+      name: "SND_SOC_DOBJ_PCM"
+      value: 7
+    }
+    enumerator {
+      name: "SND_SOC_DOBJ_CODEC_LINK"
+      value: 8
+    }
+    enumerator {
+      name: "SND_SOC_DOBJ_BACKEND_LINK"
+      value: 9
+    }
+  }
+}
+enumeration {
+  id: 0x779608e1
+  name: "snd_soc_dpcm_state"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "SND_SOC_DPCM_STATE_NEW"
+    }
+    enumerator {
+      name: "SND_SOC_DPCM_STATE_OPEN"
+      value: 1
+    }
+    enumerator {
+      name: "SND_SOC_DPCM_STATE_HW_PARAMS"
+      value: 2
+    }
+    enumerator {
+      name: "SND_SOC_DPCM_STATE_PREPARE"
+      value: 3
+    }
+    enumerator {
+      name: "SND_SOC_DPCM_STATE_START"
+      value: 4
+    }
+    enumerator {
+      name: "SND_SOC_DPCM_STATE_STOP"
+      value: 5
+    }
+    enumerator {
+      name: "SND_SOC_DPCM_STATE_PAUSED"
+      value: 6
+    }
+    enumerator {
+      name: "SND_SOC_DPCM_STATE_SUSPEND"
+      value: 7
+    }
+    enumerator {
+      name: "SND_SOC_DPCM_STATE_HW_FREE"
+      value: 8
+    }
+    enumerator {
+      name: "SND_SOC_DPCM_STATE_CLOSE"
+      value: 9
+    }
+  }
+}
+enumeration {
+  id: 0xb05292aa
+  name: "snd_soc_dpcm_trigger"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "SND_SOC_DPCM_TRIGGER_PRE"
+    }
+    enumerator {
+      name: "SND_SOC_DPCM_TRIGGER_POST"
+      value: 1
+    }
+    enumerator {
+      name: "SND_SOC_DPCM_TRIGGER_BESPOKE"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x071b6d64
+  name: "snd_soc_dpcm_update"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "SND_SOC_DPCM_UPDATE_NO"
+    }
+    enumerator {
+      name: "SND_SOC_DPCM_UPDATE_BE"
+      value: 1
+    }
+    enumerator {
+      name: "SND_SOC_DPCM_UPDATE_FE"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0xe3575a9b
+  name: "snd_soc_pcm_subclass"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "SND_SOC_PCM_CLASS_PCM"
+    }
+    enumerator {
+      name: "SND_SOC_PCM_CLASS_BE"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0xbb98ef85
+  name: "sock_shutdown_cmd"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "SHUT_RD"
+    }
+    enumerator {
+      name: "SHUT_WR"
+      value: 1
+    }
+    enumerator {
+      name: "SHUT_RDWR"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x01c23ad9
+  name: "spi_mem_data_dir"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "SPI_MEM_NO_DATA"
+    }
+    enumerator {
+      name: "SPI_MEM_DATA_IN"
+      value: 1
+    }
+    enumerator {
+      name: "SPI_MEM_DATA_OUT"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x1a370a4f
+  name: "string_size_units"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "STRING_UNITS_10"
+    }
+    enumerator {
+      name: "STRING_UNITS_2"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0x5f8123e7
+  name: "subpixel_order"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "SubPixelUnknown"
+    }
+    enumerator {
+      name: "SubPixelHorizontalRGB"
+      value: 1
+    }
+    enumerator {
+      name: "SubPixelHorizontalBGR"
+      value: 2
+    }
+    enumerator {
+      name: "SubPixelVerticalRGB"
+      value: 3
+    }
+    enumerator {
+      name: "SubPixelVerticalBGR"
+      value: 4
+    }
+    enumerator {
+      name: "SubPixelNone"
+      value: 5
+    }
+  }
+}
+enumeration {
+  id: 0x63d1007f
+  name: "sum_check_flags"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "SUM_CHECK_P_RESULT"
+      value: 1
+    }
+    enumerator {
+      name: "SUM_CHECK_Q_RESULT"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x64823955
+  name: "suspended_state"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "BT_RUNNING"
+    }
+    enumerator {
+      name: "BT_SUSPEND_DISCONNECT"
+      value: 1
+    }
+    enumerator {
+      name: "BT_SUSPEND_CONFIGURE_WAKE"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x1b285d08
+  name: "switch_power_state"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "DRM_SWITCH_POWER_ON"
+    }
+    enumerator {
+      name: "DRM_SWITCH_POWER_OFF"
+      value: 1
+    }
+    enumerator {
+      name: "DRM_SWITCH_POWER_CHANGING"
+      value: 2
+    }
+    enumerator {
+      name: "DRM_SWITCH_POWER_DYNAMIC_OFF"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x3472c895
+  name: "sys_off_mode"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "SYS_OFF_MODE_POWER_OFF_PREPARE"
+    }
+    enumerator {
+      name: "SYS_OFF_MODE_POWER_OFF"
+      value: 1
+    }
+    enumerator {
+      name: "SYS_OFF_MODE_RESTART_PREPARE"
+      value: 2
+    }
+    enumerator {
+      name: "SYS_OFF_MODE_RESTART"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x9f2e00ef
+  name: "system_states"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "SYSTEM_BOOTING"
+    }
+    enumerator {
+      name: "SYSTEM_SCHEDULING"
+      value: 1
+    }
+    enumerator {
+      name: "SYSTEM_FREEING_INITMEM"
+      value: 2
+    }
+    enumerator {
+      name: "SYSTEM_RUNNING"
+      value: 3
+    }
+    enumerator {
+      name: "SYSTEM_HALT"
+      value: 4
+    }
+    enumerator {
+      name: "SYSTEM_POWER_OFF"
+      value: 5
+    }
+    enumerator {
+      name: "SYSTEM_RESTART"
+      value: 6
+    }
+    enumerator {
+      name: "SYSTEM_SUSPEND"
+      value: 7
+    }
+  }
+}
+enumeration {
+  id: 0x636ed10d
+  name: "task_work_notify_mode"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "TWA_NONE"
+    }
+    enumerator {
+      name: "TWA_RESUME"
+      value: 1
+    }
+    enumerator {
+      name: "TWA_SIGNAL"
+      value: 2
+    }
+    enumerator {
+      name: "TWA_SIGNAL_NO_IPI"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x26a97673
+  name: "tc_setup_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "TC_QUERY_CAPS"
+    }
+    enumerator {
+      name: "TC_SETUP_QDISC_MQPRIO"
+      value: 1
+    }
+    enumerator {
+      name: "TC_SETUP_CLSU32"
+      value: 2
+    }
+    enumerator {
+      name: "TC_SETUP_CLSFLOWER"
+      value: 3
+    }
+    enumerator {
+      name: "TC_SETUP_CLSMATCHALL"
+      value: 4
+    }
+    enumerator {
+      name: "TC_SETUP_CLSBPF"
+      value: 5
+    }
+    enumerator {
+      name: "TC_SETUP_BLOCK"
+      value: 6
+    }
+    enumerator {
+      name: "TC_SETUP_QDISC_CBS"
+      value: 7
+    }
+    enumerator {
+      name: "TC_SETUP_QDISC_RED"
+      value: 8
+    }
+    enumerator {
+      name: "TC_SETUP_QDISC_PRIO"
+      value: 9
+    }
+    enumerator {
+      name: "TC_SETUP_QDISC_MQ"
+      value: 10
+    }
+    enumerator {
+      name: "TC_SETUP_QDISC_ETF"
+      value: 11
+    }
+    enumerator {
+      name: "TC_SETUP_ROOT_QDISC"
+      value: 12
+    }
+    enumerator {
+      name: "TC_SETUP_QDISC_GRED"
+      value: 13
+    }
+    enumerator {
+      name: "TC_SETUP_QDISC_TAPRIO"
+      value: 14
+    }
+    enumerator {
+      name: "TC_SETUP_FT"
+      value: 15
+    }
+    enumerator {
+      name: "TC_SETUP_QDISC_ETS"
+      value: 16
+    }
+    enumerator {
+      name: "TC_SETUP_QDISC_TBF"
+      value: 17
+    }
+    enumerator {
+      name: "TC_SETUP_QDISC_FIFO"
+      value: 18
+    }
+    enumerator {
+      name: "TC_SETUP_QDISC_HTB"
+      value: 19
+    }
+    enumerator {
+      name: "TC_SETUP_ACT"
+      value: 20
+    }
+  }
+}
+enumeration {
+  id: 0x3f687816
+  name: "tca_id"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "TCA_ID_UNSPEC"
+    }
+    enumerator {
+      name: "TCA_ID_POLICE"
+      value: 1
+    }
+    enumerator {
+      name: "TCA_ID_GACT"
+      value: 5
+    }
+    enumerator {
+      name: "TCA_ID_IPT"
+      value: 6
+    }
+    enumerator {
+      name: "TCA_ID_PEDIT"
+      value: 7
+    }
+    enumerator {
+      name: "TCA_ID_MIRRED"
+      value: 8
+    }
+    enumerator {
+      name: "TCA_ID_NAT"
+      value: 9
+    }
+    enumerator {
+      name: "TCA_ID_XT"
+      value: 10
+    }
+    enumerator {
+      name: "TCA_ID_SKBEDIT"
+      value: 11
+    }
+    enumerator {
+      name: "TCA_ID_VLAN"
+      value: 12
+    }
+    enumerator {
+      name: "TCA_ID_BPF"
+      value: 13
+    }
+    enumerator {
+      name: "TCA_ID_CONNMARK"
+      value: 14
+    }
+    enumerator {
+      name: "TCA_ID_SKBMOD"
+      value: 15
+    }
+    enumerator {
+      name: "TCA_ID_CSUM"
+      value: 16
+    }
+    enumerator {
+      name: "TCA_ID_TUNNEL_KEY"
+      value: 17
+    }
+    enumerator {
+      name: "TCA_ID_SIMP"
+      value: 22
+    }
+    enumerator {
+      name: "TCA_ID_IFE"
+      value: 25
+    }
+    enumerator {
+      name: "TCA_ID_SAMPLE"
+      value: 26
+    }
+    enumerator {
+      name: "TCA_ID_CTINFO"
+      value: 27
+    }
+    enumerator {
+      name: "TCA_ID_MPLS"
+      value: 28
+    }
+    enumerator {
+      name: "TCA_ID_CT"
+      value: 29
+    }
+    enumerator {
+      name: "TCA_ID_GATE"
+      value: 30
+    }
+    enumerator {
+      name: "__TCA_ID_MAX"
+      value: 255
+    }
+  }
+}
+enumeration {
+  id: 0xf1393d0e
+  name: "tcp_ca_event"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "CA_EVENT_TX_START"
+    }
+    enumerator {
+      name: "CA_EVENT_CWND_RESTART"
+      value: 1
+    }
+    enumerator {
+      name: "CA_EVENT_COMPLETE_CWR"
+      value: 2
+    }
+    enumerator {
+      name: "CA_EVENT_LOSS"
+      value: 3
+    }
+    enumerator {
+      name: "CA_EVENT_ECN_NO_CE"
+      value: 4
+    }
+    enumerator {
+      name: "CA_EVENT_ECN_IS_CE"
+      value: 5
+    }
+  }
+}
+enumeration {
+  id: 0x31aab745
+  name: "tcpm_ams"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "NONE_AMS"
+    }
+    enumerator {
+      name: "POWER_NEGOTIATION"
+      value: 1
+    }
+    enumerator {
+      name: "GOTOMIN"
+      value: 2
+    }
+    enumerator {
+      name: "SOFT_RESET_AMS"
+      value: 3
+    }
+    enumerator {
+      name: "HARD_RESET"
+      value: 4
+    }
+    enumerator {
+      name: "CABLE_RESET"
+      value: 5
+    }
+    enumerator {
+      name: "GET_SOURCE_CAPABILITIES"
+      value: 6
+    }
+    enumerator {
+      name: "GET_SINK_CAPABILITIES"
+      value: 7
+    }
+    enumerator {
+      name: "POWER_ROLE_SWAP"
+      value: 8
+    }
+    enumerator {
+      name: "FAST_ROLE_SWAP"
+      value: 9
+    }
+    enumerator {
+      name: "DATA_ROLE_SWAP"
+      value: 10
+    }
+    enumerator {
+      name: "VCONN_SWAP"
+      value: 11
+    }
+    enumerator {
+      name: "SOURCE_ALERT"
+      value: 12
+    }
+    enumerator {
+      name: "GETTING_SOURCE_EXTENDED_CAPABILITIES"
+      value: 13
+    }
+    enumerator {
+      name: "GETTING_SOURCE_SINK_STATUS"
+      value: 14
+    }
+    enumerator {
+      name: "GETTING_BATTERY_CAPABILITIES"
+      value: 15
+    }
+    enumerator {
+      name: "GETTING_BATTERY_STATUS"
+      value: 16
+    }
+    enumerator {
+      name: "GETTING_MANUFACTURER_INFORMATION"
+      value: 17
+    }
+    enumerator {
+      name: "SECURITY"
+      value: 18
+    }
+    enumerator {
+      name: "FIRMWARE_UPDATE"
+      value: 19
+    }
+    enumerator {
+      name: "DISCOVER_IDENTITY"
+      value: 20
+    }
+    enumerator {
+      name: "SOURCE_STARTUP_CABLE_PLUG_DISCOVER_IDENTITY"
+      value: 21
+    }
+    enumerator {
+      name: "DISCOVER_SVIDS"
+      value: 22
+    }
+    enumerator {
+      name: "DISCOVER_MODES"
+      value: 23
+    }
+    enumerator {
+      name: "DFP_TO_UFP_ENTER_MODE"
+      value: 24
+    }
+    enumerator {
+      name: "DFP_TO_UFP_EXIT_MODE"
+      value: 25
+    }
+    enumerator {
+      name: "DFP_TO_CABLE_PLUG_ENTER_MODE"
+      value: 26
+    }
+    enumerator {
+      name: "DFP_TO_CABLE_PLUG_EXIT_MODE"
+      value: 27
+    }
+    enumerator {
+      name: "ATTENTION"
+      value: 28
+    }
+    enumerator {
+      name: "BIST"
+      value: 29
+    }
+    enumerator {
+      name: "UNSTRUCTURED_VDMS"
+      value: 30
+    }
+    enumerator {
+      name: "STRUCTURED_VDMS"
+      value: 31
+    }
+    enumerator {
+      name: "COUNTRY_INFO"
+      value: 32
+    }
+    enumerator {
+      name: "COUNTRY_CODES"
+      value: 33
+    }
+  }
+}
+enumeration {
+  id: 0x63b95725
+  name: "tcpm_state"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "INVALID_STATE"
+    }
+    enumerator {
+      name: "TOGGLING"
+      value: 1
+    }
+    enumerator {
+      name: "CHECK_CONTAMINANT"
+      value: 2
+    }
+    enumerator {
+      name: "SRC_UNATTACHED"
+      value: 3
+    }
+    enumerator {
+      name: "SRC_ATTACH_WAIT"
+      value: 4
+    }
+    enumerator {
+      name: "SRC_ATTACHED"
+      value: 5
+    }
+    enumerator {
+      name: "SRC_STARTUP"
+      value: 6
+    }
+    enumerator {
+      name: "SRC_SEND_CAPABILITIES"
+      value: 7
+    }
+    enumerator {
+      name: "SRC_SEND_CAPABILITIES_TIMEOUT"
+      value: 8
+    }
+    enumerator {
+      name: "SRC_NEGOTIATE_CAPABILITIES"
+      value: 9
+    }
+    enumerator {
+      name: "SRC_TRANSITION_SUPPLY"
+      value: 10
+    }
+    enumerator {
+      name: "SRC_READY"
+      value: 11
+    }
+    enumerator {
+      name: "SRC_WAIT_NEW_CAPABILITIES"
+      value: 12
+    }
+    enumerator {
+      name: "SNK_UNATTACHED"
+      value: 13
+    }
+    enumerator {
+      name: "SNK_ATTACH_WAIT"
+      value: 14
+    }
+    enumerator {
+      name: "SNK_DEBOUNCED"
+      value: 15
+    }
+    enumerator {
+      name: "SNK_ATTACHED"
+      value: 16
+    }
+    enumerator {
+      name: "SNK_STARTUP"
+      value: 17
+    }
+    enumerator {
+      name: "SNK_DISCOVERY"
+      value: 18
+    }
+    enumerator {
+      name: "SNK_DISCOVERY_DEBOUNCE"
+      value: 19
+    }
+    enumerator {
+      name: "SNK_DISCOVERY_DEBOUNCE_DONE"
+      value: 20
+    }
+    enumerator {
+      name: "SNK_WAIT_CAPABILITIES"
+      value: 21
+    }
+    enumerator {
+      name: "SNK_NEGOTIATE_CAPABILITIES"
+      value: 22
+    }
+    enumerator {
+      name: "SNK_NEGOTIATE_PPS_CAPABILITIES"
+      value: 23
+    }
+    enumerator {
+      name: "SNK_TRANSITION_SINK"
+      value: 24
+    }
+    enumerator {
+      name: "SNK_TRANSITION_SINK_VBUS"
+      value: 25
+    }
+    enumerator {
+      name: "SNK_READY"
+      value: 26
+    }
+    enumerator {
+      name: "ACC_UNATTACHED"
+      value: 27
+    }
+    enumerator {
+      name: "DEBUG_ACC_ATTACHED"
+      value: 28
+    }
+    enumerator {
+      name: "AUDIO_ACC_ATTACHED"
+      value: 29
+    }
+    enumerator {
+      name: "AUDIO_ACC_DEBOUNCE"
+      value: 30
+    }
+    enumerator {
+      name: "HARD_RESET_SEND"
+      value: 31
+    }
+    enumerator {
+      name: "HARD_RESET_START"
+      value: 32
+    }
+    enumerator {
+      name: "SRC_HARD_RESET_VBUS_OFF"
+      value: 33
+    }
+    enumerator {
+      name: "SRC_HARD_RESET_VBUS_ON"
+      value: 34
+    }
+    enumerator {
+      name: "SNK_HARD_RESET_SINK_OFF"
+      value: 35
+    }
+    enumerator {
+      name: "SNK_HARD_RESET_WAIT_VBUS"
+      value: 36
+    }
+    enumerator {
+      name: "SNK_HARD_RESET_SINK_ON"
+      value: 37
+    }
+    enumerator {
+      name: "SOFT_RESET"
+      value: 38
+    }
+    enumerator {
+      name: "SRC_SOFT_RESET_WAIT_SNK_TX"
+      value: 39
+    }
+    enumerator {
+      name: "SNK_SOFT_RESET"
+      value: 40
+    }
+    enumerator {
+      name: "SOFT_RESET_SEND"
+      value: 41
+    }
+    enumerator {
+      name: "DR_SWAP_ACCEPT"
+      value: 42
+    }
+    enumerator {
+      name: "DR_SWAP_SEND"
+      value: 43
+    }
+    enumerator {
+      name: "DR_SWAP_SEND_TIMEOUT"
+      value: 44
+    }
+    enumerator {
+      name: "DR_SWAP_CANCEL"
+      value: 45
+    }
+    enumerator {
+      name: "DR_SWAP_CHANGE_DR"
+      value: 46
+    }
+    enumerator {
+      name: "PR_SWAP_ACCEPT"
+      value: 47
+    }
+    enumerator {
+      name: "PR_SWAP_SEND"
+      value: 48
+    }
+    enumerator {
+      name: "PR_SWAP_SEND_TIMEOUT"
+      value: 49
+    }
+    enumerator {
+      name: "PR_SWAP_CANCEL"
+      value: 50
+    }
+    enumerator {
+      name: "PR_SWAP_START"
+      value: 51
+    }
+    enumerator {
+      name: "PR_SWAP_SRC_SNK_TRANSITION_OFF"
+      value: 52
+    }
+    enumerator {
+      name: "PR_SWAP_SRC_SNK_SOURCE_OFF"
+      value: 53
+    }
+    enumerator {
+      name: "PR_SWAP_SRC_SNK_SOURCE_OFF_CC_DEBOUNCED"
+      value: 54
+    }
+    enumerator {
+      name: "PR_SWAP_SRC_SNK_SINK_ON"
+      value: 55
+    }
+    enumerator {
+      name: "PR_SWAP_SNK_SRC_SINK_OFF"
+      value: 56
+    }
+    enumerator {
+      name: "PR_SWAP_SNK_SRC_SOURCE_ON"
+      value: 57
+    }
+    enumerator {
+      name: "PR_SWAP_SNK_SRC_SOURCE_ON_VBUS_RAMPED_UP"
+      value: 58
+    }
+    enumerator {
+      name: "VCONN_SWAP_ACCEPT"
+      value: 59
+    }
+    enumerator {
+      name: "VCONN_SWAP_SEND"
+      value: 60
+    }
+    enumerator {
+      name: "VCONN_SWAP_SEND_TIMEOUT"
+      value: 61
+    }
+    enumerator {
+      name: "VCONN_SWAP_CANCEL"
+      value: 62
+    }
+    enumerator {
+      name: "VCONN_SWAP_START"
+      value: 63
+    }
+    enumerator {
+      name: "VCONN_SWAP_WAIT_FOR_VCONN"
+      value: 64
+    }
+    enumerator {
+      name: "VCONN_SWAP_TURN_ON_VCONN"
+      value: 65
+    }
+    enumerator {
+      name: "VCONN_SWAP_TURN_OFF_VCONN"
+      value: 66
+    }
+    enumerator {
+      name: "FR_SWAP_SEND"
+      value: 67
+    }
+    enumerator {
+      name: "FR_SWAP_SEND_TIMEOUT"
+      value: 68
+    }
+    enumerator {
+      name: "FR_SWAP_SNK_SRC_TRANSITION_TO_OFF"
+      value: 69
+    }
+    enumerator {
+      name: "FR_SWAP_SNK_SRC_NEW_SINK_READY"
+      value: 70
+    }
+    enumerator {
+      name: "FR_SWAP_SNK_SRC_SOURCE_VBUS_APPLIED"
+      value: 71
+    }
+    enumerator {
+      name: "FR_SWAP_CANCEL"
+      value: 72
+    }
+    enumerator {
+      name: "SNK_TRY"
+      value: 73
+    }
+    enumerator {
+      name: "SNK_TRY_WAIT"
+      value: 74
+    }
+    enumerator {
+      name: "SNK_TRY_WAIT_DEBOUNCE"
+      value: 75
+    }
+    enumerator {
+      name: "SNK_TRY_WAIT_DEBOUNCE_CHECK_VBUS"
+      value: 76
+    }
+    enumerator {
+      name: "SRC_TRYWAIT"
+      value: 77
+    }
+    enumerator {
+      name: "SRC_TRYWAIT_DEBOUNCE"
+      value: 78
+    }
+    enumerator {
+      name: "SRC_TRYWAIT_UNATTACHED"
+      value: 79
+    }
+    enumerator {
+      name: "SRC_TRY"
+      value: 80
+    }
+    enumerator {
+      name: "SRC_TRY_WAIT"
+      value: 81
+    }
+    enumerator {
+      name: "SRC_TRY_DEBOUNCE"
+      value: 82
+    }
+    enumerator {
+      name: "SNK_TRYWAIT"
+      value: 83
+    }
+    enumerator {
+      name: "SNK_TRYWAIT_DEBOUNCE"
+      value: 84
+    }
+    enumerator {
+      name: "SNK_TRYWAIT_VBUS"
+      value: 85
+    }
+    enumerator {
+      name: "BIST_RX"
+      value: 86
+    }
+    enumerator {
+      name: "GET_STATUS_SEND"
+      value: 87
+    }
+    enumerator {
+      name: "GET_STATUS_SEND_TIMEOUT"
+      value: 88
+    }
+    enumerator {
+      name: "GET_PPS_STATUS_SEND"
+      value: 89
+    }
+    enumerator {
+      name: "GET_PPS_STATUS_SEND_TIMEOUT"
+      value: 90
+    }
+    enumerator {
+      name: "GET_SINK_CAP"
+      value: 91
+    }
+    enumerator {
+      name: "GET_SINK_CAP_TIMEOUT"
+      value: 92
+    }
+    enumerator {
+      name: "ERROR_RECOVERY"
+      value: 93
+    }
+    enumerator {
+      name: "PORT_RESET"
+      value: 94
+    }
+    enumerator {
+      name: "PORT_RESET_WAIT_OFF"
+      value: 95
+    }
+    enumerator {
+      name: "AMS_START"
+      value: 96
+    }
+    enumerator {
+      name: "CHUNK_NOT_SUPP"
+      value: 97
+    }
+  }
+}
+enumeration {
+  id: 0x8750081a
+  name: "tcpm_transmit_status"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "TCPC_TX_SUCCESS"
+    }
+    enumerator {
+      name: "TCPC_TX_DISCARDED"
+      value: 1
+    }
+    enumerator {
+      name: "TCPC_TX_FAILED"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0xb6b37605
+  name: "tcpm_transmit_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "TCPC_TX_SOP"
+    }
+    enumerator {
+      name: "TCPC_TX_SOP_PRIME"
+      value: 1
+    }
+    enumerator {
+      name: "TCPC_TX_SOP_PRIME_PRIME"
+      value: 2
+    }
+    enumerator {
+      name: "TCPC_TX_SOP_DEBUG_PRIME"
+      value: 3
+    }
+    enumerator {
+      name: "TCPC_TX_SOP_DEBUG_PRIME_PRIME"
+      value: 4
+    }
+    enumerator {
+      name: "TCPC_TX_HARD_RESET"
+      value: 5
+    }
+    enumerator {
+      name: "TCPC_TX_CABLE_RESET"
+      value: 6
+    }
+    enumerator {
+      name: "TCPC_TX_BIST_MODE_2"
+      value: 7
+    }
+  }
+}
+enumeration {
+  id: 0x231fce4e
+  name: "thermal_device_mode"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "THERMAL_DEVICE_DISABLED"
+    }
+    enumerator {
+      name: "THERMAL_DEVICE_ENABLED"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0x60af483b
+  name: "thermal_notify_event"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "THERMAL_EVENT_UNSPECIFIED"
+    }
+    enumerator {
+      name: "THERMAL_EVENT_TEMP_SAMPLE"
+      value: 1
+    }
+    enumerator {
+      name: "THERMAL_TRIP_VIOLATED"
+      value: 2
+    }
+    enumerator {
+      name: "THERMAL_TRIP_CHANGED"
+      value: 3
+    }
+    enumerator {
+      name: "THERMAL_DEVICE_DOWN"
+      value: 4
+    }
+    enumerator {
+      name: "THERMAL_DEVICE_UP"
+      value: 5
+    }
+    enumerator {
+      name: "THERMAL_DEVICE_POWER_CAPABILITY_CHANGED"
+      value: 6
+    }
+    enumerator {
+      name: "THERMAL_TABLE_CHANGED"
+      value: 7
+    }
+    enumerator {
+      name: "THERMAL_EVENT_KEEP_ALIVE"
+      value: 8
+    }
+  }
+}
+enumeration {
+  id: 0x318a9af9
+  name: "thermal_trend"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "THERMAL_TREND_STABLE"
+    }
+    enumerator {
+      name: "THERMAL_TREND_RAISING"
+      value: 1
+    }
+    enumerator {
+      name: "THERMAL_TREND_DROPPING"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x34154096
+  name: "thermal_trip_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "THERMAL_TRIP_ACTIVE"
+    }
+    enumerator {
+      name: "THERMAL_TRIP_PASSIVE"
+      value: 1
+    }
+    enumerator {
+      name: "THERMAL_TRIP_HOT"
+      value: 2
+    }
+    enumerator {
+      name: "THERMAL_TRIP_CRITICAL"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x9dea9413
+  name: "timespec_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "TT_NONE"
+    }
+    enumerator {
+      name: "TT_NATIVE"
+      value: 1
+    }
+    enumerator {
+      name: "TT_COMPAT"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0xada894ab
+  name: "tk_offsets"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "TK_OFFS_REAL"
+    }
+    enumerator {
+      name: "TK_OFFS_BOOT"
+      value: 1
+    }
+    enumerator {
+      name: "TK_OFFS_TAI"
+      value: 2
+    }
+    enumerator {
+      name: "TK_OFFS_MAX"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x6dbe079a
+  name: "trace_reg"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "TRACE_REG_REGISTER"
+    }
+    enumerator {
+      name: "TRACE_REG_UNREGISTER"
+      value: 1
+    }
+    enumerator {
+      name: "TRACE_REG_PERF_REGISTER"
+      value: 2
+    }
+    enumerator {
+      name: "TRACE_REG_PERF_UNREGISTER"
+      value: 3
+    }
+    enumerator {
+      name: "TRACE_REG_PERF_OPEN"
+      value: 4
+    }
+    enumerator {
+      name: "TRACE_REG_PERF_CLOSE"
+      value: 5
+    }
+    enumerator {
+      name: "TRACE_REG_PERF_ADD"
+      value: 6
+    }
+    enumerator {
+      name: "TRACE_REG_PERF_DEL"
+      value: 7
+    }
+  }
+}
+enumeration {
+  id: 0x7e280689
+  name: "track_item"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "TRACK_ALLOC"
+    }
+    enumerator {
+      name: "TRACK_FREE"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0x7e09d913
+  name: "ttm_bo_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "ttm_bo_type_device"
+    }
+    enumerator {
+      name: "ttm_bo_type_kernel"
+      value: 1
+    }
+    enumerator {
+      name: "ttm_bo_type_sg"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x3d00a13c
+  name: "ttm_caching"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "ttm_uncached"
+    }
+    enumerator {
+      name: "ttm_write_combined"
+      value: 1
+    }
+    enumerator {
+      name: "ttm_cached"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0xc00c762a
+  name: "typec_accessory"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "TYPEC_ACCESSORY_NONE"
+    }
+    enumerator {
+      name: "TYPEC_ACCESSORY_AUDIO"
+      value: 1
+    }
+    enumerator {
+      name: "TYPEC_ACCESSORY_DEBUG"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0xd031fa6c
+  name: "typec_cc_polarity"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "TYPEC_POLARITY_CC1"
+    }
+    enumerator {
+      name: "TYPEC_POLARITY_CC2"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0x361d366b
+  name: "typec_cc_status"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "TYPEC_CC_OPEN"
+    }
+    enumerator {
+      name: "TYPEC_CC_RA"
+      value: 1
+    }
+    enumerator {
+      name: "TYPEC_CC_RD"
+      value: 2
+    }
+    enumerator {
+      name: "TYPEC_CC_RP_DEF"
+      value: 3
+    }
+    enumerator {
+      name: "TYPEC_CC_RP_1_5"
+      value: 4
+    }
+    enumerator {
+      name: "TYPEC_CC_RP_3_0"
+      value: 5
+    }
+  }
+}
+enumeration {
+  id: 0xc607e025
+  name: "typec_data_role"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "TYPEC_DEVICE"
+    }
+    enumerator {
+      name: "TYPEC_HOST"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0xcf497245
+  name: "typec_orientation"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "TYPEC_ORIENTATION_NONE"
+    }
+    enumerator {
+      name: "TYPEC_ORIENTATION_NORMAL"
+      value: 1
+    }
+    enumerator {
+      name: "TYPEC_ORIENTATION_REVERSE"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x8069a6a3
+  name: "typec_port_data"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "TYPEC_PORT_DFP"
+    }
+    enumerator {
+      name: "TYPEC_PORT_UFP"
+      value: 1
+    }
+    enumerator {
+      name: "TYPEC_PORT_DRD"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x7a8335ad
+  name: "typec_port_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "TYPEC_PORT_SRC"
+    }
+    enumerator {
+      name: "TYPEC_PORT_SNK"
+      value: 1
+    }
+    enumerator {
+      name: "TYPEC_PORT_DRP"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x7194a543
+  name: "typec_pwr_opmode"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "TYPEC_PWR_MODE_USB"
+    }
+    enumerator {
+      name: "TYPEC_PWR_MODE_1_5A"
+      value: 1
+    }
+    enumerator {
+      name: "TYPEC_PWR_MODE_3_0A"
+      value: 2
+    }
+    enumerator {
+      name: "TYPEC_PWR_MODE_PD"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x8167e73b
+  name: "typec_role"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "TYPEC_SINK"
+    }
+    enumerator {
+      name: "TYPEC_SOURCE"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0x1c6cd3c0
+  name: "typec_timer"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "SINK_WAIT_CAP"
+    }
+    enumerator {
+      name: "SOURCE_OFF"
+      value: 1
+    }
+    enumerator {
+      name: "CC_DEBOUNCE"
+      value: 2
+    }
+    enumerator {
+      name: "SINK_DISCOVERY_BC12"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0xd56191bd
+  name: "uart_pm_state"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "UART_PM_STATE_ON"
+    }
+    enumerator {
+      name: "UART_PM_STATE_OFF"
+      value: 3
+    }
+    enumerator {
+      name: "UART_PM_STATE_UNDEFINED"
+      value: 4
+    }
+  }
+}
+enumeration {
+  id: 0x44891609
+  name: "uclamp_id"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "UCLAMP_MIN"
+    }
+    enumerator {
+      name: "UCLAMP_MAX"
+      value: 1
+    }
+    enumerator {
+      name: "UCLAMP_CNT"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x9e462b08
+  name: "ufs_dev_pwr_mode"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "UFS_ACTIVE_PWR_MODE"
+      value: 1
+    }
+    enumerator {
+      name: "UFS_SLEEP_PWR_MODE"
+      value: 2
+    }
+    enumerator {
+      name: "UFS_POWERDOWN_PWR_MODE"
+      value: 3
+    }
+    enumerator {
+      name: "UFS_DEEPSLEEP_PWR_MODE"
+      value: 4
+    }
+  }
+}
+enumeration {
+  id: 0x81f130ac
+  name: "ufs_event_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "UFS_EVT_PA_ERR"
+    }
+    enumerator {
+      name: "UFS_EVT_DL_ERR"
+      value: 1
+    }
+    enumerator {
+      name: "UFS_EVT_NL_ERR"
+      value: 2
+    }
+    enumerator {
+      name: "UFS_EVT_TL_ERR"
+      value: 3
+    }
+    enumerator {
+      name: "UFS_EVT_DME_ERR"
+      value: 4
+    }
+    enumerator {
+      name: "UFS_EVT_AUTO_HIBERN8_ERR"
+      value: 5
+    }
+    enumerator {
+      name: "UFS_EVT_FATAL_ERR"
+      value: 6
+    }
+    enumerator {
+      name: "UFS_EVT_LINK_STARTUP_FAIL"
+      value: 7
+    }
+    enumerator {
+      name: "UFS_EVT_RESUME_ERR"
+      value: 8
+    }
+    enumerator {
+      name: "UFS_EVT_SUSPEND_ERR"
+      value: 9
+    }
+    enumerator {
+      name: "UFS_EVT_WL_SUSP_ERR"
+      value: 10
+    }
+    enumerator {
+      name: "UFS_EVT_WL_RES_ERR"
+      value: 11
+    }
+    enumerator {
+      name: "UFS_EVT_DEV_RESET"
+      value: 12
+    }
+    enumerator {
+      name: "UFS_EVT_HOST_RESET"
+      value: 13
+    }
+    enumerator {
+      name: "UFS_EVT_ABORT"
+      value: 14
+    }
+    enumerator {
+      name: "UFS_EVT_CNT"
+      value: 15
+    }
+  }
+}
+enumeration {
+  id: 0x4a057220
+  name: "ufs_notify_change_status"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "PRE_CHANGE"
+    }
+    enumerator {
+      name: "POST_CHANGE"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0xa69e469b
+  name: "ufs_pm_level"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "UFS_PM_LVL_0"
+    }
+    enumerator {
+      name: "UFS_PM_LVL_1"
+      value: 1
+    }
+    enumerator {
+      name: "UFS_PM_LVL_2"
+      value: 2
+    }
+    enumerator {
+      name: "UFS_PM_LVL_3"
+      value: 3
+    }
+    enumerator {
+      name: "UFS_PM_LVL_4"
+      value: 4
+    }
+    enumerator {
+      name: "UFS_PM_LVL_5"
+      value: 5
+    }
+    enumerator {
+      name: "UFS_PM_LVL_6"
+      value: 6
+    }
+    enumerator {
+      name: "UFS_PM_LVL_MAX"
+      value: 7
+    }
+  }
+}
+enumeration {
+  id: 0xf4e0a3bd
+  name: "ufs_pm_op"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "UFS_RUNTIME_PM"
+    }
+    enumerator {
+      name: "UFS_SYSTEM_PM"
+      value: 1
+    }
+    enumerator {
+      name: "UFS_SHUTDOWN_PM"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x8fb3ffe2
+  name: "ufs_ref_clk_freq"
+  definition {
+    underlying_type_id: 0x6720d32f
+    enumerator {
+      name: "REF_CLK_FREQ_19_2_MHZ"
+    }
+    enumerator {
+      name: "REF_CLK_FREQ_26_MHZ"
+      value: 1
+    }
+    enumerator {
+      name: "REF_CLK_FREQ_38_4_MHZ"
+      value: 2
+    }
+    enumerator {
+      name: "REF_CLK_FREQ_52_MHZ"
+      value: 3
+    }
+    enumerator {
+      name: "REF_CLK_FREQ_INVAL"
+      value: -1
+    }
+  }
+}
+enumeration {
+  id: 0x04e77ee6
+  name: "ufshcd_state"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "UFSHCD_STATE_RESET"
+    }
+    enumerator {
+      name: "UFSHCD_STATE_OPERATIONAL"
+      value: 1
+    }
+    enumerator {
+      name: "UFSHCD_STATE_EH_SCHEDULED_NON_FATAL"
+      value: 2
+    }
+    enumerator {
+      name: "UFSHCD_STATE_EH_SCHEDULED_FATAL"
+      value: 3
+    }
+    enumerator {
+      name: "UFSHCD_STATE_ERROR"
+      value: 4
+    }
+  }
+}
+enumeration {
+  id: 0x15d87158
+  name: "uic_cmd_dme"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "UIC_CMD_DME_GET"
+      value: 1
+    }
+    enumerator {
+      name: "UIC_CMD_DME_SET"
+      value: 2
+    }
+    enumerator {
+      name: "UIC_CMD_DME_PEER_GET"
+      value: 3
+    }
+    enumerator {
+      name: "UIC_CMD_DME_PEER_SET"
+      value: 4
+    }
+    enumerator {
+      name: "UIC_CMD_DME_POWERON"
+      value: 16
+    }
+    enumerator {
+      name: "UIC_CMD_DME_POWEROFF"
+      value: 17
+    }
+    enumerator {
+      name: "UIC_CMD_DME_ENABLE"
+      value: 18
+    }
+    enumerator {
+      name: "UIC_CMD_DME_RESET"
+      value: 20
+    }
+    enumerator {
+      name: "UIC_CMD_DME_END_PT_RST"
+      value: 21
+    }
+    enumerator {
+      name: "UIC_CMD_DME_LINK_STARTUP"
+      value: 22
+    }
+    enumerator {
+      name: "UIC_CMD_DME_HIBER_ENTER"
+      value: 23
+    }
+    enumerator {
+      name: "UIC_CMD_DME_HIBER_EXIT"
+      value: 24
+    }
+    enumerator {
+      name: "UIC_CMD_DME_TEST_MODE"
+      value: 26
+    }
+  }
+}
+enumeration {
+  id: 0x65043940
+  name: "uic_link_state"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "UIC_LINK_OFF_STATE"
+    }
+    enumerator {
+      name: "UIC_LINK_ACTIVE_STATE"
+      value: 1
+    }
+    enumerator {
+      name: "UIC_LINK_HIBERN8_STATE"
+      value: 2
+    }
+    enumerator {
+      name: "UIC_LINK_BROKEN_STATE"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0xfb622df0
+  name: "uprobe_filter_ctx"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "UPROBE_FILTER_REGISTER"
+    }
+    enumerator {
+      name: "UPROBE_FILTER_UNREGISTER"
+      value: 1
+    }
+    enumerator {
+      name: "UPROBE_FILTER_MMAP"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x74c27986
+  name: "uprobe_task_state"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "UTASK_RUNNING"
+    }
+    enumerator {
+      name: "UTASK_SSTEP"
+      value: 1
+    }
+    enumerator {
+      name: "UTASK_SSTEP_ACK"
+      value: 2
+    }
+    enumerator {
+      name: "UTASK_SSTEP_TRAPPED"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x4efa90bb
+  name: "usb3_link_state"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "USB3_LPM_U0"
+    }
+    enumerator {
+      name: "USB3_LPM_U1"
+      value: 1
+    }
+    enumerator {
+      name: "USB3_LPM_U2"
+      value: 2
+    }
+    enumerator {
+      name: "USB3_LPM_U3"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0x53c98416
+  name: "usb_charger_state"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "USB_CHARGER_DEFAULT"
+    }
+    enumerator {
+      name: "USB_CHARGER_PRESENT"
+      value: 1
+    }
+    enumerator {
+      name: "USB_CHARGER_ABSENT"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0xdbbf4145
+  name: "usb_charger_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "UNKNOWN_TYPE"
+    }
+    enumerator {
+      name: "SDP_TYPE"
+      value: 1
+    }
+    enumerator {
+      name: "DCP_TYPE"
+      value: 2
+    }
+    enumerator {
+      name: "CDP_TYPE"
+      value: 3
+    }
+    enumerator {
+      name: "ACA_TYPE"
+      value: 4
+    }
+  }
+}
+enumeration {
+  id: 0x74fea38b
+  name: "usb_dev_authorize_policy"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "USB_DEVICE_AUTHORIZE_NONE"
+    }
+    enumerator {
+      name: "USB_DEVICE_AUTHORIZE_ALL"
+      value: 1
+    }
+    enumerator {
+      name: "USB_DEVICE_AUTHORIZE_INTERNAL"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x52658204
+  name: "usb_device_speed"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "USB_SPEED_UNKNOWN"
+    }
+    enumerator {
+      name: "USB_SPEED_LOW"
+      value: 1
+    }
+    enumerator {
+      name: "USB_SPEED_FULL"
+      value: 2
+    }
+    enumerator {
+      name: "USB_SPEED_HIGH"
+      value: 3
+    }
+    enumerator {
+      name: "USB_SPEED_WIRELESS"
+      value: 4
+    }
+    enumerator {
+      name: "USB_SPEED_SUPER"
+      value: 5
+    }
+    enumerator {
+      name: "USB_SPEED_SUPER_PLUS"
+      value: 6
+    }
+  }
+}
+enumeration {
+  id: 0xad7853f7
+  name: "usb_device_state"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "USB_STATE_NOTATTACHED"
+    }
+    enumerator {
+      name: "USB_STATE_ATTACHED"
+      value: 1
+    }
+    enumerator {
+      name: "USB_STATE_POWERED"
+      value: 2
+    }
+    enumerator {
+      name: "USB_STATE_RECONNECTING"
+      value: 3
+    }
+    enumerator {
+      name: "USB_STATE_UNAUTHENTICATED"
+      value: 4
+    }
+    enumerator {
+      name: "USB_STATE_DEFAULT"
+      value: 5
+    }
+    enumerator {
+      name: "USB_STATE_ADDRESS"
+      value: 6
+    }
+    enumerator {
+      name: "USB_STATE_CONFIGURED"
+      value: 7
+    }
+    enumerator {
+      name: "USB_STATE_SUSPENDED"
+      value: 8
+    }
+  }
+}
+enumeration {
+  id: 0x82bc7069
+  name: "usb_dr_mode"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "USB_DR_MODE_UNKNOWN"
+    }
+    enumerator {
+      name: "USB_DR_MODE_HOST"
+      value: 1
+    }
+    enumerator {
+      name: "USB_DR_MODE_PERIPHERAL"
+      value: 2
+    }
+    enumerator {
+      name: "USB_DR_MODE_OTG"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0xf613688a
+  name: "usb_interface_condition"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "USB_INTERFACE_UNBOUND"
+    }
+    enumerator {
+      name: "USB_INTERFACE_BINDING"
+      value: 1
+    }
+    enumerator {
+      name: "USB_INTERFACE_BOUND"
+      value: 2
+    }
+    enumerator {
+      name: "USB_INTERFACE_UNBINDING"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0xca0878b1
+  name: "usb_otg_state"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "OTG_STATE_UNDEFINED"
+    }
+    enumerator {
+      name: "OTG_STATE_B_IDLE"
+      value: 1
+    }
+    enumerator {
+      name: "OTG_STATE_B_SRP_INIT"
+      value: 2
+    }
+    enumerator {
+      name: "OTG_STATE_B_PERIPHERAL"
+      value: 3
+    }
+    enumerator {
+      name: "OTG_STATE_B_WAIT_ACON"
+      value: 4
+    }
+    enumerator {
+      name: "OTG_STATE_B_HOST"
+      value: 5
+    }
+    enumerator {
+      name: "OTG_STATE_A_IDLE"
+      value: 6
+    }
+    enumerator {
+      name: "OTG_STATE_A_WAIT_VRISE"
+      value: 7
+    }
+    enumerator {
+      name: "OTG_STATE_A_WAIT_BCON"
+      value: 8
+    }
+    enumerator {
+      name: "OTG_STATE_A_HOST"
+      value: 9
+    }
+    enumerator {
+      name: "OTG_STATE_A_SUSPEND"
+      value: 10
+    }
+    enumerator {
+      name: "OTG_STATE_A_PERIPHERAL"
+      value: 11
+    }
+    enumerator {
+      name: "OTG_STATE_A_WAIT_VFALL"
+      value: 12
+    }
+    enumerator {
+      name: "OTG_STATE_A_VBUS_ERR"
+      value: 13
+    }
+  }
+}
+enumeration {
+  id: 0xaca841ec
+  name: "usb_pd_svdm_ver"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "SVDM_VER_1_0"
+    }
+    enumerator {
+      name: "SVDM_VER_2_0"
+      value: 1
+    }
+    enumerator {
+      name: "SVDM_VER_MAX"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0xc2cf0a7e
+  name: "usb_phy_events"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "USB_EVENT_NONE"
+    }
+    enumerator {
+      name: "USB_EVENT_VBUS"
+      value: 1
+    }
+    enumerator {
+      name: "USB_EVENT_ID"
+      value: 2
+    }
+    enumerator {
+      name: "USB_EVENT_CHARGER"
+      value: 3
+    }
+    enumerator {
+      name: "USB_EVENT_ENUMERATED"
+      value: 4
+    }
+  }
+}
+enumeration {
+  id: 0x7dfce7fc
+  name: "usb_phy_interface"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "USBPHY_INTERFACE_MODE_UNKNOWN"
+    }
+    enumerator {
+      name: "USBPHY_INTERFACE_MODE_UTMI"
+      value: 1
+    }
+    enumerator {
+      name: "USBPHY_INTERFACE_MODE_UTMIW"
+      value: 2
+    }
+    enumerator {
+      name: "USBPHY_INTERFACE_MODE_ULPI"
+      value: 3
+    }
+    enumerator {
+      name: "USBPHY_INTERFACE_MODE_SERIAL"
+      value: 4
+    }
+    enumerator {
+      name: "USBPHY_INTERFACE_MODE_HSIC"
+      value: 5
+    }
+  }
+}
+enumeration {
+  id: 0xa2e4cbbb
+  name: "usb_phy_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "USB_PHY_TYPE_UNDEFINED"
+    }
+    enumerator {
+      name: "USB_PHY_TYPE_USB2"
+      value: 1
+    }
+    enumerator {
+      name: "USB_PHY_TYPE_USB3"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0xcc33625b
+  name: "usb_role"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "USB_ROLE_NONE"
+    }
+    enumerator {
+      name: "USB_ROLE_HOST"
+      value: 1
+    }
+    enumerator {
+      name: "USB_ROLE_DEVICE"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0xefa672c8
+  name: "usb_ssp_rate"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "USB_SSP_GEN_UNKNOWN"
+    }
+    enumerator {
+      name: "USB_SSP_GEN_2x1"
+      value: 1
+    }
+    enumerator {
+      name: "USB_SSP_GEN_1x2"
+      value: 2
+    }
+    enumerator {
+      name: "USB_SSP_GEN_2x2"
+      value: 3
+    }
+  }
+}
+enumeration {
+  id: 0xd0cce131
+  name: "utf16_endian"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "UTF16_HOST_ENDIAN"
+    }
+    enumerator {
+      name: "UTF16_LITTLE_ENDIAN"
+      value: 1
+    }
+    enumerator {
+      name: "UTF16_BIG_ENDIAN"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0xa422cab0
+  name: "v4l2_async_match_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "V4L2_ASYNC_MATCH_I2C"
+    }
+    enumerator {
+      name: "V4L2_ASYNC_MATCH_FWNODE"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0x716d7970
+  name: "v4l2_buf_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "V4L2_BUF_TYPE_VIDEO_CAPTURE"
+      value: 1
+    }
+    enumerator {
+      name: "V4L2_BUF_TYPE_VIDEO_OUTPUT"
+      value: 2
+    }
+    enumerator {
+      name: "V4L2_BUF_TYPE_VIDEO_OVERLAY"
+      value: 3
+    }
+    enumerator {
+      name: "V4L2_BUF_TYPE_VBI_CAPTURE"
+      value: 4
+    }
+    enumerator {
+      name: "V4L2_BUF_TYPE_VBI_OUTPUT"
+      value: 5
+    }
+    enumerator {
+      name: "V4L2_BUF_TYPE_SLICED_VBI_CAPTURE"
+      value: 6
+    }
+    enumerator {
+      name: "V4L2_BUF_TYPE_SLICED_VBI_OUTPUT"
+      value: 7
+    }
+    enumerator {
+      name: "V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY"
+      value: 8
+    }
+    enumerator {
+      name: "V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE"
+      value: 9
+    }
+    enumerator {
+      name: "V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE"
+      value: 10
+    }
+    enumerator {
+      name: "V4L2_BUF_TYPE_SDR_CAPTURE"
+      value: 11
+    }
+    enumerator {
+      name: "V4L2_BUF_TYPE_SDR_OUTPUT"
+      value: 12
+    }
+    enumerator {
+      name: "V4L2_BUF_TYPE_META_CAPTURE"
+      value: 13
+    }
+    enumerator {
+      name: "V4L2_BUF_TYPE_META_OUTPUT"
+      value: 14
+    }
+    enumerator {
+      name: "V4L2_BUF_TYPE_PRIVATE"
+      value: 128
+    }
+  }
+}
+enumeration {
+  id: 0x4c957f4c
+  name: "v4l2_ctrl_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "V4L2_CTRL_TYPE_INTEGER"
+      value: 1
+    }
+    enumerator {
+      name: "V4L2_CTRL_TYPE_BOOLEAN"
+      value: 2
+    }
+    enumerator {
+      name: "V4L2_CTRL_TYPE_MENU"
+      value: 3
+    }
+    enumerator {
+      name: "V4L2_CTRL_TYPE_BUTTON"
+      value: 4
+    }
+    enumerator {
+      name: "V4L2_CTRL_TYPE_INTEGER64"
+      value: 5
+    }
+    enumerator {
+      name: "V4L2_CTRL_TYPE_CTRL_CLASS"
+      value: 6
+    }
+    enumerator {
+      name: "V4L2_CTRL_TYPE_STRING"
+      value: 7
+    }
+    enumerator {
+      name: "V4L2_CTRL_TYPE_BITMASK"
+      value: 8
+    }
+    enumerator {
+      name: "V4L2_CTRL_TYPE_INTEGER_MENU"
+      value: 9
+    }
+    enumerator {
+      name: "V4L2_CTRL_COMPOUND_TYPES"
+      value: 256
+    }
+    enumerator {
+      name: "V4L2_CTRL_TYPE_U8"
+      value: 256
+    }
+    enumerator {
+      name: "V4L2_CTRL_TYPE_U16"
+      value: 257
+    }
+    enumerator {
+      name: "V4L2_CTRL_TYPE_U32"
+      value: 258
+    }
+    enumerator {
+      name: "V4L2_CTRL_TYPE_AREA"
+      value: 262
+    }
+    enumerator {
+      name: "V4L2_CTRL_TYPE_HDR10_CLL_INFO"
+      value: 272
+    }
+    enumerator {
+      name: "V4L2_CTRL_TYPE_HDR10_MASTERING_DISPLAY"
+      value: 273
+    }
+    enumerator {
+      name: "V4L2_CTRL_TYPE_H264_SPS"
+      value: 512
+    }
+    enumerator {
+      name: "V4L2_CTRL_TYPE_H264_PPS"
+      value: 513
+    }
+    enumerator {
+      name: "V4L2_CTRL_TYPE_H264_SCALING_MATRIX"
+      value: 514
+    }
+    enumerator {
+      name: "V4L2_CTRL_TYPE_H264_SLICE_PARAMS"
+      value: 515
+    }
+    enumerator {
+      name: "V4L2_CTRL_TYPE_H264_DECODE_PARAMS"
+      value: 516
+    }
+    enumerator {
+      name: "V4L2_CTRL_TYPE_H264_PRED_WEIGHTS"
+      value: 517
+    }
+    enumerator {
+      name: "V4L2_CTRL_TYPE_FWHT_PARAMS"
+      value: 544
+    }
+    enumerator {
+      name: "V4L2_CTRL_TYPE_VP8_FRAME"
+      value: 576
+    }
+    enumerator {
+      name: "V4L2_CTRL_TYPE_MPEG2_QUANTISATION"
+      value: 592
+    }
+    enumerator {
+      name: "V4L2_CTRL_TYPE_MPEG2_SEQUENCE"
+      value: 593
+    }
+    enumerator {
+      name: "V4L2_CTRL_TYPE_MPEG2_PICTURE"
+      value: 594
+    }
+    enumerator {
+      name: "V4L2_CTRL_TYPE_VP9_COMPRESSED_HDR"
+      value: 608
+    }
+    enumerator {
+      name: "V4L2_CTRL_TYPE_VP9_FRAME"
+      value: 609
+    }
+    enumerator {
+      name: "V4L2_CTRL_TYPE_HEVC_SPS"
+      value: 624
+    }
+    enumerator {
+      name: "V4L2_CTRL_TYPE_HEVC_PPS"
+      value: 625
+    }
+    enumerator {
+      name: "V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS"
+      value: 626
+    }
+    enumerator {
+      name: "V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX"
+      value: 627
+    }
+    enumerator {
+      name: "V4L2_CTRL_TYPE_HEVC_DECODE_PARAMS"
+      value: 628
+    }
+  }
+}
+enumeration {
+  id: 0x6eca601c
+  name: "v4l2_fwnode_orientation"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "V4L2_FWNODE_ORIENTATION_FRONT"
+    }
+    enumerator {
+      name: "V4L2_FWNODE_ORIENTATION_BACK"
+      value: 1
+    }
+    enumerator {
+      name: "V4L2_FWNODE_ORIENTATION_EXTERNAL"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x08bfad38
+  name: "v4l2_mbus_frame_desc_flags"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "V4L2_MBUS_FRAME_DESC_FL_LEN_MAX"
+      value: 1
+    }
+    enumerator {
+      name: "V4L2_MBUS_FRAME_DESC_FL_BLOB"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0xc0e017a2
+  name: "v4l2_mbus_frame_desc_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "V4L2_MBUS_FRAME_DESC_TYPE_UNDEFINED"
+    }
+    enumerator {
+      name: "V4L2_MBUS_FRAME_DESC_TYPE_PARALLEL"
+      value: 1
+    }
+    enumerator {
+      name: "V4L2_MBUS_FRAME_DESC_TYPE_CSI2"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x3c57148f
+  name: "v4l2_mbus_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "V4L2_MBUS_UNKNOWN"
+    }
+    enumerator {
+      name: "V4L2_MBUS_PARALLEL"
+      value: 1
+    }
+    enumerator {
+      name: "V4L2_MBUS_BT656"
+      value: 2
+    }
+    enumerator {
+      name: "V4L2_MBUS_CSI1"
+      value: 3
+    }
+    enumerator {
+      name: "V4L2_MBUS_CCP2"
+      value: 4
+    }
+    enumerator {
+      name: "V4L2_MBUS_CSI2_DPHY"
+      value: 5
+    }
+    enumerator {
+      name: "V4L2_MBUS_CSI2_CPHY"
+      value: 6
+    }
+    enumerator {
+      name: "V4L2_MBUS_DPI"
+      value: 7
+    }
+    enumerator {
+      name: "V4L2_MBUS_INVALID"
+      value: 8
+    }
+  }
+}
+enumeration {
+  id: 0xaf1e23da
+  name: "v4l2_priority"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "V4L2_PRIORITY_UNSET"
+    }
+    enumerator {
+      name: "V4L2_PRIORITY_BACKGROUND"
+      value: 1
+    }
+    enumerator {
+      name: "V4L2_PRIORITY_INTERACTIVE"
+      value: 2
+    }
+    enumerator {
+      name: "V4L2_PRIORITY_RECORD"
+      value: 3
+    }
+    enumerator {
+      name: "V4L2_PRIORITY_DEFAULT"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x1b7e8c48
+  name: "v4l2_subdev_ir_mode"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "V4L2_SUBDEV_IR_MODE_PULSE_WIDTH"
+    }
+  }
+}
+enumeration {
+  id: 0x2baac173
+  name: "vb2_buffer_state"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "VB2_BUF_STATE_DEQUEUED"
+    }
+    enumerator {
+      name: "VB2_BUF_STATE_IN_REQUEST"
+      value: 1
+    }
+    enumerator {
+      name: "VB2_BUF_STATE_PREPARING"
+      value: 2
+    }
+    enumerator {
+      name: "VB2_BUF_STATE_QUEUED"
+      value: 3
+    }
+    enumerator {
+      name: "VB2_BUF_STATE_ACTIVE"
+      value: 4
+    }
+    enumerator {
+      name: "VB2_BUF_STATE_DONE"
+      value: 5
+    }
+    enumerator {
+      name: "VB2_BUF_STATE_ERROR"
+      value: 6
+    }
+  }
+}
+enumeration {
+  id: 0xd2f5a3bb
+  name: "vdm_states"
+  definition {
+    underlying_type_id: 0x6720d32f
+    enumerator {
+      name: "VDM_STATE_ERR_BUSY"
+      value: -3
+    }
+    enumerator {
+      name: "VDM_STATE_ERR_SEND"
+      value: -2
+    }
+    enumerator {
+      name: "VDM_STATE_ERR_TMOUT"
+      value: -1
+    }
+    enumerator {
+      name: "VDM_STATE_DONE"
+    }
+    enumerator {
+      name: "VDM_STATE_READY"
+      value: 1
+    }
+    enumerator {
+      name: "VDM_STATE_BUSY"
+      value: 2
+    }
+    enumerator {
+      name: "VDM_STATE_WAIT_RSP_BUSY"
+      value: 3
+    }
+    enumerator {
+      name: "VDM_STATE_SEND_MESSAGE"
+      value: 4
+    }
+  }
+}
+enumeration {
+  id: 0x39e70eca
+  name: "vdso_clock_mode"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "VDSO_CLOCKMODE_NONE"
+    }
+    enumerator {
+      name: "VDSO_CLOCKMODE_ARCHTIMER"
+      value: 1
+    }
+    enumerator {
+      name: "VDSO_CLOCKMODE_ARCHTIMER_NOCOMPAT"
+      value: 2
+    }
+    enumerator {
+      name: "VDSO_CLOCKMODE_MAX"
+      value: 3
+    }
+    enumerator {
+      name: "VDSO_CLOCKMODE_TIMENS"
+      value: 2147483647
+    }
+  }
+}
+enumeration {
+  id: 0x81cf889d
+  name: "vfl_devnode_direction"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "VFL_DIR_RX"
+    }
+    enumerator {
+      name: "VFL_DIR_TX"
+      value: 1
+    }
+    enumerator {
+      name: "VFL_DIR_M2M"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0xbb683ae4
+  name: "vfl_devnode_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "VFL_TYPE_VIDEO"
+    }
+    enumerator {
+      name: "VFL_TYPE_VBI"
+      value: 1
+    }
+    enumerator {
+      name: "VFL_TYPE_RADIO"
+      value: 2
+    }
+    enumerator {
+      name: "VFL_TYPE_SUBDEV"
+      value: 3
+    }
+    enumerator {
+      name: "VFL_TYPE_SDR"
+      value: 4
+    }
+    enumerator {
+      name: "VFL_TYPE_TOUCH"
+      value: 5
+    }
+    enumerator {
+      name: "VFL_TYPE_MAX"
+      value: 6
+    }
+  }
+}
+enumeration {
+  id: 0xe357f5b0
+  name: "vgic_irq_config"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "VGIC_CONFIG_EDGE"
+    }
+    enumerator {
+      name: "VGIC_CONFIG_LEVEL"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0xacd8d043
+  name: "wb_reason"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "WB_REASON_BACKGROUND"
+    }
+    enumerator {
+      name: "WB_REASON_VMSCAN"
+      value: 1
+    }
+    enumerator {
+      name: "WB_REASON_SYNC"
+      value: 2
+    }
+    enumerator {
+      name: "WB_REASON_PERIODIC"
+      value: 3
+    }
+    enumerator {
+      name: "WB_REASON_LAPTOP_TIMER"
+      value: 4
+    }
+    enumerator {
+      name: "WB_REASON_FS_FREE_SPACE"
+      value: 5
+    }
+    enumerator {
+      name: "WB_REASON_FORKER_THREAD"
+      value: 6
+    }
+    enumerator {
+      name: "WB_REASON_FOREIGN_FLUSH"
+      value: 7
+    }
+    enumerator {
+      name: "WB_REASON_MAX"
+      value: 8
+    }
+  }
+}
+enumeration {
+  id: 0x39483c8a
+  name: "writeback_sync_modes"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "WB_SYNC_NONE"
+    }
+    enumerator {
+      name: "WB_SYNC_ALL"
+      value: 1
+    }
+  }
+}
+enumeration {
+  id: 0x7ebb2c72
+  name: "xdp_mem_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "MEM_TYPE_PAGE_SHARED"
+    }
+    enumerator {
+      name: "MEM_TYPE_PAGE_ORDER0"
+      value: 1
+    }
+    enumerator {
+      name: "MEM_TYPE_PAGE_POOL"
+      value: 2
+    }
+    enumerator {
+      name: "MEM_TYPE_XSK_BUFF_POOL"
+      value: 3
+    }
+    enumerator {
+      name: "MEM_TYPE_MAX"
+      value: 4
+    }
+  }
+}
+enumeration {
+  id: 0x798f2945
+  name: "xfrm_replay_mode"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "XFRM_REPLAY_MODE_LEGACY"
+    }
+    enumerator {
+      name: "XFRM_REPLAY_MODE_BMP"
+      value: 1
+    }
+    enumerator {
+      name: "XFRM_REPLAY_MODE_ESN"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0x5268af9d
+  name: "xhci_ring_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "TYPE_CTRL"
+    }
+    enumerator {
+      name: "TYPE_ISOC"
+      value: 1
+    }
+    enumerator {
+      name: "TYPE_BULK"
+      value: 2
+    }
+    enumerator {
+      name: "TYPE_INTR"
+      value: 3
+    }
+    enumerator {
+      name: "TYPE_STREAM"
+      value: 4
+    }
+    enumerator {
+      name: "TYPE_COMMAND"
+      value: 5
+    }
+    enumerator {
+      name: "TYPE_EVENT"
+      value: 6
+    }
+  }
+}
+enumeration {
+  id: 0xfa876213
+  name: "xps_map_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "XPS_CPUS"
+    }
+    enumerator {
+      name: "XPS_RXQS"
+      value: 1
+    }
+    enumerator {
+      name: "XPS_MAPS_MAX"
+      value: 2
+    }
+  }
+}
+enumeration {
+  id: 0xd9f550d1
+  name: "zone_stat_item"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "NR_FREE_PAGES"
+    }
+    enumerator {
+      name: "NR_ZONE_LRU_BASE"
+      value: 1
+    }
+    enumerator {
+      name: "NR_ZONE_INACTIVE_ANON"
+      value: 1
+    }
+    enumerator {
+      name: "NR_ZONE_ACTIVE_ANON"
+      value: 2
+    }
+    enumerator {
+      name: "NR_ZONE_INACTIVE_FILE"
+      value: 3
+    }
+    enumerator {
+      name: "NR_ZONE_ACTIVE_FILE"
+      value: 4
+    }
+    enumerator {
+      name: "NR_ZONE_UNEVICTABLE"
+      value: 5
+    }
+    enumerator {
+      name: "NR_ZONE_WRITE_PENDING"
+      value: 6
+    }
+    enumerator {
+      name: "NR_MLOCK"
+      value: 7
+    }
+    enumerator {
+      name: "NR_BOUNCE"
+      value: 8
+    }
+    enumerator {
+      name: "NR_ZSPAGES"
+      value: 9
+    }
+    enumerator {
+      name: "NR_FREE_CMA_PAGES"
+      value: 10
+    }
+    enumerator {
+      name: "NR_VM_ZONE_STAT_ITEMS"
+      value: 11
+    }
+  }
+}
+enumeration {
+  id: 0x0b0164a7
+  name: "zone_type"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "ZONE_DMA32"
+    }
+    enumerator {
+      name: "ZONE_NORMAL"
+      value: 1
+    }
+    enumerator {
+      name: "ZONE_MOVABLE"
+      value: 2
+    }
+    enumerator {
+      name: "ZONE_DEVICE"
+      value: 3
+    }
+    enumerator {
+      name: "__MAX_NR_ZONES"
+      value: 4
+    }
+  }
+}
+enumeration {
+  id: 0x37900b11
+  name: "zs_mapmode"
+  definition {
+    underlying_type_id: 0x4585663f
+    enumerator {
+      name: "ZS_MM_RW"
+    }
+    enumerator {
+      name: "ZS_MM_RO"
+      value: 1
+    }
+    enumerator {
+      name: "ZS_MM_WO"
+      value: 2
+    }
+  }
+}
+function {
+  id: 0x00a508d8
+  return_type_id: 0x100a15ee
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x00ef1d84
+  return_type_id: 0x48b5725f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x00fe849f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x01014ac8
+  return_type_id: 0x48b5725f
+  parameter_id: 0x4585663f
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x010530e2
+  return_type_id: 0x3860f3c0
+  parameter_id: 0x12e6ffae
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x0108e41c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x4585663f
+  parameter_id: 0x37493e04
+  parameter_id: 0xb0c2eb21
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x012b29b0
+  return_type_id: 0x914dbfdc
+}
+function {
+  id: 0x013800d7
+  return_type_id: 0x48b5725f
+  parameter_id: 0x4585663f
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x0138cd02
+  return_type_id: 0x48b5725f
+  parameter_id: 0x4585663f
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x016f0c64
+  return_type_id: 0xa9403390
+  parameter_id: 0xe276adef
+  parameter_id: 0xe276adef
+  parameter_id: 0xe62ebf07
+  parameter_id: 0xb3e7bac9
+  parameter_id: 0xa9403390
+}
+function {
+  id: 0x019aa1b7
+  return_type_id: 0x48b5725f
+  parameter_id: 0x4585663f
+  parameter_id: 0x18ea6ae3
+}
+function {
+  id: 0x019bfd88
+  return_type_id: 0x48b5725f
+  parameter_id: 0x4585663f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x01a85b76
+  return_type_id: 0xbdd18903
+}
+function {
+  id: 0x01c7a9cc
+  return_type_id: 0x34544a3f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3747dc62
+}
+function {
+  id: 0x01dc01ed
+  return_type_id: 0x48b5725f
+  parameter_id: 0x4585663f
+  parameter_id: 0x09427c40
+}
+function {
+  id: 0x01ecbbc0
+  return_type_id: 0x48b5725f
+  parameter_id: 0x4585663f
+  parameter_id: 0x07944f4b
+  parameter_id: 0x295c7202
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x01f9081c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x02396084
+  return_type_id: 0x48b5725f
+  parameter_id: 0x4585663f
+  parameter_id: 0xf01a263d
+}
+function {
+  id: 0x023bf562
+  return_type_id: 0x37edd07b
+  parameter_id: 0x5c2e9379
+  parameter_id: 0x33d0e528
+}
+function {
+  id: 0x026c1696
+  return_type_id: 0x28136e4b
+  parameter_id: 0x347303b4
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x0280f6cc
+  return_type_id: 0x48b5725f
+  parameter_id: 0x498e6bfd
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x0286be66
+  return_type_id: 0x0483e6f8
+  parameter_id: 0xf1a6dfed
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x02968dbf
+  return_type_id: 0x0483e6f8
+  parameter_id: 0xf1a6dfed
+  parameter_id: 0x3e10b518
+  parameter_id: 0xe5e56f65
+}
+function {
+  id: 0x031ed619
+  return_type_id: 0xe276adef
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x03232434
+  return_type_id: 0x28136e4b
+  parameter_id: 0x347303b4
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x032333c6
+  return_type_id: 0x48b5725f
+  parameter_id: 0x4585663f
+  parameter_id: 0xb0c2eb21
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x033c2ce9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x4585663f
+  parameter_id: 0xb0c2eb21
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x034f6ce3
+  return_type_id: 0x34544a3f
+  parameter_id: 0x3747dc62
+}
+function {
+  id: 0x036dc753
+  return_type_id: 0x2821daec
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x03884347
+  return_type_id: 0x2821daec
+  parameter_id: 0x0258f96e
+  parameter_id: 0x0490bb4a
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x043864e3
+  return_type_id: 0x181ee594
+  parameter_id: 0xe90b32b7
+}
+function {
+  id: 0x044f79a4
+  return_type_id: 0xbdd18903
+  parameter_id: 0x14abdd00
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x0456f72c
+  return_type_id: 0xe2774cab
+  parameter_id: 0x24d65b62
+}
+function {
+  id: 0x04ce0b6f
+  return_type_id: 0x914dbfdc
+  parameter_id: 0x11e6864c
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x055da682
+  return_type_id: 0x3c5f865b
+  parameter_id: 0x1c3dbe5a
+  parameter_id: 0x6720d32f
+  parameter_id: 0x33dd2e45
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x057364d7
+  return_type_id: 0x0fabaf3b
+  parameter_id: 0x368487be
+}
+function {
+  id: 0x05993839
+  return_type_id: 0x0798f334
+  parameter_id: 0x09427c40
+  parameter_id: 0x25db57c0
+}
+function {
+  id: 0x0643b7f0
+  return_type_id: 0x17fa285b
+  parameter_id: 0x3e10b518
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x06a584d3
+  return_type_id: 0x9565759f
+  parameter_id: 0x11e6864c
+  parameter_id: 0x31e374a8
+  parameter_id: 0x9565759f
+  parameter_id: 0x9565759f
+  parameter_id: 0x9565759f
+}
+function {
+  id: 0x06becdf2
+  return_type_id: 0x13f8b706
+  parameter_id: 0x3e10b518
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x0787023a
+  return_type_id: 0xbdd18903
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x07a79f04
+  return_type_id: 0xbdd18903
+  parameter_id: 0x1b084782
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x07f804fa
+  return_type_id: 0x48b5725f
+  parameter_id: 0x5d8155a5
+}
+function {
+  id: 0x082ccdd1
+  return_type_id: 0x3860f3c0
+  parameter_id: 0x3b04bead
+  parameter_id: 0x1d5934ce
+  parameter_id: 0x00a43052
+}
+function {
+  id: 0x085a36de
+  return_type_id: 0x3860f3c0
+  parameter_id: 0x3b04bead
+  parameter_id: 0x00c83ba6
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x085aa0e0
+  return_type_id: 0x3860f3c0
+  parameter_id: 0x3b04bead
+  parameter_id: 0x00c83ba6
+}
+function {
+  id: 0x08cce614
+  return_type_id: 0x48b5725f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x091a93fa
+  return_type_id: 0xa98dedee
+  parameter_id: 0x18019702
+  parameter_id: 0x054f691a
+}
+function {
+  id: 0x091f3027
+  return_type_id: 0x48b5725f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x13d55fea
+}
+function {
+  id: 0x09506558
+  return_type_id: 0x48b5725f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x098158fd
+  return_type_id: 0x48b5725f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x344f6972
+}
+function {
+  id: 0x098dcb5d
+  return_type_id: 0xbdd18903
+  parameter_id: 0x2e94a1e1
+  parameter_id: 0xe02e14d6
+}
+function {
+  id: 0x099500f1
+  return_type_id: 0x48b5725f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x31596a61
+}
+function {
+  id: 0x099db0ca
+  return_type_id: 0x48b5725f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x09b6f734
+  return_type_id: 0x48b5725f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x39a49b1e
+}
+function {
+  id: 0x09b7dbae
+  return_type_id: 0x48b5725f
+  parameter_id: 0x603895d5
+  parameter_id: 0x498e6bfd
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x310ec01d
+}
+function {
+  id: 0x09d3c362
+  return_type_id: 0x48b5725f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x20e98e97
+}
+function {
+  id: 0x09d434d8
+  return_type_id: 0x48b5725f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x21d7b2e4
+  parameter_id: 0x0c3d2d88
+}
+function {
+  id: 0x09e5a51f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x64f641d4
+  parameter_id: 0x10193e4a
+}
+function {
+  id: 0x0a34c3a2
+  return_type_id: 0x3829c378
+  parameter_id: 0x0c0dfa25
+}
+function {
+  id: 0x0a5988e9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6720d32f
+  parameter_id: 0x091f4a0b
+  parameter_id: 0x3286774f
+}
+function {
+  id: 0x0a9e8df2
+  return_type_id: 0x079ff791
+  parameter_id: 0x3e10b518
+  parameter_id: 0x0258f96e
+  parameter_id: 0x17244d16
+  parameter_id: 0x3a99572b
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x0ad050bd
+  return_type_id: 0x33756485
+  parameter_id: 0xedf277ba
+}
+function {
+  id: 0x0ad6ec83
+  return_type_id: 0x2821daec
+  parameter_id: 0x24954792
+  parameter_id: 0x3c01aef6
+}
+function {
+  id: 0x0adc3a0d
+  return_type_id: 0x30650ba6
+  parameter_id: 0x1d19a9d5
+}
+function {
+  id: 0x0b1cd712
+  return_type_id: 0x3c2fe980
+  parameter_id: 0x126add1c
+}
+function {
+  id: 0x0b8955af
+  return_type_id: 0x3860f3c0
+  parameter_id: 0x3b04bead
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x0bdc9e9d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x054f691a
+  parameter_id: 0x3b461cc8
+  parameter_id: 0x3b461cc8
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x0be9b673
+  return_type_id: 0x48b5725f
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x054f691a
+  parameter_id: 0xe276adef
+  parameter_id: 0xe276adef
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x0bfc976c
+  return_type_id: 0x3860f3c0
+  parameter_id: 0x31c8b544
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x0c049f24
+  return_type_id: 0x3c5315c3
+  parameter_id: 0x336e8c54
+  parameter_id: 0x3c5315c3
+}
+function {
+  id: 0x0c431641
+  return_type_id: 0x343ebce3
+  parameter_id: 0x3b04bead
+  parameter_id: 0xf435685e
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0x0c50d752
+  return_type_id: 0x303f8188
+  parameter_id: 0x23f09c34
+}
+function {
+  id: 0x0c5304b6
+  return_type_id: 0x343ebce3
+  parameter_id: 0x343ebce3
+}
+function {
+  id: 0x0cd36f30
+  return_type_id: 0x33756485
+  parameter_id: 0xf1a6dfed
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x0d4395f8
+  return_type_id: 0x34544a3f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3747dc62
+}
+function {
+  id: 0x0d750257
+  return_type_id: 0xbdd18903
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x0d9b3569
+  return_type_id: 0x914dbfdc
+  parameter_id: 0x32a623d7
+  parameter_id: 0x054f691a
+  parameter_id: 0x32a623d7
+}
+function {
+  id: 0x0d9ea2ee
+  return_type_id: 0xe2774cab
+  parameter_id: 0x03f70c68
+}
+function {
+  id: 0x0dc57aa8
+  return_type_id: 0x33756485
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x0dcd58a4
+  return_type_id: 0x914dbfdc
+  parameter_id: 0x3399c453
+}
+function {
+  id: 0x0dd33a8c
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3ea6bd8c
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x0b06c88d
+  parameter_id: 0x2f73da3b
+}
+function {
+  id: 0x0e24970c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x7b64642a
+  parameter_id: 0x1977e57b
+}
+function {
+  id: 0x0e2b9889
+  return_type_id: 0x100a15ee
+  parameter_id: 0x0258f96e
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x0e39f770
+  return_type_id: 0x48b5725f
+  parameter_id: 0x7b64642a
+  parameter_id: 0x1e2ffa47
+}
+function {
+  id: 0x0ea86f7f
+  return_type_id: 0x28136e4b
+  parameter_id: 0x0258f96e
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x0ee8ead6
+  return_type_id: 0x914dbfdc
+  parameter_id: 0x397d00ab
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x0ef7ccf3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x79be7582
+}
+function {
+  id: 0x0f502b97
+  return_type_id: 0x100a15ee
+  parameter_id: 0x0258f96e
+  parameter_id: 0x39cc14ac
+}
+function {
+  id: 0x0fe1d65c
+  return_type_id: 0x17dabdcd
+  parameter_id: 0x33baebd5
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x0fe6e820
+  return_type_id: 0x28136e4b
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x0fed72dc
+  return_type_id: 0x343ebce3
+  parameter_id: 0x3b04bead
+  parameter_id: 0x1c3dbe5a
+}
+function {
+  id: 0x10012374
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x0258f96e
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x1001440a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x03caf08d
+}
+function {
+  id: 0x10035ee9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x026c3dea
+}
+function {
+  id: 0x1004d41e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x064d6086
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x100504e2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0130219f
+  parameter_id: 0x345745bd
+}
+function {
+  id: 0x1009f18b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x02f4fda6
+  parameter_id: 0x0b27dc43
+}
+function {
+  id: 0x100bdee9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x038de60c
+  parameter_id: 0x1c3dbe5a
+}
+function {
+  id: 0x100ce912
+  return_type_id: 0x48b5725f
+  parameter_id: 0x00c72527
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x100e6fc8
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x100f484f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x025c6771
+}
+function {
+  id: 0x10100c3c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x04537b8c
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x10109a52
+  return_type_id: 0x48b5725f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x3e6884d4
+}
+function {
+  id: 0x10121220
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0d7ce7cc
+  parameter_id: 0xf435685e
+  parameter_id: 0x18bd6530
+  parameter_id: 0xe02e14d6
+}
+function {
+  id: 0x1014c641
+  return_type_id: 0x48b5725f
+  parameter_id: 0x01e0b0cf
+  parameter_id: 0x3d2ef874
+}
+function {
+  id: 0x1015a754
+  return_type_id: 0x48b5725f
+  parameter_id: 0x066f8d7f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x10176329
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x06433852
+}
+function {
+  id: 0x10189f78
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0359763e
+  parameter_id: 0x11cffa09
+  parameter_id: 0x4585663f
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x1019e837
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0206e690
+}
+function {
+  id: 0x10219d88
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x0bfc9031
+}
+function {
+  id: 0x102208a7
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x0bdd2cf8
+  parameter_id: 0x0e8b1f30
+  parameter_id: 0x2dcd339f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x10229585
+  return_type_id: 0x48b5725f
+  parameter_id: 0x02eb105a
+}
+function {
+  id: 0x10231046
+  return_type_id: 0x48b5725f
+  parameter_id: 0x02ed0755
+}
+function {
+  id: 0x10256efa
+  return_type_id: 0x48b5725f
+  parameter_id: 0x02f4fda6
+}
+function {
+  id: 0x1026309b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x026525e9
+  parameter_id: 0x09ca1cbc
+}
+function {
+  id: 0x1026a9f1
+  return_type_id: 0x48b5725f
+  parameter_id: 0x015f6fbc
+  parameter_id: 0x3e10b518
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x10273360
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x0b27dc43
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+  parameter_id: 0xf1a6dfed
+  parameter_id: 0x0fcc8cc6
+  parameter_id: 0x0f3dfb90
+}
+function {
+  id: 0x10275b4b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x0a4d20f4
+}
+function {
+  id: 0x1028489f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x00dd92af
+  parameter_id: 0x21df69d0
+}
+function {
+  id: 0x1028d82e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x054f691a
+  parameter_id: 0x78d4fef9
+}
+function {
+  id: 0x10290027
+  return_type_id: 0x48b5725f
+  parameter_id: 0x01950729
+  parameter_id: 0x35041fa7
+}
+function {
+  id: 0x102a1547
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x0bdd2cf8
+  parameter_id: 0x2db325ff
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x102ab9fb
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x0bdd2cf8
+  parameter_id: 0x2dcd339f
+  parameter_id: 0x347303b4
+}
+function {
+  id: 0x102bb271
+  return_type_id: 0xd5df6730
+}
+function {
+  id: 0x102ddf3d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x04880557
+  parameter_id: 0x6720d32f
+  parameter_id: 0x2c32dd96
+}
+function {
+  id: 0x102e21e5
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x1200e2aa
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x102e93ac
+  return_type_id: 0x48b5725f
+  parameter_id: 0x06835e9c
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x102f3bef
+  return_type_id: 0x48b5725f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x326663cd
+  parameter_id: 0x3e6884d4
+}
+function {
+  id: 0x102fd31b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0355dc72
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x102fe03c
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x1330389b
+  parameter_id: 0x0483e6f8
+}
+function {
+  id: 0x1034b77f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x0f3dfb90
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x10367ad4
+  return_type_id: 0x48b5725f
+  parameter_id: 0x02b8ad1f
+}
+function {
+  id: 0x10393b5c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x04f7a60d
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1039da16
+  return_type_id: 0x48b5725f
+  parameter_id: 0x02862e14
+}
+function {
+  id: 0x1043ff6b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x00b7947f
+  parameter_id: 0x3d92f9c7
+}
+function {
+  id: 0x10447b88
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x1285100d
+}
+function {
+  id: 0x104952fa
+  return_type_id: 0x48b5725f
+  parameter_id: 0x00be4281
+  parameter_id: 0x3e10b518
+  parameter_id: 0x1b44744f
+}
+function {
+  id: 0x10497fda
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x11c404ba
+}
+function {
+  id: 0x104c9db8
+  return_type_id: 0x48b5725f
+  parameter_id: 0x035330ac
+}
+function {
+  id: 0x104d268f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0355dc72
+}
+function {
+  id: 0x104d4296
+  return_type_id: 0x48b5725f
+  parameter_id: 0x03d5ac6b
+  parameter_id: 0x0e7d50ff
+  parameter_id: 0x6720d32f
+  parameter_id: 0x115a10f4
+}
+function {
+  id: 0x104de9a9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0524edd8
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x104e479f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x100a15ee
+}
+function {
+  id: 0x104fd6b8
+  return_type_id: 0x48b5725f
+  parameter_id: 0x054f691a
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x104fea57
+  return_type_id: 0x48b5725f
+  parameter_id: 0x00b7947f
+  parameter_id: 0x3d92f9c7
+  parameter_id: 0x3054f2d7
+}
+function {
+  id: 0x1051708f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x030b9acf
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1052519d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x1052a115
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+  parameter_id: 0xcd84e3cd
+}
+function {
+  id: 0x1053a2da
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x11cffa09
+  parameter_id: 0x6720d32f
+  parameter_id: 0xcd84e3cd
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x1053ae07
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x11cffa09
+  parameter_id: 0x6720d32f
+  parameter_id: 0xcd84e3cd
+}
+function {
+  id: 0x10548979
+  return_type_id: 0x48b5725f
+  parameter_id: 0x00b7947f
+  parameter_id: 0x384f7d7c
+}
+function {
+  id: 0x10563618
+  return_type_id: 0x48b5725f
+  parameter_id: 0x00c83ba6
+  parameter_id: 0x3f1a5886
+}
+function {
+  id: 0x10570899
+  return_type_id: 0x48b5725f
+  parameter_id: 0x054f691a
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x10572c13
+  return_type_id: 0x48b5725f
+  parameter_id: 0x054f691a
+  parameter_id: 0x6720d32f
+  parameter_id: 0x06835e9c
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1058ca17
+  return_type_id: 0x48b5725f
+  parameter_id: 0x054f691a
+  parameter_id: 0x6720d32f
+  parameter_id: 0x391f15ea
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x105ab720
+  return_type_id: 0x48b5725f
+  parameter_id: 0x030b9acf
+}
+function {
+  id: 0x105b48b9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x00c72527
+  parameter_id: 0x3f0185ef
+  parameter_id: 0x3f0185ef
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x105cac82
+  return_type_id: 0x48b5725f
+  parameter_id: 0x00b7947f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x4585663f
+  parameter_id: 0x0ee0d5d1
+}
+function {
+  id: 0x105fb374
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x120540d1
+  parameter_id: 0x0483e6f8
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x10605221
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0537fb37
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x10621769
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x1330389b
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x10689f5d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x03c33b38
+}
+function {
+  id: 0x1068b9cd
+  return_type_id: 0x48b5725f
+  parameter_id: 0x00878020
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x106aedb0
+  return_type_id: 0x48b5725f
+  parameter_id: 0x03caf08d
+}
+function {
+  id: 0x106bcca0
+  return_type_id: 0x48b5725f
+  parameter_id: 0x03ce74cd
+}
+function {
+  id: 0x106c9a5c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x107162e7
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x1fc34bc2
+}
+function {
+  id: 0x10776911
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x1e41b656
+}
+function {
+  id: 0x107966af
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0aa6efc8
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x107b2810
+  return_type_id: 0x48b5725f
+  parameter_id: 0x038de60c
+}
+function {
+  id: 0x107e76aa
+  return_type_id: 0x48b5725f
+  parameter_id: 0x054f691a
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x10815f18
+  return_type_id: 0x48b5725f
+  parameter_id: 0x08113aaf
+  parameter_id: 0x8750081a
+}
+function {
+  id: 0x108d779b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x00c72527
+  parameter_id: 0x0fec25a9
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x108f8fb0
+  return_type_id: 0x48b5725f
+  parameter_id: 0x00374d67
+  parameter_id: 0x06835e9c
+}
+function {
+  id: 0x109019ae
+  return_type_id: 0x48b5725f
+  parameter_id: 0x030b9acf
+  parameter_id: 0x3155eebe
+  parameter_id: 0x3654c061
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x1093c795
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x276a1779
+}
+function {
+  id: 0x10943c29
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x276a1779
+  parameter_id: 0x1bb6a471
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1094b37f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x06835e9c
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1095fa8e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x26e55184
+}
+function {
+  id: 0x10985193
+  return_type_id: 0x48b5725f
+}
+function {
+  id: 0x10985fcc
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x25653b02
+  parameter_id: 0x0e93a255
+}
+function {
+  id: 0x109aa0ea
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0206e690
+  parameter_id: 0x20d23755
+}
+function {
+  id: 0x109ba67a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x000fdfa4
+}
+function {
+  id: 0x109bed40
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x2560a232
+}
+function {
+  id: 0x109d0c8e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x01ae1e33
+  parameter_id: 0x1bb6a471
+}
+function {
+  id: 0x10a0d511
+  return_type_id: 0x48b5725f
+  parameter_id: 0x06901f39
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x10a1c8f2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x00e66585
+}
+function {
+  id: 0x10a7df71
+  return_type_id: 0x48b5725f
+  parameter_id: 0x05c2a3ca
+  parameter_id: 0x53c98416
+}
+function {
+  id: 0x10a998da
+  return_type_id: 0x48b5725f
+  parameter_id: 0x00c72527
+}
+function {
+  id: 0x10a9c034
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x2f99f236
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x10aa5f7a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x00c83ba6
+}
+function {
+  id: 0x10ab38c6
+  return_type_id: 0x48b5725f
+  parameter_id: 0x01222f7d
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x10ae91e8
+  return_type_id: 0x48b5725f
+  parameter_id: 0x060cf413
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x10aef91d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x00daa23b
+}
+function {
+  id: 0x10af3538
+  return_type_id: 0x48b5725f
+  parameter_id: 0x00dd92af
+}
+function {
+  id: 0x10afee98
+  return_type_id: 0x48b5725f
+  parameter_id: 0x00defc2c
+}
+function {
+  id: 0x10b15d87
+  return_type_id: 0x48b5725f
+  parameter_id: 0x00a43052
+}
+function {
+  id: 0x10b5b48c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x00b7947f
+}
+function {
+  id: 0x10b7c133
+  return_type_id: 0x48b5725f
+  parameter_id: 0x00be4281
+}
+function {
+  id: 0x10b9d05d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x2b3810bf
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x10bce19f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0092c032
+}
+function {
+  id: 0x10c02563
+  return_type_id: 0x48b5725f
+  parameter_id: 0x030b9acf
+  parameter_id: 0x26a490c7
+}
+function {
+  id: 0x10c35fd7
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x334c07d5
+}
+function {
+  id: 0x10c3ba5a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x10c45080
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3b4ce03a
+  parameter_id: 0x9565759f
+  parameter_id: 0x9565759f
+}
+function {
+  id: 0x10c48dc9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x30d2f50a
+  parameter_id: 0x26a75523
+}
+function {
+  id: 0x10c54574
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x32caaf24
+}
+function {
+  id: 0x10c55248
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x32cf602c
+}
+function {
+  id: 0x10c7c629
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x326a784b
+}
+function {
+  id: 0x10ca5108
+  return_type_id: 0x48b5725f
+  parameter_id: 0x079ff791
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x10cc1a70
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x309d6e18
+}
+function {
+  id: 0x10cc241d
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x117a8adb
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x0379c823
+  parameter_id: 0x0b3a3706
+  parameter_id: 0xf435685e
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x10ce1a6e
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x117a8adb
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x0483e6f8
+  parameter_id: 0xf435685e
+  parameter_id: 0x0379c823
+}
+function {
+  id: 0x10cf8a7c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x015f6fbc
+}
+function {
+  id: 0x10d0a3de
+  return_type_id: 0x48b5725f
+  parameter_id: 0x07bd3565
+  parameter_id: 0x69efc53e
+}
+function {
+  id: 0x10d0da4c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x01222f7d
+}
+function {
+  id: 0x10d10edf
+  return_type_id: 0x48b5725f
+  parameter_id: 0x079ff791
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x10d43da5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0206e690
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x10d459f4
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0130219f
+}
+function {
+  id: 0x10d6a724
+  return_type_id: 0x48b5725f
+  parameter_id: 0x03038214
+  parameter_id: 0x2c456d6d
+  parameter_id: 0xfc0e1dbd
+}
+function {
+  id: 0x10dd9e4d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x054f691a
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x10df3ba9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x00c83ba6
+  parameter_id: 0x1d5934ce
+}
+function {
+  id: 0x10e07da0
+  return_type_id: 0x48b5725f
+  parameter_id: 0x01e0b0cf
+}
+function {
+  id: 0x10e0ceea
+  return_type_id: 0x48b5725f
+  parameter_id: 0x019e2530
+  parameter_id: 0x07c58d49
+}
+function {
+  id: 0x10e42ea8
+  return_type_id: 0x48b5725f
+  parameter_id: 0x01f1fcec
+}
+function {
+  id: 0x10e49eaa
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x1330389b
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x10e503e9
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x106029c6
+  parameter_id: 0x0379c823
+  parameter_id: 0x0b3a3706
+  parameter_id: 0xf435685e
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x10e93841
+  return_type_id: 0x48b5725f
+  parameter_id: 0x01c5a749
+}
+function {
+  id: 0x10e9afeb
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x39f008d1
+}
+function {
+  id: 0x10e9e7a3
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x106029c6
+  parameter_id: 0x06835e9c
+  parameter_id: 0x6720d32f
+  parameter_id: 0xf435685e
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x10ea139f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0x10ee407c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x078316ff
+  parameter_id: 0x6720d32f
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x10ef2ae7
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x38514bfb
+}
+function {
+  id: 0x10f0f603
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3fa672fd
+}
+function {
+  id: 0x10f1f3b8
+  return_type_id: 0x48b5725f
+  parameter_id: 0x01a688ae
+}
+function {
+  id: 0x10f21a77
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0x120540d1
+  parameter_id: 0x2d8ee262
+}
+function {
+  id: 0x10f3d61f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x01ae1e33
+}
+function {
+  id: 0x10f7e72f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e6239e1
+}
+function {
+  id: 0x10f88309
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x1aee9939
+  parameter_id: 0xac0d3a85
+  parameter_id: 0x0483e6f8
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x10f8a029
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x1330389b
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x10f906de
+  return_type_id: 0x48b5725f
+  parameter_id: 0x019e2530
+  parameter_id: 0x07c58d49
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x10f95469
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3dcee85d
+}
+function {
+  id: 0x10fabb94
+  return_type_id: 0x48b5725f
+  parameter_id: 0x07f9a52e
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x10fc4d27
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3c88bbfa
+}
+function {
+  id: 0x10feecf9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x05c2a3ca
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x10ff48b7
+  return_type_id: 0x48b5725f
+  parameter_id: 0x078316ff
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x10ffd8df
+  return_type_id: 0x48b5725f
+  parameter_id: 0x019e2530
+}
+function {
+  id: 0x1101283e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0665e6b6
+}
+function {
+  id: 0x1101d71f
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x156a41de
+  parameter_id: 0x2cdbb77a
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x110253ce
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0665e6b6
+  parameter_id: 0x00defc2c
+}
+function {
+  id: 0x11032587
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x4585663f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x1103b2cc
+  return_type_id: 0x48b5725f
+  parameter_id: 0x066f8d7f
+}
+function {
+  id: 0x11044104
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0611572c
+  parameter_id: 0x0611572c
+}
+function {
+  id: 0x1107bb82
+  return_type_id: 0x48b5725f
+  parameter_id: 0x054f691a
+  parameter_id: 0x35dbe029
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x11085c29
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0611572c
+  parameter_id: 0x0611572c
+  parameter_id: 0x3074b701
+}
+function {
+  id: 0x110a9f39
+  return_type_id: 0x48b5725f
+  parameter_id: 0x078316ff
+  parameter_id: 0x1c27fc93
+  parameter_id: 0x0a539f05
+}
+function {
+  id: 0x110b09b2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0x110d554e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x06541377
+}
+function {
+  id: 0x110e6a6f
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+  parameter_id: 0x0379c823
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x111b6c97
+  return_type_id: 0x48b5725f
+  parameter_id: 0x060cf413
+}
+function {
+  id: 0x111d59e3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x079ff791
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x111e5509
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x4585663f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x11248ef2
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x156a41de
+  parameter_id: 0x2cdbb77a
+  parameter_id: 0xf435685e
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x11251271
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x156a41de
+  parameter_id: 0x2cdbb77a
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x11252cf3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x05c2a3ca
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x112937c0
+  return_type_id: 0x48b5725f
+  parameter_id: 0x00b7947f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x112fdfca
+  return_type_id: 0x48b5725f
+  parameter_id: 0x02eb105a
+  parameter_id: 0x4585663f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x1130fff4
+  return_type_id: 0x48b5725f
+  parameter_id: 0x00b7947f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1132058e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x054f691a
+  parameter_id: 0x3e6396e0
+}
+function {
+  id: 0x113535b8
+  return_type_id: 0x48b5725f
+  parameter_id: 0x06901f39
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x11388634
+  return_type_id: 0x48b5725f
+  parameter_id: 0x06835e9c
+}
+function {
+  id: 0x113c565d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x06901f39
+}
+function {
+  id: 0x113d74b5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x078316ff
+  parameter_id: 0x15d87158
+  parameter_id: 0x4a057220
+}
+function {
+  id: 0x1140a899
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0665e6b6
+  parameter_id: 0x106029c6
+}
+function {
+  id: 0x11473539
+  return_type_id: 0x48b5725f
+  parameter_id: 0x08bd7371
+  parameter_id: 0xfc0e1dbd
+}
+function {
+  id: 0x114b9716
+  return_type_id: 0x48b5725f
+  parameter_id: 0x074f1a14
+}
+function {
+  id: 0x1154b37f
+  return_type_id: 0x0bfc9031
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x115a73a0
+  return_type_id: 0x48b5725f
+  parameter_id: 0x06835e9c
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x11628195
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0665e6b6
+  parameter_id: 0x18ea6ae3
+}
+function {
+  id: 0x1162b103
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0665e6b6
+  parameter_id: 0x18e64f74
+}
+function {
+  id: 0x1163ddaa
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0665e6b6
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x1164f591
+  return_type_id: 0x0bfc9031
+  parameter_id: 0x0258f96e
+  parameter_id: 0x347303b4
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1164fa41
+  return_type_id: 0x48b5725f
+  parameter_id: 0x07f2af49
+}
+function {
+  id: 0x11691052
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0665e6b6
+  parameter_id: 0x1bc6afb1
+  parameter_id: 0x1f204c4e
+  parameter_id: 0x3caf1899
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x117081d5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x07bd3565
+  parameter_id: 0x0ea41150
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x1172892f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0d7ce7cc
+  parameter_id: 0xad7853f7
+}
+function {
+  id: 0x1172b988
+  return_type_id: 0x0bfc9031
+  parameter_id: 0x0258f96e
+  parameter_id: 0x347303b4
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x1173e8d7
+  return_type_id: 0x0bfc9031
+  parameter_id: 0x0258f96e
+  parameter_id: 0x347303b4
+  parameter_id: 0x3b55ca81
+}
+function {
+  id: 0x1178942c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x078316ff
+}
+function {
+  id: 0x117b2038
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0665e6b6
+  parameter_id: 0x1e820193
+}
+function {
+  id: 0x117e6d5e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0798f334
+}
+function {
+  id: 0x117fac77
+  return_type_id: 0x48b5725f
+  parameter_id: 0x079ff791
+}
+function {
+  id: 0x1181c0b9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x05c2a3ca
+  parameter_id: 0x1bf16028
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x1183ff2d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x078316ff
+  parameter_id: 0x3edac04c
+}
+function {
+  id: 0x1187eea3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x079ff791
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x11899381
+  return_type_id: 0x48b5725f
+  parameter_id: 0x06835e9c
+  parameter_id: 0x2c456d6d
+}
+function {
+  id: 0x118a06ed
+  return_type_id: 0x48b5725f
+  parameter_id: 0x023b50cb
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x118e7b5d
+  return_type_id: 0x9519135f
+  parameter_id: 0x064d6086
+  parameter_id: 0x4585663f
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x1192ec84
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x119619d3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x6720d32f
+  parameter_id: 0x13d55fea
+}
+function {
+  id: 0x1197e2e5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x043ecddb
+}
+function {
+  id: 0x119baefc
+  return_type_id: 0x48b5725f
+  parameter_id: 0x04f7a60d
+  parameter_id: 0x0d107c2b
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x119c2286
+  return_type_id: 0x48b5725f
+  parameter_id: 0x054f691a
+  parameter_id: 0x13a69eb7
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3ec77a5e
+}
+function {
+  id: 0x119fef8e
+  return_type_id: 0x0bfc9031
+  parameter_id: 0x0258f96e
+  parameter_id: 0x0cc78943
+}
+function {
+  id: 0x11a19ef5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0b27dc43
+  parameter_id: 0xfc0e1dbd
+}
+function {
+  id: 0x11a3a114
+  return_type_id: 0x48b5725f
+  parameter_id: 0x00b7947f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x11a59ba3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x04f728c1
+}
+function {
+  id: 0x11a5b810
+  return_type_id: 0x48b5725f
+  parameter_id: 0x04f7a60d
+}
+function {
+  id: 0x11a7481f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x00a43052
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x11a8cf1e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x04c27a37
+}
+function {
+  id: 0x11a97e41
+  return_type_id: 0x48b5725f
+  parameter_id: 0x054f691a
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x11a9e681
+  return_type_id: 0x48b5725f
+  parameter_id: 0x054f691a
+  parameter_id: 0x189b551a
+}
+function {
+  id: 0x11aaf502
+  return_type_id: 0x48b5725f
+  parameter_id: 0x04ca9246
+}
+function {
+  id: 0x11af89f2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x04b193cc
+  parameter_id: 0x06ef24ac
+}
+function {
+  id: 0x11b1f76e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0c2e195c
+  parameter_id: 0x8bbf7ced
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x11b2c04d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x00b7947f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x11b3c739
+  return_type_id: 0x48b5725f
+  parameter_id: 0x00b7947f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x11b3d658
+  return_type_id: 0x48b5725f
+  parameter_id: 0x00b7947f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x11b43560
+  return_type_id: 0x48b5725f
+  parameter_id: 0x04b193cc
+}
+function {
+  id: 0x11b644af
+  return_type_id: 0x48b5725f
+  parameter_id: 0x054f691a
+  parameter_id: 0x1f73dead
+}
+function {
+  id: 0x11b81220
+  return_type_id: 0x48b5725f
+  parameter_id: 0x04810ecd
+}
+function {
+  id: 0x11b8a82d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0483e6f8
+}
+function {
+  id: 0x11ba77d9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x04f7a60d
+  parameter_id: 0x054f691a
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x11bb92b7
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x11bc7f41
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0490bb4a
+}
+function {
+  id: 0x11be371a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0665e6b6
+  parameter_id: 0x2fc7c937
+}
+function {
+  id: 0x11be9b1c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x054f691a
+  parameter_id: 0x1d44326e
+}
+function {
+  id: 0x11bf0236
+  return_type_id: 0x48b5725f
+  parameter_id: 0x049d4e97
+}
+function {
+  id: 0x11c00471
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0561578b
+}
+function {
+  id: 0x11c013b1
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0665e6b6
+  parameter_id: 0x3e10b518
+  parameter_id: 0xe5e56f65
+}
+function {
+  id: 0x11c092fa
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0537fb37
+  parameter_id: 0x054f691a
+}
+function {
+  id: 0x11c0e0ca
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0562c566
+}
+function {
+  id: 0x11c36c13
+  return_type_id: 0x48b5725f
+  parameter_id: 0x056cf603
+}
+function {
+  id: 0x11c3b1da
+  return_type_id: 0x48b5725f
+  parameter_id: 0x00b7947f
+  parameter_id: 0x5d8155a5
+}
+function {
+  id: 0x11c6c94b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0c2e195c
+  parameter_id: 0x9547a3da
+}
+function {
+  id: 0x11c86df7
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0355dc72
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x11cb8bd5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x054f691a
+}
+function {
+  id: 0x11cf2aed
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0687edf5
+  parameter_id: 0x3e10b518
+  parameter_id: 0x384f7d7c
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x11cfb4cd
+  return_type_id: 0x48b5725f
+  parameter_id: 0x00878020
+  parameter_id: 0x5d8155a5
+}
+function {
+  id: 0x11d02068
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0665e6b6
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x11d16ae5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0524edd8
+}
+function {
+  id: 0x11d1a5c3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0355dc72
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x11d3a4b4
+  return_type_id: 0x48b5725f
+  parameter_id: 0x054f691a
+  parameter_id: 0x060bd86d
+}
+function {
+  id: 0x11d5af5e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0537fb37
+}
+function {
+  id: 0x11d7598d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x04b193cc
+  parameter_id: 0x18bd6530
+  parameter_id: 0x0665e6b6
+}
+function {
+  id: 0x11d79ccb
+  return_type_id: 0x48b5725f
+  parameter_id: 0x04b193cc
+  parameter_id: 0x18ea6ae3
+}
+function {
+  id: 0x11d85f9e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x05003835
+}
+function {
+  id: 0x11ddd684
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0611572c
+  parameter_id: 0x3074b701
+}
+function {
+  id: 0x11de62ce
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0611572c
+  parameter_id: 0x3074b701
+  parameter_id: 0x0ed129e6
+}
+function {
+  id: 0x11de7bea
+  return_type_id: 0x48b5725f
+  parameter_id: 0x064d6086
+  parameter_id: 0x3104c07e
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x11e015cb
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0665e6b6
+  parameter_id: 0x384f7d7c
+}
+function {
+  id: 0x11e0e4b9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x064d6086
+  parameter_id: 0x3ea31487
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x11e1274d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0665e6b6
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x11e189a0
+  return_type_id: 0x48b5725f
+  parameter_id: 0x06835e9c
+  parameter_id: 0x3643e527
+}
+function {
+  id: 0x11e75010
+  return_type_id: 0x48b5725f
+  parameter_id: 0x03e92bef
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x11e8f961
+  return_type_id: 0x48b5725f
+  parameter_id: 0x05c2a3ca
+}
+function {
+  id: 0x11ebebf2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x078316ff
+  parameter_id: 0x24dff7bd
+}
+function {
+  id: 0x11ec3686
+  return_type_id: 0x48b5725f
+  parameter_id: 0x09427c40
+  parameter_id: 0xc93e017b
+}
+function {
+  id: 0x11ecf47b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x054f691a
+  parameter_id: 0x054f691a
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x11f553a6
+  return_type_id: 0x48b5725f
+  parameter_id: 0x06835e9c
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x11f90280
+  return_type_id: 0x48b5725f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x4585663f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x11f96aea
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0665e6b6
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x11fe33ba
+  return_type_id: 0x48b5725f
+  parameter_id: 0x059988a7
+}
+function {
+  id: 0x11fec6c8
+  return_type_id: 0x48b5725f
+  parameter_id: 0x064d6086
+  parameter_id: 0x3ea31487
+  parameter_id: 0x3ea31487
+  parameter_id: 0x3ea31487
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x11ff3b30
+  return_type_id: 0x48b5725f
+  parameter_id: 0x064d6086
+  parameter_id: 0x3ea31487
+  parameter_id: 0x3ea31487
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x12051b11
+  return_type_id: 0x48b5725f
+  parameter_id: 0x09427c40
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x1207e43b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0e2680c2
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x120e3950
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf435685e
+  parameter_id: 0x0379c823
+}
+function {
+  id: 0x1210f89b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0a22a423
+}
+function {
+  id: 0x1213f72a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0a2e9ae5
+}
+function {
+  id: 0x12186f16
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0917901f
+  parameter_id: 0x3176a085
+}
+function {
+  id: 0x121bfaa4
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf435685e
+  parameter_id: 0x0379c823
+}
+function {
+  id: 0x121c81c2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0a134144
+}
+function {
+  id: 0x12217922
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0ae4a2c7
+}
+function {
+  id: 0x122c4fff
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x122f291e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x064d6086
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x1230d8bc
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0562c566
+  parameter_id: 0xfc0e1dbd
+}
+function {
+  id: 0x12362f00
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0ab9fa4c
+}
+function {
+  id: 0x1239dff8
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0ae4a2c7
+  parameter_id: 0x064d6086
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0x123a72e1
+  return_type_id: 0x48b5725f
+  parameter_id: 0x09427c40
+  parameter_id: 0x3caf1899
+}
+function {
+  id: 0x123ed0d5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0a9a051a
+}
+function {
+  id: 0x1243c078
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x23f09c34
+  parameter_id: 0x1d841d76
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x27a7c613
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x12448959
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0dc9e98b
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x12457cb4
+  return_type_id: 0x48b5725f
+  parameter_id: 0x078316ff
+  parameter_id: 0xc9082b19
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1247424a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0b7c4f67
+}
+function {
+  id: 0x12493d73
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0b45b380
+}
+function {
+  id: 0x124b9548
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0b4f136e
+}
+function {
+  id: 0x1251a683
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0b27dc43
+}
+function {
+  id: 0x1251c8ee
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0b2665f4
+}
+function {
+  id: 0x12531baa
+  return_type_id: 0x48b5725f
+  parameter_id: 0x08113aaf
+  parameter_id: 0x33c1248a
+}
+function {
+  id: 0x12537c3f
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x27a7c613
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x27a7c613
+  parameter_id: 0xf435685e
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1253a5d6
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0858434c
+  parameter_id: 0x37792593
+}
+function {
+  id: 0x1256dc52
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0b3a3706
+}
+function {
+  id: 0x125cb480
+  return_type_id: 0x48b5725f
+  parameter_id: 0x078316ff
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x125ed5d0
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0b7c4f67
+  parameter_id: 0x0665e6b6
+}
+function {
+  id: 0x125f41c1
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0b1c4148
+}
+function {
+  id: 0x125f5377
+  return_type_id: 0x48b5725f
+  parameter_id: 0x06835e9c
+  parameter_id: 0xd9f550d1
+}
+function {
+  id: 0x1262fcf5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0beab59b
+}
+function {
+  id: 0x1265fe38
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0bf6beaf
+}
+function {
+  id: 0x1267759f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0bfc9031
+}
+function {
+  id: 0x12687d8c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0483e6f8
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x12696c21
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0ae4a2c7
+  parameter_id: 0x120540d1
+}
+function {
+  id: 0x126ef68a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x078316ff
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x126f3be6
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0483e6f8
+  parameter_id: 0xf435685e
+  parameter_id: 0x1d19a9d5
+}
+function {
+  id: 0x12725ea0
+  return_type_id: 0x48b5725f
+  parameter_id: 0x087ad34b
+  parameter_id: 0x3d2ef874
+}
+function {
+  id: 0x12746195
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0bb0c019
+}
+function {
+  id: 0x1277c151
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0beab59b
+  parameter_id: 0x054f691a
+}
+function {
+  id: 0x1277d69c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0bbe1c3e
+}
+function {
+  id: 0x127987a5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0b8758d9
+}
+function {
+  id: 0x127a8e67
+  return_type_id: 0x48b5725f
+  parameter_id: 0x08fced89
+  parameter_id: 0x37792593
+}
+function {
+  id: 0x127accc9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x054f691a
+  parameter_id: 0xe276adef
+  parameter_id: 0xe276adef
+}
+function {
+  id: 0x127f2869
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0a134144
+  parameter_id: 0x18ea6ae3
+}
+function {
+  id: 0x1282e056
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0b30ee00
+  parameter_id: 0x33756485
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x1283794a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0b7c4f67
+  parameter_id: 0x310ec01d
+}
+function {
+  id: 0x12841778
+  return_type_id: 0x48b5725f
+  parameter_id: 0x08f8b95d
+  parameter_id: 0x087aa58e
+  parameter_id: 0x087aa58e
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x12852203
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0875ce41
+}
+function {
+  id: 0x128e4140
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0858434c
+}
+function {
+  id: 0x128f149f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x09e67e75
+  parameter_id: 0x1bb6a471
+}
+function {
+  id: 0x129825ff
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0801d1b2
+}
+function {
+  id: 0x1299bf81
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0b30ee00
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x129c1f38
+  return_type_id: 0x48b5725f
+  parameter_id: 0x08113aaf
+}
+function {
+  id: 0x129c3b6f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x04b193cc
+  parameter_id: 0xc9082b19
+  parameter_id: 0x3382a638
+  parameter_id: 0x3382a638
+}
+function {
+  id: 0x129eb456
+  return_type_id: 0x48b5725f
+  parameter_id: 0x09451098
+  parameter_id: 0x133f8d39
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x12a3af2d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0cb7ac99
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x12a52815
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x1084abd6
+  parameter_id: 0x92233392
+  parameter_id: 0xf435685e
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x12a5ae09
+  return_type_id: 0x48b5725f
+  parameter_id: 0x097315c2
+  parameter_id: 0x18bd6530
+  parameter_id: 0x0f3dfb90
+}
+function {
+  id: 0x12a5ae9c
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x1084abd6
+  parameter_id: 0x92233392
+  parameter_id: 0xf435685e
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0x12a9e457
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0b27dc43
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x12abe021
+  return_type_id: 0x48b5725f
+  parameter_id: 0x09451098
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x12b21f36
+  return_type_id: 0x48b5725f
+  parameter_id: 0x08ba388c
+  parameter_id: 0x0130219f
+}
+function {
+  id: 0x12b2c685
+  return_type_id: 0x48b5725f
+  parameter_id: 0x09427c40
+  parameter_id: 0x1e820193
+}
+function {
+  id: 0x12b4c1e0
+  return_type_id: 0x48b5725f
+  parameter_id: 0x09427c40
+  parameter_id: 0x1e820193
+  parameter_id: 0x181d94fa
+}
+function {
+  id: 0x12b56605
+  return_type_id: 0x48b5725f
+  parameter_id: 0x09427c40
+  parameter_id: 0x1e820193
+  parameter_id: 0x1e820193
+}
+function {
+  id: 0x12bd0b6f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x08956bf0
+}
+function {
+  id: 0x12c0cb4c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x09626b7f
+}
+function {
+  id: 0x12c15d81
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0930c6d9
+  parameter_id: 0x054f691a
+}
+function {
+  id: 0x12c1ad66
+  return_type_id: 0x48b5725f
+  parameter_id: 0x09427c40
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x12c494e3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x097315c2
+}
+function {
+  id: 0x12c4978f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0ab1f084
+  parameter_id: 0x33756485
+  parameter_id: 0xf435685e
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x12c79320
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x0379c823
+  parameter_id: 0x0b3a3706
+  parameter_id: 0xf435685e
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x12c8be42
+  return_type_id: 0x48b5725f
+  parameter_id: 0x06835e9c
+  parameter_id: 0xfc0e1dbd
+}
+function {
+  id: 0x12c8ce83
+  return_type_id: 0x48b5725f
+  parameter_id: 0x09427c40
+}
+function {
+  id: 0x12ca5ec4
+  return_type_id: 0x48b5725f
+  parameter_id: 0x09483d5e
+}
+function {
+  id: 0x12cacb36
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0f9d9f68
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x12cb0a9d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0930c6d9
+  parameter_id: 0x054f691a
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x12cb6fe0
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x06835e9c
+  parameter_id: 0x6720d32f
+  parameter_id: 0xf435685e
+  parameter_id: 0x0379c823
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x12cf393a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0b3a3706
+  parameter_id: 0x26795a38
+}
+function {
+  id: 0x12d14004
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0917901f
+  parameter_id: 0x054f691a
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x12d17df8
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0d7ce7cc
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x12d3ed44
+  return_type_id: 0x48b5725f
+  parameter_id: 0x08dcfb76
+  parameter_id: 0x1b4ba19a
+  parameter_id: 0x4585663f
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x12d43657
+  return_type_id: 0x48b5725f
+  parameter_id: 0x09319f13
+}
+function {
+  id: 0x12d43d94
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0b7c4f67
+  parameter_id: 0x24dff7bd
+}
+function {
+  id: 0x12d46025
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0930c6d9
+}
+function {
+  id: 0x12d6b73d
+  return_type_id: 0x1b8590a8
+  parameter_id: 0x26ee682a
+}
+function {
+  id: 0x12d88613
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0b27dc43
+  parameter_id: 0x21e26633
+  parameter_id: 0x3ad73636
+  parameter_id: 0x04e4820e
+  parameter_id: 0x3d5e73a1
+}
+function {
+  id: 0x12d895b5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0930c6d9
+  parameter_id: 0x054f691a
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x12da0256
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0930c6d9
+  parameter_id: 0x054f691a
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x12dd8909
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0a134144
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x12e01214
+  return_type_id: 0x48b5725f
+  parameter_id: 0x09e10e1f
+}
+function {
+  id: 0x12e071e9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0ae4a2c7
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x12e125fe
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0aa1f0ee
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x12e4741f
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x0483e6f8
+  parameter_id: 0xf435685e
+  parameter_id: 0x0379c823
+}
+function {
+  id: 0x12e4752f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0858434c
+  parameter_id: 0x1a8d1bcb
+}
+function {
+  id: 0x12eb3fc9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x09483d5e
+  parameter_id: 0x0858434c
+}
+function {
+  id: 0x12efab79
+  return_type_id: 0x48b5725f
+  parameter_id: 0x054f691a
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x12f25e54
+  return_type_id: 0x48b5725f
+  parameter_id: 0x09a83f1c
+}
+function {
+  id: 0x12fc3ff3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0aa6efc8
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x12feb005
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0baf61c0
+  parameter_id: 0x2e0f9112
+  parameter_id: 0xd41e888f
+}
+function {
+  id: 0x12fff850
+  return_type_id: 0x37f9935b
+}
+function {
+  id: 0x13015378
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0e6618c4
+  parameter_id: 0x002136b3
+}
+function {
+  id: 0x1301d7a2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0e6618c4
+}
+function {
+  id: 0x1302b82e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0e6ba6f7
+}
+function {
+  id: 0x130705ac
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0e7d50ff
+}
+function {
+  id: 0x130de2cb
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0e56cd62
+}
+function {
+  id: 0x130ef56d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0ed82db2
+  parameter_id: 0x082be49e
+}
+function {
+  id: 0x1311f1a3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0e2680c2
+}
+function {
+  id: 0x1327a0fb
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0effc5a1
+}
+function {
+  id: 0x13309e7e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0a9a051a
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x13317cfe
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0c467c34
+  parameter_id: 0x2e2c982d
+}
+function {
+  id: 0x133a653a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0ebaa80a
+  parameter_id: 0x030b9acf
+  parameter_id: 0x030b9acf
+  parameter_id: 0x1c898f28
+}
+function {
+  id: 0x133dc89b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0206e690
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x133ecef4
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x238091f9
+}
+function {
+  id: 0x133f9977
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x238091f9
+  parameter_id: 0x055e0c0c
+}
+function {
+  id: 0x13420565
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0de4c6b1
+  parameter_id: 0x2eab5b8a
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1343ec20
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0f6ef6cc
+}
+function {
+  id: 0x13464040
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0f78474f
+}
+function {
+  id: 0x1347a32b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x09a83f1c
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x13488e67
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x134aca27
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0de4c6b1
+  parameter_id: 0x293f2663
+  parameter_id: 0x3da0a8e3
+  parameter_id: 0x0faae5b1
+}
+function {
+  id: 0x134af48c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0de4c6b1
+  parameter_id: 0x293f2663
+  parameter_id: 0x3da0a8e3
+}
+function {
+  id: 0x135157d2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0b7c4f67
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x13525403
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0f281641
+}
+function {
+  id: 0x1353017f
+  return_type_id: 0x0beab59b
+  parameter_id: 0x3ba6347b
+  parameter_id: 0x054f691a
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0x13544dcf
+  return_type_id: 0x48b5725f
+  parameter_id: 0x09427c40
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x135bcd51
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0de4c6b1
+  parameter_id: 0x2eab5b8a
+}
+function {
+  id: 0x135e0256
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0c2e195c
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x135e15ea
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0xd41e888f
+}
+function {
+  id: 0x13602394
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x32a623d7
+  parameter_id: 0x6f23eca1
+  parameter_id: 0x6f23eca1
+  parameter_id: 0x0efa6637
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x1362a71c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0c467c34
+  parameter_id: 0x3ada60b4
+}
+function {
+  id: 0x13638c75
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0e64a1c8
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x13641115
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x188b9e81
+  parameter_id: 0x6ecf2641
+  parameter_id: 0x30e68a3c
+  parameter_id: 0x0483e6f8
+}
+function {
+  id: 0x13648576
+  return_type_id: 0x48b5725f
+  parameter_id: 0x09e67e75
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1364c655
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x188b9e81
+  parameter_id: 0x6ecf2641
+  parameter_id: 0x30e68a3c
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x13666c2b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x09427c40
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x136845f1
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0f627bc8
+  parameter_id: 0x0a22a423
+}
+function {
+  id: 0x13692c3a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0c467c34
+  parameter_id: 0x3ada60b4
+  parameter_id: 0x2e2c982d
+}
+function {
+  id: 0x136d0952
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0e5eb556
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x136e318e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0dc9e98b
+  parameter_id: 0x21069feb
+}
+function {
+  id: 0x136e393b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x33e53462
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x137596b0
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x32a623d7
+  parameter_id: 0x3ca7539e
+  parameter_id: 0x3ba05ad7
+  parameter_id: 0x11d941b8
+  parameter_id: 0x6720d32f
+  parameter_id: 0xc9082b19
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0xe62ebf07
+  parameter_id: 0xc9082b19
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x1378736d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0e6c7d79
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x13797fb7
+  return_type_id: 0x48b5725f
+  parameter_id: 0x078316ff
+  parameter_id: 0x81f130ac
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x137d1ffc
+  return_type_id: 0x48b5725f
+  parameter_id: 0x09451098
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x137d33fc
+  return_type_id: 0x48b5725f
+  parameter_id: 0x09427c40
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x1382dd85
+  return_type_id: 0x48b5725f
+  parameter_id: 0x08326638
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1389ce9e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0c467c34
+}
+function {
+  id: 0x138a469e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0c485c36
+}
+function {
+  id: 0x138a619e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0c48c037
+}
+function {
+  id: 0x138ba23f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x0abe9fd1
+  parameter_id: 0x4585663f
+  parameter_id: 0x3e6396e0
+  parameter_id: 0x3399c453
+  parameter_id: 0x3399c453
+  parameter_id: 0x336c4b19
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x138bff3f
+  return_type_id: 0x0c2e195c
+  parameter_id: 0xeb0f6de6
+  parameter_id: 0x9547a3da
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x138de9e8
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0c56e1ee
+}
+function {
+  id: 0x139004c0
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0f20855e
+  parameter_id: 0x3399c453
+  parameter_id: 0x384c5795
+}
+function {
+  id: 0x13911651
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0dc9e98b
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x139c8318
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0e5eb556
+  parameter_id: 0x24dff7bd
+}
+function {
+  id: 0x139ca744
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0ce5fdb2
+  parameter_id: 0x0f626ee5
+}
+function {
+  id: 0x13a0751a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x025c6771
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x13a45d3e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0206e690
+  parameter_id: 0xe02e14d6
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x13a62397
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0effc5a1
+  parameter_id: 0x2060db23
+}
+function {
+  id: 0x13a974bf
+  return_type_id: 0x0c0dfa25
+  parameter_id: 0x0206e690
+}
+function {
+  id: 0x13ab3f14
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0ab9fa4c
+  parameter_id: 0x6720d32f
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0x13af966b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0e2680c2
+  parameter_id: 0x2f99f236
+}
+function {
+  id: 0x13b0ccb3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0ca27481
+}
+function {
+  id: 0x13b0e00f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0xe02e14d6
+  parameter_id: 0xf435685e
+  parameter_id: 0xcd84e3cd
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x13b0ecd2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0xe02e14d6
+  parameter_id: 0xf435685e
+  parameter_id: 0xcd84e3cd
+}
+function {
+  id: 0x13b5bab5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0cb7ac99
+}
+function {
+  id: 0x13b77375
+  return_type_id: 0x48b5725f
+  parameter_id: 0x04f728c1
+  parameter_id: 0x865acc96
+  parameter_id: 0x2e0f9112
+}
+function {
+  id: 0x13c2822b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0d6b4ee3
+}
+function {
+  id: 0x13c6ea20
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0e56cd62
+  parameter_id: 0x32c23ae3
+}
+function {
+  id: 0x13c76860
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0d7ce7cc
+}
+function {
+  id: 0x13c8e95f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0b30ee00
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x13c930d6
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0d458514
+}
+function {
+  id: 0x13cd4ba2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0b2665f4
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x13cf979d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0d5f1839
+}
+function {
+  id: 0x13d261bc
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0ca316ec
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x13d47fe3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0d30b9c3
+}
+function {
+  id: 0x13db1588
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0xf435685e
+  parameter_id: 0x18bd6530
+  parameter_id: 0xe02e14d6
+}
+function {
+  id: 0x13db1955
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0xf435685e
+  parameter_id: 0x18bd6530
+  parameter_id: 0xe02e14d6
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x13dca967
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0xf435685e
+  parameter_id: 0x06835e9c
+  parameter_id: 0xe02e14d6
+  parameter_id: 0xcd84e3cd
+}
+function {
+  id: 0x13dda576
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0258f96e
+  parameter_id: 0xf435685e
+  parameter_id: 0x00a43052
+  parameter_id: 0xcd84e3cd
+}
+function {
+  id: 0x13dedb1b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x09427c40
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x13e1603f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0de4c6b1
+}
+function {
+  id: 0x13e3fe8e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0deebc77
+}
+function {
+  id: 0x13e8c6b3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0e6ba6f7
+  parameter_id: 0x3a9fa744
+}
+function {
+  id: 0x13ea2bf1
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0dc9e98b
+}
+function {
+  id: 0x13eeeb77
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0dc9e98b
+  parameter_id: 0x0130219f
+}
+function {
+  id: 0x13f3b20a
+  return_type_id: 0x08113aaf
+  parameter_id: 0x14528516
+}
+function {
+  id: 0x13f4af03
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x106029c6
+  parameter_id: 0x178c5d28
+}
+function {
+  id: 0x13f52a95
+  return_type_id: 0x48b5725f
+  parameter_id: 0x09a83f1c
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x13f52df1
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0db5f18a
+}
+function {
+  id: 0x13f7766f
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x1d4ed289
+  parameter_id: 0x165ded06
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x13fa026e
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x1d4ed289
+  parameter_id: 0x165ded06
+  parameter_id: 0x0483e6f8
+}
+function {
+  id: 0x13fabadb
+  return_type_id: 0x48b5725f
+  parameter_id: 0x0d8bad22
+}
+function {
+  id: 0x1401698f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1285100d
+  parameter_id: 0x0e1f07df
+}
+function {
+  id: 0x1402b86b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x126ba7e3
+}
+function {
+  id: 0x1402e6d4
+  return_type_id: 0x48b5725f
+  parameter_id: 0x126add1c
+}
+function {
+  id: 0x140db9fc
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d44326e
+  parameter_id: 0xf1393d0e
+}
+function {
+  id: 0x140e294e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1259e377
+}
+function {
+  id: 0x141076c6
+  return_type_id: 0x48b5725f
+  parameter_id: 0x12209d55
+}
+function {
+  id: 0x14122079
+  return_type_id: 0x48b5725f
+  parameter_id: 0x11cfee5a
+  parameter_id: 0x3e0d6ef0
+  parameter_id: 0x064d6086
+  parameter_id: 0x0b27dc43
+}
+function {
+  id: 0x1417fb73
+  return_type_id: 0x48b5725f
+  parameter_id: 0x117a8adb
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x14186939
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1200e2aa
+}
+function {
+  id: 0x14189f57
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1330389b
+  parameter_id: 0x1330389b
+}
+function {
+  id: 0x141901a7
+  return_type_id: 0x48b5725f
+  parameter_id: 0x120540d1
+}
+function {
+  id: 0x141c5677
+  return_type_id: 0x48b5725f
+  parameter_id: 0x10134e31
+  parameter_id: 0x20351a02
+}
+function {
+  id: 0x141eb21f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x11cffa09
+  parameter_id: 0x391f15ea
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x142187db
+  return_type_id: 0x48b5725f
+  parameter_id: 0x12e75923
+}
+function {
+  id: 0x1422eb3a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x12eaeaa5
+}
+function {
+  id: 0x14287f03
+  return_type_id: 0x48b5725f
+  parameter_id: 0x12c0ba43
+}
+function {
+  id: 0x1428c8a6
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1c34b0f2
+  parameter_id: 0xe02e14d6
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x1429f877
+  return_type_id: 0x48b5725f
+  parameter_id: 0x14b9453b
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x142e0390
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0xfc0e1dbd
+}
+function {
+  id: 0x142e3633
+  return_type_id: 0x48b5725f
+  parameter_id: 0x12191e2a
+  parameter_id: 0x0c080ab3
+}
+function {
+  id: 0x14391590
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1285100d
+}
+function {
+  id: 0x1439657e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d44326e
+  parameter_id: 0xfc0e1dbd
+}
+function {
+  id: 0x143c209f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1291c430
+}
+function {
+  id: 0x143ecb11
+  return_type_id: 0x48b5725f
+  parameter_id: 0x129a6a0a
+}
+function {
+  id: 0x1440a366
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x0258f96e
+  parameter_id: 0x0483e6f8
+  parameter_id: 0xd5cc9c9a
+}
+function {
+  id: 0x14427ab8
+  return_type_id: 0x48b5725f
+  parameter_id: 0x172847a8
+  parameter_id: 0x4585663f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x1443bd42
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1344d43c
+  parameter_id: 0x06835e9c
+  parameter_id: 0x4585663f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x144455e1
+  return_type_id: 0x48b5725f
+  parameter_id: 0x172847a8
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x14467d88
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1291c430
+  parameter_id: 0x1e9745d3
+}
+function {
+  id: 0x14485d75
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1340339a
+}
+function {
+  id: 0x1449649c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1344d43c
+}
+function {
+  id: 0x144a285c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1349e73e
+}
+function {
+  id: 0x14500457
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x0258f96e
+  parameter_id: 0x0ee3dd73
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x14501eec
+  return_type_id: 0x48b5725f
+  parameter_id: 0x13b93798
+  parameter_id: 0x0980a662
+}
+function {
+  id: 0x14532743
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x019e2530
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x145369e6
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1344d43c
+  parameter_id: 0x06835e9c
+}
+function {
+  id: 0x14545fb5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1330389b
+}
+function {
+  id: 0x14548140
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1333434c
+}
+function {
+  id: 0x1459aedb
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1042c9d1
+  parameter_id: 0x30484bfe
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x145d4e91
+  return_type_id: 0x48b5725f
+  parameter_id: 0x15c389f6
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x145d7056
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x0258f96e
+  parameter_id: 0x0ee3dd73
+  parameter_id: 0x0483e6f8
+}
+function {
+  id: 0x145d9dd5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x172847a8
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x14609640
+  return_type_id: 0x48b5725f
+  parameter_id: 0x12bb35ff
+  parameter_id: 0x1582ab06
+}
+function {
+  id: 0x14667c52
+  return_type_id: 0x48b5725f
+  parameter_id: 0x13f8b706
+}
+function {
+  id: 0x146afcfb
+  return_type_id: 0x0017d728
+  parameter_id: 0x2b8f13b3
+}
+function {
+  id: 0x1472e737
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1340339a
+  parameter_id: 0x0f2546f5
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x147717e5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x120540d1
+  parameter_id: 0x1b8590a8
+}
+function {
+  id: 0x14795522
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1259e377
+  parameter_id: 0x1d44326e
+  parameter_id: 0x054f691a
+  parameter_id: 0xc9082b19
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x147a6a5d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1259e377
+  parameter_id: 0x1d44326e
+  parameter_id: 0x054f691a
+}
+function {
+  id: 0x147c9fd8
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1393392e
+}
+function {
+  id: 0x14800eb8
+  return_type_id: 0x48b5725f
+  parameter_id: 0x10617cac
+}
+function {
+  id: 0x14805be2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x106029c6
+}
+function {
+  id: 0x1480c3c3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x104d069a
+  parameter_id: 0x02f4fda6
+}
+function {
+  id: 0x148157fd
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d25f132
+  parameter_id: 0xd41e888f
+}
+function {
+  id: 0x14830594
+  return_type_id: 0x48b5725f
+  parameter_id: 0x11e6864c
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x14831f09
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1c34b0f2
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x14846756
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x019e2530
+  parameter_id: 0x0483e6f8
+}
+function {
+  id: 0x1486e519
+  return_type_id: 0x48b5725f
+  parameter_id: 0x10617cac
+  parameter_id: 0x0258f96e
+  parameter_id: 0x38531dd4
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x148786b7
+  return_type_id: 0x48b5725f
+  parameter_id: 0x116785ed
+  parameter_id: 0x118d97cb
+}
+function {
+  id: 0x1488e3e7
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1042c9d1
+}
+function {
+  id: 0x148b1035
+  return_type_id: 0x48b5725f
+  parameter_id: 0x104d069a
+}
+function {
+  id: 0x148b9359
+  return_type_id: 0xd1f94ea7
+  parameter_id: 0x3b461cc8
+  parameter_id: 0x3b461cc8
+  parameter_id: 0xe62ebf07
+  parameter_id: 0xb3e7bac9
+  parameter_id: 0xa9403390
+}
+function {
+  id: 0x148f719a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x105c8027
+}
+function {
+  id: 0x149bc5c9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1340339a
+  parameter_id: 0x34e62f02
+}
+function {
+  id: 0x149c821f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x10134e31
+}
+function {
+  id: 0x149e1e01
+  return_type_id: 0x48b5725f
+  parameter_id: 0x10193e4a
+}
+function {
+  id: 0x149eb739
+  return_type_id: 0x48b5725f
+  parameter_id: 0x101b9aaa
+}
+function {
+  id: 0x14a07690
+  return_type_id: 0x48b5725f
+  parameter_id: 0x11b32828
+  parameter_id: 0x153b4245
+}
+function {
+  id: 0x14a1954e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x14925f4a
+  parameter_id: 0x4754c3e4
+}
+function {
+  id: 0x14a2b07e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1330389b
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3ab47ff9
+}
+function {
+  id: 0x14a305ea
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1132933c
+  parameter_id: 0x1d44326e
+  parameter_id: 0x054f691a
+  parameter_id: 0xe276adef
+  parameter_id: 0xe276adef
+  parameter_id: 0xb3e7bac9
+  parameter_id: 0xb3e7bac9
+  parameter_id: 0x7584e7da
+  parameter_id: 0x7584e7da
+  parameter_id: 0x7584e7da
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x14a48ed9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x10a78bb8
+  parameter_id: 0x054f691a
+}
+function {
+  id: 0x14a4a6f4
+  return_type_id: 0x48b5725f
+  parameter_id: 0x10f3dd9c
+}
+function {
+  id: 0x14b1b37d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x10a78bb8
+}
+function {
+  id: 0x14b4088f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x10134e31
+  parameter_id: 0x0a22a423
+}
+function {
+  id: 0x14b6bb25
+  return_type_id: 0x48b5725f
+  parameter_id: 0x126add1c
+  parameter_id: 0x295c7202
+  parameter_id: 0x4585663f
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x14b97b66
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1084abd6
+}
+function {
+  id: 0x14bcf198
+  return_type_id: 0x48b5725f
+  parameter_id: 0x14925f4a
+  parameter_id: 0x4478ba6b
+  parameter_id: 0x4754c3e4
+}
+function {
+  id: 0x14bfdedb
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1285100d
+  parameter_id: 0x21b2d2f4
+}
+function {
+  id: 0x14c1b0e8
+  return_type_id: 0x48b5725f
+  parameter_id: 0x116785ed
+}
+function {
+  id: 0x14c5cbad
+  return_type_id: 0x48b5725f
+  parameter_id: 0x12eaeaa5
+  parameter_id: 0x39c825ca
+}
+function {
+  id: 0x14c6f325
+  return_type_id: 0x48b5725f
+  parameter_id: 0x117a8adb
+}
+function {
+  id: 0x14c7dbf6
+  return_type_id: 0x48b5725f
+  parameter_id: 0x117e2995
+}
+function {
+  id: 0x14c81bbb
+  return_type_id: 0x48b5725f
+  parameter_id: 0x10617cac
+  parameter_id: 0x120540d1
+}
+function {
+  id: 0x14cd8502
+  return_type_id: 0x48b5725f
+  parameter_id: 0x11575246
+}
+function {
+  id: 0x14cff3f5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1042c9d1
+  parameter_id: 0x11c404ba
+}
+function {
+  id: 0x14d9bc35
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1200e2aa
+  parameter_id: 0x335d253d
+  parameter_id: 0x358ff5b7
+  parameter_id: 0x709946fa
+}
+function {
+  id: 0x14d9dc3c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x12d04cc7
+  parameter_id: 0x3d67a7b2
+}
+function {
+  id: 0x14d9f083
+  return_type_id: 0x48b5725f
+  parameter_id: 0x101a7aa5
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x14dd79f5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1259e377
+  parameter_id: 0x32a623d7
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x14de88f3
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x14dea3e9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1769c4d8
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x14df3fae
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d44326e
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x14dfe82d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x111ee6f8
+}
+function {
+  id: 0x14e196b0
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18a2fb63
+  parameter_id: 0x945e7ef6
+}
+function {
+  id: 0x14e1f000
+  return_type_id: 0x48b5725f
+  parameter_id: 0x11e6864c
+}
+function {
+  id: 0x14e71014
+  return_type_id: 0x48b5725f
+  parameter_id: 0x116785ed
+  parameter_id: 0x09a83f1c
+}
+function {
+  id: 0x14e943e8
+  return_type_id: 0x48b5725f
+  parameter_id: 0x11c449ec
+}
+function {
+  id: 0x14ed7da4
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d44326e
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x14f27dac
+  return_type_id: 0x48b5725f
+  parameter_id: 0x17dabdcd
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x14f50ddf
+  return_type_id: 0x48b5725f
+  parameter_id: 0x11b57133
+}
+function {
+  id: 0x14f54b2b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x106029c6
+  parameter_id: 0x1d44326e
+}
+function {
+  id: 0x14fb3461
+  return_type_id: 0x48b5725f
+  parameter_id: 0x118d97cb
+}
+function {
+  id: 0x14fbfe19
+  return_type_id: 0x48b5725f
+  parameter_id: 0x12d04cc7
+  parameter_id: 0x35ef2eea
+}
+function {
+  id: 0x15000153
+  return_type_id: 0x48b5725f
+  parameter_id: 0x10134e31
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x15005e8a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x184052fc
+  parameter_id: 0xe90b32b7
+  parameter_id: 0xb0ddb211
+}
+function {
+  id: 0x1505d2d7
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x0798f334
+  parameter_id: 0x0483e6f8
+}
+function {
+  id: 0x150716f7
+  return_type_id: 0x48b5725f
+  parameter_id: 0x158752b5
+  parameter_id: 0x3e10b518
+  parameter_id: 0x1b44744f
+}
+function {
+  id: 0x150be5da
+  return_type_id: 0x48b5725f
+  parameter_id: 0x14528516
+  parameter_id: 0x2712b6f9
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x150f2137
+  return_type_id: 0x48b5725f
+  parameter_id: 0x165dc292
+}
+function {
+  id: 0x1510b6d0
+  return_type_id: 0x48b5725f
+  parameter_id: 0x16239d0c
+}
+function {
+  id: 0x1510ba0d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x14528516
+  parameter_id: 0x2712b6f9
+}
+function {
+  id: 0x151457b1
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x151460ab
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1042c9d1
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x152401b7
+  return_type_id: 0x33756485
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x152d3031
+  return_type_id: 0x48b5725f
+  parameter_id: 0x10a78bb8
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1532669f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1042c9d1
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x3de01d60
+}
+function {
+  id: 0x15334a4f
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x37d7ca8b
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x1536d7b3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x12e24ee1
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x153d1e98
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1042c9d1
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x153e4f8f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x15a30023
+  parameter_id: 0x33756485
+  parameter_id: 0x0c2e195c
+}
+function {
+  id: 0x15401a81
+  return_type_id: 0x48b5725f
+  parameter_id: 0x175195e4
+  parameter_id: 0x030b9acf
+}
+function {
+  id: 0x15421ea8
+  return_type_id: 0x48b5725f
+  parameter_id: 0x17693cee
+}
+function {
+  id: 0x154220a5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1769c4d8
+}
+function {
+  id: 0x15424ce6
+  return_type_id: 0x48b5725f
+  parameter_id: 0x14abdd00
+  parameter_id: 0x33756485
+  parameter_id: 0xf435685e
+  parameter_id: 0x0cbf60eb
+}
+function {
+  id: 0x1543a0fd
+  return_type_id: 0x48b5725f
+  parameter_id: 0x176fc5b8
+}
+function {
+  id: 0x154ae24f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x174acf71
+}
+function {
+  id: 0x154c8742
+  return_type_id: 0x48b5725f
+  parameter_id: 0x17535b44
+}
+function {
+  id: 0x154da6ed
+  return_type_id: 0x48b5725f
+  parameter_id: 0x172847a8
+  parameter_id: 0x07f9a52e
+}
+function {
+  id: 0x154ed535
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1769c4d8
+  parameter_id: 0x054f691a
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x15503314
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1769c4d8
+  parameter_id: 0x054f691a
+  parameter_id: 0x1df06cce
+  parameter_id: 0x1df06cce
+  parameter_id: 0x914dbfdc
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x15546ed9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x172847a8
+  parameter_id: 0x07f9a52e
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1557244f
+  return_type_id: 0xd1f94ea7
+  parameter_id: 0x391f15ea
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x155a3a09
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+  parameter_id: 0x3256c3cc
+  parameter_id: 0x8dd95c5e
+}
+function {
+  id: 0x155b58ba
+  return_type_id: 0x48b5725f
+  parameter_id: 0x117e2995
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x156275ac
+  return_type_id: 0x48b5725f
+  parameter_id: 0x118d97cb
+  parameter_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x1565cfbb
+  return_type_id: 0x48b5725f
+  parameter_id: 0x126add1c
+  parameter_id: 0x5d8155a5
+  parameter_id: 0x4585663f
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x1566db85
+  return_type_id: 0x48b5725f
+  parameter_id: 0x17fa285b
+}
+function {
+  id: 0x1567dd7e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x15694c5f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x118d97cb
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3bedc96c
+}
+function {
+  id: 0x156a53a6
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x156e1138
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1582ab06
+  parameter_id: 0x27a7c613
+  parameter_id: 0x27a7c613
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x156efee0
+  return_type_id: 0x48b5725f
+  parameter_id: 0x17dabdcd
+}
+function {
+  id: 0x156f22f3
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x06541377
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x15705d39
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1e820193
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x15708e94
+  return_type_id: 0x48b5725f
+  parameter_id: 0x17a37c1c
+}
+function {
+  id: 0x1572ad94
+  return_type_id: 0x9519135f
+  parameter_id: 0x12209d55
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x1572d585
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x27a7c613
+  parameter_id: 0xf435685e
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x15766e8a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x175195e4
+  parameter_id: 0x0ebaa80a
+  parameter_id: 0x030b9acf
+  parameter_id: 0x1c898f28
+}
+function {
+  id: 0x15784dbd
+  return_type_id: 0x48b5725f
+  parameter_id: 0x14abdd00
+  parameter_id: 0x33310de5
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x157aa231
+  return_type_id: 0x48b5725f
+  parameter_id: 0x156a41de
+  parameter_id: 0x2e18f543
+}
+function {
+  id: 0x157bc602
+  return_type_id: 0x48b5725f
+  parameter_id: 0x178e5e46
+}
+function {
+  id: 0x157d734c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x11e6864c
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x157f093d
+  return_type_id: 0x584c13f3
+  parameter_id: 0x3064005c
+  parameter_id: 0x244afa25
+}
+function {
+  id: 0x1580fbe8
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1462a9ec
+}
+function {
+  id: 0x158152d0
+  return_type_id: 0x48b5725f
+  parameter_id: 0x17535b44
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x1586ba9c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1042c9d1
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x158bb121
+  return_type_id: 0x48b5725f
+  parameter_id: 0x14abdd00
+  parameter_id: 0x0fce2ac8
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x158cf0d6
+  return_type_id: 0x48b5725f
+  parameter_id: 0x14528516
+}
+function {
+  id: 0x158d1ae2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x174acf71
+  parameter_id: 0x31fe2b41
+}
+function {
+  id: 0x158da2dd
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1457cd38
+}
+function {
+  id: 0x158e0ba5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1042c9d1
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x158f8f53
+  return_type_id: 0x48b5725f
+  parameter_id: 0x145f7b00
+}
+function {
+  id: 0x158f9726
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1042c9d1
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x15912855
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1042c9d1
+  parameter_id: 0x4585663f
+  parameter_id: 0x3b20fed2
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x159d827c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x12c0ba43
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x159f9b02
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18bd6530
+  parameter_id: 0xc9082b19
+  parameter_id: 0x33756485
+  parameter_id: 0x18bd6530
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x15a19b91
+  return_type_id: 0x48b5725f
+  parameter_id: 0x14e7280b
+}
+function {
+  id: 0x15a2be6d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x14b9453b
+  parameter_id: 0x052fac00
+}
+function {
+  id: 0x15a35eaa
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1dce0fdd
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x15a61d9b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x15a30023
+  parameter_id: 0x15a30023
+}
+function {
+  id: 0x15aafaab
+  return_type_id: 0x48b5725f
+  parameter_id: 0x174acf71
+  parameter_id: 0x3806390a
+}
+function {
+  id: 0x15acd3b0
+  return_type_id: 0x48b5725f
+  parameter_id: 0x172847a8
+  parameter_id: 0x3e10b518
+  parameter_id: 0x1b44744f
+}
+function {
+  id: 0x15b2a6d3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x14abdd00
+}
+function {
+  id: 0x15b600dd
+  return_type_id: 0x48b5725f
+  parameter_id: 0x14b9453b
+}
+function {
+  id: 0x15bd0497
+  return_type_id: 0x48b5725f
+  parameter_id: 0x12e75923
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x15c2c1e4
+  return_type_id: 0x48b5725f
+  parameter_id: 0x156a41de
+}
+function {
+  id: 0x15c2ff80
+  return_type_id: 0x48b5725f
+  parameter_id: 0x15a30023
+  parameter_id: 0x0c2e195c
+  parameter_id: 0x07b17cd6
+  parameter_id: 0xc93e017b
+  parameter_id: 0x7b64642a
+}
+function {
+  id: 0x15c52eb1
+  return_type_id: 0x48b5725f
+  parameter_id: 0x14fe2ad8
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x15cafbab
+  return_type_id: 0x48b5725f
+  parameter_id: 0x154aa8e2
+}
+function {
+  id: 0x15d292c2
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x0798f334
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x15dce685
+  return_type_id: 0x48b5725f
+  parameter_id: 0x14fe2ad8
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x15dd5f06
+  return_type_id: 0x48b5725f
+  parameter_id: 0x17a37c1c
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+  parameter_id: 0xbdd18903
+}
+function {
+  id: 0x15df32b8
+  return_type_id: 0x48b5725f
+  parameter_id: 0x17a37c1c
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+  parameter_id: 0x26be1aee
+}
+function {
+  id: 0x15e3c455
+  return_type_id: 0x48b5725f
+  parameter_id: 0x15ee5719
+}
+function {
+  id: 0x15e4d187
+  return_type_id: 0x48b5725f
+  parameter_id: 0x15f20052
+}
+function {
+  id: 0x15e719f6
+  return_type_id: 0x48b5725f
+  parameter_id: 0x176fc5b8
+  parameter_id: 0x292e42d8
+}
+function {
+  id: 0x15e8b3ee
+  return_type_id: 0x48b5725f
+  parameter_id: 0x15c389f6
+}
+function {
+  id: 0x15f0919b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x15a30023
+}
+function {
+  id: 0x15f330e3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1479c6e7
+  parameter_id: 0x1d44326e
+}
+function {
+  id: 0x15f8fb52
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1582ab06
+}
+function {
+  id: 0x15fdba89
+  return_type_id: 0x48b5725f
+  parameter_id: 0x11cffa09
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x15ff0e04
+  return_type_id: 0x48b5725f
+  parameter_id: 0x17693cee
+  parameter_id: 0x2936263d
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x16019d86
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x09626b7f
+  parameter_id: 0x295c7202
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x1603f977
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1a6ea392
+}
+function {
+  id: 0x1604193e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1a7122b5
+}
+function {
+  id: 0x1609f51a
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x09626b7f
+  parameter_id: 0x295c7202
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x161199c0
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1c34b0f2
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x1613bf5e
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x0af69844
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x1616da34
+  return_type_id: 0x48b5725f
+  parameter_id: 0x184052fc
+  parameter_id: 0x27a7c613
+}
+function {
+  id: 0x16188b98
+  return_type_id: 0x48b5725f
+  parameter_id: 0x15c389f6
+  parameter_id: 0xfc0e1dbd
+}
+function {
+  id: 0x161c45fb
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1a1051a0
+}
+function {
+  id: 0x1623faea
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1aeeade4
+}
+function {
+  id: 0x163772d7
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1cce8023
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x163b1761
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1a8d1bcb
+}
+function {
+  id: 0x163dd09d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x105c8027
+  parameter_id: 0xaca841ec
+}
+function {
+  id: 0x16424a7b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1b686fa1
+}
+function {
+  id: 0x1642b8aa
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x16456f5c
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x0a9a051a
+  parameter_id: 0x0483e6f8
+}
+function {
+  id: 0x1645cd6c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1b55a8f2
+  parameter_id: 0x0665e6b6
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x164697c8
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1b7b196f
+}
+function {
+  id: 0x164c5933
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1b55a8f2
+  parameter_id: 0x0400f16a
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x164d3baf
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1b55a8f2
+}
+function {
+  id: 0x165365f0
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1830dd64
+  parameter_id: 0x31c0ce8c
+}
+function {
+  id: 0x1653799a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1b2ca025
+}
+function {
+  id: 0x1654b7a0
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1b3398cc
+}
+function {
+  id: 0x1655de44
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1655e07b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1b36c7a2
+}
+function {
+  id: 0x1658716c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1b55a8f2
+  parameter_id: 0x0665e6b6
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x165a4073
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1b084782
+}
+function {
+  id: 0x165a5b75
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1801b4c1
+  parameter_id: 0x39bbc694
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x165d386a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1b55a8f2
+  parameter_id: 0x0400f16a
+}
+function {
+  id: 0x165dda45
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x35f7f02e
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x165f3c66
+  return_type_id: 0x48b5725f
+  parameter_id: 0x191de370
+  parameter_id: 0x20054a7b
+}
+function {
+  id: 0x165f874a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18150d9f
+  parameter_id: 0x30a56f97
+}
+function {
+  id: 0x165fcf63
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x09626b7f
+  parameter_id: 0x3dad0f70
+}
+function {
+  id: 0x165fda2d
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x0b3a3706
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x0379c823
+  parameter_id: 0xf435685e
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x16637235
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x08bd7371
+  parameter_id: 0x2f73da3b
+}
+function {
+  id: 0x1664b4e1
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1bf395c9
+}
+function {
+  id: 0x1667b3d4
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1fa7df7c
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x166b6880
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x371817c7
+}
+function {
+  id: 0x166be42c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1da466a8
+  parameter_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x166e79d2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x166f7411
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3e6239e1
+  parameter_id: 0x87d0a514
+}
+function {
+  id: 0x16700a53
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x09626b7f
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x167055ab
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x09626b7f
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x1671c751
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x31b3e3b8
+}
+function {
+  id: 0x16727d19
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1ba8b228
+}
+function {
+  id: 0x167427d5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1dc3d428
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x167437d8
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x30cfc1c2
+}
+function {
+  id: 0x1675f88f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1bb6a471
+}
+function {
+  id: 0x16775128
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1dce0fdd
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x167935b9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1b8590a8
+}
+function {
+  id: 0x167add4d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x167c181d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x116785ed
+  parameter_id: 0xa9183061
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x167dac02
+  return_type_id: 0xf23e8927
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x167f089f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1b2ca025
+  parameter_id: 0x0b1c4148
+}
+function {
+  id: 0x1680acd0
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x0a747547
+  parameter_id: 0x2ed8b8f9
+}
+function {
+  id: 0x1688452c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x184052fc
+}
+function {
+  id: 0x16888592
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x00c72527
+  parameter_id: 0xf435685e
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1689085f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18456730
+}
+function {
+  id: 0x1689bb86
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1847a854
+}
+function {
+  id: 0x168d2c88
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1e820193
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x168f342d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1b55a8f2
+  parameter_id: 0x34dbb6d7
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x16922f49
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x0a9a051a
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x169238cf
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1a6ea392
+  parameter_id: 0x24706e28
+}
+function {
+  id: 0x16983453
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18019702
+}
+function {
+  id: 0x169b9b81
+  return_type_id: 0x48b5725f
+  parameter_id: 0x180f2849
+}
+function {
+  id: 0x169d12f4
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18150d9f
+}
+function {
+  id: 0x169d1e76
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18a2fb63
+  parameter_id: 0x0b7c4f67
+}
+function {
+  id: 0x169ed235
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1c34b0f2
+  parameter_id: 0x42ebe6bd
+}
+function {
+  id: 0x169fe8f6
+  return_type_id: 0x48b5725f
+  parameter_id: 0x181ee594
+}
+function {
+  id: 0x16a18560
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1a1051a0
+  parameter_id: 0x2efe8065
+  parameter_id: 0x18ea6ae3
+}
+function {
+  id: 0x16a1c24e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18e64f74
+}
+function {
+  id: 0x16a2cb2b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18ea6ae3
+}
+function {
+  id: 0x16a446d5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1e9f31fe
+  parameter_id: 0x65b2ef28
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x16a452bb
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1e820193
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x16a7bffa
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1a1051a0
+  parameter_id: 0x2efe8065
+}
+function {
+  id: 0x16a99695
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18e64f74
+  parameter_id: 0x064d6086
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x16ab491c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x14abdd00
+  parameter_id: 0xc7f025a7
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x16b0ef4b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18a2fb63
+}
+function {
+  id: 0x16b50572
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x00836b76
+}
+function {
+  id: 0x16b51975
+  return_type_id: 0x48b5725f
+  parameter_id: 0x19466519
+  parameter_id: 0x19466519
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x16b708df
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x16b96494
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18e64f74
+  parameter_id: 0x064d6086
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0x16b98cae
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18a2fb63
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x16bab633
+  return_type_id: 0x48b5725f
+  parameter_id: 0x188b9e81
+}
+function {
+  id: 0x16bac6e1
+  return_type_id: 0x48b5725f
+  parameter_id: 0x188a5dc9
+}
+function {
+  id: 0x16bbfd4f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x054f691a
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x16be6b3a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x16c2ead1
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x0b3a3706
+  parameter_id: 0x3cfc8982
+  parameter_id: 0x39d2dd7d
+}
+function {
+  id: 0x16c5a8cd
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1977e57b
+}
+function {
+  id: 0x16c82e7e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x16c9c8d5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x19466519
+}
+function {
+  id: 0x16ca4765
+  return_type_id: 0x48b5725f
+  parameter_id: 0x105c8027
+  parameter_id: 0x914dbfdc
+}
+function {
+  id: 0x16cc357f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x16cdd518
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1042c9d1
+  parameter_id: 0x914dbfdc
+}
+function {
+  id: 0x16d018ce
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x19c40476
+}
+function {
+  id: 0x16d1bcdb
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1f66cd75
+  parameter_id: 0x6720d32f
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x16d5560c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x19341e7e
+}
+function {
+  id: 0x16d5fd4b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x16d62662
+  return_type_id: 0x13a69eb7
+  parameter_id: 0x054f691a
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x16d771f6
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1e820193
+  parameter_id: 0x7be80061
+}
+function {
+  id: 0x16d7796c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1b2ca025
+  parameter_id: 0x21003da7
+}
+function {
+  id: 0x16d90158
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1df06cce
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x16dc304e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x19118777
+}
+function {
+  id: 0x16df294f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x191de370
+}
+function {
+  id: 0x16e012de
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18a2fb63
+  parameter_id: 0x10673339
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x16e059b3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x11cffa09
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x16e1ca8f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x19e66c71
+}
+function {
+  id: 0x16e1d6ca
+  return_type_id: 0x48b5725f
+  parameter_id: 0x19e61d64
+}
+function {
+  id: 0x16e58c7b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x19c40476
+  parameter_id: 0x00c72527
+  parameter_id: 0x3f0185ef
+}
+function {
+  id: 0x16e6f635
+  return_type_id: 0x48b5725f
+  parameter_id: 0x19fa9e98
+}
+function {
+  id: 0x16e9508e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x19c40476
+}
+function {
+  id: 0x16ebcbfa
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1b2ca025
+  parameter_id: 0x2e2c982d
+}
+function {
+  id: 0x16ee4350
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x27a7c613
+  parameter_id: 0x27a7c613
+}
+function {
+  id: 0x16f271a5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1a1051a0
+  parameter_id: 0x384c5795
+  parameter_id: 0x384c5795
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x16f68165
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1a41d386
+  parameter_id: 0x3fa905dc
+}
+function {
+  id: 0x16f6d1f5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x27a7c613
+  parameter_id: 0x4585663f
+  parameter_id: 0x06835e9c
+}
+function {
+  id: 0x16fd805c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1997473c
+}
+function {
+  id: 0x16feb101
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1dc3d428
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1700e5ae
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1e62d0f5
+}
+function {
+  id: 0x170370af
+  return_type_id: 0x38040a6c
+  parameter_id: 0x21069feb
+  parameter_id: 0x38040a6c
+}
+function {
+  id: 0x17053351
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x331b9666
+}
+function {
+  id: 0x1705e250
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x332fd615
+}
+function {
+  id: 0x170b1003
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1e2533ab
+  parameter_id: 0x06835e9c
+}
+function {
+  id: 0x170fd4b0
+  return_type_id: 0x48b5725f
+  parameter_id: 0x174acf71
+  parameter_id: 0x914dbfdc
+}
+function {
+  id: 0x17107dc5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d4da256
+  parameter_id: 0x36d130d1
+}
+function {
+  id: 0x17111d79
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1e2533ab
+}
+function {
+  id: 0x1713ba51
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1830dd64
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x1713ee74
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x171a00e6
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x310ec01d
+}
+function {
+  id: 0x171c8621
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x09626b7f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x172842ec
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x310ec01d
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x172b8b93
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x172bc81f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x17dabdcd
+  parameter_id: 0x914dbfdc
+}
+function {
+  id: 0x172d1e74
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1f97e1e4
+  parameter_id: 0x18bd6530
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x172dc92c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18019702
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x172e6ba7
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x39cdabcf
+}
+function {
+  id: 0x172ea7dd
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1edbd939
+}
+function {
+  id: 0x17306592
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1da466a8
+  parameter_id: 0x3621da99
+  parameter_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x1731208f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1ea5c473
+}
+function {
+  id: 0x17318506
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x3e360385
+}
+function {
+  id: 0x1732fd5e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x269c8e40
+  parameter_id: 0x92233392
+  parameter_id: 0x01222f7d
+  parameter_id: 0x1d33485a
+  parameter_id: 0x1d19a9d5
+}
+function {
+  id: 0x1737ea41
+  return_type_id: 0x48b5725f
+  parameter_id: 0x126add1c
+  parameter_id: 0xc9082b19
+  parameter_id: 0x4585663f
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x1738d1f7
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1e820193
+}
+function {
+  id: 0x1739908d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1e870478
+}
+function {
+  id: 0x1739accf
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1dc3d428
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x173c840d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1e93567a
+}
+function {
+  id: 0x173d585f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x3e360385
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x173d80e7
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1e9745d3
+}
+function {
+  id: 0x173d90e9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1e9705eb
+}
+function {
+  id: 0x173dd32d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x38fa32ef
+}
+function {
+  id: 0x1744a638
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1f73dead
+}
+function {
+  id: 0x174aa4cd
+  return_type_id: 0x48b5725f
+  parameter_id: 0x104d069a
+  parameter_id: 0xf435685e
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x174dd551
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1dc3d428
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x17519b9c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1f73dead
+  parameter_id: 0x054f691a
+}
+function {
+  id: 0x1751f109
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x79be7582
+}
+function {
+  id: 0x17592b81
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1977e57b
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x17620981
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d7ca769
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x176c2cc0
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x176dde0e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x2e18f543
+  parameter_id: 0x2e18f543
+}
+function {
+  id: 0x176fe039
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1c2f6323
+  parameter_id: 0x3f1a5886
+}
+function {
+  id: 0x177cb160
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1333434c
+  parameter_id: 0xc9082b19
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x177f3bf9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1f9da9a8
+}
+function {
+  id: 0x17803a85
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x1259e377
+}
+function {
+  id: 0x1780c40c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1dce0fdd
+  parameter_id: 0x1ad7b8dd
+  parameter_id: 0x01222f7d
+}
+function {
+  id: 0x1780c6b7
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1a1051a0
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1787097a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1dce0fdd
+  parameter_id: 0x1b36c7a2
+}
+function {
+  id: 0x1788ddaf
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x106029c6
+}
+function {
+  id: 0x178b9178
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d1533af
+  parameter_id: 0x15a30023
+}
+function {
+  id: 0x178c60b8
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1c50c4ad
+}
+function {
+  id: 0x178d16e8
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1c551dee
+}
+function {
+  id: 0x1793895b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1c2f6323
+}
+function {
+  id: 0x17939939
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1dc3d428
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x179e48e8
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x4a500dc8
+}
+function {
+  id: 0x17a116e4
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1ce51dde
+}
+function {
+  id: 0x17a27dbe
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d1533af
+  parameter_id: 0x1e820193
+  parameter_id: 0x15a30023
+}
+function {
+  id: 0x17a6fad3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18a2fb63
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x17a71216
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x1d44326e
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x17a7157e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d1533af
+  parameter_id: 0x1e820193
+}
+function {
+  id: 0x17a9b884
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1a1051a0
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x17a9fee1
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1cc6bdca
+}
+function {
+  id: 0x17abf19b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1cce8023
+}
+function {
+  id: 0x17ae1fe2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18e64f74
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x17ae8fc5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18a2fb63
+  parameter_id: 0x4585663f
+  parameter_id: 0x22b36393
+  parameter_id: 0x37493e04
+  parameter_id: 0x18bd6530
+  parameter_id: 0xb0c2eb21
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x17af5a82
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x4585663f
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0x17b07c1e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x17b61d24
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d65d221
+  parameter_id: 0x1dce0fdd
+}
+function {
+  id: 0x17b79b8a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18a2fb63
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x17b7d7d6
+  return_type_id: 0x48b5725f
+  parameter_id: 0x18e64f74
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x17b914a8
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x1c126813
+}
+function {
+  id: 0x17be5258
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x1dc3d428
+}
+function {
+  id: 0x17c25ae3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d4da256
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x17c77849
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d7ca769
+}
+function {
+  id: 0x17c95d08
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d44326e
+}
+function {
+  id: 0x17cb3906
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d4da256
+}
+function {
+  id: 0x17cc14a2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1e9f31fe
+  parameter_id: 0x3fa672fd
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x17cd01f5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x054f691a
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x17ce1ca0
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d5934ce
+}
+function {
+  id: 0x17d12ddf
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d25f132
+}
+function {
+  id: 0x17d8b994
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1e9f31fe
+  parameter_id: 0x3fa672fd
+  parameter_id: 0x65b2ef28
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x17dc60ac
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x054f691a
+}
+function {
+  id: 0x17dceb84
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d12e85e
+}
+function {
+  id: 0x17dd1d78
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d1533af
+}
+function {
+  id: 0x17de3be6
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d19a9d5
+}
+function {
+  id: 0x17e01d04
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1b36c7a2
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x17e4a48e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1df3d475
+}
+function {
+  id: 0x17e5b6f5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x17e8338e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x0d821a01
+}
+function {
+  id: 0x17e8a499
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1dc3d428
+}
+function {
+  id: 0x17ebd264
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1dce0fdd
+}
+function {
+  id: 0x17ee95ba
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1e9f31fe
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x17f14839
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1da466a8
+}
+function {
+  id: 0x17f60e93
+  return_type_id: 0x3c1f949c
+  parameter_id: 0x11e6864c
+}
+function {
+  id: 0x17fb42d3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1b36c7a2
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x17fcea78
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1e9f31fe
+  parameter_id: 0x3399c453
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x17ffed59
+  return_type_id: 0x48b5725f
+  parameter_id: 0x1d5934ce
+  parameter_id: 0x00a43052
+  parameter_id: 0xcd84e3cd
+}
+function {
+  id: 0x1810e728
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2215f16e
+  parameter_id: 0x00c72527
+  parameter_id: 0x3f0185ef
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1817bd12
+  return_type_id: 0x48b5725f
+  parameter_id: 0x223fb206
+}
+function {
+  id: 0x181a6fb5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2208f89a
+}
+function {
+  id: 0x181d9d22
+  return_type_id: 0x48b5725f
+  parameter_id: 0x221732c5
+}
+function {
+  id: 0x181ece84
+  return_type_id: 0x48b5725f
+  parameter_id: 0x221a7c5c
+}
+function {
+  id: 0x181f26fe
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2e8d5f05
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x18213096
+  return_type_id: 0x48b5725f
+  parameter_id: 0x22e58417
+}
+function {
+  id: 0x182284a8
+  return_type_id: 0x48b5725f
+  parameter_id: 0x249959de
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x182b2835
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2668e644
+  parameter_id: 0x4a500dc8
+}
+function {
+  id: 0x182beb86
+  return_type_id: 0x48b5725f
+  parameter_id: 0x22cee855
+}
+function {
+  id: 0x184069d1
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2360e10b
+}
+function {
+  id: 0x184b49a4
+  return_type_id: 0x48b5725f
+  parameter_id: 0x234c60dd
+}
+function {
+  id: 0x18571a9d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x23f5bb5c
+  parameter_id: 0x0c897676
+}
+function {
+  id: 0x185a3adc
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2309ad3e
+}
+function {
+  id: 0x185a605b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x210b9681
+  parameter_id: 0x20351a02
+}
+function {
+  id: 0x185ada07
+  return_type_id: 0x48b5725f
+  parameter_id: 0x25782362
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x185b3ef2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x23e856d0
+  parameter_id: 0x0e5eb556
+}
+function {
+  id: 0x185cfa53
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2560a232
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x185d7c34
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2314b69f
+}
+function {
+  id: 0x185fe7f3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x23f5bb5c
+  parameter_id: 0x0d817b8b
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x1864769e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x23f09c34
+}
+function {
+  id: 0x18653f44
+  return_type_id: 0x48b5725f
+  parameter_id: 0x23f5bb5c
+}
+function {
+  id: 0x18699f39
+  return_type_id: 0x48b5725f
+  parameter_id: 0x238b8721
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x0483e6f8
+}
+function {
+  id: 0x1874e22c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x25653b02
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x187753e7
+  return_type_id: 0x48b5725f
+  parameter_id: 0x210b9681
+  parameter_id: 0x2b79f509
+}
+function {
+  id: 0x187a07fb
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x3267a784
+  parameter_id: 0x0483e6f8
+}
+function {
+  id: 0x187ab05b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x238b8721
+}
+function {
+  id: 0x187d7a7f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x23f09c34
+  parameter_id: 0x06433852
+}
+function {
+  id: 0x1880675b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2060db23
+}
+function {
+  id: 0x188219ae
+  return_type_id: 0x48b5725f
+  parameter_id: 0x23167dcb
+  parameter_id: 0x37f5d3d4
+}
+function {
+  id: 0x188533b1
+  return_type_id: 0x48b5725f
+  parameter_id: 0x23f09c34
+  parameter_id: 0x38514bfb
+}
+function {
+  id: 0x188729ca
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2170d06d
+  parameter_id: 0x11cfee5a
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x18875f70
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x31dafbc4
+}
+function {
+  id: 0x1888895b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x25653b02
+  parameter_id: 0x52658204
+}
+function {
+  id: 0x189003fa
+  return_type_id: 0x48b5725f
+  parameter_id: 0x238b8721
+  parameter_id: 0x3258b271
+  parameter_id: 0x8f45a284
+}
+function {
+  id: 0x189049e8
+  return_type_id: 0x48b5725f
+  parameter_id: 0x235889e8
+  parameter_id: 0x378e8064
+}
+function {
+  id: 0x1893b067
+  return_type_id: 0x48b5725f
+  parameter_id: 0x23f09c34
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x18944084
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2b0e3ff1
+  parameter_id: 0xb3e7bac9
+}
+function {
+  id: 0x189472bc
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2f73da3b
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x18951485
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2035145b
+}
+function {
+  id: 0x1896e056
+  return_type_id: 0x48b5725f
+  parameter_id: 0x23f09c34
+  parameter_id: 0x3f44b979
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x189723be
+  return_type_id: 0x48b5725f
+  parameter_id: 0x23f09c34
+  parameter_id: 0x3f44b979
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0x1899030d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x20054a7b
+}
+function {
+  id: 0x189b5d05
+  return_type_id: 0x0beab59b
+  parameter_id: 0x1749fb69
+  parameter_id: 0x391f15ea
+  parameter_id: 0x32a623d7
+}
+function {
+  id: 0x189c344a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x23f09c34
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x189ddb68
+  return_type_id: 0x48b5725f
+  parameter_id: 0x210b9681
+  parameter_id: 0x10134e31
+  parameter_id: 0x1c898f28
+}
+function {
+  id: 0x189df6bb
+  return_type_id: 0x48b5725f
+  parameter_id: 0x23f09c34
+  parameter_id: 0x3e600958
+}
+function {
+  id: 0x18a0bc95
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2953a412
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x18a3b8d2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x26e55184
+  parameter_id: 0x60af483b
+}
+function {
+  id: 0x18a8127c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x249959de
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x18a94681
+  return_type_id: 0x48b5725f
+  parameter_id: 0x23f09c34
+  parameter_id: 0x334c07d5
+}
+function {
+  id: 0x18aa0cce
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2314b69f
+  parameter_id: 0x3ddc3e92
+}
+function {
+  id: 0x18acdc46
+  return_type_id: 0x48b5725f
+  parameter_id: 0x20d23755
+}
+function {
+  id: 0x18ad47ee
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x3267a784
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x18ae949f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x23f09c34
+  parameter_id: 0x30d2f50a
+  parameter_id: 0x26a75523
+}
+function {
+  id: 0x18b1d802
+  return_type_id: 0x48b5725f
+  parameter_id: 0x23f09c34
+  parameter_id: 0x356ba728
+}
+function {
+  id: 0x18b7067a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x221732c5
+  parameter_id: 0x2efe8065
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x18b8b96a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2b0e3ff1
+  parameter_id: 0xb3e7bac9
+  parameter_id: 0xb3e7bac9
+}
+function {
+  id: 0x18befa18
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2360e10b
+  parameter_id: 0x3e10b518
+  parameter_id: 0x1b44744f
+}
+function {
+  id: 0x18c46588
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2170d06d
+}
+function {
+  id: 0x18c8f1d0
+  return_type_id: 0xa1ef211c
+  parameter_id: 0x16886f92
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x18cc928e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x21530c77
+}
+function {
+  id: 0x18d04dd3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x21207103
+}
+function {
+  id: 0x18d41dd9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2131312a
+}
+function {
+  id: 0x18d7c9fc
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2efe8065
+  parameter_id: 0xfc0e1dbd
+}
+function {
+  id: 0x18d85efa
+  return_type_id: 0x48b5725f
+  parameter_id: 0x21003da7
+}
+function {
+  id: 0x18d9f669
+  return_type_id: 0x48b5725f
+  parameter_id: 0x21069feb
+}
+function {
+  id: 0x18daa769
+  return_type_id: 0x48b5725f
+  parameter_id: 0x210bdbea
+}
+function {
+  id: 0x18db21cb
+  return_type_id: 0x48b5725f
+  parameter_id: 0x210dc160
+}
+function {
+  id: 0x18ea2469
+  return_type_id: 0x48b5725f
+  parameter_id: 0x21530c77
+  parameter_id: 0x09adb9f4
+}
+function {
+  id: 0x18efced4
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2309ad3e
+  parameter_id: 0x2cf6d46d
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x18f8b885
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2208f89a
+  parameter_id: 0x3e6239e1
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x18ff0083
+  return_type_id: 0x48b5725f
+  parameter_id: 0x23a73732
+  parameter_id: 0x23a73732
+}
+function {
+  id: 0x190134ec
+  return_type_id: 0x48b5725f
+  parameter_id: 0x266595fc
+}
+function {
+  id: 0x19026802
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2668e644
+}
+function {
+  id: 0x1907d847
+  return_type_id: 0x48b5725f
+  parameter_id: 0x246dc7d4
+  parameter_id: 0x213e084f
+}
+function {
+  id: 0x190c7a2d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2208f89a
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x19126b2a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2628eae6
+}
+function {
+  id: 0x1912c3c7
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2668e644
+  parameter_id: 0x042af17e
+}
+function {
+  id: 0x19165aaa
+  return_type_id: 0x48b5725f
+  parameter_id: 0x25653b02
+  parameter_id: 0x35d17e4b
+}
+function {
+  id: 0x191d871c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x24954792
+  parameter_id: 0x2821daec
+}
+function {
+  id: 0x192105f2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x26e55184
+}
+function {
+  id: 0x1923cb99
+  return_type_id: 0x48b5725f
+  parameter_id: 0x26ee682a
+}
+function {
+  id: 0x1924a178
+  return_type_id: 0x48b5725f
+  parameter_id: 0x25653b02
+  parameter_id: 0x396f8ae8
+}
+function {
+  id: 0x192a9179
+  return_type_id: 0x48b5725f
+  parameter_id: 0x26ad5dc1
+  parameter_id: 0x0665e6b6
+}
+function {
+  id: 0x192d11cd
+  return_type_id: 0x48b5725f
+  parameter_id: 0x276a1779
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x1932531b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x26a80a21
+}
+function {
+  id: 0x193306e3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x26ad5dc1
+}
+function {
+  id: 0x19394f8b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x26847863
+}
+function {
+  id: 0x1942d44d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x276a1779
+}
+function {
+  id: 0x194776d1
+  return_type_id: 0x48b5725f
+  parameter_id: 0x246dc7d4
+  parameter_id: 0x3316fc74
+  parameter_id: 0x20351a02
+}
+function {
+  id: 0x19493769
+  return_type_id: 0x48b5725f
+  parameter_id: 0x27459bea
+}
+function {
+  id: 0x194a7d01
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2668e644
+  parameter_id: 0x120540d1
+}
+function {
+  id: 0x194c85c5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x27459bea
+  parameter_id: 0x030b9acf
+  parameter_id: 0x26731c99
+}
+function {
+  id: 0x194efd9a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x275ab027
+}
+function {
+  id: 0x1950a0f3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x27459bea
+  parameter_id: 0x0665e6b6
+}
+function {
+  id: 0x1950a68f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x26a80a21
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x1951a486
+  return_type_id: 0x48b5725f
+  parameter_id: 0x24c1f7c9
+  parameter_id: 0x3e6239e1
+}
+function {
+  id: 0x1958e6c4
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2170d06d
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x195942ac
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2efe8065
+  parameter_id: 0x96c0c5e1
+  parameter_id: 0x96c0c5e1
+}
+function {
+  id: 0x1961202f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2b754442
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x1961cb10
+  return_type_id: 0x48b5725f
+  parameter_id: 0x24e24923
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x1961e0a6
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2131312a
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x19627659
+  return_type_id: 0x48b5725f
+  parameter_id: 0x230825f0
+  parameter_id: 0x4e0bad92
+}
+function {
+  id: 0x19658c89
+  return_type_id: 0x48b5725f
+  parameter_id: 0x27f7746a
+}
+function {
+  id: 0x1966b0af
+  return_type_id: 0x48b5725f
+  parameter_id: 0x25653b02
+  parameter_id: 0x2f99f236
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1966e93b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x27d16870
+  parameter_id: 0x02b8ad1f
+}
+function {
+  id: 0x196a7daf
+  return_type_id: 0x48b5725f
+  parameter_id: 0x26ee682a
+  parameter_id: 0x13580d6c
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x196c5dcc
+  return_type_id: 0x48b5725f
+  parameter_id: 0x27d0317f
+}
+function {
+  id: 0x196e8ac4
+  return_type_id: 0xf23e8927
+  parameter_id: 0x3e146274
+}
+function {
+  id: 0x197157bd
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2314b69f
+  parameter_id: 0x4585663f
+  parameter_id: 0xeeed68e6
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x19752ade
+  return_type_id: 0x48b5725f
+  parameter_id: 0x27b5ed37
+}
+function {
+  id: 0x197597d7
+  return_type_id: 0x48b5725f
+  parameter_id: 0x27b71910
+}
+function {
+  id: 0x19794f35
+  return_type_id: 0x48b5725f
+  parameter_id: 0x27847a9a
+}
+function {
+  id: 0x197a8250
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2e94a1e1
+  parameter_id: 0x907538bd
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x197c612f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x29c600bb
+  parameter_id: 0xe56c2486
+}
+function {
+  id: 0x197db1c7
+  return_type_id: 0x48b5725f
+  parameter_id: 0x26a80a21
+  parameter_id: 0x13f8b706
+}
+function {
+  id: 0x197f4904
+  return_type_id: 0x48b5725f
+  parameter_id: 0x246dc7d4
+  parameter_id: 0x3f1a5886
+}
+function {
+  id: 0x19811e6e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x221732c5
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x19832066
+  return_type_id: 0x48b5725f
+  parameter_id: 0x246dc7d4
+}
+function {
+  id: 0x198668f4
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2668e644
+  parameter_id: 0x21003da7
+}
+function {
+  id: 0x1989559a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x246dc7d4
+  parameter_id: 0x029d7f27
+}
+function {
+  id: 0x198f0b17
+  return_type_id: 0x48b5725f
+  parameter_id: 0x245d6a13
+}
+function {
+  id: 0x19a0c3db
+  return_type_id: 0x48b5725f
+  parameter_id: 0x24e24923
+}
+function {
+  id: 0x19a776c5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2a4c6b85
+  parameter_id: 0xeb0f6de6
+}
+function {
+  id: 0x19a9e069
+  return_type_id: 0x48b5725f
+  parameter_id: 0x24c6c7eb
+}
+function {
+  id: 0x19ad7fb1
+  return_type_id: 0x48b5725f
+  parameter_id: 0x24d4b888
+}
+function {
+  id: 0x19ae6079
+  return_type_id: 0x48b5725f
+  parameter_id: 0x24d8c7ab
+}
+function {
+  id: 0x19b6a09f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x24bbc433
+}
+function {
+  id: 0x19ba6fc0
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2488f94c
+}
+function {
+  id: 0x19bd0077
+  return_type_id: 0x48b5725f
+  parameter_id: 0x24954792
+}
+function {
+  id: 0x19be07e4
+  return_type_id: 0x48b5725f
+  parameter_id: 0x249959de
+}
+function {
+  id: 0x19c0791f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2560a232
+}
+function {
+  id: 0x19c11f53
+  return_type_id: 0x48b5725f
+  parameter_id: 0x25653b02
+}
+function {
+  id: 0x19c299cd
+  return_type_id: 0x48b5725f
+  parameter_id: 0x25782362
+  parameter_id: 0x0130219f
+}
+function {
+  id: 0x19c46120
+  return_type_id: 0x48b5725f
+  parameter_id: 0x23a73732
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x19c56221
+  return_type_id: 0x48b5725f
+  parameter_id: 0x25520d15
+  parameter_id: 0x026c3dea
+}
+function {
+  id: 0x19c6594b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x25782362
+}
+function {
+  id: 0x19c71538
+  return_type_id: 0x48b5725f
+  parameter_id: 0x257d12af
+}
+function {
+  id: 0x19c83efb
+  return_type_id: 0x48b5725f
+  parameter_id: 0x25782362
+  parameter_id: 0x0399ec3e
+}
+function {
+  id: 0x19cc7303
+  return_type_id: 0x48b5725f
+  parameter_id: 0x26a80a21
+  parameter_id: 0x3e10b518
+  parameter_id: 0x198b3170
+}
+function {
+  id: 0x19ccd2d6
+  return_type_id: 0x48b5725f
+  parameter_id: 0x25520d15
+}
+function {
+  id: 0x19d93429
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2668e644
+  parameter_id: 0x358ff5b7
+  parameter_id: 0x358ff5b7
+}
+function {
+  id: 0x19db51f9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x25782362
+  parameter_id: 0x0130219f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x19e4b813
+  return_type_id: 0x48b5725f
+  parameter_id: 0x246dc7d4
+  parameter_id: 0x19e61d64
+}
+function {
+  id: 0x19e63317
+  return_type_id: 0x48b5725f
+  parameter_id: 0x238b8721
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x19ee8463
+  return_type_id: 0x48b5725f
+  parameter_id: 0x25db57c0
+}
+function {
+  id: 0x19f3aad4
+  return_type_id: 0x48b5725f
+  parameter_id: 0x25782362
+  parameter_id: 0x0d7ce7cc
+}
+function {
+  id: 0x19f59ef9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x25b73daa
+}
+function {
+  id: 0x19fe25be
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2599d0b6
+}
+function {
+  id: 0x1a011f3a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2a653aa6
+}
+function {
+  id: 0x1a04ad27
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2aa0b9bb
+  parameter_id: 0x0cbf60eb
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x1a0b4b72
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2a4c6b85
+}
+function {
+  id: 0x1a0ce609
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2a52de6b
+}
+function {
+  id: 0x1a14825f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x295c7202
+  parameter_id: 0x35f7f02e
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x1a162f77
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2b8a97e8
+  parameter_id: 0x1b36c7a2
+}
+function {
+  id: 0x1a1815c7
+  return_type_id: 0x48b5725f
+  parameter_id: 0x291e8a5b
+  parameter_id: 0x33df40aa
+  parameter_id: 0x21590b1d
+  parameter_id: 0x353f5bda
+  parameter_id: 0x66ba4c2f
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x1a196826
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2cd31328
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x1a1970c3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2b8a97e8
+  parameter_id: 0x1b36c7a2
+  parameter_id: 0x33756485
+  parameter_id: 0xe0bb64fa
+}
+function {
+  id: 0x1a1a3ffb
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2b8a97e8
+  parameter_id: 0x1b36c7a2
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x1a27e882
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2afee447
+}
+function {
+  id: 0x1a2871ff
+  return_type_id: 0x283d9b05
+  parameter_id: 0x0ca27481
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x1a2d13ca
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2e8d5f05
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1a307ffd
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2aa0b9bb
+}
+function {
+  id: 0x1a31e412
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2efe8065
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1a33cdc3
+  return_type_id: 0x2821daec
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x1a34ef81
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2cc0f57b
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1a3b16dd
+  return_type_id: 0x48b5725f
+  parameter_id: 0x29a77f06
+  parameter_id: 0x32a623d7
+}
+function {
+  id: 0x1a405f2d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2b603afb
+}
+function {
+  id: 0x1a450083
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2b754442
+}
+function {
+  id: 0x1a5a9df1
+  return_type_id: 0x48b5725f
+  parameter_id: 0x29c600bb
+  parameter_id: 0x2cd31328
+}
+function {
+  id: 0x1a5bde6f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2b0e3ff1
+}
+function {
+  id: 0x1a5c3241
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2f73da3b
+  parameter_id: 0x4585663f
+  parameter_id: 0x39c0701e
+  parameter_id: 0x33756485
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x1a5de19e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2b16c036
+}
+function {
+  id: 0x1a5debf2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2f73da3b
+  parameter_id: 0x4585663f
+  parameter_id: 0x3ea6bd8c
+  parameter_id: 0x33756485
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x1a5fed1b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2b1ef221
+}
+function {
+  id: 0x1a637dbb
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2bc93f35
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x1a6e4625
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x3ac2a209
+  parameter_id: 0x0483e6f8
+  parameter_id: 0xf435685e
+  parameter_id: 0x0379c823
+}
+function {
+  id: 0x1a6f19ba
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2bdd20a6
+}
+function {
+  id: 0x1a70a9d4
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2936263d
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x1a780013
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2ba06eea
+  parameter_id: 0x02128e8a
+}
+function {
+  id: 0x1a7af469
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2b8a97e8
+}
+function {
+  id: 0x1a7b957f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2b8f13b3
+}
+function {
+  id: 0x1a7f8698
+  return_type_id: 0x48b5725f
+  parameter_id: 0x25653b02
+  parameter_id: 0xefa672c8
+}
+function {
+  id: 0x1a803783
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2b79f509
+  parameter_id: 0x3186d48b
+}
+function {
+  id: 0x1a810356
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2131312a
+  parameter_id: 0x9547a3da
+}
+function {
+  id: 0x1a816041
+  return_type_id: 0x48b5725f
+  parameter_id: 0x29c600bb
+  parameter_id: 0x1a2c7f0e
+}
+function {
+  id: 0x1a840b6a
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x3ac2a209
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf435685e
+  parameter_id: 0x0379c823
+}
+function {
+  id: 0x1a847502
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2e029f76
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1a857204
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2b79f509
+  parameter_id: 0x33756485
+  parameter_id: 0x3e75499e
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1a869c16
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2b1ef221
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x1a8e27b5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2859d899
+}
+function {
+  id: 0x1a902728
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2821daec
+}
+function {
+  id: 0x1a92fc9b
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x38f39751
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x1a94c17b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2b79f509
+  parameter_id: 0x34bb6aad
+}
+function {
+  id: 0x1a954b21
+  return_type_id: 0x48b5725f
+  parameter_id: 0x292ab2e2
+  parameter_id: 0x1259e377
+  parameter_id: 0x3b461cc8
+}
+function {
+  id: 0x1a9663f9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2b79f509
+  parameter_id: 0x3413ca0c
+}
+function {
+  id: 0x1a972487
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2b79f509
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x1a9c8a01
+  return_type_id: 0x48b5725f
+  parameter_id: 0x28136e4b
+}
+function {
+  id: 0x1a9fd28f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2aa0b9bb
+  parameter_id: 0x2b20aa80
+  parameter_id: 0x0cbf60eb
+}
+function {
+  id: 0x1aa3070d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x292ab2e2
+  parameter_id: 0x1259e377
+  parameter_id: 0xe276adef
+}
+function {
+  id: 0x1aa50604
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2b8a97e8
+  parameter_id: 0x37fc9b61
+}
+function {
+  id: 0x1aa56a0d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x28f4ee78
+}
+function {
+  id: 0x1aab662c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x29c600bb
+  parameter_id: 0x11dd441a
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x1aabe458
+  return_type_id: 0x48b5725f
+  parameter_id: 0x28ced72f
+}
+function {
+  id: 0x1aad5bf3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2a285513
+  parameter_id: 0x2fc7c937
+}
+function {
+  id: 0x1ab3405a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2b79f509
+  parameter_id: 0x3d5b22db
+}
+function {
+  id: 0x1ab450bd
+  return_type_id: 0x48b5725f
+  parameter_id: 0x21d7b2e4
+  parameter_id: 0x92233392
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1ab9dd06
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2ef43f67
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1abb72c6
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2efe8065
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1abe6e05
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2b79f509
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x1ac748a8
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2f0e69de
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1ac7c2a4
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2a4c6b85
+  parameter_id: 0x30b384f8
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0x1ac96dda
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2a9beac2
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x1accb897
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2953a412
+}
+function {
+  id: 0x1acfa1bf
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2b79f509
+  parameter_id: 0x22635bb2
+}
+function {
+  id: 0x1ad2fd2b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x292ab2e2
+}
+function {
+  id: 0x1ad37d09
+  return_type_id: 0x48b5725f
+  parameter_id: 0x292cb268
+}
+function {
+  id: 0x1ad45e5f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x28e1a5ae
+  parameter_id: 0x1d19a9d5
+}
+function {
+  id: 0x1ad5d81c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2936263d
+}
+function {
+  id: 0x1ad9d0a2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x290604c6
+}
+function {
+  id: 0x1adff305
+  return_type_id: 0x48b5725f
+  parameter_id: 0x291e8a5b
+}
+function {
+  id: 0x1ae27633
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2aa0b9bb
+  parameter_id: 0x33756485
+  parameter_id: 0x7f7172c7
+}
+function {
+  id: 0x1ae9d1bd
+  return_type_id: 0x48b5725f
+  parameter_id: 0x29c600bb
+}
+function {
+  id: 0x1aebcc30
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2a285513
+  parameter_id: 0x3e6239e1
+}
+function {
+  id: 0x1aecf5d9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x29d29128
+}
+function {
+  id: 0x1af18e52
+  return_type_id: 0x48b5725f
+  parameter_id: 0x29a77f06
+}
+function {
+  id: 0x1af1d754
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2afee447
+  parameter_id: 0x358ff5b7
+}
+function {
+  id: 0x1af67ecb
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2ed870a7
+  parameter_id: 0x760e8adc
+  parameter_id: 0x00256a1d
+}
+function {
+  id: 0x1afeafa7
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2b0e3ff1
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x1b00783f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2e60a6b2
+}
+function {
+  id: 0x1b0d4d60
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2e5473cd
+}
+function {
+  id: 0x1b137798
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2e2c982d
+}
+function {
+  id: 0x1b1735f7
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2fb647c0
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x1b17be29
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2e94a1e1
+  parameter_id: 0x0ab1f084
+}
+function {
+  id: 0x1b18f64e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2e029f76
+}
+function {
+  id: 0x1b1de99f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2cac4c27
+  parameter_id: 0x2baac173
+}
+function {
+  id: 0x1b255e4a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2ef43f67
+}
+function {
+  id: 0x1b27059e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2efd5036
+}
+function {
+  id: 0x1b27f18a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2efe8065
+}
+function {
+  id: 0x1b28e71c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2dbdd7fc
+  parameter_id: 0x34bb6aad
+  parameter_id: 0x34bb6aad
+}
+function {
+  id: 0x1b29bd73
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2170d06d
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x1b2fba02
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2edfae47
+}
+function {
+  id: 0x1b338a63
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2e94a1e1
+  parameter_id: 0x0258f96e
+  parameter_id: 0x1e41b656
+}
+function {
+  id: 0x1b341a0e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2e94a1e1
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x1b357a97
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x3fac1d22
+  parameter_id: 0x0483e6f8
+  parameter_id: 0xf435685e
+  parameter_id: 0x27a7c613
+}
+function {
+  id: 0x1b3ae799
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2e8ad82b
+}
+function {
+  id: 0x1b3aea40
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2e8aef4d
+}
+function {
+  id: 0x1b3b0652
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2e8d5f05
+}
+function {
+  id: 0x1b3b60ec
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2e8ed696
+  parameter_id: 0x002136b3
+}
+function {
+  id: 0x1b3be436
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2e8ed696
+}
+function {
+  id: 0x1b3cbbb4
+  return_type_id: 0x48b5725f
+  parameter_id: 0x28e1a5ae
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1b3d79eb
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2e94a1e1
+}
+function {
+  id: 0x1b3e6610
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2efe8065
+  parameter_id: 0x0665e6b6
+}
+function {
+  id: 0x1b445821
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2efe8065
+  parameter_id: 0x18ea6ae3
+}
+function {
+  id: 0x1b455a16
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2f742e16
+}
+function {
+  id: 0x1b45f00a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2efd5036
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x1b4c69f5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2cba2cd4
+  parameter_id: 0x3eacd4c8
+}
+function {
+  id: 0x1b4d4832
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2efe8065
+  parameter_id: 0x1aae6e0f
+}
+function {
+  id: 0x1b4fa20e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2f5fce77
+}
+function {
+  id: 0x1b548b1c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2e8d5f05
+  parameter_id: 0x1be353bc
+}
+function {
+  id: 0x1b54f3ab
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2f3288e0
+}
+function {
+  id: 0x1b573ecd
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2cac4c27
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0x1b5c7355
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2b79f509
+  parameter_id: 0x4585663f
+  parameter_id: 0x31287056
+}
+function {
+  id: 0x1b5d6044
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x3f222c68
+  parameter_id: 0x18bd6530
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf435685e
+  parameter_id: 0x27a7c613
+}
+function {
+  id: 0x1b5d8a09
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x3f222c68
+  parameter_id: 0x18bd6530
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x0483e6f8
+  parameter_id: 0xf435685e
+  parameter_id: 0x27a7c613
+}
+function {
+  id: 0x1b6452d7
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2ca8f248
+  parameter_id: 0x358ff5b7
+}
+function {
+  id: 0x1b695da8
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2ed870a7
+  parameter_id: 0x11c404ba
+}
+function {
+  id: 0x1b69a3de
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2fc7c937
+}
+function {
+  id: 0x1b6c90e9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2e029f76
+  parameter_id: 0x1d19a9d5
+}
+function {
+  id: 0x1b6d6e11
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2c32dd96
+  parameter_id: 0x3e6239e1
+}
+function {
+  id: 0x1b71ad71
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2fa7f388
+}
+function {
+  id: 0x1b74fe1c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x25653b02
+  parameter_id: 0xad7853f7
+}
+function {
+  id: 0x1b7552f1
+  return_type_id: 0x48b5725f
+  parameter_id: 0x29c600bb
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1b7558dd
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2e029f76
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1b75c063
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2fb647c0
+}
+function {
+  id: 0x1b77cf3e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2e029f76
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x1b7e7271
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2f988f89
+}
+function {
+  id: 0x1b841a62
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2ef43f67
+  parameter_id: 0x2afee447
+  parameter_id: 0x2afee447
+}
+function {
+  id: 0x1b8b565c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2a9beac2
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x1b939067
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2c2f07d2
+}
+function {
+  id: 0x1b939af9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2cc0f57b
+  parameter_id: 0x0f765b6d
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x1b96d351
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2131312a
+  parameter_id: 0xd0b3a203
+}
+function {
+  id: 0x1b9b3280
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2d66740a
+  parameter_id: 0x18bd6530
+  parameter_id: 0xe02e14d6
+}
+function {
+  id: 0x1ba0fc33
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2e029f76
+  parameter_id: 0x2e029f76
+}
+function {
+  id: 0x1ba136c5
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x3d435d11
+}
+function {
+  id: 0x1ba15ebc
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2ef43f67
+  parameter_id: 0x21003da7
+}
+function {
+  id: 0x1ba3b87d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2efe8065
+  parameter_id: 0x221732c5
+  parameter_id: 0x3054f2d7
+}
+function {
+  id: 0x1ba86ccd
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2cc0f57b
+}
+function {
+  id: 0x1bac9559
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2cd31328
+}
+function {
+  id: 0x1bb3429a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2cac4c27
+}
+function {
+  id: 0x1bbb411c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2c8c423d
+}
+function {
+  id: 0x1bbb6bce
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2afee447
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1bbbd739
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2c8e1aaa
+}
+function {
+  id: 0x1bc162d2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2b16c036
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1bc1cc91
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2d66740a
+}
+function {
+  id: 0x1bc30592
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2cc0f57b
+  parameter_id: 0x1e820193
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1bc4f4c8
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2936263d
+  parameter_id: 0x4585663f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1bc5144e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2ef43f67
+  parameter_id: 0x3ada60b4
+  parameter_id: 0x2c8e1aaa
+}
+function {
+  id: 0x1bc52dc4
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2efd5036
+  parameter_id: 0x388a169b
+}
+function {
+  id: 0x1bc6cc7f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2efe8065
+  parameter_id: 0x384f7d7c
+}
+function {
+  id: 0x1bc8d87a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2efe8065
+  parameter_id: 0x384c5795
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1bc9c5d4
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2efe8065
+  parameter_id: 0x384c5795
+  parameter_id: 0x384c5795
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1bcc9c54
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2936263d
+  parameter_id: 0x4585663f
+  parameter_id: 0x391f15ea
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1bcd63e2
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x3d8deab7
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x1bcda123
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2e94a1e1
+  parameter_id: 0x33756485
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x1bce2f71
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2c2f07d2
+  parameter_id: 0x176fc5b8
+}
+function {
+  id: 0x1bd0b1ab
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2fb647c0
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x1bd0f743
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2d229b41
+}
+function {
+  id: 0x1bd1b70e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2cac4c27
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x1bd38750
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2e8ad82b
+  parameter_id: 0x3a583251
+}
+function {
+  id: 0x1bd4554d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2e2c982d
+  parameter_id: 0x31c8b544
+}
+function {
+  id: 0x1bd69e9e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2131312a
+  parameter_id: 0xc0a0d1f0
+}
+function {
+  id: 0x1bdaff5e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2cdbb77a
+  parameter_id: 0x1d44326e
+  parameter_id: 0x054f691a
+}
+function {
+  id: 0x1bdce98f
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x3dcbc303
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x1bde9985
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2d1b205b
+}
+function {
+  id: 0x1bdfb83f
+  return_type_id: 0xd1f94ea7
+  parameter_id: 0x054f691a
+}
+function {
+  id: 0x1be55e08
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2df43e6f
+}
+function {
+  id: 0x1be6a241
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2efe8065
+  parameter_id: 0x3054f2d7
+}
+function {
+  id: 0x1be9f38e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2f0e69de
+  parameter_id: 0x2c8e1aaa
+}
+function {
+  id: 0x1befd11c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2dde023d
+}
+function {
+  id: 0x1bf280c6
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2dab4556
+}
+function {
+  id: 0x1bf4bf66
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2f0e69de
+  parameter_id: 0x2bdd20a6
+}
+function {
+  id: 0x1bf6d3c0
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2e8d5f05
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x1bfe630d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x2b1ef221
+  parameter_id: 0x6720d32f
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x1c01b872
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3267a784
+}
+function {
+  id: 0x1c01c960
+  return_type_id: 0x48b5725f
+  parameter_id: 0x326663cd
+}
+function {
+  id: 0x1c0343dd
+  return_type_id: 0x48b5725f
+  parameter_id: 0x326c4938
+}
+function {
+  id: 0x1c048955
+  return_type_id: 0x48b5725f
+  parameter_id: 0x33f8b54b
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x1c05d45f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x30ccee09
+  parameter_id: 0x2a670b41
+  parameter_id: 0x1c898f28
+}
+function {
+  id: 0x1c06dd29
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x23f09c34
+  parameter_id: 0x01d3d77e
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x1c081607
+  return_type_id: 0x48b5725f
+  parameter_id: 0x36194830
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1c0ba928
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x23f09c34
+  parameter_id: 0x01d3d77e
+  parameter_id: 0x0483e6f8
+}
+function {
+  id: 0x1c0c5019
+  return_type_id: 0x48b5725f
+  parameter_id: 0x31675062
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x1c0e7d0f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3258b271
+}
+function {
+  id: 0x1c0f0880
+  return_type_id: 0x48b5725f
+  parameter_id: 0x318f8bcb
+  parameter_id: 0x3d2ef874
+}
+function {
+  id: 0x1c1113fb
+  return_type_id: 0x48b5725f
+  parameter_id: 0x322509a0
+}
+function {
+  id: 0x1c155f01
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32343a4a
+}
+function {
+  id: 0x1c1615a0
+  return_type_id: 0x48b5725f
+  parameter_id: 0x31c8b544
+  parameter_id: 0x3f1a5886
+}
+function {
+  id: 0x1c163406
+  return_type_id: 0x48b5725f
+  parameter_id: 0x310ec01d
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x1c18b1c5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x315b7e01
+  parameter_id: 0x358ff5b7
+}
+function {
+  id: 0x1c1a4deb
+  return_type_id: 0x48b5725f
+  parameter_id: 0x320871e3
+}
+function {
+  id: 0x1c1deea6
+  return_type_id: 0x38040a6c
+  parameter_id: 0x0d7ce7cc
+  parameter_id: 0x38040a6c
+}
+function {
+  id: 0x1c1e73b0
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x0beab59b
+}
+function {
+  id: 0x1c2385c8
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32ef516c
+}
+function {
+  id: 0x1c23d01c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32ee063f
+}
+function {
+  id: 0x1c25e791
+  return_type_id: 0x48b5725f
+  parameter_id: 0x315b7e01
+  parameter_id: 0x3ada60b4
+}
+function {
+  id: 0x1c266ecd
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32f8fd7b
+}
+function {
+  id: 0x1c27266a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32fddfe5
+}
+function {
+  id: 0x1c280429
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32c156ea
+}
+function {
+  id: 0x1c28df2b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32c23ae3
+}
+function {
+  id: 0x1c2afa5a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32caaf24
+}
+function {
+  id: 0x1c31a93c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x36ffb4de
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1c31d966
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32a623d7
+}
+function {
+  id: 0x1c31f969
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x02e98c8d
+  parameter_id: 0x2e18f543
+}
+function {
+  id: 0x1c362eb2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x0192373f
+  parameter_id: 0x06fc21c3
+}
+function {
+  id: 0x1c378d7a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x01950729
+}
+function {
+  id: 0x1c3ae057
+  return_type_id: 0x48b5725f
+  parameter_id: 0x33011141
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x1c3ba516
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3b4ce03a
+  parameter_id: 0x9565759f
+  parameter_id: 0x9565759f
+}
+function {
+  id: 0x1c3d5759
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32941b2b
+}
+function {
+  id: 0x1c3eec85
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x03cd78c6
+}
+function {
+  id: 0x1c416a95
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3176a085
+  parameter_id: 0x2124c9f1
+}
+function {
+  id: 0x1c43f286
+  return_type_id: 0x48b5725f
+  parameter_id: 0x336e8c54
+}
+function {
+  id: 0x1c44bdb1
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x1d5935e7
+}
+function {
+  id: 0x1c4508b2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x1c470062
+  return_type_id: 0x48b5725f
+  parameter_id: 0x31b5a66f
+  parameter_id: 0x2c8e1aaa
+}
+function {
+  id: 0x1c487847
+  return_type_id: 0x48b5725f
+  parameter_id: 0x37030053
+  parameter_id: 0x4585663f
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x1c4a186e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x334927f6
+}
+function {
+  id: 0x1c4a8ee5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x315b7e01
+  parameter_id: 0x21003da7
+}
+function {
+  id: 0x1c4d054f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x320871e3
+  parameter_id: 0x11cffa09
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1c532cf2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x1c5379dd
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3176a085
+  parameter_id: 0x274194ac
+  parameter_id: 0x2e18f543
+}
+function {
+  id: 0x1c5815c3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x33011141
+}
+function {
+  id: 0x1c5ac86a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x31e58fe0
+  parameter_id: 0x2efe8065
+}
+function {
+  id: 0x1c5b4677
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x18019702
+  parameter_id: 0x2c1738cf
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1c5ca425
+  return_type_id: 0x48b5725f
+  parameter_id: 0x31b5a66f
+  parameter_id: 0x2a670b41
+}
+function {
+  id: 0x1c5e9ece
+  return_type_id: 0x48b5725f
+  parameter_id: 0x331b3d77
+}
+function {
+  id: 0x1c5ec399
+  return_type_id: 0x48b5725f
+  parameter_id: 0x31b5a66f
+  parameter_id: 0x2afee447
+}
+function {
+  id: 0x1c5fa2cd
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32941b2b
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x1c61b639
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3399c453
+  parameter_id: 0x054f691a
+  parameter_id: 0x295c7202
+  parameter_id: 0x3f0185ef
+}
+function {
+  id: 0x1c63608e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3399c453
+  parameter_id: 0x0beab59b
+  parameter_id: 0xc9082b19
+  parameter_id: 0x295c7202
+  parameter_id: 0x3690011f
+}
+function {
+  id: 0x1c64c4cb
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32c156ea
+  parameter_id: 0x1330389b
+}
+function {
+  id: 0x1c667cc1
+  return_type_id: 0x48b5725f
+  parameter_id: 0x33f8b54b
+}
+function {
+  id: 0x1c6ae2fd
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x15517480
+  parameter_id: 0x3a5cebed
+  parameter_id: 0x3a5cebed
+}
+function {
+  id: 0x1c6da23d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x171ed6f4
+}
+function {
+  id: 0x1c7138fe
+  return_type_id: 0x48b5725f
+  parameter_id: 0x31b5a66f
+  parameter_id: 0x21003da7
+}
+function {
+  id: 0x1c758dd1
+  return_type_id: 0x48b5725f
+  parameter_id: 0x33b77109
+}
+function {
+  id: 0x1c76742e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x33b896f4
+}
+function {
+  id: 0x1c78f81d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3382a638
+}
+function {
+  id: 0x1c7fa343
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x139e8957
+}
+function {
+  id: 0x1c822746
+  return_type_id: 0x48b5725f
+  parameter_id: 0x397d00ab
+  parameter_id: 0x914dbfdc
+}
+function {
+  id: 0x1c8280d3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x36194830
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1c8405e0
+  return_type_id: 0x48b5725f
+  parameter_id: 0x31fa879c
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x1c84cc26
+  return_type_id: 0x48b5725f
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x064d6086
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0x1c84fbb3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3072a882
+}
+function {
+  id: 0x1c861e9d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3760766d
+  parameter_id: 0x7194a543
+}
+function {
+  id: 0x1c88dd20
+  return_type_id: 0x48b5725f
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x1c941374
+  return_type_id: 0x2060db23
+  parameter_id: 0x101b9aaa
+}
+function {
+  id: 0x1c9637f2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x31675062
+  parameter_id: 0x15ec9e44
+}
+function {
+  id: 0x1c981cde
+  return_type_id: 0x48b5725f
+  parameter_id: 0x336e8c54
+  parameter_id: 0x36fb960a
+}
+function {
+  id: 0x1c99bc79
+  return_type_id: 0x48b5725f
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1c9aeba3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x30635134
+  parameter_id: 0x054f691a
+  parameter_id: 0x312e431a
+  parameter_id: 0xc9082b19
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x1c9bef72
+  return_type_id: 0x48b5725f
+  parameter_id: 0x397d00ab
+  parameter_id: 0x914dbfdc
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1ca75909
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x274194ac
+  parameter_id: 0x2e18f543
+}
+function {
+  id: 0x1cab6a11
+  return_type_id: 0x48b5725f
+  parameter_id: 0x30ccee09
+}
+function {
+  id: 0x1caba1e3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x30cfc1c2
+}
+function {
+  id: 0x1cabfee0
+  return_type_id: 0x48b5725f
+  parameter_id: 0x36194830
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x1caf28d1
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3399c453
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x1caf35fa
+  return_type_id: 0x48b5725f
+  parameter_id: 0x30dd91a5
+}
+function {
+  id: 0x1caf3c74
+  return_type_id: 0x48b5725f
+  parameter_id: 0x30ddb79e
+}
+function {
+  id: 0x1caf5700
+  return_type_id: 0x48b5725f
+  parameter_id: 0x39a8be0c
+  parameter_id: 0x96c1925d
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x1cb3a26f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x30afcff2
+}
+function {
+  id: 0x1cb4b808
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3399c453
+  parameter_id: 0x32a623d7
+}
+function {
+  id: 0x1cb54a41
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x2124c9f1
+}
+function {
+  id: 0x1cb94c1c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x315b7e01
+  parameter_id: 0x1df083fd
+}
+function {
+  id: 0x1cb9b3ad
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x239164bc
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x1cbd2d0b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x31b5a66f
+  parameter_id: 0x120540d1
+}
+function {
+  id: 0x1cbe3d95
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x23f93cc0
+}
+function {
+  id: 0x1cbf0a15
+  return_type_id: 0x48b5725f
+  parameter_id: 0x309d6e18
+}
+function {
+  id: 0x1cc084c7
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32caaf24
+  parameter_id: 0x3a9fa744
+}
+function {
+  id: 0x1cc1858b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x31675062
+}
+function {
+  id: 0x1cc37408
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x3cab5b8b
+}
+function {
+  id: 0x1cc47c71
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3518a6ab
+  parameter_id: 0x4585663f
+  parameter_id: 0x30474302
+}
+function {
+  id: 0x1cc5f9b2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3176a085
+}
+function {
+  id: 0x1cc68e0f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x3dd5da6c
+}
+function {
+  id: 0x1cc6a99c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x3ddc3e92
+}
+function {
+  id: 0x1cc6e526
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3176a085
+  parameter_id: 0x00c72527
+}
+function {
+  id: 0x1cc7b6f9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3806390a
+  parameter_id: 0x914dbfdc
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x1cc85181
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x3e6239e1
+}
+function {
+  id: 0x1ccb1d96
+  return_type_id: 0x48b5725f
+  parameter_id: 0x328870e8
+  parameter_id: 0x3c540ff9
+}
+function {
+  id: 0x1ccc8f30
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3d3b5dd7
+  parameter_id: 0xc9082b19
+  parameter_id: 0xf435685e
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x1ccd2072
+  return_type_id: 0x48b5725f
+  parameter_id: 0x326663cd
+  parameter_id: 0x376212c9
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1ccd91f4
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x3382a638
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x1cce8e13
+  return_type_id: 0x48b5725f
+  parameter_id: 0x315b7e01
+}
+function {
+  id: 0x1cd08481
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x385779d3
+}
+function {
+  id: 0x1cd13541
+  return_type_id: 0x48b5725f
+  parameter_id: 0x357dc529
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1cd366b4
+  return_type_id: 0x48b5725f
+  parameter_id: 0x312cdc9e
+}
+function {
+  id: 0x1cd3bf9e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x3b461cc8
+  parameter_id: 0x3b461cc8
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x1cd40102
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x26ee682a
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0483e6f8
+  parameter_id: 0xf435685e
+  parameter_id: 0x27a7c613
+}
+function {
+  id: 0x1cd77b0d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x38feef7f
+  parameter_id: 0x151a9482
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x1cdaa5d6
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x26ee682a
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf435685e
+  parameter_id: 0x27a7c613
+}
+function {
+  id: 0x1cdbe194
+  return_type_id: 0x48b5725f
+  parameter_id: 0x310ec01d
+}
+function {
+  id: 0x1cde4dc9
+  return_type_id: 0x0bfc9031
+  parameter_id: 0x347303b4
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x1cdeebe2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32c156ea
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3ab47ff9
+}
+function {
+  id: 0x1ce1326b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x31e58fe0
+}
+function {
+  id: 0x1ce56ba2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32ee05c2
+  parameter_id: 0x37792593
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x1ce6f074
+  return_type_id: 0x48b5725f
+  parameter_id: 0x31fa879c
+}
+function {
+  id: 0x1cea7cc2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x31c8b544
+}
+function {
+  id: 0x1cec1cec
+  return_type_id: 0x48b5725f
+  parameter_id: 0x31fe2b41
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1cf3d6fb
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3518a6ab
+  parameter_id: 0x4585663f
+  parameter_id: 0xeeed68e6
+}
+function {
+  id: 0x1cf53808
+  return_type_id: 0x48b5725f
+  parameter_id: 0x31b5a66f
+}
+function {
+  id: 0x1cf8df35
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3267a784
+  parameter_id: 0x3e59d1e6
+}
+function {
+  id: 0x1cfb41e9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x32a623d7
+}
+function {
+  id: 0x1cfbb361
+  return_type_id: 0x48b5725f
+  parameter_id: 0x318f8bcb
+}
+function {
+  id: 0x1cfc31a2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x318f8bcb
+  parameter_id: 0x01e0b0cf
+}
+function {
+  id: 0x1cff6dbd
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x33ad36d3
+}
+function {
+  id: 0x1cff7455
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3074b701
+  parameter_id: 0x1e820193
+}
+function {
+  id: 0x1cffbe77
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x3399c453
+}
+function {
+  id: 0x1d030c3c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3518289c
+  parameter_id: 0x330db442
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1d04d3fd
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x24c1f7c9
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x1d096019
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3518a6ab
+  parameter_id: 0x3176a085
+  parameter_id: 0x4585663f
+  parameter_id: 0xeeed68e6
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x1d09a9ef
+  return_type_id: 0x48b5725f
+  parameter_id: 0x353f5bda
+  parameter_id: 0x37a89a4a
+  parameter_id: 0x02338c35
+}
+function {
+  id: 0x1d0f4148
+  return_type_id: 0x48b5725f
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x1d1662fd
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3638cdb9
+}
+function {
+  id: 0x1d179708
+  return_type_id: 0x48b5725f
+  parameter_id: 0x36194830
+  parameter_id: 0x026525e9
+}
+function {
+  id: 0x1d1cf212
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3fab28c8
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x1d1e039f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x36194830
+}
+function {
+  id: 0x1d1e3719
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3638cdb9
+  parameter_id: 0x01222f7d
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x1d1e93d2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x361b0907
+}
+function {
+  id: 0x1d20fb22
+  return_type_id: 0x48b5725f
+  parameter_id: 0x36e2aac5
+}
+function {
+  id: 0x1d2130a6
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x4585663f
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x1d250ee3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x4585663f
+  parameter_id: 0x08e97c95
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x1d25d246
+  return_type_id: 0x48b5725f
+  parameter_id: 0x35c3dd06
+  parameter_id: 0x335d253d
+}
+function {
+  id: 0x1d27ccfe
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1d2908c3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3518a6ab
+  parameter_id: 0x3ddc3e92
+}
+function {
+  id: 0x1d2a5bee
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x4585663f
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x1d2c0513
+  return_type_id: 0x48b5725f
+  parameter_id: 0x36d15200
+}
+function {
+  id: 0x1d2c375c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x34df9ab6
+  parameter_id: 0x2953a412
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x33756485
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0xc66085ec
+}
+function {
+  id: 0x1d307b55
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32f8fd7b
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1d33c7e7
+  return_type_id: 0x48b5725f
+  parameter_id: 0x340bec45
+  parameter_id: 0x2a4c6b85
+  parameter_id: 0x0258f96e
+  parameter_id: 0x32bd639f
+}
+function {
+  id: 0x1d39707c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x368487be
+}
+function {
+  id: 0x1d3b3a77
+  return_type_id: 0x48b5725f
+  parameter_id: 0x368daf92
+}
+function {
+  id: 0x1d3f8bd2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3674251b
+  parameter_id: 0x0eb4c1f9
+}
+function {
+  id: 0x1d404c08
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3760766d
+}
+function {
+  id: 0x1d4435ec
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3674251b
+  parameter_id: 0x105b4e59
+}
+function {
+  id: 0x1d45187b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x348f6886
+  parameter_id: 0x3e10b518
+  parameter_id: 0x1b44744f
+}
+function {
+  id: 0x1d45c70c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x37765a7c
+}
+function {
+  id: 0x1d4875a4
+  return_type_id: 0x48b5725f
+  parameter_id: 0x374090df
+}
+function {
+  id: 0x1d4e9dab
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3674251b
+  parameter_id: 0x12f15faf
+}
+function {
+  id: 0x1d520d5f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x315b7e01
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1d531d2a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x33756485
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1d597589
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3704906b
+}
+function {
+  id: 0x1d5cf24d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x34544a3f
+  parameter_id: 0x3747dc62
+  parameter_id: 0x30d2f50a
+  parameter_id: 0x26a75523
+}
+function {
+  id: 0x1d61f95d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x347303b4
+  parameter_id: 0x3a232845
+  parameter_id: 0x347303b4
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x1d6aeee7
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3176a085
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x1d6c9f2f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3564a5a2
+  parameter_id: 0x2b79f509
+}
+function {
+  id: 0x1d6f4d07
+  return_type_id: 0x48b5725f
+  parameter_id: 0x37dc7251
+}
+function {
+  id: 0x1d7004cd
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3176a085
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x1d707370
+  return_type_id: 0x48b5725f
+  parameter_id: 0x31b5a66f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1d729530
+  return_type_id: 0x48b5725f
+  parameter_id: 0x33f8b54b
+  parameter_id: 0x4585663f
+  parameter_id: 0x0bf1a65b
+}
+function {
+  id: 0x1d74e17c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x31c0ce8c
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1d756c43
+  return_type_id: 0x48b5725f
+  parameter_id: 0x37b4f743
+}
+function {
+  id: 0x1d796e4e
+  return_type_id: 0x3806390a
+  parameter_id: 0x348822f4
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3e10b518
+  parameter_id: 0xc9082b19
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x1d7b9c88
+  return_type_id: 0x48b5725f
+  parameter_id: 0x33f8b54b
+  parameter_id: 0x4585663f
+  parameter_id: 0x2b8f13b3
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1d80f189
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3ba261b0
+  parameter_id: 0xfc0e1dbd
+}
+function {
+  id: 0x1d825cc4
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3d92f9c7
+  parameter_id: 0x96c0c5e1
+  parameter_id: 0x96c0c5e1
+}
+function {
+  id: 0x1d84917e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x347303b4
+}
+function {
+  id: 0x1d88d4f1
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x1d8d431c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x34544a3f
+}
+function {
+  id: 0x1d8d5f30
+  return_type_id: 0x48b5725f
+  parameter_id: 0x34543a8d
+}
+function {
+  id: 0x1d8d80fc
+  return_type_id: 0x48b5725f
+  parameter_id: 0x345745bd
+}
+function {
+  id: 0x1d8e3ba7
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3ddc3e92
+  parameter_id: 0x914dbfdc
+  parameter_id: 0x914dbfdc
+}
+function {
+  id: 0x1d96cba6
+  return_type_id: 0x48b5725f
+  parameter_id: 0x360c66c5
+  parameter_id: 0x2360e10b
+}
+function {
+  id: 0x1d97feab
+  return_type_id: 0x48b5725f
+  parameter_id: 0x343ebce3
+}
+function {
+  id: 0x1d9aaa82
+  return_type_id: 0x48b5725f
+  parameter_id: 0x340bec45
+}
+function {
+  id: 0x1da1d415
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32941b2b
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1da1da53
+  return_type_id: 0x48b5725f
+  parameter_id: 0x34e62f02
+}
+function {
+  id: 0x1da37962
+  return_type_id: 0x48b5725f
+  parameter_id: 0x36194830
+  parameter_id: 0x292cb268
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1dad5a2a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1db066c6
+  return_type_id: 0x3411dbb1
+  parameter_id: 0x026c3dea
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x1db50e9d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1db8b9d1
+  return_type_id: 0x48b5725f
+  parameter_id: 0x37b4f743
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x1dbab156
+  return_type_id: 0x48b5725f
+  parameter_id: 0x36194830
+  parameter_id: 0x292cb268
+}
+function {
+  id: 0x1dbb54c5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x37765a7c
+  parameter_id: 0x3e10b518
+  parameter_id: 0x1b44744f
+}
+function {
+  id: 0x1dbb8bb2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x348f6886
+}
+function {
+  id: 0x1dc33407
+  return_type_id: 0x48b5725f
+  parameter_id: 0x36194830
+  parameter_id: 0x374de623
+}
+function {
+  id: 0x1dc39996
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x7584e7da
+  parameter_id: 0x914dbfdc
+}
+function {
+  id: 0x1dc48f82
+  return_type_id: 0x48b5725f
+  parameter_id: 0x35737846
+}
+function {
+  id: 0x1dc83ab4
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3518a6ab
+  parameter_id: 0x064d6086
+  parameter_id: 0x3ddc3e92
+}
+function {
+  id: 0x1dcd0419
+  return_type_id: 0x48b5725f
+  parameter_id: 0x35555629
+}
+function {
+  id: 0x1dd1ab7c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3542336e
+  parameter_id: 0x054f691a
+  parameter_id: 0x312e431a
+}
+function {
+  id: 0x1dd3d60d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x36194830
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x1ddb216a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x350dc3e7
+}
+function {
+  id: 0x1dde7839
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3518a6ab
+}
+function {
+  id: 0x1de0d842
+  return_type_id: 0x48b5725f
+  parameter_id: 0x363b9249
+  parameter_id: 0x3c6958c4
+  parameter_id: 0x1b4ba19a
+  parameter_id: 0x4585663f
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x1de33115
+  return_type_id: 0x48b5725f
+  parameter_id: 0x397d00ab
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x1de47b51
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3382a638
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1de80b22
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3674251b
+  parameter_id: 0x3b54fdd3
+}
+function {
+  id: 0x1de9365c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x358ff5b7
+  parameter_id: 0x04a6a89c
+}
+function {
+  id: 0x1de9a6b4
+  return_type_id: 0x48b5725f
+  parameter_id: 0x377043cf
+  parameter_id: 0x2b79f509
+}
+function {
+  id: 0x1ded15a3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x35d510c3
+}
+function {
+  id: 0x1df07da9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x35a0b0e9
+}
+function {
+  id: 0x1df45ed2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x366f080d
+  parameter_id: 0x3e10b518
+  parameter_id: 0x384c5795
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1df4a619
+  return_type_id: 0x48b5725f
+  parameter_id: 0x366f080d
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3ddd7525
+}
+function {
+  id: 0x1df727f3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x31e58fe0
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1dfa429f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x310ec01d
+  parameter_id: 0x498e6bfd
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x1dfacbed
+  return_type_id: 0x48b5725f
+  parameter_id: 0x360c66c5
+  parameter_id: 0x3860f3c0
+}
+function {
+  id: 0x1dfaeef0
+  return_type_id: 0x48b5725f
+  parameter_id: 0x369152be
+  parameter_id: 0x33756485
+  parameter_id: 0x2e18f543
+  parameter_id: 0x2e18f543
+}
+function {
+  id: 0x1dfaf921
+  return_type_id: 0x48b5725f
+  parameter_id: 0x397d00ab
+  parameter_id: 0xc9082b19
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1dfbacfe
+  return_type_id: 0x48b5725f
+  parameter_id: 0x358ff5b7
+}
+function {
+  id: 0x1dfed2eb
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3411dbb1
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x1e001026
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3a6106d5
+}
+function {
+  id: 0x1e01cc92
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3a667404
+}
+function {
+  id: 0x1e02170b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x36f998d3
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x1e091eac
+  return_type_id: 0x48b5725f
+  parameter_id: 0x391f15ea
+  parameter_id: 0x33756485
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x1e09ba11
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x12e6ffae
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x1e0b6efe
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3a7f8e60
+  parameter_id: 0x00c72527
+  parameter_id: 0x3f0185ef
+}
+function {
+  id: 0x1e0c8305
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3a534a58
+}
+function {
+  id: 0x1e0e5d07
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3a583251
+}
+function {
+  id: 0x1e10dbe0
+  return_type_id: 0x48b5725f
+  parameter_id: 0x39c3bcd2
+  parameter_id: 0x3a410782
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1e122b88
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3a583251
+  parameter_id: 0x071da3d1
+}
+function {
+  id: 0x1e12e5c6
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x12e6ffae
+}
+function {
+  id: 0x1e133349
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3c5f865b
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1e14fc1f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3382a638
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x1e16901b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3382a638
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x1e169253
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3382a638
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x1e169275
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3382a638
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x1e169276
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3382a638
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x1e169277
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3382a638
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x1e169278
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3382a638
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x1e169279
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3382a638
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x1e16927a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3382a638
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x1e16927b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3382a638
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x1e16b493
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3382a638
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x1e17dd0a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3a3e3264
+}
+function {
+  id: 0x1e28f911
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3ac2a209
+}
+function {
+  id: 0x1e2a3205
+  return_type_id: 0x48b5725f
+  parameter_id: 0x383b946e
+  parameter_id: 0x2b79f509
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1e2e5417
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3ad81610
+}
+function {
+  id: 0x1e2ec9be
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3ada60b4
+}
+function {
+  id: 0x1e3074d3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3382a638
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x1e32c371
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3d3b5dd7
+  parameter_id: 0x791165e9
+}
+function {
+  id: 0x1e336b85
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3258b271
+  parameter_id: 0x8f45a284
+}
+function {
+  id: 0x1e365682
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3806390a
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+  parameter_id: 0x11c404ba
+}
+function {
+  id: 0x1e388fbe
+  return_type_id: 0x48b5725f
+  parameter_id: 0x391289e8
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0x1e38df18
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3806390a
+  parameter_id: 0x295c7202
+  parameter_id: 0x11c404ba
+}
+function {
+  id: 0x1e394ee5
+  return_type_id: 0x178e5e46
+  parameter_id: 0x2ea52095
+}
+function {
+  id: 0x1e3a7bd4
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3a88a91e
+}
+function {
+  id: 0x1e3b8bac
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x1e3f491e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3ea31487
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1e4577e0
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x07027638
+}
+function {
+  id: 0x1e473040
+  return_type_id: 0x48b5725f
+  parameter_id: 0x38d23361
+  parameter_id: 0x3ea31487
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1e4b006d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3b4d47fa
+}
+function {
+  id: 0x1e4d35c9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3ac2a209
+  parameter_id: 0x18bd6530
+  parameter_id: 0x18bd6530
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1e4fc33a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3c0604da
+  parameter_id: 0x7584e7da
+}
+function {
+  id: 0x1e571002
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3ac2a209
+  parameter_id: 0x1e9b2283
+  parameter_id: 0x16166482
+}
+function {
+  id: 0x1e585388
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3760766d
+  parameter_id: 0xc607e025
+}
+function {
+  id: 0x1e597e38
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3b04bead
+}
+function {
+  id: 0x1e5a0d08
+  return_type_id: 0x3411dbb1
+  parameter_id: 0x026c3dea
+  parameter_id: 0x3f2e25a0
+  parameter_id: 0xc9082b19
+  parameter_id: 0x2e0f9112
+  parameter_id: 0x2e0f9112
+  parameter_id: 0x92233392
+  parameter_id: 0x2e0f9112
+}
+function {
+  id: 0x1e5a132d
+  return_type_id: 0x3411dbb1
+  parameter_id: 0x026c3dea
+  parameter_id: 0x3f2e25a0
+  parameter_id: 0xc9082b19
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+  parameter_id: 0x3f74bbde
+}
+function {
+  id: 0x1e5a3da5
+  return_type_id: 0x3411dbb1
+  parameter_id: 0x026c3dea
+  parameter_id: 0x3f2e25a0
+  parameter_id: 0xc9082b19
+  parameter_id: 0x295c7202
+  parameter_id: 0x92233392
+  parameter_id: 0x295c7202
+  parameter_id: 0x3e75499e
+}
+function {
+  id: 0x1e5a3daa
+  return_type_id: 0x3411dbb1
+  parameter_id: 0x026c3dea
+  parameter_id: 0x3f2e25a0
+  parameter_id: 0xc9082b19
+  parameter_id: 0x295c7202
+  parameter_id: 0x92233392
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x1e5a69e0
+  return_type_id: 0x3411dbb1
+  parameter_id: 0x026c3dea
+  parameter_id: 0x3f2e25a0
+  parameter_id: 0xc9082b19
+  parameter_id: 0x3545954a
+}
+function {
+  id: 0x1e5ce3ab
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3b12c8e0
+}
+function {
+  id: 0x1e5e277c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3806390a
+  parameter_id: 0x31fe2b41
+}
+function {
+  id: 0x1e626071
+  return_type_id: 0x48b5725f
+  parameter_id: 0x397d00ab
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x1e63a370
+  return_type_id: 0x48b5725f
+  parameter_id: 0x397d00ab
+  parameter_id: 0x292cb268
+}
+function {
+  id: 0x1e6686a2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3d8951f4
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1e66a460
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3bfbd7cf
+}
+function {
+  id: 0x1e67551a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x315b7e01
+  parameter_id: 0xac0d3a85
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0xac0d3a85
+}
+function {
+  id: 0x1e70c9ff
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3ba261b0
+}
+function {
+  id: 0x1e7a9dc2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x38bc670e
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x1e7ba530
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3a88a91e
+  parameter_id: 0x1077b920
+}
+function {
+  id: 0x1e7ba845
+  return_type_id: 0x48b5725f
+  parameter_id: 0x397d00ab
+  parameter_id: 0x295c7202
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1e7c0401
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3860f3c0
+  parameter_id: 0x3f1a5886
+}
+function {
+  id: 0x1e7db2dc
+  return_type_id: 0x48b5725f
+  parameter_id: 0x397d00ab
+  parameter_id: 0x2ea8d96e
+}
+function {
+  id: 0x1e7e66b3
+  return_type_id: 0x3411dbb1
+  parameter_id: 0x026c3dea
+  parameter_id: 0x3b03e024
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x1e7ec1ee
+  return_type_id: 0x48b5725f
+  parameter_id: 0x38d23361
+  parameter_id: 0x38d23361
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x1e80484b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3806390a
+  parameter_id: 0x0665e6b6
+}
+function {
+  id: 0x1e806d63
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3860f3c0
+}
+function {
+  id: 0x1e80bbd4
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3863a91c
+}
+function {
+  id: 0x1e82fda2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3860f3c0
+  parameter_id: 0x00a43052
+}
+function {
+  id: 0x1e85155c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3ea2e6c1
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x1e85f0ad
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x3860f3c0
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x1e879adb
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3c277b43
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1e884779
+  return_type_id: 0x48b5725f
+  parameter_id: 0x39a8be0c
+  parameter_id: 0x1e8e5a79
+}
+function {
+  id: 0x1e89523e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3e360385
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1e89aa3c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x39cdf888
+  parameter_id: 0x11c404ba
+  parameter_id: 0x92233392
+  parameter_id: 0x4754c3e4
+}
+function {
+  id: 0x1e8b8ecc
+  return_type_id: 0x48b5725f
+  parameter_id: 0x384f7d7c
+}
+function {
+  id: 0x1e92214d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3829c378
+}
+function {
+  id: 0x1e93e85a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x31c8b544
+  parameter_id: 0x36d2de0e
+}
+function {
+  id: 0x1e953c38
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3861403d
+  parameter_id: 0x054f691a
+}
+function {
+  id: 0x1e95a0da
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3ba6347b
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0x1e96931d
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x2a4c6b85
+  parameter_id: 0x3e0f217a
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x1e99dfd1
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3806390a
+}
+function {
+  id: 0x1e9be71c
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x2a4c6b85
+  parameter_id: 0x3e0f217a
+  parameter_id: 0x0483e6f8
+}
+function {
+  id: 0x1e9cdd26
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3861403d
+  parameter_id: 0x054f691a
+  parameter_id: 0x27847a9a
+}
+function {
+  id: 0x1ea1f34b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x39c825ca
+  parameter_id: 0x12eaeaa5
+}
+function {
+  id: 0x1ea724c3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x38fdd541
+}
+function {
+  id: 0x1eabf44d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x38ce9779
+}
+function {
+  id: 0x1eaf1d5f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3ba05ad7
+  parameter_id: 0x3b461cc8
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x1eb41c27
+  return_type_id: 0x48b5725f
+  parameter_id: 0x38b136d3
+}
+function {
+  id: 0x1eb52294
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3e6239e1
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x1eb5cb05
+  return_type_id: 0x48b5725f
+  parameter_id: 0x38b66a59
+}
+function {
+  id: 0x1eb644f1
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3860f3c0
+  parameter_id: 0x0b30ee00
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x1eb74850
+  return_type_id: 0x48b5725f
+  parameter_id: 0x38bc670e
+}
+function {
+  id: 0x1eb8ebad
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3b569cc2
+  parameter_id: 0x391f15ea
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1eb9c413
+  return_type_id: 0x48b5725f
+  parameter_id: 0x38865602
+}
+function {
+  id: 0x1ebba908
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x3e6239e1
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x1ebf77ae
+  return_type_id: 0x48b5725f
+  parameter_id: 0x397d00ab
+  parameter_id: 0x1a41d386
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1ec3a8ad
+  return_type_id: 0x48b5725f
+  parameter_id: 0x396fe4f8
+}
+function {
+  id: 0x1ec3b210
+  return_type_id: 0x48b5725f
+  parameter_id: 0x396f8e0f
+}
+function {
+  id: 0x1ec3ec50
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3806390a
+  parameter_id: 0x1790a02f
+  parameter_id: 0x11c404ba
+}
+function {
+  id: 0x1ec5beaa
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3a1e1de8
+  parameter_id: 0x3748519c
+  parameter_id: 0x1d2416d3
+}
+function {
+  id: 0x1ec711b9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x397d00ab
+}
+function {
+  id: 0x1eca2cda
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x24d4b888
+}
+function {
+  id: 0x1eca4382
+  return_type_id: 0x48b5725f
+  parameter_id: 0x394b6e9f
+  parameter_id: 0x040d1b01
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1eca8a34
+  return_type_id: 0x48b5725f
+  parameter_id: 0x394b6e9f
+}
+function {
+  id: 0x1ecbf69d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3860f3c0
+  parameter_id: 0x12e6ffae
+}
+function {
+  id: 0x1ecc6a5d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x397d00ab
+  parameter_id: 0x0cbf60eb
+  parameter_id: 0xe02e14d6
+  parameter_id: 0x6720d32f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1ece54e9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x391289e8
+  parameter_id: 0x054f691a
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x1ecff72b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x395e9ae2
+}
+function {
+  id: 0x1ed8d47c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x39487d35
+  parameter_id: 0x04a6a89c
+}
+function {
+  id: 0x1eda71a1
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x21003da7
+  parameter_id: 0x1c3dbe5a
+}
+function {
+  id: 0x1edabe58
+  return_type_id: 0x48b5725f
+  parameter_id: 0x394b6e9f
+  parameter_id: 0x040d1b01
+}
+function {
+  id: 0x1edcf3e9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x391289e8
+}
+function {
+  id: 0x1edd7ece
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x21003da7
+}
+function {
+  id: 0x1ede86f9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x21530c77
+  parameter_id: 0x09adb9f4
+  parameter_id: 0x37e7a473
+}
+function {
+  id: 0x1edf94e9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0x1edfcb66
+  return_type_id: 0x48b5725f
+  parameter_id: 0x391e6bd6
+}
+function {
+  id: 0x1ee3d737
+  return_type_id: 0x48b5725f
+  parameter_id: 0x39ee1a91
+}
+function {
+  id: 0x1ee58544
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3ac2a209
+  parameter_id: 0x335f1543
+}
+function {
+  id: 0x1ee7d1e8
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3ac2a209
+  parameter_id: 0x33ca3e79
+}
+function {
+  id: 0x1ee8bea7
+  return_type_id: 0x48b5725f
+  parameter_id: 0x39c3bcd2
+}
+function {
+  id: 0x1eea58e1
+  return_type_id: 0x48b5725f
+  parameter_id: 0x39c825ca
+}
+function {
+  id: 0x1eea9a68
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3ac2a209
+  parameter_id: 0x3098de41
+}
+function {
+  id: 0x1eeb0dff
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3f949c69
+  parameter_id: 0x6720d32f
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x1eedbe86
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3c5f865b
+  parameter_id: 0x5883a0f3
+}
+function {
+  id: 0x1ef0e215
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x2a670b41
+}
+function {
+  id: 0x1ef16b9c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x39a4e83f
+}
+function {
+  id: 0x1ef27e10
+  return_type_id: 0x48b5725f
+  parameter_id: 0x39a8be0c
+}
+function {
+  id: 0x1ef285a9
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x2afee447
+}
+function {
+  id: 0x1ef499ec
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x2b79f509
+}
+function {
+  id: 0x1ef51155
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3861403d
+  parameter_id: 0x1d44326e
+}
+function {
+  id: 0x1efa64b6
+  return_type_id: 0x48b5725f
+  parameter_id: 0x39ee8afd
+  parameter_id: 0x0665e6b6
+}
+function {
+  id: 0x1efc8b31
+  return_type_id: 0x48b5725f
+  parameter_id: 0x394b6e9f
+  parameter_id: 0x0b937f67
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x2eafb82c
+}
+function {
+  id: 0x1f00dfeb
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3e6239e1
+}
+function {
+  id: 0x1f060fb8
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3f222c68
+  parameter_id: 0x15b54c6f
+}
+function {
+  id: 0x1f0d7714
+  return_type_id: 0x48b5725f
+  parameter_id: 0x38342a1b
+  parameter_id: 0x6720d32f
+  parameter_id: 0x120540d1
+  parameter_id: 0x0b8758d9
+}
+function {
+  id: 0x1f0fd39d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3c0e9e79
+  parameter_id: 0x295c7202
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+  parameter_id: 0x0cbf60eb
+  parameter_id: 0x095a3c37
+}
+function {
+  id: 0x1f15c803
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32a623d7
+  parameter_id: 0xc9082b19
+  parameter_id: 0x00c72527
+}
+function {
+  id: 0x1f15d172
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3e360385
+}
+function {
+  id: 0x1f15f9ca
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32a623d7
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x1f189c45
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3e03375b
+}
+function {
+  id: 0x1f18e832
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3e02e685
+}
+function {
+  id: 0x1f1c7cd5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x1f1f7d50
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3e6396e0
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x3104f372
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x1f202bf3
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x2efe8065
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x384c5795
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x1f227282
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3ee88c45
+}
+function {
+  id: 0x1f26df83
+  return_type_id: 0x48b5725f
+  parameter_id: 0x31b96ec5
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x1f29471f
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x2efe8065
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x1df06cce
+  parameter_id: 0xf435685e
+  parameter_id: 0x0cbf60eb
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x1f2b1167
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3ee88c45
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x1f2c22ae
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3806390a
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x1f2cb682
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3ed39c44
+}
+function {
+  id: 0x1f3094b2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3ea31487
+}
+function {
+  id: 0x1f30e823
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3ea2e6c1
+}
+function {
+  id: 0x1f311b8f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3e360385
+  parameter_id: 0x0d554dfb
+  parameter_id: 0x4585663f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x1b44744f
+}
+function {
+  id: 0x1f380b01
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3e816a4b
+}
+function {
+  id: 0x1f385795
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x090ad01a
+}
+function {
+  id: 0x1f3a7fab
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3ad0ee83
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1f3aec00
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3c9a9fb2
+  parameter_id: 0x21069feb
+}
+function {
+  id: 0x1f3c2ec8
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32343a4a
+  parameter_id: 0xc9082b19
+  parameter_id: 0x3545954a
+}
+function {
+  id: 0x1f3dbc29
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3d92f9c7
+  parameter_id: 0x3054f2d7
+}
+function {
+  id: 0x1f458cf4
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3ea2e6c1
+  parameter_id: 0x1d5935e7
+}
+function {
+  id: 0x1f45d394
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3760766d
+  parameter_id: 0x8167e73b
+}
+function {
+  id: 0x1f4af633
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3b12c8e0
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1f4d041c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3c18d186
+  parameter_id: 0x36c97631
+  parameter_id: 0x270c2906
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x3e6396e0
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1f4f6ba0
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1f50da89
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3f222c68
+}
+function {
+  id: 0x1f51083c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x1253769c
+  parameter_id: 0x120540d1
+  parameter_id: 0x2e18f543
+}
+function {
+  id: 0x1f510b52
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x1253769c
+  parameter_id: 0x120540d1
+  parameter_id: 0x2ec35650
+}
+function {
+  id: 0x1f515317
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x1253769c
+  parameter_id: 0x120540d1
+  parameter_id: 0x38d23361
+}
+function {
+  id: 0x1f516e2a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x1253769c
+  parameter_id: 0x120540d1
+  parameter_id: 0x379d63b0
+}
+function {
+  id: 0x1f51a96a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x1253769c
+  parameter_id: 0x120540d1
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0x1f51b343
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x1253769c
+  parameter_id: 0x120540d1
+  parameter_id: 0x00c72527
+}
+function {
+  id: 0x1f51ba91
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x1253769c
+  parameter_id: 0x120540d1
+  parameter_id: 0x02b3baf5
+}
+function {
+  id: 0x1f51eecd
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x1253769c
+  parameter_id: 0x120540d1
+  parameter_id: 0x17a49e9b
+}
+function {
+  id: 0x1f51f760
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x1253769c
+  parameter_id: 0x120540d1
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x1f520e7e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3c9ce28f
+  parameter_id: 0x3f0185ef
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1f5469d6
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x120540d1
+}
+function {
+  id: 0x1f558355
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x13580d6c
+  parameter_id: 0x13580d6c
+  parameter_id: 0x13580d6c
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x1f55a7e6
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3f37d9d5
+}
+function {
+  id: 0x1f57bdaa
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3f59ee8d
+  parameter_id: 0x0665e6b6
+}
+function {
+  id: 0x1f595cc0
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3e6239e1
+  parameter_id: 0x154aa8e2
+  parameter_id: 0x32a623d7
+}
+function {
+  id: 0x1f5b92f5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x397d00ab
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1f5badff
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3f0ff1b1
+}
+function {
+  id: 0x1f5d7673
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x2efa61a4
+  parameter_id: 0x0483e6f8
+}
+function {
+  id: 0x1f6119ad
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3c2755a3
+  parameter_id: 0x3c2755a3
+}
+function {
+  id: 0x1f62fcf3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3feab580
+}
+function {
+  id: 0x1f694ce0
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3fc475cd
+}
+function {
+  id: 0x1f729ba1
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3fab28c8
+}
+function {
+  id: 0x1f7356db
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3fac1d22
+}
+function {
+  id: 0x1f7655d2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x396fe4f8
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x1f796a1c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3f84ee3c
+}
+function {
+  id: 0x1f7d7689
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3f949c69
+}
+function {
+  id: 0x1f7d7d9e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x184052fc
+}
+function {
+  id: 0x1f815c37
+  return_type_id: 0xd5df6730
+  parameter_id: 0x3e10b518
+  parameter_id: 0x0bb0c019
+}
+function {
+  id: 0x1f835b6f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x397d00ab
+  parameter_id: 0x5d8155a5
+  parameter_id: 0xc93e017b
+}
+function {
+  id: 0x1f849f7d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3fa672fd
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x1f85d3ef
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3d3b5dd7
+  parameter_id: 0x18bd6530
+  parameter_id: 0xc9082b19
+  parameter_id: 0xf435685e
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x1f903d6e
+  return_type_id: 0xd5df6730
+  parameter_id: 0x3e10b518
+  parameter_id: 0x0bb0c019
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1f9184fb
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3c2755a3
+}
+function {
+  id: 0x1f9325e1
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3c2dd1ca
+}
+function {
+  id: 0x1f97abfa
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3c3fe9a7
+}
+function {
+  id: 0x1f99af43
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3c07fb40
+}
+function {
+  id: 0x1f9a1d61
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3c0933ca
+}
+function {
+  id: 0x1f9b34c1
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3ada60b4
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x1f9c6048
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x2e94a1e1
+  parameter_id: 0x33756485
+  parameter_id: 0x11cffa09
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1f9e005b
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x2cc06451
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x1f9e6a28
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3c18eeed
+}
+function {
+  id: 0x1fa0c57a
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3fa672fd
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x1fa33567
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x2efa61a4
+  parameter_id: 0x38040a6c
+  parameter_id: 0x3267a784
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x1fa37978
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3c2755a3
+  parameter_id: 0x0cbf60eb
+}
+function {
+  id: 0x1fa8b2bc
+  return_type_id: 0x48b5725f
+  parameter_id: 0x33756485
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x1faab0ad
+  return_type_id: 0x48b5725f
+  parameter_id: 0x38d23361
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x38d23361
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1fafd1a4
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3cfe7778
+  parameter_id: 0x01c5a749
+  parameter_id: 0x3c2dd1ca
+}
+function {
+  id: 0x1fb0c55c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3ca2533c
+}
+function {
+  id: 0x1fb47b04
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3ea2e6c1
+  parameter_id: 0x2124c9f1
+}
+function {
+  id: 0x1fb5d3a2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3e19e681
+  parameter_id: 0x2afee447
+}
+function {
+  id: 0x1fb862d7
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3f84ee3c
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x1fb8ab84
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3c83e85d
+}
+function {
+  id: 0x1fbef67f
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3c9a9fb2
+}
+function {
+  id: 0x1fc53480
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3ba261b0
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x1fc886d7
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3d435d11
+}
+function {
+  id: 0x1fc98171
+  return_type_id: 0x48b5725f
+  parameter_id: 0x391f15ea
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1fca95d0
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x366f080d
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x1fcd1693
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3d551c03
+}
+function {
+  id: 0x1fce8843
+  return_type_id: 0x24706e28
+  parameter_id: 0x1a6ea392
+  parameter_id: 0x3cc89d58
+  parameter_id: 0x345a9df3
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x1fd10421
+  return_type_id: 0x48b5725f
+  parameter_id: 0x397d00ab
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1fd686e6
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3d3b5dd7
+}
+function {
+  id: 0x1fd78946
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3b08eb03
+  parameter_id: 0x6720d32f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x1fd9024d
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3258b271
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x1fd9a8d3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3b12c8e0
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1fdd3c97
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3c0e9e79
+  parameter_id: 0x11b2a696
+}
+function {
+  id: 0x1fdd6fd2
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3e6396e0
+  parameter_id: 0x3104f372
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1fdf0b41
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3399c453
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x1fdf5aa3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3e02e685
+  parameter_id: 0x31eca449
+}
+function {
+  id: 0x1fe1d91e
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3176a085
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x1feaaebf
+  return_type_id: 0x48b5725f
+  parameter_id: 0x315b7e01
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x1feb1868
+  return_type_id: 0x48b5725f
+  parameter_id: 0x39cdf888
+  parameter_id: 0x4478ba6b
+  parameter_id: 0x4754c3e4
+}
+function {
+  id: 0x1febeb84
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3dcee85d
+}
+function {
+  id: 0x1fee56e5
+  return_type_id: 0x48b5725f
+  parameter_id: 0x39c3bcd2
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1feff59b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3fa672fd
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x1ff204c3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3d2ef874
+  parameter_id: 0x087ad34b
+}
+function {
+  id: 0x1ff7ecc0
+  return_type_id: 0xd5cc9c9a
+  parameter_id: 0x2fa7f388
+  parameter_id: 0x3bfc68fb
+}
+function {
+  id: 0x1ffc73a6
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x1ffd60fe
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3e19e681
+  parameter_id: 0x38d23361
+}
+function {
+  id: 0x1ffdf635
+  return_type_id: 0x48b5725f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x1ffe211c
+  return_type_id: 0x48b5725f
+  parameter_id: 0x32fddfe5
+  parameter_id: 0xf641dd8a
+}
+function {
+  id: 0x209ae488
+  return_type_id: 0x37f9fd94
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x20cd94dc
+  return_type_id: 0x33756485
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x20cec5ff
+  return_type_id: 0x3ba8f155
+  parameter_id: 0x29c600bb
+  parameter_id: 0x379d63b0
+}
+function {
+  id: 0x20dcb434
+  return_type_id: 0x3ba8f155
+  parameter_id: 0x29c600bb
+  parameter_id: 0x33011141
+}
+function {
+  id: 0x212a2ba8
+  return_type_id: 0x48b5725f
+  parameter_id: 0xc9082b19
+  parameter_id: 0xfc0e1dbd
+  parameter_id: 0x01222f7d
+}
+function {
+  id: 0x21a7fa19
+  return_type_id: 0x145f7b00
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3ddc5dec
+}
+function {
+  id: 0x21a8c9ba
+  return_type_id: 0x145f7b00
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x21ebbce2
+  return_type_id: 0x33b32811
+  parameter_id: 0x03064599
+  parameter_id: 0x33b32811
+  parameter_id: 0x38d23361
+}
+function {
+  id: 0x221b39b7
+  return_type_id: 0x1fc34bc2
+  parameter_id: 0xbdd18903
+  parameter_id: 0xf435685e
+  parameter_id: 0x6720d32f
+  parameter_id: 0xf0cb20f0
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x22708ed7
+  return_type_id: 0xb94e10c7
+  parameter_id: 0x04b193cc
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x2ed8b8f9
+}
+function {
+  id: 0x22a7ae7f
+  return_type_id: 0x2b8f13b3
+  parameter_id: 0x3806a5e7
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x22b8aec1
+  return_type_id: 0x48b5725f
+  parameter_id: 0xc9082b19
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x231edf87
+  return_type_id: 0x40e51470
+  parameter_id: 0x02f4fda6
+  parameter_id: 0x5d8155a5
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x23787ede
+  return_type_id: 0x083d3246
+  parameter_id: 0x0b012462
+  parameter_id: 0x1e820193
+}
+function {
+  id: 0x244ac93e
+  return_type_id: 0x1847a854
+  parameter_id: 0x3e10b518
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x2475a0e9
+  return_type_id: 0x27a7c613
+  parameter_id: 0x3f222c68
+  parameter_id: 0x18bd6530
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x27a7c613
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x24d0f0fb
+  return_type_id: 0x2f99f236
+  parameter_id: 0x0e2680c2
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x2524b83a
+  return_type_id: 0xb94e10c7
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x0858434c
+  parameter_id: 0x2ed8b8f9
+}
+function {
+  id: 0x25445990
+  return_type_id: 0xb94e10c7
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x106029c6
+  parameter_id: 0x2ed8b8f9
+}
+function {
+  id: 0x2545d8c8
+  return_type_id: 0xb94e10c7
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x106029c6
+  parameter_id: 0x28ddd932
+}
+function {
+  id: 0x257f9ff4
+  return_type_id: 0x8dcb945d
+  parameter_id: 0x1e820193
+  parameter_id: 0x7be80061
+}
+function {
+  id: 0x25ad187d
+  return_type_id: 0xb94e10c7
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x28ddd932
+}
+function {
+  id: 0x25b50dfa
+  return_type_id: 0xb94e10c7
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x2ed8b8f9
+}
+function {
+  id: 0x25b94d0a
+  return_type_id: 0x914dbfdc
+  parameter_id: 0x914dbfdc
+  parameter_id: 0x3f0185ef
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x25e6cd32
+  return_type_id: 0xb94e10c7
+  parameter_id: 0x1aee9939
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x28ddd932
+}
+function {
+  id: 0x25fe2d8e
+  return_type_id: 0xb94e10c7
+  parameter_id: 0x1a8d1bcb
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x28ddd932
+}
+function {
+  id: 0x2601e7ac
+  return_type_id: 0x14528516
+  parameter_id: 0x0258f96e
+  parameter_id: 0x2712b6f9
+}
+function {
+  id: 0x263c17ab
+  return_type_id: 0x2f99f236
+  parameter_id: 0x0e2680c2
+  parameter_id: 0x4585663f
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x26cc0900
+  return_type_id: 0x0c2e195c
+  parameter_id: 0x3e10b518
+  parameter_id: 0x9547a3da
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x26e18424
+  return_type_id: 0x709946fa
+  parameter_id: 0x358ff5b7
+}
+function {
+  id: 0x26fe438d
+  return_type_id: 0x239e18b5
+  parameter_id: 0x37d7ca8b
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x27d025a4
+  return_type_id: 0x40e51470
+  parameter_id: 0x14528516
+}
+function {
+  id: 0x28314eaa
+  return_type_id: 0x48b5725f
+  parameter_id: 0xe08ff84f
+  parameter_id: 0x238b8721
+  parameter_id: 0x13580d6c
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0x283e6677
+  return_type_id: 0x48b5725f
+  parameter_id: 0xe1883390
+  parameter_id: 0x310ec01d
+}
+function {
+  id: 0x2864f998
+  return_type_id: 0x33756485
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x288802b1
+  return_type_id: 0x1457cd38
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3fdb8af3
+  parameter_id: 0x23f09c34
+}
+function {
+  id: 0x289916da
+  return_type_id: 0x042af17e
+  parameter_id: 0x21003da7
+  parameter_id: 0x2668e644
+}
+function {
+  id: 0x289e456d
+  return_type_id: 0x18456730
+  parameter_id: 0x0355dc72
+}
+function {
+  id: 0x28bd3c4e
+  return_type_id: 0x37e3ffd7
+  parameter_id: 0x030b9acf
+}
+function {
+  id: 0x28e34a3d
+  return_type_id: 0xb94e10c7
+  parameter_id: 0x2efe8065
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x2ed8b8f9
+}
+function {
+  id: 0x28f75ced
+  return_type_id: 0x48b5725f
+  parameter_id: 0xe08ff84f
+  parameter_id: 0x13580d6c
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0x29298783
+  return_type_id: 0x40e51470
+  parameter_id: 0x29c600bb
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x294efe3e
+  return_type_id: 0x1c551dee
+  parameter_id: 0x0490bb4a
+  parameter_id: 0x300fdc99
+}
+function {
+  id: 0x2971f309
+  return_type_id: 0x2ba06eea
+  parameter_id: 0x25ffeea5
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x29da83bb
+  return_type_id: 0x042af17e
+  parameter_id: 0x2668e644
+}
+function {
+  id: 0x29f0e61e
+  return_type_id: 0x10617cac
+  parameter_id: 0x322c8c4b
+}
+function {
+  id: 0x2a0126cf
+  return_type_id: 0x48b5725f
+  parameter_id: 0xe8034002
+  parameter_id: 0x2669d715
+}
+function {
+  id: 0x2a586b69
+  return_type_id: 0x239e18b5
+  parameter_id: 0x054f691a
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x2a59f7ea
+  return_type_id: 0x239e18b5
+  parameter_id: 0x054f691a
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x2a5b8aea
+  return_type_id: 0x48b5725f
+  parameter_id: 0xeb0f6de6
+}
+function {
+  id: 0x2a6a9218
+  return_type_id: 0x37dc7251
+}
+function {
+  id: 0x2a7bc89a
+  return_type_id: 0x2b8f13b3
+  parameter_id: 0x191de370
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x2ab7a064
+  return_type_id: 0x2b754442
+  parameter_id: 0x0258f96e
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x2ad54eeb
+  return_type_id: 0xf1eeb05c
+  parameter_id: 0x2ed870a7
+  parameter_id: 0x11c404ba
+}
+function {
+  id: 0x2b4d9f72
+  return_type_id: 0x48b5725f
+  parameter_id: 0xeb0f6de6
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x2b6ce96f
+  return_type_id: 0x2b8a97e8
+  parameter_id: 0x1b36c7a2
+}
+function {
+  id: 0x2b7baaf7
+  return_type_id: 0x002136b3
+  parameter_id: 0x2e8ed696
+}
+function {
+  id: 0x2b9a8c39
+  return_type_id: 0x40e51470
+  parameter_id: 0x25782362
+}
+function {
+  id: 0x2ba2f0cc
+  return_type_id: 0x40e51470
+  parameter_id: 0x2599d0b6
+}
+function {
+  id: 0x2bcaa9c8
+  return_type_id: 0x2b754442
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x2beed169
+  return_type_id: 0xb94e10c7
+  parameter_id: 0x22cee855
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x28ddd932
+}
+function {
+  id: 0x2c0dbc38
+  return_type_id: 0xb94e10c7
+  parameter_id: 0x3d435d11
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x28ddd932
+}
+function {
+  id: 0x2c22370c
+  return_type_id: 0x145f7b00
+  parameter_id: 0x347303b4
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x2c313d32
+  return_type_id: 0x2fa7f388
+  parameter_id: 0x347303b4
+}
+function {
+  id: 0x2c64900a
+  return_type_id: 0xb94e10c7
+  parameter_id: 0x3fac1d22
+  parameter_id: 0x2ed8b8f9
+}
+function {
+  id: 0x2c9812c2
+  return_type_id: 0xb94e10c7
+  parameter_id: 0x3f222c68
+  parameter_id: 0x18bd6530
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x28ddd932
+}
+function {
+  id: 0x2cd53fbb
+  return_type_id: 0x107606b0
+  parameter_id: 0x1b8590a8
+}
+function {
+  id: 0x2cf1e668
+  return_type_id: 0x48b5725f
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x2d04a70f
+  return_type_id: 0x043ecddb
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3283492b
+}
+function {
+  id: 0x2d065fdc
+  return_type_id: 0x14518028
+  parameter_id: 0x2d011a2d
+}
+function {
+  id: 0x2d1647d4
+  return_type_id: 0x0c485c36
+  parameter_id: 0x3e10b518
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x2d27988b
+  return_type_id: 0x37cc86e2
+  parameter_id: 0x0cc78943
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x2d2c7d0b
+  return_type_id: 0x04537b8c
+  parameter_id: 0x1fa7df7c
+}
+function {
+  id: 0x2d456d1f
+  return_type_id: 0x37cc86e2
+  parameter_id: 0x0cc78943
+}
+function {
+  id: 0x2d5eecc4
+  return_type_id: 0x18456730
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x94ed3026
+}
+function {
+  id: 0x2d6430a1
+  return_type_id: 0x27a7c613
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x27a7c613
+  parameter_id: 0x6720d32f
+  parameter_id: 0x27a7c613
+}
+function {
+  id: 0x2d64ae3e
+  return_type_id: 0x27a7c613
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x27a7c613
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x2d73e0a2
+  return_type_id: 0x33b32811
+  parameter_id: 0x347303b4
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x2e18f543
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x2d7bcaf0
+  return_type_id: 0x27a7c613
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x27a7c613
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x27a7c613
+  parameter_id: 0x27a7c613
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x2df3f088
+  return_type_id: 0x1084abd6
+  parameter_id: 0x0258f96e
+  parameter_id: 0x000fdfa4
+  parameter_id: 0x38564622
+}
+function {
+  id: 0x2dfa71ba
+  return_type_id: 0x0c2e195c
+  parameter_id: 0x1b8590a8
+}
+function {
+  id: 0x2e024bbc
+  return_type_id: 0x40e51470
+  parameter_id: 0x331b3d77
+}
+function {
+  id: 0x2e14bb87
+  return_type_id: 0xa8fff47c
+  parameter_id: 0x116785ed
+  parameter_id: 0x14b9453b
+}
+function {
+  id: 0x2e298033
+  return_type_id: 0x0c48c037
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x2e45de25
+  return_type_id: 0x48b5725f
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x2e992cc0
+  return_type_id: 0x40e51470
+  parameter_id: 0x3176a085
+}
+function {
+  id: 0x2eae2692
+  return_type_id: 0x105c8027
+  parameter_id: 0x3760766d
+  parameter_id: 0x3c38843b
+}
+function {
+  id: 0x2eb1a24e
+  return_type_id: 0x145f7b00
+  parameter_id: 0x3ddc5dec
+}
+function {
+  id: 0x2ec04b91
+  return_type_id: 0xa12a969e
+  parameter_id: 0x11e6864c
+}
+function {
+  id: 0x2f31eea6
+  return_type_id: 0xa8fff47c
+  parameter_id: 0x14b9453b
+}
+function {
+  id: 0x2f858b61
+  return_type_id: 0x0c48c037
+  parameter_id: 0x38a09850
+}
+function {
+  id: 0x300b805e
+  return_type_id: 0x0483e6f8
+  parameter_id: 0x37cc6bab
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x300c1af4
+  return_type_id: 0x33756485
+  parameter_id: 0x06835e9c
+}
+function {
+  id: 0x302279c2
+  return_type_id: 0x0483e6f8
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x3026afc1
+  return_type_id: 0x0483e6f8
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x3039a998
+  return_type_id: 0x33756485
+  parameter_id: 0x0562c566
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x30964cd5
+  return_type_id: 0x0483e6f8
+  parameter_id: 0x3a8e2ac6
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x309a868e
+  return_type_id: 0x0bb0c019
+  parameter_id: 0xf1a6dfed
+  parameter_id: 0x3e10b518
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x309ad6f0
+  return_type_id: 0x37792593
+  parameter_id: 0x08fced89
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x309d81c3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x865acc96
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3f80e65f
+}
+function {
+  id: 0x30b12c32
+  return_type_id: 0x27b71910
+  parameter_id: 0x1d44326e
+}
+function {
+  id: 0x30dc6fbb
+  return_type_id: 0x17dabdcd
+  parameter_id: 0xc93e017b
+}
+function {
+  id: 0x30f59213
+  return_type_id: 0x33756485
+  parameter_id: 0x06835e9c
+  parameter_id: 0x3e6239e1
+}
+function {
+  id: 0x30f8e5d3
+  return_type_id: 0x33756485
+  parameter_id: 0x078316ff
+  parameter_id: 0x2d3b4fc6
+}
+function {
+  id: 0x30ff87bc
+  return_type_id: 0x33756485
+  parameter_id: 0x064d6086
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x4585663f
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x30ff8ddd
+  return_type_id: 0x33756485
+  parameter_id: 0x064d6086
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x4585663f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x14abdd00
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x313af308
+  return_type_id: 0x33756485
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x313d1080
+  return_type_id: 0x23f09c34
+  parameter_id: 0x3e10b518
+  parameter_id: 0x23f09c34
+}
+function {
+  id: 0x31426e59
+  return_type_id: 0x0483e6f8
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x3178bc26
+  return_type_id: 0xedf277ba
+  parameter_id: 0x3e02e685
+  parameter_id: 0xedf277ba
+}
+function {
+  id: 0x317f6303
+  return_type_id: 0x0483e6f8
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x318306ba
+  return_type_id: 0x18456730
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x3185c147
+  return_type_id: 0x33756485
+  parameter_id: 0x00a43052
+}
+function {
+  id: 0x318cc368
+  return_type_id: 0x37792593
+  parameter_id: 0x08fced89
+}
+function {
+  id: 0x31ab6254
+  return_type_id: 0x18456730
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0a193bb7
+}
+function {
+  id: 0x31accd53
+  return_type_id: 0x33756485
+}
+function {
+  id: 0x31ba2c8d
+  return_type_id: 0x0483e6f8
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x31d0bba1
+  return_type_id: 0x48b5725f
+  parameter_id: 0x865acc96
+  parameter_id: 0x379645d8
+}
+function {
+  id: 0x31e594b0
+  return_type_id: 0x27d0317f
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x324a14fb
+  return_type_id: 0x0483e6f8
+  parameter_id: 0x3e10b518
+  parameter_id: 0xfc0e1dbd
+}
+function {
+  id: 0x3256909b
+  return_type_id: 0x0483e6f8
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf435685e
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x32733118
+  return_type_id: 0x0483e6f8
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf435685e
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x327cb7f2
+  return_type_id: 0x0483e6f8
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x329319f8
+  return_type_id: 0x2fb495bb
+  parameter_id: 0x3e10b518
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x32d662aa
+  return_type_id: 0x1830dd64
+}
+function {
+  id: 0x32d95585
+  return_type_id: 0x336e8c54
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x33281d02
+  return_type_id: 0x33756485
+  parameter_id: 0x0a134144
+}
+function {
+  id: 0x3330b35a
+  return_type_id: 0x2bc93f35
+  parameter_id: 0x347303b4
+}
+function {
+  id: 0x336c21b3
+  return_type_id: 0x48b5725f
+  parameter_id: 0x8fd1c081
+}
+function {
+  id: 0x338b5a35
+  return_type_id: 0x101b9aaa
+}
+function {
+  id: 0x33937c96
+  return_type_id: 0x33756485
+  parameter_id: 0x0c2e195c
+  parameter_id: 0x4585663f
+  parameter_id: 0x8bbf7ced
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x33c9b2ef
+  return_type_id: 0x33756485
+  parameter_id: 0x0ae4a2c7
+  parameter_id: 0x33756485
+  parameter_id: 0x4585663f
+  parameter_id: 0x3bf581e3
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x33d83070
+  return_type_id: 0x33756485
+  parameter_id: 0x0ae4a2c7
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x33e7bc51
+  return_type_id: 0x33756485
+  parameter_id: 0x08dcfb76
+  parameter_id: 0x1b4ba19a
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x340d6f59
+  return_type_id: 0x33756485
+  parameter_id: 0x1582ab06
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x34109d77
+  return_type_id: 0x48b5725f
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x345f1809
+  return_type_id: 0xa9403390
+  parameter_id: 0x3e6396e0
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0xa9403390
+}
+function {
+  id: 0x34781b82
+  return_type_id: 0x33756485
+  parameter_id: 0x17535b44
+}
+function {
+  id: 0x347afa45
+  return_type_id: 0x18150d9f
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x3494ded4
+  return_type_id: 0x48b5725f
+  parameter_id: 0x92233392
+  parameter_id: 0x2110e8dc
+}
+function {
+  id: 0x34b8504b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x92233392
+  parameter_id: 0x295c7202
+  parameter_id: 0x35f7f02e
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x34bfea0b
+  return_type_id: 0x48b5725f
+  parameter_id: 0x92233392
+  parameter_id: 0x295c7202
+  parameter_id: 0x2b1ef221
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x34c40d5b
+  return_type_id: 0x33756485
+  parameter_id: 0x15a30023
+}
+function {
+  id: 0x35757b7f
+  return_type_id: 0xe62ebf07
+  parameter_id: 0x391f15ea
+  parameter_id: 0x3399c453
+  parameter_id: 0x331b9666
+}
+function {
+  id: 0x35b105f3
+  return_type_id: 0xa9403390
+  parameter_id: 0x391f15ea
+  parameter_id: 0x6720d32f
+  parameter_id: 0xa9403390
+}
+function {
+  id: 0x360a8ce9
+  return_type_id: 0x33756485
+  parameter_id: 0x1d5bae2a
+  parameter_id: 0x33756485
+  parameter_id: 0xf1a6dfed
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x360ab09d
+  return_type_id: 0x0490bb4a
+  parameter_id: 0x3e146274
+  parameter_id: 0x3e10b518
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x361a553a
+  return_type_id: 0x18150d9f
+  parameter_id: 0x347303b4
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x361bd1c4
+  return_type_id: 0x0490bb4a
+  parameter_id: 0x3e146274
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x362581b9
+  return_type_id: 0x33756485
+  parameter_id: 0x1e2533ab
+}
+function {
+  id: 0x36308b50
+  return_type_id: 0x0483e6f8
+  parameter_id: 0x207717c7
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x184a111e
+  parameter_id: 0x0483e6f8
+}
+function {
+  id: 0x363093b8
+  return_type_id: 0x0483e6f8
+  parameter_id: 0x207717c7
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x184a111e
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x3630fed9
+  return_type_id: 0x0483e6f8
+  parameter_id: 0x207717c7
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x184a111e
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x364a5e11
+  return_type_id: 0x0483e6f8
+  parameter_id: 0x2131312a
+  parameter_id: 0x0e04e400
+}
+function {
+  id: 0x365e97bc
+  return_type_id: 0x48b5725f
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x1a370a4f
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x3679e659
+  return_type_id: 0x3b68ec61
+  parameter_id: 0x32a623d7
+}
+function {
+  id: 0x368f1732
+  return_type_id: 0x0490bb4a
+  parameter_id: 0x3fa672fd
+}
+function {
+  id: 0x36cad8bb
+  return_type_id: 0x23f09c34
+  parameter_id: 0x23f09c34
+}
+function {
+  id: 0x36e39310
+  return_type_id: 0x0490bb4a
+  parameter_id: 0x3e146274
+}
+function {
+  id: 0x36eaa726
+  return_type_id: 0x33756485
+  parameter_id: 0x1d19a9d5
+}
+function {
+  id: 0x36f1d1fd
+  return_type_id: 0x0490bb4a
+  parameter_id: 0x3e146274
+  parameter_id: 0x0490bb4a
+}
+function {
+  id: 0x36fdc1c8
+  return_type_id: 0x33756485
+  parameter_id: 0x1d44326e
+}
+function {
+  id: 0x37579e28
+  return_type_id: 0x33756485
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x37579ee5
+  return_type_id: 0x33756485
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x376120fa
+  return_type_id: 0x48b5725f
+  parameter_id: 0x9fe5c5a6
+}
+function {
+  id: 0x37677261
+  return_type_id: 0x33756485
+  parameter_id: 0x14abdd00
+  parameter_id: 0xf435685e
+  parameter_id: 0xc7f025a7
+  parameter_id: 0x18bd6530
+  parameter_id: 0x0cbf60eb
+}
+function {
+  id: 0x376bf8c4
+  return_type_id: 0x33756485
+  parameter_id: 0x18bd6530
+  parameter_id: 0x391f15ea
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x3783941f
+  return_type_id: 0x33756485
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x37d5564f
+  return_type_id: 0x33756485
+  parameter_id: 0x19e66c71
+}
+function {
+  id: 0x37f8837e
+  return_type_id: 0x33756485
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x44891609
+}
+function {
+  id: 0x380f5cdc
+  return_type_id: 0x0483e6f8
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x3842a55f
+  return_type_id: 0x0490bb4a
+  parameter_id: 0x0490bb4a
+}
+function {
+  id: 0x3852b6b0
+  return_type_id: 0x33756485
+  parameter_id: 0x27b5ed37
+  parameter_id: 0x04c02b90
+}
+function {
+  id: 0x387a6934
+  return_type_id: 0x33756485
+  parameter_id: 0x246dc7d4
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x38f2c58b
+  return_type_id: 0x33756485
+  parameter_id: 0x25782362
+}
+function {
+  id: 0x3908f702
+  return_type_id: 0x0490bb4a
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x392bba3e
+  return_type_id: 0x33756485
+  parameter_id: 0x2e8d5f05
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x394343b5
+  return_type_id: 0x184052fc
+  parameter_id: 0x3e10b518
+  parameter_id: 0x1253769c
+  parameter_id: 0x184052fc
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x394358ea
+  return_type_id: 0x184052fc
+  parameter_id: 0x3e10b518
+  parameter_id: 0x1253769c
+  parameter_id: 0x184052fc
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x39439154
+  return_type_id: 0x184052fc
+  parameter_id: 0x3e10b518
+  parameter_id: 0x1253769c
+  parameter_id: 0x184052fc
+  parameter_id: 0x2d8ee262
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x3943c0fb
+  return_type_id: 0x184052fc
+  parameter_id: 0x3e10b518
+  parameter_id: 0x1253769c
+  parameter_id: 0x184052fc
+  parameter_id: 0x386effc9
+}
+function {
+  id: 0x3943c6d4
+  return_type_id: 0x184052fc
+  parameter_id: 0x3e10b518
+  parameter_id: 0x1253769c
+  parameter_id: 0x184052fc
+  parameter_id: 0x386effc9
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x3943cd14
+  return_type_id: 0x184052fc
+  parameter_id: 0x3e10b518
+  parameter_id: 0x1253769c
+  parameter_id: 0x184052fc
+  parameter_id: 0x3f55d498
+  parameter_id: 0x4585663f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x394e2c9b
+  return_type_id: 0x33756485
+  parameter_id: 0x238b8721
+}
+function {
+  id: 0x3962f9e8
+  return_type_id: 0x184052fc
+  parameter_id: 0x3e10b518
+  parameter_id: 0x184052fc
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x396d7dc5
+  return_type_id: 0x184052fc
+  parameter_id: 0x3e10b518
+  parameter_id: 0x184052fc
+}
+function {
+  id: 0x397a9784
+  return_type_id: 0x27b71910
+  parameter_id: 0x3c18d186
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x39e2f73b
+  return_type_id: 0x0490bb4a
+  parameter_id: 0x0258f96e
+  parameter_id: 0x0490bb4a
+}
+function {
+  id: 0x3a16a200
+  return_type_id: 0x33756485
+  parameter_id: 0x2efd5036
+  parameter_id: 0x06835e9c
+  parameter_id: 0x7e280689
+  parameter_id: 0x2e82a19a
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x3a17e325
+  return_type_id: 0x0483e6f8
+  parameter_id: 0x10a78bb8
+}
+function {
+  id: 0x3a251008
+  return_type_id: 0x18456730
+  parameter_id: 0x49b889e7
+}
+function {
+  id: 0x3aa9b2fb
+  return_type_id: 0x0858434c
+  parameter_id: 0x09483d5e
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2c60f2f5
+}
+function {
+  id: 0x3ab49650
+  return_type_id: 0x0483e6f8
+  parameter_id: 0x120540d1
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x3ab949d4
+  return_type_id: 0x1c2f6323
+  parameter_id: 0x3b04bead
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x3abef0c1
+  return_type_id: 0x0483e6f8
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x3ad65e6d
+  return_type_id: 0x64a5f25f
+  parameter_id: 0x14b9453b
+  parameter_id: 0x052fac00
+}
+function {
+  id: 0x3af00d0a
+  return_type_id: 0x33756485
+  parameter_id: 0x2e8d5f05
+  parameter_id: 0x33756485
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x3b3a67ec
+  return_type_id: 0x40e51470
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0db5f18a
+}
+function {
+  id: 0x3b6e45be
+  return_type_id: 0x40e51470
+  parameter_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x3b90ab8c
+  return_type_id: 0x18150d9f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x3bae2ab4
+  return_type_id: 0x33756485
+  parameter_id: 0x24d65b62
+  parameter_id: 0xcddc4fff
+}
+function {
+  id: 0x3bb8868a
+  return_type_id: 0x18150d9f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x37f2a61c
+  parameter_id: 0x3e952bc6
+}
+function {
+  id: 0x3bc23464
+  return_type_id: 0x27b71910
+  parameter_id: 0x3c18d186
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x3bdb4e2c
+  return_type_id: 0x23f09c34
+  parameter_id: 0x1457cd38
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x3bdd4d7d
+  return_type_id: 0x33756485
+  parameter_id: 0x29c600bb
+}
+function {
+  id: 0x3be7b5fc
+  return_type_id: 0x64a5f25f
+  parameter_id: 0x116785ed
+  parameter_id: 0x14b9453b
+}
+function {
+  id: 0x3c0f7773
+  return_type_id: 0x101b9aaa
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x3c2a7319
+  return_type_id: 0x0483e6f8
+  parameter_id: 0x0bb0c019
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x3c41f083
+  return_type_id: 0x33756485
+  parameter_id: 0x37b4f743
+}
+function {
+  id: 0x3cc96bbe
+  return_type_id: 0x0483e6f8
+  parameter_id: 0x0483e6f8
+  parameter_id: 0xf435685e
+  parameter_id: 0x1d19a9d5
+}
+function {
+  id: 0x3cd4485f
+  return_type_id: 0x33756485
+  parameter_id: 0x363b9249
+  parameter_id: 0x3c6958c4
+  parameter_id: 0x1b4ba19a
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x3d0f6874
+  return_type_id: 0x1c3dbe5a
+  parameter_id: 0x3b04bead
+  parameter_id: 0x347303b4
+}
+function {
+  id: 0x3d20d65e
+  return_type_id: 0x106029c6
+  parameter_id: 0x6720d32f
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x3d249ff8
+  return_type_id: 0x1042c9d1
+}
+function {
+  id: 0x3d3888de
+  return_type_id: 0x33756485
+  parameter_id: 0x360c66c5
+  parameter_id: 0x4585663f
+  parameter_id: 0x064d6086
+  parameter_id: 0x36bf205a
+}
+function {
+  id: 0x3d62b757
+  return_type_id: 0x0483e6f8
+  parameter_id: 0x0258f96e
+  parameter_id: 0xf1a6dfed
+  parameter_id: 0x3e10b518
+  parameter_id: 0xe5e56f65
+}
+function {
+  id: 0x3d63b46a
+  return_type_id: 0x0483e6f8
+  parameter_id: 0x0258f96e
+  parameter_id: 0xf1a6dfed
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x3d719472
+  return_type_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x3db2a1a3
+  return_type_id: 0x1042c9d1
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x3dbc41e0
+  return_type_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x3dc04d04
+  return_type_id: 0x2fb647c0
+  parameter_id: 0x0258f96e
+  parameter_id: 0x30a17e95
+}
+function {
+  id: 0x3df5194b
+  return_type_id: 0x33756485
+  parameter_id: 0x31675062
+}
+function {
+  id: 0x3e17424c
+  return_type_id: 0x33756485
+  parameter_id: 0x3e10b518
+  parameter_id: 0x0bb0c019
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x3e19a55d
+  return_type_id: 0x33756485
+  parameter_id: 0x31675062
+  parameter_id: 0xf435685e
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x3e2facf6
+  return_type_id: 0x33756485
+  parameter_id: 0x3e0d8696
+}
+function {
+  id: 0x3e5176fa
+  return_type_id: 0x23f09c34
+  parameter_id: 0x019e2530
+}
+function {
+  id: 0x3e6c14f3
+  return_type_id: 0x0483e6f8
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x3e902c00
+  return_type_id: 0x0483e6f8
+  parameter_id: 0x0258f96e
+  parameter_id: 0x0e04e400
+}
+function {
+  id: 0x3e9c8220
+  return_type_id: 0x0483e6f8
+  parameter_id: 0x0258f96e
+  parameter_id: 0x0e04e400
+  parameter_id: 0x30d2f50a
+  parameter_id: 0x26a75523
+}
+function {
+  id: 0x3ea65109
+  return_type_id: 0x1830dd64
+  parameter_id: 0x31c0ce8c
+}
+function {
+  id: 0x3ec500b9
+  return_type_id: 0x33756485
+  parameter_id: 0x3ea31487
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x3ec9dde0
+  return_type_id: 0x33756485
+  parameter_id: 0x3ea31487
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x3ec9e358
+  return_type_id: 0x33756485
+  parameter_id: 0x3e909b01
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x3ece9456
+  return_type_id: 0x33756485
+  parameter_id: 0x3d896417
+}
+function {
+  id: 0x3edf7744
+  return_type_id: 0x33756485
+  parameter_id: 0x3dcee85d
+}
+function {
+  id: 0x3ef25979
+  return_type_id: 0x33756485
+  parameter_id: 0x3ea31487
+  parameter_id: 0x3ea31487
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x3ef294ac
+  return_type_id: 0x33756485
+  parameter_id: 0x3ea31487
+  parameter_id: 0x3ea31487
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x3f1ef875
+  return_type_id: 0x0483e6f8
+  parameter_id: 0x0483e6f8
+}
+function {
+  id: 0x3f327924
+  return_type_id: 0x33756485
+  parameter_id: 0x391f15ea
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x3f83d490
+  return_type_id: 0x33756485
+  parameter_id: 0x38bc670e
+}
+function {
+  id: 0x3fc78978
+  return_type_id: 0x0483e6f8
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x3fdbb7fb
+  return_type_id: 0x0483e6f8
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x3fe6baa1
+  return_type_id: 0x0483e6f8
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x3feb0829
+  return_type_id: 0x33756485
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0x3ff1d65f
+  return_type_id: 0x0483e6f8
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x384f7d7c
+  parameter_id: 0x384f7d7c
+}
+function {
+  id: 0x40073fc6
+  return_type_id: 0x14e7280b
+  parameter_id: 0x0258f96e
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x40326129
+  return_type_id: 0x31675062
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x4058e56a
+  return_type_id: 0x18bd6530
+  parameter_id: 0x548dee2a
+  parameter_id: 0xf435685e
+  parameter_id: 0xf1a6dfed
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x40705fbe
+  return_type_id: 0xc9082b19
+  parameter_id: 0x126add1c
+  parameter_id: 0x4585663f
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x40917e9e
+  return_type_id: 0x3d4280e0
+  parameter_id: 0x17a37c1c
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x40a2bb15
+  return_type_id: 0xc9082b19
+  parameter_id: 0x156a41de
+}
+function {
+  id: 0x40c0db4b
+  return_type_id: 0xc9082b19
+  parameter_id: 0x171c27b5
+  parameter_id: 0x3ffd24b9
+  parameter_id: 0x0335a07f
+  parameter_id: 0x3382a638
+  parameter_id: 0x38d23361
+}
+function {
+  id: 0x416927bc
+  return_type_id: 0x00c83ba6
+  parameter_id: 0x2cac4c27
+  parameter_id: 0x18bd6530
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x41818af1
+  return_type_id: 0xc9082b19
+  parameter_id: 0x11e6864c
+}
+function {
+  id: 0x41b29569
+  return_type_id: 0xc9082b19
+  parameter_id: 0x11e6864c
+  parameter_id: 0x0ee99834
+  parameter_id: 0x22da9c00
+  parameter_id: 0x03d7c287
+}
+function {
+  id: 0x420a20df
+  return_type_id: 0x00a43052
+  parameter_id: 0x0258f96e
+  parameter_id: 0xf435685e
+  parameter_id: 0xcd84e3cd
+  parameter_id: 0xf1a6dfed
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x420fd9c2
+  return_type_id: 0x7be80061
+  parameter_id: 0x2208f89a
+  parameter_id: 0x3e28122a
+}
+function {
+  id: 0x4258ab06
+  return_type_id: 0xc9082b19
+  parameter_id: 0x1e820193
+}
+function {
+  id: 0x42749d40
+  return_type_id: 0x18f9f5e3
+  parameter_id: 0x1d33485a
+  parameter_id: 0x27a7c613
+}
+function {
+  id: 0x42a927f9
+  return_type_id: 0xc9082b19
+  parameter_id: 0x1d44326e
+}
+function {
+  id: 0x42b552b4
+  return_type_id: 0x00daa23b
+  parameter_id: 0x347303b4
+  parameter_id: 0x3dde7e3f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x42ee3dd4
+  return_type_id: 0x2133d178
+  parameter_id: 0x3b04bead
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x42f5075e
+  return_type_id: 0xc9082b19
+  parameter_id: 0x1c34b0f2
+}
+function {
+  id: 0x43429458
+  return_type_id: 0x1cc6bdca
+  parameter_id: 0x3801e3d4
+}
+function {
+  id: 0x43500b01
+  return_type_id: 0x7be80061
+  parameter_id: 0x257d12af
+  parameter_id: 0x1e820193
+}
+function {
+  id: 0x43d7722e
+  return_type_id: 0xc9082b19
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x43fd9a51
+  return_type_id: 0x18f9f5e3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1d33485a
+  parameter_id: 0x0379c823
+}
+function {
+  id: 0x4409073d
+  return_type_id: 0x0cbf60eb
+  parameter_id: 0x0cbf60eb
+  parameter_id: 0x0cbf60eb
+}
+function {
+  id: 0x4418eedd
+  return_type_id: 0xc9082b19
+  parameter_id: 0x078316ff
+}
+function {
+  id: 0x442ce940
+  return_type_id: 0x0ca27481
+  parameter_id: 0x3399c453
+}
+function {
+  id: 0x44301cc5
+  return_type_id: 0x0cb7ac99
+  parameter_id: 0x00b7947f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x443a0c32
+  return_type_id: 0x14abdd00
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x44596890
+  return_type_id: 0x8224e5a5
+  parameter_id: 0x10617cac
+}
+function {
+  id: 0x448c535b
+  return_type_id: 0x00c83ba6
+  parameter_id: 0x3a813c8c
+}
+function {
+  id: 0x44977814
+  return_type_id: 0x0cbf60eb
+  parameter_id: 0x0cbf60eb
+  parameter_id: 0x2b20aa80
+}
+function {
+  id: 0x44ddb78b
+  return_type_id: 0x356691bc
+  parameter_id: 0x3b04bead
+  parameter_id: 0x36d2de0e
+}
+function {
+  id: 0x451c3ee7
+  return_type_id: 0x00a43052
+  parameter_id: 0x1d5934ce
+  parameter_id: 0xcd84e3cd
+}
+function {
+  id: 0x45319f70
+  return_type_id: 0x04ca9246
+  parameter_id: 0x347303b4
+  parameter_id: 0x276a1779
+}
+function {
+  id: 0x453414c9
+  return_type_id: 0x04ca9246
+  parameter_id: 0x347303b4
+  parameter_id: 0x276a1779
+  parameter_id: 0x162ee618
+}
+function {
+  id: 0x4552a7f2
+  return_type_id: 0x04ca9246
+  parameter_id: 0x347303b4
+  parameter_id: 0x3e10b518
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3f54a013
+}
+function {
+  id: 0x45a8a3c4
+  return_type_id: 0x00c83ba6
+  parameter_id: 0x3860f3c0
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x45f82b62
+  return_type_id: 0xc9082b19
+}
+function {
+  id: 0x46082d09
+  return_type_id: 0x18e64f74
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2c66d8fe
+}
+function {
+  id: 0x461b2125
+  return_type_id: 0x92233392
+  parameter_id: 0x4585663f
+  parameter_id: 0x2e18f543
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x4677b893
+  return_type_id: 0x00a43052
+  parameter_id: 0x1c2f6323
+}
+function {
+  id: 0x46acd69e
+  return_type_id: 0x391f15ea
+  parameter_id: 0x4585663f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x46ba8ac4
+  return_type_id: 0x92233392
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x46d0efa0
+  return_type_id: 0x865acc96
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x46e1fde6
+  return_type_id: 0x18bd6530
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x46fb55eb
+  return_type_id: 0xc9082b19
+  parameter_id: 0x0c0dfa25
+}
+function {
+  id: 0x4759fa3a
+  return_type_id: 0x04ca9246
+  parameter_id: 0x3e10b518
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3f54a013
+}
+function {
+  id: 0x475eeec2
+  return_type_id: 0x2131312a
+  parameter_id: 0x2cc0f57b
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1b44744f
+}
+function {
+  id: 0x477364db
+  return_type_id: 0x356691bc
+  parameter_id: 0x36d2de0e
+}
+function {
+  id: 0x47f7e87e
+  return_type_id: 0x18bd6530
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x48834be4
+  return_type_id: 0xc9082b19
+  parameter_id: 0x397d00ab
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x48a98cbe
+  return_type_id: 0xc9082b19
+  parameter_id: 0x391f15ea
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x48b47bab
+  return_type_id: 0x00c72527
+  parameter_id: 0x0fec25a9
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x48d47344
+  return_type_id: 0x04b193cc
+  parameter_id: 0x29459f81
+}
+function {
+  id: 0x48da335f
+  return_type_id: 0x1ce51dde
+  parameter_id: 0x347303b4
+}
+function {
+  id: 0x48f6484c
+  return_type_id: 0x04ca9246
+  parameter_id: 0x0258f96e
+  parameter_id: 0x347303b4
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3f54a013
+}
+function {
+  id: 0x49205c94
+  return_type_id: 0x39470e64
+  parameter_id: 0x22cee855
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x39470e64
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x4951a397
+  return_type_id: 0xc9082b19
+  parameter_id: 0x32a623d7
+}
+function {
+  id: 0x49aef4e2
+  return_type_id: 0xc9082b19
+  parameter_id: 0x315b7e01
+}
+function {
+  id: 0x49afd1e1
+  return_type_id: 0xc9082b19
+  parameter_id: 0x3d3b5dd7
+  parameter_id: 0xc9082b19
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x49bb66dc
+  return_type_id: 0xc9082b19
+  parameter_id: 0x3282112a
+  parameter_id: 0x3b461cc8
+  parameter_id: 0x3b461cc8
+}
+function {
+  id: 0x49ffe96b
+  return_type_id: 0x00c83ba6
+  parameter_id: 0x0c48c037
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x4a279a3e
+  return_type_id: 0x3d4280e0
+  parameter_id: 0x3fc475cd
+}
+function {
+  id: 0x4a3be804
+  return_type_id: 0xc9082b19
+  parameter_id: 0x397d00ab
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x4abfefa4
+  return_type_id: 0x0cbf60eb
+  parameter_id: 0x359862c8
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x4acfd9c5
+  return_type_id: 0x0cbf60eb
+  parameter_id: 0x359862c8
+  parameter_id: 0x2b20aa80
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x4ae59b5c
+  return_type_id: 0xc9082b19
+  parameter_id: 0x3d3b5dd7
+  parameter_id: 0x18bd6530
+  parameter_id: 0xc9082b19
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x4afe8e98
+  return_type_id: 0x00c83ba6
+  parameter_id: 0x0c48c037
+  parameter_id: 0xf435685e
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x4bbafb54
+  return_type_id: 0x00c72527
+  parameter_id: 0x04f7a60d
+  parameter_id: 0x379d63b0
+}
+function {
+  id: 0x4bcbea3e
+  return_type_id: 0x21069feb
+  parameter_id: 0x21069feb
+}
+function {
+  id: 0x4c603ab7
+  return_type_id: 0x7be80061
+  parameter_id: 0x1e820193
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x4cd21214
+  return_type_id: 0x3d435d11
+  parameter_id: 0x25b73daa
+  parameter_id: 0x0cc416fe
+  parameter_id: 0x18bd6530
+  parameter_id: 0xbd6515b8
+}
+function {
+  id: 0x4cde7d15
+  return_type_id: 0xc9082b19
+  parameter_id: 0x249959de
+}
+function {
+  id: 0x4d0cf62c
+  return_type_id: 0x18e64f74
+  parameter_id: 0x3668642a
+}
+function {
+  id: 0x4d878509
+  return_type_id: 0x21069feb
+  parameter_id: 0x3c6f7555
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x4df5d8bb
+  return_type_id: 0x290604c6
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x4e221f3c
+  return_type_id: 0x2560a232
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x4e440d75
+  return_type_id: 0x39470e64
+  parameter_id: 0x3e10b518
+  parameter_id: 0x0bb0c019
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x4e5b7ca3
+  return_type_id: 0xc9082b19
+  parameter_id: 0x2e8d5f05
+}
+function {
+  id: 0x4e848709
+  return_type_id: 0x18ea6ae3
+  parameter_id: 0x3e10b518
+  parameter_id: 0x27a7c613
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x4eab8455
+  return_type_id: 0x92233392
+  parameter_id: 0x6720d32f
+  parameter_id: 0x2e18f543
+}
+function {
+  id: 0x4eca3251
+  return_type_id: 0x18ea6ae3
+  parameter_id: 0x3e10b518
+  parameter_id: 0x36d130d1
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x4f30442f
+  return_type_id: 0x00daa23b
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x4f33ba92
+  return_type_id: 0x21003da7
+  parameter_id: 0x3b04bead
+}
+function {
+  id: 0x4f3d8d0a
+  return_type_id: 0x21003da7
+  parameter_id: 0x3b04bead
+  parameter_id: 0x038de60c
+}
+function {
+  id: 0x4f645cab
+  return_type_id: 0x00a43052
+  parameter_id: 0x3860f3c0
+}
+function {
+  id: 0x4f7131f0
+  return_type_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0ad8b278
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x4f80ed11
+  return_type_id: 0x00a43052
+  parameter_id: 0x3b04bead
+  parameter_id: 0x0b30ee00
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x4f8ed2d9
+  return_type_id: 0x18ea6ae3
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+  parameter_id: 0x1253769c
+}
+function {
+  id: 0x4fb5a2ed
+  return_type_id: 0xc9082b19
+  parameter_id: 0x2936263d
+}
+function {
+  id: 0x501bb554
+  return_type_id: 0x92233392
+  parameter_id: 0x1dce0fdd
+  parameter_id: 0x2e18f543
+  parameter_id: 0x2e18f543
+}
+function {
+  id: 0x5043dbcd
+  return_type_id: 0x18bd6530
+  parameter_id: 0x1b55a8f2
+}
+function {
+  id: 0x5048b42f
+  return_type_id: 0x18bd6530
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x3f55d498
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x5057492d
+  return_type_id: 0x391f15ea
+  parameter_id: 0x1d7ca769
+  parameter_id: 0x295c7202
+  parameter_id: 0x09aeeb78
+}
+function {
+  id: 0x506035ff
+  return_type_id: 0x18bd6530
+  parameter_id: 0x14abdd00
+  parameter_id: 0xf435685e
+  parameter_id: 0x329bbc92
+}
+function {
+  id: 0x506099b0
+  return_type_id: 0x18bd6530
+  parameter_id: 0x18bd6530
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x5061a97c
+  return_type_id: 0x18bd6530
+  parameter_id: 0x14abdd00
+  parameter_id: 0xf435685e
+  parameter_id: 0x329bbc92
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x5076298e
+  return_type_id: 0x18bd6530
+  parameter_id: 0x1df06cce
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x508adfd0
+  return_type_id: 0x92233392
+  parameter_id: 0x1d44326e
+}
+function {
+  id: 0x5093f296
+  return_type_id: 0x18bd6530
+  parameter_id: 0x18150d9f
+}
+function {
+  id: 0x50a850bc
+  return_type_id: 0x92233392
+  parameter_id: 0x1dce0fdd
+}
+function {
+  id: 0x50af222c
+  return_type_id: 0x18bd6530
+  parameter_id: 0x18e64f74
+}
+function {
+  id: 0x50b9e8bd
+  return_type_id: 0x18bd6530
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x50f3b181
+  return_type_id: 0x18ea6ae3
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x50fe761e
+  return_type_id: 0x391f15ea
+  parameter_id: 0x1d44326e
+}
+function {
+  id: 0x5102ac9f
+  return_type_id: 0x0ca27481
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x511866ab
+  return_type_id: 0x18bd6530
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x511dadc3
+  return_type_id: 0x92233392
+  parameter_id: 0x1dce0fdd
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x5120d3a0
+  return_type_id: 0x28f4ee78
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x513ab761
+  return_type_id: 0x92233392
+  parameter_id: 0x1b8590a8
+}
+function {
+  id: 0x514ca28b
+  return_type_id: 0x18bd6530
+  parameter_id: 0x1c5f1ba0
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x5179d95b
+  return_type_id: 0x00dd92af
+  parameter_id: 0x0258f96e
+  parameter_id: 0x4585663f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x5193f1b8
+  return_type_id: 0x14abdd00
+  parameter_id: 0x347303b4
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x51a0e42b
+  return_type_id: 0x391289e8
+  parameter_id: 0x0d6b4ee3
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x51cfb24c
+  return_type_id: 0x18bd6530
+  parameter_id: 0x1dce0fdd
+  parameter_id: 0x0cbf60eb
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x51dbbe7b
+  return_type_id: 0x92233392
+  parameter_id: 0x1801b4c1
+}
+function {
+  id: 0x51f396c6
+  return_type_id: 0x295c7202
+  parameter_id: 0x0ae4a2c7
+}
+function {
+  id: 0x523165ec
+  return_type_id: 0x18bd6530
+  parameter_id: 0x11e6864c
+  parameter_id: 0x379d63b0
+}
+function {
+  id: 0x52492c62
+  return_type_id: 0x310ec01d
+  parameter_id: 0x2936263d
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x5281433c
+  return_type_id: 0x92233392
+  parameter_id: 0x156a41de
+}
+function {
+  id: 0x52a86eb1
+  return_type_id: 0x18bd6530
+  parameter_id: 0x1340339a
+  parameter_id: 0x391f15ea
+  parameter_id: 0x2abfc5ab
+}
+function {
+  id: 0x52b408ba
+  return_type_id: 0x10be9c51
+  parameter_id: 0x39cdf888
+}
+function {
+  id: 0x52c37930
+  return_type_id: 0x92233392
+  parameter_id: 0x1462a9ec
+}
+function {
+  id: 0x53330ee0
+  return_type_id: 0x18a2fb63
+  parameter_id: 0x347303b4
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x22b36393
+  parameter_id: 0x30351611
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x533c8264
+  return_type_id: 0x4faa9b63
+  parameter_id: 0x2e8ad82b
+}
+function {
+  id: 0x534abe77
+  return_type_id: 0x295c7202
+}
+function {
+  id: 0x537f4e77
+  return_type_id: 0x18bd6530
+  parameter_id: 0x11e6864c
+  parameter_id: 0x6720d32f
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x537f83a2
+  return_type_id: 0x18bd6530
+  parameter_id: 0x11e6864c
+  parameter_id: 0x6720d32f
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x53aca83f
+  return_type_id: 0x18bd6530
+  parameter_id: 0x129a6a0a
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x53bd7367
+  return_type_id: 0x7be80061
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x53d7cb1d
+  return_type_id: 0x0930c6d9
+  parameter_id: 0xf435685e
+  parameter_id: 0x32d02e17
+}
+function {
+  id: 0x53e428b3
+  return_type_id: 0x00c83ba6
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x5415be16
+  return_type_id: 0x18bd6530
+  parameter_id: 0x054f691a
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x54171e33
+  return_type_id: 0x18bd6530
+  parameter_id: 0x0bbe1c3e
+  parameter_id: 0x18bd6530
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x543456cb
+  return_type_id: 0x18bd6530
+  parameter_id: 0x0bbe1c3e
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x543f0a03
+  return_type_id: 0x18bd6530
+  parameter_id: 0x0aa6efc8
+}
+function {
+  id: 0x5448323c
+  return_type_id: 0x18bd6530
+  parameter_id: 0x0aa6efc8
+  parameter_id: 0x1dce0fdd
+}
+function {
+  id: 0x5460037c
+  return_type_id: 0x18bd6530
+  parameter_id: 0x0bbe1c3e
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0x5468daf3
+  return_type_id: 0x18bd6530
+  parameter_id: 0x0258f96e
+  parameter_id: 0x9565759f
+  parameter_id: 0xf435685e
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x54704321
+  return_type_id: 0x18bd6530
+  parameter_id: 0x0258f96e
+  parameter_id: 0x9565759f
+  parameter_id: 0x9565759f
+}
+function {
+  id: 0x54a3f2d6
+  return_type_id: 0x295c7202
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x54b4e36c
+  return_type_id: 0x18bd6530
+  parameter_id: 0x0bbe1c3e
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x54c4bea6
+  return_type_id: 0x18bd6530
+  parameter_id: 0x09483d5e
+}
+function {
+  id: 0x54ca7481
+  return_type_id: 0x18bd6530
+  parameter_id: 0x097315c2
+}
+function {
+  id: 0x54d3d1f1
+  return_type_id: 0x18bd6530
+  parameter_id: 0x054f691a
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+  parameter_id: 0x30635134
+  parameter_id: 0x6720d32f
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x5515f11d
+  return_type_id: 0x8276e5b6
+  parameter_id: 0x054f691a
+  parameter_id: 0x32a623d7
+}
+function {
+  id: 0x551d3dad
+  return_type_id: 0x08faf209
+  parameter_id: 0x11e6864c
+}
+function {
+  id: 0x55423178
+  return_type_id: 0x18bd6530
+  parameter_id: 0x0b30ee00
+  parameter_id: 0x4585663f
+  parameter_id: 0x33756485
+  parameter_id: 0x9cf21ab5
+}
+function {
+  id: 0x5548a022
+  return_type_id: 0x18bd6530
+  parameter_id: 0x0f78474f
+}
+function {
+  id: 0x555557dd
+  return_type_id: 0x18bd6530
+  parameter_id: 0x0b30ee00
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x558481fc
+  return_type_id: 0x18bd6530
+  parameter_id: 0x0c48c037
+}
+function {
+  id: 0x55afd20f
+  return_type_id: 0x2131312a
+  parameter_id: 0x6720d32f
+  parameter_id: 0x1b44744f
+}
+function {
+  id: 0x55b50c0c
+  return_type_id: 0x18bd6530
+  parameter_id: 0x0db25a6d
+  parameter_id: 0x1c898f28
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x55bc9fde
+  return_type_id: 0x18bd6530
+  parameter_id: 0x0d9f5631
+  parameter_id: 0x1c3dbe5a
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x55bed144
+  return_type_id: 0x18bd6530
+  parameter_id: 0x0cc78943
+  parameter_id: 0x0660b958
+}
+function {
+  id: 0x55d07307
+  return_type_id: 0x18bd6530
+  parameter_id: 0x0258f96e
+  parameter_id: 0xf435685e
+  parameter_id: 0x00a43052
+}
+function {
+  id: 0x55d4825e
+  return_type_id: 0x18bd6530
+  parameter_id: 0x0ca27481
+  parameter_id: 0x1a8b04e5
+  parameter_id: 0x0277bf8a
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x55df36a2
+  return_type_id: 0x18bd6530
+  parameter_id: 0x0258f96e
+  parameter_id: 0xf435685e
+  parameter_id: 0x329bbc92
+  parameter_id: 0xf1a6dfed
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x55ec33bc
+  return_type_id: 0x18bd6530
+  parameter_id: 0x0258f96e
+  parameter_id: 0xf435685e
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x55ed5751
+  return_type_id: 0x18bd6530
+  parameter_id: 0x0258f96e
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x5625fe7a
+  return_type_id: 0x18bd6530
+  parameter_id: 0x0d7ce7cc
+  parameter_id: 0xf435685e
+  parameter_id: 0xf1a6dfed
+  parameter_id: 0x329bbc92
+}
+function {
+  id: 0x562e1c6f
+  return_type_id: 0x18bd6530
+  parameter_id: 0x0490bb4a
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x5641d9bd
+  return_type_id: 0x18bd6530
+  parameter_id: 0x052fac00
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x5659e8fb
+  return_type_id: 0x18bd6530
+  parameter_id: 0x054f691a
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x565cb1ff
+  return_type_id: 0x18bd6530
+  parameter_id: 0x0258f96e
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x565e1389
+  return_type_id: 0x18bd6530
+  parameter_id: 0x0258f96e
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x56706cd5
+  return_type_id: 0x1cce8023
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x5696b1f1
+  return_type_id: 0x18bd6530
+}
+function {
+  id: 0x56a01dac
+  return_type_id: 0x25520d15
+  parameter_id: 0x16239d0c
+}
+function {
+  id: 0x56af9ca8
+  return_type_id: 0x295c7202
+  parameter_id: 0x11e6864c
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x56b7c48c
+  return_type_id: 0x865acc96
+}
+function {
+  id: 0x56c1d7a5
+  return_type_id: 0x92233392
+  parameter_id: 0x0665e6b6
+  parameter_id: 0x26ad5dc1
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x56c2caab
+  return_type_id: 0x295c7202
+  parameter_id: 0x126add1c
+  parameter_id: 0x4585663f
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x56c70278
+  return_type_id: 0x18bd6530
+  parameter_id: 0x0258f96e
+  parameter_id: 0x31e374a8
+}
+function {
+  id: 0x56c834b5
+  return_type_id: 0x18bd6530
+  parameter_id: 0x0258f96e
+  parameter_id: 0x347303b4
+  parameter_id: 0x6720d32f
+  parameter_id: 0x2fc964c0
+}
+function {
+  id: 0x56d37e2f
+  return_type_id: 0x18bd6530
+  parameter_id: 0x054f691a
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x56d6c623
+  return_type_id: 0x92233392
+  parameter_id: 0x0665e6b6
+  parameter_id: 0x26ad5dc1
+  parameter_id: 0x3b66c89b
+}
+function {
+  id: 0x56da383c
+  return_type_id: 0x18bd6530
+  parameter_id: 0x0258f96e
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x56e237b7
+  return_type_id: 0x1c898f28
+  parameter_id: 0x210b9681
+}
+function {
+  id: 0x56f10608
+  return_type_id: 0x18bd6530
+  parameter_id: 0x0258f96e
+  parameter_id: 0x33d50b40
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x56fc975d
+  return_type_id: 0x92233392
+  parameter_id: 0x0665e6b6
+  parameter_id: 0x26ad5dc1
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x56fd367d
+  return_type_id: 0x18bd6530
+  parameter_id: 0x01ae1e33
+}
+function {
+  id: 0x57022f7c
+  return_type_id: 0x18bd6530
+  parameter_id: 0x0665e6b6
+  parameter_id: 0x0379c823
+}
+function {
+  id: 0x57300370
+  return_type_id: 0x295c7202
+  parameter_id: 0x11e6864c
+  parameter_id: 0x00c72527
+}
+function {
+  id: 0x573944de
+  return_type_id: 0x391f15ea
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x573c9ee0
+  return_type_id: 0x25520d15
+  parameter_id: 0x16239d0c
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x574ded10
+  return_type_id: 0x92233392
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x576454c1
+  return_type_id: 0x295c7202
+  parameter_id: 0x126add1c
+  parameter_id: 0x295c7202
+  parameter_id: 0x4585663f
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x576de3ba
+  return_type_id: 0x18bd6530
+  parameter_id: 0x0665e6b6
+  parameter_id: 0x18bd6530
+  parameter_id: 0x0379c823
+}
+function {
+  id: 0x578fa618
+  return_type_id: 0x295c7202
+  parameter_id: 0x11e6864c
+  parameter_id: 0x295c7202
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x57990287
+  return_type_id: 0x18bd6530
+  parameter_id: 0x043ecddb
+}
+function {
+  id: 0x57af7a85
+  return_type_id: 0x391f15ea
+}
+function {
+  id: 0x57c0b49d
+  return_type_id: 0x18bd6530
+  parameter_id: 0x04b193cc
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x57c99e27
+  return_type_id: 0x18bd6530
+  parameter_id: 0x054f691a
+  parameter_id: 0x054f691a
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x57d82096
+  return_type_id: 0x18bd6530
+  parameter_id: 0x04b193cc
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x57dbd34b
+  return_type_id: 0x92233392
+}
+function {
+  id: 0x57e3d57b
+  return_type_id: 0x18bd6530
+  parameter_id: 0x09451098
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x57ea629c
+  return_type_id: 0x18bd6530
+  parameter_id: 0x04b193cc
+  parameter_id: 0x18bd6530
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x5807e85a
+  return_type_id: 0x18a2fb63
+  parameter_id: 0x18a2fb63
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x0490bb4a
+  parameter_id: 0x30351611
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x580bd9c6
+  return_type_id: 0x18bd6530
+  parameter_id: 0x391f15ea
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+  parameter_id: 0x3256c3cc
+}
+function {
+  id: 0x580ef044
+  return_type_id: 0x18bd6530
+  parameter_id: 0x3a6106d5
+}
+function {
+  id: 0x581327fc
+  return_type_id: 0x18bd6530
+  parameter_id: 0x396f8e0f
+  parameter_id: 0x379d63b0
+}
+function {
+  id: 0x582c94c3
+  return_type_id: 0x188b9e81
+  parameter_id: 0x0258f96e
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x5846e63a
+  return_type_id: 0x391f15ea
+  parameter_id: 0x3fa672fd
+}
+function {
+  id: 0x584c42dc
+  return_type_id: 0x18bd6530
+  parameter_id: 0x3f37d9d5
+  parameter_id: 0x4585663f
+  parameter_id: 0x044301a9
+}
+function {
+  id: 0x584d521c
+  return_type_id: 0x18bd6530
+  parameter_id: 0x3f37d9d5
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x585c3474
+  return_type_id: 0x14b9453b
+  parameter_id: 0x056cf603
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x58c67df5
+  return_type_id: 0x18bd6530
+  parameter_id: 0x391289e8
+  parameter_id: 0x054f691a
+  parameter_id: 0x054f691a
+}
+function {
+  id: 0x58d4fbd3
+  return_type_id: 0x391f15ea
+  parameter_id: 0x3e146274
+  parameter_id: 0x3fa672fd
+}
+function {
+  id: 0x590737f8
+  return_type_id: 0x295c7202
+  parameter_id: 0x2936263d
+}
+function {
+  id: 0x591da2f7
+  return_type_id: 0x295c7202
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x592c9689
+  return_type_id: 0x18bd6530
+  parameter_id: 0x3ddfcba9
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x5934cfbb
+  return_type_id: 0x18bd6530
+  parameter_id: 0x3c0e9e79
+  parameter_id: 0x295c7202
+  parameter_id: 0x11c404ba
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+  parameter_id: 0x18bd6530
+  parameter_id: 0x38d23361
+}
+function {
+  id: 0x5963dafe
+  return_type_id: 0x18bd6530
+  parameter_id: 0x30cfc1c2
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x596454e5
+  return_type_id: 0x92233392
+  parameter_id: 0x391f15ea
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x5970fa9d
+  return_type_id: 0x18bd6530
+  parameter_id: 0x391f15ea
+  parameter_id: 0x6720d32f
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x598d73af
+  return_type_id: 0x18bd6530
+  parameter_id: 0x33756485
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x5995166f
+  return_type_id: 0x18bd6530
+  parameter_id: 0x3c0e9e79
+}
+function {
+  id: 0x599826a1
+  return_type_id: 0x310ec01d
+}
+function {
+  id: 0x59a30550
+  return_type_id: 0x18bd6530
+  parameter_id: 0x3f37d9d5
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x59b522ee
+  return_type_id: 0x92233392
+  parameter_id: 0x39bbc694
+}
+function {
+  id: 0x59c3d28f
+  return_type_id: 0x18bd6530
+  parameter_id: 0x3c0e9e79
+  parameter_id: 0x11cf69d2
+  parameter_id: 0x4585663f
+  parameter_id: 0x295c7202
+  parameter_id: 0xf435685e
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x59ebcc7a
+  return_type_id: 0x92233392
+  parameter_id: 0x39cdf888
+  parameter_id: 0x11c404ba
+  parameter_id: 0x11c404ba
+}
+function {
+  id: 0x59f18b0b
+  return_type_id: 0x1d5bae2a
+  parameter_id: 0xc93e017b
+}
+function {
+  id: 0x59fab064
+  return_type_id: 0x391f15ea
+  parameter_id: 0x391f15ea
+  parameter_id: 0x0483e6f8
+}
+function {
+  id: 0x5a0689b9
+  return_type_id: 0x391f15ea
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+  parameter_id: 0xd41e888f
+  parameter_id: 0xd41e888f
+}
+function {
+  id: 0x5a09df06
+  return_type_id: 0x92233392
+  parameter_id: 0x347303b4
+  parameter_id: 0x33b32811
+}
+function {
+  id: 0x5a0f5479
+  return_type_id: 0x18bd6530
+  parameter_id: 0x31675062
+  parameter_id: 0x33756485
+  parameter_id: 0x37900b11
+}
+function {
+  id: 0x5a16f250
+  return_type_id: 0x18bd6530
+  parameter_id: 0x347303b4
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x5a4be8d0
+  return_type_id: 0x18bd6530
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x5a84fa4e
+  return_type_id: 0x18bd6530
+  parameter_id: 0x31fa879c
+  parameter_id: 0x1bf16028
+  parameter_id: 0x0cbf60eb
+}
+function {
+  id: 0x5a87d596
+  return_type_id: 0x18bd6530
+  parameter_id: 0x31fa879c
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x5aa1d598
+  return_type_id: 0x18bd6530
+  parameter_id: 0x30dd91a5
+}
+function {
+  id: 0x5aa4ba2d
+  return_type_id: 0x0ca27481
+  parameter_id: 0x49b889e7
+}
+function {
+  id: 0x5add88f0
+  return_type_id: 0x92233392
+  parameter_id: 0x3d3b5dd7
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x5ae81016
+  return_type_id: 0x18bd6530
+  parameter_id: 0x31fa879c
+}
+function {
+  id: 0x5af5a18b
+  return_type_id: 0x18bd6530
+  parameter_id: 0x32a623d7
+  parameter_id: 0x32a623d7
+}
+function {
+  id: 0x5b01a12a
+  return_type_id: 0x18bd6530
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x5b3d7cd1
+  return_type_id: 0x18bd6530
+  parameter_id: 0x359862c8
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x5b3dc89d
+  return_type_id: 0x18bd6530
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x5b4eac6a
+  return_type_id: 0x18bd6530
+  parameter_id: 0x3760766d
+}
+function {
+  id: 0x5b5255fa
+  return_type_id: 0x865acc96
+  parameter_id: 0x379645d8
+}
+function {
+  id: 0x5b8d0ccb
+  return_type_id: 0x92233392
+  parameter_id: 0x315b7e01
+}
+function {
+  id: 0x5b8e3e03
+  return_type_id: 0x18bd6530
+  parameter_id: 0x30cf9722
+  parameter_id: 0x4585663f
+  parameter_id: 0xf1a6dfed
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x5baf3a31
+  return_type_id: 0x18bd6530
+  parameter_id: 0x34e62f02
+}
+function {
+  id: 0x5bb68829
+  return_type_id: 0x92233392
+  parameter_id: 0x315b7e01
+  parameter_id: 0x0ee13889
+}
+function {
+  id: 0x5bba2c04
+  return_type_id: 0x18bd6530
+  parameter_id: 0x3b04bead
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+  parameter_id: 0x1b2ca025
+  parameter_id: 0x1b2ca025
+  parameter_id: 0x344a8f68
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x5bba39c6
+  return_type_id: 0x18bd6530
+  parameter_id: 0x3b04bead
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+  parameter_id: 0x1c3dbe5a
+  parameter_id: 0x3dc59b1f
+  parameter_id: 0x3c57992a
+  parameter_id: 0x4585663f
+  parameter_id: 0x3c5cda3d
+  parameter_id: 0x33e3ad2f
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x5bba999e
+  return_type_id: 0x18bd6530
+  parameter_id: 0x3b04bead
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+  parameter_id: 0x318983a1
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x5bbb224c
+  return_type_id: 0x18bd6530
+  parameter_id: 0x3b04bead
+  parameter_id: 0xf435685e
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x5bbbda22
+  return_type_id: 0x18bd6530
+  parameter_id: 0x3b04bead
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x5bd76b9c
+  return_type_id: 0x18bd6530
+  parameter_id: 0x33756485
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x5bd8cd40
+  return_type_id: 0x391f15ea
+  parameter_id: 0x322c8c4b
+  parameter_id: 0x3e10b518
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x5bdd6b94
+  return_type_id: 0x18a2fb63
+  parameter_id: 0x13d55fea
+}
+function {
+  id: 0x5bdf57e0
+  return_type_id: 0x92233392
+  parameter_id: 0x39302196
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x5c2a8a81
+  return_type_id: 0x18bd6530
+  parameter_id: 0x2aa0b9bb
+  parameter_id: 0x064d6086
+  parameter_id: 0x33756485
+  parameter_id: 0x7f7172c7
+}
+function {
+  id: 0x5c4b7130
+  return_type_id: 0x295c7202
+  parameter_id: 0x3f0185ef
+  parameter_id: 0x3f0185ef
+  parameter_id: 0xf435685e
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x5c4f178f
+  return_type_id: 0x18bd6530
+  parameter_id: 0x2b603afb
+  parameter_id: 0x035d664d
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x5c7d047e
+  return_type_id: 0x310ec01d
+  parameter_id: 0x11e6864c
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x5c897d11
+  return_type_id: 0x295c7202
+  parameter_id: 0x397d00ab
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x5c990e71
+  return_type_id: 0x4bcb477a
+  parameter_id: 0x24d65b62
+}
+function {
+  id: 0x5c9ec74a
+  return_type_id: 0x18bd6530
+  parameter_id: 0x2821daec
+}
+function {
+  id: 0x5ca118ca
+  return_type_id: 0x295c7202
+  parameter_id: 0x3d3b5dd7
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x5cabb760
+  return_type_id: 0x18bd6530
+  parameter_id: 0x2cac4c27
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x5cf34a0d
+  return_type_id: 0x18bd6530
+  parameter_id: 0x2aa0b9bb
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x5cf56554
+  return_type_id: 0x18bd6530
+  parameter_id: 0x2aa0b9bb
+  parameter_id: 0x33756485
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x5cf6a3cf
+  return_type_id: 0x18bd6530
+  parameter_id: 0x2aa0b9bb
+  parameter_id: 0x33756485
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x5d05d02e
+  return_type_id: 0x2159351a
+  parameter_id: 0x2f5fce77
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x5d304295
+  return_type_id: 0x18a2fb63
+  parameter_id: 0x01241c02
+  parameter_id: 0x945e7ef6
+}
+function {
+  id: 0x5d665720
+  return_type_id: 0x92233392
+  parameter_id: 0x29c600bb
+  parameter_id: 0x33011141
+}
+function {
+  id: 0x5d70c74d
+  return_type_id: 0x92233392
+  parameter_id: 0x2b16c036
+  parameter_id: 0x1ba902d8
+}
+function {
+  id: 0x5d7b2001
+  return_type_id: 0x18bd6530
+  parameter_id: 0x2fb647c0
+}
+function {
+  id: 0x5d7d36d4
+  return_type_id: 0x14abdd00
+  parameter_id: 0x0258f96e
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x5d965ac4
+  return_type_id: 0x92233392
+  parameter_id: 0x2936263d
+}
+function {
+  id: 0x5daa055b
+  return_type_id: 0x04f7a60d
+  parameter_id: 0x36ad2dd6
+  parameter_id: 0xc9082b19
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x5db43ec6
+  return_type_id: 0x18bd6530
+  parameter_id: 0x2cac4c27
+  parameter_id: 0x0258f96e
+  parameter_id: 0x00c83ba6
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x5db81c44
+  return_type_id: 0x18bd6530
+  parameter_id: 0x2cac4c27
+  parameter_id: 0x0258f96e
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x5db8d191
+  return_type_id: 0x18bd6530
+  parameter_id: 0x2cac4c27
+  parameter_id: 0x0258f96e
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x5dd5188a
+  return_type_id: 0x0510f471
+  parameter_id: 0x1b8590a8
+}
+function {
+  id: 0x5ddf576c
+  return_type_id: 0x18bd6530
+  parameter_id: 0x2cac4c27
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x5de7952d
+  return_type_id: 0x18bd6530
+  parameter_id: 0x2e8ad82b
+  parameter_id: 0x379d63b0
+  parameter_id: 0x379d63b0
+}
+function {
+  id: 0x5e051163
+  return_type_id: 0x18bd6530
+  parameter_id: 0x2d66740a
+  parameter_id: 0xf1a6dfed
+  parameter_id: 0x329bbc92
+}
+function {
+  id: 0x5e29431a
+  return_type_id: 0x295c7202
+  parameter_id: 0x358ff5b7
+}
+function {
+  id: 0x5e4ba6ce
+  return_type_id: 0x18a2fb63
+  parameter_id: 0x0490bb4a
+  parameter_id: 0x10673339
+  parameter_id: 0x18a2fb63
+}
+function {
+  id: 0x5e864c76
+  return_type_id: 0x2560a232
+  parameter_id: 0x0490bb4a
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+  parameter_id: 0x285cedbe
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x5e92f774
+  return_type_id: 0x18bd6530
+  parameter_id: 0x29c600bb
+  parameter_id: 0x92233392
+  parameter_id: 0xf435685e
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x5ed273d9
+  return_type_id: 0x18bd6530
+  parameter_id: 0x2efd5036
+  parameter_id: 0xf1a6dfed
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x5ee8f086
+  return_type_id: 0x18bd6530
+  parameter_id: 0x22ce5396
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x5eef7e83
+  return_type_id: 0x18bd6530
+  parameter_id: 0x2efd5036
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x5ef56662
+  return_type_id: 0x18bd6530
+  parameter_id: 0x2efd5036
+  parameter_id: 0xf1a6dfed
+  parameter_id: 0x6720d32f
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x5f133b10
+  return_type_id: 0x18a2fb63
+  parameter_id: 0x0490bb4a
+  parameter_id: 0x4585663f
+  parameter_id: 0x22b36393
+  parameter_id: 0x6720d32f
+  parameter_id: 0x30351611
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x5f2659b9
+  return_type_id: 0x309d6e18
+  parameter_id: 0x8e749d69
+}
+function {
+  id: 0x5f272d07
+  return_type_id: 0x2560a232
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0x285cedbe
+}
+function {
+  id: 0x5f3cfa16
+  return_type_id: 0x2560a232
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0x4585663f
+  parameter_id: 0x285cedbe
+}
+function {
+  id: 0x5f3f0d07
+  return_type_id: 0x18bd6530
+  parameter_id: 0x291e8a5b
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x5f4c14dc
+  return_type_id: 0x2d66740a
+  parameter_id: 0x3e10b518
+  parameter_id: 0x0258f96e
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x5f535d88
+  return_type_id: 0x391f15ea
+  parameter_id: 0x23f09c34
+}
+function {
+  id: 0x5f5b0712
+  return_type_id: 0x18bd6530
+  parameter_id: 0x2309ad3e
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x5fc92844
+  return_type_id: 0x2560a232
+  parameter_id: 0x0258f96e
+  parameter_id: 0x0490bb4a
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+  parameter_id: 0x285cedbe
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x60262630
+  return_type_id: 0x2488f94c
+  parameter_id: 0x0258f96e
+  parameter_id: 0x0258f96e
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x604d2116
+  return_type_id: 0x054f691a
+  parameter_id: 0x234c60dd
+}
+function {
+  id: 0x611af1f3
+  return_type_id: 0x117e2995
+  parameter_id: 0x35d510c3
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x619a645f
+  return_type_id: 0x249959de
+  parameter_id: 0x347303b4
+}
+function {
+  id: 0x624b0f22
+  return_type_id: 0x0537fb37
+  parameter_id: 0x0ca27481
+  parameter_id: 0xe276adef
+  parameter_id: 0xc93e017b
+}
+function {
+  id: 0x62b8d7ec
+  return_type_id: 0x09427c40
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0x197dca09
+  parameter_id: 0x13c70029
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x62e6e159
+  return_type_id: 0x0537fb37
+  parameter_id: 0x0ca27481
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+  parameter_id: 0x06dcdc5a
+  parameter_id: 0x06dcdc5a
+  parameter_id: 0xc93e017b
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x633d6ee0
+  return_type_id: 0x054f691a
+  parameter_id: 0x2e8d5f05
+}
+function {
+  id: 0x6345a3c5
+  return_type_id: 0x2c8e1aaa
+  parameter_id: 0x21003da7
+  parameter_id: 0x31b5a66f
+}
+function {
+  id: 0x6408a046
+  return_type_id: 0x054f691a
+  parameter_id: 0x32a623d7
+  parameter_id: 0x0fc46487
+}
+function {
+  id: 0x640ce5ab
+  return_type_id: 0x34cf6c51
+  parameter_id: 0x257d12af
+  parameter_id: 0x0bb4e60f
+}
+function {
+  id: 0x641b717f
+  return_type_id: 0x054f691a
+  parameter_id: 0x32a623d7
+  parameter_id: 0x0f687cbf
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x643d13df
+  return_type_id: 0x054f691a
+  parameter_id: 0x32a623d7
+  parameter_id: 0x02a882fb
+}
+function {
+  id: 0x64970caf
+  return_type_id: 0x054f691a
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x6720d32f
+  parameter_id: 0x13580d6c
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x64c047e6
+  return_type_id: 0x054f691a
+  parameter_id: 0x3e6396e0
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x651dcdfb
+  return_type_id: 0x054f691a
+  parameter_id: 0x32a623d7
+  parameter_id: 0x4585663f
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x658bb664
+  return_type_id: 0x0130219f
+  parameter_id: 0x0130219f
+}
+function {
+  id: 0x65d68df5
+  return_type_id: 0x1977e57b
+  parameter_id: 0x0c2e195c
+  parameter_id: 0xd0b3a203
+  parameter_id: 0x4585663f
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x661a7689
+  return_type_id: 0x116785ed
+  parameter_id: 0x056cf603
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x664451a4
+  return_type_id: 0x054f691a
+  parameter_id: 0x3f0ff1b1
+  parameter_id: 0x4585663f
+  parameter_id: 0x38d23361
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x6650c8f2
+  return_type_id: 0x30ccee09
+  parameter_id: 0x3b04bead
+  parameter_id: 0x12e6ffae
+  parameter_id: 0x1c3dbe5a
+  parameter_id: 0x1c3dbe5a
+}
+function {
+  id: 0x6680517a
+  return_type_id: 0x054f691a
+  parameter_id: 0x3e6396e0
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x66e18f45
+  return_type_id: 0x2c8c423d
+  parameter_id: 0x32ec08f2
+}
+function {
+  id: 0x67ae13ae
+  return_type_id: 0x2c8e1aaa
+  parameter_id: 0x31b5a66f
+}
+function {
+  id: 0x67d77552
+  return_type_id: 0x116785ed
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x67ed0aa3
+  return_type_id: 0x38d23361
+  parameter_id: 0x1259e377
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x68447578
+  return_type_id: 0x18bd6530
+  parameter_id: 0xf435685e
+  parameter_id: 0xf1a6dfed
+  parameter_id: 0x6720d32f
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x6844b8ad
+  return_type_id: 0x18bd6530
+  parameter_id: 0xf435685e
+  parameter_id: 0xf1a6dfed
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x684b3e47
+  return_type_id: 0x18bd6530
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x685d7099
+  return_type_id: 0x18bd6530
+  parameter_id: 0xf435685e
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x686cbc61
+  return_type_id: 0x054f691a
+  parameter_id: 0x054f691a
+  parameter_id: 0x6720d32f
+  parameter_id: 0xf1a6dfed
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x687757f0
+  return_type_id: 0x18bd6530
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x688bda75
+  return_type_id: 0x054f691a
+  parameter_id: 0x0355dc72
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x68d26f6c
+  return_type_id: 0x0130219f
+  parameter_id: 0x345745bd
+}
+function {
+  id: 0x68dbf6ff
+  return_type_id: 0x054f691a
+  parameter_id: 0x054f691a
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x68eaecc0
+  return_type_id: 0x38b136d3
+  parameter_id: 0x0258f96e
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x69238486
+  return_type_id: 0x1d19a9d5
+  parameter_id: 0x49b889e7
+}
+function {
+  id: 0x6940ae3e
+  return_type_id: 0x054f691a
+  parameter_id: 0x054f691a
+  parameter_id: 0x2584a3b9
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x69cde367
+  return_type_id: 0x054f691a
+  parameter_id: 0x054f691a
+}
+function {
+  id: 0x69e09f9b
+  return_type_id: 0x09427c40
+  parameter_id: 0x2cc0f57b
+}
+function {
+  id: 0x6a0b7818
+  return_type_id: 0x054f691a
+  parameter_id: 0x054f691a
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x6a320335
+  return_type_id: 0x38d23361
+  parameter_id: 0x2668e644
+  parameter_id: 0x042af17e
+  parameter_id: 0x3ada60b4
+  parameter_id: 0x2c8e1aaa
+  parameter_id: 0xc9082b19
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x6a3237e4
+  return_type_id: 0x38d23361
+  parameter_id: 0x2668e644
+  parameter_id: 0x042af17e
+  parameter_id: 0x3ada60b4
+  parameter_id: 0x2c8e1aaa
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x6a3e5f1f
+  return_type_id: 0x310ec01d
+  parameter_id: 0xce99e6fa
+}
+function {
+  id: 0x6a442bfd
+  return_type_id: 0x82bc7069
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x6a8c09d7
+  return_type_id: 0x1d44326e
+  parameter_id: 0x1d44326e
+  parameter_id: 0x6720d32f
+  parameter_id: 0x13580d6c
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x6a8ce717
+  return_type_id: 0x1582ab06
+  parameter_id: 0x06835e9c
+}
+function {
+  id: 0x6a916773
+  return_type_id: 0x09483d5e
+  parameter_id: 0x3b773187
+}
+function {
+  id: 0x6a9df39e
+  return_type_id: 0x18bd6530
+  parameter_id: 0xf1a6dfed
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x6b24e9ea
+  return_type_id: 0x1d5934ce
+  parameter_id: 0x00c83ba6
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x6b29d69a
+  return_type_id: 0x1d5934ce
+  parameter_id: 0x00c83ba6
+  parameter_id: 0x0258f96e
+  parameter_id: 0x35761627
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x6b2c30b0
+  return_type_id: 0x1582ab06
+}
+function {
+  id: 0x6b5469c2
+  return_type_id: 0x1d44326e
+  parameter_id: 0x1d44326e
+  parameter_id: 0x106029c6
+}
+function {
+  id: 0x6b55cd91
+  return_type_id: 0x054f691a
+  parameter_id: 0x04f7a60d
+  parameter_id: 0xb1d8b45e
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x6b9bebe6
+  return_type_id: 0x18bd6530
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x6bb7aee3
+  return_type_id: 0x7b6559c5
+}
+function {
+  id: 0x6bc51750
+  return_type_id: 0x054f691a
+  parameter_id: 0x0dc9e98b
+  parameter_id: 0x054f691a
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x6c109ae9
+  return_type_id: 0x249959de
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x6c9e1249
+  return_type_id: 0x348f6886
+  parameter_id: 0x4585663f
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x6caf01af
+  return_type_id: 0x30dd91a5
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3694d3c2
+}
+function {
+  id: 0x6cb3f0eb
+  return_type_id: 0x014b8475
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x6cfb566e
+  return_type_id: 0x1d44326e
+  parameter_id: 0x0ca27481
+  parameter_id: 0xe276adef
+  parameter_id: 0x7584e7da
+  parameter_id: 0xe276adef
+  parameter_id: 0x7584e7da
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0ac23bc5
+  parameter_id: 0x054f691a
+}
+function {
+  id: 0x6d9955d1
+  return_type_id: 0x054f691a
+  parameter_id: 0x1dc3d428
+  parameter_id: 0x914dbfdc
+  parameter_id: 0xc9082b19
+  parameter_id: 0x391f15ea
+  parameter_id: 0x295c7202
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x6d9955d6
+  return_type_id: 0x054f691a
+  parameter_id: 0x1dc3d428
+  parameter_id: 0x914dbfdc
+  parameter_id: 0xc9082b19
+  parameter_id: 0x391f15ea
+  parameter_id: 0x295c7202
+  parameter_id: 0xc9082b19
+  parameter_id: 0x1d44326e
+}
+function {
+  id: 0x6d996ee0
+  return_type_id: 0x054f691a
+  parameter_id: 0x1dc3d428
+  parameter_id: 0x914dbfdc
+  parameter_id: 0xc9082b19
+  parameter_id: 0x391f15ea
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x6dc76989
+  return_type_id: 0x38b66a59
+  parameter_id: 0x044ba8c8
+  parameter_id: 0x044ba8c8
+  parameter_id: 0x6720d32f
+  parameter_id: 0x188b9e81
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x6de615bf
+  return_type_id: 0x0d436e43
+  parameter_id: 0x30da8694
+  parameter_id: 0x1710671e
+}
+function {
+  id: 0x6e128fdc
+  return_type_id: 0x1d4da256
+}
+function {
+  id: 0x6e179c9e
+  return_type_id: 0x15677165
+  parameter_id: 0x32a623d7
+}
+function {
+  id: 0x6ecc6402
+  return_type_id: 0x1d44326e
+  parameter_id: 0x0ca27481
+  parameter_id: 0x6720d32f
+  parameter_id: 0xf1a6dfed
+  parameter_id: 0x3bfbd7cf
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x6eddf621
+  return_type_id: 0x054f691a
+  parameter_id: 0x1d44326e
+  parameter_id: 0x4585663f
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x6eef99a2
+  return_type_id: 0x052fac00
+  parameter_id: 0x3868bf5d
+}
+function {
+  id: 0x6ef28827
+  return_type_id: 0x1d44326e
+  parameter_id: 0x0ca27481
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0b27dc43
+  parameter_id: 0x2e9080a1
+}
+function {
+  id: 0x6f0fa4b8
+  return_type_id: 0x054f691a
+  parameter_id: 0x1d44326e
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x6720d32f
+  parameter_id: 0x13580d6c
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x6f18ee87
+  return_type_id: 0x054f691a
+  parameter_id: 0x1d44326e
+  parameter_id: 0x33756485
+  parameter_id: 0x6720d32f
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x6f1e53de
+  return_type_id: 0x1d44326e
+  parameter_id: 0x0ca27481
+  parameter_id: 0x1f48062a
+  parameter_id: 0x3b461cc8
+  parameter_id: 0x7584e7da
+  parameter_id: 0x3b461cc8
+  parameter_id: 0x914dbfdc
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x6f2829be
+  return_type_id: 0x1d44326e
+  parameter_id: 0x0ca27481
+  parameter_id: 0x1f48062a
+  parameter_id: 0xe276adef
+  parameter_id: 0x7584e7da
+  parameter_id: 0xe276adef
+  parameter_id: 0x914dbfdc
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x6f37ee87
+  return_type_id: 0x054f691a
+  parameter_id: 0x1d44326e
+  parameter_id: 0x3e6239e1
+  parameter_id: 0x054f691a
+}
+function {
+  id: 0x6f42ce8a
+  return_type_id: 0x054f691a
+  parameter_id: 0x1f73dead
+}
+function {
+  id: 0x6f542f9d
+  return_type_id: 0x347303b4
+  parameter_id: 0x6720d32f
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x6f9cf068
+  return_type_id: 0x1d44326e
+  parameter_id: 0x0ca27481
+  parameter_id: 0x3b461cc8
+  parameter_id: 0x7584e7da
+  parameter_id: 0x3b461cc8
+  parameter_id: 0x7584e7da
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0ac23bc5
+  parameter_id: 0x054f691a
+}
+function {
+  id: 0x6fa775f5
+  return_type_id: 0x054f691a
+  parameter_id: 0x18bd6530
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x6fb420ce
+  return_type_id: 0x054f691a
+  parameter_id: 0x18019702
+  parameter_id: 0x4585663f
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x6fe4eb19
+  return_type_id: 0x2c8c423d
+  parameter_id: 0x16f99983
+}
+function {
+  id: 0x6ff47396
+  return_type_id: 0x054f691a
+  parameter_id: 0x1dc3d428
+  parameter_id: 0x054f691a
+  parameter_id: 0x384c5795
+  parameter_id: 0x6720d32f
+  parameter_id: 0x304cc3d6
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x7013e46e
+  return_type_id: 0x18bd6530
+  parameter_id: 0x9565759f
+  parameter_id: 0xf435685e
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x70203fbf
+  return_type_id: 0x1d19a9d5
+  parameter_id: 0x2c7bd73f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x4585663f
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x7028bf98
+  return_type_id: 0x1d19a9d5
+  parameter_id: 0x2c7bd73f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x706a01e7
+  return_type_id: 0x150d4db0
+  parameter_id: 0x117a8adb
+}
+function {
+  id: 0x7087761a
+  return_type_id: 0x151fca68
+  parameter_id: 0x0258f96e
+  parameter_id: 0x347303b4
+  parameter_id: 0x0b27dc43
+  parameter_id: 0x0ef7c244
+}
+function {
+  id: 0x708a45ca
+  return_type_id: 0x347303b4
+  parameter_id: 0x19e66c71
+}
+function {
+  id: 0x70cd0122
+  return_type_id: 0x1d19a9d5
+  parameter_id: 0x2e029f76
+}
+function {
+  id: 0x71086e18
+  return_type_id: 0x24e24923
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x713d77a9
+  return_type_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x713f1bad
+  return_type_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x7151826e
+  return_type_id: 0x1d19a9d5
+  parameter_id: 0x2e029f76
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x718cfe87
+  return_type_id: 0x2cba2cd4
+  parameter_id: 0x3eacd4c8
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x71a7be0e
+  return_type_id: 0x309d6e18
+  parameter_id: 0x347303b4
+}
+function {
+  id: 0x71ba82ec
+  return_type_id: 0x30cfc1c2
+  parameter_id: 0x6720d32f
+  parameter_id: 0x1d65a00d
+  parameter_id: 0x3c4fd6a2
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x71d88eaa
+  return_type_id: 0x09626b7f
+  parameter_id: 0x2fa7f388
+  parameter_id: 0x316cc8eb
+}
+function {
+  id: 0x71fd00eb
+  return_type_id: 0x150d4db0
+  parameter_id: 0x117a8adb
+  parameter_id: 0x6720d32f
+  parameter_id: 0x2e0903c3
+}
+function {
+  id: 0x71fff4bd
+  return_type_id: 0x347303b4
+  parameter_id: 0x1c30a9ad
+}
+function {
+  id: 0x721e7d15
+  return_type_id: 0x18bd6530
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x72450a37
+  return_type_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x7330f867
+  return_type_id: 0x309d6e18
+  parameter_id: 0x3e10b518
+  parameter_id: 0x0258f96e
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3a6574c9
+  parameter_id: 0x3bad809b
+}
+function {
+  id: 0x73531faf
+  return_type_id: 0x92233392
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x7370e0bf
+  return_type_id: 0x01950729
+  parameter_id: 0x32a623d7
+  parameter_id: 0x01950729
+}
+function {
+  id: 0x74154359
+  return_type_id: 0x150d4db0
+  parameter_id: 0x00878020
+}
+function {
+  id: 0x74512079
+  return_type_id: 0x96c0c5e1
+  parameter_id: 0x3054f2d7
+}
+function {
+  id: 0x74516256
+  return_type_id: 0x7b59fac9
+  parameter_id: 0x0bc3e3e1
+}
+function {
+  id: 0x7470cebd
+  return_type_id: 0x774358c9
+  parameter_id: 0x11e6864c
+}
+function {
+  id: 0x7483011b
+  return_type_id: 0x0d7ce7cc
+  parameter_id: 0x0d7ce7cc
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x75094080
+  return_type_id: 0x2cba2cd4
+  parameter_id: 0x2cba2cd4
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x751b5661
+  return_type_id: 0x1d19a9d5
+  parameter_id: 0x395e9ae2
+  parameter_id: 0x005589aa
+}
+function {
+  id: 0x751f8257
+  return_type_id: 0x0d7ce7cc
+  parameter_id: 0x0d7ce7cc
+}
+function {
+  id: 0x754e9079
+  return_type_id: 0x249959de
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x75b5d4f6
+  return_type_id: 0x34990483
+  parameter_id: 0x34990483
+}
+function {
+  id: 0x75ec6a7d
+  return_type_id: 0x774358c9
+  parameter_id: 0x11e6864c
+  parameter_id: 0x67293002
+}
+function {
+  id: 0x75f8c649
+  return_type_id: 0x0d7ce7cc
+  parameter_id: 0x0d7ce7cc
+  parameter_id: 0x3d8951f4
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x7665e08d
+  return_type_id: 0x347303b4
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x76907643
+  return_type_id: 0x056cf603
+  parameter_id: 0x191de370
+  parameter_id: 0x20054a7b
+}
+function {
+  id: 0x77ba21a4
+  return_type_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x7885d99e
+  return_type_id: 0x356691bc
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x78cb3e97
+  return_type_id: 0x347303b4
+  parameter_id: 0x347303b4
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x7904adfb
+  return_type_id: 0x679ad455
+  parameter_id: 0x1e820193
+}
+function {
+  id: 0x7963a3c3
+  return_type_id: 0x347303b4
+  parameter_id: 0x3e10b518
+  parameter_id: 0x051414e1
+}
+function {
+  id: 0x796e9f62
+  return_type_id: 0x347303b4
+  parameter_id: 0x322c8c4b
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x797c68f3
+  return_type_id: 0x19341e7e
+  parameter_id: 0x2efe8065
+}
+function {
+  id: 0x79e2d3b1
+  return_type_id: 0x18bd6530
+  parameter_id: 0xbdd18903
+}
+function {
+  id: 0x7a21af66
+  return_type_id: 0x054f691a
+  parameter_id: 0x4585663f
+  parameter_id: 0xf1a6dfed
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x7a34443c
+  return_type_id: 0x18bd6530
+  parameter_id: 0xbdd18903
+  parameter_id: 0xf435685e
+  parameter_id: 0x1908b154
+}
+function {
+  id: 0x7a39fbd1
+  return_type_id: 0x054f691a
+  parameter_id: 0x4585663f
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x7a3edb49
+  return_type_id: 0x18bd6530
+  parameter_id: 0xbdd18903
+  parameter_id: 0xf435685e
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x7a78fdc4
+  return_type_id: 0x347303b4
+  parameter_id: 0x322c8c4b
+}
+function {
+  id: 0x7a80bf10
+  return_type_id: 0x347303b4
+  parameter_id: 0x322c8c4b
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x7aa931ca
+  return_type_id: 0x347303b4
+  parameter_id: 0x322c8c4b
+  parameter_id: 0x347303b4
+}
+function {
+  id: 0x7ad03bcc
+  return_type_id: 0x09626b7f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x2fa7f388
+  parameter_id: 0x316cc8eb
+}
+function {
+  id: 0x7aef59ca
+  return_type_id: 0x19118777
+  parameter_id: 0x0258f96e
+  parameter_id: 0x0b27dc43
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x7b05d834
+  return_type_id: 0x347303b4
+  parameter_id: 0x347303b4
+  parameter_id: 0x3af34d6f
+  parameter_id: 0x042ceafc
+}
+function {
+  id: 0x7b175cef
+  return_type_id: 0x347303b4
+  parameter_id: 0x347303b4
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x7b18d8c2
+  return_type_id: 0x347303b4
+  parameter_id: 0x347303b4
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x7b5e948b
+  return_type_id: 0x1132933c
+  parameter_id: 0x0ca27481
+  parameter_id: 0x378860ff
+  parameter_id: 0x3861403d
+}
+function {
+  id: 0x7be897ce
+  return_type_id: 0xe90b32b7
+  parameter_id: 0x1d44326e
+}
+function {
+  id: 0x7bef1e3b
+  return_type_id: 0x347303b4
+  parameter_id: 0x347303b4
+}
+function {
+  id: 0x7bfdb6bc
+  return_type_id: 0x347303b4
+  parameter_id: 0x322c8c4b
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x7c92c1e0
+  return_type_id: 0x20e8fc5a
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x7cd5f8d0
+  return_type_id: 0x309d6e18
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0x0258f96e
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3a6574c9
+  parameter_id: 0x3bad809b
+}
+function {
+  id: 0x7ceab5d7
+  return_type_id: 0x097315c2
+  parameter_id: 0x097315c2
+}
+function {
+  id: 0x7df23fa2
+  return_type_id: 0x0d835382
+  parameter_id: 0x32a623d7
+}
+function {
+  id: 0x7e1a7d05
+  return_type_id: 0x24e24923
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x7e204efc
+  return_type_id: 0x097315c2
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x7e8c435e
+  return_type_id: 0x24e24923
+}
+function {
+  id: 0x7eb670a7
+  return_type_id: 0x097315c2
+}
+function {
+  id: 0x7eed3f17
+  return_type_id: 0x24e24923
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3cb1656a
+  parameter_id: 0x0b27dc43
+}
+function {
+  id: 0x7f0f4bf3
+  return_type_id: 0x1d19a9d5
+  parameter_id: 0x18456730
+  parameter_id: 0x94ed3026
+}
+function {
+  id: 0x7fc911b7
+  return_type_id: 0x0130219f
+  parameter_id: 0x6720d32f
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x80cf4911
+  return_type_id: 0x6720d32f
+  parameter_id: 0x732d9646
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x80d014d1
+  return_type_id: 0x3e10b518
+  parameter_id: 0x4a500dc8
+}
+function {
+  id: 0x80d1a163
+  return_type_id: 0x19e66c71
+  parameter_id: 0x0258f96e
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x80d705f2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x732d9646
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x80dd5700
+  return_type_id: 0x09a83f1c
+  parameter_id: 0x326663cd
+  parameter_id: 0x3df7e337
+  parameter_id: 0x1b44744f
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x80f6512d
+  return_type_id: 0x326663cd
+  parameter_id: 0x326663cd
+  parameter_id: 0x3e10b518
+  parameter_id: 0x914dbfdc
+}
+function {
+  id: 0x80fe241d
+  return_type_id: 0x06835e9c
+  parameter_id: 0xf1a6dfed
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x2fb2b385
+}
+function {
+  id: 0x81113ebe
+  return_type_id: 0x19e66c71
+  parameter_id: 0x0258f96e
+  parameter_id: 0x33756485
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x811e789b
+  return_type_id: 0xd41e888f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x368ec5cb
+}
+function {
+  id: 0x81481ce8
+  return_type_id: 0x09a83f1c
+  parameter_id: 0x347303b4
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x814b86be
+  return_type_id: 0x6720d32f
+  parameter_id: 0x732d9646
+}
+function {
+  id: 0x8151bb19
+  return_type_id: 0x09a83f1c
+  parameter_id: 0x347303b4
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x81599490
+  return_type_id: 0x120540d1
+  parameter_id: 0x32ec08f2
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x81a9f9cd
+  return_type_id: 0x09a83f1c
+  parameter_id: 0x347303b4
+}
+function {
+  id: 0x81af1888
+  return_type_id: 0x326663cd
+  parameter_id: 0x347303b4
+}
+function {
+  id: 0x81b5fb0b
+  return_type_id: 0x099bbff0
+  parameter_id: 0x26ee682a
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x81bed9bb
+  return_type_id: 0x2e029f76
+  parameter_id: 0x2e029f76
+  parameter_id: 0x3c63caea
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x81c6fcc7
+  return_type_id: 0x3e10b518
+  parameter_id: 0x4e0bad92
+}
+function {
+  id: 0x81de8179
+  return_type_id: 0x19e66c71
+  parameter_id: 0x0258f96e
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0x81e59ea6
+  return_type_id: 0x3e10b518
+  parameter_id: 0x4e862417
+}
+function {
+  id: 0x81ecc373
+  return_type_id: 0x19e66c71
+  parameter_id: 0x0258f96e
+  parameter_id: 0x064d6086
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x825faca7
+  return_type_id: 0x31fa879c
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x2936263d
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x3626871f
+  parameter_id: 0x0da985ba
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x825facba
+  return_type_id: 0x31fa879c
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x2936263d
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3626871f
+  parameter_id: 0x0da985ba
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x826967e0
+  return_type_id: 0x2e2c982d
+  parameter_id: 0x0c467c34
+}
+function {
+  id: 0x82e18ab5
+  return_type_id: 0x3e10b518
+  parameter_id: 0x4296745b
+}
+function {
+  id: 0x832143d7
+  return_type_id: 0x11e6864c
+  parameter_id: 0x11e6864c
+}
+function {
+  id: 0x83254e2c
+  return_type_id: 0x3e10b518
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x83311466
+  return_type_id: 0x09a83f1c
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x835e595c
+  return_type_id: 0x2e0f9112
+  parameter_id: 0x156a41de
+}
+function {
+  id: 0x837ae337
+  return_type_id: 0x6720d32f
+  parameter_id: 0x7be80061
+}
+function {
+  id: 0x83a3929f
+  return_type_id: 0x36194830
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x83b24f50
+  return_type_id: 0x120540d1
+  parameter_id: 0x3e10b518
+  parameter_id: 0x120540d1
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x83b828f4
+  return_type_id: 0x120540d1
+  parameter_id: 0x3e10b518
+  parameter_id: 0x1253769c
+  parameter_id: 0x120540d1
+  parameter_id: 0x0e8010b3
+}
+function {
+  id: 0x83b87db5
+  return_type_id: 0x120540d1
+  parameter_id: 0x3e10b518
+  parameter_id: 0x1253769c
+  parameter_id: 0x120540d1
+  parameter_id: 0x18bd6530
+  parameter_id: 0x36d130d1
+}
+function {
+  id: 0x83bdcb7d
+  return_type_id: 0x120540d1
+  parameter_id: 0x3e10b518
+  parameter_id: 0x120540d1
+}
+function {
+  id: 0x84257977
+  return_type_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x8426e149
+  return_type_id: 0x05ccb60b
+  parameter_id: 0x32a623d7
+}
+function {
+  id: 0x84271264
+  return_type_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x842c0d29
+  return_type_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x8432b67b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x8432b9df
+  return_type_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x6720d32f
+  parameter_id: 0x03e92bef
+}
+function {
+  id: 0x843582ad
+  return_type_id: 0x3a583251
+  parameter_id: 0x0cc78943
+  parameter_id: 0x0660b958
+}
+function {
+  id: 0x84380e6d
+  return_type_id: 0x3a6106d5
+  parameter_id: 0x0490bb4a
+}
+function {
+  id: 0x843cb143
+  return_type_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x1d19a9d5
+}
+function {
+  id: 0x8448d7e4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x84710953
+  return_type_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0xcd84e3cd
+  parameter_id: 0xf435685e
+  parameter_id: 0x32fddfe5
+}
+function {
+  id: 0x84809fac
+  return_type_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3399c453
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x848db24d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x31596a61
+}
+function {
+  id: 0x8493c696
+  return_type_id: 0x1dc3d428
+  parameter_id: 0x23167dcb
+  parameter_id: 0x23167dcb
+  parameter_id: 0x43e910ce
+}
+function {
+  id: 0x8499ea41
+  return_type_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x344f6972
+}
+function {
+  id: 0x84a3dd6c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3ac2a209
+}
+function {
+  id: 0x84a4d3f7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3b0104f9
+}
+function {
+  id: 0x84a9b4bc
+  return_type_id: 0x11cffa09
+  parameter_id: 0x11cffa09
+}
+function {
+  id: 0x84acfa74
+  return_type_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x390b641d
+}
+function {
+  id: 0x84af08b2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x38264f07
+  parameter_id: 0x1d19a9d5
+}
+function {
+  id: 0x84ba5d97
+  return_type_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3fa672fd
+  parameter_id: 0x3e10b518
+  parameter_id: 0xe5e56f65
+}
+function {
+  id: 0x84bb5eaa
+  return_type_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3fa672fd
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x84c7bf9c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x23da1e1b
+}
+function {
+  id: 0x84ce8396
+  return_type_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x21951c89
+}
+function {
+  id: 0x84ffea0d
+  return_type_id: 0x11cffa09
+  parameter_id: 0x11cffa09
+  parameter_id: 0x11cffa09
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x850e4cd3
+  return_type_id: 0x01f1fcec
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x85273440
+  return_type_id: 0x326663cd
+  parameter_id: 0x249959de
+  parameter_id: 0x2f919e03
+  parameter_id: 0x3107a2d8
+  parameter_id: 0x2f70aaf0
+}
+function {
+  id: 0x85430584
+  return_type_id: 0x19c40476
+  parameter_id: 0x3e10b518
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x8546debe
+  return_type_id: 0x326663cd
+  parameter_id: 0x249959de
+  parameter_id: 0x34d42b26
+}
+function {
+  id: 0x854e3dbc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0b27dc43
+  parameter_id: 0x34c92288
+}
+function {
+  id: 0x85551253
+  return_type_id: 0x3a6106d5
+  parameter_id: 0x0258f96e
+  parameter_id: 0x37c32df2
+}
+function {
+  id: 0x8556217d
+  return_type_id: 0x01ae1e33
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x85695d91
+  return_type_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x498e6bfd
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x858a1ee4
+  return_type_id: 0x3a6106d5
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x85bfa124
+  return_type_id: 0x11cffa09
+  parameter_id: 0x11cffa09
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x85d454a8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x85d54423
+  return_type_id: 0x120540d1
+  parameter_id: 0x26ee682a
+  parameter_id: 0x01de69b6
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x85da991d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x38323bdd
+  parameter_id: 0x3e10b518
+  parameter_id: 0xe5e56f65
+}
+function {
+  id: 0x85e53152
+  return_type_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+  parameter_id: 0x0f7414e8
+  parameter_id: 0x037dffe3
+}
+function {
+  id: 0x860e3c84
+  return_type_id: 0x6720d32f
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x86143a8c
+  return_type_id: 0x3a583251
+  parameter_id: 0x056cf603
+  parameter_id: 0x14b9453b
+}
+function {
+  id: 0x8625f433
+  return_type_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x49f541d1
+}
+function {
+  id: 0x86c30f0f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x3ea31487
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x86d5804d
+  return_type_id: 0x1dce0fdd
+  parameter_id: 0x246cd286
+  parameter_id: 0x6720d32f
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x74a50355
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x86dd7722
+  return_type_id: 0x3e10b518
+  parameter_id: 0x52658204
+}
+function {
+  id: 0x8715e05e
+  return_type_id: 0x09adb9f4
+  parameter_id: 0x21003da7
+  parameter_id: 0x21530c77
+}
+function {
+  id: 0x87739e97
+  return_type_id: 0x3a583251
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x8784601b
+  return_type_id: 0x09adb9f4
+  parameter_id: 0x21530c77
+}
+function {
+  id: 0x8798b290
+  return_type_id: 0x2e0f9112
+  parameter_id: 0x026c3dea
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x87b3d0e4
+  return_type_id: 0x2e2c982d
+  parameter_id: 0x1b2ca025
+}
+function {
+  id: 0x87d0b8ed
+  return_type_id: 0x326663cd
+  parameter_id: 0x249959de
+  parameter_id: 0x914dbfdc
+}
+function {
+  id: 0x8808e1d8
+  return_type_id: 0x120540d1
+  parameter_id: 0x120540d1
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x8817e7ae
+  return_type_id: 0x120540d1
+  parameter_id: 0x120540d1
+  parameter_id: 0x39d1288c
+}
+function {
+  id: 0x883b05d4
+  return_type_id: 0x3a534a58
+  parameter_id: 0x3a534a58
+  parameter_id: 0x3e10b518
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0x884063ea
+  return_type_id: 0x2e0f9112
+  parameter_id: 0x3912ab06
+}
+function {
+  id: 0x88bccf1d
+  return_type_id: 0x120540d1
+  parameter_id: 0x120540d1
+  parameter_id: 0x120540d1
+  parameter_id: 0x120540d1
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x88f0a30c
+  return_type_id: 0x120540d1
+  parameter_id: 0x120540d1
+}
+function {
+  id: 0x88f4e163
+  return_type_id: 0x09a83f1c
+  parameter_id: 0x12c0ba43
+  parameter_id: 0x3df7e337
+  parameter_id: 0x1b44744f
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x89207050
+  return_type_id: 0x01ace255
+  parameter_id: 0x3771eb5c
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x892fc913
+  return_type_id: 0x3a433e0e
+  parameter_id: 0x2e8d5f05
+  parameter_id: 0x33756485
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x89544504
+  return_type_id: 0x2e2c982d
+  parameter_id: 0x21003da7
+  parameter_id: 0x1b2ca025
+}
+function {
+  id: 0x898bee8c
+  return_type_id: 0x3a583251
+  parameter_id: 0x3a583251
+}
+function {
+  id: 0x89ab6589
+  return_type_id: 0x3a583251
+  parameter_id: 0x37e42403
+  parameter_id: 0xd25c011d
+  parameter_id: 0x18bd6530
+  parameter_id: 0x347303b4
+}
+function {
+  id: 0x89d1e10c
+  return_type_id: 0x3a47ea7a
+  parameter_id: 0x290604c6
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x8a03b82b
+  return_type_id: 0xd41e888f
+  parameter_id: 0x249959de
+  parameter_id: 0x914dbfdc
+  parameter_id: 0xc93e017b
+  parameter_id: 0x384f7d7c
+  parameter_id: 0x295c7202
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0b553223
+}
+function {
+  id: 0x8a23f6d7
+  return_type_id: 0x1e2533ab
+  parameter_id: 0xf1a6dfed
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x8a909712
+  return_type_id: 0x120540d1
+  parameter_id: 0x1b8590a8
+}
+function {
+  id: 0x8a993822
+  return_type_id: 0x3a6106d5
+  parameter_id: 0x3e146274
+}
+function {
+  id: 0x8ac9e348
+  return_type_id: 0x120540d1
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x120540d1
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x8ae0b646
+  return_type_id: 0x6720d32f
+  parameter_id: 0x5d8155a5
+}
+function {
+  id: 0x8b00bfc7
+  return_type_id: 0x2e0f9112
+  parameter_id: 0x3411dbb1
+}
+function {
+  id: 0x8b7d8884
+  return_type_id: 0x09a83f1c
+  parameter_id: 0x1ce51dde
+  parameter_id: 0x3df7e337
+  parameter_id: 0x1b44744f
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x8b8c2368
+  return_type_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x8c19f874
+  return_type_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x8c19f9c2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x0006db1d
+}
+function {
+  id: 0x8c23eb1f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0x33756485
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x8c2581a0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0x310ec01d
+}
+function {
+  id: 0x8c25e63e
+  return_type_id: 0x326663cd
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x8c2b9b63
+  return_type_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0x328870e8
+}
+function {
+  id: 0x8c2fe37e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0x33967786
+}
+function {
+  id: 0x8c390a37
+  return_type_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0x362c25fa
+}
+function {
+  id: 0x8c3c9e58
+  return_type_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0x37493e04
+}
+function {
+  id: 0x8c3ede77
+  return_type_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0x310ec01d
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x8c4206d5
+  return_type_id: 0x2df43e6f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x03f70c68
+}
+function {
+  id: 0x8c560b3b
+  return_type_id: 0xd41e888f
+  parameter_id: 0x3411dbb1
+}
+function {
+  id: 0x8c57cf58
+  return_type_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0x2c7bd73f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x8c834f34
+  return_type_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x8c888378
+  return_type_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0x1bf16028
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x8c93d036
+  return_type_id: 0x326663cd
+  parameter_id: 0x0258f96e
+  parameter_id: 0x249959de
+  parameter_id: 0x914dbfdc
+}
+function {
+  id: 0x8cafdd2d
+  return_type_id: 0x2e0f9112
+  parameter_id: 0x2b16c036
+  parameter_id: 0x1ba902d8
+}
+function {
+  id: 0x8cdb45af
+  return_type_id: 0x09a83f1c
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x8cdd9b00
+  return_type_id: 0x09a83f1c
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3df7e337
+  parameter_id: 0x1b44744f
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x8ce0e11d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0x03c8112b
+  parameter_id: 0x398b30f2
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0x8ce1baa0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x8ce75748
+  return_type_id: 0x09a83f1c
+  parameter_id: 0x0258f96e
+  parameter_id: 0x30a3a723
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3df7e337
+  parameter_id: 0x1b44744f
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x8d172d0a
+  return_type_id: 0xd41e888f
+  parameter_id: 0x33a9d455
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+  parameter_id: 0x00c72527
+}
+function {
+  id: 0x8d172e16
+  return_type_id: 0xd41e888f
+  parameter_id: 0x33a9d455
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x8d17d210
+  return_type_id: 0xd41e888f
+  parameter_id: 0x33a9d455
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+  parameter_id: 0x3f0185ef
+}
+function {
+  id: 0x8d1d790a
+  return_type_id: 0xd41e888f
+  parameter_id: 0x33a9d455
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x8d374bac
+  return_type_id: 0x2e029f76
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x2e029f76
+}
+function {
+  id: 0x8d392a65
+  return_type_id: 0xd41e888f
+  parameter_id: 0x33a9d455
+  parameter_id: 0x295c7202
+  parameter_id: 0x914dbfdc
+}
+function {
+  id: 0x8d4c964e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0x6d9cce5f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x8d53ba62
+  return_type_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0x6d9cce5f
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x8d63c458
+  return_type_id: 0x05c2a3ca
+  parameter_id: 0x0258f96e
+  parameter_id: 0xa2e4cbbb
+}
+function {
+  id: 0x8d7ecefa
+  return_type_id: 0x2e029f76
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x3c63caea
+}
+function {
+  id: 0x8db808c2
+  return_type_id: 0xd41e888f
+  parameter_id: 0x33a9d455
+}
+function {
+  id: 0x8dd5f3b8
+  return_type_id: 0x326a784b
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0x285cedbe
+}
+function {
+  id: 0x8de63b97
+  return_type_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x36d130d1
+}
+function {
+  id: 0x8de7c9fe
+  return_type_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x3ac2a209
+}
+function {
+  id: 0x8df7af38
+  return_type_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x8e8c9c93
+  return_type_id: 0x11e6864c
+  parameter_id: 0x2309ad3e
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x8ead5dbb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0x92b210b3
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x8f04b264
+  return_type_id: 0x01a688ae
+  parameter_id: 0x3e10b518
+  parameter_id: 0xe90b32b7
+  parameter_id: 0xb0ddb211
+  parameter_id: 0x30650ba6
+  parameter_id: 0xc14619eb
+  parameter_id: 0x33756485
+  parameter_id: 0x0a749c2b
+  parameter_id: 0x01a688ae
+}
+function {
+  id: 0x8f175818
+  return_type_id: 0x3e02e685
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x8f1a42be
+  return_type_id: 0x05c2a3ca
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x8f3f76d1
+  return_type_id: 0x05c2a3ca
+  parameter_id: 0x0258f96e
+  parameter_id: 0x347303b4
+  parameter_id: 0x1bb6a471
+}
+function {
+  id: 0x8f6b28f3
+  return_type_id: 0x09a83f1c
+  parameter_id: 0x0f78474f
+}
+function {
+  id: 0x8f8935e1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0xd92b1d75
+  parameter_id: 0x33756485
+  parameter_id: 0x3e10b518
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x8fb39e21
+  return_type_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0xd92b1d75
+  parameter_id: 0xd92b1d75
+  parameter_id: 0x33756485
+  parameter_id: 0x3e10b518
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9006b123
+  return_type_id: 0x6720d32f
+  parameter_id: 0x36194830
+}
+function {
+  id: 0x9009411d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x326663cd
+  parameter_id: 0x4585663f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x900a58fc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3638cdb9
+  parameter_id: 0x01222f7d
+}
+function {
+  id: 0x900b938d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3f0ff1b1
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x900cb4fc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x322c8c4b
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x900d5d3b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3ae3ff84
+  parameter_id: 0xc9082b19
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x900ed041
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3638cdb9
+}
+function {
+  id: 0x900f17ba
+  return_type_id: 0x6720d32f
+  parameter_id: 0x368daf92
+  parameter_id: 0x0b27dc43
+}
+function {
+  id: 0x900f25b4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x36194830
+  parameter_id: 0x026525e9
+}
+function {
+  id: 0x900fa5a8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0483e6f8
+  parameter_id: 0xf435685e
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x90150082
+  return_type_id: 0x6720d32f
+  parameter_id: 0x347303b4
+  parameter_id: 0x23c30672
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x90166130
+  return_type_id: 0x6720d32f
+  parameter_id: 0x351e2925
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x9017f3f4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x901a64a2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+  parameter_id: 0x01a688ae
+  parameter_id: 0x093a9d02
+  parameter_id: 0x2c4d7f49
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x901acd1a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x35abdbf6
+  parameter_id: 0x33756485
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x901afa25
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3668642a
+}
+function {
+  id: 0x90208300
+  return_type_id: 0x6720d32f
+  parameter_id: 0x374090df
+  parameter_id: 0x18bd6530
+  parameter_id: 0x4585663f
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x90245d7e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32caaf24
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x90247076
+  return_type_id: 0x6720d32f
+  parameter_id: 0x36194830
+  parameter_id: 0x09ca1cbc
+  parameter_id: 0x17a49e9b
+}
+function {
+  id: 0x9026a2e6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x35d510c3
+  parameter_id: 0x347303b4
+  parameter_id: 0x0b27dc43
+}
+function {
+  id: 0x902700eb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x347303b4
+  parameter_id: 0x2ef43f67
+  parameter_id: 0x03cf5188
+}
+function {
+  id: 0x90286f13
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3a6106d5
+  parameter_id: 0xcc33625b
+}
+function {
+  id: 0x902e10a9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x03ecaf94
+}
+function {
+  id: 0x902f9013
+  return_type_id: 0x6720d32f
+  parameter_id: 0x30cfc1c2
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x903246db
+  return_type_id: 0x6720d32f
+  parameter_id: 0x36194830
+  parameter_id: 0x01ae1e33
+  parameter_id: 0xc93e017b
+}
+function {
+  id: 0x903479ff
+  return_type_id: 0x6720d32f
+  parameter_id: 0x347303b4
+  parameter_id: 0x2b9d590c
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x90356b6c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3411dbb1
+  parameter_id: 0x2e0f9112
+  parameter_id: 0x2e0f9112
+  parameter_id: 0x92233392
+  parameter_id: 0x2e0f9112
+}
+function {
+  id: 0x9038edd5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x36337082
+  parameter_id: 0x0cbf60eb
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9039ea7d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x35480f68
+  parameter_id: 0x3ac2a209
+}
+function {
+  id: 0x903a6e2b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32f8fd7b
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x903cab87
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3411dbb1
+  parameter_id: 0x2e0f9112
+}
+function {
+  id: 0x903e8010
+  return_type_id: 0x6720d32f
+  parameter_id: 0x374090df
+  parameter_id: 0x18bd6530
+  parameter_id: 0x33756485
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x903e851b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x36f998d3
+}
+function {
+  id: 0x903e8974
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x4585663f
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x903ebd1d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x374090df
+  parameter_id: 0x18bd6530
+  parameter_id: 0x33756485
+  parameter_id: 0x1bf16028
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x903f7e42
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x90415178
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e1c2855
+  parameter_id: 0x92233392
+  parameter_id: 0x38d23361
+}
+function {
+  id: 0x9041c735
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3704906b
+}
+function {
+  id: 0x9041c842
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3176a085
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9048c0ea
+  return_type_id: 0x6720d32f
+  parameter_id: 0x369be551
+  parameter_id: 0x1bb6a471
+}
+function {
+  id: 0x9048eed1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x34544a3f
+  parameter_id: 0x3747dc62
+}
+function {
+  id: 0x904a60f7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x348f18ab
+  parameter_id: 0x391f15ea
+  parameter_id: 0x356d401a
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x904abfe3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x315b7e01
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x904bd3e9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x33756485
+  parameter_id: 0x4585663f
+  parameter_id: 0x01f1fcec
+}
+function {
+  id: 0x905377d7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x315b7e01
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9053b0f5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x315b7e01
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x31c8b544
+}
+function {
+  id: 0x90580076
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3176a085
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x90588e4c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x347303b4
+  parameter_id: 0x312b639e
+}
+function {
+  id: 0x905a52d9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x33756485
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x2705b338
+}
+function {
+  id: 0x905d75b0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x37765a7c
+}
+function {
+  id: 0x905ff87d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x351f2e4f
+  parameter_id: 0x2634304b
+}
+function {
+  id: 0x9064137a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x347303b4
+  parameter_id: 0x3e10b518
+  parameter_id: 0x0c957ac0
+  parameter_id: 0xd5cc9c9a
+}
+function {
+  id: 0x90646116
+  return_type_id: 0x6720d32f
+  parameter_id: 0x347303b4
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x9064f8c2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x315b7e01
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x1c3dbe5a
+  parameter_id: 0x0d9f5631
+}
+function {
+  id: 0x90657259
+  return_type_id: 0x6720d32f
+  parameter_id: 0x379645d8
+}
+function {
+  id: 0x90659b2d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3176a085
+  parameter_id: 0x6720d32f
+  parameter_id: 0x914dbfdc
+}
+function {
+  id: 0x9067de1b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3176a085
+  parameter_id: 0x6720d32f
+  parameter_id: 0x914dbfdc
+  parameter_id: 0x914dbfdc
+}
+function {
+  id: 0x9068b671
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3176a085
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9068c1cc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x31b5a66f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9068d876
+  return_type_id: 0x6720d32f
+  parameter_id: 0x347303b4
+  parameter_id: 0x3b4ce03a
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x906a62e2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x37d7ca8b
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x906b787e
+  return_type_id: 0x019e2530
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x906c53c0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x31c0ce8c
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x906d7ec1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x347303b4
+  parameter_id: 0x3ddc969e
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x906ddeff
+  return_type_id: 0x6720d32f
+  parameter_id: 0x37b4f743
+}
+function {
+  id: 0x906eca9b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x36337082
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x907109f8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x31b5a66f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9071cf7e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3176a085
+  parameter_id: 0x6720d32f
+  parameter_id: 0xc9082b19
+  parameter_id: 0x914dbfdc
+}
+function {
+  id: 0x9071eb2d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3176a085
+  parameter_id: 0x6720d32f
+  parameter_id: 0xc9082b19
+  parameter_id: 0x914dbfdc
+  parameter_id: 0x914dbfdc
+}
+function {
+  id: 0x90738a48
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3176a085
+  parameter_id: 0x6720d32f
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x9077fd27
+  return_type_id: 0x6720d32f
+  parameter_id: 0x347303b4
+  parameter_id: 0x39915f84
+  parameter_id: 0x366e6ff4
+}
+function {
+  id: 0x9078a69f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x355e866a
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+  parameter_id: 0x3104c07e
+  parameter_id: 0x1bb6a471
+}
+function {
+  id: 0x90795841
+  return_type_id: 0x6720d32f
+  parameter_id: 0x347303b4
+  parameter_id: 0x3af34d6f
+  parameter_id: 0x3aff5796
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x908495c3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3411dbb1
+}
+function {
+  id: 0x9085adec
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3760766d
+  parameter_id: 0x3754d634
+}
+function {
+  id: 0x908663be
+  return_type_id: 0x6720d32f
+  parameter_id: 0x347303b4
+  parameter_id: 0x06901f39
+}
+function {
+  id: 0x9087aa9c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x6720d32f
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x90887391
+  return_type_id: 0x6720d32f
+  parameter_id: 0x347303b4
+  parameter_id: 0x051414e1
+}
+function {
+  id: 0x908eb1a6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x322c8c4b
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0e88668c
+  parameter_id: 0x030a0036
+}
+function {
+  id: 0x908ecc0f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3438bc82
+}
+function {
+  id: 0x90903ad4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x347303b4
+  parameter_id: 0x03064599
+}
+function {
+  id: 0x9090664d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x9090fcd9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x6720d32f
+  parameter_id: 0x92233392
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x909103e9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x6720d32f
+  parameter_id: 0x914dbfdc
+  parameter_id: 0x295c7202
+  parameter_id: 0x7584e7da
+}
+function {
+  id: 0x9093971b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3053e2de
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x9095ed8c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x34543a8d
+}
+function {
+  id: 0x90977154
+  return_type_id: 0x6720d32f
+  parameter_id: 0x347303b4
+  parameter_id: 0x04a6a89c
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9097e46d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x347303b4
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x909912c8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x347303b4
+  parameter_id: 0x051414e1
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x909a3456
+  return_type_id: 0x3e10b518
+  parameter_id: 0x0483e6f8
+  parameter_id: 0xf435685e
+  parameter_id: 0xb3e7bac9
+  parameter_id: 0xb3e7bac9
+  parameter_id: 0xe8034002
+  parameter_id: 0xe8034002
+  parameter_id: 0xe8034002
+}
+function {
+  id: 0x909bddf8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x396fe4f8
+  parameter_id: 0xd031fa6c
+}
+function {
+  id: 0x909c23c2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x347303b4
+}
+function {
+  id: 0x909c96a5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x909f3f56
+  return_type_id: 0x6720d32f
+  parameter_id: 0x347303b4
+  parameter_id: 0x00c72527
+}
+function {
+  id: 0x90a203ea
+  return_type_id: 0x6720d32f
+  parameter_id: 0x36194830
+  parameter_id: 0x292cb268
+}
+function {
+  id: 0x90a5da72
+  return_type_id: 0x6720d32f
+  parameter_id: 0x36194830
+  parameter_id: 0x2ea8d96e
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x90a73fa7
+  return_type_id: 0x01e0b0cf
+}
+function {
+  id: 0x90ac20a2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x90ad44c2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x36f0529f
+  parameter_id: 0x246cd286
+}
+function {
+  id: 0x90adbc21
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x90aeb741
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x90afaaf2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3536f126
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x90b33834
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x6720d32f
+  parameter_id: 0x1aec4e7e
+  parameter_id: 0x1aec4e7e
+}
+function {
+  id: 0x90b4bb4c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x6720d32f
+  parameter_id: 0x054f691a
+}
+function {
+  id: 0x90b57579
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0277bf8a
+}
+function {
+  id: 0x90b5a23e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x6720d32f
+  parameter_id: 0x012aa36d
+}
+function {
+  id: 0x90b5d95f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x6720d32f
+  parameter_id: 0x00c72527
+}
+function {
+  id: 0x90b5e896
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x90b7ea24
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x6720d32f
+  parameter_id: 0x049a4979
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x90b809d3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x374090df
+  parameter_id: 0x391f15ea
+  parameter_id: 0x33756485
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x90b834de
+  return_type_id: 0x6720d32f
+  parameter_id: 0x374090df
+  parameter_id: 0x391f15ea
+  parameter_id: 0x33756485
+  parameter_id: 0x1bf16028
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x90b8e351
+  return_type_id: 0x6720d32f
+  parameter_id: 0x347303b4
+  parameter_id: 0x093024fc
+}
+function {
+  id: 0x90b968ef
+  return_type_id: 0x6720d32f
+  parameter_id: 0x34e62f02
+}
+function {
+  id: 0x90bfa7c3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x6720d32f
+  parameter_id: 0x293d5439
+}
+function {
+  id: 0x90c0c7f2
+  return_type_id: 0x3e10b518
+  parameter_id: 0x0a134144
+}
+function {
+  id: 0x90c2622e
+  return_type_id: 0xbb629d13
+  parameter_id: 0x2e0f9112
+}
+function {
+  id: 0x90c919c0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3542336e
+  parameter_id: 0x054f691a
+  parameter_id: 0x312e431a
+}
+function {
+  id: 0x90cd78b7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x396fe4f8
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x90d074d8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x33756485
+  parameter_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0x0b30ee00
+}
+function {
+  id: 0x90d9386e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x35d510c3
+  parameter_id: 0x0b27dc43
+}
+function {
+  id: 0x90d96c90
+  return_type_id: 0x6720d32f
+  parameter_id: 0x35663efe
+}
+function {
+  id: 0x90db2b2a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x7584e7da
+  parameter_id: 0x914dbfdc
+}
+function {
+  id: 0x90db86bb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x36194830
+  parameter_id: 0x374de623
+}
+function {
+  id: 0x90dc3d3e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x35737846
+}
+function {
+  id: 0x90ddcdd6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x36f998d3
+  parameter_id: 0x38d23361
+}
+function {
+  id: 0x90e2d95d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x310ec01d
+  parameter_id: 0x498e6bfd
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x90e31e42
+  return_type_id: 0x6720d32f
+  parameter_id: 0x358ff5b7
+}
+function {
+  id: 0x90e5f66b
+  return_type_id: 0x3e02e685
+  parameter_id: 0x18ea6ae3
+}
+function {
+  id: 0x90e5f9ee
+  return_type_id: 0x6720d32f
+  parameter_id: 0x36194830
+  parameter_id: 0x38d23361
+}
+function {
+  id: 0x90e86d28
+  return_type_id: 0x6720d32f
+  parameter_id: 0x347303b4
+  parameter_id: 0x1d13ba95
+}
+function {
+  id: 0x90ede0b0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x369be551
+  parameter_id: 0x33756485
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x90ee3632
+  return_type_id: 0x6720d32f
+  parameter_id: 0x36194830
+  parameter_id: 0x3e10b518
+  parameter_id: 0x4585663f
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x90ee84bb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x36194830
+  parameter_id: 0x3e10b518
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x90f3da7c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x347303b4
+  parameter_id: 0x1b55a8f2
+  parameter_id: 0x0b036186
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x90f57323
+  return_type_id: 0x6720d32f
+  parameter_id: 0x347303b4
+  parameter_id: 0x1bf16028
+  parameter_id: 0x1bf16028
+  parameter_id: 0x1bf16028
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x90f57fd0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x36f998d3
+  parameter_id: 0x33756485
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x90f5a71f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x35d510c3
+}
+function {
+  id: 0x90f86afe
+  return_type_id: 0x6720d32f
+  parameter_id: 0x363b9249
+  parameter_id: 0x3c6958c4
+  parameter_id: 0x1b4ba19a
+  parameter_id: 0x4585663f
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x90fb83a9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x397d00ab
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x90fe062f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x394b6e9f
+  parameter_id: 0xc9082b19
+  parameter_id: 0x20782fb2
+}
+function {
+  id: 0x90ff140b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x347303b4
+  parameter_id: 0x18cdf247
+}
+function {
+  id: 0x9100a08e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x347303b4
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9101618a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x31c8b544
+  parameter_id: 0x3f1a5886
+  parameter_id: 0x3f1a5886
+}
+function {
+  id: 0x91016cca
+  return_type_id: 0x6720d32f
+  parameter_id: 0x31b5a66f
+  parameter_id: 0x3b399f9e
+}
+function {
+  id: 0x91017265
+  return_type_id: 0x6720d32f
+  parameter_id: 0x36194830
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x2c6a18d1
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9101d3da
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x0a2e002a
+}
+function {
+  id: 0x9103916c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x347303b4
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0cc78943
+}
+function {
+  id: 0x9104fd7b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x322c8c4b
+  parameter_id: 0x03cf5188
+}
+function {
+  id: 0x9106691b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x0483e6f8
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9106c10c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x0beab59b
+}
+function {
+  id: 0x91095623
+  return_type_id: 0x6720d32f
+  parameter_id: 0x315b7e01
+  parameter_id: 0x31c8b544
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x73b81062
+}
+function {
+  id: 0x9109cd4f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3176a085
+  parameter_id: 0x3521907a
+}
+function {
+  id: 0x910aa3e9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x31066a10
+  parameter_id: 0x32f690bf
+}
+function {
+  id: 0x910c3195
+  return_type_id: 0x6720d32f
+  parameter_id: 0x396fe4f8
+  parameter_id: 0xb6b37605
+  parameter_id: 0x33c1248a
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x910d2abd
+  return_type_id: 0xf435685e
+  parameter_id: 0x1b084782
+  parameter_id: 0x33756485
+  parameter_id: 0xf435685e
+  parameter_id: 0x0ab1f084
+}
+function {
+  id: 0x910e1f0a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x31dafbc4
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x910e73b6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x347303b4
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3b4ce03a
+}
+function {
+  id: 0x910ea117
+  return_type_id: 0x6720d32f
+  parameter_id: 0x323908e0
+}
+function {
+  id: 0x910ed203
+  return_type_id: 0xf435685e
+  parameter_id: 0x1b084782
+  parameter_id: 0x33756485
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+  parameter_id: 0x0ab1f084
+}
+function {
+  id: 0x91117703
+  return_type_id: 0x6720d32f
+  parameter_id: 0x33756485
+  parameter_id: 0x1333434c
+}
+function {
+  id: 0x9112accf
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x911583bf
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32558241
+}
+function {
+  id: 0x9115bc9b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x0c0dfa25
+  parameter_id: 0x3382a638
+}
+function {
+  id: 0x9115faa6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x0ca27481
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9116124f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x315b7e01
+  parameter_id: 0x31c8b544
+  parameter_id: 0x1df083fd
+  parameter_id: 0x1c3dbe5a
+  parameter_id: 0x038de60c
+}
+function {
+  id: 0x911615ad
+  return_type_id: 0x6720d32f
+  parameter_id: 0x315b7e01
+  parameter_id: 0x31c8b544
+  parameter_id: 0x1df083fd
+  parameter_id: 0x1c3dbe5a
+  parameter_id: 0x1c3dbe5a
+  parameter_id: 0x038de60c
+}
+function {
+  id: 0x911879fc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32ee063f
+  parameter_id: 0x0b27dc43
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x91190ace
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3267a784
+}
+function {
+  id: 0x91197bdc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x326663cd
+}
+function {
+  id: 0x9119f980
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x0c24968f
+}
+function {
+  id: 0x911a88f6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x315b7e01
+  parameter_id: 0x3186d48b
+  parameter_id: 0x2a670b41
+  parameter_id: 0x0db25a6d
+}
+function {
+  id: 0x911c4ef8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3176a085
+  parameter_id: 0x36337082
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x911d66e3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x30ccee09
+  parameter_id: 0x2a670b41
+  parameter_id: 0x1c898f28
+}
+function {
+  id: 0x912037b8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x0277bf8a
+  parameter_id: 0x0277bf8a
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x9121ec42
+  return_type_id: 0x6720d32f
+  parameter_id: 0x322509a0
+  parameter_id: 0x0a134144
+}
+function {
+  id: 0x91239923
+  return_type_id: 0x6720d32f
+  parameter_id: 0x315b7e01
+  parameter_id: 0x3e10b518
+  parameter_id: 0x379d63b0
+}
+function {
+  id: 0x9125e5e5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32941b2b
+}
+function {
+  id: 0x91296bda
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+}
+function {
+  id: 0x9129debd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x347303b4
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x912a7219
+  return_type_id: 0x6720d32f
+  parameter_id: 0x31b5a66f
+  parameter_id: 0x31fe2b41
+}
+function {
+  id: 0x912aee3c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32caaf24
+  parameter_id: 0x064d6086
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0x912bd335
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3283ded6
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x912c9057
+  return_type_id: 0x6720d32f
+  parameter_id: 0x318f8bcb
+  parameter_id: 0x33e46293
+}
+function {
+  id: 0x912e7e7b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x315b7e01
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x91306d97
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32c23ae3
+}
+function {
+  id: 0x913248e6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32caaf24
+}
+function {
+  id: 0x913618b5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x913690cd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x07fec5e7
+}
+function {
+  id: 0x91376a97
+  return_type_id: 0x6720d32f
+  parameter_id: 0x31b5a66f
+  parameter_id: 0x3413ca0c
+  parameter_id: 0x2a670b41
+  parameter_id: 0x0db25a6d
+}
+function {
+  id: 0x9137bec9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x315b7e01
+  parameter_id: 0x3ada60b4
+  parameter_id: 0x2a670b41
+  parameter_id: 0x1c898f28
+}
+function {
+  id: 0x9138a441
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x07fec5e7
+  parameter_id: 0x38d23361
+}
+function {
+  id: 0x913a79c8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x31fa879c
+  parameter_id: 0x310ec01d
+}
+function {
+  id: 0x913b3774
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32ef516c
+}
+function {
+  id: 0x913b542f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x05042b1f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x913be113
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32ec08f2
+}
+function {
+  id: 0x913c567e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x054f691a
+}
+function {
+  id: 0x913d31b0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x318f8bcb
+  parameter_id: 0x33e46293
+  parameter_id: 0x4585663f
+  parameter_id: 0x302f894e
+}
+function {
+  id: 0x913da434
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3176a085
+  parameter_id: 0x383bcea3
+}
+function {
+  id: 0x91409b70
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3336a72b
+  parameter_id: 0x0374654c
+}
+function {
+  id: 0x91427ad6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x31e58fe0
+  parameter_id: 0x2efe8065
+}
+function {
+  id: 0x914334fa
+  return_type_id: 0x6720d32f
+  parameter_id: 0x31b5a66f
+  parameter_id: 0x2a670b41
+  parameter_id: 0x1c898f28
+}
+function {
+  id: 0x9143a2cf
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x13a69eb7
+  parameter_id: 0x914dbfdc
+}
+function {
+  id: 0x9143bdbc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x13a69eb7
+  parameter_id: 0x914dbfdc
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x9143ff1f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3176a085
+  parameter_id: 0x27ad0443
+}
+function {
+  id: 0x9146be60
+  return_type_id: 0x6720d32f
+  parameter_id: 0x31b5a66f
+  parameter_id: 0x2afee447
+  parameter_id: 0x038de60c
+  parameter_id: 0x0b0f2b41
+}
+function {
+  id: 0x91471071
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32941b2b
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x914a78cc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3176a085
+  parameter_id: 0x295c7202
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x914b9e4e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x914cb221
+  return_type_id: 0x6720d32f
+  parameter_id: 0x309d6e18
+  parameter_id: 0x3ac2a209
+}
+function {
+  id: 0x914d4ae5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3336a72b
+}
+function {
+  id: 0x914dbe16
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x19357319
+}
+function {
+  id: 0x914de38d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3176a085
+  parameter_id: 0x24265283
+  parameter_id: 0x00c72527
+}
+function {
+  id: 0x9150cafb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x37030053
+  parameter_id: 0x4585663f
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x91523c59
+  return_type_id: 0x6720d32f
+  parameter_id: 0x315b7e01
+  parameter_id: 0x21003da7
+}
+function {
+  id: 0x9155593a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x31b5a66f
+  parameter_id: 0x2c8e1aaa
+  parameter_id: 0x2a670b41
+  parameter_id: 0x1c898f28
+}
+function {
+  id: 0x915627ae
+  return_type_id: 0x3e10b518
+  parameter_id: 0x0c48c037
+}
+function {
+  id: 0x91565a49
+  return_type_id: 0x6720d32f
+  parameter_id: 0x31b5a66f
+  parameter_id: 0x2ef43f67
+}
+function {
+  id: 0x9157e6c5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x1fa347d9
+}
+function {
+  id: 0x9159073c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x35d510c3
+  parameter_id: 0x6720d32f
+  parameter_id: 0xc9082b19
+  parameter_id: 0x914dbfdc
+  parameter_id: 0x914dbfdc
+}
+function {
+  id: 0x9159236f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x35d510c3
+  parameter_id: 0x6720d32f
+  parameter_id: 0xc9082b19
+  parameter_id: 0x914dbfdc
+}
+function {
+  id: 0x9159d829
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3176a085
+  parameter_id: 0x2124c9f1
+}
+function {
+  id: 0x915b403a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x336e8c54
+}
+function {
+  id: 0x915b6659
+  return_type_id: 0x6720d32f
+  parameter_id: 0x35d510c3
+  parameter_id: 0x6720d32f
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x915c0f0d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x1d5935e7
+}
+function {
+  id: 0x915dba0e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x91604aa1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3382a638
+}
+function {
+  id: 0x916314a3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x33a9d455
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x6720d32f
+  parameter_id: 0x914dbfdc
+}
+function {
+  id: 0x91663d2f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x315b7e01
+  parameter_id: 0x2ec35650
+  parameter_id: 0x2ec35650
+  parameter_id: 0x2ec35650
+  parameter_id: 0x1c3dbe5a
+  parameter_id: 0x038de60c
+}
+function {
+  id: 0x9166923b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3399c453
+}
+function {
+  id: 0x91698a42
+  return_type_id: 0x6720d32f
+  parameter_id: 0x31b5a66f
+  parameter_id: 0x21003da7
+}
+function {
+  id: 0x916a6d3b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x309d6e18
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x916abf69
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3f222c68
+  parameter_id: 0xc93e017b
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x916bd4e5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x10afcfdf
+}
+function {
+  id: 0x916fbfe8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3f222c68
+  parameter_id: 0xc93e017b
+  parameter_id: 0x0cbf60eb
+}
+function {
+  id: 0x9170ec67
+  return_type_id: 0x6720d32f
+  parameter_id: 0x35d510c3
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x91726dda
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3176a085
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x9172a951
+  return_type_id: 0x6720d32f
+  parameter_id: 0x35d510c3
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x914dbfdc
+}
+function {
+  id: 0x9175015c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x33f8b54b
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x6720d32f
+  parameter_id: 0x022383b2
+}
+function {
+  id: 0x91761011
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3176a085
+  parameter_id: 0x2b5d1190
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x91768e36
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3399c453
+  parameter_id: 0x0407035c
+}
+function {
+  id: 0x9176fd0b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x315b7e01
+  parameter_id: 0x2afee447
+  parameter_id: 0x2afee447
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x31c8b544
+}
+function {
+  id: 0x9177762b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32558241
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x91778957
+  return_type_id: 0x6720d32f
+  parameter_id: 0x30dd91a5
+  parameter_id: 0x3003845d
+}
+function {
+  id: 0x91781941
+  return_type_id: 0x6720d32f
+  parameter_id: 0x374090df
+  parameter_id: 0x4585663f
+  parameter_id: 0xf435685e
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x917882e1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x315b7e01
+  parameter_id: 0x2a670b41
+  parameter_id: 0x1c898f28
+}
+function {
+  id: 0x917bff5a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3267a784
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x917dffe9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3176a085
+  parameter_id: 0x282d39ce
+}
+function {
+  id: 0x917e788d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3176a085
+  parameter_id: 0x2b5d1190
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0x917ece7d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x33f8b54b
+}
+function {
+  id: 0x91803b93
+  return_type_id: 0x6720d32f
+  parameter_id: 0x300362f0
+}
+function {
+  id: 0x9182b323
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x2af63e7f
+}
+function {
+  id: 0x9183d422
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x2ad2338c
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x9185daf6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3399c453
+  parameter_id: 0x38d23361
+}
+function {
+  id: 0x91885ce3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32caaf24
+  parameter_id: 0x2272a319
+  parameter_id: 0xc9082b19
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9189dbcd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x31c0ce8c
+  parameter_id: 0x1830dd64
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9189df3d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x282d39ce
+}
+function {
+  id: 0x918cb258
+  return_type_id: 0x6720d32f
+  parameter_id: 0x33756485
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x918d4b5c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3f37d9d5
+  parameter_id: 0xf017819f
+}
+function {
+  id: 0x91906f9c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x91935bd4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0xe5e56f65
+}
+function {
+  id: 0x9194557d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x2f4fa9c1
+}
+function {
+  id: 0x91945c4f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x2f4de54f
+}
+function {
+  id: 0x91972281
+  return_type_id: 0x6720d32f
+  parameter_id: 0x33756485
+  parameter_id: 0x32a623d7
+}
+function {
+  id: 0x91983762
+  return_type_id: 0x6720d32f
+  parameter_id: 0x30635134
+}
+function {
+  id: 0x9198bda0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3399c453
+  parameter_id: 0x3de3f5a1
+  parameter_id: 0x268136e5
+}
+function {
+  id: 0x919a7322
+  return_type_id: 0x6720d32f
+  parameter_id: 0x31b5a66f
+  parameter_id: 0x1c3dbe5a
+  parameter_id: 0x1c3dbe5a
+}
+function {
+  id: 0x919a74b7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3176a085
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x919ade96
+  return_type_id: 0x6720d32f
+  parameter_id: 0x315b7e01
+  parameter_id: 0x12e6ffae
+  parameter_id: 0x1c3dbe5a
+  parameter_id: 0x1c3dbe5a
+  parameter_id: 0x1c3dbe5a
+  parameter_id: 0x5171d297
+  parameter_id: 0x5171d297
+}
+function {
+  id: 0x919adfc7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x315b7e01
+  parameter_id: 0x12e6ffae
+  parameter_id: 0x1c3dbe5a
+  parameter_id: 0x1c3dbe5a
+  parameter_id: 0x1c3dbe5a
+}
+function {
+  id: 0x919e3b50
+  return_type_id: 0x6720d32f
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x3bf581e3
+  parameter_id: 0x295c7202
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x919ec1ed
+  return_type_id: 0x6720d32f
+  parameter_id: 0x33f8b54b
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0ef35c55
+}
+function {
+  id: 0x919f7f11
+  return_type_id: 0x6720d32f
+  parameter_id: 0x33f8b54b
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0859a0da
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x91a20657
+  return_type_id: 0x6720d32f
+  parameter_id: 0x36f998d3
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x91a3a43e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x322c8c4b
+  parameter_id: 0x2a1900ce
+}
+function {
+  id: 0x91a53d53
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3c07fb40
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x91a610ef
+  return_type_id: 0x6720d32f
+  parameter_id: 0x33b77109
+  parameter_id: 0x3283ded6
+  parameter_id: 0x0483e6f8
+}
+function {
+  id: 0x91a68f29
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x23f93cc0
+}
+function {
+  id: 0x91a73da4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x326663cd
+  parameter_id: 0x2f919e03
+}
+function {
+  id: 0x91a7b8a9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x309d6e18
+}
+function {
+  id: 0x91a842e5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x31fa879c
+  parameter_id: 0x11cffa09
+  parameter_id: 0x4585663f
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x91a87b65
+  return_type_id: 0x6720d32f
+  parameter_id: 0x31fa879c
+  parameter_id: 0x11cffa09
+  parameter_id: 0x4585663f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x91a8b43b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x33b77109
+  parameter_id: 0x3283ded6
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x91a92948
+  return_type_id: 0x6720d32f
+  parameter_id: 0x31c8b544
+  parameter_id: 0x12e6ffae
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x2a48f3d0
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x91aa9fd5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x207717c7
+  parameter_id: 0x08e97c95
+  parameter_id: 0x0483e6f8
+}
+function {
+  id: 0x91ab10d3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x30afcff2
+}
+function {
+  id: 0x91adf8fd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x2124c9f1
+}
+function {
+  id: 0x91b0d67e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3072a882
+  parameter_id: 0x0b27dc43
+}
+function {
+  id: 0x91b2f262
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3760766d
+  parameter_id: 0x7a8335ad
+}
+function {
+  id: 0x91b34c5c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x36194830
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x91b3994e
+  return_type_id: 0xf435685e
+  parameter_id: 0x1a8d1bcb
+  parameter_id: 0x0483e6f8
+  parameter_id: 0xf435685e
+  parameter_id: 0x0379c823
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x91b3fe62
+  return_type_id: 0x6720d32f
+  parameter_id: 0x33f8b54b
+  parameter_id: 0x334c07d5
+}
+function {
+  id: 0x91b5e15a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x26a97673
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x91b6642a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3399c453
+  parameter_id: 0x343d847e
+}
+function {
+  id: 0x91b78ec8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x30ddb79e
+}
+function {
+  id: 0x91b7dfcb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x27ad0443
+}
+function {
+  id: 0x91b887fb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3411dbb1
+  parameter_id: 0x4c957f4c
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0x91b9c359
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x24265283
+  parameter_id: 0x00c72527
+}
+function {
+  id: 0x91bc30ee
+  return_type_id: 0x6720d32f
+  parameter_id: 0x33756485
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x91be62b0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x30635134
+  parameter_id: 0x054f691a
+  parameter_id: 0xc9082b19
+  parameter_id: 0x4585663f
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x91bf7954
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x2584a3b9
+}
+function {
+  id: 0x91bf9f6b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3382a638
+  parameter_id: 0x35612b46
+  parameter_id: 0x29459f81
+}
+function {
+  id: 0x91bfa9d8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x31c8b544
+  parameter_id: 0x12e6ffae
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x91c118ea
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3399c453
+  parameter_id: 0x295c7202
+  parameter_id: 0x0beab59b
+  parameter_id: 0x00c72527
+  parameter_id: 0x0aa1f0ee
+}
+function {
+  id: 0x91c11b9a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x3b97c648
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x91c123ab
+  return_type_id: 0x6720d32f
+  parameter_id: 0x322c8c4b
+  parameter_id: 0x3e10b518
+  parameter_id: 0xc9082b19
+  parameter_id: 0x38d23361
+}
+function {
+  id: 0x91c17880
+  return_type_id: 0x6720d32f
+  parameter_id: 0x322c8c4b
+  parameter_id: 0x3e10b518
+  parameter_id: 0xc9082b19
+  parameter_id: 0x2e18f543
+}
+function {
+  id: 0x91c2a80b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x397d1060
+  parameter_id: 0x38d23361
+  parameter_id: 0x00c72527
+}
+function {
+  id: 0x91c2e0c4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e75499e
+  parameter_id: 0xf435685e
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x91c35328
+  return_type_id: 0x6720d32f
+  parameter_id: 0x310ec01d
+}
+function {
+  id: 0x91c43545
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x3f0ff1b1
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x91c47df8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3760766d
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x91c51554
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf435685e
+  parameter_id: 0x4585663f
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x91c515b1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x33a9d455
+  parameter_id: 0x2be0e2d8
+}
+function {
+  id: 0x91c537f1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf435685e
+  parameter_id: 0x4585663f
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x91c563a4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf435685e
+  parameter_id: 0x4585663f
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0x91c57966
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf435685e
+  parameter_id: 0x4585663f
+  parameter_id: 0x00fde7ff
+}
+function {
+  id: 0x91c5798d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf435685e
+  parameter_id: 0x4585663f
+  parameter_id: 0x00c72527
+}
+function {
+  id: 0x91c5850e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf435685e
+  parameter_id: 0x4585663f
+  parameter_id: 0x3fe7e06b
+}
+function {
+  id: 0x91c5acdf
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf435685e
+  parameter_id: 0x4585663f
+  parameter_id: 0x3593bec8
+}
+function {
+  id: 0x91c5c19c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf435685e
+  parameter_id: 0x4585663f
+  parameter_id: 0x2ec35650
+}
+function {
+  id: 0x91c62df0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3d435d11
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x91c734c3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x3b97c648
+}
+function {
+  id: 0x91c7b807
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x3bc93aed
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x91c85a84
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x384c5795
+}
+function {
+  id: 0x91ca11c2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x38d23361
+  parameter_id: 0x00c72527
+  parameter_id: 0x00c72527
+}
+function {
+  id: 0x91ca2317
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x38d23361
+}
+function {
+  id: 0x91ca2380
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x38d23361
+  parameter_id: 0x00c72527
+  parameter_id: 0x00c72527
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x91ca4ada
+  return_type_id: 0x6720d32f
+  parameter_id: 0x312aa7d5
+}
+function {
+  id: 0x91cab466
+  return_type_id: 0x6720d32f
+  parameter_id: 0x31295d27
+}
+function {
+  id: 0x91cb6689
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3747dc62
+  parameter_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x379d63b0
+  parameter_id: 0x0379c823
+}
+function {
+  id: 0x91cbd408
+  return_type_id: 0x6720d32f
+  parameter_id: 0x312cdc9e
+}
+function {
+  id: 0x91cc9f9b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x397d1060
+}
+function {
+  id: 0x91cfc9b1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x38feef7f
+  parameter_id: 0x151a9482
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x91d06833
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf435685e
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x91d0f233
+  return_type_id: 0x6720d32f
+  parameter_id: 0x33f8b54b
+  parameter_id: 0x2b8f13b3
+}
+function {
+  id: 0x91d1290e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x91d5541c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x3f0ff1b1
+}
+function {
+  id: 0x91d5bf71
+  return_type_id: 0x6720d32f
+  parameter_id: 0x31fa879c
+  parameter_id: 0x0ee3c725
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x91d60f1d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x39ab3cd0
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x91d63caf
+  return_type_id: 0x6720d32f
+  parameter_id: 0x315b7e01
+}
+function {
+  id: 0x91d7d502
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x3fafb631
+}
+function {
+  id: 0x91d8367b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32caaf24
+  parameter_id: 0x3a9fa744
+}
+function {
+  id: 0x91d8fbe8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32343a4a
+  parameter_id: 0x3545954a
+}
+function {
+  id: 0x91db22a4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x318f8bcb
+  parameter_id: 0x087ad34b
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x91dd4b0e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3176a085
+}
+function {
+  id: 0x91e06d89
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3267a784
+  parameter_id: 0x3e59d1e6
+}
+function {
+  id: 0x91e1257a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x31fe2b41
+  parameter_id: 0x07932141
+}
+function {
+  id: 0x91e20463
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x32a623d7
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x91e2124a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x3104c07e
+  parameter_id: 0x3f0185ef
+  parameter_id: 0x295c7202
+  parameter_id: 0x38d23361
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x91e21dcb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x3104c07e
+  parameter_id: 0x3f0185ef
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x91e301dd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x318f8bcb
+}
+function {
+  id: 0x91e36693
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x32a623d7
+  parameter_id: 0x0277bf8a
+  parameter_id: 0x0277bf8a
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x91e3f355
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x32a623d7
+}
+function {
+  id: 0x91e59abf
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x308ee26c
+  parameter_id: 0x3b567d85
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x91e5bf0e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x32a623d7
+  parameter_id: 0x18bd6530
+  parameter_id: 0x18bd6530
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x91e5f6bf
+  return_type_id: 0x6720d32f
+  parameter_id: 0x322509a0
+  parameter_id: 0x3b15fe1d
+}
+function {
+  id: 0x91e70ccb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x3399c453
+}
+function {
+  id: 0x91e7d0ce
+  return_type_id: 0x6720d32f
+  parameter_id: 0x336e8c54
+  parameter_id: 0x29563010
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x91e7fef3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x318f8bcb
+  parameter_id: 0x026c3dea
+  parameter_id: 0x353f6734
+}
+function {
+  id: 0x91e83077
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32941b2b
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x91e86e2c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x36337082
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x91ea4add
+  return_type_id: 0x6720d32f
+  parameter_id: 0x322c8c4b
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x91ea80a1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x322c8c4b
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+  parameter_id: 0x329f1a5f
+}
+function {
+  id: 0x91eb6447
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3518a6ab
+  parameter_id: 0x4585663f
+  parameter_id: 0xeeed68e6
+}
+function {
+  id: 0x91ebac18
+  return_type_id: 0x6720d32f
+  parameter_id: 0x31ad3cde
+}
+function {
+  id: 0x91ed8ab4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x31b5a66f
+}
+function {
+  id: 0x91ee6ab2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x31c05a21
+}
+function {
+  id: 0x91ef0fd5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x326663cd
+  parameter_id: 0x3d9d0240
+}
+function {
+  id: 0x91f05ef8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x322c8c4b
+  parameter_id: 0x3e10b518
+  parameter_id: 0x00c72527
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x91f0a288
+  return_type_id: 0x6720d32f
+  parameter_id: 0x37d7ca8b
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3a40fc42
+  parameter_id: 0x4585663f
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x91f0b03c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x35e708c2
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0x91f0ee05
+  return_type_id: 0x6720d32f
+  parameter_id: 0x359862c8
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x91f10ef1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x322c8c4b
+  parameter_id: 0x3e10b518
+  parameter_id: 0x051414e1
+  parameter_id: 0xf435685e
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x91f1ffe8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32558241
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0x91f2a8c5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x36f0c7ee
+}
+function {
+  id: 0x91f2c7ec
+  return_type_id: 0x6720d32f
+  parameter_id: 0x322c8c4b
+  parameter_id: 0x3e10b518
+  parameter_id: 0x051414e1
+}
+function {
+  id: 0x91f382e9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x322c8c4b
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x91f45efa
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x3ea31487
+  parameter_id: 0x914dbfdc
+  parameter_id: 0xfa876213
+}
+function {
+  id: 0x91f5fad8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x322c8c4b
+  parameter_id: 0x3e10b518
+  parameter_id: 0x19e0c64c
+}
+function {
+  id: 0x91f615c2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x36337082
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x91f65dde
+  return_type_id: 0x6720d32f
+  parameter_id: 0x31dafbc4
+}
+function {
+  id: 0x91f792ce
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x3e6396e0
+  parameter_id: 0x914dbfdc
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x91f804d4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x322c8c4b
+  parameter_id: 0x3e10b518
+  parameter_id: 0x2e18f543
+}
+function {
+  id: 0x91f8d8a0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x35e708c2
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x91f8e2fb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x31b5a66f
+  parameter_id: 0x038de60c
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x91f980d7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x31e58fe0
+}
+function {
+  id: 0x91fbb3ce
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32c156ea
+  parameter_id: 0x32c156ea
+}
+function {
+  id: 0x91fbd1f6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x34d3469d
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x91fbdfe4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x322c8c4b
+  parameter_id: 0x3e10b518
+  parameter_id: 0x2ec35650
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x91fbe90c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x322c8c4b
+  parameter_id: 0x3e10b518
+  parameter_id: 0x2e18f543
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x91fc06c4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x322c8c4b
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x91fd3f6c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x35152dab
+}
+function {
+  id: 0x91fd83bc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x322c8c4b
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0cc78943
+}
+function {
+  id: 0x91fe42c8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x31fa879c
+}
+function {
+  id: 0x91fe5bbd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x322c8c4b
+  parameter_id: 0x3e10b518
+  parameter_id: 0x38d23361
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x91fe8fed
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x3584c045
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x92002ef9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e03375b
+}
+function {
+  id: 0x920168ce
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0xc9082b19
+  parameter_id: 0x308ee26c
+}
+function {
+  id: 0x920433df
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x064d6086
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x92046299
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3dcee85d
+  parameter_id: 0x3dcee85d
+}
+function {
+  id: 0x92049fc1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3dcee85d
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x9204ce69
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x92053373
+  return_type_id: 0x6720d32f
+  parameter_id: 0x396fe4f8
+  parameter_id: 0x7194a543
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x92075c0f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3fab28c8
+  parameter_id: 0x18bd6530
+  parameter_id: 0x38d23361
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x92085a78
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3ea2e6c1
+  parameter_id: 0x0490bb4a
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x920d4b76
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x920d63ce
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e360385
+}
+function {
+  id: 0x92121eb9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e02e685
+  parameter_id: 0x078fc7bc
+  parameter_id: 0x31eca449
+}
+function {
+  id: 0x92145871
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3c0e9e79
+  parameter_id: 0x295c7202
+  parameter_id: 0xc9082b19
+  parameter_id: 0x0483e6f8
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x92153e12
+  return_type_id: 0xf435685e
+  parameter_id: 0x14abdd00
+}
+function {
+  id: 0x9215c28e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3c0e9e79
+  parameter_id: 0x295c7202
+  parameter_id: 0xc9082b19
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9216029b
+  return_type_id: 0x3e10b518
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x92166366
+  return_type_id: 0x3e10b518
+  parameter_id: 0x00878020
+  parameter_id: 0x18bd6530
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x92180697
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e6396e0
+}
+function {
+  id: 0x92186d57
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e6239e1
+}
+function {
+  id: 0x9218eb49
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3c0e9e79
+  parameter_id: 0x295c7202
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+  parameter_id: 0x0efc9002
+}
+function {
+  id: 0x9220b9bd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e816a4b
+}
+function {
+  id: 0x92222c71
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3c8cb790
+  parameter_id: 0x2078aea9
+}
+function {
+  id: 0x92228628
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3f02424f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x922471e5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3c9a9fb2
+  parameter_id: 0x21069feb
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9227b73b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e146274
+  parameter_id: 0x08932257
+}
+function {
+  id: 0x92285a9f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3ea2e6c1
+}
+function {
+  id: 0x922a0d69
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x0bb0c019
+}
+function {
+  id: 0x922a836c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3ac2a209
+  parameter_id: 0x4585663f
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x922c1de8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3f222c68
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x0a134144
+}
+function {
+  id: 0x922d81eb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x322509a0
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x922dbdf3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3f222c68
+  parameter_id: 0x18bd6530
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x4585663f
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x922e978f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3eb9d280
+}
+function {
+  id: 0x92320486
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3dcbc303
+  parameter_id: 0x335d253d
+  parameter_id: 0x358ff5b7
+}
+function {
+  id: 0x9232e21d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3ee88c45
+  parameter_id: 0x0258f96e
+  parameter_id: 0x06433852
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x92346a47
+  return_type_id: 0x11c404ba
+  parameter_id: 0x31433284
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x92349012
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3806390a
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x923c918a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x396fe4f8
+  parameter_id: 0x7a8335ad
+  parameter_id: 0x361d366b
+}
+function {
+  id: 0x923e6d3f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x31b96ec5
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x923e8caa
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3dcee85d
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x923f097c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x92405f04
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e6239e1
+  parameter_id: 0x1740e61d
+  parameter_id: 0x17b08fbe
+  parameter_id: 0x33756485
+  parameter_id: 0x469ea43a
+  parameter_id: 0x6720d32f
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x924108e7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x1522d20b
+  parameter_id: 0x4585663f
+  parameter_id: 0x0b27dc43
+}
+function {
+  id: 0x92431f43
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3f0ff1b1
+}
+function {
+  id: 0x92432049
+  return_type_id: 0x6720d32f
+  parameter_id: 0x397d00ab
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9243a962
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3fac1d22
+  parameter_id: 0x0a134144
+}
+function {
+  id: 0x9243f1d0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x9247995d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x396fe4f8
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9247e04a
+  return_type_id: 0x3e10b518
+  parameter_id: 0x000fdfa4
+}
+function {
+  id: 0x92486835
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3f222c68
+}
+function {
+  id: 0x924aaebf
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3c9ce28f
+  parameter_id: 0x3f0185ef
+  parameter_id: 0x4585663f
+  parameter_id: 0x00c72527
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x924abcc2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3c9ce28f
+  parameter_id: 0x3f0185ef
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x924c8f53
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3ea2e6c1
+  parameter_id: 0x19357319
+}
+function {
+  id: 0x924d155a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3f37d9d5
+}
+function {
+  id: 0x924da688
+  return_type_id: 0x6720d32f
+  parameter_id: 0x396fe4f8
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x8167e73b
+  parameter_id: 0xc607e025
+}
+function {
+  id: 0x925622e7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3f0ff1b1
+  parameter_id: 0x054f691a
+}
+function {
+  id: 0x9257838d
+  return_type_id: 0xf435685e
+  parameter_id: 0x11cffa09
+  parameter_id: 0x4585663f
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+  parameter_id: 0xdb566935
+}
+function {
+  id: 0x9257b558
+  return_type_id: 0xf435685e
+  parameter_id: 0x11cffa09
+  parameter_id: 0x4585663f
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9257d91c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x925d3e48
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3ea2e6c1
+  parameter_id: 0x1d5935e7
+}
+function {
+  id: 0x925d6128
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3760766d
+  parameter_id: 0x8167e73b
+}
+function {
+  id: 0x925f5277
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3ddfcba9
+  parameter_id: 0x2b9b3aed
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x925fddc4
+  return_type_id: 0xf435685e
+  parameter_id: 0x11cffa09
+  parameter_id: 0x4585663f
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x925feaa4
+  return_type_id: 0xf435685e
+  parameter_id: 0x11cffa09
+  parameter_id: 0x4585663f
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+  parameter_id: 0xdb566935
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x925feb11
+  return_type_id: 0xf435685e
+  parameter_id: 0x11cffa09
+  parameter_id: 0x4585663f
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+  parameter_id: 0xdb566935
+}
+function {
+  id: 0x92600c7c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3c0e9e79
+  parameter_id: 0x38d23361
+}
+function {
+  id: 0x92625532
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3c07fb40
+  parameter_id: 0x38d23361
+}
+function {
+  id: 0x926460ed
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3f0ff1b1
+  parameter_id: 0x054f691a
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x9265c435
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3f949c69
+}
+function {
+  id: 0x9265cf22
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x184052fc
+}
+function {
+  id: 0x9266fead
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3176a085
+  parameter_id: 0xeeed68e6
+}
+function {
+  id: 0x92697f90
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3fa672fd
+}
+function {
+  id: 0x9269f2bc
+  return_type_id: 0x3e10b518
+  parameter_id: 0x00b7947f
+}
+function {
+  id: 0x926be467
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3fac1d22
+}
+function {
+  id: 0x926dcbb0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3c0e9e79
+  parameter_id: 0x391f15ea
+  parameter_id: 0x2a468f3d
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x926ee76e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x396fe4f8
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x926eec8b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e6396e0
+  parameter_id: 0x1bf16028
+  parameter_id: 0x6720d32f
+  parameter_id: 0x38dfb9f9
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x926fc724
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e6396e0
+  parameter_id: 0x1df06cce
+}
+function {
+  id: 0x9271fe5c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3fc475cd
+}
+function {
+  id: 0x92737c80
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3ffd24b9
+  parameter_id: 0x0335a07f
+}
+function {
+  id: 0x92755a6c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x39a4e83f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x92759893
+  return_type_id: 0x6720d32f
+  parameter_id: 0x39c0701e
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0b30ee00
+}
+function {
+  id: 0x9275b8b9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x396fe4f8
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9275cdbe
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3bb11c92
+  parameter_id: 0x4585663f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3e001c39
+}
+function {
+  id: 0x927602ff
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3fdb8740
+}
+function {
+  id: 0x927a4e4f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3feab580
+}
+function {
+  id: 0x927aedd4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3c41c19b
+  parameter_id: 0x3a9fa744
+}
+function {
+  id: 0x927d452a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x1e62d0f5
+}
+function {
+  id: 0x927dc411
+  return_type_id: 0x3e10b518
+  parameter_id: 0x03064599
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x92801eb4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e96314f
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x92811dff
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3c07fb40
+}
+function {
+  id: 0x928344b1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3c0e9e79
+}
+function {
+  id: 0x92855f9f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3c9a9fb2
+  parameter_id: 0x0b27dc43
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x9286b490
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3c21809c
+  parameter_id: 0x038de60c
+}
+function {
+  id: 0x9286ca40
+  return_type_id: 0x2658f937
+  parameter_id: 0x32a623d7
+}
+function {
+  id: 0x9286d894
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3c18eeed
+}
+function {
+  id: 0x9286f110
+  return_type_id: 0x3e10b518
+  parameter_id: 0x030b9acf
+}
+function {
+  id: 0x92878d53
+  return_type_id: 0x6720d32f
+  parameter_id: 0x35abdbf6
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x928794d5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3f37d9d5
+  parameter_id: 0x32a063f3
+}
+function {
+  id: 0x928d6faf
+  return_type_id: 0x6720d32f
+  parameter_id: 0x33756485
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x928dc8e5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e1c2855
+  parameter_id: 0x2e18f543
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x928f1946
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3c3fe9a7
+}
+function {
+  id: 0x9291a5ba
+  return_type_id: 0x3e10b518
+  parameter_id: 0x00878020
+  parameter_id: 0x3e10b518
+  parameter_id: 0x33756485
+  parameter_id: 0x33673679
+}
+function {
+  id: 0x92946457
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3f37d9d5
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9294d8c1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3c01aef6
+  parameter_id: 0x051414e1
+}
+function {
+  id: 0x929694e1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3a8e2ac6
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x929702b9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3c5f865b
+}
+function {
+  id: 0x929a4d8e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3c6aba87
+}
+function {
+  id: 0x929b931d
+  return_type_id: 0x3e10b518
+  parameter_id: 0x00878020
+  parameter_id: 0x391f15ea
+  parameter_id: 0x6720d32f
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x929bf9d1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3f37d9d5
+  parameter_id: 0x31e374a8
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x929cbb3c
+  return_type_id: 0x3e10b518
+  parameter_id: 0x00878020
+  parameter_id: 0x384c5795
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x929d83a9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3dcee85d
+  parameter_id: 0x1bb6a471
+}
+function {
+  id: 0x929ea9e9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3c792b1b
+}
+function {
+  id: 0x929fe685
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3c952c30
+  parameter_id: 0x0fabaf3b
+  parameter_id: 0x120540d1
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x3e10b518
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x92a00fb3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x79c50b39
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x92a01938
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3c83e85d
+}
+function {
+  id: 0x92a49dbe
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0xe37d9923
+}
+function {
+  id: 0x92a4fbf4
+  return_type_id: 0x3e10b518
+  parameter_id: 0x00878020
+  parameter_id: 0x33756485
+  parameter_id: 0x33673679
+}
+function {
+  id: 0x92a82deb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3d435d11
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x92a877e0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3ca2533c
+}
+function {
+  id: 0x92ab09cb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3d435d11
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x92acc8e1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3ac2a209
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x92acc9b8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3ea2e6c1
+  parameter_id: 0x2124c9f1
+}
+function {
+  id: 0x92b5578e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3f37d9d5
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x92b6ee8e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3ea2e6c1
+  parameter_id: 0x27ad0443
+}
+function {
+  id: 0x92b76318
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3cfe7778
+  parameter_id: 0x01c5a749
+  parameter_id: 0x3c2dd1ca
+}
+function {
+  id: 0x92bf7ef1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3cfe7778
+}
+function {
+  id: 0x92c02fa2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b49ed35
+  parameter_id: 0x6720d32f
+  parameter_id: 0x38d23361
+}
+function {
+  id: 0x92c0b65c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e360385
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x92c181e7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x92c1e3df
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3ee88c45
+  parameter_id: 0x3eed77c0
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x92c247e8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3ed39c44
+  parameter_id: 0x3e10b518
+  parameter_id: 0x38040a6c
+}
+function {
+  id: 0x92c2d86d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3185812b
+}
+function {
+  id: 0x92c4ddf1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x31c8b544
+  parameter_id: 0xcd84e3cd
+}
+function {
+  id: 0x92c581e2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3053e2de
+}
+function {
+  id: 0x92c58e2b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3c0e9e79
+  parameter_id: 0x11b2a696
+}
+function {
+  id: 0x92c5abfb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b49ed35
+  parameter_id: 0x6720d32f
+  parameter_id: 0x2ec35650
+}
+function {
+  id: 0x92c62246
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3c07fb40
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x92cb9949
+  return_type_id: 0xf435685e
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+  parameter_id: 0x2f73da3b
+}
+function {
+  id: 0x92cbd49b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3ea2e6c1
+  parameter_id: 0x347303b4
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x92cdaede
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3ea2e6c1
+  parameter_id: 0x397d1060
+}
+function {
+  id: 0x92ce2ae7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b49ed35
+  parameter_id: 0x6720d32f
+  parameter_id: 0x00c72527
+}
+function {
+  id: 0x92ce345a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3d3b5dd7
+}
+function {
+  id: 0x92d3b873
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3dcae1c0
+  parameter_id: 0x0f20855e
+  parameter_id: 0x7584e7da
+}
+function {
+  id: 0x92d3febd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3d4c764a
+}
+function {
+  id: 0x92d48f94
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3fc475cd
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x92d5c63f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x92d83970
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x36d130d1
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x92d90e2a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x31fa879c
+  parameter_id: 0xc9082b19
+  parameter_id: 0x0db138df
+}
+function {
+  id: 0x92dc6e62
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3d723536
+}
+function {
+  id: 0x92ded888
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3fc475cd
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x92df7dfb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3176a085
+  parameter_id: 0xc9082b19
+  parameter_id: 0x914dbfdc
+  parameter_id: 0x914dbfdc
+}
+function {
+  id: 0x92e0cf3e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3fc475cd
+  parameter_id: 0x295c7202
+  parameter_id: 0xd81670c8
+  parameter_id: 0x914dbfdc
+}
+function {
+  id: 0x92e1b125
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3c0e9e79
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x92e29590
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3bfbd7cf
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x92e54489
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x92e95f69
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3ea2e6c1
+  parameter_id: 0x36337082
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x92ea4841
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b49ed35
+  parameter_id: 0x6720d32f
+  parameter_id: 0x914dbfdc
+}
+function {
+  id: 0x92eba1f9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3c952c30
+  parameter_id: 0x120540d1
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x3e10b518
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x92ec87c7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e146274
+  parameter_id: 0x3e10b518
+  parameter_id: 0x4585663f
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x92ed303b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3ba261b0
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x92ed801d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3ea2e6c1
+  parameter_id: 0x3176a085
+}
+function {
+  id: 0x92f05d3f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e146274
+  parameter_id: 0x3e10b518
+  parameter_id: 0x38d23361
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x92f0cfba
+  return_type_id: 0x11c404ba
+  parameter_id: 0x3486508f
+}
+function {
+  id: 0x92f2a156
+  return_type_id: 0x6720d32f
+  parameter_id: 0x39915f84
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x92f33a91
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e146274
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3e10b518
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x2b8cd86f
+}
+function {
+  id: 0x92f35938
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3dcee85d
+}
+function {
+  id: 0x92f4a3cb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e1c2855
+  parameter_id: 0x3f72018a
+  parameter_id: 0x3992f3fa
+  parameter_id: 0x3992f3fa
+}
+function {
+  id: 0x92f5ef8e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e146274
+  parameter_id: 0x3e10b518
+  parameter_id: 0x2e18f543
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x92f9a820
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e6396e0
+  parameter_id: 0x386badcf
+}
+function {
+  id: 0x92fc5924
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b49ed35
+  parameter_id: 0x6720d32f
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x92fc8cbd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x92fcfc63
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e146274
+  parameter_id: 0x3e10b518
+  parameter_id: 0x051414e1
+}
+function {
+  id: 0x92fdb966
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e146274
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x92fe587a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e146274
+  parameter_id: 0x3e10b518
+  parameter_id: 0x00c72527
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x92ff2cb6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e146274
+  parameter_id: 0x3e10b518
+  parameter_id: 0x051414e1
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x93036ec8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x396fe4f8
+  parameter_id: 0x361d366b
+}
+function {
+  id: 0x9306a2ca
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3861403d
+  parameter_id: 0x27847a9a
+}
+function {
+  id: 0x93080724
+  return_type_id: 0x6720d32f
+  parameter_id: 0x39ee8afd
+  parameter_id: 0x3cd1ad37
+}
+function {
+  id: 0x9309a490
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3ac2a209
+  parameter_id: 0x0e7bcf6d
+}
+function {
+  id: 0x930a577a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x12e6ffae
+}
+function {
+  id: 0x930a9934
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3a583251
+  parameter_id: 0x071da3d1
+}
+function {
+  id: 0x930b81f5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3c5f865b
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x930bf787
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x12e6ffae
+  parameter_id: 0x07027638
+  parameter_id: 0x1818079c
+}
+function {
+  id: 0x930d2c35
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x12e6ffae
+  parameter_id: 0x1c3dbe5a
+  parameter_id: 0x1c3dbe5a
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x930f6fb6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3a3e3264
+}
+function {
+  id: 0x9312d42a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x4585663f
+  parameter_id: 0x064d6086
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9312e488
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x4585663f
+  parameter_id: 0x00fde7ff
+}
+function {
+  id: 0x9312ea38
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x4585663f
+  parameter_id: 0x00c72527
+}
+function {
+  id: 0x9313a933
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x12e6ffae
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0d9f5631
+}
+function {
+  id: 0x9313eb8f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x4585663f
+  parameter_id: 0x04c1fa3e
+}
+function {
+  id: 0x9313ee2a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e146274
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x93141b15
+  return_type_id: 0x6720d32f
+  parameter_id: 0x39a83127
+  parameter_id: 0x39a83127
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x931427a9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x4585663f
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x931431b9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3a534a58
+}
+function {
+  id: 0x9315b50b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3c2755a3
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x931600ed
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3806390a
+  parameter_id: 0x295c7202
+  parameter_id: 0xc9082b19
+  parameter_id: 0x1790a02f
+}
+function {
+  id: 0x93160df2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x4585663f
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9316efbb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3a583251
+}
+function {
+  id: 0x93177804
+  return_type_id: 0x6720d32f
+  parameter_id: 0x36f998d3
+  parameter_id: 0xc9082b19
+  parameter_id: 0x3104c07e
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x931806a8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3ac2a209
+  parameter_id: 0x0a134144
+}
+function {
+  id: 0x93196b24
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x4585663f
+  parameter_id: 0x2ec35650
+}
+function {
+  id: 0x931a2d85
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3c2755a3
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3e6239e1
+}
+function {
+  id: 0x931d2209
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x4585663f
+  parameter_id: 0x3fe7e06b
+}
+function {
+  id: 0x931e2c91
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3c0933ca
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x931e5758
+  return_type_id: 0x6720d32f
+  parameter_id: 0x391f15ea
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x93203902
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3912dbd4
+  parameter_id: 0x38ec2eab
+  parameter_id: 0x1f718836
+}
+function {
+  id: 0x9322918f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x36194830
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x93235a02
+  return_type_id: 0x6720d32f
+  parameter_id: 0x391f15ea
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0x93241ca5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3806390a
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x9326478c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x36194830
+  parameter_id: 0xc9082b19
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x932780af
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x18bd6530
+  parameter_id: 0x12e6ffae
+}
+function {
+  id: 0x932a8871
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x1b2ca025
+  parameter_id: 0x1c3dbe5a
+  parameter_id: 0x3dc59b1f
+  parameter_id: 0x3c57992a
+  parameter_id: 0x4585663f
+  parameter_id: 0x3c5cda3d
+  parameter_id: 0x33e3ad2f
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x932bc2c5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3aac87ab
+}
+function {
+  id: 0x93304bad
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3ac2a209
+}
+function {
+  id: 0x9334e080
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3c07fb40
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x933762b6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x396fe4f8
+  parameter_id: 0x361d366b
+  parameter_id: 0xd031fa6c
+}
+function {
+  id: 0x9337e8bb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x391e6bd6
+  parameter_id: 0x3c24585d
+}
+function {
+  id: 0x93381cce
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3ae3ff84
+}
+function {
+  id: 0x933f3b0e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x391e6bd6
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x9340e134
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3760766d
+  parameter_id: 0xc607e025
+}
+function {
+  id: 0x9341cc84
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b04bead
+}
+function {
+  id: 0x9342d9ef
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b08eb03
+}
+function {
+  id: 0x93445117
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b12c8e0
+}
+function {
+  id: 0x934e4149
+  return_type_id: 0xf435685e
+  parameter_id: 0x1d44326e
+  parameter_id: 0xc9082b19
+  parameter_id: 0x13580d6c
+  parameter_id: 0x1c8bf9fd
+}
+function {
+  id: 0x934ffb1c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x038de60c
+}
+function {
+  id: 0x9351641d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b461cc8
+}
+function {
+  id: 0x9353db21
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b4ce03a
+}
+function {
+  id: 0x9355441f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b569cc2
+}
+function {
+  id: 0x93577186
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3c0604da
+  parameter_id: 0x7584e7da
+}
+function {
+  id: 0x93578e9d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3860f3c0
+  parameter_id: 0x33756485
+  parameter_id: 0x0a134144
+}
+function {
+  id: 0x935a996a
+  return_type_id: 0x15a30023
+  parameter_id: 0x0c2e195c
+  parameter_id: 0xc93e017b
+  parameter_id: 0x7b64642a
+  parameter_id: 0xf1a6dfed
+  parameter_id: 0x0292b875
+}
+function {
+  id: 0x935b00c2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3f37d9d5
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x93627fe0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3a583251
+  parameter_id: 0x1d2416d3
+}
+function {
+  id: 0x9364b6bd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3860f3c0
+  parameter_id: 0x3f1a5886
+}
+function {
+  id: 0x9365db7d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3760766d
+  parameter_id: 0xcf497245
+}
+function {
+  id: 0x93687b43
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3ba261b0
+}
+function {
+  id: 0x936c5d25
+  return_type_id: 0x6720d32f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x914dbfdc
+}
+function {
+  id: 0x936ca40b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3bb11c92
+}
+function {
+  id: 0x93788ff8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3a8e2ac6
+  parameter_id: 0x16f99983
+}
+function {
+  id: 0x937ab4d8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3d4bf55f
+  parameter_id: 0x6720d32f
+  parameter_id: 0xd0cce131
+  parameter_id: 0x00c72527
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x937bb0c9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x0d458514
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3b9d17e6
+}
+function {
+  id: 0x937ca73d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x0c467c34
+  parameter_id: 0x324a2d7b
+  parameter_id: 0x3c57992a
+  parameter_id: 0x4585663f
+  parameter_id: 0x3c5cda3d
+  parameter_id: 0x31b5a66f
+}
+function {
+  id: 0x937fa102
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3bb11c92
+  parameter_id: 0x04c1427f
+}
+function {
+  id: 0x93801804
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3803ecae
+}
+function {
+  id: 0x93816d6d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3806390a
+}
+function {
+  id: 0x93820b25
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x315b7e01
+  parameter_id: 0x1b2ca025
+  parameter_id: 0x1b2ca025
+  parameter_id: 0x344a8f68
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x93833601
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e6396e0
+  parameter_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9384ebd6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e6396e0
+  parameter_id: 0x6720d32f
+  parameter_id: 0x00c72527
+  parameter_id: 0x17f10051
+}
+function {
+  id: 0x9384eeb1
+  return_type_id: 0x35d510c3
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9384f862
+  return_type_id: 0x6720d32f
+  parameter_id: 0x396f8e0f
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x93880e88
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3806390a
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x9388a514
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x31b5a66f
+  parameter_id: 0x38aab014
+  parameter_id: 0x6720d32f
+  parameter_id: 0x249959de
+}
+function {
+  id: 0x9388ac32
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x31b5a66f
+  parameter_id: 0x38aab014
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x93898074
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x31c8b544
+  parameter_id: 0x3db894b0
+}
+function {
+  id: 0x9389b3df
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x315b7e01
+  parameter_id: 0x344a8f68
+}
+function {
+  id: 0x938c1916
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x938ec5ae
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e6396e0
+  parameter_id: 0x6720d32f
+  parameter_id: 0x2f73da3b
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x938fe7c2
+  return_type_id: 0xf435685e
+  parameter_id: 0x12c0ba43
+}
+function {
+  id: 0x93907678
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3c5f865b
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9390f5c5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x39a8be0c
+  parameter_id: 0x1e8e5a79
+}
+function {
+  id: 0x93980968
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3863a91c
+}
+function {
+  id: 0x9398dfdf
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3860f3c0
+}
+function {
+  id: 0x9398faf7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3806390a
+  parameter_id: 0x0665e6b6
+}
+function {
+  id: 0x93994651
+  return_type_id: 0x11c404ba
+  parameter_id: 0x32a623d7
+  parameter_id: 0x3eb2babd
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9399e12a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+  parameter_id: 0x00c72527
+  parameter_id: 0x6720d32f
+  parameter_id: 0x051414e1
+}
+function {
+  id: 0x939cd646
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+  parameter_id: 0x13580d6c
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x939d4211
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x3860f3c0
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x939da7e0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3ea2e6c1
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x939de190
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3c277b43
+  parameter_id: 0x4585663f
+  parameter_id: 0x0b27dc43
+}
+function {
+  id: 0x93a2a3d7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x382837f5
+  parameter_id: 0x0a134144
+}
+function {
+  id: 0x93a3791f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x39a4e83f
+  parameter_id: 0x13580d6c
+  parameter_id: 0x13580d6c
+  parameter_id: 0xc582424e
+}
+function {
+  id: 0x93a3ea47
+  return_type_id: 0x3e10b518
+  parameter_id: 0x079ff791
+}
+function {
+  id: 0x93a4b915
+  return_type_id: 0x6720d32f
+  parameter_id: 0x39a4e83f
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x93a4d01f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3890ccc2
+}
+function {
+  id: 0x93a5dbf7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b12c8e0
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x93acae9b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x38b136d3
+}
+function {
+  id: 0x93affaec
+  return_type_id: 0x6720d32f
+  parameter_id: 0x38bc670e
+}
+function {
+  id: 0x93b092da
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3860f3c0
+  parameter_id: 0x0a134144
+}
+function {
+  id: 0x93b44747
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3ba261b0
+  parameter_id: 0x384c5795
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x93b5b685
+  return_type_id: 0x6720d32f
+  parameter_id: 0x39a4e83f
+  parameter_id: 0x171be96c
+}
+function {
+  id: 0x93b5eea7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x391f15ea
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x93b941f7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x39c825ca
+  parameter_id: 0x12eaeaa5
+}
+function {
+  id: 0x93bee8a1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b4ce03a
+  parameter_id: 0x3b4ce03a
+}
+function {
+  id: 0x93bf967f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x38fdd541
+}
+function {
+  id: 0x93c23a28
+  return_type_id: 0x6720d32f
+  parameter_id: 0x390b641d
+}
+function {
+  id: 0x93c5cc72
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x21003da7
+}
+function {
+  id: 0x93c6821c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x396fe4f8
+  parameter_id: 0x0717743d
+  parameter_id: 0x0717743d
+}
+function {
+  id: 0x93c72655
+  return_type_id: 0x6720d32f
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0x93c92846
+  return_type_id: 0x6720d32f
+  parameter_id: 0x391289e8
+  parameter_id: 0x054f691a
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x93d14727
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3a1e1de8
+  parameter_id: 0x345a9df3
+  parameter_id: 0x1d2416d3
+}
+function {
+  id: 0x93d34421
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3860f3c0
+  parameter_id: 0x12e6ffae
+}
+function {
+  id: 0x93d4efe1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3411dbb1
+  parameter_id: 0xd41e888f
+}
+function {
+  id: 0x93d6e983
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3806390a
+  parameter_id: 0x1336ce53
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x93d74597
+  return_type_id: 0x6720d32f
+  parameter_id: 0x395e9ae2
+}
+function {
+  id: 0x93db1a11
+  return_type_id: 0x6720d32f
+  parameter_id: 0x396fe4f8
+}
+function {
+  id: 0x93de93a5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x21003da7
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x93df2fed
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3806390a
+  parameter_id: 0x1790a02f
+}
+function {
+  id: 0x93dfa305
+  return_type_id: 0x6720d32f
+  parameter_id: 0x397d00ab
+}
+function {
+  id: 0x93e044d4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3ada60b4
+  parameter_id: 0x358ff5b7
+}
+function {
+  id: 0x93e3d44d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x2ef43f67
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x93e51922
+  return_type_id: 0x6720d32f
+  parameter_id: 0x31b5a66f
+  parameter_id: 0x8224e5a5
+}
+function {
+  id: 0x93e681f1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3ada60b4
+  parameter_id: 0x343ebce3
+}
+function {
+  id: 0x93e73189
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x2afee447
+  parameter_id: 0x341a7034
+}
+function {
+  id: 0x93e7a8a1
+  return_type_id: 0x0a134144
+  parameter_id: 0x1b36c7a2
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x93e8e7b0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3a534a58
+  parameter_id: 0x3e10b518
+  parameter_id: 0x1253769c
+}
+function {
+  id: 0x93eb75f8
+  return_type_id: 0x0a134144
+  parameter_id: 0x1b36c7a2
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x93f00c1b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x39c3bcd2
+}
+function {
+  id: 0x93f2f8bd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3a534a58
+  parameter_id: 0x3a534a58
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x93f3386e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x2f0e69de
+  parameter_id: 0x38aab014
+  parameter_id: 0x3a83b85f
+  parameter_id: 0x3104c07e
+  parameter_id: 0x6720d32f
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x93f39d0d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x39cdf888
+}
+function {
+  id: 0x93f6a75b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x2f0e69de
+  parameter_id: 0x2ef43f67
+  parameter_id: 0x38aab014
+  parameter_id: 0x3104c07e
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x93f7ef8a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x2ef43f67
+  parameter_id: 0x318983a1
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x93f81ac9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x396f8ae8
+  parameter_id: 0x0b27dc43
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x93f8ec59
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3fa672fd
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x93fb658b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x39ee1a91
+}
+function {
+  id: 0x93fdbeb6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3b49ed35
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x93ff1ef0
+  return_type_id: 0xf435685e
+  parameter_id: 0x13035e8b
+}
+function {
+  id: 0x93ff8cbc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x3a534a58
+  parameter_id: 0x3a534a58
+  parameter_id: 0x0483e6f8
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x940475db
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2668e644
+  parameter_id: 0x042af17e
+  parameter_id: 0x3ada60b4
+  parameter_id: 0x2c8e1aaa
+}
+function {
+  id: 0x940535a0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x24954792
+  parameter_id: 0x2821daec
+}
+function {
+  id: 0x940539d2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x24954792
+  parameter_id: 0x2821daec
+  parameter_id: 0x03069f1e
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x94072e9c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25ffeea5
+  parameter_id: 0x3e0d8696
+}
+function {
+  id: 0x9407db3f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x24954792
+  parameter_id: 0x2821daec
+  parameter_id: 0x0bba7efd
+}
+function {
+  id: 0x9408f958
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25ffeea5
+  parameter_id: 0x3b8a7aa2
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x940a4214
+  return_type_id: 0x6720d32f
+  parameter_id: 0x24954792
+  parameter_id: 0x2821daec
+  parameter_id: 0x3dded319
+}
+function {
+  id: 0x940ad996
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2628eae6
+}
+function {
+  id: 0x940cd4e8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x292ab2e2
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x940e6be5
+  return_type_id: 0x15ee5719
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x94118828
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2259084f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x11cfee5a
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x94123fa1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25653b02
+  parameter_id: 0x32e49390
+}
+function {
+  id: 0x9414b060
+  return_type_id: 0x6720d32f
+  parameter_id: 0x26927abb
+  parameter_id: 0x0c337849
+}
+function {
+  id: 0x9414c891
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2208f89a
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x94156e91
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25b73daa
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x941d79a6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x246dc7d4
+  parameter_id: 0x213e084f
+  parameter_id: 0x084d74bf
+}
+function {
+  id: 0x941fec91
+  return_type_id: 0x6720d32f
+  parameter_id: 0x246dc7d4
+  parameter_id: 0x213e084f
+  parameter_id: 0x029d7f27
+  parameter_id: 0x084d74bf
+}
+function {
+  id: 0x9420019d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2fb647c0
+  parameter_id: 0x92233392
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x94203dd2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x257d12af
+  parameter_id: 0x384c5795
+  parameter_id: 0x7b64642a
+  parameter_id: 0x18bd6530
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x34c137dc
+}
+function {
+  id: 0x94208977
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2560a232
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x9427c0bf
+  return_type_id: 0x6720d32f
+  parameter_id: 0x269c8e40
+}
+function {
+  id: 0x9427e550
+  return_type_id: 0x6720d32f
+  parameter_id: 0x257d12af
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x942a9d07
+  return_type_id: 0x6720d32f
+  parameter_id: 0x26e55184
+  parameter_id: 0x04ca9246
+}
+function {
+  id: 0x942b6084
+  return_type_id: 0x6720d32f
+  parameter_id: 0x27f7746a
+  parameter_id: 0x11cffa09
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9436e95e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x26ee682a
+  parameter_id: 0x00c72527
+  parameter_id: 0x38d23361
+  parameter_id: 0x2e18f543
+}
+function {
+  id: 0x9439b74e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x26e55184
+}
+function {
+  id: 0x943b7925
+  return_type_id: 0x6720d32f
+  parameter_id: 0x26ee682a
+}
+function {
+  id: 0x943c13c4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25653b02
+  parameter_id: 0x396f8ae8
+}
+function {
+  id: 0x9441b35b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x26ee682a
+  parameter_id: 0x1eb29fb8
+}
+function {
+  id: 0x94435373
+  return_type_id: 0x6720d32f
+  parameter_id: 0x276a1779
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0x9445ee80
+  return_type_id: 0x6720d32f
+  parameter_id: 0x234c60dd
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x944726c2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25ffeea5
+  parameter_id: 0x2e0f9112
+}
+function {
+  id: 0x9448ad12
+  return_type_id: 0x6720d32f
+  parameter_id: 0x20d23755
+  parameter_id: 0x7ebb2c72
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x944b03ec
+  return_type_id: 0x6720d32f
+  parameter_id: 0x26ee682a
+  parameter_id: 0x1eb29fb8
+  parameter_id: 0x2ac2dd67
+}
+function {
+  id: 0x944bd099
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2b754442
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x944cc77b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2309ad3e
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x38d23361
+}
+function {
+  id: 0x944cd608
+  return_type_id: 0x6720d32f
+  parameter_id: 0x29c600bb
+  parameter_id: 0xe02e14d6
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x944ce0cc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x29c600bb
+  parameter_id: 0xe02e14d6
+  parameter_id: 0xf435685e
+  parameter_id: 0x0c3ae02c
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x944cfb0d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2309ad3e
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x944e647e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x26a97673
+  parameter_id: 0x18bd6530
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9450f880
+  return_type_id: 0x6720d32f
+  parameter_id: 0x269c8e40
+  parameter_id: 0x1dce0fdd
+}
+function {
+  id: 0x9451ed5a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x246dc7d4
+  parameter_id: 0x33756485
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x94570fc4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x24d65b62
+  parameter_id: 0x34434827
+  parameter_id: 0xcddc4fff
+}
+function {
+  id: 0x945a66f1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x276a1779
+}
+function {
+  id: 0x945ae17e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x246dc7d4
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x1edbd939
+}
+function {
+  id: 0x945ba723
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25653b02
+  parameter_id: 0x2060db23
+  parameter_id: 0x0e2680c2
+}
+function {
+  id: 0x945c71bc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x27b71910
+  parameter_id: 0x0ca27481
+  parameter_id: 0x0f7414e8
+}
+function {
+  id: 0x94623262
+  return_type_id: 0x6720d32f
+  parameter_id: 0x24941b6f
+  parameter_id: 0x322c8c4b
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x946478d7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x24d65b62
+  parameter_id: 0x34434827
+}
+function {
+  id: 0x94662870
+  return_type_id: 0x6720d32f
+  parameter_id: 0x24e24923
+  parameter_id: 0x379645d8
+}
+function {
+  id: 0x9467fbb8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x246dc7d4
+  parameter_id: 0x3f1a5886
+}
+function {
+  id: 0x94688199
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2314b69f
+  parameter_id: 0x4585663f
+  parameter_id: 0xeeed68e6
+  parameter_id: 0x3ea31487
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x946a5f74
+  return_type_id: 0x6720d32f
+  parameter_id: 0x24d65b62
+  parameter_id: 0x34434827
+  parameter_id: 0x34434827
+  parameter_id: 0xcddc4fff
+}
+function {
+  id: 0x946eaca9
+  return_type_id: 0x52658204
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x9474d77b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x26e55184
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x94751139
+  return_type_id: 0x6720d32f
+  parameter_id: 0x21003da7
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x947739e9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x26ee682a
+  parameter_id: 0x13580d6c
+  parameter_id: 0x0483e6f8
+}
+function {
+  id: 0x947a09b6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25b73daa
+  parameter_id: 0x25c97cc9
+}
+function {
+  id: 0x947abeaa
+  return_type_id: 0x6720d32f
+  parameter_id: 0x26b34615
+  parameter_id: 0x15a30023
+}
+function {
+  id: 0x947d3e35
+  return_type_id: 0x6720d32f
+  parameter_id: 0x27f7746a
+}
+function {
+  id: 0x947e0213
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25653b02
+  parameter_id: 0x2f99f236
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9480cdfa
+  return_type_id: 0x6720d32f
+  parameter_id: 0x249959de
+  parameter_id: 0x0fec25a9
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9486061c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x26ee682a
+  parameter_id: 0x2f5fce77
+}
+function {
+  id: 0x948d5e96
+  return_type_id: 0x6720d32f
+  parameter_id: 0x246dc7d4
+  parameter_id: 0x030b9acf
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x20351a02
+}
+function {
+  id: 0x948ec07f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2060db23
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9492906d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x29082583
+  parameter_id: 0xd41e888f
+}
+function {
+  id: 0x94964152
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25b73daa
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x9496b073
+  return_type_id: 0x6720d32f
+  parameter_id: 0x24e24923
+  parameter_id: 0x0bb04528
+}
+function {
+  id: 0x949a84eb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25ffeea5
+  parameter_id: 0x19671b46
+}
+function {
+  id: 0x949fa126
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2060db23
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x94a5b2cb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x24954792
+}
+function {
+  id: 0x94a5e5f4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x24941b6f
+}
+function {
+  id: 0x94a6b558
+  return_type_id: 0x6720d32f
+  parameter_id: 0x249959de
+}
+function {
+  id: 0x94a75f35
+  return_type_id: 0x0611572c
+  parameter_id: 0x332d6166
+}
+function {
+  id: 0x94ae1223
+  return_type_id: 0x6720d32f
+  parameter_id: 0x24bbc433
+}
+function {
+  id: 0x94b01b5e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x26ee682a
+  parameter_id: 0x22d89eed
+}
+function {
+  id: 0x94b2aa4e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x246dc7d4
+  parameter_id: 0x084d74bf
+  parameter_id: 0x20351a02
+}
+function {
+  id: 0x94b53eb0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x276a1779
+  parameter_id: 0x38d23361
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x94b575f7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x24d65b62
+}
+function {
+  id: 0x94b5c877
+  return_type_id: 0x6720d32f
+  parameter_id: 0x26e55184
+  parameter_id: 0x231fce4e
+}
+function {
+  id: 0x94b946cc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x29a77f06
+  parameter_id: 0xd41e888f
+}
+function {
+  id: 0x94bc9034
+  return_type_id: 0x6720d32f
+  parameter_id: 0x27b5ed37
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x94c3e345
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25782362
+  parameter_id: 0x0130219f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x94cadd10
+  return_type_id: 0x6720d32f
+  parameter_id: 0x27459bea
+  parameter_id: 0x26731c99
+  parameter_id: 0x0a52df14
+}
+function {
+  id: 0x94cce46c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25782362
+  parameter_id: 0x0483e6f8
+}
+function {
+  id: 0x94ce95ed
+  return_type_id: 0x6720d32f
+  parameter_id: 0x27459bea
+  parameter_id: 0x26731c99
+  parameter_id: 0x1bf16028
+  parameter_id: 0x08048e62
+}
+function {
+  id: 0x94d17e14
+  return_type_id: 0x6720d32f
+  parameter_id: 0x21069feb
+  parameter_id: 0x4585663f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x94d2e9bf
+  return_type_id: 0x6720d32f
+  parameter_id: 0x29c600bb
+  parameter_id: 0xc9082b19
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x94d4606a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25520d15
+}
+function {
+  id: 0x94d8cba3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2560a232
+}
+function {
+  id: 0x94d99adc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x24e24923
+  parameter_id: 0x187aeed8
+}
+function {
+  id: 0x94d9adef
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25653b02
+}
+function {
+  id: 0x94da2b71
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25782362
+  parameter_id: 0x0130219f
+}
+function {
+  id: 0x94db7e69
+  return_type_id: 0x6720d32f
+  parameter_id: 0x257d12af
+  parameter_id: 0x0c2e195c
+  parameter_id: 0xd0b3a203
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x94dc0c27
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2668e644
+  parameter_id: 0x31b5a66f
+}
+function {
+  id: 0x94ddd09d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25520d15
+  parameter_id: 0x026c3dea
+}
+function {
+  id: 0x94deebf7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25782362
+}
+function {
+  id: 0x94dfa784
+  return_type_id: 0x6720d32f
+  parameter_id: 0x257d12af
+}
+function {
+  id: 0x94e2d352
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25782362
+  parameter_id: 0x0d7ce7cc
+  parameter_id: 0x2836877a
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x94e48158
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25ffeea5
+  parameter_id: 0x04f728c1
+  parameter_id: 0x2115f462
+}
+function {
+  id: 0x94e642c6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25782362
+  parameter_id: 0x0130219f
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x94e69702
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2599d0b6
+}
+function {
+  id: 0x94e8814a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25782362
+  parameter_id: 0x0d7ce7cc
+  parameter_id: 0x0a7642a8
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x94e8af84
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25782362
+  parameter_id: 0x0d7ce7cc
+  parameter_id: 0x0a7642a8
+  parameter_id: 0x4585663f
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x94eb1868
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25782362
+  parameter_id: 0x0d7ce7cc
+}
+function {
+  id: 0x94ebfe13
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25782362
+  parameter_id: 0x0d7ce7cc
+  parameter_id: 0x0399ec3e
+}
+function {
+  id: 0x94ecc425
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25ffeea5
+  parameter_id: 0x04f728c1
+}
+function {
+  id: 0x94ed2c45
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25b73daa
+}
+function {
+  id: 0x94f2d05c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25782362
+  parameter_id: 0x0d7ce7cc
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x94f636df
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25db57c0
+}
+function {
+  id: 0x94f8a6cc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25782362
+  parameter_id: 0x0d7ce7cc
+  parameter_id: 0x4efa90bb
+}
+function {
+  id: 0x9502ce9c
+  return_type_id: 0x1dc3d428
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x95052f9e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x221732c5
+}
+function {
+  id: 0x950581be
+  return_type_id: 0x6720d32f
+  parameter_id: 0x21003da7
+  parameter_id: 0x315b7e01
+}
+function {
+  id: 0x95096419
+  return_type_id: 0x6720d32f
+  parameter_id: 0x23f09c34
+  parameter_id: 0x1dd302e9
+  parameter_id: 0x0bb0c019
+}
+function {
+  id: 0x950b8829
+  return_type_id: 0x6720d32f
+  parameter_id: 0x23f09c34
+  parameter_id: 0x1dd302e9
+}
+function {
+  id: 0x950f0fae
+  return_type_id: 0x6720d32f
+  parameter_id: 0x223fb206
+}
+function {
+  id: 0x9511594d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x23f6f3f6
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x3ebcd127
+}
+function {
+  id: 0x952154fc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x21069feb
+  parameter_id: 0x38040a6c
+}
+function {
+  id: 0x952ae349
+  return_type_id: 0x6720d32f
+  parameter_id: 0x221a7c5c
+  parameter_id: 0x0b27dc43
+}
+function {
+  id: 0x952cf00a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x246dc7d4
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x084d74bf
+  parameter_id: 0x20351a02
+  parameter_id: 0x309ac349
+}
+function {
+  id: 0x952d6cbd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x26ee682a
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9535de1a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2e8d5f05
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+  parameter_id: 0x0277bf8a
+  parameter_id: 0x064d6086
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x95365c21
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2131312a
+  parameter_id: 0x3ebcd127
+}
+function {
+  id: 0x9539822a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x22e58417
+}
+function {
+  id: 0x953da42f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2060db23
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x95415c1d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x22cee855
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x4585663f
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x954268bb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25782362
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x95428860
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2309ad3e
+}
+function {
+  id: 0x9542ea53
+  return_type_id: 0x6720d32f
+  parameter_id: 0x230825f0
+}
+function {
+  id: 0x954324c8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x257d12af
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x954448ef
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2560a232
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x95452ea3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25653b02
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9546c6bc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x234c60dd
+  parameter_id: 0x054f691a
+}
+function {
+  id: 0x9547904d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x27459bea
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x954a5c30
+  return_type_id: 0x6720d32f
+  parameter_id: 0x276a1779
+  parameter_id: 0x4585663f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x954d9028
+  return_type_id: 0x6720d32f
+  parameter_id: 0x20d23755
+  parameter_id: 0x32a623d7
+  parameter_id: 0xc9082b19
+  parameter_id: 0x4585663f
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x954e493c
+  return_type_id: 0x3de3e357
+  parameter_id: 0x26e55184
+}
+function {
+  id: 0x9550eada
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2314b69f
+  parameter_id: 0x064d6086
+  parameter_id: 0x30474302
+}
+function {
+  id: 0x9550f091
+  return_type_id: 0x6720d32f
+  parameter_id: 0x22cee855
+  parameter_id: 0x18ea6ae3
+}
+function {
+  id: 0x95527441
+  return_type_id: 0x6720d32f
+  parameter_id: 0x22cee855
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x0a134144
+}
+function {
+  id: 0x955347a9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2060db23
+  parameter_id: 0x32e49390
+}
+function {
+  id: 0x9553fb18
+  return_type_id: 0x6720d32f
+  parameter_id: 0x234c60dd
+}
+function {
+  id: 0x95551200
+  return_type_id: 0x6720d32f
+  parameter_id: 0x22cee855
+  parameter_id: 0x1992ce85
+}
+function {
+  id: 0x95587b1f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x257d12af
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9558db6d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2360e10b
+}
+function {
+  id: 0x9559376c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25782362
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x955ad750
+  return_type_id: 0x6720d32f
+  parameter_id: 0x221732c5
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x955f7e5a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x210b9681
+  parameter_id: 0x246dc7d4
+  parameter_id: 0x3316fc74
+  parameter_id: 0x029d7f27
+}
+function {
+  id: 0x955fdee8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x209cbdcc
+  parameter_id: 0x3e04ad29
+}
+function {
+  id: 0x956202e7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x238b8721
+}
+function {
+  id: 0x9565c8c3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x23f09c34
+  parameter_id: 0x06433852
+}
+function {
+  id: 0x956b1688
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25782362
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x957149c4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2208f89a
+  parameter_id: 0x18bd6530
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9573e3f3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x26ee682a
+  parameter_id: 0x508a987d
+  parameter_id: 0x2ac2dd67
+}
+function {
+  id: 0x957964bc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2259084f
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x957cc422
+  return_type_id: 0x6720d32f
+  parameter_id: 0x23f09c34
+}
+function {
+  id: 0x95805682
+  return_type_id: 0x6720d32f
+  parameter_id: 0x23bd1038
+  parameter_id: 0x3bfc68fb
+}
+function {
+  id: 0x958486f6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x23f09c34
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x95854407
+  return_type_id: 0x6720d32f
+  parameter_id: 0x23f09c34
+  parameter_id: 0x3e600958
+}
+function {
+  id: 0x95876807
+  return_type_id: 0x3e10b518
+  parameter_id: 0x1b55a8f2
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9587d027
+  return_type_id: 0x3e0e96d0
+  parameter_id: 0x054f691a
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9588384f
+  return_type_id: 0x2259084f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x09a83f1c
+  parameter_id: 0x68afbc33
+}
+function {
+  id: 0x958c8293
+  return_type_id: 0x6720d32f
+  parameter_id: 0x23f09c34
+  parameter_id: 0x3e10b518
+  parameter_id: 0x23f09c34
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x958cf238
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2b0e3ff1
+  parameter_id: 0xb3e7bac9
+}
+function {
+  id: 0x958d47a6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x239e18b5
+  parameter_id: 0x3a88a91e
+}
+function {
+  id: 0x958e52ea
+  return_type_id: 0x6720d32f
+  parameter_id: 0x23f09c34
+  parameter_id: 0x3f44b979
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x958f9102
+  return_type_id: 0x6720d32f
+  parameter_id: 0x23f09c34
+  parameter_id: 0x3f44b979
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0x9591be17
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2208f89a
+  parameter_id: 0x24d8c7ab
+}
+function {
+  id: 0x9593109b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2f3288e0
+  parameter_id: 0xf435685e
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x959717f8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x269c8e40
+  parameter_id: 0x6dbe079a
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9598d5e7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2060db23
+}
+function {
+  id: 0x959a93b5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x234c60dd
+  parameter_id: 0x325a2b75
+}
+function {
+  id: 0x959c94b6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2f3288e0
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x959d810d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x23f09c34
+  parameter_id: 0x38514bfb
+}
+function {
+  id: 0x959db44f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2f3288e0
+  parameter_id: 0xf435685e
+  parameter_id: 0x0483e6f8
+}
+function {
+  id: 0x95a05bb2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2f988f89
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x95a14791
+  return_type_id: 0x6720d32f
+  parameter_id: 0x23f09c34
+  parameter_id: 0x356ba728
+  parameter_id: 0x23f09c34
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x95a1be2b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2b0e3ff1
+  parameter_id: 0xb3e7bac9
+  parameter_id: 0xb3e7bac9
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x95a1e201
+  return_type_id: 0x6720d32f
+  parameter_id: 0x26e55184
+  parameter_id: 0x6720d32f
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x95a45e65
+  return_type_id: 0xb3e7bac9
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x95a488a5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x26e55184
+  parameter_id: 0x6720d32f
+  parameter_id: 0x06f29f19
+}
+function {
+  id: 0x95a4c6b8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x26e55184
+  parameter_id: 0x6720d32f
+  parameter_id: 0x04ca9246
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x95a4d158
+  return_type_id: 0x6720d32f
+  parameter_id: 0x26e55184
+  parameter_id: 0x6720d32f
+  parameter_id: 0x07956982
+}
+function {
+  id: 0x95a53402
+  return_type_id: 0x6720d32f
+  parameter_id: 0x26e55184
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x95a57304
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2e94a1e1
+  parameter_id: 0xe02e14d6
+}
+function {
+  id: 0x95a7fa69
+  return_type_id: 0x6720d32f
+  parameter_id: 0x26ee682a
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x95a8bc86
+  return_type_id: 0x6720d32f
+  parameter_id: 0x23f09c34
+  parameter_id: 0x351e2925
+}
+function {
+  id: 0x95a981a1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2c2f07d2
+  parameter_id: 0xc9082b19
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x3e001c39
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x95ad1987
+  return_type_id: 0x6720d32f
+  parameter_id: 0x26ee682a
+  parameter_id: 0x6720d32f
+  parameter_id: 0x2b8fbb20
+}
+function {
+  id: 0x95adcc74
+  return_type_id: 0x6720d32f
+  parameter_id: 0x23f09c34
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x95ae4f7b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x234c60dd
+  parameter_id: 0x391f15ea
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x95affd11
+  return_type_id: 0x6720d32f
+  parameter_id: 0x257d12af
+  parameter_id: 0x5d9d731c
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x95b0a0c0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x249959de
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x95b1f43d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x23f09c34
+  parameter_id: 0x334c07d5
+}
+function {
+  id: 0x95b74be6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2060db23
+  parameter_id: 0x0b59f310
+  parameter_id: 0x0b59f310
+  parameter_id: 0x0b59f310
+  parameter_id: 0x0b59f310
+}
+function {
+  id: 0x95bcfc36
+  return_type_id: 0x6720d32f
+  parameter_id: 0x26e55184
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x95be13f6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x22c0624b
+  parameter_id: 0x22c0624b
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x95bed865
+  return_type_id: 0x6720d32f
+  parameter_id: 0x26ee682a
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3a8e2ac6
+}
+function {
+  id: 0x95c0ec46
+  return_type_id: 0x6720d32f
+  parameter_id: 0x21003da7
+}
+function {
+  id: 0x95c144d5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x21069feb
+}
+function {
+  id: 0x95c3652e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25653b02
+  parameter_id: 0x4585663f
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x95c42336
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25782362
+  parameter_id: 0x4585663f
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x95c8fe6f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25782362
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x95c8ff6f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x21207103
+}
+function {
+  id: 0x95c98491
+  return_type_id: 0x6720d32f
+  parameter_id: 0x22e58417
+  parameter_id: 0x3c01aef6
+}
+function {
+  id: 0x95cedbde
+  return_type_id: 0x6720d32f
+  parameter_id: 0x21003da7
+  parameter_id: 0x038de60c
+}
+function {
+  id: 0x95cede3b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2560a232
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x95cf9d45
+  return_type_id: 0x6720d32f
+  parameter_id: 0x257d12af
+  parameter_id: 0x4585663f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x95cfb877
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25653b02
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x95d7d0a4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x215cce2d
+}
+function {
+  id: 0x95dcd734
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2170d06d
+}
+function {
+  id: 0x95e5626e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x22cee855
+  parameter_id: 0x358ed535
+}
+function {
+  id: 0x95e66878
+  return_type_id: 0x6720d32f
+  parameter_id: 0x227b260f
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x95e66fd0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25ffeea5
+  parameter_id: 0x4585663f
+  parameter_id: 0x39d36c32
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x95e8f83a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2215f16e
+  parameter_id: 0x3f0185ef
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x95ed9e1c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2131312a
+  parameter_id: 0x00c72527
+  parameter_id: 0x88b7b7bc
+}
+function {
+  id: 0x95ef0c06
+  return_type_id: 0x6720d32f
+  parameter_id: 0x210dc160
+  parameter_id: 0x0b27dc43
+}
+function {
+  id: 0x95f28084
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2e8ad82b
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x95f457b8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x22e58417
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x95f84786
+  return_type_id: 0x6720d32f
+  parameter_id: 0x21207103
+  parameter_id: 0x0effc5a1
+  parameter_id: 0x2d1ffd36
+}
+function {
+  id: 0x95f985fa
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2668e644
+  parameter_id: 0x78d7d113
+}
+function {
+  id: 0x95fc827f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x23f09c34
+  parameter_id: 0x23f09c34
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x95fe16d7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x23f09c34
+  parameter_id: 0x23f09c34
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x95fe3b9e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2131312a
+  parameter_id: 0x0ca53ed1
+}
+function {
+  id: 0x96000700
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2e94a1e1
+  parameter_id: 0x097315c2
+}
+function {
+  id: 0x96011ad3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x21069feb
+  parameter_id: 0xf017819f
+}
+function {
+  id: 0x96092c51
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2e390d5b
+  parameter_id: 0x054f691a
+  parameter_id: 0x4585663f
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9615ffdc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2e5473cd
+}
+function {
+  id: 0x9618ca83
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2e60a6b2
+}
+function {
+  id: 0x9621e968
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2e94a1e1
+  parameter_id: 0x0258f96e
+  parameter_id: 0x33756485
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9621ef47
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2e94a1e1
+  parameter_id: 0x0258f96e
+  parameter_id: 0x33756485
+  parameter_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9622351a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2edfae47
+  parameter_id: 0x054f691a
+}
+function {
+  id: 0x96225525
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2e8ad82b
+}
+function {
+  id: 0x9625cb57
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2e94a1e1
+}
+function {
+  id: 0x962949a5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2efe8065
+  parameter_id: 0x0582a4cb
+}
+function {
+  id: 0x962b38df
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2e94a1e1
+  parameter_id: 0x0258f96e
+  parameter_id: 0x1e41b656
+}
+function {
+  id: 0x962ca8b2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2e94a1e1
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x962e6f6d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2f3288e0
+  parameter_id: 0x188b9e81
+}
+function {
+  id: 0x962eb483
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2f3288e0
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9633323b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2f742e16
+  parameter_id: 0x1bb6a471
+}
+function {
+  id: 0x9634d583
+  return_type_id: 0x0206e690
+  parameter_id: 0x32a623d7
+  parameter_id: 0x914dbfdc
+}
+function {
+  id: 0x9635e526
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2f5fce77
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9636894a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2e8d5f05
+  parameter_id: 0x054f691a
+}
+function {
+  id: 0x9636ff06
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2ed870a7
+}
+function {
+  id: 0x963decf6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2ef43f67
+}
+function {
+  id: 0x963ea445
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2f72cbf9
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x963f4336
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2efe8065
+}
+function {
+  id: 0x96412245
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2c6f4dd1
+  parameter_id: 0x368487be
+}
+function {
+  id: 0x964692d8
+  return_type_id: 0x3e10b518
+  parameter_id: 0x100a15ee
+}
+function {
+  id: 0x964c4117
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2f3288e0
+}
+function {
+  id: 0x964c9660
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2fa7f388
+  parameter_id: 0x09626b7f
+}
+function {
+  id: 0x964d8070
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2efe8065
+  parameter_id: 0x1cb0d19b
+}
+function {
+  id: 0x964f8c71
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2cac4c27
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0x96521268
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2dde023d
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x9652f70e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2b21a696
+  parameter_id: 0x4585663f
+  parameter_id: 0x35f82503
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9655fa8e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2efe8065
+  parameter_id: 0x1aae6e0f
+}
+function {
+  id: 0x965710b2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2f5fce77
+}
+function {
+  id: 0x9659ea27
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2b119ef2
+  parameter_id: 0x4585663f
+  parameter_id: 0x2e7d420e
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0x965cea9d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2efe8065
+  parameter_id: 0x18ea6ae3
+}
+function {
+  id: 0x966430b0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2e18982d
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9666087d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2c8e1aaa
+  parameter_id: 0x315b7e01
+}
+function {
+  id: 0x96691fcd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2fa7f388
+}
+function {
+  id: 0x966d72df
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2fb647c0
+}
+function {
+  id: 0x966e7af2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2c32dd96
+  parameter_id: 0x3e6239e1
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x3e6239e1
+}
+function {
+  id: 0x966eadb3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2e025034
+  parameter_id: 0x1bb6a471
+}
+function {
+  id: 0x96711162
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2fc7c937
+}
+function {
+  id: 0x967b3aa7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2e029f76
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x3c63caea
+}
+function {
+  id: 0x967da352
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2cc0f57b
+  parameter_id: 0x37429bf2
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x967dadeb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2e8ad82b
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x968267f4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2dab4556
+  parameter_id: 0x1a1563a0
+}
+function {
+  id: 0x9684db0e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2c10e084
+}
+function {
+  id: 0x9689c4da
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2f5fce77
+  parameter_id: 0x37b51a1e
+}
+function {
+  id: 0x968fd49c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2ef43f67
+  parameter_id: 0x2c8e1aaa
+}
+function {
+  id: 0x969313ca
+  return_type_id: 0x6720d32f
+  parameter_id: 0x257d12af
+  parameter_id: 0x9547a3da
+  parameter_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x96961261
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2f742e16
+  parameter_id: 0x33756485
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x969a47cd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2c6a9388
+}
+function {
+  id: 0x969cf62b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2131312a
+  parameter_id: 0xd0b3a203
+  parameter_id: 0x4585663f
+  parameter_id: 0xfc2c3062
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x969da51f
+  return_type_id: 0x01e0b0cf
+  parameter_id: 0x18ea6ae3
+}
+function {
+  id: 0x96a1bf82
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2d0cf1ad
+  parameter_id: 0x18bd6530
+  parameter_id: 0x03c33b38
+  parameter_id: 0x19671b46
+}
+function {
+  id: 0x96a3f292
+  return_type_id: 0x3e10b518
+  parameter_id: 0x120540d1
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x228d1fdb
+}
+function {
+  id: 0x96a5437c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x28ced72f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x96a83d40
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2f3288e0
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0x96abf026
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2cac4c27
+}
+function {
+  id: 0x96ac3609
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2ef43f67
+  parameter_id: 0x2668e644
+  parameter_id: 0x2668e644
+  parameter_id: 0x78d7d113
+}
+function {
+  id: 0x96ac3bba
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2e8d5f05
+  parameter_id: 0x239e18b5
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x96b01a1d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2cc3e4c8
+}
+function {
+  id: 0x96b04c18
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2f6e7045
+  parameter_id: 0x39b6e021
+  parameter_id: 0x37b51a1e
+  parameter_id: 0x01783b47
+}
+function {
+  id: 0x96b0de71
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2cc0f57b
+}
+function {
+  id: 0x96b0fa3b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2cc06451
+}
+function {
+  id: 0x96b427e5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2cd31328
+}
+function {
+  id: 0x96b71ffd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2efe8065
+  parameter_id: 0x221732c5
+}
+function {
+  id: 0x96b8906b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2efe8065
+  parameter_id: 0x221732c5
+  parameter_id: 0x384c5795
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x96b9a6c2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2cac4c27
+  parameter_id: 0x0495b93a
+}
+function {
+  id: 0x96bbe934
+  return_type_id: 0x0de7ba15
+  parameter_id: 0x3107960e
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x96bdc834
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25782362
+  parameter_id: 0x914dbfdc
+  parameter_id: 0x914dbfdc
+  parameter_id: 0x914dbfdc
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x914dbfdc
+}
+function {
+  id: 0x96c3b4e1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x221732c5
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x96c486df
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2e94a1e1
+  parameter_id: 0x33756485
+  parameter_id: 0xbdd18903
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+  parameter_id: 0x6720d32f
+  parameter_id: 0xf1a6dfed
+  parameter_id: 0x379d63b0
+}
+function {
+  id: 0x96c4a07c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2e94a1e1
+  parameter_id: 0x33756485
+  parameter_id: 0xbdd18903
+  parameter_id: 0xf435685e
+  parameter_id: 0x6720d32f
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x96c4a3ba
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2e94a1e1
+  parameter_id: 0x33756485
+  parameter_id: 0xbdd18903
+  parameter_id: 0xf435685e
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x96c4b63c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2cfb7c19
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x38fa32ef
+  parameter_id: 0x348f9528
+}
+function {
+  id: 0x96c7ba5c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2efe8065
+  parameter_id: 0x384c5795
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x96c905b2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2cac4c27
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x96c908d1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2efe8065
+  parameter_id: 0x3d92f9c7
+}
+function {
+  id: 0x96cb8de9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2e025034
+  parameter_id: 0x33756485
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x96cea8dc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2e2c982d
+  parameter_id: 0x315b7e01
+}
+function {
+  id: 0x96d06ac6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2efe8065
+  parameter_id: 0x384c5795
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x96d126d3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x249959de
+  parameter_id: 0x914dbfdc
+  parameter_id: 0xc93e017b
+  parameter_id: 0x384f7d7c
+  parameter_id: 0x295c7202
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0b553223
+}
+function {
+  id: 0x96d1d6be
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2d44d644
+}
+function {
+  id: 0x96d423b4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2dab4556
+  parameter_id: 0x00c72527
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x96d5902b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2e2c982d
+  parameter_id: 0x3186d48b
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x96d8b66a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2cea8346
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x96da7f62
+  return_type_id: 0xf435685e
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x96daa13b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2cc0f57b
+  parameter_id: 0x1e820193
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x96dad64f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2936263d
+  parameter_id: 0x4585663f
+  parameter_id: 0x06ee9840
+  parameter_id: 0x076b08a6
+  parameter_id: 0x3e75499e
+  parameter_id: 0x3b43b730
+  parameter_id: 0x36ffb4de
+}
+function {
+  id: 0x96dda6f2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2ef43f67
+  parameter_id: 0x3ada60b4
+  parameter_id: 0x2c8e1aaa
+}
+function {
+  id: 0x96e2d7ed
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2e8d5f05
+  parameter_id: 0x33756485
+  parameter_id: 0x32da4522
+}
+function {
+  id: 0x96e5c711
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2e8d5f05
+  parameter_id: 0x33756485
+  parameter_id: 0x2e8d5f05
+  parameter_id: 0x01336e66
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x96e81ec5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2e94a1e1
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x96e899a8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2e8d5f05
+  parameter_id: 0x33756485
+  parameter_id: 0x1be353bc
+}
+function {
+  id: 0x96e8ddfa
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2e8d5f05
+  parameter_id: 0x32da4522
+}
+function {
+  id: 0x96e9d652
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2f5fce77
+  parameter_id: 0x2fb1b820
+}
+function {
+  id: 0x96ea327a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2dab4556
+}
+function {
+  id: 0x96ea6f8b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2f5fce77
+  parameter_id: 0x2f5fce77
+}
+function {
+  id: 0x96ec0dda
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2f0e69de
+  parameter_id: 0x2bdd20a6
+}
+function {
+  id: 0x96eeaa13
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2b8f13b3
+  parameter_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x96ef964a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2e8d5f05
+  parameter_id: 0x33756485
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x96efcd05
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2e8d5f05
+  parameter_id: 0x33756485
+  parameter_id: 0x054f691a
+  parameter_id: 0x3fe8ca70
+}
+function {
+  id: 0x96f296a4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2efe8065
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x96fd9031
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2edfae47
+  parameter_id: 0x32a623d7
+}
+function {
+  id: 0x97024092
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2b8a97e8
+  parameter_id: 0x1b36c7a2
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x97028d47
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2b8a97e8
+  parameter_id: 0x1b36c7a2
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9702dcaf
+  return_type_id: 0x2668e644
+  parameter_id: 0x347303b4
+}
+function {
+  id: 0x9705978c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x29a77f06
+  parameter_id: 0x3e10b518
+  parameter_id: 0x5d8155a5
+  parameter_id: 0xe5f7924d
+  parameter_id: 0x78f4e574
+}
+function {
+  id: 0x970921d5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x29c600bb
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x970deb9a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2a79f2e5
+  parameter_id: 0x0f78474f
+  parameter_id: 0xba5444a6
+}
+function {
+  id: 0x970f20f0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25ffeea5
+  parameter_id: 0xfc0e1dbd
+}
+function {
+  id: 0x970f7fe5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2b16c036
+  parameter_id: 0x1ba902d8
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x9710bae0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2b8f13b3
+  parameter_id: 0x1ce748dd
+}
+function {
+  id: 0x9719ad86
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2a653aa6
+}
+function {
+  id: 0x971c0246
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2a4c6b85
+  parameter_id: 0x0258f96e
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2dcd339f
+}
+function {
+  id: 0x971d831a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2b8f13b3
+  parameter_id: 0x1bf16028
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x972074cd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2b16c036
+  parameter_id: 0x1ba902d8
+  parameter_id: 0x2e0f9112
+}
+function {
+  id: 0x97237e8b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2a79f2e5
+  parameter_id: 0x0f78474f
+}
+function {
+  id: 0x97258bf7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2efe8065
+  parameter_id: 0x4585663f
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x97287db7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x290604c6
+  parameter_id: 0x3a47ea7a
+}
+function {
+  id: 0x972bd7f2
+  return_type_id: 0x11e6864c
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x11e6864c
+}
+function {
+  id: 0x9732df25
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2cdbb77a
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9735a176
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2e8d5f05
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x97374fe9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2a52de6b
+  parameter_id: 0x0b27dc43
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x973837f7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2efe8065
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x973a41ee
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2b8f13b3
+  parameter_id: 0x16598b41
+}
+function {
+  id: 0x973d5c81
+  return_type_id: 0x6720d32f
+  parameter_id: 0x29a77f06
+  parameter_id: 0x35181bef
+}
+function {
+  id: 0x973d6744
+  return_type_id: 0x6720d32f
+  parameter_id: 0x29c600bb
+  parameter_id: 0x33011141
+}
+function {
+  id: 0x973fc952
+  return_type_id: 0xf435685e
+}
+function {
+  id: 0x9741f230
+  return_type_id: 0x6720d32f
+  parameter_id: 0x24d65b62
+  parameter_id: 0xfd21f1cc
+}
+function {
+  id: 0x97455322
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2b16c036
+}
+function {
+  id: 0x9745ba54
+  return_type_id: 0x6720d32f
+  parameter_id: 0x28bd8ba6
+  parameter_id: 0x391f15ea
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0x97461a3a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x29a77f06
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x97494660
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2efe8065
+  parameter_id: 0x5d8155a5
+}
+function {
+  id: 0x974dd2c8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x28bd8ba6
+  parameter_id: 0x391f15ea
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x975a548f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2f3288e0
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x975db23f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2b754442
+}
+function {
+  id: 0x976222f8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x281af600
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0x976590a4
+  return_type_id: 0x2e0f9112
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9768d538
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2953a412
+  parameter_id: 0x26847863
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x33756485
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0xc66085ec
+}
+function {
+  id: 0x9768f895
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2ba06eea
+}
+function {
+  id: 0x976be0ec
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2dde023d
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x976cd0e7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x28f4ee78
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x977041a6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x29c600bb
+  parameter_id: 0x295c7202
+  parameter_id: 0x914dbfdc
+}
+function {
+  id: 0x9776f057
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2fb647c0
+  parameter_id: 0x4585663f
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x977bcf07
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2bc93f35
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x977e98cb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2fb647c0
+  parameter_id: 0x4585663f
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x977ee81f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2a4c6b85
+  parameter_id: 0x1b44744f
+}
+function {
+  id: 0x977feed8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2821daec
+  parameter_id: 0x3dded319
+}
+function {
+  id: 0x97824d5d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x249959de
+  parameter_id: 0xc93e017b
+}
+function {
+  id: 0x978438bd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x28136e4b
+}
+function {
+  id: 0x978bc97a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x29a77f06
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9792aa8a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2bfcac2d
+  parameter_id: 0x3f0185ef
+  parameter_id: 0x4585663f
+  parameter_id: 0x00c72527
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x979576c8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2b8f13b3
+  parameter_id: 0x39cc14ac
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x97969509
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2859d899
+}
+function {
+  id: 0x9799d2fd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x29c600bb
+  parameter_id: 0x1a2c7f0e
+}
+function {
+  id: 0x979f6a1e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2b21a696
+  parameter_id: 0x35f82503
+}
+function {
+  id: 0x97a3c07a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2efe8065
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x97a9f709
+  return_type_id: 0xf435685e
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x97af62a4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25ffeea5
+  parameter_id: 0xd41e888f
+}
+function {
+  id: 0x97b2b8d0
+  return_type_id: 0x3e10b518
+  parameter_id: 0x17dabdcd
+}
+function {
+  id: 0x97b34018
+  return_type_id: 0x6720d32f
+  parameter_id: 0x25782362
+  parameter_id: 0xdb6afbca
+}
+function {
+  id: 0x97b9c78c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2a9beac2
+  parameter_id: 0x21207103
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x97bdb4b8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2b8a97e8
+  parameter_id: 0x37fc9b61
+}
+function {
+  id: 0x97c10137
+  return_type_id: 0x0611572c
+  parameter_id: 0x3eb4196d
+}
+function {
+  id: 0x97c2ea4f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x29082583
+}
+function {
+  id: 0x97c31ac6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x29a77f06
+  parameter_id: 0x0c5e7fed
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x97c741b9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x291e8a5b
+}
+function {
+  id: 0x97cd6aa0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2936263d
+}
+function {
+  id: 0x97ce5a08
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2aa0b9bb
+  parameter_id: 0x38d23361
+  parameter_id: 0x18bd6530
+  parameter_id: 0xff4bed97
+  parameter_id: 0x38d23361
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x97ce6b93
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2aa0b9bb
+  parameter_id: 0x38d23361
+  parameter_id: 0x18bd6530
+  parameter_id: 0xff4bed97
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x97d184cf
+  return_type_id: 0x6720d32f
+  parameter_id: 0x29459f81
+}
+function {
+  id: 0x97d2120d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x29a77f06
+  parameter_id: 0x0c5e7fed
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x97d228cf
+  return_type_id: 0x6720d32f
+  parameter_id: 0x29a77f06
+  parameter_id: 0x0c5e7fed
+  parameter_id: 0x29b77961
+}
+function {
+  id: 0x97d2b77c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x29a77f06
+  parameter_id: 0x0c5e7fed
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x97d7ffaf
+  return_type_id: 0x6720d32f
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x97d84511
+  return_type_id: 0x6720d32f
+  parameter_id: 0x29a77f06
+  parameter_id: 0x0c5e7fed
+}
+function {
+  id: 0x97df7018
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2a4c6b85
+  parameter_id: 0x30b384f8
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0x97e0f111
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2aa0b9bb
+  parameter_id: 0x33756485
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x97e3378a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2aa0b9bb
+  parameter_id: 0x33756485
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x97e93cee
+  return_type_id: 0x6720d32f
+  parameter_id: 0x29a77f06
+}
+function {
+  id: 0x97ea6000
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2821daec
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x97f16301
+  return_type_id: 0x6720d32f
+  parameter_id: 0x29c600bb
+}
+function {
+  id: 0x97f2793d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2a9beac2
+  parameter_id: 0x3518289c
+}
+function {
+  id: 0x97f313ee
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2a468f3d
+  parameter_id: 0x391f15ea
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x97f44765
+  return_type_id: 0x6720d32f
+  parameter_id: 0x29d29128
+}
+function {
+  id: 0x97f5d38a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x2966bf52
+  parameter_id: 0x0b27dc43
+}
+function {
+  id: 0x97fa70fd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x29d29128
+  parameter_id: 0x038de60c
+}
+function {
+  id: 0x97feb011
+  return_type_id: 0x6720d32f
+  parameter_id: 0x29a77f06
+  parameter_id: 0x0c5e7fed
+  parameter_id: 0x9bd401b6
+}
+function {
+  id: 0x98006d18
+  return_type_id: 0x6720d32f
+  parameter_id: 0x160238dd
+}
+function {
+  id: 0x98046a12
+  return_type_id: 0x6720d32f
+  parameter_id: 0x106029c6
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x98058ffc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x14528516
+  parameter_id: 0x2712b6f9
+  parameter_id: 0x361d366b
+}
+function {
+  id: 0x980808b1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x14528516
+  parameter_id: 0x2712b6f9
+}
+function {
+  id: 0x98099e2c
+  return_type_id: 0x3e10b518
+  parameter_id: 0x2936263d
+}
+function {
+  id: 0x980bf22a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x126add1c
+  parameter_id: 0x4585663f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x980c41f0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x126add1c
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x980cd217
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1042c9d1
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9812e29b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x14528516
+  parameter_id: 0x2712b6f9
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x98135766
+  return_type_id: 0x6720d32f
+  parameter_id: 0x14528516
+  parameter_id: 0x2712b6f9
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x981446df
+  return_type_id: 0x6720d32f
+  parameter_id: 0x14e7280b
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+  parameter_id: 0x914dbfdc
+  parameter_id: 0x3f0185ef
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9814492e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x14e7280b
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+  parameter_id: 0x914dbfdc
+  parameter_id: 0x00c72527
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x98151a23
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1042c9d1
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x98160ff9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x14e7280b
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x9817938b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x165dc292
+}
+function {
+  id: 0x9817a683
+  return_type_id: 0x6720d32f
+  parameter_id: 0x120540d1
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x98181f74
+  return_type_id: 0x6720d32f
+  parameter_id: 0x14b9453b
+  parameter_id: 0x2dab4556
+}
+function {
+  id: 0x9819549f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x14b9453b
+  parameter_id: 0x2dab4556
+  parameter_id: 0x052fac00
+}
+function {
+  id: 0x98196cac
+  return_type_id: 0x6720d32f
+  parameter_id: 0x16f22102
+  parameter_id: 0x08fa9aab
+  parameter_id: 0x1bb6a471
+}
+function {
+  id: 0x9819e663
+  return_type_id: 0x6720d32f
+  parameter_id: 0x175195e4
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x981a6720
+  return_type_id: 0x6720d32f
+  parameter_id: 0x15a2b6b2
+  parameter_id: 0x3f72018a
+  parameter_id: 0x3992f3fa
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x171c27b5
+  parameter_id: 0x38d23361
+  parameter_id: 0x2d6bb6d0
+}
+function {
+  id: 0x981db4ff
+  return_type_id: 0x6720d32f
+  parameter_id: 0x106029c6
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x981e2b3a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x106029c6
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0xe61f67ea
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x981f2bf6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x15f20052
+  parameter_id: 0x38d23361
+}
+function {
+  id: 0x981f5671
+  return_type_id: 0x6720d32f
+  parameter_id: 0x14b9453b
+  parameter_id: 0x2dab4556
+  parameter_id: 0x1d2416d3
+}
+function {
+  id: 0x982246a7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x153f0b1a
+  parameter_id: 0x3f0185ef
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9823bcf6
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0xfc0e1dbd
+}
+function {
+  id: 0x98249b1d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x16239d0c
+  parameter_id: 0x0b27dc43
+}
+function {
+  id: 0x982965be
+  return_type_id: 0x6720d32f
+  parameter_id: 0x14b9453b
+  parameter_id: 0x21e074e8
+  parameter_id: 0x02fdb32f
+  parameter_id: 0x3a583251
+}
+function {
+  id: 0x982c3d56
+  return_type_id: 0x6720d32f
+  parameter_id: 0x15c389f6
+  parameter_id: 0x384c5795
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x982f20ff
+  return_type_id: 0x6720d32f
+  parameter_id: 0x12e75923
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x982fb6c1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x12e75923
+  parameter_id: 0x4585663f
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x98341343
+  return_type_id: 0x6720d32f
+  parameter_id: 0x15fc2a9e
+  parameter_id: 0x33756485
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x983c5682
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1dc3d428
+  parameter_id: 0xb3e7bac9
+  parameter_id: 0x0d1ca42d
+  parameter_id: 0x2669d715
+  parameter_id: 0x030a4c62
+}
+function {
+  id: 0x98400d5f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x16886f92
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9841929f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x11e6864c
+  parameter_id: 0x6720d32f
+  parameter_id: 0x914dbfdc
+}
+function {
+  id: 0x9841f322
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x6720d32f
+  parameter_id: 0x11c8e8bf
+}
+function {
+  id: 0x9841feba
+  return_type_id: 0x6720d32f
+  parameter_id: 0x17047654
+}
+function {
+  id: 0x984286d0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x6720d32f
+  parameter_id: 0x1e0822f2
+  parameter_id: 0x2122dbcf
+  parameter_id: 0x052fac00
+}
+function {
+  id: 0x9842d9a4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x66f6fc33
+}
+function {
+  id: 0x9842e22e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x17047654
+  parameter_id: 0x00c72527
+}
+function {
+  id: 0x9842f0d6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x6720d32f
+  parameter_id: 0x1cdba504
+  parameter_id: 0x11c9e617
+}
+function {
+  id: 0x9843d7a9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x11e6864c
+  parameter_id: 0x6720d32f
+  parameter_id: 0x914dbfdc
+  parameter_id: 0x914dbfdc
+}
+function {
+  id: 0x98458118
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x98458c80
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0036629d
+}
+function {
+  id: 0x98470a0f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0a1edf98
+  parameter_id: 0x03283c19
+}
+function {
+  id: 0x984733d8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0acb01fe
+}
+function {
+  id: 0x984b1567
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0xfc0e1dbd
+  parameter_id: 0x0599eccf
+  parameter_id: 0x0cbf60eb
+}
+function {
+  id: 0x984b7ce0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x14abdd00
+  parameter_id: 0x33756485
+  parameter_id: 0xbdd18903
+  parameter_id: 0xf435685e
+  parameter_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x984c9324
+  return_type_id: 0x6720d32f
+  parameter_id: 0x17535b44
+  parameter_id: 0x064d6086
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0x984cbfc3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x11e6864c
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x984dab21
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x6720d32f
+  parameter_id: 0x20054a7b
+  parameter_id: 0x0adae251
+}
+function {
+  id: 0x984fafbd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1769c4d8
+  parameter_id: 0x054f691a
+}
+function {
+  id: 0x98508ee0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x14b9453b
+  parameter_id: 0x3f8f206d
+}
+function {
+  id: 0x985410df
+  return_type_id: 0x6720d32f
+  parameter_id: 0x156a41de
+  parameter_id: 0x2cdbb77a
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x985435fe
+  return_type_id: 0x6720d32f
+  parameter_id: 0x17535b44
+}
+function {
+  id: 0x98558c5c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x156a41de
+  parameter_id: 0x2cdbb77a
+  parameter_id: 0xf435685e
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x98573499
+  return_type_id: 0x6720d32f
+  parameter_id: 0x156a41de
+  parameter_id: 0x2351f077
+}
+function {
+  id: 0x985d3db9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b2ca025
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+  parameter_id: 0x24c39c69
+  parameter_id: 0x1cded491
+}
+function {
+  id: 0x985d46f1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x985d4e58
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9860482f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1582ab06
+  parameter_id: 0x20007040
+}
+function {
+  id: 0x9865c1f0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x11e6864c
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9865d601
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1e9745d3
+  parameter_id: 0x914dbfdc
+  parameter_id: 0x1e9745d3
+  parameter_id: 0x914dbfdc
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x9867350b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1e9745d3
+  parameter_id: 0x914dbfdc
+  parameter_id: 0x1cc6bdca
+}
+function {
+  id: 0x98683c28
+  return_type_id: 0x6720d32f
+  parameter_id: 0x17a37c1c
+}
+function {
+  id: 0x986a2160
+  return_type_id: 0x6720d32f
+  parameter_id: 0x15a30023
+  parameter_id: 0x24d8c7ab
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x986a45dd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x11e6864c
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x986ccce1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1582ab06
+  parameter_id: 0x2170d06d
+  parameter_id: 0x2170d06d
+  parameter_id: 0x469ea43a
+}
+function {
+  id: 0x986e7125
+  return_type_id: 0x6720d32f
+  parameter_id: 0x11e6864c
+  parameter_id: 0x6720d32f
+  parameter_id: 0x2ec35650
+}
+function {
+  id: 0x987085c9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf1a6dfed
+  parameter_id: 0x6720d32f
+  parameter_id: 0x1d5bae2a
+  parameter_id: 0x6720d32f
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x98716c4f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf1a6dfed
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0b30ee00
+}
+function {
+  id: 0x98731419
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+  parameter_id: 0x379d63b0
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x987349b3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x118d97cb
+  parameter_id: 0x6720d32f
+  parameter_id: 0x377127f9
+  parameter_id: 0x6720d32f
+  parameter_id: 0x33756485
+  parameter_id: 0x0d7d7298
+}
+function {
+  id: 0x98792c3d
+  return_type_id: 0x3e10b518
+  parameter_id: 0x28f4ee78
+}
+function {
+  id: 0x987c09c4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x11e6864c
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x987c7e77
+  return_type_id: 0x6720d32f
+  parameter_id: 0x118d97cb
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x987d8bf3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x17dabdcd
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x987e6939
+  return_type_id: 0x6720d32f
+  parameter_id: 0x17fa285b
+}
+function {
+  id: 0x987f99ef
+  return_type_id: 0x01f1fcec
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x987fb987
+  return_type_id: 0x6720d32f
+  parameter_id: 0x17dabdcd
+  parameter_id: 0x0258f96e
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x9882219f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x106029c6
+  parameter_id: 0x4585663f
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x98850898
+  return_type_id: 0x6720d32f
+  parameter_id: 0x100a15ee
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x0683618a
+}
+function {
+  id: 0x98851295
+  return_type_id: 0x6720d32f
+  parameter_id: 0x100a15ee
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x98853e56
+  return_type_id: 0x6720d32f
+  parameter_id: 0x100a15ee
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x0b30e1c5
+}
+function {
+  id: 0x98860e2e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0xc9082b19
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+  parameter_id: 0x0cbf60eb
+  parameter_id: 0x379d63b0
+}
+function {
+  id: 0x988644c3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1042c9d1
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9886ff64
+  return_type_id: 0x6720d32f
+  parameter_id: 0x14b9453b
+  parameter_id: 0x0a134144
+}
+function {
+  id: 0x988786ac
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1dc3d428
+  parameter_id: 0x914dbfdc
+  parameter_id: 0xc9082b19
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0x98878fd8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1dc3d428
+  parameter_id: 0x914dbfdc
+  parameter_id: 0xc9082b19
+  parameter_id: 0x391f15ea
+  parameter_id: 0x295c7202
+  parameter_id: 0xc9082b19
+  parameter_id: 0x1d44326e
+}
+function {
+  id: 0x9887b4ee
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1dc3d428
+  parameter_id: 0x914dbfdc
+  parameter_id: 0xc9082b19
+  parameter_id: 0x391f15ea
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x98881e2d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x17dabdcd
+  parameter_id: 0x3f949c69
+}
+function {
+  id: 0x9888d1ad
+  return_type_id: 0x6720d32f
+  parameter_id: 0x10617cac
+  parameter_id: 0x4585663f
+  parameter_id: 0x19e0c64c
+}
+function {
+  id: 0x9889b739
+  return_type_id: 0x6720d32f
+  parameter_id: 0x10134e31
+  parameter_id: 0x4585663f
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x988b4266
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0xc93e017b
+}
+function {
+  id: 0x988f2c1b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x100a15ee
+  parameter_id: 0x4585663f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x988fda5f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x156a41de
+  parameter_id: 0x156a41de
+}
+function {
+  id: 0x988fe934
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0xc9082b19
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x98913319
+  return_type_id: 0x6720d32f
+  parameter_id: 0x15fc2a9e
+  parameter_id: 0x1bb6a471
+}
+function {
+  id: 0x98918d07
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18e64f74
+  parameter_id: 0xc9082b19
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9892253b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x10134e31
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x98929e65
+  return_type_id: 0x6720d32f
+  parameter_id: 0x100a15ee
+  parameter_id: 0x4585663f
+  parameter_id: 0x1bb6a471
+}
+function {
+  id: 0x98930d6b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x17fa285b
+  parameter_id: 0x3f0185ef
+  parameter_id: 0x4585663f
+  parameter_id: 0x00c72527
+}
+function {
+  id: 0x98930e77
+  return_type_id: 0x6720d32f
+  parameter_id: 0x17fa285b
+  parameter_id: 0x3f0185ef
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x98945a53
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1285100d
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x989473cc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x100a15ee
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x98948325
+  return_type_id: 0x6720d32f
+  parameter_id: 0x14518028
+}
+function {
+  id: 0x98950a48
+  return_type_id: 0x6720d32f
+  parameter_id: 0x15ee5719
+  parameter_id: 0x1df06cce
+  parameter_id: 0x6720d32f
+  parameter_id: 0x1df06cce
+  parameter_id: 0x0dec2294
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x98953d35
+  return_type_id: 0x6720d32f
+  parameter_id: 0x17535b44
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x98957f6e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x15ee5719
+  parameter_id: 0x1df06cce
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9896b919
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1042c9d1
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9897259a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1042c9d1
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x98984954
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1462a9ec
+}
+function {
+  id: 0x98992525
+  return_type_id: 0x6720d32f
+  parameter_id: 0x16f22102
+  parameter_id: 0x29082583
+  parameter_id: 0x08fa9aab
+  parameter_id: 0xd41e888f
+}
+function {
+  id: 0x989957cd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18f56498
+  parameter_id: 0xc9082b19
+  parameter_id: 0x0335a07f
+}
+function {
+  id: 0x98a22e08
+  return_type_id: 0x6720d32f
+  parameter_id: 0x15f20052
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x98aacbd0
+  return_type_id: 0x0de4c6b1
+}
+function {
+  id: 0x98aba01a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x12b82135
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x98abd8af
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18f56498
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x98aeb261
+  return_type_id: 0x6720d32f
+  parameter_id: 0x14b9453b
+}
+function {
+  id: 0x98b3c900
+  return_type_id: 0x6720d32f
+  parameter_id: 0x10a78bb8
+  parameter_id: 0x4585663f
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x98b9292d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x14e7280b
+}
+function {
+  id: 0x98b9d8c5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x98ba0cd1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x14b9453b
+  parameter_id: 0x052fac00
+}
+function {
+  id: 0x98bb99ce
+  return_type_id: 0x6720d32f
+  parameter_id: 0x17dabdcd
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x98bbec16
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1dce0fdd
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x98bcd137
+  return_type_id: 0x6720d32f
+  parameter_id: 0x14b9453b
+  parameter_id: 0x04f728c1
+  parameter_id: 0x04f728c1
+  parameter_id: 0x203f3220
+  parameter_id: 0x0b0dddba
+}
+function {
+  id: 0x98c44e7d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1769c4d8
+  parameter_id: 0x27b71910
+}
+function {
+  id: 0x98c45ef6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x17a37c1c
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+  parameter_id: 0xd81670c8
+  parameter_id: 0x914dbfdc
+}
+function {
+  id: 0x98c542aa
+  return_type_id: 0x6720d32f
+  parameter_id: 0x17a37c1c
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+  parameter_id: 0x914dbfdc
+  parameter_id: 0x791165e9
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x98c5cae2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x17a37c1c
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+  parameter_id: 0xbdd18903
+  parameter_id: 0x92233392
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x98c5e4c7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x17a37c1c
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+  parameter_id: 0xbdd18903
+  parameter_id: 0x295c7202
+  parameter_id: 0xc9082b19
+  parameter_id: 0x38d23361
+  parameter_id: 0x38d23361
+}
+function {
+  id: 0x98c71afc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x17a37c1c
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x98c74d34
+  return_type_id: 0x6720d32f
+  parameter_id: 0x17a37c1c
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+  parameter_id: 0x15f235fd
+}
+function {
+  id: 0x98c78004
+  return_type_id: 0x6720d32f
+  parameter_id: 0x17a37c1c
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+  parameter_id: 0x26be1aee
+}
+function {
+  id: 0x98c7b724
+  return_type_id: 0x09e10e1f
+  parameter_id: 0x09e10e1f
+}
+function {
+  id: 0x98c7bf8d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x17a37c1c
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x98da7358
+  return_type_id: 0x6720d32f
+  parameter_id: 0x156a41de
+}
+function {
+  id: 0x98de7695
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x98df6080
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x98e049ee
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1582ab06
+}
+function {
+  id: 0x98e25911
+  return_type_id: 0x6720d32f
+  parameter_id: 0x15a30023
+  parameter_id: 0x06835e9c
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x98e450c7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x156a41de
+  parameter_id: 0x0f88e7f2
+}
+function {
+  id: 0x98e48f72
+  return_type_id: 0x6720d32f
+  parameter_id: 0x17047654
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x98e6a470
+  return_type_id: 0x6720d32f
+  parameter_id: 0x14b9453b
+  parameter_id: 0x1205844a
+}
+function {
+  id: 0x98e78094
+  return_type_id: 0x6720d32f
+  parameter_id: 0x19c40476
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x98e82327
+  return_type_id: 0x6720d32f
+  parameter_id: 0x15a30023
+}
+function {
+  id: 0x98e93799
+  return_type_id: 0x6720d32f
+  parameter_id: 0x13d55fea
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x98ead61c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1aeeade4
+  parameter_id: 0xf435685e
+  parameter_id: 0x052fac00
+}
+function {
+  id: 0x98eb9df7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1aeeade4
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x98ecb6ff
+  return_type_id: 0x6720d32f
+  parameter_id: 0x156a41de
+  parameter_id: 0x0f88e7f2
+  parameter_id: 0x2cdbb77a
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x98ee7087
+  return_type_id: 0x6720d32f
+  parameter_id: 0x16166482
+  parameter_id: 0x3ac2a209
+}
+function {
+  id: 0x98ef5724
+  return_type_id: 0x6720d32f
+  parameter_id: 0x11e6864c
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x98f00152
+  return_type_id: 0x6720d32f
+  parameter_id: 0x15c389f6
+}
+function {
+  id: 0x98f08213
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1ce51dde
+  parameter_id: 0x914dbfdc
+  parameter_id: 0x3f0185ef
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x98f1c24f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x165dc292
+  parameter_id: 0x39947122
+}
+function {
+  id: 0x98fa4494
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1582ab06
+  parameter_id: 0x06835e9c
+}
+function {
+  id: 0x98fb76e9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x15ee5719
+}
+function {
+  id: 0x98fc633b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x15f20052
+}
+function {
+  id: 0x98ff2dd7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x11e6864c
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x36ffb4de
+}
+function {
+  id: 0x98ff73bb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1ce51dde
+  parameter_id: 0x914dbfdc
+  parameter_id: 0x00c72527
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x99001ef9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x10134e31
+  parameter_id: 0x210b9681
+}
+function {
+  id: 0x99002deb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1330389b
+  parameter_id: 0x1330389b
+}
+function {
+  id: 0x9900db85
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1200e2aa
+}
+function {
+  id: 0x99011cda
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1285100d
+  parameter_id: 0x0e1f07df
+  parameter_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9901b31b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x120540d1
+}
+function {
+  id: 0x9904e4cb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x10134e31
+  parameter_id: 0x20351a02
+}
+function {
+  id: 0x9904e8fd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x11b32828
+  parameter_id: 0x39c6a784
+  parameter_id: 0x391f15ea
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9906a4a5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x12191e2a
+}
+function {
+  id: 0x9908ce5a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x347303b4
+}
+function {
+  id: 0x990a74b4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x120540d1
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x990a861c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x10134e31
+  parameter_id: 0x246dc7d4
+  parameter_id: 0x7e09d913
+  parameter_id: 0x213e084f
+  parameter_id: 0x1c3dbe5a
+  parameter_id: 0x084d74bf
+  parameter_id: 0x00a43052
+  parameter_id: 0x27459bea
+  parameter_id: 0x0cf0f1be
+}
+function {
+  id: 0x990a9dcc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x11b32828
+  parameter_id: 0x39c6a784
+  parameter_id: 0x054f691a
+  parameter_id: 0x391f15ea
+  parameter_id: 0x6720d32f
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0x99132caa
+  return_type_id: 0x6720d32f
+  parameter_id: 0x11b57133
+  parameter_id: 0x3e10b518
+  parameter_id: 0x1b44744f
+}
+function {
+  id: 0x99168ad9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x106029c6
+  parameter_id: 0x2cdbb77a
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x99169bf2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1259e377
+}
+function {
+  id: 0x9917165a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x106029c6
+  parameter_id: 0x2cdbb77a
+  parameter_id: 0xf435685e
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x99173dd0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x120540d1
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x120540d1
+}
+function {
+  id: 0x991753c2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x11e6864c
+  parameter_id: 0x3b845f97
+}
+function {
+  id: 0x991a5468
+  return_type_id: 0x6720d32f
+  parameter_id: 0x126add1c
+}
+function {
+  id: 0x99214080
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x9927b218
+  return_type_id: 0x6720d32f
+  parameter_id: 0x104d069a
+  parameter_id: 0x295c7202
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x992841ea
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x3c01aef6
+  parameter_id: 0x051414e1
+}
+function {
+  id: 0x9928799a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x3806a5e7
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x992e9a67
+  return_type_id: 0x6720d32f
+  parameter_id: 0x106029c6
+  parameter_id: 0x2cdbb77a
+  parameter_id: 0x1bc0f2e1
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x992e9bfb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x106029c6
+  parameter_id: 0x2cdbb77a
+  parameter_id: 0x1bc0f2e1
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9930cdbf
+  return_type_id: 0x6720d32f
+  parameter_id: 0x12c0ba43
+}
+function {
+  id: 0x99314acb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x14b9453b
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9932312d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x14b9453b
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x99324fb7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x106029c6
+  parameter_id: 0x2cdbb77a
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x99337ac6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x14b9453b
+  parameter_id: 0x6720d32f
+  parameter_id: 0x052fac00
+}
+function {
+  id: 0x9933d7b8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1042c9d1
+  parameter_id: 0x28e1b8de
+}
+function {
+  id: 0x99344ba0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x10134e31
+  parameter_id: 0x2c2f5a48
+  parameter_id: 0x0258f96e
+  parameter_id: 0x1582ab06
+  parameter_id: 0x1fc1dca8
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x99361691
+  return_type_id: 0x6720d32f
+  parameter_id: 0x11e6864c
+  parameter_id: 0x33d50b40
+}
+function {
+  id: 0x9936d341
+  return_type_id: 0x6720d32f
+  parameter_id: 0x104d069a
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x9939118b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x126ba7e3
+  parameter_id: 0x0b27dc43
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x99393567
+  return_type_id: 0x6720d32f
+  parameter_id: 0x12e75923
+}
+function {
+  id: 0x993cb213
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x396c11e9
+}
+function {
+  id: 0x993cd7c7
+  return_type_id: 0x2669d715
+  parameter_id: 0x0de4c6b1
+  parameter_id: 0x2669d715
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x993db742
+  return_type_id: 0x6720d32f
+  parameter_id: 0x13035e8b
+  parameter_id: 0x190750ad
+  parameter_id: 0x6720d32f
+  parameter_id: 0x15ae72ad
+}
+function {
+  id: 0x993de1fb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x13035e8b
+  parameter_id: 0x190750ad
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x993e21a1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x14b9453b
+  parameter_id: 0x6720d32f
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x993e825c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x14b9453b
+  parameter_id: 0x6720d32f
+  parameter_id: 0x33756485
+  parameter_id: 0x18bd6530
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x993ff64f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x11e6864c
+  parameter_id: 0x31ad3cde
+}
+function {
+  id: 0x9940348d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x13035e8b
+}
+function {
+  id: 0x99413a22
+  return_type_id: 0x6720d32f
+  parameter_id: 0x11c449ec
+  parameter_id: 0x2c32dd96
+}
+function {
+  id: 0x99428d89
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1042c9d1
+  parameter_id: 0x35082291
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x99454d9c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x172847a8
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9946f014
+  return_type_id: 0x6720d32f
+  parameter_id: 0x156a41de
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x994ba444
+  return_type_id: 0x6720d32f
+  parameter_id: 0x106029c6
+  parameter_id: 0x34d3469d
+}
+function {
+  id: 0x994c33fc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1333434c
+}
+function {
+  id: 0x994ced09
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1330389b
+}
+function {
+  id: 0x99516809
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x212a866f
+  parameter_id: 0x33011141
+}
+function {
+  id: 0x99526c70
+  return_type_id: 0x6720d32f
+  parameter_id: 0x106029c6
+  parameter_id: 0x34d3469d
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9953f0f3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x106029c6
+  parameter_id: 0x34d3469d
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x995827da
+  return_type_id: 0x6720d32f
+  parameter_id: 0x13035e8b
+  parameter_id: 0x054f691a
+  parameter_id: 0x349b6850
+  parameter_id: 0x0277bf8a
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x99582ff3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x13035e8b
+  parameter_id: 0x054f691a
+  parameter_id: 0x349b6850
+}
+function {
+  id: 0x995e6a9d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x10617cac
+  parameter_id: 0x31b5a66f
+}
+function {
+  id: 0x996059c4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x17dabdcd
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9960e077
+  return_type_id: 0x6720d32f
+  parameter_id: 0x15f20052
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x99621666
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1259e377
+  parameter_id: 0x1d44326e
+  parameter_id: 0x054f691a
+  parameter_id: 0x32a623d7
+  parameter_id: 0x11d941b8
+  parameter_id: 0x11d941b8
+  parameter_id: 0xb3e7bac9
+  parameter_id: 0xb3e7bac9
+  parameter_id: 0xe276adef
+  parameter_id: 0x7584e7da
+  parameter_id: 0x7584e7da
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x99666596
+  return_type_id: 0x6720d32f
+  parameter_id: 0x117a8adb
+  parameter_id: 0x2e0903c3
+}
+function {
+  id: 0x99685c26
+  return_type_id: 0x6720d32f
+  parameter_id: 0x126add1c
+  parameter_id: 0x18bd6530
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x99698c57
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1042c9d1
+  parameter_id: 0x3dad9aa1
+  parameter_id: 0x3dad9aa1
+}
+function {
+  id: 0x996a2e1f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x12e6ffae
+  parameter_id: 0x175195e4
+  parameter_id: 0x38d23361
+}
+function {
+  id: 0x996b2409
+  return_type_id: 0x6720d32f
+  parameter_id: 0x120540d1
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x120540d1
+}
+function {
+  id: 0x996e5bee
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1aee9939
+  parameter_id: 0x9547a3da
+}
+function {
+  id: 0x996ed754
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d4da256
+  parameter_id: 0xeb0f6de6
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x99780c28
+  return_type_id: 0xf435685e
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0x997c1c57
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1291c430
+  parameter_id: 0x16239d0c
+}
+function {
+  id: 0x997e4751
+  return_type_id: 0x6720d32f
+  parameter_id: 0x101b9aaa
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x99808d91
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x14b9453b
+  parameter_id: 0x2dab4556
+}
+function {
+  id: 0x998196f8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x11e6864c
+  parameter_id: 0x1e351120
+}
+function {
+  id: 0x9981df44
+  return_type_id: 0x6720d32f
+  parameter_id: 0x104d069a
+  parameter_id: 0x00c72527
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x998430a3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x10134e31
+}
+function {
+  id: 0x99853e95
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x8fd1c081
+}
+function {
+  id: 0x99896390
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x14b9453b
+  parameter_id: 0x0a134144
+}
+function {
+  id: 0x998ac175
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x14b9453b
+  parameter_id: 0x04f728c1
+  parameter_id: 0x04f728c1
+  parameter_id: 0x203f3220
+  parameter_id: 0x0b0dddba
+}
+function {
+  id: 0x998be740
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x14b9453b
+}
+function {
+  id: 0x998fb5b9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x1aeeade4
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9990515b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1042c9d1
+}
+function {
+  id: 0x99922f74
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x14b9453b
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9992c4c3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x13035e8b
+  parameter_id: 0x349b6850
+  parameter_id: 0x0277bf8a
+}
+function {
+  id: 0x9992e443
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x14b9453b
+  parameter_id: 0x6720d32f
+  parameter_id: 0x33756485
+  parameter_id: 0x18bd6530
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9997c326
+  return_type_id: 0x6720d32f
+  parameter_id: 0x105c8027
+}
+function {
+  id: 0x9998bc04
+  return_type_id: 0x6720d32f
+  parameter_id: 0x10617cac
+}
+function {
+  id: 0x9998e95e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x106029c6
+}
+function {
+  id: 0x999ac92f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x11e6864c
+  parameter_id: 0x1e351120
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x999ae4ec
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x14b9453b
+  parameter_id: 0x4585663f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x999bb728
+  return_type_id: 0x6720d32f
+  parameter_id: 0x11e6864c
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x999de55f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1330389b
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x99a1c9da
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1084abd6
+}
+function {
+  id: 0x99a8dc1b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x11957c05
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x99a8fd7d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1340339a
+  parameter_id: 0x3e04ad29
+}
+function {
+  id: 0x99a901c1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x10a78bb8
+}
+function {
+  id: 0x99ab70d7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x1aeeade4
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x99aea96e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x10134e31
+  parameter_id: 0x0a22a423
+  parameter_id: 0x084d74bf
+}
+function {
+  id: 0x99afdc89
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1285100d
+  parameter_id: 0x21b2d2f4
+  parameter_id: 0x2dd9d6a6
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x99b01e28
+  return_type_id: 0x6720d32f
+  parameter_id: 0x11e6864c
+  parameter_id: 0x144208e8
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x99b03c33
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x1aeeade4
+  parameter_id: 0x0a134144
+}
+function {
+  id: 0x99b048cf
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x1aeeade4
+  parameter_id: 0x0483e6f8
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x99b1879b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x120540d1
+  parameter_id: 0x2c0d2028
+}
+function {
+  id: 0x99b1fba8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x1aeeade4
+  parameter_id: 0x0d0d2d0f
+}
+function {
+  id: 0x99b2b8e3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x1aeeade4
+}
+function {
+  id: 0x99b42fa2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x1aeeade4
+  parameter_id: 0x1a5d0549
+}
+function {
+  id: 0x99b6bd9e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x126add1c
+  parameter_id: 0x2b3a7da8
+}
+function {
+  id: 0x99b7786a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x1aeeade4
+  parameter_id: 0x17022457
+}
+function {
+  id: 0x99b7b018
+  return_type_id: 0x6720d32f
+  parameter_id: 0x12c0ba43
+  parameter_id: 0x21df69d0
+}
+function {
+  id: 0x99b8c9c9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x1aeeade4
+  parameter_id: 0x29c4a9fa
+}
+function {
+  id: 0x99b9a6b1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x1aeeade4
+  parameter_id: 0x2c794b1f
+}
+function {
+  id: 0x99bb01a5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x106029c6
+  parameter_id: 0x0e8833d6
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x99bc1448
+  return_type_id: 0x6720d32f
+  parameter_id: 0x10f3dd9c
+}
+function {
+  id: 0x99bc2a5b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x1aeeade4
+  parameter_id: 0x3a4ae2d4
+}
+function {
+  id: 0x99bc3c65
+  return_type_id: 0x6720d32f
+  parameter_id: 0x10a78bb8
+  parameter_id: 0x054f691a
+}
+function {
+  id: 0x99bc47d8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x145f7b00
+  parameter_id: 0x4585663f
+  parameter_id: 0xf435685e
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x99bd2f0c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x11c404ba
+  parameter_id: 0x1333434c
+}
+function {
+  id: 0x99be88a0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x14b9453b
+  parameter_id: 0x4585663f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x99c0ccec
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1200e2aa
+  parameter_id: 0x335d253d
+  parameter_id: 0x358ff5b7
+}
+function {
+  id: 0x99c11430
+  return_type_id: 0x6720d32f
+  parameter_id: 0x106029c6
+  parameter_id: 0x106029c6
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x99c3be61
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x99c5a325
+  return_type_id: 0x6720d32f
+  parameter_id: 0x12c0ba43
+  parameter_id: 0x391f15ea
+  parameter_id: 0x4585663f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x99c75a91
+  return_type_id: 0x6720d32f
+  parameter_id: 0x111ee6f8
+}
+function {
+  id: 0x99c885a2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x12191e2a
+  parameter_id: 0x35e1bdb7
+  parameter_id: 0x6720d32f
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x99ccb18c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x056cf603
+}
+function {
+  id: 0x99cffa53
+  return_type_id: 0x6720d32f
+  parameter_id: 0x117a8adb
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x0483e6f8
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x99d112d9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1042c9d1
+  parameter_id: 0x13580d6c
+  parameter_id: 0x369bf18f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x99d24151
+  return_type_id: 0x6720d32f
+  parameter_id: 0x12e6ffae
+  parameter_id: 0x3b04bead
+  parameter_id: 0x1c3dbe5a
+}
+function {
+  id: 0x99d27798
+  return_type_id: 0x6720d32f
+  parameter_id: 0x12e6ffae
+  parameter_id: 0x3b04bead
+  parameter_id: 0x1c3dbe5a
+  parameter_id: 0x0db25a6d
+}
+function {
+  id: 0x99d6eb87
+  return_type_id: 0x6720d32f
+  parameter_id: 0x12e6ffae
+  parameter_id: 0x3860f3c0
+  parameter_id: 0x38d23361
+}
+function {
+  id: 0x99d90254
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+}
+function {
+  id: 0x99d969f9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x106029c6
+  parameter_id: 0x106029c6
+}
+function {
+  id: 0x99d9dbde
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x0036629d
+}
+function {
+  id: 0x99daa974
+  return_type_id: 0x6720d32f
+  parameter_id: 0x11e6864c
+  parameter_id: 0x08faf209
+}
+function {
+  id: 0x99dbf8a8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x11e6864c
+  parameter_id: 0x08ae8525
+}
+function {
+  id: 0x99dd7911
+  return_type_id: 0x6720d32f
+  parameter_id: 0x12eaeaa5
+  parameter_id: 0x39c825ca
+}
+function {
+  id: 0x99de09ef
+  return_type_id: 0x6720d32f
+  parameter_id: 0x12e6ffae
+  parameter_id: 0x3b04bead
+  parameter_id: 0x2d1f457b
+}
+function {
+  id: 0x99e0f6e0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x106029c6
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x99e10ba5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x188b9e81
+  parameter_id: 0x92233392
+  parameter_id: 0x2e0f9112
+}
+function {
+  id: 0x99e166d2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x92233392
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x99e17c37
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1e870478
+  parameter_id: 0xf017819f
+}
+function {
+  id: 0x99e6ede5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x129a6a0a
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x99e736ad
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x99eacf10
+  return_type_id: 0x6720d32f
+  parameter_id: 0x17dabdcd
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x99eaeb86
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1023f4f6
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x99eaebce
+  return_type_id: 0x6720d32f
+  parameter_id: 0x126add1c
+  parameter_id: 0x3c2fe980
+}
+function {
+  id: 0x99ed1149
+  return_type_id: 0x6720d32f
+  parameter_id: 0x120540d1
+  parameter_id: 0x3b289488
+}
+function {
+  id: 0x99ed2791
+  return_type_id: 0x6720d32f
+  parameter_id: 0x13a1ce2f
+  parameter_id: 0x21069feb
+  parameter_id: 0x00c72527
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x99f2cfac
+  return_type_id: 0x6720d32f
+  parameter_id: 0x12e75923
+  parameter_id: 0x33756485
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x99f31dad
+  return_type_id: 0x6720d32f
+  parameter_id: 0x11cffa09
+}
+function {
+  id: 0x99f3f8f0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1042c9d1
+  parameter_id: 0x18ea6ae3
+}
+function {
+  id: 0x99f403c5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x17047654
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x99f517b1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d44326e
+  parameter_id: 0xc93e017b
+}
+function {
+  id: 0x99f6e6fb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x126add1c
+  parameter_id: 0x3b2ca4e8
+}
+function {
+  id: 0x99f77593
+  return_type_id: 0x6720d32f
+  parameter_id: 0x15c389f6
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x99f8b4f4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x116785ed
+  parameter_id: 0x09e67e75
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x99f942bc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x11e6864c
+}
+function {
+  id: 0x99f99f1d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1042c9d1
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2cef4a4d
+}
+function {
+  id: 0x99fdcfa9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1042c9d1
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3dad9aa1
+}
+function {
+  id: 0x99fe57fe
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1148ae81
+  parameter_id: 0x0b27dc43
+}
+function {
+  id: 0x9a017b25
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x9a02b25a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x310ec01d
+}
+function {
+  id: 0x9a03c4d6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x348ad8b0
+}
+function {
+  id: 0x9a077ed2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1e9745d3
+  parameter_id: 0x08932257
+}
+function {
+  id: 0x9a0cfe73
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x33756485
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9a10c524
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1ce51dde
+  parameter_id: 0x295c7202
+  parameter_id: 0x3f0185ef
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9a1334e6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x24373219
+  parameter_id: 0x1f8dbf97
+}
+function {
+  id: 0x9a1350a4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1ddf3f71
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0x9a16828c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1ce51dde
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x9a17d2c3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0x92233392
+  parameter_id: 0x11c404ba
+  parameter_id: 0x92233392
+  parameter_id: 0x2e0f9112
+}
+function {
+  id: 0x9a1a471c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9a1b6a9a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x34d3469d
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9a1c05a3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18019702
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9a1cd590
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1ce51dde
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x9a1ce459
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1ce51dde
+  parameter_id: 0x295c7202
+  parameter_id: 0x00c72527
+}
+function {
+  id: 0x9a1d6471
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9a1e34e7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x9a1f348c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1ce51dde
+  parameter_id: 0x295c7202
+  parameter_id: 0x00c72527
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9a20634b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1e820193
+}
+function {
+  id: 0x9a212231
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1e870478
+}
+function {
+  id: 0x9a22976b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1dc3d428
+  parameter_id: 0x34a05394
+}
+function {
+  id: 0x9a23bd25
+  return_type_id: 0xcc33625b
+  parameter_id: 0x3a6106d5
+}
+function {
+  id: 0x9a2476b0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x38bffa98
+}
+function {
+  id: 0x9a252255
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1e9705eb
+}
+function {
+  id: 0x9a299233
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1ea5c473
+}
+function {
+  id: 0x9a29f30e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3c2755a3
+}
+function {
+  id: 0x9a2af11b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9a2b6ade
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x1d19a9d5
+}
+function {
+  id: 0x9a2dc3fa
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18a2fb63
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0xb0c2eb21
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x246497bd
+}
+function {
+  id: 0x9a2fc16a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1dc3d428
+  parameter_id: 0x37f5d3d4
+}
+function {
+  id: 0x9a32aa77
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0x9a32c459
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0x01222f7d
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9a33392f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9a340b23
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x1d19a9d5
+}
+function {
+  id: 0x9a343225
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9a347f45
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0x1d19a9d5
+}
+function {
+  id: 0x9a35263f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0x1bf16028
+  parameter_id: 0x38d23361
+}
+function {
+  id: 0x9a35acc8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1f97e1e4
+  parameter_id: 0x18bd6530
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x9a35b045
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1a8d1bcb
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9a36ff29
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0x11cfee5a
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9a374ad4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x9a3762e7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x111ee6f8
+  parameter_id: 0xfc0e1dbd
+}
+function {
+  id: 0x9a37ef2c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9a38f171
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18f56498
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9a391cba
+  return_type_id: 0x6720d32f
+  parameter_id: 0x11e6864c
+  parameter_id: 0xf017819f
+}
+function {
+  id: 0x9a3bbebc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x12e6ffae
+  parameter_id: 0xc9082b19
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x0a52df14
+}
+function {
+  id: 0x9a3c1260
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1dc3d428
+  parameter_id: 0x33011141
+}
+function {
+  id: 0x9a3cc1e8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3fe31e81
+}
+function {
+  id: 0x9a3d0da3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0x38d23361
+}
+function {
+  id: 0x9a3d4ac3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0x38fa32ef
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9a3e0766
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3776a166
+  parameter_id: 0x38fa32ef
+  parameter_id: 0x01109e7a
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9a3e338e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0x342a8622
+}
+function {
+  id: 0x9a3ef313
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3370a453
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9a3effce
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3370a453
+  parameter_id: 0x4585663f
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9a3f301e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x6720d32f
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0x9a3f491c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0x31c0ce8c
+}
+function {
+  id: 0x9a3f7770
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0x35612b46
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9a3faf0d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0x342a8622
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9a403d53
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1dce0fdd
+  parameter_id: 0x2e18f543
+  parameter_id: 0x2e18f543
+  parameter_id: 0x2e18f543
+}
+function {
+  id: 0x9a420fd3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b55a8f2
+  parameter_id: 0x4585663f
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0x9a42b014
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b55a8f2
+  parameter_id: 0x4585663f
+  parameter_id: 0x050d6bc0
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x9a42cb81
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b55a8f2
+  parameter_id: 0x4585663f
+  parameter_id: 0x04e33c8c
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x9a4319c6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b55a8f2
+  parameter_id: 0x4585663f
+  parameter_id: 0x064d6086
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9a439c8b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b55a8f2
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9a453b0a
+  return_type_id: 0xf435685e
+  parameter_id: 0x3399c453
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9a46e4b3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1c34b0f2
+  parameter_id: 0x33756485
+  parameter_id: 0x1bf16028
+  parameter_id: 0x064d6086
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9a47d8ec
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x2e390d5b
+  parameter_id: 0xbb4db7bb
+}
+function {
+  id: 0x9a4917d6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1dc3d428
+  parameter_id: 0x2e407ccb
+}
+function {
+  id: 0x9a4cbfe7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b2ca025
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9a4d0c6c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1dc3d428
+  parameter_id: 0x2025e257
+  parameter_id: 0xf637017b
+}
+function {
+  id: 0x9a4da9f2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b2ca025
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9a52fdd2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b55a8f2
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9a55aa45
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1c551dee
+  parameter_id: 0x3003845d
+}
+function {
+  id: 0x9a56e0d9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1c5f1ba0
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9a5c278c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1fba7d3d
+  parameter_id: 0x0c96fb14
+}
+function {
+  id: 0x9a5ddebe
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b2ca025
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9a5e1466
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x2cdbb77a
+  parameter_id: 0xf435685e
+  parameter_id: 0x6720d32f
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9a5f8c33
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x2cdbb77a
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9a66b93e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x2cdbb77a
+  parameter_id: 0x10e15e7e
+}
+function {
+  id: 0x9a68883d
+  return_type_id: 0x2668e644
+  parameter_id: 0x0258f96e
+  parameter_id: 0x347303b4
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x9a69b179
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1dc3d428
+  parameter_id: 0x2669d715
+}
+function {
+  id: 0x9a6e0659
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1c3dbe5a
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9a702edf
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d7ca769
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+  parameter_id: 0x3104c07e
+  parameter_id: 0x1bb6a471
+}
+function {
+  id: 0x9a717f8d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x19118777
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9a758dc7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1c34b0f2
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x9a775285
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1c2f6323
+  parameter_id: 0x3f1a5886
+}
+function {
+  id: 0x9a77e52d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1e820193
+  parameter_id: 0x14564b9e
+  parameter_id: 0x18bd6530
+  parameter_id: 0x33756485
+  parameter_id: 0xf1a6dfed
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9a78591e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1fa7df7c
+  parameter_id: 0x04537b8c
+}
+function {
+  id: 0x9a799531
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1e9745d3
+  parameter_id: 0x1729da91
+}
+function {
+  id: 0x9a7a7725
+  return_type_id: 0x060cf413
+  parameter_id: 0x0258f96e
+  parameter_id: 0x60f31502
+}
+function {
+  id: 0x9a7abb3d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d7ca769
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x9a7acc16
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x2cdbb77a
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9a7b5fab
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1bb6a471
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9a7ce1ce
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1a1051a0
+  parameter_id: 0x5d8155a5
+  parameter_id: 0x384f7d7c
+}
+function {
+  id: 0x9a8049e0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x1469952b
+}
+function {
+  id: 0x9a844b16
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1c3dbe5a
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9a856ac3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1c1627b0
+}
+function {
+  id: 0x9a871ca2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1847a854
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9a8b3be7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1c2f6323
+}
+function {
+  id: 0x9a8bedf1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x4585663f
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x9a8dcf13
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1c34b0f2
+}
+function {
+  id: 0x9a92e3b1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1dc3d428
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9a94d204
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1c50c4ad
+}
+function {
+  id: 0x9a9d1e6d
+  return_type_id: 0xf435685e
+  parameter_id: 0x35abdbf6
+  parameter_id: 0x33756485
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+  parameter_id: 0x2f73da3b
+}
+function {
+  id: 0x9aa0b156
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x4585663f
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9aa28a8b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x1dc3d428
+  parameter_id: 0x18bd6530
+  parameter_id: 0x914dbfdc
+}
+function {
+  id: 0x9aa2d024
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x1d44326e
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9aa3057f
+  return_type_id: 0xf435685e
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+  parameter_id: 0x2f73da3b
+}
+function {
+  id: 0x9aa376e2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1c2f6323
+  parameter_id: 0x0a134144
+}
+function {
+  id: 0x9aa3b833
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18e64f74
+  parameter_id: 0x4585663f
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9aa51f8b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x188b9e81
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x9aa5384e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1e870478
+  parameter_id: 0x21069feb
+}
+function {
+  id: 0x9aa680f1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1aeeade4
+  parameter_id: 0x6720d32f
+  parameter_id: 0x052fac00
+}
+function {
+  id: 0x9aa7cb1a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1aeeade4
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9aa883c2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9aa8cea2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9aa97b5f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9aa9d8b7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9aaabb4a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9aac764b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1dc3d428
+  parameter_id: 0x11cfee5a
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9aacb204
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x198099dc
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9aaeaf98
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d65d221
+  parameter_id: 0x1dce0fdd
+}
+function {
+  id: 0x9aaf4bc3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18a2fb63
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9aaf656a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18e64f74
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9ab24357
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x4585663f
+  parameter_id: 0x2fb2b385
+}
+function {
+  id: 0x9ab34327
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1cce8023
+}
+function {
+  id: 0x9ab41117
+  return_type_id: 0x6720d32f
+  parameter_id: 0x188b9e81
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9ab438eb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x4585663f
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9ab63fbc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18a2fb63
+  parameter_id: 0x4585663f
+  parameter_id: 0x22b36393
+  parameter_id: 0x37493e04
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9ab6ad5e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18e64f74
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9ab6e4b7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18a2fb63
+  parameter_id: 0x4585663f
+  parameter_id: 0x22b36393
+}
+function {
+  id: 0x9ab830ae
+  return_type_id: 0x3e10b518
+  parameter_id: 0x23f09c34
+}
+function {
+  id: 0x9ab83ca3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x4585663f
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0x9ab89acf
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1dafce59
+  parameter_id: 0x18bd6530
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9ab9a458
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1ce51dde
+}
+function {
+  id: 0x9abc5077
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x4585663f
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9abe486f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18a2fb63
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9abe6d0a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18e64f74
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x1bf16028
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x9abe9677
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x4585663f
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x2e029f76
+}
+function {
+  id: 0x9abf53a3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x4585663f
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x9ac13218
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1e870478
+  parameter_id: 0x38040a6c
+}
+function {
+  id: 0x9ac293c4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x054f691a
+  parameter_id: 0x190750ad
+}
+function {
+  id: 0x9ac4d210
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x054f691a
+}
+function {
+  id: 0x9ac6895a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d19a9d5
+}
+function {
+  id: 0x9ac7ffab
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x054f691a
+  parameter_id: 0x0cb6ece1
+}
+function {
+  id: 0x9ac8118c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1e9745d3
+  parameter_id: 0x3801e3d4
+  parameter_id: 0x3801e3d4
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x9ac8451b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1e9705eb
+  parameter_id: 0x3f0185ef
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9ac9a7eb
+  return_type_id: 0x2668e644
+  parameter_id: 0x0258f96e
+  parameter_id: 0x10617cac
+}
+function {
+  id: 0x9acae612
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x054f691a
+  parameter_id: 0x3bd9eb0b
+  parameter_id: 0x309e18ad
+}
+function {
+  id: 0x9accde33
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x054f691a
+  parameter_id: 0x2f73da3b
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9ad0bd67
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b337410
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9ad1e3e7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x06835e9c
+  parameter_id: 0x6720d32f
+  parameter_id: 0xf435685e
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9ad1efb4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d44326e
+}
+function {
+  id: 0x9ad2fdb3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1c34b0f2
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+  parameter_id: 0x329bbc92
+}
+function {
+  id: 0x9ad5b349
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x054f691a
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9ad6ae1c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d5934ce
+}
+function {
+  id: 0x9adae85f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d4da256
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x9adc176e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x054f691a
+  parameter_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9add1a24
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x054f691a
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9add6210
+  return_type_id: 0x6720d32f
+  parameter_id: 0x11e6864c
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x9adfcaf5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d7ca769
+}
+function {
+  id: 0x9ae1bda5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b9057c9
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9ae52b81
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1dc3d428
+  parameter_id: 0x054f691a
+}
+function {
+  id: 0x9ae61038
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1a8d1bcb
+  parameter_id: 0x716d7970
+}
+function {
+  id: 0x9aebcfc2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1e870478
+  parameter_id: 0x32bb7cf5
+}
+function {
+  id: 0x9aedeb37
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1cc6bdca
+  parameter_id: 0x1729da91
+}
+function {
+  id: 0x9aef3374
+  return_type_id: 0x6720d32f
+  parameter_id: 0x17dabdcd
+  parameter_id: 0xac0d3a85
+  parameter_id: 0xac0d3a85
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x9af01625
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1dc3d428
+}
+function {
+  id: 0x9af08132
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x0d821a01
+}
+function {
+  id: 0x9af360d8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1dce0fdd
+}
+function {
+  id: 0x9af58853
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x054f691a
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x9af70c99
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x054f691a
+  parameter_id: 0xc9082b19
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9afbe5e1
+  return_type_id: 0x2668e644
+  parameter_id: 0x0258f96e
+  parameter_id: 0x10617cac
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x9afc1632
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1df3d475
+}
+function {
+  id: 0x9afcf81c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1df06cce
+}
+function {
+  id: 0x9b022eae
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x18ea6ae3
+}
+function {
+  id: 0x9b03e163
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2b16c036
+}
+function {
+  id: 0x9b04b788
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2b16c036
+  parameter_id: 0x1d5bae2a
+}
+function {
+  id: 0x9b04f747
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1a1051a0
+}
+function {
+  id: 0x9b08a261
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x29c600bb
+}
+function {
+  id: 0x9b0968f7
+  return_type_id: 0xf435685e
+  parameter_id: 0x30da8694
+}
+function {
+  id: 0x9b0987fe
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x2c55cfca
+  parameter_id: 0x2ce9f40c
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x9b09bd92
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x2d8ee262
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9b0a6d47
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x2d8ee262
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9b0b30ec
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2922a3d0
+}
+function {
+  id: 0x9b0b9af5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x29082583
+}
+function {
+  id: 0x9b0be8d8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1a8d1bcb
+  parameter_id: 0x0a134144
+}
+function {
+  id: 0x9b0e3709
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1aeeade4
+  parameter_id: 0x0d0d2d0f
+  parameter_id: 0x052fac00
+}
+function {
+  id: 0x9b0e782a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2e029f76
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9b0ed502
+  return_type_id: 0x6720d32f
+  parameter_id: 0x156a41de
+  parameter_id: 0xf435685e
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x9b0f7ce2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1aeeade4
+  parameter_id: 0x0d0d2d0f
+}
+function {
+  id: 0x9b0fcd09
+  return_type_id: 0x6720d32f
+  parameter_id: 0x156a41de
+  parameter_id: 0xf435685e
+  parameter_id: 0x15afc3b7
+}
+function {
+  id: 0x9b10b4a6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2e029f76
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x11cfee5a
+  parameter_id: 0x11cfee5a
+  parameter_id: 0x6720d32f
+  parameter_id: 0x082be49e
+  parameter_id: 0x082be49e
+  parameter_id: 0x6720d32f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9b10bb14
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2e029f76
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9b110126
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2e029f76
+  parameter_id: 0x1bf16028
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9b116af7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2e029f76
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9b1252c1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x29082583
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9b12f46e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x1cdcdacb
+}
+function {
+  id: 0x9b130553
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1aeeade4
+  parameter_id: 0x0a134144
+}
+function {
+  id: 0x9b13661d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2e029f76
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9b144a97
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1aeeade4
+  parameter_id: 0x0483e6f8
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9b1477ea
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2ef36257
+}
+function {
+  id: 0x9b14e220
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2e029f76
+  parameter_id: 0x0dd653d2
+  parameter_id: 0x089ac080
+  parameter_id: 0x11cfee5a
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x1d19a9d5
+}
+function {
+  id: 0x9b153afe
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1aee9939
+  parameter_id: 0x0b9fe7dd
+}
+function {
+  id: 0x9b163bb4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2e18f543
+  parameter_id: 0x064d6086
+  parameter_id: 0x1d5bae2a
+  parameter_id: 0x11cfee5a
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x9b1657a8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2e18f543
+  parameter_id: 0x064d6086
+  parameter_id: 0x064d6086
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x9b17b01e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2e029f76
+}
+function {
+  id: 0x9b17d9b6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2e18f543
+}
+function {
+  id: 0x9b17df57
+  return_type_id: 0xf435685e
+  parameter_id: 0x3399c453
+  parameter_id: 0x3399c453
+}
+function {
+  id: 0x9b188ead
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2dcd339f
+}
+function {
+  id: 0x9b18c50f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2e029f76
+  parameter_id: 0x3c63caea
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x6720d32f
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9b18e15a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2e029f76
+  parameter_id: 0x3c63caea
+  parameter_id: 0x13580d6c
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9b1b4bcb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1a6ea392
+}
+function {
+  id: 0x9b1c749d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2cdf7f67
+  parameter_id: 0x02cc0dbc
+}
+function {
+  id: 0x9b1c809c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x19c40476
+  parameter_id: 0x3f0185ef
+  parameter_id: 0x4585663f
+  parameter_id: 0x00c72527
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x9b1c857c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x19c40476
+  parameter_id: 0x3f0185ef
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9b1eceac
+  return_type_id: 0x6720d32f
+  parameter_id: 0x188b9e81
+  parameter_id: 0x2f3288e0
+}
+function {
+  id: 0x9b1ff8be
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1c3dbe5a
+  parameter_id: 0x6720d32f
+  parameter_id: 0x33dd2e45
+}
+function {
+  id: 0x9b205f1f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x107606b0
+}
+function {
+  id: 0x9b2239e7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2360e10b
+}
+function {
+  id: 0x9b23a5dd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1a8d1bcb
+}
+function {
+  id: 0x9b246aef
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1ba8b228
+  parameter_id: 0x1042c9d1
+  parameter_id: 0x3eb9b5ea
+}
+function {
+  id: 0x9b24741c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x24373219
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9b248c83
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2360e10b
+  parameter_id: 0x19227de2
+  parameter_id: 0x3e6239e1
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x9b26077c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2360e10b
+  parameter_id: 0x11cfee5a
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9b261113
+  return_type_id: 0x6720d32f
+  parameter_id: 0x191de370
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9b263487
+  return_type_id: 0x6720d32f
+  parameter_id: 0x191de370
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+  parameter_id: 0x09e67e75
+  parameter_id: 0x0c6f4368
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9b26368a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x191de370
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+  parameter_id: 0x09e67e75
+}
+function {
+  id: 0x9b26efe4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2360e10b
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9b2837bd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2170d06d
+  parameter_id: 0x0a134144
+  parameter_id: 0x33756485
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9b2899c2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1aee9939
+  parameter_id: 0x04f728c1
+}
+function {
+  id: 0x9b299206
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x120540d1
+}
+function {
+  id: 0x9b2a2afd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x27162aac
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9b2aae3f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1a6ea392
+  parameter_id: 0x09a1684b
+  parameter_id: 0x5d8155a5
+}
+function {
+  id: 0x9b2ba01c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x21069feb
+}
+function {
+  id: 0x9b2c6ab8
+  return_type_id: 0x2a573d9c
+  parameter_id: 0x21207103
+  parameter_id: 0x0a93f86f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9b2c93fd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x27a7c613
+  parameter_id: 0x27a7c613
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9b2d0f7e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x27a7c613
+  parameter_id: 0x27a7c613
+}
+function {
+  id: 0x9b2d3bb4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x21069feb
+  parameter_id: 0x1a6ea392
+}
+function {
+  id: 0x9b2eba1d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x120540d1
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x4585663f
+  parameter_id: 0x1253769c
+}
+function {
+  id: 0x9b2f1182
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2115ac15
+  parameter_id: 0x13580d6c
+  parameter_id: 0x06440279
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x9b2ff6e6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1aeeade4
+  parameter_id: 0x052fac00
+}
+function {
+  id: 0x9b326937
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x27162aac
+  parameter_id: 0x064d6086
+  parameter_id: 0x064d6086
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0x9b32f2ad
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x23f09c34
+  parameter_id: 0x1d841d76
+  parameter_id: 0x0a134144
+}
+function {
+  id: 0x9b33517a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2e18f543
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x9b33e2c9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x27162aac
+}
+function {
+  id: 0x9b342f25
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x26e55184
+}
+function {
+  id: 0x9b37fa13
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x2360e10b
+}
+function {
+  id: 0x9b3885c4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x24373219
+  parameter_id: 0x1f8dbf97
+}
+function {
+  id: 0x9b396630
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2360e10b
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9b3a4e29
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x257d12af
+}
+function {
+  id: 0x9b3a71c6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1c3dbe5a
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9b3b4561
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1aee9939
+}
+function {
+  id: 0x9b3b4856
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1aeeade4
+}
+function {
+  id: 0x9b3c0938
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x27b5ed37
+  parameter_id: 0x3593bec8
+}
+function {
+  id: 0x9b3db069
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1ae38c59
+  parameter_id: 0x0277bf8a
+  parameter_id: 0x32a623d7
+  parameter_id: 0x384c5795
+  parameter_id: 0x914dbfdc
+  parameter_id: 0x914dbfdc
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x9b3db232
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1ae38c59
+  parameter_id: 0x0277bf8a
+  parameter_id: 0x32a623d7
+  parameter_id: 0x384c5795
+  parameter_id: 0x914dbfdc
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x9b3e6548
+  return_type_id: 0x6720d32f
+  parameter_id: 0x156a41de
+  parameter_id: 0xf435685e
+  parameter_id: 0xd5cc9c9a
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x15afc3b7
+}
+function {
+  id: 0x9b3e7fcb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9b3f338e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1ae38c59
+  parameter_id: 0x0277bf8a
+  parameter_id: 0x32a623d7
+  parameter_id: 0x914dbfdc
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x9b3fbad6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x2170d06d
+}
+function {
+  id: 0x9b3fd927
+  return_type_id: 0x6720d32f
+  parameter_id: 0x191de370
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x9b41b1a1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x6720d32f
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9b41e906
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x3ee42466
+}
+function {
+  id: 0x9b427bba
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x387626d3
+  parameter_id: 0x30650ba6
+}
+function {
+  id: 0x9b432d7a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x38af3519
+  parameter_id: 0x38af3519
+}
+function {
+  id: 0x9b43bd7f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3b461cc8
+}
+function {
+  id: 0x9b43c222
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9b45eb5a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1dc3d428
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9b45fcbe
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b2ca025
+  parameter_id: 0x038de60c
+}
+function {
+  id: 0x9b46543b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3e10b518
+  parameter_id: 0x4585663f
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9b4678d8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x188b9e81
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0x9b46c616
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3e10b518
+  parameter_id: 0x4585663f
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9b472ec5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x3f55d498
+}
+function {
+  id: 0x9b4742c5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18e64f74
+  parameter_id: 0x3c01aef6
+  parameter_id: 0x38d23361
+}
+function {
+  id: 0x9b478d6a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x390ad61e
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9b478eda
+  return_type_id: 0x6720d32f
+  parameter_id: 0x191de370
+  parameter_id: 0x20054a7b
+}
+function {
+  id: 0x9b478ffb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3e10b518
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9b4884ab
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x38fa32ef
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9b488d81
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x39cdf888
+}
+function {
+  id: 0x9b49a977
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3a62e69e
+  parameter_id: 0x3e6239e1
+}
+function {
+  id: 0x9b4a7bac
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1a8d1bcb
+  parameter_id: 0x1ca06989
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9b4ac008
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x395e9ae2
+}
+function {
+  id: 0x9b4af141
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1a8d1bcb
+  parameter_id: 0x1bf16028
+  parameter_id: 0x1bf16028
+  parameter_id: 0x1bf16028
+  parameter_id: 0x0a0607fc
+}
+function {
+  id: 0x9b4b35cf
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x39cdf888
+  parameter_id: 0x0ee13889
+}
+function {
+  id: 0x9b4b85e0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1a8d1bcb
+  parameter_id: 0x1a080f6e
+}
+function {
+  id: 0x9b4b913b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x390ad61e
+}
+function {
+  id: 0x9b4bcb26
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b2ca025
+}
+function {
+  id: 0x9b4bd74c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1830dd64
+  parameter_id: 0x31c0ce8c
+}
+function {
+  id: 0x9b4cf2ae
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x38d23361
+}
+function {
+  id: 0x9b4d06b7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x38af3519
+}
+function {
+  id: 0x9b4d6cf8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9b4d8e52
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b55a8f2
+  parameter_id: 0x07a6d412
+  parameter_id: 0x1bf16028
+  parameter_id: 0x1bf16028
+  parameter_id: 0x3e10b518
+  parameter_id: 0x064d6086
+  parameter_id: 0x4585663f
+  parameter_id: 0x29f042bf
+}
+function {
+  id: 0x9b4d8ea2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b55a8f2
+  parameter_id: 0x07a6d412
+  parameter_id: 0x1bf16028
+  parameter_id: 0x1bf16028
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x9b4d90bf
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b55a8f2
+  parameter_id: 0x07a6d412
+  parameter_id: 0x1bf16028
+  parameter_id: 0x1bf16028
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9b4f857e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9b4fa4b7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1830dd64
+  parameter_id: 0x31c0ce8c
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x9b50173a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x160238dd
+  parameter_id: 0xd41e888f
+}
+function {
+  id: 0x9b506e5c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3922fa08
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9b508c46
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3e10b518
+  parameter_id: 0x1c6cd3c0
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x9b51247b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1a8d1bcb
+  parameter_id: 0x1ca06989
+}
+function {
+  id: 0x9b51540b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18e64f74
+  parameter_id: 0x3e10b518
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9b523c43
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1aeeade4
+  parameter_id: 0x1a5d0549
+}
+function {
+  id: 0x9b5377a8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1aeeade4
+  parameter_id: 0x1a5d0549
+  parameter_id: 0x052fac00
+}
+function {
+  id: 0x9b538b4c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3e10b518
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x9b54b215
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9b54e21c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18e64f74
+  parameter_id: 0x3f796883
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9b54eb8f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b55a8f2
+  parameter_id: 0x0400f16a
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9b555e72
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b55a8f2
+  parameter_id: 0x0400f16a
+  parameter_id: 0x4585663f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9b558913
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b55a8f2
+}
+function {
+  id: 0x9b56b28e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x6720d32f
+  parameter_id: 0x32e263d5
+}
+function {
+  id: 0x9b572dd0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0xe61f67ea
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9b574a89
+  return_type_id: 0x6720d32f
+  parameter_id: 0x188b9e81
+  parameter_id: 0x30e68a3c
+  parameter_id: 0xd5426c51
+  parameter_id: 0xe12d7da8
+}
+function {
+  id: 0x9b575341
+  return_type_id: 0x6720d32f
+  parameter_id: 0x188b9e81
+  parameter_id: 0x30e68a3c
+  parameter_id: 0xd5426c51
+  parameter_id: 0xe12d7da8
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9b575a9f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x188b9e81
+  parameter_id: 0x30e68a3c
+  parameter_id: 0xd5426c51
+  parameter_id: 0xe12d7da8
+  parameter_id: 0x464d39d6
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9b575b53
+  return_type_id: 0x6720d32f
+  parameter_id: 0x188b9e81
+  parameter_id: 0x30e68a3c
+  parameter_id: 0xd5426c51
+  parameter_id: 0xe12d7da8
+  parameter_id: 0x464d39d6
+  parameter_id: 0x13580d6c
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9b57e4f6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3e17a54c
+}
+function {
+  id: 0x9b57f8b7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x9b585c8d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3df9bbb6
+}
+function {
+  id: 0x9b5888dd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x188b9e81
+  parameter_id: 0x3ea31487
+}
+function {
+  id: 0x9b5aa874
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3e10b518
+  parameter_id: 0x33756485
+  parameter_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0x1e20e7eb
+}
+function {
+  id: 0x9b5be873
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3e10b518
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x01222f7d
+}
+function {
+  id: 0x9b5c8666
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18a2fb63
+  parameter_id: 0x347303b4
+  parameter_id: 0x945e7ef6
+}
+function {
+  id: 0x9b5d6db7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3f84ee3c
+  parameter_id: 0x33756485
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0x9b5db5aa
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3f84ee3c
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x35304fb1
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9b5e2574
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b7b196f
+}
+function {
+  id: 0x9b5e9d20
+  return_type_id: 0x6720d32f
+  parameter_id: 0x188b9e81
+  parameter_id: 0x30e68a3c
+  parameter_id: 0xfc0e1dbd
+}
+function {
+  id: 0x9b5ee6f1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x3f55d498
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9b609a6d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b3398cc
+  parameter_id: 0x0b27dc43
+}
+function {
+  id: 0x9b60be5e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x188b9e81
+  parameter_id: 0x30e68a3c
+  parameter_id: 0x0483e6f8
+}
+function {
+  id: 0x9b60ce8b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x188b9e81
+  parameter_id: 0x30e68a3c
+  parameter_id: 0x0469aa58
+  parameter_id: 0x13580d6c
+  parameter_id: 0x13580d6c
+  parameter_id: 0xfc0e1dbd
+}
+function {
+  id: 0x9b613358
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x30a8c2de
+  parameter_id: 0x30a8c2de
+}
+function {
+  id: 0x9b614016
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x9b618705
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b8590a8
+}
+function {
+  id: 0x9b63bb96
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x33756485
+  parameter_id: 0x064d6086
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x9b64054e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x310ec01d
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x9b653ac7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x188b9e81
+  parameter_id: 0x30e68a3c
+  parameter_id: 0x13580d6c
+  parameter_id: 0x13580d6c
+  parameter_id: 0xfc0e1dbd
+}
+function {
+  id: 0x9b65de16
+  return_type_id: 0x6720d32f
+  parameter_id: 0x17047654
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x9b660b2c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1aeeade4
+  parameter_id: 0x17022457
+  parameter_id: 0x052fac00
+}
+function {
+  id: 0x9b661c0a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x33756485
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x9b661d4a
+  return_type_id: 0xf435685e
+  parameter_id: 0x31675062
+}
+function {
+  id: 0x9b6740c7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1aeeade4
+  parameter_id: 0x17022457
+}
+function {
+  id: 0x9b67907c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x310ec01d
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0x9b67b049
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x310ec01d
+  parameter_id: 0x310ec01d
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x9b68bcfc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18e64f74
+  parameter_id: 0x347303b4
+}
+function {
+  id: 0x9b692d7d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x37d7ca8b
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9b69cc1e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x180f2849
+  parameter_id: 0x3ccb45cc
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9b6a60e1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3176a085
+}
+function {
+  id: 0x9b6a728b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3f84ee3c
+  parameter_id: 0xe02e14d6
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9b6acfa5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1ba8b228
+}
+function {
+  id: 0x9b6af5ed
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9b6b9392
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x04f728c1
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9b6cf0a4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x92233392
+  parameter_id: 0x295c7202
+  parameter_id: 0x35f7f02e
+}
+function {
+  id: 0x9b6cf0df
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x92233392
+  parameter_id: 0x295c7202
+  parameter_id: 0x2b1ef221
+}
+function {
+  id: 0x9b6d4a33
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1bb6a471
+}
+function {
+  id: 0x9b6e0d6b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3399c453
+  parameter_id: 0x33d0e528
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x9b6e1aa4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x295c7202
+  parameter_id: 0x35f7f02e
+}
+function {
+  id: 0x9b6e7eec
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x064d6086
+  parameter_id: 0x019e2530
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x9b6eb620
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x01222f7d
+}
+function {
+  id: 0x9b6fe394
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1dce0fdd
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9b70ef80
+  return_type_id: 0x6720d32f
+  parameter_id: 0x176fc5b8
+  parameter_id: 0xc9082b19
+  parameter_id: 0x391f15ea
+  parameter_id: 0x6720d32f
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x3e001c39
+  parameter_id: 0xc9082b19
+  parameter_id: 0x17b3f4e8
+}
+function {
+  id: 0x9b7237ea
+  return_type_id: 0x2a670b41
+  parameter_id: 0x3b04bead
+  parameter_id: 0xc9082b19
+  parameter_id: 0x3e10b518
+  parameter_id: 0x1c898f28
+  parameter_id: 0x1c898f28
+}
+function {
+  id: 0x9b7242ee
+  return_type_id: 0x2a670b41
+  parameter_id: 0x3b04bead
+  parameter_id: 0xc9082b19
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x9b72aa8f
+  return_type_id: 0x2a670b41
+  parameter_id: 0x3b04bead
+  parameter_id: 0xc9082b19
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3c6a6bbc
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9b72aafd
+  return_type_id: 0x2a670b41
+  parameter_id: 0x3b04bead
+  parameter_id: 0xc9082b19
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3c6a6bbc
+  parameter_id: 0x6720d32f
+  parameter_id: 0x1c898f28
+}
+function {
+  id: 0x9b735e47
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1aeeade4
+  parameter_id: 0x1205844a
+}
+function {
+  id: 0x9b738b6d
+  return_type_id: 0x2a670b41
+  parameter_id: 0x3b04bead
+  parameter_id: 0xc9082b19
+  parameter_id: 0x3e10b518
+  parameter_id: 0x7533d9d0
+  parameter_id: 0x7533d9d0
+}
+function {
+  id: 0x9b73acb8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x36194830
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x9b73de6d
+  return_type_id: 0x2a670b41
+  parameter_id: 0x3b04bead
+  parameter_id: 0xc9082b19
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9b73e68e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x31c0ce8c
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9b74c63c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18a2fb63
+  parameter_id: 0x347303b4
+  parameter_id: 0x3104c07e
+  parameter_id: 0x4585663f
+  parameter_id: 0x023ce143
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x9b74c720
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18a2fb63
+  parameter_id: 0x347303b4
+  parameter_id: 0x3104c07e
+  parameter_id: 0x4585663f
+  parameter_id: 0x064d6086
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x9b751bbb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9b753d50
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1bd69199
+  parameter_id: 0x001e866e
+}
+function {
+  id: 0x9b754965
+  return_type_id: 0x6720d32f
+  parameter_id: 0x188b9e81
+  parameter_id: 0x35d37abd
+}
+function {
+  id: 0x9b76121f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9b7612c0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+  parameter_id: 0x37f9935b
+}
+function {
+  id: 0x9b768ae0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x106029c6
+  parameter_id: 0xbb98ef85
+}
+function {
+  id: 0x9b769496
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9b76cb6e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9b77dc72
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x36198464
+}
+function {
+  id: 0x9b77df43
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x36194830
+}
+function {
+  id: 0x9b781cd5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x188b9e81
+  parameter_id: 0x30e68a3c
+  parameter_id: 0x6720d32f
+  parameter_id: 0x13580d6c
+  parameter_id: 0x13580d6c
+  parameter_id: 0xfc0e1dbd
+}
+function {
+  id: 0x9b79ad21
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3776a166
+  parameter_id: 0x2e029f76
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9b79f513
+  return_type_id: 0x6720d32f
+  parameter_id: 0x188b9e81
+  parameter_id: 0x30e68a3c
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0xfc0e1dbd
+}
+function {
+  id: 0x9b7bfb3b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1bd69199
+  parameter_id: 0x001e866e
+  parameter_id: 0x3b19ae48
+}
+function {
+  id: 0x9b7c03b3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1a8d1bcb
+  parameter_id: 0x16239d0c
+  parameter_id: 0x1ca06989
+}
+function {
+  id: 0x9b7c44ce
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x38af3519
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+  parameter_id: 0x914dbfdc
+}
+function {
+  id: 0x9b7c6e74
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1847a854
+  parameter_id: 0x3f0185ef
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9b7e67c0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x14b9453b
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9b8019c6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x0258f96e
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x9b82fce2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1bc6afb1
+  parameter_id: 0x3caf1899
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x0a2e9ae5
+}
+function {
+  id: 0x9b83293d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x180f2849
+}
+function {
+  id: 0x9b8350bf
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b2ca025
+  parameter_id: 0x315b7e01
+  parameter_id: 0x31c8b544
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x1c3dbe5a
+  parameter_id: 0x1c3dbe5a
+  parameter_id: 0x1c3dbe5a
+  parameter_id: 0x1c3dbe5a
+  parameter_id: 0x038de60c
+}
+function {
+  id: 0x9b859556
+  return_type_id: 0x6720d32f
+  parameter_id: 0x156a41de
+  parameter_id: 0xd5cc9c9a
+  parameter_id: 0x2351f077
+}
+function {
+  id: 0x9b85a048
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18150d9f
+}
+function {
+  id: 0x9b85c36d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b55a8f2
+  parameter_id: 0x347303b4
+  parameter_id: 0x07a6d412
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x9b85c911
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b55a8f2
+  parameter_id: 0x347303b4
+  parameter_id: 0x07a6d412
+  parameter_id: 0x1bf16028
+  parameter_id: 0x29f042bf
+}
+function {
+  id: 0x9b8743c4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x0858434c
+  parameter_id: 0x716d7970
+}
+function {
+  id: 0x9b87e63f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x0a134144
+  parameter_id: 0x06835e9c
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x9b87e6ee
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18a16691
+  parameter_id: 0x0483e6f8
+  parameter_id: 0xf435685e
+  parameter_id: 0x17a93606
+}
+function {
+  id: 0x9b87f766
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x0a134144
+}
+function {
+  id: 0x9b89da18
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18a2fb63
+  parameter_id: 0x01241c02
+  parameter_id: 0x945e7ef6
+}
+function {
+  id: 0x9b8a8a73
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1a6ea392
+  parameter_id: 0x24706e28
+}
+function {
+  id: 0x9b8aad7a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1aeeade4
+  parameter_id: 0x2c794b1f
+}
+function {
+  id: 0x9b8acd5a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1a8d1bcb
+  parameter_id: 0x2a5a21f9
+}
+function {
+  id: 0x9b8b2a3f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x0a134144
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9b8bfa37
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x0a85fcb6
+  parameter_id: 0x395e9ae2
+}
+function {
+  id: 0x9b8e2bf2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1462a9ec
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x9b8e9bfe
+  return_type_id: 0x6720d32f
+  parameter_id: 0x188b9e81
+  parameter_id: 0x0b27dc43
+}
+function {
+  id: 0x9b8eabb4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x0b7c4f67
+  parameter_id: 0x310ec01d
+  parameter_id: 0x2e18f543
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x18bd6530
+  parameter_id: 0x18bd6530
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x9b8f15f1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x082be49e
+}
+function {
+  id: 0x9b91093a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1847a854
+}
+function {
+  id: 0x9b91c1d8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1dc3d428
+  parameter_id: 0x59cee86b
+  parameter_id: 0x18bd6530
+  parameter_id: 0x30c17c17
+}
+function {
+  id: 0x9b922d94
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x0ed82db2
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9b923492
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x0a134144
+}
+function {
+  id: 0x9b931e43
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x351641b0
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x9b938987
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b2ca025
+  parameter_id: 0x34bb6aad
+  parameter_id: 0x2a670b41
+  parameter_id: 0x0db25a6d
+}
+function {
+  id: 0x9b957b56
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x0483e6f8
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9b96d02c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x0ed82db2
+  parameter_id: 0x082be49e
+}
+function {
+  id: 0x9b96f247
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x0ed82db2
+  parameter_id: 0x082be49e
+  parameter_id: 0x089ac080
+}
+function {
+  id: 0x9b974729
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x0ed82db2
+  parameter_id: 0x082be49e
+  parameter_id: 0x6720d32f
+  parameter_id: 0x2e18f543
+}
+function {
+  id: 0x9b999c4a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x0858434c
+  parameter_id: 0x0a134144
+}
+function {
+  id: 0x9b9ac603
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x0d5f1839
+}
+function {
+  id: 0x9b9b71fd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x0c2e195c
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x9b9c3080
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x0858434c
+  parameter_id: 0x1ca06989
+}
+function {
+  id: 0x9b9c5af1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1aeeade4
+  parameter_id: 0x29c4a9fa
+}
+function {
+  id: 0x9b9ccf45
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b7b196f
+  parameter_id: 0x3382a638
+  parameter_id: 0x3382a638
+}
+function {
+  id: 0x9b9d111a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1aeeade4
+  parameter_id: 0x29c4a9fa
+  parameter_id: 0x052fac00
+}
+function {
+  id: 0x9b9d9a99
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x0858434c
+  parameter_id: 0x1a080f6e
+}
+function {
+  id: 0x9b9df54c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x0c93cbc1
+}
+function {
+  id: 0x9b9ef31d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18a2fb63
+  parameter_id: 0x0b7c4f67
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9b9f0206
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x0c2e195c
+}
+function {
+  id: 0x9b9f45c1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18150d9f
+  parameter_id: 0x06b96242
+}
+function {
+  id: 0x9ba0658b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x391f15ea
+  parameter_id: 0x92233392
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9ba1d628
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18e64f74
+  parameter_id: 0x064d6086
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0x9ba2048f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x188b9e81
+}
+function {
+  id: 0x9ba25f4a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x02a8d0c9
+  parameter_id: 0x1d19a9d5
+}
+function {
+  id: 0x9ba2e939
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18150d9f
+  parameter_id: 0x09d25c5b
+}
+function {
+  id: 0x9ba3144f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18150d9f
+  parameter_id: 0x09d25c5b
+  parameter_id: 0x07f5d8a3
+}
+function {
+  id: 0x9ba39408
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x030b9acf
+}
+function {
+  id: 0x9ba399e4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b084782
+  parameter_id: 0x33756485
+  parameter_id: 0xbdd18903
+  parameter_id: 0xf435685e
+  parameter_id: 0x6720d32f
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x9ba3bf47
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b084782
+  parameter_id: 0x33756485
+  parameter_id: 0xbdd18903
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+  parameter_id: 0x6720d32f
+  parameter_id: 0xf1a6dfed
+  parameter_id: 0x379d63b0
+}
+function {
+  id: 0x9ba47b26
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x01222f7d
+  parameter_id: 0x3e10b518
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9ba51920
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x02a8d0c9
+}
+function {
+  id: 0x9ba6ac88
+  return_type_id: 0x6720d32f
+  parameter_id: 0x19118777
+  parameter_id: 0x188b9e81
+}
+function {
+  id: 0x9ba6b0f8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1bb6a471
+  parameter_id: 0x33756485
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9ba7ef87
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x01222f7d
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9ba851af
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x019e2530
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0x9ba88768
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b55a8f2
+  parameter_id: 0x3e10b518
+  parameter_id: 0x13580d6c
+  parameter_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9ba8c128
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9ba8e976
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x00c83ba6
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x9ba93092
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x00be4281
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x9ba938bd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3f84ee3c
+}
+function {
+  id: 0x9ba95149
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x331b9666
+  parameter_id: 0x13580d6c
+  parameter_id: 0x1b8590a8
+}
+function {
+  id: 0x9ba966ad
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x00be4281
+  parameter_id: 0x11cfee5a
+  parameter_id: 0x13580d6c
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9ba9c2f7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x019e2530
+}
+function {
+  id: 0x9ba9d798
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x00878020
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x9ba9e28f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x078316ff
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9baa8508
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3f84ee3c
+  parameter_id: 0xe02e14d6
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9baae9ef
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x078316ff
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9bab32de
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x01222f7d
+}
+function {
+  id: 0x9bad311a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18a2fb63
+  parameter_id: 0x01241c02
+  parameter_id: 0x064d6086
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x9bad4369
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x00be4281
+}
+function {
+  id: 0x9bad5a77
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18150d9f
+  parameter_id: 0x09d25c5b
+  parameter_id: 0x3ecd3a8e
+}
+function {
+  id: 0x9badabc9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x19466519
+  parameter_id: 0x19466519
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9bae28ba
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x019e2530
+  parameter_id: 0x1bf16028
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9baf3eaf
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x019e2530
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x9bafba63
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9bb12429
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18e64f74
+  parameter_id: 0x064d6086
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9bb15d65
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x07a3ea55
+  parameter_id: 0x00be4281
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x9bb1b638
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x078316ff
+}
+function {
+  id: 0x9bb23dd9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x3297cf62
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0b756bd6
+}
+function {
+  id: 0x9bb24250
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x0d5f1839
+  parameter_id: 0xa2114faf
+}
+function {
+  id: 0x9bb2f28e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x0508b7df
+  parameter_id: 0x24373219
+  parameter_id: 0x1f8dbf97
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9bb5868f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x078316ff
+  parameter_id: 0x11cfee5a
+  parameter_id: 0x11cfee5a
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x9bb5c5c3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x078316ff
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x9bb61cbe
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x00be4281
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9bb62df9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x0665e6b6
+}
+function {
+  id: 0x9bb6653f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x078316ff
+  parameter_id: 0x1e820193
+  parameter_id: 0x1dd474ea
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9bb68fe1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0x9bb6c325
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x078316ff
+  parameter_id: 0x1dd474ea
+}
+function {
+  id: 0x9bb71cb9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x064d6086
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0x9bb7d1e6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x078316ff
+  parameter_id: 0x1dd474ea
+  parameter_id: 0x4585663f
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9bb7fe1c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x06835e9c
+  parameter_id: 0x0a134144
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9bb87987
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18a2fb63
+  parameter_id: 0x0258f96e
+  parameter_id: 0x6720d32f
+  parameter_id: 0x23e856d0
+}
+function {
+  id: 0x9bb894fd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9bb8e3d1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x04ca9246
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x9bb8f626
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18a2fb63
+  parameter_id: 0x0258f96e
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9bb937dc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1a1051a0
+  parameter_id: 0x2efe8065
+  parameter_id: 0x18ea6ae3
+}
+function {
+  id: 0x9bb970f2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18e64f74
+}
+function {
+  id: 0x9bb97795
+  return_type_id: 0x6720d32f
+  parameter_id: 0x15c389f6
+  parameter_id: 0xd25db1d3
+}
+function {
+  id: 0x9bba31a8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x0665e6b6
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9bba7997
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+}
+function {
+  id: 0x9bbb9163
+  return_type_id: 0x6720d32f
+  parameter_id: 0x11cffa09
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x9bbcaaf0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18e64f74
+  parameter_id: 0x0258f96e
+  parameter_id: 0x33756485
+  parameter_id: 0x18bd6530
+  parameter_id: 0x18bd6530
+  parameter_id: 0x18bd6530
+  parameter_id: 0x18bd6530
+  parameter_id: 0x18bd6530
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9bbccaf3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x054f691a
+  parameter_id: 0x18bd6530
+  parameter_id: 0x189b551a
+}
+function {
+  id: 0x9bbceb0f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x0508b7df
+  parameter_id: 0x1f8dbf97
+  parameter_id: 0x24373219
+}
+function {
+  id: 0x9bbcf106
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18f56498
+  parameter_id: 0x0057b869
+  parameter_id: 0x0057b869
+}
+function {
+  id: 0x9bbdba09
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18f56498
+}
+function {
+  id: 0x9bbe177b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x00c72527
+  parameter_id: 0x4585663f
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9bbe1e7f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x078316ff
+  parameter_id: 0x3f949c69
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9bbe6322
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x078316ff
+  parameter_id: 0x392664de
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9bbebc0c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1ce748dd
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x3e75499e
+}
+function {
+  id: 0x9bbf0d46
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1a1051a0
+  parameter_id: 0x2efe8065
+}
+function {
+  id: 0x9bbf11b2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x0258f96e
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9bc0372a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1df06cce
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9bc03733
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1df06cce
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9bc07fe3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x9bc09b7f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1dc3d428
+  parameter_id: 0x43e910ce
+  parameter_id: 0xf637017b
+  parameter_id: 0xaad76fc1
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x9bc0fd25
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x1f8dbf97
+}
+function {
+  id: 0x9bc160f2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1bb6a471
+}
+function {
+  id: 0x9bc1c0ac
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0x2126fcd8
+}
+function {
+  id: 0x9bc1dded
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1df06cce
+  parameter_id: 0x6720d32f
+  parameter_id: 0x1df06cce
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9bc253cf
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x6720d32f
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x9bc25990
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x6720d32f
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9bc2b791
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x6720d32f
+  parameter_id: 0x2e0f9112
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9bc302e5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x6720d32f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9bc32d4a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1a8d1bcb
+  parameter_id: 0x1a8d1bcb
+}
+function {
+  id: 0x9bc3617d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1b36c7a2
+}
+function {
+  id: 0x9bc3737b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1aee9939
+  parameter_id: 0x3e0d8696
+}
+function {
+  id: 0x9bc38ca5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9bc391f6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9bc482f2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x19118777
+}
+function {
+  id: 0x9bc4d75d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x716d7970
+}
+function {
+  id: 0x9bc64292
+  return_type_id: 0x6720d32f
+  parameter_id: 0x188b9e81
+  parameter_id: 0x19118777
+}
+function {
+  id: 0x9bc79bf3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x191de370
+}
+function {
+  id: 0x9bc7fa2c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9bc8ded8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1a1051a0
+  parameter_id: 0x31e58fe0
+  parameter_id: 0x2efe8065
+}
+function {
+  id: 0x9bc9ed5a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9bca5e70
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1e820193
+  parameter_id: 0x7be80061
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9bca85c1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x44891609
+  parameter_id: 0x1f305080
+  parameter_id: 0x1f305080
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9bcabd9d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9bcb2775
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1d44326e
+  parameter_id: 0x4585663f
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9bcd4bf2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1b36c7a2
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9bcd4ff7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9bcd50ad
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1b36c7a2
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9bcdbc55
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1bf16028
+  parameter_id: 0x370ed8aa
+}
+function {
+  id: 0x9bcfc1f5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x181ee594
+}
+function {
+  id: 0x9bcfcbd0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b2ca025
+  parameter_id: 0x21003da7
+}
+function {
+  id: 0x9bd01b5c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x2e029f76
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x9bd130b8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1f8dbf97
+  parameter_id: 0x02a8d0c9
+  parameter_id: 0x039df521
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x9bd14074
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2731dd86
+}
+function {
+  id: 0x9bd14825
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1f8dbf97
+  parameter_id: 0x02a8d0c9
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9bd18c9d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1f8dbf97
+}
+function {
+  id: 0x9bd1d928
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x2e029f76
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9bd21a8b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2a5a21f9
+}
+function {
+  id: 0x9bd263dd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1aeeade4
+  parameter_id: 0x3a4ae2d4
+}
+function {
+  id: 0x9bd3490a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1f3cda4b
+}
+function {
+  id: 0x9bd352dd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2f7b7919
+}
+function {
+  id: 0x9bd3af7a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1d33485a
+  parameter_id: 0x2360e10b
+}
+function {
+  id: 0x9bd4393a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x32d4e594
+}
+function {
+  id: 0x9bd4409d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3332797f
+}
+function {
+  id: 0x9bd444ea
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3323a6aa
+}
+function {
+  id: 0x9bd458e9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x9bd45e4e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x334936b8
+}
+function {
+  id: 0x9bd4722a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x33f8a50c
+}
+function {
+  id: 0x9bd47a1d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x38fa32ef
+  parameter_id: 0x6720d32f
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9bd49403
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x30600191
+}
+function {
+  id: 0x9bd49a2f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3058b017
+}
+function {
+  id: 0x9bd4c440
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x31210d51
+}
+function {
+  id: 0x9bd4f579
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x31e5e879
+}
+function {
+  id: 0x9bd555e1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x376789dd
+}
+function {
+  id: 0x9bd5a5e6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x34a79572
+}
+function {
+  id: 0x9bd5b265
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1e820193
+}
+function {
+  id: 0x9bd5c3da
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x353f6734
+}
+function {
+  id: 0x9bd5e248
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x38fa32ef
+}
+function {
+  id: 0x9bd5f230
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x35f8cea5
+}
+function {
+  id: 0x9bd5f612
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x35e844ce
+}
+function {
+  id: 0x9bd60d5a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3a056647
+}
+function {
+  id: 0x9bd6189b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3a5262d4
+}
+function {
+  id: 0x9bd67f28
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3bccaec1
+}
+function {
+  id: 0x9bd69623
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x386883b9
+}
+function {
+  id: 0x9bd6fb19
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1f8dbf97
+  parameter_id: 0x1f8dbf97
+  parameter_id: 0x24373219
+  parameter_id: 0x10de2fab
+}
+function {
+  id: 0x9bd6ff14
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x3593bec8
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x9bd7019d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9bd746a2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x33756485
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x9bd79f74
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x310ec01d
+}
+function {
+  id: 0x9bd7cd8d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x165dc292
+  parameter_id: 0xf017819f
+}
+function {
+  id: 0x9bd7d214
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x310ec01d
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9bd7d84b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x310ec01d
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x9bd7dc4e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3d4134dc
+}
+function {
+  id: 0x9bd829a3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x0296835f
+}
+function {
+  id: 0x9bd831d3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1c3dbe5a
+  parameter_id: 0x1c3dbe5a
+  parameter_id: 0x1c898f28
+}
+function {
+  id: 0x9bd88151
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1f8dbf97
+  parameter_id: 0x24373219
+}
+function {
+  id: 0x9bd88c03
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9bd9619b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x07b663b3
+}
+function {
+  id: 0x9bd9b846
+  return_type_id: 0xf435685e
+  parameter_id: 0x3399c453
+}
+function {
+  id: 0x9bd9c1f9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x0537eb7c
+}
+function {
+  id: 0x9bda0446
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x064d6086
+  parameter_id: 0x11cfee5a
+  parameter_id: 0x33756485
+  parameter_id: 0x0ed82db2
+  parameter_id: 0x082be49e
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9bda37a0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x0aee8ed6
+}
+function {
+  id: 0x9bda411e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x0b3476b2
+}
+function {
+  id: 0x9bdad4db
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1d5bae2a
+}
+function {
+  id: 0x9bdb4132
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x27a7c613
+  parameter_id: 0x92233392
+  parameter_id: 0x3297cf62
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x38d23361
+}
+function {
+  id: 0x9bdb4504
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x0f241d93
+}
+function {
+  id: 0x9bdb4731
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x0f2ccb0e
+}
+function {
+  id: 0x9bdb8566
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18e64f74
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9bdb8a52
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x0c194751
+}
+function {
+  id: 0x9bdbdcc4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1d19a9d5
+}
+function {
+  id: 0x9bdc44e8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1323af5e
+}
+function {
+  id: 0x9bdc70e1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x13f3899f
+}
+function {
+  id: 0x9bdc7143
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x13f50292
+}
+function {
+  id: 0x9bdc735b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x13fd63de
+}
+function {
+  id: 0x9bdc9aae
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x1d19a9d5
+}
+function {
+  id: 0x9bdcd3ab
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x1c3dbe5a
+}
+function {
+  id: 0x9bdcf60d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9bdd30f1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x16f3caa7
+}
+function {
+  id: 0x9bdd396a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18e64f74
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1b44744f
+  parameter_id: 0x1b44744f
+}
+function {
+  id: 0x9bdd4f28
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x1c3dbe5a
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9bdd631f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x17bc7156
+}
+function {
+  id: 0x9bdd8ba2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x141e84b4
+}
+function {
+  id: 0x9bddb929
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x14d4ab84
+}
+function {
+  id: 0x9bddbeed
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x14cbb87c
+}
+function {
+  id: 0x9bddee2d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1588b9ca
+}
+function {
+  id: 0x9bde0e00
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1a080f6e
+}
+function {
+  id: 0x9bde705b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x9bde7910
+  return_type_id: 0x6720d32f
+  parameter_id: 0x191de370
+  parameter_id: 0x0017d728
+  parameter_id: 0x66f6fc33
+}
+function {
+  id: 0x9bde8280
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1df06cce
+  parameter_id: 0x1df06cce
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9bdea720
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1d5bae2a
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x9bdfa419
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1ca06989
+}
+function {
+  id: 0x9bdfaf3f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x9bdfcecb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1d0b22fc
+}
+function {
+  id: 0x9bdfd4cc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1d633c7d
+}
+function {
+  id: 0x9be186c4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x20007040
+}
+function {
+  id: 0x9be1ca34
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x119c80ef
+  parameter_id: 0x2115ac15
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x9be2da56
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9be40c05
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x12ed9982
+}
+function {
+  id: 0x9be4260e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x13580d6c
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x9be48e21
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x1582ab06
+  parameter_id: 0x27a7c613
+  parameter_id: 0x4585663f
+  parameter_id: 0x0b30ee00
+  parameter_id: 0x0cbf60eb
+}
+function {
+  id: 0x9be49da2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x1582ab06
+  parameter_id: 0x27a7c613
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x06835e9c
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9be532e0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1997473c
+}
+function {
+  id: 0x9be57568
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b2ca025
+  parameter_id: 0x2a670b41
+  parameter_id: 0x1c898f28
+}
+function {
+  id: 0x9be6a9ad
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x13580d6c
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x9be74aa5
+  return_type_id: 0x11c404ba
+  parameter_id: 0x11c404ba
+  parameter_id: 0x11c404ba
+}
+function {
+  id: 0x9be80513
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1a1051a0
+  parameter_id: 0x384c5795
+  parameter_id: 0x384f7d7c
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9be805d9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1a1051a0
+  parameter_id: 0x384c5795
+  parameter_id: 0x384c5795
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9be885da
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x9be95705
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18a2fb63
+  parameter_id: 0x10673339
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x9beaa8bf
+  return_type_id: 0x6720d32f
+  parameter_id: 0x10193e4a
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x9bee7944
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x27a7c613
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9beeaa65
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x13580d6c
+  parameter_id: 0x31c0ce8c
+}
+function {
+  id: 0x9bef6c38
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1a8d1bcb
+  parameter_id: 0x3332797f
+}
+function {
+  id: 0x9beff51f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1013df15
+}
+function {
+  id: 0x9bf1e232
+  return_type_id: 0x6720d32f
+  parameter_id: 0x19c40476
+}
+function {
+  id: 0x9bf37946
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b2ca025
+  parameter_id: 0x2e2c982d
+}
+function {
+  id: 0x9bf6c118
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b3398cc
+  parameter_id: 0x2e037cf1
+  parameter_id: 0x0b27dc43
+}
+function {
+  id: 0x9bf779ba
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x14528516
+  parameter_id: 0x2712b6f9
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9bf77d6c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x14528516
+  parameter_id: 0x2712b6f9
+  parameter_id: 0x13580d6c
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9bf7b86e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x172847a8
+  parameter_id: 0x13580d6c
+  parameter_id: 0x1d44326e
+}
+function {
+  id: 0x9bf82255
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18a2fb63
+  parameter_id: 0x10673339
+  parameter_id: 0x4585663f
+  parameter_id: 0x22b36393
+  parameter_id: 0x23e856d0
+}
+function {
+  id: 0x9bf93663
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x15a30023
+}
+function {
+  id: 0x9bf97de0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x106029c6
+  parameter_id: 0x0a134144
+}
+function {
+  id: 0x9bf992a2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x1b2ca025
+  parameter_id: 0x2e2c982d
+  parameter_id: 0x2a670b41
+  parameter_id: 0x1c898f28
+}
+function {
+  id: 0x9bfd1c84
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x9bfe0b50
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x16f22102
+  parameter_id: 0x29082583
+  parameter_id: 0x08fa9aab
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9bff5408
+  return_type_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x9c00c8ec
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9c03de2b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x060cf413
+}
+function {
+  id: 0x9c08c3d6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x4585663f
+  parameter_id: 0x209886d0
+  parameter_id: 0x0d910d7f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9c0921e6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x00c72527
+  parameter_id: 0x6720d32f
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x9c09d6aa
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x32a623d7
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9c0bd092
+  return_type_id: 0x6720d32f
+  parameter_id: 0x026c3dea
+  parameter_id: 0x4585663f
+  parameter_id: 0x1b44744f
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x9c0c15b5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x4585663f
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9c0cedf7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x4585663f
+  parameter_id: 0x33756485
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x9c0f4cc1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x4585663f
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x9c0ff674
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x47c11668
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9c11b809
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x3399c453
+  parameter_id: 0x3399c453
+}
+function {
+  id: 0x9c13fdc1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x3399c453
+  parameter_id: 0x391f15ea
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0x9c1522fa
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x32a623d7
+  parameter_id: 0x315c34cb
+  parameter_id: 0x315c34cb
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9c1570f2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x319266e1
+}
+function {
+  id: 0x9c1677f9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x026525e9
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9c172aa4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x3104f372
+}
+function {
+  id: 0x9c178065
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x312e431a
+}
+function {
+  id: 0x9c17efac
+  return_type_id: 0x6720d32f
+  parameter_id: 0x026525e9
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9c1814f8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x3399c453
+  parameter_id: 0x13580d6c
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9c187b64
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04f7a60d
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x9c19a1e6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x32a623d7
+}
+function {
+  id: 0x9c1a3fe6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x30da8694
+  parameter_id: 0x29b2544e
+}
+function {
+  id: 0x9c1c39d4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x32a623d7
+  parameter_id: 0x154aa8e2
+  parameter_id: 0x32a623d7
+}
+function {
+  id: 0x9c1d5e78
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x3399c453
+}
+function {
+  id: 0x9c1de0b0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x078316ff
+  parameter_id: 0x1f718836
+}
+function {
+  id: 0x9c1ecd15
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0017d728
+  parameter_id: 0x66f6fc33
+}
+function {
+  id: 0x9c1fae0d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04f7a60d
+  parameter_id: 0x295c7202
+  parameter_id: 0x1f55a510
+}
+function {
+  id: 0x9c203488
+  return_type_id: 0x6720d32f
+  parameter_id: 0x06835e9c
+}
+function {
+  id: 0x9c24e4e1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x06901f39
+}
+function {
+  id: 0x9c25419d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x056dafae
+  parameter_id: 0x3e6239e1
+  parameter_id: 0x1c934597
+  parameter_id: 0x18bd6530
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9c2b054b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x32a623d7
+  parameter_id: 0xc93e017b
+  parameter_id: 0x391f15ea
+  parameter_id: 0x391f15ea
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9c2b9e5b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x06835e9c
+  parameter_id: 0x06835e9c
+  parameter_id: 0x469ea43a
+}
+function {
+  id: 0x9c2c04fd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0665e6b6
+  parameter_id: 0x0d679fed
+}
+function {
+  id: 0x9c2cd1de
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x3d610880
+  parameter_id: 0x29b2544e
+}
+function {
+  id: 0x9c2d8704
+  return_type_id: 0x6720d32f
+  parameter_id: 0x06901f39
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x9c2e6e8a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x00c83ba6
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9c30099c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x00a43052
+  parameter_id: 0x6720d32f
+  parameter_id: 0x11cffa09
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9c3052e3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x4585663f
+  parameter_id: 0xc2683cd4
+}
+function {
+  id: 0x9c3297de
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x386badcf
+}
+function {
+  id: 0x9c32da8c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x052fac00
+  parameter_id: 0x3806a5e7
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9c35c17d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x3fab28c8
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9c35eaa4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x4585663f
+  parameter_id: 0xd92b1d75
+  parameter_id: 0xd92b1d75
+  parameter_id: 0x33756485
+  parameter_id: 0x3e10b518
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9c364018
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x4585663f
+  parameter_id: 0xd92b1d75
+  parameter_id: 0x33756485
+  parameter_id: 0x3e10b518
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9c3e4be2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0d7ce7cc
+  parameter_id: 0xb3e7bac9
+  parameter_id: 0xb3e7bac9
+  parameter_id: 0xb3e7bac9
+  parameter_id: 0xe8034002
+  parameter_id: 0xe8034002
+  parameter_id: 0x18bd6530
+  parameter_id: 0xe8034002
+  parameter_id: 0x6720d32f
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x9c3e4bea
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0d7ce7cc
+  parameter_id: 0xb3e7bac9
+  parameter_id: 0xb3e7bac9
+  parameter_id: 0xb3e7bac9
+  parameter_id: 0xe8034002
+  parameter_id: 0xe8034002
+  parameter_id: 0x391f15ea
+  parameter_id: 0xe8034002
+  parameter_id: 0x6720d32f
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x9c3ea49d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x06901f39
+  parameter_id: 0x06901f39
+}
+function {
+  id: 0x9c454878
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04f7a60d
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x9c46f075
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0665e6b6
+  parameter_id: 0x17dabdcd
+}
+function {
+  id: 0x9c4b5ba7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04f7a60d
+  parameter_id: 0x3f0185ef
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x9c4bd910
+  return_type_id: 0x6720d32f
+  parameter_id: 0x02f4fda6
+  parameter_id: 0x5d8155a5
+}
+function {
+  id: 0x9c4dd34d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x060cf413
+  parameter_id: 0x1383598b
+}
+function {
+  id: 0x9c510f73
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04ca9246
+  parameter_id: 0x38d23361
+}
+function {
+  id: 0x9c518f81
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0665e6b6
+  parameter_id: 0x120540d1
+}
+function {
+  id: 0x9c543337
+  return_type_id: 0x6720d32f
+  parameter_id: 0x074f1a14
+  parameter_id: 0x01c5a749
+}
+function {
+  id: 0x9c571eea
+  return_type_id: 0x6720d32f
+  parameter_id: 0x06901f39
+  parameter_id: 0x1a29773f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9c585b1a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x3f093508
+  parameter_id: 0x11957c05
+}
+function {
+  id: 0x9c5e99dc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01ae1e33
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9c602690
+  return_type_id: 0x6720d32f
+  parameter_id: 0x078316ff
+}
+function {
+  id: 0x9c6036fa
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x2cc3e4c8
+}
+function {
+  id: 0x9c603af1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x548dee2a
+  parameter_id: 0x92cb2337
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9c61211e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x3e10b518
+  parameter_id: 0xe5e56f65
+}
+function {
+  id: 0x9c660c95
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x3185812b
+}
+function {
+  id: 0x9c671ecb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x079ff791
+}
+function {
+  id: 0x9c6915bb
+  return_type_id: 0x11c404ba
+  parameter_id: 0x0ee13889
+}
+function {
+  id: 0x9c69eb9b
+  return_type_id: 0xf435685e
+  parameter_id: 0x2e94a1e1
+  parameter_id: 0x33756485
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+  parameter_id: 0x0ab1f084
+}
+function {
+  id: 0x9c6a1325
+  return_type_id: 0xf435685e
+  parameter_id: 0x2e94a1e1
+  parameter_id: 0x33756485
+  parameter_id: 0xf435685e
+  parameter_id: 0x0ab1f084
+}
+function {
+  id: 0x9c6a15ea
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x3283ded6
+}
+function {
+  id: 0x9c6a39e2
+  return_type_id: 0xf435685e
+  parameter_id: 0x2e94a1e1
+  parameter_id: 0x33756485
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9c6b5433
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x2cc3e4c8
+  parameter_id: 0x2d8b2731
+}
+function {
+  id: 0x9c6bfced
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x2e8d5f05
+  parameter_id: 0x0bc3e3e1
+}
+function {
+  id: 0x9c6c513c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x2cc3e4c8
+  parameter_id: 0x32a623d7
+  parameter_id: 0x32a623d7
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9c6c7a58
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x2cc3e4c8
+  parameter_id: 0x3132887a
+}
+function {
+  id: 0x9c6d09b1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9c6d73ba
+  return_type_id: 0x6720d32f
+  parameter_id: 0x056cf603
+  parameter_id: 0x2dab4556
+}
+function {
+  id: 0x9c6dcf03
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9c6e2fdb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01ae1e33
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9c6f59d4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x2cc3e4c8
+  parameter_id: 0x3132887a
+  parameter_id: 0xc9082b19
+  parameter_id: 0x1eb28e53
+}
+function {
+  id: 0x9c7112c7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x9c71a6a0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04ca9246
+  parameter_id: 0x33756485
+  parameter_id: 0x38d23361
+}
+function {
+  id: 0x9c735216
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04b193cc
+  parameter_id: 0x35612b46
+  parameter_id: 0x29459f81
+}
+function {
+  id: 0x9c770a72
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04f7a60d
+  parameter_id: 0x3e10b518
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x9c77e7ef
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01ae1e33
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9c791312
+  return_type_id: 0x6720d32f
+  parameter_id: 0x078316ff
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0x9c7b6f16
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0665e6b6
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9c7be92f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x019e2530
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9c7c48fd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x07f2af49
+}
+function {
+  id: 0x9c7d7af2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x060cf413
+  parameter_id: 0x1bf16028
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9c7f922c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04ca9246
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9c814f78
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x0e27774e
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9c8307a8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x6720d32f
+  parameter_id: 0x23da1e1b
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9c832251
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04f7a60d
+  parameter_id: 0x0d107c2b
+  parameter_id: 0x295c7202
+  parameter_id: 0x00c72527
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9c839314
+  return_type_id: 0x6720d32f
+  parameter_id: 0x00a43052
+  parameter_id: 0x4585663f
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x9c83a5ef
+  return_type_id: 0x6720d32f
+  parameter_id: 0x040d1b01
+}
+function {
+  id: 0x9c84371e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x6720d32f
+  parameter_id: 0x39a49b1e
+}
+function {
+  id: 0x9c84cad9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04b193cc
+  parameter_id: 0x0a134144
+}
+function {
+  id: 0x9c85ef5b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x0b27dc43
+  parameter_id: 0x6720d32f
+  parameter_id: 0x066e14f5
+}
+function {
+  id: 0x9c8699ca
+  return_type_id: 0x6720d32f
+  parameter_id: 0x078316ff
+  parameter_id: 0x391e34eb
+  parameter_id: 0x099a2ff8
+  parameter_id: 0x295c7202
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x9c86c8d2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x6720d32f
+  parameter_id: 0x322396fa
+  parameter_id: 0x0783e3fb
+}
+function {
+  id: 0x9c874975
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x6720d32f
+  parameter_id: 0x32121e0d
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3b4ce03a
+  parameter_id: 0x6720d32f
+  parameter_id: 0x18a2fb63
+}
+function {
+  id: 0x9c874de2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x6720d32f
+  parameter_id: 0x344f6972
+}
+function {
+  id: 0x9c883b2c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04f7a60d
+  parameter_id: 0x0d107c2b
+  parameter_id: 0x054f691a
+  parameter_id: 0x096158f8
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9c894b5c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04f7a60d
+  parameter_id: 0x0d107c2b
+}
+function {
+  id: 0x9c8a3bc5
+  return_type_id: 0x3e10b518
+  parameter_id: 0x3b38b19b
+}
+function {
+  id: 0x9c8a5e38
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9c8b1b3d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x6720d32f
+  parameter_id: 0x051414e1
+}
+function {
+  id: 0x9c8bc249
+  return_type_id: 0x6720d32f
+  parameter_id: 0x040d1b01
+  parameter_id: 0x065bc4a9
+  parameter_id: 0x4585663f
+  parameter_id: 0x1bf16028
+  parameter_id: 0x1bf16028
+  parameter_id: 0x3486f55a
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x9c8c5236
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x11cffa09
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9c8c7161
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9c8d1a40
+  return_type_id: 0x6720d32f
+  parameter_id: 0x078316ff
+  parameter_id: 0x3d3d3926
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9c8de977
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0277bf8a
+  parameter_id: 0x6720d32f
+  parameter_id: 0x37d7ca8b
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3a40fc42
+  parameter_id: 0x4585663f
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x9c8e6c6c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04c27a37
+  parameter_id: 0x00c72527
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9c907da6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x023b50cb
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0b27dc43
+}
+function {
+  id: 0x9c908368
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04f7a60d
+  parameter_id: 0x0d107c2b
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9c9a309d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0b27dc43
+  parameter_id: 0x34c92288
+}
+function {
+  id: 0x9c9c5425
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x13a69eb7
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x9c9ca8bb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0930c6d9
+  parameter_id: 0xd41e888f
+}
+function {
+  id: 0x9c9d758d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x1393392e
+}
+function {
+  id: 0x9c9da313
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x13a69eb7
+}
+function {
+  id: 0x9ca03549
+  return_type_id: 0x6720d32f
+  parameter_id: 0x06835e9c
+  parameter_id: 0x20007040
+}
+function {
+  id: 0x9ca0515d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04b193cc
+  parameter_id: 0x0335a07f
+}
+function {
+  id: 0x9ca1921c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x00dd92af
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9ca258ce
+  return_type_id: 0x6720d32f
+  parameter_id: 0x052fac00
+  parameter_id: 0x1bf16028
+  parameter_id: 0x1bf16028
+  parameter_id: 0x1bf16028
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x9ca3200b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9ca39dee
+  return_type_id: 0x6720d32f
+  parameter_id: 0x078316ff
+  parameter_id: 0x391e34eb
+  parameter_id: 0x9db1a2c2
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+  parameter_id: 0x38d23361
+}
+function {
+  id: 0x9ca4cdfd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0490bb4a
+}
+function {
+  id: 0x9ca629a0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x1d44326e
+}
+function {
+  id: 0x9ca83708
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04f7a60d
+  parameter_id: 0x054f691a
+}
+function {
+  id: 0x9cab723c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04ca9246
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0x9cae8e59
+  return_type_id: 0x6720d32f
+  parameter_id: 0x074f1a14
+  parameter_id: 0x3e10b518
+  parameter_id: 0x17a49e9b
+}
+function {
+  id: 0x9cb0358f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x052fac00
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9cb0561a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x09626b7f
+  parameter_id: 0xda0bfa94
+}
+function {
+  id: 0x9cb5c182
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0665e6b6
+  parameter_id: 0x2b16c036
+}
+function {
+  id: 0x9cb73b4e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04b193cc
+  parameter_id: 0x06ef24ac
+}
+function {
+  id: 0x9cb7cef1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x00b7947f
+  parameter_id: 0x4585663f
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9cb87b44
+  return_type_id: 0x6720d32f
+  parameter_id: 0x078316ff
+  parameter_id: 0x391e34eb
+  parameter_id: 0xf2289b65
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+  parameter_id: 0x00c72527
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9cbb0956
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04f7a60d
+  parameter_id: 0x0d107c2b
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x9cbbbdfe
+  return_type_id: 0x6720d32f
+  parameter_id: 0x060cf413
+  parameter_id: 0x2e18f543
+}
+function {
+  id: 0x9cbd0aac
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04f7a60d
+}
+function {
+  id: 0x9cc0eb8f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0665e6b6
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9cc3e9b6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0c2e195c
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x9cc55758
+  return_type_id: 0x6720d32f
+  parameter_id: 0x078316ff
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x9cc85d11
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04b193cc
+  parameter_id: 0x18bd6530
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9cc9d859
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0524edd8
+}
+function {
+  id: 0x9cc9e057
+  return_type_id: 0x6720d32f
+  parameter_id: 0x056cf603
+  parameter_id: 0x02fdb32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9cca159d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04b193cc
+  parameter_id: 0x18bd6530
+  parameter_id: 0x18bd6530
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x9cca37a5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0bfc9031
+  parameter_id: 0xeb3a06b4
+  parameter_id: 0x6720d32f
+  parameter_id: 0x342a1515
+}
+function {
+  id: 0x9ccae70d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0bfc9031
+  parameter_id: 0xeb3a06b4
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9ccb082f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x052fac00
+}
+function {
+  id: 0x9ccb56bc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x066af716
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x9cce7248
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04b193cc
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9ccf601f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x056cf603
+  parameter_id: 0x052fac00
+}
+function {
+  id: 0x9ccfd77b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0c2e195c
+  parameter_id: 0x9547a3da
+  parameter_id: 0x4585663f
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9cd04299
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x00defc2c
+}
+function {
+  id: 0x9cd1416e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0537fb37
+  parameter_id: 0x054f691a
+  parameter_id: 0x2584a3b9
+}
+function {
+  id: 0x9cd26e8d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0537fb37
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x9cd28836
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04c27a37
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9cd32cf2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x06835e9c
+  parameter_id: 0x6720d32f
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9cd32d58
+  return_type_id: 0x3e10b518
+  parameter_id: 0x3a5cebed
+}
+function {
+  id: 0x9cd33969
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+}
+function {
+  id: 0x9cd3f2b1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x0ca27481
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x9cd67c20
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0537fb37
+  parameter_id: 0x054f691a
+  parameter_id: 0x3971988d
+}
+function {
+  id: 0x9cd6886b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x0277bf8a
+  parameter_id: 0x32a623d7
+  parameter_id: 0x384c5795
+  parameter_id: 0x914dbfdc
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x9cd82046
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0537fb37
+  parameter_id: 0x054f691a
+}
+function {
+  id: 0x9cd85276
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0562c566
+}
+function {
+  id: 0x9cdbdeaf
+  return_type_id: 0x6720d32f
+  parameter_id: 0x056cf603
+}
+function {
+  id: 0x9cde7bf7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0c2e195c
+  parameter_id: 0x9547a3da
+}
+function {
+  id: 0x9cdfbc5a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x057af395
+  parameter_id: 0x6720d32f
+  parameter_id: 0x29b2544e
+}
+function {
+  id: 0x9ce01ea2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x019e2530
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9ce276b7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x4585663f
+  parameter_id: 0x17a749ba
+}
+function {
+  id: 0x9ce2f262
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04f7a60d
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9ce4455a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0c2e195c
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x9ce5d577
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0c2e195c
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0xabd4afbf
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9ce68106
+  return_type_id: 0x6720d32f
+  parameter_id: 0x059988a7
+}
+function {
+  id: 0x9ce79fe2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x0ca27481
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9ce7f02a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x4585663f
+  parameter_id: 0x01bd3c0f
+}
+function {
+  id: 0x9ce91c9d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0c2e195c
+  parameter_id: 0x92233392
+  parameter_id: 0xabd4afbf
+}
+function {
+  id: 0x9cea38bd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0c2e195c
+  parameter_id: 0x92233392
+  parameter_id: 0xabd4afbf
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x9ceafa84
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04b193cc
+  parameter_id: 0x18bd6530
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x9cec28b8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x06507df7
+  parameter_id: 0x3e10b518
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x9cec7740
+  return_type_id: 0x6720d32f
+  parameter_id: 0x06507df7
+  parameter_id: 0x3e10b518
+  parameter_id: 0x0258f96e
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9cefec01
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0bfc9031
+  parameter_id: 0xe40ac8ae
+}
+function {
+  id: 0x9cf04bdd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x05c2a3ca
+}
+function {
+  id: 0x9cf17ffb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x019e2530
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9cf36b6a
+  return_type_id: 0xf435685e
+  parameter_id: 0x2f3288e0
+}
+function {
+  id: 0x9cf38e4c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0665e6b6
+  parameter_id: 0x3a534a58
+  parameter_id: 0x0d679fed
+}
+function {
+  id: 0x9cf48276
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0335a07f
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x33d0e528
+}
+function {
+  id: 0x9cf9beaa
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x0aa1f0ee
+}
+function {
+  id: 0x9cfd713b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01ae1e33
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9d001826
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0e56cd62
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+  parameter_id: 0x38d23361
+  parameter_id: 0x38d23361
+}
+function {
+  id: 0x9d020190
+  return_type_id: 0x6720d32f
+  parameter_id: 0x02ed0755
+  parameter_id: 0x0e68dab6
+}
+function {
+  id: 0x9d038726
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x0a134144
+  parameter_id: 0xf435685e
+  parameter_id: 0x06835e9c
+}
+function {
+  id: 0x9d048e2e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x3d4134dc
+}
+function {
+  id: 0x9d04d2ef
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x0483e6f8
+}
+function {
+  id: 0x9d04fab6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0206e690
+  parameter_id: 0x0258f96e
+  parameter_id: 0x33756485
+  parameter_id: 0x0b30ee00
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x9d05158e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x030b9acf
+  parameter_id: 0x11c404ba
+}
+function {
+  id: 0x9d053909
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x04f91f60
+}
+function {
+  id: 0x9d05bd62
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01222f7d
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9d0be11c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x074f1a14
+}
+function {
+  id: 0x9d0e7bae
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x064d6086
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0x9d0e83f2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01a688ae
+  parameter_id: 0x3a91ca5f
+  parameter_id: 0x360d16d9
+  parameter_id: 0x01a688ae
+}
+function {
+  id: 0x9d0ed9df
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x051414e1
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9d0eeea4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x060cf413
+}
+function {
+  id: 0x9d0f4aee
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x0665e6b6
+}
+function {
+  id: 0x9d0fcb12
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x064599b7
+}
+function {
+  id: 0x9d0fd195
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x06433852
+}
+function {
+  id: 0x9d0fe8f6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0x9d100029
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0603671e
+  parameter_id: 0x4585663f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9d11df94
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x00a43052
+  parameter_id: 0x18bd6530
+  parameter_id: 0xe02e14d6
+  parameter_id: 0xf435685e
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9d12c230
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x38d23361
+}
+function {
+  id: 0x9d13a27c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0de4c6b1
+  parameter_id: 0xfa5f37bb
+  parameter_id: 0x00c72527
+  parameter_id: 0xc9082b19
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9d152505
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0277bf8a
+  parameter_id: 0x0277bf8a
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x9d15ab3e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x00dd92af
+}
+function {
+  id: 0x9d15c1e0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x00c72527
+}
+function {
+  id: 0x9d15cbb3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x060cf413
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9d16dd74
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x9d18c376
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x3a5262d4
+}
+function {
+  id: 0x9d191a3a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x02f4fda6
+  parameter_id: 0x09319f13
+}
+function {
+  id: 0x9d1991c8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x0258f96e
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9d19aa55
+  return_type_id: 0x6720d32f
+  parameter_id: 0x026525e9
+}
+function {
+  id: 0x9d19f6b6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x03caf08d
+}
+function {
+  id: 0x9d1bec55
+  return_type_id: 0x6720d32f
+  parameter_id: 0x026c3dea
+}
+function {
+  id: 0x9d1c66a2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x064d6086
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9d1d4664
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x3ae3ff84
+  parameter_id: 0x1cc18442
+  parameter_id: 0x1cc18442
+}
+function {
+  id: 0x9d1d5fa3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x3b3557ba
+}
+function {
+  id: 0x9d1da48d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x03ce74cd
+  parameter_id: 0x1bb6a471
+}
+function {
+  id: 0x9d1fcda3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x3b91d78c
+}
+function {
+  id: 0x9d2168aa
+  return_type_id: 0x6720d32f
+  parameter_id: 0x02862e14
+}
+function {
+  id: 0x9d220f74
+  return_type_id: 0x8fd1c081
+  parameter_id: 0x8fd1c081
+}
+function {
+  id: 0x9d2263c5
+  return_type_id: 0x2668e644
+  parameter_id: 0x10617cac
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x9d25c351
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x0cc78943
+}
+function {
+  id: 0x9d25e982
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x08956bf0
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9d262bee
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x35e844ce
+}
+function {
+  id: 0x9d264ea6
+  return_type_id: 0x3e10b518
+  parameter_id: 0x3d896417
+}
+function {
+  id: 0x9d2669c7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x35f8cea5
+}
+function {
+  id: 0x9d26cfef
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x0258f96e
+  parameter_id: 0xe5c5fb3f
+}
+function {
+  id: 0x9d27e158
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x00a43052
+  parameter_id: 0xcd84e3cd
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9d27e8b1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x0fa01494
+  parameter_id: 0x38c3714d
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9d28302d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x09a83f1c
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x366f4294
+  parameter_id: 0x0e656e5d
+}
+function {
+  id: 0x9d2c05c3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x0f3dfb90
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9d2c14da
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x376789dd
+}
+function {
+  id: 0x9d2ec868
+  return_type_id: 0x6720d32f
+  parameter_id: 0x02b8ad1f
+}
+function {
+  id: 0x9d2fa4f1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x0e5e6153
+}
+function {
+  id: 0x9d3009a4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x09a83f1c
+  parameter_id: 0x02067bb4
+  parameter_id: 0x3b1eb90c
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9d300afb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x30600191
+}
+function {
+  id: 0x9d30fa23
+  return_type_id: 0x6720d32f
+  parameter_id: 0x00dd92af
+  parameter_id: 0x21df69d0
+}
+function {
+  id: 0x9d318958
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x9d32251c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0017d728
+  parameter_id: 0x2b8f13b3
+  parameter_id: 0x6720d32f
+  parameter_id: 0x31e0e6c6
+}
+function {
+  id: 0x9d328b5e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0017d728
+  parameter_id: 0x2b8f13b3
+  parameter_id: 0x6720d32f
+  parameter_id: 0x196e7066
+  parameter_id: 0x31e0e6c6
+}
+function {
+  id: 0x9d32f179
+  return_type_id: 0x6720d32f
+  parameter_id: 0x06901f39
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9d332d96
+  return_type_id: 0x6720d32f
+  parameter_id: 0x026525e9
+  parameter_id: 0x0aa1f0ee
+}
+function {
+  id: 0x9d3354d9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x09626b7f
+}
+function {
+  id: 0x9d356d81
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04880557
+  parameter_id: 0x6720d32f
+  parameter_id: 0x2c32dd96
+}
+function {
+  id: 0x9d367e98
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x31fd1948
+}
+function {
+  id: 0x9d398c85
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0de4c6b1
+  parameter_id: 0xf017819f
+}
+function {
+  id: 0x9d3ad96b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x32d4e594
+}
+function {
+  id: 0x9d3b0250
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x0a134144
+  parameter_id: 0x18bd6530
+  parameter_id: 0xe02e14d6
+  parameter_id: 0xf435685e
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9d3b1e84
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x0b70fc18
+}
+function {
+  id: 0x9d3b60fc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x318f8bcb
+  parameter_id: 0x3350b8d6
+}
+function {
+  id: 0x9d3ba2fa
+  return_type_id: 0x6720d32f
+  parameter_id: 0x02ed0755
+}
+function {
+  id: 0x9d3d0467
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x3323a6aa
+}
+function {
+  id: 0x9d3d4fff
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x0ae4a2c7
+}
+function {
+  id: 0x9d3daafc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x064d6086
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x9d3ddc46
+  return_type_id: 0x6720d32f
+  parameter_id: 0x02f4fda6
+}
+function {
+  id: 0x9d3e6869
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x33f8a50c
+}
+function {
+  id: 0x9d3f0070
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x09a83f1c
+  parameter_id: 0x3df7e337
+}
+function {
+  id: 0x9d3fcc61
+  return_type_id: 0x6720d32f
+  parameter_id: 0x02ed0755
+  parameter_id: 0x0258f96e
+  parameter_id: 0x32e20efe
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9d3fe9f7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x0a4d20f4
+}
+function {
+  id: 0x9d40265c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x160238dd
+  parameter_id: 0x368ec5cb
+  parameter_id: 0xd41e888f
+}
+function {
+  id: 0x9d406163
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x6720d32f
+  parameter_id: 0x391f15ea
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9d40a997
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0355dc72
+  parameter_id: 0x054f691a
+}
+function {
+  id: 0x9d411575
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x15f20052
+}
+function {
+  id: 0x9d419277
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04c27a37
+  parameter_id: 0x78662640
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9d41cc1a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x000fdfa4
+  parameter_id: 0x3930a655
+  parameter_id: 0x914dbfdc
+  parameter_id: 0x914dbfdc
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9d41fde0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x6720d32f
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0x9d42059c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x030b9acf
+}
+function {
+  id: 0x9d45b6a2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x05c2a3ca
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9d45fa50
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x6720d32f
+  parameter_id: 0x2f73da3b
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9d475de3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x056cf603
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9d4776b9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x052fac00
+  parameter_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9d47faa0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x100a15ee
+  parameter_id: 0x4585663f
+  parameter_id: 0x1bb6a471
+}
+function {
+  id: 0x9d483358
+  return_type_id: 0x6720d32f
+  parameter_id: 0x078316ff
+  parameter_id: 0x4a057220
+}
+function {
+  id: 0x9d4915b9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x2e27d122
+}
+function {
+  id: 0x9d4b1066
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x11cffa09
+  parameter_id: 0x6720d32f
+  parameter_id: 0xcd84e3cd
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9d4bd85c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x00b7947f
+  parameter_id: 0x39b79b30
+}
+function {
+  id: 0x9d4c0cca
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x16b46fbd
+}
+function {
+  id: 0x9d4d4add
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0bc3e3e1
+}
+function {
+  id: 0x9d4e4357
+  return_type_id: 0x6720d32f
+  parameter_id: 0x052fac00
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9d4e84a4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x00c83ba6
+  parameter_id: 0x3f1a5886
+}
+function {
+  id: 0x9d4f4423
+  return_type_id: 0x6720d32f
+  parameter_id: 0x052fac00
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9d4f92fc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x078316ff
+  parameter_id: 0x4a057220
+  parameter_id: 0x1f718836
+  parameter_id: 0x1f718836
+}
+function {
+  id: 0x9d4fba25
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9d51e53b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04c27a37
+  parameter_id: 0x78662640
+}
+function {
+  id: 0x9d5271cf
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0c48c037
+  parameter_id: 0xf435685e
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9d54e5f2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9d555b15
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0524edd8
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9d555c37
+  return_type_id: 0x6720d32f
+  parameter_id: 0x052fac00
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0801d1b2
+  parameter_id: 0x35c838ae
+}
+function {
+  id: 0x9d55b48a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x9d568fa5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x391f15ea
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9d569303
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04c27a37
+  parameter_id: 0x78662640
+  parameter_id: 0x1dd8e392
+}
+function {
+  id: 0x9d56966d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0x9d56f523
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x100a15ee
+}
+function {
+  id: 0x9d578b63
+  return_type_id: 0x6720d32f
+  parameter_id: 0x052fac00
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9d5ada98
+  return_type_id: 0x6720d32f
+  parameter_id: 0x00b7947f
+  parameter_id: 0x3d92f9c7
+  parameter_id: 0x065d3f86
+}
+function {
+  id: 0x9d5d4010
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x12e75923
+}
+function {
+  id: 0x9d639aac
+  return_type_id: 0x6720d32f
+  parameter_id: 0x038de60c
+}
+function {
+  id: 0x9d67d65f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x000fdfa4
+  parameter_id: 0x3930a655
+}
+function {
+  id: 0x9d6a013c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0017d728
+  parameter_id: 0x3db7fb40
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9d6a72fd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x03ce74cd
+  parameter_id: 0x06433852
+}
+function {
+  id: 0x9d6ad4e2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0017d728
+  parameter_id: 0x3d828cd9
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9d6cad99
+  return_type_id: 0x6720d32f
+  parameter_id: 0x078fc7bc
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9d6cc891
+  return_type_id: 0x6720d32f
+  parameter_id: 0x05c2a3ca
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9d71353d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x07f9a52e
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9d7144c5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x19e66c71
+}
+function {
+  id: 0x9d7207b9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x18bd6530
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9d7240dd
+  return_type_id: 0xf435685e
+  parameter_id: 0x2936263d
+}
+function {
+  id: 0x9d725f0c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x03caf08d
+}
+function {
+  id: 0x9d729b69
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x19118777
+}
+function {
+  id: 0x9d72aaf9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x191de370
+}
+function {
+  id: 0x9d7300d0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x18e64f74
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1b44744f
+  parameter_id: 0x1b44744f
+}
+function {
+  id: 0x9d737e1c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x03ce74cd
+}
+function {
+  id: 0x9d7428e0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9d7465e8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x00c72527
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9d75110e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x2126fcd8
+}
+function {
+  id: 0x9d75a454
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x1bb6a471
+  parameter_id: 0x368ec5cb
+}
+function {
+  id: 0x9d763af9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x188b9e81
+  parameter_id: 0x0b27dc43
+}
+function {
+  id: 0x9d76bb0d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x6720d32f
+  parameter_id: 0xe276adef
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9d7707d1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x19e66c71
+  parameter_id: 0x19e66c71
+  parameter_id: 0x0afbbe2b
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9d7736cf
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x187aeed8
+}
+function {
+  id: 0x9d7807e5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x1bb6a471
+}
+function {
+  id: 0x9d7a49fd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x00a43052
+  parameter_id: 0x329bbc92
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9d7c8594
+  return_type_id: 0x6720d32f
+  parameter_id: 0x03ce74cd
+  parameter_id: 0x0258f96e
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2dcd339f
+}
+function {
+  id: 0x9d7d2035
+  return_type_id: 0x6720d32f
+  parameter_id: 0x03f70c68
+}
+function {
+  id: 0x9d7d5431
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0017d728
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x9d7dced1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x23110b14
+}
+function {
+  id: 0x9d7f5bac
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2dcd339f
+}
+function {
+  id: 0x9d80e32f
+  return_type_id: 0x6720d32f
+}
+function {
+  id: 0x9d81f887
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x25c97cc9
+}
+function {
+  id: 0x9d8314c6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x000fdfa4
+}
+function {
+  id: 0x9d834998
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x25653b02
+}
+function {
+  id: 0x9d84886a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x24954792
+}
+function {
+  id: 0x9d8516e5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0017d728
+}
+function {
+  id: 0x9d85be32
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01ae1e33
+  parameter_id: 0x1bb6a471
+}
+function {
+  id: 0x9d8964be
+  return_type_id: 0x6720d32f
+  parameter_id: 0x06541377
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9d899db1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x27d0317f
+}
+function {
+  id: 0x9d8b7529
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x276a1779
+}
+function {
+  id: 0x9d8bb490
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01a688ae
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9d8c8e95
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x276a1779
+  parameter_id: 0x1bb6a471
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9d8f9d80
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x27d0317f
+  parameter_id: 0x19e66c71
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9d93897e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x2131312a
+  parameter_id: 0x06433852
+}
+function {
+  id: 0x9d94842e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x02ed0755
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x9d955638
+  return_type_id: 0x6720d32f
+  parameter_id: 0x00a43052
+  parameter_id: 0x0b30ee00
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x33756485
+  parameter_id: 0x4585663f
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x9d958331
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x9d967d9a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x00c83ba6
+  parameter_id: 0x0a134144
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9d9787a1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x00374d67
+  parameter_id: 0x06835e9c
+  parameter_id: 0x06835e9c
+  parameter_id: 0x469ea43a
+}
+function {
+  id: 0x9d9aa0c3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x00c83ba6
+  parameter_id: 0x0a134144
+}
+function {
+  id: 0x9d9ce4b7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x00a43052
+  parameter_id: 0x0b30ee00
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9d9d4b64
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x22e58417
+}
+function {
+  id: 0x9d9d4f0f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x09626b7f
+  parameter_id: 0x914dbfdc
+}
+function {
+  id: 0x9d9ed332
+  return_type_id: 0x6720d32f
+  parameter_id: 0x02ed0755
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x9d9f5d67
+  return_type_id: 0x6720d32f
+  parameter_id: 0x060cf413
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9da05299
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x2c982451
+  parameter_id: 0x13bdf349
+}
+function {
+  id: 0x9da4bde5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x2c982451
+}
+function {
+  id: 0x9da7a81a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x1588b9ca
+}
+function {
+  id: 0x9daa45d7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x16f3caa7
+}
+function {
+  id: 0x9dabd844
+  return_type_id: 0x6720d32f
+  parameter_id: 0x00c83ba6
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0x9dad0630
+  return_type_id: 0x6720d32f
+  parameter_id: 0x00b7947f
+}
+function {
+  id: 0x9dad5a62
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x2dcd339f
+  parameter_id: 0x32cf602c
+}
+function {
+  id: 0x9dad8b1c
+  return_type_id: 0x3e10b518
+  parameter_id: 0x3fa672fd
+}
+function {
+  id: 0x9daf738f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x00be4281
+}
+function {
+  id: 0x9db0376d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x00b7947f
+  parameter_id: 0x015f6fbc
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9db17288
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x2f99f236
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9db28ca2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x29147595
+}
+function {
+  id: 0x9db62354
+  return_type_id: 0x6720d32f
+  parameter_id: 0x060cf413
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9db63891
+  return_type_id: 0x6720d32f
+  parameter_id: 0x026525e9
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9db78784
+  return_type_id: 0x6720d32f
+  parameter_id: 0x00dd92af
+}
+function {
+  id: 0x9db81ea7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x12651688
+}
+function {
+  id: 0x9db8b5e8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04c27a37
+  parameter_id: 0x4585663f
+  parameter_id: 0x78662640
+  parameter_id: 0x3116d11e
+}
+function {
+  id: 0x9db8bc66
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04c27a37
+  parameter_id: 0x4585663f
+  parameter_id: 0x78662640
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9db8bf34
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04c27a37
+  parameter_id: 0x4585663f
+  parameter_id: 0x78662640
+  parameter_id: 0x33a1f2d7
+}
+function {
+  id: 0x9db91c60
+  return_type_id: 0x6720d32f
+  parameter_id: 0x09626b7f
+  parameter_id: 0x914dbfdc
+  parameter_id: 0x914dbfdc
+}
+function {
+  id: 0x9db97a4e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x00e66585
+}
+function {
+  id: 0x9db98aa7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x12651688
+  parameter_id: 0x06500055
+}
+function {
+  id: 0x9db9ddd5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x05c2a3ca
+  parameter_id: 0x52658204
+}
+function {
+  id: 0x9db9e43a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x12651688
+  parameter_id: 0x07ea77cd
+}
+function {
+  id: 0x9dbadc60
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x4585663f
+  parameter_id: 0x334da6fb
+}
+function {
+  id: 0x9dbc74e0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x03ce74cd
+  parameter_id: 0x3267a784
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2ecec671
+}
+function {
+  id: 0x9dbcc86d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x12651688
+  parameter_id: 0x135b2968
+}
+function {
+  id: 0x9dbd0440
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x1323af5e
+}
+function {
+  id: 0x9dbde56f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0db5f18a
+  parameter_id: 0xd41e888f
+}
+function {
+  id: 0x9dbe3773
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04c27a37
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6439f5ee
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x9dbe5ef7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x13f50292
+}
+function {
+  id: 0x9dbf2ec6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x12651688
+  parameter_id: 0x1cc18442
+}
+function {
+  id: 0x9dbf743c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x12651688
+  parameter_id: 0x1daa6efa
+}
+function {
+  id: 0x9dc044d0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x36e75420
+  parameter_id: 0x3413d17b
+}
+function {
+  id: 0x9dc0938f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3593bec8
+}
+function {
+  id: 0x9dc10f3e
+  return_type_id: 0x3e10b518
+  parameter_id: 0x3e146274
+}
+function {
+  id: 0x9dc26efd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x347303b4
+  parameter_id: 0x11a649c9
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9dc2a5d0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x351e2925
+}
+function {
+  id: 0x9dc4a276
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x0d4a22cb
+}
+function {
+  id: 0x9dc52cf1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9dc5375b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x015f6fbc
+  parameter_id: 0x0483e6f8
+}
+function {
+  id: 0x9dc54e14
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x0d313a47
+}
+function {
+  id: 0x9dc75ab3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x078316ff
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x4a057220
+}
+function {
+  id: 0x9dc78915
+  return_type_id: 0x6720d32f
+  parameter_id: 0x00c83ba6
+  parameter_id: 0x1d5934ce
+}
+function {
+  id: 0x9dc7bf88
+  return_type_id: 0x6720d32f
+  parameter_id: 0x00b7947f
+  parameter_id: 0x1aae6e0f
+}
+function {
+  id: 0x9dc7d522
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x9dc88463
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x379645d8
+}
+function {
+  id: 0x9dc91f17
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3176a085
+  parameter_id: 0x6720d32f
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9dc9962d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0x4585663f
+  parameter_id: 0x3a88a91e
+  parameter_id: 0x863d94eb
+}
+function {
+  id: 0x9dca25da
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0c2e195c
+  parameter_id: 0xd0b3a203
+  parameter_id: 0x06835e9c
+  parameter_id: 0x8bbf7ced
+}
+function {
+  id: 0x9dcceb48
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0130219f
+}
+function {
+  id: 0x9dcd39d1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x0f2ccb0e
+}
+function {
+  id: 0x9dcdcb37
+  return_type_id: 0x6720d32f
+  parameter_id: 0x056cf603
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9dcdf9a5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x052fac00
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9dce47ee
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0562c566
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9dcedb70
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01ace255
+  parameter_id: 0x09d43868
+  parameter_id: 0x09d43868
+  parameter_id: 0x09d43868
+  parameter_id: 0x09d43868
+}
+function {
+  id: 0x9dcf1028
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x347303b4
+  parameter_id: 0x20054a7b
+}
+function {
+  id: 0x9dcf64bf
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x00c72527
+  parameter_id: 0xf435685e
+  parameter_id: 0x3fe31e81
+}
+function {
+  id: 0x9dcf7ec3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3ad81610
+  parameter_id: 0xc9082b19
+  parameter_id: 0x246497bd
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9dd1eccf
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x08198c9a
+}
+function {
+  id: 0x9dd2d442
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x32caaf24
+  parameter_id: 0x3c8e29f7
+}
+function {
+  id: 0x9dd2e674
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x310ec01d
+}
+function {
+  id: 0x9dd45602
+  return_type_id: 0x6720d32f
+  parameter_id: 0x015f6fbc
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9dd4624b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x30afcff2
+}
+function {
+  id: 0x9dd5dbef
+  return_type_id: 0x6720d32f
+  parameter_id: 0x078316ff
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9dd714b7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9dd738c0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x015f6fbc
+}
+function {
+  id: 0x9dd7d5bf
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9dd808ae
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3232d45e
+  parameter_id: 0x1e0822f2
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9dd914f5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x02ed0755
+  parameter_id: 0x38ad83d0
+}
+function {
+  id: 0x9dda9bbe
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x33756485
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0x9ddaf106
+  return_type_id: 0x6720d32f
+  parameter_id: 0x052fac00
+  parameter_id: 0x4585663f
+  parameter_id: 0x1bf16028
+  parameter_id: 0x4585663f
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x9ddb08e6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9ddbed6b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x334c07d5
+}
+function {
+  id: 0x9ddbf7b4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0355dc72
+  parameter_id: 0x2cdbb77a
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9ddc5532
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x0b77f3e1
+}
+function {
+  id: 0x9ddc8abe
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x347303b4
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x3104c07e
+}
+function {
+  id: 0x9ddcade1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x32cf602c
+  parameter_id: 0x0534557d
+}
+function {
+  id: 0x9ddced60
+  return_type_id: 0x6720d32f
+  parameter_id: 0x015f6fbc
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0483e6f8
+}
+function {
+  id: 0x9ddd1db7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x052fac00
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9dde64dc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3472c895
+  parameter_id: 0x6720d32f
+  parameter_id: 0x2f244c08
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9dded94e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x347303b4
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9ddefbf5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01a688ae
+  parameter_id: 0x0deebc77
+}
+function {
+  id: 0x9ddf43ea
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3267a784
+}
+function {
+  id: 0x9de0ab2c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0x38d23361
+}
+function {
+  id: 0x9de11b8d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x9de18d63
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3c5396d4
+  parameter_id: 0x18bd6530
+  parameter_id: 0x0c45539b
+}
+function {
+  id: 0x9de31a69
+  return_type_id: 0x6720d32f
+  parameter_id: 0x000fdfa4
+  parameter_id: 0x1803abce
+}
+function {
+  id: 0x9de37bf9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0x38d23361
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9de4ff9b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3c88bbfa
+}
+function {
+  id: 0x9de5199d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0x2e18f543
+}
+function {
+  id: 0x9de56de8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x078316ff
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9de65e45
+  return_type_id: 0x6720d32f
+  parameter_id: 0x05c2a3ca
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9de673b1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0188608c
+  parameter_id: 0x01222f7d
+}
+function {
+  id: 0x9de6d8d5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x074f1a14
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9de6ffa0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0x2ec35650
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9de76a63
+  return_type_id: 0x6720d32f
+  parameter_id: 0x019e2530
+}
+function {
+  id: 0x9de78077
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3ddc969e
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9de83e4d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0x066d2c35
+}
+function {
+  id: 0x9de8d563
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x39f008d1
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9de8f9f8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3c41c19b
+  parameter_id: 0x3c8e29f7
+}
+function {
+  id: 0x9de9e113
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3c07fb40
+  parameter_id: 0x3c8e29f7
+}
+function {
+  id: 0x9deb25ef
+  return_type_id: 0x6720d32f
+  parameter_id: 0x026c3dea
+  parameter_id: 0x3f2e25a0
+  parameter_id: 0x31c4b2bb
+}
+function {
+  id: 0x9deb64a3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01ae1e33
+}
+function {
+  id: 0x9dec5d8d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x38d23361
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9ded7ebc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0x00c72527
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9dee9fa0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x9defdaa5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0x051414e1
+}
+function {
+  id: 0x9df11d57
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x39f008d1
+}
+function {
+  id: 0x9df18afd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+}
+function {
+  id: 0x9df2a123
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0x9df2edfa
+  return_type_id: 0x6720d32f
+  parameter_id: 0x030b9acf
+  parameter_id: 0x26a490c7
+  parameter_id: 0xa9e8970d
+}
+function {
+  id: 0x9df3327a
+  return_type_id: 0x46fba20b
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x9df344e2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x00dd92af
+  parameter_id: 0x12c0ba43
+  parameter_id: 0x3f063da2
+}
+function {
+  id: 0x9df4075f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01e0b0cf
+  parameter_id: 0x01c5a749
+  parameter_id: 0x2f7b7919
+}
+function {
+  id: 0x9df52a21
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x38fdd541
+}
+function {
+  id: 0x9df535bf
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x38fa32ef
+}
+function {
+  id: 0x9df7985b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x38514bfb
+}
+function {
+  id: 0x9dfae298
+  return_type_id: 0x6720d32f
+  parameter_id: 0x026525e9
+  parameter_id: 0x38d23361
+}
+function {
+  id: 0x9dfc9c14
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01f1fcec
+}
+function {
+  id: 0x9dfe427d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0c2e195c
+  parameter_id: 0xd0b3a203
+  parameter_id: 0xd0b3a203
+  parameter_id: 0xf1a6dfed
+  parameter_id: 0x0ff8f9af
+}
+function {
+  id: 0x9dff0bbb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e2de599
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9dff38c4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0355dc72
+  parameter_id: 0x23167dcb
+  parameter_id: 0x9bd401b6
+}
+function {
+  id: 0x9dff6bd8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x03f70c68
+  parameter_id: 0x24d65b62
+  parameter_id: 0x4585663f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x4585663f
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9dff7af4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x03f70c68
+  parameter_id: 0x24d65b62
+  parameter_id: 0x4585663f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9dffa803
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0a134144
+  parameter_id: 0xbdd18903
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9e0067b1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0fabaf3b
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x120540d1
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x9e00cde1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0fabaf3b
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x120540d1
+  parameter_id: 0x1253769c
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9e00d6be
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0fabaf3b
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x120540d1
+  parameter_id: 0x1253769c
+}
+function {
+  id: 0x9e00ec7d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0fabaf3b
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x120540d1
+  parameter_id: 0x1253769c
+  parameter_id: 0xeb0f6de6
+}
+function {
+  id: 0x9e00f472
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0fabaf3b
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x120540d1
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x120540d1
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9e026d74
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0fabaf3b
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x1253769c
+}
+function {
+  id: 0x9e06a19a
+  return_type_id: 0x3e10b518
+  parameter_id: 0x3e10b518
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x9e08dfbb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0c467c34
+  parameter_id: 0x2668e644
+}
+function {
+  id: 0x9e09431f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0e2680c2
+}
+function {
+  id: 0x9e0a7037
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0130219f
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x9e0db81f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0fabaf3b
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x20e8fc5a
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9e11d049
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x283d9b05
+  parameter_id: 0x6720d32f
+  parameter_id: 0x270c2906
+  parameter_id: 0x36c97631
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9e19651e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0e6618c4
+}
+function {
+  id: 0x9e19cd45
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0f78474f
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x9e1a0a92
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0e6ba6f7
+}
+function {
+  id: 0x9e1a2d6b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0db3ac0f
+  parameter_id: 0x3d8951f4
+}
+function {
+  id: 0x9e1dd697
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0fabaf3b
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9e1f3cf5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0f9d9f68
+  parameter_id: 0x18f9f5e3
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9e1fb710
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0e7d50ff
+}
+function {
+  id: 0x9e20c0b8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0fabaf3b
+  parameter_id: 0x120540d1
+  parameter_id: 0x0b756bd6
+}
+function {
+  id: 0x9e215925
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ab9fa4c
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0x9e21c007
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0f445cde
+  parameter_id: 0x1c3dbe5a
+  parameter_id: 0x030b9acf
+}
+function {
+  id: 0x9e256fd0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0de4c6b1
+  parameter_id: 0x372f54f8
+}
+function {
+  id: 0x9e25d5af
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0e86f8f4
+  parameter_id: 0x01222f7d
+}
+function {
+  id: 0x9e2778da
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0c467c34
+  parameter_id: 0x2e2c982d
+  parameter_id: 0x3ada60b4
+}
+function {
+  id: 0x9e28f828
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0xf435685e
+  parameter_id: 0x269dd0f7
+}
+function {
+  id: 0x9e291eaa
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0fabaf3b
+  parameter_id: 0x120540d1
+  parameter_id: 0x2c0d2028
+}
+function {
+  id: 0x9e29ce42
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0c467c34
+  parameter_id: 0x2e2c982d
+}
+function {
+  id: 0x9e2a24ca
+  return_type_id: 0x2a4c6b85
+  parameter_id: 0x0b27dc43
+  parameter_id: 0x3e10b518
+  parameter_id: 0x1b44744f
+}
+function {
+  id: 0x9e2c0b42
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0e56cd62
+  parameter_id: 0x0e56cd62
+}
+function {
+  id: 0x9e2ef574
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x239e18b5
+  parameter_id: 0x239e18b5
+  parameter_id: 0x057af395
+  parameter_id: 0x09451098
+  parameter_id: 0xc9082b19
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x9e31377c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0f78474f
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x9e37a309
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0de4c6b1
+  parameter_id: 0x3132930f
+  parameter_id: 0x293f2663
+  parameter_id: 0x3da0a8e3
+  parameter_id: 0x0b036186
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9e3d18cf
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0de4c6b1
+  parameter_id: 0x3132930f
+}
+function {
+  id: 0x9e3d239f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x238091f9
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9e3f1247
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0effc5a1
+}
+function {
+  id: 0x9e41ea47
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0f627bc8
+  parameter_id: 0x0665e6b6
+}
+function {
+  id: 0x9e42d2a7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0de4c6b1
+  parameter_id: 0x2eab5b8a
+  parameter_id: 0x00c72527
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9e441880
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0b2665f4
+  parameter_id: 0x452ab998
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9e49e56e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0b7c4f67
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9e52789b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0de4c6b1
+  parameter_id: 0x293f2663
+  parameter_id: 0x3da0a8e3
+  parameter_id: 0x0faae5b1
+}
+function {
+  id: 0x9e54ea0f
+  return_type_id: 0x3e10b518
+  parameter_id: 0x3043f6b1
+}
+function {
+  id: 0x9e559491
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x3e10b518
+  parameter_id: 0x1479c6e7
+  parameter_id: 0x2d8ee262
+}
+function {
+  id: 0x9e5980cd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0f6ef6cc
+  parameter_id: 0x00b7947f
+}
+function {
+  id: 0x9e5b5e9c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0f6ef6cc
+}
+function {
+  id: 0x9e5b71a8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0xd36b370e
+}
+function {
+  id: 0x9e5d7885
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0de4c6b1
+  parameter_id: 0x2669d715
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9e5ef2fc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0f78474f
+}
+function {
+  id: 0x9e61ffc7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x00c72527
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9e627346
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x32a623d7
+  parameter_id: 0x0277bf8a
+  parameter_id: 0x0277bf8a
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x9e631da5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x09451098
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x1c934597
+  parameter_id: 0x18bd6530
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x9e663e24
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x33b77109
+  parameter_id: 0x0277bf8a
+}
+function {
+  id: 0x9e6bce91
+  return_type_id: 0x6720d32f
+  parameter_id: 0x09e67e75
+  parameter_id: 0x6720d32f
+  parameter_id: 0x38c5be1f
+}
+function {
+  id: 0x9e6d0ca6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0fb7be27
+}
+function {
+  id: 0x9e6d2eab
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x32a623d7
+  parameter_id: 0x3ca7539e
+  parameter_id: 0x3ba05ad7
+  parameter_id: 0x3b461cc8
+  parameter_id: 0x6720d32f
+  parameter_id: 0xc9082b19
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0xe62ebf07
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x9e6e36b1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x09a83f1c
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x366f4294
+  parameter_id: 0x0e656e5d
+}
+function {
+  id: 0x9e711486
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0de4c6b1
+  parameter_id: 0x2669d715
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9e72e410
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0f627bc8
+  parameter_id: 0x0a22a423
+  parameter_id: 0x084d74bf
+}
+function {
+  id: 0x9e732029
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ee13889
+  parameter_id: 0x13689f5b
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9e768332
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0dc9e98b
+  parameter_id: 0x21069feb
+}
+function {
+  id: 0x9e768b87
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x33e53462
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9e789129
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x32a623d7
+  parameter_id: 0x6f23eca1
+  parameter_id: 0x6f23eca1
+  parameter_id: 0x0efa6637
+  parameter_id: 0x18bd6530
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x1d44326e
+}
+function {
+  id: 0x9e792fe6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0930c6d9
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9e799cc0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0db3ac0f
+  parameter_id: 0x25653b02
+}
+function {
+  id: 0x9e7f936c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0c485c36
+  parameter_id: 0x3f0185ef
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9e821f5a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0cc78943
+  parameter_id: 0x0cc78943
+}
+function {
+  id: 0x9e83890f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0db5f18a
+  parameter_id: 0x1b8590a8
+}
+function {
+  id: 0x9e843488
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0f9d9f68
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x29a8570f
+  parameter_id: 0x29a8570f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9e84fe49
+  return_type_id: 0x6720d32f
+  parameter_id: 0x00c83ba6
+  parameter_id: 0xcd84e3cd
+}
+function {
+  id: 0x9e87e095
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0fabaf3b
+  parameter_id: 0x3a8e2ac6
+  parameter_id: 0x1396794c
+  parameter_id: 0xc9082b19
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9e8b4d60
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0e2680c2
+  parameter_id: 0x2f99f236
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x9e8b5e66
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x09451098
+  parameter_id: 0x18bd6530
+  parameter_id: 0x054f691a
+  parameter_id: 0x3fe8ca70
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9e8b6578
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0c2e195c
+}
+function {
+  id: 0x9e8d7e1b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x09451098
+  parameter_id: 0x0277bf8a
+  parameter_id: 0x239e18b5
+  parameter_id: 0x1393392e
+  parameter_id: 0xc9082b19
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x9e8fd7cb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x057af395
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x9e917c22
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0c467c34
+}
+function {
+  id: 0x9e92f422
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0c485c36
+}
+function {
+  id: 0x9e948905
+  return_type_id: 0x6720d32f
+  parameter_id: 0x00c83ba6
+  parameter_id: 0xcd84e3cd
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9e950837
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0f78474f
+  parameter_id: 0x33756485
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9e955b54
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0c56e1ee
+}
+function {
+  id: 0x9e9a6f39
+  return_type_id: 0x6720d32f
+  parameter_id: 0x08326638
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9ea02907
+  return_type_id: 0x6720d32f
+  parameter_id: 0x00daa23b
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x9ea1fe03
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x02888010
+  parameter_id: 0x0e8833d6
+}
+function {
+  id: 0x9ea548d2
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ae4a2c7
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9ea5f5ea
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0e6618c4
+  parameter_id: 0x29563010
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9ea87e0f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ca27481
+}
+function {
+  id: 0x9eb16478
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x054f691a
+  parameter_id: 0x33b77109
+  parameter_id: 0x3283ded6
+}
+function {
+  id: 0x9eb724d7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0e2680c2
+  parameter_id: 0x2f99f236
+}
+function {
+  id: 0x9eb7e15e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x054f691a
+  parameter_id: 0x2cc3e4c8
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3a40dd6c
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x9eb8629a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0cc78943
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x9ebc14d6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0e6618c4
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x9ebe912b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0effc5a1
+  parameter_id: 0x2060db23
+}
+function {
+  id: 0x9ebfed71
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x054f691a
+  parameter_id: 0x09451098
+  parameter_id: 0x33756485
+  parameter_id: 0xc9082b19
+  parameter_id: 0x0277bf8a
+  parameter_id: 0x0cbf60eb
+  parameter_id: 0xc9082b19
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x9ec5d248
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0db5f18a
+  parameter_id: 0x0a134144
+}
+function {
+  id: 0x9ec753a8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x1bb6a471
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x9ec960c7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0cadd9f1
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9eca8b9b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9ecc55aa
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0d32da14
+}
+function {
+  id: 0x9eccfc59
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ca316ec
+  parameter_id: 0x18bd6530
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9ecd0712
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0cadd9f1
+  parameter_id: 0x18bd6530
+  parameter_id: 0x18bd6530
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x9ecd60da
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ca316ec
+  parameter_id: 0x18bd6530
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9ece22e0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0b27dc43
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x9d2a986c
+  parameter_id: 0x206cc358
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9ecf4f9e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0cadd9f1
+  parameter_id: 0x18bd6530
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9ecf9998
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0e6618c4
+  parameter_id: 0x35bf21bb
+}
+function {
+  id: 0x9ed1826a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0d458514
+}
+function {
+  id: 0x9ed1d9aa
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0xc9082b19
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x9ed5aa51
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x9ed5fa16
+  return_type_id: 0x3e03375b
+  parameter_id: 0x26ee682a
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9ed68372
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0xf017819f
+}
+function {
+  id: 0x9eda9368
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x1f9da9a8
+  parameter_id: 0x3d72b431
+  parameter_id: 0xf1a6dfed
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x9edc3d1c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x1d44326e
+  parameter_id: 0x054f691a
+}
+function {
+  id: 0x9edc8980
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x1d44326e
+  parameter_id: 0x054f691a
+  parameter_id: 0x2d2736e0
+}
+function {
+  id: 0x9edd2b09
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x1d44326e
+  parameter_id: 0x054f691a
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9edfdadc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0d7ce7cc
+}
+function {
+  id: 0x9ee20867
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0d8bad22
+}
+function {
+  id: 0x9ee3446f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0bfc9031
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9ee4cc7b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x9ee57725
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x106029c6
+  parameter_id: 0x34543a8d
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9ee6e502
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0xfc0e1dbd
+}
+function {
+  id: 0x9ee7a4e9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0dc9e98b
+  parameter_id: 0x054f691a
+}
+function {
+  id: 0x9ee7e85b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01c5a749
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x9eeae021
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x10a78bb8
+}
+function {
+  id: 0x9eec082c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0db3ac0f
+}
+function {
+  id: 0x9eec8be1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x09a83f1c
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x11cfee5a
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9eec962e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0c2e195c
+  parameter_id: 0x19fcd5b2
+}
+function {
+  id: 0x9eecc00b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0e86f8f4
+  parameter_id: 0x33756485
+  parameter_id: 0x01222f7d
+}
+function {
+  id: 0x9eed9829
+  return_type_id: 0x6720d32f
+  parameter_id: 0x09a83f1c
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9eedf034
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0b7c4f67
+  parameter_id: 0x6d9cce5f
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0x9ef0369c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x106029c6
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9ef16e60
+  return_type_id: 0x6720d32f
+  parameter_id: 0x09a83f1c
+  parameter_id: 0x4585663f
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9ef1aa1f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x106029c6
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9ef2994d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0dc9e98b
+}
+function {
+  id: 0x9ef2dc18
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0b7c4f67
+  parameter_id: 0x6d9cce5f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9ef35806
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0b27dc43
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x3e10b518
+  parameter_id: 0x0258f96e
+  parameter_id: 0xf1a6dfed
+  parameter_id: 0x18bd6530
+  parameter_id: 0x0d9e81b2
+}
+function {
+  id: 0x9ef48009
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0effc5a1
+  parameter_id: 0x32e49390
+}
+function {
+  id: 0x9ef82027
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0e136ffa
+  parameter_id: 0x3f063da2
+}
+function {
+  id: 0x9ef82c36
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0e56cd62
+  parameter_id: 0x38d23361
+  parameter_id: 0x38d23361
+}
+function {
+  id: 0x9ef8922a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0e2680c2
+  parameter_id: 0x3c744d69
+}
+function {
+  id: 0x9ef906fc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x09a83f1c
+  parameter_id: 0x4585663f
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9ef9d283
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0de4c6b1
+}
+function {
+  id: 0x9efa0528
+  return_type_id: 0x6720d32f
+  parameter_id: 0x09a83f1c
+  parameter_id: 0x4585663f
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x9efb4c32
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0deebc77
+}
+function {
+  id: 0x9f0243b3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x09a83f1c
+  parameter_id: 0x3c59dbe9
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9f035484
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0bbe1c3e
+  parameter_id: 0x18bd6530
+  parameter_id: 0x38d23361
+  parameter_id: 0x33756485
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x9f03c160
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0a747547
+  parameter_id: 0x078fc7bc
+}
+function {
+  id: 0x9f03ecc8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9f04337e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0a134144
+}
+function {
+  id: 0x9f0754c9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0a1edf98
+}
+function {
+  id: 0x9f0d3989
+  return_type_id: 0x6720d32f
+  parameter_id: 0x01e0b0cf
+  parameter_id: 0xbb683ae4
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0b27dc43
+}
+function {
+  id: 0x9f0e78e6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x08326638
+  parameter_id: 0x24d8c7ab
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9f125915
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ae4a2c7
+  parameter_id: 0x0ae4a2c7
+}
+function {
+  id: 0x9f12709b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x08bd7371
+  parameter_id: 0x2f73da3b
+}
+function {
+  id: 0x9f15a216
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x9f15bc8d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x060cf413
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x9f15f96a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0bbe1c3e
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x9f17e634
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0c2e195c
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9f18b2f6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0930c6d9
+  parameter_id: 0x35181bef
+}
+function {
+  id: 0x9f1d3364
+  return_type_id: 0x6720d32f
+  parameter_id: 0x09a83f1c
+  parameter_id: 0x3df7e337
+}
+function {
+  id: 0x9f1dcaea
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0917901f
+  parameter_id: 0x36337082
+}
+function {
+  id: 0x9f1e1154
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0355dc72
+  parameter_id: 0x9bd401b6
+  parameter_id: 0x914dbfdc
+  parameter_id: 0x23167dcb
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x9f21b31c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0bb0c019
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9f22c05d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x09427c40
+  parameter_id: 0x3caf1899
+}
+function {
+  id: 0x9f242d9f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0a134144
+  parameter_id: 0x0b30ee00
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9f24648b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x097315c2
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x9f25fe02
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ee13889
+  parameter_id: 0x4754c3e4
+}
+function {
+  id: 0x9f266269
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0a9a051a
+}
+function {
+  id: 0x9f27fe87
+  return_type_id: 0x6720d32f
+  parameter_id: 0x060cf413
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x9f2caa56
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0e8833d6
+}
+function {
+  id: 0x9f2cabca
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0e8833d6
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9f2dbdb4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x08bd7371
+  parameter_id: 0x24d8c7ab
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9f2e9dbc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ab9fa4c
+}
+function {
+  id: 0x9f2f2fb7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0a1edf98
+  parameter_id: 0x0a1edf98
+}
+function {
+  id: 0x9f34fd43
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9f39cb9e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ae4a2c7
+}
+function {
+  id: 0x9f3d0562
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0b7c4f67
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9f3d453e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0af69844
+}
+function {
+  id: 0x9f3dfca4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ca27481
+  parameter_id: 0x6720d32f
+  parameter_id: 0x270c2906
+  parameter_id: 0x36c97631
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9f3e4db7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0b716c32
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9f3e9807
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0c2e195c
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9f41a065
+  return_type_id: 0x6720d32f
+  parameter_id: 0x07f2af49
+  parameter_id: 0xc9082b19
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9f41a9bc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0d7ce7cc
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0483e6f8
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9f431aa6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0b27dc43
+  parameter_id: 0x0258f96e
+  parameter_id: 0x0db5f18a
+}
+function {
+  id: 0x9f435990
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0d7ce7cc
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9f471160
+  return_type_id: 0x6720d32f
+  parameter_id: 0x09427c40
+  parameter_id: 0x25db57c0
+}
+function {
+  id: 0x9f48e764
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0f78474f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9f49143f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0b27dc43
+}
+function {
+  id: 0x9f4a97c1
+  return_type_id: 0x6720d32f
+  parameter_id: 0x078316ff
+  parameter_id: 0xc9082b19
+  parameter_id: 0x38d23361
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x9f4d7f57
+  return_type_id: 0x6720d32f
+  parameter_id: 0x078316ff
+  parameter_id: 0xc9082b19
+  parameter_id: 0x295c7202
+  parameter_id: 0xc9082b19
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x9f4e1f6b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x06541377
+  parameter_id: 0xd0b3a203
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3ebcd127
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0x9f4ee14e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x06541377
+  parameter_id: 0xd0b3a203
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9f4f3809
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0a85fcb6
+  parameter_id: 0x1ba902d8
+}
+function {
+  id: 0x9f4f7dcd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x06541377
+  parameter_id: 0xd0b3a203
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9f5021bd
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0b27dc43
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0x9f5327f4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0b4f136e
+}
+function {
+  id: 0x9f53b7fd
+  return_type_id: 0x3e10b518
+  parameter_id: 0x322c8c4b
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9f59863d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0f78474f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9f59f553
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0db3ac0f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9f5a91a4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0d7ce7cc
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9f5b4b3a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x08956bf0
+  parameter_id: 0x3be4ec15
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9f5cb823
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0b716c32
+}
+function {
+  id: 0x9f5e51ba
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x9f5fa4b7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0b716c32
+  parameter_id: 0x00c72527
+}
+function {
+  id: 0x9f5ff0f6
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0b7c4f67
+}
+function {
+  id: 0x9f63513c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0930c6d9
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x9f6374a9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x09626b7f
+  parameter_id: 0x2ec35650
+}
+function {
+  id: 0x9f63f44d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0930c6d9
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x9f64b182
+  return_type_id: 0x6720d32f
+  parameter_id: 0x08956bf0
+  parameter_id: 0x3f0185ef
+  parameter_id: 0xf435685e
+  parameter_id: 0x00c72527
+}
+function {
+  id: 0x9f64cceb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ae4a2c7
+  parameter_id: 0x1741dd74
+}
+function {
+  id: 0x9f6551cf
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0de4c6b1
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9f67ec8c
+  return_type_id: 0x3e10b518
+  parameter_id: 0x348fecbf
+}
+function {
+  id: 0x9f6a0f7c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0930c6d9
+  parameter_id: 0x29b77961
+}
+function {
+  id: 0x9f6a1bb3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0a134144
+  parameter_id: 0x18bd6530
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9f6bb6d8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x07f2af49
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9f6e1a01
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0dc9e98b
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9f6f73ed
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0beab59b
+  parameter_id: 0x054f691a
+}
+function {
+  id: 0x9f72f53e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x92233392
+  parameter_id: 0xbdd18903
+  parameter_id: 0xf435685e
+  parameter_id: 0x0258f96e
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x9f7a4e49
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0beab59b
+}
+function {
+  id: 0x9f7cdc88
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0483e6f8
+  parameter_id: 0xf435685e
+  parameter_id: 0x3e10b518
+  parameter_id: 0xe5e56f65
+}
+function {
+  id: 0x9f7d0578
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0de4c6b1
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9f7d0838
+  return_type_id: 0x6720d32f
+  parameter_id: 0x09626b7f
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x9f7ddfb5
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0483e6f8
+  parameter_id: 0xf435685e
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0x9f7fc723
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0bfc9031
+}
+function {
+  id: 0x9f808c95
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0c6c61ad
+  parameter_id: 0x4585663f
+  parameter_id: 0x33fb2978
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9f80925b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0b540cb3
+  parameter_id: 0x3104c07e
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9f809421
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0b7c4f67
+  parameter_id: 0x310ec01d
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9f80a51b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0b27dc43
+  parameter_id: 0x326c4938
+}
+function {
+  id: 0x9f80af06
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0c6c61ad
+  parameter_id: 0x4585663f
+  parameter_id: 0x33756485
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9f83d2d0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0b27dc43
+  parameter_id: 0x32b1bbe6
+}
+function {
+  id: 0x9f858b89
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0de4c6b1
+  parameter_id: 0x5d8155a5
+  parameter_id: 0x2669d715
+  parameter_id: 0xf435685e
+  parameter_id: 0x5d8155a5
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9f87b817
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0917901f
+  parameter_id: 0x10afcfdf
+}
+function {
+  id: 0x9f89d33b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0e56cd62
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9f8d0629
+  return_type_id: 0x6720d32f
+  parameter_id: 0x078316ff
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x9f93bc17
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04f7a60d
+  parameter_id: 0xc9082b19
+  parameter_id: 0x295c7202
+  parameter_id: 0x3f0185ef
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0x9f93d86d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04f7a60d
+  parameter_id: 0xc9082b19
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x9f958461
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0a134144
+  parameter_id: 0x246dc7d4
+}
+function {
+  id: 0x9f95c053
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0e2680c2
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9f97a24e
+  return_type_id: 0x11e6864c
+  parameter_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9f97f44a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04ca9246
+  parameter_id: 0xc9082b19
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0x9f992a00
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04f7a60d
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x9f9af3ae
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04f7a60d
+  parameter_id: 0xc9082b19
+  parameter_id: 0x00c72527
+  parameter_id: 0xf435685e
+  parameter_id: 0xe342b1c2
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9f9cba56
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ae4a2c7
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x9f9d90bf
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0875ce41
+}
+function {
+  id: 0x9f9e0655
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0a22a423
+  parameter_id: 0x246dc7d4
+  parameter_id: 0x1c3dbe5a
+  parameter_id: 0x3d00a13c
+}
+function {
+  id: 0x9fa12542
+  return_type_id: 0x6720d32f
+  parameter_id: 0x078316ff
+  parameter_id: 0xf4e0a3bd
+  parameter_id: 0x4a057220
+}
+function {
+  id: 0x9fa3b723
+  return_type_id: 0x6720d32f
+  parameter_id: 0x08a8dfa4
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0x9fa510e8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x08dcfb76
+  parameter_id: 0x0561578b
+  parameter_id: 0x1b4ba19a
+  parameter_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0x9fa51880
+  return_type_id: 0x6720d32f
+  parameter_id: 0x08dcfb76
+  parameter_id: 0x0561578b
+  parameter_id: 0x1b4ba19a
+  parameter_id: 0x6720d32f
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0x9fab680a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04f7a60d
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x9fac2fbc
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04b193cc
+  parameter_id: 0xc9082b19
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x9fad711c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x09427c40
+  parameter_id: 0x1e820193
+  parameter_id: 0x18bd6530
+  parameter_id: 0x4585663f
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x9fae3c48
+  return_type_id: 0x6720d32f
+  parameter_id: 0x09427c40
+  parameter_id: 0x1e820193
+  parameter_id: 0x11cffa09
+  parameter_id: 0x0ee3c725
+}
+function {
+  id: 0x9faf0c45
+  return_type_id: 0x6720d32f
+  parameter_id: 0x09427c40
+  parameter_id: 0x1e820193
+  parameter_id: 0x14564b9e
+  parameter_id: 0x18bd6530
+  parameter_id: 0x33756485
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x9faf6f77
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0bfc9031
+  parameter_id: 0x342a1515
+}
+function {
+  id: 0x9faf8e70
+  return_type_id: 0x6720d32f
+  parameter_id: 0x09427c40
+  parameter_id: 0x1e820193
+  parameter_id: 0x14564b9e
+  parameter_id: 0x34ecba28
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0x9fb0a0b3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0a1edf98
+  parameter_id: 0x2b8f13b3
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9fb1dc71
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0b716c32
+  parameter_id: 0x3f0185ef
+  parameter_id: 0x4585663f
+  parameter_id: 0x00c72527
+}
+function {
+  id: 0x9fb1df6d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0b716c32
+  parameter_id: 0x3f0185ef
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9fb1e92c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x078316ff
+  parameter_id: 0xf2289b65
+  parameter_id: 0x6720d32f
+  parameter_id: 0x295c7202
+  parameter_id: 0x00c72527
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x9fb1f25d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x08ba388c
+  parameter_id: 0x0130219f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9fb27590
+  return_type_id: 0x6720d32f
+  parameter_id: 0x043ecddb
+  parameter_id: 0xcf497245
+}
+function {
+  id: 0x9fb3a41e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x078316ff
+  parameter_id: 0xf4e0a3bd
+}
+function {
+  id: 0x9fb5a087
+  return_type_id: 0x6720d32f
+  parameter_id: 0x097315c2
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2dcd339f
+}
+function {
+  id: 0x9fb6956c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x09451098
+  parameter_id: 0x18bd6530
+  parameter_id: 0x11cfee5a
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0x9fb74f10
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0930c6d9
+  parameter_id: 0x1dd03438
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9fb79d7e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x09451098
+  parameter_id: 0x18bd6530
+  parameter_id: 0x133f8d39
+}
+function {
+  id: 0x9fb8c474
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0b716c32
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0x9fb9eee9
+  return_type_id: 0x6720d32f
+  parameter_id: 0x08e43718
+}
+function {
+  id: 0x9fbab717
+  return_type_id: 0x6720d32f
+  parameter_id: 0x08e950e0
+}
+function {
+  id: 0x9fbd796f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04f7a60d
+  parameter_id: 0xc9082b19
+  parameter_id: 0x914dbfdc
+}
+function {
+  id: 0x9fc271b0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0f78474f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9fc5a289
+  return_type_id: 0x6720d32f
+  parameter_id: 0x054f691a
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+  parameter_id: 0x32a623d7
+  parameter_id: 0xc9082b19
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9fc5d15c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0a134144
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x9cf21ab5
+}
+function {
+  id: 0x9fc5f660
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0a134144
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9fc8463b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0a134144
+  parameter_id: 0x33756485
+  parameter_id: 0x06835e9c
+}
+function {
+  id: 0x9fc875b4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0a134144
+  parameter_id: 0x33756485
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0x9fc8d916
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ae4a2c7
+  parameter_id: 0x3c44a21c
+}
+function {
+  id: 0x9fc9e6ec
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0a134144
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9fcafcaa
+  return_type_id: 0x6720d32f
+  parameter_id: 0x078316ff
+  parameter_id: 0xeab68ea2
+}
+function {
+  id: 0x9fcb5ff8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x08dcfb76
+  parameter_id: 0x1b4ba19a
+  parameter_id: 0x4585663f
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9fcca68f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x09483d5e
+  parameter_id: 0x01e0b0cf
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9fccd299
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0930c6d9
+}
+function {
+  id: 0x9fce093a
+  return_type_id: 0x0de7ba15
+  parameter_id: 0x1340339a
+  parameter_id: 0x38df6aa0
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9fce4cfe
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0a134144
+  parameter_id: 0x33756485
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9fce79d4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0d7ce7cc
+  parameter_id: 0x4585663f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0x13580d6c
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9fcf1bf3
+  return_type_id: 0x6720d32f
+  parameter_id: 0x04b193cc
+  parameter_id: 0xd9fefea9
+  parameter_id: 0x18bd6530
+  parameter_id: 0x92233392
+}
+function {
+  id: 0x9fcfce0d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0930c6d9
+  parameter_id: 0x00c72527
+}
+function {
+  id: 0x9fd07c3f
+  return_type_id: 0x6720d32f
+  parameter_id: 0x09427c40
+}
+function {
+  id: 0x9fd15b99
+  return_type_id: 0x11c404ba
+}
+function {
+  id: 0x9fd1a709
+  return_type_id: 0x6720d32f
+  parameter_id: 0x09451098
+}
+function {
+  id: 0x9fd46b71
+  return_type_id: 0x6720d32f
+  parameter_id: 0x05c2a3ca
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x9fd78b86
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0b3a3706
+  parameter_id: 0x26795a38
+}
+function {
+  id: 0x9fd879f0
+  return_type_id: 0x6720d32f
+  parameter_id: 0x09626b7f
+}
+function {
+  id: 0x9fd8b4a4
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0b3a3706
+  parameter_id: 0x26795a38
+  parameter_id: 0x3cfc8982
+}
+function {
+  id: 0x9fd9ef3d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0930c6d9
+  parameter_id: 0x054f691a
+}
+function {
+  id: 0x9fda0c79
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0f78474f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9fda9d1b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0b27dc43
+  parameter_id: 0x24e24923
+}
+function {
+  id: 0x9fdbb984
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0f78474f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9fdbd641
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0f78474f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0x9fe1d618
+  return_type_id: 0x6720d32f
+  parameter_id: 0x09427c40
+  parameter_id: 0x0d30b9c3
+  parameter_id: 0x15a30023
+}
+function {
+  id: 0x9fe6297b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x05c2a3ca
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0x9fe7c091
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0d7ce7cc
+  parameter_id: 0x4585663f
+  parameter_id: 0xb3e7bac9
+  parameter_id: 0xb3e7bac9
+  parameter_id: 0xe8034002
+  parameter_id: 0xe8034002
+  parameter_id: 0x18bd6530
+  parameter_id: 0xe8034002
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9feaece8
+  return_type_id: 0x6720d32f
+  parameter_id: 0x09a83f1c
+}
+function {
+  id: 0x9feb0f83
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0f78474f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0x9fee7b3a
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0a1edf98
+  parameter_id: 0x3ca8bc60
+  parameter_id: 0x6720d32f
+  parameter_id: 0x914dbfdc
+}
+function {
+  id: 0x9fef9fb7
+  return_type_id: 0x6720d32f
+  parameter_id: 0x09319f13
+  parameter_id: 0x0b27dc43
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0x9fefc71b
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0de4c6b1
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9ff86624
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ae4a2c7
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0x9ff8c355
+  return_type_id: 0x6720d32f
+  parameter_id: 0x0ae4a2c7
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0x9ffa167c
+  return_type_id: 0x6720d32f
+  parameter_id: 0x09427c40
+  parameter_id: 0x038b6fa0
+  parameter_id: 0x9547a3da
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0x9ffaa344
+  return_type_id: 0x1da466a8
+  parameter_id: 0x2b9ed6ff
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0x9ffb698d
+  return_type_id: 0x6720d32f
+  parameter_id: 0x09caea1f
+  parameter_id: 0x02862e14
+  parameter_id: 0x0ca27481
+}
+function {
+  id: 0xa00069e0
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x4585663f
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xa0061d65
+  return_type_id: 0x3e10b518
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0xa017504e
+  return_type_id: 0x257d12af
+  parameter_id: 0x1997473c
+  parameter_id: 0x92233392
+}
+function {
+  id: 0xa02dcb2f
+  return_type_id: 0x0258f96e
+  parameter_id: 0x340bec45
+}
+function {
+  id: 0xa040d060
+  return_type_id: 0x0258f96e
+  parameter_id: 0x31e58fe0
+  parameter_id: 0x4585663f
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0xa075fe88
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x1dce0fdd
+  parameter_id: 0x0aa6efc8
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xa0815516
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x1aee9939
+  parameter_id: 0x4585663f
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xa08f5503
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x6720d32f
+  parameter_id: 0x27a7c613
+  parameter_id: 0x27a7c613
+}
+function {
+  id: 0xa09dc212
+  return_type_id: 0x0a22a423
+  parameter_id: 0x246dc7d4
+  parameter_id: 0x1c3dbe5a
+}
+function {
+  id: 0xa0c6098f
+  return_type_id: 0x3e10b518
+  parameter_id: 0xca0878b1
+}
+function {
+  id: 0xa10f62d5
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0xa12d9647
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x1b36c7a2
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x4585663f
+  parameter_id: 0x0b30ee00
+  parameter_id: 0x0814e9f6
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0xa148cf35
+  return_type_id: 0x3e10b518
+  parameter_id: 0xcc33625b
+}
+function {
+  id: 0xa1595676
+  return_type_id: 0x257d12af
+  parameter_id: 0x17dabdcd
+  parameter_id: 0x257d12af
+}
+function {
+  id: 0xa1621b58
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x4585663f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0xa1b14a4d
+  return_type_id: 0x0258f96e
+  parameter_id: 0x3267a784
+  parameter_id: 0x0258f96e
+  parameter_id: 0x391f15ea
+  parameter_id: 0x2dec91ef
+}
+function {
+  id: 0xa1d613d8
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x18bd6530
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0xa1e954d4
+  return_type_id: 0x6720d32f
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0xa21fd62f
+  return_type_id: 0x0a1edf98
+  parameter_id: 0x2b8f13b3
+}
+function {
+  id: 0xa22b5357
+  return_type_id: 0x1259e377
+  parameter_id: 0x0ca27481
+  parameter_id: 0x3861403d
+  parameter_id: 0x270c2906
+  parameter_id: 0x3b461cc8
+}
+function {
+  id: 0xa2832510
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x12e75923
+  parameter_id: 0x4585663f
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xa2843be3
+  return_type_id: 0x1259e377
+  parameter_id: 0x0ca27481
+  parameter_id: 0x1259e377
+  parameter_id: 0x3971988d
+  parameter_id: 0x3861403d
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xa2868e3b
+  return_type_id: 0x0e2680c2
+  parameter_id: 0x25653b02
+  parameter_id: 0x0d10073d
+}
+function {
+  id: 0xa2878209
+  return_type_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0x0b27dc43
+}
+function {
+  id: 0xa28a8fc1
+  return_type_id: 0x0e2680c2
+  parameter_id: 0x25653b02
+  parameter_id: 0x0d10073d
+  parameter_id: 0x3007ebd9
+}
+function {
+  id: 0xa2d727e6
+  return_type_id: 0x11c404ba
+  parameter_id: 0xf419f1fe
+}
+function {
+  id: 0xa2ec04d3
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x172847a8
+  parameter_id: 0x07f9a52e
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xa355db3b
+  return_type_id: 0x257d12af
+  parameter_id: 0x17dabdcd
+  parameter_id: 0xac0d3a85
+  parameter_id: 0xac0d3a85
+  parameter_id: 0x92233392
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0xa355dd14
+  return_type_id: 0x257d12af
+  parameter_id: 0x17dabdcd
+  parameter_id: 0xac0d3a85
+  parameter_id: 0xac0d3a85
+  parameter_id: 0x92233392
+}
+function {
+  id: 0xa3adbe6c
+  return_type_id: 0x25b73daa
+  parameter_id: 0x25b73daa
+  parameter_id: 0x25c97cc9
+}
+function {
+  id: 0xa3b4b1d5
+  return_type_id: 0x29ab3bdd
+  parameter_id: 0x1b55a8f2
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xa4320b94
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x0c48c037
+}
+function {
+  id: 0xa45e82f4
+  return_type_id: 0x3dcee85d
+  parameter_id: 0x0ae4a2c7
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0xa52e0ac1
+  return_type_id: 0x3dcee85d
+  parameter_id: 0x0cc78943
+}
+function {
+  id: 0xa54cff55
+  return_type_id: 0x3dcee85d
+  parameter_id: 0x0cc78943
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0xa55555e2
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x0ae4a2c7
+  parameter_id: 0x33756485
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0xa57d1db8
+  return_type_id: 0x1259e377
+  parameter_id: 0x1259e377
+}
+function {
+  id: 0xa5be4b9a
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x0ae4a2c7
+  parameter_id: 0x0ae4a2c7
+  parameter_id: 0x33756485
+  parameter_id: 0x064d6086
+  parameter_id: 0x3bf581e3
+  parameter_id: 0x295c7202
+  parameter_id: 0x33756485
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xa5be4b9b
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x0ae4a2c7
+  parameter_id: 0x0ae4a2c7
+  parameter_id: 0x33756485
+  parameter_id: 0x064d6086
+  parameter_id: 0x3bf581e3
+  parameter_id: 0x295c7202
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xa5dcd62d
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x0a52df14
+  parameter_id: 0x1c3dbe5a
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0xfc0e1dbd
+  parameter_id: 0x0d9f5631
+}
+function {
+  id: 0xa641688a
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x01c5a749
+  parameter_id: 0x4585663f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0xa64b9a8a
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x01c5a749
+  parameter_id: 0x4585663f
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xa6579ee9
+  return_type_id: 0x3dcee85d
+  parameter_id: 0x0258f96e
+  parameter_id: 0x347303b4
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0xa65aa9e3
+  return_type_id: 0x6720d32f
+  parameter_id: 0xeb0f6de6
+  parameter_id: 0x4585663f
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0xa66823d2
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x030b9acf
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0xfc0e1dbd
+}
+function {
+  id: 0xa671941e
+  return_type_id: 0x3dcee85d
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0xa672c2e4
+  return_type_id: 0x0e56cd62
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xa67ea08b
+  return_type_id: 0x3dcee85d
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3e75499e
+  parameter_id: 0x295c7202
+  parameter_id: 0x33756485
+  parameter_id: 0x18bd6530
+  parameter_id: 0x295c7202
+  parameter_id: 0xc9082b19
+  parameter_id: 0x295c7202
+  parameter_id: 0x3104c07e
+  parameter_id: 0x3654c061
+}
+function {
+  id: 0xa67ecd91
+  return_type_id: 0x3dcee85d
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3e10b518
+  parameter_id: 0x33756485
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xa67ed13b
+  return_type_id: 0x3dcee85d
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3e10b518
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xa67edb66
+  return_type_id: 0x3dcee85d
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3e10b518
+  parameter_id: 0x33756485
+  parameter_id: 0x18bd6530
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+  parameter_id: 0x3bf581e3
+  parameter_id: 0x3654c061
+}
+function {
+  id: 0xa67edb67
+  return_type_id: 0x3dcee85d
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3e10b518
+  parameter_id: 0x33756485
+  parameter_id: 0x18bd6530
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+  parameter_id: 0x3654c061
+}
+function {
+  id: 0xa67f9780
+  return_type_id: 0x3dcee85d
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3e75499e
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0ae4a2c7
+  parameter_id: 0x3d1ec847
+  parameter_id: 0x0ae4a2c7
+  parameter_id: 0x3d1ec847
+  parameter_id: 0x0ae4a2c7
+  parameter_id: 0x3d1ec847
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xa69e8d8a
+  return_type_id: 0x361b0907
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0xa6a24441
+  return_type_id: 0x3dcee85d
+  parameter_id: 0x0258f96e
+  parameter_id: 0x0ae4a2c7
+}
+function {
+  id: 0xa6b55f52
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x0562c566
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xa6c13544
+  return_type_id: 0x6720d32f
+  parameter_id: 0xeeed68e6
+  parameter_id: 0x3ea31487
+}
+function {
+  id: 0xa6c78374
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x3e10b518
+  parameter_id: 0xfc0e1dbd
+}
+function {
+  id: 0xa6e5a744
+  return_type_id: 0x1259e377
+  parameter_id: 0x1259e377
+  parameter_id: 0xe62ebf07
+}
+function {
+  id: 0xa6fe7077
+  return_type_id: 0x39a8be0c
+  parameter_id: 0x39a8be0c
+}
+function {
+  id: 0xa7203b99
+  return_type_id: 0xfc0e1dbd
+}
+function {
+  id: 0xa739c6fb
+  return_type_id: 0x2584a3b9
+  parameter_id: 0x054f691a
+  parameter_id: 0x32a623d7
+  parameter_id: 0x2584a3b9
+}
+function {
+  id: 0xa780332f
+  return_type_id: 0x6720d32f
+  parameter_id: 0xe8034002
+}
+function {
+  id: 0xa78fe504
+  return_type_id: 0x0258f96e
+  parameter_id: 0x2a4c6b85
+  parameter_id: 0x0258f96e
+  parameter_id: 0xeb0f6de6
+  parameter_id: 0x18bd6530
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0xa78fe955
+  return_type_id: 0x0258f96e
+  parameter_id: 0x2a4c6b85
+  parameter_id: 0x0258f96e
+  parameter_id: 0xeb0f6de6
+  parameter_id: 0x18bd6530
+  parameter_id: 0x06433852
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0xa7bbb94d
+  return_type_id: 0x0258f96e
+  parameter_id: 0x2a4c6b85
+  parameter_id: 0x0258f96e
+  parameter_id: 0x391f15ea
+  parameter_id: 0x2dec91ef
+}
+function {
+  id: 0xa7f54c85
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x0355dc72
+}
+function {
+  id: 0xa7f744cd
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x07f9a52e
+  parameter_id: 0x4585663f
+  parameter_id: 0xfc0e1dbd
+}
+function {
+  id: 0xa807a3b8
+  return_type_id: 0x31c8b544
+  parameter_id: 0x3b04bead
+  parameter_id: 0x12e6ffae
+  parameter_id: 0x1c3dbe5a
+}
+function {
+  id: 0xa80d1860
+  return_type_id: 0x31c8b544
+  parameter_id: 0x3b04bead
+  parameter_id: 0x12e6ffae
+  parameter_id: 0x36d2de0e
+}
+function {
+  id: 0xa80f38e4
+  return_type_id: 0x0a1edf98
+  parameter_id: 0x0017d728
+  parameter_id: 0x3db7fb40
+}
+function {
+  id: 0xa862daff
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x394b6e9f
+  parameter_id: 0x4585663f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0xa89bb486
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x3e10b518
+  parameter_id: 0x0bb0c019
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xa89e541c
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x3dcee85d
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xa8a462e4
+  return_type_id: 0x1253769c
+  parameter_id: 0x23f09c34
+  parameter_id: 0x01d3d77e
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xa8d53dcc
+  return_type_id: 0x1253769c
+  parameter_id: 0x23f09c34
+  parameter_id: 0x1d841d76
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xa8d942fb
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x3f59ee8d
+  parameter_id: 0x0483e6f8
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0xa8db3e38
+  return_type_id: 0x0e1f07df
+  parameter_id: 0x1285100d
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0xa96969e0
+  return_type_id: 0x39a4e83f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x0490bb4a
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0xa96c5286
+  return_type_id: 0x3dcee85d
+  parameter_id: 0x3dcee85d
+}
+function {
+  id: 0xa972e03e
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x394b6e9f
+}
+function {
+  id: 0xa974af20
+  return_type_id: 0x39a4e83f
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0xa98cedf4
+  return_type_id: 0x39a4e83f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0xa9d11801
+  return_type_id: 0x21b2d2f4
+  parameter_id: 0x1285100d
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x5268af9d
+  parameter_id: 0x4585663f
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0xaa55ab2e
+  return_type_id: 0x31b5a66f
+  parameter_id: 0x2668e644
+}
+function {
+  id: 0xaa7f8be4
+  return_type_id: 0x064d6086
+  parameter_id: 0x0258f96e
+  parameter_id: 0x4585663f
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0xaa967f61
+  return_type_id: 0x2584a3b9
+  parameter_id: 0x32a623d7
+  parameter_id: 0x2584a3b9
+}
+function {
+  id: 0xaa9816e6
+  return_type_id: 0x5b3d9d36
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0xaa9fab30
+  return_type_id: 0x3dcee85d
+  parameter_id: 0x347303b4
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xaaa5f33f
+  return_type_id: 0x1a7122b5
+  parameter_id: 0x2e8d5f05
+  parameter_id: 0x3fe8ca70
+}
+function {
+  id: 0xaab3b130
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x322509a0
+  parameter_id: 0x4585663f
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xaab8b473
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x35abdbf6
+  parameter_id: 0x33756485
+  parameter_id: 0xfc0e1dbd
+  parameter_id: 0x2b23aa9d
+  parameter_id: 0x0cbf60eb
+  parameter_id: 0x28eb23d4
+}
+function {
+  id: 0xaacf82f6
+  return_type_id: 0x29a77f06
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0xaafabc9d
+  return_type_id: 0x31b5a66f
+  parameter_id: 0x24d4b888
+}
+function {
+  id: 0xab21f8b5
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x4585663f
+  parameter_id: 0x0b30ee00
+  parameter_id: 0x0814e9f6
+}
+function {
+  id: 0xab2f6439
+  return_type_id: 0x29a77f06
+  parameter_id: 0x36d078a0
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0xab344d2b
+  return_type_id: 0x31b5a66f
+  parameter_id: 0x21003da7
+  parameter_id: 0x2ef43f67
+}
+function {
+  id: 0xab7dda53
+  return_type_id: 0x0258f96e
+  parameter_id: 0x1a1051a0
+  parameter_id: 0x31e58fe0
+  parameter_id: 0x4585663f
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0xab955662
+  return_type_id: 0x25782362
+  parameter_id: 0x3b845f97
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0x25782362
+}
+function {
+  id: 0xab95c382
+  return_type_id: 0x25782362
+  parameter_id: 0x3b845f97
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0xab9a208d
+  return_type_id: 0x25782362
+  parameter_id: 0x3b845f97
+  parameter_id: 0x0258f96e
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0x25782362
+}
+function {
+  id: 0xaba1c9dd
+  return_type_id: 0x1259e377
+  parameter_id: 0x292ab2e2
+}
+function {
+  id: 0xabfb6aa8
+  return_type_id: 0x3dcee85d
+  parameter_id: 0x347303b4
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0xac0fc980
+  return_type_id: 0x0258f96e
+  parameter_id: 0x0483e6f8
+}
+function {
+  id: 0xac273de0
+  return_type_id: 0x0a193bb7
+  parameter_id: 0x1d19a9d5
+}
+function {
+  id: 0xac45ce43
+  return_type_id: 0x6720d32f
+  parameter_id: 0xc714b5b1
+}
+function {
+  id: 0xac4edba4
+  return_type_id: 0xf419f1fe
+  parameter_id: 0x11c404ba
+}
+function {
+  id: 0xac8d9251
+  return_type_id: 0x0642705a
+}
+function {
+  id: 0xaca632ad
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x2e1824d3
+}
+function {
+  id: 0xacaf1bfd
+  return_type_id: 0x0258f96e
+  parameter_id: 0x0258f96e
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xad2e2b96
+  return_type_id: 0x0258f96e
+  parameter_id: 0x0258f96e
+  parameter_id: 0x25c97cc9
+}
+function {
+  id: 0xad414cb1
+  return_type_id: 0x0258f96e
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0xad77a8f0
+  return_type_id: 0x0258f96e
+  parameter_id: 0x0258f96e
+  parameter_id: 0x33a9a547
+}
+function {
+  id: 0xad855341
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x2efe8065
+  parameter_id: 0x4585663f
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xadb56de9
+  return_type_id: 0x31b5a66f
+  parameter_id: 0x3b04bead
+  parameter_id: 0x2ef43f67
+}
+function {
+  id: 0xadb90e65
+  return_type_id: 0x0258f96e
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0xadd088bd
+  return_type_id: 0x0258f96e
+  parameter_id: 0x0258f96e
+  parameter_id: 0x18bd6530
+  parameter_id: 0x2dcd339f
+}
+function {
+  id: 0xaddb3e9f
+  return_type_id: 0x0258f96e
+  parameter_id: 0x03ce74cd
+  parameter_id: 0x0258f96e
+  parameter_id: 0x391f15ea
+  parameter_id: 0x2dec91ef
+}
+function {
+  id: 0xaddc5fdc
+  return_type_id: 0x31ad3cde
+  parameter_id: 0x31ad3cde
+  parameter_id: 0x11e6864c
+}
+function {
+  id: 0xae3d0033
+  return_type_id: 0x0258f96e
+  parameter_id: 0x0c48c037
+}
+function {
+  id: 0xae5fc030
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x25ffeea5
+}
+function {
+  id: 0xae730313
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x27459bea
+  parameter_id: 0x26731c99
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xae88a13d
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x26ee682a
+  parameter_id: 0x04c02b90
+}
+function {
+  id: 0xaeec9bd7
+  return_type_id: 0x3e10b518
+  parameter_id: 0xf1a6dfed
+  parameter_id: 0x3e10b518
+  parameter_id: 0xe5e56f65
+}
+function {
+  id: 0xaef121ed
+  return_type_id: 0x0258f96e
+  parameter_id: 0x0f78474f
+}
+function {
+  id: 0xaf295eff
+  return_type_id: 0xd0b3a203
+  parameter_id: 0x1582ab06
+  parameter_id: 0xd0b3a203
+}
+function {
+  id: 0xaf453ff9
+  return_type_id: 0x0258f96e
+  parameter_id: 0x09a83f1c
+}
+function {
+  id: 0xaf54cd38
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x22cee855
+  parameter_id: 0x3e10b518
+  parameter_id: 0xfc0e1dbd
+  parameter_id: 0x0379c823
+}
+function {
+  id: 0xaf57be52
+  return_type_id: 0x2584a3b9
+  parameter_id: 0x2584a3b9
+  parameter_id: 0x2584a3b9
+  parameter_id: 0x2584a3b9
+}
+function {
+  id: 0xaf7fbf57
+  return_type_id: 0x31e58fe0
+  parameter_id: 0x015f6fbc
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0xafbe8077
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x22cee855
+  parameter_id: 0x0483e6f8
+  parameter_id: 0xfc0e1dbd
+  parameter_id: 0x0379c823
+}
+function {
+  id: 0xb019e307
+  return_type_id: 0x397d00ab
+  parameter_id: 0x3f37d9d5
+  parameter_id: 0x35a0b70a
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0xb0635f1b
+  return_type_id: 0xe02e14d6
+  parameter_id: 0x31fa879c
+}
+function {
+  id: 0xb0abc898
+  return_type_id: 0x3e10b518
+  parameter_id: 0x8bbf7ced
+}
+function {
+  id: 0xb0ad4fdd
+  return_type_id: 0x1a2c7f0e
+  parameter_id: 0x0258f96e
+  parameter_id: 0x18bd6530
+  parameter_id: 0xe02e14d6
+  parameter_id: 0xf435685e
+  parameter_id: 0xc9082b19
+  parameter_id: 0x2f764d18
+  parameter_id: 0x2f764d18
+  parameter_id: 0x3e10b518
+  parameter_id: 0xa52a0930
+}
+function {
+  id: 0xb0c30e7d
+  return_type_id: 0xd0b3a203
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xb1220fd7
+  return_type_id: 0x6720d32f
+  parameter_id: 0xbdd18903
+  parameter_id: 0xf435685e
+  parameter_id: 0x1908b154
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0xb1261013
+  return_type_id: 0xf7c9d4fd
+  parameter_id: 0x3f949c69
+}
+function {
+  id: 0xb13e733c
+  return_type_id: 0x067c4b9a
+  parameter_id: 0x3b04bead
+  parameter_id: 0x358ff5b7
+}
+function {
+  id: 0xb166862a
+  return_type_id: 0x399c459b
+  parameter_id: 0x1b8590a8
+}
+function {
+  id: 0xb1b78fab
+  return_type_id: 0x6720d32f
+  parameter_id: 0xb0ddb211
+}
+function {
+  id: 0xb2be15b9
+  return_type_id: 0x6720d32f
+  parameter_id: 0xbdd18903
+  parameter_id: 0x11281698
+  parameter_id: 0x38d23361
+}
+function {
+  id: 0xb315f206
+  return_type_id: 0x6720d32f
+  parameter_id: 0xba5444a6
+}
+function {
+  id: 0xb367c064
+  return_type_id: 0xe02e14d6
+  parameter_id: 0x3ef55b88
+  parameter_id: 0x31da1e83
+}
+function {
+  id: 0xb3725ca4
+  return_type_id: 0xe02e14d6
+  parameter_id: 0x32fddfe5
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0xb3a98317
+  return_type_id: 0x067c4b9a
+  parameter_id: 0x315b7e01
+  parameter_id: 0x358ff5b7
+}
+function {
+  id: 0xb3df35fa
+  return_type_id: 0x06835e9c
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0xb3eff14b
+  return_type_id: 0x067c4b9a
+  parameter_id: 0x31b5a66f
+  parameter_id: 0x2afee447
+}
+function {
+  id: 0xb406b28d
+  return_type_id: 0x0a747547
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0xb442534e
+  return_type_id: 0x067c4b9a
+  parameter_id: 0x2ef43f67
+  parameter_id: 0x358ff5b7
+}
+function {
+  id: 0xb4bb7eb3
+  return_type_id: 0x11c404ba
+  parameter_id: 0xada894ab
+}
+function {
+  id: 0xb4f85508
+  return_type_id: 0x1e351120
+  parameter_id: 0x11e6864c
+  parameter_id: 0xf017819f
+}
+function {
+  id: 0xb649ac13
+  return_type_id: 0x067c4b9a
+  parameter_id: 0x2668e644
+  parameter_id: 0x3de54f8a
+  parameter_id: 0x358ff5b7
+}
+function {
+  id: 0xb6699a8e
+  return_type_id: 0x396f8e0f
+  parameter_id: 0x347303b4
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0xb6d2e6f8
+  return_type_id: 0x12209d55
+  parameter_id: 0x06835e9c
+}
+function {
+  id: 0xb809e664
+  return_type_id: 0x06835e9c
+  parameter_id: 0x1582ab06
+  parameter_id: 0x33756485
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0xb8307855
+  return_type_id: 0x06835e9c
+  parameter_id: 0x1582ab06
+  parameter_id: 0x33756485
+  parameter_id: 0x1650be92
+  parameter_id: 0x18ea6ae3
+}
+function {
+  id: 0xb87b745c
+  return_type_id: 0x06835e9c
+  parameter_id: 0x14b9453b
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xb8f7c48b
+  return_type_id: 0x0e4d1ea4
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0a52df14
+  parameter_id: 0x92233392
+  parameter_id: 0x4585663f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0xb9082fcb
+  return_type_id: 0x6720d32f
+  parameter_id: 0x92233392
+}
+function {
+  id: 0xb913af05
+  return_type_id: 0x1e399fbd
+  parameter_id: 0x26e55184
+  parameter_id: 0x04ca9246
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xb91d7092
+  return_type_id: 0x21df69d0
+  parameter_id: 0x00dd92af
+}
+function {
+  id: 0xb942d127
+  return_type_id: 0x6720d32f
+  parameter_id: 0x92b210b3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x310ec01d
+}
+function {
+  id: 0xb94d0c8b
+  return_type_id: 0x06835e9c
+  parameter_id: 0x1023f4f6
+  parameter_id: 0x33756485
+  parameter_id: 0x4585663f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0xb957d705
+  return_type_id: 0x6720d32f
+  parameter_id: 0x92233392
+  parameter_id: 0x18bd6530
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0xb9640b60
+  return_type_id: 0x064d6086
+  parameter_id: 0x4585663f
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0xb96c0d0e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x92233392
+  parameter_id: 0x1908b154
+}
+function {
+  id: 0xb96d2d8e
+  return_type_id: 0x6720d32f
+  parameter_id: 0x92233392
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1908b154
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0xb996d78c
+  return_type_id: 0xc4cf348e
+  parameter_id: 0x03f70c68
+}
+function {
+  id: 0xb99f29b6
+  return_type_id: 0x06835e9c
+  parameter_id: 0x116785ed
+  parameter_id: 0x14b9453b
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xba11bc6a
+  return_type_id: 0x06835e9c
+  parameter_id: 0x1e2533ab
+}
+function {
+  id: 0xba5ef4b3
+  return_type_id: 0x29c600bb
+  parameter_id: 0x1c30a9ad
+}
+function {
+  id: 0xba8f5ef0
+  return_type_id: 0x06835e9c
+  parameter_id: 0x1344d43c
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0xbb40a305
+  return_type_id: 0x6720d32f
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+}
+function {
+  id: 0xbb8c0d7e
+  return_type_id: 0x06901f39
+  parameter_id: 0x0cc78943
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0xbbb89c61
+  return_type_id: 0x06835e9c
+  parameter_id: 0x1b8590a8
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xbbe36438
+  return_type_id: 0x396f8e0f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0xbc040644
+  return_type_id: 0x399c459b
+  parameter_id: 0x2e0f9112
+}
+function {
+  id: 0xbc4e69b1
+  return_type_id: 0x0258f96e
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xbc9ef3fd
+  return_type_id: 0xe02e14d6
+  parameter_id: 0x0258f96e
+  parameter_id: 0x06835e9c
+  parameter_id: 0x33756485
+  parameter_id: 0xf435685e
+  parameter_id: 0xcd84e3cd
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xbcaf23fe
+  return_type_id: 0xe02e14d6
+  parameter_id: 0x0258f96e
+  parameter_id: 0x06835e9c
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+  parameter_id: 0xcd84e3cd
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xbce9e1eb
+  return_type_id: 0x0e56cd62
+  parameter_id: 0x0cc78943
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0xbceec39a
+  return_type_id: 0x067c4b9a
+  parameter_id: 0x0c467c34
+  parameter_id: 0x358ff5b7
+}
+function {
+  id: 0xbcf5f2b5
+  return_type_id: 0x06835e9c
+  parameter_id: 0x06835e9c
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xbd324cd3
+  return_type_id: 0x29c600bb
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0x383c3ac0
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xbd7fe584
+  return_type_id: 0x3d9d0240
+  parameter_id: 0x3d9d0240
+  parameter_id: 0x33a9d455
+}
+function {
+  id: 0xbd9523d9
+  return_type_id: 0x06835e9c
+  parameter_id: 0x00374d67
+}
+function {
+  id: 0xbd97d052
+  return_type_id: 0x0a749c2b
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0xbd98f080
+  return_type_id: 0x06835e9c
+}
+function {
+  id: 0xbdc4e083
+  return_type_id: 0x29c600bb
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0xbe241f2a
+  return_type_id: 0x31e58fe0
+  parameter_id: 0x4585663f
+  parameter_id: 0x0b27dc43
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xbe42b117
+  return_type_id: 0xe02e14d6
+  parameter_id: 0x0258f96e
+  parameter_id: 0xbdd18903
+  parameter_id: 0xf435685e
+  parameter_id: 0xcd84e3cd
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xbe656f8f
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x6720d32f
+  parameter_id: 0x22d3e112
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0xbe7f3441
+  return_type_id: 0x0a747547
+  parameter_id: 0x315b7e01
+}
+function {
+  id: 0xbec298be
+  return_type_id: 0x3176a085
+  parameter_id: 0x347303b4
+}
+function {
+  id: 0xbed1b7ef
+  return_type_id: 0x06835e9c
+  parameter_id: 0x0258f96e
+  parameter_id: 0xf435685e
+  parameter_id: 0x329bbc92
+  parameter_id: 0xcd84e3cd
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0xbed4cb96
+  return_type_id: 0xe02e14d6
+  parameter_id: 0x0206e690
+  parameter_id: 0x92233392
+}
+function {
+  id: 0xbf379f2f
+  return_type_id: 0x3176a085
+  parameter_id: 0x35d510c3
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xbf6cd8a9
+  return_type_id: 0xfc0e1dbd
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xbf8f4ed4
+  return_type_id: 0x3176a085
+  parameter_id: 0x32a623d7
+  parameter_id: 0x3e10b518
+  parameter_id: 0x0d9c4ffe
+  parameter_id: 0xeeed68e6
+}
+function {
+  id: 0xbfa66420
+  return_type_id: 0x3176a085
+  parameter_id: 0x32a623d7
+  parameter_id: 0x347303b4
+  parameter_id: 0x0d9c4ffe
+  parameter_id: 0xc9082b19
+  parameter_id: 0xeeed68e6
+}
+function {
+  id: 0xbfc82229
+  return_type_id: 0x0e5eb556
+  parameter_id: 0x0258f96e
+  parameter_id: 0xba26dbb2
+}
+function {
+  id: 0xbfd1f543
+  return_type_id: 0x06835e9c
+  parameter_id: 0x0a134144
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xc032f3e5
+  return_type_id: 0x4585663f
+  parameter_id: 0x3ba6347b
+}
+function {
+  id: 0xc03cbac0
+  return_type_id: 0x4585663f
+  parameter_id: 0x3f0ff1b1
+  parameter_id: 0x4585663f
+  parameter_id: 0xc9082b19
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0xc0405795
+  return_type_id: 0x4585663f
+  parameter_id: 0x391f15ea
+  parameter_id: 0x3ffd24b9
+  parameter_id: 0x8c6218b1
+}
+function {
+  id: 0xc057b7a9
+  return_type_id: 0x65d74a06
+  parameter_id: 0x0a134144
+  parameter_id: 0x33756485
+  parameter_id: 0x89ec69cf
+}
+function {
+  id: 0xc0634f13
+  return_type_id: 0x4585663f
+  parameter_id: 0x391f15ea
+  parameter_id: 0x3ffd24b9
+}
+function {
+  id: 0xc065ae42
+  return_type_id: 0x4585663f
+  parameter_id: 0x3ea31487
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xc075980c
+  return_type_id: 0x4585663f
+  parameter_id: 0x391f15ea
+  parameter_id: 0x3e10b518
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xc07911ea
+  return_type_id: 0x65d74a06
+  parameter_id: 0x0a134144
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xc07b6222
+  return_type_id: 0x65d74a06
+  parameter_id: 0x0a134144
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x9cf21ab5
+}
+function {
+  id: 0xc0843ed1
+  return_type_id: 0x4585663f
+  parameter_id: 0x397d00ab
+}
+function {
+  id: 0xc09cbb81
+  return_type_id: 0x4585663f
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0xc0db8f6d
+  return_type_id: 0x4585663f
+  parameter_id: 0x374090df
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0xc125f30f
+  return_type_id: 0x4585663f
+  parameter_id: 0x3ba261b0
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xc1439b43
+  return_type_id: 0x4585663f
+  parameter_id: 0x3e6396e0
+}
+function {
+  id: 0xc18f1240
+  return_type_id: 0x4585663f
+  parameter_id: 0x3fc475cd
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0xc1b927fe
+  return_type_id: 0x4585663f
+  parameter_id: 0x3d896417
+}
+function {
+  id: 0xc1be98ae
+  return_type_id: 0x3b4ce03a
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3b4ce03a
+  parameter_id: 0x9565759f
+  parameter_id: 0x9565759f
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0xc20627da
+  return_type_id: 0x4585663f
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xc2081745
+  return_type_id: 0x4585663f
+  parameter_id: 0x334da6fb
+}
+function {
+  id: 0xc21e59d8
+  return_type_id: 0x4585663f
+  parameter_id: 0x356691bc
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xc21fedbe
+  return_type_id: 0x3b399f9e
+  parameter_id: 0x31b5a66f
+  parameter_id: 0x249959de
+}
+function {
+  id: 0xc23d0fef
+  return_type_id: 0x4585663f
+  parameter_id: 0x3399c453
+}
+function {
+  id: 0xc2503be7
+  return_type_id: 0x3b399f9e
+  parameter_id: 0x31b5a66f
+  parameter_id: 0x36e719d0
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0xc2505de9
+  return_type_id: 0x4585663f
+  parameter_id: 0x322c8c4b
+}
+function {
+  id: 0xc252de0a
+  return_type_id: 0x334927f6
+  parameter_id: 0x18a2fb63
+  parameter_id: 0x22b36393
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0xc25b3d5a
+  return_type_id: 0x4585663f
+  parameter_id: 0x347303b4
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xc25cf5fc
+  return_type_id: 0x4585663f
+  parameter_id: 0x310ec01d
+  parameter_id: 0x310ec01d
+}
+function {
+  id: 0xc29f6b92
+  return_type_id: 0x3b399f9e
+  parameter_id: 0x31fe2b41
+}
+function {
+  id: 0xc2a5df1c
+  return_type_id: 0x4585663f
+  parameter_id: 0x31fa879c
+}
+function {
+  id: 0xc2e99087
+  return_type_id: 0x0ab9fa4c
+  parameter_id: 0x0258f96e
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xc3320c3e
+  return_type_id: 0x4585663f
+  parameter_id: 0x37a5cb14
+}
+function {
+  id: 0xc33e01cf
+  return_type_id: 0x4585663f
+  parameter_id: 0x347303b4
+  parameter_id: 0x3e10b518
+  parameter_id: 0x078cf94a
+  parameter_id: 0x078cf94a
+}
+function {
+  id: 0xc33ffcc2
+  return_type_id: 0x4585663f
+  parameter_id: 0x347303b4
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0xc3621fce
+  return_type_id: 0x4585663f
+  parameter_id: 0x32a623d7
+  parameter_id: 0x4585663f
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0xc36d4f04
+  return_type_id: 0x2ef43f67
+  parameter_id: 0x31b5a66f
+  parameter_id: 0x21003da7
+}
+function {
+  id: 0xc378ce01
+  return_type_id: 0x4585663f
+  parameter_id: 0x374090df
+  parameter_id: 0x18bd6530
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xc37b1ed4
+  return_type_id: 0x4585663f
+  parameter_id: 0x374090df
+  parameter_id: 0x18bd6530
+  parameter_id: 0x4585663f
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0xc3825086
+  return_type_id: 0x4585663f
+  parameter_id: 0x359862c8
+  parameter_id: 0x0cbf60eb
+  parameter_id: 0x33756485
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xc3860c60
+  return_type_id: 0x4585663f
+  parameter_id: 0x3104c07e
+  parameter_id: 0x4585663f
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0xc3af9ce9
+  return_type_id: 0x4585663f
+  parameter_id: 0x35d3884a
+}
+function {
+  id: 0xc3c98ae7
+  return_type_id: 0x2efd5036
+  parameter_id: 0x3e10b518
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4466c59f
+  parameter_id: 0x0f3dfb90
+}
+function {
+  id: 0xc3c9995c
+  return_type_id: 0x2efd5036
+  parameter_id: 0x3e10b518
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4466c59f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x0f3dfb90
+}
+function {
+  id: 0xc3dd5fea
+  return_type_id: 0x3f222c68
+  parameter_id: 0x33f8b54b
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3f222c68
+}
+function {
+  id: 0xc3e94ff2
+  return_type_id: 0x2ef43f67
+  parameter_id: 0x31b5a66f
+}
+function {
+  id: 0xc3fd9717
+  return_type_id: 0x4585663f
+  parameter_id: 0x374090df
+  parameter_id: 0x391f15ea
+  parameter_id: 0x4585663f
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0xc3fe47c2
+  return_type_id: 0x4585663f
+  parameter_id: 0x374090df
+  parameter_id: 0x391f15ea
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xc44c8212
+  return_type_id: 0x3f37d9d5
+  parameter_id: 0x347303b4
+}
+function {
+  id: 0xc4b456f8
+  return_type_id: 0x3f37d9d5
+  parameter_id: 0x347303b4
+  parameter_id: 0x3e10b518
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0xc52fbf81
+  return_type_id: 0x4585663f
+  parameter_id: 0x2e029f76
+  parameter_id: 0x1d19a9d5
+}
+function {
+  id: 0xc564dee2
+  return_type_id: 0x4585663f
+  parameter_id: 0x2efe8065
+}
+function {
+  id: 0xc5663ffe
+  return_type_id: 0x3f37d9d5
+  parameter_id: 0x30d9f406
+}
+function {
+  id: 0xc61915b4
+  return_type_id: 0x4585663f
+  parameter_id: 0x2309ad3e
+}
+function {
+  id: 0xc68f67ec
+  return_type_id: 0x030b9acf
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xc6a0fca0
+  return_type_id: 0x2afee447
+  parameter_id: 0x3b04bead
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0xc6a0fd0e
+  return_type_id: 0x2afee447
+  parameter_id: 0x3b04bead
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0xc6ff6acc
+  return_type_id: 0x2efe8065
+  parameter_id: 0x31e58fe0
+  parameter_id: 0x18ea6ae3
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xc7128bee
+  return_type_id: 0x4585663f
+  parameter_id: 0x24c1f7c9
+  parameter_id: 0x3e6239e1
+}
+function {
+  id: 0xc72431aa
+  return_type_id: 0x2afee447
+  parameter_id: 0x3b04bead
+}
+function {
+  id: 0xc748ecf5
+  return_type_id: 0x3f37d9d5
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xc7812729
+  return_type_id: 0x4585663f
+  parameter_id: 0x2131312a
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xc7814062
+  return_type_id: 0x2afee447
+  parameter_id: 0x3b04bead
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0xc7bc0e4a
+  return_type_id: 0x3b399f9e
+  parameter_id: 0x2668e644
+  parameter_id: 0x31b5a66f
+}
+function {
+  id: 0xc7bc4f65
+  return_type_id: 0x7dfce7fc
+  parameter_id: 0x347303b4
+}
+function {
+  id: 0xc7f20e7c
+  return_type_id: 0x2afee447
+  parameter_id: 0x3b04bead
+  parameter_id: 0x358ff5b7
+}
+function {
+  id: 0xc851cf67
+  return_type_id: 0x5d8155a5
+  parameter_id: 0x126add1c
+  parameter_id: 0x4585663f
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0xc8585588
+  return_type_id: 0x02c35f57
+  parameter_id: 0x02c35f57
+}
+function {
+  id: 0xc867c639
+  return_type_id: 0x2b16c036
+  parameter_id: 0x2b16c036
+  parameter_id: 0x2b16c036
+}
+function {
+  id: 0xc8743fe5
+  return_type_id: 0x4585663f
+  parameter_id: 0x18a2fb63
+  parameter_id: 0x22b36393
+  parameter_id: 0x34c92288
+}
+function {
+  id: 0xc8a2e5e7
+  return_type_id: 0x4585663f
+  parameter_id: 0x19e66c71
+}
+function {
+  id: 0xc8cb9d39
+  return_type_id: 0x2b16c036
+  parameter_id: 0x2b16c036
+}
+function {
+  id: 0xc8eda6b8
+  return_type_id: 0x4585663f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x054f691a
+  parameter_id: 0x32f2aeac
+}
+function {
+  id: 0xc8f427b7
+  return_type_id: 0x4585663f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0xc97bfe9f
+  return_type_id: 0x4585663f
+  parameter_id: 0x1e820193
+}
+function {
+  id: 0xc993ac0a
+  return_type_id: 0x3760766d
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3f431b32
+}
+function {
+  id: 0xc9945640
+  return_type_id: 0x4585663f
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x064d6086
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xc9f4f8be
+  return_type_id: 0x4585663f
+  parameter_id: 0x18e64f74
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xca318720
+  return_type_id: 0x3b4d47fa
+  parameter_id: 0x2a285513
+  parameter_id: 0x4faa9b63
+}
+function {
+  id: 0xca4b711f
+  return_type_id: 0x1b084782
+  parameter_id: 0xc062b34e
+  parameter_id: 0x0aa5309c
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0xca62a8b3
+  return_type_id: 0x4585663f
+  parameter_id: 0x12e75923
+}
+function {
+  id: 0xcabd891e
+  return_type_id: 0x4585663f
+  parameter_id: 0x15c389f6
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xcb21f4ad
+  return_type_id: 0x4585663f
+  parameter_id: 0x13d55fea
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xcb5a4db0
+  return_type_id: 0x4585663f
+  parameter_id: 0x12191e2a
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xcb7f2e4a
+  return_type_id: 0x2314b69f
+  parameter_id: 0x3518a6ab
+  parameter_id: 0xeeed68e6
+}
+function {
+  id: 0xcb85eb41
+  return_type_id: 0x4585663f
+  parameter_id: 0x116785ed
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xcb948a18
+  return_type_id: 0x4585663f
+  parameter_id: 0x116785ed
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xcbc6cc7a
+  return_type_id: 0x0a9a051a
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0xcbea3bfa
+  return_type_id: 0x65d74a06
+  parameter_id: 0x246dc7d4
+  parameter_id: 0x3360dff4
+}
+function {
+  id: 0xcc046d22
+  return_type_id: 0x4585663f
+  parameter_id: 0x0b7c4f67
+}
+function {
+  id: 0xcc1251bf
+  return_type_id: 0x65d74a06
+  parameter_id: 0x382837f5
+  parameter_id: 0x0a134144
+  parameter_id: 0x3360dff4
+}
+function {
+  id: 0xcc787cc3
+  return_type_id: 0x2efe8065
+  parameter_id: 0x1a1051a0
+}
+function {
+  id: 0xcc81b8d3
+  return_type_id: 0x4585663f
+  parameter_id: 0x0f78474f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xcc9736e7
+  return_type_id: 0x65d74a06
+  parameter_id: 0x3360dff4
+  parameter_id: 0x9cf21ab5
+}
+function {
+  id: 0xcc9bebbe
+  return_type_id: 0x65d74a06
+  parameter_id: 0x3360dff4
+  parameter_id: 0x9cf21ab5
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xcce651c2
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0xcd056f28
+  return_type_id: 0x4585663f
+  parameter_id: 0x0f78474f
+}
+function {
+  id: 0xcd418336
+  return_type_id: 0x3b4ce03a
+  parameter_id: 0x3b4ce03a
+  parameter_id: 0x9565759f
+  parameter_id: 0x9565759f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xcd829c8f
+  return_type_id: 0x3b4ce03a
+  parameter_id: 0x37f227e9
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xcd8cb8f5
+  return_type_id: 0x4585663f
+  parameter_id: 0x0d5f1839
+}
+function {
+  id: 0xcd99505d
+  return_type_id: 0x4585663f
+  parameter_id: 0x0cb7ac99
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0xcd9f7f34
+  return_type_id: 0x4585663f
+  parameter_id: 0x0d10073d
+}
+function {
+  id: 0xcdd0f8ac
+  return_type_id: 0x4585663f
+  parameter_id: 0x0c2e195c
+}
+function {
+  id: 0xcde52a7c
+  return_type_id: 0x2b16c036
+  parameter_id: 0x3fac1d22
+}
+function {
+  id: 0xcdea85a8
+  return_type_id: 0x3f222c68
+  parameter_id: 0x0b27dc43
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3f222c68
+}
+function {
+  id: 0xcdea9cab
+  return_type_id: 0x4585663f
+  parameter_id: 0x0cc78943
+}
+function {
+  id: 0xcdf3e3db
+  return_type_id: 0x4585663f
+  parameter_id: 0x0ca27481
+}
+function {
+  id: 0xcdfaa356
+  return_type_id: 0x4585663f
+  parameter_id: 0x00defc2c
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0xce0dc24b
+  return_type_id: 0x4585663f
+  parameter_id: 0x00b7947f
+  parameter_id: 0x3d92f9c7
+  parameter_id: 0x3054f2d7
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xce108db2
+  return_type_id: 0x4585663f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x11cffa09
+  parameter_id: 0x6720d32f
+  parameter_id: 0xcd84e3cd
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xce25f646
+  return_type_id: 0x65d74a06
+  parameter_id: 0x3360dff4
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xce3c45e2
+  return_type_id: 0x4585663f
+  parameter_id: 0x039cec64
+}
+function {
+  id: 0xce4d40a0
+  return_type_id: 0x4585663f
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0xce4f521b
+  return_type_id: 0x4585663f
+  parameter_id: 0x064d6086
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xce9279fb
+  return_type_id: 0x4585663f
+  parameter_id: 0x01241c02
+}
+function {
+  id: 0xceb0f977
+  return_type_id: 0x4585663f
+  parameter_id: 0x01ae1e33
+}
+function {
+  id: 0xcebcf7b7
+  return_type_id: 0x4585663f
+  parameter_id: 0x019e2530
+}
+function {
+  id: 0xcedb7efb
+  return_type_id: 0x4585663f
+}
+function {
+  id: 0xcee4fe8d
+  return_type_id: 0x65d74a06
+  parameter_id: 0x3360dff4
+}
+function {
+  id: 0xceecc1f0
+  return_type_id: 0x4585663f
+  parameter_id: 0x00defc2c
+}
+function {
+  id: 0xcef69be4
+  return_type_id: 0x4585663f
+  parameter_id: 0x00b7947f
+}
+function {
+  id: 0xcf18e084
+  return_type_id: 0x4585663f
+  parameter_id: 0x06901f39
+  parameter_id: 0x19e66c71
+}
+function {
+  id: 0xcf28148d
+  return_type_id: 0x3b4ce03a
+  parameter_id: 0x3f37d9d5
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xcf36f1f9
+  return_type_id: 0x3b4ce03a
+  parameter_id: 0x3f37d9d5
+  parameter_id: 0x4585663f
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0xcf54e4d8
+  return_type_id: 0x65d74a06
+  parameter_id: 0x3360dff4
+  parameter_id: 0x6c069566
+}
+function {
+  id: 0xcf5b5538
+  return_type_id: 0x4585663f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xcf6a18a8
+  return_type_id: 0x4585663f
+  parameter_id: 0x00b7947f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xcfaae22f
+  return_type_id: 0x4585663f
+  parameter_id: 0x019e2530
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xcfc2716e
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0xcfe08e7c
+  return_type_id: 0x4585663f
+  parameter_id: 0x00b7947f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xcfe67224
+  return_type_id: 0x4585663f
+  parameter_id: 0x00b7947f
+  parameter_id: 0x4585663f
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0xd015e7bc
+  return_type_id: 0x0ae4a2c7
+  parameter_id: 0x3d896417
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xd082596f
+  return_type_id: 0x3af34d6f
+  parameter_id: 0x3af34d6f
+  parameter_id: 0x3fa672fd
+}
+function {
+  id: 0xd0b47295
+  return_type_id: 0x3af34d6f
+  parameter_id: 0x3af34d6f
+  parameter_id: 0x322c8c4b
+}
+function {
+  id: 0xd103f224
+  return_type_id: 0x0ae4a2c7
+  parameter_id: 0x3d896417
+}
+function {
+  id: 0xd1121136
+  return_type_id: 0x0ae4a2c7
+  parameter_id: 0x3dcee85d
+}
+function {
+  id: 0xd119f642
+  return_type_id: 0x1e820193
+  parameter_id: 0x3074b701
+  parameter_id: 0xd0b3a203
+}
+function {
+  id: 0xd140e5e2
+  return_type_id: 0x1eba3506
+  parameter_id: 0x0490bb4a
+}
+function {
+  id: 0xd208e2cb
+  return_type_id: 0x0ab9fa4c
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xd40f21a4
+  return_type_id: 0x1e9705eb
+  parameter_id: 0x3e10b518
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0xd450aa9d
+  return_type_id: 0x12b82135
+  parameter_id: 0x30a56f97
+  parameter_id: 0x6720d32f
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0xd45d4887
+  return_type_id: 0x3751334b
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xd4733416
+  return_type_id: 0x79be7582
+  parameter_id: 0x2c194586
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xd473b4c2
+  return_type_id: 0x79be7582
+  parameter_id: 0x2c194586
+  parameter_id: 0x18bd6530
+  parameter_id: 0x6720d32f
+  parameter_id: 0x2035145b
+}
+function {
+  id: 0xd587d547
+  return_type_id: 0x03064599
+  parameter_id: 0x322c8c4b
+  parameter_id: 0x3e10b518
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0xd597088b
+  return_type_id: 0x334927f6
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xd59c1ab2
+  return_type_id: 0x49b889e7
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x94ed3026
+  parameter_id: 0x0a193bb7
+}
+function {
+  id: 0xd673de47
+  return_type_id: 0x02eb105a
+  parameter_id: 0x02eb105a
+}
+function {
+  id: 0xd6a766de
+  return_type_id: 0x02eb105a
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0xd6b27f6b
+  return_type_id: 0x49b889e7
+  parameter_id: 0x18456730
+  parameter_id: 0x0a193bb7
+}
+function {
+  id: 0xd6c42b2c
+  return_type_id: 0x1e820193
+  parameter_id: 0x2208f89a
+}
+function {
+  id: 0xd6c91a51
+  return_type_id: 0x02eb105a
+}
+function {
+  id: 0xd742e545
+  return_type_id: 0x26ad5dc1
+  parameter_id: 0xf1a6dfed
+  parameter_id: 0x09427c40
+  parameter_id: 0x1bc6afb1
+}
+function {
+  id: 0xd7754407
+  return_type_id: 0x276a1779
+  parameter_id: 0x347303b4
+}
+function {
+  id: 0xd7cf0cf9
+  return_type_id: 0x4585663f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x310ec01d
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0xd8625902
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+  parameter_id: 0x1908b154
+}
+function {
+  id: 0xd88df0fd
+  return_type_id: 0x2309ad3e
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xd94d3717
+  return_type_id: 0x02eb105a
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0xd9de6af9
+  return_type_id: 0x1e93567a
+  parameter_id: 0x09427c40
+}
+function {
+  id: 0xda1e3051
+  return_type_id: 0x276a1779
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xda32c714
+  return_type_id: 0x0a9a051a
+  parameter_id: 0x4585663f
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x4585663f
+  parameter_id: 0x0483e6f8
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x079ced0e
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xda80c39b
+  return_type_id: 0x276a1779
+  parameter_id: 0x0258f96e
+  parameter_id: 0x1c27fc93
+  parameter_id: 0x3e10b518
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0xdb53d61f
+  return_type_id: 0x3f095459
+  parameter_id: 0x3b806236
+}
+function {
+  id: 0xdbd3d7da
+  return_type_id: 0x1a8d1bcb
+  parameter_id: 0x0858434c
+  parameter_id: 0x716d7970
+}
+function {
+  id: 0xdc294176
+  return_type_id: 0x1e9745d3
+  parameter_id: 0x1291c430
+}
+function {
+  id: 0xdc551b4d
+  return_type_id: 0x030b9acf
+  parameter_id: 0x0c4921a9
+}
+function {
+  id: 0xdc6c821c
+  return_type_id: 0x1e820193
+  parameter_id: 0x09427c40
+  parameter_id: 0x1e820193
+}
+function {
+  id: 0xdcb8e234
+  return_type_id: 0x5d8155a5
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xdcfed1d8
+  return_type_id: 0x3ee88c45
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0xdd32bce5
+  return_type_id: 0x0ae4a2c7
+  parameter_id: 0x0cc78943
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0xdd6063b1
+  return_type_id: 0x3ae3ff84
+  parameter_id: 0x1e9745d3
+  parameter_id: 0x1e9745d3
+}
+function {
+  id: 0xddb49ff7
+  return_type_id: 0x3ae3ff84
+  parameter_id: 0x1e9745d3
+  parameter_id: 0x2738d6de
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0xdde97c3b
+  return_type_id: 0x1e820193
+  parameter_id: 0x09427c40
+  parameter_id: 0x7b64642a
+  parameter_id: 0x499ec4e1
+}
+function {
+  id: 0xddfd6c01
+  return_type_id: 0x3ae3ff84
+  parameter_id: 0x1e9745d3
+  parameter_id: 0x3ae3ff84
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xde006855
+  return_type_id: 0x0ae4a2c7
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3d896417
+  parameter_id: 0x33756485
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xde008e21
+  return_type_id: 0x0ae4a2c7
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3e10b518
+  parameter_id: 0x33756485
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xde01d430
+  return_type_id: 0x0ae4a2c7
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3e75499e
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0ae4a2c7
+  parameter_id: 0x3d1ec847
+  parameter_id: 0x0ae4a2c7
+  parameter_id: 0x3d1ec847
+  parameter_id: 0x0ae4a2c7
+  parameter_id: 0x3d1ec847
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xde26a438
+  return_type_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xde292a8a
+  return_type_id: 0x0ae4a2c7
+  parameter_id: 0x0258f96e
+  parameter_id: 0x347303b4
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3d896417
+  parameter_id: 0x3fed1cc2
+  parameter_id: 0x33756485
+  parameter_id: 0x18bd6530
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+  parameter_id: 0x3bf581e3
+  parameter_id: 0x3654c061
+}
+function {
+  id: 0xde292a8b
+  return_type_id: 0x0ae4a2c7
+  parameter_id: 0x0258f96e
+  parameter_id: 0x347303b4
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3d896417
+  parameter_id: 0x3fed1cc2
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x33756485
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0xde292a8c
+  return_type_id: 0x0ae4a2c7
+  parameter_id: 0x0258f96e
+  parameter_id: 0x347303b4
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3d896417
+  parameter_id: 0x3fed1cc2
+  parameter_id: 0x33756485
+  parameter_id: 0x18bd6530
+  parameter_id: 0x295c7202
+  parameter_id: 0x295c7202
+  parameter_id: 0x3654c061
+}
+function {
+  id: 0xde2977ad
+  return_type_id: 0x0ae4a2c7
+  parameter_id: 0x0258f96e
+  parameter_id: 0x347303b4
+  parameter_id: 0x3e10b518
+  parameter_id: 0x295c7202
+  parameter_id: 0x3e75499e
+  parameter_id: 0x05f260a2
+  parameter_id: 0x3fed1cc2
+  parameter_id: 0x33756485
+  parameter_id: 0x18bd6530
+  parameter_id: 0x295c7202
+  parameter_id: 0xc9082b19
+  parameter_id: 0x295c7202
+  parameter_id: 0x3104c07e
+  parameter_id: 0x3654c061
+}
+function {
+  id: 0xdeac32ec
+  return_type_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xdf475327
+  return_type_id: 0x030b9acf
+}
+function {
+  id: 0xdf6c95f8
+  return_type_id: 0x3b04bead
+  parameter_id: 0x33d50b40
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0xdf76302d
+  return_type_id: 0x12c0ba43
+  parameter_id: 0x00dd92af
+}
+function {
+  id: 0xdf85b594
+  return_type_id: 0x030b9acf
+  parameter_id: 0x030b9acf
+}
+function {
+  id: 0xdfba2774
+  return_type_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xe07964c6
+  return_type_id: 0x1769c4d8
+  parameter_id: 0x3c18d186
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0xe08b0be6
+  return_type_id: 0x0b7c4f67
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xe0acd7ca
+  return_type_id: 0x1b55a8f2
+  parameter_id: 0x3c5396d4
+  parameter_id: 0x0258f96e
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0xe0b805a9
+  return_type_id: 0x3ad81610
+  parameter_id: 0x18a2fb63
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xe12a6d4e
+  return_type_id: 0x07450c2a
+  parameter_id: 0x3760766d
+}
+function {
+  id: 0xe211074d
+  return_type_id: 0x175195e4
+  parameter_id: 0x12e6ffae
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0xe27d9520
+  return_type_id: 0x2e8d5f05
+  parameter_id: 0x2e8d5f05
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xe2823805
+  return_type_id: 0x0b30ee00
+  parameter_id: 0x3860f3c0
+}
+function {
+  id: 0xe28e34fc
+  return_type_id: 0x26b34615
+  parameter_id: 0x2df43e6f
+  parameter_id: 0x187ed209
+}
+function {
+  id: 0xe2c8401b
+  return_type_id: 0x3ea2e6c1
+  parameter_id: 0x3518a6ab
+  parameter_id: 0x0490bb4a
+  parameter_id: 0xeeed68e6
+  parameter_id: 0x3be8a71a
+}
+function {
+  id: 0xe323faf8
+  return_type_id: 0x7584e7da
+  parameter_id: 0x054f691a
+  parameter_id: 0x32a623d7
+}
+function {
+  id: 0xe3a506be
+  return_type_id: 0x1769c4d8
+  parameter_id: 0x3c18d186
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0xe43a0b1b
+  return_type_id: 0x3ada60b4
+  parameter_id: 0x0c467c34
+}
+function {
+  id: 0xe4560854
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x6720d32f
+  parameter_id: 0xce99e6fa
+}
+function {
+  id: 0xe4bccdf7
+  return_type_id: 0x32a623d7
+  parameter_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xe4bddbe2
+  return_type_id: 0x32a623d7
+  parameter_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xe543d9ca
+  return_type_id: 0x2e8ad82b
+  parameter_id: 0x3a583251
+  parameter_id: 0xe02e14d6
+  parameter_id: 0x92233392
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xe54ef49b
+  return_type_id: 0x1769c4d8
+  parameter_id: 0x27b71910
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0xe554bdb1
+  return_type_id: 0x32a623d7
+  parameter_id: 0x6720d32f
+  parameter_id: 0x3e10b518
+  parameter_id: 0x5d8155a5
+  parameter_id: 0x0d9c4ffe
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xe5597dce
+  return_type_id: 0x2e8ad82b
+  parameter_id: 0x3a583251
+  parameter_id: 0xe02e14d6
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+  parameter_id: 0xf17ebd32
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xe55c4b5e
+  return_type_id: 0x2e8ad82b
+  parameter_id: 0x3a583251
+  parameter_id: 0xe02e14d6
+  parameter_id: 0xe02e14d6
+  parameter_id: 0xf435685e
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xe56a11e9
+  return_type_id: 0x2e8ad82b
+  parameter_id: 0x3a583251
+  parameter_id: 0xe02e14d6
+  parameter_id: 0x329bbc92
+  parameter_id: 0x4585663f
+  parameter_id: 0xf435685e
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xe57d88ef
+  return_type_id: 0x2e8ad82b
+  parameter_id: 0x3a583251
+  parameter_id: 0xe02e14d6
+  parameter_id: 0x6720d32f
+  parameter_id: 0xf435685e
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xe5acb8b1
+  return_type_id: 0xdbbf4145
+  parameter_id: 0x05c2a3ca
+}
+function {
+  id: 0xe5fb8cf9
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0xe6019c41
+  return_type_id: 0x174acf71
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3240bbe7
+}
+function {
+  id: 0xe6030de1
+  return_type_id: 0x174acf71
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3806390a
+}
+function {
+  id: 0xe620f747
+  return_type_id: 0x2e8ad82b
+  parameter_id: 0x3a583251
+  parameter_id: 0x329bbc92
+  parameter_id: 0x329bbc92
+  parameter_id: 0x4585663f
+  parameter_id: 0x384c5795
+  parameter_id: 0xf435685e
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xe620f74f
+  return_type_id: 0x2e8ad82b
+  parameter_id: 0x3a583251
+  parameter_id: 0x329bbc92
+  parameter_id: 0x329bbc92
+  parameter_id: 0x4585663f
+  parameter_id: 0x384c5795
+  parameter_id: 0xf435685e
+  parameter_id: 0x126479b8
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xe62af112
+  return_type_id: 0x2e8ad82b
+  parameter_id: 0x3a583251
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xe6385497
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x6ee0bcff
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0xe63fffaa
+  return_type_id: 0x2e8ad82b
+  parameter_id: 0x3a583251
+  parameter_id: 0x329bbc92
+  parameter_id: 0x4585663f
+  parameter_id: 0xf435685e
+  parameter_id: 0x126479b8
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xe6b0ea6f
+  return_type_id: 0x2e8ad82b
+  parameter_id: 0x3a583251
+  parameter_id: 0x11cffa09
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xe6b2b374
+  return_type_id: 0x2e8ad82b
+  parameter_id: 0x3a583251
+  parameter_id: 0x11cffa09
+  parameter_id: 0x4585663f
+  parameter_id: 0xf17ebd32
+  parameter_id: 0x33756485
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0xe6f0ec83
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xe6f23e50
+  return_type_id: 0x2e8ad82b
+  parameter_id: 0x3a583251
+  parameter_id: 0x0671e24f
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xe6f5e267
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x171c27b5
+  parameter_id: 0x33d0e528
+  parameter_id: 0x1abb4311
+}
+function {
+  id: 0xe70e9a5b
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0xe717ecff
+  return_type_id: 0x2e94a1e1
+  parameter_id: 0x03ce74cd
+}
+function {
+  id: 0xe71a2817
+  return_type_id: 0x2e94a1e1
+  parameter_id: 0x0258f96e
+  parameter_id: 0x1e41b656
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xe720dad5
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x6720d32f
+  parameter_id: 0x13f8b706
+  parameter_id: 0x0d5f1839
+}
+function {
+  id: 0xe72ef591
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x6720d32f
+  parameter_id: 0x13f8b706
+  parameter_id: 0x36d55eab
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xe76c6fcf
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xe7724f97
+  return_type_id: 0x2e94a1e1
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0xe7f008ab
+  return_type_id: 0x3ad81610
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0x18bd6530
+  parameter_id: 0xb0c2eb21
+}
+function {
+  id: 0xe7f6577b
+  return_type_id: 0x1769c4d8
+  parameter_id: 0x27b71910
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xe80de31f
+  return_type_id: 0x22b36393
+  parameter_id: 0x10673339
+  parameter_id: 0x23e856d0
+}
+function {
+  id: 0xea3d26bb
+  return_type_id: 0x2e8ed696
+  parameter_id: 0x0e6618c4
+  parameter_id: 0x35bf21bb
+}
+function {
+  id: 0xea4685f2
+  return_type_id: 0x32c156ea
+  parameter_id: 0x32c156ea
+  parameter_id: 0x6720d32f
+  parameter_id: 0x08592c37
+  parameter_id: 0x0bb0c019
+  parameter_id: 0x0b27dc43
+}
+function {
+  id: 0xead33344
+  return_type_id: 0x26847863
+  parameter_id: 0x3564a5a2
+  parameter_id: 0x92233392
+  parameter_id: 0x92233392
+}
+function {
+  id: 0xeaf38011
+  return_type_id: 0x84d1b470
+  parameter_id: 0x035d664d
+  parameter_id: 0x2dfe56bd
+  parameter_id: 0x18bd6530
+  parameter_id: 0x00d82b18
+}
+function {
+  id: 0xeb207e2b
+  return_type_id: 0x32c156ea
+  parameter_id: 0x32c156ea
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0xeb2ed334
+  return_type_id: 0x32c156ea
+  parameter_id: 0x32c156ea
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3ab47ff9
+}
+function {
+  id: 0xeb7d4b96
+  return_type_id: 0x3ada60b4
+  parameter_id: 0x315b7e01
+}
+function {
+  id: 0xebb137aa
+  return_type_id: 0x4585663f
+  parameter_id: 0x9519135f
+  parameter_id: 0x0b036186
+}
+function {
+  id: 0xec4920f6
+  return_type_id: 0x9cf21ab5
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xecebfa40
+  return_type_id: 0x1f4de39e
+  parameter_id: 0x0258f96e
+  parameter_id: 0x347303b4
+  parameter_id: 0x39915f84
+}
+function {
+  id: 0xed225d89
+  return_type_id: 0x7584e7da
+  parameter_id: 0x3e6396e0
+}
+function {
+  id: 0xed6f687f
+  return_type_id: 0x0355dc72
+  parameter_id: 0x0355dc72
+}
+function {
+  id: 0xed8994d9
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x4585663f
+  parameter_id: 0x92b210b3
+  parameter_id: 0x18bd6530
+  parameter_id: 0x1c524c99
+}
+function {
+  id: 0xedba1f63
+  return_type_id: 0x0355dc72
+}
+function {
+  id: 0xee085698
+  return_type_id: 0x2e789ea8
+  parameter_id: 0x04f7a60d
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0xeed31713
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xef54849c
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x4585663f
+  parameter_id: 0x2b7be833
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0xefaef687
+  return_type_id: 0x3ada60b4
+  parameter_id: 0x21003da7
+  parameter_id: 0x315b7e01
+}
+function {
+  id: 0xefc5028b
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xefd6219a
+  return_type_id: 0x1b55a8f2
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3c5396d4
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0xf0196dc4
+  return_type_id: 0x32a623d7
+  parameter_id: 0x30da8694
+  parameter_id: 0x1710671e
+}
+function {
+  id: 0xf028149a
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x3b04bead
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0xf03663da
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x3e10b518
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xf03fb3d2
+  return_type_id: 0x2efe8065
+  parameter_id: 0xeb0f6de6
+}
+function {
+  id: 0xf050a204
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x3a583251
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0xf06574af
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x3b04bead
+}
+function {
+  id: 0xf06a3ce3
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x3b399f9e
+}
+function {
+  id: 0xf06a5b8e
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x38d23361
+  parameter_id: 0x3ea31487
+}
+function {
+  id: 0xf07462c6
+  return_type_id: 0x26ee682a
+  parameter_id: 0x2f5fce77
+  parameter_id: 0x2fb1b820
+  parameter_id: 0x2fb1b820
+}
+function {
+  id: 0xf0a03df0
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x3e6396e0
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xf0a5d546
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x3806390a
+}
+function {
+  id: 0xf0af15c1
+  return_type_id: 0x32a623d7
+  parameter_id: 0x32a623d7
+  parameter_id: 0x1d44326e
+}
+function {
+  id: 0xf0b7dadd
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x3806390a
+  parameter_id: 0x0483e6f8
+}
+function {
+  id: 0xf0bc67f4
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x3860f3c0
+}
+function {
+  id: 0xf0d4677b
+  return_type_id: 0x32a623d7
+  parameter_id: 0x32a623d7
+  parameter_id: 0x054f691a
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0xf0da0508
+  return_type_id: 0x32a623d7
+  parameter_id: 0x32a623d7
+}
+function {
+  id: 0xf0e39e7e
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0xf0e6b4cf
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x394b6e9f
+  parameter_id: 0x040d1b01
+}
+function {
+  id: 0xf0ea32e0
+  return_type_id: 0x32a623d7
+  parameter_id: 0x32a623d7
+  parameter_id: 0x0c0dfa25
+}
+function {
+  id: 0xf0f680a3
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x394b6e9f
+}
+function {
+  id: 0xf0fa540a
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x3f0185ef
+  parameter_id: 0x6720d32f
+  parameter_id: 0x0bb4e60f
+}
+function {
+  id: 0xf0ffa23a
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x396fe4f8
+}
+function {
+  id: 0xf10b3730
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x3de54f8a
+  parameter_id: 0x358ff5b7
+}
+function {
+  id: 0xf1208847
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x3861403d
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xf1214399
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x3e146274
+}
+function {
+  id: 0xf1236ad6
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x3e10b518
+  parameter_id: 0x00c72527
+}
+function {
+  id: 0xf1329f23
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x3dcae1c0
+  parameter_id: 0x391f15ea
+}
+function {
+  id: 0xf13cd57c
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x3e6239e1
+}
+function {
+  id: 0xf1417c1e
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x3f949c69
+}
+function {
+  id: 0xf14b1ed8
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x320871e3
+  parameter_id: 0xdb566935
+}
+function {
+  id: 0xf1510018
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x3c18d186
+  parameter_id: 0x3e6396e0
+  parameter_id: 0x2a316b68
+  parameter_id: 0x18bd6530
+  parameter_id: 0x391f15ea
+  parameter_id: 0x7584e7da
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xf152640a
+  return_type_id: 0x1b36c7a2
+  parameter_id: 0x1d19a9d5
+}
+function {
+  id: 0xf1736137
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x3b04bead
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xf18d022a
+  return_type_id: 0x1344d43c
+  parameter_id: 0x31829648
+}
+function {
+  id: 0xf1ad8e6c
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x3c2755a3
+}
+function {
+  id: 0xf1b060ff
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x3f59ee8d
+  parameter_id: 0x30901634
+}
+function {
+  id: 0xf1b41e2b
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x3c4114bd
+}
+function {
+  id: 0xf1c60201
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x3d896417
+}
+function {
+  id: 0xf1cac515
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x3e6239e1
+  parameter_id: 0x3e6239e1
+  parameter_id: 0x3e6239e1
+}
+function {
+  id: 0xf1d25c72
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x39c3bcd2
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xf1d7e113
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x3dcee85d
+}
+function {
+  id: 0xf1d83496
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0xf1d9014d
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x3e146274
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0xf1db21b0
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x3e1c2855
+  parameter_id: 0x3e1c2855
+}
+function {
+  id: 0xf1e7732e
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x3ea31487
+  parameter_id: 0x3ea31487
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xf1f03942
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x3909df7b
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xf1fc63fc
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x3ee42466
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+  parameter_id: 0x27a7c613
+  parameter_id: 0x92233392
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xf2015dce
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x32941b2b
+}
+function {
+  id: 0xf20dd3f1
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x32a623d7
+}
+function {
+  id: 0xf218ee55
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x32a623d7
+  parameter_id: 0x054f691a
+}
+function {
+  id: 0xf226477c
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x320871e3
+}
+function {
+  id: 0xf22e04eb
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x315b7e01
+  parameter_id: 0x358ff5b7
+  parameter_id: 0x2afee447
+}
+function {
+  id: 0xf22f7816
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x322c8c4b
+}
+function {
+  id: 0xf2346210
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x33756485
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0xf24127d0
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x315b7e01
+  parameter_id: 0x2afee447
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x31c8b544
+}
+function {
+  id: 0xf2422a10
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x3399c453
+}
+function {
+  id: 0xf24d9c78
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x35d510c3
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xf250624e
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x33d0e528
+}
+function {
+  id: 0xf25d597f
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x3399c453
+  parameter_id: 0x07dcdbe1
+}
+function {
+  id: 0xf25e7c51
+  return_type_id: 0x3e8b410d
+  parameter_id: 0x1b55a8f2
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xf275a972
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x3043f6b1
+  parameter_id: 0x3043f6b1
+}
+function {
+  id: 0xf2790225
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xf2bde902
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x315b7e01
+  parameter_id: 0x13580d6c
+  parameter_id: 0x0ee13889
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0xf2d19814
+  return_type_id: 0x26e55184
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0xf2d73ac2
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x322c8c4b
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0xf2d803c7
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x31f1630d
+}
+function {
+  id: 0xf2dafae3
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x31fa879c
+}
+function {
+  id: 0xf2dbd1d4
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x31fe2b41
+}
+function {
+  id: 0xf2ee299f
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x324e7f0f
+  parameter_id: 0x324e7f0f
+  parameter_id: 0x4585663f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0xf2f112a6
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x32343a4a
+  parameter_id: 0x3545954a
+  parameter_id: 0x3545954a
+}
+function {
+  id: 0xf2f28484
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x315b7e01
+}
+function {
+  id: 0xf2f497a5
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x31433284
+}
+function {
+  id: 0xf300f8e6
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x358ff5b7
+  parameter_id: 0x358ff5b7
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xf309ac48
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x34df9ab6
+  parameter_id: 0x26847863
+}
+function {
+  id: 0xf3110cae
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x36d55eab
+}
+function {
+  id: 0xf31199bf
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x358ff5b7
+  parameter_id: 0x358ff5b7
+}
+function {
+  id: 0xf3220908
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x36194830
+}
+function {
+  id: 0xf334abb2
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x34bb6aad
+  parameter_id: 0x2e2c982d
+  parameter_id: 0x1a61f607
+}
+function {
+  id: 0xf33b99db
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x3a88a91e
+  parameter_id: 0xc9082b19
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xf343e116
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x315b7e01
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x13580d6c
+  parameter_id: 0x13580d6c
+  parameter_id: 0x0ee13889
+  parameter_id: 0x0ee13889
+  parameter_id: 0x358ff5b7
+}
+function {
+  id: 0xf354bbbc
+  return_type_id: 0x26e55184
+  parameter_id: 0x3e10b518
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x28b7a3b7
+  parameter_id: 0x043574da
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xf382c83a
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x36194830
+  parameter_id: 0x292cb268
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0xf387c34f
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x348f6886
+  parameter_id: 0x0327ccee
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xf389cb34
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x36194830
+  parameter_id: 0x2ea8d96e
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xf3944fac
+  return_type_id: 0x3a800090
+  parameter_id: 0x3a800090
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3e10b518
+  parameter_id: 0x391f15ea
+  parameter_id: 0xf435685e
+  parameter_id: 0xc14619eb
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xf395f41f
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x348f6886
+  parameter_id: 0x049d4e97
+}
+function {
+  id: 0xf39c3f1e
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x355e866a
+  parameter_id: 0x1bf16028
+}
+function {
+  id: 0xf39dedcb
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x3ec7cfc4
+  parameter_id: 0xa2114faf
+}
+function {
+  id: 0xf3b89be9
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x347303b4
+}
+function {
+  id: 0xf3c9c4ce
+  return_type_id: 0xeb0f6de6
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0xf3ccef7b
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x31fa879c
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xf3dba0e1
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x397d00ab
+  parameter_id: 0xc9082b19
+  parameter_id: 0x13580d6c
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0xf3dea95c
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x3399c453
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xf3e4ab4a
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x35abdbf6
+  parameter_id: 0x0c2e195c
+  parameter_id: 0x6720d32f
+  parameter_id: 0xd0b3a203
+  parameter_id: 0xd0b3a203
+}
+function {
+  id: 0xf44fff9f
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x2936263d
+  parameter_id: 0x2b1e820c
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0xf4de7ca4
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x2aa0b9bb
+  parameter_id: 0x33756485
+  parameter_id: 0x7f7172c7
+}
+function {
+  id: 0xf4f34784
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0xf501737c
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x2e94a1e1
+}
+function {
+  id: 0xf5140d8a
+  return_type_id: 0x368f679b
+  parameter_id: 0x26ee682a
+}
+function {
+  id: 0xf515b7e4
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x2170d06d
+  parameter_id: 0xf435685e
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0xf535e5c4
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x2c8e1aaa
+  parameter_id: 0x2c8e1aaa
+}
+function {
+  id: 0xf536fdc7
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x2fb647c0
+  parameter_id: 0x1e2f3f3a
+  parameter_id: 0x1e2f3f3a
+}
+function {
+  id: 0xf53ef460
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x2170d06d
+  parameter_id: 0xf1a6dfed
+}
+function {
+  id: 0xf5509a7e
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x2e029f76
+  parameter_id: 0x1d19a9d5
+}
+function {
+  id: 0xf5978397
+  return_type_id: 0x0f78474f
+  parameter_id: 0x0258f96e
+  parameter_id: 0x39915f84
+  parameter_id: 0x32abd75b
+}
+function {
+  id: 0xf5a2a923
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x2dbdd7fc
+  parameter_id: 0x1a61f607
+}
+function {
+  id: 0xf5aad9c6
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x2131312a
+  parameter_id: 0xd0b3a203
+}
+function {
+  id: 0xf5c5d4b2
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x2ef43f67
+  parameter_id: 0x358ff5b7
+  parameter_id: 0x2afee447
+}
+function {
+  id: 0xf6054bae
+  return_type_id: 0x1330389b
+  parameter_id: 0x32c156ea
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0xf60969b2
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x24c6c7eb
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xf614683f
+  return_type_id: 0x32941b2b
+  parameter_id: 0x38fdd541
+  parameter_id: 0x3c01aef6
+}
+function {
+  id: 0xf62197b5
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x221732c5
+}
+function {
+  id: 0xf6266522
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x2208f89a
+}
+function {
+  id: 0xf6697fa6
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x210b9681
+  parameter_id: 0x20351a02
+  parameter_id: 0x3316fc74
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0xf66ca055
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x2060db23
+  parameter_id: 0x32e49390
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0xf66dfeca
+  return_type_id: 0x1f160413
+  parameter_id: 0x3e10b518
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0xf672797e
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x235889e8
+}
+function {
+  id: 0xf67c6346
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x2360e10b
+}
+function {
+  id: 0xf6814266
+  return_type_id: 0x0756289d
+  parameter_id: 0x0756289d
+}
+function {
+  id: 0xf6818c29
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x26e55184
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xf6852843
+  return_type_id: 0x2e94a1e1
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xf68b6f5e
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x238b8721
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xf690d6d1
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x20d23755
+}
+function {
+  id: 0xf6a4ad2f
+  return_type_id: 0x368487be
+  parameter_id: 0x1d19a9d5
+}
+function {
+  id: 0xf6ab2a7f
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x235889e8
+  parameter_id: 0x3654c061
+}
+function {
+  id: 0xf6c0819f
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x21936a6e
+}
+function {
+  id: 0xf6d4f929
+  return_type_id: 0x0b7c4f67
+  parameter_id: 0x18a2fb63
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xf6e0960a
+  return_type_id: 0x1769c4d8
+  parameter_id: 0x6720d32f
+  parameter_id: 0x27b71910
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+  parameter_id: 0x2bf3f6bc
+}
+function {
+  id: 0xf6f4ec3e
+  return_type_id: 0x32a623d7
+  parameter_id: 0x29a77f06
+  parameter_id: 0x3e10b518
+  parameter_id: 0x5d8155a5
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xf6fffafa
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x235889e8
+  parameter_id: 0x2360e10b
+}
+function {
+  id: 0xf70f2c5c
+  return_type_id: 0x3e6239e1
+  parameter_id: 0x269c8e40
+}
+function {
+  id: 0xf71fc10e
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x26ee682a
+}
+function {
+  id: 0xf76f0acc
+  return_type_id: 0x3e75499e
+  parameter_id: 0x315b7e01
+  parameter_id: 0x379d63b0
+}
+function {
+  id: 0xf7737100
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x246dc7d4
+  parameter_id: 0x3316fc74
+}
+function {
+  id: 0xf7820d73
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x249959de
+}
+function {
+  id: 0xf78aaa08
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x24bbc433
+}
+function {
+  id: 0xf795eafe
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x24c6c7eb
+}
+function {
+  id: 0xf7e2e2fa
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x2668e644
+  parameter_id: 0x358ff5b7
+  parameter_id: 0x2afee447
+}
+function {
+  id: 0xf7ecf18c
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x27459bea
+  parameter_id: 0x26731c99
+}
+function {
+  id: 0xf7f4d3a0
+  return_type_id: 0x3e77b2d8
+  parameter_id: 0x3a583251
+  parameter_id: 0x4faa9b63
+  parameter_id: 0x1856a912
+}
+function {
+  id: 0xf806feb1
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x1e9745d3
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xf80f7ca9
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x1ba8b228
+  parameter_id: 0x1042c9d1
+}
+function {
+  id: 0xf818a797
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x1b2ca025
+  parameter_id: 0x1c3dbe5a
+  parameter_id: 0x1c898f28
+}
+function {
+  id: 0xf8453f2e
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x1b8590a8
+}
+function {
+  id: 0xf857e1a7
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x1d12e85e
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x0483e6f8
+  parameter_id: 0xf435685e
+  parameter_id: 0x379d63b0
+}
+function {
+  id: 0xf85bcb51
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x1a61f607
+  parameter_id: 0x1a61f607
+  parameter_id: 0x39a83127
+}
+function {
+  id: 0xf86841bc
+  return_type_id: 0x1729da91
+  parameter_id: 0x1e9745d3
+}
+function {
+  id: 0xf879ffed
+  return_type_id: 0x0b59f310
+  parameter_id: 0x0b59f310
+}
+function {
+  id: 0xf87c30f6
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x188b9e81
+  parameter_id: 0x3ea31487
+}
+function {
+  id: 0xf87eb23d
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x1d19a9d5
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xf886bca4
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x188b9e81
+}
+function {
+  id: 0xf8a43ec4
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x18019702
+}
+function {
+  id: 0xf8b23dcb
+  return_type_id: 0x4a500dc8
+  parameter_id: 0x31b5a66f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0xf8da8641
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x1a61f607
+  parameter_id: 0x39a83127
+}
+function {
+  id: 0xf8fa1a38
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x1e820193
+  parameter_id: 0x7be80061
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xf904db60
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x1e820193
+}
+function {
+  id: 0xf919e6cb
+  return_type_id: 0x3a9fa744
+  parameter_id: 0x32caaf24
+}
+function {
+  id: 0xf938bd88
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x18019702
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xf9525760
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x1e820193
+  parameter_id: 0x15a30023
+}
+function {
+  id: 0xf9662ef4
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x1e820193
+  parameter_id: 0x18bd6530
+}
+function {
+  id: 0xf9d4ae0e
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x1dc3d428
+}
+function {
+  id: 0xf9e23171
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x1d19a9d5
+}
+function {
+  id: 0xf9ed2748
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x1d25f132
+}
+function {
+  id: 0xf9f5579f
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x1d44326e
+}
+function {
+  id: 0xfa126b6a
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x104d069a
+  parameter_id: 0x295c7202
+}
+function {
+  id: 0xfa1de4ef
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x12e6ffae
+}
+function {
+  id: 0xfa250b30
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x120540d1
+}
+function {
+  id: 0xfa3b0c7d
+  return_type_id: 0x1349e73e
+  parameter_id: 0x16239d0c
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+  parameter_id: 0xc9082b19
+}
+function {
+  id: 0xfa5a390c
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x1023f4f6
+  parameter_id: 0x3e909b01
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xfaa21496
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x10193e4a
+}
+function {
+  id: 0xfabc5175
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x106029c6
+}
+function {
+  id: 0xface9510
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x11cfee5a
+  parameter_id: 0x064d6086
+}
+function {
+  id: 0xfaddfa97
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x11e6864c
+}
+function {
+  id: 0xfb413284
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x1582ab06
+  parameter_id: 0x2170d06d
+}
+function {
+  id: 0xfb68644e
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x172847a8
+  parameter_id: 0x07f9a52e
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xfb7cfa37
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x11b57133
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0xfb7e748c
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x14abdd00
+  parameter_id: 0x33756485
+  parameter_id: 0xf435685e
+}
+function {
+  id: 0xfb83e1f5
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x154aa8e2
+  parameter_id: 0x1d44326e
+}
+function {
+  id: 0xfb8d5eb8
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x1df06cce
+  parameter_id: 0x9547a3da
+}
+function {
+  id: 0xfbb9a33f
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x1042c9d1
+  parameter_id: 0x4585663f
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0xfbfd6476
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x13035e8b
+  parameter_id: 0x6720d32f
+  parameter_id: 0x15ae72ad
+}
+function {
+  id: 0xfbfecb73
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x156a41de
+}
+function {
+  id: 0xfc0047ea
+  return_type_id: 0x32a623d7
+  parameter_id: 0x0277bf8a
+  parameter_id: 0x3e10b518
+  parameter_id: 0x5d8155a5
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xfc2e3179
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x030b9acf
+  parameter_id: 0x92233392
+}
+function {
+  id: 0xfc43e6b5
+  return_type_id: 0x368487be
+  parameter_id: 0x368487be
+}
+function {
+  id: 0xfc59f36a
+  return_type_id: 0x26e55184
+  parameter_id: 0x0258f96e
+  parameter_id: 0x6720d32f
+  parameter_id: 0x18bd6530
+  parameter_id: 0x351da44b
+}
+function {
+  id: 0xfc6897d7
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x0de4c6b1
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0xfc6dac14
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x0b27dc43
+}
+function {
+  id: 0xfc706cf5
+  return_type_id: 0x32a623d7
+  parameter_id: 0x0ca27481
+  parameter_id: 0xc93e017b
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0xfc78122e
+  return_type_id: 0x32941b2b
+  parameter_id: 0x14fe2ad8
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xfc7fe8d8
+  return_type_id: 0x32a623d7
+  parameter_id: 0x0ca27481
+  parameter_id: 0xc93e017b
+}
+function {
+  id: 0xfc81549c
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x09427c40
+  parameter_id: 0x1e820193
+  parameter_id: 0x3e6239e1
+}
+function {
+  id: 0xfc8ba4d2
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x09427c40
+  parameter_id: 0x1e820193
+  parameter_id: 0x15a30023
+}
+function {
+  id: 0xfca015af
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x08113aaf
+}
+function {
+  id: 0xfca40809
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x08956bf0
+  parameter_id: 0x09427c40
+}
+function {
+  id: 0xfcb31d8f
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x09427c40
+  parameter_id: 0x15a30023
+  parameter_id: 0x4585663f
+  parameter_id: 0x0d30b9c3
+}
+function {
+  id: 0xfcb3294d
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x09427c40
+  parameter_id: 0x15a30023
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xfcc995bd
+  return_type_id: 0x32a623d7
+  parameter_id: 0x0ca27481
+  parameter_id: 0xe276adef
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0xfcd23386
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x0fabaf3b
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xfced4a93
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x0917901f
+  parameter_id: 0x054f691a
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xfcf090be
+  return_type_id: 0x4a500dc8
+  parameter_id: 0x2668e644
+}
+function {
+  id: 0xfcf333ad
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x0b3a3706
+  parameter_id: 0x26795a38
+}
+function {
+  id: 0xfcf4c414
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x09427c40
+}
+function {
+  id: 0xfcf51f22
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x09451098
+}
+function {
+  id: 0xfcfa91ba
+  return_type_id: 0x035d664d
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3e10b518
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0xfcfc86a7
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x06835e9c
+  parameter_id: 0xfe028135
+}
+function {
+  id: 0xfd1cd3b6
+  return_type_id: 0x32941b2b
+  parameter_id: 0x14fe2ad8
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0xfd600427
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x0a1edf98
+  parameter_id: 0x50fa3148
+}
+function {
+  id: 0xfd6947a6
+  return_type_id: 0x32a623d7
+  parameter_id: 0x0258f96e
+  parameter_id: 0x6720d32f
+  parameter_id: 0x4585663f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xfd7484f0
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x0ca27481
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0xfd96e4d2
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x054f691a
+  parameter_id: 0x914dbfdc
+  parameter_id: 0x914dbfdc
+}
+function {
+  id: 0xfda4bf28
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x0258f96e
+  parameter_id: 0xe5b69de1
+}
+function {
+  id: 0xfdd651d2
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x09a83f1c
+  parameter_id: 0x4585663f
+  parameter_id: 0x3842259a
+}
+function {
+  id: 0xfddd6aa8
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x0de4c6b1
+}
+function {
+  id: 0xfdf39d0a
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x0d5f1839
+}
+function {
+  id: 0xfdf9d6ed
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x0ca27481
+  parameter_id: 0x1d44326e
+}
+function {
+  id: 0xfe11706f
+  return_type_id: 0x4a500dc8
+  parameter_id: 0x2ef43f67
+  parameter_id: 0x31b5a66f
+}
+function {
+  id: 0xfe1d9a9c
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x02c35f57
+  parameter_id: 0x02c35f57
+  parameter_id: 0x086cc0f7
+}
+function {
+  id: 0xfe2116bd
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x064d6086
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xfe25e2a0
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x0206e690
+}
+function {
+  id: 0xfe32655f
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x0258f96e
+}
+function {
+  id: 0xfe436e74
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x000fdfa4
+  parameter_id: 0x3930a655
+}
+function {
+  id: 0xfe57c637
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x03ce74cd
+}
+function {
+  id: 0xfe66bdb7
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x030b9acf
+}
+function {
+  id: 0xfe6da83f
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x0327ccee
+}
+function {
+  id: 0xfe72068b
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x0359763e
+}
+function {
+  id: 0xfe730297
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x035d664d
+}
+function {
+  id: 0xfe8152e6
+  return_type_id: 0x1330389b
+  parameter_id: 0x1330389b
+}
+function {
+  id: 0xfea45b04
+  return_type_id: 0x6d7f5ff6
+}
+function {
+  id: 0xfec3d248
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x019e2530
+}
+function {
+  id: 0xfec52a83
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x0206e690
+  parameter_id: 0x383208c1
+}
+function {
+  id: 0xfec79391
+  return_type_id: 0x32a623d7
+  parameter_id: 0x0ca27481
+  parameter_id: 0x6720d32f
+}
+function {
+  id: 0xfeca278b
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x0258f96e
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0xfed7fcc9
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x00dd92af
+  parameter_id: 0x12c0ba43
+  parameter_id: 0x3f063da2
+}
+function {
+  id: 0xfeedb339
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x02ed0755
+  parameter_id: 0x3caa7a0b
+}
+function {
+  id: 0xfeeea03f
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x0e86f8f4
+  parameter_id: 0xfb622df0
+  parameter_id: 0x1b36c7a2
+}
+function {
+  id: 0xfef65b9f
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x079ff791
+  parameter_id: 0x6d7f5ff6
+}
+function {
+  id: 0xfefa86c6
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x079ff791
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x33756485
+}
+function {
+  id: 0xfefc2ff4
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x030b9acf
+  parameter_id: 0x26a490c7
+}
+function {
+  id: 0xff048ca3
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x06835e9c
+}
+function {
+  id: 0xff1209e9
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x00c72527
+  parameter_id: 0x6720d32f
+  parameter_id: 0x6d7f5ff6
+  parameter_id: 0x11cfee5a
+}
+function {
+  id: 0xff2470c7
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x0258f96e
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xff43a6e0
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x079ff791
+}
+function {
+  id: 0xff8308a1
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x049d4e97
+}
+function {
+  id: 0xff934450
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x079f969f
+  parameter_id: 0x343ebce3
+}
+function {
+  id: 0xff9fab83
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x00b7947f
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xffa35209
+  return_type_id: 0x32a623d7
+  parameter_id: 0x0ca27481
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0xffa71dc4
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x040d1b01
+}
+function {
+  id: 0xffbaa126
+  return_type_id: 0x32a623d7
+  parameter_id: 0x0ca27481
+  parameter_id: 0x3b461cc8
+  parameter_id: 0x32a623d7
+}
+function {
+  id: 0xffc331a7
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x064d6086
+  parameter_id: 0x3ea31487
+  parameter_id: 0x3ea31487
+  parameter_id: 0x4585663f
+}
+function {
+  id: 0xffdfe86a
+  return_type_id: 0x17244d16
+  parameter_id: 0x3e10b518
+}
+function {
+  id: 0xffe6827d
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x054f691a
+  parameter_id: 0x054f691a
+  parameter_id: 0x11cfee5a
+  parameter_id: 0x13580d6c
+}
+function {
+  id: 0xfffcea5d
+  return_type_id: 0x6d7f5ff6
+  parameter_id: 0x0562c566
+}
+elf_symbol {
+  id: 0x2dddbe52
+  name: "I_BDEV"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0c8597fa
+  type_id: 0x2dfa71ba
+  full_name: "I_BDEV"
+}
+elf_symbol {
+  id: 0xf56ca4c7
+  name: "__ClearPageMovable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb4e74d22
+  type_id: 0x11388634
+  full_name: "__ClearPageMovable"
+}
+elf_symbol {
+  id: 0x59348d38
+  name: "__SetPageMovable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe8b6d861
+  type_id: 0x11e189a0
+  full_name: "__SetPageMovable"
+}
+elf_symbol {
+  id: 0x5b94e7ac
+  name: "___drm_dbg"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7e3277f8
+  type_id: 0x16a446d5
+  full_name: "___drm_dbg"
+}
+elf_symbol {
+  id: 0x41de13f7
+  name: "___pskb_trim"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x45b20f13
+  type_id: 0x9dc52cf1
+  full_name: "___pskb_trim"
+}
+elf_symbol {
+  id: 0xe284f532
+  name: "___ratelimit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1d24c881
+  type_id: 0x95e66878
+  full_name: "___ratelimit"
+}
+elf_symbol {
+  id: 0x6e1bc82e
+  name: "__alloc_pages"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7870d49b
+  type_id: 0x80fe241d
+  full_name: "__alloc_pages"
+}
+elf_symbol {
+  id: 0x9fa51b33
+  name: "__alloc_percpu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x29f93135
+  type_id: 0x684b3e47
+  full_name: "__alloc_percpu"
+}
+elf_symbol {
+  id: 0x228f3ab6
+  name: "__alloc_percpu_gfp"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7900fd25
+  type_id: 0x687757f0
+  full_name: "__alloc_percpu_gfp"
+}
+elf_symbol {
+  id: 0x9be8e89f
+  name: "__alloc_skb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x19dd35ba
+  type_id: 0x7a21af66
+  full_name: "__alloc_skb"
+}
+elf_symbol {
+  id: 0x3f6b0839
+  name: "__arch_clear_user"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4d296494
+}
+elf_symbol {
+  id: 0x0cec86b7
+  name: "__arch_copy_from_user"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2be0c009
+}
+elf_symbol {
+  id: 0xc4fd654e
+  name: "__arch_copy_to_user"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9a85eebb
+}
+elf_symbol {
+  id: 0xc77348b3
+  name: "__arm_smccc_hvc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x50f85302
+}
+elf_symbol {
+  id: 0x21c9fe20
+  name: "__arm_smccc_smc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf93aae46
+}
+elf_symbol {
+  id: 0xeaf0b860
+  name: "__arm_smccc_sve_check"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3d93c7c2
+}
+elf_symbol {
+  id: 0x1bc9d7cd
+  name: "__auxiliary_driver_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb57ef57b
+  type_id: 0x9939118b
+  full_name: "__auxiliary_driver_register"
+}
+elf_symbol {
+  id: 0xd97b055a
+  name: "__balance_callbacks"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2af1f39a
+  type_id: 0x1b18f64e
+  full_name: "__balance_callbacks"
+}
+elf_symbol {
+  id: 0x8920b575
+  name: "__bitmap_and"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeca957d1
+  type_id: 0xffc331a7
+  full_name: "__bitmap_and"
+}
+elf_symbol {
+  id: 0x149a28b5
+  name: "__bitmap_andnot"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf390f6f1
+  type_id: 0xffc331a7
+  full_name: "__bitmap_andnot"
+}
+elf_symbol {
+  id: 0x1709df48
+  name: "__bitmap_clear"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x922f45a6
+  type_id: 0x1004d41e
+  full_name: "__bitmap_clear"
+}
+elf_symbol {
+  id: 0x85a72204
+  name: "__bitmap_complement"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7c173634
+  type_id: 0x11e0e4b9
+  full_name: "__bitmap_complement"
+}
+elf_symbol {
+  id: 0xa8f918ba
+  name: "__bitmap_equal"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x06d11488
+  type_id: 0xf1e7732e
+  full_name: "__bitmap_equal"
+}
+elf_symbol {
+  id: 0x05fd3e82
+  name: "__bitmap_intersects"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x48d27375
+  type_id: 0xf1e7732e
+  full_name: "__bitmap_intersects"
+}
+elf_symbol {
+  id: 0xfe65176f
+  name: "__bitmap_or"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa084749a
+  type_id: 0x11ff3b30
+  full_name: "__bitmap_or"
+}
+elf_symbol {
+  id: 0x58758cb9
+  name: "__bitmap_replace"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x18345b8e
+  type_id: 0x11fec6c8
+  full_name: "__bitmap_replace"
+}
+elf_symbol {
+  id: 0x1341e2f9
+  name: "__bitmap_set"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x615911d7
+  type_id: 0x1004d41e
+  full_name: "__bitmap_set"
+}
+elf_symbol {
+  id: 0xe465faed
+  name: "__bitmap_subset"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3221df67
+  type_id: 0xf1e7732e
+  full_name: "__bitmap_subset"
+}
+elf_symbol {
+  id: 0xc6582869
+  name: "__bitmap_weight"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x21ea5251
+  type_id: 0xc065ae42
+  full_name: "__bitmap_weight"
+}
+elf_symbol {
+  id: 0xbceb9c07
+  name: "__bitmap_xor"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf6fc8791
+  type_id: 0x11ff3b30
+  full_name: "__bitmap_xor"
+}
+elf_symbol {
+  id: 0xe70766b6
+  name: "__blk_alloc_disk"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1ce70c88
+  type_id: 0x55afd20f
+  full_name: "__blk_alloc_disk"
+}
+elf_symbol {
+  id: 0xb339c336
+  name: "__blk_mq_alloc_disk"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x353b81ea
+  type_id: 0x475eeec2
+  full_name: "__blk_mq_alloc_disk"
+}
+elf_symbol {
+  id: 0x01badff0
+  name: "__blk_mq_end_request"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf70b809f
+  type_id: 0x16d771f6
+  full_name: "__blk_mq_end_request"
+}
+elf_symbol {
+  id: 0x4df0b385
+  name: "__blk_req_zone_write_lock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbbb4dd71
+  type_id: 0x1738d1f7
+  full_name: "__blk_req_zone_write_lock"
+}
+elf_symbol {
+  id: 0x35aa1afd
+  name: "__blk_req_zone_write_unlock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x71e52f16
+  type_id: 0x1738d1f7
+  full_name: "__blk_req_zone_write_unlock"
+}
+elf_symbol {
+  id: 0x5a6afeee
+  name: "__blk_rq_map_sg"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0b0673fa
+  type_id: 0x9fae3c48
+  full_name: "__blk_rq_map_sg"
+}
+elf_symbol {
+  id: 0xc8eb813d
+  name: "__blkdev_issue_discard"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2f7f30f7
+  type_id: 0x9dfe427d
+  full_name: "__blkdev_issue_discard"
+}
+elf_symbol {
+  id: 0x7bf707d4
+  name: "__blkg_prfill_rwstat"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x72651c26
+  type_id: 0x56d6c623
+  full_name: "__blkg_prfill_rwstat"
+}
+elf_symbol {
+  id: 0xbf1d0365
+  name: "__blkg_prfill_u64"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x75e62be2
+  type_id: 0x56fc975d
+  full_name: "__blkg_prfill_u64"
+}
+elf_symbol {
+  id: 0x2057d4fc
+  name: "__check_object_size"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x88db9f48
+  type_id: 0x1e091eac
+  full_name: "__check_object_size"
+}
+elf_symbol {
+  id: 0x4598418e
+  name: "__class_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x13f8371b
+  type_id: 0x9e2a24ca
+  full_name: "__class_create"
+}
+elf_symbol {
+  id: 0x587f0c74
+  name: "__class_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x290df2c0
+  type_id: 0x977ee81f
+  full_name: "__class_register"
+}
+elf_symbol {
+  id: 0xad3ab1fc
+  name: "__clk_determine_rate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb5a35ec0
+  type_id: 0x9fc8d916
+  full_name: "__clk_determine_rate"
+}
+elf_symbol {
+  id: 0xac2b058b
+  name: "__clk_get_hw"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x83284a5a
+  type_id: 0xd1121136
+  full_name: "__clk_get_hw"
+}
+elf_symbol {
+  id: 0x6ffa6a33
+  name: "__clk_get_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc569d8ce
+  type_id: 0x9e54ea0f
+  full_name: "__clk_get_name"
+}
+elf_symbol {
+  id: 0x694ba466
+  name: "__clk_hw_register_divider"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc2d9eccb
+  type_id: 0xde292a8a
+  full_name: "__clk_hw_register_divider"
+}
+elf_symbol {
+  id: 0xa6164cad
+  name: "__clk_hw_register_fixed_rate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8350bf95
+  type_id: 0xde292a8b
+  full_name: "__clk_hw_register_fixed_rate"
+}
+elf_symbol {
+  id: 0x8b66e11e
+  name: "__clk_hw_register_gate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x74775fcd
+  type_id: 0xde292a8c
+  full_name: "__clk_hw_register_gate"
+}
+elf_symbol {
+  id: 0xd0f23870
+  name: "__clk_hw_register_mux"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8cb063a2
+  type_id: 0xde2977ad
+  full_name: "__clk_hw_register_mux"
+}
+elf_symbol {
+  id: 0xaac029a7
+  name: "__clk_is_enabled"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc6a4a872
+  type_id: 0xf1d7e113
+  full_name: "__clk_is_enabled"
+}
+elf_symbol {
+  id: 0x6a30419a
+  name: "__clk_mux_determine_rate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x919569ae
+  type_id: 0x9fc8d916
+  full_name: "__clk_mux_determine_rate"
+}
+elf_symbol {
+  id: 0x021741b4
+  name: "__clk_mux_determine_rate_closest"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x585eaed3
+  type_id: 0x9fc8d916
+  full_name: "__clk_mux_determine_rate_closest"
+}
+elf_symbol {
+  id: 0x9339caba
+  name: "__clocksource_register_scale"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc5b1a46d
+  type_id: 0x9b8e2bf2
+  full_name: "__clocksource_register_scale"
+}
+elf_symbol {
+  id: 0xac1ff1ce
+  name: "__const_udelay"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeae3dfd6
+  type_id: 0x1c4508b2
+  full_name: "__const_udelay"
+}
+elf_symbol {
+  id: 0xba429af2
+  name: "__copy_overflow"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7682ba4e
+  type_id: 0x099db0ca
+  full_name: "__copy_overflow"
+}
+elf_symbol {
+  id: 0xe495eb53
+  name: "__cpu_active_mask"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x15db3b99
+  type_id: 0xc9a82d21
+  full_name: "__cpu_active_mask"
+}
+elf_symbol {
+  id: 0x1210424a
+  name: "__cpu_dying_mask"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x912521b7
+  type_id: 0xc9a82d21
+  full_name: "__cpu_dying_mask"
+}
+elf_symbol {
+  id: 0xceb7517f
+  name: "__cpu_online_mask"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xac594e02
+  type_id: 0xc9a82d21
+  full_name: "__cpu_online_mask"
+}
+elf_symbol {
+  id: 0xe8be269c
+  name: "__cpu_possible_mask"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xde7ece30
+  type_id: 0xc9a82d21
+  full_name: "__cpu_possible_mask"
+}
+elf_symbol {
+  id: 0x4580056d
+  name: "__cpu_present_mask"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xb3055449
+  type_id: 0xc9a82d21
+  full_name: "__cpu_present_mask"
+}
+elf_symbol {
+  id: 0x61ab264f
+  name: "__cpufreq_driver_target"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaa4f60c2
+  type_id: 0x9ce01ea2
+  full_name: "__cpufreq_driver_target"
+}
+elf_symbol {
+  id: 0x93d381a9
+  name: "__cpuhp_remove_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x82d7e59a
+  type_id: 0x12cacb36
+  full_name: "__cpuhp_remove_state"
+}
+elf_symbol {
+  id: 0x30a3a42f
+  name: "__cpuhp_setup_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4d01ac5c
+  type_id: 0x9e843488
+  full_name: "__cpuhp_setup_state"
+}
+elf_symbol {
+  id: 0xb96bbc49
+  name: "__cpuhp_setup_state_cpuslocked"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9ac0587f
+  type_id: 0x9e843488
+  full_name: "__cpuhp_setup_state_cpuslocked"
+}
+elf_symbol {
+  id: 0xafb7da0f
+  name: "__cpuhp_state_add_instance"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf4b5123c
+  type_id: 0x9e1f3cf5
+  full_name: "__cpuhp_state_add_instance"
+}
+elf_symbol {
+  id: 0x42e03bd1
+  name: "__cpuhp_state_remove_instance"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x37e793c1
+  type_id: 0x9e1f3cf5
+  full_name: "__cpuhp_state_remove_instance"
+}
+elf_symbol {
+  id: 0x857a0e42
+  name: "__crypto_memneq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5a44f8cb
+  type_id: 0x3f327924
+  full_name: "__crypto_memneq"
+}
+elf_symbol {
+  id: 0xe889d441
+  name: "__crypto_xor"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa3f12f69
+  type_id: 0x105b48b9
+  full_name: "__crypto_xor"
+}
+elf_symbol {
+  id: 0x087c7a06
+  name: "__dev_change_net_namespace"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x80432a75
+  type_id: 0x9115faa6
+  full_name: "__dev_change_net_namespace"
+}
+elf_symbol {
+  id: 0x2d91cc56
+  name: "__dev_get_by_index"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xecfcb475
+  type_id: 0xfec79391
+  full_name: "__dev_get_by_index"
+}
+elf_symbol {
+  id: 0xdc24797a
+  name: "__dev_get_by_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd26df809
+  type_id: 0xffa35209
+  full_name: "__dev_get_by_name"
+}
+elf_symbol {
+  id: 0xf2144a48
+  name: "__dev_kfree_skb_any"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x28b967c1
+  type_id: 0x1028d82e
+  full_name: "__dev_kfree_skb_any"
+}
+elf_symbol {
+  id: 0x26a4107f
+  name: "__dev_kfree_skb_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xad728207
+  type_id: 0x1028d82e
+  full_name: "__dev_kfree_skb_irq"
+}
+elf_symbol {
+  id: 0x5ede8c55
+  name: "__dev_queue_xmit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf4b25665
+  type_id: 0x9c19a1e6
+  full_name: "__dev_queue_xmit"
+}
+elf_symbol {
+  id: 0x9a185646
+  name: "__device_reset"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4cc911be
+  type_id: 0x9ca3200b
+  full_name: "__device_reset"
+}
+elf_symbol {
+  id: 0x4f5366b7
+  name: "__devm_alloc_percpu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xafc0a60c
+  type_id: 0x55ed5751
+  full_name: "__devm_alloc_percpu"
+}
+elf_symbol {
+  id: 0x44f8d55b
+  name: "__devm_clk_hw_register_divider"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf6c1b124
+  type_id: 0xde292a8a
+  full_name: "__devm_clk_hw_register_divider"
+}
+elf_symbol {
+  id: 0xce934a47
+  name: "__devm_clk_hw_register_mux"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd7b16806
+  type_id: 0xde2977ad
+  full_name: "__devm_clk_hw_register_mux"
+}
+elf_symbol {
+  id: 0xa5e8c083
+  name: "__devm_drm_dev_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x264142db
+  type_id: 0x56f10608
+  full_name: "__devm_drm_dev_alloc"
+}
+elf_symbol {
+  id: 0x72280e0d
+  name: "__devm_iio_device_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7930d674
+  type_id: 0x9d763af9
+  full_name: "__devm_iio_device_register"
+}
+elf_symbol {
+  id: 0x5a669991
+  name: "__devm_iio_trigger_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x031d7382
+  type_id: 0x7aef59ca
+  full_name: "__devm_iio_trigger_alloc"
+}
+elf_symbol {
+  id: 0xa650eb31
+  name: "__devm_irq_alloc_descs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x15defecf
+  type_id: 0x9c9a309d
+  full_name: "__devm_irq_alloc_descs"
+}
+elf_symbol {
+  id: 0x4633b40f
+  name: "__devm_of_phy_provider_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x041c29ed
+  type_id: 0x7087761a
+  full_name: "__devm_of_phy_provider_register"
+}
+elf_symbol {
+  id: 0x53979c85
+  name: "__devm_regmap_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x78d75b61
+  type_id: 0x8ce75748
+  full_name: "__devm_regmap_init"
+}
+elf_symbol {
+  id: 0x0088cc73
+  name: "__devm_regmap_init_i2c"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1bab1211
+  type_id: 0x80dd5700
+  full_name: "__devm_regmap_init_i2c"
+}
+elf_symbol {
+  id: 0xbfc6b0c0
+  name: "__devm_regmap_init_mmio_clk"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6820f16e
+  type_id: 0x8cdd9b00
+  full_name: "__devm_regmap_init_mmio_clk"
+}
+elf_symbol {
+  id: 0x52589eba
+  name: "__devm_regmap_init_spi"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x78e7be89
+  type_id: 0x88f4e163
+  full_name: "__devm_regmap_init_spi"
+}
+elf_symbol {
+  id: 0x6f0a4a19
+  name: "__devm_regmap_init_spmi_ext"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1ca87cdd
+  type_id: 0x8b7d8884
+  full_name: "__devm_regmap_init_spmi_ext"
+}
+elf_symbol {
+  id: 0x8a84f79f
+  name: "__devm_release_region"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb733b8f7
+  type_id: 0x10c45080
+  full_name: "__devm_release_region"
+}
+elf_symbol {
+  id: 0x2ccf76fa
+  name: "__devm_request_region"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdd83e5af
+  type_id: 0xc1be98ae
+  full_name: "__devm_request_region"
+}
+elf_symbol {
+  id: 0xeb5b97d5
+  name: "__devm_reset_control_bulk_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x726366b0
+  type_id: 0x9c8307a8
+  full_name: "__devm_reset_control_bulk_get"
+}
+elf_symbol {
+  id: 0x7385cdb3
+  name: "__devm_reset_control_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb86f1eec
+  type_id: 0x0fe6e820
+  full_name: "__devm_reset_control_get"
+}
+elf_symbol {
+  id: 0x279e51a3
+  name: "__devm_rtc_register_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4a3b3586
+  type_id: 0x9fda9d1b
+  full_name: "__devm_rtc_register_device"
+}
+elf_symbol {
+  id: 0xe78c29b1
+  name: "__devm_spi_alloc_controller"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa6fde1ab
+  type_id: 0x5179d95b
+  full_name: "__devm_spi_alloc_controller"
+}
+elf_symbol {
+  id: 0x95c24824
+  name: "__devres_alloc_node"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb77e7bf8
+  type_id: 0x4058e56a
+  full_name: "__devres_alloc_node"
+}
+elf_symbol {
+  id: 0x0a6e3e89
+  name: "__dma_request_channel"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x399b54d1
+  type_id: 0x89ab6589
+  full_name: "__dma_request_channel"
+}
+elf_symbol {
+  id: 0x347a699c
+  name: "__do_once_done"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1b8d72d0
+  type_id: 0x14122079
+  full_name: "__do_once_done"
+}
+elf_symbol {
+  id: 0x27ce6aa1
+  name: "__do_once_start"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x18e60984
+  type_id: 0xface9510
+  full_name: "__do_once_start"
+}
+elf_symbol {
+  id: 0xbc44f404
+  name: "__drm_atomic_helper_bridge_duplicate_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2b4f3833
+  type_id: 0x1912c3c7
+  full_name: "__drm_atomic_helper_bridge_duplicate_state"
+}
+elf_symbol {
+  id: 0x2d22f5f4
+  name: "__drm_atomic_helper_bridge_reset"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc33fb3c4
+  type_id: 0x1912c3c7
+  full_name: "__drm_atomic_helper_bridge_reset"
+}
+elf_symbol {
+  id: 0x93a6e6d4
+  name: "__drm_atomic_helper_connector_destroy_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3866cd2b
+  type_id: 0x1bbbd739
+  full_name: "__drm_atomic_helper_connector_destroy_state"
+}
+elf_symbol {
+  id: 0xb9f5667b
+  name: "__drm_atomic_helper_connector_duplicate_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x54872645
+  type_id: 0x1c470062
+  full_name: "__drm_atomic_helper_connector_duplicate_state"
+}
+elf_symbol {
+  id: 0x04059f00
+  name: "__drm_atomic_helper_connector_reset"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x29764194
+  type_id: 0x1c470062
+  full_name: "__drm_atomic_helper_connector_reset"
+}
+elf_symbol {
+  id: 0x1c1ee265
+  name: "__drm_atomic_helper_crtc_destroy_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xab75bef4
+  type_id: 0x1e2ec9be
+  full_name: "__drm_atomic_helper_crtc_destroy_state"
+}
+elf_symbol {
+  id: 0x77466fa6
+  name: "__drm_atomic_helper_crtc_duplicate_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x64c68dc3
+  type_id: 0x1c25e791
+  full_name: "__drm_atomic_helper_crtc_duplicate_state"
+}
+elf_symbol {
+  id: 0x0b0f732e
+  name: "__drm_atomic_helper_crtc_reset"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3c18558f
+  type_id: 0x1c25e791
+  full_name: "__drm_atomic_helper_crtc_reset"
+}
+elf_symbol {
+  id: 0xec903c93
+  name: "__drm_atomic_helper_plane_destroy_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa1424581
+  type_id: 0x1b137798
+  full_name: "__drm_atomic_helper_plane_destroy_state"
+}
+elf_symbol {
+  id: 0x7149b35b
+  name: "__drm_atomic_helper_plane_duplicate_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x26fab918
+  type_id: 0x16ebcbfa
+  full_name: "__drm_atomic_helper_plane_duplicate_state"
+}
+elf_symbol {
+  id: 0x04e4be20
+  name: "__drm_atomic_helper_plane_reset"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x26903e6d
+  type_id: 0x16ebcbfa
+  full_name: "__drm_atomic_helper_plane_reset"
+}
+elf_symbol {
+  id: 0xd7326965
+  name: "__drm_atomic_helper_private_obj_duplicate_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa4f72029
+  type_id: 0x18ea2469
+  full_name: "__drm_atomic_helper_private_obj_duplicate_state"
+}
+elf_symbol {
+  id: 0xdd06006d
+  name: "__drm_atomic_state_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb9cad492
+  type_id: 0x14cd8502
+  full_name: "__drm_atomic_state_free"
+}
+elf_symbol {
+  id: 0x7669528e
+  name: "__drm_crtc_commit_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xae277372
+  type_id: 0x14cd8502
+  full_name: "__drm_crtc_commit_free"
+}
+elf_symbol {
+  id: 0x29276248
+  name: "__drm_debug"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x69353664
+  type_id: 0x33756485
+  full_name: "__drm_debug"
+}
+elf_symbol {
+  id: 0x961412ac
+  name: "__drm_dev_dbg"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x065ad6d0
+  type_id: 0x17d8b994
+  full_name: "__drm_dev_dbg"
+}
+elf_symbol {
+  id: 0x37454b71
+  name: "__drm_err"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb11ac7a7
+  type_id: 0x1d88d4f1
+  full_name: "__drm_err"
+}
+elf_symbol {
+  id: 0x8ed3b64a
+  name: "__drm_gem_destroy_shadow_plane_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1f8a8dcb
+  type_id: 0x125f41c1
+  full_name: "__drm_gem_destroy_shadow_plane_state"
+}
+elf_symbol {
+  id: 0x7bd5bd1e
+  name: "__drm_gem_duplicate_shadow_plane_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x45649c3b
+  type_id: 0x167f089f
+  full_name: "__drm_gem_duplicate_shadow_plane_state"
+}
+elf_symbol {
+  id: 0xe94c47da
+  name: "__drm_gem_reset_shadow_plane"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3e2ffa44
+  type_id: 0x167f089f
+  full_name: "__drm_gem_reset_shadow_plane"
+}
+elf_symbol {
+  id: 0xcc2f10f4
+  name: "__drm_mm_interval_first"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x25daad93
+  type_id: 0xead33344
+  full_name: "__drm_mm_interval_first"
+}
+elf_symbol {
+  id: 0x87954e04
+  name: "__drm_printfn_coredump"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xea00fe81
+  type_id: 0x1acfa1bf
+  full_name: "__drm_printfn_coredump"
+}
+elf_symbol {
+  id: 0xcd9d934f
+  name: "__drm_printfn_debug"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf824c7db
+  type_id: 0x1acfa1bf
+  full_name: "__drm_printfn_debug"
+}
+elf_symbol {
+  id: 0x6efa546f
+  name: "__drm_printfn_info"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe317082a
+  type_id: 0x1acfa1bf
+  full_name: "__drm_printfn_info"
+}
+elf_symbol {
+  id: 0x23f7ba3f
+  name: "__drm_printfn_seq_file"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfeb953b1
+  type_id: 0x1acfa1bf
+  full_name: "__drm_printfn_seq_file"
+}
+elf_symbol {
+  id: 0x75c34533
+  name: "__drm_puts_coredump"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3b0e5e9c
+  type_id: 0x1abe6e05
+  full_name: "__drm_puts_coredump"
+}
+elf_symbol {
+  id: 0x817e893f
+  name: "__drm_puts_seq_file"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x513072fe
+  type_id: 0x1abe6e05
+  full_name: "__drm_puts_seq_file"
+}
+elf_symbol {
+  id: 0x01d746af
+  name: "__drmm_add_action_or_reset"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc86e10c6
+  type_id: 0x92a00fb3
+  full_name: "__drmm_add_action_or_reset"
+}
+elf_symbol {
+  id: 0xca790885
+  name: "__drmm_crtc_alloc_with_planes"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7857d658
+  type_id: 0x5bba2c04
+  full_name: "__drmm_crtc_alloc_with_planes"
+}
+elf_symbol {
+  id: 0xf95afe4d
+  name: "__drmm_encoder_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xedba7fc9
+  type_id: 0x5bba999e
+  full_name: "__drmm_encoder_alloc"
+}
+elf_symbol {
+  id: 0xdb3875ea
+  name: "__drmm_simple_encoder_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe2b1b959
+  type_id: 0x5bbbda22
+  full_name: "__drmm_simple_encoder_alloc"
+}
+elf_symbol {
+  id: 0x347ca344
+  name: "__drmm_universal_plane_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x04dd67e4
+  type_id: 0x5bba39c6
+  full_name: "__drmm_universal_plane_alloc"
+}
+elf_symbol {
+  id: 0x76e3ff24
+  name: "__dynamic_dev_dbg"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc375500c
+  type_id: 0x17cc14a2
+  full_name: "__dynamic_dev_dbg"
+}
+elf_symbol {
+  id: 0x26602f9c
+  name: "__dynamic_netdev_dbg"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9eb377ed
+  type_id: 0x17fcea78
+  full_name: "__dynamic_netdev_dbg"
+}
+elf_symbol {
+  id: 0x80f1cf36
+  name: "__dynamic_pr_debug"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2cf56265
+  type_id: 0x17ee95ba
+  full_name: "__dynamic_pr_debug"
+}
+elf_symbol {
+  id: 0x3e32c80e
+  name: "__ethtool_get_link_ksettings"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xae545be3
+  type_id: 0x914dbe16
+  full_name: "__ethtool_get_link_ksettings"
+}
+elf_symbol {
+  id: 0x5298aa39
+  name: "__fdget"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc1d8cfaf
+  type_id: 0x20cd94dc
+  full_name: "__fdget"
+}
+elf_symbol {
+  id: 0x746a66fc
+  name: "__flush_workqueue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9166fc03
+  type_id: 0x14667c52
+  full_name: "__flush_workqueue"
+}
+elf_symbol {
+  id: 0x47a334c4
+  name: "__folio_lock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xad6ef96e
+  type_id: 0x18c46588
+  full_name: "__folio_lock"
+}
+elf_symbol {
+  id: 0xebf4b11f
+  name: "__folio_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2c38db08
+  type_id: 0x18c46588
+  full_name: "__folio_put"
+}
+elf_symbol {
+  id: 0x5b1ea047
+  name: "__free_pages"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcd5271aa
+  type_id: 0x102e93ac
+  full_name: "__free_pages"
+}
+elf_symbol {
+  id: 0x129eb7ed
+  name: "__genphy_config_aneg"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcdd0498d
+  type_id: 0x9068b671
+  full_name: "__genphy_config_aneg"
+}
+elf_symbol {
+  id: 0x63083569
+  name: "__get_free_pages"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6a5cb5ee
+  type_id: 0x0cd36f30
+  full_name: "__get_free_pages"
+}
+elf_symbol {
+  id: 0x46f82598
+  name: "__get_random_u32_below"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfba7a5f5
+  type_id: 0x77ba21a4
+  full_name: "__get_random_u32_below"
+}
+elf_symbol {
+  id: 0x7babe2df
+  name: "__get_task_comm"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9d01eb28
+  type_id: 0x3cc96bbe
+  full_name: "__get_task_comm"
+}
+elf_symbol {
+  id: 0x73476ba5
+  name: "__get_task_ioprio"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5f818d7b
+  type_id: 0x9ac6895a
+  full_name: "__get_task_ioprio"
+}
+elf_symbol {
+  id: 0xea677002
+  name: "__getblk_gfp"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x261d55ab
+  type_id: 0x65d68df5
+  full_name: "__getblk_gfp"
+}
+elf_symbol {
+  id: 0x3a5255b8
+  name: "__hci_cmd_send"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x33702bd1
+  type_id: 0x988786ac
+  full_name: "__hci_cmd_send"
+}
+elf_symbol {
+  id: 0xa3a6c885
+  name: "__hci_cmd_sync"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb54a31a9
+  type_id: 0x6d996ee0
+  full_name: "__hci_cmd_sync"
+}
+elf_symbol {
+  id: 0x7efd1cdd
+  name: "__hci_cmd_sync_ev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xda29db0c
+  type_id: 0x6d9955d1
+  full_name: "__hci_cmd_sync_ev"
+}
+elf_symbol {
+  id: 0x010ff5f2
+  name: "__hci_cmd_sync_sk"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2c2ce580
+  type_id: 0x6d9955d6
+  full_name: "__hci_cmd_sync_sk"
+}
+elf_symbol {
+  id: 0xe3bb3be3
+  name: "__hci_cmd_sync_status"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x06baed2b
+  type_id: 0x9887b4ee
+  full_name: "__hci_cmd_sync_status"
+}
+elf_symbol {
+  id: 0xdf924e64
+  name: "__hci_cmd_sync_status_sk"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb243b785
+  type_id: 0x98878fd8
+  full_name: "__hci_cmd_sync_status_sk"
+}
+elf_symbol {
+  id: 0xf245d4a3
+  name: "__hrtimer_get_remaining"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xed269ad2
+  type_id: 0x92346a47
+  full_name: "__hrtimer_get_remaining"
+}
+elf_symbol {
+  id: 0x74b9825e
+  name: "__hvc_resize"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6920c557
+  type_id: 0x1eedbe86
+  full_name: "__hvc_resize"
+}
+elf_symbol {
+  id: 0xd672e937
+  name: "__hw_addr_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf28cf0ae
+  type_id: 0x16c9c8d5
+  full_name: "__hw_addr_init"
+}
+elf_symbol {
+  id: 0xa5f1f300
+  name: "__hw_addr_sync"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x91f68ea1
+  type_id: 0x9badabc9
+  full_name: "__hw_addr_sync"
+}
+elf_symbol {
+  id: 0x7874d435
+  name: "__hw_addr_unsync"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb71ed69f
+  type_id: 0x16b51975
+  full_name: "__hw_addr_unsync"
+}
+elf_symbol {
+  id: 0xc1db2428
+  name: "__hwspin_lock_timeout"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaf73026c
+  type_id: 0x9e215925
+  full_name: "__hwspin_lock_timeout"
+}
+elf_symbol {
+  id: 0x09a111a4
+  name: "__hwspin_unlock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7a43a485
+  type_id: 0x13ab3f14
+  full_name: "__hwspin_unlock"
+}
+elf_symbol {
+  id: 0x9ff710d8
+  name: "__i2c_smbus_xfer"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe15174dd
+  type_id: 0x8a03b82b
+  full_name: "__i2c_smbus_xfer"
+}
+elf_symbol {
+  id: 0xee9e2392
+  name: "__i2c_transfer"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x16451901
+  type_id: 0x9480cdfa
+  full_name: "__i2c_transfer"
+}
+elf_symbol {
+  id: 0xf9e10bbf
+  name: "__iio_device_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x62e84a0a
+  type_id: 0x9b8e9bfe
+  full_name: "__iio_device_register"
+}
+elf_symbol {
+  id: 0x335e7054
+  name: "__iio_trigger_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x89a4b717
+  type_id: 0x7aef59ca
+  full_name: "__iio_trigger_alloc"
+}
+elf_symbol {
+  id: 0x64c84a6a
+  name: "__inet6_lookup_established"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7f82e930
+  type_id: 0x6f1e53de
+  full_name: "__inet6_lookup_established"
+}
+elf_symbol {
+  id: 0x56e8b9af
+  name: "__inet_lookup_established"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x63c135e0
+  type_id: 0x6f2829be
+  full_name: "__inet_lookup_established"
+}
+elf_symbol {
+  id: 0x88943e29
+  name: "__init_rwsem"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf5a94b83
+  type_id: 0x104952fa
+  full_name: "__init_rwsem"
+}
+elf_symbol {
+  id: 0x1060f5aa
+  name: "__init_swait_queue_head"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x608741b5
+  type_id: 0x150716f7
+  full_name: "__init_swait_queue_head"
+}
+elf_symbol {
+  id: 0x66da9aca
+  name: "__init_waitqueue_head"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd9a5ea54
+  type_id: 0x15acd3b0
+  full_name: "__init_waitqueue_head"
+}
+elf_symbol {
+  id: 0xe97034af
+  name: "__ioread32_copy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3801776b
+  type_id: 0x166e79d2
+  full_name: "__ioread32_copy"
+}
+elf_symbol {
+  id: 0xdb78f816
+  name: "__iowrite32_copy"
+  is_defined: true
+  symbol_type: FUNCTION
+  binding: WEAK
+  crc: 0x2dba276a
+  type_id: 0x166e79d2
+  full_name: "__iowrite32_copy"
+}
+elf_symbol {
+  id: 0x6db91312
+  name: "__ip_dev_find"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9223cda1
+  type_id: 0xfcc995bd
+  full_name: "__ip_dev_find"
+}
+elf_symbol {
+  id: 0x9d19ea38
+  name: "__ip_select_ident"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x51a34ed2
+  type_id: 0x13a0751a
+  full_name: "__ip_select_ident"
+}
+elf_symbol {
+  id: 0xd3165b8d
+  name: "__ipv6_addr_type"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0d542439
+  type_id: 0x9351641d
+  full_name: "__ipv6_addr_type"
+}
+elf_symbol {
+  id: 0x1de2050f
+  name: "__irq_alloc_descs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x95238b2a
+  type_id: 0x854e3dbc
+  full_name: "__irq_alloc_descs"
+}
+elf_symbol {
+  id: 0x1c57a05b
+  name: "__irq_alloc_domain_generic_chips"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6dc58bd2
+  type_id: 0x9a2dc3fa
+  full_name: "__irq_alloc_domain_generic_chips"
+}
+elf_symbol {
+  id: 0xdf2d2827
+  name: "__irq_apply_affinity_hint"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x51786ad8
+  type_id: 0x8c3ede77
+  full_name: "__irq_apply_affinity_hint"
+}
+elf_symbol {
+  id: 0x70f1b87e
+  name: "__irq_domain_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x75aecb8b
+  type_id: 0x5f133b10
+  full_name: "__irq_domain_add"
+}
+elf_symbol {
+  id: 0xe064ac65
+  name: "__irq_resolve_mapping"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcb7ab12a
+  type_id: 0xc252de0a
+  full_name: "__irq_resolve_mapping"
+}
+elf_symbol {
+  id: 0xafc169af
+  name: "__irq_set_handler"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0958bbe4
+  type_id: 0x032333c6
+  full_name: "__irq_set_handler"
+}
+elf_symbol {
+  id: 0xcaf40f72
+  name: "__kfifo_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x139f2189
+  type_id: 0x91781941
+  full_name: "__kfifo_alloc"
+}
+elf_symbol {
+  id: 0x2c5baba3
+  name: "__kfifo_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdb760f52
+  type_id: 0x1d4875a4
+  full_name: "__kfifo_free"
+}
+elf_symbol {
+  id: 0x1ddc201b
+  name: "__kfifo_from_user"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xee08c0fb
+  type_id: 0x90b809d3
+  full_name: "__kfifo_from_user"
+}
+elf_symbol {
+  id: 0x53470eba
+  name: "__kfifo_from_user_r"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x54afbce6
+  type_id: 0x90b834de
+  full_name: "__kfifo_from_user_r"
+}
+elf_symbol {
+  id: 0x15a8f184
+  name: "__kfifo_in"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf23fcb99
+  type_id: 0xc3fe47c2
+  full_name: "__kfifo_in"
+}
+elf_symbol {
+  id: 0x2557404e
+  name: "__kfifo_in_r"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3955fcf6
+  type_id: 0xc3fd9717
+  full_name: "__kfifo_in_r"
+}
+elf_symbol {
+  id: 0xb896e3f6
+  name: "__kfifo_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbd462b55
+  type_id: 0x90208300
+  full_name: "__kfifo_init"
+}
+elf_symbol {
+  id: 0x2b891310
+  name: "__kfifo_len_r"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7846af3e
+  type_id: 0xc0db8f6d
+  full_name: "__kfifo_len_r"
+}
+elf_symbol {
+  id: 0x61c1ff20
+  name: "__kfifo_out"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x13d0adf7
+  type_id: 0xc378ce01
+  full_name: "__kfifo_out"
+}
+elf_symbol {
+  id: 0x4eed247b
+  name: "__kfifo_out_peek"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x281823c5
+  type_id: 0xc378ce01
+  full_name: "__kfifo_out_peek"
+}
+elf_symbol {
+  id: 0xaf6dd949
+  name: "__kfifo_out_r"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x33fcf44a
+  type_id: 0xc37b1ed4
+  full_name: "__kfifo_out_r"
+}
+elf_symbol {
+  id: 0x724a2dbc
+  name: "__kfifo_to_user"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x72aa63ef
+  type_id: 0x903e8010
+  full_name: "__kfifo_to_user"
+}
+elf_symbol {
+  id: 0x6f655086
+  name: "__kfifo_to_user_r"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x93f2f2c5
+  type_id: 0x903ebd1d
+  full_name: "__kfifo_to_user_r"
+}
+elf_symbol {
+  id: 0x4efc82d3
+  name: "__kfree_skb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7bb0184e
+  type_id: 0x11cb8bd5
+  full_name: "__kfree_skb"
+}
+elf_symbol {
+  id: 0xe30985db
+  name: "__kmalloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeb233a45
+  type_id: 0x685d7099
+  full_name: "__kmalloc"
+}
+elf_symbol {
+  id: 0x03aa8fb1
+  name: "__kmalloc_node"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1ba59527
+  type_id: 0x6844b8ad
+  full_name: "__kmalloc_node"
+}
+elf_symbol {
+  id: 0x87f1cde5
+  name: "__kmalloc_node_track_caller"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4e547048
+  type_id: 0x68447578
+  full_name: "__kmalloc_node_track_caller"
+}
+elf_symbol {
+  id: 0x2783e7a2
+  name: "__kthread_init_worker"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6f02eb42
+  type_id: 0x1d45187b
+  full_name: "__kthread_init_worker"
+}
+elf_symbol {
+  id: 0xffbb06ae
+  name: "__list_add_valid"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x68f31cbd
+  type_id: 0xf1cac515
+  full_name: "__list_add_valid"
+}
+elf_symbol {
+  id: 0xb3ed4cf9
+  name: "__list_del_entry_valid"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe1537255
+  type_id: 0xf13cd57c
+  full_name: "__list_del_entry_valid"
+}
+elf_symbol {
+  id: 0x9f86f628
+  name: "__local_bh_enable_ip"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3c3fce39
+  type_id: 0x1d531d2a
+  full_name: "__local_bh_enable_ip"
+}
+elf_symbol {
+  id: 0x22bd6642
+  name: "__lock_buffer"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb2fa4e23
+  type_id: 0x16c5a8cd
+  full_name: "__lock_buffer"
+}
+elf_symbol {
+  id: 0x040ec563
+  name: "__mdiobus_read"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa3d576c4
+  type_id: 0x915b6659
+  full_name: "__mdiobus_read"
+}
+elf_symbol {
+  id: 0xa5f70021
+  name: "__mdiobus_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa19883f4
+  type_id: 0x90d9386e
+  full_name: "__mdiobus_register"
+}
+elf_symbol {
+  id: 0xc8acd38c
+  name: "__mdiobus_write"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3d72b5fc
+  type_id: 0x9159236f
+  full_name: "__mdiobus_write"
+}
+elf_symbol {
+  id: 0x1dfbf9ac
+  name: "__media_device_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd1732581
+  type_id: 0x98249b1d
+  full_name: "__media_device_register"
+}
+elf_symbol {
+  id: 0x91810af1
+  name: "__media_entity_next_link"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdf2b8208
+  type_id: 0xddfd6c01
+  full_name: "__media_entity_next_link"
+}
+elf_symbol {
+  id: 0x47a4997d
+  name: "__memcat_p"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd64ed259
+  type_id: 0x4409073d
+  full_name: "__memcat_p"
+}
+elf_symbol {
+  id: 0x92f8c9de
+  name: "__memcpy_fromio"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5d112304
+  type_id: 0x165dda45
+  full_name: "__memcpy_fromio"
+}
+elf_symbol {
+  id: 0x3ac6d939
+  name: "__memcpy_toio"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf77555cd
+  type_id: 0x1a869c16
+  full_name: "__memcpy_toio"
+}
+elf_symbol {
+  id: 0x07a9cbd5
+  name: "__memset_io"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x18b48e28
+  type_id: 0x1bfe630d
+  full_name: "__memset_io"
+}
+elf_symbol {
+  id: 0xb5a3b911
+  name: "__migrate_task"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaaa6dd7d
+  type_id: 0x81bed9bb
+  full_name: "__migrate_task"
+}
+elf_symbol {
+  id: 0x479aa5f7
+  name: "__mmap_lock_do_trace_acquire_returned"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5319be0e
+  type_id: 0x17fb42d3
+  full_name: "__mmap_lock_do_trace_acquire_returned"
+}
+elf_symbol {
+  id: 0x96a6352b
+  name: "__mmap_lock_do_trace_released"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb996c292
+  type_id: 0x17e01d04
+  full_name: "__mmap_lock_do_trace_released"
+}
+elf_symbol {
+  id: 0x49293097
+  name: "__mmap_lock_do_trace_start_locking"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x56ac7b18
+  type_id: 0x17e01d04
+  full_name: "__mmap_lock_do_trace_start_locking"
+}
+elf_symbol {
+  id: 0x0ba13d85
+  name: "__mmc_claim_host"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6449e8a7
+  type_id: 0x90247076
+  full_name: "__mmc_claim_host"
+}
+elf_symbol {
+  id: 0x479db511
+  name: "__mmc_poll_for_busy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x794b526a
+  type_id: 0x91017265
+  full_name: "__mmc_poll_for_busy"
+}
+elf_symbol {
+  id: 0x603dcc7d
+  name: "__mmdrop"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x428651f5
+  type_id: 0x1655e07b
+  full_name: "__mmdrop"
+}
+elf_symbol {
+  id: 0x89d01efd
+  name: "__module_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x82f3eefb
+  type_id: 0x1251a683
+  full_name: "__module_get"
+}
+elf_symbol {
+  id: 0xf680e61c
+  name: "__module_put_and_kthread_exit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9130ce6c
+  type_id: 0x11a19ef5
+  full_name: "__module_put_and_kthread_exit"
+}
+elf_symbol {
+  id: 0x4cfc63ca
+  name: "__msecs_to_jiffies"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7f02188f
+  type_id: 0x20cd94dc
+  full_name: "__msecs_to_jiffies"
+}
+elf_symbol {
+  id: 0x4b5b4262
+  name: "__mutex_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa571f6b0
+  type_id: 0x18befa18
+  full_name: "__mutex_init"
+}
+elf_symbol {
+  id: 0xded7271b
+  name: "__napi_alloc_skb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc5fa677d
+  type_id: 0x6fb420ce
+  full_name: "__napi_alloc_skb"
+}
+elf_symbol {
+  id: 0x41a72ad5
+  name: "__napi_schedule"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf5221e2b
+  type_id: 0x16983453
+  full_name: "__napi_schedule"
+}
+elf_symbol {
+  id: 0x6c942f5c
+  name: "__napi_schedule_irqoff"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7096c85f
+  type_id: 0x16983453
+  full_name: "__napi_schedule_irqoff"
+}
+elf_symbol {
+  id: 0xe29f2fd9
+  name: "__ndelay"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdf8c695a
+  type_id: 0x1c4508b2
+  full_name: "__ndelay"
+}
+elf_symbol {
+  id: 0x8b8ae791
+  name: "__ndisc_fill_addr_option"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x07cb9d0f
+  type_id: 0x1058ca17
+  full_name: "__ndisc_fill_addr_option"
+}
+elf_symbol {
+  id: 0x9d90da6e
+  name: "__netdev_alloc_frag_align"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x91a488ac
+  type_id: 0x46e1fde6
+  full_name: "__netdev_alloc_frag_align"
+}
+elf_symbol {
+  id: 0x6793e03f
+  name: "__netdev_alloc_skb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1ba22d8b
+  type_id: 0x651dcdfb
+  full_name: "__netdev_alloc_skb"
+}
+elf_symbol {
+  id: 0x17112d4d
+  name: "__netif_napi_del"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf7cce469
+  type_id: 0x16983453
+  full_name: "__netif_napi_del"
+}
+elf_symbol {
+  id: 0x6337b091
+  name: "__netif_set_xps_queue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x74943dbf
+  type_id: 0x91f45efa
+  full_name: "__netif_set_xps_queue"
+}
+elf_symbol {
+  id: 0x4fc5d8fb
+  name: "__netlink_dump_start"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x53d7f503
+  type_id: 0x9acae612
+  full_name: "__netlink_dump_start"
+}
+elf_symbol {
+  id: 0x45dc2e90
+  name: "__netlink_kernel_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9f3fe1fe
+  type_id: 0x6ef28827
+  full_name: "__netlink_kernel_create"
+}
+elf_symbol {
+  id: 0xa75780cd
+  name: "__nfc_alloc_vendor_cmd_reply_skb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x796b3c91
+  type_id: 0x6b55cd91
+  full_name: "__nfc_alloc_vendor_cmd_reply_skb"
+}
+elf_symbol {
+  id: 0x6a69f7a3
+  name: "__nla_parse"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x581e2394
+  type_id: 0x9c8de977
+  full_name: "__nla_parse"
+}
+elf_symbol {
+  id: 0x3a48fbc1
+  name: "__nla_validate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x933dc050
+  type_id: 0x91f0a288
+  full_name: "__nla_validate"
+}
+elf_symbol {
+  id: 0x690bf184
+  name: "__nlmsg_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x899805b0
+  type_id: 0x16d62662
+  full_name: "__nlmsg_put"
+}
+elf_symbol {
+  id: 0x420b07ce
+  name: "__num_online_cpus"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xc60d0620
+  type_id: 0x74d29cf1
+  full_name: "__num_online_cpus"
+}
+elf_symbol {
+  id: 0xdc28d30d
+  name: "__of_get_address"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x42ec81ae
+  type_id: 0x2d73e0a2
+  full_name: "__of_get_address"
+}
+elf_symbol {
+  id: 0x38c74e33
+  name: "__of_mdiobus_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa014553c
+  type_id: 0x9026a2e6
+  full_name: "__of_mdiobus_register"
+}
+elf_symbol {
+  id: 0xcbeef20f
+  name: "__of_parse_phandle_with_args"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x26f40d9d
+  type_id: 0x91fd83bc
+  full_name: "__of_parse_phandle_with_args"
+}
+elf_symbol {
+  id: 0x10e977be
+  name: "__of_reset_control_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x94d87e92
+  type_id: 0x026c1696
+  full_name: "__of_reset_control_get"
+}
+elf_symbol {
+  id: 0x4d1e5aba
+  name: "__page_file_index"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x39ba4984
+  type_id: 0x300c1af4
+  full_name: "__page_file_index"
+}
+elf_symbol {
+  id: 0x057c7766
+  name: "__page_frag_cache_drain"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4bbba0b1
+  type_id: 0x102e93ac
+  full_name: "__page_frag_cache_drain"
+}
+elf_symbol {
+  id: 0x8d43f7e0
+  name: "__page_mapcount"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5c6cd487
+  type_id: 0x9c203488
+  full_name: "__page_mapcount"
+}
+elf_symbol {
+  id: 0xe595f8f9
+  name: "__page_pinner_put_page"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbf444ebf
+  type_id: 0x11388634
+  full_name: "__page_pinner_put_page"
+}
+elf_symbol {
+  id: 0xdc9a73c7
+  name: "__pagevec_release"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8030d003
+  type_id: 0x11b81220
+  full_name: "__pagevec_release"
+}
+elf_symbol {
+  id: 0xafa216a9
+  name: "__pci_register_driver"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2ede99c1
+  type_id: 0x97374fe9
+  full_name: "__pci_register_driver"
+}
+elf_symbol {
+  id: 0xdb2427ba
+  name: "__per_cpu_offset"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x280f9f14
+  type_id: 0x5811d1d0
+  full_name: "__per_cpu_offset"
+}
+elf_symbol {
+  id: 0xf7e48028
+  name: "__percpu_down_read"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9d1c6de1
+  type_id: 0xfb7cfa37
+  full_name: "__percpu_down_read"
+}
+elf_symbol {
+  id: 0x34126b3d
+  name: "__percpu_init_rwsem"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc94eb71f
+  type_id: 0x99132caa
+  full_name: "__percpu_init_rwsem"
+}
+elf_symbol {
+  id: 0x28bdd181
+  name: "__phy_modify"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x91f2c938
+  type_id: 0x92df7dfb
+  full_name: "__phy_modify"
+}
+elf_symbol {
+  id: 0xd9bec400
+  name: "__pkvm_load_el2_module"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x474d0405
+  type_id: 0x9f5021bd
+  full_name: "__pkvm_load_el2_module"
+}
+elf_symbol {
+  id: 0xb35f76db
+  name: "__pkvm_register_el2_call"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb5f464ad
+  type_id: 0x915dba0e
+  full_name: "__pkvm_register_el2_call"
+}
+elf_symbol {
+  id: 0x430bd907
+  name: "__platform_driver_probe"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa1ec90c9
+  type_id: 0x9bf6c118
+  full_name: "__platform_driver_probe"
+}
+elf_symbol {
+  id: 0x535df772
+  name: "__platform_driver_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x894c433a
+  type_id: 0x9b609a6d
+  full_name: "__platform_driver_register"
+}
+elf_symbol {
+  id: 0xafd4e12a
+  name: "__platform_register_drivers"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0547fe8f
+  type_id: 0x939de190
+  full_name: "__platform_register_drivers"
+}
+elf_symbol {
+  id: 0x6393f50b
+  name: "__pm_relax"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1aa68695
+  type_id: 0x10229585
+  full_name: "__pm_relax"
+}
+elf_symbol {
+  id: 0xc1f3d46d
+  name: "__pm_runtime_disable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x05e59274
+  type_id: 0x11bb92b7
+  full_name: "__pm_runtime_disable"
+}
+elf_symbol {
+  id: 0xe3f918cc
+  name: "__pm_runtime_idle"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x14cee5de
+  type_id: 0x9c8a5e38
+  full_name: "__pm_runtime_idle"
+}
+elf_symbol {
+  id: 0xfdfe6acd
+  name: "__pm_runtime_resume"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xabe820ab
+  type_id: 0x9c8a5e38
+  full_name: "__pm_runtime_resume"
+}
+elf_symbol {
+  id: 0xb4013554
+  name: "__pm_runtime_set_status"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x22808c6a
+  type_id: 0x9c00c8ec
+  full_name: "__pm_runtime_set_status"
+}
+elf_symbol {
+  id: 0x3a80078d
+  name: "__pm_runtime_suspend"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7c91d8d1
+  type_id: 0x9c8a5e38
+  full_name: "__pm_runtime_suspend"
+}
+elf_symbol {
+  id: 0x4e3336f3
+  name: "__pm_runtime_use_autosuspend"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x446c5527
+  type_id: 0x11bb92b7
+  full_name: "__pm_runtime_use_autosuspend"
+}
+elf_symbol {
+  id: 0x085ad43c
+  name: "__pm_stay_awake"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe186a5ce
+  type_id: 0x10229585
+  full_name: "__pm_stay_awake"
+}
+elf_symbol {
+  id: 0xc37b6db0
+  name: "__printk_ratelimit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6128b5fc
+  type_id: 0x9204ce69
+  full_name: "__printk_ratelimit"
+}
+elf_symbol {
+  id: 0xa676022e
+  name: "__pskb_copy_fclone"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xccd67e8e
+  type_id: 0x686cbc61
+  full_name: "__pskb_copy_fclone"
+}
+elf_symbol {
+  id: 0x577da3d6
+  name: "__pskb_pull_tail"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x263e8160
+  type_id: 0x5659e8fb
+  full_name: "__pskb_pull_tail"
+}
+elf_symbol {
+  id: 0xf00cbe99
+  name: "__put_cred"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xea9a45e2
+  type_id: 0x1fcd1693
+  full_name: "__put_cred"
+}
+elf_symbol {
+  id: 0x36fb0a8e
+  name: "__put_net"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x64b548b6
+  type_id: 0x13b0ccb3
+  full_name: "__put_net"
+}
+elf_symbol {
+  id: 0x45993ba3
+  name: "__put_task_struct"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x950c847f
+  type_id: 0x17de3be6
+  full_name: "__put_task_struct"
+}
+elf_symbol {
+  id: 0xf29639bc
+  name: "__rb_erase_color"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x551bd071
+  type_id: 0x11de62ce
+  full_name: "__rb_erase_color"
+}
+elf_symbol {
+  id: 0x431cc4ee
+  name: "__rb_insert_augmented"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x120b336a
+  type_id: 0x11de62ce
+  full_name: "__rb_insert_augmented"
+}
+elf_symbol {
+  id: 0x56eb7c27
+  name: "__rcu_read_lock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8d522714
+  type_id: 0x10985193
+  full_name: "__rcu_read_lock"
+}
+elf_symbol {
+  id: 0x72b8a9cf
+  name: "__rcu_read_unlock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2469810f
+  type_id: 0x10985193
+  full_name: "__rcu_read_unlock"
+}
+elf_symbol {
+  id: 0x41303eac
+  name: "__refrigerator"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x04482cdb
+  type_id: 0xe5fb8cf9
+  full_name: "__refrigerator"
+}
+elf_symbol {
+  id: 0x73fde903
+  name: "__register_blkdev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x720a27a7
+  type_id: 0x8c19f9c2
+  full_name: "__register_blkdev"
+}
+elf_symbol {
+  id: 0x55970cc0
+  name: "__register_chrdev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbd842ba8
+  type_id: 0x8de63b97
+  full_name: "__register_chrdev"
+}
+elf_symbol {
+  id: 0x914d1355
+  name: "__register_rpmsg_driver"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x22984856
+  type_id: 0x95ef0c06
+  full_name: "__register_rpmsg_driver"
+}
+elf_symbol {
+  id: 0x3f068dc8
+  name: "__regmap_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfcb220b8
+  type_id: 0x8ce75748
+  full_name: "__regmap_init"
+}
+elf_symbol {
+  id: 0x2a48bf7d
+  name: "__regmap_init_mmio_clk"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x15a4ca44
+  type_id: 0x8cdd9b00
+  full_name: "__regmap_init_mmio_clk"
+}
+elf_symbol {
+  id: 0xe3a7489a
+  name: "__release_region"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1848221d
+  type_id: 0x1c3ba516
+  full_name: "__release_region"
+}
+elf_symbol {
+  id: 0xf7c2da07
+  name: "__request_module"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa24f23d8
+  type_id: 0x860e3c84
+  full_name: "__request_module"
+}
+elf_symbol {
+  id: 0x1141e9bb
+  name: "__request_percpu_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf8b9b956
+  type_id: 0x8f8935e1
+  full_name: "__request_percpu_irq"
+}
+elf_symbol {
+  id: 0xf263b97f
+  name: "__request_region"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0ca39ba0
+  type_id: 0xcd418336
+  full_name: "__request_region"
+}
+elf_symbol {
+  id: 0xa2452368
+  name: "__reset_control_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x151b3aa8
+  type_id: 0x0fe6e820
+  full_name: "__reset_control_get"
+}
+elf_symbol {
+  id: 0x2b453adc
+  name: "__rht_bucket_nested"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd0d156e9
+  type_id: 0x96bbe934
+  full_name: "__rht_bucket_nested"
+}
+elf_symbol {
+  id: 0xd5276fa4
+  name: "__root_device_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd89e0766
+  type_id: 0xa2878209
+  full_name: "__root_device_register"
+}
+elf_symbol {
+  id: 0x98379aaf
+  name: "__rt_mutex_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc5803a97
+  type_id: 0x1dbb54c5
+  full_name: "__rt_mutex_init"
+}
+elf_symbol {
+  id: 0xe68925b8
+  name: "__scsi_add_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x758f7e70
+  type_id: 0xa355db3b
+  full_name: "__scsi_add_device"
+}
+elf_symbol {
+  id: 0x6e3bb1cf
+  name: "__scsi_device_lookup_by_target"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5c27beb3
+  type_id: 0xa017504e
+  full_name: "__scsi_device_lookup_by_target"
+}
+elf_symbol {
+  id: 0x0166be18
+  name: "__scsi_iterate_devices"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd556190c
+  type_id: 0xa1595676
+  full_name: "__scsi_iterate_devices"
+}
+elf_symbol {
+  id: 0xc5953732
+  name: "__scsi_print_sense"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaac892f6
+  type_id: 0x1df45ed2
+  full_name: "__scsi_print_sense"
+}
+elf_symbol {
+  id: 0x1d4d84d0
+  name: "__sdhci_add_host"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4c3c5d85
+  type_id: 0x93dfa305
+  full_name: "__sdhci_add_host"
+}
+elf_symbol {
+  id: 0x07b6ac89
+  name: "__sdhci_set_timeout"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdc029933
+  type_id: 0x1e7db2dc
+  full_name: "__sdhci_set_timeout"
+}
+elf_symbol {
+  id: 0x44371196
+  name: "__seq_open_private"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2de1ebc4
+  type_id: 0x5048b42f
+  full_name: "__seq_open_private"
+}
+elf_symbol {
+  id: 0x55017671
+  name: "__serdev_device_driver_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x49c683c2
+  type_id: 0x99fe57fe
+  full_name: "__serdev_device_driver_register"
+}
+elf_symbol {
+  id: 0x257c4bb9
+  name: "__serio_register_driver"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbec88e32
+  type_id: 0x9fef9fb7
+  full_name: "__serio_register_driver"
+}
+elf_symbol {
+  id: 0x8aca43ec
+  name: "__serio_register_port"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3a34f7af
+  type_id: 0x1009f18b
+  full_name: "__serio_register_port"
+}
+elf_symbol {
+  id: 0x29a11d8a
+  name: "__sg_page_iter_dma_next"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcc445ceb
+  type_id: 0xf6c0819f
+  full_name: "__sg_page_iter_dma_next"
+}
+elf_symbol {
+  id: 0x208b66fa
+  name: "__sg_page_iter_next"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7c9ca58f
+  type_id: 0xfe72068b
+  full_name: "__sg_page_iter_next"
+}
+elf_symbol {
+  id: 0x4a440f54
+  name: "__sg_page_iter_start"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xccd4c999
+  type_id: 0x10189f78
+  full_name: "__sg_page_iter_start"
+}
+elf_symbol {
+  id: 0x62009211
+  name: "__sk_receive_skb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6048e9c0
+  type_id: 0x9adc176e
+  full_name: "__sk_receive_skb"
+}
+elf_symbol {
+  id: 0x6a35982c
+  name: "__skb_checksum_complete"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc7a0d4d4
+  type_id: 0x1bdfb83f
+  full_name: "__skb_checksum_complete"
+}
+elf_symbol {
+  id: 0xe0752d30
+  name: "__skb_ext_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x42e61877
+  type_id: 0x1df07da9
+  full_name: "__skb_ext_put"
+}
+elf_symbol {
+  id: 0x5609670c
+  name: "__skb_flow_dissect"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x23dc8f6e
+  type_id: 0xf1510018
+  full_name: "__skb_flow_dissect"
+}
+elf_symbol {
+  id: 0xe614bbc1
+  name: "__skb_get_hash"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1ddd1883
+  type_id: 0x11cb8bd5
+  full_name: "__skb_get_hash"
+}
+elf_symbol {
+  id: 0x07c5a76f
+  name: "__skb_gso_segment"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x69420fe8
+  type_id: 0x6940ae3e
+  full_name: "__skb_gso_segment"
+}
+elf_symbol {
+  id: 0x55574d11
+  name: "__skb_pad"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x036615f2
+  type_id: 0x9d54e5f2
+  full_name: "__skb_pad"
+}
+elf_symbol {
+  id: 0x7809a362
+  name: "__sock_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7265e465
+  type_id: 0x9f2cabca
+  full_name: "__sock_create"
+}
+elf_symbol {
+  id: 0x91762fff
+  name: "__sock_queue_rcv_skb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9d9799e5
+  type_id: 0x9ac4d210
+  full_name: "__sock_queue_rcv_skb"
+}
+elf_symbol {
+  id: 0x7a4705f8
+  name: "__sock_recv_cmsgs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd32b6582
+  type_id: 0x1bdaff5e
+  full_name: "__sock_recv_cmsgs"
+}
+elf_symbol {
+  id: 0x0655a230
+  name: "__sock_recv_timestamp"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcdc149a2
+  type_id: 0x1bdaff5e
+  full_name: "__sock_recv_timestamp"
+}
+elf_symbol {
+  id: 0x9ec67057
+  name: "__sock_recv_wifi_status"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd80f3e2d
+  type_id: 0x1bdaff5e
+  full_name: "__sock_recv_wifi_status"
+}
+elf_symbol {
+  id: 0x768e674d
+  name: "__sock_tx_timestamp"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x437a0d6d
+  type_id: 0x2a0126cf
+  full_name: "__sock_tx_timestamp"
+}
+elf_symbol {
+  id: 0x16832084
+  name: "__spi_alloc_controller"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x139ba157
+  type_id: 0x5179d95b
+  full_name: "__spi_alloc_controller"
+}
+elf_symbol {
+  id: 0xd216a3ee
+  name: "__spi_register_driver"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9a9c1906
+  type_id: 0x9f83d2d0
+  full_name: "__spi_register_driver"
+}
+elf_symbol {
+  id: 0xf7f0de2c
+  name: "__splice_from_pipe"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9af16740
+  type_id: 0x16c2ead1
+  full_name: "__splice_from_pipe"
+}
+elf_symbol {
+  id: 0x939642a4
+  name: "__spmi_driver_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x36f7ad6c
+  type_id: 0x97f5d38a
+  full_name: "__spmi_driver_register"
+}
+elf_symbol {
+  id: 0x0c4a872a
+  name: "__srcu_read_lock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5f0dddd4
+  type_id: 0x956202e7
+  full_name: "__srcu_read_lock"
+}
+elf_symbol {
+  id: 0xc4cf0ef3
+  name: "__srcu_read_unlock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x492dabdc
+  type_id: 0x19e63317
+  full_name: "__srcu_read_unlock"
+}
+elf_symbol {
+  id: 0x616a1571
+  name: "__stack_chk_fail"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc2c193d2
+  type_id: 0x10985193
+  full_name: "__stack_chk_fail"
+}
+elf_symbol {
+  id: 0x4b2c6a92
+  name: "__sw_hweight16"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x57674fd7
+  type_id: 0xdfba2774
+  full_name: "__sw_hweight16"
+}
+elf_symbol {
+  id: 0x7d0d7b3f
+  name: "__sw_hweight32"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x74c134b9
+  type_id: 0xdfba2774
+  full_name: "__sw_hweight32"
+}
+elf_symbol {
+  id: 0xef62271a
+  name: "__sw_hweight64"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9f46ced8
+  type_id: 0x0ad050bd
+  full_name: "__sw_hweight64"
+}
+elf_symbol {
+  id: 0x243936f1
+  name: "__sw_hweight8"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdc3fcbc9
+  type_id: 0xdfba2774
+  full_name: "__sw_hweight8"
+}
+elf_symbol {
+  id: 0x04e4f57e
+  name: "__sysfs_match_string"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x169938c1
+  type_id: 0x91c2e0c4
+  full_name: "__sysfs_match_string"
+}
+elf_symbol {
+  id: 0xb04d8b58
+  name: "__task_pid_nr_ns"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x29757059
+  type_id: 0xd59c1ab2
+  full_name: "__task_pid_nr_ns"
+}
+elf_symbol {
+  id: 0xd7d29ff4
+  name: "__task_rq_lock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd3cf4618
+  type_id: 0x8d7ecefa
+  full_name: "__task_rq_lock"
+}
+elf_symbol {
+  id: 0xdb99fd00
+  name: "__tasklet_hi_schedule"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3e3bad0a
+  type_id: 0x18653f44
+  full_name: "__tasklet_hi_schedule"
+}
+elf_symbol {
+  id: 0xf7de9a97
+  name: "__tasklet_schedule"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9d2ab8ac
+  type_id: 0x18653f44
+  full_name: "__tasklet_schedule"
+}
+elf_symbol {
+  id: 0x6356c7e1
+  name: "__trace_bprintk"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa20d01ba
+  type_id: 0x918cb258
+  full_name: "__trace_bprintk"
+}
+elf_symbol {
+  id: 0x233d8b34
+  name: "__trace_puts"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2d41e6f5
+  type_id: 0x91bc30ee
+  full_name: "__trace_puts"
+}
+elf_symbol {
+  id: 0xa5905957
+  name: "__trace_trigger_soft_disabled"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x942c940f
+  type_id: 0xfe730297
+  full_name: "__trace_trigger_soft_disabled"
+}
+elf_symbol {
+  id: 0x17dfc6db
+  name: "__traceiter_android_rvh_account_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2e0f66e5
+  type_id: 0x9bc2b791
+  full_name: "__traceiter_android_rvh_account_irq"
+}
+elf_symbol {
+  id: 0xb42422d5
+  name: "__traceiter_android_rvh_after_dequeue_task"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x307ed5f7
+  type_id: 0x9b116af7
+  full_name: "__traceiter_android_rvh_after_dequeue_task"
+}
+elf_symbol {
+  id: 0xb3d70eab
+  name: "__traceiter_android_rvh_after_enqueue_task"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x621c989c
+  type_id: 0x9b116af7
+  full_name: "__traceiter_android_rvh_after_enqueue_task"
+}
+elf_symbol {
+  id: 0x0b48afa1
+  name: "__traceiter_android_rvh_arm64_serror_panic"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc184e889
+  type_id: 0x9ba7ef87
+  full_name: "__traceiter_android_rvh_arm64_serror_panic"
+}
+elf_symbol {
+  id: 0x48420da9
+  name: "__traceiter_android_rvh_audio_usb_offload_disconnect"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x12459ac9
+  type_id: 0x9b2ba01c
+  full_name: "__traceiter_android_rvh_audio_usb_offload_disconnect"
+}
+elf_symbol {
+  id: 0x192bbbd5
+  name: "__traceiter_android_rvh_build_perf_domains"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4b4a53af
+  type_id: 0x9be885da
+  full_name: "__traceiter_android_rvh_build_perf_domains"
+}
+elf_symbol {
+  id: 0xadc13d20
+  name: "__traceiter_android_rvh_can_migrate_task"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa4a2ea5c
+  type_id: 0x9bc25990
+  full_name: "__traceiter_android_rvh_can_migrate_task"
+}
+elf_symbol {
+  id: 0xc93c7d6d
+  name: "__traceiter_android_rvh_check_preempt_tick"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd6d0b8d3
+  type_id: 0x9bda0446
+  full_name: "__traceiter_android_rvh_check_preempt_tick"
+}
+elf_symbol {
+  id: 0x9d00b8f0
+  name: "__traceiter_android_rvh_check_preempt_wakeup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x062c46d8
+  type_id: 0x9b10b4a6
+  full_name: "__traceiter_android_rvh_check_preempt_wakeup"
+}
+elf_symbol {
+  id: 0x5e9397c4
+  name: "__traceiter_android_rvh_check_preempt_wakeup_ignore"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8ae7e2c4
+  type_id: 0x9bdfaf3f
+  full_name: "__traceiter_android_rvh_check_preempt_wakeup_ignore"
+}
+elf_symbol {
+  id: 0xfd6e4093
+  name: "__traceiter_android_rvh_commit_creds"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfb428c3d
+  type_id: 0x9b427bba
+  full_name: "__traceiter_android_rvh_commit_creds"
+}
+elf_symbol {
+  id: 0xf11256cf
+  name: "__traceiter_android_rvh_cpu_cgroup_attach"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1c6027e9
+  type_id: 0x9b4ac008
+  full_name: "__traceiter_android_rvh_cpu_cgroup_attach"
+}
+elf_symbol {
+  id: 0x6c4603a3
+  name: "__traceiter_android_rvh_cpu_cgroup_online"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5f2b686c
+  type_id: 0x9b03e163
+  full_name: "__traceiter_android_rvh_cpu_cgroup_online"
+}
+elf_symbol {
+  id: 0x4053abff
+  name: "__traceiter_android_rvh_cpu_overutilized"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7f085466
+  type_id: 0x9a37ef2c
+  full_name: "__traceiter_android_rvh_cpu_overutilized"
+}
+elf_symbol {
+  id: 0x1baec33d
+  name: "__traceiter_android_rvh_cpufreq_transition"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x170ecaa7
+  type_id: 0x9ba9c2f7
+  full_name: "__traceiter_android_rvh_cpufreq_transition"
+}
+elf_symbol {
+  id: 0x1a7f4cf6
+  name: "__traceiter_android_rvh_cpuset_fork"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5866428b
+  type_id: 0x9bdfaf3f
+  full_name: "__traceiter_android_rvh_cpuset_fork"
+}
+elf_symbol {
+  id: 0x44c5f919
+  name: "__traceiter_android_rvh_ctl_dirty_rate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb88d27b3
+  type_id: 0x9bcd4ff7
+  full_name: "__traceiter_android_rvh_ctl_dirty_rate"
+}
+elf_symbol {
+  id: 0x8f1b1c1e
+  name: "__traceiter_android_rvh_dequeue_entity"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8c6ef6d7
+  type_id: 0x9b96d02c
+  full_name: "__traceiter_android_rvh_dequeue_entity"
+}
+elf_symbol {
+  id: 0xd6290b85
+  name: "__traceiter_android_rvh_dequeue_task"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x97fe0832
+  type_id: 0x9b116af7
+  full_name: "__traceiter_android_rvh_dequeue_task"
+}
+elf_symbol {
+  id: 0x3e4ab4f6
+  name: "__traceiter_android_rvh_dequeue_task_fair"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7e0f732a
+  type_id: 0x9b116af7
+  full_name: "__traceiter_android_rvh_dequeue_task_fair"
+}
+elf_symbol {
+  id: 0xa3b41867
+  name: "__traceiter_android_rvh_die_kernel_fault"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x594d8f11
+  type_id: 0x9b5be873
+  full_name: "__traceiter_android_rvh_die_kernel_fault"
+}
+elf_symbol {
+  id: 0x40034e11
+  name: "__traceiter_android_rvh_do_el1_bti"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x21eb95f1
+  type_id: 0x9ba7ef87
+  full_name: "__traceiter_android_rvh_do_el1_bti"
+}
+elf_symbol {
+  id: 0x6e62463e
+  name: "__traceiter_android_rvh_do_el1_fpac"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd8212c13
+  type_id: 0x9ba7ef87
+  full_name: "__traceiter_android_rvh_do_el1_fpac"
+}
+elf_symbol {
+  id: 0x81449840
+  name: "__traceiter_android_rvh_do_sched_yield"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x65a6a0a5
+  type_id: 0x9b17b01e
+  full_name: "__traceiter_android_rvh_do_sched_yield"
+}
+elf_symbol {
+  id: 0x611114e0
+  name: "__traceiter_android_rvh_do_sea"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x70c0f094
+  type_id: 0x9b6eb620
+  full_name: "__traceiter_android_rvh_do_sea"
+}
+elf_symbol {
+  id: 0x76eb11ee
+  name: "__traceiter_android_rvh_do_sp_pc_abort"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc7b28230
+  type_id: 0x9b6eb620
+  full_name: "__traceiter_android_rvh_do_sp_pc_abort"
+}
+elf_symbol {
+  id: 0x1fb410b2
+  name: "__traceiter_android_rvh_do_undefinstr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0816033c
+  type_id: 0x9ba7ef87
+  full_name: "__traceiter_android_rvh_do_undefinstr"
+}
+elf_symbol {
+  id: 0x123e41ea
+  name: "__traceiter_android_rvh_effective_cpu_util"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x303b2530
+  type_id: 0x9a3f301e
+  full_name: "__traceiter_android_rvh_effective_cpu_util"
+}
+elf_symbol {
+  id: 0x6682daab
+  name: "__traceiter_android_rvh_enqueue_entity"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x565c2c4a
+  type_id: 0x9b96d02c
+  full_name: "__traceiter_android_rvh_enqueue_entity"
+}
+elf_symbol {
+  id: 0x24dfaeb0
+  name: "__traceiter_android_rvh_enqueue_task"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc59c4559
+  type_id: 0x9b116af7
+  full_name: "__traceiter_android_rvh_enqueue_task"
+}
+elf_symbol {
+  id: 0xd5b05c65
+  name: "__traceiter_android_rvh_enqueue_task_fair"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3a4d950e
+  type_id: 0x9b116af7
+  full_name: "__traceiter_android_rvh_enqueue_task_fair"
+}
+elf_symbol {
+  id: 0xebecb2ce
+  name: "__traceiter_android_rvh_entity_tick"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x29744a23
+  type_id: 0x9b96d02c
+  full_name: "__traceiter_android_rvh_entity_tick"
+}
+elf_symbol {
+  id: 0x6740fa4e
+  name: "__traceiter_android_rvh_exit_creds"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x258f1ca1
+  type_id: 0x9b427bba
+  full_name: "__traceiter_android_rvh_exit_creds"
+}
+elf_symbol {
+  id: 0xf94ce10d
+  name: "__traceiter_android_rvh_find_busiest_group"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe3cd6da3
+  type_id: 0x9b79ad21
+  full_name: "__traceiter_android_rvh_find_busiest_group"
+}
+elf_symbol {
+  id: 0x45d21f87
+  name: "__traceiter_android_rvh_find_busiest_queue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xda83a0e8
+  type_id: 0x9a3e0766
+  full_name: "__traceiter_android_rvh_find_busiest_queue"
+}
+elf_symbol {
+  id: 0x83371e9e
+  name: "__traceiter_android_rvh_find_energy_efficient_cpu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe03e0983
+  type_id: 0x9bc38ca5
+  full_name: "__traceiter_android_rvh_find_energy_efficient_cpu"
+}
+elf_symbol {
+  id: 0x8bd49e8e
+  name: "__traceiter_android_rvh_find_lowest_rq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9d2ca1d5
+  type_id: 0x9bd47a1d
+  full_name: "__traceiter_android_rvh_find_lowest_rq"
+}
+elf_symbol {
+  id: 0x5d2af80b
+  name: "__traceiter_android_rvh_find_new_ilb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa44cff02
+  type_id: 0x9b4884ab
+  full_name: "__traceiter_android_rvh_find_new_ilb"
+}
+elf_symbol {
+  id: 0xf6f47b2e
+  name: "__traceiter_android_rvh_finish_prio_fork"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc3094985
+  type_id: 0x9bdbdcc4
+  full_name: "__traceiter_android_rvh_finish_prio_fork"
+}
+elf_symbol {
+  id: 0xede4c5f2
+  name: "__traceiter_android_rvh_flush_task"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xde237298
+  type_id: 0x9bdbdcc4
+  full_name: "__traceiter_android_rvh_flush_task"
+}
+elf_symbol {
+  id: 0xa23fdad4
+  name: "__traceiter_android_rvh_get_nohz_timer_target"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x264a20ab
+  type_id: 0x9be6a9ad
+  full_name: "__traceiter_android_rvh_get_nohz_timer_target"
+}
+elf_symbol {
+  id: 0x41d29e07
+  name: "__traceiter_android_rvh_gic_v3_set_affinity"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcb0d4cf1
+  type_id: 0x9b8eabb4
+  full_name: "__traceiter_android_rvh_gic_v3_set_affinity"
+}
+elf_symbol {
+  id: 0x0b1353da
+  name: "__traceiter_android_rvh_iommu_alloc_insert_iova"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x101a2d5e
+  type_id: 0x9b5db5aa
+  full_name: "__traceiter_android_rvh_iommu_alloc_insert_iova"
+}
+elf_symbol {
+  id: 0x7edcea8d
+  name: "__traceiter_android_rvh_iommu_iovad_init_alloc_algo"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x16a9062b
+  type_id: 0x9ba938bd
+  full_name: "__traceiter_android_rvh_iommu_iovad_init_alloc_algo"
+}
+elf_symbol {
+  id: 0x72c43156
+  name: "__traceiter_android_rvh_iommu_limit_align_shift"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xddb7c31f
+  type_id: 0x9b5d6db7
+  full_name: "__traceiter_android_rvh_iommu_limit_align_shift"
+}
+elf_symbol {
+  id: 0x61e95c07
+  name: "__traceiter_android_rvh_iommu_setup_dma_ops"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x361ab352
+  type_id: 0x9b8019c6
+  full_name: "__traceiter_android_rvh_iommu_setup_dma_ops"
+}
+elf_symbol {
+  id: 0x7c212080
+  name: "__traceiter_android_rvh_is_cpu_allowed"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9c62d953
+  type_id: 0x9bc253cf
+  full_name: "__traceiter_android_rvh_is_cpu_allowed"
+}
+elf_symbol {
+  id: 0x1ea5d323
+  name: "__traceiter_android_rvh_migrate_queued_task"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa12ac2f0
+  type_id: 0x9b18c50f
+  full_name: "__traceiter_android_rvh_migrate_queued_task"
+}
+elf_symbol {
+  id: 0xc1a482d8
+  name: "__traceiter_android_rvh_mmc_resume"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5448882c
+  type_id: 0x9b73acb8
+  full_name: "__traceiter_android_rvh_mmc_resume"
+}
+elf_symbol {
+  id: 0x9c17d92b
+  name: "__traceiter_android_rvh_mmc_suspend"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa641f135
+  type_id: 0x9b77df43
+  full_name: "__traceiter_android_rvh_mmc_suspend"
+}
+elf_symbol {
+  id: 0x0d22882d
+  name: "__traceiter_android_rvh_new_task_stats"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa29dadf2
+  type_id: 0x9bdbdcc4
+  full_name: "__traceiter_android_rvh_new_task_stats"
+}
+elf_symbol {
+  id: 0xb51338de
+  name: "__traceiter_android_rvh_override_creds"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb88cda04
+  type_id: 0x9b427bba
+  full_name: "__traceiter_android_rvh_override_creds"
+}
+elf_symbol {
+  id: 0xc463ba81
+  name: "__traceiter_android_rvh_panic_unhandled"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd5c81710
+  type_id: 0x9ba47b26
+  full_name: "__traceiter_android_rvh_panic_unhandled"
+}
+elf_symbol {
+  id: 0x88e9b222
+  name: "__traceiter_android_rvh_pick_next_entity"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc15bd902
+  type_id: 0x9b96f247
+  full_name: "__traceiter_android_rvh_pick_next_entity"
+}
+elf_symbol {
+  id: 0x097e467e
+  name: "__traceiter_android_rvh_place_entity"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x711d437f
+  type_id: 0x9b974729
+  full_name: "__traceiter_android_rvh_place_entity"
+}
+elf_symbol {
+  id: 0xfad1d9f5
+  name: "__traceiter_android_rvh_post_init_entity_util_avg"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf1336323
+  type_id: 0x9b8f15f1
+  full_name: "__traceiter_android_rvh_post_init_entity_util_avg"
+}
+elf_symbol {
+  id: 0xeccbc3c1
+  name: "__traceiter_android_rvh_prepare_prio_fork"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe7a6a19c
+  type_id: 0x9bdbdcc4
+  full_name: "__traceiter_android_rvh_prepare_prio_fork"
+}
+elf_symbol {
+  id: 0xbd2d27dc
+  name: "__traceiter_android_rvh_psci_cpu_suspend"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x962f6bd0
+  type_id: 0x988fe934
+  full_name: "__traceiter_android_rvh_psci_cpu_suspend"
+}
+elf_symbol {
+  id: 0xe41b0c78
+  name: "__traceiter_android_rvh_psci_tos_resident_on"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd872b19a
+  type_id: 0x9a374ad4
+  full_name: "__traceiter_android_rvh_psci_tos_resident_on"
+}
+elf_symbol {
+  id: 0x13f466b7
+  name: "__traceiter_android_rvh_refrigerator"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x811d8704
+  type_id: 0x9a1a471c
+  full_name: "__traceiter_android_rvh_refrigerator"
+}
+elf_symbol {
+  id: 0xe3e24295
+  name: "__traceiter_android_rvh_replace_next_task_fair"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0d3d7546
+  type_id: 0x9b14e220
+  full_name: "__traceiter_android_rvh_replace_next_task_fair"
+}
+elf_symbol {
+  id: 0xaedef3a2
+  name: "__traceiter_android_rvh_report_bug"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x41d4f1c5
+  type_id: 0x9b46543b
+  full_name: "__traceiter_android_rvh_report_bug"
+}
+elf_symbol {
+  id: 0xde725472
+  name: "__traceiter_android_rvh_revert_creds"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa468286e
+  type_id: 0x9b427bba
+  full_name: "__traceiter_android_rvh_revert_creds"
+}
+elf_symbol {
+  id: 0xd90a9a58
+  name: "__traceiter_android_rvh_rtmutex_prepare_setprio"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xce2be96c
+  type_id: 0x9bdc9aae
+  full_name: "__traceiter_android_rvh_rtmutex_prepare_setprio"
+}
+elf_symbol {
+  id: 0xbf64b0b6
+  name: "__traceiter_android_rvh_rto_next_cpu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc8030a93
+  type_id: 0x9a3d4ac3
+  full_name: "__traceiter_android_rvh_rto_next_cpu"
+}
+elf_symbol {
+  id: 0xb25ca194
+  name: "__traceiter_android_rvh_sched_balance_rt"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb0d7a7fe
+  type_id: 0x9b10bb14
+  full_name: "__traceiter_android_rvh_sched_balance_rt"
+}
+elf_symbol {
+  id: 0x53bf1227
+  name: "__traceiter_android_rvh_sched_cpu_dying"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc40c01e0
+  type_id: 0x9a33392f
+  full_name: "__traceiter_android_rvh_sched_cpu_dying"
+}
+elf_symbol {
+  id: 0x36ed91b2
+  name: "__traceiter_android_rvh_sched_cpu_starting"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x335e5307
+  type_id: 0x9a33392f
+  full_name: "__traceiter_android_rvh_sched_cpu_starting"
+}
+elf_symbol {
+  id: 0x2614daf2
+  name: "__traceiter_android_rvh_sched_exec"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd854f169
+  type_id: 0x9be885da
+  full_name: "__traceiter_android_rvh_sched_exec"
+}
+elf_symbol {
+  id: 0x33e2d3a7
+  name: "__traceiter_android_rvh_sched_fork"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd6bd1e71
+  type_id: 0x9bdbdcc4
+  full_name: "__traceiter_android_rvh_sched_fork"
+}
+elf_symbol {
+  id: 0x0ff9bdf0
+  name: "__traceiter_android_rvh_sched_fork_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaa446994
+  type_id: 0x9bdbdcc4
+  full_name: "__traceiter_android_rvh_sched_fork_init"
+}
+elf_symbol {
+  id: 0xb407a86b
+  name: "__traceiter_android_rvh_sched_getaffinity"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xee13f051
+  type_id: 0x9bd5e248
+  full_name: "__traceiter_android_rvh_sched_getaffinity"
+}
+elf_symbol {
+  id: 0x290327a5
+  name: "__traceiter_android_rvh_sched_newidle_balance"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa540cc4c
+  type_id: 0x9b18e15a
+  full_name: "__traceiter_android_rvh_sched_newidle_balance"
+}
+elf_symbol {
+  id: 0x671862a7
+  name: "__traceiter_android_rvh_sched_nohz_balancer_kick"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb9e594e6
+  type_id: 0x9b110126
+  full_name: "__traceiter_android_rvh_sched_nohz_balancer_kick"
+}
+elf_symbol {
+  id: 0x415dd5e7
+  name: "__traceiter_android_rvh_sched_rebalance_domains"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa5df882d
+  type_id: 0x9b13661d
+  full_name: "__traceiter_android_rvh_sched_rebalance_domains"
+}
+elf_symbol {
+  id: 0xd7ca6cc8
+  name: "__traceiter_android_rvh_sched_setaffinity"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x18bdf952
+  type_id: 0x9bd7d214
+  full_name: "__traceiter_android_rvh_sched_setaffinity"
+}
+elf_symbol {
+  id: 0x2bb177b4
+  name: "__traceiter_android_rvh_schedule"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5597e05e
+  type_id: 0x9abe9677
+  full_name: "__traceiter_android_rvh_schedule"
+}
+elf_symbol {
+  id: 0x40bb3f78
+  name: "__traceiter_android_rvh_schedule_bug"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfa5d1e9c
+  type_id: 0x9bcd4ff7
+  full_name: "__traceiter_android_rvh_schedule_bug"
+}
+elf_symbol {
+  id: 0x0f807f10
+  name: "__traceiter_android_rvh_select_fallback_rq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4106c2c4
+  type_id: 0x9a343225
+  full_name: "__traceiter_android_rvh_select_fallback_rq"
+}
+elf_symbol {
+  id: 0xe48752ef
+  name: "__traceiter_android_rvh_select_task_rq_fair"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe1748279
+  type_id: 0x9bc391f6
+  full_name: "__traceiter_android_rvh_select_task_rq_fair"
+}
+elf_symbol {
+  id: 0x4c24a4be
+  name: "__traceiter_android_rvh_select_task_rq_rt"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8041f4be
+  type_id: 0x9bc391f6
+  full_name: "__traceiter_android_rvh_select_task_rq_rt"
+}
+elf_symbol {
+  id: 0x5d194c5c
+  name: "__traceiter_android_rvh_selinux_avc_insert"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7b36fc65
+  type_id: 0x9b4d06b7
+  full_name: "__traceiter_android_rvh_selinux_avc_insert"
+}
+elf_symbol {
+  id: 0x7765e85b
+  name: "__traceiter_android_rvh_selinux_avc_lookup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x11d93a3b
+  type_id: 0x9b7c44ce
+  full_name: "__traceiter_android_rvh_selinux_avc_lookup"
+}
+elf_symbol {
+  id: 0xb7214df9
+  name: "__traceiter_android_rvh_selinux_avc_node_delete"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0e5e515c
+  type_id: 0x9b4d06b7
+  full_name: "__traceiter_android_rvh_selinux_avc_node_delete"
+}
+elf_symbol {
+  id: 0x2720fa46
+  name: "__traceiter_android_rvh_selinux_avc_node_replace"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfaf0424d
+  type_id: 0x9b432d7a
+  full_name: "__traceiter_android_rvh_selinux_avc_node_replace"
+}
+elf_symbol {
+  id: 0x9f6c2b96
+  name: "__traceiter_android_rvh_selinux_is_initialized"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x94da738b
+  type_id: 0x9b57e4f6
+  full_name: "__traceiter_android_rvh_selinux_is_initialized"
+}
+elf_symbol {
+  id: 0x28eb5989
+  name: "__traceiter_android_rvh_set_balance_anon_file_reclaim"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6260c8f6
+  type_id: 0x9be885da
+  full_name: "__traceiter_android_rvh_set_balance_anon_file_reclaim"
+}
+elf_symbol {
+  id: 0xbe8d73f2
+  name: "__traceiter_android_rvh_set_cpus_allowed_by_task"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x57397a39
+  type_id: 0x9b67b049
+  full_name: "__traceiter_android_rvh_set_cpus_allowed_by_task"
+}
+elf_symbol {
+  id: 0xaf658447
+  name: "__traceiter_android_rvh_set_cpus_allowed_comm"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe6651648
+  type_id: 0x9bd79f74
+  full_name: "__traceiter_android_rvh_set_cpus_allowed_comm"
+}
+elf_symbol {
+  id: 0xe56edb7a
+  name: "__traceiter_android_rvh_set_gfp_zone_flags"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xac8d4649
+  type_id: 0x9bc07fe3
+  full_name: "__traceiter_android_rvh_set_gfp_zone_flags"
+}
+elf_symbol {
+  id: 0xcac6b03d
+  name: "__traceiter_android_rvh_set_module_core_rw_nx"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbef72471
+  type_id: 0x9b585c8d
+  full_name: "__traceiter_android_rvh_set_module_core_rw_nx"
+}
+elf_symbol {
+  id: 0x4a5f5242
+  name: "__traceiter_android_rvh_set_module_init_rw_nx"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb88c7fa1
+  type_id: 0x9b585c8d
+  full_name: "__traceiter_android_rvh_set_module_init_rw_nx"
+}
+elf_symbol {
+  id: 0x08cd7e9d
+  name: "__traceiter_android_rvh_set_module_permit_after_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc66f3b4b
+  type_id: 0x9b585c8d
+  full_name: "__traceiter_android_rvh_set_module_permit_after_init"
+}
+elf_symbol {
+  id: 0x9e97904b
+  name: "__traceiter_android_rvh_set_module_permit_before_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7628b609
+  type_id: 0x9b585c8d
+  full_name: "__traceiter_android_rvh_set_module_permit_before_init"
+}
+elf_symbol {
+  id: 0x615c3dcf
+  name: "__traceiter_android_rvh_set_readahead_gfp_mask"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf01d9cb4
+  type_id: 0x9bc07fe3
+  full_name: "__traceiter_android_rvh_set_readahead_gfp_mask"
+}
+elf_symbol {
+  id: 0xc6a28b4a
+  name: "__traceiter_android_rvh_set_task_cpu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc1bdb7ba
+  type_id: 0x9bcabd9d
+  full_name: "__traceiter_android_rvh_set_task_cpu"
+}
+elf_symbol {
+  id: 0x9b0cc890
+  name: "__traceiter_android_rvh_set_user_nice"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4cc5d792
+  type_id: 0x9bd6ff14
+  full_name: "__traceiter_android_rvh_set_user_nice"
+}
+elf_symbol {
+  id: 0xa01b20ce
+  name: "__traceiter_android_rvh_setscheduler"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe3ec5d51
+  type_id: 0x9bdbdcc4
+  full_name: "__traceiter_android_rvh_setscheduler"
+}
+elf_symbol {
+  id: 0x73c83ef4
+  name: "__traceiter_android_rvh_shmem_get_folio"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x497891ef
+  type_id: 0x9b1c749d
+  full_name: "__traceiter_android_rvh_shmem_get_folio"
+}
+elf_symbol {
+  id: 0x46515de8
+  name: "__traceiter_android_rvh_show_max_freq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf66ce6bb
+  type_id: 0x9baf3eaf
+  full_name: "__traceiter_android_rvh_show_max_freq"
+}
+elf_symbol {
+  id: 0x7b07c7f1
+  name: "__traceiter_android_rvh_tick_entry"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2bc07d83
+  type_id: 0x9b17b01e
+  full_name: "__traceiter_android_rvh_tick_entry"
+}
+elf_symbol {
+  id: 0x968833a5
+  name: "__traceiter_android_rvh_try_to_wake_up"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x914d383b
+  type_id: 0x9bdbdcc4
+  full_name: "__traceiter_android_rvh_try_to_wake_up"
+}
+elf_symbol {
+  id: 0x09f2fded
+  name: "__traceiter_android_rvh_try_to_wake_up_success"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x374f810e
+  type_id: 0x9bdbdcc4
+  full_name: "__traceiter_android_rvh_try_to_wake_up_success"
+}
+elf_symbol {
+  id: 0x23097c08
+  name: "__traceiter_android_rvh_ttwu_cond"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf1935a81
+  type_id: 0x9a374ad4
+  full_name: "__traceiter_android_rvh_ttwu_cond"
+}
+elf_symbol {
+  id: 0xe3ee70ae
+  name: "__traceiter_android_rvh_typec_tcpci_get_vbus"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x37614c90
+  type_id: 0x9bf77d6c
+  full_name: "__traceiter_android_rvh_typec_tcpci_get_vbus"
+}
+elf_symbol {
+  id: 0xcce6f612
+  name: "__traceiter_android_rvh_uclamp_eff_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5d5e3bf0
+  type_id: 0x9bca85c1
+  full_name: "__traceiter_android_rvh_uclamp_eff_get"
+}
+elf_symbol {
+  id: 0xcd824552
+  name: "__traceiter_android_rvh_update_cpu_capacity"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc7020ac9
+  type_id: 0x9a32aa77
+  full_name: "__traceiter_android_rvh_update_cpu_capacity"
+}
+elf_symbol {
+  id: 0x16809a5a
+  name: "__traceiter_android_rvh_update_misfit_status"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x59a078f7
+  type_id: 0x9bd01b5c
+  full_name: "__traceiter_android_rvh_update_misfit_status"
+}
+elf_symbol {
+  id: 0xc1ba0eb6
+  name: "__traceiter_android_rvh_update_thermal_stats"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9b6452c3
+  type_id: 0x9a33392f
+  full_name: "__traceiter_android_rvh_update_thermal_stats"
+}
+elf_symbol {
+  id: 0x13c17b96
+  name: "__traceiter_android_rvh_util_est_update"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x92002a0c
+  type_id: 0x9b922d94
+  full_name: "__traceiter_android_rvh_util_est_update"
+}
+elf_symbol {
+  id: 0xebcd0234
+  name: "__traceiter_android_rvh_wake_up_new_task"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfe8da674
+  type_id: 0x9bdbdcc4
+  full_name: "__traceiter_android_rvh_wake_up_new_task"
+}
+elf_symbol {
+  id: 0xa3af7947
+  name: "__traceiter_android_vh_account_process_tick_gran"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4f47bbac
+  type_id: 0x9a37ef2c
+  full_name: "__traceiter_android_vh_account_process_tick_gran"
+}
+elf_symbol {
+  id: 0x86527a4e
+  name: "__traceiter_android_vh_account_task_time"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdb89ba8e
+  type_id: 0x9bd1d928
+  full_name: "__traceiter_android_vh_account_task_time"
+}
+elf_symbol {
+  id: 0x33f9278c
+  name: "__traceiter_android_vh_alloc_pages_failure_bypass"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc26238b3
+  type_id: 0x98716c4f
+  full_name: "__traceiter_android_vh_alloc_pages_failure_bypass"
+}
+elf_symbol {
+  id: 0x2e343246
+  name: "__traceiter_android_vh_alloc_pages_reclaim_bypass"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc53b3946
+  type_id: 0x98716c4f
+  full_name: "__traceiter_android_vh_alloc_pages_reclaim_bypass"
+}
+elf_symbol {
+  id: 0x9c240ef1
+  name: "__traceiter_android_vh_alloc_uid"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfd1b5b6e
+  type_id: 0x9bcfc1f5
+  full_name: "__traceiter_android_vh_alloc_uid"
+}
+elf_symbol {
+  id: 0x505f4289
+  name: "__traceiter_android_vh_alter_futex_plist_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x16e632ce
+  type_id: 0x9be1ca34
+  full_name: "__traceiter_android_vh_alter_futex_plist_add"
+}
+elf_symbol {
+  id: 0xd5431a65
+  name: "__traceiter_android_vh_alter_mutex_list_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbda3677a
+  type_id: 0x9b248c83
+  full_name: "__traceiter_android_vh_alter_mutex_list_add"
+}
+elf_symbol {
+  id: 0xb288a9fe
+  name: "__traceiter_android_vh_alter_rwsem_list_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3877c7f1
+  type_id: 0x9bb15d65
+  full_name: "__traceiter_android_vh_alter_rwsem_list_add"
+}
+elf_symbol {
+  id: 0xf89a975f
+  name: "__traceiter_android_vh_arch_set_freq_scale"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb98e0e01
+  type_id: 0x9b67907c
+  full_name: "__traceiter_android_vh_arch_set_freq_scale"
+}
+elf_symbol {
+  id: 0x528da532
+  name: "__traceiter_android_vh_audio_usb_offload_connect"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x93b3f3db
+  type_id: 0x9b2d3bb4
+  full_name: "__traceiter_android_vh_audio_usb_offload_connect"
+}
+elf_symbol {
+  id: 0x530ad17d
+  name: "__traceiter_android_vh_binder_alloc_new_buf_locked"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2a27381c
+  type_id: 0x98731419
+  full_name: "__traceiter_android_vh_binder_alloc_new_buf_locked"
+}
+elf_symbol {
+  id: 0x6e0b473c
+  name: "__traceiter_android_vh_binder_del_ref"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x37284779
+  type_id: 0x9bdcd3ab
+  full_name: "__traceiter_android_vh_binder_del_ref"
+}
+elf_symbol {
+  id: 0xbebf7d98
+  name: "__traceiter_android_vh_binder_free_proc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1542af58
+  type_id: 0x9bd18c9d
+  full_name: "__traceiter_android_vh_binder_free_proc"
+}
+elf_symbol {
+  id: 0x6935b08b
+  name: "__traceiter_android_vh_binder_has_work_ilocked"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5c2cc3f5
+  type_id: 0x9b24741c
+  full_name: "__traceiter_android_vh_binder_has_work_ilocked"
+}
+elf_symbol {
+  id: 0xd595bd2c
+  name: "__traceiter_android_vh_binder_looper_state_registered"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0a013010
+  type_id: 0x9b3885c4
+  full_name: "__traceiter_android_vh_binder_looper_state_registered"
+}
+elf_symbol {
+  id: 0xfdb48c6a
+  name: "__traceiter_android_vh_binder_new_ref"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9309d441
+  type_id: 0x9bdd4f28
+  full_name: "__traceiter_android_vh_binder_new_ref"
+}
+elf_symbol {
+  id: 0xbff39e0e
+  name: "__traceiter_android_vh_binder_preset"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc172900b
+  type_id: 0x9bd3af7a
+  full_name: "__traceiter_android_vh_binder_preset"
+}
+elf_symbol {
+  id: 0xae7d043c
+  name: "__traceiter_android_vh_binder_priority_skip"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe1b9c718
+  type_id: 0x9bdfaf3f
+  full_name: "__traceiter_android_vh_binder_priority_skip"
+}
+elf_symbol {
+  id: 0x3663ade6
+  name: "__traceiter_android_vh_binder_proc_transaction"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x12db5e99
+  type_id: 0x9bdcf60d
+  full_name: "__traceiter_android_vh_binder_proc_transaction"
+}
+elf_symbol {
+  id: 0x8df3721b
+  name: "__traceiter_android_vh_binder_proc_transaction_entry"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb52877f8
+  type_id: 0x9bd130b8
+  full_name: "__traceiter_android_vh_binder_proc_transaction_entry"
+}
+elf_symbol {
+  id: 0x20dbced6
+  name: "__traceiter_android_vh_binder_proc_transaction_finish"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4af99a84
+  type_id: 0x9bd14825
+  full_name: "__traceiter_android_vh_binder_proc_transaction_finish"
+}
+elf_symbol {
+  id: 0x5c1ee0c5
+  name: "__traceiter_android_vh_binder_read_done"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6d5e4c7d
+  type_id: 0x9bd88151
+  full_name: "__traceiter_android_vh_binder_read_done"
+}
+elf_symbol {
+  id: 0x2d244867
+  name: "__traceiter_android_vh_binder_reply"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0ec641ea
+  type_id: 0x9bd6fb19
+  full_name: "__traceiter_android_vh_binder_reply"
+}
+elf_symbol {
+  id: 0xc6c9353c
+  name: "__traceiter_android_vh_binder_restore_priority"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd715032c
+  type_id: 0x9ba25f4a
+  full_name: "__traceiter_android_vh_binder_restore_priority"
+}
+elf_symbol {
+  id: 0xd738b678
+  name: "__traceiter_android_vh_binder_select_worklist_ilocked"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x792d9054
+  type_id: 0x9bb2f28e
+  full_name: "__traceiter_android_vh_binder_select_worklist_ilocked"
+}
+elf_symbol {
+  id: 0x2a9c6616
+  name: "__traceiter_android_vh_binder_set_priority"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe7bc4f79
+  type_id: 0x9ba25f4a
+  full_name: "__traceiter_android_vh_binder_set_priority"
+}
+elf_symbol {
+  id: 0x4785a3dd
+  name: "__traceiter_android_vh_binder_thread_read"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb66ecca0
+  type_id: 0x9bbceb0f
+  full_name: "__traceiter_android_vh_binder_thread_read"
+}
+elf_symbol {
+  id: 0x25f13dbe
+  name: "__traceiter_android_vh_binder_thread_release"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0b46e6d9
+  type_id: 0x9bd88151
+  full_name: "__traceiter_android_vh_binder_thread_release"
+}
+elf_symbol {
+  id: 0xf6faffcb
+  name: "__traceiter_android_vh_binder_trans"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1570346e
+  type_id: 0x9bd6fb19
+  full_name: "__traceiter_android_vh_binder_trans"
+}
+elf_symbol {
+  id: 0x5cf60b10
+  name: "__traceiter_android_vh_binder_transaction_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaeac497b
+  type_id: 0x9ba51920
+  full_name: "__traceiter_android_vh_binder_transaction_init"
+}
+elf_symbol {
+  id: 0x61c82fb5
+  name: "__traceiter_android_vh_binder_wait_for_work"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1c902cd9
+  type_id: 0x9a1334e6
+  full_name: "__traceiter_android_vh_binder_wait_for_work"
+}
+elf_symbol {
+  id: 0x53fba77d
+  name: "__traceiter_android_vh_binder_wakeup_ilocked"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x354c6125
+  type_id: 0x9bc0fd25
+  full_name: "__traceiter_android_vh_binder_wakeup_ilocked"
+}
+elf_symbol {
+  id: 0xe479b209
+  name: "__traceiter_android_vh_build_sched_domains"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf1522f52
+  type_id: 0x9a1a471c
+  full_name: "__traceiter_android_vh_build_sched_domains"
+}
+elf_symbol {
+  id: 0xa9225bf8
+  name: "__traceiter_android_vh_cgroup_attach"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdcc9ff5c
+  type_id: 0x9b8bfa37
+  full_name: "__traceiter_android_vh_cgroup_attach"
+}
+elf_symbol {
+  id: 0x33c527ab
+  name: "__traceiter_android_vh_cgroup_set_task"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xed45b434
+  type_id: 0x9a347f45
+  full_name: "__traceiter_android_vh_cgroup_set_task"
+}
+elf_symbol {
+  id: 0x5012fcd8
+  name: "__traceiter_android_vh_check_bpf_syscall"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3ac93501
+  type_id: 0x9a3f7770
+  full_name: "__traceiter_android_vh_check_bpf_syscall"
+}
+elf_symbol {
+  id: 0x67bab494
+  name: "__traceiter_android_vh_check_file_open"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x198924bb
+  type_id: 0x9b4b913b
+  full_name: "__traceiter_android_vh_check_file_open"
+}
+elf_symbol {
+  id: 0x96d1c9c4
+  name: "__traceiter_android_vh_check_hibernation_swap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3d48478b
+  type_id: 0x9b9b71fd
+  full_name: "__traceiter_android_vh_check_hibernation_swap"
+}
+elf_symbol {
+  id: 0x42428033
+  name: "__traceiter_android_vh_check_mmap_file"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8852a1b9
+  type_id: 0x9b478d6a
+  full_name: "__traceiter_android_vh_check_mmap_file"
+}
+elf_symbol {
+  id: 0x005c7625
+  name: "__traceiter_android_vh_check_uninterrupt_tasks"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x691f0850
+  type_id: 0x9bd746a2
+  full_name: "__traceiter_android_vh_check_uninterrupt_tasks"
+}
+elf_symbol {
+  id: 0xf3accb84
+  name: "__traceiter_android_vh_check_uninterrupt_tasks_done"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xee9cf1fb
+  type_id: 0x9bcd4ff7
+  full_name: "__traceiter_android_vh_check_uninterrupt_tasks_done"
+}
+elf_symbol {
+  id: 0xef7737f8
+  name: "__traceiter_android_vh_cleanup_old_buffers_bypass"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x221ef9d7
+  type_id: 0x9b63bb96
+  full_name: "__traceiter_android_vh_cleanup_old_buffers_bypass"
+}
+elf_symbol {
+  id: 0x9247dcb1
+  name: "__traceiter_android_vh_cpu_idle_enter"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbdc34d2e
+  type_id: 0x9beeaa65
+  full_name: "__traceiter_android_vh_cpu_idle_enter"
+}
+elf_symbol {
+  id: 0xfd04e27a
+  name: "__traceiter_android_vh_cpu_idle_exit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd966796c
+  type_id: 0x9a3f491c
+  full_name: "__traceiter_android_vh_cpu_idle_exit"
+}
+elf_symbol {
+  id: 0xa124d3e0
+  name: "__traceiter_android_vh_cpufreq_acct_update_power"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1aa33c8a
+  type_id: 0x99e166d2
+  full_name: "__traceiter_android_vh_cpufreq_acct_update_power"
+}
+elf_symbol {
+  id: 0x9c5d1bdd
+  name: "__traceiter_android_vh_cpufreq_fast_switch"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf9cea3cc
+  type_id: 0x9bae28ba
+  full_name: "__traceiter_android_vh_cpufreq_fast_switch"
+}
+elf_symbol {
+  id: 0x5c9fa956
+  name: "__traceiter_android_vh_cpufreq_resolve_freq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd0c668dc
+  type_id: 0x9bae28ba
+  full_name: "__traceiter_android_vh_cpufreq_resolve_freq"
+}
+elf_symbol {
+  id: 0xca50936b
+  name: "__traceiter_android_vh_cpufreq_target"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3b08a512
+  type_id: 0x9bae28ba
+  full_name: "__traceiter_android_vh_cpufreq_target"
+}
+elf_symbol {
+  id: 0x431c5bf5
+  name: "__traceiter_android_vh_cpuidle_psci_enter"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6cbffc19
+  type_id: 0x9b73e68e
+  full_name: "__traceiter_android_vh_cpuidle_psci_enter"
+}
+elf_symbol {
+  id: 0x9f47ed94
+  name: "__traceiter_android_vh_cpuidle_psci_exit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9e5cd40b
+  type_id: 0x9b73e68e
+  full_name: "__traceiter_android_vh_cpuidle_psci_exit"
+}
+elf_symbol {
+  id: 0x0bf2f5bb
+  name: "__traceiter_android_vh_disable_thermal_cooling_stats"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3a893f24
+  type_id: 0x9bb8e3d1
+  full_name: "__traceiter_android_vh_disable_thermal_cooling_stats"
+}
+elf_symbol {
+  id: 0x5c382938
+  name: "__traceiter_android_vh_dm_bufio_shrink_scan_bypass"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7be804c5
+  type_id: 0x9b661c0a
+  full_name: "__traceiter_android_vh_dm_bufio_shrink_scan_bypass"
+}
+elf_symbol {
+  id: 0xd593b3ef
+  name: "__traceiter_android_vh_do_futex"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe335b8b8
+  type_id: 0x9a35263f
+  full_name: "__traceiter_android_vh_do_futex"
+}
+elf_symbol {
+  id: 0x1cc3aec5
+  name: "__traceiter_android_vh_do_send_sig_info"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x803c5d1f
+  type_id: 0x9a340b23
+  full_name: "__traceiter_android_vh_do_send_sig_info"
+}
+elf_symbol {
+  id: 0xb12728da
+  name: "__traceiter_android_vh_do_shrink_slab"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2ee96d46
+  type_id: 0x9b3c0938
+  full_name: "__traceiter_android_vh_do_shrink_slab"
+}
+elf_symbol {
+  id: 0x9dbd7b92
+  name: "__traceiter_android_vh_do_wake_up_sync"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb028d8b5
+  type_id: 0x9bf7b86e
+  full_name: "__traceiter_android_vh_do_wake_up_sync"
+}
+elf_symbol {
+  id: 0x42312ccc
+  name: "__traceiter_android_vh_dump_throttled_rt_tasks"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1a34d1a3
+  type_id: 0x9a17d2c3
+  full_name: "__traceiter_android_vh_dump_throttled_rt_tasks"
+}
+elf_symbol {
+  id: 0xf432d1c9
+  name: "__traceiter_android_vh_dup_task_struct"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x79d87ea9
+  type_id: 0x9bdc9aae
+  full_name: "__traceiter_android_vh_dup_task_struct"
+}
+elf_symbol {
+  id: 0xf586d5b6
+  name: "__traceiter_android_vh_encrypt_page"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x472c69c4
+  type_id: 0x9bcd4ff7
+  full_name: "__traceiter_android_vh_encrypt_page"
+}
+elf_symbol {
+  id: 0x1f554c2a
+  name: "__traceiter_android_vh_exit_signal"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfe0cd247
+  type_id: 0x9bdbdcc4
+  full_name: "__traceiter_android_vh_exit_signal"
+}
+elf_symbol {
+  id: 0x93a4717b
+  name: "__traceiter_android_vh_file_is_tiny_bypass"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdd53f9c7
+  type_id: 0x9a1e34e7
+  full_name: "__traceiter_android_vh_file_is_tiny_bypass"
+}
+elf_symbol {
+  id: 0x5ecff02f
+  name: "__traceiter_android_vh_free_task"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcdfba62b
+  type_id: 0x9bdbdcc4
+  full_name: "__traceiter_android_vh_free_task"
+}
+elf_symbol {
+  id: 0xe3ce1f52
+  name: "__traceiter_android_vh_free_user"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x193e5eaf
+  type_id: 0x9bcfc1f5
+  full_name: "__traceiter_android_vh_free_user"
+}
+elf_symbol {
+  id: 0x3272ce60
+  name: "__traceiter_android_vh_freq_qos_add_request"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5410b087
+  type_id: 0x9bfe0b50
+  full_name: "__traceiter_android_vh_freq_qos_add_request"
+}
+elf_symbol {
+  id: 0x4d900d32
+  name: "__traceiter_android_vh_freq_qos_remove_request"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf0577e2e
+  type_id: 0x9b0b9af5
+  full_name: "__traceiter_android_vh_freq_qos_remove_request"
+}
+elf_symbol {
+  id: 0xe6eff83f
+  name: "__traceiter_android_vh_freq_qos_update_request"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7d370e75
+  type_id: 0x9b1252c1
+  full_name: "__traceiter_android_vh_freq_qos_update_request"
+}
+elf_symbol {
+  id: 0xe172d11a
+  name: "__traceiter_android_vh_ftrace_dump_buffer"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x47509209
+  type_id: 0x9ba9d798
+  full_name: "__traceiter_android_vh_ftrace_dump_buffer"
+}
+elf_symbol {
+  id: 0x0daa4221
+  name: "__traceiter_android_vh_ftrace_format_check"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8f89ea93
+  type_id: 0x9be885da
+  full_name: "__traceiter_android_vh_ftrace_format_check"
+}
+elf_symbol {
+  id: 0xfcf37c56
+  name: "__traceiter_android_vh_ftrace_oops_enter"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1f2a1cc1
+  type_id: 0x9be885da
+  full_name: "__traceiter_android_vh_ftrace_oops_enter"
+}
+elf_symbol {
+  id: 0x9eec9c93
+  name: "__traceiter_android_vh_ftrace_oops_exit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x351f4988
+  type_id: 0x9be885da
+  full_name: "__traceiter_android_vh_ftrace_oops_exit"
+}
+elf_symbol {
+  id: 0xf9ce3d98
+  name: "__traceiter_android_vh_ftrace_size_check"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd210b7ec
+  type_id: 0x9b661c0a
+  full_name: "__traceiter_android_vh_ftrace_size_check"
+}
+elf_symbol {
+  id: 0x494c2e7a
+  name: "__traceiter_android_vh_futex_sleep_start"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x01b1c648
+  type_id: 0x9bdbdcc4
+  full_name: "__traceiter_android_vh_futex_sleep_start"
+}
+elf_symbol {
+  id: 0x79670e34
+  name: "__traceiter_android_vh_futex_wait_end"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x28d3c668
+  type_id: 0x9a8bedf1
+  full_name: "__traceiter_android_vh_futex_wait_end"
+}
+elf_symbol {
+  id: 0x4f81fc38
+  name: "__traceiter_android_vh_futex_wait_start"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5c2035d3
+  type_id: 0x9a8bedf1
+  full_name: "__traceiter_android_vh_futex_wait_start"
+}
+elf_symbol {
+  id: 0xff623c2f
+  name: "__traceiter_android_vh_futex_wake_this"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf26a5625
+  type_id: 0x9a2b6ade
+  full_name: "__traceiter_android_vh_futex_wake_this"
+}
+elf_symbol {
+  id: 0x7fef736f
+  name: "__traceiter_android_vh_futex_wake_traverse_plist"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x326bf790
+  type_id: 0x9b2f1182
+  full_name: "__traceiter_android_vh_futex_wake_traverse_plist"
+}
+elf_symbol {
+  id: 0x9fe60f0c
+  name: "__traceiter_android_vh_futex_wake_up_q_finish"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0ba80ee0
+  type_id: 0x9a2af11b
+  full_name: "__traceiter_android_vh_futex_wake_up_q_finish"
+}
+elf_symbol {
+  id: 0x83b45f32
+  name: "__traceiter_android_vh_get_page_wmark"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcd47c746
+  type_id: 0x9ab83ca3
+  full_name: "__traceiter_android_vh_get_page_wmark"
+}
+elf_symbol {
+  id: 0x1df03151
+  name: "__traceiter_android_vh_get_thermal_zone_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x14c12008
+  type_id: 0x9b342f25
+  full_name: "__traceiter_android_vh_get_thermal_zone_device"
+}
+elf_symbol {
+  id: 0x88586647
+  name: "__traceiter_android_vh_gic_v3_suspend"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc672e9e2
+  type_id: 0x9b1477ea
+  full_name: "__traceiter_android_vh_gic_v3_suspend"
+}
+elf_symbol {
+  id: 0xdb6662e8
+  name: "__traceiter_android_vh_ignore_dmabuf_vmap_bounds"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9f5c22af
+  type_id: 0x9ba8e976
+  full_name: "__traceiter_android_vh_ignore_dmabuf_vmap_bounds"
+}
+elf_symbol {
+  id: 0x64c2fe7a
+  name: "__traceiter_android_vh_init_aes_encrypt"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2f55d223
+  type_id: 0x9bcd4ff7
+  full_name: "__traceiter_android_vh_init_aes_encrypt"
+}
+elf_symbol {
+  id: 0x4b67a5dc
+  name: "__traceiter_android_vh_iommu_iovad_alloc_iova"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x18ec82ab
+  type_id: 0x9baa8508
+  full_name: "__traceiter_android_vh_iommu_iovad_alloc_iova"
+}
+elf_symbol {
+  id: 0x3684a257
+  name: "__traceiter_android_vh_iommu_iovad_free_iova"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x20950205
+  type_id: 0x9b6a728b
+  full_name: "__traceiter_android_vh_iommu_iovad_free_iova"
+}
+elf_symbol {
+  id: 0x7ee652cd
+  name: "__traceiter_android_vh_ipi_stop"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x08c5d140
+  type_id: 0x9bab32de
+  full_name: "__traceiter_android_vh_ipi_stop"
+}
+elf_symbol {
+  id: 0x0bf41403
+  name: "__traceiter_android_vh_irqtime_account_process_tick"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd135e797
+  type_id: 0x9bd1d928
+  full_name: "__traceiter_android_vh_irqtime_account_process_tick"
+}
+elf_symbol {
+  id: 0x4dca46cc
+  name: "__traceiter_android_vh_is_fpsimd_save"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xad2ed0c7
+  type_id: 0x9bdc9aae
+  full_name: "__traceiter_android_vh_is_fpsimd_save"
+}
+elf_symbol {
+  id: 0xf83fbd26
+  name: "__traceiter_android_vh_jiffies_update"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x67d76d04
+  type_id: 0x9bcd4ff7
+  full_name: "__traceiter_android_vh_jiffies_update"
+}
+elf_symbol {
+  id: 0x18fde973
+  name: "__traceiter_android_vh_kswapd_per_node"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa5f312c0
+  type_id: 0x9a36ff29
+  full_name: "__traceiter_android_vh_kswapd_per_node"
+}
+elf_symbol {
+  id: 0xfb6a92a8
+  name: "__traceiter_android_vh_madvise_cold_pageout_skip"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdac41466
+  type_id: 0x9b87e63f
+  full_name: "__traceiter_android_vh_madvise_cold_pageout_skip"
+}
+elf_symbol {
+  id: 0xa94ef105
+  name: "__traceiter_android_vh_madvise_pageout_swap_entry"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xccf2fc55
+  type_id: 0x9b2a2afd
+  full_name: "__traceiter_android_vh_madvise_pageout_swap_entry"
+}
+elf_symbol {
+  id: 0x0e1f9e23
+  name: "__traceiter_android_vh_madvise_swapin_walk_pmd_entry"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x54cccb52
+  type_id: 0x9b33e2c9
+  full_name: "__traceiter_android_vh_madvise_swapin_walk_pmd_entry"
+}
+elf_symbol {
+  id: 0x61ea12b8
+  name: "__traceiter_android_vh_map_util_freq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x81684ca5
+  type_id: 0x9b6e7eec
+  full_name: "__traceiter_android_vh_map_util_freq"
+}
+elf_symbol {
+  id: 0x1bfed9f9
+  name: "__traceiter_android_vh_mem_cgroup_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x695869bc
+  type_id: 0x9bdad4db
+  full_name: "__traceiter_android_vh_mem_cgroup_alloc"
+}
+elf_symbol {
+  id: 0x27757c9a
+  name: "__traceiter_android_vh_mem_cgroup_css_offline"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x18f3770e
+  type_id: 0x9b04b788
+  full_name: "__traceiter_android_vh_mem_cgroup_css_offline"
+}
+elf_symbol {
+  id: 0xb832c560
+  name: "__traceiter_android_vh_mem_cgroup_css_online"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x70724254
+  type_id: 0x9b04b788
+  full_name: "__traceiter_android_vh_mem_cgroup_css_online"
+}
+elf_symbol {
+  id: 0x96b60e0b
+  name: "__traceiter_android_vh_mem_cgroup_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x73d2ab43
+  type_id: 0x9bdad4db
+  full_name: "__traceiter_android_vh_mem_cgroup_free"
+}
+elf_symbol {
+  id: 0x3431d426
+  name: "__traceiter_android_vh_mem_cgroup_id_remove"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3800bd9c
+  type_id: 0x9bdad4db
+  full_name: "__traceiter_android_vh_mem_cgroup_id_remove"
+}
+elf_symbol {
+  id: 0x8c174a7d
+  name: "__traceiter_android_vh_meminfo_cache_adjust"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3a3c7b45
+  type_id: 0x9bb68fe1
+  full_name: "__traceiter_android_vh_meminfo_cache_adjust"
+}
+elf_symbol {
+  id: 0xe44dacb1
+  name: "__traceiter_android_vh_mmap_region"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x08c8e958
+  type_id: 0x9b8b2a3f
+  full_name: "__traceiter_android_vh_mmap_region"
+}
+elf_symbol {
+  id: 0x5612c9d1
+  name: "__traceiter_android_vh_mmput"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfda05f64
+  type_id: 0x9bc3617d
+  full_name: "__traceiter_android_vh_mmput"
+}
+elf_symbol {
+  id: 0xa77effd1
+  name: "__traceiter_android_vh_modify_scan_control"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaf1f561d
+  type_id: 0x9b163bb4
+  full_name: "__traceiter_android_vh_modify_scan_control"
+}
+elf_symbol {
+  id: 0xb7624cbd
+  name: "__traceiter_android_vh_modify_thermal_request_freq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd7faa99a
+  type_id: 0x9ba851af
+  full_name: "__traceiter_android_vh_modify_thermal_request_freq"
+}
+elf_symbol {
+  id: 0x29785770
+  name: "__traceiter_android_vh_modify_thermal_target_freq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x65229f40
+  type_id: 0x9baf3eaf
+  full_name: "__traceiter_android_vh_modify_thermal_target_freq"
+}
+elf_symbol {
+  id: 0x306a6019
+  name: "__traceiter_android_vh_mpam_set"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf0b25d2a
+  type_id: 0x9bdc9aae
+  full_name: "__traceiter_android_vh_mpam_set"
+}
+elf_symbol {
+  id: 0xb1c564a3
+  name: "__traceiter_android_vh_mutex_can_spin_on_owner"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x55cc62c7
+  type_id: 0x9b26efe4
+  full_name: "__traceiter_android_vh_mutex_can_spin_on_owner"
+}
+elf_symbol {
+  id: 0xacfcb454
+  name: "__traceiter_android_vh_mutex_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd4ab78cf
+  type_id: 0x9b2239e7
+  full_name: "__traceiter_android_vh_mutex_init"
+}
+elf_symbol {
+  id: 0x17b175ff
+  name: "__traceiter_android_vh_mutex_opt_spin_finish"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x288b14b4
+  type_id: 0x9b396630
+  full_name: "__traceiter_android_vh_mutex_opt_spin_finish"
+}
+elf_symbol {
+  id: 0x2a856841
+  name: "__traceiter_android_vh_mutex_opt_spin_start"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0fd7dde3
+  type_id: 0x9b26077c
+  full_name: "__traceiter_android_vh_mutex_opt_spin_start"
+}
+elf_symbol {
+  id: 0x0b2ba11b
+  name: "__traceiter_android_vh_mutex_unlock_slowpath"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe350fdab
+  type_id: 0x9b2239e7
+  full_name: "__traceiter_android_vh_mutex_unlock_slowpath"
+}
+elf_symbol {
+  id: 0xe17999f4
+  name: "__traceiter_android_vh_mutex_wait_finish"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb94345e6
+  type_id: 0x9b2239e7
+  full_name: "__traceiter_android_vh_mutex_wait_finish"
+}
+elf_symbol {
+  id: 0x721b87b7
+  name: "__traceiter_android_vh_mutex_wait_start"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x717d1bd1
+  type_id: 0x9b2239e7
+  full_name: "__traceiter_android_vh_mutex_wait_start"
+}
+elf_symbol {
+  id: 0xacaadcc9
+  name: "__traceiter_android_vh_page_add_new_anon_rmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb0aec975
+  type_id: 0x9bb7fe1c
+  full_name: "__traceiter_android_vh_page_add_new_anon_rmap"
+}
+elf_symbol {
+  id: 0x5983841b
+  name: "__traceiter_android_vh_post_image_save"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x119a769b
+  type_id: 0x988b4266
+  full_name: "__traceiter_android_vh_post_image_save"
+}
+elf_symbol {
+  id: 0x7d499dab
+  name: "__traceiter_android_vh_printk_hotplug"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5728d98f
+  type_id: 0x9be2da56
+  full_name: "__traceiter_android_vh_printk_hotplug"
+}
+elf_symbol {
+  id: 0xa09f7a4b
+  name: "__traceiter_android_vh_process_madvise_end"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x783ea6a8
+  type_id: 0x9a3cc1e8
+  full_name: "__traceiter_android_vh_process_madvise_end"
+}
+elf_symbol {
+  id: 0x574e7b58
+  name: "__traceiter_android_vh_psi_event"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb341226f
+  type_id: 0x9b9df54c
+  full_name: "__traceiter_android_vh_psi_event"
+}
+elf_symbol {
+  id: 0xf2c39651
+  name: "__traceiter_android_vh_psi_group"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd0e8527c
+  type_id: 0x9b0b30ec
+  full_name: "__traceiter_android_vh_psi_group"
+}
+elf_symbol {
+  id: 0x93303c51
+  name: "__traceiter_android_vh_ptype_head"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x009eb05f
+  type_id: 0x9b49a977
+  full_name: "__traceiter_android_vh_ptype_head"
+}
+elf_symbol {
+  id: 0x7d069e91
+  name: "__traceiter_android_vh_record_mutex_lock_starttime"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x36ac68b3
+  type_id: 0x9bd7019d
+  full_name: "__traceiter_android_vh_record_mutex_lock_starttime"
+}
+elf_symbol {
+  id: 0x0fa39b81
+  name: "__traceiter_android_vh_record_pcpu_rwsem_starttime"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc9c8706e
+  type_id: 0x9bd7019d
+  full_name: "__traceiter_android_vh_record_pcpu_rwsem_starttime"
+}
+elf_symbol {
+  id: 0x92518ec5
+  name: "__traceiter_android_vh_record_rtmutex_lock_starttime"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3b7d64fb
+  type_id: 0x9bd7019d
+  full_name: "__traceiter_android_vh_record_rtmutex_lock_starttime"
+}
+elf_symbol {
+  id: 0x9792c22e
+  name: "__traceiter_android_vh_record_rwsem_lock_starttime"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbbb27f56
+  type_id: 0x9bd7019d
+  full_name: "__traceiter_android_vh_record_rwsem_lock_starttime"
+}
+elf_symbol {
+  id: 0xcef5d79f
+  name: "__traceiter_android_vh_rproc_recovery"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x091abb8e
+  type_id: 0x9b08a261
+  full_name: "__traceiter_android_vh_rproc_recovery"
+}
+elf_symbol {
+  id: 0x91384eff
+  name: "__traceiter_android_vh_rproc_recovery_set"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb63695c9
+  type_id: 0x9b08a261
+  full_name: "__traceiter_android_vh_rproc_recovery_set"
+}
+elf_symbol {
+  id: 0x3ef508a2
+  name: "__traceiter_android_vh_rtmutex_wait_finish"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x29bd9cc4
+  type_id: 0x9beff51f
+  full_name: "__traceiter_android_vh_rtmutex_wait_finish"
+}
+elf_symbol {
+  id: 0xfb1b8d64
+  name: "__traceiter_android_vh_rtmutex_wait_start"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd2344f4b
+  type_id: 0x9beff51f
+  full_name: "__traceiter_android_vh_rtmutex_wait_start"
+}
+elf_symbol {
+  id: 0x5858f827
+  name: "__traceiter_android_vh_rwsem_can_spin_on_owner"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xea47bf87
+  type_id: 0x9ba93092
+  full_name: "__traceiter_android_vh_rwsem_can_spin_on_owner"
+}
+elf_symbol {
+  id: 0xb1847a6f
+  name: "__traceiter_android_vh_rwsem_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xce4ae038
+  type_id: 0x9bad4369
+  full_name: "__traceiter_android_vh_rwsem_init"
+}
+elf_symbol {
+  id: 0x958d8cdb
+  name: "__traceiter_android_vh_rwsem_opt_spin_finish"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4e410cdc
+  type_id: 0x9bb61cbe
+  full_name: "__traceiter_android_vh_rwsem_opt_spin_finish"
+}
+elf_symbol {
+  id: 0xfde8086a
+  name: "__traceiter_android_vh_rwsem_opt_spin_start"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x901addbf
+  type_id: 0x9ba966ad
+  full_name: "__traceiter_android_vh_rwsem_opt_spin_start"
+}
+elf_symbol {
+  id: 0xbffefc2b
+  name: "__traceiter_android_vh_rwsem_read_wait_finish"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfa305911
+  type_id: 0x9bad4369
+  full_name: "__traceiter_android_vh_rwsem_read_wait_finish"
+}
+elf_symbol {
+  id: 0x3d83999a
+  name: "__traceiter_android_vh_rwsem_read_wait_start"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x608da8a2
+  type_id: 0x9bad4369
+  full_name: "__traceiter_android_vh_rwsem_read_wait_start"
+}
+elf_symbol {
+  id: 0xf7bca936
+  name: "__traceiter_android_vh_rwsem_wake"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7a813da7
+  type_id: 0x9bad4369
+  full_name: "__traceiter_android_vh_rwsem_wake"
+}
+elf_symbol {
+  id: 0x6fe41dd1
+  name: "__traceiter_android_vh_rwsem_wake_finish"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbd987012
+  type_id: 0x9bad4369
+  full_name: "__traceiter_android_vh_rwsem_wake_finish"
+}
+elf_symbol {
+  id: 0x7945e8fa
+  name: "__traceiter_android_vh_rwsem_write_finished"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd61e47bf
+  type_id: 0x9bad4369
+  full_name: "__traceiter_android_vh_rwsem_write_finished"
+}
+elf_symbol {
+  id: 0x93333e39
+  name: "__traceiter_android_vh_rwsem_write_wait_finish"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x86904185
+  type_id: 0x9bad4369
+  full_name: "__traceiter_android_vh_rwsem_write_wait_finish"
+}
+elf_symbol {
+  id: 0x947bd437
+  name: "__traceiter_android_vh_rwsem_write_wait_start"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1c7a8b6c
+  type_id: 0x9bad4369
+  full_name: "__traceiter_android_vh_rwsem_write_wait_start"
+}
+elf_symbol {
+  id: 0xbdbb0c65
+  name: "__traceiter_android_vh_save_cpu_resume"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x442cc2a0
+  type_id: 0x9b33517a
+  full_name: "__traceiter_android_vh_save_cpu_resume"
+}
+elf_symbol {
+  id: 0xa1325610
+  name: "__traceiter_android_vh_save_hib_resume_bdev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x45a8d818
+  type_id: 0x9b9f0206
+  full_name: "__traceiter_android_vh_save_hib_resume_bdev"
+}
+elf_symbol {
+  id: 0x3a4e20d6
+  name: "__traceiter_android_vh_sched_pelt_multiplier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb77c8f2d
+  type_id: 0x9aa883c2
+  full_name: "__traceiter_android_vh_sched_pelt_multiplier"
+}
+elf_symbol {
+  id: 0x237634b3
+  name: "__traceiter_android_vh_sched_setaffinity_early"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xee0ea1fa
+  type_id: 0x9bd7d84b
+  full_name: "__traceiter_android_vh_sched_setaffinity_early"
+}
+elf_symbol {
+  id: 0xb5ed74f6
+  name: "__traceiter_android_vh_sched_show_task"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xda7aab9a
+  type_id: 0x9bdbdcc4
+  full_name: "__traceiter_android_vh_sched_show_task"
+}
+elf_symbol {
+  id: 0xedb34a44
+  name: "__traceiter_android_vh_sched_stat_runtime_rt"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9efad1b8
+  type_id: 0x9bff5408
+  full_name: "__traceiter_android_vh_sched_stat_runtime_rt"
+}
+elf_symbol {
+  id: 0xb841c45e
+  name: "__traceiter_android_vh_scheduler_tick"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb4afabfc
+  type_id: 0x9b17b01e
+  full_name: "__traceiter_android_vh_scheduler_tick"
+}
+elf_symbol {
+  id: 0xaa3f6a65
+  name: "__traceiter_android_vh_set_wake_flags"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb592ac11
+  type_id: 0x9be4260e
+  full_name: "__traceiter_android_vh_set_wake_flags"
+}
+elf_symbol {
+  id: 0xa2fe718f
+  name: "__traceiter_android_vh_setscheduler_uclamp"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb0b8490a
+  type_id: 0x9bc302e5
+  full_name: "__traceiter_android_vh_setscheduler_uclamp"
+}
+elf_symbol {
+  id: 0xe828d15b
+  name: "__traceiter_android_vh_should_continue_reclaim"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x699825d3
+  type_id: 0x9b1657a8
+  full_name: "__traceiter_android_vh_should_continue_reclaim"
+}
+elf_symbol {
+  id: 0x4d31a413
+  name: "__traceiter_android_vh_show_mem"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1d424b7d
+  type_id: 0x9ab24357
+  full_name: "__traceiter_android_vh_show_mem"
+}
+elf_symbol {
+  id: 0xe7f6f975
+  name: "__traceiter_android_vh_show_resume_epoch_val"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x80932910
+  type_id: 0x99e736ad
+  full_name: "__traceiter_android_vh_show_resume_epoch_val"
+}
+elf_symbol {
+  id: 0x78accdce
+  name: "__traceiter_android_vh_show_smap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf2516177
+  type_id: 0x9bba31a8
+  full_name: "__traceiter_android_vh_show_smap"
+}
+elf_symbol {
+  id: 0x6d9f8b13
+  name: "__traceiter_android_vh_show_suspend_epoch_val"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x01c84167
+  type_id: 0x99c3be61
+  full_name: "__traceiter_android_vh_show_suspend_epoch_val"
+}
+elf_symbol {
+  id: 0x709279fd
+  name: "__traceiter_android_vh_shrink_node_memcgs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2907a08b
+  type_id: 0x9bdea720
+  full_name: "__traceiter_android_vh_shrink_node_memcgs"
+}
+elf_symbol {
+  id: 0xdfd06b97
+  name: "__traceiter_android_vh_shrink_slab_bypass"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa0334e59
+  type_id: 0x987085c9
+  full_name: "__traceiter_android_vh_shrink_slab_bypass"
+}
+elf_symbol {
+  id: 0x69c3749b
+  name: "__traceiter_android_vh_si_mem_available_adjust"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x599e6b0b
+  type_id: 0x9bb68fe1
+  full_name: "__traceiter_android_vh_si_mem_available_adjust"
+}
+elf_symbol {
+  id: 0x3d0fc76c
+  name: "__traceiter_android_vh_si_meminfo_adjust"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc3c83350
+  type_id: 0x9bb71cb9
+  full_name: "__traceiter_android_vh_si_meminfo_adjust"
+}
+elf_symbol {
+  id: 0x8f7ad177
+  name: "__traceiter_android_vh_skip_swap_map_write"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbd855a4b
+  type_id: 0x9be885da
+  full_name: "__traceiter_android_vh_skip_swap_map_write"
+}
+elf_symbol {
+  id: 0x08f4cbb0
+  name: "__traceiter_android_vh_smaps_pte_entry"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x27480679
+  type_id: 0x9b326937
+  full_name: "__traceiter_android_vh_smaps_pte_entry"
+}
+elf_symbol {
+  id: 0x58e7556b
+  name: "__traceiter_android_vh_sync_txn_recvd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8c5fbbc5
+  type_id: 0x9bdc9aae
+  full_name: "__traceiter_android_vh_sync_txn_recvd"
+}
+elf_symbol {
+  id: 0x2ecf85e9
+  name: "__traceiter_android_vh_syscall_prctl_finished"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9870bc3e
+  type_id: 0x9a347f45
+  full_name: "__traceiter_android_vh_syscall_prctl_finished"
+}
+elf_symbol {
+  id: 0x34a01a22
+  name: "__traceiter_android_vh_sysrq_crash"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x40207816
+  type_id: 0x9bcd4ff7
+  full_name: "__traceiter_android_vh_sysrq_crash"
+}
+elf_symbol {
+  id: 0x6befbf23
+  name: "__traceiter_android_vh_thermal_power_cap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x73b88f94
+  type_id: 0x9b4cf2ae
+  full_name: "__traceiter_android_vh_thermal_power_cap"
+}
+elf_symbol {
+  id: 0x226cc38b
+  name: "__traceiter_android_vh_thermal_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc95e644c
+  type_id: 0x9ba9c2f7
+  full_name: "__traceiter_android_vh_thermal_register"
+}
+elf_symbol {
+  id: 0xeecc1529
+  name: "__traceiter_android_vh_thermal_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7a402531
+  type_id: 0x9ba9c2f7
+  full_name: "__traceiter_android_vh_thermal_unregister"
+}
+elf_symbol {
+  id: 0xfeff2e7f
+  name: "__traceiter_android_vh_timer_calc_index"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x110d6b1e
+  type_id: 0x9ab83ca3
+  full_name: "__traceiter_android_vh_timer_calc_index"
+}
+elf_symbol {
+  id: 0x2bc25325
+  name: "__traceiter_android_vh_try_to_freeze_todo"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd1146850
+  type_id: 0x9aa97b5f
+  full_name: "__traceiter_android_vh_try_to_freeze_todo"
+}
+elf_symbol {
+  id: 0x0119fc41
+  name: "__traceiter_android_vh_try_to_freeze_todo_unfrozen"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9ff4afb5
+  type_id: 0x9bdbdcc4
+  full_name: "__traceiter_android_vh_try_to_freeze_todo_unfrozen"
+}
+elf_symbol {
+  id: 0xd9f43028
+  name: "__traceiter_android_vh_try_to_unmap_one"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1e241717
+  type_id: 0x9b2837bd
+  full_name: "__traceiter_android_vh_try_to_unmap_one"
+}
+elf_symbol {
+  id: 0x8a773cc3
+  name: "__traceiter_android_vh_typec_store_partner_src_caps"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf613231e
+  type_id: 0x9bcdbc55
+  full_name: "__traceiter_android_vh_typec_store_partner_src_caps"
+}
+elf_symbol {
+  id: 0x9545623c
+  name: "__traceiter_android_vh_typec_tcpci_override_toggling"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcd3fc09b
+  type_id: 0x9bf779ba
+  full_name: "__traceiter_android_vh_typec_tcpci_override_toggling"
+}
+elf_symbol {
+  id: 0x558490b1
+  name: "__traceiter_android_vh_typec_tcpm_get_timer"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa264e589
+  type_id: 0x9b508c46
+  full_name: "__traceiter_android_vh_typec_tcpm_get_timer"
+}
+elf_symbol {
+  id: 0x8af2b51e
+  name: "__traceiter_android_vh_typec_tcpm_log"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd8a5e0bf
+  type_id: 0x9b538b4c
+  full_name: "__traceiter_android_vh_typec_tcpm_log"
+}
+elf_symbol {
+  id: 0xe31bb308
+  name: "__traceiter_android_vh_ufs_check_int_errors"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfea98e28
+  type_id: 0x9baae9ef
+  full_name: "__traceiter_android_vh_ufs_check_int_errors"
+}
+elf_symbol {
+  id: 0x6a6dc806
+  name: "__traceiter_android_vh_ufs_clock_scaling"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xce9715cc
+  type_id: 0x9bb5868f
+  full_name: "__traceiter_android_vh_ufs_clock_scaling"
+}
+elf_symbol {
+  id: 0xa56348c9
+  name: "__traceiter_android_vh_ufs_compl_command"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0704d014
+  type_id: 0x9bb6c325
+  full_name: "__traceiter_android_vh_ufs_compl_command"
+}
+elf_symbol {
+  id: 0x15f6cf54
+  name: "__traceiter_android_vh_ufs_fill_prdt"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3ebec6eb
+  type_id: 0x9bb7d1e6
+  full_name: "__traceiter_android_vh_ufs_fill_prdt"
+}
+elf_symbol {
+  id: 0xf8832088
+  name: "__traceiter_android_vh_ufs_mcq_abort"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4b86e3dd
+  type_id: 0x9bbe1e7f
+  full_name: "__traceiter_android_vh_ufs_mcq_abort"
+}
+elf_symbol {
+  id: 0x834b91de
+  name: "__traceiter_android_vh_ufs_prepare_command"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x056b84cc
+  type_id: 0x9bb6653f
+  full_name: "__traceiter_android_vh_ufs_prepare_command"
+}
+elf_symbol {
+  id: 0x79a41c1c
+  name: "__traceiter_android_vh_ufs_send_command"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe26f0aea
+  type_id: 0x9bb6c325
+  full_name: "__traceiter_android_vh_ufs_send_command"
+}
+elf_symbol {
+  id: 0x2e0ec34f
+  name: "__traceiter_android_vh_ufs_send_tm_command"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2f930c9d
+  type_id: 0x9ba9e28f
+  full_name: "__traceiter_android_vh_ufs_send_tm_command"
+}
+elf_symbol {
+  id: 0x4f428de5
+  name: "__traceiter_android_vh_ufs_send_uic_command"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe908b495
+  type_id: 0x9bbe6322
+  full_name: "__traceiter_android_vh_ufs_send_uic_command"
+}
+elf_symbol {
+  id: 0x810f6abf
+  name: "__traceiter_android_vh_ufs_update_sdev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5afd339e
+  type_id: 0x9b3a4e29
+  full_name: "__traceiter_android_vh_ufs_update_sdev"
+}
+elf_symbol {
+  id: 0xcc8dcd0c
+  name: "__traceiter_android_vh_ufs_update_sysfs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x68f34378
+  type_id: 0x9bb1b638
+  full_name: "__traceiter_android_vh_ufs_update_sysfs"
+}
+elf_symbol {
+  id: 0xcb4d15f3
+  name: "__traceiter_android_vh_ufs_use_mcq_hooks"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1f4733e3
+  type_id: 0x9bb5c5c3
+  full_name: "__traceiter_android_vh_ufs_use_mcq_hooks"
+}
+elf_symbol {
+  id: 0x6a8145ff
+  name: "__traceiter_android_vh_update_topology_flags_workfn"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf9046f81
+  type_id: 0x9bcd4ff7
+  full_name: "__traceiter_android_vh_update_topology_flags_workfn"
+}
+elf_symbol {
+  id: 0xb0bf7fd6
+  name: "__traceiter_android_vh_watchdog_timer_softlockup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2b06e020
+  type_id: 0x9a32c459
+  full_name: "__traceiter_android_vh_watchdog_timer_softlockup"
+}
+elf_symbol {
+  id: 0x6911084f
+  name: "__traceiter_binder_transaction_received"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x217c764e
+  type_id: 0x9ba51920
+  full_name: "__traceiter_binder_transaction_received"
+}
+elf_symbol {
+  id: 0x8068eeb3
+  name: "__traceiter_block_bio_queue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9e44ef47
+  type_id: 0x9bf93663
+  full_name: "__traceiter_block_bio_queue"
+}
+elf_symbol {
+  id: 0xfdf83a19
+  name: "__traceiter_block_getrq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x62b74f2d
+  type_id: 0x9bf93663
+  full_name: "__traceiter_block_getrq"
+}
+elf_symbol {
+  id: 0x73ba3e80
+  name: "__traceiter_block_rq_complete"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7a6ce1a8
+  type_id: 0x9bca5e70
+  full_name: "__traceiter_block_rq_complete"
+}
+elf_symbol {
+  id: 0xc4cbd22c
+  name: "__traceiter_block_rq_insert"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x04669f2f
+  type_id: 0x9bd5b265
+  full_name: "__traceiter_block_rq_insert"
+}
+elf_symbol {
+  id: 0x18fb5d72
+  name: "__traceiter_block_rq_issue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8f26a1f1
+  type_id: 0x9bd5b265
+  full_name: "__traceiter_block_rq_issue"
+}
+elf_symbol {
+  id: 0x77d40b1c
+  name: "__traceiter_block_rq_merge"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb8128d5f
+  type_id: 0x9bd5b265
+  full_name: "__traceiter_block_rq_merge"
+}
+elf_symbol {
+  id: 0xdd24ab36
+  name: "__traceiter_block_rq_requeue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x54906fc6
+  type_id: 0x9bd5b265
+  full_name: "__traceiter_block_rq_requeue"
+}
+elf_symbol {
+  id: 0xce25d5be
+  name: "__traceiter_clock_set_rate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa45eb358
+  type_id: 0x9b478ffb
+  full_name: "__traceiter_clock_set_rate"
+}
+elf_symbol {
+  id: 0x7443ed9a
+  name: "__traceiter_console"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb0e7ab1f
+  type_id: 0x9b6af5ed
+  full_name: "__traceiter_console"
+}
+elf_symbol {
+  id: 0x58dd6501
+  name: "__traceiter_cpu_frequency"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xead3e41b
+  type_id: 0x9aa8cea2
+  full_name: "__traceiter_cpu_frequency"
+}
+elf_symbol {
+  id: 0x1643e606
+  name: "__traceiter_cpu_frequency_limits"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x15586e74
+  type_id: 0x9ba9c2f7
+  full_name: "__traceiter_cpu_frequency_limits"
+}
+elf_symbol {
+  id: 0x4576397a
+  name: "__traceiter_cpu_idle"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x53d7c01e
+  type_id: 0x9aa8cea2
+  full_name: "__traceiter_cpu_idle"
+}
+elf_symbol {
+  id: 0x7e705ab7
+  name: "__traceiter_device_pm_callback_end"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x79e259d3
+  type_id: 0x9bbf11b2
+  full_name: "__traceiter_device_pm_callback_end"
+}
+elf_symbol {
+  id: 0x7b03aae7
+  name: "__traceiter_device_pm_callback_start"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xca0b5c26
+  type_id: 0x9ba8c128
+  full_name: "__traceiter_device_pm_callback_start"
+}
+elf_symbol {
+  id: 0x92373f85
+  name: "__traceiter_dma_fence_emit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x059e1482
+  type_id: 0x9ba39408
+  full_name: "__traceiter_dma_fence_emit"
+}
+elf_symbol {
+  id: 0x104ffeec
+  name: "__traceiter_gpu_mem_total"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x448af6f4
+  type_id: 0x9bd831d3
+  full_name: "__traceiter_gpu_mem_total"
+}
+elf_symbol {
+  id: 0x6d4f31c4
+  name: "__traceiter_hrtimer_expire_entry"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1fbe9aad
+  type_id: 0x9b4b35cf
+  full_name: "__traceiter_hrtimer_expire_entry"
+}
+elf_symbol {
+  id: 0xcf61fd25
+  name: "__traceiter_hrtimer_expire_exit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x444a8c3c
+  type_id: 0x9b488d81
+  full_name: "__traceiter_hrtimer_expire_exit"
+}
+elf_symbol {
+  id: 0xe56422fc
+  name: "__traceiter_ipi_entry"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x03411569
+  type_id: 0x9b57f8b7
+  full_name: "__traceiter_ipi_entry"
+}
+elf_symbol {
+  id: 0xceea494c
+  name: "__traceiter_ipi_exit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbb7a853b
+  type_id: 0x9b57f8b7
+  full_name: "__traceiter_ipi_exit"
+}
+elf_symbol {
+  id: 0x773b00db
+  name: "__traceiter_ipi_raise"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb82d26c2
+  type_id: 0x9b64054e
+  full_name: "__traceiter_ipi_raise"
+}
+elf_symbol {
+  id: 0x32248e2a
+  name: "__traceiter_irq_handler_entry"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x21b933a2
+  type_id: 0x9a3e338e
+  full_name: "__traceiter_irq_handler_entry"
+}
+elf_symbol {
+  id: 0xe873a0cb
+  name: "__traceiter_irq_handler_exit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2ee8681e
+  type_id: 0x9a3faf0d
+  full_name: "__traceiter_irq_handler_exit"
+}
+elf_symbol {
+  id: 0x101ec6c5
+  name: "__traceiter_kfree_skb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7c293d40
+  type_id: 0x9bbccaf3
+  full_name: "__traceiter_kfree_skb"
+}
+elf_symbol {
+  id: 0x5c33446d
+  name: "__traceiter_mmap_lock_acquire_returned"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4a38703e
+  type_id: 0x9bcd4bf2
+  full_name: "__traceiter_mmap_lock_acquire_returned"
+}
+elf_symbol {
+  id: 0x423dad0f
+  name: "__traceiter_mmap_lock_released"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3f142879
+  type_id: 0x9bcd50ad
+  full_name: "__traceiter_mmap_lock_released"
+}
+elf_symbol {
+  id: 0xc630c439
+  name: "__traceiter_mmap_lock_start_locking"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x860b8edd
+  type_id: 0x9bcd50ad
+  full_name: "__traceiter_mmap_lock_start_locking"
+}
+elf_symbol {
+  id: 0x3e69b303
+  name: "__traceiter_pelt_rt_tp"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x866c127e
+  type_id: 0x9b17b01e
+  full_name: "__traceiter_pelt_rt_tp"
+}
+elf_symbol {
+  id: 0x7f1a363f
+  name: "__traceiter_pelt_se_tp"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x56fb997c
+  type_id: 0x9b8f15f1
+  full_name: "__traceiter_pelt_se_tp"
+}
+elf_symbol {
+  id: 0x2c11fea4
+  name: "__traceiter_rwmmio_post_read"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe5e790e4
+  type_id: 0x9b6cf0a4
+  full_name: "__traceiter_rwmmio_post_read"
+}
+elf_symbol {
+  id: 0x45e62871
+  name: "__traceiter_rwmmio_read"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbeb7b7d3
+  type_id: 0x9b6e1aa4
+  full_name: "__traceiter_rwmmio_read"
+}
+elf_symbol {
+  id: 0x85a11e58
+  name: "__traceiter_rwmmio_write"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x58fa50c0
+  type_id: 0x9b6cf0df
+  full_name: "__traceiter_rwmmio_write"
+}
+elf_symbol {
+  id: 0xb614ca1f
+  name: "__traceiter_sched_overutilized_tp"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x53e5ed7e
+  type_id: 0x9b506e5c
+  full_name: "__traceiter_sched_overutilized_tp"
+}
+elf_symbol {
+  id: 0x2de60b3e
+  name: "__traceiter_sched_stat_blocked"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc7803553
+  type_id: 0x9bff5408
+  full_name: "__traceiter_sched_stat_blocked"
+}
+elf_symbol {
+  id: 0x9cf075c5
+  name: "__traceiter_sched_stat_iowait"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x72d60583
+  type_id: 0x9bff5408
+  full_name: "__traceiter_sched_stat_iowait"
+}
+elf_symbol {
+  id: 0xf29865b1
+  name: "__traceiter_sched_stat_runtime"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x51c03f6d
+  type_id: 0x9bfd1c84
+  full_name: "__traceiter_sched_stat_runtime"
+}
+elf_symbol {
+  id: 0xa785ee77
+  name: "__traceiter_sched_stat_sleep"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x075f4e0e
+  type_id: 0x9bff5408
+  full_name: "__traceiter_sched_stat_sleep"
+}
+elf_symbol {
+  id: 0x41fdc249
+  name: "__traceiter_sched_stat_wait"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8faa3c47
+  type_id: 0x9bff5408
+  full_name: "__traceiter_sched_stat_wait"
+}
+elf_symbol {
+  id: 0x570f3032
+  name: "__traceiter_sched_switch"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x837ccc37
+  type_id: 0x9a1d6471
+  full_name: "__traceiter_sched_switch"
+}
+elf_symbol {
+  id: 0xc42d0053
+  name: "__traceiter_sched_update_nr_running_tp"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfd425f55
+  type_id: 0x9b0e782a
+  full_name: "__traceiter_sched_update_nr_running_tp"
+}
+elf_symbol {
+  id: 0x20097074
+  name: "__traceiter_sched_waking"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x52a13f40
+  type_id: 0x9bdbdcc4
+  full_name: "__traceiter_sched_waking"
+}
+elf_symbol {
+  id: 0x863777a0
+  name: "__traceiter_suspend_resume"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x05883efb
+  type_id: 0x9b4f857e
+  full_name: "__traceiter_suspend_resume"
+}
+elf_symbol {
+  id: 0xcac5a7d5
+  name: "__traceiter_task_newtask"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb1ce9865
+  type_id: 0x9bd7019d
+  full_name: "__traceiter_task_newtask"
+}
+elf_symbol {
+  id: 0x2dc83a86
+  name: "__traceiter_task_rename"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x10d2356d
+  type_id: 0x9bd458e9
+  full_name: "__traceiter_task_rename"
+}
+elf_symbol {
+  id: 0x961fbab2
+  name: "__traceiter_workqueue_execute_end"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfd7ca165
+  type_id: 0x9bb24250
+  full_name: "__traceiter_workqueue_execute_end"
+}
+elf_symbol {
+  id: 0x09f12012
+  name: "__traceiter_workqueue_execute_start"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6b629b42
+  type_id: 0x9b9ac603
+  full_name: "__traceiter_workqueue_execute_start"
+}
+elf_symbol {
+  id: 0xb3150ce0
+  name: "__traceiter_xdp_exception"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x18a41e69
+  type_id: 0x9b6e0d6b
+  full_name: "__traceiter_xdp_exception"
+}
+elf_symbol {
+  id: 0x34912e21
+  name: "__tracepoint_android_rvh_account_irq"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xf0f46523
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_account_irq"
+}
+elf_symbol {
+  id: 0x4b7a8fd7
+  name: "__tracepoint_android_rvh_after_dequeue_task"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x9ad4f5ba
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_after_dequeue_task"
+}
+elf_symbol {
+  id: 0xcd36f539
+  name: "__tracepoint_android_rvh_after_enqueue_task"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x36d08831
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_after_enqueue_task"
+}
+elf_symbol {
+  id: 0x748c1fd7
+  name: "__tracepoint_android_rvh_arm64_serror_panic"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x3eeb0795
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_arm64_serror_panic"
+}
+elf_symbol {
+  id: 0xaf461bff
+  name: "__tracepoint_android_rvh_audio_usb_offload_disconnect"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xb46edc7c
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_audio_usb_offload_disconnect"
+}
+elf_symbol {
+  id: 0x1e8a7e23
+  name: "__tracepoint_android_rvh_build_perf_domains"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x7ff307b5
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_build_perf_domains"
+}
+elf_symbol {
+  id: 0xfe3875f6
+  name: "__tracepoint_android_rvh_can_migrate_task"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x89ef9455
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_can_migrate_task"
+}
+elf_symbol {
+  id: 0x60b5a917
+  name: "__tracepoint_android_rvh_check_preempt_tick"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xd8871c3f
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_check_preempt_tick"
+}
+elf_symbol {
+  id: 0x1dd402e6
+  name: "__tracepoint_android_rvh_check_preempt_wakeup"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x7e34ad6c
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_check_preempt_wakeup"
+}
+elf_symbol {
+  id: 0x070d1e2a
+  name: "__tracepoint_android_rvh_check_preempt_wakeup_ignore"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xe4c0aab3
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_check_preempt_wakeup_ignore"
+}
+elf_symbol {
+  id: 0xf63515c9
+  name: "__tracepoint_android_rvh_commit_creds"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x3026d92c
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_commit_creds"
+}
+elf_symbol {
+  id: 0xf4fe0429
+  name: "__tracepoint_android_rvh_cpu_cgroup_attach"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xe5107ad0
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_cpu_cgroup_attach"
+}
+elf_symbol {
+  id: 0xb2f08341
+  name: "__tracepoint_android_rvh_cpu_cgroup_online"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x3f3039c2
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_cpu_cgroup_online"
+}
+elf_symbol {
+  id: 0x05576f29
+  name: "__tracepoint_android_rvh_cpu_overutilized"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x29b33046
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_cpu_overutilized"
+}
+elf_symbol {
+  id: 0x9f779ef7
+  name: "__tracepoint_android_rvh_cpufreq_transition"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xda623954
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_cpufreq_transition"
+}
+elf_symbol {
+  id: 0xc53e6388
+  name: "__tracepoint_android_rvh_cpuset_fork"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xa0966112
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_cpuset_fork"
+}
+elf_symbol {
+  id: 0xd9e47a83
+  name: "__tracepoint_android_rvh_ctl_dirty_rate"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x6deafb40
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_ctl_dirty_rate"
+}
+elf_symbol {
+  id: 0x3eb0f084
+  name: "__tracepoint_android_rvh_dequeue_entity"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x5f0191c3
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_dequeue_entity"
+}
+elf_symbol {
+  id: 0x832ab9cf
+  name: "__tracepoint_android_rvh_dequeue_task"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xf992211e
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_dequeue_task"
+}
+elf_symbol {
+  id: 0xaa8affb8
+  name: "__tracepoint_android_rvh_dequeue_task_fair"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x34684643
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_dequeue_task_fair"
+}
+elf_symbol {
+  id: 0x11f903b1
+  name: "__tracepoint_android_rvh_die_kernel_fault"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x33c9af1e
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_die_kernel_fault"
+}
+elf_symbol {
+  id: 0x25e320a3
+  name: "__tracepoint_android_rvh_do_el1_bti"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xdc58b3d9
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_do_el1_bti"
+}
+elf_symbol {
+  id: 0xcd81b300
+  name: "__tracepoint_android_rvh_do_el1_fpac"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xb91a816f
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_do_el1_fpac"
+}
+elf_symbol {
+  id: 0x411e7a56
+  name: "__tracepoint_android_rvh_do_sched_yield"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xe4ee9cad
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_do_sched_yield"
+}
+elf_symbol {
+  id: 0xcfcbb846
+  name: "__tracepoint_android_rvh_do_sea"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x23501356
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_do_sea"
+}
+elf_symbol {
+  id: 0x1d7748c4
+  name: "__tracepoint_android_rvh_do_sp_pc_abort"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x1ed564a9
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_do_sp_pc_abort"
+}
+elf_symbol {
+  id: 0x7d9f4fa4
+  name: "__tracepoint_android_rvh_do_undefinstr"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x048a1e8c
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_do_undefinstr"
+}
+elf_symbol {
+  id: 0x82c6c454
+  name: "__tracepoint_android_rvh_effective_cpu_util"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xed9d580e
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_effective_cpu_util"
+}
+elf_symbol {
+  id: 0xf9b36d15
+  name: "__tracepoint_android_rvh_enqueue_entity"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xa9c271c6
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_enqueue_entity"
+}
+elf_symbol {
+  id: 0xbade8646
+  name: "__tracepoint_android_rvh_enqueue_task"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x55965c95
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_enqueue_task"
+}
+elf_symbol {
+  id: 0x395b2a73
+  name: "__tracepoint_android_rvh_enqueue_task_fair"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x6eb0e4b8
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_enqueue_task_fair"
+}
+elf_symbol {
+  id: 0x4a5c5988
+  name: "__tracepoint_android_rvh_entity_tick"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x966e8ae2
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_entity_tick"
+}
+elf_symbol {
+  id: 0xb71e231c
+  name: "__tracepoint_android_rvh_exit_creds"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xe5dee2f1
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_exit_creds"
+}
+elf_symbol {
+  id: 0xb05fc507
+  name: "__tracepoint_android_rvh_find_busiest_group"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x49269776
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_find_busiest_group"
+}
+elf_symbol {
+  id: 0xe0cf8a85
+  name: "__tracepoint_android_rvh_find_busiest_queue"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x7681ac90
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_find_busiest_queue"
+}
+elf_symbol {
+  id: 0x60184478
+  name: "__tracepoint_android_rvh_find_energy_efficient_cpu"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xc762e5b3
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_find_energy_efficient_cpu"
+}
+elf_symbol {
+  id: 0x1a0c7568
+  name: "__tracepoint_android_rvh_find_lowest_rq"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xd1276946
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_find_lowest_rq"
+}
+elf_symbol {
+  id: 0x46cd6685
+  name: "__tracepoint_android_rvh_find_new_ilb"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xad8a8a9b
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_find_new_ilb"
+}
+elf_symbol {
+  id: 0xa6457550
+  name: "__tracepoint_android_rvh_finish_prio_fork"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x33e0a813
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_finish_prio_fork"
+}
+elf_symbol {
+  id: 0xb894fcfc
+  name: "__tracepoint_android_rvh_flush_task"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x97640e4f
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_flush_task"
+}
+elf_symbol {
+  id: 0x555d2f3e
+  name: "__tracepoint_android_rvh_get_nohz_timer_target"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x11bfb9a4
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_get_nohz_timer_target"
+}
+elf_symbol {
+  id: 0x47c27595
+  name: "__tracepoint_android_rvh_gic_v3_set_affinity"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x6ffd12d7
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_gic_v3_set_affinity"
+}
+elf_symbol {
+  id: 0x58127eb8
+  name: "__tracepoint_android_rvh_iommu_alloc_insert_iova"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x8a848d88
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_iommu_alloc_insert_iova"
+}
+elf_symbol {
+  id: 0x0991fcbf
+  name: "__tracepoint_android_rvh_iommu_iovad_init_alloc_algo"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x74057cd0
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_iommu_iovad_init_alloc_algo"
+}
+elf_symbol {
+  id: 0x693af5b0
+  name: "__tracepoint_android_rvh_iommu_limit_align_shift"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xe72e34ff
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_iommu_limit_align_shift"
+}
+elf_symbol {
+  id: 0x59d74b45
+  name: "__tracepoint_android_rvh_iommu_setup_dma_ops"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x2461d175
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_iommu_setup_dma_ops"
+}
+elf_symbol {
+  id: 0x99d57c12
+  name: "__tracepoint_android_rvh_is_cpu_allowed"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xfe153f7a
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_is_cpu_allowed"
+}
+elf_symbol {
+  id: 0x3cb4db49
+  name: "__tracepoint_android_rvh_migrate_queued_task"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x0c5d1185
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_migrate_queued_task"
+}
+elf_symbol {
+  id: 0x3a6f3fb2
+  name: "__tracepoint_android_rvh_mmc_resume"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xa9abf6b0
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_mmc_resume"
+}
+elf_symbol {
+  id: 0x8b0b932d
+  name: "__tracepoint_android_rvh_mmc_suspend"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x1cc48910
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_mmc_suspend"
+}
+elf_symbol {
+  id: 0x62726c6f
+  name: "__tracepoint_android_rvh_new_task_stats"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x798d7748
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_new_task_stats"
+}
+elf_symbol {
+  id: 0xdf21a7cc
+  name: "__tracepoint_android_rvh_override_creds"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xb1fb08b1
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_override_creds"
+}
+elf_symbol {
+  id: 0xeea6bf23
+  name: "__tracepoint_android_rvh_panic_unhandled"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xfb51d5c4
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_panic_unhandled"
+}
+elf_symbol {
+  id: 0x18752990
+  name: "__tracepoint_android_rvh_pick_next_entity"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x99d20b2c
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_pick_next_entity"
+}
+elf_symbol {
+  id: 0x448fc4e4
+  name: "__tracepoint_android_rvh_place_entity"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x8b5c0688
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_place_entity"
+}
+elf_symbol {
+  id: 0x121537db
+  name: "__tracepoint_android_rvh_post_init_entity_util_avg"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xa967c441
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_post_init_entity_util_avg"
+}
+elf_symbol {
+  id: 0x50605d97
+  name: "__tracepoint_android_rvh_prepare_prio_fork"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xadd0283e
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_prepare_prio_fork"
+}
+elf_symbol {
+  id: 0xa5e991f6
+  name: "__tracepoint_android_rvh_psci_cpu_suspend"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xf9b81cca
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_psci_cpu_suspend"
+}
+elf_symbol {
+  id: 0x261c997e
+  name: "__tracepoint_android_rvh_psci_tos_resident_on"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xb163a362
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_psci_tos_resident_on"
+}
+elf_symbol {
+  id: 0x3b6248c1
+  name: "__tracepoint_android_rvh_refrigerator"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xaa020dd1
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_refrigerator"
+}
+elf_symbol {
+  id: 0x18bac297
+  name: "__tracepoint_android_rvh_replace_next_task_fair"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xa95004c7
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_replace_next_task_fair"
+}
+elf_symbol {
+  id: 0x1a849f34
+  name: "__tracepoint_android_rvh_report_bug"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xb68447d7
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_report_bug"
+}
+elf_symbol {
+  id: 0x3f328d3c
+  name: "__tracepoint_android_rvh_revert_creds"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x031591c5
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_revert_creds"
+}
+elf_symbol {
+  id: 0x69e37d02
+  name: "__tracepoint_android_rvh_rtmutex_prepare_setprio"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x7740c625
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_rtmutex_prepare_setprio"
+}
+elf_symbol {
+  id: 0xeda5c5b0
+  name: "__tracepoint_android_rvh_rto_next_cpu"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x81a1754b
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_rto_next_cpu"
+}
+elf_symbol {
+  id: 0x3cd58ada
+  name: "__tracepoint_android_rvh_sched_balance_rt"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xb60d730e
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_sched_balance_rt"
+}
+elf_symbol {
+  id: 0xad77fe31
+  name: "__tracepoint_android_rvh_sched_cpu_dying"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x14e26599
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_sched_cpu_dying"
+}
+elf_symbol {
+  id: 0x9d5d3918
+  name: "__tracepoint_android_rvh_sched_cpu_starting"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xdd953146
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_sched_cpu_starting"
+}
+elf_symbol {
+  id: 0x0b064224
+  name: "__tracepoint_android_rvh_sched_exec"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x39d63958
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_sched_exec"
+}
+elf_symbol {
+  id: 0xdacb8e65
+  name: "__tracepoint_android_rvh_sched_fork"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x62081353
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_sched_fork"
+}
+elf_symbol {
+  id: 0xf04adbae
+  name: "__tracepoint_android_rvh_sched_fork_init"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x2071a467
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_sched_fork_init"
+}
+elf_symbol {
+  id: 0x0093f055
+  name: "__tracepoint_android_rvh_sched_getaffinity"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x945e7963
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_sched_getaffinity"
+}
+elf_symbol {
+  id: 0x5edd0d13
+  name: "__tracepoint_android_rvh_sched_newidle_balance"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xbadefe48
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_sched_newidle_balance"
+}
+elf_symbol {
+  id: 0x8ffb9d8d
+  name: "__tracepoint_android_rvh_sched_nohz_balancer_kick"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x52e58c76
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_sched_nohz_balancer_kick"
+}
+elf_symbol {
+  id: 0x7babd1c5
+  name: "__tracepoint_android_rvh_sched_rebalance_domains"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x1149ef27
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_sched_rebalance_domains"
+}
+elf_symbol {
+  id: 0x43527efa
+  name: "__tracepoint_android_rvh_sched_setaffinity"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x9b40afe0
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_sched_setaffinity"
+}
+elf_symbol {
+  id: 0x51af6212
+  name: "__tracepoint_android_rvh_schedule"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xb6bce8f8
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_schedule"
+}
+elf_symbol {
+  id: 0xa5be18ba
+  name: "__tracepoint_android_rvh_schedule_bug"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x0650a8c4
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_schedule_bug"
+}
+elf_symbol {
+  id: 0x0daed96e
+  name: "__tracepoint_android_rvh_select_fallback_rq"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x65c25846
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_select_fallback_rq"
+}
+elf_symbol {
+  id: 0x3bb904a5
+  name: "__tracepoint_android_rvh_select_task_rq_fair"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x4bfae7d4
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_select_task_rq_fair"
+}
+elf_symbol {
+  id: 0xec4d6758
+  name: "__tracepoint_android_rvh_select_task_rq_rt"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xa1f10509
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_select_task_rq_rt"
+}
+elf_symbol {
+  id: 0x33183ab6
+  name: "__tracepoint_android_rvh_selinux_avc_insert"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x2891acea
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_selinux_avc_insert"
+}
+elf_symbol {
+  id: 0x76b00d41
+  name: "__tracepoint_android_rvh_selinux_avc_lookup"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x95198ed9
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_selinux_avc_lookup"
+}
+elf_symbol {
+  id: 0x9d9301cb
+  name: "__tracepoint_android_rvh_selinux_avc_node_delete"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x080dcc20
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_selinux_avc_node_delete"
+}
+elf_symbol {
+  id: 0xef003404
+  name: "__tracepoint_android_rvh_selinux_avc_node_replace"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xff9e1a23
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_selinux_avc_node_replace"
+}
+elf_symbol {
+  id: 0x78daed28
+  name: "__tracepoint_android_rvh_selinux_is_initialized"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x5cee2186
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_selinux_is_initialized"
+}
+elf_symbol {
+  id: 0x6d8ed263
+  name: "__tracepoint_android_rvh_set_balance_anon_file_reclaim"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x996cfb08
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_set_balance_anon_file_reclaim"
+}
+elf_symbol {
+  id: 0x4bc6b114
+  name: "__tracepoint_android_rvh_set_cpus_allowed_by_task"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xb9f0b1bc
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_set_cpus_allowed_by_task"
+}
+elf_symbol {
+  id: 0x93751239
+  name: "__tracepoint_android_rvh_set_cpus_allowed_comm"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xb2badd4a
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_set_cpus_allowed_comm"
+}
+elf_symbol {
+  id: 0x70131d40
+  name: "__tracepoint_android_rvh_set_gfp_zone_flags"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xe14bb8a9
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_set_gfp_zone_flags"
+}
+elf_symbol {
+  id: 0xda52fd4f
+  name: "__tracepoint_android_rvh_set_module_core_rw_nx"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xfcc936fc
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_set_module_core_rw_nx"
+}
+elf_symbol {
+  id: 0x86f03c84
+  name: "__tracepoint_android_rvh_set_module_init_rw_nx"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x6f20e85f
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_set_module_init_rw_nx"
+}
+elf_symbol {
+  id: 0x498fea3f
+  name: "__tracepoint_android_rvh_set_module_permit_after_init"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x00253a61
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_set_module_permit_after_init"
+}
+elf_symbol {
+  id: 0xf79a8829
+  name: "__tracepoint_android_rvh_set_module_permit_before_init"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xb03e867d
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_set_module_permit_before_init"
+}
+elf_symbol {
+  id: 0xde470f79
+  name: "__tracepoint_android_rvh_set_readahead_gfp_mask"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xf407ff54
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_set_readahead_gfp_mask"
+}
+elf_symbol {
+  id: 0xc5049f7c
+  name: "__tracepoint_android_rvh_set_task_cpu"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x0b7e6c73
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_set_task_cpu"
+}
+elf_symbol {
+  id: 0x42fff08e
+  name: "__tracepoint_android_rvh_set_user_nice"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x4529c9f1
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_set_user_nice"
+}
+elf_symbol {
+  id: 0xe48123a4
+  name: "__tracepoint_android_rvh_setscheduler"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xfa177030
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_setscheduler"
+}
+elf_symbol {
+  id: 0x00b7ed82
+  name: "__tracepoint_android_rvh_shmem_get_folio"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xa82a9fd7
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_shmem_get_folio"
+}
+elf_symbol {
+  id: 0xe8cacf26
+  name: "__tracepoint_android_rvh_show_max_freq"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xc2dce519
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_show_max_freq"
+}
+elf_symbol {
+  id: 0x8db62b4f
+  name: "__tracepoint_android_rvh_tick_entry"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x0bd72419
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_tick_entry"
+}
+elf_symbol {
+  id: 0xe9c87fab
+  name: "__tracepoint_android_rvh_try_to_wake_up"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x82233cc0
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_try_to_wake_up"
+}
+elf_symbol {
+  id: 0xdf07959f
+  name: "__tracepoint_android_rvh_try_to_wake_up_success"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xbc0d0d45
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_try_to_wake_up_success"
+}
+elf_symbol {
+  id: 0xafe46ece
+  name: "__tracepoint_android_rvh_ttwu_cond"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xb96cdd49
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_ttwu_cond"
+}
+elf_symbol {
+  id: 0xe445d254
+  name: "__tracepoint_android_rvh_typec_tcpci_get_vbus"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x853bba97
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_typec_tcpci_get_vbus"
+}
+elf_symbol {
+  id: 0x64e2c288
+  name: "__tracepoint_android_rvh_uclamp_eff_get"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x76a8e7d1
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_uclamp_eff_get"
+}
+elf_symbol {
+  id: 0xdc2af26c
+  name: "__tracepoint_android_rvh_update_cpu_capacity"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xef03083e
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_update_cpu_capacity"
+}
+elf_symbol {
+  id: 0x1362c5b0
+  name: "__tracepoint_android_rvh_update_misfit_status"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xfbbc1cd6
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_update_misfit_status"
+}
+elf_symbol {
+  id: 0x0e614ab0
+  name: "__tracepoint_android_rvh_update_thermal_stats"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x2c27bcc8
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_update_thermal_stats"
+}
+elf_symbol {
+  id: 0xa68c0f10
+  name: "__tracepoint_android_rvh_util_est_update"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xb2c941f9
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_util_est_update"
+}
+elf_symbol {
+  id: 0xdcf22716
+  name: "__tracepoint_android_rvh_wake_up_new_task"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x6b60d8f1
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_rvh_wake_up_new_task"
+}
+elf_symbol {
+  id: 0x4f980315
+  name: "__tracepoint_android_vh_account_process_tick_gran"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x15212a6d
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_account_process_tick_gran"
+}
+elf_symbol {
+  id: 0xe1489e0c
+  name: "__tracepoint_android_vh_account_task_time"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xf1afbf0d
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_account_task_time"
+}
+elf_symbol {
+  id: 0x37776872
+  name: "__tracepoint_android_vh_alloc_pages_failure_bypass"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x24488dce
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_alloc_pages_failure_bypass"
+}
+elf_symbol {
+  id: 0xfc735654
+  name: "__tracepoint_android_vh_alloc_pages_reclaim_bypass"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x744783d0
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_alloc_pages_reclaim_bypass"
+}
+elf_symbol {
+  id: 0xea695d5b
+  name: "__tracepoint_android_vh_alloc_uid"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xc21e109f
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_alloc_uid"
+}
+elf_symbol {
+  id: 0xd82141b7
+  name: "__tracepoint_android_vh_alter_futex_plist_add"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xed380509
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_alter_futex_plist_add"
+}
+elf_symbol {
+  id: 0xe520cb67
+  name: "__tracepoint_android_vh_alter_mutex_list_add"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x7dbea13a
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_alter_mutex_list_add"
+}
+elf_symbol {
+  id: 0x8184b548
+  name: "__tracepoint_android_vh_alter_rwsem_list_add"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xb65a03d5
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_alter_rwsem_list_add"
+}
+elf_symbol {
+  id: 0xe423541d
+  name: "__tracepoint_android_vh_arch_set_freq_scale"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x7600dd62
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_arch_set_freq_scale"
+}
+elf_symbol {
+  id: 0xfb7cdd24
+  name: "__tracepoint_android_vh_audio_usb_offload_connect"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x33a52dcb
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_audio_usb_offload_connect"
+}
+elf_symbol {
+  id: 0xc8703937
+  name: "__tracepoint_android_vh_binder_alloc_new_buf_locked"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x02c7faf0
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_binder_alloc_new_buf_locked"
+}
+elf_symbol {
+  id: 0x61b56472
+  name: "__tracepoint_android_vh_binder_del_ref"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xefc746ba
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_binder_del_ref"
+}
+elf_symbol {
+  id: 0xf32898c6
+  name: "__tracepoint_android_vh_binder_free_proc"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x9e624858
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_binder_free_proc"
+}
+elf_symbol {
+  id: 0x332635cd
+  name: "__tracepoint_android_vh_binder_has_work_ilocked"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x68da440b
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_binder_has_work_ilocked"
+}
+elf_symbol {
+  id: 0xf06625d6
+  name: "__tracepoint_android_vh_binder_looper_state_registered"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xb59ca220
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_binder_looper_state_registered"
+}
+elf_symbol {
+  id: 0x259ffe94
+  name: "__tracepoint_android_vh_binder_new_ref"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x33d1d092
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_binder_new_ref"
+}
+elf_symbol {
+  id: 0x95c75a1c
+  name: "__tracepoint_android_vh_binder_preset"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xf03cd6d3
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_binder_preset"
+}
+elf_symbol {
+  id: 0xe3a367fe
+  name: "__tracepoint_android_vh_binder_priority_skip"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x7c25b934
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_binder_priority_skip"
+}
+elf_symbol {
+  id: 0xc6fb73b4
+  name: "__tracepoint_android_vh_binder_proc_transaction"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xaab7a316
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_binder_proc_transaction"
+}
+elf_symbol {
+  id: 0xb6cfb459
+  name: "__tracepoint_android_vh_binder_proc_transaction_entry"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xd172a0f8
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_binder_proc_transaction_entry"
+}
+elf_symbol {
+  id: 0xc6a5dbd8
+  name: "__tracepoint_android_vh_binder_proc_transaction_finish"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x7fff70e0
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_binder_proc_transaction_finish"
+}
+elf_symbol {
+  id: 0x54aac8cb
+  name: "__tracepoint_android_vh_binder_read_done"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x037a6751
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_binder_read_done"
+}
+elf_symbol {
+  id: 0x6de9ac69
+  name: "__tracepoint_android_vh_binder_reply"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x39132f3d
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_binder_reply"
+}
+elf_symbol {
+  id: 0x57a9a36a
+  name: "__tracepoint_android_vh_binder_restore_priority"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xbf6d3788
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_binder_restore_priority"
+}
+elf_symbol {
+  id: 0x21d8d29a
+  name: "__tracepoint_android_vh_binder_select_worklist_ilocked"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xbc728def
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_binder_select_worklist_ilocked"
+}
+elf_symbol {
+  id: 0x2e04cb9c
+  name: "__tracepoint_android_vh_binder_set_priority"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x03b21b81
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_binder_set_priority"
+}
+elf_symbol {
+  id: 0x306b5ff7
+  name: "__tracepoint_android_vh_binder_thread_read"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x1a799b23
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_binder_thread_read"
+}
+elf_symbol {
+  id: 0x2fce8f78
+  name: "__tracepoint_android_vh_binder_thread_release"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x5ee63788
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_binder_thread_release"
+}
+elf_symbol {
+  id: 0xec7035fd
+  name: "__tracepoint_android_vh_binder_trans"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x2bda2355
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_binder_trans"
+}
+elf_symbol {
+  id: 0xa9d55136
+  name: "__tracepoint_android_vh_binder_transaction_init"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x2e7c8a6c
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_binder_transaction_init"
+}
+elf_symbol {
+  id: 0x75b174bb
+  name: "__tracepoint_android_vh_binder_wait_for_work"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xbac548dc
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_binder_wait_for_work"
+}
+elf_symbol {
+  id: 0x506628ab
+  name: "__tracepoint_android_vh_binder_wakeup_ilocked"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x220013f3
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_binder_wakeup_ilocked"
+}
+elf_symbol {
+  id: 0x0d3c7607
+  name: "__tracepoint_android_vh_build_sched_domains"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xe9491ecd
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_build_sched_domains"
+}
+elf_symbol {
+  id: 0xd3845a12
+  name: "__tracepoint_android_vh_cgroup_attach"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xde2789e0
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_cgroup_attach"
+}
+elf_symbol {
+  id: 0x6f146fe1
+  name: "__tracepoint_android_vh_cgroup_set_task"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xe1f9a223
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_cgroup_set_task"
+}
+elf_symbol {
+  id: 0x678bb5ba
+  name: "__tracepoint_android_vh_check_bpf_syscall"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xcbe6df73
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_check_bpf_syscall"
+}
+elf_symbol {
+  id: 0xf1ec5ef2
+  name: "__tracepoint_android_vh_check_file_open"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x572318b3
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_check_file_open"
+}
+elf_symbol {
+  id: 0xaa072f92
+  name: "__tracepoint_android_vh_check_hibernation_swap"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x2bf41b73
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_check_hibernation_swap"
+}
+elf_symbol {
+  id: 0x9620eac1
+  name: "__tracepoint_android_vh_check_mmap_file"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xc12a5dbb
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_check_mmap_file"
+}
+elf_symbol {
+  id: 0x5cc4ca5b
+  name: "__tracepoint_android_vh_check_uninterrupt_tasks"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xcc643163
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_check_uninterrupt_tasks"
+}
+elf_symbol {
+  id: 0x607a7f0a
+  name: "__tracepoint_android_vh_check_uninterrupt_tasks_done"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x72d14168
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_check_uninterrupt_tasks_done"
+}
+elf_symbol {
+  id: 0xca10f06e
+  name: "__tracepoint_android_vh_cleanup_old_buffers_bypass"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x2ace59c2
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_cleanup_old_buffers_bypass"
+}
+elf_symbol {
+  id: 0x26324a1f
+  name: "__tracepoint_android_vh_cpu_idle_enter"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x656d334c
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_cpu_idle_enter"
+}
+elf_symbol {
+  id: 0x4ade2774
+  name: "__tracepoint_android_vh_cpu_idle_exit"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x51b29892
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_cpu_idle_exit"
+}
+elf_symbol {
+  id: 0x704b9aae
+  name: "__tracepoint_android_vh_cpufreq_acct_update_power"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xba474b4f
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_cpufreq_acct_update_power"
+}
+elf_symbol {
+  id: 0x4a3c01db
+  name: "__tracepoint_android_vh_cpufreq_fast_switch"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x6abcf30a
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_cpufreq_fast_switch"
+}
+elf_symbol {
+  id: 0x463f3244
+  name: "__tracepoint_android_vh_cpufreq_resolve_freq"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x5f71ddfa
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_cpufreq_resolve_freq"
+}
+elf_symbol {
+  id: 0x750e1421
+  name: "__tracepoint_android_vh_cpufreq_target"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xb90693f4
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_cpufreq_target"
+}
+elf_symbol {
+  id: 0x66a766d7
+  name: "__tracepoint_android_vh_cpuidle_psci_enter"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xe2b81116
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_cpuidle_psci_enter"
+}
+elf_symbol {
+  id: 0xc44d61e6
+  name: "__tracepoint_android_vh_cpuidle_psci_exit"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x8c331003
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_cpuidle_psci_exit"
+}
+elf_symbol {
+  id: 0x1ddb60ad
+  name: "__tracepoint_android_vh_disable_thermal_cooling_stats"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x5e447fbe
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_disable_thermal_cooling_stats"
+}
+elf_symbol {
+  id: 0x0ae2ee16
+  name: "__tracepoint_android_vh_dm_bufio_shrink_scan_bypass"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x1e1422af
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_dm_bufio_shrink_scan_bypass"
+}
+elf_symbol {
+  id: 0x9fe99d05
+  name: "__tracepoint_android_vh_do_futex"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x76782dd0
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_do_futex"
+}
+elf_symbol {
+  id: 0x82ce823f
+  name: "__tracepoint_android_vh_do_send_sig_info"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x692a21ea
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_do_send_sig_info"
+}
+elf_symbol {
+  id: 0x474d211c
+  name: "__tracepoint_android_vh_do_shrink_slab"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x6f784c49
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_do_shrink_slab"
+}
+elf_symbol {
+  id: 0xe2d7542c
+  name: "__tracepoint_android_vh_do_wake_up_sync"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x24bef402
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_do_wake_up_sync"
+}
+elf_symbol {
+  id: 0x988719fa
+  name: "__tracepoint_android_vh_dump_throttled_rt_tasks"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xd29bebac
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_dump_throttled_rt_tasks"
+}
+elf_symbol {
+  id: 0x732a182b
+  name: "__tracepoint_android_vh_dup_task_struct"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x14fff0cf
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_dup_task_struct"
+}
+elf_symbol {
+  id: 0xe7584e1c
+  name: "__tracepoint_android_vh_encrypt_page"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xa94f7016
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_encrypt_page"
+}
+elf_symbol {
+  id: 0x0d418d38
+  name: "__tracepoint_android_vh_exit_signal"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xe653ddaf
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_exit_signal"
+}
+elf_symbol {
+  id: 0x50a83025
+  name: "__tracepoint_android_vh_file_is_tiny_bypass"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x1c355240
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_file_is_tiny_bypass"
+}
+elf_symbol {
+  id: 0xe6918e09
+  name: "__tracepoint_android_vh_free_task"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x25db8da7
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_free_task"
+}
+elf_symbol {
+  id: 0x4d4fd1cc
+  name: "__tracepoint_android_vh_free_user"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xe0e8d412
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_free_user"
+}
+elf_symbol {
+  id: 0xace80c56
+  name: "__tracepoint_android_vh_freq_qos_add_request"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x0a4d7652
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_freq_qos_add_request"
+}
+elf_symbol {
+  id: 0xa0ce156c
+  name: "__tracepoint_android_vh_freq_qos_remove_request"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x6fef5880
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_freq_qos_remove_request"
+}
+elf_symbol {
+  id: 0x46787271
+  name: "__tracepoint_android_vh_freq_qos_update_request"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x2e0fffb6
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_freq_qos_update_request"
+}
+elf_symbol {
+  id: 0xbacc3060
+  name: "__tracepoint_android_vh_ftrace_dump_buffer"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x92d99a98
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_ftrace_dump_buffer"
+}
+elf_symbol {
+  id: 0x1b0699af
+  name: "__tracepoint_android_vh_ftrace_format_check"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xc057d825
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_ftrace_format_check"
+}
+elf_symbol {
+  id: 0xaa012cfc
+  name: "__tracepoint_android_vh_ftrace_oops_enter"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x8c9d9155
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_ftrace_oops_enter"
+}
+elf_symbol {
+  id: 0x44d76aa5
+  name: "__tracepoint_android_vh_ftrace_oops_exit"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xc2b5b494
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_ftrace_oops_exit"
+}
+elf_symbol {
+  id: 0x6b0eca0a
+  name: "__tracepoint_android_vh_ftrace_size_check"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x0ba7dff6
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_ftrace_size_check"
+}
+elf_symbol {
+  id: 0xef0379f8
+  name: "__tracepoint_android_vh_futex_sleep_start"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xc26ab705
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_futex_sleep_start"
+}
+elf_symbol {
+  id: 0x08e2cf92
+  name: "__tracepoint_android_vh_futex_wait_end"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x49b606a8
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_futex_wait_end"
+}
+elf_symbol {
+  id: 0x6d73379a
+  name: "__tracepoint_android_vh_futex_wait_start"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x196030ee
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_futex_wait_start"
+}
+elf_symbol {
+  id: 0x0c310ebd
+  name: "__tracepoint_android_vh_futex_wake_this"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x5301beb4
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_futex_wake_this"
+}
+elf_symbol {
+  id: 0x9b384a49
+  name: "__tracepoint_android_vh_futex_wake_traverse_plist"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xaadca4aa
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_futex_wake_traverse_plist"
+}
+elf_symbol {
+  id: 0x828646be
+  name: "__tracepoint_android_vh_futex_wake_up_q_finish"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x5bf93e96
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_futex_wake_up_q_finish"
+}
+elf_symbol {
+  id: 0x4756cfec
+  name: "__tracepoint_android_vh_get_page_wmark"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x00924325
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_get_page_wmark"
+}
+elf_symbol {
+  id: 0x8b7beb3b
+  name: "__tracepoint_android_vh_get_thermal_zone_device"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xf63d5b1a
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_get_thermal_zone_device"
+}
+elf_symbol {
+  id: 0xf18e312d
+  name: "__tracepoint_android_vh_gic_v3_suspend"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x81031745
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_gic_v3_suspend"
+}
+elf_symbol {
+  id: 0xf68497fa
+  name: "__tracepoint_android_vh_ignore_dmabuf_vmap_bounds"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xd61dcb5e
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_ignore_dmabuf_vmap_bounds"
+}
+elf_symbol {
+  id: 0xb6603d58
+  name: "__tracepoint_android_vh_init_aes_encrypt"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x0bf9217b
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_init_aes_encrypt"
+}
+elf_symbol {
+  id: 0xbbfc3b7e
+  name: "__tracepoint_android_vh_iommu_iovad_alloc_iova"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x7a1fcb87
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_iommu_iovad_alloc_iova"
+}
+elf_symbol {
+  id: 0xdb161c79
+  name: "__tracepoint_android_vh_iommu_iovad_free_iova"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x6c2a9494
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_iommu_iovad_free_iova"
+}
+elf_symbol {
+  id: 0x1d442b97
+  name: "__tracepoint_android_vh_ipi_stop"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x9e6c28b2
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_ipi_stop"
+}
+elf_symbol {
+  id: 0x31457bed
+  name: "__tracepoint_android_vh_irqtime_account_process_tick"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x61bb9d22
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_irqtime_account_process_tick"
+}
+elf_symbol {
+  id: 0x62c13726
+  name: "__tracepoint_android_vh_is_fpsimd_save"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x961b247c
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_is_fpsimd_save"
+}
+elf_symbol {
+  id: 0xafbca760
+  name: "__tracepoint_android_vh_jiffies_update"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x5415675e
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_jiffies_update"
+}
+elf_symbol {
+  id: 0x586a06d1
+  name: "__tracepoint_android_vh_kswapd_per_node"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xe7839d0d
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_kswapd_per_node"
+}
+elf_symbol {
+  id: 0xcb34ca12
+  name: "__tracepoint_android_vh_madvise_cold_pageout_skip"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x4584864c
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_madvise_cold_pageout_skip"
+}
+elf_symbol {
+  id: 0x2f768c2b
+  name: "__tracepoint_android_vh_madvise_pageout_swap_entry"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xd4bd209e
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_madvise_pageout_swap_entry"
+}
+elf_symbol {
+  id: 0xc34a5545
+  name: "__tracepoint_android_vh_madvise_swapin_walk_pmd_entry"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x18633ff4
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_madvise_swapin_walk_pmd_entry"
+}
+elf_symbol {
+  id: 0x00a5fe5e
+  name: "__tracepoint_android_vh_map_util_freq"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xf9624317
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_map_util_freq"
+}
+elf_symbol {
+  id: 0x6377ba8b
+  name: "__tracepoint_android_vh_mem_cgroup_alloc"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x81f213a3
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_mem_cgroup_alloc"
+}
+elf_symbol {
+  id: 0xe160b6f0
+  name: "__tracepoint_android_vh_mem_cgroup_css_offline"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xf342a420
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_mem_cgroup_css_offline"
+}
+elf_symbol {
+  id: 0x37c5c41a
+  name: "__tracepoint_android_vh_mem_cgroup_css_online"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xacdf3a05
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_mem_cgroup_css_online"
+}
+elf_symbol {
+  id: 0x78341cfd
+  name: "__tracepoint_android_vh_mem_cgroup_free"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x71b34ba2
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_mem_cgroup_free"
+}
+elf_symbol {
+  id: 0xac62c748
+  name: "__tracepoint_android_vh_mem_cgroup_id_remove"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x76f2ace1
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_mem_cgroup_id_remove"
+}
+elf_symbol {
+  id: 0xa2bd1edf
+  name: "__tracepoint_android_vh_meminfo_cache_adjust"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x7ea4d46f
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_meminfo_cache_adjust"
+}
+elf_symbol {
+  id: 0xb6da564f
+  name: "__tracepoint_android_vh_mmap_region"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x3771778e
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_mmap_region"
+}
+elf_symbol {
+  id: 0x41c8d09b
+  name: "__tracepoint_android_vh_mmput"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xabcddfae
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_mmput"
+}
+elf_symbol {
+  id: 0xe2ad11db
+  name: "__tracepoint_android_vh_modify_scan_control"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x2b6b3487
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_modify_scan_control"
+}
+elf_symbol {
+  id: 0xcac93aff
+  name: "__tracepoint_android_vh_modify_thermal_request_freq"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x240f59e0
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_modify_thermal_request_freq"
+}
+elf_symbol {
+  id: 0x43873fea
+  name: "__tracepoint_android_vh_modify_thermal_target_freq"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xa965d530
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_modify_thermal_target_freq"
+}
+elf_symbol {
+  id: 0x65023f2f
+  name: "__tracepoint_android_vh_mpam_set"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x0315217a
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_mpam_set"
+}
+elf_symbol {
+  id: 0xd5097f8d
+  name: "__tracepoint_android_vh_mutex_can_spin_on_owner"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x80558a5f
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_mutex_can_spin_on_owner"
+}
+elf_symbol {
+  id: 0x6d3764d2
+  name: "__tracepoint_android_vh_mutex_init"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x57f88efe
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_mutex_init"
+}
+elf_symbol {
+  id: 0xecc3ea35
+  name: "__tracepoint_android_vh_mutex_opt_spin_finish"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xa0e404b1
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_mutex_opt_spin_finish"
+}
+elf_symbol {
+  id: 0x2122908b
+  name: "__tracepoint_android_vh_mutex_opt_spin_start"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xb4b26237
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_mutex_opt_spin_start"
+}
+elf_symbol {
+  id: 0x68d68809
+  name: "__tracepoint_android_vh_mutex_unlock_slowpath"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xf5dc2012
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_mutex_unlock_slowpath"
+}
+elf_symbol {
+  id: 0x76e879b6
+  name: "__tracepoint_android_vh_mutex_wait_finish"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xaf33e17b
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_mutex_wait_finish"
+}
+elf_symbol {
+  id: 0xae5bbde9
+  name: "__tracepoint_android_vh_mutex_wait_start"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x63ae9c7e
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_mutex_wait_start"
+}
+elf_symbol {
+  id: 0x20d2ceb3
+  name: "__tracepoint_android_vh_page_add_new_anon_rmap"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xb63048ea
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_page_add_new_anon_rmap"
+}
+elf_symbol {
+  id: 0xab37fc55
+  name: "__tracepoint_android_vh_post_image_save"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x039a9337
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_post_image_save"
+}
+elf_symbol {
+  id: 0x49b95a49
+  name: "__tracepoint_android_vh_printk_hotplug"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x7f6382dd
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_printk_hotplug"
+}
+elf_symbol {
+  id: 0xb194c4c5
+  name: "__tracepoint_android_vh_process_madvise_end"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x88cbb967
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_process_madvise_end"
+}
+elf_symbol {
+  id: 0x61f8c8ae
+  name: "__tracepoint_android_vh_psi_event"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xa882f560
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_psi_event"
+}
+elf_symbol {
+  id: 0x0e92ee53
+  name: "__tracepoint_android_vh_psi_group"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x1b54b5dd
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_psi_group"
+}
+elf_symbol {
+  id: 0xb0c197a3
+  name: "__tracepoint_android_vh_ptype_head"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x40b365e3
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_ptype_head"
+}
+elf_symbol {
+  id: 0x761f292f
+  name: "__tracepoint_android_vh_record_mutex_lock_starttime"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x1deb1eec
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_record_mutex_lock_starttime"
+}
+elf_symbol {
+  id: 0xef7ad117
+  name: "__tracepoint_android_vh_record_pcpu_rwsem_starttime"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x18111c92
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_record_pcpu_rwsem_starttime"
+}
+elf_symbol {
+  id: 0x4568ff8f
+  name: "__tracepoint_android_vh_record_rtmutex_lock_starttime"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x61c36376
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_record_rtmutex_lock_starttime"
+}
+elf_symbol {
+  id: 0xe918e2ec
+  name: "__tracepoint_android_vh_record_rwsem_lock_starttime"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x34f9d483
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_record_rwsem_lock_starttime"
+}
+elf_symbol {
+  id: 0xd94bc301
+  name: "__tracepoint_android_vh_rproc_recovery"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x2941030b
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_rproc_recovery"
+}
+elf_symbol {
+  id: 0x3fc5ffc9
+  name: "__tracepoint_android_vh_rproc_recovery_set"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xf3adfa5d
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_rproc_recovery_set"
+}
+elf_symbol {
+  id: 0xa3915d70
+  name: "__tracepoint_android_vh_rtmutex_wait_finish"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x9397e82e
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_rtmutex_wait_finish"
+}
+elf_symbol {
+  id: 0xf01f02ea
+  name: "__tracepoint_android_vh_rtmutex_wait_start"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xc443185a
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_rtmutex_wait_start"
+}
+elf_symbol {
+  id: 0xe471b8d5
+  name: "__tracepoint_android_vh_rwsem_can_spin_on_owner"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x017248e7
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_rwsem_can_spin_on_owner"
+}
+elf_symbol {
+  id: 0x84628825
+  name: "__tracepoint_android_vh_rwsem_init"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x554a1937
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_rwsem_init"
+}
+elf_symbol {
+  id: 0x8d0ce77d
+  name: "__tracepoint_android_vh_rwsem_opt_spin_finish"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x7dc06ab2
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_rwsem_opt_spin_finish"
+}
+elf_symbol {
+  id: 0x50ab483c
+  name: "__tracepoint_android_vh_rwsem_opt_spin_start"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x9da0a858
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_rwsem_opt_spin_start"
+}
+elf_symbol {
+  id: 0xe7ef7059
+  name: "__tracepoint_android_vh_rwsem_read_wait_finish"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xc2e8063f
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_rwsem_read_wait_finish"
+}
+elf_symbol {
+  id: 0xf2d006c8
+  name: "__tracepoint_android_vh_rwsem_read_wait_start"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x65ad336b
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_rwsem_read_wait_start"
+}
+elf_symbol {
+  id: 0x85a885d0
+  name: "__tracepoint_android_vh_rwsem_wake"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x41026d41
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_rwsem_wake"
+}
+elf_symbol {
+  id: 0x878b3583
+  name: "__tracepoint_android_vh_rwsem_wake_finish"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x6b369940
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_rwsem_wake_finish"
+}
+elf_symbol {
+  id: 0x1220ff14
+  name: "__tracepoint_android_vh_rwsem_write_finished"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xa15e744e
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_rwsem_write_finished"
+}
+elf_symbol {
+  id: 0x203fab27
+  name: "__tracepoint_android_vh_rwsem_write_wait_finish"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xa8c3dad3
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_rwsem_write_wait_finish"
+}
+elf_symbol {
+  id: 0xbe3d9b79
+  name: "__tracepoint_android_vh_rwsem_write_wait_start"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xfe512d7a
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_rwsem_write_wait_start"
+}
+elf_symbol {
+  id: 0x30004003
+  name: "__tracepoint_android_vh_save_cpu_resume"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xd0da4fe5
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_save_cpu_resume"
+}
+elf_symbol {
+  id: 0xb91d18b6
+  name: "__tracepoint_android_vh_save_hib_resume_bdev"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x64f2a9a3
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_save_hib_resume_bdev"
+}
+elf_symbol {
+  id: 0xb3b18fc4
+  name: "__tracepoint_android_vh_sched_pelt_multiplier"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x8363715e
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_sched_pelt_multiplier"
+}
+elf_symbol {
+  id: 0x40d6a8c5
+  name: "__tracepoint_android_vh_sched_setaffinity_early"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xcec91b82
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_sched_setaffinity_early"
+}
+elf_symbol {
+  id: 0x931fa088
+  name: "__tracepoint_android_vh_sched_show_task"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x66f7b6a4
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_sched_show_task"
+}
+elf_symbol {
+  id: 0xaaf6a826
+  name: "__tracepoint_android_vh_sched_stat_runtime_rt"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xdb1b2fe1
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_sched_stat_runtime_rt"
+}
+elf_symbol {
+  id: 0xff2bccb8
+  name: "__tracepoint_android_vh_scheduler_tick"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xa3e74b24
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_scheduler_tick"
+}
+elf_symbol {
+  id: 0xd7ceb15f
+  name: "__tracepoint_android_vh_set_wake_flags"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x6b9fe557
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_set_wake_flags"
+}
+elf_symbol {
+  id: 0x923147c1
+  name: "__tracepoint_android_vh_setscheduler_uclamp"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x7ae79b81
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_setscheduler_uclamp"
+}
+elf_symbol {
+  id: 0x5b6bc3a9
+  name: "__tracepoint_android_vh_should_continue_reclaim"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x60fa54b6
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_should_continue_reclaim"
+}
+elf_symbol {
+  id: 0x823654f5
+  name: "__tracepoint_android_vh_show_mem"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x5d877102
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_show_mem"
+}
+elf_symbol {
+  id: 0x42ad45a3
+  name: "__tracepoint_android_vh_show_resume_epoch_val"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x8917c5f6
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_show_resume_epoch_val"
+}
+elf_symbol {
+  id: 0x0a5014f0
+  name: "__tracepoint_android_vh_show_smap"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xc6cce5f8
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_show_smap"
+}
+elf_symbol {
+  id: 0x8712dd01
+  name: "__tracepoint_android_vh_show_suspend_epoch_val"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xaf7f3246
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_show_suspend_epoch_val"
+}
+elf_symbol {
+  id: 0x87db1583
+  name: "__tracepoint_android_vh_shrink_node_memcgs"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x4e03099f
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_shrink_node_memcgs"
+}
+elf_symbol {
+  id: 0x3e70324d
+  name: "__tracepoint_android_vh_shrink_slab_bypass"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x55f40be4
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_shrink_slab_bypass"
+}
+elf_symbol {
+  id: 0xc8a7ac69
+  name: "__tracepoint_android_vh_si_mem_available_adjust"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x70d49c35
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_si_mem_available_adjust"
+}
+elf_symbol {
+  id: 0x5ef059ce
+  name: "__tracepoint_android_vh_si_meminfo_adjust"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xa5a9788a
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_si_meminfo_adjust"
+}
+elf_symbol {
+  id: 0x3204c8e5
+  name: "__tracepoint_android_vh_skip_swap_map_write"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x2e825196
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_skip_swap_map_write"
+}
+elf_symbol {
+  id: 0x547e3912
+  name: "__tracepoint_android_vh_smaps_pte_entry"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x9040a887
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_smaps_pte_entry"
+}
+elf_symbol {
+  id: 0x39e68fed
+  name: "__tracepoint_android_vh_sync_txn_recvd"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xc1d8fb74
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_sync_txn_recvd"
+}
+elf_symbol {
+  id: 0xefb9e5a3
+  name: "__tracepoint_android_vh_syscall_prctl_finished"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xf2cf3f0f
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_syscall_prctl_finished"
+}
+elf_symbol {
+  id: 0x3fe0157c
+  name: "__tracepoint_android_vh_sysrq_crash"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x1ce924b5
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_sysrq_crash"
+}
+elf_symbol {
+  id: 0x6f25dd05
+  name: "__tracepoint_android_vh_thermal_power_cap"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xf1fd6b34
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_thermal_power_cap"
+}
+elf_symbol {
+  id: 0xa5c71571
+  name: "__tracepoint_android_vh_thermal_register"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x52c84ba9
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_thermal_register"
+}
+elf_symbol {
+  id: 0xfa3284c7
+  name: "__tracepoint_android_vh_thermal_unregister"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x5ba0a594
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_thermal_unregister"
+}
+elf_symbol {
+  id: 0x69721329
+  name: "__tracepoint_android_vh_timer_calc_index"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x8c419ab6
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_timer_calc_index"
+}
+elf_symbol {
+  id: 0xd9d2bcff
+  name: "__tracepoint_android_vh_try_to_freeze_todo"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x7736a58d
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_try_to_freeze_todo"
+}
+elf_symbol {
+  id: 0x09ba106b
+  name: "__tracepoint_android_vh_try_to_freeze_todo_unfrozen"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x420e27e1
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_try_to_freeze_todo_unfrozen"
+}
+elf_symbol {
+  id: 0xf9580976
+  name: "__tracepoint_android_vh_try_to_unmap_one"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x1ddd7db7
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_try_to_unmap_one"
+}
+elf_symbol {
+  id: 0x18e67da1
+  name: "__tracepoint_android_vh_typec_store_partner_src_caps"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x6c665c32
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_typec_store_partner_src_caps"
+}
+elf_symbol {
+  id: 0x75a2f39e
+  name: "__tracepoint_android_vh_typec_tcpci_override_toggling"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x66c6dbb4
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_typec_tcpci_override_toggling"
+}
+elf_symbol {
+  id: 0x7b5c377f
+  name: "__tracepoint_android_vh_typec_tcpm_get_timer"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xfc5b7094
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_typec_tcpm_get_timer"
+}
+elf_symbol {
+  id: 0x6436c788
+  name: "__tracepoint_android_vh_typec_tcpm_log"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x2b257da2
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_typec_tcpm_log"
+}
+elf_symbol {
+  id: 0x609a86da
+  name: "__tracepoint_android_vh_ufs_check_int_errors"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xb5efc415
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_ufs_check_int_errors"
+}
+elf_symbol {
+  id: 0x08a49528
+  name: "__tracepoint_android_vh_ufs_clock_scaling"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x7310f377
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_ufs_clock_scaling"
+}
+elf_symbol {
+  id: 0xa03a7d43
+  name: "__tracepoint_android_vh_ufs_compl_command"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x6e94a500
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_ufs_compl_command"
+}
+elf_symbol {
+  id: 0xc9f46bb2
+  name: "__tracepoint_android_vh_ufs_fill_prdt"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x248c91f6
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_ufs_fill_prdt"
+}
+elf_symbol {
+  id: 0x334a964e
+  name: "__tracepoint_android_vh_ufs_mcq_abort"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x591f8398
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_ufs_mcq_abort"
+}
+elf_symbol {
+  id: 0xc23168f8
+  name: "__tracepoint_android_vh_ufs_prepare_command"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x76860bf5
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_ufs_prepare_command"
+}
+elf_symbol {
+  id: 0x602cdd1a
+  name: "__tracepoint_android_vh_ufs_send_command"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x0847d889
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_ufs_send_command"
+}
+elf_symbol {
+  id: 0xf8de19a9
+  name: "__tracepoint_android_vh_ufs_send_tm_command"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x7dd2b334
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_ufs_send_tm_command"
+}
+elf_symbol {
+  id: 0x5a3916cb
+  name: "__tracepoint_android_vh_ufs_send_uic_command"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xa319f0c8
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_ufs_send_uic_command"
+}
+elf_symbol {
+  id: 0xb7ba0c6d
+  name: "__tracepoint_android_vh_ufs_update_sdev"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x1b2613e0
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_ufs_update_sdev"
+}
+elf_symbol {
+  id: 0xaf7a4dba
+  name: "__tracepoint_android_vh_ufs_update_sysfs"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x91d4e8dc
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_ufs_update_sysfs"
+}
+elf_symbol {
+  id: 0x743ea36d
+  name: "__tracepoint_android_vh_ufs_use_mcq_hooks"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xd4b974dd
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_ufs_use_mcq_hooks"
+}
+elf_symbol {
+  id: 0xc09d36c9
+  name: "__tracepoint_android_vh_update_topology_flags_workfn"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xd28119e8
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_update_topology_flags_workfn"
+}
+elf_symbol {
+  id: 0x42dbeb24
+  name: "__tracepoint_android_vh_watchdog_timer_softlockup"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xfe631102
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_android_vh_watchdog_timer_softlockup"
+}
+elf_symbol {
+  id: 0xf57e8f65
+  name: "__tracepoint_binder_transaction_received"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xab619a41
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_binder_transaction_received"
+}
+elf_symbol {
+  id: 0x18343f2d
+  name: "__tracepoint_block_bio_queue"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xa13ed1a6
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_block_bio_queue"
+}
+elf_symbol {
+  id: 0xef8c9bf3
+  name: "__tracepoint_block_getrq"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xfc12d508
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_block_getrq"
+}
+elf_symbol {
+  id: 0xaf8a4962
+  name: "__tracepoint_block_rq_complete"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xbb319d4d
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_block_rq_complete"
+}
+elf_symbol {
+  id: 0x48239fa6
+  name: "__tracepoint_block_rq_insert"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xf4a00349
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_block_rq_insert"
+}
+elf_symbol {
+  id: 0xbcf87a84
+  name: "__tracepoint_block_rq_issue"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x960f8928
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_block_rq_issue"
+}
+elf_symbol {
+  id: 0xf4acf4ca
+  name: "__tracepoint_block_rq_merge"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x4520b967
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_block_rq_merge"
+}
+elf_symbol {
+  id: 0x9772d1c0
+  name: "__tracepoint_block_rq_requeue"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xa964672d
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_block_rq_requeue"
+}
+elf_symbol {
+  id: 0x9600f350
+  name: "__tracepoint_clock_set_rate"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x19552c17
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_clock_set_rate"
+}
+elf_symbol {
+  id: 0x4971cb68
+  name: "__tracepoint_console"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x47f6d54f
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_console"
+}
+elf_symbol {
+  id: 0x78b22997
+  name: "__tracepoint_cpu_frequency"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xf9093f5b
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_cpu_frequency"
+}
+elf_symbol {
+  id: 0x10bc6dec
+  name: "__tracepoint_cpu_frequency_limits"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xe279d62c
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_cpu_frequency_limits"
+}
+elf_symbol {
+  id: 0x64c2c28c
+  name: "__tracepoint_cpu_idle"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x774f16ef
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_cpu_idle"
+}
+elf_symbol {
+  id: 0xbf086359
+  name: "__tracepoint_device_pm_callback_end"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x52195345
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_device_pm_callback_end"
+}
+elf_symbol {
+  id: 0xef6e6795
+  name: "__tracepoint_device_pm_callback_start"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xe9b1039b
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_device_pm_callback_start"
+}
+elf_symbol {
+  id: 0xb2d6f207
+  name: "__tracepoint_dma_fence_emit"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xc5a3367a
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_dma_fence_emit"
+}
+elf_symbol {
+  id: 0xd8f3ca82
+  name: "__tracepoint_gpu_mem_total"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x16fa73fe
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_gpu_mem_total"
+}
+elf_symbol {
+  id: 0xff315556
+  name: "__tracepoint_hrtimer_expire_entry"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x055a6686
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_hrtimer_expire_entry"
+}
+elf_symbol {
+  id: 0x6d72699f
+  name: "__tracepoint_hrtimer_expire_exit"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x703a9377
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_hrtimer_expire_exit"
+}
+elf_symbol {
+  id: 0x8a660b52
+  name: "__tracepoint_ipi_entry"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x3f573f55
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_ipi_entry"
+}
+elf_symbol {
+  id: 0xd162e616
+  name: "__tracepoint_ipi_exit"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xc8328e16
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_ipi_exit"
+}
+elf_symbol {
+  id: 0x2e809f1d
+  name: "__tracepoint_ipi_raise"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xe612228f
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_ipi_raise"
+}
+elf_symbol {
+  id: 0x0713b56c
+  name: "__tracepoint_irq_handler_entry"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x03314215
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_irq_handler_entry"
+}
+elf_symbol {
+  id: 0x83005ddd
+  name: "__tracepoint_irq_handler_exit"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xadab1f32
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_irq_handler_exit"
+}
+elf_symbol {
+  id: 0x5c535ca7
+  name: "__tracepoint_kfree_skb"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x72edf918
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_kfree_skb"
+}
+elf_symbol {
+  id: 0x88a08d67
+  name: "__tracepoint_mmap_lock_acquire_returned"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xbe118c52
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_mmap_lock_acquire_returned"
+}
+elf_symbol {
+  id: 0xe2682879
+  name: "__tracepoint_mmap_lock_released"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x5efdd68b
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_mmap_lock_released"
+}
+elf_symbol {
+  id: 0xdffbb8bf
+  name: "__tracepoint_mmap_lock_start_locking"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xbd628752
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_mmap_lock_start_locking"
+}
+elf_symbol {
+  id: 0xf3cb5921
+  name: "__tracepoint_pelt_rt_tp"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x90d937b4
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_pelt_rt_tp"
+}
+elf_symbol {
+  id: 0xcb194ec9
+  name: "__tracepoint_pelt_se_tp"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x06055a23
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_pelt_se_tp"
+}
+elf_symbol {
+  id: 0x009c40ce
+  name: "__tracepoint_rwmmio_post_read"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x19ebf04e
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_rwmmio_post_read"
+}
+elf_symbol {
+  id: 0x02473ce7
+  name: "__tracepoint_rwmmio_read"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xa035d76e
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_rwmmio_read"
+}
+elf_symbol {
+  id: 0x65f99dde
+  name: "__tracepoint_rwmmio_write"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x95575c33
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_rwmmio_write"
+}
+elf_symbol {
+  id: 0x2497fb4d
+  name: "__tracepoint_sched_overutilized_tp"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xad25602f
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_sched_overutilized_tp"
+}
+elf_symbol {
+  id: 0x37548d14
+  name: "__tracepoint_sched_stat_blocked"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xcc6130e1
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_sched_stat_blocked"
+}
+elf_symbol {
+  id: 0x6aa1a617
+  name: "__tracepoint_sched_stat_iowait"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x3dcb44d9
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_sched_stat_iowait"
+}
+elf_symbol {
+  id: 0xeac9b507
+  name: "__tracepoint_sched_stat_runtime"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xe601e892
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_sched_stat_runtime"
+}
+elf_symbol {
+  id: 0xbc210559
+  name: "__tracepoint_sched_stat_sleep"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xf3492e73
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_sched_stat_sleep"
+}
+elf_symbol {
+  id: 0x7d5529d3
+  name: "__tracepoint_sched_stat_wait"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xc977be89
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_sched_stat_wait"
+}
+elf_symbol {
+  id: 0xe10cee18
+  name: "__tracepoint_sched_switch"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x4044ba28
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_sched_switch"
+}
+elf_symbol {
+  id: 0x477e3555
+  name: "__tracepoint_sched_update_nr_running_tp"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x365b45d1
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_sched_update_nr_running_tp"
+}
+elf_symbol {
+  id: 0xa70e8cd2
+  name: "__tracepoint_sched_waking"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x36772c03
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_sched_waking"
+}
+elf_symbol {
+  id: 0x5b327cd6
+  name: "__tracepoint_suspend_resume"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xfede9222
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_suspend_resume"
+}
+elf_symbol {
+  id: 0xe91cdbb3
+  name: "__tracepoint_task_newtask"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x6ba3f1e6
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_task_newtask"
+}
+elf_symbol {
+  id: 0x4f1ffabc
+  name: "__tracepoint_task_rename"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x990f1219
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_task_rename"
+}
+elf_symbol {
+  id: 0x1a51f8cc
+  name: "__tracepoint_workqueue_execute_end"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xecbfa711
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_workqueue_execute_end"
+}
+elf_symbol {
+  id: 0x20843be8
+  name: "__tracepoint_workqueue_execute_start"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x8db61368
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_workqueue_execute_start"
+}
+elf_symbol {
+  id: 0xc9969dba
+  name: "__tracepoint_xdp_exception"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x8b7a698b
+  type_id: 0x18ccbd2c
+  full_name: "__tracepoint_xdp_exception"
+}
+elf_symbol {
+  id: 0xbc3bf362
+  name: "__tty_alloc_driver"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd78427a9
+  type_id: 0xbe241f2a
+  full_name: "__tty_alloc_driver"
+}
+elf_symbol {
+  id: 0x53fe1441
+  name: "__tty_insert_flip_char"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2f90d388
+  type_id: 0x9a7ce1ce
+  full_name: "__tty_insert_flip_char"
+}
+elf_symbol {
+  id: 0xb882f62e
+  name: "__udelay"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9e7d6bd0
+  type_id: 0x1c4508b2
+  full_name: "__udelay"
+}
+elf_symbol {
+  id: 0x79821b1f
+  name: "__udp4_lib_lookup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x53d5595d
+  type_id: 0x6cfb566e
+  full_name: "__udp4_lib_lookup"
+}
+elf_symbol {
+  id: 0xdf489de4
+  name: "__udp6_lib_lookup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb60b1290
+  type_id: 0x6f9cf068
+  full_name: "__udp6_lib_lookup"
+}
+elf_symbol {
+  id: 0xd853ca80
+  name: "__uio_register_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8b9b8ccb
+  type_id: 0x9f431aa6
+  full_name: "__uio_register_device"
+}
+elf_symbol {
+  id: 0x7c261545
+  name: "__unregister_chrdev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6bc3fbc0
+  type_id: 0x00fe849f
+  full_name: "__unregister_chrdev"
+}
+elf_symbol {
+  id: 0xf497de36
+  name: "__usb_create_hcd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x44b8d338
+  type_id: 0xab9a208d
+  full_name: "__usb_create_hcd"
+}
+elf_symbol {
+  id: 0xf44f6a18
+  name: "__usecs_to_jiffies"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf1969a8e
+  type_id: 0x20cd94dc
+  full_name: "__usecs_to_jiffies"
+}
+elf_symbol {
+  id: 0xfc85c168
+  name: "__v4l2_ctrl_modify_range"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb09c0033
+  type_id: 0x90356b6c
+  full_name: "__v4l2_ctrl_modify_range"
+}
+elf_symbol {
+  id: 0xb6af2644
+  name: "__v4l2_ctrl_s_ctrl"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x20c468ae
+  type_id: 0x93d4efe1
+  full_name: "__v4l2_ctrl_s_ctrl"
+}
+elf_symbol {
+  id: 0x96901dfb
+  name: "__v4l2_ctrl_s_ctrl_compound"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe999d9fc
+  type_id: 0x91b887fb
+  full_name: "__v4l2_ctrl_s_ctrl_compound"
+}
+elf_symbol {
+  id: 0x9420cc1a
+  name: "__v4l2_ctrl_s_ctrl_int64"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x89390c23
+  type_id: 0x903cab87
+  full_name: "__v4l2_ctrl_s_ctrl_int64"
+}
+elf_symbol {
+  id: 0x84164213
+  name: "__v4l2_device_register_subdev_nodes"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x906d9c8d
+  type_id: 0x9de6d8d5
+  full_name: "__v4l2_device_register_subdev_nodes"
+}
+elf_symbol {
+  id: 0x3f61ffe2
+  name: "__v4l2_find_nearest_size"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe2822320
+  type_id: 0x5a0689b9
+  full_name: "__v4l2_find_nearest_size"
+}
+elf_symbol {
+  id: 0xab99b62a
+  name: "__var_waitqueue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5e332b52
+  type_id: 0xb406b28d
+  full_name: "__var_waitqueue"
+}
+elf_symbol {
+  id: 0x4648ac0b
+  name: "__video_register_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0bdd7131
+  type_id: 0x9f0d3989
+  full_name: "__video_register_device"
+}
+elf_symbol {
+  id: 0x97d65f20
+  name: "__vmalloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xae04012c
+  type_id: 0x598d73af
+  full_name: "__vmalloc"
+}
+elf_symbol {
+  id: 0xf84b240e
+  name: "__wait_on_buffer"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x13f0776d
+  type_id: 0x16c5a8cd
+  full_name: "__wait_on_buffer"
+}
+elf_symbol {
+  id: 0xb63e140d
+  name: "__wait_rcu_gp"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbfed2cd9
+  type_id: 0x0a5988e9
+  full_name: "__wait_rcu_gp"
+}
+elf_symbol {
+  id: 0xd171b921
+  name: "__wake_up"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe2964344
+  type_id: 0x99454d9c
+  full_name: "__wake_up"
+}
+elf_symbol {
+  id: 0xaf704e67
+  name: "__wake_up_locked"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2773c485
+  type_id: 0x145d9dd5
+  full_name: "__wake_up_locked"
+}
+elf_symbol {
+  id: 0x2168939c
+  name: "__wake_up_locked_key"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x09337cd0
+  type_id: 0x14427ab8
+  full_name: "__wake_up_locked_key"
+}
+elf_symbol {
+  id: 0x83ada50d
+  name: "__wake_up_sync"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb8273d0b
+  type_id: 0x144455e1
+  full_name: "__wake_up_sync"
+}
+elf_symbol {
+  id: 0xe693da5d
+  name: "__wake_up_sync_key"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xba220db7
+  type_id: 0x14427ab8
+  full_name: "__wake_up_sync_key"
+}
+elf_symbol {
+  id: 0x61e806d8
+  name: "__warn_printk"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x56470118
+  type_id: 0x1d88d4f1
+  full_name: "__warn_printk"
+}
+elf_symbol {
+  id: 0xcf1808d5
+  name: "__write_overflow_field"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3402dc8b
+  type_id: 0x2e45de25
+  full_name: "__write_overflow_field"
+}
+elf_symbol {
+  id: 0x01b711f3
+  name: "__xa_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9114b616
+  type_id: 0x97ce6b93
+  full_name: "__xa_alloc"
+}
+elf_symbol {
+  id: 0xb0e141a3
+  name: "__xa_alloc_cyclic"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb04a43ad
+  type_id: 0x97ce5a08
+  full_name: "__xa_alloc_cyclic"
+}
+elf_symbol {
+  id: 0xd6e3f912
+  name: "__xa_insert"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7dcf4135
+  type_id: 0x97e0f111
+  full_name: "__xa_insert"
+}
+elf_symbol {
+  id: 0x640280c1
+  name: "__xdp_rxq_info_reg"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x43bf6f7c
+  type_id: 0x954d9028
+  full_name: "__xdp_rxq_info_reg"
+}
+elf_symbol {
+  id: 0xb3b57b4d
+  name: "__xfrm_state_destroy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfed7e612
+  type_id: 0x10605221
+  full_name: "__xfrm_state_destroy"
+}
+elf_symbol {
+  id: 0x5693f2df
+  name: "_copy_from_iter"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdf9dadfe
+  type_id: 0x92cb9949
+  full_name: "_copy_from_iter"
+}
+elf_symbol {
+  id: 0xb029aed0
+  name: "_copy_to_iter"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7136f73c
+  type_id: 0x9aa3057f
+  full_name: "_copy_to_iter"
+}
+elf_symbol {
+  id: 0xa762593e
+  name: "_ctype"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x11089ac7
+  type_id: 0x4b395ad9
+  full_name: "_ctype"
+}
+elf_symbol {
+  id: 0x602bd335
+  name: "_dev_alert"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x094d64f0
+  type_id: 0x1fa0c57a
+  full_name: "_dev_alert"
+}
+elf_symbol {
+  id: 0x500c47a8
+  name: "_dev_crit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd5a2398e
+  type_id: 0x1fa0c57a
+  full_name: "_dev_crit"
+}
+elf_symbol {
+  id: 0x83d25041
+  name: "_dev_emerg"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6b04cd3e
+  type_id: 0x1fa0c57a
+  full_name: "_dev_emerg"
+}
+elf_symbol {
+  id: 0xd30e8a4f
+  name: "_dev_err"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf27ed00b
+  type_id: 0x1fa0c57a
+  full_name: "_dev_err"
+}
+elf_symbol {
+  id: 0x4cdcc3eb
+  name: "_dev_info"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xef3cb484
+  type_id: 0x1fa0c57a
+  full_name: "_dev_info"
+}
+elf_symbol {
+  id: 0x6ca5668b
+  name: "_dev_notice"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7436d39e
+  type_id: 0x1fa0c57a
+  full_name: "_dev_notice"
+}
+elf_symbol {
+  id: 0x75193e21
+  name: "_dev_printk"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7d4d96b8
+  type_id: 0x1feff59b
+  full_name: "_dev_printk"
+}
+elf_symbol {
+  id: 0x4669920b
+  name: "_dev_warn"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0f55bd9b
+  type_id: 0x1fa0c57a
+  full_name: "_dev_warn"
+}
+elf_symbol {
+  id: 0x871c7865
+  name: "_find_first_and_bit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb6cb556a
+  type_id: 0x3ef25979
+  full_name: "_find_first_and_bit"
+}
+elf_symbol {
+  id: 0x63cd463e
+  name: "_find_first_bit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8810754a
+  type_id: 0x3ec9dde0
+  full_name: "_find_first_bit"
+}
+elf_symbol {
+  id: 0xcfdf218e
+  name: "_find_first_zero_bit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7b37d4a7
+  type_id: 0x3ec9dde0
+  full_name: "_find_first_zero_bit"
+}
+elf_symbol {
+  id: 0xc8829f05
+  name: "_find_last_bit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9ae47436
+  type_id: 0x3ec9dde0
+  full_name: "_find_last_bit"
+}
+elf_symbol {
+  id: 0xa0761c18
+  name: "_find_next_and_bit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xafaa6031
+  type_id: 0x3ef294ac
+  full_name: "_find_next_and_bit"
+}
+elf_symbol {
+  id: 0x97cac723
+  name: "_find_next_bit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x53a1e8d9
+  type_id: 0x3ec500b9
+  full_name: "_find_next_bit"
+}
+elf_symbol {
+  id: 0xeb7cbe24
+  name: "_find_next_zero_bit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdf521442
+  type_id: 0x3ec500b9
+  full_name: "_find_next_zero_bit"
+}
+elf_symbol {
+  id: 0x21c4acad
+  name: "_printk"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x92997ed8
+  type_id: 0x9090664d
+  full_name: "_printk"
+}
+elf_symbol {
+  id: 0x41c78e43
+  name: "_printk_deferred"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1e19eb6c
+  type_id: 0x9090664d
+  full_name: "_printk_deferred"
+}
+elf_symbol {
+  id: 0x92b4cc77
+  name: "_proc_mkdir"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3c4b25ef
+  type_id: 0x394358ea
+  full_name: "_proc_mkdir"
+}
+elf_symbol {
+  id: 0xbaf13f25
+  name: "_raw_read_lock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfe8c61f0
+  type_id: 0x1d756c43
+  full_name: "_raw_read_lock"
+}
+elf_symbol {
+  id: 0x18ca83c0
+  name: "_raw_read_lock_bh"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8dee722d
+  type_id: 0x1d756c43
+  full_name: "_raw_read_lock_bh"
+}
+elf_symbol {
+  id: 0x7828fbe8
+  name: "_raw_read_lock_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x48112d76
+  type_id: 0x1d756c43
+  full_name: "_raw_read_lock_irq"
+}
+elf_symbol {
+  id: 0xa38931c2
+  name: "_raw_read_lock_irqsave"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb1342cdb
+  type_id: 0x3c41f083
+  full_name: "_raw_read_lock_irqsave"
+}
+elf_symbol {
+  id: 0xd4d9e302
+  name: "_raw_read_trylock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x889b1370
+  type_id: 0x906ddeff
+  full_name: "_raw_read_trylock"
+}
+elf_symbol {
+  id: 0xad45b87e
+  name: "_raw_read_unlock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdd4d55b6
+  type_id: 0x1d756c43
+  full_name: "_raw_read_unlock"
+}
+elf_symbol {
+  id: 0x3c981610
+  name: "_raw_read_unlock_bh"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaeb082ad
+  type_id: 0x1d756c43
+  full_name: "_raw_read_unlock_bh"
+}
+elf_symbol {
+  id: 0x439247e9
+  name: "_raw_read_unlock_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa58af0a6
+  type_id: 0x1d756c43
+  full_name: "_raw_read_unlock_irq"
+}
+elf_symbol {
+  id: 0x2ae6e435
+  name: "_raw_read_unlock_irqrestore"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdf2ebb87
+  type_id: 0x1db8b9d1
+  full_name: "_raw_read_unlock_irqrestore"
+}
+elf_symbol {
+  id: 0x8cec743c
+  name: "_raw_spin_lock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xba8fbd64
+  type_id: 0x1eb74850
+  full_name: "_raw_spin_lock"
+}
+elf_symbol {
+  id: 0x688df919
+  name: "_raw_spin_lock_bh"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0c3690fc
+  type_id: 0x1eb74850
+  full_name: "_raw_spin_lock_bh"
+}
+elf_symbol {
+  id: 0xa6329dcf
+  name: "_raw_spin_lock_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8427cc7b
+  type_id: 0x1eb74850
+  full_name: "_raw_spin_lock_irq"
+}
+elf_symbol {
+  id: 0xf7106e83
+  name: "_raw_spin_lock_irqsave"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x34db050b
+  type_id: 0x3f83d490
+  full_name: "_raw_spin_lock_irqsave"
+}
+elf_symbol {
+  id: 0x8edf3483
+  name: "_raw_spin_trylock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfef216eb
+  type_id: 0x93affaec
+  full_name: "_raw_spin_trylock"
+}
+elf_symbol {
+  id: 0x47089d1d
+  name: "_raw_spin_trylock_bh"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8518a4a6
+  type_id: 0x93affaec
+  full_name: "_raw_spin_trylock_bh"
+}
+elf_symbol {
+  id: 0x03c03057
+  name: "_raw_spin_unlock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb5b54b34
+  type_id: 0x1eb74850
+  full_name: "_raw_spin_unlock"
+}
+elf_symbol {
+  id: 0x711ae667
+  name: "_raw_spin_unlock_bh"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe46021ca
+  type_id: 0x1eb74850
+  full_name: "_raw_spin_unlock_bh"
+}
+elf_symbol {
+  id: 0x0e60919e
+  name: "_raw_spin_unlock_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4b750f53
+  type_id: 0x1eb74850
+  full_name: "_raw_spin_unlock_irq"
+}
+elf_symbol {
+  id: 0x50073fd4
+  name: "_raw_spin_unlock_irqrestore"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd35cce70
+  type_id: 0x1e7a9dc2
+  full_name: "_raw_spin_unlock_irqrestore"
+}
+elf_symbol {
+  id: 0x424f8411
+  name: "_raw_write_lock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe68efe41
+  type_id: 0x1d756c43
+  full_name: "_raw_write_lock"
+}
+elf_symbol {
+  id: 0x489f1d79
+  name: "_raw_write_lock_bh"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x51a511eb
+  type_id: 0x1d756c43
+  full_name: "_raw_write_lock_bh"
+}
+elf_symbol {
+  id: 0xaca88f90
+  name: "_raw_write_lock_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3aca0190
+  type_id: 0x1d756c43
+  full_name: "_raw_write_lock_irq"
+}
+elf_symbol {
+  id: 0x5e807f50
+  name: "_raw_write_lock_irqsave"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5021bd81
+  type_id: 0x3c41f083
+  full_name: "_raw_write_lock_irqsave"
+}
+elf_symbol {
+  id: 0x355ed0c4
+  name: "_raw_write_trylock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x258a2c02
+  type_id: 0x906ddeff
+  full_name: "_raw_write_trylock"
+}
+elf_symbol {
+  id: 0xb29f9799
+  name: "_raw_write_unlock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x40235c98
+  type_id: 0x1d756c43
+  full_name: "_raw_write_unlock"
+}
+elf_symbol {
+  id: 0x7e6c8474
+  name: "_raw_write_unlock_bh"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe7ab1ecc
+  type_id: 0x1d756c43
+  full_name: "_raw_write_unlock_bh"
+}
+elf_symbol {
+  id: 0xeaaac8d4
+  name: "_raw_write_unlock_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9f76baf4
+  type_id: 0x1d756c43
+  full_name: "_raw_write_unlock_irq"
+}
+elf_symbol {
+  id: 0x69bac57e
+  name: "_raw_write_unlock_irqrestore"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeb078aee
+  type_id: 0x1db8b9d1
+  full_name: "_raw_write_unlock_irqrestore"
+}
+elf_symbol {
+  id: 0xa5eaf571
+  name: "_snd_pcm_hw_params_any"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0283dfe3
+  type_id: 0x1bf280c6
+  full_name: "_snd_pcm_hw_params_any"
+}
+elf_symbol {
+  id: 0x7c570dc6
+  name: "_totalram_pages"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x944375db
+  type_id: 0xb02b353a
+  full_name: "_totalram_pages"
+}
+elf_symbol {
+  id: 0x993e379e
+  name: "_trace_android_vh_record_pcpu_rwsem_starttime"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbbd3ba26
+  type_id: 0x1713ee74
+  full_name: "_trace_android_vh_record_pcpu_rwsem_starttime"
+}
+elf_symbol {
+  id: 0x86a88093
+  name: "_vb2_fop_release"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x422b52c3
+  type_id: 0x9b37fa13
+  full_name: "_vb2_fop_release"
+}
+elf_symbol {
+  id: 0xfbb6649f
+  name: "access_process_vm"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb3e05868
+  type_id: 0x9a0cfe73
+  full_name: "access_process_vm"
+}
+elf_symbol {
+  id: 0xa3514d5f
+  name: "activate_task"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe4134e16
+  type_id: 0x1b7558dd
+  full_name: "activate_task"
+}
+elf_symbol {
+  id: 0xd20e014a
+  name: "add_cpu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7eb808d0
+  type_id: 0x8ce1baa0
+  full_name: "add_cpu"
+}
+elf_symbol {
+  id: 0xf09e1ca4
+  name: "add_device_randomness"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd66c8184
+  type_id: 0x1d0f4148
+  full_name: "add_device_randomness"
+}
+elf_symbol {
+  id: 0xcef4ad72
+  name: "add_memory"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbd7aaaee
+  type_id: 0x8625f433
+  full_name: "add_memory"
+}
+elf_symbol {
+  id: 0xa5dcf915
+  name: "add_taint"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0eb6eb87
+  type_id: 0x02396084
+  full_name: "add_taint"
+}
+elf_symbol {
+  id: 0xf2768ed7
+  name: "add_timer"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x65744673
+  type_id: 0x1f15d172
+  full_name: "add_timer"
+}
+elf_symbol {
+  id: 0xfbeae533
+  name: "add_timer_on"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0a83a512
+  type_id: 0x1e89523e
+  full_name: "add_timer_on"
+}
+elf_symbol {
+  id: 0xdee25d92
+  name: "add_uevent_var"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9c6febfc
+  type_id: 0x90166130
+  full_name: "add_uevent_var"
+}
+elf_symbol {
+  id: 0xe251c99f
+  name: "add_wait_queue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4afb2238
+  type_id: 0x154da6ed
+  full_name: "add_wait_queue"
+}
+elf_symbol {
+  id: 0xac3dec68
+  name: "add_wait_queue_exclusive"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xde293f9e
+  type_id: 0x154da6ed
+  full_name: "add_wait_queue_exclusive"
+}
+elf_symbol {
+  id: 0xf9bb4624
+  name: "addrconf_add_linklocal"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x49969074
+  type_id: 0x1eaf1d5f
+  full_name: "addrconf_add_linklocal"
+}
+elf_symbol {
+  id: 0x60b70858
+  name: "addrconf_prefix_rcv_add_addr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1da1aeb9
+  type_id: 0x9e6d2eab
+  full_name: "addrconf_prefix_rcv_add_addr"
+}
+elf_symbol {
+  id: 0x7f488498
+  name: "address_space_init_once"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xda486ee7
+  type_id: 0x15f8fb52
+  full_name: "address_space_init_once"
+}
+elf_symbol {
+  id: 0x09cd7a68
+  name: "adjust_managed_page_count"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa61a42f0
+  type_id: 0x12c8be42
+  full_name: "adjust_managed_page_count"
+}
+elf_symbol {
+  id: 0x294249c0
+  name: "aes_encrypt"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x77e9eb37
+  type_id: 0x1e0b6efe
+  full_name: "aes_encrypt"
+}
+elf_symbol {
+  id: 0x6a3cf7b4
+  name: "aes_expandkey"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x558b281d
+  type_id: 0x982246a7
+  full_name: "aes_expandkey"
+}
+elf_symbol {
+  id: 0x510c7445
+  name: "alarm_cancel"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x536e1fa7
+  type_id: 0x9636ff06
+  full_name: "alarm_cancel"
+}
+elf_symbol {
+  id: 0xe4af6f7e
+  name: "alarm_expires_remaining"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0bc0c003
+  type_id: 0x92f0cfba
+  full_name: "alarm_expires_remaining"
+}
+elf_symbol {
+  id: 0x49029965
+  name: "alarm_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1fbe3658
+  type_id: 0x1af67ecb
+  full_name: "alarm_init"
+}
+elf_symbol {
+  id: 0x06e1bebe
+  name: "alarm_start"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x111d2777
+  type_id: 0x1b695da8
+  full_name: "alarm_start"
+}
+elf_symbol {
+  id: 0x18433655
+  name: "alarm_start_relative"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfeb6361a
+  type_id: 0x1b695da8
+  full_name: "alarm_start_relative"
+}
+elf_symbol {
+  id: 0x46e678fc
+  name: "alarm_try_to_cancel"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf3295ffe
+  type_id: 0x9636ff06
+  full_name: "alarm_try_to_cancel"
+}
+elf_symbol {
+  id: 0x5aa4c3e8
+  name: "alarmtimer_get_rtcdev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa376a60e
+  type_id: 0x7e8c435e
+  full_name: "alarmtimer_get_rtcdev"
+}
+elf_symbol {
+  id: 0xbd7c5367
+  name: "all_vm_events"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7278d328
+  type_id: 0x110b09b2
+  full_name: "all_vm_events"
+}
+elf_symbol {
+  id: 0x7a0cc0b9
+  name: "alloc_anon_inode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4ffc3543
+  type_id: 0x12d6b73d
+  full_name: "alloc_anon_inode"
+}
+elf_symbol {
+  id: 0xc0fb25e9
+  name: "alloc_can_err_skb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6b6e2d02
+  type_id: 0x6408a046
+  full_name: "alloc_can_err_skb"
+}
+elf_symbol {
+  id: 0x0fc80d91
+  name: "alloc_can_skb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2913955d
+  type_id: 0x6408a046
+  full_name: "alloc_can_skb"
+}
+elf_symbol {
+  id: 0xc453a761
+  name: "alloc_candev_mqs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x18246485
+  type_id: 0xe4bddbe2
+  full_name: "alloc_candev_mqs"
+}
+elf_symbol {
+  id: 0xf86dd29a
+  name: "alloc_canfd_skb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x903fec4b
+  type_id: 0x643d13df
+  full_name: "alloc_canfd_skb"
+}
+elf_symbol {
+  id: 0xbc8c457a
+  name: "alloc_canxl_skb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf4740e30
+  type_id: 0x641b717f
+  full_name: "alloc_canxl_skb"
+}
+elf_symbol {
+  id: 0xc8c5af1c
+  name: "alloc_chrdev_region"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe3ec2f2b
+  type_id: 0x9093971b
+  full_name: "alloc_chrdev_region"
+}
+elf_symbol {
+  id: 0xdeecf7a4
+  name: "alloc_etherdev_mqs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4489db23
+  type_id: 0xe4bccdf7
+  full_name: "alloc_etherdev_mqs"
+}
+elf_symbol {
+  id: 0xeba70df6
+  name: "alloc_io_pgtable_ops"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe827d155
+  type_id: 0xca4b711f
+  full_name: "alloc_io_pgtable_ops"
+}
+elf_symbol {
+  id: 0xcf6df527
+  name: "alloc_netdev_mqs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa8cf71ff
+  type_id: 0xe554bdb1
+  full_name: "alloc_netdev_mqs"
+}
+elf_symbol {
+  id: 0x00374dfe
+  name: "alloc_pages_exact"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5fc72f0e
+  type_id: 0x685d7099
+  full_name: "alloc_pages_exact"
+}
+elf_symbol {
+  id: 0xb77c96c5
+  name: "alloc_skb_with_frags"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc87863cb
+  type_id: 0x64970caf
+  full_name: "alloc_skb_with_frags"
+}
+elf_symbol {
+  id: 0xc769d5d0
+  name: "alloc_swapdev_block"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x97a6b964
+  type_id: 0xb0c30e7d
+  full_name: "alloc_swapdev_block"
+}
+elf_symbol {
+  id: 0x3374bea7
+  name: "alloc_workqueue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x49cd25ed
+  type_id: 0x06becdf2
+  full_name: "alloc_workqueue"
+}
+elf_symbol {
+  id: 0xd6cb7d0d
+  name: "alt_cb_patch_nops"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1348649e
+  type_id: 0x12841778
+  full_name: "alt_cb_patch_nops"
+}
+elf_symbol {
+  id: 0x5414d325
+  name: "amba_bustype"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x58e2fe15
+  type_id: 0x257935aa
+  full_name: "amba_bustype"
+}
+elf_symbol {
+  id: 0x26711163
+  name: "amba_driver_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2c590a8f
+  type_id: 0x92a877e0
+  full_name: "amba_driver_register"
+}
+elf_symbol {
+  id: 0x8480d9c1
+  name: "amba_driver_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf32def42
+  type_id: 0x1fb0c55c
+  full_name: "amba_driver_unregister"
+}
+elf_symbol {
+  id: 0xb7d7d836
+  name: "amba_release_regions"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x07117a6a
+  type_id: 0x1edfcb66
+  full_name: "amba_release_regions"
+}
+elf_symbol {
+  id: 0xacb3d1d3
+  name: "amba_request_regions"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6529a5fc
+  type_id: 0x933f3b0e
+  full_name: "amba_request_regions"
+}
+elf_symbol {
+  id: 0xd8dbec6e
+  name: "android_rvh_probe_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7fbbd0bb
+  type_id: 0x9eccfc59
+  full_name: "android_rvh_probe_register"
+}
+elf_symbol {
+  id: 0x95eaf556
+  name: "anon_inode_getfd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x70e6fa2e
+  type_id: 0x92d83970
+  full_name: "anon_inode_getfd"
+}
+elf_symbol {
+  id: 0xf2d017ff
+  name: "anon_inode_getfile"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x49b434ee
+  type_id: 0x4eca3251
+  full_name: "anon_inode_getfile"
+}
+elf_symbol {
+  id: 0x520c1997
+  name: "arc4_crypt"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcd47fcc4
+  type_id: 0x1810e728
+  full_name: "arc4_crypt"
+}
+elf_symbol {
+  id: 0x2d3715da
+  name: "arc4_setkey"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2bb32ad1
+  type_id: 0x95e8f83a
+  full_name: "arc4_setkey"
+}
+elf_symbol {
+  id: 0x7ff45ec2
+  name: "arch_freq_scale"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xceed33cf
+  type_id: 0x33756485
+  full_name: "arch_freq_scale"
+}
+elf_symbol {
+  id: 0xc447be59
+  name: "arch_timer_read_counter"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x75fb9062
+  type_id: 0x1f66cd75
+  full_name: "arch_timer_read_counter"
+}
+elf_symbol {
+  id: 0xc6d0ad0a
+  name: "argv_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe0b13336
+  type_id: 0x12746195
+  full_name: "argv_free"
+}
+elf_symbol {
+  id: 0x9403cfad
+  name: "argv_split"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7380dffa
+  type_id: 0x309a868e
+  full_name: "argv_split"
+}
+elf_symbol {
+  id: 0x1cf86989
+  name: "arm64_use_ng_mappings"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xaf56600a
+  type_id: 0x6d7f5ff6
+  full_name: "arm64_use_ng_mappings"
+}
+elf_symbol {
+  id: 0xccb0f5d6
+  name: "arm_smccc_1_1_get_conduit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6d467b08
+  type_id: 0x6bb7aee3
+  full_name: "arm_smccc_1_1_get_conduit"
+}
+elf_symbol {
+  id: 0xd634ca29
+  name: "arm_smccc_1_2_hvc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xea1c3e3a
+}
+elf_symbol {
+  id: 0xd672b08d
+  name: "arm_smccc_1_2_smc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3e79fb00
+}
+elf_symbol {
+  id: 0xb61718ed
+  name: "arm_smccc_get_version"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe98f55f2
+  type_id: 0x45f82b62
+  full_name: "arm_smccc_get_version"
+}
+elf_symbol {
+  id: 0x1eee53db
+  name: "arp_tbl"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x228f026d
+  type_id: 0x77670b3b
+  full_name: "arp_tbl"
+}
+elf_symbol {
+  id: 0xd9184490
+  name: "async_schedule_node"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf5f370e0
+  type_id: 0xd4733416
+  full_name: "async_schedule_node"
+}
+elf_symbol {
+  id: 0xe6ba30b7
+  name: "async_schedule_node_domain"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd21b61bd
+  type_id: 0xd473b4c2
+  full_name: "async_schedule_node_domain"
+}
+elf_symbol {
+  id: 0xa09651b4
+  name: "async_synchronize_cookie"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7a81541b
+  type_id: 0x0ef7ccf3
+  full_name: "async_synchronize_cookie"
+}
+elf_symbol {
+  id: 0x67de90c8
+  name: "async_synchronize_full_domain"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6ca4bf88
+  type_id: 0x18951485
+  full_name: "async_synchronize_full_domain"
+}
+elf_symbol {
+  id: 0x5f6a1554
+  name: "atomic_notifier_call_chain"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd3752c27
+  type_id: 0x90ede0b0
+  full_name: "atomic_notifier_call_chain"
+}
+elf_symbol {
+  id: 0x3beebbde
+  name: "atomic_notifier_chain_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2b9997fb
+  type_id: 0x9048c0ea
+  full_name: "atomic_notifier_chain_register"
+}
+elf_symbol {
+  id: 0x24064426
+  name: "atomic_notifier_chain_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7181db30
+  type_id: 0x9048c0ea
+  full_name: "atomic_notifier_chain_unregister"
+}
+elf_symbol {
+  id: 0x82786c66
+  name: "autoremove_wake_function"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xad73041f
+  type_id: 0x9d71353d
+  full_name: "autoremove_wake_function"
+}
+elf_symbol {
+  id: 0xd772fde3
+  name: "auxiliary_driver_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x360eb92d
+  type_id: 0x1402b86b
+  full_name: "auxiliary_driver_unregister"
+}
+elf_symbol {
+  id: 0x1abdc14f
+  name: "available_idle_cpu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2088e082
+  type_id: 0x8448d7e4
+  full_name: "available_idle_cpu"
+}
+elf_symbol {
+  id: 0xb9c34cbd
+  name: "backlight_device_get_by_type"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa05eff7d
+  type_id: 0x5f2659b9
+  full_name: "backlight_device_get_by_type"
+}
+elf_symbol {
+  id: 0x0bd7f049
+  name: "backlight_device_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8b962297
+  type_id: 0x7330f867
+  full_name: "backlight_device_register"
+}
+elf_symbol {
+  id: 0xf54175ef
+  name: "backlight_device_set_brightness"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2c7af7fa
+  type_id: 0x916a6d3b
+  full_name: "backlight_device_set_brightness"
+}
+elf_symbol {
+  id: 0x8814eddf
+  name: "backlight_device_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xde0a1424
+  type_id: 0x1cbf0a15
+  full_name: "backlight_device_unregister"
+}
+elf_symbol {
+  id: 0x72f35f22
+  name: "badblocks_check"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x71346e09
+  type_id: 0x9f4e1f6b
+  full_name: "badblocks_check"
+}
+elf_symbol {
+  id: 0x679bf165
+  name: "badblocks_clear"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x50a5814a
+  type_id: 0x9f4ee14e
+  full_name: "badblocks_clear"
+}
+elf_symbol {
+  id: 0xde4c4481
+  name: "badblocks_exit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x51dcecc4
+  type_id: 0x110d554e
+  full_name: "badblocks_exit"
+}
+elf_symbol {
+  id: 0x09aecad0
+  name: "badblocks_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7cc00362
+  type_id: 0x9d8964be
+  full_name: "badblocks_init"
+}
+elf_symbol {
+  id: 0xca999587
+  name: "badblocks_set"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfafd0543
+  type_id: 0x9f4f7dcd
+  full_name: "badblocks_set"
+}
+elf_symbol {
+  id: 0x761c5685
+  name: "badblocks_show"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xffebeb9c
+  type_id: 0x156f22f3
+  full_name: "badblocks_show"
+}
+elf_symbol {
+  id: 0x4e505a21
+  name: "balance_dirty_pages_ratelimited"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe2bfb0fc
+  type_id: 0x15f8fb52
+  full_name: "balance_dirty_pages_ratelimited"
+}
+elf_symbol {
+  id: 0xa3814535
+  name: "balance_push_callback"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xa6209c0c
+  type_id: 0x3e2562ef
+  full_name: "balance_push_callback"
+}
+elf_symbol {
+  id: 0xb49a04fc
+  name: "balloon_mops"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xd4181b62
+  type_id: 0xf34f7202
+  full_name: "balloon_mops"
+}
+elf_symbol {
+  id: 0x5d44dba7
+  name: "balloon_page_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2730ce30
+  type_id: 0xbd98f080
+  full_name: "balloon_page_alloc"
+}
+elf_symbol {
+  id: 0x3af91fad
+  name: "balloon_page_dequeue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf05f319e
+  type_id: 0xbd9523d9
+  full_name: "balloon_page_dequeue"
+}
+elf_symbol {
+  id: 0x0b55af16
+  name: "balloon_page_enqueue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xee1b07d6
+  type_id: 0x108f8fb0
+  full_name: "balloon_page_enqueue"
+}
+elf_symbol {
+  id: 0x3c7e214c
+  name: "baswap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7b5ce5c3
+  type_id: 0x188219ae
+  full_name: "baswap"
+}
+elf_symbol {
+  id: 0x3a41b660
+  name: "bcmp"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x263c3152
+  type_id: 0x931e5758
+  full_name: "bcmp"
+}
+elf_symbol {
+  id: 0x21702781
+  name: "bdev_end_io_acct"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc633719c
+  type_id: 0x11b1f76e
+  full_name: "bdev_end_io_acct"
+}
+elf_symbol {
+  id: 0x4d72c929
+  name: "bdev_nr_zones"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf128df27
+  type_id: 0xcdd0f8ac
+  full_name: "bdev_nr_zones"
+}
+elf_symbol {
+  id: 0xf701e854
+  name: "bdev_start_io_acct"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc3af13bf
+  type_id: 0x33937c96
+  full_name: "bdev_start_io_acct"
+}
+elf_symbol {
+  id: 0x18c171b8
+  name: "bdi_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x67eda760
+  type_id: 0x5120d3a0
+  full_name: "bdi_alloc"
+}
+elf_symbol {
+  id: 0xd040ed1b
+  name: "bdi_dev_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x728c7141
+  type_id: 0x98792c3d
+  full_name: "bdi_dev_name"
+}
+elf_symbol {
+  id: 0x8fb4b5f6
+  name: "bdi_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x94ee392a
+  type_id: 0x1aa56a0d
+  full_name: "bdi_put"
+}
+elf_symbol {
+  id: 0x6bb4e80d
+  name: "bdi_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbc6ec4a0
+  type_id: 0x976cd0e7
+  full_name: "bdi_register"
+}
+elf_symbol {
+  id: 0x979cde5c
+  name: "bdi_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4c6cd086
+  type_id: 0x1aa56a0d
+  full_name: "bdi_unregister"
+}
+elf_symbol {
+  id: 0xcdba3a55
+  name: "bgpio_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7af1722b
+  type_id: 0x9bbcaaf0
+  full_name: "bgpio_init"
+}
+elf_symbol {
+  id: 0x977cc973
+  name: "bin2hex"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd45cc6ca
+  type_id: 0x3fc78978
+  full_name: "bin2hex"
+}
+elf_symbol {
+  id: 0x49201db3
+  name: "bio_add_page"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe4220405
+  type_id: 0x98e25911
+  full_name: "bio_add_page"
+}
+elf_symbol {
+  id: 0xacc709b0
+  name: "bio_alloc_bioset"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7a1deb9b
+  type_id: 0x935a996a
+  full_name: "bio_alloc_bioset"
+}
+elf_symbol {
+  id: 0x2b2698f0
+  name: "bio_associate_blkg"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc7ddbbea
+  type_id: 0x15f0919b
+  full_name: "bio_associate_blkg"
+}
+elf_symbol {
+  id: 0xb2553250
+  name: "bio_chain"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x247f0ac0
+  type_id: 0x15a61d9b
+  full_name: "bio_chain"
+}
+elf_symbol {
+  id: 0xb389e6a5
+  name: "bio_clone_blkg_association"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbd96aeea
+  type_id: 0x15a61d9b
+  full_name: "bio_clone_blkg_association"
+}
+elf_symbol {
+  id: 0x3a8604de
+  name: "bio_end_io_acct_remapped"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc797f514
+  type_id: 0x153e4f8f
+  full_name: "bio_end_io_acct_remapped"
+}
+elf_symbol {
+  id: 0x61a552c6
+  name: "bio_endio"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4703fc89
+  type_id: 0x15f0919b
+  full_name: "bio_endio"
+}
+elf_symbol {
+  id: 0x5a9da856
+  name: "bio_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe34e5e08
+  type_id: 0x15c2ff80
+  full_name: "bio_init"
+}
+elf_symbol {
+  id: 0x1d853176
+  name: "bio_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x53dfa0a8
+  type_id: 0x15f0919b
+  full_name: "bio_put"
+}
+elf_symbol {
+  id: 0x1cb0de6c
+  name: "bio_start_io_acct"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf9eebc5c
+  type_id: 0x34c40d5b
+  full_name: "bio_start_io_acct"
+}
+elf_symbol {
+  id: 0xe0e9f920
+  name: "bit_wait"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x16e297c3
+  type_id: 0x9ad0bd67
+  full_name: "bit_wait"
+}
+elf_symbol {
+  id: 0xfba0da8c
+  name: "bit_wait_timeout"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x44bae227
+  type_id: 0x9ad0bd67
+  full_name: "bit_wait_timeout"
+}
+elf_symbol {
+  id: 0x181f78de
+  name: "bitmap_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x020dbf27
+  type_id: 0xb9640b60
+  full_name: "bitmap_alloc"
+}
+elf_symbol {
+  id: 0xbe6da55e
+  name: "bitmap_allocate_region"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdac4913a
+  type_id: 0x9d1c66a2
+  full_name: "bitmap_allocate_region"
+}
+elf_symbol {
+  id: 0x95792096
+  name: "bitmap_find_free_region"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x63a7c28c
+  type_id: 0x9d1c66a2
+  full_name: "bitmap_find_free_region"
+}
+elf_symbol {
+  id: 0x510c8347
+  name: "bitmap_find_next_zero_area_off"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x64127b67
+  type_id: 0x30ff87bc
+  full_name: "bitmap_find_next_zero_area_off"
+}
+elf_symbol {
+  id: 0xe4dd862f
+  name: "bitmap_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xca21ebd3
+  type_id: 0x1f3094b2
+  full_name: "bitmap_free"
+}
+elf_symbol {
+  id: 0x3a1cd883
+  name: "bitmap_from_arr32"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf8d07858
+  type_id: 0x11de7bea
+  full_name: "bitmap_from_arr32"
+}
+elf_symbol {
+  id: 0xa1f151cb
+  name: "bitmap_parse"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb97220ff
+  type_id: 0x9312d42a
+  full_name: "bitmap_parse"
+}
+elf_symbol {
+  id: 0x10425c32
+  name: "bitmap_parselist"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1b015d25
+  type_id: 0x920433df
+  full_name: "bitmap_parselist"
+}
+elf_symbol {
+  id: 0xbd9a7739
+  name: "bitmap_print_to_pagebuf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf474c21c
+  type_id: 0x86c30f0f
+  full_name: "bitmap_print_to_pagebuf"
+}
+elf_symbol {
+  id: 0x82c387e4
+  name: "bitmap_release_region"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x574c2e74
+  type_id: 0x1004d41e
+  full_name: "bitmap_release_region"
+}
+elf_symbol {
+  id: 0xb5b2d835
+  name: "bitmap_to_arr32"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4ec54e78
+  type_id: 0x1e473040
+  full_name: "bitmap_to_arr32"
+}
+elf_symbol {
+  id: 0x226328f4
+  name: "bitmap_zalloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2688ec10
+  type_id: 0xb9640b60
+  full_name: "bitmap_zalloc"
+}
+elf_symbol {
+  id: 0x0b5d5f1c
+  name: "blk_abort_request"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc8b5ed38
+  type_id: 0x1738d1f7
+  full_name: "blk_abort_request"
+}
+elf_symbol {
+  id: 0x4ffac461
+  name: "blk_crypto_keyslot_index"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5ba9c87f
+  type_id: 0xce3c45e2
+  full_name: "blk_crypto_keyslot_index"
+}
+elf_symbol {
+  id: 0xad8bab96
+  name: "blk_crypto_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf1693a4f
+  type_id: 0xfca40809
+  full_name: "blk_crypto_register"
+}
+elf_symbol {
+  id: 0x528ef002
+  name: "blk_crypto_reprogram_all_keys"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x659cfc33
+  type_id: 0x12bd0b6f
+  full_name: "blk_crypto_reprogram_all_keys"
+}
+elf_symbol {
+  id: 0x90bf9007
+  name: "blk_execute_rq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x086c05ec
+  type_id: 0x4c603ab7
+  full_name: "blk_execute_rq"
+}
+elf_symbol {
+  id: 0xd76a9123
+  name: "blk_execute_rq_nowait"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5df3cf15
+  type_id: 0x168d2c88
+  full_name: "blk_execute_rq_nowait"
+}
+elf_symbol {
+  id: 0xc0d4821a
+  name: "blk_finish_plug"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x74a1c993
+  type_id: 0x1eabf44d
+  full_name: "blk_finish_plug"
+}
+elf_symbol {
+  id: 0xaea1564a
+  name: "blk_mq_alloc_request"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8692844c
+  type_id: 0xdde97c3b
+  full_name: "blk_mq_alloc_request"
+}
+elf_symbol {
+  id: 0x0d1fc920
+  name: "blk_mq_alloc_sq_tag_set"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xef13212f
+  type_id: 0x967da352
+  full_name: "blk_mq_alloc_sq_tag_set"
+}
+elf_symbol {
+  id: 0xd34c6466
+  name: "blk_mq_alloc_tag_set"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0721e636
+  type_id: 0x96b0de71
+  full_name: "blk_mq_alloc_tag_set"
+}
+elf_symbol {
+  id: 0x51c471d6
+  name: "blk_mq_complete_request"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1dc2c5ad
+  type_id: 0x1738d1f7
+  full_name: "blk_mq_complete_request"
+}
+elf_symbol {
+  id: 0x6458d26a
+  name: "blk_mq_destroy_queue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc1b001bf
+  type_id: 0x12c8ce83
+  full_name: "blk_mq_destroy_queue"
+}
+elf_symbol {
+  id: 0x2e876bee
+  name: "blk_mq_end_request"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x33603ce7
+  type_id: 0x16d771f6
+  full_name: "blk_mq_end_request"
+}
+elf_symbol {
+  id: 0x1996f188
+  name: "blk_mq_end_request_batch"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x76a01618
+  type_id: 0x19ae6079
+  full_name: "blk_mq_end_request_batch"
+}
+elf_symbol {
+  id: 0xbc2fc882
+  name: "blk_mq_free_request"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4a1f3b7f
+  type_id: 0x1738d1f7
+  full_name: "blk_mq_free_request"
+}
+elf_symbol {
+  id: 0x70bd48bd
+  name: "blk_mq_free_tag_set"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x53a10096
+  type_id: 0x1ba86ccd
+  full_name: "blk_mq_free_tag_set"
+}
+elf_symbol {
+  id: 0x5e553962
+  name: "blk_mq_freeze_queue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5aad250c
+  type_id: 0x12c8ce83
+  full_name: "blk_mq_freeze_queue"
+}
+elf_symbol {
+  id: 0x98c69e3e
+  name: "blk_mq_init_queue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x43ae5843
+  type_id: 0x69e09f9b
+  full_name: "blk_mq_init_queue"
+}
+elf_symbol {
+  id: 0x16569be2
+  name: "blk_mq_map_queues"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb2fa093e
+  type_id: 0x15421ea8
+  full_name: "blk_mq_map_queues"
+}
+elf_symbol {
+  id: 0x1f81c0c0
+  name: "blk_mq_quiesce_queue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x36d1251c
+  type_id: 0x12c8ce83
+  full_name: "blk_mq_quiesce_queue"
+}
+elf_symbol {
+  id: 0xcebb0cec
+  name: "blk_mq_requeue_request"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6e39b978
+  type_id: 0x168d2c88
+  full_name: "blk_mq_requeue_request"
+}
+elf_symbol {
+  id: 0x27ae2b17
+  name: "blk_mq_rq_cpu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3e7a8f71
+  type_id: 0xc97bfe9f
+  full_name: "blk_mq_rq_cpu"
+}
+elf_symbol {
+  id: 0x49ee3f1e
+  name: "blk_mq_sched_mark_restart_hctx"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe3b16553
+  type_id: 0x181a6fb5
+  full_name: "blk_mq_sched_mark_restart_hctx"
+}
+elf_symbol {
+  id: 0x646a1dc6
+  name: "blk_mq_sched_try_insert_merge"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1a3a0dab
+  type_id: 0xfc81549c
+  full_name: "blk_mq_sched_try_insert_merge"
+}
+elf_symbol {
+  id: 0xc40c1fbe
+  name: "blk_mq_sched_try_merge"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5408b2fb
+  type_id: 0xfcb31d8f
+  full_name: "blk_mq_sched_try_merge"
+}
+elf_symbol {
+  id: 0x96f2cda8
+  name: "blk_mq_start_request"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf934cfbd
+  type_id: 0x1738d1f7
+  full_name: "blk_mq_start_request"
+}
+elf_symbol {
+  id: 0x1162870c
+  name: "blk_mq_start_stopped_hw_queues"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfe6cf254
+  type_id: 0x137d33fc
+  full_name: "blk_mq_start_stopped_hw_queues"
+}
+elf_symbol {
+  id: 0x310e729f
+  name: "blk_mq_stop_hw_queue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x52e3bdb3
+  type_id: 0x181a6fb5
+  full_name: "blk_mq_stop_hw_queue"
+}
+elf_symbol {
+  id: 0xd13a60aa
+  name: "blk_mq_stop_hw_queues"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaefc5466
+  type_id: 0x12c8ce83
+  full_name: "blk_mq_stop_hw_queues"
+}
+elf_symbol {
+  id: 0x37d3a115
+  name: "blk_mq_tagset_busy_iter"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8ff5e86c
+  type_id: 0x1b939af9
+  full_name: "blk_mq_tagset_busy_iter"
+}
+elf_symbol {
+  id: 0x95bdba0c
+  name: "blk_mq_unfreeze_queue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x129f51ef
+  type_id: 0x12c8ce83
+  full_name: "blk_mq_unfreeze_queue"
+}
+elf_symbol {
+  id: 0xd2c9c20b
+  name: "blk_mq_unique_tag"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcfc4c418
+  type_id: 0x4258ab06
+  full_name: "blk_mq_unique_tag"
+}
+elf_symbol {
+  id: 0x86bec7f5
+  name: "blk_mq_unquiesce_queue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0f9aa4aa
+  type_id: 0x12c8ce83
+  full_name: "blk_mq_unquiesce_queue"
+}
+elf_symbol {
+  id: 0x5e358f2a
+  name: "blk_mq_update_nr_hw_queues"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3a4938c4
+  type_id: 0x1a34ef81
+  full_name: "blk_mq_update_nr_hw_queues"
+}
+elf_symbol {
+  id: 0xa36916c0
+  name: "blk_mq_virtio_map_queues"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x62c83e5b
+  type_id: 0x15ff0e04
+  full_name: "blk_mq_virtio_map_queues"
+}
+elf_symbol {
+  id: 0x1fa93c73
+  name: "blk_op_str"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x19c42957
+  type_id: 0xb0abc898
+  full_name: "blk_op_str"
+}
+elf_symbol {
+  id: 0x76783663
+  name: "blk_pm_runtime_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa375b1a7
+  type_id: 0x12c1ad66
+  full_name: "blk_pm_runtime_init"
+}
+elf_symbol {
+  id: 0xeae629ca
+  name: "blk_put_queue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3d054af0
+  type_id: 0x12c8ce83
+  full_name: "blk_put_queue"
+}
+elf_symbol {
+  id: 0x012046d8
+  name: "blk_queue_alignment_offset"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0b6018a7
+  type_id: 0x13dedb1b
+  full_name: "blk_queue_alignment_offset"
+}
+elf_symbol {
+  id: 0xc539a531
+  name: "blk_queue_chunk_sectors"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xede0233d
+  type_id: 0x13dedb1b
+  full_name: "blk_queue_chunk_sectors"
+}
+elf_symbol {
+  id: 0x362bc08c
+  name: "blk_queue_flag_clear"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6d17731d
+  type_id: 0x01dc01ed
+  full_name: "blk_queue_flag_clear"
+}
+elf_symbol {
+  id: 0xe594310a
+  name: "blk_queue_flag_set"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xef5eec46
+  type_id: 0x01dc01ed
+  full_name: "blk_queue_flag_set"
+}
+elf_symbol {
+  id: 0xbb3cf175
+  name: "blk_queue_io_min"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xef31aabc
+  type_id: 0x13dedb1b
+  full_name: "blk_queue_io_min"
+}
+elf_symbol {
+  id: 0x9d74edbd
+  name: "blk_queue_io_opt"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x675963b4
+  type_id: 0x13dedb1b
+  full_name: "blk_queue_io_opt"
+}
+elf_symbol {
+  id: 0x52491b14
+  name: "blk_queue_logical_block_size"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x973f30bd
+  type_id: 0x13dedb1b
+  full_name: "blk_queue_logical_block_size"
+}
+elf_symbol {
+  id: 0x195f2f00
+  name: "blk_queue_max_discard_sectors"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x98abf96a
+  type_id: 0x13dedb1b
+  full_name: "blk_queue_max_discard_sectors"
+}
+elf_symbol {
+  id: 0x19979235
+  name: "blk_queue_max_discard_segments"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9b0aa7d6
+  type_id: 0x11ec3686
+  full_name: "blk_queue_max_discard_segments"
+}
+elf_symbol {
+  id: 0x077e4244
+  name: "blk_queue_max_hw_sectors"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x21e4ae1f
+  type_id: 0x13dedb1b
+  full_name: "blk_queue_max_hw_sectors"
+}
+elf_symbol {
+  id: 0x226f126d
+  name: "blk_queue_max_secure_erase_sectors"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3cc2bebf
+  type_id: 0x13dedb1b
+  full_name: "blk_queue_max_secure_erase_sectors"
+}
+elf_symbol {
+  id: 0x4af16e82
+  name: "blk_queue_max_segment_size"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7e1dd3d4
+  type_id: 0x13dedb1b
+  full_name: "blk_queue_max_segment_size"
+}
+elf_symbol {
+  id: 0x84b34184
+  name: "blk_queue_max_segments"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6f02eaaa
+  type_id: 0x11ec3686
+  full_name: "blk_queue_max_segments"
+}
+elf_symbol {
+  id: 0x8adf461b
+  name: "blk_queue_max_write_zeroes_sectors"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xea75ae35
+  type_id: 0x13dedb1b
+  full_name: "blk_queue_max_write_zeroes_sectors"
+}
+elf_symbol {
+  id: 0xe523da53
+  name: "blk_queue_max_zone_append_sectors"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe1d16c91
+  type_id: 0x13dedb1b
+  full_name: "blk_queue_max_zone_append_sectors"
+}
+elf_symbol {
+  id: 0xea321133
+  name: "blk_queue_physical_block_size"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6e05674b
+  type_id: 0x13dedb1b
+  full_name: "blk_queue_physical_block_size"
+}
+elf_symbol {
+  id: 0xc084dab6
+  name: "blk_queue_required_elevator_features"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa426c4e0
+  type_id: 0x13dedb1b
+  full_name: "blk_queue_required_elevator_features"
+}
+elf_symbol {
+  id: 0x092baf69
+  name: "blk_queue_rq_timeout"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbb5ff7ac
+  type_id: 0x13dedb1b
+  full_name: "blk_queue_rq_timeout"
+}
+elf_symbol {
+  id: 0xcc0dd52b
+  name: "blk_queue_update_dma_alignment"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2ce9289c
+  type_id: 0x13544dcf
+  full_name: "blk_queue_update_dma_alignment"
+}
+elf_symbol {
+  id: 0xe7756398
+  name: "blk_queue_update_dma_pad"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x556b254e
+  type_id: 0x13dedb1b
+  full_name: "blk_queue_update_dma_pad"
+}
+elf_symbol {
+  id: 0x62aba3ce
+  name: "blk_queue_virt_boundary"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf8614f71
+  type_id: 0x12051b11
+  full_name: "blk_queue_virt_boundary"
+}
+elf_symbol {
+  id: 0x4c74830f
+  name: "blk_queue_write_cache"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc09419f2
+  type_id: 0x13666c2b
+  full_name: "blk_queue_write_cache"
+}
+elf_symbol {
+  id: 0xcacfeb0e
+  name: "blk_req_needs_zone_write_lock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8d25c734
+  type_id: 0xf904db60
+  full_name: "blk_req_needs_zone_write_lock"
+}
+elf_symbol {
+  id: 0xc5a6985e
+  name: "blk_revalidate_disk_zones"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8c0decfc
+  type_id: 0x95fe3b9e
+  full_name: "blk_revalidate_disk_zones"
+}
+elf_symbol {
+  id: 0xd1c0f0bd
+  name: "blk_rq_map_kern"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x40c92d75
+  type_id: 0x9fad711c
+  full_name: "blk_rq_map_kern"
+}
+elf_symbol {
+  id: 0x89901311
+  name: "blk_rq_map_user"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa257e8d9
+  type_id: 0x9faf0c45
+  full_name: "blk_rq_map_user"
+}
+elf_symbol {
+  id: 0xf744d7a6
+  name: "blk_rq_map_user_io"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x31a85e75
+  type_id: 0x9a77e52d
+  full_name: "blk_rq_map_user_io"
+}
+elf_symbol {
+  id: 0x835f3bf3
+  name: "blk_rq_map_user_iov"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9e390407
+  type_id: 0x9faf8e70
+  full_name: "blk_rq_map_user_iov"
+}
+elf_symbol {
+  id: 0xdc30e4d6
+  name: "blk_rq_unmap_user"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa9c2c7ef
+  type_id: 0x98e82327
+  full_name: "blk_rq_unmap_user"
+}
+elf_symbol {
+  id: 0xcb1ad79b
+  name: "blk_start_plug"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x393c5eb3
+  type_id: 0x1eabf44d
+  full_name: "blk_start_plug"
+}
+elf_symbol {
+  id: 0xb78983c5
+  name: "blk_stat_enable_accounting"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4d3b2046
+  type_id: 0x12c8ce83
+  full_name: "blk_stat_enable_accounting"
+}
+elf_symbol {
+  id: 0xe6192860
+  name: "blk_status_to_errno"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x84502a47
+  type_id: 0x837ae337
+  full_name: "blk_status_to_errno"
+}
+elf_symbol {
+  id: 0xf40ec9b3
+  name: "blk_update_request"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7cdbf81e
+  type_id: 0xf8fa1a38
+  full_name: "blk_update_request"
+}
+elf_symbol {
+  id: 0x2e5cd908
+  name: "blk_zone_cond_str"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x44cf8cf0
+  type_id: 0x81e59ea6
+  full_name: "blk_zone_cond_str"
+}
+elf_symbol {
+  id: 0xe00b32cb
+  name: "blkcg_activate_policy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9255af46
+  type_id: 0x9f22c05d
+  full_name: "blkcg_activate_policy"
+}
+elf_symbol {
+  id: 0xae700ddc
+  name: "blkcg_deactivate_policy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcf172169
+  type_id: 0x123a72e1
+  full_name: "blkcg_deactivate_policy"
+}
+elf_symbol {
+  id: 0xa304d3f1
+  name: "blkcg_policy_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xce154e47
+  type_id: 0x9e1fb710
+  full_name: "blkcg_policy_register"
+}
+elf_symbol {
+  id: 0xcd31ef47
+  name: "blkcg_policy_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf5f4c064
+  type_id: 0x130705ac
+  full_name: "blkcg_policy_unregister"
+}
+elf_symbol {
+  id: 0x00dd3231
+  name: "blkcg_print_blkgs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa7234365
+  type_id: 0x11691052
+  full_name: "blkcg_print_blkgs"
+}
+elf_symbol {
+  id: 0x4cb4702d
+  name: "blkcg_root"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x7f4b0314
+  type_id: 0x455a585a
+  full_name: "blkcg_root"
+}
+elf_symbol {
+  id: 0x0b067d4b
+  name: "blkdev_get_by_dev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcf384c1c
+  type_id: 0x138bff3f
+  full_name: "blkdev_get_by_dev"
+}
+elf_symbol {
+  id: 0xc0201123
+  name: "blkdev_get_by_path"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7d1b9e1d
+  type_id: 0x26cc0900
+  full_name: "blkdev_get_by_path"
+}
+elf_symbol {
+  id: 0x2a322266
+  name: "blkdev_issue_flush"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x71ae43b1
+  type_id: 0x9e8b6578
+  full_name: "blkdev_issue_flush"
+}
+elf_symbol {
+  id: 0x57e1cd01
+  name: "blkdev_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x786c891c
+  type_id: 0x11c6c94b
+  full_name: "blkdev_put"
+}
+elf_symbol {
+  id: 0xf0581d11
+  name: "blkg_conf_finish"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x484b258e
+  type_id: 0x1213f72a
+  full_name: "blkg_conf_finish"
+}
+elf_symbol {
+  id: 0x35eb35db
+  name: "blkg_conf_prep"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0f23272f
+  type_id: 0x9b82fce2
+  full_name: "blkg_conf_prep"
+}
+elf_symbol {
+  id: 0x120ecf6c
+  name: "blkg_prfill_rwstat"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6fefffef
+  type_id: 0x56c1d7a5
+  full_name: "blkg_prfill_rwstat"
+}
+elf_symbol {
+  id: 0xabd39b51
+  name: "blkg_rwstat_exit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb1058d3d
+  type_id: 0x1b7e7271
+  full_name: "blkg_rwstat_exit"
+}
+elf_symbol {
+  id: 0x6dfac71b
+  name: "blkg_rwstat_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x70834f95
+  type_id: 0x95a05bb2
+  full_name: "blkg_rwstat_init"
+}
+elf_symbol {
+  id: 0xb0184730
+  name: "blkg_rwstat_recursive_sum"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4f9f8f53
+  type_id: 0x104d4296
+  full_name: "blkg_rwstat_recursive_sum"
+}
+elf_symbol {
+  id: 0x427cedc9
+  name: "blockdev_superblock"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xbeb84a0c
+  type_id: 0x26ee682a
+  full_name: "blockdev_superblock"
+}
+elf_symbol {
+  id: 0x11fbb9ce
+  name: "blocking_notifier_call_chain"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8317ad7c
+  type_id: 0x96cb8de9
+  full_name: "blocking_notifier_call_chain"
+}
+elf_symbol {
+  id: 0xd4a0f991
+  name: "blocking_notifier_chain_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbb0c86a5
+  type_id: 0x966eadb3
+  full_name: "blocking_notifier_chain_register"
+}
+elf_symbol {
+  id: 0x864cb6b1
+  name: "blocking_notifier_chain_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x963aa2a9
+  type_id: 0x966eadb3
+  full_name: "blocking_notifier_chain_unregister"
+}
+elf_symbol {
+  id: 0x55c7afec
+  name: "bpf_dispatcher_xdp_func"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x03b814ca
+  type_id: 0xc0405795
+  full_name: "bpf_dispatcher_xdp_func"
+}
+elf_symbol {
+  id: 0xf737e767
+  name: "bpf_master_redirect_enabled_key"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x146cc88f
+  type_id: 0x8e47c273
+  full_name: "bpf_master_redirect_enabled_key"
+}
+elf_symbol {
+  id: 0x6ad917a1
+  name: "bpf_prog_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6a2296c2
+  type_id: 0x1de47b51
+  full_name: "bpf_prog_add"
+}
+elf_symbol {
+  id: 0xdeb1861d
+  name: "bpf_prog_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5ff8b2b7
+  type_id: 0x1c78f81d
+  full_name: "bpf_prog_put"
+}
+elf_symbol {
+  id: 0x7661d150
+  name: "bpf_prog_sub"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf8eeef85
+  type_id: 0x1de47b51
+  full_name: "bpf_prog_sub"
+}
+elf_symbol {
+  id: 0x6a712ee1
+  name: "bpf_stats_enabled_key"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xf84bd6ee
+  type_id: 0x8e47c273
+  full_name: "bpf_stats_enabled_key"
+}
+elf_symbol {
+  id: 0xe594a242
+  name: "bpf_trace_run1"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe6643531
+  type_id: 0x1e3074d3
+  full_name: "bpf_trace_run1"
+}
+elf_symbol {
+  id: 0x3afeb397
+  name: "bpf_trace_run10"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb2057ce2
+  type_id: 0x1e169275
+  full_name: "bpf_trace_run10"
+}
+elf_symbol {
+  id: 0xfbbe101f
+  name: "bpf_trace_run11"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x11d6a547
+  type_id: 0x1e169276
+  full_name: "bpf_trace_run11"
+}
+elf_symbol {
+  id: 0xbf7946b8
+  name: "bpf_trace_run12"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7e34c48d
+  type_id: 0x1e169277
+  full_name: "bpf_trace_run12"
+}
+elf_symbol {
+  id: 0xa4530154
+  name: "bpf_trace_run2"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc4b28304
+  type_id: 0x1e14fc1f
+  full_name: "bpf_trace_run2"
+}
+elf_symbol {
+  id: 0x67137f1b
+  name: "bpf_trace_run3"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1f7600cb
+  type_id: 0x1e16b493
+  full_name: "bpf_trace_run3"
+}
+elf_symbol {
+  id: 0x25d3d88b
+  name: "bpf_trace_run4"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc7b92fda
+  type_id: 0x1e16901b
+  full_name: "bpf_trace_run4"
+}
+elf_symbol {
+  id: 0xea922c0b
+  name: "bpf_trace_run5"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x267d05bf
+  type_id: 0x1e169253
+  full_name: "bpf_trace_run5"
+}
+elf_symbol {
+  id: 0xab52b3bb
+  name: "bpf_trace_run6"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa69c2a3c
+  type_id: 0x1e169278
+  full_name: "bpf_trace_run6"
+}
+elf_symbol {
+  id: 0x681114f4
+  name: "bpf_trace_run7"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb5e91f0b
+  type_id: 0x1e169279
+  full_name: "bpf_trace_run7"
+}
+elf_symbol {
+  id: 0x28d17942
+  name: "bpf_trace_run8"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x63b71df2
+  type_id: 0x1e16927a
+  full_name: "bpf_trace_run8"
+}
+elf_symbol {
+  id: 0xef91c650
+  name: "bpf_trace_run9"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x486596c9
+  type_id: 0x1e16927b
+  full_name: "bpf_trace_run9"
+}
+elf_symbol {
+  id: 0xac82dbbd
+  name: "bpf_warn_invalid_xdp_action"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa7f1716a
+  type_id: 0x1ccd91f4
+  full_name: "bpf_warn_invalid_xdp_action"
+}
+elf_symbol {
+  id: 0xae106411
+  name: "bsearch"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1057a279
+  type_id: 0x580bd9c6
+  full_name: "bsearch"
+}
+elf_symbol {
+  id: 0x53eb107b
+  name: "bsg_job_done"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6c3af660
+  type_id: 0x1fd78946
+  full_name: "bsg_job_done"
+}
+elf_symbol {
+  id: 0x9f7a08f8
+  name: "bsg_remove_queue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf484608f
+  type_id: 0x12c8ce83
+  full_name: "bsg_remove_queue"
+}
+elf_symbol {
+  id: 0xd5dbc767
+  name: "bsg_setup_queue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa64b961f
+  type_id: 0x62b8d7ec
+  full_name: "bsg_setup_queue"
+}
+elf_symbol {
+  id: 0x096781b3
+  name: "bt_accept_dequeue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa0c2214c
+  type_id: 0x6b5469c2
+  full_name: "bt_accept_dequeue"
+}
+elf_symbol {
+  id: 0x264769f1
+  name: "bt_accept_enqueue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd1448dc5
+  type_id: 0x17a71216
+  full_name: "bt_accept_enqueue"
+}
+elf_symbol {
+  id: 0x164e4899
+  name: "bt_accept_unlink"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xec5c7e14
+  type_id: 0x17c95d08
+  full_name: "bt_accept_unlink"
+}
+elf_symbol {
+  id: 0xc507d6ff
+  name: "bt_debugfs"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xbb89b7e0
+  type_id: 0x120540d1
+  full_name: "bt_debugfs"
+}
+elf_symbol {
+  id: 0xe0efe9cd
+  name: "bt_err"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7b8c32f1
+  type_id: 0x1d88d4f1
+  full_name: "bt_err"
+}
+elf_symbol {
+  id: 0x23531f35
+  name: "bt_err_ratelimited"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd7613212
+  type_id: 0x1d88d4f1
+  full_name: "bt_err_ratelimited"
+}
+elf_symbol {
+  id: 0x6ebfe2e8
+  name: "bt_info"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0718b8b7
+  type_id: 0x1d88d4f1
+  full_name: "bt_info"
+}
+elf_symbol {
+  id: 0xedfd0ad5
+  name: "bt_procfs_cleanup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x17602ecb
+  type_id: 0x13488e67
+  full_name: "bt_procfs_cleanup"
+}
+elf_symbol {
+  id: 0x73b0a768
+  name: "bt_procfs_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe1369968
+  type_id: 0x9e559491
+  full_name: "bt_procfs_init"
+}
+elf_symbol {
+  id: 0x7b64a27a
+  name: "bt_sock_ioctl"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x66286463
+  type_id: 0x9882219f
+  full_name: "bt_sock_ioctl"
+}
+elf_symbol {
+  id: 0xe7a5b986
+  name: "bt_sock_link"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3db15e11
+  type_id: 0x15f330e3
+  full_name: "bt_sock_link"
+}
+elf_symbol {
+  id: 0xb230dae9
+  name: "bt_sock_poll"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeb896aef
+  type_id: 0x2545d8c8
+  full_name: "bt_sock_poll"
+}
+elf_symbol {
+  id: 0x348f5f0f
+  name: "bt_sock_reclassify_lock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x76a49bad
+  type_id: 0x1655de44
+  full_name: "bt_sock_reclassify_lock"
+}
+elf_symbol {
+  id: 0x51bc5c83
+  name: "bt_sock_recvmsg"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7d81de51
+  type_id: 0x9917165a
+  full_name: "bt_sock_recvmsg"
+}
+elf_symbol {
+  id: 0x13abbd1d
+  name: "bt_sock_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5ba40f91
+  type_id: 0x84acfa74
+  full_name: "bt_sock_register"
+}
+elf_symbol {
+  id: 0xeab75311
+  name: "bt_sock_stream_recvmsg"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x25c780fa
+  type_id: 0x9917165a
+  full_name: "bt_sock_stream_recvmsg"
+}
+elf_symbol {
+  id: 0x1b4335c7
+  name: "bt_sock_unlink"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x90793c60
+  type_id: 0x15f330e3
+  full_name: "bt_sock_unlink"
+}
+elf_symbol {
+  id: 0x6e1a6ca2
+  name: "bt_sock_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8fea24bd
+  type_id: 0x09506558
+  full_name: "bt_sock_unregister"
+}
+elf_symbol {
+  id: 0xd3a66342
+  name: "bt_sock_wait_ready"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x09c198d9
+  type_id: 0x9bc7fa2c
+  full_name: "bt_sock_wait_ready"
+}
+elf_symbol {
+  id: 0x3fe4f18a
+  name: "bt_sock_wait_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x93aa13a6
+  type_id: 0x9b41b1a1
+  full_name: "bt_sock_wait_state"
+}
+elf_symbol {
+  id: 0x80d2df6b
+  name: "bt_status"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7bd9427a
+  type_id: 0x95a45e65
+  full_name: "bt_status"
+}
+elf_symbol {
+  id: 0x676ffcb7
+  name: "bt_to_errno"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7aad008b
+  type_id: 0xa780332f
+  full_name: "bt_to_errno"
+}
+elf_symbol {
+  id: 0xd84e3ad6
+  name: "bt_warn"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x214e4265
+  type_id: 0x1d88d4f1
+  full_name: "bt_warn"
+}
+elf_symbol {
+  id: 0xcf431833
+  name: "bt_warn_ratelimited"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xddacccf6
+  type_id: 0x1d88d4f1
+  full_name: "bt_warn_ratelimited"
+}
+elf_symbol {
+  id: 0xd7dd26cb
+  name: "btbcm_check_bdaddr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4ad61208
+  type_id: 0x9af01625
+  full_name: "btbcm_check_bdaddr"
+}
+elf_symbol {
+  id: 0xb9d93634
+  name: "btbcm_finalize"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xde741d81
+  type_id: 0x9aac764b
+  full_name: "btbcm_finalize"
+}
+elf_symbol {
+  id: 0x29b56c73
+  name: "btbcm_initialize"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6122bec3
+  type_id: 0x9aac764b
+  full_name: "btbcm_initialize"
+}
+elf_symbol {
+  id: 0xd473cf33
+  name: "btbcm_patchram"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2ff19ae7
+  type_id: 0x9a3c1260
+  full_name: "btbcm_patchram"
+}
+elf_symbol {
+  id: 0xed606d98
+  name: "btbcm_read_pcm_int_params"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9810f488
+  type_id: 0x9a4917d6
+  full_name: "btbcm_read_pcm_int_params"
+}
+elf_symbol {
+  id: 0xfc8c52c1
+  name: "btbcm_set_bdaddr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbc528922
+  type_id: 0x9a2fc16a
+  full_name: "btbcm_set_bdaddr"
+}
+elf_symbol {
+  id: 0xb47c5ffe
+  name: "btbcm_setup_apple"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x961dc512
+  type_id: 0x9af01625
+  full_name: "btbcm_setup_apple"
+}
+elf_symbol {
+  id: 0xdded4dcd
+  name: "btbcm_setup_patchram"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x75ffcb84
+  type_id: 0x9af01625
+  full_name: "btbcm_setup_patchram"
+}
+elf_symbol {
+  id: 0x9dea2dda
+  name: "btbcm_write_pcm_int_params"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xba4441a0
+  type_id: 0x9a22976b
+  full_name: "btbcm_write_pcm_int_params"
+}
+elf_symbol {
+  id: 0x8ea00f54
+  name: "build_skb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb7cab24f
+  type_id: 0x6fa775f5
+  full_name: "build_skb"
+}
+elf_symbol {
+  id: 0x0f9d7b5e
+  name: "bus_find_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x78729785
+  type_id: 0xaddb3e9f
+  full_name: "bus_find_device"
+}
+elf_symbol {
+  id: 0x0be8da0e
+  name: "bus_for_each_dev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8963bd73
+  type_id: 0x9d7c8594
+  full_name: "bus_for_each_dev"
+}
+elf_symbol {
+  id: 0x921644f5
+  name: "bus_for_each_drv"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1fa6e94f
+  type_id: 0x9dbc74e0
+  full_name: "bus_for_each_drv"
+}
+elf_symbol {
+  id: 0xfc46d423
+  name: "bus_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x289cfdfc
+  type_id: 0x9d737e1c
+  full_name: "bus_register"
+}
+elf_symbol {
+  id: 0xbeb0dfc5
+  name: "bus_register_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6885dd50
+  type_id: 0x9d1da48d
+  full_name: "bus_register_notifier"
+}
+elf_symbol {
+  id: 0xea38ad01
+  name: "bus_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf469358a
+  type_id: 0x106bcca0
+  full_name: "bus_unregister"
+}
+elf_symbol {
+  id: 0x21a2a1f8
+  name: "bus_unregister_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x198c6162
+  type_id: 0x9d1da48d
+  full_name: "bus_unregister_notifier"
+}
+elf_symbol {
+  id: 0x35fe6c72
+  name: "cache_line_size"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x605d5bfa
+  type_id: 0x9d80e32f
+  full_name: "cache_line_size"
+}
+elf_symbol {
+  id: 0x9a3e308a
+  name: "caches_clean_inval_pou"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc2e168ab
+}
+elf_symbol {
+  id: 0x77a1b544
+  name: "call_netdevice_notifiers"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1264cbde
+  type_id: 0x91972281
+  full_name: "call_netdevice_notifiers"
+}
+elf_symbol {
+  id: 0x39939627
+  name: "call_rcu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x28aa6a67
+  type_id: 0x1e336b85
+  full_name: "call_rcu"
+}
+elf_symbol {
+  id: 0xf2cb6869
+  name: "call_rcu_tasks"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x959ec5f5
+  type_id: 0x1e336b85
+  full_name: "call_rcu_tasks"
+}
+elf_symbol {
+  id: 0xeb39173a
+  name: "call_rcu_tasks_trace"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x52c35e83
+  type_id: 0x1e336b85
+  full_name: "call_rcu_tasks_trace"
+}
+elf_symbol {
+  id: 0xf24e74f6
+  name: "call_srcu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x80820c04
+  type_id: 0x189003fa
+  full_name: "call_srcu"
+}
+elf_symbol {
+  id: 0x57eddd34
+  name: "can_bus_off"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8b0135b3
+  type_id: 0x1c31d966
+  full_name: "can_bus_off"
+}
+elf_symbol {
+  id: 0x4d603739
+  name: "can_change_mtu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x99a240b0
+  type_id: 0x90b5e896
+  full_name: "can_change_mtu"
+}
+elf_symbol {
+  id: 0xea093ba2
+  name: "can_change_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf30870d5
+  type_id: 0x1c6ae2fd
+  full_name: "can_change_state"
+}
+elf_symbol {
+  id: 0x3dd13fcb
+  name: "can_dropped_invalid_skb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd5058dc1
+  type_id: 0xf218ee55
+  full_name: "can_dropped_invalid_skb"
+}
+elf_symbol {
+  id: 0xdac5537c
+  name: "can_eth_ioctl_hwts"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1b85db72
+  type_id: 0x91e86e2c
+  full_name: "can_eth_ioctl_hwts"
+}
+elf_symbol {
+  id: 0xd8781f70
+  name: "can_ethtool_op_get_ts_info_hwts"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x10d5effc
+  type_id: 0x916bd4e5
+  full_name: "can_ethtool_op_get_ts_info_hwts"
+}
+elf_symbol {
+  id: 0x1a528d17
+  name: "can_fd_dlc2len"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf12d9387
+  type_id: 0x591da2f7
+  full_name: "can_fd_dlc2len"
+}
+elf_symbol {
+  id: 0x71be4162
+  name: "can_fd_len2dlc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6047ede6
+  type_id: 0x591da2f7
+  full_name: "can_fd_len2dlc"
+}
+elf_symbol {
+  id: 0x4f5fc64f
+  name: "can_free_echo_skb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x12d5f8bd
+  type_id: 0x1d2130a6
+  full_name: "can_free_echo_skb"
+}
+elf_symbol {
+  id: 0xceaadfeb
+  name: "can_get_echo_skb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbe9832d7
+  type_id: 0xc3621fce
+  full_name: "can_get_echo_skb"
+}
+elf_symbol {
+  id: 0x65b51b54
+  name: "can_get_state_str"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x10d892eb
+  type_id: 0x9cd32d58
+  full_name: "can_get_state_str"
+}
+elf_symbol {
+  id: 0x974fe999
+  name: "can_proto_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcf3cfa9e
+  type_id: 0x93fb658b
+  full_name: "can_proto_register"
+}
+elf_symbol {
+  id: 0x12cb2316
+  name: "can_proto_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2f0640d2
+  type_id: 0x1ee3d737
+  full_name: "can_proto_unregister"
+}
+elf_symbol {
+  id: 0x72704652
+  name: "can_put_echo_skb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa22906af
+  type_id: 0x9c09d6aa
+  full_name: "can_put_echo_skb"
+}
+elf_symbol {
+  id: 0x23b4653d
+  name: "can_rx_offload_add_fifo"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd61089d0
+  type_id: 0x91c43545
+  full_name: "can_rx_offload_add_fifo"
+}
+elf_symbol {
+  id: 0x69e0ff72
+  name: "can_rx_offload_add_manual"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9d723f0c
+  type_id: 0x91c43545
+  full_name: "can_rx_offload_add_manual"
+}
+elf_symbol {
+  id: 0xb7a102cf
+  name: "can_rx_offload_add_timestamp"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9fca72e0
+  type_id: 0x91d5541c
+  full_name: "can_rx_offload_add_timestamp"
+}
+elf_symbol {
+  id: 0xd6da7e29
+  name: "can_rx_offload_del"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc311da22
+  type_id: 0x1f5badff
+  full_name: "can_rx_offload_del"
+}
+elf_symbol {
+  id: 0xeccdc9a3
+  name: "can_rx_offload_enable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5e717c7e
+  type_id: 0x1f5badff
+  full_name: "can_rx_offload_enable"
+}
+elf_symbol {
+  id: 0xc49a22c5
+  name: "can_rx_offload_get_echo_skb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6a6f51f0
+  type_id: 0xc03cbac0
+  full_name: "can_rx_offload_get_echo_skb"
+}
+elf_symbol {
+  id: 0xc44643cc
+  name: "can_rx_offload_irq_finish"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9c6a8710
+  type_id: 0x1f5badff
+  full_name: "can_rx_offload_irq_finish"
+}
+elf_symbol {
+  id: 0xa9645df3
+  name: "can_rx_offload_irq_offload_fifo"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe0ac9bd8
+  type_id: 0x92431f43
+  full_name: "can_rx_offload_irq_offload_fifo"
+}
+elf_symbol {
+  id: 0xa955119c
+  name: "can_rx_offload_irq_offload_timestamp"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x35637c7c
+  type_id: 0x900b938d
+  full_name: "can_rx_offload_irq_offload_timestamp"
+}
+elf_symbol {
+  id: 0xca216232
+  name: "can_rx_offload_queue_tail"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x03270238
+  type_id: 0x925622e7
+  full_name: "can_rx_offload_queue_tail"
+}
+elf_symbol {
+  id: 0x61ab1398
+  name: "can_rx_offload_queue_timestamp"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x86f09600
+  type_id: 0x926460ed
+  full_name: "can_rx_offload_queue_timestamp"
+}
+elf_symbol {
+  id: 0xa7a30fa3
+  name: "can_rx_offload_threaded_irq_finish"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9fa015d3
+  type_id: 0x1f5badff
+  full_name: "can_rx_offload_threaded_irq_finish"
+}
+elf_symbol {
+  id: 0x6abd4acd
+  name: "can_rx_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x79473a3e
+  type_id: 0x9e789129
+  full_name: "can_rx_register"
+}
+elf_symbol {
+  id: 0xd0f84332
+  name: "can_rx_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc6d395bb
+  type_id: 0x13602394
+  full_name: "can_rx_unregister"
+}
+elf_symbol {
+  id: 0x72003f5f
+  name: "can_send"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9b9a1272
+  type_id: 0x9d4fba25
+  full_name: "can_send"
+}
+elf_symbol {
+  id: 0x291a7ba1
+  name: "can_skb_get_frame_len"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb9941f27
+  type_id: 0xc1439b43
+  full_name: "can_skb_get_frame_len"
+}
+elf_symbol {
+  id: 0xb3c81ca9
+  name: "can_sock_destruct"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xad6f5038
+  type_id: 0x17c95d08
+  full_name: "can_sock_destruct"
+}
+elf_symbol {
+  id: 0xc85ca106
+  name: "cancel_delayed_work"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xda571594
+  type_id: 0xf3110cae
+  full_name: "cancel_delayed_work"
+}
+elf_symbol {
+  id: 0x9c1662dc
+  name: "cancel_delayed_work_sync"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf8beca97
+  type_id: 0xf3110cae
+  full_name: "cancel_delayed_work_sync"
+}
+elf_symbol {
+  id: 0x9e7fc289
+  name: "cancel_work_sync"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd969d6f4
+  type_id: 0xfdf39d0a
+  full_name: "cancel_work_sync"
+}
+elf_symbol {
+  id: 0x0e419b40
+  name: "capable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc6cbbc89
+  type_id: 0xe76c6fcf
+  full_name: "capable"
+}
+elf_symbol {
+  id: 0xb2bfcc0c
+  name: "cdc_parse_cdc_header"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8ca5f80e
+  type_id: 0x99ed2791
+  full_name: "cdc_parse_cdc_header"
+}
+elf_symbol {
+  id: 0x06192615
+  name: "cdev_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf27a67e1
+  type_id: 0x996ed754
+  full_name: "cdev_add"
+}
+elf_symbol {
+  id: 0x9e3deb49
+  name: "cdev_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x00198a28
+  type_id: 0x6e128fdc
+  full_name: "cdev_alloc"
+}
+elf_symbol {
+  id: 0xf77ff2ff
+  name: "cdev_del"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x61ee3bf2
+  type_id: 0x17cb3906
+  full_name: "cdev_del"
+}
+elf_symbol {
+  id: 0xa84b7a9c
+  name: "cdev_device_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x15ffed1b
+  type_id: 0x9adae85f
+  full_name: "cdev_device_add"
+}
+elf_symbol {
+  id: 0x1c488fd9
+  name: "cdev_device_del"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5d326315
+  type_id: 0x17c25ae3
+  full_name: "cdev_device_del"
+}
+elf_symbol {
+  id: 0x4a75c450
+  name: "cdev_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7d3657fd
+  type_id: 0x17107dc5
+  full_name: "cdev_init"
+}
+elf_symbol {
+  id: 0xc8e5adc6
+  name: "cec_allocate_adapter"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x15f5770a
+  type_id: 0x1d796e4e
+  full_name: "cec_allocate_adapter"
+}
+elf_symbol {
+  id: 0xa0a33b62
+  name: "cec_delete_adapter"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf8448702
+  type_id: 0x1e99dfd1
+  full_name: "cec_delete_adapter"
+}
+elf_symbol {
+  id: 0xc80b76b2
+  name: "cec_fill_conn_info_from_drm"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf11879a3
+  type_id: 0x1d25d246
+  full_name: "cec_fill_conn_info_from_drm"
+}
+elf_symbol {
+  id: 0xc97591d1
+  name: "cec_notifier_cec_adap_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe134b48f
+  type_id: 0xe6030de1
+  full_name: "cec_notifier_cec_adap_register"
+}
+elf_symbol {
+  id: 0xbf627c6e
+  name: "cec_notifier_cec_adap_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x32e7a8f2
+  type_id: 0x15aafaab
+  full_name: "cec_notifier_cec_adap_unregister"
+}
+elf_symbol {
+  id: 0x690c64c9
+  name: "cec_notifier_conn_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4672dfad
+  type_id: 0xe6019c41
+  full_name: "cec_notifier_conn_register"
+}
+elf_symbol {
+  id: 0xfe061fe6
+  name: "cec_notifier_conn_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaee236c6
+  type_id: 0x154ae24f
+  full_name: "cec_notifier_conn_unregister"
+}
+elf_symbol {
+  id: 0xcda0bdad
+  name: "cec_notifier_set_phys_addr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa01fbb6b
+  type_id: 0x170fd4b0
+  full_name: "cec_notifier_set_phys_addr"
+}
+elf_symbol {
+  id: 0x3c28dcec
+  name: "cec_notifier_set_phys_addr_from_edid"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc16f2887
+  type_id: 0x158d1ae2
+  full_name: "cec_notifier_set_phys_addr_from_edid"
+}
+elf_symbol {
+  id: 0x1ff124cb
+  name: "cec_received_msg_ts"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4a02d48f
+  type_id: 0x1ec3ec50
+  full_name: "cec_received_msg_ts"
+}
+elf_symbol {
+  id: 0x80b6d91d
+  name: "cec_register_adapter"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x531c105e
+  type_id: 0x93880e88
+  full_name: "cec_register_adapter"
+}
+elf_symbol {
+  id: 0x229b68f6
+  name: "cec_s_log_addrs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4eb23f8b
+  type_id: 0x93d6e983
+  full_name: "cec_s_log_addrs"
+}
+elf_symbol {
+  id: 0xa9a292c3
+  name: "cec_s_phys_addr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x439383f3
+  type_id: 0x1cc7b6f9
+  full_name: "cec_s_phys_addr"
+}
+elf_symbol {
+  id: 0x9a074cae
+  name: "cec_s_phys_addr_from_edid"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x77b2ccc2
+  type_id: 0x1e5e277c
+  full_name: "cec_s_phys_addr_from_edid"
+}
+elf_symbol {
+  id: 0xc4e53e95
+  name: "cec_transmit_attempt_done_ts"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8f36bfc4
+  type_id: 0x1e38df18
+  full_name: "cec_transmit_attempt_done_ts"
+}
+elf_symbol {
+  id: 0xba1a33c8
+  name: "cec_transmit_done_ts"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8b13e07e
+  type_id: 0x1e365682
+  full_name: "cec_transmit_done_ts"
+}
+elf_symbol {
+  id: 0xe2dc88d9
+  name: "cec_unregister_adapter"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb3265bd7
+  type_id: 0x1e99dfd1
+  full_name: "cec_unregister_adapter"
+}
+elf_symbol {
+  id: 0x3c85cae0
+  name: "cgroup_add_legacy_cftypes"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2677d819
+  type_id: 0x9f4f3809
+  full_name: "cgroup_add_legacy_cftypes"
+}
+elf_symbol {
+  id: 0x4ce62869
+  name: "cgroup_path_ns"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x84c7051f
+  type_id: 0x9b87e6ee
+  full_name: "cgroup_path_ns"
+}
+elf_symbol {
+  id: 0x6d77f512
+  name: "cgroup_taskset_first"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc815fe12
+  type_id: 0x751b5661
+  full_name: "cgroup_taskset_first"
+}
+elf_symbol {
+  id: 0xb3cbf3c8
+  name: "cgroup_taskset_next"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa23b7f66
+  type_id: 0x751b5661
+  full_name: "cgroup_taskset_next"
+}
+elf_symbol {
+  id: 0x7a871d1c
+  name: "check_move_unevictable_pages"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6e8d0410
+  type_id: 0x11b81220
+  full_name: "check_move_unevictable_pages"
+}
+elf_symbol {
+  id: 0x91718d34
+  name: "check_preempt_curr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd9ade0b0
+  type_id: 0x1b7558dd
+  full_name: "check_preempt_curr"
+}
+elf_symbol {
+  id: 0x65e5fa26
+  name: "check_zeroed_user"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3ff94393
+  type_id: 0x9017f3f4
+  full_name: "check_zeroed_user"
+}
+elf_symbol {
+  id: 0x2a71a0e1
+  name: "class_create_file_ns"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7f96615d
+  type_id: 0x97df7018
+  full_name: "class_create_file_ns"
+}
+elf_symbol {
+  id: 0x4a8d54b6
+  name: "class_destroy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd5fc0938
+  type_id: 0x1a0b4b72
+  full_name: "class_destroy"
+}
+elf_symbol {
+  id: 0xac4c3a4f
+  name: "class_dev_iter_exit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa7641c7c
+  type_id: 0x1d9aaa82
+  full_name: "class_dev_iter_exit"
+}
+elf_symbol {
+  id: 0x6a6dce96
+  name: "class_dev_iter_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x067484d5
+  type_id: 0x1d33c7e7
+  full_name: "class_dev_iter_init"
+}
+elf_symbol {
+  id: 0x37cd3bf4
+  name: "class_dev_iter_next"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xafe8798f
+  type_id: 0xa02dcb2f
+  full_name: "class_dev_iter_next"
+}
+elf_symbol {
+  id: 0xe062f201
+  name: "class_find_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6af5a23e
+  type_id: 0xa7bbb94d
+  full_name: "class_find_device"
+}
+elf_symbol {
+  id: 0x9f11f727
+  name: "class_for_each_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3e37109e
+  type_id: 0x971c0246
+  full_name: "class_for_each_device"
+}
+elf_symbol {
+  id: 0xb29100f2
+  name: "class_interface_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x040bd461
+  type_id: 0x106aedb0
+  full_name: "class_interface_unregister"
+}
+elf_symbol {
+  id: 0xef9eb644
+  name: "class_remove_file_ns"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe11eda7f
+  type_id: 0x1ac7c2a4
+  full_name: "class_remove_file_ns"
+}
+elf_symbol {
+  id: 0xf91cb171
+  name: "class_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x69bef55d
+  type_id: 0x1a0b4b72
+  full_name: "class_unregister"
+}
+elf_symbol {
+  id: 0x00d9abe7
+  name: "cleanup_srcu_struct"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x68fe9814
+  type_id: 0x187ab05b
+  full_name: "cleanup_srcu_struct"
+}
+elf_symbol {
+  id: 0xb63845e5
+  name: "clear_page"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3d9ee9f0
+}
+elf_symbol {
+  id: 0x5332f89b
+  name: "clk_bulk_disable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x479f7d4b
+  type_id: 0x099500f1
+  full_name: "clk_bulk_disable"
+}
+elf_symbol {
+  id: 0xdfc28761
+  name: "clk_bulk_enable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc7a7e770
+  type_id: 0x848db24d
+  full_name: "clk_bulk_enable"
+}
+elf_symbol {
+  id: 0x75df86d2
+  name: "clk_bulk_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x129984cf
+  type_id: 0x9c84371e
+  full_name: "clk_bulk_get"
+}
+elf_symbol {
+  id: 0x2427d483
+  name: "clk_bulk_prepare"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xead5c8e5
+  type_id: 0x848db24d
+  full_name: "clk_bulk_prepare"
+}
+elf_symbol {
+  id: 0x69f839d5
+  name: "clk_bulk_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xef29fcdd
+  type_id: 0x09b6f734
+  full_name: "clk_bulk_put"
+}
+elf_symbol {
+  id: 0x9ff364ff
+  name: "clk_bulk_put_all"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa8caa845
+  type_id: 0x09b6f734
+  full_name: "clk_bulk_put_all"
+}
+elf_symbol {
+  id: 0x7c9d3fd1
+  name: "clk_bulk_unprepare"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x63c08029
+  type_id: 0x099500f1
+  full_name: "clk_bulk_unprepare"
+}
+elf_symbol {
+  id: 0x48a58872
+  name: "clk_disable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb6e6d99d
+  type_id: 0x1febeb84
+  full_name: "clk_disable"
+}
+elf_symbol {
+  id: 0x3b996551
+  name: "clk_divider_ops"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x8fd318d4
+  type_id: 0xde3bc780
+  full_name: "clk_divider_ops"
+}
+elf_symbol {
+  id: 0x6e1fafc8
+  name: "clk_divider_ro_ops"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xb042fac5
+  type_id: 0xde3bc780
+  full_name: "clk_divider_ro_ops"
+}
+elf_symbol {
+  id: 0xdac60909
+  name: "clk_enable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x815588a6
+  type_id: 0x92f35938
+  full_name: "clk_enable"
+}
+elf_symbol {
+  id: 0x39dbce1e
+  name: "clk_fixed_factor_ops"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x1865e2fc
+  type_id: 0xde3bc780
+  full_name: "clk_fixed_factor_ops"
+}
+elf_symbol {
+  id: 0x5a11b234
+  name: "clk_fixed_rate_ops"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xcaf54f87
+  type_id: 0xde3bc780
+  full_name: "clk_fixed_rate_ops"
+}
+elf_symbol {
+  id: 0x8a96e88d
+  name: "clk_fractional_divider_ops"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x4154963f
+  type_id: 0xde3bc780
+  full_name: "clk_fractional_divider_ops"
+}
+elf_symbol {
+  id: 0xbd2ef94c
+  name: "clk_gate_is_enabled"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5d79c495
+  type_id: 0x9f39cb9e
+  full_name: "clk_gate_is_enabled"
+}
+elf_symbol {
+  id: 0x580bab0e
+  name: "clk_gate_ops"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xe056f714
+  type_id: 0xde3bc780
+  full_name: "clk_gate_ops"
+}
+elf_symbol {
+  id: 0x48318742
+  name: "clk_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5d2bc299
+  type_id: 0xa671941e
+  full_name: "clk_get"
+}
+elf_symbol {
+  id: 0xa11919c2
+  name: "clk_get_parent"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x63150e06
+  type_id: 0xa96c5286
+  full_name: "clk_get_parent"
+}
+elf_symbol {
+  id: 0x25ef9f7a
+  name: "clk_get_rate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x556e4390
+  type_id: 0x3edf7744
+  full_name: "clk_get_rate"
+}
+elf_symbol {
+  id: 0xd6393164
+  name: "clk_hw_get_clk"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x425f67d6
+  type_id: 0xa45e82f4
+  full_name: "clk_hw_get_clk"
+}
+elf_symbol {
+  id: 0x6c7fb432
+  name: "clk_hw_get_flags"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4888394f
+  type_id: 0x3ece9456
+  full_name: "clk_hw_get_flags"
+}
+elf_symbol {
+  id: 0x93003994
+  name: "clk_hw_get_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7e1ec924
+  type_id: 0x9d264ea6
+  full_name: "clk_hw_get_name"
+}
+elf_symbol {
+  id: 0xe8a9c1dd
+  name: "clk_hw_get_num_parents"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0fc1ea2b
+  type_id: 0xc1b927fe
+  full_name: "clk_hw_get_num_parents"
+}
+elf_symbol {
+  id: 0xd7368737
+  name: "clk_hw_get_parent"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x01ff9461
+  type_id: 0xd103f224
+  full_name: "clk_hw_get_parent"
+}
+elf_symbol {
+  id: 0xd60d382d
+  name: "clk_hw_get_parent_by_index"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x497af998
+  type_id: 0xd015e7bc
+  full_name: "clk_hw_get_parent_by_index"
+}
+elf_symbol {
+  id: 0xf187a948
+  name: "clk_hw_get_parent_index"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaf08cd8f
+  type_id: 0x9f39cb9e
+  full_name: "clk_hw_get_parent_index"
+}
+elf_symbol {
+  id: 0xcbc9d8c5
+  name: "clk_hw_get_rate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x73f4f415
+  type_id: 0x3ece9456
+  full_name: "clk_hw_get_rate"
+}
+elf_symbol {
+  id: 0xe71b4f1a
+  name: "clk_hw_get_rate_range"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8a362a3c
+  type_id: 0x1239dff8
+  full_name: "clk_hw_get_rate_range"
+}
+elf_symbol {
+  id: 0x3ad97d2a
+  name: "clk_hw_is_enabled"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x39c6bcf3
+  type_id: 0xf1c60201
+  full_name: "clk_hw_is_enabled"
+}
+elf_symbol {
+  id: 0x82573917
+  name: "clk_hw_is_prepared"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4d27d89b
+  type_id: 0xf1c60201
+  full_name: "clk_hw_is_prepared"
+}
+elf_symbol {
+  id: 0x879dc57b
+  name: "clk_hw_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x703e9b98
+  type_id: 0x9d3d4fff
+  full_name: "clk_hw_register"
+}
+elf_symbol {
+  id: 0x4adcbe96
+  name: "clk_hw_register_composite"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd025cbfd
+  type_id: 0xde01d430
+  full_name: "clk_hw_register_composite"
+}
+elf_symbol {
+  id: 0xee305d87
+  name: "clk_hw_register_fixed_factor"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc6d86f1f
+  type_id: 0xde008e21
+  full_name: "clk_hw_register_fixed_factor"
+}
+elf_symbol {
+  id: 0x3d3dfc90
+  name: "clk_hw_round_rate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb08b8340
+  type_id: 0x33d83070
+  full_name: "clk_hw_round_rate"
+}
+elf_symbol {
+  id: 0x76052ea8
+  name: "clk_hw_set_parent"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x080f13e0
+  type_id: 0x9f125915
+  full_name: "clk_hw_set_parent"
+}
+elf_symbol {
+  id: 0x754e3185
+  name: "clk_hw_set_rate_range"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x85d0e039
+  type_id: 0x12e071e9
+  full_name: "clk_hw_set_rate_range"
+}
+elf_symbol {
+  id: 0x72598679
+  name: "clk_hw_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x35616a26
+  type_id: 0x12217922
+  full_name: "clk_hw_unregister"
+}
+elf_symbol {
+  id: 0xd2c17be4
+  name: "clk_is_match"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8b149c36
+  type_id: 0xf275a972
+  full_name: "clk_is_match"
+}
+elf_symbol {
+  id: 0xc5d5f65e
+  name: "clk_mux_index_to_val"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa21f2ce7
+  type_id: 0xc3860c60
+  full_name: "clk_mux_index_to_val"
+}
+elf_symbol {
+  id: 0x6ca4b892
+  name: "clk_mux_ops"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x2c68f124
+  type_id: 0xde3bc780
+  full_name: "clk_mux_ops"
+}
+elf_symbol {
+  id: 0x5e64011a
+  name: "clk_mux_ro_ops"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xd689ab17
+  type_id: 0xde3bc780
+  full_name: "clk_mux_ro_ops"
+}
+elf_symbol {
+  id: 0xe1ca0d15
+  name: "clk_notifier_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x60091316
+  type_id: 0x929d83a9
+  full_name: "clk_notifier_register"
+}
+elf_symbol {
+  id: 0x3452fd74
+  name: "clk_notifier_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x719e17ff
+  type_id: 0x929d83a9
+  full_name: "clk_notifier_unregister"
+}
+elf_symbol {
+  id: 0x62ee7f8a
+  name: "clk_prepare"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7c9a7371
+  type_id: 0x92f35938
+  full_name: "clk_prepare"
+}
+elf_symbol {
+  id: 0x7d1f0700
+  name: "clk_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2e1ca751
+  type_id: 0x1febeb84
+  full_name: "clk_put"
+}
+elf_symbol {
+  id: 0xbfeba170
+  name: "clk_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2e6edf21
+  type_id: 0xa6a24441
+  full_name: "clk_register"
+}
+elf_symbol {
+  id: 0x76cb6cc8
+  name: "clk_register_clkdev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc9822234
+  type_id: 0x92049fc1
+  full_name: "clk_register_clkdev"
+}
+elf_symbol {
+  id: 0x822d6c04
+  name: "clk_register_composite"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa7ee61bf
+  type_id: 0xa67f9780
+  full_name: "clk_register_composite"
+}
+elf_symbol {
+  id: 0xde57ee2c
+  name: "clk_register_divider_table"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf1215e76
+  type_id: 0xa67edb66
+  full_name: "clk_register_divider_table"
+}
+elf_symbol {
+  id: 0x0de8247b
+  name: "clk_register_fixed_factor"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0f3e4115
+  type_id: 0xa67ecd91
+  full_name: "clk_register_fixed_factor"
+}
+elf_symbol {
+  id: 0xc594b8ee
+  name: "clk_register_fixed_rate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x82eca5da
+  type_id: 0xa67ed13b
+  full_name: "clk_register_fixed_rate"
+}
+elf_symbol {
+  id: 0x5821013d
+  name: "clk_register_gate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x80ae6dc6
+  type_id: 0xa67edb67
+  full_name: "clk_register_gate"
+}
+elf_symbol {
+  id: 0xd96da8c9
+  name: "clk_register_mux_table"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xec6e6405
+  type_id: 0xa67ea08b
+  full_name: "clk_register_mux_table"
+}
+elf_symbol {
+  id: 0xffe637ce
+  name: "clk_restore_context"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6259d291
+  type_id: 0x10985193
+  full_name: "clk_restore_context"
+}
+elf_symbol {
+  id: 0xd84adb21
+  name: "clk_round_rate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x43f81957
+  type_id: 0xa89e541c
+  full_name: "clk_round_rate"
+}
+elf_symbol {
+  id: 0xed719736
+  name: "clk_save_context"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa531471e
+  type_id: 0x9d80e32f
+  full_name: "clk_save_context"
+}
+elf_symbol {
+  id: 0x2b1e3d59
+  name: "clk_set_parent"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2396c7f0
+  type_id: 0x92046299
+  full_name: "clk_set_parent"
+}
+elf_symbol {
+  id: 0x495f0223
+  name: "clk_set_rate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x76d9b876
+  type_id: 0x923e8caa
+  full_name: "clk_set_rate"
+}
+elf_symbol {
+  id: 0x7fbd0d58
+  name: "clk_sync_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe00d71a9
+  type_id: 0x100e6fc8
+  full_name: "clk_sync_state"
+}
+elf_symbol {
+  id: 0x06f2ea68
+  name: "clk_unprepare"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb077e70a
+  type_id: 0x1febeb84
+  full_name: "clk_unprepare"
+}
+elf_symbol {
+  id: 0xc8e117f2
+  name: "clk_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7757b51a
+  type_id: 0x1febeb84
+  full_name: "clk_unregister"
+}
+elf_symbol {
+  id: 0x430bfeda
+  name: "clockevents_config_and_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1092d9de
+  type_id: 0x177cb160
+  full_name: "clockevents_config_and_register"
+}
+elf_symbol {
+  id: 0x0522e13b
+  name: "clocks_calc_mult_shift"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x62bb09bf
+  type_id: 0x1e7ec1ee
+  full_name: "clocks_calc_mult_shift"
+}
+elf_symbol {
+  id: 0x961eb280
+  name: "clocksource_mmio_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3f4fc1ef
+  type_id: 0x9b5aa874
+  full_name: "clocksource_mmio_init"
+}
+elf_symbol {
+  id: 0xfa04a306
+  name: "clocksource_mmio_readl_up"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x49b9dfb4
+  type_id: 0x52c37930
+  full_name: "clocksource_mmio_readl_up"
+}
+elf_symbol {
+  id: 0xb14ae124
+  name: "close_candev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x75b20ea5
+  type_id: 0x1c31d966
+  full_name: "close_candev"
+}
+elf_symbol {
+  id: 0x4cf39275
+  name: "close_fd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb6fde909
+  type_id: 0x8ce1baa0
+  full_name: "close_fd"
+}
+elf_symbol {
+  id: 0x83dc639c
+  name: "cma_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x72b32442
+  type_id: 0xb94d0c8b
+  full_name: "cma_alloc"
+}
+elf_symbol {
+  id: 0x5f9864aa
+  name: "cma_for_each_area"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa773aa40
+  type_id: 0x96d8b66a
+  full_name: "cma_for_each_area"
+}
+elf_symbol {
+  id: 0x966a7c42
+  name: "cma_get_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe71d2220
+  type_id: 0x9c8a3bc5
+  full_name: "cma_get_name"
+}
+elf_symbol {
+  id: 0xab62b21c
+  name: "cma_release"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbcc61de4
+  type_id: 0xfa5a390c
+  full_name: "cma_release"
+}
+elf_symbol {
+  id: 0x4f627b39
+  name: "compat_ptr_ioctl"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd3720693
+  type_id: 0xa00069e0
+  full_name: "compat_ptr_ioctl"
+}
+elf_symbol {
+  id: 0xda163e44
+  name: "complete"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa6257a2f
+  type_id: 0x11c0e0ca
+  full_name: "complete"
+}
+elf_symbol {
+  id: 0xb375007c
+  name: "complete_all"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x93d6dd8c
+  type_id: 0x11c0e0ca
+  full_name: "complete_all"
+}
+elf_symbol {
+  id: 0x9bc8eb84
+  name: "completion_done"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xddf6ad7a
+  type_id: 0xfffcea5d
+  full_name: "completion_done"
+}
+elf_symbol {
+  id: 0x0356dc1d
+  name: "component_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xecc09b4d
+  type_id: 0x9df11d57
+  full_name: "component_add"
+}
+elf_symbol {
+  id: 0x53eb2602
+  name: "component_add_typed"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8913ca50
+  type_id: 0x9de8d563
+  full_name: "component_add_typed"
+}
+elf_symbol {
+  id: 0xcce97787
+  name: "component_bind_all"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x30b703f5
+  type_id: 0x9d7428e0
+  full_name: "component_bind_all"
+}
+elf_symbol {
+  id: 0x4bc5faef
+  name: "component_compare_dev_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0959932e
+  type_id: 0x9d7428e0
+  full_name: "component_compare_dev_name"
+}
+elf_symbol {
+  id: 0xa06e08e9
+  name: "component_compare_of"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5481abb6
+  type_id: 0x9d7428e0
+  full_name: "component_compare_of"
+}
+elf_symbol {
+  id: 0x98bdb018
+  name: "component_del"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8c7aa996
+  type_id: 0x10e9afeb
+  full_name: "component_del"
+}
+elf_symbol {
+  id: 0xd080858f
+  name: "component_master_add_with_match"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd7a582bc
+  type_id: 0x9ddcade1
+  full_name: "component_master_add_with_match"
+}
+elf_symbol {
+  id: 0x7d559fc7
+  name: "component_master_del"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7996b226
+  type_id: 0x10c55248
+  full_name: "component_master_del"
+}
+elf_symbol {
+  id: 0xaa581068
+  name: "component_match_add_release"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf4013a82
+  type_id: 0x102208a7
+  full_name: "component_match_add_release"
+}
+elf_symbol {
+  id: 0xf97edf1a
+  name: "component_match_add_typed"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x17d6bd85
+  type_id: 0x102a1547
+  full_name: "component_match_add_typed"
+}
+elf_symbol {
+  id: 0x5f149483
+  name: "component_unbind_all"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd241f9aa
+  type_id: 0x106c9a5c
+  full_name: "component_unbind_all"
+}
+elf_symbol {
+  id: 0x243de63b
+  name: "cond_synchronize_rcu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x49e96999
+  type_id: 0x1c4508b2
+  full_name: "cond_synchronize_rcu"
+}
+elf_symbol {
+  id: 0xb34a2312
+  name: "cond_synchronize_rcu_expedited"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbda04a91
+  type_id: 0x1c4508b2
+  full_name: "cond_synchronize_rcu_expedited"
+}
+elf_symbol {
+  id: 0x5929756d
+  name: "config_ep_by_speed"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeedd3616
+  type_id: 0x945ba723
+  full_name: "config_ep_by_speed"
+}
+elf_symbol {
+  id: 0x71db8ae7
+  name: "config_group_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd308809a
+  type_id: 0x1c280429
+  full_name: "config_group_init"
+}
+elf_symbol {
+  id: 0x8cc3df48
+  name: "config_group_init_type_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9681b115
+  type_id: 0x1cdeebe2
+  full_name: "config_group_init_type_name"
+}
+elf_symbol {
+  id: 0x6947cf2b
+  name: "config_item_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe5c15bfd
+  type_id: 0xfe8152e6
+  full_name: "config_item_get"
+}
+elf_symbol {
+  id: 0x93bf161f
+  name: "config_item_init_type_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x336e2261
+  type_id: 0x14a2b07e
+  full_name: "config_item_init_type_name"
+}
+elf_symbol {
+  id: 0x8be7c055
+  name: "config_item_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdf86c97a
+  type_id: 0x14545fb5
+  full_name: "config_item_put"
+}
+elf_symbol {
+  id: 0x20349fb1
+  name: "config_item_set_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe3e62ffe
+  type_id: 0x999de55f
+  full_name: "config_item_set_name"
+}
+elf_symbol {
+  id: 0x79d8f672
+  name: "configfs_register_default_group"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4c453201
+  type_id: 0xeb2ed334
+  full_name: "configfs_register_default_group"
+}
+elf_symbol {
+  id: 0x197789dd
+  name: "configfs_register_group"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5fb755e8
+  type_id: 0x91fbb3ce
+  full_name: "configfs_register_group"
+}
+elf_symbol {
+  id: 0xc5fc7c45
+  name: "configfs_register_subsystem"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xee694c37
+  type_id: 0x9db97a4e
+  full_name: "configfs_register_subsystem"
+}
+elf_symbol {
+  id: 0x76381968
+  name: "configfs_unregister_default_group"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9b33d992
+  type_id: 0x1c280429
+  full_name: "configfs_unregister_default_group"
+}
+elf_symbol {
+  id: 0xf5bd4fae
+  name: "configfs_unregister_group"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbd433fe2
+  type_id: 0x1c280429
+  full_name: "configfs_unregister_group"
+}
+elf_symbol {
+  id: 0x1b144a7e
+  name: "configfs_unregister_subsystem"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4657cbc7
+  type_id: 0x10a1c8f2
+  full_name: "configfs_unregister_subsystem"
+}
+elf_symbol {
+  id: 0x77e3018c
+  name: "console_drivers"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x0148e770
+  type_id: 0x015f6fbc
+  full_name: "console_drivers"
+}
+elf_symbol {
+  id: 0x3d10b5b8
+  name: "console_lock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfbaaf01e
+  type_id: 0x10985193
+  full_name: "console_lock"
+}
+elf_symbol {
+  id: 0x10e14b48
+  name: "console_printk"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x2592fc6c
+  type_id: 0x958527d1
+  full_name: "console_printk"
+}
+elf_symbol {
+  id: 0x406ac226
+  name: "console_set_on_cmdline"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x2459bbcc
+  type_id: 0x6720d32f
+  full_name: "console_set_on_cmdline"
+}
+elf_symbol {
+  id: 0xe5567adc
+  name: "console_stop"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe3dca1d3
+  type_id: 0x10cf8a7c
+  full_name: "console_stop"
+}
+elf_symbol {
+  id: 0x85d79e5f
+  name: "console_suspend_enabled"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x0366307a
+  type_id: 0x6d7f5ff6
+  full_name: "console_suspend_enabled"
+}
+elf_symbol {
+  id: 0xf9f01d9c
+  name: "console_trylock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x40d04664
+  type_id: 0x9d80e32f
+  full_name: "console_trylock"
+}
+elf_symbol {
+  id: 0x5a70b6f0
+  name: "console_unlock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc631580a
+  type_id: 0x10985193
+  full_name: "console_unlock"
+}
+elf_symbol {
+  id: 0xca337eb1
+  name: "consume_skb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x925b1655
+  type_id: 0x11cb8bd5
+  full_name: "consume_skb"
+}
+elf_symbol {
+  id: 0x9e7d8d76
+  name: "contig_page_data"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xce482787
+  type_id: 0x264eeece
+  full_name: "contig_page_data"
+}
+elf_symbol {
+  id: 0x610edc84
+  name: "copy_from_kernel_nofault"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4531ab62
+  type_id: 0xa1d613d8
+  full_name: "copy_from_kernel_nofault"
+}
+elf_symbol {
+  id: 0xd89255c2
+  name: "cpu_all_bits"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xd994ecee
+  type_id: 0x81facbaa
+  full_name: "cpu_all_bits"
+}
+elf_symbol {
+  id: 0x962b6a68
+  name: "cpu_bit_bitmap"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x62ad2053
+  type_id: 0xd0d5f663
+  full_name: "cpu_bit_bitmap"
+}
+elf_symbol {
+  id: 0x33bbeca6
+  name: "cpu_hotplug_disable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4d0015e2
+  type_id: 0x10985193
+  full_name: "cpu_hotplug_disable"
+}
+elf_symbol {
+  id: 0x4e0ae383
+  name: "cpu_hotplug_enable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf6c8dc62
+  type_id: 0x10985193
+  full_name: "cpu_hotplug_enable"
+}
+elf_symbol {
+  id: 0x81619b01
+  name: "cpu_hwcaps"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x79e4c52b
+  type_id: 0x607419c2
+  full_name: "cpu_hwcaps"
+}
+elf_symbol {
+  id: 0xfbce2cbb
+  name: "cpu_irqtime"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x627de1b3
+  type_id: 0x2ae742de
+  full_name: "cpu_irqtime"
+}
+elf_symbol {
+  id: 0xdf9606b3
+  name: "cpu_is_hotpluggable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2ebe3135
+  type_id: 0xefc5028b
+  full_name: "cpu_is_hotpluggable"
+}
+elf_symbol {
+  id: 0xd6ea4255
+  name: "cpu_latency_qos_add_request"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x589e1a22
+  type_id: 0x148157fd
+  full_name: "cpu_latency_qos_add_request"
+}
+elf_symbol {
+  id: 0xa3ab8c31
+  name: "cpu_latency_qos_remove_request"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3aaa15b2
+  type_id: 0x17d12ddf
+  full_name: "cpu_latency_qos_remove_request"
+}
+elf_symbol {
+  id: 0x8daa61e5
+  name: "cpu_latency_qos_request_active"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7537226a
+  type_id: 0xf9ed2748
+  full_name: "cpu_latency_qos_request_active"
+}
+elf_symbol {
+  id: 0x7511322a
+  name: "cpu_latency_qos_update_request"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdc528096
+  type_id: 0x148157fd
+  full_name: "cpu_latency_qos_update_request"
+}
+elf_symbol {
+  id: 0xd32e348e
+  name: "cpu_number"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xf8b9acd3
+  type_id: 0x6720d32f
+  full_name: "cpu_number"
+}
+elf_symbol {
+  id: 0xdd1168f7
+  name: "cpu_pm_register_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x444f1735
+  type_id: 0x9b6d4a33
+  full_name: "cpu_pm_register_notifier"
+}
+elf_symbol {
+  id: 0x210f422e
+  name: "cpu_pm_unregister_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4f98d766
+  type_id: 0x9b6d4a33
+  full_name: "cpu_pm_unregister_notifier"
+}
+elf_symbol {
+  id: 0x288a6554
+  name: "cpu_scale"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x54552241
+  type_id: 0x33756485
+  full_name: "cpu_scale"
+}
+elf_symbol {
+  id: 0x715991ed
+  name: "cpu_subsys"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x94715028
+  type_id: 0x257935aa
+  full_name: "cpu_subsys"
+}
+elf_symbol {
+  id: 0x30c8b794
+  name: "cpu_topology"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x0de6d465
+  type_id: 0x5244d25a
+  full_name: "cpu_topology"
+}
+elf_symbol {
+  id: 0x0c359f27
+  name: "cpufreq_add_update_util_hook"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1403ad09
+  type_id: 0x09d434d8
+  full_name: "cpufreq_add_update_util_hook"
+}
+elf_symbol {
+  id: 0x85c5ebd6
+  name: "cpufreq_cpu_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x70475977
+  type_id: 0x906b787e
+  full_name: "cpufreq_cpu_get"
+}
+elf_symbol {
+  id: 0xf95c9d54
+  name: "cpufreq_cpu_get_raw"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x572b6d8c
+  type_id: 0x906b787e
+  full_name: "cpufreq_cpu_get_raw"
+}
+elf_symbol {
+  id: 0x7d541a30
+  name: "cpufreq_cpu_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeff012e0
+  type_id: 0x10ffd8df
+  full_name: "cpufreq_cpu_put"
+}
+elf_symbol {
+  id: 0x84e3d2de
+  name: "cpufreq_dbs_governor_exit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa236c757
+  type_id: 0x10ffd8df
+  full_name: "cpufreq_dbs_governor_exit"
+}
+elf_symbol {
+  id: 0x0b134421
+  name: "cpufreq_dbs_governor_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb8c2baad
+  type_id: 0x9de76a63
+  full_name: "cpufreq_dbs_governor_init"
+}
+elf_symbol {
+  id: 0x659b0e63
+  name: "cpufreq_dbs_governor_limits"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8572f696
+  type_id: 0x10ffd8df
+  full_name: "cpufreq_dbs_governor_limits"
+}
+elf_symbol {
+  id: 0x86c85b12
+  name: "cpufreq_dbs_governor_start"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x39fb6738
+  type_id: 0x9de76a63
+  full_name: "cpufreq_dbs_governor_start"
+}
+elf_symbol {
+  id: 0x930f8d3c
+  name: "cpufreq_dbs_governor_stop"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcc4fbdaf
+  type_id: 0x10ffd8df
+  full_name: "cpufreq_dbs_governor_stop"
+}
+elf_symbol {
+  id: 0x28f60fc9
+  name: "cpufreq_disable_fast_switch"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9fef0d32
+  type_id: 0x10ffd8df
+  full_name: "cpufreq_disable_fast_switch"
+}
+elf_symbol {
+  id: 0xd72ba404
+  name: "cpufreq_driver_fast_switch"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbc22999d
+  type_id: 0xcfaae22f
+  full_name: "cpufreq_driver_fast_switch"
+}
+elf_symbol {
+  id: 0x62250f4d
+  name: "cpufreq_driver_resolve_freq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaba5f612
+  type_id: 0xcfaae22f
+  full_name: "cpufreq_driver_resolve_freq"
+}
+elf_symbol {
+  id: 0x1b33e29e
+  name: "cpufreq_driver_target"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2a1373e3
+  type_id: 0x9ce01ea2
+  full_name: "cpufreq_driver_target"
+}
+elf_symbol {
+  id: 0x39e2d50e
+  name: "cpufreq_enable_boost_support"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf30a5502
+  type_id: 0x9d80e32f
+  full_name: "cpufreq_enable_boost_support"
+}
+elf_symbol {
+  id: 0x4eff590a
+  name: "cpufreq_enable_fast_switch"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x98b5f0dc
+  type_id: 0x10ffd8df
+  full_name: "cpufreq_enable_fast_switch"
+}
+elf_symbol {
+  id: 0xe94841a9
+  name: "cpufreq_freq_attr_scaling_available_freqs"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xd3556085
+  type_id: 0x533e9463
+  full_name: "cpufreq_freq_attr_scaling_available_freqs"
+}
+elf_symbol {
+  id: 0x8df717be
+  name: "cpufreq_freq_attr_scaling_boost_freqs"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x5dc72abe
+  type_id: 0x533e9463
+  full_name: "cpufreq_freq_attr_scaling_boost_freqs"
+}
+elf_symbol {
+  id: 0xec748846
+  name: "cpufreq_freq_transition_begin"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe2dab2b1
+  type_id: 0x10e0ceea
+  full_name: "cpufreq_freq_transition_begin"
+}
+elf_symbol {
+  id: 0x39d208ed
+  name: "cpufreq_freq_transition_end"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7bd0d1c8
+  type_id: 0x10f906de
+  full_name: "cpufreq_freq_transition_end"
+}
+elf_symbol {
+  id: 0xf2a168f3
+  name: "cpufreq_frequency_table_get_index"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x32281aa6
+  type_id: 0x9cf17ffb
+  full_name: "cpufreq_frequency_table_get_index"
+}
+elf_symbol {
+  id: 0xfe2b3cad
+  name: "cpufreq_frequency_table_verify"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xec774acb
+  type_id: 0x91409b70
+  full_name: "cpufreq_frequency_table_verify"
+}
+elf_symbol {
+  id: 0xc53260d9
+  name: "cpufreq_generic_attr"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x632ffc4f
+  type_id: 0x6b3ea7cc
+  full_name: "cpufreq_generic_attr"
+}
+elf_symbol {
+  id: 0x6b87121d
+  name: "cpufreq_generic_frequency_table_verify"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc289e46d
+  type_id: 0x914d4ae5
+  full_name: "cpufreq_generic_frequency_table_verify"
+}
+elf_symbol {
+  id: 0xbfab4c85
+  name: "cpufreq_generic_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xba2b7f64
+  type_id: 0xdfba2774
+  full_name: "cpufreq_generic_get"
+}
+elf_symbol {
+  id: 0xff000a81
+  name: "cpufreq_generic_suspend"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0587f7dc
+  type_id: 0x9de76a63
+  full_name: "cpufreq_generic_suspend"
+}
+elf_symbol {
+  id: 0xc4e41b54
+  name: "cpufreq_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9305f8e6
+  type_id: 0xdfba2774
+  full_name: "cpufreq_get"
+}
+elf_symbol {
+  id: 0x993bc120
+  name: "cpufreq_get_driver_data"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x553b49a4
+  type_id: 0x5696b1f1
+  full_name: "cpufreq_get_driver_data"
+}
+elf_symbol {
+  id: 0xee97aa9a
+  name: "cpufreq_get_policy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa7c7febc
+  type_id: 0x9cf17ffb
+  full_name: "cpufreq_get_policy"
+}
+elf_symbol {
+  id: 0xe3c0c0b8
+  name: "cpufreq_policy_transition_delay_us"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x353655e9
+  type_id: 0xcebcf7b7
+  full_name: "cpufreq_policy_transition_delay_us"
+}
+elf_symbol {
+  id: 0xf45e469e
+  name: "cpufreq_quick_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7c46233a
+  type_id: 0xdfba2774
+  full_name: "cpufreq_quick_get"
+}
+elf_symbol {
+  id: 0x2a6fe72b
+  name: "cpufreq_quick_get_max"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x33f0768c
+  type_id: 0xdfba2774
+  full_name: "cpufreq_quick_get_max"
+}
+elf_symbol {
+  id: 0xe9f2bcfa
+  name: "cpufreq_register_driver"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xee829b11
+  type_id: 0x927602ff
+  full_name: "cpufreq_register_driver"
+}
+elf_symbol {
+  id: 0x56500b2f
+  name: "cpufreq_register_governor"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x40a85c54
+  type_id: 0x9ce68106
+  full_name: "cpufreq_register_governor"
+}
+elf_symbol {
+  id: 0x29ba3af0
+  name: "cpufreq_register_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x65d9e877
+  type_id: 0x9a7b5fab
+  full_name: "cpufreq_register_notifier"
+}
+elf_symbol {
+  id: 0xd9e53ee8
+  name: "cpufreq_remove_update_util_hook"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3192d768
+  type_id: 0x09506558
+  full_name: "cpufreq_remove_update_util_hook"
+}
+elf_symbol {
+  id: 0x0a0bd813
+  name: "cpufreq_table_index_unsorted"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x76dd70d6
+  type_id: 0x9ce01ea2
+  full_name: "cpufreq_table_index_unsorted"
+}
+elf_symbol {
+  id: 0x231cf427
+  name: "cpufreq_this_cpu_can_update"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x03d7bbbb
+  type_id: 0xfec3d248
+  full_name: "cpufreq_this_cpu_can_update"
+}
+elf_symbol {
+  id: 0x969a0d74
+  name: "cpufreq_unregister_driver"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2648be53
+  type_id: 0x927602ff
+  full_name: "cpufreq_unregister_driver"
+}
+elf_symbol {
+  id: 0x131ff67b
+  name: "cpufreq_unregister_governor"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x711f2958
+  type_id: 0x11fe33ba
+  full_name: "cpufreq_unregister_governor"
+}
+elf_symbol {
+  id: 0xbbbf4eda
+  name: "cpufreq_unregister_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6214aef2
+  type_id: 0x9a7b5fab
+  full_name: "cpufreq_unregister_notifier"
+}
+elf_symbol {
+  id: 0xb6965ce8
+  name: "cpufreq_update_limits"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x816a41ca
+  type_id: 0x01f9081c
+  full_name: "cpufreq_update_limits"
+}
+elf_symbol {
+  id: 0x0c67e2fe
+  name: "cpufreq_update_util_data"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x68071e79
+  type_id: 0x21d7b2e4
+  full_name: "cpufreq_update_util_data"
+}
+elf_symbol {
+  id: 0xc6155c06
+  name: "cpuhp_tasks_frozen"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x4507f4a8
+  type_id: 0x6d7f5ff6
+  full_name: "cpuhp_tasks_frozen"
+}
+elf_symbol {
+  id: 0xce563c27
+  name: "cpuidle_driver_state_disabled"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x00cb8431
+  type_id: 0x1713ba51
+  full_name: "cpuidle_driver_state_disabled"
+}
+elf_symbol {
+  id: 0x788ad464
+  name: "cpuidle_get_cpu_driver"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x09e165c3
+  type_id: 0x3ea65109
+  full_name: "cpuidle_get_cpu_driver"
+}
+elf_symbol {
+  id: 0x28b04407
+  name: "cpuidle_get_driver"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3a864b43
+  type_id: 0x32d662aa
+  full_name: "cpuidle_get_driver"
+}
+elf_symbol {
+  id: 0x474c5b56
+  name: "cpuidle_governor_latency_req"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc319717f
+  type_id: 0x976590a4
+  full_name: "cpuidle_governor_latency_req"
+}
+elf_symbol {
+  id: 0xb1a9cc86
+  name: "cpuidle_pause_and_lock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf553318d
+  type_id: 0x10985193
+  full_name: "cpuidle_pause_and_lock"
+}
+elf_symbol {
+  id: 0x9b056e94
+  name: "cpuidle_register_governor"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x61b8fbb1
+  type_id: 0x9fb9eee9
+  full_name: "cpuidle_register_governor"
+}
+elf_symbol {
+  id: 0x2061f0ca
+  name: "cpuidle_resume_and_unlock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcabe04de
+  type_id: 0x10985193
+  full_name: "cpuidle_resume_and_unlock"
+}
+elf_symbol {
+  id: 0xd878ab56
+  name: "cpumask_any_and_distribute"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xceb4af5b
+  type_id: 0xc25cf5fc
+  full_name: "cpumask_any_and_distribute"
+}
+elf_symbol {
+  id: 0xb1469ae6
+  name: "cpumask_next_wrap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8b574630
+  type_id: 0xd7cf0cf9
+  full_name: "cpumask_next_wrap"
+}
+elf_symbol {
+  id: 0x3afbe534
+  name: "cpupri_find_fitness"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa26560aa
+  type_id: 0x96c4b63c
+  full_name: "cpupri_find_fitness"
+}
+elf_symbol {
+  id: 0x2cc0b276
+  name: "cpus_read_lock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa04f945a
+  type_id: 0x10985193
+  full_name: "cpus_read_lock"
+}
+elf_symbol {
+  id: 0x0e19b467
+  name: "cpus_read_unlock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x18fb2caf
+  type_id: 0x10985193
+  full_name: "cpus_read_unlock"
+}
+elf_symbol {
+  id: 0x7d95ddab
+  name: "cpuset_cpus_allowed"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd2b664ac
+  type_id: 0x173dd32d
+  full_name: "cpuset_cpus_allowed"
+}
+elf_symbol {
+  id: 0xa49d0aea
+  name: "crc16"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbd6841d4
+  type_id: 0x25b94d0a
+  full_name: "crc16"
+}
+elf_symbol {
+  id: 0x1c25c16f
+  name: "crc32_be"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4df02057
+}
+elf_symbol {
+  id: 0xd6cf566d
+  name: "crc32_le"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x69dd3b5b
+}
+elf_symbol {
+  id: 0xec1b66f9
+  name: "crc8"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9c5d5b94
+  type_id: 0x5c4b7130
+  full_name: "crc8"
+}
+elf_symbol {
+  id: 0xac913841
+  name: "crc8_populate_msb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaa8106bc
+  type_id: 0x100ce912
+  full_name: "crc8_populate_msb"
+}
+elf_symbol {
+  id: 0x42676517
+  name: "crc_ccitt"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x52ecbc75
+  type_id: 0x25b94d0a
+  full_name: "crc_ccitt"
+}
+elf_symbol {
+  id: 0xc3e46036
+  name: "create_function_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x396050dd
+  type_id: 0xac0fc980
+  full_name: "create_function_device"
+}
+elf_symbol {
+  id: 0xcd2564d1
+  name: "crypto_aead_decrypt"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x80c539ad
+  type_id: 0x910ea117
+  full_name: "crypto_aead_decrypt"
+}
+elf_symbol {
+  id: 0x2968f72a
+  name: "crypto_aead_encrypt"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3d564936
+  type_id: 0x910ea117
+  full_name: "crypto_aead_encrypt"
+}
+elf_symbol {
+  id: 0x0a2b21ec
+  name: "crypto_aead_setauthsize"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5de839de
+  type_id: 0x9a871ca2
+  full_name: "crypto_aead_setauthsize"
+}
+elf_symbol {
+  id: 0xbdd0f4c6
+  name: "crypto_aead_setkey"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3de7f547
+  type_id: 0x9b7c6e74
+  full_name: "crypto_aead_setkey"
+}
+elf_symbol {
+  id: 0xe5e28fcd
+  name: "crypto_ahash_digest"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x22abaff5
+  type_id: 0x911583bf
+  full_name: "crypto_ahash_digest"
+}
+elf_symbol {
+  id: 0xff08526f
+  name: "crypto_ahash_setkey"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdb0fc569
+  type_id: 0x9ac8451b
+  full_name: "crypto_ahash_setkey"
+}
+elf_symbol {
+  id: 0xc81e9eb3
+  name: "crypto_alloc_aead"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbfb0935d
+  type_id: 0x244ac93e
+  full_name: "crypto_alloc_aead"
+}
+elf_symbol {
+  id: 0x237a3562
+  name: "crypto_alloc_ahash"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x36bfc081
+  type_id: 0xd40f21a4
+  full_name: "crypto_alloc_ahash"
+}
+elf_symbol {
+  id: 0x1d1f6717
+  name: "crypto_alloc_base"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x06caa363
+  type_id: 0x85430584
+  full_name: "crypto_alloc_base"
+}
+elf_symbol {
+  id: 0x20c19184
+  name: "crypto_alloc_kpp"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7795233a
+  type_id: 0xf66dfeca
+  full_name: "crypto_alloc_kpp"
+}
+elf_symbol {
+  id: 0xef67fe16
+  name: "crypto_alloc_shash"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5b3ecf50
+  type_id: 0x0643b7f0
+  full_name: "crypto_alloc_shash"
+}
+elf_symbol {
+  id: 0x9eca665b
+  name: "crypto_alloc_skcipher"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb786e327
+  type_id: 0x2d1647d4
+  full_name: "crypto_alloc_skcipher"
+}
+elf_symbol {
+  id: 0x3ea8bbd7
+  name: "crypto_alloc_sync_skcipher"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdea2eaf0
+  type_id: 0x329319f8
+  full_name: "crypto_alloc_sync_skcipher"
+}
+elf_symbol {
+  id: 0x1257590d
+  name: "crypto_comp_compress"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdd046394
+  type_id: 0x9792aa8a
+  full_name: "crypto_comp_compress"
+}
+elf_symbol {
+  id: 0x833374c8
+  name: "crypto_comp_decompress"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x240b4b98
+  type_id: 0x9792aa8a
+  full_name: "crypto_comp_decompress"
+}
+elf_symbol {
+  id: 0x717034d4
+  name: "crypto_default_rng"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x6c9331b1
+  type_id: 0x3c9ce28f
+  full_name: "crypto_default_rng"
+}
+elf_symbol {
+  id: 0xc27e8b2f
+  name: "crypto_dequeue_request"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6667eee7
+  type_id: 0x2d2c7d0b
+  full_name: "crypto_dequeue_request"
+}
+elf_symbol {
+  id: 0x3464cb44
+  name: "crypto_destroy_tfm"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x996f6d67
+  type_id: 0x16d018ce
+  full_name: "crypto_destroy_tfm"
+}
+elf_symbol {
+  id: 0xd04a0a9e
+  name: "crypto_ecdh_encode_key"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb230d2ec
+  type_id: 0x9dbadc60
+  full_name: "crypto_ecdh_encode_key"
+}
+elf_symbol {
+  id: 0x7c49856a
+  name: "crypto_ecdh_key_len"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7475be8e
+  type_id: 0xc2081745
+  full_name: "crypto_ecdh_key_len"
+}
+elf_symbol {
+  id: 0xcf0e0e01
+  name: "crypto_enqueue_request"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf7c5c1d7
+  type_id: 0x9a78591e
+  full_name: "crypto_enqueue_request"
+}
+elf_symbol {
+  id: 0xbf39e9a5
+  name: "crypto_get_default_rng"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6ff607b6
+  type_id: 0x9d80e32f
+  full_name: "crypto_get_default_rng"
+}
+elf_symbol {
+  id: 0x4d4a15b0
+  name: "crypto_has_ahash"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x34407691
+  type_id: 0x9112accf
+  full_name: "crypto_has_ahash"
+}
+elf_symbol {
+  id: 0xfc625698
+  name: "crypto_has_alg"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x951a2773
+  type_id: 0x9112accf
+  full_name: "crypto_has_alg"
+}
+elf_symbol {
+  id: 0x62173925
+  name: "crypto_init_queue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x499043d3
+  type_id: 0x1667b3d4
+  full_name: "crypto_init_queue"
+}
+elf_symbol {
+  id: 0x053cd2eb
+  name: "crypto_put_default_rng"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x668402aa
+  type_id: 0x10985193
+  full_name: "crypto_put_default_rng"
+}
+elf_symbol {
+  id: 0xd1471c13
+  name: "crypto_register_aead"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbfb4e84e
+  type_id: 0x950f0fae
+  full_name: "crypto_register_aead"
+}
+elf_symbol {
+  id: 0x3359f049
+  name: "crypto_register_ahash"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0f57885d
+  type_id: 0x9ee20867
+  full_name: "crypto_register_ahash"
+}
+elf_symbol {
+  id: 0xcb0ffe5b
+  name: "crypto_register_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9879932b
+  type_id: 0x9b6d4a33
+  full_name: "crypto_register_notifier"
+}
+elf_symbol {
+  id: 0xa79ba8cc
+  name: "crypto_register_rng"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x831afad2
+  type_id: 0x9cc9d859
+  full_name: "crypto_register_rng"
+}
+elf_symbol {
+  id: 0x23b67585
+  name: "crypto_register_rngs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xef36cc45
+  type_id: 0x9d555b15
+  full_name: "crypto_register_rngs"
+}
+elf_symbol {
+  id: 0x1e81ded9
+  name: "crypto_register_shash"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1d386050
+  type_id: 0x9e955b54
+  full_name: "crypto_register_shash"
+}
+elf_symbol {
+  id: 0xfca661a6
+  name: "crypto_register_skcipher"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x70b27b3c
+  type_id: 0x928f1946
+  full_name: "crypto_register_skcipher"
+}
+elf_symbol {
+  id: 0x0e52d725
+  name: "crypto_req_done"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0ee60a12
+  type_id: 0x10100c3c
+  full_name: "crypto_req_done"
+}
+elf_symbol {
+  id: 0x91309df9
+  name: "crypto_shash_digest"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5dd4ac73
+  type_id: 0x9fb1dc71
+  full_name: "crypto_shash_digest"
+}
+elf_symbol {
+  id: 0xfdca589d
+  name: "crypto_shash_final"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xee0bf3c2
+  type_id: 0x9f5fa4b7
+  full_name: "crypto_shash_final"
+}
+elf_symbol {
+  id: 0xb50ff8bd
+  name: "crypto_shash_finup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xced3ee9b
+  type_id: 0x9fb1dc71
+  full_name: "crypto_shash_finup"
+}
+elf_symbol {
+  id: 0x70dea96c
+  name: "crypto_shash_setkey"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x72a3fb20
+  type_id: 0x98930e77
+  full_name: "crypto_shash_setkey"
+}
+elf_symbol {
+  id: 0x4ab4582b
+  name: "crypto_shash_tfm_digest"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd395e8c3
+  type_id: 0x98930d6b
+  full_name: "crypto_shash_tfm_digest"
+}
+elf_symbol {
+  id: 0x094a72c8
+  name: "crypto_shash_update"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd0b8754a
+  type_id: 0x9fb1df6d
+  full_name: "crypto_shash_update"
+}
+elf_symbol {
+  id: 0x15691536
+  name: "crypto_skcipher_decrypt"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5528f6cb
+  type_id: 0x9a856ac3
+  full_name: "crypto_skcipher_decrypt"
+}
+elf_symbol {
+  id: 0x403155fc
+  name: "crypto_skcipher_encrypt"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcfad4135
+  type_id: 0x9a856ac3
+  full_name: "crypto_skcipher_encrypt"
+}
+elf_symbol {
+  id: 0xbb92068e
+  name: "crypto_skcipher_setkey"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x26a098fc
+  type_id: 0x9e7f936c
+  full_name: "crypto_skcipher_setkey"
+}
+elf_symbol {
+  id: 0x81600265
+  name: "crypto_unregister_aead"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x27a735da
+  type_id: 0x1817bd12
+  full_name: "crypto_unregister_aead"
+}
+elf_symbol {
+  id: 0x57a4fa38
+  name: "crypto_unregister_ahash"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x22c16cf5
+  type_id: 0x13fabadb
+  full_name: "crypto_unregister_ahash"
+}
+elf_symbol {
+  id: 0x551c18d1
+  name: "crypto_unregister_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x710c73b6
+  type_id: 0x9b6d4a33
+  full_name: "crypto_unregister_notifier"
+}
+elf_symbol {
+  id: 0xeb9b8f1f
+  name: "crypto_unregister_rng"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcb43b1a7
+  type_id: 0x11d16ae5
+  full_name: "crypto_unregister_rng"
+}
+elf_symbol {
+  id: 0x4d669c6d
+  name: "crypto_unregister_rngs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5f5a140e
+  type_id: 0x104de9a9
+  full_name: "crypto_unregister_rngs"
+}
+elf_symbol {
+  id: 0x6715c595
+  name: "crypto_unregister_shash"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc2b4eed1
+  type_id: 0x138de9e8
+  full_name: "crypto_unregister_shash"
+}
+elf_symbol {
+  id: 0x9f75c77b
+  name: "crypto_unregister_skcipher"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x72f284fd
+  type_id: 0x1f97abfa
+  full_name: "crypto_unregister_skcipher"
+}
+elf_symbol {
+  id: 0xd36400de
+  name: "css_next_child"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd19a6c6f
+  type_id: 0xc867c639
+  full_name: "css_next_child"
+}
+elf_symbol {
+  id: 0x2c08983d
+  name: "css_next_descendant_pre"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9d887153
+  type_id: 0xc867c639
+  full_name: "css_next_descendant_pre"
+}
+elf_symbol {
+  id: 0x81bdacc5
+  name: "csum_ipv6_magic"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4d65cbd5
+  type_id: 0x148b9359
+  full_name: "csum_ipv6_magic"
+}
+elf_symbol {
+  id: 0x554af0ba
+  name: "csum_partial"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe113bbbc
+  type_id: 0x35b105f3
+  full_name: "csum_partial"
+}
+elf_symbol {
+  id: 0xbb54c900
+  name: "csum_tcpudp_nofold"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd25bc5d4
+  type_id: 0x016f0c64
+  full_name: "csum_tcpudp_nofold"
+}
+elf_symbol {
+  id: 0x50e383fc
+  name: "ct_idle_enter"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa2c0f59a
+  type_id: 0x10985193
+  full_name: "ct_idle_enter"
+}
+elf_symbol {
+  id: 0x823aeba5
+  name: "ct_idle_exit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x52647db1
+  type_id: 0x10985193
+  full_name: "ct_idle_exit"
+}
+elf_symbol {
+  id: 0xde96cb2f
+  name: "current_time"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc730fe70
+  type_id: 0xb166862a
+  full_name: "current_time"
+}
+elf_symbol {
+  id: 0x171eca8a
+  name: "d_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf34021ea
+  type_id: 0x147717e5
+  full_name: "d_add"
+}
+elf_symbol {
+  id: 0x79187969
+  name: "d_alloc_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x165ccd05
+  type_id: 0x8808e1d8
+  full_name: "d_alloc_name"
+}
+elf_symbol {
+  id: 0x52864a7e
+  name: "d_make_root"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xac189cf4
+  type_id: 0x8a909712
+  full_name: "d_make_root"
+}
+elf_symbol {
+  id: 0xccc25fc1
+  name: "d_path"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4aef61ee
+  type_id: 0x30964cd5
+  full_name: "d_path"
+}
+elf_symbol {
+  id: 0xb771d13e
+  name: "dapm_clock_event"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x45277c97
+  type_id: 0x9fb0a0b3
+  full_name: "dapm_clock_event"
+}
+elf_symbol {
+  id: 0x53d11a8d
+  name: "dapm_kcontrol_get_value"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa7874699
+  type_id: 0xc3af9ce9
+  full_name: "dapm_kcontrol_get_value"
+}
+elf_symbol {
+  id: 0x5489a975
+  name: "dapm_pinctrl_event"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x83090432
+  type_id: 0x9fb0a0b3
+  full_name: "dapm_pinctrl_event"
+}
+elf_symbol {
+  id: 0xd8f17b20
+  name: "dapm_regulator_event"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x09700f5e
+  type_id: 0x9fb0a0b3
+  full_name: "dapm_regulator_event"
+}
+elf_symbol {
+  id: 0xf94e1278
+  name: "datagram_poll"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4cdae0ba
+  type_id: 0x2545d8c8
+  full_name: "datagram_poll"
+}
+elf_symbol {
+  id: 0xf1e399f5
+  name: "dbs_update"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1cfb419b
+  type_id: 0xcebcf7b7
+  full_name: "dbs_update"
+}
+elf_symbol {
+  id: 0x02f83230
+  name: "deactivate_locked_super"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x22b9c2df
+  type_id: 0x1923cb99
+  full_name: "deactivate_locked_super"
+}
+elf_symbol {
+  id: 0x36a5b3df
+  name: "deactivate_task"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xab0c473a
+  type_id: 0x1b7558dd
+  full_name: "deactivate_task"
+}
+elf_symbol {
+  id: 0x7225f00d
+  name: "debug_locks_off"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc575c737
+  type_id: 0x9d80e32f
+  full_name: "debug_locks_off"
+}
+elf_symbol {
+  id: 0xe2150034
+  name: "debug_locks_silent"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x97de2b83
+  type_id: 0x6720d32f
+  full_name: "debug_locks_silent"
+}
+elf_symbol {
+  id: 0xb0ae7663
+  name: "debugfs_attr_read"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x227fcbb5
+  type_id: 0x12e4741f
+  full_name: "debugfs_attr_read"
+}
+elf_symbol {
+  id: 0xf97f370a
+  name: "debugfs_attr_write"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2075e13d
+  type_id: 0x120e3950
+  full_name: "debugfs_attr_write"
+}
+elf_symbol {
+  id: 0xc3377ccb
+  name: "debugfs_create_atomic_t"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1d71fcc2
+  type_id: 0x1f51eecd
+  full_name: "debugfs_create_atomic_t"
+}
+elf_symbol {
+  id: 0x0ba701fe
+  name: "debugfs_create_blob"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf50f79e8
+  type_id: 0x83b828f4
+  full_name: "debugfs_create_blob"
+}
+elf_symbol {
+  id: 0x846def34
+  name: "debugfs_create_bool"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x651e1d7a
+  type_id: 0x1f51f760
+  full_name: "debugfs_create_bool"
+}
+elf_symbol {
+  id: 0xa40a487c
+  name: "debugfs_create_devm_seqfile"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa1e05bad
+  type_id: 0x10f21a77
+  full_name: "debugfs_create_devm_seqfile"
+}
+elf_symbol {
+  id: 0x58e45beb
+  name: "debugfs_create_dir"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6401ce4f
+  type_id: 0x83bdcb7d
+  full_name: "debugfs_create_dir"
+}
+elf_symbol {
+  id: 0x69f4e209
+  name: "debugfs_create_file"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x72b8adcd
+  type_id: 0x83b87db5
+  full_name: "debugfs_create_file"
+}
+elf_symbol {
+  id: 0xdd8fe9d8
+  name: "debugfs_create_file_unsafe"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x17eae5dc
+  type_id: 0x83b87db5
+  full_name: "debugfs_create_file_unsafe"
+}
+elf_symbol {
+  id: 0x256655e9
+  name: "debugfs_create_regset32"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x54e62340
+  type_id: 0x1f51ba91
+  full_name: "debugfs_create_regset32"
+}
+elf_symbol {
+  id: 0x54a91370
+  name: "debugfs_create_size_t"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe1be100a
+  type_id: 0x1f516e2a
+  full_name: "debugfs_create_size_t"
+}
+elf_symbol {
+  id: 0x5cc133b3
+  name: "debugfs_create_symlink"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x29235f89
+  type_id: 0x83b24f50
+  full_name: "debugfs_create_symlink"
+}
+elf_symbol {
+  id: 0x0a4d757e
+  name: "debugfs_create_u16"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd87e3670
+  type_id: 0x1f510b52
+  full_name: "debugfs_create_u16"
+}
+elf_symbol {
+  id: 0x02a3be97
+  name: "debugfs_create_u32"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8c1b8852
+  type_id: 0x1f515317
+  full_name: "debugfs_create_u32"
+}
+elf_symbol {
+  id: 0xad3dd00c
+  name: "debugfs_create_u64"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xab40bdbe
+  type_id: 0x1f51083c
+  full_name: "debugfs_create_u64"
+}
+elf_symbol {
+  id: 0x368d2cd0
+  name: "debugfs_create_u8"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2ca08111
+  type_id: 0x1f51b343
+  full_name: "debugfs_create_u8"
+}
+elf_symbol {
+  id: 0xf68a36eb
+  name: "debugfs_create_ulong"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xec383e5b
+  type_id: 0x1f51a96a
+  full_name: "debugfs_create_ulong"
+}
+elf_symbol {
+  id: 0xb5ca04ce
+  name: "debugfs_create_x32"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x66eb3a39
+  type_id: 0x1f515317
+  full_name: "debugfs_create_x32"
+}
+elf_symbol {
+  id: 0x203ce1d2
+  name: "debugfs_create_x64"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x41b00fd5
+  type_id: 0x1f51083c
+  full_name: "debugfs_create_x64"
+}
+elf_symbol {
+  id: 0xa80f19b8
+  name: "debugfs_create_x8"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb620a5a3
+  type_id: 0x1f51b343
+  full_name: "debugfs_create_x8"
+}
+elf_symbol {
+  id: 0x5f9a95c1
+  name: "debugfs_file_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6291f956
+  type_id: 0x9901b31b
+  full_name: "debugfs_file_get"
+}
+elf_symbol {
+  id: 0x01ee66df
+  name: "debugfs_file_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x099d4614
+  type_id: 0x141901a7
+  full_name: "debugfs_file_put"
+}
+elf_symbol {
+  id: 0x5e671464
+  name: "debugfs_lookup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x092dda18
+  type_id: 0x83bdcb7d
+  full_name: "debugfs_lookup"
+}
+elf_symbol {
+  id: 0x0d94ff56
+  name: "debugfs_lookup_and_remove"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5055354c
+  type_id: 0x1f5469d6
+  full_name: "debugfs_lookup_and_remove"
+}
+elf_symbol {
+  id: 0xc28b6d25
+  name: "debugfs_remove"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6fb25926
+  type_id: 0x141901a7
+  full_name: "debugfs_remove"
+}
+elf_symbol {
+  id: 0xe97bc87b
+  name: "debugfs_rename"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x763313ce
+  type_id: 0x88bccf1d
+  full_name: "debugfs_rename"
+}
+elf_symbol {
+  id: 0x01ff0af3
+  name: "dec_node_page_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3f89a038
+  type_id: 0x11899381
+  full_name: "dec_node_page_state"
+}
+elf_symbol {
+  id: 0x8ce0927a
+  name: "dec_zone_page_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2ae04824
+  type_id: 0x125f5377
+  full_name: "dec_zone_page_state"
+}
+elf_symbol {
+  id: 0x35ab75ba
+  name: "default_llseek"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa97d698b
+  type_id: 0x2d64ae3e
+  full_name: "default_llseek"
+}
+elf_symbol {
+  id: 0x44b5caf9
+  name: "default_wake_function"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaad8c7d6
+  type_id: 0x9d6cad99
+  full_name: "default_wake_function"
+}
+elf_symbol {
+  id: 0x7f1735ac
+  name: "deferred_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe730994c
+  type_id: 0x117081d5
+  full_name: "deferred_free"
+}
+elf_symbol {
+  id: 0x4ba4968c
+  name: "del_gendisk"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7f44480b
+  type_id: 0x18d41dd9
+  full_name: "del_gendisk"
+}
+elf_symbol {
+  id: 0xf666562b
+  name: "del_timer"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaa4008af
+  type_id: 0x920d63ce
+  full_name: "del_timer"
+}
+elf_symbol {
+  id: 0xa5179b7b
+  name: "del_timer_sync"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf15e728e
+  type_id: 0x920d63ce
+  full_name: "del_timer_sync"
+}
+elf_symbol {
+  id: 0xc1583575
+  name: "delayed_work_timer_fn"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x253af43d
+  type_id: 0x1f15d172
+  full_name: "delayed_work_timer_fn"
+}
+elf_symbol {
+  id: 0x67daf3cf
+  name: "desc_to_gpio"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x967ec840
+  type_id: 0x901afa25
+  full_name: "desc_to_gpio"
+}
+elf_symbol {
+  id: 0xe5161e20
+  name: "destroy_workqueue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8c03d20c
+  type_id: 0x14667c52
+  full_name: "destroy_workqueue"
+}
+elf_symbol {
+  id: 0x31d27334
+  name: "dev_add_pack"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x609b674f
+  type_id: 0x15cafbab
+  full_name: "dev_add_pack"
+}
+elf_symbol {
+  id: 0x2f800ec5
+  name: "dev_addr_mod"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x08cfab32
+  type_id: 0x1d2a5bee
+  full_name: "dev_addr_mod"
+}
+elf_symbol {
+  id: 0xd5cd30b1
+  name: "dev_alloc_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf1291097
+  type_id: 0x91d1290e
+  full_name: "dev_alloc_name"
+}
+elf_symbol {
+  id: 0x6c6752e7
+  name: "dev_base_lock"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xa5976e4f
+  type_id: 0xf4933b90
+  full_name: "dev_base_lock"
+}
+elf_symbol {
+  id: 0x0e0e767c
+  name: "dev_change_flags"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x585c1f37
+  type_id: 0x903e8974
+  full_name: "dev_change_flags"
+}
+elf_symbol {
+  id: 0x08912124
+  name: "dev_close"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x30a3c21b
+  type_id: 0x1c31d966
+  full_name: "dev_close"
+}
+elf_symbol {
+  id: 0x094eac4e
+  name: "dev_close_many"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x58b4645c
+  type_id: 0x1eb52294
+  full_name: "dev_close_many"
+}
+elf_symbol {
+  id: 0xb4062816
+  name: "dev_coredumpm"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb66f0370
+  type_id: 0x10273360
+  full_name: "dev_coredumpm"
+}
+elf_symbol {
+  id: 0xeac49112
+  name: "dev_coredumpv"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x253fb312
+  type_id: 0x1052519d
+  full_name: "dev_coredumpv"
+}
+elf_symbol {
+  id: 0x641371dc
+  name: "dev_driver_string"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x992067ae
+  type_id: 0x9dad8b1c
+  full_name: "dev_driver_string"
+}
+elf_symbol {
+  id: 0x5a345cb5
+  name: "dev_err_probe"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x84311b34
+  type_id: 0x93f8ec59
+  full_name: "dev_err_probe"
+}
+elf_symbol {
+  id: 0x1df78429
+  name: "dev_fetch_sw_netstats"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa1051fd8
+  type_id: 0x10290027
+  full_name: "dev_fetch_sw_netstats"
+}
+elf_symbol {
+  id: 0x9e546df6
+  name: "dev_fwnode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc473d041
+  type_id: 0x368f1732
+  full_name: "dev_fwnode"
+}
+elf_symbol {
+  id: 0x95b2cfdd
+  name: "dev_get_by_index"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb5783cb2
+  type_id: 0xfec79391
+  full_name: "dev_get_by_index"
+}
+elf_symbol {
+  id: 0xaa3567d8
+  name: "dev_get_by_index_rcu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x98b0d070
+  type_id: 0xfec79391
+  full_name: "dev_get_by_index_rcu"
+}
+elf_symbol {
+  id: 0x5240d831
+  name: "dev_get_by_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa9d5e9c6
+  type_id: 0xffa35209
+  full_name: "dev_get_by_name"
+}
+elf_symbol {
+  id: 0xe509c61f
+  name: "dev_get_by_name_rcu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x659759fa
+  type_id: 0xffa35209
+  full_name: "dev_get_by_name_rcu"
+}
+elf_symbol {
+  id: 0xfd30a35a
+  name: "dev_get_flags"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x80faba5e
+  type_id: 0xc23d0fef
+  full_name: "dev_get_flags"
+}
+elf_symbol {
+  id: 0x7921841c
+  name: "dev_get_regmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x100b434b
+  type_id: 0x8cdb45af
+  full_name: "dev_get_regmap"
+}
+elf_symbol {
+  id: 0x0b0c0190
+  name: "dev_get_stats"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6ee4ba67
+  type_id: 0x7370e0bf
+  full_name: "dev_get_stats"
+}
+elf_symbol {
+  id: 0x34feac51
+  name: "dev_get_tstats64"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2aeaf871
+  type_id: 0x1c378d7a
+  full_name: "dev_get_tstats64"
+}
+elf_symbol {
+  id: 0x87df61b4
+  name: "dev_getbyhwaddr_rcu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xae67278c
+  type_id: 0xfc706cf5
+  full_name: "dev_getbyhwaddr_rcu"
+}
+elf_symbol {
+  id: 0x8abf96ef
+  name: "dev_getfirstbyhwtype"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4baeefa3
+  type_id: 0xfc7fe8d8
+  full_name: "dev_getfirstbyhwtype"
+}
+elf_symbol {
+  id: 0x33035bf6
+  name: "dev_load"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1aa37d86
+  type_id: 0x13488e67
+  full_name: "dev_load"
+}
+elf_symbol {
+  id: 0x47c790a6
+  name: "dev_mc_sync"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x19c1118d
+  type_id: 0x91e3f355
+  full_name: "dev_mc_sync"
+}
+elf_symbol {
+  id: 0x63999db6
+  name: "dev_mc_sync_multiple"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6368fe1b
+  type_id: 0x91e3f355
+  full_name: "dev_mc_sync_multiple"
+}
+elf_symbol {
+  id: 0xf58cd5f2
+  name: "dev_mc_unsync"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x06accf73
+  type_id: 0x1cfb41e9
+  full_name: "dev_mc_unsync"
+}
+elf_symbol {
+  id: 0xa543c638
+  name: "dev_nit_active"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x897fd5d9
+  type_id: 0xf20dd3f1
+  full_name: "dev_nit_active"
+}
+elf_symbol {
+  id: 0x63b7fc82
+  name: "dev_open"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0b48e272
+  type_id: 0x913618b5
+  full_name: "dev_open"
+}
+elf_symbol {
+  id: 0xf3d00c6b
+  name: "dev_pm_clear_wake_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x01e7ead9
+  type_id: 0x100e6fc8
+  full_name: "dev_pm_clear_wake_irq"
+}
+elf_symbol {
+  id: 0xe27e32df
+  name: "dev_pm_domain_attach"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6ed7fc4f
+  type_id: 0x9ca3200b
+  full_name: "dev_pm_domain_attach"
+}
+elf_symbol {
+  id: 0xd5dbd4f5
+  name: "dev_pm_domain_attach_by_id"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3292651b
+  type_id: 0xacaf1bfd
+  full_name: "dev_pm_domain_attach_by_id"
+}
+elf_symbol {
+  id: 0xad8f62c6
+  name: "dev_pm_domain_attach_by_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb54a126d
+  type_id: 0xad414cb1
+  full_name: "dev_pm_domain_attach_by_name"
+}
+elf_symbol {
+  id: 0xe5fe5ba3
+  name: "dev_pm_domain_detach"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbd56661e
+  type_id: 0x11bb92b7
+  full_name: "dev_pm_domain_detach"
+}
+elf_symbol {
+  id: 0x6ef38ba9
+  name: "dev_pm_genpd_add_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6092de0f
+  type_id: 0x9d7807e5
+  full_name: "dev_pm_genpd_add_notifier"
+}
+elf_symbol {
+  id: 0xa7986ac9
+  name: "dev_pm_genpd_remove_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc9488ec4
+  type_id: 0x9d16dd74
+  full_name: "dev_pm_genpd_remove_notifier"
+}
+elf_symbol {
+  id: 0x35986460
+  name: "dev_pm_genpd_set_next_wakeup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8567beb2
+  type_id: 0x10497fda
+  full_name: "dev_pm_genpd_set_next_wakeup"
+}
+elf_symbol {
+  id: 0x73c97c25
+  name: "dev_pm_genpd_set_performance_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x81bb593b
+  type_id: 0x9c00c8ec
+  full_name: "dev_pm_genpd_set_performance_state"
+}
+elf_symbol {
+  id: 0xe85f8363
+  name: "dev_pm_opp_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe7184297
+  type_id: 0x9dd7d5bf
+  full_name: "dev_pm_opp_add"
+}
+elf_symbol {
+  id: 0xc60abbd3
+  name: "dev_pm_opp_adjust_voltage"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3e14b52f
+  type_id: 0x9dd714b7
+  full_name: "dev_pm_opp_adjust_voltage"
+}
+elf_symbol {
+  id: 0xb974f8ce
+  name: "dev_pm_opp_clear_config"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x32295715
+  type_id: 0x09506558
+  full_name: "dev_pm_opp_clear_config"
+}
+elf_symbol {
+  id: 0x489dfd09
+  name: "dev_pm_opp_disable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xab6841c5
+  type_id: 0x9ddb08e6
+  full_name: "dev_pm_opp_disable"
+}
+elf_symbol {
+  id: 0x4059d2bb
+  name: "dev_pm_opp_enable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x55b7795c
+  type_id: 0x9ddb08e6
+  full_name: "dev_pm_opp_enable"
+}
+elf_symbol {
+  id: 0x22bf9346
+  name: "dev_pm_opp_find_freq_ceil"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa04c730f
+  type_id: 0x81de8179
+  full_name: "dev_pm_opp_find_freq_ceil"
+}
+elf_symbol {
+  id: 0x56a85a70
+  name: "dev_pm_opp_find_freq_exact"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0646177d
+  type_id: 0x81113ebe
+  full_name: "dev_pm_opp_find_freq_exact"
+}
+elf_symbol {
+  id: 0x15de010f
+  name: "dev_pm_opp_find_freq_floor"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8229b3d9
+  type_id: 0x81de8179
+  full_name: "dev_pm_opp_find_freq_floor"
+}
+elf_symbol {
+  id: 0xdb13d287
+  name: "dev_pm_opp_find_level_exact"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x26c62b24
+  type_id: 0x80d1a163
+  full_name: "dev_pm_opp_find_level_exact"
+}
+elf_symbol {
+  id: 0xd301890a
+  name: "dev_pm_opp_free_cpufreq_table"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdcc13fcb
+  type_id: 0x10275b4b
+  full_name: "dev_pm_opp_free_cpufreq_table"
+}
+elf_symbol {
+  id: 0x2fe85fe8
+  name: "dev_pm_opp_get_freq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb3fc1b14
+  type_id: 0x37d5564f
+  full_name: "dev_pm_opp_get_freq"
+}
+elf_symbol {
+  id: 0xe10a358b
+  name: "dev_pm_opp_get_level"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf6b29b49
+  type_id: 0xc8a2e5e7
+  full_name: "dev_pm_opp_get_level"
+}
+elf_symbol {
+  id: 0x09c64cb4
+  name: "dev_pm_opp_get_max_transition_latency"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc1af3a47
+  type_id: 0x313af308
+  full_name: "dev_pm_opp_get_max_transition_latency"
+}
+elf_symbol {
+  id: 0x4640865f
+  name: "dev_pm_opp_get_of_node"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd71eddf6
+  type_id: 0x708a45ca
+  full_name: "dev_pm_opp_get_of_node"
+}
+elf_symbol {
+  id: 0xf233a4f2
+  name: "dev_pm_opp_get_opp_count"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x738e5f33
+  type_id: 0x9d16dd74
+  full_name: "dev_pm_opp_get_opp_count"
+}
+elf_symbol {
+  id: 0x5f8e5002
+  name: "dev_pm_opp_get_opp_table"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5afd1bfe
+  type_id: 0x31e594b0
+  full_name: "dev_pm_opp_get_opp_table"
+}
+elf_symbol {
+  id: 0x4bb20cbc
+  name: "dev_pm_opp_get_sharing_cpus"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd127facf
+  type_id: 0x9df535bf
+  full_name: "dev_pm_opp_get_sharing_cpus"
+}
+elf_symbol {
+  id: 0x0d97ed87
+  name: "dev_pm_opp_get_suspend_opp_freq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x38aff7df
+  type_id: 0x313af308
+  full_name: "dev_pm_opp_get_suspend_opp_freq"
+}
+elf_symbol {
+  id: 0x0aa80467
+  name: "dev_pm_opp_get_voltage"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x617211ff
+  type_id: 0x37d5564f
+  full_name: "dev_pm_opp_get_voltage"
+}
+elf_symbol {
+  id: 0x92dcd9e0
+  name: "dev_pm_opp_init_cpufreq_table"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2391ea0c
+  type_id: 0x9d3fe9f7
+  full_name: "dev_pm_opp_init_cpufreq_table"
+}
+elf_symbol {
+  id: 0xde18ea43
+  name: "dev_pm_opp_of_add_table"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2d3b704e
+  type_id: 0x9d16dd74
+  full_name: "dev_pm_opp_of_add_table"
+}
+elf_symbol {
+  id: 0xd14b81b5
+  name: "dev_pm_opp_of_add_table_indexed"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9d67227a
+  type_id: 0x9c8a5e38
+  full_name: "dev_pm_opp_of_add_table_indexed"
+}
+elf_symbol {
+  id: 0x2d6a4342
+  name: "dev_pm_opp_of_cpumask_add_table"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8cf281e7
+  type_id: 0x91c35328
+  full_name: "dev_pm_opp_of_cpumask_add_table"
+}
+elf_symbol {
+  id: 0xa7f66a97
+  name: "dev_pm_opp_of_cpumask_remove_table"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6ded56d3
+  type_id: 0x1cdbe194
+  full_name: "dev_pm_opp_of_cpumask_remove_table"
+}
+elf_symbol {
+  id: 0xbb6293b4
+  name: "dev_pm_opp_of_find_icc_paths"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe197a401
+  type_id: 0x9d899db1
+  full_name: "dev_pm_opp_of_find_icc_paths"
+}
+elf_symbol {
+  id: 0x12485bef
+  name: "dev_pm_opp_of_get_opp_desc_node"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3b16dc39
+  type_id: 0x7665e08d
+  full_name: "dev_pm_opp_of_get_opp_desc_node"
+}
+elf_symbol {
+  id: 0xe26f4d10
+  name: "dev_pm_opp_of_get_sharing_cpus"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x11ecaf8e
+  type_id: 0x9df535bf
+  full_name: "dev_pm_opp_of_get_sharing_cpus"
+}
+elf_symbol {
+  id: 0x262ddd16
+  name: "dev_pm_opp_of_register_em"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x624bd4e9
+  type_id: 0x9df535bf
+  full_name: "dev_pm_opp_of_register_em"
+}
+elf_symbol {
+  id: 0x706732e6
+  name: "dev_pm_opp_of_remove_table"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x04bb325e
+  type_id: 0x100e6fc8
+  full_name: "dev_pm_opp_of_remove_table"
+}
+elf_symbol {
+  id: 0x52c8a093
+  name: "dev_pm_opp_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x628882fb
+  type_id: 0x16e1ca8f
+  full_name: "dev_pm_opp_put"
+}
+elf_symbol {
+  id: 0x4624f3d3
+  name: "dev_pm_opp_put_opp_table"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbc4e604a
+  type_id: 0x196c5dcc
+  full_name: "dev_pm_opp_put_opp_table"
+}
+elf_symbol {
+  id: 0xe6f275cc
+  name: "dev_pm_opp_remove"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xab0b91e9
+  type_id: 0x10c3ba5a
+  full_name: "dev_pm_opp_remove"
+}
+elf_symbol {
+  id: 0x90259097
+  name: "dev_pm_opp_remove_all_dynamic"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x94de810f
+  type_id: 0x100e6fc8
+  full_name: "dev_pm_opp_remove_all_dynamic"
+}
+elf_symbol {
+  id: 0x4b0b944c
+  name: "dev_pm_opp_set_config"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf91199eb
+  type_id: 0x9d0fcb12
+  full_name: "dev_pm_opp_set_config"
+}
+elf_symbol {
+  id: 0x9b2f909d
+  name: "dev_pm_opp_set_opp"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x90f6233c
+  type_id: 0x9d7144c5
+  full_name: "dev_pm_opp_set_opp"
+}
+elf_symbol {
+  id: 0xc927ca5d
+  name: "dev_pm_opp_set_rate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4c8387a4
+  type_id: 0x9ddb08e6
+  full_name: "dev_pm_opp_set_rate"
+}
+elf_symbol {
+  id: 0xe3ab91c3
+  name: "dev_pm_opp_set_sharing_cpus"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaeb45770
+  type_id: 0x9dd2e674
+  full_name: "dev_pm_opp_set_sharing_cpus"
+}
+elf_symbol {
+  id: 0x72797495
+  name: "dev_pm_qos_add_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6237e7ff
+  type_id: 0x9d75a454
+  full_name: "dev_pm_qos_add_notifier"
+}
+elf_symbol {
+  id: 0x8b918cf2
+  name: "dev_pm_qos_add_request"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x26710003
+  type_id: 0x9d40265c
+  full_name: "dev_pm_qos_add_request"
+}
+elf_symbol {
+  id: 0x0343af6f
+  name: "dev_pm_qos_read_value"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa128fbb4
+  type_id: 0x811e789b
+  full_name: "dev_pm_qos_read_value"
+}
+elf_symbol {
+  id: 0x92e87d67
+  name: "dev_pm_qos_remove_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xce2252ae
+  type_id: 0x9d75a454
+  full_name: "dev_pm_qos_remove_notifier"
+}
+elf_symbol {
+  id: 0x9134577e
+  name: "dev_pm_qos_remove_request"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc3fc2baa
+  type_id: 0x98006d18
+  full_name: "dev_pm_qos_remove_request"
+}
+elf_symbol {
+  id: 0xb6e3e4d8
+  name: "dev_pm_qos_update_request"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x279988b8
+  type_id: 0x9b50173a
+  full_name: "dev_pm_qos_update_request"
+}
+elf_symbol {
+  id: 0xcbc295b7
+  name: "dev_pm_set_dedicated_wake_irq_reverse"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x559050f3
+  type_id: 0x9c8a5e38
+  full_name: "dev_pm_set_dedicated_wake_irq_reverse"
+}
+elf_symbol {
+  id: 0x52122b68
+  name: "dev_pm_set_wake_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8450624c
+  type_id: 0x9c8a5e38
+  full_name: "dev_pm_set_wake_irq"
+}
+elf_symbol {
+  id: 0xd084c59b
+  name: "dev_printk_emit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4aa5e88c
+  type_id: 0x84bb5eaa
+  full_name: "dev_printk_emit"
+}
+elf_symbol {
+  id: 0x51d93b3b
+  name: "dev_remove_pack"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2bfff2a4
+  type_id: 0x15cafbab
+  full_name: "dev_remove_pack"
+}
+elf_symbol {
+  id: 0x13f867b3
+  name: "dev_set_allmulti"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4ecd66ce
+  type_id: 0x90b5e896
+  full_name: "dev_set_allmulti"
+}
+elf_symbol {
+  id: 0xad3c99f7
+  name: "dev_set_mac_address"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0d98be8b
+  type_id: 0x91fbd1f6
+  full_name: "dev_set_mac_address"
+}
+elf_symbol {
+  id: 0xb13c4e5f
+  name: "dev_set_mtu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0793a2a4
+  type_id: 0x90b5e896
+  full_name: "dev_set_mtu"
+}
+elf_symbol {
+  id: 0x238f99e1
+  name: "dev_set_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0784f05c
+  type_id: 0x9dc7d522
+  full_name: "dev_set_name"
+}
+elf_symbol {
+  id: 0x366c7ecb
+  name: "dev_set_promiscuity"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xce576468
+  type_id: 0x90b5e896
+  full_name: "dev_set_promiscuity"
+}
+elf_symbol {
+  id: 0x033d3eaf
+  name: "dev_set_threaded"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x91ca7518
+  type_id: 0x909c96a5
+  full_name: "dev_set_threaded"
+}
+elf_symbol {
+  id: 0xd7455659
+  name: "dev_to_i3cdev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x474d0fb6
+  type_id: 0x32d95585
+  full_name: "dev_to_i3cdev"
+}
+elf_symbol {
+  id: 0x07c1fefc
+  name: "dev_uc_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9ae58f51
+  type_id: 0x91c85a84
+  full_name: "dev_uc_add"
+}
+elf_symbol {
+  id: 0xfd8ee5e4
+  name: "dev_uc_del"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa8dd16a5
+  type_id: 0x91c85a84
+  full_name: "dev_uc_del"
+}
+elf_symbol {
+  id: 0xdc3c497c
+  name: "dev_uc_sync"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0be53878
+  type_id: 0x91e3f355
+  full_name: "dev_uc_sync"
+}
+elf_symbol {
+  id: 0xc72fb978
+  name: "dev_uc_sync_multiple"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2cdcbfac
+  type_id: 0x91e3f355
+  full_name: "dev_uc_sync_multiple"
+}
+elf_symbol {
+  id: 0x1938c508
+  name: "dev_uc_unsync"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2dd550c3
+  type_id: 0x1cfb41e9
+  full_name: "dev_uc_unsync"
+}
+elf_symbol {
+  id: 0xfc7749bc
+  name: "dev_vprintk_emit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x629eb098
+  type_id: 0x84ba5d97
+  full_name: "dev_vprintk_emit"
+}
+elf_symbol {
+  id: 0x55a1ee95
+  name: "devfreq_add_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7ea982d2
+  type_id: 0xda80c39b
+  full_name: "devfreq_add_device"
+}
+elf_symbol {
+  id: 0x04c32c7c
+  name: "devfreq_add_governor"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa1de781d
+  type_id: 0x91cab466
+  full_name: "devfreq_add_governor"
+}
+elf_symbol {
+  id: 0x647c0881
+  name: "devfreq_cooling_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x38dd7eaa
+  type_id: 0x11aaf502
+  full_name: "devfreq_cooling_unregister"
+}
+elf_symbol {
+  id: 0x19e74e36
+  name: "devfreq_get_devfreq_by_node"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x71f26aba
+  type_id: 0xd7754407
+  full_name: "devfreq_get_devfreq_by_node"
+}
+elf_symbol {
+  id: 0xdb9d4783
+  name: "devfreq_get_devfreq_by_phandle"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x13bddc95
+  type_id: 0xda1e3051
+  full_name: "devfreq_get_devfreq_by_phandle"
+}
+elf_symbol {
+  id: 0x4c5f0ec2
+  name: "devfreq_monitor_resume"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcb31d2fd
+  type_id: 0x1942d44d
+  full_name: "devfreq_monitor_resume"
+}
+elf_symbol {
+  id: 0xb3e16eb2
+  name: "devfreq_monitor_start"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x28179e84
+  type_id: 0x1942d44d
+  full_name: "devfreq_monitor_start"
+}
+elf_symbol {
+  id: 0xebc2af57
+  name: "devfreq_monitor_stop"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5b5b4508
+  type_id: 0x1942d44d
+  full_name: "devfreq_monitor_stop"
+}
+elf_symbol {
+  id: 0x79ee7b2e
+  name: "devfreq_monitor_suspend"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf304bbbc
+  type_id: 0x1942d44d
+  full_name: "devfreq_monitor_suspend"
+}
+elf_symbol {
+  id: 0xb6554d25
+  name: "devfreq_recommended_opp"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7495765d
+  type_id: 0x81ecc373
+  full_name: "devfreq_recommended_opp"
+}
+elf_symbol {
+  id: 0xa6333d46
+  name: "devfreq_register_opp_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x69986964
+  type_id: 0x9d8b7529
+  full_name: "devfreq_register_opp_notifier"
+}
+elf_symbol {
+  id: 0x452b7360
+  name: "devfreq_remove_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x60ecad3d
+  type_id: 0x945a66f1
+  full_name: "devfreq_remove_device"
+}
+elf_symbol {
+  id: 0xfa4aa1a6
+  name: "devfreq_remove_governor"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe9ff59fd
+  type_id: 0x91cab466
+  full_name: "devfreq_remove_governor"
+}
+elf_symbol {
+  id: 0x74bc0467
+  name: "devfreq_resume_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbfc01b5d
+  type_id: 0x945a66f1
+  full_name: "devfreq_resume_device"
+}
+elf_symbol {
+  id: 0x01680af7
+  name: "devfreq_suspend_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf894254b
+  type_id: 0x945a66f1
+  full_name: "devfreq_suspend_device"
+}
+elf_symbol {
+  id: 0x799c3ec1
+  name: "devfreq_unregister_opp_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x80d2a057
+  type_id: 0x9d8b7529
+  full_name: "devfreq_unregister_opp_notifier"
+}
+elf_symbol {
+  id: 0x34ba5507
+  name: "devfreq_update_interval"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3d86f570
+  type_id: 0x192d11cd
+  full_name: "devfreq_update_interval"
+}
+elf_symbol {
+  id: 0x2ad163ea
+  name: "device_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc47219a9
+  type_id: 0x9d16dd74
+  full_name: "device_add"
+}
+elf_symbol {
+  id: 0x02599b70
+  name: "device_add_disk"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5b26c1e6
+  type_id: 0x9d93897e
+  full_name: "device_add_disk"
+}
+elf_symbol {
+  id: 0x21c2b40a
+  name: "device_add_groups"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x74fd2cab
+  type_id: 0x9d0fd195
+  full_name: "device_add_groups"
+}
+elf_symbol {
+  id: 0x1ed14221
+  name: "device_attach"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x12610f4d
+  type_id: 0x9d16dd74
+  full_name: "device_attach"
+}
+elf_symbol {
+  id: 0xac41b920
+  name: "device_bind_driver"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2ed454cf
+  type_id: 0x9d16dd74
+  full_name: "device_bind_driver"
+}
+elf_symbol {
+  id: 0xb64af32a
+  name: "device_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6bc6324b
+  type_id: 0xa78fe504
+  full_name: "device_create"
+}
+elf_symbol {
+  id: 0x48855bc6
+  name: "device_create_bin_file"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0b968d79
+  type_id: 0x9df7985b
+  full_name: "device_create_bin_file"
+}
+elf_symbol {
+  id: 0x542963cf
+  name: "device_create_file"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe25f59ab
+  type_id: 0x9de4ff9b
+  full_name: "device_create_file"
+}
+elf_symbol {
+  id: 0x1da2d3da
+  name: "device_create_managed_software_node"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x07813c35
+  type_id: 0x9dc044d0
+  full_name: "device_create_managed_software_node"
+}
+elf_symbol {
+  id: 0x83a82ebe
+  name: "device_create_with_groups"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa2675780
+  type_id: 0xa78fe955
+  full_name: "device_create_with_groups"
+}
+elf_symbol {
+  id: 0xe85fa1f1
+  name: "device_del"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9a53602b
+  type_id: 0x100e6fc8
+  full_name: "device_del"
+}
+elf_symbol {
+  id: 0xe6df6df5
+  name: "device_destroy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc2569e41
+  type_id: 0x19a776c5
+  full_name: "device_destroy"
+}
+elf_symbol {
+  id: 0x0b165427
+  name: "device_find_child"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x07583eb2
+  type_id: 0xadd088bd
+  full_name: "device_find_child"
+}
+elf_symbol {
+  id: 0xd81e7ab3
+  name: "device_for_each_child"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe22fac99
+  type_id: 0x9d7f5bac
+  full_name: "device_for_each_child"
+}
+elf_symbol {
+  id: 0x3b013a69
+  name: "device_for_each_child_reverse"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7d20bee7
+  type_id: 0x9d7f5bac
+  full_name: "device_for_each_child_reverse"
+}
+elf_symbol {
+  id: 0x0576df29
+  name: "device_get_child_node_count"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd337280d
+  type_id: 0xce4d40a0
+  full_name: "device_get_child_node_count"
+}
+elf_symbol {
+  id: 0x7fca902b
+  name: "device_get_dma_attr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x98ffbcdf
+  type_id: 0x167dac02
+  full_name: "device_get_dma_attr"
+}
+elf_symbol {
+  id: 0x96346c6f
+  name: "device_get_mac_address"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x682d72f7
+  type_id: 0x9d04d2ef
+  full_name: "device_get_mac_address"
+}
+elf_symbol {
+  id: 0xce223563
+  name: "device_get_match_data"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf1b58a74
+  type_id: 0x5846e63a
+  full_name: "device_get_match_data"
+}
+elf_symbol {
+  id: 0x239ee8e4
+  name: "device_get_named_child_node"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb456957a
+  type_id: 0x3908f702
+  full_name: "device_get_named_child_node"
+}
+elf_symbol {
+  id: 0x2b7b171a
+  name: "device_get_next_child_node"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe570c27d
+  type_id: 0x39e2f73b
+  full_name: "device_get_next_child_node"
+}
+elf_symbol {
+  id: 0xd4b90c71
+  name: "device_get_phy_mode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbd162510
+  type_id: 0x9d16dd74
+  full_name: "device_get_phy_mode"
+}
+elf_symbol {
+  id: 0xd698e2aa
+  name: "device_initialize"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x554e3ff5
+  type_id: 0x100e6fc8
+  full_name: "device_initialize"
+}
+elf_symbol {
+  id: 0x205d7c50
+  name: "device_link_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x17336304
+  type_id: 0x60262630
+  full_name: "device_link_add"
+}
+elf_symbol {
+  id: 0x5f40d4b5
+  name: "device_link_del"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd99a7e16
+  type_id: 0x19ba6fc0
+  full_name: "device_link_del"
+}
+elf_symbol {
+  id: 0x40956c37
+  name: "device_link_remove"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x421ad161
+  type_id: 0x16be6b3a
+  full_name: "device_link_remove"
+}
+elf_symbol {
+  id: 0x12692b2c
+  name: "device_match_any"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x79bc2c09
+  type_id: 0x9df2a123
+  full_name: "device_match_any"
+}
+elf_symbol {
+  id: 0x61f2a638
+  name: "device_match_fwnode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x18ab672f
+  type_id: 0x9df2a123
+  full_name: "device_match_fwnode"
+}
+elf_symbol {
+  id: 0xe37e861a
+  name: "device_match_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4291b3e0
+  type_id: 0x9df2a123
+  full_name: "device_match_name"
+}
+elf_symbol {
+  id: 0x714a49b3
+  name: "device_match_of_node"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8afa5784
+  type_id: 0x9df2a123
+  full_name: "device_match_of_node"
+}
+elf_symbol {
+  id: 0xfb485c4b
+  name: "device_move"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa20b010c
+  type_id: 0x9d26cfef
+  full_name: "device_move"
+}
+elf_symbol {
+  id: 0x3a21dcc8
+  name: "device_node_to_regmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6bbe1b3a
+  type_id: 0x81a9f9cd
+  full_name: "device_node_to_regmap"
+}
+elf_symbol {
+  id: 0xd0ac64f7
+  name: "device_property_match_string"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6451d5d9
+  type_id: 0x9de11b8d
+  full_name: "device_property_match_string"
+}
+elf_symbol {
+  id: 0xa1e3330b
+  name: "device_property_present"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd4b590ed
+  type_id: 0xfeca278b
+  full_name: "device_property_present"
+}
+elf_symbol {
+  id: 0x85ab844f
+  name: "device_property_read_string"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4f49d69f
+  type_id: 0x9defdaa5
+  full_name: "device_property_read_string"
+}
+elf_symbol {
+  id: 0x90a9db6c
+  name: "device_property_read_u16_array"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x61b1fa90
+  type_id: 0x9de6ffa0
+  full_name: "device_property_read_u16_array"
+}
+elf_symbol {
+  id: 0xde1fbc57
+  name: "device_property_read_u32_array"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x752e64c4
+  type_id: 0x9de37bf9
+  full_name: "device_property_read_u32_array"
+}
+elf_symbol {
+  id: 0xa161f29a
+  name: "device_property_read_u8_array"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x993d17a3
+  type_id: 0x9ded7ebc
+  full_name: "device_property_read_u8_array"
+}
+elf_symbol {
+  id: 0x0bf6937c
+  name: "device_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0fa063de
+  type_id: 0x9d16dd74
+  full_name: "device_register"
+}
+elf_symbol {
+  id: 0x589e892d
+  name: "device_release_driver"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x37988ae5
+  type_id: 0x100e6fc8
+  full_name: "device_release_driver"
+}
+elf_symbol {
+  id: 0x25bf4477
+  name: "device_remove_bin_file"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4a5f012e
+  type_id: 0x10ef2ae7
+  full_name: "device_remove_bin_file"
+}
+elf_symbol {
+  id: 0x5b8e8574
+  name: "device_remove_file"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x17678b2a
+  type_id: 0x10fc4d27
+  full_name: "device_remove_file"
+}
+elf_symbol {
+  id: 0x5a62c5df
+  name: "device_remove_groups"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x702e1d06
+  type_id: 0x10176329
+  full_name: "device_remove_groups"
+}
+elf_symbol {
+  id: 0x20c43211
+  name: "device_rename"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7033f9f3
+  type_id: 0x9dee9fa0
+  full_name: "device_rename"
+}
+elf_symbol {
+  id: 0xcdcce9e8
+  name: "device_set_of_node_from_dev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdadf3a62
+  type_id: 0x10f0f603
+  full_name: "device_set_of_node_from_dev"
+}
+elf_symbol {
+  id: 0x67a68b2f
+  name: "device_set_wakeup_capable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x490c3055
+  type_id: 0x11bb92b7
+  full_name: "device_set_wakeup_capable"
+}
+elf_symbol {
+  id: 0x89e08852
+  name: "device_set_wakeup_enable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbea999aa
+  type_id: 0x9ca3200b
+  full_name: "device_set_wakeup_enable"
+}
+elf_symbol {
+  id: 0xb9e84b8a
+  name: "device_show_bool"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe3983df5
+  type_id: 0x145d7056
+  full_name: "device_show_bool"
+}
+elf_symbol {
+  id: 0x97cf37b0
+  name: "device_show_int"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7fdafadd
+  type_id: 0x145d7056
+  full_name: "device_show_int"
+}
+elf_symbol {
+  id: 0x0c505108
+  name: "device_store_bool"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xde719222
+  type_id: 0x14500457
+  full_name: "device_store_bool"
+}
+elf_symbol {
+  id: 0x8e520fee
+  name: "device_store_int"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc054eae6
+  type_id: 0x14500457
+  full_name: "device_store_int"
+}
+elf_symbol {
+  id: 0x440b32de
+  name: "device_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd6b17cf1
+  type_id: 0x100e6fc8
+  full_name: "device_unregister"
+}
+elf_symbol {
+  id: 0x96ffcda6
+  name: "device_wakeup_disable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1c7ea990
+  type_id: 0x9d16dd74
+  full_name: "device_wakeup_disable"
+}
+elf_symbol {
+  id: 0x4b1a4683
+  name: "device_wakeup_enable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x088b197f
+  type_id: 0x9d16dd74
+  full_name: "device_wakeup_enable"
+}
+elf_symbol {
+  id: 0xde9ec7ca
+  name: "devm_add_action"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe6fe2896
+  type_id: 0x9d2c05c3
+  full_name: "devm_add_action"
+}
+elf_symbol {
+  id: 0xa2a47944
+  name: "devm_alloc_etherdev_mqs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x86360a75
+  type_id: 0xfd6947a6
+  full_name: "devm_alloc_etherdev_mqs"
+}
+elf_symbol {
+  id: 0x97ae66e9
+  name: "devm_backlight_device_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x55da2bd9
+  type_id: 0x7cd5f8d0
+  full_name: "devm_backlight_device_register"
+}
+elf_symbol {
+  id: 0x206986c6
+  name: "devm_backlight_device_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd43c8a67
+  type_id: 0x10cc1a70
+  full_name: "devm_backlight_device_unregister"
+}
+elf_symbol {
+  id: 0xff3a9dde
+  name: "devm_bitmap_zalloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4c4bbe27
+  type_id: 0xaa7f8be4
+  full_name: "devm_bitmap_zalloc"
+}
+elf_symbol {
+  id: 0x01a0cc1d
+  name: "devm_blk_crypto_profile_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9318bcc8
+  type_id: 0x9d25e982
+  full_name: "devm_blk_crypto_profile_init"
+}
+elf_symbol {
+  id: 0x32439a1e
+  name: "devm_clk_bulk_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeef0516b
+  type_id: 0x9c84371e
+  full_name: "devm_clk_bulk_get"
+}
+elf_symbol {
+  id: 0x70cc5ef2
+  name: "devm_clk_bulk_get_all"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd9130cf3
+  type_id: 0x9d053909
+  full_name: "devm_clk_bulk_get_all"
+}
+elf_symbol {
+  id: 0xf770e060
+  name: "devm_clk_bulk_get_optional"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcf5dcde7
+  type_id: 0x9c84371e
+  full_name: "devm_clk_bulk_get_optional"
+}
+elf_symbol {
+  id: 0xfe156c9a
+  name: "devm_clk_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa25d3c67
+  type_id: 0xa671941e
+  full_name: "devm_clk_get"
+}
+elf_symbol {
+  id: 0xf569682d
+  name: "devm_clk_get_optional"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8d6f4569
+  type_id: 0xa671941e
+  full_name: "devm_clk_get_optional"
+}
+elf_symbol {
+  id: 0x0d9ec99a
+  name: "devm_clk_hw_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9abb54ac
+  type_id: 0x9d3d4fff
+  full_name: "devm_clk_hw_register"
+}
+elf_symbol {
+  id: 0x61438d3a
+  name: "devm_clk_hw_register_fixed_factor_parent_hw"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x72b33b35
+  type_id: 0xde006855
+  full_name: "devm_clk_hw_register_fixed_factor_parent_hw"
+}
+elf_symbol {
+  id: 0xdeeb802d
+  name: "devm_clk_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2f220db3
+  type_id: 0x10f95469
+  full_name: "devm_clk_put"
+}
+elf_symbol {
+  id: 0x78407718
+  name: "devm_clk_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5878b0aa
+  type_id: 0xa6a24441
+  full_name: "devm_clk_register"
+}
+elf_symbol {
+  id: 0x88d6fe86
+  name: "devm_devfreq_add_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x83ab22d6
+  type_id: 0xda80c39b
+  full_name: "devm_devfreq_add_device"
+}
+elf_symbol {
+  id: 0x3afde7ec
+  name: "devm_devfreq_register_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xde16c4ef
+  type_id: 0x9d8c8e95
+  full_name: "devm_devfreq_register_notifier"
+}
+elf_symbol {
+  id: 0x2bf23b7c
+  name: "devm_devfreq_remove_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x79fa057d
+  type_id: 0x1093c795
+  full_name: "devm_devfreq_remove_device"
+}
+elf_symbol {
+  id: 0x97301de5
+  name: "devm_devfreq_unregister_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4e144aab
+  type_id: 0x10943c29
+  full_name: "devm_devfreq_unregister_notifier"
+}
+elf_symbol {
+  id: 0x8ed64fa4
+  name: "devm_device_add_group"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa6f886af
+  type_id: 0x9ddbed6b
+  full_name: "devm_device_add_group"
+}
+elf_symbol {
+  id: 0x0764373d
+  name: "devm_device_add_groups"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbde0d8e2
+  type_id: 0x9d0fd195
+  full_name: "devm_device_add_groups"
+}
+elf_symbol {
+  id: 0x72706e55
+  name: "devm_device_remove_group"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xec7eb28b
+  type_id: 0x10c35fd7
+  full_name: "devm_device_remove_group"
+}
+elf_symbol {
+  id: 0x6bf4c5d2
+  name: "devm_drm_of_get_bridge"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf723a3af
+  type_id: 0x9a68883d
+  full_name: "devm_drm_of_get_bridge"
+}
+elf_symbol {
+  id: 0x4a6566b1
+  name: "devm_drm_panel_bridge_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x46685c4f
+  type_id: 0x9ac9a7eb
+  full_name: "devm_drm_panel_bridge_add"
+}
+elf_symbol {
+  id: 0x0e6117e6
+  name: "devm_drm_panel_bridge_add_typed"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x27f483e4
+  type_id: 0x9afbe5e1
+  full_name: "devm_drm_panel_bridge_add_typed"
+}
+elf_symbol {
+  id: 0x4b1cb09a
+  name: "devm_extcon_dev_allocate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x791836df
+  type_id: 0x0f502b97
+  full_name: "devm_extcon_dev_allocate"
+}
+elf_symbol {
+  id: 0xbcab4e4a
+  name: "devm_extcon_dev_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd0e76d8f
+  type_id: 0x9d56f523
+  full_name: "devm_extcon_dev_register"
+}
+elf_symbol {
+  id: 0xa77979a2
+  name: "devm_extcon_dev_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2eb2975a
+  type_id: 0x104e479f
+  full_name: "devm_extcon_dev_unregister"
+}
+elf_symbol {
+  id: 0x56724950
+  name: "devm_extcon_register_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1f9c8229
+  type_id: 0x9d47faa0
+  full_name: "devm_extcon_register_notifier"
+}
+elf_symbol {
+  id: 0x9218e37d
+  name: "devm_free_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaa6e7490
+  type_id: 0x111e5509
+  full_name: "devm_free_irq"
+}
+elf_symbol {
+  id: 0xc8de14e8
+  name: "devm_fwnode_gpiod_get_index"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x92ce209d
+  type_id: 0x5fc92844
+  full_name: "devm_fwnode_gpiod_get_index"
+}
+elf_symbol {
+  id: 0xaf5de696
+  name: "devm_fwnode_iio_channel_get_by_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x98f16977
+  type_id: 0xa96969e0
+  full_name: "devm_fwnode_iio_channel_get_by_name"
+}
+elf_symbol {
+  id: 0x3a75a119
+  name: "devm_fwnode_pwm_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9029cef2
+  type_id: 0x03884347
+  full_name: "devm_fwnode_pwm_get"
+}
+elf_symbol {
+  id: 0x5b50e567
+  name: "devm_gen_pool_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x42827a03
+  type_id: 0x5d7d36d4
+  full_name: "devm_gen_pool_create"
+}
+elf_symbol {
+  id: 0xd4aa5b9b
+  name: "devm_get_clk_from_child"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8ecec489
+  type_id: 0xa6579ee9
+  full_name: "devm_get_clk_from_child"
+}
+elf_symbol {
+  id: 0x15a83ee8
+  name: "devm_gh_rm_register_platform_ops"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe82ea1f9
+  type_id: 0x9dd4624b
+  full_name: "devm_gh_rm_register_platform_ops"
+}
+elf_symbol {
+  id: 0x010f4f76
+  name: "devm_gpio_request"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7484dfca
+  type_id: 0x9c0f4cc1
+  full_name: "devm_gpio_request"
+}
+elf_symbol {
+  id: 0x33c681cd
+  name: "devm_gpio_request_one"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc4a21586
+  type_id: 0x9c0cedf7
+  full_name: "devm_gpio_request_one"
+}
+elf_symbol {
+  id: 0x6903f6f8
+  name: "devm_gpiochip_add_data_with_key"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xda8fe327
+  type_id: 0x9d7300d0
+  full_name: "devm_gpiochip_add_data_with_key"
+}
+elf_symbol {
+  id: 0x097ab520
+  name: "devm_gpiod_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x66e8ab95
+  type_id: 0x5f272d07
+  full_name: "devm_gpiod_get"
+}
+elf_symbol {
+  id: 0xccb2ecff
+  name: "devm_gpiod_get_array"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6fd0dd78
+  type_id: 0x8dd5f3b8
+  full_name: "devm_gpiod_get_array"
+}
+elf_symbol {
+  id: 0xd0f2d980
+  name: "devm_gpiod_get_index"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x37498737
+  type_id: 0x5f3cfa16
+  full_name: "devm_gpiod_get_index"
+}
+elf_symbol {
+  id: 0xf6b9516e
+  name: "devm_gpiod_get_optional"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe17397b0
+  type_id: 0x5f272d07
+  full_name: "devm_gpiod_get_optional"
+}
+elf_symbol {
+  id: 0xa2b20c15
+  name: "devm_gpiod_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa8cb2b21
+  type_id: 0x109bed40
+  full_name: "devm_gpiod_put"
+}
+elf_symbol {
+  id: 0x0ea63f59
+  name: "devm_gpiod_put_array"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0f8cf699
+  type_id: 0x10c7c629
+  full_name: "devm_gpiod_put_array"
+}
+elf_symbol {
+  id: 0x753fb351
+  name: "devm_hwrng_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9b4c1e3d
+  type_id: 0x9d411575
+  full_name: "devm_hwrng_register"
+}
+elf_symbol {
+  id: 0x40c3a63b
+  name: "devm_hwspin_lock_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6b52762f
+  type_id: 0x9d27e8b1
+  full_name: "devm_hwspin_lock_register"
+}
+elf_symbol {
+  id: 0xe896baa8
+  name: "devm_hwspin_lock_request_specific"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe5ffb83a
+  type_id: 0xc2e99087
+  full_name: "devm_hwspin_lock_request_specific"
+}
+elf_symbol {
+  id: 0xa29138c1
+  name: "devm_i2c_new_dummy_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2cc383ae
+  type_id: 0x8c93d036
+  full_name: "devm_i2c_new_dummy_device"
+}
+elf_symbol {
+  id: 0x35d98638
+  name: "devm_iio_channel_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf9e3414e
+  type_id: 0xa98cedf4
+  full_name: "devm_iio_channel_get"
+}
+elf_symbol {
+  id: 0xb5428827
+  name: "devm_iio_channel_get_all"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa33a8bc2
+  type_id: 0xa974af20
+  full_name: "devm_iio_channel_get_all"
+}
+elf_symbol {
+  id: 0x4e9c460b
+  name: "devm_iio_device_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfb1c3e17
+  type_id: 0x582c94c3
+  full_name: "devm_iio_device_alloc"
+}
+elf_symbol {
+  id: 0x93a520bf
+  name: "devm_iio_trigger_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x618abf12
+  type_id: 0x9d729b69
+  full_name: "devm_iio_trigger_register"
+}
+elf_symbol {
+  id: 0xc129555c
+  name: "devm_input_allocate_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3819137b
+  type_id: 0x3db2a1a3
+  full_name: "devm_input_allocate_device"
+}
+elf_symbol {
+  id: 0x50344150
+  name: "devm_ioremap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfb2db23b
+  type_id: 0x54704321
+  full_name: "devm_ioremap"
+}
+elf_symbol {
+  id: 0xe6ef48b3
+  name: "devm_ioremap_resource"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x39f72cab
+  type_id: 0x56c70278
+  full_name: "devm_ioremap_resource"
+}
+elf_symbol {
+  id: 0x4d059afe
+  name: "devm_ioremap_wc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x58e6491a
+  type_id: 0x54704321
+  full_name: "devm_ioremap_wc"
+}
+elf_symbol {
+  id: 0x7a2b4593
+  name: "devm_iounmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x61df24fa
+  type_id: 0x106c9a5c
+  full_name: "devm_iounmap"
+}
+elf_symbol {
+  id: 0xb08551d1
+  name: "devm_irq_alloc_generic_chip"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x52b2f0fe
+  type_id: 0xe7f008ab
+  full_name: "devm_irq_alloc_generic_chip"
+}
+elf_symbol {
+  id: 0x5b0ad2ac
+  name: "devm_irq_setup_generic_chip"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9eb85452
+  type_id: 0x9dcf7ec3
+  full_name: "devm_irq_setup_generic_chip"
+}
+elf_symbol {
+  id: 0xc576d59e
+  name: "devm_kasprintf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2d6c1ace
+  type_id: 0x3d63b46a
+  full_name: "devm_kasprintf"
+}
+elf_symbol {
+  id: 0x7c053015
+  name: "devm_kfree"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8177f433
+  type_id: 0x10ea139f
+  full_name: "devm_kfree"
+}
+elf_symbol {
+  id: 0xff9fcdce
+  name: "devm_kmalloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd50f026e
+  type_id: 0x55ec33bc
+  full_name: "devm_kmalloc"
+}
+elf_symbol {
+  id: 0xa34635ab
+  name: "devm_kmemdup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9ec5e35d
+  type_id: 0x56da383c
+  full_name: "devm_kmemdup"
+}
+elf_symbol {
+  id: 0x9a669d84
+  name: "devm_krealloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3f843597
+  type_id: 0x565cb1ff
+  full_name: "devm_krealloc"
+}
+elf_symbol {
+  id: 0x2b4cdf11
+  name: "devm_kstrdup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7a08ba5b
+  type_id: 0x3e6c14f3
+  full_name: "devm_kstrdup"
+}
+elf_symbol {
+  id: 0xaaf83339
+  name: "devm_kstrdup_const"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x80c51170
+  type_id: 0x9216029b
+  full_name: "devm_kstrdup_const"
+}
+elf_symbol {
+  id: 0xba8f1fa9
+  name: "devm_kvasprintf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x68d4ff37
+  type_id: 0x3d62b757
+  full_name: "devm_kvasprintf"
+}
+elf_symbol {
+  id: 0x0c87bbb9
+  name: "devm_led_classdev_flash_register_ext"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x58079d0e
+  type_id: 0x9de9e113
+  full_name: "devm_led_classdev_flash_register_ext"
+}
+elf_symbol {
+  id: 0x8b816c48
+  name: "devm_led_classdev_multicolor_register_ext"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaf2eb2a5
+  type_id: 0x9de8f9f8
+  full_name: "devm_led_classdev_multicolor_register_ext"
+}
+elf_symbol {
+  id: 0x0f9aedf8
+  name: "devm_led_classdev_register_ext"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9c6e5a8d
+  type_id: 0x9dd2d442
+  full_name: "devm_led_classdev_register_ext"
+}
+elf_symbol {
+  id: 0x92b974cd
+  name: "devm_led_classdev_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcfe9ef77
+  type_id: 0x10c54574
+  full_name: "devm_led_classdev_unregister"
+}
+elf_symbol {
+  id: 0x57498e16
+  name: "devm_mbox_controller_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2dd8f071
+  type_id: 0x9df52a21
+  full_name: "devm_mbox_controller_register"
+}
+elf_symbol {
+  id: 0x888f691d
+  name: "devm_memremap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x169fd84a
+  type_id: 0x5468daf3
+  full_name: "devm_memremap"
+}
+elf_symbol {
+  id: 0x36e39cf6
+  name: "devm_mfd_add_devices"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4453e522
+  type_id: 0x9c874975
+  full_name: "devm_mfd_add_devices"
+}
+elf_symbol {
+  id: 0x6e37c2ad
+  name: "devm_mipi_dsi_attach"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0d2343ae
+  type_id: 0x9d3354d9
+  full_name: "devm_mipi_dsi_attach"
+}
+elf_symbol {
+  id: 0x91f58d29
+  name: "devm_mipi_dsi_device_register_full"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3c6c7010
+  type_id: 0x7ad03bcc
+  full_name: "devm_mipi_dsi_device_register_full"
+}
+elf_symbol {
+  id: 0x7abe395b
+  name: "devm_nvmem_cell_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf28fdfd2
+  type_id: 0xbbe36438
+  full_name: "devm_nvmem_cell_get"
+}
+elf_symbol {
+  id: 0xa8b058e5
+  name: "devm_nvmem_device_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x159083e3
+  type_id: 0x21a8c9ba
+  full_name: "devm_nvmem_device_get"
+}
+elf_symbol {
+  id: 0x47264dbb
+  name: "devm_nvmem_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0a4ecd3d
+  type_id: 0x21a7fa19
+  full_name: "devm_nvmem_register"
+}
+elf_symbol {
+  id: 0x35094803
+  name: "devm_of_clk_add_hw_provider"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xef64ec69
+  type_id: 0x9de78077
+  full_name: "devm_of_clk_add_hw_provider"
+}
+elf_symbol {
+  id: 0x5bc8c0f2
+  name: "devm_of_icc_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd17d3ad9
+  type_id: 0x2bcaa9c8
+  full_name: "devm_of_icc_get"
+}
+elf_symbol {
+  id: 0xbf8a0e84
+  name: "devm_of_iomap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc53ffcb7
+  type_id: 0x56c834b5
+  full_name: "devm_of_iomap"
+}
+elf_symbol {
+  id: 0xd1e3c18c
+  name: "devm_of_phy_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8def3824
+  type_id: 0x1172b988
+  full_name: "devm_of_phy_get"
+}
+elf_symbol {
+  id: 0x6e7e1dc0
+  name: "devm_of_phy_get_by_index"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6e34ead3
+  type_id: 0x1164f591
+  full_name: "devm_of_phy_get_by_index"
+}
+elf_symbol {
+  id: 0x1ed62a9d
+  name: "devm_of_platform_populate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x117417f3
+  type_id: 0x9d16dd74
+  full_name: "devm_of_platform_populate"
+}
+elf_symbol {
+  id: 0x5df7b359
+  name: "devm_pci_alloc_host_bridge"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6553ab72
+  type_id: 0x68eaecc0
+  full_name: "devm_pci_alloc_host_bridge"
+}
+elf_symbol {
+  id: 0xd6e5f7c7
+  name: "devm_phy_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf8132783
+  type_id: 0x1173e8d7
+  full_name: "devm_phy_create"
+}
+elf_symbol {
+  id: 0x7695d1dd
+  name: "devm_phy_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7984325f
+  type_id: 0x1154b37f
+  full_name: "devm_phy_get"
+}
+elf_symbol {
+  id: 0xcf6046cf
+  name: "devm_phy_optional_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa4dd373f
+  type_id: 0x1154b37f
+  full_name: "devm_phy_optional_get"
+}
+elf_symbol {
+  id: 0x0c059f07
+  name: "devm_phy_package_join"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa13a8f37
+  type_id: 0x9dc91f17
+  full_name: "devm_phy_package_join"
+}
+elf_symbol {
+  id: 0x3856a7af
+  name: "devm_phy_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd79e184e
+  type_id: 0x10219d88
+  full_name: "devm_phy_put"
+}
+elf_symbol {
+  id: 0x8a8e86c7
+  name: "devm_pinctrl_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1e78d642
+  type_id: 0x4df5d8bb
+  full_name: "devm_pinctrl_get"
+}
+elf_symbol {
+  id: 0x69272f95
+  name: "devm_pinctrl_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1eb56d31
+  type_id: 0x1ad9d0a2
+  full_name: "devm_pinctrl_put"
+}
+elf_symbol {
+  id: 0xb6582726
+  name: "devm_pinctrl_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x77a33019
+  type_id: 0xefd6219a
+  full_name: "devm_pinctrl_register"
+}
+elf_symbol {
+  id: 0x0bc8f86d
+  name: "devm_pinctrl_register_and_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x784f5532
+  type_id: 0x9de18d63
+  full_name: "devm_pinctrl_register_and_init"
+}
+elf_symbol {
+  id: 0x5463e7ba
+  name: "devm_platform_get_and_ioremap_resource"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe537bee5
+  type_id: 0x584c42dc
+  full_name: "devm_platform_get_and_ioremap_resource"
+}
+elf_symbol {
+  id: 0x901f9d38
+  name: "devm_platform_ioremap_resource"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x326cd4ea
+  type_id: 0x584d521c
+  full_name: "devm_platform_ioremap_resource"
+}
+elf_symbol {
+  id: 0x655f3c71
+  name: "devm_platform_ioremap_resource_byname"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x43daf40e
+  type_id: 0x59a30550
+  full_name: "devm_platform_ioremap_resource_byname"
+}
+elf_symbol {
+  id: 0xee877b72
+  name: "devm_pm_clk_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5c52d200
+  type_id: 0x9d16dd74
+  full_name: "devm_pm_clk_create"
+}
+elf_symbol {
+  id: 0xa7a43193
+  name: "devm_pm_opp_of_add_table"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x30ad3e73
+  type_id: 0x9d16dd74
+  full_name: "devm_pm_opp_of_add_table"
+}
+elf_symbol {
+  id: 0xb271f21a
+  name: "devm_pm_opp_set_config"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb3ad0242
+  type_id: 0x9d0fcb12
+  full_name: "devm_pm_opp_set_config"
+}
+elf_symbol {
+  id: 0xce4b7f5f
+  name: "devm_pm_runtime_enable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4d32a695
+  type_id: 0x9d16dd74
+  full_name: "devm_pm_runtime_enable"
+}
+elf_symbol {
+  id: 0x3600a769
+  name: "devm_power_supply_get_by_phandle"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xddd61e77
+  type_id: 0x3b90ab8c
+  full_name: "devm_power_supply_get_by_phandle"
+}
+elf_symbol {
+  id: 0x7880f04e
+  name: "devm_power_supply_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf58e113b
+  type_id: 0x3bb8868a
+  full_name: "devm_power_supply_register"
+}
+elf_symbol {
+  id: 0x36be1a91
+  name: "devm_pwm_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4652ee82
+  type_id: 0x036dc753
+  full_name: "devm_pwm_get"
+}
+elf_symbol {
+  id: 0x46d775bd
+  name: "devm_pwmchip_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5bc21c38
+  type_id: 0x9d84886a
+  full_name: "devm_pwmchip_add"
+}
+elf_symbol {
+  id: 0xeeb338c3
+  name: "devm_qcom_smem_state_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x333db131
+  type_id: 0x4f30442f
+  full_name: "devm_qcom_smem_state_get"
+}
+elf_symbol {
+  id: 0xf9c7bcfb
+  name: "devm_rc_allocate_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2c14694d
+  type_id: 0x9a7a7725
+  full_name: "devm_rc_allocate_device"
+}
+elf_symbol {
+  id: 0xab957d64
+  name: "devm_rc_register_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdf90c837
+  type_id: 0x9d0eeea4
+  full_name: "devm_rc_register_device"
+}
+elf_symbol {
+  id: 0x90abc5f6
+  name: "devm_register_sys_off_handler"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdf740ec8
+  type_id: 0x9dde64dc
+  full_name: "devm_register_sys_off_handler"
+}
+elf_symbol {
+  id: 0x4c4e94fb
+  name: "devm_regmap_add_irq_chip"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x43b09c08
+  type_id: 0x9d28302d
+  full_name: "devm_regmap_add_irq_chip"
+}
+elf_symbol {
+  id: 0x1e3f62e1
+  name: "devm_regmap_del_irq_chip"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xecd67b48
+  type_id: 0x119619d3
+  full_name: "devm_regmap_del_irq_chip"
+}
+elf_symbol {
+  id: 0x577e9a02
+  name: "devm_regmap_field_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1ef40de7
+  type_id: 0x9588384f
+  full_name: "devm_regmap_field_alloc"
+}
+elf_symbol {
+  id: 0xc08bcc4a
+  name: "devm_regmap_field_bulk_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1486f3bb
+  type_id: 0x9d3009a4
+  full_name: "devm_regmap_field_bulk_alloc"
+}
+elf_symbol {
+  id: 0x09b1d689
+  name: "devm_regulator_bulk_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x796de6ef
+  type_id: 0x9c874de2
+  full_name: "devm_regulator_bulk_get"
+}
+elf_symbol {
+  id: 0x7c6f39ac
+  name: "devm_regulator_bulk_get_const"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1cff2fb8
+  type_id: 0x9c86c8d2
+  full_name: "devm_regulator_bulk_get_const"
+}
+elf_symbol {
+  id: 0xadafc9a7
+  name: "devm_regulator_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x12d1b352
+  type_id: 0x8556217d
+  full_name: "devm_regulator_get"
+}
+elf_symbol {
+  id: 0x3c0cefc0
+  name: "devm_regulator_get_exclusive"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x881c7bc4
+  type_id: 0x8556217d
+  full_name: "devm_regulator_get_exclusive"
+}
+elf_symbol {
+  id: 0x7775cca4
+  name: "devm_regulator_get_optional"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8bd4129a
+  type_id: 0x8556217d
+  full_name: "devm_regulator_get_optional"
+}
+elf_symbol {
+  id: 0xed639cd9
+  name: "devm_regulator_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe91adbb5
+  type_id: 0x10f3d61f
+  full_name: "devm_regulator_put"
+}
+elf_symbol {
+  id: 0x6b6744b7
+  name: "devm_regulator_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x78d8ab06
+  type_id: 0xf5978397
+  full_name: "devm_regulator_register"
+}
+elf_symbol {
+  id: 0x92b1bbf5
+  name: "devm_regulator_register_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2089c37d
+  type_id: 0x9d85be32
+  full_name: "devm_regulator_register_notifier"
+}
+elf_symbol {
+  id: 0xfc0bc82d
+  name: "devm_regulator_unregister_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4357bccf
+  type_id: 0x109d0c8e
+  full_name: "devm_regulator_unregister_notifier"
+}
+elf_symbol {
+  id: 0xd32940e1
+  name: "devm_remove_action"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7fb50719
+  type_id: 0x1034b77f
+  full_name: "devm_remove_action"
+}
+elf_symbol {
+  id: 0x299f6192
+  name: "devm_request_any_context_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf62dc15f
+  type_id: 0x9c364018
+  full_name: "devm_request_any_context_irq"
+}
+elf_symbol {
+  id: 0xb7d7707e
+  name: "devm_request_threaded_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0570ef04
+  type_id: 0x9c35eaa4
+  full_name: "devm_request_threaded_irq"
+}
+elf_symbol {
+  id: 0xdb0692a6
+  name: "devm_reset_control_array_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0ec1b296
+  type_id: 0x0ea86f7f
+  full_name: "devm_reset_control_array_get"
+}
+elf_symbol {
+  id: 0xfafcdec5
+  name: "devm_reset_controller_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x429f44d6
+  type_id: 0x9d9d4b64
+  full_name: "devm_reset_controller_register"
+}
+elf_symbol {
+  id: 0x752a2b5b
+  name: "devm_rtc_allocate_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x01968f79
+  type_id: 0x7e1a7d05
+  full_name: "devm_rtc_allocate_device"
+}
+elf_symbol {
+  id: 0xca559b71
+  name: "devm_rtc_device_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4ac4d0cc
+  type_id: 0x7eed3f17
+  full_name: "devm_rtc_device_register"
+}
+elf_symbol {
+  id: 0xa5b63f73
+  name: "devm_rtc_nvmem_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdff5d1b0
+  type_id: 0x9496b073
+  full_name: "devm_rtc_nvmem_register"
+}
+elf_symbol {
+  id: 0xeb30d8ff
+  name: "devm_snd_dmaengine_pcm_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x44498890
+  type_id: 0x9dff0bbb
+  full_name: "devm_snd_dmaengine_pcm_register"
+}
+elf_symbol {
+  id: 0x98e3d9f3
+  name: "devm_snd_soc_register_card"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x95ca8c34
+  type_id: 0x9d72aaf9
+  full_name: "devm_snd_soc_register_card"
+}
+elf_symbol {
+  id: 0xd1252dfa
+  name: "devm_snd_soc_register_component"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc5ff76a4
+  type_id: 0x9dd808ae
+  full_name: "devm_snd_soc_register_component"
+}
+elf_symbol {
+  id: 0xf3c9734f
+  name: "devm_spi_mem_dirmap_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8646bc36
+  type_id: 0x2df3f088
+  full_name: "devm_spi_mem_dirmap_create"
+}
+elf_symbol {
+  id: 0x6c9a6915
+  name: "devm_spi_register_controller"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xff4c4c85
+  type_id: 0x9d15ab3e
+  full_name: "devm_spi_register_controller"
+}
+elf_symbol {
+  id: 0x0dd13028
+  name: "devm_thermal_of_cooling_device_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe1d12317
+  type_id: 0x48f6484c
+  full_name: "devm_thermal_of_cooling_device_register"
+}
+elf_symbol {
+  id: 0xfc46114a
+  name: "devm_thermal_of_zone_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x21c72be8
+  type_id: 0xfc59f36a
+  full_name: "devm_thermal_of_zone_register"
+}
+elf_symbol {
+  id: 0x5dc64161
+  name: "devm_thermal_of_zone_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf8009faa
+  type_id: 0x1095fa8e
+  full_name: "devm_thermal_of_zone_unregister"
+}
+elf_symbol {
+  id: 0x841c985c
+  name: "devm_usb_get_phy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3b6c04cd
+  type_id: 0x8d63c458
+  full_name: "devm_usb_get_phy"
+}
+elf_symbol {
+  id: 0xbbf1a805
+  name: "devm_usb_get_phy_by_node"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9225cdfb
+  type_id: 0x8f3f76d1
+  full_name: "devm_usb_get_phy_by_node"
+}
+elf_symbol {
+  id: 0x994f412d
+  name: "devm_usb_get_phy_by_phandle"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x34248b5d
+  type_id: 0x8f1a42be
+  full_name: "devm_usb_get_phy_by_phandle"
+}
+elf_symbol {
+  id: 0xd155689b
+  name: "devm_watchdog_register_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x13942ca1
+  type_id: 0x9d5d4010
+  full_name: "devm_watchdog_register_device"
+}
+elf_symbol {
+  id: 0xf4be3f1a
+  name: "devres_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcb9503da
+  type_id: 0x106c9a5c
+  full_name: "devres_add"
+}
+elf_symbol {
+  id: 0x2f22f242
+  name: "devres_destroy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x099669e6
+  type_id: 0x9c603af1
+  full_name: "devres_destroy"
+}
+elf_symbol {
+  id: 0xe41962a4
+  name: "devres_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe93e49c3
+  type_id: 0x16b708df
+  full_name: "devres_free"
+}
+elf_symbol {
+  id: 0xfb540e8c
+  name: "devres_open_group"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x163412f1
+  type_id: 0x565e1389
+  full_name: "devres_open_group"
+}
+elf_symbol {
+  id: 0xabe60a33
+  name: "devres_release"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfaf840f5
+  type_id: 0x9c603af1
+  full_name: "devres_release"
+}
+elf_symbol {
+  id: 0x7ae5eeb4
+  name: "devres_release_group"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbee31418
+  type_id: 0x9d7428e0
+  full_name: "devres_release_group"
+}
+elf_symbol {
+  id: 0x317870a4
+  name: "devres_remove_group"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1250162d
+  type_id: 0x106c9a5c
+  full_name: "devres_remove_group"
+}
+elf_symbol {
+  id: 0x573e2956
+  name: "disable_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3ce4ca6f
+  type_id: 0x01f9081c
+  full_name: "disable_irq"
+}
+elf_symbol {
+  id: 0xe5bfa8c8
+  name: "disable_irq_nosync"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x27bbf221
+  type_id: 0x01f9081c
+  full_name: "disable_irq_nosync"
+}
+elf_symbol {
+  id: 0xd48a6769
+  name: "disable_percpu_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf21e1f9b
+  type_id: 0x01f9081c
+  full_name: "disable_percpu_irq"
+}
+elf_symbol {
+  id: 0xdd957eaf
+  name: "disk_set_zoned"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdf3616ec
+  type_id: 0x1bd69e9e
+  full_name: "disk_set_zoned"
+}
+elf_symbol {
+  id: 0x9c5fb17e
+  name: "divider_get_val"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5e798ffb
+  type_id: 0x919e3b50
+  full_name: "divider_get_val"
+}
+elf_symbol {
+  id: 0xedd83590
+  name: "divider_recalc_rate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd3c65351
+  type_id: 0x33c9b2ef
+  full_name: "divider_recalc_rate"
+}
+elf_symbol {
+  id: 0x840989b2
+  name: "divider_ro_round_rate_parent"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9f226ff7
+  type_id: 0xa5be4b9a
+  full_name: "divider_ro_round_rate_parent"
+}
+elf_symbol {
+  id: 0x57325158
+  name: "divider_round_rate_parent"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0be05fbc
+  type_id: 0xa5be4b9b
+  full_name: "divider_round_rate_parent"
+}
+elf_symbol {
+  id: 0x6cb15207
+  name: "dma_alloc_attrs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaecca64f
+  type_id: 0x55df36a2
+  full_name: "dma_alloc_attrs"
+}
+elf_symbol {
+  id: 0x12eaf956
+  name: "dma_alloc_noncontiguous"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcb9bf612
+  type_id: 0x420a20df
+  full_name: "dma_alloc_noncontiguous"
+}
+elf_symbol {
+  id: 0xac4ecea5
+  name: "dma_alloc_pages"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6b2a8b2a
+  type_id: 0xbed1b7ef
+  full_name: "dma_alloc_pages"
+}
+elf_symbol {
+  id: 0xf907b0c3
+  name: "dma_async_device_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe5e76052
+  type_id: 0x96711162
+  full_name: "dma_async_device_register"
+}
+elf_symbol {
+  id: 0x3492f7a1
+  name: "dma_async_device_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x21433073
+  type_id: 0x1b69a3de
+  full_name: "dma_async_device_unregister"
+}
+elf_symbol {
+  id: 0x965a6298
+  name: "dma_async_tx_descriptor_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2b11f66f
+  type_id: 0x1bd38750
+  full_name: "dma_async_tx_descriptor_init"
+}
+elf_symbol {
+  id: 0xf1703ca1
+  name: "dma_buf_attach"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1c8c3c9f
+  namespace: "DMA_BUF"
+  type_id: 0x6b24e9ea
+  full_name: "dma_buf_attach"
+}
+elf_symbol {
+  id: 0xd0b1bfa2
+  name: "dma_buf_begin_cpu_access"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4406c079
+  namespace: "DMA_BUF"
+  type_id: 0x9e84fe49
+  full_name: "dma_buf_begin_cpu_access"
+}
+elf_symbol {
+  id: 0xe9b86725
+  name: "dma_buf_begin_cpu_access_partial"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf0530291
+  type_id: 0x9e948905
+  full_name: "dma_buf_begin_cpu_access_partial"
+}
+elf_symbol {
+  id: 0x99132839
+  name: "dma_buf_detach"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4425402e
+  namespace: "DMA_BUF"
+  type_id: 0x10df3ba9
+  full_name: "dma_buf_detach"
+}
+elf_symbol {
+  id: 0x187982ec
+  name: "dma_buf_dynamic_attach"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6a4e5295
+  namespace: "DMA_BUF"
+  type_id: 0x6b29d69a
+  full_name: "dma_buf_dynamic_attach"
+}
+elf_symbol {
+  id: 0x09f243ea
+  name: "dma_buf_end_cpu_access"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc82f07f0
+  namespace: "DMA_BUF"
+  type_id: 0x9e84fe49
+  full_name: "dma_buf_end_cpu_access"
+}
+elf_symbol {
+  id: 0x0078753d
+  name: "dma_buf_end_cpu_access_partial"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0b750434
+  type_id: 0x9e948905
+  full_name: "dma_buf_end_cpu_access_partial"
+}
+elf_symbol {
+  id: 0x6ae46898
+  name: "dma_buf_export"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf20c4b0b
+  namespace: "DMA_BUF"
+  type_id: 0x448c535b
+  full_name: "dma_buf_export"
+}
+elf_symbol {
+  id: 0xffba4af1
+  name: "dma_buf_fd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x317a2244
+  namespace: "DMA_BUF"
+  type_id: 0x9c2e6e8a
+  full_name: "dma_buf_fd"
+}
+elf_symbol {
+  id: 0xa892e5b6
+  name: "dma_buf_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe1c6bdef
+  namespace: "DMA_BUF"
+  type_id: 0x53e428b3
+  full_name: "dma_buf_get"
+}
+elf_symbol {
+  id: 0xe6ad1d16
+  name: "dma_buf_get_each"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x37a35f4e
+  namespace: "MINIDUMP"
+  type_id: 0x966430b0
+  full_name: "dma_buf_get_each"
+}
+elf_symbol {
+  id: 0xda3a8347
+  name: "dma_buf_get_flags"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x26c92687
+  type_id: 0x9dabd844
+  full_name: "dma_buf_get_flags"
+}
+elf_symbol {
+  id: 0xb3e02cd2
+  name: "dma_buf_map_attachment"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb1441f23
+  namespace: "DMA_BUF"
+  type_id: 0x451c3ee7
+  full_name: "dma_buf_map_attachment"
+}
+elf_symbol {
+  id: 0xc99a7edf
+  name: "dma_buf_mmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5256ef77
+  namespace: "DMA_BUF"
+  type_id: 0x9d967d9a
+  full_name: "dma_buf_mmap"
+}
+elf_symbol {
+  id: 0xdcb8ed3c
+  name: "dma_buf_move_notify"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x313005db
+  namespace: "DMA_BUF"
+  type_id: 0x10aa5f7a
+  full_name: "dma_buf_move_notify"
+}
+elf_symbol {
+  id: 0x4ec1de19
+  name: "dma_buf_pin"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2ad99bb4
+  namespace: "DMA_BUF"
+  type_id: 0x9ad6ae1c
+  full_name: "dma_buf_pin"
+}
+elf_symbol {
+  id: 0xe5cfd7ac
+  name: "dma_buf_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x819fd9a0
+  namespace: "DMA_BUF"
+  type_id: 0x10aa5f7a
+  full_name: "dma_buf_put"
+}
+elf_symbol {
+  id: 0xd0deb542
+  name: "dma_buf_unmap_attachment"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x54dc2906
+  namespace: "DMA_BUF"
+  type_id: 0x17ffed59
+  full_name: "dma_buf_unmap_attachment"
+}
+elf_symbol {
+  id: 0xe8233473
+  name: "dma_buf_unpin"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x95a0e887
+  namespace: "DMA_BUF"
+  type_id: 0x17ce1ca0
+  full_name: "dma_buf_unpin"
+}
+elf_symbol {
+  id: 0x710f1fc2
+  name: "dma_buf_vmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0e98d45b
+  namespace: "DMA_BUF"
+  type_id: 0x9d4e84a4
+  full_name: "dma_buf_vmap"
+}
+elf_symbol {
+  id: 0xaa54a71f
+  name: "dma_buf_vunmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdeb1c797
+  namespace: "DMA_BUF"
+  type_id: 0x10563618
+  full_name: "dma_buf_vunmap"
+}
+elf_symbol {
+  id: 0x5f554bc7
+  name: "dma_contiguous_default_area"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x4fd950ed
+  type_id: 0x1023f4f6
+  full_name: "dma_contiguous_default_area"
+}
+elf_symbol {
+  id: 0xd13969dd
+  name: "dma_fence_add_callback"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8e21c9a1
+  type_id: 0x9df2edfa
+  full_name: "dma_fence_add_callback"
+}
+elf_symbol {
+  id: 0xe2ee283f
+  name: "dma_fence_array_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa2d52a7a
+  type_id: 0xb8f7c48b
+  full_name: "dma_fence_array_create"
+}
+elf_symbol {
+  id: 0xf5808a3e
+  name: "dma_fence_array_ops"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xe03a689d
+  type_id: 0xef175c64
+  full_name: "dma_fence_array_ops"
+}
+elf_symbol {
+  id: 0x2762abc3
+  name: "dma_fence_chain_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2d01469e
+  type_id: 0x133a653a
+  full_name: "dma_fence_chain_init"
+}
+elf_symbol {
+  id: 0xe4261bef
+  name: "dma_fence_chain_ops"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x02293ac3
+  type_id: 0xef175c64
+  full_name: "dma_fence_chain_ops"
+}
+elf_symbol {
+  id: 0x96c3de88
+  name: "dma_fence_chain_walk"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0b290ada
+  type_id: 0xdf85b594
+  full_name: "dma_fence_chain_walk"
+}
+elf_symbol {
+  id: 0xdb8d0852
+  name: "dma_fence_context_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x14605535
+  type_id: 0x46ba8ac4
+  full_name: "dma_fence_context_alloc"
+}
+elf_symbol {
+  id: 0xc70d6b52
+  name: "dma_fence_default_wait"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x350ea558
+  type_id: 0xa66823d2
+  full_name: "dma_fence_default_wait"
+}
+elf_symbol {
+  id: 0xae4cf762
+  name: "dma_fence_enable_sw_signaling"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8d9ca0e6
+  type_id: 0x105ab720
+  full_name: "dma_fence_enable_sw_signaling"
+}
+elf_symbol {
+  id: 0x75e3f28c
+  name: "dma_fence_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdd8166a1
+  type_id: 0x105ab720
+  full_name: "dma_fence_free"
+}
+elf_symbol {
+  id: 0x55404fce
+  name: "dma_fence_get_status"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2e0b1deb
+  type_id: 0x9d42059c
+  full_name: "dma_fence_get_status"
+}
+elf_symbol {
+  id: 0xb08bb90e
+  name: "dma_fence_get_stub"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x013f26ae
+  type_id: 0xdf475327
+  full_name: "dma_fence_get_stub"
+}
+elf_symbol {
+  id: 0xe3a20ca3
+  name: "dma_fence_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x16dee44d
+  type_id: 0x109019ae
+  full_name: "dma_fence_init"
+}
+elf_symbol {
+  id: 0xbfb80a91
+  name: "dma_fence_match_context"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xacaa4c72
+  type_id: 0xfc2e3179
+  full_name: "dma_fence_match_context"
+}
+elf_symbol {
+  id: 0xa2cf4d2f
+  name: "dma_fence_release"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe123f3d9
+  type_id: 0x14cd8502
+  full_name: "dma_fence_release"
+}
+elf_symbol {
+  id: 0x97b03c2a
+  name: "dma_fence_remove_callback"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3b20fb95
+  type_id: 0xfefc2ff4
+  full_name: "dma_fence_remove_callback"
+}
+elf_symbol {
+  id: 0xe2a2feec
+  name: "dma_fence_signal"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x731c4a9c
+  type_id: 0x9d42059c
+  full_name: "dma_fence_signal"
+}
+elf_symbol {
+  id: 0x904cad71
+  name: "dma_fence_signal_locked"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3d02cd70
+  type_id: 0x9d42059c
+  full_name: "dma_fence_signal_locked"
+}
+elf_symbol {
+  id: 0x2b7d2f8e
+  name: "dma_fence_signal_timestamp_locked"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8455e3a7
+  type_id: 0x9d05158e
+  full_name: "dma_fence_signal_timestamp_locked"
+}
+elf_symbol {
+  id: 0xf18ac584
+  name: "dma_fence_wait_any_timeout"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x051d58e8
+  type_id: 0xa5dcd62d
+  full_name: "dma_fence_wait_any_timeout"
+}
+elf_symbol {
+  id: 0x7ffe50b7
+  name: "dma_fence_wait_timeout"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x98c039dc
+  type_id: 0xa66823d2
+  full_name: "dma_fence_wait_timeout"
+}
+elf_symbol {
+  id: 0x3b69b427
+  name: "dma_free_attrs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1ccd9429
+  type_id: 0x13db1955
+  full_name: "dma_free_attrs"
+}
+elf_symbol {
+  id: 0x1d7e2299
+  name: "dma_free_noncontiguous"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8997cd04
+  type_id: 0x13dda576
+  full_name: "dma_free_noncontiguous"
+}
+elf_symbol {
+  id: 0x23e816b8
+  name: "dma_free_pages"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb0e02c8a
+  type_id: 0x13dca967
+  full_name: "dma_free_pages"
+}
+elf_symbol {
+  id: 0xd0e88c9a
+  name: "dma_get_required_mask"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x96ae04ce
+  type_id: 0x574ded10
+  full_name: "dma_get_required_mask"
+}
+elf_symbol {
+  id: 0x28fa142c
+  name: "dma_get_sgtable_attrs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x75dcc291
+  type_id: 0x9d11df94
+  full_name: "dma_get_sgtable_attrs"
+}
+elf_symbol {
+  id: 0x425ac3ac
+  name: "dma_get_slave_caps"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x505a5654
+  type_id: 0x930a9934
+  full_name: "dma_get_slave_caps"
+}
+elf_symbol {
+  id: 0xc5b690ad
+  name: "dma_get_slave_channel"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb0e01f8f
+  type_id: 0x898bee8c
+  full_name: "dma_get_slave_channel"
+}
+elf_symbol {
+  id: 0x2ffcac07
+  name: "dma_heap_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x54f954ba
+  type_id: 0x2f858b61
+  full_name: "dma_heap_add"
+}
+elf_symbol {
+  id: 0xd900ca4b
+  name: "dma_heap_buffer_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x82adb69b
+  type_id: 0x4afe8e98
+  full_name: "dma_heap_buffer_alloc"
+}
+elf_symbol {
+  id: 0x223820a4
+  name: "dma_heap_buffer_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf541892d
+  type_id: 0x10aa5f7a
+  full_name: "dma_heap_buffer_free"
+}
+elf_symbol {
+  id: 0xea99ff15
+  name: "dma_heap_bufferfd_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9ba677bf
+  type_id: 0x9d5271cf
+  full_name: "dma_heap_bufferfd_alloc"
+}
+elf_symbol {
+  id: 0xd47ccf76
+  name: "dma_heap_find"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeff75c0b
+  type_id: 0x2e298033
+  full_name: "dma_heap_find"
+}
+elf_symbol {
+  id: 0xdfdcefce
+  name: "dma_heap_get_dev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6bbb8549
+  type_id: 0xae3d0033
+  full_name: "dma_heap_get_dev"
+}
+elf_symbol {
+  id: 0x626fbbbf
+  name: "dma_heap_get_drvdata"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf39b6569
+  type_id: 0x558481fc
+  full_name: "dma_heap_get_drvdata"
+}
+elf_symbol {
+  id: 0xc9fc732f
+  name: "dma_heap_get_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xed3a3cb3
+  type_id: 0x915627ae
+  full_name: "dma_heap_get_name"
+}
+elf_symbol {
+  id: 0x2599b67f
+  name: "dma_heap_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x067e2f47
+  type_id: 0x138a619e
+  full_name: "dma_heap_put"
+}
+elf_symbol {
+  id: 0x6accd8d9
+  name: "dma_map_page_attrs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0a99e54c
+  type_id: 0xbcaf23fe
+  full_name: "dma_map_page_attrs"
+}
+elf_symbol {
+  id: 0x18b0baef
+  name: "dma_map_resource"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd7d92ed9
+  type_id: 0xbe42b117
+  full_name: "dma_map_resource"
+}
+elf_symbol {
+  id: 0x13f645c1
+  name: "dma_map_sg_attrs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x32348f21
+  type_id: 0xce108db2
+  full_name: "dma_map_sg_attrs"
+}
+elf_symbol {
+  id: 0xb989e3a2
+  name: "dma_map_sgtable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x409f2393
+  type_id: 0x9d27e158
+  full_name: "dma_map_sgtable"
+}
+elf_symbol {
+  id: 0xd140139f
+  name: "dma_mmap_attrs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4c740777
+  type_id: 0x9d3b0250
+  full_name: "dma_mmap_attrs"
+}
+elf_symbol {
+  id: 0x009463a5
+  name: "dma_mmap_pages"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8890df74
+  type_id: 0x9d038726
+  full_name: "dma_mmap_pages"
+}
+elf_symbol {
+  id: 0xeb70c9c5
+  name: "dma_pool_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x678b96ec
+  type_id: 0x5e051163
+  full_name: "dma_pool_alloc"
+}
+elf_symbol {
+  id: 0xafa3c498
+  name: "dma_pool_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0e6501dd
+  type_id: 0x5f4c14dc
+  full_name: "dma_pool_create"
+}
+elf_symbol {
+  id: 0x083d52da
+  name: "dma_pool_destroy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb5aa7165
+  type_id: 0x1bc1cc91
+  full_name: "dma_pool_destroy"
+}
+elf_symbol {
+  id: 0x79322cff
+  name: "dma_pool_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2f7754a8
+  type_id: 0x1b9b3280
+  full_name: "dma_pool_free"
+}
+elf_symbol {
+  id: 0x587c77ce
+  name: "dma_release_channel"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3bbbad0c
+  type_id: 0x1e0e5d07
+  full_name: "dma_release_channel"
+}
+elf_symbol {
+  id: 0x2c0250c2
+  name: "dma_request_chan"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4e4c9479
+  type_id: 0x87739e97
+  full_name: "dma_request_chan"
+}
+elf_symbol {
+  id: 0xba971ed9
+  name: "dma_resv_add_fence"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x08dd5a9a
+  type_id: 0x194c85c5
+  full_name: "dma_resv_add_fence"
+}
+elf_symbol {
+  id: 0x49e6da07
+  name: "dma_resv_describe"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x17a599af
+  type_id: 0x1950a0f3
+  full_name: "dma_resv_describe"
+}
+elf_symbol {
+  id: 0x0f6bd9e0
+  name: "dma_resv_fini"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x852e6dbb
+  type_id: 0x19493769
+  full_name: "dma_resv_fini"
+}
+elf_symbol {
+  id: 0xf0e5b5d3
+  name: "dma_resv_get_fences"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe97c8897
+  type_id: 0x94ce95ed
+  full_name: "dma_resv_get_fences"
+}
+elf_symbol {
+  id: 0x1e2996d8
+  name: "dma_resv_get_singleton"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7d136a09
+  type_id: 0x94cadd10
+  full_name: "dma_resv_get_singleton"
+}
+elf_symbol {
+  id: 0x82aa3a94
+  name: "dma_resv_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd53a3f90
+  type_id: 0x19493769
+  full_name: "dma_resv_init"
+}
+elf_symbol {
+  id: 0x8702d0d4
+  name: "dma_resv_iter_first"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x194ac473
+  type_id: 0xdc551b4d
+  full_name: "dma_resv_iter_first"
+}
+elf_symbol {
+  id: 0xc341f711
+  name: "dma_resv_iter_first_unlocked"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x28ff265b
+  type_id: 0xdc551b4d
+  full_name: "dma_resv_iter_first_unlocked"
+}
+elf_symbol {
+  id: 0x034915b6
+  name: "dma_resv_iter_next"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x01be2c92
+  type_id: 0xdc551b4d
+  full_name: "dma_resv_iter_next"
+}
+elf_symbol {
+  id: 0x8057ec00
+  name: "dma_resv_iter_next_unlocked"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2a33131b
+  type_id: 0xdc551b4d
+  full_name: "dma_resv_iter_next_unlocked"
+}
+elf_symbol {
+  id: 0x18c86bd9
+  name: "dma_resv_reserve_fences"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8c07c1d7
+  type_id: 0x9547904d
+  full_name: "dma_resv_reserve_fences"
+}
+elf_symbol {
+  id: 0x7aaf6db0
+  name: "dma_resv_test_signaled"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaba4d258
+  type_id: 0xf7ecf18c
+  full_name: "dma_resv_test_signaled"
+}
+elf_symbol {
+  id: 0xc78eb5e4
+  name: "dma_resv_wait_timeout"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6e7440d9
+  type_id: 0xae730313
+  full_name: "dma_resv_wait_timeout"
+}
+elf_symbol {
+  id: 0x33b86119
+  name: "dma_run_dependencies"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x80f3f342
+  type_id: 0x1b3ae799
+  full_name: "dma_run_dependencies"
+}
+elf_symbol {
+  id: 0xf2e75ff5
+  name: "dma_set_coherent_mask"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xceefb577
+  type_id: 0x9f5e51ba
+  full_name: "dma_set_coherent_mask"
+}
+elf_symbol {
+  id: 0x7995e8e7
+  name: "dma_set_mask"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x18d3ec20
+  type_id: 0x9f5e51ba
+  full_name: "dma_set_mask"
+}
+elf_symbol {
+  id: 0xb3531c1a
+  name: "dma_sync_sg_for_cpu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7416c68b
+  type_id: 0x1053ae07
+  full_name: "dma_sync_sg_for_cpu"
+}
+elf_symbol {
+  id: 0xc38f05c2
+  name: "dma_sync_sg_for_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3cdacb78
+  type_id: 0x1053ae07
+  full_name: "dma_sync_sg_for_device"
+}
+elf_symbol {
+  id: 0x5cc3c221
+  name: "dma_sync_single_for_cpu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x66e8950d
+  type_id: 0x13b0ecd2
+  full_name: "dma_sync_single_for_cpu"
+}
+elf_symbol {
+  id: 0x64b56ecc
+  name: "dma_sync_single_for_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd22e85cb
+  type_id: 0x13b0ecd2
+  full_name: "dma_sync_single_for_device"
+}
+elf_symbol {
+  id: 0x45690ea2
+  name: "dma_unmap_page_attrs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2800f2e6
+  type_id: 0x13b0e00f
+  full_name: "dma_unmap_page_attrs"
+}
+elf_symbol {
+  id: 0x0134874d
+  name: "dma_unmap_resource"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf6141921
+  type_id: 0x13b0e00f
+  full_name: "dma_unmap_resource"
+}
+elf_symbol {
+  id: 0xe5a171eb
+  name: "dma_unmap_sg_attrs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0df35f73
+  type_id: 0x1053a2da
+  full_name: "dma_unmap_sg_attrs"
+}
+elf_symbol {
+  id: 0xc4a6e691
+  name: "dma_vmap_noncontiguous"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5bc92933
+  type_id: 0x55d07307
+  full_name: "dma_vmap_noncontiguous"
+}
+elf_symbol {
+  id: 0xcb48db3d
+  name: "dma_vunmap_noncontiguous"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6842f9d1
+  type_id: 0x106c9a5c
+  full_name: "dma_vunmap_noncontiguous"
+}
+elf_symbol {
+  id: 0xfc6b4a0f
+  name: "dmabuf_page_pool_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8b0411eb
+  type_id: 0xba11bc6a
+  full_name: "dmabuf_page_pool_alloc"
+}
+elf_symbol {
+  id: 0xf7f45910
+  name: "dmabuf_page_pool_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8034c53b
+  type_id: 0x8a23f6d7
+  full_name: "dmabuf_page_pool_create"
+}
+elf_symbol {
+  id: 0x2b250c73
+  name: "dmabuf_page_pool_destroy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6971adf7
+  type_id: 0x17111d79
+  full_name: "dmabuf_page_pool_destroy"
+}
+elf_symbol {
+  id: 0xf138bdf8
+  name: "dmabuf_page_pool_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7ba95d6c
+  type_id: 0x170b1003
+  full_name: "dmabuf_page_pool_free"
+}
+elf_symbol {
+  id: 0x6c5eefdd
+  name: "dmabuf_page_pool_get_size"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6cfd4677
+  type_id: 0x362581b9
+  full_name: "dmabuf_page_pool_get_size"
+}
+elf_symbol {
+  id: 0x7a8e1c58
+  name: "dmaengine_unmap_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf5bcf873
+  type_id: 0x1664b4e1
+  full_name: "dmaengine_unmap_put"
+}
+elf_symbol {
+  id: 0xbd678b0e
+  name: "dmaenginem_async_device_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1603678f
+  type_id: 0x96711162
+  full_name: "dmaenginem_async_device_register"
+}
+elf_symbol {
+  id: 0x400fac71
+  name: "dmam_alloc_attrs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcf6082ed
+  type_id: 0x55df36a2
+  full_name: "dmam_alloc_attrs"
+}
+elf_symbol {
+  id: 0xdae2cdaf
+  name: "dmam_free_coherent"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb0da3933
+  type_id: 0x13db1588
+  full_name: "dmam_free_coherent"
+}
+elf_symbol {
+  id: 0x6bebb14a
+  name: "do_SAK"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa6ed846a
+  type_id: 0x1b27f18a
+  full_name: "do_SAK"
+}
+elf_symbol {
+  id: 0xb50c088c
+  name: "do_trace_netlink_extack"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe6d2458e
+  type_id: 0x1f1c7cd5
+  full_name: "do_trace_netlink_extack"
+}
+elf_symbol {
+  id: 0xae435551
+  name: "do_trace_rcu_torture_read"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x92db8f68
+  type_id: 0x1fd9024d
+  full_name: "do_trace_rcu_torture_read"
+}
+elf_symbol {
+  id: 0x718fec30
+  name: "do_wait_intr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5b2f27fb
+  type_id: 0x9f03c160
+  full_name: "do_wait_intr"
+}
+elf_symbol {
+  id: 0x037d0335
+  name: "do_wait_intr_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5102a30b
+  type_id: 0x9f03c160
+  full_name: "do_wait_intr_irq"
+}
+elf_symbol {
+  id: 0x1f647fed
+  name: "double_rq_lock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdb32b18f
+  type_id: 0x1ba0fc33
+  full_name: "double_rq_lock"
+}
+elf_symbol {
+  id: 0xb832d27e
+  name: "down"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6626afca
+  type_id: 0x14dfe82d
+  full_name: "down"
+}
+elf_symbol {
+  id: 0x22b91009
+  name: "down_interruptible"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6bd0e573
+  type_id: 0x99c75a91
+  full_name: "down_interruptible"
+}
+elf_symbol {
+  id: 0x0b4ac64d
+  name: "down_killable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x36b6ebbf
+  type_id: 0x99c75a91
+  full_name: "down_killable"
+}
+elf_symbol {
+  id: 0xf65b5ded
+  name: "down_read"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3355da1c
+  type_id: 0x10b7c133
+  full_name: "down_read"
+}
+elf_symbol {
+  id: 0x4bd2ef24
+  name: "down_read_killable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2604b7c2
+  type_id: 0x9daf738f
+  full_name: "down_read_killable"
+}
+elf_symbol {
+  id: 0x6d790d49
+  name: "down_read_trylock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x88f5cdef
+  type_id: 0x9daf738f
+  full_name: "down_read_trylock"
+}
+elf_symbol {
+  id: 0x68deb409
+  name: "down_timeout"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x92e683f5
+  type_id: 0x9a3762e7
+  full_name: "down_timeout"
+}
+elf_symbol {
+  id: 0x3d2d0ba2
+  name: "down_trylock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe9ffc063
+  type_id: 0x99c75a91
+  full_name: "down_trylock"
+}
+elf_symbol {
+  id: 0x0d57c53d
+  name: "down_write"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x28ed2847
+  type_id: 0x10b7c133
+  full_name: "down_write"
+}
+elf_symbol {
+  id: 0xab93a1ea
+  name: "down_write_killable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xced2405e
+  type_id: 0x9daf738f
+  full_name: "down_write_killable"
+}
+elf_symbol {
+  id: 0x4a57b168
+  name: "downgrade_write"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd486fb9c
+  type_id: 0x10b7c133
+  full_name: "downgrade_write"
+}
+elf_symbol {
+  id: 0x8a417941
+  name: "dpcm_end_walk_at_be"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7e2e877b
+  type_id: 0xfd600427
+  full_name: "dpcm_end_walk_at_be"
+}
+elf_symbol {
+  id: 0xb04874d2
+  name: "dput"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8a38d2d9
+  type_id: 0x141901a7
+  full_name: "dput"
+}
+elf_symbol {
+  id: 0xcf2657d9
+  name: "dql_completed"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa00aca2a
+  type_id: 0x1015a754
+  full_name: "dql_completed"
+}
+elf_symbol {
+  id: 0xecbd57a0
+  name: "dql_reset"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4ea25709
+  type_id: 0x1103b2cc
+  full_name: "dql_reset"
+}
+elf_symbol {
+  id: 0x472f65cb
+  name: "drain_workqueue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa38602cd
+  type_id: 0x14667c52
+  full_name: "drain_workqueue"
+}
+elf_symbol {
+  id: 0x8fbdd27e
+  name: "driver_attach"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb6db38a0
+  type_id: 0x91190ace
+  full_name: "driver_attach"
+}
+elf_symbol {
+  id: 0xbde576b8
+  name: "driver_create_file"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4cafa18c
+  type_id: 0x91e06d89
+  full_name: "driver_create_file"
+}
+elf_symbol {
+  id: 0xa6a7d8d9
+  name: "driver_find_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1f3d4e58
+  type_id: 0xa1b14a4d
+  full_name: "driver_find_device"
+}
+elf_symbol {
+  id: 0x1f0cd029
+  name: "driver_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe33175d6
+  type_id: 0x91190ace
+  full_name: "driver_register"
+}
+elf_symbol {
+  id: 0xd90c83a1
+  name: "driver_remove_file"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb81ba41d
+  type_id: 0x1cf8df35
+  full_name: "driver_remove_file"
+}
+elf_symbol {
+  id: 0x5234324e
+  name: "driver_set_override"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0c32269e
+  type_id: 0x9d0ed9df
+  full_name: "driver_set_override"
+}
+elf_symbol {
+  id: 0xe5349379
+  name: "driver_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1be461e1
+  type_id: 0x1c01b872
+  full_name: "driver_unregister"
+}
+elf_symbol {
+  id: 0xb7abbec5
+  name: "drm_add_edid_modes"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x89db1c0d
+  type_id: 0x91016cca
+  full_name: "drm_add_edid_modes"
+}
+elf_symbol {
+  id: 0x573a436c
+  name: "drm_add_modes_noedid"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x61d6f9cb
+  type_id: 0x9068c1cc
+  full_name: "drm_add_modes_noedid"
+}
+elf_symbol {
+  id: 0x588ab3fd
+  name: "drm_aperture_remove_conflicting_pci_framebuffers"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa5a41149
+  type_id: 0x99361691
+  full_name: "drm_aperture_remove_conflicting_pci_framebuffers"
+}
+elf_symbol {
+  id: 0x1389094c
+  name: "drm_atomic_add_affected_connectors"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x382c8307
+  type_id: 0x950581be
+  full_name: "drm_atomic_add_affected_connectors"
+}
+elf_symbol {
+  id: 0x098d4189
+  name: "drm_atomic_add_affected_planes"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaa301513
+  type_id: 0x950581be
+  full_name: "drm_atomic_add_affected_planes"
+}
+elf_symbol {
+  id: 0x27bb2715
+  name: "drm_atomic_bridge_chain_disable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x037c643d
+  type_id: 0x198668f4
+  full_name: "drm_atomic_bridge_chain_disable"
+}
+elf_symbol {
+  id: 0xa7187ebf
+  name: "drm_atomic_bridge_chain_enable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbd85127b
+  type_id: 0x198668f4
+  full_name: "drm_atomic_bridge_chain_enable"
+}
+elf_symbol {
+  id: 0xff22568f
+  name: "drm_atomic_bridge_chain_post_disable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xff56b1a9
+  type_id: 0x198668f4
+  full_name: "drm_atomic_bridge_chain_post_disable"
+}
+elf_symbol {
+  id: 0xe21486eb
+  name: "drm_atomic_bridge_chain_pre_enable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x95744fb5
+  type_id: 0x198668f4
+  full_name: "drm_atomic_bridge_chain_pre_enable"
+}
+elf_symbol {
+  id: 0x4fa53f59
+  name: "drm_atomic_commit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x47f1dc99
+  type_id: 0x95c0ec46
+  full_name: "drm_atomic_commit"
+}
+elf_symbol {
+  id: 0xc98da8e7
+  name: "drm_atomic_get_connector_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3e66308a
+  type_id: 0x6345a3c5
+  full_name: "drm_atomic_get_connector_state"
+}
+elf_symbol {
+  id: 0xd5466b6c
+  name: "drm_atomic_get_crtc_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x90a202a4
+  type_id: 0xefaef687
+  full_name: "drm_atomic_get_crtc_state"
+}
+elf_symbol {
+  id: 0x1d9e3d52
+  name: "drm_atomic_get_new_bridge_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbf3bc346
+  type_id: 0x289916da
+  full_name: "drm_atomic_get_new_bridge_state"
+}
+elf_symbol {
+  id: 0xec51c2ad
+  name: "drm_atomic_get_new_connector_for_encoder"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc1f42625
+  type_id: 0xab344d2b
+  full_name: "drm_atomic_get_new_connector_for_encoder"
+}
+elf_symbol {
+  id: 0xd6791c20
+  name: "drm_atomic_get_new_private_obj_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe843f465
+  type_id: 0x8715e05e
+  full_name: "drm_atomic_get_new_private_obj_state"
+}
+elf_symbol {
+  id: 0xf53e2c51
+  name: "drm_atomic_get_old_connector_for_encoder"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc6dcc179
+  type_id: 0xab344d2b
+  full_name: "drm_atomic_get_old_connector_for_encoder"
+}
+elf_symbol {
+  id: 0xd9c6b1b6
+  name: "drm_atomic_get_old_private_obj_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xef6b1339
+  type_id: 0x8715e05e
+  full_name: "drm_atomic_get_old_private_obj_state"
+}
+elf_symbol {
+  id: 0x0a479d68
+  name: "drm_atomic_get_plane_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4acdf8ca
+  type_id: 0x89544504
+  full_name: "drm_atomic_get_plane_state"
+}
+elf_symbol {
+  id: 0xcb9062ec
+  name: "drm_atomic_get_private_obj_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1fb91d36
+  type_id: 0x8715e05e
+  full_name: "drm_atomic_get_private_obj_state"
+}
+elf_symbol {
+  id: 0x13b62ed6
+  name: "drm_atomic_helper_bridge_destroy_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x02250c44
+  type_id: 0x1912c3c7
+  full_name: "drm_atomic_helper_bridge_destroy_state"
+}
+elf_symbol {
+  id: 0xa9a0aa89
+  name: "drm_atomic_helper_bridge_duplicate_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x30e477b0
+  type_id: 0x29da83bb
+  full_name: "drm_atomic_helper_bridge_duplicate_state"
+}
+elf_symbol {
+  id: 0x9b59d361
+  name: "drm_atomic_helper_bridge_propagate_bus_fmt"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf9c3d0fb
+  type_id: 0x6a320335
+  full_name: "drm_atomic_helper_bridge_propagate_bus_fmt"
+}
+elf_symbol {
+  id: 0xe526da4a
+  name: "drm_atomic_helper_bridge_reset"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe2bce138
+  type_id: 0x29da83bb
+  full_name: "drm_atomic_helper_bridge_reset"
+}
+elf_symbol {
+  id: 0x848785d9
+  name: "drm_atomic_helper_calc_timestamping_constants"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1dce7626
+  type_id: 0x18d85efa
+  full_name: "drm_atomic_helper_calc_timestamping_constants"
+}
+elf_symbol {
+  id: 0x86f64a4f
+  name: "drm_atomic_helper_check"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x14f5d679
+  type_id: 0x93c5cc72
+  full_name: "drm_atomic_helper_check"
+}
+elf_symbol {
+  id: 0x5f15326d
+  name: "drm_atomic_helper_check_modeset"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0ad7c8c8
+  type_id: 0x93c5cc72
+  full_name: "drm_atomic_helper_check_modeset"
+}
+elf_symbol {
+  id: 0x9890ec36
+  name: "drm_atomic_helper_check_plane_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc5f2329a
+  type_id: 0x96d5902b
+  full_name: "drm_atomic_helper_check_plane_state"
+}
+elf_symbol {
+  id: 0x212b65fd
+  name: "drm_atomic_helper_check_planes"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x829804b3
+  type_id: 0x93c5cc72
+  full_name: "drm_atomic_helper_check_planes"
+}
+elf_symbol {
+  id: 0xccd2b090
+  name: "drm_atomic_helper_check_wb_encoder_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd9b4df76
+  type_id: 0x968fd49c
+  full_name: "drm_atomic_helper_check_wb_encoder_state"
+}
+elf_symbol {
+  id: 0xf4bf18ca
+  name: "drm_atomic_helper_cleanup_planes"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd36f4777
+  type_id: 0x1edd7ece
+  full_name: "drm_atomic_helper_cleanup_planes"
+}
+elf_symbol {
+  id: 0x1356df51
+  name: "drm_atomic_helper_commit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7998fb77
+  type_id: 0x93de93a5
+  full_name: "drm_atomic_helper_commit"
+}
+elf_symbol {
+  id: 0x49d4c5ab
+  name: "drm_atomic_helper_commit_cleanup_done"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x02527e5f
+  type_id: 0x18d85efa
+  full_name: "drm_atomic_helper_commit_cleanup_done"
+}
+elf_symbol {
+  id: 0x0600128d
+  name: "drm_atomic_helper_commit_duplicated_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa1bc5b7f
+  type_id: 0x95cedbde
+  full_name: "drm_atomic_helper_commit_duplicated_state"
+}
+elf_symbol {
+  id: 0x41d51d39
+  name: "drm_atomic_helper_commit_hw_done"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3dd8efec
+  type_id: 0x18d85efa
+  full_name: "drm_atomic_helper_commit_hw_done"
+}
+elf_symbol {
+  id: 0xb960d098
+  name: "drm_atomic_helper_commit_modeset_disables"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x433d2315
+  type_id: 0x1edd7ece
+  full_name: "drm_atomic_helper_commit_modeset_disables"
+}
+elf_symbol {
+  id: 0x16b0d5fb
+  name: "drm_atomic_helper_commit_modeset_enables"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe9f68f32
+  type_id: 0x1edd7ece
+  full_name: "drm_atomic_helper_commit_modeset_enables"
+}
+elf_symbol {
+  id: 0x2505f076
+  name: "drm_atomic_helper_commit_planes"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9651b05e
+  type_id: 0x1eda71a1
+  full_name: "drm_atomic_helper_commit_planes"
+}
+elf_symbol {
+  id: 0xd422cc3f
+  name: "drm_atomic_helper_commit_tail"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xff03516c
+  type_id: 0x18d85efa
+  full_name: "drm_atomic_helper_commit_tail"
+}
+elf_symbol {
+  id: 0x46d54518
+  name: "drm_atomic_helper_commit_tail_rpm"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8c2395f9
+  type_id: 0x18d85efa
+  full_name: "drm_atomic_helper_commit_tail_rpm"
+}
+elf_symbol {
+  id: 0xc0853146
+  name: "drm_atomic_helper_connector_destroy_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe5b45ca1
+  type_id: 0x1c470062
+  full_name: "drm_atomic_helper_connector_destroy_state"
+}
+elf_symbol {
+  id: 0xc33afed2
+  name: "drm_atomic_helper_connector_duplicate_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x794b58c9
+  type_id: 0x67ae13ae
+  full_name: "drm_atomic_helper_connector_duplicate_state"
+}
+elf_symbol {
+  id: 0x8787c046
+  name: "drm_atomic_helper_connector_reset"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x792830f7
+  type_id: 0x1cf53808
+  full_name: "drm_atomic_helper_connector_reset"
+}
+elf_symbol {
+  id: 0x7b96b33d
+  name: "drm_atomic_helper_crtc_destroy_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x80703b43
+  type_id: 0x1c25e791
+  full_name: "drm_atomic_helper_crtc_destroy_state"
+}
+elf_symbol {
+  id: 0x4185c541
+  name: "drm_atomic_helper_crtc_duplicate_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6c5e916c
+  type_id: 0xeb7d4b96
+  full_name: "drm_atomic_helper_crtc_duplicate_state"
+}
+elf_symbol {
+  id: 0x1b260b5a
+  name: "drm_atomic_helper_crtc_reset"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd6e7b965
+  type_id: 0x1cce8e13
+  full_name: "drm_atomic_helper_crtc_reset"
+}
+elf_symbol {
+  id: 0x8a560545
+  name: "drm_atomic_helper_damage_iter_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x01676359
+  type_id: 0x1b28e71c
+  full_name: "drm_atomic_helper_damage_iter_init"
+}
+elf_symbol {
+  id: 0x48426434
+  name: "drm_atomic_helper_damage_iter_next"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6b5c2b06
+  type_id: 0xf5a2a923
+  full_name: "drm_atomic_helper_damage_iter_next"
+}
+elf_symbol {
+  id: 0x5048d4f5
+  name: "drm_atomic_helper_damage_merged"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3654a635
+  type_id: 0xf334abb2
+  full_name: "drm_atomic_helper_damage_merged"
+}
+elf_symbol {
+  id: 0x1348bb29
+  name: "drm_atomic_helper_dirtyfb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcb4d14f3
+  type_id: 0x91a92948
+  full_name: "drm_atomic_helper_dirtyfb"
+}
+elf_symbol {
+  id: 0x4c959d92
+  name: "drm_atomic_helper_disable_plane"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeef245a7
+  type_id: 0x9b45fcbe
+  full_name: "drm_atomic_helper_disable_plane"
+}
+elf_symbol {
+  id: 0x0d8d7b9b
+  name: "drm_atomic_helper_disable_planes_on_crtc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5144ea50
+  type_id: 0x1f9b34c1
+  full_name: "drm_atomic_helper_disable_planes_on_crtc"
+}
+elf_symbol {
+  id: 0x2ed07e93
+  name: "drm_atomic_helper_duplicate_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc320b19f
+  type_id: 0x4f3d8d0a
+  full_name: "drm_atomic_helper_duplicate_state"
+}
+elf_symbol {
+  id: 0x4a7f7e5b
+  name: "drm_atomic_helper_fake_vblank"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa7e22d69
+  type_id: 0x18d85efa
+  full_name: "drm_atomic_helper_fake_vblank"
+}
+elf_symbol {
+  id: 0x0c677c01
+  name: "drm_atomic_helper_page_flip"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf48df017
+  type_id: 0x9116124f
+  full_name: "drm_atomic_helper_page_flip"
+}
+elf_symbol {
+  id: 0x16b02987
+  name: "drm_atomic_helper_plane_destroy_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf6a223af
+  type_id: 0x16ebcbfa
+  full_name: "drm_atomic_helper_plane_destroy_state"
+}
+elf_symbol {
+  id: 0x34009364
+  name: "drm_atomic_helper_plane_duplicate_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x533597e1
+  type_id: 0x87b3d0e4
+  full_name: "drm_atomic_helper_plane_duplicate_state"
+}
+elf_symbol {
+  id: 0xa9e6e5e8
+  name: "drm_atomic_helper_plane_reset"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x04edb713
+  type_id: 0x1653799a
+  full_name: "drm_atomic_helper_plane_reset"
+}
+elf_symbol {
+  id: 0x5a9ea9d7
+  name: "drm_atomic_helper_prepare_planes"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x70a59260
+  type_id: 0x93c5cc72
+  full_name: "drm_atomic_helper_prepare_planes"
+}
+elf_symbol {
+  id: 0xd0656c2a
+  name: "drm_atomic_helper_resume"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe5ac5939
+  type_id: 0x93c5cc72
+  full_name: "drm_atomic_helper_resume"
+}
+elf_symbol {
+  id: 0xba2e4af9
+  name: "drm_atomic_helper_set_config"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x732e63df
+  type_id: 0x9286b490
+  full_name: "drm_atomic_helper_set_config"
+}
+elf_symbol {
+  id: 0xa0b728be
+  name: "drm_atomic_helper_setup_commit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2de12487
+  type_id: 0x94751139
+  full_name: "drm_atomic_helper_setup_commit"
+}
+elf_symbol {
+  id: 0x5f99d405
+  name: "drm_atomic_helper_shutdown"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x95b86c5d
+  type_id: 0x1e597e38
+  full_name: "drm_atomic_helper_shutdown"
+}
+elf_symbol {
+  id: 0x308067a6
+  name: "drm_atomic_helper_suspend"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x67057183
+  type_id: 0x4f33ba92
+  full_name: "drm_atomic_helper_suspend"
+}
+elf_symbol {
+  id: 0xe375001c
+  name: "drm_atomic_helper_swap_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x27189346
+  type_id: 0x94751139
+  full_name: "drm_atomic_helper_swap_state"
+}
+elf_symbol {
+  id: 0xace15cad
+  name: "drm_atomic_helper_update_legacy_modeset_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x99344832
+  type_id: 0x1edd7ece
+  full_name: "drm_atomic_helper_update_legacy_modeset_state"
+}
+elf_symbol {
+  id: 0x38dc8db4
+  name: "drm_atomic_helper_update_plane"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbe6fc0dd
+  type_id: 0x9b8350bf
+  full_name: "drm_atomic_helper_update_plane"
+}
+elf_symbol {
+  id: 0xf8c5a501
+  name: "drm_atomic_helper_wait_for_dependencies"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6b28e7c6
+  type_id: 0x18d85efa
+  full_name: "drm_atomic_helper_wait_for_dependencies"
+}
+elf_symbol {
+  id: 0x59e9d983
+  name: "drm_atomic_helper_wait_for_fences"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2f6fe6d3
+  type_id: 0x93de93a5
+  full_name: "drm_atomic_helper_wait_for_fences"
+}
+elf_symbol {
+  id: 0x0cac698d
+  name: "drm_atomic_helper_wait_for_flip_done"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbec15cbf
+  type_id: 0x1edd7ece
+  full_name: "drm_atomic_helper_wait_for_flip_done"
+}
+elf_symbol {
+  id: 0x94e838b6
+  name: "drm_atomic_helper_wait_for_vblanks"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8068773d
+  type_id: 0x1edd7ece
+  full_name: "drm_atomic_helper_wait_for_vblanks"
+}
+elf_symbol {
+  id: 0x670d0b05
+  name: "drm_atomic_nonblocking_commit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8cdd681b
+  type_id: 0x95c0ec46
+  full_name: "drm_atomic_nonblocking_commit"
+}
+elf_symbol {
+  id: 0x3801a3ca
+  name: "drm_atomic_normalize_zpos"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2e4e51ac
+  type_id: 0x93c5cc72
+  full_name: "drm_atomic_normalize_zpos"
+}
+elf_symbol {
+  id: 0x525885c3
+  name: "drm_atomic_print_new_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfda5c4b5
+  type_id: 0x1de9a6b4
+  full_name: "drm_atomic_print_new_state"
+}
+elf_symbol {
+  id: 0x57bfd6ae
+  name: "drm_atomic_private_obj_fini"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3ecca617
+  type_id: 0x18cc928e
+  full_name: "drm_atomic_private_obj_fini"
+}
+elf_symbol {
+  id: 0x747e1262
+  name: "drm_atomic_private_obj_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7c08579a
+  type_id: 0x1ede86f9
+  full_name: "drm_atomic_private_obj_init"
+}
+elf_symbol {
+  id: 0x2ef91e0b
+  name: "drm_atomic_set_crtc_for_connector"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x39fbaef9
+  type_id: 0x9666087d
+  full_name: "drm_atomic_set_crtc_for_connector"
+}
+elf_symbol {
+  id: 0x8de42ab3
+  name: "drm_atomic_set_crtc_for_plane"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4676d967
+  type_id: 0x96cea8dc
+  full_name: "drm_atomic_set_crtc_for_plane"
+}
+elf_symbol {
+  id: 0xaefe0f11
+  name: "drm_atomic_set_fb_for_plane"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5b6cdac0
+  type_id: 0x1bd4554d
+  full_name: "drm_atomic_set_fb_for_plane"
+}
+elf_symbol {
+  id: 0x651ec6ad
+  name: "drm_atomic_set_mode_for_crtc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2522bf0d
+  type_id: 0x93e044d4
+  full_name: "drm_atomic_set_mode_for_crtc"
+}
+elf_symbol {
+  id: 0x311de203
+  name: "drm_atomic_set_mode_prop_for_crtc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe7faf220
+  type_id: 0x93e681f1
+  full_name: "drm_atomic_set_mode_prop_for_crtc"
+}
+elf_symbol {
+  id: 0x4f6fdc7b
+  name: "drm_atomic_state_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x06a85cda
+  type_id: 0x4f33ba92
+  full_name: "drm_atomic_state_alloc"
+}
+elf_symbol {
+  id: 0xb0883802
+  name: "drm_atomic_state_clear"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x56525008
+  type_id: 0x18d85efa
+  full_name: "drm_atomic_state_clear"
+}
+elf_symbol {
+  id: 0x9d81246b
+  name: "drm_atomic_state_default_clear"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xee3f3985
+  type_id: 0x18d85efa
+  full_name: "drm_atomic_state_default_clear"
+}
+elf_symbol {
+  id: 0x4e128020
+  name: "drm_atomic_state_default_release"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9640fef5
+  type_id: 0x18d85efa
+  full_name: "drm_atomic_state_default_release"
+}
+elf_symbol {
+  id: 0xc38c9743
+  name: "drm_atomic_state_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe4837ea7
+  type_id: 0x93c5cc72
+  full_name: "drm_atomic_state_init"
+}
+elf_symbol {
+  id: 0xbe2288e1
+  name: "drm_bridge_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8e95e16a
+  type_id: 0x19026802
+  full_name: "drm_bridge_add"
+}
+elf_symbol {
+  id: 0x7658ff57
+  name: "drm_bridge_attach"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1dd8d6f5
+  type_id: 0x96ac3609
+  full_name: "drm_bridge_attach"
+}
+elf_symbol {
+  id: 0xfeebbef1
+  name: "drm_bridge_chain_disable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5b85086b
+  type_id: 0x19026802
+  full_name: "drm_bridge_chain_disable"
+}
+elf_symbol {
+  id: 0x6ea804d3
+  name: "drm_bridge_chain_enable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb8deffe4
+  type_id: 0x19026802
+  full_name: "drm_bridge_chain_enable"
+}
+elf_symbol {
+  id: 0x0e57bc00
+  name: "drm_bridge_chain_mode_set"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd36b5bdc
+  type_id: 0x19d93429
+  full_name: "drm_bridge_chain_mode_set"
+}
+elf_symbol {
+  id: 0x59eac7ab
+  name: "drm_bridge_chain_post_disable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x738902b4
+  type_id: 0x19026802
+  full_name: "drm_bridge_chain_post_disable"
+}
+elf_symbol {
+  id: 0xf0f67717
+  name: "drm_bridge_chain_pre_enable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x50596309
+  type_id: 0x19026802
+  full_name: "drm_bridge_chain_pre_enable"
+}
+elf_symbol {
+  id: 0x6fbfd8e1
+  name: "drm_bridge_connector_disable_hpd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3ed1379b
+  type_id: 0x1cf53808
+  full_name: "drm_bridge_connector_disable_hpd"
+}
+elf_symbol {
+  id: 0x0dfe64b8
+  name: "drm_bridge_connector_enable_hpd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf797b9f0
+  type_id: 0x1cf53808
+  full_name: "drm_bridge_connector_enable_hpd"
+}
+elf_symbol {
+  id: 0x51b726c8
+  name: "drm_bridge_connector_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdbe75ce0
+  type_id: 0xadb56de9
+  full_name: "drm_bridge_connector_init"
+}
+elf_symbol {
+  id: 0x5d9f16f7
+  name: "drm_bridge_detect"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6b110d7f
+  type_id: 0xfcf090be
+  full_name: "drm_bridge_detect"
+}
+elf_symbol {
+  id: 0xd82232b3
+  name: "drm_bridge_hpd_notify"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1d4ae759
+  type_id: 0x182b2835
+  full_name: "drm_bridge_hpd_notify"
+}
+elf_symbol {
+  id: 0x69a31cde
+  name: "drm_bridge_remove"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6bfd8c31
+  type_id: 0x19026802
+  full_name: "drm_bridge_remove"
+}
+elf_symbol {
+  id: 0xfbc28ac3
+  name: "drm_bus_flags_from_videomode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xad885165
+  type_id: 0x1ffd60fe
+  full_name: "drm_bus_flags_from_videomode"
+}
+elf_symbol {
+  id: 0xe2f527ca
+  name: "drm_calc_timestamping_constants"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8c4309f6
+  type_id: 0x1c18b1c5
+  full_name: "drm_calc_timestamping_constants"
+}
+elf_symbol {
+  id: 0x51df4337
+  name: "drm_client_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4f563ed9
+  type_id: 0x937bb0c9
+  full_name: "drm_client_init"
+}
+elf_symbol {
+  id: 0xa27d2f32
+  name: "drm_client_modeset_commit_locked"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe746131d
+  type_id: 0x9ed1826a
+  full_name: "drm_client_modeset_commit_locked"
+}
+elf_symbol {
+  id: 0xa978b6c8
+  name: "drm_client_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x09544747
+  type_id: 0x13c930d6
+  full_name: "drm_client_register"
+}
+elf_symbol {
+  id: 0x54a3e32d
+  name: "drm_compat_ioctl"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7924dd7f
+  type_id: 0xa00069e0
+  full_name: "drm_compat_ioctl"
+}
+elf_symbol {
+  id: 0x3f2eb351
+  name: "drm_connector_atomic_hdr_metadata_equal"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfda4043b
+  type_id: 0xf535e5c4
+  full_name: "drm_connector_atomic_hdr_metadata_equal"
+}
+elf_symbol {
+  id: 0x9ff01046
+  name: "drm_connector_attach_dp_subconnector_property"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbf9170b9
+  type_id: 0x1cf53808
+  full_name: "drm_connector_attach_dp_subconnector_property"
+}
+elf_symbol {
+  id: 0x91c4aa40
+  name: "drm_connector_attach_edid_property"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3c2f2380
+  type_id: 0x1cf53808
+  full_name: "drm_connector_attach_edid_property"
+}
+elf_symbol {
+  id: 0xe78757f8
+  name: "drm_connector_attach_encoder"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x65ac6d56
+  type_id: 0x91565a49
+  full_name: "drm_connector_attach_encoder"
+}
+elf_symbol {
+  id: 0x1cc3ba5d
+  name: "drm_connector_attach_hdr_output_metadata_property"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5e8294f8
+  type_id: 0x91ed8ab4
+  full_name: "drm_connector_attach_hdr_output_metadata_property"
+}
+elf_symbol {
+  id: 0xf01aa08a
+  name: "drm_connector_attach_max_bpc_property"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x325affde
+  type_id: 0x9068c1cc
+  full_name: "drm_connector_attach_max_bpc_property"
+}
+elf_symbol {
+  id: 0x7fe4fd87
+  name: "drm_connector_cleanup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf5c627ca
+  type_id: 0x1cf53808
+  full_name: "drm_connector_cleanup"
+}
+elf_symbol {
+  id: 0x70b7d94b
+  name: "drm_connector_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe888ac75
+  type_id: 0x9388ac32
+  full_name: "drm_connector_init"
+}
+elf_symbol {
+  id: 0x3b6d3ed0
+  name: "drm_connector_init_with_ddc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3bc01531
+  type_id: 0x9388a514
+  full_name: "drm_connector_init_with_ddc"
+}
+elf_symbol {
+  id: 0xcda9ec73
+  name: "drm_connector_list_iter_begin"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd4dcac69
+  type_id: 0x1eca2cda
+  full_name: "drm_connector_list_iter_begin"
+}
+elf_symbol {
+  id: 0x17025822
+  name: "drm_connector_list_iter_end"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfcaf6d56
+  type_id: 0x19ad7fb1
+  full_name: "drm_connector_list_iter_end"
+}
+elf_symbol {
+  id: 0x8bd15036
+  name: "drm_connector_list_iter_next"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x051a1052
+  type_id: 0xaafabc9d
+  full_name: "drm_connector_list_iter_next"
+}
+elf_symbol {
+  id: 0x8069ccc3
+  name: "drm_connector_list_update"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xad1ec49d
+  type_id: 0x1cf53808
+  full_name: "drm_connector_list_update"
+}
+elf_symbol {
+  id: 0xbe9b3f22
+  name: "drm_connector_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x64effeaf
+  type_id: 0x91ed8ab4
+  full_name: "drm_connector_register"
+}
+elf_symbol {
+  id: 0xb9cc9c24
+  name: "drm_connector_set_panel_orientation"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x661d77ef
+  type_id: 0x93e51922
+  full_name: "drm_connector_set_panel_orientation"
+}
+elf_symbol {
+  id: 0xe4a41c47
+  name: "drm_connector_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x411bde66
+  type_id: 0x1cf53808
+  full_name: "drm_connector_unregister"
+}
+elf_symbol {
+  id: 0x33f2cc93
+  name: "drm_connector_update_edid_property"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x98f042db
+  type_id: 0x912a7219
+  full_name: "drm_connector_update_edid_property"
+}
+elf_symbol {
+  id: 0x1773ebf6
+  name: "drm_crtc_accurate_vblank_count"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcf1b970e
+  type_id: 0x5b8d0ccb
+  full_name: "drm_crtc_accurate_vblank_count"
+}
+elf_symbol {
+  id: 0xce26050a
+  name: "drm_crtc_add_crc_entry"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2056c89f
+  type_id: 0x9064f8c2
+  full_name: "drm_crtc_add_crc_entry"
+}
+elf_symbol {
+  id: 0x3af81f7d
+  name: "drm_crtc_arm_vblank_event"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x39b8fd15
+  type_id: 0x1cb94c1c
+  full_name: "drm_crtc_arm_vblank_event"
+}
+elf_symbol {
+  id: 0xc8580afc
+  name: "drm_crtc_cleanup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2575db6e
+  type_id: 0x1cce8e13
+  full_name: "drm_crtc_cleanup"
+}
+elf_symbol {
+  id: 0xbe89afca
+  name: "drm_crtc_commit_wait"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe39b1a76
+  type_id: 0x922e978f
+  full_name: "drm_crtc_commit_wait"
+}
+elf_symbol {
+  id: 0x3b7c3802
+  name: "drm_crtc_enable_color_mgmt"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd66d4c8b
+  type_id: 0x1e67551a
+  full_name: "drm_crtc_enable_color_mgmt"
+}
+elf_symbol {
+  id: 0x11e9361c
+  name: "drm_crtc_handle_vblank"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x38c14875
+  type_id: 0xf2f28484
+  full_name: "drm_crtc_handle_vblank"
+}
+elf_symbol {
+  id: 0x98de519f
+  name: "drm_crtc_helper_set_config"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf73ac75b
+  type_id: 0x9286b490
+  full_name: "drm_crtc_helper_set_config"
+}
+elf_symbol {
+  id: 0x49bf35a9
+  name: "drm_crtc_helper_set_mode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc2db91d8
+  type_id: 0xf24127d0
+  full_name: "drm_crtc_helper_set_mode"
+}
+elf_symbol {
+  id: 0x9e8cce85
+  name: "drm_crtc_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x87130c20
+  type_id: 0x9389b3df
+  full_name: "drm_crtc_init"
+}
+elf_symbol {
+  id: 0x6db0b862
+  name: "drm_crtc_init_with_planes"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5553a750
+  type_id: 0x93820b25
+  full_name: "drm_crtc_init_with_planes"
+}
+elf_symbol {
+  id: 0x9119c06a
+  name: "drm_crtc_send_vblank_event"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x53686300
+  type_id: 0x1cb94c1c
+  full_name: "drm_crtc_send_vblank_event"
+}
+elf_symbol {
+  id: 0x167719fe
+  name: "drm_crtc_set_max_vblank_count"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2bb72b96
+  type_id: 0x1feaaebf
+  full_name: "drm_crtc_set_max_vblank_count"
+}
+elf_symbol {
+  id: 0xf7b33934
+  name: "drm_crtc_vblank_count"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4d2bc492
+  type_id: 0x5b8d0ccb
+  full_name: "drm_crtc_vblank_count"
+}
+elf_symbol {
+  id: 0x8b01dcb0
+  name: "drm_crtc_vblank_count_and_time"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x43271703
+  type_id: 0x5bb68829
+  full_name: "drm_crtc_vblank_count_and_time"
+}
+elf_symbol {
+  id: 0x92444a19
+  name: "drm_crtc_vblank_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9d9f1180
+  type_id: 0x91d63caf
+  full_name: "drm_crtc_vblank_get"
+}
+elf_symbol {
+  id: 0x3d72f095
+  name: "drm_crtc_vblank_helper_get_vblank_timestamp"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb282e79f
+  type_id: 0xf2bde902
+  full_name: "drm_crtc_vblank_helper_get_vblank_timestamp"
+}
+elf_symbol {
+  id: 0x1d6c3f41
+  name: "drm_crtc_vblank_off"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xef6d267f
+  type_id: 0x1cce8e13
+  full_name: "drm_crtc_vblank_off"
+}
+elf_symbol {
+  id: 0xa05d587d
+  name: "drm_crtc_vblank_on"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9fb2e466
+  type_id: 0x1cce8e13
+  full_name: "drm_crtc_vblank_on"
+}
+elf_symbol {
+  id: 0x19d409c4
+  name: "drm_crtc_vblank_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x864e6898
+  type_id: 0x1cce8e13
+  full_name: "drm_crtc_vblank_put"
+}
+elf_symbol {
+  id: 0x427db265
+  name: "drm_crtc_vblank_reset"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe43a8eb5
+  type_id: 0x1cce8e13
+  full_name: "drm_crtc_vblank_reset"
+}
+elf_symbol {
+  id: 0x2ca7efbd
+  name: "drm_crtc_vblank_waitqueue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8417c2ac
+  type_id: 0xbe7f3441
+  full_name: "drm_crtc_vblank_waitqueue"
+}
+elf_symbol {
+  id: 0x94cd1327
+  name: "drm_crtc_wait_one_vblank"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8581217d
+  type_id: 0x1cce8e13
+  full_name: "drm_crtc_wait_one_vblank"
+}
+elf_symbol {
+  id: 0x9a9fe23f
+  name: "drm_cvt_mode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe810dea6
+  type_id: 0xc6a0fca0
+  full_name: "drm_cvt_mode"
+}
+elf_symbol {
+  id: 0x6d0482ba
+  name: "drm_debugfs_create_files"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x356af807
+  type_id: 0x1f0d7714
+  full_name: "drm_debugfs_create_files"
+}
+elf_symbol {
+  id: 0x858617be
+  name: "drm_default_rgb_quant_range"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x65702bd6
+  type_id: 0x26e18424
+  full_name: "drm_default_rgb_quant_range"
+}
+elf_symbol {
+  id: 0x3a4d5745
+  name: "drm_detect_hdmi_monitor"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x38690d99
+  type_id: 0xf2dbd1d4
+  full_name: "drm_detect_hdmi_monitor"
+}
+elf_symbol {
+  id: 0xd76880e9
+  name: "drm_detect_monitor_audio"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa248afde
+  type_id: 0xf2dbd1d4
+  full_name: "drm_detect_monitor_audio"
+}
+elf_symbol {
+  id: 0xe2df98e8
+  name: "drm_dev_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfcb6d242
+  type_id: 0xdf6c95f8
+  full_name: "drm_dev_alloc"
+}
+elf_symbol {
+  id: 0x9543b6f4
+  name: "drm_dev_enter"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1453e376
+  type_id: 0xf028149a
+  full_name: "drm_dev_enter"
+}
+elf_symbol {
+  id: 0xe8ffa2f1
+  name: "drm_dev_exit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe8a034df
+  type_id: 0x09506558
+  full_name: "drm_dev_exit"
+}
+elf_symbol {
+  id: 0x57980a14
+  name: "drm_dev_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfaca51e5
+  type_id: 0x1e597e38
+  full_name: "drm_dev_get"
+}
+elf_symbol {
+  id: 0x48f7af32
+  name: "drm_dev_has_vblank"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6e1fba75
+  type_id: 0xf2d803c7
+  full_name: "drm_dev_has_vblank"
+}
+elf_symbol {
+  id: 0x5654b5d3
+  name: "drm_dev_printk"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa6456769
+  type_id: 0x1f849f7d
+  full_name: "drm_dev_printk"
+}
+elf_symbol {
+  id: 0x0cb650e6
+  name: "drm_dev_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5762f2f1
+  type_id: 0x1e597e38
+  full_name: "drm_dev_put"
+}
+elf_symbol {
+  id: 0xaf3c279d
+  name: "drm_dev_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7ef67a65
+  type_id: 0x938c1916
+  full_name: "drm_dev_register"
+}
+elf_symbol {
+  id: 0x5f6348a0
+  name: "drm_dev_unplug"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7b361836
+  type_id: 0x1e597e38
+  full_name: "drm_dev_unplug"
+}
+elf_symbol {
+  id: 0x2a94838c
+  name: "drm_dev_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x99fc2812
+  type_id: 0x1e597e38
+  full_name: "drm_dev_unregister"
+}
+elf_symbol {
+  id: 0x1ff040fa
+  name: "drm_display_info_set_bus_formats"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbdac567a
+  type_id: 0x9f80925b
+  full_name: "drm_display_info_set_bus_formats"
+}
+elf_symbol {
+  id: 0xfd2136f5
+  name: "drm_display_mode_from_cea_vic"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa9ea8384
+  type_id: 0xc7814062
+  full_name: "drm_display_mode_from_cea_vic"
+}
+elf_symbol {
+  id: 0x2b8a2bbd
+  name: "drm_display_mode_from_videomode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x66cf2f64
+  type_id: 0x1fb5d3a2
+  full_name: "drm_display_mode_from_videomode"
+}
+elf_symbol {
+  id: 0xae21a946
+  name: "drm_display_mode_to_videomode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfe9f72f3
+  type_id: 0x1de9365c
+  full_name: "drm_display_mode_to_videomode"
+}
+elf_symbol {
+  id: 0xf35c98a3
+  name: "drm_do_get_edid"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4b9de822
+  type_id: 0xc2503be7
+  full_name: "drm_do_get_edid"
+}
+elf_symbol {
+  id: 0xef8e6384
+  name: "drm_edid_block_valid"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd13f9985
+  type_id: 0xff1209e9
+  full_name: "drm_edid_block_valid"
+}
+elf_symbol {
+  id: 0xc74638be
+  name: "drm_edid_duplicate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7edf470b
+  type_id: 0xc29f6b92
+  full_name: "drm_edid_duplicate"
+}
+elf_symbol {
+  id: 0xd5cd8e9b
+  name: "drm_edid_get_monitor_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7c545285
+  type_id: 0x1cec1cec
+  full_name: "drm_edid_get_monitor_name"
+}
+elf_symbol {
+  id: 0x7ee897fe
+  name: "drm_edid_header_is_valid"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9b9de1c1
+  type_id: 0x93c72655
+  full_name: "drm_edid_header_is_valid"
+}
+elf_symbol {
+  id: 0x903baf1e
+  name: "drm_edid_is_valid"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8d72789e
+  type_id: 0xf06a3ce3
+  full_name: "drm_edid_is_valid"
+}
+elf_symbol {
+  id: 0x9ff39d6a
+  name: "drm_edid_to_sad"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6ac01ea8
+  type_id: 0x91e1257a
+  full_name: "drm_edid_to_sad"
+}
+elf_symbol {
+  id: 0x2dd89a0f
+  name: "drm_encoder_cleanup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5dcb3db3
+  type_id: 0x1b255e4a
+  full_name: "drm_encoder_cleanup"
+}
+elf_symbol {
+  id: 0x6ea79777
+  name: "drm_encoder_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1195f64a
+  type_id: 0x93f7ef8a
+  full_name: "drm_encoder_init"
+}
+elf_symbol {
+  id: 0x99beb7c8
+  name: "drm_event_cancel_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1c10ee98
+  type_id: 0x1e4577e0
+  full_name: "drm_event_cancel_free"
+}
+elf_symbol {
+  id: 0x0ba86fe5
+  name: "drm_event_reserve_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5d3c2069
+  type_id: 0x930bf787
+  full_name: "drm_event_reserve_init"
+}
+elf_symbol {
+  id: 0x90dbe313
+  name: "drm_event_reserve_init_locked"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xedb033ca
+  type_id: 0x930bf787
+  full_name: "drm_event_reserve_init_locked"
+}
+elf_symbol {
+  id: 0x49d641ae
+  name: "drm_firmware_drivers_only"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfffa4690
+  type_id: 0xfea45b04
+  full_name: "drm_firmware_drivers_only"
+}
+elf_symbol {
+  id: 0x9d83d0f8
+  name: "drm_flip_work_cleanup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd60ff1c2
+  type_id: 0x1932531b
+  full_name: "drm_flip_work_cleanup"
+}
+elf_symbol {
+  id: 0x11744540
+  name: "drm_flip_work_commit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x24a2ed2c
+  type_id: 0x197db1c7
+  full_name: "drm_flip_work_commit"
+}
+elf_symbol {
+  id: 0x4b6be7d2
+  name: "drm_flip_work_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x737100b1
+  type_id: 0x19cc7303
+  full_name: "drm_flip_work_init"
+}
+elf_symbol {
+  id: 0x02f0a645
+  name: "drm_flip_work_queue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdcb59b84
+  type_id: 0x1950a68f
+  full_name: "drm_flip_work_queue"
+}
+elf_symbol {
+  id: 0xaad93a6e
+  name: "drm_format_info"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x55eb38da
+  type_id: 0x7885d99e
+  full_name: "drm_format_info"
+}
+elf_symbol {
+  id: 0x820af79e
+  name: "drm_format_info_block_height"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x982d09b3
+  type_id: 0xc21e59d8
+  full_name: "drm_format_info_block_height"
+}
+elf_symbol {
+  id: 0xf5a866d4
+  name: "drm_format_info_block_width"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x74fc6fbd
+  type_id: 0xc21e59d8
+  full_name: "drm_format_info_block_width"
+}
+elf_symbol {
+  id: 0x9c6b68f2
+  name: "drm_framebuffer_cleanup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbf1c6c9f
+  type_id: 0x1cea7cc2
+  full_name: "drm_framebuffer_cleanup"
+}
+elf_symbol {
+  id: 0x8ab89d74
+  name: "drm_framebuffer_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2064415b
+  type_id: 0x93898074
+  full_name: "drm_framebuffer_init"
+}
+elf_symbol {
+  id: 0x717f2784
+  name: "drm_framebuffer_lookup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x65005562
+  type_id: 0xa807a3b8
+  full_name: "drm_framebuffer_lookup"
+}
+elf_symbol {
+  id: 0x3bd21ada
+  name: "drm_framebuffer_remove"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa29533ba
+  type_id: 0x1cea7cc2
+  full_name: "drm_framebuffer_remove"
+}
+elf_symbol {
+  id: 0x88d310ca
+  name: "drm_framebuffer_unregister_private"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb7188bfc
+  type_id: 0x1cea7cc2
+  full_name: "drm_framebuffer_unregister_private"
+}
+elf_symbol {
+  id: 0x596f41bc
+  name: "drm_gem_cleanup_shadow_fb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x25d83091
+  type_id: 0x16ebcbfa
+  full_name: "drm_gem_cleanup_shadow_fb"
+}
+elf_symbol {
+  id: 0xcf21a814
+  name: "drm_gem_create_mmap_offset"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6155f315
+  type_id: 0x9398dfdf
+  full_name: "drm_gem_create_mmap_offset"
+}
+elf_symbol {
+  id: 0x81bdff8a
+  name: "drm_gem_dmabuf_mmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x538bb841
+  type_id: 0x9d9aa0c3
+  full_name: "drm_gem_dmabuf_mmap"
+}
+elf_symbol {
+  id: 0xeba98304
+  name: "drm_gem_dmabuf_release"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x65a8f6cf
+  type_id: 0x10aa5f7a
+  full_name: "drm_gem_dmabuf_release"
+}
+elf_symbol {
+  id: 0x48e94357
+  name: "drm_gem_dmabuf_vmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2f78eeda
+  type_id: 0x9d4e84a4
+  full_name: "drm_gem_dmabuf_vmap"
+}
+elf_symbol {
+  id: 0x6cbff317
+  name: "drm_gem_dmabuf_vunmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x25ef7fae
+  type_id: 0x10563618
+  full_name: "drm_gem_dmabuf_vunmap"
+}
+elf_symbol {
+  id: 0xc7970f23
+  name: "drm_gem_fb_begin_cpu_access"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc0442599
+  type_id: 0x92c4ddf1
+  full_name: "drm_gem_fb_begin_cpu_access"
+}
+elf_symbol {
+  id: 0x5758ca8d
+  name: "drm_gem_fb_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2600959a
+  type_id: 0xa80d1860
+  full_name: "drm_gem_fb_create"
+}
+elf_symbol {
+  id: 0x8f687080
+  name: "drm_gem_fb_create_handle"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x102d4c0d
+  type_id: 0x91bfa9d8
+  full_name: "drm_gem_fb_create_handle"
+}
+elf_symbol {
+  id: 0x128b55c8
+  name: "drm_gem_fb_destroy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb9772d9d
+  type_id: 0x1cea7cc2
+  full_name: "drm_gem_fb_destroy"
+}
+elf_symbol {
+  id: 0xd2191311
+  name: "drm_gem_fb_get_obj"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaa830a18
+  type_id: 0x0bfc976c
+  full_name: "drm_gem_fb_get_obj"
+}
+elf_symbol {
+  id: 0xd4a13963
+  name: "drm_gem_fb_vmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0e6534ed
+  type_id: 0x9101618a
+  full_name: "drm_gem_fb_vmap"
+}
+elf_symbol {
+  id: 0xa09bde3a
+  name: "drm_gem_fb_vunmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x74889048
+  type_id: 0x1c1615a0
+  full_name: "drm_gem_fb_vunmap"
+}
+elf_symbol {
+  id: 0xaef6523a
+  name: "drm_gem_free_mmap_offset"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6b655eeb
+  type_id: 0x1e806d63
+  full_name: "drm_gem_free_mmap_offset"
+}
+elf_symbol {
+  id: 0xef97e722
+  name: "drm_gem_get_pages"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7bb2b1f8
+  type_id: 0xe2823805
+  full_name: "drm_gem_get_pages"
+}
+elf_symbol {
+  id: 0x026b095a
+  name: "drm_gem_handle_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3de8eeab
+  type_id: 0x99d6eb87
+  full_name: "drm_gem_handle_create"
+}
+elf_symbol {
+  id: 0xf76bbee4
+  name: "drm_gem_lock_reservations"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe094d76b
+  type_id: 0x9d356d81
+  full_name: "drm_gem_lock_reservations"
+}
+elf_symbol {
+  id: 0x91de51a1
+  name: "drm_gem_lru_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x57f6f423
+  type_id: 0x1d96cba6
+  full_name: "drm_gem_lru_init"
+}
+elf_symbol {
+  id: 0x007e9802
+  name: "drm_gem_lru_move_tail"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0d74e5ea
+  type_id: 0x1dfacbed
+  full_name: "drm_gem_lru_move_tail"
+}
+elf_symbol {
+  id: 0x419b2e18
+  name: "drm_gem_lru_scan"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9376e221
+  type_id: 0x3d3888de
+  full_name: "drm_gem_lru_scan"
+}
+elf_symbol {
+  id: 0x4ba4b7e9
+  name: "drm_gem_map_attach"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x92c4ebd3
+  type_id: 0x9dc78915
+  full_name: "drm_gem_map_attach"
+}
+elf_symbol {
+  id: 0xcc23e671
+  name: "drm_gem_map_detach"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xffcad51d
+  type_id: 0x10df3ba9
+  full_name: "drm_gem_map_detach"
+}
+elf_symbol {
+  id: 0x1486d528
+  name: "drm_gem_map_dma_buf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xae7e92e2
+  type_id: 0x451c3ee7
+  full_name: "drm_gem_map_dma_buf"
+}
+elf_symbol {
+  id: 0x872c1847
+  name: "drm_gem_mmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x90694ef5
+  type_id: 0x9b923492
+  full_name: "drm_gem_mmap"
+}
+elf_symbol {
+  id: 0x4788e5d1
+  name: "drm_gem_mmap_obj"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x62be7bae
+  type_id: 0x93578e9d
+  full_name: "drm_gem_mmap_obj"
+}
+elf_symbol {
+  id: 0x03bbf55f
+  name: "drm_gem_object_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd680a377
+  type_id: 0x14cd8502
+  full_name: "drm_gem_object_free"
+}
+elf_symbol {
+  id: 0x49176259
+  name: "drm_gem_object_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9c19c481
+  type_id: 0x939d4211
+  full_name: "drm_gem_object_init"
+}
+elf_symbol {
+  id: 0xc155b6bb
+  name: "drm_gem_object_lookup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1e4ed7f7
+  type_id: 0x010530e2
+  full_name: "drm_gem_object_lookup"
+}
+elf_symbol {
+  id: 0xfcbea4f3
+  name: "drm_gem_object_release"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf527d31d
+  type_id: 0x1e806d63
+  full_name: "drm_gem_object_release"
+}
+elf_symbol {
+  id: 0xcd83af95
+  name: "drm_gem_plane_helper_prepare_fb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa10b54fd
+  type_id: 0x9bf37946
+  full_name: "drm_gem_plane_helper_prepare_fb"
+}
+elf_symbol {
+  id: 0xac7ce6db
+  name: "drm_gem_prepare_shadow_fb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9f8ed18b
+  type_id: 0x9bf37946
+  full_name: "drm_gem_prepare_shadow_fb"
+}
+elf_symbol {
+  id: 0x82fd8719
+  name: "drm_gem_prime_export"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9bd849a5
+  type_id: 0x45a8a3c4
+  full_name: "drm_gem_prime_export"
+}
+elf_symbol {
+  id: 0x8abb34fd
+  name: "drm_gem_prime_fd_to_handle"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x90243c97
+  type_id: 0x9313a933
+  full_name: "drm_gem_prime_fd_to_handle"
+}
+elf_symbol {
+  id: 0x9446177d
+  name: "drm_gem_prime_handle_to_fd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf15a8008
+  type_id: 0x930d2c35
+  full_name: "drm_gem_prime_handle_to_fd"
+}
+elf_symbol {
+  id: 0x6bfc59a2
+  name: "drm_gem_prime_import"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb492b9dd
+  type_id: 0x085aa0e0
+  full_name: "drm_gem_prime_import"
+}
+elf_symbol {
+  id: 0xa1e811bb
+  name: "drm_gem_prime_import_dev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x25097918
+  type_id: 0x085a36de
+  full_name: "drm_gem_prime_import_dev"
+}
+elf_symbol {
+  id: 0x08ad4333
+  name: "drm_gem_prime_mmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc33358fe
+  type_id: 0x93b092da
+  full_name: "drm_gem_prime_mmap"
+}
+elf_symbol {
+  id: 0x13aa17f1
+  name: "drm_gem_private_object_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9a5c1e53
+  type_id: 0x1e85f0ad
+  full_name: "drm_gem_private_object_init"
+}
+elf_symbol {
+  id: 0x91880d1c
+  name: "drm_gem_put_pages"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x179b8dd3
+  type_id: 0x1eb644f1
+  full_name: "drm_gem_put_pages"
+}
+elf_symbol {
+  id: 0x6dcd08f1
+  name: "drm_gem_shmem_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe79800a2
+  type_id: 0x3ab949d4
+  full_name: "drm_gem_shmem_create"
+}
+elf_symbol {
+  id: 0xe425a1d5
+  name: "drm_gem_shmem_dumb_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0c4fbcc8
+  type_id: 0x99de09ef
+  full_name: "drm_gem_shmem_dumb_create"
+}
+elf_symbol {
+  id: 0x20389b58
+  name: "drm_gem_shmem_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf809058c
+  type_id: 0x1793895b
+  full_name: "drm_gem_shmem_free"
+}
+elf_symbol {
+  id: 0x1bc0f1da
+  name: "drm_gem_shmem_get_pages_sgt"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3f8a24ea
+  type_id: 0x4677b893
+  full_name: "drm_gem_shmem_get_pages_sgt"
+}
+elf_symbol {
+  id: 0xdfdc728c
+  name: "drm_gem_shmem_get_sg_table"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe68d1091
+  type_id: 0x4677b893
+  full_name: "drm_gem_shmem_get_sg_table"
+}
+elf_symbol {
+  id: 0x3e11441d
+  name: "drm_gem_shmem_mmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5cab3499
+  type_id: 0x9aa376e2
+  full_name: "drm_gem_shmem_mmap"
+}
+elf_symbol {
+  id: 0x63b3c289
+  name: "drm_gem_shmem_pin"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf6bc8503
+  type_id: 0x9a8b3be7
+  full_name: "drm_gem_shmem_pin"
+}
+elf_symbol {
+  id: 0xcce09c63
+  name: "drm_gem_shmem_prime_import_sg_table"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9ee3cd8a
+  type_id: 0x082ccdd1
+  full_name: "drm_gem_shmem_prime_import_sg_table"
+}
+elf_symbol {
+  id: 0x9ed2eb17
+  name: "drm_gem_shmem_print_info"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbc55221d
+  type_id: 0x1e2a3205
+  full_name: "drm_gem_shmem_print_info"
+}
+elf_symbol {
+  id: 0x749b5136
+  name: "drm_gem_shmem_unpin"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x256f4cc0
+  type_id: 0x1793895b
+  full_name: "drm_gem_shmem_unpin"
+}
+elf_symbol {
+  id: 0x29df50d6
+  name: "drm_gem_shmem_vm_ops"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xaa176f21
+  type_id: 0xf5901b02
+  full_name: "drm_gem_shmem_vm_ops"
+}
+elf_symbol {
+  id: 0x28ede1f0
+  name: "drm_gem_shmem_vmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0908408a
+  type_id: 0x9a775285
+  full_name: "drm_gem_shmem_vmap"
+}
+elf_symbol {
+  id: 0xeceb786e
+  name: "drm_gem_shmem_vunmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1df894c8
+  type_id: 0x176fe039
+  full_name: "drm_gem_shmem_vunmap"
+}
+elf_symbol {
+  id: 0x07345b6b
+  name: "drm_gem_unlock_reservations"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd0c8b487
+  type_id: 0x102ddf3d
+  full_name: "drm_gem_unlock_reservations"
+}
+elf_symbol {
+  id: 0xcc20f1d4
+  name: "drm_gem_unmap_dma_buf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa801438f
+  type_id: 0x17ffed59
+  full_name: "drm_gem_unmap_dma_buf"
+}
+elf_symbol {
+  id: 0x4f51620f
+  name: "drm_gem_vm_close"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7b3d61be
+  type_id: 0x121c81c2
+  full_name: "drm_gem_vm_close"
+}
+elf_symbol {
+  id: 0xf54df6a8
+  name: "drm_gem_vm_open"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x579d1817
+  type_id: 0x121c81c2
+  full_name: "drm_gem_vm_open"
+}
+elf_symbol {
+  id: 0xabd8ab71
+  name: "drm_get_connector_status_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0fd60df2
+  type_id: 0x80d014d1
+  full_name: "drm_get_connector_status_name"
+}
+elf_symbol {
+  id: 0xe52ce78e
+  name: "drm_get_connector_type_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf406e46a
+  type_id: 0x83254e2c
+  full_name: "drm_get_connector_type_name"
+}
+elf_symbol {
+  id: 0xc64f37ff
+  name: "drm_get_edid"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5efab667
+  type_id: 0xc21fedbe
+  full_name: "drm_get_edid"
+}
+elf_symbol {
+  id: 0xd8e2fc20
+  name: "drm_get_format_info"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x92b20fb2
+  type_id: 0x44ddb78b
+  full_name: "drm_get_format_info"
+}
+elf_symbol {
+  id: 0x2a521f90
+  name: "drm_handle_vblank"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7d9ce96b
+  type_id: 0xf1736137
+  full_name: "drm_handle_vblank"
+}
+elf_symbol {
+  id: 0xe5568c92
+  name: "drm_hdmi_avi_infoframe_from_display_mode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x796e4d0e
+  type_id: 0x99c0ccec
+  full_name: "drm_hdmi_avi_infoframe_from_display_mode"
+}
+elf_symbol {
+  id: 0x2a53ebba
+  name: "drm_hdmi_avi_infoframe_quant_range"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x229ed5dc
+  type_id: 0x14d9bc35
+  full_name: "drm_hdmi_avi_infoframe_quant_range"
+}
+elf_symbol {
+  id: 0xebe5f6cf
+  name: "drm_hdmi_vendor_infoframe_from_display_mode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc2b73ddd
+  type_id: 0x92320486
+  full_name: "drm_hdmi_vendor_infoframe_from_display_mode"
+}
+elf_symbol {
+  id: 0x80d03c2c
+  name: "drm_helper_connector_dpms"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x326e158c
+  type_id: 0x907109f8
+  full_name: "drm_helper_connector_dpms"
+}
+elf_symbol {
+  id: 0xf8c3c062
+  name: "drm_helper_disable_unused_functions"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x08c48fca
+  type_id: 0x1e597e38
+  full_name: "drm_helper_disable_unused_functions"
+}
+elf_symbol {
+  id: 0xc00007fe
+  name: "drm_helper_force_disable_all"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x387d5458
+  type_id: 0x9341cc84
+  full_name: "drm_helper_force_disable_all"
+}
+elf_symbol {
+  id: 0x213004ed
+  name: "drm_helper_hpd_irq_event"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfe9c9482
+  type_id: 0xf06574af
+  full_name: "drm_helper_hpd_irq_event"
+}
+elf_symbol {
+  id: 0xc62eba2d
+  name: "drm_helper_mode_fill_fb_struct"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x76a96b53
+  type_id: 0x1e93e85a
+  full_name: "drm_helper_mode_fill_fb_struct"
+}
+elf_symbol {
+  id: 0x0869dd10
+  name: "drm_helper_move_panel_connectors_to_head"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2d6b3864
+  type_id: 0x1e597e38
+  full_name: "drm_helper_move_panel_connectors_to_head"
+}
+elf_symbol {
+  id: 0x25989156
+  name: "drm_helper_probe_single_connector_modes"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6dc86f5a
+  type_id: 0x919a7322
+  full_name: "drm_helper_probe_single_connector_modes"
+}
+elf_symbol {
+  id: 0x3a6e27e9
+  name: "drm_ioctl"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5ba71db3
+  type_id: 0xa00069e0
+  full_name: "drm_ioctl"
+}
+elf_symbol {
+  id: 0xec79cf1c
+  name: "drm_is_current_master"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe7ab81f3
+  type_id: 0xfa1de4ef
+  full_name: "drm_is_current_master"
+}
+elf_symbol {
+  id: 0x8a043efe
+  name: "drm_kms_helper_hotplug_event"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x407f8acf
+  type_id: 0x1e597e38
+  full_name: "drm_kms_helper_hotplug_event"
+}
+elf_symbol {
+  id: 0xb6107be5
+  name: "drm_kms_helper_is_poll_worker"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5a4734d1
+  type_id: 0xfea45b04
+  full_name: "drm_kms_helper_is_poll_worker"
+}
+elf_symbol {
+  id: 0x3c6b600d
+  name: "drm_kms_helper_poll_disable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xff84cea9
+  type_id: 0x1e597e38
+  full_name: "drm_kms_helper_poll_disable"
+}
+elf_symbol {
+  id: 0x24bd5fa6
+  name: "drm_kms_helper_poll_enable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9c77bbab
+  type_id: 0x1e597e38
+  full_name: "drm_kms_helper_poll_enable"
+}
+elf_symbol {
+  id: 0xf459d14d
+  name: "drm_kms_helper_poll_fini"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x171dda3d
+  type_id: 0x1e597e38
+  full_name: "drm_kms_helper_poll_fini"
+}
+elf_symbol {
+  id: 0x1184def8
+  name: "drm_kms_helper_poll_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x804f93eb
+  type_id: 0x1e597e38
+  full_name: "drm_kms_helper_poll_init"
+}
+elf_symbol {
+  id: 0x3528c036
+  name: "drm_master_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb7880c5c
+  type_id: 0xf6814266
+  full_name: "drm_master_get"
+}
+elf_symbol {
+  id: 0xdc5e3703
+  name: "drm_master_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x968463c5
+  type_id: 0x12493d73
+  full_name: "drm_master_put"
+}
+elf_symbol {
+  id: 0x51bef211
+  name: "drm_match_cea_mode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9b285573
+  type_id: 0x5e29431a
+  full_name: "drm_match_cea_mode"
+}
+elf_symbol {
+  id: 0xe078eb3a
+  name: "drm_mm_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf0517d7a
+  type_id: 0x18a0bc95
+  full_name: "drm_mm_init"
+}
+elf_symbol {
+  id: 0x93c0dba2
+  name: "drm_mm_insert_node_in_range"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb4032484
+  type_id: 0x9768d538
+  full_name: "drm_mm_insert_node_in_range"
+}
+elf_symbol {
+  id: 0xd7cfff98
+  name: "drm_mm_print"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0f7acb66
+  type_id: 0x1d6c9f2f
+  full_name: "drm_mm_print"
+}
+elf_symbol {
+  id: 0xecb4d16d
+  name: "drm_mm_remove_node"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4b7ebf95
+  type_id: 0x19394f8b
+  full_name: "drm_mm_remove_node"
+}
+elf_symbol {
+  id: 0x3b867568
+  name: "drm_mm_scan_add_block"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2183c08c
+  type_id: 0xf309ac48
+  full_name: "drm_mm_scan_add_block"
+}
+elf_symbol {
+  id: 0xc5806cb6
+  name: "drm_mm_scan_init_with_range"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2a962499
+  type_id: 0x1d2c375c
+  full_name: "drm_mm_scan_init_with_range"
+}
+elf_symbol {
+  id: 0xd48e0164
+  name: "drm_mm_scan_remove_block"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5f7985a5
+  type_id: 0xf309ac48
+  full_name: "drm_mm_scan_remove_block"
+}
+elf_symbol {
+  id: 0xe28bc96f
+  name: "drm_mm_takedown"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x57698a50
+  type_id: 0x1accb897
+  full_name: "drm_mm_takedown"
+}
+elf_symbol {
+  id: 0xab46a3c7
+  name: "drm_mode_config_cleanup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x84a1c450
+  type_id: 0x1e597e38
+  full_name: "drm_mode_config_cleanup"
+}
+elf_symbol {
+  id: 0x385bff4a
+  name: "drm_mode_config_helper_resume"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6ae48cc1
+  type_id: 0x9341cc84
+  full_name: "drm_mode_config_helper_resume"
+}
+elf_symbol {
+  id: 0xd219907d
+  name: "drm_mode_config_helper_suspend"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x23b0ed30
+  type_id: 0x9341cc84
+  full_name: "drm_mode_config_helper_suspend"
+}
+elf_symbol {
+  id: 0x1117f3c4
+  name: "drm_mode_config_reset"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc6c97ad1
+  type_id: 0x1e597e38
+  full_name: "drm_mode_config_reset"
+}
+elf_symbol {
+  id: 0x2b1419da
+  name: "drm_mode_convert_to_umode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4694508f
+  type_id: 0x1b6452d7
+  full_name: "drm_mode_convert_to_umode"
+}
+elf_symbol {
+  id: 0x684e3e45
+  name: "drm_mode_convert_umode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbb05a12a
+  type_id: 0x93e73189
+  full_name: "drm_mode_convert_umode"
+}
+elf_symbol {
+  id: 0xd4a7d3d3
+  name: "drm_mode_copy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9ce050be
+  type_id: 0x1af1d754
+  full_name: "drm_mode_copy"
+}
+elf_symbol {
+  id: 0x51184dc0
+  name: "drm_mode_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2af6b387
+  type_id: 0xc72431aa
+  full_name: "drm_mode_create"
+}
+elf_symbol {
+  id: 0xf5b01d8e
+  name: "drm_mode_create_dp_colorspace_property"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x50d133c8
+  type_id: 0x91ed8ab4
+  full_name: "drm_mode_create_dp_colorspace_property"
+}
+elf_symbol {
+  id: 0xbe3f1757
+  name: "drm_mode_create_hdmi_colorspace_property"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1f6573f0
+  type_id: 0x91ed8ab4
+  full_name: "drm_mode_create_hdmi_colorspace_property"
+}
+elf_symbol {
+  id: 0x64649d2c
+  name: "drm_mode_create_scaling_mode_property"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2dccd709
+  type_id: 0x9341cc84
+  full_name: "drm_mode_create_scaling_mode_property"
+}
+elf_symbol {
+  id: 0x51b5201f
+  name: "drm_mode_create_tile_group"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaf6f0663
+  type_id: 0x42ee3dd4
+  full_name: "drm_mode_create_tile_group"
+}
+elf_symbol {
+  id: 0x58b810bd
+  name: "drm_mode_crtc_set_gamma_size"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x79b7fe4c
+  type_id: 0x904abfe3
+  full_name: "drm_mode_crtc_set_gamma_size"
+}
+elf_symbol {
+  id: 0x23e302cb
+  name: "drm_mode_debug_printmodeline"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2ed3c600
+  type_id: 0x1dfbacfe
+  full_name: "drm_mode_debug_printmodeline"
+}
+elf_symbol {
+  id: 0x9a3d3812
+  name: "drm_mode_destroy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9b791841
+  type_id: 0x1ef285a9
+  full_name: "drm_mode_destroy"
+}
+elf_symbol {
+  id: 0xe4ede23d
+  name: "drm_mode_duplicate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xff193a01
+  type_id: 0xc7f20e7c
+  full_name: "drm_mode_duplicate"
+}
+elf_symbol {
+  id: 0xa6782aae
+  name: "drm_mode_equal"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0d9b4753
+  type_id: 0xf31199bf
+  full_name: "drm_mode_equal"
+}
+elf_symbol {
+  id: 0x648de106
+  name: "drm_mode_equal_no_clocks"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3ab87110
+  type_id: 0xf31199bf
+  full_name: "drm_mode_equal_no_clocks"
+}
+elf_symbol {
+  id: 0xe96cf682
+  name: "drm_mode_find_dmt"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x50a2e72f
+  type_id: 0xc6a0fd0e
+  full_name: "drm_mode_find_dmt"
+}
+elf_symbol {
+  id: 0xca851619
+  name: "drm_mode_is_420_also"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9f7fbed2
+  type_id: 0xf10b3730
+  full_name: "drm_mode_is_420_also"
+}
+elf_symbol {
+  id: 0x6a50bad9
+  name: "drm_mode_is_420_only"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0d7e35e2
+  type_id: 0xf10b3730
+  full_name: "drm_mode_is_420_only"
+}
+elf_symbol {
+  id: 0x1183a93d
+  name: "drm_mode_match"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9b95c885
+  type_id: 0xf300f8e6
+  full_name: "drm_mode_match"
+}
+elf_symbol {
+  id: 0x86f4fe83
+  name: "drm_mode_object_find"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdcea725a
+  type_id: 0x6650c8f2
+  full_name: "drm_mode_object_find"
+}
+elf_symbol {
+  id: 0x318e4c55
+  name: "drm_mode_object_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x436ff9a6
+  type_id: 0x1cab6a11
+  full_name: "drm_mode_object_get"
+}
+elf_symbol {
+  id: 0xa19887cb
+  name: "drm_mode_object_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfdff984a
+  type_id: 0x1cab6a11
+  full_name: "drm_mode_object_put"
+}
+elf_symbol {
+  id: 0xc6047029
+  name: "drm_mode_probed_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x88f2da8e
+  type_id: 0x1c5ec399
+  full_name: "drm_mode_probed_add"
+}
+elf_symbol {
+  id: 0xa1f845d9
+  name: "drm_mode_prune_invalid"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1e2f859d
+  type_id: 0x1ebba908
+  full_name: "drm_mode_prune_invalid"
+}
+elf_symbol {
+  id: 0x76120529
+  name: "drm_mode_set_crtcinfo"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4575a0ca
+  type_id: 0x1bbb6bce
+  full_name: "drm_mode_set_crtcinfo"
+}
+elf_symbol {
+  id: 0x7a8a4736
+  name: "drm_mode_set_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4a35d30d
+  type_id: 0x1a27e882
+  full_name: "drm_mode_set_name"
+}
+elf_symbol {
+  id: 0x3f8952ab
+  name: "drm_mode_sort"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf1421d13
+  type_id: 0x1f00dfeb
+  full_name: "drm_mode_sort"
+}
+elf_symbol {
+  id: 0x4e6bfabc
+  name: "drm_mode_vrefresh"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf1b5340a
+  type_id: 0x90e31e42
+  full_name: "drm_mode_vrefresh"
+}
+elf_symbol {
+  id: 0x935fb0ee
+  name: "drm_modeset_acquire_fini"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd285aec8
+  type_id: 0x107b2810
+  full_name: "drm_modeset_acquire_fini"
+}
+elf_symbol {
+  id: 0xe5fad629
+  name: "drm_modeset_acquire_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x45e603b8
+  type_id: 0x100bdee9
+  full_name: "drm_modeset_acquire_init"
+}
+elf_symbol {
+  id: 0x1ef4279a
+  name: "drm_modeset_backoff"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaa79b4d4
+  type_id: 0x9d639aac
+  full_name: "drm_modeset_backoff"
+}
+elf_symbol {
+  id: 0x0257011e
+  name: "drm_modeset_drop_locks"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8e53256f
+  type_id: 0x107b2810
+  full_name: "drm_modeset_drop_locks"
+}
+elf_symbol {
+  id: 0xd4965634
+  name: "drm_modeset_lock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb9e8c048
+  type_id: 0x97fa70fd
+  full_name: "drm_modeset_lock"
+}
+elf_symbol {
+  id: 0xc8e287ec
+  name: "drm_modeset_lock_all"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0acb485d
+  type_id: 0x1e597e38
+  full_name: "drm_modeset_lock_all"
+}
+elf_symbol {
+  id: 0x8989926a
+  name: "drm_modeset_lock_all_ctx"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x35a47ef7
+  type_id: 0x934ffb1c
+  full_name: "drm_modeset_lock_all_ctx"
+}
+elf_symbol {
+  id: 0x09dc1a73
+  name: "drm_modeset_lock_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd152a9c2
+  type_id: 0x1aecf5d9
+  full_name: "drm_modeset_lock_init"
+}
+elf_symbol {
+  id: 0x8c78342c
+  name: "drm_modeset_lock_single_interruptible"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x33020bb7
+  type_id: 0x97f44765
+  full_name: "drm_modeset_lock_single_interruptible"
+}
+elf_symbol {
+  id: 0xac1fc3ae
+  name: "drm_modeset_unlock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1c6b0af8
+  type_id: 0x1aecf5d9
+  full_name: "drm_modeset_unlock"
+}
+elf_symbol {
+  id: 0x75cad5a4
+  name: "drm_modeset_unlock_all"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdb83f850
+  type_id: 0x1e597e38
+  full_name: "drm_modeset_unlock_all"
+}
+elf_symbol {
+  id: 0xd8c18cec
+  name: "drm_object_attach_property"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa831bbd6
+  type_id: 0x1c05d45f
+  full_name: "drm_object_attach_property"
+}
+elf_symbol {
+  id: 0x0cf86849
+  name: "drm_object_property_set_value"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x94569246
+  type_id: 0x911d66e3
+  full_name: "drm_object_property_set_value"
+}
+elf_symbol {
+  id: 0x6f8184d5
+  name: "drm_of_component_match_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xca177a25
+  type_id: 0x102ab9fb
+  full_name: "drm_of_component_match_add"
+}
+elf_symbol {
+  id: 0x8aa099dd
+  name: "drm_of_component_probe"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe8ff752d
+  type_id: 0x9dad5a62
+  full_name: "drm_of_component_probe"
+}
+elf_symbol {
+  id: 0x122e3e9f
+  name: "drm_of_encoder_active_endpoint"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb4f650f2
+  type_id: 0x902700eb
+  full_name: "drm_of_encoder_active_endpoint"
+}
+elf_symbol {
+  id: 0xc0d6517a
+  name: "drm_of_find_panel_or_bridge"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x362dce3f
+  type_id: 0x908eb1a6
+  full_name: "drm_of_find_panel_or_bridge"
+}
+elf_symbol {
+  id: 0xd479c471
+  name: "drm_of_find_possible_crtcs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xabd12d1d
+  type_id: 0x3d0f6874
+  full_name: "drm_of_find_possible_crtcs"
+}
+elf_symbol {
+  id: 0x3a2aa84b
+  name: "drm_of_get_data_lanes_count"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0be2a50a
+  type_id: 0x900cb4fc
+  full_name: "drm_of_get_data_lanes_count"
+}
+elf_symbol {
+  id: 0x124ae77d
+  name: "drm_open"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd8d401cc
+  type_id: 0x9b022eae
+  full_name: "drm_open"
+}
+elf_symbol {
+  id: 0xdc6725cf
+  name: "drm_panel_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb6b95897
+  type_id: 0x14800eb8
+  full_name: "drm_panel_add"
+}
+elf_symbol {
+  id: 0xd67ad69f
+  name: "drm_panel_bridge_add_typed"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7b814dbf
+  type_id: 0x9d2263c5
+  full_name: "drm_panel_bridge_add_typed"
+}
+elf_symbol {
+  id: 0x48cde8a9
+  name: "drm_panel_bridge_connector"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xffd1066c
+  type_id: 0xaa55ab2e
+  full_name: "drm_panel_bridge_connector"
+}
+elf_symbol {
+  id: 0x633d0644
+  name: "drm_panel_bridge_remove"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd6879c9a
+  type_id: 0x19026802
+  full_name: "drm_panel_bridge_remove"
+}
+elf_symbol {
+  id: 0x213cfa4f
+  name: "drm_panel_disable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x536b2dec
+  type_id: 0x9998bc04
+  full_name: "drm_panel_disable"
+}
+elf_symbol {
+  id: 0xaaae7be8
+  name: "drm_panel_enable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf7c0b0e6
+  type_id: 0x9998bc04
+  full_name: "drm_panel_enable"
+}
+elf_symbol {
+  id: 0x06b3c598
+  name: "drm_panel_get_modes"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa0c334cd
+  type_id: 0x995e6a9d
+  full_name: "drm_panel_get_modes"
+}
+elf_symbol {
+  id: 0x3ad3ca2e
+  name: "drm_panel_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2d451166
+  type_id: 0x1486e519
+  full_name: "drm_panel_init"
+}
+elf_symbol {
+  id: 0xad1d778f
+  name: "drm_panel_of_backlight"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd9ab1d2d
+  type_id: 0x9998bc04
+  full_name: "drm_panel_of_backlight"
+}
+elf_symbol {
+  id: 0xcf81b673
+  name: "drm_panel_prepare"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4817ee32
+  type_id: 0x9998bc04
+  full_name: "drm_panel_prepare"
+}
+elf_symbol {
+  id: 0x864914fa
+  name: "drm_panel_remove"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x23456173
+  type_id: 0x14800eb8
+  full_name: "drm_panel_remove"
+}
+elf_symbol {
+  id: 0x046720ab
+  name: "drm_panel_unprepare"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf7113846
+  type_id: 0x9998bc04
+  full_name: "drm_panel_unprepare"
+}
+elf_symbol {
+  id: 0x3c07bbff
+  name: "drm_plane_cleanup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x625001a0
+  type_id: 0x1653799a
+  full_name: "drm_plane_cleanup"
+}
+elf_symbol {
+  id: 0xbdb562b1
+  name: "drm_plane_create_alpha_property"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7b0786ac
+  type_id: 0x9b4bcb26
+  full_name: "drm_plane_create_alpha_property"
+}
+elf_symbol {
+  id: 0x1f35127a
+  name: "drm_plane_create_blend_mode_property"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7900faf9
+  type_id: 0x9a5ddebe
+  full_name: "drm_plane_create_blend_mode_property"
+}
+elf_symbol {
+  id: 0x34b80a32
+  name: "drm_plane_create_color_properties"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeec1de9e
+  type_id: 0x985d3db9
+  full_name: "drm_plane_create_color_properties"
+}
+elf_symbol {
+  id: 0x93ab4714
+  name: "drm_plane_create_rotation_property"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd78a51ad
+  type_id: 0x9a4cbfe7
+  full_name: "drm_plane_create_rotation_property"
+}
+elf_symbol {
+  id: 0x198a2313
+  name: "drm_plane_create_scaling_filter_property"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x38974849
+  type_id: 0x9a5ddebe
+  full_name: "drm_plane_create_scaling_filter_property"
+}
+elf_symbol {
+  id: 0xd08fdb4b
+  name: "drm_plane_create_zpos_immutable_property"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5774c42d
+  type_id: 0x9a5ddebe
+  full_name: "drm_plane_create_zpos_immutable_property"
+}
+elf_symbol {
+  id: 0x9082bb51
+  name: "drm_plane_create_zpos_property"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbae937dc
+  type_id: 0x9a4da9f2
+  full_name: "drm_plane_create_zpos_property"
+}
+elf_symbol {
+  id: 0x87ced39a
+  name: "drm_plane_enable_fb_damage_clips"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe31b4dd7
+  type_id: 0x1653799a
+  full_name: "drm_plane_enable_fb_damage_clips"
+}
+elf_symbol {
+  id: 0x8984b2e1
+  name: "drm_poll"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf583b687
+  type_id: 0x25b50dfa
+  full_name: "drm_poll"
+}
+elf_symbol {
+  id: 0x22bf134d
+  name: "drm_prime_gem_destroy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbf9f5c36
+  type_id: 0x1e82fda2
+  full_name: "drm_prime_gem_destroy"
+}
+elf_symbol {
+  id: 0xee902d0d
+  name: "drm_prime_get_contiguous_size"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd05fda43
+  type_id: 0x3185c147
+  full_name: "drm_prime_get_contiguous_size"
+}
+elf_symbol {
+  id: 0x3cbc47c3
+  name: "drm_prime_pages_to_sg"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcb80fd42
+  type_id: 0x4f80ed11
+  full_name: "drm_prime_pages_to_sg"
+}
+elf_symbol {
+  id: 0xe3236156
+  name: "drm_prime_sg_to_dma_addr_array"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x44a2cadb
+  type_id: 0x9d7a49fd
+  full_name: "drm_prime_sg_to_dma_addr_array"
+}
+elf_symbol {
+  id: 0x8f6d52ff
+  name: "drm_prime_sg_to_page_array"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xae178337
+  type_id: 0x9d9ce4b7
+  full_name: "drm_prime_sg_to_page_array"
+}
+elf_symbol {
+  id: 0xb3c9d206
+  name: "drm_print_bits"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x32a0cc37
+  type_id: 0x1a857204
+  full_name: "drm_print_bits"
+}
+elf_symbol {
+  id: 0xcd5d6af6
+  name: "drm_printf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x28779e52
+  type_id: 0x1a972487
+  full_name: "drm_printf"
+}
+elf_symbol {
+  id: 0xac3356ce
+  name: "drm_probe_ddc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd745712b
+  type_id: 0xf7820d73
+  full_name: "drm_probe_ddc"
+}
+elf_symbol {
+  id: 0x0768ccdb
+  name: "drm_property_blob_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x37cd579b
+  type_id: 0x0c5304b6
+  full_name: "drm_property_blob_get"
+}
+elf_symbol {
+  id: 0x4310a9de
+  name: "drm_property_blob_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9fb721c3
+  type_id: 0x1d97feab
+  full_name: "drm_property_blob_put"
+}
+elf_symbol {
+  id: 0x65aa6e41
+  name: "drm_property_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x23f40da1
+  type_id: 0x9b73de6d
+  full_name: "drm_property_create"
+}
+elf_symbol {
+  id: 0xb85093db
+  name: "drm_property_create_bitmask"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8f2c8003
+  type_id: 0x9b72aafd
+  full_name: "drm_property_create_bitmask"
+}
+elf_symbol {
+  id: 0x3bb33b54
+  name: "drm_property_create_blob"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb4679f3d
+  type_id: 0x0c431641
+  full_name: "drm_property_create_blob"
+}
+elf_symbol {
+  id: 0x8da7c819
+  name: "drm_property_create_bool"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xee0cec09
+  type_id: 0x9b7242ee
+  full_name: "drm_property_create_bool"
+}
+elf_symbol {
+  id: 0x808bdf9f
+  name: "drm_property_create_enum"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6b5feaa7
+  type_id: 0x9b72aa8f
+  full_name: "drm_property_create_enum"
+}
+elf_symbol {
+  id: 0x7a4db2f9
+  name: "drm_property_create_range"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6ed99063
+  type_id: 0x9b7237ea
+  full_name: "drm_property_create_range"
+}
+elf_symbol {
+  id: 0xb96f3f15
+  name: "drm_property_create_signed_range"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0573f291
+  type_id: 0x9b738b6d
+  full_name: "drm_property_create_signed_range"
+}
+elf_symbol {
+  id: 0xafb178b7
+  name: "drm_property_destroy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4996144f
+  type_id: 0x1ef0e215
+  full_name: "drm_property_destroy"
+}
+elf_symbol {
+  id: 0xceb76dac
+  name: "drm_property_lookup_blob"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x328b60c8
+  type_id: 0x0fed72dc
+  full_name: "drm_property_lookup_blob"
+}
+elf_symbol {
+  id: 0xb1f5cc24
+  name: "drm_property_replace_blob"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xccdcc724
+  type_id: 0xff934450
+  full_name: "drm_property_replace_blob"
+}
+elf_symbol {
+  id: 0x9718e72e
+  name: "drm_puts"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x521ad6d0
+  type_id: 0x1abe6e05
+  full_name: "drm_puts"
+}
+elf_symbol {
+  id: 0x8da70bb5
+  name: "drm_read"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x868c4e79
+  type_id: 0x12e4741f
+  full_name: "drm_read"
+}
+elf_symbol {
+  id: 0xc84875f6
+  name: "drm_rect_calc_hscale"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2d50570f
+  type_id: 0x93141b15
+  full_name: "drm_rect_calc_hscale"
+}
+elf_symbol {
+  id: 0x81c987cc
+  name: "drm_rect_calc_vscale"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x91fec1cc
+  type_id: 0x93141b15
+  full_name: "drm_rect_calc_vscale"
+}
+elf_symbol {
+  id: 0x7f211ebf
+  name: "drm_rect_clip_scaled"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x99fd20aa
+  type_id: 0xf85bcb51
+  full_name: "drm_rect_clip_scaled"
+}
+elf_symbol {
+  id: 0x62aa5e8d
+  name: "drm_rect_intersect"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x871ab41a
+  type_id: 0xf8da8641
+  full_name: "drm_rect_intersect"
+}
+elf_symbol {
+  id: 0xa9f64e27
+  name: "drm_release"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x136961da
+  type_id: 0x9b022eae
+  full_name: "drm_release"
+}
+elf_symbol {
+  id: 0x4ba62142
+  name: "drm_rotation_simplify"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdf666902
+  type_id: 0xdeac32ec
+  full_name: "drm_rotation_simplify"
+}
+elf_symbol {
+  id: 0x39b330a8
+  name: "drm_self_refresh_helper_alter_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa0383ef0
+  type_id: 0x18d85efa
+  full_name: "drm_self_refresh_helper_alter_state"
+}
+elf_symbol {
+  id: 0xf7e03c16
+  name: "drm_self_refresh_helper_cleanup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeb36aaa9
+  type_id: 0x1cce8e13
+  full_name: "drm_self_refresh_helper_cleanup"
+}
+elf_symbol {
+  id: 0x879ed3f8
+  name: "drm_self_refresh_helper_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7864ccbf
+  type_id: 0x91d63caf
+  full_name: "drm_self_refresh_helper_init"
+}
+elf_symbol {
+  id: 0xd7bee2cf
+  name: "drm_send_event"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1b34279f
+  type_id: 0x1e4577e0
+  full_name: "drm_send_event"
+}
+elf_symbol {
+  id: 0x7826a8f0
+  name: "drm_send_event_locked"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd3bdbf49
+  type_id: 0x1e4577e0
+  full_name: "drm_send_event_locked"
+}
+elf_symbol {
+  id: 0x19652f5f
+  name: "drm_set_preferred_mode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xda9035aa
+  type_id: 0x1d707370
+  full_name: "drm_set_preferred_mode"
+}
+elf_symbol {
+  id: 0x78ae9c1c
+  name: "drm_simple_display_pipe_attach_bridge"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdfa5bc66
+  type_id: 0x9e08dfbb
+  full_name: "drm_simple_display_pipe_attach_bridge"
+}
+elf_symbol {
+  id: 0x3e16ebdf
+  name: "drm_simple_display_pipe_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9c1d9057
+  type_id: 0x937ca73d
+  full_name: "drm_simple_display_pipe_init"
+}
+elf_symbol {
+  id: 0xd5a30565
+  name: "drm_simple_encoder_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9cd11ef2
+  type_id: 0x93e3d44d
+  full_name: "drm_simple_encoder_init"
+}
+elf_symbol {
+  id: 0x7812c81e
+  name: "drm_state_dump"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x95ef2f30
+  type_id: 0x1ef499ec
+  full_name: "drm_state_dump"
+}
+elf_symbol {
+  id: 0xdae72f16
+  name: "drm_syncobj_add_point"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x95148682
+  type_id: 0x15766e8a
+  full_name: "drm_syncobj_add_point"
+}
+elf_symbol {
+  id: 0xc68f1830
+  name: "drm_syncobj_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xec33a47e
+  type_id: 0x9e21c007
+  full_name: "drm_syncobj_create"
+}
+elf_symbol {
+  id: 0x4cbe86f3
+  name: "drm_syncobj_find"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4a55d39b
+  type_id: 0xe211074d
+  full_name: "drm_syncobj_find"
+}
+elf_symbol {
+  id: 0xfad82b0b
+  name: "drm_syncobj_find_fence"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x11d19323
+  type_id: 0x9a3bbebc
+  full_name: "drm_syncobj_find_fence"
+}
+elf_symbol {
+  id: 0xb11bdc47
+  name: "drm_syncobj_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1a411479
+  type_id: 0x14cd8502
+  full_name: "drm_syncobj_free"
+}
+elf_symbol {
+  id: 0x28312a82
+  name: "drm_syncobj_get_fd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd5139d46
+  type_id: 0x9819e663
+  full_name: "drm_syncobj_get_fd"
+}
+elf_symbol {
+  id: 0xd001b20d
+  name: "drm_syncobj_get_handle"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbe017ad0
+  type_id: 0x996a2e1f
+  full_name: "drm_syncobj_get_handle"
+}
+elf_symbol {
+  id: 0x3b60a5fe
+  name: "drm_syncobj_replace_fence"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcdcde525
+  type_id: 0x15401a81
+  full_name: "drm_syncobj_replace_fence"
+}
+elf_symbol {
+  id: 0x1e7c4dd7
+  name: "drm_sysfs_connector_status_event"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x74794155
+  type_id: 0x1c5ca425
+  full_name: "drm_sysfs_connector_status_event"
+}
+elf_symbol {
+  id: 0xb8f84f03
+  name: "drm_universal_plane_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3c3cc9ae
+  type_id: 0x932a8871
+  full_name: "drm_universal_plane_init"
+}
+elf_symbol {
+  id: 0xad1fada2
+  name: "drm_vblank_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xae4c6cd9
+  type_id: 0x9257d91c
+  full_name: "drm_vblank_init"
+}
+elf_symbol {
+  id: 0x7993ff4e
+  name: "drm_wait_one_vblank"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf6883fb7
+  type_id: 0x1f4f6ba0
+  full_name: "drm_wait_one_vblank"
+}
+elf_symbol {
+  id: 0x9a93a123
+  name: "drm_writeback_cleanup_job"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xad76b5f8
+  type_id: 0x1a6f19ba
+  full_name: "drm_writeback_cleanup_job"
+}
+elf_symbol {
+  id: 0x2f0e7bff
+  name: "drm_writeback_connector_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7d3eca64
+  type_id: 0x93f3386e
+  full_name: "drm_writeback_connector_init"
+}
+elf_symbol {
+  id: 0x716e8cc6
+  name: "drm_writeback_connector_init_with_encoder"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2981e77a
+  type_id: 0x93f6a75b
+  full_name: "drm_writeback_connector_init_with_encoder"
+}
+elf_symbol {
+  id: 0xc6c1247d
+  name: "drm_writeback_queue_job"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd10bb800
+  type_id: 0x1be9f38e
+  full_name: "drm_writeback_queue_job"
+}
+elf_symbol {
+  id: 0x219eb62f
+  name: "drm_writeback_signal_completion"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x54156b4a
+  type_id: 0x1ac748a8
+  full_name: "drm_writeback_signal_completion"
+}
+elf_symbol {
+  id: 0xdaf34c14
+  name: "drmm_kfree"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7c64e338
+  type_id: 0x1e3b8bac
+  full_name: "drmm_kfree"
+}
+elf_symbol {
+  id: 0x1f1ab070
+  name: "drmm_kmalloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4898e38d
+  type_id: 0x5bbb224c
+  full_name: "drmm_kmalloc"
+}
+elf_symbol {
+  id: 0x66dcfd31
+  name: "drmm_mode_config_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4fc1b0fa
+  type_id: 0x9341cc84
+  full_name: "drmm_mode_config_init"
+}
+elf_symbol {
+  id: 0xe2b96ffd
+  name: "dst_cache_destroy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc6556f6c
+  type_id: 0x1ad2fd2b
+  full_name: "dst_cache_destroy"
+}
+elf_symbol {
+  id: 0x126bb89f
+  name: "dst_cache_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6afc552f
+  type_id: 0xaba1c9dd
+  full_name: "dst_cache_get"
+}
+elf_symbol {
+  id: 0x2e0e7810
+  name: "dst_cache_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x676e698a
+  type_id: 0x940cd4e8
+  full_name: "dst_cache_init"
+}
+elf_symbol {
+  id: 0x383fe893
+  name: "dst_cache_set_ip4"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x633308af
+  type_id: 0x1aa3070d
+  full_name: "dst_cache_set_ip4"
+}
+elf_symbol {
+  id: 0xa9bf10bc
+  name: "dst_cache_set_ip6"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x36de37e2
+  type_id: 0x1a954b21
+  full_name: "dst_cache_set_ip6"
+}
+elf_symbol {
+  id: 0xc70188be
+  name: "dst_release"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5fc9451b
+  type_id: 0x140e294e
+  full_name: "dst_release"
+}
+elf_symbol {
+  id: 0xded28924
+  name: "dump_backtrace"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8df11492
+  type_id: 0x10ab38c6
+  full_name: "dump_backtrace"
+}
+elf_symbol {
+  id: 0xe3421d56
+  name: "dump_stack"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6b2dc060
+  type_id: 0x10985193
+  full_name: "dump_stack"
+}
+elf_symbol {
+  id: 0xda364c85
+  name: "dw_handle_msi_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x96988127
+  type_id: 0x2ba2f0cc
+  full_name: "dw_handle_msi_irq"
+}
+elf_symbol {
+  id: 0x68e0756b
+  name: "dw_pcie_ep_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x43b44e6f
+  type_id: 0x9271fe5c
+  full_name: "dw_pcie_ep_init"
+}
+elf_symbol {
+  id: 0x12cb063e
+  name: "dw_pcie_ep_raise_legacy_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf09d0601
+  type_id: 0x92d48f94
+  full_name: "dw_pcie_ep_raise_legacy_irq"
+}
+elf_symbol {
+  id: 0x42636e32
+  name: "dw_pcie_ep_raise_msi_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x932837f5
+  type_id: 0x92ded888
+  full_name: "dw_pcie_ep_raise_msi_irq"
+}
+elf_symbol {
+  id: 0x9bb960df
+  name: "dw_pcie_ep_reset_bar"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb952045a
+  type_id: 0x1e32c371
+  full_name: "dw_pcie_ep_reset_bar"
+}
+elf_symbol {
+  id: 0xbf2af0d7
+  name: "dw_pcie_find_capability"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6f9700e1
+  type_id: 0x5ca118ca
+  full_name: "dw_pcie_find_capability"
+}
+elf_symbol {
+  id: 0xb8395a3e
+  name: "dw_pcie_host_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcbf1d5d0
+  type_id: 0x94e69702
+  full_name: "dw_pcie_host_init"
+}
+elf_symbol {
+  id: 0x9d898d75
+  name: "dw_pcie_own_conf_map_bus"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5dac11b1
+  type_id: 0x5f5b0712
+  full_name: "dw_pcie_own_conf_map_bus"
+}
+elf_symbol {
+  id: 0x9ec4a8cb
+  name: "dw_pcie_read"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7791e066
+  type_id: 0x9a3d0da3
+  full_name: "dw_pcie_read"
+}
+elf_symbol {
+  id: 0x9b31fd86
+  name: "dw_pcie_read_dbi"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf289559a
+  type_id: 0x49afd1e1
+  full_name: "dw_pcie_read_dbi"
+}
+elf_symbol {
+  id: 0xeb5f52cc
+  name: "dw_pcie_setup_rc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfb9a2564
+  type_id: 0x94e69702
+  full_name: "dw_pcie_setup_rc"
+}
+elf_symbol {
+  id: 0x16b47c46
+  name: "dw_pcie_wait_for_link"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x58bb4868
+  type_id: 0x92ce345a
+  full_name: "dw_pcie_wait_for_link"
+}
+elf_symbol {
+  id: 0xf52b6f8a
+  name: "dw_pcie_write"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbe9a83d5
+  type_id: 0x9a017b25
+  full_name: "dw_pcie_write"
+}
+elf_symbol {
+  id: 0x2475753e
+  name: "dw_pcie_write_dbi"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd8aa1383
+  type_id: 0x1ccc8f30
+  full_name: "dw_pcie_write_dbi"
+}
+elf_symbol {
+  id: 0x63e89795
+  name: "edac_device_add_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x74bc3cab
+  type_id: 0x9f266269
+  full_name: "edac_device_add_device"
+}
+elf_symbol {
+  id: 0xce8db673
+  name: "edac_device_alloc_ctl_info"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe794d435
+  type_id: 0xda32c714
+  full_name: "edac_device_alloc_ctl_info"
+}
+elf_symbol {
+  id: 0x9a7525de
+  name: "edac_device_alloc_index"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6e3ff83a
+  type_id: 0x9d80e32f
+  full_name: "edac_device_alloc_index"
+}
+elf_symbol {
+  id: 0x98dfada4
+  name: "edac_device_del_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeae2d9f3
+  type_id: 0xcbc6cc7a
+  full_name: "edac_device_del_device"
+}
+elf_symbol {
+  id: 0x20ac879e
+  name: "edac_device_free_ctl_info"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa3ed719c
+  type_id: 0x123ed0d5
+  full_name: "edac_device_free_ctl_info"
+}
+elf_symbol {
+  id: 0xd85f1ace
+  name: "edac_device_handle_ce_count"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x88db68fa
+  type_id: 0x13309e7e
+  full_name: "edac_device_handle_ce_count"
+}
+elf_symbol {
+  id: 0x1b003d7c
+  name: "edac_device_handle_ue_count"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x05cc02d6
+  type_id: 0x13309e7e
+  full_name: "edac_device_handle_ue_count"
+}
+elf_symbol {
+  id: 0x03c26bf9
+  name: "ehci_handshake"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1ed43990
+  type_id: 0x9ab89acf
+  full_name: "ehci_handshake"
+}
+elf_symbol {
+  id: 0x5d5a2134
+  name: "ehci_hub_control"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe3d27c64
+  type_id: 0x96bdc834
+  full_name: "ehci_hub_control"
+}
+elf_symbol {
+  id: 0x53a8b40e
+  name: "ehci_init_driver"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa8b764d0
+  type_id: 0x14fbfe19
+  full_name: "ehci_init_driver"
+}
+elf_symbol {
+  id: 0xc670de95
+  name: "ehci_setup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd2d2139c
+  type_id: 0x94deebf7
+  full_name: "ehci_setup"
+}
+elf_symbol {
+  id: 0x6f76a9a4
+  name: "elevator_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf6934e37
+  type_id: 0x05993839
+  full_name: "elevator_alloc"
+}
+elf_symbol {
+  id: 0x14d9b2ac
+  name: "elv_bio_merge_ok"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8f24d0ef
+  type_id: 0xf9525760
+  full_name: "elv_bio_merge_ok"
+}
+elf_symbol {
+  id: 0x5d0ca5c4
+  name: "elv_rb_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfefeb7e2
+  type_id: 0x1cff7455
+  full_name: "elv_rb_add"
+}
+elf_symbol {
+  id: 0xed989993
+  name: "elv_rb_del"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1b8ad96c
+  type_id: 0x1cff7455
+  full_name: "elv_rb_del"
+}
+elf_symbol {
+  id: 0xf7b7d7aa
+  name: "elv_rb_find"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6bf00a8e
+  type_id: 0xd119f642
+  full_name: "elv_rb_find"
+}
+elf_symbol {
+  id: 0x1a3558d3
+  name: "elv_rb_former_request"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x40a03a94
+  type_id: 0xdc6c821c
+  full_name: "elv_rb_former_request"
+}
+elf_symbol {
+  id: 0x00f85b72
+  name: "elv_rb_latter_request"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7a020c55
+  type_id: 0xdc6c821c
+  full_name: "elv_rb_latter_request"
+}
+elf_symbol {
+  id: 0x07288ca7
+  name: "elv_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x376471b3
+  type_id: 0x94f636df
+  full_name: "elv_register"
+}
+elf_symbol {
+  id: 0x0ff04eb0
+  name: "elv_rqhash_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc04361ed
+  type_id: 0x12b2c685
+  full_name: "elv_rqhash_add"
+}
+elf_symbol {
+  id: 0xa6010848
+  name: "elv_rqhash_del"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x898ff8e9
+  type_id: 0x12b2c685
+  full_name: "elv_rqhash_del"
+}
+elf_symbol {
+  id: 0x6839b226
+  name: "elv_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeaf22adc
+  type_id: 0x19ee8463
+  full_name: "elv_unregister"
+}
+elf_symbol {
+  id: 0xfa137f83
+  name: "em_cpu_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x48203853
+  type_id: 0xd45d4887
+  full_name: "em_cpu_get"
+}
+elf_symbol {
+  id: 0x109abab4
+  name: "em_dev_register_perf_domain"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6df6ef79
+  type_id: 0x9c08c3d6
+  full_name: "em_dev_register_perf_domain"
+}
+elf_symbol {
+  id: 0x2935539f
+  name: "emergency_restart"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd0c05159
+  type_id: 0x10985193
+  full_name: "emergency_restart"
+}
+elf_symbol {
+  id: 0x8f99729e
+  name: "enable_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfcec0987
+  type_id: 0x01f9081c
+  full_name: "enable_irq"
+}
+elf_symbol {
+  id: 0xb6a9c6f8
+  name: "enable_percpu_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x335c570f
+  type_id: 0x00ef1d84
+  full_name: "enable_percpu_irq"
+}
+elf_symbol {
+  id: 0x309cb0fd
+  name: "end_buffer_read_sync"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x84d3ef2d
+  type_id: 0x17592b81
+  full_name: "end_buffer_read_sync"
+}
+elf_symbol {
+  id: 0x7b9ffce9
+  name: "errno_to_blk_status"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x612bfd89
+  type_id: 0x53bd7367
+  full_name: "errno_to_blk_status"
+}
+elf_symbol {
+  id: 0xda116c83
+  name: "eth_commit_mac_addr_change"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x87ccc33e
+  type_id: 0x1c532cf2
+  full_name: "eth_commit_mac_addr_change"
+}
+elf_symbol {
+  id: 0xa279fd1d
+  name: "eth_header"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4e4cbc45
+  type_id: 0x9c2b054b
+  full_name: "eth_header"
+}
+elf_symbol {
+  id: 0x134d07e5
+  name: "eth_header_cache"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0d78f33b
+  type_id: 0x92d3b873
+  full_name: "eth_header_cache"
+}
+elf_symbol {
+  id: 0xcfde732b
+  name: "eth_header_cache_update"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8fab9a49
+  type_id: 0x139004c0
+  full_name: "eth_header_cache_update"
+}
+elf_symbol {
+  id: 0x260d2936
+  name: "eth_header_parse"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf081da3d
+  type_id: 0x926fc724
+  full_name: "eth_header_parse"
+}
+elf_symbol {
+  id: 0x3179c651
+  name: "eth_mac_addr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6f314653
+  type_id: 0x914b9e4e
+  full_name: "eth_mac_addr"
+}
+elf_symbol {
+  id: 0xdef4bdce
+  name: "eth_platform_get_mac_address"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9576cab2
+  type_id: 0x9d15c1e0
+  full_name: "eth_platform_get_mac_address"
+}
+elf_symbol {
+  id: 0xeeed0fcd
+  name: "eth_prepare_mac_addr_change"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe16ceb0a
+  type_id: 0x914b9e4e
+  full_name: "eth_prepare_mac_addr_change"
+}
+elf_symbol {
+  id: 0x9c46e3cf
+  name: "eth_type_trans"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa3a49e39
+  type_id: 0xe323faf8
+  full_name: "eth_type_trans"
+}
+elf_symbol {
+  id: 0xd4d3c19b
+  name: "eth_validate_addr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd0c4e253
+  type_id: 0x91296bda
+  full_name: "eth_validate_addr"
+}
+elf_symbol {
+  id: 0x3276ffad
+  name: "ether_setup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x46c7e5b5
+  type_id: 0x1c31d966
+  full_name: "ether_setup"
+}
+elf_symbol {
+  id: 0x592619b0
+  name: "ethnl_cable_test_fault_length"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8f057bce
+  type_id: 0x914a78cc
+  full_name: "ethnl_cable_test_fault_length"
+}
+elf_symbol {
+  id: 0xc00e9f7c
+  name: "ethnl_cable_test_result"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1c546292
+  type_id: 0x91726dda
+  full_name: "ethnl_cable_test_result"
+}
+elf_symbol {
+  id: 0xfe219f57
+  name: "ethtool_convert_legacy_u32_to_link_mode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8f996a30
+  type_id: 0x122f291e
+  full_name: "ethtool_convert_legacy_u32_to_link_mode"
+}
+elf_symbol {
+  id: 0x6e69a2b9
+  name: "ethtool_convert_link_mode_to_legacy_u32"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x55e31703
+  type_id: 0xf06a5b8e
+  full_name: "ethtool_convert_link_mode_to_legacy_u32"
+}
+elf_symbol {
+  id: 0xd3082d07
+  name: "ethtool_op_get_link"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb5a62b42
+  type_id: 0x4951a397
+  full_name: "ethtool_op_get_link"
+}
+elf_symbol {
+  id: 0x091eb2ba
+  name: "ethtool_op_get_ts_info"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x59d7903f
+  type_id: 0x916bd4e5
+  full_name: "ethtool_op_get_ts_info"
+}
+elf_symbol {
+  id: 0x80d8d153
+  name: "ethtool_sprintf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5338184f
+  type_id: 0x12e125fe
+  full_name: "ethtool_sprintf"
+}
+elf_symbol {
+  id: 0x18d23e80
+  name: "ethtool_virtdev_set_link_ksettings"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc50f93aa
+  type_id: 0x91c2a80b
+  full_name: "ethtool_virtdev_set_link_ksettings"
+}
+elf_symbol {
+  id: 0x8b7a48ea
+  name: "event_triggers_call"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfc5dcc72
+  type_id: 0xeaf38011
+  full_name: "event_triggers_call"
+}
+elf_symbol {
+  id: 0x0270a08d
+  name: "eventfd_ctx_do_read"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe911df29
+  type_id: 0x1fdf5aa3
+  full_name: "eventfd_ctx_do_read"
+}
+elf_symbol {
+  id: 0xb2ed7d56
+  name: "eventfd_ctx_fdget"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd67364f7
+  type_id: 0x8f175818
+  full_name: "eventfd_ctx_fdget"
+}
+elf_symbol {
+  id: 0x8a93ade5
+  name: "eventfd_ctx_fileget"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6af6da20
+  type_id: 0x90e5f66b
+  full_name: "eventfd_ctx_fileget"
+}
+elf_symbol {
+  id: 0x9fc520e2
+  name: "eventfd_ctx_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x941f2aaa
+  type_id: 0x1f18e832
+  full_name: "eventfd_ctx_put"
+}
+elf_symbol {
+  id: 0xfb855519
+  name: "eventfd_ctx_remove_wait_queue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x41ed3cec
+  type_id: 0x92121eb9
+  full_name: "eventfd_ctx_remove_wait_queue"
+}
+elf_symbol {
+  id: 0xb8c1d5eb
+  name: "eventfd_signal"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdf0f75c6
+  type_id: 0x3178bc26
+  full_name: "eventfd_signal"
+}
+elf_symbol {
+  id: 0x26cb4760
+  name: "extcon_get_edev_by_phandle"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x09bcb4a4
+  type_id: 0x0e2b9889
+  full_name: "extcon_get_edev_by_phandle"
+}
+elf_symbol {
+  id: 0x8525692c
+  name: "extcon_get_edev_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb6a43328
+  type_id: 0x964692d8
+  full_name: "extcon_get_edev_name"
+}
+elf_symbol {
+  id: 0x1b659ae1
+  name: "extcon_get_extcon_dev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xad6f6ac4
+  type_id: 0x00a508d8
+  full_name: "extcon_get_extcon_dev"
+}
+elf_symbol {
+  id: 0xaf15b515
+  name: "extcon_get_property"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5f8f279d
+  type_id: 0x98853e56
+  full_name: "extcon_get_property"
+}
+elf_symbol {
+  id: 0x0fe3e822
+  name: "extcon_get_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf46b7726
+  type_id: 0x989473cc
+  full_name: "extcon_get_state"
+}
+elf_symbol {
+  id: 0x3f648037
+  name: "extcon_register_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf986375f
+  type_id: 0x98929e65
+  full_name: "extcon_register_notifier"
+}
+elf_symbol {
+  id: 0xc75616d8
+  name: "extcon_set_property"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5be55749
+  type_id: 0x98850898
+  full_name: "extcon_set_property"
+}
+elf_symbol {
+  id: 0x467358e5
+  name: "extcon_set_property_capability"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x08a66542
+  type_id: 0x98851295
+  full_name: "extcon_set_property_capability"
+}
+elf_symbol {
+  id: 0xacc42253
+  name: "extcon_set_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x54ddb6bf
+  type_id: 0x988f2c1b
+  full_name: "extcon_set_state"
+}
+elf_symbol {
+  id: 0x0a446897
+  name: "extcon_set_state_sync"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xad30aa24
+  type_id: 0x988f2c1b
+  full_name: "extcon_set_state_sync"
+}
+elf_symbol {
+  id: 0xb107d2cd
+  name: "extcon_unregister_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb1296e0a
+  type_id: 0x98929e65
+  full_name: "extcon_unregister_notifier"
+}
+elf_symbol {
+  id: 0x8628f24d
+  name: "fasync_helper"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x30d08796
+  type_id: 0x8432b9df
+  full_name: "fasync_helper"
+}
+elf_symbol {
+  id: 0xbbfb394e
+  name: "fb_get_options"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xab781570
+  type_id: 0x922a0d69
+  full_name: "fb_get_options"
+}
+elf_symbol {
+  id: 0x79edfc56
+  name: "fb_mode_option"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xdaf4dfb3
+  type_id: 0x3e10b518
+  full_name: "fb_mode_option"
+}
+elf_symbol {
+  id: 0xc3077f07
+  name: "fd_install"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd94e18fc
+  type_id: 0x019aa1b7
+  full_name: "fd_install"
+}
+elf_symbol {
+  id: 0xedcfa797
+  name: "fget"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x314a6896
+  type_id: 0x50f3b181
+  full_name: "fget"
+}
+elf_symbol {
+  id: 0xe7aacfe5
+  name: "file_path"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0251c7c2
+  type_id: 0x380f5cdc
+  full_name: "file_path"
+}
+elf_symbol {
+  id: 0x9e942fbe
+  name: "file_ra_state_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2ed22804
+  type_id: 0x14609640
+  full_name: "file_ra_state_init"
+}
+elf_symbol {
+  id: 0x46b6e531
+  name: "file_write_and_wait_range"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6e31e275
+  type_id: 0x9b2d0f7e
+  full_name: "file_write_and_wait_range"
+}
+elf_symbol {
+  id: 0xb9dc79d0
+  name: "filp_close"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9523ac09
+  type_id: 0x99853e95
+  full_name: "filp_close"
+}
+elf_symbol {
+  id: 0x8bbdb127
+  name: "filp_open_block"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5e1426ea
+  type_id: 0x4f8ed2d9
+  full_name: "filp_open_block"
+}
+elf_symbol {
+  id: 0xeaf15c9b
+  name: "find_extend_vma"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd2fac9d8
+  type_id: 0x93eb75f8
+  full_name: "find_extend_vma"
+}
+elf_symbol {
+  id: 0x02b1ce77
+  name: "find_get_pid"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa1aafdfe
+  type_id: 0x3a251008
+  full_name: "find_get_pid"
+}
+elf_symbol {
+  id: 0x90d375c5
+  name: "find_pid_ns"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x93c5ba17
+  type_id: 0x31ab6254
+  full_name: "find_pid_ns"
+}
+elf_symbol {
+  id: 0xdc16d76a
+  name: "find_task_by_vpid"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5cd583b1
+  type_id: 0x69238486
+  full_name: "find_task_by_vpid"
+}
+elf_symbol {
+  id: 0x5b7736f5
+  name: "find_user"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x516a7d16
+  type_id: 0x043864e3
+  full_name: "find_user"
+}
+elf_symbol {
+  id: 0x69beea41
+  name: "find_vma"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa8f1e1ea
+  type_id: 0x93eb75f8
+  full_name: "find_vma"
+}
+elf_symbol {
+  id: 0xd2a94cce
+  name: "find_vma_intersection"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xed4b637e
+  type_id: 0x93e7a8a1
+  full_name: "find_vma_intersection"
+}
+elf_symbol {
+  id: 0x40cf5b57
+  name: "find_vpid"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaf95aaf5
+  type_id: 0x318306ba
+  full_name: "find_vpid"
+}
+elf_symbol {
+  id: 0xf882020f
+  name: "finish_wait"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x92540fbf
+  type_id: 0x154da6ed
+  full_name: "finish_wait"
+}
+elf_symbol {
+  id: 0x2e62a121
+  name: "firmware_kobj"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xf000b70b
+  type_id: 0x23f09c34
+  full_name: "firmware_kobj"
+}
+elf_symbol {
+  id: 0x24954a6b
+  name: "firmware_request_nowarn"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5dfa297f
+  type_id: 0x9cec28b8
+  full_name: "firmware_request_nowarn"
+}
+elf_symbol {
+  id: 0xbbba9aad
+  name: "fixed_size_llseek"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5cf4b80e
+  type_id: 0x2d6430a1
+  full_name: "fixed_size_llseek"
+}
+elf_symbol {
+  id: 0xd211b195
+  name: "flow_block_cb_setup_simple"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3a4f824a
+  type_id: 0x9c25419d
+  full_name: "flow_block_cb_setup_simple"
+}
+elf_symbol {
+  id: 0xba7efe3b
+  name: "flow_keys_basic_dissector"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xb3707e6e
+  type_id: 0x82854b3f
+  full_name: "flow_keys_basic_dissector"
+}
+elf_symbol {
+  id: 0xdf189e23
+  name: "flow_rule_match_basic"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8668d6e5
+  type_id: 0x1de80b22
+  full_name: "flow_rule_match_basic"
+}
+elf_symbol {
+  id: 0xae6c6645
+  name: "flow_rule_match_ipv4_addrs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x97a50d1a
+  type_id: 0x1d3f8bd2
+  full_name: "flow_rule_match_ipv4_addrs"
+}
+elf_symbol {
+  id: 0x6097dede
+  name: "flow_rule_match_ports"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8a2974d9
+  type_id: 0x1d4e9dab
+  full_name: "flow_rule_match_ports"
+}
+elf_symbol {
+  id: 0x7c9e554a
+  name: "flow_rule_match_vlan"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7fd7364a
+  type_id: 0x1d4435ec
+  full_name: "flow_rule_match_vlan"
+}
+elf_symbol {
+  id: 0xc442704c
+  name: "flush_dcache_page"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd53495d8
+  type_id: 0x11388634
+  full_name: "flush_dcache_page"
+}
+elf_symbol {
+  id: 0xb290a148
+  name: "flush_delayed_fput"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x55339365
+  type_id: 0x10985193
+  full_name: "flush_delayed_fput"
+}
+elf_symbol {
+  id: 0x09d08108
+  name: "flush_delayed_work"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1148c0ea
+  type_id: 0xf3110cae
+  full_name: "flush_delayed_work"
+}
+elf_symbol {
+  id: 0x3c7c2553
+  name: "flush_work"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4735ac17
+  type_id: 0xfdf39d0a
+  full_name: "flush_work"
+}
+elf_symbol {
+  id: 0x3dca9a13
+  name: "folio_wait_bit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5aacc70c
+  type_id: 0x1958e6c4
+  full_name: "folio_wait_bit"
+}
+elf_symbol {
+  id: 0xcb14b5cc
+  name: "follow_pfn"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x03ca71b7
+  type_id: 0x9fc875b4
+  full_name: "follow_pfn"
+}
+elf_symbol {
+  id: 0x1721c938
+  name: "font_vga_8x16"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xa01d3df6
+  type_id: 0xf958c0c2
+  full_name: "font_vga_8x16"
+}
+elf_symbol {
+  id: 0x1bf542c4
+  name: "for_each_kernel_tracepoint"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x058c6377
+  type_id: 0x13638c75
+  full_name: "for_each_kernel_tracepoint"
+}
+elf_symbol {
+  id: 0x5c93a483
+  name: "fortify_panic"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcbd4898c
+  type_id: 0x1f1c7cd5
+  full_name: "fortify_panic"
+}
+elf_symbol {
+  id: 0x93b9959a
+  name: "fput"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x07215730
+  type_id: 0x16a2cb2b
+  full_name: "fput"
+}
+elf_symbol {
+  id: 0x618f059e
+  name: "fqdir_exit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x09580062
+  type_id: 0x13c2822b
+  full_name: "fqdir_exit"
+}
+elf_symbol {
+  id: 0x48641588
+  name: "fqdir_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2f71efdb
+  type_id: 0x9ffb698d
+  full_name: "fqdir_init"
+}
+elf_symbol {
+  id: 0xbd5537b4
+  name: "frame_vector_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x065246b8
+  type_id: 0x850e4cd3
+  full_name: "frame_vector_create"
+}
+elf_symbol {
+  id: 0xf650f97e
+  name: "frame_vector_destroy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1d5f9555
+  type_id: 0x10e42ea8
+  full_name: "frame_vector_destroy"
+}
+elf_symbol {
+  id: 0x942400d1
+  name: "frame_vector_to_pages"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc5e5573a
+  type_id: 0x9dfc9c14
+  full_name: "frame_vector_to_pages"
+}
+elf_symbol {
+  id: 0x0513219e
+  name: "frame_vector_to_pfns"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdffb744b
+  type_id: 0x10e42ea8
+  full_name: "frame_vector_to_pfns"
+}
+elf_symbol {
+  id: 0x1b00ff86
+  name: "free_candev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x97d0a2dd
+  type_id: 0x1c31d966
+  full_name: "free_candev"
+}
+elf_symbol {
+  id: 0x9b815cdc
+  name: "free_io_pgtable_ops"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9fec33cc
+  type_id: 0x165a4073
+  full_name: "free_io_pgtable_ops"
+}
+elf_symbol {
+  id: 0x27e49ce0
+  name: "free_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc1514a3b
+  type_id: 0x46acd69e
+  full_name: "free_irq"
+}
+elf_symbol {
+  id: 0xa0e729a5
+  name: "free_netdev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb5769105
+  type_id: 0x1c31d966
+  full_name: "free_netdev"
+}
+elf_symbol {
+  id: 0xe330aff9
+  name: "free_pages"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4302d0eb
+  type_id: 0x1d531d2a
+  full_name: "free_pages"
+}
+elf_symbol {
+  id: 0x49af2256
+  name: "free_pages_exact"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeb44339a
+  type_id: 0x1567dd7e
+  full_name: "free_pages_exact"
+}
+elf_symbol {
+  id: 0xdfd6609a
+  name: "free_percpu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfce5a203
+  type_id: 0x16b708df
+  full_name: "free_percpu"
+}
+elf_symbol {
+  id: 0x31dfc6e3
+  name: "free_percpu_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7a6b169c
+  type_id: 0x019bfd88
+  full_name: "free_percpu_irq"
+}
+elf_symbol {
+  id: 0x0f402ef5
+  name: "free_uid"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa881688c
+  type_id: 0x169fe8f6
+  full_name: "free_uid"
+}
+elf_symbol {
+  id: 0x2ed5588c
+  name: "freezer_active"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xd73653c4
+  type_id: 0x8e47c273
+  full_name: "freezer_active"
+}
+elf_symbol {
+  id: 0x3918f832
+  name: "freezer_cgrp_subsys"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xb25aa862
+  type_id: 0x00571446
+  full_name: "freezer_cgrp_subsys"
+}
+elf_symbol {
+  id: 0x238d82fe
+  name: "freezing_slow_path"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x817dcb59
+  type_id: 0xf9e23171
+  full_name: "freezing_slow_path"
+}
+elf_symbol {
+  id: 0xf5541f28
+  name: "freq_qos_add_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8959e3df
+  type_id: 0x98196cac
+  full_name: "freq_qos_add_notifier"
+}
+elf_symbol {
+  id: 0x89d2da05
+  name: "freq_qos_add_request"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x98a5d06a
+  type_id: 0x98992525
+  full_name: "freq_qos_add_request"
+}
+elf_symbol {
+  id: 0x21202a06
+  name: "freq_qos_remove_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6435f6e7
+  type_id: 0x98196cac
+  full_name: "freq_qos_remove_notifier"
+}
+elf_symbol {
+  id: 0x893590d8
+  name: "freq_qos_remove_request"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb41c4e90
+  type_id: 0x97c2ea4f
+  full_name: "freq_qos_remove_request"
+}
+elf_symbol {
+  id: 0x4c985dbf
+  name: "freq_qos_update_request"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5aa683b8
+  type_id: 0x9492906d
+  full_name: "freq_qos_update_request"
+}
+elf_symbol {
+  id: 0xec31d371
+  name: "fs_bio_set"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xc08a6144
+  type_id: 0x200a0749
+  full_name: "fs_bio_set"
+}
+elf_symbol {
+  id: 0x9a2423a0
+  name: "fs_kobj"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x658b3d53
+  type_id: 0x23f09c34
+  full_name: "fs_kobj"
+}
+elf_symbol {
+  id: 0x196ad62a
+  name: "fsg_common_create_luns"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd1a3e8e0
+  type_id: 0x97f2793d
+  full_name: "fsg_common_create_luns"
+}
+elf_symbol {
+  id: 0x804c5038
+  name: "fsg_common_set_cdev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x79831070
+  type_id: 0x97b9c78c
+  full_name: "fsg_common_set_cdev"
+}
+elf_symbol {
+  id: 0x07715f1a
+  name: "fsg_common_set_inquiry_string"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6acb4179
+  type_id: 0x1ac96dda
+  full_name: "fsg_common_set_inquiry_string"
+}
+elf_symbol {
+  id: 0x2c0dfd47
+  name: "fsg_common_set_sysfs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7e26d4a5
+  type_id: 0x1b8b565c
+  full_name: "fsg_common_set_sysfs"
+}
+elf_symbol {
+  id: 0xb3bb06f4
+  name: "fsg_config_from_params"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xab6c68ac
+  type_id: 0x1d030c3c
+  full_name: "fsg_config_from_params"
+}
+elf_symbol {
+  id: 0xee139066
+  name: "fsync_bdev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcbb2ef2f
+  type_id: 0x9e8b6578
+  full_name: "fsync_bdev"
+}
+elf_symbol {
+  id: 0x613adcb1
+  name: "ftrace_dump"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaaa918c9
+  type_id: 0x376120fa
+  full_name: "ftrace_dump"
+}
+elf_symbol {
+  id: 0x370e6f08
+  name: "full_name_hash"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd6eaaea1
+  type_id: 0xc075980c
+  full_name: "full_name_hash"
+}
+elf_symbol {
+  id: 0x53816b02
+  name: "fwnode_device_is_available"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x775e7a8e
+  type_id: 0xf1214399
+  full_name: "fwnode_device_is_available"
+}
+elf_symbol {
+  id: 0xc9ddb79e
+  name: "fwnode_find_reference"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2ff5b2a8
+  type_id: 0x360ab09d
+  full_name: "fwnode_find_reference"
+}
+elf_symbol {
+  id: 0x11780300
+  name: "fwnode_get_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2211d0fa
+  type_id: 0x9dc10f3e
+  full_name: "fwnode_get_name"
+}
+elf_symbol {
+  id: 0x183013c2
+  name: "fwnode_get_named_child_node"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3b91231a
+  type_id: 0x361bd1c4
+  full_name: "fwnode_get_named_child_node"
+}
+elf_symbol {
+  id: 0x55d636ec
+  name: "fwnode_get_next_child_node"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbd849003
+  type_id: 0x36f1d1fd
+  full_name: "fwnode_get_next_child_node"
+}
+elf_symbol {
+  id: 0x02e45228
+  name: "fwnode_gpiod_get_index"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x70ff97cd
+  type_id: 0x5e864c76
+  full_name: "fwnode_gpiod_get_index"
+}
+elf_symbol {
+  id: 0x90df3dac
+  name: "fwnode_graph_get_next_endpoint"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd4b12a11
+  type_id: 0x36f1d1fd
+  full_name: "fwnode_graph_get_next_endpoint"
+}
+elf_symbol {
+  id: 0x98cceeb9
+  name: "fwnode_graph_get_port_parent"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x320df3e1
+  type_id: 0x36e39310
+  full_name: "fwnode_graph_get_port_parent"
+}
+elf_symbol {
+  id: 0x8c138008
+  name: "fwnode_graph_get_remote_endpoint"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x55978869
+  type_id: 0x36e39310
+  full_name: "fwnode_graph_get_remote_endpoint"
+}
+elf_symbol {
+  id: 0x5263336d
+  name: "fwnode_graph_get_remote_port_parent"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1a81e3e4
+  type_id: 0x36e39310
+  full_name: "fwnode_graph_get_remote_port_parent"
+}
+elf_symbol {
+  id: 0x644b2089
+  name: "fwnode_graph_parse_endpoint"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x03c63e06
+  type_id: 0x9227b73b
+  full_name: "fwnode_graph_parse_endpoint"
+}
+elf_symbol {
+  id: 0x7f409680
+  name: "fwnode_handle_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa962612b
+  type_id: 0x3842a55f
+  full_name: "fwnode_handle_get"
+}
+elf_symbol {
+  id: 0x46d8dfb5
+  name: "fwnode_handle_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf4671bb6
+  type_id: 0x11bc7f41
+  full_name: "fwnode_handle_put"
+}
+elf_symbol {
+  id: 0x40d7d2d1
+  name: "fwnode_irq_get_byname"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2b80e573
+  type_id: 0x92fdb966
+  full_name: "fwnode_irq_get_byname"
+}
+elf_symbol {
+  id: 0x4a8547f0
+  name: "fwnode_property_get_reference_args"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x85c37740
+  type_id: 0x92f33a91
+  full_name: "fwnode_property_get_reference_args"
+}
+elf_symbol {
+  id: 0xff19753b
+  name: "fwnode_property_present"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x002bfa87
+  type_id: 0xf1d9014d
+  full_name: "fwnode_property_present"
+}
+elf_symbol {
+  id: 0x2f1a3bf8
+  name: "fwnode_property_read_string"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x315e0775
+  type_id: 0x92fcfc63
+  full_name: "fwnode_property_read_string"
+}
+elf_symbol {
+  id: 0x806b0d54
+  name: "fwnode_property_read_u32_array"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9e786eb6
+  type_id: 0x92f05d3f
+  full_name: "fwnode_property_read_u32_array"
+}
+elf_symbol {
+  id: 0x11f02a55
+  name: "fwnode_property_read_u64_array"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5848846b
+  type_id: 0x92f5ef8e
+  full_name: "fwnode_property_read_u64_array"
+}
+elf_symbol {
+  id: 0x9f69bdd5
+  name: "fwnode_property_read_u8_array"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcfede7db
+  type_id: 0x92fe587a
+  full_name: "fwnode_property_read_u8_array"
+}
+elf_symbol {
+  id: 0xd314e8e2
+  name: "fwnode_typec_mux_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfa4bbd79
+  type_id: 0x294efe3e
+  full_name: "fwnode_typec_mux_get"
+}
+elf_symbol {
+  id: 0x8005396c
+  name: "fwnode_usb_role_switch_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xac2c5e1b
+  type_id: 0x84380e6d
+  full_name: "fwnode_usb_role_switch_get"
+}
+elf_symbol {
+  id: 0x4e154d27
+  name: "gcd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xea124bd1
+  type_id: 0x3dbc41e0
+  full_name: "gcd"
+}
+elf_symbol {
+  id: 0xc3be8e53
+  name: "gen_pool_add_owner"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbefa51a3
+  type_id: 0x984b7ce0
+  full_name: "gen_pool_add_owner"
+}
+elf_symbol {
+  id: 0xc0d67a7b
+  name: "gen_pool_alloc_algo_owner"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2b593aa8
+  type_id: 0x37677261
+  full_name: "gen_pool_alloc_algo_owner"
+}
+elf_symbol {
+  id: 0x838e302b
+  name: "gen_pool_avail"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd0d3f0a4
+  type_id: 0x92153e12
+  full_name: "gen_pool_avail"
+}
+elf_symbol {
+  id: 0x8d516f3b
+  name: "gen_pool_best_fit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb737b185
+  type_id: 0x30ff8ddd
+  full_name: "gen_pool_best_fit"
+}
+elf_symbol {
+  id: 0xcde73eff
+  name: "gen_pool_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xced0f4d4
+  type_id: 0x443a0c32
+  full_name: "gen_pool_create"
+}
+elf_symbol {
+  id: 0xa48d1205
+  name: "gen_pool_destroy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6c224cda
+  type_id: 0x15b2a6d3
+  full_name: "gen_pool_destroy"
+}
+elf_symbol {
+  id: 0xe802aac6
+  name: "gen_pool_dma_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x486075c8
+  type_id: 0x506035ff
+  full_name: "gen_pool_dma_alloc"
+}
+elf_symbol {
+  id: 0x0d3305c8
+  name: "gen_pool_dma_alloc_align"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xada31e57
+  type_id: 0x5061a97c
+  full_name: "gen_pool_dma_alloc_align"
+}
+elf_symbol {
+  id: 0x38c268a7
+  name: "gen_pool_dma_zalloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xee7d7deb
+  type_id: 0x506035ff
+  full_name: "gen_pool_dma_zalloc"
+}
+elf_symbol {
+  id: 0x5c399a13
+  name: "gen_pool_dma_zalloc_align"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3d210724
+  type_id: 0x5061a97c
+  full_name: "gen_pool_dma_zalloc_align"
+}
+elf_symbol {
+  id: 0xcf017fb2
+  name: "gen_pool_first_fit_align"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5e855e56
+  type_id: 0x30ff8ddd
+  full_name: "gen_pool_first_fit_align"
+}
+elf_symbol {
+  id: 0x5b793682
+  name: "gen_pool_first_fit_order_align"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3f4bd846
+  type_id: 0x30ff8ddd
+  full_name: "gen_pool_first_fit_order_align"
+}
+elf_symbol {
+  id: 0xe0327fdb
+  name: "gen_pool_for_each_chunk"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5ef6a672
+  type_id: 0x158bb121
+  full_name: "gen_pool_for_each_chunk"
+}
+elf_symbol {
+  id: 0xb38d3ae8
+  name: "gen_pool_free_owner"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x060ba97c
+  type_id: 0x15424ce6
+  full_name: "gen_pool_free_owner"
+}
+elf_symbol {
+  id: 0xb307a45b
+  name: "gen_pool_has_addr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1f557414
+  type_id: 0xfb7e748c
+  full_name: "gen_pool_has_addr"
+}
+elf_symbol {
+  id: 0x62469fff
+  name: "gen_pool_set_algo"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x96e5d30f
+  type_id: 0x16ab491c
+  full_name: "gen_pool_set_algo"
+}
+elf_symbol {
+  id: 0xc5fee33e
+  name: "gen_pool_size"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2464da17
+  type_id: 0x92153e12
+  full_name: "gen_pool_size"
+}
+elf_symbol {
+  id: 0x7419d447
+  name: "gen_pool_virt_to_phys"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7d0ba682
+  type_id: 0x044f79a4
+  full_name: "gen_pool_virt_to_phys"
+}
+elf_symbol {
+  id: 0x30828743
+  name: "generic_device_group"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe911235c
+  type_id: 0x7e204efc
+  full_name: "generic_device_group"
+}
+elf_symbol {
+  id: 0x94b60724
+  name: "generic_file_llseek"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x55e1ea29
+  type_id: 0x2d64ae3e
+  full_name: "generic_file_llseek"
+}
+elf_symbol {
+  id: 0x5ec3daa8
+  name: "generic_file_read_iter"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4185838a
+  type_id: 0x16637235
+  full_name: "generic_file_read_iter"
+}
+elf_symbol {
+  id: 0x2f7205ee
+  name: "generic_handle_domain_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x20359cbd
+  type_id: 0x9abe486f
+  full_name: "generic_handle_domain_irq"
+}
+elf_symbol {
+  id: 0x7d577f86
+  name: "generic_handle_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7ceaf0d5
+  type_id: 0x8ce1baa0
+  full_name: "generic_handle_irq"
+}
+elf_symbol {
+  id: 0x95a840b8
+  name: "generic_mii_ioctl"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x47ee41ec
+  type_id: 0x99c885a2
+  full_name: "generic_mii_ioctl"
+}
+elf_symbol {
+  id: 0x7f639ef1
+  name: "generic_perform_write"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfb233ead
+  type_id: 0x16637235
+  full_name: "generic_perform_write"
+}
+elf_symbol {
+  id: 0x798f83da
+  name: "generic_shutdown_super"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf8eb67cf
+  type_id: 0x1923cb99
+  full_name: "generic_shutdown_super"
+}
+elf_symbol {
+  id: 0x542785af
+  name: "generic_write_checks"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9605d5ea
+  type_id: 0x16637235
+  full_name: "generic_write_checks"
+}
+elf_symbol {
+  id: 0x86da67c0
+  name: "geni_icc_disable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x15311284
+  type_id: 0x9a8dcf13
+  full_name: "geni_icc_disable"
+}
+elf_symbol {
+  id: 0x27168bf7
+  name: "geni_icc_enable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe7e05518
+  type_id: 0x9a8dcf13
+  full_name: "geni_icc_enable"
+}
+elf_symbol {
+  id: 0x4e0faf2a
+  name: "geni_icc_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x197e57e3
+  type_id: 0x9a758dc7
+  full_name: "geni_icc_get"
+}
+elf_symbol {
+  id: 0x337638e2
+  name: "geni_icc_set_bw"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8c3d6067
+  type_id: 0x9a8dcf13
+  full_name: "geni_icc_set_bw"
+}
+elf_symbol {
+  id: 0x036ebd65
+  name: "geni_se_clk_freq_match"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2e6d5655
+  type_id: 0x9a46e4b3
+  full_name: "geni_se_clk_freq_match"
+}
+elf_symbol {
+  id: 0xd381ea2f
+  name: "geni_se_config_packing"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x42ed35dc
+  type_id: 0x161199c0
+  full_name: "geni_se_config_packing"
+}
+elf_symbol {
+  id: 0xba2824e9
+  name: "geni_se_get_qup_hw_version"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8a79994b
+  type_id: 0x42f5075e
+  full_name: "geni_se_get_qup_hw_version"
+}
+elf_symbol {
+  id: 0x58017eec
+  name: "geni_se_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5c7f3042
+  type_id: 0x14831f09
+  full_name: "geni_se_init"
+}
+elf_symbol {
+  id: 0x33ee7617
+  name: "geni_se_resources_off"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcdb17f1f
+  type_id: 0x9a8dcf13
+  full_name: "geni_se_resources_off"
+}
+elf_symbol {
+  id: 0xf94d5f8a
+  name: "geni_se_resources_on"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc2955ead
+  type_id: 0x9a8dcf13
+  full_name: "geni_se_resources_on"
+}
+elf_symbol {
+  id: 0x0d761151
+  name: "geni_se_rx_dma_prep"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x68ae4009
+  type_id: 0x9ad2fdb3
+  full_name: "geni_se_rx_dma_prep"
+}
+elf_symbol {
+  id: 0xb302ac33
+  name: "geni_se_rx_dma_unprep"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x009da024
+  type_id: 0x1428c8a6
+  full_name: "geni_se_rx_dma_unprep"
+}
+elf_symbol {
+  id: 0x6c088000
+  name: "geni_se_select_mode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x73ed847d
+  type_id: 0x169ed235
+  full_name: "geni_se_select_mode"
+}
+elf_symbol {
+  id: 0xc4cb8fa6
+  name: "geni_se_tx_dma_prep"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6ce71a5f
+  type_id: 0x9ad2fdb3
+  full_name: "geni_se_tx_dma_prep"
+}
+elf_symbol {
+  id: 0xd54b6b78
+  name: "geni_se_tx_dma_unprep"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf647d023
+  type_id: 0x1428c8a6
+  full_name: "geni_se_tx_dma_unprep"
+}
+elf_symbol {
+  id: 0x6e81d052
+  name: "genl_notify"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x152db970
+  type_id: 0x1c9aeba3
+  full_name: "genl_notify"
+}
+elf_symbol {
+  id: 0x96c8bcae
+  name: "genl_register_family"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1b998c98
+  type_id: 0x92d3febd
+  full_name: "genl_register_family"
+}
+elf_symbol {
+  id: 0xc09fd862
+  name: "genl_unregister_family"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfc6fbbba
+  type_id: 0x91983762
+  full_name: "genl_unregister_family"
+}
+elf_symbol {
+  id: 0x3598fbb3
+  name: "genlmsg_multicast_allns"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa112607c
+  type_id: 0x91be62b0
+  full_name: "genlmsg_multicast_allns"
+}
+elf_symbol {
+  id: 0x343a2d56
+  name: "genlmsg_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x21eefe5b
+  type_id: 0x54d3d1f1
+  full_name: "genlmsg_put"
+}
+elf_symbol {
+  id: 0xa0c0d25f
+  name: "genphy_c37_config_aneg"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1ec7e28e
+  type_id: 0x91dd4b0e
+  full_name: "genphy_c37_config_aneg"
+}
+elf_symbol {
+  id: 0xb87c5ff6
+  name: "genphy_c37_read_status"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3f51f348
+  type_id: 0x91dd4b0e
+  full_name: "genphy_c37_read_status"
+}
+elf_symbol {
+  id: 0x607c937c
+  name: "genphy_c45_fast_retrain"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1274a603
+  type_id: 0x9068b671
+  full_name: "genphy_c45_fast_retrain"
+}
+elf_symbol {
+  id: 0xd99708c7
+  name: "genphy_c45_pma_setup_forced"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x62814a87
+  type_id: 0x91dd4b0e
+  full_name: "genphy_c45_pma_setup_forced"
+}
+elf_symbol {
+  id: 0x618539bc
+  name: "genphy_handle_interrupt_no_ack"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3dab897c
+  type_id: 0x2e992cc0
+  full_name: "genphy_handle_interrupt_no_ack"
+}
+elf_symbol {
+  id: 0xe00705b3
+  name: "genphy_read_abilities"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4675693b
+  type_id: 0x91dd4b0e
+  full_name: "genphy_read_abilities"
+}
+elf_symbol {
+  id: 0xcaf802e6
+  name: "genphy_read_lpa"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x812c058e
+  type_id: 0x91dd4b0e
+  full_name: "genphy_read_lpa"
+}
+elf_symbol {
+  id: 0xbaba47ed
+  name: "genphy_read_mmd_unsupported"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4e73c6ff
+  type_id: 0x90659b2d
+  full_name: "genphy_read_mmd_unsupported"
+}
+elf_symbol {
+  id: 0x67f44b83
+  name: "genphy_read_status"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7d119744
+  type_id: 0x91dd4b0e
+  full_name: "genphy_read_status"
+}
+elf_symbol {
+  id: 0xa94a7a92
+  name: "genphy_restart_aneg"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7fdf7cab
+  type_id: 0x91dd4b0e
+  full_name: "genphy_restart_aneg"
+}
+elf_symbol {
+  id: 0x855de755
+  name: "genphy_resume"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8ca306fa
+  type_id: 0x91dd4b0e
+  full_name: "genphy_resume"
+}
+elf_symbol {
+  id: 0xb3b7ca78
+  name: "genphy_setup_forced"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb8fd2b35
+  type_id: 0x91dd4b0e
+  full_name: "genphy_setup_forced"
+}
+elf_symbol {
+  id: 0x1a9af016
+  name: "genphy_soft_reset"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcceac2c4
+  type_id: 0x91dd4b0e
+  full_name: "genphy_soft_reset"
+}
+elf_symbol {
+  id: 0xfc12228c
+  name: "genphy_suspend"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6af8794f
+  type_id: 0x91dd4b0e
+  full_name: "genphy_suspend"
+}
+elf_symbol {
+  id: 0xae957b3b
+  name: "genphy_update_link"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8d9089a9
+  type_id: 0x91dd4b0e
+  full_name: "genphy_update_link"
+}
+elf_symbol {
+  id: 0x77665a1c
+  name: "genphy_write_mmd_unsupported"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcc12e733
+  type_id: 0x9067de1b
+  full_name: "genphy_write_mmd_unsupported"
+}
+elf_symbol {
+  id: 0xe8d92d04
+  name: "get_completed_synchronize_rcu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbb4146b3
+  type_id: 0x31accd53
+  full_name: "get_completed_synchronize_rcu"
+}
+elf_symbol {
+  id: 0xafbdd1c4
+  name: "get_cpu_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe7e36288
+  type_id: 0xbc4e69b1
+  full_name: "get_cpu_device"
+}
+elf_symbol {
+  id: 0x0431ade4
+  name: "get_cpu_idle_time"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9fe899b7
+  type_id: 0x461b2125
+  full_name: "get_cpu_idle_time"
+}
+elf_symbol {
+  id: 0x01eb2325
+  name: "get_cpu_idle_time_us"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7b9793a2
+  type_id: 0x4eab8455
+  full_name: "get_cpu_idle_time_us"
+}
+elf_symbol {
+  id: 0xd9d90ad6
+  name: "get_cpu_iowait_time_us"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1234e483
+  type_id: 0x4eab8455
+  full_name: "get_cpu_iowait_time_us"
+}
+elf_symbol {
+  id: 0xaf0c4e38
+  name: "get_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf181d237
+  type_id: 0xadb90e65
+  full_name: "get_device"
+}
+elf_symbol {
+  id: 0x08e235b1
+  name: "get_device_system_crosststamp"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4c329c1b
+  type_id: 0x96a1bf82
+  full_name: "get_device_system_crosststamp"
+}
+elf_symbol {
+  id: 0x00d00ad1
+  name: "get_each_object_track"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x17afd194
+  namespace: "MINIDUMP"
+  type_id: 0x3a16a200
+  full_name: "get_each_object_track"
+}
+elf_symbol {
+  id: 0xdb82735d
+  name: "get_governor_parent_kobj"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9a124520
+  type_id: 0x3e5176fa
+  full_name: "get_governor_parent_kobj"
+}
+elf_symbol {
+  id: 0x7d6ec6da
+  name: "get_kernel_pages"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbad3a1e3
+  type_id: 0x92759893
+  full_name: "get_kernel_pages"
+}
+elf_symbol {
+  id: 0x56ec444f
+  name: "get_net_ns_by_fd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6e5208e9
+  type_id: 0x5102ac9f
+  full_name: "get_net_ns_by_fd"
+}
+elf_symbol {
+  id: 0x519dce2c
+  name: "get_net_ns_by_pid"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xabbbe571
+  type_id: 0x5aa4ba2d
+  full_name: "get_net_ns_by_pid"
+}
+elf_symbol {
+  id: 0xae723651
+  name: "get_next_ino"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe953b21f
+  type_id: 0xcedb7efb
+  full_name: "get_next_ino"
+}
+elf_symbol {
+  id: 0xb222bb33
+  name: "get_option"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb0e10781
+  type_id: 0x9f21b31c
+  full_name: "get_option"
+}
+elf_symbol {
+  id: 0xb3083c09
+  name: "get_options"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x868acba5
+  type_id: 0x302279c2
+  full_name: "get_options"
+}
+elf_symbol {
+  id: 0x3746f7a2
+  name: "get_page_owner_handle"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbdd70345
+  namespace: "MINIDUMP"
+  type_id: 0x1572ad94
+  full_name: "get_page_owner_handle"
+}
+elf_symbol {
+  id: 0x7fafe916
+  name: "get_pfnblock_flags_mask"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x61849004
+  type_id: 0x3ec9e358
+  full_name: "get_pfnblock_flags_mask"
+}
+elf_symbol {
+  id: 0x475d45f1
+  name: "get_pid_task"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xecd5f222
+  type_id: 0x7f0f4bf3
+  full_name: "get_pid_task"
+}
+elf_symbol {
+  id: 0x8f644487
+  name: "get_random_bytes"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x41ed3709
+  type_id: 0x1567dd7e
+  full_name: "get_random_bytes"
+}
+elf_symbol {
+  id: 0xbc123b47
+  name: "get_random_u16"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x044f0ad9
+  type_id: 0x012b29b0
+  full_name: "get_random_u16"
+}
+elf_symbol {
+  id: 0x0447d62c
+  name: "get_random_u32"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd36dc10c
+  type_id: 0x45f82b62
+  full_name: "get_random_u32"
+}
+elf_symbol {
+  id: 0xba2bc2c4
+  name: "get_random_u64"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe3ff2c41
+  type_id: 0x57dbd34b
+  full_name: "get_random_u64"
+}
+elf_symbol {
+  id: 0x3266d1f2
+  name: "get_random_u8"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9858f364
+  type_id: 0x534abe77
+  full_name: "get_random_u8"
+}
+elf_symbol {
+  id: 0x3a06dd48
+  name: "get_sg_io_hdr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x16e0ea91
+  type_id: 0x976222f8
+  full_name: "get_sg_io_hdr"
+}
+elf_symbol {
+  id: 0x75d8e345
+  name: "get_slabinfo"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa4f88746
+  namespace: "MINIDUMP"
+  type_id: 0x1bc52dc4
+  full_name: "get_slabinfo"
+}
+elf_symbol {
+  id: 0xfa5debf3
+  name: "get_state_synchronize_rcu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf3808cb1
+  type_id: 0x31accd53
+  full_name: "get_state_synchronize_rcu"
+}
+elf_symbol {
+  id: 0x450ea7a4
+  name: "get_state_synchronize_srcu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x73fd0457
+  type_id: 0x394e2c9b
+  full_name: "get_state_synchronize_srcu"
+}
+elf_symbol {
+  id: 0x35d05a7d
+  name: "get_task_cred"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd90bd095
+  type_id: 0x0adc3a0d
+  full_name: "get_task_cred"
+}
+elf_symbol {
+  id: 0x02327717
+  name: "get_task_mm"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x41436ea5
+  type_id: 0xf152640a
+  full_name: "get_task_mm"
+}
+elf_symbol {
+  id: 0x6d155c9e
+  name: "get_task_pid"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x168e2c1a
+  type_id: 0x2d5eecc4
+  full_name: "get_task_pid"
+}
+elf_symbol {
+  id: 0xc5f5aefd
+  name: "get_thermal_instance"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc4cb144c
+  type_id: 0xb913af05
+  full_name: "get_thermal_instance"
+}
+elf_symbol {
+  id: 0x90eb0a27
+  name: "get_tree_single"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x850ab11a
+  type_id: 0x96e9d652
+  full_name: "get_tree_single"
+}
+elf_symbol {
+  id: 0x511aa4c3
+  name: "get_unmapped_area"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3f43f74d
+  type_id: 0x37579e28
+  full_name: "get_unmapped_area"
+}
+elf_symbol {
+  id: 0x18a5fee3
+  name: "get_unused_fd_flags"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa843805a
+  type_id: 0x8ce1baa0
+  full_name: "get_unused_fd_flags"
+}
+elf_symbol {
+  id: 0x0ac85cf7
+  name: "get_user_ifreq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1c136deb
+  type_id: 0x9038edd5
+  full_name: "get_user_ifreq"
+}
+elf_symbol {
+  id: 0x853a2529
+  name: "get_user_pages"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6e591d3f
+  type_id: 0xab21f8b5
+  full_name: "get_user_pages"
+}
+elf_symbol {
+  id: 0x236d47d9
+  name: "get_user_pages_fast"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x56ce2f81
+  type_id: 0x90d074d8
+  full_name: "get_user_pages_fast"
+}
+elf_symbol {
+  id: 0x4909936e
+  name: "get_user_pages_remote"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe4dd19ab
+  type_id: 0xa12d9647
+  full_name: "get_user_pages_remote"
+}
+elf_symbol {
+  id: 0xce04fca2
+  name: "get_vaddr_frames"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc2d9e090
+  type_id: 0x904bd3e9
+  full_name: "get_vaddr_frames"
+}
+elf_symbol {
+  id: 0x4ba4e06f
+  name: "get_wchan"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x00a98699
+  type_id: 0x36eaa726
+  full_name: "get_wchan"
+}
+elf_symbol {
+  id: 0xbac82e84
+  name: "get_zeroed_page"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf09b5d9a
+  type_id: 0x0dc57aa8
+  full_name: "get_zeroed_page"
+}
+elf_symbol {
+  id: 0xa8319a8c
+  name: "getboottime64"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xef464c28
+  type_id: 0x11a59ba3
+  full_name: "getboottime64"
+}
+elf_symbol {
+  id: 0xfe79963a
+  name: "gfn_to_pfn_memslot"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2ed489ec
+  type_id: 0x157f093d
+  full_name: "gfn_to_pfn_memslot"
+}
+elf_symbol {
+  id: 0xbc19d975
+  name: "gh_rm_call"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaa8c9d60
+  type_id: 0x98860e2e
+  full_name: "gh_rm_call"
+}
+elf_symbol {
+  id: 0x6dc59ee7
+  name: "gh_rm_notifier_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd5a6a3c9
+  type_id: 0x9bc160f2
+  full_name: "gh_rm_notifier_register"
+}
+elf_symbol {
+  id: 0x3049a5e5
+  name: "gh_rm_notifier_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2c865d28
+  type_id: 0x9bc160f2
+  full_name: "gh_rm_notifier_unregister"
+}
+elf_symbol {
+  id: 0x62906068
+  name: "gh_rm_register_platform_ops"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfd11885c
+  type_id: 0x91ab10d3
+  full_name: "gh_rm_register_platform_ops"
+}
+elf_symbol {
+  id: 0x35ffaad3
+  name: "gh_rm_unregister_platform_ops"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x057f483b
+  type_id: 0x1cb3a26f
+  full_name: "gh_rm_unregister_platform_ops"
+}
+elf_symbol {
+  id: 0x5a582da8
+  name: "gic_nonsecure_priorities"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x4b0a3f52
+  type_id: 0x8e47c273
+  full_name: "gic_nonsecure_priorities"
+}
+elf_symbol {
+  id: 0x596931c4
+  name: "gic_v3_cpu_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe8208812
+  type_id: 0x10985193
+  full_name: "gic_v3_cpu_init"
+}
+elf_symbol {
+  id: 0x390427e4
+  name: "gic_v3_dist_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xedec844c
+  type_id: 0x10985193
+  full_name: "gic_v3_dist_init"
+}
+elf_symbol {
+  id: 0x53ba530f
+  name: "gic_v3_dist_wait_for_rwp"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa5c47ee7
+  type_id: 0x10985193
+  full_name: "gic_v3_dist_wait_for_rwp"
+}
+elf_symbol {
+  id: 0x365c2930
+  name: "glob_match"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5009c71d
+  type_id: 0xf1d83496
+  full_name: "glob_match"
+}
+elf_symbol {
+  id: 0x64b49555
+  name: "gov_attr_set_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe5806ff6
+  type_id: 0x1951a486
+  full_name: "gov_attr_set_get"
+}
+elf_symbol {
+  id: 0xbfc46f3e
+  name: "gov_attr_set_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2cc04b33
+  type_id: 0x1951a486
+  full_name: "gov_attr_set_init"
+}
+elf_symbol {
+  id: 0x53579c80
+  name: "gov_attr_set_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x220455ed
+  type_id: 0xc7128bee
+  full_name: "gov_attr_set_put"
+}
+elf_symbol {
+  id: 0xd915e343
+  name: "gov_update_cpu_data"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe8324250
+  type_id: 0x1e80bbd4
+  full_name: "gov_update_cpu_data"
+}
+elf_symbol {
+  id: 0x2b91f916
+  name: "governor_sysfs_ops"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x4660f474
+  type_id: 0xe7d52a38
+  full_name: "governor_sysfs_ops"
+}
+elf_symbol {
+  id: 0x2defacf0
+  name: "gpio_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfe990052
+  type_id: 0x01f9081c
+  full_name: "gpio_free"
+}
+elf_symbol {
+  id: 0x1808c84e
+  name: "gpio_free_array"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb0d1656c
+  type_id: 0x1f26df83
+  full_name: "gpio_free_array"
+}
+elf_symbol {
+  id: 0x09fe5bd6
+  name: "gpio_request"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x47229b5c
+  type_id: 0x8c19f874
+  full_name: "gpio_request"
+}
+elf_symbol {
+  id: 0xe9a558bf
+  name: "gpio_request_array"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9ba2bb2b
+  type_id: 0x923e6d3f
+  full_name: "gpio_request_array"
+}
+elf_symbol {
+  id: 0x260ae9d8
+  name: "gpio_request_one"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x403f9529
+  type_id: 0x8c23eb1f
+  full_name: "gpio_request_one"
+}
+elf_symbol {
+  id: 0xc805d9b2
+  name: "gpio_to_desc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0ec43f6f
+  type_id: 0x4e221f3c
+  full_name: "gpio_to_desc"
+}
+elf_symbol {
+  id: 0xc1baf786
+  name: "gpiochip_add_data_with_key"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd395bb32
+  type_id: 0x9bdd396a
+  full_name: "gpiochip_add_data_with_key"
+}
+elf_symbol {
+  id: 0x2221f1e8
+  name: "gpiochip_add_pin_range"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x98eb29b2
+  type_id: 0x9b51540b
+  full_name: "gpiochip_add_pin_range"
+}
+elf_symbol {
+  id: 0x5be9fa34
+  name: "gpiochip_disable_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x985f4865
+  type_id: 0x17b7d7d6
+  full_name: "gpiochip_disable_irq"
+}
+elf_symbol {
+  id: 0x05b09788
+  name: "gpiochip_enable_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc2855c7c
+  type_id: 0x17b7d7d6
+  full_name: "gpiochip_enable_irq"
+}
+elf_symbol {
+  id: 0xb4fb8840
+  name: "gpiochip_find"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x44c84beb
+  type_id: 0x46082d09
+  full_name: "gpiochip_find"
+}
+elf_symbol {
+  id: 0x221b14f2
+  name: "gpiochip_generic_config"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x93ce58bc
+  type_id: 0x9aa3b833
+  full_name: "gpiochip_generic_config"
+}
+elf_symbol {
+  id: 0x4b6fcf32
+  name: "gpiochip_generic_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x171224e9
+  type_id: 0x17b7d7d6
+  full_name: "gpiochip_generic_free"
+}
+elf_symbol {
+  id: 0x803663ec
+  name: "gpiochip_generic_request"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb9f78bd7
+  type_id: 0x9aaf656a
+  full_name: "gpiochip_generic_request"
+}
+elf_symbol {
+  id: 0x04d3cd28
+  name: "gpiochip_get_data"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2ddbb38c
+  type_id: 0x50af222c
+  full_name: "gpiochip_get_data"
+}
+elf_symbol {
+  id: 0xf7c116d2
+  name: "gpiochip_irq_relres"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x76c8556c
+  type_id: 0x1247424a
+  full_name: "gpiochip_irq_relres"
+}
+elf_symbol {
+  id: 0x6b47e2c7
+  name: "gpiochip_irq_reqres"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe63aeb72
+  type_id: 0x9f5ff0f6
+  full_name: "gpiochip_irq_reqres"
+}
+elf_symbol {
+  id: 0x65492c23
+  name: "gpiochip_line_is_valid"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6a52e538
+  type_id: 0xf1f03942
+  full_name: "gpiochip_line_is_valid"
+}
+elf_symbol {
+  id: 0xa106a350
+  name: "gpiochip_lock_as_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd82b8c33
+  type_id: 0x9aaf656a
+  full_name: "gpiochip_lock_as_irq"
+}
+elf_symbol {
+  id: 0x59b3b64e
+  name: "gpiochip_populate_parent_fwspec_fourcell"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1848c29f
+  type_id: 0x9b54e21c
+  full_name: "gpiochip_populate_parent_fwspec_fourcell"
+}
+elf_symbol {
+  id: 0x7dd9e61e
+  name: "gpiochip_remove"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x070394c2
+  type_id: 0x16a1c24e
+  full_name: "gpiochip_remove"
+}
+elf_symbol {
+  id: 0x77a0ab63
+  name: "gpiochip_unlock_as_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x825e775a
+  type_id: 0x17b7d7d6
+  full_name: "gpiochip_unlock_as_irq"
+}
+elf_symbol {
+  id: 0x4825b485
+  name: "gpiod_cansleep"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x937449ad
+  type_id: 0x901afa25
+  full_name: "gpiod_cansleep"
+}
+elf_symbol {
+  id: 0xa448ac51
+  name: "gpiod_count"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6550a3e5
+  type_id: 0x9dee9fa0
+  full_name: "gpiod_count"
+}
+elf_symbol {
+  id: 0x73ac3fd7
+  name: "gpiod_direction_input"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xff3802dc
+  type_id: 0x94d8cba3
+  full_name: "gpiod_direction_input"
+}
+elf_symbol {
+  id: 0xad2ad56b
+  name: "gpiod_direction_output"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x141e73eb
+  type_id: 0x954448ef
+  full_name: "gpiod_direction_output"
+}
+elf_symbol {
+  id: 0xfc326378
+  name: "gpiod_direction_output_raw"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1aadfa2a
+  type_id: 0x954448ef
+  full_name: "gpiod_direction_output_raw"
+}
+elf_symbol {
+  id: 0x652eb3f5
+  name: "gpiod_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb521fdd8
+  type_id: 0x5f272d07
+  full_name: "gpiod_get"
+}
+elf_symbol {
+  id: 0x226f81df
+  name: "gpiod_get_index_optional"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x11bdf2bd
+  type_id: 0x5f3cfa16
+  full_name: "gpiod_get_index_optional"
+}
+elf_symbol {
+  id: 0x4950fc9e
+  name: "gpiod_get_optional"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x90c83d78
+  type_id: 0x5f272d07
+  full_name: "gpiod_get_optional"
+}
+elf_symbol {
+  id: 0x74240b4d
+  name: "gpiod_get_raw_value"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe7edce8c
+  type_id: 0x901afa25
+  full_name: "gpiod_get_raw_value"
+}
+elf_symbol {
+  id: 0xe4150b00
+  name: "gpiod_get_raw_value_cansleep"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2f7123aa
+  type_id: 0x901afa25
+  full_name: "gpiod_get_raw_value_cansleep"
+}
+elf_symbol {
+  id: 0x4b83f5b7
+  name: "gpiod_get_value"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf0d7ec79
+  type_id: 0x901afa25
+  full_name: "gpiod_get_value"
+}
+elf_symbol {
+  id: 0x2972a8a3
+  name: "gpiod_get_value_cansleep"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5a83086b
+  type_id: 0x901afa25
+  full_name: "gpiod_get_value_cansleep"
+}
+elf_symbol {
+  id: 0xb88eef1b
+  name: "gpiod_is_active_low"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8ae29508
+  type_id: 0x901afa25
+  full_name: "gpiod_is_active_low"
+}
+elf_symbol {
+  id: 0x6c1022ab
+  name: "gpiod_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdbe25866
+  type_id: 0x19c0791f
+  full_name: "gpiod_put"
+}
+elf_symbol {
+  id: 0x877d6e07
+  name: "gpiod_set_array_value_cansleep"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x091f8b65
+  type_id: 0x8ce0e11d
+  full_name: "gpiod_set_array_value_cansleep"
+}
+elf_symbol {
+  id: 0x9e518224
+  name: "gpiod_set_consumer_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe5b6d8a0
+  type_id: 0x94208977
+  full_name: "gpiod_set_consumer_name"
+}
+elf_symbol {
+  id: 0x57b14fc5
+  name: "gpiod_set_debounce"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc0823667
+  type_id: 0x95cede3b
+  full_name: "gpiod_set_debounce"
+}
+elf_symbol {
+  id: 0xfe31da3e
+  name: "gpiod_set_raw_value"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8dae9ed0
+  type_id: 0x185cfa53
+  full_name: "gpiod_set_raw_value"
+}
+elf_symbol {
+  id: 0x55e18a15
+  name: "gpiod_set_raw_value_cansleep"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2db93e29
+  type_id: 0x185cfa53
+  full_name: "gpiod_set_raw_value_cansleep"
+}
+elf_symbol {
+  id: 0x4c4ea97e
+  name: "gpiod_set_value"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6dbacf3b
+  type_id: 0x185cfa53
+  full_name: "gpiod_set_value"
+}
+elf_symbol {
+  id: 0x2bcde32a
+  name: "gpiod_set_value_cansleep"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x89837118
+  type_id: 0x185cfa53
+  full_name: "gpiod_set_value_cansleep"
+}
+elf_symbol {
+  id: 0x65cf864e
+  name: "gpiod_to_chip"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf6adf92c
+  type_id: 0x4d0cf62c
+  full_name: "gpiod_to_chip"
+}
+elf_symbol {
+  id: 0xc5a4a821
+  name: "gpiod_to_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe46623a3
+  type_id: 0x901afa25
+  full_name: "gpiod_to_irq"
+}
+elf_symbol {
+  id: 0x4dcdd24d
+  name: "gre_add_protocol"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x06b80249
+  type_id: 0x92801eb4
+  full_name: "gre_add_protocol"
+}
+elf_symbol {
+  id: 0x8df87722
+  name: "gre_del_protocol"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdc8308a3
+  type_id: 0x92801eb4
+  full_name: "gre_del_protocol"
+}
+elf_symbol {
+  id: 0x0ac30c0d
+  name: "gro_cells_destroy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe79cb6a9
+  type_id: 0x1b2fba02
+  full_name: "gro_cells_destroy"
+}
+elf_symbol {
+  id: 0x61ad5a29
+  name: "gro_cells_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xadf066b5
+  type_id: 0x96fd9031
+  full_name: "gro_cells_init"
+}
+elf_symbol {
+  id: 0x4b6846bd
+  name: "gro_cells_receive"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7ec2e930
+  type_id: 0x9622351a
+  full_name: "gro_cells_receive"
+}
+elf_symbol {
+  id: 0x3f69092d
+  name: "gs_alloc_req"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x43efdaa9
+  type_id: 0x263c17ab
+  full_name: "gs_alloc_req"
+}
+elf_symbol {
+  id: 0x61776461
+  name: "gs_free_req"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x29b24be5
+  type_id: 0x13af966b
+  full_name: "gs_free_req"
+}
+elf_symbol {
+  id: 0xfeac8d5f
+  name: "gserial_alloc_line"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x33bfdca2
+  type_id: 0x9afcf81c
+  full_name: "gserial_alloc_line"
+}
+elf_symbol {
+  id: 0xa18073b9
+  name: "gserial_connect"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2f16aee1
+  type_id: 0x96521268
+  full_name: "gserial_connect"
+}
+elf_symbol {
+  id: 0x9388d1ae
+  name: "gserial_disconnect"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9b1cd369
+  type_id: 0x1befd11c
+  full_name: "gserial_disconnect"
+}
+elf_symbol {
+  id: 0x62fb6b01
+  name: "gserial_free_line"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb6652875
+  type_id: 0x07f804fa
+  full_name: "gserial_free_line"
+}
+elf_symbol {
+  id: 0x8fd4b2bf
+  name: "gserial_resume"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3a315772
+  type_id: 0x1befd11c
+  full_name: "gserial_resume"
+}
+elf_symbol {
+  id: 0xa1e1e5e6
+  name: "gserial_suspend"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x09e532cf
+  type_id: 0x1befd11c
+  full_name: "gserial_suspend"
+}
+elf_symbol {
+  id: 0x8dfcda69
+  name: "guid_gen"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6c3f70e0
+  type_id: 0x198f0b17
+  full_name: "guid_gen"
+}
+elf_symbol {
+  id: 0x236ad020
+  name: "guid_null"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x8df9dd10
+  type_id: 0xf2dcbe16
+  full_name: "guid_null"
+}
+elf_symbol {
+  id: 0x57f86533
+  name: "h4_recv_buf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x348e0aad
+  type_id: 0x6ff47396
+  full_name: "h4_recv_buf"
+}
+elf_symbol {
+  id: 0x2c0d609d
+  name: "handle_bad_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4f630b02
+  type_id: 0x1c4a186e
+  full_name: "handle_bad_irq"
+}
+elf_symbol {
+  id: 0x34e65374
+  name: "handle_edge_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdff88e7a
+  type_id: 0x1c4a186e
+  full_name: "handle_edge_irq"
+}
+elf_symbol {
+  id: 0xcd5440a2
+  name: "handle_fasteoi_ack_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7e72c959
+  type_id: 0x1c4a186e
+  full_name: "handle_fasteoi_ack_irq"
+}
+elf_symbol {
+  id: 0x749e8c39
+  name: "handle_fasteoi_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd2b89b13
+  type_id: 0x1c4a186e
+  full_name: "handle_fasteoi_irq"
+}
+elf_symbol {
+  id: 0x6bfa17c9
+  name: "handle_level_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x192e18c0
+  type_id: 0x1c4a186e
+  full_name: "handle_level_irq"
+}
+elf_symbol {
+  id: 0x9f446d29
+  name: "handle_nested_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x549525ef
+  type_id: 0x01f9081c
+  full_name: "handle_nested_irq"
+}
+elf_symbol {
+  id: 0xab6386a0
+  name: "handle_simple_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3529af2e
+  type_id: 0x1c4a186e
+  full_name: "handle_simple_irq"
+}
+elf_symbol {
+  id: 0x55e1ead1
+  name: "handle_sysrq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7647726c
+  type_id: 0x09506558
+  full_name: "handle_sysrq"
+}
+elf_symbol {
+  id: 0x4ae6d6c4
+  name: "hashlen_string"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x162893fd
+  type_id: 0x596454e5
+  full_name: "hashlen_string"
+}
+elf_symbol {
+  id: 0x23498da9
+  name: "have_governor_per_policy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x47aad3b9
+  type_id: 0xfea45b04
+  full_name: "have_governor_per_policy"
+}
+elf_symbol {
+  id: 0xdbab134a
+  name: "hci_alloc_dev_priv"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x75e4ad4d
+  type_id: 0x9502ce9c
+  full_name: "hci_alloc_dev_priv"
+}
+elf_symbol {
+  id: 0x3906c0f6
+  name: "hci_cmd_sync"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8c23a80e
+  type_id: 0x6d996ee0
+  full_name: "hci_cmd_sync"
+}
+elf_symbol {
+  id: 0xc2efad35
+  name: "hci_cmd_sync_cancel"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x04743a79
+  type_id: 0x167427d5
+  full_name: "hci_cmd_sync_cancel"
+}
+elf_symbol {
+  id: 0xced6b01d
+  name: "hci_cmd_sync_queue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6dd2fc21
+  type_id: 0x9b91c1d8
+  full_name: "hci_cmd_sync_queue"
+}
+elf_symbol {
+  id: 0xed4f6979
+  name: "hci_conn_check_secure"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc9c8c6fe
+  type_id: 0x958cf238
+  full_name: "hci_conn_check_secure"
+}
+elf_symbol {
+  id: 0x1a89058a
+  name: "hci_conn_security"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x52e1a228
+  type_id: 0x95a1be2b
+  full_name: "hci_conn_security"
+}
+elf_symbol {
+  id: 0x7bbdca15
+  name: "hci_conn_switch_role"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x78bdce3f
+  type_id: 0x958cf238
+  full_name: "hci_conn_switch_role"
+}
+elf_symbol {
+  id: 0xeb452b30
+  name: "hci_free_dev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x46b3e1b5
+  type_id: 0x17e8a499
+  full_name: "hci_free_dev"
+}
+elf_symbol {
+  id: 0x7c237b76
+  name: "hci_get_route"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8b6af8db
+  type_id: 0x8493c696
+  full_name: "hci_get_route"
+}
+elf_symbol {
+  id: 0x0fcee8a0
+  name: "hci_mgmt_chan_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd2e8db95
+  type_id: 0x9a299233
+  full_name: "hci_mgmt_chan_register"
+}
+elf_symbol {
+  id: 0x0c5a048d
+  name: "hci_mgmt_chan_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1deb2107
+  type_id: 0x1731208f
+  full_name: "hci_mgmt_chan_unregister"
+}
+elf_symbol {
+  id: 0x2ca02363
+  name: "hci_recv_diag"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xac3e019a
+  type_id: 0x9ae52b81
+  full_name: "hci_recv_diag"
+}
+elf_symbol {
+  id: 0xb0989145
+  name: "hci_recv_frame"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2f0004dc
+  type_id: 0x9ae52b81
+  full_name: "hci_recv_frame"
+}
+elf_symbol {
+  id: 0x5fd40da9
+  name: "hci_register_cb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc0fef9b8
+  type_id: 0x9684db0e
+  full_name: "hci_register_cb"
+}
+elf_symbol {
+  id: 0xa95cc739
+  name: "hci_register_dev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeafcc152
+  type_id: 0x9af01625
+  full_name: "hci_register_dev"
+}
+elf_symbol {
+  id: 0xf954f6cc
+  name: "hci_release_dev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x83de4b95
+  type_id: 0x17e8a499
+  full_name: "hci_release_dev"
+}
+elf_symbol {
+  id: 0xbb3066ec
+  name: "hci_reset_dev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd0999dcb
+  type_id: 0x9af01625
+  full_name: "hci_reset_dev"
+}
+elf_symbol {
+  id: 0x37e2237f
+  name: "hci_resume_dev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3d17515f
+  type_id: 0x9af01625
+  full_name: "hci_resume_dev"
+}
+elf_symbol {
+  id: 0xcecb1881
+  name: "hci_set_fw_info"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb45bfbb5
+  type_id: 0x1739accf
+  full_name: "hci_set_fw_info"
+}
+elf_symbol {
+  id: 0x91929e22
+  name: "hci_set_hw_info"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb5477294
+  type_id: 0x1739accf
+  full_name: "hci_set_hw_info"
+}
+elf_symbol {
+  id: 0xc0424a96
+  name: "hci_suspend_dev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcdd6b9d0
+  type_id: 0x9af01625
+  full_name: "hci_suspend_dev"
+}
+elf_symbol {
+  id: 0x37830110
+  name: "hci_uart_register_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5d81e7f6
+  type_id: 0x959a93b5
+  full_name: "hci_uart_register_device"
+}
+elf_symbol {
+  id: 0x5d90edb1
+  name: "hci_uart_tx_wakeup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xec73ca35
+  type_id: 0x9553fb18
+  full_name: "hci_uart_tx_wakeup"
+}
+elf_symbol {
+  id: 0xb69012e2
+  name: "hci_uart_unregister_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7ca9fad0
+  type_id: 0x184b49a4
+  full_name: "hci_uart_unregister_device"
+}
+elf_symbol {
+  id: 0xc78d4b07
+  name: "hci_unregister_cb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8b90629a
+  type_id: 0x9684db0e
+  full_name: "hci_unregister_cb"
+}
+elf_symbol {
+  id: 0x3163ad8e
+  name: "hci_unregister_dev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6554264c
+  type_id: 0x17e8a499
+  full_name: "hci_unregister_dev"
+}
+elf_symbol {
+  id: 0x78d85567
+  name: "hdmi_audio_infoframe_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb14ab1ef
+  type_id: 0x96b0fa3b
+  full_name: "hdmi_audio_infoframe_init"
+}
+elf_symbol {
+  id: 0xcd9a2048
+  name: "hdmi_audio_infoframe_pack"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x29e1e204
+  type_id: 0x1f9e005b
+  full_name: "hdmi_audio_infoframe_pack"
+}
+elf_symbol {
+  id: 0x0e1d2fa4
+  name: "hdmi_avi_infoframe_check"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x21be37e1
+  type_id: 0x9900db85
+  full_name: "hdmi_avi_infoframe_check"
+}
+elf_symbol {
+  id: 0x306e3b3d
+  name: "hdmi_avi_infoframe_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x25e58a09
+  type_id: 0x14186939
+  full_name: "hdmi_avi_infoframe_init"
+}
+elf_symbol {
+  id: 0x684435da
+  name: "hdmi_avi_infoframe_pack"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x809712ff
+  type_id: 0x102e21e5
+  full_name: "hdmi_avi_infoframe_pack"
+}
+elf_symbol {
+  id: 0x7ec10e18
+  name: "hdmi_drm_infoframe_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0ea593f6
+  type_id: 0x9f3d453e
+  full_name: "hdmi_drm_infoframe_init"
+}
+elf_symbol {
+  id: 0xe197ec6f
+  name: "hdmi_drm_infoframe_pack"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe4bc2c2f
+  type_id: 0x1613bf5e
+  full_name: "hdmi_drm_infoframe_pack"
+}
+elf_symbol {
+  id: 0x58069299
+  name: "hdmi_drm_infoframe_pack_only"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5a290250
+  type_id: 0x1bcd63e2
+  full_name: "hdmi_drm_infoframe_pack_only"
+}
+elf_symbol {
+  id: 0x84d18ebf
+  name: "hdmi_infoframe_pack"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x595d8002
+  type_id: 0x1a92fc9b
+  full_name: "hdmi_infoframe_pack"
+}
+elf_symbol {
+  id: 0x2a0bd345
+  name: "hdmi_vendor_infoframe_pack"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x526eef2c
+  type_id: 0x1bdce98f
+  full_name: "hdmi_vendor_infoframe_pack"
+}
+elf_symbol {
+  id: 0x7d6d55a7
+  name: "hex2bin"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x50cf7585
+  type_id: 0x9d7465e8
+  full_name: "hex2bin"
+}
+elf_symbol {
+  id: 0x98db1088
+  name: "hex_asc"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x7129e5f8
+  type_id: 0xb07e9934
+  full_name: "hex_asc"
+}
+elf_symbol {
+  id: 0xc42edfb4
+  name: "hex_asc_upper"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x8d73278e
+  type_id: 0xb07e9934
+  full_name: "hex_asc_upper"
+}
+elf_symbol {
+  id: 0x9302ca1c
+  name: "hex_dump_to_buffer"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfe916dc6
+  type_id: 0x900fa5a8
+  full_name: "hex_dump_to_buffer"
+}
+elf_symbol {
+  id: 0x88f82161
+  name: "hex_to_bin"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xab6d5b3b
+  type_id: 0x8ae0b646
+  full_name: "hex_to_bin"
+}
+elf_symbol {
+  id: 0xccc593d6
+  name: "hid_add_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa110d252
+  type_id: 0x9ef9d283
+  full_name: "hid_add_device"
+}
+elf_symbol {
+  id: 0x97a02af0
+  name: "hid_allocate_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x88125dd8
+  type_id: 0x98aacbd0
+  full_name: "hid_allocate_device"
+}
+elf_symbol {
+  id: 0x2ffc7c7e
+  name: "hid_destroy_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa3b9a474
+  type_id: 0x13e1603f
+  full_name: "hid_destroy_device"
+}
+elf_symbol {
+  id: 0x7d0e44ca
+  name: "hid_ignore"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc01e547e
+  type_id: 0xfddd6aa8
+  full_name: "hid_ignore"
+}
+elf_symbol {
+  id: 0x10de460f
+  name: "hid_input_report"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4464f8bd
+  type_id: 0x9d13a27c
+  full_name: "hid_input_report"
+}
+elf_symbol {
+  id: 0x6ca4d0ed
+  name: "hid_parse_report"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4a8dd239
+  type_id: 0x9e711486
+  full_name: "hid_parse_report"
+}
+elf_symbol {
+  id: 0x21d35235
+  name: "hidp_hid_driver"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xddb0b03b
+  type_id: 0x2def15e8
+  full_name: "hidp_hid_driver"
+}
+elf_symbol {
+  id: 0x334ff68f
+  name: "high_memory"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x8a7d1c31
+  type_id: 0x18bd6530
+  full_name: "high_memory"
+}
+elf_symbol {
+  id: 0xd7ecf501
+  name: "housekeeping_cpumask"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf48490a1
+  type_id: 0x6a3e5f1f
+  full_name: "housekeeping_cpumask"
+}
+elf_symbol {
+  id: 0xa5f8942d
+  name: "housekeeping_overridden"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x74e73871
+  type_id: 0x8e47c273
+  full_name: "housekeeping_overridden"
+}
+elf_symbol {
+  id: 0x552bcd06
+  name: "housekeeping_test_cpu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4bdb8dcc
+  type_id: 0xe4560854
+  full_name: "housekeeping_test_cpu"
+}
+elf_symbol {
+  id: 0x86e16775
+  name: "hrtimer_active"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0ecd991f
+  type_id: 0xf2f497a5
+  full_name: "hrtimer_active"
+}
+elf_symbol {
+  id: 0x66b7fd66
+  name: "hrtimer_cancel"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcc69bd8c
+  type_id: 0x93f39d0d
+  full_name: "hrtimer_cancel"
+}
+elf_symbol {
+  id: 0xd54152db
+  name: "hrtimer_forward"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x76c41756
+  type_id: 0x59ebcc7a
+  full_name: "hrtimer_forward"
+}
+elf_symbol {
+  id: 0xd68b6296
+  name: "hrtimer_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3ebd5214
+  type_id: 0x1feb1868
+  full_name: "hrtimer_init"
+}
+elf_symbol {
+  id: 0xa17a9ffe
+  name: "hrtimer_init_sleeper"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6d4598b2
+  type_id: 0x14bcf198
+  full_name: "hrtimer_init_sleeper"
+}
+elf_symbol {
+  id: 0xe0e52b19
+  name: "hrtimer_resolution"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x406c4cb1
+  type_id: 0x4585663f
+  full_name: "hrtimer_resolution"
+}
+elf_symbol {
+  id: 0xf16f6abd
+  name: "hrtimer_sleeper_start_expires"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7c4d9d7e
+  type_id: 0x14a1954e
+  full_name: "hrtimer_sleeper_start_expires"
+}
+elf_symbol {
+  id: 0xfe586a82
+  name: "hrtimer_start_range_ns"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x939fc2ef
+  type_id: 0x1e89aa3c
+  full_name: "hrtimer_start_range_ns"
+}
+elf_symbol {
+  id: 0x49327479
+  name: "hrtimer_try_to_cancel"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xef93df4b
+  type_id: 0x93f39d0d
+  full_name: "hrtimer_try_to_cancel"
+}
+elf_symbol {
+  id: 0xef64a177
+  name: "hvc_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7ec68d0c
+  type_id: 0x055da682
+  full_name: "hvc_alloc"
+}
+elf_symbol {
+  id: 0x72108945
+  name: "hvc_instantiate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf217d763
+  type_id: 0x9b1ff8be
+  full_name: "hvc_instantiate"
+}
+elf_symbol {
+  id: 0x9e9cd7f8
+  name: "hvc_kick"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9833bc0c
+  type_id: 0x10985193
+  full_name: "hvc_kick"
+}
+elf_symbol {
+  id: 0x33f91506
+  name: "hvc_poll"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x138e6a71
+  type_id: 0x929702b9
+  full_name: "hvc_poll"
+}
+elf_symbol {
+  id: 0xdd2248de
+  name: "hvc_remove"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x24ab3da0
+  type_id: 0x929702b9
+  full_name: "hvc_remove"
+}
+elf_symbol {
+  id: 0x5af755ee
+  name: "hwrng_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe0c4e14d
+  type_id: 0x98fc633b
+  full_name: "hwrng_register"
+}
+elf_symbol {
+  id: 0xecce2e76
+  name: "hwrng_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd0fd7085
+  type_id: 0x15e4d187
+  full_name: "hwrng_unregister"
+}
+elf_symbol {
+  id: 0x9a65c4be
+  name: "hwspin_lock_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x622eaffa
+  type_id: 0x9f2e9dbc
+  full_name: "hwspin_lock_free"
+}
+elf_symbol {
+  id: 0xaa95b979
+  name: "hwspin_lock_request_specific"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x718c6b07
+  type_id: 0xd208e2cb
+  full_name: "hwspin_lock_request_specific"
+}
+elf_symbol {
+  id: 0xe15d2559
+  name: "hypervisor_kobj"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xa9026146
+  type_id: 0x23f09c34
+  full_name: "hypervisor_kobj"
+}
+elf_symbol {
+  id: 0x9cf659eb
+  name: "i2c_adapter_type"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x0ddcaaf6
+  type_id: 0xf292150d
+  full_name: "i2c_adapter_type"
+}
+elf_symbol {
+  id: 0xeadbb948
+  name: "i2c_add_adapter"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x23955e15
+  type_id: 0x94a6b558
+  full_name: "i2c_add_adapter"
+}
+elf_symbol {
+  id: 0x58fde223
+  name: "i2c_add_numbered_adapter"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2d5878f2
+  type_id: 0x94a6b558
+  full_name: "i2c_add_numbered_adapter"
+}
+elf_symbol {
+  id: 0x6fe725e4
+  name: "i2c_bit_add_bus"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe11a059a
+  type_id: 0x94a6b558
+  full_name: "i2c_bit_add_bus"
+}
+elf_symbol {
+  id: 0x01f2c038
+  name: "i2c_bit_add_numbered_bus"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc11f3e67
+  type_id: 0x94a6b558
+  full_name: "i2c_bit_add_numbered_bus"
+}
+elf_symbol {
+  id: 0x949ba632
+  name: "i2c_bus_type"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xbd795adf
+  type_id: 0x257935aa
+  full_name: "i2c_bus_type"
+}
+elf_symbol {
+  id: 0x09c9d41d
+  name: "i2c_client_type"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xf09b82a1
+  type_id: 0xf292150d
+  full_name: "i2c_client_type"
+}
+elf_symbol {
+  id: 0x984a209f
+  name: "i2c_del_adapter"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe4034f76
+  type_id: 0x19be07e4
+  full_name: "i2c_del_adapter"
+}
+elf_symbol {
+  id: 0x5bfc6931
+  name: "i2c_del_driver"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfee5be94
+  type_id: 0x1c0343dd
+  full_name: "i2c_del_driver"
+}
+elf_symbol {
+  id: 0x6d03f920
+  name: "i2c_for_each_dev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4a2cdddd
+  type_id: 0x9b188ead
+  full_name: "i2c_for_each_dev"
+}
+elf_symbol {
+  id: 0x830ea684
+  name: "i2c_generic_scl_recovery"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x81baa69a
+  type_id: 0x94a6b558
+  full_name: "i2c_generic_scl_recovery"
+}
+elf_symbol {
+  id: 0x7b53e605
+  name: "i2c_get_adapter"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7d016ced
+  type_id: 0x754e9079
+  full_name: "i2c_get_adapter"
+}
+elf_symbol {
+  id: 0x79e33abb
+  name: "i2c_get_device_id"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x532b32d0
+  type_id: 0x91c515b1
+  full_name: "i2c_get_device_id"
+}
+elf_symbol {
+  id: 0x6a503675
+  name: "i2c_get_dma_safe_msg_buf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x42041512
+  type_id: 0x48b47bab
+  full_name: "i2c_get_dma_safe_msg_buf"
+}
+elf_symbol {
+  id: 0xe548a597
+  name: "i2c_match_id"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7d78bc7f
+  type_id: 0xbd7fe584
+  full_name: "i2c_match_id"
+}
+elf_symbol {
+  id: 0x1b1cb0d0
+  name: "i2c_new_ancillary_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdfba8bdb
+  type_id: 0x80f6512d
+  full_name: "i2c_new_ancillary_device"
+}
+elf_symbol {
+  id: 0x8427551d
+  name: "i2c_new_client_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x23e85b8a
+  type_id: 0x8546debe
+  full_name: "i2c_new_client_device"
+}
+elf_symbol {
+  id: 0x74df05e1
+  name: "i2c_new_dummy_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2de51600
+  type_id: 0x87d0b8ed
+  full_name: "i2c_new_dummy_device"
+}
+elf_symbol {
+  id: 0x093c3961
+  name: "i2c_new_scanned_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3d63ebaf
+  type_id: 0x85273440
+  full_name: "i2c_new_scanned_device"
+}
+elf_symbol {
+  id: 0xdcc2a654
+  name: "i2c_parse_fw_timings"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7c2ab1f5
+  type_id: 0x10b9d05d
+  full_name: "i2c_parse_fw_timings"
+}
+elf_symbol {
+  id: 0xe7073e36
+  name: "i2c_put_adapter"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7ee4c4d5
+  type_id: 0x19be07e4
+  full_name: "i2c_put_adapter"
+}
+elf_symbol {
+  id: 0xda059fd6
+  name: "i2c_put_dma_safe_msg_buf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4dae16e4
+  type_id: 0x108d779b
+  full_name: "i2c_put_dma_safe_msg_buf"
+}
+elf_symbol {
+  id: 0xf9a63f6b
+  name: "i2c_recover_bus"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xed0c9fdd
+  type_id: 0x94a6b558
+  full_name: "i2c_recover_bus"
+}
+elf_symbol {
+  id: 0xfc041c30
+  name: "i2c_register_driver"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x50f5d94e
+  type_id: 0x9f80a51b
+  full_name: "i2c_register_driver"
+}
+elf_symbol {
+  id: 0x6079aa3a
+  name: "i2c_smbus_read_byte"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd8fd9518
+  type_id: 0x8db808c2
+  full_name: "i2c_smbus_read_byte"
+}
+elf_symbol {
+  id: 0x01d46904
+  name: "i2c_smbus_read_byte_data"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3e83308c
+  type_id: 0x8d1d790a
+  full_name: "i2c_smbus_read_byte_data"
+}
+elf_symbol {
+  id: 0x5bf25f7e
+  name: "i2c_smbus_read_i2c_block_data"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xefa71d91
+  type_id: 0x8d172d0a
+  full_name: "i2c_smbus_read_i2c_block_data"
+}
+elf_symbol {
+  id: 0x93a3cbac
+  name: "i2c_smbus_read_word_data"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa3b92a99
+  type_id: 0x8d1d790a
+  full_name: "i2c_smbus_read_word_data"
+}
+elf_symbol {
+  id: 0x32d81b47
+  name: "i2c_smbus_write_byte"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2a0c51ee
+  type_id: 0x8d1d790a
+  full_name: "i2c_smbus_write_byte"
+}
+elf_symbol {
+  id: 0xfd060ae2
+  name: "i2c_smbus_write_byte_data"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb16b9653
+  type_id: 0x8d172e16
+  full_name: "i2c_smbus_write_byte_data"
+}
+elf_symbol {
+  id: 0xed1c6463
+  name: "i2c_smbus_write_i2c_block_data"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4104632b
+  type_id: 0x8d17d210
+  full_name: "i2c_smbus_write_i2c_block_data"
+}
+elf_symbol {
+  id: 0x0cf580c0
+  name: "i2c_smbus_write_word_data"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaed86104
+  type_id: 0x8d392a65
+  full_name: "i2c_smbus_write_word_data"
+}
+elf_symbol {
+  id: 0x8e169483
+  name: "i2c_smbus_xfer"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe1bd4760
+  type_id: 0x8a03b82b
+  full_name: "i2c_smbus_xfer"
+}
+elf_symbol {
+  id: 0xf51269dc
+  name: "i2c_transfer"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaf50d612
+  type_id: 0x9480cdfa
+  full_name: "i2c_transfer"
+}
+elf_symbol {
+  id: 0x8fcd82af
+  name: "i2c_transfer_buffer_flags"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x51f60267
+  type_id: 0x916314a3
+  full_name: "i2c_transfer_buffer_flags"
+}
+elf_symbol {
+  id: 0xfc3516fe
+  name: "i2c_unregister_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x08d4f9f1
+  type_id: 0x1c01c960
+  full_name: "i2c_unregister_device"
+}
+elf_symbol {
+  id: 0xcb84ba6b
+  name: "i2c_verify_adapter"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd7a2c299
+  type_id: 0x6c109ae9
+  full_name: "i2c_verify_adapter"
+}
+elf_symbol {
+  id: 0x04c802bf
+  name: "i2c_verify_client"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfa83ba6b
+  type_id: 0x8c25e63e
+  full_name: "i2c_verify_client"
+}
+elf_symbol {
+  id: 0x5942f608
+  name: "i3c_device_do_priv_xfers"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x22eaea00
+  type_id: 0x91e7d0ce
+  full_name: "i3c_device_do_priv_xfers"
+}
+elf_symbol {
+  id: 0x345672f8
+  name: "i3c_device_match_id"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x576a3eee
+  type_id: 0x0c049f24
+  full_name: "i3c_device_match_id"
+}
+elf_symbol {
+  id: 0x5e92ab6f
+  name: "i3c_driver_register_with_owner"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8c6fa3c5
+  type_id: 0x952ae349
+  full_name: "i3c_driver_register_with_owner"
+}
+elf_symbol {
+  id: 0x3c49d772
+  name: "i3c_driver_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb0e05202
+  type_id: 0x181ece84
+  full_name: "i3c_driver_unregister"
+}
+elf_symbol {
+  id: 0x593078ec
+  name: "i3c_generic_ibi_alloc_pool"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x62e6c946
+  type_id: 0xea3d26bb
+  full_name: "i3c_generic_ibi_alloc_pool"
+}
+elf_symbol {
+  id: 0x1c35e67b
+  name: "i3c_generic_ibi_free_pool"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x76fe3e05
+  type_id: 0x1b3be436
+  full_name: "i3c_generic_ibi_free_pool"
+}
+elf_symbol {
+  id: 0x7f6e81ef
+  name: "i3c_generic_ibi_get_free_slot"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe8a222ed
+  type_id: 0x2b7baaf7
+  full_name: "i3c_generic_ibi_get_free_slot"
+}
+elf_symbol {
+  id: 0xca6dde07
+  name: "i3c_generic_ibi_recycle_slot"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9bb9900e
+  type_id: 0x1b3b60ec
+  full_name: "i3c_generic_ibi_recycle_slot"
+}
+elf_symbol {
+  id: 0x9187fbcc
+  name: "i3c_master_add_i3c_dev_locked"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5a58c832
+  type_id: 0x9d9ed332
+  full_name: "i3c_master_add_i3c_dev_locked"
+}
+elf_symbol {
+  id: 0xf694daf8
+  name: "i3c_master_defslvs_locked"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x35afdf5e
+  type_id: 0x9d3ba2fa
+  full_name: "i3c_master_defslvs_locked"
+}
+elf_symbol {
+  id: 0x4b80a5fd
+  name: "i3c_master_disec_locked"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb66352c3
+  type_id: 0x9d94842e
+  full_name: "i3c_master_disec_locked"
+}
+elf_symbol {
+  id: 0xbf3b0543
+  name: "i3c_master_do_daa"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7d13af4c
+  type_id: 0x9d3ba2fa
+  full_name: "i3c_master_do_daa"
+}
+elf_symbol {
+  id: 0x9a728d67
+  name: "i3c_master_enec_locked"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc8f3b89d
+  type_id: 0x9d94842e
+  full_name: "i3c_master_enec_locked"
+}
+elf_symbol {
+  id: 0x620ba53b
+  name: "i3c_master_entdaa_locked"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8c66b80d
+  type_id: 0x9d3ba2fa
+  full_name: "i3c_master_entdaa_locked"
+}
+elf_symbol {
+  id: 0xeb0fa4d4
+  name: "i3c_master_get_free_addr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x275cefcf
+  type_id: 0x9d9ed332
+  full_name: "i3c_master_get_free_addr"
+}
+elf_symbol {
+  id: 0x3dda00d0
+  name: "i3c_master_queue_ibi"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x45d5dc52
+  type_id: 0x13015378
+  full_name: "i3c_master_queue_ibi"
+}
+elf_symbol {
+  id: 0x44500726
+  name: "i3c_master_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x507aa18a
+  type_id: 0x9d3fcc61
+  full_name: "i3c_master_register"
+}
+elf_symbol {
+  id: 0x16ef3ff0
+  name: "i3c_master_set_info"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf6904e5b
+  type_id: 0x9dd914f5
+  full_name: "i3c_master_set_info"
+}
+elf_symbol {
+  id: 0x4a5526be
+  name: "i3c_master_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0cf3450f
+  type_id: 0x9d3ba2fa
+  full_name: "i3c_master_unregister"
+}
+elf_symbol {
+  id: 0x9a09d7f5
+  name: "icc_disable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9209f354
+  type_id: 0x975db23f
+  full_name: "icc_disable"
+}
+elf_symbol {
+  id: 0xd04a88f6
+  name: "icc_enable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfcdbe205
+  type_id: 0x975db23f
+  full_name: "icc_enable"
+}
+elf_symbol {
+  id: 0xcdce4bd7
+  name: "icc_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2230900a
+  type_id: 0x2ab7a064
+  full_name: "icc_get"
+}
+elf_symbol {
+  id: 0x0430bdc8
+  name: "icc_link_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7789af3e
+  type_id: 0x9f89d33b
+  full_name: "icc_link_create"
+}
+elf_symbol {
+  id: 0x5d223813
+  name: "icc_node_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8ab41c8a
+  type_id: 0x13c6ea20
+  full_name: "icc_node_add"
+}
+elf_symbol {
+  id: 0xfe365f09
+  name: "icc_node_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc1ffe99d
+  type_id: 0xa672c2e4
+  full_name: "icc_node_create"
+}
+elf_symbol {
+  id: 0xed3a9098
+  name: "icc_node_del"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6d48fff5
+  type_id: 0x130de2cb
+  full_name: "icc_node_del"
+}
+elf_symbol {
+  id: 0x5434b2e4
+  name: "icc_node_destroy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc58a3ee6
+  type_id: 0x09506558
+  full_name: "icc_node_destroy"
+}
+elf_symbol {
+  id: 0xad8697d5
+  name: "icc_nodes_remove"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x72ec9bde
+  type_id: 0x91306d97
+  full_name: "icc_nodes_remove"
+}
+elf_symbol {
+  id: 0x057be6ef
+  name: "icc_provider_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x01fadf78
+  type_id: 0x91306d97
+  full_name: "icc_provider_add"
+}
+elf_symbol {
+  id: 0x577a8e49
+  name: "icc_provider_del"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x649dab98
+  type_id: 0x1c28df2b
+  full_name: "icc_provider_del"
+}
+elf_symbol {
+  id: 0x30251c53
+  name: "icc_provider_deregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5509571e
+  type_id: 0x1c28df2b
+  full_name: "icc_provider_deregister"
+}
+elf_symbol {
+  id: 0x9d4abe0a
+  name: "icc_provider_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x36b6074c
+  type_id: 0x1c28df2b
+  full_name: "icc_provider_init"
+}
+elf_symbol {
+  id: 0x12c6c0e3
+  name: "icc_provider_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb7ec9717
+  type_id: 0x91306d97
+  full_name: "icc_provider_register"
+}
+elf_symbol {
+  id: 0xc8d0d1e5
+  name: "icc_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x061de863
+  type_id: 0x1a450083
+  full_name: "icc_put"
+}
+elf_symbol {
+  id: 0xcaf710e3
+  name: "icc_set_bw"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x23b17c2e
+  type_id: 0x944bd099
+  full_name: "icc_set_bw"
+}
+elf_symbol {
+  id: 0x92a80b79
+  name: "icc_set_tag"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x245d44ae
+  type_id: 0x1961202f
+  full_name: "icc_set_tag"
+}
+elf_symbol {
+  id: 0x17b1a06d
+  name: "icc_std_aggregate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfc64eb00
+  type_id: 0x9d001826
+  full_name: "icc_std_aggregate"
+}
+elf_symbol {
+  id: 0x5e075973
+  name: "icc_sync_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xca163010
+  type_id: 0x100e6fc8
+  full_name: "icc_sync_state"
+}
+elf_symbol {
+  id: 0x58de8ff6
+  name: "ida_alloc_range"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe7a02573
+  type_id: 0x903a6e2b
+  full_name: "ida_alloc_range"
+}
+elf_symbol {
+  id: 0xb9a0744d
+  name: "ida_destroy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa7d5f92e
+  type_id: 0x1c266ecd
+  full_name: "ida_destroy"
+}
+elf_symbol {
+  id: 0x9c458796
+  name: "ida_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xffb7c514
+  type_id: 0x1d307b55
+  full_name: "ida_free"
+}
+elf_symbol {
+  id: 0x7f40c9c2
+  name: "idr_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb8f11603
+  type_id: 0x9f15f96a
+  full_name: "idr_alloc"
+}
+elf_symbol {
+  id: 0x3b6f5da6
+  name: "idr_alloc_cyclic"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x91f44510
+  type_id: 0x9f15f96a
+  full_name: "idr_alloc_cyclic"
+}
+elf_symbol {
+  id: 0x4a59ab5d
+  name: "idr_alloc_u32"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd9916c3a
+  type_id: 0x9f035484
+  full_name: "idr_alloc_u32"
+}
+elf_symbol {
+  id: 0x5ef63cd1
+  name: "idr_destroy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8e17b3ae
+  type_id: 0x1277d69c
+  full_name: "idr_destroy"
+}
+elf_symbol {
+  id: 0xdc130490
+  name: "idr_find"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x20978fb9
+  type_id: 0x592c9689
+  full_name: "idr_find"
+}
+elf_symbol {
+  id: 0xd4556504
+  name: "idr_for_each"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1d40b6f3
+  type_id: 0x925f5277
+  full_name: "idr_for_each"
+}
+elf_symbol {
+  id: 0x80fbce75
+  name: "idr_get_next"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc57c48a3
+  type_id: 0x543456cb
+  full_name: "idr_get_next"
+}
+elf_symbol {
+  id: 0xbb70a764
+  name: "idr_get_next_ul"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcc1b882a
+  type_id: 0x5460037c
+  full_name: "idr_get_next_ul"
+}
+elf_symbol {
+  id: 0x18b26540
+  name: "idr_preload"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x954f099c
+  type_id: 0x2cf1e668
+  full_name: "idr_preload"
+}
+elf_symbol {
+  id: 0x74ecaa54
+  name: "idr_remove"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7665a95b
+  type_id: 0x54b4e36c
+  full_name: "idr_remove"
+}
+elf_symbol {
+  id: 0x714d6f42
+  name: "idr_replace"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7b82b9a1
+  type_id: 0x54171e33
+  full_name: "idr_replace"
+}
+elf_symbol {
+  id: 0x303c00b2
+  name: "ieee802154_alloc_hw"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb6142068
+  type_id: 0x53d7cb1d
+  full_name: "ieee802154_alloc_hw"
+}
+elf_symbol {
+  id: 0x62acf96f
+  name: "ieee802154_configure_durations"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x94de3220
+  type_id: 0x1af18e52
+  full_name: "ieee802154_configure_durations"
+}
+elf_symbol {
+  id: 0xccd41de3
+  name: "ieee802154_free_hw"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd51b4e71
+  type_id: 0x12d46025
+  full_name: "ieee802154_free_hw"
+}
+elf_symbol {
+  id: 0xf2d1305b
+  name: "ieee802154_hdr_peek"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe130fb3d
+  type_id: 0x92f9a820
+  full_name: "ieee802154_hdr_peek"
+}
+elf_symbol {
+  id: 0x7d9923b4
+  name: "ieee802154_hdr_peek_addrs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe67ef397
+  type_id: 0x92f9a820
+  full_name: "ieee802154_hdr_peek_addrs"
+}
+elf_symbol {
+  id: 0x2e42a423
+  name: "ieee802154_hdr_pull"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc5b881fe
+  type_id: 0x9c3297de
+  full_name: "ieee802154_hdr_pull"
+}
+elf_symbol {
+  id: 0xea3447a8
+  name: "ieee802154_hdr_push"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcba810a5
+  type_id: 0x9c3297de
+  full_name: "ieee802154_hdr_push"
+}
+elf_symbol {
+  id: 0xac4a03ce
+  name: "ieee802154_max_payload"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x87e2553b
+  type_id: 0x91ca4ada
+  full_name: "ieee802154_max_payload"
+}
+elf_symbol {
+  id: 0x42cccec0
+  name: "ieee802154_register_hw"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0e635775
+  type_id: 0x9fccd299
+  full_name: "ieee802154_register_hw"
+}
+elf_symbol {
+  id: 0x083923d0
+  name: "ieee802154_rx_irqsafe"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x46b6ad46
+  type_id: 0x12cb0a9d
+  full_name: "ieee802154_rx_irqsafe"
+}
+elf_symbol {
+  id: 0xb59c8e60
+  name: "ieee802154_stop_queue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe8864751
+  type_id: 0x12d46025
+  full_name: "ieee802154_stop_queue"
+}
+elf_symbol {
+  id: 0x82067880
+  name: "ieee802154_unregister_hw"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4c1a0b7f
+  type_id: 0x12d46025
+  full_name: "ieee802154_unregister_hw"
+}
+elf_symbol {
+  id: 0x8f70da42
+  name: "ieee802154_wake_queue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x009f6ef2
+  type_id: 0x12d46025
+  full_name: "ieee802154_wake_queue"
+}
+elf_symbol {
+  id: 0x82d54cd2
+  name: "ieee802154_xmit_complete"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf1cb8c75
+  type_id: 0x12da0256
+  full_name: "ieee802154_xmit_complete"
+}
+elf_symbol {
+  id: 0xec107a09
+  name: "ieee802154_xmit_error"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8e499608
+  type_id: 0x12d895b5
+  full_name: "ieee802154_xmit_error"
+}
+elf_symbol {
+  id: 0x841218b7
+  name: "ieee802154_xmit_hw_error"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe18257bc
+  type_id: 0x12c15d81
+  full_name: "ieee802154_xmit_hw_error"
+}
+elf_symbol {
+  id: 0x4a5f3d41
+  name: "ignore_console_lock_warning"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x98e508ef
+  type_id: 0x74d29cf1
+  full_name: "ignore_console_lock_warning"
+}
+elf_symbol {
+  id: 0x98a39db9
+  name: "iio_alloc_pollfunc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x054372d1
+  type_id: 0x6dc76989
+  full_name: "iio_alloc_pollfunc"
+}
+elf_symbol {
+  id: 0xf9fd308c
+  name: "iio_buffer_enabled"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2dafefcc
+  type_id: 0xf886bca4
+  full_name: "iio_buffer_enabled"
+}
+elf_symbol {
+  id: 0x5956f21f
+  name: "iio_buffer_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcd7f3ca6
+  type_id: 0x1b54f3ab
+  full_name: "iio_buffer_init"
+}
+elf_symbol {
+  id: 0x76041d7e
+  name: "iio_buffer_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x54e93489
+  type_id: 0x1b54f3ab
+  full_name: "iio_buffer_put"
+}
+elf_symbol {
+  id: 0xd941beb8
+  name: "iio_bus_type"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x2658a354
+  type_id: 0x257935aa
+  full_name: "iio_bus_type"
+}
+elf_symbol {
+  id: 0xe4653a75
+  name: "iio_channel_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x926b344f
+  type_id: 0xa98cedf4
+  full_name: "iio_channel_get"
+}
+elf_symbol {
+  id: 0x8aa99af0
+  name: "iio_channel_release"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2be9dcd5
+  type_id: 0x1ef16b9c
+  full_name: "iio_channel_release"
+}
+elf_symbol {
+  id: 0x7ee06725
+  name: "iio_dealloc_pollfunc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x02938fa8
+  type_id: 0x1eb5cb05
+  full_name: "iio_dealloc_pollfunc"
+}
+elf_symbol {
+  id: 0xea065265
+  name: "iio_device_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x337035d5
+  type_id: 0x582c94c3
+  full_name: "iio_device_alloc"
+}
+elf_symbol {
+  id: 0xd50bc6e1
+  name: "iio_device_attach_buffer"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbeb5b86b
+  type_id: 0x9b1eceac
+  full_name: "iio_device_attach_buffer"
+}
+elf_symbol {
+  id: 0xdf70779d
+  name: "iio_device_claim_direct_mode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe225d06e
+  type_id: 0x9ba2048f
+  full_name: "iio_device_claim_direct_mode"
+}
+elf_symbol {
+  id: 0x70513762
+  name: "iio_device_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb2b94823
+  type_id: 0x16bab633
+  full_name: "iio_device_free"
+}
+elf_symbol {
+  id: 0x49e3dfdd
+  name: "iio_device_id"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0c0a30c6
+  type_id: 0x9ba2048f
+  full_name: "iio_device_id"
+}
+elf_symbol {
+  id: 0x7a6b0e4c
+  name: "iio_device_release_direct_mode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf2f90b2a
+  type_id: 0x16bab633
+  full_name: "iio_device_release_direct_mode"
+}
+elf_symbol {
+  id: 0xe0909072
+  name: "iio_device_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x61037119
+  type_id: 0x16bab633
+  full_name: "iio_device_unregister"
+}
+elf_symbol {
+  id: 0xef661661
+  name: "iio_format_value"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4dce7dd4
+  type_id: 0x14de88f3
+  full_name: "iio_format_value"
+}
+elf_symbol {
+  id: 0x83815ff1
+  name: "iio_get_channel_type"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdb3f26e5
+  type_id: 0x93b5b685
+  full_name: "iio_get_channel_type"
+}
+elf_symbol {
+  id: 0x01f28688
+  name: "iio_get_time_ns"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x84bfb8a5
+  type_id: 0x884063ea
+  full_name: "iio_get_time_ns"
+}
+elf_symbol {
+  id: 0x2dd4437a
+  name: "iio_pollfunc_store_time"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdf76bbeb
+  type_id: 0x3b6e45be
+  full_name: "iio_pollfunc_store_time"
+}
+elf_symbol {
+  id: 0x23b23c74
+  name: "iio_push_event"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6eb1e6a2
+  type_id: 0x99e10ba5
+  full_name: "iio_push_event"
+}
+elf_symbol {
+  id: 0x88fdf87a
+  name: "iio_push_to_buffers"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd5e71e60
+  type_id: 0x9b4678d8
+  full_name: "iio_push_to_buffers"
+}
+elf_symbol {
+  id: 0xe0c6693f
+  name: "iio_read_channel_attribute"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb5f8323e
+  type_id: 0x93a3791f
+  full_name: "iio_read_channel_attribute"
+}
+elf_symbol {
+  id: 0x4bda4ccf
+  name: "iio_read_channel_processed"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcfc18bfc
+  type_id: 0x93a4b915
+  full_name: "iio_read_channel_processed"
+}
+elf_symbol {
+  id: 0x350d9a11
+  name: "iio_read_channel_raw"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x828f7acb
+  type_id: 0x93a4b915
+  full_name: "iio_read_channel_raw"
+}
+elf_symbol {
+  id: 0xb1548c88
+  name: "iio_read_const_attr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x83421f8e
+  type_id: 0x145d7056
+  full_name: "iio_read_const_attr"
+}
+elf_symbol {
+  id: 0x5ed0ce65
+  name: "iio_read_mount_matrix"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x75badd0f
+  type_id: 0x9d2fa4f1
+  full_name: "iio_read_mount_matrix"
+}
+elf_symbol {
+  id: 0xfc17cb5d
+  name: "iio_show_mount_matrix"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x068ed796
+  type_id: 0x13641115
+  full_name: "iio_show_mount_matrix"
+}
+elf_symbol {
+  id: 0x7ae28990
+  name: "iio_str_to_fixpoint"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x26f6b499
+  type_id: 0x939cd646
+  full_name: "iio_str_to_fixpoint"
+}
+elf_symbol {
+  id: 0xcc1f3656
+  name: "iio_trigger_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc5117958
+  type_id: 0x16dc304e
+  full_name: "iio_trigger_free"
+}
+elf_symbol {
+  id: 0x613f6d1f
+  name: "iio_trigger_notify_done"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4804dc0b
+  type_id: 0x16dc304e
+  full_name: "iio_trigger_notify_done"
+}
+elf_symbol {
+  id: 0x83c94241
+  name: "iio_trigger_poll"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf1c28f21
+  type_id: 0x16dc304e
+  full_name: "iio_trigger_poll"
+}
+elf_symbol {
+  id: 0x7551a60b
+  name: "iio_trigger_poll_chained"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe0895984
+  type_id: 0x16dc304e
+  full_name: "iio_trigger_poll_chained"
+}
+elf_symbol {
+  id: 0x08fd4b84
+  name: "iio_trigger_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x507b434c
+  type_id: 0x9bc482f2
+  full_name: "iio_trigger_register"
+}
+elf_symbol {
+  id: 0xc6d8f246
+  name: "iio_trigger_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x213fef96
+  type_id: 0x16dc304e
+  full_name: "iio_trigger_unregister"
+}
+elf_symbol {
+  id: 0x6f2f4bd1
+  name: "iio_write_channel_raw"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd7b18040
+  type_id: 0x92755a6c
+  full_name: "iio_write_channel_raw"
+}
+elf_symbol {
+  id: 0x00b4d2da
+  name: "import_iovec"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xba7e6dd3
+  type_id: 0x0dd33a8c
+  full_name: "import_iovec"
+}
+elf_symbol {
+  id: 0xdf968210
+  name: "in4_pton"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xac5fcec0
+  type_id: 0x9399e12a
+  full_name: "in4_pton"
+}
+elf_symbol {
+  id: 0xc93c3b7d
+  name: "in6_pton"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x609bcd98
+  type_id: 0x9399e12a
+  full_name: "in6_pton"
+}
+elf_symbol {
+  id: 0xcae49fd9
+  name: "in6addr_any"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x200b2041
+  type_id: 0xc75895bd
+  full_name: "in6addr_any"
+}
+elf_symbol {
+  id: 0x83940072
+  name: "in_aton"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1b6314fd
+  type_id: 0x031ed619
+  full_name: "in_aton"
+}
+elf_symbol {
+  id: 0x511cdd52
+  name: "in_egroup_p"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x39461d6a
+  type_id: 0xb1b78fab
+  full_name: "in_egroup_p"
+}
+elf_symbol {
+  id: 0x53baed4c
+  name: "inc_node_page_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5951be66
+  type_id: 0x11899381
+  full_name: "inc_node_page_state"
+}
+elf_symbol {
+  id: 0xaf4fc4b9
+  name: "inc_zone_page_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2e556a22
+  type_id: 0x125f5377
+  full_name: "inc_zone_page_state"
+}
+elf_symbol {
+  id: 0x2d6e1a71
+  name: "inet6_csk_xmit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x133c1612
+  type_id: 0x9ac293c4
+  full_name: "inet6_csk_xmit"
+}
+elf_symbol {
+  id: 0x3db1b953
+  name: "inet6_ioctl"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x81d46c70
+  type_id: 0x9882219f
+  full_name: "inet6_ioctl"
+}
+elf_symbol {
+  id: 0x1e4863ea
+  name: "inet_csk_get_port"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2a4d24d9
+  type_id: 0x99f517b1
+  full_name: "inet_csk_get_port"
+}
+elf_symbol {
+  id: 0x6e027547
+  name: "inet_frag_destroy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfe4dc306
+  type_id: 0x1edcf3e9
+  full_name: "inet_frag_destroy"
+}
+elf_symbol {
+  id: 0x18472cc5
+  name: "inet_frag_find"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x87588b1d
+  type_id: 0x51a0e42b
+  full_name: "inet_frag_find"
+}
+elf_symbol {
+  id: 0x2daf6508
+  name: "inet_frag_kill"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x39fd139c
+  type_id: 0x1edcf3e9
+  full_name: "inet_frag_kill"
+}
+elf_symbol {
+  id: 0x586598d1
+  name: "inet_frag_queue_insert"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8ee8b549
+  type_id: 0x93c92846
+  full_name: "inet_frag_queue_insert"
+}
+elf_symbol {
+  id: 0x23a8e1f9
+  name: "inet_frag_reasm_finish"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb88cfb0e
+  type_id: 0x1ece54e9
+  full_name: "inet_frag_reasm_finish"
+}
+elf_symbol {
+  id: 0x4e1b2c76
+  name: "inet_frag_reasm_prepare"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x478dbb9a
+  type_id: 0x58c67df5
+  full_name: "inet_frag_reasm_prepare"
+}
+elf_symbol {
+  id: 0xbf4f0b58
+  name: "inet_frags_fini"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x970d6b0a
+  type_id: 0x1039da16
+  full_name: "inet_frags_fini"
+}
+elf_symbol {
+  id: 0x6e6a2ec5
+  name: "inet_frags_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xba6f3ff6
+  type_id: 0x9d2168aa
+  full_name: "inet_frags_init"
+}
+elf_symbol {
+  id: 0xca2771be
+  name: "inet_ioctl"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4a5645e2
+  type_id: 0x9882219f
+  full_name: "inet_ioctl"
+}
+elf_symbol {
+  id: 0x7ded1ffe
+  name: "init_dummy_netdev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc87c64e6
+  type_id: 0x91296bda
+  full_name: "init_dummy_netdev"
+}
+elf_symbol {
+  id: 0xe42479db
+  name: "init_iova_domain"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd762c023
+  type_id: 0x1fb862d7
+  full_name: "init_iova_domain"
+}
+elf_symbol {
+  id: 0xd8b14976
+  name: "init_net"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xe139b2bb
+  type_id: 0x18c93498
+  full_name: "init_net"
+}
+elf_symbol {
+  id: 0x86c8a137
+  name: "init_on_free"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xf6f9d58d
+  type_id: 0x8e47c273
+  full_name: "init_on_free"
+}
+elf_symbol {
+  id: 0x64e448f4
+  name: "init_pid_ns"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x02820c79
+  type_id: 0x02240842
+  full_name: "init_pid_ns"
+}
+elf_symbol {
+  id: 0x4e874464
+  name: "init_pseudo"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x496cb012
+  type_id: 0x5d05d02e
+  full_name: "init_pseudo"
+}
+elf_symbol {
+  id: 0x7dce8737
+  name: "init_srcu_struct"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb0f2ca52
+  type_id: 0x956202e7
+  full_name: "init_srcu_struct"
+}
+elf_symbol {
+  id: 0x3d6f5577
+  name: "init_task"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xd567d551
+  type_id: 0x5e2641cb
+  full_name: "init_task"
+}
+elf_symbol {
+  id: 0x2b35dbba
+  name: "init_timer_key"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x79cf5987
+  type_id: 0x1f311b8f
+  full_name: "init_timer_key"
+}
+elf_symbol {
+  id: 0x0732d2d1
+  name: "init_user_ns"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xee6aba65
+  type_id: 0x14ee5a71
+  full_name: "init_user_ns"
+}
+elf_symbol {
+  id: 0x5eecacc4
+  name: "init_uts_ns"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x27e6258d
+  type_id: 0xed5f8e3e
+  full_name: "init_uts_ns"
+}
+elf_symbol {
+  id: 0x215b5641
+  name: "init_wait_entry"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfe487975
+  type_id: 0x10fabb94
+  full_name: "init_wait_entry"
+}
+elf_symbol {
+  id: 0xbf6470f2
+  name: "init_wait_var_entry"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5d49aabc
+  type_id: 0x1378736d
+  full_name: "init_wait_var_entry"
+}
+elf_symbol {
+  id: 0x18eeb52f
+  name: "input_alloc_absinfo"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3fbc7902
+  type_id: 0x1488e3e7
+  full_name: "input_alloc_absinfo"
+}
+elf_symbol {
+  id: 0xbc652525
+  name: "input_allocate_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2c85b85e
+  type_id: 0x3d249ff8
+  full_name: "input_allocate_device"
+}
+elf_symbol {
+  id: 0x2336c16f
+  name: "input_close_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc18ee033
+  type_id: 0x1ee8bea7
+  full_name: "input_close_device"
+}
+elf_symbol {
+  id: 0x5b69d05f
+  name: "input_copy_abs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3c6d2f73
+  type_id: 0x15912855
+  full_name: "input_copy_abs"
+}
+elf_symbol {
+  id: 0x1cfb5d03
+  name: "input_event"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4d18d895
+  type_id: 0x158e0ba5
+  full_name: "input_event"
+}
+elf_symbol {
+  id: 0x60efc3a4
+  name: "input_ff_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x240656bd
+  type_id: 0x988644c3
+  full_name: "input_ff_create"
+}
+elf_symbol {
+  id: 0xc802de31
+  name: "input_ff_create_memless"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd8192889
+  type_id: 0x99f99f1d
+  full_name: "input_ff_create_memless"
+}
+elf_symbol {
+  id: 0x6f29f28e
+  name: "input_ff_destroy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2adb5cc8
+  type_id: 0x1488e3e7
+  full_name: "input_ff_destroy"
+}
+elf_symbol {
+  id: 0xcd4b17c4
+  name: "input_free_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x58fd3714
+  type_id: 0x1488e3e7
+  full_name: "input_free_device"
+}
+elf_symbol {
+  id: 0x8d472246
+  name: "input_mt_assign_slots"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb82c6be5
+  type_id: 0x99d112d9
+  full_name: "input_mt_assign_slots"
+}
+elf_symbol {
+  id: 0x29087f7f
+  name: "input_mt_destroy_slots"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x22e218bc
+  type_id: 0x1488e3e7
+  full_name: "input_mt_destroy_slots"
+}
+elf_symbol {
+  id: 0xa4d70a3f
+  name: "input_mt_drop_unused"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd40e7ccb
+  type_id: 0x1488e3e7
+  full_name: "input_mt_drop_unused"
+}
+elf_symbol {
+  id: 0x4d98ff50
+  name: "input_mt_init_slots"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf24483b2
+  type_id: 0x9897259a
+  full_name: "input_mt_init_slots"
+}
+elf_symbol {
+  id: 0x6905de49
+  name: "input_mt_report_finger_count"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5a77d53a
+  type_id: 0x151460ab
+  full_name: "input_mt_report_finger_count"
+}
+elf_symbol {
+  id: 0xd5ec9823
+  name: "input_mt_report_pointer_emulation"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x65dfef9d
+  type_id: 0x153d1e98
+  full_name: "input_mt_report_pointer_emulation"
+}
+elf_symbol {
+  id: 0xb7c38617
+  name: "input_mt_report_slot_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe83a2318
+  type_id: 0xfbb9a33f
+  full_name: "input_mt_report_slot_state"
+}
+elf_symbol {
+  id: 0xa5fd7358
+  name: "input_mt_sync_frame"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe49ba9bc
+  type_id: 0x1488e3e7
+  full_name: "input_mt_sync_frame"
+}
+elf_symbol {
+  id: 0xc59a0788
+  name: "input_open_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe66e885f
+  type_id: 0x93f00c1b
+  full_name: "input_open_device"
+}
+elf_symbol {
+  id: 0xe6f7c5ea
+  name: "input_register_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7ce217c7
+  type_id: 0x9990515b
+  full_name: "input_register_device"
+}
+elf_symbol {
+  id: 0x718b5d04
+  name: "input_register_handle"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x080a0817
+  type_id: 0x93f00c1b
+  full_name: "input_register_handle"
+}
+elf_symbol {
+  id: 0xbcce2413
+  name: "input_register_handler"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2dfb4023
+  type_id: 0x9b6acfa5
+  full_name: "input_register_handler"
+}
+elf_symbol {
+  id: 0xdd50f291
+  name: "input_reset_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9b1f39da
+  type_id: 0x1488e3e7
+  full_name: "input_reset_device"
+}
+elf_symbol {
+  id: 0xd2b5c87d
+  name: "input_set_abs_params"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf28ecabf
+  type_id: 0x1586ba9c
+  full_name: "input_set_abs_params"
+}
+elf_symbol {
+  id: 0xf58961c1
+  name: "input_set_capability"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcbcf985f
+  type_id: 0x158f9726
+  full_name: "input_set_capability"
+}
+elf_symbol {
+  id: 0xfa66175a
+  name: "input_set_timestamp"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6887b297
+  type_id: 0x14cff3f5
+  full_name: "input_set_timestamp"
+}
+elf_symbol {
+  id: 0x6a48a444
+  name: "input_unregister_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd8654f13
+  type_id: 0x1488e3e7
+  full_name: "input_unregister_device"
+}
+elf_symbol {
+  id: 0xc73383c1
+  name: "input_unregister_handle"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x52367fa7
+  type_id: 0x1ee8bea7
+  full_name: "input_unregister_handle"
+}
+elf_symbol {
+  id: 0x0ee6aecf
+  name: "input_unregister_handler"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7126ca1f
+  type_id: 0x16727d19
+  full_name: "input_unregister_handler"
+}
+elf_symbol {
+  id: 0x3c5daf32
+  name: "insert_resource"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbc9d9d19
+  type_id: 0x93bee8a1
+  full_name: "insert_resource"
+}
+elf_symbol {
+  id: 0xbd83f7de
+  name: "int_pow"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1af267f8
+  type_id: 0x72450a37
+  full_name: "int_pow"
+}
+elf_symbol {
+  id: 0xb6637ce6
+  name: "int_sqrt"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb678366f
+  type_id: 0x3d719472
+  full_name: "int_sqrt"
+}
+elf_symbol {
+  id: 0x5ce8149d
+  name: "int_to_scsilun"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5ed90adc
+  type_id: 0x3494ded4
+  full_name: "int_to_scsilun"
+}
+elf_symbol {
+  id: 0x92b91a66
+  name: "interval_tree_insert"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdab5a1eb
+  type_id: 0x1b4c69f5
+  full_name: "interval_tree_insert"
+}
+elf_symbol {
+  id: 0x0d19106d
+  name: "interval_tree_iter_first"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa44a1307
+  type_id: 0x718cfe87
+  full_name: "interval_tree_iter_first"
+}
+elf_symbol {
+  id: 0xfe94820e
+  name: "interval_tree_iter_next"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd96babb4
+  type_id: 0x75094080
+  full_name: "interval_tree_iter_next"
+}
+elf_symbol {
+  id: 0xe7fc8dce
+  name: "interval_tree_remove"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x09b53e14
+  type_id: 0x1b4c69f5
+  full_name: "interval_tree_remove"
+}
+elf_symbol {
+  id: 0xc3e2d4ae
+  name: "invalidate_mapping_pages"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xca6b8a4a
+  type_id: 0x340d6f59
+  full_name: "invalidate_mapping_pages"
+}
+elf_symbol {
+  id: 0x6b8c216a
+  name: "io_cgrp_subsys_on_dfl_key"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x7de6cc23
+  type_id: 0xd2755d5f
+  full_name: "io_cgrp_subsys_on_dfl_key"
+}
+elf_symbol {
+  id: 0x6f047c6e
+  name: "io_schedule"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x93a6e0b2
+  type_id: 0x10985193
+  full_name: "io_schedule"
+}
+elf_symbol {
+  id: 0xd67bf9ed
+  name: "io_schedule_timeout"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfbc4f89e
+  type_id: 0x9823bcf6
+  full_name: "io_schedule_timeout"
+}
+elf_symbol {
+  id: 0xffca97cd
+  name: "ioc_lookup_icq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbe87a7f4
+  type_id: 0xd9de6af9
+  full_name: "ioc_lookup_icq"
+}
+elf_symbol {
+  id: 0x99224733
+  name: "iomem_resource"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xc7da062f
+  type_id: 0xc7736674
+  full_name: "iomem_resource"
+}
+elf_symbol {
+  id: 0xa4eabc87
+  name: "iommu_alloc_resv_region"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x81ede167
+  type_id: 0x221b39b7
+  full_name: "iommu_alloc_resv_region"
+}
+elf_symbol {
+  id: 0xd24a70f6
+  name: "iommu_attach_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe5f591b5
+  type_id: 0x962ca8b2
+  full_name: "iommu_attach_device"
+}
+elf_symbol {
+  id: 0x396b0c47
+  name: "iommu_attach_device_pasid"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x548b429d
+  type_id: 0x962b38df
+  full_name: "iommu_attach_device_pasid"
+}
+elf_symbol {
+  id: 0xe80863b1
+  name: "iommu_attach_group"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb30645b7
+  type_id: 0x96000700
+  full_name: "iommu_attach_group"
+}
+elf_symbol {
+  id: 0xd81a7d03
+  name: "iommu_detach_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2e92b986
+  type_id: 0x1b341a0e
+  full_name: "iommu_detach_device"
+}
+elf_symbol {
+  id: 0x0566bca1
+  name: "iommu_detach_device_pasid"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0e023fab
+  type_id: 0x1b338a63
+  full_name: "iommu_detach_device_pasid"
+}
+elf_symbol {
+  id: 0x4c05b91e
+  name: "iommu_dev_disable_feature"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x45b5a290
+  type_id: 0x9e5b71a8
+  full_name: "iommu_dev_disable_feature"
+}
+elf_symbol {
+  id: 0xa5459730
+  name: "iommu_device_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc15151b9
+  type_id: 0x92c1e3df
+  full_name: "iommu_device_register"
+}
+elf_symbol {
+  id: 0xe77a1ae2
+  name: "iommu_device_sysfs_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf3f58a3f
+  type_id: 0x9232e21d
+  full_name: "iommu_device_sysfs_add"
+}
+elf_symbol {
+  id: 0x0faa1a3d
+  name: "iommu_device_sysfs_remove"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4e440328
+  type_id: 0x1f227282
+  full_name: "iommu_device_sysfs_remove"
+}
+elf_symbol {
+  id: 0x4655db4f
+  name: "iommu_device_unlink"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x12d313ff
+  type_id: 0x1f2b1167
+  full_name: "iommu_device_unlink"
+}
+elf_symbol {
+  id: 0xb2194478
+  name: "iommu_device_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb91ee2cf
+  type_id: 0x1f227282
+  full_name: "iommu_device_unregister"
+}
+elf_symbol {
+  id: 0x90148e8e
+  name: "iommu_dma_get_resv_regions"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf10bcfd6
+  type_id: 0x10f7e72f
+  full_name: "iommu_dma_get_resv_regions"
+}
+elf_symbol {
+  id: 0x92cc8c41
+  name: "iommu_domain_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x354ee6d4
+  type_id: 0xe717ecff
+  full_name: "iommu_domain_alloc"
+}
+elf_symbol {
+  id: 0xdf5bc8be
+  name: "iommu_domain_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8535ec96
+  type_id: 0x1b3d79eb
+  full_name: "iommu_domain_free"
+}
+elf_symbol {
+  id: 0x836fd42d
+  name: "iommu_fwspec_add_ids"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8762fdf0
+  type_id: 0x9dec5d8d
+  full_name: "iommu_fwspec_add_ids"
+}
+elf_symbol {
+  id: 0x07d8752d
+  name: "iommu_fwspec_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x506998e9
+  type_id: 0x100e6fc8
+  full_name: "iommu_fwspec_free"
+}
+elf_symbol {
+  id: 0x29d25600
+  name: "iommu_get_domain_for_dev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x825b0f1d
+  type_id: 0xe7724f97
+  full_name: "iommu_get_domain_for_dev"
+}
+elf_symbol {
+  id: 0x79945ddc
+  name: "iommu_get_domain_for_dev_pasid"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x24d222c8
+  type_id: 0xe71a2817
+  full_name: "iommu_get_domain_for_dev_pasid"
+}
+elf_symbol {
+  id: 0xc359a46e
+  name: "iommu_get_msi_cookie"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4027d059
+  type_id: 0x95a57304
+  full_name: "iommu_get_msi_cookie"
+}
+elf_symbol {
+  id: 0xc9c5433a
+  name: "iommu_group_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8d22bb58
+  type_id: 0x7eb670a7
+  full_name: "iommu_group_alloc"
+}
+elf_symbol {
+  id: 0xfce67239
+  name: "iommu_group_for_each_dev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc3a79edd
+  type_id: 0x9fb5a087
+  full_name: "iommu_group_for_each_dev"
+}
+elf_symbol {
+  id: 0xe154efb2
+  name: "iommu_group_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x27d10680
+  type_id: 0x7e204efc
+  full_name: "iommu_group_get"
+}
+elf_symbol {
+  id: 0xadf1bba5
+  name: "iommu_group_get_iommudata"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd55ad93b
+  type_id: 0x54ca7481
+  full_name: "iommu_group_get_iommudata"
+}
+elf_symbol {
+  id: 0x1a299344
+  name: "iommu_group_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x89485687
+  type_id: 0x12c494e3
+  full_name: "iommu_group_put"
+}
+elf_symbol {
+  id: 0xe52a90e5
+  name: "iommu_group_ref_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4d6d0bbc
+  type_id: 0x7ceab5d7
+  full_name: "iommu_group_ref_get"
+}
+elf_symbol {
+  id: 0x1f9ceb72
+  name: "iommu_group_set_iommudata"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc66b77b1
+  type_id: 0x12a5ae09
+  full_name: "iommu_group_set_iommudata"
+}
+elf_symbol {
+  id: 0x119c23e5
+  name: "iommu_group_set_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbcdd5b99
+  type_id: 0x9f24648b
+  full_name: "iommu_group_set_name"
+}
+elf_symbol {
+  id: 0x9aea043a
+  name: "iommu_iova_to_phys"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9948e657
+  type_id: 0x098dcb5d
+  full_name: "iommu_iova_to_phys"
+}
+elf_symbol {
+  id: 0xbfb0ba46
+  name: "iommu_map"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfca4037a
+  type_id: 0x96c4a3ba
+  full_name: "iommu_map"
+}
+elf_symbol {
+  id: 0x21c33dfe
+  name: "iommu_map_sg"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0fe2430d
+  type_id: 0x1f9c6048
+  full_name: "iommu_map_sg"
+}
+elf_symbol {
+  id: 0x6c972a39
+  name: "iommu_present"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0c4442c8
+  type_id: 0xfe57c637
+  full_name: "iommu_present"
+}
+elf_symbol {
+  id: 0x5334a8b4
+  name: "iommu_put_resv_regions"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbab137f3
+  type_id: 0x10f7e72f
+  full_name: "iommu_put_resv_regions"
+}
+elf_symbol {
+  id: 0x30e89515
+  name: "iommu_register_device_fault_handler"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfd56292e
+  type_id: 0x9c0ff674
+  full_name: "iommu_register_device_fault_handler"
+}
+elf_symbol {
+  id: 0x407738ab
+  name: "iommu_report_device_fault"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xda1cfc8b
+  type_id: 0x9da4bde5
+  full_name: "iommu_report_device_fault"
+}
+elf_symbol {
+  id: 0x7e9c5e3f
+  name: "iommu_set_fault_handler"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xba3c0dd4
+  type_id: 0x197a8250
+  full_name: "iommu_set_fault_handler"
+}
+elf_symbol {
+  id: 0x2d2eb8bc
+  name: "iommu_set_pgtable_quirks"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfa31777b
+  type_id: 0x96e81ec5
+  full_name: "iommu_set_pgtable_quirks"
+}
+elf_symbol {
+  id: 0x08ecc90d
+  name: "iommu_unmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfcf025d5
+  type_id: 0x9c6a39e2
+  full_name: "iommu_unmap"
+}
+elf_symbol {
+  id: 0x42137268
+  name: "iommu_unregister_device_fault_handler"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4589bbd2
+  type_id: 0x9d16dd74
+  full_name: "iommu_unregister_device_fault_handler"
+}
+elf_symbol {
+  id: 0xa0390871
+  name: "ioremap_prot"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x40863ba1
+  type_id: 0x7a3edb49
+  full_name: "ioremap_prot"
+}
+elf_symbol {
+  id: 0xfb789e26
+  name: "iounmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xedc03953
+  type_id: 0x1a5fed1b
+  full_name: "iounmap"
+}
+elf_symbol {
+  id: 0x71726a83
+  name: "iov_iter_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x07bf1a0c
+  type_id: 0x1a5debf2
+  full_name: "iov_iter_init"
+}
+elf_symbol {
+  id: 0xffb394c4
+  name: "iov_iter_kvec"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfcf9632e
+  type_id: 0x1a5c3241
+  full_name: "iov_iter_kvec"
+}
+elf_symbol {
+  id: 0x48a6183b
+  name: "iov_iter_revert"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x74d40f4e
+  type_id: 0x189472bc
+  full_name: "iov_iter_revert"
+}
+elf_symbol {
+  id: 0x1be0f35f
+  name: "ip6_dst_hoplimit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2574d8a8
+  type_id: 0x99169bf2
+  full_name: "ip6_dst_hoplimit"
+}
+elf_symbol {
+  id: 0x5a7fbd45
+  name: "ip6_local_out"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x33d05c76
+  type_id: 0x9edc3d1c
+  full_name: "ip6_local_out"
+}
+elf_symbol {
+  id: 0x7837fb7f
+  name: "ip6_route_me_harder"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8ddb6625
+  type_id: 0x9edc3d1c
+  full_name: "ip6_route_me_harder"
+}
+elf_symbol {
+  id: 0x6cd920cf
+  name: "ip_compute_csum"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x20eadeb6
+  type_id: 0x1557244f
+  full_name: "ip_compute_csum"
+}
+elf_symbol {
+  id: 0x5234b1b5
+  name: "ip_local_out"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x81daeed1
+  type_id: 0x9edc3d1c
+  full_name: "ip_local_out"
+}
+elf_symbol {
+  id: 0xaed020d7
+  name: "ip_mc_join_group"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf307233c
+  type_id: 0x9a03c4d6
+  full_name: "ip_mc_join_group"
+}
+elf_symbol {
+  id: 0xc1d5ac06
+  name: "ip_queue_xmit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x297b2874
+  type_id: 0x9ac293c4
+  full_name: "ip_queue_xmit"
+}
+elf_symbol {
+  id: 0xc86b3dec
+  name: "ip_route_me_harder"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd7a7733e
+  type_id: 0x9edd2b09
+  full_name: "ip_route_me_harder"
+}
+elf_symbol {
+  id: 0x6bd8b5b5
+  name: "ip_route_output_flow"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x63d17c67
+  type_id: 0x7b5e948b
+  full_name: "ip_route_output_flow"
+}
+elf_symbol {
+  id: 0x5b9fac73
+  name: "ip_send_check"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5089f45f
+  type_id: 0x100f484f
+  full_name: "ip_send_check"
+}
+elf_symbol {
+  id: 0x39f87265
+  name: "ipi_desc_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x44654856
+  type_id: 0xac8d9251
+  full_name: "ipi_desc_get"
+}
+elf_symbol {
+  id: 0xd35aa56c
+  name: "iput"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbe76da62
+  type_id: 0x167935b9
+  full_name: "iput"
+}
+elf_symbol {
+  id: 0xfd0a8a39
+  name: "ipv6_dev_find"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfe50985e
+  type_id: 0xffbaa126
+  full_name: "ipv6_dev_find"
+}
+elf_symbol {
+  id: 0x274071bc
+  name: "ipv6_ext_hdr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x452ba683
+  type_id: 0xf4f34784
+  full_name: "ipv6_ext_hdr"
+}
+elf_symbol {
+  id: 0x8b22b24d
+  name: "ipv6_find_hdr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5ca4ba9e
+  type_id: 0x926eec8b
+  full_name: "ipv6_find_hdr"
+}
+elf_symbol {
+  id: 0x1f294d29
+  name: "ipv6_skip_exthdr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2fbf103d
+  type_id: 0x9384ebd6
+  full_name: "ipv6_skip_exthdr"
+}
+elf_symbol {
+  id: 0xc610fcd6
+  name: "ipv6_stub"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x69417d20
+  type_id: 0x3d278a00
+  full_name: "ipv6_stub"
+}
+elf_symbol {
+  id: 0x915bc321
+  name: "ir_raw_event_store_edge"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x82820dc2
+  type_id: 0x9db62354
+  full_name: "ir_raw_event_store_edge"
+}
+elf_symbol {
+  id: 0xbf9d3356
+  name: "irq_check_status_bit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf47654df
+  type_id: 0xeed31713
+  full_name: "irq_check_status_bit"
+}
+elf_symbol {
+  id: 0xd8989bc0
+  name: "irq_chip_ack_parent"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xccd4cdfc
+  type_id: 0x1247424a
+  full_name: "irq_chip_ack_parent"
+}
+elf_symbol {
+  id: 0x43c80a09
+  name: "irq_chip_disable_parent"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe6edca0f
+  type_id: 0x1247424a
+  full_name: "irq_chip_disable_parent"
+}
+elf_symbol {
+  id: 0xdec0d803
+  name: "irq_chip_enable_parent"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x33549677
+  type_id: 0x1247424a
+  full_name: "irq_chip_enable_parent"
+}
+elf_symbol {
+  id: 0x318d7639
+  name: "irq_chip_eoi_parent"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0426c2dd
+  type_id: 0x1247424a
+  full_name: "irq_chip_eoi_parent"
+}
+elf_symbol {
+  id: 0x234b3b39
+  name: "irq_chip_get_parent_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6af14009
+  type_id: 0x9eedf034
+  full_name: "irq_chip_get_parent_state"
+}
+elf_symbol {
+  id: 0xadb0ba0e
+  name: "irq_chip_mask_parent"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xae471816
+  type_id: 0x1247424a
+  full_name: "irq_chip_mask_parent"
+}
+elf_symbol {
+  id: 0xce3d1021
+  name: "irq_chip_retrigger_hierarchy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2397acc4
+  type_id: 0x9f5ff0f6
+  full_name: "irq_chip_retrigger_hierarchy"
+}
+elf_symbol {
+  id: 0xc55dac9c
+  name: "irq_chip_set_affinity_parent"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc0056004
+  type_id: 0x9f809421
+  full_name: "irq_chip_set_affinity_parent"
+}
+elf_symbol {
+  id: 0x3e7fecbe
+  name: "irq_chip_set_parent_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe19b52bd
+  type_id: 0x9ef2dc18
+  full_name: "irq_chip_set_parent_state"
+}
+elf_symbol {
+  id: 0x7021eb31
+  name: "irq_chip_set_type_parent"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa1a9bf48
+  type_id: 0x9e49e56e
+  full_name: "irq_chip_set_type_parent"
+}
+elf_symbol {
+  id: 0xf2ede93a
+  name: "irq_chip_set_vcpu_affinity_parent"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdda7f96c
+  type_id: 0x9f3d0562
+  full_name: "irq_chip_set_vcpu_affinity_parent"
+}
+elf_symbol {
+  id: 0xc50b462b
+  name: "irq_chip_set_wake_parent"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x21494643
+  type_id: 0x9e49e56e
+  full_name: "irq_chip_set_wake_parent"
+}
+elf_symbol {
+  id: 0x53918fa8
+  name: "irq_chip_unmask_parent"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xec5816d4
+  type_id: 0x1247424a
+  full_name: "irq_chip_unmask_parent"
+}
+elf_symbol {
+  id: 0xa4445542
+  name: "irq_create_fwspec_mapping"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe9ff3560
+  type_id: 0xce9279fb
+  full_name: "irq_create_fwspec_mapping"
+}
+elf_symbol {
+  id: 0xbe5c3dff
+  name: "irq_create_mapping_affinity"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2d52ef9d
+  type_id: 0xc8743fe5
+  full_name: "irq_create_mapping_affinity"
+}
+elf_symbol {
+  id: 0x455e91ec
+  name: "irq_create_of_mapping"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe80e5bdd
+  type_id: 0xcdea9cab
+  full_name: "irq_create_of_mapping"
+}
+elf_symbol {
+  id: 0x630bb842
+  name: "irq_dispose_mapping"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2c7db649
+  type_id: 0x01f9081c
+  full_name: "irq_dispose_mapping"
+}
+elf_symbol {
+  id: 0x22a9a9c1
+  name: "irq_do_set_affinity"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x24ac8f2d
+  type_id: 0x9f809421
+  full_name: "irq_do_set_affinity"
+}
+elf_symbol {
+  id: 0x9f4df92b
+  name: "irq_domain_add_legacy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x927c6017
+  type_id: 0x53330ee0
+  full_name: "irq_domain_add_legacy"
+}
+elf_symbol {
+  id: 0x5e13f2f1
+  name: "irq_domain_alloc_irqs_parent"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0f1de918
+  type_id: 0x9aaf4bc3
+  full_name: "irq_domain_alloc_irqs_parent"
+}
+elf_symbol {
+  id: 0x135db1d2
+  name: "irq_domain_create_hierarchy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf1984f11
+  type_id: 0x5807e85a
+  full_name: "irq_domain_create_hierarchy"
+}
+elf_symbol {
+  id: 0xba41ecd4
+  name: "irq_domain_disconnect_hierarchy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x888cf936
+  type_id: 0x9abe486f
+  full_name: "irq_domain_disconnect_hierarchy"
+}
+elf_symbol {
+  id: 0x327b1cbb
+  name: "irq_domain_free_irqs_common"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xebb4fc20
+  type_id: 0x17b79b8a
+  full_name: "irq_domain_free_irqs_common"
+}
+elf_symbol {
+  id: 0x61a826d2
+  name: "irq_domain_free_irqs_parent"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbdd24e0b
+  type_id: 0x17b79b8a
+  full_name: "irq_domain_free_irqs_parent"
+}
+elf_symbol {
+  id: 0x3cc69c51
+  name: "irq_domain_get_irq_data"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8d5d280f
+  type_id: 0xf6d4f929
+  full_name: "irq_domain_get_irq_data"
+}
+elf_symbol {
+  id: 0xb0b89150
+  name: "irq_domain_remove"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xce5287c1
+  type_id: 0x16b0ef4b
+  full_name: "irq_domain_remove"
+}
+elf_symbol {
+  id: 0xa7d2492e
+  name: "irq_domain_set_hwirq_and_chip"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf5c7d787
+  type_id: 0x9ab63fbc
+  full_name: "irq_domain_set_hwirq_and_chip"
+}
+elf_symbol {
+  id: 0x313a31e6
+  name: "irq_domain_set_info"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x993751c8
+  type_id: 0x17ae8fc5
+  full_name: "irq_domain_set_info"
+}
+elf_symbol {
+  id: 0x054ef290
+  name: "irq_domain_simple_ops"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xfaf21a02
+  type_id: 0xea94bed9
+  full_name: "irq_domain_simple_ops"
+}
+elf_symbol {
+  id: 0x42675a87
+  name: "irq_domain_translate_twocell"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf3681516
+  type_id: 0x9bad311a
+  full_name: "irq_domain_translate_twocell"
+}
+elf_symbol {
+  id: 0x18eb0e3e
+  name: "irq_domain_update_bus_token"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0aa9b254
+  type_id: 0x14e196b0
+  full_name: "irq_domain_update_bus_token"
+}
+elf_symbol {
+  id: 0xfd8e5705
+  name: "irq_domain_xlate_onecell"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf656cbb1
+  type_id: 0x9b74c720
+  full_name: "irq_domain_xlate_onecell"
+}
+elf_symbol {
+  id: 0x3087961e
+  name: "irq_domain_xlate_onetwocell"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcf6b798d
+  type_id: 0x9b74c720
+  full_name: "irq_domain_xlate_onetwocell"
+}
+elf_symbol {
+  id: 0x2f696324
+  name: "irq_domain_xlate_twocell"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x78ba91b9
+  type_id: 0x9b74c63c
+  full_name: "irq_domain_xlate_twocell"
+}
+elf_symbol {
+  id: 0x362487ea
+  name: "irq_find_matching_fwspec"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6537b0c6
+  type_id: 0x5d304295
+  full_name: "irq_find_matching_fwspec"
+}
+elf_symbol {
+  id: 0xc6121864
+  name: "irq_force_affinity"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1000ff31
+  type_id: 0x8c2581a0
+  full_name: "irq_force_affinity"
+}
+elf_symbol {
+  id: 0x9ed1af8c
+  name: "irq_gc_ack_set_bit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x891078ae
+  type_id: 0x1247424a
+  full_name: "irq_gc_ack_set_bit"
+}
+elf_symbol {
+  id: 0xf030b866
+  name: "irq_gc_mask_clr_bit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x523cbd67
+  type_id: 0x1247424a
+  full_name: "irq_gc_mask_clr_bit"
+}
+elf_symbol {
+  id: 0x01f6343f
+  name: "irq_gc_mask_set_bit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0b033332
+  type_id: 0x1247424a
+  full_name: "irq_gc_mask_set_bit"
+}
+elf_symbol {
+  id: 0xe8b2d7a6
+  name: "irq_generic_chip_ops"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xe086ed35
+  type_id: 0xea94bed9
+  full_name: "irq_generic_chip_ops"
+}
+elf_symbol {
+  id: 0x2ed6bfeb
+  name: "irq_get_domain_generic_chip"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc6617019
+  type_id: 0xe0b805a9
+  full_name: "irq_get_domain_generic_chip"
+}
+elf_symbol {
+  id: 0xa9c80d6c
+  name: "irq_get_irq_data"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x29211c93
+  type_id: 0xe08b0be6
+  full_name: "irq_get_irq_data"
+}
+elf_symbol {
+  id: 0xb1d265b1
+  name: "irq_get_irqchip_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1d222ced
+  type_id: 0x8d53ba62
+  full_name: "irq_get_irqchip_state"
+}
+elf_symbol {
+  id: 0x28fabc56
+  name: "irq_modify_status"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7522f3ba
+  type_id: 0x013800d7
+  full_name: "irq_modify_status"
+}
+elf_symbol {
+  id: 0x68e07680
+  name: "irq_of_parse_and_map"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe416cf51
+  type_id: 0xc25b3d5a
+  full_name: "irq_of_parse_and_map"
+}
+elf_symbol {
+  id: 0xcd991820
+  name: "irq_set_affinity"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x135e366e
+  type_id: 0x8c2581a0
+  full_name: "irq_set_affinity"
+}
+elf_symbol {
+  id: 0x307e484e
+  name: "irq_set_affinity_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7082834f
+  type_id: 0x8c2b9b63
+  full_name: "irq_set_affinity_notifier"
+}
+elf_symbol {
+  id: 0xf62740c9
+  name: "irq_set_chained_handler_and_data"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x60a51e14
+  type_id: 0x033c2ce9
+  full_name: "irq_set_chained_handler_and_data"
+}
+elf_symbol {
+  id: 0x1af2c6cc
+  name: "irq_set_chip"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x734231cf
+  type_id: 0x8c3c9e58
+  full_name: "irq_set_chip"
+}
+elf_symbol {
+  id: 0x94fc8420
+  name: "irq_set_chip_and_handler_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xce83d3b0
+  type_id: 0x0108e41c
+  full_name: "irq_set_chip_and_handler_name"
+}
+elf_symbol {
+  id: 0x7c906e0d
+  name: "irq_set_chip_data"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x20a789ac
+  type_id: 0x8c834f34
+  full_name: "irq_set_chip_data"
+}
+elf_symbol {
+  id: 0x0bad9216
+  name: "irq_set_handler_data"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3dcb88a0
+  type_id: 0x8c834f34
+  full_name: "irq_set_handler_data"
+}
+elf_symbol {
+  id: 0xb2b17b6f
+  name: "irq_set_irq_type"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0bc477a2
+  type_id: 0x8df7af38
+  full_name: "irq_set_irq_type"
+}
+elf_symbol {
+  id: 0x5904d735
+  name: "irq_set_irq_wake"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xce2840e7
+  type_id: 0x8df7af38
+  full_name: "irq_set_irq_wake"
+}
+elf_symbol {
+  id: 0xcb7dc482
+  name: "irq_set_irqchip_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb88dbfce
+  type_id: 0x8d4c964e
+  full_name: "irq_set_irqchip_state"
+}
+elf_symbol {
+  id: 0xaed00f8c
+  name: "irq_set_parent"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdc6596fa
+  type_id: 0x85d454a8
+  full_name: "irq_set_parent"
+}
+elf_symbol {
+  id: 0xc89a8e29
+  name: "irq_to_desc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf14251ad
+  type_id: 0xd597088b
+  full_name: "irq_to_desc"
+}
+elf_symbol {
+  id: 0x92dfef70
+  name: "irq_work_queue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x879ace7c
+  type_id: 0xf795eafe
+  full_name: "irq_work_queue"
+}
+elf_symbol {
+  id: 0xd1f69ecb
+  name: "irq_work_queue_on"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x013705c6
+  type_id: 0xf60969b2
+  full_name: "irq_work_queue_on"
+}
+elf_symbol {
+  id: 0xdbb90310
+  name: "irq_work_run"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x541bd60a
+  type_id: 0x10985193
+  full_name: "irq_work_run"
+}
+elf_symbol {
+  id: 0x3d2a104d
+  name: "irq_work_sync"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf02b8396
+  type_id: 0x19a9e069
+  full_name: "irq_work_sync"
+}
+elf_symbol {
+  id: 0x9ba08730
+  name: "is_ashmem_file"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x90ecef73
+  type_id: 0x9bba7997
+  full_name: "is_ashmem_file"
+}
+elf_symbol {
+  id: 0x064a6e13
+  name: "is_console_locked"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x944a564d
+  type_id: 0x9d80e32f
+  full_name: "is_console_locked"
+}
+elf_symbol {
+  id: 0x73ffe9a9
+  name: "is_dma_buf_file"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc5ff7b09
+  namespace: "DMA_BUF"
+  type_id: 0x9bba7997
+  full_name: "is_dma_buf_file"
+}
+elf_symbol {
+  id: 0x03de6dc5
+  name: "is_virtio_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9f9d3cc4
+  type_id: 0xfe32655f
+  full_name: "is_virtio_device"
+}
+elf_symbol {
+  id: 0xe4e974b3
+  name: "is_vmalloc_addr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc31db0ce
+  type_id: 0xf0e39e7e
+  full_name: "is_vmalloc_addr"
+}
+elf_symbol {
+  id: 0x2066c48d
+  name: "isolate_and_split_free_page"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa55503ae
+  type_id: 0x30f59213
+  full_name: "isolate_and_split_free_page"
+}
+elf_symbol {
+  id: 0x1cd74592
+  name: "isolate_anon_lru_page"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0b7af894
+  type_id: 0x9c203488
+  full_name: "isolate_anon_lru_page"
+}
+elf_symbol {
+  id: 0xd4b34ea6
+  name: "iterate_dir"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2803b5e8
+  type_id: 0x9b41e906
+  full_name: "iterate_dir"
+}
+elf_symbol {
+  id: 0x3c6496cb
+  name: "iterate_fd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3204fe7a
+  type_id: 0x9659ea27
+  full_name: "iterate_fd"
+}
+elf_symbol {
+  id: 0x124d42c2
+  name: "iw_handler_get_spy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfde0f341
+  type_id: 0x91aa9fd5
+  full_name: "iw_handler_get_spy"
+}
+elf_symbol {
+  id: 0xd106aba0
+  name: "iw_handler_get_thrspy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x23474d05
+  type_id: 0x91aa9fd5
+  full_name: "iw_handler_get_thrspy"
+}
+elf_symbol {
+  id: 0x5cce6b17
+  name: "iw_handler_set_spy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x27dafdef
+  type_id: 0x91aa9fd5
+  full_name: "iw_handler_set_spy"
+}
+elf_symbol {
+  id: 0x854c19ed
+  name: "iw_handler_set_thrspy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa82ec989
+  type_id: 0x91aa9fd5
+  full_name: "iw_handler_set_thrspy"
+}
+elf_symbol {
+  id: 0x50909f0b
+  name: "iwe_stream_add_event"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc5bdf060
+  type_id: 0x363093b8
+  full_name: "iwe_stream_add_event"
+}
+elf_symbol {
+  id: 0xe56d8267
+  name: "iwe_stream_add_point"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x21c62398
+  type_id: 0x36308b50
+  full_name: "iwe_stream_add_point"
+}
+elf_symbol {
+  id: 0x7862fdf3
+  name: "iwe_stream_add_value"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfb6d890b
+  type_id: 0x3630fed9
+  full_name: "iwe_stream_add_value"
+}
+elf_symbol {
+  id: 0xa6e6c879
+  name: "jiffies"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x15ba50a6
+  type_id: 0x92233392
+  full_name: "jiffies_64"
+}
+elf_symbol {
+  id: 0x6e47d2cf
+  name: "jiffies64_to_msecs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x92ec510d
+  type_id: 0x73531faf
+  full_name: "jiffies64_to_msecs"
+}
+elf_symbol {
+  id: 0xd63a3f70
+  name: "jiffies64_to_nsecs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xee8d74d6
+  type_id: 0x73531faf
+  full_name: "jiffies64_to_nsecs"
+}
+elf_symbol {
+  id: 0x075fdad1
+  name: "jiffies_64"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x055e77e8
+  type_id: 0x92233392
+  full_name: "jiffies_64"
+}
+elf_symbol {
+  id: 0x6bcfa61d
+  name: "jiffies_64_to_clock_t"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb1ddf995
+  type_id: 0x73531faf
+  full_name: "jiffies_64_to_clock_t"
+}
+elf_symbol {
+  id: 0x9175ce1c
+  name: "jiffies_to_msecs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x37befc70
+  type_id: 0xc20627da
+  full_name: "jiffies_to_msecs"
+}
+elf_symbol {
+  id: 0x81dadb36
+  name: "jiffies_to_usecs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7f24de73
+  type_id: 0xc20627da
+  full_name: "jiffies_to_usecs"
+}
+elf_symbol {
+  id: 0x9bfc3a5e
+  name: "kasan_flag_enabled"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xa6f6226c
+  type_id: 0x8e47c273
+  full_name: "kasan_flag_enabled"
+}
+elf_symbol {
+  id: 0xc750a072
+  name: "kasprintf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfb384d37
+  type_id: 0x0286be66
+  full_name: "kasprintf"
+}
+elf_symbol {
+  id: 0xbccf7511
+  name: "kern_mount"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd3bcf9ed
+  type_id: 0x66e18f45
+  full_name: "kern_mount"
+}
+elf_symbol {
+  id: 0x3b31be3d
+  name: "kern_unmount"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x17527b9b
+  type_id: 0x1bbb411c
+  full_name: "kern_unmount"
+}
+elf_symbol {
+  id: 0x88704b49
+  name: "kernel_accept"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0e131c4a
+  type_id: 0x99bb01a5
+  full_name: "kernel_accept"
+}
+elf_symbol {
+  id: 0x8cd9004f
+  name: "kernel_bind"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf28ec505
+  type_id: 0x99526c70
+  full_name: "kernel_bind"
+}
+elf_symbol {
+  id: 0x21d6616d
+  name: "kernel_connect"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6f9153a5
+  type_id: 0x9953f0f3
+  full_name: "kernel_connect"
+}
+elf_symbol {
+  id: 0xd9f8da7b
+  name: "kernel_cpustat"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xc54f8db6
+  type_id: 0x3643daf2
+  full_name: "kernel_cpustat"
+}
+elf_symbol {
+  id: 0x1b2f5f11
+  name: "kernel_getsockname"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4a997980
+  type_id: 0x994ba444
+  full_name: "kernel_getsockname"
+}
+elf_symbol {
+  id: 0x6746106c
+  name: "kernel_kobj"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x4ba41360
+  type_id: 0x23f09c34
+  full_name: "kernel_kobj"
+}
+elf_symbol {
+  id: 0xc5f22a59
+  name: "kernel_listen"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x564aa2e8
+  type_id: 0x98046a12
+  full_name: "kernel_listen"
+}
+elf_symbol {
+  id: 0xff4a14be
+  name: "kernel_param_lock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0998aacd
+  type_id: 0x1251a683
+  full_name: "kernel_param_lock"
+}
+elf_symbol {
+  id: 0x4e60d546
+  name: "kernel_param_unlock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x323ac5fd
+  type_id: 0x1251a683
+  full_name: "kernel_param_unlock"
+}
+elf_symbol {
+  id: 0x0e6a648c
+  name: "kernel_power_off"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf184d189
+  type_id: 0x10985193
+  full_name: "kernel_power_off"
+}
+elf_symbol {
+  id: 0x05b57a3a
+  name: "kernel_recvmsg"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xed5d2c06
+  type_id: 0x992e9bfb
+  full_name: "kernel_recvmsg"
+}
+elf_symbol {
+  id: 0x5da7d3fd
+  name: "kernel_restart"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1e7bbcb3
+  type_id: 0x11b8a82d
+  full_name: "kernel_restart"
+}
+elf_symbol {
+  id: 0x51fc2e7c
+  name: "kernel_sendmsg"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb240b296
+  type_id: 0x992e9a67
+  full_name: "kernel_sendmsg"
+}
+elf_symbol {
+  id: 0x9a493b0a
+  name: "kernel_sigaction"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc0374d9c
+  type_id: 0x09d3c362
+  full_name: "kernel_sigaction"
+}
+elf_symbol {
+  id: 0x7db59566
+  name: "kernel_sock_shutdown"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbb70ed39
+  type_id: 0x9b768ae0
+  full_name: "kernel_sock_shutdown"
+}
+elf_symbol {
+  id: 0x74c27cba
+  name: "kernfs_find_and_get_ns"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd98d9801
+  type_id: 0x883b05d4
+  full_name: "kernfs_find_and_get_ns"
+}
+elf_symbol {
+  id: 0x9c2a699a
+  name: "kernfs_notify"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd295b501
+  type_id: 0x1e0c8305
+  full_name: "kernfs_notify"
+}
+elf_symbol {
+  id: 0x1185f06e
+  name: "kernfs_path_from_node"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4c8e1979
+  type_id: 0x93ff8cbc
+  full_name: "kernfs_path_from_node"
+}
+elf_symbol {
+  id: 0x1ac8e26f
+  name: "kernfs_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x68fc7e58
+  type_id: 0x1e0c8305
+  full_name: "kernfs_put"
+}
+elf_symbol {
+  id: 0x1feedde3
+  name: "key_create_or_update"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfe1d2e94
+  type_id: 0xf3944fac
+  full_name: "key_create_or_update"
+}
+elf_symbol {
+  id: 0xc2d6ae96
+  name: "key_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x267f45e1
+  type_id: 0x10f1f3b8
+  full_name: "key_put"
+}
+elf_symbol {
+  id: 0x6dbdf8e6
+  name: "keyring_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6fd638fd
+  type_id: 0x8f04b264
+  full_name: "keyring_alloc"
+}
+elf_symbol {
+  id: 0x6bb359de
+  name: "kfree"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x037a0cba
+  type_id: 0x1edf94e9
+  full_name: "kfree"
+}
+elf_symbol {
+  id: 0xe097a7bd
+  name: "kfree_const"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf474fdcb
+  type_id: 0x1edf94e9
+  full_name: "kfree_const"
+}
+elf_symbol {
+  id: 0xdc88dfbc
+  name: "kfree_sensitive"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd0760fc0
+  type_id: 0x1edf94e9
+  full_name: "kfree_sensitive"
+}
+elf_symbol {
+  id: 0xe867c7e6
+  name: "kfree_skb_list_reason"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x441d50a3
+  type_id: 0x11a9e681
+  full_name: "kfree_skb_list_reason"
+}
+elf_symbol {
+  id: 0x6dc922be
+  name: "kfree_skb_partial"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x84305e73
+  type_id: 0x107e76aa
+  full_name: "kfree_skb_partial"
+}
+elf_symbol {
+  id: 0x5cdb4ea4
+  name: "kfree_skb_reason"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x234cc6c0
+  type_id: 0x11a9e681
+  full_name: "kfree_skb_reason"
+}
+elf_symbol {
+  id: 0x6d575dad
+  name: "kick_all_cpus_sync"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa6e1a69d
+  type_id: 0x10985193
+  full_name: "kick_all_cpus_sync"
+}
+elf_symbol {
+  id: 0xb1072fb1
+  name: "kill_anon_super"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeeee84de
+  type_id: 0x1923cb99
+  full_name: "kill_anon_super"
+}
+elf_symbol {
+  id: 0x661955d6
+  name: "kill_fasync"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9ed85e15
+  type_id: 0x11e75010
+  full_name: "kill_fasync"
+}
+elf_symbol {
+  id: 0xd6a8ff16
+  name: "kill_litter_super"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfa1d4761
+  type_id: 0x1923cb99
+  full_name: "kill_litter_super"
+}
+elf_symbol {
+  id: 0x053e25cb
+  name: "kimage_vaddr"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xb2ead97c
+  type_id: 0x92233392
+  full_name: "kimage_vaddr"
+}
+elf_symbol {
+  id: 0x567c8a8a
+  name: "kimage_voffset"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xe4bbc1dd
+  type_id: 0x92233392
+  full_name: "kimage_voffset"
+}
+elf_symbol {
+  id: 0xbc2dc163
+  name: "kmalloc_caches"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x0f15b38a
+  type_id: 0x273ad3f4
+  full_name: "kmalloc_caches"
+}
+elf_symbol {
+  id: 0x98b2ed59
+  name: "kmalloc_large"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9ed12e20
+  type_id: 0x685d7099
+  full_name: "kmalloc_large"
+}
+elf_symbol {
+  id: 0x158dfa03
+  name: "kmalloc_large_node"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x48d3fa27
+  type_id: 0x6844b8ad
+  full_name: "kmalloc_large_node"
+}
+elf_symbol {
+  id: 0xa64fdec4
+  name: "kmalloc_node_trace"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x76842b02
+  type_id: 0x5ef56662
+  full_name: "kmalloc_node_trace"
+}
+elf_symbol {
+  id: 0xcbec700e
+  name: "kmalloc_trace"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb78e7543
+  type_id: 0x5ed273d9
+  full_name: "kmalloc_trace"
+}
+elf_symbol {
+  id: 0x394ce3dd
+  name: "kmem_cache_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb3bcc335
+  type_id: 0x5eef7e83
+  full_name: "kmem_cache_alloc"
+}
+elf_symbol {
+  id: 0x56f23732
+  name: "kmem_cache_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd7c35710
+  type_id: 0xc3c98ae7
+  full_name: "kmem_cache_create"
+}
+elf_symbol {
+  id: 0xa5a4fafa
+  name: "kmem_cache_create_usercopy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfc1a32e3
+  type_id: 0xc3c9995c
+  full_name: "kmem_cache_create_usercopy"
+}
+elf_symbol {
+  id: 0xc37ba22c
+  name: "kmem_cache_destroy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8b61c569
+  type_id: 0x1b27059e
+  full_name: "kmem_cache_destroy"
+}
+elf_symbol {
+  id: 0xbce770e6
+  name: "kmem_cache_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x016d6ea7
+  type_id: 0x1b45f00a
+  full_name: "kmem_cache_free"
+}
+elf_symbol {
+  id: 0xc5292cdd
+  name: "kmemdup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x66b4cc41
+  type_id: 0x5b3dc89d
+  full_name: "kmemdup"
+}
+elf_symbol {
+  id: 0xdaa011df
+  name: "kmemdup_nul"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb3f548ad
+  type_id: 0x3256909b
+  full_name: "kmemdup_nul"
+}
+elf_symbol {
+  id: 0xeecf2614
+  name: "kmsg_dump_get_buffer"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xee518148
+  type_id: 0xf857e1a7
+  full_name: "kmsg_dump_get_buffer"
+}
+elf_symbol {
+  id: 0x5addff7b
+  name: "kmsg_dump_get_line"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4f2c996d
+  type_id: 0xf857e1a7
+  full_name: "kmsg_dump_get_line"
+}
+elf_symbol {
+  id: 0xf6a8f652
+  name: "kmsg_dump_reason_str"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x989074ff
+  type_id: 0x81c6fcc7
+  full_name: "kmsg_dump_reason_str"
+}
+elf_symbol {
+  id: 0x3ce2ed77
+  name: "kmsg_dump_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6c5ad0cd
+  type_id: 0x9542ea53
+  full_name: "kmsg_dump_register"
+}
+elf_symbol {
+  id: 0x456e21b8
+  name: "kmsg_dump_rewind"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x480305ca
+  type_id: 0x17dceb84
+  full_name: "kmsg_dump_rewind"
+}
+elf_symbol {
+  id: 0x3de0a0d6
+  name: "kmsg_dump_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xda0947de
+  type_id: 0x9542ea53
+  full_name: "kmsg_dump_unregister"
+}
+elf_symbol {
+  id: 0xff11f1ef
+  name: "kobj_sysfs_ops"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xacbb82b4
+  type_id: 0xe7d52a38
+  full_name: "kobj_sysfs_ops"
+}
+elf_symbol {
+  id: 0xa8f2033f
+  name: "kobject_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa3adbc43
+  type_id: 0x95fe16d7
+  full_name: "kobject_add"
+}
+elf_symbol {
+  id: 0xa5deede8
+  name: "kobject_create_and_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x99e24762
+  type_id: 0x313d1080
+  full_name: "kobject_create_and_add"
+}
+elf_symbol {
+  id: 0x78a1f659
+  name: "kobject_del"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd56b3592
+  type_id: 0x1864769e
+  full_name: "kobject_del"
+}
+elf_symbol {
+  id: 0x42241ce5
+  name: "kobject_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa25484d8
+  type_id: 0x36cad8bb
+  full_name: "kobject_get"
+}
+elf_symbol {
+  id: 0x5ca92bb1
+  name: "kobject_get_path"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe4ecf2e9
+  type_id: 0x300b805e
+  full_name: "kobject_get_path"
+}
+elf_symbol {
+  id: 0x11e33922
+  name: "kobject_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x423fe6bf
+  type_id: 0x18b1d802
+  full_name: "kobject_init"
+}
+elf_symbol {
+  id: 0xa95939f5
+  name: "kobject_init_and_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x463b3ed8
+  type_id: 0x95a14791
+  full_name: "kobject_init_and_add"
+}
+elf_symbol {
+  id: 0x45f53e02
+  name: "kobject_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x11e90cd4
+  type_id: 0x1864769e
+  full_name: "kobject_put"
+}
+elf_symbol {
+  id: 0xaa5c8089
+  name: "kobject_set_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7f120f30
+  type_id: 0x95adcc74
+  full_name: "kobject_set_name"
+}
+elf_symbol {
+  id: 0x6a1b96a4
+  name: "kobject_uevent"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5aac7c29
+  type_id: 0x950b8829
+  full_name: "kobject_uevent"
+}
+elf_symbol {
+  id: 0x5e008c58
+  name: "kobject_uevent_env"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x857f14bd
+  type_id: 0x95096419
+  full_name: "kobject_uevent_env"
+}
+elf_symbol {
+  id: 0x6ebdc3d5
+  name: "krealloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc8dcc62a
+  type_id: 0x5b3dc89d
+  full_name: "krealloc"
+}
+elf_symbol {
+  id: 0x997ce4eb
+  name: "kset_create_and_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4fbbb17d
+  type_id: 0x288802b1
+  full_name: "kset_create_and_add"
+}
+elf_symbol {
+  id: 0xc8630541
+  name: "kset_find_obj"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x72896612
+  type_id: 0x3bdb4e2c
+  full_name: "kset_find_obj"
+}
+elf_symbol {
+  id: 0x67714f19
+  name: "kset_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x24741948
+  type_id: 0x158da2dd
+  full_name: "kset_unregister"
+}
+elf_symbol {
+  id: 0x2c162109
+  name: "ksize"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x04ea5d10
+  type_id: 0x99780c28
+  full_name: "ksize"
+}
+elf_symbol {
+  id: 0x9c9d432c
+  name: "ksoftirqd"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x6173767a
+  type_id: 0x1d19a9d5
+  full_name: "ksoftirqd"
+}
+elf_symbol {
+  id: 0x3004454e
+  name: "kstat"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x39911428
+  type_id: 0xebfdc849
+  full_name: "kstat"
+}
+elf_symbol {
+  id: 0x2b3485f8
+  name: "kstat_irqs_cpu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb6bffb99
+  type_id: 0xde26a438
+  full_name: "kstat_irqs_cpu"
+}
+elf_symbol {
+  id: 0x2f71359b
+  name: "kstat_irqs_usr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9bb05a3a
+  type_id: 0xdfba2774
+  full_name: "kstat_irqs_usr"
+}
+elf_symbol {
+  id: 0xdf35d747
+  name: "kstrdup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2d39b0a7
+  type_id: 0x327cb7f2
+  full_name: "kstrdup"
+}
+elf_symbol {
+  id: 0x5dcc8e77
+  name: "kstrdup_const"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x365e7911
+  type_id: 0x9e06a19a
+  full_name: "kstrdup_const"
+}
+elf_symbol {
+  id: 0xcabb291b
+  name: "kstrdup_quotable_cmdline"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf182d52c
+  type_id: 0x3abef0c1
+  full_name: "kstrdup_quotable_cmdline"
+}
+elf_symbol {
+  id: 0x31577ae4
+  name: "kstrndup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9eacf8a5
+  type_id: 0x3256909b
+  full_name: "kstrndup"
+}
+elf_symbol {
+  id: 0x48e6567f
+  name: "kstrtobool"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x124bad4d
+  type_id: 0x9243f1d0
+  full_name: "kstrtobool"
+}
+elf_symbol {
+  id: 0xbd8349ba
+  name: "kstrtobool_from_user"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x47df155f
+  type_id: 0x91d06833
+  full_name: "kstrtobool_from_user"
+}
+elf_symbol {
+  id: 0xa677d946
+  name: "kstrtoint"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8c8569cb
+  type_id: 0x93160df2
+  full_name: "kstrtoint"
+}
+elf_symbol {
+  id: 0x46063085
+  name: "kstrtoint_from_user"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7e704a24
+  type_id: 0x91c537f1
+  full_name: "kstrtoint_from_user"
+}
+elf_symbol {
+  id: 0x8ab0e185
+  name: "kstrtol_from_user"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf24361b2
+  type_id: 0x91c5acdf
+  full_name: "kstrtol_from_user"
+}
+elf_symbol {
+  id: 0xbeb6fe53
+  name: "kstrtoll"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3854774b
+  type_id: 0x9313eb8f
+  full_name: "kstrtoll"
+}
+elf_symbol {
+  id: 0x9c1bb84e
+  name: "kstrtos8"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7429e20c
+  type_id: 0x9312e488
+  full_name: "kstrtos8"
+}
+elf_symbol {
+  id: 0xa656e08e
+  name: "kstrtos8_from_user"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf5ac87b9
+  type_id: 0x91c57966
+  full_name: "kstrtos8_from_user"
+}
+elf_symbol {
+  id: 0x4c5f49dc
+  name: "kstrtou16"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4af6ddf0
+  type_id: 0x93196b24
+  full_name: "kstrtou16"
+}
+elf_symbol {
+  id: 0x8776d783
+  name: "kstrtou16_from_user"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x02d1793c
+  type_id: 0x91c5c19c
+  full_name: "kstrtou16_from_user"
+}
+elf_symbol {
+  id: 0xa4c342f5
+  name: "kstrtou8"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6a6e05bf
+  type_id: 0x9312ea38
+  full_name: "kstrtou8"
+}
+elf_symbol {
+  id: 0x253268e8
+  name: "kstrtou8_from_user"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x59e088ae
+  type_id: 0x91c5798d
+  full_name: "kstrtou8_from_user"
+}
+elf_symbol {
+  id: 0xec1bb297
+  name: "kstrtouint"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3b6c41ea
+  type_id: 0x931427a9
+  full_name: "kstrtouint"
+}
+elf_symbol {
+  id: 0x0da18d92
+  name: "kstrtouint_from_user"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x19b76060
+  type_id: 0x91c51554
+  full_name: "kstrtouint_from_user"
+}
+elf_symbol {
+  id: 0x35384efd
+  name: "kstrtoul_from_user"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf381d68f
+  type_id: 0x91c563a4
+  full_name: "kstrtoul_from_user"
+}
+elf_symbol {
+  id: 0x95eb59ef
+  name: "kstrtoull"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5c3c7387
+  type_id: 0x931d2209
+  full_name: "kstrtoull"
+}
+elf_symbol {
+  id: 0xa074b313
+  name: "kstrtoull_from_user"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf159aa44
+  type_id: 0x91c5850e
+  full_name: "kstrtoull_from_user"
+}
+elf_symbol {
+  id: 0x877c1d4f
+  name: "kswapd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa6b27bfe
+  type_id: 0x9bafba63
+  full_name: "kswapd"
+}
+elf_symbol {
+  id: 0x80424e6f
+  name: "ksys_sync_helper"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x55c76a23
+  type_id: 0x10985193
+  full_name: "ksys_sync_helper"
+}
+elf_symbol {
+  id: 0xa662c735
+  name: "kthread_bind"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3de7e7ce
+  type_id: 0x16c82e7e
+  full_name: "kthread_bind"
+}
+elf_symbol {
+  id: 0xa921f032
+  name: "kthread_bind_mask"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x34848ecd
+  type_id: 0x171a00e6
+  full_name: "kthread_bind_mask"
+}
+elf_symbol {
+  id: 0x5b454f0c
+  name: "kthread_cancel_delayed_work_sync"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeda0a34d
+  type_id: 0xfe6da83f
+  full_name: "kthread_cancel_delayed_work_sync"
+}
+elf_symbol {
+  id: 0x21fc0560
+  name: "kthread_cancel_work_sync"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8e7b4939
+  type_id: 0xff8308a1
+  full_name: "kthread_cancel_work_sync"
+}
+elf_symbol {
+  id: 0xd20ecdb9
+  name: "kthread_complete_and_exit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6008689f
+  type_id: 0x1230d8bc
+  full_name: "kthread_complete_and_exit"
+}
+elf_symbol {
+  id: 0x4ed76f28
+  name: "kthread_create_on_cpu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x951e9546
+  type_id: 0x70203fbf
+  full_name: "kthread_create_on_cpu"
+}
+elf_symbol {
+  id: 0x54d851dc
+  name: "kthread_create_on_node"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb0f4ab9f
+  type_id: 0x7028bf98
+  full_name: "kthread_create_on_node"
+}
+elf_symbol {
+  id: 0x1c8ac0ea
+  name: "kthread_create_worker"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5697a553
+  type_id: 0x6c9e1249
+  full_name: "kthread_create_worker"
+}
+elf_symbol {
+  id: 0xdd5dcb4e
+  name: "kthread_delayed_work_timer_fn"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc1b48cc6
+  type_id: 0x1f15d172
+  full_name: "kthread_delayed_work_timer_fn"
+}
+elf_symbol {
+  id: 0xeae01788
+  name: "kthread_destroy_worker"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa6e6acfb
+  type_id: 0x1dbb8bb2
+  full_name: "kthread_destroy_worker"
+}
+elf_symbol {
+  id: 0x84839142
+  name: "kthread_flush_work"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2e45ff91
+  type_id: 0x11bf0236
+  full_name: "kthread_flush_work"
+}
+elf_symbol {
+  id: 0xa9c37a1d
+  name: "kthread_flush_worker"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x669f34e6
+  type_id: 0x1dbb8bb2
+  full_name: "kthread_flush_worker"
+}
+elf_symbol {
+  id: 0x49232ca9
+  name: "kthread_mod_delayed_work"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x467817a8
+  type_id: 0xf387c34f
+  full_name: "kthread_mod_delayed_work"
+}
+elf_symbol {
+  id: 0xec609d3e
+  name: "kthread_park"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbdd2a211
+  type_id: 0x9ac6895a
+  full_name: "kthread_park"
+}
+elf_symbol {
+  id: 0x44f92a6d
+  name: "kthread_parkme"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf95322f4
+  type_id: 0x10985193
+  full_name: "kthread_parkme"
+}
+elf_symbol {
+  id: 0x40c3dc92
+  name: "kthread_queue_delayed_work"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcada8247
+  type_id: 0xf387c34f
+  full_name: "kthread_queue_delayed_work"
+}
+elf_symbol {
+  id: 0xb27aa180
+  name: "kthread_queue_work"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb438cecd
+  type_id: 0xf395f41f
+  full_name: "kthread_queue_work"
+}
+elf_symbol {
+  id: 0xeb6e491f
+  name: "kthread_should_park"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x79defbe1
+  type_id: 0xfea45b04
+  full_name: "kthread_should_park"
+}
+elf_symbol {
+  id: 0xf902c37c
+  name: "kthread_should_stop"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb3f7646e
+  type_id: 0xfea45b04
+  full_name: "kthread_should_stop"
+}
+elf_symbol {
+  id: 0x9a04e3d3
+  name: "kthread_stop"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4fa9ae5c
+  type_id: 0x9ac6895a
+  full_name: "kthread_stop"
+}
+elf_symbol {
+  id: 0x52e60edd
+  name: "kthread_unpark"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbb1ba9c7
+  type_id: 0x17de3be6
+  full_name: "kthread_unpark"
+}
+elf_symbol {
+  id: 0xc6d4a959
+  name: "kthread_worker_fn"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x955b0e2e
+  type_id: 0x9bafba63
+  full_name: "kthread_worker_fn"
+}
+elf_symbol {
+  id: 0x95d94296
+  name: "ktime_add_safe"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x03952887
+  type_id: 0x9be74aa5
+  full_name: "ktime_add_safe"
+}
+elf_symbol {
+  id: 0x25143c30
+  name: "ktime_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb43f9365
+  type_id: 0x9fd15b99
+  full_name: "ktime_get"
+}
+elf_symbol {
+  id: 0x7b453e0a
+  name: "ktime_get_boot_fast_ns"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6ef6b54f
+  type_id: 0x57dbd34b
+  full_name: "ktime_get_boot_fast_ns"
+}
+elf_symbol {
+  id: 0xb80124fb
+  name: "ktime_get_coarse_real_ts64"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x484f6edf
+  type_id: 0x11a59ba3
+  full_name: "ktime_get_coarse_real_ts64"
+}
+elf_symbol {
+  id: 0xba76946d
+  name: "ktime_get_coarse_with_offset"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbcc15e75
+  type_id: 0xb4bb7eb3
+  full_name: "ktime_get_coarse_with_offset"
+}
+elf_symbol {
+  id: 0x012f568e
+  name: "ktime_get_mono_fast_ns"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6ebe366f
+  type_id: 0x57dbd34b
+  full_name: "ktime_get_mono_fast_ns"
+}
+elf_symbol {
+  id: 0x6a40dcf7
+  name: "ktime_get_raw"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9714e0bb
+  type_id: 0x9fd15b99
+  full_name: "ktime_get_raw"
+}
+elf_symbol {
+  id: 0x627cd27d
+  name: "ktime_get_raw_ts64"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1edb69d6
+  type_id: 0x11a59ba3
+  full_name: "ktime_get_raw_ts64"
+}
+elf_symbol {
+  id: 0xa662e905
+  name: "ktime_get_real_seconds"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x953e1b9e
+  type_id: 0x56b7c48c
+  full_name: "ktime_get_real_seconds"
+}
+elf_symbol {
+  id: 0xc78c2710
+  name: "ktime_get_real_ts64"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9ec6ca96
+  type_id: 0x11a59ba3
+  full_name: "ktime_get_real_ts64"
+}
+elf_symbol {
+  id: 0x0614b92e
+  name: "ktime_get_seconds"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa9320d27
+  type_id: 0x56b7c48c
+  full_name: "ktime_get_seconds"
+}
+elf_symbol {
+  id: 0x01b49a38
+  name: "ktime_get_snapshot"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x381dc878
+  type_id: 0x10689f5d
+  full_name: "ktime_get_snapshot"
+}
+elf_symbol {
+  id: 0xbe2a589c
+  name: "ktime_get_ts64"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5e515be6
+  type_id: 0x11a59ba3
+  full_name: "ktime_get_ts64"
+}
+elf_symbol {
+  id: 0xf03cc7d6
+  name: "ktime_get_with_offset"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc4f0da12
+  type_id: 0xb4bb7eb3
+  full_name: "ktime_get_with_offset"
+}
+elf_symbol {
+  id: 0x4026efa6
+  name: "kunit_binary_assert_format"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7a29ff1d
+  type_id: 0x1d09a9ef
+  full_name: "kunit_binary_assert_format"
+}
+elf_symbol {
+  id: 0x76ff2b39
+  name: "kunit_do_failed_assertion"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3efa0b02
+  type_id: 0x1a1815c7
+  full_name: "kunit_do_failed_assertion"
+}
+elf_symbol {
+  id: 0xf2e6f907
+  name: "kunit_kmalloc_array"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x53e80039
+  type_id: 0x5f3f0d07
+  full_name: "kunit_kmalloc_array"
+}
+elf_symbol {
+  id: 0xb1bdece7
+  name: "kunit_ptr_not_err_assert_format"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x96b99baa
+  type_id: 0x1d09a9ef
+  full_name: "kunit_ptr_not_err_assert_format"
+}
+elf_symbol {
+  id: 0x3160ee82
+  name: "kvasprintf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x587b0954
+  type_id: 0x02968dbf
+  full_name: "kvasprintf"
+}
+elf_symbol {
+  id: 0xbc9cd951
+  name: "kvasprintf_const"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1632bc21
+  type_id: 0xaeec9bd7
+  full_name: "kvasprintf_const"
+}
+elf_symbol {
+  id: 0x15a3f41a
+  name: "kvfree"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7aa1756e
+  type_id: 0x1edf94e9
+  full_name: "kvfree"
+}
+elf_symbol {
+  id: 0x6e8c6baf
+  name: "kvfree_call_rcu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbaf22757
+  type_id: 0x1e336b85
+  full_name: "kvfree_call_rcu"
+}
+elf_symbol {
+  id: 0x3ae24a16
+  name: "kvmalloc_node"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x599fb41c
+  type_id: 0x6844b8ad
+  full_name: "kvmalloc_node"
+}
+elf_symbol {
+  id: 0x3df63827
+  name: "l2cap_add_psm"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5309dac2
+  type_id: 0x9dff38c4
+  full_name: "l2cap_add_psm"
+}
+elf_symbol {
+  id: 0x26f1f650
+  name: "l2cap_chan_close"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbc04cc40
+  type_id: 0x11d1a5c3
+  full_name: "l2cap_chan_close"
+}
+elf_symbol {
+  id: 0xbad9100b
+  name: "l2cap_chan_connect"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7b272ac4
+  type_id: 0x9f1e1154
+  full_name: "l2cap_chan_connect"
+}
+elf_symbol {
+  id: 0x5fbc0f26
+  name: "l2cap_chan_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0cf226d7
+  type_id: 0xedba1f63
+  full_name: "l2cap_chan_create"
+}
+elf_symbol {
+  id: 0xf311fdc8
+  name: "l2cap_chan_del"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdacaf929
+  type_id: 0x11d1a5c3
+  full_name: "l2cap_chan_del"
+}
+elf_symbol {
+  id: 0x1b77235e
+  name: "l2cap_chan_list"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0318963b
+  type_id: 0x1caf5700
+  full_name: "l2cap_chan_list"
+}
+elf_symbol {
+  id: 0x95c06871
+  name: "l2cap_chan_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xadbe7195
+  type_id: 0x104d268f
+  full_name: "l2cap_chan_put"
+}
+elf_symbol {
+  id: 0x477d12fb
+  name: "l2cap_chan_send"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x20f36f9d
+  type_id: 0x9ddbf7b4
+  full_name: "l2cap_chan_send"
+}
+elf_symbol {
+  id: 0xa2949e70
+  name: "l2cap_chan_set_defaults"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4640d465
+  type_id: 0x104d268f
+  full_name: "l2cap_chan_set_defaults"
+}
+elf_symbol {
+  id: 0x7ddae758
+  name: "l2cap_conn_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe4c0d4ae
+  type_id: 0xa6fe7077
+  full_name: "l2cap_conn_get"
+}
+elf_symbol {
+  id: 0x408a40eb
+  name: "l2cap_conn_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x611a22ca
+  type_id: 0x1ef27e10
+  full_name: "l2cap_conn_put"
+}
+elf_symbol {
+  id: 0x713c49dc
+  name: "l2cap_is_socket"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x31b3bf78
+  type_id: 0xfabc5175
+  full_name: "l2cap_is_socket"
+}
+elf_symbol {
+  id: 0xcf1da4b4
+  name: "l2cap_register_user"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd817a750
+  type_id: 0x9390f5c5
+  full_name: "l2cap_register_user"
+}
+elf_symbol {
+  id: 0x4be6182f
+  name: "l2cap_unregister_user"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb8a79e98
+  type_id: 0x1e884779
+  full_name: "l2cap_unregister_user"
+}
+elf_symbol {
+  id: 0x0adf80e9
+  name: "l2tp_recv_common"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd7b67f90
+  type_id: 0x15503314
+  full_name: "l2tp_recv_common"
+}
+elf_symbol {
+  id: 0x8667b5a3
+  name: "l2tp_session_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa99e8f9e
+  type_id: 0xf6e0960a
+  full_name: "l2tp_session_create"
+}
+elf_symbol {
+  id: 0x41e1d797
+  name: "l2tp_session_dec_refcount"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x044f87d8
+  type_id: 0x154220a5
+  full_name: "l2tp_session_dec_refcount"
+}
+elf_symbol {
+  id: 0x6d5a3515
+  name: "l2tp_session_delete"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x329487cb
+  type_id: 0x154220a5
+  full_name: "l2tp_session_delete"
+}
+elf_symbol {
+  id: 0x7c29c299
+  name: "l2tp_session_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5591b1e7
+  type_id: 0xe3a506be
+  full_name: "l2tp_session_get"
+}
+elf_symbol {
+  id: 0x1d4f252f
+  name: "l2tp_session_get_by_ifname"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x439328d4
+  type_id: 0xe07964c6
+  full_name: "l2tp_session_get_by_ifname"
+}
+elf_symbol {
+  id: 0xd944403c
+  name: "l2tp_session_get_nth"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa334e0fd
+  type_id: 0xe7f6577b
+  full_name: "l2tp_session_get_nth"
+}
+elf_symbol {
+  id: 0x12bc1d26
+  name: "l2tp_session_inc_refcount"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1b7d2a94
+  type_id: 0x154220a5
+  full_name: "l2tp_session_inc_refcount"
+}
+elf_symbol {
+  id: 0x8bf0dadd
+  name: "l2tp_session_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3e42889a
+  type_id: 0x98c44e7d
+  full_name: "l2tp_session_register"
+}
+elf_symbol {
+  id: 0x16020414
+  name: "l2tp_session_set_header_len"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd462b4a4
+  type_id: 0x14dea3e9
+  full_name: "l2tp_session_set_header_len"
+}
+elf_symbol {
+  id: 0x19b323fa
+  name: "l2tp_sk_to_tunnel"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x788257b9
+  type_id: 0x30b12c32
+  full_name: "l2tp_sk_to_tunnel"
+}
+elf_symbol {
+  id: 0xb3ed8a46
+  name: "l2tp_tunnel_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5699f3d2
+  type_id: 0x85e53152
+  full_name: "l2tp_tunnel_create"
+}
+elf_symbol {
+  id: 0x9328a6ed
+  name: "l2tp_tunnel_dec_refcount"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd559bd1d
+  type_id: 0x197597d7
+  full_name: "l2tp_tunnel_dec_refcount"
+}
+elf_symbol {
+  id: 0xf70d152f
+  name: "l2tp_tunnel_delete"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0e742a21
+  type_id: 0x197597d7
+  full_name: "l2tp_tunnel_delete"
+}
+elf_symbol {
+  id: 0xbf0c31fb
+  name: "l2tp_tunnel_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb94627a1
+  type_id: 0x3bc23464
+  full_name: "l2tp_tunnel_get"
+}
+elf_symbol {
+  id: 0x2b8f7fee
+  name: "l2tp_tunnel_get_nth"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2a196e15
+  type_id: 0x397a9784
+  full_name: "l2tp_tunnel_get_nth"
+}
+elf_symbol {
+  id: 0x8244eaf7
+  name: "l2tp_tunnel_get_session"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb7d4c0d8
+  type_id: 0xe54ef49b
+  full_name: "l2tp_tunnel_get_session"
+}
+elf_symbol {
+  id: 0x7169705b
+  name: "l2tp_tunnel_inc_refcount"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3a672d09
+  type_id: 0x197597d7
+  full_name: "l2tp_tunnel_inc_refcount"
+}
+elf_symbol {
+  id: 0x8066cf3a
+  name: "l2tp_tunnel_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2ef77e74
+  type_id: 0x945c71bc
+  full_name: "l2tp_tunnel_register"
+}
+elf_symbol {
+  id: 0x8f6761e2
+  name: "l2tp_udp_encap_recv"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1167335b
+  type_id: 0x9ac4d210
+  full_name: "l2tp_udp_encap_recv"
+}
+elf_symbol {
+  id: 0x20069858
+  name: "l2tp_xmit_skb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9ddbf6c3
+  type_id: 0x984fafbd
+  full_name: "l2tp_xmit_skb"
+}
+elf_symbol {
+  id: 0x709f7fc8
+  name: "led_classdev_flash_register_ext"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x742c1eda
+  type_id: 0x9de9e113
+  full_name: "led_classdev_flash_register_ext"
+}
+elf_symbol {
+  id: 0xa58e6f5d
+  name: "led_classdev_flash_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4eb59385
+  type_id: 0x1f99af43
+  full_name: "led_classdev_flash_unregister"
+}
+elf_symbol {
+  id: 0xfe24eb71
+  name: "led_classdev_register_ext"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x41bc5097
+  type_id: 0x9dd2d442
+  full_name: "led_classdev_register_ext"
+}
+elf_symbol {
+  id: 0x27d77d55
+  name: "led_classdev_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb650ed0b
+  type_id: 0x1c2afa5a
+  full_name: "led_classdev_unregister"
+}
+elf_symbol {
+  id: 0x62cd5012
+  name: "led_get_flash_fault"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7514d616
+  type_id: 0x92625532
+  full_name: "led_get_flash_fault"
+}
+elf_symbol {
+  id: 0xda95494e
+  name: "led_init_default_state_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x69cf0bc6
+  type_id: 0xd140e5e2
+  full_name: "led_init_default_state_get"
+}
+elf_symbol {
+  id: 0x76f00da5
+  name: "led_mc_calc_color_components"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5369cfa3
+  type_id: 0x927aedd4
+  full_name: "led_mc_calc_color_components"
+}
+elf_symbol {
+  id: 0x2e74d698
+  name: "led_set_brightness_sync"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdf9a4d31
+  type_id: 0x90245d7e
+  full_name: "led_set_brightness_sync"
+}
+elf_symbol {
+  id: 0x7bbb8d5f
+  name: "led_set_flash_brightness"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7fa21441
+  type_id: 0x91a53d53
+  full_name: "led_set_flash_brightness"
+}
+elf_symbol {
+  id: 0xa18d331b
+  name: "led_set_flash_timeout"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x851e8f16
+  type_id: 0x91a53d53
+  full_name: "led_set_flash_timeout"
+}
+elf_symbol {
+  id: 0x1874c9e3
+  name: "led_sysfs_disable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x34ed8bee
+  type_id: 0x1c2afa5a
+  full_name: "led_sysfs_disable"
+}
+elf_symbol {
+  id: 0xef448c0c
+  name: "led_sysfs_enable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x15d8b869
+  type_id: 0x1c2afa5a
+  full_name: "led_sysfs_enable"
+}
+elf_symbol {
+  id: 0x678fcec9
+  name: "led_trigger_event"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe51c410d
+  type_id: 0x13e8c6b3
+  full_name: "led_trigger_event"
+}
+elf_symbol {
+  id: 0x73ea3871
+  name: "led_trigger_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe34a9f03
+  type_id: 0x9e1a0a92
+  full_name: "led_trigger_register"
+}
+elf_symbol {
+  id: 0xaaa8b4f9
+  name: "led_trigger_register_simple"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0eb17eed
+  type_id: 0x1f385795
+  full_name: "led_trigger_register_simple"
+}
+elf_symbol {
+  id: 0xbadeab0f
+  name: "led_trigger_remove"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2f6d2528
+  type_id: 0x1c2afa5a
+  full_name: "led_trigger_remove"
+}
+elf_symbol {
+  id: 0xa60f59c7
+  name: "led_trigger_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x386b978c
+  type_id: 0x1302b82e
+  full_name: "led_trigger_unregister"
+}
+elf_symbol {
+  id: 0x61d92429
+  name: "led_trigger_unregister_simple"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x67be3e5e
+  type_id: 0x1302b82e
+  full_name: "led_trigger_unregister_simple"
+}
+elf_symbol {
+  id: 0xf4949824
+  name: "led_update_brightness"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdf15b59c
+  type_id: 0x913248e6
+  full_name: "led_update_brightness"
+}
+elf_symbol {
+  id: 0xf48c4979
+  name: "led_update_flash_brightness"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4bb7ff59
+  type_id: 0x92811dff
+  full_name: "led_update_flash_brightness"
+}
+elf_symbol {
+  id: 0x7d03c60e
+  name: "linear_range_get_selector_within"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc6e5bcf3
+  type_id: 0x1c487847
+  full_name: "linear_range_get_selector_within"
+}
+elf_symbol {
+  id: 0x6149caff
+  name: "linear_range_get_value"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd4e6d7e0
+  type_id: 0x9150cafb
+  full_name: "linear_range_get_value"
+}
+elf_symbol {
+  id: 0x91e9c466
+  name: "linkwatch_fire_event"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2d9e0ed8
+  type_id: 0x1c31d966
+  full_name: "linkwatch_fire_event"
+}
+elf_symbol {
+  id: 0xf33d71ea
+  name: "list_sort"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe091c977
+  type_id: 0x166f7411
+  full_name: "list_sort"
+}
+elf_symbol {
+  id: 0xc50733a4
+  name: "llist_add_batch"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc7a1840e
+  type_id: 0xfe1d9a9c
+  full_name: "llist_add_batch"
+}
+elf_symbol {
+  id: 0xc162c911
+  name: "llist_reverse_order"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0ddb1cd7
+  type_id: 0xc8585588
+  full_name: "llist_reverse_order"
+}
+elf_symbol {
+  id: 0xaaab26df
+  name: "lock_sock_nested"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x94a1d0ed
+  type_id: 0x1655de44
+  full_name: "lock_sock_nested"
+}
+elf_symbol {
+  id: 0x42eaca18
+  name: "lockref_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd9b85ef6
+  type_id: 0x18daa769
+  full_name: "lockref_get"
+}
+elf_symbol {
+  id: 0x408fc274
+  name: "log_abnormal_wakeup_reason"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6d20fc95
+  type_id: 0x1d88d4f1
+  full_name: "log_abnormal_wakeup_reason"
+}
+elf_symbol {
+  id: 0x8fab82b5
+  name: "log_post_read_mmio"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0c1a5ee3
+  type_id: 0x34b8504b
+  full_name: "log_post_read_mmio"
+}
+elf_symbol {
+  id: 0xe1482206
+  name: "log_post_write_mmio"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfa4d3c24
+  type_id: 0x34bfea0b
+  full_name: "log_post_write_mmio"
+}
+elf_symbol {
+  id: 0xf2579cec
+  name: "log_read_mmio"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6b722180
+  type_id: 0x1a14825f
+  full_name: "log_read_mmio"
+}
+elf_symbol {
+  id: 0xc41c43d2
+  name: "log_threaded_irq_wakeup_reason"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x34e5628d
+  type_id: 0x08cce614
+  full_name: "log_threaded_irq_wakeup_reason"
+}
+elf_symbol {
+  id: 0x02bffe2a
+  name: "log_write_mmio"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc905402b
+  type_id: 0x34bfea0b
+  full_name: "log_write_mmio"
+}
+elf_symbol {
+  id: 0x06e891b4
+  name: "logfc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5c5971c8
+  type_id: 0x11cf2aed
+  full_name: "logfc"
+}
+elf_symbol {
+  id: 0xad10cf0f
+  name: "lookup_bdev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x34c7cdbc
+  type_id: 0x92c581e2
+  full_name: "lookup_bdev"
+}
+elf_symbol {
+  id: 0x493ce9fc
+  name: "loops_per_jiffy"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xba497f13
+  type_id: 0x33756485
+  full_name: "loops_per_jiffy"
+}
+elf_symbol {
+  id: 0x1440b3fe
+  name: "lowpan_header_compress"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xad31bd5d
+  type_id: 0x9c13fdc1
+  full_name: "lowpan_header_compress"
+}
+elf_symbol {
+  id: 0xf625170a
+  name: "lowpan_header_decompress"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8c56cba6
+  type_id: 0x9c13fdc1
+  full_name: "lowpan_header_decompress"
+}
+elf_symbol {
+  id: 0x3751bf8b
+  name: "lowpan_nhc_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9fd87e04
+  type_id: 0x9286d894
+  full_name: "lowpan_nhc_add"
+}
+elf_symbol {
+  id: 0xf1354b5e
+  name: "lowpan_nhc_del"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa20a9587
+  type_id: 0x1f9e6a28
+  full_name: "lowpan_nhc_del"
+}
+elf_symbol {
+  id: 0x2ee79858
+  name: "lowpan_register_netdev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaec2b9fa
+  type_id: 0x92a49dbe
+  full_name: "lowpan_register_netdev"
+}
+elf_symbol {
+  id: 0xbc74f02a
+  name: "lowpan_register_netdevice"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9e24b052
+  type_id: 0x92a49dbe
+  full_name: "lowpan_register_netdevice"
+}
+elf_symbol {
+  id: 0x01bea327
+  name: "lowpan_unregister_netdev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa3191ad6
+  type_id: 0x1c31d966
+  full_name: "lowpan_unregister_netdev"
+}
+elf_symbol {
+  id: 0x4f31c756
+  name: "lowpan_unregister_netdevice"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x71e189c1
+  type_id: 0x1c31d966
+  full_name: "lowpan_unregister_netdevice"
+}
+elf_symbol {
+  id: 0x7bd17841
+  name: "mac_pton"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x652032cb
+  type_id: 0xf1236ad6
+  full_name: "mac_pton"
+}
+elf_symbol {
+  id: 0xe4eac6bd
+  name: "mas_empty_area_rev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa57a3a89
+  type_id: 0x9a56e0d9
+  full_name: "mas_empty_area_rev"
+}
+elf_symbol {
+  id: 0x602510fe
+  name: "mas_find"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9acf31c6
+  type_id: 0x514ca28b
+  full_name: "mas_find"
+}
+elf_symbol {
+  id: 0x304a5133
+  name: "match_hex"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xad0413d4
+  type_id: 0x99a8dc1b
+  full_name: "match_hex"
+}
+elf_symbol {
+  id: 0xcc9bd833
+  name: "match_int"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4e3567f7
+  type_id: 0x99a8dc1b
+  full_name: "match_int"
+}
+elf_symbol {
+  id: 0x97e555df
+  name: "match_string"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x81188c30
+  type_id: 0x91c2e0c4
+  full_name: "match_string"
+}
+elf_symbol {
+  id: 0x61c53930
+  name: "match_token"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x44e9a829
+  type_id: 0x9c585b1a
+  full_name: "match_token"
+}
+elf_symbol {
+  id: 0x588e0fe2
+  name: "mbox_chan_received_data"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9f686c56
+  type_id: 0x1c5fa2cd
+  full_name: "mbox_chan_received_data"
+}
+elf_symbol {
+  id: 0xdaf86712
+  name: "mbox_chan_txdone"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcfbc0dac
+  type_id: 0x1da1d415
+  full_name: "mbox_chan_txdone"
+}
+elf_symbol {
+  id: 0xd8f7e87d
+  name: "mbox_client_txdone"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x02754ce4
+  type_id: 0x1da1d415
+  full_name: "mbox_client_txdone"
+}
+elf_symbol {
+  id: 0x26ff76ce
+  name: "mbox_controller_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x41de95fc
+  type_id: 0x93bf967f
+  full_name: "mbox_controller_register"
+}
+elf_symbol {
+  id: 0xc74935db
+  name: "mbox_controller_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x76ecfaad
+  type_id: 0x1ea724c3
+  full_name: "mbox_controller_unregister"
+}
+elf_symbol {
+  id: 0xbf272cf1
+  name: "mbox_free_channel"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0e412be4
+  type_id: 0x1c3d5759
+  full_name: "mbox_free_channel"
+}
+elf_symbol {
+  id: 0xa93d3855
+  name: "mbox_request_channel"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x09f73d51
+  type_id: 0xfc78122e
+  full_name: "mbox_request_channel"
+}
+elf_symbol {
+  id: 0x88716266
+  name: "mbox_request_channel_byname"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4d4b33d9
+  type_id: 0xfd1cd3b6
+  full_name: "mbox_request_channel_byname"
+}
+elf_symbol {
+  id: 0x28a1af7f
+  name: "mbox_send_message"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe45e4550
+  type_id: 0x91471071
+  full_name: "mbox_send_message"
+}
+elf_symbol {
+  id: 0xbf3f53e8
+  name: "mctrl_gpio_disable_ms"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1f449588
+  type_id: 0x13b5bab5
+  full_name: "mctrl_gpio_disable_ms"
+}
+elf_symbol {
+  id: 0xfff946e6
+  name: "mctrl_gpio_enable_ms"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xebd4cc11
+  type_id: 0x13b5bab5
+  full_name: "mctrl_gpio_enable_ms"
+}
+elf_symbol {
+  id: 0x6b021d79
+  name: "mctrl_gpio_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x48a3d20b
+  type_id: 0xcd99505d
+  full_name: "mctrl_gpio_get"
+}
+elf_symbol {
+  id: 0x225925a6
+  name: "mctrl_gpio_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3562b3df
+  type_id: 0x44301cc5
+  full_name: "mctrl_gpio_init"
+}
+elf_symbol {
+  id: 0x791e75a2
+  name: "mctrl_gpio_set"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdfcb6c90
+  type_id: 0x12a3af2d
+  full_name: "mctrl_gpio_set"
+}
+elf_symbol {
+  id: 0x74d2c062
+  name: "mdio_device_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x79e613b9
+  type_id: 0x611af1f3
+  full_name: "mdio_device_create"
+}
+elf_symbol {
+  id: 0x08abb636
+  name: "mdio_device_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6d54e7c9
+  type_id: 0x14c7dbf6
+  full_name: "mdio_device_free"
+}
+elf_symbol {
+  id: 0xe93a46f5
+  name: "mdio_device_reset"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4e1d8d04
+  type_id: 0x155b58ba
+  full_name: "mdio_device_reset"
+}
+elf_symbol {
+  id: 0x97be343f
+  name: "mdiobus_alloc_size"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa8c549aa
+  type_id: 0x9384eeb1
+  full_name: "mdiobus_alloc_size"
+}
+elf_symbol {
+  id: 0xd18d9beb
+  name: "mdiobus_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3f19d564
+  type_id: 0x1ded15a3
+  full_name: "mdiobus_free"
+}
+elf_symbol {
+  id: 0x4b1572e8
+  name: "mdiobus_get_phy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x88535ab3
+  type_id: 0xbf379f2f
+  full_name: "mdiobus_get_phy"
+}
+elf_symbol {
+  id: 0x9205ef97
+  name: "mdiobus_is_registered_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x044681d0
+  type_id: 0xf24d9c78
+  full_name: "mdiobus_is_registered_device"
+}
+elf_symbol {
+  id: 0x0d67f02b
+  name: "mdiobus_modify_changed"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x22bae055
+  type_id: 0x9159073c
+  full_name: "mdiobus_modify_changed"
+}
+elf_symbol {
+  id: 0x8fd19cea
+  name: "mdiobus_read"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9b2615a6
+  type_id: 0x915b6659
+  full_name: "mdiobus_read"
+}
+elf_symbol {
+  id: 0x2e683b3e
+  name: "mdiobus_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x89879ae8
+  type_id: 0x1ded15a3
+  full_name: "mdiobus_unregister"
+}
+elf_symbol {
+  id: 0x46caa64b
+  name: "mdiobus_write"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x95306f07
+  type_id: 0x9159236f
+  full_name: "mdiobus_write"
+}
+elf_symbol {
+  id: 0x7f726caf
+  name: "media_create_ancillary_link"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x762f0e92
+  type_id: 0xdd6063b1
+  full_name: "media_create_ancillary_link"
+}
+elf_symbol {
+  id: 0x562d3f6f
+  name: "media_create_intf_link"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd0376524
+  type_id: 0xddb49ff7
+  full_name: "media_create_intf_link"
+}
+elf_symbol {
+  id: 0x57c27f6f
+  name: "media_create_pad_link"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe704b727
+  type_id: 0x9865d601
+  full_name: "media_create_pad_link"
+}
+elf_symbol {
+  id: 0x9eddc572
+  name: "media_device_cleanup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8ea982ec
+  type_id: 0x1510b6d0
+  full_name: "media_device_cleanup"
+}
+elf_symbol {
+  id: 0xa54f3ef4
+  name: "media_device_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9a4b2751
+  type_id: 0x1510b6d0
+  full_name: "media_device_init"
+}
+elf_symbol {
+  id: 0x84271f20
+  name: "media_device_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x37bdb389
+  type_id: 0x1510b6d0
+  full_name: "media_device_unregister"
+}
+elf_symbol {
+  id: 0xf60a5d60
+  name: "media_devnode_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3840cadd
+  type_id: 0xfa3b0c7d
+  full_name: "media_devnode_create"
+}
+elf_symbol {
+  id: 0xea64439d
+  name: "media_devnode_remove"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x68238341
+  type_id: 0x144a285c
+  full_name: "media_devnode_remove"
+}
+elf_symbol {
+  id: 0xd0b869bf
+  name: "media_entity_pads_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd2c7eba4
+  type_id: 0x9867350b
+  full_name: "media_entity_pads_init"
+}
+elf_symbol {
+  id: 0x3e285e2f
+  name: "media_entity_pipeline"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x370c8e16
+  type_id: 0xf86841bc
+  full_name: "media_entity_pipeline"
+}
+elf_symbol {
+  id: 0xf5924d9f
+  name: "media_entity_remove_links"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc1c112de
+  type_id: 0x173d80e7
+  full_name: "media_entity_remove_links"
+}
+elf_symbol {
+  id: 0x84278a73
+  name: "media_graph_walk_cleanup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9b21e034
+  type_id: 0x143c209f
+  full_name: "media_graph_walk_cleanup"
+}
+elf_symbol {
+  id: 0xf5327fe3
+  name: "media_graph_walk_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x317c5d2e
+  type_id: 0x997c1c57
+  full_name: "media_graph_walk_init"
+}
+elf_symbol {
+  id: 0x92649662
+  name: "media_graph_walk_next"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5b525aff
+  type_id: 0xdc294176
+  full_name: "media_graph_walk_next"
+}
+elf_symbol {
+  id: 0xc023a87c
+  name: "media_graph_walk_start"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8d02f8d0
+  type_id: 0x14467d88
+  full_name: "media_graph_walk_start"
+}
+elf_symbol {
+  id: 0x8d56397b
+  name: "media_pad_remote_pad_first"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x13a7480d
+  type_id: 0x43429458
+  full_name: "media_pad_remote_pad_first"
+}
+elf_symbol {
+  id: 0x47afd45d
+  name: "media_pad_remote_pad_unique"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0ebc9f21
+  type_id: 0x43429458
+  full_name: "media_pad_remote_pad_unique"
+}
+elf_symbol {
+  id: 0xa17b36f0
+  name: "media_pipeline_start"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc27c4e2a
+  type_id: 0x9aedeb37
+  full_name: "media_pipeline_start"
+}
+elf_symbol {
+  id: 0xee370c66
+  name: "media_pipeline_stop"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x35bd124d
+  type_id: 0x17a9fee1
+  full_name: "media_pipeline_stop"
+}
+elf_symbol {
+  id: 0xd075c3be
+  name: "media_request_get_by_fd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x55b435a1
+  type_id: 0x573c9ee0
+  full_name: "media_request_get_by_fd"
+}
+elf_symbol {
+  id: 0xa848deda
+  name: "media_request_object_complete"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc1aaf506
+  type_id: 0x19b6a09f
+  full_name: "media_request_object_complete"
+}
+elf_symbol {
+  id: 0x8eadb5fd
+  name: "media_request_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x03c9e25c
+  type_id: 0x19ccd2d6
+  full_name: "media_request_put"
+}
+elf_symbol {
+  id: 0x140f40dd
+  name: "mem_cgroup_from_id"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd0c2ea0e
+  type_id: 0x59f18b0b
+  full_name: "mem_cgroup_from_id"
+}
+elf_symbol {
+  id: 0x7f797603
+  name: "mem_dump_obj"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcb561441
+  type_id: 0x16b708df
+  full_name: "mem_dump_obj"
+}
+elf_symbol {
+  id: 0x01e78001
+  name: "mem_section"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xa3521253
+  type_id: 0x0d3dfaaf
+  full_name: "mem_section"
+}
+elf_symbol {
+  id: 0x746374fa
+  name: "memblock_end_of_DRAM"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4c894766
+  type_id: 0x01a85b76
+  full_name: "memblock_end_of_DRAM"
+}
+elf_symbol {
+  id: 0x4fb91c54
+  name: "memblock_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa6ecab47
+  type_id: 0x1567dd7e
+  full_name: "memblock_free"
+}
+elf_symbol {
+  id: 0xaa97e158
+  name: "memchr"
+  is_defined: true
+  symbol_type: FUNCTION
+  binding: WEAK
+  crc: 0xa07a37f0
+}
+elf_symbol {
+  id: 0x0b518e04
+  name: "memchr_inv"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8df92f66
+  type_id: 0x5970fa9d
+  full_name: "memchr_inv"
+}
+elf_symbol {
+  id: 0xad94cee2
+  name: "memcmp"
+  is_defined: true
+  symbol_type: FUNCTION
+  binding: WEAK
+  crc: 0x449ad0a7
+}
+elf_symbol {
+  id: 0xec5de79b
+  name: "memcpy"
+  is_defined: true
+  symbol_type: FUNCTION
+  binding: WEAK
+  crc: 0x4829a47e
+}
+elf_symbol {
+  id: 0xd046a426
+  name: "memcpy_and_pad"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x697ed5f0
+  type_id: 0x156a53a6
+  full_name: "memcpy_and_pad"
+}
+elf_symbol {
+  id: 0x9c7c44dc
+  name: "memdup_user"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5dc263fd
+  type_id: 0x5b01a12a
+  full_name: "memdup_user"
+}
+elf_symbol {
+  id: 0x4b8998cf
+  name: "memdup_user_nul"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x91b2f0c4
+  type_id: 0x5b01a12a
+  full_name: "memdup_user_nul"
+}
+elf_symbol {
+  id: 0x48ffba03
+  name: "memmove"
+  is_defined: true
+  symbol_type: FUNCTION
+  binding: WEAK
+  crc: 0x5a9f1d63
+}
+elf_symbol {
+  id: 0x08fd5f0f
+  name: "memory_block_size_bytes"
+  is_defined: true
+  symbol_type: FUNCTION
+  binding: WEAK
+  crc: 0xfcc1edd3
+  type_id: 0x31accd53
+  full_name: "memory_block_size_bytes"
+}
+elf_symbol {
+  id: 0xcd17d380
+  name: "memory_cgrp_subsys"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x06703019
+  type_id: 0x00571446
+  full_name: "memory_cgrp_subsys"
+}
+elf_symbol {
+  id: 0x4a3fbd55
+  name: "memory_cgrp_subsys_enabled_key"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xf352023f
+  type_id: 0xd2755d5f
+  full_name: "memory_cgrp_subsys_enabled_key"
+}
+elf_symbol {
+  id: 0x433c572b
+  name: "memory_read_from_buffer"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x65e0d6d7
+  type_id: 0x110e6a6f
+  full_name: "memory_read_from_buffer"
+}
+elf_symbol {
+  id: 0xdf190787
+  name: "memparse"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x27864d57
+  type_id: 0x1f815c37
+  full_name: "memparse"
+}
+elf_symbol {
+  id: 0xfd2dc160
+  name: "mempool_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc3762aec
+  type_id: 0x5963dafe
+  full_name: "mempool_alloc"
+}
+elf_symbol {
+  id: 0x13e62490
+  name: "mempool_alloc_pages"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x766a0927
+  type_id: 0x6a9df39e
+  full_name: "mempool_alloc_pages"
+}
+elf_symbol {
+  id: 0xa613caa5
+  name: "mempool_alloc_slab"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc972449f
+  type_id: 0x6a9df39e
+  full_name: "mempool_alloc_slab"
+}
+elf_symbol {
+  id: 0x25f67c9f
+  name: "mempool_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1953c958
+  type_id: 0x71ba82ec
+  full_name: "mempool_create"
+}
+elf_symbol {
+  id: 0x65b19e25
+  name: "mempool_destroy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9034a696
+  type_id: 0x1caba1e3
+  full_name: "mempool_destroy"
+}
+elf_symbol {
+  id: 0xfa3d486a
+  name: "mempool_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa897e3e7
+  type_id: 0x167437d8
+  full_name: "mempool_free"
+}
+elf_symbol {
+  id: 0x77eb61b0
+  name: "mempool_free_pages"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd985dc99
+  type_id: 0x16d5fd4b
+  full_name: "mempool_free_pages"
+}
+elf_symbol {
+  id: 0xfbb56638
+  name: "mempool_free_slab"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8a99a016
+  type_id: 0x16d5fd4b
+  full_name: "mempool_free_slab"
+}
+elf_symbol {
+  id: 0x9a28516c
+  name: "mempool_resize"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2aa0843e
+  type_id: 0x902f9013
+  full_name: "mempool_resize"
+}
+elf_symbol {
+  id: 0x7ad45055
+  name: "memremap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4d924f20
+  type_id: 0x7013e46e
+  full_name: "memremap"
+}
+elf_symbol {
+  id: 0x56171277
+  name: "memremap_pages"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x393ba798
+  type_id: 0x53aca83f
+  full_name: "memremap_pages"
+}
+elf_symbol {
+  id: 0x67a278cb
+  name: "memscan"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf812cff6
+  type_id: 0x511866ab
+  full_name: "memscan"
+}
+elf_symbol {
+  id: 0xd1412061
+  name: "memset"
+  is_defined: true
+  symbol_type: FUNCTION
+  binding: WEAK
+  crc: 0xdcb764ad
+}
+elf_symbol {
+  id: 0x4742ac18
+  name: "memset32"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x489eda10
+  type_id: 0x55bc9fde
+  full_name: "memset32"
+}
+elf_symbol {
+  id: 0x343d8d9d
+  name: "memset64"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xed8a2d95
+  type_id: 0x55b50c0c
+  full_name: "memset64"
+}
+elf_symbol {
+  id: 0xabdeef21
+  name: "memstart_addr"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x9688de8b
+  type_id: 0x2e0f9112
+  full_name: "memstart_addr"
+}
+elf_symbol {
+  id: 0xaa1ecb0d
+  name: "memunmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9e9fdd9d
+  type_id: 0x16b708df
+  full_name: "memunmap"
+}
+elf_symbol {
+  id: 0xbc9af04b
+  name: "memunmap_pages"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf46b2956
+  type_id: 0x143ecb11
+  full_name: "memunmap_pages"
+}
+elf_symbol {
+  id: 0x78495fd8
+  name: "mfd_add_devices"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x931b389a
+  type_id: 0x9c874975
+  full_name: "mfd_add_devices"
+}
+elf_symbol {
+  id: 0xa208d2dc
+  name: "mfd_remove_devices"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7048bb52
+  type_id: 0x100e6fc8
+  full_name: "mfd_remove_devices"
+}
+elf_symbol {
+  id: 0x89c6398f
+  name: "migrate_pages"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x530bbde5
+  type_id: 0x92405f04
+  full_name: "migrate_pages"
+}
+elf_symbol {
+  id: 0xbad16ab3
+  name: "migrate_swap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb3b01563
+  type_id: 0x9aaabb4a
+  full_name: "migrate_swap"
+}
+elf_symbol {
+  id: 0x68c3a63b
+  name: "mii_check_media"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0b839173
+  type_id: 0xcb5a4db0
+  full_name: "mii_check_media"
+}
+elf_symbol {
+  id: 0xbc90165b
+  name: "mii_ethtool_gset"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc42b22b3
+  type_id: 0x142e3633
+  full_name: "mii_ethtool_gset"
+}
+elf_symbol {
+  id: 0x1579ecd2
+  name: "mii_nway_restart"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x82a00e5c
+  type_id: 0x9906a4a5
+  full_name: "mii_nway_restart"
+}
+elf_symbol {
+  id: 0xe4572a81
+  name: "mipi_dsi_attach"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbedc46e9
+  type_id: 0x9fd879f0
+  full_name: "mipi_dsi_attach"
+}
+elf_symbol {
+  id: 0x07b15271
+  name: "mipi_dsi_compression_mode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa906cc12
+  type_id: 0x171c8621
+  full_name: "mipi_dsi_compression_mode"
+}
+elf_symbol {
+  id: 0xe2d4d055
+  name: "mipi_dsi_create_packet"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x23daa989
+  type_id: 0x95805682
+  full_name: "mipi_dsi_create_packet"
+}
+elf_symbol {
+  id: 0xe53f4a86
+  name: "mipi_dsi_dcs_enter_sleep_mode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1b5a70c8
+  type_id: 0x9fd879f0
+  full_name: "mipi_dsi_dcs_enter_sleep_mode"
+}
+elf_symbol {
+  id: 0xc42d006b
+  name: "mipi_dsi_dcs_exit_sleep_mode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeae616f4
+  type_id: 0x9fd879f0
+  full_name: "mipi_dsi_dcs_exit_sleep_mode"
+}
+elf_symbol {
+  id: 0x3a394021
+  name: "mipi_dsi_dcs_get_display_brightness"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcec82df5
+  type_id: 0x9f6374a9
+  full_name: "mipi_dsi_dcs_get_display_brightness"
+}
+elf_symbol {
+  id: 0xefe40ad0
+  name: "mipi_dsi_dcs_read"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9fb01bee
+  type_id: 0x1609f51a
+  full_name: "mipi_dsi_dcs_read"
+}
+elf_symbol {
+  id: 0x54a680f9
+  name: "mipi_dsi_dcs_set_column_address"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcdf7e8f8
+  type_id: 0x9db91c60
+  full_name: "mipi_dsi_dcs_set_column_address"
+}
+elf_symbol {
+  id: 0x6ee51cd8
+  name: "mipi_dsi_dcs_set_display_brightness"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x76f63b56
+  type_id: 0x9d9d4f0f
+  full_name: "mipi_dsi_dcs_set_display_brightness"
+}
+elf_symbol {
+  id: 0x1086ae4c
+  name: "mipi_dsi_dcs_set_display_off"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa0fc9231
+  type_id: 0x9fd879f0
+  full_name: "mipi_dsi_dcs_set_display_off"
+}
+elf_symbol {
+  id: 0x26cf67c0
+  name: "mipi_dsi_dcs_set_display_on"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x27ad4974
+  type_id: 0x9fd879f0
+  full_name: "mipi_dsi_dcs_set_display_on"
+}
+elf_symbol {
+  id: 0xf096de3c
+  name: "mipi_dsi_dcs_set_page_address"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x90106d36
+  type_id: 0x9db91c60
+  full_name: "mipi_dsi_dcs_set_page_address"
+}
+elf_symbol {
+  id: 0x0b3caa81
+  name: "mipi_dsi_dcs_set_pixel_format"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb0bf5101
+  type_id: 0x9f7d0838
+  full_name: "mipi_dsi_dcs_set_pixel_format"
+}
+elf_symbol {
+  id: 0x4512217f
+  name: "mipi_dsi_dcs_set_tear_off"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x43404a64
+  type_id: 0x9fd879f0
+  full_name: "mipi_dsi_dcs_set_tear_off"
+}
+elf_symbol {
+  id: 0xe9f5d63c
+  name: "mipi_dsi_dcs_set_tear_on"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3ca8eb13
+  type_id: 0x9cb0561a
+  full_name: "mipi_dsi_dcs_set_tear_on"
+}
+elf_symbol {
+  id: 0x1ed1af4f
+  name: "mipi_dsi_dcs_set_tear_scanline"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe615fb41
+  type_id: 0x9d9d4f0f
+  full_name: "mipi_dsi_dcs_set_tear_scanline"
+}
+elf_symbol {
+  id: 0x2f419666
+  name: "mipi_dsi_dcs_soft_reset"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2421c5d6
+  type_id: 0x9fd879f0
+  full_name: "mipi_dsi_dcs_soft_reset"
+}
+elf_symbol {
+  id: 0x0d70d901
+  name: "mipi_dsi_dcs_write"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x52e7077d
+  type_id: 0x16019d86
+  full_name: "mipi_dsi_dcs_write"
+}
+elf_symbol {
+  id: 0x9d1a3913
+  name: "mipi_dsi_dcs_write_buffer"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x73643b50
+  type_id: 0x16700a53
+  full_name: "mipi_dsi_dcs_write_buffer"
+}
+elf_symbol {
+  id: 0xfdf03f19
+  name: "mipi_dsi_detach"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbc909894
+  type_id: 0x9fd879f0
+  full_name: "mipi_dsi_detach"
+}
+elf_symbol {
+  id: 0xb0f04be5
+  name: "mipi_dsi_device_register_full"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0048ac20
+  type_id: 0x71d88eaa
+  full_name: "mipi_dsi_device_register_full"
+}
+elf_symbol {
+  id: 0x0f5c6d24
+  name: "mipi_dsi_device_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9123d93b
+  type_id: 0x12c0cb4c
+  full_name: "mipi_dsi_device_unregister"
+}
+elf_symbol {
+  id: 0x86d3fa50
+  name: "mipi_dsi_driver_register_full"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x43e5149e
+  type_id: 0x900f17ba
+  full_name: "mipi_dsi_driver_register_full"
+}
+elf_symbol {
+  id: 0xc5df0bf5
+  name: "mipi_dsi_driver_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcf198e40
+  type_id: 0x1d3b3a77
+  full_name: "mipi_dsi_driver_unregister"
+}
+elf_symbol {
+  id: 0xcb4b66a2
+  name: "mipi_dsi_generic_read"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbac8079f
+  type_id: 0x167055ab
+  full_name: "mipi_dsi_generic_read"
+}
+elf_symbol {
+  id: 0xcb5e0ac4
+  name: "mipi_dsi_generic_write"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x90cea76b
+  type_id: 0x16700a53
+  full_name: "mipi_dsi_generic_write"
+}
+elf_symbol {
+  id: 0xd08cb4e7
+  name: "mipi_dsi_host_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x981c3d5b
+  type_id: 0x96691fcd
+  full_name: "mipi_dsi_host_register"
+}
+elf_symbol {
+  id: 0x596b8466
+  name: "mipi_dsi_host_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe5a66718
+  type_id: 0x1b71ad71
+  full_name: "mipi_dsi_host_unregister"
+}
+elf_symbol {
+  id: 0xd9f124cf
+  name: "mipi_dsi_packet_format_is_long"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xadbeed61
+  type_id: 0xf4f34784
+  full_name: "mipi_dsi_packet_format_is_long"
+}
+elf_symbol {
+  id: 0xdca2a3c4
+  name: "mipi_dsi_picture_parameter_set"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8079e155
+  type_id: 0x165fcf63
+  full_name: "mipi_dsi_picture_parameter_set"
+}
+elf_symbol {
+  id: 0xe4059d72
+  name: "misc_deregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x94a9d12b
+  type_id: 0x1b00783f
+  full_name: "misc_deregister"
+}
+elf_symbol {
+  id: 0x842903b7
+  name: "misc_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x06987aeb
+  type_id: 0x9618ca83
+  full_name: "misc_register"
+}
+elf_symbol {
+  id: 0x354e8904
+  name: "mktime64"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0fb2f8a4
+  type_id: 0x46d0efa0
+  full_name: "mktime64"
+}
+elf_symbol {
+  id: 0xd328c906
+  name: "mmc_add_host"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe08a16c5
+  type_id: 0x9006b123
+  full_name: "mmc_add_host"
+}
+elf_symbol {
+  id: 0x9a282ce3
+  name: "mmc_alloc_host"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf470ba66
+  type_id: 0x83a3929f
+  full_name: "mmc_alloc_host"
+}
+elf_symbol {
+  id: 0xd2482cd8
+  name: "mmc_can_gpio_cd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa2f4a473
+  type_id: 0xf3220908
+  full_name: "mmc_can_gpio_cd"
+}
+elf_symbol {
+  id: 0x3c9f12f3
+  name: "mmc_cmdq_disable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2527a7d9
+  type_id: 0x9d19aa55
+  full_name: "mmc_cmdq_disable"
+}
+elf_symbol {
+  id: 0x512b7828
+  name: "mmc_cmdq_enable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe18334ac
+  type_id: 0x9d19aa55
+  full_name: "mmc_cmdq_enable"
+}
+elf_symbol {
+  id: 0x2ddd5efb
+  name: "mmc_cqe_request_done"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa9d3c029
+  type_id: 0x1dbab156
+  full_name: "mmc_cqe_request_done"
+}
+elf_symbol {
+  id: 0x674dbf62
+  name: "mmc_detect_change"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdf826526
+  type_id: 0x1dd3d60d
+  full_name: "mmc_detect_change"
+}
+elf_symbol {
+  id: 0x7737ff88
+  name: "mmc_execute_tuning"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6336a0ec
+  type_id: 0x9d19aa55
+  full_name: "mmc_execute_tuning"
+}
+elf_symbol {
+  id: 0xcc598f1c
+  name: "mmc_free_host"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x709558be
+  type_id: 0x1d1e039f
+  full_name: "mmc_free_host"
+}
+elf_symbol {
+  id: 0x82b43f76
+  name: "mmc_get_card"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2fe2045b
+  type_id: 0x1026309b
+  full_name: "mmc_get_card"
+}
+elf_symbol {
+  id: 0xa5ae02cf
+  name: "mmc_get_ext_csd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x64fa7b19
+  type_id: 0x9d332d96
+  full_name: "mmc_get_ext_csd"
+}
+elf_symbol {
+  id: 0x5cc45f81
+  name: "mmc_gpio_get_cd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x84483808
+  type_id: 0x9006b123
+  full_name: "mmc_gpio_get_cd"
+}
+elf_symbol {
+  id: 0x127edc77
+  name: "mmc_gpio_get_ro"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9d55a315
+  type_id: 0x9006b123
+  full_name: "mmc_gpio_get_ro"
+}
+elf_symbol {
+  id: 0x7ac15cd7
+  name: "mmc_gpio_set_cd_wake"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xec2dc402
+  type_id: 0x91b34c5c
+  full_name: "mmc_gpio_set_cd_wake"
+}
+elf_symbol {
+  id: 0x7cd7ef85
+  name: "mmc_gpiod_request_cd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x945b400f
+  type_id: 0x90ee3632
+  full_name: "mmc_gpiod_request_cd"
+}
+elf_symbol {
+  id: 0xbda89b5c
+  name: "mmc_gpiod_request_ro"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa1e21024
+  type_id: 0x90ee84bb
+  full_name: "mmc_gpiod_request_ro"
+}
+elf_symbol {
+  id: 0x3d86db69
+  name: "mmc_hs200_tuning"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfda9bde3
+  type_id: 0x9d19aa55
+  full_name: "mmc_hs200_tuning"
+}
+elf_symbol {
+  id: 0x20019c31
+  name: "mmc_hw_reset"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd030d11c
+  type_id: 0x9d19aa55
+  full_name: "mmc_hw_reset"
+}
+elf_symbol {
+  id: 0xb2308a01
+  name: "mmc_issue_type"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6990301d
+  type_id: 0x23787ede
+  full_name: "mmc_issue_type"
+}
+elf_symbol {
+  id: 0x3ce0db00
+  name: "mmc_of_parse"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8f1f9ba9
+  type_id: 0x9006b123
+  full_name: "mmc_of_parse"
+}
+elf_symbol {
+  id: 0xbb4d4446
+  name: "mmc_of_parse_voltage"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3cd29c76
+  type_id: 0x90e5f9ee
+  full_name: "mmc_of_parse_voltage"
+}
+elf_symbol {
+  id: 0xa9685e37
+  name: "mmc_prepare_busy_cmd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe3b97658
+  type_id: 0xf389cb34
+  full_name: "mmc_prepare_busy_cmd"
+}
+elf_symbol {
+  id: 0x5dc5546f
+  name: "mmc_put_card"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeb745592
+  type_id: 0x1026309b
+  full_name: "mmc_put_card"
+}
+elf_symbol {
+  id: 0x05ea5ad1
+  name: "mmc_pwrseq_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6221d889
+  type_id: 0x9615ffdc
+  full_name: "mmc_pwrseq_register"
+}
+elf_symbol {
+  id: 0xa6c3d5a7
+  name: "mmc_pwrseq_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x14806aa7
+  type_id: 0x1b0d4d60
+  full_name: "mmc_pwrseq_unregister"
+}
+elf_symbol {
+  id: 0x424f3d82
+  name: "mmc_regulator_get_supply"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x05a87fee
+  type_id: 0x9006b123
+  full_name: "mmc_regulator_get_supply"
+}
+elf_symbol {
+  id: 0xa2e72f24
+  name: "mmc_regulator_set_ocr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xec5037d6
+  type_id: 0x903246db
+  full_name: "mmc_regulator_set_ocr"
+}
+elf_symbol {
+  id: 0xba0b2eaa
+  name: "mmc_regulator_set_vqmmc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4fc8f305
+  type_id: 0x90db86bb
+  full_name: "mmc_regulator_set_vqmmc"
+}
+elf_symbol {
+  id: 0x3a831b23
+  name: "mmc_release_host"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x20c4151c
+  type_id: 0x1d1e039f
+  full_name: "mmc_release_host"
+}
+elf_symbol {
+  id: 0x462cbc3f
+  name: "mmc_remove_host"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbdd6dc92
+  type_id: 0x1d1e039f
+  full_name: "mmc_remove_host"
+}
+elf_symbol {
+  id: 0x5eda25d4
+  name: "mmc_request_done"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd4221026
+  type_id: 0x1dbab156
+  full_name: "mmc_request_done"
+}
+elf_symbol {
+  id: 0xbc5ef117
+  name: "mmc_retune_hold"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2cc252d0
+  type_id: 0x1d1e039f
+  full_name: "mmc_retune_hold"
+}
+elf_symbol {
+  id: 0x50e01c5d
+  name: "mmc_retune_release"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa5165206
+  type_id: 0x1d1e039f
+  full_name: "mmc_retune_release"
+}
+elf_symbol {
+  id: 0xc9735609
+  name: "mmc_retune_timer_stop"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9a3fe888
+  type_id: 0x1d1e039f
+  full_name: "mmc_retune_timer_stop"
+}
+elf_symbol {
+  id: 0x243ce42b
+  name: "mmc_select_bus_width"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1c244d7f
+  type_id: 0x9d19aa55
+  full_name: "mmc_select_bus_width"
+}
+elf_symbol {
+  id: 0x2d0e7608
+  name: "mmc_select_card"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6913dde6
+  type_id: 0x9d19aa55
+  full_name: "mmc_select_card"
+}
+elf_symbol {
+  id: 0x773040a8
+  name: "mmc_select_hs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd75913f3
+  type_id: 0x9d19aa55
+  full_name: "mmc_select_hs"
+}
+elf_symbol {
+  id: 0x0399dc23
+  name: "mmc_select_hs400"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5989ab82
+  type_id: 0x9d19aa55
+  full_name: "mmc_select_hs400"
+}
+elf_symbol {
+  id: 0x10fd9f55
+  name: "mmc_select_hs_ddr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x69f389d8
+  type_id: 0x9d19aa55
+  full_name: "mmc_select_hs_ddr"
+}
+elf_symbol {
+  id: 0xd0f0d35f
+  name: "mmc_select_timing"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1ae8028f
+  type_id: 0x9d19aa55
+  full_name: "mmc_select_timing"
+}
+elf_symbol {
+  id: 0xfb31b7b7
+  name: "mmc_send_status"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8f733007
+  type_id: 0x9dfae298
+  full_name: "mmc_send_status"
+}
+elf_symbol {
+  id: 0xfe0604fe
+  name: "mmc_send_tuning"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xada47b9f
+  type_id: 0x9326478c
+  full_name: "mmc_send_tuning"
+}
+elf_symbol {
+  id: 0xa466e3d3
+  name: "mmc_set_bus_mode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x515b4b8f
+  type_id: 0x1c081607
+  full_name: "mmc_set_bus_mode"
+}
+elf_symbol {
+  id: 0x836750b8
+  name: "mmc_set_bus_width"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5cba9f2e
+  type_id: 0x1c081607
+  full_name: "mmc_set_bus_width"
+}
+elf_symbol {
+  id: 0x1398d9e3
+  name: "mmc_set_clock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x97593211
+  type_id: 0x1c081607
+  full_name: "mmc_set_clock"
+}
+elf_symbol {
+  id: 0x2f332836
+  name: "mmc_set_data_timeout"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd89c304a
+  type_id: 0x16f68165
+  full_name: "mmc_set_data_timeout"
+}
+elf_symbol {
+  id: 0x165e673e
+  name: "mmc_set_initial_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0313c479
+  type_id: 0x1d1e039f
+  full_name: "mmc_set_initial_state"
+}
+elf_symbol {
+  id: 0xe8a26880
+  name: "mmc_set_timing"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdfcf499d
+  type_id: 0x1c081607
+  full_name: "mmc_set_timing"
+}
+elf_symbol {
+  id: 0x44bb49dc
+  name: "mmc_switch"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdb23e0af
+  type_id: 0x9db63891
+  full_name: "mmc_switch"
+}
+elf_symbol {
+  id: 0x6e71b72c
+  name: "mmc_wait_for_cmd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2a768417
+  type_id: 0x90a5da72
+  full_name: "mmc_wait_for_cmd"
+}
+elf_symbol {
+  id: 0x381bc1b0
+  name: "mmc_wait_for_req"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0dda67d4
+  type_id: 0x1dbab156
+  full_name: "mmc_wait_for_req"
+}
+elf_symbol {
+  id: 0x236a1277
+  name: "mmput"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x97394d0c
+  type_id: 0x1655e07b
+  full_name: "mmput"
+}
+elf_symbol {
+  id: 0xa062fd64
+  name: "mmu_notifier_synchronize"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6a4f623b
+  type_id: 0x10985193
+  full_name: "mmu_notifier_synchronize"
+}
+elf_symbol {
+  id: 0xdf7b9a78
+  name: "mod_delayed_work_on"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc4f47221
+  type_id: 0xe72ef591
+  full_name: "mod_delayed_work_on"
+}
+elf_symbol {
+  id: 0xa259d75f
+  name: "mod_node_page_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3c27d6b1
+  type_id: 0x10d6a724
+  full_name: "mod_node_page_state"
+}
+elf_symbol {
+  id: 0x93f5b442
+  name: "mod_timer"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x72cd0f7f
+  type_id: 0x92c0b65c
+  full_name: "mod_timer"
+}
+elf_symbol {
+  id: 0xe4008a83
+  name: "mod_timer_pending"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8148b88e
+  type_id: 0x92c0b65c
+  full_name: "mod_timer_pending"
+}
+elf_symbol {
+  id: 0x7eaf76f6
+  name: "module_layout"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xea759d7f
+  type_id: 0x12d88613
+  full_name: "module_layout"
+}
+elf_symbol {
+  id: 0x65106d59
+  name: "module_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x28f42c1d
+  type_id: 0x1251a683
+  full_name: "module_put"
+}
+elf_symbol {
+  id: 0xbedab58b
+  name: "msi_first_desc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfc57fc7c
+  type_id: 0xbfc82229
+  full_name: "msi_first_desc"
+}
+elf_symbol {
+  id: 0x603dd7ca
+  name: "msi_get_virq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd95989cd
+  type_id: 0xcf5b5538
+  full_name: "msi_get_virq"
+}
+elf_symbol {
+  id: 0xc30a6d76
+  name: "msi_next_desc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x47c45e0e
+  type_id: 0xbfc82229
+  full_name: "msi_next_desc"
+}
+elf_symbol {
+  id: 0xb28e5573
+  name: "msleep"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf9a482f9
+  type_id: 0x01f9081c
+  full_name: "msleep"
+}
+elf_symbol {
+  id: 0x1a083689
+  name: "msleep_interruptible"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcc5005fe
+  type_id: 0x20cd94dc
+  full_name: "msleep_interruptible"
+}
+elf_symbol {
+  id: 0xce6c8813
+  name: "mtree_load"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x32e8cfea
+  type_id: 0x5ee8f086
+  full_name: "mtree_load"
+}
+elf_symbol {
+  id: 0xae4bf0ee
+  name: "mul_u64_u64_div_u64"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x495231ea
+  type_id: 0x713f1bad
+  full_name: "mul_u64_u64_div_u64"
+}
+elf_symbol {
+  id: 0x6792f365
+  name: "mutex_is_locked"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x819bebd4
+  type_id: 0xf67c6346
+  full_name: "mutex_is_locked"
+}
+elf_symbol {
+  id: 0xf85ead17
+  name: "mutex_lock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd5977bfb
+  type_id: 0x184069d1
+  full_name: "mutex_lock"
+}
+elf_symbol {
+  id: 0x04aec85e
+  name: "mutex_lock_interruptible"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2c2067df
+  type_id: 0x9558db6d
+  full_name: "mutex_lock_interruptible"
+}
+elf_symbol {
+  id: 0x3eb4f3ba
+  name: "mutex_lock_killable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbc532593
+  type_id: 0x9558db6d
+  full_name: "mutex_lock_killable"
+}
+elf_symbol {
+  id: 0xeaf1f8e6
+  name: "mutex_trylock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x203392c6
+  type_id: 0x9558db6d
+  full_name: "mutex_trylock"
+}
+elf_symbol {
+  id: 0x9d40283f
+  name: "mutex_unlock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xed55cabd
+  type_id: 0x184069d1
+  full_name: "mutex_unlock"
+}
+elf_symbol {
+  id: 0xf8eaff55
+  name: "n_tty_ioctl_helper"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x32c5a9bf
+  type_id: 0x97258bf7
+  full_name: "n_tty_ioctl_helper"
+}
+elf_symbol {
+  id: 0x55bed293
+  name: "name_to_dev_t"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc10fddb8
+  type_id: 0xf3c9c4ce
+  full_name: "name_to_dev_t"
+}
+elf_symbol {
+  id: 0xc1add767
+  name: "names_cachep"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x3096be16
+  type_id: 0x2efd5036
+  full_name: "names_cachep"
+}
+elf_symbol {
+  id: 0x9a02788c
+  name: "napi_build_skb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4b91433a
+  type_id: 0x6fa775f5
+  full_name: "napi_build_skb"
+}
+elf_symbol {
+  id: 0xc258a893
+  name: "napi_complete_done"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdfaca303
+  type_id: 0xf938bd88
+  full_name: "napi_complete_done"
+}
+elf_symbol {
+  id: 0x2ce3e2c6
+  name: "napi_consume_skb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb26a8708
+  type_id: 0x10570899
+  full_name: "napi_consume_skb"
+}
+elf_symbol {
+  id: 0x04096200
+  name: "napi_disable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7f9a71db
+  type_id: 0x16983453
+  full_name: "napi_disable"
+}
+elf_symbol {
+  id: 0x62bb4fb7
+  name: "napi_enable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x39b1be5a
+  type_id: 0x16983453
+  full_name: "napi_enable"
+}
+elf_symbol {
+  id: 0xc7e96077
+  name: "napi_gro_flush"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x20d9ab00
+  type_id: 0x172dc92c
+  full_name: "napi_gro_flush"
+}
+elf_symbol {
+  id: 0x30d34395
+  name: "napi_gro_receive"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa02f0ec2
+  type_id: 0x091a93fa
+  full_name: "napi_gro_receive"
+}
+elf_symbol {
+  id: 0xddfd9f85
+  name: "napi_schedule_prep"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x74dc6705
+  type_id: 0xf8a43ec4
+  full_name: "napi_schedule_prep"
+}
+elf_symbol {
+  id: 0x61161520
+  name: "nd_tbl"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x137f0168
+  type_id: 0x77670b3b
+  full_name: "nd_tbl"
+}
+elf_symbol {
+  id: 0x4dbc1b6c
+  name: "neigh_destroy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf9a35910
+  type_id: 0x1262fcf5
+  full_name: "neigh_destroy"
+}
+elf_symbol {
+  id: 0x1a3da5bd
+  name: "neigh_lookup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x58bcf44b
+  type_id: 0x189b5d05
+  full_name: "neigh_lookup"
+}
+elf_symbol {
+  id: 0xb6b84793
+  name: "neigh_resolve_output"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x77f910e9
+  type_id: 0x9f6f73ed
+  full_name: "neigh_resolve_output"
+}
+elf_symbol {
+  id: 0x6988c1c1
+  name: "net_namespace_list"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x6d2fc5a6
+  type_id: 0xd3c80119
+  full_name: "net_namespace_list"
+}
+elf_symbol {
+  id: 0x9da338a6
+  name: "net_ns_type_operations"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x8896b0fb
+  type_id: 0xeabee0bd
+  full_name: "net_ns_type_operations"
+}
+elf_symbol {
+  id: 0x91c85f34
+  name: "net_ratelimit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf6ebc03b
+  type_id: 0x9d80e32f
+  full_name: "net_ratelimit"
+}
+elf_symbol {
+  id: 0x4d59c065
+  name: "net_selftest"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfd587d2a
+  type_id: 0x1c31f969
+  full_name: "net_selftest"
+}
+elf_symbol {
+  id: 0x90860c61
+  name: "net_selftest_get_count"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8e6b1a9e
+  type_id: 0x9d80e32f
+  full_name: "net_selftest_get_count"
+}
+elf_symbol {
+  id: 0xafa7b68d
+  name: "net_selftest_get_strings"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc090c376
+  type_id: 0x10a998da
+  full_name: "net_selftest_get_strings"
+}
+elf_symbol {
+  id: 0xed606b4f
+  name: "netdev_alert"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb316f0fe
+  type_id: 0x1caf28d1
+  full_name: "netdev_alert"
+}
+elf_symbol {
+  id: 0x2a20c876
+  name: "netdev_change_features"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa5404d0d
+  type_id: 0x1c31d966
+  full_name: "netdev_change_features"
+}
+elf_symbol {
+  id: 0x6c72efe1
+  name: "netdev_core_stats_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2d3f14aa
+  type_id: 0x9286ca40
+  full_name: "netdev_core_stats_alloc"
+}
+elf_symbol {
+  id: 0xfac0e8e6
+  name: "netdev_err"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb16a3d6d
+  type_id: 0x1caf28d1
+  full_name: "netdev_err"
+}
+elf_symbol {
+  id: 0x1a34a34f
+  name: "netdev_increment_features"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x69668826
+  type_id: 0xaf57be52
+  full_name: "netdev_increment_features"
+}
+elf_symbol {
+  id: 0x06bf2dbd
+  name: "netdev_info"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x10ea702c
+  type_id: 0x1caf28d1
+  full_name: "netdev_info"
+}
+elf_symbol {
+  id: 0x5a4e487e
+  name: "netdev_lower_state_changed"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa5d29cdc
+  type_id: 0x1c532cf2
+  full_name: "netdev_lower_state_changed"
+}
+elf_symbol {
+  id: 0x178677d3
+  name: "netdev_master_upper_dev_link"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8fabd7e3
+  type_id: 0x91e5bf0e
+  full_name: "netdev_master_upper_dev_link"
+}
+elf_symbol {
+  id: 0xb4ca02f0
+  name: "netdev_name_in_use"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3b26056f
+  type_id: 0xfd7484f0
+  full_name: "netdev_name_in_use"
+}
+elf_symbol {
+  id: 0x9b8c6a7d
+  name: "netdev_notice"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe416664f
+  type_id: 0x1caf28d1
+  full_name: "netdev_notice"
+}
+elf_symbol {
+  id: 0xd5ed1a09
+  name: "netdev_notify_peers"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x84dace7d
+  type_id: 0x1c31d966
+  full_name: "netdev_notify_peers"
+}
+elf_symbol {
+  id: 0xd78c295f
+  name: "netdev_pick_tx"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x10ab015f
+  type_id: 0x0d9b3569
+  full_name: "netdev_pick_tx"
+}
+elf_symbol {
+  id: 0xe42df14f
+  name: "netdev_printk"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd7cebfd3
+  type_id: 0x1fdf0b41
+  full_name: "netdev_printk"
+}
+elf_symbol {
+  id: 0x22c60050
+  name: "netdev_rss_key_fill"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x467df16d
+  type_id: 0x1567dd7e
+  full_name: "netdev_rss_key_fill"
+}
+elf_symbol {
+  id: 0x7a3d8713
+  name: "netdev_rx_handler_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf203f1f4
+  type_id: 0x913b542f
+  full_name: "netdev_rx_handler_register"
+}
+elf_symbol {
+  id: 0xf7edefd1
+  name: "netdev_rx_handler_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5560536e
+  type_id: 0x1c31d966
+  full_name: "netdev_rx_handler_unregister"
+}
+elf_symbol {
+  id: 0xb78d7b09
+  name: "netdev_set_default_ethtool_ops"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x83fe02f2
+  type_id: 0x1cd08481
+  full_name: "netdev_set_default_ethtool_ops"
+}
+elf_symbol {
+  id: 0x13d32ab6
+  name: "netdev_state_change"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc2ed97e1
+  type_id: 0x1c31d966
+  full_name: "netdev_state_change"
+}
+elf_symbol {
+  id: 0x88a6525c
+  name: "netdev_update_features"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe23f3795
+  type_id: 0x1c31d966
+  full_name: "netdev_update_features"
+}
+elf_symbol {
+  id: 0xa9b870ab
+  name: "netdev_upper_dev_link"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x201c1c74
+  type_id: 0x91e20463
+  full_name: "netdev_upper_dev_link"
+}
+elf_symbol {
+  id: 0x07d0c0e2
+  name: "netdev_upper_dev_unlink"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x52637a4b
+  type_id: 0x1cfb41e9
+  full_name: "netdev_upper_dev_unlink"
+}
+elf_symbol {
+  id: 0x873a0741
+  name: "netdev_warn"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x727ebc1b
+  type_id: 0x1caf28d1
+  full_name: "netdev_warn"
+}
+elf_symbol {
+  id: 0x0e4b2c83
+  name: "netif_carrier_off"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6508739f
+  type_id: 0x1c31d966
+  full_name: "netif_carrier_off"
+}
+elf_symbol {
+  id: 0x3a4c076b
+  name: "netif_carrier_on"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x560a9ddb
+  type_id: 0x1c31d966
+  full_name: "netif_carrier_on"
+}
+elf_symbol {
+  id: 0x3ce8e22e
+  name: "netif_device_attach"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x97bc586d
+  type_id: 0x1c31d966
+  full_name: "netif_device_attach"
+}
+elf_symbol {
+  id: 0xa03599a6
+  name: "netif_device_detach"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6b79f44e
+  type_id: 0x1c31d966
+  full_name: "netif_device_detach"
+}
+elf_symbol {
+  id: 0x659c1a4c
+  name: "netif_inherit_tso_max"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb61316b4
+  type_id: 0x1cffbe77
+  full_name: "netif_inherit_tso_max"
+}
+elf_symbol {
+  id: 0x865e414c
+  name: "netif_napi_add_weight"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9d31b4d5
+  type_id: 0x1c5b4677
+  full_name: "netif_napi_add_weight"
+}
+elf_symbol {
+  id: 0xf4d035ba
+  name: "netif_receive_skb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x373b061c
+  type_id: 0x9cd33969
+  full_name: "netif_receive_skb"
+}
+elf_symbol {
+  id: 0x410cb094
+  name: "netif_receive_skb_list"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6b8bf149
+  type_id: 0x1f00dfeb
+  full_name: "netif_receive_skb_list"
+}
+elf_symbol {
+  id: 0x6692f232
+  name: "netif_rx"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x67e9e82a
+  type_id: 0x9cd33969
+  full_name: "netif_rx"
+}
+elf_symbol {
+  id: 0xac772e2b
+  name: "netif_schedule_queue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeb2a2366
+  type_id: 0x1604193e
+  full_name: "netif_schedule_queue"
+}
+elf_symbol {
+  id: 0x4c1d5834
+  name: "netif_set_real_num_rx_queues"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x388fe7b3
+  type_id: 0x903f7e42
+  full_name: "netif_set_real_num_rx_queues"
+}
+elf_symbol {
+  id: 0xf16a1d9f
+  name: "netif_set_real_num_tx_queues"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x36fc53cb
+  type_id: 0x903f7e42
+  full_name: "netif_set_real_num_tx_queues"
+}
+elf_symbol {
+  id: 0xdbff81b0
+  name: "netif_set_tso_max_segs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb492c97e
+  type_id: 0x1d27ccfe
+  full_name: "netif_set_tso_max_segs"
+}
+elf_symbol {
+  id: 0x1d1d3e9f
+  name: "netif_set_tso_max_size"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x09ce7baa
+  type_id: 0x1d27ccfe
+  full_name: "netif_set_tso_max_size"
+}
+elf_symbol {
+  id: 0x5f6243cf
+  name: "netif_stacked_transfer_operstate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe1c8c3b8
+  type_id: 0x1cb4b808
+  full_name: "netif_stacked_transfer_operstate"
+}
+elf_symbol {
+  id: 0x142ee439
+  name: "netif_tx_lock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa0493d72
+  type_id: 0x1c31d966
+  full_name: "netif_tx_lock"
+}
+elf_symbol {
+  id: 0xcad08fbc
+  name: "netif_tx_stop_all_queues"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x926aa810
+  type_id: 0x1c31d966
+  full_name: "netif_tx_stop_all_queues"
+}
+elf_symbol {
+  id: 0xbf885171
+  name: "netif_tx_unlock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfc1a4b98
+  type_id: 0x1c31d966
+  full_name: "netif_tx_unlock"
+}
+elf_symbol {
+  id: 0x8cb67134
+  name: "netif_tx_wake_queue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd329fbdd
+  type_id: 0x1604193e
+  full_name: "netif_tx_wake_queue"
+}
+elf_symbol {
+  id: 0x894a0130
+  name: "netlink_ack"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf0e9e509
+  type_id: 0x119c2286
+  full_name: "netlink_ack"
+}
+elf_symbol {
+  id: 0xab1506fb
+  name: "netlink_broadcast"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x65ceed0f
+  type_id: 0x9af58853
+  full_name: "netlink_broadcast"
+}
+elf_symbol {
+  id: 0x8a6ce95c
+  name: "netlink_capable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbfa0b419
+  type_id: 0xf0a03df0
+  full_name: "netlink_capable"
+}
+elf_symbol {
+  id: 0x5691a857
+  name: "netlink_kernel_release"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x34aa9854
+  type_id: 0x17c95d08
+  full_name: "netlink_kernel_release"
+}
+elf_symbol {
+  id: 0xcb74c77c
+  name: "netlink_net_capable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa30ee563
+  type_id: 0xf0a03df0
+  full_name: "netlink_net_capable"
+}
+elf_symbol {
+  id: 0x401ca299
+  name: "netlink_register_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfa599bb2
+  type_id: 0x9b6d4a33
+  full_name: "netlink_register_notifier"
+}
+elf_symbol {
+  id: 0xeb19d9f6
+  name: "netlink_unicast"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd0083f21
+  type_id: 0x9af70c99
+  full_name: "netlink_unicast"
+}
+elf_symbol {
+  id: 0xbbd2a0ab
+  name: "netlink_unregister_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdf54a8f7
+  type_id: 0x9b6d4a33
+  full_name: "netlink_unregister_notifier"
+}
+elf_symbol {
+  id: 0x57abe80f
+  name: "new_inode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0b8859e2
+  type_id: 0x12d6b73d
+  full_name: "new_inode"
+}
+elf_symbol {
+  id: 0xc8ea3547
+  name: "nf_conntrack_destroy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd2800691
+  type_id: 0x104c9db8
+  full_name: "nf_conntrack_destroy"
+}
+elf_symbol {
+  id: 0xb2e54d47
+  name: "nf_ct_attach"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb074af92
+  type_id: 0x1132058e
+  full_name: "nf_ct_attach"
+}
+elf_symbol {
+  id: 0x1b589c40
+  name: "nf_ct_delete"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe0ad83f9
+  type_id: 0xf33b99db
+  full_name: "nf_ct_delete"
+}
+elf_symbol {
+  id: 0x43078d96
+  name: "nf_register_net_hooks"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2adc0ac4
+  type_id: 0x9e768b87
+  full_name: "nf_register_net_hooks"
+}
+elf_symbol {
+  id: 0x619db28f
+  name: "nf_unregister_net_hooks"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc559e9aa
+  type_id: 0x136e393b
+  full_name: "nf_unregister_net_hooks"
+}
+elf_symbol {
+  id: 0x36bc8d13
+  name: "nfc_add_se"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x14914414
+  type_id: 0x9fbd796f
+  full_name: "nfc_add_se"
+}
+elf_symbol {
+  id: 0x38637341
+  name: "nfc_alloc_recv_skb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc0fa23ef
+  type_id: 0x7a39fbd1
+  full_name: "nfc_alloc_recv_skb"
+}
+elf_symbol {
+  id: 0x985a4d66
+  name: "nfc_allocate_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc5f0e6eb
+  type_id: 0x5daa055b
+  full_name: "nfc_allocate_device"
+}
+elf_symbol {
+  id: 0xfe9be121
+  name: "nfc_class"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x7423189d
+  type_id: 0x83714889
+  full_name: "nfc_class"
+}
+elf_symbol {
+  id: 0x7d557ee6
+  name: "nfc_dep_link_is_up"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x300fe2d7
+  type_id: 0x9f93d86d
+  full_name: "nfc_dep_link_is_up"
+}
+elf_symbol {
+  id: 0x406df389
+  name: "nfc_driver_failure"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x553f53fa
+  type_id: 0x10393b5c
+  full_name: "nfc_driver_failure"
+}
+elf_symbol {
+  id: 0xed791383
+  name: "nfc_find_se"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdae3261e
+  type_id: 0xee085698
+  full_name: "nfc_find_se"
+}
+elf_symbol {
+  id: 0xcb97b841
+  name: "nfc_fw_download_done"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd98e9e33
+  type_id: 0x9c770a72
+  full_name: "nfc_fw_download_done"
+}
+elf_symbol {
+  id: 0xa7ee49a4
+  name: "nfc_get_local_general_bytes"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x30d3b7b5
+  type_id: 0x4bbafb54
+  full_name: "nfc_get_local_general_bytes"
+}
+elf_symbol {
+  id: 0x52d9a3b8
+  name: "nfc_proto_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0e81e449
+  type_id: 0x9095ed8c
+  full_name: "nfc_proto_register"
+}
+elf_symbol {
+  id: 0x930fd17a
+  name: "nfc_proto_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbda3533d
+  type_id: 0x1d8d5f30
+  full_name: "nfc_proto_unregister"
+}
+elf_symbol {
+  id: 0xbbc401d2
+  name: "nfc_register_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x95bc479d
+  type_id: 0x9cbd0aac
+  full_name: "nfc_register_device"
+}
+elf_symbol {
+  id: 0xcd1f4608
+  name: "nfc_remove_se"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x22ef28f4
+  type_id: 0x9f992a00
+  full_name: "nfc_remove_se"
+}
+elf_symbol {
+  id: 0x8dad3883
+  name: "nfc_se_connectivity"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6c4c75fe
+  type_id: 0x9c187b64
+  full_name: "nfc_se_connectivity"
+}
+elf_symbol {
+  id: 0x4d2043db
+  name: "nfc_se_transaction"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0972f982
+  type_id: 0x9c1fae0d
+  full_name: "nfc_se_transaction"
+}
+elf_symbol {
+  id: 0x14ac1f0f
+  name: "nfc_send_to_raw_sock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3cfec4e6
+  type_id: 0x11ba77d9
+  full_name: "nfc_send_to_raw_sock"
+}
+elf_symbol {
+  id: 0xaca68d79
+  name: "nfc_set_remote_general_bytes"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x793bfe07
+  type_id: 0x9c4b5ba7
+  full_name: "nfc_set_remote_general_bytes"
+}
+elf_symbol {
+  id: 0x12f5593e
+  name: "nfc_target_lost"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfb95b9e9
+  type_id: 0x9f992a00
+  full_name: "nfc_target_lost"
+}
+elf_symbol {
+  id: 0x5fc2c016
+  name: "nfc_targets_found"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0b682880
+  type_id: 0x9c908368
+  full_name: "nfc_targets_found"
+}
+elf_symbol {
+  id: 0x82c92992
+  name: "nfc_tm_activated"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf614a521
+  type_id: 0x9f93bc17
+  full_name: "nfc_tm_activated"
+}
+elf_symbol {
+  id: 0x99f408c5
+  name: "nfc_tm_data_received"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa3cf6558
+  type_id: 0x9ca83708
+  full_name: "nfc_tm_data_received"
+}
+elf_symbol {
+  id: 0x22e68369
+  name: "nfc_tm_deactivated"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x99db2fa9
+  type_id: 0x9cbd0aac
+  full_name: "nfc_tm_deactivated"
+}
+elf_symbol {
+  id: 0xefd6be85
+  name: "nfc_unregister_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc23bba80
+  type_id: 0x11a5b810
+  full_name: "nfc_unregister_device"
+}
+elf_symbol {
+  id: 0x53dde8dc
+  name: "nfc_vendor_cmd_reply"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x28a74112
+  type_id: 0x9cd33969
+  full_name: "nfc_vendor_cmd_reply"
+}
+elf_symbol {
+  id: 0x915620e9
+  name: "nla_find"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcd279169
+  type_id: 0x26fe438d
+  full_name: "nla_find"
+}
+elf_symbol {
+  id: 0x1570bf50
+  name: "nla_memcpy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf1db1704
+  type_id: 0x9b692d7d
+  full_name: "nla_memcpy"
+}
+elf_symbol {
+  id: 0xfb9ee5c5
+  name: "nla_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6914cece
+  type_id: 0x9d56966d
+  full_name: "nla_put"
+}
+elf_symbol {
+  id: 0xb65f0139
+  name: "nla_put_64bit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaabad31a
+  type_id: 0x9d568fa5
+  full_name: "nla_put_64bit"
+}
+elf_symbol {
+  id: 0x54a760fe
+  name: "nla_put_nohdr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3663d775
+  type_id: 0x9d41fde0
+  full_name: "nla_put_nohdr"
+}
+elf_symbol {
+  id: 0x49027247
+  name: "nla_reserve"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3519f3e2
+  type_id: 0x2a586b69
+  full_name: "nla_reserve"
+}
+elf_symbol {
+  id: 0x85e07b67
+  name: "nla_reserve_64bit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xac32baee
+  type_id: 0x2a59f7ea
+  full_name: "nla_reserve_64bit"
+}
+elf_symbol {
+  id: 0x6359420c
+  name: "nla_strscpy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x84823cf3
+  type_id: 0x15334a4f
+  full_name: "nla_strscpy"
+}
+elf_symbol {
+  id: 0x7f258c4e
+  name: "nonseekable_open"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x33534e04
+  type_id: 0x9b022eae
+  full_name: "nonseekable_open"
+}
+elf_symbol {
+  id: 0x64e6aa0b
+  name: "noop_llseek"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4361c86a
+  type_id: 0x2d64ae3e
+  full_name: "noop_llseek"
+}
+elf_symbol {
+  id: 0x1560f116
+  name: "nr_cpu_ids"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x017de3d5
+  type_id: 0x4585663f
+  full_name: "nr_cpu_ids"
+}
+elf_symbol {
+  id: 0x1cfcf940
+  name: "nr_ipi_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x215054f8
+  type_id: 0x9d80e32f
+  full_name: "nr_ipi_get"
+}
+elf_symbol {
+  id: 0x3704ac3f
+  name: "nr_irqs"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xcdca3691
+  type_id: 0x6720d32f
+  full_name: "nr_irqs"
+}
+elf_symbol {
+  id: 0x0bb7f730
+  name: "nr_swap_pages"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xa0d3456d
+  type_id: 0xb02b353a
+  full_name: "nr_swap_pages"
+}
+elf_symbol {
+  id: 0xb65e3baf
+  name: "ns_capable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4ed6a2f5
+  type_id: 0xfcd23386
+  full_name: "ns_capable"
+}
+elf_symbol {
+  id: 0xf68f8b33
+  name: "ns_to_kernel_old_timeval"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6b853d06
+  type_id: 0x90c2622e
+  full_name: "ns_to_kernel_old_timeval"
+}
+elf_symbol {
+  id: 0xfab02ca8
+  name: "ns_to_timespec64"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x65929cae
+  type_id: 0xbc040644
+  full_name: "ns_to_timespec64"
+}
+elf_symbol {
+  id: 0xd7668767
+  name: "nsec_to_clock_t"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd0d036a6
+  type_id: 0x73531faf
+  full_name: "nsec_to_clock_t"
+}
+elf_symbol {
+  id: 0x50d8c489
+  name: "nsecs_to_jiffies"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xffae8e8b
+  type_id: 0x152401b7
+  full_name: "nsecs_to_jiffies"
+}
+elf_symbol {
+  id: 0x77722cfe
+  name: "nvdimm_bus_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5ecb5776
+  type_id: 0x8c4206d5
+  full_name: "nvdimm_bus_register"
+}
+elf_symbol {
+  id: 0x58765106
+  name: "nvdimm_bus_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7460ad60
+  type_id: 0x1be55e08
+  full_name: "nvdimm_bus_unregister"
+}
+elf_symbol {
+  id: 0x14f0cfc8
+  name: "nvdimm_pmem_region_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2a7de481
+  type_id: 0xe28e34fc
+  full_name: "nvdimm_pmem_region_create"
+}
+elf_symbol {
+  id: 0xd19691bd
+  name: "nvmem_cell_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x596bea40
+  type_id: 0xbbe36438
+  full_name: "nvmem_cell_get"
+}
+elf_symbol {
+  id: 0x8689cf0f
+  name: "nvmem_cell_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x85540ebc
+  type_id: 0x1ec3b210
+  full_name: "nvmem_cell_put"
+}
+elf_symbol {
+  id: 0x8da2cfcb
+  name: "nvmem_cell_read"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x99f018c4
+  type_id: 0x581327fc
+  full_name: "nvmem_cell_read"
+}
+elf_symbol {
+  id: 0x005c3998
+  name: "nvmem_cell_read_u32"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x44ec2a22
+  type_id: 0x9de0ab2c
+  full_name: "nvmem_cell_read_u32"
+}
+elf_symbol {
+  id: 0x00111bab
+  name: "nvmem_cell_read_u64"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcbebae53
+  type_id: 0x9de5199d
+  full_name: "nvmem_cell_read_u64"
+}
+elf_symbol {
+  id: 0x1e629967
+  name: "nvmem_cell_read_variable_le_u32"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf932279a
+  type_id: 0x9de0ab2c
+  full_name: "nvmem_cell_read_variable_le_u32"
+}
+elf_symbol {
+  id: 0xf1401602
+  name: "nvmem_cell_write"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x202d4ed6
+  type_id: 0x9384f862
+  full_name: "nvmem_cell_write"
+}
+elf_symbol {
+  id: 0xd00eb623
+  name: "nvmem_device_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x44b5d963
+  type_id: 0x21a8c9ba
+  full_name: "nvmem_device_get"
+}
+elf_symbol {
+  id: 0x23113228
+  name: "nvmem_device_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8349a895
+  type_id: 0x158f8f53
+  full_name: "nvmem_device_put"
+}
+elf_symbol {
+  id: 0xc1013b0e
+  name: "nvmem_device_read"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc697b0f7
+  type_id: 0x99bc47d8
+  full_name: "nvmem_device_read"
+}
+elf_symbol {
+  id: 0x28ba8e50
+  name: "nvmem_device_write"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3866e217
+  type_id: 0x99bc47d8
+  full_name: "nvmem_device_write"
+}
+elf_symbol {
+  id: 0x65d6ca81
+  name: "nvmem_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb181bf4a
+  type_id: 0x2eb1a24e
+  full_name: "nvmem_register"
+}
+elf_symbol {
+  id: 0x27081fa8
+  name: "nvmem_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcc39c03e
+  type_id: 0x158f8f53
+  full_name: "nvmem_unregister"
+}
+elf_symbol {
+  id: 0x4fa74969
+  name: "of_add_property"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3037c324
+  type_id: 0x90903ad4
+  full_name: "of_add_property"
+}
+elf_symbol {
+  id: 0x458a15db
+  name: "of_address_to_resource"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3620741f
+  type_id: 0x910e73b6
+  full_name: "of_address_to_resource"
+}
+elf_symbol {
+  id: 0x017aa13b
+  name: "of_alias_get_highest_id"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0321cdbf
+  type_id: 0x9204ce69
+  full_name: "of_alias_get_highest_id"
+}
+elf_symbol {
+  id: 0x058addcb
+  name: "of_alias_get_id"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa734d448
+  type_id: 0x90646116
+  full_name: "of_alias_get_id"
+}
+elf_symbol {
+  id: 0x698c5d5a
+  name: "of_can_transceiver"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9b5bbda7
+  type_id: 0x1c31d966
+  full_name: "of_can_transceiver"
+}
+elf_symbol {
+  id: 0x7db02791
+  name: "of_chosen"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x214dedc5
+  type_id: 0x347303b4
+  full_name: "of_chosen"
+}
+elf_symbol {
+  id: 0x93579cdd
+  name: "of_clk_add_hw_provider"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcb7ea954
+  type_id: 0x906d7ec1
+  full_name: "of_clk_add_hw_provider"
+}
+elf_symbol {
+  id: 0x74eec260
+  name: "of_clk_add_provider"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd3f515ad
+  type_id: 0x90150082
+  full_name: "of_clk_add_provider"
+}
+elf_symbol {
+  id: 0xcd5a930a
+  name: "of_clk_del_provider"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa9973baa
+  type_id: 0x1d84917e
+  full_name: "of_clk_del_provider"
+}
+elf_symbol {
+  id: 0x642a8f0e
+  name: "of_clk_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xea0caa6e
+  type_id: 0xaa9fab30
+  full_name: "of_clk_get"
+}
+elf_symbol {
+  id: 0x5cb0984c
+  name: "of_clk_get_by_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x32746295
+  type_id: 0xabfb6aa8
+  full_name: "of_clk_get_by_name"
+}
+elf_symbol {
+  id: 0x61134f05
+  name: "of_clk_get_from_provider"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0244fba4
+  type_id: 0xa52e0ac1
+  full_name: "of_clk_get_from_provider"
+}
+elf_symbol {
+  id: 0x26767170
+  name: "of_clk_get_parent_count"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf2686e80
+  type_id: 0xc2505de9
+  full_name: "of_clk_get_parent_count"
+}
+elf_symbol {
+  id: 0x40d34b30
+  name: "of_clk_get_parent_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x86a86df5
+  type_id: 0x9f53b7fd
+  full_name: "of_clk_get_parent_name"
+}
+elf_symbol {
+  id: 0xeb805131
+  name: "of_clk_hw_onecell_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0089c474
+  type_id: 0xdd32bce5
+  full_name: "of_clk_hw_onecell_get"
+}
+elf_symbol {
+  id: 0xebf521c2
+  name: "of_clk_hw_simple_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4a0db0c1
+  type_id: 0xdd32bce5
+  full_name: "of_clk_hw_simple_get"
+}
+elf_symbol {
+  id: 0x0fa1166f
+  name: "of_clk_parent_fill"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd994397e
+  type_id: 0x909912c8
+  full_name: "of_clk_parent_fill"
+}
+elf_symbol {
+  id: 0x9dc7df03
+  name: "of_clk_set_defaults"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2dd7db63
+  type_id: 0x9129debd
+  full_name: "of_clk_set_defaults"
+}
+elf_symbol {
+  id: 0xcd06f186
+  name: "of_clk_src_onecell_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x296dd097
+  type_id: 0xa54cff55
+  full_name: "of_clk_src_onecell_get"
+}
+elf_symbol {
+  id: 0xc4cdaff8
+  name: "of_clk_src_simple_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4d8eb188
+  type_id: 0xa54cff55
+  full_name: "of_clk_src_simple_get"
+}
+elf_symbol {
+  id: 0x7f382772
+  name: "of_count_phandle_with_args"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc34e95f5
+  type_id: 0x91fc06c4
+  full_name: "of_count_phandle_with_args"
+}
+elf_symbol {
+  id: 0x4636cb2f
+  name: "of_cpu_node_to_id"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf3c0f231
+  type_id: 0x909c23c2
+  full_name: "of_cpu_node_to_id"
+}
+elf_symbol {
+  id: 0xa2a80692
+  name: "of_css"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x53833923
+  type_id: 0xcde52a7c
+  full_name: "of_css"
+}
+elf_symbol {
+  id: 0x306598a8
+  name: "of_devfreq_cooling_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6d58f30c
+  type_id: 0x45319f70
+  full_name: "of_devfreq_cooling_register"
+}
+elf_symbol {
+  id: 0xccbb9f00
+  name: "of_devfreq_cooling_register_power"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x978d697a
+  type_id: 0x453414c9
+  full_name: "of_devfreq_cooling_register_power"
+}
+elf_symbol {
+  id: 0x99c34b67
+  name: "of_device_get_match_data"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb1bf4b3e
+  type_id: 0x5846e63a
+  full_name: "of_device_get_match_data"
+}
+elf_symbol {
+  id: 0x5bbd22c3
+  name: "of_device_is_available"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x31e526cc
+  type_id: 0xf22f7816
+  full_name: "of_device_is_available"
+}
+elf_symbol {
+  id: 0x490e6dfe
+  name: "of_device_is_compatible"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1ee00ad9
+  type_id: 0x91f382e9
+  full_name: "of_device_is_compatible"
+}
+elf_symbol {
+  id: 0xa4bda7eb
+  name: "of_device_modalias"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x89d22f15
+  type_id: 0x1440a366
+  full_name: "of_device_modalias"
+}
+elf_symbol {
+  id: 0xa388be0c
+  name: "of_device_request_module"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfec6ae20
+  type_id: 0x9d16dd74
+  full_name: "of_device_request_module"
+}
+elf_symbol {
+  id: 0x34456de2
+  name: "of_device_uevent_modalias"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf9415a36
+  type_id: 0x9dc2a5d0
+  full_name: "of_device_uevent_modalias"
+}
+elf_symbol {
+  id: 0x9b9bd086
+  name: "of_dma_configure_id"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x55f0b55b
+  type_id: 0x9ddc8abe
+  full_name: "of_dma_configure_id"
+}
+elf_symbol {
+  id: 0xb784add6
+  name: "of_dma_controller_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x908bad64
+  type_id: 0x1d84917e
+  full_name: "of_dma_controller_free"
+}
+elf_symbol {
+  id: 0x46255d0e
+  name: "of_dma_controller_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf7f7b192
+  type_id: 0x903479ff
+  full_name: "of_dma_controller_register"
+}
+elf_symbol {
+  id: 0xcd27d22d
+  name: "of_dma_is_coherent"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1b2968e8
+  type_id: 0xf3b89be9
+  full_name: "of_dma_is_coherent"
+}
+elf_symbol {
+  id: 0x85218a7f
+  name: "of_dma_simple_xlate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6844f059
+  type_id: 0x843582ad
+  full_name: "of_dma_simple_xlate"
+}
+elf_symbol {
+  id: 0x9368cefd
+  name: "of_dma_xlate_by_chan_id"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1c378f32
+  type_id: 0x843582ad
+  full_name: "of_dma_xlate_by_chan_id"
+}
+elf_symbol {
+  id: 0xd37bdc53
+  name: "of_drm_find_bridge"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x510d196d
+  type_id: 0x9702dcaf
+  full_name: "of_drm_find_bridge"
+}
+elf_symbol {
+  id: 0x1d42003f
+  name: "of_drm_find_panel"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7e03de69
+  type_id: 0x29f0e61e
+  full_name: "of_drm_find_panel"
+}
+elf_symbol {
+  id: 0xf3b2b115
+  name: "of_drm_get_panel_orientation"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x61c9378e
+  type_id: 0x91a3a43e
+  full_name: "of_drm_get_panel_orientation"
+}
+elf_symbol {
+  id: 0x985c43d8
+  name: "of_find_backlight_by_node"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x859e7083
+  type_id: 0x71a7be0e
+  full_name: "of_find_backlight_by_node"
+}
+elf_symbol {
+  id: 0xd5545a99
+  name: "of_find_compatible_node"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3d6e4570
+  type_id: 0x7b18d8c2
+  full_name: "of_find_compatible_node"
+}
+elf_symbol {
+  id: 0x9f89ff97
+  name: "of_find_device_by_node"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x00c0a572
+  type_id: 0xc44c8212
+  full_name: "of_find_device_by_node"
+}
+elf_symbol {
+  id: 0x52e0026e
+  name: "of_find_i2c_adapter_by_node"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x09064fb1
+  type_id: 0x619a645f
+  full_name: "of_find_i2c_adapter_by_node"
+}
+elf_symbol {
+  id: 0x5a17d8da
+  name: "of_find_i2c_device_by_node"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5287884f
+  type_id: 0x81af1888
+  full_name: "of_find_i2c_device_by_node"
+}
+elf_symbol {
+  id: 0xdf129c81
+  name: "of_find_matching_node_and_match"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x11714da5
+  type_id: 0x7b05d834
+  full_name: "of_find_matching_node_and_match"
+}
+elf_symbol {
+  id: 0x94b29523
+  name: "of_find_mipi_dsi_host_by_node"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa4e10515
+  type_id: 0x2c313d32
+  full_name: "of_find_mipi_dsi_host_by_node"
+}
+elf_symbol {
+  id: 0x27d7263a
+  name: "of_find_node_by_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc473e973
+  type_id: 0x7b175cef
+  full_name: "of_find_node_by_name"
+}
+elf_symbol {
+  id: 0x19ba4c41
+  name: "of_find_node_by_phandle"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x268bfed9
+  type_id: 0x71fff4bd
+  full_name: "of_find_node_by_phandle"
+}
+elf_symbol {
+  id: 0xc9e82455
+  name: "of_find_node_by_type"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x471ce88a
+  type_id: 0x7b175cef
+  full_name: "of_find_node_by_type"
+}
+elf_symbol {
+  id: 0x71c7b52f
+  name: "of_find_node_opts_by_path"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x748c8ec0
+  type_id: 0x7963a3c3
+  full_name: "of_find_node_opts_by_path"
+}
+elf_symbol {
+  id: 0x1aff7044
+  name: "of_find_node_with_property"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf9d61269
+  type_id: 0x7b175cef
+  full_name: "of_find_node_with_property"
+}
+elf_symbol {
+  id: 0x5b961c3b
+  name: "of_find_property"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe35274a3
+  type_id: 0xd587d547
+  full_name: "of_find_property"
+}
+elf_symbol {
+  id: 0x50e4a55a
+  name: "of_fwnode_ops"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xd36b1bfe
+  type_id: 0xe4207e6d
+  full_name: "of_fwnode_ops"
+}
+elf_symbol {
+  id: 0x29990ff9
+  name: "of_gen_pool_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9c4bee42
+  type_id: 0x5193f1b8
+  full_name: "of_gen_pool_get"
+}
+elf_symbol {
+  id: 0xf9082011
+  name: "of_genpd_add_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x99cb6a2e
+  type_id: 0x9eb8629a
+  full_name: "of_genpd_add_device"
+}
+elf_symbol {
+  id: 0x95c739b2
+  name: "of_genpd_add_provider_onecell"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x50d40c58
+  type_id: 0x90ff140b
+  full_name: "of_genpd_add_provider_onecell"
+}
+elf_symbol {
+  id: 0x61fdb8d4
+  name: "of_genpd_add_provider_simple"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbe4fde0c
+  type_id: 0x908663be
+  full_name: "of_genpd_add_provider_simple"
+}
+elf_symbol {
+  id: 0x10a4724b
+  name: "of_genpd_add_subdomain"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd8c61256
+  type_id: 0x9e821f5a
+  full_name: "of_genpd_add_subdomain"
+}
+elf_symbol {
+  id: 0xd357707f
+  name: "of_genpd_del_provider"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf6a24424
+  type_id: 0x1d84917e
+  full_name: "of_genpd_del_provider"
+}
+elf_symbol {
+  id: 0xe506b8c8
+  name: "of_get_child_by_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa3308a92
+  type_id: 0x7a80bf10
+  full_name: "of_get_child_by_name"
+}
+elf_symbol {
+  id: 0xe2b0e5a5
+  name: "of_get_compatible_child"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xae918749
+  type_id: 0x7a80bf10
+  full_name: "of_get_compatible_child"
+}
+elf_symbol {
+  id: 0xb8036e9c
+  name: "of_get_cpu_node"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6727c283
+  type_id: 0x6f542f9d
+  full_name: "of_get_cpu_node"
+}
+elf_symbol {
+  id: 0xe36e392a
+  name: "of_get_display_timing"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc59ab1dd
+  type_id: 0x91f5fad8
+  full_name: "of_get_display_timing"
+}
+elf_symbol {
+  id: 0xe3de7018
+  name: "of_get_i2c_adapter_by_node"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x93b0da8c
+  type_id: 0x619a645f
+  full_name: "of_get_i2c_adapter_by_node"
+}
+elf_symbol {
+  id: 0x26fb2401
+  name: "of_get_mac_address"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3ae64267
+  type_id: 0x909f3f56
+  full_name: "of_get_mac_address"
+}
+elf_symbol {
+  id: 0xec79392b
+  name: "of_get_named_gpio_flags"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb9ab15e7
+  type_id: 0x91ea80a1
+  full_name: "of_get_named_gpio_flags"
+}
+elf_symbol {
+  id: 0xf5728f86
+  name: "of_get_next_available_child"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9abbe2da
+  type_id: 0x7aa931ca
+  full_name: "of_get_next_available_child"
+}
+elf_symbol {
+  id: 0xb71ce21c
+  name: "of_get_next_child"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x96461ca6
+  type_id: 0x7aa931ca
+  full_name: "of_get_next_child"
+}
+elf_symbol {
+  id: 0x40588e62
+  name: "of_get_next_parent"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa4703811
+  type_id: 0x7bef1e3b
+  full_name: "of_get_next_parent"
+}
+elf_symbol {
+  id: 0x9db24364
+  name: "of_get_parent"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x460ab812
+  type_id: 0x7a78fdc4
+  full_name: "of_get_parent"
+}
+elf_symbol {
+  id: 0xbe4d24aa
+  name: "of_get_pci_domain_nr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfbfb5eb1
+  type_id: 0x909c23c2
+  full_name: "of_get_pci_domain_nr"
+}
+elf_symbol {
+  id: 0xca6e1d6e
+  name: "of_get_phy_mode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdd4a48d8
+  type_id: 0x90588e4c
+  full_name: "of_get_phy_mode"
+}
+elf_symbol {
+  id: 0xf964baa3
+  name: "of_get_property"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9da9550a
+  type_id: 0x5bd8cd40
+  full_name: "of_get_property"
+}
+elf_symbol {
+  id: 0x85b62ff5
+  name: "of_get_regulator_init_data"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6c6d14ef
+  type_id: 0xecebfa40
+  full_name: "of_get_regulator_init_data"
+}
+elf_symbol {
+  id: 0xcbfc5627
+  name: "of_get_required_opp_performance_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4703ee57
+  type_id: 0x9100a08e
+  full_name: "of_get_required_opp_performance_state"
+}
+elf_symbol {
+  id: 0xee3e4c4b
+  name: "of_get_videomode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf19b013d
+  type_id: 0x90977154
+  full_name: "of_get_videomode"
+}
+elf_symbol {
+  id: 0x083944d7
+  name: "of_graph_get_endpoint_by_regs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x87b8de8f
+  type_id: 0x7bfdb6bc
+  full_name: "of_graph_get_endpoint_by_regs"
+}
+elf_symbol {
+  id: 0x377ef2e6
+  name: "of_graph_get_next_endpoint"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4eae3dec
+  type_id: 0x7aa931ca
+  full_name: "of_graph_get_next_endpoint"
+}
+elf_symbol {
+  id: 0xd87751ae
+  name: "of_graph_get_port_by_id"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7602ba02
+  type_id: 0x78cb3e97
+  full_name: "of_graph_get_port_by_id"
+}
+elf_symbol {
+  id: 0xd3bfa538
+  name: "of_graph_get_port_parent"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x07993504
+  type_id: 0x7bef1e3b
+  full_name: "of_graph_get_port_parent"
+}
+elf_symbol {
+  id: 0x1544acf1
+  name: "of_graph_get_remote_endpoint"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2a58dede
+  type_id: 0x7a78fdc4
+  full_name: "of_graph_get_remote_endpoint"
+}
+elf_symbol {
+  id: 0xacdbe7cb
+  name: "of_graph_get_remote_node"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb4aaec75
+  type_id: 0x796e9f62
+  full_name: "of_graph_get_remote_node"
+}
+elf_symbol {
+  id: 0xc699a239
+  name: "of_graph_get_remote_port_parent"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0c4e3667
+  type_id: 0x7a78fdc4
+  full_name: "of_graph_get_remote_port_parent"
+}
+elf_symbol {
+  id: 0xe63f0c53
+  name: "of_graph_is_present"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x92f30b09
+  type_id: 0xf22f7816
+  full_name: "of_graph_is_present"
+}
+elf_symbol {
+  id: 0x8be0e5f9
+  name: "of_graph_parse_endpoint"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3703e9c6
+  type_id: 0x9104fd7b
+  full_name: "of_graph_parse_endpoint"
+}
+elf_symbol {
+  id: 0xb3d357f8
+  name: "of_hwspin_lock_get_id"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc2c0f04e
+  type_id: 0x9100a08e
+  full_name: "of_hwspin_lock_get_id"
+}
+elf_symbol {
+  id: 0x453bec03
+  name: "of_icc_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x775c7df1
+  type_id: 0x2bcaa9c8
+  full_name: "of_icc_get"
+}
+elf_symbol {
+  id: 0x08284f40
+  name: "of_icc_get_from_provider"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x44cda1a4
+  type_id: 0x2d456d1f
+  full_name: "of_icc_get_from_provider"
+}
+elf_symbol {
+  id: 0xbd1c7f26
+  name: "of_icc_xlate_onecell"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbc1cc4f8
+  type_id: 0xbce9e1eb
+  full_name: "of_icc_xlate_onecell"
+}
+elf_symbol {
+  id: 0xb6e53400
+  name: "of_iomap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9309b7e9
+  type_id: 0x5a16f250
+  full_name: "of_iomap"
+}
+elf_symbol {
+  id: 0xa6b53b87
+  name: "of_irq_find_parent"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1701839b
+  type_id: 0x7bef1e3b
+  full_name: "of_irq_find_parent"
+}
+elf_symbol {
+  id: 0xa66a671b
+  name: "of_irq_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf9677c4f
+  type_id: 0x9100a08e
+  full_name: "of_irq_get"
+}
+elf_symbol {
+  id: 0x4c312bdc
+  name: "of_irq_get_byname"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x91eb5598
+  type_id: 0x90646116
+  full_name: "of_irq_get_byname"
+}
+elf_symbol {
+  id: 0x538752dd
+  name: "of_irq_parse_one"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf886afc2
+  type_id: 0x9103916c
+  full_name: "of_irq_parse_one"
+}
+elf_symbol {
+  id: 0x3fb40bf5
+  name: "of_irq_to_resource"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x65c694f6
+  type_id: 0x910e73b6
+  full_name: "of_irq_to_resource"
+}
+elf_symbol {
+  id: 0x9f4df85d
+  name: "of_irq_to_resource_table"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb734be8d
+  type_id: 0x9068d876
+  full_name: "of_irq_to_resource_table"
+}
+elf_symbol {
+  id: 0x318c8fe5
+  name: "of_machine_is_compatible"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd31ccb06
+  type_id: 0x9204ce69
+  full_name: "of_machine_is_compatible"
+}
+elf_symbol {
+  id: 0x16c4cdb3
+  name: "of_match_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x54ad2b23
+  type_id: 0xd082596f
+  full_name: "of_match_device"
+}
+elf_symbol {
+  id: 0x3965b143
+  name: "of_match_node"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4fcce10a
+  type_id: 0xd0b47295
+  full_name: "of_match_node"
+}
+elf_symbol {
+  id: 0x23d1db24
+  name: "of_modalias_node"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbe048933
+  type_id: 0x9097e46d
+  full_name: "of_modalias_node"
+}
+elf_symbol {
+  id: 0x8ac60fa1
+  name: "of_n_addr_cells"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x39d2055c
+  type_id: 0x909c23c2
+  full_name: "of_n_addr_cells"
+}
+elf_symbol {
+  id: 0xc9f43d6f
+  name: "of_n_size_cells"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x98ccdae5
+  type_id: 0x909c23c2
+  full_name: "of_n_size_cells"
+}
+elf_symbol {
+  id: 0xe6c411fe
+  name: "of_node_name_eq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc8e1b1b9
+  type_id: 0xf2d73ac2
+  full_name: "of_node_name_eq"
+}
+elf_symbol {
+  id: 0xc4acef3c
+  name: "of_node_name_prefix"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1c73ce08
+  type_id: 0xf2d73ac2
+  full_name: "of_node_name_prefix"
+}
+elf_symbol {
+  id: 0x01465bb9
+  name: "of_nvmem_cell_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x28344f2d
+  type_id: 0xb6699a8e
+  full_name: "of_nvmem_cell_get"
+}
+elf_symbol {
+  id: 0x24945e17
+  name: "of_nvmem_device_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd965c167
+  type_id: 0x2c22370c
+  full_name: "of_nvmem_device_get"
+}
+elf_symbol {
+  id: 0x7e41af4d
+  name: "of_pci_get_max_link_speed"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x83f4e866
+  type_id: 0x909c23c2
+  full_name: "of_pci_get_max_link_speed"
+}
+elf_symbol {
+  id: 0x2d5d9d4f
+  name: "of_phandle_iterator_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc085129c
+  type_id: 0x94623262
+  full_name: "of_phandle_iterator_init"
+}
+elf_symbol {
+  id: 0x99aacdb6
+  name: "of_phandle_iterator_next"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa793cd59
+  type_id: 0x94a5e5f4
+  full_name: "of_phandle_iterator_next"
+}
+elf_symbol {
+  id: 0xf330039e
+  name: "of_phy_connect"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xec6d7f86
+  type_id: 0xbfa66420
+  full_name: "of_phy_connect"
+}
+elf_symbol {
+  id: 0x76fed243
+  name: "of_phy_deregister_fixed_link"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x66292e86
+  type_id: 0x1d84917e
+  full_name: "of_phy_deregister_fixed_link"
+}
+elf_symbol {
+  id: 0x3ea82fd1
+  name: "of_phy_find_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc0e75a06
+  type_id: 0xbec298be
+  full_name: "of_phy_find_device"
+}
+elf_symbol {
+  id: 0xb8340e79
+  name: "of_phy_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x141f940b
+  type_id: 0x1cde4dc9
+  full_name: "of_phy_get"
+}
+elf_symbol {
+  id: 0x783e3f26
+  name: "of_phy_is_fixed_link"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb45076e5
+  type_id: 0xf3b89be9
+  full_name: "of_phy_is_fixed_link"
+}
+elf_symbol {
+  id: 0xeb2dab5b
+  name: "of_phy_register_fixed_link"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5b8fe935
+  type_id: 0x909c23c2
+  full_name: "of_phy_register_fixed_link"
+}
+elf_symbol {
+  id: 0x5516ad40
+  name: "of_phy_simple_xlate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x393623b2
+  type_id: 0x119fef8e
+  full_name: "of_phy_simple_xlate"
+}
+elf_symbol {
+  id: 0x840bde05
+  name: "of_platform_depopulate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd8207480
+  type_id: 0x100e6fc8
+  full_name: "of_platform_depopulate"
+}
+elf_symbol {
+  id: 0x923f5818
+  name: "of_platform_device_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xad524976
+  type_id: 0xc4b456f8
+  full_name: "of_platform_device_create"
+}
+elf_symbol {
+  id: 0x41ba71c8
+  name: "of_platform_device_destroy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x78bfadc8
+  type_id: 0x9d7428e0
+  full_name: "of_platform_device_destroy"
+}
+elf_symbol {
+  id: 0x2278bde9
+  name: "of_platform_populate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe0c30afd
+  type_id: 0x90795841
+  full_name: "of_platform_populate"
+}
+elf_symbol {
+  id: 0x9e9ee706
+  name: "of_pm_clk_add_clks"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcc78158c
+  type_id: 0x9d16dd74
+  full_name: "of_pm_clk_add_clks"
+}
+elf_symbol {
+  id: 0x34f75344
+  name: "of_prop_next_string"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x819d9c94
+  type_id: 0x927dc411
+  full_name: "of_prop_next_string"
+}
+elf_symbol {
+  id: 0xc2c6cbcb
+  name: "of_prop_next_u32"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5820c2d2
+  type_id: 0x21ebbce2
+  full_name: "of_prop_next_u32"
+}
+elf_symbol {
+  id: 0xef3ebc91
+  name: "of_property_count_elems_of_size"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3cfa4a11
+  type_id: 0x91ea4add
+  full_name: "of_property_count_elems_of_size"
+}
+elf_symbol {
+  id: 0xd8c43eff
+  name: "of_property_match_string"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaa0acb6b
+  type_id: 0x91fc06c4
+  full_name: "of_property_match_string"
+}
+elf_symbol {
+  id: 0xd8909932
+  name: "of_property_read_string"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x000c9569
+  type_id: 0x91f2c7ec
+  full_name: "of_property_read_string"
+}
+elf_symbol {
+  id: 0xc3590dc2
+  name: "of_property_read_string_helper"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf876718e
+  type_id: 0x91f10ef1
+  full_name: "of_property_read_string_helper"
+}
+elf_symbol {
+  id: 0xed968a02
+  name: "of_property_read_u32_index"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xceae3dfa
+  type_id: 0x91c123ab
+  full_name: "of_property_read_u32_index"
+}
+elf_symbol {
+  id: 0xd75c95b1
+  name: "of_property_read_u64"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x37f4b967
+  type_id: 0x91f804d4
+  full_name: "of_property_read_u64"
+}
+elf_symbol {
+  id: 0xecb95256
+  name: "of_property_read_u64_index"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2e22ca9b
+  type_id: 0x91c17880
+  full_name: "of_property_read_u64_index"
+}
+elf_symbol {
+  id: 0x5edeb48b
+  name: "of_property_read_variable_u16_array"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0dafa66a
+  type_id: 0x91fbdfe4
+  full_name: "of_property_read_variable_u16_array"
+}
+elf_symbol {
+  id: 0x13fc3df8
+  name: "of_property_read_variable_u32_array"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x94a3f9c7
+  type_id: 0x91fe5bbd
+  full_name: "of_property_read_variable_u32_array"
+}
+elf_symbol {
+  id: 0x22e56ff2
+  name: "of_property_read_variable_u64_array"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9f5e7ab1
+  type_id: 0x91fbe90c
+  full_name: "of_property_read_variable_u64_array"
+}
+elf_symbol {
+  id: 0x6df0c91f
+  name: "of_property_read_variable_u8_array"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4956eb3e
+  type_id: 0x91f05ef8
+  full_name: "of_property_read_variable_u8_array"
+}
+elf_symbol {
+  id: 0xb4e1cb45
+  name: "of_pwm_xlate_with_flags"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd06171c3
+  type_id: 0x0ad6ec83
+  full_name: "of_pwm_xlate_with_flags"
+}
+elf_symbol {
+  id: 0x31405e51
+  name: "of_regulator_match"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb65d015e
+  type_id: 0x9dc26efd
+  full_name: "of_regulator_match"
+}
+elf_symbol {
+  id: 0x64a1a905
+  name: "of_remove_property"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2384588a
+  type_id: 0x90903ad4
+  full_name: "of_remove_property"
+}
+elf_symbol {
+  id: 0x702cbeb6
+  name: "of_reserved_mem_device_init_by_idx"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbb56af18
+  type_id: 0x9dded94e
+  full_name: "of_reserved_mem_device_init_by_idx"
+}
+elf_symbol {
+  id: 0x29cfdcb2
+  name: "of_reserved_mem_device_release"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd1455ac4
+  type_id: 0x100e6fc8
+  full_name: "of_reserved_mem_device_release"
+}
+elf_symbol {
+  id: 0xd44421aa
+  name: "of_reserved_mem_lookup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5bf2bc8d
+  type_id: 0x3330b35a
+  full_name: "of_reserved_mem_lookup"
+}
+elf_symbol {
+  id: 0x3f880952
+  name: "of_reset_control_array_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x490b6e10
+  type_id: 0x03232434
+  full_name: "of_reset_control_array_get"
+}
+elf_symbol {
+  id: 0x6072555e
+  name: "of_root"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x4cecbcce
+  type_id: 0x347303b4
+  full_name: "of_root"
+}
+elf_symbol {
+  id: 0x96b640c7
+  name: "of_thermal_get_ntrips"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x624ff197
+  type_id: 0x9439b74e
+  full_name: "of_thermal_get_ntrips"
+}
+elf_symbol {
+  id: 0x28517749
+  name: "of_thermal_get_trip_points"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x76401116
+  type_id: 0x954e493c
+  full_name: "of_thermal_get_trip_points"
+}
+elf_symbol {
+  id: 0xdfe02c28
+  name: "of_thermal_is_trip_valid"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x05d24c7a
+  type_id: 0xf6818c29
+  full_name: "of_thermal_is_trip_valid"
+}
+elf_symbol {
+  id: 0xdcce2e99
+  name: "of_translate_address"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2a0a7c73
+  type_id: 0x5a09df06
+  full_name: "of_translate_address"
+}
+elf_symbol {
+  id: 0x7d8fe18b
+  name: "of_usb_get_phy_mode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x639dd3c2
+  type_id: 0xc7bc4f65
+  full_name: "of_usb_get_phy_mode"
+}
+elf_symbol {
+  id: 0x02252ed7
+  name: "of_usb_host_tpl_support"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3bac72d5
+  type_id: 0xf3b89be9
+  full_name: "of_usb_host_tpl_support"
+}
+elf_symbol {
+  id: 0xbfb07eec
+  name: "of_usb_update_otg_caps"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x290c0b46
+  type_id: 0x90b8e351
+  full_name: "of_usb_update_otg_caps"
+}
+elf_symbol {
+  id: 0x396f9457
+  name: "offline_and_remove_memory"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x08c78cf7
+  type_id: 0xbb40a305
+  full_name: "offline_and_remove_memory"
+}
+elf_symbol {
+  id: 0xd9c8585e
+  name: "on_each_cpu_cond_mask"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5f43c059
+  type_id: 0x09b7dbae
+  full_name: "on_each_cpu_cond_mask"
+}
+elf_symbol {
+  id: 0xa50d59b7
+  name: "oops_in_progress"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xb1c3a01a
+  type_id: 0x6720d32f
+  full_name: "oops_in_progress"
+}
+elf_symbol {
+  id: 0x224cb6b2
+  name: "open_candev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0dd3afa3
+  type_id: 0x91296bda
+  full_name: "open_candev"
+}
+elf_symbol {
+  id: 0x57ecab02
+  name: "out_of_line_wait_on_bit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1984d421
+  type_id: 0x9a3ef313
+  full_name: "out_of_line_wait_on_bit"
+}
+elf_symbol {
+  id: 0x27d0c7b6
+  name: "out_of_line_wait_on_bit_timeout"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4071b517
+  type_id: 0x9a3effce
+  full_name: "out_of_line_wait_on_bit_timeout"
+}
+elf_symbol {
+  id: 0x28b33064
+  name: "overflowuid"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x8b618d08
+  type_id: 0x6720d32f
+  full_name: "overflowuid"
+}
+elf_symbol {
+  id: 0x60d84cc3
+  name: "page_endio"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x12cbd911
+  type_id: 0x1094b37f
+  full_name: "page_endio"
+}
+elf_symbol {
+  id: 0xb613af5e
+  name: "page_ext_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0ee09d30
+  namespace: "MINIDUMP"
+  type_id: 0xb6d2e6f8
+  full_name: "page_ext_get"
+}
+elf_symbol {
+  id: 0xff029108
+  name: "page_ext_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf66cc314
+  namespace: "MINIDUMP"
+  type_id: 0x141076c6
+  full_name: "page_ext_put"
+}
+elf_symbol {
+  id: 0xd723c668
+  name: "page_frag_alloc_align"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2de125c0
+  type_id: 0x5b8e3e03
+  full_name: "page_frag_alloc_align"
+}
+elf_symbol {
+  id: 0x13dfcd3d
+  name: "page_frag_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x88e1d0f0
+  type_id: 0x16b708df
+  full_name: "page_frag_free"
+}
+elf_symbol {
+  id: 0xc2b69854
+  name: "page_is_ram"
+  is_defined: true
+  symbol_type: FUNCTION
+  binding: WEAK
+  crc: 0xfc03d97a
+  type_id: 0x915dba0e
+  full_name: "page_is_ram"
+}
+elf_symbol {
+  id: 0x4f3e5356
+  name: "page_mapping"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaff5b625
+  type_id: 0x6a8ce717
+  full_name: "page_mapping"
+}
+elf_symbol {
+  id: 0x44e50ff8
+  name: "page_pinner_inited"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xacfe4142
+  type_id: 0x8e47c273
+  full_name: "page_pinner_inited"
+}
+elf_symbol {
+  id: 0xec5c680b
+  name: "page_pool_alloc_pages"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x744a4b34
+  type_id: 0xba8f5ef0
+  full_name: "page_pool_alloc_pages"
+}
+elf_symbol {
+  id: 0xdc14ff55
+  name: "page_pool_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4c8831c4
+  type_id: 0xf18d022a
+  full_name: "page_pool_create"
+}
+elf_symbol {
+  id: 0x2616989d
+  name: "page_pool_destroy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x104e46b5
+  type_id: 0x1449649c
+  full_name: "page_pool_destroy"
+}
+elf_symbol {
+  id: 0xc922a019
+  name: "page_pool_put_defragged_page"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x42425748
+  type_id: 0x1443bd42
+  full_name: "page_pool_put_defragged_page"
+}
+elf_symbol {
+  id: 0xfdf9f7ee
+  name: "page_pool_release_page"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8ff08ad8
+  type_id: 0x145369e6
+  full_name: "page_pool_release_page"
+}
+elf_symbol {
+  id: 0x3c537500
+  name: "page_relinquish"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x73336f4b
+  type_id: 0x11388634
+  full_name: "page_relinquish"
+}
+elf_symbol {
+  id: 0x1b814fa6
+  name: "page_reporting_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa21693fe
+  type_id: 0x947d3e35
+  full_name: "page_reporting_register"
+}
+elf_symbol {
+  id: 0x9ca2e070
+  name: "page_reporting_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8d5b0483
+  type_id: 0x19658c89
+  full_name: "page_reporting_unregister"
+}
+elf_symbol {
+  id: 0x37d86bb7
+  name: "panic"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf1e046cc
+  type_id: 0x1d88d4f1
+  full_name: "panic"
+}
+elf_symbol {
+  id: 0x32ecd828
+  name: "panic_notifier_list"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x07ceeac9
+  type_id: 0xf02f73da
+  full_name: "panic_notifier_list"
+}
+elf_symbol {
+  id: 0xe769f645
+  name: "panic_timeout"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x1f8544b8
+  type_id: 0x6720d32f
+  full_name: "panic_timeout"
+}
+elf_symbol {
+  id: 0x37c3807c
+  name: "param_array_ops"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xc6eb4778
+  type_id: 0xd865d5b5
+  full_name: "param_array_ops"
+}
+elf_symbol {
+  id: 0xd883f01d
+  name: "param_get_bool"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x129bb69a
+  type_id: 0x9c660c95
+  full_name: "param_get_bool"
+}
+elf_symbol {
+  id: 0x3949f4f2
+  name: "param_get_charp"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4c3a48f4
+  type_id: 0x9c660c95
+  full_name: "param_get_charp"
+}
+elf_symbol {
+  id: 0xe3ebf1bd
+  name: "param_get_int"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdad5f879
+  type_id: 0x9c660c95
+  full_name: "param_get_int"
+}
+elf_symbol {
+  id: 0x9a649861
+  name: "param_get_string"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1d32d4ad
+  type_id: 0x9c660c95
+  full_name: "param_get_string"
+}
+elf_symbol {
+  id: 0xced06429
+  name: "param_get_uint"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x67cb9dc6
+  type_id: 0x9c660c95
+  full_name: "param_get_uint"
+}
+elf_symbol {
+  id: 0x712a9478
+  name: "param_get_ullong"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa03ed6f9
+  type_id: 0x9c660c95
+  full_name: "param_get_ullong"
+}
+elf_symbol {
+  id: 0x1b988a17
+  name: "param_get_ulong"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4d4e1a44
+  type_id: 0x9c660c95
+  full_name: "param_get_ulong"
+}
+elf_symbol {
+  id: 0xe9eceac5
+  name: "param_ops_bool"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x091a089b
+  type_id: 0xd865d5b5
+  full_name: "param_ops_bool"
+}
+elf_symbol {
+  id: 0x0af305ea
+  name: "param_ops_byte"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xbdd9f700
+  type_id: 0xd865d5b5
+  full_name: "param_ops_byte"
+}
+elf_symbol {
+  id: 0xfda206aa
+  name: "param_ops_charp"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xbb183429
+  type_id: 0xd865d5b5
+  full_name: "param_ops_charp"
+}
+elf_symbol {
+  id: 0xb3d7f6dd
+  name: "param_ops_hexint"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x377b3b7e
+  type_id: 0xd865d5b5
+  full_name: "param_ops_hexint"
+}
+elf_symbol {
+  id: 0x24c72ae5
+  name: "param_ops_int"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xa3b1eb1d
+  type_id: 0xd865d5b5
+  full_name: "param_ops_int"
+}
+elf_symbol {
+  id: 0x5269af0f
+  name: "param_ops_long"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x541c0506
+  type_id: 0xd865d5b5
+  full_name: "param_ops_long"
+}
+elf_symbol {
+  id: 0xbbecac69
+  name: "param_ops_string"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xb1777b47
+  type_id: 0xd865d5b5
+  full_name: "param_ops_string"
+}
+elf_symbol {
+  id: 0x73430331
+  name: "param_ops_uint"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x7d68eebb
+  type_id: 0xd865d5b5
+  full_name: "param_ops_uint"
+}
+elf_symbol {
+  id: 0x3e079c30
+  name: "param_ops_ullong"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xc799b8b4
+  type_id: 0xd865d5b5
+  full_name: "param_ops_ullong"
+}
+elf_symbol {
+  id: 0x2bfcd0ef
+  name: "param_ops_ulong"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x6b77dade
+  type_id: 0xd865d5b5
+  full_name: "param_ops_ulong"
+}
+elf_symbol {
+  id: 0x16e3a1c0
+  name: "param_ops_ushort"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xb44ab5bc
+  type_id: 0xd865d5b5
+  full_name: "param_ops_ushort"
+}
+elf_symbol {
+  id: 0x3c5cce26
+  name: "param_set_bool"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x32a5a132
+  type_id: 0x92c2d86d
+  full_name: "param_set_bool"
+}
+elf_symbol {
+  id: 0xd9cc558b
+  name: "param_set_charp"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1d836063
+  type_id: 0x92c2d86d
+  full_name: "param_set_charp"
+}
+elf_symbol {
+  id: 0x34de6be7
+  name: "param_set_copystring"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2d8864dd
+  type_id: 0x92c2d86d
+  full_name: "param_set_copystring"
+}
+elf_symbol {
+  id: 0x9cc61d04
+  name: "param_set_int"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5445ffc9
+  type_id: 0x92c2d86d
+  full_name: "param_set_int"
+}
+elf_symbol {
+  id: 0x07e4f5ea
+  name: "param_set_uint"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x66cfd2b2
+  type_id: 0x92c2d86d
+  full_name: "param_set_uint"
+}
+elf_symbol {
+  id: 0x1eafdf64
+  name: "param_set_ulong"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa005b241
+  type_id: 0x92c2d86d
+  full_name: "param_set_ulong"
+}
+elf_symbol {
+  id: 0x67d6372c
+  name: "passthru_features_check"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x66386708
+  type_id: 0xa739c6fb
+  full_name: "passthru_features_check"
+}
+elf_symbol {
+  id: 0x0a48d5ac
+  name: "pci_aer_clear_nonfatal_status"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9d45b84c
+  type_id: 0x99f942bc
+  full_name: "pci_aer_clear_nonfatal_status"
+}
+elf_symbol {
+  id: 0x76729be5
+  name: "pci_alloc_irq_vectors_affinity"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3e2daa5d
+  type_id: 0x98ff2dd7
+  full_name: "pci_alloc_irq_vectors_affinity"
+}
+elf_symbol {
+  id: 0xbab6c772
+  name: "pci_assign_resource"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa06ede0b
+  type_id: 0x9865c1f0
+  full_name: "pci_assign_resource"
+}
+elf_symbol {
+  id: 0x66f0c8cd
+  name: "pci_assign_unassigned_bus_resources"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x91185491
+  type_id: 0x185a3adc
+  full_name: "pci_assign_unassigned_bus_resources"
+}
+elf_symbol {
+  id: 0xb10958e7
+  name: "pci_ats_supported"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc38eaa8c
+  type_id: 0xfaddfa97
+  full_name: "pci_ats_supported"
+}
+elf_symbol {
+  id: 0x45091f48
+  name: "pci_bus_resource_n"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7d21cd3f
+  type_id: 0xcd829c8f
+  full_name: "pci_bus_resource_n"
+}
+elf_symbol {
+  id: 0x1540c319
+  name: "pci_bus_type"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x55d05ae1
+  type_id: 0x257935aa
+  full_name: "pci_bus_type"
+}
+elf_symbol {
+  id: 0x06548b7e
+  name: "pci_choose_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5958a8cf
+  type_id: 0xb4f85508
+  full_name: "pci_choose_state"
+}
+elf_symbol {
+  id: 0xe99b6d83
+  name: "pci_clear_master"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfbe3a940
+  type_id: 0x14e1f000
+  full_name: "pci_clear_master"
+}
+elf_symbol {
+  id: 0x04525af5
+  name: "pci_dev_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x440eb2e2
+  type_id: 0x832143d7
+  full_name: "pci_dev_get"
+}
+elf_symbol {
+  id: 0x9252d1d7
+  name: "pci_dev_present"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7483dc59
+  type_id: 0x91ebac18
+  full_name: "pci_dev_present"
+}
+elf_symbol {
+  id: 0x4f0ba1d7
+  name: "pci_dev_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1ac914d6
+  type_id: 0x14e1f000
+  full_name: "pci_dev_put"
+}
+elf_symbol {
+  id: 0xd115b1d3
+  name: "pci_device_group"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd96822f2
+  type_id: 0x7e204efc
+  full_name: "pci_device_group"
+}
+elf_symbol {
+  id: 0x3937523a
+  name: "pci_device_is_present"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdc1c9900
+  type_id: 0xfaddfa97
+  full_name: "pci_device_is_present"
+}
+elf_symbol {
+  id: 0x80238a68
+  name: "pci_disable_ats"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa5b32faf
+  type_id: 0x14e1f000
+  full_name: "pci_disable_ats"
+}
+elf_symbol {
+  id: 0x75040d3e
+  name: "pci_disable_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfb9b8560
+  type_id: 0x14e1f000
+  full_name: "pci_disable_device"
+}
+elf_symbol {
+  id: 0x7cd4622d
+  name: "pci_disable_link_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8b63f49f
+  type_id: 0x9865c1f0
+  full_name: "pci_disable_link_state"
+}
+elf_symbol {
+  id: 0x5dfeb70f
+  name: "pci_disable_msi"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf5c749e9
+  type_id: 0x14e1f000
+  full_name: "pci_disable_msi"
+}
+elf_symbol {
+  id: 0x01a00013
+  name: "pci_disable_msix"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8f30a592
+  type_id: 0x14e1f000
+  full_name: "pci_disable_msix"
+}
+elf_symbol {
+  id: 0xb9d0b3a8
+  name: "pci_disable_sriov"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdc73d235
+  type_id: 0x14e1f000
+  full_name: "pci_disable_sriov"
+}
+elf_symbol {
+  id: 0x96b46225
+  name: "pci_enable_atomic_ops_to_root"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcb159eb6
+  type_id: 0x9add6210
+  full_name: "pci_enable_atomic_ops_to_root"
+}
+elf_symbol {
+  id: 0x35a3d772
+  name: "pci_enable_ats"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x41e2af1a
+  type_id: 0x9865c1f0
+  full_name: "pci_enable_ats"
+}
+elf_symbol {
+  id: 0x86bcc4a0
+  name: "pci_enable_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5dbd3f1a
+  type_id: 0x99f942bc
+  full_name: "pci_enable_device"
+}
+elf_symbol {
+  id: 0xf6382d08
+  name: "pci_enable_msi"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe3078eea
+  type_id: 0x99f942bc
+  full_name: "pci_enable_msi"
+}
+elf_symbol {
+  id: 0x433f7035
+  name: "pci_enable_msix_range"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x441c427f
+  type_id: 0x99b01e28
+  full_name: "pci_enable_msix_range"
+}
+elf_symbol {
+  id: 0x8238784d
+  name: "pci_enable_pcie_error_reporting"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0915aabd
+  type_id: 0x99f942bc
+  full_name: "pci_enable_pcie_error_reporting"
+}
+elf_symbol {
+  id: 0xc80fa4a7
+  name: "pci_enable_sriov"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf3c70b25
+  type_id: 0x9865c1f0
+  full_name: "pci_enable_sriov"
+}
+elf_symbol {
+  id: 0x39db373c
+  name: "pci_enable_wake"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbb17173d
+  type_id: 0x999ac92f
+  full_name: "pci_enable_wake"
+}
+elf_symbol {
+  id: 0x3852868c
+  name: "pci_find_bus"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2d6df455
+  type_id: 0xd88df0fd
+  full_name: "pci_find_bus"
+}
+elf_symbol {
+  id: 0x27f20808
+  name: "pci_find_capability"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2c2ba92f
+  type_id: 0x56af9ca8
+  full_name: "pci_find_capability"
+}
+elf_symbol {
+  id: 0x63876663
+  name: "pci_find_ext_capability"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x71d66c7b
+  type_id: 0x04ce0b6f
+  full_name: "pci_find_ext_capability"
+}
+elf_symbol {
+  id: 0xdea420f5
+  name: "pci_find_next_capability"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa88ac62f
+  type_id: 0x578fa618
+  full_name: "pci_find_next_capability"
+}
+elf_symbol {
+  id: 0x8ffabaa9
+  name: "pci_free_irq_vectors"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x48080238
+  type_id: 0x14e1f000
+  full_name: "pci_free_irq_vectors"
+}
+elf_symbol {
+  id: 0x50bce06e
+  name: "pci_generic_config_read"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x25671fef
+  type_id: 0x944cc77b
+  full_name: "pci_generic_config_read"
+}
+elf_symbol {
+  id: 0x133a7a3e
+  name: "pci_generic_config_read32"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7fce2e4d
+  type_id: 0x944cc77b
+  full_name: "pci_generic_config_read32"
+}
+elf_symbol {
+  id: 0xdeaa9b25
+  name: "pci_generic_config_write"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x04f29954
+  type_id: 0x944cfb0d
+  full_name: "pci_generic_config_write"
+}
+elf_symbol {
+  id: 0x6f7d4414
+  name: "pci_generic_config_write32"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe2db9a7c
+  type_id: 0x944cfb0d
+  full_name: "pci_generic_config_write32"
+}
+elf_symbol {
+  id: 0x37d02bbe
+  name: "pci_get_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe71c8a05
+  type_id: 0x972bd7f2
+  full_name: "pci_get_device"
+}
+elf_symbol {
+  id: 0x9ac8ef20
+  name: "pci_get_domain_bus_and_slot"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd30e6931
+  type_id: 0x9f97a24e
+  full_name: "pci_get_domain_bus_and_slot"
+}
+elf_symbol {
+  id: 0x35c96922
+  name: "pci_get_slot"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe843a108
+  type_id: 0x8e8c9c93
+  full_name: "pci_get_slot"
+}
+elf_symbol {
+  id: 0xbe6406c3
+  name: "pci_host_probe"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x56d0f8aa
+  type_id: 0x93acae9b
+  full_name: "pci_host_probe"
+}
+elf_symbol {
+  id: 0x9c6c58ea
+  name: "pci_iomap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc2b09549
+  type_id: 0x537f4e77
+  full_name: "pci_iomap"
+}
+elf_symbol {
+  id: 0x2fefe933
+  name: "pci_iomap_range"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x13c0bfb4
+  type_id: 0x537f83a2
+  full_name: "pci_iomap_range"
+}
+elf_symbol {
+  id: 0xec861eec
+  name: "pci_iounmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x57c3bc79
+  type_id: 0x14830594
+  full_name: "pci_iounmap"
+}
+elf_symbol {
+  id: 0x5810bdc3
+  name: "pci_irq_get_affinity"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x97586fdd
+  type_id: 0x5c7d047e
+  full_name: "pci_irq_get_affinity"
+}
+elf_symbol {
+  id: 0x3cbd6214
+  name: "pci_irq_vector"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0f70e1bf
+  type_id: 0x98ef5724
+  full_name: "pci_irq_vector"
+}
+elf_symbol {
+  id: 0xff509c01
+  name: "pci_load_and_free_saved_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe3721488
+  type_id: 0x99dbf8a8
+  full_name: "pci_load_and_free_saved_state"
+}
+elf_symbol {
+  id: 0xa58a02f7
+  name: "pci_load_saved_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x341c4622
+  type_id: 0x99daa974
+  full_name: "pci_load_saved_state"
+}
+elf_symbol {
+  id: 0x419ed67f
+  name: "pci_lock_rescan_remove"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xddbeeecc
+  type_id: 0x10985193
+  full_name: "pci_lock_rescan_remove"
+}
+elf_symbol {
+  id: 0x0847b0c3
+  name: "pci_map_rom"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x200798d0
+  type_id: 0x523165ec
+  full_name: "pci_map_rom"
+}
+elf_symbol {
+  id: 0xd1eec7be
+  name: "pci_match_id"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe4699c20
+  type_id: 0xaddc5fdc
+  full_name: "pci_match_id"
+}
+elf_symbol {
+  id: 0xbc68a810
+  name: "pci_msi_create_irq_domain"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8e1a8a79
+  type_id: 0x5e4ba6ce
+  full_name: "pci_msi_create_irq_domain"
+}
+elf_symbol {
+  id: 0x2feb66ad
+  name: "pci_msi_enabled"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x453c8403
+  type_id: 0x9d80e32f
+  full_name: "pci_msi_enabled"
+}
+elf_symbol {
+  id: 0x9a271493
+  name: "pci_msi_mask_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x58289ce9
+  type_id: 0x1247424a
+  full_name: "pci_msi_mask_irq"
+}
+elf_symbol {
+  id: 0xcb617d2b
+  name: "pci_msi_unmask_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x73c5bf2e
+  type_id: 0x1247424a
+  full_name: "pci_msi_unmask_irq"
+}
+elf_symbol {
+  id: 0x9d3ae050
+  name: "pci_msix_vec_count"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8596cc1f
+  type_id: 0x99f942bc
+  full_name: "pci_msix_vec_count"
+}
+elf_symbol {
+  id: 0x180e6903
+  name: "pci_pio_to_address"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf05fbf09
+  type_id: 0x0d750257
+  full_name: "pci_pio_to_address"
+}
+elf_symbol {
+  id: 0x162de729
+  name: "pci_read_config_byte"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7631422f
+  type_id: 0x92ce2ae7
+  full_name: "pci_read_config_byte"
+}
+elf_symbol {
+  id: 0x5983afac
+  name: "pci_read_config_dword"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x63d0d036
+  type_id: 0x92c02fa2
+  full_name: "pci_read_config_dword"
+}
+elf_symbol {
+  id: 0x8c3e2fab
+  name: "pci_read_config_word"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4bf8662b
+  type_id: 0x92c5abfb
+  full_name: "pci_read_config_word"
+}
+elf_symbol {
+  id: 0xc25fb732
+  name: "pci_release_region"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x717742b7
+  type_id: 0x157d734c
+  full_name: "pci_release_region"
+}
+elf_symbol {
+  id: 0x904aadaf
+  name: "pci_release_regions"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd1832ace
+  type_id: 0x14e1f000
+  full_name: "pci_release_regions"
+}
+elf_symbol {
+  id: 0x5b0002a1
+  name: "pci_release_resource"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x423e8881
+  type_id: 0x157d734c
+  full_name: "pci_release_resource"
+}
+elf_symbol {
+  id: 0x2c8694e0
+  name: "pci_release_selected_regions"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x97e7fd28
+  type_id: 0x157d734c
+  full_name: "pci_release_selected_regions"
+}
+elf_symbol {
+  id: 0xa21a61f0
+  name: "pci_remove_root_bus"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3454a88b
+  type_id: 0x185a3adc
+  full_name: "pci_remove_root_bus"
+}
+elf_symbol {
+  id: 0x324ff23b
+  name: "pci_request_region"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x56b115f6
+  type_id: 0x986a45dd
+  full_name: "pci_request_region"
+}
+elf_symbol {
+  id: 0xde0961b5
+  name: "pci_request_selected_regions"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc218bd90
+  type_id: 0x986a45dd
+  full_name: "pci_request_selected_regions"
+}
+elf_symbol {
+  id: 0x93ed1ac4
+  name: "pci_rescan_bus"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2cdb5aee
+  type_id: 0xc61915b4
+  full_name: "pci_rescan_bus"
+}
+elf_symbol {
+  id: 0xffcee71a
+  name: "pci_reset_function"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa90900f3
+  type_id: 0x99f942bc
+  full_name: "pci_reset_function"
+}
+elf_symbol {
+  id: 0xe61df390
+  name: "pci_resize_resource"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4c0ba38f
+  type_id: 0x987c09c4
+  full_name: "pci_resize_resource"
+}
+elf_symbol {
+  id: 0xd2a1df18
+  name: "pci_restore_msi_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdb97efa0
+  type_id: 0x14e1f000
+  full_name: "pci_restore_msi_state"
+}
+elf_symbol {
+  id: 0x18bfee32
+  name: "pci_restore_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa2f3dd02
+  type_id: 0x14e1f000
+  full_name: "pci_restore_state"
+}
+elf_symbol {
+  id: 0x53d0da35
+  name: "pci_save_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x35ff06ae
+  type_id: 0x99f942bc
+  full_name: "pci_save_state"
+}
+elf_symbol {
+  id: 0x9595d229
+  name: "pci_set_master"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x42c44935
+  type_id: 0x14e1f000
+  full_name: "pci_set_master"
+}
+elf_symbol {
+  id: 0xe770d8d1
+  name: "pci_set_power_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1aa993cd
+  type_id: 0x998196f8
+  full_name: "pci_set_power_state"
+}
+elf_symbol {
+  id: 0xa321b388
+  name: "pci_stop_root_bus"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x940ecd02
+  type_id: 0x185a3adc
+  full_name: "pci_stop_root_bus"
+}
+elf_symbol {
+  id: 0x958eb206
+  name: "pci_store_saved_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaeab3b09
+  type_id: 0x551d3dad
+  full_name: "pci_store_saved_state"
+}
+elf_symbol {
+  id: 0xd0c1e622
+  name: "pci_unlock_rescan_remove"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5790e7a0
+  type_id: 0x10985193
+  full_name: "pci_unlock_rescan_remove"
+}
+elf_symbol {
+  id: 0x1ea7ecbd
+  name: "pci_unmap_rom"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcf39adac
+  type_id: 0x14830594
+  full_name: "pci_unmap_rom"
+}
+elf_symbol {
+  id: 0xe47c4cd7
+  name: "pci_unregister_driver"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x72a75af0
+  type_id: 0x1a0ce609
+  full_name: "pci_unregister_driver"
+}
+elf_symbol {
+  id: 0xa01539e9
+  name: "pci_vfs_assigned"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdeff2152
+  type_id: 0x99f942bc
+  full_name: "pci_vfs_assigned"
+}
+elf_symbol {
+  id: 0x46d93e48
+  name: "pci_wake_from_d3"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x73614e41
+  type_id: 0x984cbfc3
+  full_name: "pci_wake_from_d3"
+}
+elf_symbol {
+  id: 0x0bb33843
+  name: "pci_walk_bus"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x021a9de2
+  type_id: 0x18efced4
+  full_name: "pci_walk_bus"
+}
+elf_symbol {
+  id: 0x6d6403f6
+  name: "pci_write_config_dword"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0b9b2f5c
+  type_id: 0x92fc5924
+  full_name: "pci_write_config_dword"
+}
+elf_symbol {
+  id: 0x52200b18
+  name: "pci_write_config_word"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x339db6e2
+  type_id: 0x92ea4841
+  full_name: "pci_write_config_word"
+}
+elf_symbol {
+  id: 0x0ce26450
+  name: "pcie_bandwidth_available"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb8e5f4f0
+  type_id: 0x41b29569
+  full_name: "pcie_bandwidth_available"
+}
+elf_symbol {
+  id: 0x141fdc1f
+  name: "pcie_capability_clear_and_set_word"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5801c397
+  type_id: 0x9843d7a9
+  full_name: "pcie_capability_clear_and_set_word"
+}
+elf_symbol {
+  id: 0xf1513a2c
+  name: "pcie_capability_read_word"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7dc89a68
+  type_id: 0x986e7125
+  full_name: "pcie_capability_read_word"
+}
+elf_symbol {
+  id: 0x1070f731
+  name: "pcie_capability_write_word"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xccc2a185
+  type_id: 0x9841929f
+  full_name: "pcie_capability_write_word"
+}
+elf_symbol {
+  id: 0xb7c9d0b8
+  name: "pcie_get_mps"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x88b86e78
+  type_id: 0x99f942bc
+  full_name: "pcie_get_mps"
+}
+elf_symbol {
+  id: 0x8897c24a
+  name: "pcie_get_speed_cap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4c075964
+  type_id: 0x2ec04b91
+  full_name: "pcie_get_speed_cap"
+}
+elf_symbol {
+  id: 0xffa3ecd1
+  name: "pcie_set_mps"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6136e248
+  type_id: 0x9865c1f0
+  full_name: "pcie_set_mps"
+}
+elf_symbol {
+  id: 0x42595f98
+  name: "pcim_enable_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf7fdeae2
+  type_id: 0x99f942bc
+  full_name: "pcim_enable_device"
+}
+elf_symbol {
+  id: 0xd085753f
+  name: "pcim_iomap_regions"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x55503281
+  type_id: 0x986a45dd
+  full_name: "pcim_iomap_regions"
+}
+elf_symbol {
+  id: 0xc37c9a74
+  name: "pcim_iomap_table"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdc1a3617
+  type_id: 0x17f60e93
+  full_name: "pcim_iomap_table"
+}
+elf_symbol {
+  id: 0xd03f3f09
+  name: "pcim_iounmap_regions"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x81a7faf4
+  type_id: 0x157d734c
+  full_name: "pcim_iounmap_regions"
+}
+elf_symbol {
+  id: 0x123cd197
+  name: "pcpu_nr_pages"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe7b9a65d
+  type_id: 0x31accd53
+  full_name: "pcpu_nr_pages"
+}
+elf_symbol {
+  id: 0xe57e5e73
+  name: "per_cpu_ptr_to_phys"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x55ffab3b
+  type_id: 0x0787023a
+  full_name: "per_cpu_ptr_to_phys"
+}
+elf_symbol {
+  id: 0x8ba9d028
+  name: "percpu_counter_add_batch"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6b7377d3
+  type_id: 0x12feb005
+  full_name: "percpu_counter_add_batch"
+}
+elf_symbol {
+  id: 0x22f7748e
+  name: "percpu_down_write"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x19ea9b52
+  type_id: 0x14f50ddf
+  full_name: "percpu_down_write"
+}
+elf_symbol {
+  id: 0x12951e5c
+  name: "percpu_free_rwsem"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x950a76c2
+  type_id: 0x14f50ddf
+  full_name: "percpu_free_rwsem"
+}
+elf_symbol {
+  id: 0xe4bc7703
+  name: "percpu_up_write"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5a050973
+  type_id: 0x14f50ddf
+  full_name: "percpu_up_write"
+}
+elf_symbol {
+  id: 0xf9e83d36
+  name: "perf_aux_output_begin"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc6b30be1
+  type_id: 0x5448323c
+  full_name: "perf_aux_output_begin"
+}
+elf_symbol {
+  id: 0x80bebca0
+  name: "perf_aux_output_end"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6a9cf120
+  type_id: 0x12fc3ff3
+  full_name: "perf_aux_output_end"
+}
+elf_symbol {
+  id: 0xe207c73b
+  name: "perf_aux_output_flag"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6eb2d9d0
+  type_id: 0x107966af
+  full_name: "perf_aux_output_flag"
+}
+elf_symbol {
+  id: 0x84bf9f80
+  name: "perf_event_addr_filters_sync"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x38179b01
+  type_id: 0x17ebd264
+  full_name: "perf_event_addr_filters_sync"
+}
+elf_symbol {
+  id: 0xea4938d9
+  name: "perf_event_create_kernel_counter"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xec670350
+  type_id: 0x86d5804d
+  full_name: "perf_event_create_kernel_counter"
+}
+elf_symbol {
+  id: 0xdc02a166
+  name: "perf_event_disable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x122937d6
+  type_id: 0x17ebd264
+  full_name: "perf_event_disable"
+}
+elf_symbol {
+  id: 0x2e5af443
+  name: "perf_event_enable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x365495cb
+  type_id: 0x17ebd264
+  full_name: "perf_event_enable"
+}
+elf_symbol {
+  id: 0x125dc05b
+  name: "perf_event_pause"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3893a7ad
+  type_id: 0x511dadc3
+  full_name: "perf_event_pause"
+}
+elf_symbol {
+  id: 0x5cb257e7
+  name: "perf_event_read_local"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x92d2a53c
+  type_id: 0x9a403d53
+  full_name: "perf_event_read_local"
+}
+elf_symbol {
+  id: 0x51dd09eb
+  name: "perf_event_read_value"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf865847b
+  type_id: 0x501bb554
+  full_name: "perf_event_read_value"
+}
+elf_symbol {
+  id: 0x243b376d
+  name: "perf_event_release_kernel"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8f87c75e
+  type_id: 0x9af360d8
+  full_name: "perf_event_release_kernel"
+}
+elf_symbol {
+  id: 0x793668af
+  name: "perf_event_update_userpage"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xda17a52b
+  type_id: 0x17ebd264
+  full_name: "perf_event_update_userpage"
+}
+elf_symbol {
+  id: 0x1e384c7a
+  name: "perf_get_aux"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xebdfbe50
+  type_id: 0x543f0a03
+  full_name: "perf_get_aux"
+}
+elf_symbol {
+  id: 0x693c5568
+  name: "perf_pmu_migrate_context"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa1cef50f
+  type_id: 0x1fd9a8d3
+  full_name: "perf_pmu_migrate_context"
+}
+elf_symbol {
+  id: 0x1ef72034
+  name: "perf_pmu_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6c4d6bcb
+  type_id: 0x93a5dbf7
+  full_name: "perf_pmu_register"
+}
+elf_symbol {
+  id: 0xc2bb86d6
+  name: "perf_pmu_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0551ee8a
+  type_id: 0x1e5ce3ab
+  full_name: "perf_pmu_unregister"
+}
+elf_symbol {
+  id: 0x1dad348b
+  name: "perf_trace_buf_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2d2c902f
+  type_id: 0x4f7131f0
+  full_name: "perf_trace_buf_alloc"
+}
+elf_symbol {
+  id: 0xd50beffc
+  name: "perf_trace_run_bpf_submit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd1fcd174
+  type_id: 0x1732fd5e
+  full_name: "perf_trace_run_bpf_submit"
+}
+elf_symbol {
+  id: 0xba681a1a
+  name: "pfn_is_map_memory"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6da467cb
+  type_id: 0x915dba0e
+  full_name: "pfn_is_map_memory"
+}
+elf_symbol {
+  id: 0x5fa10488
+  name: "phy_attached_info"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2cbec35d
+  type_id: 0x1cc5f9b2
+  full_name: "phy_attached_info"
+}
+elf_symbol {
+  id: 0x9db95d0c
+  name: "phy_basic_t1_features"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x9f9c7781
+  type_id: 0x607419c2
+  full_name: "phy_basic_t1_features"
+}
+elf_symbol {
+  id: 0x81e2991f
+  name: "phy_calibrate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x824777aa
+  type_id: 0x9f7fc723
+  full_name: "phy_calibrate"
+}
+elf_symbol {
+  id: 0xc278f4fa
+  name: "phy_configure"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x33d3ffa2
+  type_id: 0x9faf6f77
+  full_name: "phy_configure"
+}
+elf_symbol {
+  id: 0x9c15bd7a
+  name: "phy_connect"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x722009c6
+  type_id: 0xbf8f4ed4
+  full_name: "phy_connect"
+}
+elf_symbol {
+  id: 0x5ebc16d0
+  name: "phy_disconnect"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf6666797
+  type_id: 0x1cc5f9b2
+  full_name: "phy_disconnect"
+}
+elf_symbol {
+  id: 0xb39736f6
+  name: "phy_do_ioctl_running"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x27a5d553
+  type_id: 0x91e86e2c
+  full_name: "phy_do_ioctl_running"
+}
+elf_symbol {
+  id: 0x9d35d830
+  name: "phy_drivers_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3b3379dd
+  type_id: 0x9c907da6
+  full_name: "phy_drivers_register"
+}
+elf_symbol {
+  id: 0xf0c151e7
+  name: "phy_drivers_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7fc6f5a5
+  type_id: 0x118a06ed
+  full_name: "phy_drivers_unregister"
+}
+elf_symbol {
+  id: 0xac7ed12e
+  name: "phy_error"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x323b8b1b
+  type_id: 0x1cc5f9b2
+  full_name: "phy_error"
+}
+elf_symbol {
+  id: 0x02d49a4a
+  name: "phy_ethtool_get_eee"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb57b5d86
+  type_id: 0x9143ff1f
+  full_name: "phy_ethtool_get_eee"
+}
+elf_symbol {
+  id: 0xc8a98327
+  name: "phy_ethtool_get_link_ksettings"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8f5b2672
+  type_id: 0x914dbe16
+  full_name: "phy_ethtool_get_link_ksettings"
+}
+elf_symbol {
+  id: 0x1e7f3ab3
+  name: "phy_ethtool_get_wol"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xafd590df
+  type_id: 0x1c416a95
+  full_name: "phy_ethtool_get_wol"
+}
+elf_symbol {
+  id: 0x6a3f9c83
+  name: "phy_ethtool_nway_reset"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x48c1184b
+  type_id: 0x91296bda
+  full_name: "phy_ethtool_nway_reset"
+}
+elf_symbol {
+  id: 0xd75689cb
+  name: "phy_ethtool_set_eee"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x264f1d18
+  type_id: 0x9143ff1f
+  full_name: "phy_ethtool_set_eee"
+}
+elf_symbol {
+  id: 0x992e8b3c
+  name: "phy_ethtool_set_link_ksettings"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x04728e16
+  type_id: 0x91cc9f9b
+  full_name: "phy_ethtool_set_link_ksettings"
+}
+elf_symbol {
+  id: 0xcd9e585e
+  name: "phy_ethtool_set_wol"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x47da9c22
+  type_id: 0x9159d829
+  full_name: "phy_ethtool_set_wol"
+}
+elf_symbol {
+  id: 0x69eeb51b
+  name: "phy_exit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1d4ee8be
+  type_id: 0x9f7fc723
+  full_name: "phy_exit"
+}
+elf_symbol {
+  id: 0x0dfe21ad
+  name: "phy_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2cd44a8b
+  type_id: 0x1154b37f
+  full_name: "phy_get"
+}
+elf_symbol {
+  id: 0x30e87de6
+  name: "phy_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xef7e821f
+  type_id: 0x9f7fc723
+  full_name: "phy_init"
+}
+elf_symbol {
+  id: 0x6fc1e83f
+  name: "phy_init_eee"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdfdacaab
+  type_id: 0x9068b671
+  full_name: "phy_init_eee"
+}
+elf_symbol {
+  id: 0x0e1df21c
+  name: "phy_init_hw"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc023e570
+  type_id: 0x91dd4b0e
+  full_name: "phy_init_hw"
+}
+elf_symbol {
+  id: 0xac520589
+  name: "phy_mac_interrupt"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x27f43e0b
+  type_id: 0x1cc5f9b2
+  full_name: "phy_mac_interrupt"
+}
+elf_symbol {
+  id: 0x2eeef935
+  name: "phy_mii_ioctl"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd5c9bdfb
+  type_id: 0x911c4ef8
+  full_name: "phy_mii_ioctl"
+}
+elf_symbol {
+  id: 0x890d0269
+  name: "phy_mipi_dphy_get_default_config"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4848cfb1
+  type_id: 0x905a52d9
+  full_name: "phy_mipi_dphy_get_default_config"
+}
+elf_symbol {
+  id: 0xa22df476
+  name: "phy_modify"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5b6ae954
+  type_id: 0x92df7dfb
+  full_name: "phy_modify"
+}
+elf_symbol {
+  id: 0x3b5dbc43
+  name: "phy_modify_changed"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x129e63d5
+  type_id: 0x92df7dfb
+  full_name: "phy_modify_changed"
+}
+elf_symbol {
+  id: 0x06367b1f
+  name: "phy_modify_mmd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7d5f88d4
+  type_id: 0x9071eb2d
+  full_name: "phy_modify_mmd"
+}
+elf_symbol {
+  id: 0x90818f05
+  name: "phy_modify_mmd_changed"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa8bb87e1
+  type_id: 0x9071eb2d
+  full_name: "phy_modify_mmd_changed"
+}
+elf_symbol {
+  id: 0x49b0b3dc
+  name: "phy_modify_paged"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1778d24c
+  type_id: 0x9071eb2d
+  full_name: "phy_modify_paged"
+}
+elf_symbol {
+  id: 0xe4264e80
+  name: "phy_modify_paged_changed"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1a50c43e
+  type_id: 0x9071eb2d
+  full_name: "phy_modify_paged_changed"
+}
+elf_symbol {
+  id: 0xb37c1005
+  name: "phy_pm_runtime_get_sync"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfa46674c
+  type_id: 0x9f7fc723
+  full_name: "phy_pm_runtime_get_sync"
+}
+elf_symbol {
+  id: 0x793c34e6
+  name: "phy_pm_runtime_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa1fdb849
+  type_id: 0x9f7fc723
+  full_name: "phy_pm_runtime_put"
+}
+elf_symbol {
+  id: 0xe501016b
+  name: "phy_power_off"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd55b8cdb
+  type_id: 0x9f7fc723
+  full_name: "phy_power_off"
+}
+elf_symbol {
+  id: 0x67bb32d8
+  name: "phy_power_on"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfc66b265
+  type_id: 0x9f7fc723
+  full_name: "phy_power_on"
+}
+elf_symbol {
+  id: 0xccd5125f
+  name: "phy_print_status"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1f2f9e6c
+  type_id: 0x1cc5f9b2
+  full_name: "phy_print_status"
+}
+elf_symbol {
+  id: 0xc7d3f838
+  name: "phy_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x19527b14
+  type_id: 0x10219d88
+  full_name: "phy_put"
+}
+elf_symbol {
+  id: 0x1a84af17
+  name: "phy_read_mmd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8d77951c
+  type_id: 0x90738a48
+  full_name: "phy_read_mmd"
+}
+elf_symbol {
+  id: 0x13b5133e
+  name: "phy_read_paged"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x720da624
+  type_id: 0x90738a48
+  full_name: "phy_read_paged"
+}
+elf_symbol {
+  id: 0x6e21f792
+  name: "phy_remove_link_mode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf2f81652
+  type_id: 0x1fe1d91e
+  full_name: "phy_remove_link_mode"
+}
+elf_symbol {
+  id: 0x4e868331
+  name: "phy_reset"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcd617670
+  type_id: 0x9f7fc723
+  full_name: "phy_reset"
+}
+elf_symbol {
+  id: 0xd306839f
+  name: "phy_reset_after_clk_enable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9bedd078
+  type_id: 0x91dd4b0e
+  full_name: "phy_reset_after_clk_enable"
+}
+elf_symbol {
+  id: 0x8fff831c
+  name: "phy_resolve_aneg_linkmode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd5f2899c
+  type_id: 0x1cc5f9b2
+  full_name: "phy_resolve_aneg_linkmode"
+}
+elf_symbol {
+  id: 0x61290d1f
+  name: "phy_resolve_aneg_pause"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa8e47563
+  type_id: 0x1cc5f9b2
+  full_name: "phy_resolve_aneg_pause"
+}
+elf_symbol {
+  id: 0x409cd326
+  name: "phy_restore_page"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2071d018
+  type_id: 0x90580076
+  full_name: "phy_restore_page"
+}
+elf_symbol {
+  id: 0x0ccd2ae9
+  name: "phy_select_page"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd3a3f65d
+  type_id: 0x9041c842
+  full_name: "phy_select_page"
+}
+elf_symbol {
+  id: 0x14a69275
+  name: "phy_set_max_speed"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x700daaeb
+  type_id: 0x1fe1d91e
+  full_name: "phy_set_max_speed"
+}
+elf_symbol {
+  id: 0x6a86851c
+  name: "phy_set_mode_ext"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x24639d80
+  type_id: 0x9ccae70d
+  full_name: "phy_set_mode_ext"
+}
+elf_symbol {
+  id: 0x9ef66b44
+  name: "phy_set_sym_pause"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcc9f86fe
+  type_id: 0x1d6aeee7
+  full_name: "phy_set_sym_pause"
+}
+elf_symbol {
+  id: 0x61d52d25
+  name: "phy_sfp_attach"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x394a1e11
+  type_id: 0x16b50572
+  full_name: "phy_sfp_attach"
+}
+elf_symbol {
+  id: 0xac255df6
+  name: "phy_sfp_detach"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb6acaa13
+  type_id: 0x16b50572
+  full_name: "phy_sfp_detach"
+}
+elf_symbol {
+  id: 0xe1cb7751
+  name: "phy_sfp_probe"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6d414d50
+  type_id: 0x9109cd4f
+  full_name: "phy_sfp_probe"
+}
+elf_symbol {
+  id: 0x6e315775
+  name: "phy_start"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6437d5ef
+  type_id: 0x1cc5f9b2
+  full_name: "phy_start"
+}
+elf_symbol {
+  id: 0x10d51eda
+  name: "phy_start_aneg"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd1def3dd
+  type_id: 0x91dd4b0e
+  full_name: "phy_start_aneg"
+}
+elf_symbol {
+  id: 0x7a9c49cb
+  name: "phy_stop"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x535c4112
+  type_id: 0x1cc5f9b2
+  full_name: "phy_stop"
+}
+elf_symbol {
+  id: 0xf1503ace
+  name: "phy_support_sym_pause"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfeed8142
+  type_id: 0x1cc5f9b2
+  full_name: "phy_support_sym_pause"
+}
+elf_symbol {
+  id: 0x2c0117f0
+  name: "phy_suspend"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x59e2fe57
+  type_id: 0x91dd4b0e
+  full_name: "phy_suspend"
+}
+elf_symbol {
+  id: 0xa3314c5c
+  name: "phy_trigger_machine"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7a84fa9c
+  type_id: 0x1cc5f9b2
+  full_name: "phy_trigger_machine"
+}
+elf_symbol {
+  id: 0xe7bafb12
+  name: "phy_validate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa9f068c3
+  type_id: 0x9cca37a5
+  full_name: "phy_validate"
+}
+elf_symbol {
+  id: 0x32988703
+  name: "phy_write_mmd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf69f9971
+  type_id: 0x9071cf7e
+  full_name: "phy_write_mmd"
+}
+elf_symbol {
+  id: 0x39bc463d
+  name: "phy_write_paged"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc24d4e85
+  type_id: 0x9071cf7e
+  full_name: "phy_write_paged"
+}
+elf_symbol {
+  id: 0xe8c3a46c
+  name: "phylink_connect_phy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8499b592
+  type_id: 0x92ed801d
+  full_name: "phylink_connect_phy"
+}
+elf_symbol {
+  id: 0x92ad6653
+  name: "phylink_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbf6f5524
+  type_id: 0xe2c8401b
+  full_name: "phylink_create"
+}
+elf_symbol {
+  id: 0x765567f1
+  name: "phylink_destroy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf3083a1d
+  type_id: 0x1f30e823
+  full_name: "phylink_destroy"
+}
+elf_symbol {
+  id: 0x67cab613
+  name: "phylink_disconnect_phy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x983276da
+  type_id: 0x1f30e823
+  full_name: "phylink_disconnect_phy"
+}
+elf_symbol {
+  id: 0xe7b7f01e
+  name: "phylink_ethtool_get_eee"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2c8e28ee
+  type_id: 0x92b6ee8e
+  full_name: "phylink_ethtool_get_eee"
+}
+elf_symbol {
+  id: 0xdff4358e
+  name: "phylink_ethtool_get_pauseparam"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf8fe5642
+  type_id: 0x1f458cf4
+  full_name: "phylink_ethtool_get_pauseparam"
+}
+elf_symbol {
+  id: 0x21353f4f
+  name: "phylink_ethtool_get_wol"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x08213956
+  type_id: 0x1fb47b04
+  full_name: "phylink_ethtool_get_wol"
+}
+elf_symbol {
+  id: 0xdcbb9215
+  name: "phylink_ethtool_ksettings_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc430fe5f
+  type_id: 0x924c8f53
+  full_name: "phylink_ethtool_ksettings_get"
+}
+elf_symbol {
+  id: 0x2447e16e
+  name: "phylink_ethtool_ksettings_set"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6ee0efb4
+  type_id: 0x92cdaede
+  full_name: "phylink_ethtool_ksettings_set"
+}
+elf_symbol {
+  id: 0xad90b9ef
+  name: "phylink_ethtool_nway_reset"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6fa426d2
+  type_id: 0x92285a9f
+  full_name: "phylink_ethtool_nway_reset"
+}
+elf_symbol {
+  id: 0xeab149af
+  name: "phylink_ethtool_set_eee"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x57727285
+  type_id: 0x92b6ee8e
+  full_name: "phylink_ethtool_set_eee"
+}
+elf_symbol {
+  id: 0x0a235dd5
+  name: "phylink_ethtool_set_pauseparam"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x15c4e3e2
+  type_id: 0x925d3e48
+  full_name: "phylink_ethtool_set_pauseparam"
+}
+elf_symbol {
+  id: 0xa92902da
+  name: "phylink_ethtool_set_wol"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x62104126
+  type_id: 0x92acc9b8
+  full_name: "phylink_ethtool_set_wol"
+}
+elf_symbol {
+  id: 0x2c092465
+  name: "phylink_fwnode_phy_connect"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa593752f
+  type_id: 0x92085a78
+  full_name: "phylink_fwnode_phy_connect"
+}
+elf_symbol {
+  id: 0x161b2b54
+  name: "phylink_generic_validate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfba18256
+  type_id: 0x1dc83ab4
+  full_name: "phylink_generic_validate"
+}
+elf_symbol {
+  id: 0x707a35cb
+  name: "phylink_get_eee_err"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x825c7340
+  type_id: 0x92285a9f
+  full_name: "phylink_get_eee_err"
+}
+elf_symbol {
+  id: 0xbb500a73
+  name: "phylink_mac_change"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x12135396
+  type_id: 0x1e85155c
+  full_name: "phylink_mac_change"
+}
+elf_symbol {
+  id: 0x9a68c1f7
+  name: "phylink_mii_c22_pcs_decode_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x153a08b1
+  type_id: 0x1d8e3ba7
+  full_name: "phylink_mii_c22_pcs_decode_state"
+}
+elf_symbol {
+  id: 0x70790afa
+  name: "phylink_mii_c22_pcs_encode_advertisement"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5dc19747
+  type_id: 0xa6c13544
+  full_name: "phylink_mii_c22_pcs_encode_advertisement"
+}
+elf_symbol {
+  id: 0x726f15c1
+  name: "phylink_mii_ioctl"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa5b34e9b
+  type_id: 0x92e95f69
+  full_name: "phylink_mii_ioctl"
+}
+elf_symbol {
+  id: 0x6db2cfc5
+  name: "phylink_of_phy_connect"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc5b3292e
+  type_id: 0x92cbd49b
+  full_name: "phylink_of_phy_connect"
+}
+elf_symbol {
+  id: 0x5364e8c5
+  name: "phylink_resume"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc0a8f4be
+  type_id: 0x1f30e823
+  full_name: "phylink_resume"
+}
+elf_symbol {
+  id: 0x2c2de021
+  name: "phylink_set_port_modes"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc1d15a4c
+  type_id: 0x110b09b2
+  full_name: "phylink_set_port_modes"
+}
+elf_symbol {
+  id: 0x73eeb559
+  name: "phylink_speed_down"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x59e0695d
+  type_id: 0x939da7e0
+  full_name: "phylink_speed_down"
+}
+elf_symbol {
+  id: 0xe3713e89
+  name: "phylink_speed_up"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5d0c4dcc
+  type_id: 0x92285a9f
+  full_name: "phylink_speed_up"
+}
+elf_symbol {
+  id: 0x69dcbd79
+  name: "phylink_start"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x911fcd6c
+  type_id: 0x1f30e823
+  full_name: "phylink_start"
+}
+elf_symbol {
+  id: 0x14fb1d7f
+  name: "phylink_stop"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdcb0a2c0
+  type_id: 0x1f30e823
+  full_name: "phylink_stop"
+}
+elf_symbol {
+  id: 0xae5a377c
+  name: "phylink_suspend"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x16ca1a8a
+  type_id: 0x1e85155c
+  full_name: "phylink_suspend"
+}
+elf_symbol {
+  id: 0xfa197680
+  name: "pick_highest_pushable_task"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x91e3e588
+  type_id: 0x7151826e
+  full_name: "pick_highest_pushable_task"
+}
+elf_symbol {
+  id: 0x4ef078c0
+  name: "pick_migrate_task"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8549348b
+  type_id: 0x70cd0122
+  full_name: "pick_migrate_task"
+}
+elf_symbol {
+  id: 0x634946e6
+  name: "pid_nr_ns"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6e76f179
+  type_id: 0xd6b27f6b
+  full_name: "pid_nr_ns"
+}
+elf_symbol {
+  id: 0x0c0b5c37
+  name: "pid_task"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x564f2dac
+  type_id: 0x7f0f4bf3
+  full_name: "pid_task"
+}
+elf_symbol {
+  id: 0x2f08ffc6
+  name: "pin_get_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe853ab2a
+  type_id: 0x95876807
+  full_name: "pin_get_name"
+}
+elf_symbol {
+  id: 0xbe1a0b7f
+  name: "pin_user_pages"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd54ac0d7
+  type_id: 0xab21f8b5
+  full_name: "pin_user_pages"
+}
+elf_symbol {
+  id: 0x6fa67e06
+  name: "pin_user_pages_fast"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x021e1d7f
+  type_id: 0x90d074d8
+  full_name: "pin_user_pages_fast"
+}
+elf_symbol {
+  id: 0x1114603a
+  name: "pin_user_pages_remote"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5bc7a0cf
+  type_id: 0xa12d9647
+  full_name: "pin_user_pages_remote"
+}
+elf_symbol {
+  id: 0xbebe3d2e
+  name: "pinconf_generic_dt_free_map"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x74411aa6
+  type_id: 0x168f342d
+  full_name: "pinconf_generic_dt_free_map"
+}
+elf_symbol {
+  id: 0x56ffdefe
+  name: "pinconf_generic_dt_node_to_map"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7a95aa9a
+  type_id: 0x9b85c911
+  full_name: "pinconf_generic_dt_node_to_map"
+}
+elf_symbol {
+  id: 0xd6e8532d
+  name: "pinconf_generic_parse_dt_config"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd8214267
+  type_id: 0x90f3da7c
+  full_name: "pinconf_generic_parse_dt_config"
+}
+elf_symbol {
+  id: 0x9df74c73
+  name: "pinctrl_add_gpio_range"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb948b102
+  type_id: 0x165d386a
+  full_name: "pinctrl_add_gpio_range"
+}
+elf_symbol {
+  id: 0x740c134e
+  name: "pinctrl_dev_get_drvdata"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7797518d
+  type_id: 0x5043dbcd
+  full_name: "pinctrl_dev_get_drvdata"
+}
+elf_symbol {
+  id: 0xacd66e9e
+  name: "pinctrl_enable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x97e63aad
+  type_id: 0x9b558913
+  full_name: "pinctrl_enable"
+}
+elf_symbol {
+  id: 0xf8bcc2db
+  name: "pinctrl_force_default"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x323dc117
+  type_id: 0x9b558913
+  full_name: "pinctrl_force_default"
+}
+elf_symbol {
+  id: 0x3f5b9269
+  name: "pinctrl_force_sleep"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x15f808e5
+  type_id: 0x9b558913
+  full_name: "pinctrl_force_sleep"
+}
+elf_symbol {
+  id: 0xdfa2e68a
+  name: "pinctrl_generic_add_group"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5b03edd4
+  type_id: 0x9ba88768
+  full_name: "pinctrl_generic_add_group"
+}
+elf_symbol {
+  id: 0x17806848
+  name: "pinctrl_generic_get_group"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe26a8267
+  type_id: 0xa3b4b1d5
+  full_name: "pinctrl_generic_get_group"
+}
+elf_symbol {
+  id: 0x86c3082b
+  name: "pinctrl_generic_get_group_count"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd33ef8b7
+  type_id: 0x9b558913
+  full_name: "pinctrl_generic_get_group_count"
+}
+elf_symbol {
+  id: 0x0fdc5a85
+  name: "pinctrl_generic_get_group_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x62c281a7
+  type_id: 0x95876807
+  full_name: "pinctrl_generic_get_group_name"
+}
+elf_symbol {
+  id: 0x3ce6f576
+  name: "pinctrl_generic_get_group_pins"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x53b181fe
+  type_id: 0x9a42cb81
+  full_name: "pinctrl_generic_get_group_pins"
+}
+elf_symbol {
+  id: 0xc93168f3
+  name: "pinctrl_generic_remove_group"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8eb2961d
+  type_id: 0x9a439c8b
+  full_name: "pinctrl_generic_remove_group"
+}
+elf_symbol {
+  id: 0x761cec78
+  name: "pinctrl_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xea0b1d4d
+  type_id: 0x4df5d8bb
+  full_name: "pinctrl_get"
+}
+elf_symbol {
+  id: 0x0707a7ce
+  name: "pinctrl_gpio_direction_input"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1bc5eebe
+  type_id: 0x8ce1baa0
+  full_name: "pinctrl_gpio_direction_input"
+}
+elf_symbol {
+  id: 0x470ca027
+  name: "pinctrl_gpio_direction_output"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1b8822d8
+  type_id: 0x8ce1baa0
+  full_name: "pinctrl_gpio_direction_output"
+}
+elf_symbol {
+  id: 0x173c6399
+  name: "pinctrl_lookup_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfcab557c
+  type_id: 0x89d1e10c
+  full_name: "pinctrl_lookup_state"
+}
+elf_symbol {
+  id: 0xecd5c994
+  name: "pinctrl_pm_select_default_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1fea7275
+  type_id: 0x9d16dd74
+  full_name: "pinctrl_pm_select_default_state"
+}
+elf_symbol {
+  id: 0xf439020c
+  name: "pinctrl_pm_select_idle_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3418f5dc
+  type_id: 0x9d16dd74
+  full_name: "pinctrl_pm_select_idle_state"
+}
+elf_symbol {
+  id: 0xd1503081
+  name: "pinctrl_pm_select_sleep_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x099f3df5
+  type_id: 0x9d16dd74
+  full_name: "pinctrl_pm_select_sleep_state"
+}
+elf_symbol {
+  id: 0x689f5b8d
+  name: "pinctrl_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe0cfba25
+  type_id: 0x1ad9d0a2
+  full_name: "pinctrl_put"
+}
+elf_symbol {
+  id: 0x287a4dba
+  name: "pinctrl_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5f26886e
+  type_id: 0xe0acd7ca
+  full_name: "pinctrl_register"
+}
+elf_symbol {
+  id: 0xba770aa5
+  name: "pinctrl_remove_gpio_range"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x440cac8e
+  type_id: 0x165d386a
+  full_name: "pinctrl_remove_gpio_range"
+}
+elf_symbol {
+  id: 0x7c38f5dc
+  name: "pinctrl_select_default_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x41f7d4a0
+  type_id: 0x9d16dd74
+  full_name: "pinctrl_select_default_state"
+}
+elf_symbol {
+  id: 0x0c39a57f
+  name: "pinctrl_select_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x92ee9662
+  type_id: 0x97287db7
+  full_name: "pinctrl_select_state"
+}
+elf_symbol {
+  id: 0x6c300812
+  name: "pinctrl_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd773d0eb
+  type_id: 0x164d3baf
+  full_name: "pinctrl_unregister"
+}
+elf_symbol {
+  id: 0x8370f127
+  name: "pinctrl_utils_add_map_configs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaaf51727
+  type_id: 0x9b4d8e52
+  full_name: "pinctrl_utils_add_map_configs"
+}
+elf_symbol {
+  id: 0xe59b51ac
+  name: "pinctrl_utils_add_map_mux"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9c0cdc90
+  type_id: 0x9b4d8ea2
+  full_name: "pinctrl_utils_add_map_mux"
+}
+elf_symbol {
+  id: 0x82feb89e
+  name: "pinctrl_utils_free_map"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb0881018
+  type_id: 0x168f342d
+  full_name: "pinctrl_utils_free_map"
+}
+elf_symbol {
+  id: 0x417866a8
+  name: "pinctrl_utils_reserve_map"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcd28a368
+  type_id: 0x9b4d90bf
+  full_name: "pinctrl_utils_reserve_map"
+}
+elf_symbol {
+  id: 0x013abbf5
+  name: "pinmux_generic_get_function"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x97d75c7c
+  type_id: 0xf25e7c51
+  full_name: "pinmux_generic_get_function"
+}
+elf_symbol {
+  id: 0x9542ffda
+  name: "pinmux_generic_get_function_count"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x86de50c2
+  type_id: 0x9b558913
+  full_name: "pinmux_generic_get_function_count"
+}
+elf_symbol {
+  id: 0xb1ded749
+  name: "pinmux_generic_get_function_groups"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8def8b27
+  type_id: 0x9a42b014
+  full_name: "pinmux_generic_get_function_groups"
+}
+elf_symbol {
+  id: 0xf131e6d4
+  name: "pinmux_generic_get_function_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x31bbe4f4
+  type_id: 0x95876807
+  full_name: "pinmux_generic_get_function_name"
+}
+elf_symbol {
+  id: 0x50cfaca0
+  name: "pipe_lock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x20578b78
+  type_id: 0x1256dc52
+  full_name: "pipe_lock"
+}
+elf_symbol {
+  id: 0xf5634793
+  name: "pipe_unlock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7baf2f90
+  type_id: 0x1256dc52
+  full_name: "pipe_unlock"
+}
+elf_symbol {
+  id: 0xac156dd0
+  name: "pktgen_xfrm_outer_mode_output"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x72b73c41
+  type_id: 0x9cd82046
+  full_name: "pktgen_xfrm_outer_mode_output"
+}
+elf_symbol {
+  id: 0x9e86d87a
+  name: "pkvm_iommu_driver_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf04a072e
+  type_id: 0xb957d705
+  full_name: "pkvm_iommu_driver_init"
+}
+elf_symbol {
+  id: 0x6f7172e0
+  name: "pkvm_iommu_finalize"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbc2fdabc
+  type_id: 0x8448d7e4
+  full_name: "pkvm_iommu_finalize"
+}
+elf_symbol {
+  id: 0xa74e4e73
+  name: "pkvm_iommu_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd5bbc0c0
+  type_id: 0x9f72f53e
+  full_name: "pkvm_iommu_register"
+}
+elf_symbol {
+  id: 0x508c3717
+  name: "pkvm_iommu_resume"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdf6d9785
+  type_id: 0x9d16dd74
+  full_name: "pkvm_iommu_resume"
+}
+elf_symbol {
+  id: 0xe5abcddf
+  name: "pkvm_iommu_suspend"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaaab79fa
+  type_id: 0x9d16dd74
+  full_name: "pkvm_iommu_suspend"
+}
+elf_symbol {
+  id: 0xb30e2978
+  name: "platform_bus"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x25f1627e
+  type_id: 0x23230326
+  full_name: "platform_bus"
+}
+elf_symbol {
+  id: 0x49cc7bc6
+  name: "platform_bus_type"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xdede9e3e
+  type_id: 0x257935aa
+  full_name: "platform_bus_type"
+}
+elf_symbol {
+  id: 0x13a3a596
+  name: "platform_device_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd65fc9c9
+  type_id: 0x924d155a
+  full_name: "platform_device_add"
+}
+elf_symbol {
+  id: 0xdc17958b
+  name: "platform_device_add_data"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x255548c6
+  type_id: 0x92946457
+  full_name: "platform_device_add_data"
+}
+elf_symbol {
+  id: 0x80062cae
+  name: "platform_device_add_resources"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x268de1a1
+  type_id: 0x929bf9d1
+  full_name: "platform_device_add_resources"
+}
+elf_symbol {
+  id: 0x420bc618
+  name: "platform_device_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1e3487b9
+  type_id: 0xc748ecf5
+  full_name: "platform_device_alloc"
+}
+elf_symbol {
+  id: 0x47a664c6
+  name: "platform_device_del"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf77b593f
+  type_id: 0x1f55a7e6
+  full_name: "platform_device_del"
+}
+elf_symbol {
+  id: 0x01428af9
+  name: "platform_device_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x76627f7f
+  type_id: 0x1f55a7e6
+  full_name: "platform_device_put"
+}
+elf_symbol {
+  id: 0xb323415e
+  name: "platform_device_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcd3900b0
+  type_id: 0x924d155a
+  full_name: "platform_device_register"
+}
+elf_symbol {
+  id: 0xf8f6df36
+  name: "platform_device_register_full"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa1170196
+  type_id: 0xc5663ffe
+  full_name: "platform_device_register_full"
+}
+elf_symbol {
+  id: 0xe8ed13a6
+  name: "platform_device_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcaaae4ca
+  type_id: 0x1f55a7e6
+  full_name: "platform_device_unregister"
+}
+elf_symbol {
+  id: 0x2c91b5be
+  name: "platform_driver_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe1b15563
+  type_id: 0x1654b7a0
+  full_name: "platform_driver_unregister"
+}
+elf_symbol {
+  id: 0xf8b12136
+  name: "platform_find_device_by_driver"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9dcf7ea0
+  type_id: 0xad77a8f0
+  full_name: "platform_find_device_by_driver"
+}
+elf_symbol {
+  id: 0xb11c92aa
+  name: "platform_get_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6e4e69eb
+  type_id: 0x935b00c2
+  full_name: "platform_get_irq"
+}
+elf_symbol {
+  id: 0xaa322a74
+  name: "platform_get_irq_byname"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7923336f
+  type_id: 0x92b5578e
+  full_name: "platform_get_irq_byname"
+}
+elf_symbol {
+  id: 0x0d9f5d07
+  name: "platform_get_irq_byname_optional"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0fa61621
+  type_id: 0x92b5578e
+  full_name: "platform_get_irq_byname_optional"
+}
+elf_symbol {
+  id: 0x864eb34f
+  name: "platform_get_irq_optional"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd50c7c98
+  type_id: 0x935b00c2
+  full_name: "platform_get_irq_optional"
+}
+elf_symbol {
+  id: 0xb7a7a808
+  name: "platform_get_resource"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdf05713c
+  type_id: 0xcf28148d
+  full_name: "platform_get_resource"
+}
+elf_symbol {
+  id: 0x160949a1
+  name: "platform_get_resource_byname"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbce59abf
+  type_id: 0xcf36f1f9
+  full_name: "platform_get_resource_byname"
+}
+elf_symbol {
+  id: 0xf5e8f5ed
+  name: "platform_irq_count"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5bdb31a2
+  type_id: 0x924d155a
+  full_name: "platform_irq_count"
+}
+elf_symbol {
+  id: 0xa10f5ac7
+  name: "platform_irqchip_probe"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x986c8df4
+  type_id: 0x924d155a
+  full_name: "platform_irqchip_probe"
+}
+elf_symbol {
+  id: 0x5b48ee3a
+  name: "platform_msi_create_irq_domain"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x430eea3c
+  type_id: 0x5e4ba6ce
+  full_name: "platform_msi_create_irq_domain"
+}
+elf_symbol {
+  id: 0xdea8ab93
+  name: "platform_msi_domain_alloc_irqs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4fe5172c
+  type_id: 0x9c3052e3
+  full_name: "platform_msi_domain_alloc_irqs"
+}
+elf_symbol {
+  id: 0x55fd0d76
+  name: "platform_msi_domain_free_irqs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x45cd5993
+  type_id: 0x100e6fc8
+  full_name: "platform_msi_domain_free_irqs"
+}
+elf_symbol {
+  id: 0x25e7db1a
+  name: "platform_unregister_drivers"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xebe20459
+  type_id: 0x1e879adb
+  full_name: "platform_unregister_drivers"
+}
+elf_symbol {
+  id: 0xb634bd54
+  name: "pm_clk_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf7d00ddf
+  type_id: 0x9dee9fa0
+  full_name: "pm_clk_add"
+}
+elf_symbol {
+  id: 0xaba73bf2
+  name: "pm_clk_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x668c0f9f
+  type_id: 0x9d16dd74
+  full_name: "pm_clk_create"
+}
+elf_symbol {
+  id: 0xa2a45fe2
+  name: "pm_clk_destroy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7b3421b2
+  type_id: 0x100e6fc8
+  full_name: "pm_clk_destroy"
+}
+elf_symbol {
+  id: 0xe8ce7aa9
+  name: "pm_clk_resume"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1d05688d
+  type_id: 0x9d16dd74
+  full_name: "pm_clk_resume"
+}
+elf_symbol {
+  id: 0xe1b4680c
+  name: "pm_clk_suspend"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4c365942
+  type_id: 0x9d16dd74
+  full_name: "pm_clk_suspend"
+}
+elf_symbol {
+  id: 0xe243fac9
+  name: "pm_generic_resume"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa7ee18bd
+  type_id: 0x9d16dd74
+  full_name: "pm_generic_resume"
+}
+elf_symbol {
+  id: 0xf140b7ff
+  name: "pm_generic_runtime_resume"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x604f75ad
+  type_id: 0x9d16dd74
+  full_name: "pm_generic_runtime_resume"
+}
+elf_symbol {
+  id: 0x2e17e257
+  name: "pm_generic_runtime_suspend"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5088a28d
+  type_id: 0x9d16dd74
+  full_name: "pm_generic_runtime_suspend"
+}
+elf_symbol {
+  id: 0xb89cc5d0
+  name: "pm_generic_suspend"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4df81384
+  type_id: 0x9d16dd74
+  full_name: "pm_generic_suspend"
+}
+elf_symbol {
+  id: 0x92ae3cd2
+  name: "pm_genpd_add_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb770126c
+  type_id: 0x9c2d8704
+  full_name: "pm_genpd_add_device"
+}
+elf_symbol {
+  id: 0x8dbf40f1
+  name: "pm_genpd_add_subdomain"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe27d9b2f
+  type_id: 0x9c3ea49d
+  full_name: "pm_genpd_add_subdomain"
+}
+elf_symbol {
+  id: 0x80c5af01
+  name: "pm_genpd_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x299e6b06
+  type_id: 0x9c571eea
+  full_name: "pm_genpd_init"
+}
+elf_symbol {
+  id: 0xd2ecbea7
+  name: "pm_genpd_remove"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe5dc49f5
+  type_id: 0x9c24e4e1
+  full_name: "pm_genpd_remove"
+}
+elf_symbol {
+  id: 0x8153c982
+  name: "pm_genpd_remove_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0a9933c2
+  type_id: 0x9d16dd74
+  full_name: "pm_genpd_remove_device"
+}
+elf_symbol {
+  id: 0x14190014
+  name: "pm_genpd_remove_subdomain"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6796fd86
+  type_id: 0x9c3ea49d
+  full_name: "pm_genpd_remove_subdomain"
+}
+elf_symbol {
+  id: 0xa0afbf37
+  name: "pm_get_active_wakeup_sources"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3a8edb31
+  type_id: 0x12687d8c
+  full_name: "pm_get_active_wakeup_sources"
+}
+elf_symbol {
+  id: 0xc779d1cf
+  name: "pm_power_off"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x60a32ea9
+  type_id: 0x0eb62dc3
+  full_name: "pm_power_off"
+}
+elf_symbol {
+  id: 0xe2cb1aad
+  name: "pm_relax"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf28b90d8
+  type_id: 0x100e6fc8
+  full_name: "pm_relax"
+}
+elf_symbol {
+  id: 0x3fc75673
+  name: "pm_runtime_allow"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfeb3fe8a
+  type_id: 0x100e6fc8
+  full_name: "pm_runtime_allow"
+}
+elf_symbol {
+  id: 0x14d7bd08
+  name: "pm_runtime_autosuspend_expiration"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x355a98c0
+  type_id: 0x574ded10
+  full_name: "pm_runtime_autosuspend_expiration"
+}
+elf_symbol {
+  id: 0x8a5e5384
+  name: "pm_runtime_barrier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcbcc8eb9
+  type_id: 0x9d16dd74
+  full_name: "pm_runtime_barrier"
+}
+elf_symbol {
+  id: 0x4139dc1a
+  name: "pm_runtime_enable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6a902ced
+  type_id: 0x100e6fc8
+  full_name: "pm_runtime_enable"
+}
+elf_symbol {
+  id: 0x15bd9b54
+  name: "pm_runtime_forbid"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x19ad42e8
+  type_id: 0x100e6fc8
+  full_name: "pm_runtime_forbid"
+}
+elf_symbol {
+  id: 0x25ae3e5f
+  name: "pm_runtime_force_resume"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc4585928
+  type_id: 0x9d16dd74
+  full_name: "pm_runtime_force_resume"
+}
+elf_symbol {
+  id: 0x80df38ea
+  name: "pm_runtime_force_suspend"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe47cf318
+  type_id: 0x9d16dd74
+  full_name: "pm_runtime_force_suspend"
+}
+elf_symbol {
+  id: 0x322949f1
+  name: "pm_runtime_get_if_active"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5be6bfd3
+  type_id: 0x9ca3200b
+  full_name: "pm_runtime_get_if_active"
+}
+elf_symbol {
+  id: 0x878b97bb
+  name: "pm_runtime_irq_safe"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x541a80cc
+  type_id: 0x100e6fc8
+  full_name: "pm_runtime_irq_safe"
+}
+elf_symbol {
+  id: 0x1f3f17bd
+  name: "pm_runtime_no_callbacks"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeff567e5
+  type_id: 0x100e6fc8
+  full_name: "pm_runtime_no_callbacks"
+}
+elf_symbol {
+  id: 0x53f4166f
+  name: "pm_runtime_set_autosuspend_delay"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd84b8cdb
+  type_id: 0x1192ec84
+  full_name: "pm_runtime_set_autosuspend_delay"
+}
+elf_symbol {
+  id: 0x59caaeac
+  name: "pm_stay_awake"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe088ef99
+  type_id: 0x100e6fc8
+  full_name: "pm_stay_awake"
+}
+elf_symbol {
+  id: 0x64f92138
+  name: "pm_suspend_default_s2idle"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9b555c8c
+  type_id: 0xfea45b04
+  full_name: "pm_suspend_default_s2idle"
+}
+elf_symbol {
+  id: 0x2e13b831
+  name: "pm_suspend_target_state"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x377bbcbc
+  type_id: 0xba5444a6
+  full_name: "pm_suspend_target_state"
+}
+elf_symbol {
+  id: 0x57ba6430
+  name: "pm_system_wakeup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8c0215f2
+  type_id: 0x10985193
+  full_name: "pm_system_wakeup"
+}
+elf_symbol {
+  id: 0x131272a2
+  name: "pm_wakeup_dev_event"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2fc1eba5
+  type_id: 0x11032587
+  full_name: "pm_wakeup_dev_event"
+}
+elf_symbol {
+  id: 0x58b605c8
+  name: "pm_wakeup_ws_event"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x43b33a8d
+  type_id: 0x112fdfca
+  full_name: "pm_wakeup_ws_event"
+}
+elf_symbol {
+  id: 0xf06ef566
+  name: "pm_wq"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x7d59dd46
+  type_id: 0x13f8b706
+  full_name: "pm_wq"
+}
+elf_symbol {
+  id: 0x3020cd17
+  name: "policy_has_boost_freq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4878dc7b
+  type_id: 0xfec3d248
+  full_name: "policy_has_boost_freq"
+}
+elf_symbol {
+  id: 0x25c6452e
+  name: "poll_state_synchronize_rcu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x442deaa9
+  type_id: 0xf2790225
+  full_name: "poll_state_synchronize_rcu"
+}
+elf_symbol {
+  id: 0x324d8228
+  name: "poll_state_synchronize_srcu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0fe8bcf3
+  type_id: 0xf68b6f5e
+  full_name: "poll_state_synchronize_srcu"
+}
+elf_symbol {
+  id: 0xd612789c
+  name: "power_supply_am_i_supplied"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe20b3db3
+  type_id: 0x9b85a048
+  full_name: "power_supply_am_i_supplied"
+}
+elf_symbol {
+  id: 0x561323f1
+  name: "power_supply_changed"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdf24b749
+  type_id: 0x169d12f4
+  full_name: "power_supply_changed"
+}
+elf_symbol {
+  id: 0xa9ebbb66
+  name: "power_supply_find_ocv2cap_table"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb01b805a
+  type_id: 0xd450aa9d
+  full_name: "power_supply_find_ocv2cap_table"
+}
+elf_symbol {
+  id: 0x2f21ba25
+  name: "power_supply_get_battery_info"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd38012fa
+  type_id: 0x9b9f45c1
+  full_name: "power_supply_get_battery_info"
+}
+elf_symbol {
+  id: 0x81c5befa
+  name: "power_supply_get_by_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x60e98d99
+  type_id: 0x347afa45
+  full_name: "power_supply_get_by_name"
+}
+elf_symbol {
+  id: 0x17e91481
+  name: "power_supply_get_by_phandle"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x38758b0d
+  type_id: 0x361a553a
+  full_name: "power_supply_get_by_phandle"
+}
+elf_symbol {
+  id: 0xd1691fe4
+  name: "power_supply_get_by_phandle_array"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9f0f4a03
+  type_id: 0x9064137a
+  full_name: "power_supply_get_by_phandle_array"
+}
+elf_symbol {
+  id: 0x4804f611
+  name: "power_supply_get_drvdata"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcf81c81f
+  type_id: 0x5093f296
+  full_name: "power_supply_get_drvdata"
+}
+elf_symbol {
+  id: 0x842fc505
+  name: "power_supply_get_property"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd351924c
+  type_id: 0x9ba3144f
+  full_name: "power_supply_get_property"
+}
+elf_symbol {
+  id: 0xd28bb85a
+  name: "power_supply_is_system_supplied"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2c208607
+  type_id: 0x9d80e32f
+  full_name: "power_supply_is_system_supplied"
+}
+elf_symbol {
+  id: 0x9e62b4cc
+  name: "power_supply_ocv2cap_simple"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5cad8fc3
+  type_id: 0x98aba01a
+  full_name: "power_supply_ocv2cap_simple"
+}
+elf_symbol {
+  id: 0x26c5a1b9
+  name: "power_supply_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5d2d21f4
+  type_id: 0x169d12f4
+  full_name: "power_supply_put"
+}
+elf_symbol {
+  id: 0xdb34fc88
+  name: "power_supply_put_battery_info"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2dc510de
+  type_id: 0x165f874a
+  full_name: "power_supply_put_battery_info"
+}
+elf_symbol {
+  id: 0xb0eab20a
+  name: "power_supply_reg_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x136209db
+  type_id: 0x9b6d4a33
+  full_name: "power_supply_reg_notifier"
+}
+elf_symbol {
+  id: 0x8229d43c
+  name: "power_supply_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3a0d6aeb
+  type_id: 0x3bb8868a
+  full_name: "power_supply_register"
+}
+elf_symbol {
+  id: 0xa3012e88
+  name: "power_supply_set_property"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x54344be5
+  type_id: 0x9bad5a77
+  full_name: "power_supply_set_property"
+}
+elf_symbol {
+  id: 0x8900d981
+  name: "power_supply_temp2resist_simple"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2b6150fb
+  type_id: 0x9ae1bda5
+  full_name: "power_supply_temp2resist_simple"
+}
+elf_symbol {
+  id: 0x9d05e78b
+  name: "power_supply_unreg_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6b81c38b
+  type_id: 0x1675f88f
+  full_name: "power_supply_unreg_notifier"
+}
+elf_symbol {
+  id: 0x8a65993b
+  name: "power_supply_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x931aa919
+  type_id: 0x169d12f4
+  full_name: "power_supply_unregister"
+}
+elf_symbol {
+  id: 0x1a646dda
+  name: "ppp_channel_index"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x327e4f33
+  type_id: 0x99a901c1
+  full_name: "ppp_channel_index"
+}
+elf_symbol {
+  id: 0x52651755
+  name: "ppp_dev_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2a0f447d
+  type_id: 0x3a17e325
+  full_name: "ppp_dev_name"
+}
+elf_symbol {
+  id: 0x3987d121
+  name: "ppp_input"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5718e0ba
+  type_id: 0x14a48ed9
+  full_name: "ppp_input"
+}
+elf_symbol {
+  id: 0x608fa528
+  name: "ppp_input_error"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbdaf528c
+  type_id: 0x152d3031
+  full_name: "ppp_input_error"
+}
+elf_symbol {
+  id: 0x9f666495
+  name: "ppp_output_wakeup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x601b0da8
+  type_id: 0x14b1b37d
+  full_name: "ppp_output_wakeup"
+}
+elf_symbol {
+  id: 0x6f0567ec
+  name: "ppp_register_channel"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x621da830
+  type_id: 0x99a901c1
+  full_name: "ppp_register_channel"
+}
+elf_symbol {
+  id: 0x927e4918
+  name: "ppp_register_compressor"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8433847c
+  type_id: 0x90dc3d3e
+  full_name: "ppp_register_compressor"
+}
+elf_symbol {
+  id: 0x98e59f77
+  name: "ppp_register_net_channel"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2f4ffc7e
+  type_id: 0x9eeae021
+  full_name: "ppp_register_net_channel"
+}
+elf_symbol {
+  id: 0xbecf4baa
+  name: "ppp_unit_number"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x602b6e54
+  type_id: 0x99a901c1
+  full_name: "ppp_unit_number"
+}
+elf_symbol {
+  id: 0xe38cbeaa
+  name: "ppp_unregister_channel"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5964a2a8
+  type_id: 0x14b1b37d
+  full_name: "ppp_unregister_channel"
+}
+elf_symbol {
+  id: 0xec727723
+  name: "ppp_unregister_compressor"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6e8c0e61
+  type_id: 0x1dc48f82
+  full_name: "ppp_unregister_compressor"
+}
+elf_symbol {
+  id: 0xe9a7481c
+  name: "pppox_compat_ioctl"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x96106b85
+  type_id: 0x9882219f
+  full_name: "pppox_compat_ioctl"
+}
+elf_symbol {
+  id: 0x5ff552c9
+  name: "pppox_ioctl"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbe91e020
+  type_id: 0x9882219f
+  full_name: "pppox_ioctl"
+}
+elf_symbol {
+  id: 0x6423f928
+  name: "pppox_unbind_sock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x35a33ed7
+  type_id: 0x17c95d08
+  full_name: "pppox_unbind_sock"
+}
+elf_symbol {
+  id: 0x6a9aa538
+  name: "pps_event"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x60a8351e
+  type_id: 0x17306592
+  full_name: "pps_event"
+}
+elf_symbol {
+  id: 0x0422d1e4
+  name: "pps_register_source"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x03d61185
+  type_id: 0x9ffaa344
+  full_name: "pps_register_source"
+}
+elf_symbol {
+  id: 0x48fb8c7e
+  name: "pps_unregister_source"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfaa20c17
+  type_id: 0x17f14839
+  full_name: "pps_unregister_source"
+}
+elf_symbol {
+  id: 0x180b11d3
+  name: "preempt_schedule"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x43b0c9c3
+  type_id: 0x10985193
+  full_name: "preempt_schedule"
+}
+elf_symbol {
+  id: 0xd46a0ddb
+  name: "preempt_schedule_notrace"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf70e4a4d
+  type_id: 0x10985193
+  full_name: "preempt_schedule_notrace"
+}
+elf_symbol {
+  id: 0x49317a7a
+  name: "prepare_to_wait"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd5fd90f1
+  type_id: 0x15546ed9
+  full_name: "prepare_to_wait"
+}
+elf_symbol {
+  id: 0xd780999c
+  name: "prepare_to_wait_event"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8c26d495
+  type_id: 0xa2ec04d3
+  full_name: "prepare_to_wait_event"
+}
+elf_symbol {
+  id: 0xe8fde451
+  name: "prepare_to_wait_exclusive"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc622556f
+  type_id: 0xfb68644e
+  full_name: "prepare_to_wait_exclusive"
+}
+elf_symbol {
+  id: 0xda3d90c9
+  name: "print_hex_dump"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x167c5967
+  type_id: 0x1ffc73a6
+  full_name: "print_hex_dump"
+}
+elf_symbol {
+  id: 0x85643cba
+  name: "printk_timed_ratelimit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x07cc4a5d
+  type_id: 0xfe2116bd
+  full_name: "printk_timed_ratelimit"
+}
+elf_symbol {
+  id: 0x10599707
+  name: "proc_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0524767b
+  type_id: 0x3943c0fb
+  full_name: "proc_create"
+}
+elf_symbol {
+  id: 0x49314bbb
+  name: "proc_create_data"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7ae3018a
+  type_id: 0x3943c6d4
+  full_name: "proc_create_data"
+}
+elf_symbol {
+  id: 0x0df14cdd
+  name: "proc_create_net_data"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7551a863
+  type_id: 0x3943cd14
+  full_name: "proc_create_net_data"
+}
+elf_symbol {
+  id: 0x0fae0c8d
+  name: "proc_create_net_single"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb513532d
+  type_id: 0x39439154
+  full_name: "proc_create_net_single"
+}
+elf_symbol {
+  id: 0x5749ee7e
+  name: "proc_create_seq_private"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaf1d0f53
+  type_id: 0x3943cd14
+  full_name: "proc_create_seq_private"
+}
+elf_symbol {
+  id: 0xe5e4dbdf
+  name: "proc_create_single_data"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x690c126f
+  type_id: 0x39439154
+  full_name: "proc_create_single_data"
+}
+elf_symbol {
+  id: 0x52cfab58
+  name: "proc_dointvec"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa8181adf
+  type_id: 0x91cb6689
+  full_name: "proc_dointvec"
+}
+elf_symbol {
+  id: 0xfd020b9f
+  name: "proc_dointvec_jiffies"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdf6b082f
+  type_id: 0x91cb6689
+  full_name: "proc_dointvec_jiffies"
+}
+elf_symbol {
+  id: 0x7c9e1a26
+  name: "proc_dointvec_minmax"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2cdf87a1
+  type_id: 0x91cb6689
+  full_name: "proc_dointvec_minmax"
+}
+elf_symbol {
+  id: 0x499b7b9e
+  name: "proc_dostring"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x319d493d
+  type_id: 0x91cb6689
+  full_name: "proc_dostring"
+}
+elf_symbol {
+  id: 0x712f800b
+  name: "proc_douintvec_minmax"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x638aff11
+  type_id: 0x91cb6689
+  full_name: "proc_douintvec_minmax"
+}
+elf_symbol {
+  id: 0x37c95360
+  name: "proc_doulongvec_minmax"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xec2e1c8f
+  type_id: 0x91cb6689
+  full_name: "proc_doulongvec_minmax"
+}
+elf_symbol {
+  id: 0xd27c5bdf
+  name: "proc_mkdir"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1e39ba1c
+  type_id: 0x396d7dc5
+  full_name: "proc_mkdir"
+}
+elf_symbol {
+  id: 0xe2f2f3da
+  name: "proc_mkdir_data"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7cf82d90
+  type_id: 0x394343b5
+  full_name: "proc_mkdir_data"
+}
+elf_symbol {
+  id: 0xeb5eabdb
+  name: "proc_remove"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xce01cfc4
+  type_id: 0x1688452c
+  full_name: "proc_remove"
+}
+elf_symbol {
+  id: 0x1561afad
+  name: "proc_set_size"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd8c155d0
+  type_id: 0x1616da34
+  full_name: "proc_set_size"
+}
+elf_symbol {
+  id: 0x7ba3baed
+  name: "proc_set_user"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7aa2a539
+  type_id: 0x15005e8a
+  full_name: "proc_set_user"
+}
+elf_symbol {
+  id: 0xceb41cae
+  name: "proc_symlink"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9a87ae91
+  type_id: 0x3962f9e8
+  full_name: "proc_symlink"
+}
+elf_symbol {
+  id: 0x2197c0b9
+  name: "proto_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4feb4ee3
+  type_id: 0x92e29590
+  full_name: "proto_register"
+}
+elf_symbol {
+  id: 0x830bfa0f
+  name: "proto_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa56e6382
+  type_id: 0x1e66a460
+  full_name: "proto_unregister"
+}
+elf_symbol {
+  id: 0x5a85390c
+  name: "ps2_begin_command"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x89e184bc
+  type_id: 0x148b1035
+  full_name: "ps2_begin_command"
+}
+elf_symbol {
+  id: 0x0f84842d
+  name: "ps2_cmd_aborted"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xba908321
+  type_id: 0x148b1035
+  full_name: "ps2_cmd_aborted"
+}
+elf_symbol {
+  id: 0x74a4f32b
+  name: "ps2_command"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4d6d330c
+  type_id: 0x9981df44
+  full_name: "ps2_command"
+}
+elf_symbol {
+  id: 0x990f6662
+  name: "ps2_drain"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1e775761
+  type_id: 0x174aa4cd
+  full_name: "ps2_drain"
+}
+elf_symbol {
+  id: 0x9864ac97
+  name: "ps2_end_command"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x25ee3d3a
+  type_id: 0x148b1035
+  full_name: "ps2_end_command"
+}
+elf_symbol {
+  id: 0x2dabc7a6
+  name: "ps2_handle_ack"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7af5425f
+  type_id: 0xfa126b6a
+  full_name: "ps2_handle_ack"
+}
+elf_symbol {
+  id: 0x465b6faa
+  name: "ps2_handle_response"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfdae9c59
+  type_id: 0xfa126b6a
+  full_name: "ps2_handle_response"
+}
+elf_symbol {
+  id: 0xafb47c9f
+  name: "ps2_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x115a04c7
+  type_id: 0x1480c3c3
+  full_name: "ps2_init"
+}
+elf_symbol {
+  id: 0x408f4567
+  name: "ps2_sendbyte"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9875920d
+  type_id: 0x9927b218
+  full_name: "ps2_sendbyte"
+}
+elf_symbol {
+  id: 0x7fc27c29
+  name: "ps2_sliced_command"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1f374111
+  type_id: 0x9936d341
+  full_name: "ps2_sliced_command"
+}
+elf_symbol {
+  id: 0x9dc0e748
+  name: "pskb_expand_head"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4d1a048c
+  type_id: 0x9d55b48a
+  full_name: "pskb_expand_head"
+}
+elf_symbol {
+  id: 0x2251af59
+  name: "pskb_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd6916a65
+  type_id: 0x57c99e27
+  full_name: "pskb_put"
+}
+elf_symbol {
+  id: 0xea6abe92
+  name: "pstore_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4d0a8a32
+  type_id: 0x9f9d90bf
+  full_name: "pstore_register"
+}
+elf_symbol {
+  id: 0xbbb52558
+  name: "pstore_type_to_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa5d7c388
+  type_id: 0x82e18ab5
+  full_name: "pstore_type_to_name"
+}
+elf_symbol {
+  id: 0x5b447f09
+  name: "pstore_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x518b3e36
+  type_id: 0x12852203
+  full_name: "pstore_unregister"
+}
+elf_symbol {
+  id: 0x0e3a132f
+  name: "ptp_classify_raw"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2430337c
+  type_id: 0xc1439b43
+  full_name: "ptp_classify_raw"
+}
+elf_symbol {
+  id: 0x16154bce
+  name: "ptp_clock_event"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2eff1498
+  type_id: 0x1a780013
+  full_name: "ptp_clock_event"
+}
+elf_symbol {
+  id: 0x8becb370
+  name: "ptp_clock_index"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd81dc87c
+  type_id: 0x9768f895
+  full_name: "ptp_clock_index"
+}
+elf_symbol {
+  id: 0x42a88d96
+  name: "ptp_clock_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x798147b1
+  type_id: 0x2971f309
+  full_name: "ptp_clock_register"
+}
+elf_symbol {
+  id: 0xb36e22d3
+  name: "ptp_clock_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5d1c3c0b
+  type_id: 0x9768f895
+  full_name: "ptp_clock_unregister"
+}
+elf_symbol {
+  id: 0x683db5bf
+  name: "ptp_parse_header"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6c082b04
+  type_id: 0x9587d027
+  full_name: "ptp_parse_header"
+}
+elf_symbol {
+  id: 0x177fa0e0
+  name: "public_key_verify_signature"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x32836981
+  type_id: 0x910aa3e9
+  full_name: "public_key_verify_signature"
+}
+elf_symbol {
+  id: 0x11d4227b
+  name: "put_cmsg"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x31108fe3
+  type_id: 0x9732df25
+  full_name: "put_cmsg"
+}
+elf_symbol {
+  id: 0x71551ba9
+  name: "put_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc0052169
+  type_id: 0x100e6fc8
+  full_name: "put_device"
+}
+elf_symbol {
+  id: 0x435b99c6
+  name: "put_disk"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x00cc8390
+  type_id: 0x18d41dd9
+  full_name: "put_disk"
+}
+elf_symbol {
+  id: 0x01768311
+  name: "put_iova_domain"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc91ec32a
+  type_id: 0x1f796a1c
+  full_name: "put_iova_domain"
+}
+elf_symbol {
+  id: 0x1744651d
+  name: "put_pid"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x354db4c3
+  type_id: 0x1689085f
+  full_name: "put_pid"
+}
+elf_symbol {
+  id: 0x9103dd70
+  name: "put_sg_io_hdr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaa32756d
+  type_id: 0x90afaaf2
+  full_name: "put_sg_io_hdr"
+}
+elf_symbol {
+  id: 0xffdd03be
+  name: "put_unused_fd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3f4547a7
+  type_id: 0x01f9081c
+  full_name: "put_unused_fd"
+}
+elf_symbol {
+  id: 0x15848de9
+  name: "put_user_ifreq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcdcf946d
+  type_id: 0x906eca9b
+  full_name: "put_user_ifreq"
+}
+elf_symbol {
+  id: 0xde695e5a
+  name: "put_vaddr_frames"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1b700d37
+  type_id: 0x10e42ea8
+  full_name: "put_vaddr_frames"
+}
+elf_symbol {
+  id: 0x4e730977
+  name: "putback_movable_pages"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbd6f03f7
+  type_id: 0x1f00dfeb
+  full_name: "putback_movable_pages"
+}
+elf_symbol {
+  id: 0x53ee2234
+  name: "pwm_apply_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa27d3133
+  type_id: 0x977feed8
+  full_name: "pwm_apply_state"
+}
+elf_symbol {
+  id: 0x227e051f
+  name: "pwm_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6d5c6fa0
+  type_id: 0x1a902728
+  full_name: "pwm_free"
+}
+elf_symbol {
+  id: 0x9a5fd229
+  name: "pwm_get_chip_data"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x605d9076
+  type_id: 0x5c9ec74a
+  full_name: "pwm_get_chip_data"
+}
+elf_symbol {
+  id: 0xe4363e0f
+  name: "pwm_request"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3cfa9f02
+  type_id: 0x1a33cdc3
+  full_name: "pwm_request"
+}
+elf_symbol {
+  id: 0x97ae9712
+  name: "pwm_set_chip_data"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6c01c940
+  type_id: 0x97ea6000
+  full_name: "pwm_set_chip_data"
+}
+elf_symbol {
+  id: 0x649b0ae0
+  name: "pwmchip_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8471ef62
+  type_id: 0x94a5b2cb
+  full_name: "pwmchip_add"
+}
+elf_symbol {
+  id: 0x4ecdb62e
+  name: "pwmchip_remove"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8bc827fe
+  type_id: 0x19bd0077
+  full_name: "pwmchip_remove"
+}
+elf_symbol {
+  id: 0xb60564aa
+  name: "qca_read_soc_version"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x123214f3
+  type_id: 0x9a4d0c6c
+  full_name: "qca_read_soc_version"
+}
+elf_symbol {
+  id: 0x9209e3c3
+  name: "qca_send_pre_shutdown_cmd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xec434633
+  type_id: 0x9af01625
+  full_name: "qca_send_pre_shutdown_cmd"
+}
+elf_symbol {
+  id: 0x6dd94494
+  name: "qca_set_bdaddr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2586a331
+  type_id: 0x9a2fc16a
+  full_name: "qca_set_bdaddr"
+}
+elf_symbol {
+  id: 0x69e23de7
+  name: "qca_set_bdaddr_rome"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5284d1b3
+  type_id: 0x9a2fc16a
+  full_name: "qca_set_bdaddr_rome"
+}
+elf_symbol {
+  id: 0xb53f86dc
+  name: "qca_uart_setup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1cbf5582
+  type_id: 0x9bc09b7f
+  full_name: "qca_uart_setup"
+}
+elf_symbol {
+  id: 0x87ac4949
+  name: "qcom_icc_xlate_extended"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc5728787
+  type_id: 0x2d27988b
+  full_name: "qcom_icc_xlate_extended"
+}
+elf_symbol {
+  id: 0xac6b1fea
+  name: "qcom_smem_state_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x74c75fd8
+  type_id: 0x4f30442f
+  full_name: "qcom_smem_state_get"
+}
+elf_symbol {
+  id: 0x90383f0c
+  name: "qcom_smem_state_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x54a25da2
+  type_id: 0x10aef91d
+  full_name: "qcom_smem_state_put"
+}
+elf_symbol {
+  id: 0x6a663d57
+  name: "qcom_smem_state_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa335bd84
+  type_id: 0x42b552b4
+  full_name: "qcom_smem_state_register"
+}
+elf_symbol {
+  id: 0xbed674f6
+  name: "qcom_smem_state_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4561f990
+  type_id: 0x10aef91d
+  full_name: "qcom_smem_state_unregister"
+}
+elf_symbol {
+  id: 0x0ca915af
+  name: "qcom_smem_state_update_bits"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf730fb4a
+  type_id: 0x9ea02907
+  full_name: "qcom_smem_state_update_bits"
+}
+elf_symbol {
+  id: 0x2721b297
+  name: "queue_delayed_work_on"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbf57e89e
+  type_id: 0xe72ef591
+  full_name: "queue_delayed_work_on"
+}
+elf_symbol {
+  id: 0xf60ed3ec
+  name: "queue_work_on"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x732ac580
+  type_id: 0xe720dad5
+  full_name: "queue_work_on"
+}
+elf_symbol {
+  id: 0x1f556538
+  name: "radix_tree_delete"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4e6e4b41
+  type_id: 0x5cf34a0d
+  full_name: "radix_tree_delete"
+}
+elf_symbol {
+  id: 0xb51f872d
+  name: "radix_tree_delete_item"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd2237016
+  type_id: 0x5cf56554
+  full_name: "radix_tree_delete_item"
+}
+elf_symbol {
+  id: 0x1f203052
+  name: "radix_tree_gang_lookup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6b27729b
+  type_id: 0xc3825086
+  full_name: "radix_tree_gang_lookup"
+}
+elf_symbol {
+  id: 0x1c94f26a
+  name: "radix_tree_insert"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6fbc6a00
+  type_id: 0x97e3378a
+  full_name: "radix_tree_insert"
+}
+elf_symbol {
+  id: 0xda033b26
+  name: "radix_tree_iter_delete"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6dc35b25
+  type_id: 0x1a9fd28f
+  full_name: "radix_tree_iter_delete"
+}
+elf_symbol {
+  id: 0xfc5b9a92
+  name: "radix_tree_iter_resume"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4967e79f
+  type_id: 0x44977814
+  full_name: "radix_tree_iter_resume"
+}
+elf_symbol {
+  id: 0xd1f648be
+  name: "radix_tree_lookup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x70ad75fb
+  type_id: 0x5b3d7cd1
+  full_name: "radix_tree_lookup"
+}
+elf_symbol {
+  id: 0x32b0de3e
+  name: "radix_tree_lookup_slot"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x41efdeaf
+  type_id: 0x4abfefa4
+  full_name: "radix_tree_lookup_slot"
+}
+elf_symbol {
+  id: 0x88fdaf2f
+  name: "radix_tree_maybe_preload"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb22e16d5
+  type_id: 0xa1e954d4
+  full_name: "radix_tree_maybe_preload"
+}
+elf_symbol {
+  id: 0x23d99f29
+  name: "radix_tree_next_chunk"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2c541e7b
+  type_id: 0x4acfd9c5
+  full_name: "radix_tree_next_chunk"
+}
+elf_symbol {
+  id: 0xf65a8574
+  name: "radix_tree_preload"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x32ce3777
+  type_id: 0xa1e954d4
+  full_name: "radix_tree_preload"
+}
+elf_symbol {
+  id: 0x69d73c4e
+  name: "radix_tree_replace_slot"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x69049cd2
+  type_id: 0x1a04ad27
+  full_name: "radix_tree_replace_slot"
+}
+elf_symbol {
+  id: 0x9653ad6f
+  name: "radix_tree_tagged"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6d5f5b91
+  type_id: 0x91f0ee05
+  full_name: "radix_tree_tagged"
+}
+elf_symbol {
+  id: 0xbc5e2f91
+  name: "rational_best_approximation"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb0a0da0c
+  type_id: 0x1c84cc26
+  full_name: "rational_best_approximation"
+}
+elf_symbol {
+  id: 0x05375661
+  name: "raw_notifier_call_chain"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa851973a
+  type_id: 0x98341343
+  full_name: "raw_notifier_call_chain"
+}
+elf_symbol {
+  id: 0x8e8693ec
+  name: "raw_notifier_chain_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdc9fa232
+  type_id: 0x98913319
+  full_name: "raw_notifier_chain_register"
+}
+elf_symbol {
+  id: 0x938485a1
+  name: "raw_notifier_chain_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd06524ba
+  type_id: 0x98913319
+  full_name: "raw_notifier_chain_unregister"
+}
+elf_symbol {
+  id: 0x486016b6
+  name: "raw_spin_rq_lock_nested"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2ffca154
+  type_id: 0x1a847502
+  full_name: "raw_spin_rq_lock_nested"
+}
+elf_symbol {
+  id: 0xae54e6d0
+  name: "raw_spin_rq_unlock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb93cb4ae
+  type_id: 0x1b18f64e
+  full_name: "raw_spin_rq_unlock"
+}
+elf_symbol {
+  id: 0x3cb678c1
+  name: "rb_erase"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4d9b652b
+  type_id: 0x11ddd684
+  full_name: "rb_erase"
+}
+elf_symbol {
+  id: 0x826d9499
+  name: "rb_first"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xece784c2
+  type_id: 0x94a75f35
+  full_name: "rb_first"
+}
+elf_symbol {
+  id: 0x49a7f238
+  name: "rb_first_postorder"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xee91879b
+  type_id: 0x94a75f35
+  full_name: "rb_first_postorder"
+}
+elf_symbol {
+  id: 0x51af4178
+  name: "rb_insert_color"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa5526619
+  type_id: 0x11ddd684
+  full_name: "rb_insert_color"
+}
+elf_symbol {
+  id: 0xcdedac88
+  name: "rb_last"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdf2c2742
+  type_id: 0x94a75f35
+  full_name: "rb_last"
+}
+elf_symbol {
+  id: 0xceaba6d1
+  name: "rb_next"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xca9360b5
+  type_id: 0x97c10137
+  full_name: "rb_next"
+}
+elf_symbol {
+  id: 0x829cc511
+  name: "rb_next_postorder"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4e68e9be
+  type_id: 0x97c10137
+  full_name: "rb_next_postorder"
+}
+elf_symbol {
+  id: 0xd8d641e9
+  name: "rb_prev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf82ec573
+  type_id: 0x97c10137
+  full_name: "rb_prev"
+}
+elf_symbol {
+  id: 0xf1e11c16
+  name: "rb_replace_node"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7fe32873
+  type_id: 0x11085c29
+  full_name: "rb_replace_node"
+}
+elf_symbol {
+  id: 0xdbf9c67a
+  name: "rcu_barrier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x60a13e90
+  type_id: 0x10985193
+  full_name: "rcu_barrier"
+}
+elf_symbol {
+  id: 0xd1e79536
+  name: "rcu_barrier_tasks"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf6f16c56
+  type_id: 0x10985193
+  full_name: "rcu_barrier_tasks"
+}
+elf_symbol {
+  id: 0x2c564089
+  name: "rcu_barrier_tasks_trace"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcfc7b4e4
+  type_id: 0x10985193
+  full_name: "rcu_barrier_tasks_trace"
+}
+elf_symbol {
+  id: 0x8afe9539
+  name: "rcu_bind_current_to_nocb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3f83f8d3
+  type_id: 0x10985193
+  full_name: "rcu_bind_current_to_nocb"
+}
+elf_symbol {
+  id: 0xb3a33a94
+  name: "rcu_check_boost_fail"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8c0ed103
+  type_id: 0xf2346210
+  full_name: "rcu_check_boost_fail"
+}
+elf_symbol {
+  id: 0x5a1e8208
+  name: "rcu_cpu_stall_suppress"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xb0747ed2
+  type_id: 0x6720d32f
+  full_name: "rcu_cpu_stall_suppress"
+}
+elf_symbol {
+  id: 0x2eff102f
+  name: "rcu_cpu_stall_suppress_at_boot"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x789c73d9
+  type_id: 0x6720d32f
+  full_name: "rcu_cpu_stall_suppress_at_boot"
+}
+elf_symbol {
+  id: 0x1072c3ea
+  name: "rcu_expedite_gp"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8f0748af
+  type_id: 0x10985193
+  full_name: "rcu_expedite_gp"
+}
+elf_symbol {
+  id: 0x0b9aa695
+  name: "rcu_force_quiescent_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8924eb1e
+  type_id: 0x10985193
+  full_name: "rcu_force_quiescent_state"
+}
+elf_symbol {
+  id: 0x50df738e
+  name: "rcu_fwd_progress_check"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3c1c3725
+  type_id: 0x1c4508b2
+  full_name: "rcu_fwd_progress_check"
+}
+elf_symbol {
+  id: 0x98734bd3
+  name: "rcu_get_gp_kthreads_prio"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x216de4e1
+  type_id: 0x9d80e32f
+  full_name: "rcu_get_gp_kthreads_prio"
+}
+elf_symbol {
+  id: 0xfb623241
+  name: "rcu_get_gp_seq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe6e40502
+  type_id: 0x31accd53
+  full_name: "rcu_get_gp_seq"
+}
+elf_symbol {
+  id: 0x3aeddbd4
+  name: "rcu_gp_is_expedited"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc0a96e14
+  type_id: 0xfea45b04
+  full_name: "rcu_gp_is_expedited"
+}
+elf_symbol {
+  id: 0x0128eff9
+  name: "rcu_gp_is_normal"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf4af35c2
+  type_id: 0xfea45b04
+  full_name: "rcu_gp_is_normal"
+}
+elf_symbol {
+  id: 0xcd29475b
+  name: "rcu_gp_set_torture_wait"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb2c1732e
+  type_id: 0x09506558
+  full_name: "rcu_gp_set_torture_wait"
+}
+elf_symbol {
+  id: 0xc67413f4
+  name: "rcu_inkernel_boot_has_ended"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x24da0093
+  type_id: 0xfea45b04
+  full_name: "rcu_inkernel_boot_has_ended"
+}
+elf_symbol {
+  id: 0xf3a8b66c
+  name: "rcu_is_watching"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xce6db656
+  type_id: 0xfea45b04
+  full_name: "rcu_is_watching"
+}
+elf_symbol {
+  id: 0xb151be0e
+  name: "rcu_jiffies_till_stall_check"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3d510a7b
+  type_id: 0x9d80e32f
+  full_name: "rcu_jiffies_till_stall_check"
+}
+elf_symbol {
+  id: 0x909b3688
+  name: "rcu_nocb_cpu_deoffload"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe791df1f
+  type_id: 0x8448d7e4
+  full_name: "rcu_nocb_cpu_deoffload"
+}
+elf_symbol {
+  id: 0x126f72d4
+  name: "rcu_nocb_cpu_offload"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7c3e736a
+  type_id: 0x8448d7e4
+  full_name: "rcu_nocb_cpu_offload"
+}
+elf_symbol {
+  id: 0x1367c9d8
+  name: "rcu_read_unlock_trace_special"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xee4cf04c
+  type_id: 0x17de3be6
+  full_name: "rcu_read_unlock_trace_special"
+}
+elf_symbol {
+  id: 0x2355a9dd
+  name: "rcu_tasks_trace_qs_blkd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcf01745e
+  type_id: 0x17de3be6
+  full_name: "rcu_tasks_trace_qs_blkd"
+}
+elf_symbol {
+  id: 0x2f1102f6
+  name: "rcu_trc_cmpxchg_need_qs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x88a00b98
+  type_id: 0x54a3f2d6
+  full_name: "rcu_trc_cmpxchg_need_qs"
+}
+elf_symbol {
+  id: 0x7389434f
+  name: "rcu_unexpedite_gp"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5bdbac4e
+  type_id: 0x10985193
+  full_name: "rcu_unexpedite_gp"
+}
+elf_symbol {
+  id: 0x3a05c2fc
+  name: "rcutorture_get_gp_data"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2e028ae6
+  type_id: 0x28f75ced
+  full_name: "rcutorture_get_gp_data"
+}
+elf_symbol {
+  id: 0x854212b1
+  name: "rcuwait_wake_up"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe112cd72
+  type_id: 0x929ea9e9
+  full_name: "rcuwait_wake_up"
+}
+elf_symbol {
+  id: 0xd12105c9
+  name: "rdev_get_dev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9dff6aea
+  type_id: 0xaef121ed
+  full_name: "rdev_get_dev"
+}
+elf_symbol {
+  id: 0xb826c91a
+  name: "rdev_get_drvdata"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x779bbf64
+  type_id: 0x5548a022
+  full_name: "rdev_get_drvdata"
+}
+elf_symbol {
+  id: 0x85c7decb
+  name: "rdev_get_id"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3806822a
+  type_id: 0x9e5ef2fc
+  full_name: "rdev_get_id"
+}
+elf_symbol {
+  id: 0x87a9e1a0
+  name: "rdev_get_regmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf36d7d7c
+  type_id: 0x8f6b28f3
+  full_name: "rdev_get_regmap"
+}
+elf_symbol {
+  id: 0x5b227eda
+  name: "read_cache_page"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb109bc26
+  type_id: 0xb8307855
+  full_name: "read_cache_page"
+}
+elf_symbol {
+  id: 0x46082c90
+  name: "reboot_mode"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x429c3f9c
+  type_id: 0x0c05cc79
+  full_name: "reboot_mode"
+}
+elf_symbol {
+  id: 0x590d247f
+  name: "rebuild_sched_domains"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa65ab83d
+  type_id: 0x10985193
+  full_name: "rebuild_sched_domains"
+}
+elf_symbol {
+  id: 0x91579542
+  name: "reciprocal_value"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa965ca81
+  type_id: 0x9df3327a
+  full_name: "reciprocal_value"
+}
+elf_symbol {
+  id: 0x2a59e35c
+  name: "reclaim_shmem_address_space"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xba46e5fb
+  type_id: 0x98e049ee
+  full_name: "reclaim_shmem_address_space"
+}
+elf_symbol {
+  id: 0x3b03aaea
+  name: "refcount_dec_and_lock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5e06bc5c
+  type_id: 0xf6ab2a7f
+  full_name: "refcount_dec_and_lock"
+}
+elf_symbol {
+  id: 0xeeb1ddf9
+  name: "refcount_dec_and_mutex_lock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x27c95ba3
+  type_id: 0xf6fffafa
+  full_name: "refcount_dec_and_mutex_lock"
+}
+elf_symbol {
+  id: 0x54bb98b3
+  name: "refcount_dec_if_one"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc6f3b3fc
+  type_id: 0xf672797e
+  full_name: "refcount_dec_if_one"
+}
+elf_symbol {
+  id: 0x183217e2
+  name: "refcount_dec_not_one"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x47c20f8a
+  type_id: 0xf672797e
+  full_name: "refcount_dec_not_one"
+}
+elf_symbol {
+  id: 0xb7634e4d
+  name: "refcount_warn_saturate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0296695f
+  type_id: 0x189049e8
+  full_name: "refcount_warn_saturate"
+}
+elf_symbol {
+  id: 0x005b9494
+  name: "refresh_frequency_limits"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x70ef8228
+  type_id: 0x10ffd8df
+  full_name: "refresh_frequency_limits"
+}
+elf_symbol {
+  id: 0x9fb09fdf
+  name: "regcache_cache_bypass"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4207d8d0
+  type_id: 0x1347a32b
+  full_name: "regcache_cache_bypass"
+}
+elf_symbol {
+  id: 0x0238e2a9
+  name: "regcache_cache_only"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf09e3a6b
+  type_id: 0x1347a32b
+  full_name: "regcache_cache_only"
+}
+elf_symbol {
+  id: 0x7c26f0bc
+  name: "regcache_drop_region"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xec71d8fd
+  type_id: 0x9eed9829
+  full_name: "regcache_drop_region"
+}
+elf_symbol {
+  id: 0xb7ff4d92
+  name: "regcache_mark_dirty"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x47325125
+  type_id: 0x12f25e54
+  full_name: "regcache_mark_dirty"
+}
+elf_symbol {
+  id: 0x38aaa220
+  name: "regcache_sync"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x901719af
+  type_id: 0x9feaece8
+  full_name: "regcache_sync"
+}
+elf_symbol {
+  id: 0xb34d0634
+  name: "regcache_sync_region"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x15290b38
+  type_id: 0x9eed9829
+  full_name: "regcache_sync_region"
+}
+elf_symbol {
+  id: 0xeab63d27
+  name: "register_candev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbd0e584d
+  type_id: 0x91296bda
+  full_name: "register_candev"
+}
+elf_symbol {
+  id: 0x1bc307a0
+  name: "register_chrdev_region"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3fd78f3b
+  type_id: 0xa65aa9e3
+  full_name: "register_chrdev_region"
+}
+elf_symbol {
+  id: 0xab29122c
+  name: "register_console"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x20527664
+  type_id: 0x10cf8a7c
+  full_name: "register_console"
+}
+elf_symbol {
+  id: 0x0748dfdb
+  name: "register_die_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb6261484
+  type_id: 0x9b6d4a33
+  full_name: "register_die_notifier"
+}
+elf_symbol {
+  id: 0x0695a248
+  name: "register_filesystem"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9ab0cdea
+  type_id: 0x913be113
+  full_name: "register_filesystem"
+}
+elf_symbol {
+  id: 0x7165409e
+  name: "register_ftrace_export"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9593ef31
+  type_id: 0x9355441f
+  full_name: "register_ftrace_export"
+}
+elf_symbol {
+  id: 0x2c5e821c
+  name: "register_inet6addr_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x60352082
+  type_id: 0x9b6d4a33
+  full_name: "register_inet6addr_notifier"
+}
+elf_symbol {
+  id: 0xa36bcd31
+  name: "register_inetaddr_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf68285c0
+  type_id: 0x9b6d4a33
+  full_name: "register_inetaddr_notifier"
+}
+elf_symbol {
+  id: 0x6c1eddbc
+  name: "register_kernel_break_hook"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x32894b47
+  type_id: 0x16e6f635
+  full_name: "register_kernel_break_hook"
+}
+elf_symbol {
+  id: 0xba3fffd9
+  name: "register_kprobe"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0472cf3b
+  type_id: 0x900ed041
+  full_name: "register_kprobe"
+}
+elf_symbol {
+  id: 0x20a31fba
+  name: "register_kretprobe"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x79345cb9
+  type_id: 0x9719ad86
+  full_name: "register_kretprobe"
+}
+elf_symbol {
+  id: 0xd467aa67
+  name: "register_memory_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0a770832
+  type_id: 0x9b6d4a33
+  full_name: "register_memory_notifier"
+}
+elf_symbol {
+  id: 0x55f2d454
+  name: "register_module_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf353a698
+  type_id: 0x9b6d4a33
+  full_name: "register_module_notifier"
+}
+elf_symbol {
+  id: 0xf8464b2a
+  name: "register_net_sysctl"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x883aa38a
+  type_id: 0x0d4395f8
+  full_name: "register_net_sysctl"
+}
+elf_symbol {
+  id: 0x4e8f8f88
+  name: "register_netdev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa5940962
+  type_id: 0x91296bda
+  full_name: "register_netdev"
+}
+elf_symbol {
+  id: 0x5c86ec9a
+  name: "register_netdevice"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb4bdff70
+  type_id: 0x91296bda
+  full_name: "register_netdevice"
+}
+elf_symbol {
+  id: 0x31cbcd74
+  name: "register_netdevice_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd2da1048
+  type_id: 0x9b6d4a33
+  full_name: "register_netdevice_notifier"
+}
+elf_symbol {
+  id: 0xdd35f00b
+  name: "register_netevent_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4761f17c
+  type_id: 0x9b6d4a33
+  full_name: "register_netevent_notifier"
+}
+elf_symbol {
+  id: 0x1843760e
+  name: "register_oom_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x622c7922
+  type_id: 0x9b6d4a33
+  full_name: "register_oom_notifier"
+}
+elf_symbol {
+  id: 0xca5987b4
+  name: "register_pernet_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5b6b7163
+  type_id: 0x97969509
+  full_name: "register_pernet_device"
+}
+elf_symbol {
+  id: 0xf83d14d2
+  name: "register_pernet_subsys"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcf7dd4ce
+  type_id: 0x97969509
+  full_name: "register_pernet_subsys"
+}
+elf_symbol {
+  id: 0x0987d619
+  name: "register_pm_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9cc4f70a
+  type_id: 0x9b6d4a33
+  full_name: "register_pm_notifier"
+}
+elf_symbol {
+  id: 0x4b59a0e3
+  name: "register_pppox_proto"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x72976f06
+  type_id: 0x84a4d3f7
+  full_name: "register_pppox_proto"
+}
+elf_symbol {
+  id: 0x9fdcbc57
+  name: "register_qdisc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x39fad39c
+  type_id: 0x927a4e4f
+  full_name: "register_qdisc"
+}
+elf_symbol {
+  id: 0x5a0b5a6d
+  name: "register_reboot_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3517383e
+  type_id: 0x9b6d4a33
+  full_name: "register_reboot_notifier"
+}
+elf_symbol {
+  id: 0xd27c4a50
+  name: "register_restart_handler"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd9d8fd16
+  type_id: 0x9b6d4a33
+  full_name: "register_restart_handler"
+}
+elf_symbol {
+  id: 0x3a87c686
+  name: "register_shrinker"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x63c8b495
+  type_id: 0x94bc9034
+  full_name: "register_shrinker"
+}
+elf_symbol {
+  id: 0x4268401e
+  name: "register_syscore_ops"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb9c425de
+  type_id: 0x1c76742e
+  full_name: "register_syscore_ops"
+}
+elf_symbol {
+  id: 0xb02bf4aa
+  name: "register_sysctl"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9cd91791
+  type_id: 0x01c7a9cc
+  full_name: "register_sysctl"
+}
+elf_symbol {
+  id: 0x2b900c73
+  name: "register_sysctl_table"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6a449c4f
+  type_id: 0x034f6ce3
+  full_name: "register_sysctl_table"
+}
+elf_symbol {
+  id: 0xf62fefe0
+  name: "register_tcf_proto_ops"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb3f827e3
+  type_id: 0x9afc1632
+  full_name: "register_tcf_proto_ops"
+}
+elf_symbol {
+  id: 0x49b7d4e1
+  name: "register_virtio_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe70d950b
+  type_id: 0x97cd6aa0
+  full_name: "register_virtio_device"
+}
+elf_symbol {
+  id: 0x3e36e803
+  name: "register_virtio_driver"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8fb3b02a
+  type_id: 0x99bc1448
+  full_name: "register_virtio_driver"
+}
+elf_symbol {
+  id: 0xfb6bc213
+  name: "register_vmap_purge_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x26ed2186
+  type_id: 0x9b6d4a33
+  full_name: "register_vmap_purge_notifier"
+}
+elf_symbol {
+  id: 0x65ef2e20
+  name: "regmap_add_irq_chip"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6e6a138a
+  type_id: 0x9e6e36b1
+  full_name: "regmap_add_irq_chip"
+}
+elf_symbol {
+  id: 0xa5791e4a
+  name: "regmap_async_complete"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1a943ec2
+  type_id: 0x9feaece8
+  full_name: "regmap_async_complete"
+}
+elf_symbol {
+  id: 0xe4053aa7
+  name: "regmap_attach_dev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3a4e93f0
+  type_id: 0x9d3f0070
+  full_name: "regmap_attach_dev"
+}
+elf_symbol {
+  id: 0xe5e8386c
+  name: "regmap_bulk_read"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xed962ff1
+  type_id: 0x9ef906fc
+  full_name: "regmap_bulk_read"
+}
+elf_symbol {
+  id: 0xce0ee445
+  name: "regmap_bulk_write"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6272e817
+  type_id: 0x9ef16e60
+  full_name: "regmap_bulk_write"
+}
+elf_symbol {
+  id: 0x4feaaf8f
+  name: "regmap_check_range_table"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8619252a
+  type_id: 0xfdd651d2
+  full_name: "regmap_check_range_table"
+}
+elf_symbol {
+  id: 0x91f3338a
+  name: "regmap_del_irq_chip"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x131a5ed7
+  type_id: 0x091f3027
+  full_name: "regmap_del_irq_chip"
+}
+elf_symbol {
+  id: 0x64440a60
+  name: "regmap_exit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4ecf2e25
+  type_id: 0x12f25e54
+  full_name: "regmap_exit"
+}
+elf_symbol {
+  id: 0x6cde79b4
+  name: "regmap_field_read"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa5b6f19f
+  type_id: 0x957964bc
+  full_name: "regmap_field_read"
+}
+elf_symbol {
+  id: 0xd68bae0f
+  name: "regmap_field_update_bits_base"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc2bd74e5
+  type_id: 0x94118828
+  full_name: "regmap_field_update_bits_base"
+}
+elf_symbol {
+  id: 0x2b688ec7
+  name: "regmap_get_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9a35bb33
+  type_id: 0xaf453ff9
+  full_name: "regmap_get_device"
+}
+elf_symbol {
+  id: 0x248856c2
+  name: "regmap_get_val_bytes"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9fa7c349
+  type_id: 0x9feaece8
+  full_name: "regmap_get_val_bytes"
+}
+elf_symbol {
+  id: 0x6ff192fd
+  name: "regmap_irq_get_domain"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6cf3530f
+  type_id: 0x5bdd6b94
+  full_name: "regmap_irq_get_domain"
+}
+elf_symbol {
+  id: 0x3deea824
+  name: "regmap_irq_get_virq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x55784228
+  type_id: 0x98e93799
+  full_name: "regmap_irq_get_virq"
+}
+elf_symbol {
+  id: 0x90b29211
+  name: "regmap_irq_set_type_config_simple"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa09c5f0d
+  type_id: 0x9f808c95
+  full_name: "regmap_irq_set_type_config_simple"
+}
+elf_symbol {
+  id: 0x2991c962
+  name: "regmap_mmio_detach_clk"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4136a908
+  type_id: 0x12f25e54
+  full_name: "regmap_mmio_detach_clk"
+}
+elf_symbol {
+  id: 0x2e6efbc9
+  name: "regmap_multi_reg_write"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe0ee93a8
+  type_id: 0x9f0243b3
+  full_name: "regmap_multi_reg_write"
+}
+elf_symbol {
+  id: 0x259a5a1d
+  name: "regmap_multi_reg_write_bypassed"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9ab0ab13
+  type_id: 0x9f0243b3
+  full_name: "regmap_multi_reg_write_bypassed"
+}
+elf_symbol {
+  id: 0xd12e2c62
+  name: "regmap_noinc_read"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf5b7d7d3
+  type_id: 0x9ef906fc
+  full_name: "regmap_noinc_read"
+}
+elf_symbol {
+  id: 0xdbf7d123
+  name: "regmap_noinc_write"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaa9d2212
+  type_id: 0x9ef16e60
+  full_name: "regmap_noinc_write"
+}
+elf_symbol {
+  id: 0xebf295af
+  name: "regmap_raw_read"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfcaef764
+  type_id: 0x9ef906fc
+  full_name: "regmap_raw_read"
+}
+elf_symbol {
+  id: 0x8b6e9080
+  name: "regmap_raw_write"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x581bec73
+  type_id: 0x9ef16e60
+  full_name: "regmap_raw_write"
+}
+elf_symbol {
+  id: 0xc3c79032
+  name: "regmap_raw_write_async"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc232c75b
+  type_id: 0x9ef16e60
+  full_name: "regmap_raw_write_async"
+}
+elf_symbol {
+  id: 0x7aadc374
+  name: "regmap_read"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe4fcaad8
+  type_id: 0x9efa0528
+  full_name: "regmap_read"
+}
+elf_symbol {
+  id: 0x799e8ae8
+  name: "regmap_register_patch"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaf92b170
+  type_id: 0x9f0243b3
+  full_name: "regmap_register_patch"
+}
+elf_symbol {
+  id: 0x541cef30
+  name: "regmap_reinit_cache"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x737fb102
+  type_id: 0x9f1d3364
+  full_name: "regmap_reinit_cache"
+}
+elf_symbol {
+  id: 0xf68e2a91
+  name: "regmap_update_bits_base"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb1d8e449
+  type_id: 0x9eec8be1
+  full_name: "regmap_update_bits_base"
+}
+elf_symbol {
+  id: 0x33807c0a
+  name: "regmap_write"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2971bc8d
+  type_id: 0x9eed9829
+  full_name: "regmap_write"
+}
+elf_symbol {
+  id: 0x396ad9d1
+  name: "regulator_allow_bypass"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfd4ae8ca
+  type_id: 0x9c5e99dc
+  full_name: "regulator_allow_bypass"
+}
+elf_symbol {
+  id: 0x960e5c5b
+  name: "regulator_bulk_disable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x842b846b
+  type_id: 0x8499ea41
+  full_name: "regulator_bulk_disable"
+}
+elf_symbol {
+  id: 0x77274abe
+  name: "regulator_bulk_enable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x33c884ba
+  type_id: 0x8499ea41
+  full_name: "regulator_bulk_enable"
+}
+elf_symbol {
+  id: 0xf2357f9f
+  name: "regulator_bulk_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe8dfd610
+  type_id: 0x098158fd
+  full_name: "regulator_bulk_free"
+}
+elf_symbol {
+  id: 0xc16e78d8
+  name: "regulator_bulk_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x809e5eec
+  type_id: 0x9c874de2
+  full_name: "regulator_bulk_get"
+}
+elf_symbol {
+  id: 0xabbc8603
+  name: "regulator_count_voltages"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcebc8bd6
+  type_id: 0x9deb64a3
+  full_name: "regulator_count_voltages"
+}
+elf_symbol {
+  id: 0x4cf1070c
+  name: "regulator_desc_list_voltage_linear_range"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe027fdd7
+  type_id: 0x92f2a156
+  full_name: "regulator_desc_list_voltage_linear_range"
+}
+elf_symbol {
+  id: 0x9e48588d
+  name: "regulator_disable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8b37c47c
+  type_id: 0x9deb64a3
+  full_name: "regulator_disable"
+}
+elf_symbol {
+  id: 0x3945d02a
+  name: "regulator_disable_regmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x04054e02
+  type_id: 0x9e5ef2fc
+  full_name: "regulator_disable_regmap"
+}
+elf_symbol {
+  id: 0x32908e47
+  name: "regulator_enable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe8decd2e
+  type_id: 0x9deb64a3
+  full_name: "regulator_enable"
+}
+elf_symbol {
+  id: 0xc91eefc6
+  name: "regulator_enable_regmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x65b8210a
+  type_id: 0x9e5ef2fc
+  full_name: "regulator_enable_regmap"
+}
+elf_symbol {
+  id: 0x7511baca
+  name: "regulator_force_disable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5e2129e4
+  type_id: 0x9deb64a3
+  full_name: "regulator_force_disable"
+}
+elf_symbol {
+  id: 0x29553efc
+  name: "regulator_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7bfbbb52
+  type_id: 0x8556217d
+  full_name: "regulator_get"
+}
+elf_symbol {
+  id: 0xfd198070
+  name: "regulator_get_current_limit_regmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x84156d6d
+  type_id: 0x9e5ef2fc
+  full_name: "regulator_get_current_limit_regmap"
+}
+elf_symbol {
+  id: 0x4a781b7f
+  name: "regulator_get_drvdata"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc81d7d79
+  type_id: 0x56fd367d
+  full_name: "regulator_get_drvdata"
+}
+elf_symbol {
+  id: 0xc92def38
+  name: "regulator_get_linear_step"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfa55674a
+  type_id: 0xceb0f977
+  full_name: "regulator_get_linear_step"
+}
+elf_symbol {
+  id: 0xdd41811b
+  name: "regulator_get_mode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x172f78e3
+  type_id: 0xceb0f977
+  full_name: "regulator_get_mode"
+}
+elf_symbol {
+  id: 0x0118b55f
+  name: "regulator_get_optional"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1c07316f
+  type_id: 0x8556217d
+  full_name: "regulator_get_optional"
+}
+elf_symbol {
+  id: 0x4e97a73b
+  name: "regulator_get_voltage"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xce880ed3
+  type_id: 0x9deb64a3
+  full_name: "regulator_get_voltage"
+}
+elf_symbol {
+  id: 0x62f86638
+  name: "regulator_get_voltage_rdev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x223b4294
+  type_id: 0x9e5ef2fc
+  full_name: "regulator_get_voltage_rdev"
+}
+elf_symbol {
+  id: 0x117f1097
+  name: "regulator_get_voltage_sel_regmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x62f5cccf
+  type_id: 0x9e5ef2fc
+  full_name: "regulator_get_voltage_sel_regmap"
+}
+elf_symbol {
+  id: 0x8570255f
+  name: "regulator_is_enabled"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeb66df15
+  type_id: 0x9deb64a3
+  full_name: "regulator_is_enabled"
+}
+elf_symbol {
+  id: 0x438146c4
+  name: "regulator_is_enabled_regmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5998b6c8
+  type_id: 0x9e5ef2fc
+  full_name: "regulator_is_enabled_regmap"
+}
+elf_symbol {
+  id: 0xf069b7fd
+  name: "regulator_is_supported_voltage"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7a001d23
+  type_id: 0x9c6e2fdb
+  full_name: "regulator_is_supported_voltage"
+}
+elf_symbol {
+  id: 0xd8377ddc
+  name: "regulator_list_voltage"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6d6ad820
+  type_id: 0x9cfd713b
+  full_name: "regulator_list_voltage"
+}
+elf_symbol {
+  id: 0xfbb2197e
+  name: "regulator_list_voltage_linear"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1306e7c1
+  type_id: 0x9f48e764
+  full_name: "regulator_list_voltage_linear"
+}
+elf_symbol {
+  id: 0xb4fdfb1e
+  name: "regulator_list_voltage_linear_range"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb7a5f78d
+  type_id: 0x9f48e764
+  full_name: "regulator_list_voltage_linear_range"
+}
+elf_symbol {
+  id: 0x04d5663a
+  name: "regulator_list_voltage_table"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0e30e59e
+  type_id: 0x9f48e764
+  full_name: "regulator_list_voltage_table"
+}
+elf_symbol {
+  id: 0x5cf2f6f8
+  name: "regulator_map_voltage_ascend"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1aaa4700
+  type_id: 0x9fdbb984
+  full_name: "regulator_map_voltage_ascend"
+}
+elf_symbol {
+  id: 0xa66866da
+  name: "regulator_map_voltage_iterate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x15e20147
+  type_id: 0x9fdbb984
+  full_name: "regulator_map_voltage_iterate"
+}
+elf_symbol {
+  id: 0xcbfd8cea
+  name: "regulator_map_voltage_linear"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2151cd6e
+  type_id: 0x9fdbb984
+  full_name: "regulator_map_voltage_linear"
+}
+elf_symbol {
+  id: 0x2804801a
+  name: "regulator_map_voltage_linear_range"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x221ce428
+  type_id: 0x9fdbb984
+  full_name: "regulator_map_voltage_linear_range"
+}
+elf_symbol {
+  id: 0x4893b166
+  name: "regulator_notifier_call_chain"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb20c2aac
+  type_id: 0x9e950837
+  full_name: "regulator_notifier_call_chain"
+}
+elf_symbol {
+  id: 0xbf6a903f
+  name: "regulator_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe17b85db
+  type_id: 0x10f3d61f
+  full_name: "regulator_put"
+}
+elf_symbol {
+  id: 0xddb9ed35
+  name: "regulator_register_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x65b7b9c6
+  type_id: 0x9d85be32
+  full_name: "regulator_register_notifier"
+}
+elf_symbol {
+  id: 0x21d8367b
+  name: "regulator_set_active_discharge_regmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc9c42824
+  type_id: 0x9feb0f83
+  full_name: "regulator_set_active_discharge_regmap"
+}
+elf_symbol {
+  id: 0xce959ab5
+  name: "regulator_set_current_limit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf807c1fa
+  type_id: 0x9c6e2fdb
+  full_name: "regulator_set_current_limit"
+}
+elf_symbol {
+  id: 0x41f70cdb
+  name: "regulator_set_current_limit_regmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0c8c9210
+  type_id: 0x9fdbb984
+  full_name: "regulator_set_current_limit_regmap"
+}
+elf_symbol {
+  id: 0x805d1994
+  name: "regulator_set_load"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2eeb5640
+  type_id: 0x9c77e7ef
+  full_name: "regulator_set_load"
+}
+elf_symbol {
+  id: 0x1764380c
+  name: "regulator_set_mode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x82a7d66c
+  type_id: 0x9cfd713b
+  full_name: "regulator_set_mode"
+}
+elf_symbol {
+  id: 0x5a67d15f
+  name: "regulator_set_pull_down_regmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x84924538
+  type_id: 0x9e5ef2fc
+  full_name: "regulator_set_pull_down_regmap"
+}
+elf_symbol {
+  id: 0xfb766d3e
+  name: "regulator_set_ramp_delay_regmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa2fa97dc
+  type_id: 0x9fc271b0
+  full_name: "regulator_set_ramp_delay_regmap"
+}
+elf_symbol {
+  id: 0xc20a2c2c
+  name: "regulator_set_voltage"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xee5baf2d
+  type_id: 0x9c6e2fdb
+  full_name: "regulator_set_voltage"
+}
+elf_symbol {
+  id: 0x0b03a904
+  name: "regulator_set_voltage_sel_regmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x726a3224
+  type_id: 0x9f48e764
+  full_name: "regulator_set_voltage_sel_regmap"
+}
+elf_symbol {
+  id: 0x2bce772d
+  name: "regulator_set_voltage_time"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa230236d
+  type_id: 0x9c6e2fdb
+  full_name: "regulator_set_voltage_time"
+}
+elf_symbol {
+  id: 0x705777ef
+  name: "regulator_set_voltage_time_sel"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa0ec4913
+  type_id: 0x9f59863d
+  full_name: "regulator_set_voltage_time_sel"
+}
+elf_symbol {
+  id: 0x21b06e02
+  name: "regulator_sync_voltage"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd55ca348
+  type_id: 0x9deb64a3
+  full_name: "regulator_sync_voltage"
+}
+elf_symbol {
+  id: 0x70f8b485
+  name: "regulator_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa25ae083
+  type_id: 0x13464040
+  full_name: "regulator_unregister"
+}
+elf_symbol {
+  id: 0x3a44a497
+  name: "regulator_unregister_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2cc278bc
+  type_id: 0x9d85be32
+  full_name: "regulator_unregister_notifier"
+}
+elf_symbol {
+  id: 0xc0705cb4
+  name: "release_firmware"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc6d09aa9
+  type_id: 0x1c5815c3
+  full_name: "release_firmware"
+}
+elf_symbol {
+  id: 0x5ebdf90f
+  name: "release_pages"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc59e02fe
+  type_id: 0x13c8e95f
+  full_name: "release_pages"
+}
+elf_symbol {
+  id: 0x9cb108b5
+  name: "release_sock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb1342d9c
+  type_id: 0x17c95d08
+  full_name: "release_sock"
+}
+elf_symbol {
+  id: 0xdfdf59f8
+  name: "remap_pfn_range"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc477c1df
+  type_id: 0x9fc5d15c
+  full_name: "remap_pfn_range"
+}
+elf_symbol {
+  id: 0x195b028a
+  name: "remap_vmalloc_range"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x17e5d102
+  type_id: 0x9f6a1bb3
+  full_name: "remap_vmalloc_range"
+}
+elf_symbol {
+  id: 0x78126b2c
+  name: "remove_cpu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xad4e6259
+  type_id: 0x8ce1baa0
+  full_name: "remove_cpu"
+}
+elf_symbol {
+  id: 0x5153378f
+  name: "remove_memory"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0bbdc9b2
+  type_id: 0xbb40a305
+  full_name: "remove_memory"
+}
+elf_symbol {
+  id: 0xe5686fed
+  name: "remove_proc_entry"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xef8b7667
+  type_id: 0x1f7d7d9e
+  full_name: "remove_proc_entry"
+}
+elf_symbol {
+  id: 0xf7b2b5e2
+  name: "remove_proc_subtree"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x915e47bc
+  type_id: 0x9265cf22
+  full_name: "remove_proc_subtree"
+}
+elf_symbol {
+  id: 0x64df4bab
+  name: "remove_resource"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x164bbd19
+  type_id: 0x9353db21
+  full_name: "remove_resource"
+}
+elf_symbol {
+  id: 0xdf865b89
+  name: "remove_wait_queue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x37110088
+  type_id: 0x154da6ed
+  full_name: "remove_wait_queue"
+}
+elf_symbol {
+  id: 0xc6c6c125
+  name: "report_iommu_fault"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x93f7f258
+  type_id: 0x9621e968
+  full_name: "report_iommu_fault"
+}
+elf_symbol {
+  id: 0x0538a0a0
+  name: "request_any_context_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdbdb0e8b
+  type_id: 0x8f8935e1
+  full_name: "request_any_context_irq"
+}
+elf_symbol {
+  id: 0x755857c9
+  name: "request_firmware"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9c3fdf15
+  type_id: 0x9cec28b8
+  full_name: "request_firmware"
+}
+elf_symbol {
+  id: 0xb261904e
+  name: "request_firmware_direct"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x85608491
+  type_id: 0x9cec28b8
+  full_name: "request_firmware_direct"
+}
+elf_symbol {
+  id: 0x8732c1c9
+  name: "request_firmware_into_buf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8220ee4d
+  type_id: 0x9cec7740
+  full_name: "request_firmware_into_buf"
+}
+elf_symbol {
+  id: 0x677926cf
+  name: "request_firmware_nowait"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd5816b60
+  type_id: 0x9ef35806
+  full_name: "request_firmware_nowait"
+}
+elf_symbol {
+  id: 0x0d3c3e14
+  name: "request_threaded_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x92d5838e
+  type_id: 0x8fb39e21
+  full_name: "request_threaded_irq"
+}
+elf_symbol {
+  id: 0xe5340075
+  name: "resched_curr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x21218e67
+  type_id: 0x1b18f64e
+  full_name: "resched_curr"
+}
+elf_symbol {
+  id: 0x6aab6dda
+  name: "reservation_ww_class"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xcc328a5c
+  type_id: 0x700bbe07
+  full_name: "reservation_ww_class"
+}
+elf_symbol {
+  id: 0x089f5fe6
+  name: "reset_control_acquire"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc8594d3d
+  type_id: 0x978438bd
+  full_name: "reset_control_acquire"
+}
+elf_symbol {
+  id: 0x0c73acc8
+  name: "reset_control_assert"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6c4b6684
+  type_id: 0x978438bd
+  full_name: "reset_control_assert"
+}
+elf_symbol {
+  id: 0xace4bcdf
+  name: "reset_control_bulk_assert"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xff1666f3
+  type_id: 0x84c7bf9c
+  full_name: "reset_control_bulk_assert"
+}
+elf_symbol {
+  id: 0x57ee69c1
+  name: "reset_control_bulk_deassert"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe700d767
+  type_id: 0x84c7bf9c
+  full_name: "reset_control_bulk_deassert"
+}
+elf_symbol {
+  id: 0xd76b82b2
+  name: "reset_control_deassert"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb2210d64
+  type_id: 0x978438bd
+  full_name: "reset_control_deassert"
+}
+elf_symbol {
+  id: 0x30c7b7f4
+  name: "reset_control_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x40f0683e
+  type_id: 0x1a9c8a01
+  full_name: "reset_control_put"
+}
+elf_symbol {
+  id: 0x9c7a2d6c
+  name: "reset_control_release"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1e0670c6
+  type_id: 0x1a9c8a01
+  full_name: "reset_control_release"
+}
+elf_symbol {
+  id: 0x48fc2cb6
+  name: "reset_control_reset"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x24f39c39
+  type_id: 0x978438bd
+  full_name: "reset_control_reset"
+}
+elf_symbol {
+  id: 0xd41c441b
+  name: "reset_controller_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x05b4a6e2
+  type_id: 0x9539822a
+  full_name: "reset_controller_register"
+}
+elf_symbol {
+  id: 0x8607d899
+  name: "reset_controller_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6aea17c1
+  type_id: 0x18213096
+  full_name: "reset_controller_unregister"
+}
+elf_symbol {
+  id: 0x1d945826
+  name: "return_address"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb917b6d7
+  type_id: 0x47f7e87e
+  full_name: "return_address"
+}
+elf_symbol {
+  id: 0xa3f52060
+  name: "rfkill_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6a3675f4
+  type_id: 0x0a9e8df2
+  full_name: "rfkill_alloc"
+}
+elf_symbol {
+  id: 0x001f1a24
+  name: "rfkill_blocked"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc0763484
+  type_id: 0xff43a6e0
+  full_name: "rfkill_blocked"
+}
+elf_symbol {
+  id: 0x46d54e34
+  name: "rfkill_destroy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdb68bbad
+  type_id: 0x117fac77
+  full_name: "rfkill_destroy"
+}
+elf_symbol {
+  id: 0x48ae5586
+  name: "rfkill_find_type"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x50b73ce2
+  type_id: 0xffdfe86a
+  full_name: "rfkill_find_type"
+}
+elf_symbol {
+  id: 0xfba840ea
+  name: "rfkill_get_led_trigger_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaa6f23ad
+  type_id: 0x93a3ea47
+  full_name: "rfkill_get_led_trigger_name"
+}
+elf_symbol {
+  id: 0x9562ae27
+  name: "rfkill_init_sw_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaad6d92f
+  type_id: 0x10ca5108
+  full_name: "rfkill_init_sw_state"
+}
+elf_symbol {
+  id: 0xf985c978
+  name: "rfkill_pause_polling"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3939f8f0
+  type_id: 0x117fac77
+  full_name: "rfkill_pause_polling"
+}
+elf_symbol {
+  id: 0x5ba6dff6
+  name: "rfkill_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xff282521
+  type_id: 0x9c671ecb
+  full_name: "rfkill_register"
+}
+elf_symbol {
+  id: 0xf977c032
+  name: "rfkill_resume_polling"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc781bd9f
+  type_id: 0x117fac77
+  full_name: "rfkill_resume_polling"
+}
+elf_symbol {
+  id: 0x7802cb99
+  name: "rfkill_set_hw_state_reason"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0cdce87c
+  type_id: 0xfefa86c6
+  full_name: "rfkill_set_hw_state_reason"
+}
+elf_symbol {
+  id: 0x821675f7
+  name: "rfkill_set_led_trigger_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9cab34a6
+  type_id: 0x1187eea3
+  full_name: "rfkill_set_led_trigger_name"
+}
+elf_symbol {
+  id: 0x2831202e
+  name: "rfkill_set_states"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x85b5e625
+  type_id: 0x10d10edf
+  full_name: "rfkill_set_states"
+}
+elf_symbol {
+  id: 0x8be50e45
+  name: "rfkill_set_sw_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8a490c90
+  type_id: 0xfef65b9f
+  full_name: "rfkill_set_sw_state"
+}
+elf_symbol {
+  id: 0x66112f81
+  name: "rfkill_soft_blocked"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd24108d4
+  type_id: 0xff43a6e0
+  full_name: "rfkill_soft_blocked"
+}
+elf_symbol {
+  id: 0x46449fce
+  name: "rfkill_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x083eb21c
+  type_id: 0x117fac77
+  full_name: "rfkill_unregister"
+}
+elf_symbol {
+  id: 0xefa494ef
+  name: "rhashtable_destroy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x371379a0
+  type_id: 0x14485d75
+  full_name: "rhashtable_destroy"
+}
+elf_symbol {
+  id: 0x74fbd45c
+  name: "rhashtable_free_and_destroy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1df13bbf
+  type_id: 0x1472e737
+  full_name: "rhashtable_free_and_destroy"
+}
+elf_symbol {
+  id: 0x139e6573
+  name: "rhashtable_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0938408c
+  type_id: 0x99a8fd7d
+  full_name: "rhashtable_init"
+}
+elf_symbol {
+  id: 0x17c74c49
+  name: "rhashtable_insert_slow"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x694ce81c
+  type_id: 0x52a86eb1
+  full_name: "rhashtable_insert_slow"
+}
+elf_symbol {
+  id: 0x6f637792
+  name: "rhashtable_walk_enter"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8f406523
+  type_id: 0x149bc5c9
+  full_name: "rhashtable_walk_enter"
+}
+elf_symbol {
+  id: 0xf63fdfbf
+  name: "rhashtable_walk_exit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0252e1a5
+  type_id: 0x1da1da53
+  full_name: "rhashtable_walk_exit"
+}
+elf_symbol {
+  id: 0xe12c6c9f
+  name: "rhashtable_walk_next"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf4700bae
+  type_id: 0x5baf3a31
+  full_name: "rhashtable_walk_next"
+}
+elf_symbol {
+  id: 0xb5ebcdfc
+  name: "rhashtable_walk_start_check"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa229b55a
+  type_id: 0x90b968ef
+  full_name: "rhashtable_walk_start_check"
+}
+elf_symbol {
+  id: 0x71ecd71f
+  name: "rhashtable_walk_stop"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x63cc6a77
+  type_id: 0x1da1da53
+  full_name: "rhashtable_walk_stop"
+}
+elf_symbol {
+  id: 0x7b08b3df
+  name: "rhltable_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8c2573d1
+  type_id: 0x955fdee8
+  full_name: "rhltable_init"
+}
+elf_symbol {
+  id: 0x6af2dc93
+  name: "rht_bucket_nested"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb7f990e9
+  type_id: 0x96bbe934
+  full_name: "rht_bucket_nested"
+}
+elf_symbol {
+  id: 0x56f4af9c
+  name: "rht_bucket_nested_insert"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xebfbabb3
+  type_id: 0x9fce093a
+  full_name: "rht_bucket_nested_insert"
+}
+elf_symbol {
+  id: 0x93ee7a0f
+  name: "root_device_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfc5c2426
+  type_id: 0x100e6fc8
+  full_name: "root_device_unregister"
+}
+elf_symbol {
+  id: 0x7d858174
+  name: "root_task_group"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xca81e0d0
+  type_id: 0x84d533ac
+  full_name: "root_task_group"
+}
+elf_symbol {
+  id: 0x0e66eaf7
+  name: "round_jiffies"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x091eb9b4
+  type_id: 0x3d719472
+  full_name: "round_jiffies"
+}
+elf_symbol {
+  id: 0x81bce56b
+  name: "round_jiffies_relative"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1eb9516e
+  type_id: 0x3d719472
+  full_name: "round_jiffies_relative"
+}
+elf_symbol {
+  id: 0x01a1f5e7
+  name: "round_jiffies_up"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x50fad434
+  type_id: 0x3d719472
+  full_name: "round_jiffies_up"
+}
+elf_symbol {
+  id: 0xa3ee1393
+  name: "rpmsg_create_channel"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x984390ec
+  type_id: 0xa3adbe6c
+  full_name: "rpmsg_create_channel"
+}
+elf_symbol {
+  id: 0x492407e0
+  name: "rpmsg_create_ept"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc61647ec
+  type_id: 0x4cd21214
+  full_name: "rpmsg_create_ept"
+}
+elf_symbol {
+  id: 0xfd36afa6
+  name: "rpmsg_destroy_ept"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa202576f
+  type_id: 0x1fc886d7
+  full_name: "rpmsg_destroy_ept"
+}
+elf_symbol {
+  id: 0x988f4d92
+  name: "rpmsg_find_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6712ca99
+  type_id: 0xad2e2b96
+  full_name: "rpmsg_find_device"
+}
+elf_symbol {
+  id: 0x1bdc5aa0
+  name: "rpmsg_poll"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbaf89f74
+  type_id: 0x2c0dbc38
+  full_name: "rpmsg_poll"
+}
+elf_symbol {
+  id: 0x8b5859cf
+  name: "rpmsg_register_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x16006abd
+  type_id: 0x94ed2c45
+  full_name: "rpmsg_register_device"
+}
+elf_symbol {
+  id: 0x7c2a2a37
+  name: "rpmsg_register_device_override"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x55e79208
+  type_id: 0x94156e91
+  full_name: "rpmsg_register_device_override"
+}
+elf_symbol {
+  id: 0x882375b2
+  name: "rpmsg_release_channel"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9a943bc8
+  type_id: 0x947a09b6
+  full_name: "rpmsg_release_channel"
+}
+elf_symbol {
+  id: 0xa4ceb82a
+  name: "rpmsg_send"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x15528baa
+  type_id: 0x92ab09cb
+  full_name: "rpmsg_send"
+}
+elf_symbol {
+  id: 0x47a1f086
+  name: "rpmsg_sendto"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0e2bd50d
+  type_id: 0x92a82deb
+  full_name: "rpmsg_sendto"
+}
+elf_symbol {
+  id: 0x8c26ec8b
+  name: "rpmsg_trysend"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfbca06ee
+  type_id: 0x92ab09cb
+  full_name: "rpmsg_trysend"
+}
+elf_symbol {
+  id: 0xab5f4767
+  name: "rpmsg_unregister_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x233a5250
+  type_id: 0x9d81f887
+  full_name: "rpmsg_unregister_device"
+}
+elf_symbol {
+  id: 0xd056ad1b
+  name: "rproc_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x71bef0f4
+  type_id: 0x97f16301
+  full_name: "rproc_add"
+}
+elf_symbol {
+  id: 0x2104bead
+  name: "rproc_add_carveout"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xefbe3009
+  type_id: 0x1a816041
+  full_name: "rproc_add_carveout"
+}
+elf_symbol {
+  id: 0xedc5f666
+  name: "rproc_add_subdev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x233f2200
+  type_id: 0x1a5a9df1
+  full_name: "rproc_add_subdev"
+}
+elf_symbol {
+  id: 0x9e73d367
+  name: "rproc_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x58067e88
+  type_id: 0xbd324cd3
+  full_name: "rproc_alloc"
+}
+elf_symbol {
+  id: 0x3cf252e7
+  name: "rproc_boot"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeba62dea
+  type_id: 0x97f16301
+  full_name: "rproc_boot"
+}
+elf_symbol {
+  id: 0x828f61b2
+  name: "rproc_coredump"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbced5154
+  type_id: 0x1ae9d1bd
+  full_name: "rproc_coredump"
+}
+elf_symbol {
+  id: 0xa7a9bc3b
+  name: "rproc_coredump_add_custom_segment"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc4424d49
+  type_id: 0x944ce0cc
+  full_name: "rproc_coredump_add_custom_segment"
+}
+elf_symbol {
+  id: 0xc5684e9c
+  name: "rproc_coredump_add_segment"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4db7e65b
+  type_id: 0x944cd608
+  full_name: "rproc_coredump_add_segment"
+}
+elf_symbol {
+  id: 0xe51d6dd1
+  name: "rproc_coredump_cleanup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2b6b4604
+  type_id: 0x1ae9d1bd
+  full_name: "rproc_coredump_cleanup"
+}
+elf_symbol {
+  id: 0xec4ea718
+  name: "rproc_coredump_set_elf_info"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xecdfd040
+  type_id: 0x977041a6
+  full_name: "rproc_coredump_set_elf_info"
+}
+elf_symbol {
+  id: 0x4f384161
+  name: "rproc_coredump_using_sections"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1ea8b49e
+  type_id: 0x1ae9d1bd
+  full_name: "rproc_coredump_using_sections"
+}
+elf_symbol {
+  id: 0x79536269
+  name: "rproc_da_to_va"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcbe6ec32
+  type_id: 0x5e92f774
+  full_name: "rproc_da_to_va"
+}
+elf_symbol {
+  id: 0xb55db035
+  name: "rproc_del"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xff87363a
+  type_id: 0x97f16301
+  full_name: "rproc_del"
+}
+elf_symbol {
+  id: 0x4f3dccb0
+  name: "rproc_elf_find_loaded_rsc_table"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb9051c8c
+  type_id: 0x20dcb434
+  full_name: "rproc_elf_find_loaded_rsc_table"
+}
+elf_symbol {
+  id: 0xa341b4f5
+  name: "rproc_elf_get_boot_addr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3c2a49fb
+  type_id: 0x5d665720
+  full_name: "rproc_elf_get_boot_addr"
+}
+elf_symbol {
+  id: 0x7450c7fb
+  name: "rproc_elf_load_rsc_table"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5ab3eb77
+  type_id: 0x973d6744
+  full_name: "rproc_elf_load_rsc_table"
+}
+elf_symbol {
+  id: 0x45bac715
+  name: "rproc_elf_load_segments"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc7922694
+  type_id: 0x973d6744
+  full_name: "rproc_elf_load_segments"
+}
+elf_symbol {
+  id: 0x431a82e5
+  name: "rproc_elf_sanity_check"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2a6e1b66
+  type_id: 0x973d6744
+  full_name: "rproc_elf_sanity_check"
+}
+elf_symbol {
+  id: 0x795a1c4e
+  name: "rproc_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf3b817cf
+  type_id: 0x1ae9d1bd
+  full_name: "rproc_free"
+}
+elf_symbol {
+  id: 0x9e9162a1
+  name: "rproc_get_by_child"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x147878c8
+  type_id: 0xbdc4e083
+  full_name: "rproc_get_by_child"
+}
+elf_symbol {
+  id: 0x5ca3653a
+  name: "rproc_get_by_phandle"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x54efa435
+  type_id: 0xba5ef4b3
+  full_name: "rproc_get_by_phandle"
+}
+elf_symbol {
+  id: 0x5400f960
+  name: "rproc_mem_entry_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x97735581
+  type_id: 0xb0ad4fdd
+  full_name: "rproc_mem_entry_init"
+}
+elf_symbol {
+  id: 0x4173a10e
+  name: "rproc_of_parse_firmware"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x496e992d
+  type_id: 0x9c8b1b3d
+  full_name: "rproc_of_parse_firmware"
+}
+elf_symbol {
+  id: 0x5e9d56ee
+  name: "rproc_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x45e8b92a
+  type_id: 0x1ae9d1bd
+  full_name: "rproc_put"
+}
+elf_symbol {
+  id: 0x999465c1
+  name: "rproc_remove_subdev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x82dbe7b3
+  type_id: 0x1a5a9df1
+  full_name: "rproc_remove_subdev"
+}
+elf_symbol {
+  id: 0x74844b2a
+  name: "rproc_report_crash"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x726e48b1
+  type_id: 0x197c612f
+  full_name: "rproc_report_crash"
+}
+elf_symbol {
+  id: 0xa2e29e3b
+  name: "rproc_set_firmware"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x76e9fa50
+  type_id: 0x970921d5
+  full_name: "rproc_set_firmware"
+}
+elf_symbol {
+  id: 0x74c27ecd
+  name: "rproc_shutdown"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc66701da
+  type_id: 0x97f16301
+  full_name: "rproc_shutdown"
+}
+elf_symbol {
+  id: 0x80913de9
+  name: "rproc_vq_interrupt"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x14729319
+  type_id: 0x29298783
+  full_name: "rproc_vq_interrupt"
+}
+elf_symbol {
+  id: 0xbffd1c46
+  name: "rps_needed"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x8761c87b
+  type_id: 0x8e47c273
+  full_name: "rps_needed"
+}
+elf_symbol {
+  id: 0x264c5308
+  name: "rt_mutex_lock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf959a2cd
+  type_id: 0x1d45c70c
+  full_name: "rt_mutex_lock"
+}
+elf_symbol {
+  id: 0x205145e9
+  name: "rt_mutex_trylock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x34d8a2cb
+  type_id: 0x905d75b0
+  full_name: "rt_mutex_trylock"
+}
+elf_symbol {
+  id: 0x0eff96d9
+  name: "rt_mutex_unlock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2bd44b7e
+  type_id: 0x1d45c70c
+  full_name: "rt_mutex_unlock"
+}
+elf_symbol {
+  id: 0xc7dca9cd
+  name: "rtc_class_close"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7167f44f
+  type_id: 0x19a0c3db
+  full_name: "rtc_class_close"
+}
+elf_symbol {
+  id: 0xa503728e
+  name: "rtc_class_open"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x93c48ae2
+  type_id: 0x71086e18
+  full_name: "rtc_class_open"
+}
+elf_symbol {
+  id: 0x8163968f
+  name: "rtc_ktime_to_tm"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe4c2c66c
+  type_id: 0xac4edba4
+  full_name: "rtc_ktime_to_tm"
+}
+elf_symbol {
+  id: 0x29f98a43
+  name: "rtc_read_alarm"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x028bae98
+  type_id: 0x94d99adc
+  full_name: "rtc_read_alarm"
+}
+elf_symbol {
+  id: 0x43241ada
+  name: "rtc_read_time"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf297fe7b
+  type_id: 0x94662870
+  full_name: "rtc_read_time"
+}
+elf_symbol {
+  id: 0x5c6aa8cb
+  name: "rtc_set_alarm"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd055eea4
+  type_id: 0x94d99adc
+  full_name: "rtc_set_alarm"
+}
+elf_symbol {
+  id: 0xae7aa450
+  name: "rtc_set_time"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xabd2cf63
+  type_id: 0x94662870
+  full_name: "rtc_set_time"
+}
+elf_symbol {
+  id: 0x2edd194c
+  name: "rtc_time64_to_tm"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x356461c8
+  type_id: 0x31d0bba1
+  full_name: "rtc_time64_to_tm"
+}
+elf_symbol {
+  id: 0x12aeae3a
+  name: "rtc_tm_to_ktime"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x23412816
+  type_id: 0xa2d727e6
+  full_name: "rtc_tm_to_ktime"
+}
+elf_symbol {
+  id: 0xa4ad8391
+  name: "rtc_tm_to_time64"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4f2250ba
+  type_id: 0x5b5255fa
+  full_name: "rtc_tm_to_time64"
+}
+elf_symbol {
+  id: 0x5c1197ba
+  name: "rtc_update_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x614d8017
+  type_id: 0x1961cb10
+  full_name: "rtc_update_irq"
+}
+elf_symbol {
+  id: 0x22e1072c
+  name: "rtc_valid_tm"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5838f6c9
+  type_id: 0x90657259
+  full_name: "rtc_valid_tm"
+}
+elf_symbol {
+  id: 0x50b92bc4
+  name: "rtnl_is_locked"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x85670f1d
+  type_id: 0x9d80e32f
+  full_name: "rtnl_is_locked"
+}
+elf_symbol {
+  id: 0x8c0dd14a
+  name: "rtnl_link_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x17ff0acb
+  type_id: 0x91cbd408
+  full_name: "rtnl_link_register"
+}
+elf_symbol {
+  id: 0x3480e8df
+  name: "rtnl_link_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x30b80c16
+  type_id: 0x1cd366b4
+  full_name: "rtnl_link_unregister"
+}
+elf_symbol {
+  id: 0x0bf91812
+  name: "rtnl_lock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc7a4fbed
+  type_id: 0x10985193
+  full_name: "rtnl_lock"
+}
+elf_symbol {
+  id: 0x16db3f05
+  name: "rtnl_register_module"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x65278a71
+  type_id: 0x9ece22e0
+  full_name: "rtnl_register_module"
+}
+elf_symbol {
+  id: 0x258649b1
+  name: "rtnl_trylock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf4f14de6
+  type_id: 0x9d80e32f
+  full_name: "rtnl_trylock"
+}
+elf_symbol {
+  id: 0x761738c2
+  name: "rtnl_unicast"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x89f6462c
+  type_id: 0x9cd3f2b1
+  full_name: "rtnl_unicast"
+}
+elf_symbol {
+  id: 0x1ff99fdd
+  name: "rtnl_unlock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6e720ff2
+  type_id: 0x10985193
+  full_name: "rtnl_unlock"
+}
+elf_symbol {
+  id: 0xe74ce327
+  name: "rtnl_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x07b52e38
+  type_id: 0x85d454a8
+  full_name: "rtnl_unregister"
+}
+elf_symbol {
+  id: 0x35e3ce18
+  name: "rtnl_unregister_all"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x579e0bf5
+  type_id: 0x09506558
+  full_name: "rtnl_unregister_all"
+}
+elf_symbol {
+  id: 0xb2a4fdfa
+  name: "runqueues"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x5fc45fe1
+  type_id: 0x924a9b47
+  full_name: "runqueues"
+}
+elf_symbol {
+  id: 0x8fb082a6
+  name: "safe_candev_priv"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4054bd25
+  type_id: 0x8426e149
+  full_name: "safe_candev_priv"
+}
+elf_symbol {
+  id: 0x570df167
+  name: "sampling_rate_store"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9d48418d
+  type_id: 0x1d04d3fd
+  full_name: "sampling_rate_store"
+}
+elf_symbol {
+  id: 0x84f045c2
+  name: "sb800_prefetch"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe4cedc9f
+  type_id: 0x1192ec84
+  full_name: "sb800_prefetch"
+}
+elf_symbol {
+  id: 0x4513114c
+  name: "sbitmap_queue_min_shallow_depth"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4e23fddc
+  type_id: 0x1536d7b3
+  full_name: "sbitmap_queue_min_shallow_depth"
+}
+elf_symbol {
+  id: 0x56cb7a36
+  name: "sbitmap_weight"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf2de9307
+  type_id: 0xc3320c3e
+  full_name: "sbitmap_weight"
+}
+elf_symbol {
+  id: 0xe8c754b0
+  name: "scatterwalk_ffwd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5bbdfa26
+  type_id: 0x84ffea0d
+  full_name: "scatterwalk_ffwd"
+}
+elf_symbol {
+  id: 0x12fb2fd6
+  name: "scatterwalk_map_and_copy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x845dbf3b
+  type_id: 0x16e059b3
+  full_name: "scatterwalk_map_and_copy"
+}
+elf_symbol {
+  id: 0xac6ce0b0
+  name: "sched_clock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd653b126
+  type_id: 0x102bb271
+  full_name: "sched_clock"
+}
+elf_symbol {
+  id: 0xe224f61e
+  name: "sched_clock_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x86d43be9
+  type_id: 0x16d1bcdb
+  full_name: "sched_clock_register"
+}
+elf_symbol {
+  id: 0xd2090791
+  name: "sched_feat_keys"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x45897285
+  type_id: 0xe575a4be
+  full_name: "sched_feat_keys"
+}
+elf_symbol {
+  id: 0xedd0d1ed
+  name: "sched_feat_names"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x24c5d441
+  type_id: 0xf58a026d
+  full_name: "sched_feat_names"
+}
+elf_symbol {
+  id: 0xda5d60be
+  name: "sched_set_fifo"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2df40890
+  type_id: 0x17de3be6
+  full_name: "sched_set_fifo"
+}
+elf_symbol {
+  id: 0x33ee29b2
+  name: "sched_set_fifo_low"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2cafb113
+  type_id: 0x17de3be6
+  full_name: "sched_set_fifo_low"
+}
+elf_symbol {
+  id: 0x43533d44
+  name: "sched_set_normal"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf37369e7
+  type_id: 0x1642b8aa
+  full_name: "sched_set_normal"
+}
+elf_symbol {
+  id: 0xa85c9809
+  name: "sched_setattr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5b3e64b8
+  type_id: 0x9a2476b0
+  full_name: "sched_setattr"
+}
+elf_symbol {
+  id: 0xd762c8bb
+  name: "sched_setattr_nocheck"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x31821fb0
+  type_id: 0x9a2476b0
+  full_name: "sched_setattr_nocheck"
+}
+elf_symbol {
+  id: 0x4bf9c130
+  name: "sched_setscheduler"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc67465ed
+  type_id: 0x9b56b28e
+  full_name: "sched_setscheduler"
+}
+elf_symbol {
+  id: 0xdc781a16
+  name: "sched_setscheduler_nocheck"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0a90ee98
+  type_id: 0x9b56b28e
+  full_name: "sched_setscheduler_nocheck"
+}
+elf_symbol {
+  id: 0x5ad6b744
+  name: "sched_show_task"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x31267b07
+  type_id: 0x17de3be6
+  full_name: "sched_show_task"
+}
+elf_symbol {
+  id: 0x67d7bbc2
+  name: "sched_uclamp_used"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x056a37c5
+  type_id: 0x8e47c273
+  full_name: "sched_uclamp_used"
+}
+elf_symbol {
+  id: 0x11ca9115
+  name: "schedule"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x01000e51
+  type_id: 0x10985193
+  full_name: "schedule"
+}
+elf_symbol {
+  id: 0xf4841d33
+  name: "schedule_hrtimeout"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6a460dc5
+  type_id: 0x9f25fe02
+  full_name: "schedule_hrtimeout"
+}
+elf_symbol {
+  id: 0x34a94ed3
+  name: "schedule_timeout"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8ddd8aad
+  type_id: 0x9823bcf6
+  full_name: "schedule_timeout"
+}
+elf_symbol {
+  id: 0xb05cd7bd
+  name: "schedule_timeout_interruptible"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x054496b4
+  type_id: 0x9823bcf6
+  full_name: "schedule_timeout_interruptible"
+}
+elf_symbol {
+  id: 0xf41c5e13
+  name: "schedule_timeout_uninterruptible"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x151f4898
+  type_id: 0x9823bcf6
+  full_name: "schedule_timeout_uninterruptible"
+}
+elf_symbol {
+  id: 0xafbfe5ff
+  name: "scmi_driver_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x583211da
+  type_id: 0x911879fc
+  full_name: "scmi_driver_register"
+}
+elf_symbol {
+  id: 0xf5a7fda4
+  name: "scmi_driver_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x049f4766
+  type_id: 0x1c23d01c
+  full_name: "scmi_driver_unregister"
+}
+elf_symbol {
+  id: 0x3d4320ba
+  name: "scmi_protocol_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x04cb7b15
+  type_id: 0x913b3774
+  full_name: "scmi_protocol_register"
+}
+elf_symbol {
+  id: 0x120bf14f
+  name: "scmi_protocol_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9d0c78f4
+  type_id: 0x1c2385c8
+  full_name: "scmi_protocol_unregister"
+}
+elf_symbol {
+  id: 0xa2bcc818
+  name: "scnprintf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x96848186
+  type_id: 0x9f7ddfb5
+  full_name: "scnprintf"
+}
+elf_symbol {
+  id: 0xa0d4d843
+  name: "scsi_add_host_with_dma"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa9ece0aa
+  type_id: 0x987fb987
+  full_name: "scsi_add_host_with_dma"
+}
+elf_symbol {
+  id: 0x7a6a0afc
+  name: "scsi_alloc_request"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc9ce2047
+  type_id: 0xdde97c3b
+  full_name: "scsi_alloc_request"
+}
+elf_symbol {
+  id: 0x1586d077
+  name: "scsi_autopm_get_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0864be4e
+  type_id: 0x94dfa784
+  full_name: "scsi_autopm_get_device"
+}
+elf_symbol {
+  id: 0x2ee3ef04
+  name: "scsi_autopm_put_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x55ba1da5
+  type_id: 0x19c71538
+  full_name: "scsi_autopm_put_device"
+}
+elf_symbol {
+  id: 0x008a247e
+  name: "scsi_block_requests"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe96b05dd
+  type_id: 0x156efee0
+  full_name: "scsi_block_requests"
+}
+elf_symbol {
+  id: 0xd3148537
+  name: "scsi_block_when_processing_errors"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd27a12cd
+  type_id: 0x94dfa784
+  full_name: "scsi_block_when_processing_errors"
+}
+elf_symbol {
+  id: 0xb5b25b58
+  name: "scsi_build_sense"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x056f7647
+  type_id: 0x1eeb0dff
+  full_name: "scsi_build_sense"
+}
+elf_symbol {
+  id: 0x278a6b59
+  name: "scsi_change_queue_depth"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x76beeee3
+  type_id: 0x954324c8
+  full_name: "scsi_change_queue_depth"
+}
+elf_symbol {
+  id: 0xe4036f2e
+  name: "scsi_cmd_allowed"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc1d5d504
+  type_id: 0xfb8d5eb8
+  full_name: "scsi_cmd_allowed"
+}
+elf_symbol {
+  id: 0xd49d7abc
+  name: "scsi_command_size_tbl"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x0334da4e
+  type_id: 0xd6e2e620
+  full_name: "scsi_command_size_tbl"
+}
+elf_symbol {
+  id: 0x76dea2aa
+  name: "scsi_device_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xebb1ff4f
+  type_id: 0x94dfa784
+  full_name: "scsi_device_get"
+}
+elf_symbol {
+  id: 0x14eb95fa
+  name: "scsi_device_lookup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe368d679
+  type_id: 0xa355dd14
+  full_name: "scsi_device_lookup"
+}
+elf_symbol {
+  id: 0x474e9bcc
+  name: "scsi_device_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x49216112
+  type_id: 0x19c71538
+  full_name: "scsi_device_put"
+}
+elf_symbol {
+  id: 0xf10245da
+  name: "scsi_dma_map"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5f8bb6d0
+  type_id: 0x9265c435
+  full_name: "scsi_dma_map"
+}
+elf_symbol {
+  id: 0x18cbd7f9
+  name: "scsi_dma_unmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfd77d74d
+  type_id: 0x1f7d7689
+  full_name: "scsi_dma_unmap"
+}
+elf_symbol {
+  id: 0x30f6b9b1
+  name: "scsi_done"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbf44ea27
+  type_id: 0x1f7d7689
+  full_name: "scsi_done"
+}
+elf_symbol {
+  id: 0x8ef5c221
+  name: "scsi_execute_cmd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb025f316
+  type_id: 0x94203dd2
+  full_name: "scsi_execute_cmd"
+}
+elf_symbol {
+  id: 0x32b196e0
+  name: "scsi_host_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9f111602
+  type_id: 0x0fe1d65c
+  full_name: "scsi_host_alloc"
+}
+elf_symbol {
+  id: 0x022517f0
+  name: "scsi_host_lookup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x55756e6c
+  type_id: 0x30dc6fbb
+  full_name: "scsi_host_lookup"
+}
+elf_symbol {
+  id: 0x4d8a452e
+  name: "scsi_host_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd1625413
+  type_id: 0x156efee0
+  full_name: "scsi_host_put"
+}
+elf_symbol {
+  id: 0x7509c737
+  name: "scsi_ioctl"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa2b6365c
+  type_id: 0x969313ca
+  full_name: "scsi_ioctl"
+}
+elf_symbol {
+  id: 0xd8a616ba
+  name: "scsi_ioctl_block_when_processing_errors"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb583abbe
+  type_id: 0x95587b1f
+  full_name: "scsi_ioctl_block_when_processing_errors"
+}
+elf_symbol {
+  id: 0xcecaa985
+  name: "scsi_is_host_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x52d41012
+  type_id: 0x92697f90
+  full_name: "scsi_is_host_device"
+}
+elf_symbol {
+  id: 0x36deacf7
+  name: "scsi_normalize_sense"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfbad3cf0
+  type_id: 0xf0fa540a
+  full_name: "scsi_normalize_sense"
+}
+elf_symbol {
+  id: 0xf0e07f22
+  name: "scsi_print_command"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa828941b
+  type_id: 0x1f7d7689
+  full_name: "scsi_print_command"
+}
+elf_symbol {
+  id: 0x63a78c37
+  name: "scsi_print_sense_hdr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x87ffadd5
+  type_id: 0x1df4a619
+  full_name: "scsi_print_sense_hdr"
+}
+elf_symbol {
+  id: 0x5286bfd6
+  name: "scsi_register_interface"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5fed0425
+  type_id: 0x9d725f0c
+  full_name: "scsi_register_interface"
+}
+elf_symbol {
+  id: 0x42390c70
+  name: "scsi_remove_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x84cda96c
+  type_id: 0x19c71538
+  full_name: "scsi_remove_device"
+}
+elf_symbol {
+  id: 0x8deacb1d
+  name: "scsi_remove_host"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x16d974ba
+  type_id: 0x156efee0
+  full_name: "scsi_remove_host"
+}
+elf_symbol {
+  id: 0x2e407415
+  name: "scsi_report_bus_reset"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x13b630c0
+  type_id: 0x14f27dac
+  full_name: "scsi_report_bus_reset"
+}
+elf_symbol {
+  id: 0xc9021692
+  name: "scsi_scan_host"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe5675c9d
+  type_id: 0x156efee0
+  full_name: "scsi_scan_host"
+}
+elf_symbol {
+  id: 0xcf17c9a6
+  name: "scsi_set_sense_information"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x818416e1
+  type_id: 0x9c0921e6
+  full_name: "scsi_set_sense_information"
+}
+elf_symbol {
+  id: 0x9c54c873
+  name: "scsi_unblock_requests"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x45a64ce0
+  type_id: 0x156efee0
+  full_name: "scsi_unblock_requests"
+}
+elf_symbol {
+  id: 0x771aea1d
+  name: "sdev_prefix_printk"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8c96f5ec
+  type_id: 0x1fca95d0
+  full_name: "sdev_prefix_printk"
+}
+elf_symbol {
+  id: 0x8d3c4841
+  name: "sdhci_add_host"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb80580fe
+  type_id: 0x93dfa305
+  full_name: "sdhci_add_host"
+}
+elf_symbol {
+  id: 0x05840f35
+  name: "sdhci_cleanup_host"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3c5cfab9
+  type_id: 0x1ec711b9
+  full_name: "sdhci_cleanup_host"
+}
+elf_symbol {
+  id: 0xa6141872
+  name: "sdhci_cqe_disable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x99b72dfa
+  type_id: 0x1cabfee0
+  full_name: "sdhci_cqe_disable"
+}
+elf_symbol {
+  id: 0x56b779c5
+  name: "sdhci_cqe_enable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbe73df42
+  type_id: 0x1d1e039f
+  full_name: "sdhci_cqe_enable"
+}
+elf_symbol {
+  id: 0xc4c7fcde
+  name: "sdhci_cqe_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x343aa4e2
+  type_id: 0xf3dba0e1
+  full_name: "sdhci_cqe_irq"
+}
+elf_symbol {
+  id: 0x20d4dbb9
+  name: "sdhci_dumpregs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb2028e16
+  type_id: 0x1ec711b9
+  full_name: "sdhci_dumpregs"
+}
+elf_symbol {
+  id: 0x6febaf59
+  name: "sdhci_enable_clk"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1ab5901b
+  type_id: 0x1c822746
+  full_name: "sdhci_enable_clk"
+}
+elf_symbol {
+  id: 0x5ab300fb
+  name: "sdhci_enable_v4_mode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa1c094f0
+  type_id: 0x1ec711b9
+  full_name: "sdhci_enable_v4_mode"
+}
+elf_symbol {
+  id: 0x33d40ef0
+  name: "sdhci_execute_tuning"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x597e0354
+  type_id: 0x9322918f
+  full_name: "sdhci_execute_tuning"
+}
+elf_symbol {
+  id: 0xeb6692c0
+  name: "sdhci_get_property"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdfc75b86
+  type_id: 0x1f55a7e6
+  full_name: "sdhci_get_property"
+}
+elf_symbol {
+  id: 0x38940a34
+  name: "sdhci_pltfm_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9593cf11
+  type_id: 0x1f55a7e6
+  full_name: "sdhci_pltfm_free"
+}
+elf_symbol {
+  id: 0x322ca1cc
+  name: "sdhci_pltfm_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa6e40a77
+  type_id: 0xb019e307
+  full_name: "sdhci_pltfm_init"
+}
+elf_symbol {
+  id: 0xad3b5931
+  name: "sdhci_remove_host"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x243943f4
+  type_id: 0x1f5b92f5
+  full_name: "sdhci_remove_host"
+}
+elf_symbol {
+  id: 0xdc85b8be
+  name: "sdhci_request"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9d669c3f
+  type_id: 0x1dbab156
+  full_name: "sdhci_request"
+}
+elf_symbol {
+  id: 0xd1dc3f24
+  name: "sdhci_request_atomic"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x75f4b1ac
+  type_id: 0x90a203ea
+  full_name: "sdhci_request_atomic"
+}
+elf_symbol {
+  id: 0xa6a2da07
+  name: "sdhci_reset"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x16d3ee28
+  type_id: 0x1e626071
+  full_name: "sdhci_reset"
+}
+elf_symbol {
+  id: 0xa6fc085f
+  name: "sdhci_resume_host"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd557ff21
+  type_id: 0x93dfa305
+  full_name: "sdhci_resume_host"
+}
+elf_symbol {
+  id: 0x4e595f64
+  name: "sdhci_runtime_resume_host"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x76bcf069
+  type_id: 0x92432049
+  full_name: "sdhci_runtime_resume_host"
+}
+elf_symbol {
+  id: 0xd94e8fae
+  name: "sdhci_runtime_suspend_host"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdfd7c218
+  type_id: 0x93dfa305
+  full_name: "sdhci_runtime_suspend_host"
+}
+elf_symbol {
+  id: 0xd2399e18
+  name: "sdhci_set_bus_width"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd4a016d9
+  type_id: 0x1f5b92f5
+  full_name: "sdhci_set_bus_width"
+}
+elf_symbol {
+  id: 0xa6c906b5
+  name: "sdhci_set_power_noreg"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe918e046
+  type_id: 0x1f835b6f
+  full_name: "sdhci_set_power_noreg"
+}
+elf_symbol {
+  id: 0x5cc4535c
+  name: "sdhci_setup_host"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbcb23378
+  type_id: 0x93dfa305
+  full_name: "sdhci_setup_host"
+}
+elf_symbol {
+  id: 0x7d2c4acc
+  name: "sdhci_suspend_host"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x36a08a36
+  type_id: 0x93dfa305
+  full_name: "sdhci_suspend_host"
+}
+elf_symbol {
+  id: 0x1f593233
+  name: "sdio_claim_host"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe0e2d4ea
+  type_id: 0x1402e6d4
+  full_name: "sdio_claim_host"
+}
+elf_symbol {
+  id: 0x808ff24a
+  name: "sdio_claim_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xed16fd15
+  type_id: 0x99b6bd9e
+  full_name: "sdio_claim_irq"
+}
+elf_symbol {
+  id: 0xd40f1edd
+  name: "sdio_disable_func"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbd8a604c
+  type_id: 0x991a5468
+  full_name: "sdio_disable_func"
+}
+elf_symbol {
+  id: 0xb1df15e0
+  name: "sdio_enable_func"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x23d4a231
+  type_id: 0x991a5468
+  full_name: "sdio_enable_func"
+}
+elf_symbol {
+  id: 0x08c47cc6
+  name: "sdio_f0_readb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x10170c8d
+  type_id: 0xc851cf67
+  full_name: "sdio_f0_readb"
+}
+elf_symbol {
+  id: 0x48499e9a
+  name: "sdio_f0_writeb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4a4c8400
+  type_id: 0x1565cfbb
+  full_name: "sdio_f0_writeb"
+}
+elf_symbol {
+  id: 0x3ea6cb2c
+  name: "sdio_get_host_pm_caps"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x157a6003
+  type_id: 0x0b1cd712
+  full_name: "sdio_get_host_pm_caps"
+}
+elf_symbol {
+  id: 0x26011f31
+  name: "sdio_memcpy_fromio"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd6889779
+  type_id: 0x99685c26
+  full_name: "sdio_memcpy_fromio"
+}
+elf_symbol {
+  id: 0x252b1748
+  name: "sdio_memcpy_toio"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2554ef1d
+  type_id: 0x980bf22a
+  full_name: "sdio_memcpy_toio"
+}
+elf_symbol {
+  id: 0xbd7218cd
+  name: "sdio_readb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb270009e
+  type_id: 0x56c2caab
+  full_name: "sdio_readb"
+}
+elf_symbol {
+  id: 0x8ef4fedc
+  name: "sdio_readl"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa34148c4
+  type_id: 0x40705fbe
+  full_name: "sdio_readl"
+}
+elf_symbol {
+  id: 0x4f956c89
+  name: "sdio_readsb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb9490bd5
+  type_id: 0x99685c26
+  full_name: "sdio_readsb"
+}
+elf_symbol {
+  id: 0x3003f174
+  name: "sdio_register_driver"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x87c695c0
+  type_id: 0x92a01938
+  full_name: "sdio_register_driver"
+}
+elf_symbol {
+  id: 0xf85ae22f
+  name: "sdio_release_host"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x24435e40
+  type_id: 0x1402e6d4
+  full_name: "sdio_release_host"
+}
+elf_symbol {
+  id: 0xcca4d1a0
+  name: "sdio_release_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0b37557b
+  type_id: 0x991a5468
+  full_name: "sdio_release_irq"
+}
+elf_symbol {
+  id: 0xc3a3db62
+  name: "sdio_set_block_size"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x21ed1f43
+  type_id: 0x980c41f0
+  full_name: "sdio_set_block_size"
+}
+elf_symbol {
+  id: 0xc472be84
+  name: "sdio_set_host_pm_flags"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb131e411
+  type_id: 0x99eaebce
+  full_name: "sdio_set_host_pm_flags"
+}
+elf_symbol {
+  id: 0x842bd7b1
+  name: "sdio_signal_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x54311161
+  type_id: 0x1d1e039f
+  full_name: "sdio_signal_irq"
+}
+elf_symbol {
+  id: 0x01c90481
+  name: "sdio_unregister_driver"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4b95327b
+  type_id: 0x1fb8ab84
+  full_name: "sdio_unregister_driver"
+}
+elf_symbol {
+  id: 0xfdf415e2
+  name: "sdio_writeb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6092e490
+  type_id: 0x14b6bb25
+  full_name: "sdio_writeb"
+}
+elf_symbol {
+  id: 0xbf0b0a4c
+  name: "sdio_writeb_readb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0361321c
+  type_id: 0x576454c1
+  full_name: "sdio_writeb_readb"
+}
+elf_symbol {
+  id: 0x4a4e8bee
+  name: "sdio_writel"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x671fb995
+  type_id: 0x1737ea41
+  full_name: "sdio_writel"
+}
+elf_symbol {
+  id: 0x5b060b7d
+  name: "sdio_writesb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf9e684dc
+  type_id: 0x980bf22a
+  full_name: "sdio_writesb"
+}
+elf_symbol {
+  id: 0xec171799
+  name: "security_file_ioctl"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x352ef55b
+  type_id: 0x9aa0b156
+  full_name: "security_file_ioctl"
+}
+elf_symbol {
+  id: 0x24b9d7ed
+  name: "security_sk_classify_flow"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4c83cd6a
+  type_id: 0x17b914a8
+  full_name: "security_sk_classify_flow"
+}
+elf_symbol {
+  id: 0x25471057
+  name: "security_sk_clone"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe06141e9
+  type_id: 0x1ef51155
+  full_name: "security_sk_clone"
+}
+elf_symbol {
+  id: 0xb77dc501
+  name: "security_sock_graft"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0da10ec3
+  type_id: 0x1788ddaf
+  full_name: "security_sock_graft"
+}
+elf_symbol {
+  id: 0xb543d6ba
+  name: "select_fallback_rq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x37c45c03
+  type_id: 0x843cb143
+  full_name: "select_fallback_rq"
+}
+elf_symbol {
+  id: 0x569844be
+  name: "send_sig"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x49a34c8d
+  type_id: 0x84257977
+  full_name: "send_sig"
+}
+elf_symbol {
+  id: 0x17b3f8eb
+  name: "send_sig_info"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb2a9dcfb
+  type_id: 0x84af08b2
+  full_name: "send_sig_info"
+}
+elf_symbol {
+  id: 0x4814ecd5
+  name: "seq_buf_printf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe397caf5
+  type_id: 0x9ccb56bc
+  full_name: "seq_buf_printf"
+}
+elf_symbol {
+  id: 0xb2b0c8fa
+  name: "seq_hex_dump"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x118a94a8
+  type_id: 0x11e1274d
+  full_name: "seq_hex_dump"
+}
+elf_symbol {
+  id: 0xfb710d3e
+  name: "seq_hlist_next"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x75bda77a
+  type_id: 0x43fd9a51
+  full_name: "seq_hlist_next"
+}
+elf_symbol {
+  id: 0x0af60b8b
+  name: "seq_hlist_start_head"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3dfc897c
+  type_id: 0x42749d40
+  full_name: "seq_hlist_start_head"
+}
+elf_symbol {
+  id: 0xe0349007
+  name: "seq_lseek"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x11f8a681
+  type_id: 0x2d64ae3e
+  full_name: "seq_lseek"
+}
+elf_symbol {
+  id: 0xfae0b182
+  name: "seq_open"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x282ef6fb
+  type_id: 0x9b472ec5
+  full_name: "seq_open"
+}
+elf_symbol {
+  id: 0x9ef87854
+  name: "seq_open_private"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x96d03e07
+  type_id: 0x9b5ee6f1
+  full_name: "seq_open_private"
+}
+elf_symbol {
+  id: 0xc5442265
+  name: "seq_printf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x04be4820
+  type_id: 0x11d02068
+  full_name: "seq_printf"
+}
+elf_symbol {
+  id: 0x25bebf3b
+  name: "seq_putc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x78eb48ca
+  type_id: 0x11e015cb
+  full_name: "seq_putc"
+}
+elf_symbol {
+  id: 0x59b4ca07
+  name: "seq_puts"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x18d2d657
+  type_id: 0x11f96aea
+  full_name: "seq_puts"
+}
+elf_symbol {
+  id: 0xba8007cd
+  name: "seq_read"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd963f308
+  type_id: 0x12e4741f
+  full_name: "seq_read"
+}
+elf_symbol {
+  id: 0x91763ae6
+  name: "seq_release"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcdd6b02a
+  type_id: 0x9b022eae
+  full_name: "seq_release"
+}
+elf_symbol {
+  id: 0x2cc9ecc6
+  name: "seq_release_private"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x42e848ca
+  type_id: 0x9b022eae
+  full_name: "seq_release_private"
+}
+elf_symbol {
+  id: 0x56c495a4
+  name: "seq_vprintf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5edd4e69
+  type_id: 0x11c013b1
+  full_name: "seq_vprintf"
+}
+elf_symbol {
+  id: 0x331ad54e
+  name: "seq_write"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x82c86595
+  type_id: 0x9cc0eb8f
+  full_name: "seq_write"
+}
+elf_symbol {
+  id: 0x6f6a6551
+  name: "serdev_device_close"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x321c16b5
+  type_id: 0x1e70c9ff
+  full_name: "serdev_device_close"
+}
+elf_symbol {
+  id: 0xd9f835a5
+  name: "serdev_device_get_tiocm"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x26c19d68
+  type_id: 0x93687b43
+  full_name: "serdev_device_get_tiocm"
+}
+elf_symbol {
+  id: 0xe17d94e2
+  name: "serdev_device_open"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8865f74c
+  type_id: 0x93687b43
+  full_name: "serdev_device_open"
+}
+elf_symbol {
+  id: 0x704b33f2
+  name: "serdev_device_set_baudrate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4bb71c26
+  type_id: 0xc125f30f
+  full_name: "serdev_device_set_baudrate"
+}
+elf_symbol {
+  id: 0x39477e15
+  name: "serdev_device_set_flow_control"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x49e59315
+  type_id: 0x1fc53480
+  full_name: "serdev_device_set_flow_control"
+}
+elf_symbol {
+  id: 0x05a66e98
+  name: "serdev_device_set_tiocm"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x126805b7
+  type_id: 0x92ed303b
+  full_name: "serdev_device_set_tiocm"
+}
+elf_symbol {
+  id: 0x3c71822d
+  name: "serdev_device_wait_until_sent"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x251738bc
+  type_id: 0x1d80f189
+  full_name: "serdev_device_wait_until_sent"
+}
+elf_symbol {
+  id: 0x6e10178a
+  name: "serdev_device_write_buf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbd9c58c1
+  type_id: 0x93b44747
+  full_name: "serdev_device_write_buf"
+}
+elf_symbol {
+  id: 0x5d6a93ff
+  name: "serdev_device_write_flush"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x67cfcf54
+  type_id: 0x1e70c9ff
+  full_name: "serdev_device_write_flush"
+}
+elf_symbol {
+  id: 0x2bb7ad6a
+  name: "serial8250_do_set_termios"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x001789e2
+  type_id: 0x104fea57
+  full_name: "serial8250_do_set_termios"
+}
+elf_symbol {
+  id: 0x4bb58367
+  name: "serial8250_do_shutdown"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x74119000
+  type_id: 0x10b5b48c
+  full_name: "serial8250_do_shutdown"
+}
+elf_symbol {
+  id: 0x63762e51
+  name: "serial8250_do_startup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xece68f9d
+  type_id: 0x9dad0630
+  full_name: "serial8250_do_startup"
+}
+elf_symbol {
+  id: 0x3e462ca5
+  name: "serial8250_get_port"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1733e179
+  type_id: 0x56706cd5
+  full_name: "serial8250_get_port"
+}
+elf_symbol {
+  id: 0x970aca32
+  name: "serial8250_register_8250_port"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x19a86ac6
+  type_id: 0x93801804
+  full_name: "serial8250_register_8250_port"
+}
+elf_symbol {
+  id: 0x7e56f1cb
+  name: "serial8250_resume_port"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc7208c3a
+  type_id: 0x09506558
+  full_name: "serial8250_resume_port"
+}
+elf_symbol {
+  id: 0xb28c2541
+  name: "serial8250_rpm_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x032acd76
+  type_id: 0x17abf19b
+  full_name: "serial8250_rpm_get"
+}
+elf_symbol {
+  id: 0xf8889a4c
+  name: "serial8250_rpm_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x83c89b47
+  type_id: 0x17abf19b
+  full_name: "serial8250_rpm_put"
+}
+elf_symbol {
+  id: 0x89ed643c
+  name: "serial8250_suspend_port"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcc248d26
+  type_id: 0x09506558
+  full_name: "serial8250_suspend_port"
+}
+elf_symbol {
+  id: 0x620f0859
+  name: "serial8250_unregister_port"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcefcd99a
+  type_id: 0x09506558
+  full_name: "serial8250_unregister_port"
+}
+elf_symbol {
+  id: 0x4e412a59
+  name: "serio_close"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x59a34821
+  type_id: 0x10256efa
+  full_name: "serio_close"
+}
+elf_symbol {
+  id: 0xaf2bd97c
+  name: "serio_interrupt"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc65ab4eb
+  type_id: 0x231edf87
+  full_name: "serio_interrupt"
+}
+elf_symbol {
+  id: 0x5b1dd2cc
+  name: "serio_open"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x65308694
+  type_id: 0x9d191a3a
+  full_name: "serio_open"
+}
+elf_symbol {
+  id: 0x7a3ba5ab
+  name: "serio_reconnect"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xda8a736f
+  type_id: 0x10256efa
+  full_name: "serio_reconnect"
+}
+elf_symbol {
+  id: 0x2189bf03
+  name: "serio_rescan"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x28dd4d41
+  type_id: 0x10256efa
+  full_name: "serio_rescan"
+}
+elf_symbol {
+  id: 0x9a2a9bda
+  name: "serio_unregister_child_port"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf28546e2
+  type_id: 0x10256efa
+  full_name: "serio_unregister_child_port"
+}
+elf_symbol {
+  id: 0x54732419
+  name: "serio_unregister_driver"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xda8987ba
+  type_id: 0x12d43657
+  full_name: "serio_unregister_driver"
+}
+elf_symbol {
+  id: 0x7df87144
+  name: "serio_unregister_port"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3a6a5b23
+  type_id: 0x10256efa
+  full_name: "serio_unregister_port"
+}
+elf_symbol {
+  id: 0xdfe1cb53
+  name: "set_blocksize"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x77df292b
+  type_id: 0x9f17e634
+  full_name: "set_blocksize"
+}
+elf_symbol {
+  id: 0x2c6a64fa
+  name: "set_capacity"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x41797080
+  type_id: 0x1b96d351
+  full_name: "set_capacity"
+}
+elf_symbol {
+  id: 0x689737cf
+  name: "set_capacity_and_notify"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x50798f66
+  type_id: 0xf5aad9c6
+  full_name: "set_capacity_and_notify"
+}
+elf_symbol {
+  id: 0x7b6738b5
+  name: "set_cpus_allowed_ptr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6c4198dc
+  type_id: 0x9a02b25a
+  full_name: "set_cpus_allowed_ptr"
+}
+elf_symbol {
+  id: 0x07b831b6
+  name: "set_direct_map_range_uncached"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x88976880
+  type_id: 0x91906f9c
+  full_name: "set_direct_map_range_uncached"
+}
+elf_symbol {
+  id: 0x1f625c64
+  name: "set_disk_ro"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3c741bc2
+  type_id: 0x1961e0a6
+  full_name: "set_disk_ro"
+}
+elf_symbol {
+  id: 0x180ceb0c
+  name: "set_freezable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9e61bb05
+  type_id: 0xfea45b04
+  full_name: "set_freezable"
+}
+elf_symbol {
+  id: 0x19ed5e1a
+  name: "set_next_entity"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6d24d2d3
+  type_id: 0x130ef56d
+  full_name: "set_next_entity"
+}
+elf_symbol {
+  id: 0xaae00157
+  name: "set_normalized_timespec64"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x365acda7
+  type_id: 0x13b77375
+  full_name: "set_normalized_timespec64"
+}
+elf_symbol {
+  id: 0x455375fa
+  name: "set_page_dirty"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x991afb8d
+  type_id: 0xff048ca3
+  full_name: "set_page_dirty"
+}
+elf_symbol {
+  id: 0xc1ea8aaa
+  name: "set_page_dirty_lock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbfa529f4
+  type_id: 0x9c203488
+  full_name: "set_page_dirty_lock"
+}
+elf_symbol {
+  id: 0xe19d98a9
+  name: "set_task_cpu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb4809261
+  type_id: 0x16c82e7e
+  full_name: "set_task_cpu"
+}
+elf_symbol {
+  id: 0xdebcf3e9
+  name: "set_user_nice"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x81bb3e77
+  type_id: 0x142e0390
+  full_name: "set_user_nice"
+}
+elf_symbol {
+  id: 0x5d6d169f
+  name: "setup_udp_tunnel_sock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcfb61ede
+  type_id: 0x13f4af03
+  full_name: "setup_udp_tunnel_sock"
+}
+elf_symbol {
+  id: 0x023858a0
+  name: "sg_alloc_table"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3a2f6702
+  type_id: 0x9c839314
+  full_name: "sg_alloc_table"
+}
+elf_symbol {
+  id: 0x7b2c2128
+  name: "sg_alloc_table_chained"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1bee4974
+  type_id: 0x9c30099c
+  full_name: "sg_alloc_table_chained"
+}
+elf_symbol {
+  id: 0x69cf76f8
+  name: "sg_alloc_table_from_pages_segment"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x84f227df
+  type_id: 0x9d955638
+  full_name: "sg_alloc_table_from_pages_segment"
+}
+elf_symbol {
+  id: 0x9f643b02
+  name: "sg_copy_buffer"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8ac743de
+  type_id: 0x925feaa4
+  full_name: "sg_copy_buffer"
+}
+elf_symbol {
+  id: 0x37d43848
+  name: "sg_copy_from_buffer"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x905695ab
+  type_id: 0x9257b558
+  full_name: "sg_copy_from_buffer"
+}
+elf_symbol {
+  id: 0x9b754839
+  name: "sg_copy_to_buffer"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x02b8ab42
+  type_id: 0x925fddc4
+  full_name: "sg_copy_to_buffer"
+}
+elf_symbol {
+  id: 0xe9c59a02
+  name: "sg_free_table"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7f5b4fe4
+  type_id: 0x10b15d87
+  full_name: "sg_free_table"
+}
+elf_symbol {
+  id: 0x7aad3cde
+  name: "sg_free_table_chained"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x274dd1a3
+  type_id: 0x11a7481f
+  full_name: "sg_free_table_chained"
+}
+elf_symbol {
+  id: 0x9c381e9a
+  name: "sg_init_one"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb320cc0e
+  type_id: 0x141eb21f
+  full_name: "sg_init_one"
+}
+elf_symbol {
+  id: 0xcf06c075
+  name: "sg_init_table"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf888ca21
+  type_id: 0x15fdba89
+  full_name: "sg_init_table"
+}
+elf_symbol {
+  id: 0xc335d09a
+  name: "sg_last"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc5f7e801
+  type_id: 0x85bfa124
+  full_name: "sg_last"
+}
+elf_symbol {
+  id: 0xed461eb7
+  name: "sg_miter_next"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xda32ddb0
+  type_id: 0xf226477c
+  full_name: "sg_miter_next"
+}
+elf_symbol {
+  id: 0x9c9476f8
+  name: "sg_miter_skip"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9b967351
+  type_id: 0xf14b1ed8
+  full_name: "sg_miter_skip"
+}
+elf_symbol {
+  id: 0x0e434d19
+  name: "sg_miter_start"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xab8ec0db
+  type_id: 0x1c4d054f
+  full_name: "sg_miter_start"
+}
+elf_symbol {
+  id: 0x124a6437
+  name: "sg_miter_stop"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8d489322
+  type_id: 0x1c1a4deb
+  full_name: "sg_miter_stop"
+}
+elf_symbol {
+  id: 0x005702f9
+  name: "sg_nents"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x461d16ca
+  type_id: 0x99f31dad
+  full_name: "sg_nents"
+}
+elf_symbol {
+  id: 0x80197b32
+  name: "sg_nents_for_len"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4230a8d7
+  type_id: 0x9bbb9163
+  full_name: "sg_nents_for_len"
+}
+elf_symbol {
+  id: 0x55c5bdf3
+  name: "sg_next"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x87b8798d
+  type_id: 0x84a9b4bc
+  full_name: "sg_next"
+}
+elf_symbol {
+  id: 0x7c74f0ec
+  name: "sg_pcopy_from_buffer"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd0fe8d51
+  type_id: 0x9257838d
+  full_name: "sg_pcopy_from_buffer"
+}
+elf_symbol {
+  id: 0x8525915d
+  name: "sg_pcopy_to_buffer"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xea778fab
+  type_id: 0x925feb11
+  full_name: "sg_pcopy_to_buffer"
+}
+elf_symbol {
+  id: 0x12402fa7
+  name: "sget_fc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf19764e1
+  type_id: 0xf07462c6
+  full_name: "sget_fc"
+}
+elf_symbol {
+  id: 0x7f3b48aa
+  name: "shmem_file_setup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe030574b
+  type_id: 0x4e848709
+  full_name: "shmem_file_setup"
+}
+elf_symbol {
+  id: 0xf47010e0
+  name: "shmem_read_mapping_page_gfp"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x97b9e11b
+  type_id: 0xb809e664
+  full_name: "shmem_read_mapping_page_gfp"
+}
+elf_symbol {
+  id: 0x436ee92c
+  name: "shmem_truncate_range"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcfa71412
+  type_id: 0x16ee4350
+  full_name: "shmem_truncate_range"
+}
+elf_symbol {
+  id: 0xd2beae59
+  name: "show_rcu_gp_kthreads"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4f6a07fe
+  type_id: 0x10985193
+  full_name: "show_rcu_gp_kthreads"
+}
+elf_symbol {
+  id: 0x96bd64f2
+  name: "show_rcu_tasks_classic_gp_kthread"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd74e400f
+  type_id: 0x10985193
+  full_name: "show_rcu_tasks_classic_gp_kthread"
+}
+elf_symbol {
+  id: 0x064eb0d1
+  name: "show_rcu_tasks_trace_gp_kthread"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7c291e86
+  type_id: 0x10985193
+  full_name: "show_rcu_tasks_trace_gp_kthread"
+}
+elf_symbol {
+  id: 0xbf6056e5
+  name: "show_regs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x707b45a0
+  type_id: 0x10d0da4c
+  full_name: "show_regs"
+}
+elf_symbol {
+  id: 0xaba9754d
+  name: "si_mem_available"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x785a93b4
+  type_id: 0xa7203b99
+  full_name: "si_mem_available"
+}
+elf_symbol {
+  id: 0x6a9fad39
+  name: "si_meminfo"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x40c7247c
+  type_id: 0x1dcd0419
+  full_name: "si_meminfo"
+}
+elf_symbol {
+  id: 0x99c66454
+  name: "si_swapinfo"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xec13c83c
+  namespace: "MINIDUMP"
+  type_id: 0x1dcd0419
+  full_name: "si_swapinfo"
+}
+elf_symbol {
+  id: 0xfc18945f
+  name: "simple_attr_open"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x70d5e5c7
+  type_id: 0x9b0987fe
+  full_name: "simple_attr_open"
+}
+elf_symbol {
+  id: 0xcbc81720
+  name: "simple_attr_read"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2045fc18
+  type_id: 0x12e4741f
+  full_name: "simple_attr_read"
+}
+elf_symbol {
+  id: 0xda8bd5f1
+  name: "simple_attr_release"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x64e1a89d
+  type_id: 0x9b022eae
+  full_name: "simple_attr_release"
+}
+elf_symbol {
+  id: 0xa07fb91d
+  name: "simple_attr_write"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1cab394e
+  type_id: 0x120e3950
+  full_name: "simple_attr_write"
+}
+elf_symbol {
+  id: 0x40c45272
+  name: "simple_dir_inode_operations"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x29a368a9
+  type_id: 0xd4846363
+  full_name: "simple_dir_inode_operations"
+}
+elf_symbol {
+  id: 0xbdcb1d7d
+  name: "simple_dir_operations"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xd5d94f04
+  type_id: 0xf10425d9
+  full_name: "simple_dir_operations"
+}
+elf_symbol {
+  id: 0x341fb250
+  name: "simple_open"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfc86e386
+  type_id: 0x9b022eae
+  full_name: "simple_open"
+}
+elf_symbol {
+  id: 0x2deba225
+  name: "simple_read_from_buffer"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9c81ceff
+  type_id: 0x110e6a6f
+  full_name: "simple_read_from_buffer"
+}
+elf_symbol {
+  id: 0x7a099f60
+  name: "simple_statfs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6956ad9a
+  type_id: 0x99ed1149
+  full_name: "simple_statfs"
+}
+elf_symbol {
+  id: 0xa63a57d8
+  name: "simple_strtol"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0b742fd7
+  type_id: 0xa89bb486
+  full_name: "simple_strtol"
+}
+elf_symbol {
+  id: 0xd438cd46
+  name: "simple_strtoll"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd7e56a4e
+  type_id: 0x4e440d75
+  full_name: "simple_strtoll"
+}
+elf_symbol {
+  id: 0xa58f5af9
+  name: "simple_strtoul"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x20000329
+  type_id: 0x3e17424c
+  full_name: "simple_strtoul"
+}
+elf_symbol {
+  id: 0x5f5db40c
+  name: "simple_strtoull"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x61b7b126
+  type_id: 0x1f903d6e
+  full_name: "simple_strtoull"
+}
+elf_symbol {
+  id: 0xb9d20cc1
+  name: "simple_write_to_buffer"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x113858c3
+  type_id: 0x110e6a6f
+  full_name: "simple_write_to_buffer"
+}
+elf_symbol {
+  id: 0x935a92ca
+  name: "single_open"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4adb51eb
+  type_id: 0x9b0a6d47
+  full_name: "single_open"
+}
+elf_symbol {
+  id: 0x4f6b19f1
+  name: "single_open_size"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6ca499dc
+  type_id: 0x9b09bd92
+  full_name: "single_open_size"
+}
+elf_symbol {
+  id: 0xd4ea779d
+  name: "single_release"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe8f7183d
+  type_id: 0x9b022eae
+  full_name: "single_release"
+}
+elf_symbol {
+  id: 0x67a38bc7
+  name: "sk_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6cad6404
+  type_id: 0x6ecc6402
+  full_name: "sk_alloc"
+}
+elf_symbol {
+  id: 0xd7cc5056
+  name: "sk_common_release"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x014477ca
+  type_id: 0x17c95d08
+  full_name: "sk_common_release"
+}
+elf_symbol {
+  id: 0x40df740b
+  name: "sk_error_report"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0b28e75b
+  type_id: 0x17c95d08
+  full_name: "sk_error_report"
+}
+elf_symbol {
+  id: 0x89a97545
+  name: "sk_filter_trim_cap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf5845708
+  type_id: 0x9ad5b349
+  full_name: "sk_filter_trim_cap"
+}
+elf_symbol {
+  id: 0x62f414d0
+  name: "sk_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x052a5c8f
+  type_id: 0x17c95d08
+  full_name: "sk_free"
+}
+elf_symbol {
+  id: 0x517294f8
+  name: "sk_reset_timer"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x35dc5f2e
+  type_id: 0x173d585f
+  full_name: "sk_reset_timer"
+}
+elf_symbol {
+  id: 0xa3febb65
+  name: "sk_setup_caps"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xea742b43
+  type_id: 0x17803a85
+  full_name: "sk_setup_caps"
+}
+elf_symbol {
+  id: 0x1bedb04f
+  name: "sk_stop_timer"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x37886892
+  type_id: 0x17318506
+  full_name: "sk_stop_timer"
+}
+elf_symbol {
+  id: 0xd8114005
+  name: "skb_add_rx_frag"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x79586ffa
+  type_id: 0x10572c13
+  full_name: "skb_add_rx_frag"
+}
+elf_symbol {
+  id: 0x736f4bcb
+  name: "skb_append_pagefrags"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x26105e29
+  type_id: 0x9cd32cf2
+  full_name: "skb_append_pagefrags"
+}
+elf_symbol {
+  id: 0x3ffd8828
+  name: "skb_checksum"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xefe8d364
+  type_id: 0x345f1809
+  full_name: "skb_checksum"
+}
+elf_symbol {
+  id: 0x38f9f2a7
+  name: "skb_checksum_help"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbcac167c
+  type_id: 0x9cd33969
+  full_name: "skb_checksum_help"
+}
+elf_symbol {
+  id: 0x5d5ff743
+  name: "skb_clone"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe48b1404
+  type_id: 0x6a0b7818
+  full_name: "skb_clone"
+}
+elf_symbol {
+  id: 0x091ef2aa
+  name: "skb_clone_sk"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xed2a513b
+  type_id: 0x69cde367
+  full_name: "skb_clone_sk"
+}
+elf_symbol {
+  id: 0x6bf3e0a9
+  name: "skb_coalesce_rx_frag"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x98ad7d34
+  type_id: 0x104fd6b8
+  full_name: "skb_coalesce_rx_frag"
+}
+elf_symbol {
+  id: 0xd3102305
+  name: "skb_complete_tx_timestamp"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x84152f15
+  type_id: 0x11d3a4b4
+  full_name: "skb_complete_tx_timestamp"
+}
+elf_symbol {
+  id: 0xe9b464cc
+  name: "skb_complete_wifi_ack"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9a7f42c9
+  type_id: 0x107e76aa
+  full_name: "skb_complete_wifi_ack"
+}
+elf_symbol {
+  id: 0x49088d8f
+  name: "skb_copy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x91e767fe
+  type_id: 0x64c047e6
+  full_name: "skb_copy"
+}
+elf_symbol {
+  id: 0x267fd1ec
+  name: "skb_copy_bits"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdaa46a17
+  type_id: 0x93833601
+  full_name: "skb_copy_bits"
+}
+elf_symbol {
+  id: 0x9065463e
+  name: "skb_copy_datagram_from_iter"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x38f86852
+  type_id: 0x9d45fa50
+  full_name: "skb_copy_datagram_from_iter"
+}
+elf_symbol {
+  id: 0x5f0785ba
+  name: "skb_copy_datagram_iter"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe274a30f
+  type_id: 0x938ec5ae
+  full_name: "skb_copy_datagram_iter"
+}
+elf_symbol {
+  id: 0x9d80748f
+  name: "skb_copy_expand"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2204b34d
+  type_id: 0x6680517a
+  full_name: "skb_copy_expand"
+}
+elf_symbol {
+  id: 0x7887ea8f
+  name: "skb_copy_ubufs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x738276d2
+  type_id: 0x9f15a216
+  full_name: "skb_copy_ubufs"
+}
+elf_symbol {
+  id: 0xf1f40891
+  name: "skb_cow_data"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x141b1684
+  type_id: 0x9d4d4add
+  full_name: "skb_cow_data"
+}
+elf_symbol {
+  id: 0xe40dd16b
+  name: "skb_dequeue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3a908023
+  type_id: 0x6f42ce8a
+  full_name: "skb_dequeue"
+}
+elf_symbol {
+  id: 0xe3dfe241
+  name: "skb_dequeue_tail"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa591e06f
+  type_id: 0x6f42ce8a
+  full_name: "skb_dequeue_tail"
+}
+elf_symbol {
+  id: 0x33735fec
+  name: "skb_ensure_writable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeea1ccc8
+  type_id: 0x9dc52cf1
+  full_name: "skb_ensure_writable"
+}
+elf_symbol {
+  id: 0xca7402ca
+  name: "skb_free_datagram"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x92888700
+  type_id: 0x17dc60ac
+  full_name: "skb_free_datagram"
+}
+elf_symbol {
+  id: 0x778992cc
+  name: "skb_page_frag_refill"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x58fad65c
+  type_id: 0xef54849c
+  full_name: "skb_page_frag_refill"
+}
+elf_symbol {
+  id: 0x0e0dc50e
+  name: "skb_partial_csum_set"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3f03a4aa
+  type_id: 0xfd96e4d2
+  full_name: "skb_partial_csum_set"
+}
+elf_symbol {
+  id: 0x90d072a5
+  name: "skb_pull"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbe5e92c9
+  type_id: 0x56d37e2f
+  full_name: "skb_pull"
+}
+elf_symbol {
+  id: 0x859796a9
+  name: "skb_pull_data"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc5f73848
+  type_id: 0x5415be16
+  full_name: "skb_pull_data"
+}
+elf_symbol {
+  id: 0x3f4150a5
+  name: "skb_pull_rcsum"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4ecfcf3d
+  type_id: 0x56d37e2f
+  full_name: "skb_pull_rcsum"
+}
+elf_symbol {
+  id: 0xae246c18
+  name: "skb_push"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb0cdde42
+  type_id: 0x56d37e2f
+  full_name: "skb_push"
+}
+elf_symbol {
+  id: 0x9d194bee
+  name: "skb_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xac7a3881
+  type_id: 0x56d37e2f
+  full_name: "skb_put"
+}
+elf_symbol {
+  id: 0xe12b6ced
+  name: "skb_queue_head"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x73234170
+  type_id: 0x17519b9c
+  full_name: "skb_queue_head"
+}
+elf_symbol {
+  id: 0x2204e0c5
+  name: "skb_queue_purge"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbf2d8fce
+  type_id: 0x1744a638
+  full_name: "skb_queue_purge"
+}
+elf_symbol {
+  id: 0xc680f7e5
+  name: "skb_queue_tail"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfd2a2296
+  type_id: 0x17519b9c
+  full_name: "skb_queue_tail"
+}
+elf_symbol {
+  id: 0xa393d439
+  name: "skb_realloc_headroom"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd1063544
+  type_id: 0x68dbf6ff
+  full_name: "skb_realloc_headroom"
+}
+elf_symbol {
+  id: 0x3c015632
+  name: "skb_recv_datagram"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x61bca68c
+  type_id: 0x6eddf621
+  full_name: "skb_recv_datagram"
+}
+elf_symbol {
+  id: 0xea81e880
+  name: "skb_scrub_packet"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa01713cf
+  type_id: 0x107e76aa
+  full_name: "skb_scrub_packet"
+}
+elf_symbol {
+  id: 0xd1b9e255
+  name: "skb_set_owner_w"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x344ead72
+  type_id: 0x11be9b1c
+  full_name: "skb_set_owner_w"
+}
+elf_symbol {
+  id: 0x24587583
+  name: "skb_split"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9fb1a84a
+  type_id: 0x11ecf47b
+  full_name: "skb_split"
+}
+elf_symbol {
+  id: 0xf23330c5
+  name: "skb_store_bits"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x38428244
+  type_id: 0x9d406163
+  full_name: "skb_store_bits"
+}
+elf_symbol {
+  id: 0x05746b6c
+  name: "skb_to_sgvec"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9201603f
+  type_id: 0x9c8c5236
+  full_name: "skb_to_sgvec"
+}
+elf_symbol {
+  id: 0xd034d018
+  name: "skb_trim"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x584525af
+  type_id: 0x10dd9e4d
+  full_name: "skb_trim"
+}
+elf_symbol {
+  id: 0x745d77d7
+  name: "skb_try_coalesce"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf71caf48
+  type_id: 0xffe6827d
+  full_name: "skb_try_coalesce"
+}
+elf_symbol {
+  id: 0xee44d535
+  name: "skb_tstamp_tx"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9028251a
+  type_id: 0x11d3a4b4
+  full_name: "skb_tstamp_tx"
+}
+elf_symbol {
+  id: 0xeedc57e1
+  name: "skb_unlink"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9451ec1c
+  type_id: 0x11b644af
+  full_name: "skb_unlink"
+}
+elf_symbol {
+  id: 0x57adf54a
+  name: "skip_spaces"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb71589f0
+  type_id: 0x31ba2c8d
+  full_name: "skip_spaces"
+}
+elf_symbol {
+  id: 0xcfc71fe1
+  name: "slhc_compress"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdcdc0040
+  type_id: 0x98950a48
+  full_name: "slhc_compress"
+}
+elf_symbol {
+  id: 0xadfa8107
+  name: "slhc_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2a928918
+  type_id: 0x15e3c455
+  full_name: "slhc_free"
+}
+elf_symbol {
+  id: 0xa9faaf0c
+  name: "slhc_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x15f90688
+  type_id: 0x940e6be5
+  full_name: "slhc_init"
+}
+elf_symbol {
+  id: 0xb8d1e828
+  name: "slhc_remember"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x43f9ebc8
+  type_id: 0x98957f6e
+  full_name: "slhc_remember"
+}
+elf_symbol {
+  id: 0x059d7a50
+  name: "slhc_toss"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x74b8e674
+  type_id: 0x98fb76e9
+  full_name: "slhc_toss"
+}
+elf_symbol {
+  id: 0x5d808bbc
+  name: "slhc_uncompress"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf36f42a9
+  type_id: 0x98957f6e
+  full_name: "slhc_uncompress"
+}
+elf_symbol {
+  id: 0xf46be251
+  name: "smp_call_function"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa0eae826
+  type_id: 0x0280f6cc
+  full_name: "smp_call_function"
+}
+elf_symbol {
+  id: 0x824ee5eb
+  name: "smp_call_function_any"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8efd59ac
+  type_id: 0x90e2d95d
+  full_name: "smp_call_function_any"
+}
+elf_symbol {
+  id: 0xdf906b66
+  name: "smp_call_function_many"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe2df8e9a
+  type_id: 0x1dfa429f
+  full_name: "smp_call_function_many"
+}
+elf_symbol {
+  id: 0x4c674d1e
+  name: "smp_call_function_single"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6228c21f
+  type_id: 0x85695d91
+  full_name: "smp_call_function_single"
+}
+elf_symbol {
+  id: 0x1f9b728b
+  name: "smp_call_function_single_async"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa080c5e5
+  type_id: 0x84ce8396
+  full_name: "smp_call_function_single_async"
+}
+elf_symbol {
+  id: 0x99a17453
+  name: "smp_call_on_cpu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x267df662
+  type_id: 0x8c57cf58
+  full_name: "smp_call_on_cpu"
+}
+elf_symbol {
+  id: 0x675bcd74
+  name: "snapshot_get_image_size"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8873e715
+  type_id: 0x31accd53
+  full_name: "snapshot_get_image_size"
+}
+elf_symbol {
+  id: 0x35280a80
+  name: "snd_card_add_dev_attr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x704e4f8a
+  type_id: 0x91b3fe62
+  full_name: "snd_card_add_dev_attr"
+}
+elf_symbol {
+  id: 0x03fd01bd
+  name: "snd_card_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd95762a4
+  type_id: 0x917ece7d
+  full_name: "snd_card_free"
+}
+elf_symbol {
+  id: 0x7df62009
+  name: "snd_card_new"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb8288a7a
+  type_id: 0x9c85ef5b
+  full_name: "snd_card_new"
+}
+elf_symbol {
+  id: 0xba68a39f
+  name: "snd_card_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb53f9d8c
+  type_id: 0x917ece7d
+  full_name: "snd_card_register"
+}
+elf_symbol {
+  id: 0x62b259b4
+  name: "snd_compr_malloc_pages"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x29ff1a1d
+  type_id: 0x98eb9df7
+  full_name: "snd_compr_malloc_pages"
+}
+elf_symbol {
+  id: 0xa511d0ea
+  name: "snd_compr_stop_error"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x880a5103
+  type_id: 0x9b735e47
+  full_name: "snd_compr_stop_error"
+}
+elf_symbol {
+  id: 0x476ce3a0
+  name: "snd_ctl_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0f5ccb59
+  type_id: 0x91d0f233
+  full_name: "snd_ctl_add"
+}
+elf_symbol {
+  id: 0x83c5422c
+  name: "snd_ctl_boolean_mono_info"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x75570b17
+  type_id: 0x9710bae0
+  full_name: "snd_ctl_boolean_mono_info"
+}
+elf_symbol {
+  id: 0xff4bd5dc
+  name: "snd_ctl_boolean_stereo_info"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3d42ff25
+  type_id: 0x9710bae0
+  full_name: "snd_ctl_boolean_stereo_info"
+}
+elf_symbol {
+  id: 0x1adae35c
+  name: "snd_ctl_enum_info"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcc6a729f
+  type_id: 0x9bbebc0c
+  full_name: "snd_ctl_enum_info"
+}
+elf_symbol {
+  id: 0x6aca9744
+  name: "snd_ctl_new1"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfb8323ca
+  type_id: 0x22a7ae7f
+  full_name: "snd_ctl_new1"
+}
+elf_symbol {
+  id: 0x6b08a95c
+  name: "snd_ctl_notify"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0e78ef85
+  type_id: 0x1d729530
+  full_name: "snd_ctl_notify"
+}
+elf_symbol {
+  id: 0x238c5442
+  name: "snd_ctl_notify_one"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7f2f5a3d
+  type_id: 0x1d7b9c88
+  full_name: "snd_ctl_notify_one"
+}
+elf_symbol {
+  id: 0x20fc506b
+  name: "snd_ctl_remove"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdeced337
+  type_id: 0x91d0f233
+  full_name: "snd_ctl_remove"
+}
+elf_symbol {
+  id: 0xe3942db0
+  name: "snd_device_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd496c1a9
+  type_id: 0x1c048955
+  full_name: "snd_device_free"
+}
+elf_symbol {
+  id: 0x74d92df1
+  name: "snd_dma_alloc_dir_pages"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x49f3e052
+  type_id: 0x84710953
+  full_name: "snd_dma_alloc_dir_pages"
+}
+elf_symbol {
+  id: 0x7983b6b1
+  name: "snd_dma_buffer_sync"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe545c5ee
+  type_id: 0x1ffe211c
+  full_name: "snd_dma_buffer_sync"
+}
+elf_symbol {
+  id: 0xafa6f89a
+  name: "snd_dma_free_pages"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x13fe31cb
+  type_id: 0x1c27266a
+  full_name: "snd_dma_free_pages"
+}
+elf_symbol {
+  id: 0x2e657b50
+  name: "snd_dmaengine_pcm_prepare_slave_config"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbd5a0b0f
+  type_id: 0x981f5671
+  full_name: "snd_dmaengine_pcm_prepare_slave_config"
+}
+elf_symbol {
+  id: 0xf9680c5d
+  name: "snd_dmaengine_pcm_refine_runtime_hwparams"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdcfa0a55
+  type_id: 0x982965be
+  full_name: "snd_dmaengine_pcm_refine_runtime_hwparams"
+}
+elf_symbol {
+  id: 0x4b5d3ed2
+  name: "snd_dmaengine_pcm_set_config_from_dai_data"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5d05dc4a
+  type_id: 0x1ec5beaa
+  full_name: "snd_dmaengine_pcm_set_config_from_dai_data"
+}
+elf_symbol {
+  id: 0xf8dd0a45
+  name: "snd_hwdep_new"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x927d37f0
+  type_id: 0x9175015c
+  full_name: "snd_hwdep_new"
+}
+elf_symbol {
+  id: 0x7d021e87
+  name: "snd_hwparams_to_dma_slave_config"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2b69150e
+  type_id: 0x93d14727
+  full_name: "snd_hwparams_to_dma_slave_config"
+}
+elf_symbol {
+  id: 0x8a143ba0
+  name: "snd_info_create_card_entry"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x881d5293
+  type_id: 0xc3dd5fea
+  full_name: "snd_info_create_card_entry"
+}
+elf_symbol {
+  id: 0x47548cf4
+  name: "snd_info_create_module_entry"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdbbdc41b
+  type_id: 0xcdea85a8
+  full_name: "snd_info_create_module_entry"
+}
+elf_symbol {
+  id: 0xfa53e7be
+  name: "snd_info_free_entry"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x01cbc96c
+  type_id: 0x1f50da89
+  full_name: "snd_info_free_entry"
+}
+elf_symbol {
+  id: 0x5e6e4a8e
+  name: "snd_info_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x765facd4
+  type_id: 0x92486835
+  full_name: "snd_info_register"
+}
+elf_symbol {
+  id: 0x32ffb327
+  name: "snd_interval_ranges"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x503bd137
+  type_id: 0x9652f70e
+  full_name: "snd_interval_ranges"
+}
+elf_symbol {
+  id: 0x3491ba62
+  name: "snd_interval_refine"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x04cda566
+  type_id: 0x979f6a1e
+  full_name: "snd_interval_refine"
+}
+elf_symbol {
+  id: 0x30679a90
+  name: "snd_jack_new"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2ccda37d
+  type_id: 0x919f7f11
+  full_name: "snd_jack_new"
+}
+elf_symbol {
+  id: 0xd0976985
+  name: "snd_jack_report"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9a24942a
+  type_id: 0x13cd4ba2
+  full_name: "snd_jack_report"
+}
+elf_symbol {
+  id: 0x5f29be60
+  name: "snd_jack_set_key"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc3a27f2b
+  type_id: 0x9e441880
+  full_name: "snd_jack_set_key"
+}
+elf_symbol {
+  id: 0xfd1fa5d2
+  name: "snd_pcm_add_chmap_ctls"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb7e27e1a
+  type_id: 0x987349b3
+  full_name: "snd_pcm_add_chmap_ctls"
+}
+elf_symbol {
+  id: 0x964dcd4d
+  name: "snd_pcm_create_iec958_consumer_default"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x649892e8
+  type_id: 0x9e61ffc7
+  full_name: "snd_pcm_create_iec958_consumer_default"
+}
+elf_symbol {
+  id: 0xb9a87429
+  name: "snd_pcm_fill_iec958_consumer"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1fb997e4
+  type_id: 0x9c8e6c6c
+  full_name: "snd_pcm_fill_iec958_consumer"
+}
+elf_symbol {
+  id: 0xbfd5ebac
+  name: "snd_pcm_fill_iec958_consumer_hw_params"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5c407196
+  type_id: 0x96d423b4
+  full_name: "snd_pcm_fill_iec958_consumer_hw_params"
+}
+elf_symbol {
+  id: 0x68c67cd0
+  name: "snd_pcm_format_big_endian"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4f816e9b
+  type_id: 0xac45ce43
+  full_name: "snd_pcm_format_big_endian"
+}
+elf_symbol {
+  id: 0xc10b3ddb
+  name: "snd_pcm_format_linear"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6ef8fcd8
+  type_id: 0xac45ce43
+  full_name: "snd_pcm_format_linear"
+}
+elf_symbol {
+  id: 0xcd9887e8
+  name: "snd_pcm_format_physical_width"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x68a24153
+  type_id: 0xac45ce43
+  full_name: "snd_pcm_format_physical_width"
+}
+elf_symbol {
+  id: 0x9ebdc6d8
+  name: "snd_pcm_format_unsigned"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa61aa028
+  type_id: 0xac45ce43
+  full_name: "snd_pcm_format_unsigned"
+}
+elf_symbol {
+  id: 0x4974f847
+  name: "snd_pcm_format_width"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe56a9336
+  type_id: 0xac45ce43
+  full_name: "snd_pcm_format_width"
+}
+elf_symbol {
+  id: 0x45ca79f2
+  name: "snd_pcm_hw_constraint_eld"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x744d0255
+  type_id: 0x9cd28836
+  full_name: "snd_pcm_hw_constraint_eld"
+}
+elf_symbol {
+  id: 0x720046df
+  name: "snd_pcm_hw_constraint_integer"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x96e20f7d
+  type_id: 0x9d51e53b
+  full_name: "snd_pcm_hw_constraint_integer"
+}
+elf_symbol {
+  id: 0x0e8fdef9
+  name: "snd_pcm_hw_constraint_list"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcf61ccb6
+  type_id: 0x9db8bf34
+  full_name: "snd_pcm_hw_constraint_list"
+}
+elf_symbol {
+  id: 0x9dc5f190
+  name: "snd_pcm_hw_constraint_mask64"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x07cd632c
+  type_id: 0x9d569303
+  full_name: "snd_pcm_hw_constraint_mask64"
+}
+elf_symbol {
+  id: 0x4436f3b6
+  name: "snd_pcm_hw_constraint_minmax"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xea042b62
+  type_id: 0x9d419277
+  full_name: "snd_pcm_hw_constraint_minmax"
+}
+elf_symbol {
+  id: 0x39aa3d60
+  name: "snd_pcm_hw_constraint_ratnums"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2a84b328
+  type_id: 0x9db8b5e8
+  full_name: "snd_pcm_hw_constraint_ratnums"
+}
+elf_symbol {
+  id: 0xc6fd5d28
+  name: "snd_pcm_hw_constraint_step"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8de0219b
+  type_id: 0x9db8bc66
+  full_name: "snd_pcm_hw_constraint_step"
+}
+elf_symbol {
+  id: 0x3a3577fc
+  name: "snd_pcm_hw_rule_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd46a860f
+  type_id: 0x9dbe3773
+  full_name: "snd_pcm_hw_rule_add"
+}
+elf_symbol {
+  id: 0x26db3306
+  name: "snd_pcm_lib_free_pages"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc5c8d4f4
+  type_id: 0x98aeb261
+  full_name: "snd_pcm_lib_free_pages"
+}
+elf_symbol {
+  id: 0xcb6ed759
+  name: "snd_pcm_lib_ioctl"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfc121469
+  type_id: 0x99be88a0
+  full_name: "snd_pcm_lib_ioctl"
+}
+elf_symbol {
+  id: 0x62017cf8
+  name: "snd_pcm_lib_malloc_pages"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4c1adf53
+  type_id: 0x9b7e67c0
+  full_name: "snd_pcm_lib_malloc_pages"
+}
+elf_symbol {
+  id: 0x4fc4b51e
+  name: "snd_pcm_lib_preallocate_free_for_all"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8b069ea6
+  type_id: 0x14fb3461
+  full_name: "snd_pcm_lib_preallocate_free_for_all"
+}
+elf_symbol {
+  id: 0x6e6a37f2
+  name: "snd_pcm_lib_preallocate_pages"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5615391f
+  type_id: 0x1429f877
+  full_name: "snd_pcm_lib_preallocate_pages"
+}
+elf_symbol {
+  id: 0x2c61b358
+  name: "snd_pcm_lib_preallocate_pages_for_all"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x705502d8
+  type_id: 0x156275ac
+  full_name: "snd_pcm_lib_preallocate_pages_for_all"
+}
+elf_symbol {
+  id: 0x352feb2c
+  name: "snd_pcm_new"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2ffddf37
+  type_id: 0x919ec1ed
+  full_name: "snd_pcm_new"
+}
+elf_symbol {
+  id: 0xf21d6619
+  name: "snd_pcm_period_elapsed"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x064141d9
+  type_id: 0x15b600dd
+  full_name: "snd_pcm_period_elapsed"
+}
+elf_symbol {
+  id: 0xba998ee2
+  name: "snd_pcm_set_managed_buffer"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1ba181db
+  type_id: 0x99314acb
+  full_name: "snd_pcm_set_managed_buffer"
+}
+elf_symbol {
+  id: 0x74420600
+  name: "snd_pcm_set_managed_buffer_all"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x70c337b5
+  type_id: 0x987c7e77
+  full_name: "snd_pcm_set_managed_buffer_all"
+}
+elf_symbol {
+  id: 0x92edca7e
+  name: "snd_pcm_set_ops"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x079ff9a0
+  type_id: 0x15694c5f
+  full_name: "snd_pcm_set_ops"
+}
+elf_symbol {
+  id: 0xb2f7eb17
+  name: "snd_pcm_std_chmaps"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x04e1b99f
+  type_id: 0x9c404df6
+  full_name: "snd_pcm_std_chmaps"
+}
+elf_symbol {
+  id: 0x8eb5b50d
+  name: "snd_pcm_stop"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9fb5a46c
+  type_id: 0x98e6a470
+  full_name: "snd_pcm_stop"
+}
+elf_symbol {
+  id: 0x1f5649eb
+  name: "snd_sgbuf_get_addr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa8ff3947
+  type_id: 0xb3725ca4
+  full_name: "snd_sgbuf_get_addr"
+}
+elf_symbol {
+  id: 0x0af8ff72
+  name: "snd_soc_add_component_controls"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x63fdd47f
+  type_id: 0x9928799a
+  full_name: "snd_soc_add_component_controls"
+}
+elf_symbol {
+  id: 0xe3ec4d34
+  name: "snd_soc_add_dai_controls"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7ff234d2
+  type_id: 0x9c32da8c
+  full_name: "snd_soc_add_dai_controls"
+}
+elf_symbol {
+  id: 0xf23ecd34
+  name: "snd_soc_bytes_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x992e5ce8
+  type_id: 0x973a41ee
+  full_name: "snd_soc_bytes_get"
+}
+elf_symbol {
+  id: 0xf8078eea
+  name: "snd_soc_bytes_info"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb0a5807a
+  type_id: 0x9710bae0
+  full_name: "snd_soc_bytes_info"
+}
+elf_symbol {
+  id: 0x46985c24
+  name: "snd_soc_bytes_info_ext"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf58f61bd
+  type_id: 0x9710bae0
+  full_name: "snd_soc_bytes_info_ext"
+}
+elf_symbol {
+  id: 0x1b94f9a7
+  name: "snd_soc_bytes_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x71ec5fba
+  type_id: 0x973a41ee
+  full_name: "snd_soc_bytes_put"
+}
+elf_symbol {
+  id: 0x723461f4
+  name: "snd_soc_bytes_tlv_callback"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x240a39e2
+  type_id: 0x96eeaa13
+  full_name: "snd_soc_bytes_tlv_callback"
+}
+elf_symbol {
+  id: 0x30c684dc
+  name: "snd_soc_card_get_kcontrol"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9264fd7e
+  type_id: 0x2a7bc89a
+  full_name: "snd_soc_card_get_kcontrol"
+}
+elf_symbol {
+  id: 0x80680525
+  name: "snd_soc_card_jack_new"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9cb268d7
+  type_id: 0x9b26368a
+  full_name: "snd_soc_card_jack_new"
+}
+elf_symbol {
+  id: 0xf84e3b0d
+  name: "snd_soc_card_jack_new_pins"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcce5b3bf
+  type_id: 0x9b263487
+  full_name: "snd_soc_card_jack_new_pins"
+}
+elf_symbol {
+  id: 0x1c40b8b7
+  name: "snd_soc_component_async_complete"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0a19932e
+  type_id: 0x14c1b0e8
+  full_name: "snd_soc_component_async_complete"
+}
+elf_symbol {
+  id: 0xb63a9550
+  name: "snd_soc_component_disable_pin"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd228a173
+  type_id: 0x99214080
+  full_name: "snd_soc_component_disable_pin"
+}
+elf_symbol {
+  id: 0x46cb4d6f
+  name: "snd_soc_component_enable_pin"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf663f119
+  type_id: 0x99214080
+  full_name: "snd_soc_component_enable_pin"
+}
+elf_symbol {
+  id: 0xe2e2b58b
+  name: "snd_soc_component_exit_regmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x29e29275
+  type_id: 0x14c1b0e8
+  full_name: "snd_soc_component_exit_regmap"
+}
+elf_symbol {
+  id: 0xf7d58a02
+  name: "snd_soc_component_force_enable_pin"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7919471b
+  type_id: 0x99214080
+  full_name: "snd_soc_component_force_enable_pin"
+}
+elf_symbol {
+  id: 0x92cb0839
+  name: "snd_soc_component_get_pin_status"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa0d32e8f
+  type_id: 0x99214080
+  full_name: "snd_soc_component_get_pin_status"
+}
+elf_symbol {
+  id: 0x3662091d
+  name: "snd_soc_component_init_regmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x12f0f104
+  type_id: 0x14e71014
+  full_name: "snd_soc_component_init_regmap"
+}
+elf_symbol {
+  id: 0xf31fbaa5
+  name: "snd_soc_component_read"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb7ed5895
+  type_id: 0xcb948a18
+  full_name: "snd_soc_component_read"
+}
+elf_symbol {
+  id: 0x8ba98f3d
+  name: "snd_soc_component_read_field"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x93527085
+  type_id: 0xcb85eb41
+  full_name: "snd_soc_component_read_field"
+}
+elf_symbol {
+  id: 0x047e7c15
+  name: "snd_soc_component_set_jack"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x51e3d0ae
+  type_id: 0x99f8b4f4
+  full_name: "snd_soc_component_set_jack"
+}
+elf_symbol {
+  id: 0x3fb7a184
+  name: "snd_soc_component_set_pll"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa27b2c2e
+  type_id: 0x985d4e58
+  full_name: "snd_soc_component_set_pll"
+}
+elf_symbol {
+  id: 0xd1f293b0
+  name: "snd_soc_component_set_sysclk"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe9f86cf8
+  type_id: 0x985d46f1
+  full_name: "snd_soc_component_set_sysclk"
+}
+elf_symbol {
+  id: 0x690f235d
+  name: "snd_soc_component_update_bits"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xedfab75d
+  type_id: 0x98df6080
+  full_name: "snd_soc_component_update_bits"
+}
+elf_symbol {
+  id: 0xe278d2b9
+  name: "snd_soc_component_update_bits_async"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x923e6fc4
+  type_id: 0x98df6080
+  full_name: "snd_soc_component_update_bits_async"
+}
+elf_symbol {
+  id: 0x84e7b6d6
+  name: "snd_soc_component_write"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x180d8e06
+  type_id: 0x98de7695
+  full_name: "snd_soc_component_write"
+}
+elf_symbol {
+  id: 0xc6659892
+  name: "snd_soc_component_write_field"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x63db3f32
+  type_id: 0x98df6080
+  full_name: "snd_soc_component_write_field"
+}
+elf_symbol {
+  id: 0x2c45f8ab
+  name: "snd_soc_dai_active"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4812771c
+  type_id: 0x9ccb082f
+  full_name: "snd_soc_dai_active"
+}
+elf_symbol {
+  id: 0x21ecd4de
+  name: "snd_soc_dai_get_channel_map"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa1c9efe5
+  type_id: 0x9ca258ce
+  full_name: "snd_soc_dai_get_channel_map"
+}
+elf_symbol {
+  id: 0x3300426e
+  name: "snd_soc_dai_link_set_capabilities"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xff201b7a
+  type_id: 0x1899030d
+  full_name: "snd_soc_dai_link_set_capabilities"
+}
+elf_symbol {
+  id: 0x1d763a17
+  name: "snd_soc_dai_set_bclk_ratio"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x64f635b4
+  type_id: 0x9ddd1db7
+  full_name: "snd_soc_dai_set_bclk_ratio"
+}
+elf_symbol {
+  id: 0x407cd33b
+  name: "snd_soc_dai_set_channel_map"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4cd253a9
+  type_id: 0x9ddaf106
+  full_name: "snd_soc_dai_set_channel_map"
+}
+elf_symbol {
+  id: 0x99dadb46
+  name: "snd_soc_dai_set_fmt"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x34f984a6
+  type_id: 0x9ddd1db7
+  full_name: "snd_soc_dai_set_fmt"
+}
+elf_symbol {
+  id: 0x7f8de782
+  name: "snd_soc_dai_set_pll"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x95b43f6e
+  type_id: 0x9d4f4423
+  full_name: "snd_soc_dai_set_pll"
+}
+elf_symbol {
+  id: 0x6a0561ba
+  name: "snd_soc_dai_set_sysclk"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x801708b6
+  type_id: 0x9d4776b9
+  full_name: "snd_soc_dai_set_sysclk"
+}
+elf_symbol {
+  id: 0x14d25dda
+  name: "snd_soc_dai_set_tdm_slot"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdd8c801b
+  type_id: 0x9dcdf9a5
+  full_name: "snd_soc_dai_set_tdm_slot"
+}
+elf_symbol {
+  id: 0x9994fae4
+  name: "snd_soc_dai_set_tristate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5fca5321
+  type_id: 0x9d578b63
+  full_name: "snd_soc_dai_set_tristate"
+}
+elf_symbol {
+  id: 0x6b59ec0c
+  name: "snd_soc_daifmt_clock_provider_flipped"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc317a15e
+  type_id: 0xdfba2774
+  full_name: "snd_soc_daifmt_clock_provider_flipped"
+}
+elf_symbol {
+  id: 0xaf61c3cf
+  name: "snd_soc_daifmt_clock_provider_from_bitmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf9622dd1
+  type_id: 0xdfba2774
+  full_name: "snd_soc_daifmt_clock_provider_from_bitmap"
+}
+elf_symbol {
+  id: 0x6c20af20
+  name: "snd_soc_daifmt_parse_clock_provider_raw"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbbccb0cb
+  type_id: 0xc33e01cf
+  full_name: "snd_soc_daifmt_parse_clock_provider_raw"
+}
+elf_symbol {
+  id: 0xc9059346
+  name: "snd_soc_daifmt_parse_format"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb18f3f90
+  type_id: 0xc33ffcc2
+  full_name: "snd_soc_daifmt_parse_format"
+}
+elf_symbol {
+  id: 0x7ffcfd26
+  name: "snd_soc_dapm_add_routes"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb38ef37d
+  type_id: 0x9d6ad4e2
+  full_name: "snd_soc_dapm_add_routes"
+}
+elf_symbol {
+  id: 0x01423777
+  name: "snd_soc_dapm_dai_free_widgets"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb6fb92fe
+  type_id: 0x129825ff
+  full_name: "snd_soc_dapm_dai_free_widgets"
+}
+elf_symbol {
+  id: 0x6dcd301e
+  name: "snd_soc_dapm_dai_get_connected_widgets"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6cf246d0
+  type_id: 0x9d555c37
+  full_name: "snd_soc_dapm_dai_get_connected_widgets"
+}
+elf_symbol {
+  id: 0x49206b79
+  name: "snd_soc_dapm_del_routes"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x63e098ad
+  type_id: 0x9d6ad4e2
+  full_name: "snd_soc_dapm_del_routes"
+}
+elf_symbol {
+  id: 0x2ce95c75
+  name: "snd_soc_dapm_disable_pin"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf608ad2f
+  type_id: 0x9d7d5431
+  full_name: "snd_soc_dapm_disable_pin"
+}
+elf_symbol {
+  id: 0x2a7b2b50
+  name: "snd_soc_dapm_disable_pin_unlocked"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1c98c067
+  type_id: 0x9d7d5431
+  full_name: "snd_soc_dapm_disable_pin_unlocked"
+}
+elf_symbol {
+  id: 0xc606a54b
+  name: "snd_soc_dapm_enable_pin"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1214d2b5
+  type_id: 0x9d7d5431
+  full_name: "snd_soc_dapm_enable_pin"
+}
+elf_symbol {
+  id: 0x7b979ccf
+  name: "snd_soc_dapm_force_bias_level"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf3d7e44b
+  type_id: 0x9c1ecd15
+  full_name: "snd_soc_dapm_force_bias_level"
+}
+elf_symbol {
+  id: 0xc2ff39cb
+  name: "snd_soc_dapm_force_enable_pin"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaf1394e8
+  type_id: 0x9d7d5431
+  full_name: "snd_soc_dapm_force_enable_pin"
+}
+elf_symbol {
+  id: 0xfa58787c
+  name: "snd_soc_dapm_force_enable_pin_unlocked"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x14e477bb
+  type_id: 0x9d7d5431
+  full_name: "snd_soc_dapm_force_enable_pin_unlocked"
+}
+elf_symbol {
+  id: 0x015c4998
+  name: "snd_soc_dapm_get_enum_double"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe638a2ac
+  type_id: 0x973a41ee
+  full_name: "snd_soc_dapm_get_enum_double"
+}
+elf_symbol {
+  id: 0x8fdbed5d
+  name: "snd_soc_dapm_get_pin_status"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x26661213
+  type_id: 0x9d7d5431
+  full_name: "snd_soc_dapm_get_pin_status"
+}
+elf_symbol {
+  id: 0xc4468dde
+  name: "snd_soc_dapm_get_pin_switch"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd8df8a29
+  type_id: 0x973a41ee
+  full_name: "snd_soc_dapm_get_pin_switch"
+}
+elf_symbol {
+  id: 0xe36bf059
+  name: "snd_soc_dapm_get_volsw"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbd679558
+  type_id: 0x973a41ee
+  full_name: "snd_soc_dapm_get_volsw"
+}
+elf_symbol {
+  id: 0xa0ea8280
+  name: "snd_soc_dapm_ignore_suspend"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe6b65777
+  type_id: 0x9d7d5431
+  full_name: "snd_soc_dapm_ignore_suspend"
+}
+elf_symbol {
+  id: 0xc2b88037
+  name: "snd_soc_dapm_info_pin_switch"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7bd13cb6
+  type_id: 0x9710bae0
+  full_name: "snd_soc_dapm_info_pin_switch"
+}
+elf_symbol {
+  id: 0xa15d28fb
+  name: "snd_soc_dapm_kcontrol_dapm"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbcbb84e6
+  type_id: 0x146afcfb
+  full_name: "snd_soc_dapm_kcontrol_dapm"
+}
+elf_symbol {
+  id: 0x72bc9a43
+  name: "snd_soc_dapm_kcontrol_widget"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x02096b78
+  type_id: 0xa21fd62f
+  full_name: "snd_soc_dapm_kcontrol_widget"
+}
+elf_symbol {
+  id: 0xe7655218
+  name: "snd_soc_dapm_mixer_update_power"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x73744eca
+  type_id: 0x9d32251c
+  full_name: "snd_soc_dapm_mixer_update_power"
+}
+elf_symbol {
+  id: 0xb11490ee
+  name: "snd_soc_dapm_mux_update_power"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdee22b24
+  type_id: 0x9d328b5e
+  full_name: "snd_soc_dapm_mux_update_power"
+}
+elf_symbol {
+  id: 0x64da441a
+  name: "snd_soc_dapm_nc_pin"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe0a9459f
+  type_id: 0x9d7d5431
+  full_name: "snd_soc_dapm_nc_pin"
+}
+elf_symbol {
+  id: 0x78acbf5c
+  name: "snd_soc_dapm_new_control"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4804c6f7
+  type_id: 0xa80f38e4
+  full_name: "snd_soc_dapm_new_control"
+}
+elf_symbol {
+  id: 0xc1355d55
+  name: "snd_soc_dapm_new_controls"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x96388807
+  type_id: 0x9d6a013c
+  full_name: "snd_soc_dapm_new_controls"
+}
+elf_symbol {
+  id: 0xaffee4ad
+  name: "snd_soc_dapm_new_widgets"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa6d459d3
+  type_id: 0x9bc79bf3
+  full_name: "snd_soc_dapm_new_widgets"
+}
+elf_symbol {
+  id: 0xc665994d
+  name: "snd_soc_dapm_put_enum_double"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6a14768c
+  type_id: 0x973a41ee
+  full_name: "snd_soc_dapm_put_enum_double"
+}
+elf_symbol {
+  id: 0x6e3b2c73
+  name: "snd_soc_dapm_put_pin_switch"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x27775977
+  type_id: 0x973a41ee
+  full_name: "snd_soc_dapm_put_pin_switch"
+}
+elf_symbol {
+  id: 0x739b4d97
+  name: "snd_soc_dapm_put_volsw"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x39af0bb2
+  type_id: 0x973a41ee
+  full_name: "snd_soc_dapm_put_volsw"
+}
+elf_symbol {
+  id: 0x4c6c2d05
+  name: "snd_soc_dapm_sync"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x29f6604d
+  type_id: 0x9d8516e5
+  full_name: "snd_soc_dapm_sync"
+}
+elf_symbol {
+  id: 0xc5bea14a
+  name: "snd_soc_dapm_sync_unlocked"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4bedd327
+  type_id: 0x9d8516e5
+  full_name: "snd_soc_dapm_sync_unlocked"
+}
+elf_symbol {
+  id: 0x6355ee58
+  name: "snd_soc_dapm_weak_routes"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x33733938
+  type_id: 0x9d6ad4e2
+  full_name: "snd_soc_dapm_weak_routes"
+}
+elf_symbol {
+  id: 0x687a68d3
+  name: "snd_soc_dpcm_get_substream"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x24661a35
+  type_id: 0x585c3474
+  full_name: "snd_soc_dpcm_get_substream"
+}
+elf_symbol {
+  id: 0x97843792
+  name: "snd_soc_find_dai"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x27959907
+  type_id: 0x6eef99a2
+  full_name: "snd_soc_find_dai"
+}
+elf_symbol {
+  id: 0xc88e38bb
+  name: "snd_soc_find_dai_with_mutex"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeb409787
+  type_id: 0x6eef99a2
+  full_name: "snd_soc_find_dai_with_mutex"
+}
+elf_symbol {
+  id: 0x4086fab0
+  name: "snd_soc_get_dai_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe0389fd8
+  type_id: 0x9294d8c1
+  full_name: "snd_soc_get_dai_name"
+}
+elf_symbol {
+  id: 0x33a917a0
+  name: "snd_soc_get_enum_double"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8ec04280
+  type_id: 0x973a41ee
+  full_name: "snd_soc_get_enum_double"
+}
+elf_symbol {
+  id: 0x4c3ba1e9
+  name: "snd_soc_get_pcm_runtime"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd8aaf288
+  type_id: 0x76907643
+  full_name: "snd_soc_get_pcm_runtime"
+}
+elf_symbol {
+  id: 0x05ad614a
+  name: "snd_soc_get_volsw"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2549f63f
+  type_id: 0x973a41ee
+  full_name: "snd_soc_get_volsw"
+}
+elf_symbol {
+  id: 0xe6fd4826
+  name: "snd_soc_get_volsw_range"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x00733af2
+  type_id: 0x973a41ee
+  full_name: "snd_soc_get_volsw_range"
+}
+elf_symbol {
+  id: 0x04c98965
+  name: "snd_soc_get_volsw_sx"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7eb8b6e7
+  type_id: 0x973a41ee
+  full_name: "snd_soc_get_volsw_sx"
+}
+elf_symbol {
+  id: 0xb5349f49
+  name: "snd_soc_get_xr_sx"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5e492071
+  type_id: 0x973a41ee
+  full_name: "snd_soc_get_xr_sx"
+}
+elf_symbol {
+  id: 0x98f26ea1
+  name: "snd_soc_info_enum_double"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc095bbf9
+  type_id: 0x9710bae0
+  full_name: "snd_soc_info_enum_double"
+}
+elf_symbol {
+  id: 0xdc66f122
+  name: "snd_soc_info_multi_ext"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x66ab3769
+  type_id: 0x9710bae0
+  full_name: "snd_soc_info_multi_ext"
+}
+elf_symbol {
+  id: 0x7c07ccc5
+  name: "snd_soc_info_volsw"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb0fbae85
+  type_id: 0x9710bae0
+  full_name: "snd_soc_info_volsw"
+}
+elf_symbol {
+  id: 0x310b431a
+  name: "snd_soc_info_volsw_range"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcd023064
+  type_id: 0x9710bae0
+  full_name: "snd_soc_info_volsw_range"
+}
+elf_symbol {
+  id: 0xcd537f33
+  name: "snd_soc_info_volsw_sx"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x50158f9c
+  type_id: 0x9710bae0
+  full_name: "snd_soc_info_volsw_sx"
+}
+elf_symbol {
+  id: 0xef58928a
+  name: "snd_soc_info_xr_sx"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x01064e4f
+  type_id: 0x9710bae0
+  full_name: "snd_soc_info_xr_sx"
+}
+elf_symbol {
+  id: 0x48726233
+  name: "snd_soc_jack_add_gpios"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xadbd86fc
+  type_id: 0x9e6bce91
+  full_name: "snd_soc_jack_add_gpios"
+}
+elf_symbol {
+  id: 0xabad0839
+  name: "snd_soc_jack_notifier_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x12f93259
+  type_id: 0x128f149f
+  full_name: "snd_soc_jack_notifier_register"
+}
+elf_symbol {
+  id: 0x6d4398fa
+  name: "snd_soc_jack_report"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8a22c515
+  type_id: 0x13648576
+  full_name: "snd_soc_jack_report"
+}
+elf_symbol {
+  id: 0xce618820
+  name: "snd_soc_limit_volume"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7bd33e0d
+  type_id: 0x9b261113
+  full_name: "snd_soc_limit_volume"
+}
+elf_symbol {
+  id: 0x40ea2324
+  name: "snd_soc_lookup_component"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeec457b0
+  type_id: 0x67d77552
+  full_name: "snd_soc_lookup_component"
+}
+elf_symbol {
+  id: 0x9fc83467
+  name: "snd_soc_lookup_component_nolocked"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9178460d
+  type_id: 0x67d77552
+  full_name: "snd_soc_lookup_component_nolocked"
+}
+elf_symbol {
+  id: 0x55809d13
+  name: "snd_soc_new_compress"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x12988d83
+  type_id: 0x9d475de3
+  full_name: "snd_soc_new_compress"
+}
+elf_symbol {
+  id: 0x6d5fd07f
+  name: "snd_soc_of_get_dai_link_codecs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0c9dbcd3
+  type_id: 0x9dcf1028
+  full_name: "snd_soc_of_get_dai_link_codecs"
+}
+elf_symbol {
+  id: 0x1f495628
+  name: "snd_soc_of_get_dai_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3b8071e5
+  type_id: 0x90887391
+  full_name: "snd_soc_of_get_dai_name"
+}
+elf_symbol {
+  id: 0x3eaad2c3
+  name: "snd_soc_of_parse_audio_routing"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe0466fbf
+  type_id: 0x9b3fd927
+  full_name: "snd_soc_of_parse_audio_routing"
+}
+elf_symbol {
+  id: 0xe436d856
+  name: "snd_soc_of_parse_audio_simple_widgets"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x418b714b
+  type_id: 0x9b3fd927
+  full_name: "snd_soc_of_parse_audio_simple_widgets"
+}
+elf_symbol {
+  id: 0x79fa03e3
+  name: "snd_soc_of_parse_aux_devs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4253abbb
+  type_id: 0x9b3fd927
+  full_name: "snd_soc_of_parse_aux_devs"
+}
+elf_symbol {
+  id: 0x3af545e9
+  name: "snd_soc_of_parse_card_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7052bfcb
+  type_id: 0x9b3fd927
+  full_name: "snd_soc_of_parse_card_name"
+}
+elf_symbol {
+  id: 0xa013f08e
+  name: "snd_soc_of_parse_node_prefix"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa4d1924a
+  type_id: 0x1d61f95d
+  full_name: "snd_soc_of_parse_node_prefix"
+}
+elf_symbol {
+  id: 0x9ba011d3
+  name: "snd_soc_of_parse_pin_switches"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc28df6bb
+  type_id: 0x9b3fd927
+  full_name: "snd_soc_of_parse_pin_switches"
+}
+elf_symbol {
+  id: 0xa976fac7
+  name: "snd_soc_of_parse_tdm_slot"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x311f7464
+  type_id: 0x90f57323
+  full_name: "snd_soc_of_parse_tdm_slot"
+}
+elf_symbol {
+  id: 0x88e57905
+  name: "snd_soc_of_put_dai_link_codecs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf15daf86
+  type_id: 0x1899030d
+  full_name: "snd_soc_of_put_dai_link_codecs"
+}
+elf_symbol {
+  id: 0x97f4e147
+  name: "snd_soc_params_to_bclk"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeb711ae7
+  type_id: 0x96ea327a
+  full_name: "snd_soc_params_to_bclk"
+}
+elf_symbol {
+  id: 0xb01de4a2
+  name: "snd_soc_params_to_frame_size"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc8269f94
+  type_id: 0x96ea327a
+  full_name: "snd_soc_params_to_frame_size"
+}
+elf_symbol {
+  id: 0x56f3103d
+  name: "snd_soc_pm_ops"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x56d39d02
+  type_id: 0xc44f560e
+  full_name: "snd_soc_pm_ops"
+}
+elf_symbol {
+  id: 0x5805599a
+  name: "snd_soc_poweroff"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x47ea7f83
+  type_id: 0x9d16dd74
+  full_name: "snd_soc_poweroff"
+}
+elf_symbol {
+  id: 0x6baed657
+  name: "snd_soc_put_enum_double"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3ac61d7d
+  type_id: 0x973a41ee
+  full_name: "snd_soc_put_enum_double"
+}
+elf_symbol {
+  id: 0x230cb690
+  name: "snd_soc_put_volsw"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x581a8286
+  type_id: 0x973a41ee
+  full_name: "snd_soc_put_volsw"
+}
+elf_symbol {
+  id: 0x30162bad
+  name: "snd_soc_put_volsw_range"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb475650f
+  type_id: 0x973a41ee
+  full_name: "snd_soc_put_volsw_range"
+}
+elf_symbol {
+  id: 0x00b2c629
+  name: "snd_soc_put_volsw_sx"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0d06cfb9
+  type_id: 0x973a41ee
+  full_name: "snd_soc_put_volsw_sx"
+}
+elf_symbol {
+  id: 0x72a7bbd2
+  name: "snd_soc_put_xr_sx"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x231a54c8
+  type_id: 0x973a41ee
+  full_name: "snd_soc_put_xr_sx"
+}
+elf_symbol {
+  id: 0x5fe5beeb
+  name: "snd_soc_register_card"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3c09a80b
+  type_id: 0x9bc79bf3
+  full_name: "snd_soc_register_card"
+}
+elf_symbol {
+  id: 0x900c4eab
+  name: "snd_soc_register_component"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x94646ac0
+  type_id: 0x9dd808ae
+  full_name: "snd_soc_register_component"
+}
+elf_symbol {
+  id: 0x6a48086d
+  name: "snd_soc_resume"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4d1c2f85
+  type_id: 0x9d16dd74
+  full_name: "snd_soc_resume"
+}
+elf_symbol {
+  id: 0xb95cb131
+  name: "snd_soc_rtdcom_lookup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x45e0dee3
+  type_id: 0x661a7689
+  full_name: "snd_soc_rtdcom_lookup"
+}
+elf_symbol {
+  id: 0x2673800e
+  name: "snd_soc_runtime_calc_hw"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2bbdf2fb
+  type_id: 0x9cc9e057
+  full_name: "snd_soc_runtime_calc_hw"
+}
+elf_symbol {
+  id: 0x04af389d
+  name: "snd_soc_runtime_set_dai_fmt"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcbabc797
+  type_id: 0x9dcdcb37
+  full_name: "snd_soc_runtime_set_dai_fmt"
+}
+elf_symbol {
+  id: 0x685b01fa
+  name: "snd_soc_set_runtime_hwparams"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8331bc8c
+  type_id: 0x98508ee0
+  full_name: "snd_soc_set_runtime_hwparams"
+}
+elf_symbol {
+  id: 0x93803c84
+  name: "snd_soc_tplg_component_load"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5fa4a73c
+  type_id: 0x99516809
+  full_name: "snd_soc_tplg_component_load"
+}
+elf_symbol {
+  id: 0x7c7f5167
+  name: "snd_soc_tplg_component_remove"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x90ba4eb8
+  type_id: 0x99d90254
+  full_name: "snd_soc_tplg_component_remove"
+}
+elf_symbol {
+  id: 0xe5cef1d3
+  name: "snd_soc_tplg_widget_bind_event"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x63f4e54c
+  type_id: 0x9fee7b3a
+  full_name: "snd_soc_tplg_widget_bind_event"
+}
+elf_symbol {
+  id: 0x816c43b3
+  name: "snd_soc_unregister_card"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x54fa53d6
+  type_id: 0x16df294f
+  full_name: "snd_soc_unregister_card"
+}
+elf_symbol {
+  id: 0xc4b7b8fe
+  name: "snd_soc_unregister_component"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4a46772b
+  type_id: 0x100e6fc8
+  full_name: "snd_soc_unregister_component"
+}
+elf_symbol {
+  id: 0xd30316c2
+  name: "snd_timer_interrupt"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6ccf3f71
+  type_id: 0x158152d0
+  full_name: "snd_timer_interrupt"
+}
+elf_symbol {
+  id: 0xc6d51e10
+  name: "snd_usb_autoresume"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x612fcaec
+  type_id: 0x9b1b4bcb
+  full_name: "snd_usb_autoresume"
+}
+elf_symbol {
+  id: 0x9c066dd7
+  name: "snd_usb_autosuspend"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7a399fc5
+  type_id: 0x1603f977
+  full_name: "snd_usb_autosuspend"
+}
+elf_symbol {
+  id: 0x1c3814ad
+  name: "snd_usb_endpoint_close"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x64cb25fd
+  type_id: 0x169238cf
+  full_name: "snd_usb_endpoint_close"
+}
+elf_symbol {
+  id: 0xd2e3da2e
+  name: "snd_usb_endpoint_open"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf7df1247
+  type_id: 0x1fce8843
+  full_name: "snd_usb_endpoint_open"
+}
+elf_symbol {
+  id: 0x14184fbf
+  name: "snd_usb_endpoint_prepare"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x135f16a6
+  type_id: 0x9b8a8a73
+  full_name: "snd_usb_endpoint_prepare"
+}
+elf_symbol {
+  id: 0x3b425caf
+  name: "snd_usb_power_domain_set"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x327ca64c
+  type_id: 0x9b2aae3f
+  full_name: "snd_usb_power_domain_set"
+}
+elf_symbol {
+  id: 0x32cae5ee
+  name: "snprintf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x656e4a6e
+  type_id: 0x9f7ddfb5
+  full_name: "snprintf"
+}
+elf_symbol {
+  id: 0x0651ce31
+  name: "soc_device_match"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbf2a90c3
+  type_id: 0x75b5d4f6
+  full_name: "soc_device_match"
+}
+elf_symbol {
+  id: 0x194db723
+  name: "soc_device_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2c7ba9a0
+  type_id: 0x1e394ee5
+  full_name: "soc_device_register"
+}
+elf_symbol {
+  id: 0x05175c9b
+  name: "soc_device_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x19c20269
+  type_id: 0x157bc602
+  full_name: "soc_device_unregister"
+}
+elf_symbol {
+  id: 0x622ff2b0
+  name: "sock_alloc_send_pskb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6dea6a3b
+  type_id: 0x6f0fa4b8
+  full_name: "sock_alloc_send_pskb"
+}
+elf_symbol {
+  id: 0x6e3d8fa4
+  name: "sock_cmsg_send"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc2fae2af
+  type_id: 0x9a66b93e
+  full_name: "sock_cmsg_send"
+}
+elf_symbol {
+  id: 0x6974548c
+  name: "sock_common_getsockopt"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x96aa0aa6
+  type_id: 0x981db4ff
+  full_name: "sock_common_getsockopt"
+}
+elf_symbol {
+  id: 0xe0ea15f1
+  name: "sock_common_recvmsg"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7f6ed9f9
+  type_id: 0x9917165a
+  full_name: "sock_common_recvmsg"
+}
+elf_symbol {
+  id: 0xa829435f
+  name: "sock_common_setsockopt"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7392419d
+  type_id: 0x981e2b3a
+  full_name: "sock_common_setsockopt"
+}
+elf_symbol {
+  id: 0x7be16ce2
+  name: "sock_create_kern"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x147b171c
+  type_id: 0x9f2caa56
+  full_name: "sock_create_kern"
+}
+elf_symbol {
+  id: 0x0967d0a1
+  name: "sock_diag_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa72c8e69
+  type_id: 0x9041c735
+  full_name: "sock_diag_register"
+}
+elf_symbol {
+  id: 0x33edf503
+  name: "sock_diag_save_cookie"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf481d935
+  type_id: 0x17053351
+  full_name: "sock_diag_save_cookie"
+}
+elf_symbol {
+  id: 0x5ca98337
+  name: "sock_diag_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa2a0e3d7
+  type_id: 0x1d597589
+  full_name: "sock_diag_unregister"
+}
+elf_symbol {
+  id: 0xbcf8b9bf
+  name: "sock_edemux"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x01d98814
+  type_id: 0x11cb8bd5
+  full_name: "sock_edemux"
+}
+elf_symbol {
+  id: 0x83497546
+  name: "sock_efree"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc58baa56
+  type_id: 0x11cb8bd5
+  full_name: "sock_efree"
+}
+elf_symbol {
+  id: 0x4ece0732
+  name: "sock_gen_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1c0448b8
+  type_id: 0x17c95d08
+  full_name: "sock_gen_put"
+}
+elf_symbol {
+  id: 0x284bec0f
+  name: "sock_gettstamp"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8a4df5ef
+  type_id: 0x99e0f6e0
+  full_name: "sock_gettstamp"
+}
+elf_symbol {
+  id: 0xb2cef8e2
+  name: "sock_i_ino"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6748dc4a
+  type_id: 0x36fdc1c8
+  full_name: "sock_i_ino"
+}
+elf_symbol {
+  id: 0xed806c73
+  name: "sock_i_uid"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaf6d7db2
+  type_id: 0x7be897ce
+  full_name: "sock_i_uid"
+}
+elf_symbol {
+  id: 0x1be58b2b
+  name: "sock_init_data"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x60225859
+  type_id: 0x14f54b2b
+  full_name: "sock_init_data"
+}
+elf_symbol {
+  id: 0x456ecb71
+  name: "sock_no_accept"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x42f44792
+  type_id: 0x99c11430
+  full_name: "sock_no_accept"
+}
+elf_symbol {
+  id: 0x590eabae
+  name: "sock_no_bind"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd33a9cd9
+  type_id: 0x99526c70
+  full_name: "sock_no_bind"
+}
+elf_symbol {
+  id: 0x3401a29b
+  name: "sock_no_connect"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x74bf31f1
+  type_id: 0x9953f0f3
+  full_name: "sock_no_connect"
+}
+elf_symbol {
+  id: 0x3e54b0dd
+  name: "sock_no_getname"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x16879b58
+  type_id: 0x99526c70
+  full_name: "sock_no_getname"
+}
+elf_symbol {
+  id: 0x731fabf8
+  name: "sock_no_ioctl"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6c24b62b
+  type_id: 0x9882219f
+  full_name: "sock_no_ioctl"
+}
+elf_symbol {
+  id: 0x0939aa53
+  name: "sock_no_listen"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb92c397b
+  type_id: 0x98046a12
+  full_name: "sock_no_listen"
+}
+elf_symbol {
+  id: 0x671e9438
+  name: "sock_no_mmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd3197c4c
+  type_id: 0x9bf97de0
+  full_name: "sock_no_mmap"
+}
+elf_symbol {
+  id: 0xac19d61a
+  name: "sock_no_recvmsg"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x342df4d7
+  type_id: 0x9917165a
+  full_name: "sock_no_recvmsg"
+}
+elf_symbol {
+  id: 0x4333f082
+  name: "sock_no_sendmsg"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xca6cd3ce
+  type_id: 0x99168ad9
+  full_name: "sock_no_sendmsg"
+}
+elf_symbol {
+  id: 0xf7ca54f0
+  name: "sock_no_sendpage"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe33f0566
+  type_id: 0x10e9e7a3
+  full_name: "sock_no_sendpage"
+}
+elf_symbol {
+  id: 0xcfa933b0
+  name: "sock_no_shutdown"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4a1b3404
+  type_id: 0x98046a12
+  full_name: "sock_no_shutdown"
+}
+elf_symbol {
+  id: 0xc7bb50ac
+  name: "sock_no_socketpair"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2e9cfbff
+  type_id: 0x99d969f9
+  full_name: "sock_no_socketpair"
+}
+elf_symbol {
+  id: 0xc4ac81a3
+  name: "sock_queue_rcv_skb_reason"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf6d98003
+  type_id: 0x9ac7ffab
+  full_name: "sock_queue_rcv_skb_reason"
+}
+elf_symbol {
+  id: 0xde3137d4
+  name: "sock_recv_errqueue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9f725e3d
+  type_id: 0x9a7acc16
+  full_name: "sock_recv_errqueue"
+}
+elf_symbol {
+  id: 0x3728c158
+  name: "sock_recvmsg"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x350084ff
+  type_id: 0x99324fb7
+  full_name: "sock_recvmsg"
+}
+elf_symbol {
+  id: 0xd326bb7c
+  name: "sock_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcb131c31
+  type_id: 0x93c23a28
+  full_name: "sock_register"
+}
+elf_symbol {
+  id: 0xe138dce0
+  name: "sock_release"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6369852b
+  type_id: 0x14805be2
+  full_name: "sock_release"
+}
+elf_symbol {
+  id: 0xeffe0f16
+  name: "sock_rfree"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa5192714
+  type_id: 0x11cb8bd5
+  full_name: "sock_rfree"
+}
+elf_symbol {
+  id: 0x7b771682
+  name: "sock_setsockopt"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x58182ec6
+  type_id: 0x981e2b3a
+  full_name: "sock_setsockopt"
+}
+elf_symbol {
+  id: 0x39362be4
+  name: "sock_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x62737e1d
+  type_id: 0x09506558
+  full_name: "sock_unregister"
+}
+elf_symbol {
+  id: 0xba26b6a3
+  name: "sock_wfree"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x94ad4d47
+  type_id: 0x11cb8bd5
+  full_name: "sock_wfree"
+}
+elf_symbol {
+  id: 0xfdaa1c0d
+  name: "sock_wmalloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf4659a5d
+  type_id: 0x6f18ee87
+  full_name: "sock_wmalloc"
+}
+elf_symbol {
+  id: 0xe86ce747
+  name: "sockfd_lookup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x36c8b5ac
+  type_id: 0x3d20d65e
+  full_name: "sockfd_lookup"
+}
+elf_symbol {
+  id: 0x85476106
+  name: "softnet_data"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x7a9ece2b
+  type_id: 0x06066110
+  full_name: "softnet_data"
+}
+elf_symbol {
+  id: 0x1780168b
+  name: "sort"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb7c0f443
+  type_id: 0x155a3a09
+  full_name: "sort"
+}
+elf_symbol {
+  id: 0x743e9912
+  name: "spi_add_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x33b7791d
+  type_id: 0x9930cdbf
+  full_name: "spi_add_device"
+}
+elf_symbol {
+  id: 0x13b529c0
+  name: "spi_alloc_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdf381a0c
+  type_id: 0xdf76302d
+  full_name: "spi_alloc_device"
+}
+elf_symbol {
+  id: 0x55b4474a
+  name: "spi_async"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7371fb9f
+  type_id: 0x99b7b018
+  full_name: "spi_async"
+}
+elf_symbol {
+  id: 0xe2eab328
+  name: "spi_bus_lock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9022a61d
+  type_id: 0x9db78784
+  full_name: "spi_bus_lock"
+}
+elf_symbol {
+  id: 0xf4d76908
+  name: "spi_bus_type"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xd9dfbb98
+  type_id: 0x257935aa
+  full_name: "spi_bus_type"
+}
+elf_symbol {
+  id: 0xc99e9aa2
+  name: "spi_bus_unlock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x32d09028
+  type_id: 0x9db78784
+  full_name: "spi_bus_unlock"
+}
+elf_symbol {
+  id: 0xc3db62f6
+  name: "spi_controller_resume"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x11bc8fea
+  type_id: 0x9db78784
+  full_name: "spi_controller_resume"
+}
+elf_symbol {
+  id: 0x2f764099
+  name: "spi_controller_suspend"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa62c5dc0
+  type_id: 0x9db78784
+  full_name: "spi_controller_suspend"
+}
+elf_symbol {
+  id: 0x17969d2e
+  name: "spi_delay_exec"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2826e6ad
+  type_id: 0x9ef82027
+  full_name: "spi_delay_exec"
+}
+elf_symbol {
+  id: 0xf2e31909
+  name: "spi_delay_to_ns"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc69a5ce0
+  type_id: 0x9ef82027
+  full_name: "spi_delay_to_ns"
+}
+elf_symbol {
+  id: 0xb31331bc
+  name: "spi_finalize_current_message"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4d236daf
+  type_id: 0x10af3538
+  full_name: "spi_finalize_current_message"
+}
+elf_symbol {
+  id: 0xc699d17a
+  name: "spi_finalize_current_transfer"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0b45e87c
+  type_id: 0x10af3538
+  full_name: "spi_finalize_current_transfer"
+}
+elf_symbol {
+  id: 0x8d01be1f
+  name: "spi_get_device_id"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0adf6ab3
+  type_id: 0xdb53d61f
+  full_name: "spi_get_device_id"
+}
+elf_symbol {
+  id: 0x53ad82f3
+  name: "spi_get_next_queued_message"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x300e9a2f
+  type_id: 0xb91d7092
+  full_name: "spi_get_next_queued_message"
+}
+elf_symbol {
+  id: 0x9140558e
+  name: "spi_mem_adjust_op_size"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa78d3f99
+  type_id: 0x9de31a69
+  full_name: "spi_mem_adjust_op_size"
+}
+elf_symbol {
+  id: 0xe3077a93
+  name: "spi_mem_default_supports_op"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0b5e3538
+  type_id: 0xfe436e74
+  full_name: "spi_mem_default_supports_op"
+}
+elf_symbol {
+  id: 0x0e0941ba
+  name: "spi_mem_dirmap_read"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb322caac
+  type_id: 0x12a52815
+  full_name: "spi_mem_dirmap_read"
+}
+elf_symbol {
+  id: 0x3b461c8b
+  name: "spi_mem_dirmap_write"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0328b39a
+  type_id: 0x12a5ae9c
+  full_name: "spi_mem_dirmap_write"
+}
+elf_symbol {
+  id: 0x393d4a00
+  name: "spi_mem_driver_register_with_owner"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x29a6990d
+  type_id: 0x91b0d67e
+  full_name: "spi_mem_driver_register_with_owner"
+}
+elf_symbol {
+  id: 0x485ebef5
+  name: "spi_mem_driver_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1bbeb46f
+  type_id: 0x1c84fbb3
+  full_name: "spi_mem_driver_unregister"
+}
+elf_symbol {
+  id: 0x94f291e3
+  name: "spi_mem_exec_op"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbb3a4ff9
+  type_id: 0x9d67d65f
+  full_name: "spi_mem_exec_op"
+}
+elf_symbol {
+  id: 0x071b0cf7
+  name: "spi_mem_get_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc60ce761
+  type_id: 0x9247e04a
+  full_name: "spi_mem_get_name"
+}
+elf_symbol {
+  id: 0x680976a6
+  name: "spi_mem_supports_op"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7b21121a
+  type_id: 0xfe436e74
+  full_name: "spi_mem_supports_op"
+}
+elf_symbol {
+  id: 0xc98f6928
+  name: "spi_register_controller"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb35f875f
+  type_id: 0x9db78784
+  full_name: "spi_register_controller"
+}
+elf_symbol {
+  id: 0x042377cd
+  name: "spi_setup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x56c1736a
+  type_id: 0x9930cdbf
+  full_name: "spi_setup"
+}
+elf_symbol {
+  id: 0xdaf3a27e
+  name: "spi_sync"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8211a422
+  type_id: 0x99b7b018
+  full_name: "spi_sync"
+}
+elf_symbol {
+  id: 0xbe2a8422
+  name: "spi_sync_locked"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x16bb7bfe
+  type_id: 0x99b7b018
+  full_name: "spi_sync_locked"
+}
+elf_symbol {
+  id: 0x38ac4651
+  name: "spi_unregister_controller"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x60999f42
+  type_id: 0x10af3538
+  full_name: "spi_unregister_controller"
+}
+elf_symbol {
+  id: 0xf74b4f61
+  name: "spi_write_then_read"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb4cae48b
+  type_id: 0x99c5a325
+  full_name: "spi_write_then_read"
+}
+elf_symbol {
+  id: 0xf76668be
+  name: "split_page"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd69b64f6
+  type_id: 0x102e93ac
+  full_name: "split_page"
+}
+elf_symbol {
+  id: 0xc1ff3a0f
+  name: "spmi_controller_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbc77d9ff
+  type_id: 0x98b9292d
+  full_name: "spmi_controller_add"
+}
+elf_symbol {
+  id: 0xb9875bdb
+  name: "spmi_controller_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb7623849
+  type_id: 0x40073fc6
+  full_name: "spmi_controller_alloc"
+}
+elf_symbol {
+  id: 0x494d6bbb
+  name: "spmi_controller_remove"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0be33f4f
+  type_id: 0x15a19b91
+  full_name: "spmi_controller_remove"
+}
+elf_symbol {
+  id: 0xbc1bec89
+  name: "spmi_device_from_of"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9a8d022e
+  type_id: 0x48da335f
+  full_name: "spmi_device_from_of"
+}
+elf_symbol {
+  id: 0x37c222d5
+  name: "spmi_ext_register_read"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x14a24d3b
+  type_id: 0x9a1f348c
+  full_name: "spmi_ext_register_read"
+}
+elf_symbol {
+  id: 0x75b6f1be
+  name: "spmi_ext_register_readl"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xecd3ae7b
+  type_id: 0x98ff73bb
+  full_name: "spmi_ext_register_readl"
+}
+elf_symbol {
+  id: 0x54aaff66
+  name: "spmi_ext_register_write"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc30e880e
+  type_id: 0x9a10c524
+  full_name: "spmi_ext_register_write"
+}
+elf_symbol {
+  id: 0xa9e263e3
+  name: "spmi_ext_register_writel"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x65f67115
+  type_id: 0x98f08213
+  full_name: "spmi_ext_register_writel"
+}
+elf_symbol {
+  id: 0x0d5e8c9c
+  name: "spmi_register_read"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc06a5eb1
+  type_id: 0x9a1ce459
+  full_name: "spmi_register_read"
+}
+elf_symbol {
+  id: 0xc08173b3
+  name: "spmi_register_write"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa7c8b7c3
+  type_id: 0x9a16828c
+  full_name: "spmi_register_write"
+}
+elf_symbol {
+  id: 0x581a0bb3
+  name: "spmi_register_zero_write"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x726221eb
+  type_id: 0x9a1cd590
+  full_name: "spmi_register_zero_write"
+}
+elf_symbol {
+  id: 0x863d7345
+  name: "sprint_symbol"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x661601de
+  type_id: 0x9c6dcf03
+  full_name: "sprint_symbol"
+}
+elf_symbol {
+  id: 0xad8ec240
+  name: "sprint_symbol_no_offset"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe769232e
+  type_id: 0x9c6dcf03
+  full_name: "sprint_symbol_no_offset"
+}
+elf_symbol {
+  id: 0x2c7eedb1
+  name: "sprintf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3c3ff9fd
+  type_id: 0x9c7112c7
+  full_name: "sprintf"
+}
+elf_symbol {
+  id: 0x89ede675
+  name: "srcu_barrier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6eadbf32
+  type_id: 0x187ab05b
+  full_name: "srcu_barrier"
+}
+elf_symbol {
+  id: 0x1c97d739
+  name: "srcu_batches_completed"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf07c627c
+  type_id: 0x394e2c9b
+  full_name: "srcu_batches_completed"
+}
+elf_symbol {
+  id: 0x2aa3fe50
+  name: "srcu_init_notifier_head"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe9ff63e4
+  type_id: 0x1b455a16
+  full_name: "srcu_init_notifier_head"
+}
+elf_symbol {
+  id: 0x8a3c07b3
+  name: "srcu_notifier_call_chain"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x312514b5
+  type_id: 0x96961261
+  full_name: "srcu_notifier_call_chain"
+}
+elf_symbol {
+  id: 0xffcd07df
+  name: "srcu_notifier_chain_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0f45524a
+  type_id: 0x9633323b
+  full_name: "srcu_notifier_chain_register"
+}
+elf_symbol {
+  id: 0x322f6dbd
+  name: "srcu_notifier_chain_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4bc97c17
+  type_id: 0x9633323b
+  full_name: "srcu_notifier_chain_unregister"
+}
+elf_symbol {
+  id: 0x56de18f0
+  name: "srcu_torture_stats_print"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf15c3845
+  type_id: 0x18699f39
+  full_name: "srcu_torture_stats_print"
+}
+elf_symbol {
+  id: 0xc78ca9c9
+  name: "srcutorture_get_gp_data"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc19e520c
+  type_id: 0x28314eaa
+  full_name: "srcutorture_get_gp_data"
+}
+elf_symbol {
+  id: 0xf0ca1a39
+  name: "sscanf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbcab6ee6
+  type_id: 0x92d5c63f
+  full_name: "sscanf"
+}
+elf_symbol {
+  id: 0x4ca735c5
+  name: "stack_depot_fetch"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x051a0bc1
+  type_id: 0xebb137aa
+  full_name: "stack_depot_fetch"
+}
+elf_symbol {
+  id: 0xf4594c32
+  name: "stack_depot_save"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x913ebd32
+  type_id: 0x118e7b5d
+  full_name: "stack_depot_save"
+}
+elf_symbol {
+  id: 0xa33694f6
+  name: "stack_trace_print"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa45c7b90
+  type_id: 0x1e3f491e
+  full_name: "stack_trace_print"
+}
+elf_symbol {
+  id: 0x7e8e12de
+  name: "stack_trace_save"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6bd1aa56
+  type_id: 0xce4f521b
+  full_name: "stack_trace_save"
+}
+elf_symbol {
+  id: 0xe69a5898
+  name: "stack_trace_save_tsk"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5b0816c3
+  type_id: 0xc9945640
+  full_name: "stack_trace_save_tsk"
+}
+elf_symbol {
+  id: 0xbd07e567
+  name: "start_poll_synchronize_rcu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x91955a9f
+  type_id: 0x31accd53
+  full_name: "start_poll_synchronize_rcu"
+}
+elf_symbol {
+  id: 0xf304733e
+  name: "start_poll_synchronize_rcu_expedited"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4c2b351d
+  type_id: 0x31accd53
+  full_name: "start_poll_synchronize_rcu_expedited"
+}
+elf_symbol {
+  id: 0x153d2098
+  name: "start_poll_synchronize_srcu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x022f1ab4
+  type_id: 0x394e2c9b
+  full_name: "start_poll_synchronize_srcu"
+}
+elf_symbol {
+  id: 0xc24d49e4
+  name: "static_key_disable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb912560d
+  type_id: 0x1b3aea40
+  full_name: "static_key_disable"
+}
+elf_symbol {
+  id: 0xd09568e0
+  name: "static_key_slow_dec"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2f4880df
+  type_id: 0x1b3aea40
+  full_name: "static_key_slow_dec"
+}
+elf_symbol {
+  id: 0xe4a0e986
+  name: "static_key_slow_inc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8e92f7c4
+  type_id: 0x1b3aea40
+  full_name: "static_key_slow_inc"
+}
+elf_symbol {
+  id: 0x6dc2f0b4
+  name: "stop_machine"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdfc04014
+  type_id: 0xb942d127
+  full_name: "stop_machine"
+}
+elf_symbol {
+  id: 0xac5037c8
+  name: "stop_one_cpu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb9b9f56e
+  type_id: 0x8ead5dbb
+  full_name: "stop_one_cpu"
+}
+elf_symbol {
+  id: 0x0aa43c83
+  name: "stop_one_cpu_nowait"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x60d1f7de
+  type_id: 0xed8994d9
+  full_name: "stop_one_cpu_nowait"
+}
+elf_symbol {
+  id: 0x02489ec9
+  name: "stpcpy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf4db35bc
+  type_id: 0x3fe6baa1
+  full_name: "stpcpy"
+}
+elf_symbol {
+  id: 0x1737916a
+  name: "strcasecmp"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaafdc258
+  type_id: 0x92fc8cbd
+  full_name: "strcasecmp"
+}
+elf_symbol {
+  id: 0xe77c296b
+  name: "strcat"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x061651be
+  type_id: 0x3fe6baa1
+  full_name: "strcat"
+}
+elf_symbol {
+  id: 0xfcf064a9
+  name: "strchr"
+  is_defined: true
+  symbol_type: FUNCTION
+  binding: WEAK
+  crc: 0x349cba85
+}
+elf_symbol {
+  id: 0x9dd5c94f
+  name: "strchrnul"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xceab0311
+  type_id: 0x3026afc1
+  full_name: "strchrnul"
+}
+elf_symbol {
+  id: 0xe1ae099f
+  name: "strcmp"
+  is_defined: true
+  symbol_type: FUNCTION
+  binding: WEAK
+  crc: 0xe2d5255a
+}
+elf_symbol {
+  id: 0x54bdcaa9
+  name: "strcpy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe914e41e
+  type_id: 0x3fe6baa1
+  full_name: "strcpy"
+}
+elf_symbol {
+  id: 0x81366fa1
+  name: "strcspn"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1ac5d3cb
+  type_id: 0xaa9816e6
+  full_name: "strcspn"
+}
+elf_symbol {
+  id: 0x4d0e9517
+  name: "stream_open"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3a5b4cbe
+  type_id: 0x9b022eae
+  full_name: "stream_open"
+}
+elf_symbol {
+  id: 0x189b20cc
+  name: "strim"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x77bc13a0
+  type_id: 0x3f1ef875
+  full_name: "strim"
+}
+elf_symbol {
+  id: 0x968e2d31
+  name: "string_get_size"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x48a91171
+  type_id: 0x365e97bc
+  full_name: "string_get_size"
+}
+elf_symbol {
+  id: 0x5d71d694
+  name: "strlcat"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf9c0b663
+  type_id: 0x96da7f62
+  full_name: "strlcat"
+}
+elf_symbol {
+  id: 0x898b21e8
+  name: "strlcpy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5792f848
+  type_id: 0x96da7f62
+  full_name: "strlcpy"
+}
+elf_symbol {
+  id: 0x14d6909c
+  name: "strlen"
+  is_defined: true
+  symbol_type: FUNCTION
+  binding: WEAK
+  crc: 0x98cf60b3
+}
+elf_symbol {
+  id: 0x258b3330
+  name: "strncasecmp"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x96b29254
+  type_id: 0x92c181e7
+  full_name: "strncasecmp"
+}
+elf_symbol {
+  id: 0x1e28701f
+  name: "strncat"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2e2b40d2
+  type_id: 0x3fdbb7fb
+  full_name: "strncat"
+}
+elf_symbol {
+  id: 0x07b0efd7
+  name: "strnchr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4841bdee
+  type_id: 0x32733118
+  full_name: "strnchr"
+}
+elf_symbol {
+  id: 0x35fbffad
+  name: "strncmp"
+  is_defined: true
+  symbol_type: FUNCTION
+  binding: WEAK
+  crc: 0x5a921311
+}
+elf_symbol {
+  id: 0x400b412c
+  name: "strncpy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9166fada
+  type_id: 0x3fdbb7fb
+  full_name: "strncpy"
+}
+elf_symbol {
+  id: 0x544af8d3
+  name: "strncpy_from_user"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0229f72d
+  type_id: 0xa6c78374
+  full_name: "strncpy_from_user"
+}
+elf_symbol {
+  id: 0x0ab31bef
+  name: "strndup_user"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4d8f9d54
+  type_id: 0x324a14fb
+  full_name: "strndup_user"
+}
+elf_symbol {
+  id: 0x457e09db
+  name: "strnlen"
+  is_defined: true
+  symbol_type: FUNCTION
+  binding: WEAK
+  crc: 0xa916b694
+}
+elf_symbol {
+  id: 0xbf5ecdb4
+  name: "strnstr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc310b981
+  type_id: 0x317f6303
+  full_name: "strnstr"
+}
+elf_symbol {
+  id: 0x8f344cc6
+  name: "strpbrk"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9a1dfd65
+  type_id: 0x31426e59
+  full_name: "strpbrk"
+}
+elf_symbol {
+  id: 0x123ab6a2
+  name: "strrchr"
+  is_defined: true
+  symbol_type: FUNCTION
+  binding: WEAK
+  crc: 0x9f984513
+}
+elf_symbol {
+  id: 0x747f8310
+  name: "strreplace"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7410aba2
+  type_id: 0x3ff1d65f
+  full_name: "strreplace"
+}
+elf_symbol {
+  id: 0x7bd225a5
+  name: "strscpy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdd64e639
+  type_id: 0x151457b1
+  full_name: "strscpy"
+}
+elf_symbol {
+  id: 0xe7f214f1
+  name: "strscpy_pad"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfbb8a761
+  type_id: 0x151457b1
+  full_name: "strscpy_pad"
+}
+elf_symbol {
+  id: 0x22209cb5
+  name: "strsep"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x85df9b6c
+  type_id: 0x3c2a7319
+  full_name: "strsep"
+}
+elf_symbol {
+  id: 0x248c1bba
+  name: "strspn"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc29bf967
+  type_id: 0xaa9816e6
+  full_name: "strspn"
+}
+elf_symbol {
+  id: 0x563982aa
+  name: "strstr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1e6d26a8
+  type_id: 0x31426e59
+  full_name: "strstr"
+}
+elf_symbol {
+  id: 0xc3067e63
+  name: "submit_bh"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb3eddb17
+  type_id: 0x0e24970c
+  full_name: "submit_bh"
+}
+elf_symbol {
+  id: 0x5577d5a8
+  name: "submit_bio"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8c4ddfd2
+  type_id: 0x15f0919b
+  full_name: "submit_bio"
+}
+elf_symbol {
+  id: 0x0e1b0b82
+  name: "submit_bio_wait"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd691938d
+  type_id: 0x98e82327
+  full_name: "submit_bio_wait"
+}
+elf_symbol {
+  id: 0xfb52ace2
+  name: "subsys_system_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9d3986e0
+  type_id: 0x9d6a72fd
+  full_name: "subsys_system_register"
+}
+elf_symbol {
+  id: 0x44e002a2
+  name: "suspend_set_ops"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1ab0c7e0
+  type_id: 0x1d20fb22
+  full_name: "suspend_set_ops"
+}
+elf_symbol {
+  id: 0x1fe11014
+  name: "sync_blockdev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x984592af
+  type_id: 0x9e8b6578
+  full_name: "sync_blockdev"
+}
+elf_symbol {
+  id: 0x2a267913
+  name: "sync_file_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0f1d3f85
+  type_id: 0x28bd3c4e
+  full_name: "sync_file_create"
+}
+elf_symbol {
+  id: 0xf3c91dcd
+  name: "sync_file_get_fence"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4dca08ee
+  type_id: 0xc68f67ec
+  full_name: "sync_file_get_fence"
+}
+elf_symbol {
+  id: 0x3da4fd63
+  name: "synchronize_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe523ad75
+  type_id: 0x01f9081c
+  full_name: "synchronize_irq"
+}
+elf_symbol {
+  id: 0xc49e9f39
+  name: "synchronize_net"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x609f1c7e
+  type_id: 0x10985193
+  full_name: "synchronize_net"
+}
+elf_symbol {
+  id: 0x89663420
+  name: "synchronize_rcu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6091797f
+  type_id: 0x10985193
+  full_name: "synchronize_rcu"
+}
+elf_symbol {
+  id: 0xfadb35f8
+  name: "synchronize_rcu_expedited"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x86f6b99d
+  type_id: 0x10985193
+  full_name: "synchronize_rcu_expedited"
+}
+elf_symbol {
+  id: 0xfc0e1518
+  name: "synchronize_rcu_tasks"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0b1bb9f9
+  type_id: 0x10985193
+  full_name: "synchronize_rcu_tasks"
+}
+elf_symbol {
+  id: 0xa16b7b6f
+  name: "synchronize_rcu_tasks_trace"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6246a629
+  type_id: 0x10985193
+  full_name: "synchronize_rcu_tasks_trace"
+}
+elf_symbol {
+  id: 0x177b2fdf
+  name: "synchronize_srcu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5ee82342
+  type_id: 0x187ab05b
+  full_name: "synchronize_srcu"
+}
+elf_symbol {
+  id: 0xcbe3a021
+  name: "synchronize_srcu_expedited"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x96abfe59
+  type_id: 0x187ab05b
+  full_name: "synchronize_srcu_expedited"
+}
+elf_symbol {
+  id: 0x489b0049
+  name: "synth_event_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x57321401
+  type_id: 0x924108e7
+  full_name: "synth_event_create"
+}
+elf_symbol {
+  id: 0x86020d6e
+  name: "synth_event_delete"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x64e27c4f
+  type_id: 0x9204ce69
+  full_name: "synth_event_delete"
+}
+elf_symbol {
+  id: 0xe639979e
+  name: "sys_tz"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xfe5d4bb2
+  type_id: 0x15b306bc
+  full_name: "sys_tz"
+}
+elf_symbol {
+  id: 0xe072259b
+  name: "syscon_node_to_regmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9448b538
+  type_id: 0x81a9f9cd
+  full_name: "syscon_node_to_regmap"
+}
+elf_symbol {
+  id: 0x4cdd0c3f
+  name: "syscon_regmap_lookup_by_compatible"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xee6b71c4
+  type_id: 0x83311466
+  full_name: "syscon_regmap_lookup_by_compatible"
+}
+elf_symbol {
+  id: 0x9a5404bf
+  name: "syscon_regmap_lookup_by_phandle"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xac71bb09
+  type_id: 0x8151bb19
+  full_name: "syscon_regmap_lookup_by_phandle"
+}
+elf_symbol {
+  id: 0x2f857527
+  name: "syscon_regmap_lookup_by_phandle_args"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf2dec79f
+  type_id: 0x81481ce8
+  full_name: "syscon_regmap_lookup_by_phandle_args"
+}
+elf_symbol {
+  id: 0x3e5f4f82
+  name: "syscon_regmap_lookup_by_phandle_optional"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x39ae3d98
+  type_id: 0x8151bb19
+  full_name: "syscon_regmap_lookup_by_phandle_optional"
+}
+elf_symbol {
+  id: 0xbf1515af
+  name: "sysctl_sched_features"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x84da85bb
+  type_id: 0x4585663f
+  full_name: "sysctl_sched_features"
+}
+elf_symbol {
+  id: 0x18d0dd21
+  name: "sysctl_vals"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xc8827b75
+  type_id: 0xbd62e703
+  full_name: "sysctl_vals"
+}
+elf_symbol {
+  id: 0x92705587
+  name: "sysfs_add_file_to_group"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x20aa5048
+  type_id: 0x958e52ea
+  full_name: "sysfs_add_file_to_group"
+}
+elf_symbol {
+  id: 0xdbe66171
+  name: "sysfs_add_link_to_group"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x104f5da6
+  type_id: 0x958c8293
+  full_name: "sysfs_add_link_to_group"
+}
+elf_symbol {
+  id: 0x90640a71
+  name: "sysfs_create_bin_file"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3133d901
+  type_id: 0x959d810d
+  full_name: "sysfs_create_bin_file"
+}
+elf_symbol {
+  id: 0x5b711bcd
+  name: "sysfs_create_file_ns"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8a1b623e
+  type_id: 0x958f9102
+  full_name: "sysfs_create_file_ns"
+}
+elf_symbol {
+  id: 0xc84792a8
+  name: "sysfs_create_files"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7d1e3526
+  type_id: 0x95854407
+  full_name: "sysfs_create_files"
+}
+elf_symbol {
+  id: 0xdc690470
+  name: "sysfs_create_group"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf43d4bfe
+  type_id: 0x95b1f43d
+  full_name: "sysfs_create_group"
+}
+elf_symbol {
+  id: 0x0804ce19
+  name: "sysfs_create_groups"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x414679d7
+  type_id: 0x9565c8c3
+  full_name: "sysfs_create_groups"
+}
+elf_symbol {
+  id: 0xd284bafa
+  name: "sysfs_create_link"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x56591d01
+  type_id: 0x95fc827f
+  full_name: "sysfs_create_link"
+}
+elf_symbol {
+  id: 0xae8fd9b8
+  name: "sysfs_create_mount_point"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4a0df635
+  type_id: 0x958486f6
+  full_name: "sysfs_create_mount_point"
+}
+elf_symbol {
+  id: 0x8e57aec2
+  name: "sysfs_emit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe783e261
+  type_id: 0x9c7112c7
+  full_name: "sysfs_emit"
+}
+elf_symbol {
+  id: 0x06721103
+  name: "sysfs_emit_at"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x99f2d00a
+  type_id: 0x9d318958
+  full_name: "sysfs_emit_at"
+}
+elf_symbol {
+  id: 0x4b618371
+  name: "sysfs_merge_group"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe7fe0752
+  type_id: 0x95b1f43d
+  full_name: "sysfs_merge_group"
+}
+elf_symbol {
+  id: 0x1deea65a
+  name: "sysfs_notify"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc7278022
+  type_id: 0x1893b067
+  full_name: "sysfs_notify"
+}
+elf_symbol {
+  id: 0x5e1b9bc5
+  name: "sysfs_remove_bin_file"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9bd9a16d
+  type_id: 0x188533b1
+  full_name: "sysfs_remove_bin_file"
+}
+elf_symbol {
+  id: 0x51be9cf5
+  name: "sysfs_remove_file_from_group"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1175e582
+  type_id: 0x1896e056
+  full_name: "sysfs_remove_file_from_group"
+}
+elf_symbol {
+  id: 0x1ec7cdc1
+  name: "sysfs_remove_file_ns"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfb705284
+  type_id: 0x189723be
+  full_name: "sysfs_remove_file_ns"
+}
+elf_symbol {
+  id: 0x48a2aa64
+  name: "sysfs_remove_files"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x39b0f22d
+  type_id: 0x189df6bb
+  full_name: "sysfs_remove_files"
+}
+elf_symbol {
+  id: 0xd556d15c
+  name: "sysfs_remove_group"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf1d806db
+  type_id: 0x18a94681
+  full_name: "sysfs_remove_group"
+}
+elf_symbol {
+  id: 0x4a678355
+  name: "sysfs_remove_groups"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xea77da66
+  type_id: 0x187d7a7f
+  full_name: "sysfs_remove_groups"
+}
+elf_symbol {
+  id: 0xe063e9de
+  name: "sysfs_remove_link"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdfb076f5
+  type_id: 0x189c344a
+  full_name: "sysfs_remove_link"
+}
+elf_symbol {
+  id: 0xddd9e037
+  name: "sysfs_remove_link_from_group"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf1b0651f
+  type_id: 0x1893b067
+  full_name: "sysfs_remove_link_from_group"
+}
+elf_symbol {
+  id: 0x7d99e76c
+  name: "sysfs_remove_mount_point"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8f2dd1eb
+  type_id: 0x189c344a
+  full_name: "sysfs_remove_mount_point"
+}
+elf_symbol {
+  id: 0x389ac279
+  name: "sysfs_streq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x222e7ce2
+  type_id: 0xf1d83496
+  full_name: "sysfs_streq"
+}
+elf_symbol {
+  id: 0xe845f76e
+  name: "sysfs_update_group"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3a2221a5
+  type_id: 0x95b1f43d
+  full_name: "sysfs_update_group"
+}
+elf_symbol {
+  id: 0xda44819e
+  name: "sysrq_mask"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4a17ed66
+  type_id: 0x9d80e32f
+  full_name: "sysrq_mask"
+}
+elf_symbol {
+  id: 0x46cd3193
+  name: "sysrq_toggle_support"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc1086e0c
+  type_id: 0x8448d7e4
+  full_name: "sysrq_toggle_support"
+}
+elf_symbol {
+  id: 0xb6c44fb1
+  name: "system_32bit_el0_cpumask"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7d43b425
+  type_id: 0x599826a1
+  full_name: "system_32bit_el0_cpumask"
+}
+elf_symbol {
+  id: 0xb5701f35
+  name: "system_freezable_power_efficient_wq"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xd067d3c5
+  type_id: 0x13f8b706
+  full_name: "system_freezable_power_efficient_wq"
+}
+elf_symbol {
+  id: 0xeeb4dc4c
+  name: "system_freezable_wq"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xd4034828
+  type_id: 0x13f8b706
+  full_name: "system_freezable_wq"
+}
+elf_symbol {
+  id: 0x314b4b2e
+  name: "system_highpri_wq"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xcd91b127
+  type_id: 0x13f8b706
+  full_name: "system_highpri_wq"
+}
+elf_symbol {
+  id: 0x4ecc800b
+  name: "system_long_wq"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x131db64a
+  type_id: 0x13f8b706
+  full_name: "system_long_wq"
+}
+elf_symbol {
+  id: 0x88fcd367
+  name: "system_power_efficient_wq"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x47884890
+  type_id: 0x13f8b706
+  full_name: "system_power_efficient_wq"
+}
+elf_symbol {
+  id: 0xa64e4b1e
+  name: "system_state"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xf7370f56
+  type_id: 0x9f2e00ef
+  full_name: "system_state"
+}
+elf_symbol {
+  id: 0xd143c302
+  name: "system_unbound_wq"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xd4c14632
+  type_id: 0x13f8b706
+  full_name: "system_unbound_wq"
+}
+elf_symbol {
+  id: 0xbf6d0a0f
+  name: "system_wq"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x2d3385d3
+  type_id: 0x13f8b706
+  full_name: "system_wq"
+}
+elf_symbol {
+  id: 0x2eda3aae
+  name: "task_active_pid_ns"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb113afdd
+  type_id: 0xac273de0
+  full_name: "task_active_pid_ns"
+}
+elf_symbol {
+  id: 0x9891b743
+  name: "task_cputime_adjusted"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc2bb7316
+  type_id: 0x176dde0e
+  full_name: "task_cputime_adjusted"
+}
+elf_symbol {
+  id: 0x51f65372
+  name: "task_rq_lock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x244345e0
+  type_id: 0x8d7ecefa
+  full_name: "task_rq_lock"
+}
+elf_symbol {
+  id: 0xd26fea36
+  name: "tasklet_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2364c85a
+  type_id: 0x185fe7f3
+  full_name: "tasklet_init"
+}
+elf_symbol {
+  id: 0x6d894b2b
+  name: "tasklet_kill"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0ea3c74e
+  type_id: 0x18653f44
+  full_name: "tasklet_kill"
+}
+elf_symbol {
+  id: 0x9c77d018
+  name: "tasklet_setup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa07d1b3c
+  type_id: 0x18571a9d
+  full_name: "tasklet_setup"
+}
+elf_symbol {
+  id: 0x9b3fb280
+  name: "tasklet_unlock_wait"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x350f6ce5
+  type_id: 0x18653f44
+  full_name: "tasklet_unlock_wait"
+}
+elf_symbol {
+  id: 0x6c3c9573
+  name: "tasklist_lock"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x673472ea
+  type_id: 0xf4933b90
+  full_name: "tasklist_lock"
+}
+elf_symbol {
+  id: 0x01cdd14d
+  name: "tcf_action_exec"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x54890127
+  type_id: 0x9cdfbc5a
+  full_name: "tcf_action_exec"
+}
+elf_symbol {
+  id: 0xc924b9c3
+  name: "tcf_exts_destroy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf6b73e2c
+  type_id: 0x147c9fd8
+  full_name: "tcf_exts_destroy"
+}
+elf_symbol {
+  id: 0x2c53af12
+  name: "tcf_exts_dump"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1a005bd2
+  type_id: 0x9c9d758d
+  full_name: "tcf_exts_dump"
+}
+elf_symbol {
+  id: 0xa4bb7174
+  name: "tcf_exts_dump_stats"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x19a4eaf0
+  type_id: 0x9c9d758d
+  full_name: "tcf_exts_dump_stats"
+}
+elf_symbol {
+  id: 0xd6adc7e6
+  name: "tcf_exts_validate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6e754c3f
+  type_id: 0x9e8d7e1b
+  full_name: "tcf_exts_validate"
+}
+elf_symbol {
+  id: 0xcc386657
+  name: "tcf_queue_work"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x29063663
+  type_id: 0xf39dedcb
+  full_name: "tcf_queue_work"
+}
+elf_symbol {
+  id: 0xeb0e3e9b
+  name: "tcp_hashinfo"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xa70ed9dc
+  type_id: 0x5760fe36
+  full_name: "tcp_hashinfo"
+}
+elf_symbol {
+  id: 0x857e5dc9
+  name: "tcpci_get_tcpm_port"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbe111953
+  type_id: 0x13f3b20a
+  full_name: "tcpci_get_tcpm_port"
+}
+elf_symbol {
+  id: 0x85459353
+  name: "tcpci_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6f497a3c
+  type_id: 0x27d025a4
+  full_name: "tcpci_irq"
+}
+elf_symbol {
+  id: 0x1ecfd7d9
+  name: "tcpci_register_port"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb83dcf2d
+  type_id: 0x2601e7ac
+  full_name: "tcpci_register_port"
+}
+elf_symbol {
+  id: 0x80ba938c
+  name: "tcpci_unregister_port"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc529e32e
+  type_id: 0x158cf0d6
+  full_name: "tcpci_unregister_port"
+}
+elf_symbol {
+  id: 0x76f0e146
+  name: "tcpm_cc_change"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc37b9769
+  type_id: 0x129c1f38
+  full_name: "tcpm_cc_change"
+}
+elf_symbol {
+  id: 0x8ff05644
+  name: "tcpm_pd_hard_reset"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9e0bd753
+  type_id: 0x129c1f38
+  full_name: "tcpm_pd_hard_reset"
+}
+elf_symbol {
+  id: 0x3da83409
+  name: "tcpm_pd_receive"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb655342c
+  type_id: 0x12531baa
+  full_name: "tcpm_pd_receive"
+}
+elf_symbol {
+  id: 0xbabc4102
+  name: "tcpm_pd_transmit_complete"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3b84657b
+  type_id: 0x10815f18
+  full_name: "tcpm_pd_transmit_complete"
+}
+elf_symbol {
+  id: 0x4c16a6b4
+  name: "tcpm_port_clean"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd680581d
+  type_id: 0x129c1f38
+  full_name: "tcpm_port_clean"
+}
+elf_symbol {
+  id: 0xc8ad19b6
+  name: "tcpm_port_is_toggling"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xda86a83d
+  type_id: 0xfca015af
+  full_name: "tcpm_port_is_toggling"
+}
+elf_symbol {
+  id: 0xdebe76ba
+  name: "tcpm_sink_frs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x10ec6d2d
+  type_id: 0x129c1f38
+  full_name: "tcpm_sink_frs"
+}
+elf_symbol {
+  id: 0xae3ea97c
+  name: "tcpm_sourcing_vbus"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeb779665
+  type_id: 0x129c1f38
+  full_name: "tcpm_sourcing_vbus"
+}
+elf_symbol {
+  id: 0x6869c83d
+  name: "tcpm_vbus_change"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xceb50012
+  type_id: 0x129c1f38
+  full_name: "tcpm_vbus_change"
+}
+elf_symbol {
+  id: 0x5bbd3545
+  name: "thermal_cdev_update"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x165674ba
+  type_id: 0x11aaf502
+  full_name: "thermal_cdev_update"
+}
+elf_symbol {
+  id: 0xf4017fdd
+  name: "thermal_cooling_device_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x64aaf1ec
+  type_id: 0x4759fa3a
+  full_name: "thermal_cooling_device_register"
+}
+elf_symbol {
+  id: 0x2d1f2cdd
+  name: "thermal_cooling_device_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xec93f466
+  type_id: 0x11aaf502
+  full_name: "thermal_cooling_device_unregister"
+}
+elf_symbol {
+  id: 0xdfc3c1f5
+  name: "thermal_of_cooling_device_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaaba57f7
+  type_id: 0x4552a7f2
+  full_name: "thermal_of_cooling_device_register"
+}
+elf_symbol {
+  id: 0x4da66281
+  name: "thermal_of_zone_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x027d5ad3
+  type_id: 0x192105f2
+  full_name: "thermal_of_zone_unregister"
+}
+elf_symbol {
+  id: 0x8c0c76a2
+  name: "thermal_pressure"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xc407682f
+  type_id: 0x33756485
+  full_name: "thermal_pressure"
+}
+elf_symbol {
+  id: 0x91df6de8
+  name: "thermal_zone_bind_cooling_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x08f8406c
+  type_id: 0x95a4c6b8
+  full_name: "thermal_zone_bind_cooling_device"
+}
+elf_symbol {
+  id: 0x96242237
+  name: "thermal_zone_device_disable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdb875325
+  type_id: 0x9439b74e
+  full_name: "thermal_zone_device_disable"
+}
+elf_symbol {
+  id: 0x571b278c
+  name: "thermal_zone_device_enable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xea91c3df
+  type_id: 0x9439b74e
+  full_name: "thermal_zone_device_enable"
+}
+elf_symbol {
+  id: 0x3272fe14
+  name: "thermal_zone_device_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9b7989e7
+  type_id: 0xf354bbbc
+  full_name: "thermal_zone_device_register"
+}
+elf_symbol {
+  id: 0x73954c59
+  name: "thermal_zone_device_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1fb47932
+  type_id: 0x192105f2
+  full_name: "thermal_zone_device_unregister"
+}
+elf_symbol {
+  id: 0x0f9699eb
+  name: "thermal_zone_device_update"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaa5479ac
+  type_id: 0x18a3b8d2
+  full_name: "thermal_zone_device_update"
+}
+elf_symbol {
+  id: 0x66782435
+  name: "thermal_zone_get_temp"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbb84d0d3
+  type_id: 0x9474d77b
+  full_name: "thermal_zone_get_temp"
+}
+elf_symbol {
+  id: 0x793a755b
+  name: "thermal_zone_get_zone_by_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfbe82964
+  type_id: 0xf2d19814
+  full_name: "thermal_zone_get_zone_by_name"
+}
+elf_symbol {
+  id: 0x68e98442
+  name: "thread_group_cputime_adjusted"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3026e722
+  type_id: 0x176dde0e
+  full_name: "thread_group_cputime_adjusted"
+}
+elf_symbol {
+  id: 0x1cf36c3c
+  name: "tick_nohz_get_idle_calls_cpu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2943498b
+  type_id: 0x2864f998
+  full_name: "tick_nohz_get_idle_calls_cpu"
+}
+elf_symbol {
+  id: 0x9fc8421c
+  name: "tick_nohz_get_sleep_length"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1939cb0f
+  type_id: 0x9c6915bb
+  full_name: "tick_nohz_get_sleep_length"
+}
+elf_symbol {
+  id: 0xd79bc23e
+  name: "time64_to_tm"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0fff5afc
+  type_id: 0x309d81c3
+  full_name: "time64_to_tm"
+}
+elf_symbol {
+  id: 0x2179a4e4
+  name: "timecounter_cyc2time"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbc3f2cb0
+  type_id: 0x5bdf57e0
+  full_name: "timecounter_cyc2time"
+}
+elf_symbol {
+  id: 0x6642e9e1
+  name: "timecounter_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x862258db
+  type_id: 0x165a5b75
+  full_name: "timecounter_init"
+}
+elf_symbol {
+  id: 0x4063e8a2
+  name: "timecounter_read"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6f9e763b
+  type_id: 0x51dbbe7b
+  full_name: "timecounter_read"
+}
+elf_symbol {
+  id: 0x78e97bdd
+  name: "timer_of_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3db6885f
+  type_id: 0x90e86d28
+  full_name: "timer_of_init"
+}
+elf_symbol {
+  id: 0xdc3e523b
+  name: "timer_unstable_counter_workaround"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x37220509
+  type_id: 0x35bad1e5
+  full_name: "timer_unstable_counter_workaround"
+}
+elf_symbol {
+  id: 0x3934d205
+  name: "timespec64_to_jiffies"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdf93b9d8
+  type_id: 0x3e2facf6
+  full_name: "timespec64_to_jiffies"
+}
+elf_symbol {
+  id: 0xa603e7df
+  name: "tipc_dump_done"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdc43d984
+  type_id: 0x96b01a1d
+  full_name: "tipc_dump_done"
+}
+elf_symbol {
+  id: 0xfbbf21e2
+  name: "tipc_dump_start"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x60da1d20
+  type_id: 0x96b01a1d
+  full_name: "tipc_dump_start"
+}
+elf_symbol {
+  id: 0xb08b0149
+  name: "tipc_nl_sk_walk"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf6b650cc
+  type_id: 0x9c6b5433
+  full_name: "tipc_nl_sk_walk"
+}
+elf_symbol {
+  id: 0x22b164d3
+  name: "tipc_sk_fill_sock_diag"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2a0945d7
+  type_id: 0x9c6f59d4
+  full_name: "tipc_sk_fill_sock_diag"
+}
+elf_symbol {
+  id: 0x18c0f285
+  name: "topology_clear_scale_freq_source"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x03a20a41
+  type_id: 0x283e6677
+  full_name: "topology_clear_scale_freq_source"
+}
+elf_symbol {
+  id: 0xd3e5c9bd
+  name: "topology_update_done"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xc7b3d143
+  type_id: 0x6d7f5ff6
+  full_name: "topology_update_done"
+}
+elf_symbol {
+  id: 0x96be8568
+  name: "topology_update_thermal_pressure"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6b545371
+  type_id: 0x1c163406
+  full_name: "topology_update_thermal_pressure"
+}
+elf_symbol {
+  id: 0xf7dfdad1
+  name: "touch_softlockup_watchdog"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6fcb87a1
+  type_id: 0x10985193
+  full_name: "touch_softlockup_watchdog"
+}
+elf_symbol {
+  id: 0x47d78ddb
+  name: "touchscreen_parse_properties"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x42e784e5
+  type_id: 0x1532669f
+  full_name: "touchscreen_parse_properties"
+}
+elf_symbol {
+  id: 0x961122f4
+  name: "touchscreen_report_pos"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd541ddc7
+  type_id: 0x1459aedb
+  full_name: "touchscreen_report_pos"
+}
+elf_symbol {
+  id: 0x86b2ecdf
+  name: "trace_array_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9b7b8816
+  type_id: 0x1164fa41
+  full_name: "trace_array_put"
+}
+elf_symbol {
+  id: 0x00fb9c6d
+  name: "trace_clock_local"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x33efc8c8
+  type_id: 0x57dbd34b
+  full_name: "trace_clock_local"
+}
+elf_symbol {
+  id: 0x0e209244
+  name: "trace_event_buffer_commit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x816bb80d
+  type_id: 0x1a405f2d
+  full_name: "trace_event_buffer_commit"
+}
+elf_symbol {
+  id: 0xe8ad61b2
+  name: "trace_event_buffer_reserve"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x77909e8e
+  type_id: 0x5c4f178f
+  full_name: "trace_event_buffer_reserve"
+}
+elf_symbol {
+  id: 0x4f11a926
+  name: "trace_event_ignore_this_pid"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x23312e7e
+  type_id: 0xfe730297
+  full_name: "trace_event_ignore_this_pid"
+}
+elf_symbol {
+  id: 0x0a4752d3
+  name: "trace_event_printf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbfb5f86f
+  type_id: 0x1417fb73
+  full_name: "trace_event_printf"
+}
+elf_symbol {
+  id: 0x50d8dcae
+  name: "trace_event_raw_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa7d84344
+  type_id: 0x9427c0bf
+  full_name: "trace_event_raw_init"
+}
+elf_symbol {
+  id: 0x8545e3e2
+  name: "trace_event_reg"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x062e5727
+  type_id: 0x959717f8
+  full_name: "trace_event_reg"
+}
+elf_symbol {
+  id: 0xe324c6fd
+  name: "trace_get_event_file"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2bbb38ea
+  type_id: 0xfcfa91ba
+  full_name: "trace_get_event_file"
+}
+elf_symbol {
+  id: 0x4213c7e8
+  name: "trace_handle_return"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7381287f
+  type_id: 0x74154359
+  full_name: "trace_handle_return"
+}
+elf_symbol {
+  id: 0x09b538c5
+  name: "trace_output_call"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5013ac7a
+  type_id: 0x99cffa53
+  full_name: "trace_output_call"
+}
+elf_symbol {
+  id: 0x167489e0
+  name: "trace_print_array_seq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc3bc72ad
+  type_id: 0x929b931d
+  full_name: "trace_print_array_seq"
+}
+elf_symbol {
+  id: 0x4fcdf35d
+  name: "trace_print_bitmask_seq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9a58dd2d
+  type_id: 0x92166366
+  full_name: "trace_print_bitmask_seq"
+}
+elf_symbol {
+  id: 0xe743c11a
+  name: "trace_print_flags_seq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x99078b39
+  type_id: 0x9291a5ba
+  full_name: "trace_print_flags_seq"
+}
+elf_symbol {
+  id: 0x89177dc3
+  name: "trace_print_hex_seq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe02ba436
+  type_id: 0x929cbb3c
+  full_name: "trace_print_hex_seq"
+}
+elf_symbol {
+  id: 0xa53cf4d8
+  name: "trace_print_symbols_seq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcc5c2df4
+  type_id: 0x92a4fbf4
+  full_name: "trace_print_symbols_seq"
+}
+elf_symbol {
+  id: 0x866696e3
+  name: "trace_raw_output_prep"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf3c8d647
+  type_id: 0x99666596
+  full_name: "trace_raw_output_prep"
+}
+elf_symbol {
+  id: 0x2eccd186
+  name: "trace_seq_printf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x525d0aa3
+  type_id: 0x1068b9cd
+  full_name: "trace_seq_printf"
+}
+elf_symbol {
+  id: 0xeefac25a
+  name: "trace_seq_putc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1b5f4377
+  type_id: 0x11cfb4cd
+  full_name: "trace_seq_putc"
+}
+elf_symbol {
+  id: 0xc796457e
+  name: "trace_set_clr_event"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd217e9e6
+  type_id: 0x92e54489
+  full_name: "trace_set_clr_event"
+}
+elf_symbol {
+  id: 0xd1284f5b
+  name: "tracepoint_probe_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x95e102ab
+  type_id: 0x9eccfc59
+  full_name: "tracepoint_probe_register"
+}
+elf_symbol {
+  id: 0xed8ca0be
+  name: "tracepoint_probe_register_prio"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9b70c6ff
+  type_id: 0x9ecd60da
+  full_name: "tracepoint_probe_register_prio"
+}
+elf_symbol {
+  id: 0x3df2f359
+  name: "tracepoint_probe_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdbeeece6
+  type_id: 0x9eccfc59
+  full_name: "tracepoint_probe_unregister"
+}
+elf_symbol {
+  id: 0x33172d21
+  name: "tracepoint_srcu"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xc8063a7e
+  type_id: 0xa46efa19
+  full_name: "tracepoint_srcu"
+}
+elf_symbol {
+  id: 0x54bbaa46
+  name: "tracing_off"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7944e0fc
+  type_id: 0x10985193
+  full_name: "tracing_off"
+}
+elf_symbol {
+  id: 0x3d986fb5
+  name: "try_module_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xda2e6300
+  type_id: 0xfc6dac14
+  full_name: "try_module_get"
+}
+elf_symbol {
+  id: 0x2f855953
+  name: "try_to_del_timer_sync"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfaf9e645
+  type_id: 0x920d63ce
+  full_name: "try_to_del_timer_sync"
+}
+elf_symbol {
+  id: 0x8814f5b8
+  name: "try_to_free_mem_cgroup_pages"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3de80962
+  type_id: 0x360a8ce9
+  full_name: "try_to_free_mem_cgroup_pages"
+}
+elf_symbol {
+  id: 0xe54aec5b
+  name: "try_wait_for_completion"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x21ef374c
+  type_id: 0xfffcea5d
+  full_name: "try_wait_for_completion"
+}
+elf_symbol {
+  id: 0xce4acc7b
+  name: "tso_build_data"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x04fc9d12
+  type_id: 0x1fdd6fd2
+  full_name: "tso_build_data"
+}
+elf_symbol {
+  id: 0xe244df50
+  name: "tso_build_hdr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x66be5638
+  type_id: 0x1f1f7d50
+  full_name: "tso_build_hdr"
+}
+elf_symbol {
+  id: 0xfd33d38f
+  name: "tso_count_descs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4a333dc6
+  type_id: 0x92180697
+  full_name: "tso_count_descs"
+}
+elf_symbol {
+  id: 0x74651475
+  name: "tso_start"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3d491a47
+  type_id: 0x9c172aa4
+  full_name: "tso_start"
+}
+elf_symbol {
+  id: 0x931c2b2c
+  name: "ttm_bo_eviction_valuable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xee473fba
+  type_id: 0xf7737100
+  full_name: "ttm_bo_eviction_valuable"
+}
+elf_symbol {
+  id: 0xe39ac5d6
+  name: "ttm_bo_init_reserved"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2920c2ad
+  type_id: 0x990a861c
+  full_name: "ttm_bo_init_reserved"
+}
+elf_symbol {
+  id: 0xe134ecc7
+  name: "ttm_bo_kmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2f2e9f32
+  type_id: 0x945ae17e
+  full_name: "ttm_bo_kmap"
+}
+elf_symbol {
+  id: 0x8804c70b
+  name: "ttm_bo_kunmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa6fed526
+  type_id: 0x172ea7dd
+  full_name: "ttm_bo_kunmap"
+}
+elf_symbol {
+  id: 0x2d6405ae
+  name: "ttm_bo_lock_delayed_workqueue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x769e71dd
+  type_id: 0x998430a3
+  full_name: "ttm_bo_lock_delayed_workqueue"
+}
+elf_symbol {
+  id: 0xfa270a04
+  name: "ttm_bo_mem_space"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xebb13390
+  type_id: 0x941fec91
+  full_name: "ttm_bo_mem_space"
+}
+elf_symbol {
+  id: 0x9b356a61
+  name: "ttm_bo_mmap_obj"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf8ca9c28
+  type_id: 0x9f958461
+  full_name: "ttm_bo_mmap_obj"
+}
+elf_symbol {
+  id: 0x83b49800
+  name: "ttm_bo_move_accel_cleanup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfffee30f
+  type_id: 0x948d5e96
+  full_name: "ttm_bo_move_accel_cleanup"
+}
+elf_symbol {
+  id: 0xb8bb996e
+  name: "ttm_bo_move_memcpy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1b130e31
+  type_id: 0x94b2aa4e
+  full_name: "ttm_bo_move_memcpy"
+}
+elf_symbol {
+  id: 0x414369cc
+  name: "ttm_bo_move_to_lru_tail"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa75aa4e0
+  type_id: 0x19832066
+  full_name: "ttm_bo_move_to_lru_tail"
+}
+elf_symbol {
+  id: 0x4012acca
+  name: "ttm_bo_pin"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0ba6f179
+  type_id: 0x19832066
+  full_name: "ttm_bo_pin"
+}
+elf_symbol {
+  id: 0xf57e37fe
+  name: "ttm_bo_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9887feb6
+  type_id: 0x19832066
+  full_name: "ttm_bo_put"
+}
+elf_symbol {
+  id: 0xb0b2d21a
+  name: "ttm_bo_set_bulk_move"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9ea58eab
+  type_id: 0x19e4b813
+  full_name: "ttm_bo_set_bulk_move"
+}
+elf_symbol {
+  id: 0xd755dcd0
+  name: "ttm_bo_unlock_delayed_workqueue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbfee8466
+  type_id: 0x15000153
+  full_name: "ttm_bo_unlock_delayed_workqueue"
+}
+elf_symbol {
+  id: 0x05d29e21
+  name: "ttm_bo_unpin"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xefce7233
+  type_id: 0x19832066
+  full_name: "ttm_bo_unpin"
+}
+elf_symbol {
+  id: 0x370666f8
+  name: "ttm_bo_validate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x050c168f
+  type_id: 0x941d79a6
+  full_name: "ttm_bo_validate"
+}
+elf_symbol {
+  id: 0xaf95f073
+  name: "ttm_bo_vm_access"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5ac871d0
+  type_id: 0x9fce4cfe
+  full_name: "ttm_bo_vm_access"
+}
+elf_symbol {
+  id: 0x6dd2d49f
+  name: "ttm_bo_vm_close"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0de7a2fb
+  type_id: 0x121c81c2
+  full_name: "ttm_bo_vm_close"
+}
+elf_symbol {
+  id: 0x95984acc
+  name: "ttm_bo_vm_dummy_page"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7abd87e8
+  type_id: 0xcc9736e7
+  full_name: "ttm_bo_vm_dummy_page"
+}
+elf_symbol {
+  id: 0x3cd017aa
+  name: "ttm_bo_vm_fault_reserved"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x88a3c427
+  type_id: 0xcc9bebbe
+  full_name: "ttm_bo_vm_fault_reserved"
+}
+elf_symbol {
+  id: 0xe12a74f8
+  name: "ttm_bo_vm_open"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb3d129e6
+  type_id: 0x121c81c2
+  full_name: "ttm_bo_vm_open"
+}
+elf_symbol {
+  id: 0x17314b18
+  name: "ttm_bo_vm_reserve"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd31640bc
+  type_id: 0xcbea3bfa
+  full_name: "ttm_bo_vm_reserve"
+}
+elf_symbol {
+  id: 0xfa2cb6b6
+  name: "ttm_bo_vmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x26fea0db
+  type_id: 0x9467fbb8
+  full_name: "ttm_bo_vmap"
+}
+elf_symbol {
+  id: 0xc4fae65d
+  name: "ttm_bo_vunmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1eb7beb9
+  type_id: 0x197f4904
+  full_name: "ttm_bo_vunmap"
+}
+elf_symbol {
+  id: 0x7d656c6a
+  name: "ttm_device_fini"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa0f13682
+  type_id: 0x149c821f
+  full_name: "ttm_device_fini"
+}
+elf_symbol {
+  id: 0x19abe185
+  name: "ttm_device_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb4dc696b
+  type_id: 0x99344ba0
+  full_name: "ttm_device_init"
+}
+elf_symbol {
+  id: 0x07c1d025
+  name: "ttm_eu_backoff_reservation"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x508abcb6
+  type_id: 0x1b6d6e11
+  full_name: "ttm_eu_backoff_reservation"
+}
+elf_symbol {
+  id: 0x697b29f0
+  name: "ttm_eu_reserve_buffers"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc1cd6a61
+  type_id: 0x966e7af2
+  full_name: "ttm_eu_reserve_buffers"
+}
+elf_symbol {
+  id: 0x88860085
+  name: "ttm_glob"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x2fdd9820
+  type_id: 0xfeb03d10
+  full_name: "ttm_glob"
+}
+elf_symbol {
+  id: 0x27015d04
+  name: "ttm_lru_bulk_move_tail"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeb2a6e8c
+  type_id: 0x16e1d6ca
+  full_name: "ttm_lru_bulk_move_tail"
+}
+elf_symbol {
+  id: 0xd1b528e9
+  name: "ttm_pool_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6ea4988b
+  type_id: 0x9e72e410
+  full_name: "ttm_pool_alloc"
+}
+elf_symbol {
+  id: 0x5eb66253
+  name: "ttm_pool_debugfs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd07b8445
+  type_id: 0x9e41ea47
+  full_name: "ttm_pool_debugfs"
+}
+elf_symbol {
+  id: 0xa97cb486
+  name: "ttm_pool_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe1fd676c
+  type_id: 0x136845f1
+  full_name: "ttm_pool_free"
+}
+elf_symbol {
+  id: 0xace67562
+  name: "ttm_range_man_fini_nocheck"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x22e7dda5
+  type_id: 0x9892253b
+  full_name: "ttm_range_man_fini_nocheck"
+}
+elf_symbol {
+  id: 0x865df3c2
+  name: "ttm_range_man_init_nocheck"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd8aa20d3
+  type_id: 0x9889b739
+  full_name: "ttm_range_man_init_nocheck"
+}
+elf_symbol {
+  id: 0xc0b87726
+  name: "ttm_resource_fini"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x20ff28e1
+  type_id: 0x185a605b
+  full_name: "ttm_resource_fini"
+}
+elf_symbol {
+  id: 0xf117ebcd
+  name: "ttm_resource_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x25516841
+  type_id: 0x1989559a
+  full_name: "ttm_resource_free"
+}
+elf_symbol {
+  id: 0xdc75c1bf
+  name: "ttm_resource_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x58fc6758
+  type_id: 0x194776d1
+  full_name: "ttm_resource_init"
+}
+elf_symbol {
+  id: 0x164f9124
+  name: "ttm_resource_manager_evict_all"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x27b41033
+  type_id: 0x99001ef9
+  full_name: "ttm_resource_manager_evict_all"
+}
+elf_symbol {
+  id: 0xd61f19c9
+  name: "ttm_resource_manager_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc2eff9f6
+  type_id: 0x189ddb68
+  full_name: "ttm_resource_manager_init"
+}
+elf_symbol {
+  id: 0x677985f3
+  name: "ttm_resource_manager_usage"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc30523d6
+  type_id: 0x56e237b7
+  full_name: "ttm_resource_manager_usage"
+}
+elf_symbol {
+  id: 0x6c2259cd
+  name: "ttm_sg_tt_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdd9889ff
+  type_id: 0x9f9e0655
+  full_name: "ttm_sg_tt_init"
+}
+elf_symbol {
+  id: 0xacf009d6
+  name: "ttm_tt_fini"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x134af5b9
+  type_id: 0x1210f89b
+  full_name: "ttm_tt_fini"
+}
+elf_symbol {
+  id: 0x0b4dd20d
+  name: "tty_chars_in_buffer"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x252d45f8
+  type_id: 0xc564dee2
+  full_name: "tty_chars_in_buffer"
+}
+elf_symbol {
+  id: 0xae3ac3f6
+  name: "tty_dev_name_to_number"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb11d9000
+  type_id: 0x92c581e2
+  full_name: "tty_dev_name_to_number"
+}
+elf_symbol {
+  id: 0xa7c71d5a
+  name: "tty_driver_flush_buffer"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfdef445d
+  type_id: 0x1b27f18a
+  full_name: "tty_driver_flush_buffer"
+}
+elf_symbol {
+  id: 0x8ca570bf
+  name: "tty_driver_kref_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x08bed42f
+  type_id: 0x1ce1326b
+  full_name: "tty_driver_kref_put"
+}
+elf_symbol {
+  id: 0x64a32cf8
+  name: "tty_encode_baud_rate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0b36a876
+  type_id: 0x195942ac
+  full_name: "tty_encode_baud_rate"
+}
+elf_symbol {
+  id: 0xebb339ef
+  name: "tty_flip_buffer_push"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xea734050
+  type_id: 0x161c45fb
+  full_name: "tty_flip_buffer_push"
+}
+elf_symbol {
+  id: 0x000b201f
+  name: "tty_get_char_size"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf72a65ea
+  type_id: 0xdcb8e234
+  full_name: "tty_get_char_size"
+}
+elf_symbol {
+  id: 0x0b032f8d
+  name: "tty_get_frame_size"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1687ec20
+  type_id: 0xdcb8e234
+  full_name: "tty_get_frame_size"
+}
+elf_symbol {
+  id: 0xeafeba4a
+  name: "tty_hangup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc0c2117c
+  type_id: 0x1b27f18a
+  full_name: "tty_hangup"
+}
+elf_symbol {
+  id: 0xfdbc073c
+  name: "tty_hung_up_p"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeefa4457
+  type_id: 0x9bba7997
+  full_name: "tty_hung_up_p"
+}
+elf_symbol {
+  id: 0x59f7bc61
+  name: "tty_insert_flip_string_fixed_flag"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x53d475f7
+  type_id: 0x9be80513
+  full_name: "tty_insert_flip_string_fixed_flag"
+}
+elf_symbol {
+  id: 0xdeb902aa
+  name: "tty_kclose"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4a08f1b1
+  type_id: 0x1b27f18a
+  full_name: "tty_kclose"
+}
+elf_symbol {
+  id: 0x43145b7f
+  name: "tty_kopen_exclusive"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x03d712ba
+  type_id: 0xf03fb3d2
+  full_name: "tty_kopen_exclusive"
+}
+elf_symbol {
+  id: 0x30f9f63f
+  name: "tty_kref_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8c44482c
+  type_id: 0x1b27f18a
+  full_name: "tty_kref_put"
+}
+elf_symbol {
+  id: 0xd158764c
+  name: "tty_ldisc_deref"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x17bebe24
+  type_id: 0x16d5560c
+  full_name: "tty_ldisc_deref"
+}
+elf_symbol {
+  id: 0xbf8f4498
+  name: "tty_ldisc_flush"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4196ef00
+  type_id: 0x1b27f18a
+  full_name: "tty_ldisc_flush"
+}
+elf_symbol {
+  id: 0x0b050f75
+  name: "tty_ldisc_ref"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3b4b7aaa
+  type_id: 0x797c68f3
+  full_name: "tty_ldisc_ref"
+}
+elf_symbol {
+  id: 0xf0c9c0bf
+  name: "tty_lock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x425415e4
+  type_id: 0x1b27f18a
+  full_name: "tty_lock"
+}
+elf_symbol {
+  id: 0x8a712bc6
+  name: "tty_mode_ioctl"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1f4a18aa
+  type_id: 0x97258bf7
+  full_name: "tty_mode_ioctl"
+}
+elf_symbol {
+  id: 0xe5875746
+  name: "tty_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x243bde31
+  type_id: 0x9f67ec8c
+  full_name: "tty_name"
+}
+elf_symbol {
+  id: 0x44728108
+  name: "tty_port_block_til_ready"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4fd52fc4
+  type_id: 0x9bb937dc
+  full_name: "tty_port_block_til_ready"
+}
+elf_symbol {
+  id: 0x2a899db0
+  name: "tty_port_close"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xba7460e7
+  type_id: 0x16a18560
+  full_name: "tty_port_close"
+}
+elf_symbol {
+  id: 0x41fc53b5
+  name: "tty_port_close_end"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x07fcb1b2
+  type_id: 0x16a7bffa
+  full_name: "tty_port_close_end"
+}
+elf_symbol {
+  id: 0xb7985539
+  name: "tty_port_close_start"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xee77b72e
+  type_id: 0x9bb937dc
+  full_name: "tty_port_close_start"
+}
+elf_symbol {
+  id: 0x954d57e8
+  name: "tty_port_destroy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6132a5be
+  type_id: 0x161c45fb
+  full_name: "tty_port_destroy"
+}
+elf_symbol {
+  id: 0x604f0f0b
+  name: "tty_port_hangup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x55daf509
+  type_id: 0x161c45fb
+  full_name: "tty_port_hangup"
+}
+elf_symbol {
+  id: 0x5b997ef3
+  name: "tty_port_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6440e9cb
+  type_id: 0x161c45fb
+  full_name: "tty_port_init"
+}
+elf_symbol {
+  id: 0x6a405f9b
+  name: "tty_port_install"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x05b941b3
+  type_id: 0x9bc8ded8
+  full_name: "tty_port_install"
+}
+elf_symbol {
+  id: 0x8c3087ea
+  name: "tty_port_lower_dtr_rts"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8d16eae7
+  type_id: 0x161c45fb
+  full_name: "tty_port_lower_dtr_rts"
+}
+elf_symbol {
+  id: 0x4e9dfcab
+  name: "tty_port_open"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4fca46d4
+  type_id: 0x9bb937dc
+  full_name: "tty_port_open"
+}
+elf_symbol {
+  id: 0x4a92dfd1
+  name: "tty_port_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x533d0e0c
+  type_id: 0x161c45fb
+  full_name: "tty_port_put"
+}
+elf_symbol {
+  id: 0xb958a87a
+  name: "tty_port_register_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa10677fe
+  type_id: 0xab7dda53
+  full_name: "tty_port_register_device"
+}
+elf_symbol {
+  id: 0xdcd44915
+  name: "tty_port_tty_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeb94855c
+  type_id: 0xcc787cc3
+  full_name: "tty_port_tty_get"
+}
+elf_symbol {
+  id: 0xca491b5d
+  name: "tty_port_tty_hangup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1ad11bb0
+  type_id: 0x17a9b884
+  full_name: "tty_port_tty_hangup"
+}
+elf_symbol {
+  id: 0x99f6096a
+  name: "tty_port_tty_set"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1c5d6934
+  type_id: 0x16a7bffa
+  full_name: "tty_port_tty_set"
+}
+elf_symbol {
+  id: 0x1f87b736
+  name: "tty_port_tty_wakeup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5e27ac00
+  type_id: 0x161c45fb
+  full_name: "tty_port_tty_wakeup"
+}
+elf_symbol {
+  id: 0x74487c98
+  name: "tty_register_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa1b48c8f
+  type_id: 0xa040d060
+  full_name: "tty_register_device"
+}
+elf_symbol {
+  id: 0x727ea003
+  name: "tty_register_driver"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0299ecd8
+  type_id: 0x91f980d7
+  full_name: "tty_register_driver"
+}
+elf_symbol {
+  id: 0x2aefba25
+  name: "tty_register_ldisc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbe522d42
+  type_id: 0x91b78ec8
+  full_name: "tty_register_ldisc"
+}
+elf_symbol {
+  id: 0xc2ec2319
+  name: "tty_set_ldisc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0f140c74
+  type_id: 0x97a3c07a
+  full_name: "tty_set_ldisc"
+}
+elf_symbol {
+  id: 0xe9e8ea7d
+  name: "tty_set_termios"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x87c1dc46
+  type_id: 0x96c908d1
+  full_name: "tty_set_termios"
+}
+elf_symbol {
+  id: 0x8728e6bf
+  name: "tty_standard_install"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa9960e4a
+  type_id: 0x91427ad6
+  full_name: "tty_standard_install"
+}
+elf_symbol {
+  id: 0x3e022cbe
+  name: "tty_std_termios"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x67b27ec1
+  type_id: 0xdc0b0182
+  full_name: "tty_std_termios"
+}
+elf_symbol {
+  id: 0x40ef0583
+  name: "tty_termios_baud_rate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0bd394d8
+  type_id: 0x74512079
+  full_name: "tty_termios_baud_rate"
+}
+elf_symbol {
+  id: 0x66974d1b
+  name: "tty_termios_copy_hw"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe816048f
+  type_id: 0x1f3dbc29
+  full_name: "tty_termios_copy_hw"
+}
+elf_symbol {
+  id: 0x4cc18d95
+  name: "tty_termios_encode_baud_rate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5641485b
+  type_id: 0x1d825cc4
+  full_name: "tty_termios_encode_baud_rate"
+}
+elf_symbol {
+  id: 0xfd34f897
+  name: "tty_unlock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4515b135
+  type_id: 0x1b27f18a
+  full_name: "tty_unlock"
+}
+elf_symbol {
+  id: 0x6eee841a
+  name: "tty_unregister_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc1752ef0
+  type_id: 0x1df727f3
+  full_name: "tty_unregister_device"
+}
+elf_symbol {
+  id: 0x0c2de3ab
+  name: "tty_unregister_driver"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9c47392c
+  type_id: 0x1ce1326b
+  full_name: "tty_unregister_driver"
+}
+elf_symbol {
+  id: 0xaf7b86f3
+  name: "tty_unregister_ldisc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x79a3a968
+  type_id: 0x1caf3c74
+  full_name: "tty_unregister_ldisc"
+}
+elf_symbol {
+  id: 0xe0d69cde
+  name: "tty_unthrottle"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8f2b0c63
+  type_id: 0x1b27f18a
+  full_name: "tty_unthrottle"
+}
+elf_symbol {
+  id: 0x6590f3a5
+  name: "tty_vhangup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x31c8c9b8
+  type_id: 0x1b27f18a
+  full_name: "tty_vhangup"
+}
+elf_symbol {
+  id: 0x8e95f895
+  name: "tty_wakeup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x73ae1a0c
+  type_id: 0x1b27f18a
+  full_name: "tty_wakeup"
+}
+elf_symbol {
+  id: 0x30438a62
+  name: "tty_write_room"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbdd509ed
+  type_id: 0xc564dee2
+  full_name: "tty_write_room"
+}
+elf_symbol {
+  id: 0x0d23e13a
+  name: "typec_find_port_data_role"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9049491e
+  type_id: 0x9204ce69
+  full_name: "typec_find_port_data_role"
+}
+elf_symbol {
+  id: 0xd02d0c21
+  name: "typec_find_port_power_role"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeafc1eb8
+  type_id: 0x9204ce69
+  full_name: "typec_find_port_power_role"
+}
+elf_symbol {
+  id: 0x84b20708
+  name: "typec_get_drvdata"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf97fc2d7
+  type_id: 0x5b4eac6a
+  full_name: "typec_get_drvdata"
+}
+elf_symbol {
+  id: 0x8fafe0a6
+  name: "typec_mux_get_drvdata"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x15e08f8a
+  type_id: 0x5aa1d598
+  full_name: "typec_mux_get_drvdata"
+}
+elf_symbol {
+  id: 0x6d4f7368
+  name: "typec_mux_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfc8df340
+  type_id: 0x178d16e8
+  full_name: "typec_mux_put"
+}
+elf_symbol {
+  id: 0x29215b38
+  name: "typec_mux_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb59ec8f6
+  type_id: 0x6caf01af
+  full_name: "typec_mux_register"
+}
+elf_symbol {
+  id: 0x1ee037b1
+  name: "typec_mux_set"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6b3d9465
+  type_id: 0x9a55aa45
+  full_name: "typec_mux_set"
+}
+elf_symbol {
+  id: 0x13f409fa
+  name: "typec_mux_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x56d4f794
+  type_id: 0x1caf35fa
+  full_name: "typec_mux_unregister"
+}
+elf_symbol {
+  id: 0xe9bfa224
+  name: "typec_partner_set_identity"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x273e101f
+  type_id: 0x9997c326
+  full_name: "typec_partner_set_identity"
+}
+elf_symbol {
+  id: 0x0df14bce
+  name: "typec_partner_set_pd_revision"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3d4ba090
+  type_id: 0x16ca4765
+  full_name: "typec_partner_set_pd_revision"
+}
+elf_symbol {
+  id: 0xd6fc8732
+  name: "typec_partner_set_svdm_version"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb9d5c074
+  type_id: 0x163dd09d
+  full_name: "typec_partner_set_svdm_version"
+}
+elf_symbol {
+  id: 0x22d09ebb
+  name: "typec_register_partner"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb6bd1071
+  type_id: 0x2eae2692
+  full_name: "typec_register_partner"
+}
+elf_symbol {
+  id: 0xad69345e
+  name: "typec_register_port"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc278a2d2
+  type_id: 0xc993ac0a
+  full_name: "typec_register_port"
+}
+elf_symbol {
+  id: 0x381c401c
+  name: "typec_set_data_role"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9c7b0769
+  type_id: 0x1e585388
+  full_name: "typec_set_data_role"
+}
+elf_symbol {
+  id: 0xfb60a10e
+  name: "typec_set_orientation"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7d728b62
+  type_id: 0x9365db7d
+  full_name: "typec_set_orientation"
+}
+elf_symbol {
+  id: 0xc632b16e
+  name: "typec_set_pwr_opmode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xff8dc427
+  type_id: 0x1c861e9d
+  full_name: "typec_set_pwr_opmode"
+}
+elf_symbol {
+  id: 0xe95b649e
+  name: "typec_set_pwr_role"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2ceb5865
+  type_id: 0x1f45d394
+  full_name: "typec_set_pwr_role"
+}
+elf_symbol {
+  id: 0xc0a0fb3a
+  name: "typec_set_vconn_role"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6d0ae7ae
+  type_id: 0x1f45d394
+  full_name: "typec_set_vconn_role"
+}
+elf_symbol {
+  id: 0xaab0b041
+  name: "typec_switch_get_drvdata"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x34867dd9
+  type_id: 0x57990287
+  full_name: "typec_switch_get_drvdata"
+}
+elf_symbol {
+  id: 0x5800606d
+  name: "typec_switch_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9929df97
+  type_id: 0x2d04a70f
+  full_name: "typec_switch_register"
+}
+elf_symbol {
+  id: 0xae69b1ad
+  name: "typec_switch_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3c4b6a63
+  type_id: 0x1197e2e5
+  full_name: "typec_switch_unregister"
+}
+elf_symbol {
+  id: 0x098b2c4d
+  name: "typec_unregister_partner"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xed5bd3c5
+  type_id: 0x148f719a
+  full_name: "typec_unregister_partner"
+}
+elf_symbol {
+  id: 0x008276ec
+  name: "typec_unregister_port"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2be254c6
+  type_id: 0x1d404c08
+  full_name: "typec_unregister_port"
+}
+elf_symbol {
+  id: 0xe9c62c61
+  name: "uart_add_one_port"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x48137537
+  type_id: 0x9e5980cd
+  full_name: "uart_add_one_port"
+}
+elf_symbol {
+  id: 0xad19779c
+  name: "uart_console_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc442555b
+  type_id: 0xaf7fbf57
+  full_name: "uart_console_device"
+}
+elf_symbol {
+  id: 0x9987f06c
+  name: "uart_console_write"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x84c383bc
+  type_id: 0x105cac82
+  full_name: "uart_console_write"
+}
+elf_symbol {
+  id: 0xb1a4c511
+  name: "uart_get_baud_rate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x82472299
+  type_id: 0xce0dc24b
+  full_name: "uart_get_baud_rate"
+}
+elf_symbol {
+  id: 0xa245ca71
+  name: "uart_get_divisor"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa9d1a146
+  type_id: 0xcfe08e7c
+  full_name: "uart_get_divisor"
+}
+elf_symbol {
+  id: 0x3f1f93d5
+  name: "uart_get_rs485_mode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9d8fa175
+  type_id: 0x9dad0630
+  full_name: "uart_get_rs485_mode"
+}
+elf_symbol {
+  id: 0x42e824ab
+  name: "uart_handle_cts_change"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7e4da05e
+  type_id: 0x11a3a114
+  full_name: "uart_handle_cts_change"
+}
+elf_symbol {
+  id: 0x6a1d1a11
+  name: "uart_handle_dcd_change"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x70812d52
+  type_id: 0x11a3a114
+  full_name: "uart_handle_dcd_change"
+}
+elf_symbol {
+  id: 0xd3ec6f8d
+  name: "uart_insert_char"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x933e5a5b
+  type_id: 0x11b3c739
+  full_name: "uart_insert_char"
+}
+elf_symbol {
+  id: 0xffeb078f
+  name: "uart_parse_options"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4f72a987
+  type_id: 0x1f558355
+  full_name: "uart_parse_options"
+}
+elf_symbol {
+  id: 0x321abf21
+  name: "uart_register_driver"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2c3e5884
+  type_id: 0x9e5b5e9c
+  full_name: "uart_register_driver"
+}
+elf_symbol {
+  id: 0x92b41cef
+  name: "uart_remove_one_port"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x587349fb
+  type_id: 0x9e5980cd
+  full_name: "uart_remove_one_port"
+}
+elf_symbol {
+  id: 0x7d9e83f8
+  name: "uart_resume_port"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe9bd1c87
+  type_id: 0x9e5980cd
+  full_name: "uart_resume_port"
+}
+elf_symbol {
+  id: 0xb9ea5b5a
+  name: "uart_set_options"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xea85a5f4
+  type_id: 0x9db0376d
+  full_name: "uart_set_options"
+}
+elf_symbol {
+  id: 0x6489aa2a
+  name: "uart_suspend_port"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x541f990f
+  type_id: 0x9e5980cd
+  full_name: "uart_suspend_port"
+}
+elf_symbol {
+  id: 0xb55e05eb
+  name: "uart_try_toggle_sysrq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2a6b2623
+  type_id: 0xff9fab83
+  full_name: "uart_try_toggle_sysrq"
+}
+elf_symbol {
+  id: 0xa60def42
+  name: "uart_unregister_driver"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xabe8e925
+  type_id: 0x1343ec20
+  full_name: "uart_unregister_driver"
+}
+elf_symbol {
+  id: 0x695ad58f
+  name: "uart_update_timeout"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcea67f4d
+  type_id: 0x11b2c04d
+  full_name: "uart_update_timeout"
+}
+elf_symbol {
+  id: 0x35ae0706
+  name: "uart_write_wakeup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb162bf6b
+  type_id: 0x10b5b48c
+  full_name: "uart_write_wakeup"
+}
+elf_symbol {
+  id: 0x169dc8fd
+  name: "uclamp_eff_value"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb35eaea1
+  type_id: 0x37f8837e
+  full_name: "uclamp_eff_value"
+}
+elf_symbol {
+  id: 0xa590d80f
+  name: "ucsi_connector_change"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x312ecfdd
+  type_id: 0x1bd0b1ab
+  full_name: "ucsi_connector_change"
+}
+elf_symbol {
+  id: 0x61e25d6a
+  name: "ucsi_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7f6129e4
+  type_id: 0x3dc04d04
+  full_name: "ucsi_create"
+}
+elf_symbol {
+  id: 0xf545666a
+  name: "ucsi_destroy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb5b6feb5
+  type_id: 0x1b75c063
+  full_name: "ucsi_destroy"
+}
+elf_symbol {
+  id: 0xfd503704
+  name: "ucsi_get_drvdata"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8806c94d
+  type_id: 0x5d7b2001
+  full_name: "ucsi_get_drvdata"
+}
+elf_symbol {
+  id: 0x74041438
+  name: "ucsi_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf4e644b7
+  type_id: 0x966d72df
+  full_name: "ucsi_register"
+}
+elf_symbol {
+  id: 0x720b6de3
+  name: "ucsi_send_command"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x23e584cc
+  type_id: 0x9420019d
+  full_name: "ucsi_send_command"
+}
+elf_symbol {
+  id: 0xe750d0b7
+  name: "ucsi_set_drvdata"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe8cac204
+  type_id: 0x1b1735f7
+  full_name: "ucsi_set_drvdata"
+}
+elf_symbol {
+  id: 0x9cefccb0
+  name: "ucsi_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9ffef383
+  type_id: 0x1b75c063
+  full_name: "ucsi_unregister"
+}
+elf_symbol {
+  id: 0xef1a96f5
+  name: "udp4_hwcsum"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa1b5298e
+  type_id: 0x127accc9
+  full_name: "udp4_hwcsum"
+}
+elf_symbol {
+  id: 0x93e3a105
+  name: "udp6_set_csum"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2b6945b5
+  type_id: 0x0bdc9e9d
+  full_name: "udp6_set_csum"
+}
+elf_symbol {
+  id: 0xf946dfdd
+  name: "udp_set_csum"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa61148a7
+  type_id: 0x0be9b673
+  full_name: "udp_set_csum"
+}
+elf_symbol {
+  id: 0xa7d65bf5
+  name: "udp_sock_create4"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x37d2c34f
+  type_id: 0x9ea1fe03
+  full_name: "udp_sock_create4"
+}
+elf_symbol {
+  id: 0x2259ac6a
+  name: "udp_sock_create6"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xec652a9e
+  type_id: 0x9ea1fe03
+  full_name: "udp_sock_create6"
+}
+elf_symbol {
+  id: 0x3bea1d77
+  name: "udp_table"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x95a67b07
+  type_id: 0x0148098b
+  full_name: "udp_table"
+}
+elf_symbol {
+  id: 0x83627eaa
+  name: "udp_tunnel6_xmit_skb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5106a9d0
+  type_id: 0x99621666
+  full_name: "udp_tunnel6_xmit_skb"
+}
+elf_symbol {
+  id: 0x7f7d27b4
+  name: "udp_tunnel_sock_release"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8d386e7d
+  type_id: 0x14805be2
+  full_name: "udp_tunnel_sock_release"
+}
+elf_symbol {
+  id: 0x674efb6f
+  name: "udp_tunnel_xmit_skb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb583abe2
+  type_id: 0x14a305ea
+  full_name: "udp_tunnel_xmit_skb"
+}
+elf_symbol {
+  id: 0x3fa12248
+  name: "ufshcd_alloc_host"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x073a53dd
+  type_id: 0x9d3b1e84
+  full_name: "ufshcd_alloc_host"
+}
+elf_symbol {
+  id: 0x5ba31e17
+  name: "ufshcd_auto_hibern8_update"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9acf22d9
+  type_id: 0x125cb480
+  full_name: "ufshcd_auto_hibern8_update"
+}
+elf_symbol {
+  id: 0x3b41d1e4
+  name: "ufshcd_bkops_ctrl"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1bfeb6eb
+  type_id: 0x9fcafcaa
+  full_name: "ufshcd_bkops_ctrl"
+}
+elf_symbol {
+  id: 0xa45d6674
+  name: "ufshcd_config_pwr_mode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7fea5f06
+  type_id: 0x9c1de0b0
+  full_name: "ufshcd_config_pwr_mode"
+}
+elf_symbol {
+  id: 0xca76e0b2
+  name: "ufshcd_dealloc_host"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf2ef8538
+  type_id: 0x1178942c
+  full_name: "ufshcd_dealloc_host"
+}
+elf_symbol {
+  id: 0x536defb8
+  name: "ufshcd_delay_us"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x723b1abf
+  type_id: 0x1c88dd20
+  full_name: "ufshcd_delay_us"
+}
+elf_symbol {
+  id: 0x60b0cfc9
+  name: "ufshcd_dme_configure_adapt"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4770f9b9
+  type_id: 0x9de56de8
+  full_name: "ufshcd_dme_configure_adapt"
+}
+elf_symbol {
+  id: 0x583a63e9
+  name: "ufshcd_dme_get_attr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8928b337
+  type_id: 0x9f4a97c1
+  full_name: "ufshcd_dme_get_attr"
+}
+elf_symbol {
+  id: 0x9d64a1ae
+  name: "ufshcd_dme_set_attr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x708a8a04
+  type_id: 0x9f4d7f57
+  full_name: "ufshcd_dme_set_attr"
+}
+elf_symbol {
+  id: 0x31203d5e
+  name: "ufshcd_dump_regs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb77e84b1
+  type_id: 0x9f8d0629
+  full_name: "ufshcd_dump_regs"
+}
+elf_symbol {
+  id: 0xd7166db7
+  name: "ufshcd_fixup_dev_quirks"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd8bf8388
+  type_id: 0x1183ff2d
+  full_name: "ufshcd_fixup_dev_quirks"
+}
+elf_symbol {
+  id: 0xaf574bfc
+  name: "ufshcd_get_local_unipro_ver"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x25fae84e
+  type_id: 0x4418eedd
+  full_name: "ufshcd_get_local_unipro_ver"
+}
+elf_symbol {
+  id: 0x7f35e3d5
+  name: "ufshcd_get_pwr_dev_param"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7a0460ff
+  type_id: 0x93203902
+  full_name: "ufshcd_get_pwr_dev_param"
+}
+elf_symbol {
+  id: 0x493c067d
+  name: "ufshcd_hba_enable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8ee7b6fa
+  type_id: 0x9c602690
+  full_name: "ufshcd_hba_enable"
+}
+elf_symbol {
+  id: 0xc3b81360
+  name: "ufshcd_hba_stop"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcc8acc00
+  type_id: 0x1178942c
+  full_name: "ufshcd_hba_stop"
+}
+elf_symbol {
+  id: 0x02278a0a
+  name: "ufshcd_hold"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbde7219d
+  type_id: 0x9dd5dbef
+  full_name: "ufshcd_hold"
+}
+elf_symbol {
+  id: 0x1c4ece11
+  name: "ufshcd_init_pwr_dev_param"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x54c946de
+  type_id: 0x16bac6e1
+  full_name: "ufshcd_init_pwr_dev_param"
+}
+elf_symbol {
+  id: 0xcd6f9634
+  name: "ufshcd_link_recovery"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x89f8ef66
+  type_id: 0x9c602690
+  full_name: "ufshcd_link_recovery"
+}
+elf_symbol {
+  id: 0xba7435fd
+  name: "ufshcd_make_hba_operational"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1168ff72
+  type_id: 0x9c602690
+  full_name: "ufshcd_make_hba_operational"
+}
+elf_symbol {
+  id: 0xb59c5eaf
+  name: "ufshcd_mcq_config_esi"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6cdf98ba
+  type_id: 0x11ebebf2
+  full_name: "ufshcd_mcq_config_esi"
+}
+elf_symbol {
+  id: 0x051c0489
+  name: "ufshcd_mcq_enable_esi"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7bb8ccaa
+  type_id: 0x1178942c
+  full_name: "ufshcd_mcq_enable_esi"
+}
+elf_symbol {
+  id: 0x56d1da85
+  name: "ufshcd_mcq_poll_cqe_lock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x373bfb09
+  type_id: 0x30f8e5d3
+  full_name: "ufshcd_mcq_poll_cqe_lock"
+}
+elf_symbol {
+  id: 0xe74af45a
+  name: "ufshcd_mcq_poll_cqe_nolock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa7db621e
+  type_id: 0x30f8e5d3
+  full_name: "ufshcd_mcq_poll_cqe_nolock"
+}
+elf_symbol {
+  id: 0x3ecd46f0
+  name: "ufshcd_mcq_write_cqis"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x35c6b5e8
+  type_id: 0x12457cb4
+  full_name: "ufshcd_mcq_write_cqis"
+}
+elf_symbol {
+  id: 0xde541a7b
+  name: "ufshcd_pltfrm_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa4f65af3
+  type_id: 0x928794d5
+  full_name: "ufshcd_pltfrm_init"
+}
+elf_symbol {
+  id: 0xe6e08555
+  name: "ufshcd_pltfrm_shutdown"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb96deb17
+  type_id: 0x1f55a7e6
+  full_name: "ufshcd_pltfrm_shutdown"
+}
+elf_symbol {
+  id: 0xf49dae9f
+  name: "ufshcd_query_attr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9165ddde
+  type_id: 0x9ca39dee
+  full_name: "ufshcd_query_attr"
+}
+elf_symbol {
+  id: 0xf6ca1448
+  name: "ufshcd_query_attr_retry"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdd7ff4c9
+  type_id: 0x9ca39dee
+  full_name: "ufshcd_query_attr_retry"
+}
+elf_symbol {
+  id: 0xaa5366ae
+  name: "ufshcd_query_descriptor_retry"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4483b314
+  type_id: 0x9cb87b44
+  full_name: "ufshcd_query_descriptor_retry"
+}
+elf_symbol {
+  id: 0x82188885
+  name: "ufshcd_query_flag"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5d5b119c
+  type_id: 0x9c8699ca
+  full_name: "ufshcd_query_flag"
+}
+elf_symbol {
+  id: 0xf8fc1aee
+  name: "ufshcd_query_flag_retry"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4e8ab5bf
+  type_id: 0x9c8699ca
+  full_name: "ufshcd_query_flag_retry"
+}
+elf_symbol {
+  id: 0x5ef2af2f
+  name: "ufshcd_read_desc_param"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x99742b4a
+  type_id: 0x9fb1e92c
+  full_name: "ufshcd_read_desc_param"
+}
+elf_symbol {
+  id: 0xb6a9e694
+  name: "ufshcd_release"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc4600916
+  type_id: 0x1178942c
+  full_name: "ufshcd_release"
+}
+elf_symbol {
+  id: 0xba786154
+  name: "ufshcd_remove"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x653ec2e0
+  type_id: 0x1178942c
+  full_name: "ufshcd_remove"
+}
+elf_symbol {
+  id: 0xeb091e22
+  name: "ufshcd_resume_complete"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x015f1ff6
+  type_id: 0x100e6fc8
+  full_name: "ufshcd_resume_complete"
+}
+elf_symbol {
+  id: 0x17299607
+  name: "ufshcd_runtime_resume"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0cc8115a
+  type_id: 0x9d16dd74
+  full_name: "ufshcd_runtime_resume"
+}
+elf_symbol {
+  id: 0xd4da9de2
+  name: "ufshcd_runtime_suspend"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x32f7c29d
+  type_id: 0x9d16dd74
+  full_name: "ufshcd_runtime_suspend"
+}
+elf_symbol {
+  id: 0x9e4a58bb
+  name: "ufshcd_shutdown"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9038cbe3
+  type_id: 0x9c602690
+  full_name: "ufshcd_shutdown"
+}
+elf_symbol {
+  id: 0x29719a35
+  name: "ufshcd_suspend_prepare"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf6bd39a3
+  type_id: 0x9d16dd74
+  full_name: "ufshcd_suspend_prepare"
+}
+elf_symbol {
+  id: 0x25606668
+  name: "ufshcd_system_freeze"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x44959949
+  type_id: 0x9d16dd74
+  full_name: "ufshcd_system_freeze"
+}
+elf_symbol {
+  id: 0x0a316c12
+  name: "ufshcd_system_restore"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf304f12b
+  type_id: 0x9d16dd74
+  full_name: "ufshcd_system_restore"
+}
+elf_symbol {
+  id: 0x349438ad
+  name: "ufshcd_system_resume"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7dd8e502
+  type_id: 0x9d16dd74
+  full_name: "ufshcd_system_resume"
+}
+elf_symbol {
+  id: 0xf8f1d010
+  name: "ufshcd_system_suspend"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x57360baf
+  type_id: 0x9d16dd74
+  full_name: "ufshcd_system_suspend"
+}
+elf_symbol {
+  id: 0xad906d0d
+  name: "ufshcd_system_thaw"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9ad3c7d1
+  type_id: 0x9d16dd74
+  full_name: "ufshcd_system_thaw"
+}
+elf_symbol {
+  id: 0x9c569794
+  name: "ufshcd_uic_change_pwr_mode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x40283b29
+  type_id: 0x9cc55758
+  full_name: "ufshcd_uic_change_pwr_mode"
+}
+elf_symbol {
+  id: 0x122d3ff3
+  name: "ufshcd_uic_hibern8_enter"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb61da8cb
+  type_id: 0x9c602690
+  full_name: "ufshcd_uic_hibern8_enter"
+}
+elf_symbol {
+  id: 0xc9fa7338
+  name: "ufshcd_uic_hibern8_exit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe7db6d8d
+  type_id: 0x9c602690
+  full_name: "ufshcd_uic_hibern8_exit"
+}
+elf_symbol {
+  id: 0xb163f167
+  name: "ufshcd_update_evt_hist"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2d615762
+  type_id: 0x126ef68a
+  full_name: "ufshcd_update_evt_hist"
+}
+elf_symbol {
+  id: 0x439eff60
+  name: "uio_unregister_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3d1fbc25
+  type_id: 0x13f52df1
+  full_name: "uio_unregister_device"
+}
+elf_symbol {
+  id: 0x9f5197f0
+  name: "unlock_buffer"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6208bf1d
+  type_id: 0x16c5a8cd
+  full_name: "unlock_buffer"
+}
+elf_symbol {
+  id: 0x11fd8c82
+  name: "unlock_page"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x196234a5
+  type_id: 0x11388634
+  full_name: "unlock_page"
+}
+elf_symbol {
+  id: 0xe41b8f90
+  name: "unmap_mapping_range"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc97d8bcd
+  type_id: 0x156e1138
+  full_name: "unmap_mapping_range"
+}
+elf_symbol {
+  id: 0x60ffe144
+  name: "unpin_user_page"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2230a631
+  type_id: 0x11388634
+  full_name: "unpin_user_page"
+}
+elf_symbol {
+  id: 0xffd70606
+  name: "unpin_user_pages"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xab048e13
+  type_id: 0x1299bf81
+  full_name: "unpin_user_pages"
+}
+elf_symbol {
+  id: 0xe19f4159
+  name: "unpin_user_pages_dirty_lock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd1f9799d
+  type_id: 0x1282e056
+  full_name: "unpin_user_pages_dirty_lock"
+}
+elf_symbol {
+  id: 0xa4688ed8
+  name: "unregister_blkdev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb5a459dc
+  type_id: 0x01014ac8
+  full_name: "unregister_blkdev"
+}
+elf_symbol {
+  id: 0x0f7f3fac
+  name: "unregister_candev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9ae27a5a
+  type_id: 0x1c31d966
+  full_name: "unregister_candev"
+}
+elf_symbol {
+  id: 0xefa2529f
+  name: "unregister_chrdev_region"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6091b333
+  type_id: 0x2b4d9f72
+  full_name: "unregister_chrdev_region"
+}
+elf_symbol {
+  id: 0x4d5eb284
+  name: "unregister_console"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe8d04d30
+  type_id: 0x9dd738c0
+  full_name: "unregister_console"
+}
+elf_symbol {
+  id: 0x3c5dbd60
+  name: "unregister_die_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x121d958a
+  type_id: 0x9b6d4a33
+  full_name: "unregister_die_notifier"
+}
+elf_symbol {
+  id: 0xe1be38c3
+  name: "unregister_filesystem"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf01d2c4c
+  type_id: 0x913be113
+  full_name: "unregister_filesystem"
+}
+elf_symbol {
+  id: 0x6e1b5152
+  name: "unregister_ftrace_export"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x81f372a2
+  type_id: 0x9355441f
+  full_name: "unregister_ftrace_export"
+}
+elf_symbol {
+  id: 0x4144b792
+  name: "unregister_inet6addr_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2fe252cc
+  type_id: 0x9b6d4a33
+  full_name: "unregister_inet6addr_notifier"
+}
+elf_symbol {
+  id: 0x4615e3af
+  name: "unregister_inetaddr_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfe029963
+  type_id: 0x9b6d4a33
+  full_name: "unregister_inetaddr_notifier"
+}
+elf_symbol {
+  id: 0x4bd3e4fd
+  name: "unregister_kprobe"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeb78b1ed
+  type_id: 0x1d1662fd
+  full_name: "unregister_kprobe"
+}
+elf_symbol {
+  id: 0x67d5fb19
+  name: "unregister_kretprobe"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xce598ef2
+  type_id: 0x1a011f3a
+  full_name: "unregister_kretprobe"
+}
+elf_symbol {
+  id: 0xd3f1f6f2
+  name: "unregister_memory_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x26e298e0
+  type_id: 0x1675f88f
+  full_name: "unregister_memory_notifier"
+}
+elf_symbol {
+  id: 0x2b66ae90
+  name: "unregister_module_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6a5ecb18
+  type_id: 0x9b6d4a33
+  full_name: "unregister_module_notifier"
+}
+elf_symbol {
+  id: 0x66161dd0
+  name: "unregister_net_sysctl_table"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd53c67b3
+  type_id: 0x1d8d431c
+  full_name: "unregister_net_sysctl_table"
+}
+elf_symbol {
+  id: 0x06168d57
+  name: "unregister_netdev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4ab68b33
+  type_id: 0x1c31d966
+  full_name: "unregister_netdev"
+}
+elf_symbol {
+  id: 0xf8e07177
+  name: "unregister_netdevice_many"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9fdecc31
+  type_id: 0x1f00dfeb
+  full_name: "unregister_netdevice_many"
+}
+elf_symbol {
+  id: 0x601a7ecc
+  name: "unregister_netdevice_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9d0d6206
+  type_id: 0x9b6d4a33
+  full_name: "unregister_netdevice_notifier"
+}
+elf_symbol {
+  id: 0xc9db6c79
+  name: "unregister_netdevice_queue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc7086c08
+  type_id: 0x1cc85181
+  full_name: "unregister_netdevice_queue"
+}
+elf_symbol {
+  id: 0x3681f5be
+  name: "unregister_netevent_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4fe1eddf
+  type_id: 0x9b6d4a33
+  full_name: "unregister_netevent_notifier"
+}
+elf_symbol {
+  id: 0xcaff1088
+  name: "unregister_oom_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc617f82c
+  type_id: 0x9b6d4a33
+  full_name: "unregister_oom_notifier"
+}
+elf_symbol {
+  id: 0xc391f7a5
+  name: "unregister_pernet_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x35887880
+  type_id: 0x1a8e27b5
+  full_name: "unregister_pernet_device"
+}
+elf_symbol {
+  id: 0x3c5aa8bf
+  name: "unregister_pernet_subsys"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa19edd2d
+  type_id: 0x1a8e27b5
+  full_name: "unregister_pernet_subsys"
+}
+elf_symbol {
+  id: 0x5386caa3
+  name: "unregister_pm_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7681946c
+  type_id: 0x9b6d4a33
+  full_name: "unregister_pm_notifier"
+}
+elf_symbol {
+  id: 0xfec1aa96
+  name: "unregister_pppox_proto"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe0ff7a18
+  type_id: 0x09506558
+  full_name: "unregister_pppox_proto"
+}
+elf_symbol {
+  id: 0x0c7148f5
+  name: "unregister_qdisc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2fc8474d
+  type_id: 0x1f62fcf3
+  full_name: "unregister_qdisc"
+}
+elf_symbol {
+  id: 0x115960c0
+  name: "unregister_reboot_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xac1a55be
+  type_id: 0x9b6d4a33
+  full_name: "unregister_reboot_notifier"
+}
+elf_symbol {
+  id: 0xb70e9915
+  name: "unregister_restart_handler"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x40d59096
+  type_id: 0x9b6d4a33
+  full_name: "unregister_restart_handler"
+}
+elf_symbol {
+  id: 0x2da08566
+  name: "unregister_rpmsg_driver"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeab85c26
+  type_id: 0x18db21cb
+  full_name: "unregister_rpmsg_driver"
+}
+elf_symbol {
+  id: 0x882a2ed7
+  name: "unregister_shrinker"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7f691249
+  type_id: 0x19752ade
+  full_name: "unregister_shrinker"
+}
+elf_symbol {
+  id: 0xe437e69c
+  name: "unregister_syscore_ops"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfa1eb910
+  type_id: 0x1c76742e
+  full_name: "unregister_syscore_ops"
+}
+elf_symbol {
+  id: 0x2e6d8f4b
+  name: "unregister_sysctl_table"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd691c6a9
+  type_id: 0x1d8d431c
+  full_name: "unregister_sysctl_table"
+}
+elf_symbol {
+  id: 0x5754936e
+  name: "unregister_tcf_proto_ops"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2c8730c5
+  type_id: 0x17e4a48e
+  full_name: "unregister_tcf_proto_ops"
+}
+elf_symbol {
+  id: 0xba28112d
+  name: "unregister_virtio_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb9c34a5e
+  type_id: 0x1ad5d81c
+  full_name: "unregister_virtio_device"
+}
+elf_symbol {
+  id: 0x75699b4c
+  name: "unregister_virtio_driver"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0b251408
+  type_id: 0x14a4a6f4
+  full_name: "unregister_virtio_driver"
+}
+elf_symbol {
+  id: 0xc9d63690
+  name: "unregister_vmap_purge_notifier"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb7c69a63
+  type_id: 0x9b6d4a33
+  full_name: "unregister_vmap_purge_notifier"
+}
+elf_symbol {
+  id: 0xaa01498e
+  name: "up"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcf2a6966
+  type_id: 0x14dfe82d
+  full_name: "up"
+}
+elf_symbol {
+  id: 0xe109b3fc
+  name: "up_read"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6b50e951
+  type_id: 0x10b7c133
+  full_name: "up_read"
+}
+elf_symbol {
+  id: 0xb9af2013
+  name: "up_write"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x20d81059
+  type_id: 0x10b7c133
+  full_name: "up_write"
+}
+elf_symbol {
+  id: 0x2867d724
+  name: "update_devfreq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x04e5f3e0
+  type_id: 0x945a66f1
+  full_name: "update_devfreq"
+}
+elf_symbol {
+  id: 0xa32cb360
+  name: "update_rq_clock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7ff431ed
+  type_id: 0x1b18f64e
+  full_name: "update_rq_clock"
+}
+elf_symbol {
+  id: 0x45dcd84f
+  name: "usb_add_config"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x26f6d399
+  type_id: 0x95f84786
+  full_name: "usb_add_config"
+}
+elf_symbol {
+  id: 0x54ba3937
+  name: "usb_add_function"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb4f1d050
+  type_id: 0x9ebe912b
+  full_name: "usb_add_function"
+}
+elf_symbol {
+  id: 0x8f72141f
+  name: "usb_add_gadget"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe2b215b9
+  type_id: 0x94d9adef
+  full_name: "usb_add_gadget"
+}
+elf_symbol {
+  id: 0x8dc26f05
+  name: "usb_add_gadget_udc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x18c96487
+  type_id: 0x9d834998
+  full_name: "usb_add_gadget_udc"
+}
+elf_symbol {
+  id: 0xcb2698e3
+  name: "usb_add_hcd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa85ddb88
+  type_id: 0x95c42336
+  full_name: "usb_add_hcd"
+}
+elf_symbol {
+  id: 0xdc59a2d7
+  name: "usb_add_phy_dev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xce9b68c4
+  type_id: 0x9cf04bdd
+  full_name: "usb_add_phy_dev"
+}
+elf_symbol {
+  id: 0xc8d57f30
+  name: "usb_alloc_coherent"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbb455825
+  type_id: 0x5625fe7a
+  full_name: "usb_alloc_coherent"
+}
+elf_symbol {
+  id: 0xa1439ad9
+  name: "usb_alloc_dev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6d116c70
+  type_id: 0x75f8c649
+  full_name: "usb_alloc_dev"
+}
+elf_symbol {
+  id: 0xaf52d437
+  name: "usb_alloc_urb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe5714f41
+  type_id: 0x7fc911b7
+  full_name: "usb_alloc_urb"
+}
+elf_symbol {
+  id: 0xd95773fe
+  name: "usb_altnum_to_altsetting"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xffcd2f4e
+  type_id: 0x89207050
+  full_name: "usb_altnum_to_altsetting"
+}
+elf_symbol {
+  id: 0x805677f0
+  name: "usb_amd_dev_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb9b9df41
+  type_id: 0x10985193
+  full_name: "usb_amd_dev_put"
+}
+elf_symbol {
+  id: 0xed4e96d3
+  name: "usb_amd_prefetch_quirk"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd87fc0a0
+  type_id: 0xfea45b04
+  full_name: "usb_amd_prefetch_quirk"
+}
+elf_symbol {
+  id: 0x7da4e281
+  name: "usb_amd_quirk_pll_check"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaf4014ff
+  type_id: 0xfea45b04
+  full_name: "usb_amd_quirk_pll_check"
+}
+elf_symbol {
+  id: 0x811fc2f9
+  name: "usb_amd_quirk_pll_disable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdc825d6c
+  type_id: 0x10985193
+  full_name: "usb_amd_quirk_pll_disable"
+}
+elf_symbol {
+  id: 0xaff7b9fa
+  name: "usb_amd_quirk_pll_enable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x10ecc52c
+  type_id: 0x10985193
+  full_name: "usb_amd_quirk_pll_enable"
+}
+elf_symbol {
+  id: 0x73c499cf
+  name: "usb_anchor_urb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x50a30a2a
+  type_id: 0x100504e2
+  full_name: "usb_anchor_urb"
+}
+elf_symbol {
+  id: 0x1e897b44
+  name: "usb_assign_descriptors"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x79921d0b
+  type_id: 0x95b74be6
+  full_name: "usb_assign_descriptors"
+}
+elf_symbol {
+  id: 0xdc4939d2
+  name: "usb_autopm_get_interface"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x46d9f3e3
+  type_id: 0x95c144d5
+  full_name: "usb_autopm_get_interface"
+}
+elf_symbol {
+  id: 0x9956a628
+  name: "usb_autopm_get_interface_async"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd0f2ee17
+  type_id: 0x95c144d5
+  full_name: "usb_autopm_get_interface_async"
+}
+elf_symbol {
+  id: 0xe66de663
+  name: "usb_autopm_get_interface_no_resume"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1f929ea3
+  type_id: 0x18d9f669
+  full_name: "usb_autopm_get_interface_no_resume"
+}
+elf_symbol {
+  id: 0xc270a0aa
+  name: "usb_autopm_put_interface"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x073f3d9b
+  type_id: 0x18d9f669
+  full_name: "usb_autopm_put_interface"
+}
+elf_symbol {
+  id: 0xb20d4b54
+  name: "usb_autopm_put_interface_async"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe3eace12
+  type_id: 0x18d9f669
+  full_name: "usb_autopm_put_interface_async"
+}
+elf_symbol {
+  id: 0x9e6e4c47
+  name: "usb_bulk_msg"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x34d55150
+  type_id: 0x9fce79d4
+  full_name: "usb_bulk_msg"
+}
+elf_symbol {
+  id: 0xb9dd1d1a
+  name: "usb_bus_idr"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x790be0b9
+  type_id: 0x04b89667
+  full_name: "usb_bus_idr"
+}
+elf_symbol {
+  id: 0x3d66dcb8
+  name: "usb_bus_idr_lock"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x255161f6
+  type_id: 0xa7c362b0
+  full_name: "usb_bus_idr_lock"
+}
+elf_symbol {
+  id: 0x1f68a496
+  name: "usb_calc_bus_time"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7e64181d
+  type_id: 0xbf6cd8a9
+  full_name: "usb_calc_bus_time"
+}
+elf_symbol {
+  id: 0x2a589f64
+  name: "usb_clear_halt"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x41337a4e
+  type_id: 0x9f435990
+  full_name: "usb_clear_halt"
+}
+elf_symbol {
+  id: 0x7da41bc7
+  name: "usb_composite_probe"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb3b3201b
+  type_id: 0x9a94d204
+  full_name: "usb_composite_probe"
+}
+elf_symbol {
+  id: 0x795a4305
+  name: "usb_composite_setup_continue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa1207983
+  type_id: 0x18d04dd3
+  full_name: "usb_composite_setup_continue"
+}
+elf_symbol {
+  id: 0xfb07b087
+  name: "usb_composite_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8fbf7e81
+  type_id: 0x178c60b8
+  full_name: "usb_composite_unregister"
+}
+elf_symbol {
+  id: 0xc71b1f63
+  name: "usb_control_msg"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd11cfb2a
+  type_id: 0x9fe7c091
+  full_name: "usb_control_msg"
+}
+elf_symbol {
+  id: 0xd980d303
+  name: "usb_control_msg_recv"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa3dfc77c
+  type_id: 0x9c3e4be2
+  full_name: "usb_control_msg_recv"
+}
+elf_symbol {
+  id: 0x8f149e98
+  name: "usb_control_msg_send"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xadf959d4
+  type_id: 0x9c3e4bea
+  full_name: "usb_control_msg_send"
+}
+elf_symbol {
+  id: 0x16511917
+  name: "usb_copy_descriptors"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2e09263f
+  type_id: 0xf879ffed
+  full_name: "usb_copy_descriptors"
+}
+elf_symbol {
+  id: 0x71b6da45
+  name: "usb_create_hcd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb28c2fa9
+  type_id: 0xab95c382
+  full_name: "usb_create_hcd"
+}
+elf_symbol {
+  id: 0xad18bbc8
+  name: "usb_create_shared_hcd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdd54bd2d
+  type_id: 0xab955662
+  full_name: "usb_create_shared_hcd"
+}
+elf_symbol {
+  id: 0xcf52857c
+  name: "usb_debug_root"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xfad7aa72
+  type_id: 0x120540d1
+  full_name: "usb_debug_root"
+}
+elf_symbol {
+  id: 0x1b3cf36c
+  name: "usb_decode_ctrl"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4531624f
+  type_id: 0x909a3456
+  full_name: "usb_decode_ctrl"
+}
+elf_symbol {
+  id: 0x27e59f46
+  name: "usb_del_gadget"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe86f0eaf
+  type_id: 0x19c11f53
+  full_name: "usb_del_gadget"
+}
+elf_symbol {
+  id: 0x109adee2
+  name: "usb_del_gadget_udc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf46f2300
+  type_id: 0x19c11f53
+  full_name: "usb_del_gadget_udc"
+}
+elf_symbol {
+  id: 0x784d1cb4
+  name: "usb_deregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1c3c3cf8
+  type_id: 0x1fbef67f
+  full_name: "usb_deregister"
+}
+elf_symbol {
+  id: 0xd75ad246
+  name: "usb_device_match_id"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb0a10f4a
+  type_id: 0x1c1deea6
+  full_name: "usb_device_match_id"
+}
+elf_symbol {
+  id: 0xdefa9d60
+  name: "usb_disabled"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x19a304ba
+  type_id: 0x9d80e32f
+  full_name: "usb_disabled"
+}
+elf_symbol {
+  id: 0x905187d4
+  name: "usb_driver_claim_interface"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x38b6fa85
+  type_id: 0x922471e5
+  full_name: "usb_driver_claim_interface"
+}
+elf_symbol {
+  id: 0x8483fc3d
+  name: "usb_driver_release_interface"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3275b233
+  type_id: 0x1f3aec00
+  full_name: "usb_driver_release_interface"
+}
+elf_symbol {
+  id: 0xd0fc1c2a
+  name: "usb_driver_set_configuration"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x737cedcc
+  type_id: 0x9f435990
+  full_name: "usb_driver_set_configuration"
+}
+elf_symbol {
+  id: 0x79e3481b
+  name: "usb_enable_autosuspend"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x943ce715
+  type_id: 0x13c76860
+  full_name: "usb_enable_autosuspend"
+}
+elf_symbol {
+  id: 0x5eaa090d
+  name: "usb_enable_lpm"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6be99a8a
+  type_id: 0x13c76860
+  full_name: "usb_enable_lpm"
+}
+elf_symbol {
+  id: 0x3fdad193
+  name: "usb_ep_alloc_request"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x880d48e4
+  type_id: 0x24d0f0fb
+  full_name: "usb_ep_alloc_request"
+}
+elf_symbol {
+  id: 0x00e285ec
+  name: "usb_ep_autoconfig"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x72aedefe
+  type_id: 0xa2868e3b
+  full_name: "usb_ep_autoconfig"
+}
+elf_symbol {
+  id: 0x50104747
+  name: "usb_ep_clear_halt"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9370b708
+  type_id: 0x9e09431f
+  full_name: "usb_ep_clear_halt"
+}
+elf_symbol {
+  id: 0xe17a0800
+  name: "usb_ep_dequeue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbadfaba7
+  type_id: 0x9eb724d7
+  full_name: "usb_ep_dequeue"
+}
+elf_symbol {
+  id: 0x1a573f6f
+  name: "usb_ep_disable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1aec8cdd
+  type_id: 0x9e09431f
+  full_name: "usb_ep_disable"
+}
+elf_symbol {
+  id: 0x84761308
+  name: "usb_ep_enable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2dbea237
+  type_id: 0x9e09431f
+  full_name: "usb_ep_enable"
+}
+elf_symbol {
+  id: 0x8975adfa
+  name: "usb_ep_fifo_flush"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa50158bd
+  type_id: 0x1311f1a3
+  full_name: "usb_ep_fifo_flush"
+}
+elf_symbol {
+  id: 0x9bbb59cf
+  name: "usb_ep_free_request"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1d6766db
+  type_id: 0x13af966b
+  full_name: "usb_ep_free_request"
+}
+elf_symbol {
+  id: 0x973ae918
+  name: "usb_ep_queue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd4616fc7
+  type_id: 0x9e8b4d60
+  full_name: "usb_ep_queue"
+}
+elf_symbol {
+  id: 0xb3507f92
+  name: "usb_ep_set_halt"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8310b89e
+  type_id: 0x9e09431f
+  full_name: "usb_ep_set_halt"
+}
+elf_symbol {
+  id: 0x792a6c04
+  name: "usb_ep_set_maxpacket_limit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x77ec757b
+  type_id: 0x1207e43b
+  full_name: "usb_ep_set_maxpacket_limit"
+}
+elf_symbol {
+  id: 0xdc1a1266
+  name: "usb_ep_type_string"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1a146ec3
+  type_id: 0x8b8c2368
+  full_name: "usb_ep_type_string"
+}
+elf_symbol {
+  id: 0x4a8ce807
+  name: "usb_find_common_endpoints"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x93c7edeb
+  type_id: 0x9dcedb70
+  full_name: "usb_find_common_endpoints"
+}
+elf_symbol {
+  id: 0x4ec99a42
+  name: "usb_free_all_descriptors"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xddfc1c21
+  type_id: 0x1880675b
+  full_name: "usb_free_all_descriptors"
+}
+elf_symbol {
+  id: 0xf83f300d
+  name: "usb_free_coherent"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x10ead029
+  type_id: 0x10121220
+  full_name: "usb_free_coherent"
+}
+elf_symbol {
+  id: 0x57c3f1e7
+  name: "usb_free_urb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x041b314a
+  type_id: 0x10d459f4
+  full_name: "usb_free_urb"
+}
+elf_symbol {
+  id: 0xe78aa16d
+  name: "usb_function_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xed4379fe
+  type_id: 0x9f5327f4
+  full_name: "usb_function_register"
+}
+elf_symbol {
+  id: 0x7478c07c
+  name: "usb_function_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3de341e7
+  type_id: 0x124b9548
+  full_name: "usb_function_unregister"
+}
+elf_symbol {
+  id: 0x84592be3
+  name: "usb_gadget_activate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd5ebcd4a
+  type_id: 0x94d9adef
+  full_name: "usb_gadget_activate"
+}
+elf_symbol {
+  id: 0x7db34954
+  name: "usb_gadget_connect"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6600a5fe
+  type_id: 0x94d9adef
+  full_name: "usb_gadget_connect"
+}
+elf_symbol {
+  id: 0x810ae5df
+  name: "usb_gadget_deactivate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe2824953
+  type_id: 0x94d9adef
+  full_name: "usb_gadget_deactivate"
+}
+elf_symbol {
+  id: 0x0f6331d1
+  name: "usb_gadget_disconnect"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfbd2710e
+  type_id: 0x94d9adef
+  full_name: "usb_gadget_disconnect"
+}
+elf_symbol {
+  id: 0x4f4af3aa
+  name: "usb_gadget_giveback_request"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3cfd9348
+  type_id: 0x13af966b
+  full_name: "usb_gadget_giveback_request"
+}
+elf_symbol {
+  id: 0xc6f12d08
+  name: "usb_gadget_map_request"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeaddc31a
+  type_id: 0x947e0213
+  full_name: "usb_gadget_map_request"
+}
+elf_symbol {
+  id: 0x6331fa1c
+  name: "usb_gadget_map_request_by_dev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa7a9b5ed
+  type_id: 0x9db17288
+  full_name: "usb_gadget_map_request_by_dev"
+}
+elf_symbol {
+  id: 0x0ec453a0
+  name: "usb_gadget_register_driver_owner"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe12088d0
+  type_id: 0x93f81ac9
+  full_name: "usb_gadget_register_driver_owner"
+}
+elf_symbol {
+  id: 0x06a16fcd
+  name: "usb_gadget_set_selfpowered"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5bf42f93
+  type_id: 0x94d9adef
+  full_name: "usb_gadget_set_selfpowered"
+}
+elf_symbol {
+  id: 0xa995baf6
+  name: "usb_gadget_set_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfb228107
+  type_id: 0x1b74fe1c
+  full_name: "usb_gadget_set_state"
+}
+elf_symbol {
+  id: 0x2ffa8c21
+  name: "usb_gadget_udc_reset"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf167af90
+  type_id: 0x1924a178
+  full_name: "usb_gadget_udc_reset"
+}
+elf_symbol {
+  id: 0xf6b7c76a
+  name: "usb_gadget_unmap_request"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe0d4c188
+  type_id: 0x1966b0af
+  full_name: "usb_gadget_unmap_request"
+}
+elf_symbol {
+  id: 0xebca322a
+  name: "usb_gadget_unmap_request_by_dev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0ce668a1
+  type_id: 0x10a9c034
+  full_name: "usb_gadget_unmap_request_by_dev"
+}
+elf_symbol {
+  id: 0xdc1ce8b9
+  name: "usb_gadget_vbus_connect"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xefbaeadf
+  type_id: 0x94d9adef
+  full_name: "usb_gadget_vbus_connect"
+}
+elf_symbol {
+  id: 0xadfcc022
+  name: "usb_gadget_vbus_disconnect"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9e085408
+  type_id: 0x94d9adef
+  full_name: "usb_gadget_vbus_disconnect"
+}
+elf_symbol {
+  id: 0x72b7e351
+  name: "usb_gadget_wakeup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3b02c4c4
+  type_id: 0x94d9adef
+  full_name: "usb_gadget_wakeup"
+}
+elf_symbol {
+  id: 0x154a9ae6
+  name: "usb_get_dev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5aff53a1
+  type_id: 0x751f8257
+  full_name: "usb_get_dev"
+}
+elf_symbol {
+  id: 0x451d590c
+  name: "usb_get_dr_mode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1c6d0246
+  type_id: 0x6a442bfd
+  full_name: "usb_get_dr_mode"
+}
+elf_symbol {
+  id: 0xcdfba9d9
+  name: "usb_get_from_anchor"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5ec6dfcd
+  type_id: 0x68d26f6c
+  full_name: "usb_get_from_anchor"
+}
+elf_symbol {
+  id: 0xc6afe73b
+  name: "usb_get_function"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1fdad91c
+  type_id: 0x1c941374
+  full_name: "usb_get_function"
+}
+elf_symbol {
+  id: 0x320c23b0
+  name: "usb_get_function_instance"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbb39a545
+  type_id: 0x3c0f7773
+  full_name: "usb_get_function_instance"
+}
+elf_symbol {
+  id: 0x90d03bc9
+  name: "usb_get_intf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xab6a8303
+  type_id: 0x4bcbea3e
+  full_name: "usb_get_intf"
+}
+elf_symbol {
+  id: 0xbbb3c0b0
+  name: "usb_get_maximum_speed"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9301ed75
+  type_id: 0x946eaca9
+  full_name: "usb_get_maximum_speed"
+}
+elf_symbol {
+  id: 0xaaff2220
+  name: "usb_get_role_switch_default_mode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x533bc2cc
+  type_id: 0x6a442bfd
+  full_name: "usb_get_role_switch_default_mode"
+}
+elf_symbol {
+  id: 0x0fbcda2f
+  name: "usb_get_urb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x80335c11
+  type_id: 0x658bb664
+  full_name: "usb_get_urb"
+}
+elf_symbol {
+  id: 0xf4436b91
+  name: "usb_gstrings_attach"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x882a293f
+  type_id: 0x9b2c6ab8
+  full_name: "usb_gstrings_attach"
+}
+elf_symbol {
+  id: 0xf6d28797
+  name: "usb_hc_died"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcf36bf41
+  type_id: 0x19c6594b
+  full_name: "usb_hc_died"
+}
+elf_symbol {
+  id: 0x86ed11eb
+  name: "usb_hcd_check_unlink_urb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x34c34625
+  type_id: 0x94c3e345
+  full_name: "usb_hcd_check_unlink_urb"
+}
+elf_symbol {
+  id: 0xfaec7878
+  name: "usb_hcd_end_port_resume"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa935cba4
+  type_id: 0x1e6686a2
+  full_name: "usb_hcd_end_port_resume"
+}
+elf_symbol {
+  id: 0x351f9c86
+  name: "usb_hcd_giveback_urb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0efbce6b
+  type_id: 0x19db51f9
+  full_name: "usb_hcd_giveback_urb"
+}
+elf_symbol {
+  id: 0x98c7b18e
+  name: "usb_hcd_irq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x70cf032f
+  type_id: 0x3b6e45be
+  full_name: "usb_hcd_irq"
+}
+elf_symbol {
+  id: 0x975ff621
+  name: "usb_hcd_is_primary_hcd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x29906c2f
+  type_id: 0x94deebf7
+  full_name: "usb_hcd_is_primary_hcd"
+}
+elf_symbol {
+  id: 0x07f3e9e2
+  name: "usb_hcd_link_urb_to_ep"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdeb2c756
+  type_id: 0x94da2b71
+  full_name: "usb_hcd_link_urb_to_ep"
+}
+elf_symbol {
+  id: 0xafc16d71
+  name: "usb_hcd_map_urb_for_dma"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9fc35a66
+  type_id: 0x94e642c6
+  full_name: "usb_hcd_map_urb_for_dma"
+}
+elf_symbol {
+  id: 0x633cfc39
+  name: "usb_hcd_pci_pm_ops"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xc1ef5350
+  type_id: 0xc44f560e
+  full_name: "usb_hcd_pci_pm_ops"
+}
+elf_symbol {
+  id: 0x55447a3f
+  name: "usb_hcd_pci_probe"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8e4d9b18
+  type_id: 0x991753c2
+  full_name: "usb_hcd_pci_probe"
+}
+elf_symbol {
+  id: 0x9de4bb85
+  name: "usb_hcd_pci_remove"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcb36412b
+  type_id: 0x14e1f000
+  full_name: "usb_hcd_pci_remove"
+}
+elf_symbol {
+  id: 0xa4091e22
+  name: "usb_hcd_pci_shutdown"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2fc2e765
+  type_id: 0x14e1f000
+  full_name: "usb_hcd_pci_shutdown"
+}
+elf_symbol {
+  id: 0x2b52ca5d
+  name: "usb_hcd_platform_shutdown"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xda706a09
+  type_id: 0x1f55a7e6
+  full_name: "usb_hcd_platform_shutdown"
+}
+elf_symbol {
+  id: 0xfcada692
+  name: "usb_hcd_poll_rh_status"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc9c702e0
+  type_id: 0x19c6594b
+  full_name: "usb_hcd_poll_rh_status"
+}
+elf_symbol {
+  id: 0x9f8507b1
+  name: "usb_hcd_resume_root_hub"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x18dfd09e
+  type_id: 0x19c6594b
+  full_name: "usb_hcd_resume_root_hub"
+}
+elf_symbol {
+  id: 0xc3d62a98
+  name: "usb_hcd_start_port_resume"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5bc576dd
+  type_id: 0x1e6686a2
+  full_name: "usb_hcd_start_port_resume"
+}
+elf_symbol {
+  id: 0x700d3d6b
+  name: "usb_hcd_unlink_urb_from_ep"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2146f0f8
+  type_id: 0x19c299cd
+  full_name: "usb_hcd_unlink_urb_from_ep"
+}
+elf_symbol {
+  id: 0xbdfbbc33
+  name: "usb_hcd_unmap_urb_for_dma"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6ed65a4b
+  type_id: 0x19c299cd
+  full_name: "usb_hcd_unmap_urb_for_dma"
+}
+elf_symbol {
+  id: 0x1b3f668e
+  name: "usb_hcds_loaded"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xc17515d7
+  type_id: 0x33756485
+  full_name: "usb_hcds_loaded"
+}
+elf_symbol {
+  id: 0x868c5f6e
+  name: "usb_hub_clear_tt_buffer"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa8cdee93
+  type_id: 0x9dcceb48
+  full_name: "usb_hub_clear_tt_buffer"
+}
+elf_symbol {
+  id: 0xb89dad0b
+  name: "usb_hub_find_child"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1dc93f31
+  type_id: 0x7483011b
+  full_name: "usb_hub_find_child"
+}
+elf_symbol {
+  id: 0x110008ad
+  name: "usb_ifnum_to_if"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc86c94d9
+  type_id: 0x4d878509
+  full_name: "usb_ifnum_to_if"
+}
+elf_symbol {
+  id: 0x5df193f7
+  name: "usb_init_urb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x90c04fe8
+  type_id: 0x10d459f4
+  full_name: "usb_init_urb"
+}
+elf_symbol {
+  id: 0x9b635032
+  name: "usb_initialize_gadget"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb8b12011
+  type_id: 0x10985fcc
+  full_name: "usb_initialize_gadget"
+}
+elf_symbol {
+  id: 0x4048e514
+  name: "usb_interface_id"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2d78741b
+  type_id: 0x9ebe912b
+  full_name: "usb_interface_id"
+}
+elf_symbol {
+  id: 0x89c78ea4
+  name: "usb_kill_anchored_urbs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x962c8ae1
+  type_id: 0x1d8d80fc
+  full_name: "usb_kill_anchored_urbs"
+}
+elf_symbol {
+  id: 0x37cf2035
+  name: "usb_kill_urb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa3d91a1f
+  type_id: 0x10d459f4
+  full_name: "usb_kill_urb"
+}
+elf_symbol {
+  id: 0x2db08c33
+  name: "usb_match_id"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x799344e6
+  type_id: 0x170370af
+  full_name: "usb_match_id"
+}
+elf_symbol {
+  id: 0x927b119c
+  name: "usb_match_one_id"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe8d1aae9
+  type_id: 0x952154fc
+  full_name: "usb_match_one_id"
+}
+elf_symbol {
+  id: 0x0f633308
+  name: "usb_os_desc_prepare_interf_dir"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd79f9939
+  type_id: 0xea4685f2
+  full_name: "usb_os_desc_prepare_interf_dir"
+}
+elf_symbol {
+  id: 0xbc24fc64
+  name: "usb_otg_state_string"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2f0d9053
+  type_id: 0xa0c6098f
+  full_name: "usb_otg_state_string"
+}
+elf_symbol {
+  id: 0xb9163561
+  name: "usb_phy_get_charger_current"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa4c06f8d
+  type_id: 0x1181c0b9
+  full_name: "usb_phy_get_charger_current"
+}
+elf_symbol {
+  id: 0xe9d87e68
+  name: "usb_phy_set_charger_current"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7da77357
+  type_id: 0x10feecf9
+  full_name: "usb_phy_set_charger_current"
+}
+elf_symbol {
+  id: 0xf55bd7e0
+  name: "usb_phy_set_charger_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc9c6de2a
+  type_id: 0x10a7df71
+  full_name: "usb_phy_set_charger_state"
+}
+elf_symbol {
+  id: 0xf3c1fd90
+  name: "usb_phy_set_event"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe538692b
+  type_id: 0x11252cf3
+  full_name: "usb_phy_set_event"
+}
+elf_symbol {
+  id: 0xcaff4b1e
+  name: "usb_poison_urb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbbecda2e
+  type_id: 0x10d459f4
+  full_name: "usb_poison_urb"
+}
+elf_symbol {
+  id: 0x92510f88
+  name: "usb_put_dev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe4ba0187
+  type_id: 0x13c76860
+  full_name: "usb_put_dev"
+}
+elf_symbol {
+  id: 0x1294ca70
+  name: "usb_put_function"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xddc6e910
+  type_id: 0x1880675b
+  full_name: "usb_put_function"
+}
+elf_symbol {
+  id: 0x38a32d34
+  name: "usb_put_function_instance"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xadb03e1c
+  type_id: 0x149eb739
+  full_name: "usb_put_function_instance"
+}
+elf_symbol {
+  id: 0x214d76fa
+  name: "usb_put_hcd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4174560b
+  type_id: 0x19c6594b
+  full_name: "usb_put_hcd"
+}
+elf_symbol {
+  id: 0xa834737e
+  name: "usb_put_intf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe0d43b8e
+  type_id: 0x18d9f669
+  full_name: "usb_put_intf"
+}
+elf_symbol {
+  id: 0x869e15d7
+  name: "usb_queue_reset_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x23734d3f
+  type_id: 0x18d9f669
+  full_name: "usb_queue_reset_device"
+}
+elf_symbol {
+  id: 0x944deaea
+  name: "usb_register_driver"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x99cfcf4a
+  type_id: 0x92855f9f
+  full_name: "usb_register_driver"
+}
+elf_symbol {
+  id: 0x413dc89c
+  name: "usb_register_notify"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x89bbafc6
+  type_id: 0x1675f88f
+  full_name: "usb_register_notify"
+}
+elf_symbol {
+  id: 0xbc035d91
+  name: "usb_remove_function"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3fe9f497
+  type_id: 0x13a62397
+  full_name: "usb_remove_function"
+}
+elf_symbol {
+  id: 0xddfc2941
+  name: "usb_remove_hcd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x39effec3
+  type_id: 0x19c6594b
+  full_name: "usb_remove_hcd"
+}
+elf_symbol {
+  id: 0x58937c87
+  name: "usb_remove_phy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6b13dee2
+  type_id: 0x11e8f961
+  full_name: "usb_remove_phy"
+}
+elf_symbol {
+  id: 0xe3f9d54d
+  name: "usb_reset_configuration"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x389cb481
+  type_id: 0x9edfdadc
+  full_name: "usb_reset_configuration"
+}
+elf_symbol {
+  id: 0xd80a0cec
+  name: "usb_reset_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7fa4336f
+  type_id: 0x9edfdadc
+  full_name: "usb_reset_device"
+}
+elf_symbol {
+  id: 0xb61e8892
+  name: "usb_role_string"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x39aa4888
+  type_id: 0xa148cf35
+  full_name: "usb_role_string"
+}
+elf_symbol {
+  id: 0xd5bd73b9
+  name: "usb_role_switch_find_by_fwnode"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe4f773ff
+  type_id: 0x8a993822
+  full_name: "usb_role_switch_find_by_fwnode"
+}
+elf_symbol {
+  id: 0x951bfee9
+  name: "usb_role_switch_get"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8f4a6fa5
+  type_id: 0x858a1ee4
+  full_name: "usb_role_switch_get"
+}
+elf_symbol {
+  id: 0x55fbd705
+  name: "usb_role_switch_get_drvdata"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1690b503
+  type_id: 0x580ef044
+  full_name: "usb_role_switch_get_drvdata"
+}
+elf_symbol {
+  id: 0x09c05733
+  name: "usb_role_switch_put"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc9fd634a
+  type_id: 0x1e001026
+  full_name: "usb_role_switch_put"
+}
+elf_symbol {
+  id: 0xf104e451
+  name: "usb_role_switch_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7724f469
+  type_id: 0x85551253
+  full_name: "usb_role_switch_register"
+}
+elf_symbol {
+  id: 0x282288bb
+  name: "usb_role_switch_set_role"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd5474690
+  type_id: 0x90286f13
+  full_name: "usb_role_switch_set_role"
+}
+elf_symbol {
+  id: 0x2db97071
+  name: "usb_role_switch_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2882d40e
+  type_id: 0x1e001026
+  full_name: "usb_role_switch_unregister"
+}
+elf_symbol {
+  id: 0x88509066
+  name: "usb_root_hub_lost_power"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0db2b181
+  type_id: 0x13c76860
+  full_name: "usb_root_hub_lost_power"
+}
+elf_symbol {
+  id: 0x3f64aa24
+  name: "usb_scuttle_anchored_urbs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x807766ea
+  type_id: 0x1d8d80fc
+  full_name: "usb_scuttle_anchored_urbs"
+}
+elf_symbol {
+  id: 0x62707abc
+  name: "usb_serial_claim_interface"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb24145d5
+  type_id: 0x9aa5384e
+  full_name: "usb_serial_claim_interface"
+}
+elf_symbol {
+  id: 0x5fde6ab0
+  name: "usb_serial_deregister_drivers"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdfd4095f
+  type_id: 0x1f2cb682
+  full_name: "usb_serial_deregister_drivers"
+}
+elf_symbol {
+  id: 0x7a58d33b
+  name: "usb_serial_generic_chars_in_buffer"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x25fedccd
+  type_id: 0xc564dee2
+  full_name: "usb_serial_generic_chars_in_buffer"
+}
+elf_symbol {
+  id: 0xcb415220
+  name: "usb_serial_generic_close"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x03ad5d8a
+  type_id: 0x181d9d22
+  full_name: "usb_serial_generic_close"
+}
+elf_symbol {
+  id: 0x256f289d
+  name: "usb_serial_generic_get_icount"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x74d1d966
+  type_id: 0x962949a5
+  full_name: "usb_serial_generic_get_icount"
+}
+elf_symbol {
+  id: 0xcc99e836
+  name: "usb_serial_generic_open"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3ee6671b
+  type_id: 0x96b71ffd
+  full_name: "usb_serial_generic_open"
+}
+elf_symbol {
+  id: 0x679f1f4a
+  name: "usb_serial_generic_process_read_urb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9b41ea73
+  type_id: 0x10d459f4
+  full_name: "usb_serial_generic_process_read_urb"
+}
+elf_symbol {
+  id: 0x8e696a57
+  name: "usb_serial_generic_read_bulk_callback"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc52e0fa3
+  type_id: 0x10d459f4
+  full_name: "usb_serial_generic_read_bulk_callback"
+}
+elf_symbol {
+  id: 0x7bc2d957
+  name: "usb_serial_generic_resume"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xae4bdf1c
+  type_id: 0x9a212231
+  full_name: "usb_serial_generic_resume"
+}
+elf_symbol {
+  id: 0x9da2deff
+  name: "usb_serial_generic_submit_read_urbs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc4aedf6c
+  type_id: 0x96c3b4e1
+  full_name: "usb_serial_generic_submit_read_urbs"
+}
+elf_symbol {
+  id: 0xbeec161b
+  name: "usb_serial_generic_throttle"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4d805469
+  type_id: 0x1b27f18a
+  full_name: "usb_serial_generic_throttle"
+}
+elf_symbol {
+  id: 0x20194c97
+  name: "usb_serial_generic_tiocmiwait"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfa18e2de
+  type_id: 0x96f296a4
+  full_name: "usb_serial_generic_tiocmiwait"
+}
+elf_symbol {
+  id: 0x1e85ca64
+  name: "usb_serial_generic_unthrottle"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x907bc480
+  type_id: 0x1b27f18a
+  full_name: "usb_serial_generic_unthrottle"
+}
+elf_symbol {
+  id: 0x3ba8a76e
+  name: "usb_serial_generic_wait_until_sent"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc7dee2e6
+  type_id: 0x18d7c9fc
+  full_name: "usb_serial_generic_wait_until_sent"
+}
+elf_symbol {
+  id: 0x1dc2c092
+  name: "usb_serial_generic_write"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfebea6c1
+  type_id: 0x96b8906b
+  full_name: "usb_serial_generic_write"
+}
+elf_symbol {
+  id: 0x881d65bb
+  name: "usb_serial_generic_write_bulk_callback"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6820793a
+  type_id: 0x10d459f4
+  full_name: "usb_serial_generic_write_bulk_callback"
+}
+elf_symbol {
+  id: 0x77741468
+  name: "usb_serial_generic_write_start"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc63daf9f
+  type_id: 0x96c3b4e1
+  full_name: "usb_serial_generic_write_start"
+}
+elf_symbol {
+  id: 0x261c8a11
+  name: "usb_serial_handle_dcd_change"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd1a0a186
+  type_id: 0x18b7067a
+  full_name: "usb_serial_handle_dcd_change"
+}
+elf_symbol {
+  id: 0x7bad4a68
+  name: "usb_serial_port_softint"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4c8ff664
+  type_id: 0x181d9d22
+  full_name: "usb_serial_port_softint"
+}
+elf_symbol {
+  id: 0xbc49d007
+  name: "usb_serial_register_drivers"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0cdad411
+  type_id: 0x92c247e8
+  full_name: "usb_serial_register_drivers"
+}
+elf_symbol {
+  id: 0xa20893c4
+  name: "usb_serial_resume"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe832a0c0
+  type_id: 0x95c144d5
+  full_name: "usb_serial_resume"
+}
+elf_symbol {
+  id: 0xf13a39cb
+  name: "usb_serial_suspend"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x91d8fc24
+  type_id: 0x96011ad3
+  full_name: "usb_serial_suspend"
+}
+elf_symbol {
+  id: 0x34af8a35
+  name: "usb_set_device_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa9d9cb98
+  type_id: 0x1172892f
+  full_name: "usb_set_device_state"
+}
+elf_symbol {
+  id: 0x3cc50b4b
+  name: "usb_set_interface"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x77a03e36
+  type_id: 0x9f5a91a4
+  full_name: "usb_set_interface"
+}
+elf_symbol {
+  id: 0x85997d50
+  name: "usb_show_dynids"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc17e9946
+  type_id: 0x1f5d7673
+  full_name: "usb_show_dynids"
+}
+elf_symbol {
+  id: 0x6d33fccc
+  name: "usb_speed_string"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x77ae495d
+  type_id: 0x86dd7722
+  full_name: "usb_speed_string"
+}
+elf_symbol {
+  id: 0x087c6f6c
+  name: "usb_store_new_id"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe1fe3992
+  type_id: 0x1fa33567
+  full_name: "usb_store_new_id"
+}
+elf_symbol {
+  id: 0xecf36ba9
+  name: "usb_string"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x15940f97
+  type_id: 0x9f41a9bc
+  full_name: "usb_string"
+}
+elf_symbol {
+  id: 0x9299d069
+  name: "usb_string_id"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x46f8e09f
+  type_id: 0x95c8ff6f
+  full_name: "usb_string_id"
+}
+elf_symbol {
+  id: 0x6fe64b22
+  name: "usb_submit_urb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd137f0b4
+  type_id: 0x9e0a7037
+  full_name: "usb_submit_urb"
+}
+elf_symbol {
+  id: 0x5d6fb7c5
+  name: "usb_udc_vbus_handler"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1627fc8c
+  type_id: 0x1874e22c
+  full_name: "usb_udc_vbus_handler"
+}
+elf_symbol {
+  id: 0x4eea2829
+  name: "usb_unanchor_urb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdf5c10e7
+  type_id: 0x10d459f4
+  full_name: "usb_unanchor_urb"
+}
+elf_symbol {
+  id: 0x0741c87d
+  name: "usb_unlink_urb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x52ed5635
+  type_id: 0x9dcceb48
+  full_name: "usb_unlink_urb"
+}
+elf_symbol {
+  id: 0x3bf4fac5
+  name: "usb_unpoison_urb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1fe59e6a
+  type_id: 0x10d459f4
+  full_name: "usb_unpoison_urb"
+}
+elf_symbol {
+  id: 0xcac8f190
+  name: "usb_unregister_notify"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x811dc334
+  type_id: 0x1675f88f
+  full_name: "usb_unregister_notify"
+}
+elf_symbol {
+  id: 0x140d9164
+  name: "usb_wakeup_notification"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3fb23962
+  type_id: 0x12d17df8
+  full_name: "usb_wakeup_notification"
+}
+elf_symbol {
+  id: 0x52816b1c
+  name: "usbnet_get_endpoints"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb30fc515
+  type_id: 0x9e768332
+  full_name: "usbnet_get_endpoints"
+}
+elf_symbol {
+  id: 0x19d80976
+  name: "usbnet_link_change"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8a855afb
+  type_id: 0x12448959
+  full_name: "usbnet_link_change"
+}
+elf_symbol {
+  id: 0xb5437ef4
+  name: "usleep_range_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc3055d20
+  type_id: 0x1c99bc79
+  full_name: "usleep_range_state"
+}
+elf_symbol {
+  id: 0x1473720a
+  name: "utf16s_to_utf8s"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xabf32f29
+  type_id: 0x937ab4d8
+  full_name: "utf16s_to_utf8s"
+}
+elf_symbol {
+  id: 0xa459c02b
+  name: "utf8_data_table"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x3565a929
+  type_id: 0x45396185
+  full_name: "utf8_data_table"
+}
+elf_symbol {
+  id: 0xb0c1eaf9
+  name: "uuid_gen"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x69e683de
+  type_id: 0x1700e5ae
+  full_name: "uuid_gen"
+}
+elf_symbol {
+  id: 0xe7b3f166
+  name: "uuid_null"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x6dcf857f
+  type_id: 0xc8e304f0
+  full_name: "uuid_null"
+}
+elf_symbol {
+  id: 0xb21b47da
+  name: "uuid_parse"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb67fec0e
+  type_id: 0x927d452a
+  full_name: "uuid_parse"
+}
+elf_symbol {
+  id: 0xf39bae65
+  name: "v4l2_compat_ioctl32"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb7eb2a81
+  type_id: 0xa00069e0
+  full_name: "v4l2_compat_ioctl32"
+}
+elf_symbol {
+  id: 0xfd78bf45
+  name: "v4l2_ctrl_auto_cluster"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbfe8732a
+  type_id: 0x01ecbbc0
+  full_name: "v4l2_ctrl_auto_cluster"
+}
+elf_symbol {
+  id: 0x218d39b6
+  name: "v4l2_ctrl_find"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x67d88e33
+  type_id: 0x1db066c6
+  full_name: "v4l2_ctrl_find"
+}
+elf_symbol {
+  id: 0xd71b366d
+  name: "v4l2_ctrl_g_ctrl"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc61a51b2
+  type_id: 0x8c560b3b
+  full_name: "v4l2_ctrl_g_ctrl"
+}
+elf_symbol {
+  id: 0xe2254576
+  name: "v4l2_ctrl_g_ctrl_int64"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1ed85ebb
+  type_id: 0x8b00bfc7
+  full_name: "v4l2_ctrl_g_ctrl_int64"
+}
+elf_symbol {
+  id: 0x1b3bffbd
+  name: "v4l2_ctrl_get_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x32d43420
+  type_id: 0xa0061d65
+  full_name: "v4l2_ctrl_get_name"
+}
+elf_symbol {
+  id: 0xd811c59d
+  name: "v4l2_ctrl_handler_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2cac929d
+  type_id: 0x10035ee9
+  full_name: "v4l2_ctrl_handler_free"
+}
+elf_symbol {
+  id: 0xd669e74b
+  name: "v4l2_ctrl_handler_init_class"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x699e1454
+  type_id: 0x9c0bd092
+  full_name: "v4l2_ctrl_handler_init_class"
+}
+elf_symbol {
+  id: 0xc474068f
+  name: "v4l2_ctrl_handler_setup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe7627b8d
+  type_id: 0x9d1bec55
+  full_name: "v4l2_ctrl_handler_setup"
+}
+elf_symbol {
+  id: 0x2ead83ba
+  name: "v4l2_ctrl_log_status"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf20b349f
+  type_id: 0x9bd88c03
+  full_name: "v4l2_ctrl_log_status"
+}
+elf_symbol {
+  id: 0xda8c14c5
+  name: "v4l2_ctrl_new_custom"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x16b78ed7
+  type_id: 0x1e7e66b3
+  full_name: "v4l2_ctrl_new_custom"
+}
+elf_symbol {
+  id: 0x191cb14b
+  name: "v4l2_ctrl_new_fwnode_properties"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4362297c
+  type_id: 0x9deb25ef
+  full_name: "v4l2_ctrl_new_fwnode_properties"
+}
+elf_symbol {
+  id: 0xbe25a938
+  name: "v4l2_ctrl_new_int_menu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc0526565
+  type_id: 0x1e5a132d
+  full_name: "v4l2_ctrl_new_int_menu"
+}
+elf_symbol {
+  id: 0x5ed35bd1
+  name: "v4l2_ctrl_new_std"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8e267b3b
+  type_id: 0x1e5a0d08
+  full_name: "v4l2_ctrl_new_std"
+}
+elf_symbol {
+  id: 0x3583be56
+  name: "v4l2_ctrl_new_std_compound"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe9b702cf
+  type_id: 0x1e5a69e0
+  full_name: "v4l2_ctrl_new_std_compound"
+}
+elf_symbol {
+  id: 0xb29ebe2f
+  name: "v4l2_ctrl_new_std_menu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x63b9ef43
+  type_id: 0x1e5a3daa
+  full_name: "v4l2_ctrl_new_std_menu"
+}
+elf_symbol {
+  id: 0xc16e847e
+  name: "v4l2_ctrl_new_std_menu_items"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x446596ec
+  type_id: 0x1e5a3da5
+  full_name: "v4l2_ctrl_new_std_menu_items"
+}
+elf_symbol {
+  id: 0x39e11963
+  name: "v4l2_ctrl_poll"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5392aca2
+  type_id: 0x25b50dfa
+  full_name: "v4l2_ctrl_poll"
+}
+elf_symbol {
+  id: 0x009d2026
+  name: "v4l2_ctrl_request_complete"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe15aaabf
+  type_id: 0x19c56221
+  full_name: "v4l2_ctrl_request_complete"
+}
+elf_symbol {
+  id: 0xa37ded43
+  name: "v4l2_ctrl_request_setup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8415ca25
+  type_id: 0x94ddd09d
+  full_name: "v4l2_ctrl_request_setup"
+}
+elf_symbol {
+  id: 0x5f83fb51
+  name: "v4l2_ctrl_subdev_log_status"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfe49a701
+  type_id: 0x9df18afd
+  full_name: "v4l2_ctrl_subdev_log_status"
+}
+elf_symbol {
+  id: 0x06acb36e
+  name: "v4l2_ctrl_subdev_subscribe_event"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4aa4c9ea
+  type_id: 0x9d3b60fc
+  full_name: "v4l2_ctrl_subdev_subscribe_event"
+}
+elf_symbol {
+  id: 0xc62e4949
+  name: "v4l2_ctrl_subscribe_event"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x08390c25
+  type_id: 0x912c9057
+  full_name: "v4l2_ctrl_subscribe_event"
+}
+elf_symbol {
+  id: 0x426bca09
+  name: "v4l2_device_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x01e9e124
+  type_id: 0x9d0be11c
+  full_name: "v4l2_device_register"
+}
+elf_symbol {
+  id: 0xabdb2ade
+  name: "v4l2_device_register_subdev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfad94f9a
+  type_id: 0x9c543337
+  full_name: "v4l2_device_register_subdev"
+}
+elf_symbol {
+  id: 0xdc3fca57
+  name: "v4l2_device_set_name"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6b8f22fe
+  type_id: 0x9cae8e59
+  full_name: "v4l2_device_set_name"
+}
+elf_symbol {
+  id: 0x23051526
+  name: "v4l2_device_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeae16906
+  type_id: 0x114b9716
+  full_name: "v4l2_device_unregister"
+}
+elf_symbol {
+  id: 0xad9b8781
+  name: "v4l2_device_unregister_subdev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x833bc630
+  type_id: 0x10e93841
+  full_name: "v4l2_device_unregister_subdev"
+}
+elf_symbol {
+  id: 0xd40ec4d6
+  name: "v4l2_event_dequeue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xea069d21
+  type_id: 0x91db22a4
+  full_name: "v4l2_event_dequeue"
+}
+elf_symbol {
+  id: 0xcd00be9c
+  name: "v4l2_event_pending"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2edabde4
+  type_id: 0x91e301dd
+  full_name: "v4l2_event_pending"
+}
+elf_symbol {
+  id: 0xef302a24
+  name: "v4l2_event_queue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x776d3a82
+  type_id: 0x1014c641
+  full_name: "v4l2_event_queue"
+}
+elf_symbol {
+  id: 0x0d49294f
+  name: "v4l2_event_queue_fh"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x367b05b1
+  type_id: 0x1c0f0880
+  full_name: "v4l2_event_queue_fh"
+}
+elf_symbol {
+  id: 0xe47c3e85
+  name: "v4l2_event_subdev_unsubscribe"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb88cea22
+  type_id: 0x9d3b60fc
+  full_name: "v4l2_event_subdev_unsubscribe"
+}
+elf_symbol {
+  id: 0x13de96e8
+  name: "v4l2_event_subscribe"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc0908856
+  type_id: 0x913d31b0
+  full_name: "v4l2_event_subscribe"
+}
+elf_symbol {
+  id: 0xaa9a25c3
+  name: "v4l2_event_unsubscribe"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x928a9ca7
+  type_id: 0x912c9057
+  full_name: "v4l2_event_unsubscribe"
+}
+elf_symbol {
+  id: 0xb9ee7dde
+  name: "v4l2_fh_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x47054090
+  type_id: 0x1cfbb361
+  full_name: "v4l2_fh_add"
+}
+elf_symbol {
+  id: 0xbe306b4b
+  name: "v4l2_fh_del"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x992b6dbe
+  type_id: 0x1cfbb361
+  full_name: "v4l2_fh_del"
+}
+elf_symbol {
+  id: 0x4dbc5e45
+  name: "v4l2_fh_exit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xabc41d67
+  type_id: 0x1cfbb361
+  full_name: "v4l2_fh_exit"
+}
+elf_symbol {
+  id: 0x9499bc08
+  name: "v4l2_fh_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9acb357d
+  type_id: 0x1cfc31a2
+  full_name: "v4l2_fh_init"
+}
+elf_symbol {
+  id: 0x592a4678
+  name: "v4l2_fh_is_singular"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6a2d2791
+  type_id: 0x91e301dd
+  full_name: "v4l2_fh_is_singular"
+}
+elf_symbol {
+  id: 0xff77e1ca
+  name: "v4l2_fh_open"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xafe782ce
+  type_id: 0x9bba7997
+  full_name: "v4l2_fh_open"
+}
+elf_symbol {
+  id: 0xe66642fe
+  name: "v4l2_fh_release"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xabe62220
+  type_id: 0x9bba7997
+  full_name: "v4l2_fh_release"
+}
+elf_symbol {
+  id: 0x2244c8f0
+  name: "v4l2_format_info"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x28b12cc9
+  type_id: 0x209ae488
+  full_name: "v4l2_format_info"
+}
+elf_symbol {
+  id: 0x58330374
+  name: "v4l2_g_parm_cap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9bc61f97
+  type_id: 0x9df4075f
+  full_name: "v4l2_g_parm_cap"
+}
+elf_symbol {
+  id: 0xdb18c924
+  name: "v4l2_get_link_freq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5fc3d83b
+  type_id: 0x8798b290
+  full_name: "v4l2_get_link_freq"
+}
+elf_symbol {
+  id: 0x5e36dba6
+  name: "v4l2_i2c_subdev_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd566efee
+  type_id: 0x102f3bef
+  full_name: "v4l2_i2c_subdev_init"
+}
+elf_symbol {
+  id: 0xbca2a56b
+  name: "v4l2_m2m_buf_copy_metadata"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf39f6d21
+  type_id: 0x1ce56ba2
+  full_name: "v4l2_m2m_buf_copy_metadata"
+}
+elf_symbol {
+  id: 0x31a465c5
+  name: "v4l2_m2m_buf_queue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb1ca6c94
+  type_id: 0x1253a5d6
+  full_name: "v4l2_m2m_buf_queue"
+}
+elf_symbol {
+  id: 0x101dc375
+  name: "v4l2_m2m_buf_remove"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc34c3fbf
+  type_id: 0x318cc368
+  full_name: "v4l2_m2m_buf_remove"
+}
+elf_symbol {
+  id: 0xc60ea189
+  name: "v4l2_m2m_buf_remove_by_buf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x54232bfd
+  type_id: 0x127a8e67
+  full_name: "v4l2_m2m_buf_remove_by_buf"
+}
+elf_symbol {
+  id: 0x0ac8b028
+  name: "v4l2_m2m_buf_remove_by_idx"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa81ee8a7
+  type_id: 0x309ad6f0
+  full_name: "v4l2_m2m_buf_remove_by_idx"
+}
+elf_symbol {
+  id: 0x4d677cc2
+  name: "v4l2_m2m_ctx_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x80c11d51
+  type_id: 0x3aa9b2fb
+  full_name: "v4l2_m2m_ctx_init"
+}
+elf_symbol {
+  id: 0x45c63d78
+  name: "v4l2_m2m_ctx_release"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x18303dbd
+  type_id: 0x128e4140
+  full_name: "v4l2_m2m_ctx_release"
+}
+elf_symbol {
+  id: 0x5e8a63fa
+  name: "v4l2_m2m_dqbuf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6c9393f1
+  type_id: 0x9b9c3080
+  full_name: "v4l2_m2m_dqbuf"
+}
+elf_symbol {
+  id: 0xfcc9d943
+  name: "v4l2_m2m_fop_mmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd7abccb7
+  type_id: 0x9b923492
+  full_name: "v4l2_m2m_fop_mmap"
+}
+elf_symbol {
+  id: 0x26121fc0
+  name: "v4l2_m2m_fop_poll"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x580f3b6e
+  type_id: 0x25ad187d
+  full_name: "v4l2_m2m_fop_poll"
+}
+elf_symbol {
+  id: 0xff692625
+  name: "v4l2_m2m_get_curr_priv"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x459e133f
+  type_id: 0x54c4bea6
+  full_name: "v4l2_m2m_get_curr_priv"
+}
+elf_symbol {
+  id: 0x5cedc1a5
+  name: "v4l2_m2m_get_vq"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3c0b508f
+  type_id: 0xdbd3d7da
+  full_name: "v4l2_m2m_get_vq"
+}
+elf_symbol {
+  id: 0x80afb6cb
+  name: "v4l2_m2m_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x730f2eae
+  type_id: 0x6a916773
+  full_name: "v4l2_m2m_init"
+}
+elf_symbol {
+  id: 0xddaf4e25
+  name: "v4l2_m2m_ioctl_create_bufs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1358fe47
+  type_id: 0x9bd21a8b
+  full_name: "v4l2_m2m_ioctl_create_bufs"
+}
+elf_symbol {
+  id: 0x2aa9eaa5
+  name: "v4l2_m2m_ioctl_decoder_cmd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x53b42d71
+  type_id: 0x9bdd631f
+  full_name: "v4l2_m2m_ioctl_decoder_cmd"
+}
+elf_symbol {
+  id: 0x4b112491
+  name: "v4l2_m2m_ioctl_dqbuf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5d2f2f4b
+  type_id: 0x9bdfa419
+  full_name: "v4l2_m2m_ioctl_dqbuf"
+}
+elf_symbol {
+  id: 0x9fecca14
+  name: "v4l2_m2m_ioctl_encoder_cmd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9e7ee2a7
+  type_id: 0x9bd829a3
+  full_name: "v4l2_m2m_ioctl_encoder_cmd"
+}
+elf_symbol {
+  id: 0x5e036c03
+  name: "v4l2_m2m_ioctl_expbuf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4eb76570
+  type_id: 0x9bd4409d
+  full_name: "v4l2_m2m_ioctl_expbuf"
+}
+elf_symbol {
+  id: 0x04b823f9
+  name: "v4l2_m2m_ioctl_prepare_buf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x810497e7
+  type_id: 0x9bdfa419
+  full_name: "v4l2_m2m_ioctl_prepare_buf"
+}
+elf_symbol {
+  id: 0xa23d06ae
+  name: "v4l2_m2m_ioctl_qbuf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x33b403ac
+  type_id: 0x9bdfa419
+  full_name: "v4l2_m2m_ioctl_qbuf"
+}
+elf_symbol {
+  id: 0x72585ff3
+  name: "v4l2_m2m_ioctl_querybuf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0b98ac20
+  type_id: 0x9bdfa419
+  full_name: "v4l2_m2m_ioctl_querybuf"
+}
+elf_symbol {
+  id: 0x40e2ee0e
+  name: "v4l2_m2m_ioctl_reqbufs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf68c89b7
+  type_id: 0x9bde0e00
+  full_name: "v4l2_m2m_ioctl_reqbufs"
+}
+elf_symbol {
+  id: 0xcc76293a
+  name: "v4l2_m2m_ioctl_streamoff"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0879d3aa
+  type_id: 0x9bc4d75d
+  full_name: "v4l2_m2m_ioctl_streamoff"
+}
+elf_symbol {
+  id: 0x372ac2af
+  name: "v4l2_m2m_ioctl_streamon"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xca0644c6
+  type_id: 0x9bc4d75d
+  full_name: "v4l2_m2m_ioctl_streamon"
+}
+elf_symbol {
+  id: 0xd34d4e91
+  name: "v4l2_m2m_ioctl_try_decoder_cmd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x48180aa4
+  type_id: 0x9bdd631f
+  full_name: "v4l2_m2m_ioctl_try_decoder_cmd"
+}
+elf_symbol {
+  id: 0x2e26a86b
+  name: "v4l2_m2m_ioctl_try_encoder_cmd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7a3d9049
+  type_id: 0x9bd829a3
+  full_name: "v4l2_m2m_ioctl_try_encoder_cmd"
+}
+elf_symbol {
+  id: 0x143e338b
+  name: "v4l2_m2m_job_finish"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd4bc2c54
+  type_id: 0x12eb3fc9
+  full_name: "v4l2_m2m_job_finish"
+}
+elf_symbol {
+  id: 0x1aa035d8
+  name: "v4l2_m2m_last_buffer_done"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xba845144
+  type_id: 0x1253a5d6
+  full_name: "v4l2_m2m_last_buffer_done"
+}
+elf_symbol {
+  id: 0xaf1caca5
+  name: "v4l2_m2m_mmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf8b971e8
+  type_id: 0x9b999c4a
+  full_name: "v4l2_m2m_mmap"
+}
+elf_symbol {
+  id: 0xb4198f5a
+  name: "v4l2_m2m_next_buf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x81687266
+  type_id: 0x318cc368
+  full_name: "v4l2_m2m_next_buf"
+}
+elf_symbol {
+  id: 0x0ec6b6da
+  name: "v4l2_m2m_poll"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf54c6ffe
+  type_id: 0x2524b83a
+  full_name: "v4l2_m2m_poll"
+}
+elf_symbol {
+  id: 0x5b4a7ca1
+  name: "v4l2_m2m_qbuf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3b8e59d9
+  type_id: 0x9b9c3080
+  full_name: "v4l2_m2m_qbuf"
+}
+elf_symbol {
+  id: 0x36a4341f
+  name: "v4l2_m2m_querybuf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x94814687
+  type_id: 0x9b9c3080
+  full_name: "v4l2_m2m_querybuf"
+}
+elf_symbol {
+  id: 0xabff52f7
+  name: "v4l2_m2m_register_media_controller"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x18ff3315
+  type_id: 0x9fcca68f
+  full_name: "v4l2_m2m_register_media_controller"
+}
+elf_symbol {
+  id: 0x54693ef1
+  name: "v4l2_m2m_release"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc6fca5ad
+  type_id: 0x12ca5ec4
+  full_name: "v4l2_m2m_release"
+}
+elf_symbol {
+  id: 0x1f068d9a
+  name: "v4l2_m2m_reqbufs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x326723a4
+  type_id: 0x9b9d9a99
+  full_name: "v4l2_m2m_reqbufs"
+}
+elf_symbol {
+  id: 0x9cac5dd9
+  name: "v4l2_m2m_request_queue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf0c0176c
+  type_id: 0x19ccd2d6
+  full_name: "v4l2_m2m_request_queue"
+}
+elf_symbol {
+  id: 0x5b4f4e84
+  name: "v4l2_m2m_resume"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5352d022
+  type_id: 0x12ca5ec4
+  full_name: "v4l2_m2m_resume"
+}
+elf_symbol {
+  id: 0x2e96531c
+  name: "v4l2_m2m_streamoff"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xec027c7b
+  type_id: 0x9b8743c4
+  full_name: "v4l2_m2m_streamoff"
+}
+elf_symbol {
+  id: 0xbccca110
+  name: "v4l2_m2m_streamon"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeb372814
+  type_id: 0x9b8743c4
+  full_name: "v4l2_m2m_streamon"
+}
+elf_symbol {
+  id: 0xaa045f6b
+  name: "v4l2_m2m_suspend"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf626dd03
+  type_id: 0x12ca5ec4
+  full_name: "v4l2_m2m_suspend"
+}
+elf_symbol {
+  id: 0xeefe80e0
+  name: "v4l2_m2m_try_schedule"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe6f6dff7
+  type_id: 0x128e4140
+  full_name: "v4l2_m2m_try_schedule"
+}
+elf_symbol {
+  id: 0xa4c4ebe9
+  name: "v4l2_m2m_unregister_media_controller"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf13ff84d
+  type_id: 0x12ca5ec4
+  full_name: "v4l2_m2m_unregister_media_controller"
+}
+elf_symbol {
+  id: 0xf7e4a510
+  name: "v4l2_m2m_update_start_streaming_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9dcfedbc
+  type_id: 0x12e4752f
+  full_name: "v4l2_m2m_update_start_streaming_state"
+}
+elf_symbol {
+  id: 0x906c5f61
+  name: "v4l2_m2m_update_stop_streaming_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd0b6bde7
+  type_id: 0x12e4752f
+  full_name: "v4l2_m2m_update_stop_streaming_state"
+}
+elf_symbol {
+  id: 0xf40e82dd
+  name: "v4l2_match_dv_timings"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd034392d
+  type_id: 0xf2ee299f
+  full_name: "v4l2_match_dv_timings"
+}
+elf_symbol {
+  id: 0x9b29f9ed
+  name: "v4l2_pipeline_link_notify"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa46f633d
+  type_id: 0x900d5d3b
+  full_name: "v4l2_pipeline_link_notify"
+}
+elf_symbol {
+  id: 0x5f3882d0
+  name: "v4l2_s_ctrl"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0e1f39df
+  type_id: 0x91e7fef3
+  full_name: "v4l2_s_ctrl"
+}
+elf_symbol {
+  id: 0xe203e72f
+  name: "v4l2_s_parm_cap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbc044e18
+  type_id: 0x9df4075f
+  full_name: "v4l2_s_parm_cap"
+}
+elf_symbol {
+  id: 0xac8d7ab3
+  name: "v4l2_src_change_event_subscribe"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa4ba5148
+  type_id: 0x912c9057
+  full_name: "v4l2_src_change_event_subscribe"
+}
+elf_symbol {
+  id: 0x2f159216
+  name: "v4l2_subdev_call_wrappers"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xb643b519
+  type_id: 0xd3e2f5cd
+  full_name: "v4l2_subdev_call_wrappers"
+}
+elf_symbol {
+  id: 0xb1da32d2
+  name: "v4l2_subdev_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x44e14219
+  type_id: 0x10109a52
+  full_name: "v4l2_subdev_init"
+}
+elf_symbol {
+  id: 0x354ec447
+  name: "v4l2_subdev_link_validate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdb383d6e
+  type_id: 0x93381cce
+  full_name: "v4l2_subdev_link_validate"
+}
+elf_symbol {
+  id: 0x28f5deaf
+  name: "v4l2_subdev_link_validate_default"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9c2074dd
+  type_id: 0x9d1d4664
+  full_name: "v4l2_subdev_link_validate_default"
+}
+elf_symbol {
+  id: 0x7733b651
+  name: "v4l_bound_align_image"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf5ef842e
+  type_id: 0x1faab0ad
+  full_name: "v4l_bound_align_image"
+}
+elf_symbol {
+  id: 0x8e6a3c4a
+  name: "vb2_buffer_done"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd1f609eb
+  type_id: 0x1b1de99f
+  full_name: "vb2_buffer_done"
+}
+elf_symbol {
+  id: 0x3635e264
+  name: "vb2_common_vm_ops"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x374b58eb
+  type_id: 0xf5901b02
+  full_name: "vb2_common_vm_ops"
+}
+elf_symbol {
+  id: 0xc2eed4fe
+  name: "vb2_create_bufs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x68454cae
+  type_id: 0x9b8acd5a
+  full_name: "vb2_create_bufs"
+}
+elf_symbol {
+  id: 0x7fb65c50
+  name: "vb2_create_framevec"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa21fa765
+  type_id: 0x987f99ef
+  full_name: "vb2_create_framevec"
+}
+elf_symbol {
+  id: 0x61c086ce
+  name: "vb2_destroy_framevec"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xccd197c7
+  type_id: 0x10e42ea8
+  full_name: "vb2_destroy_framevec"
+}
+elf_symbol {
+  id: 0x03410164
+  name: "vb2_dma_contig_memops"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xd8b7f4d8
+  type_id: 0xe32fa2b6
+  full_name: "vb2_dma_contig_memops"
+}
+elf_symbol {
+  id: 0xde8f3957
+  name: "vb2_dma_sg_memops"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x90be079d
+  type_id: 0xe32fa2b6
+  full_name: "vb2_dma_sg_memops"
+}
+elf_symbol {
+  id: 0x3997b003
+  name: "vb2_dqbuf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3c5b8217
+  type_id: 0x9b4a7bac
+  full_name: "vb2_dqbuf"
+}
+elf_symbol {
+  id: 0xafcd1744
+  name: "vb2_expbuf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x369827a7
+  type_id: 0x9bef6c38
+  full_name: "vb2_expbuf"
+}
+elf_symbol {
+  id: 0xfcd4fd85
+  name: "vb2_fop_mmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4e3e534b
+  type_id: 0x9b923492
+  full_name: "vb2_fop_mmap"
+}
+elf_symbol {
+  id: 0x67563547
+  name: "vb2_fop_poll"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3eb09d10
+  type_id: 0x25ad187d
+  full_name: "vb2_fop_poll"
+}
+elf_symbol {
+  id: 0x3e087d1e
+  name: "vb2_fop_read"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6ba75349
+  type_id: 0x12e4741f
+  full_name: "vb2_fop_read"
+}
+elf_symbol {
+  id: 0xccf1cf97
+  name: "vb2_fop_release"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb5c9e85f
+  type_id: 0x9bba7997
+  full_name: "vb2_fop_release"
+}
+elf_symbol {
+  id: 0xbf20de3f
+  name: "vb2_ioctl_create_bufs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfc78d061
+  type_id: 0x9bd21a8b
+  full_name: "vb2_ioctl_create_bufs"
+}
+elf_symbol {
+  id: 0x8b640541
+  name: "vb2_ioctl_dqbuf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x72a132c4
+  type_id: 0x9bdfa419
+  full_name: "vb2_ioctl_dqbuf"
+}
+elf_symbol {
+  id: 0x7f067455
+  name: "vb2_ioctl_expbuf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x10fa8b33
+  type_id: 0x9bd4409d
+  full_name: "vb2_ioctl_expbuf"
+}
+elf_symbol {
+  id: 0xee6e1f6c
+  name: "vb2_ioctl_prepare_buf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc805a20c
+  type_id: 0x9bdfa419
+  full_name: "vb2_ioctl_prepare_buf"
+}
+elf_symbol {
+  id: 0x278cdeee
+  name: "vb2_ioctl_qbuf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd2d50b90
+  type_id: 0x9bdfa419
+  full_name: "vb2_ioctl_qbuf"
+}
+elf_symbol {
+  id: 0x347d8958
+  name: "vb2_ioctl_querybuf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x149d3289
+  type_id: 0x9bdfa419
+  full_name: "vb2_ioctl_querybuf"
+}
+elf_symbol {
+  id: 0x0df71d15
+  name: "vb2_ioctl_reqbufs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xff7cce3f
+  type_id: 0x9bde0e00
+  full_name: "vb2_ioctl_reqbufs"
+}
+elf_symbol {
+  id: 0x3d20049f
+  name: "vb2_ioctl_streamoff"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe10e3b37
+  type_id: 0x9bc4d75d
+  full_name: "vb2_ioctl_streamoff"
+}
+elf_symbol {
+  id: 0x977435b2
+  name: "vb2_ioctl_streamon"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xde4becc0
+  type_id: 0x9bc4d75d
+  full_name: "vb2_ioctl_streamon"
+}
+elf_symbol {
+  id: 0x1342b83d
+  name: "vb2_mmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd81e6c5e
+  type_id: 0x9b0be8d8
+  full_name: "vb2_mmap"
+}
+elf_symbol {
+  id: 0x07eaae45
+  name: "vb2_ops_wait_finish"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x45856120
+  type_id: 0x163b1761
+  full_name: "vb2_ops_wait_finish"
+}
+elf_symbol {
+  id: 0x2bab7519
+  name: "vb2_ops_wait_prepare"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0ab9fd3b
+  type_id: 0x163b1761
+  full_name: "vb2_ops_wait_prepare"
+}
+elf_symbol {
+  id: 0xd3898035
+  name: "vb2_plane_cookie"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5eda4e76
+  type_id: 0x5cabb760
+  full_name: "vb2_plane_cookie"
+}
+elf_symbol {
+  id: 0x1a579bd8
+  name: "vb2_plane_vaddr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x428d647d
+  type_id: 0x5cabb760
+  full_name: "vb2_plane_vaddr"
+}
+elf_symbol {
+  id: 0xada6722b
+  name: "vb2_poll"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x49136e8d
+  type_id: 0x25fe2d8e
+  full_name: "vb2_poll"
+}
+elf_symbol {
+  id: 0xba41649f
+  name: "vb2_prepare_buf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x835fdef3
+  type_id: 0x9b7c03b3
+  full_name: "vb2_prepare_buf"
+}
+elf_symbol {
+  id: 0xf4a3a08f
+  name: "vb2_qbuf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3c69bc9f
+  type_id: 0x9b7c03b3
+  full_name: "vb2_qbuf"
+}
+elf_symbol {
+  id: 0xdfb89e7e
+  name: "vb2_querybuf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x325dca8b
+  type_id: 0x9b51247b
+  full_name: "vb2_querybuf"
+}
+elf_symbol {
+  id: 0x33a2f100
+  name: "vb2_queue_error"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9d72d689
+  type_id: 0x163b1761
+  full_name: "vb2_queue_error"
+}
+elf_symbol {
+  id: 0xcdf82e93
+  name: "vb2_queue_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x777cb86f
+  type_id: 0x9b23a5dd
+  full_name: "vb2_queue_init"
+}
+elf_symbol {
+  id: 0xe44c6ac8
+  name: "vb2_queue_release"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcaef93e1
+  type_id: 0x163b1761
+  full_name: "vb2_queue_release"
+}
+elf_symbol {
+  id: 0xd60bdd76
+  name: "vb2_read"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf618b20c
+  type_id: 0x91b3994e
+  full_name: "vb2_read"
+}
+elf_symbol {
+  id: 0x0b1c01d2
+  name: "vb2_reqbufs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xda7c81ed
+  type_id: 0x9b4b85e0
+  full_name: "vb2_reqbufs"
+}
+elf_symbol {
+  id: 0x20d404b1
+  name: "vb2_request_object_is_buffer"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0cfcffa4
+  type_id: 0xf78aaa08
+  full_name: "vb2_request_object_is_buffer"
+}
+elf_symbol {
+  id: 0x49536a26
+  name: "vb2_request_queue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb42af0f8
+  type_id: 0x19ccd2d6
+  full_name: "vb2_request_queue"
+}
+elf_symbol {
+  id: 0x39528cf5
+  name: "vb2_request_validate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xefc81974
+  type_id: 0x94d4606a
+  full_name: "vb2_request_validate"
+}
+elf_symbol {
+  id: 0xcb922fd0
+  name: "vb2_streamoff"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfa0a5d2b
+  type_id: 0x9ae61038
+  full_name: "vb2_streamoff"
+}
+elf_symbol {
+  id: 0x5c2cffc5
+  name: "vb2_streamon"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcf3847f0
+  type_id: 0x9ae61038
+  full_name: "vb2_streamon"
+}
+elf_symbol {
+  id: 0x37026d37
+  name: "vb2_vmalloc_memops"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xf7f32bc3
+  type_id: 0xe32fa2b6
+  full_name: "vb2_vmalloc_memops"
+}
+elf_symbol {
+  id: 0x1b22201e
+  name: "vb2_wait_for_all_buffers"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaf30ee3b
+  type_id: 0x9b23a5dd
+  full_name: "vb2_wait_for_all_buffers"
+}
+elf_symbol {
+  id: 0x6dc0b5fd
+  name: "vchan_dma_desc_free_list"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x524bef23
+  type_id: 0x1aebcc30
+  full_name: "vchan_dma_desc_free_list"
+}
+elf_symbol {
+  id: 0xa18683c9
+  name: "vchan_find_desc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0881e270
+  type_id: 0xca318720
+  full_name: "vchan_find_desc"
+}
+elf_symbol {
+  id: 0xbdc38eeb
+  name: "vchan_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x247c9c8e
+  type_id: 0x1aad5bf3
+  full_name: "vchan_init"
+}
+elf_symbol {
+  id: 0x2e35eb72
+  name: "vchan_tx_desc_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xea5d1fb7
+  type_id: 0x96225525
+  full_name: "vchan_tx_desc_free"
+}
+elf_symbol {
+  id: 0x2e0cfc9a
+  name: "vchan_tx_submit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa758289a
+  type_id: 0x533c8264
+  full_name: "vchan_tx_submit"
+}
+elf_symbol {
+  id: 0x9181a5f3
+  name: "verify_pkcs7_signature"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xda0ee32f
+  type_id: 0x901a64a2
+  full_name: "verify_pkcs7_signature"
+}
+elf_symbol {
+  id: 0xa7ab6134
+  name: "vfree"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x999e8297
+  type_id: 0x1edf94e9
+  full_name: "vfree"
+}
+elf_symbol {
+  id: 0x1499f6a1
+  name: "vfs_fsync_range"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2bae79ab
+  type_id: 0x9b2c93fd
+  full_name: "vfs_fsync_range"
+}
+elf_symbol {
+  id: 0xf89b49b7
+  name: "vfs_llseek"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc65bfeb8
+  type_id: 0x2d64ae3e
+  full_name: "vfs_llseek"
+}
+elf_symbol {
+  id: 0xf33dadbd
+  name: "vhost_add_used_and_signal"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x33a8caf5
+  type_id: 0x1eca4382
+  full_name: "vhost_add_used_and_signal"
+}
+elf_symbol {
+  id: 0x743ba358
+  name: "vhost_dev_check_owner"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x84b8a380
+  type_id: 0xa972e03e
+  full_name: "vhost_dev_check_owner"
+}
+elf_symbol {
+  id: 0x9f33c2c6
+  name: "vhost_dev_cleanup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4b4d5f5b
+  type_id: 0x1eca8a34
+  full_name: "vhost_dev_cleanup"
+}
+elf_symbol {
+  id: 0x429eeda3
+  name: "vhost_dev_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3e1d88ef
+  type_id: 0x1efc8b31
+  full_name: "vhost_dev_init"
+}
+elf_symbol {
+  id: 0x67d81c4b
+  name: "vhost_dev_ioctl"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4906eeb3
+  type_id: 0xa862daff
+  full_name: "vhost_dev_ioctl"
+}
+elf_symbol {
+  id: 0x5b1b7953
+  name: "vhost_dev_stop"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xffe2af44
+  type_id: 0x1eca8a34
+  full_name: "vhost_dev_stop"
+}
+elf_symbol {
+  id: 0xeb7a9b77
+  name: "vhost_disable_notify"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd4594282
+  type_id: 0x1edabe58
+  full_name: "vhost_disable_notify"
+}
+elf_symbol {
+  id: 0x6ab1ba70
+  name: "vhost_enable_notify"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xee68d636
+  type_id: 0xf0e6b4cf
+  full_name: "vhost_enable_notify"
+}
+elf_symbol {
+  id: 0x472ca228
+  name: "vhost_get_vq_desc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2dc3e7f0
+  type_id: 0x9c8bc249
+  full_name: "vhost_get_vq_desc"
+}
+elf_symbol {
+  id: 0x74fdc781
+  name: "vhost_log_access_ok"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x244475b4
+  type_id: 0xf0f680a3
+  full_name: "vhost_log_access_ok"
+}
+elf_symbol {
+  id: 0x47c7271e
+  name: "vhost_vq_access_ok"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x89a7b524
+  type_id: 0xffa71dc4
+  full_name: "vhost_vq_access_ok"
+}
+elf_symbol {
+  id: 0xbb7b0e96
+  name: "vhost_vq_init_access"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa796e0f6
+  type_id: 0x9c83a5ef
+  full_name: "vhost_vq_init_access"
+}
+elf_symbol {
+  id: 0x2f1da35c
+  name: "vhost_vring_ioctl"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x41823101
+  type_id: 0xa862daff
+  full_name: "vhost_vring_ioctl"
+}
+elf_symbol {
+  id: 0x47f90fd0
+  name: "video_devdata"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3a1e1bcc
+  type_id: 0x969da51f
+  full_name: "video_devdata"
+}
+elf_symbol {
+  id: 0x969a2ec0
+  name: "video_device_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6ee6f973
+  type_id: 0x90a73fa7
+  full_name: "video_device_alloc"
+}
+elf_symbol {
+  id: 0xb1b42a22
+  name: "video_device_release"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbd706b3b
+  type_id: 0x10e07da0
+  full_name: "video_device_release"
+}
+elf_symbol {
+  id: 0x689b6a95
+  name: "video_device_release_empty"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4e71abaf
+  type_id: 0x10e07da0
+  full_name: "video_device_release_empty"
+}
+elf_symbol {
+  id: 0xbd9fe5b6
+  name: "video_ioctl2"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1e17a753
+  type_id: 0xa00069e0
+  full_name: "video_ioctl2"
+}
+elf_symbol {
+  id: 0x76ec943c
+  name: "video_unregister_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xee861199
+  type_id: 0x10e07da0
+  full_name: "video_unregister_device"
+}
+elf_symbol {
+  id: 0x1a4e4142
+  name: "videomode_from_timing"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa1d8004a
+  type_id: 0x1ed8d47c
+  full_name: "videomode_from_timing"
+}
+elf_symbol {
+  id: 0x1bf9e9e5
+  name: "virtio_break_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x692d0e21
+  type_id: 0x1ad5d81c
+  full_name: "virtio_break_device"
+}
+elf_symbol {
+  id: 0xec6b2b3d
+  name: "virtio_check_driver_offered_feature"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x42c5bb28
+  type_id: 0x1cd13541
+  full_name: "virtio_check_driver_offered_feature"
+}
+elf_symbol {
+  id: 0x4b519cf9
+  name: "virtio_config_changed"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x43ade6b9
+  type_id: 0x1ad5d81c
+  full_name: "virtio_config_changed"
+}
+elf_symbol {
+  id: 0xca359dbf
+  name: "virtio_device_freeze"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb0a4521d
+  type_id: 0x97cd6aa0
+  full_name: "virtio_device_freeze"
+}
+elf_symbol {
+  id: 0xbd74d21e
+  name: "virtio_device_restore"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb32ccb69
+  type_id: 0x97cd6aa0
+  full_name: "virtio_device_restore"
+}
+elf_symbol {
+  id: 0x9cbf06d7
+  name: "virtio_max_dma_size"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9ce26f13
+  type_id: 0x9d7240dd
+  full_name: "virtio_max_dma_size"
+}
+elf_symbol {
+  id: 0x7ee23f4e
+  name: "virtio_reset_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0db89b19
+  type_id: 0x1ad5d81c
+  full_name: "virtio_reset_device"
+}
+elf_symbol {
+  id: 0x8684931b
+  name: "virtio_transport_connect"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1f53add3
+  type_id: 0x98da7358
+  full_name: "virtio_transport_connect"
+}
+elf_symbol {
+  id: 0x7fa6e289
+  name: "virtio_transport_deliver_tap_pkt"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x87a17634
+  type_id: 0x10367ad4
+  full_name: "virtio_transport_deliver_tap_pkt"
+}
+elf_symbol {
+  id: 0xa07ee8d2
+  name: "virtio_transport_destruct"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x61154d52
+  type_id: 0x15c2c1e4
+  full_name: "virtio_transport_destruct"
+}
+elf_symbol {
+  id: 0xde344997
+  name: "virtio_transport_dgram_allow"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbabd30f5
+  type_id: 0xcfc2716e
+  full_name: "virtio_transport_dgram_allow"
+}
+elf_symbol {
+  id: 0xea70d424
+  name: "virtio_transport_dgram_bind"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0638a296
+  type_id: 0x98e450c7
+  full_name: "virtio_transport_dgram_bind"
+}
+elf_symbol {
+  id: 0xfe9092ab
+  name: "virtio_transport_dgram_dequeue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1b3ca458
+  type_id: 0x98558c5c
+  full_name: "virtio_transport_dgram_dequeue"
+}
+elf_symbol {
+  id: 0xd9e10c59
+  name: "virtio_transport_dgram_enqueue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf5b6a4ef
+  type_id: 0x98ecb6ff
+  full_name: "virtio_transport_dgram_enqueue"
+}
+elf_symbol {
+  id: 0x8a8da7f1
+  name: "virtio_transport_do_socket_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd94b3c5d
+  type_id: 0x988fda5f
+  full_name: "virtio_transport_do_socket_init"
+}
+elf_symbol {
+  id: 0x2af74799
+  name: "virtio_transport_free_pkt"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x833be086
+  type_id: 0x10367ad4
+  full_name: "virtio_transport_free_pkt"
+}
+elf_symbol {
+  id: 0xb7aee2c5
+  name: "virtio_transport_notify_buffer_size"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5db8e034
+  type_id: 0x157aa231
+  full_name: "virtio_transport_notify_buffer_size"
+}
+elf_symbol {
+  id: 0xfef2e182
+  name: "virtio_transport_notify_poll_in"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xae288e1f
+  type_id: 0x9b0ed502
+  full_name: "virtio_transport_notify_poll_in"
+}
+elf_symbol {
+  id: 0x91ee0115
+  name: "virtio_transport_notify_poll_out"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf3c18d66
+  type_id: 0x9b0ed502
+  full_name: "virtio_transport_notify_poll_out"
+}
+elf_symbol {
+  id: 0xf232b484
+  name: "virtio_transport_notify_recv_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc069b149
+  type_id: 0x9b0fcd09
+  full_name: "virtio_transport_notify_recv_init"
+}
+elf_symbol {
+  id: 0x92cd8f09
+  name: "virtio_transport_notify_recv_post_dequeue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9161bead
+  type_id: 0x9b3e6548
+  full_name: "virtio_transport_notify_recv_post_dequeue"
+}
+elf_symbol {
+  id: 0xa1a3c9fa
+  name: "virtio_transport_notify_recv_pre_block"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4e0b6bd0
+  type_id: 0x9b0fcd09
+  full_name: "virtio_transport_notify_recv_pre_block"
+}
+elf_symbol {
+  id: 0x5e9a19c7
+  name: "virtio_transport_notify_recv_pre_dequeue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x250baf3d
+  type_id: 0x9b0fcd09
+  full_name: "virtio_transport_notify_recv_pre_dequeue"
+}
+elf_symbol {
+  id: 0x145b02f5
+  name: "virtio_transport_notify_send_init"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x947c5fad
+  type_id: 0x98573499
+  full_name: "virtio_transport_notify_send_init"
+}
+elf_symbol {
+  id: 0xe07b73f3
+  name: "virtio_transport_notify_send_post_enqueue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x22b5ea8d
+  type_id: 0x9b859556
+  full_name: "virtio_transport_notify_send_post_enqueue"
+}
+elf_symbol {
+  id: 0xd9851481
+  name: "virtio_transport_notify_send_pre_block"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7ebf2725
+  type_id: 0x98573499
+  full_name: "virtio_transport_notify_send_pre_block"
+}
+elf_symbol {
+  id: 0xb9a9a844
+  name: "virtio_transport_notify_send_pre_enqueue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7fab1ecc
+  type_id: 0x98573499
+  full_name: "virtio_transport_notify_send_pre_enqueue"
+}
+elf_symbol {
+  id: 0x5a0ffdee
+  name: "virtio_transport_recv_pkt"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe67f7bfe
+  type_id: 0x1966e93b
+  full_name: "virtio_transport_recv_pkt"
+}
+elf_symbol {
+  id: 0xb21e5a5d
+  name: "virtio_transport_release"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc8336cc6
+  type_id: 0x15c2c1e4
+  full_name: "virtio_transport_release"
+}
+elf_symbol {
+  id: 0x9454b7ef
+  name: "virtio_transport_seqpacket_dequeue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4aefed1b
+  type_id: 0x1101d71f
+  full_name: "virtio_transport_seqpacket_dequeue"
+}
+elf_symbol {
+  id: 0xa850323d
+  name: "virtio_transport_seqpacket_enqueue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4371e8ea
+  type_id: 0x985410df
+  full_name: "virtio_transport_seqpacket_enqueue"
+}
+elf_symbol {
+  id: 0x3c9ddf14
+  name: "virtio_transport_seqpacket_has_data"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8717573e
+  type_id: 0x40a2bb15
+  full_name: "virtio_transport_seqpacket_has_data"
+}
+elf_symbol {
+  id: 0xbdbb3861
+  name: "virtio_transport_shutdown"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x73bd1b60
+  type_id: 0x9946f014
+  full_name: "virtio_transport_shutdown"
+}
+elf_symbol {
+  id: 0x3f1a831f
+  name: "virtio_transport_stream_allow"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x03a81e69
+  type_id: 0xcfc2716e
+  full_name: "virtio_transport_stream_allow"
+}
+elf_symbol {
+  id: 0xbbc0dd1b
+  name: "virtio_transport_stream_dequeue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x93bb0691
+  type_id: 0x11248ef2
+  full_name: "virtio_transport_stream_dequeue"
+}
+elf_symbol {
+  id: 0x1c7e966c
+  name: "virtio_transport_stream_enqueue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2066248f
+  type_id: 0x11251271
+  full_name: "virtio_transport_stream_enqueue"
+}
+elf_symbol {
+  id: 0xd2b79899
+  name: "virtio_transport_stream_has_data"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x55904d2c
+  type_id: 0x835e595c
+  full_name: "virtio_transport_stream_has_data"
+}
+elf_symbol {
+  id: 0x2e2c18d8
+  name: "virtio_transport_stream_has_space"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1ca28b82
+  type_id: 0x835e595c
+  full_name: "virtio_transport_stream_has_space"
+}
+elf_symbol {
+  id: 0x353d111f
+  name: "virtio_transport_stream_is_active"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x86146819
+  type_id: 0xfbfecb73
+  full_name: "virtio_transport_stream_is_active"
+}
+elf_symbol {
+  id: 0xae9f4961
+  name: "virtio_transport_stream_rcvhiwat"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9821949a
+  type_id: 0x5281433c
+  full_name: "virtio_transport_stream_rcvhiwat"
+}
+elf_symbol {
+  id: 0x748d6994
+  name: "virtqueue_add_inbuf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3f947993
+  type_id: 0x91a842e5
+  full_name: "virtqueue_add_inbuf"
+}
+elf_symbol {
+  id: 0x3d2886e2
+  name: "virtqueue_add_inbuf_ctx"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0e3d2a1f
+  type_id: 0x91a87b65
+  full_name: "virtqueue_add_inbuf_ctx"
+}
+elf_symbol {
+  id: 0x8e701dda
+  name: "virtqueue_add_outbuf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x892cf77c
+  type_id: 0x91a842e5
+  full_name: "virtqueue_add_outbuf"
+}
+elf_symbol {
+  id: 0xb13a809e
+  name: "virtqueue_add_sgs"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x26c0d64f
+  type_id: 0x91d5bf71
+  full_name: "virtqueue_add_sgs"
+}
+elf_symbol {
+  id: 0x32530e9e
+  name: "virtqueue_detach_unused_buf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1b52ac7b
+  type_id: 0x5ae81016
+  full_name: "virtqueue_detach_unused_buf"
+}
+elf_symbol {
+  id: 0x2accb4e2
+  name: "virtqueue_disable_cb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7cf92b5d
+  type_id: 0x1ce6f074
+  full_name: "virtqueue_disable_cb"
+}
+elf_symbol {
+  id: 0xda040cc6
+  name: "virtqueue_disable_dma_api_for_buffers"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa09eabfe
+  type_id: 0x1ce6f074
+  full_name: "virtqueue_disable_dma_api_for_buffers"
+}
+elf_symbol {
+  id: 0xa398c1a5
+  name: "virtqueue_enable_cb"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x73d61dbd
+  type_id: 0xf2dafae3
+  full_name: "virtqueue_enable_cb"
+}
+elf_symbol {
+  id: 0x4786597c
+  name: "virtqueue_enable_cb_delayed"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1c251d64
+  type_id: 0xf2dafae3
+  full_name: "virtqueue_enable_cb_delayed"
+}
+elf_symbol {
+  id: 0xf4867072
+  name: "virtqueue_enable_cb_prepare"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x727280a2
+  type_id: 0xc2a5df1c
+  full_name: "virtqueue_enable_cb_prepare"
+}
+elf_symbol {
+  id: 0xcafdd619
+  name: "virtqueue_get_avail_addr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe46b944a
+  type_id: 0xb0635f1b
+  full_name: "virtqueue_get_avail_addr"
+}
+elf_symbol {
+  id: 0xb5cf0c37
+  name: "virtqueue_get_buf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf0c121d6
+  type_id: 0x5a87d596
+  full_name: "virtqueue_get_buf"
+}
+elf_symbol {
+  id: 0x97472a76
+  name: "virtqueue_get_buf_ctx"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x81f82b4e
+  type_id: 0x5a84fa4e
+  full_name: "virtqueue_get_buf_ctx"
+}
+elf_symbol {
+  id: 0x18b1b4af
+  name: "virtqueue_get_desc_addr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf7144bd7
+  type_id: 0xb0635f1b
+  full_name: "virtqueue_get_desc_addr"
+}
+elf_symbol {
+  id: 0x6baf8fe0
+  name: "virtqueue_get_used_addr"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6d37e6e4
+  type_id: 0xb0635f1b
+  full_name: "virtqueue_get_used_addr"
+}
+elf_symbol {
+  id: 0x40994c4b
+  name: "virtqueue_get_vring_size"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd312bed7
+  type_id: 0xc2a5df1c
+  full_name: "virtqueue_get_vring_size"
+}
+elf_symbol {
+  id: 0xc310fa7c
+  name: "virtqueue_is_broken"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x17c2e25e
+  type_id: 0xf2dafae3
+  full_name: "virtqueue_is_broken"
+}
+elf_symbol {
+  id: 0xbadb7e4b
+  name: "virtqueue_kick"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7926a903
+  type_id: 0xf2dafae3
+  full_name: "virtqueue_kick"
+}
+elf_symbol {
+  id: 0xdb0e240a
+  name: "virtqueue_kick_prepare"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x69ca6e1b
+  type_id: 0xf2dafae3
+  full_name: "virtqueue_kick_prepare"
+}
+elf_symbol {
+  id: 0xb61f9f98
+  name: "virtqueue_notify"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaf7d45c1
+  type_id: 0xf2dafae3
+  full_name: "virtqueue_notify"
+}
+elf_symbol {
+  id: 0xd13c80bd
+  name: "virtqueue_poll"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6ba0c942
+  type_id: 0xf3ccef7b
+  full_name: "virtqueue_poll"
+}
+elf_symbol {
+  id: 0x0ab935cb
+  name: "virtqueue_resize"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3a00b1ac
+  type_id: 0x92d90e2a
+  full_name: "virtqueue_resize"
+}
+elf_symbol {
+  id: 0x8a60b44b
+  name: "vlan_dev_vlan_id"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x00a8dcc6
+  type_id: 0x0dcd58a4
+  full_name: "vlan_dev_vlan_id"
+}
+elf_symbol {
+  id: 0xf63d0cfd
+  name: "vlan_filter_drop_vids"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x79c47dfd
+  type_id: 0x1e4fc33a
+  full_name: "vlan_filter_drop_vids"
+}
+elf_symbol {
+  id: 0x13e8d3f8
+  name: "vlan_filter_push_vids"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd9d5c58f
+  type_id: 0x93577186
+  full_name: "vlan_filter_push_vids"
+}
+elf_symbol {
+  id: 0xf7843e68
+  name: "vlan_ioctl_set"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2532dd75
+  type_id: 0x1bd0f743
+  full_name: "vlan_ioctl_set"
+}
+elf_symbol {
+  id: 0xd33fff31
+  name: "vlan_uses_dev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbe5060e0
+  type_id: 0xf2422a10
+  full_name: "vlan_uses_dev"
+}
+elf_symbol {
+  id: 0xd4186273
+  name: "vlan_vid_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8e8548fc
+  type_id: 0x90db2b2a
+  full_name: "vlan_vid_add"
+}
+elf_symbol {
+  id: 0x4a8b3536
+  name: "vlan_vid_del"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x45315ff3
+  type_id: 0x1dc39996
+  full_name: "vlan_vid_del"
+}
+elf_symbol {
+  id: 0xea9f1dc7
+  name: "vlan_vids_add_by_dev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb5f227ec
+  type_id: 0x91e70ccb
+  full_name: "vlan_vids_add_by_dev"
+}
+elf_symbol {
+  id: 0xe8d961d3
+  name: "vlan_vids_del_by_dev"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6aef3ae5
+  type_id: 0x1cffbe77
+  full_name: "vlan_vids_del_by_dev"
+}
+elf_symbol {
+  id: 0xfdbff447
+  name: "vm_event_states"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xb6a88e0a
+  type_id: 0x3306692c
+  full_name: "vm_event_states"
+}
+elf_symbol {
+  id: 0xd08bd5b6
+  name: "vm_get_page_prot"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2c91e17c
+  type_id: 0xec4920f6
+  full_name: "vm_get_page_prot"
+}
+elf_symbol {
+  id: 0x30f68c14
+  name: "vm_insert_page"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xea670074
+  type_id: 0x9fc8463b
+  full_name: "vm_insert_page"
+}
+elf_symbol {
+  id: 0x8899dfb4
+  name: "vm_iomap_memory"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1bab83c7
+  type_id: 0x9dffa803
+  full_name: "vm_iomap_memory"
+}
+elf_symbol {
+  id: 0x1c065008
+  name: "vm_map_pages"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xee8f06e0
+  type_id: 0x9f242d9f
+  full_name: "vm_map_pages"
+}
+elf_symbol {
+  id: 0xee1009c9
+  name: "vm_map_ram"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x29bfce6d
+  type_id: 0x555557dd
+  full_name: "vm_map_ram"
+}
+elf_symbol {
+  id: 0x5d5d315a
+  name: "vm_memory_committed"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x26520970
+  type_id: 0x31accd53
+  full_name: "vm_memory_committed"
+}
+elf_symbol {
+  id: 0xdc09fb10
+  name: "vm_mmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x11f970df
+  type_id: 0x37579ee5
+  full_name: "vm_mmap"
+}
+elf_symbol {
+  id: 0x5849ff8e
+  name: "vm_munmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5b56860c
+  type_id: 0x928d6faf
+  full_name: "vm_munmap"
+}
+elf_symbol {
+  id: 0xaf85c216
+  name: "vm_node_stat"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0x2fc505ec
+  type_id: 0xfc37fa4b
+  full_name: "vm_node_stat"
+}
+elf_symbol {
+  id: 0xef2c49d1
+  name: "vm_unmap_ram"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x03fd2571
+  type_id: 0x1fc98171
+  full_name: "vm_unmap_ram"
+}
+elf_symbol {
+  id: 0xca7f93d5
+  name: "vm_zone_stat"
+  is_defined: true
+  symbol_type: OBJECT
+  crc: 0xba0676e2
+  type_id: 0xe4f72a06
+  full_name: "vm_zone_stat"
+}
+elf_symbol {
+  id: 0xac972f8d
+  name: "vma_set_file"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb8aada86
+  type_id: 0x127f2869
+  full_name: "vma_set_file"
+}
+elf_symbol {
+  id: 0x3c915fdb
+  name: "vmalloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd6ee688f
+  type_id: 0x5a4be8d0
+  full_name: "vmalloc"
+}
+elf_symbol {
+  id: 0x3f9de086
+  name: "vmalloc_nr_pages"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7ccb0ada
+  type_id: 0x31accd53
+  full_name: "vmalloc_nr_pages"
+}
+elf_symbol {
+  id: 0x6d8b459f
+  name: "vmalloc_to_page"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf354f462
+  type_id: 0xb3df35fa
+  full_name: "vmalloc_to_page"
+}
+elf_symbol {
+  id: 0xa1a341df
+  name: "vmalloc_to_pfn"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3744cf36
+  type_id: 0x3feb0829
+  full_name: "vmalloc_to_pfn"
+}
+elf_symbol {
+  id: 0xf7787d5c
+  name: "vmalloc_user"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5635a60a
+  type_id: 0x5a4be8d0
+  full_name: "vmalloc_user"
+}
+elf_symbol {
+  id: 0x8119b492
+  name: "vmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xad3f829d
+  type_id: 0x55423178
+  full_name: "vmap"
+}
+elf_symbol {
+  id: 0xdd7d73a5
+  name: "vmemdup_user"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcfd810a6
+  type_id: 0x5b01a12a
+  full_name: "vmemdup_user"
+}
+elf_symbol {
+  id: 0xe4441605
+  name: "vmf_insert_mixed"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7f1eb4f7
+  type_id: 0xc057b7a9
+  full_name: "vmf_insert_mixed"
+}
+elf_symbol {
+  id: 0x7d46f112
+  name: "vmf_insert_pfn"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x65f3d6aa
+  type_id: 0xc07911ea
+  full_name: "vmf_insert_pfn"
+}
+elf_symbol {
+  id: 0x67a74b01
+  name: "vmf_insert_pfn_prot"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd24f0344
+  type_id: 0xc07b6222
+  full_name: "vmf_insert_pfn_prot"
+}
+elf_symbol {
+  id: 0x61b986b8
+  name: "vprintk"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x715a5ed0
+  type_id: 0x91935bd4
+  full_name: "vprintk"
+}
+elf_symbol {
+  id: 0xd0fa04e7
+  name: "vprintk_emit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xee8c02e9
+  type_id: 0x85da991d
+  full_name: "vprintk_emit"
+}
+elf_symbol {
+  id: 0x5c9f3e0e
+  name: "vring_create_virtqueue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x19f0c780
+  type_id: 0x825faca7
+  full_name: "vring_create_virtqueue"
+}
+elf_symbol {
+  id: 0xd68f23fc
+  name: "vring_del_virtqueue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe5ea83d5
+  type_id: 0x1ce6f074
+  full_name: "vring_del_virtqueue"
+}
+elf_symbol {
+  id: 0xbb8b92a9
+  name: "vring_interrupt"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xff05fa13
+  type_id: 0x3b6e45be
+  full_name: "vring_interrupt"
+}
+elf_symbol {
+  id: 0xe27a4705
+  name: "vring_new_virtqueue"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9c8b8453
+  type_id: 0x825facba
+  full_name: "vring_new_virtqueue"
+}
+elf_symbol {
+  id: 0xea7fc751
+  name: "vring_transport_features"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf52ea309
+  type_id: 0x1ad5d81c
+  full_name: "vring_transport_features"
+}
+elf_symbol {
+  id: 0xd574e01b
+  name: "vscnprintf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaa0c318b
+  type_id: 0x9f7cdc88
+  full_name: "vscnprintf"
+}
+elf_symbol {
+  id: 0x9af4ba91
+  name: "vsnprintf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x00148653
+  type_id: 0x9f7cdc88
+  full_name: "vsnprintf"
+}
+elf_symbol {
+  id: 0xc46cf30e
+  name: "vsock_core_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2cd67c57
+  type_id: 0x931e2c91
+  full_name: "vsock_core_register"
+}
+elf_symbol {
+  id: 0x584cd956
+  name: "vsock_core_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x05a47ec8
+  type_id: 0x1f9a1d61
+  full_name: "vsock_core_unregister"
+}
+elf_symbol {
+  id: 0x3d09e223
+  name: "vsock_for_each_connected_socket"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa4eb6031
+  type_id: 0x139ca744
+  full_name: "vsock_for_each_connected_socket"
+}
+elf_symbol {
+  id: 0x0db9531c
+  name: "vsprintf"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x78b887ed
+  type_id: 0x9c61211e
+  full_name: "vsprintf"
+}
+elf_symbol {
+  id: 0xbd4af188
+  name: "vunmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x94961283
+  type_id: 0x1edf94e9
+  full_name: "vunmap"
+}
+elf_symbol {
+  id: 0xd0f100ba
+  name: "vzalloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x40a9b349
+  type_id: 0x5a4be8d0
+  full_name: "vzalloc"
+}
+elf_symbol {
+  id: 0xb2149cf6
+  name: "vzalloc_node"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9e0c711d
+  type_id: 0x5bd76b9c
+  full_name: "vzalloc_node"
+}
+elf_symbol {
+  id: 0x5b9410e0
+  name: "wait_for_completion"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x25974000
+  type_id: 0x11c0e0ca
+  full_name: "wait_for_completion"
+}
+elf_symbol {
+  id: 0x929bcf22
+  name: "wait_for_completion_interruptible"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x2e3bcce2
+  type_id: 0x9cd85276
+  full_name: "wait_for_completion_interruptible"
+}
+elf_symbol {
+  id: 0xdd20bb49
+  name: "wait_for_completion_interruptible_timeout"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf02aa937
+  type_id: 0xa6b55f52
+  full_name: "wait_for_completion_interruptible_timeout"
+}
+elf_symbol {
+  id: 0xd0367f5d
+  name: "wait_for_completion_io_timeout"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5c26a53b
+  type_id: 0x3039a998
+  full_name: "wait_for_completion_io_timeout"
+}
+elf_symbol {
+  id: 0xacccfc76
+  name: "wait_for_completion_killable"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x20463df4
+  type_id: 0x9cd85276
+  full_name: "wait_for_completion_killable"
+}
+elf_symbol {
+  id: 0x8b18825a
+  name: "wait_for_completion_killable_timeout"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x726bc3c7
+  type_id: 0xa6b55f52
+  full_name: "wait_for_completion_killable_timeout"
+}
+elf_symbol {
+  id: 0x718f5c64
+  name: "wait_for_completion_state"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb0617db4
+  type_id: 0x9dce47ee
+  full_name: "wait_for_completion_state"
+}
+elf_symbol {
+  id: 0x60488ecf
+  name: "wait_for_completion_timeout"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4a3ad70e
+  type_id: 0x3039a998
+  full_name: "wait_for_completion_timeout"
+}
+elf_symbol {
+  id: 0x9d727719
+  name: "wait_for_device_probe"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4484a5a4
+  type_id: 0x10985193
+  full_name: "wait_for_device_probe"
+}
+elf_symbol {
+  id: 0xa4027847
+  name: "wait_woken"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb308c97d
+  type_id: 0xa7f744cd
+  full_name: "wait_woken"
+}
+elf_symbol {
+  id: 0x7540b5a8
+  name: "wake_up_bit"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa0fbac79
+  type_id: 0x172b8b93
+  full_name: "wake_up_bit"
+}
+elf_symbol {
+  id: 0xb1036d49
+  name: "wake_up_if_idle"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf6abaae1
+  type_id: 0x09506558
+  full_name: "wake_up_if_idle"
+}
+elf_symbol {
+  id: 0x9a87f32b
+  name: "wake_up_process"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x73e2bcf1
+  type_id: 0x9ac6895a
+  full_name: "wake_up_process"
+}
+elf_symbol {
+  id: 0xecc7b6fc
+  name: "wake_up_var"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf8f61ebc
+  type_id: 0x16b708df
+  full_name: "wake_up_var"
+}
+elf_symbol {
+  id: 0x5d14316b
+  name: "wakeup_source_add"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5cd4fa0b
+  type_id: 0x10229585
+  full_name: "wakeup_source_add"
+}
+elf_symbol {
+  id: 0x0094f87c
+  name: "wakeup_source_create"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1578c6f0
+  type_id: 0xd94d3717
+  full_name: "wakeup_source_create"
+}
+elf_symbol {
+  id: 0x4e0971d6
+  name: "wakeup_source_destroy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x846d6029
+  type_id: 0x10229585
+  full_name: "wakeup_source_destroy"
+}
+elf_symbol {
+  id: 0x1e98f8ba
+  name: "wakeup_source_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8be45c3b
+  type_id: 0xd6a766de
+  full_name: "wakeup_source_register"
+}
+elf_symbol {
+  id: 0x700cd224
+  name: "wakeup_source_remove"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x10a73976
+  type_id: 0x10229585
+  full_name: "wakeup_source_remove"
+}
+elf_symbol {
+  id: 0xfff68651
+  name: "wakeup_source_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb511937b
+  type_id: 0x10229585
+  full_name: "wakeup_source_unregister"
+}
+elf_symbol {
+  id: 0x735a53f2
+  name: "wakeup_sources_read_lock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc2692173
+  type_id: 0x9d80e32f
+  full_name: "wakeup_sources_read_lock"
+}
+elf_symbol {
+  id: 0xaa56f7fa
+  name: "wakeup_sources_read_unlock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x24ad11db
+  type_id: 0x09506558
+  full_name: "wakeup_sources_read_unlock"
+}
+elf_symbol {
+  id: 0x36d0e118
+  name: "wakeup_sources_walk_next"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x80718483
+  type_id: 0xd673de47
+  full_name: "wakeup_sources_walk_next"
+}
+elf_symbol {
+  id: 0x96e52cc0
+  name: "wakeup_sources_walk_start"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0eec7cfb
+  type_id: 0xd6c91a51
+  full_name: "wakeup_sources_walk_start"
+}
+elf_symbol {
+  id: 0xb3aa5e28
+  name: "watchdog_init_timeout"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x75865a3c
+  type_id: 0x982fb6c1
+  full_name: "watchdog_init_timeout"
+}
+elf_symbol {
+  id: 0x610289ba
+  name: "watchdog_register_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1a256841
+  type_id: 0x99393567
+  full_name: "watchdog_register_device"
+}
+elf_symbol {
+  id: 0x39d70409
+  name: "watchdog_set_restart_priority"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa73a0d9d
+  type_id: 0x15bd0497
+  full_name: "watchdog_set_restart_priority"
+}
+elf_symbol {
+  id: 0xae30b13d
+  name: "watchdog_unregister_device"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xddcdbf83
+  type_id: 0x142187db
+  full_name: "watchdog_unregister_device"
+}
+elf_symbol {
+  id: 0x7e6ed424
+  name: "wireless_nlevent_flush"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x1e8fac8e
+  type_id: 0x10985193
+  full_name: "wireless_nlevent_flush"
+}
+elf_symbol {
+  id: 0x05952796
+  name: "wireless_send_event"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xae6471d1
+  type_id: 0x1d250ee3
+  full_name: "wireless_send_event"
+}
+elf_symbol {
+  id: 0xbf6dc1f2
+  name: "woken_wake_function"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd0654aba
+  type_id: 0x9d71353d
+  full_name: "woken_wake_function"
+}
+elf_symbol {
+  id: 0xa319773c
+  name: "work_busy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x86ab091d
+  type_id: 0xcd8cb8f5
+  full_name: "work_busy"
+}
+elf_symbol {
+  id: 0xec1a6a81
+  name: "work_on_cpu"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf82f3657
+  type_id: 0xbe656f8f
+  full_name: "work_on_cpu"
+}
+elf_symbol {
+  id: 0x21d8904f
+  name: "wpan_phy_find"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9f4d1913
+  type_id: 0xaacf82f6
+  full_name: "wpan_phy_find"
+}
+elf_symbol {
+  id: 0x9112284f
+  name: "wpan_phy_for_each"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xfe7e7bc9
+  type_id: 0x963ea445
+  full_name: "wpan_phy_for_each"
+}
+elf_symbol {
+  id: 0xc122de73
+  name: "wpan_phy_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x70eca563
+  type_id: 0x1af18e52
+  full_name: "wpan_phy_free"
+}
+elf_symbol {
+  id: 0x5d671f52
+  name: "wpan_phy_new"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xff230c07
+  type_id: 0xab2f6439
+  full_name: "wpan_phy_new"
+}
+elf_symbol {
+  id: 0x4e8c6206
+  name: "wpan_phy_register"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x267db43d
+  type_id: 0x97e93cee
+  full_name: "wpan_phy_register"
+}
+elf_symbol {
+  id: 0x887e1dde
+  name: "wpan_phy_unregister"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3bd3ad22
+  type_id: 0x1af18e52
+  full_name: "wpan_phy_unregister"
+}
+elf_symbol {
+  id: 0x180eeaeb
+  name: "wq_worker_comm"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8f7bb703
+  type_id: 0x126f3be6
+  full_name: "wq_worker_comm"
+}
+elf_symbol {
+  id: 0x61731bd0
+  name: "ww_mutex_lock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6cf47cfc
+  type_id: 0x99413a22
+  full_name: "ww_mutex_lock"
+}
+elf_symbol {
+  id: 0x6f9f10f2
+  name: "ww_mutex_lock_interruptible"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdb8c9633
+  type_id: 0x99413a22
+  full_name: "ww_mutex_lock_interruptible"
+}
+elf_symbol {
+  id: 0x99941051
+  name: "ww_mutex_trylock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd1154d24
+  type_id: 0x99413a22
+  full_name: "ww_mutex_trylock"
+}
+elf_symbol {
+  id: 0x4ff86851
+  name: "ww_mutex_unlock"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6616e157
+  type_id: 0x14e943e8
+  full_name: "ww_mutex_unlock"
+}
+elf_symbol {
+  id: 0x505283a2
+  name: "xa_clear_mark"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x131a6146
+  type_id: 0x1ae27633
+  full_name: "xa_clear_mark"
+}
+elf_symbol {
+  id: 0xeb9a524c
+  name: "xa_destroy"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd9491c14
+  type_id: 0x1a307ffd
+  full_name: "xa_destroy"
+}
+elf_symbol {
+  id: 0x8b920e03
+  name: "xa_erase"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x0745a981
+  type_id: 0x5cf34a0d
+  full_name: "xa_erase"
+}
+elf_symbol {
+  id: 0x73e59f31
+  name: "xa_find"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8fa25c24
+  type_id: 0x5c2a8a81
+  full_name: "xa_find"
+}
+elf_symbol {
+  id: 0xe0d6968c
+  name: "xa_find_after"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdf36914b
+  type_id: 0x5c2a8a81
+  full_name: "xa_find_after"
+}
+elf_symbol {
+  id: 0x5bd79069
+  name: "xa_get_mark"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x01b6865c
+  type_id: 0xf4de7ca4
+  full_name: "xa_get_mark"
+}
+elf_symbol {
+  id: 0xb91fc02e
+  name: "xa_load"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xa85a3e6d
+  type_id: 0x5cf34a0d
+  full_name: "xa_load"
+}
+elf_symbol {
+  id: 0xaa425530
+  name: "xa_set_mark"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x09da0ba4
+  type_id: 0x1ae27633
+  full_name: "xa_set_mark"
+}
+elf_symbol {
+  id: 0x9b05d33a
+  name: "xa_store"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5b3e282f
+  type_id: 0x5cf6a3cf
+  full_name: "xa_store"
+}
+elf_symbol {
+  id: 0xebb799b4
+  name: "xdp_convert_zc_to_xdp_frame"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcdfd1e71
+  type_id: 0x0a34c3a2
+  full_name: "xdp_convert_zc_to_xdp_frame"
+}
+elf_symbol {
+  id: 0xcaf4c4fe
+  name: "xdp_do_flush"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb9681621
+  type_id: 0x10985193
+  full_name: "xdp_do_flush"
+}
+elf_symbol {
+  id: 0x11080b78
+  name: "xdp_do_redirect"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x16930c8a
+  type_id: 0x9115bc9b
+  full_name: "xdp_do_redirect"
+}
+elf_symbol {
+  id: 0x7604d076
+  name: "xdp_master_redirect"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcd7c3b3b
+  type_id: 0x46fb55eb
+  full_name: "xdp_master_redirect"
+}
+elf_symbol {
+  id: 0x59171ad5
+  name: "xdp_return_frame"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x97fa5ddb
+  type_id: 0x1e92214d
+  full_name: "xdp_return_frame"
+}
+elf_symbol {
+  id: 0xbaf19860
+  name: "xdp_return_frame_rx_napi"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6f7edc6f
+  type_id: 0x1e92214d
+  full_name: "xdp_return_frame_rx_napi"
+}
+elf_symbol {
+  id: 0x30b9ea58
+  name: "xdp_rxq_info_is_reg"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb8b3b99a
+  type_id: 0xf690d6d1
+  full_name: "xdp_rxq_info_is_reg"
+}
+elf_symbol {
+  id: 0xd45f17d8
+  name: "xdp_rxq_info_reg_mem_model"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd7fa3ff0
+  type_id: 0x9448ad12
+  full_name: "xdp_rxq_info_reg_mem_model"
+}
+elf_symbol {
+  id: 0xbc3cb711
+  name: "xdp_rxq_info_unreg"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x31fd54d6
+  type_id: 0x18acdc46
+  full_name: "xdp_rxq_info_unreg"
+}
+elf_symbol {
+  id: 0x248b3536
+  name: "xdp_rxq_info_unreg_mem_model"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x4fa6e7d5
+  type_id: 0x18acdc46
+  full_name: "xdp_rxq_info_unreg_mem_model"
+}
+elf_symbol {
+  id: 0x950a62ac
+  name: "xdp_warn"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbb7195a5
+  type_id: 0x1ffdf635
+  full_name: "xdp_warn"
+}
+elf_symbol {
+  id: 0x8f8f2df9
+  name: "xfrm_lookup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x404e7acd
+  type_id: 0xa2843be3
+  full_name: "xfrm_lookup"
+}
+elf_symbol {
+  id: 0xeb912db7
+  name: "xfrm_state_lookup_byspi"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3f28571e
+  type_id: 0x624b0f22
+  full_name: "xfrm_state_lookup_byspi"
+}
+elf_symbol {
+  id: 0x64876ecd
+  name: "xfrm_stateonly_find"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x28950cb8
+  type_id: 0x62e6e159
+  full_name: "xfrm_stateonly_find"
+}
+elf_symbol {
+  id: 0xdf73207c
+  name: "xhci_alloc_command"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xba55486d
+  type_id: 0xa8db3e38
+  full_name: "xhci_alloc_command"
+}
+elf_symbol {
+  id: 0xd232cbb1
+  name: "xhci_alloc_erst"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x09bbeaf4
+  type_id: 0x99afdc89
+  full_name: "xhci_alloc_erst"
+}
+elf_symbol {
+  id: 0xa6eac918
+  name: "xhci_free_command"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x63f91c06
+  type_id: 0x1401698f
+  full_name: "xhci_free_command"
+}
+elf_symbol {
+  id: 0xc46f1f1f
+  name: "xhci_gen_setup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbd0cce77
+  type_id: 0x97b34018
+  full_name: "xhci_gen_setup"
+}
+elf_symbol {
+  id: 0xf30af7b3
+  name: "xhci_get_endpoint_index"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x57d4050a
+  type_id: 0xcd9f7f34
+  full_name: "xhci_get_endpoint_index"
+}
+elf_symbol {
+  id: 0x71f2808e
+  name: "xhci_init_driver"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x49b2abc6
+  type_id: 0x14d9dc3c
+  full_name: "xhci_init_driver"
+}
+elf_symbol {
+  id: 0xfa57b81b
+  name: "xhci_queue_stop_endpoint"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x21035de0
+  type_id: 0x99011cda
+  full_name: "xhci_queue_stop_endpoint"
+}
+elf_symbol {
+  id: 0x4603c1d4
+  name: "xhci_resume"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x14833b96
+  type_id: 0x98945a53
+  full_name: "xhci_resume"
+}
+elf_symbol {
+  id: 0x54c09325
+  name: "xhci_ring_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x222d9eb0
+  type_id: 0xa9d11801
+  full_name: "xhci_ring_alloc"
+}
+elf_symbol {
+  id: 0xf1838f43
+  name: "xhci_ring_cmd_db"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3733affc
+  type_id: 0x14391590
+  full_name: "xhci_ring_cmd_db"
+}
+elf_symbol {
+  id: 0x9324879f
+  name: "xhci_ring_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf7084d7c
+  type_id: 0x14bfdedb
+  full_name: "xhci_ring_free"
+}
+elf_symbol {
+  id: 0xcde37345
+  name: "xhci_run"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x8e6c1288
+  type_id: 0x94deebf7
+  full_name: "xhci_run"
+}
+elf_symbol {
+  id: 0xb834cd77
+  name: "xhci_suspend"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x62040b65
+  type_id: 0x98945a53
+  full_name: "xhci_suspend"
+}
+elf_symbol {
+  id: 0x5827485d
+  name: "xhci_trb_virt_to_dma"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x83e71096
+  type_id: 0xb367c064
+  full_name: "xhci_trb_virt_to_dma"
+}
+elf_symbol {
+  id: 0x23b2a72a
+  name: "xp_alloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xaea8a44b
+  type_id: 0x13a974bf
+  full_name: "xp_alloc"
+}
+elf_symbol {
+  id: 0xf407269f
+  name: "xp_dma_map"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x040177c6
+  type_id: 0x9d04fab6
+  full_name: "xp_dma_map"
+}
+elf_symbol {
+  id: 0xe0308dad
+  name: "xp_dma_sync_for_cpu_slow"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf1c5729f
+  type_id: 0x1265fe38
+  full_name: "xp_dma_sync_for_cpu_slow"
+}
+elf_symbol {
+  id: 0x8e1b14a8
+  name: "xp_dma_sync_for_device_slow"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5b390982
+  type_id: 0x13a45d3e
+  full_name: "xp_dma_sync_for_device_slow"
+}
+elf_symbol {
+  id: 0x38f3135f
+  name: "xp_dma_unmap"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x418c999a
+  type_id: 0x10d43da5
+  full_name: "xp_dma_unmap"
+}
+elf_symbol {
+  id: 0xfd336d19
+  name: "xp_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xeafdd796
+  type_id: 0x1265fe38
+  full_name: "xp_free"
+}
+elf_symbol {
+  id: 0x19d4533f
+  name: "xp_raw_get_dma"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3377c899
+  type_id: 0xbed4cb96
+  full_name: "xp_raw_get_dma"
+}
+elf_symbol {
+  id: 0x72ddc3de
+  name: "xp_set_rxq_info"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbe30b3f2
+  type_id: 0x109aa0ea
+  full_name: "xp_set_rxq_info"
+}
+elf_symbol {
+  id: 0x9e93bc3d
+  name: "xsk_clear_rx_need_wakeup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x9a4c1342
+  type_id: 0x1019e837
+  full_name: "xsk_clear_rx_need_wakeup"
+}
+elf_symbol {
+  id: 0x308dfef4
+  name: "xsk_get_pool_from_qid"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf0bfdad5
+  type_id: 0x9634d583
+  full_name: "xsk_get_pool_from_qid"
+}
+elf_symbol {
+  id: 0x47d1f084
+  name: "xsk_set_rx_need_wakeup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x64231838
+  type_id: 0x1019e837
+  full_name: "xsk_set_rx_need_wakeup"
+}
+elf_symbol {
+  id: 0xb951a4e5
+  name: "xsk_set_tx_need_wakeup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdfcc3ff1
+  type_id: 0x1019e837
+  full_name: "xsk_set_tx_need_wakeup"
+}
+elf_symbol {
+  id: 0xaf80b2ca
+  name: "xsk_tx_completed"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3dc0abc6
+  type_id: 0x133dc89b
+  full_name: "xsk_tx_completed"
+}
+elf_symbol {
+  id: 0xe31eb78b
+  name: "xsk_tx_peek_desc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xdf5bea7b
+  type_id: 0xfec52a83
+  full_name: "xsk_tx_peek_desc"
+}
+elf_symbol {
+  id: 0xb73c4905
+  name: "xsk_tx_release"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x054d479a
+  type_id: 0x1019e837
+  full_name: "xsk_tx_release"
+}
+elf_symbol {
+  id: 0xbb650596
+  name: "xsk_uses_need_wakeup"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xd22abe4f
+  type_id: 0xfe25e2a0
+  full_name: "xsk_uses_need_wakeup"
+}
+elf_symbol {
+  id: 0x0fc8c78d
+  name: "zap_vma_ptes"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbd4d2486
+  type_id: 0x12dd8909
+  full_name: "zap_vma_ptes"
+}
+elf_symbol {
+  id: 0xa5d58813
+  name: "zlib_deflate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xf2c43f3f
+  type_id: 0x80d705f2
+  full_name: "zlib_deflate"
+}
+elf_symbol {
+  id: 0xde6620d5
+  name: "zlib_deflateEnd"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc890c008
+  type_id: 0x814b86be
+  full_name: "zlib_deflateEnd"
+}
+elf_symbol {
+  id: 0xdf18b1a9
+  name: "zlib_deflateInit2"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5a0b73d0
+  type_id: 0x80cf4911
+  full_name: "zlib_deflateInit2"
+}
+elf_symbol {
+  id: 0xf158bd25
+  name: "zlib_deflateReset"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x6aeefac4
+  type_id: 0x814b86be
+  full_name: "zlib_deflateReset"
+}
+elf_symbol {
+  id: 0xee403ebb
+  name: "zlib_deflate_workspacesize"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xe9f7149c
+  type_id: 0x85d454a8
+  full_name: "zlib_deflate_workspacesize"
+}
+elf_symbol {
+  id: 0x52ed8956
+  name: "zlib_inflate"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x581f98da
+  type_id: 0x80d705f2
+  full_name: "zlib_inflate"
+}
+elf_symbol {
+  id: 0xf6eda681
+  name: "zlib_inflateIncomp"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x424d3620
+  type_id: 0x932bc2c5
+  full_name: "zlib_inflateIncomp"
+}
+elf_symbol {
+  id: 0xd7745fba
+  name: "zlib_inflateInit2"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x35a88f28
+  type_id: 0x80d705f2
+  full_name: "zlib_inflateInit2"
+}
+elf_symbol {
+  id: 0xd9789392
+  name: "zlib_inflateReset"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbb0540aa
+  type_id: 0x814b86be
+  full_name: "zlib_inflateReset"
+}
+elf_symbol {
+  id: 0x74942776
+  name: "zlib_inflate_workspacesize"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xce5ac24f
+  type_id: 0x9d80e32f
+  full_name: "zlib_inflate_workspacesize"
+}
+elf_symbol {
+  id: 0xb59d09c8
+  name: "zs_compact"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x5da67adc
+  type_id: 0x3df5194b
+  full_name: "zs_compact"
+}
+elf_symbol {
+  id: 0x2242c82d
+  name: "zs_create_pool"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xbcf1f0e6
+  type_id: 0x40326129
+  full_name: "zs_create_pool"
+}
+elf_symbol {
+  id: 0xc25d24ef
+  name: "zs_destroy_pool"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc69b7ee5
+  type_id: 0x1cc1858b
+  full_name: "zs_destroy_pool"
+}
+elf_symbol {
+  id: 0xc6638ed0
+  name: "zs_free"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x958df3ac
+  type_id: 0x1c0c5019
+  full_name: "zs_free"
+}
+elf_symbol {
+  id: 0x3f0451e3
+  name: "zs_get_total_pages"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xcbe56bc2
+  type_id: 0x3df5194b
+  full_name: "zs_get_total_pages"
+}
+elf_symbol {
+  id: 0xc0f3c22d
+  name: "zs_huge_class_size"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x3d8baf3b
+  type_id: 0x9b661d4a
+  full_name: "zs_huge_class_size"
+}
+elf_symbol {
+  id: 0x7e421214
+  name: "zs_malloc"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xb29533ee
+  type_id: 0x3e19a55d
+  full_name: "zs_malloc"
+}
+elf_symbol {
+  id: 0x867032c4
+  name: "zs_map_object"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0xc341ae6d
+  type_id: 0x5a0f5479
+  full_name: "zs_map_object"
+}
+elf_symbol {
+  id: 0xefe9dc42
+  name: "zs_pool_stats"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x7cceaf92
+  type_id: 0x1c9637f2
+  full_name: "zs_pool_stats"
+}
+elf_symbol {
+  id: 0x5303ad4a
+  name: "zs_unmap_object"
+  is_defined: true
+  symbol_type: FUNCTION
+  crc: 0x924c46f8
+  type_id: 0x1c0c5019
+  full_name: "zs_unmap_object"
+}
+interface {
+  id: 0x84ea5130
+  symbol_id: 0x2dddbe52
+  symbol_id: 0xf56ca4c7
+  symbol_id: 0x59348d38
+  symbol_id: 0x5b94e7ac
+  symbol_id: 0x41de13f7
+  symbol_id: 0xe284f532
+  symbol_id: 0x6e1bc82e
+  symbol_id: 0x9fa51b33
+  symbol_id: 0x228f3ab6
+  symbol_id: 0x9be8e89f
+  symbol_id: 0x3f6b0839
+  symbol_id: 0x0cec86b7
+  symbol_id: 0xc4fd654e
+  symbol_id: 0xc77348b3
+  symbol_id: 0x21c9fe20
+  symbol_id: 0xeaf0b860
+  symbol_id: 0x1bc9d7cd
+  symbol_id: 0xd97b055a
+  symbol_id: 0x8920b575
+  symbol_id: 0x149a28b5
+  symbol_id: 0x1709df48
+  symbol_id: 0x85a72204
+  symbol_id: 0xa8f918ba
+  symbol_id: 0x05fd3e82
+  symbol_id: 0xfe65176f
+  symbol_id: 0x58758cb9
+  symbol_id: 0x1341e2f9
+  symbol_id: 0xe465faed
+  symbol_id: 0xc6582869
+  symbol_id: 0xbceb9c07
+  symbol_id: 0xe70766b6
+  symbol_id: 0xb339c336
+  symbol_id: 0x01badff0
+  symbol_id: 0x4df0b385
+  symbol_id: 0x35aa1afd
+  symbol_id: 0x5a6afeee
+  symbol_id: 0xc8eb813d
+  symbol_id: 0x7bf707d4
+  symbol_id: 0xbf1d0365
+  symbol_id: 0x2057d4fc
+  symbol_id: 0x4598418e
+  symbol_id: 0x587f0c74
+  symbol_id: 0xad3ab1fc
+  symbol_id: 0xac2b058b
+  symbol_id: 0x6ffa6a33
+  symbol_id: 0x694ba466
+  symbol_id: 0xa6164cad
+  symbol_id: 0x8b66e11e
+  symbol_id: 0xd0f23870
+  symbol_id: 0xaac029a7
+  symbol_id: 0x6a30419a
+  symbol_id: 0x021741b4
+  symbol_id: 0x9339caba
+  symbol_id: 0xac1ff1ce
+  symbol_id: 0xba429af2
+  symbol_id: 0xe495eb53
+  symbol_id: 0x1210424a
+  symbol_id: 0xceb7517f
+  symbol_id: 0xe8be269c
+  symbol_id: 0x4580056d
+  symbol_id: 0x61ab264f
+  symbol_id: 0x93d381a9
+  symbol_id: 0x30a3a42f
+  symbol_id: 0xb96bbc49
+  symbol_id: 0xafb7da0f
+  symbol_id: 0x42e03bd1
+  symbol_id: 0x857a0e42
+  symbol_id: 0xe889d441
+  symbol_id: 0x087c7a06
+  symbol_id: 0x2d91cc56
+  symbol_id: 0xdc24797a
+  symbol_id: 0xf2144a48
+  symbol_id: 0x26a4107f
+  symbol_id: 0x5ede8c55
+  symbol_id: 0x9a185646
+  symbol_id: 0x4f5366b7
+  symbol_id: 0x44f8d55b
+  symbol_id: 0xce934a47
+  symbol_id: 0xa5e8c083
+  symbol_id: 0x72280e0d
+  symbol_id: 0x5a669991
+  symbol_id: 0xa650eb31
+  symbol_id: 0x4633b40f
+  symbol_id: 0x53979c85
+  symbol_id: 0x0088cc73
+  symbol_id: 0xbfc6b0c0
+  symbol_id: 0x52589eba
+  symbol_id: 0x6f0a4a19
+  symbol_id: 0x8a84f79f
+  symbol_id: 0x2ccf76fa
+  symbol_id: 0xeb5b97d5
+  symbol_id: 0x7385cdb3
+  symbol_id: 0x279e51a3
+  symbol_id: 0xe78c29b1
+  symbol_id: 0x95c24824
+  symbol_id: 0x0a6e3e89
+  symbol_id: 0x347a699c
+  symbol_id: 0x27ce6aa1
+  symbol_id: 0xbc44f404
+  symbol_id: 0x2d22f5f4
+  symbol_id: 0x93a6e6d4
+  symbol_id: 0xb9f5667b
+  symbol_id: 0x04059f00
+  symbol_id: 0x1c1ee265
+  symbol_id: 0x77466fa6
+  symbol_id: 0x0b0f732e
+  symbol_id: 0xec903c93
+  symbol_id: 0x7149b35b
+  symbol_id: 0x04e4be20
+  symbol_id: 0xd7326965
+  symbol_id: 0xdd06006d
+  symbol_id: 0x7669528e
+  symbol_id: 0x29276248
+  symbol_id: 0x961412ac
+  symbol_id: 0x37454b71
+  symbol_id: 0x8ed3b64a
+  symbol_id: 0x7bd5bd1e
+  symbol_id: 0xe94c47da
+  symbol_id: 0xcc2f10f4
+  symbol_id: 0x87954e04
+  symbol_id: 0xcd9d934f
+  symbol_id: 0x6efa546f
+  symbol_id: 0x23f7ba3f
+  symbol_id: 0x75c34533
+  symbol_id: 0x817e893f
+  symbol_id: 0x01d746af
+  symbol_id: 0xca790885
+  symbol_id: 0xf95afe4d
+  symbol_id: 0xdb3875ea
+  symbol_id: 0x347ca344
+  symbol_id: 0x76e3ff24
+  symbol_id: 0x26602f9c
+  symbol_id: 0x80f1cf36
+  symbol_id: 0x3e32c80e
+  symbol_id: 0x5298aa39
+  symbol_id: 0x746a66fc
+  symbol_id: 0x47a334c4
+  symbol_id: 0xebf4b11f
+  symbol_id: 0x5b1ea047
+  symbol_id: 0x129eb7ed
+  symbol_id: 0x63083569
+  symbol_id: 0x46f82598
+  symbol_id: 0x7babe2df
+  symbol_id: 0x73476ba5
+  symbol_id: 0xea677002
+  symbol_id: 0x3a5255b8
+  symbol_id: 0xa3a6c885
+  symbol_id: 0x7efd1cdd
+  symbol_id: 0x010ff5f2
+  symbol_id: 0xe3bb3be3
+  symbol_id: 0xdf924e64
+  symbol_id: 0xf245d4a3
+  symbol_id: 0x74b9825e
+  symbol_id: 0xd672e937
+  symbol_id: 0xa5f1f300
+  symbol_id: 0x7874d435
+  symbol_id: 0xc1db2428
+  symbol_id: 0x09a111a4
+  symbol_id: 0x9ff710d8
+  symbol_id: 0xee9e2392
+  symbol_id: 0xf9e10bbf
+  symbol_id: 0x335e7054
+  symbol_id: 0x64c84a6a
+  symbol_id: 0x56e8b9af
+  symbol_id: 0x88943e29
+  symbol_id: 0x1060f5aa
+  symbol_id: 0x66da9aca
+  symbol_id: 0xe97034af
+  symbol_id: 0xdb78f816
+  symbol_id: 0x6db91312
+  symbol_id: 0x9d19ea38
+  symbol_id: 0xd3165b8d
+  symbol_id: 0x1de2050f
+  symbol_id: 0x1c57a05b
+  symbol_id: 0xdf2d2827
+  symbol_id: 0x70f1b87e
+  symbol_id: 0xe064ac65
+  symbol_id: 0xafc169af
+  symbol_id: 0xcaf40f72
+  symbol_id: 0x2c5baba3
+  symbol_id: 0x1ddc201b
+  symbol_id: 0x53470eba
+  symbol_id: 0x15a8f184
+  symbol_id: 0x2557404e
+  symbol_id: 0xb896e3f6
+  symbol_id: 0x2b891310
+  symbol_id: 0x61c1ff20
+  symbol_id: 0x4eed247b
+  symbol_id: 0xaf6dd949
+  symbol_id: 0x724a2dbc
+  symbol_id: 0x6f655086
+  symbol_id: 0x4efc82d3
+  symbol_id: 0xe30985db
+  symbol_id: 0x03aa8fb1
+  symbol_id: 0x87f1cde5
+  symbol_id: 0x2783e7a2
+  symbol_id: 0xffbb06ae
+  symbol_id: 0xb3ed4cf9
+  symbol_id: 0x9f86f628
+  symbol_id: 0x22bd6642
+  symbol_id: 0x040ec563
+  symbol_id: 0xa5f70021
+  symbol_id: 0xc8acd38c
+  symbol_id: 0x1dfbf9ac
+  symbol_id: 0x91810af1
+  symbol_id: 0x47a4997d
+  symbol_id: 0x92f8c9de
+  symbol_id: 0x3ac6d939
+  symbol_id: 0x07a9cbd5
+  symbol_id: 0xb5a3b911
+  symbol_id: 0x479aa5f7
+  symbol_id: 0x96a6352b
+  symbol_id: 0x49293097
+  symbol_id: 0x0ba13d85
+  symbol_id: 0x479db511
+  symbol_id: 0x603dcc7d
+  symbol_id: 0x89d01efd
+  symbol_id: 0xf680e61c
+  symbol_id: 0x4cfc63ca
+  symbol_id: 0x4b5b4262
+  symbol_id: 0xded7271b
+  symbol_id: 0x41a72ad5
+  symbol_id: 0x6c942f5c
+  symbol_id: 0xe29f2fd9
+  symbol_id: 0x8b8ae791
+  symbol_id: 0x9d90da6e
+  symbol_id: 0x6793e03f
+  symbol_id: 0x17112d4d
+  symbol_id: 0x6337b091
+  symbol_id: 0x4fc5d8fb
+  symbol_id: 0x45dc2e90
+  symbol_id: 0xa75780cd
+  symbol_id: 0x6a69f7a3
+  symbol_id: 0x3a48fbc1
+  symbol_id: 0x690bf184
+  symbol_id: 0x420b07ce
+  symbol_id: 0xdc28d30d
+  symbol_id: 0x38c74e33
+  symbol_id: 0xcbeef20f
+  symbol_id: 0x10e977be
+  symbol_id: 0x4d1e5aba
+  symbol_id: 0x057c7766
+  symbol_id: 0x8d43f7e0
+  symbol_id: 0xe595f8f9
+  symbol_id: 0xdc9a73c7
+  symbol_id: 0xafa216a9
+  symbol_id: 0xdb2427ba
+  symbol_id: 0xf7e48028
+  symbol_id: 0x34126b3d
+  symbol_id: 0x28bdd181
+  symbol_id: 0xd9bec400
+  symbol_id: 0xb35f76db
+  symbol_id: 0x430bd907
+  symbol_id: 0x535df772
+  symbol_id: 0xafd4e12a
+  symbol_id: 0x6393f50b
+  symbol_id: 0xc1f3d46d
+  symbol_id: 0xe3f918cc
+  symbol_id: 0xfdfe6acd
+  symbol_id: 0xb4013554
+  symbol_id: 0x3a80078d
+  symbol_id: 0x4e3336f3
+  symbol_id: 0x085ad43c
+  symbol_id: 0xc37b6db0
+  symbol_id: 0xa676022e
+  symbol_id: 0x577da3d6
+  symbol_id: 0xf00cbe99
+  symbol_id: 0x36fb0a8e
+  symbol_id: 0x45993ba3
+  symbol_id: 0xf29639bc
+  symbol_id: 0x431cc4ee
+  symbol_id: 0x56eb7c27
+  symbol_id: 0x72b8a9cf
+  symbol_id: 0x41303eac
+  symbol_id: 0x73fde903
+  symbol_id: 0x55970cc0
+  symbol_id: 0x914d1355
+  symbol_id: 0x3f068dc8
+  symbol_id: 0x2a48bf7d
+  symbol_id: 0xe3a7489a
+  symbol_id: 0xf7c2da07
+  symbol_id: 0x1141e9bb
+  symbol_id: 0xf263b97f
+  symbol_id: 0xa2452368
+  symbol_id: 0x2b453adc
+  symbol_id: 0xd5276fa4
+  symbol_id: 0x98379aaf
+  symbol_id: 0xe68925b8
+  symbol_id: 0x6e3bb1cf
+  symbol_id: 0x0166be18
+  symbol_id: 0xc5953732
+  symbol_id: 0x1d4d84d0
+  symbol_id: 0x07b6ac89
+  symbol_id: 0x44371196
+  symbol_id: 0x55017671
+  symbol_id: 0x257c4bb9
+  symbol_id: 0x8aca43ec
+  symbol_id: 0x29a11d8a
+  symbol_id: 0x208b66fa
+  symbol_id: 0x4a440f54
+  symbol_id: 0x62009211
+  symbol_id: 0x6a35982c
+  symbol_id: 0xe0752d30
+  symbol_id: 0x5609670c
+  symbol_id: 0xe614bbc1
+  symbol_id: 0x07c5a76f
+  symbol_id: 0x55574d11
+  symbol_id: 0x7809a362
+  symbol_id: 0x91762fff
+  symbol_id: 0x7a4705f8
+  symbol_id: 0x0655a230
+  symbol_id: 0x9ec67057
+  symbol_id: 0x768e674d
+  symbol_id: 0x16832084
+  symbol_id: 0xd216a3ee
+  symbol_id: 0xf7f0de2c
+  symbol_id: 0x939642a4
+  symbol_id: 0x0c4a872a
+  symbol_id: 0xc4cf0ef3
+  symbol_id: 0x616a1571
+  symbol_id: 0x4b2c6a92
+  symbol_id: 0x7d0d7b3f
+  symbol_id: 0xef62271a
+  symbol_id: 0x243936f1
+  symbol_id: 0x04e4f57e
+  symbol_id: 0xb04d8b58
+  symbol_id: 0xd7d29ff4
+  symbol_id: 0xdb99fd00
+  symbol_id: 0xf7de9a97
+  symbol_id: 0x6356c7e1
+  symbol_id: 0x233d8b34
+  symbol_id: 0xa5905957
+  symbol_id: 0x17dfc6db
+  symbol_id: 0xb42422d5
+  symbol_id: 0xb3d70eab
+  symbol_id: 0x0b48afa1
+  symbol_id: 0x48420da9
+  symbol_id: 0x192bbbd5
+  symbol_id: 0xadc13d20
+  symbol_id: 0xc93c7d6d
+  symbol_id: 0x9d00b8f0
+  symbol_id: 0x5e9397c4
+  symbol_id: 0xfd6e4093
+  symbol_id: 0xf11256cf
+  symbol_id: 0x6c4603a3
+  symbol_id: 0x4053abff
+  symbol_id: 0x1baec33d
+  symbol_id: 0x1a7f4cf6
+  symbol_id: 0x44c5f919
+  symbol_id: 0x8f1b1c1e
+  symbol_id: 0xd6290b85
+  symbol_id: 0x3e4ab4f6
+  symbol_id: 0xa3b41867
+  symbol_id: 0x40034e11
+  symbol_id: 0x6e62463e
+  symbol_id: 0x81449840
+  symbol_id: 0x611114e0
+  symbol_id: 0x76eb11ee
+  symbol_id: 0x1fb410b2
+  symbol_id: 0x123e41ea
+  symbol_id: 0x6682daab
+  symbol_id: 0x24dfaeb0
+  symbol_id: 0xd5b05c65
+  symbol_id: 0xebecb2ce
+  symbol_id: 0x6740fa4e
+  symbol_id: 0xf94ce10d
+  symbol_id: 0x45d21f87
+  symbol_id: 0x83371e9e
+  symbol_id: 0x8bd49e8e
+  symbol_id: 0x5d2af80b
+  symbol_id: 0xf6f47b2e
+  symbol_id: 0xede4c5f2
+  symbol_id: 0xa23fdad4
+  symbol_id: 0x41d29e07
+  symbol_id: 0x0b1353da
+  symbol_id: 0x7edcea8d
+  symbol_id: 0x72c43156
+  symbol_id: 0x61e95c07
+  symbol_id: 0x7c212080
+  symbol_id: 0x1ea5d323
+  symbol_id: 0xc1a482d8
+  symbol_id: 0x9c17d92b
+  symbol_id: 0x0d22882d
+  symbol_id: 0xb51338de
+  symbol_id: 0xc463ba81
+  symbol_id: 0x88e9b222
+  symbol_id: 0x097e467e
+  symbol_id: 0xfad1d9f5
+  symbol_id: 0xeccbc3c1
+  symbol_id: 0xbd2d27dc
+  symbol_id: 0xe41b0c78
+  symbol_id: 0x13f466b7
+  symbol_id: 0xe3e24295
+  symbol_id: 0xaedef3a2
+  symbol_id: 0xde725472
+  symbol_id: 0xd90a9a58
+  symbol_id: 0xbf64b0b6
+  symbol_id: 0xb25ca194
+  symbol_id: 0x53bf1227
+  symbol_id: 0x36ed91b2
+  symbol_id: 0x2614daf2
+  symbol_id: 0x33e2d3a7
+  symbol_id: 0x0ff9bdf0
+  symbol_id: 0xb407a86b
+  symbol_id: 0x290327a5
+  symbol_id: 0x671862a7
+  symbol_id: 0x415dd5e7
+  symbol_id: 0xd7ca6cc8
+  symbol_id: 0x2bb177b4
+  symbol_id: 0x40bb3f78
+  symbol_id: 0x0f807f10
+  symbol_id: 0xe48752ef
+  symbol_id: 0x4c24a4be
+  symbol_id: 0x5d194c5c
+  symbol_id: 0x7765e85b
+  symbol_id: 0xb7214df9
+  symbol_id: 0x2720fa46
+  symbol_id: 0x9f6c2b96
+  symbol_id: 0x28eb5989
+  symbol_id: 0xbe8d73f2
+  symbol_id: 0xaf658447
+  symbol_id: 0xe56edb7a
+  symbol_id: 0xcac6b03d
+  symbol_id: 0x4a5f5242
+  symbol_id: 0x08cd7e9d
+  symbol_id: 0x9e97904b
+  symbol_id: 0x615c3dcf
+  symbol_id: 0xc6a28b4a
+  symbol_id: 0x9b0cc890
+  symbol_id: 0xa01b20ce
+  symbol_id: 0x73c83ef4
+  symbol_id: 0x46515de8
+  symbol_id: 0x7b07c7f1
+  symbol_id: 0x968833a5
+  symbol_id: 0x09f2fded
+  symbol_id: 0x23097c08
+  symbol_id: 0xe3ee70ae
+  symbol_id: 0xcce6f612
+  symbol_id: 0xcd824552
+  symbol_id: 0x16809a5a
+  symbol_id: 0xc1ba0eb6
+  symbol_id: 0x13c17b96
+  symbol_id: 0xebcd0234
+  symbol_id: 0xa3af7947
+  symbol_id: 0x86527a4e
+  symbol_id: 0x33f9278c
+  symbol_id: 0x2e343246
+  symbol_id: 0x9c240ef1
+  symbol_id: 0x505f4289
+  symbol_id: 0xd5431a65
+  symbol_id: 0xb288a9fe
+  symbol_id: 0xf89a975f
+  symbol_id: 0x528da532
+  symbol_id: 0x530ad17d
+  symbol_id: 0x6e0b473c
+  symbol_id: 0xbebf7d98
+  symbol_id: 0x6935b08b
+  symbol_id: 0xd595bd2c
+  symbol_id: 0xfdb48c6a
+  symbol_id: 0xbff39e0e
+  symbol_id: 0xae7d043c
+  symbol_id: 0x3663ade6
+  symbol_id: 0x8df3721b
+  symbol_id: 0x20dbced6
+  symbol_id: 0x5c1ee0c5
+  symbol_id: 0x2d244867
+  symbol_id: 0xc6c9353c
+  symbol_id: 0xd738b678
+  symbol_id: 0x2a9c6616
+  symbol_id: 0x4785a3dd
+  symbol_id: 0x25f13dbe
+  symbol_id: 0xf6faffcb
+  symbol_id: 0x5cf60b10
+  symbol_id: 0x61c82fb5
+  symbol_id: 0x53fba77d
+  symbol_id: 0xe479b209
+  symbol_id: 0xa9225bf8
+  symbol_id: 0x33c527ab
+  symbol_id: 0x5012fcd8
+  symbol_id: 0x67bab494
+  symbol_id: 0x96d1c9c4
+  symbol_id: 0x42428033
+  symbol_id: 0x005c7625
+  symbol_id: 0xf3accb84
+  symbol_id: 0xef7737f8
+  symbol_id: 0x9247dcb1
+  symbol_id: 0xfd04e27a
+  symbol_id: 0xa124d3e0
+  symbol_id: 0x9c5d1bdd
+  symbol_id: 0x5c9fa956
+  symbol_id: 0xca50936b
+  symbol_id: 0x431c5bf5
+  symbol_id: 0x9f47ed94
+  symbol_id: 0x0bf2f5bb
+  symbol_id: 0x5c382938
+  symbol_id: 0xd593b3ef
+  symbol_id: 0x1cc3aec5
+  symbol_id: 0xb12728da
+  symbol_id: 0x9dbd7b92
+  symbol_id: 0x42312ccc
+  symbol_id: 0xf432d1c9
+  symbol_id: 0xf586d5b6
+  symbol_id: 0x1f554c2a
+  symbol_id: 0x93a4717b
+  symbol_id: 0x5ecff02f
+  symbol_id: 0xe3ce1f52
+  symbol_id: 0x3272ce60
+  symbol_id: 0x4d900d32
+  symbol_id: 0xe6eff83f
+  symbol_id: 0xe172d11a
+  symbol_id: 0x0daa4221
+  symbol_id: 0xfcf37c56
+  symbol_id: 0x9eec9c93
+  symbol_id: 0xf9ce3d98
+  symbol_id: 0x494c2e7a
+  symbol_id: 0x79670e34
+  symbol_id: 0x4f81fc38
+  symbol_id: 0xff623c2f
+  symbol_id: 0x7fef736f
+  symbol_id: 0x9fe60f0c
+  symbol_id: 0x83b45f32
+  symbol_id: 0x1df03151
+  symbol_id: 0x88586647
+  symbol_id: 0xdb6662e8
+  symbol_id: 0x64c2fe7a
+  symbol_id: 0x4b67a5dc
+  symbol_id: 0x3684a257
+  symbol_id: 0x7ee652cd
+  symbol_id: 0x0bf41403
+  symbol_id: 0x4dca46cc
+  symbol_id: 0xf83fbd26
+  symbol_id: 0x18fde973
+  symbol_id: 0xfb6a92a8
+  symbol_id: 0xa94ef105
+  symbol_id: 0x0e1f9e23
+  symbol_id: 0x61ea12b8
+  symbol_id: 0x1bfed9f9
+  symbol_id: 0x27757c9a
+  symbol_id: 0xb832c560
+  symbol_id: 0x96b60e0b
+  symbol_id: 0x3431d426
+  symbol_id: 0x8c174a7d
+  symbol_id: 0xe44dacb1
+  symbol_id: 0x5612c9d1
+  symbol_id: 0xa77effd1
+  symbol_id: 0xb7624cbd
+  symbol_id: 0x29785770
+  symbol_id: 0x306a6019
+  symbol_id: 0xb1c564a3
+  symbol_id: 0xacfcb454
+  symbol_id: 0x17b175ff
+  symbol_id: 0x2a856841
+  symbol_id: 0x0b2ba11b
+  symbol_id: 0xe17999f4
+  symbol_id: 0x721b87b7
+  symbol_id: 0xacaadcc9
+  symbol_id: 0x5983841b
+  symbol_id: 0x7d499dab
+  symbol_id: 0xa09f7a4b
+  symbol_id: 0x574e7b58
+  symbol_id: 0xf2c39651
+  symbol_id: 0x93303c51
+  symbol_id: 0x7d069e91
+  symbol_id: 0x0fa39b81
+  symbol_id: 0x92518ec5
+  symbol_id: 0x9792c22e
+  symbol_id: 0xcef5d79f
+  symbol_id: 0x91384eff
+  symbol_id: 0x3ef508a2
+  symbol_id: 0xfb1b8d64
+  symbol_id: 0x5858f827
+  symbol_id: 0xb1847a6f
+  symbol_id: 0x958d8cdb
+  symbol_id: 0xfde8086a
+  symbol_id: 0xbffefc2b
+  symbol_id: 0x3d83999a
+  symbol_id: 0xf7bca936
+  symbol_id: 0x6fe41dd1
+  symbol_id: 0x7945e8fa
+  symbol_id: 0x93333e39
+  symbol_id: 0x947bd437
+  symbol_id: 0xbdbb0c65
+  symbol_id: 0xa1325610
+  symbol_id: 0x3a4e20d6
+  symbol_id: 0x237634b3
+  symbol_id: 0xb5ed74f6
+  symbol_id: 0xedb34a44
+  symbol_id: 0xb841c45e
+  symbol_id: 0xaa3f6a65
+  symbol_id: 0xa2fe718f
+  symbol_id: 0xe828d15b
+  symbol_id: 0x4d31a413
+  symbol_id: 0xe7f6f975
+  symbol_id: 0x78accdce
+  symbol_id: 0x6d9f8b13
+  symbol_id: 0x709279fd
+  symbol_id: 0xdfd06b97
+  symbol_id: 0x69c3749b
+  symbol_id: 0x3d0fc76c
+  symbol_id: 0x8f7ad177
+  symbol_id: 0x08f4cbb0
+  symbol_id: 0x58e7556b
+  symbol_id: 0x2ecf85e9
+  symbol_id: 0x34a01a22
+  symbol_id: 0x6befbf23
+  symbol_id: 0x226cc38b
+  symbol_id: 0xeecc1529
+  symbol_id: 0xfeff2e7f
+  symbol_id: 0x2bc25325
+  symbol_id: 0x0119fc41
+  symbol_id: 0xd9f43028
+  symbol_id: 0x8a773cc3
+  symbol_id: 0x9545623c
+  symbol_id: 0x558490b1
+  symbol_id: 0x8af2b51e
+  symbol_id: 0xe31bb308
+  symbol_id: 0x6a6dc806
+  symbol_id: 0xa56348c9
+  symbol_id: 0x15f6cf54
+  symbol_id: 0xf8832088
+  symbol_id: 0x834b91de
+  symbol_id: 0x79a41c1c
+  symbol_id: 0x2e0ec34f
+  symbol_id: 0x4f428de5
+  symbol_id: 0x810f6abf
+  symbol_id: 0xcc8dcd0c
+  symbol_id: 0xcb4d15f3
+  symbol_id: 0x6a8145ff
+  symbol_id: 0xb0bf7fd6
+  symbol_id: 0x6911084f
+  symbol_id: 0x8068eeb3
+  symbol_id: 0xfdf83a19
+  symbol_id: 0x73ba3e80
+  symbol_id: 0xc4cbd22c
+  symbol_id: 0x18fb5d72
+  symbol_id: 0x77d40b1c
+  symbol_id: 0xdd24ab36
+  symbol_id: 0xce25d5be
+  symbol_id: 0x7443ed9a
+  symbol_id: 0x58dd6501
+  symbol_id: 0x1643e606
+  symbol_id: 0x4576397a
+  symbol_id: 0x7e705ab7
+  symbol_id: 0x7b03aae7
+  symbol_id: 0x92373f85
+  symbol_id: 0x104ffeec
+  symbol_id: 0x6d4f31c4
+  symbol_id: 0xcf61fd25
+  symbol_id: 0xe56422fc
+  symbol_id: 0xceea494c
+  symbol_id: 0x773b00db
+  symbol_id: 0x32248e2a
+  symbol_id: 0xe873a0cb
+  symbol_id: 0x101ec6c5
+  symbol_id: 0x5c33446d
+  symbol_id: 0x423dad0f
+  symbol_id: 0xc630c439
+  symbol_id: 0x3e69b303
+  symbol_id: 0x7f1a363f
+  symbol_id: 0x2c11fea4
+  symbol_id: 0x45e62871
+  symbol_id: 0x85a11e58
+  symbol_id: 0xb614ca1f
+  symbol_id: 0x2de60b3e
+  symbol_id: 0x9cf075c5
+  symbol_id: 0xf29865b1
+  symbol_id: 0xa785ee77
+  symbol_id: 0x41fdc249
+  symbol_id: 0x570f3032
+  symbol_id: 0xc42d0053
+  symbol_id: 0x20097074
+  symbol_id: 0x863777a0
+  symbol_id: 0xcac5a7d5
+  symbol_id: 0x2dc83a86
+  symbol_id: 0x961fbab2
+  symbol_id: 0x09f12012
+  symbol_id: 0xb3150ce0
+  symbol_id: 0x34912e21
+  symbol_id: 0x4b7a8fd7
+  symbol_id: 0xcd36f539
+  symbol_id: 0x748c1fd7
+  symbol_id: 0xaf461bff
+  symbol_id: 0x1e8a7e23
+  symbol_id: 0xfe3875f6
+  symbol_id: 0x60b5a917
+  symbol_id: 0x1dd402e6
+  symbol_id: 0x070d1e2a
+  symbol_id: 0xf63515c9
+  symbol_id: 0xf4fe0429
+  symbol_id: 0xb2f08341
+  symbol_id: 0x05576f29
+  symbol_id: 0x9f779ef7
+  symbol_id: 0xc53e6388
+  symbol_id: 0xd9e47a83
+  symbol_id: 0x3eb0f084
+  symbol_id: 0x832ab9cf
+  symbol_id: 0xaa8affb8
+  symbol_id: 0x11f903b1
+  symbol_id: 0x25e320a3
+  symbol_id: 0xcd81b300
+  symbol_id: 0x411e7a56
+  symbol_id: 0xcfcbb846
+  symbol_id: 0x1d7748c4
+  symbol_id: 0x7d9f4fa4
+  symbol_id: 0x82c6c454
+  symbol_id: 0xf9b36d15
+  symbol_id: 0xbade8646
+  symbol_id: 0x395b2a73
+  symbol_id: 0x4a5c5988
+  symbol_id: 0xb71e231c
+  symbol_id: 0xb05fc507
+  symbol_id: 0xe0cf8a85
+  symbol_id: 0x60184478
+  symbol_id: 0x1a0c7568
+  symbol_id: 0x46cd6685
+  symbol_id: 0xa6457550
+  symbol_id: 0xb894fcfc
+  symbol_id: 0x555d2f3e
+  symbol_id: 0x47c27595
+  symbol_id: 0x58127eb8
+  symbol_id: 0x0991fcbf
+  symbol_id: 0x693af5b0
+  symbol_id: 0x59d74b45
+  symbol_id: 0x99d57c12
+  symbol_id: 0x3cb4db49
+  symbol_id: 0x3a6f3fb2
+  symbol_id: 0x8b0b932d
+  symbol_id: 0x62726c6f
+  symbol_id: 0xdf21a7cc
+  symbol_id: 0xeea6bf23
+  symbol_id: 0x18752990
+  symbol_id: 0x448fc4e4
+  symbol_id: 0x121537db
+  symbol_id: 0x50605d97
+  symbol_id: 0xa5e991f6
+  symbol_id: 0x261c997e
+  symbol_id: 0x3b6248c1
+  symbol_id: 0x18bac297
+  symbol_id: 0x1a849f34
+  symbol_id: 0x3f328d3c
+  symbol_id: 0x69e37d02
+  symbol_id: 0xeda5c5b0
+  symbol_id: 0x3cd58ada
+  symbol_id: 0xad77fe31
+  symbol_id: 0x9d5d3918
+  symbol_id: 0x0b064224
+  symbol_id: 0xdacb8e65
+  symbol_id: 0xf04adbae
+  symbol_id: 0x0093f055
+  symbol_id: 0x5edd0d13
+  symbol_id: 0x8ffb9d8d
+  symbol_id: 0x7babd1c5
+  symbol_id: 0x43527efa
+  symbol_id: 0x51af6212
+  symbol_id: 0xa5be18ba
+  symbol_id: 0x0daed96e
+  symbol_id: 0x3bb904a5
+  symbol_id: 0xec4d6758
+  symbol_id: 0x33183ab6
+  symbol_id: 0x76b00d41
+  symbol_id: 0x9d9301cb
+  symbol_id: 0xef003404
+  symbol_id: 0x78daed28
+  symbol_id: 0x6d8ed263
+  symbol_id: 0x4bc6b114
+  symbol_id: 0x93751239
+  symbol_id: 0x70131d40
+  symbol_id: 0xda52fd4f
+  symbol_id: 0x86f03c84
+  symbol_id: 0x498fea3f
+  symbol_id: 0xf79a8829
+  symbol_id: 0xde470f79
+  symbol_id: 0xc5049f7c
+  symbol_id: 0x42fff08e
+  symbol_id: 0xe48123a4
+  symbol_id: 0x00b7ed82
+  symbol_id: 0xe8cacf26
+  symbol_id: 0x8db62b4f
+  symbol_id: 0xe9c87fab
+  symbol_id: 0xdf07959f
+  symbol_id: 0xafe46ece
+  symbol_id: 0xe445d254
+  symbol_id: 0x64e2c288
+  symbol_id: 0xdc2af26c
+  symbol_id: 0x1362c5b0
+  symbol_id: 0x0e614ab0
+  symbol_id: 0xa68c0f10
+  symbol_id: 0xdcf22716
+  symbol_id: 0x4f980315
+  symbol_id: 0xe1489e0c
+  symbol_id: 0x37776872
+  symbol_id: 0xfc735654
+  symbol_id: 0xea695d5b
+  symbol_id: 0xd82141b7
+  symbol_id: 0xe520cb67
+  symbol_id: 0x8184b548
+  symbol_id: 0xe423541d
+  symbol_id: 0xfb7cdd24
+  symbol_id: 0xc8703937
+  symbol_id: 0x61b56472
+  symbol_id: 0xf32898c6
+  symbol_id: 0x332635cd
+  symbol_id: 0xf06625d6
+  symbol_id: 0x259ffe94
+  symbol_id: 0x95c75a1c
+  symbol_id: 0xe3a367fe
+  symbol_id: 0xc6fb73b4
+  symbol_id: 0xb6cfb459
+  symbol_id: 0xc6a5dbd8
+  symbol_id: 0x54aac8cb
+  symbol_id: 0x6de9ac69
+  symbol_id: 0x57a9a36a
+  symbol_id: 0x21d8d29a
+  symbol_id: 0x2e04cb9c
+  symbol_id: 0x306b5ff7
+  symbol_id: 0x2fce8f78
+  symbol_id: 0xec7035fd
+  symbol_id: 0xa9d55136
+  symbol_id: 0x75b174bb
+  symbol_id: 0x506628ab
+  symbol_id: 0x0d3c7607
+  symbol_id: 0xd3845a12
+  symbol_id: 0x6f146fe1
+  symbol_id: 0x678bb5ba
+  symbol_id: 0xf1ec5ef2
+  symbol_id: 0xaa072f92
+  symbol_id: 0x9620eac1
+  symbol_id: 0x5cc4ca5b
+  symbol_id: 0x607a7f0a
+  symbol_id: 0xca10f06e
+  symbol_id: 0x26324a1f
+  symbol_id: 0x4ade2774
+  symbol_id: 0x704b9aae
+  symbol_id: 0x4a3c01db
+  symbol_id: 0x463f3244
+  symbol_id: 0x750e1421
+  symbol_id: 0x66a766d7
+  symbol_id: 0xc44d61e6
+  symbol_id: 0x1ddb60ad
+  symbol_id: 0x0ae2ee16
+  symbol_id: 0x9fe99d05
+  symbol_id: 0x82ce823f
+  symbol_id: 0x474d211c
+  symbol_id: 0xe2d7542c
+  symbol_id: 0x988719fa
+  symbol_id: 0x732a182b
+  symbol_id: 0xe7584e1c
+  symbol_id: 0x0d418d38
+  symbol_id: 0x50a83025
+  symbol_id: 0xe6918e09
+  symbol_id: 0x4d4fd1cc
+  symbol_id: 0xace80c56
+  symbol_id: 0xa0ce156c
+  symbol_id: 0x46787271
+  symbol_id: 0xbacc3060
+  symbol_id: 0x1b0699af
+  symbol_id: 0xaa012cfc
+  symbol_id: 0x44d76aa5
+  symbol_id: 0x6b0eca0a
+  symbol_id: 0xef0379f8
+  symbol_id: 0x08e2cf92
+  symbol_id: 0x6d73379a
+  symbol_id: 0x0c310ebd
+  symbol_id: 0x9b384a49
+  symbol_id: 0x828646be
+  symbol_id: 0x4756cfec
+  symbol_id: 0x8b7beb3b
+  symbol_id: 0xf18e312d
+  symbol_id: 0xf68497fa
+  symbol_id: 0xb6603d58
+  symbol_id: 0xbbfc3b7e
+  symbol_id: 0xdb161c79
+  symbol_id: 0x1d442b97
+  symbol_id: 0x31457bed
+  symbol_id: 0x62c13726
+  symbol_id: 0xafbca760
+  symbol_id: 0x586a06d1
+  symbol_id: 0xcb34ca12
+  symbol_id: 0x2f768c2b
+  symbol_id: 0xc34a5545
+  symbol_id: 0x00a5fe5e
+  symbol_id: 0x6377ba8b
+  symbol_id: 0xe160b6f0
+  symbol_id: 0x37c5c41a
+  symbol_id: 0x78341cfd
+  symbol_id: 0xac62c748
+  symbol_id: 0xa2bd1edf
+  symbol_id: 0xb6da564f
+  symbol_id: 0x41c8d09b
+  symbol_id: 0xe2ad11db
+  symbol_id: 0xcac93aff
+  symbol_id: 0x43873fea
+  symbol_id: 0x65023f2f
+  symbol_id: 0xd5097f8d
+  symbol_id: 0x6d3764d2
+  symbol_id: 0xecc3ea35
+  symbol_id: 0x2122908b
+  symbol_id: 0x68d68809
+  symbol_id: 0x76e879b6
+  symbol_id: 0xae5bbde9
+  symbol_id: 0x20d2ceb3
+  symbol_id: 0xab37fc55
+  symbol_id: 0x49b95a49
+  symbol_id: 0xb194c4c5
+  symbol_id: 0x61f8c8ae
+  symbol_id: 0x0e92ee53
+  symbol_id: 0xb0c197a3
+  symbol_id: 0x761f292f
+  symbol_id: 0xef7ad117
+  symbol_id: 0x4568ff8f
+  symbol_id: 0xe918e2ec
+  symbol_id: 0xd94bc301
+  symbol_id: 0x3fc5ffc9
+  symbol_id: 0xa3915d70
+  symbol_id: 0xf01f02ea
+  symbol_id: 0xe471b8d5
+  symbol_id: 0x84628825
+  symbol_id: 0x8d0ce77d
+  symbol_id: 0x50ab483c
+  symbol_id: 0xe7ef7059
+  symbol_id: 0xf2d006c8
+  symbol_id: 0x85a885d0
+  symbol_id: 0x878b3583
+  symbol_id: 0x1220ff14
+  symbol_id: 0x203fab27
+  symbol_id: 0xbe3d9b79
+  symbol_id: 0x30004003
+  symbol_id: 0xb91d18b6
+  symbol_id: 0xb3b18fc4
+  symbol_id: 0x40d6a8c5
+  symbol_id: 0x931fa088
+  symbol_id: 0xaaf6a826
+  symbol_id: 0xff2bccb8
+  symbol_id: 0xd7ceb15f
+  symbol_id: 0x923147c1
+  symbol_id: 0x5b6bc3a9
+  symbol_id: 0x823654f5
+  symbol_id: 0x42ad45a3
+  symbol_id: 0x0a5014f0
+  symbol_id: 0x8712dd01
+  symbol_id: 0x87db1583
+  symbol_id: 0x3e70324d
+  symbol_id: 0xc8a7ac69
+  symbol_id: 0x5ef059ce
+  symbol_id: 0x3204c8e5
+  symbol_id: 0x547e3912
+  symbol_id: 0x39e68fed
+  symbol_id: 0xefb9e5a3
+  symbol_id: 0x3fe0157c
+  symbol_id: 0x6f25dd05
+  symbol_id: 0xa5c71571
+  symbol_id: 0xfa3284c7
+  symbol_id: 0x69721329
+  symbol_id: 0xd9d2bcff
+  symbol_id: 0x09ba106b
+  symbol_id: 0xf9580976
+  symbol_id: 0x18e67da1
+  symbol_id: 0x75a2f39e
+  symbol_id: 0x7b5c377f
+  symbol_id: 0x6436c788
+  symbol_id: 0x609a86da
+  symbol_id: 0x08a49528
+  symbol_id: 0xa03a7d43
+  symbol_id: 0xc9f46bb2
+  symbol_id: 0x334a964e
+  symbol_id: 0xc23168f8
+  symbol_id: 0x602cdd1a
+  symbol_id: 0xf8de19a9
+  symbol_id: 0x5a3916cb
+  symbol_id: 0xb7ba0c6d
+  symbol_id: 0xaf7a4dba
+  symbol_id: 0x743ea36d
+  symbol_id: 0xc09d36c9
+  symbol_id: 0x42dbeb24
+  symbol_id: 0xf57e8f65
+  symbol_id: 0x18343f2d
+  symbol_id: 0xef8c9bf3
+  symbol_id: 0xaf8a4962
+  symbol_id: 0x48239fa6
+  symbol_id: 0xbcf87a84
+  symbol_id: 0xf4acf4ca
+  symbol_id: 0x9772d1c0
+  symbol_id: 0x9600f350
+  symbol_id: 0x4971cb68
+  symbol_id: 0x78b22997
+  symbol_id: 0x10bc6dec
+  symbol_id: 0x64c2c28c
+  symbol_id: 0xbf086359
+  symbol_id: 0xef6e6795
+  symbol_id: 0xb2d6f207
+  symbol_id: 0xd8f3ca82
+  symbol_id: 0xff315556
+  symbol_id: 0x6d72699f
+  symbol_id: 0x8a660b52
+  symbol_id: 0xd162e616
+  symbol_id: 0x2e809f1d
+  symbol_id: 0x0713b56c
+  symbol_id: 0x83005ddd
+  symbol_id: 0x5c535ca7
+  symbol_id: 0x88a08d67
+  symbol_id: 0xe2682879
+  symbol_id: 0xdffbb8bf
+  symbol_id: 0xf3cb5921
+  symbol_id: 0xcb194ec9
+  symbol_id: 0x009c40ce
+  symbol_id: 0x02473ce7
+  symbol_id: 0x65f99dde
+  symbol_id: 0x2497fb4d
+  symbol_id: 0x37548d14
+  symbol_id: 0x6aa1a617
+  symbol_id: 0xeac9b507
+  symbol_id: 0xbc210559
+  symbol_id: 0x7d5529d3
+  symbol_id: 0xe10cee18
+  symbol_id: 0x477e3555
+  symbol_id: 0xa70e8cd2
+  symbol_id: 0x5b327cd6
+  symbol_id: 0xe91cdbb3
+  symbol_id: 0x4f1ffabc
+  symbol_id: 0x1a51f8cc
+  symbol_id: 0x20843be8
+  symbol_id: 0xc9969dba
+  symbol_id: 0xbc3bf362
+  symbol_id: 0x53fe1441
+  symbol_id: 0xb882f62e
+  symbol_id: 0x79821b1f
+  symbol_id: 0xdf489de4
+  symbol_id: 0xd853ca80
+  symbol_id: 0x7c261545
+  symbol_id: 0xf497de36
+  symbol_id: 0xf44f6a18
+  symbol_id: 0xfc85c168
+  symbol_id: 0xb6af2644
+  symbol_id: 0x96901dfb
+  symbol_id: 0x9420cc1a
+  symbol_id: 0x84164213
+  symbol_id: 0x3f61ffe2
+  symbol_id: 0xab99b62a
+  symbol_id: 0x4648ac0b
+  symbol_id: 0x97d65f20
+  symbol_id: 0xf84b240e
+  symbol_id: 0xb63e140d
+  symbol_id: 0xd171b921
+  symbol_id: 0xaf704e67
+  symbol_id: 0x2168939c
+  symbol_id: 0x83ada50d
+  symbol_id: 0xe693da5d
+  symbol_id: 0x61e806d8
+  symbol_id: 0xcf1808d5
+  symbol_id: 0x01b711f3
+  symbol_id: 0xb0e141a3
+  symbol_id: 0xd6e3f912
+  symbol_id: 0x640280c1
+  symbol_id: 0xb3b57b4d
+  symbol_id: 0x5693f2df
+  symbol_id: 0xb029aed0
+  symbol_id: 0xa762593e
+  symbol_id: 0x602bd335
+  symbol_id: 0x500c47a8
+  symbol_id: 0x83d25041
+  symbol_id: 0xd30e8a4f
+  symbol_id: 0x4cdcc3eb
+  symbol_id: 0x6ca5668b
+  symbol_id: 0x75193e21
+  symbol_id: 0x4669920b
+  symbol_id: 0x871c7865
+  symbol_id: 0x63cd463e
+  symbol_id: 0xcfdf218e
+  symbol_id: 0xc8829f05
+  symbol_id: 0xa0761c18
+  symbol_id: 0x97cac723
+  symbol_id: 0xeb7cbe24
+  symbol_id: 0x21c4acad
+  symbol_id: 0x41c78e43
+  symbol_id: 0x92b4cc77
+  symbol_id: 0xbaf13f25
+  symbol_id: 0x18ca83c0
+  symbol_id: 0x7828fbe8
+  symbol_id: 0xa38931c2
+  symbol_id: 0xd4d9e302
+  symbol_id: 0xad45b87e
+  symbol_id: 0x3c981610
+  symbol_id: 0x439247e9
+  symbol_id: 0x2ae6e435
+  symbol_id: 0x8cec743c
+  symbol_id: 0x688df919
+  symbol_id: 0xa6329dcf
+  symbol_id: 0xf7106e83
+  symbol_id: 0x8edf3483
+  symbol_id: 0x47089d1d
+  symbol_id: 0x03c03057
+  symbol_id: 0x711ae667
+  symbol_id: 0x0e60919e
+  symbol_id: 0x50073fd4
+  symbol_id: 0x424f8411
+  symbol_id: 0x489f1d79
+  symbol_id: 0xaca88f90
+  symbol_id: 0x5e807f50
+  symbol_id: 0x355ed0c4
+  symbol_id: 0xb29f9799
+  symbol_id: 0x7e6c8474
+  symbol_id: 0xeaaac8d4
+  symbol_id: 0x69bac57e
+  symbol_id: 0xa5eaf571
+  symbol_id: 0x7c570dc6
+  symbol_id: 0x993e379e
+  symbol_id: 0x86a88093
+  symbol_id: 0xfbb6649f
+  symbol_id: 0xa3514d5f
+  symbol_id: 0xd20e014a
+  symbol_id: 0xf09e1ca4
+  symbol_id: 0xcef4ad72
+  symbol_id: 0xa5dcf915
+  symbol_id: 0xf2768ed7
+  symbol_id: 0xfbeae533
+  symbol_id: 0xdee25d92
+  symbol_id: 0xe251c99f
+  symbol_id: 0xac3dec68
+  symbol_id: 0xf9bb4624
+  symbol_id: 0x60b70858
+  symbol_id: 0x7f488498
+  symbol_id: 0x09cd7a68
+  symbol_id: 0x294249c0
+  symbol_id: 0x6a3cf7b4
+  symbol_id: 0x510c7445
+  symbol_id: 0xe4af6f7e
+  symbol_id: 0x49029965
+  symbol_id: 0x06e1bebe
+  symbol_id: 0x18433655
+  symbol_id: 0x46e678fc
+  symbol_id: 0x5aa4c3e8
+  symbol_id: 0xbd7c5367
+  symbol_id: 0x7a0cc0b9
+  symbol_id: 0xc0fb25e9
+  symbol_id: 0x0fc80d91
+  symbol_id: 0xc453a761
+  symbol_id: 0xf86dd29a
+  symbol_id: 0xbc8c457a
+  symbol_id: 0xc8c5af1c
+  symbol_id: 0xdeecf7a4
+  symbol_id: 0xeba70df6
+  symbol_id: 0xcf6df527
+  symbol_id: 0x00374dfe
+  symbol_id: 0xb77c96c5
+  symbol_id: 0xc769d5d0
+  symbol_id: 0x3374bea7
+  symbol_id: 0xd6cb7d0d
+  symbol_id: 0x5414d325
+  symbol_id: 0x26711163
+  symbol_id: 0x8480d9c1
+  symbol_id: 0xb7d7d836
+  symbol_id: 0xacb3d1d3
+  symbol_id: 0xd8dbec6e
+  symbol_id: 0x95eaf556
+  symbol_id: 0xf2d017ff
+  symbol_id: 0x520c1997
+  symbol_id: 0x2d3715da
+  symbol_id: 0x7ff45ec2
+  symbol_id: 0xc447be59
+  symbol_id: 0xc6d0ad0a
+  symbol_id: 0x9403cfad
+  symbol_id: 0x1cf86989
+  symbol_id: 0xccb0f5d6
+  symbol_id: 0xd634ca29
+  symbol_id: 0xd672b08d
+  symbol_id: 0xb61718ed
+  symbol_id: 0x1eee53db
+  symbol_id: 0xd9184490
+  symbol_id: 0xe6ba30b7
+  symbol_id: 0xa09651b4
+  symbol_id: 0x67de90c8
+  symbol_id: 0x5f6a1554
+  symbol_id: 0x3beebbde
+  symbol_id: 0x24064426
+  symbol_id: 0x82786c66
+  symbol_id: 0xd772fde3
+  symbol_id: 0x1abdc14f
+  symbol_id: 0xb9c34cbd
+  symbol_id: 0x0bd7f049
+  symbol_id: 0xf54175ef
+  symbol_id: 0x8814eddf
+  symbol_id: 0x72f35f22
+  symbol_id: 0x679bf165
+  symbol_id: 0xde4c4481
+  symbol_id: 0x09aecad0
+  symbol_id: 0xca999587
+  symbol_id: 0x761c5685
+  symbol_id: 0x4e505a21
+  symbol_id: 0xa3814535
+  symbol_id: 0xb49a04fc
+  symbol_id: 0x5d44dba7
+  symbol_id: 0x3af91fad
+  symbol_id: 0x0b55af16
+  symbol_id: 0x3c7e214c
+  symbol_id: 0x3a41b660
+  symbol_id: 0x21702781
+  symbol_id: 0x4d72c929
+  symbol_id: 0xf701e854
+  symbol_id: 0x18c171b8
+  symbol_id: 0xd040ed1b
+  symbol_id: 0x8fb4b5f6
+  symbol_id: 0x6bb4e80d
+  symbol_id: 0x979cde5c
+  symbol_id: 0xcdba3a55
+  symbol_id: 0x977cc973
+  symbol_id: 0x49201db3
+  symbol_id: 0xacc709b0
+  symbol_id: 0x2b2698f0
+  symbol_id: 0xb2553250
+  symbol_id: 0xb389e6a5
+  symbol_id: 0x3a8604de
+  symbol_id: 0x61a552c6
+  symbol_id: 0x5a9da856
+  symbol_id: 0x1d853176
+  symbol_id: 0x1cb0de6c
+  symbol_id: 0xe0e9f920
+  symbol_id: 0xfba0da8c
+  symbol_id: 0x181f78de
+  symbol_id: 0xbe6da55e
+  symbol_id: 0x95792096
+  symbol_id: 0x510c8347
+  symbol_id: 0xe4dd862f
+  symbol_id: 0x3a1cd883
+  symbol_id: 0xa1f151cb
+  symbol_id: 0x10425c32
+  symbol_id: 0xbd9a7739
+  symbol_id: 0x82c387e4
+  symbol_id: 0xb5b2d835
+  symbol_id: 0x226328f4
+  symbol_id: 0x0b5d5f1c
+  symbol_id: 0x4ffac461
+  symbol_id: 0xad8bab96
+  symbol_id: 0x528ef002
+  symbol_id: 0x90bf9007
+  symbol_id: 0xd76a9123
+  symbol_id: 0xc0d4821a
+  symbol_id: 0xaea1564a
+  symbol_id: 0x0d1fc920
+  symbol_id: 0xd34c6466
+  symbol_id: 0x51c471d6
+  symbol_id: 0x6458d26a
+  symbol_id: 0x2e876bee
+  symbol_id: 0x1996f188
+  symbol_id: 0xbc2fc882
+  symbol_id: 0x70bd48bd
+  symbol_id: 0x5e553962
+  symbol_id: 0x98c69e3e
+  symbol_id: 0x16569be2
+  symbol_id: 0x1f81c0c0
+  symbol_id: 0xcebb0cec
+  symbol_id: 0x27ae2b17
+  symbol_id: 0x49ee3f1e
+  symbol_id: 0x646a1dc6
+  symbol_id: 0xc40c1fbe
+  symbol_id: 0x96f2cda8
+  symbol_id: 0x1162870c
+  symbol_id: 0x310e729f
+  symbol_id: 0xd13a60aa
+  symbol_id: 0x37d3a115
+  symbol_id: 0x95bdba0c
+  symbol_id: 0xd2c9c20b
+  symbol_id: 0x86bec7f5
+  symbol_id: 0x5e358f2a
+  symbol_id: 0xa36916c0
+  symbol_id: 0x1fa93c73
+  symbol_id: 0x76783663
+  symbol_id: 0xeae629ca
+  symbol_id: 0x012046d8
+  symbol_id: 0xc539a531
+  symbol_id: 0x362bc08c
+  symbol_id: 0xe594310a
+  symbol_id: 0xbb3cf175
+  symbol_id: 0x9d74edbd
+  symbol_id: 0x52491b14
+  symbol_id: 0x195f2f00
+  symbol_id: 0x19979235
+  symbol_id: 0x077e4244
+  symbol_id: 0x226f126d
+  symbol_id: 0x4af16e82
+  symbol_id: 0x84b34184
+  symbol_id: 0x8adf461b
+  symbol_id: 0xe523da53
+  symbol_id: 0xea321133
+  symbol_id: 0xc084dab6
+  symbol_id: 0x092baf69
+  symbol_id: 0xcc0dd52b
+  symbol_id: 0xe7756398
+  symbol_id: 0x62aba3ce
+  symbol_id: 0x4c74830f
+  symbol_id: 0xcacfeb0e
+  symbol_id: 0xc5a6985e
+  symbol_id: 0xd1c0f0bd
+  symbol_id: 0x89901311
+  symbol_id: 0xf744d7a6
+  symbol_id: 0x835f3bf3
+  symbol_id: 0xdc30e4d6
+  symbol_id: 0xcb1ad79b
+  symbol_id: 0xb78983c5
+  symbol_id: 0xe6192860
+  symbol_id: 0xf40ec9b3
+  symbol_id: 0x2e5cd908
+  symbol_id: 0xe00b32cb
+  symbol_id: 0xae700ddc
+  symbol_id: 0xa304d3f1
+  symbol_id: 0xcd31ef47
+  symbol_id: 0x00dd3231
+  symbol_id: 0x4cb4702d
+  symbol_id: 0x0b067d4b
+  symbol_id: 0xc0201123
+  symbol_id: 0x2a322266
+  symbol_id: 0x57e1cd01
+  symbol_id: 0xf0581d11
+  symbol_id: 0x35eb35db
+  symbol_id: 0x120ecf6c
+  symbol_id: 0xabd39b51
+  symbol_id: 0x6dfac71b
+  symbol_id: 0xb0184730
+  symbol_id: 0x427cedc9
+  symbol_id: 0x11fbb9ce
+  symbol_id: 0xd4a0f991
+  symbol_id: 0x864cb6b1
+  symbol_id: 0x55c7afec
+  symbol_id: 0xf737e767
+  symbol_id: 0x6ad917a1
+  symbol_id: 0xdeb1861d
+  symbol_id: 0x7661d150
+  symbol_id: 0x6a712ee1
+  symbol_id: 0xe594a242
+  symbol_id: 0x3afeb397
+  symbol_id: 0xfbbe101f
+  symbol_id: 0xbf7946b8
+  symbol_id: 0xa4530154
+  symbol_id: 0x67137f1b
+  symbol_id: 0x25d3d88b
+  symbol_id: 0xea922c0b
+  symbol_id: 0xab52b3bb
+  symbol_id: 0x681114f4
+  symbol_id: 0x28d17942
+  symbol_id: 0xef91c650
+  symbol_id: 0xac82dbbd
+  symbol_id: 0xae106411
+  symbol_id: 0x53eb107b
+  symbol_id: 0x9f7a08f8
+  symbol_id: 0xd5dbc767
+  symbol_id: 0x096781b3
+  symbol_id: 0x264769f1
+  symbol_id: 0x164e4899
+  symbol_id: 0xc507d6ff
+  symbol_id: 0xe0efe9cd
+  symbol_id: 0x23531f35
+  symbol_id: 0x6ebfe2e8
+  symbol_id: 0xedfd0ad5
+  symbol_id: 0x73b0a768
+  symbol_id: 0x7b64a27a
+  symbol_id: 0xe7a5b986
+  symbol_id: 0xb230dae9
+  symbol_id: 0x348f5f0f
+  symbol_id: 0x51bc5c83
+  symbol_id: 0x13abbd1d
+  symbol_id: 0xeab75311
+  symbol_id: 0x1b4335c7
+  symbol_id: 0x6e1a6ca2
+  symbol_id: 0xd3a66342
+  symbol_id: 0x3fe4f18a
+  symbol_id: 0x80d2df6b
+  symbol_id: 0x676ffcb7
+  symbol_id: 0xd84e3ad6
+  symbol_id: 0xcf431833
+  symbol_id: 0xd7dd26cb
+  symbol_id: 0xb9d93634
+  symbol_id: 0x29b56c73
+  symbol_id: 0xd473cf33
+  symbol_id: 0xed606d98
+  symbol_id: 0xfc8c52c1
+  symbol_id: 0xb47c5ffe
+  symbol_id: 0xdded4dcd
+  symbol_id: 0x9dea2dda
+  symbol_id: 0x8ea00f54
+  symbol_id: 0x0f9d7b5e
+  symbol_id: 0x0be8da0e
+  symbol_id: 0x921644f5
+  symbol_id: 0xfc46d423
+  symbol_id: 0xbeb0dfc5
+  symbol_id: 0xea38ad01
+  symbol_id: 0x21a2a1f8
+  symbol_id: 0x35fe6c72
+  symbol_id: 0x9a3e308a
+  symbol_id: 0x77a1b544
+  symbol_id: 0x39939627
+  symbol_id: 0xf2cb6869
+  symbol_id: 0xeb39173a
+  symbol_id: 0xf24e74f6
+  symbol_id: 0x57eddd34
+  symbol_id: 0x4d603739
+  symbol_id: 0xea093ba2
+  symbol_id: 0x3dd13fcb
+  symbol_id: 0xdac5537c
+  symbol_id: 0xd8781f70
+  symbol_id: 0x1a528d17
+  symbol_id: 0x71be4162
+  symbol_id: 0x4f5fc64f
+  symbol_id: 0xceaadfeb
+  symbol_id: 0x65b51b54
+  symbol_id: 0x974fe999
+  symbol_id: 0x12cb2316
+  symbol_id: 0x72704652
+  symbol_id: 0x23b4653d
+  symbol_id: 0x69e0ff72
+  symbol_id: 0xb7a102cf
+  symbol_id: 0xd6da7e29
+  symbol_id: 0xeccdc9a3
+  symbol_id: 0xc49a22c5
+  symbol_id: 0xc44643cc
+  symbol_id: 0xa9645df3
+  symbol_id: 0xa955119c
+  symbol_id: 0xca216232
+  symbol_id: 0x61ab1398
+  symbol_id: 0xa7a30fa3
+  symbol_id: 0x6abd4acd
+  symbol_id: 0xd0f84332
+  symbol_id: 0x72003f5f
+  symbol_id: 0x291a7ba1
+  symbol_id: 0xb3c81ca9
+  symbol_id: 0xc85ca106
+  symbol_id: 0x9c1662dc
+  symbol_id: 0x9e7fc289
+  symbol_id: 0x0e419b40
+  symbol_id: 0xb2bfcc0c
+  symbol_id: 0x06192615
+  symbol_id: 0x9e3deb49
+  symbol_id: 0xf77ff2ff
+  symbol_id: 0xa84b7a9c
+  symbol_id: 0x1c488fd9
+  symbol_id: 0x4a75c450
+  symbol_id: 0xc8e5adc6
+  symbol_id: 0xa0a33b62
+  symbol_id: 0xc80b76b2
+  symbol_id: 0xc97591d1
+  symbol_id: 0xbf627c6e
+  symbol_id: 0x690c64c9
+  symbol_id: 0xfe061fe6
+  symbol_id: 0xcda0bdad
+  symbol_id: 0x3c28dcec
+  symbol_id: 0x1ff124cb
+  symbol_id: 0x80b6d91d
+  symbol_id: 0x229b68f6
+  symbol_id: 0xa9a292c3
+  symbol_id: 0x9a074cae
+  symbol_id: 0xc4e53e95
+  symbol_id: 0xba1a33c8
+  symbol_id: 0xe2dc88d9
+  symbol_id: 0x3c85cae0
+  symbol_id: 0x4ce62869
+  symbol_id: 0x6d77f512
+  symbol_id: 0xb3cbf3c8
+  symbol_id: 0x7a871d1c
+  symbol_id: 0x91718d34
+  symbol_id: 0x65e5fa26
+  symbol_id: 0x2a71a0e1
+  symbol_id: 0x4a8d54b6
+  symbol_id: 0xac4c3a4f
+  symbol_id: 0x6a6dce96
+  symbol_id: 0x37cd3bf4
+  symbol_id: 0xe062f201
+  symbol_id: 0x9f11f727
+  symbol_id: 0xb29100f2
+  symbol_id: 0xef9eb644
+  symbol_id: 0xf91cb171
+  symbol_id: 0x00d9abe7
+  symbol_id: 0xb63845e5
+  symbol_id: 0x5332f89b
+  symbol_id: 0xdfc28761
+  symbol_id: 0x75df86d2
+  symbol_id: 0x2427d483
+  symbol_id: 0x69f839d5
+  symbol_id: 0x9ff364ff
+  symbol_id: 0x7c9d3fd1
+  symbol_id: 0x48a58872
+  symbol_id: 0x3b996551
+  symbol_id: 0x6e1fafc8
+  symbol_id: 0xdac60909
+  symbol_id: 0x39dbce1e
+  symbol_id: 0x5a11b234
+  symbol_id: 0x8a96e88d
+  symbol_id: 0xbd2ef94c
+  symbol_id: 0x580bab0e
+  symbol_id: 0x48318742
+  symbol_id: 0xa11919c2
+  symbol_id: 0x25ef9f7a
+  symbol_id: 0xd6393164
+  symbol_id: 0x6c7fb432
+  symbol_id: 0x93003994
+  symbol_id: 0xe8a9c1dd
+  symbol_id: 0xd7368737
+  symbol_id: 0xd60d382d
+  symbol_id: 0xf187a948
+  symbol_id: 0xcbc9d8c5
+  symbol_id: 0xe71b4f1a
+  symbol_id: 0x3ad97d2a
+  symbol_id: 0x82573917
+  symbol_id: 0x879dc57b
+  symbol_id: 0x4adcbe96
+  symbol_id: 0xee305d87
+  symbol_id: 0x3d3dfc90
+  symbol_id: 0x76052ea8
+  symbol_id: 0x754e3185
+  symbol_id: 0x72598679
+  symbol_id: 0xd2c17be4
+  symbol_id: 0xc5d5f65e
+  symbol_id: 0x6ca4b892
+  symbol_id: 0x5e64011a
+  symbol_id: 0xe1ca0d15
+  symbol_id: 0x3452fd74
+  symbol_id: 0x62ee7f8a
+  symbol_id: 0x7d1f0700
+  symbol_id: 0xbfeba170
+  symbol_id: 0x76cb6cc8
+  symbol_id: 0x822d6c04
+  symbol_id: 0xde57ee2c
+  symbol_id: 0x0de8247b
+  symbol_id: 0xc594b8ee
+  symbol_id: 0x5821013d
+  symbol_id: 0xd96da8c9
+  symbol_id: 0xffe637ce
+  symbol_id: 0xd84adb21
+  symbol_id: 0xed719736
+  symbol_id: 0x2b1e3d59
+  symbol_id: 0x495f0223
+  symbol_id: 0x7fbd0d58
+  symbol_id: 0x06f2ea68
+  symbol_id: 0xc8e117f2
+  symbol_id: 0x430bfeda
+  symbol_id: 0x0522e13b
+  symbol_id: 0x961eb280
+  symbol_id: 0xfa04a306
+  symbol_id: 0xb14ae124
+  symbol_id: 0x4cf39275
+  symbol_id: 0x83dc639c
+  symbol_id: 0x5f9864aa
+  symbol_id: 0x966a7c42
+  symbol_id: 0xab62b21c
+  symbol_id: 0x4f627b39
+  symbol_id: 0xda163e44
+  symbol_id: 0xb375007c
+  symbol_id: 0x9bc8eb84
+  symbol_id: 0x0356dc1d
+  symbol_id: 0x53eb2602
+  symbol_id: 0xcce97787
+  symbol_id: 0x4bc5faef
+  symbol_id: 0xa06e08e9
+  symbol_id: 0x98bdb018
+  symbol_id: 0xd080858f
+  symbol_id: 0x7d559fc7
+  symbol_id: 0xaa581068
+  symbol_id: 0xf97edf1a
+  symbol_id: 0x5f149483
+  symbol_id: 0x243de63b
+  symbol_id: 0xb34a2312
+  symbol_id: 0x5929756d
+  symbol_id: 0x71db8ae7
+  symbol_id: 0x8cc3df48
+  symbol_id: 0x6947cf2b
+  symbol_id: 0x93bf161f
+  symbol_id: 0x8be7c055
+  symbol_id: 0x20349fb1
+  symbol_id: 0x79d8f672
+  symbol_id: 0x197789dd
+  symbol_id: 0xc5fc7c45
+  symbol_id: 0x76381968
+  symbol_id: 0xf5bd4fae
+  symbol_id: 0x1b144a7e
+  symbol_id: 0x77e3018c
+  symbol_id: 0x3d10b5b8
+  symbol_id: 0x10e14b48
+  symbol_id: 0x406ac226
+  symbol_id: 0xe5567adc
+  symbol_id: 0x85d79e5f
+  symbol_id: 0xf9f01d9c
+  symbol_id: 0x5a70b6f0
+  symbol_id: 0xca337eb1
+  symbol_id: 0x9e7d8d76
+  symbol_id: 0x610edc84
+  symbol_id: 0xd89255c2
+  symbol_id: 0x962b6a68
+  symbol_id: 0x33bbeca6
+  symbol_id: 0x4e0ae383
+  symbol_id: 0x81619b01
+  symbol_id: 0xfbce2cbb
+  symbol_id: 0xdf9606b3
+  symbol_id: 0xd6ea4255
+  symbol_id: 0xa3ab8c31
+  symbol_id: 0x8daa61e5
+  symbol_id: 0x7511322a
+  symbol_id: 0xd32e348e
+  symbol_id: 0xdd1168f7
+  symbol_id: 0x210f422e
+  symbol_id: 0x288a6554
+  symbol_id: 0x715991ed
+  symbol_id: 0x30c8b794
+  symbol_id: 0x0c359f27
+  symbol_id: 0x85c5ebd6
+  symbol_id: 0xf95c9d54
+  symbol_id: 0x7d541a30
+  symbol_id: 0x84e3d2de
+  symbol_id: 0x0b134421
+  symbol_id: 0x659b0e63
+  symbol_id: 0x86c85b12
+  symbol_id: 0x930f8d3c
+  symbol_id: 0x28f60fc9
+  symbol_id: 0xd72ba404
+  symbol_id: 0x62250f4d
+  symbol_id: 0x1b33e29e
+  symbol_id: 0x39e2d50e
+  symbol_id: 0x4eff590a
+  symbol_id: 0xe94841a9
+  symbol_id: 0x8df717be
+  symbol_id: 0xec748846
+  symbol_id: 0x39d208ed
+  symbol_id: 0xf2a168f3
+  symbol_id: 0xfe2b3cad
+  symbol_id: 0xc53260d9
+  symbol_id: 0x6b87121d
+  symbol_id: 0xbfab4c85
+  symbol_id: 0xff000a81
+  symbol_id: 0xc4e41b54
+  symbol_id: 0x993bc120
+  symbol_id: 0xee97aa9a
+  symbol_id: 0xe3c0c0b8
+  symbol_id: 0xf45e469e
+  symbol_id: 0x2a6fe72b
+  symbol_id: 0xe9f2bcfa
+  symbol_id: 0x56500b2f
+  symbol_id: 0x29ba3af0
+  symbol_id: 0xd9e53ee8
+  symbol_id: 0x0a0bd813
+  symbol_id: 0x231cf427
+  symbol_id: 0x969a0d74
+  symbol_id: 0x131ff67b
+  symbol_id: 0xbbbf4eda
+  symbol_id: 0xb6965ce8
+  symbol_id: 0x0c67e2fe
+  symbol_id: 0xc6155c06
+  symbol_id: 0xce563c27
+  symbol_id: 0x788ad464
+  symbol_id: 0x28b04407
+  symbol_id: 0x474c5b56
+  symbol_id: 0xb1a9cc86
+  symbol_id: 0x9b056e94
+  symbol_id: 0x2061f0ca
+  symbol_id: 0xd878ab56
+  symbol_id: 0xb1469ae6
+  symbol_id: 0x3afbe534
+  symbol_id: 0x2cc0b276
+  symbol_id: 0x0e19b467
+  symbol_id: 0x7d95ddab
+  symbol_id: 0xa49d0aea
+  symbol_id: 0x1c25c16f
+  symbol_id: 0xd6cf566d
+  symbol_id: 0xec1b66f9
+  symbol_id: 0xac913841
+  symbol_id: 0x42676517
+  symbol_id: 0xc3e46036
+  symbol_id: 0xcd2564d1
+  symbol_id: 0x2968f72a
+  symbol_id: 0x0a2b21ec
+  symbol_id: 0xbdd0f4c6
+  symbol_id: 0xe5e28fcd
+  symbol_id: 0xff08526f
+  symbol_id: 0xc81e9eb3
+  symbol_id: 0x237a3562
+  symbol_id: 0x1d1f6717
+  symbol_id: 0x20c19184
+  symbol_id: 0xef67fe16
+  symbol_id: 0x9eca665b
+  symbol_id: 0x3ea8bbd7
+  symbol_id: 0x1257590d
+  symbol_id: 0x833374c8
+  symbol_id: 0x717034d4
+  symbol_id: 0xc27e8b2f
+  symbol_id: 0x3464cb44
+  symbol_id: 0xd04a0a9e
+  symbol_id: 0x7c49856a
+  symbol_id: 0xcf0e0e01
+  symbol_id: 0xbf39e9a5
+  symbol_id: 0x4d4a15b0
+  symbol_id: 0xfc625698
+  symbol_id: 0x62173925
+  symbol_id: 0x053cd2eb
+  symbol_id: 0xd1471c13
+  symbol_id: 0x3359f049
+  symbol_id: 0xcb0ffe5b
+  symbol_id: 0xa79ba8cc
+  symbol_id: 0x23b67585
+  symbol_id: 0x1e81ded9
+  symbol_id: 0xfca661a6
+  symbol_id: 0x0e52d725
+  symbol_id: 0x91309df9
+  symbol_id: 0xfdca589d
+  symbol_id: 0xb50ff8bd
+  symbol_id: 0x70dea96c
+  symbol_id: 0x4ab4582b
+  symbol_id: 0x094a72c8
+  symbol_id: 0x15691536
+  symbol_id: 0x403155fc
+  symbol_id: 0xbb92068e
+  symbol_id: 0x81600265
+  symbol_id: 0x57a4fa38
+  symbol_id: 0x551c18d1
+  symbol_id: 0xeb9b8f1f
+  symbol_id: 0x4d669c6d
+  symbol_id: 0x6715c595
+  symbol_id: 0x9f75c77b
+  symbol_id: 0xd36400de
+  symbol_id: 0x2c08983d
+  symbol_id: 0x81bdacc5
+  symbol_id: 0x554af0ba
+  symbol_id: 0xbb54c900
+  symbol_id: 0x50e383fc
+  symbol_id: 0x823aeba5
+  symbol_id: 0xde96cb2f
+  symbol_id: 0x171eca8a
+  symbol_id: 0x79187969
+  symbol_id: 0x52864a7e
+  symbol_id: 0xccc25fc1
+  symbol_id: 0xb771d13e
+  symbol_id: 0x53d11a8d
+  symbol_id: 0x5489a975
+  symbol_id: 0xd8f17b20
+  symbol_id: 0xf94e1278
+  symbol_id: 0xf1e399f5
+  symbol_id: 0x02f83230
+  symbol_id: 0x36a5b3df
+  symbol_id: 0x7225f00d
+  symbol_id: 0xe2150034
+  symbol_id: 0xb0ae7663
+  symbol_id: 0xf97f370a
+  symbol_id: 0xc3377ccb
+  symbol_id: 0x0ba701fe
+  symbol_id: 0x846def34
+  symbol_id: 0xa40a487c
+  symbol_id: 0x58e45beb
+  symbol_id: 0x69f4e209
+  symbol_id: 0xdd8fe9d8
+  symbol_id: 0x256655e9
+  symbol_id: 0x54a91370
+  symbol_id: 0x5cc133b3
+  symbol_id: 0x0a4d757e
+  symbol_id: 0x02a3be97
+  symbol_id: 0xad3dd00c
+  symbol_id: 0x368d2cd0
+  symbol_id: 0xf68a36eb
+  symbol_id: 0xb5ca04ce
+  symbol_id: 0x203ce1d2
+  symbol_id: 0xa80f19b8
+  symbol_id: 0x5f9a95c1
+  symbol_id: 0x01ee66df
+  symbol_id: 0x5e671464
+  symbol_id: 0x0d94ff56
+  symbol_id: 0xc28b6d25
+  symbol_id: 0xe97bc87b
+  symbol_id: 0x01ff0af3
+  symbol_id: 0x8ce0927a
+  symbol_id: 0x35ab75ba
+  symbol_id: 0x44b5caf9
+  symbol_id: 0x7f1735ac
+  symbol_id: 0x4ba4968c
+  symbol_id: 0xf666562b
+  symbol_id: 0xa5179b7b
+  symbol_id: 0xc1583575
+  symbol_id: 0x67daf3cf
+  symbol_id: 0xe5161e20
+  symbol_id: 0x31d27334
+  symbol_id: 0x2f800ec5
+  symbol_id: 0xd5cd30b1
+  symbol_id: 0x6c6752e7
+  symbol_id: 0x0e0e767c
+  symbol_id: 0x08912124
+  symbol_id: 0x094eac4e
+  symbol_id: 0xb4062816
+  symbol_id: 0xeac49112
+  symbol_id: 0x641371dc
+  symbol_id: 0x5a345cb5
+  symbol_id: 0x1df78429
+  symbol_id: 0x9e546df6
+  symbol_id: 0x95b2cfdd
+  symbol_id: 0xaa3567d8
+  symbol_id: 0x5240d831
+  symbol_id: 0xe509c61f
+  symbol_id: 0xfd30a35a
+  symbol_id: 0x7921841c
+  symbol_id: 0x0b0c0190
+  symbol_id: 0x34feac51
+  symbol_id: 0x87df61b4
+  symbol_id: 0x8abf96ef
+  symbol_id: 0x33035bf6
+  symbol_id: 0x47c790a6
+  symbol_id: 0x63999db6
+  symbol_id: 0xf58cd5f2
+  symbol_id: 0xa543c638
+  symbol_id: 0x63b7fc82
+  symbol_id: 0xf3d00c6b
+  symbol_id: 0xe27e32df
+  symbol_id: 0xd5dbd4f5
+  symbol_id: 0xad8f62c6
+  symbol_id: 0xe5fe5ba3
+  symbol_id: 0x6ef38ba9
+  symbol_id: 0xa7986ac9
+  symbol_id: 0x35986460
+  symbol_id: 0x73c97c25
+  symbol_id: 0xe85f8363
+  symbol_id: 0xc60abbd3
+  symbol_id: 0xb974f8ce
+  symbol_id: 0x489dfd09
+  symbol_id: 0x4059d2bb
+  symbol_id: 0x22bf9346
+  symbol_id: 0x56a85a70
+  symbol_id: 0x15de010f
+  symbol_id: 0xdb13d287
+  symbol_id: 0xd301890a
+  symbol_id: 0x2fe85fe8
+  symbol_id: 0xe10a358b
+  symbol_id: 0x09c64cb4
+  symbol_id: 0x4640865f
+  symbol_id: 0xf233a4f2
+  symbol_id: 0x5f8e5002
+  symbol_id: 0x4bb20cbc
+  symbol_id: 0x0d97ed87
+  symbol_id: 0x0aa80467
+  symbol_id: 0x92dcd9e0
+  symbol_id: 0xde18ea43
+  symbol_id: 0xd14b81b5
+  symbol_id: 0x2d6a4342
+  symbol_id: 0xa7f66a97
+  symbol_id: 0xbb6293b4
+  symbol_id: 0x12485bef
+  symbol_id: 0xe26f4d10
+  symbol_id: 0x262ddd16
+  symbol_id: 0x706732e6
+  symbol_id: 0x52c8a093
+  symbol_id: 0x4624f3d3
+  symbol_id: 0xe6f275cc
+  symbol_id: 0x90259097
+  symbol_id: 0x4b0b944c
+  symbol_id: 0x9b2f909d
+  symbol_id: 0xc927ca5d
+  symbol_id: 0xe3ab91c3
+  symbol_id: 0x72797495
+  symbol_id: 0x8b918cf2
+  symbol_id: 0x0343af6f
+  symbol_id: 0x92e87d67
+  symbol_id: 0x9134577e
+  symbol_id: 0xb6e3e4d8
+  symbol_id: 0xcbc295b7
+  symbol_id: 0x52122b68
+  symbol_id: 0xd084c59b
+  symbol_id: 0x51d93b3b
+  symbol_id: 0x13f867b3
+  symbol_id: 0xad3c99f7
+  symbol_id: 0xb13c4e5f
+  symbol_id: 0x238f99e1
+  symbol_id: 0x366c7ecb
+  symbol_id: 0x033d3eaf
+  symbol_id: 0xd7455659
+  symbol_id: 0x07c1fefc
+  symbol_id: 0xfd8ee5e4
+  symbol_id: 0xdc3c497c
+  symbol_id: 0xc72fb978
+  symbol_id: 0x1938c508
+  symbol_id: 0xfc7749bc
+  symbol_id: 0x55a1ee95
+  symbol_id: 0x04c32c7c
+  symbol_id: 0x647c0881
+  symbol_id: 0x19e74e36
+  symbol_id: 0xdb9d4783
+  symbol_id: 0x4c5f0ec2
+  symbol_id: 0xb3e16eb2
+  symbol_id: 0xebc2af57
+  symbol_id: 0x79ee7b2e
+  symbol_id: 0xb6554d25
+  symbol_id: 0xa6333d46
+  symbol_id: 0x452b7360
+  symbol_id: 0xfa4aa1a6
+  symbol_id: 0x74bc0467
+  symbol_id: 0x01680af7
+  symbol_id: 0x799c3ec1
+  symbol_id: 0x34ba5507
+  symbol_id: 0x2ad163ea
+  symbol_id: 0x02599b70
+  symbol_id: 0x21c2b40a
+  symbol_id: 0x1ed14221
+  symbol_id: 0xac41b920
+  symbol_id: 0xb64af32a
+  symbol_id: 0x48855bc6
+  symbol_id: 0x542963cf
+  symbol_id: 0x1da2d3da
+  symbol_id: 0x83a82ebe
+  symbol_id: 0xe85fa1f1
+  symbol_id: 0xe6df6df5
+  symbol_id: 0x0b165427
+  symbol_id: 0xd81e7ab3
+  symbol_id: 0x3b013a69
+  symbol_id: 0x0576df29
+  symbol_id: 0x7fca902b
+  symbol_id: 0x96346c6f
+  symbol_id: 0xce223563
+  symbol_id: 0x239ee8e4
+  symbol_id: 0x2b7b171a
+  symbol_id: 0xd4b90c71
+  symbol_id: 0xd698e2aa
+  symbol_id: 0x205d7c50
+  symbol_id: 0x5f40d4b5
+  symbol_id: 0x40956c37
+  symbol_id: 0x12692b2c
+  symbol_id: 0x61f2a638
+  symbol_id: 0xe37e861a
+  symbol_id: 0x714a49b3
+  symbol_id: 0xfb485c4b
+  symbol_id: 0x3a21dcc8
+  symbol_id: 0xd0ac64f7
+  symbol_id: 0xa1e3330b
+  symbol_id: 0x85ab844f
+  symbol_id: 0x90a9db6c
+  symbol_id: 0xde1fbc57
+  symbol_id: 0xa161f29a
+  symbol_id: 0x0bf6937c
+  symbol_id: 0x589e892d
+  symbol_id: 0x25bf4477
+  symbol_id: 0x5b8e8574
+  symbol_id: 0x5a62c5df
+  symbol_id: 0x20c43211
+  symbol_id: 0xcdcce9e8
+  symbol_id: 0x67a68b2f
+  symbol_id: 0x89e08852
+  symbol_id: 0xb9e84b8a
+  symbol_id: 0x97cf37b0
+  symbol_id: 0x0c505108
+  symbol_id: 0x8e520fee
+  symbol_id: 0x440b32de
+  symbol_id: 0x96ffcda6
+  symbol_id: 0x4b1a4683
+  symbol_id: 0xde9ec7ca
+  symbol_id: 0xa2a47944
+  symbol_id: 0x97ae66e9
+  symbol_id: 0x206986c6
+  symbol_id: 0xff3a9dde
+  symbol_id: 0x01a0cc1d
+  symbol_id: 0x32439a1e
+  symbol_id: 0x70cc5ef2
+  symbol_id: 0xf770e060
+  symbol_id: 0xfe156c9a
+  symbol_id: 0xf569682d
+  symbol_id: 0x0d9ec99a
+  symbol_id: 0x61438d3a
+  symbol_id: 0xdeeb802d
+  symbol_id: 0x78407718
+  symbol_id: 0x88d6fe86
+  symbol_id: 0x3afde7ec
+  symbol_id: 0x2bf23b7c
+  symbol_id: 0x97301de5
+  symbol_id: 0x8ed64fa4
+  symbol_id: 0x0764373d
+  symbol_id: 0x72706e55
+  symbol_id: 0x6bf4c5d2
+  symbol_id: 0x4a6566b1
+  symbol_id: 0x0e6117e6
+  symbol_id: 0x4b1cb09a
+  symbol_id: 0xbcab4e4a
+  symbol_id: 0xa77979a2
+  symbol_id: 0x56724950
+  symbol_id: 0x9218e37d
+  symbol_id: 0xc8de14e8
+  symbol_id: 0xaf5de696
+  symbol_id: 0x3a75a119
+  symbol_id: 0x5b50e567
+  symbol_id: 0xd4aa5b9b
+  symbol_id: 0x15a83ee8
+  symbol_id: 0x010f4f76
+  symbol_id: 0x33c681cd
+  symbol_id: 0x6903f6f8
+  symbol_id: 0x097ab520
+  symbol_id: 0xccb2ecff
+  symbol_id: 0xd0f2d980
+  symbol_id: 0xf6b9516e
+  symbol_id: 0xa2b20c15
+  symbol_id: 0x0ea63f59
+  symbol_id: 0x753fb351
+  symbol_id: 0x40c3a63b
+  symbol_id: 0xe896baa8
+  symbol_id: 0xa29138c1
+  symbol_id: 0x35d98638
+  symbol_id: 0xb5428827
+  symbol_id: 0x4e9c460b
+  symbol_id: 0x93a520bf
+  symbol_id: 0xc129555c
+  symbol_id: 0x50344150
+  symbol_id: 0xe6ef48b3
+  symbol_id: 0x4d059afe
+  symbol_id: 0x7a2b4593
+  symbol_id: 0xb08551d1
+  symbol_id: 0x5b0ad2ac
+  symbol_id: 0xc576d59e
+  symbol_id: 0x7c053015
+  symbol_id: 0xff9fcdce
+  symbol_id: 0xa34635ab
+  symbol_id: 0x9a669d84
+  symbol_id: 0x2b4cdf11
+  symbol_id: 0xaaf83339
+  symbol_id: 0xba8f1fa9
+  symbol_id: 0x0c87bbb9
+  symbol_id: 0x8b816c48
+  symbol_id: 0x0f9aedf8
+  symbol_id: 0x92b974cd
+  symbol_id: 0x57498e16
+  symbol_id: 0x888f691d
+  symbol_id: 0x36e39cf6
+  symbol_id: 0x6e37c2ad
+  symbol_id: 0x91f58d29
+  symbol_id: 0x7abe395b
+  symbol_id: 0xa8b058e5
+  symbol_id: 0x47264dbb
+  symbol_id: 0x35094803
+  symbol_id: 0x5bc8c0f2
+  symbol_id: 0xbf8a0e84
+  symbol_id: 0xd1e3c18c
+  symbol_id: 0x6e7e1dc0
+  symbol_id: 0x1ed62a9d
+  symbol_id: 0x5df7b359
+  symbol_id: 0xd6e5f7c7
+  symbol_id: 0x7695d1dd
+  symbol_id: 0xcf6046cf
+  symbol_id: 0x0c059f07
+  symbol_id: 0x3856a7af
+  symbol_id: 0x8a8e86c7
+  symbol_id: 0x69272f95
+  symbol_id: 0xb6582726
+  symbol_id: 0x0bc8f86d
+  symbol_id: 0x5463e7ba
+  symbol_id: 0x901f9d38
+  symbol_id: 0x655f3c71
+  symbol_id: 0xee877b72
+  symbol_id: 0xa7a43193
+  symbol_id: 0xb271f21a
+  symbol_id: 0xce4b7f5f
+  symbol_id: 0x3600a769
+  symbol_id: 0x7880f04e
+  symbol_id: 0x36be1a91
+  symbol_id: 0x46d775bd
+  symbol_id: 0xeeb338c3
+  symbol_id: 0xf9c7bcfb
+  symbol_id: 0xab957d64
+  symbol_id: 0x90abc5f6
+  symbol_id: 0x4c4e94fb
+  symbol_id: 0x1e3f62e1
+  symbol_id: 0x577e9a02
+  symbol_id: 0xc08bcc4a
+  symbol_id: 0x09b1d689
+  symbol_id: 0x7c6f39ac
+  symbol_id: 0xadafc9a7
+  symbol_id: 0x3c0cefc0
+  symbol_id: 0x7775cca4
+  symbol_id: 0xed639cd9
+  symbol_id: 0x6b6744b7
+  symbol_id: 0x92b1bbf5
+  symbol_id: 0xfc0bc82d
+  symbol_id: 0xd32940e1
+  symbol_id: 0x299f6192
+  symbol_id: 0xb7d7707e
+  symbol_id: 0xdb0692a6
+  symbol_id: 0xfafcdec5
+  symbol_id: 0x752a2b5b
+  symbol_id: 0xca559b71
+  symbol_id: 0xa5b63f73
+  symbol_id: 0xeb30d8ff
+  symbol_id: 0x98e3d9f3
+  symbol_id: 0xd1252dfa
+  symbol_id: 0xf3c9734f
+  symbol_id: 0x6c9a6915
+  symbol_id: 0x0dd13028
+  symbol_id: 0xfc46114a
+  symbol_id: 0x5dc64161
+  symbol_id: 0x841c985c
+  symbol_id: 0xbbf1a805
+  symbol_id: 0x994f412d
+  symbol_id: 0xd155689b
+  symbol_id: 0xf4be3f1a
+  symbol_id: 0x2f22f242
+  symbol_id: 0xe41962a4
+  symbol_id: 0xfb540e8c
+  symbol_id: 0xabe60a33
+  symbol_id: 0x7ae5eeb4
+  symbol_id: 0x317870a4
+  symbol_id: 0x573e2956
+  symbol_id: 0xe5bfa8c8
+  symbol_id: 0xd48a6769
+  symbol_id: 0xdd957eaf
+  symbol_id: 0x9c5fb17e
+  symbol_id: 0xedd83590
+  symbol_id: 0x840989b2
+  symbol_id: 0x57325158
+  symbol_id: 0x6cb15207
+  symbol_id: 0x12eaf956
+  symbol_id: 0xac4ecea5
+  symbol_id: 0xf907b0c3
+  symbol_id: 0x3492f7a1
+  symbol_id: 0x965a6298
+  symbol_id: 0xf1703ca1
+  symbol_id: 0xd0b1bfa2
+  symbol_id: 0xe9b86725
+  symbol_id: 0x99132839
+  symbol_id: 0x187982ec
+  symbol_id: 0x09f243ea
+  symbol_id: 0x0078753d
+  symbol_id: 0x6ae46898
+  symbol_id: 0xffba4af1
+  symbol_id: 0xa892e5b6
+  symbol_id: 0xe6ad1d16
+  symbol_id: 0xda3a8347
+  symbol_id: 0xb3e02cd2
+  symbol_id: 0xc99a7edf
+  symbol_id: 0xdcb8ed3c
+  symbol_id: 0x4ec1de19
+  symbol_id: 0xe5cfd7ac
+  symbol_id: 0xd0deb542
+  symbol_id: 0xe8233473
+  symbol_id: 0x710f1fc2
+  symbol_id: 0xaa54a71f
+  symbol_id: 0x5f554bc7
+  symbol_id: 0xd13969dd
+  symbol_id: 0xe2ee283f
+  symbol_id: 0xf5808a3e
+  symbol_id: 0x2762abc3
+  symbol_id: 0xe4261bef
+  symbol_id: 0x96c3de88
+  symbol_id: 0xdb8d0852
+  symbol_id: 0xc70d6b52
+  symbol_id: 0xae4cf762
+  symbol_id: 0x75e3f28c
+  symbol_id: 0x55404fce
+  symbol_id: 0xb08bb90e
+  symbol_id: 0xe3a20ca3
+  symbol_id: 0xbfb80a91
+  symbol_id: 0xa2cf4d2f
+  symbol_id: 0x97b03c2a
+  symbol_id: 0xe2a2feec
+  symbol_id: 0x904cad71
+  symbol_id: 0x2b7d2f8e
+  symbol_id: 0xf18ac584
+  symbol_id: 0x7ffe50b7
+  symbol_id: 0x3b69b427
+  symbol_id: 0x1d7e2299
+  symbol_id: 0x23e816b8
+  symbol_id: 0xd0e88c9a
+  symbol_id: 0x28fa142c
+  symbol_id: 0x425ac3ac
+  symbol_id: 0xc5b690ad
+  symbol_id: 0x2ffcac07
+  symbol_id: 0xd900ca4b
+  symbol_id: 0x223820a4
+  symbol_id: 0xea99ff15
+  symbol_id: 0xd47ccf76
+  symbol_id: 0xdfdcefce
+  symbol_id: 0x626fbbbf
+  symbol_id: 0xc9fc732f
+  symbol_id: 0x2599b67f
+  symbol_id: 0x6accd8d9
+  symbol_id: 0x18b0baef
+  symbol_id: 0x13f645c1
+  symbol_id: 0xb989e3a2
+  symbol_id: 0xd140139f
+  symbol_id: 0x009463a5
+  symbol_id: 0xeb70c9c5
+  symbol_id: 0xafa3c498
+  symbol_id: 0x083d52da
+  symbol_id: 0x79322cff
+  symbol_id: 0x587c77ce
+  symbol_id: 0x2c0250c2
+  symbol_id: 0xba971ed9
+  symbol_id: 0x49e6da07
+  symbol_id: 0x0f6bd9e0
+  symbol_id: 0xf0e5b5d3
+  symbol_id: 0x1e2996d8
+  symbol_id: 0x82aa3a94
+  symbol_id: 0x8702d0d4
+  symbol_id: 0xc341f711
+  symbol_id: 0x034915b6
+  symbol_id: 0x8057ec00
+  symbol_id: 0x18c86bd9
+  symbol_id: 0x7aaf6db0
+  symbol_id: 0xc78eb5e4
+  symbol_id: 0x33b86119
+  symbol_id: 0xf2e75ff5
+  symbol_id: 0x7995e8e7
+  symbol_id: 0xb3531c1a
+  symbol_id: 0xc38f05c2
+  symbol_id: 0x5cc3c221
+  symbol_id: 0x64b56ecc
+  symbol_id: 0x45690ea2
+  symbol_id: 0x0134874d
+  symbol_id: 0xe5a171eb
+  symbol_id: 0xc4a6e691
+  symbol_id: 0xcb48db3d
+  symbol_id: 0xfc6b4a0f
+  symbol_id: 0xf7f45910
+  symbol_id: 0x2b250c73
+  symbol_id: 0xf138bdf8
+  symbol_id: 0x6c5eefdd
+  symbol_id: 0x7a8e1c58
+  symbol_id: 0xbd678b0e
+  symbol_id: 0x400fac71
+  symbol_id: 0xdae2cdaf
+  symbol_id: 0x6bebb14a
+  symbol_id: 0xb50c088c
+  symbol_id: 0xae435551
+  symbol_id: 0x718fec30
+  symbol_id: 0x037d0335
+  symbol_id: 0x1f647fed
+  symbol_id: 0xb832d27e
+  symbol_id: 0x22b91009
+  symbol_id: 0x0b4ac64d
+  symbol_id: 0xf65b5ded
+  symbol_id: 0x4bd2ef24
+  symbol_id: 0x6d790d49
+  symbol_id: 0x68deb409
+  symbol_id: 0x3d2d0ba2
+  symbol_id: 0x0d57c53d
+  symbol_id: 0xab93a1ea
+  symbol_id: 0x4a57b168
+  symbol_id: 0x8a417941
+  symbol_id: 0xb04874d2
+  symbol_id: 0xcf2657d9
+  symbol_id: 0xecbd57a0
+  symbol_id: 0x472f65cb
+  symbol_id: 0x8fbdd27e
+  symbol_id: 0xbde576b8
+  symbol_id: 0xa6a7d8d9
+  symbol_id: 0x1f0cd029
+  symbol_id: 0xd90c83a1
+  symbol_id: 0x5234324e
+  symbol_id: 0xe5349379
+  symbol_id: 0xb7abbec5
+  symbol_id: 0x573a436c
+  symbol_id: 0x588ab3fd
+  symbol_id: 0x1389094c
+  symbol_id: 0x098d4189
+  symbol_id: 0x27bb2715
+  symbol_id: 0xa7187ebf
+  symbol_id: 0xff22568f
+  symbol_id: 0xe21486eb
+  symbol_id: 0x4fa53f59
+  symbol_id: 0xc98da8e7
+  symbol_id: 0xd5466b6c
+  symbol_id: 0x1d9e3d52
+  symbol_id: 0xec51c2ad
+  symbol_id: 0xd6791c20
+  symbol_id: 0xf53e2c51
+  symbol_id: 0xd9c6b1b6
+  symbol_id: 0x0a479d68
+  symbol_id: 0xcb9062ec
+  symbol_id: 0x13b62ed6
+  symbol_id: 0xa9a0aa89
+  symbol_id: 0x9b59d361
+  symbol_id: 0xe526da4a
+  symbol_id: 0x848785d9
+  symbol_id: 0x86f64a4f
+  symbol_id: 0x5f15326d
+  symbol_id: 0x9890ec36
+  symbol_id: 0x212b65fd
+  symbol_id: 0xccd2b090
+  symbol_id: 0xf4bf18ca
+  symbol_id: 0x1356df51
+  symbol_id: 0x49d4c5ab
+  symbol_id: 0x0600128d
+  symbol_id: 0x41d51d39
+  symbol_id: 0xb960d098
+  symbol_id: 0x16b0d5fb
+  symbol_id: 0x2505f076
+  symbol_id: 0xd422cc3f
+  symbol_id: 0x46d54518
+  symbol_id: 0xc0853146
+  symbol_id: 0xc33afed2
+  symbol_id: 0x8787c046
+  symbol_id: 0x7b96b33d
+  symbol_id: 0x4185c541
+  symbol_id: 0x1b260b5a
+  symbol_id: 0x8a560545
+  symbol_id: 0x48426434
+  symbol_id: 0x5048d4f5
+  symbol_id: 0x1348bb29
+  symbol_id: 0x4c959d92
+  symbol_id: 0x0d8d7b9b
+  symbol_id: 0x2ed07e93
+  symbol_id: 0x4a7f7e5b
+  symbol_id: 0x0c677c01
+  symbol_id: 0x16b02987
+  symbol_id: 0x34009364
+  symbol_id: 0xa9e6e5e8
+  symbol_id: 0x5a9ea9d7
+  symbol_id: 0xd0656c2a
+  symbol_id: 0xba2e4af9
+  symbol_id: 0xa0b728be
+  symbol_id: 0x5f99d405
+  symbol_id: 0x308067a6
+  symbol_id: 0xe375001c
+  symbol_id: 0xace15cad
+  symbol_id: 0x38dc8db4
+  symbol_id: 0xf8c5a501
+  symbol_id: 0x59e9d983
+  symbol_id: 0x0cac698d
+  symbol_id: 0x94e838b6
+  symbol_id: 0x670d0b05
+  symbol_id: 0x3801a3ca
+  symbol_id: 0x525885c3
+  symbol_id: 0x57bfd6ae
+  symbol_id: 0x747e1262
+  symbol_id: 0x2ef91e0b
+  symbol_id: 0x8de42ab3
+  symbol_id: 0xaefe0f11
+  symbol_id: 0x651ec6ad
+  symbol_id: 0x311de203
+  symbol_id: 0x4f6fdc7b
+  symbol_id: 0xb0883802
+  symbol_id: 0x9d81246b
+  symbol_id: 0x4e128020
+  symbol_id: 0xc38c9743
+  symbol_id: 0xbe2288e1
+  symbol_id: 0x7658ff57
+  symbol_id: 0xfeebbef1
+  symbol_id: 0x6ea804d3
+  symbol_id: 0x0e57bc00
+  symbol_id: 0x59eac7ab
+  symbol_id: 0xf0f67717
+  symbol_id: 0x6fbfd8e1
+  symbol_id: 0x0dfe64b8
+  symbol_id: 0x51b726c8
+  symbol_id: 0x5d9f16f7
+  symbol_id: 0xd82232b3
+  symbol_id: 0x69a31cde
+  symbol_id: 0xfbc28ac3
+  symbol_id: 0xe2f527ca
+  symbol_id: 0x51df4337
+  symbol_id: 0xa27d2f32
+  symbol_id: 0xa978b6c8
+  symbol_id: 0x54a3e32d
+  symbol_id: 0x3f2eb351
+  symbol_id: 0x9ff01046
+  symbol_id: 0x91c4aa40
+  symbol_id: 0xe78757f8
+  symbol_id: 0x1cc3ba5d
+  symbol_id: 0xf01aa08a
+  symbol_id: 0x7fe4fd87
+  symbol_id: 0x70b7d94b
+  symbol_id: 0x3b6d3ed0
+  symbol_id: 0xcda9ec73
+  symbol_id: 0x17025822
+  symbol_id: 0x8bd15036
+  symbol_id: 0x8069ccc3
+  symbol_id: 0xbe9b3f22
+  symbol_id: 0xb9cc9c24
+  symbol_id: 0xe4a41c47
+  symbol_id: 0x33f2cc93
+  symbol_id: 0x1773ebf6
+  symbol_id: 0xce26050a
+  symbol_id: 0x3af81f7d
+  symbol_id: 0xc8580afc
+  symbol_id: 0xbe89afca
+  symbol_id: 0x3b7c3802
+  symbol_id: 0x11e9361c
+  symbol_id: 0x98de519f
+  symbol_id: 0x49bf35a9
+  symbol_id: 0x9e8cce85
+  symbol_id: 0x6db0b862
+  symbol_id: 0x9119c06a
+  symbol_id: 0x167719fe
+  symbol_id: 0xf7b33934
+  symbol_id: 0x8b01dcb0
+  symbol_id: 0x92444a19
+  symbol_id: 0x3d72f095
+  symbol_id: 0x1d6c3f41
+  symbol_id: 0xa05d587d
+  symbol_id: 0x19d409c4
+  symbol_id: 0x427db265
+  symbol_id: 0x2ca7efbd
+  symbol_id: 0x94cd1327
+  symbol_id: 0x9a9fe23f
+  symbol_id: 0x6d0482ba
+  symbol_id: 0x858617be
+  symbol_id: 0x3a4d5745
+  symbol_id: 0xd76880e9
+  symbol_id: 0xe2df98e8
+  symbol_id: 0x9543b6f4
+  symbol_id: 0xe8ffa2f1
+  symbol_id: 0x57980a14
+  symbol_id: 0x48f7af32
+  symbol_id: 0x5654b5d3
+  symbol_id: 0x0cb650e6
+  symbol_id: 0xaf3c279d
+  symbol_id: 0x5f6348a0
+  symbol_id: 0x2a94838c
+  symbol_id: 0x1ff040fa
+  symbol_id: 0xfd2136f5
+  symbol_id: 0x2b8a2bbd
+  symbol_id: 0xae21a946
+  symbol_id: 0xf35c98a3
+  symbol_id: 0xef8e6384
+  symbol_id: 0xc74638be
+  symbol_id: 0xd5cd8e9b
+  symbol_id: 0x7ee897fe
+  symbol_id: 0x903baf1e
+  symbol_id: 0x9ff39d6a
+  symbol_id: 0x2dd89a0f
+  symbol_id: 0x6ea79777
+  symbol_id: 0x99beb7c8
+  symbol_id: 0x0ba86fe5
+  symbol_id: 0x90dbe313
+  symbol_id: 0x49d641ae
+  symbol_id: 0x9d83d0f8
+  symbol_id: 0x11744540
+  symbol_id: 0x4b6be7d2
+  symbol_id: 0x02f0a645
+  symbol_id: 0xaad93a6e
+  symbol_id: 0x820af79e
+  symbol_id: 0xf5a866d4
+  symbol_id: 0x9c6b68f2
+  symbol_id: 0x8ab89d74
+  symbol_id: 0x717f2784
+  symbol_id: 0x3bd21ada
+  symbol_id: 0x88d310ca
+  symbol_id: 0x596f41bc
+  symbol_id: 0xcf21a814
+  symbol_id: 0x81bdff8a
+  symbol_id: 0xeba98304
+  symbol_id: 0x48e94357
+  symbol_id: 0x6cbff317
+  symbol_id: 0xc7970f23
+  symbol_id: 0x5758ca8d
+  symbol_id: 0x8f687080
+  symbol_id: 0x128b55c8
+  symbol_id: 0xd2191311
+  symbol_id: 0xd4a13963
+  symbol_id: 0xa09bde3a
+  symbol_id: 0xaef6523a
+  symbol_id: 0xef97e722
+  symbol_id: 0x026b095a
+  symbol_id: 0xf76bbee4
+  symbol_id: 0x91de51a1
+  symbol_id: 0x007e9802
+  symbol_id: 0x419b2e18
+  symbol_id: 0x4ba4b7e9
+  symbol_id: 0xcc23e671
+  symbol_id: 0x1486d528
+  symbol_id: 0x872c1847
+  symbol_id: 0x4788e5d1
+  symbol_id: 0x03bbf55f
+  symbol_id: 0x49176259
+  symbol_id: 0xc155b6bb
+  symbol_id: 0xfcbea4f3
+  symbol_id: 0xcd83af95
+  symbol_id: 0xac7ce6db
+  symbol_id: 0x82fd8719
+  symbol_id: 0x8abb34fd
+  symbol_id: 0x9446177d
+  symbol_id: 0x6bfc59a2
+  symbol_id: 0xa1e811bb
+  symbol_id: 0x08ad4333
+  symbol_id: 0x13aa17f1
+  symbol_id: 0x91880d1c
+  symbol_id: 0x6dcd08f1
+  symbol_id: 0xe425a1d5
+  symbol_id: 0x20389b58
+  symbol_id: 0x1bc0f1da
+  symbol_id: 0xdfdc728c
+  symbol_id: 0x3e11441d
+  symbol_id: 0x63b3c289
+  symbol_id: 0xcce09c63
+  symbol_id: 0x9ed2eb17
+  symbol_id: 0x749b5136
+  symbol_id: 0x29df50d6
+  symbol_id: 0x28ede1f0
+  symbol_id: 0xeceb786e
+  symbol_id: 0x07345b6b
+  symbol_id: 0xcc20f1d4
+  symbol_id: 0x4f51620f
+  symbol_id: 0xf54df6a8
+  symbol_id: 0xabd8ab71
+  symbol_id: 0xe52ce78e
+  symbol_id: 0xc64f37ff
+  symbol_id: 0xd8e2fc20
+  symbol_id: 0x2a521f90
+  symbol_id: 0xe5568c92
+  symbol_id: 0x2a53ebba
+  symbol_id: 0xebe5f6cf
+  symbol_id: 0x80d03c2c
+  symbol_id: 0xf8c3c062
+  symbol_id: 0xc00007fe
+  symbol_id: 0x213004ed
+  symbol_id: 0xc62eba2d
+  symbol_id: 0x0869dd10
+  symbol_id: 0x25989156
+  symbol_id: 0x3a6e27e9
+  symbol_id: 0xec79cf1c
+  symbol_id: 0x8a043efe
+  symbol_id: 0xb6107be5
+  symbol_id: 0x3c6b600d
+  symbol_id: 0x24bd5fa6
+  symbol_id: 0xf459d14d
+  symbol_id: 0x1184def8
+  symbol_id: 0x3528c036
+  symbol_id: 0xdc5e3703
+  symbol_id: 0x51bef211
+  symbol_id: 0xe078eb3a
+  symbol_id: 0x93c0dba2
+  symbol_id: 0xd7cfff98
+  symbol_id: 0xecb4d16d
+  symbol_id: 0x3b867568
+  symbol_id: 0xc5806cb6
+  symbol_id: 0xd48e0164
+  symbol_id: 0xe28bc96f
+  symbol_id: 0xab46a3c7
+  symbol_id: 0x385bff4a
+  symbol_id: 0xd219907d
+  symbol_id: 0x1117f3c4
+  symbol_id: 0x2b1419da
+  symbol_id: 0x684e3e45
+  symbol_id: 0xd4a7d3d3
+  symbol_id: 0x51184dc0
+  symbol_id: 0xf5b01d8e
+  symbol_id: 0xbe3f1757
+  symbol_id: 0x64649d2c
+  symbol_id: 0x51b5201f
+  symbol_id: 0x58b810bd
+  symbol_id: 0x23e302cb
+  symbol_id: 0x9a3d3812
+  symbol_id: 0xe4ede23d
+  symbol_id: 0xa6782aae
+  symbol_id: 0x648de106
+  symbol_id: 0xe96cf682
+  symbol_id: 0xca851619
+  symbol_id: 0x6a50bad9
+  symbol_id: 0x1183a93d
+  symbol_id: 0x86f4fe83
+  symbol_id: 0x318e4c55
+  symbol_id: 0xa19887cb
+  symbol_id: 0xc6047029
+  symbol_id: 0xa1f845d9
+  symbol_id: 0x76120529
+  symbol_id: 0x7a8a4736
+  symbol_id: 0x3f8952ab
+  symbol_id: 0x4e6bfabc
+  symbol_id: 0x935fb0ee
+  symbol_id: 0xe5fad629
+  symbol_id: 0x1ef4279a
+  symbol_id: 0x0257011e
+  symbol_id: 0xd4965634
+  symbol_id: 0xc8e287ec
+  symbol_id: 0x8989926a
+  symbol_id: 0x09dc1a73
+  symbol_id: 0x8c78342c
+  symbol_id: 0xac1fc3ae
+  symbol_id: 0x75cad5a4
+  symbol_id: 0xd8c18cec
+  symbol_id: 0x0cf86849
+  symbol_id: 0x6f8184d5
+  symbol_id: 0x8aa099dd
+  symbol_id: 0x122e3e9f
+  symbol_id: 0xc0d6517a
+  symbol_id: 0xd479c471
+  symbol_id: 0x3a2aa84b
+  symbol_id: 0x124ae77d
+  symbol_id: 0xdc6725cf
+  symbol_id: 0xd67ad69f
+  symbol_id: 0x48cde8a9
+  symbol_id: 0x633d0644
+  symbol_id: 0x213cfa4f
+  symbol_id: 0xaaae7be8
+  symbol_id: 0x06b3c598
+  symbol_id: 0x3ad3ca2e
+  symbol_id: 0xad1d778f
+  symbol_id: 0xcf81b673
+  symbol_id: 0x864914fa
+  symbol_id: 0x046720ab
+  symbol_id: 0x3c07bbff
+  symbol_id: 0xbdb562b1
+  symbol_id: 0x1f35127a
+  symbol_id: 0x34b80a32
+  symbol_id: 0x93ab4714
+  symbol_id: 0x198a2313
+  symbol_id: 0xd08fdb4b
+  symbol_id: 0x9082bb51
+  symbol_id: 0x87ced39a
+  symbol_id: 0x8984b2e1
+  symbol_id: 0x22bf134d
+  symbol_id: 0xee902d0d
+  symbol_id: 0x3cbc47c3
+  symbol_id: 0xe3236156
+  symbol_id: 0x8f6d52ff
+  symbol_id: 0xb3c9d206
+  symbol_id: 0xcd5d6af6
+  symbol_id: 0xac3356ce
+  symbol_id: 0x0768ccdb
+  symbol_id: 0x4310a9de
+  symbol_id: 0x65aa6e41
+  symbol_id: 0xb85093db
+  symbol_id: 0x3bb33b54
+  symbol_id: 0x8da7c819
+  symbol_id: 0x808bdf9f
+  symbol_id: 0x7a4db2f9
+  symbol_id: 0xb96f3f15
+  symbol_id: 0xafb178b7
+  symbol_id: 0xceb76dac
+  symbol_id: 0xb1f5cc24
+  symbol_id: 0x9718e72e
+  symbol_id: 0x8da70bb5
+  symbol_id: 0xc84875f6
+  symbol_id: 0x81c987cc
+  symbol_id: 0x7f211ebf
+  symbol_id: 0x62aa5e8d
+  symbol_id: 0xa9f64e27
+  symbol_id: 0x4ba62142
+  symbol_id: 0x39b330a8
+  symbol_id: 0xf7e03c16
+  symbol_id: 0x879ed3f8
+  symbol_id: 0xd7bee2cf
+  symbol_id: 0x7826a8f0
+  symbol_id: 0x19652f5f
+  symbol_id: 0x78ae9c1c
+  symbol_id: 0x3e16ebdf
+  symbol_id: 0xd5a30565
+  symbol_id: 0x7812c81e
+  symbol_id: 0xdae72f16
+  symbol_id: 0xc68f1830
+  symbol_id: 0x4cbe86f3
+  symbol_id: 0xfad82b0b
+  symbol_id: 0xb11bdc47
+  symbol_id: 0x28312a82
+  symbol_id: 0xd001b20d
+  symbol_id: 0x3b60a5fe
+  symbol_id: 0x1e7c4dd7
+  symbol_id: 0xb8f84f03
+  symbol_id: 0xad1fada2
+  symbol_id: 0x7993ff4e
+  symbol_id: 0x9a93a123
+  symbol_id: 0x2f0e7bff
+  symbol_id: 0x716e8cc6
+  symbol_id: 0xc6c1247d
+  symbol_id: 0x219eb62f
+  symbol_id: 0xdaf34c14
+  symbol_id: 0x1f1ab070
+  symbol_id: 0x66dcfd31
+  symbol_id: 0xe2b96ffd
+  symbol_id: 0x126bb89f
+  symbol_id: 0x2e0e7810
+  symbol_id: 0x383fe893
+  symbol_id: 0xa9bf10bc
+  symbol_id: 0xc70188be
+  symbol_id: 0xded28924
+  symbol_id: 0xe3421d56
+  symbol_id: 0xda364c85
+  symbol_id: 0x68e0756b
+  symbol_id: 0x12cb063e
+  symbol_id: 0x42636e32
+  symbol_id: 0x9bb960df
+  symbol_id: 0xbf2af0d7
+  symbol_id: 0xb8395a3e
+  symbol_id: 0x9d898d75
+  symbol_id: 0x9ec4a8cb
+  symbol_id: 0x9b31fd86
+  symbol_id: 0xeb5f52cc
+  symbol_id: 0x16b47c46
+  symbol_id: 0xf52b6f8a
+  symbol_id: 0x2475753e
+  symbol_id: 0x63e89795
+  symbol_id: 0xce8db673
+  symbol_id: 0x9a7525de
+  symbol_id: 0x98dfada4
+  symbol_id: 0x20ac879e
+  symbol_id: 0xd85f1ace
+  symbol_id: 0x1b003d7c
+  symbol_id: 0x03c26bf9
+  symbol_id: 0x5d5a2134
+  symbol_id: 0x53a8b40e
+  symbol_id: 0xc670de95
+  symbol_id: 0x6f76a9a4
+  symbol_id: 0x14d9b2ac
+  symbol_id: 0x5d0ca5c4
+  symbol_id: 0xed989993
+  symbol_id: 0xf7b7d7aa
+  symbol_id: 0x1a3558d3
+  symbol_id: 0x00f85b72
+  symbol_id: 0x07288ca7
+  symbol_id: 0x0ff04eb0
+  symbol_id: 0xa6010848
+  symbol_id: 0x6839b226
+  symbol_id: 0xfa137f83
+  symbol_id: 0x109abab4
+  symbol_id: 0x2935539f
+  symbol_id: 0x8f99729e
+  symbol_id: 0xb6a9c6f8
+  symbol_id: 0x309cb0fd
+  symbol_id: 0x7b9ffce9
+  symbol_id: 0xda116c83
+  symbol_id: 0xa279fd1d
+  symbol_id: 0x134d07e5
+  symbol_id: 0xcfde732b
+  symbol_id: 0x260d2936
+  symbol_id: 0x3179c651
+  symbol_id: 0xdef4bdce
+  symbol_id: 0xeeed0fcd
+  symbol_id: 0x9c46e3cf
+  symbol_id: 0xd4d3c19b
+  symbol_id: 0x3276ffad
+  symbol_id: 0x592619b0
+  symbol_id: 0xc00e9f7c
+  symbol_id: 0xfe219f57
+  symbol_id: 0x6e69a2b9
+  symbol_id: 0xd3082d07
+  symbol_id: 0x091eb2ba
+  symbol_id: 0x80d8d153
+  symbol_id: 0x18d23e80
+  symbol_id: 0x8b7a48ea
+  symbol_id: 0x0270a08d
+  symbol_id: 0xb2ed7d56
+  symbol_id: 0x8a93ade5
+  symbol_id: 0x9fc520e2
+  symbol_id: 0xfb855519
+  symbol_id: 0xb8c1d5eb
+  symbol_id: 0x26cb4760
+  symbol_id: 0x8525692c
+  symbol_id: 0x1b659ae1
+  symbol_id: 0xaf15b515
+  symbol_id: 0x0fe3e822
+  symbol_id: 0x3f648037
+  symbol_id: 0xc75616d8
+  symbol_id: 0x467358e5
+  symbol_id: 0xacc42253
+  symbol_id: 0x0a446897
+  symbol_id: 0xb107d2cd
+  symbol_id: 0x8628f24d
+  symbol_id: 0xbbfb394e
+  symbol_id: 0x79edfc56
+  symbol_id: 0xc3077f07
+  symbol_id: 0xedcfa797
+  symbol_id: 0xe7aacfe5
+  symbol_id: 0x9e942fbe
+  symbol_id: 0x46b6e531
+  symbol_id: 0xb9dc79d0
+  symbol_id: 0x8bbdb127
+  symbol_id: 0xeaf15c9b
+  symbol_id: 0x02b1ce77
+  symbol_id: 0x90d375c5
+  symbol_id: 0xdc16d76a
+  symbol_id: 0x5b7736f5
+  symbol_id: 0x69beea41
+  symbol_id: 0xd2a94cce
+  symbol_id: 0x40cf5b57
+  symbol_id: 0xf882020f
+  symbol_id: 0x2e62a121
+  symbol_id: 0x24954a6b
+  symbol_id: 0xbbba9aad
+  symbol_id: 0xd211b195
+  symbol_id: 0xba7efe3b
+  symbol_id: 0xdf189e23
+  symbol_id: 0xae6c6645
+  symbol_id: 0x6097dede
+  symbol_id: 0x7c9e554a
+  symbol_id: 0xc442704c
+  symbol_id: 0xb290a148
+  symbol_id: 0x09d08108
+  symbol_id: 0x3c7c2553
+  symbol_id: 0x3dca9a13
+  symbol_id: 0xcb14b5cc
+  symbol_id: 0x1721c938
+  symbol_id: 0x1bf542c4
+  symbol_id: 0x5c93a483
+  symbol_id: 0x93b9959a
+  symbol_id: 0x618f059e
+  symbol_id: 0x48641588
+  symbol_id: 0xbd5537b4
+  symbol_id: 0xf650f97e
+  symbol_id: 0x942400d1
+  symbol_id: 0x0513219e
+  symbol_id: 0x1b00ff86
+  symbol_id: 0x9b815cdc
+  symbol_id: 0x27e49ce0
+  symbol_id: 0xa0e729a5
+  symbol_id: 0xe330aff9
+  symbol_id: 0x49af2256
+  symbol_id: 0xdfd6609a
+  symbol_id: 0x31dfc6e3
+  symbol_id: 0x0f402ef5
+  symbol_id: 0x2ed5588c
+  symbol_id: 0x3918f832
+  symbol_id: 0x238d82fe
+  symbol_id: 0xf5541f28
+  symbol_id: 0x89d2da05
+  symbol_id: 0x21202a06
+  symbol_id: 0x893590d8
+  symbol_id: 0x4c985dbf
+  symbol_id: 0xec31d371
+  symbol_id: 0x9a2423a0
+  symbol_id: 0x196ad62a
+  symbol_id: 0x804c5038
+  symbol_id: 0x07715f1a
+  symbol_id: 0x2c0dfd47
+  symbol_id: 0xb3bb06f4
+  symbol_id: 0xee139066
+  symbol_id: 0x613adcb1
+  symbol_id: 0x370e6f08
+  symbol_id: 0x53816b02
+  symbol_id: 0xc9ddb79e
+  symbol_id: 0x11780300
+  symbol_id: 0x183013c2
+  symbol_id: 0x55d636ec
+  symbol_id: 0x02e45228
+  symbol_id: 0x90df3dac
+  symbol_id: 0x98cceeb9
+  symbol_id: 0x8c138008
+  symbol_id: 0x5263336d
+  symbol_id: 0x644b2089
+  symbol_id: 0x7f409680
+  symbol_id: 0x46d8dfb5
+  symbol_id: 0x40d7d2d1
+  symbol_id: 0x4a8547f0
+  symbol_id: 0xff19753b
+  symbol_id: 0x2f1a3bf8
+  symbol_id: 0x806b0d54
+  symbol_id: 0x11f02a55
+  symbol_id: 0x9f69bdd5
+  symbol_id: 0xd314e8e2
+  symbol_id: 0x8005396c
+  symbol_id: 0x4e154d27
+  symbol_id: 0xc3be8e53
+  symbol_id: 0xc0d67a7b
+  symbol_id: 0x838e302b
+  symbol_id: 0x8d516f3b
+  symbol_id: 0xcde73eff
+  symbol_id: 0xa48d1205
+  symbol_id: 0xe802aac6
+  symbol_id: 0x0d3305c8
+  symbol_id: 0x38c268a7
+  symbol_id: 0x5c399a13
+  symbol_id: 0xcf017fb2
+  symbol_id: 0x5b793682
+  symbol_id: 0xe0327fdb
+  symbol_id: 0xb38d3ae8
+  symbol_id: 0xb307a45b
+  symbol_id: 0x62469fff
+  symbol_id: 0xc5fee33e
+  symbol_id: 0x7419d447
+  symbol_id: 0x30828743
+  symbol_id: 0x94b60724
+  symbol_id: 0x5ec3daa8
+  symbol_id: 0x2f7205ee
+  symbol_id: 0x7d577f86
+  symbol_id: 0x95a840b8
+  symbol_id: 0x7f639ef1
+  symbol_id: 0x798f83da
+  symbol_id: 0x542785af
+  symbol_id: 0x86da67c0
+  symbol_id: 0x27168bf7
+  symbol_id: 0x4e0faf2a
+  symbol_id: 0x337638e2
+  symbol_id: 0x036ebd65
+  symbol_id: 0xd381ea2f
+  symbol_id: 0xba2824e9
+  symbol_id: 0x58017eec
+  symbol_id: 0x33ee7617
+  symbol_id: 0xf94d5f8a
+  symbol_id: 0x0d761151
+  symbol_id: 0xb302ac33
+  symbol_id: 0x6c088000
+  symbol_id: 0xc4cb8fa6
+  symbol_id: 0xd54b6b78
+  symbol_id: 0x6e81d052
+  symbol_id: 0x96c8bcae
+  symbol_id: 0xc09fd862
+  symbol_id: 0x3598fbb3
+  symbol_id: 0x343a2d56
+  symbol_id: 0xa0c0d25f
+  symbol_id: 0xb87c5ff6
+  symbol_id: 0x607c937c
+  symbol_id: 0xd99708c7
+  symbol_id: 0x618539bc
+  symbol_id: 0xe00705b3
+  symbol_id: 0xcaf802e6
+  symbol_id: 0xbaba47ed
+  symbol_id: 0x67f44b83
+  symbol_id: 0xa94a7a92
+  symbol_id: 0x855de755
+  symbol_id: 0xb3b7ca78
+  symbol_id: 0x1a9af016
+  symbol_id: 0xfc12228c
+  symbol_id: 0xae957b3b
+  symbol_id: 0x77665a1c
+  symbol_id: 0xe8d92d04
+  symbol_id: 0xafbdd1c4
+  symbol_id: 0x0431ade4
+  symbol_id: 0x01eb2325
+  symbol_id: 0xd9d90ad6
+  symbol_id: 0xaf0c4e38
+  symbol_id: 0x08e235b1
+  symbol_id: 0x00d00ad1
+  symbol_id: 0xdb82735d
+  symbol_id: 0x7d6ec6da
+  symbol_id: 0x56ec444f
+  symbol_id: 0x519dce2c
+  symbol_id: 0xae723651
+  symbol_id: 0xb222bb33
+  symbol_id: 0xb3083c09
+  symbol_id: 0x3746f7a2
+  symbol_id: 0x7fafe916
+  symbol_id: 0x475d45f1
+  symbol_id: 0x8f644487
+  symbol_id: 0xbc123b47
+  symbol_id: 0x0447d62c
+  symbol_id: 0xba2bc2c4
+  symbol_id: 0x3266d1f2
+  symbol_id: 0x3a06dd48
+  symbol_id: 0x75d8e345
+  symbol_id: 0xfa5debf3
+  symbol_id: 0x450ea7a4
+  symbol_id: 0x35d05a7d
+  symbol_id: 0x02327717
+  symbol_id: 0x6d155c9e
+  symbol_id: 0xc5f5aefd
+  symbol_id: 0x90eb0a27
+  symbol_id: 0x511aa4c3
+  symbol_id: 0x18a5fee3
+  symbol_id: 0x0ac85cf7
+  symbol_id: 0x853a2529
+  symbol_id: 0x236d47d9
+  symbol_id: 0x4909936e
+  symbol_id: 0xce04fca2
+  symbol_id: 0x4ba4e06f
+  symbol_id: 0xbac82e84
+  symbol_id: 0xa8319a8c
+  symbol_id: 0xfe79963a
+  symbol_id: 0xbc19d975
+  symbol_id: 0x6dc59ee7
+  symbol_id: 0x3049a5e5
+  symbol_id: 0x62906068
+  symbol_id: 0x35ffaad3
+  symbol_id: 0x5a582da8
+  symbol_id: 0x596931c4
+  symbol_id: 0x390427e4
+  symbol_id: 0x53ba530f
+  symbol_id: 0x365c2930
+  symbol_id: 0x64b49555
+  symbol_id: 0xbfc46f3e
+  symbol_id: 0x53579c80
+  symbol_id: 0xd915e343
+  symbol_id: 0x2b91f916
+  symbol_id: 0x2defacf0
+  symbol_id: 0x1808c84e
+  symbol_id: 0x09fe5bd6
+  symbol_id: 0xe9a558bf
+  symbol_id: 0x260ae9d8
+  symbol_id: 0xc805d9b2
+  symbol_id: 0xc1baf786
+  symbol_id: 0x2221f1e8
+  symbol_id: 0x5be9fa34
+  symbol_id: 0x05b09788
+  symbol_id: 0xb4fb8840
+  symbol_id: 0x221b14f2
+  symbol_id: 0x4b6fcf32
+  symbol_id: 0x803663ec
+  symbol_id: 0x04d3cd28
+  symbol_id: 0xf7c116d2
+  symbol_id: 0x6b47e2c7
+  symbol_id: 0x65492c23
+  symbol_id: 0xa106a350
+  symbol_id: 0x59b3b64e
+  symbol_id: 0x7dd9e61e
+  symbol_id: 0x77a0ab63
+  symbol_id: 0x4825b485
+  symbol_id: 0xa448ac51
+  symbol_id: 0x73ac3fd7
+  symbol_id: 0xad2ad56b
+  symbol_id: 0xfc326378
+  symbol_id: 0x652eb3f5
+  symbol_id: 0x226f81df
+  symbol_id: 0x4950fc9e
+  symbol_id: 0x74240b4d
+  symbol_id: 0xe4150b00
+  symbol_id: 0x4b83f5b7
+  symbol_id: 0x2972a8a3
+  symbol_id: 0xb88eef1b
+  symbol_id: 0x6c1022ab
+  symbol_id: 0x877d6e07
+  symbol_id: 0x9e518224
+  symbol_id: 0x57b14fc5
+  symbol_id: 0xfe31da3e
+  symbol_id: 0x55e18a15
+  symbol_id: 0x4c4ea97e
+  symbol_id: 0x2bcde32a
+  symbol_id: 0x65cf864e
+  symbol_id: 0xc5a4a821
+  symbol_id: 0x4dcdd24d
+  symbol_id: 0x8df87722
+  symbol_id: 0x0ac30c0d
+  symbol_id: 0x61ad5a29
+  symbol_id: 0x4b6846bd
+  symbol_id: 0x3f69092d
+  symbol_id: 0x61776461
+  symbol_id: 0xfeac8d5f
+  symbol_id: 0xa18073b9
+  symbol_id: 0x9388d1ae
+  symbol_id: 0x62fb6b01
+  symbol_id: 0x8fd4b2bf
+  symbol_id: 0xa1e1e5e6
+  symbol_id: 0x8dfcda69
+  symbol_id: 0x236ad020
+  symbol_id: 0x57f86533
+  symbol_id: 0x2c0d609d
+  symbol_id: 0x34e65374
+  symbol_id: 0xcd5440a2
+  symbol_id: 0x749e8c39
+  symbol_id: 0x6bfa17c9
+  symbol_id: 0x9f446d29
+  symbol_id: 0xab6386a0
+  symbol_id: 0x55e1ead1
+  symbol_id: 0x4ae6d6c4
+  symbol_id: 0x23498da9
+  symbol_id: 0xdbab134a
+  symbol_id: 0x3906c0f6
+  symbol_id: 0xc2efad35
+  symbol_id: 0xced6b01d
+  symbol_id: 0xed4f6979
+  symbol_id: 0x1a89058a
+  symbol_id: 0x7bbdca15
+  symbol_id: 0xeb452b30
+  symbol_id: 0x7c237b76
+  symbol_id: 0x0fcee8a0
+  symbol_id: 0x0c5a048d
+  symbol_id: 0x2ca02363
+  symbol_id: 0xb0989145
+  symbol_id: 0x5fd40da9
+  symbol_id: 0xa95cc739
+  symbol_id: 0xf954f6cc
+  symbol_id: 0xbb3066ec
+  symbol_id: 0x37e2237f
+  symbol_id: 0xcecb1881
+  symbol_id: 0x91929e22
+  symbol_id: 0xc0424a96
+  symbol_id: 0x37830110
+  symbol_id: 0x5d90edb1
+  symbol_id: 0xb69012e2
+  symbol_id: 0xc78d4b07
+  symbol_id: 0x3163ad8e
+  symbol_id: 0x78d85567
+  symbol_id: 0xcd9a2048
+  symbol_id: 0x0e1d2fa4
+  symbol_id: 0x306e3b3d
+  symbol_id: 0x684435da
+  symbol_id: 0x7ec10e18
+  symbol_id: 0xe197ec6f
+  symbol_id: 0x58069299
+  symbol_id: 0x84d18ebf
+  symbol_id: 0x2a0bd345
+  symbol_id: 0x7d6d55a7
+  symbol_id: 0x98db1088
+  symbol_id: 0xc42edfb4
+  symbol_id: 0x9302ca1c
+  symbol_id: 0x88f82161
+  symbol_id: 0xccc593d6
+  symbol_id: 0x97a02af0
+  symbol_id: 0x2ffc7c7e
+  symbol_id: 0x7d0e44ca
+  symbol_id: 0x10de460f
+  symbol_id: 0x6ca4d0ed
+  symbol_id: 0x21d35235
+  symbol_id: 0x334ff68f
+  symbol_id: 0xd7ecf501
+  symbol_id: 0xa5f8942d
+  symbol_id: 0x552bcd06
+  symbol_id: 0x86e16775
+  symbol_id: 0x66b7fd66
+  symbol_id: 0xd54152db
+  symbol_id: 0xd68b6296
+  symbol_id: 0xa17a9ffe
+  symbol_id: 0xe0e52b19
+  symbol_id: 0xf16f6abd
+  symbol_id: 0xfe586a82
+  symbol_id: 0x49327479
+  symbol_id: 0xef64a177
+  symbol_id: 0x72108945
+  symbol_id: 0x9e9cd7f8
+  symbol_id: 0x33f91506
+  symbol_id: 0xdd2248de
+  symbol_id: 0x5af755ee
+  symbol_id: 0xecce2e76
+  symbol_id: 0x9a65c4be
+  symbol_id: 0xaa95b979
+  symbol_id: 0xe15d2559
+  symbol_id: 0x9cf659eb
+  symbol_id: 0xeadbb948
+  symbol_id: 0x58fde223
+  symbol_id: 0x6fe725e4
+  symbol_id: 0x01f2c038
+  symbol_id: 0x949ba632
+  symbol_id: 0x09c9d41d
+  symbol_id: 0x984a209f
+  symbol_id: 0x5bfc6931
+  symbol_id: 0x6d03f920
+  symbol_id: 0x830ea684
+  symbol_id: 0x7b53e605
+  symbol_id: 0x79e33abb
+  symbol_id: 0x6a503675
+  symbol_id: 0xe548a597
+  symbol_id: 0x1b1cb0d0
+  symbol_id: 0x8427551d
+  symbol_id: 0x74df05e1
+  symbol_id: 0x093c3961
+  symbol_id: 0xdcc2a654
+  symbol_id: 0xe7073e36
+  symbol_id: 0xda059fd6
+  symbol_id: 0xf9a63f6b
+  symbol_id: 0xfc041c30
+  symbol_id: 0x6079aa3a
+  symbol_id: 0x01d46904
+  symbol_id: 0x5bf25f7e
+  symbol_id: 0x93a3cbac
+  symbol_id: 0x32d81b47
+  symbol_id: 0xfd060ae2
+  symbol_id: 0xed1c6463
+  symbol_id: 0x0cf580c0
+  symbol_id: 0x8e169483
+  symbol_id: 0xf51269dc
+  symbol_id: 0x8fcd82af
+  symbol_id: 0xfc3516fe
+  symbol_id: 0xcb84ba6b
+  symbol_id: 0x04c802bf
+  symbol_id: 0x5942f608
+  symbol_id: 0x345672f8
+  symbol_id: 0x5e92ab6f
+  symbol_id: 0x3c49d772
+  symbol_id: 0x593078ec
+  symbol_id: 0x1c35e67b
+  symbol_id: 0x7f6e81ef
+  symbol_id: 0xca6dde07
+  symbol_id: 0x9187fbcc
+  symbol_id: 0xf694daf8
+  symbol_id: 0x4b80a5fd
+  symbol_id: 0xbf3b0543
+  symbol_id: 0x9a728d67
+  symbol_id: 0x620ba53b
+  symbol_id: 0xeb0fa4d4
+  symbol_id: 0x3dda00d0
+  symbol_id: 0x44500726
+  symbol_id: 0x16ef3ff0
+  symbol_id: 0x4a5526be
+  symbol_id: 0x9a09d7f5
+  symbol_id: 0xd04a88f6
+  symbol_id: 0xcdce4bd7
+  symbol_id: 0x0430bdc8
+  symbol_id: 0x5d223813
+  symbol_id: 0xfe365f09
+  symbol_id: 0xed3a9098
+  symbol_id: 0x5434b2e4
+  symbol_id: 0xad8697d5
+  symbol_id: 0x057be6ef
+  symbol_id: 0x577a8e49
+  symbol_id: 0x30251c53
+  symbol_id: 0x9d4abe0a
+  symbol_id: 0x12c6c0e3
+  symbol_id: 0xc8d0d1e5
+  symbol_id: 0xcaf710e3
+  symbol_id: 0x92a80b79
+  symbol_id: 0x17b1a06d
+  symbol_id: 0x5e075973
+  symbol_id: 0x58de8ff6
+  symbol_id: 0xb9a0744d
+  symbol_id: 0x9c458796
+  symbol_id: 0x7f40c9c2
+  symbol_id: 0x3b6f5da6
+  symbol_id: 0x4a59ab5d
+  symbol_id: 0x5ef63cd1
+  symbol_id: 0xdc130490
+  symbol_id: 0xd4556504
+  symbol_id: 0x80fbce75
+  symbol_id: 0xbb70a764
+  symbol_id: 0x18b26540
+  symbol_id: 0x74ecaa54
+  symbol_id: 0x714d6f42
+  symbol_id: 0x303c00b2
+  symbol_id: 0x62acf96f
+  symbol_id: 0xccd41de3
+  symbol_id: 0xf2d1305b
+  symbol_id: 0x7d9923b4
+  symbol_id: 0x2e42a423
+  symbol_id: 0xea3447a8
+  symbol_id: 0xac4a03ce
+  symbol_id: 0x42cccec0
+  symbol_id: 0x083923d0
+  symbol_id: 0xb59c8e60
+  symbol_id: 0x82067880
+  symbol_id: 0x8f70da42
+  symbol_id: 0x82d54cd2
+  symbol_id: 0xec107a09
+  symbol_id: 0x841218b7
+  symbol_id: 0x4a5f3d41
+  symbol_id: 0x98a39db9
+  symbol_id: 0xf9fd308c
+  symbol_id: 0x5956f21f
+  symbol_id: 0x76041d7e
+  symbol_id: 0xd941beb8
+  symbol_id: 0xe4653a75
+  symbol_id: 0x8aa99af0
+  symbol_id: 0x7ee06725
+  symbol_id: 0xea065265
+  symbol_id: 0xd50bc6e1
+  symbol_id: 0xdf70779d
+  symbol_id: 0x70513762
+  symbol_id: 0x49e3dfdd
+  symbol_id: 0x7a6b0e4c
+  symbol_id: 0xe0909072
+  symbol_id: 0xef661661
+  symbol_id: 0x83815ff1
+  symbol_id: 0x01f28688
+  symbol_id: 0x2dd4437a
+  symbol_id: 0x23b23c74
+  symbol_id: 0x88fdf87a
+  symbol_id: 0xe0c6693f
+  symbol_id: 0x4bda4ccf
+  symbol_id: 0x350d9a11
+  symbol_id: 0xb1548c88
+  symbol_id: 0x5ed0ce65
+  symbol_id: 0xfc17cb5d
+  symbol_id: 0x7ae28990
+  symbol_id: 0xcc1f3656
+  symbol_id: 0x613f6d1f
+  symbol_id: 0x83c94241
+  symbol_id: 0x7551a60b
+  symbol_id: 0x08fd4b84
+  symbol_id: 0xc6d8f246
+  symbol_id: 0x6f2f4bd1
+  symbol_id: 0x00b4d2da
+  symbol_id: 0xdf968210
+  symbol_id: 0xc93c3b7d
+  symbol_id: 0xcae49fd9
+  symbol_id: 0x83940072
+  symbol_id: 0x511cdd52
+  symbol_id: 0x53baed4c
+  symbol_id: 0xaf4fc4b9
+  symbol_id: 0x2d6e1a71
+  symbol_id: 0x3db1b953
+  symbol_id: 0x1e4863ea
+  symbol_id: 0x6e027547
+  symbol_id: 0x18472cc5
+  symbol_id: 0x2daf6508
+  symbol_id: 0x586598d1
+  symbol_id: 0x23a8e1f9
+  symbol_id: 0x4e1b2c76
+  symbol_id: 0xbf4f0b58
+  symbol_id: 0x6e6a2ec5
+  symbol_id: 0xca2771be
+  symbol_id: 0x7ded1ffe
+  symbol_id: 0xe42479db
+  symbol_id: 0xd8b14976
+  symbol_id: 0x86c8a137
+  symbol_id: 0x64e448f4
+  symbol_id: 0x4e874464
+  symbol_id: 0x7dce8737
+  symbol_id: 0x3d6f5577
+  symbol_id: 0x2b35dbba
+  symbol_id: 0x0732d2d1
+  symbol_id: 0x5eecacc4
+  symbol_id: 0x215b5641
+  symbol_id: 0xbf6470f2
+  symbol_id: 0x18eeb52f
+  symbol_id: 0xbc652525
+  symbol_id: 0x2336c16f
+  symbol_id: 0x5b69d05f
+  symbol_id: 0x1cfb5d03
+  symbol_id: 0x60efc3a4
+  symbol_id: 0xc802de31
+  symbol_id: 0x6f29f28e
+  symbol_id: 0xcd4b17c4
+  symbol_id: 0x8d472246
+  symbol_id: 0x29087f7f
+  symbol_id: 0xa4d70a3f
+  symbol_id: 0x4d98ff50
+  symbol_id: 0x6905de49
+  symbol_id: 0xd5ec9823
+  symbol_id: 0xb7c38617
+  symbol_id: 0xa5fd7358
+  symbol_id: 0xc59a0788
+  symbol_id: 0xe6f7c5ea
+  symbol_id: 0x718b5d04
+  symbol_id: 0xbcce2413
+  symbol_id: 0xdd50f291
+  symbol_id: 0xd2b5c87d
+  symbol_id: 0xf58961c1
+  symbol_id: 0xfa66175a
+  symbol_id: 0x6a48a444
+  symbol_id: 0xc73383c1
+  symbol_id: 0x0ee6aecf
+  symbol_id: 0x3c5daf32
+  symbol_id: 0xbd83f7de
+  symbol_id: 0xb6637ce6
+  symbol_id: 0x5ce8149d
+  symbol_id: 0x92b91a66
+  symbol_id: 0x0d19106d
+  symbol_id: 0xfe94820e
+  symbol_id: 0xe7fc8dce
+  symbol_id: 0xc3e2d4ae
+  symbol_id: 0x6b8c216a
+  symbol_id: 0x6f047c6e
+  symbol_id: 0xd67bf9ed
+  symbol_id: 0xffca97cd
+  symbol_id: 0x99224733
+  symbol_id: 0xa4eabc87
+  symbol_id: 0xd24a70f6
+  symbol_id: 0x396b0c47
+  symbol_id: 0xe80863b1
+  symbol_id: 0xd81a7d03
+  symbol_id: 0x0566bca1
+  symbol_id: 0x4c05b91e
+  symbol_id: 0xa5459730
+  symbol_id: 0xe77a1ae2
+  symbol_id: 0x0faa1a3d
+  symbol_id: 0x4655db4f
+  symbol_id: 0xb2194478
+  symbol_id: 0x90148e8e
+  symbol_id: 0x92cc8c41
+  symbol_id: 0xdf5bc8be
+  symbol_id: 0x836fd42d
+  symbol_id: 0x07d8752d
+  symbol_id: 0x29d25600
+  symbol_id: 0x79945ddc
+  symbol_id: 0xc359a46e
+  symbol_id: 0xc9c5433a
+  symbol_id: 0xfce67239
+  symbol_id: 0xe154efb2
+  symbol_id: 0xadf1bba5
+  symbol_id: 0x1a299344
+  symbol_id: 0xe52a90e5
+  symbol_id: 0x1f9ceb72
+  symbol_id: 0x119c23e5
+  symbol_id: 0x9aea043a
+  symbol_id: 0xbfb0ba46
+  symbol_id: 0x21c33dfe
+  symbol_id: 0x6c972a39
+  symbol_id: 0x5334a8b4
+  symbol_id: 0x30e89515
+  symbol_id: 0x407738ab
+  symbol_id: 0x7e9c5e3f
+  symbol_id: 0x2d2eb8bc
+  symbol_id: 0x08ecc90d
+  symbol_id: 0x42137268
+  symbol_id: 0xa0390871
+  symbol_id: 0xfb789e26
+  symbol_id: 0x71726a83
+  symbol_id: 0xffb394c4
+  symbol_id: 0x48a6183b
+  symbol_id: 0x1be0f35f
+  symbol_id: 0x5a7fbd45
+  symbol_id: 0x7837fb7f
+  symbol_id: 0x6cd920cf
+  symbol_id: 0x5234b1b5
+  symbol_id: 0xaed020d7
+  symbol_id: 0xc1d5ac06
+  symbol_id: 0xc86b3dec
+  symbol_id: 0x6bd8b5b5
+  symbol_id: 0x5b9fac73
+  symbol_id: 0x39f87265
+  symbol_id: 0xd35aa56c
+  symbol_id: 0xfd0a8a39
+  symbol_id: 0x274071bc
+  symbol_id: 0x8b22b24d
+  symbol_id: 0x1f294d29
+  symbol_id: 0xc610fcd6
+  symbol_id: 0x915bc321
+  symbol_id: 0xbf9d3356
+  symbol_id: 0xd8989bc0
+  symbol_id: 0x43c80a09
+  symbol_id: 0xdec0d803
+  symbol_id: 0x318d7639
+  symbol_id: 0x234b3b39
+  symbol_id: 0xadb0ba0e
+  symbol_id: 0xce3d1021
+  symbol_id: 0xc55dac9c
+  symbol_id: 0x3e7fecbe
+  symbol_id: 0x7021eb31
+  symbol_id: 0xf2ede93a
+  symbol_id: 0xc50b462b
+  symbol_id: 0x53918fa8
+  symbol_id: 0xa4445542
+  symbol_id: 0xbe5c3dff
+  symbol_id: 0x455e91ec
+  symbol_id: 0x630bb842
+  symbol_id: 0x22a9a9c1
+  symbol_id: 0x9f4df92b
+  symbol_id: 0x5e13f2f1
+  symbol_id: 0x135db1d2
+  symbol_id: 0xba41ecd4
+  symbol_id: 0x327b1cbb
+  symbol_id: 0x61a826d2
+  symbol_id: 0x3cc69c51
+  symbol_id: 0xb0b89150
+  symbol_id: 0xa7d2492e
+  symbol_id: 0x313a31e6
+  symbol_id: 0x054ef290
+  symbol_id: 0x42675a87
+  symbol_id: 0x18eb0e3e
+  symbol_id: 0xfd8e5705
+  symbol_id: 0x3087961e
+  symbol_id: 0x2f696324
+  symbol_id: 0x362487ea
+  symbol_id: 0xc6121864
+  symbol_id: 0x9ed1af8c
+  symbol_id: 0xf030b866
+  symbol_id: 0x01f6343f
+  symbol_id: 0xe8b2d7a6
+  symbol_id: 0x2ed6bfeb
+  symbol_id: 0xa9c80d6c
+  symbol_id: 0xb1d265b1
+  symbol_id: 0x28fabc56
+  symbol_id: 0x68e07680
+  symbol_id: 0xcd991820
+  symbol_id: 0x307e484e
+  symbol_id: 0xf62740c9
+  symbol_id: 0x1af2c6cc
+  symbol_id: 0x94fc8420
+  symbol_id: 0x7c906e0d
+  symbol_id: 0x0bad9216
+  symbol_id: 0xb2b17b6f
+  symbol_id: 0x5904d735
+  symbol_id: 0xcb7dc482
+  symbol_id: 0xaed00f8c
+  symbol_id: 0xc89a8e29
+  symbol_id: 0x92dfef70
+  symbol_id: 0xd1f69ecb
+  symbol_id: 0xdbb90310
+  symbol_id: 0x3d2a104d
+  symbol_id: 0x9ba08730
+  symbol_id: 0x064a6e13
+  symbol_id: 0x73ffe9a9
+  symbol_id: 0x03de6dc5
+  symbol_id: 0xe4e974b3
+  symbol_id: 0x2066c48d
+  symbol_id: 0x1cd74592
+  symbol_id: 0xd4b34ea6
+  symbol_id: 0x3c6496cb
+  symbol_id: 0x124d42c2
+  symbol_id: 0xd106aba0
+  symbol_id: 0x5cce6b17
+  symbol_id: 0x854c19ed
+  symbol_id: 0x50909f0b
+  symbol_id: 0xe56d8267
+  symbol_id: 0x7862fdf3
+  symbol_id: 0xa6e6c879
+  symbol_id: 0x6e47d2cf
+  symbol_id: 0xd63a3f70
+  symbol_id: 0x075fdad1
+  symbol_id: 0x6bcfa61d
+  symbol_id: 0x9175ce1c
+  symbol_id: 0x81dadb36
+  symbol_id: 0x9bfc3a5e
+  symbol_id: 0xc750a072
+  symbol_id: 0xbccf7511
+  symbol_id: 0x3b31be3d
+  symbol_id: 0x88704b49
+  symbol_id: 0x8cd9004f
+  symbol_id: 0x21d6616d
+  symbol_id: 0xd9f8da7b
+  symbol_id: 0x1b2f5f11
+  symbol_id: 0x6746106c
+  symbol_id: 0xc5f22a59
+  symbol_id: 0xff4a14be
+  symbol_id: 0x4e60d546
+  symbol_id: 0x0e6a648c
+  symbol_id: 0x05b57a3a
+  symbol_id: 0x5da7d3fd
+  symbol_id: 0x51fc2e7c
+  symbol_id: 0x9a493b0a
+  symbol_id: 0x7db59566
+  symbol_id: 0x74c27cba
+  symbol_id: 0x9c2a699a
+  symbol_id: 0x1185f06e
+  symbol_id: 0x1ac8e26f
+  symbol_id: 0x1feedde3
+  symbol_id: 0xc2d6ae96
+  symbol_id: 0x6dbdf8e6
+  symbol_id: 0x6bb359de
+  symbol_id: 0xe097a7bd
+  symbol_id: 0xdc88dfbc
+  symbol_id: 0xe867c7e6
+  symbol_id: 0x6dc922be
+  symbol_id: 0x5cdb4ea4
+  symbol_id: 0x6d575dad
+  symbol_id: 0xb1072fb1
+  symbol_id: 0x661955d6
+  symbol_id: 0xd6a8ff16
+  symbol_id: 0x053e25cb
+  symbol_id: 0x567c8a8a
+  symbol_id: 0xbc2dc163
+  symbol_id: 0x98b2ed59
+  symbol_id: 0x158dfa03
+  symbol_id: 0xa64fdec4
+  symbol_id: 0xcbec700e
+  symbol_id: 0x394ce3dd
+  symbol_id: 0x56f23732
+  symbol_id: 0xa5a4fafa
+  symbol_id: 0xc37ba22c
+  symbol_id: 0xbce770e6
+  symbol_id: 0xc5292cdd
+  symbol_id: 0xdaa011df
+  symbol_id: 0xeecf2614
+  symbol_id: 0x5addff7b
+  symbol_id: 0xf6a8f652
+  symbol_id: 0x3ce2ed77
+  symbol_id: 0x456e21b8
+  symbol_id: 0x3de0a0d6
+  symbol_id: 0xff11f1ef
+  symbol_id: 0xa8f2033f
+  symbol_id: 0xa5deede8
+  symbol_id: 0x78a1f659
+  symbol_id: 0x42241ce5
+  symbol_id: 0x5ca92bb1
+  symbol_id: 0x11e33922
+  symbol_id: 0xa95939f5
+  symbol_id: 0x45f53e02
+  symbol_id: 0xaa5c8089
+  symbol_id: 0x6a1b96a4
+  symbol_id: 0x5e008c58
+  symbol_id: 0x6ebdc3d5
+  symbol_id: 0x997ce4eb
+  symbol_id: 0xc8630541
+  symbol_id: 0x67714f19
+  symbol_id: 0x2c162109
+  symbol_id: 0x9c9d432c
+  symbol_id: 0x3004454e
+  symbol_id: 0x2b3485f8
+  symbol_id: 0x2f71359b
+  symbol_id: 0xdf35d747
+  symbol_id: 0x5dcc8e77
+  symbol_id: 0xcabb291b
+  symbol_id: 0x31577ae4
+  symbol_id: 0x48e6567f
+  symbol_id: 0xbd8349ba
+  symbol_id: 0xa677d946
+  symbol_id: 0x46063085
+  symbol_id: 0x8ab0e185
+  symbol_id: 0xbeb6fe53
+  symbol_id: 0x9c1bb84e
+  symbol_id: 0xa656e08e
+  symbol_id: 0x4c5f49dc
+  symbol_id: 0x8776d783
+  symbol_id: 0xa4c342f5
+  symbol_id: 0x253268e8
+  symbol_id: 0xec1bb297
+  symbol_id: 0x0da18d92
+  symbol_id: 0x35384efd
+  symbol_id: 0x95eb59ef
+  symbol_id: 0xa074b313
+  symbol_id: 0x877c1d4f
+  symbol_id: 0x80424e6f
+  symbol_id: 0xa662c735
+  symbol_id: 0xa921f032
+  symbol_id: 0x5b454f0c
+  symbol_id: 0x21fc0560
+  symbol_id: 0xd20ecdb9
+  symbol_id: 0x4ed76f28
+  symbol_id: 0x54d851dc
+  symbol_id: 0x1c8ac0ea
+  symbol_id: 0xdd5dcb4e
+  symbol_id: 0xeae01788
+  symbol_id: 0x84839142
+  symbol_id: 0xa9c37a1d
+  symbol_id: 0x49232ca9
+  symbol_id: 0xec609d3e
+  symbol_id: 0x44f92a6d
+  symbol_id: 0x40c3dc92
+  symbol_id: 0xb27aa180
+  symbol_id: 0xeb6e491f
+  symbol_id: 0xf902c37c
+  symbol_id: 0x9a04e3d3
+  symbol_id: 0x52e60edd
+  symbol_id: 0xc6d4a959
+  symbol_id: 0x95d94296
+  symbol_id: 0x25143c30
+  symbol_id: 0x7b453e0a
+  symbol_id: 0xb80124fb
+  symbol_id: 0xba76946d
+  symbol_id: 0x012f568e
+  symbol_id: 0x6a40dcf7
+  symbol_id: 0x627cd27d
+  symbol_id: 0xa662e905
+  symbol_id: 0xc78c2710
+  symbol_id: 0x0614b92e
+  symbol_id: 0x01b49a38
+  symbol_id: 0xbe2a589c
+  symbol_id: 0xf03cc7d6
+  symbol_id: 0x4026efa6
+  symbol_id: 0x76ff2b39
+  symbol_id: 0xf2e6f907
+  symbol_id: 0xb1bdece7
+  symbol_id: 0x3160ee82
+  symbol_id: 0xbc9cd951
+  symbol_id: 0x15a3f41a
+  symbol_id: 0x6e8c6baf
+  symbol_id: 0x3ae24a16
+  symbol_id: 0x3df63827
+  symbol_id: 0x26f1f650
+  symbol_id: 0xbad9100b
+  symbol_id: 0x5fbc0f26
+  symbol_id: 0xf311fdc8
+  symbol_id: 0x1b77235e
+  symbol_id: 0x95c06871
+  symbol_id: 0x477d12fb
+  symbol_id: 0xa2949e70
+  symbol_id: 0x7ddae758
+  symbol_id: 0x408a40eb
+  symbol_id: 0x713c49dc
+  symbol_id: 0xcf1da4b4
+  symbol_id: 0x4be6182f
+  symbol_id: 0x0adf80e9
+  symbol_id: 0x8667b5a3
+  symbol_id: 0x41e1d797
+  symbol_id: 0x6d5a3515
+  symbol_id: 0x7c29c299
+  symbol_id: 0x1d4f252f
+  symbol_id: 0xd944403c
+  symbol_id: 0x12bc1d26
+  symbol_id: 0x8bf0dadd
+  symbol_id: 0x16020414
+  symbol_id: 0x19b323fa
+  symbol_id: 0xb3ed8a46
+  symbol_id: 0x9328a6ed
+  symbol_id: 0xf70d152f
+  symbol_id: 0xbf0c31fb
+  symbol_id: 0x2b8f7fee
+  symbol_id: 0x8244eaf7
+  symbol_id: 0x7169705b
+  symbol_id: 0x8066cf3a
+  symbol_id: 0x8f6761e2
+  symbol_id: 0x20069858
+  symbol_id: 0x709f7fc8
+  symbol_id: 0xa58e6f5d
+  symbol_id: 0xfe24eb71
+  symbol_id: 0x27d77d55
+  symbol_id: 0x62cd5012
+  symbol_id: 0xda95494e
+  symbol_id: 0x76f00da5
+  symbol_id: 0x2e74d698
+  symbol_id: 0x7bbb8d5f
+  symbol_id: 0xa18d331b
+  symbol_id: 0x1874c9e3
+  symbol_id: 0xef448c0c
+  symbol_id: 0x678fcec9
+  symbol_id: 0x73ea3871
+  symbol_id: 0xaaa8b4f9
+  symbol_id: 0xbadeab0f
+  symbol_id: 0xa60f59c7
+  symbol_id: 0x61d92429
+  symbol_id: 0xf4949824
+  symbol_id: 0xf48c4979
+  symbol_id: 0x7d03c60e
+  symbol_id: 0x6149caff
+  symbol_id: 0x91e9c466
+  symbol_id: 0xf33d71ea
+  symbol_id: 0xc50733a4
+  symbol_id: 0xc162c911
+  symbol_id: 0xaaab26df
+  symbol_id: 0x42eaca18
+  symbol_id: 0x408fc274
+  symbol_id: 0x8fab82b5
+  symbol_id: 0xe1482206
+  symbol_id: 0xf2579cec
+  symbol_id: 0xc41c43d2
+  symbol_id: 0x02bffe2a
+  symbol_id: 0x06e891b4
+  symbol_id: 0xad10cf0f
+  symbol_id: 0x493ce9fc
+  symbol_id: 0x1440b3fe
+  symbol_id: 0xf625170a
+  symbol_id: 0x3751bf8b
+  symbol_id: 0xf1354b5e
+  symbol_id: 0x2ee79858
+  symbol_id: 0xbc74f02a
+  symbol_id: 0x01bea327
+  symbol_id: 0x4f31c756
+  symbol_id: 0x7bd17841
+  symbol_id: 0xe4eac6bd
+  symbol_id: 0x602510fe
+  symbol_id: 0x304a5133
+  symbol_id: 0xcc9bd833
+  symbol_id: 0x97e555df
+  symbol_id: 0x61c53930
+  symbol_id: 0x588e0fe2
+  symbol_id: 0xdaf86712
+  symbol_id: 0xd8f7e87d
+  symbol_id: 0x26ff76ce
+  symbol_id: 0xc74935db
+  symbol_id: 0xbf272cf1
+  symbol_id: 0xa93d3855
+  symbol_id: 0x88716266
+  symbol_id: 0x28a1af7f
+  symbol_id: 0xbf3f53e8
+  symbol_id: 0xfff946e6
+  symbol_id: 0x6b021d79
+  symbol_id: 0x225925a6
+  symbol_id: 0x791e75a2
+  symbol_id: 0x74d2c062
+  symbol_id: 0x08abb636
+  symbol_id: 0xe93a46f5
+  symbol_id: 0x97be343f
+  symbol_id: 0xd18d9beb
+  symbol_id: 0x4b1572e8
+  symbol_id: 0x9205ef97
+  symbol_id: 0x0d67f02b
+  symbol_id: 0x8fd19cea
+  symbol_id: 0x2e683b3e
+  symbol_id: 0x46caa64b
+  symbol_id: 0x7f726caf
+  symbol_id: 0x562d3f6f
+  symbol_id: 0x57c27f6f
+  symbol_id: 0x9eddc572
+  symbol_id: 0xa54f3ef4
+  symbol_id: 0x84271f20
+  symbol_id: 0xf60a5d60
+  symbol_id: 0xea64439d
+  symbol_id: 0xd0b869bf
+  symbol_id: 0x3e285e2f
+  symbol_id: 0xf5924d9f
+  symbol_id: 0x84278a73
+  symbol_id: 0xf5327fe3
+  symbol_id: 0x92649662
+  symbol_id: 0xc023a87c
+  symbol_id: 0x8d56397b
+  symbol_id: 0x47afd45d
+  symbol_id: 0xa17b36f0
+  symbol_id: 0xee370c66
+  symbol_id: 0xd075c3be
+  symbol_id: 0xa848deda
+  symbol_id: 0x8eadb5fd
+  symbol_id: 0x140f40dd
+  symbol_id: 0x7f797603
+  symbol_id: 0x01e78001
+  symbol_id: 0x746374fa
+  symbol_id: 0x4fb91c54
+  symbol_id: 0xaa97e158
+  symbol_id: 0x0b518e04
+  symbol_id: 0xad94cee2
+  symbol_id: 0xec5de79b
+  symbol_id: 0xd046a426
+  symbol_id: 0x9c7c44dc
+  symbol_id: 0x4b8998cf
+  symbol_id: 0x48ffba03
+  symbol_id: 0x08fd5f0f
+  symbol_id: 0xcd17d380
+  symbol_id: 0x4a3fbd55
+  symbol_id: 0x433c572b
+  symbol_id: 0xdf190787
+  symbol_id: 0xfd2dc160
+  symbol_id: 0x13e62490
+  symbol_id: 0xa613caa5
+  symbol_id: 0x25f67c9f
+  symbol_id: 0x65b19e25
+  symbol_id: 0xfa3d486a
+  symbol_id: 0x77eb61b0
+  symbol_id: 0xfbb56638
+  symbol_id: 0x9a28516c
+  symbol_id: 0x7ad45055
+  symbol_id: 0x56171277
+  symbol_id: 0x67a278cb
+  symbol_id: 0xd1412061
+  symbol_id: 0x4742ac18
+  symbol_id: 0x343d8d9d
+  symbol_id: 0xabdeef21
+  symbol_id: 0xaa1ecb0d
+  symbol_id: 0xbc9af04b
+  symbol_id: 0x78495fd8
+  symbol_id: 0xa208d2dc
+  symbol_id: 0x89c6398f
+  symbol_id: 0xbad16ab3
+  symbol_id: 0x68c3a63b
+  symbol_id: 0xbc90165b
+  symbol_id: 0x1579ecd2
+  symbol_id: 0xe4572a81
+  symbol_id: 0x07b15271
+  symbol_id: 0xe2d4d055
+  symbol_id: 0xe53f4a86
+  symbol_id: 0xc42d006b
+  symbol_id: 0x3a394021
+  symbol_id: 0xefe40ad0
+  symbol_id: 0x54a680f9
+  symbol_id: 0x6ee51cd8
+  symbol_id: 0x1086ae4c
+  symbol_id: 0x26cf67c0
+  symbol_id: 0xf096de3c
+  symbol_id: 0x0b3caa81
+  symbol_id: 0x4512217f
+  symbol_id: 0xe9f5d63c
+  symbol_id: 0x1ed1af4f
+  symbol_id: 0x2f419666
+  symbol_id: 0x0d70d901
+  symbol_id: 0x9d1a3913
+  symbol_id: 0xfdf03f19
+  symbol_id: 0xb0f04be5
+  symbol_id: 0x0f5c6d24
+  symbol_id: 0x86d3fa50
+  symbol_id: 0xc5df0bf5
+  symbol_id: 0xcb4b66a2
+  symbol_id: 0xcb5e0ac4
+  symbol_id: 0xd08cb4e7
+  symbol_id: 0x596b8466
+  symbol_id: 0xd9f124cf
+  symbol_id: 0xdca2a3c4
+  symbol_id: 0xe4059d72
+  symbol_id: 0x842903b7
+  symbol_id: 0x354e8904
+  symbol_id: 0xd328c906
+  symbol_id: 0x9a282ce3
+  symbol_id: 0xd2482cd8
+  symbol_id: 0x3c9f12f3
+  symbol_id: 0x512b7828
+  symbol_id: 0x2ddd5efb
+  symbol_id: 0x674dbf62
+  symbol_id: 0x7737ff88
+  symbol_id: 0xcc598f1c
+  symbol_id: 0x82b43f76
+  symbol_id: 0xa5ae02cf
+  symbol_id: 0x5cc45f81
+  symbol_id: 0x127edc77
+  symbol_id: 0x7ac15cd7
+  symbol_id: 0x7cd7ef85
+  symbol_id: 0xbda89b5c
+  symbol_id: 0x3d86db69
+  symbol_id: 0x20019c31
+  symbol_id: 0xb2308a01
+  symbol_id: 0x3ce0db00
+  symbol_id: 0xbb4d4446
+  symbol_id: 0xa9685e37
+  symbol_id: 0x5dc5546f
+  symbol_id: 0x05ea5ad1
+  symbol_id: 0xa6c3d5a7
+  symbol_id: 0x424f3d82
+  symbol_id: 0xa2e72f24
+  symbol_id: 0xba0b2eaa
+  symbol_id: 0x3a831b23
+  symbol_id: 0x462cbc3f
+  symbol_id: 0x5eda25d4
+  symbol_id: 0xbc5ef117
+  symbol_id: 0x50e01c5d
+  symbol_id: 0xc9735609
+  symbol_id: 0x243ce42b
+  symbol_id: 0x2d0e7608
+  symbol_id: 0x773040a8
+  symbol_id: 0x0399dc23
+  symbol_id: 0x10fd9f55
+  symbol_id: 0xd0f0d35f
+  symbol_id: 0xfb31b7b7
+  symbol_id: 0xfe0604fe
+  symbol_id: 0xa466e3d3
+  symbol_id: 0x836750b8
+  symbol_id: 0x1398d9e3
+  symbol_id: 0x2f332836
+  symbol_id: 0x165e673e
+  symbol_id: 0xe8a26880
+  symbol_id: 0x44bb49dc
+  symbol_id: 0x6e71b72c
+  symbol_id: 0x381bc1b0
+  symbol_id: 0x236a1277
+  symbol_id: 0xa062fd64
+  symbol_id: 0xdf7b9a78
+  symbol_id: 0xa259d75f
+  symbol_id: 0x93f5b442
+  symbol_id: 0xe4008a83
+  symbol_id: 0x7eaf76f6
+  symbol_id: 0x65106d59
+  symbol_id: 0xbedab58b
+  symbol_id: 0x603dd7ca
+  symbol_id: 0xc30a6d76
+  symbol_id: 0xb28e5573
+  symbol_id: 0x1a083689
+  symbol_id: 0xce6c8813
+  symbol_id: 0xae4bf0ee
+  symbol_id: 0x6792f365
+  symbol_id: 0xf85ead17
+  symbol_id: 0x04aec85e
+  symbol_id: 0x3eb4f3ba
+  symbol_id: 0xeaf1f8e6
+  symbol_id: 0x9d40283f
+  symbol_id: 0xf8eaff55
+  symbol_id: 0x55bed293
+  symbol_id: 0xc1add767
+  symbol_id: 0x9a02788c
+  symbol_id: 0xc258a893
+  symbol_id: 0x2ce3e2c6
+  symbol_id: 0x04096200
+  symbol_id: 0x62bb4fb7
+  symbol_id: 0xc7e96077
+  symbol_id: 0x30d34395
+  symbol_id: 0xddfd9f85
+  symbol_id: 0x61161520
+  symbol_id: 0x4dbc1b6c
+  symbol_id: 0x1a3da5bd
+  symbol_id: 0xb6b84793
+  symbol_id: 0x6988c1c1
+  symbol_id: 0x9da338a6
+  symbol_id: 0x91c85f34
+  symbol_id: 0x4d59c065
+  symbol_id: 0x90860c61
+  symbol_id: 0xafa7b68d
+  symbol_id: 0xed606b4f
+  symbol_id: 0x2a20c876
+  symbol_id: 0x6c72efe1
+  symbol_id: 0xfac0e8e6
+  symbol_id: 0x1a34a34f
+  symbol_id: 0x06bf2dbd
+  symbol_id: 0x5a4e487e
+  symbol_id: 0x178677d3
+  symbol_id: 0xb4ca02f0
+  symbol_id: 0x9b8c6a7d
+  symbol_id: 0xd5ed1a09
+  symbol_id: 0xd78c295f
+  symbol_id: 0xe42df14f
+  symbol_id: 0x22c60050
+  symbol_id: 0x7a3d8713
+  symbol_id: 0xf7edefd1
+  symbol_id: 0xb78d7b09
+  symbol_id: 0x13d32ab6
+  symbol_id: 0x88a6525c
+  symbol_id: 0xa9b870ab
+  symbol_id: 0x07d0c0e2
+  symbol_id: 0x873a0741
+  symbol_id: 0x0e4b2c83
+  symbol_id: 0x3a4c076b
+  symbol_id: 0x3ce8e22e
+  symbol_id: 0xa03599a6
+  symbol_id: 0x659c1a4c
+  symbol_id: 0x865e414c
+  symbol_id: 0xf4d035ba
+  symbol_id: 0x410cb094
+  symbol_id: 0x6692f232
+  symbol_id: 0xac772e2b
+  symbol_id: 0x4c1d5834
+  symbol_id: 0xf16a1d9f
+  symbol_id: 0xdbff81b0
+  symbol_id: 0x1d1d3e9f
+  symbol_id: 0x5f6243cf
+  symbol_id: 0x142ee439
+  symbol_id: 0xcad08fbc
+  symbol_id: 0xbf885171
+  symbol_id: 0x8cb67134
+  symbol_id: 0x894a0130
+  symbol_id: 0xab1506fb
+  symbol_id: 0x8a6ce95c
+  symbol_id: 0x5691a857
+  symbol_id: 0xcb74c77c
+  symbol_id: 0x401ca299
+  symbol_id: 0xeb19d9f6
+  symbol_id: 0xbbd2a0ab
+  symbol_id: 0x57abe80f
+  symbol_id: 0xc8ea3547
+  symbol_id: 0xb2e54d47
+  symbol_id: 0x1b589c40
+  symbol_id: 0x43078d96
+  symbol_id: 0x619db28f
+  symbol_id: 0x36bc8d13
+  symbol_id: 0x38637341
+  symbol_id: 0x985a4d66
+  symbol_id: 0xfe9be121
+  symbol_id: 0x7d557ee6
+  symbol_id: 0x406df389
+  symbol_id: 0xed791383
+  symbol_id: 0xcb97b841
+  symbol_id: 0xa7ee49a4
+  symbol_id: 0x52d9a3b8
+  symbol_id: 0x930fd17a
+  symbol_id: 0xbbc401d2
+  symbol_id: 0xcd1f4608
+  symbol_id: 0x8dad3883
+  symbol_id: 0x4d2043db
+  symbol_id: 0x14ac1f0f
+  symbol_id: 0xaca68d79
+  symbol_id: 0x12f5593e
+  symbol_id: 0x5fc2c016
+  symbol_id: 0x82c92992
+  symbol_id: 0x99f408c5
+  symbol_id: 0x22e68369
+  symbol_id: 0xefd6be85
+  symbol_id: 0x53dde8dc
+  symbol_id: 0x915620e9
+  symbol_id: 0x1570bf50
+  symbol_id: 0xfb9ee5c5
+  symbol_id: 0xb65f0139
+  symbol_id: 0x54a760fe
+  symbol_id: 0x49027247
+  symbol_id: 0x85e07b67
+  symbol_id: 0x6359420c
+  symbol_id: 0x7f258c4e
+  symbol_id: 0x64e6aa0b
+  symbol_id: 0x1560f116
+  symbol_id: 0x1cfcf940
+  symbol_id: 0x3704ac3f
+  symbol_id: 0x0bb7f730
+  symbol_id: 0xb65e3baf
+  symbol_id: 0xf68f8b33
+  symbol_id: 0xfab02ca8
+  symbol_id: 0xd7668767
+  symbol_id: 0x50d8c489
+  symbol_id: 0x77722cfe
+  symbol_id: 0x58765106
+  symbol_id: 0x14f0cfc8
+  symbol_id: 0xd19691bd
+  symbol_id: 0x8689cf0f
+  symbol_id: 0x8da2cfcb
+  symbol_id: 0x005c3998
+  symbol_id: 0x00111bab
+  symbol_id: 0x1e629967
+  symbol_id: 0xf1401602
+  symbol_id: 0xd00eb623
+  symbol_id: 0x23113228
+  symbol_id: 0xc1013b0e
+  symbol_id: 0x28ba8e50
+  symbol_id: 0x65d6ca81
+  symbol_id: 0x27081fa8
+  symbol_id: 0x4fa74969
+  symbol_id: 0x458a15db
+  symbol_id: 0x017aa13b
+  symbol_id: 0x058addcb
+  symbol_id: 0x698c5d5a
+  symbol_id: 0x7db02791
+  symbol_id: 0x93579cdd
+  symbol_id: 0x74eec260
+  symbol_id: 0xcd5a930a
+  symbol_id: 0x642a8f0e
+  symbol_id: 0x5cb0984c
+  symbol_id: 0x61134f05
+  symbol_id: 0x26767170
+  symbol_id: 0x40d34b30
+  symbol_id: 0xeb805131
+  symbol_id: 0xebf521c2
+  symbol_id: 0x0fa1166f
+  symbol_id: 0x9dc7df03
+  symbol_id: 0xcd06f186
+  symbol_id: 0xc4cdaff8
+  symbol_id: 0x7f382772
+  symbol_id: 0x4636cb2f
+  symbol_id: 0xa2a80692
+  symbol_id: 0x306598a8
+  symbol_id: 0xccbb9f00
+  symbol_id: 0x99c34b67
+  symbol_id: 0x5bbd22c3
+  symbol_id: 0x490e6dfe
+  symbol_id: 0xa4bda7eb
+  symbol_id: 0xa388be0c
+  symbol_id: 0x34456de2
+  symbol_id: 0x9b9bd086
+  symbol_id: 0xb784add6
+  symbol_id: 0x46255d0e
+  symbol_id: 0xcd27d22d
+  symbol_id: 0x85218a7f
+  symbol_id: 0x9368cefd
+  symbol_id: 0xd37bdc53
+  symbol_id: 0x1d42003f
+  symbol_id: 0xf3b2b115
+  symbol_id: 0x985c43d8
+  symbol_id: 0xd5545a99
+  symbol_id: 0x9f89ff97
+  symbol_id: 0x52e0026e
+  symbol_id: 0x5a17d8da
+  symbol_id: 0xdf129c81
+  symbol_id: 0x94b29523
+  symbol_id: 0x27d7263a
+  symbol_id: 0x19ba4c41
+  symbol_id: 0xc9e82455
+  symbol_id: 0x71c7b52f
+  symbol_id: 0x1aff7044
+  symbol_id: 0x5b961c3b
+  symbol_id: 0x50e4a55a
+  symbol_id: 0x29990ff9
+  symbol_id: 0xf9082011
+  symbol_id: 0x95c739b2
+  symbol_id: 0x61fdb8d4
+  symbol_id: 0x10a4724b
+  symbol_id: 0xd357707f
+  symbol_id: 0xe506b8c8
+  symbol_id: 0xe2b0e5a5
+  symbol_id: 0xb8036e9c
+  symbol_id: 0xe36e392a
+  symbol_id: 0xe3de7018
+  symbol_id: 0x26fb2401
+  symbol_id: 0xec79392b
+  symbol_id: 0xf5728f86
+  symbol_id: 0xb71ce21c
+  symbol_id: 0x40588e62
+  symbol_id: 0x9db24364
+  symbol_id: 0xbe4d24aa
+  symbol_id: 0xca6e1d6e
+  symbol_id: 0xf964baa3
+  symbol_id: 0x85b62ff5
+  symbol_id: 0xcbfc5627
+  symbol_id: 0xee3e4c4b
+  symbol_id: 0x083944d7
+  symbol_id: 0x377ef2e6
+  symbol_id: 0xd87751ae
+  symbol_id: 0xd3bfa538
+  symbol_id: 0x1544acf1
+  symbol_id: 0xacdbe7cb
+  symbol_id: 0xc699a239
+  symbol_id: 0xe63f0c53
+  symbol_id: 0x8be0e5f9
+  symbol_id: 0xb3d357f8
+  symbol_id: 0x453bec03
+  symbol_id: 0x08284f40
+  symbol_id: 0xbd1c7f26
+  symbol_id: 0xb6e53400
+  symbol_id: 0xa6b53b87
+  symbol_id: 0xa66a671b
+  symbol_id: 0x4c312bdc
+  symbol_id: 0x538752dd
+  symbol_id: 0x3fb40bf5
+  symbol_id: 0x9f4df85d
+  symbol_id: 0x318c8fe5
+  symbol_id: 0x16c4cdb3
+  symbol_id: 0x3965b143
+  symbol_id: 0x23d1db24
+  symbol_id: 0x8ac60fa1
+  symbol_id: 0xc9f43d6f
+  symbol_id: 0xe6c411fe
+  symbol_id: 0xc4acef3c
+  symbol_id: 0x01465bb9
+  symbol_id: 0x24945e17
+  symbol_id: 0x7e41af4d
+  symbol_id: 0x2d5d9d4f
+  symbol_id: 0x99aacdb6
+  symbol_id: 0xf330039e
+  symbol_id: 0x76fed243
+  symbol_id: 0x3ea82fd1
+  symbol_id: 0xb8340e79
+  symbol_id: 0x783e3f26
+  symbol_id: 0xeb2dab5b
+  symbol_id: 0x5516ad40
+  symbol_id: 0x840bde05
+  symbol_id: 0x923f5818
+  symbol_id: 0x41ba71c8
+  symbol_id: 0x2278bde9
+  symbol_id: 0x9e9ee706
+  symbol_id: 0x34f75344
+  symbol_id: 0xc2c6cbcb
+  symbol_id: 0xef3ebc91
+  symbol_id: 0xd8c43eff
+  symbol_id: 0xd8909932
+  symbol_id: 0xc3590dc2
+  symbol_id: 0xed968a02
+  symbol_id: 0xd75c95b1
+  symbol_id: 0xecb95256
+  symbol_id: 0x5edeb48b
+  symbol_id: 0x13fc3df8
+  symbol_id: 0x22e56ff2
+  symbol_id: 0x6df0c91f
+  symbol_id: 0xb4e1cb45
+  symbol_id: 0x31405e51
+  symbol_id: 0x64a1a905
+  symbol_id: 0x702cbeb6
+  symbol_id: 0x29cfdcb2
+  symbol_id: 0xd44421aa
+  symbol_id: 0x3f880952
+  symbol_id: 0x6072555e
+  symbol_id: 0x96b640c7
+  symbol_id: 0x28517749
+  symbol_id: 0xdfe02c28
+  symbol_id: 0xdcce2e99
+  symbol_id: 0x7d8fe18b
+  symbol_id: 0x02252ed7
+  symbol_id: 0xbfb07eec
+  symbol_id: 0x396f9457
+  symbol_id: 0xd9c8585e
+  symbol_id: 0xa50d59b7
+  symbol_id: 0x224cb6b2
+  symbol_id: 0x57ecab02
+  symbol_id: 0x27d0c7b6
+  symbol_id: 0x28b33064
+  symbol_id: 0x60d84cc3
+  symbol_id: 0xb613af5e
+  symbol_id: 0xff029108
+  symbol_id: 0xd723c668
+  symbol_id: 0x13dfcd3d
+  symbol_id: 0xc2b69854
+  symbol_id: 0x4f3e5356
+  symbol_id: 0x44e50ff8
+  symbol_id: 0xec5c680b
+  symbol_id: 0xdc14ff55
+  symbol_id: 0x2616989d
+  symbol_id: 0xc922a019
+  symbol_id: 0xfdf9f7ee
+  symbol_id: 0x3c537500
+  symbol_id: 0x1b814fa6
+  symbol_id: 0x9ca2e070
+  symbol_id: 0x37d86bb7
+  symbol_id: 0x32ecd828
+  symbol_id: 0xe769f645
+  symbol_id: 0x37c3807c
+  symbol_id: 0xd883f01d
+  symbol_id: 0x3949f4f2
+  symbol_id: 0xe3ebf1bd
+  symbol_id: 0x9a649861
+  symbol_id: 0xced06429
+  symbol_id: 0x712a9478
+  symbol_id: 0x1b988a17
+  symbol_id: 0xe9eceac5
+  symbol_id: 0x0af305ea
+  symbol_id: 0xfda206aa
+  symbol_id: 0xb3d7f6dd
+  symbol_id: 0x24c72ae5
+  symbol_id: 0x5269af0f
+  symbol_id: 0xbbecac69
+  symbol_id: 0x73430331
+  symbol_id: 0x3e079c30
+  symbol_id: 0x2bfcd0ef
+  symbol_id: 0x16e3a1c0
+  symbol_id: 0x3c5cce26
+  symbol_id: 0xd9cc558b
+  symbol_id: 0x34de6be7
+  symbol_id: 0x9cc61d04
+  symbol_id: 0x07e4f5ea
+  symbol_id: 0x1eafdf64
+  symbol_id: 0x67d6372c
+  symbol_id: 0x0a48d5ac
+  symbol_id: 0x76729be5
+  symbol_id: 0xbab6c772
+  symbol_id: 0x66f0c8cd
+  symbol_id: 0xb10958e7
+  symbol_id: 0x45091f48
+  symbol_id: 0x1540c319
+  symbol_id: 0x06548b7e
+  symbol_id: 0xe99b6d83
+  symbol_id: 0x04525af5
+  symbol_id: 0x9252d1d7
+  symbol_id: 0x4f0ba1d7
+  symbol_id: 0xd115b1d3
+  symbol_id: 0x3937523a
+  symbol_id: 0x80238a68
+  symbol_id: 0x75040d3e
+  symbol_id: 0x7cd4622d
+  symbol_id: 0x5dfeb70f
+  symbol_id: 0x01a00013
+  symbol_id: 0xb9d0b3a8
+  symbol_id: 0x96b46225
+  symbol_id: 0x35a3d772
+  symbol_id: 0x86bcc4a0
+  symbol_id: 0xf6382d08
+  symbol_id: 0x433f7035
+  symbol_id: 0x8238784d
+  symbol_id: 0xc80fa4a7
+  symbol_id: 0x39db373c
+  symbol_id: 0x3852868c
+  symbol_id: 0x27f20808
+  symbol_id: 0x63876663
+  symbol_id: 0xdea420f5
+  symbol_id: 0x8ffabaa9
+  symbol_id: 0x50bce06e
+  symbol_id: 0x133a7a3e
+  symbol_id: 0xdeaa9b25
+  symbol_id: 0x6f7d4414
+  symbol_id: 0x37d02bbe
+  symbol_id: 0x9ac8ef20
+  symbol_id: 0x35c96922
+  symbol_id: 0xbe6406c3
+  symbol_id: 0x9c6c58ea
+  symbol_id: 0x2fefe933
+  symbol_id: 0xec861eec
+  symbol_id: 0x5810bdc3
+  symbol_id: 0x3cbd6214
+  symbol_id: 0xff509c01
+  symbol_id: 0xa58a02f7
+  symbol_id: 0x419ed67f
+  symbol_id: 0x0847b0c3
+  symbol_id: 0xd1eec7be
+  symbol_id: 0xbc68a810
+  symbol_id: 0x2feb66ad
+  symbol_id: 0x9a271493
+  symbol_id: 0xcb617d2b
+  symbol_id: 0x9d3ae050
+  symbol_id: 0x180e6903
+  symbol_id: 0x162de729
+  symbol_id: 0x5983afac
+  symbol_id: 0x8c3e2fab
+  symbol_id: 0xc25fb732
+  symbol_id: 0x904aadaf
+  symbol_id: 0x5b0002a1
+  symbol_id: 0x2c8694e0
+  symbol_id: 0xa21a61f0
+  symbol_id: 0x324ff23b
+  symbol_id: 0xde0961b5
+  symbol_id: 0x93ed1ac4
+  symbol_id: 0xffcee71a
+  symbol_id: 0xe61df390
+  symbol_id: 0xd2a1df18
+  symbol_id: 0x18bfee32
+  symbol_id: 0x53d0da35
+  symbol_id: 0x9595d229
+  symbol_id: 0xe770d8d1
+  symbol_id: 0xa321b388
+  symbol_id: 0x958eb206
+  symbol_id: 0xd0c1e622
+  symbol_id: 0x1ea7ecbd
+  symbol_id: 0xe47c4cd7
+  symbol_id: 0xa01539e9
+  symbol_id: 0x46d93e48
+  symbol_id: 0x0bb33843
+  symbol_id: 0x6d6403f6
+  symbol_id: 0x52200b18
+  symbol_id: 0x0ce26450
+  symbol_id: 0x141fdc1f
+  symbol_id: 0xf1513a2c
+  symbol_id: 0x1070f731
+  symbol_id: 0xb7c9d0b8
+  symbol_id: 0x8897c24a
+  symbol_id: 0xffa3ecd1
+  symbol_id: 0x42595f98
+  symbol_id: 0xd085753f
+  symbol_id: 0xc37c9a74
+  symbol_id: 0xd03f3f09
+  symbol_id: 0x123cd197
+  symbol_id: 0xe57e5e73
+  symbol_id: 0x8ba9d028
+  symbol_id: 0x22f7748e
+  symbol_id: 0x12951e5c
+  symbol_id: 0xe4bc7703
+  symbol_id: 0xf9e83d36
+  symbol_id: 0x80bebca0
+  symbol_id: 0xe207c73b
+  symbol_id: 0x84bf9f80
+  symbol_id: 0xea4938d9
+  symbol_id: 0xdc02a166
+  symbol_id: 0x2e5af443
+  symbol_id: 0x125dc05b
+  symbol_id: 0x5cb257e7
+  symbol_id: 0x51dd09eb
+  symbol_id: 0x243b376d
+  symbol_id: 0x793668af
+  symbol_id: 0x1e384c7a
+  symbol_id: 0x693c5568
+  symbol_id: 0x1ef72034
+  symbol_id: 0xc2bb86d6
+  symbol_id: 0x1dad348b
+  symbol_id: 0xd50beffc
+  symbol_id: 0xba681a1a
+  symbol_id: 0x5fa10488
+  symbol_id: 0x9db95d0c
+  symbol_id: 0x81e2991f
+  symbol_id: 0xc278f4fa
+  symbol_id: 0x9c15bd7a
+  symbol_id: 0x5ebc16d0
+  symbol_id: 0xb39736f6
+  symbol_id: 0x9d35d830
+  symbol_id: 0xf0c151e7
+  symbol_id: 0xac7ed12e
+  symbol_id: 0x02d49a4a
+  symbol_id: 0xc8a98327
+  symbol_id: 0x1e7f3ab3
+  symbol_id: 0x6a3f9c83
+  symbol_id: 0xd75689cb
+  symbol_id: 0x992e8b3c
+  symbol_id: 0xcd9e585e
+  symbol_id: 0x69eeb51b
+  symbol_id: 0x0dfe21ad
+  symbol_id: 0x30e87de6
+  symbol_id: 0x6fc1e83f
+  symbol_id: 0x0e1df21c
+  symbol_id: 0xac520589
+  symbol_id: 0x2eeef935
+  symbol_id: 0x890d0269
+  symbol_id: 0xa22df476
+  symbol_id: 0x3b5dbc43
+  symbol_id: 0x06367b1f
+  symbol_id: 0x90818f05
+  symbol_id: 0x49b0b3dc
+  symbol_id: 0xe4264e80
+  symbol_id: 0xb37c1005
+  symbol_id: 0x793c34e6
+  symbol_id: 0xe501016b
+  symbol_id: 0x67bb32d8
+  symbol_id: 0xccd5125f
+  symbol_id: 0xc7d3f838
+  symbol_id: 0x1a84af17
+  symbol_id: 0x13b5133e
+  symbol_id: 0x6e21f792
+  symbol_id: 0x4e868331
+  symbol_id: 0xd306839f
+  symbol_id: 0x8fff831c
+  symbol_id: 0x61290d1f
+  symbol_id: 0x409cd326
+  symbol_id: 0x0ccd2ae9
+  symbol_id: 0x14a69275
+  symbol_id: 0x6a86851c
+  symbol_id: 0x9ef66b44
+  symbol_id: 0x61d52d25
+  symbol_id: 0xac255df6
+  symbol_id: 0xe1cb7751
+  symbol_id: 0x6e315775
+  symbol_id: 0x10d51eda
+  symbol_id: 0x7a9c49cb
+  symbol_id: 0xf1503ace
+  symbol_id: 0x2c0117f0
+  symbol_id: 0xa3314c5c
+  symbol_id: 0xe7bafb12
+  symbol_id: 0x32988703
+  symbol_id: 0x39bc463d
+  symbol_id: 0xe8c3a46c
+  symbol_id: 0x92ad6653
+  symbol_id: 0x765567f1
+  symbol_id: 0x67cab613
+  symbol_id: 0xe7b7f01e
+  symbol_id: 0xdff4358e
+  symbol_id: 0x21353f4f
+  symbol_id: 0xdcbb9215
+  symbol_id: 0x2447e16e
+  symbol_id: 0xad90b9ef
+  symbol_id: 0xeab149af
+  symbol_id: 0x0a235dd5
+  symbol_id: 0xa92902da
+  symbol_id: 0x2c092465
+  symbol_id: 0x161b2b54
+  symbol_id: 0x707a35cb
+  symbol_id: 0xbb500a73
+  symbol_id: 0x9a68c1f7
+  symbol_id: 0x70790afa
+  symbol_id: 0x726f15c1
+  symbol_id: 0x6db2cfc5
+  symbol_id: 0x5364e8c5
+  symbol_id: 0x2c2de021
+  symbol_id: 0x73eeb559
+  symbol_id: 0xe3713e89
+  symbol_id: 0x69dcbd79
+  symbol_id: 0x14fb1d7f
+  symbol_id: 0xae5a377c
+  symbol_id: 0xfa197680
+  symbol_id: 0x4ef078c0
+  symbol_id: 0x634946e6
+  symbol_id: 0x0c0b5c37
+  symbol_id: 0x2f08ffc6
+  symbol_id: 0xbe1a0b7f
+  symbol_id: 0x6fa67e06
+  symbol_id: 0x1114603a
+  symbol_id: 0xbebe3d2e
+  symbol_id: 0x56ffdefe
+  symbol_id: 0xd6e8532d
+  symbol_id: 0x9df74c73
+  symbol_id: 0x740c134e
+  symbol_id: 0xacd66e9e
+  symbol_id: 0xf8bcc2db
+  symbol_id: 0x3f5b9269
+  symbol_id: 0xdfa2e68a
+  symbol_id: 0x17806848
+  symbol_id: 0x86c3082b
+  symbol_id: 0x0fdc5a85
+  symbol_id: 0x3ce6f576
+  symbol_id: 0xc93168f3
+  symbol_id: 0x761cec78
+  symbol_id: 0x0707a7ce
+  symbol_id: 0x470ca027
+  symbol_id: 0x173c6399
+  symbol_id: 0xecd5c994
+  symbol_id: 0xf439020c
+  symbol_id: 0xd1503081
+  symbol_id: 0x689f5b8d
+  symbol_id: 0x287a4dba
+  symbol_id: 0xba770aa5
+  symbol_id: 0x7c38f5dc
+  symbol_id: 0x0c39a57f
+  symbol_id: 0x6c300812
+  symbol_id: 0x8370f127
+  symbol_id: 0xe59b51ac
+  symbol_id: 0x82feb89e
+  symbol_id: 0x417866a8
+  symbol_id: 0x013abbf5
+  symbol_id: 0x9542ffda
+  symbol_id: 0xb1ded749
+  symbol_id: 0xf131e6d4
+  symbol_id: 0x50cfaca0
+  symbol_id: 0xf5634793
+  symbol_id: 0xac156dd0
+  symbol_id: 0x9e86d87a
+  symbol_id: 0x6f7172e0
+  symbol_id: 0xa74e4e73
+  symbol_id: 0x508c3717
+  symbol_id: 0xe5abcddf
+  symbol_id: 0xb30e2978
+  symbol_id: 0x49cc7bc6
+  symbol_id: 0x13a3a596
+  symbol_id: 0xdc17958b
+  symbol_id: 0x80062cae
+  symbol_id: 0x420bc618
+  symbol_id: 0x47a664c6
+  symbol_id: 0x01428af9
+  symbol_id: 0xb323415e
+  symbol_id: 0xf8f6df36
+  symbol_id: 0xe8ed13a6
+  symbol_id: 0x2c91b5be
+  symbol_id: 0xf8b12136
+  symbol_id: 0xb11c92aa
+  symbol_id: 0xaa322a74
+  symbol_id: 0x0d9f5d07
+  symbol_id: 0x864eb34f
+  symbol_id: 0xb7a7a808
+  symbol_id: 0x160949a1
+  symbol_id: 0xf5e8f5ed
+  symbol_id: 0xa10f5ac7
+  symbol_id: 0x5b48ee3a
+  symbol_id: 0xdea8ab93
+  symbol_id: 0x55fd0d76
+  symbol_id: 0x25e7db1a
+  symbol_id: 0xb634bd54
+  symbol_id: 0xaba73bf2
+  symbol_id: 0xa2a45fe2
+  symbol_id: 0xe8ce7aa9
+  symbol_id: 0xe1b4680c
+  symbol_id: 0xe243fac9
+  symbol_id: 0xf140b7ff
+  symbol_id: 0x2e17e257
+  symbol_id: 0xb89cc5d0
+  symbol_id: 0x92ae3cd2
+  symbol_id: 0x8dbf40f1
+  symbol_id: 0x80c5af01
+  symbol_id: 0xd2ecbea7
+  symbol_id: 0x8153c982
+  symbol_id: 0x14190014
+  symbol_id: 0xa0afbf37
+  symbol_id: 0xc779d1cf
+  symbol_id: 0xe2cb1aad
+  symbol_id: 0x3fc75673
+  symbol_id: 0x14d7bd08
+  symbol_id: 0x8a5e5384
+  symbol_id: 0x4139dc1a
+  symbol_id: 0x15bd9b54
+  symbol_id: 0x25ae3e5f
+  symbol_id: 0x80df38ea
+  symbol_id: 0x322949f1
+  symbol_id: 0x878b97bb
+  symbol_id: 0x1f3f17bd
+  symbol_id: 0x53f4166f
+  symbol_id: 0x59caaeac
+  symbol_id: 0x64f92138
+  symbol_id: 0x2e13b831
+  symbol_id: 0x57ba6430
+  symbol_id: 0x131272a2
+  symbol_id: 0x58b605c8
+  symbol_id: 0xf06ef566
+  symbol_id: 0x3020cd17
+  symbol_id: 0x25c6452e
+  symbol_id: 0x324d8228
+  symbol_id: 0xd612789c
+  symbol_id: 0x561323f1
+  symbol_id: 0xa9ebbb66
+  symbol_id: 0x2f21ba25
+  symbol_id: 0x81c5befa
+  symbol_id: 0x17e91481
+  symbol_id: 0xd1691fe4
+  symbol_id: 0x4804f611
+  symbol_id: 0x842fc505
+  symbol_id: 0xd28bb85a
+  symbol_id: 0x9e62b4cc
+  symbol_id: 0x26c5a1b9
+  symbol_id: 0xdb34fc88
+  symbol_id: 0xb0eab20a
+  symbol_id: 0x8229d43c
+  symbol_id: 0xa3012e88
+  symbol_id: 0x8900d981
+  symbol_id: 0x9d05e78b
+  symbol_id: 0x8a65993b
+  symbol_id: 0x1a646dda
+  symbol_id: 0x52651755
+  symbol_id: 0x3987d121
+  symbol_id: 0x608fa528
+  symbol_id: 0x9f666495
+  symbol_id: 0x6f0567ec
+  symbol_id: 0x927e4918
+  symbol_id: 0x98e59f77
+  symbol_id: 0xbecf4baa
+  symbol_id: 0xe38cbeaa
+  symbol_id: 0xec727723
+  symbol_id: 0xe9a7481c
+  symbol_id: 0x5ff552c9
+  symbol_id: 0x6423f928
+  symbol_id: 0x6a9aa538
+  symbol_id: 0x0422d1e4
+  symbol_id: 0x48fb8c7e
+  symbol_id: 0x180b11d3
+  symbol_id: 0xd46a0ddb
+  symbol_id: 0x49317a7a
+  symbol_id: 0xd780999c
+  symbol_id: 0xe8fde451
+  symbol_id: 0xda3d90c9
+  symbol_id: 0x85643cba
+  symbol_id: 0x10599707
+  symbol_id: 0x49314bbb
+  symbol_id: 0x0df14cdd
+  symbol_id: 0x0fae0c8d
+  symbol_id: 0x5749ee7e
+  symbol_id: 0xe5e4dbdf
+  symbol_id: 0x52cfab58
+  symbol_id: 0xfd020b9f
+  symbol_id: 0x7c9e1a26
+  symbol_id: 0x499b7b9e
+  symbol_id: 0x712f800b
+  symbol_id: 0x37c95360
+  symbol_id: 0xd27c5bdf
+  symbol_id: 0xe2f2f3da
+  symbol_id: 0xeb5eabdb
+  symbol_id: 0x1561afad
+  symbol_id: 0x7ba3baed
+  symbol_id: 0xceb41cae
+  symbol_id: 0x2197c0b9
+  symbol_id: 0x830bfa0f
+  symbol_id: 0x5a85390c
+  symbol_id: 0x0f84842d
+  symbol_id: 0x74a4f32b
+  symbol_id: 0x990f6662
+  symbol_id: 0x9864ac97
+  symbol_id: 0x2dabc7a6
+  symbol_id: 0x465b6faa
+  symbol_id: 0xafb47c9f
+  symbol_id: 0x408f4567
+  symbol_id: 0x7fc27c29
+  symbol_id: 0x9dc0e748
+  symbol_id: 0x2251af59
+  symbol_id: 0xea6abe92
+  symbol_id: 0xbbb52558
+  symbol_id: 0x5b447f09
+  symbol_id: 0x0e3a132f
+  symbol_id: 0x16154bce
+  symbol_id: 0x8becb370
+  symbol_id: 0x42a88d96
+  symbol_id: 0xb36e22d3
+  symbol_id: 0x683db5bf
+  symbol_id: 0x177fa0e0
+  symbol_id: 0x11d4227b
+  symbol_id: 0x71551ba9
+  symbol_id: 0x435b99c6
+  symbol_id: 0x01768311
+  symbol_id: 0x1744651d
+  symbol_id: 0x9103dd70
+  symbol_id: 0xffdd03be
+  symbol_id: 0x15848de9
+  symbol_id: 0xde695e5a
+  symbol_id: 0x4e730977
+  symbol_id: 0x53ee2234
+  symbol_id: 0x227e051f
+  symbol_id: 0x9a5fd229
+  symbol_id: 0xe4363e0f
+  symbol_id: 0x97ae9712
+  symbol_id: 0x649b0ae0
+  symbol_id: 0x4ecdb62e
+  symbol_id: 0xb60564aa
+  symbol_id: 0x9209e3c3
+  symbol_id: 0x6dd94494
+  symbol_id: 0x69e23de7
+  symbol_id: 0xb53f86dc
+  symbol_id: 0x87ac4949
+  symbol_id: 0xac6b1fea
+  symbol_id: 0x90383f0c
+  symbol_id: 0x6a663d57
+  symbol_id: 0xbed674f6
+  symbol_id: 0x0ca915af
+  symbol_id: 0x2721b297
+  symbol_id: 0xf60ed3ec
+  symbol_id: 0x1f556538
+  symbol_id: 0xb51f872d
+  symbol_id: 0x1f203052
+  symbol_id: 0x1c94f26a
+  symbol_id: 0xda033b26
+  symbol_id: 0xfc5b9a92
+  symbol_id: 0xd1f648be
+  symbol_id: 0x32b0de3e
+  symbol_id: 0x88fdaf2f
+  symbol_id: 0x23d99f29
+  symbol_id: 0xf65a8574
+  symbol_id: 0x69d73c4e
+  symbol_id: 0x9653ad6f
+  symbol_id: 0xbc5e2f91
+  symbol_id: 0x05375661
+  symbol_id: 0x8e8693ec
+  symbol_id: 0x938485a1
+  symbol_id: 0x486016b6
+  symbol_id: 0xae54e6d0
+  symbol_id: 0x3cb678c1
+  symbol_id: 0x826d9499
+  symbol_id: 0x49a7f238
+  symbol_id: 0x51af4178
+  symbol_id: 0xcdedac88
+  symbol_id: 0xceaba6d1
+  symbol_id: 0x829cc511
+  symbol_id: 0xd8d641e9
+  symbol_id: 0xf1e11c16
+  symbol_id: 0xdbf9c67a
+  symbol_id: 0xd1e79536
+  symbol_id: 0x2c564089
+  symbol_id: 0x8afe9539
+  symbol_id: 0xb3a33a94
+  symbol_id: 0x5a1e8208
+  symbol_id: 0x2eff102f
+  symbol_id: 0x1072c3ea
+  symbol_id: 0x0b9aa695
+  symbol_id: 0x50df738e
+  symbol_id: 0x98734bd3
+  symbol_id: 0xfb623241
+  symbol_id: 0x3aeddbd4
+  symbol_id: 0x0128eff9
+  symbol_id: 0xcd29475b
+  symbol_id: 0xc67413f4
+  symbol_id: 0xf3a8b66c
+  symbol_id: 0xb151be0e
+  symbol_id: 0x909b3688
+  symbol_id: 0x126f72d4
+  symbol_id: 0x1367c9d8
+  symbol_id: 0x2355a9dd
+  symbol_id: 0x2f1102f6
+  symbol_id: 0x7389434f
+  symbol_id: 0x3a05c2fc
+  symbol_id: 0x854212b1
+  symbol_id: 0xd12105c9
+  symbol_id: 0xb826c91a
+  symbol_id: 0x85c7decb
+  symbol_id: 0x87a9e1a0
+  symbol_id: 0x5b227eda
+  symbol_id: 0x46082c90
+  symbol_id: 0x590d247f
+  symbol_id: 0x91579542
+  symbol_id: 0x2a59e35c
+  symbol_id: 0x3b03aaea
+  symbol_id: 0xeeb1ddf9
+  symbol_id: 0x54bb98b3
+  symbol_id: 0x183217e2
+  symbol_id: 0xb7634e4d
+  symbol_id: 0x005b9494
+  symbol_id: 0x9fb09fdf
+  symbol_id: 0x0238e2a9
+  symbol_id: 0x7c26f0bc
+  symbol_id: 0xb7ff4d92
+  symbol_id: 0x38aaa220
+  symbol_id: 0xb34d0634
+  symbol_id: 0xeab63d27
+  symbol_id: 0x1bc307a0
+  symbol_id: 0xab29122c
+  symbol_id: 0x0748dfdb
+  symbol_id: 0x0695a248
+  symbol_id: 0x7165409e
+  symbol_id: 0x2c5e821c
+  symbol_id: 0xa36bcd31
+  symbol_id: 0x6c1eddbc
+  symbol_id: 0xba3fffd9
+  symbol_id: 0x20a31fba
+  symbol_id: 0xd467aa67
+  symbol_id: 0x55f2d454
+  symbol_id: 0xf8464b2a
+  symbol_id: 0x4e8f8f88
+  symbol_id: 0x5c86ec9a
+  symbol_id: 0x31cbcd74
+  symbol_id: 0xdd35f00b
+  symbol_id: 0x1843760e
+  symbol_id: 0xca5987b4
+  symbol_id: 0xf83d14d2
+  symbol_id: 0x0987d619
+  symbol_id: 0x4b59a0e3
+  symbol_id: 0x9fdcbc57
+  symbol_id: 0x5a0b5a6d
+  symbol_id: 0xd27c4a50
+  symbol_id: 0x3a87c686
+  symbol_id: 0x4268401e
+  symbol_id: 0xb02bf4aa
+  symbol_id: 0x2b900c73
+  symbol_id: 0xf62fefe0
+  symbol_id: 0x49b7d4e1
+  symbol_id: 0x3e36e803
+  symbol_id: 0xfb6bc213
+  symbol_id: 0x65ef2e20
+  symbol_id: 0xa5791e4a
+  symbol_id: 0xe4053aa7
+  symbol_id: 0xe5e8386c
+  symbol_id: 0xce0ee445
+  symbol_id: 0x4feaaf8f
+  symbol_id: 0x91f3338a
+  symbol_id: 0x64440a60
+  symbol_id: 0x6cde79b4
+  symbol_id: 0xd68bae0f
+  symbol_id: 0x2b688ec7
+  symbol_id: 0x248856c2
+  symbol_id: 0x6ff192fd
+  symbol_id: 0x3deea824
+  symbol_id: 0x90b29211
+  symbol_id: 0x2991c962
+  symbol_id: 0x2e6efbc9
+  symbol_id: 0x259a5a1d
+  symbol_id: 0xd12e2c62
+  symbol_id: 0xdbf7d123
+  symbol_id: 0xebf295af
+  symbol_id: 0x8b6e9080
+  symbol_id: 0xc3c79032
+  symbol_id: 0x7aadc374
+  symbol_id: 0x799e8ae8
+  symbol_id: 0x541cef30
+  symbol_id: 0xf68e2a91
+  symbol_id: 0x33807c0a
+  symbol_id: 0x396ad9d1
+  symbol_id: 0x960e5c5b
+  symbol_id: 0x77274abe
+  symbol_id: 0xf2357f9f
+  symbol_id: 0xc16e78d8
+  symbol_id: 0xabbc8603
+  symbol_id: 0x4cf1070c
+  symbol_id: 0x9e48588d
+  symbol_id: 0x3945d02a
+  symbol_id: 0x32908e47
+  symbol_id: 0xc91eefc6
+  symbol_id: 0x7511baca
+  symbol_id: 0x29553efc
+  symbol_id: 0xfd198070
+  symbol_id: 0x4a781b7f
+  symbol_id: 0xc92def38
+  symbol_id: 0xdd41811b
+  symbol_id: 0x0118b55f
+  symbol_id: 0x4e97a73b
+  symbol_id: 0x62f86638
+  symbol_id: 0x117f1097
+  symbol_id: 0x8570255f
+  symbol_id: 0x438146c4
+  symbol_id: 0xf069b7fd
+  symbol_id: 0xd8377ddc
+  symbol_id: 0xfbb2197e
+  symbol_id: 0xb4fdfb1e
+  symbol_id: 0x04d5663a
+  symbol_id: 0x5cf2f6f8
+  symbol_id: 0xa66866da
+  symbol_id: 0xcbfd8cea
+  symbol_id: 0x2804801a
+  symbol_id: 0x4893b166
+  symbol_id: 0xbf6a903f
+  symbol_id: 0xddb9ed35
+  symbol_id: 0x21d8367b
+  symbol_id: 0xce959ab5
+  symbol_id: 0x41f70cdb
+  symbol_id: 0x805d1994
+  symbol_id: 0x1764380c
+  symbol_id: 0x5a67d15f
+  symbol_id: 0xfb766d3e
+  symbol_id: 0xc20a2c2c
+  symbol_id: 0x0b03a904
+  symbol_id: 0x2bce772d
+  symbol_id: 0x705777ef
+  symbol_id: 0x21b06e02
+  symbol_id: 0x70f8b485
+  symbol_id: 0x3a44a497
+  symbol_id: 0xc0705cb4
+  symbol_id: 0x5ebdf90f
+  symbol_id: 0x9cb108b5
+  symbol_id: 0xdfdf59f8
+  symbol_id: 0x195b028a
+  symbol_id: 0x78126b2c
+  symbol_id: 0x5153378f
+  symbol_id: 0xe5686fed
+  symbol_id: 0xf7b2b5e2
+  symbol_id: 0x64df4bab
+  symbol_id: 0xdf865b89
+  symbol_id: 0xc6c6c125
+  symbol_id: 0x0538a0a0
+  symbol_id: 0x755857c9
+  symbol_id: 0xb261904e
+  symbol_id: 0x8732c1c9
+  symbol_id: 0x677926cf
+  symbol_id: 0x0d3c3e14
+  symbol_id: 0xe5340075
+  symbol_id: 0x6aab6dda
+  symbol_id: 0x089f5fe6
+  symbol_id: 0x0c73acc8
+  symbol_id: 0xace4bcdf
+  symbol_id: 0x57ee69c1
+  symbol_id: 0xd76b82b2
+  symbol_id: 0x30c7b7f4
+  symbol_id: 0x9c7a2d6c
+  symbol_id: 0x48fc2cb6
+  symbol_id: 0xd41c441b
+  symbol_id: 0x8607d899
+  symbol_id: 0x1d945826
+  symbol_id: 0xa3f52060
+  symbol_id: 0x001f1a24
+  symbol_id: 0x46d54e34
+  symbol_id: 0x48ae5586
+  symbol_id: 0xfba840ea
+  symbol_id: 0x9562ae27
+  symbol_id: 0xf985c978
+  symbol_id: 0x5ba6dff6
+  symbol_id: 0xf977c032
+  symbol_id: 0x7802cb99
+  symbol_id: 0x821675f7
+  symbol_id: 0x2831202e
+  symbol_id: 0x8be50e45
+  symbol_id: 0x66112f81
+  symbol_id: 0x46449fce
+  symbol_id: 0xefa494ef
+  symbol_id: 0x74fbd45c
+  symbol_id: 0x139e6573
+  symbol_id: 0x17c74c49
+  symbol_id: 0x6f637792
+  symbol_id: 0xf63fdfbf
+  symbol_id: 0xe12c6c9f
+  symbol_id: 0xb5ebcdfc
+  symbol_id: 0x71ecd71f
+  symbol_id: 0x7b08b3df
+  symbol_id: 0x6af2dc93
+  symbol_id: 0x56f4af9c
+  symbol_id: 0x93ee7a0f
+  symbol_id: 0x7d858174
+  symbol_id: 0x0e66eaf7
+  symbol_id: 0x81bce56b
+  symbol_id: 0x01a1f5e7
+  symbol_id: 0xa3ee1393
+  symbol_id: 0x492407e0
+  symbol_id: 0xfd36afa6
+  symbol_id: 0x988f4d92
+  symbol_id: 0x1bdc5aa0
+  symbol_id: 0x8b5859cf
+  symbol_id: 0x7c2a2a37
+  symbol_id: 0x882375b2
+  symbol_id: 0xa4ceb82a
+  symbol_id: 0x47a1f086
+  symbol_id: 0x8c26ec8b
+  symbol_id: 0xab5f4767
+  symbol_id: 0xd056ad1b
+  symbol_id: 0x2104bead
+  symbol_id: 0xedc5f666
+  symbol_id: 0x9e73d367
+  symbol_id: 0x3cf252e7
+  symbol_id: 0x828f61b2
+  symbol_id: 0xa7a9bc3b
+  symbol_id: 0xc5684e9c
+  symbol_id: 0xe51d6dd1
+  symbol_id: 0xec4ea718
+  symbol_id: 0x4f384161
+  symbol_id: 0x79536269
+  symbol_id: 0xb55db035
+  symbol_id: 0x4f3dccb0
+  symbol_id: 0xa341b4f5
+  symbol_id: 0x7450c7fb
+  symbol_id: 0x45bac715
+  symbol_id: 0x431a82e5
+  symbol_id: 0x795a1c4e
+  symbol_id: 0x9e9162a1
+  symbol_id: 0x5ca3653a
+  symbol_id: 0x5400f960
+  symbol_id: 0x4173a10e
+  symbol_id: 0x5e9d56ee
+  symbol_id: 0x999465c1
+  symbol_id: 0x74844b2a
+  symbol_id: 0xa2e29e3b
+  symbol_id: 0x74c27ecd
+  symbol_id: 0x80913de9
+  symbol_id: 0xbffd1c46
+  symbol_id: 0x264c5308
+  symbol_id: 0x205145e9
+  symbol_id: 0x0eff96d9
+  symbol_id: 0xc7dca9cd
+  symbol_id: 0xa503728e
+  symbol_id: 0x8163968f
+  symbol_id: 0x29f98a43
+  symbol_id: 0x43241ada
+  symbol_id: 0x5c6aa8cb
+  symbol_id: 0xae7aa450
+  symbol_id: 0x2edd194c
+  symbol_id: 0x12aeae3a
+  symbol_id: 0xa4ad8391
+  symbol_id: 0x5c1197ba
+  symbol_id: 0x22e1072c
+  symbol_id: 0x50b92bc4
+  symbol_id: 0x8c0dd14a
+  symbol_id: 0x3480e8df
+  symbol_id: 0x0bf91812
+  symbol_id: 0x16db3f05
+  symbol_id: 0x258649b1
+  symbol_id: 0x761738c2
+  symbol_id: 0x1ff99fdd
+  symbol_id: 0xe74ce327
+  symbol_id: 0x35e3ce18
+  symbol_id: 0xb2a4fdfa
+  symbol_id: 0x8fb082a6
+  symbol_id: 0x570df167
+  symbol_id: 0x84f045c2
+  symbol_id: 0x4513114c
+  symbol_id: 0x56cb7a36
+  symbol_id: 0xe8c754b0
+  symbol_id: 0x12fb2fd6
+  symbol_id: 0xac6ce0b0
+  symbol_id: 0xe224f61e
+  symbol_id: 0xd2090791
+  symbol_id: 0xedd0d1ed
+  symbol_id: 0xda5d60be
+  symbol_id: 0x33ee29b2
+  symbol_id: 0x43533d44
+  symbol_id: 0xa85c9809
+  symbol_id: 0xd762c8bb
+  symbol_id: 0x4bf9c130
+  symbol_id: 0xdc781a16
+  symbol_id: 0x5ad6b744
+  symbol_id: 0x67d7bbc2
+  symbol_id: 0x11ca9115
+  symbol_id: 0xf4841d33
+  symbol_id: 0x34a94ed3
+  symbol_id: 0xb05cd7bd
+  symbol_id: 0xf41c5e13
+  symbol_id: 0xafbfe5ff
+  symbol_id: 0xf5a7fda4
+  symbol_id: 0x3d4320ba
+  symbol_id: 0x120bf14f
+  symbol_id: 0xa2bcc818
+  symbol_id: 0xa0d4d843
+  symbol_id: 0x7a6a0afc
+  symbol_id: 0x1586d077
+  symbol_id: 0x2ee3ef04
+  symbol_id: 0x008a247e
+  symbol_id: 0xd3148537
+  symbol_id: 0xb5b25b58
+  symbol_id: 0x278a6b59
+  symbol_id: 0xe4036f2e
+  symbol_id: 0xd49d7abc
+  symbol_id: 0x76dea2aa
+  symbol_id: 0x14eb95fa
+  symbol_id: 0x474e9bcc
+  symbol_id: 0xf10245da
+  symbol_id: 0x18cbd7f9
+  symbol_id: 0x30f6b9b1
+  symbol_id: 0x8ef5c221
+  symbol_id: 0x32b196e0
+  symbol_id: 0x022517f0
+  symbol_id: 0x4d8a452e
+  symbol_id: 0x7509c737
+  symbol_id: 0xd8a616ba
+  symbol_id: 0xcecaa985
+  symbol_id: 0x36deacf7
+  symbol_id: 0xf0e07f22
+  symbol_id: 0x63a78c37
+  symbol_id: 0x5286bfd6
+  symbol_id: 0x42390c70
+  symbol_id: 0x8deacb1d
+  symbol_id: 0x2e407415
+  symbol_id: 0xc9021692
+  symbol_id: 0xcf17c9a6
+  symbol_id: 0x9c54c873
+  symbol_id: 0x771aea1d
+  symbol_id: 0x8d3c4841
+  symbol_id: 0x05840f35
+  symbol_id: 0xa6141872
+  symbol_id: 0x56b779c5
+  symbol_id: 0xc4c7fcde
+  symbol_id: 0x20d4dbb9
+  symbol_id: 0x6febaf59
+  symbol_id: 0x5ab300fb
+  symbol_id: 0x33d40ef0
+  symbol_id: 0xeb6692c0
+  symbol_id: 0x38940a34
+  symbol_id: 0x322ca1cc
+  symbol_id: 0xad3b5931
+  symbol_id: 0xdc85b8be
+  symbol_id: 0xd1dc3f24
+  symbol_id: 0xa6a2da07
+  symbol_id: 0xa6fc085f
+  symbol_id: 0x4e595f64
+  symbol_id: 0xd94e8fae
+  symbol_id: 0xd2399e18
+  symbol_id: 0xa6c906b5
+  symbol_id: 0x5cc4535c
+  symbol_id: 0x7d2c4acc
+  symbol_id: 0x1f593233
+  symbol_id: 0x808ff24a
+  symbol_id: 0xd40f1edd
+  symbol_id: 0xb1df15e0
+  symbol_id: 0x08c47cc6
+  symbol_id: 0x48499e9a
+  symbol_id: 0x3ea6cb2c
+  symbol_id: 0x26011f31
+  symbol_id: 0x252b1748
+  symbol_id: 0xbd7218cd
+  symbol_id: 0x8ef4fedc
+  symbol_id: 0x4f956c89
+  symbol_id: 0x3003f174
+  symbol_id: 0xf85ae22f
+  symbol_id: 0xcca4d1a0
+  symbol_id: 0xc3a3db62
+  symbol_id: 0xc472be84
+  symbol_id: 0x842bd7b1
+  symbol_id: 0x01c90481
+  symbol_id: 0xfdf415e2
+  symbol_id: 0xbf0b0a4c
+  symbol_id: 0x4a4e8bee
+  symbol_id: 0x5b060b7d
+  symbol_id: 0xec171799
+  symbol_id: 0x24b9d7ed
+  symbol_id: 0x25471057
+  symbol_id: 0xb77dc501
+  symbol_id: 0xb543d6ba
+  symbol_id: 0x569844be
+  symbol_id: 0x17b3f8eb
+  symbol_id: 0x4814ecd5
+  symbol_id: 0xb2b0c8fa
+  symbol_id: 0xfb710d3e
+  symbol_id: 0x0af60b8b
+  symbol_id: 0xe0349007
+  symbol_id: 0xfae0b182
+  symbol_id: 0x9ef87854
+  symbol_id: 0xc5442265
+  symbol_id: 0x25bebf3b
+  symbol_id: 0x59b4ca07
+  symbol_id: 0xba8007cd
+  symbol_id: 0x91763ae6
+  symbol_id: 0x2cc9ecc6
+  symbol_id: 0x56c495a4
+  symbol_id: 0x331ad54e
+  symbol_id: 0x6f6a6551
+  symbol_id: 0xd9f835a5
+  symbol_id: 0xe17d94e2
+  symbol_id: 0x704b33f2
+  symbol_id: 0x39477e15
+  symbol_id: 0x05a66e98
+  symbol_id: 0x3c71822d
+  symbol_id: 0x6e10178a
+  symbol_id: 0x5d6a93ff
+  symbol_id: 0x2bb7ad6a
+  symbol_id: 0x4bb58367
+  symbol_id: 0x63762e51
+  symbol_id: 0x3e462ca5
+  symbol_id: 0x970aca32
+  symbol_id: 0x7e56f1cb
+  symbol_id: 0xb28c2541
+  symbol_id: 0xf8889a4c
+  symbol_id: 0x89ed643c
+  symbol_id: 0x620f0859
+  symbol_id: 0x4e412a59
+  symbol_id: 0xaf2bd97c
+  symbol_id: 0x5b1dd2cc
+  symbol_id: 0x7a3ba5ab
+  symbol_id: 0x2189bf03
+  symbol_id: 0x9a2a9bda
+  symbol_id: 0x54732419
+  symbol_id: 0x7df87144
+  symbol_id: 0xdfe1cb53
+  symbol_id: 0x2c6a64fa
+  symbol_id: 0x689737cf
+  symbol_id: 0x7b6738b5
+  symbol_id: 0x07b831b6
+  symbol_id: 0x1f625c64
+  symbol_id: 0x180ceb0c
+  symbol_id: 0x19ed5e1a
+  symbol_id: 0xaae00157
+  symbol_id: 0x455375fa
+  symbol_id: 0xc1ea8aaa
+  symbol_id: 0xe19d98a9
+  symbol_id: 0xdebcf3e9
+  symbol_id: 0x5d6d169f
+  symbol_id: 0x023858a0
+  symbol_id: 0x7b2c2128
+  symbol_id: 0x69cf76f8
+  symbol_id: 0x9f643b02
+  symbol_id: 0x37d43848
+  symbol_id: 0x9b754839
+  symbol_id: 0xe9c59a02
+  symbol_id: 0x7aad3cde
+  symbol_id: 0x9c381e9a
+  symbol_id: 0xcf06c075
+  symbol_id: 0xc335d09a
+  symbol_id: 0xed461eb7
+  symbol_id: 0x9c9476f8
+  symbol_id: 0x0e434d19
+  symbol_id: 0x124a6437
+  symbol_id: 0x005702f9
+  symbol_id: 0x80197b32
+  symbol_id: 0x55c5bdf3
+  symbol_id: 0x7c74f0ec
+  symbol_id: 0x8525915d
+  symbol_id: 0x12402fa7
+  symbol_id: 0x7f3b48aa
+  symbol_id: 0xf47010e0
+  symbol_id: 0x436ee92c
+  symbol_id: 0xd2beae59
+  symbol_id: 0x96bd64f2
+  symbol_id: 0x064eb0d1
+  symbol_id: 0xbf6056e5
+  symbol_id: 0xaba9754d
+  symbol_id: 0x6a9fad39
+  symbol_id: 0x99c66454
+  symbol_id: 0xfc18945f
+  symbol_id: 0xcbc81720
+  symbol_id: 0xda8bd5f1
+  symbol_id: 0xa07fb91d
+  symbol_id: 0x40c45272
+  symbol_id: 0xbdcb1d7d
+  symbol_id: 0x341fb250
+  symbol_id: 0x2deba225
+  symbol_id: 0x7a099f60
+  symbol_id: 0xa63a57d8
+  symbol_id: 0xd438cd46
+  symbol_id: 0xa58f5af9
+  symbol_id: 0x5f5db40c
+  symbol_id: 0xb9d20cc1
+  symbol_id: 0x935a92ca
+  symbol_id: 0x4f6b19f1
+  symbol_id: 0xd4ea779d
+  symbol_id: 0x67a38bc7
+  symbol_id: 0xd7cc5056
+  symbol_id: 0x40df740b
+  symbol_id: 0x89a97545
+  symbol_id: 0x62f414d0
+  symbol_id: 0x517294f8
+  symbol_id: 0xa3febb65
+  symbol_id: 0x1bedb04f
+  symbol_id: 0xd8114005
+  symbol_id: 0x736f4bcb
+  symbol_id: 0x3ffd8828
+  symbol_id: 0x38f9f2a7
+  symbol_id: 0x5d5ff743
+  symbol_id: 0x091ef2aa
+  symbol_id: 0x6bf3e0a9
+  symbol_id: 0xd3102305
+  symbol_id: 0xe9b464cc
+  symbol_id: 0x49088d8f
+  symbol_id: 0x267fd1ec
+  symbol_id: 0x9065463e
+  symbol_id: 0x5f0785ba
+  symbol_id: 0x9d80748f
+  symbol_id: 0x7887ea8f
+  symbol_id: 0xf1f40891
+  symbol_id: 0xe40dd16b
+  symbol_id: 0xe3dfe241
+  symbol_id: 0x33735fec
+  symbol_id: 0xca7402ca
+  symbol_id: 0x778992cc
+  symbol_id: 0x0e0dc50e
+  symbol_id: 0x90d072a5
+  symbol_id: 0x859796a9
+  symbol_id: 0x3f4150a5
+  symbol_id: 0xae246c18
+  symbol_id: 0x9d194bee
+  symbol_id: 0xe12b6ced
+  symbol_id: 0x2204e0c5
+  symbol_id: 0xc680f7e5
+  symbol_id: 0xa393d439
+  symbol_id: 0x3c015632
+  symbol_id: 0xea81e880
+  symbol_id: 0xd1b9e255
+  symbol_id: 0x24587583
+  symbol_id: 0xf23330c5
+  symbol_id: 0x05746b6c
+  symbol_id: 0xd034d018
+  symbol_id: 0x745d77d7
+  symbol_id: 0xee44d535
+  symbol_id: 0xeedc57e1
+  symbol_id: 0x57adf54a
+  symbol_id: 0xcfc71fe1
+  symbol_id: 0xadfa8107
+  symbol_id: 0xa9faaf0c
+  symbol_id: 0xb8d1e828
+  symbol_id: 0x059d7a50
+  symbol_id: 0x5d808bbc
+  symbol_id: 0xf46be251
+  symbol_id: 0x824ee5eb
+  symbol_id: 0xdf906b66
+  symbol_id: 0x4c674d1e
+  symbol_id: 0x1f9b728b
+  symbol_id: 0x99a17453
+  symbol_id: 0x675bcd74
+  symbol_id: 0x35280a80
+  symbol_id: 0x03fd01bd
+  symbol_id: 0x7df62009
+  symbol_id: 0xba68a39f
+  symbol_id: 0x62b259b4
+  symbol_id: 0xa511d0ea
+  symbol_id: 0x476ce3a0
+  symbol_id: 0x83c5422c
+  symbol_id: 0xff4bd5dc
+  symbol_id: 0x1adae35c
+  symbol_id: 0x6aca9744
+  symbol_id: 0x6b08a95c
+  symbol_id: 0x238c5442
+  symbol_id: 0x20fc506b
+  symbol_id: 0xe3942db0
+  symbol_id: 0x74d92df1
+  symbol_id: 0x7983b6b1
+  symbol_id: 0xafa6f89a
+  symbol_id: 0x2e657b50
+  symbol_id: 0xf9680c5d
+  symbol_id: 0x4b5d3ed2
+  symbol_id: 0xf8dd0a45
+  symbol_id: 0x7d021e87
+  symbol_id: 0x8a143ba0
+  symbol_id: 0x47548cf4
+  symbol_id: 0xfa53e7be
+  symbol_id: 0x5e6e4a8e
+  symbol_id: 0x32ffb327
+  symbol_id: 0x3491ba62
+  symbol_id: 0x30679a90
+  symbol_id: 0xd0976985
+  symbol_id: 0x5f29be60
+  symbol_id: 0xfd1fa5d2
+  symbol_id: 0x964dcd4d
+  symbol_id: 0xb9a87429
+  symbol_id: 0xbfd5ebac
+  symbol_id: 0x68c67cd0
+  symbol_id: 0xc10b3ddb
+  symbol_id: 0xcd9887e8
+  symbol_id: 0x9ebdc6d8
+  symbol_id: 0x4974f847
+  symbol_id: 0x45ca79f2
+  symbol_id: 0x720046df
+  symbol_id: 0x0e8fdef9
+  symbol_id: 0x9dc5f190
+  symbol_id: 0x4436f3b6
+  symbol_id: 0x39aa3d60
+  symbol_id: 0xc6fd5d28
+  symbol_id: 0x3a3577fc
+  symbol_id: 0x26db3306
+  symbol_id: 0xcb6ed759
+  symbol_id: 0x62017cf8
+  symbol_id: 0x4fc4b51e
+  symbol_id: 0x6e6a37f2
+  symbol_id: 0x2c61b358
+  symbol_id: 0x352feb2c
+  symbol_id: 0xf21d6619
+  symbol_id: 0xba998ee2
+  symbol_id: 0x74420600
+  symbol_id: 0x92edca7e
+  symbol_id: 0xb2f7eb17
+  symbol_id: 0x8eb5b50d
+  symbol_id: 0x1f5649eb
+  symbol_id: 0x0af8ff72
+  symbol_id: 0xe3ec4d34
+  symbol_id: 0xf23ecd34
+  symbol_id: 0xf8078eea
+  symbol_id: 0x46985c24
+  symbol_id: 0x1b94f9a7
+  symbol_id: 0x723461f4
+  symbol_id: 0x30c684dc
+  symbol_id: 0x80680525
+  symbol_id: 0xf84e3b0d
+  symbol_id: 0x1c40b8b7
+  symbol_id: 0xb63a9550
+  symbol_id: 0x46cb4d6f
+  symbol_id: 0xe2e2b58b
+  symbol_id: 0xf7d58a02
+  symbol_id: 0x92cb0839
+  symbol_id: 0x3662091d
+  symbol_id: 0xf31fbaa5
+  symbol_id: 0x8ba98f3d
+  symbol_id: 0x047e7c15
+  symbol_id: 0x3fb7a184
+  symbol_id: 0xd1f293b0
+  symbol_id: 0x690f235d
+  symbol_id: 0xe278d2b9
+  symbol_id: 0x84e7b6d6
+  symbol_id: 0xc6659892
+  symbol_id: 0x2c45f8ab
+  symbol_id: 0x21ecd4de
+  symbol_id: 0x3300426e
+  symbol_id: 0x1d763a17
+  symbol_id: 0x407cd33b
+  symbol_id: 0x99dadb46
+  symbol_id: 0x7f8de782
+  symbol_id: 0x6a0561ba
+  symbol_id: 0x14d25dda
+  symbol_id: 0x9994fae4
+  symbol_id: 0x6b59ec0c
+  symbol_id: 0xaf61c3cf
+  symbol_id: 0x6c20af20
+  symbol_id: 0xc9059346
+  symbol_id: 0x7ffcfd26
+  symbol_id: 0x01423777
+  symbol_id: 0x6dcd301e
+  symbol_id: 0x49206b79
+  symbol_id: 0x2ce95c75
+  symbol_id: 0x2a7b2b50
+  symbol_id: 0xc606a54b
+  symbol_id: 0x7b979ccf
+  symbol_id: 0xc2ff39cb
+  symbol_id: 0xfa58787c
+  symbol_id: 0x015c4998
+  symbol_id: 0x8fdbed5d
+  symbol_id: 0xc4468dde
+  symbol_id: 0xe36bf059
+  symbol_id: 0xa0ea8280
+  symbol_id: 0xc2b88037
+  symbol_id: 0xa15d28fb
+  symbol_id: 0x72bc9a43
+  symbol_id: 0xe7655218
+  symbol_id: 0xb11490ee
+  symbol_id: 0x64da441a
+  symbol_id: 0x78acbf5c
+  symbol_id: 0xc1355d55
+  symbol_id: 0xaffee4ad
+  symbol_id: 0xc665994d
+  symbol_id: 0x6e3b2c73
+  symbol_id: 0x739b4d97
+  symbol_id: 0x4c6c2d05
+  symbol_id: 0xc5bea14a
+  symbol_id: 0x6355ee58
+  symbol_id: 0x687a68d3
+  symbol_id: 0x97843792
+  symbol_id: 0xc88e38bb
+  symbol_id: 0x4086fab0
+  symbol_id: 0x33a917a0
+  symbol_id: 0x4c3ba1e9
+  symbol_id: 0x05ad614a
+  symbol_id: 0xe6fd4826
+  symbol_id: 0x04c98965
+  symbol_id: 0xb5349f49
+  symbol_id: 0x98f26ea1
+  symbol_id: 0xdc66f122
+  symbol_id: 0x7c07ccc5
+  symbol_id: 0x310b431a
+  symbol_id: 0xcd537f33
+  symbol_id: 0xef58928a
+  symbol_id: 0x48726233
+  symbol_id: 0xabad0839
+  symbol_id: 0x6d4398fa
+  symbol_id: 0xce618820
+  symbol_id: 0x40ea2324
+  symbol_id: 0x9fc83467
+  symbol_id: 0x55809d13
+  symbol_id: 0x6d5fd07f
+  symbol_id: 0x1f495628
+  symbol_id: 0x3eaad2c3
+  symbol_id: 0xe436d856
+  symbol_id: 0x79fa03e3
+  symbol_id: 0x3af545e9
+  symbol_id: 0xa013f08e
+  symbol_id: 0x9ba011d3
+  symbol_id: 0xa976fac7
+  symbol_id: 0x88e57905
+  symbol_id: 0x97f4e147
+  symbol_id: 0xb01de4a2
+  symbol_id: 0x56f3103d
+  symbol_id: 0x5805599a
+  symbol_id: 0x6baed657
+  symbol_id: 0x230cb690
+  symbol_id: 0x30162bad
+  symbol_id: 0x00b2c629
+  symbol_id: 0x72a7bbd2
+  symbol_id: 0x5fe5beeb
+  symbol_id: 0x900c4eab
+  symbol_id: 0x6a48086d
+  symbol_id: 0xb95cb131
+  symbol_id: 0x2673800e
+  symbol_id: 0x04af389d
+  symbol_id: 0x685b01fa
+  symbol_id: 0x93803c84
+  symbol_id: 0x7c7f5167
+  symbol_id: 0xe5cef1d3
+  symbol_id: 0x816c43b3
+  symbol_id: 0xc4b7b8fe
+  symbol_id: 0xd30316c2
+  symbol_id: 0xc6d51e10
+  symbol_id: 0x9c066dd7
+  symbol_id: 0x1c3814ad
+  symbol_id: 0xd2e3da2e
+  symbol_id: 0x14184fbf
+  symbol_id: 0x3b425caf
+  symbol_id: 0x32cae5ee
+  symbol_id: 0x0651ce31
+  symbol_id: 0x194db723
+  symbol_id: 0x05175c9b
+  symbol_id: 0x622ff2b0
+  symbol_id: 0x6e3d8fa4
+  symbol_id: 0x6974548c
+  symbol_id: 0xe0ea15f1
+  symbol_id: 0xa829435f
+  symbol_id: 0x7be16ce2
+  symbol_id: 0x0967d0a1
+  symbol_id: 0x33edf503
+  symbol_id: 0x5ca98337
+  symbol_id: 0xbcf8b9bf
+  symbol_id: 0x83497546
+  symbol_id: 0x4ece0732
+  symbol_id: 0x284bec0f
+  symbol_id: 0xb2cef8e2
+  symbol_id: 0xed806c73
+  symbol_id: 0x1be58b2b
+  symbol_id: 0x456ecb71
+  symbol_id: 0x590eabae
+  symbol_id: 0x3401a29b
+  symbol_id: 0x3e54b0dd
+  symbol_id: 0x731fabf8
+  symbol_id: 0x0939aa53
+  symbol_id: 0x671e9438
+  symbol_id: 0xac19d61a
+  symbol_id: 0x4333f082
+  symbol_id: 0xf7ca54f0
+  symbol_id: 0xcfa933b0
+  symbol_id: 0xc7bb50ac
+  symbol_id: 0xc4ac81a3
+  symbol_id: 0xde3137d4
+  symbol_id: 0x3728c158
+  symbol_id: 0xd326bb7c
+  symbol_id: 0xe138dce0
+  symbol_id: 0xeffe0f16
+  symbol_id: 0x7b771682
+  symbol_id: 0x39362be4
+  symbol_id: 0xba26b6a3
+  symbol_id: 0xfdaa1c0d
+  symbol_id: 0xe86ce747
+  symbol_id: 0x85476106
+  symbol_id: 0x1780168b
+  symbol_id: 0x743e9912
+  symbol_id: 0x13b529c0
+  symbol_id: 0x55b4474a
+  symbol_id: 0xe2eab328
+  symbol_id: 0xf4d76908
+  symbol_id: 0xc99e9aa2
+  symbol_id: 0xc3db62f6
+  symbol_id: 0x2f764099
+  symbol_id: 0x17969d2e
+  symbol_id: 0xf2e31909
+  symbol_id: 0xb31331bc
+  symbol_id: 0xc699d17a
+  symbol_id: 0x8d01be1f
+  symbol_id: 0x53ad82f3
+  symbol_id: 0x9140558e
+  symbol_id: 0xe3077a93
+  symbol_id: 0x0e0941ba
+  symbol_id: 0x3b461c8b
+  symbol_id: 0x393d4a00
+  symbol_id: 0x485ebef5
+  symbol_id: 0x94f291e3
+  symbol_id: 0x071b0cf7
+  symbol_id: 0x680976a6
+  symbol_id: 0xc98f6928
+  symbol_id: 0x042377cd
+  symbol_id: 0xdaf3a27e
+  symbol_id: 0xbe2a8422
+  symbol_id: 0x38ac4651
+  symbol_id: 0xf74b4f61
+  symbol_id: 0xf76668be
+  symbol_id: 0xc1ff3a0f
+  symbol_id: 0xb9875bdb
+  symbol_id: 0x494d6bbb
+  symbol_id: 0xbc1bec89
+  symbol_id: 0x37c222d5
+  symbol_id: 0x75b6f1be
+  symbol_id: 0x54aaff66
+  symbol_id: 0xa9e263e3
+  symbol_id: 0x0d5e8c9c
+  symbol_id: 0xc08173b3
+  symbol_id: 0x581a0bb3
+  symbol_id: 0x863d7345
+  symbol_id: 0xad8ec240
+  symbol_id: 0x2c7eedb1
+  symbol_id: 0x89ede675
+  symbol_id: 0x1c97d739
+  symbol_id: 0x2aa3fe50
+  symbol_id: 0x8a3c07b3
+  symbol_id: 0xffcd07df
+  symbol_id: 0x322f6dbd
+  symbol_id: 0x56de18f0
+  symbol_id: 0xc78ca9c9
+  symbol_id: 0xf0ca1a39
+  symbol_id: 0x4ca735c5
+  symbol_id: 0xf4594c32
+  symbol_id: 0xa33694f6
+  symbol_id: 0x7e8e12de
+  symbol_id: 0xe69a5898
+  symbol_id: 0xbd07e567
+  symbol_id: 0xf304733e
+  symbol_id: 0x153d2098
+  symbol_id: 0xc24d49e4
+  symbol_id: 0xd09568e0
+  symbol_id: 0xe4a0e986
+  symbol_id: 0x6dc2f0b4
+  symbol_id: 0xac5037c8
+  symbol_id: 0x0aa43c83
+  symbol_id: 0x02489ec9
+  symbol_id: 0x1737916a
+  symbol_id: 0xe77c296b
+  symbol_id: 0xfcf064a9
+  symbol_id: 0x9dd5c94f
+  symbol_id: 0xe1ae099f
+  symbol_id: 0x54bdcaa9
+  symbol_id: 0x81366fa1
+  symbol_id: 0x4d0e9517
+  symbol_id: 0x189b20cc
+  symbol_id: 0x968e2d31
+  symbol_id: 0x5d71d694
+  symbol_id: 0x898b21e8
+  symbol_id: 0x14d6909c
+  symbol_id: 0x258b3330
+  symbol_id: 0x1e28701f
+  symbol_id: 0x07b0efd7
+  symbol_id: 0x35fbffad
+  symbol_id: 0x400b412c
+  symbol_id: 0x544af8d3
+  symbol_id: 0x0ab31bef
+  symbol_id: 0x457e09db
+  symbol_id: 0xbf5ecdb4
+  symbol_id: 0x8f344cc6
+  symbol_id: 0x123ab6a2
+  symbol_id: 0x747f8310
+  symbol_id: 0x7bd225a5
+  symbol_id: 0xe7f214f1
+  symbol_id: 0x22209cb5
+  symbol_id: 0x248c1bba
+  symbol_id: 0x563982aa
+  symbol_id: 0xc3067e63
+  symbol_id: 0x5577d5a8
+  symbol_id: 0x0e1b0b82
+  symbol_id: 0xfb52ace2
+  symbol_id: 0x44e002a2
+  symbol_id: 0x1fe11014
+  symbol_id: 0x2a267913
+  symbol_id: 0xf3c91dcd
+  symbol_id: 0x3da4fd63
+  symbol_id: 0xc49e9f39
+  symbol_id: 0x89663420
+  symbol_id: 0xfadb35f8
+  symbol_id: 0xfc0e1518
+  symbol_id: 0xa16b7b6f
+  symbol_id: 0x177b2fdf
+  symbol_id: 0xcbe3a021
+  symbol_id: 0x489b0049
+  symbol_id: 0x86020d6e
+  symbol_id: 0xe639979e
+  symbol_id: 0xe072259b
+  symbol_id: 0x4cdd0c3f
+  symbol_id: 0x9a5404bf
+  symbol_id: 0x2f857527
+  symbol_id: 0x3e5f4f82
+  symbol_id: 0xbf1515af
+  symbol_id: 0x18d0dd21
+  symbol_id: 0x92705587
+  symbol_id: 0xdbe66171
+  symbol_id: 0x90640a71
+  symbol_id: 0x5b711bcd
+  symbol_id: 0xc84792a8
+  symbol_id: 0xdc690470
+  symbol_id: 0x0804ce19
+  symbol_id: 0xd284bafa
+  symbol_id: 0xae8fd9b8
+  symbol_id: 0x8e57aec2
+  symbol_id: 0x06721103
+  symbol_id: 0x4b618371
+  symbol_id: 0x1deea65a
+  symbol_id: 0x5e1b9bc5
+  symbol_id: 0x51be9cf5
+  symbol_id: 0x1ec7cdc1
+  symbol_id: 0x48a2aa64
+  symbol_id: 0xd556d15c
+  symbol_id: 0x4a678355
+  symbol_id: 0xe063e9de
+  symbol_id: 0xddd9e037
+  symbol_id: 0x7d99e76c
+  symbol_id: 0x389ac279
+  symbol_id: 0xe845f76e
+  symbol_id: 0xda44819e
+  symbol_id: 0x46cd3193
+  symbol_id: 0xb6c44fb1
+  symbol_id: 0xb5701f35
+  symbol_id: 0xeeb4dc4c
+  symbol_id: 0x314b4b2e
+  symbol_id: 0x4ecc800b
+  symbol_id: 0x88fcd367
+  symbol_id: 0xa64e4b1e
+  symbol_id: 0xd143c302
+  symbol_id: 0xbf6d0a0f
+  symbol_id: 0x2eda3aae
+  symbol_id: 0x9891b743
+  symbol_id: 0x51f65372
+  symbol_id: 0xd26fea36
+  symbol_id: 0x6d894b2b
+  symbol_id: 0x9c77d018
+  symbol_id: 0x9b3fb280
+  symbol_id: 0x6c3c9573
+  symbol_id: 0x01cdd14d
+  symbol_id: 0xc924b9c3
+  symbol_id: 0x2c53af12
+  symbol_id: 0xa4bb7174
+  symbol_id: 0xd6adc7e6
+  symbol_id: 0xcc386657
+  symbol_id: 0xeb0e3e9b
+  symbol_id: 0x857e5dc9
+  symbol_id: 0x85459353
+  symbol_id: 0x1ecfd7d9
+  symbol_id: 0x80ba938c
+  symbol_id: 0x76f0e146
+  symbol_id: 0x8ff05644
+  symbol_id: 0x3da83409
+  symbol_id: 0xbabc4102
+  symbol_id: 0x4c16a6b4
+  symbol_id: 0xc8ad19b6
+  symbol_id: 0xdebe76ba
+  symbol_id: 0xae3ea97c
+  symbol_id: 0x6869c83d
+  symbol_id: 0x5bbd3545
+  symbol_id: 0xf4017fdd
+  symbol_id: 0x2d1f2cdd
+  symbol_id: 0xdfc3c1f5
+  symbol_id: 0x4da66281
+  symbol_id: 0x8c0c76a2
+  symbol_id: 0x91df6de8
+  symbol_id: 0x96242237
+  symbol_id: 0x571b278c
+  symbol_id: 0x3272fe14
+  symbol_id: 0x73954c59
+  symbol_id: 0x0f9699eb
+  symbol_id: 0x66782435
+  symbol_id: 0x793a755b
+  symbol_id: 0x68e98442
+  symbol_id: 0x1cf36c3c
+  symbol_id: 0x9fc8421c
+  symbol_id: 0xd79bc23e
+  symbol_id: 0x2179a4e4
+  symbol_id: 0x6642e9e1
+  symbol_id: 0x4063e8a2
+  symbol_id: 0x78e97bdd
+  symbol_id: 0xdc3e523b
+  symbol_id: 0x3934d205
+  symbol_id: 0xa603e7df
+  symbol_id: 0xfbbf21e2
+  symbol_id: 0xb08b0149
+  symbol_id: 0x22b164d3
+  symbol_id: 0x18c0f285
+  symbol_id: 0xd3e5c9bd
+  symbol_id: 0x96be8568
+  symbol_id: 0xf7dfdad1
+  symbol_id: 0x47d78ddb
+  symbol_id: 0x961122f4
+  symbol_id: 0x86b2ecdf
+  symbol_id: 0x00fb9c6d
+  symbol_id: 0x0e209244
+  symbol_id: 0xe8ad61b2
+  symbol_id: 0x4f11a926
+  symbol_id: 0x0a4752d3
+  symbol_id: 0x50d8dcae
+  symbol_id: 0x8545e3e2
+  symbol_id: 0xe324c6fd
+  symbol_id: 0x4213c7e8
+  symbol_id: 0x09b538c5
+  symbol_id: 0x167489e0
+  symbol_id: 0x4fcdf35d
+  symbol_id: 0xe743c11a
+  symbol_id: 0x89177dc3
+  symbol_id: 0xa53cf4d8
+  symbol_id: 0x866696e3
+  symbol_id: 0x2eccd186
+  symbol_id: 0xeefac25a
+  symbol_id: 0xc796457e
+  symbol_id: 0xd1284f5b
+  symbol_id: 0xed8ca0be
+  symbol_id: 0x3df2f359
+  symbol_id: 0x33172d21
+  symbol_id: 0x54bbaa46
+  symbol_id: 0x3d986fb5
+  symbol_id: 0x2f855953
+  symbol_id: 0x8814f5b8
+  symbol_id: 0xe54aec5b
+  symbol_id: 0xce4acc7b
+  symbol_id: 0xe244df50
+  symbol_id: 0xfd33d38f
+  symbol_id: 0x74651475
+  symbol_id: 0x931c2b2c
+  symbol_id: 0xe39ac5d6
+  symbol_id: 0xe134ecc7
+  symbol_id: 0x8804c70b
+  symbol_id: 0x2d6405ae
+  symbol_id: 0xfa270a04
+  symbol_id: 0x9b356a61
+  symbol_id: 0x83b49800
+  symbol_id: 0xb8bb996e
+  symbol_id: 0x414369cc
+  symbol_id: 0x4012acca
+  symbol_id: 0xf57e37fe
+  symbol_id: 0xb0b2d21a
+  symbol_id: 0xd755dcd0
+  symbol_id: 0x05d29e21
+  symbol_id: 0x370666f8
+  symbol_id: 0xaf95f073
+  symbol_id: 0x6dd2d49f
+  symbol_id: 0x95984acc
+  symbol_id: 0x3cd017aa
+  symbol_id: 0xe12a74f8
+  symbol_id: 0x17314b18
+  symbol_id: 0xfa2cb6b6
+  symbol_id: 0xc4fae65d
+  symbol_id: 0x7d656c6a
+  symbol_id: 0x19abe185
+  symbol_id: 0x07c1d025
+  symbol_id: 0x697b29f0
+  symbol_id: 0x88860085
+  symbol_id: 0x27015d04
+  symbol_id: 0xd1b528e9
+  symbol_id: 0x5eb66253
+  symbol_id: 0xa97cb486
+  symbol_id: 0xace67562
+  symbol_id: 0x865df3c2
+  symbol_id: 0xc0b87726
+  symbol_id: 0xf117ebcd
+  symbol_id: 0xdc75c1bf
+  symbol_id: 0x164f9124
+  symbol_id: 0xd61f19c9
+  symbol_id: 0x677985f3
+  symbol_id: 0x6c2259cd
+  symbol_id: 0xacf009d6
+  symbol_id: 0x0b4dd20d
+  symbol_id: 0xae3ac3f6
+  symbol_id: 0xa7c71d5a
+  symbol_id: 0x8ca570bf
+  symbol_id: 0x64a32cf8
+  symbol_id: 0xebb339ef
+  symbol_id: 0x000b201f
+  symbol_id: 0x0b032f8d
+  symbol_id: 0xeafeba4a
+  symbol_id: 0xfdbc073c
+  symbol_id: 0x59f7bc61
+  symbol_id: 0xdeb902aa
+  symbol_id: 0x43145b7f
+  symbol_id: 0x30f9f63f
+  symbol_id: 0xd158764c
+  symbol_id: 0xbf8f4498
+  symbol_id: 0x0b050f75
+  symbol_id: 0xf0c9c0bf
+  symbol_id: 0x8a712bc6
+  symbol_id: 0xe5875746
+  symbol_id: 0x44728108
+  symbol_id: 0x2a899db0
+  symbol_id: 0x41fc53b5
+  symbol_id: 0xb7985539
+  symbol_id: 0x954d57e8
+  symbol_id: 0x604f0f0b
+  symbol_id: 0x5b997ef3
+  symbol_id: 0x6a405f9b
+  symbol_id: 0x8c3087ea
+  symbol_id: 0x4e9dfcab
+  symbol_id: 0x4a92dfd1
+  symbol_id: 0xb958a87a
+  symbol_id: 0xdcd44915
+  symbol_id: 0xca491b5d
+  symbol_id: 0x99f6096a
+  symbol_id: 0x1f87b736
+  symbol_id: 0x74487c98
+  symbol_id: 0x727ea003
+  symbol_id: 0x2aefba25
+  symbol_id: 0xc2ec2319
+  symbol_id: 0xe9e8ea7d
+  symbol_id: 0x8728e6bf
+  symbol_id: 0x3e022cbe
+  symbol_id: 0x40ef0583
+  symbol_id: 0x66974d1b
+  symbol_id: 0x4cc18d95
+  symbol_id: 0xfd34f897
+  symbol_id: 0x6eee841a
+  symbol_id: 0x0c2de3ab
+  symbol_id: 0xaf7b86f3
+  symbol_id: 0xe0d69cde
+  symbol_id: 0x6590f3a5
+  symbol_id: 0x8e95f895
+  symbol_id: 0x30438a62
+  symbol_id: 0x0d23e13a
+  symbol_id: 0xd02d0c21
+  symbol_id: 0x84b20708
+  symbol_id: 0x8fafe0a6
+  symbol_id: 0x6d4f7368
+  symbol_id: 0x29215b38
+  symbol_id: 0x1ee037b1
+  symbol_id: 0x13f409fa
+  symbol_id: 0xe9bfa224
+  symbol_id: 0x0df14bce
+  symbol_id: 0xd6fc8732
+  symbol_id: 0x22d09ebb
+  symbol_id: 0xad69345e
+  symbol_id: 0x381c401c
+  symbol_id: 0xfb60a10e
+  symbol_id: 0xc632b16e
+  symbol_id: 0xe95b649e
+  symbol_id: 0xc0a0fb3a
+  symbol_id: 0xaab0b041
+  symbol_id: 0x5800606d
+  symbol_id: 0xae69b1ad
+  symbol_id: 0x098b2c4d
+  symbol_id: 0x008276ec
+  symbol_id: 0xe9c62c61
+  symbol_id: 0xad19779c
+  symbol_id: 0x9987f06c
+  symbol_id: 0xb1a4c511
+  symbol_id: 0xa245ca71
+  symbol_id: 0x3f1f93d5
+  symbol_id: 0x42e824ab
+  symbol_id: 0x6a1d1a11
+  symbol_id: 0xd3ec6f8d
+  symbol_id: 0xffeb078f
+  symbol_id: 0x321abf21
+  symbol_id: 0x92b41cef
+  symbol_id: 0x7d9e83f8
+  symbol_id: 0xb9ea5b5a
+  symbol_id: 0x6489aa2a
+  symbol_id: 0xb55e05eb
+  symbol_id: 0xa60def42
+  symbol_id: 0x695ad58f
+  symbol_id: 0x35ae0706
+  symbol_id: 0x169dc8fd
+  symbol_id: 0xa590d80f
+  symbol_id: 0x61e25d6a
+  symbol_id: 0xf545666a
+  symbol_id: 0xfd503704
+  symbol_id: 0x74041438
+  symbol_id: 0x720b6de3
+  symbol_id: 0xe750d0b7
+  symbol_id: 0x9cefccb0
+  symbol_id: 0xef1a96f5
+  symbol_id: 0x93e3a105
+  symbol_id: 0xf946dfdd
+  symbol_id: 0xa7d65bf5
+  symbol_id: 0x2259ac6a
+  symbol_id: 0x3bea1d77
+  symbol_id: 0x83627eaa
+  symbol_id: 0x7f7d27b4
+  symbol_id: 0x674efb6f
+  symbol_id: 0x3fa12248
+  symbol_id: 0x5ba31e17
+  symbol_id: 0x3b41d1e4
+  symbol_id: 0xa45d6674
+  symbol_id: 0xca76e0b2
+  symbol_id: 0x536defb8
+  symbol_id: 0x60b0cfc9
+  symbol_id: 0x583a63e9
+  symbol_id: 0x9d64a1ae
+  symbol_id: 0x31203d5e
+  symbol_id: 0xd7166db7
+  symbol_id: 0xaf574bfc
+  symbol_id: 0x7f35e3d5
+  symbol_id: 0x493c067d
+  symbol_id: 0xc3b81360
+  symbol_id: 0x02278a0a
+  symbol_id: 0x1c4ece11
+  symbol_id: 0xcd6f9634
+  symbol_id: 0xba7435fd
+  symbol_id: 0xb59c5eaf
+  symbol_id: 0x051c0489
+  symbol_id: 0x56d1da85
+  symbol_id: 0xe74af45a
+  symbol_id: 0x3ecd46f0
+  symbol_id: 0xde541a7b
+  symbol_id: 0xe6e08555
+  symbol_id: 0xf49dae9f
+  symbol_id: 0xf6ca1448
+  symbol_id: 0xaa5366ae
+  symbol_id: 0x82188885
+  symbol_id: 0xf8fc1aee
+  symbol_id: 0x5ef2af2f
+  symbol_id: 0xb6a9e694
+  symbol_id: 0xba786154
+  symbol_id: 0xeb091e22
+  symbol_id: 0x17299607
+  symbol_id: 0xd4da9de2
+  symbol_id: 0x9e4a58bb
+  symbol_id: 0x29719a35
+  symbol_id: 0x25606668
+  symbol_id: 0x0a316c12
+  symbol_id: 0x349438ad
+  symbol_id: 0xf8f1d010
+  symbol_id: 0xad906d0d
+  symbol_id: 0x9c569794
+  symbol_id: 0x122d3ff3
+  symbol_id: 0xc9fa7338
+  symbol_id: 0xb163f167
+  symbol_id: 0x439eff60
+  symbol_id: 0x9f5197f0
+  symbol_id: 0x11fd8c82
+  symbol_id: 0xe41b8f90
+  symbol_id: 0x60ffe144
+  symbol_id: 0xffd70606
+  symbol_id: 0xe19f4159
+  symbol_id: 0xa4688ed8
+  symbol_id: 0x0f7f3fac
+  symbol_id: 0xefa2529f
+  symbol_id: 0x4d5eb284
+  symbol_id: 0x3c5dbd60
+  symbol_id: 0xe1be38c3
+  symbol_id: 0x6e1b5152
+  symbol_id: 0x4144b792
+  symbol_id: 0x4615e3af
+  symbol_id: 0x4bd3e4fd
+  symbol_id: 0x67d5fb19
+  symbol_id: 0xd3f1f6f2
+  symbol_id: 0x2b66ae90
+  symbol_id: 0x66161dd0
+  symbol_id: 0x06168d57
+  symbol_id: 0xf8e07177
+  symbol_id: 0x601a7ecc
+  symbol_id: 0xc9db6c79
+  symbol_id: 0x3681f5be
+  symbol_id: 0xcaff1088
+  symbol_id: 0xc391f7a5
+  symbol_id: 0x3c5aa8bf
+  symbol_id: 0x5386caa3
+  symbol_id: 0xfec1aa96
+  symbol_id: 0x0c7148f5
+  symbol_id: 0x115960c0
+  symbol_id: 0xb70e9915
+  symbol_id: 0x2da08566
+  symbol_id: 0x882a2ed7
+  symbol_id: 0xe437e69c
+  symbol_id: 0x2e6d8f4b
+  symbol_id: 0x5754936e
+  symbol_id: 0xba28112d
+  symbol_id: 0x75699b4c
+  symbol_id: 0xc9d63690
+  symbol_id: 0xaa01498e
+  symbol_id: 0xe109b3fc
+  symbol_id: 0xb9af2013
+  symbol_id: 0x2867d724
+  symbol_id: 0xa32cb360
+  symbol_id: 0x45dcd84f
+  symbol_id: 0x54ba3937
+  symbol_id: 0x8f72141f
+  symbol_id: 0x8dc26f05
+  symbol_id: 0xcb2698e3
+  symbol_id: 0xdc59a2d7
+  symbol_id: 0xc8d57f30
+  symbol_id: 0xa1439ad9
+  symbol_id: 0xaf52d437
+  symbol_id: 0xd95773fe
+  symbol_id: 0x805677f0
+  symbol_id: 0xed4e96d3
+  symbol_id: 0x7da4e281
+  symbol_id: 0x811fc2f9
+  symbol_id: 0xaff7b9fa
+  symbol_id: 0x73c499cf
+  symbol_id: 0x1e897b44
+  symbol_id: 0xdc4939d2
+  symbol_id: 0x9956a628
+  symbol_id: 0xe66de663
+  symbol_id: 0xc270a0aa
+  symbol_id: 0xb20d4b54
+  symbol_id: 0x9e6e4c47
+  symbol_id: 0xb9dd1d1a
+  symbol_id: 0x3d66dcb8
+  symbol_id: 0x1f68a496
+  symbol_id: 0x2a589f64
+  symbol_id: 0x7da41bc7
+  symbol_id: 0x795a4305
+  symbol_id: 0xfb07b087
+  symbol_id: 0xc71b1f63
+  symbol_id: 0xd980d303
+  symbol_id: 0x8f149e98
+  symbol_id: 0x16511917
+  symbol_id: 0x71b6da45
+  symbol_id: 0xad18bbc8
+  symbol_id: 0xcf52857c
+  symbol_id: 0x1b3cf36c
+  symbol_id: 0x27e59f46
+  symbol_id: 0x109adee2
+  symbol_id: 0x784d1cb4
+  symbol_id: 0xd75ad246
+  symbol_id: 0xdefa9d60
+  symbol_id: 0x905187d4
+  symbol_id: 0x8483fc3d
+  symbol_id: 0xd0fc1c2a
+  symbol_id: 0x79e3481b
+  symbol_id: 0x5eaa090d
+  symbol_id: 0x3fdad193
+  symbol_id: 0x00e285ec
+  symbol_id: 0x50104747
+  symbol_id: 0xe17a0800
+  symbol_id: 0x1a573f6f
+  symbol_id: 0x84761308
+  symbol_id: 0x8975adfa
+  symbol_id: 0x9bbb59cf
+  symbol_id: 0x973ae918
+  symbol_id: 0xb3507f92
+  symbol_id: 0x792a6c04
+  symbol_id: 0xdc1a1266
+  symbol_id: 0x4a8ce807
+  symbol_id: 0x4ec99a42
+  symbol_id: 0xf83f300d
+  symbol_id: 0x57c3f1e7
+  symbol_id: 0xe78aa16d
+  symbol_id: 0x7478c07c
+  symbol_id: 0x84592be3
+  symbol_id: 0x7db34954
+  symbol_id: 0x810ae5df
+  symbol_id: 0x0f6331d1
+  symbol_id: 0x4f4af3aa
+  symbol_id: 0xc6f12d08
+  symbol_id: 0x6331fa1c
+  symbol_id: 0x0ec453a0
+  symbol_id: 0x06a16fcd
+  symbol_id: 0xa995baf6
+  symbol_id: 0x2ffa8c21
+  symbol_id: 0xf6b7c76a
+  symbol_id: 0xebca322a
+  symbol_id: 0xdc1ce8b9
+  symbol_id: 0xadfcc022
+  symbol_id: 0x72b7e351
+  symbol_id: 0x154a9ae6
+  symbol_id: 0x451d590c
+  symbol_id: 0xcdfba9d9
+  symbol_id: 0xc6afe73b
+  symbol_id: 0x320c23b0
+  symbol_id: 0x90d03bc9
+  symbol_id: 0xbbb3c0b0
+  symbol_id: 0xaaff2220
+  symbol_id: 0x0fbcda2f
+  symbol_id: 0xf4436b91
+  symbol_id: 0xf6d28797
+  symbol_id: 0x86ed11eb
+  symbol_id: 0xfaec7878
+  symbol_id: 0x351f9c86
+  symbol_id: 0x98c7b18e
+  symbol_id: 0x975ff621
+  symbol_id: 0x07f3e9e2
+  symbol_id: 0xafc16d71
+  symbol_id: 0x633cfc39
+  symbol_id: 0x55447a3f
+  symbol_id: 0x9de4bb85
+  symbol_id: 0xa4091e22
+  symbol_id: 0x2b52ca5d
+  symbol_id: 0xfcada692
+  symbol_id: 0x9f8507b1
+  symbol_id: 0xc3d62a98
+  symbol_id: 0x700d3d6b
+  symbol_id: 0xbdfbbc33
+  symbol_id: 0x1b3f668e
+  symbol_id: 0x868c5f6e
+  symbol_id: 0xb89dad0b
+  symbol_id: 0x110008ad
+  symbol_id: 0x5df193f7
+  symbol_id: 0x9b635032
+  symbol_id: 0x4048e514
+  symbol_id: 0x89c78ea4
+  symbol_id: 0x37cf2035
+  symbol_id: 0x2db08c33
+  symbol_id: 0x927b119c
+  symbol_id: 0x0f633308
+  symbol_id: 0xbc24fc64
+  symbol_id: 0xb9163561
+  symbol_id: 0xe9d87e68
+  symbol_id: 0xf55bd7e0
+  symbol_id: 0xf3c1fd90
+  symbol_id: 0xcaff4b1e
+  symbol_id: 0x92510f88
+  symbol_id: 0x1294ca70
+  symbol_id: 0x38a32d34
+  symbol_id: 0x214d76fa
+  symbol_id: 0xa834737e
+  symbol_id: 0x869e15d7
+  symbol_id: 0x944deaea
+  symbol_id: 0x413dc89c
+  symbol_id: 0xbc035d91
+  symbol_id: 0xddfc2941
+  symbol_id: 0x58937c87
+  symbol_id: 0xe3f9d54d
+  symbol_id: 0xd80a0cec
+  symbol_id: 0xb61e8892
+  symbol_id: 0xd5bd73b9
+  symbol_id: 0x951bfee9
+  symbol_id: 0x55fbd705
+  symbol_id: 0x09c05733
+  symbol_id: 0xf104e451
+  symbol_id: 0x282288bb
+  symbol_id: 0x2db97071
+  symbol_id: 0x88509066
+  symbol_id: 0x3f64aa24
+  symbol_id: 0x62707abc
+  symbol_id: 0x5fde6ab0
+  symbol_id: 0x7a58d33b
+  symbol_id: 0xcb415220
+  symbol_id: 0x256f289d
+  symbol_id: 0xcc99e836
+  symbol_id: 0x679f1f4a
+  symbol_id: 0x8e696a57
+  symbol_id: 0x7bc2d957
+  symbol_id: 0x9da2deff
+  symbol_id: 0xbeec161b
+  symbol_id: 0x20194c97
+  symbol_id: 0x1e85ca64
+  symbol_id: 0x3ba8a76e
+  symbol_id: 0x1dc2c092
+  symbol_id: 0x881d65bb
+  symbol_id: 0x77741468
+  symbol_id: 0x261c8a11
+  symbol_id: 0x7bad4a68
+  symbol_id: 0xbc49d007
+  symbol_id: 0xa20893c4
+  symbol_id: 0xf13a39cb
+  symbol_id: 0x34af8a35
+  symbol_id: 0x3cc50b4b
+  symbol_id: 0x85997d50
+  symbol_id: 0x6d33fccc
+  symbol_id: 0x087c6f6c
+  symbol_id: 0xecf36ba9
+  symbol_id: 0x9299d069
+  symbol_id: 0x6fe64b22
+  symbol_id: 0x5d6fb7c5
+  symbol_id: 0x4eea2829
+  symbol_id: 0x0741c87d
+  symbol_id: 0x3bf4fac5
+  symbol_id: 0xcac8f190
+  symbol_id: 0x140d9164
+  symbol_id: 0x52816b1c
+  symbol_id: 0x19d80976
+  symbol_id: 0xb5437ef4
+  symbol_id: 0x1473720a
+  symbol_id: 0xa459c02b
+  symbol_id: 0xb0c1eaf9
+  symbol_id: 0xe7b3f166
+  symbol_id: 0xb21b47da
+  symbol_id: 0xf39bae65
+  symbol_id: 0xfd78bf45
+  symbol_id: 0x218d39b6
+  symbol_id: 0xd71b366d
+  symbol_id: 0xe2254576
+  symbol_id: 0x1b3bffbd
+  symbol_id: 0xd811c59d
+  symbol_id: 0xd669e74b
+  symbol_id: 0xc474068f
+  symbol_id: 0x2ead83ba
+  symbol_id: 0xda8c14c5
+  symbol_id: 0x191cb14b
+  symbol_id: 0xbe25a938
+  symbol_id: 0x5ed35bd1
+  symbol_id: 0x3583be56
+  symbol_id: 0xb29ebe2f
+  symbol_id: 0xc16e847e
+  symbol_id: 0x39e11963
+  symbol_id: 0x009d2026
+  symbol_id: 0xa37ded43
+  symbol_id: 0x5f83fb51
+  symbol_id: 0x06acb36e
+  symbol_id: 0xc62e4949
+  symbol_id: 0x426bca09
+  symbol_id: 0xabdb2ade
+  symbol_id: 0xdc3fca57
+  symbol_id: 0x23051526
+  symbol_id: 0xad9b8781
+  symbol_id: 0xd40ec4d6
+  symbol_id: 0xcd00be9c
+  symbol_id: 0xef302a24
+  symbol_id: 0x0d49294f
+  symbol_id: 0xe47c3e85
+  symbol_id: 0x13de96e8
+  symbol_id: 0xaa9a25c3
+  symbol_id: 0xb9ee7dde
+  symbol_id: 0xbe306b4b
+  symbol_id: 0x4dbc5e45
+  symbol_id: 0x9499bc08
+  symbol_id: 0x592a4678
+  symbol_id: 0xff77e1ca
+  symbol_id: 0xe66642fe
+  symbol_id: 0x2244c8f0
+  symbol_id: 0x58330374
+  symbol_id: 0xdb18c924
+  symbol_id: 0x5e36dba6
+  symbol_id: 0xbca2a56b
+  symbol_id: 0x31a465c5
+  symbol_id: 0x101dc375
+  symbol_id: 0xc60ea189
+  symbol_id: 0x0ac8b028
+  symbol_id: 0x4d677cc2
+  symbol_id: 0x45c63d78
+  symbol_id: 0x5e8a63fa
+  symbol_id: 0xfcc9d943
+  symbol_id: 0x26121fc0
+  symbol_id: 0xff692625
+  symbol_id: 0x5cedc1a5
+  symbol_id: 0x80afb6cb
+  symbol_id: 0xddaf4e25
+  symbol_id: 0x2aa9eaa5
+  symbol_id: 0x4b112491
+  symbol_id: 0x9fecca14
+  symbol_id: 0x5e036c03
+  symbol_id: 0x04b823f9
+  symbol_id: 0xa23d06ae
+  symbol_id: 0x72585ff3
+  symbol_id: 0x40e2ee0e
+  symbol_id: 0xcc76293a
+  symbol_id: 0x372ac2af
+  symbol_id: 0xd34d4e91
+  symbol_id: 0x2e26a86b
+  symbol_id: 0x143e338b
+  symbol_id: 0x1aa035d8
+  symbol_id: 0xaf1caca5
+  symbol_id: 0xb4198f5a
+  symbol_id: 0x0ec6b6da
+  symbol_id: 0x5b4a7ca1
+  symbol_id: 0x36a4341f
+  symbol_id: 0xabff52f7
+  symbol_id: 0x54693ef1
+  symbol_id: 0x1f068d9a
+  symbol_id: 0x9cac5dd9
+  symbol_id: 0x5b4f4e84
+  symbol_id: 0x2e96531c
+  symbol_id: 0xbccca110
+  symbol_id: 0xaa045f6b
+  symbol_id: 0xeefe80e0
+  symbol_id: 0xa4c4ebe9
+  symbol_id: 0xf7e4a510
+  symbol_id: 0x906c5f61
+  symbol_id: 0xf40e82dd
+  symbol_id: 0x9b29f9ed
+  symbol_id: 0x5f3882d0
+  symbol_id: 0xe203e72f
+  symbol_id: 0xac8d7ab3
+  symbol_id: 0x2f159216
+  symbol_id: 0xb1da32d2
+  symbol_id: 0x354ec447
+  symbol_id: 0x28f5deaf
+  symbol_id: 0x7733b651
+  symbol_id: 0x8e6a3c4a
+  symbol_id: 0x3635e264
+  symbol_id: 0xc2eed4fe
+  symbol_id: 0x7fb65c50
+  symbol_id: 0x61c086ce
+  symbol_id: 0x03410164
+  symbol_id: 0xde8f3957
+  symbol_id: 0x3997b003
+  symbol_id: 0xafcd1744
+  symbol_id: 0xfcd4fd85
+  symbol_id: 0x67563547
+  symbol_id: 0x3e087d1e
+  symbol_id: 0xccf1cf97
+  symbol_id: 0xbf20de3f
+  symbol_id: 0x8b640541
+  symbol_id: 0x7f067455
+  symbol_id: 0xee6e1f6c
+  symbol_id: 0x278cdeee
+  symbol_id: 0x347d8958
+  symbol_id: 0x0df71d15
+  symbol_id: 0x3d20049f
+  symbol_id: 0x977435b2
+  symbol_id: 0x1342b83d
+  symbol_id: 0x07eaae45
+  symbol_id: 0x2bab7519
+  symbol_id: 0xd3898035
+  symbol_id: 0x1a579bd8
+  symbol_id: 0xada6722b
+  symbol_id: 0xba41649f
+  symbol_id: 0xf4a3a08f
+  symbol_id: 0xdfb89e7e
+  symbol_id: 0x33a2f100
+  symbol_id: 0xcdf82e93
+  symbol_id: 0xe44c6ac8
+  symbol_id: 0xd60bdd76
+  symbol_id: 0x0b1c01d2
+  symbol_id: 0x20d404b1
+  symbol_id: 0x49536a26
+  symbol_id: 0x39528cf5
+  symbol_id: 0xcb922fd0
+  symbol_id: 0x5c2cffc5
+  symbol_id: 0x37026d37
+  symbol_id: 0x1b22201e
+  symbol_id: 0x6dc0b5fd
+  symbol_id: 0xa18683c9
+  symbol_id: 0xbdc38eeb
+  symbol_id: 0x2e35eb72
+  symbol_id: 0x2e0cfc9a
+  symbol_id: 0x9181a5f3
+  symbol_id: 0xa7ab6134
+  symbol_id: 0x1499f6a1
+  symbol_id: 0xf89b49b7
+  symbol_id: 0xf33dadbd
+  symbol_id: 0x743ba358
+  symbol_id: 0x9f33c2c6
+  symbol_id: 0x429eeda3
+  symbol_id: 0x67d81c4b
+  symbol_id: 0x5b1b7953
+  symbol_id: 0xeb7a9b77
+  symbol_id: 0x6ab1ba70
+  symbol_id: 0x472ca228
+  symbol_id: 0x74fdc781
+  symbol_id: 0x47c7271e
+  symbol_id: 0xbb7b0e96
+  symbol_id: 0x2f1da35c
+  symbol_id: 0x47f90fd0
+  symbol_id: 0x969a2ec0
+  symbol_id: 0xb1b42a22
+  symbol_id: 0x689b6a95
+  symbol_id: 0xbd9fe5b6
+  symbol_id: 0x76ec943c
+  symbol_id: 0x1a4e4142
+  symbol_id: 0x1bf9e9e5
+  symbol_id: 0xec6b2b3d
+  symbol_id: 0x4b519cf9
+  symbol_id: 0xca359dbf
+  symbol_id: 0xbd74d21e
+  symbol_id: 0x9cbf06d7
+  symbol_id: 0x7ee23f4e
+  symbol_id: 0x8684931b
+  symbol_id: 0x7fa6e289
+  symbol_id: 0xa07ee8d2
+  symbol_id: 0xde344997
+  symbol_id: 0xea70d424
+  symbol_id: 0xfe9092ab
+  symbol_id: 0xd9e10c59
+  symbol_id: 0x8a8da7f1
+  symbol_id: 0x2af74799
+  symbol_id: 0xb7aee2c5
+  symbol_id: 0xfef2e182
+  symbol_id: 0x91ee0115
+  symbol_id: 0xf232b484
+  symbol_id: 0x92cd8f09
+  symbol_id: 0xa1a3c9fa
+  symbol_id: 0x5e9a19c7
+  symbol_id: 0x145b02f5
+  symbol_id: 0xe07b73f3
+  symbol_id: 0xd9851481
+  symbol_id: 0xb9a9a844
+  symbol_id: 0x5a0ffdee
+  symbol_id: 0xb21e5a5d
+  symbol_id: 0x9454b7ef
+  symbol_id: 0xa850323d
+  symbol_id: 0x3c9ddf14
+  symbol_id: 0xbdbb3861
+  symbol_id: 0x3f1a831f
+  symbol_id: 0xbbc0dd1b
+  symbol_id: 0x1c7e966c
+  symbol_id: 0xd2b79899
+  symbol_id: 0x2e2c18d8
+  symbol_id: 0x353d111f
+  symbol_id: 0xae9f4961
+  symbol_id: 0x748d6994
+  symbol_id: 0x3d2886e2
+  symbol_id: 0x8e701dda
+  symbol_id: 0xb13a809e
+  symbol_id: 0x32530e9e
+  symbol_id: 0x2accb4e2
+  symbol_id: 0xda040cc6
+  symbol_id: 0xa398c1a5
+  symbol_id: 0x4786597c
+  symbol_id: 0xf4867072
+  symbol_id: 0xcafdd619
+  symbol_id: 0xb5cf0c37
+  symbol_id: 0x97472a76
+  symbol_id: 0x18b1b4af
+  symbol_id: 0x6baf8fe0
+  symbol_id: 0x40994c4b
+  symbol_id: 0xc310fa7c
+  symbol_id: 0xbadb7e4b
+  symbol_id: 0xdb0e240a
+  symbol_id: 0xb61f9f98
+  symbol_id: 0xd13c80bd
+  symbol_id: 0x0ab935cb
+  symbol_id: 0x8a60b44b
+  symbol_id: 0xf63d0cfd
+  symbol_id: 0x13e8d3f8
+  symbol_id: 0xf7843e68
+  symbol_id: 0xd33fff31
+  symbol_id: 0xd4186273
+  symbol_id: 0x4a8b3536
+  symbol_id: 0xea9f1dc7
+  symbol_id: 0xe8d961d3
+  symbol_id: 0xfdbff447
+  symbol_id: 0xd08bd5b6
+  symbol_id: 0x30f68c14
+  symbol_id: 0x8899dfb4
+  symbol_id: 0x1c065008
+  symbol_id: 0xee1009c9
+  symbol_id: 0x5d5d315a
+  symbol_id: 0xdc09fb10
+  symbol_id: 0x5849ff8e
+  symbol_id: 0xaf85c216
+  symbol_id: 0xef2c49d1
+  symbol_id: 0xca7f93d5
+  symbol_id: 0xac972f8d
+  symbol_id: 0x3c915fdb
+  symbol_id: 0x3f9de086
+  symbol_id: 0x6d8b459f
+  symbol_id: 0xa1a341df
+  symbol_id: 0xf7787d5c
+  symbol_id: 0x8119b492
+  symbol_id: 0xdd7d73a5
+  symbol_id: 0xe4441605
+  symbol_id: 0x7d46f112
+  symbol_id: 0x67a74b01
+  symbol_id: 0x61b986b8
+  symbol_id: 0xd0fa04e7
+  symbol_id: 0x5c9f3e0e
+  symbol_id: 0xd68f23fc
+  symbol_id: 0xbb8b92a9
+  symbol_id: 0xe27a4705
+  symbol_id: 0xea7fc751
+  symbol_id: 0xd574e01b
+  symbol_id: 0x9af4ba91
+  symbol_id: 0xc46cf30e
+  symbol_id: 0x584cd956
+  symbol_id: 0x3d09e223
+  symbol_id: 0x0db9531c
+  symbol_id: 0xbd4af188
+  symbol_id: 0xd0f100ba
+  symbol_id: 0xb2149cf6
+  symbol_id: 0x5b9410e0
+  symbol_id: 0x929bcf22
+  symbol_id: 0xdd20bb49
+  symbol_id: 0xd0367f5d
+  symbol_id: 0xacccfc76
+  symbol_id: 0x8b18825a
+  symbol_id: 0x718f5c64
+  symbol_id: 0x60488ecf
+  symbol_id: 0x9d727719
+  symbol_id: 0xa4027847
+  symbol_id: 0x7540b5a8
+  symbol_id: 0xb1036d49
+  symbol_id: 0x9a87f32b
+  symbol_id: 0xecc7b6fc
+  symbol_id: 0x5d14316b
+  symbol_id: 0x0094f87c
+  symbol_id: 0x4e0971d6
+  symbol_id: 0x1e98f8ba
+  symbol_id: 0x700cd224
+  symbol_id: 0xfff68651
+  symbol_id: 0x735a53f2
+  symbol_id: 0xaa56f7fa
+  symbol_id: 0x36d0e118
+  symbol_id: 0x96e52cc0
+  symbol_id: 0xb3aa5e28
+  symbol_id: 0x610289ba
+  symbol_id: 0x39d70409
+  symbol_id: 0xae30b13d
+  symbol_id: 0x7e6ed424
+  symbol_id: 0x05952796
+  symbol_id: 0xbf6dc1f2
+  symbol_id: 0xa319773c
+  symbol_id: 0xec1a6a81
+  symbol_id: 0x21d8904f
+  symbol_id: 0x9112284f
+  symbol_id: 0xc122de73
+  symbol_id: 0x5d671f52
+  symbol_id: 0x4e8c6206
+  symbol_id: 0x887e1dde
+  symbol_id: 0x180eeaeb
+  symbol_id: 0x61731bd0
+  symbol_id: 0x6f9f10f2
+  symbol_id: 0x99941051
+  symbol_id: 0x4ff86851
+  symbol_id: 0x505283a2
+  symbol_id: 0xeb9a524c
+  symbol_id: 0x8b920e03
+  symbol_id: 0x73e59f31
+  symbol_id: 0xe0d6968c
+  symbol_id: 0x5bd79069
+  symbol_id: 0xb91fc02e
+  symbol_id: 0xaa425530
+  symbol_id: 0x9b05d33a
+  symbol_id: 0xebb799b4
+  symbol_id: 0xcaf4c4fe
+  symbol_id: 0x11080b78
+  symbol_id: 0x7604d076
+  symbol_id: 0x59171ad5
+  symbol_id: 0xbaf19860
+  symbol_id: 0x30b9ea58
+  symbol_id: 0xd45f17d8
+  symbol_id: 0xbc3cb711
+  symbol_id: 0x248b3536
+  symbol_id: 0x950a62ac
+  symbol_id: 0x8f8f2df9
+  symbol_id: 0xeb912db7
+  symbol_id: 0x64876ecd
+  symbol_id: 0xdf73207c
+  symbol_id: 0xd232cbb1
+  symbol_id: 0xa6eac918
+  symbol_id: 0xc46f1f1f
+  symbol_id: 0xf30af7b3
+  symbol_id: 0x71f2808e
+  symbol_id: 0xfa57b81b
+  symbol_id: 0x4603c1d4
+  symbol_id: 0x54c09325
+  symbol_id: 0xf1838f43
+  symbol_id: 0x9324879f
+  symbol_id: 0xcde37345
+  symbol_id: 0xb834cd77
+  symbol_id: 0x5827485d
+  symbol_id: 0x23b2a72a
+  symbol_id: 0xf407269f
+  symbol_id: 0xe0308dad
+  symbol_id: 0x8e1b14a8
+  symbol_id: 0x38f3135f
+  symbol_id: 0xfd336d19
+  symbol_id: 0x19d4533f
+  symbol_id: 0x72ddc3de
+  symbol_id: 0x9e93bc3d
+  symbol_id: 0x308dfef4
+  symbol_id: 0x47d1f084
+  symbol_id: 0xb951a4e5
+  symbol_id: 0xaf80b2ca
+  symbol_id: 0xe31eb78b
+  symbol_id: 0xb73c4905
+  symbol_id: 0xbb650596
+  symbol_id: 0x0fc8c78d
+  symbol_id: 0xa5d58813
+  symbol_id: 0xde6620d5
+  symbol_id: 0xdf18b1a9
+  symbol_id: 0xf158bd25
+  symbol_id: 0xee403ebb
+  symbol_id: 0x52ed8956
+  symbol_id: 0xf6eda681
+  symbol_id: 0xd7745fba
+  symbol_id: 0xd9789392
+  symbol_id: 0x74942776
+  symbol_id: 0xb59d09c8
+  symbol_id: 0x2242c82d
+  symbol_id: 0xc25d24ef
+  symbol_id: 0xc6638ed0
+  symbol_id: 0x3f0451e3
+  symbol_id: 0xc0f3c22d
+  symbol_id: 0x7e421214
+  symbol_id: 0x867032c4
+  symbol_id: 0xefe9dc42
+  symbol_id: 0x5303ad4a
+}
diff --git a/android/abi_gki_aarch64_db845c b/android/abi_gki_aarch64_db845c
new file mode 100644
index 0000000..2a9e9d5
--- /dev/null
+++ b/android/abi_gki_aarch64_db845c
@@ -0,0 +1,2107 @@
+[abi_symbol_list]
+# commonly used symbols
+  add_uevent_var
+  alloc_io_pgtable_ops
+  __alloc_skb
+  alloc_workqueue
+  alt_cb_patch_nops
+  __arch_copy_from_user
+  __arch_copy_to_user
+  arm64_use_ng_mappings
+  bcmp
+  bitmap_find_next_zero_area_off
+  __bitmap_set
+  __bitmap_weight
+  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_run8
+  bus_register
+  bus_unregister
+  call_rcu
+  cancel_delayed_work
+  cancel_delayed_work_sync
+  cancel_work_sync
+  capable
+  cdev_device_add
+  cdev_device_del
+  cdev_init
+  __check_object_size
+  __class_register
+  class_unregister
+  clk_bulk_disable
+  clk_bulk_enable
+  clk_bulk_prepare
+  clk_bulk_unprepare
+  clk_disable
+  clk_enable
+  clk_fixed_rate_ops
+  clk_get
+  __clk_get_name
+  clk_get_rate
+  clk_hw_get_name
+  clk_hw_get_parent
+  clk_hw_get_rate
+  clk_hw_register
+  clk_prepare
+  clk_put
+  clk_round_rate
+  clk_set_rate
+  clk_sync_state
+  clk_unprepare
+  complete
+  complete_all
+  completion_done
+  __const_udelay
+  consume_skb
+  _copy_from_iter
+  cpu_hwcaps
+  cpu_number
+  __cpu_online_mask
+  __cpu_possible_mask
+  crc32_le
+  crypto_alloc_shash
+  crypto_destroy_tfm
+  crypto_shash_setkey
+  crypto_shash_update
+  csum_partial
+  _ctype
+  debugfs_create_dir
+  debugfs_create_file
+  debugfs_create_u32
+  debugfs_create_x32
+  debugfs_remove
+  default_llseek
+  delayed_work_timer_fn
+  del_timer
+  del_timer_sync
+  destroy_workqueue
+  dev_close
+  dev_coredumpv
+  dev_driver_string
+  _dev_err
+  dev_err_probe
+  dev_fwnode
+  dev_get_regmap
+  device_add
+  device_del
+  device_for_each_child
+  device_get_mac_address
+  device_get_match_data
+  device_get_named_child_node
+  device_initialize
+  device_link_add
+  device_property_present
+  device_property_read_u32_array
+  device_register
+  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_bitmap_zalloc
+  devm_clk_bulk_get
+  devm_clk_bulk_get_all
+  devm_clk_bulk_get_optional
+  devm_clk_get
+  devm_clk_get_optional
+  devm_clk_hw_register
+  devm_free_irq
+  devm_get_clk_from_child
+  devm_gpiochip_add_data_with_key
+  devm_gpiod_get
+  devm_gpiod_get_optional
+  devm_ioremap
+  devm_ioremap_resource
+  devm_ioremap_wc
+  devm_iounmap
+  devm_kasprintf
+  devm_kfree
+  devm_kmalloc
+  devm_kstrdup
+  devm_kstrdup_const
+  devm_mbox_controller_register
+  devm_memremap
+  devm_mipi_dsi_attach
+  devm_mipi_dsi_device_register_full
+  devm_nvmem_cell_get
+  devm_of_clk_add_hw_provider
+  devm_of_icc_get
+  devm_of_iomap
+  __devm_of_phy_provider_register
+  devm_of_platform_populate
+  devm_phy_create
+  devm_phy_get
+  devm_pinctrl_register
+  devm_platform_get_and_ioremap_resource
+  devm_platform_ioremap_resource
+  devm_platform_ioremap_resource_byname
+  devm_pm_opp_of_add_table
+  devm_pm_opp_set_config
+  devm_pm_runtime_enable
+  devm_regmap_add_irq_chip
+  devm_regmap_field_alloc
+  __devm_regmap_init
+  __devm_regmap_init_i2c
+  __devm_regmap_init_mmio_clk
+  devm_regulator_bulk_get
+  devm_regulator_get
+  devm_regulator_get_optional
+  devm_regulator_register
+  devm_request_threaded_irq
+  __devm_reset_control_bulk_get
+  __devm_reset_control_get
+  devm_reset_controller_register
+  devm_snd_soc_register_card
+  devm_snd_soc_register_component
+  __devm_spi_alloc_controller
+  devm_spi_register_controller
+  devm_thermal_of_zone_register
+  devm_watchdog_register_device
+  _dev_notice
+  dev_pm_clear_wake_irq
+  dev_pm_domain_attach
+  dev_pm_domain_attach_by_name
+  dev_pm_domain_detach
+  dev_pm_genpd_set_performance_state
+  dev_pm_opp_add
+  dev_pm_opp_find_freq_ceil
+  dev_pm_opp_find_freq_exact
+  dev_pm_opp_find_freq_floor
+  dev_pm_opp_get_level
+  dev_pm_opp_get_opp_count
+  dev_pm_opp_of_find_icc_paths
+  dev_pm_opp_put
+  dev_pm_opp_set_opp
+  dev_pm_opp_set_rate
+  dev_pm_set_wake_irq
+  _dev_printk
+  dev_set_name
+  dev_set_threaded
+  _dev_warn
+  disable_irq
+  disable_irq_nosync
+  divider_get_val
+  divider_recalc_rate
+  divider_round_rate_parent
+  dma_alloc_attrs
+  dma_async_device_register
+  dma_async_tx_descriptor_init
+  dma_buf_export
+  dma_fence_context_alloc
+  dma_fence_init
+  dma_fence_release
+  dma_fence_signal
+  dma_fence_wait_timeout
+  dma_free_attrs
+  dma_get_slave_channel
+  dmam_alloc_attrs
+  dma_map_page_attrs
+  dma_map_sg_attrs
+  dma_map_sgtable
+  dma_mmap_attrs
+  dma_release_channel
+  dma_request_chan
+  dma_set_coherent_mask
+  dma_set_mask
+  dma_sync_single_for_cpu
+  dma_sync_single_for_device
+  dma_unmap_page_attrs
+  dma_unmap_sg_attrs
+  driver_register
+  driver_unregister
+  drm_add_edid_modes
+  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_connector_destroy_state
+  drm_atomic_helper_connector_duplicate_state
+  drm_atomic_helper_connector_reset
+  __drm_atomic_helper_private_obj_duplicate_state
+  drm_atomic_private_obj_fini
+  drm_atomic_private_obj_init
+  drm_bridge_add
+  drm_bridge_hpd_notify
+  drm_bridge_remove
+  drm_connector_attach_encoder
+  drm_connector_cleanup
+  drm_connector_init
+  drm_connector_update_edid_property
+  drm_crtc_add_crc_entry
+  ___drm_dbg
+  __drm_debug
+  drm_detect_monitor_audio
+  __drm_dev_dbg
+  drm_dev_printk
+  drm_do_get_edid
+  __drm_err
+  drm_get_edid
+  drm_hdmi_avi_infoframe_from_display_mode
+  drm_helper_probe_single_connector_modes
+  drm_kms_helper_hotplug_event
+  drm_mode_object_put
+  drm_modeset_lock
+  drm_modeset_unlock
+  drm_mode_vrefresh
+  drm_printf
+  enable_irq
+  eth_type_trans
+  _find_first_bit
+  _find_first_zero_bit
+  _find_next_bit
+  _find_next_zero_bit
+  finish_wait
+  firmware_request_nowarn
+  flush_delayed_work
+  flush_work
+  __flush_workqueue
+  fortify_panic
+  free_io_pgtable_ops
+  free_irq
+  fwnode_handle_put
+  fwnode_property_present
+  fwnode_property_read_string
+  fwnode_property_read_u32_array
+  gcd
+  generic_handle_domain_irq
+  generic_handle_irq
+  geni_icc_disable
+  geni_icc_enable
+  geni_icc_get
+  geni_icc_set_bw
+  geni_se_config_packing
+  geni_se_get_qup_hw_version
+  geni_se_init
+  geni_se_resources_off
+  geni_se_resources_on
+  geni_se_select_mode
+  get_device
+  get_random_bytes
+  gic_nonsecure_priorities
+  gpiochip_add_data_with_key
+  gpiochip_add_pin_range
+  gpiochip_disable_irq
+  gpiochip_enable_irq
+  gpiochip_generic_free
+  gpiochip_generic_request
+  gpiochip_get_data
+  gpiochip_remove
+  gpiod_get_value_cansleep
+  gpiod_set_consumer_name
+  gpiod_set_value
+  gpiod_set_value_cansleep
+  gpiod_to_irq
+  handle_bad_irq
+  handle_edge_irq
+  handle_level_irq
+  handle_nested_irq
+  handle_simple_irq
+  hdmi_audio_infoframe_init
+  hrtimer_cancel
+  hrtimer_init
+  hrtimer_start_range_ns
+  i2c_adapter_type
+  i2c_add_adapter
+  i2c_add_numbered_adapter
+  i2c_del_adapter
+  i2c_del_driver
+  i2c_parse_fw_timings
+  i2c_put_adapter
+  i2c_register_driver
+  __i2c_smbus_xfer
+  i2c_smbus_xfer
+  i2c_transfer
+  icc_link_create
+  icc_node_add
+  icc_node_create
+  icc_nodes_remove
+  icc_provider_deregister
+  icc_provider_init
+  icc_provider_register
+  icc_set_bw
+  icc_sync_state
+  ida_alloc_range
+  ida_free
+  idr_alloc
+  idr_alloc_cyclic
+  idr_destroy
+  idr_find
+  idr_for_each
+  idr_get_next
+  idr_remove
+  iio_read_channel_processed
+  init_dummy_netdev
+  init_net
+  __init_swait_queue_head
+  init_timer_key
+  init_uts_ns
+  init_wait_entry
+  __init_waitqueue_head
+  iomem_resource
+  iommu_attach_device
+  iommu_detach_device
+  iommu_domain_alloc
+  iommu_domain_free
+  iommu_map
+  iommu_unmap
+  __ioread32_copy
+  ioremap_prot
+  iounmap
+  iov_iter_revert
+  __iowrite32_copy
+  __irq_apply_affinity_hint
+  irq_chip_ack_parent
+  irq_chip_disable_parent
+  irq_chip_enable_parent
+  irq_chip_mask_parent
+  irq_chip_set_affinity_parent
+  irq_chip_set_parent_state
+  irq_chip_set_type_parent
+  irq_chip_set_vcpu_affinity_parent
+  irq_chip_set_wake_parent
+  irq_chip_unmask_parent
+  __irq_domain_add
+  irq_domain_free_irqs_common
+  irq_domain_remove
+  irq_domain_xlate_onecell
+  irq_domain_xlate_twocell
+  irq_find_matching_fwspec
+  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
+  is_vmalloc_addr
+  jiffies
+  jiffies_to_msecs
+  jiffies_to_usecs
+  kasan_flag_enabled
+  kasprintf
+  kernel_connect
+  kernel_getsockname
+  kernel_recvmsg
+  kernel_sendmsg
+  kfree
+  kfree_const
+  kfree_sensitive
+  kfree_skb_reason
+  kimage_voffset
+  __kmalloc
+  kmalloc_caches
+  kmalloc_large
+  kmalloc_trace
+  kmemdup
+  kstrdup
+  kstrdup_const
+  kstrtoint
+  kstrtouint
+  kthread_create_on_node
+  kthread_park
+  kthread_should_stop
+  kthread_stop
+  kthread_unpark
+  ktime_get
+  ktime_get_mono_fast_ns
+  ktime_get_real_ts64
+  ktime_get_with_offset
+  kvfree
+  kvfree_call_rcu
+  kvmalloc_node
+  __list_add_valid
+  __list_del_entry_valid
+  __local_bh_enable_ip
+  log_post_read_mmio
+  log_post_write_mmio
+  log_read_mmio
+  log_write_mmio
+  mbox_client_txdone
+  mbox_free_channel
+  mbox_request_channel
+  mbox_send_message
+  memcpy
+  __memcpy_fromio
+  __memcpy_toio
+  memmove
+  memremap
+  memset
+  memset32
+  __memset_io
+  memstart_addr
+  memunmap
+  misc_deregister
+  misc_register
+  mod_delayed_work_on
+  mod_timer
+  module_layout
+  __msecs_to_jiffies
+  msleep
+  __mutex_init
+  mutex_is_locked
+  mutex_lock
+  mutex_unlock
+  napi_complete_done
+  napi_disable
+  napi_enable
+  __napi_schedule
+  napi_schedule_prep
+  __netdev_alloc_skb
+  netdev_err
+  netdev_info
+  netif_napi_add_weight
+  __netif_napi_del
+  netif_rx
+  netif_tx_wake_queue
+  net_ratelimit
+  __nla_parse
+  nla_put
+  nr_cpu_ids
+  nvmem_cell_get
+  nvmem_cell_put
+  nvmem_cell_read
+  nvmem_cell_read_variable_le_u32
+  of_address_to_resource
+  of_alias_get_id
+  of_clk_add_hw_provider
+  of_clk_del_provider
+  of_clk_hw_onecell_get
+  of_clk_hw_simple_get
+  of_device_get_match_data
+  of_device_is_available
+  of_device_is_compatible
+  of_device_modalias
+  of_device_uevent_modalias
+  of_dma_configure_id
+  of_dma_controller_register
+  of_find_device_by_node
+  of_find_mipi_dsi_host_by_node
+  of_find_property
+  of_fwnode_ops
+  of_genpd_add_provider_onecell
+  of_genpd_del_provider
+  of_get_child_by_name
+  of_get_compatible_child
+  of_get_next_available_child
+  of_get_next_child
+  of_get_property
+  of_get_regulator_init_data
+  of_graph_get_remote_node
+  of_graph_parse_endpoint
+  of_irq_find_parent
+  of_irq_get
+  of_irq_get_byname
+  of_match_device
+  of_match_node
+  of_node_name_eq
+  __of_parse_phandle_with_args
+  of_phy_simple_xlate
+  of_platform_depopulate
+  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_u32_array
+  of_property_read_variable_u8_array
+  of_prop_next_u32
+  of_reserved_mem_lookup
+  param_ops_bool
+  param_ops_charp
+  param_ops_int
+  param_ops_uint
+  pci_clear_master
+  pci_disable_device
+  pcie_capability_read_word
+  pcie_capability_write_word
+  pci_enable_device
+  pci_iomap
+  pci_iounmap
+  pci_read_config_dword
+  __pci_register_driver
+  pci_release_region
+  pci_request_region
+  pci_set_master
+  pci_unregister_driver
+  perf_trace_buf_alloc
+  perf_trace_run_bpf_submit
+  phy_exit
+  phy_init
+  phy_power_off
+  phy_power_on
+  pinconf_generic_dt_node_to_map
+  pinctrl_dev_get_drvdata
+  pinctrl_pm_select_default_state
+  pinctrl_pm_select_sleep_state
+  pinctrl_utils_free_map
+  platform_bus_type
+  platform_device_register_full
+  platform_device_unregister
+  __platform_driver_register
+  platform_driver_unregister
+  platform_get_irq
+  platform_get_irq_byname
+  platform_get_irq_optional
+  platform_get_resource
+  platform_get_resource_byname
+  pm_genpd_add_subdomain
+  pm_genpd_init
+  __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
+  preempt_schedule
+  preempt_schedule_notrace
+  prepare_to_wait_event
+  print_hex_dump
+  _printk
+  pskb_expand_head
+  __pskb_pull_tail
+  put_device
+  __put_task_struct
+  qcom_smem_state_register
+  qcom_smem_state_unregister
+  qcom_smem_state_update_bits
+  queue_delayed_work_on
+  queue_work_on
+  ___ratelimit
+  rational_best_approximation
+  _raw_read_lock
+  _raw_read_lock_bh
+  _raw_read_lock_irqsave
+  _raw_read_unlock
+  _raw_read_unlock_bh
+  _raw_read_unlock_irqrestore
+  _raw_spin_lock
+  _raw_spin_lock_bh
+  _raw_spin_lock_irq
+  _raw_spin_lock_irqsave
+  _raw_spin_unlock
+  _raw_spin_unlock_bh
+  _raw_spin_unlock_irq
+  _raw_spin_unlock_irqrestore
+  _raw_write_lock_bh
+  _raw_write_lock_irq
+  _raw_write_unlock_bh
+  _raw_write_unlock_irq
+  rcu_barrier
+  __rcu_read_lock
+  __rcu_read_unlock
+  rdev_get_drvdata
+  refcount_warn_saturate
+  regcache_cache_only
+  regcache_mark_dirty
+  regcache_sync
+  register_netdevice_notifier
+  register_reboot_notifier
+  __register_rpmsg_driver
+  regmap_bulk_read
+  regmap_bulk_write
+  regmap_field_read
+  regmap_field_update_bits_base
+  __regmap_init
+  regmap_irq_get_virq
+  regmap_multi_reg_write
+  regmap_read
+  regmap_register_patch
+  regmap_update_bits_base
+  regmap_write
+  regulator_bulk_disable
+  regulator_bulk_enable
+  regulator_bulk_get
+  regulator_disable
+  regulator_disable_regmap
+  regulator_enable
+  regulator_enable_regmap
+  regulator_is_enabled_regmap
+  regulator_is_supported_voltage
+  regulator_set_load
+  regulator_set_voltage
+  release_firmware
+  __release_region
+  remap_pfn_range
+  request_firmware
+  request_firmware_direct
+  request_firmware_into_buf
+  __request_region
+  request_threaded_irq
+  reset_control_assert
+  reset_control_bulk_assert
+  reset_control_bulk_deassert
+  reset_control_deassert
+  __reset_control_get
+  reset_control_put
+  reset_control_reset
+  rhashtable_insert_slow
+  __rht_bucket_nested
+  rht_bucket_nested
+  rht_bucket_nested_insert
+  round_jiffies_up
+  rpmsg_register_device
+  rpmsg_register_device_override
+  rpmsg_send
+  rpmsg_unregister_device
+  rproc_add
+  rproc_add_subdev
+  rproc_alloc
+  rproc_coredump_add_custom_segment
+  rproc_coredump_set_elf_info
+  rproc_del
+  rproc_free
+  rproc_remove_subdev
+  rtnl_is_locked
+  rtnl_lock
+  rtnl_unlock
+  sched_set_fifo_low
+  schedule
+  schedule_timeout
+  scnprintf
+  seq_lseek
+  seq_printf
+  seq_puts
+  seq_read
+  sg_alloc_table
+  sg_free_table
+  sg_init_table
+  sg_next
+  __sg_page_iter_start
+  simple_read_from_buffer
+  single_open
+  single_release
+  skb_clone
+  skb_copy
+  skb_copy_bits
+  skb_dequeue
+  __skb_get_hash
+  skb_pull
+  skb_push
+  skb_put
+  skb_queue_head
+  skb_queue_purge
+  skb_queue_tail
+  skb_trim
+  sk_free
+  snd_jack_set_key
+  snd_pcm_format_width
+  snd_pcm_hw_constraint_integer
+  snd_pcm_hw_constraint_minmax
+  snd_pcm_hw_constraint_step
+  snd_pcm_period_elapsed
+  snd_pcm_set_managed_buffer_all
+  snd_soc_add_component_controls
+  snd_soc_card_jack_new
+  snd_soc_component_init_regmap
+  snd_soc_component_read
+  snd_soc_component_read_field
+  snd_soc_component_set_jack
+  snd_soc_component_update_bits
+  snd_soc_component_write
+  snd_soc_component_write_field
+  snd_soc_dai_set_fmt
+  snd_soc_dai_set_sysclk
+  snd_soc_dapm_add_routes
+  snd_soc_dapm_get_enum_double
+  snd_soc_dapm_get_volsw
+  snd_soc_dapm_kcontrol_dapm
+  snd_soc_dapm_kcontrol_widget
+  snd_soc_dapm_mixer_update_power
+  snd_soc_dapm_mux_update_power
+  snd_soc_dapm_put_enum_double
+  snd_soc_dapm_put_volsw
+  snd_soc_get_enum_double
+  snd_soc_get_volsw
+  snd_soc_info_enum_double
+  snd_soc_info_volsw
+  snd_soc_jack_report
+  snd_soc_put_enum_double
+  snd_soc_put_volsw
+  snprintf
+  sock_create_kern
+  sock_release
+  sort
+  __spi_alloc_controller
+  spi_controller_resume
+  spi_controller_suspend
+  spi_finalize_current_transfer
+  spi_register_controller
+  spi_unregister_controller
+  sprintf
+  sscanf
+  __stack_chk_fail
+  strcmp
+  strcpy
+  strlcat
+  strlen
+  strncmp
+  strncpy
+  strnlen
+  strpbrk
+  strscpy
+  strscpy_pad
+  strsep
+  __sw_hweight16
+  __sw_hweight32
+  __sw_hweight64
+  __sw_hweight8
+  synchronize_irq
+  synchronize_net
+  synchronize_rcu
+  syscon_node_to_regmap
+  syscon_regmap_lookup_by_phandle
+  sysfs_create_link
+  sysfs_emit
+  sysfs_remove_link
+  system_power_efficient_wq
+  system_wq
+  tasklet_init
+  tasklet_kill
+  __tasklet_schedule
+  tasklet_setup
+  tasklet_unlock_wait
+  thermal_cooling_device_register
+  thermal_cooling_device_unregister
+  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
+  trace_raw_output_prep
+  __trace_trigger_soft_disabled
+  __udelay
+  unregister_chrdev_region
+  unregister_netdevice_notifier
+  unregister_netdevice_queue
+  unregister_reboot_notifier
+  unregister_rpmsg_driver
+  usb_disabled
+  __usecs_to_jiffies
+  usleep_range_state
+  v4l2_ctrl_handler_free
+  v4l2_ctrl_handler_init_class
+  v4l2_ctrl_new_std
+  v4l2_ctrl_new_std_menu
+  v4l2_ctrl_subscribe_event
+  v4l2_event_subscribe
+  v4l2_event_unsubscribe
+  v4l2_fh_add
+  v4l2_fh_del
+  v4l2_fh_exit
+  v4l2_fh_init
+  v4l2_m2m_buf_remove
+  v4l2_m2m_ctx_init
+  v4l2_m2m_ctx_release
+  v4l2_m2m_fop_mmap
+  v4l2_m2m_fop_poll
+  v4l2_m2m_get_vq
+  v4l2_m2m_init
+  v4l2_m2m_ioctl_create_bufs
+  v4l2_m2m_ioctl_dqbuf
+  v4l2_m2m_ioctl_expbuf
+  v4l2_m2m_ioctl_prepare_buf
+  v4l2_m2m_ioctl_qbuf
+  v4l2_m2m_ioctl_querybuf
+  v4l2_m2m_ioctl_reqbufs
+  v4l2_m2m_ioctl_streamoff
+  v4l2_m2m_ioctl_streamon
+  v4l2_m2m_release
+  vb2_buffer_done
+  vb2_dma_contig_memops
+  vb2_queue_init
+  vchan_dma_desc_free_list
+  vchan_init
+  vchan_tx_desc_free
+  vchan_tx_submit
+  vfree
+  video_devdata
+  video_device_alloc
+  video_device_release
+  video_ioctl2
+  __video_register_device
+  video_unregister_device
+  vmalloc
+  vmap
+  vunmap
+  vzalloc
+  wait_for_completion_interruptible
+  wait_for_completion_timeout
+  __wake_up
+  wake_up_process
+  __warn_printk
+  watchdog_init_timeout
+  __xa_alloc
+  xa_erase
+  xa_find
+  xa_find_after
+
+# required by apr.ko
+  rpmsg_trysend
+
+# required by arm_smmu.ko
+  device_get_dma_attr
+  device_match_fwnode
+  devm_krealloc
+  driver_find_device
+  generic_device_group
+  iommu_alloc_resv_region
+  iommu_device_register
+  iommu_device_sysfs_add
+  iommu_device_sysfs_remove
+  iommu_device_unregister
+  iommu_dma_get_resv_regions
+  iommu_fwspec_add_ids
+  iommu_fwspec_free
+  iommu_group_ref_get
+  of_dma_is_coherent
+  pci_bus_type
+  pci_device_group
+  platform_irq_count
+  report_iommu_fault
+
+# required by ath10k_core.ko
+  cpu_latency_qos_add_request
+  cpu_latency_qos_remove_request
+  guid_gen
+  __kfifo_alloc
+  __kfifo_free
+  param_ops_ulong
+  skb_dequeue_tail
+  skb_realloc_headroom
+
+# required by ath10k_pci.ko
+  pci_disable_msi
+  pci_enable_msi
+  pci_write_config_dword
+
+# required by ath11k.ko
+  crypto_shash_final
+  __ipv6_addr_type
+  memcpy_and_pad
+  rhashtable_destroy
+  rhashtable_init
+
+# required by ath11k_ahb.ko
+  dma_map_resource
+  qcom_smem_state_get
+  qcom_smem_state_put
+  rproc_boot
+  rproc_get_by_phandle
+  rproc_shutdown
+
+# required by ath11k_pci.ko
+  cpu_bit_bitmap
+  of_find_node_by_type
+  pci_alloc_irq_vectors_affinity
+  pci_assign_resource
+  pci_free_irq_vectors
+  pci_irq_vector
+  pci_read_config_word
+  pci_write_config_word
+
+# required by bam_dma.ko
+  dma_async_device_unregister
+  of_dma_controller_free
+  pm_runtime_irq_safe
+  vchan_find_desc
+
+# required by cfg80211.ko
+  bpf_trace_run10
+  bpf_trace_run7
+  debugfs_rename
+  __dev_change_net_namespace
+  __dev_get_by_index
+  dev_get_by_index
+  device_rename
+  do_trace_netlink_extack
+  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
+  key_create_or_update
+  key_put
+  keyring_alloc
+  ktime_get_coarse_with_offset
+  memcmp
+  netlink_broadcast
+  netlink_register_notifier
+  netlink_unicast
+  netlink_unregister_notifier
+  net_ns_type_operations
+  nla_find
+  nla_memcpy
+  nla_put_64bit
+  nla_reserve
+  __nla_validate
+  __put_net
+  rb_erase
+  rb_insert_color
+  register_netdevice
+  register_pernet_device
+  request_firmware_nowait
+  rfkill_alloc
+  rfkill_blocked
+  rfkill_destroy
+  rfkill_register
+  rfkill_resume_polling
+  rfkill_set_hw_state_reason
+  rfkill_unregister
+  skb_add_rx_frag
+  __sock_create
+  trace_print_array_seq
+  unregister_pernet_device
+  verify_pkcs7_signature
+  wireless_nlevent_flush
+
+# required by clk-qcom.ko
+  __clk_determine_rate
+  clk_fixed_factor_ops
+  clk_hw_get_flags
+  clk_hw_get_num_parents
+  clk_hw_get_parent_by_index
+  clk_hw_get_rate_range
+  clk_hw_is_enabled
+  clk_hw_round_rate
+  __clk_is_enabled
+  __clk_mux_determine_rate_closest
+  divider_ro_round_rate_parent
+  of_find_node_opts_by_path
+  pm_genpd_remove_subdomain
+
+# required by clk-rpmh.ko
+  clk_hw_is_prepared
+
+# required by clk-spmi-pmic-div.ko
+  __ndelay
+  of_clk_get_parent_name
+
+# required by cmd-db.ko
+  seq_putc
+
+# required by cpr.ko
+  dev_pm_opp_find_level_exact
+  dev_pm_opp_get_of_node
+  dev_pm_opp_of_get_opp_desc_node
+  of_genpd_add_provider_simple
+  of_property_read_u64
+  pm_genpd_remove
+  regulator_get_linear_step
+
+# required by cqhci.ko
+  devm_blk_crypto_profile_init
+  dmam_free_coherent
+  mmc_cqe_request_done
+
+# required by display-connector.ko
+  drm_atomic_get_new_bridge_state
+  drm_probe_ddc
+  of_get_i2c_adapter_by_node
+
+# required by drm_display_helper.ko
+  devm_backlight_device_register
+  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_connector_register
+  drm_connector_unregister
+  __drm_crtc_commit_free
+  drm_crtc_commit_wait
+  drm_crtc_wait_one_vblank
+  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
+  memchr_inv
+  mutex_trylock
+  system_long_wq
+
+# required by drm_dp_aux_bus.ko
+  device_for_each_child_reverse
+
+# required by extcon-usb-gpio.ko
+  devm_extcon_dev_allocate
+  devm_extcon_dev_register
+  extcon_set_state_sync
+  gpiod_set_debounce
+
+# required by fastrpc.ko
+  dma_buf_attach
+  dma_buf_detach
+  dma_buf_fd
+  dma_buf_get
+  dma_buf_map_attachment
+  dma_buf_put
+  dma_buf_unmap_attachment
+  dma_get_sgtable_attrs
+  down_read
+  down_write
+  find_vma
+  __mmap_lock_do_trace_acquire_returned
+  __mmap_lock_do_trace_released
+  __mmap_lock_do_trace_start_locking
+  __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
+  up_read
+  up_write
+
+# required by gpi.ko
+  krealloc
+  __tasklet_hi_schedule
+
+# required by gpio-regulator.ko
+  devm_gpiod_get_index
+  devm_kmemdup
+  gpiod_count
+  gpiod_get_optional
+
+# required by gpu-sched.ko
+  dma_fence_add_callback
+  dma_fence_remove_callback
+  dma_resv_iter_first
+  dma_resv_iter_next
+  kmem_cache_alloc
+  kmem_cache_create
+  kmem_cache_destroy
+  kmem_cache_free
+  kthread_parkme
+  kthread_should_park
+  wait_for_completion
+  xa_destroy
+  xa_store
+
+# required by i2c-designware-core.ko
+  i2c_generic_scl_recovery
+  i2c_recover_bus
+
+# required by i2c-dev.ko
+  bus_register_notifier
+  bus_unregister_notifier
+  __class_create
+  class_destroy
+  i2c_bus_type
+  i2c_for_each_dev
+  i2c_get_adapter
+  i2c_transfer_buffer_flags
+  i2c_verify_client
+  memdup_user
+  register_chrdev_region
+
+# required by i2c-mux-pca954x.ko
+  device_create_file
+  device_remove_file
+  i2c_get_device_id
+  i2c_smbus_read_byte
+  i2c_smbus_write_byte
+  irq_create_mapping_affinity
+  irq_dispose_mapping
+  irq_domain_simple_ops
+
+# required by i2c-mux.ko
+  __i2c_transfer
+  rt_mutex_lock
+  rt_mutex_trylock
+  rt_mutex_unlock
+
+# required by i2c-qcom-geni.ko
+  geni_se_rx_dma_prep
+  geni_se_rx_dma_unprep
+  geni_se_tx_dma_prep
+  geni_se_tx_dma_unprep
+  i2c_get_dma_safe_msg_buf
+  i2c_put_dma_safe_msg_buf
+
+# required by i2c-rk3x.ko
+  clk_notifier_register
+  clk_notifier_unregister
+
+# required by icc-bcm-voter.ko
+  list_sort
+  of_property_match_string
+
+# required by icc-osm-l3.ko
+  icc_std_aggregate
+  of_icc_xlate_onecell
+
+# required by icc-rpmh.ko
+  qcom_icc_xlate_extended
+
+# required by leds-qcom-lpg.ko
+  __bitmap_clear
+  devm_led_classdev_multicolor_register_ext
+  devm_led_classdev_register_ext
+  led_mc_calc_color_components
+  pwmchip_add
+  pwmchip_remove
+
+# required by lmh.ko
+  of_cpu_node_to_id
+
+# required by lontium-lt9611uxc.ko
+  regmap_noinc_read
+  regmap_noinc_write
+
+# required by lpass-gfm-sm8250.ko
+  __clk_mux_determine_rate
+  devm_pm_clk_create
+  of_pm_clk_add_clks
+  pm_clk_resume
+  pm_clk_suspend
+
+# required by mac80211.ko
+  alloc_netdev_mqs
+  __alloc_percpu_gfp
+  arc4_crypt
+  arc4_setkey
+  bitmap_free
+  bitmap_zalloc
+  crc32_be
+  crypto_aead_decrypt
+  crypto_aead_encrypt
+  crypto_aead_setauthsize
+  crypto_aead_setkey
+  crypto_alloc_aead
+  crypto_alloc_skcipher
+  __crypto_memneq
+  crypto_shash_digest
+  crypto_shash_finup
+  crypto_skcipher_decrypt
+  crypto_skcipher_encrypt
+  crypto_skcipher_setkey
+  __crypto_xor
+  dev_addr_mod
+  dev_alloc_name
+  dev_fetch_sw_netstats
+  __dev_queue_xmit
+  ether_setup
+  eth_mac_addr
+  ethtool_op_get_link
+  free_netdev
+  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
+  napi_gro_receive
+  netdev_set_default_ethtool_ops
+  netif_carrier_off
+  netif_carrier_on
+  netif_receive_skb
+  netif_receive_skb_list
+  netif_tx_stop_all_queues
+  __per_cpu_offset
+  ___pskb_trim
+  register_inet6addr_notifier
+  register_inetaddr_notifier
+  rhashtable_free_and_destroy
+  rhltable_init
+  round_jiffies
+  round_jiffies_relative
+  sg_init_one
+  skb_checksum_help
+  skb_clone_sk
+  skb_complete_wifi_ack
+  skb_copy_expand
+  skb_ensure_writable
+  __skb_gso_segment
+  system_freezable_wq
+  unregister_inet6addr_notifier
+  unregister_inetaddr_notifier
+  unregister_netdevice_many
+
+# required by mcp251xfd.ko
+  alloc_candev_mqs
+  alloc_can_err_skb
+  alloc_canfd_skb
+  alloc_can_skb
+  can_bus_off
+  can_change_mtu
+  can_change_state
+  can_dropped_invalid_skb
+  can_eth_ioctl_hwts
+  can_ethtool_op_get_ts_info_hwts
+  can_fd_dlc2len
+  can_fd_len2dlc
+  can_put_echo_skb
+  can_rx_offload_add_manual
+  can_rx_offload_del
+  can_rx_offload_enable
+  can_rx_offload_get_echo_skb
+  can_rx_offload_queue_timestamp
+  can_rx_offload_threaded_irq_finish
+  can_skb_get_frame_len
+  close_candev
+  devm_gpiod_put
+  dql_completed
+  dql_reset
+  free_candev
+  netdev_notice
+  netdev_printk
+  netdev_warn
+  netif_schedule_queue
+  open_candev
+  register_candev
+  regmap_get_val_bytes
+  regmap_raw_write
+  spi_async
+  spi_get_device_id
+  __spi_register_driver
+  spi_setup
+  spi_sync
+  spi_write_then_read
+  timecounter_cyc2time
+  timecounter_init
+  timecounter_read
+  unregister_candev
+  __vmalloc
+
+# required by mhi.ko
+  get_random_u32
+  pm_wakeup_dev_event
+  _raw_read_lock_irq
+  _raw_read_unlock_irq
+  _raw_write_lock_irqsave
+  _raw_write_unlock_irqrestore
+  sysfs_emit_at
+
+# required by michael_mic.ko
+  crypto_register_shash
+  crypto_unregister_shash
+
+# required by msm.ko
+  __bitmap_andnot
+  clk_get_parent
+  component_add
+  component_bind_all
+  component_compare_of
+  component_del
+  component_master_add_with_match
+  component_master_del
+  component_unbind_all
+  debugfs_attr_read
+  debugfs_attr_write
+  debugfs_create_bool
+  debugfs_create_file_unsafe
+  debugfs_create_u64
+  debugfs_create_x64
+  dev_coredumpm
+  devfreq_cooling_unregister
+  devfreq_recommended_opp
+  devfreq_resume_device
+  devfreq_suspend_device
+  __devm_clk_hw_register_divider
+  devm_clk_hw_register_fixed_factor_parent_hw
+  __devm_clk_hw_register_mux
+  devm_clk_register
+  devm_devfreq_add_device
+  devm_drm_of_get_bridge
+  devm_regulator_bulk_get_const
+  devm_regulator_get_exclusive
+  dev_pm_opp_get_freq
+  dev_pm_opp_get_voltage
+  dev_pm_qos_add_request
+  dev_pm_qos_remove_request
+  dev_pm_qos_update_request
+  dma_resv_add_fence
+  dma_resv_describe
+  dma_resv_reserve_fences
+  dma_resv_test_signaled
+  dma_resv_wait_timeout
+  drm_add_modes_noedid
+  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_crtc_destroy_state
+  drm_atomic_helper_crtc_destroy_state
+  __drm_atomic_helper_crtc_duplicate_state
+  drm_atomic_helper_crtc_duplicate_state
+  __drm_atomic_helper_crtc_reset
+  drm_atomic_helper_crtc_reset
+  drm_atomic_helper_dirtyfb
+  drm_atomic_helper_disable_plane
+  drm_atomic_helper_duplicate_state
+  drm_atomic_helper_page_flip
+  __drm_atomic_helper_plane_destroy_state
+  drm_atomic_helper_plane_destroy_state
+  __drm_atomic_helper_plane_duplicate_state
+  drm_atomic_helper_plane_duplicate_state
+  __drm_atomic_helper_plane_reset
+  drm_atomic_helper_plane_reset
+  drm_atomic_helper_set_config
+  drm_atomic_helper_shutdown
+  drm_atomic_helper_update_plane
+  drm_atomic_print_new_state
+  __drm_atomic_state_free
+  drm_bridge_attach
+  drm_bridge_connector_enable_hpd
+  drm_bridge_connector_init
+  drm_bridge_detect
+  drm_compat_ioctl
+  drm_crtc_accurate_vblank_count
+  drm_crtc_cleanup
+  drm_crtc_enable_color_mgmt
+  drm_crtc_handle_vblank
+  drm_crtc_init_with_planes
+  drm_crtc_send_vblank_event
+  drm_crtc_set_max_vblank_count
+  drm_crtc_vblank_get
+  drm_crtc_vblank_helper_get_vblank_timestamp
+  drm_crtc_vblank_off
+  drm_crtc_vblank_on
+  drm_crtc_vblank_put
+  drm_debugfs_create_files
+  drm_detect_hdmi_monitor
+  drm_dev_alloc
+  drm_dev_put
+  drm_dev_register
+  drm_dev_unregister
+  drm_edid_block_valid
+  drm_encoder_cleanup
+  drm_encoder_init
+  drm_firmware_drivers_only
+  drm_flip_work_cleanup
+  drm_flip_work_commit
+  drm_flip_work_init
+  drm_flip_work_queue
+  drm_format_info
+  drm_framebuffer_init
+  drm_gem_create_mmap_offset
+  drm_gem_fb_create_handle
+  drm_gem_fb_destroy
+  drm_gem_fb_get_obj
+  drm_gem_free_mmap_offset
+  drm_gem_get_pages
+  drm_gem_handle_create
+  drm_gem_lru_init
+  drm_gem_lru_move_tail
+  drm_gem_lru_scan
+  drm_gem_mmap
+  drm_gem_object_free
+  drm_gem_object_init
+  drm_gem_object_lookup
+  drm_gem_object_release
+  drm_gem_plane_helper_prepare_fb
+  drm_gem_prime_fd_to_handle
+  drm_gem_prime_handle_to_fd
+  drm_gem_prime_mmap
+  drm_gem_private_object_init
+  drm_gem_put_pages
+  drm_gem_vm_close
+  drm_gem_vm_open
+  drm_get_format_info
+  drm_handle_vblank
+  drm_helper_hpd_irq_event
+  drm_helper_mode_fill_fb_struct
+  drm_helper_move_panel_connectors_to_head
+  drm_ioctl
+  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_config_helper_resume
+  drm_mode_config_helper_suspend
+  drm_mode_config_reset
+  drm_mode_copy
+  drm_mode_debug_printmodeline
+  drm_mode_destroy
+  drm_mode_duplicate
+  drm_modeset_acquire_fini
+  drm_modeset_acquire_init
+  drm_modeset_backoff
+  drm_modeset_drop_locks
+  drm_modeset_lock_all
+  drm_modeset_lock_all_ctx
+  drm_modeset_lock_init
+  drm_modeset_unlock_all
+  drm_of_component_match_add
+  drm_of_find_panel_or_bridge
+  drm_of_get_data_lanes_count
+  drm_open
+  drm_panel_disable
+  drm_panel_enable
+  drm_panel_get_modes
+  drm_panel_prepare
+  drm_panel_unprepare
+  drm_plane_cleanup
+  drm_plane_create_alpha_property
+  drm_plane_create_blend_mode_property
+  drm_plane_create_rotation_property
+  drm_plane_create_zpos_property
+  drm_plane_enable_fb_damage_clips
+  drm_poll
+  drm_prime_gem_destroy
+  drm_prime_pages_to_sg
+  drm_prime_sg_to_page_array
+  __drm_printfn_coredump
+  __drm_printfn_info
+  __drm_printfn_seq_file
+  drm_puts
+  __drm_puts_coredump
+  __drm_puts_seq_file
+  drm_read
+  drm_rect_calc_hscale
+  drm_rect_calc_vscale
+  drm_rect_intersect
+  drm_release
+  drm_rotation_simplify
+  drm_state_dump
+  drm_syncobj_add_point
+  drm_syncobj_find
+  drm_syncobj_find_fence
+  drm_syncobj_free
+  drm_syncobj_replace_fence
+  drm_universal_plane_init
+  drm_vblank_init
+  drm_writeback_connector_init_with_encoder
+  drm_writeback_queue_job
+  drm_writeback_signal_completion
+  fd_install
+  get_pid_task
+  get_unused_fd_flags
+  gpiod_get_value
+  hdmi_audio_infoframe_pack
+  hdmi_infoframe_pack
+  icc_put
+  idr_alloc_u32
+  invalidate_mapping_pages
+  iommu_map_sg
+  iommu_set_fault_handler
+  iommu_set_pgtable_quirks
+  kstrdup_quotable_cmdline
+  kstrtouint_from_user
+  kthread_cancel_work_sync
+  kthread_create_worker
+  kthread_destroy_worker
+  kthread_queue_work
+  memdup_user_nul
+  memparse
+  mipi_dsi_create_packet
+  mipi_dsi_host_register
+  mipi_dsi_host_unregister
+  mipi_dsi_packet_format_is_long
+  mutex_lock_interruptible
+  noop_llseek
+  nr_swap_pages
+  nsecs_to_jiffies
+  of_devfreq_cooling_register
+  of_drm_find_panel
+  of_find_matching_node_and_match
+  of_graph_get_endpoint_by_regs
+  of_graph_get_next_endpoint
+  of_graph_get_remote_port_parent
+  of_icc_get
+  param_ops_ullong
+  phy_calibrate
+  phy_configure
+  pid_task
+  put_pid
+  put_unused_fd
+  _raw_write_lock
+  _raw_write_unlock
+  register_shrinker
+  register_vmap_purge_notifier
+  reservation_ww_class
+  sched_set_fifo
+  schedule_timeout_interruptible
+  __sg_page_iter_dma_next
+  shmem_truncate_range
+  simple_attr_open
+  simple_attr_release
+  simple_open
+  sync_file_create
+  sync_file_get_fence
+  unmap_mapping_range
+  unregister_shrinker
+  unregister_vmap_purge_notifier
+  vmf_insert_pfn
+  vm_get_page_prot
+  vscnprintf
+  vsnprintf
+  ww_mutex_lock
+  ww_mutex_lock_interruptible
+  ww_mutex_unlock
+
+# required by msm_serial.ko
+  do_SAK
+  handle_sysrq
+  sysrq_mask
+  tty_flip_buffer_push
+  __tty_insert_flip_char
+  tty_termios_baud_rate
+  tty_termios_encode_baud_rate
+  uart_add_one_port
+  uart_get_baud_rate
+  uart_register_driver
+  uart_remove_one_port
+  uart_resume_port
+  uart_suspend_port
+  uart_try_toggle_sysrq
+  uart_unregister_driver
+  uart_update_timeout
+  uart_write_wakeup
+
+# required by nvmem_qfprom.ko
+  devm_nvmem_register
+
+# required by ohci-hcd.ko
+  dma_pool_alloc
+  dma_pool_create
+  dma_pool_destroy
+  dma_pool_free
+  free_pages
+  gen_pool_dma_alloc_align
+  gen_pool_dma_zalloc_align
+  gen_pool_free_owner
+  get_zeroed_page
+  sb800_prefetch
+  schedule_timeout_uninterruptible
+  usb_amd_dev_put
+  usb_amd_quirk_pll_disable
+  usb_amd_quirk_pll_enable
+  usb_calc_bus_time
+  usb_debug_root
+  usb_hcd_check_unlink_urb
+  usb_hcd_giveback_urb
+  usb_hc_died
+  usb_hcd_link_urb_to_ep
+  usb_hcd_poll_rh_status
+  usb_hcd_resume_root_hub
+  usb_hcds_loaded
+  usb_hcd_unlink_urb_from_ep
+  usb_root_hub_lost_power
+
+# required by ohci-pci.ko
+  pci_dev_put
+  pci_get_slot
+  pci_match_id
+  usb_amd_prefetch_quirk
+  usb_amd_quirk_pll_check
+  usb_hcd_pci_pm_ops
+  usb_hcd_pci_probe
+  usb_hcd_pci_remove
+  usb_hcd_pci_shutdown
+
+# required by ohci-platform.ko
+  devm_reset_control_array_get
+  of_clk_get
+  of_usb_host_tpl_support
+  usb_add_hcd
+  usb_create_hcd
+  usb_hcd_platform_shutdown
+  usb_put_hcd
+  usb_remove_hcd
+
+# required by phy-qcom-qmp-pcie-msm8996.ko
+  __of_reset_control_get
+
+# required by phy-qcom-usb-hs.ko
+  extcon_get_edev_by_phandle
+  extcon_get_state
+  extcon_register_notifier
+  extcon_unregister_notifier
+
+# required by pinctrl-lpass-lpi.ko
+  pinctrl_generic_add_group
+  pinctrl_generic_get_group_count
+  pinctrl_generic_get_group_name
+  pinctrl_generic_get_group_pins
+  pinctrl_generic_remove_group
+
+# required by pinctrl-msm.ko
+  device_property_read_u16_array
+  gpiochip_line_is_valid
+  gpiochip_lock_as_irq
+  gpiochip_unlock_as_irq
+  handle_fasteoi_ack_irq
+  handle_fasteoi_irq
+  module_put
+  pinctrl_force_default
+  pinctrl_force_sleep
+  pm_power_off
+  register_restart_handler
+  try_module_get
+  unregister_restart_handler
+
+# required by pinctrl-spmi-gpio.ko
+  gpiochip_irq_relres
+  gpiochip_irq_reqres
+
+# required by pinctrl-spmi-mpp.ko
+  gpiochip_populate_parent_fwspec_fourcell
+
+# required by pm8941-pwrkey.ko
+  devm_input_allocate_device
+  input_event
+  input_register_device
+  input_set_capability
+  __of_get_address
+  reboot_mode
+
+# required by q6asm-dai.ko
+  snd_dma_alloc_dir_pages
+  snd_dma_free_pages
+  snd_pcm_hw_constraint_list
+  snd_soc_new_compress
+  snd_soc_set_runtime_hwparams
+
+# required by qcom-cpufreq-hw.ko
+  cpufreq_cpu_get_raw
+  cpufreq_enable_boost_support
+  cpufreq_freq_attr_scaling_available_freqs
+  cpufreq_freq_attr_scaling_boost_freqs
+  cpufreq_generic_frequency_table_verify
+  cpufreq_get_driver_data
+  cpufreq_register_driver
+  cpufreq_unregister_driver
+  dev_pm_opp_adjust_voltage
+  dev_pm_opp_disable
+  dev_pm_opp_enable
+  dev_pm_opp_of_add_table
+  dev_pm_opp_of_cpumask_remove_table
+  dev_pm_opp_of_register_em
+  dev_pm_opp_remove_all_dynamic
+  dev_pm_opp_set_sharing_cpus
+  freq_qos_add_request
+  freq_qos_remove_request
+  freq_qos_update_request
+  get_cpu_device
+  of_get_cpu_node
+  policy_has_boost_freq
+  system_highpri_wq
+  topology_update_thermal_pressure
+
+# required by qcom-ipcc.ko
+  mbox_controller_unregister
+  of_count_phandle_with_args
+  of_find_node_with_property
+
+# required by qcom-pdc.ko
+  irq_chip_eoi_parent
+  irq_chip_get_parent_state
+  irq_chip_retrigger_hierarchy
+  irq_domain_alloc_irqs_parent
+  irq_domain_create_hierarchy
+  irq_domain_disconnect_hierarchy
+  irq_domain_set_hwirq_and_chip
+  irq_domain_translate_twocell
+  irq_domain_update_bus_token
+  of_iomap
+  platform_irqchip_probe
+
+# required by qcom-pmic-typec.ko
+  fwnode_usb_role_switch_get
+  typec_find_port_data_role
+  typec_find_port_power_role
+  typec_register_port
+  typec_set_orientation
+  typec_unregister_port
+  usb_role_switch_put
+  usb_role_switch_set_role
+
+# required by qcom-rpmh-regulator.ko
+  regulator_list_voltage_linear_range
+
+# required by qcom-scm.ko
+  __arm_smccc_smc
+  __cpu_present_mask
+
+# required by qcom-spmi-adc-tm5.ko
+  devm_fwnode_iio_channel_get_by_name
+
+# required by qcom-spmi-adc5.ko
+  device_get_child_node_count
+  device_get_next_child_node
+  devm_iio_device_alloc
+  __devm_iio_device_register
+  strchrnul
+
+# required by qcom-spmi-pmic.ko
+  __devm_regmap_init_spmi_ext
+  of_get_parent
+  spmi_device_from_of
+  __spmi_driver_register
+
+# required by qcom-spmi-temp-alarm.ko
+  devm_iio_channel_get
+  of_thermal_get_ntrips
+  of_thermal_get_trip_points
+  of_thermal_is_trip_valid
+
+# required by qcom_aoss.ko
+  clk_hw_unregister
+  devm_thermal_of_cooling_device_register
+
+# required by qcom_common.ko
+  rproc_coredump_add_segment
+  rproc_coredump_using_sections
+  srcu_init_notifier_head
+  srcu_notifier_call_chain
+  srcu_notifier_chain_register
+  srcu_notifier_chain_unregister
+
+# required by qcom_glink.ko
+  device_add_groups
+
+# required by qcom_hwspinlock.ko
+  devm_hwspin_lock_register
+
+# required by qcom_pil_info.ko
+  of_find_compatible_node
+
+# required by qcom_q6v5.ko
+  devm_qcom_smem_state_get
+  rproc_report_crash
+
+# required by qcom_q6v5_mss.ko
+  of_platform_device_create
+  of_platform_device_destroy
+
+# required by qcom_q6v5_wcss.ko
+  rproc_elf_get_boot_addr
+
+# required by qcom_rpmh.ko
+  cpu_pm_register_notifier
+  __num_online_cpus
+  _raw_spin_trylock
+
+# required by qcom_spmi-regulator.ko
+  smp_call_function_single
+
+# required by qcom_sysmon.ko
+  rproc_get_by_child
+  try_wait_for_completion
+
+# required by qcom_tsens.ko
+  debugfs_lookup
+
+# required by qcom_usb_vbus-regulator.ko
+  regulator_get_current_limit_regmap
+  regulator_set_current_limit_regmap
+
+# required by qrtr-tun.ko
+  _copy_to_iter
+
+# required by qrtr.ko
+  autoremove_wake_function
+  datagram_poll
+  do_wait_intr_irq
+  get_user_ifreq
+  kernel_bind
+  lock_sock_nested
+  proto_register
+  proto_unregister
+  put_user_ifreq
+  radix_tree_delete
+  radix_tree_insert
+  radix_tree_iter_delete
+  radix_tree_iter_resume
+  radix_tree_lookup
+  radix_tree_next_chunk
+  refcount_dec_and_mutex_lock
+  release_sock
+  sk_alloc
+  skb_copy_datagram_iter
+  skb_free_datagram
+  __skb_pad
+  skb_recv_datagram
+  skb_set_owner_w
+  sk_error_report
+  sock_alloc_send_pskb
+  sock_gettstamp
+  sock_init_data
+  sock_no_accept
+  sock_no_listen
+  sock_no_mmap
+  sock_no_sendpage
+  sock_no_shutdown
+  sock_no_socketpair
+  sock_queue_rcv_skb_reason
+  sock_register
+  sock_unregister
+  __xa_insert
+  xa_load
+
+# required by reboot-mode.ko
+  devres_add
+  __devres_alloc_node
+  devres_free
+  devres_release
+
+# required by rmtfs_mem.ko
+  alloc_chrdev_region
+
+# required by rpmsg_ns.ko
+  rpmsg_create_channel
+  rpmsg_create_ept
+  rpmsg_release_channel
+
+# required by rtc-pm8xxx.ko
+  devm_request_any_context_irq
+  devm_rtc_allocate_device
+  __devm_rtc_register_device
+  rtc_time64_to_tm
+  rtc_tm_to_time64
+  rtc_update_irq
+
+# required by sdhci-msm.ko
+  mmc_of_parse
+  mmc_regulator_get_supply
+  mmc_regulator_set_ocr
+  mmc_regulator_set_vqmmc
+  mmc_send_tuning
+  __sdhci_add_host
+  sdhci_add_host
+  sdhci_cleanup_host
+  sdhci_cqe_disable
+  sdhci_cqe_enable
+  sdhci_cqe_irq
+  sdhci_enable_clk
+  sdhci_get_property
+  sdhci_pltfm_free
+  sdhci_pltfm_init
+  sdhci_remove_host
+  sdhci_reset
+  sdhci_set_bus_width
+  sdhci_set_power_noreg
+  __sdhci_set_timeout
+  sdhci_setup_host
+
+# required by slim-qcom-ngd-ctrl.ko
+  driver_set_override
+  platform_device_add
+  platform_device_alloc
+  platform_device_put
+
+# required by slimbus.ko
+  device_find_child
+
+# required by smem.ko
+  hwspin_lock_free
+  hwspin_lock_request_specific
+  __hwspin_lock_timeout
+  __hwspin_unlock
+  of_hwspin_lock_get_id
+
+# required by snd-q6apm.ko
+  snd_soc_tplg_component_load
+  snd_soc_tplg_component_remove
+  snd_soc_tplg_widget_bind_event
+
+# 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
+
+# required by snd-soc-lpass-va-macro.ko
+  clk_hw_get_clk
+  dapm_regulator_event
+  regcache_sync_region
+
+# required by snd-soc-qcom-common.ko
+  snd_soc_dai_link_set_capabilities
+  snd_soc_of_get_dai_link_codecs
+  snd_soc_of_get_dai_name
+  snd_soc_of_parse_audio_routing
+  snd_soc_of_parse_audio_simple_widgets
+  snd_soc_of_parse_aux_devs
+  snd_soc_of_parse_card_name
+  snd_soc_of_parse_pin_switches
+
+# required by snd-soc-rt5663.ko
+  regcache_cache_bypass
+  snd_soc_dapm_disable_pin
+  snd_soc_dapm_force_enable_pin
+  snd_soc_dapm_new_controls
+  snd_soc_dapm_sync
+
+# required by snd-soc-sdm845.ko
+  snd_soc_dai_get_channel_map
+  snd_soc_dai_set_channel_map
+  snd_soc_dai_set_tdm_slot
+
+# required by snd-soc-wcd9335.ko
+  gpiod_direction_output_raw
+  gpiod_set_raw_value
+  gpio_to_desc
+  kmemdup_nul
+  of_get_named_gpio_flags
+  regmap_irq_set_type_config_simple
+  strnstr
+
+# required by snd-soc-wcd934x.ko
+  kstrndup
+
+# required by snd-soc-wsa881x.ko
+  gpiod_direction_output
+
+# required by socinfo.ko
+  add_device_randomness
+  soc_device_register
+  soc_device_unregister
+
+# required by soundwire-bus.ko
+  devm_device_add_group
+  devm_device_add_groups
+  pm_generic_runtime_resume
+  pm_generic_runtime_suspend
+
+# required by spi-geni-qcom.ko
+  geni_se_clk_freq_match
+
+# required by spi-pl022.ko
+  amba_driver_register
+  amba_driver_unregister
+  amba_release_regions
+  amba_request_regions
+  __dma_request_channel
+  loops_per_jiffy
+  pinctrl_pm_select_idle_state
+  spi_delay_exec
+  spi_finalize_current_message
+  spi_get_next_queued_message
+
+# required by spi-qcom-qspi.ko
+  icc_disable
+  icc_enable
+
+# required by spmi-pmic-arb.ko
+  irq_domain_set_info
+  spmi_controller_add
+  spmi_controller_alloc
+  spmi_controller_remove
+
+# 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_add
+  dma_heap_get_dev
+  dma_heap_get_name
+  dma_sync_sg_for_cpu
+  dma_sync_sg_for_device
+  __free_pages
+  __sg_page_iter_next
+
+# required by ufs_qcom.ko
+  insert_resource
+  msi_first_desc
+  msi_next_desc
+  phy_set_mode_ext
+  platform_msi_domain_alloc_irqs
+  platform_msi_domain_free_irqs
+  remove_resource
+  ufshcd_dme_configure_adapt
+  ufshcd_dme_get_attr
+  ufshcd_dme_set_attr
+  ufshcd_dump_regs
+  ufshcd_get_local_unipro_ver
+  ufshcd_get_pwr_dev_param
+  ufshcd_init_pwr_dev_param
+  ufshcd_mcq_config_esi
+  ufshcd_mcq_enable_esi
+  ufshcd_mcq_poll_cqe_lock
+  ufshcd_mcq_write_cqis
+  ufshcd_pltfrm_init
+  ufshcd_pltfrm_shutdown
+  ufshcd_remove
+  ufshcd_resume_complete
+  ufshcd_runtime_resume
+  ufshcd_runtime_suspend
+  ufshcd_suspend_prepare
+  ufshcd_system_freeze
+  ufshcd_system_restore
+  ufshcd_system_resume
+  ufshcd_system_suspend
+  ufshcd_system_thaw
+  ufshcd_uic_hibern8_enter
+  ufshcd_uic_hibern8_exit
+
+# required by ulpi.ko
+  debugfs_lookup_and_remove
+  of_clk_set_defaults
+  of_device_request_module
+  __request_module
+
+# required by venus-core.ko
+  device_link_del
+  init_wait_var_entry
+  memchr
+  v4l2_device_register
+  v4l2_device_unregister
+  v4l2_m2m_buf_queue
+  v4l2_m2m_buf_remove_by_buf
+  v4l2_m2m_buf_remove_by_idx
+  v4l2_m2m_job_finish
+  __var_waitqueue
+  vb2_plane_cookie
+  vb2_queue_error
+  wake_up_var
+
+# required by venus-dec.ko
+  ida_destroy
+  v4l2_event_queue_fh
+  v4l2_m2m_ioctl_try_decoder_cmd
+  v4l2_src_change_event_subscribe
+
+# required by venus-enc.ko
+  v4l2_ctrl_handler_setup
+  v4l2_ctrl_new_std_compound
+  v4l2_m2m_ioctl_try_encoder_cmd
+
+# required by wcd934x.ko
+  mfd_add_devices
+  mfd_remove_devices
+
+# preserved by --additions-only
+  __alloc_pages
+  fwnode_get_name
+  icc_provider_add
+  icc_provider_del
+  ufshcd_mcq_poll_cqe_nolock
diff --git a/android/abi_gki_aarch64_exynos b/android/abi_gki_aarch64_exynos
new file mode 100644
index 0000000..19441f4
--- /dev/null
+++ b/android/abi_gki_aarch64_exynos
@@ -0,0 +1,2442 @@
+[abi_symbol_list]
+# commonly used symbols
+  add_timer
+  add_timer_on
+  adjust_managed_page_count
+  alloc_chrdev_region
+  alloc_netdev_mqs
+  __alloc_pages
+  __alloc_percpu
+  __alloc_skb
+  alloc_workqueue
+  alt_cb_patch_nops
+  android_rvh_probe_register
+  anon_inode_getfile
+  __arch_copy_from_user
+  __arch_copy_to_user
+  argv_free
+  argv_split
+  arm64_use_ng_mappings
+  __arm_smccc_smc
+  atomic_notifier_call_chain
+  atomic_notifier_chain_register
+  atomic_notifier_chain_unregister
+  autoremove_wake_function
+  bcmp
+  __bitmap_and
+  __bitmap_andnot
+  __bitmap_clear
+  __bitmap_equal
+  bitmap_free
+  __bitmap_intersects
+  __bitmap_or
+  bitmap_parse
+  bitmap_parselist
+  bitmap_print_to_pagebuf
+  __bitmap_set
+  __bitmap_subset
+  bitmap_to_arr32
+  __bitmap_weight
+  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
+  bpf_trace_run8
+  bpf_trace_run9
+  bus_register
+  bus_unregister
+  call_rcu
+  cancel_delayed_work
+  cancel_delayed_work_sync
+  cancel_work_sync
+  cdev_add
+  cdev_alloc
+  cdev_del
+  cdev_init
+  cgroup_taskset_first
+  cgroup_taskset_next
+  __check_object_size
+  __class_create
+  class_destroy
+  __class_register
+  class_unregister
+  clk_disable
+  clk_enable
+  clk_get
+  __clk_get_hw
+  clk_get_rate
+  __clk_is_enabled
+  clk_prepare
+  clk_put
+  clk_set_parent
+  clk_set_rate
+  clk_unprepare
+  cma_alloc
+  cma_release
+  complete
+  complete_all
+  completion_done
+  config_ep_by_speed
+  config_group_init_type_name
+  console_suspend_enabled
+  __const_udelay
+  consume_skb
+  __copy_overflow
+  __cpu_active_mask
+  cpu_bit_bitmap
+  cpufreq_cpu_get
+  cpufreq_cpu_put
+  cpufreq_frequency_table_get_index
+  cpufreq_get_policy
+  cpufreq_quick_get
+  cpufreq_register_notifier
+  cpufreq_unregister_notifier
+  __cpuhp_setup_state
+  cpu_hwcaps
+  cpu_number
+  __cpu_online_mask
+  __cpu_possible_mask
+  cpu_subsys
+  crc32_le
+  crypto_alloc_shash
+  crypto_destroy_tfm
+  _ctype
+  debugfs_create_bool
+  debugfs_create_dir
+  debugfs_create_file
+  debugfs_create_symlink
+  debugfs_create_u32
+  debugfs_create_x32
+  debugfs_remove
+  default_llseek
+  delayed_work_timer_fn
+  del_timer
+  del_timer_sync
+  destroy_workqueue
+  dev_driver_string
+  _dev_emerg
+  _dev_err
+  devfreq_add_device
+  devfreq_add_governor
+  devfreq_get_devfreq_by_phandle
+  devfreq_recommended_opp
+  devfreq_remove_device
+  device_create
+  device_create_bin_file
+  device_create_file
+  device_destroy
+  device_for_each_child
+  device_get_next_child_node
+  device_initialize
+  device_property_present
+  device_register
+  device_remove_file
+  device_set_wakeup_capable
+  device_unregister
+  device_wakeup_disable
+  device_wakeup_enable
+  _dev_info
+  __dev_kfree_skb_any
+  devm_add_action
+  devm_backlight_device_register
+  devm_clk_get
+  devm_clk_put
+  devm_devfreq_register_notifier
+  __devm_drm_dev_alloc
+  devm_free_irq
+  devm_gen_pool_create
+  devm_gpiochip_add_data_with_key
+  devm_gpiod_get
+  devm_gpiod_get_optional
+  devm_gpio_request_one
+  devm_i2c_new_dummy_device
+  devm_input_allocate_device
+  devm_ioremap
+  devm_ioremap_resource
+  devm_iounmap
+  __devm_irq_alloc_descs
+  devm_kasprintf
+  devm_kfree
+  devm_kmalloc
+  devm_kmemdup
+  devm_kstrdup
+  devm_mfd_add_devices
+  __devm_of_phy_provider_register
+  devm_phy_create
+  devm_phy_get
+  devm_pinctrl_get
+  devm_pinctrl_put
+  devm_pinctrl_register
+  devm_platform_ioremap_resource
+  __devm_regmap_init_i2c
+  __devm_regmap_init_mmio_clk
+  devm_regulator_bulk_get
+  devm_regulator_get
+  devm_regulator_get_optional
+  devm_regulator_register
+  __devm_request_region
+  devm_request_threaded_irq
+  devm_snd_soc_register_component
+  devm_thermal_of_zone_register
+  _dev_notice
+  dev_pm_opp_add
+  dev_pm_opp_find_freq_ceil
+  dev_pm_opp_get_voltage
+  dev_pm_opp_put
+  dev_pm_qos_add_notifier
+  dev_pm_qos_add_request
+  dev_pm_qos_read_value
+  dev_pm_qos_remove_request
+  dev_pm_qos_update_request
+  devres_add
+  __devres_alloc_node
+  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_get
+  dma_buf_map_attachment
+  dma_buf_mmap
+  dma_buf_put
+  dma_buf_unmap_attachment
+  dma_buf_vmap
+  dma_buf_vunmap
+  dma_fence_add_callback
+  dma_fence_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_buffer_free
+  dma_heap_find
+  dma_heap_put
+  dmam_alloc_attrs
+  dma_map_page_attrs
+  dma_map_resource
+  dma_map_sgtable
+  dmam_free_coherent
+  dma_mmap_attrs
+  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_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_wait_intr
+  down_write
+  d_path
+  driver_unregister
+  drm_add_edid_modes
+  drm_atomic_get_connector_state
+  drm_atomic_get_crtc_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_compat_ioctl
+  drm_connector_attach_encoder
+  drm_connector_cleanup
+  drm_connector_init
+  drm_connector_list_iter_begin
+  drm_connector_list_iter_end
+  drm_connector_list_iter_next
+  drm_connector_register
+  drm_connector_unregister
+  drm_connector_update_edid_property
+  drm_crtc_add_crc_entry
+  __drm_crtc_commit_free
+  drm_crtc_send_vblank_event
+  drm_crtc_vblank_count
+  drm_crtc_vblank_off
+  drm_crtc_vblank_on
+  drm_crtc_vblank_put
+  drm_crtc_wait_one_vblank
+  ___drm_dbg
+  __drm_dev_dbg
+  drm_dev_printk
+  drm_dev_register
+  drm_dev_unregister
+  __drm_err
+  drm_framebuffer_init
+  drm_gem_fb_create_handle
+  drm_gem_fb_destroy
+  drm_gem_handle_create
+  drm_gem_mmap
+  drm_gem_object_free
+  drm_gem_object_lookup
+  drm_gem_object_release
+  drm_gem_prime_fd_to_handle
+  drm_gem_prime_handle_to_fd
+  drm_gem_private_object_init
+  drm_get_edid
+  drm_helper_mode_fill_fb_struct
+  drm_helper_probe_single_connector_modes
+  drm_ioctl
+  drm_kms_helper_hotplug_event
+  drm_kms_helper_poll_fini
+  drm_kms_helper_poll_init
+  drmm_mode_config_init
+  drm_mode_duplicate
+  drm_mode_match
+  drm_mode_probed_add
+  drm_modeset_lock
+  drm_modeset_unlock
+  drm_mode_vrefresh
+  drm_object_attach_property
+  drm_open
+  drm_poll
+  drm_prime_gem_destroy
+  drm_printf
+  __drm_printfn_seq_file
+  drm_property_create_blob
+  drm_property_create_enum
+  drm_property_create_range
+  __drm_puts_seq_file
+  drm_read
+  drm_release
+  drm_vblank_init
+  dump_stack
+  enable_irq
+  eth_type_trans
+  fd_install
+  _find_first_bit
+  _find_last_bit
+  _find_next_and_bit
+  _find_next_bit
+  _find_next_zero_bit
+  find_vpid
+  finish_wait
+  firmware_request_nowarn
+  flush_delayed_work
+  flush_work
+  __flush_workqueue
+  fortify_panic
+  fput
+  free_irq
+  free_netdev
+  __free_pages
+  free_pages
+  freq_qos_update_request
+  gcd
+  generic_file_llseek
+  generic_handle_irq
+  genlmsg_multicast_allns
+  genlmsg_put
+  genl_register_family
+  genl_unregister_family
+  gen_pool_add_owner
+  gen_pool_alloc_algo_owner
+  gen_pool_avail
+  gen_pool_create
+  gen_pool_destroy
+  gen_pool_free_owner
+  gen_pool_has_addr
+  gen_pool_size
+  get_cpu_device
+  get_device
+  __get_free_pages
+  get_random_bytes
+  get_task_mm
+  get_thermal_instance
+  get_unused_fd_flags
+  gic_nonsecure_priorities
+  gpiochip_add_pin_range
+  gpiochip_generic_free
+  gpiochip_generic_request
+  gpiochip_get_data
+  gpiod_direction_input
+  gpiod_direction_output_raw
+  gpiod_get_raw_value
+  gpiod_set_raw_value
+  gpiod_set_value_cansleep
+  gpiod_to_irq
+  gpio_free
+  gpio_request
+  gpio_request_one
+  gpio_to_desc
+  gserial_alloc_line
+  gserial_connect
+  gserial_disconnect
+  handle_edge_irq
+  handle_level_irq
+  handle_nested_irq
+  hrtimer_active
+  hrtimer_cancel
+  hrtimer_forward
+  hrtimer_init
+  hrtimer_start_range_ns
+  hrtimer_try_to_cancel
+  i2c_add_adapter
+  i2c_add_numbered_adapter
+  i2c_del_adapter
+  i2c_del_driver
+  i2c_new_client_device
+  i2c_register_driver
+  i2c_smbus_read_byte_data
+  i2c_smbus_read_i2c_block_data
+  i2c_smbus_read_word_data
+  i2c_smbus_write_byte_data
+  i2c_smbus_write_i2c_block_data
+  i2c_transfer
+  i2c_transfer_buffer_flags
+  ida_alloc_range
+  ida_free
+  idr_alloc
+  idr_remove
+  init_dummy_netdev
+  init_net
+  __init_rwsem
+  __init_swait_queue_head
+  init_task
+  init_timer_key
+  init_wait_entry
+  __init_waitqueue_head
+  input_event
+  input_register_device
+  input_set_capability
+  input_unregister_device
+  iomem_resource
+  iommu_get_domain_for_dev
+  iommu_iova_to_phys
+  iommu_map
+  iommu_map_sg
+  iommu_register_device_fault_handler
+  iommu_unmap
+  iommu_unregister_device_fault_handler
+  ioremap_prot
+  iounmap
+  __irq_apply_affinity_hint
+  irq_create_mapping_affinity
+  __irq_domain_add
+  irq_domain_remove
+  irq_get_irq_data
+  irq_modify_status
+  irq_of_parse_and_map
+  __irq_resolve_mapping
+  irq_set_chip_and_handler_name
+  irq_set_chip_data
+  irq_set_irq_wake
+  irq_to_desc
+  is_vmalloc_addr
+  jiffies
+  jiffies_to_msecs
+  jiffies_to_usecs
+  kasan_flag_enabled
+  kasprintf
+  kernel_kobj
+  __kfifo_alloc
+  __kfifo_free
+  __kfifo_in
+  __kfifo_out
+  __kfifo_to_user
+  kfree
+  kfree_const
+  kfree_skb_reason
+  kimage_voffset
+  __kmalloc
+  kmalloc_caches
+  kmalloc_large
+  kmalloc_trace
+  kmem_cache_alloc
+  kmem_cache_create
+  kmem_cache_destroy
+  kmem_cache_free
+  kmemdup
+  kobject_add
+  kobject_create_and_add
+  kobject_init
+  kobject_init_and_add
+  kobject_put
+  kobject_uevent_env
+  krealloc
+  kstrdup
+  kstrndup
+  kstrtobool
+  kstrtoint
+  kstrtoint_from_user
+  kstrtoll
+  kstrtou8
+  kstrtouint
+  kstrtouint_from_user
+  kstrtoull
+  kthread_bind
+  kthread_cancel_work_sync
+  kthread_create_on_node
+  kthread_delayed_work_timer_fn
+  __kthread_init_worker
+  kthread_park
+  kthread_parkme
+  kthread_queue_work
+  kthread_should_park
+  kthread_should_stop
+  kthread_stop
+  kthread_unpark
+  kthread_worker_fn
+  ktime_get
+  ktime_get_mono_fast_ns
+  ktime_get_real_ts64
+  ktime_get_ts64
+  ktime_get_with_offset
+  kvfree
+  kvfree_call_rcu
+  kvmalloc_node
+  __list_add_valid
+  __list_del_entry_valid
+  list_sort
+  log_post_read_mmio
+  log_post_write_mmio
+  log_read_mmio
+  log_write_mmio
+  loops_per_jiffy
+  memchr
+  memcmp
+  memcpy
+  __memcpy_fromio
+  __memcpy_toio
+  memdup_user
+  mem_section
+  memset
+  __memset_io
+  memstart_addr
+  mfd_add_devices
+  mfd_remove_devices
+  mipi_dsi_dcs_set_display_brightness
+  misc_deregister
+  misc_register
+  mod_delayed_work_on
+  mod_timer
+  module_layout
+  __msecs_to_jiffies
+  msleep
+  msleep_interruptible
+  __mutex_init
+  mutex_is_locked
+  mutex_lock
+  mutex_lock_interruptible
+  mutex_trylock
+  mutex_unlock
+  names_cachep
+  napi_complete_done
+  napi_enable
+  napi_gro_receive
+  __napi_schedule
+  napi_schedule_prep
+  __netdev_alloc_skb
+  netif_napi_add_weight
+  netif_receive_skb
+  netif_rx
+  netif_tx_wake_queue
+  nla_memcpy
+  nla_put
+  nla_reserve
+  noop_llseek
+  nr_cpu_ids
+  nsecs_to_jiffies
+  ns_to_kernel_old_timeval
+  ns_to_timespec64
+  __num_online_cpus
+  of_add_property
+  of_address_to_resource
+  of_alias_get_id
+  of_count_phandle_with_args
+  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_node_by_type
+  of_find_node_opts_by_path
+  of_find_property
+  of_fwnode_ops
+  of_get_child_by_name
+  of_get_named_gpio_flags
+  of_get_next_available_child
+  of_get_next_child
+  of_get_property
+  of_get_regulator_init_data
+  of_iomap
+  of_irq_get_byname
+  of_irq_parse_one
+  of_match_device
+  of_match_node
+  of_n_addr_cells
+  of_n_size_cells
+  __of_parse_phandle_with_args
+  of_phandle_iterator_init
+  of_phandle_iterator_next
+  of_platform_populate
+  of_property_count_elems_of_size
+  of_property_match_string
+  of_property_read_string
+  of_property_read_string_helper
+  of_property_read_u32_index
+  of_property_read_u64
+  of_property_read_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
+  of_thermal_get_ntrips
+  panic
+  panic_notifier_list
+  param_array_ops
+  param_ops_bool
+  param_ops_charp
+  param_ops_int
+  param_ops_string
+  param_ops_uint
+  param_ops_ulong
+  param_set_ulong
+  pci_alloc_irq_vectors_affinity
+  pci_clear_master
+  pcie_get_mps
+  pci_free_irq_vectors
+  pci_irq_vector
+  pci_load_saved_state
+  pci_read_config_dword
+  pci_read_config_word
+  pci_restore_state
+  pci_save_state
+  pci_set_master
+  pci_store_saved_state
+  pci_write_config_dword
+  __per_cpu_offset
+  perf_trace_buf_alloc
+  perf_trace_run_bpf_submit
+  phy_power_off
+  phy_power_on
+  pinconf_generic_dt_node_to_map
+  pinctrl_dev_get_drvdata
+  pinctrl_lookup_state
+  pinctrl_select_state
+  pinctrl_utils_free_map
+  platform_device_register
+  platform_device_register_full
+  platform_device_unregister
+  __platform_driver_probe
+  __platform_driver_register
+  platform_driver_unregister
+  platform_get_irq
+  platform_get_irq_byname
+  platform_get_resource
+  platform_get_resource_byname
+  __platform_register_drivers
+  __pm_relax
+  pm_relax
+  pm_runtime_barrier
+  __pm_runtime_disable
+  pm_runtime_enable
+  pm_runtime_forbid
+  __pm_runtime_idle
+  pm_runtime_no_callbacks
+  __pm_runtime_resume
+  pm_runtime_set_autosuspend_delay
+  __pm_runtime_set_status
+  __pm_runtime_suspend
+  __pm_runtime_use_autosuspend
+  __pm_stay_awake
+  pm_stay_awake
+  pm_wakeup_ws_event
+  power_supply_changed
+  power_supply_get_by_name
+  power_supply_get_drvdata
+  power_supply_get_property
+  power_supply_register
+  power_supply_set_property
+  power_supply_unregister
+  preempt_schedule
+  preempt_schedule_notrace
+  prepare_to_wait_event
+  print_hex_dump
+  _printk
+  __printk_ratelimit
+  proc_create
+  proc_create_data
+  proc_mkdir
+  proc_remove
+  proc_set_size
+  proc_set_user
+  put_device
+  __put_task_struct
+  put_unused_fd
+  queue_delayed_work_on
+  queue_work_on
+  ___ratelimit
+  raw_notifier_call_chain
+  raw_notifier_chain_register
+  _raw_read_lock
+  _raw_read_unlock
+  _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_barrier
+  __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
+  register_chrdev_region
+  register_die_notifier
+  register_netdevice
+  register_pm_notifier
+  register_reboot_notifier
+  register_restart_handler
+  register_syscore_ops
+  regmap_bulk_read
+  regmap_multi_reg_write
+  regmap_raw_read
+  regmap_raw_write
+  regmap_read
+  regmap_register_patch
+  regmap_update_bits_base
+  regmap_write
+  regulator_bulk_enable
+  regulator_disable
+  regulator_enable
+  regulator_get
+  regulator_is_enabled
+  regulator_list_voltage_linear
+  regulator_map_voltage_linear
+  regulator_put
+  regulator_set_mode
+  release_firmware
+  __release_region
+  remap_pfn_range
+  remove_proc_entry
+  request_firmware
+  request_firmware_direct
+  request_firmware_nowait
+  __request_region
+  request_threaded_irq
+  rps_needed
+  rtc_class_close
+  rtc_class_open
+  rtc_read_time
+  rtc_time64_to_tm
+  rtnl_is_locked
+  rtnl_lock
+  rtnl_unlock
+  runqueues
+  sched_clock
+  sched_setscheduler_nocheck
+  schedule
+  schedule_timeout
+  scnprintf
+  seq_lseek
+  seq_printf
+  seq_puts
+  seq_read
+  set_cpus_allowed_ptr
+  set_normalized_timespec64
+  sg_alloc_table
+  sg_free_table
+  sg_init_table
+  sg_next
+  __sg_page_iter_next
+  __sg_page_iter_start
+  simple_attr_open
+  simple_attr_read
+  simple_attr_release
+  simple_attr_write
+  simple_open
+  simple_read_from_buffer
+  simple_strtoul
+  simple_write_to_buffer
+  single_open
+  single_release
+  skb_copy_bits
+  skb_copy_expand
+  skb_dequeue
+  skb_dequeue_tail
+  skb_pull
+  skb_push
+  skb_put
+  skb_queue_head
+  skb_queue_purge
+  skb_queue_tail
+  skb_trim
+  smp_call_function
+  smp_call_function_single
+  smp_call_function_single_async
+  snd_pcm_format_physical_width
+  snd_pcm_format_width
+  snd_pcm_lib_ioctl
+  snd_pcm_period_elapsed
+  snd_soc_add_component_controls
+  snd_soc_bytes_tlv_callback
+  snd_soc_component_init_regmap
+  snd_soc_component_read
+  snd_soc_component_update_bits
+  snd_soc_component_write
+  snd_soc_dapm_get_enum_double
+  snd_soc_dapm_get_volsw
+  snd_soc_dapm_ignore_suspend
+  snd_soc_dapm_info_pin_switch
+  snd_soc_dapm_kcontrol_dapm
+  snd_soc_dapm_put_enum_double
+  snd_soc_dapm_put_volsw
+  snd_soc_dapm_sync
+  snd_soc_get_enum_double
+  snd_soc_get_volsw
+  snd_soc_info_enum_double
+  snd_soc_info_volsw
+  snd_soc_info_volsw_sx
+  snd_soc_new_compress
+  snd_soc_put_enum_double
+  snd_soc_put_volsw
+  snd_soc_register_component
+  snd_soc_set_runtime_hwparams
+  snd_soc_unregister_component
+  snprintf
+  softnet_data
+  sort
+  split_page
+  sprintf
+  srcu_notifier_call_chain
+  srcu_notifier_chain_register
+  srcu_notifier_chain_unregister
+  sscanf
+  __stack_chk_fail
+  static_key_slow_dec
+  static_key_slow_inc
+  strcasecmp
+  strchr
+  strcmp
+  strcpy
+  strim
+  strlcat
+  strlen
+  strncasecmp
+  strncmp
+  strncpy
+  strnlen
+  strpbrk
+  strrchr
+  strscpy
+  strsep
+  strstr
+  subsys_system_register
+  __sw_hweight32
+  __sw_hweight64
+  __sw_hweight8
+  sync_file_create
+  synchronize_net
+  synchronize_rcu
+  syscon_regmap_lookup_by_phandle
+  sysfs_add_file_to_group
+  sysfs_create_bin_file
+  sysfs_create_file_ns
+  sysfs_create_files
+  sysfs_create_group
+  sysfs_create_groups
+  sysfs_create_link
+  sysfs_emit
+  sysfs_notify
+  sysfs_remove_file_ns
+  sysfs_remove_group
+  sysfs_remove_link
+  system_highpri_wq
+  system_long_wq
+  system_state
+  system_unbound_wq
+  system_wq
+  sys_tz
+  __tasklet_hi_schedule
+  tasklet_init
+  tasklet_kill
+  __tasklet_schedule
+  thermal_of_cooling_device_register
+  thermal_zone_device_update
+  thermal_zone_get_temp
+  thermal_zone_get_zone_by_name
+  time64_to_tm
+  _totalram_pages
+  trace_event_buffer_commit
+  trace_event_buffer_reserve
+  trace_event_printf
+  trace_event_raw_init
+  trace_event_reg
+  trace_handle_return
+  __traceiter_android_vh_cpu_idle_enter
+  __traceiter_android_vh_cpu_idle_exit
+  __traceiter_android_vh_cpuidle_psci_enter
+  __traceiter_android_vh_cpuidle_psci_exit
+  __traceiter_android_vh_show_mem
+  __traceiter_device_pm_callback_end
+  __traceiter_device_pm_callback_start
+  __traceiter_suspend_resume
+  __tracepoint_android_vh_cpu_idle_enter
+  __tracepoint_android_vh_cpu_idle_exit
+  __tracepoint_android_vh_cpuidle_psci_enter
+  __tracepoint_android_vh_cpuidle_psci_exit
+  __tracepoint_android_vh_show_mem
+  __tracepoint_device_pm_callback_end
+  __tracepoint_device_pm_callback_start
+  tracepoint_probe_register
+  tracepoint_probe_unregister
+  __tracepoint_suspend_resume
+  trace_print_array_seq
+  trace_raw_output_prep
+  __trace_trigger_soft_disabled
+  ttm_bo_mmap_obj
+  __udelay
+  unpin_user_page
+  __unregister_chrdev
+  unregister_chrdev_region
+  unregister_netdevice_queue
+  unregister_pm_notifier
+  unregister_reboot_notifier
+  up
+  up_read
+  up_write
+  usb_add_function
+  usb_copy_descriptors
+  usb_ep_autoconfig
+  usb_function_register
+  usb_function_unregister
+  usb_hub_find_child
+  usb_interface_id
+  usb_put_function_instance
+  usb_register_notify
+  usb_string_id
+  usb_unregister_notify
+  __usecs_to_jiffies
+  usleep_range_state
+  v4l2_ctrl_handler_free
+  v4l2_ctrl_handler_init_class
+  v4l2_ctrl_new_custom
+  v4l2_ctrl_new_std
+  v4l2_device_register
+  v4l2_device_unregister
+  v4l2_fh_add
+  v4l2_fh_del
+  v4l2_fh_exit
+  v4l2_fh_init
+  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_release
+  v4l2_m2m_reqbufs
+  v4l2_m2m_streamoff
+  v4l2_m2m_streamon
+  v4l2_subdev_init
+  v4l_bound_align_image
+  vb2_buffer_done
+  vb2_dma_sg_memops
+  vb2_dqbuf
+  vb2_plane_cookie
+  vb2_plane_vaddr
+  vb2_poll
+  vb2_qbuf
+  vb2_querybuf
+  vb2_queue_init
+  vb2_queue_release
+  vb2_reqbufs
+  vb2_streamoff
+  vb2_streamon
+  vfree
+  video_devdata
+  video_device_alloc
+  video_device_release
+  video_ioctl2
+  __video_register_device
+  video_unregister_device
+  vmalloc
+  vmalloc_to_pfn
+  vmap
+  vscnprintf
+  vsnprintf
+  vunmap
+  vzalloc
+  wait_for_completion
+  wait_for_completion_interruptible
+  wait_for_completion_interruptible_timeout
+  wait_for_completion_timeout
+  __wake_up
+  wake_up_process
+  wakeup_source_register
+  wakeup_source_unregister
+  __warn_printk
+  ww_mutex_lock
+  ww_mutex_unlock
+
+# required by cfg80211.ko
+  bpf_trace_run10
+  csum_partial
+  debugfs_rename
+  __dev_change_net_namespace
+  dev_close
+  __dev_get_by_index
+  dev_get_by_index
+  device_add
+  device_del
+  device_rename
+  do_trace_netlink_extack
+  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
+  kfree_sensitive
+  ktime_get_coarse_with_offset
+  netdev_err
+  netlink_broadcast
+  netlink_register_notifier
+  netlink_unicast
+  netlink_unregister_notifier
+  net_ns_type_operations
+  nla_find
+  __nla_parse
+  nla_put_64bit
+  __nla_validate
+  __pskb_pull_tail
+  __put_net
+  register_netdevice_notifier
+  register_pernet_device
+  rfkill_alloc
+  rfkill_blocked
+  rfkill_destroy
+  rfkill_register
+  rfkill_resume_polling
+  rfkill_set_hw_state_reason
+  rfkill_unregister
+  skb_add_rx_frag
+  __sock_create
+  sock_release
+  __sw_hweight16
+  system_power_efficient_wq
+  unregister_netdevice_notifier
+  unregister_pernet_device
+  verify_pkcs7_signature
+  wireless_nlevent_flush
+
+# required by clk_exynos.ko
+  clk_hw_get_parent
+  clk_register
+  clk_register_clkdev
+  clk_register_fixed_factor
+  clk_register_fixed_rate
+  of_clk_add_provider
+  of_clk_src_onecell_get
+
+# required by cmupmucal.ko
+  single_open_size
+
+# required by cpif.ko
+  csum_ipv6_magic
+  csum_tcpudp_nofold
+  dev_get_by_name
+  __napi_alloc_skb
+  napi_build_skb
+  register_netdev
+  unregister_netdev
+
+# required by cs_dsp.ko
+  regmap_async_complete
+  regmap_raw_write_async
+
+# required by drm_display_helper.ko
+  _dev_printk
+  drm_atomic_get_new_private_obj_state
+  drm_atomic_get_old_private_obj_state
+  drm_crtc_commit_wait
+  __drm_debug
+  drm_detect_monitor_audio
+  drm_display_mode_from_cea_vic
+  drm_edid_duplicate
+  drm_edid_get_monitor_name
+  drm_mode_object_put
+  drm_modeset_lock_single_interruptible
+  drm_object_property_set_value
+  __drm_printfn_debug
+  hdmi_drm_infoframe_init
+  memchr_inv
+
+# required by drm_ttm_helper.ko
+  drm_print_bits
+  ttm_bo_vmap
+  ttm_bo_vunmap
+
+# required by dss.ko
+  copy_from_kernel_nofault
+  dump_backtrace
+  input_close_device
+  input_open_device
+  input_register_handle
+  input_register_handler
+  input_unregister_handle
+  kstat
+  nr_irqs
+  register_console
+  return_address
+  stack_trace_save_tsk
+  touch_softlockup_watchdog
+  __traceiter_android_vh_ipi_stop
+  __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_workqueue_execute_end
+  __traceiter_workqueue_execute_start
+  __tracepoint_android_vh_ipi_stop
+  __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_workqueue_execute_end
+  __tracepoint_workqueue_execute_start
+
+# required by dwc3-exynos-usb.ko
+  platform_device_add
+  platform_device_alloc
+  platform_device_del
+  platform_device_put
+  pm_runtime_allow
+  usb_gadget_set_state
+  usb_otg_state_string
+  usb_role_switch_set_role
+
+# required by ehld.ko
+  sprint_symbol
+
+# required by ems.ko
+  activate_task
+  available_idle_cpu
+  balance_push_callback
+  __bitmap_complement
+  bpf_trace_run11
+  check_preempt_curr
+  cpufreq_add_update_util_hook
+  cpufreq_disable_fast_switch
+  cpufreq_driver_fast_switch
+  __cpufreq_driver_target
+  cpufreq_enable_fast_switch
+  cpufreq_register_governor
+  cpufreq_remove_update_util_hook
+  cpufreq_this_cpu_can_update
+  cpuidle_governor_latency_req
+  cpuidle_register_governor
+  cpupri_find_fitness
+  cpu_scale
+  cpu_topology
+  deactivate_task
+  double_rq_lock
+  get_pid_task
+  housekeeping_cpumask
+  __hrtimer_get_remaining
+  irq_work_queue
+  irq_work_sync
+  match_string
+  memory_read_from_buffer
+  migrate_swap
+  pick_highest_pushable_task
+  raw_notifier_chain_unregister
+  raw_spin_rq_lock_nested
+  raw_spin_rq_unlock
+  _raw_write_trylock
+  reciprocal_value
+  resched_curr
+  sched_feat_keys
+  sched_feat_names
+  sched_uclamp_used
+  set_next_entity
+  set_task_cpu
+  static_key_disable
+  stop_machine
+  stop_one_cpu_nowait
+  sysctl_sched_features
+  system_32bit_el0_cpumask
+  tick_nohz_get_sleep_length
+  __traceiter_android_rvh_can_migrate_task
+  __traceiter_android_rvh_check_preempt_wakeup
+  __traceiter_android_rvh_cpu_cgroup_attach
+  __traceiter_android_rvh_dequeue_task
+  __traceiter_android_rvh_do_sched_yield
+  __traceiter_android_rvh_enqueue_task
+  __traceiter_android_rvh_find_busiest_queue
+  __traceiter_android_rvh_find_lowest_rq
+  __traceiter_android_rvh_find_new_ilb
+  __traceiter_android_rvh_flush_task
+  __traceiter_android_rvh_new_task_stats
+  __traceiter_android_rvh_replace_next_task_fair
+  __traceiter_android_rvh_sched_fork_init
+  __traceiter_android_rvh_sched_newidle_balance
+  __traceiter_android_rvh_sched_nohz_balancer_kick
+  __traceiter_android_rvh_sched_rebalance_domains
+  __traceiter_android_rvh_schedule
+  __traceiter_android_rvh_select_fallback_rq
+  __traceiter_android_rvh_select_task_rq_fair
+  __traceiter_android_rvh_select_task_rq_rt
+  __traceiter_android_rvh_set_task_cpu
+  __traceiter_android_rvh_try_to_wake_up
+  __traceiter_android_rvh_update_misfit_status
+  __traceiter_android_rvh_wake_up_new_task
+  __traceiter_android_vh_binder_restore_priority
+  __traceiter_android_vh_binder_set_priority
+  __traceiter_android_vh_binder_wakeup_ilocked
+  __traceiter_android_vh_scheduler_tick
+  __traceiter_android_vh_syscall_prctl_finished
+  __traceiter_binder_transaction_received
+  __tracepoint_android_rvh_can_migrate_task
+  __tracepoint_android_rvh_check_preempt_wakeup
+  __tracepoint_android_rvh_cpu_cgroup_attach
+  __tracepoint_android_rvh_dequeue_task
+  __tracepoint_android_rvh_do_sched_yield
+  __tracepoint_android_rvh_enqueue_task
+  __tracepoint_android_rvh_find_busiest_queue
+  __tracepoint_android_rvh_find_lowest_rq
+  __tracepoint_android_rvh_find_new_ilb
+  __tracepoint_android_rvh_flush_task
+  __tracepoint_android_rvh_new_task_stats
+  __tracepoint_android_rvh_replace_next_task_fair
+  __tracepoint_android_rvh_sched_fork_init
+  __tracepoint_android_rvh_sched_newidle_balance
+  __tracepoint_android_rvh_sched_nohz_balancer_kick
+  __tracepoint_android_rvh_sched_rebalance_domains
+  __tracepoint_android_rvh_schedule
+  __tracepoint_android_rvh_select_fallback_rq
+  __tracepoint_android_rvh_select_task_rq_fair
+  __tracepoint_android_rvh_select_task_rq_rt
+  __tracepoint_android_rvh_set_task_cpu
+  __tracepoint_android_rvh_try_to_wake_up
+  __tracepoint_android_rvh_update_misfit_status
+  __tracepoint_android_rvh_wake_up_new_task
+  __tracepoint_android_vh_binder_restore_priority
+  __tracepoint_android_vh_binder_set_priority
+  __tracepoint_android_vh_binder_wakeup_ilocked
+  __tracepoint_android_vh_scheduler_tick
+  __tracepoint_android_vh_syscall_prctl_finished
+  __tracepoint_binder_transaction_received
+  uclamp_eff_value
+  update_rq_clock
+  wake_up_if_idle
+
+# required by exynos-afm.ko
+  jiffies_64_to_clock_t
+  kobject_del
+  smp_call_function_any
+
+# required by exynos-chipid_v2.ko
+  soc_device_register
+
+# required by exynos-coresight.ko
+  cpu_pm_register_notifier
+
+# required by exynos-cpu-profiler.ko
+  __traceiter_android_rvh_cpufreq_transition
+  __tracepoint_android_rvh_cpufreq_transition
+
+# required by exynos-cpufreq.ko
+  cpufreq_freq_transition_begin
+  cpufreq_freq_transition_end
+  cpufreq_generic_attr
+  cpufreq_register_driver
+  cpuhp_tasks_frozen
+  dev_pm_opp_of_register_em
+  refresh_frequency_limits
+
+# required by exynos-cpuhp.ko
+  add_cpu
+  remove_cpu
+
+# required by exynos-cpupm.ko
+  cpuidle_get_cpu_driver
+  cpuidle_get_driver
+  __traceiter_ipi_entry
+  __traceiter_ipi_exit
+  __traceiter_ipi_raise
+  __tracepoint_ipi_entry
+  __tracepoint_ipi_exit
+  __tracepoint_ipi_raise
+
+# required by exynos-drm.ko
+  class_create_file_ns
+  component_add
+  component_bind_all
+  component_del
+  component_master_add_with_match
+  component_master_del
+  component_match_add_release
+  component_unbind_all
+  console_trylock
+  console_unlock
+  devm_drm_panel_bridge_add_typed
+  __do_once_done
+  __do_once_start
+  drm_atomic_add_affected_connectors
+  drm_atomic_add_affected_planes
+  drm_atomic_bridge_chain_disable
+  drm_atomic_bridge_chain_enable
+  drm_atomic_bridge_chain_post_disable
+  drm_atomic_bridge_chain_pre_enable
+  drm_atomic_commit
+  drm_atomic_get_plane_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
+  drm_atomic_helper_check_wb_encoder_state
+  drm_atomic_helper_cleanup_planes
+  drm_atomic_helper_commit_cleanup_done
+  drm_atomic_helper_commit_duplicated_state
+  drm_atomic_helper_commit_hw_done
+  drm_atomic_helper_commit_planes
+  drm_atomic_helper_commit_tail
+  __drm_atomic_helper_connector_destroy_state
+  __drm_atomic_helper_connector_duplicate_state
+  __drm_atomic_helper_crtc_destroy_state
+  __drm_atomic_helper_crtc_duplicate_state
+  drm_atomic_helper_disable_plane
+  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_prepare_planes
+  drm_atomic_helper_set_config
+  drm_atomic_helper_setup_commit
+  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_normalize_zpos
+  drm_atomic_set_crtc_for_plane
+  drm_atomic_set_fb_for_plane
+  drm_atomic_state_alloc
+  drm_atomic_state_clear
+  __drm_atomic_state_free
+  drm_bridge_add
+  drm_bridge_attach
+  drm_bridge_chain_mode_set
+  drm_connector_atomic_hdr_metadata_equal
+  drm_connector_attach_hdr_output_metadata_property
+  drm_crtc_enable_color_mgmt
+  drm_crtc_handle_vblank
+  drm_crtc_vblank_get
+  drm_dev_has_vblank
+  drm_display_mode_to_videomode
+  drm_edid_to_sad
+  drm_format_info
+  drm_gem_create_mmap_offset
+  drm_gem_fb_begin_cpu_access
+  drm_gem_prime_import_dev
+  drm_gem_vm_close
+  drm_gem_vm_open
+  drm_get_format_info
+  __drmm_add_action_or_reset
+  drm_match_cea_mode
+  __drmm_crtc_alloc_with_planes
+  __drmm_encoder_alloc
+  drmm_kmalloc
+  drm_mode_config_reset
+  drm_mode_copy
+  drm_mode_destroy
+  drm_mode_is_420_only
+  drm_modeset_acquire_fini
+  drm_modeset_acquire_init
+  drm_modeset_backoff
+  drm_modeset_drop_locks
+  drm_modeset_lock_all_ctx
+  drm_mode_sort
+  __drmm_universal_plane_alloc
+  drm_plane_create_alpha_property
+  drm_plane_create_blend_mode_property
+  drm_plane_create_rotation_property
+  drm_plane_create_zpos_immutable_property
+  drm_plane_create_zpos_property
+  drm_property_blob_get
+  drm_property_blob_put
+  drm_property_create
+  drm_property_create_bitmask
+  drm_property_create_bool
+  drm_property_create_signed_range
+  drm_property_lookup_blob
+  drm_property_replace_blob
+  drm_rect_clip_scaled
+  drm_rect_intersect
+  drm_rotation_simplify
+  drm_self_refresh_helper_alter_state
+  drm_send_event_locked
+  drm_wait_one_vblank
+  drm_writeback_cleanup_job
+  drm_writeback_connector_init
+  drm_writeback_queue_job
+  get_options
+  hdmi_drm_infoframe_pack_only
+  mipi_dsi_create_packet
+  mipi_dsi_dcs_set_column_address
+  mipi_dsi_dcs_set_page_address
+  mipi_dsi_device_register_full
+  mipi_dsi_host_register
+  mipi_dsi_host_unregister
+  mipi_dsi_packet_format_is_long
+  of_drm_find_bridge
+  of_drm_find_panel
+  phy_init
+  platform_find_device_by_driver
+  seq_release
+  strnchr
+  v4l2_match_dv_timings
+
+# required by exynos-dsufreq.ko
+  nsec_to_clock_t
+
+# required by exynos-ecc-handler.ko
+  cpu_hotplug_disable
+  cpu_hotplug_enable
+  _find_first_and_bit
+
+# required by exynos-hypervisor.ko
+  __arm_smccc_hvc
+  __pkvm_load_el2_module
+  __pkvm_register_el2_call
+
+# required by exynos-itmon-v2.ko
+  int_pow
+
+# required by exynos-pd.ko
+  of_genpd_add_provider_simple
+  pm_genpd_add_subdomain
+  pm_genpd_init
+
+# required by exynos-reboot.ko
+  pm_power_off
+
+# required by exynos-s2i.ko
+  smp_call_function_many
+
+# required by exynos-ssld.ko
+  driver_register
+
+# required by exynos9945_sound.ko
+  clk_bulk_disable
+  clk_bulk_enable
+  clk_bulk_prepare
+  clk_bulk_unprepare
+  dapm_regulator_event
+  devm_clk_bulk_get_all
+  devm_snd_soc_register_card
+  snd_soc_component_set_sysclk
+  snd_soc_daifmt_clock_provider_from_bitmap
+  snd_soc_daifmt_parse_clock_provider_raw
+  snd_soc_daifmt_parse_format
+  snd_soc_dai_set_bclk_ratio
+  snd_soc_dai_set_channel_map
+  snd_soc_dai_set_sysclk
+  snd_soc_dai_set_tdm_slot
+  snd_soc_dai_set_tristate
+  snd_soc_dapm_get_pin_switch
+  snd_soc_dapm_new_control
+  snd_soc_dapm_put_pin_switch
+  snd_soc_find_dai_with_mutex
+  snd_soc_get_pcm_runtime
+  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_params_to_bclk
+  snd_soc_pm_ops
+
+# required by exynos_amb_control.ko
+  kthread_cancel_delayed_work_sync
+  kthread_mod_delayed_work
+
+# required by exynos_devfreq.ko
+  devfreq_register_opp_notifier
+  devfreq_unregister_opp_notifier
+  dev_pm_opp_disable
+  dev_pm_opp_get_freq
+  __traceiter_clock_set_rate
+  __tracepoint_clock_set_rate
+  update_devfreq
+
+# required by exynos_mct_v3.ko
+  clockevents_config_and_register
+  __clocksource_register_scale
+  irq_force_affinity
+  of_clk_get_by_name
+
+# required by exynos_mfc.ko
+  dma_buf_begin_cpu_access_partial
+  dma_buf_end_cpu_access_partial
+  hex_dump_to_buffer
+
+# required by exynos_mpam_policy.ko
+  current_time
+  d_add
+  d_alloc_name
+  d_make_root
+  dput
+  find_task_by_vpid
+  fs_kobj
+  get_next_ino
+  get_tree_single
+  init_user_ns
+  kernfs_path_from_node
+  kill_litter_super
+  new_inode
+  register_filesystem
+  simple_dir_inode_operations
+  simple_dir_operations
+  simple_statfs
+  sysfs_create_mount_point
+  sysfs_remove_mount_point
+  __traceiter_android_rvh_sched_fork
+  __traceiter_android_vh_cgroup_attach
+  __traceiter_android_vh_is_fpsimd_save
+  __tracepoint_android_rvh_sched_fork
+  __tracepoint_android_vh_cgroup_attach
+  __tracepoint_android_vh_is_fpsimd_save
+  unregister_filesystem
+
+# required by exynos_thermal_v2.ko
+  dev_pm_opp_find_freq_exact
+  dev_pm_opp_get_opp_count
+  kthread_flush_work
+  of_get_cpu_node
+  thermal_cdev_update
+  thermal_cooling_device_unregister
+  thermal_zone_device_disable
+  thermal_zone_device_enable
+
+# required by exynos_tty.ko
+  console_stop
+  dma_get_slave_caps
+  do_SAK
+  handle_sysrq
+  sysrq_mask
+  tty_flip_buffer_push
+  tty_insert_flip_string_fixed_flag
+  tty_kref_put
+  tty_port_tty_get
+  uart_add_one_port
+  uart_console_write
+  uart_get_baud_rate
+  uart_parse_options
+  uart_register_driver
+  uart_remove_one_port
+  uart_resume_port
+  uart_set_options
+  uart_suspend_port
+  uart_try_toggle_sysrq
+  uart_unregister_driver
+  uart_update_timeout
+  uart_write_wakeup
+
+# required by exyswd-rng.ko
+  devm_hwrng_register
+
+# required by fimc-is.ko
+  clk_hw_get_rate
+  devm_phy_put
+  __devm_release_region
+  down_interruptible
+  i3c_device_do_priv_xfers
+  kthread_create_worker
+  kthread_destroy_worker
+  kthread_flush_worker
+  of_alias_get_highest_id
+  of_find_node_by_phandle
+  param_set_uint
+  phy_configure
+  phy_reset
+  pinctrl_pm_select_default_state
+  pinctrl_pm_select_sleep_state
+  regulator_force_disable
+  regulator_get_optional
+  regulator_get_voltage
+  regulator_set_voltage
+  v4l2_device_register_subdev
+  v4l2_device_set_name
+  v4l2_device_unregister_subdev
+  v4l2_subdev_call_wrappers
+  vb2_mmap
+  vb2_prepare_buf
+
+# required by freq-qos-tracer.ko
+  freq_qos_add_request
+  freq_qos_remove_request
+
+# required by gdc.ko
+  v4l2_m2m_querybuf
+
+# required by gpu-sched.ko
+  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
+  smp_call_on_cpu
+
+# required by hdcp2.ko
+  crypto_shash_digest
+
+# required by hook.ko
+  __traceiter_android_vh_do_wake_up_sync
+  __traceiter_android_vh_set_wake_flags
+  __tracepoint_android_vh_do_wake_up_sync
+  __tracepoint_android_vh_set_wake_flags
+  __wake_up_sync_key
+
+# required by hwmon.ko
+  device_property_read_string
+  devres_free
+  devres_release
+
+# 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_verify_client
+
+# required by i2c-gpio.ko
+  desc_to_gpio
+  devm_gpiod_get_index
+  gpiod_cansleep
+  gpiod_get_value_cansleep
+  i2c_bit_add_numbered_bus
+
+# required by i3c-hci-exynos.ko
+  i3c_generic_ibi_alloc_pool
+  i3c_generic_ibi_free_pool
+  i3c_generic_ibi_get_free_slot
+  i3c_generic_ibi_recycle_slot
+  i3c_master_add_i3c_dev_locked
+  i3c_master_defslvs_locked
+  i3c_master_disec_locked
+  i3c_master_do_daa
+  i3c_master_enec_locked
+  i3c_master_entdaa_locked
+  i3c_master_get_free_addr
+  i3c_master_queue_ibi
+  i3c_master_register
+  i3c_master_set_info
+  i3c_master_unregister
+
+# required by input-cs40l26-i2c.ko
+  _dev_alert
+  device_get_child_node_count
+  fwnode_get_name
+  fwnode_property_read_string
+  fwnode_property_read_u32_array
+  input_ff_create
+  regmap_bulk_write
+
+# required by irq-gic-v3-vh.ko
+  __traceiter_android_rvh_gic_v3_set_affinity
+  __tracepoint_android_rvh_gic_v3_set_affinity
+
+# required by is-actuator-ak737x.ko
+  v4l2_i2c_subdev_init
+
+# required by is-cis-imx754.ko
+  i3c_driver_register_with_owner
+  i3c_driver_unregister
+
+# required by leds-s2mf301.ko
+  devm_led_classdev_register_ext
+
+# required by leds-s2mpb02.ko
+  led_classdev_register_ext
+  led_classdev_unregister
+
+# required by mcDrvModule.ko
+  crypto_shash_final
+  crypto_shash_update
+  down_read
+  freezer_active
+  freezing_slow_path
+  get_zeroed_page
+  kstrtol_from_user
+  ktime_get_raw_ts64
+  mmput
+  pin_user_pages
+  __refrigerator
+  release_pages
+  sg_miter_next
+  sg_miter_start
+  sg_miter_stop
+  vmalloc_to_page
+  wait_for_completion_killable
+
+# required by memlogger.ko
+  sysfs_remove_bin_file
+
+# required by mpam_arch.ko
+  bitmap_alloc
+  kobj_sysfs_ops
+  kstrtou16
+  on_each_cpu_cond_mask
+
+# required by nanohub.ko
+  arch_timer_read_counter
+  class_find_device
+  clocks_calc_mult_shift
+  iio_device_alloc
+  iio_device_free
+  __iio_device_register
+  iio_device_unregister
+  nonseekable_open
+  rtc_set_time
+  rtc_tm_to_time64
+  sched_setscheduler
+  __wake_up_locked_key
+  __wake_up_sync
+
+# required by npu.ko
+  console_printk
+  cpuidle_pause_and_lock
+  cpuidle_resume_and_unlock
+  dev_pm_opp_find_freq_floor
+  dma_fence_free
+  dma_fence_signal_locked
+  fget
+  vsprintf
+
+# required by pablo-icpu.ko
+  strreplace
+
+# required by pablo-libs.ko
+  bsearch
+  device_get_dma_attr
+  __dynamic_pr_debug
+  kstrdup_const
+  llist_add_batch
+  rb_first
+  tasklet_setup
+
+# required by pablo-self-tests.ko
+  debugfs_create_blob
+
+# required by panel-samsung-command-ctrl.ko
+  mipi_dsi_compression_mode
+  mipi_dsi_dcs_write_buffer
+  mipi_dsi_driver_register_full
+  mipi_dsi_driver_unregister
+  mipi_dsi_picture_parameter_set
+
+# required by panel-samsung-drv.ko
+  devm_backlight_device_unregister
+  drm_bridge_remove
+  drm_mode_convert_to_umode
+  drm_mode_debug_printmodeline
+  drm_mode_equal
+  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
+  gpiod_direction_output
+  gpiod_set_value
+  mipi_dsi_attach
+  mipi_dsi_dcs_get_display_brightness
+  mipi_dsi_dcs_read
+  mipi_dsi_detach
+
+# required by pcie-exynos-rc-core.ko
+  dw_handle_msi_irq
+  dw_pcie_host_init
+  dw_pcie_own_conf_map_bus
+  dw_pcie_read
+  dw_pcie_setup_rc
+  dw_pcie_write
+  pci_assign_resource
+  pcie_set_mps
+  pci_find_bus
+  pci_find_ext_capability
+  pci_generic_config_read
+  pci_generic_config_write
+  pci_get_device
+  pci_rescan_bus
+  platform_get_irq_byname_optional
+
+# required by pinctrl-samsung-core.ko
+  fwnode_handle_put
+  fwnode_property_present
+  generic_handle_domain_irq
+  gpiochip_lock_as_irq
+  gpiochip_unlock_as_irq
+  irq_domain_xlate_twocell
+  irq_set_chained_handler_and_data
+  of_node_name_eq
+  pinctrl_add_gpio_range
+  pinctrl_force_sleep
+  pinctrl_remove_gpio_range
+  pin_get_name
+  platform_get_irq_optional
+
+# required by pwm-samsung.ko
+  of_pwm_xlate_with_flags
+  pwmchip_add
+  pwmchip_remove
+  pwm_get_chip_data
+  pwm_set_chip_data
+
+# required by s2m_chg_manager.ko
+  alarm_cancel
+  alarm_init
+  alarm_start_relative
+
+# required by s2m_muic_module.ko
+  printk_timed_ratelimit
+
+# required by s2m_pdic_module.ko
+  typec_get_drvdata
+  typec_register_partner
+  typec_register_port
+  typec_set_data_role
+  typec_set_pwr_opmode
+  typec_set_pwr_role
+  typec_unregister_partner
+  typec_unregister_port
+
+# required by s2mf301_mfd.ko
+  i2c_new_dummy_device
+  i2c_smbus_write_word_data
+  i2c_unregister_device
+  __irq_alloc_descs
+
+# required by s2mpm07_pinctrl_9945.ko
+  gpiochip_add_data_with_key
+  gpiochip_remove
+
+# required by s2mps27_adc.ko
+  devm_iio_device_alloc
+  __devm_iio_device_register
+
+# required by s2mps27_rtc.ko
+  devm_rtc_device_register
+  rtc_update_irq
+  rtc_valid_tm
+  system_freezable_wq
+
+# required by s3c2410_wdt.ko
+  watchdog_init_timeout
+  watchdog_register_device
+  watchdog_set_restart_priority
+  watchdog_unregister_device
+
+# required by samsung-iommu-group-v9.ko
+  iommu_group_alloc
+  iommu_group_set_name
+
+# required by samsung-pdma.ko
+  amba_driver_register
+  amba_driver_unregister
+  cpu_all_bits
+  dev_err_probe
+  __devm_reset_control_get
+  dma_async_device_register
+  dma_async_device_unregister
+  dma_async_tx_descriptor_init
+  dmaengine_unmap_put
+  dma_get_slave_channel
+  of_dma_controller_free
+  of_dma_controller_register
+  pm_runtime_irq_safe
+  reset_control_assert
+  reset_control_deassert
+
+# required by samsung-secure-iova.ko
+  gen_pool_first_fit_align
+
+# required by samsung_dma_heap.ko
+  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
+  is_dma_buf_file
+  iterate_fd
+
+# 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_fwspec_add_ids
+  iommu_fwspec_free
+  iommu_group_for_each_dev
+  iommu_group_get
+  iommu_group_get_iommudata
+  iommu_group_set_iommudata
+  iommu_report_device_fault
+  of_find_node_with_property
+
+# required by scaler.ko
+  dma_fence_default_wait
+  sg_nents_for_len
+  sync_file_get_fence
+  v4l2_ctrl_handler_setup
+  v4l2_m2m_try_schedule
+  work_busy
+
+# required by scsc_bt.ko
+  crc_ccitt
+  param_ops_ullong
+  skb_split
+  tty_dev_name_to_number
+  tty_kclose
+  tty_kopen_exclusive
+  tty_lock
+  tty_mode_ioctl
+  tty_register_ldisc
+  tty_set_ldisc
+  tty_set_termios
+  tty_unlock
+  tty_unregister_ldisc
+
+# required by scsc_logring.ko
+  dev_vprintk_emit
+  vprintk_emit
+
+# required by scsc_mx.ko
+  kobject_get
+  kobject_uevent
+
+# required by scsc_platform_mif.ko
+  irq_get_irqchip_state
+  of_property_read_variable_u16_array
+  pci_enable_wake
+  pcim_enable_device
+  pcim_iomap_regions
+  pcim_iomap_table
+  __pci_register_driver
+  pci_release_regions
+  pci_set_power_state
+  pci_unregister_driver
+  pci_wake_from_d3
+  _raw_read_lock_irqsave
+  _raw_read_unlock_irqrestore
+
+# required by scsc_wlan.ko
+  arp_tbl
+  dev_addr_mod
+  dev_alloc_name
+  __dev_queue_xmit
+  down_trylock
+  dql_completed
+  dql_reset
+  dst_release
+  ether_setup
+  for_each_kernel_tracepoint
+  in4_pton
+  in6_pton
+  ip_route_output_flow
+  ip_send_check
+  linkwatch_fire_event
+  __local_bh_enable_ip
+  napi_disable
+  napi_gro_flush
+  neigh_destroy
+  neigh_lookup
+  netif_carrier_off
+  netif_carrier_on
+  __netif_napi_del
+  netif_schedule_queue
+  netif_tx_stop_all_queues
+  nla_put_nohdr
+  _raw_read_lock_bh
+  _raw_read_unlock_bh
+  _raw_write_lock
+  _raw_write_lock_bh
+  _raw_write_unlock
+  _raw_write_unlock_bh
+  register_inet6addr_notifier
+  register_inetaddr_notifier
+  register_kretprobe
+  skb_clone
+  skb_copy
+  skb_realloc_headroom
+  unregister_inet6addr_notifier
+  unregister_inetaddr_notifier
+  unregister_kretprobe
+
+# required by scsi_srpmb.ko
+  pfn_is_map_memory
+  scsi_block_when_processing_errors
+  __scsi_device_lookup_by_target
+  scsi_execute_cmd
+  scsi_print_sense_hdr
+  sdev_prefix_printk
+  wakeup_source_add
+  wakeup_source_remove
+
+# required by sec_ts.ko
+  input_allocate_device
+  input_free_device
+  input_mt_destroy_slots
+  input_mt_init_slots
+  input_mt_report_slot_state
+  input_set_abs_params
+
+# required by sgpu.ko
+  backlight_device_register
+  backlight_device_unregister
+  __bitmap_xor
+  capable
+  devfreq_monitor_resume
+  devfreq_monitor_start
+  devfreq_monitor_stop
+  devfreq_monitor_suspend
+  devfreq_remove_governor
+  devfreq_resume_device
+  devfreq_suspend_device
+  devfreq_update_interval
+  devm_devfreq_unregister_notifier
+  devm_platform_ioremap_resource_byname
+  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_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
+  down_read_killable
+  down_read_trylock
+  drain_workqueue
+  drm_connector_attach_dp_subconnector_property
+  drm_connector_init_with_ddc
+  drm_crtc_cleanup
+  drm_crtc_helper_set_config
+  drm_crtc_helper_set_mode
+  drm_crtc_init
+  drm_crtc_vblank_helper_get_vblank_timestamp
+  drm_cvt_mode
+  drm_debugfs_create_files
+  drm_detect_hdmi_monitor
+  drm_dev_enter
+  drm_dev_exit
+  drm_dev_put
+  drm_edid_header_is_valid
+  drm_edid_is_valid
+  drm_encoder_cleanup
+  drm_encoder_init
+  drm_framebuffer_cleanup
+  drm_framebuffer_unregister_private
+  drm_gem_dmabuf_mmap
+  drm_gem_dmabuf_release
+  drm_gem_dmabuf_vmap
+  drm_gem_dmabuf_vunmap
+  drm_gem_prime_export
+  drm_gem_prime_mmap
+  drm_handle_vblank
+  drm_helper_connector_dpms
+  drm_helper_disable_unused_functions
+  drm_helper_force_disable_all
+  drm_helper_hpd_irq_event
+  drm_is_current_master
+  drm_kms_helper_is_poll_worker
+  drm_kms_helper_poll_disable
+  drm_kms_helper_poll_enable
+  drm_mm_init
+  drm_mm_insert_node_in_range
+  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_set_crtcinfo
+  drm_mode_set_name
+  drm_prime_pages_to_sg
+  drm_prime_sg_to_dma_addr_array
+  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
+  __fdget
+  _find_first_zero_bit
+  __folio_put
+  get_random_u32
+  __get_task_comm
+  handle_simple_irq
+  i2c_bit_add_bus
+  ida_destroy
+  idr_destroy
+  idr_find
+  idr_for_each
+  idr_get_next
+  idr_replace
+  jiffies64_to_msecs
+  memremap
+  memunmap
+  mmu_notifier_synchronize
+  page_pinner_inited
+  __page_pinner_put_page
+  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_get_domain_bus_and_slot
+  pci_iomap
+  pci_iounmap
+  pci_map_rom
+  pci_msix_vec_count
+  pci_release_resource
+  pci_resize_resource
+  pci_unmap_rom
+  pci_write_config_word
+  perf_pmu_unregister
+  pid_task
+  pin_user_pages_fast
+  pm_runtime_autosuspend_expiration
+  power_supply_is_system_supplied
+  radix_tree_tagged
+  __rb_erase_color
+  rb_first_postorder
+  __rb_insert_augmented
+  rb_next_postorder
+  request_firmware_into_buf
+  seq_putc
+  seq_write
+  sg_alloc_table_from_pages_segment
+  si_meminfo
+  sysfs_remove_files
+  __traceiter_gpu_mem_total
+  __tracepoint_gpu_mem_total
+  ttm_bo_eviction_valuable
+  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_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
+  vm_get_page_prot
+  __wake_up_locked
+  ww_mutex_lock_interruptible
+  ww_mutex_trylock
+
+# required by smfc.ko
+  v4l2_ctrl_log_status
+  v4l2_ctrl_new_std_menu
+  v4l2_m2m_fop_mmap
+  v4l2_m2m_fop_poll
+  v4l2_m2m_ioctl_dqbuf
+  v4l2_m2m_ioctl_querybuf
+  v4l2_m2m_ioctl_reqbufs
+  v4l2_m2m_ioctl_streamoff
+  v4l2_m2m_ioctl_streamon
+  vb2_ops_wait_finish
+  vb2_ops_wait_prepare
+  vb2_wait_for_all_buffers
+
+# required by snd-soc-cs35l43-i2c.ko
+  _dev_crit
+  regcache_drop_region
+  regulator_bulk_disable
+  snd_pcm_hw_constraint_list
+  snd_soc_get_volsw_range
+  snd_soc_get_volsw_sx
+  snd_soc_info_volsw_range
+  snd_soc_put_volsw_range
+  snd_soc_put_volsw_sx
+
+# required by snd-soc-dp_dma.ko
+  devm_extcon_dev_allocate
+  devm_extcon_dev_register
+  extcon_get_state
+  extcon_set_state_sync
+  snd_pcm_hw_constraint_integer
+
+# required by snd-soc-s3c-dma.ko
+  devm_snd_dmaengine_pcm_register
+  snd_dmaengine_pcm_prepare_slave_config
+
+# required by snd-soc-samsung-abox.ko
+  dapm_pinctrl_event
+  dev_get_regmap
+  device_show_bool
+  device_show_int
+  device_store_bool
+  device_store_int
+  devm_krealloc
+  dma_buf_fd
+  kstrtobool_from_user
+  kstrtoull_from_user
+  kvasprintf
+  pinctrl_get
+  pinctrl_put
+  pm_runtime_get_if_active
+  pm_wakeup_dev_event
+  proc_symlink
+  snd_device_free
+  snd_dma_alloc_dir_pages
+  snd_dma_free_pages
+  snd_hwdep_new
+  snd_pcm_lib_free_pages
+  snd_pcm_lib_malloc_pages
+  snd_pcm_lib_preallocate_free_for_all
+  snd_pcm_lib_preallocate_pages
+  snd_soc_bytes_info_ext
+  snd_soc_component_async_complete
+  snd_soc_component_update_bits_async
+  snd_soc_dapm_add_routes
+  snd_soc_dapm_disable_pin
+  snd_soc_dapm_enable_pin
+  snd_soc_dapm_get_pin_status
+  snd_soc_dapm_new_controls
+  snd_soc_dapm_weak_routes
+  snd_soc_find_dai
+  snd_soc_get_xr_sx
+  snd_soc_info_xr_sx
+  snd_soc_lookup_component
+  snd_soc_put_xr_sx
+  snd_soc_register_card
+  snd_soc_tplg_component_load
+  snd_soc_tplg_component_remove
+  snd_soc_tplg_widget_bind_event
+  snd_soc_unregister_card
+
+# required by snd-soc-samsung-vts-mailbox.ko
+  irq_domain_get_irq_data
+  irq_domain_set_info
+  irq_domain_xlate_onetwocell
+  irq_set_chip
+  __irq_set_handler
+  irq_set_handler_data
+
+# required by snd-soc-wm-adsp.ko
+  snd_compr_stop_error
+  snd_ctl_notify
+  snd_soc_card_get_kcontrol
+  snd_soc_component_disable_pin
+  snd_soc_component_force_enable_pin
+
+# required by spi-s3c64xx.ko
+  __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_get_match_data
+  device_property_match_string
+  __spi_register_driver
+  spi_setup
+  spi_sync
+  stream_open
+
+# required by sysevent.ko
+  bus_find_device
+  bus_for_each_dev
+  module_put
+  param_ops_long
+  try_module_get
+
+# required by sysevent_notif.ko
+  srcu_init_notifier_head
+
+# required by ufs-exynos-core.ko
+  blk_crypto_reprogram_all_keys
+  devm_blk_crypto_profile_init
+  of_cpu_node_to_id
+  scsi_dma_unmap
+  scsi_done
+  __traceiter_android_vh_ufs_check_int_errors
+  __traceiter_android_vh_ufs_compl_command
+  __traceiter_android_vh_ufs_mcq_abort
+  __traceiter_android_vh_ufs_use_mcq_hooks
+  __tracepoint_android_vh_ufs_check_int_errors
+  __tracepoint_android_vh_ufs_compl_command
+  __tracepoint_android_vh_ufs_mcq_abort
+  __tracepoint_android_vh_ufs_use_mcq_hooks
+  trace_print_symbols_seq
+  ufshcd_auto_hibern8_update
+  ufshcd_dme_configure_adapt
+  ufshcd_dme_get_attr
+  ufshcd_dme_set_attr
+  ufshcd_hold
+  ufshcd_mcq_poll_cqe_nolock
+  ufshcd_mcq_write_cqis
+  ufshcd_pltfrm_init
+  ufshcd_release
+  ufshcd_remove
+  ufshcd_resume_complete
+  ufshcd_shutdown
+  ufshcd_suspend_prepare
+  ufshcd_system_resume
+  ufshcd_system_suspend
+  ufshcd_uic_change_pwr_mode
+
+# required by usb_f_dm.ko
+  usb_ep_alloc_request
+  usb_ep_free_request
+  usb_ep_queue
+
+# required by usb_notifier.ko
+  power_supply_put
+
+# required by usb_notify_layer.ko
+  kthread_complete_and_exit
+  usb_speed_string
+
+# required by xhci-exynos.ko
+  device_property_read_u32_array
+  device_set_wakeup_enable
+  devm_clk_get_optional
+  devm_usb_get_phy_by_phandle
+  of_usb_host_tpl_support
+  pci_bus_type
+  usb_add_hcd
+  __usb_create_hcd
+  usb_disabled
+  usb_enable_autosuspend
+  usb_hcd_is_primary_hcd
+  usb_put_hcd
+  usb_remove_hcd
+  xhci_gen_setup
+  xhci_init_driver
+  xhci_resume
+  xhci_run
+  xhci_suspend
+
+# required by xperf.ko
+  cpufreq_quick_get_max
+  kthread_bind_mask
+  stpcpy
diff --git a/android/abi_gki_aarch64_galaxy b/android/abi_gki_aarch64_galaxy
new file mode 100644
index 0000000..76989b7
--- /dev/null
+++ b/android/abi_gki_aarch64_galaxy
@@ -0,0 +1,404 @@
+[abi_symbol_list]
+  adjust_managed_page_count
+  alarm_start
+  alloc_pages_exact
+  alt_cb_patch_nops
+  __arch_copy_from_user
+  __arch_copy_to_user
+  arm64_use_ng_mappings
+  atomic_notifier_call_chain
+  atomic_notifier_chain_register
+  atomic_notifier_chain_unregister
+  __bitmap_weight
+  bitmap_zalloc
+  blkcg_activate_policy
+  blkcg_deactivate_policy
+  blkcg_policy_register
+  blkcg_policy_unregister
+  blkcg_root
+  blkdev_get_by_dev
+  blkdev_get_by_path
+  blkdev_issue_flush
+  blkdev_put
+  blk_mq_sched_mark_restart_hctx
+  blk_mq_sched_try_insert_merge
+  blk_mq_sched_try_merge
+  blk_queue_rq_timeout
+  blk_req_needs_zone_write_lock
+  __blk_req_zone_write_lock
+  __blk_req_zone_write_unlock
+  blk_stat_enable_accounting
+  cache_line_size
+  cancel_delayed_work_sync
+  __check_object_size
+  __class_create
+  class_create_file_ns
+  class_find_device
+  class_remove_file_ns
+  __const_udelay
+  copy_from_kernel_nofault
+  cpu_hwcaps
+  cpu_number
+  __cpu_online_mask
+  __cpu_possible_mask
+  __cpu_present_mask
+  create_function_device
+  crypto_alloc_base
+  crypto_comp_compress
+  crypto_comp_decompress
+  crypto_destroy_tfm
+  css_next_descendant_pre
+  _ctype
+  debugfs_create_file
+  debugfs_remove
+  delayed_work_timer_fn
+  del_timer
+  _dev_alert
+  _dev_err
+  device_create
+  device_destroy
+  device_register
+  device_unregister
+  _dev_info
+  __devm_alloc_percpu
+  devm_bitmap_zalloc
+  devm_gen_pool_create
+  devm_gpiod_get_index
+  devm_ioremap
+  devm_ioremap_wc
+  __devm_irq_alloc_descs
+  devm_kfree
+  devm_kmalloc
+  devm_kmemdup
+  devm_kstrdup
+  devm_kstrdup_const
+  dev_set_name
+  _dev_warn
+  dma_alloc_attrs
+  dma_free_attrs
+  down_write
+  elevator_alloc
+  elv_bio_merge_ok
+  elv_rb_add
+  elv_rb_del
+  elv_rb_find
+  elv_rb_former_request
+  elv_rb_latter_request
+  elv_register
+  elv_rqhash_add
+  elv_rqhash_del
+  elv_unregister
+  emergency_restart
+  file_ra_state_init
+  file_write_and_wait_range
+  _find_next_bit
+  fixed_size_llseek
+  fortify_panic
+  __free_pages
+  free_pages
+  free_pages_exact
+  generic_file_read_iter
+  generic_mii_ioctl
+  generic_perform_write
+  generic_write_checks
+  genphy_read_lpa
+  genphy_update_link
+  gen_pool_add_owner
+  gen_pool_alloc_algo_owner
+  gen_pool_destroy
+  gen_pool_free_owner
+  gen_pool_virt_to_phys
+  getboottime64
+  get_options
+  get_random_u64
+  __get_task_ioprio
+  get_zeroed_page
+  gic_nonsecure_priorities
+  gpiochip_find
+  gpiod_cansleep
+  gpiod_get_raw_value
+  gpio_to_desc
+  gs_alloc_req
+  gserial_free_line
+  gserial_resume
+  gserial_suspend
+  gs_free_req
+  i2c_bit_add_numbered_bus
+  i2c_smbus_read_word_data
+  i2c_smbus_write_word_data
+  I_BDEV
+  iio_channel_get
+  iio_channel_release
+  init_task
+  init_timer_key
+  input_close_device
+  input_open_device
+  input_register_handle
+  input_register_handler
+  input_unregister_handle
+  input_unregister_handler
+  ioremap_prot
+  iounmap
+  iov_iter_kvec
+  jiffies
+  kasan_flag_enabled
+  kasprintf
+  kernel_cpustat
+  kernfs_find_and_get_ns
+  kfree
+  __kfree_skb
+  kimage_vaddr
+  kimage_voffset
+  __kmalloc
+  kmalloc_caches
+  kmalloc_large
+  kmalloc_trace
+  kmsg_dump_get_line
+  kmsg_dump_rewind
+  kobject_create_and_add
+  kobject_put
+  kstrdup
+  kstrtoint
+  kstrtouint
+  kstrtoull
+  kthread_create_on_node
+  ktime_get_real_ts64
+  kvfree
+  kvmalloc_node
+  __list_add_valid
+  __list_del_entry_valid
+  log_post_read_mmio
+  log_read_mmio
+  memblock_free
+  memcpy
+  __memcpy_fromio
+  __memcpy_toio
+  memparse
+  memset
+  __memset_io
+  memstart_addr
+  mii_check_media
+  mii_ethtool_gset
+  mii_nway_restart
+  mod_timer
+  __msecs_to_jiffies
+  msleep
+  __mutex_init
+  mutex_lock
+  mutex_unlock
+  name_to_dev_t
+  netlink_ack
+  nr_cpu_ids
+  nsec_to_clock_t
+  of_address_to_resource
+  of_css
+  of_find_compatible_node
+  of_find_node_opts_by_path
+  of_find_property
+  __of_get_address
+  of_get_property
+  of_iomap
+  of_n_addr_cells
+  of_n_size_cells
+  __of_parse_phandle_with_args
+  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_variable_u32_array
+  of_reserved_mem_device_init_by_idx
+  of_reserved_mem_lookup
+  of_root
+  panic
+  panic_notifier_list
+  param_get_uint
+  param_ops_charp
+  param_ops_uint
+  param_ops_ullong
+  param_set_uint
+  __per_cpu_offset
+  phy_resolve_aneg_linkmode
+  phy_start_aneg
+  pinctrl_get
+  pinctrl_put
+  __platform_driver_register
+  platform_driver_unregister
+  preempt_schedule
+  print_hex_dump
+  _printk
+  proc_create
+  proc_create_data
+  proc_remove
+  proc_set_size
+  pstore_register
+  pstore_unregister
+  queue_delayed_work_on
+  queue_work_on
+  ___ratelimit
+  raw_notifier_call_chain
+  raw_notifier_chain_register
+  raw_notifier_chain_unregister
+  _raw_spin_lock
+  _raw_spin_lock_irqsave
+  _raw_spin_unlock
+  _raw_spin_unlock_irqrestore
+  register_console
+  register_die_notifier
+  register_reboot_notifier
+  register_restart_handler
+  register_syscore_ops
+  remove_cpu
+  rtc_class_open
+  rtc_read_time
+  rtc_time64_to_tm
+  rtc_tm_to_time64
+  runqueues
+  sbitmap_queue_min_shallow_depth
+  sched_clock
+  sched_show_task
+  scnprintf
+  seq_hex_dump
+  seq_lseek
+  seq_printf
+  seq_puts
+  seq_read
+  seq_release
+  simple_strtol
+  single_open
+  single_release
+  skb_copy_ubufs
+  snd_soc_find_dai
+  snd_soc_info_volsw_sx
+  snd_soc_put_volsw_sx
+  snprintf
+  spi_bus_type
+  sprintf
+  sscanf
+  __stack_chk_fail
+  stpcpy
+  strcmp
+  strim
+  strlcat
+  strlcpy
+  strlen
+  strncasecmp
+  strncmp
+  strncpy
+  strnlen
+  strnstr
+  strsep
+  strstr
+  sysfs_create_file_ns
+  sysfs_create_group
+  sysfs_remove_file_ns
+  sysfs_remove_group
+  sysfs_streq
+  system_long_wq
+  system_unbound_wq
+  sys_tz
+  time64_to_tm
+  __traceiter_android_rvh_arm64_serror_panic
+  __traceiter_android_rvh_die_kernel_fault
+  __traceiter_android_rvh_do_el1_bti
+  __traceiter_android_rvh_do_el1_fpac
+  __traceiter_android_rvh_do_sea
+  __traceiter_android_rvh_do_sp_pc_abort
+  __traceiter_android_rvh_do_undefinstr
+  __traceiter_android_rvh_panic_unhandled
+  __traceiter_android_rvh_report_bug
+  __traceiter_android_vh_ipi_stop
+  __traceiter_android_vh_is_fpsimd_save
+  __traceiter_android_vh_madvise_pageout_swap_entry
+  __traceiter_android_vh_madvise_swapin_walk_pmd_entry
+  __traceiter_android_vh_mutex_wait_finish
+  __traceiter_android_vh_mutex_wait_start
+  __traceiter_android_vh_ptype_head
+  __traceiter_android_vh_rtmutex_wait_finish
+  __traceiter_android_vh_rtmutex_wait_start
+  __traceiter_android_vh_rwsem_read_wait_finish
+  __traceiter_android_vh_rwsem_read_wait_start
+  __traceiter_android_vh_rwsem_write_wait_finish
+  __traceiter_android_vh_rwsem_write_wait_start
+  __traceiter_android_vh_process_madvise_end
+  __traceiter_android_vh_sched_show_task
+  __traceiter_android_vh_show_smap
+  __traceiter_android_vh_smaps_pte_entry
+  __traceiter_android_vh_try_to_freeze_todo
+  __traceiter_android_vh_try_to_freeze_todo_unfrozen
+  __traceiter_android_vh_watchdog_timer_softlockup
+  __traceiter_android_vh_meminfo_cache_adjust
+  __traceiter_android_vh_si_mem_available_adjust
+  __traceiter_android_vh_si_meminfo_adjust
+  __traceiter_block_rq_insert
+  __traceiter_console
+  __traceiter_hrtimer_expire_entry
+  __traceiter_hrtimer_expire_exit
+  __traceiter_irq_handler_entry
+  __traceiter_irq_handler_exit
+  __traceiter_kfree_skb
+  __traceiter_sched_switch
+  __traceiter_workqueue_execute_start
+  __tracepoint_android_rvh_arm64_serror_panic
+  __tracepoint_android_rvh_die_kernel_fault
+  __tracepoint_android_rvh_do_el1_bti
+  __tracepoint_android_rvh_do_el1_fpac
+  __tracepoint_android_rvh_do_sea
+  __tracepoint_android_rvh_do_sp_pc_abort
+  __tracepoint_android_rvh_do_undefinstr
+  __tracepoint_android_rvh_panic_unhandled
+  __tracepoint_android_rvh_report_bug
+  __tracepoint_android_vh_ipi_stop
+  __tracepoint_android_vh_is_fpsimd_save
+  __tracepoint_android_vh_madvise_pageout_swap_entry
+  __tracepoint_android_vh_madvise_swapin_walk_pmd_entry
+  __tracepoint_android_vh_mutex_wait_finish
+  __tracepoint_android_vh_mutex_wait_start
+  __tracepoint_android_vh_ptype_head
+  __tracepoint_android_vh_rtmutex_wait_finish
+  __tracepoint_android_vh_rtmutex_wait_start
+  __tracepoint_android_vh_rwsem_read_wait_finish
+  __tracepoint_android_vh_rwsem_read_wait_start
+  __tracepoint_android_vh_rwsem_write_wait_finish
+  __tracepoint_android_vh_rwsem_write_wait_start
+  __tracepoint_android_vh_process_madvise_end
+  __tracepoint_android_vh_sched_show_task
+  __tracepoint_android_vh_show_smap
+  __tracepoint_android_vh_smaps_pte_entry
+  __tracepoint_android_vh_try_to_freeze_todo
+  __tracepoint_android_vh_try_to_freeze_todo_unfrozen
+  __tracepoint_android_vh_watchdog_timer_softlockup
+  __tracepoint_android_vh_meminfo_cache_adjust
+  __tracepoint_android_vh_si_mem_available_adjust
+  __tracepoint_android_vh_si_meminfo_adjust
+  __tracepoint_block_rq_insert
+  __tracepoint_console
+  __tracepoint_hrtimer_expire_entry
+  __tracepoint_hrtimer_expire_exit
+  __tracepoint_irq_handler_entry
+  __tracepoint_irq_handler_exit
+  __tracepoint_kfree_skb
+  tracepoint_probe_register
+  tracepoint_probe_unregister
+  __tracepoint_sched_switch
+  __tracepoint_workqueue_execute_start
+  unregister_console
+  unregister_die_notifier
+  unregister_reboot_notifier
+  unregister_restart_handler
+  unregister_syscore_ops
+  up_write
+  usb_alloc_dev
+  usb_gstrings_attach
+  usbnet_get_endpoints
+  usbnet_link_change
+  usb_set_device_state
+  vfree
+  vfs_fsync_range
+  vmalloc
+  vsnprintf
+  wake_up_process
+  wakeup_source_remove
+  watchdog_init_timeout
+  watchdog_register_device
+  watchdog_unregister_device
diff --git a/android/abi_gki_aarch64_honor b/android/abi_gki_aarch64_honor
new file mode 100644
index 0000000..29d60a8
--- /dev/null
+++ b/android/abi_gki_aarch64_honor
@@ -0,0 +1,17 @@
+[abi_symbol_list]
+ __tracepoint_android_vh_get_page_wmark
+ __tracepoint_android_vh_page_add_new_anon_rmap
+ __tracepoint_android_vh_do_shrink_slab
+ __tracepoint_android_vh_shrink_slab_bypass
+ __tracepoint_android_vh_mutex_init
+ __tracepoint_android_vh_file_is_tiny_bypass
+ __tracepoint_android_vh_modify_scan_control
+ __tracepoint_android_vh_should_continue_reclaim
+ __traceiter_android_vh_get_page_wmark
+ __traceiter_android_vh_page_add_new_anon_rmap
+ __traceiter_android_vh_do_shrink_slab
+ __traceiter_android_vh_shrink_slab_bypass
+ __traceiter_android_vh_mutex_init
+ __traceiter_android_vh_file_is_tiny_bypass
+ __traceiter_android_vh_modify_scan_control
+ __traceiter_android_vh_should_continue_reclaim
\ No newline at end of file
diff --git a/android/abi_gki_aarch64_imx b/android/abi_gki_aarch64_imx
new file mode 100644
index 0000000..ac16191
--- /dev/null
+++ b/android/abi_gki_aarch64_imx
@@ -0,0 +1,2421 @@
+[abi_symbol_list]
+  add_timer
+  add_uevent_var
+  add_wait_queue
+  alloc_candev_mqs
+  alloc_can_err_skb
+  alloc_canfd_skb
+  alloc_can_skb
+  alloc_chrdev_region
+  alloc_etherdev_mqs
+  alloc_io_pgtable_ops
+  alloc_netdev_mqs
+  __alloc_pages
+  alloc_pages_exact
+  __alloc_percpu
+  __alloc_percpu_gfp
+  __alloc_skb
+  alloc_workqueue
+  alt_cb_patch_nops
+  anon_inode_getfd
+  arc4_crypt
+  arc4_setkey
+  __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
+  backlight_device_register
+  backlight_device_unregister
+  bcmp
+  bdi_alloc
+  bdi_put
+  bdi_register
+  bdi_unregister
+  bgpio_init
+  bitmap_alloc
+  __bitmap_and
+  __bitmap_complement
+  bitmap_find_free_region
+  bitmap_free
+  __bitmap_or
+  bitmap_parse
+  bitmap_print_to_pagebuf
+  bitmap_release_region
+  __bitmap_replace
+  __bitmap_set
+  __bitmap_weight
+  __bitmap_xor
+  bitmap_zalloc
+  blocking_notifier_call_chain
+  blocking_notifier_chain_register
+  blocking_notifier_chain_unregister
+  bpf_dispatcher_xdp_func
+  bpf_master_redirect_enabled_key
+  bpf_prog_put
+  bpf_stats_enabled_key
+  bpf_trace_run1
+  bpf_trace_run10
+  bpf_trace_run2
+  bpf_trace_run3
+  bpf_trace_run4
+  bpf_trace_run5
+  bpf_trace_run6
+  bpf_trace_run7
+  bpf_trace_run8
+  bpf_warn_invalid_xdp_action
+  bsearch
+  build_skb
+  bus_register
+  bus_register_notifier
+  bus_unregister
+  bus_unregister_notifier
+  cache_line_size
+  call_rcu
+  can_bus_off
+  cancel_delayed_work
+  cancel_delayed_work_sync
+  cancel_work_sync
+  can_change_mtu
+  can_change_state
+  can_dropped_invalid_skb
+  can_fd_dlc2len
+  can_fd_len2dlc
+  can_put_echo_skb
+  can_rx_offload_add_fifo
+  can_rx_offload_add_timestamp
+  can_rx_offload_del
+  can_rx_offload_enable
+  can_rx_offload_get_echo_skb
+  can_rx_offload_irq_finish
+  can_rx_offload_irq_offload_fifo
+  can_rx_offload_irq_offload_timestamp
+  can_rx_offload_queue_timestamp
+  capable
+  cdev_add
+  cdev_del
+  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_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
+  __check_object_size
+  __class_create
+  class_destroy
+  class_find_device
+  __class_register
+  class_unregister
+  clk_bulk_disable
+  clk_bulk_enable
+  clk_bulk_get
+  clk_bulk_prepare
+  clk_bulk_put
+  clk_bulk_unprepare
+  __clk_determine_rate
+  clk_disable
+  clk_divider_ops
+  clk_divider_ro_ops
+  clk_enable
+  clk_fractional_divider_ops
+  clk_gate_is_enabled
+  clk_gate_ops
+  clk_get
+  __clk_get_hw
+  __clk_get_name
+  clk_get_parent
+  clk_get_rate
+  clk_hw_get_name
+  clk_hw_get_parent
+  clk_hw_get_parent_by_index
+  clk_hw_get_rate
+  clk_hw_is_enabled
+  clk_hw_register
+  clk_hw_register_composite
+  __clk_hw_register_divider
+  clk_hw_register_fixed_factor
+  __clk_hw_register_fixed_rate
+  __clk_hw_register_gate
+  __clk_hw_register_mux
+  clk_hw_unregister
+  clk_is_match
+  clk_mux_index_to_val
+  clk_mux_ops
+  clk_mux_ro_ops
+  clk_notifier_register
+  clk_notifier_unregister
+  clk_prepare
+  clk_put
+  clk_register_mux_table
+  clk_round_rate
+  clk_set_parent
+  clk_set_rate
+  clk_unprepare
+  clk_unregister
+  clockevents_config_and_register
+  clocksource_mmio_init
+  clocksource_mmio_readl_up
+  close_candev
+  cma_alloc
+  cma_get_name
+  cma_release
+  compat_ptr_ioctl
+  complete
+  complete_all
+  completion_done
+  component_add
+  component_bind_all
+  component_compare_dev_name
+  component_compare_of
+  component_del
+  component_master_add_with_match
+  component_master_del
+  component_match_add_release
+  component_unbind_all
+  configfs_register_default_group
+  configfs_register_subsystem
+  configfs_unregister_default_group
+  configfs_unregister_subsystem
+  config_group_init
+  config_group_init_type_name
+  config_item_put
+  config_item_set_name
+  console_lock
+  console_suspend_enabled
+  console_unlock
+  __const_udelay
+  consume_skb
+  _copy_from_iter
+  __copy_overflow
+  _copy_to_iter
+  cpu_bit_bitmap
+  cpufreq_enable_boost_support
+  cpufreq_freq_attr_scaling_available_freqs
+  cpufreq_freq_attr_scaling_boost_freqs
+  cpufreq_generic_frequency_table_verify
+  cpufreq_generic_get
+  cpufreq_generic_suspend
+  cpufreq_quick_get
+  cpufreq_register_driver
+  cpufreq_unregister_driver
+  __cpuhp_remove_state
+  __cpuhp_setup_state
+  __cpuhp_state_add_instance
+  __cpuhp_state_remove_instance
+  cpu_hwcaps
+  cpu_latency_qos_add_request
+  cpu_latency_qos_remove_request
+  cpu_latency_qos_request_active
+  cpu_number
+  __cpu_online_mask
+  __cpu_possible_mask
+  crc32_be
+  crc32_le
+  crypto_aead_decrypt
+  crypto_aead_encrypt
+  crypto_aead_setauthsize
+  crypto_aead_setkey
+  crypto_alloc_aead
+  crypto_alloc_shash
+  crypto_alloc_skcipher
+  crypto_destroy_tfm
+  __crypto_memneq
+  crypto_shash_digest
+  crypto_shash_finup
+  crypto_shash_setkey
+  crypto_shash_update
+  crypto_skcipher_decrypt
+  crypto_skcipher_encrypt
+  crypto_skcipher_setkey
+  __crypto_xor
+  csum_partial
+  _ctype
+  deactivate_locked_super
+  debugfs_create_blob
+  debugfs_create_bool
+  debugfs_create_dir
+  debugfs_create_file
+  debugfs_lookup
+  debugfs_lookup_and_remove
+  debugfs_remove
+  debugfs_rename
+  default_llseek
+  default_wake_function
+  delayed_work_timer_fn
+  del_timer
+  del_timer_sync
+  destroy_workqueue
+  dev_addr_mod
+  dev_alloc_name
+  __dev_change_net_namespace
+  dev_close
+  dev_coredumpv
+  _dev_crit
+  dev_driver_string
+  _dev_err
+  dev_err_probe
+  dev_fetch_sw_netstats
+  dev_fwnode
+  __dev_get_by_index
+  dev_get_by_index
+  dev_get_regmap
+  device_add
+  device_create
+  device_create_file
+  device_del
+  device_destroy
+  device_for_each_child
+  device_get_child_node_count
+  device_get_dma_attr
+  device_get_match_data
+  device_get_next_child_node
+  device_initialize
+  device_link_add
+  device_link_del
+  device_link_remove
+  device_match_fwnode
+  device_match_of_node
+  device_property_match_string
+  device_property_present
+  device_property_read_string
+  device_property_read_u16_array
+  device_property_read_u32_array
+  device_register
+  device_remove_file
+  device_rename
+  __device_reset
+  device_set_of_node_from_dev
+  device_set_wakeup_capable
+  device_set_wakeup_enable
+  device_unregister
+  device_wakeup_disable
+  device_wakeup_enable
+  _dev_info
+  __dev_kfree_skb_any
+  devm_add_action
+  devm_backlight_device_register
+  devm_blk_crypto_profile_init
+  devm_clk_bulk_get
+  devm_clk_bulk_get_all
+  devm_clk_bulk_get_optional
+  devm_clk_get
+  devm_clk_get_optional
+  devm_clk_put
+  devm_clk_register
+  devm_device_add_group
+  __devm_drm_dev_alloc
+  devm_drm_of_get_bridge
+  devm_drm_panel_bridge_add
+  devm_drm_panel_bridge_add_typed
+  devm_extcon_dev_allocate
+  devm_extcon_dev_register
+  devm_extcon_register_notifier
+  devm_free_irq
+  devm_fwnode_gpiod_get_index
+  devm_fwnode_pwm_get
+  devm_get_clk_from_child
+  devm_gpiochip_add_data_with_key
+  devm_gpiod_get
+  devm_gpiod_get_array
+  devm_gpiod_get_index
+  devm_gpiod_get_optional
+  devm_gpio_request
+  devm_gpio_request_one
+  devm_hwrng_register
+  devm_i2c_new_dummy_device
+  devm_iio_device_alloc
+  __devm_iio_device_register
+  __devm_iio_trigger_alloc
+  devm_iio_trigger_register
+  devm_input_allocate_device
+  devm_ioremap
+  devm_ioremap_resource
+  devm_ioremap_wc
+  devm_iounmap
+  __devm_irq_alloc_descs
+  devm_irq_alloc_generic_chip
+  devm_irq_setup_generic_chip
+  devm_kasprintf
+  devm_kfree
+  devm_kmalloc
+  devm_kmemdup
+  devm_krealloc
+  devm_kstrdup
+  devm_kvasprintf
+  devm_led_classdev_register_ext
+  devm_mbox_controller_register
+  devm_mfd_add_devices
+  devm_mipi_dsi_attach
+  devm_mipi_dsi_device_register_full
+  devm_nvmem_device_get
+  devm_nvmem_register
+  devm_of_clk_add_hw_provider
+  devm_of_phy_get
+  __devm_of_phy_provider_register
+  devm_of_platform_populate
+  devm_phy_create
+  devm_phy_get
+  devm_phy_optional_get
+  devm_phy_package_join
+  devm_pinctrl_get
+  devm_pinctrl_put
+  devm_pinctrl_register_and_init
+  devm_platform_get_and_ioremap_resource
+  devm_platform_ioremap_resource
+  devm_platform_ioremap_resource_byname
+  devm_power_supply_register
+  devm_pwmchip_add
+  devm_pwm_get
+  devm_rc_allocate_device
+  devm_rc_register_device
+  devm_register_sys_off_handler
+  devm_regmap_field_alloc
+  __devm_regmap_init
+  __devm_regmap_init_i2c
+  __devm_regmap_init_mmio_clk
+  __devm_regmap_init_spi
+  devm_regulator_bulk_get
+  devm_regulator_get
+  devm_regulator_get_exclusive
+  devm_regulator_get_optional
+  devm_regulator_register
+  devm_regulator_register_notifier
+  devm_remove_action
+  devm_request_threaded_irq
+  devm_reset_control_array_get
+  __devm_reset_control_get
+  devm_reset_controller_register
+  devm_rtc_allocate_device
+  devm_rtc_device_register
+  __devm_rtc_register_device
+  devm_snd_dmaengine_pcm_register
+  devm_snd_soc_register_card
+  devm_snd_soc_register_component
+  devm_spi_mem_dirmap_create
+  devm_spi_register_controller
+  devm_thermal_of_zone_register
+  devm_usb_get_phy
+  devm_usb_get_phy_by_phandle
+  devm_watchdog_register_device
+  _dev_notice
+  dev_pm_domain_attach_by_id
+  dev_pm_domain_attach_by_name
+  dev_pm_domain_detach
+  dev_pm_genpd_add_notifier
+  dev_pm_genpd_remove_notifier
+  dev_pm_opp_add
+  dev_pm_opp_clear_config
+  dev_pm_opp_free_cpufreq_table
+  dev_pm_opp_get_max_transition_latency
+  dev_pm_opp_get_opp_count
+  dev_pm_opp_get_sharing_cpus
+  dev_pm_opp_get_suspend_opp_freq
+  dev_pm_opp_init_cpufreq_table
+  dev_pm_opp_of_cpumask_add_table
+  dev_pm_opp_of_cpumask_remove_table
+  dev_pm_opp_of_get_sharing_cpus
+  dev_pm_opp_of_register_em
+  dev_pm_opp_remove
+  dev_pm_opp_set_config
+  dev_pm_opp_set_rate
+  dev_pm_opp_set_sharing_cpus
+  dev_pm_set_wake_irq
+  _dev_printk
+  __dev_queue_xmit
+  devres_add
+  __devres_alloc_node
+  devres_free
+  devres_open_group
+  devres_release
+  devres_release_group
+  devres_remove_group
+  dev_set_name
+  dev_to_i3cdev
+  _dev_warn
+  disable_irq
+  disable_irq_nosync
+  disable_percpu_irq
+  divider_get_val
+  divider_recalc_rate
+  dma_alloc_attrs
+  dma_alloc_pages
+  dma_async_device_register
+  dma_async_device_unregister
+  dma_async_tx_descriptor_init
+  dma_buf_attach
+  dma_buf_detach
+  dma_buf_export
+  dma_buf_fd
+  dma_buf_get
+  dma_buf_map_attachment
+  dma_buf_mmap
+  dmabuf_page_pool_alloc
+  dmabuf_page_pool_create
+  dmabuf_page_pool_destroy
+  dmabuf_page_pool_free
+  dmabuf_page_pool_get_size
+  dma_buf_put
+  dma_buf_unmap_attachment
+  dma_buf_vmap
+  dma_buf_vunmap
+  dma_contiguous_default_area
+  dmaenginem_async_device_register
+  dma_fence_add_callback
+  dma_fence_array_ops
+  dma_fence_context_alloc
+  dma_fence_default_wait
+  dma_fence_free
+  dma_fence_init
+  dma_fence_release
+  dma_fence_remove_callback
+  dma_fence_signal
+  dma_fence_signal_locked
+  dma_fence_wait_timeout
+  dma_free_attrs
+  dma_free_pages
+  dma_get_required_mask
+  dma_get_sgtable_attrs
+  dma_get_slave_channel
+  dma_heap_add
+  dma_heap_get_dev
+  dma_heap_get_drvdata
+  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_mmap_pages
+  dma_pool_alloc
+  dma_pool_create
+  dma_pool_destroy
+  dma_pool_free
+  dma_release_channel
+  dma_request_chan
+  __dma_request_channel
+  dma_resv_add_fence
+  dma_resv_describe
+  dma_resv_iter_first
+  dma_resv_iter_next
+  dma_resv_reserve_fences
+  dma_resv_test_signaled
+  dma_resv_wait_timeout
+  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_SAK
+  do_trace_netlink_extack
+  down
+  down_interruptible
+  down_killable
+  down_read
+  down_timeout
+  down_trylock
+  down_write
+  dpcm_end_walk_at_be
+  driver_create_file
+  driver_find_device
+  driver_register
+  driver_remove_file
+  driver_set_override
+  driver_unregister
+  drm_add_edid_modes
+  drm_atomic_add_affected_connectors
+  drm_atomic_add_affected_planes
+  drm_atomic_commit
+  drm_atomic_get_connector_state
+  drm_atomic_get_crtc_state
+  drm_atomic_get_new_bridge_state
+  drm_atomic_get_new_connector_for_encoder
+  drm_atomic_get_new_private_obj_state
+  drm_atomic_get_old_private_obj_state
+  drm_atomic_get_plane_state
+  drm_atomic_get_private_obj_state
+  drm_atomic_helper_bridge_destroy_state
+  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_check_modeset
+  drm_atomic_helper_check_planes
+  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_commit_tail_rpm
+  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_destroy_state
+  __drm_atomic_helper_crtc_duplicate_state
+  drm_atomic_helper_crtc_duplicate_state
+  drm_atomic_helper_crtc_reset
+  drm_atomic_helper_damage_iter_init
+  drm_atomic_helper_damage_iter_next
+  drm_atomic_helper_disable_plane
+  drm_atomic_helper_disable_planes_on_crtc
+  drm_atomic_helper_page_flip
+  __drm_atomic_helper_plane_destroy_state
+  drm_atomic_helper_plane_destroy_state
+  __drm_atomic_helper_plane_duplicate_state
+  drm_atomic_helper_plane_duplicate_state
+  __drm_atomic_helper_plane_reset
+  drm_atomic_helper_plane_reset
+  __drm_atomic_helper_private_obj_duplicate_state
+  drm_atomic_helper_set_config
+  drm_atomic_helper_shutdown
+  drm_atomic_helper_update_plane
+  drm_atomic_helper_wait_for_vblanks
+  drm_atomic_normalize_zpos
+  drm_atomic_private_obj_fini
+  drm_atomic_private_obj_init
+  drm_atomic_state_alloc
+  drm_atomic_state_clear
+  __drm_atomic_state_free
+  drm_bridge_add
+  drm_bridge_attach
+  drm_bridge_chain_enable
+  drm_bridge_connector_disable_hpd
+  drm_bridge_connector_enable_hpd
+  drm_bridge_connector_init
+  drm_bridge_hpd_notify
+  drm_bridge_remove
+  drm_bus_flags_from_videomode
+  drm_compat_ioctl
+  drm_connector_atomic_hdr_metadata_equal
+  drm_connector_attach_encoder
+  drm_connector_attach_hdr_output_metadata_property
+  drm_connector_attach_max_bpc_property
+  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_register
+  drm_connector_set_panel_orientation
+  drm_connector_unregister
+  drm_connector_update_edid_property
+  drm_crtc_accurate_vblank_count
+  drm_crtc_add_crc_entry
+  drm_crtc_arm_vblank_event
+  drm_crtc_cleanup
+  __drm_crtc_commit_free
+  drm_crtc_commit_wait
+  drm_crtc_handle_vblank
+  drm_crtc_init_with_planes
+  drm_crtc_send_vblank_event
+  drm_crtc_vblank_get
+  drm_crtc_vblank_helper_get_vblank_timestamp
+  drm_crtc_vblank_off
+  drm_crtc_vblank_on
+  drm_crtc_vblank_put
+  drm_crtc_wait_one_vblank
+  ___drm_dbg
+  __drm_debug
+  drm_debugfs_create_files
+  drm_default_rgb_quant_range
+  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_cea_vic
+  drm_display_mode_from_videomode
+  drm_display_mode_to_videomode
+  drm_do_get_edid
+  drm_edid_duplicate
+  drm_edid_get_monitor_name
+  drm_encoder_cleanup
+  drm_encoder_init
+  __drm_err
+  drm_firmware_drivers_only
+  drm_format_info_block_height
+  drm_format_info_block_width
+  drm_gem_create_mmap_offset
+  drm_gem_fb_create
+  drm_gem_fb_get_obj
+  drm_gem_free_mmap_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_plane_helper_prepare_fb
+  drm_gem_prime_fd_to_handle
+  drm_gem_prime_handle_to_fd
+  drm_gem_prime_import
+  drm_gem_prime_mmap
+  drm_gem_private_object_init
+  drm_gem_put_pages
+  drm_gem_vm_close
+  drm_gem_vm_open
+  drm_get_connector_status_name
+  drm_get_edid
+  drm_get_format_info
+  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_poll_fini
+  drm_kms_helper_poll_init
+  drm_match_cea_mode
+  drm_mm_init
+  drm_mm_insert_node_in_range
+  __drm_mm_interval_first
+  drmm_mode_config_init
+  drm_mm_print
+  drm_mm_remove_node
+  drm_mm_scan_add_block
+  drm_mm_scan_init_with_range
+  drm_mm_scan_remove_block
+  drm_mm_takedown
+  drm_mode_config_cleanup
+  drm_mode_config_helper_resume
+  drm_mode_config_helper_suspend
+  drm_mode_config_reset
+  drm_mode_copy
+  drm_mode_create
+  drm_mode_create_hdmi_colorspace_property
+  drm_mode_debug_printmodeline
+  drm_mode_destroy
+  drm_mode_duplicate
+  drm_mode_equal
+  drm_mode_find_dmt
+  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_modeset_lock_single_interruptible
+  drm_mode_set_name
+  drm_modeset_unlock
+  drm_mode_vrefresh
+  __drmm_simple_encoder_alloc
+  drm_object_attach_property
+  drm_object_property_set_value
+  drm_of_component_match_add
+  drm_of_encoder_active_endpoint
+  drm_of_find_panel_or_bridge
+  drm_of_find_possible_crtcs
+  drm_open
+  drm_panel_add
+  drm_panel_disable
+  drm_panel_enable
+  drm_panel_get_modes
+  drm_panel_init
+  drm_panel_of_backlight
+  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_color_properties
+  drm_plane_create_rotation_property
+  drm_plane_create_scaling_filter_property
+  drm_plane_create_zpos_immutable_property
+  drm_plane_create_zpos_property
+  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_printfn_debug
+  __drm_printfn_seq_file
+  drm_property_create_enum
+  drm_property_create_range
+  drm_property_destroy
+  __drm_puts_seq_file
+  drm_read
+  drm_rect_intersect
+  drm_release
+  drm_self_refresh_helper_cleanup
+  drm_self_refresh_helper_init
+  drm_simple_encoder_init
+  drm_sysfs_connector_status_event
+  drm_universal_plane_init
+  drm_vblank_init
+  dump_stack
+  dw_pcie_ep_init
+  dw_pcie_ep_raise_legacy_irq
+  dw_pcie_ep_raise_msi_irq
+  dw_pcie_ep_reset_bar
+  dw_pcie_find_capability
+  dw_pcie_host_init
+  dw_pcie_read_dbi
+  dw_pcie_setup_rc
+  dw_pcie_wait_for_link
+  dw_pcie_write_dbi
+  ehci_handshake
+  ehci_hub_control
+  ehci_init_driver
+  ehci_setup
+  enable_irq
+  enable_percpu_irq
+  ether_setup
+  eth_mac_addr
+  ethnl_cable_test_fault_length
+  ethnl_cable_test_result
+  ethtool_op_get_link
+  ethtool_op_get_ts_info
+  eth_type_trans
+  eth_validate_addr
+  extcon_get_edev_by_phandle
+  extcon_get_state
+  extcon_set_state_sync
+  fb_get_options
+  fb_mode_option
+  fd_install
+  fget
+  _find_first_bit
+  _find_first_zero_bit
+  _find_next_and_bit
+  _find_next_bit
+  _find_next_zero_bit
+  find_vma
+  find_vpid
+  finish_wait
+  firmware_kobj
+  fixed_size_llseek
+  flush_delayed_work
+  flush_work
+  __flush_workqueue
+  fortify_panic
+  fput
+  free_candev
+  free_io_pgtable_ops
+  free_irq
+  free_netdev
+  __free_pages
+  free_pages_exact
+  free_percpu
+  free_percpu_irq
+  fwnode_device_is_available
+  fwnode_get_name
+  fwnode_graph_get_next_endpoint
+  fwnode_graph_get_port_parent
+  fwnode_graph_get_remote_endpoint
+  fwnode_graph_get_remote_port_parent
+  fwnode_graph_parse_endpoint
+  fwnode_handle_get
+  fwnode_handle_put
+  fwnode_irq_get_byname
+  fwnode_property_get_reference_args
+  fwnode_property_present
+  fwnode_property_read_string
+  fwnode_property_read_u32_array
+  fwnode_property_read_u64_array
+  gcd
+  generic_device_group
+  generic_handle_domain_irq
+  generic_handle_irq
+  generic_shutdown_super
+  genlmsg_multicast_allns
+  genlmsg_put
+  genl_register_family
+  genl_unregister_family
+  genphy_c37_config_aneg
+  genphy_c37_read_status
+  genphy_c45_fast_retrain
+  genphy_c45_pma_setup_forced
+  __genphy_config_aneg
+  genphy_handle_interrupt_no_ack
+  genphy_read_abilities
+  genphy_read_lpa
+  genphy_read_mmd_unsupported
+  genphy_read_status
+  genphy_restart_aneg
+  genphy_resume
+  genphy_setup_forced
+  genphy_soft_reset
+  genphy_suspend
+  genphy_update_link
+  genphy_write_mmd_unsupported
+  gen_pool_add_owner
+  gen_pool_alloc_algo_owner
+  gen_pool_create
+  gen_pool_destroy
+  gen_pool_dma_alloc
+  gen_pool_free_owner
+  gen_pool_virt_to_phys
+  get_cpu_device
+  get_device
+  get_net_ns_by_fd
+  get_net_ns_by_pid
+  get_random_bytes
+  get_random_u16
+  get_random_u32
+  get_random_u8
+  get_unused_fd_flags
+  gic_nonsecure_priorities
+  gpiochip_add_data_with_key
+  gpiochip_disable_irq
+  gpiochip_enable_irq
+  gpiochip_generic_config
+  gpiochip_generic_free
+  gpiochip_generic_request
+  gpiochip_get_data
+  gpiochip_irq_relres
+  gpiochip_irq_reqres
+  gpiochip_lock_as_irq
+  gpiochip_remove
+  gpiochip_unlock_as_irq
+  gpiod_cansleep
+  gpiod_count
+  gpiod_direction_input
+  gpiod_direction_output
+  gpiod_direction_output_raw
+  gpiod_get_index_optional
+  gpiod_get_optional
+  gpiod_get_raw_value
+  gpiod_get_raw_value_cansleep
+  gpiod_get_value
+  gpiod_get_value_cansleep
+  gpiod_set_array_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
+  guid_null
+  handle_edge_irq
+  handle_level_irq
+  handle_nested_irq
+  handle_simple_irq
+  handle_sysrq
+  hdmi_audio_infoframe_init
+  hdmi_audio_infoframe_pack
+  hdmi_avi_infoframe_check
+  hdmi_avi_infoframe_init
+  hdmi_avi_infoframe_pack
+  hdmi_drm_infoframe_init
+  hdmi_drm_infoframe_pack
+  hdmi_vendor_infoframe_pack
+  hex_dump_to_buffer
+  hrtimer_cancel
+  hrtimer_forward
+  hrtimer_init
+  hrtimer_resolution
+  hrtimer_start_range_ns
+  hrtimer_try_to_cancel
+  __hw_addr_init
+  __hw_addr_sync
+  __hw_addr_unsync
+  i2c_adapter_type
+  i2c_add_adapter
+  i2c_add_numbered_adapter
+  i2c_bus_type
+  i2c_del_adapter
+  i2c_del_driver
+  i2c_for_each_dev
+  i2c_generic_scl_recovery
+  i2c_get_adapter
+  i2c_get_dma_safe_msg_buf
+  i2c_match_id
+  i2c_new_ancillary_device
+  i2c_new_dummy_device
+  i2c_put_adapter
+  i2c_put_dma_safe_msg_buf
+  i2c_recover_bus
+  i2c_register_driver
+  i2c_smbus_read_byte
+  i2c_smbus_read_byte_data
+  i2c_smbus_read_i2c_block_data
+  i2c_smbus_write_byte
+  i2c_smbus_write_byte_data
+  i2c_smbus_xfer
+  i2c_transfer
+  i2c_transfer_buffer_flags
+  i2c_unregister_device
+  i2c_verify_client
+  i3c_device_do_priv_xfers
+  i3c_device_match_id
+  i3c_driver_register_with_owner
+  i3c_driver_unregister
+  ida_alloc_range
+  ida_destroy
+  ida_free
+  idr_alloc
+  idr_alloc_cyclic
+  idr_destroy
+  idr_find
+  idr_for_each
+  idr_get_next
+  idr_preload
+  idr_remove
+  ignore_console_lock_warning
+  iio_alloc_pollfunc
+  iio_buffer_enabled
+  iio_buffer_init
+  iio_buffer_put
+  iio_bus_type
+  iio_dealloc_pollfunc
+  iio_device_attach_buffer
+  iio_device_claim_direct_mode
+  iio_device_id
+  __iio_device_register
+  iio_device_release_direct_mode
+  iio_device_unregister
+  iio_format_value
+  iio_get_time_ns
+  iio_push_event
+  iio_push_to_buffers
+  iio_read_const_attr
+  iio_read_mount_matrix
+  iio_show_mount_matrix
+  iio_str_to_fixpoint
+  __iio_trigger_alloc
+  iio_trigger_free
+  iio_trigger_notify_done
+  iio_trigger_poll
+  iio_trigger_poll_chained
+  iio_trigger_register
+  iio_trigger_unregister
+  import_iovec
+  in4_pton
+  inet_csk_get_port
+  init_dummy_netdev
+  init_net
+  __init_swait_queue_head
+  init_timer_key
+  init_uts_ns
+  init_wait_entry
+  __init_waitqueue_head
+  input_alloc_absinfo
+  input_allocate_device
+  input_copy_abs
+  input_event
+  input_free_device
+  input_mt_init_slots
+  input_mt_report_slot_state
+  input_mt_sync_frame
+  input_register_device
+  input_set_abs_params
+  input_set_capability
+  input_unregister_device
+  int_sqrt
+  iomem_resource
+  iommu_alloc_resv_region
+  iommu_device_register
+  iommu_device_sysfs_add
+  iommu_device_sysfs_remove
+  iommu_device_unregister
+  iommu_dma_get_resv_regions
+  iommu_fwspec_add_ids
+  iommu_fwspec_free
+  iommu_get_domain_for_dev
+  iommu_group_ref_get
+  iommu_iova_to_phys
+  ioremap_prot
+  iounmap
+  __iowrite32_copy
+  __irq_alloc_descs
+  __irq_alloc_domain_generic_chips
+  irq_chip_ack_parent
+  irq_create_mapping_affinity
+  irq_create_of_mapping
+  irq_dispose_mapping
+  __irq_domain_add
+  irq_domain_add_legacy
+  irq_domain_get_irq_data
+  irq_domain_remove
+  irq_domain_set_info
+  irq_domain_simple_ops
+  irq_domain_update_bus_token
+  irq_domain_xlate_onecell
+  irq_domain_xlate_twocell
+  irq_gc_ack_set_bit
+  irq_gc_mask_clr_bit
+  irq_gc_mask_set_bit
+  irq_generic_chip_ops
+  irq_get_domain_generic_chip
+  irq_get_irq_data
+  irq_modify_status
+  irq_of_parse_and_map
+  __irq_resolve_mapping
+  irq_set_affinity
+  irq_set_chained_handler_and_data
+  irq_set_chip_and_handler_name
+  irq_set_chip_data
+  __irq_set_handler
+  irq_set_irq_wake
+  irq_to_desc
+  irq_work_queue
+  irq_work_sync
+  ir_raw_event_store_edge
+  is_console_locked
+  is_vmalloc_addr
+  iwe_stream_add_event
+  iwe_stream_add_point
+  iwe_stream_add_value
+  iw_handler_get_spy
+  iw_handler_get_thrspy
+  iw_handler_set_spy
+  iw_handler_set_thrspy
+  jiffies
+  jiffies_to_msecs
+  jiffies_to_usecs
+  kasan_flag_enabled
+  kasprintf
+  kernel_param_lock
+  kernel_param_unlock
+  key_create_or_update
+  key_put
+  keyring_alloc
+  __kfifo_alloc
+  __kfifo_free
+  __kfifo_from_user
+  __kfifo_in
+  __kfifo_init
+  __kfifo_out
+  __kfifo_to_user
+  kfree
+  kfree_sensitive
+  kfree_skb_list_reason
+  kfree_skb_reason
+  kimage_voffset
+  __kmalloc
+  kmalloc_caches
+  kmalloc_large
+  kmalloc_trace
+  kmem_cache_alloc
+  kmem_cache_create
+  kmem_cache_destroy
+  kmem_cache_free
+  kmemdup
+  kobject_create_and_add
+  kobject_put
+  kobject_uevent_env
+  krealloc
+  kstrdup
+  kstrdup_const
+  kstrtoint
+  kstrtoint_from_user
+  kstrtoll
+  kstrtou16
+  kstrtouint
+  kstrtoull
+  kthread_bind
+  kthread_create_on_node
+  kthread_park
+  kthread_parkme
+  kthread_should_park
+  kthread_should_stop
+  kthread_stop
+  kthread_unpark
+  ktime_get
+  ktime_get_coarse_with_offset
+  ktime_get_mono_fast_ns
+  ktime_get_raw_ts64
+  ktime_get_real_ts64
+  ktime_get_seconds
+  ktime_get_ts64
+  ktime_get_with_offset
+  kvfree
+  kvfree_call_rcu
+  kvmalloc_node
+  led_init_default_state_get
+  __list_add_valid
+  __list_del_entry_valid
+  __local_bh_enable_ip
+  lockref_get
+  logfc
+  log_post_read_mmio
+  log_post_write_mmio
+  log_read_mmio
+  log_write_mmio
+  lookup_bdev
+  match_string
+  mbox_chan_received_data
+  mbox_chan_txdone
+  mbox_free_channel
+  mbox_request_channel_byname
+  mbox_send_message
+  mctrl_gpio_disable_ms
+  mctrl_gpio_enable_ms
+  mctrl_gpio_get
+  mctrl_gpio_init
+  mctrl_gpio_set
+  mdiobus_alloc_size
+  mdiobus_free
+  mdiobus_is_registered_device
+  __mdiobus_read
+  mdiobus_read
+  mdiobus_unregister
+  __mdiobus_write
+  mdiobus_write
+  mdio_device_reset
+  media_create_ancillary_link
+  media_create_pad_link
+  media_device_cleanup
+  media_device_init
+  __media_device_register
+  media_device_unregister
+  media_entity_pads_init
+  media_entity_remove_links
+  media_graph_walk_cleanup
+  media_graph_walk_init
+  media_graph_walk_next
+  media_graph_walk_start
+  media_pad_remote_pad_first
+  memchr_inv
+  memcmp
+  memcpy
+  __memcpy_fromio
+  __memcpy_toio
+  memdup_user
+  memmove
+  memory_read_from_buffer
+  memparse
+  memremap
+  mem_section
+  memset
+  memset32
+  __memset_io
+  memstart_addr
+  memunmap
+  mfd_add_devices
+  mfd_remove_devices
+  mipi_dsi_attach
+  mipi_dsi_create_packet
+  mipi_dsi_dcs_enter_sleep_mode
+  mipi_dsi_dcs_exit_sleep_mode
+  mipi_dsi_dcs_get_display_brightness
+  mipi_dsi_dcs_set_display_brightness
+  mipi_dsi_dcs_set_display_off
+  mipi_dsi_dcs_set_display_on
+  mipi_dsi_dcs_set_pixel_format
+  mipi_dsi_dcs_set_tear_on
+  mipi_dsi_dcs_set_tear_scanline
+  mipi_dsi_dcs_soft_reset
+  mipi_dsi_dcs_write_buffer
+  mipi_dsi_detach
+  mipi_dsi_device_register_full
+  mipi_dsi_device_unregister
+  mipi_dsi_driver_register_full
+  mipi_dsi_driver_unregister
+  mipi_dsi_generic_write
+  mipi_dsi_host_register
+  mipi_dsi_host_unregister
+  misc_deregister
+  misc_register
+  mmc_cqe_request_done
+  mmc_gpio_get_cd
+  mmc_gpio_get_ro
+  mmc_gpio_set_cd_wake
+  mmc_hw_reset
+  mmc_of_parse
+  mmc_of_parse_voltage
+  mmc_pwrseq_register
+  mmc_pwrseq_unregister
+  mmc_retune_timer_stop
+  mmc_send_tuning
+  mmc_set_data_timeout
+  mmc_wait_for_req
+  mod_delayed_work_on
+  mod_timer
+  __module_get
+  module_layout
+  module_put
+  __msecs_to_jiffies
+  msleep
+  msleep_interruptible
+  __mutex_init
+  mutex_is_locked
+  mutex_lock
+  mutex_lock_interruptible
+  mutex_lock_killable
+  mutex_trylock
+  mutex_unlock
+  napi_complete_done
+  napi_disable
+  napi_enable
+  napi_gro_receive
+  __napi_schedule
+  napi_schedule_prep
+  __ndelay
+  __netdev_alloc_skb
+  netdev_err
+  netdev_info
+  netdev_pick_tx
+  netdev_printk
+  netdev_set_default_ethtool_ops
+  netdev_warn
+  netif_carrier_off
+  netif_carrier_on
+  netif_device_attach
+  netif_device_detach
+  netif_napi_add_weight
+  __netif_napi_del
+  netif_receive_skb
+  netif_receive_skb_list
+  netif_rx
+  netif_set_tso_max_segs
+  netif_tx_lock
+  netif_tx_stop_all_queues
+  netif_tx_unlock
+  netif_tx_wake_queue
+  netlink_broadcast
+  __netlink_kernel_create
+  netlink_kernel_release
+  netlink_register_notifier
+  netlink_unicast
+  netlink_unregister_notifier
+  net_ns_type_operations
+  net_ratelimit
+  net_selftest
+  net_selftest_get_count
+  net_selftest_get_strings
+  nla_find
+  nla_memcpy
+  __nla_parse
+  nla_put
+  nla_put_64bit
+  nla_reserve
+  __nla_validate
+  noop_llseek
+  nr_cpu_ids
+  nsecs_to_jiffies
+  ns_to_timespec64
+  __num_online_cpus
+  nvmem_cell_read_u32
+  nvmem_cell_read_u64
+  nvmem_device_read
+  nvmem_register
+  nvmem_unregister
+  of_address_to_resource
+  of_alias_get_id
+  of_can_transceiver
+  of_chosen
+  of_clk_add_hw_provider
+  of_clk_add_provider
+  of_clk_del_provider
+  of_clk_get
+  of_clk_get_by_name
+  of_clk_get_from_provider
+  of_clk_hw_onecell_get
+  of_clk_parent_fill
+  of_clk_set_defaults
+  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_device_modalias
+  of_device_request_module
+  of_device_uevent_modalias
+  of_dma_configure_id
+  of_dma_controller_free
+  of_dma_controller_register
+  of_dma_is_coherent
+  of_drm_find_bridge
+  of_drm_find_panel
+  of_drm_get_panel_orientation
+  of_find_compatible_node
+  of_find_device_by_node
+  of_find_i2c_adapter_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_by_phandle
+  of_find_node_opts_by_path
+  of_find_property
+  of_fwnode_ops
+  of_genpd_add_device
+  of_genpd_add_provider_onecell
+  of_genpd_add_provider_simple
+  of_genpd_add_subdomain
+  of_genpd_del_provider
+  of_gen_pool_get
+  of_get_child_by_name
+  of_get_compatible_child
+  of_get_display_timing
+  of_get_i2c_adapter_by_node
+  of_get_mac_address
+  of_get_named_gpio_flags
+  of_get_next_available_child
+  of_get_next_child
+  of_get_parent
+  of_get_phy_mode
+  of_get_property
+  of_get_regulator_init_data
+  of_get_videomode
+  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_parent
+  of_graph_parse_endpoint
+  of_iomap
+  of_irq_find_parent
+  of_irq_get
+  of_machine_is_compatible
+  of_match_device
+  of_match_node
+  __of_mdiobus_register
+  of_n_addr_cells
+  of_node_name_eq
+  of_node_name_prefix
+  of_n_size_cells
+  __of_parse_phandle_with_args
+  of_phandle_iterator_init
+  of_phandle_iterator_next
+  of_phy_connect
+  of_phy_deregister_fixed_link
+  of_phy_find_device
+  of_phy_get
+  of_phy_is_fixed_link
+  of_phy_register_fixed_link
+  of_phy_simple_xlate
+  of_platform_depopulate
+  of_platform_populate
+  of_property_count_elems_of_size
+  of_property_match_string
+  of_property_read_string
+  of_property_read_string_helper
+  of_property_read_u32_index
+  of_property_read_u64_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_pwm_xlate_with_flags
+  of_regulator_match
+  of_reserved_mem_device_init_by_idx
+  of_reserved_mem_device_release
+  of_reserved_mem_lookup
+  of_reset_control_array_get
+  of_root
+  of_thermal_get_ntrips
+  of_thermal_get_trip_points
+  of_usb_get_phy_mode
+  of_usb_host_tpl_support
+  of_usb_update_otg_caps
+  oops_in_progress
+  open_candev
+  page_pool_alloc_pages
+  page_pool_create
+  page_pool_destroy
+  page_pool_put_defragged_page
+  panic
+  panic_notifier_list
+  param_array_ops
+  param_ops_bool
+  param_ops_byte
+  param_ops_charp
+  param_ops_int
+  param_ops_uint
+  param_ops_ullong
+  param_ops_ulong
+  param_ops_ushort
+  pci_bus_type
+  pci_choose_state
+  pci_device_group
+  pci_disable_device
+  pci_disable_msi
+  pci_disable_msix
+  pci_enable_device
+  pci_enable_msi
+  pci_enable_msix_range
+  pci_enable_wake
+  pci_iomap
+  pci_iounmap
+  pci_msi_enabled
+  pci_read_config_dword
+  __pci_register_driver
+  pci_release_region
+  pci_request_region
+  pci_reset_function
+  pci_restore_state
+  pci_save_state
+  pci_set_master
+  pci_set_power_state
+  pci_unregister_driver
+  pci_write_config_dword
+  __per_cpu_offset
+  perf_pmu_migrate_context
+  perf_pmu_register
+  perf_pmu_unregister
+  perf_trace_buf_alloc
+  perf_trace_run_bpf_submit
+  pfn_is_map_memory
+  phy_attached_info
+  phy_basic_t1_features
+  phy_configure
+  phy_connect
+  phy_disconnect
+  phy_drivers_register
+  phy_drivers_unregister
+  phy_error
+  phy_ethtool_get_eee
+  phy_ethtool_get_link_ksettings
+  phy_ethtool_nway_reset
+  phy_ethtool_set_eee
+  phy_ethtool_set_link_ksettings
+  phy_exit
+  phy_init
+  phy_init_eee
+  phy_init_hw
+  phy_mii_ioctl
+  phy_mipi_dphy_get_default_config
+  __phy_modify
+  phy_modify
+  phy_modify_changed
+  phy_modify_mmd
+  phy_modify_mmd_changed
+  phy_modify_paged
+  phy_modify_paged_changed
+  phy_pm_runtime_get_sync
+  phy_pm_runtime_put
+  phy_power_off
+  phy_power_on
+  phy_print_status
+  phy_read_mmd
+  phy_read_paged
+  phy_remove_link_mode
+  phy_reset
+  phy_reset_after_clk_enable
+  phy_resolve_aneg_pause
+  phy_restore_page
+  phy_select_page
+  phy_set_max_speed
+  phy_set_mode_ext
+  phy_set_sym_pause
+  phy_sfp_attach
+  phy_sfp_detach
+  phy_sfp_probe
+  phy_start
+  phy_start_aneg
+  phy_stop
+  phy_support_sym_pause
+  phy_trigger_machine
+  phy_validate
+  phy_write_mmd
+  phy_write_paged
+  pid_task
+  pinconf_generic_parse_dt_config
+  pinctrl_dev_get_drvdata
+  pinctrl_enable
+  pinctrl_force_default
+  pinctrl_force_sleep
+  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_default_state
+  pinctrl_select_state
+  pin_get_name
+  pinmux_generic_get_function
+  pinmux_generic_get_function_count
+  pinmux_generic_get_function_groups
+  pinmux_generic_get_function_name
+  pin_user_pages
+  pin_user_pages_fast
+  platform_device_add
+  platform_device_add_data
+  platform_device_add_resources
+  platform_device_alloc
+  platform_device_put
+  platform_device_register
+  platform_device_register_full
+  platform_device_unregister
+  __platform_driver_probe
+  __platform_driver_register
+  platform_driver_unregister
+  platform_get_irq
+  platform_get_irq_byname
+  platform_get_irq_byname_optional
+  platform_get_irq_optional
+  platform_get_resource
+  platform_get_resource_byname
+  platform_irqchip_probe
+  platform_irq_count
+  platform_msi_create_irq_domain
+  pm_genpd_init
+  pm_genpd_remove
+  pm_genpd_remove_device
+  __pm_relax
+  pm_relax
+  pm_runtime_allow
+  __pm_runtime_disable
+  pm_runtime_enable
+  pm_runtime_forbid
+  pm_runtime_force_resume
+  pm_runtime_force_suspend
+  __pm_runtime_idle
+  pm_runtime_no_callbacks
+  __pm_runtime_resume
+  pm_runtime_set_autosuspend_delay
+  __pm_runtime_set_status
+  __pm_runtime_suspend
+  __pm_runtime_use_autosuspend
+  __pm_stay_awake
+  pm_suspend_target_state
+  pm_system_wakeup
+  pm_wakeup_dev_event
+  pm_wakeup_ws_event
+  policy_has_boost_freq
+  power_supply_am_i_supplied
+  power_supply_changed
+  power_supply_get_by_phandle
+  power_supply_get_drvdata
+  power_supply_get_property
+  power_supply_put
+  power_supply_register
+  power_supply_reg_notifier
+  power_supply_set_property
+  power_supply_unregister
+  power_supply_unreg_notifier
+  preempt_schedule
+  preempt_schedule_notrace
+  prepare_to_wait_event
+  print_hex_dump
+  _printk
+  proc_create_data
+  proc_create_seq_private
+  proc_create_single_data
+  proc_mkdir
+  proc_remove
+  pskb_expand_head
+  __pskb_pull_tail
+  ___pskb_trim
+  ptp_classify_raw
+  ptp_clock_event
+  ptp_clock_index
+  ptp_clock_register
+  ptp_clock_unregister
+  ptp_parse_header
+  put_device
+  __put_net
+  __put_task_struct
+  put_unused_fd
+  pwm_apply_state
+  pwm_free
+  pwm_request
+  queue_delayed_work_on
+  queue_work_on
+  radix_tree_insert
+  ___ratelimit
+  rational_best_approximation
+  raw_notifier_call_chain
+  _raw_read_lock
+  _raw_read_unlock
+  _raw_spin_lock
+  _raw_spin_lock_bh
+  _raw_spin_lock_irq
+  _raw_spin_lock_irqsave
+  _raw_spin_trylock
+  _raw_spin_unlock
+  _raw_spin_unlock_bh
+  _raw_spin_unlock_irq
+  _raw_spin_unlock_irqrestore
+  rb_erase
+  rb_insert_color
+  rcu_barrier
+  __rcu_read_lock
+  __rcu_read_unlock
+  rdev_get_drvdata
+  rdev_get_id
+  refcount_warn_saturate
+  regcache_cache_bypass
+  regcache_cache_only
+  regcache_mark_dirty
+  regcache_sync
+  regcache_sync_region
+  register_candev
+  __register_chrdev
+  register_chrdev_region
+  register_inet6addr_notifier
+  register_inetaddr_notifier
+  register_netdev
+  register_netdevice
+  register_netdevice_notifier
+  register_pernet_device
+  register_pm_notifier
+  register_reboot_notifier
+  __register_rpmsg_driver
+  register_syscore_ops
+  register_virtio_device
+  register_virtio_driver
+  regmap_add_irq_chip
+  regmap_attach_dev
+  regmap_bulk_read
+  regmap_bulk_write
+  regmap_del_irq_chip
+  regmap_field_read
+  regmap_field_update_bits_base
+  regmap_get_device
+  __regmap_init_mmio_clk
+  regmap_irq_get_virq
+  regmap_raw_write
+  regmap_read
+  regmap_register_patch
+  regmap_reinit_cache
+  regmap_update_bits_base
+  regmap_write
+  regulator_bulk_disable
+  regulator_bulk_enable
+  regulator_bulk_free
+  regulator_bulk_get
+  regulator_desc_list_voltage_linear_range
+  regulator_disable
+  regulator_disable_regmap
+  regulator_enable
+  regulator_enable_regmap
+  regulator_get_voltage
+  regulator_get_voltage_sel_regmap
+  regulator_is_enabled
+  regulator_is_enabled_regmap
+  regulator_list_voltage_linear
+  regulator_list_voltage_linear_range
+  regulator_list_voltage_table
+  regulator_map_voltage_ascend
+  regulator_set_current_limit
+  regulator_set_ramp_delay_regmap
+  regulator_set_voltage
+  regulator_set_voltage_sel_regmap
+  regulator_set_voltage_time_sel
+  release_firmware
+  __release_region
+  remap_pfn_range
+  remove_cpu
+  remove_proc_entry
+  remove_wait_queue
+  report_iommu_fault
+  request_firmware
+  request_firmware_direct
+  request_firmware_nowait
+  __request_module
+  __request_percpu_irq
+  __request_region
+  request_threaded_irq
+  reservation_ww_class
+  reset_control_assert
+  reset_control_deassert
+  reset_controller_register
+  reset_controller_unregister
+  reset_control_put
+  reset_control_reset
+  rfkill_alloc
+  rfkill_blocked
+  rfkill_destroy
+  rfkill_register
+  rfkill_resume_polling
+  rfkill_set_hw_state_reason
+  rfkill_unregister
+  rhashtable_free_and_destroy
+  rhashtable_insert_slow
+  rhltable_init
+  __rht_bucket_nested
+  rht_bucket_nested
+  rht_bucket_nested_insert
+  round_jiffies
+  round_jiffies_relative
+  round_jiffies_up
+  rpmsg_create_channel
+  rpmsg_create_ept
+  rpmsg_find_device
+  rpmsg_register_device
+  rpmsg_register_device_override
+  rpmsg_release_channel
+  rpmsg_send
+  rpmsg_sendto
+  rpmsg_unregister_device
+  rproc_add
+  rproc_add_carveout
+  rproc_alloc
+  rproc_coredump_add_segment
+  rproc_da_to_va
+  rproc_del
+  rproc_elf_find_loaded_rsc_table
+  rproc_elf_get_boot_addr
+  rproc_elf_load_rsc_table
+  rproc_elf_load_segments
+  rproc_elf_sanity_check
+  rproc_free
+  rproc_mem_entry_init
+  rproc_of_parse_firmware
+  rproc_report_crash
+  rproc_vq_interrupt
+  rps_needed
+  rtc_time64_to_tm
+  rtc_tm_to_time64
+  rtc_update_irq
+  rtnl_is_locked
+  rtnl_lock
+  rtnl_unlock
+  sched_clock
+  sched_set_fifo_low
+  schedule
+  schedule_hrtimeout
+  schedule_timeout
+  schedule_timeout_uninterruptible
+  scmi_driver_register
+  scmi_driver_unregister
+  scnprintf
+  sdhci_add_host
+  sdhci_cqe_disable
+  sdhci_cqe_enable
+  sdhci_cqe_irq
+  sdhci_dumpregs
+  sdhci_execute_tuning
+  sdhci_pltfm_free
+  sdhci_pltfm_init
+  sdhci_remove_host
+  sdhci_reset
+  sdhci_resume_host
+  sdhci_runtime_resume_host
+  sdhci_runtime_suspend_host
+  sdhci_suspend_host
+  sdio_claim_host
+  sdio_claim_irq
+  sdio_disable_func
+  sdio_enable_func
+  sdio_f0_readb
+  sdio_f0_writeb
+  sdio_get_host_pm_caps
+  sdio_readb
+  sdio_readsb
+  sdio_register_driver
+  sdio_release_host
+  sdio_release_irq
+  sdio_set_block_size
+  sdio_set_host_pm_flags
+  sdio_unregister_driver
+  sdio_writeb
+  sdio_writesb
+  seq_lseek
+  seq_open
+  __seq_open_private
+  seq_printf
+  seq_puts
+  seq_read
+  seq_release
+  seq_release_private
+  seq_vprintf
+  seq_write
+  set_freezable
+  set_normalized_timespec64
+  set_user_nice
+  sg_alloc_table
+  sg_alloc_table_from_pages_segment
+  sget_fc
+  sg_free_table
+  sg_init_one
+  sg_init_table
+  sg_last
+  sg_next
+  __sg_page_iter_next
+  __sg_page_iter_start
+  simple_open
+  simple_read_from_buffer
+  simple_strtol
+  simple_strtoul
+  simple_write_to_buffer
+  single_open
+  single_release
+  skb_add_rx_frag
+  skb_checksum_help
+  skb_clone
+  skb_clone_sk
+  skb_complete_tx_timestamp
+  skb_complete_wifi_ack
+  skb_copy
+  skb_copy_bits
+  skb_copy_expand
+  skb_dequeue
+  skb_ensure_writable
+  __skb_get_hash
+  __skb_gso_segment
+  skb_pull
+  skb_push
+  skb_put
+  skb_queue_head
+  skb_queue_purge
+  skb_queue_tail
+  skb_realloc_headroom
+  skb_trim
+  skb_tstamp_tx
+  snd_compr_malloc_pages
+  snd_ctl_add
+  snd_ctl_boolean_mono_info
+  snd_ctl_boolean_stereo_info
+  snd_ctl_new1
+  snd_ctl_notify
+  snd_ctl_notify_one
+  snd_dma_alloc_dir_pages
+  snd_dma_buffer_sync
+  snd_dmaengine_pcm_prepare_slave_config
+  snd_dmaengine_pcm_refine_runtime_hwparams
+  snd_dmaengine_pcm_set_config_from_dai_data
+  snd_dma_free_pages
+  snd_hwparams_to_dma_slave_config
+  snd_interval_ranges
+  snd_interval_refine
+  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_big_endian
+  snd_pcm_format_linear
+  snd_pcm_format_physical_width
+  snd_pcm_format_unsigned
+  snd_pcm_format_width
+  snd_pcm_hw_constraint_eld
+  snd_pcm_hw_constraint_integer
+  snd_pcm_hw_constraint_list
+  snd_pcm_hw_constraint_mask64
+  snd_pcm_hw_constraint_minmax
+  snd_pcm_hw_constraint_ratnums
+  snd_pcm_hw_constraint_step
+  snd_pcm_hw_rule_add
+  snd_pcm_period_elapsed
+  snd_pcm_set_managed_buffer
+  snd_pcm_set_managed_buffer_all
+  snd_sgbuf_get_addr
+  snd_soc_add_component_controls
+  snd_soc_add_dai_controls
+  snd_soc_bytes_get
+  snd_soc_bytes_info
+  snd_soc_bytes_put
+  snd_soc_card_get_kcontrol
+  snd_soc_card_jack_new_pins
+  snd_soc_component_init_regmap
+  snd_soc_component_read
+  snd_soc_component_set_jack
+  snd_soc_component_set_sysclk
+  snd_soc_component_update_bits
+  snd_soc_component_write
+  snd_soc_dai_active
+  snd_soc_daifmt_clock_provider_flipped
+  snd_soc_daifmt_clock_provider_from_bitmap
+  snd_soc_daifmt_parse_clock_provider_raw
+  snd_soc_daifmt_parse_format
+  snd_soc_dai_link_set_capabilities
+  snd_soc_dai_set_bclk_ratio
+  snd_soc_dai_set_fmt
+  snd_soc_dai_set_pll
+  snd_soc_dai_set_sysclk
+  snd_soc_dai_set_tdm_slot
+  snd_soc_dapm_add_routes
+  snd_soc_dapm_dai_free_widgets
+  snd_soc_dapm_dai_get_connected_widgets
+  snd_soc_dapm_del_routes
+  snd_soc_dapm_disable_pin
+  snd_soc_dapm_disable_pin_unlocked
+  snd_soc_dapm_enable_pin
+  snd_soc_dapm_force_bias_level
+  snd_soc_dapm_force_enable_pin
+  snd_soc_dapm_force_enable_pin_unlocked
+  snd_soc_dapm_get_enum_double
+  snd_soc_dapm_get_volsw
+  snd_soc_dapm_ignore_suspend
+  snd_soc_dapm_kcontrol_dapm
+  snd_soc_dapm_nc_pin
+  snd_soc_dapm_new_controls
+  snd_soc_dapm_put_enum_double
+  snd_soc_dapm_put_volsw
+  snd_soc_dapm_sync
+  snd_soc_dapm_sync_unlocked
+  snd_soc_dpcm_get_substream
+  snd_soc_get_dai_name
+  snd_soc_get_enum_double
+  snd_soc_get_pcm_runtime
+  snd_soc_get_volsw
+  snd_soc_get_volsw_range
+  snd_soc_get_volsw_sx
+  snd_soc_info_enum_double
+  snd_soc_info_volsw
+  snd_soc_info_volsw_range
+  snd_soc_info_volsw_sx
+  snd_soc_info_xr_sx
+  snd_soc_jack_add_gpios
+  snd_soc_jack_notifier_register
+  snd_soc_jack_report
+  snd_soc_limit_volume
+  snd_soc_lookup_component
+  snd_soc_lookup_component_nolocked
+  snd_soc_of_get_dai_link_codecs
+  snd_soc_of_get_dai_name
+  snd_soc_of_parse_audio_routing
+  snd_soc_of_parse_audio_simple_widgets
+  snd_soc_of_parse_aux_devs
+  snd_soc_of_parse_card_name
+  snd_soc_of_parse_node_prefix
+  snd_soc_of_parse_pin_switches
+  snd_soc_of_parse_tdm_slot
+  snd_soc_params_to_bclk
+  snd_soc_params_to_frame_size
+  snd_soc_pm_ops
+  snd_soc_put_enum_double
+  snd_soc_put_volsw
+  snd_soc_put_volsw_range
+  snd_soc_put_volsw_sx
+  snd_soc_rtdcom_lookup
+  snd_soc_runtime_calc_hw
+  snd_soc_set_runtime_hwparams
+  snd_soc_tplg_component_load
+  snd_soc_tplg_component_remove
+  snd_soc_tplg_widget_bind_event
+  snprintf
+  soc_device_match
+  soc_device_register
+  __sock_create
+  sock_release
+  sort
+  __spi_alloc_controller
+  spi_finalize_current_transfer
+  spi_get_device_id
+  spi_mem_adjust_op_size
+  spi_mem_default_supports_op
+  spi_mem_dirmap_read
+  spi_mem_dirmap_write
+  spi_mem_driver_register_with_owner
+  spi_mem_driver_unregister
+  spi_mem_exec_op
+  spi_mem_get_name
+  spi_mem_supports_op
+  spi_register_controller
+  __spi_register_driver
+  spi_setup
+  spi_sync
+  spi_unregister_controller
+  sprintf
+  sscanf
+  __stack_chk_fail
+  static_key_slow_dec
+  static_key_slow_inc
+  strcasecmp
+  strcat
+  strchr
+  strcmp
+  strcpy
+  stream_open
+  strim
+  string_get_size
+  strlcat
+  strlen
+  strncasecmp
+  strncat
+  strncmp
+  strncpy
+  strncpy_from_user
+  strnlen
+  strpbrk
+  strrchr
+  strscpy
+  strsep
+  strstr
+  __sw_hweight16
+  __sw_hweight32
+  __sw_hweight64
+  __sw_hweight8
+  sync_file_create
+  sync_file_get_fence
+  synchronize_irq
+  synchronize_net
+  synchronize_rcu
+  syscon_node_to_regmap
+  syscon_regmap_lookup_by_compatible
+  syscon_regmap_lookup_by_phandle
+  syscon_regmap_lookup_by_phandle_optional
+  sysfs_create_file_ns
+  sysfs_create_files
+  sysfs_create_group
+  sysfs_create_groups
+  sysfs_create_link
+  sysfs_emit
+  __sysfs_match_string
+  sysfs_notify
+  sysfs_remove_file_ns
+  sysfs_remove_files
+  sysfs_remove_group
+  sysfs_remove_link
+  sysrq_mask
+  system_freezable_wq
+  system_long_wq
+  system_power_efficient_wq
+  system_unbound_wq
+  system_wq
+  tasklet_init
+  tasklet_kill
+  __tasklet_schedule
+  tasklet_setup
+  tasklet_unlock_wait
+  thermal_cooling_device_unregister
+  thermal_of_cooling_device_register
+  thermal_of_zone_unregister
+  thermal_zone_bind_cooling_device
+  thermal_zone_device_update
+  timecounter_cyc2time
+  timecounter_init
+  timecounter_read
+  timer_of_init
+  timespec64_to_jiffies
+  _totalram_pages
+  touchscreen_parse_properties
+  touchscreen_report_pos
+  touch_softlockup_watchdog
+  trace_event_buffer_commit
+  trace_event_buffer_reserve
+  trace_event_printf
+  trace_event_raw_init
+  trace_event_reg
+  trace_handle_return
+  __traceiter_gpu_mem_total
+  __tracepoint_gpu_mem_total
+  trace_print_array_seq
+  trace_print_symbols_seq
+  trace_raw_output_prep
+  __trace_trigger_soft_disabled
+  try_module_get
+  try_wait_for_completion
+  tso_build_data
+  tso_build_hdr
+  tso_count_descs
+  tso_start
+  tty_flip_buffer_push
+  tty_get_frame_size
+  __tty_insert_flip_char
+  tty_insert_flip_string_fixed_flag
+  tty_kref_put
+  tty_port_tty_get
+  tty_termios_baud_rate
+  tty_termios_encode_baud_rate
+  typec_switch_get_drvdata
+  typec_switch_register
+  typec_switch_unregister
+  uart_add_one_port
+  uart_console_device
+  uart_console_write
+  uart_get_baud_rate
+  uart_get_divisor
+  uart_get_rs485_mode
+  uart_handle_cts_change
+  uart_handle_dcd_change
+  uart_parse_options
+  uart_register_driver
+  uart_remove_one_port
+  uart_resume_port
+  uart_set_options
+  uart_suspend_port
+  uart_try_toggle_sysrq
+  uart_unregister_driver
+  uart_update_timeout
+  uart_write_wakeup
+  __udelay
+  unpin_user_page
+  unpin_user_pages
+  unregister_candev
+  __unregister_chrdev
+  unregister_chrdev_region
+  unregister_inet6addr_notifier
+  unregister_inetaddr_notifier
+  unregister_netdev
+  unregister_netdevice_many
+  unregister_netdevice_notifier
+  unregister_netdevice_queue
+  unregister_pernet_device
+  unregister_reboot_notifier
+  unregister_rpmsg_driver
+  unregister_virtio_device
+  unregister_virtio_driver
+  up
+  up_read
+  up_write
+  usb_add_gadget
+  usb_add_gadget_udc
+  usb_add_hcd
+  usb_add_phy_dev
+  __usb_create_hcd
+  usb_debug_root
+  usb_decode_ctrl
+  usb_del_gadget
+  usb_del_gadget_udc
+  usb_disabled
+  usb_ep_alloc_request
+  usb_ep_clear_halt
+  usb_ep_disable
+  usb_ep_enable
+  usb_ep_fifo_flush
+  usb_ep_free_request
+  usb_ep_set_halt
+  usb_ep_set_maxpacket_limit
+  usb_gadget_connect
+  usb_gadget_disconnect
+  usb_gadget_giveback_request
+  usb_gadget_map_request_by_dev
+  usb_gadget_set_state
+  usb_gadget_udc_reset
+  usb_gadget_unmap_request
+  usb_gadget_unmap_request_by_dev
+  usb_gadget_vbus_connect
+  usb_gadget_vbus_disconnect
+  usb_get_dr_mode
+  usb_get_maximum_speed
+  usb_hcd_irq
+  usb_hcd_is_primary_hcd
+  usb_hcd_map_urb_for_dma
+  usb_hcd_unmap_urb_for_dma
+  usb_initialize_gadget
+  usb_phy_set_charger_current
+  usb_phy_set_charger_state
+  usb_phy_set_event
+  usb_put_hcd
+  usb_remove_hcd
+  usb_remove_phy
+  usb_role_switch_get_drvdata
+  usb_role_switch_register
+  usb_role_switch_unregister
+  usb_speed_string
+  usb_udc_vbus_handler
+  __usecs_to_jiffies
+  usleep_range_state
+  v4l2_ctrl_auto_cluster
+  v4l2_ctrl_handler_free
+  v4l2_ctrl_handler_init_class
+  v4l2_ctrl_handler_setup
+  __v4l2_ctrl_modify_range
+  v4l2_ctrl_new_custom
+  v4l2_ctrl_new_fwnode_properties
+  v4l2_ctrl_new_int_menu
+  v4l2_ctrl_new_std
+  v4l2_ctrl_new_std_menu
+  v4l2_ctrl_new_std_menu_items
+  v4l2_ctrl_poll
+  __v4l2_ctrl_s_ctrl
+  __v4l2_ctrl_s_ctrl_int64
+  v4l2_ctrl_subdev_log_status
+  v4l2_ctrl_subdev_subscribe_event
+  v4l2_ctrl_subscribe_event
+  v4l2_device_register
+  v4l2_device_register_subdev
+  __v4l2_device_register_subdev_nodes
+  v4l2_device_unregister
+  v4l2_device_unregister_subdev
+  v4l2_event_dequeue
+  v4l2_event_pending
+  v4l2_event_queue
+  v4l2_event_queue_fh
+  v4l2_event_subdev_unsubscribe
+  v4l2_event_subscribe
+  v4l2_event_unsubscribe
+  v4l2_fh_add
+  v4l2_fh_del
+  v4l2_fh_exit
+  v4l2_fh_init
+  v4l2_fh_open
+  __v4l2_find_nearest_size
+  v4l2_get_link_freq
+  v4l2_g_parm_cap
+  v4l2_i2c_subdev_init
+  v4l2_m2m_buf_copy_metadata
+  v4l2_m2m_buf_queue
+  v4l2_m2m_buf_remove
+  v4l2_m2m_buf_remove_by_buf
+  v4l2_m2m_ctx_init
+  v4l2_m2m_ctx_release
+  v4l2_m2m_fop_mmap
+  v4l2_m2m_fop_poll
+  v4l2_m2m_get_curr_priv
+  v4l2_m2m_get_vq
+  v4l2_m2m_init
+  v4l2_m2m_ioctl_create_bufs
+  v4l2_m2m_ioctl_decoder_cmd
+  v4l2_m2m_ioctl_dqbuf
+  v4l2_m2m_ioctl_encoder_cmd
+  v4l2_m2m_ioctl_expbuf
+  v4l2_m2m_ioctl_prepare_buf
+  v4l2_m2m_ioctl_qbuf
+  v4l2_m2m_ioctl_querybuf
+  v4l2_m2m_ioctl_reqbufs
+  v4l2_m2m_ioctl_streamoff
+  v4l2_m2m_ioctl_streamon
+  v4l2_m2m_ioctl_try_decoder_cmd
+  v4l2_m2m_ioctl_try_encoder_cmd
+  v4l2_m2m_job_finish
+  v4l2_m2m_last_buffer_done
+  v4l2_m2m_next_buf
+  v4l2_m2m_register_media_controller
+  v4l2_m2m_release
+  v4l2_m2m_resume
+  v4l2_m2m_suspend
+  v4l2_m2m_unregister_media_controller
+  v4l2_m2m_update_start_streaming_state
+  v4l2_m2m_update_stop_streaming_state
+  v4l2_s_parm_cap
+  v4l2_src_change_event_subscribe
+  v4l2_subdev_call_wrappers
+  v4l2_subdev_init
+  v4l2_subdev_link_validate
+  v4l_bound_align_image
+  vb2_buffer_done
+  vb2_create_bufs
+  vb2_dma_contig_memops
+  vb2_dqbuf
+  vb2_expbuf
+  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_mmap
+  vb2_ops_wait_finish
+  vb2_ops_wait_prepare
+  vb2_plane_cookie
+  vb2_plane_vaddr
+  vb2_poll
+  vb2_prepare_buf
+  vb2_qbuf
+  vb2_querybuf
+  vb2_queue_error
+  vb2_queue_init
+  vb2_queue_release
+  vb2_read
+  vb2_reqbufs
+  vb2_streamoff
+  vb2_streamon
+  vb2_vmalloc_memops
+  vchan_dma_desc_free_list
+  vchan_find_desc
+  vchan_init
+  vchan_tx_desc_free
+  vchan_tx_submit
+  verify_pkcs7_signature
+  vfree
+  video_devdata
+  video_device_alloc
+  video_device_release
+  video_device_release_empty
+  video_ioctl2
+  videomode_from_timing
+  __video_register_device
+  video_unregister_device
+  virtio_check_driver_offered_feature
+  virtio_reset_device
+  virtqueue_add_inbuf
+  virtqueue_add_outbuf
+  virtqueue_detach_unused_buf
+  virtqueue_disable_cb
+  virtqueue_enable_cb
+  virtqueue_get_buf
+  virtqueue_get_vring_size
+  virtqueue_kick
+  virtqueue_kick_prepare
+  virtqueue_notify
+  __vmalloc
+  vmalloc
+  vmalloc_to_page
+  vmap
+  vma_set_file
+  vm_get_page_prot
+  vm_insert_page
+  vm_iomap_memory
+  vm_mmap
+  vm_munmap
+  vm_zone_stat
+  vprintk
+  vring_del_virtqueue
+  vring_interrupt
+  vring_new_virtqueue
+  vsnprintf
+  vunmap
+  vzalloc
+  wait_for_completion
+  wait_for_completion_interruptible
+  wait_for_completion_interruptible_timeout
+  wait_for_completion_timeout
+  wait_woken
+  __wake_up
+  wake_up_process
+  wakeup_source_add
+  wakeup_source_register
+  wakeup_source_remove
+  wakeup_source_unregister
+  __warn_printk
+  watchdog_init_timeout
+  watchdog_set_restart_priority
+  wireless_nlevent_flush
+  wireless_send_event
+  woken_wake_function
+  ww_mutex_lock
+  ww_mutex_lock_interruptible
+  ww_mutex_unlock
+  __xa_alloc
+  xa_destroy
+  xa_erase
+  xa_find
+  xa_find_after
+  xa_store
+  xdp_convert_zc_to_xdp_frame
+  xdp_do_flush
+  xdp_do_redirect
+  xdp_master_redirect
+  xdp_return_frame
+  xdp_rxq_info_is_reg
+  __xdp_rxq_info_reg
+  xdp_rxq_info_reg_mem_model
+  xdp_rxq_info_unreg
+  xdp_warn
diff --git a/android/abi_gki_aarch64_mtk b/android/abi_gki_aarch64_mtk
new file mode 100644
index 0000000..f3af0c1
--- /dev/null
+++ b/android/abi_gki_aarch64_mtk
@@ -0,0 +1,3180 @@
+[abi_symbol_list]
+  access_process_vm
+  activate_task
+  addrconf_add_linklocal
+  addrconf_prefix_rcv_add_addr
+  add_timer
+  add_uevent_var
+  add_wait_queue
+  add_wait_queue_exclusive
+  adjust_managed_page_count
+  aes_encrypt
+  aes_expandkey
+  alarm_cancel
+  alarm_init
+  alarm_start
+  alarm_start_relative
+  alarm_try_to_cancel
+  alloc_chrdev_region
+  alloc_etherdev_mqs
+  alloc_io_pgtable_ops
+  alloc_netdev_mqs
+  __alloc_pages
+  alloc_pages_exact
+  __alloc_percpu
+  __alloc_percpu_gfp
+  __alloc_skb
+  alloc_workqueue
+  all_vm_events
+  alt_cb_patch_nops
+  android_rvh_probe_register
+  anon_inode_getfd
+  anon_inode_getfile
+  __arch_clear_user
+  __arch_copy_from_user
+  __arch_copy_to_user
+  arch_freq_scale
+  arch_timer_read_counter
+  arm64_use_ng_mappings
+  arm_smccc_1_1_get_conduit
+  arm_smccc_1_2_hvc
+  arm_smccc_1_2_smc
+  arm_smccc_get_version
+  __arm_smccc_hvc
+  __arm_smccc_smc
+  arp_tbl
+  async_schedule_node
+  atomic_notifier_call_chain
+  atomic_notifier_chain_register
+  atomic_notifier_chain_unregister
+  autoremove_wake_function
+  available_idle_cpu
+  balance_push_callback
+  bcmp
+  bdev_end_io_acct
+  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
+  __bitmap_clear
+  __bitmap_complement
+  __bitmap_equal
+  bitmap_find_free_region
+  bitmap_find_next_zero_area_off
+  bitmap_free
+  bitmap_from_arr32
+  __bitmap_intersects
+  __bitmap_or
+  bitmap_parse
+  bitmap_print_to_pagebuf
+  bitmap_release_region
+  __bitmap_set
+  __bitmap_subset
+  __bitmap_weight
+  __bitmap_xor
+  bitmap_zalloc
+  bit_wait
+  bit_wait_timeout
+  __blk_alloc_disk
+  blkdev_get_by_dev
+  blkdev_put
+  blk_mq_unique_tag
+  blk_queue_flag_clear
+  blk_queue_flag_set
+  blk_queue_io_min
+  blk_queue_io_opt
+  blk_queue_logical_block_size
+  blk_queue_max_discard_sectors
+  blk_queue_max_write_zeroes_sectors
+  blk_queue_physical_block_size
+  blocking_notifier_call_chain
+  blocking_notifier_chain_register
+  blocking_notifier_chain_unregister
+  bpf_trace_run10
+  bpf_trace_run11
+  bpf_trace_run12
+  bpf_trace_run1
+  bpf_trace_run2
+  bpf_trace_run3
+  bpf_trace_run4
+  bpf_trace_run5
+  bpf_trace_run6
+  bpf_trace_run7
+  bpf_trace_run8
+  bpf_trace_run9
+  build_skb
+  bus_find_device
+  bus_for_each_dev
+  bus_register
+  bus_unregister
+  cache_line_size
+  call_netdevice_notifiers
+  call_rcu
+  cancel_delayed_work
+  cancel_delayed_work_sync
+  cancel_work_sync
+  capable
+  cdc_parse_cdc_header
+  cdev_add
+  cdev_alloc
+  cdev_del
+  cdev_device_add
+  cdev_device_del
+  cdev_init
+  cgroup_taskset_first
+  cgroup_taskset_next
+  __check_object_size
+  check_preempt_curr
+  __class_create
+  class_destroy
+  class_dev_iter_exit
+  class_dev_iter_init
+  class_dev_iter_next
+  class_find_device
+  class_for_each_device
+  __class_register
+  class_unregister
+  clear_page
+  __ClearPageMovable
+  clk_bulk_disable
+  clk_bulk_enable
+  clk_bulk_prepare
+  clk_bulk_put
+  clk_bulk_put_all
+  clk_bulk_unprepare
+  clk_disable
+  clk_divider_ops
+  clk_enable
+  clk_gate_ops
+  clk_get
+  __clk_get_hw
+  __clk_get_name
+  clk_get_parent
+  clk_get_rate
+  clk_hw_get_name
+  clk_hw_get_num_parents
+  clk_hw_get_parent
+  clk_hw_get_parent_by_index
+  clk_hw_get_parent_index
+  clk_hw_get_rate
+  clk_hw_is_enabled
+  clk_hw_is_prepared
+  clk_hw_round_rate
+  clk_hw_set_parent
+  __clk_is_enabled
+  clk_is_match
+  __clk_mux_determine_rate_closest
+  clk_mux_ops
+  clk_notifier_register
+  clk_prepare
+  clk_put
+  clk_register
+  clk_register_composite
+  clk_register_divider_table
+  clk_register_fixed_factor
+  clk_register_fixed_rate
+  clk_set_parent
+  clk_set_rate
+  clk_unprepare
+  clockevents_config_and_register
+  clocks_calc_mult_shift
+  clocksource_mmio_init
+  clocksource_mmio_readl_up
+  close_fd
+  cma_alloc
+  cma_release
+  compat_ptr_ioctl
+  complete
+  complete_all
+  completion_done
+  component_add
+  component_add_typed
+  component_bind_all
+  component_del
+  component_master_add_with_match
+  component_master_del
+  component_match_add_release
+  component_match_add_typed
+  component_unbind_all
+  config_ep_by_speed
+  config_group_init_type_name
+  console_drivers
+  console_suspend_enabled
+  __const_udelay
+  consume_skb
+  contig_page_data
+  _copy_from_iter
+  copy_from_kernel_nofault
+  __copy_overflow
+  _copy_to_iter
+  __cpu_active_mask
+  cpu_all_bits
+  cpu_bit_bitmap
+  cpufreq_add_update_util_hook
+  cpufreq_cpu_get
+  cpufreq_cpu_put
+  cpufreq_disable_fast_switch
+  cpufreq_driver_fast_switch
+  cpufreq_driver_resolve_freq
+  __cpufreq_driver_target
+  cpufreq_enable_fast_switch
+  cpufreq_generic_attr
+  cpufreq_generic_frequency_table_verify
+  cpufreq_get_policy
+  cpufreq_policy_transition_delay_us
+  cpufreq_quick_get
+  cpufreq_register_driver
+  cpufreq_register_governor
+  cpufreq_remove_update_util_hook
+  cpufreq_table_index_unsorted
+  cpufreq_this_cpu_can_update
+  cpufreq_unregister_driver
+  cpufreq_unregister_governor
+  cpufreq_update_limits
+  cpu_hotplug_disable
+  cpu_hotplug_enable
+  __cpuhp_remove_state
+  __cpuhp_setup_state
+  __cpuhp_state_add_instance
+  __cpuhp_state_remove_instance
+  cpu_hwcaps
+  cpuidle_driver_state_disabled
+  cpuidle_get_driver
+  cpuidle_governor_latency_req
+  cpuidle_pause_and_lock
+  cpuidle_register_governor
+  cpuidle_resume_and_unlock
+  cpu_latency_qos_add_request
+  cpu_latency_qos_remove_request
+  cpu_latency_qos_update_request
+  cpumask_any_and_distribute
+  cpu_number
+  __cpu_online_mask
+  cpu_pm_register_notifier
+  cpu_pm_unregister_notifier
+  __cpu_possible_mask
+  __cpu_present_mask
+  cpupri_find_fitness
+  cpu_scale
+  cpus_read_lock
+  cpus_read_unlock
+  cpu_subsys
+  cpu_topology
+  crc16
+  crc32_be
+  crc32_le
+  crc8
+  crc8_populate_msb
+  crc_ccitt
+  crypto_aead_decrypt
+  crypto_aead_encrypt
+  crypto_aead_setauthsize
+  crypto_aead_setkey
+  crypto_alloc_aead
+  crypto_alloc_base
+  crypto_alloc_kpp
+  crypto_alloc_shash
+  crypto_alloc_skcipher
+  crypto_alloc_sync_skcipher
+  crypto_comp_compress
+  crypto_comp_decompress
+  crypto_default_rng
+  crypto_destroy_tfm
+  crypto_ecdh_encode_key
+  crypto_ecdh_key_len
+  crypto_get_default_rng
+  crypto_has_ahash
+  crypto_has_alg
+  __crypto_memneq
+  crypto_put_default_rng
+  crypto_shash_digest
+  crypto_shash_final
+  crypto_shash_finup
+  crypto_shash_setkey
+  crypto_shash_tfm_digest
+  crypto_shash_update
+  crypto_skcipher_decrypt
+  crypto_skcipher_encrypt
+  crypto_skcipher_setkey
+  __crypto_xor
+  css_next_child
+  csum_ipv6_magic
+  csum_partial
+  ct_idle_enter
+  ct_idle_exit
+  _ctype
+  dapm_clock_event
+  dapm_kcontrol_get_value
+  dapm_regulator_event
+  datagram_poll
+  deactivate_task
+  debugfs_attr_read
+  debugfs_attr_write
+  debugfs_create_atomic_t
+  debugfs_create_blob
+  debugfs_create_bool
+  debugfs_create_devm_seqfile
+  debugfs_create_dir
+  debugfs_create_file
+  debugfs_create_regset32
+  debugfs_create_symlink
+  debugfs_create_u16
+  debugfs_create_u32
+  debugfs_create_u64
+  debugfs_create_u8
+  debugfs_create_x32
+  debugfs_lookup
+  debugfs_remove
+  debugfs_rename
+  dec_zone_page_state
+  default_llseek
+  default_wake_function
+  delayed_work_timer_fn
+  del_gendisk
+  del_timer
+  del_timer_sync
+  desc_to_gpio
+  destroy_workqueue
+  dev_add_pack
+  dev_addr_mod
+  dev_alloc_name
+  dev_base_lock
+  dev_change_flags
+  __dev_change_net_namespace
+  dev_close
+  dev_close_many
+  dev_coredumpv
+  dev_driver_string
+  _dev_err
+  dev_err_probe
+  dev_fetch_sw_netstats
+  devfreq_add_device
+  devfreq_add_governor
+  devfreq_cooling_unregister
+  devfreq_get_devfreq_by_phandle
+  devfreq_monitor_resume
+  devfreq_monitor_start
+  devfreq_monitor_stop
+  devfreq_monitor_suspend
+  devfreq_recommended_opp
+  devfreq_register_opp_notifier
+  devfreq_remove_device
+  devfreq_remove_governor
+  devfreq_resume_device
+  devfreq_suspend_device
+  devfreq_unregister_opp_notifier
+  devfreq_update_interval
+  dev_fwnode
+  dev_getbyhwaddr_rcu
+  __dev_get_by_index
+  dev_get_by_index
+  dev_get_by_index_rcu
+  __dev_get_by_name
+  dev_get_by_name
+  dev_getfirstbyhwtype
+  dev_get_flags
+  dev_get_regmap
+  dev_get_stats
+  dev_get_tstats64
+  device_add
+  device_add_disk
+  device_attach
+  device_create
+  device_create_bin_file
+  device_create_file
+  device_create_managed_software_node
+  device_create_with_groups
+  device_del
+  device_destroy
+  device_find_child
+  device_for_each_child
+  device_get_child_node_count
+  device_get_match_data
+  device_get_next_child_node
+  device_initialize
+  device_link_add
+  device_link_remove
+  device_match_any
+  device_match_fwnode
+  device_match_name
+  device_move
+  device_node_to_regmap
+  device_property_present
+  device_property_read_string
+  device_property_read_u32_array
+  device_property_read_u8_array
+  device_register
+  device_release_driver
+  device_remove_bin_file
+  device_remove_file
+  device_rename
+  __device_reset
+  device_set_of_node_from_dev
+  device_set_wakeup_capable
+  device_set_wakeup_enable
+  device_show_bool
+  device_store_bool
+  device_unregister
+  device_wakeup_disable
+  device_wakeup_enable
+  _dev_info
+  __dev_kfree_skb_any
+  __dev_kfree_skb_irq
+  dev_load
+  devm_add_action
+  __devm_alloc_percpu
+  devm_backlight_device_register
+  devm_bitmap_zalloc
+  devm_blk_crypto_profile_init
+  devm_clk_bulk_get
+  devm_clk_bulk_get_all
+  devm_clk_bulk_get_optional
+  devm_clk_get
+  devm_clk_get_optional
+  devm_clk_put
+  devm_clk_register
+  dev_mc_sync
+  dev_mc_unsync
+  devm_devfreq_add_device
+  devm_devfreq_register_notifier
+  devm_devfreq_remove_device
+  devm_devfreq_unregister_notifier
+  devm_extcon_dev_allocate
+  devm_extcon_dev_register
+  devm_extcon_register_notifier
+  devm_free_irq
+  devm_fwnode_pwm_get
+  devm_gpiochip_add_data_with_key
+  devm_gpiod_get
+  devm_gpiod_get_index
+  devm_gpiod_get_optional
+  devm_gpiod_put
+  devm_gpio_request
+  devm_gpio_request_one
+  devm_hwrng_register
+  devm_i2c_new_dummy_device
+  devm_iio_channel_get
+  devm_iio_channel_get_all
+  devm_iio_device_alloc
+  __devm_iio_device_register
+  devm_input_allocate_device
+  devm_ioremap
+  devm_ioremap_resource
+  devm_ioremap_wc
+  devm_iounmap
+  devm_kasprintf
+  devm_kfree
+  devm_kmalloc
+  devm_kstrdup
+  devm_led_classdev_register_ext
+  devm_led_classdev_unregister
+  devm_mbox_controller_register
+  devm_memremap
+  devm_mfd_add_devices
+  devm_nvmem_cell_get
+  devm_nvmem_device_get
+  devm_nvmem_register
+  devm_of_icc_get
+  devm_of_phy_get_by_index
+  __devm_of_phy_provider_register
+  devm_of_platform_populate
+  devm_pci_alloc_host_bridge
+  devm_phy_create
+  devm_phy_get
+  devm_phy_optional_get
+  devm_pinctrl_get
+  devm_pinctrl_put
+  devm_pinctrl_register_and_init
+  devm_platform_get_and_ioremap_resource
+  devm_platform_ioremap_resource
+  devm_platform_ioremap_resource_byname
+  devm_power_supply_get_by_phandle
+  devm_power_supply_register
+  devm_rc_allocate_device
+  devm_rc_register_device
+  devm_regmap_add_irq_chip
+  devm_regmap_field_alloc
+  devm_regmap_field_bulk_alloc
+  __devm_regmap_init
+  __devm_regmap_init_i2c
+  __devm_regmap_init_mmio_clk
+  __devm_regmap_init_spmi_ext
+  devm_regulator_bulk_get
+  devm_regulator_get
+  devm_regulator_get_exclusive
+  devm_regulator_get_optional
+  devm_regulator_put
+  devm_regulator_register
+  devm_regulator_register_notifier
+  devm_regulator_unregister_notifier
+  devm_request_threaded_irq
+  __devm_reset_control_get
+  devm_reset_controller_register
+  devm_rtc_allocate_device
+  devm_rtc_nvmem_register
+  __devm_rtc_register_device
+  devm_snd_soc_register_card
+  devm_snd_soc_register_component
+  devm_spi_register_controller
+  devm_thermal_of_zone_register
+  devm_thermal_of_zone_unregister
+  devm_watchdog_register_device
+  dev_nit_active
+  _dev_notice
+  dev_pm_clear_wake_irq
+  dev_pm_domain_attach_by_id
+  dev_pm_domain_attach_by_name
+  dev_pm_domain_detach
+  dev_pm_genpd_add_notifier
+  dev_pm_genpd_set_performance_state
+  dev_pm_opp_add
+  dev_pm_opp_clear_config
+  dev_pm_opp_find_freq_ceil
+  dev_pm_opp_find_freq_exact
+  dev_pm_opp_find_freq_floor
+  dev_pm_opp_get_freq
+  dev_pm_opp_get_level
+  dev_pm_opp_get_opp_count
+  dev_pm_opp_get_opp_table
+  dev_pm_opp_get_voltage
+  dev_pm_opp_of_add_table
+  dev_pm_opp_of_add_table_indexed
+  dev_pm_opp_of_remove_table
+  dev_pm_opp_put
+  dev_pm_opp_put_opp_table
+  dev_pm_opp_remove_all_dynamic
+  dev_pm_opp_set_config
+  dev_pm_qos_add_notifier
+  dev_pm_qos_remove_notifier
+  dev_pm_qos_update_request
+  dev_pm_set_dedicated_wake_irq_reverse
+  _dev_printk
+  __dev_queue_xmit
+  dev_remove_pack
+  devres_add
+  __devres_alloc_node
+  devres_free
+  devres_release
+  dev_set_allmulti
+  dev_set_mac_address
+  dev_set_mtu
+  dev_set_name
+  dev_set_promiscuity
+  dev_uc_add
+  dev_uc_del
+  dev_uc_sync
+  dev_uc_unsync
+  _dev_warn
+  disable_irq
+  disable_irq_nosync
+  disable_percpu_irq
+  dma_alloc_attrs
+  dma_alloc_pages
+  dma_async_device_register
+  dma_async_device_unregister
+  dma_async_tx_descriptor_init
+  dma_buf_attach
+  dma_buf_begin_cpu_access
+  dma_buf_detach
+  dma_buf_end_cpu_access
+  dma_buf_end_cpu_access_partial
+  dma_buf_export
+  dma_buf_fd
+  dma_buf_get
+  dma_buf_get_each
+  dma_buf_map_attachment
+  dma_buf_mmap
+  dmabuf_page_pool_alloc
+  dmabuf_page_pool_create
+  dmabuf_page_pool_destroy
+  dmabuf_page_pool_free
+  dma_buf_put
+  dma_buf_unmap_attachment
+  dma_buf_vmap
+  dma_buf_vunmap
+  dma_contiguous_default_area
+  dma_fence_add_callback
+  dma_fence_array_create
+  dma_fence_array_ops
+  dma_fence_context_alloc
+  dma_fence_default_wait
+  dma_fence_free
+  dma_fence_get_status
+  dma_fence_init
+  dma_fence_release
+  dma_fence_remove_callback
+  dma_fence_signal
+  dma_fence_signal_locked
+  dma_fence_signal_timestamp_locked
+  dma_fence_wait_timeout
+  dma_free_attrs
+  dma_free_pages
+  dma_get_sgtable_attrs
+  dma_heap_add
+  dma_heap_buffer_alloc
+  dma_heap_bufferfd_alloc
+  dma_heap_buffer_free
+  dma_heap_find
+  dma_heap_get_dev
+  dma_heap_get_drvdata
+  dma_heap_get_name
+  dma_heap_put
+  dmam_alloc_attrs
+  dma_map_page_attrs
+  dma_map_resource
+  dma_map_sg_attrs
+  dma_map_sgtable
+  dmam_free_coherent
+  dma_mmap_attrs
+  dma_mmap_pages
+  dma_pool_alloc
+  dma_pool_create
+  dma_pool_destroy
+  dma_pool_free
+  dma_resv_add_fence
+  dma_resv_iter_first_unlocked
+  dma_resv_iter_next_unlocked
+  dma_resv_reserve_fences
+  dma_run_dependencies
+  dma_set_coherent_mask
+  dma_set_mask
+  dma_sync_sg_for_cpu
+  dma_sync_sg_for_device
+  dma_sync_single_for_cpu
+  dma_sync_single_for_device
+  dma_unmap_page_attrs
+  dma_unmap_resource
+  dma_unmap_sg_attrs
+  do_trace_netlink_extack
+  double_rq_lock
+  do_wait_intr_irq
+  down
+  downgrade_write
+  down_interruptible
+  down_killable
+  down_read
+  down_read_killable
+  down_read_trylock
+  down_timeout
+  down_trylock
+  down_write
+  down_write_killable
+  d_path
+  dput
+  drain_workqueue
+  driver_attach
+  driver_create_file
+  driver_find_device
+  driver_register
+  driver_remove_file
+  driver_unregister
+  drm_add_edid_modes
+  drm_add_modes_noedid
+  drm_atomic_add_affected_connectors
+  drm_atomic_get_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_check
+  drm_atomic_helper_check_plane_state
+  drm_atomic_helper_cleanup_planes
+  drm_atomic_helper_commit_modeset_disables
+  drm_atomic_helper_commit_modeset_enables
+  drm_atomic_helper_commit_planes
+  drm_atomic_helper_connector_destroy_state
+  drm_atomic_helper_connector_duplicate_state
+  drm_atomic_helper_connector_reset
+  __drm_atomic_helper_crtc_destroy_state
+  __drm_atomic_helper_crtc_duplicate_state
+  drm_atomic_helper_damage_iter_init
+  drm_atomic_helper_damage_iter_next
+  drm_atomic_helper_disable_plane
+  drm_atomic_helper_page_flip
+  __drm_atomic_helper_plane_destroy_state
+  __drm_atomic_helper_plane_duplicate_state
+  drm_atomic_helper_prepare_planes
+  __drm_atomic_helper_private_obj_duplicate_state
+  drm_atomic_helper_resume
+  drm_atomic_helper_set_config
+  drm_atomic_helper_shutdown
+  drm_atomic_helper_suspend
+  drm_atomic_helper_swap_state
+  drm_atomic_helper_update_plane
+  drm_atomic_helper_wait_for_vblanks
+  drm_atomic_private_obj_fini
+  drm_atomic_private_obj_init
+  drm_atomic_state_clear
+  drm_atomic_state_default_release
+  __drm_atomic_state_free
+  drm_atomic_state_init
+  drm_bridge_attach
+  drm_calc_timestamping_constants
+  drm_compat_ioctl
+  drm_connector_attach_encoder
+  drm_connector_cleanup
+  drm_connector_init
+  drm_connector_register
+  drm_connector_unregister
+  drm_connector_update_edid_property
+  drm_crtc_add_crc_entry
+  drm_crtc_cleanup
+  __drm_crtc_commit_free
+  drm_crtc_commit_wait
+  drm_crtc_handle_vblank
+  drm_crtc_init_with_planes
+  drm_crtc_send_vblank_event
+  drm_crtc_vblank_get
+  drm_crtc_vblank_off
+  drm_crtc_vblank_on
+  drm_crtc_vblank_put
+  drm_crtc_wait_one_vblank
+  ___drm_dbg
+  __drm_debug
+  drm_detect_monitor_audio
+  drm_dev_alloc
+  __drm_dev_dbg
+  drm_dev_printk
+  drm_dev_put
+  drm_dev_register
+  drm_dev_unregister
+  drm_display_mode_from_cea_vic
+  drm_display_mode_to_videomode
+  drm_edid_duplicate
+  drm_edid_get_monitor_name
+  drm_edid_to_sad
+  drm_encoder_cleanup
+  drm_encoder_init
+  __drm_err
+  drm_format_info
+  drm_format_info_block_height
+  drm_format_info_block_width
+  drm_framebuffer_cleanup
+  drm_framebuffer_init
+  drm_framebuffer_lookup
+  drm_framebuffer_remove
+  drm_gem_create_mmap_offset
+  drm_gem_fb_get_obj
+  drm_gem_handle_create
+  drm_gem_mmap
+  drm_gem_mmap_obj
+  drm_gem_object_free
+  drm_gem_object_init
+  drm_gem_object_lookup
+  drm_gem_object_release
+  drm_gem_prime_fd_to_handle
+  drm_gem_prime_handle_to_fd
+  drm_gem_prime_import
+  drm_gem_prime_import_dev
+  drm_gem_private_object_init
+  drm_gem_vm_close
+  drm_gem_vm_open
+  drm_get_edid
+  drm_helper_hpd_irq_event
+  drm_helper_mode_fill_fb_struct
+  drm_helper_probe_single_connector_modes
+  drm_ioctl
+  drm_is_current_master
+  drm_kms_helper_hotplug_event
+  drm_kms_helper_poll_disable
+  drm_kms_helper_poll_enable
+  drm_kms_helper_poll_fini
+  drmm_mode_config_init
+  drm_mode_config_cleanup
+  drm_mode_config_reset
+  drm_mode_copy
+  drm_mode_crtc_set_gamma_size
+  drm_mode_duplicate
+  drm_mode_equal
+  drm_mode_object_find
+  drm_mode_object_put
+  drm_mode_probed_add
+  drm_mode_set_crtcinfo
+  drm_modeset_lock
+  drm_modeset_lock_single_interruptible
+  drm_mode_set_name
+  drm_modeset_unlock
+  drm_mode_vrefresh
+  drm_object_attach_property
+  drm_object_property_set_value
+  drm_open
+  drm_panel_add
+  drm_panel_disable
+  drm_panel_enable
+  drm_panel_get_modes
+  drm_panel_init
+  drm_panel_prepare
+  drm_panel_remove
+  drm_panel_unprepare
+  drm_plane_cleanup
+  drm_plane_create_alpha_property
+  drm_plane_create_blend_mode_property
+  drm_poll
+  drm_prime_gem_destroy
+  drm_prime_get_contiguous_size
+  drm_printf
+  __drm_printfn_debug
+  drm_property_blob_put
+  drm_property_create_blob
+  drm_property_create_range
+  drm_property_lookup_blob
+  drm_read
+  drm_release
+  drm_universal_plane_init
+  drm_vblank_init
+  drm_writeback_connector_init
+  drm_writeback_queue_job
+  drm_writeback_signal_completion
+  dst_cache_destroy
+  dst_cache_get
+  dst_cache_init
+  dst_cache_set_ip4
+  dst_cache_set_ip6
+  dst_release
+  dump_stack
+  em_cpu_get
+  em_dev_register_perf_domain
+  enable_irq
+  enable_percpu_irq
+  ether_setup
+  eth_header
+  eth_header_cache
+  eth_header_cache_update
+  eth_header_parse
+  eth_mac_addr
+  eth_platform_get_mac_address
+  ethtool_convert_legacy_u32_to_link_mode
+  ethtool_convert_link_mode_to_legacy_u32
+  __ethtool_get_link_ksettings
+  ethtool_op_get_link
+  ethtool_op_get_ts_info
+  eth_type_trans
+  eth_validate_addr
+  eventfd_ctx_do_read
+  eventfd_ctx_fdget
+  eventfd_ctx_fileget
+  eventfd_ctx_put
+  eventfd_ctx_remove_wait_queue
+  eventfd_signal
+  extcon_get_edev_by_phandle
+  extcon_get_state
+  extcon_set_state_sync
+  __fdget
+  fd_install
+  fget
+  file_path
+  filp_close
+  filp_open_block
+  _find_first_bit
+  _find_first_zero_bit
+  find_get_pid
+  _find_last_bit
+  _find_next_and_bit
+  _find_next_bit
+  _find_next_zero_bit
+  find_pid_ns
+  find_task_by_vpid
+  find_vma_intersection
+  find_vpid
+  finish_wait
+  firmware_request_nowarn
+  flush_dcache_page
+  flush_delayed_fput
+  flush_delayed_work
+  flush_work
+  __flush_workqueue
+  __folio_lock
+  __folio_put
+  folio_wait_bit
+  follow_pfn
+  font_vga_8x16
+  for_each_kernel_tracepoint
+  fortify_panic
+  fput
+  fqdir_exit
+  fqdir_init
+  frame_vector_create
+  frame_vector_destroy
+  frame_vector_to_pages
+  frame_vector_to_pfns
+  free_io_pgtable_ops
+  free_irq
+  free_netdev
+  __free_pages
+  free_pages
+  free_pages_exact
+  free_percpu
+  free_percpu_irq
+  freezer_active
+  freezing_slow_path
+  freq_qos_add_notifier
+  freq_qos_add_request
+  freq_qos_remove_notifier
+  freq_qos_remove_request
+  freq_qos_update_request
+  fs_bio_set
+  fsg_common_create_luns
+  fsg_common_set_cdev
+  fsg_common_set_inquiry_string
+  fsg_common_set_sysfs
+  fsg_config_from_params
+  fwnode_device_is_available
+  fwnode_get_name
+  fwnode_graph_get_next_endpoint
+  fwnode_graph_get_port_parent
+  fwnode_graph_get_remote_endpoint
+  fwnode_graph_get_remote_port_parent
+  fwnode_graph_parse_endpoint
+  fwnode_handle_get
+  fwnode_handle_put
+  fwnode_property_get_reference_args
+  fwnode_property_present
+  fwnode_property_read_string
+  fwnode_property_read_u32_array
+  fwnode_property_read_u64_array
+  fwnode_property_read_u8_array
+  fwnode_typec_mux_get
+  gcd
+  generic_device_group
+  generic_file_llseek
+  generic_handle_domain_irq
+  generic_handle_irq
+  genlmsg_multicast_allns
+  genlmsg_put
+  genl_register_family
+  genl_unregister_family
+  genphy_resume
+  gen_pool_add_owner
+  gen_pool_alloc_algo_owner
+  gen_pool_avail
+  gen_pool_best_fit
+  gen_pool_create
+  gen_pool_destroy
+  gen_pool_dma_alloc_align
+  gen_pool_dma_zalloc
+  gen_pool_dma_zalloc_align
+  gen_pool_first_fit_align
+  gen_pool_for_each_chunk
+  gen_pool_free_owner
+  gen_pool_has_addr
+  gen_pool_set_algo
+  gen_pool_size
+  gen_pool_virt_to_phys
+  get_cpu_device
+  get_cpu_idle_time
+  get_cpu_idle_time_us
+  get_cpu_iowait_time_us
+  get_device
+  __get_free_pages
+  get_governor_parent_kobj
+  get_kernel_pages
+  get_net_ns_by_fd
+  get_net_ns_by_pid
+  get_pid_task
+  get_random_bytes
+  get_random_u16
+  get_random_u32
+  __get_random_u32_below
+  get_random_u64
+  __get_task_comm
+  get_task_cred
+  get_task_mm
+  get_unused_fd_flags
+  get_user_ifreq
+  get_user_pages
+  get_user_pages_fast
+  get_user_pages_remote
+  get_vaddr_frames
+  get_zeroed_page
+  gfn_to_pfn_memslot
+  gic_nonsecure_priorities
+  gov_attr_set_get
+  gov_attr_set_init
+  gov_attr_set_put
+  governor_sysfs_ops
+  gpiochip_add_data_with_key
+  gpiochip_generic_free
+  gpiochip_generic_request
+  gpiochip_get_data
+  gpiochip_lock_as_irq
+  gpiochip_remove
+  gpiochip_unlock_as_irq
+  gpiod_direction_input
+  gpiod_direction_output
+  gpiod_direction_output_raw
+  gpiod_get_raw_value
+  gpiod_get_value
+  gpiod_get_value_cansleep
+  gpiod_set_debounce
+  gpiod_set_raw_value
+  gpiod_set_value
+  gpiod_set_value_cansleep
+  gpiod_to_irq
+  gpio_free
+  gpio_request
+  gpio_request_one
+  gpio_to_desc
+  gre_add_protocol
+  gre_del_protocol
+  handle_edge_irq
+  handle_fasteoi_irq
+  handle_level_irq
+  handle_nested_irq
+  handle_simple_irq
+  handle_sysrq
+  have_governor_per_policy
+  hex2bin
+  hex_asc
+  hex_asc_upper
+  hex_dump_to_buffer
+  hex_to_bin
+  hid_add_device
+  hid_allocate_device
+  hid_destroy_device
+  hid_ignore
+  hid_input_report
+  hid_parse_report
+  high_memory
+  housekeeping_cpumask
+  housekeeping_overridden
+  housekeeping_test_cpu
+  hrtimer_active
+  hrtimer_cancel
+  hrtimer_forward
+  __hrtimer_get_remaining
+  hrtimer_init
+  hrtimer_start_range_ns
+  hrtimer_try_to_cancel
+  __hw_addr_init
+  __hw_addr_sync
+  __hw_addr_unsync
+  i2c_add_adapter
+  i2c_del_adapter
+  i2c_del_driver
+  i2c_get_adapter
+  i2c_get_dma_safe_msg_buf
+  i2c_put_adapter
+  i2c_put_dma_safe_msg_buf
+  i2c_register_driver
+  i2c_smbus_read_byte_data
+  i2c_smbus_read_i2c_block_data
+  i2c_smbus_read_word_data
+  i2c_smbus_write_byte_data
+  i2c_smbus_write_i2c_block_data
+  i2c_smbus_write_word_data
+  i2c_transfer
+  i2c_transfer_buffer_flags
+  i2c_unregister_device
+  i2c_verify_client
+  I_BDEV
+  icc_link_create
+  icc_node_add
+  icc_node_create
+  icc_node_del
+  icc_node_destroy
+  icc_provider_add
+  icc_provider_del
+  icc_put
+  icc_set_bw
+  icc_sync_state
+  ida_alloc_range
+  ida_destroy
+  ida_free
+  idr_alloc
+  idr_alloc_u32
+  idr_destroy
+  idr_find
+  idr_for_each
+  idr_get_next
+  idr_get_next_ul
+  idr_remove
+  idr_replace
+  iio_alloc_pollfunc
+  iio_buffer_init
+  iio_buffer_put
+  iio_channel_get
+  iio_channel_release
+  iio_dealloc_pollfunc
+  iio_device_attach_buffer
+  iio_device_id
+  __iio_device_register
+  iio_device_unregister
+  iio_get_channel_type
+  iio_get_time_ns
+  iio_push_to_buffers
+  iio_read_channel_attribute
+  iio_read_channel_processed
+  iio_read_channel_raw
+  iio_trigger_notify_done
+  in6addr_any
+  inc_zone_page_state
+  in_egroup_p
+  inet6_csk_xmit
+  inet_csk_get_port
+  inet_frag_destroy
+  inet_frag_find
+  inet_frag_kill
+  inet_frag_queue_insert
+  inet_frag_reasm_finish
+  inet_frag_reasm_prepare
+  inet_frags_fini
+  inet_frags_init
+  init_dummy_netdev
+  init_net
+  __init_rwsem
+  init_srcu_struct
+  __init_swait_queue_head
+  init_task
+  init_timer_key
+  init_user_ns
+  init_uts_ns
+  init_wait_entry
+  __init_waitqueue_head
+  input_allocate_device
+  input_close_device
+  input_event
+  input_free_device
+  input_mt_destroy_slots
+  input_mt_init_slots
+  input_mt_report_slot_state
+  input_mt_sync_frame
+  input_open_device
+  input_register_device
+  input_register_handle
+  input_register_handler
+  input_reset_device
+  input_set_abs_params
+  input_set_capability
+  input_set_timestamp
+  input_unregister_device
+  input_unregister_handle
+  input_unregister_handler
+  int_sqrt
+  iomem_resource
+  iommu_alloc_resv_region
+  iommu_dev_disable_feature
+  iommu_device_register
+  iommu_device_sysfs_add
+  iommu_device_sysfs_remove
+  iommu_device_unregister
+  iommu_dma_get_resv_regions
+  iommu_fwspec_add_ids
+  iommu_fwspec_free
+  iommu_get_domain_for_dev
+  iommu_group_alloc
+  iommu_group_ref_get
+  iommu_iova_to_phys
+  iommu_map
+  iommu_map_sg
+  iommu_present
+  iommu_put_resv_regions
+  iommu_register_device_fault_handler
+  iommu_report_device_fault
+  iommu_unmap
+  ioremap_prot
+  iounmap
+  iov_iter_init
+  iov_iter_kvec
+  iov_iter_revert
+  ip6_dst_hoplimit
+  __ip_dev_find
+  ipi_desc_get
+  ip_local_out
+  ip_mc_join_group
+  ip_queue_xmit
+  ip_route_output_flow
+  __ip_select_ident
+  ip_send_check
+  __ipv6_addr_type
+  ipv6_dev_find
+  ipv6_skip_exthdr
+  ipv6_stub
+  __irq_apply_affinity_hint
+  irq_chip_ack_parent
+  irq_chip_mask_parent
+  irq_chip_unmask_parent
+  irq_create_mapping_affinity
+  irq_create_of_mapping
+  irq_dispose_mapping
+  __irq_domain_add
+  irq_domain_free_irqs_common
+  irq_domain_get_irq_data
+  irq_domain_remove
+  irq_domain_set_info
+  irq_domain_simple_ops
+  irq_domain_xlate_onetwocell
+  irq_domain_xlate_twocell
+  irq_get_irqchip_state
+  irq_get_irq_data
+  irq_modify_status
+  irq_of_parse_and_map
+  __irq_resolve_mapping
+  irq_set_affinity
+  irq_set_chained_handler_and_data
+  irq_set_chip
+  irq_set_chip_and_handler_name
+  irq_set_chip_data
+  irq_set_irqchip_state
+  irq_set_irq_type
+  irq_set_irq_wake
+  irq_set_parent
+  irq_to_desc
+  irq_work_queue
+  irq_work_queue_on
+  irq_work_run
+  irq_work_sync
+  is_dma_buf_file
+  is_vmalloc_addr
+  iterate_dir
+  iterate_fd
+  jiffies_64_to_clock_t
+  jiffies64_to_nsecs
+  jiffies
+  jiffies_to_msecs
+  jiffies_to_usecs
+  kasan_flag_enabled
+  kasprintf
+  kernel_accept
+  kernel_bind
+  kernel_connect
+  kernel_cpustat
+  kernel_kobj
+  kernel_listen
+  kernel_param_lock
+  kernel_param_unlock
+  kernel_power_off
+  kernel_restart
+  kernel_sendmsg
+  kernel_sigaction
+  kernel_sock_shutdown
+  kernfs_find_and_get_ns
+  kernfs_notify
+  kernfs_path_from_node
+  kernfs_put
+  key_create_or_update
+  key_put
+  keyring_alloc
+  __kfifo_alloc
+  __kfifo_free
+  __kfifo_from_user
+  __kfifo_in
+  __kfifo_init
+  __kfifo_out
+  __kfifo_to_user
+  kfree
+  kfree_const
+  kfree_sensitive
+  kfree_skb_list_reason
+  kfree_skb_partial
+  kfree_skb_reason
+  kimage_vaddr
+  kimage_voffset
+  __kmalloc
+  kmalloc_caches
+  kmalloc_large
+  kmalloc_large_node
+  __kmalloc_node
+  kmalloc_node_trace
+  __kmalloc_node_track_caller
+  kmalloc_trace
+  kmem_cache_alloc
+  kmem_cache_create
+  kmem_cache_create_usercopy
+  kmem_cache_destroy
+  kmem_cache_free
+  kmemdup
+  kmsg_dump_reason_str
+  kobject_add
+  kobject_create_and_add
+  kobject_del
+  kobject_get
+  kobject_init
+  kobject_init_and_add
+  kobject_put
+  kobject_uevent
+  kobject_uevent_env
+  krealloc
+  kstrdup
+  kstrdup_const
+  kstrdup_quotable_cmdline
+  kstrndup
+  kstrtobool
+  kstrtobool_from_user
+  kstrtoint
+  kstrtoint_from_user
+  kstrtol_from_user
+  kstrtoll
+  kstrtou16
+  kstrtou16_from_user
+  kstrtou8
+  kstrtouint
+  kstrtouint_from_user
+  kstrtoul_from_user
+  kstrtoull
+  kstrtoull_from_user
+  ksys_sync_helper
+  kthread_bind
+  kthread_bind_mask
+  kthread_cancel_delayed_work_sync
+  kthread_cancel_work_sync
+  kthread_create_on_node
+  kthread_create_worker
+  kthread_delayed_work_timer_fn
+  kthread_destroy_worker
+  kthread_flush_work
+  kthread_flush_worker
+  __kthread_init_worker
+  kthread_queue_delayed_work
+  kthread_queue_work
+  kthread_should_stop
+  kthread_stop
+  kthread_worker_fn
+  ktime_get
+  ktime_get_coarse_with_offset
+  ktime_get_mono_fast_ns
+  ktime_get_raw
+  ktime_get_raw_ts64
+  ktime_get_real_ts64
+  ktime_get_seconds
+  ktime_get_ts64
+  ktime_get_with_offset
+  kvasprintf_const
+  kvfree
+  kvfree_call_rcu
+  kvmalloc_node
+  led_classdev_flash_register_ext
+  led_classdev_flash_unregister
+  led_get_flash_fault
+  led_init_default_state_get
+  led_set_brightness_sync
+  led_set_flash_brightness
+  led_set_flash_timeout
+  led_sysfs_disable
+  led_sysfs_enable
+  led_trigger_event
+  led_trigger_register
+  led_trigger_remove
+  led_trigger_unregister
+  led_update_brightness
+  led_update_flash_brightness
+  linear_range_get_selector_within
+  linear_range_get_value
+  linkwatch_fire_event
+  __list_add_valid
+  __list_del_entry_valid
+  list_sort
+  __local_bh_enable_ip
+  lock_sock_nested
+  log_post_read_mmio
+  log_post_write_mmio
+  log_read_mmio
+  log_threaded_irq_wakeup_reason
+  log_write_mmio
+  loops_per_jiffy
+  mas_empty_area_rev
+  mas_find
+  match_hex
+  match_int
+  match_token
+  mbox_chan_received_data
+  mbox_client_txdone
+  mbox_controller_register
+  mbox_controller_unregister
+  mbox_free_channel
+  mbox_request_channel
+  mbox_send_message
+  mdiobus_alloc_size
+  mdiobus_free
+  mdiobus_get_phy
+  __mdiobus_register
+  mdiobus_unregister
+  media_create_ancillary_link
+  media_create_intf_link
+  media_create_pad_link
+  media_device_cleanup
+  media_device_init
+  __media_device_register
+  media_device_unregister
+  media_devnode_create
+  media_devnode_remove
+  __media_entity_next_link
+  media_entity_pads_init
+  media_entity_pipeline
+  media_entity_remove_links
+  media_pad_remote_pad_first
+  media_pad_remote_pad_unique
+  media_pipeline_start
+  media_pipeline_stop
+  media_request_get_by_fd
+  media_request_object_complete
+  media_request_put
+  memblock_end_of_DRAM
+  memchr
+  memchr_inv
+  memcmp
+  memcpy
+  __memcpy_fromio
+  __memcpy_toio
+  memdup_user
+  memmove
+  memory_read_from_buffer
+  memparse
+  memremap
+  memscan
+  mem_section
+  memset64
+  memset
+  __memset_io
+  memstart_addr
+  memunmap
+  migrate_swap
+  __migrate_task
+  mipi_dsi_attach
+  mipi_dsi_dcs_read
+  mipi_dsi_dcs_write
+  mipi_dsi_dcs_write_buffer
+  mipi_dsi_detach
+  mipi_dsi_driver_register_full
+  mipi_dsi_driver_unregister
+  mipi_dsi_generic_read
+  mipi_dsi_generic_write
+  mipi_dsi_host_register
+  mipi_dsi_host_unregister
+  misc_deregister
+  misc_register
+  mktime64
+  __mmap_lock_do_trace_acquire_returned
+  __mmap_lock_do_trace_released
+  __mmap_lock_do_trace_start_locking
+  mmc_add_host
+  mmc_alloc_host
+  mmc_can_gpio_cd
+  mmc_cmdq_disable
+  mmc_cmdq_enable
+  mmc_cqe_request_done
+  mmc_detect_change
+  mmc_free_host
+  mmc_get_card
+  mmc_get_ext_csd
+  mmc_gpio_get_cd
+  mmc_gpio_get_ro
+  mmc_hw_reset
+  mmc_of_parse
+  mmc_put_card
+  mmc_regulator_get_supply
+  mmc_regulator_set_ocr
+  mmc_regulator_set_vqmmc
+  mmc_remove_host
+  mmc_request_done
+  mmc_send_tuning
+  mmc_set_data_timeout
+  mmc_switch
+  mmc_wait_for_req
+  __mmdrop
+  mmput
+  mod_delayed_work_on
+  mod_node_page_state
+  mod_timer
+  mod_timer_pending
+  __module_get
+  module_layout
+  module_put
+  __module_put_and_kthread_exit
+  __msecs_to_jiffies
+  msi_get_virq
+  msleep
+  msleep_interruptible
+  mtree_load
+  mul_u64_u64_div_u64
+  __mutex_init
+  mutex_is_locked
+  mutex_lock
+  mutex_lock_interruptible
+  mutex_lock_killable
+  mutex_trylock
+  mutex_unlock
+  __napi_alloc_skb
+  napi_complete_done
+  napi_disable
+  napi_enable
+  napi_gro_flush
+  napi_gro_receive
+  __napi_schedule
+  __napi_schedule_irqoff
+  napi_schedule_prep
+  __ndisc_fill_addr_option
+  nd_tbl
+  neigh_destroy
+  neigh_lookup
+  __netdev_alloc_frag_align
+  __netdev_alloc_skb
+  netdev_err
+  netdev_info
+  netdev_name_in_use
+  netdev_notice
+  netdev_printk
+  netdev_set_default_ethtool_ops
+  netdev_update_features
+  netdev_upper_dev_link
+  netdev_upper_dev_unlink
+  netdev_warn
+  netif_carrier_off
+  netif_carrier_on
+  netif_device_attach
+  netif_device_detach
+  netif_inherit_tso_max
+  netif_napi_add_weight
+  __netif_napi_del
+  netif_receive_skb
+  netif_receive_skb_list
+  netif_rx
+  netif_set_tso_max_size
+  netif_stacked_transfer_operstate
+  netif_tx_lock
+  netif_tx_stop_all_queues
+  netif_tx_unlock
+  netif_tx_wake_queue
+  netlink_broadcast
+  netlink_capable
+  __netlink_dump_start
+  __netlink_kernel_create
+  netlink_kernel_release
+  netlink_net_capable
+  netlink_register_notifier
+  netlink_unicast
+  netlink_unregister_notifier
+  net_namespace_list
+  net_ns_type_operations
+  net_ratelimit
+  net_selftest
+  net_selftest_get_count
+  net_selftest_get_strings
+  nf_conntrack_destroy
+  nf_register_net_hooks
+  nf_unregister_net_hooks
+  nla_find
+  nla_memcpy
+  __nla_parse
+  nla_put_64bit
+  nla_put
+  nla_put_nohdr
+  nla_reserve
+  nla_strscpy
+  __nla_validate
+  __nlmsg_put
+  nonseekable_open
+  noop_llseek
+  nr_cpu_ids
+  nr_ipi_get
+  nr_irqs
+  nr_swap_pages
+  ns_capable
+  nsecs_to_jiffies
+  nsec_to_clock_t
+  ns_to_kernel_old_timeval
+  ns_to_timespec64
+  n_tty_ioctl_helper
+  __num_online_cpus
+  nvmem_cell_get
+  nvmem_cell_put
+  nvmem_cell_read
+  nvmem_cell_read_u32
+  nvmem_cell_read_variable_le_u32
+  nvmem_cell_write
+  nvmem_device_get
+  nvmem_device_put
+  nvmem_device_read
+  of_address_to_resource
+  of_alias_get_id
+  of_clk_add_provider
+  of_clk_del_provider
+  of_clk_get
+  of_clk_get_by_name
+  of_clk_get_from_provider
+  of_clk_get_parent_count
+  of_clk_src_onecell_get
+  of_clk_src_simple_get
+  of_count_phandle_with_args
+  of_cpu_node_to_id
+  of_devfreq_cooling_register_power
+  of_device_get_match_data
+  of_device_is_available
+  of_device_is_compatible
+  of_dma_configure_id
+  of_dma_controller_free
+  of_dma_controller_register
+  of_dma_is_coherent
+  of_dma_xlate_by_chan_id
+  of_drm_find_bridge
+  of_drm_find_panel
+  of_find_backlight_by_node
+  of_find_compatible_node
+  of_find_device_by_node
+  of_find_matching_node_and_match
+  of_find_node_by_name
+  of_find_node_by_phandle
+  of_find_node_opts_by_path
+  of_find_node_with_property
+  of_find_property
+  of_fwnode_ops
+  of_genpd_add_device
+  of_genpd_add_provider_onecell
+  __of_get_address
+  of_get_child_by_name
+  of_get_cpu_node
+  of_get_named_gpio_flags
+  of_get_next_available_child
+  of_get_next_child
+  of_get_next_parent
+  of_get_parent
+  of_get_pci_domain_nr
+  of_get_property
+  of_get_regulator_init_data
+  of_graph_get_next_endpoint
+  of_graph_get_remote_node
+  of_graph_get_remote_port_parent
+  of_icc_get
+  of_icc_xlate_onecell
+  of_iomap
+  of_irq_find_parent
+  of_irq_get
+  of_irq_get_byname
+  of_irq_parse_one
+  of_irq_to_resource_table
+  of_machine_is_compatible
+  of_match_device
+  of_match_node
+  of_n_addr_cells
+  of_n_size_cells
+  __of_parse_phandle_with_args
+  of_pci_get_max_link_speed
+  of_phandle_iterator_init
+  of_phandle_iterator_next
+  of_phy_simple_xlate
+  of_platform_depopulate
+  of_platform_device_create
+  of_platform_populate
+  of_property_count_elems_of_size
+  of_property_match_string
+  of_property_read_string
+  of_property_read_string_helper
+  of_property_read_u32_index
+  of_property_read_u64
+  of_property_read_u64_index
+  of_property_read_variable_u16_array
+  of_property_read_variable_u32_array
+  of_property_read_variable_u64_array
+  of_property_read_variable_u8_array
+  of_prop_next_string
+  of_prop_next_u32
+  of_remove_property
+  of_reserved_mem_device_init_by_idx
+  of_reserved_mem_lookup
+  of_root
+  of_thermal_get_trip_points
+  of_translate_address
+  on_each_cpu_cond_mask
+  oops_in_progress
+  out_of_line_wait_on_bit
+  out_of_line_wait_on_bit_timeout
+  overflowuid
+  page_endio
+  page_pool_alloc_pages
+  page_pool_create
+  page_pool_destroy
+  page_pool_put_defragged_page
+  panic
+  panic_notifier_list
+  param_array_ops
+  param_get_bool
+  param_get_charp
+  param_get_int
+  param_get_uint
+  param_get_ulong
+  param_ops_bool
+  param_ops_byte
+  param_ops_charp
+  param_ops_int
+  param_ops_long
+  param_ops_string
+  param_ops_uint
+  param_ops_ullong
+  param_ops_ulong
+  param_set_bool
+  param_set_charp
+  param_set_uint
+  param_set_ulong
+  pci_alloc_irq_vectors_affinity
+  pci_ats_supported
+  pci_bus_type
+  pci_device_group
+  pci_dev_put
+  pci_disable_ats
+  pci_disable_device
+  pci_enable_ats
+  pci_find_ext_capability
+  pci_free_irq_vectors
+  pci_generic_config_read32
+  pci_generic_config_write32
+  pci_get_slot
+  pci_host_probe
+  pci_irq_vector
+  pci_lock_rescan_remove
+  pcim_enable_device
+  pcim_iomap_regions
+  pcim_iomap_table
+  pcim_iounmap_regions
+  pci_msi_create_irq_domain
+  pci_msi_mask_irq
+  pci_msi_unmask_irq
+  pci_pio_to_address
+  pci_read_config_dword
+  pci_read_config_word
+  __pci_register_driver
+  pci_remove_root_bus
+  pci_restore_state
+  pci_save_state
+  pci_set_master
+  pci_stop_root_bus
+  pci_unlock_rescan_remove
+  pci_unregister_driver
+  pci_write_config_dword
+  pci_write_config_word
+  __percpu_down_read
+  percpu_down_write
+  percpu_free_rwsem
+  __percpu_init_rwsem
+  __per_cpu_offset
+  percpu_up_write
+  perf_event_create_kernel_counter
+  perf_event_disable
+  perf_event_enable
+  perf_event_release_kernel
+  perf_event_update_userpage
+  perf_pmu_migrate_context
+  perf_pmu_register
+  perf_pmu_unregister
+  perf_trace_buf_alloc
+  perf_trace_run_bpf_submit
+  pfn_is_map_memory
+  phy_attached_info
+  phy_connect
+  phy_disconnect
+  phy_do_ioctl_running
+  phy_ethtool_get_link_ksettings
+  phy_ethtool_nway_reset
+  phy_ethtool_set_link_ksettings
+  phy_exit
+  phy_get
+  phy_init
+  phylink_connect_phy
+  phylink_create
+  phylink_destroy
+  phylink_disconnect_phy
+  phylink_ethtool_get_pauseparam
+  phylink_ethtool_set_pauseparam
+  phylink_generic_validate
+  phylink_resume
+  phylink_start
+  phylink_stop
+  phylink_suspend
+  phy_power_off
+  phy_power_on
+  phy_print_status
+  phy_put
+  phy_set_mode_ext
+  phy_start
+  phy_stop
+  phy_suspend
+  pick_migrate_task
+  pid_task
+  pinconf_generic_parse_dt_config
+  pinctrl_dev_get_drvdata
+  pinctrl_enable
+  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_put
+  pinctrl_select_state
+  pinctrl_utils_add_map_configs
+  pinctrl_utils_free_map
+  pinctrl_utils_reserve_map
+  pin_user_pages
+  pin_user_pages_fast
+  pin_user_pages_remote
+  platform_bus_type
+  platform_device_add
+  platform_device_add_data
+  platform_device_add_resources
+  platform_device_alloc
+  platform_device_del
+  platform_device_put
+  platform_device_register
+  platform_device_register_full
+  platform_device_unregister
+  __platform_driver_probe
+  __platform_driver_register
+  platform_driver_unregister
+  platform_find_device_by_driver
+  platform_get_irq
+  platform_get_irq_byname
+  platform_get_irq_byname_optional
+  platform_get_irq_optional
+  platform_get_resource
+  platform_get_resource_byname
+  platform_irq_count
+  platform_msi_domain_alloc_irqs
+  platform_msi_domain_free_irqs
+  __platform_register_drivers
+  platform_unregister_drivers
+  pm_generic_resume
+  pm_generic_suspend
+  pm_genpd_add_device
+  pm_genpd_add_subdomain
+  pm_genpd_init
+  pm_genpd_remove
+  pm_genpd_remove_device
+  pm_get_active_wakeup_sources
+  __pm_relax
+  pm_relax
+  pm_runtime_allow
+  __pm_runtime_disable
+  pm_runtime_enable
+  pm_runtime_forbid
+  pm_runtime_force_resume
+  pm_runtime_force_suspend
+  pm_runtime_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_suspend_default_s2idle
+  pm_system_wakeup
+  pm_wakeup_dev_event
+  pm_wakeup_ws_event
+  pm_wq
+  power_supply_changed
+  power_supply_get_by_name
+  power_supply_get_drvdata
+  power_supply_get_property
+  power_supply_is_system_supplied
+  power_supply_put
+  power_supply_register
+  power_supply_reg_notifier
+  power_supply_set_property
+  power_supply_unreg_notifier
+  preempt_schedule
+  preempt_schedule_notrace
+  prepare_to_wait_event
+  print_hex_dump
+  _printk
+  _printk_deferred
+  __printk_ratelimit
+  proc_create
+  proc_create_data
+  proc_create_net_data
+  proc_create_net_single
+  proc_create_seq_private
+  proc_create_single_data
+  proc_dointvec_jiffies
+  proc_dointvec_minmax
+  proc_doulongvec_minmax
+  _proc_mkdir
+  proc_mkdir
+  proc_mkdir_data
+  proc_remove
+  proc_set_user
+  proto_register
+  proto_unregister
+  __pskb_copy_fclone
+  pskb_expand_head
+  __pskb_pull_tail
+  pskb_put
+  ___pskb_trim
+  pstore_register
+  pstore_type_to_name
+  pstore_unregister
+  put_cmsg
+  __put_cred
+  put_device
+  put_disk
+  __put_net
+  put_pid
+  __put_task_struct
+  put_unused_fd
+  put_user_ifreq
+  put_vaddr_frames
+  pwm_apply_state
+  pwmchip_add
+  pwmchip_remove
+  queue_delayed_work_on
+  queue_work_on
+  radix_tree_delete
+  radix_tree_insert
+  radix_tree_lookup
+  radix_tree_maybe_preload
+  radix_tree_tagged
+  ___ratelimit
+  raw_notifier_call_chain
+  raw_notifier_chain_register
+  raw_notifier_chain_unregister
+  _raw_read_lock
+  _raw_read_lock_bh
+  _raw_read_lock_irqsave
+  _raw_read_trylock
+  _raw_read_unlock
+  _raw_read_unlock_bh
+  _raw_read_unlock_irqrestore
+  _raw_spin_lock
+  _raw_spin_lock_bh
+  _raw_spin_lock_irq
+  _raw_spin_lock_irqsave
+  raw_spin_rq_lock_nested
+  raw_spin_rq_unlock
+  _raw_spin_trylock
+  _raw_spin_trylock_bh
+  _raw_spin_unlock
+  _raw_spin_unlock_bh
+  _raw_spin_unlock_irq
+  _raw_spin_unlock_irqrestore
+  _raw_write_lock
+  _raw_write_lock_bh
+  _raw_write_lock_irqsave
+  _raw_write_unlock
+  _raw_write_unlock_bh
+  _raw_write_unlock_irqrestore
+  rb_erase
+  __rb_erase_color
+  rb_first
+  rb_first_postorder
+  __rb_insert_augmented
+  rb_insert_color
+  rb_next
+  rb_next_postorder
+  rb_prev
+  rb_replace_node
+  rcu_barrier
+  __rcu_read_lock
+  __rcu_read_unlock
+  rcuwait_wake_up
+  rdev_get_dev
+  rdev_get_drvdata
+  rdev_get_id
+  rdev_get_regmap
+  refcount_dec_and_mutex_lock
+  refcount_dec_if_one
+  refcount_warn_saturate
+  __refrigerator
+  regcache_cache_only
+  regcache_mark_dirty
+  regcache_sync
+  __register_blkdev
+  __register_chrdev
+  register_chrdev_region
+  register_die_notifier
+  register_inet6addr_notifier
+  register_inetaddr_notifier
+  register_kprobe
+  register_kretprobe
+  register_module_notifier
+  register_netdev
+  register_netdevice
+  register_netdevice_notifier
+  register_net_sysctl
+  register_oom_notifier
+  register_pernet_device
+  register_pernet_subsys
+  register_pm_notifier
+  register_reboot_notifier
+  __register_rpmsg_driver
+  register_shrinker
+  register_syscore_ops
+  register_sysctl_table
+  register_virtio_device
+  register_virtio_driver
+  regmap_bulk_read
+  regmap_bulk_write
+  regmap_field_read
+  regmap_field_update_bits_base
+  regmap_irq_get_domain
+  regmap_raw_read
+  regmap_raw_write
+  regmap_read
+  regmap_update_bits_base
+  regmap_write
+  regulator_bulk_disable
+  regulator_bulk_enable
+  regulator_count_voltages
+  regulator_disable
+  regulator_disable_regmap
+  regulator_enable
+  regulator_enable_regmap
+  regulator_get
+  regulator_get_current_limit_regmap
+  regulator_get_mode
+  regulator_get_optional
+  regulator_get_voltage
+  regulator_get_voltage_sel_regmap
+  regulator_is_enabled
+  regulator_is_enabled_regmap
+  regulator_list_voltage
+  regulator_list_voltage_linear
+  regulator_list_voltage_linear_range
+  regulator_list_voltage_table
+  regulator_map_voltage_iterate
+  regulator_map_voltage_linear
+  regulator_map_voltage_linear_range
+  regulator_notifier_call_chain
+  regulator_put
+  regulator_set_active_discharge_regmap
+  regulator_set_current_limit
+  regulator_set_current_limit_regmap
+  regulator_set_load
+  regulator_set_mode
+  regulator_set_voltage
+  regulator_set_voltage_sel_regmap
+  regulator_set_voltage_time
+  regulator_set_voltage_time_sel
+  regulator_sync_voltage
+  release_firmware
+  release_pages
+  __release_region
+  release_sock
+  remap_pfn_range
+  remap_vmalloc_range
+  remove_proc_entry
+  remove_proc_subtree
+  remove_wait_queue
+  request_firmware
+  request_firmware_nowait
+  __request_module
+  __request_percpu_irq
+  __request_region
+  request_threaded_irq
+  resched_curr
+  reset_control_assert
+  reset_control_deassert
+  reset_controller_register
+  reset_control_reset
+  rhashtable_destroy
+  rhashtable_free_and_destroy
+  rhashtable_init
+  rhashtable_insert_slow
+  rhashtable_walk_enter
+  rhashtable_walk_exit
+  rhashtable_walk_next
+  rhashtable_walk_start_check
+  rhashtable_walk_stop
+  rhltable_init
+  __rht_bucket_nested
+  rht_bucket_nested
+  rht_bucket_nested_insert
+  root_task_group
+  round_jiffies
+  round_jiffies_relative
+  round_jiffies_up
+  rpmsg_create_ept
+  rpmsg_destroy_ept
+  rpmsg_find_device
+  rpmsg_register_device
+  rpmsg_send
+  rpmsg_sendto
+  rpmsg_trysend
+  rpmsg_unregister_device
+  rproc_add
+  rproc_add_subdev
+  rproc_alloc
+  rproc_boot
+  rproc_del
+  rproc_free
+  rproc_get_by_phandle
+  rproc_put
+  rproc_remove_subdev
+  rproc_report_crash
+  rproc_shutdown
+  rps_needed
+  rtc_ktime_to_tm
+  rtc_time64_to_tm
+  rtc_tm_to_ktime
+  rtc_tm_to_time64
+  rtc_update_irq
+  rtc_valid_tm
+  rtnl_is_locked
+  rtnl_link_register
+  rtnl_link_unregister
+  rtnl_lock
+  rtnl_register_module
+  rtnl_unlock
+  rtnl_unregister
+  rtnl_unregister_all
+  runqueues
+  sched_clock
+  sched_clock_register
+  sched_feat_keys
+  sched_setattr
+  sched_setattr_nocheck
+  sched_set_fifo
+  sched_set_fifo_low
+  sched_set_normal
+  sched_setscheduler
+  sched_setscheduler_nocheck
+  sched_show_task
+  sched_uclamp_used
+  schedule
+  schedule_timeout
+  schedule_timeout_interruptible
+  schedule_timeout_uninterruptible
+  scmi_driver_register
+  scmi_driver_unregister
+  scmi_protocol_register
+  scnprintf
+  scsi_autopm_get_device
+  scsi_autopm_put_device
+  scsi_device_get
+  scsi_device_put
+  scsi_execute_cmd
+  __scsi_iterate_devices
+  scsi_print_sense_hdr
+  sdio_claim_host
+  sdio_claim_irq
+  sdio_disable_func
+  sdio_enable_func
+  sdio_f0_readb
+  sdio_f0_writeb
+  sdio_get_host_pm_caps
+  sdio_readb
+  sdio_readl
+  sdio_readsb
+  sdio_register_driver
+  sdio_release_host
+  sdio_release_irq
+  sdio_set_block_size
+  sdio_set_host_pm_flags
+  sdio_signal_irq
+  sdio_unregister_driver
+  sdio_writeb
+  sdio_writel
+  sdio_writesb
+  security_file_ioctl
+  security_sk_classify_flow
+  security_sk_clone
+  security_sock_graft
+  select_fallback_rq
+  send_sig
+  seq_hex_dump
+  seq_hlist_next
+  seq_hlist_start_head
+  seq_lseek
+  seq_open
+  seq_open_private
+  seq_printf
+  seq_putc
+  seq_puts
+  seq_read
+  seq_release
+  seq_release_private
+  seq_write
+  serdev_device_close
+  __serdev_device_driver_register
+  serdev_device_get_tiocm
+  serdev_device_open
+  serdev_device_set_baudrate
+  serdev_device_set_flow_control
+  serdev_device_set_tiocm
+  serdev_device_wait_until_sent
+  serdev_device_write_buf
+  serdev_device_write_flush
+  serial8250_do_set_termios
+  serial8250_do_shutdown
+  serial8250_do_startup
+  serial8250_get_port
+  serial8250_register_8250_port
+  serial8250_resume_port
+  serial8250_rpm_get
+  serial8250_rpm_put
+  serial8250_suspend_port
+  serial8250_unregister_port
+  set_capacity
+  set_capacity_and_notify
+  set_cpus_allowed_ptr
+  set_freezable
+  set_next_entity
+  set_normalized_timespec64
+  set_page_dirty_lock
+  __SetPageMovable
+  set_task_cpu
+  setup_udp_tunnel_sock
+  set_user_nice
+  sg_alloc_table
+  sg_alloc_table_from_pages_segment
+  sg_copy_from_buffer
+  sg_copy_to_buffer
+  sg_free_table
+  sg_init_one
+  sg_init_table
+  sg_miter_next
+  sg_miter_start
+  sg_miter_stop
+  sg_nents
+  sg_next
+  __sg_page_iter_next
+  __sg_page_iter_start
+  sg_pcopy_from_buffer
+  sg_pcopy_to_buffer
+  shmem_file_setup
+  si_mem_available
+  si_meminfo
+  simple_attr_open
+  simple_attr_read
+  simple_attr_release
+  simple_attr_write
+  simple_open
+  simple_read_from_buffer
+  simple_write_to_buffer
+  single_open
+  single_open_size
+  single_release
+  sk_alloc
+  skb_add_rx_frag
+  skb_checksum_help
+  skb_clone
+  skb_clone_sk
+  skb_complete_wifi_ack
+  skb_copy
+  skb_copy_bits
+  skb_copy_datagram_iter
+  skb_copy_expand
+  skb_cow_data
+  skb_dequeue
+  skb_ensure_writable
+  skb_free_datagram
+  __skb_get_hash
+  __skb_gso_segment
+  skb_pull
+  skb_pull_data
+  skb_pull_rcsum
+  skb_push
+  skb_put
+  skb_queue_head
+  skb_queue_purge
+  skb_queue_tail
+  skb_realloc_headroom
+  skb_recv_datagram
+  skb_scrub_packet
+  skb_set_owner_w
+  skb_split
+  skb_to_sgvec
+  skb_trim
+  skb_try_coalesce
+  skb_tstamp_tx
+  skb_unlink
+  sk_common_release
+  sk_error_report
+  sk_filter_trim_cap
+  sk_free
+  __sk_receive_skb
+  sk_reset_timer
+  sk_setup_caps
+  sk_stop_timer
+  smp_call_function
+  smp_call_function_single
+  smp_call_function_single_async
+  snd_card_add_dev_attr
+  snd_ctl_boolean_mono_info
+  snd_jack_set_key
+  snd_pcm_format_physical_width
+  snd_pcm_format_width
+  snd_pcm_hw_constraint_integer
+  snd_pcm_hw_constraint_minmax
+  snd_pcm_hw_constraint_step
+  snd_pcm_lib_free_pages
+  snd_pcm_lib_malloc_pages
+  snd_pcm_lib_preallocate_free_for_all
+  snd_pcm_lib_preallocate_pages_for_all
+  snd_pcm_period_elapsed
+  snd_pcm_set_ops
+  snd_soc_add_component_controls
+  snd_soc_bytes_info_ext
+  snd_soc_bytes_tlv_callback
+  snd_soc_card_jack_new
+  snd_soc_component_exit_regmap
+  snd_soc_component_init_regmap
+  snd_soc_component_read
+  snd_soc_component_set_jack
+  snd_soc_component_update_bits
+  snd_soc_component_write
+  snd_soc_dai_set_sysclk
+  snd_soc_dapm_add_routes
+  snd_soc_dapm_disable_pin
+  snd_soc_dapm_enable_pin
+  snd_soc_dapm_get_enum_double
+  snd_soc_dapm_get_pin_switch
+  snd_soc_dapm_get_volsw
+  snd_soc_dapm_info_pin_switch
+  snd_soc_dapm_new_controls
+  snd_soc_dapm_new_widgets
+  snd_soc_dapm_put_enum_double
+  snd_soc_dapm_put_pin_switch
+  snd_soc_dapm_put_volsw
+  snd_soc_dapm_sync
+  snd_soc_get_volsw
+  snd_soc_info_enum_double
+  snd_soc_info_volsw
+  snd_soc_jack_report
+  snd_soc_new_compress
+  snd_soc_of_get_dai_link_codecs
+  snd_soc_poweroff
+  snd_soc_put_volsw
+  snd_soc_register_component
+  snd_soc_resume
+  snd_soc_rtdcom_lookup
+  snd_soc_set_runtime_hwparams
+  snd_soc_unregister_component
+  snprintf
+  soc_device_register
+  soc_device_unregister
+  sock_alloc_send_pskb
+  sock_cmsg_send
+  sock_common_getsockopt
+  sock_common_recvmsg
+  sock_common_setsockopt
+  __sock_create
+  sock_create_kern
+  sock_diag_register
+  sock_diag_save_cookie
+  sock_diag_unregister
+  sock_efree
+  sockfd_lookup
+  sock_gettstamp
+  sock_i_ino
+  sock_init_data
+  sock_i_uid
+  sock_no_accept
+  sock_no_bind
+  sock_no_connect
+  sock_no_getname
+  sock_no_ioctl
+  sock_no_listen
+  sock_no_mmap
+  sock_no_recvmsg
+  sock_no_sendmsg
+  sock_no_sendpage
+  sock_no_shutdown
+  sock_no_socketpair
+  __sock_queue_rcv_skb
+  sock_queue_rcv_skb_reason
+  __sock_recv_cmsgs
+  sock_recv_errqueue
+  sock_recvmsg
+  __sock_recv_timestamp
+  __sock_recv_wifi_status
+  sock_register
+  sock_release
+  sock_rfree
+  __sock_tx_timestamp
+  sock_unregister
+  sock_wmalloc
+  sort
+  spi_add_device
+  __spi_alloc_controller
+  spi_alloc_device
+  spi_bus_type
+  spi_controller_resume
+  spi_controller_suspend
+  spi_delay_to_ns
+  spi_finalize_current_transfer
+  spi_mem_default_supports_op
+  __spi_register_driver
+  spi_setup
+  spi_sync
+  split_page
+  spmi_controller_add
+  spmi_controller_alloc
+  spmi_controller_remove
+  __spmi_driver_register
+  sprintf
+  sprint_symbol
+  sprint_symbol_no_offset
+  srcu_init_notifier_head
+  srcu_notifier_call_chain
+  srcu_notifier_chain_register
+  srcu_notifier_chain_unregister
+  __srcu_read_lock
+  __srcu_read_unlock
+  sscanf
+  __stack_chk_fail
+  stack_trace_print
+  stack_trace_save
+  static_key_slow_dec
+  static_key_slow_inc
+  stop_one_cpu
+  stop_one_cpu_nowait
+  stpcpy
+  strcasecmp
+  strchr
+  strcmp
+  strcpy
+  strcspn
+  stream_open
+  strim
+  strlcat
+  strlcpy
+  strlen
+  strncasecmp
+  strncat
+  strncmp
+  strncpy
+  strncpy_from_user
+  strnlen
+  strnstr
+  strpbrk
+  strrchr
+  strscpy
+  strscpy_pad
+  strsep
+  strspn
+  strstr
+  submit_bio
+  submit_bio_wait
+  suspend_set_ops
+  __sw_hweight16
+  __sw_hweight32
+  __sw_hweight64
+  __sw_hweight8
+  sync_blockdev
+  sync_file_create
+  sync_file_get_fence
+  synchronize_irq
+  synchronize_net
+  synchronize_rcu
+  synchronize_srcu
+  syscon_node_to_regmap
+  syscon_regmap_lookup_by_compatible
+  syscon_regmap_lookup_by_phandle
+  syscon_regmap_lookup_by_phandle_optional
+  sysctl_vals
+  sysfs_create_bin_file
+  sysfs_create_file_ns
+  sysfs_create_group
+  sysfs_create_link
+  sysfs_emit
+  sysfs_merge_group
+  sysfs_notify
+  sysfs_remove_bin_file
+  sysfs_remove_file_ns
+  sysfs_remove_group
+  sysfs_remove_link
+  sysfs_streq
+  sysrq_mask
+  sysrq_toggle_support
+  system_freezable_power_efficient_wq
+  system_freezable_wq
+  system_highpri_wq
+  system_long_wq
+  system_power_efficient_wq
+  system_unbound_wq
+  system_wq
+  sys_tz
+  task_active_pid_ns
+  task_cputime_adjusted
+  __tasklet_hi_schedule
+  tasklet_init
+  tasklet_kill
+  __tasklet_schedule
+  tasklet_setup
+  tasklet_unlock_wait
+  tasklist_lock
+  __task_pid_nr_ns
+  __task_rq_lock
+  thermal_cooling_device_unregister
+  thermal_of_cooling_device_register
+  thermal_pressure
+  thermal_zone_device_update
+  thermal_zone_get_temp
+  thermal_zone_get_zone_by_name
+  thread_group_cputime_adjusted
+  tick_nohz_get_sleep_length
+  timecounter_init
+  timecounter_read
+  timer_of_init
+  timer_unstable_counter_workaround
+  topology_clear_scale_freq_source
+  topology_update_thermal_pressure
+  _totalram_pages
+  _trace_android_vh_record_pcpu_rwsem_starttime
+  __trace_bprintk
+  trace_event_buffer_commit
+  trace_event_buffer_reserve
+  trace_event_printf
+  trace_event_raw_init
+  trace_event_reg
+  trace_handle_return
+  __traceiter_android_rvh_after_dequeue_task
+  __traceiter_android_rvh_after_enqueue_task
+  __traceiter_android_rvh_audio_usb_offload_disconnect
+  __traceiter_android_rvh_can_migrate_task
+  __traceiter_android_rvh_check_preempt_wakeup
+  __traceiter_android_rvh_commit_creds
+  __traceiter_android_rvh_cpu_cgroup_attach
+  __traceiter_android_rvh_cpu_cgroup_online
+  __traceiter_android_rvh_cpu_overutilized
+  __traceiter_android_rvh_dequeue_task
+  __traceiter_android_rvh_dequeue_task_fair
+  __traceiter_android_rvh_enqueue_task
+  __traceiter_android_rvh_enqueue_task_fair
+  __traceiter_android_rvh_exit_creds
+  __traceiter_android_rvh_find_busiest_group
+  __traceiter_android_rvh_find_busiest_queue
+  __traceiter_android_rvh_find_energy_efficient_cpu
+  __traceiter_android_rvh_find_lowest_rq
+  __traceiter_android_rvh_find_new_ilb
+  __traceiter_android_rvh_finish_prio_fork
+  __traceiter_android_rvh_flush_task
+  __traceiter_android_rvh_get_nohz_timer_target
+  __traceiter_android_rvh_is_cpu_allowed
+  __traceiter_android_rvh_new_task_stats
+  __traceiter_android_rvh_override_creds
+  __traceiter_android_rvh_prepare_prio_fork
+  __traceiter_android_rvh_replace_next_task_fair
+  __traceiter_android_rvh_revert_creds
+  __traceiter_android_rvh_rtmutex_prepare_setprio
+  __traceiter_android_rvh_rto_next_cpu
+  __traceiter_android_rvh_sched_cpu_starting
+  __traceiter_android_rvh_sched_fork_init
+  __traceiter_android_rvh_sched_newidle_balance
+  __traceiter_android_rvh_schedule
+  __traceiter_android_rvh_select_task_rq_fair
+  __traceiter_android_rvh_select_task_rq_rt
+  __traceiter_android_rvh_selinux_avc_insert
+  __traceiter_android_rvh_selinux_avc_lookup
+  __traceiter_android_rvh_selinux_avc_node_delete
+  __traceiter_android_rvh_selinux_avc_node_replace
+  __traceiter_android_rvh_selinux_is_initialized
+  __traceiter_android_rvh_set_cpus_allowed_by_task
+  __traceiter_android_rvh_set_module_core_rw_nx
+  __traceiter_android_rvh_set_module_init_rw_nx
+  __traceiter_android_rvh_set_module_permit_after_init
+  __traceiter_android_rvh_set_module_permit_before_init
+  __traceiter_android_rvh_setscheduler
+  __traceiter_android_rvh_set_task_cpu
+  __traceiter_android_rvh_set_user_nice
+  __traceiter_android_rvh_tick_entry
+  __traceiter_android_rvh_try_to_wake_up
+  __traceiter_android_rvh_try_to_wake_up_success
+  __traceiter_android_rvh_update_cpu_capacity
+  __traceiter_android_rvh_wake_up_new_task
+  __traceiter_android_vh_alter_futex_plist_add
+  __traceiter_android_vh_alter_rwsem_list_add
+  __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_binder_transaction_init
+  __traceiter_android_vh_cgroup_attach
+  __traceiter_android_vh_cgroup_set_task
+  __traceiter_android_vh_check_bpf_syscall
+  __traceiter_android_vh_check_file_open
+  __traceiter_android_vh_check_mmap_file
+  __traceiter_android_vh_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_rwsem_init
+  __traceiter_android_vh_rwsem_wake
+  __traceiter_android_vh_rwsem_write_finished
+  __traceiter_android_vh_sched_pelt_multiplier
+  __traceiter_android_vh_scheduler_tick
+  __traceiter_android_vh_set_wake_flags
+  __traceiter_android_vh_show_resume_epoch_val
+  __traceiter_android_vh_show_suspend_epoch_val
+  __traceiter_android_vh_syscall_prctl_finished
+  __traceiter_android_vh_ufs_clock_scaling
+  __traceiter_cpu_frequency
+  __traceiter_gpu_mem_total
+  __traceiter_ipi_entry
+  __traceiter_ipi_raise
+  __traceiter_mmap_lock_acquire_returned
+  __traceiter_mmap_lock_released
+  __traceiter_mmap_lock_start_locking
+  __traceiter_pelt_rt_tp
+  __traceiter_pelt_se_tp
+  __traceiter_sched_update_nr_running_tp
+  __traceiter_task_newtask
+  trace_output_call
+  __tracepoint_android_rvh_after_dequeue_task
+  __tracepoint_android_rvh_after_enqueue_task
+  __tracepoint_android_rvh_audio_usb_offload_disconnect
+  __tracepoint_android_rvh_can_migrate_task
+  __tracepoint_android_rvh_check_preempt_wakeup
+  __tracepoint_android_rvh_commit_creds
+  __tracepoint_android_rvh_cpu_cgroup_attach
+  __tracepoint_android_rvh_cpu_cgroup_online
+  __tracepoint_android_rvh_cpu_overutilized
+  __tracepoint_android_rvh_dequeue_task
+  __tracepoint_android_rvh_dequeue_task_fair
+  __tracepoint_android_rvh_enqueue_task
+  __tracepoint_android_rvh_enqueue_task_fair
+  __tracepoint_android_rvh_exit_creds
+  __tracepoint_android_rvh_find_busiest_group
+  __tracepoint_android_rvh_find_busiest_queue
+  __tracepoint_android_rvh_find_energy_efficient_cpu
+  __tracepoint_android_rvh_find_lowest_rq
+  __tracepoint_android_rvh_find_new_ilb
+  __tracepoint_android_rvh_finish_prio_fork
+  __tracepoint_android_rvh_flush_task
+  __tracepoint_android_rvh_get_nohz_timer_target
+  __tracepoint_android_rvh_is_cpu_allowed
+  __tracepoint_android_rvh_new_task_stats
+  __tracepoint_android_rvh_override_creds
+  __tracepoint_android_rvh_prepare_prio_fork
+  __tracepoint_android_rvh_replace_next_task_fair
+  __tracepoint_android_rvh_revert_creds
+  __tracepoint_android_rvh_rtmutex_prepare_setprio
+  __tracepoint_android_rvh_rto_next_cpu
+  __tracepoint_android_rvh_sched_cpu_starting
+  __tracepoint_android_rvh_sched_fork_init
+  __tracepoint_android_rvh_sched_newidle_balance
+  __tracepoint_android_rvh_schedule
+  __tracepoint_android_rvh_select_task_rq_fair
+  __tracepoint_android_rvh_select_task_rq_rt
+  __tracepoint_android_rvh_selinux_avc_insert
+  __tracepoint_android_rvh_selinux_avc_lookup
+  __tracepoint_android_rvh_selinux_avc_node_delete
+  __tracepoint_android_rvh_selinux_avc_node_replace
+  __tracepoint_android_rvh_selinux_is_initialized
+  __tracepoint_android_rvh_set_cpus_allowed_by_task
+  __tracepoint_android_rvh_set_module_core_rw_nx
+  __tracepoint_android_rvh_set_module_init_rw_nx
+  __tracepoint_android_rvh_set_module_permit_after_init
+  __tracepoint_android_rvh_set_module_permit_before_init
+  __tracepoint_android_rvh_setscheduler
+  __tracepoint_android_rvh_set_task_cpu
+  __tracepoint_android_rvh_set_user_nice
+  __tracepoint_android_rvh_tick_entry
+  __tracepoint_android_rvh_try_to_wake_up
+  __tracepoint_android_rvh_try_to_wake_up_success
+  __tracepoint_android_rvh_update_cpu_capacity
+  __tracepoint_android_rvh_wake_up_new_task
+  __tracepoint_android_vh_alter_futex_plist_add
+  __tracepoint_android_vh_alter_rwsem_list_add
+  __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_binder_transaction_init
+  __tracepoint_android_vh_cgroup_attach
+  __tracepoint_android_vh_cgroup_set_task
+  __tracepoint_android_vh_check_bpf_syscall
+  __tracepoint_android_vh_check_file_open
+  __tracepoint_android_vh_check_mmap_file
+  __tracepoint_android_vh_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_rwsem_init
+  __tracepoint_android_vh_rwsem_wake
+  __tracepoint_android_vh_rwsem_write_finished
+  __tracepoint_android_vh_sched_pelt_multiplier
+  __tracepoint_android_vh_scheduler_tick
+  __tracepoint_android_vh_set_wake_flags
+  __tracepoint_android_vh_show_resume_epoch_val
+  __tracepoint_android_vh_show_suspend_epoch_val
+  __tracepoint_android_vh_syscall_prctl_finished
+  __tracepoint_android_vh_ufs_clock_scaling
+  __tracepoint_cpu_frequency
+  __tracepoint_gpu_mem_total
+  __tracepoint_ipi_entry
+  __tracepoint_ipi_raise
+  __tracepoint_mmap_lock_acquire_returned
+  __tracepoint_mmap_lock_released
+  __tracepoint_mmap_lock_start_locking
+  __tracepoint_pelt_rt_tp
+  __tracepoint_pelt_se_tp
+  tracepoint_probe_register
+  tracepoint_probe_register_prio
+  tracepoint_probe_unregister
+  __tracepoint_sched_update_nr_running_tp
+  tracepoint_srcu
+  __tracepoint_task_newtask
+  trace_print_array_seq
+  trace_print_flags_seq
+  trace_print_symbols_seq
+  __trace_puts
+  trace_raw_output_prep
+  trace_seq_printf
+  trace_seq_putc
+  trace_set_clr_event
+  __trace_trigger_soft_disabled
+  tracing_off
+  try_module_get
+  try_wait_for_completion
+  __tty_alloc_driver
+  tty_chars_in_buffer
+  tty_driver_flush_buffer
+  tty_driver_kref_put
+  tty_encode_baud_rate
+  tty_flip_buffer_push
+  tty_get_char_size
+  tty_hangup
+  __tty_insert_flip_char
+  tty_insert_flip_string_fixed_flag
+  tty_kref_put
+  tty_ldisc_deref
+  tty_ldisc_flush
+  tty_ldisc_ref
+  tty_mode_ioctl
+  tty_port_close
+  tty_port_destroy
+  tty_port_hangup
+  tty_port_init
+  tty_port_install
+  tty_port_open
+  tty_port_put
+  tty_port_register_device
+  tty_port_tty_get
+  tty_port_tty_hangup
+  tty_port_tty_wakeup
+  tty_register_driver
+  tty_register_ldisc
+  tty_set_termios
+  tty_standard_install
+  tty_std_termios
+  tty_termios_baud_rate
+  tty_termios_copy_hw
+  tty_termios_encode_baud_rate
+  tty_unregister_device
+  tty_unregister_driver
+  tty_unregister_ldisc
+  tty_unthrottle
+  tty_vhangup
+  tty_wakeup
+  tty_write_room
+  typec_get_drvdata
+  typec_mux_get_drvdata
+  typec_mux_put
+  typec_mux_register
+  typec_mux_set
+  typec_mux_unregister
+  typec_partner_set_identity
+  typec_partner_set_pd_revision
+  typec_partner_set_svdm_version
+  typec_register_partner
+  typec_register_port
+  typec_set_data_role
+  typec_set_orientation
+  typec_set_pwr_opmode
+  typec_set_pwr_role
+  typec_set_vconn_role
+  typec_switch_get_drvdata
+  typec_switch_register
+  typec_switch_unregister
+  typec_unregister_partner
+  typec_unregister_port
+  uart_get_baud_rate
+  uart_get_divisor
+  uart_update_timeout
+  uclamp_eff_value
+  __udelay
+  udp6_set_csum
+  udp_set_csum
+  udp_sock_create4
+  udp_sock_create6
+  udp_tunnel6_xmit_skb
+  udp_tunnel_sock_release
+  udp_tunnel_xmit_skb
+  ufshcd_delay_us
+  ufshcd_dme_configure_adapt
+  ufshcd_dme_get_attr
+  ufshcd_dme_set_attr
+  ufshcd_dump_regs
+  ufshcd_fixup_dev_quirks
+  ufshcd_get_pwr_dev_param
+  ufshcd_hba_enable
+  ufshcd_hba_stop
+  ufshcd_init_pwr_dev_param
+  ufshcd_link_recovery
+  ufshcd_make_hba_operational
+  ufshcd_pltfrm_init
+  ufshcd_query_attr
+  ufshcd_query_descriptor_retry
+  ufshcd_query_flag
+  ufshcd_read_desc_param
+  ufshcd_remove
+  ufshcd_resume_complete
+  ufshcd_runtime_resume
+  ufshcd_runtime_suspend
+  ufshcd_suspend_prepare
+  ufshcd_system_resume
+  ufshcd_system_suspend
+  ufshcd_uic_change_pwr_mode
+  ufshcd_uic_hibern8_exit
+  ufshcd_update_evt_hist
+  unlock_page
+  unmap_mapping_range
+  unpin_user_page
+  unpin_user_pages
+  unregister_blkdev
+  __unregister_chrdev
+  unregister_chrdev_region
+  unregister_die_notifier
+  unregister_inet6addr_notifier
+  unregister_inetaddr_notifier
+  unregister_kprobe
+  unregister_kretprobe
+  unregister_module_notifier
+  unregister_netdev
+  unregister_netdevice_many
+  unregister_netdevice_notifier
+  unregister_netdevice_queue
+  unregister_net_sysctl_table
+  unregister_oom_notifier
+  unregister_pernet_device
+  unregister_pernet_subsys
+  unregister_pm_notifier
+  unregister_reboot_notifier
+  unregister_rpmsg_driver
+  unregister_shrinker
+  unregister_sysctl_table
+  unregister_virtio_device
+  unregister_virtio_driver
+  up
+  update_devfreq
+  update_rq_clock
+  up_read
+  up_write
+  usb_add_config
+  usb_add_function
+  usb_add_gadget_udc
+  usb_add_hcd
+  usb_alloc_coherent
+  usb_alloc_urb
+  usb_altnum_to_altsetting
+  usb_anchor_urb
+  usb_assign_descriptors
+  usb_autopm_get_interface
+  usb_autopm_get_interface_async
+  usb_autopm_get_interface_no_resume
+  usb_autopm_put_interface
+  usb_autopm_put_interface_async
+  usb_clear_halt
+  usb_composite_probe
+  usb_composite_unregister
+  usb_control_msg
+  usb_control_msg_recv
+  usb_control_msg_send
+  usb_copy_descriptors
+  usb_create_hcd
+  usb_create_shared_hcd
+  usb_debug_root
+  usb_del_gadget_udc
+  usb_deregister
+  usb_disabled
+  usb_driver_claim_interface
+  usb_driver_release_interface
+  usb_driver_set_configuration
+  usb_enable_lpm
+  usb_ep_alloc_request
+  usb_ep_autoconfig
+  usb_ep_dequeue
+  usb_ep_disable
+  usb_ep_enable
+  usb_ep_free_request
+  usb_ep_queue
+  usb_ep_set_halt
+  usb_ep_set_maxpacket_limit
+  usb_ep_type_string
+  usb_find_common_endpoints
+  usb_free_all_descriptors
+  usb_free_coherent
+  usb_free_urb
+  usb_function_register
+  usb_function_unregister
+  usb_gadget_connect
+  usb_gadget_disconnect
+  usb_gadget_giveback_request
+  usb_gadget_map_request
+  usb_gadget_register_driver_owner
+  usb_gadget_set_selfpowered
+  usb_gadget_set_state
+  usb_gadget_unmap_request
+  usb_get_dev
+  usb_get_dr_mode
+  usb_get_from_anchor
+  usb_get_function
+  usb_get_function_instance
+  usb_get_intf
+  usb_get_maximum_speed
+  usb_get_role_switch_default_mode
+  usb_get_urb
+  usb_gstrings_attach
+  usb_hcd_check_unlink_urb
+  usb_hcd_end_port_resume
+  usb_hcd_giveback_urb
+  usb_hc_died
+  usb_hcd_irq
+  usb_hcd_is_primary_hcd
+  usb_hcd_link_urb_to_ep
+  usb_hcd_map_urb_for_dma
+  usb_hcd_poll_rh_status
+  usb_hcd_resume_root_hub
+  usb_hcd_start_port_resume
+  usb_hcd_unlink_urb_from_ep
+  usb_hcd_unmap_urb_for_dma
+  usb_hub_clear_tt_buffer
+  usb_ifnum_to_if
+  usb_interface_id
+  usb_kill_urb
+  usb_match_id
+  usb_match_one_id
+  usb_os_desc_prepare_interf_dir
+  usb_poison_urb
+  usb_put_dev
+  usb_put_function
+  usb_put_function_instance
+  usb_put_hcd
+  usb_put_intf
+  usb_queue_reset_device
+  usb_register_driver
+  usb_remove_function
+  usb_remove_hcd
+  usb_reset_configuration
+  usb_reset_device
+  usb_role_string
+  usb_role_switch_get
+  usb_role_switch_get_drvdata
+  usb_role_switch_register
+  usb_role_switch_set_role
+  usb_role_switch_unregister
+  usb_root_hub_lost_power
+  usb_set_interface
+  usb_show_dynids
+  usb_speed_string
+  usb_store_new_id
+  usb_string
+  usb_string_id
+  usb_submit_urb
+  usb_unlink_urb
+  usb_unpoison_urb
+  usb_wakeup_notification
+  __usecs_to_jiffies
+  usleep_range_state
+  uuid_gen
+  uuid_null
+  uuid_parse
+  v4l2_compat_ioctl32
+  v4l2_ctrl_find
+  v4l2_ctrl_g_ctrl
+  v4l2_ctrl_g_ctrl_int64
+  v4l2_ctrl_handler_free
+  v4l2_ctrl_handler_init_class
+  v4l2_ctrl_handler_setup
+  __v4l2_ctrl_modify_range
+  v4l2_ctrl_new_custom
+  v4l2_ctrl_new_std
+  v4l2_ctrl_new_std_menu
+  v4l2_ctrl_new_std_menu_items
+  v4l2_ctrl_request_complete
+  v4l2_ctrl_request_setup
+  __v4l2_ctrl_s_ctrl
+  __v4l2_ctrl_s_ctrl_compound
+  v4l2_ctrl_subdev_subscribe_event
+  v4l2_ctrl_subscribe_event
+  v4l2_device_register
+  v4l2_device_register_subdev
+  __v4l2_device_register_subdev_nodes
+  v4l2_device_unregister
+  v4l2_device_unregister_subdev
+  v4l2_event_queue
+  v4l2_event_queue_fh
+  v4l2_event_subdev_unsubscribe
+  v4l2_event_subscribe
+  v4l2_event_unsubscribe
+  v4l2_fh_add
+  v4l2_fh_del
+  v4l2_fh_exit
+  v4l2_fh_init
+  v4l2_fh_is_singular
+  v4l2_fh_open
+  __v4l2_find_nearest_size
+  v4l2_format_info
+  v4l2_i2c_subdev_init
+  v4l2_m2m_buf_copy_metadata
+  v4l2_m2m_buf_queue
+  v4l2_m2m_buf_remove
+  v4l2_m2m_ctx_init
+  v4l2_m2m_ctx_release
+  v4l2_m2m_dqbuf
+  v4l2_m2m_fop_mmap
+  v4l2_m2m_fop_poll
+  v4l2_m2m_get_curr_priv
+  v4l2_m2m_get_vq
+  v4l2_m2m_init
+  v4l2_m2m_ioctl_create_bufs
+  v4l2_m2m_ioctl_dqbuf
+  v4l2_m2m_ioctl_expbuf
+  v4l2_m2m_ioctl_prepare_buf
+  v4l2_m2m_ioctl_qbuf
+  v4l2_m2m_ioctl_querybuf
+  v4l2_m2m_ioctl_reqbufs
+  v4l2_m2m_ioctl_streamoff
+  v4l2_m2m_ioctl_streamon
+  v4l2_m2m_job_finish
+  v4l2_m2m_next_buf
+  v4l2_m2m_qbuf
+  v4l2_m2m_register_media_controller
+  v4l2_m2m_release
+  v4l2_m2m_request_queue
+  v4l2_m2m_streamoff
+  v4l2_m2m_try_schedule
+  v4l2_m2m_unregister_media_controller
+  v4l2_pipeline_link_notify
+  v4l2_src_change_event_subscribe
+  v4l2_subdev_call_wrappers
+  v4l2_subdev_init
+  v4l2_subdev_link_validate
+  v4l2_subdev_link_validate_default
+  v4l_bound_align_image
+  vb2_buffer_done
+  vb2_common_vm_ops
+  vb2_create_framevec
+  vb2_destroy_framevec
+  vb2_dma_contig_memops
+  vb2_fop_mmap
+  vb2_fop_poll
+  vb2_fop_release
+  vb2_ioctl_create_bufs
+  vb2_ioctl_dqbuf
+  vb2_ioctl_expbuf
+  vb2_ioctl_prepare_buf
+  vb2_ioctl_qbuf
+  vb2_ioctl_querybuf
+  vb2_ioctl_reqbufs
+  vb2_ioctl_streamoff
+  vb2_ioctl_streamon
+  vb2_ops_wait_finish
+  vb2_ops_wait_prepare
+  vb2_plane_cookie
+  vb2_plane_vaddr
+  vb2_qbuf
+  vb2_queue_init
+  vb2_queue_release
+  vb2_request_object_is_buffer
+  vb2_request_queue
+  vb2_request_validate
+  vchan_dma_desc_free_list
+  vchan_init
+  vchan_tx_desc_free
+  vchan_tx_submit
+  verify_pkcs7_signature
+  vfree
+  vfs_llseek
+  video_devdata
+  video_device_alloc
+  video_device_release
+  video_device_release_empty
+  video_ioctl2
+  __video_register_device
+  video_unregister_device
+  virtqueue_add_inbuf
+  virtqueue_add_outbuf
+  virtqueue_detach_unused_buf
+  virtqueue_get_buf
+  virtqueue_get_vring_size
+  virtqueue_kick
+  virtqueue_kick_prepare
+  virtqueue_notify
+  vlan_dev_vlan_id
+  vlan_filter_drop_vids
+  vlan_filter_push_vids
+  vlan_ioctl_set
+  vlan_uses_dev
+  vlan_vid_add
+  vlan_vid_del
+  vmalloc
+  vmalloc_to_page
+  vmalloc_to_pfn
+  vmalloc_user
+  vmap
+  vm_event_states
+  vmf_insert_pfn_prot
+  vm_get_page_prot
+  vm_map_ram
+  vm_node_stat
+  vm_unmap_ram
+  vm_zone_stat
+  vprintk
+  vring_del_virtqueue
+  vring_interrupt
+  vring_new_virtqueue
+  vscnprintf
+  vsnprintf
+  vsprintf
+  vunmap
+  vzalloc
+  wait_for_completion
+  wait_for_completion_interruptible
+  wait_for_completion_interruptible_timeout
+  wait_for_completion_killable
+  wait_for_completion_killable_timeout
+  wait_for_completion_state
+  wait_for_completion_timeout
+  wait_woken
+  __wake_up
+  wake_up_bit
+  wake_up_if_idle
+  __wake_up_locked
+  wake_up_process
+  wakeup_source_add
+  wakeup_source_create
+  wakeup_source_destroy
+  wakeup_source_register
+  wakeup_source_remove
+  wakeup_sources_read_lock
+  wakeup_sources_read_unlock
+  wakeup_sources_walk_next
+  wakeup_sources_walk_start
+  wakeup_source_unregister
+  __wake_up_sync_key
+  __warn_printk
+  watchdog_init_timeout
+  watchdog_set_restart_priority
+  wireless_nlevent_flush
+  wireless_send_event
+  woken_wake_function
+  work_busy
+  work_on_cpu
+  __write_overflow_field
+  ww_mutex_lock
+  ww_mutex_trylock
+  ww_mutex_unlock
+  __xa_alloc
+  xa_erase
+  zlib_deflate
+  zlib_deflateEnd
+  zlib_deflateInit2
+  zlib_deflateReset
+  zlib_deflate_workspacesize
+  zlib_inflate
+  zlib_inflateIncomp
+  zlib_inflateInit2
+  zlib_inflateReset
+  zlib_inflate_workspacesize
diff --git a/android/abi_gki_aarch64_oplus b/android/abi_gki_aarch64_oplus
new file mode 100644
index 0000000..a5812de
--- /dev/null
+++ b/android/abi_gki_aarch64_oplus
@@ -0,0 +1,228 @@
+[abi_symbol_list]
+  address_space_init_once
+  bio_add_page
+  bio_associate_blkg
+  bio_put
+  __blkdev_issue_discard
+  blk_finish_plug
+  blk_rq_map_user
+  blk_rq_map_user_iov
+  blk_start_plug
+  cgroup_add_legacy_cftypes
+  console_printk
+  cpufreq_frequency_table_get_index
+  cpufreq_policy_transition_delay_us
+  cpufreq_update_util_data
+  device_create_bin_file
+  device_remove_bin_file
+  devres_destroy
+  down_read_trylock
+  drm_crtc_vblank_waitqueue
+  filp_close
+  for_each_kernel_tracepoint
+  freq_qos_add_notifier
+  freq_qos_remove_notifier
+  get_wchan
+  gov_attr_set_get
+  gpiod_to_chip
+  have_governor_per_policy
+  i2c_smbus_read_word_data
+  i2c_smbus_write_word_data
+  iio_channel_get
+  iio_channel_release
+  iio_get_channel_type
+  ip6_local_out
+  ip6_route_me_harder
+  ip_route_me_harder
+  ipv6_find_hdr
+  is_ashmem_file
+  jiffies_64_to_clock_t
+  ktime_get_coarse_real_ts64
+  memory_cgrp_subsys
+  memory_cgrp_subsys_enabled_key
+  mem_cgroup_from_id
+  mipi_dsi_generic_write
+  mmc_wait_for_cmd
+  nf_ct_attach
+  nf_ct_delete
+  nf_register_net_hooks
+  nf_unregister_net_hooks
+  of_css
+  __page_file_index
+  __page_mapcount
+  pm_get_active_wakeup_sources
+  __printk_ratelimit
+  prepare_to_wait_exclusive
+  proc_symlink
+  public_key_verify_signature
+  radix_tree_lookup_slot
+  radix_tree_replace_slot
+  _raw_write_trylock
+  reciprocal_value
+  register_tcf_proto_ops
+  regulator_map_voltage_linear_range
+  remove_proc_subtree
+  rtc_read_alarm
+  rtc_set_alarm
+  sdio_memcpy_fromio
+  sdio_memcpy_toio
+  sdio_set_block_size
+  sdio_writeb_readb
+  send_sig
+  send_sig_info
+  set_blocksize
+  __skb_checksum_complete
+  snd_pcm_hw_constraint_mask64
+  snd_soc_find_dai
+  spi_bus_type
+  stack_trace_save_tsk
+  stpcpy
+  task_rq_lock
+  tcf_action_exec
+  tcf_exts_destroy
+  tcf_exts_dump
+  tcf_exts_dump_stats
+  tcf_exts_validate
+  tcf_queue_work
+  __traceiter_android_rvh_post_init_entity_util_avg
+  __traceiter_android_vh_account_process_tick_gran
+  __traceiter_android_vh_account_task_time
+  __traceiter_android_vh_do_futex
+  __traceiter_android_vh_futex_sleep_start
+  __traceiter_android_vh_futex_wait_end
+  __traceiter_android_vh_futex_wait_start
+  __traceiter_android_vh_futex_wake_this
+  __traceiter_android_vh_futex_wake_traverse_plist
+  __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_record_rtmutex_lock_starttime
+  __traceiter_android_vh_record_rwsem_lock_starttime
+  __tracepoint_android_vh_record_mutex_lock_starttime
+  __tracepoint_android_vh_record_pcpu_rwsem_starttime
+  __tracepoint_android_vh_record_rtmutex_lock_starttime
+  __tracepoint_android_vh_record_rwsem_lock_starttime
+  __trace_puts
+  __traceiter_android_vh_alter_mutex_list_add
+  __traceiter_android_vh_binder_free_proc
+  __traceiter_android_vh_binder_has_work_ilocked
+  __traceiter_android_vh_binder_looper_state_registered
+  __traceiter_android_vh_binder_new_ref
+  __traceiter_android_vh_binder_del_ref
+  __traceiter_android_vh_binder_proc_transaction
+  __traceiter_android_vh_binder_preset
+  __traceiter_android_vh_binder_priority_skip
+  __traceiter_android_vh_binder_proc_transaction_entry
+  __traceiter_android_vh_binder_proc_transaction_finish
+  __traceiter_android_vh_binder_read_done
+  __traceiter_android_vh_binder_select_worklist_ilocked
+  __traceiter_android_vh_binder_thread_read
+  __traceiter_android_vh_binder_thread_release
+  __traceiter_android_vh_binder_wait_for_work
+  __traceiter_android_vh_cgroup_set_task
+  __traceiter_android_vh_dup_task_struct
+  __traceiter_android_vh_exit_signal
+  __traceiter_android_vh_mem_cgroup_id_remove
+  __traceiter_android_vh_mem_cgroup_css_offline
+  __traceiter_android_vh_mem_cgroup_css_online
+  __traceiter_android_vh_mem_cgroup_free
+  __traceiter_android_vh_mem_cgroup_alloc
+  __traceiter_android_vh_irqtime_account_process_tick
+  __traceiter_android_vh_mutex_can_spin_on_owner
+  __traceiter_android_vh_mutex_opt_spin_finish
+  __traceiter_android_vh_mutex_opt_spin_start
+  __traceiter_android_vh_cpufreq_acct_update_power
+  __traceiter_android_vh_cleanup_old_buffers_bypass
+  __traceiter_android_vh_dm_bufio_shrink_scan_bypass
+  __traceiter_android_vh_mutex_unlock_slowpath
+  __traceiter_android_vh_rwsem_can_spin_on_owner
+  __traceiter_android_vh_rwsem_opt_spin_finish
+  __traceiter_android_vh_rwsem_opt_spin_start
+  __traceiter_android_vh_rwsem_wake_finish
+  __traceiter_android_vh_sched_stat_runtime_rt
+  __traceiter_android_vh_shrink_node_memcgs
+  __traceiter_android_vh_sync_txn_recvd
+  __traceiter_block_bio_queue
+  __traceiter_block_getrq
+  __traceiter_block_rq_complete
+  __traceiter_block_rq_issue
+  __traceiter_block_rq_merge
+  __traceiter_block_rq_requeue
+  __traceiter_sched_stat_blocked
+  __traceiter_sched_stat_iowait
+  __traceiter_sched_stat_runtime
+  __traceiter_sched_stat_sleep
+  __traceiter_sched_stat_wait
+  __traceiter_sched_waking
+  __traceiter_task_rename
+  __tracepoint_android_rvh_post_init_entity_util_avg
+  __tracepoint_android_vh_account_process_tick_gran
+  __tracepoint_android_vh_account_task_time
+  __tracepoint_android_vh_alter_mutex_list_add
+  __tracepoint_android_vh_binder_free_proc
+  __tracepoint_android_vh_binder_has_work_ilocked
+  __tracepoint_android_vh_binder_looper_state_registered
+  __tracepoint_android_vh_binder_new_ref
+  __tracepoint_android_vh_binder_del_ref
+  __tracepoint_android_vh_binder_proc_transaction
+  __tracepoint_android_vh_binder_preset
+  __tracepoint_android_vh_binder_priority_skip
+  __tracepoint_android_vh_binder_proc_transaction_entry
+  __tracepoint_android_vh_binder_proc_transaction_finish
+  __tracepoint_android_vh_binder_read_done
+  __tracepoint_android_vh_binder_select_worklist_ilocked
+  __tracepoint_android_vh_binder_thread_read
+  __tracepoint_android_vh_binder_thread_release
+  __tracepoint_android_vh_binder_wait_for_work
+  __tracepoint_android_vh_cgroup_set_task
+  __tracepoint_android_vh_do_futex
+  __tracepoint_android_vh_dup_task_struct
+  __tracepoint_android_vh_exit_signal
+  __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_futex_sleep_start
+  __tracepoint_android_vh_futex_wait_end
+  __tracepoint_android_vh_futex_wait_start
+  __tracepoint_android_vh_futex_wake_this
+  __tracepoint_android_vh_futex_wake_traverse_plist
+  __tracepoint_android_vh_futex_wake_up_q_finish
+  __tracepoint_android_vh_irqtime_account_process_tick
+  __tracepoint_android_vh_mutex_can_spin_on_owner
+  __tracepoint_android_vh_mutex_opt_spin_finish
+  __tracepoint_android_vh_mutex_opt_spin_start
+  __tracepoint_android_vh_cpufreq_acct_update_power
+  __tracepoint_android_vh_cleanup_old_buffers_bypass
+  __tracepoint_android_vh_dm_bufio_shrink_scan_bypass
+  __tracepoint_android_vh_mutex_unlock_slowpath
+  __tracepoint_android_vh_rwsem_can_spin_on_owner
+  __tracepoint_android_vh_rwsem_opt_spin_finish
+  __tracepoint_android_vh_rwsem_opt_spin_start
+  __tracepoint_android_vh_rwsem_wake_finish
+  __tracepoint_android_vh_sched_stat_runtime_rt
+  __tracepoint_android_vh_shrink_node_memcgs
+  __tracepoint_android_vh_sync_txn_recvd
+  __tracepoint_block_bio_queue
+  __tracepoint_block_getrq
+  __tracepoint_block_rq_complete
+  __tracepoint_block_rq_issue
+  __tracepoint_block_rq_merge
+  __tracepoint_block_rq_requeue
+  __tracepoint_sched_stat_blocked
+  __tracepoint_sched_stat_iowait
+  __tracepoint_sched_stat_runtime
+  __tracepoint_sched_stat_sleep
+  __tracepoint_sched_stat_wait
+  __tracepoint_sched_waking
+  __tracepoint_task_rename
+  try_to_free_mem_cgroup_pages
+  typec_mux_get_drvdata
+  unregister_memory_notifier
+  unregister_tcf_proto_ops
+  v4l2_i2c_subdev_init
+  wait_for_completion_io_timeout
+  wait_for_completion_killable_timeout
+  wakeup_source_remove
+  wq_worker_comm
diff --git a/android/abi_gki_aarch64_pixel b/android/abi_gki_aarch64_pixel
new file mode 100644
index 0000000..06d7a6c
--- /dev/null
+++ b/android/abi_gki_aarch64_pixel
@@ -0,0 +1,2260 @@
+[abi_symbol_list]
+  add_cpu
+  add_timer
+  add_timer_on
+  add_wait_queue
+  adjust_managed_page_count
+  alarm_cancel
+  alarm_init
+  alarm_start_relative
+  alarmtimer_get_rtcdev
+  alarm_try_to_cancel
+  alloc_chrdev_region
+  alloc_etherdev_mqs
+  alloc_netdev_mqs
+  __alloc_pages
+  alloc_pages_exact
+  __alloc_percpu
+  __alloc_percpu_gfp
+  __alloc_skb
+  alloc_workqueue
+  alt_cb_patch_nops
+  amba_bustype
+  amba_driver_register
+  amba_driver_unregister
+  android_rvh_probe_register
+  anon_inode_getfd
+  arc4_crypt
+  arc4_setkey
+  __arch_clear_user
+  __arch_copy_from_user
+  __arch_copy_to_user
+  arch_timer_read_counter
+  argv_free
+  argv_split
+  arm64_use_ng_mappings
+  __arm_smccc_smc
+  __arm_smccc_sve_check
+  async_schedule_node_domain
+  async_synchronize_full_domain
+  atomic_notifier_call_chain
+  atomic_notifier_chain_register
+  atomic_notifier_chain_unregister
+  autoremove_wake_function
+  backlight_device_set_brightness
+  badblocks_check
+  badblocks_clear
+  badblocks_exit
+  badblocks_init
+  badblocks_set
+  badblocks_show
+  bcmp
+  bdev_end_io_acct
+  bdev_nr_zones
+  bdev_start_io_acct
+  bin2hex
+  bio_endio
+  bio_end_io_acct_remapped
+  bio_start_io_acct
+  __bitmap_and
+  __bitmap_andnot
+  __bitmap_clear
+  __bitmap_equal
+  bitmap_find_next_zero_area_off
+  bitmap_free
+  bitmap_from_arr32
+  __bitmap_or
+  bitmap_parse
+  bitmap_parselist
+  bitmap_print_to_pagebuf
+  __bitmap_set
+  __bitmap_subset
+  bitmap_to_arr32
+  __bitmap_weight
+  __bitmap_xor
+  bitmap_zalloc
+  blk_abort_request
+  __blk_alloc_disk
+  blk_execute_rq_nowait
+  __blk_mq_alloc_disk
+  blk_mq_alloc_tag_set
+  blk_mq_complete_request
+  blk_mq_end_request
+  blk_mq_end_request_batch
+  blk_mq_free_request
+  blk_mq_free_tag_set
+  blk_mq_map_queues
+  blk_mq_start_request
+  blk_mq_start_stopped_hw_queues
+  blk_mq_stop_hw_queues
+  blk_mq_unique_tag
+  blk_mq_update_nr_hw_queues
+  blk_op_str
+  blk_queue_chunk_sectors
+  blk_queue_flag_clear
+  blk_queue_flag_set
+  blk_queue_io_min
+  blk_queue_io_opt
+  blk_queue_logical_block_size
+  blk_queue_max_discard_sectors
+  blk_queue_max_hw_sectors
+  blk_queue_max_write_zeroes_sectors
+  blk_queue_max_zone_append_sectors
+  blk_queue_physical_block_size
+  blk_queue_required_elevator_features
+  blk_queue_virt_boundary
+  blk_queue_write_cache
+  blk_revalidate_disk_zones
+  blk_rq_map_user_io
+  blk_rq_unmap_user
+  blk_zone_cond_str
+  blocking_notifier_call_chain
+  blocking_notifier_chain_register
+  blocking_notifier_chain_unregister
+  bpf_trace_run1
+  bpf_trace_run10
+  bpf_trace_run2
+  bpf_trace_run3
+  bpf_trace_run4
+  bpf_trace_run5
+  bpf_trace_run6
+  bpf_trace_run7
+  bpf_trace_run8
+  bpf_trace_run9
+  build_skb
+  bus_find_device
+  bus_for_each_dev
+  bus_for_each_drv
+  bus_register
+  bus_register_notifier
+  bus_unregister
+  bus_unregister_notifier
+  cache_line_size
+  call_rcu
+  cancel_delayed_work
+  cancel_delayed_work_sync
+  cancel_work_sync
+  capable
+  cdev_add
+  cdev_alloc
+  cdev_del
+  cdev_device_add
+  cdev_device_del
+  cdev_init
+  __check_object_size
+  __class_create
+  class_destroy
+  class_interface_unregister
+  __class_register
+  class_unregister
+  clear_page
+  __ClearPageMovable
+  clk_disable
+  clk_enable
+  clk_get
+  __clk_get_hw
+  __clk_get_name
+  clk_get_rate
+  clk_hw_get_name
+  clk_hw_get_parent
+  __clk_is_enabled
+  clk_prepare
+  clk_put
+  clk_register
+  clk_register_clkdev
+  clk_register_fixed_factor
+  clk_register_fixed_rate
+  clk_register_gate
+  clk_set_rate
+  clk_unprepare
+  clockevents_config_and_register
+  clocks_calc_mult_shift
+  __clocksource_register_scale
+  cma_alloc
+  cma_for_each_area
+  cma_get_name
+  cma_release
+  compat_ptr_ioctl
+  complete
+  complete_all
+  completion_done
+  component_add
+  component_bind_all
+  component_del
+  component_master_add_with_match
+  component_master_del
+  component_match_add_release
+  component_unbind_all
+  config_ep_by_speed
+  configfs_register_group
+  configfs_register_subsystem
+  configfs_unregister_group
+  configfs_unregister_subsystem
+  config_group_init
+  config_group_init_type_name
+  config_item_init_type_name
+  config_item_put
+  config_item_set_name
+  console_set_on_cmdline
+  console_suspend_enabled
+  __const_udelay
+  consume_skb
+  contig_page_data
+  _copy_from_iter
+  __copy_overflow
+  _copy_to_iter
+  cpu_all_bits
+  cpu_bit_bitmap
+  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_get
+  cpufreq_get_policy
+  cpufreq_quick_get
+  cpufreq_register_driver
+  cpufreq_register_notifier
+  cpufreq_table_index_unsorted
+  __cpuhp_remove_state
+  __cpuhp_setup_state
+  __cpuhp_setup_state_cpuslocked
+  __cpuhp_state_add_instance
+  __cpuhp_state_remove_instance
+  cpuhp_tasks_frozen
+  cpu_hwcaps
+  cpu_latency_qos_add_request
+  cpu_latency_qos_remove_request
+  cpu_latency_qos_update_request
+  cpu_number
+  __cpu_online_mask
+  cpu_pm_register_notifier
+  cpu_pm_unregister_notifier
+  __cpu_possible_mask
+  __cpu_present_mask
+  cpu_scale
+  cpus_read_lock
+  cpus_read_unlock
+  cpu_subsys
+  crc32_be
+  crc32_le
+  crc8
+  crc8_populate_msb
+  crypto_aead_decrypt
+  crypto_aead_encrypt
+  crypto_aead_setauthsize
+  crypto_aead_setkey
+  crypto_alloc_aead
+  crypto_alloc_base
+  crypto_alloc_shash
+  crypto_alloc_skcipher
+  crypto_alloc_sync_skcipher
+  crypto_comp_compress
+  crypto_comp_decompress
+  crypto_destroy_tfm
+  crypto_has_alg
+  __crypto_memneq
+  crypto_register_notifier
+  crypto_register_shash
+  crypto_req_done
+  crypto_shash_digest
+  crypto_shash_finup
+  crypto_shash_setkey
+  crypto_shash_update
+  crypto_skcipher_decrypt
+  crypto_skcipher_encrypt
+  crypto_skcipher_setkey
+  crypto_unregister_notifier
+  crypto_unregister_shash
+  __crypto_xor
+  csum_ipv6_magic
+  csum_partial
+  csum_tcpudp_nofold
+  _ctype
+  debugfs_attr_read
+  debugfs_attr_write
+  debugfs_create_atomic_t
+  debugfs_create_bool
+  debugfs_create_devm_seqfile
+  debugfs_create_dir
+  debugfs_create_file
+  debugfs_create_size_t
+  debugfs_create_symlink
+  debugfs_create_u16
+  debugfs_create_u32
+  debugfs_create_u64
+  debugfs_create_u8
+  debugfs_create_x32
+  debugfs_lookup
+  debugfs_remove
+  debugfs_rename
+  dec_zone_page_state
+  default_llseek
+  deferred_free
+  delayed_work_timer_fn
+  del_gendisk
+  del_timer
+  del_timer_sync
+  desc_to_gpio
+  destroy_workqueue
+  dev_addr_mod
+  dev_alloc_name
+  __dev_change_net_namespace
+  dev_close
+  _dev_crit
+  dev_driver_string
+  _dev_emerg
+  _dev_err
+  dev_err_probe
+  dev_fetch_sw_netstats
+  devfreq_add_device
+  devfreq_add_governor
+  devfreq_monitor_resume
+  devfreq_monitor_start
+  devfreq_monitor_stop
+  devfreq_monitor_suspend
+  devfreq_recommended_opp
+  devfreq_register_opp_notifier
+  devfreq_remove_device
+  devfreq_unregister_opp_notifier
+  devfreq_update_interval
+  dev_fwnode
+  __dev_get_by_index
+  dev_get_by_index
+  dev_get_by_name
+  device_add
+  device_add_disk
+  device_add_groups
+  device_create
+  device_create_file
+  device_create_managed_software_node
+  device_create_with_groups
+  device_del
+  device_destroy
+  device_find_child
+  device_for_each_child
+  device_get_child_node_count
+  device_get_dma_attr
+  device_get_match_data
+  device_get_next_child_node
+  device_initialize
+  device_link_add
+  device_link_del
+  device_match_fwnode
+  device_property_match_string
+  device_property_present
+  device_property_read_string
+  device_property_read_u32_array
+  device_register
+  device_remove_file
+  device_remove_groups
+  device_rename
+  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_backlight_device_unregister
+  devm_blk_crypto_profile_init
+  devm_clk_get
+  devm_clk_get_optional
+  devm_clk_put
+  devm_device_add_group
+  devm_device_add_groups
+  __devm_drm_dev_alloc
+  devm_drm_panel_bridge_add_typed
+  devm_extcon_dev_allocate
+  devm_extcon_dev_register
+  devm_free_irq
+  devm_gen_pool_create
+  devm_gpiochip_add_data_with_key
+  devm_gpiod_get
+  devm_gpiod_get_array
+  devm_gpiod_get_optional
+  devm_gpiod_put_array
+  devm_gpio_request
+  devm_gpio_request_one
+  devm_i2c_new_dummy_device
+  devm_iio_device_alloc
+  __devm_iio_device_register
+  devm_input_allocate_device
+  devm_ioremap
+  devm_ioremap_resource
+  devm_ioremap_wc
+  devm_iounmap
+  devm_kasprintf
+  devm_kfree
+  devm_kmalloc
+  devm_kmemdup
+  devm_kstrdup
+  devm_kstrdup_const
+  devm_mfd_add_devices
+  devm_nvmem_register
+  __devm_of_phy_provider_register
+  devm_of_platform_populate
+  devm_phy_create
+  devm_phy_get
+  devm_phy_put
+  devm_pinctrl_get
+  devm_pinctrl_put
+  devm_pinctrl_register
+  devm_pinctrl_register_and_init
+  devm_platform_ioremap_resource
+  devm_platform_ioremap_resource_byname
+  devm_power_supply_register
+  devm_regmap_add_irq_chip
+  __devm_regmap_init
+  __devm_regmap_init_i2c
+  __devm_regmap_init_spi
+  devm_regulator_bulk_get
+  devm_regulator_get
+  devm_regulator_get_exclusive
+  devm_regulator_get_optional
+  devm_regulator_put
+  devm_regulator_register
+  __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_usb_get_phy_by_phandle
+  _dev_notice
+  dev_pm_domain_attach_by_name
+  dev_pm_domain_detach
+  dev_pm_opp_add
+  dev_pm_opp_clear_config
+  dev_pm_opp_disable
+  dev_pm_opp_find_freq_ceil
+  dev_pm_opp_find_freq_exact
+  dev_pm_opp_find_freq_floor
+  dev_pm_opp_get_freq
+  dev_pm_opp_get_opp_count
+  dev_pm_opp_get_voltage
+  dev_pm_opp_of_add_table
+  dev_pm_opp_of_register_em
+  dev_pm_opp_of_remove_table
+  dev_pm_opp_put
+  dev_pm_opp_set_config
+  dev_pm_qos_read_value
+  dev_pm_qos_update_request
+  _dev_printk
+  dev_printk_emit
+  __dev_queue_xmit
+  devres_add
+  __devres_alloc_node
+  devres_free
+  dev_set_name
+  _dev_warn
+  disable_irq
+  disable_irq_nosync
+  disable_percpu_irq
+  disk_set_zoned
+  dma_alloc_attrs
+  dma_alloc_pages
+  dma_async_device_register
+  dma_async_device_unregister
+  dma_async_tx_descriptor_init
+  dma_buf_attach
+  dma_buf_begin_cpu_access
+  dma_buf_begin_cpu_access_partial
+  dma_buf_detach
+  dma_buf_end_cpu_access
+  dma_buf_end_cpu_access_partial
+  dma_buf_export
+  dma_buf_fd
+  dma_buf_get
+  dma_buf_map_attachment
+  dma_buf_mmap
+  dmabuf_page_pool_alloc
+  dmabuf_page_pool_create
+  dmabuf_page_pool_destroy
+  dmabuf_page_pool_free
+  dmabuf_page_pool_get_size
+  dma_buf_put
+  dma_buf_unmap_attachment
+  dma_buf_vmap
+  dma_buf_vunmap
+  dmaengine_unmap_put
+  dma_fence_add_callback
+  dma_fence_context_alloc
+  dma_fence_default_wait
+  dma_fence_get_status
+  dma_fence_init
+  dma_fence_release
+  dma_fence_remove_callback
+  dma_fence_signal
+  dma_fence_signal_locked
+  dma_fence_wait_timeout
+  dma_free_attrs
+  dma_free_pages
+  dma_get_slave_caps
+  dma_get_slave_channel
+  dma_heap_add
+  dma_heap_buffer_alloc
+  dma_heap_find
+  dma_heap_get_dev
+  dma_heap_get_drvdata
+  dma_heap_get_name
+  dma_heap_put
+  dmam_alloc_attrs
+  dma_map_page_attrs
+  dma_map_resource
+  dma_map_sg_attrs
+  dma_map_sgtable
+  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_SAK
+  do_trace_netlink_extack
+  do_wait_intr_irq
+  down
+  downgrade_write
+  down_interruptible
+  down_read
+  down_read_trylock
+  down_trylock
+  down_write
+  dput
+  drain_workqueue
+  driver_register
+  driver_unregister
+  drm_add_modes_noedid
+  drm_atomic_add_affected_connectors
+  drm_atomic_add_affected_planes
+  drm_atomic_commit
+  drm_atomic_get_connector_state
+  drm_atomic_get_crtc_state
+  drm_atomic_get_new_connector_for_encoder
+  drm_atomic_get_old_connector_for_encoder
+  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_check_modeset
+  drm_atomic_helper_check_planes
+  drm_atomic_helper_check_plane_state
+  drm_atomic_helper_cleanup_planes
+  drm_atomic_helper_commit_cleanup_done
+  drm_atomic_helper_commit_duplicated_state
+  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_commit_tail
+  __drm_atomic_helper_connector_destroy_state
+  __drm_atomic_helper_connector_duplicate_state
+  __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_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_prepare_planes
+  __drm_atomic_helper_private_obj_duplicate_state
+  drm_atomic_helper_set_config
+  drm_atomic_helper_setup_commit
+  drm_atomic_helper_shutdown
+  drm_atomic_helper_swap_state
+  drm_atomic_helper_update_plane
+  drm_atomic_helper_wait_for_dependencies
+  drm_atomic_helper_wait_for_flip_done
+  drm_atomic_nonblocking_commit
+  drm_atomic_normalize_zpos
+  drm_atomic_private_obj_fini
+  drm_atomic_private_obj_init
+  drm_atomic_set_crtc_for_connector
+  drm_atomic_set_crtc_for_plane
+  drm_atomic_set_fb_for_plane
+  drm_atomic_set_mode_prop_for_crtc
+  drm_atomic_state_alloc
+  drm_atomic_state_clear
+  __drm_atomic_state_free
+  drm_bridge_add
+  drm_bridge_attach
+  drm_bridge_chain_mode_set
+  drm_bridge_remove
+  drm_compat_ioctl
+  drm_connector_attach_encoder
+  drm_connector_cleanup
+  drm_connector_init
+  drm_connector_list_iter_begin
+  drm_connector_list_iter_end
+  drm_connector_list_iter_next
+  drm_connector_register
+  drm_connector_unregister
+  drm_crtc_arm_vblank_event
+  drm_crtc_cleanup
+  drm_crtc_enable_color_mgmt
+  drm_crtc_handle_vblank
+  drm_crtc_init_with_planes
+  drm_crtc_send_vblank_event
+  drm_crtc_vblank_count_and_time
+  drm_crtc_vblank_get
+  drm_crtc_vblank_off
+  drm_crtc_vblank_on
+  drm_crtc_vblank_put
+  drm_crtc_wait_one_vblank
+  ___drm_dbg
+  drm_dev_put
+  drm_dev_register
+  drm_dev_unregister
+  drm_display_mode_to_videomode
+  drm_encoder_cleanup
+  drm_encoder_init
+  __drm_err
+  drm_event_cancel_free
+  drm_event_reserve_init
+  drm_format_info
+  drm_framebuffer_init
+  drm_gem_create_mmap_offset
+  drm_gem_fb_create_handle
+  drm_gem_fb_destroy
+  drm_gem_handle_create
+  drm_gem_mmap
+  drm_gem_object_free
+  drm_gem_object_lookup
+  drm_gem_object_release
+  drm_gem_prime_fd_to_handle
+  drm_gem_prime_handle_to_fd
+  drm_gem_prime_import_dev
+  drm_gem_private_object_init
+  drm_gem_vm_close
+  drm_gem_vm_open
+  drm_get_format_info
+  drm_helper_mode_fill_fb_struct
+  drm_helper_probe_single_connector_modes
+  drm_ioctl
+  drm_kms_helper_hotplug_event
+  drm_kms_helper_poll_fini
+  drm_kms_helper_poll_init
+  drmm_kmalloc
+  drmm_mode_config_init
+  drm_mode_config_reset
+  drm_mode_convert_to_umode
+  drm_mode_duplicate
+  drm_mode_equal
+  drm_mode_equal_no_clocks
+  drm_mode_object_find
+  drm_mode_object_get
+  drm_mode_object_put
+  drm_mode_probed_add
+  drm_modeset_acquire_fini
+  drm_modeset_acquire_init
+  drm_modeset_backoff
+  drm_modeset_drop_locks
+  drm_modeset_lock
+  drm_modeset_lock_all_ctx
+  drm_modeset_unlock
+  drm_mode_vrefresh
+  drm_object_attach_property
+  drm_open
+  drm_panel_add
+  drm_panel_disable
+  drm_panel_enable
+  drm_panel_get_modes
+  drm_panel_init
+  drm_panel_prepare
+  drm_panel_remove
+  drm_panel_unprepare
+  drm_plane_cleanup
+  drm_plane_create_alpha_property
+  drm_plane_create_blend_mode_property
+  drm_plane_create_rotation_property
+  drm_plane_create_zpos_immutable_property
+  drm_plane_create_zpos_property
+  drm_poll
+  drm_prime_gem_destroy
+  drm_printf
+  __drm_printfn_debug
+  __drm_printfn_info
+  __drm_printfn_seq_file
+  drm_property_blob_get
+  drm_property_blob_put
+  drm_property_create
+  drm_property_create_bitmask
+  drm_property_create_blob
+  drm_property_create_bool
+  drm_property_create_enum
+  drm_property_create_range
+  drm_property_create_signed_range
+  drm_property_lookup_blob
+  drm_property_replace_blob
+  __drm_puts_seq_file
+  drm_read
+  drm_rect_clip_scaled
+  drm_rect_intersect
+  drm_release
+  drm_rotation_simplify
+  drm_self_refresh_helper_alter_state
+  drm_send_event
+  drm_send_event_locked
+  drm_universal_plane_init
+  drm_vblank_init
+  drm_writeback_connector_init
+  drm_writeback_queue_job
+  drm_writeback_signal_completion
+  dump_backtrace
+  dump_stack
+  dw_handle_msi_irq
+  dw_pcie_host_init
+  dw_pcie_read
+  dw_pcie_setup_rc
+  dw_pcie_write
+  __dynamic_dev_dbg
+  __dynamic_pr_debug
+  em_cpu_get
+  emergency_restart
+  enable_irq
+  enable_percpu_irq
+  errno_to_blk_status
+  ether_setup
+  eth_mac_addr
+  ethtool_op_get_link
+  eth_type_trans
+  eventfd_ctx_fdget
+  eventfd_ctx_put
+  eventfd_signal
+  extcon_get_edev_by_phandle
+  extcon_get_property
+  extcon_get_state
+  extcon_register_notifier
+  extcon_set_property
+  extcon_set_property_capability
+  extcon_set_state_sync
+  extcon_unregister_notifier
+  fasync_helper
+  __fdget
+  fd_install
+  fget
+  find_extend_vma
+  _find_first_and_bit
+  _find_first_bit
+  _find_first_zero_bit
+  find_get_pid
+  _find_last_bit
+  _find_next_and_bit
+  _find_next_bit
+  _find_next_zero_bit
+  find_pid_ns
+  find_vma_intersection
+  finish_wait
+  flush_dcache_page
+  flush_delayed_work
+  flush_work
+  __flush_workqueue
+  __folio_put
+  folio_wait_bit
+  fortify_panic
+  fput
+  frame_vector_create
+  frame_vector_destroy
+  frame_vector_to_pages
+  free_irq
+  free_netdev
+  __free_pages
+  free_pages
+  free_pages_exact
+  free_percpu
+  free_percpu_irq
+  freezer_active
+  freezing_slow_path
+  freq_qos_add_request
+  freq_qos_remove_request
+  freq_qos_update_request
+  full_name_hash
+  fwnode_get_name
+  fwnode_gpiod_get_index
+  fwnode_handle_get
+  fwnode_handle_put
+  fwnode_property_present
+  fwnode_property_read_string
+  fwnode_property_read_u32_array
+  gcd
+  generic_file_llseek
+  generic_handle_domain_irq
+  genlmsg_multicast_allns
+  genlmsg_put
+  genl_register_family
+  genl_unregister_family
+  gen_pool_add_owner
+  gen_pool_alloc_algo_owner
+  gen_pool_avail
+  gen_pool_create
+  gen_pool_destroy
+  gen_pool_first_fit_align
+  gen_pool_free_owner
+  gen_pool_has_addr
+  gen_pool_size
+  get_cpu_device
+  get_cpu_idle_time
+  get_cpu_idle_time_us
+  get_cpu_iowait_time_us
+  get_device
+  __get_free_pages
+  get_net_ns_by_fd
+  get_net_ns_by_pid
+  get_pid_task
+  get_random_bytes
+  get_random_u16
+  get_random_u32
+  __get_random_u32_below
+  get_random_u8
+  get_sg_io_hdr
+  get_thermal_instance
+  get_unused_fd_flags
+  get_user_pages
+  get_user_pages_fast
+  get_vaddr_frames
+  gic_nonsecure_priorities
+  glob_match
+  gpiochip_generic_config
+  gpiochip_generic_free
+  gpiochip_generic_request
+  gpiochip_get_data
+  gpiochip_lock_as_irq
+  gpiochip_unlock_as_irq
+  gpiod_count
+  gpiod_direction_input
+  gpiod_direction_output
+  gpiod_direction_output_raw
+  gpiod_get_raw_value
+  gpiod_get_raw_value_cansleep
+  gpiod_get_value
+  gpiod_get_value_cansleep
+  gpiod_set_raw_value
+  gpiod_set_raw_value_cansleep
+  gpiod_set_value
+  gpiod_set_value_cansleep
+  gpiod_to_irq
+  gpio_free
+  gpio_request
+  gpio_request_one
+  gpio_to_desc
+  gserial_alloc_line
+  gserial_connect
+  gserial_disconnect
+  handle_edge_irq
+  handle_level_irq
+  handle_nested_irq
+  handle_simple_irq
+  handle_sysrq
+  hashlen_string
+  hex2bin
+  hex_dump_to_buffer
+  hex_to_bin
+  hrtimer_active
+  hrtimer_cancel
+  hrtimer_forward
+  hrtimer_init
+  hrtimer_init_sleeper
+  hrtimer_sleeper_start_expires
+  hrtimer_start_range_ns
+  hrtimer_try_to_cancel
+  __hw_addr_init
+  __hw_addr_sync
+  __hw_addr_unsync
+  hwrng_register
+  hwrng_unregister
+  i2c_adapter_type
+  i2c_add_numbered_adapter
+  i2c_bus_type
+  i2c_del_adapter
+  i2c_del_driver
+  i2c_for_each_dev
+  i2c_get_adapter
+  i2c_match_id
+  i2c_new_ancillary_device
+  i2c_new_client_device
+  i2c_new_dummy_device
+  i2c_put_adapter
+  i2c_register_driver
+  i2c_smbus_read_byte_data
+  i2c_smbus_write_byte_data
+  i2c_smbus_xfer
+  i2c_transfer
+  i2c_transfer_buffer_flags
+  i2c_unregister_device
+  i2c_verify_client
+  ida_alloc_range
+  ida_destroy
+  ida_free
+  idr_alloc
+  idr_destroy
+  idr_find
+  idr_for_each
+  idr_get_next
+  idr_preload
+  idr_remove
+  ieee802154_alloc_hw
+  ieee802154_free_hw
+  ieee802154_register_hw
+  ieee802154_rx_irqsafe
+  ieee802154_unregister_hw
+  ieee802154_wake_queue
+  ieee802154_xmit_complete
+  iio_buffer_enabled
+  iio_device_unregister
+  import_iovec
+  in6_pton
+  in_aton
+  inc_zone_page_state
+  inet_csk_get_port
+  init_dummy_netdev
+  init_net
+  init_pid_ns
+  __init_rwsem
+  __init_swait_queue_head
+  init_task
+  init_timer_key
+  init_uts_ns
+  init_wait_entry
+  __init_waitqueue_head
+  input_alloc_absinfo
+  input_allocate_device
+  input_close_device
+  input_event
+  input_ff_create
+  input_free_device
+  input_mt_destroy_slots
+  input_mt_init_slots
+  input_mt_report_slot_state
+  input_open_device
+  input_register_device
+  input_register_handle
+  input_register_handler
+  input_set_abs_params
+  input_set_capability
+  input_set_timestamp
+  input_unregister_device
+  input_unregister_handle
+  input_unregister_handler
+  interval_tree_insert
+  interval_tree_iter_first
+  interval_tree_iter_next
+  interval_tree_remove
+  int_sqrt
+  int_to_scsilun
+  iomem_resource
+  iommu_alloc_resv_region
+  iommu_attach_device_pasid
+  iommu_attach_group
+  iommu_detach_device_pasid
+  iommu_device_register
+  iommu_device_sysfs_add
+  iommu_device_sysfs_remove
+  iommu_device_unlink
+  iommu_device_unregister
+  iommu_domain_alloc
+  iommu_domain_free
+  iommu_fwspec_add_ids
+  iommu_fwspec_free
+  iommu_get_domain_for_dev
+  iommu_get_domain_for_dev_pasid
+  iommu_group_alloc
+  iommu_group_for_each_dev
+  iommu_group_get
+  iommu_group_get_iommudata
+  iommu_group_put
+  iommu_group_set_iommudata
+  iommu_group_set_name
+  iommu_iova_to_phys
+  iommu_map
+  iommu_map_sg
+  iommu_register_device_fault_handler
+  iommu_report_device_fault
+  iommu_set_fault_handler
+  iommu_unmap
+  iommu_unregister_device_fault_handler
+  ioremap_prot
+  io_schedule
+  io_schedule_timeout
+  iounmap
+  ip_compute_csum
+  ip_send_check
+  __irq_alloc_descs
+  __irq_apply_affinity_hint
+  irq_create_mapping_affinity
+  irq_create_of_mapping
+  __irq_domain_add
+  irq_domain_get_irq_data
+  irq_domain_remove
+  irq_domain_set_info
+  irq_domain_xlate_twocell
+  irq_get_irq_data
+  irq_modify_status
+  irq_of_parse_and_map
+  __irq_resolve_mapping
+  irq_set_affinity
+  irq_set_chained_handler_and_data
+  irq_set_chip_and_handler_name
+  irq_set_chip_data
+  irq_set_irq_type
+  irq_set_irq_wake
+  irq_to_desc
+  is_vmalloc_addr
+  jiffies
+  jiffies64_to_msecs
+  jiffies_to_msecs
+  jiffies_to_usecs
+  kasan_flag_enabled
+  kasprintf
+  kernel_cpustat
+  kernel_kobj
+  kernel_param_lock
+  kernel_param_unlock
+  kernel_restart
+  key_create_or_update
+  key_put
+  keyring_alloc
+  __kfifo_alloc
+  __kfifo_free
+  __kfifo_in
+  __kfifo_init
+  __kfifo_out
+  __kfifo_out_peek
+  kfree
+  kfree_sensitive
+  kfree_skb_list_reason
+  kfree_skb_reason
+  kill_fasync
+  kimage_voffset
+  __kmalloc
+  kmalloc_caches
+  kmalloc_large
+  kmalloc_node_trace
+  kmalloc_trace
+  kmem_cache_alloc
+  kmem_cache_create
+  kmem_cache_destroy
+  kmem_cache_free
+  kmemdup
+  kobject_add
+  kobject_create_and_add
+  kobject_del
+  kobject_init
+  kobject_init_and_add
+  kobject_put
+  kobject_uevent
+  kobject_uevent_env
+  kobj_sysfs_ops
+  krealloc
+  kstat
+  kstrdup
+  kstrndup
+  kstrtobool
+  kstrtobool_from_user
+  kstrtoint
+  kstrtoint_from_user
+  kstrtol_from_user
+  kstrtoll
+  kstrtos8
+  kstrtou16
+  kstrtou8
+  kstrtou8_from_user
+  kstrtouint
+  kstrtouint_from_user
+  kstrtoull
+  kstrtoull_from_user
+  kthread_bind
+  kthread_bind_mask
+  kthread_cancel_delayed_work_sync
+  kthread_cancel_work_sync
+  kthread_complete_and_exit
+  kthread_create_on_cpu
+  kthread_create_on_node
+  kthread_create_worker
+  kthread_delayed_work_timer_fn
+  kthread_destroy_worker
+  kthread_flush_work
+  kthread_flush_worker
+  __kthread_init_worker
+  kthread_mod_delayed_work
+  kthread_park
+  kthread_parkme
+  kthread_queue_work
+  kthread_should_park
+  kthread_should_stop
+  kthread_stop
+  kthread_unpark
+  kthread_worker_fn
+  ktime_get
+  ktime_get_coarse_with_offset
+  ktime_get_mono_fast_ns
+  ktime_get_raw
+  ktime_get_raw_ts64
+  ktime_get_real_seconds
+  ktime_get_real_ts64
+  ktime_get_seconds
+  ktime_get_snapshot
+  ktime_get_ts64
+  ktime_get_with_offset
+  kunit_binary_assert_format
+  kunit_do_failed_assertion
+  kunit_kmalloc_array
+  kunit_ptr_not_err_assert_format
+  kvfree
+  kvfree_call_rcu
+  kvmalloc_node
+  led_classdev_register_ext
+  led_classdev_unregister
+  __list_add_valid
+  __list_del_entry_valid
+  list_sort
+  __local_bh_enable_ip
+  log_abnormal_wakeup_reason
+  log_post_read_mmio
+  log_post_write_mmio
+  log_read_mmio
+  log_threaded_irq_wakeup_reason
+  log_write_mmio
+  loops_per_jiffy
+  mac_pton
+  mas_empty_area_rev
+  mbox_chan_received_data
+  mbox_controller_register
+  mbox_controller_unregister
+  mbox_free_channel
+  mbox_request_channel
+  mbox_send_message
+  memchr
+  memcmp
+  memcpy
+  __memcpy_fromio
+  __memcpy_toio
+  memdup_user
+  memdup_user_nul
+  memmove
+  memparse
+  memremap
+  mem_section
+  memset
+  memset64
+  __memset_io
+  memstart_addr
+  memunmap
+  mfd_add_devices
+  mfd_remove_devices
+  mipi_dsi_attach
+  mipi_dsi_compression_mode
+  mipi_dsi_create_packet
+  mipi_dsi_dcs_read
+  mipi_dsi_dcs_set_column_address
+  mipi_dsi_dcs_set_display_brightness
+  mipi_dsi_dcs_set_page_address
+  mipi_dsi_dcs_write_buffer
+  mipi_dsi_detach
+  mipi_dsi_device_register_full
+  mipi_dsi_driver_register_full
+  mipi_dsi_driver_unregister
+  mipi_dsi_host_register
+  mipi_dsi_host_unregister
+  mipi_dsi_packet_format_is_long
+  mipi_dsi_picture_parameter_set
+  misc_deregister
+  misc_register
+  __mmap_lock_do_trace_acquire_returned
+  __mmap_lock_do_trace_released
+  __mmap_lock_do_trace_start_locking
+  __mmdrop
+  mod_delayed_work_on
+  mod_node_page_state
+  mod_timer
+  __module_get
+  module_layout
+  module_put
+  __msecs_to_jiffies
+  msleep
+  msleep_interruptible
+  __mutex_init
+  mutex_is_locked
+  mutex_lock
+  mutex_lock_interruptible
+  mutex_trylock
+  mutex_unlock
+  __napi_alloc_skb
+  napi_complete_done
+  napi_disable
+  napi_enable
+  napi_gro_receive
+  __napi_schedule
+  napi_schedule_prep
+  __netdev_alloc_skb
+  netdev_err
+  netdev_info
+  netdev_set_default_ethtool_ops
+  netdev_state_change
+  netdev_update_features
+  netif_carrier_off
+  netif_carrier_on
+  netif_napi_add_weight
+  __netif_napi_del
+  netif_receive_skb
+  netif_receive_skb_list
+  netif_rx
+  netif_tx_stop_all_queues
+  netif_tx_wake_queue
+  netlink_broadcast
+  __netlink_kernel_create
+  netlink_kernel_release
+  netlink_register_notifier
+  netlink_unicast
+  netlink_unregister_notifier
+  net_ns_type_operations
+  net_ratelimit
+  nla_find
+  nla_memcpy
+  __nla_parse
+  nla_put
+  nla_put_64bit
+  nla_put_nohdr
+  nla_reserve
+  nla_strscpy
+  __nla_validate
+  __nlmsg_put
+  nonseekable_open
+  noop_llseek
+  nr_cpu_ids
+  nr_irqs
+  nsec_to_clock_t
+  ns_to_timespec64
+  __num_online_cpus
+  nvmem_device_put
+  nvmem_device_read
+  nvmem_device_write
+  of_address_to_resource
+  of_alias_get_id
+  of_clk_add_provider
+  of_clk_get
+  of_clk_get_by_name
+  of_clk_src_onecell_get
+  of_count_phandle_with_args
+  of_cpu_node_to_id
+  of_device_get_match_data
+  of_device_is_available
+  of_device_is_compatible
+  of_dma_controller_free
+  of_dma_controller_register
+  of_dma_is_coherent
+  of_drm_find_bridge
+  of_drm_find_panel
+  of_find_backlight_by_node
+  of_find_compatible_node
+  of_find_device_by_node
+  of_find_i2c_adapter_by_node
+  of_find_i2c_device_by_node
+  of_find_matching_node_and_match
+  of_find_node_by_name
+  of_find_node_by_phandle
+  of_find_node_by_type
+  of_find_node_opts_by_path
+  of_find_property
+  of_fwnode_ops
+  of_genpd_add_provider_simple
+  of_get_child_by_name
+  of_get_cpu_node
+  of_get_named_gpio_flags
+  of_get_next_available_child
+  of_get_next_child
+  of_get_next_parent
+  of_get_property
+  of_get_regulator_init_data
+  of_graph_get_next_endpoint
+  of_graph_get_port_parent
+  of_graph_get_remote_endpoint
+  of_graph_is_present
+  of_graph_parse_endpoint
+  of_iomap
+  of_irq_find_parent
+  of_irq_get
+  of_irq_get_byname
+  of_irq_parse_one
+  of_irq_to_resource
+  of_machine_is_compatible
+  of_match_device
+  of_match_node
+  of_n_addr_cells
+  of_node_name_eq
+  of_n_size_cells
+  of_nvmem_device_get
+  __of_parse_phandle_with_args
+  of_phandle_iterator_init
+  of_phandle_iterator_next
+  of_platform_populate
+  of_property_count_elems_of_size
+  of_property_match_string
+  of_property_read_string
+  of_property_read_string_helper
+  of_property_read_u32_index
+  of_property_read_u64
+  of_property_read_u64_index
+  of_property_read_variable_u16_array
+  of_property_read_variable_u32_array
+  of_property_read_variable_u64_array
+  of_property_read_variable_u8_array
+  of_prop_next_string
+  of_prop_next_u32
+  of_reserved_mem_device_init_by_idx
+  of_reserved_mem_device_release
+  of_reserved_mem_lookup
+  of_root
+  of_thermal_get_ntrips
+  of_thermal_get_trip_points
+  of_thermal_is_trip_valid
+  of_translate_address
+  of_usb_host_tpl_support
+  page_endio
+  page_frag_alloc_align
+  __page_frag_cache_drain
+  page_frag_free
+  page_pinner_inited
+  __page_pinner_put_page
+  panic
+  panic_notifier_list
+  param_array_ops
+  param_get_int
+  param_ops_bool
+  param_ops_byte
+  param_ops_charp
+  param_ops_int
+  param_ops_long
+  param_ops_string
+  param_ops_uint
+  param_ops_ulong
+  pci_alloc_irq_vectors_affinity
+  pci_assign_resource
+  pci_clear_master
+  pci_disable_device
+  pci_enable_device
+  pci_enable_wake
+  pci_find_bus
+  pci_find_capability
+  pci_find_ext_capability
+  pci_free_irq_vectors
+  pci_get_device
+  pci_load_and_free_saved_state
+  pci_load_saved_state
+  pci_msi_mask_irq
+  pci_msi_unmask_irq
+  pci_read_config_dword
+  pci_read_config_word
+  __pci_register_driver
+  pci_release_regions
+  pci_rescan_bus
+  pci_restore_msi_state
+  pci_restore_state
+  pci_save_state
+  pci_set_master
+  pci_set_power_state
+  pci_store_saved_state
+  pci_unregister_driver
+  pci_wake_from_d3
+  pci_write_config_dword
+  pci_write_config_word
+  __per_cpu_offset
+  perf_aux_output_begin
+  perf_aux_output_end
+  perf_aux_output_flag
+  perf_event_addr_filters_sync
+  perf_event_create_kernel_counter
+  perf_event_disable
+  perf_event_enable
+  perf_event_pause
+  perf_event_read_local
+  perf_event_read_value
+  perf_event_release_kernel
+  perf_event_update_userpage
+  perf_get_aux
+  perf_pmu_migrate_context
+  perf_pmu_register
+  perf_pmu_unregister
+  perf_trace_buf_alloc
+  perf_trace_run_bpf_submit
+  pfn_is_map_memory
+  phy_init
+  phy_power_off
+  phy_power_on
+  pid_task
+  pinconf_generic_dt_free_map
+  pinconf_generic_dt_node_to_map
+  pinctrl_add_gpio_range
+  pinctrl_dev_get_drvdata
+  pinctrl_enable
+  pinctrl_force_sleep
+  pinctrl_lookup_state
+  pinctrl_remove_gpio_range
+  pinctrl_select_state
+  pin_get_name
+  pin_user_pages
+  pin_user_pages_fast
+  pin_user_pages_remote
+  pktgen_xfrm_outer_mode_output
+  pkvm_iommu_driver_init
+  pkvm_iommu_finalize
+  pkvm_iommu_register
+  pkvm_iommu_resume
+  pkvm_iommu_suspend
+  __pkvm_load_el2_module
+  platform_bus_type
+  platform_device_add
+  platform_device_add_data
+  platform_device_add_resources
+  platform_device_alloc
+  platform_device_del
+  platform_device_put
+  platform_device_register
+  platform_device_register_full
+  platform_device_unregister
+  __platform_driver_probe
+  __platform_driver_register
+  platform_driver_unregister
+  platform_find_device_by_driver
+  platform_get_irq
+  platform_get_irq_byname
+  platform_get_irq_byname_optional
+  platform_get_irq_optional
+  platform_get_resource
+  platform_get_resource_byname
+  platform_irq_count
+  pm_genpd_add_subdomain
+  pm_genpd_init
+  pm_power_off
+  __pm_relax
+  pm_relax
+  pm_runtime_allow
+  __pm_runtime_disable
+  pm_runtime_enable
+  pm_runtime_forbid
+  pm_runtime_force_resume
+  pm_runtime_force_suspend
+  pm_runtime_get_if_active
+  __pm_runtime_idle
+  pm_runtime_irq_safe
+  __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_changed
+  power_supply_get_by_name
+  power_supply_get_by_phandle_array
+  power_supply_get_drvdata
+  power_supply_get_property
+  power_supply_put
+  power_supply_register
+  power_supply_reg_notifier
+  power_supply_set_property
+  power_supply_unregister
+  power_supply_unreg_notifier
+  pps_event
+  pps_register_source
+  pps_unregister_source
+  preempt_schedule
+  preempt_schedule_notrace
+  prepare_to_wait
+  prepare_to_wait_event
+  print_hex_dump
+  _printk
+  proc_create
+  proc_create_data
+  proc_create_single_data
+  proc_dointvec
+  proc_dostring
+  proc_mkdir
+  proc_mkdir_data
+  proc_remove
+  pskb_expand_head
+  __pskb_pull_tail
+  ___pskb_trim
+  put_device
+  put_disk
+  __put_net
+  put_pid
+  put_sg_io_hdr
+  __put_task_struct
+  put_unused_fd
+  put_vaddr_frames
+  queue_delayed_work_on
+  queue_work_on
+  radix_tree_delete_item
+  radix_tree_gang_lookup
+  radix_tree_insert
+  radix_tree_lookup
+  radix_tree_preload
+  ___ratelimit
+  raw_notifier_call_chain
+  raw_notifier_chain_register
+  raw_notifier_chain_unregister
+  _raw_read_lock
+  _raw_read_lock_bh
+  _raw_read_lock_irqsave
+  _raw_read_unlock
+  _raw_read_unlock_bh
+  _raw_read_unlock_irqrestore
+  _raw_spin_lock
+  _raw_spin_lock_bh
+  _raw_spin_lock_irq
+  _raw_spin_lock_irqsave
+  _raw_spin_trylock
+  _raw_spin_unlock
+  _raw_spin_unlock_bh
+  _raw_spin_unlock_irq
+  _raw_spin_unlock_irqrestore
+  _raw_write_lock
+  _raw_write_lock_irq
+  _raw_write_lock_irqsave
+  _raw_write_unlock
+  _raw_write_unlock_irq
+  _raw_write_unlock_irqrestore
+  rb_erase
+  rb_first
+  rb_insert_color
+  rb_next
+  rb_prev
+  rb_replace_node
+  rcu_barrier
+  __rcu_read_lock
+  __rcu_read_unlock
+  rdev_get_drvdata
+  rdev_get_id
+  reboot_mode
+  refcount_warn_saturate
+  __refrigerator
+  regcache_cache_only
+  regcache_drop_region
+  regcache_mark_dirty
+  regcache_sync
+  __register_blkdev
+  __register_chrdev
+  register_chrdev_region
+  register_console
+  register_die_notifier
+  register_inet6addr_notifier
+  register_inetaddr_notifier
+  register_kernel_break_hook
+  register_netdev
+  register_netdevice
+  register_netdevice_notifier
+  register_oom_notifier
+  register_pernet_device
+  register_pernet_subsys
+  register_pm_notifier
+  register_reboot_notifier
+  register_restart_handler
+  register_shrinker
+  register_syscore_ops
+  register_sysctl
+  register_sysctl_table
+  register_virtio_device
+  register_virtio_driver
+  regmap_async_complete
+  regmap_bulk_read
+  regmap_bulk_write
+  regmap_get_device
+  regmap_irq_get_virq
+  regmap_multi_reg_write
+  regmap_multi_reg_write_bypassed
+  regmap_raw_read
+  regmap_raw_write
+  regmap_raw_write_async
+  regmap_read
+  regmap_register_patch
+  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_sel_regmap
+  regulator_is_enabled
+  regulator_is_enabled_regmap
+  regulator_list_voltage_linear
+  regulator_map_voltage_linear
+  regulator_notifier_call_chain
+  regulator_put
+  regulator_set_voltage
+  regulator_set_voltage_sel_regmap
+  regulator_unregister
+  release_firmware
+  __release_region
+  remap_pfn_range
+  remap_vmalloc_range
+  remove_cpu
+  remove_proc_entry
+  remove_wait_queue
+  request_firmware
+  request_firmware_nowait
+  __request_percpu_irq
+  __request_region
+  request_threaded_irq
+  return_address
+  rfkill_alloc
+  rfkill_blocked
+  rfkill_destroy
+  rfkill_init_sw_state
+  rfkill_register
+  rfkill_resume_polling
+  rfkill_set_hw_state_reason
+  rfkill_unregister
+  rhashtable_free_and_destroy
+  rhashtable_insert_slow
+  rhltable_init
+  __rht_bucket_nested
+  rht_bucket_nested
+  rht_bucket_nested_insert
+  __root_device_register
+  root_device_unregister
+  round_jiffies
+  round_jiffies_relative
+  round_jiffies_up
+  rps_needed
+  rtc_class_close
+  rtc_class_open
+  rtc_read_time
+  rtc_time64_to_tm
+  rtc_tm_to_time64
+  rtc_update_irq
+  rtc_valid_tm
+  __rt_mutex_init
+  rt_mutex_lock
+  rt_mutex_trylock
+  rt_mutex_unlock
+  rtnl_is_locked
+  rtnl_lock
+  rtnl_unlock
+  sched_clock
+  sched_setattr_nocheck
+  sched_setscheduler
+  sched_setscheduler_nocheck
+  sched_show_task
+  schedule
+  schedule_timeout
+  schedule_timeout_interruptible
+  scnprintf
+  scsi_add_host_with_dma
+  scsi_alloc_request
+  scsi_autopm_get_device
+  scsi_autopm_put_device
+  scsi_block_requests
+  scsi_block_when_processing_errors
+  scsi_build_sense
+  scsi_change_queue_depth
+  scsi_cmd_allowed
+  scsi_command_size_tbl
+  scsi_device_get
+  scsi_device_put
+  scsi_done
+  scsi_host_alloc
+  scsi_host_put
+  scsi_ioctl
+  scsi_ioctl_block_when_processing_errors
+  __scsi_iterate_devices
+  scsi_normalize_sense
+  __scsi_print_sense
+  scsi_register_interface
+  scsi_remove_host
+  scsi_scan_host
+  scsi_set_sense_information
+  scsi_unblock_requests
+  sdev_prefix_printk
+  seq_hex_dump
+  seq_lseek
+  seq_open
+  __seq_open_private
+  seq_printf
+  seq_putc
+  seq_puts
+  seq_read
+  seq_release
+  seq_release_private
+  seq_write
+  set_capacity
+  set_capacity_and_notify
+  set_cpus_allowed_ptr
+  set_freezable
+  set_page_dirty
+  set_page_dirty_lock
+  __SetPageMovable
+  set_user_nice
+  sg_alloc_table
+  sg_alloc_table_from_pages_segment
+  sg_copy_buffer
+  sg_copy_from_buffer
+  sg_copy_to_buffer
+  sg_free_table
+  sg_init_one
+  sg_init_table
+  sg_miter_next
+  sg_miter_start
+  sg_miter_stop
+  sg_next
+  __sg_page_iter_next
+  __sg_page_iter_start
+  sg_pcopy_from_buffer
+  shmem_file_setup
+  simple_attr_open
+  simple_attr_read
+  simple_attr_release
+  simple_attr_write
+  simple_open
+  simple_read_from_buffer
+  simple_strtol
+  simple_strtoll
+  simple_strtoul
+  simple_strtoull
+  simple_write_to_buffer
+  single_open
+  single_open_size
+  single_release
+  skb_add_rx_frag
+  skb_checksum
+  skb_checksum_help
+  skb_clone
+  skb_clone_sk
+  skb_complete_wifi_ack
+  skb_copy
+  skb_copy_bits
+  skb_copy_expand
+  skb_dequeue
+  skb_dequeue_tail
+  skb_ensure_writable
+  __skb_get_hash
+  __skb_gso_segment
+  skb_pull
+  skb_push
+  skb_put
+  skb_queue_head
+  skb_queue_purge
+  skb_queue_tail
+  skb_realloc_headroom
+  skb_trim
+  skip_spaces
+  smp_call_function
+  smp_call_function_single
+  smp_call_on_cpu
+  snd_compr_stop_error
+  snd_ctl_add
+  snd_ctl_boolean_mono_info
+  snd_ctl_enum_info
+  snd_ctl_new1
+  snd_ctl_notify
+  snd_info_create_card_entry
+  snd_jack_set_key
+  snd_pcm_format_physical_width
+  snd_pcm_format_width
+  snd_pcm_hw_constraint_list
+  snd_pcm_lib_free_pages
+  snd_pcm_lib_ioctl
+  snd_pcm_lib_malloc_pages
+  snd_pcm_lib_preallocate_pages
+  snd_pcm_period_elapsed
+  snd_soc_add_component_controls
+  snd_soc_add_dai_controls
+  snd_soc_bytes_tlv_callback
+  snd_soc_card_get_kcontrol
+  snd_soc_card_jack_new_pins
+  snd_soc_component_disable_pin
+  snd_soc_component_enable_pin
+  snd_soc_component_force_enable_pin
+  snd_soc_component_get_pin_status
+  snd_soc_component_set_jack
+  snd_soc_component_set_pll
+  snd_soc_component_set_sysclk
+  snd_soc_daifmt_clock_provider_from_bitmap
+  snd_soc_daifmt_parse_clock_provider_raw
+  snd_soc_daifmt_parse_format
+  snd_soc_dai_set_pll
+  snd_soc_dai_set_sysclk
+  snd_soc_dai_set_tdm_slot
+  snd_soc_dapm_add_routes
+  snd_soc_dapm_del_routes
+  snd_soc_dapm_get_enum_double
+  snd_soc_dapm_get_volsw
+  snd_soc_dapm_ignore_suspend
+  snd_soc_dapm_kcontrol_widget
+  snd_soc_dapm_mixer_update_power
+  snd_soc_dapm_new_controls
+  snd_soc_dapm_put_enum_double
+  snd_soc_dapm_put_volsw
+  snd_soc_dapm_sync
+  snd_soc_get_enum_double
+  snd_soc_get_volsw
+  snd_soc_get_volsw_range
+  snd_soc_get_volsw_sx
+  snd_soc_info_enum_double
+  snd_soc_info_volsw
+  snd_soc_info_volsw_range
+  snd_soc_info_volsw_sx
+  snd_soc_lookup_component
+  snd_soc_new_compress
+  snd_soc_of_get_dai_link_codecs
+  snd_soc_of_get_dai_name
+  snd_soc_of_parse_card_name
+  snd_soc_params_to_bclk
+  snd_soc_put_enum_double
+  snd_soc_put_volsw
+  snd_soc_put_volsw_range
+  snd_soc_put_volsw_sx
+  snd_soc_register_card
+  snd_soc_register_component
+  snd_soc_runtime_set_dai_fmt
+  snd_soc_unregister_card
+  snd_soc_unregister_component
+  snprintf
+  soc_device_register
+  __sock_create
+  sock_release
+  sock_wfree
+  softnet_data
+  sort
+  __spi_alloc_controller
+  spi_bus_lock
+  spi_bus_unlock
+  spi_controller_resume
+  spi_controller_suspend
+  spi_delay_exec
+  spi_finalize_current_message
+  spi_register_controller
+  __spi_register_driver
+  spi_setup
+  spi_sync
+  spi_sync_locked
+  spi_unregister_controller
+  sprintf
+  sprint_symbol
+  srcu_init_notifier_head
+  srcu_notifier_call_chain
+  srcu_notifier_chain_register
+  srcu_notifier_chain_unregister
+  sscanf
+  __stack_chk_fail
+  static_key_disable
+  static_key_slow_dec
+  static_key_slow_inc
+  stop_machine
+  strcasecmp
+  strcat
+  strchr
+  strcmp
+  strcpy
+  strcspn
+  stream_open
+  strim
+  strlcat
+  strlcpy
+  strlen
+  strncasecmp
+  strncat
+  strncmp
+  strncpy
+  strncpy_from_user
+  strndup_user
+  strnlen
+  strnstr
+  strpbrk
+  strrchr
+  strscpy
+  strsep
+  strspn
+  strstr
+  subsys_system_register
+  suspend_set_ops
+  __sw_hweight16
+  __sw_hweight32
+  __sw_hweight64
+  __sw_hweight8
+  sync_blockdev
+  sync_file_create
+  sync_file_get_fence
+  synchronize_irq
+  synchronize_net
+  synchronize_rcu
+  syscon_regmap_lookup_by_phandle
+  sysfs_add_file_to_group
+  sysfs_add_link_to_group
+  sysfs_create_file_ns
+  sysfs_create_files
+  sysfs_create_group
+  sysfs_create_groups
+  sysfs_create_link
+  sysfs_emit
+  sysfs_emit_at
+  __sysfs_match_string
+  sysfs_notify
+  sysfs_remove_file_from_group
+  sysfs_remove_file_ns
+  sysfs_remove_group
+  sysfs_remove_groups
+  sysfs_remove_link
+  sysfs_remove_link_from_group
+  sysfs_streq
+  sysfs_update_group
+  sysrq_mask
+  system_freezable_wq
+  system_highpri_wq
+  system_long_wq
+  system_power_efficient_wq
+  system_state
+  system_unbound_wq
+  system_wq
+  sys_tz
+  task_active_pid_ns
+  tasklet_init
+  tasklet_kill
+  __tasklet_schedule
+  tasklet_setup
+  tasklet_unlock_wait
+  __task_pid_nr_ns
+  tcpci_get_tcpm_port
+  tcpci_irq
+  tcpci_register_port
+  tcpci_unregister_port
+  tcpm_cc_change
+  tcpm_pd_hard_reset
+  tcpm_pd_receive
+  tcpm_pd_transmit_complete
+  tcpm_port_clean
+  tcpm_port_is_toggling
+  tcpm_sink_frs
+  tcpm_sourcing_vbus
+  tcpm_vbus_change
+  thermal_cdev_update
+  thermal_cooling_device_unregister
+  thermal_of_cooling_device_register
+  thermal_zone_device_disable
+  thermal_zone_device_enable
+  thermal_zone_device_register
+  thermal_zone_device_unregister
+  thermal_zone_device_update
+  thread_group_cputime_adjusted
+  time64_to_tm
+  topology_update_thermal_pressure
+  _totalram_pages
+  touch_softlockup_watchdog
+  trace_event_buffer_commit
+  trace_event_buffer_reserve
+  trace_event_printf
+  trace_event_raw_init
+  trace_event_reg
+  trace_handle_return
+  __traceiter_android_rvh_typec_tcpci_get_vbus
+  __traceiter_android_vh_cpu_idle_enter
+  __traceiter_android_vh_cpu_idle_exit
+  __traceiter_android_vh_ipi_stop
+  __traceiter_android_vh_scheduler_tick
+  __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_ufs_check_int_errors
+  __traceiter_android_vh_ufs_compl_command
+  __traceiter_android_vh_ufs_fill_prdt
+  __traceiter_android_vh_ufs_prepare_command
+  __traceiter_android_vh_ufs_send_command
+  __traceiter_android_vh_ufs_send_tm_command
+  __traceiter_android_vh_ufs_send_uic_command
+  __traceiter_android_vh_ufs_update_sdev
+  __traceiter_android_vh_ufs_update_sysfs
+  __traceiter_clock_set_rate
+  __traceiter_device_pm_callback_end
+  __traceiter_device_pm_callback_start
+  __traceiter_gpu_mem_total
+  __traceiter_mmap_lock_acquire_returned
+  __traceiter_mmap_lock_released
+  __traceiter_mmap_lock_start_locking
+  __traceiter_suspend_resume
+  trace_output_call
+  __tracepoint_android_rvh_typec_tcpci_get_vbus
+  __tracepoint_android_vh_cpu_idle_enter
+  __tracepoint_android_vh_cpu_idle_exit
+  __tracepoint_android_vh_ipi_stop
+  __tracepoint_android_vh_scheduler_tick
+  __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_ufs_check_int_errors
+  __tracepoint_android_vh_ufs_compl_command
+  __tracepoint_android_vh_ufs_fill_prdt
+  __tracepoint_android_vh_ufs_prepare_command
+  __tracepoint_android_vh_ufs_send_command
+  __tracepoint_android_vh_ufs_send_tm_command
+  __tracepoint_android_vh_ufs_send_uic_command
+  __tracepoint_android_vh_ufs_update_sdev
+  __tracepoint_android_vh_ufs_update_sysfs
+  __tracepoint_clock_set_rate
+  __tracepoint_device_pm_callback_end
+  __tracepoint_device_pm_callback_start
+  __tracepoint_gpu_mem_total
+  __tracepoint_mmap_lock_acquire_returned
+  __tracepoint_mmap_lock_released
+  __tracepoint_mmap_lock_start_locking
+  tracepoint_probe_register
+  tracepoint_probe_unregister
+  __tracepoint_suspend_resume
+  trace_print_array_seq
+  trace_print_bitmask_seq
+  trace_print_flags_seq
+  trace_print_hex_seq
+  trace_print_symbols_seq
+  trace_raw_output_prep
+  trace_seq_printf
+  trace_seq_putc
+  __trace_trigger_soft_disabled
+  try_module_get
+  try_to_del_timer_sync
+  tty_flip_buffer_push
+  tty_insert_flip_string_fixed_flag
+  tty_kref_put
+  tty_port_tty_get
+  typec_mux_get_drvdata
+  typec_mux_register
+  typec_switch_get_drvdata
+  typec_switch_register
+  typec_switch_unregister
+  uart_add_one_port
+  uart_console_device
+  uart_console_write
+  uart_get_baud_rate
+  uart_parse_options
+  uart_register_driver
+  uart_remove_one_port
+  uart_resume_port
+  uart_set_options
+  uart_suspend_port
+  uart_try_toggle_sysrq
+  uart_unregister_driver
+  uart_update_timeout
+  uart_write_wakeup
+  __udelay
+  udp4_hwcsum
+  ufshcd_bkops_ctrl
+  ufshcd_hold
+  ufshcd_pltfrm_init
+  ufshcd_query_attr_retry
+  ufshcd_query_flag_retry
+  ufshcd_read_desc_param
+  ufshcd_release
+  ufshcd_remove
+  ufshcd_shutdown
+  ufshcd_system_resume
+  ufshcd_system_suspend
+  unlock_page
+  unmap_mapping_range
+  unpin_user_page
+  unregister_blkdev
+  __unregister_chrdev
+  unregister_chrdev_region
+  unregister_inet6addr_notifier
+  unregister_inetaddr_notifier
+  unregister_netdev
+  unregister_netdevice_many
+  unregister_netdevice_notifier
+  unregister_netdevice_queue
+  unregister_oom_notifier
+  unregister_pernet_device
+  unregister_pernet_subsys
+  unregister_pm_notifier
+  unregister_reboot_notifier
+  unregister_shrinker
+  unregister_syscore_ops
+  unregister_sysctl_table
+  unregister_virtio_device
+  unregister_virtio_driver
+  up
+  update_devfreq
+  up_read
+  up_write
+  usb_add_function
+  usb_add_hcd
+  usb_copy_descriptors
+  __usb_create_hcd
+  usb_disabled
+  usb_enable_autosuspend
+  usb_ep_autoconfig
+  usb_function_register
+  usb_function_unregister
+  usb_gadget_activate
+  usb_gadget_deactivate
+  usb_gadget_set_state
+  usb_hcd_is_primary_hcd
+  usb_hcd_platform_shutdown
+  usb_hub_find_child
+  usb_interface_id
+  usb_otg_state_string
+  usb_put_function_instance
+  usb_put_hcd
+  usb_register_notify
+  usb_remove_hcd
+  usb_role_switch_get_drvdata
+  usb_role_switch_register
+  usb_role_switch_unregister
+  usb_speed_string
+  usb_string_id
+  usb_udc_vbus_handler
+  usb_unregister_notify
+  __usecs_to_jiffies
+  usleep_range_state
+  utf8_data_table
+  uuid_gen
+  v4l2_ctrl_handler_free
+  v4l2_ctrl_handler_init_class
+  v4l2_ctrl_log_status
+  v4l2_ctrl_new_custom
+  v4l2_ctrl_new_std
+  v4l2_ctrl_new_std_menu
+  v4l2_device_register
+  v4l2_device_unregister
+  v4l2_fh_add
+  v4l2_fh_del
+  v4l2_fh_exit
+  v4l2_fh_init
+  v4l2_fh_open
+  v4l2_m2m_buf_queue
+  v4l2_m2m_buf_remove
+  v4l2_m2m_ctx_init
+  v4l2_m2m_ctx_release
+  v4l2_m2m_fop_mmap
+  v4l2_m2m_fop_poll
+  v4l2_m2m_get_curr_priv
+  v4l2_m2m_get_vq
+  v4l2_m2m_init
+  v4l2_m2m_ioctl_dqbuf
+  v4l2_m2m_ioctl_querybuf
+  v4l2_m2m_ioctl_reqbufs
+  v4l2_m2m_ioctl_streamoff
+  v4l2_m2m_ioctl_streamon
+  v4l2_m2m_job_finish
+  v4l2_m2m_next_buf
+  v4l2_m2m_qbuf
+  v4l2_m2m_release
+  vb2_buffer_done
+  vb2_dma_sg_memops
+  vb2_dqbuf
+  vb2_fop_mmap
+  vb2_fop_poll
+  vb2_fop_read
+  vb2_fop_release
+  vb2_ioctl_create_bufs
+  vb2_ioctl_dqbuf
+  vb2_ioctl_expbuf
+  vb2_ioctl_qbuf
+  vb2_ioctl_querybuf
+  vb2_ioctl_reqbufs
+  vb2_ioctl_streamoff
+  vb2_ioctl_streamon
+  vb2_mmap
+  vb2_ops_wait_finish
+  vb2_ops_wait_prepare
+  vb2_plane_cookie
+  vb2_plane_vaddr
+  vb2_poll
+  vb2_qbuf
+  vb2_querybuf
+  vb2_queue_init
+  vb2_queue_release
+  vb2_reqbufs
+  vb2_streamoff
+  vb2_streamon
+  vb2_vmalloc_memops
+  vb2_wait_for_all_buffers
+  verify_pkcs7_signature
+  vfree
+  video_devdata
+  video_device_alloc
+  video_device_release
+  video_device_release_empty
+  video_ioctl2
+  __video_register_device
+  video_unregister_device
+  virtqueue_add_inbuf
+  virtqueue_add_outbuf
+  virtqueue_detach_unused_buf
+  virtqueue_get_buf
+  virtqueue_get_vring_size
+  virtqueue_kick
+  virtqueue_kick_prepare
+  virtqueue_notify
+  vmalloc
+  vmalloc_to_page
+  vmalloc_user
+  vmap
+  vmf_insert_pfn_prot
+  vprintk
+  vprintk_emit
+  vring_del_virtqueue
+  vring_interrupt
+  vring_new_virtqueue
+  vsnprintf
+  vunmap
+  vzalloc
+  vzalloc_node
+  wait_for_completion
+  wait_for_completion_interruptible
+  wait_for_completion_interruptible_timeout
+  wait_for_completion_timeout
+  wait_woken
+  __wake_up
+  __wake_up_locked
+  wake_up_process
+  wakeup_source_add
+  wakeup_source_create
+  wakeup_source_destroy
+  wakeup_source_register
+  wakeup_source_unregister
+  __wake_up_sync
+  __warn_printk
+  watchdog_init_timeout
+  watchdog_register_device
+  watchdog_set_restart_priority
+  watchdog_unregister_device
+  wireless_nlevent_flush
+  woken_wake_function
+  work_busy
+  __xa_alloc
+  xa_clear_mark
+  xa_destroy
+  xa_erase
+  xa_find
+  xa_find_after
+  xa_get_mark
+  xa_load
+  xa_set_mark
+  __xfrm_state_destroy
+  xfrm_state_lookup_byspi
+  xfrm_stateonly_find
+  xhci_gen_setup
+  xhci_init_driver
+  xhci_resume
+  xhci_run
+  xhci_suspend
diff --git a/android/abi_gki_aarch64_qcom b/android/abi_gki_aarch64_qcom
new file mode 100644
index 0000000..6a43499
--- /dev/null
+++ b/android/abi_gki_aarch64_qcom
@@ -0,0 +1,4049 @@
+[abi_symbol_list]
+  access_process_vm
+  activate_task
+  add_cpu
+  add_device_randomness
+  add_memory
+  addrconf_add_linklocal
+  addrconf_prefix_rcv_add_addr
+  add_taint
+  add_timer
+  add_timer_on
+  add_uevent_var
+  add_wait_queue
+  add_wait_queue_exclusive
+  adjust_managed_page_count
+  aes_encrypt
+  aes_expandkey
+  alarm_expires_remaining
+  alloc_anon_inode
+  alloc_candev_mqs
+  alloc_can_err_skb
+  alloc_canfd_skb
+  alloc_can_skb
+  alloc_canxl_skb
+  alloc_chrdev_region
+  alloc_etherdev_mqs
+  alloc_io_pgtable_ops
+  alloc_netdev_mqs
+  __alloc_pages
+  __alloc_percpu
+  __alloc_percpu_gfp
+  __alloc_skb
+  alloc_skb_with_frags
+  alloc_swapdev_block
+  alloc_workqueue
+  alt_cb_patch_nops
+  amba_bustype
+  amba_driver_register
+  amba_driver_unregister
+  android_rvh_probe_register
+  anon_inode_getfile
+  arc4_crypt
+  arc4_setkey
+  __arch_clear_user
+  __arch_copy_from_user
+  __arch_copy_to_user
+  arch_freq_scale
+  arch_timer_read_counter
+  argv_free
+  argv_split
+  arm64_use_ng_mappings
+  __arm_smccc_smc
+  __arm_smccc_sve_check
+  async_schedule_node
+  async_synchronize_cookie
+  atomic_notifier_call_chain
+  atomic_notifier_chain_register
+  atomic_notifier_chain_unregister
+  autoremove_wake_function
+  __auxiliary_driver_register
+  auxiliary_driver_unregister
+  available_idle_cpu
+  backlight_device_get_by_type
+  backlight_device_register
+  backlight_device_set_brightness
+  backlight_device_unregister
+  __balance_callbacks
+  balance_push_callback
+  baswap
+  bcmp
+  bdev_end_io_acct
+  bdev_start_io_acct
+  bin2hex
+  bio_endio
+  bio_end_io_acct_remapped
+  bio_start_io_acct
+  bitmap_allocate_region
+  __bitmap_and
+  __bitmap_andnot
+  __bitmap_clear
+  __bitmap_complement
+  __bitmap_equal
+  bitmap_find_next_zero_area_off
+  bitmap_free
+  __bitmap_intersects
+  __bitmap_or
+  bitmap_print_to_pagebuf
+  bitmap_release_region
+  __bitmap_set
+  __bitmap_subset
+  __bitmap_weight
+  bitmap_zalloc
+  bit_wait
+  bit_wait_timeout
+  __blk_alloc_disk
+  blkdev_get_by_dev
+  blk_execute_rq
+  blk_execute_rq_nowait
+  __blk_mq_alloc_disk
+  blk_mq_alloc_request
+  blk_mq_alloc_tag_set
+  blk_mq_complete_request
+  blk_mq_end_request
+  blk_mq_end_request_batch
+  blk_mq_free_request
+  blk_mq_free_tag_set
+  blk_mq_map_queues
+  blk_mq_quiesce_queue
+  blk_mq_requeue_request
+  blk_mq_rq_cpu
+  blk_mq_start_request
+  blk_mq_start_stopped_hw_queues
+  blk_mq_stop_hw_queue
+  blk_mq_unquiesce_queue
+  blk_mq_virtio_map_queues
+  blk_queue_alignment_offset
+  blk_queue_flag_clear
+  blk_queue_flag_set
+  blk_queue_io_min
+  blk_queue_io_opt
+  blk_queue_logical_block_size
+  blk_queue_max_discard_sectors
+  blk_queue_max_discard_segments
+  blk_queue_max_hw_sectors
+  blk_queue_max_secure_erase_sectors
+  blk_queue_max_segments
+  blk_queue_max_segment_size
+  blk_queue_max_write_zeroes_sectors
+  blk_queue_physical_block_size
+  blk_queue_write_cache
+  blk_rq_map_kern
+  __blk_rq_map_sg
+  blk_rq_map_user_io
+  blk_rq_unmap_user
+  blk_status_to_errno
+  blocking_notifier_call_chain
+  blocking_notifier_chain_register
+  blocking_notifier_chain_unregister
+  bpf_dispatcher_xdp_func
+  bpf_master_redirect_enabled_key
+  bpf_prog_add
+  bpf_prog_put
+  bpf_prog_sub
+  bpf_stats_enabled_key
+  bpf_trace_run1
+  bpf_trace_run10
+  bpf_trace_run11
+  bpf_trace_run12
+  bpf_trace_run2
+  bpf_trace_run3
+  bpf_trace_run4
+  bpf_trace_run5
+  bpf_trace_run6
+  bpf_trace_run7
+  bpf_trace_run8
+  bpf_trace_run9
+  bpf_warn_invalid_xdp_action
+  bt_accept_dequeue
+  bt_accept_enqueue
+  bt_accept_unlink
+  btbcm_check_bdaddr
+  btbcm_finalize
+  btbcm_initialize
+  btbcm_patchram
+  btbcm_read_pcm_int_params
+  btbcm_set_bdaddr
+  btbcm_setup_apple
+  btbcm_setup_patchram
+  btbcm_write_pcm_int_params
+  bt_debugfs
+  bt_err
+  bt_err_ratelimited
+  bt_info
+  bt_procfs_cleanup
+  bt_procfs_init
+  bt_sock_ioctl
+  bt_sock_link
+  bt_sock_poll
+  bt_sock_reclassify_lock
+  bt_sock_recvmsg
+  bt_sock_register
+  bt_sock_stream_recvmsg
+  bt_sock_unlink
+  bt_sock_unregister
+  bt_sock_wait_ready
+  bt_sock_wait_state
+  bt_status
+  bt_to_errno
+  bt_warn
+  bt_warn_ratelimited
+  build_skb
+  bus_find_device
+  bus_for_each_dev
+  bus_register
+  bus_register_notifier
+  bus_unregister
+  bus_unregister_notifier
+  caches_clean_inval_pou
+  call_netdevice_notifiers
+  call_rcu
+  call_rcu_tasks
+  call_rcu_tasks_trace
+  call_srcu
+  can_bus_off
+  cancel_delayed_work
+  cancel_delayed_work_sync
+  cancel_work_sync
+  can_change_mtu
+  can_change_state
+  can_dropped_invalid_skb
+  can_eth_ioctl_hwts
+  can_ethtool_op_get_ts_info_hwts
+  can_fd_dlc2len
+  can_fd_len2dlc
+  can_free_echo_skb
+  can_get_echo_skb
+  can_get_state_str
+  can_proto_register
+  can_proto_unregister
+  can_put_echo_skb
+  can_rx_offload_add_fifo
+  can_rx_offload_add_manual
+  can_rx_offload_add_timestamp
+  can_rx_offload_del
+  can_rx_offload_enable
+  can_rx_offload_get_echo_skb
+  can_rx_offload_irq_finish
+  can_rx_offload_irq_offload_fifo
+  can_rx_offload_irq_offload_timestamp
+  can_rx_offload_queue_tail
+  can_rx_offload_queue_timestamp
+  can_rx_offload_threaded_irq_finish
+  can_rx_register
+  can_rx_unregister
+  can_send
+  can_skb_get_frame_len
+  can_sock_destruct
+  capable
+  cdc_parse_cdc_header
+  cdev_add
+  cdev_alloc
+  cdev_del
+  cdev_device_add
+  cdev_device_del
+  cdev_init
+  cgroup_path_ns
+  cgroup_taskset_first
+  cgroup_taskset_next
+  check_move_unevictable_pages
+  __check_object_size
+  check_preempt_curr
+  check_zeroed_user
+  __class_create
+  class_destroy
+  class_dev_iter_exit
+  class_dev_iter_init
+  class_dev_iter_next
+  class_find_device
+  class_for_each_device
+  class_interface_unregister
+  __class_register
+  class_unregister
+  cleanup_srcu_struct
+  clear_page
+  __ClearPageMovable
+  clk_bulk_disable
+  clk_bulk_enable
+  clk_bulk_prepare
+  clk_bulk_put_all
+  clk_bulk_unprepare
+  __clk_determine_rate
+  clk_disable
+  clk_enable
+  clk_fixed_factor_ops
+  clk_fixed_rate_ops
+  clk_get
+  __clk_get_hw
+  __clk_get_name
+  clk_get_parent
+  clk_get_rate
+  clk_hw_get_flags
+  clk_hw_get_name
+  clk_hw_get_num_parents
+  clk_hw_get_parent
+  clk_hw_get_parent_by_index
+  clk_hw_get_rate
+  clk_hw_get_rate_range
+  clk_hw_is_enabled
+  clk_hw_is_prepared
+  clk_hw_register
+  clk_hw_round_rate
+  clk_hw_unregister
+  __clk_is_enabled
+  clk_is_match
+  __clk_mux_determine_rate_closest
+  clk_notifier_register
+  clk_notifier_unregister
+  clk_prepare
+  clk_put
+  clk_register
+  clk_restore_context
+  clk_round_rate
+  clk_save_context
+  clk_set_parent
+  clk_set_rate
+  clk_sync_state
+  clk_unprepare
+  close_candev
+  close_fd
+  cma_alloc
+  cma_get_name
+  cma_release
+  compat_ptr_ioctl
+  complete
+  complete_all
+  completion_done
+  component_add
+  component_bind_all
+  component_del
+  component_master_add_with_match
+  component_master_del
+  component_match_add_release
+  component_unbind_all
+  cond_synchronize_rcu
+  cond_synchronize_rcu_expedited
+  config_ep_by_speed
+  configfs_register_group
+  configfs_register_subsystem
+  configfs_unregister_group
+  configfs_unregister_subsystem
+  config_group_init
+  config_group_init_type_name
+  config_item_get
+  config_item_put
+  config_item_set_name
+  console_stop
+  console_suspend_enabled
+  __const_udelay
+  consume_skb
+  contig_page_data
+  _copy_from_iter
+  copy_from_kernel_nofault
+  __copy_overflow
+  _copy_to_iter
+  __cpu_active_mask
+  cpu_bit_bitmap
+  __cpu_dying_mask
+  cpufreq_cpu_get
+  cpufreq_cpu_get_raw
+  cpufreq_cpu_put
+  cpufreq_dbs_governor_exit
+  cpufreq_dbs_governor_init
+  cpufreq_dbs_governor_limits
+  cpufreq_dbs_governor_start
+  cpufreq_dbs_governor_stop
+  cpufreq_disable_fast_switch
+  cpufreq_driver_fast_switch
+  cpufreq_driver_resolve_freq
+  __cpufreq_driver_target
+  cpufreq_enable_boost_support
+  cpufreq_enable_fast_switch
+  cpufreq_freq_attr_scaling_available_freqs
+  cpufreq_freq_attr_scaling_boost_freqs
+  cpufreq_generic_frequency_table_verify
+  cpufreq_get_driver_data
+  cpufreq_get_policy
+  cpufreq_quick_get_max
+  cpufreq_register_driver
+  cpufreq_register_governor
+  cpufreq_register_notifier
+  cpufreq_table_index_unsorted
+  cpufreq_unregister_driver
+  cpufreq_unregister_governor
+  __cpuhp_remove_state
+  __cpuhp_setup_state
+  __cpuhp_setup_state_cpuslocked
+  __cpuhp_state_add_instance
+  __cpuhp_state_remove_instance
+  cpu_hwcaps
+  cpuidle_governor_latency_req
+  cpuidle_register_governor
+  cpu_irqtime
+  cpu_is_hotpluggable
+  cpu_latency_qos_add_request
+  cpu_latency_qos_remove_request
+  cpu_latency_qos_request_active
+  cpu_latency_qos_update_request
+  cpumask_any_and_distribute
+  cpumask_next_wrap
+  cpu_number
+  __cpu_online_mask
+  cpu_pm_register_notifier
+  cpu_pm_unregister_notifier
+  __cpu_possible_mask
+  __cpu_present_mask
+  cpupri_find_fitness
+  cpu_scale
+  cpus_read_lock
+  cpus_read_unlock
+  cpu_subsys
+  cpu_topology
+  crc16
+  crc32_be
+  crc32_le
+  crc8
+  crc8_populate_msb
+  crc_ccitt
+  crypto_aead_decrypt
+  crypto_aead_encrypt
+  crypto_aead_setauthsize
+  crypto_aead_setkey
+  crypto_ahash_digest
+  crypto_ahash_setkey
+  crypto_alloc_aead
+  crypto_alloc_ahash
+  crypto_alloc_base
+  crypto_alloc_kpp
+  crypto_alloc_shash
+  crypto_alloc_skcipher
+  crypto_alloc_sync_skcipher
+  crypto_comp_compress
+  crypto_comp_decompress
+  crypto_default_rng
+  crypto_dequeue_request
+  crypto_destroy_tfm
+  crypto_ecdh_encode_key
+  crypto_ecdh_key_len
+  crypto_enqueue_request
+  crypto_get_default_rng
+  crypto_has_ahash
+  crypto_has_alg
+  crypto_init_queue
+  __crypto_memneq
+  crypto_put_default_rng
+  crypto_register_aead
+  crypto_register_ahash
+  crypto_register_rng
+  crypto_register_rngs
+  crypto_register_skcipher
+  crypto_shash_digest
+  crypto_shash_final
+  crypto_shash_finup
+  crypto_shash_setkey
+  crypto_shash_tfm_digest
+  crypto_shash_update
+  crypto_skcipher_decrypt
+  crypto_skcipher_encrypt
+  crypto_skcipher_setkey
+  crypto_unregister_aead
+  crypto_unregister_ahash
+  crypto_unregister_rng
+  crypto_unregister_rngs
+  crypto_unregister_skcipher
+  __crypto_xor
+  css_next_child
+  csum_ipv6_magic
+  csum_partial
+  csum_tcpudp_nofold
+  _ctype
+  datagram_poll
+  dbs_update
+  deactivate_task
+  debugfs_attr_read
+  debugfs_attr_write
+  debugfs_create_atomic_t
+  debugfs_create_blob
+  debugfs_create_bool
+  debugfs_create_dir
+  debugfs_create_file
+  debugfs_create_file_unsafe
+  debugfs_create_symlink
+  debugfs_create_u16
+  debugfs_create_u32
+  debugfs_create_u64
+  debugfs_create_u8
+  debugfs_create_ulong
+  debugfs_create_x32
+  debugfs_create_x64
+  debugfs_create_x8
+  debugfs_file_get
+  debugfs_file_put
+  debugfs_lookup
+  debugfs_remove
+  debugfs_rename
+  debug_locks_off
+  debug_locks_silent
+  dec_node_page_state
+  dec_zone_page_state
+  default_llseek
+  default_wake_function
+  deferred_free
+  delayed_work_timer_fn
+  del_gendisk
+  del_timer
+  del_timer_sync
+  desc_to_gpio
+  destroy_workqueue
+  dev_add_pack
+  dev_addr_mod
+  dev_alloc_name
+  dev_change_flags
+  __dev_change_net_namespace
+  dev_close
+  dev_close_many
+  dev_coredumpm
+  dev_coredumpv
+  _dev_crit
+  dev_driver_string
+  _dev_err
+  dev_err_probe
+  dev_fetch_sw_netstats
+  devfreq_add_device
+  devfreq_add_governor
+  devfreq_cooling_unregister
+  devfreq_get_devfreq_by_node
+  devfreq_remove_device
+  devfreq_remove_governor
+  devfreq_resume_device
+  devfreq_suspend_device
+  dev_fwnode
+  dev_getbyhwaddr_rcu
+  __dev_get_by_index
+  dev_get_by_index
+  dev_get_by_index_rcu
+  __dev_get_by_name
+  dev_get_by_name
+  dev_get_by_name_rcu
+  dev_getfirstbyhwtype
+  dev_get_flags
+  dev_get_regmap
+  dev_get_stats
+  dev_get_tstats64
+  device_add
+  device_add_disk
+  device_add_groups
+  device_create
+  device_create_file
+  device_create_with_groups
+  device_del
+  device_destroy
+  device_find_child
+  device_for_each_child
+  device_for_each_child_reverse
+  device_get_child_node_count
+  device_get_dma_attr
+  device_get_match_data
+  device_get_next_child_node
+  device_get_phy_mode
+  device_initialize
+  device_link_add
+  device_match_fwnode
+  device_match_name
+  device_match_of_node
+  device_move
+  device_property_match_string
+  device_property_present
+  device_property_read_string
+  device_property_read_u16_array
+  device_property_read_u32_array
+  device_property_read_u8_array
+  device_register
+  device_remove_file
+  device_rename
+  device_set_wakeup_capable
+  device_set_wakeup_enable
+  device_show_int
+  device_store_int
+  device_unregister
+  device_wakeup_disable
+  device_wakeup_enable
+  _dev_info
+  __dev_kfree_skb_any
+  __dev_kfree_skb_irq
+  dev_load
+  devm_add_action
+  devm_alloc_etherdev_mqs
+  devm_backlight_device_register
+  devm_bitmap_zalloc
+  devm_blk_crypto_profile_init
+  devm_clk_bulk_get
+  devm_clk_bulk_get_all
+  devm_clk_get
+  devm_clk_get_optional
+  devm_clk_hw_register
+  devm_clk_put
+  devm_clk_register
+  dev_mc_sync
+  dev_mc_sync_multiple
+  dev_mc_unsync
+  devm_device_add_group
+  devm_device_remove_group
+  devm_drm_of_get_bridge
+  devm_extcon_dev_allocate
+  devm_extcon_dev_register
+  devm_extcon_dev_unregister
+  devm_free_irq
+  devm_fwnode_iio_channel_get_by_name
+  devm_fwnode_pwm_get
+  devm_gen_pool_create
+  devm_gh_rm_register_platform_ops
+  devm_gpiochip_add_data_with_key
+  devm_gpiod_get
+  devm_gpiod_get_optional
+  devm_gpio_request_one
+  devm_hwspin_lock_register
+  devm_i2c_new_dummy_device
+  devm_iio_channel_get
+  devm_iio_device_alloc
+  __devm_iio_device_register
+  devm_input_allocate_device
+  devm_ioremap
+  devm_ioremap_resource
+  devm_ioremap_wc
+  devm_iounmap
+  devm_kasprintf
+  devm_kfree
+  devm_kmalloc
+  devm_kmemdup
+  devm_krealloc
+  devm_kstrdup
+  devm_led_classdev_flash_register_ext
+  devm_led_classdev_register_ext
+  devm_mbox_controller_register
+  devm_mipi_dsi_attach
+  devm_mipi_dsi_device_register_full
+  devm_nvmem_cell_get
+  devm_nvmem_device_get
+  devm_nvmem_register
+  devm_of_clk_add_hw_provider
+  devm_of_icc_get
+  __devm_of_phy_provider_register
+  devm_of_platform_populate
+  devm_pci_alloc_host_bridge
+  devm_phy_create
+  devm_phy_get
+  devm_phy_package_join
+  devm_pinctrl_get
+  devm_pinctrl_put
+  devm_pinctrl_register
+  devm_pinctrl_register_and_init
+  devm_platform_get_and_ioremap_resource
+  devm_platform_ioremap_resource
+  devm_platform_ioremap_resource_byname
+  devm_power_supply_register
+  devm_pwm_get
+  devm_regmap_add_irq_chip
+  devm_regmap_del_irq_chip
+  devm_regmap_field_alloc
+  __devm_regmap_init
+  __devm_regmap_init_i2c
+  __devm_regmap_init_mmio_clk
+  __devm_regmap_init_spmi_ext
+  devm_regulator_bulk_get
+  devm_regulator_get
+  devm_regulator_get_exclusive
+  devm_regulator_get_optional
+  devm_regulator_put
+  devm_regulator_register
+  devm_regulator_register_notifier
+  devm_request_any_context_irq
+  __devm_request_region
+  devm_request_threaded_irq
+  __devm_reset_control_get
+  devm_reset_controller_register
+  devm_rtc_allocate_device
+  __devm_rtc_register_device
+  devm_snd_soc_register_card
+  devm_thermal_of_cooling_device_register
+  devm_thermal_of_zone_register
+  devm_usb_get_phy_by_node
+  devm_usb_get_phy_by_phandle
+  dev_nit_active
+  _dev_notice
+  dev_open
+  dev_pm_clear_wake_irq
+  dev_pm_domain_attach
+  dev_pm_domain_attach_by_name
+  dev_pm_domain_detach
+  dev_pm_genpd_add_notifier
+  dev_pm_genpd_remove_notifier
+  dev_pm_genpd_set_next_wakeup
+  dev_pm_genpd_set_performance_state
+  dev_pm_opp_add
+  dev_pm_opp_adjust_voltage
+  dev_pm_opp_clear_config
+  dev_pm_opp_disable
+  dev_pm_opp_enable
+  dev_pm_opp_find_freq_ceil
+  dev_pm_opp_find_freq_exact
+  dev_pm_opp_find_freq_floor
+  dev_pm_opp_get_opp_count
+  dev_pm_opp_get_voltage
+  dev_pm_opp_of_add_table
+  dev_pm_opp_of_cpumask_remove_table
+  dev_pm_opp_of_find_icc_paths
+  dev_pm_opp_of_register_em
+  dev_pm_opp_of_remove_table
+  dev_pm_opp_put
+  dev_pm_opp_remove
+  dev_pm_opp_remove_all_dynamic
+  dev_pm_opp_set_config
+  dev_pm_opp_set_opp
+  dev_pm_opp_set_rate
+  dev_pm_opp_set_sharing_cpus
+  dev_pm_qos_add_notifier
+  dev_pm_qos_add_request
+  dev_pm_qos_remove_notifier
+  dev_pm_qos_remove_request
+  dev_pm_qos_update_request
+  dev_pm_set_wake_irq
+  _dev_printk
+  __dev_queue_xmit
+  dev_remove_pack
+  devres_add
+  __devres_alloc_node
+  devres_free
+  devres_release
+  dev_set_allmulti
+  dev_set_mac_address
+  dev_set_mtu
+  dev_set_name
+  dev_set_promiscuity
+  dev_uc_add
+  dev_uc_del
+  dev_uc_sync
+  dev_uc_sync_multiple
+  dev_uc_unsync
+  _dev_warn
+  disable_irq
+  disable_irq_nosync
+  disable_percpu_irq
+  divider_get_val
+  divider_recalc_rate
+  divider_ro_round_rate_parent
+  divider_round_rate_parent
+  dma_alloc_attrs
+  dma_alloc_noncontiguous
+  dma_alloc_pages
+  dma_async_device_register
+  dma_async_device_unregister
+  dma_async_tx_descriptor_init
+  dma_buf_attach
+  dma_buf_begin_cpu_access
+  dma_buf_begin_cpu_access_partial
+  dma_buf_detach
+  dma_buf_end_cpu_access
+  dma_buf_end_cpu_access_partial
+  dma_buf_export
+  dma_buf_fd
+  dma_buf_get
+  dma_buf_get_each
+  dma_buf_get_flags
+  dma_buf_map_attachment
+  dma_buf_put
+  dma_buf_unmap_attachment
+  dma_buf_vmap
+  dma_buf_vunmap
+  dma_contiguous_default_area
+  dma_fence_add_callback
+  dma_fence_array_create
+  dma_fence_array_ops
+  dma_fence_chain_init
+  dma_fence_context_alloc
+  dma_fence_default_wait
+  dma_fence_enable_sw_signaling
+  dma_fence_free
+  dma_fence_get_status
+  dma_fence_init
+  dma_fence_release
+  dma_fence_remove_callback
+  dma_fence_signal
+  dma_fence_signal_locked
+  dma_fence_signal_timestamp_locked
+  dma_fence_wait_timeout
+  dma_free_attrs
+  dma_free_noncontiguous
+  dma_free_pages
+  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
+  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_resv_fini
+  dma_resv_get_singleton
+  dma_resv_init
+  dma_resv_iter_first
+  dma_resv_iter_next
+  dma_resv_wait_timeout
+  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
+  dma_vmap_noncontiguous
+  dma_vunmap_noncontiguous
+  do_trace_netlink_extack
+  do_trace_rcu_torture_read
+  double_rq_lock
+  do_wait_intr
+  do_wait_intr_irq
+  down
+  down_read
+  down_timeout
+  down_write
+  d_path
+  dput
+  dql_completed
+  dql_reset
+  drain_workqueue
+  driver_attach
+  driver_find_device
+  driver_register
+  driver_set_override
+  driver_unregister
+  drm_add_edid_modes
+  drm_add_modes_noedid
+  drm_atomic_bridge_chain_disable
+  drm_atomic_bridge_chain_enable
+  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_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_check
+  drm_atomic_helper_cleanup_planes
+  drm_atomic_helper_commit_duplicated_state
+  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_dirtyfb
+  drm_atomic_helper_disable_plane
+  drm_atomic_helper_duplicate_state
+  drm_atomic_helper_page_flip
+  __drm_atomic_helper_plane_duplicate_state
+  drm_atomic_helper_prepare_planes
+  __drm_atomic_helper_private_obj_duplicate_state
+  drm_atomic_helper_set_config
+  drm_atomic_helper_shutdown
+  drm_atomic_helper_swap_state
+  drm_atomic_helper_update_legacy_modeset_state
+  drm_atomic_helper_update_plane
+  drm_atomic_helper_wait_for_fences
+  drm_atomic_helper_wait_for_vblanks
+  drm_atomic_private_obj_fini
+  drm_atomic_private_obj_init
+  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_clear
+  drm_atomic_state_default_clear
+  drm_atomic_state_default_release
+  __drm_atomic_state_free
+  drm_atomic_state_init
+  drm_bridge_add
+  drm_bridge_attach
+  drm_bridge_chain_disable
+  drm_bridge_chain_enable
+  drm_bridge_chain_mode_set
+  drm_bridge_chain_post_disable
+  drm_bridge_chain_pre_enable
+  drm_bridge_remove
+  drm_client_init
+  drm_client_modeset_commit_locked
+  drm_client_register
+  drm_compat_ioctl
+  drm_connector_attach_encoder
+  drm_connector_cleanup
+  drm_connector_init
+  drm_connector_list_iter_begin
+  drm_connector_list_iter_end
+  drm_connector_list_iter_next
+  drm_connector_list_update
+  drm_connector_register
+  drm_connector_unregister
+  drm_connector_update_edid_property
+  drm_crtc_add_crc_entry
+  drm_crtc_cleanup
+  __drm_crtc_commit_free
+  drm_crtc_commit_wait
+  drm_crtc_handle_vblank
+  drm_crtc_init_with_planes
+  drm_crtc_send_vblank_event
+  drm_crtc_set_max_vblank_count
+  drm_crtc_vblank_off
+  drm_crtc_vblank_on
+  drm_crtc_vblank_reset
+  drm_crtc_wait_one_vblank
+  ___drm_dbg
+  __drm_debug
+  drm_detect_hdmi_monitor
+  drm_detect_monitor_audio
+  drm_dev_alloc
+  __drm_dev_dbg
+  drm_dev_printk
+  drm_dev_put
+  drm_dev_register
+  drm_dev_unregister
+  drm_display_mode_from_cea_vic
+  drm_edid_duplicate
+  drm_edid_get_monitor_name
+  drm_edid_is_valid
+  drm_encoder_cleanup
+  drm_encoder_init
+  __drm_err
+  drm_event_reserve_init_locked
+  drm_format_info
+  drm_framebuffer_init
+  drm_framebuffer_lookup
+  drm_framebuffer_remove
+  drm_framebuffer_unregister_private
+  drm_gem_create_mmap_offset
+  drm_gem_fb_create_handle
+  drm_gem_fb_destroy
+  drm_gem_fb_get_obj
+  drm_gem_get_pages
+  drm_gem_handle_create
+  drm_gem_mmap
+  drm_gem_mmap_obj
+  drm_gem_object_free
+  drm_gem_object_init
+  drm_gem_object_lookup
+  drm_gem_object_release
+  drm_gem_prime_fd_to_handle
+  drm_gem_prime_handle_to_fd
+  drm_gem_private_object_init
+  drm_gem_put_pages
+  drm_gem_vm_close
+  drm_gem_vm_open
+  drm_get_connector_status_name
+  drm_get_edid
+  drm_get_format_info
+  drm_helper_hpd_irq_event
+  drm_helper_mode_fill_fb_struct
+  drm_helper_probe_single_connector_modes
+  drm_ioctl
+  drm_is_current_master
+  drm_kms_helper_hotplug_event
+  drm_kms_helper_poll_disable
+  drm_kms_helper_poll_enable
+  drm_kms_helper_poll_fini
+  drm_kms_helper_poll_init
+  drm_master_get
+  drm_master_put
+  drm_mm_init
+  drm_mm_insert_node_in_range
+  drmm_mode_config_init
+  drm_mm_remove_node
+  drm_mm_takedown
+  drm_mode_config_cleanup
+  drm_mode_config_reset
+  drm_mode_convert_umode
+  drm_mode_copy
+  drm_mode_create
+  drm_mode_create_dp_colorspace_property
+  drm_mode_create_tile_group
+  drm_mode_debug_printmodeline
+  drm_mode_duplicate
+  drm_mode_equal
+  drm_mode_is_420_only
+  drm_mode_match
+  drm_mode_object_find
+  drm_mode_object_get
+  drm_mode_object_put
+  drm_mode_probed_add
+  drm_mode_prune_invalid
+  drm_modeset_acquire_fini
+  drm_modeset_acquire_init
+  drm_modeset_backoff
+  drm_mode_set_crtcinfo
+  drm_modeset_drop_locks
+  drm_modeset_lock
+  drm_modeset_lock_all
+  drm_modeset_lock_all_ctx
+  drm_modeset_lock_single_interruptible
+  drm_mode_set_name
+  drm_modeset_unlock
+  drm_modeset_unlock_all
+  drm_mode_sort
+  drm_mode_vrefresh
+  drm_object_attach_property
+  drm_object_property_set_value
+  drm_of_component_match_add
+  drm_of_get_data_lanes_count
+  drm_open
+  drm_panel_add
+  drm_panel_init
+  drm_panel_remove
+  drm_plane_cleanup
+  drm_plane_create_rotation_property
+  drm_poll
+  drm_prime_gem_destroy
+  drm_prime_pages_to_sg
+  drm_printf
+  __drm_printfn_coredump
+  __drm_printfn_debug
+  drm_property_blob_get
+  drm_property_blob_put
+  drm_property_create
+  drm_property_create_bitmask
+  drm_property_create_blob
+  drm_property_create_enum
+  drm_property_create_range
+  drm_property_lookup_blob
+  __drm_puts_coredump
+  drm_read
+  drm_release
+  drm_rotation_simplify
+  drm_send_event_locked
+  drm_set_preferred_mode
+  drm_sysfs_connector_status_event
+  drm_universal_plane_init
+  drm_vblank_init
+  drm_wait_one_vblank
+  dst_cache_destroy
+  dst_cache_get
+  dst_cache_init
+  dst_cache_set_ip4
+  dst_cache_set_ip6
+  dst_release
+  dump_stack
+  __dynamic_dev_dbg
+  __dynamic_pr_debug
+  edac_device_add_device
+  edac_device_alloc_ctl_info
+  edac_device_alloc_index
+  edac_device_del_device
+  edac_device_free_ctl_info
+  edac_device_handle_ce_count
+  edac_device_handle_ue_count
+  enable_irq
+  enable_percpu_irq
+  eth_commit_mac_addr_change
+  ether_setup
+  eth_header_parse
+  eth_mac_addr
+  ethnl_cable_test_fault_length
+  ethnl_cable_test_result
+  eth_platform_get_mac_address
+  eth_prepare_mac_addr_change
+  ethtool_convert_legacy_u32_to_link_mode
+  ethtool_convert_link_mode_to_legacy_u32
+  __ethtool_get_link_ksettings
+  ethtool_op_get_link
+  ethtool_op_get_ts_info
+  ethtool_sprintf
+  ethtool_virtdev_set_link_ksettings
+  eth_type_trans
+  eth_validate_addr
+  eventfd_ctx_fdget
+  eventfd_ctx_fileget
+  eventfd_ctx_put
+  eventfd_ctx_remove_wait_queue
+  eventfd_signal
+  event_triggers_call
+  extcon_get_edev_by_phandle
+  extcon_get_edev_name
+  extcon_get_extcon_dev
+  extcon_get_property
+  extcon_get_state
+  extcon_register_notifier
+  extcon_set_property
+  extcon_set_property_capability
+  extcon_set_state
+  extcon_set_state_sync
+  extcon_unregister_notifier
+  fasync_helper
+  __fdget
+  fd_install
+  fget
+  _find_first_and_bit
+  _find_first_bit
+  _find_first_zero_bit
+  find_get_pid
+  _find_last_bit
+  _find_next_and_bit
+  _find_next_bit
+  _find_next_zero_bit
+  find_task_by_vpid
+  find_vma
+  find_vma_intersection
+  find_vpid
+  finish_wait
+  firmware_request_nowarn
+  flow_block_cb_setup_simple
+  flow_keys_basic_dissector
+  flow_rule_match_basic
+  flow_rule_match_ipv4_addrs
+  flow_rule_match_ports
+  flow_rule_match_vlan
+  flush_dcache_page
+  flush_delayed_fput
+  flush_delayed_work
+  flush_work
+  __flush_workqueue
+  __folio_lock
+  __folio_put
+  folio_wait_bit
+  fortify_panic
+  fput
+  fqdir_exit
+  fqdir_init
+  free_candev
+  free_io_pgtable_ops
+  free_irq
+  free_netdev
+  __free_pages
+  free_pages
+  free_percpu
+  free_percpu_irq
+  freq_qos_add_request
+  freq_qos_remove_request
+  freq_qos_update_request
+  fsync_bdev
+  ftrace_dump
+  fwnode_find_reference
+  fwnode_get_name
+  fwnode_get_named_child_node
+  fwnode_get_next_child_node
+  fwnode_handle_get
+  fwnode_handle_put
+  fwnode_property_present
+  fwnode_property_read_string
+  fwnode_property_read_u32_array
+  fwnode_property_read_u8_array
+  gcd
+  generic_device_group
+  generic_file_llseek
+  generic_handle_domain_irq
+  generic_handle_irq
+  geni_icc_disable
+  geni_icc_enable
+  geni_icc_get
+  geni_icc_set_bw
+  geni_se_clk_freq_match
+  geni_se_config_packing
+  geni_se_get_qup_hw_version
+  geni_se_init
+  geni_se_resources_off
+  geni_se_resources_on
+  geni_se_rx_dma_prep
+  geni_se_rx_dma_unprep
+  geni_se_select_mode
+  geni_se_tx_dma_prep
+  geni_se_tx_dma_unprep
+  genlmsg_multicast_allns
+  genlmsg_put
+  genl_register_family
+  genl_unregister_family
+  __genphy_config_aneg
+  genphy_read_abilities
+  genphy_read_mmd_unsupported
+  genphy_read_status
+  genphy_restart_aneg
+  genphy_resume
+  genphy_soft_reset
+  genphy_suspend
+  genphy_write_mmd_unsupported
+  gen_pool_add_owner
+  gen_pool_alloc_algo_owner
+  gen_pool_avail
+  gen_pool_best_fit
+  gen_pool_create
+  gen_pool_destroy
+  gen_pool_first_fit_order_align
+  gen_pool_free_owner
+  gen_pool_has_addr
+  gen_pool_set_algo
+  gen_pool_size
+  gen_pool_virt_to_phys
+  getboottime64
+  get_completed_synchronize_rcu
+  get_cpu_device
+  get_cpu_idle_time_us
+  get_device
+  get_device_system_crosststamp
+  get_each_object_track
+  __get_free_pages
+  get_governor_parent_kobj
+  get_net_ns_by_fd
+  get_net_ns_by_pid
+  get_option
+  get_page_owner_handle
+  get_pfnblock_flags_mask
+  get_pid_task
+  get_random_bytes
+  get_random_u16
+  get_random_u32
+  __get_random_u32_below
+  get_sg_io_hdr
+  get_slabinfo
+  get_state_synchronize_rcu
+  get_state_synchronize_srcu
+  __get_task_comm
+  get_task_mm
+  get_task_pid
+  get_unmapped_area
+  get_unused_fd_flags
+  get_user_ifreq
+  get_user_pages
+  get_zeroed_page
+  gh_rm_call
+  gh_rm_notifier_register
+  gh_rm_notifier_unregister
+  gh_rm_register_platform_ops
+  gh_rm_unregister_platform_ops
+  gic_v3_cpu_init
+  gic_v3_dist_init
+  gic_v3_dist_wait_for_rwp
+  gic_nonsecure_priorities
+  gov_attr_set_init
+  gov_attr_set_put
+  governor_sysfs_ops
+  gov_update_cpu_data
+  gpiochip_add_data_with_key
+  gpiochip_add_pin_range
+  gpiochip_disable_irq
+  gpiochip_enable_irq
+  gpiochip_generic_config
+  gpiochip_generic_free
+  gpiochip_generic_request
+  gpiochip_get_data
+  gpiochip_irq_relres
+  gpiochip_irq_reqres
+  gpiochip_line_is_valid
+  gpiochip_lock_as_irq
+  gpiochip_populate_parent_fwspec_fourcell
+  gpiochip_remove
+  gpiochip_unlock_as_irq
+  gpiod_direction_input
+  gpiod_direction_output
+  gpiod_direction_output_raw
+  gpiod_get_optional
+  gpiod_get_raw_value
+  gpiod_get_raw_value_cansleep
+  gpiod_get_value
+  gpiod_get_value_cansleep
+  gpiod_is_active_low
+  gpiod_set_consumer_name
+  gpiod_set_debounce
+  gpiod_set_raw_value
+  gpiod_set_raw_value_cansleep
+  gpiod_set_value
+  gpiod_set_value_cansleep
+  gpiod_to_irq
+  gpio_free
+  gpio_free_array
+  gpio_request
+  gpio_request_one
+  gpio_to_desc
+  gre_add_protocol
+  gre_del_protocol
+  gro_cells_destroy
+  gro_cells_init
+  gro_cells_receive
+  h4_recv_buf
+  handle_bad_irq
+  handle_edge_irq
+  handle_fasteoi_ack_irq
+  handle_fasteoi_irq
+  handle_level_irq
+  handle_nested_irq
+  handle_simple_irq
+  handle_sysrq
+  hashlen_string
+  hci_alloc_dev_priv
+  __hci_cmd_send
+  __hci_cmd_sync
+  hci_cmd_sync
+  hci_cmd_sync_cancel
+  __hci_cmd_sync_ev
+  hci_cmd_sync_queue
+  __hci_cmd_sync_sk
+  __hci_cmd_sync_status
+  __hci_cmd_sync_status_sk
+  hci_conn_check_secure
+  hci_conn_security
+  hci_conn_switch_role
+  hci_free_dev
+  hci_get_route
+  hci_mgmt_chan_register
+  hci_mgmt_chan_unregister
+  hci_recv_diag
+  hci_recv_frame
+  hci_register_cb
+  hci_register_dev
+  hci_release_dev
+  hci_reset_dev
+  hci_resume_dev
+  hci_set_fw_info
+  hci_set_hw_info
+  hci_suspend_dev
+  hci_uart_register_device
+  hci_uart_tx_wakeup
+  hci_uart_unregister_device
+  hci_unregister_cb
+  hci_unregister_dev
+  hex2bin
+  hex_asc_upper
+  hex_dump_to_buffer
+  hex_to_bin
+  hid_add_device
+  hid_allocate_device
+  hid_destroy_device
+  hid_ignore
+  hid_input_report
+  hid_parse_report
+  hidp_hid_driver
+  housekeeping_cpumask
+  housekeeping_overridden
+  housekeeping_test_cpu
+  hrtimer_active
+  hrtimer_cancel
+  hrtimer_forward
+  __hrtimer_get_remaining
+  hrtimer_init
+  hrtimer_init_sleeper
+  hrtimer_sleeper_start_expires
+  hrtimer_start_range_ns
+  hrtimer_try_to_cancel
+  hvc_alloc
+  hvc_instantiate
+  hvc_kick
+  hvc_poll
+  hvc_remove
+  __hvc_resize
+  __hw_addr_init
+  __hw_addr_sync
+  __hw_addr_unsync
+  hwrng_register
+  hwrng_unregister
+  hwspin_lock_free
+  hwspin_lock_request_specific
+  __hwspin_lock_timeout
+  __hwspin_unlock
+  hypervisor_kobj
+  i2c_adapter_type
+  i2c_add_adapter
+  i2c_add_numbered_adapter
+  i2c_bus_type
+  i2c_del_adapter
+  i2c_del_driver
+  i2c_for_each_dev
+  i2c_get_adapter
+  i2c_get_device_id
+  i2c_get_dma_safe_msg_buf
+  i2c_put_adapter
+  i2c_put_dma_safe_msg_buf
+  i2c_register_driver
+  i2c_smbus_read_byte
+  i2c_smbus_read_byte_data
+  i2c_smbus_read_i2c_block_data
+  i2c_smbus_write_byte
+  i2c_smbus_write_byte_data
+  i2c_smbus_write_i2c_block_data
+  __i2c_smbus_xfer
+  i2c_smbus_xfer
+  __i2c_transfer
+  i2c_transfer
+  i2c_transfer_buffer_flags
+  i2c_verify_client
+  i3c_device_do_priv_xfers
+  i3c_driver_register_with_owner
+  i3c_driver_unregister
+  i3c_generic_ibi_alloc_pool
+  i3c_generic_ibi_free_pool
+  i3c_generic_ibi_get_free_slot
+  i3c_generic_ibi_recycle_slot
+  i3c_master_add_i3c_dev_locked
+  i3c_master_disec_locked
+  i3c_master_do_daa
+  i3c_master_enec_locked
+  i3c_master_entdaa_locked
+  i3c_master_get_free_addr
+  i3c_master_queue_ibi
+  i3c_master_register
+  i3c_master_set_info
+  i3c_master_unregister
+  icc_get
+  icc_link_create
+  icc_node_add
+  icc_node_create
+  icc_nodes_remove
+  icc_provider_add
+  icc_provider_del
+  icc_provider_deregister
+  icc_provider_init
+  icc_provider_register
+  icc_put
+  icc_set_bw
+  icc_set_tag
+  icc_sync_state
+  ida_alloc_range
+  ida_free
+  idr_alloc
+  idr_alloc_cyclic
+  idr_alloc_u32
+  idr_destroy
+  idr_find
+  idr_for_each
+  idr_get_next
+  idr_get_next_ul
+  idr_preload
+  idr_remove
+  idr_replace
+  ieee802154_alloc_hw
+  ieee802154_configure_durations
+  ieee802154_free_hw
+  ieee802154_hdr_peek
+  ieee802154_hdr_peek_addrs
+  ieee802154_hdr_pull
+  ieee802154_hdr_push
+  ieee802154_max_payload
+  ieee802154_register_hw
+  ieee802154_rx_irqsafe
+  ieee802154_stop_queue
+  ieee802154_unregister_hw
+  ieee802154_wake_queue
+  ieee802154_xmit_complete
+  ieee802154_xmit_error
+  ieee802154_xmit_hw_error
+  iio_buffer_init
+  iio_buffer_put
+  iio_device_attach_buffer
+  iio_device_claim_direct_mode
+  iio_device_release_direct_mode
+  iio_push_event
+  iio_push_to_buffers
+  iio_read_channel_processed
+  iio_write_channel_raw
+  in4_pton
+  in6addr_any
+  in6_pton
+  inc_node_page_state
+  inc_zone_page_state
+  in_egroup_p
+  inet6_csk_xmit
+  inet6_ioctl
+  __inet6_lookup_established
+  inet_csk_get_port
+  inet_frag_destroy
+  inet_frag_find
+  inet_frag_kill
+  inet_frag_queue_insert
+  inet_frag_reasm_finish
+  inet_frag_reasm_prepare
+  inet_frags_fini
+  inet_frags_init
+  inet_ioctl
+  __inet_lookup_established
+  init_dummy_netdev
+  init_iova_domain
+  init_net
+  init_pid_ns
+  init_pseudo
+  __init_rwsem
+  init_srcu_struct
+  __init_swait_queue_head
+  init_task
+  init_timer_key
+  init_user_ns
+  init_uts_ns
+  init_wait_entry
+  __init_waitqueue_head
+  input_alloc_absinfo
+  input_allocate_device
+  input_close_device
+  input_event
+  input_ff_create
+  input_ff_destroy
+  input_free_device
+  input_mt_init_slots
+  input_mt_report_pointer_emulation
+  input_mt_report_slot_state
+  input_mt_sync_frame
+  input_open_device
+  input_register_device
+  input_register_handle
+  input_register_handler
+  input_set_abs_params
+  input_set_capability
+  input_unregister_device
+  input_unregister_handle
+  input_unregister_handler
+  insert_resource
+  interval_tree_insert
+  interval_tree_iter_first
+  interval_tree_iter_next
+  interval_tree_remove
+  int_sqrt
+  iomem_resource
+  iommu_alloc_resv_region
+  iommu_attach_device
+  iommu_detach_device
+  iommu_device_register
+  iommu_device_sysfs_add
+  iommu_device_sysfs_remove
+  iommu_device_unregister
+  iommu_dma_get_resv_regions
+  iommu_domain_alloc
+  iommu_domain_free
+  iommu_fwspec_add_ids
+  iommu_fwspec_free
+  iommu_get_domain_for_dev
+  iommu_get_msi_cookie
+  iommu_group_for_each_dev
+  iommu_group_get
+  iommu_group_get_iommudata
+  iommu_group_put
+  iommu_group_ref_get
+  iommu_group_set_iommudata
+  iommu_iova_to_phys
+  iommu_map
+  iommu_map_sg
+  iommu_present
+  iommu_put_resv_regions
+  iommu_set_fault_handler
+  iommu_set_pgtable_quirks
+  iommu_unmap
+  __ioread32_copy
+  ioremap_prot
+  iounmap
+  iov_iter_init
+  iov_iter_kvec
+  iov_iter_revert
+  __iowrite32_copy
+  ip6_dst_hoplimit
+  ip_compute_csum
+  __ip_dev_find
+  ipi_desc_get
+  ip_local_out
+  ip_mc_join_group
+  ip_queue_xmit
+  ip_route_output_flow
+  __ip_select_ident
+  ip_send_check
+  iput
+  __ipv6_addr_type
+  ipv6_dev_find
+  ipv6_ext_hdr
+  ipv6_skip_exthdr
+  ipv6_stub
+  __irq_apply_affinity_hint
+  irq_check_status_bit
+  irq_chip_ack_parent
+  irq_chip_disable_parent
+  irq_chip_enable_parent
+  irq_chip_eoi_parent
+  irq_chip_get_parent_state
+  irq_chip_mask_parent
+  irq_chip_retrigger_hierarchy
+  irq_chip_set_affinity_parent
+  irq_chip_set_parent_state
+  irq_chip_set_type_parent
+  irq_chip_set_vcpu_affinity_parent
+  irq_chip_set_wake_parent
+  irq_chip_unmask_parent
+  irq_create_fwspec_mapping
+  irq_create_mapping_affinity
+  irq_dispose_mapping
+  __irq_domain_add
+  irq_domain_alloc_irqs_parent
+  irq_domain_create_hierarchy
+  irq_domain_disconnect_hierarchy
+  irq_domain_free_irqs_common
+  irq_domain_free_irqs_parent
+  irq_domain_get_irq_data
+  irq_domain_remove
+  irq_domain_set_hwirq_and_chip
+  irq_domain_set_info
+  irq_domain_simple_ops
+  irq_domain_translate_twocell
+  irq_domain_update_bus_token
+  irq_domain_xlate_onecell
+  irq_domain_xlate_twocell
+  irq_do_set_affinity
+  irq_find_matching_fwspec
+  irq_get_irqchip_state
+  irq_get_irq_data
+  irq_modify_status
+  irq_of_parse_and_map
+  __irq_resolve_mapping
+  irq_set_affinity_notifier
+  irq_set_chained_handler_and_data
+  irq_set_chip_and_handler_name
+  irq_set_chip_data
+  __irq_set_handler
+  irq_set_handler_data
+  irq_set_irqchip_state
+  irq_set_irq_type
+  irq_set_irq_wake
+  irq_set_parent
+  irq_to_desc
+  irq_work_queue
+  irq_work_queue_on
+  irq_work_sync
+  isolate_and_split_free_page
+  isolate_anon_lru_page
+  is_vmalloc_addr
+  iterate_fd
+  jiffies
+  jiffies_to_msecs
+  jiffies_to_usecs
+  kasan_flag_enabled
+  kasprintf
+  kernel_accept
+  kernel_bind
+  kernel_connect
+  kernel_getsockname
+  kernel_kobj
+  kernel_listen
+  kernel_param_lock
+  kernel_param_unlock
+  kernel_power_off
+  kernel_recvmsg
+  kernel_restart
+  kernel_sendmsg
+  kernel_sock_shutdown
+  kernfs_find_and_get_ns
+  kernfs_notify
+  kernfs_put
+  kern_mount
+  kern_unmount
+  key_create_or_update
+  key_put
+  keyring_alloc
+  __kfifo_alloc
+  __kfifo_free
+  __kfifo_from_user
+  __kfifo_from_user_r
+  __kfifo_in
+  __kfifo_in_r
+  __kfifo_len_r
+  __kfifo_out
+  __kfifo_out_r
+  __kfifo_to_user
+  __kfifo_to_user_r
+  kfree
+  kfree_const
+  kfree_sensitive
+  kfree_skb_list_reason
+  kfree_skb_partial
+  kfree_skb_reason
+  kick_all_cpus_sync
+  kill_anon_super
+  kill_fasync
+  kimage_vaddr
+  kimage_voffset
+  __kmalloc
+  kmalloc_caches
+  kmalloc_large
+  kmalloc_large_node
+  kmalloc_node_trace
+  __kmalloc_node_track_caller
+  kmalloc_trace
+  kmem_cache_alloc
+  kmem_cache_create
+  kmem_cache_create_usercopy
+  kmem_cache_destroy
+  kmem_cache_free
+  kmemdup
+  kmemdup_nul
+  kmsg_dump_get_buffer
+  kmsg_dump_get_line
+  kmsg_dump_register
+  kmsg_dump_rewind
+  kmsg_dump_unregister
+  kobject_add
+  kobject_create_and_add
+  kobject_del
+  kobject_get
+  kobject_get_path
+  kobject_init
+  kobject_init_and_add
+  kobject_put
+  kobject_set_name
+  kobject_uevent
+  kobject_uevent_env
+  kobj_sysfs_ops
+  krealloc
+  kset_create_and_add
+  kset_find_obj
+  kset_unregister
+  ksize
+  ksoftirqd
+  kstat
+  kstat_irqs_cpu
+  kstat_irqs_usr
+  kstrdup
+  kstrdup_const
+  kstrndup
+  kstrtobool
+  kstrtobool_from_user
+  kstrtoint
+  kstrtoint_from_user
+  kstrtoll
+  kstrtos8
+  kstrtos8_from_user
+  kstrtou16
+  kstrtou16_from_user
+  kstrtou8
+  kstrtou8_from_user
+  kstrtouint
+  kstrtouint_from_user
+  kstrtoul_from_user
+  kstrtoull
+  kstrtoull_from_user
+  kswapd
+  kthread_bind
+  kthread_bind_mask
+  kthread_cancel_delayed_work_sync
+  kthread_cancel_work_sync
+  kthread_complete_and_exit
+  kthread_create_on_node
+  kthread_create_worker
+  kthread_delayed_work_timer_fn
+  kthread_destroy_worker
+  kthread_flush_work
+  kthread_flush_worker
+  __kthread_init_worker
+  kthread_mod_delayed_work
+  kthread_queue_delayed_work
+  kthread_queue_work
+  kthread_should_stop
+  kthread_stop
+  kthread_worker_fn
+  ktime_add_safe
+  ktime_get
+  ktime_get_coarse_with_offset
+  ktime_get_mono_fast_ns
+  ktime_get_real_seconds
+  ktime_get_real_ts64
+  ktime_get_seconds
+  ktime_get_ts64
+  ktime_get_with_offset
+  kvasprintf_const
+  kvfree
+  kvfree_call_rcu
+  kvmalloc_node
+  l2cap_add_psm
+  l2cap_chan_close
+  l2cap_chan_connect
+  l2cap_chan_create
+  l2cap_chan_del
+  l2cap_chan_list
+  l2cap_chan_put
+  l2cap_chan_send
+  l2cap_chan_set_defaults
+  l2cap_conn_get
+  l2cap_conn_put
+  l2cap_is_socket
+  l2cap_register_user
+  l2cap_unregister_user
+  l2tp_recv_common
+  l2tp_session_create
+  l2tp_session_dec_refcount
+  l2tp_session_delete
+  l2tp_session_get
+  l2tp_session_get_by_ifname
+  l2tp_session_get_nth
+  l2tp_session_inc_refcount
+  l2tp_session_register
+  l2tp_session_set_header_len
+  l2tp_sk_to_tunnel
+  l2tp_tunnel_create
+  l2tp_tunnel_dec_refcount
+  l2tp_tunnel_delete
+  l2tp_tunnel_get
+  l2tp_tunnel_get_nth
+  l2tp_tunnel_get_session
+  l2tp_tunnel_inc_refcount
+  l2tp_tunnel_register
+  l2tp_udp_encap_recv
+  l2tp_xmit_skb
+  led_classdev_flash_register_ext
+  led_classdev_flash_unregister
+  led_classdev_unregister
+  led_trigger_event
+  led_trigger_register
+  led_trigger_register_simple
+  led_trigger_unregister
+  led_trigger_unregister_simple
+  linkwatch_fire_event
+  __list_add_valid
+  __list_del_entry_valid
+  list_sort
+  llist_add_batch
+  llist_reverse_order
+  __local_bh_enable_ip
+  lock_sock_nested
+  log_post_read_mmio
+  log_post_write_mmio
+  log_read_mmio
+  log_write_mmio
+  lowpan_header_compress
+  lowpan_header_decompress
+  lowpan_nhc_add
+  lowpan_nhc_del
+  lowpan_register_netdev
+  lowpan_register_netdevice
+  lowpan_unregister_netdev
+  lowpan_unregister_netdevice
+  mac_pton
+  mas_find
+  match_string
+  mbox_chan_received_data
+  mbox_chan_txdone
+  mbox_client_txdone
+  mbox_controller_register
+  mbox_controller_unregister
+  mbox_free_channel
+  mbox_request_channel
+  mbox_send_message
+  mdiobus_alloc_size
+  mdiobus_free
+  mdiobus_get_phy
+  mdiobus_modify_changed
+  __mdiobus_read
+  mdiobus_read
+  __mdiobus_register
+  mdiobus_unregister
+  __mdiobus_write
+  mdiobus_write
+  mdio_device_create
+  mdio_device_free
+  media_device_cleanup
+  media_device_init
+  __media_device_register
+  media_device_unregister
+  media_entity_pads_init
+  memblock_end_of_DRAM
+  memblock_free
+  __memcat_p
+  memchr
+  memchr_inv
+  memcmp
+  memcpy
+  __memcpy_fromio
+  __memcpy_toio
+  mem_dump_obj
+  memdup_user
+  memmove
+  memory_block_size_bytes
+  memory_read_from_buffer
+  memparse
+  mempool_alloc
+  mempool_alloc_slab
+  mempool_create
+  mempool_destroy
+  mempool_free
+  mempool_free_slab
+  memremap
+  memremap_pages
+  memscan
+  mem_section
+  memset
+  memset64
+  __memset_io
+  memstart_addr
+  memunmap
+  memunmap_pages
+  migrate_pages
+  migrate_swap
+  __migrate_task
+  mipi_dsi_create_packet
+  mipi_dsi_dcs_set_display_brightness
+  mipi_dsi_dcs_set_tear_off
+  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_claim_host
+  mmc_cqe_request_done
+  mmc_execute_tuning
+  mmc_get_card
+  mmc_get_ext_csd
+  mmc_hs200_tuning
+  mmc_issue_type
+  mmc_of_parse
+  __mmc_poll_for_busy
+  mmc_prepare_busy_cmd
+  mmc_put_card
+  mmc_regulator_get_supply
+  mmc_regulator_set_ocr
+  mmc_regulator_set_vqmmc
+  mmc_release_host
+  mmc_retune_hold
+  mmc_retune_release
+  mmc_select_bus_width
+  mmc_select_card
+  mmc_select_hs
+  mmc_select_hs400
+  mmc_select_hs_ddr
+  mmc_select_timing
+  mmc_send_status
+  mmc_send_tuning
+  mmc_set_bus_mode
+  mmc_set_bus_width
+  mmc_set_clock
+  mmc_set_initial_state
+  mmc_set_timing
+  mmc_wait_for_cmd
+  mmput
+  mod_delayed_work_on
+  mod_node_page_state
+  mod_timer
+  __module_get
+  module_layout
+  module_put
+  __module_put_and_kthread_exit
+  __msecs_to_jiffies
+  msi_first_desc
+  msi_get_virq
+  msi_next_desc
+  msleep
+  msleep_interruptible
+  mtree_load
+  __mutex_init
+  mutex_is_locked
+  mutex_lock
+  mutex_lock_interruptible
+  mutex_trylock
+  mutex_unlock
+  name_to_dev_t
+  __napi_alloc_skb
+  napi_complete_done
+  napi_consume_skb
+  napi_disable
+  napi_enable
+  napi_gro_flush
+  napi_gro_receive
+  __napi_schedule
+  napi_schedule_prep
+  __ndelay
+  __ndisc_fill_addr_option
+  nd_tbl
+  neigh_destroy
+  neigh_lookup
+  neigh_resolve_output
+  netdev_alert
+  __netdev_alloc_skb
+  netdev_change_features
+  netdev_core_stats_alloc
+  netdev_err
+  netdev_increment_features
+  netdev_info
+  netdev_lower_state_changed
+  netdev_master_upper_dev_link
+  netdev_name_in_use
+  netdev_notify_peers
+  netdev_pick_tx
+  netdev_printk
+  netdev_rss_key_fill
+  netdev_rx_handler_register
+  netdev_rx_handler_unregister
+  netdev_set_default_ethtool_ops
+  netdev_update_features
+  netdev_upper_dev_link
+  netdev_upper_dev_unlink
+  netdev_warn
+  netif_carrier_off
+  netif_carrier_on
+  netif_device_attach
+  netif_device_detach
+  netif_inherit_tso_max
+  netif_napi_add_weight
+  __netif_napi_del
+  netif_receive_skb
+  netif_receive_skb_list
+  netif_rx
+  netif_schedule_queue
+  netif_set_real_num_rx_queues
+  netif_set_real_num_tx_queues
+  netif_set_tso_max_size
+  __netif_set_xps_queue
+  netif_stacked_transfer_operstate
+  netif_tx_lock
+  netif_tx_stop_all_queues
+  netif_tx_unlock
+  netif_tx_wake_queue
+  netlink_broadcast
+  netlink_capable
+  __netlink_dump_start
+  __netlink_kernel_create
+  netlink_kernel_release
+  netlink_net_capable
+  netlink_register_notifier
+  netlink_unicast
+  netlink_unregister_notifier
+  net_namespace_list
+  net_ns_type_operations
+  net_ratelimit
+  nfc_add_se
+  nfc_allocate_device
+  nfc_alloc_recv_skb
+  __nfc_alloc_vendor_cmd_reply_skb
+  nfc_class
+  nfc_dep_link_is_up
+  nfc_driver_failure
+  nfc_find_se
+  nfc_fw_download_done
+  nfc_get_local_general_bytes
+  nf_conntrack_destroy
+  nfc_proto_register
+  nfc_proto_unregister
+  nfc_register_device
+  nfc_remove_se
+  nfc_se_connectivity
+  nfc_send_to_raw_sock
+  nfc_se_transaction
+  nfc_set_remote_general_bytes
+  nfc_target_lost
+  nfc_targets_found
+  nfc_tm_activated
+  nfc_tm_data_received
+  nfc_tm_deactivated
+  nfc_unregister_device
+  nfc_vendor_cmd_reply
+  nla_find
+  nla_memcpy
+  __nla_parse
+  nla_put
+  nla_put_64bit
+  nla_reserve
+  nla_reserve_64bit
+  nla_strscpy
+  __nla_validate
+  __nlmsg_put
+  nonseekable_open
+  noop_llseek
+  nr_cpu_ids
+  nr_ipi_get
+  nr_irqs
+  ns_capable
+  nsecs_to_jiffies
+  ns_to_kernel_old_timeval
+  ns_to_timespec64
+  n_tty_ioctl_helper
+  __num_online_cpus
+  nvmem_cell_get
+  nvmem_cell_put
+  nvmem_cell_read
+  nvmem_cell_read_u32
+  nvmem_cell_write
+  nvmem_device_read
+  nvmem_device_write
+  of_address_to_resource
+  of_alias_get_id
+  of_can_transceiver
+  of_clk_add_hw_provider
+  of_clk_add_provider
+  of_clk_del_provider
+  of_clk_get_from_provider
+  of_clk_get_parent_name
+  of_clk_hw_simple_get
+  of_clk_src_onecell_get
+  of_clk_src_simple_get
+  of_count_phandle_with_args
+  of_cpu_node_to_id
+  of_devfreq_cooling_register
+  of_device_get_match_data
+  of_device_is_available
+  of_device_is_compatible
+  of_device_modalias
+  of_device_uevent_modalias
+  of_dma_configure_id
+  of_dma_controller_free
+  of_dma_controller_register
+  of_dma_is_coherent
+  of_drm_find_bridge
+  of_drm_find_panel
+  of_find_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_by_phandle
+  of_find_node_opts_by_path
+  of_find_node_with_property
+  of_find_property
+  offline_and_remove_memory
+  of_fwnode_ops
+  of_genpd_add_provider_onecell
+  of_genpd_add_provider_simple
+  of_genpd_del_provider
+  __of_get_address
+  of_get_child_by_name
+  of_get_cpu_node
+  of_get_mac_address
+  of_get_named_gpio_flags
+  of_get_next_available_child
+  of_get_next_child
+  of_get_next_parent
+  of_get_parent
+  of_get_property
+  of_get_regulator_init_data
+  of_get_required_opp_performance_state
+  of_graph_get_endpoint_by_regs
+  of_graph_get_next_endpoint
+  of_graph_get_port_parent
+  of_graph_get_remote_endpoint
+  of_graph_get_remote_node
+  of_graph_get_remote_port_parent
+  of_graph_is_present
+  of_graph_parse_endpoint
+  of_hwspin_lock_get_id
+  of_icc_get
+  of_icc_get_from_provider
+  of_icc_xlate_onecell
+  of_iomap
+  of_irq_find_parent
+  of_irq_get
+  of_irq_get_byname
+  of_irq_parse_one
+  of_machine_is_compatible
+  of_match_device
+  of_match_node
+  __of_mdiobus_register
+  of_modalias_node
+  of_n_addr_cells
+  of_node_name_eq
+  of_n_size_cells
+  __of_parse_phandle_with_args
+  of_phandle_iterator_init
+  of_phandle_iterator_next
+  of_phy_is_fixed_link
+  of_phy_simple_xlate
+  of_platform_depopulate
+  of_platform_device_create
+  of_platform_device_destroy
+  of_platform_populate
+  of_property_count_elems_of_size
+  of_property_match_string
+  of_property_read_string
+  of_property_read_string_helper
+  of_property_read_u32_index
+  of_property_read_u64
+  of_property_read_u64_index
+  of_property_read_variable_u16_array
+  of_property_read_variable_u32_array
+  of_property_read_variable_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
+  of_thermal_get_ntrips
+  of_thermal_get_trip_points
+  of_thermal_is_trip_valid
+  of_translate_address
+  on_each_cpu_cond_mask
+  oops_in_progress
+  open_candev
+  out_of_line_wait_on_bit
+  out_of_line_wait_on_bit_timeout
+  overflowuid
+  page_endio
+  page_ext_get
+  page_ext_put
+  page_is_ram
+  page_mapping
+  page_pinner_inited
+  __page_pinner_put_page
+  page_pool_alloc_pages
+  page_pool_create
+  page_pool_destroy
+  page_pool_put_defragged_page
+  page_pool_release_page
+  __pagevec_release
+  panic
+  panic_notifier_list
+  panic_timeout
+  param_array_ops
+  param_get_int
+  param_get_string
+  param_get_ullong
+  param_ops_bool
+  param_ops_charp
+  param_ops_int
+  param_ops_string
+  param_ops_uint
+  param_ops_ullong
+  param_ops_ulong
+  param_set_bool
+  param_set_copystring
+  param_set_int
+  passthru_features_check
+  pci_aer_clear_nonfatal_status
+  pci_alloc_irq_vectors_affinity
+  pci_assign_resource
+  pci_bus_type
+  pci_clear_master
+  pci_dev_get
+  pci_device_group
+  pci_device_is_present
+  pci_dev_present
+  pci_dev_put
+  pci_disable_device
+  pci_disable_msi
+  pcie_capability_clear_and_set_word
+  pcie_capability_read_word
+  pci_enable_device
+  pci_enable_pcie_error_reporting
+  pci_find_ext_capability
+  pci_free_irq_vectors
+  pci_get_device
+  pci_get_domain_bus_and_slot
+  pci_host_probe
+  pci_iomap
+  pci_iounmap
+  pci_irq_vector
+  pci_load_and_free_saved_state
+  pci_load_saved_state
+  pci_msi_create_irq_domain
+  pci_msi_mask_irq
+  pci_msi_unmask_irq
+  pci_read_config_dword
+  pci_read_config_word
+  __pci_register_driver
+  pci_release_region
+  pci_request_region
+  pci_restore_state
+  pci_save_state
+  pci_set_master
+  pci_set_power_state
+  pci_store_saved_state
+  pci_unregister_driver
+  pci_walk_bus
+  pci_write_config_dword
+  pci_write_config_word
+  pcpu_nr_pages
+  __percpu_down_read
+  percpu_down_write
+  percpu_free_rwsem
+  __percpu_init_rwsem
+  __per_cpu_offset
+  per_cpu_ptr_to_phys
+  percpu_up_write
+  perf_aux_output_begin
+  perf_aux_output_end
+  perf_aux_output_flag
+  perf_event_addr_filters_sync
+  perf_event_create_kernel_counter
+  perf_event_disable
+  perf_event_enable
+  perf_event_read_local
+  perf_event_read_value
+  perf_event_release_kernel
+  perf_get_aux
+  perf_pmu_register
+  perf_pmu_unregister
+  perf_trace_buf_alloc
+  perf_trace_run_bpf_submit
+  phy_attached_info
+  phy_calibrate
+  phy_do_ioctl_running
+  phy_drivers_register
+  phy_drivers_unregister
+  phy_error
+  phy_ethtool_get_wol
+  phy_ethtool_set_wol
+  phy_exit
+  phy_init
+  phy_init_eee
+  phy_init_hw
+  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_fwnode_phy_connect
+  phylink_generic_validate
+  phylink_get_eee_err
+  phylink_mac_change
+  phylink_mii_c22_pcs_decode_state
+  phylink_mii_c22_pcs_encode_advertisement
+  phylink_mii_ioctl
+  phylink_of_phy_connect
+  phylink_resume
+  phylink_set_port_modes
+  phylink_speed_down
+  phylink_speed_up
+  phylink_start
+  phylink_stop
+  phylink_suspend
+  phy_mac_interrupt
+  phy_modify
+  phy_modify_mmd
+  phy_power_off
+  phy_power_on
+  phy_read_mmd
+  phy_set_mode_ext
+  phy_suspend
+  phy_trigger_machine
+  phy_write_mmd
+  pick_highest_pushable_task
+  pick_migrate_task
+  pid_nr_ns
+  pid_task
+  pinconf_generic_dt_node_to_map
+  pinctrl_dev_get_drvdata
+  pinctrl_enable
+  pinctrl_force_default
+  pinctrl_force_sleep
+  pinctrl_lookup_state
+  pinctrl_pm_select_default_state
+  pinctrl_pm_select_sleep_state
+  pinctrl_select_state
+  pinctrl_utils_free_map
+  pipe_lock
+  pipe_unlock
+  platform_bus_type
+  platform_device_add
+  platform_device_add_data
+  platform_device_alloc
+  platform_device_del
+  platform_device_put
+  platform_device_register
+  platform_device_register_full
+  platform_device_unregister
+  __platform_driver_register
+  platform_driver_unregister
+  platform_get_irq
+  platform_get_irq_byname
+  platform_get_irq_byname_optional
+  platform_get_irq_optional
+  platform_get_resource
+  platform_get_resource_byname
+  platform_irqchip_probe
+  platform_irq_count
+  platform_msi_domain_alloc_irqs
+  platform_msi_domain_free_irqs
+  pm_clk_add
+  pm_clk_create
+  pm_clk_destroy
+  pm_clk_resume
+  pm_clk_suspend
+  pm_generic_resume
+  pm_generic_suspend
+  pm_genpd_add_subdomain
+  pm_genpd_init
+  pm_genpd_remove
+  pm_genpd_remove_subdomain
+  pm_power_off
+  __pm_relax
+  pm_relax
+  pm_runtime_allow
+  pm_runtime_autosuspend_expiration
+  pm_runtime_barrier
+  __pm_runtime_disable
+  pm_runtime_enable
+  pm_runtime_forbid
+  pm_runtime_force_resume
+  pm_runtime_force_suspend
+  __pm_runtime_idle
+  pm_runtime_irq_safe
+  pm_runtime_no_callbacks
+  __pm_runtime_resume
+  pm_runtime_set_autosuspend_delay
+  __pm_runtime_set_status
+  __pm_runtime_suspend
+  __pm_runtime_use_autosuspend
+  __pm_stay_awake
+  pm_stay_awake
+  pm_system_wakeup
+  pm_wakeup_dev_event
+  pm_wakeup_ws_event
+  policy_has_boost_freq
+  poll_state_synchronize_rcu
+  poll_state_synchronize_srcu
+  power_supply_changed
+  power_supply_get_by_name
+  power_supply_get_drvdata
+  power_supply_get_property
+  power_supply_put
+  power_supply_register
+  power_supply_reg_notifier
+  power_supply_set_property
+  power_supply_unregister
+  power_supply_unreg_notifier
+  ppp_channel_index
+  ppp_dev_name
+  ppp_input
+  ppp_input_error
+  ppp_output_wakeup
+  pppox_compat_ioctl
+  pppox_ioctl
+  pppox_unbind_sock
+  ppp_register_channel
+  ppp_register_compressor
+  ppp_register_net_channel
+  ppp_unit_number
+  ppp_unregister_channel
+  ppp_unregister_compressor
+  preempt_schedule
+  preempt_schedule_notrace
+  prepare_to_wait_event
+  print_hex_dump
+  _printk
+  _printk_deferred
+  proc_create
+  proc_create_data
+  proc_create_net_data
+  proc_create_net_single
+  proc_create_seq_private
+  proc_create_single_data
+  proc_dointvec
+  proc_dointvec_jiffies
+  proc_dointvec_minmax
+  proc_dostring
+  proc_douintvec_minmax
+  proc_doulongvec_minmax
+  _proc_mkdir
+  proc_mkdir
+  proc_remove
+  proc_set_user
+  proto_register
+  proto_unregister
+  __pskb_copy_fclone
+  pskb_expand_head
+  __pskb_pull_tail
+  pskb_put
+  ___pskb_trim
+  ptp_classify_raw
+  ptp_clock_event
+  ptp_clock_index
+  ptp_clock_register
+  ptp_clock_unregister
+  ptp_parse_header
+  putback_movable_pages
+  put_cmsg
+  put_device
+  put_disk
+  put_iova_domain
+  __put_net
+  put_pid
+  put_sg_io_hdr
+  __put_task_struct
+  put_unused_fd
+  put_user_ifreq
+  pwm_apply_state
+  pwmchip_add
+  pwmchip_remove
+  qca_read_soc_version
+  qca_send_pre_shutdown_cmd
+  qca_set_bdaddr
+  qca_set_bdaddr_rome
+  qca_uart_setup
+  qcom_icc_xlate_extended
+  qcom_smem_state_get
+  qcom_smem_state_register
+  qcom_smem_state_unregister
+  qcom_smem_state_update_bits
+  queue_delayed_work_on
+  queue_work_on
+  radix_tree_delete
+  radix_tree_insert
+  radix_tree_iter_delete
+  radix_tree_iter_resume
+  radix_tree_lookup
+  radix_tree_next_chunk
+  radix_tree_tagged
+  ___ratelimit
+  rational_best_approximation
+  raw_notifier_call_chain
+  raw_notifier_chain_register
+  raw_notifier_chain_unregister
+  _raw_read_lock
+  _raw_read_lock_bh
+  _raw_read_lock_irq
+  _raw_read_lock_irqsave
+  _raw_read_unlock
+  _raw_read_unlock_bh
+  _raw_read_unlock_irq
+  _raw_read_unlock_irqrestore
+  _raw_spin_lock
+  _raw_spin_lock_bh
+  _raw_spin_lock_irq
+  _raw_spin_lock_irqsave
+  raw_spin_rq_lock_nested
+  raw_spin_rq_unlock
+  _raw_spin_trylock
+  _raw_spin_trylock_bh
+  _raw_spin_unlock
+  _raw_spin_unlock_bh
+  _raw_spin_unlock_irq
+  _raw_spin_unlock_irqrestore
+  _raw_write_lock
+  _raw_write_lock_bh
+  _raw_write_lock_irq
+  _raw_write_lock_irqsave
+  _raw_write_unlock
+  _raw_write_unlock_bh
+  _raw_write_unlock_irq
+  _raw_write_unlock_irqrestore
+  rb_erase
+  __rb_erase_color
+  rb_first
+  rb_first_postorder
+  __rb_insert_augmented
+  rb_insert_color
+  rb_last
+  rb_next
+  rb_next_postorder
+  rb_prev
+  rcu_barrier
+  rcu_barrier_tasks
+  rcu_barrier_tasks_trace
+  rcu_bind_current_to_nocb
+  rcu_check_boost_fail
+  rcu_cpu_stall_suppress
+  rcu_cpu_stall_suppress_at_boot
+  rcu_expedite_gp
+  rcu_force_quiescent_state
+  rcu_fwd_progress_check
+  rcu_get_gp_kthreads_prio
+  rcu_get_gp_seq
+  rcu_gp_is_expedited
+  rcu_gp_is_normal
+  rcu_gp_set_torture_wait
+  rcu_inkernel_boot_has_ended
+  rcu_is_watching
+  rcu_jiffies_till_stall_check
+  rcu_nocb_cpu_deoffload
+  rcu_nocb_cpu_offload
+  __rcu_read_lock
+  __rcu_read_unlock
+  rcu_read_unlock_trace_special
+  rcu_tasks_trace_qs_blkd
+  rcutorture_get_gp_data
+  rcu_trc_cmpxchg_need_qs
+  rcu_unexpedite_gp
+  rcuwait_wake_up
+  rdev_get_drvdata
+  reboot_mode
+  rebuild_sched_domains
+  reclaim_shmem_address_space
+  refcount_dec_and_lock
+  refcount_dec_and_mutex_lock
+  refcount_dec_if_one
+  refcount_dec_not_one
+  refcount_warn_saturate
+  regcache_cache_only
+  regcache_mark_dirty
+  regcache_sync
+  regcache_sync_region
+  __register_blkdev
+  register_candev
+  __register_chrdev
+  register_chrdev_region
+  register_console
+  register_die_notifier
+  register_ftrace_export
+  register_inet6addr_notifier
+  register_inetaddr_notifier
+  register_kprobe
+  register_kretprobe
+  register_memory_notifier
+  register_module_notifier
+  register_netdev
+  register_netdevice
+  register_netdevice_notifier
+  register_netevent_notifier
+  register_net_sysctl
+  register_oom_notifier
+  register_pernet_device
+  register_pernet_subsys
+  register_pm_notifier
+  register_pppox_proto
+  register_qdisc
+  register_reboot_notifier
+  register_restart_handler
+  __register_rpmsg_driver
+  register_shrinker
+  register_syscore_ops
+  register_sysctl
+  register_sysctl_table
+  register_virtio_device
+  register_virtio_driver
+  regmap_bulk_read
+  regmap_bulk_write
+  regmap_check_range_table
+  regmap_field_read
+  regmap_field_update_bits_base
+  __regmap_init
+  regmap_irq_get_virq
+  regmap_mmio_detach_clk
+  regmap_read
+  regmap_update_bits_base
+  regmap_write
+  regulator_allow_bypass
+  regulator_bulk_disable
+  regulator_bulk_enable
+  regulator_count_voltages
+  regulator_disable
+  regulator_disable_regmap
+  regulator_enable
+  regulator_enable_regmap
+  regulator_force_disable
+  regulator_get
+  regulator_get_mode
+  regulator_get_optional
+  regulator_get_voltage
+  regulator_get_voltage_rdev
+  regulator_get_voltage_sel_regmap
+  regulator_is_enabled
+  regulator_is_enabled_regmap
+  regulator_is_supported_voltage
+  regulator_list_voltage_linear
+  regulator_list_voltage_linear_range
+  regulator_map_voltage_linear
+  regulator_notifier_call_chain
+  regulator_put
+  regulator_register_notifier
+  regulator_set_active_discharge_regmap
+  regulator_set_current_limit
+  regulator_set_load
+  regulator_set_mode
+  regulator_set_pull_down_regmap
+  regulator_set_voltage
+  regulator_set_voltage_sel_regmap
+  regulator_unregister_notifier
+  release_firmware
+  __release_region
+  release_sock
+  remap_pfn_range
+  remove_cpu
+  remove_memory
+  remove_proc_entry
+  remove_resource
+  remove_wait_queue
+  report_iommu_fault
+  request_any_context_irq
+  request_firmware
+  request_firmware_direct
+  request_firmware_into_buf
+  request_firmware_nowait
+  __request_module
+  __request_percpu_irq
+  __request_region
+  request_threaded_irq
+  resched_curr
+  reset_control_acquire
+  reset_control_assert
+  reset_control_deassert
+  reset_control_release
+  reset_control_reset
+  return_address
+  rfkill_alloc
+  rfkill_blocked
+  rfkill_destroy
+  rfkill_find_type
+  rfkill_get_led_trigger_name
+  rfkill_init_sw_state
+  rfkill_pause_polling
+  rfkill_register
+  rfkill_resume_polling
+  rfkill_set_hw_state_reason
+  rfkill_set_led_trigger_name
+  rfkill_set_states
+  rfkill_set_sw_state
+  rfkill_soft_blocked
+  rfkill_unregister
+  rhashtable_destroy
+  rhashtable_free_and_destroy
+  rhashtable_init
+  rhashtable_insert_slow
+  rhashtable_walk_enter
+  rhashtable_walk_exit
+  rhashtable_walk_next
+  rhashtable_walk_start_check
+  rhashtable_walk_stop
+  rhltable_init
+  __rht_bucket_nested
+  rht_bucket_nested
+  rht_bucket_nested_insert
+  root_task_group
+  round_jiffies
+  round_jiffies_relative
+  round_jiffies_up
+  rpmsg_poll
+  rpmsg_register_device
+  rpmsg_register_device_override
+  rpmsg_send
+  rpmsg_trysend
+  rpmsg_unregister_device
+  rproc_add
+  rproc_add_subdev
+  rproc_alloc
+  rproc_boot
+  rproc_coredump
+  rproc_coredump_add_custom_segment
+  rproc_coredump_add_segment
+  rproc_coredump_cleanup
+  rproc_coredump_set_elf_info
+  rproc_coredump_using_sections
+  rproc_del
+  rproc_free
+  rproc_get_by_child
+  rproc_get_by_phandle
+  rproc_put
+  rproc_remove_subdev
+  rproc_report_crash
+  rproc_set_firmware
+  rproc_shutdown
+  rtc_time64_to_tm
+  rtc_tm_to_time64
+  rtc_update_irq
+  rt_mutex_lock
+  rt_mutex_trylock
+  rt_mutex_unlock
+  rtnl_is_locked
+  rtnl_link_register
+  rtnl_link_unregister
+  rtnl_lock
+  rtnl_register_module
+  rtnl_trylock
+  rtnl_unicast
+  rtnl_unlock
+  rtnl_unregister
+  rtnl_unregister_all
+  runqueues
+  safe_candev_priv
+  sampling_rate_store
+  scatterwalk_ffwd
+  scatterwalk_map_and_copy
+  sched_clock
+  sched_feat_keys
+  sched_feat_names
+  sched_setattr
+  sched_set_fifo
+  sched_set_fifo_low
+  sched_set_normal
+  sched_setscheduler
+  sched_setscheduler_nocheck
+  sched_show_task
+  sched_uclamp_used
+  schedule
+  schedule_hrtimeout
+  schedule_timeout
+  schedule_timeout_interruptible
+  schedule_timeout_uninterruptible
+  scmi_driver_register
+  scmi_driver_unregister
+  scmi_protocol_register
+  scmi_protocol_unregister
+  scnprintf
+  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_iterate_devices
+  scsi_normalize_sense
+  __scsi_print_sense
+  scsi_register_interface
+  sdev_prefix_printk
+  __sdhci_add_host
+  sdhci_add_host
+  sdhci_cleanup_host
+  sdhci_cqe_disable
+  sdhci_cqe_enable
+  sdhci_cqe_irq
+  sdhci_dumpregs
+  sdhci_enable_clk
+  sdhci_get_property
+  sdhci_pltfm_free
+  sdhci_pltfm_init
+  sdhci_remove_host
+  sdhci_reset
+  sdhci_set_bus_width
+  sdhci_set_power_noreg
+  __sdhci_set_timeout
+  sdhci_setup_host
+  sdio_claim_host
+  sdio_claim_irq
+  sdio_disable_func
+  sdio_enable_func
+  sdio_readb
+  sdio_readsb
+  sdio_register_driver
+  sdio_release_host
+  sdio_release_irq
+  sdio_unregister_driver
+  sdio_writeb
+  sdio_writesb
+  security_sk_classify_flow
+  security_sk_clone
+  security_sock_graft
+  select_fallback_rq
+  seq_buf_printf
+  seq_hex_dump
+  seq_hlist_next
+  seq_hlist_start_head
+  seq_lseek
+  seq_open
+  seq_printf
+  seq_putc
+  seq_puts
+  seq_read
+  seq_release
+  seq_vprintf
+  seq_write
+  serdev_device_close
+  __serdev_device_driver_register
+  serdev_device_get_tiocm
+  serdev_device_open
+  serdev_device_set_baudrate
+  serdev_device_set_flow_control
+  serdev_device_set_tiocm
+  serdev_device_wait_until_sent
+  serdev_device_write_buf
+  serdev_device_write_flush
+  set_capacity
+  set_capacity_and_notify
+  set_cpus_allowed_ptr
+  set_direct_map_range_uncached
+  set_disk_ro
+  set_next_entity
+  set_normalized_timespec64
+  set_page_dirty_lock
+  __SetPageMovable
+  set_task_cpu
+  setup_udp_tunnel_sock
+  set_user_nice
+  sg_alloc_table
+  sg_alloc_table_chained
+  sg_alloc_table_from_pages_segment
+  sg_copy_from_buffer
+  sg_copy_to_buffer
+  sg_free_table
+  sg_free_table_chained
+  sg_init_one
+  sg_init_table
+  sg_miter_next
+  sg_miter_skip
+  sg_miter_start
+  sg_miter_stop
+  sg_nents
+  sg_next
+  __sg_page_iter_dma_next
+  __sg_page_iter_next
+  __sg_page_iter_start
+  shmem_file_setup
+  shmem_read_mapping_page_gfp
+  show_rcu_gp_kthreads
+  show_rcu_tasks_classic_gp_kthread
+  show_rcu_tasks_trace_gp_kthread
+  show_regs
+  si_mem_available
+  si_meminfo
+  simple_attr_open
+  simple_attr_read
+  simple_attr_release
+  simple_attr_write
+  simple_open
+  simple_read_from_buffer
+  simple_write_to_buffer
+  single_open
+  single_open_size
+  single_release
+  si_swapinfo
+  sk_alloc
+  skb_add_rx_frag
+  skb_append_pagefrags
+  skb_checksum
+  skb_checksum_help
+  skb_clone
+  skb_clone_sk
+  skb_coalesce_rx_frag
+  skb_complete_tx_timestamp
+  skb_complete_wifi_ack
+  skb_copy
+  skb_copy_bits
+  skb_copy_datagram_from_iter
+  skb_copy_datagram_iter
+  skb_copy_expand
+  skb_cow_data
+  skb_dequeue
+  skb_dequeue_tail
+  skb_ensure_writable
+  __skb_flow_dissect
+  skb_free_datagram
+  __skb_get_hash
+  __skb_gso_segment
+  __skb_pad
+  skb_page_frag_refill
+  skb_partial_csum_set
+  skb_pull
+  skb_pull_data
+  skb_pull_rcsum
+  skb_push
+  skb_put
+  skb_queue_head
+  skb_queue_purge
+  skb_queue_tail
+  skb_realloc_headroom
+  skb_recv_datagram
+  skb_scrub_packet
+  skb_set_owner_w
+  skb_store_bits
+  skb_to_sgvec
+  skb_trim
+  skb_try_coalesce
+  skb_tstamp_tx
+  skb_unlink
+  sk_common_release
+  sk_error_report
+  sk_filter_trim_cap
+  sk_free
+  skip_spaces
+  __sk_receive_skb
+  sk_reset_timer
+  sk_setup_caps
+  sk_stop_timer
+  slhc_compress
+  slhc_free
+  slhc_init
+  slhc_remember
+  slhc_toss
+  slhc_uncompress
+  smp_call_function
+  smp_call_function_single
+  smp_call_function_single_async
+  snapshot_get_image_size
+  snd_ctl_remove
+  snd_hwdep_new
+  snd_info_create_card_entry
+  snd_info_create_module_entry
+  snd_info_free_entry
+  snd_info_register
+  snd_interval_refine
+  snd_jack_set_key
+  snd_pcm_format_width
+  _snd_pcm_hw_params_any
+  snd_pcm_set_managed_buffer
+  snd_pcm_std_chmaps
+  snd_pcm_stop
+  snd_soc_add_component_controls
+  snd_soc_card_get_kcontrol
+  snd_soc_card_jack_new
+  snd_soc_component_exit_regmap
+  snd_soc_component_init_regmap
+  snd_soc_component_read
+  snd_soc_component_update_bits
+  snd_soc_component_write
+  snd_soc_dai_get_channel_map
+  snd_soc_dai_set_channel_map
+  snd_soc_dapm_add_routes
+  snd_soc_dapm_disable_pin
+  snd_soc_dapm_force_enable_pin
+  snd_soc_dapm_get_enum_double
+  snd_soc_dapm_get_volsw
+  snd_soc_dapm_ignore_suspend
+  snd_soc_dapm_kcontrol_widget
+  snd_soc_dapm_mixer_update_power
+  snd_soc_dapm_mux_update_power
+  snd_soc_dapm_new_controls
+  snd_soc_dapm_new_widgets
+  snd_soc_dapm_put_enum_double
+  snd_soc_dapm_put_volsw
+  snd_soc_dapm_sync
+  snd_soc_get_enum_double
+  snd_soc_get_pcm_runtime
+  snd_soc_get_volsw
+  snd_soc_info_enum_double
+  snd_soc_info_multi_ext
+  snd_soc_info_volsw
+  snd_soc_jack_report
+  snd_soc_lookup_component
+  snd_soc_of_parse_audio_routing
+  snd_soc_of_parse_card_name
+  snd_soc_pm_ops
+  snd_soc_put_enum_double
+  snd_soc_put_volsw
+  snd_soc_register_component
+  snd_soc_rtdcom_lookup
+  snd_soc_set_runtime_hwparams
+  snd_soc_unregister_card
+  snd_soc_unregister_component
+  snd_timer_interrupt
+  snd_usb_autoresume
+  snd_usb_autosuspend
+  snd_usb_endpoint_close
+  snd_usb_endpoint_open
+  snd_usb_endpoint_prepare
+  snd_usb_power_domain_set
+  snprintf
+  soc_device_register
+  soc_device_unregister
+  sock_alloc_send_pskb
+  sock_cmsg_send
+  sock_common_getsockopt
+  sock_common_recvmsg
+  sock_common_setsockopt
+  __sock_create
+  sock_create_kern
+  sock_diag_register
+  sock_diag_save_cookie
+  sock_diag_unregister
+  sock_edemux
+  sock_efree
+  sockfd_lookup
+  sock_gen_put
+  sock_gettstamp
+  sock_i_ino
+  sock_init_data
+  sock_i_uid
+  sock_no_accept
+  sock_no_bind
+  sock_no_connect
+  sock_no_getname
+  sock_no_ioctl
+  sock_no_listen
+  sock_no_mmap
+  sock_no_recvmsg
+  sock_no_sendmsg
+  sock_no_sendpage
+  sock_no_shutdown
+  sock_no_socketpair
+  __sock_queue_rcv_skb
+  sock_queue_rcv_skb_reason
+  __sock_recv_cmsgs
+  sock_recv_errqueue
+  sock_recvmsg
+  __sock_recv_timestamp
+  __sock_recv_wifi_status
+  sock_register
+  sock_release
+  sock_rfree
+  sock_setsockopt
+  __sock_tx_timestamp
+  sock_unregister
+  sock_wmalloc
+  softnet_data
+  sort
+  __spi_alloc_controller
+  spi_register_controller
+  __spi_register_driver
+  spi_setup
+  spi_sync
+  spi_unregister_controller
+  __splice_from_pipe
+  split_page
+  spmi_controller_add
+  spmi_controller_alloc
+  spmi_controller_remove
+  spmi_device_from_of
+  __spmi_driver_register
+  spmi_ext_register_read
+  spmi_ext_register_readl
+  spmi_ext_register_write
+  spmi_ext_register_writel
+  spmi_register_read
+  spmi_register_write
+  spmi_register_zero_write
+  sprintf
+  sprint_symbol
+  srcu_barrier
+  srcu_batches_completed
+  srcu_init_notifier_head
+  srcu_notifier_call_chain
+  srcu_notifier_chain_register
+  srcu_notifier_chain_unregister
+  __srcu_read_lock
+  __srcu_read_unlock
+  srcutorture_get_gp_data
+  srcu_torture_stats_print
+  sscanf
+  __stack_chk_fail
+  stack_depot_fetch
+  stack_depot_save
+  stack_trace_print
+  stack_trace_save
+  start_poll_synchronize_rcu
+  start_poll_synchronize_rcu_expedited
+  start_poll_synchronize_srcu
+  static_key_disable
+  stop_machine
+  stop_one_cpu
+  stop_one_cpu_nowait
+  strcasecmp
+  strchr
+  strchrnul
+  strcmp
+  strcpy
+  stream_open
+  strim
+  string_get_size
+  strlcat
+  strlcpy
+  strlen
+  strncasecmp
+  strnchr
+  strncmp
+  strncpy
+  strncpy_from_user
+  strnlen
+  strnstr
+  strpbrk
+  strrchr
+  strreplace
+  strscpy
+  strscpy_pad
+  strsep
+  strstr
+  __sw_hweight16
+  __sw_hweight32
+  __sw_hweight64
+  __sw_hweight8
+  sync_blockdev
+  sync_file_create
+  sync_file_get_fence
+  synchronize_irq
+  synchronize_net
+  synchronize_rcu
+  synchronize_rcu_expedited
+  synchronize_rcu_tasks
+  synchronize_rcu_tasks_trace
+  synchronize_srcu
+  synchronize_srcu_expedited
+  synth_event_create
+  synth_event_delete
+  syscon_node_to_regmap
+  syscon_regmap_lookup_by_phandle
+  sysctl_sched_features
+  sysctl_vals
+  sysfs_add_file_to_group
+  sysfs_add_link_to_group
+  sysfs_create_bin_file
+  sysfs_create_file_ns
+  sysfs_create_files
+  sysfs_create_group
+  sysfs_create_groups
+  sysfs_create_link
+  sysfs_emit
+  sysfs_emit_at
+  __sysfs_match_string
+  sysfs_notify
+  sysfs_remove_bin_file
+  sysfs_remove_file_from_group
+  sysfs_remove_file_ns
+  sysfs_remove_files
+  sysfs_remove_group
+  sysfs_remove_groups
+  sysfs_remove_link
+  sysfs_remove_link_from_group
+  sysfs_streq
+  sysfs_update_group
+  sysrq_mask
+  system_32bit_el0_cpumask
+  system_freezable_power_efficient_wq
+  system_freezable_wq
+  system_highpri_wq
+  system_long_wq
+  system_power_efficient_wq
+  system_state
+  system_unbound_wq
+  system_wq
+  sys_tz
+  task_active_pid_ns
+  __tasklet_hi_schedule
+  tasklet_init
+  tasklet_kill
+  __tasklet_schedule
+  tasklet_setup
+  tasklet_unlock_wait
+  tasklist_lock
+  __task_pid_nr_ns
+  __task_rq_lock
+  task_rq_lock
+  tcp_hashinfo
+  thermal_cdev_update
+  thermal_cooling_device_register
+  thermal_cooling_device_unregister
+  thermal_of_cooling_device_register
+  thermal_pressure
+  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
+  tick_nohz_get_sleep_length
+  time64_to_tm
+  timer_unstable_counter_workaround
+  timespec64_to_jiffies
+  tipc_dump_done
+  tipc_dump_start
+  tipc_nl_sk_walk
+  tipc_sk_fill_sock_diag
+  topology_clear_scale_freq_source
+  topology_update_done
+  topology_update_thermal_pressure
+  _totalram_pages
+  _trace_android_vh_record_pcpu_rwsem_starttime
+  trace_array_put
+  __trace_bprintk
+  trace_clock_local
+  trace_event_buffer_commit
+  trace_event_buffer_reserve
+  trace_event_ignore_this_pid
+  trace_event_printf
+  trace_event_raw_init
+  trace_event_reg
+  trace_get_event_file
+  trace_handle_return
+  __traceiter_android_rvh_account_irq
+  __traceiter_android_rvh_after_dequeue_task
+  __traceiter_android_rvh_after_enqueue_task
+  __traceiter_android_rvh_audio_usb_offload_disconnect
+  __traceiter_android_rvh_build_perf_domains
+  __traceiter_android_rvh_can_migrate_task
+  __traceiter_android_rvh_check_preempt_tick
+  __traceiter_android_rvh_check_preempt_wakeup
+  __traceiter_android_rvh_check_preempt_wakeup_ignore
+  __traceiter_android_rvh_cpu_cgroup_attach
+  __traceiter_android_rvh_cpu_cgroup_online
+  __traceiter_android_rvh_cpu_overutilized
+  __traceiter_android_rvh_dequeue_entity
+  __traceiter_android_rvh_dequeue_task
+  __traceiter_android_rvh_dequeue_task_fair
+  __traceiter_android_rvh_do_sched_yield
+  __traceiter_android_rvh_enqueue_entity
+  __traceiter_android_rvh_enqueue_task
+  __traceiter_android_rvh_enqueue_task_fair
+  __traceiter_android_rvh_entity_tick
+  __traceiter_android_rvh_find_busiest_group
+  __traceiter_android_rvh_find_busiest_queue
+  __traceiter_android_rvh_find_lowest_rq
+  __traceiter_android_rvh_finish_prio_fork
+  __traceiter_android_rvh_flush_task
+  __traceiter_android_rvh_get_nohz_timer_target
+  __traceiter_android_rvh_gic_v3_set_affinity
+  __traceiter_android_rvh_iommu_alloc_insert_iova
+  __traceiter_android_rvh_iommu_iovad_init_alloc_algo
+  __traceiter_android_rvh_iommu_limit_align_shift
+  __traceiter_android_rvh_iommu_setup_dma_ops
+  __traceiter_android_rvh_is_cpu_allowed
+  __traceiter_android_rvh_migrate_queued_task
+  __traceiter_android_rvh_mmc_resume
+  __traceiter_android_rvh_mmc_suspend
+  __traceiter_android_rvh_new_task_stats
+  __traceiter_android_rvh_pick_next_entity
+  __traceiter_android_rvh_place_entity
+  __traceiter_android_rvh_prepare_prio_fork
+  __traceiter_android_rvh_replace_next_task_fair
+  __traceiter_android_rvh_rtmutex_prepare_setprio
+  __traceiter_android_rvh_rto_next_cpu
+  __traceiter_android_rvh_sched_balance_rt
+  __traceiter_android_rvh_sched_cpu_dying
+  __traceiter_android_rvh_sched_cpu_starting
+  __traceiter_android_rvh_sched_exec
+  __traceiter_android_rvh_sched_fork
+  __traceiter_android_rvh_sched_fork_init
+  __traceiter_android_rvh_sched_getaffinity
+  __traceiter_android_rvh_sched_newidle_balance
+  __traceiter_android_rvh_sched_nohz_balancer_kick
+  __traceiter_android_rvh_sched_rebalance_domains
+  __traceiter_android_rvh_sched_setaffinity
+  __traceiter_android_rvh_schedule
+  __traceiter_android_rvh_schedule_bug
+  __traceiter_android_rvh_select_fallback_rq
+  __traceiter_android_rvh_select_task_rq_fair
+  __traceiter_android_rvh_select_task_rq_rt
+  __traceiter_android_rvh_set_balance_anon_file_reclaim
+  __traceiter_android_rvh_set_cpus_allowed_by_task
+  __traceiter_android_rvh_set_gfp_zone_flags
+  __traceiter_android_rvh_set_readahead_gfp_mask
+  __traceiter_android_rvh_setscheduler
+  __traceiter_android_rvh_set_task_cpu
+  __traceiter_android_rvh_set_user_nice
+  __traceiter_android_rvh_shmem_get_folio
+  __traceiter_android_rvh_show_max_freq
+  __traceiter_android_rvh_tick_entry
+  __traceiter_android_rvh_try_to_wake_up
+  __traceiter_android_rvh_try_to_wake_up_success
+  __traceiter_android_rvh_ttwu_cond
+  __traceiter_android_rvh_uclamp_eff_get
+  __traceiter_android_rvh_update_cpu_capacity
+  __traceiter_android_rvh_update_misfit_status
+  __traceiter_android_rvh_update_thermal_stats
+  __traceiter_android_rvh_util_est_update
+  __traceiter_android_rvh_wake_up_new_task
+  __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_check_uninterrupt_tasks
+  __traceiter_android_vh_check_uninterrupt_tasks_done
+  __traceiter_android_vh_cpufreq_fast_switch
+  __traceiter_android_vh_cpufreq_resolve_freq
+  __traceiter_android_vh_cpufreq_target
+  __traceiter_android_vh_check_hibernation_swap
+  __traceiter_android_vh_cpu_idle_enter
+  __traceiter_android_vh_cpu_idle_exit
+  __traceiter_android_vh_cpuidle_psci_enter
+  __traceiter_android_vh_cpuidle_psci_exit
+  __traceiter_android_vh_disable_thermal_cooling_stats
+  __traceiter_android_vh_do_wake_up_sync
+  __traceiter_android_vh_dump_throttled_rt_tasks
+  __traceiter_android_vh_free_task
+  __traceiter_android_vh_encrypt_page
+  __traceiter_android_vh_ftrace_dump_buffer
+  __traceiter_android_vh_ftrace_format_check
+  __traceiter_android_vh_ftrace_oops_enter
+  __traceiter_android_vh_ftrace_oops_exit
+  __traceiter_android_vh_ftrace_size_check
+  __traceiter_android_vh_ignore_dmabuf_vmap_bounds
+  __traceiter_android_vh_gic_v3_suspend
+  __traceiter_android_vh_ipi_stop
+  __traceiter_android_vh_jiffies_update
+  __traceiter_android_vh_kswapd_per_node
+  __traceiter_android_vh_mpam_set
+  __traceiter_android_vh_init_aes_encrypt
+  __traceiter_android_vh_post_image_save
+  __traceiter_android_vh_printk_hotplug
+  __traceiter_android_vh_rproc_recovery
+  __traceiter_android_vh_rproc_recovery_set
+  __traceiter_android_vh_save_cpu_resume
+  __traceiter_android_vh_save_hib_resume_bdev
+  __traceiter_android_vh_scheduler_tick
+  __traceiter_android_vh_setscheduler_uclamp
+  __traceiter_android_vh_show_resume_epoch_val
+  __traceiter_android_vh_show_suspend_epoch_val
+  __traceiter_android_vh_skip_swap_map_write
+  __traceiter_android_vh_timer_calc_index
+  __traceiter_android_vh_ufs_check_int_errors
+  __traceiter_android_vh_ufs_compl_command
+  __traceiter_android_vh_ufs_send_command
+  __traceiter_android_vh_ufs_send_tm_command
+  __traceiter_android_vh_ufs_send_uic_command
+  __traceiter_android_vh_ufs_update_sdev
+  __traceiter_android_vh_update_topology_flags_workfn
+  __traceiter_binder_transaction_received
+  __traceiter_cpu_frequency_limits
+  __traceiter_cpu_idle
+  __traceiter_gpu_mem_total
+  __traceiter_ipi_entry
+  __traceiter_ipi_raise
+  __traceiter_irq_handler_entry
+  __traceiter_mmap_lock_acquire_returned
+  __traceiter_mmap_lock_released
+  __traceiter_mmap_lock_start_locking
+  __traceiter_sched_overutilized_tp
+  __traceiter_sched_switch
+  __traceiter_suspend_resume
+  __traceiter_xdp_exception
+  trace_output_call
+  __tracepoint_android_rvh_account_irq
+  __tracepoint_android_rvh_after_dequeue_task
+  __tracepoint_android_rvh_after_enqueue_task
+  __tracepoint_android_rvh_audio_usb_offload_disconnect
+  __tracepoint_android_rvh_build_perf_domains
+  __tracepoint_android_rvh_can_migrate_task
+  __tracepoint_android_rvh_check_preempt_tick
+  __tracepoint_android_rvh_check_preempt_wakeup
+  __tracepoint_android_rvh_check_preempt_wakeup_ignore
+  __tracepoint_android_rvh_cpu_cgroup_attach
+  __tracepoint_android_rvh_cpu_cgroup_online
+  __tracepoint_android_rvh_cpu_overutilized
+  __tracepoint_android_rvh_dequeue_entity
+  __tracepoint_android_rvh_dequeue_task
+  __tracepoint_android_rvh_dequeue_task_fair
+  __tracepoint_android_rvh_do_sched_yield
+  __tracepoint_android_rvh_enqueue_entity
+  __tracepoint_android_rvh_enqueue_task
+  __tracepoint_android_rvh_enqueue_task_fair
+  __tracepoint_android_rvh_entity_tick
+  __tracepoint_android_rvh_find_busiest_group
+  __tracepoint_android_rvh_find_busiest_queue
+  __tracepoint_android_rvh_find_lowest_rq
+  __tracepoint_android_rvh_finish_prio_fork
+  __tracepoint_android_rvh_flush_task
+  __tracepoint_android_rvh_get_nohz_timer_target
+  __tracepoint_android_rvh_gic_v3_set_affinity
+  __tracepoint_android_rvh_iommu_alloc_insert_iova
+  __tracepoint_android_rvh_iommu_iovad_init_alloc_algo
+  __tracepoint_android_rvh_iommu_limit_align_shift
+  __tracepoint_android_rvh_iommu_setup_dma_ops
+  __tracepoint_android_rvh_is_cpu_allowed
+  __tracepoint_android_rvh_migrate_queued_task
+  __tracepoint_android_rvh_mmc_resume
+  __tracepoint_android_rvh_mmc_suspend
+  __tracepoint_android_rvh_new_task_stats
+  __tracepoint_android_rvh_pick_next_entity
+  __tracepoint_android_rvh_place_entity
+  __tracepoint_android_rvh_prepare_prio_fork
+  __tracepoint_android_rvh_replace_next_task_fair
+  __tracepoint_android_rvh_rtmutex_prepare_setprio
+  __tracepoint_android_rvh_rto_next_cpu
+  __tracepoint_android_rvh_sched_balance_rt
+  __tracepoint_android_rvh_sched_cpu_dying
+  __tracepoint_android_rvh_sched_cpu_starting
+  __tracepoint_android_rvh_sched_exec
+  __tracepoint_android_rvh_sched_fork
+  __tracepoint_android_rvh_sched_fork_init
+  __tracepoint_android_rvh_sched_getaffinity
+  __tracepoint_android_rvh_sched_newidle_balance
+  __tracepoint_android_rvh_sched_nohz_balancer_kick
+  __tracepoint_android_rvh_sched_rebalance_domains
+  __tracepoint_android_rvh_sched_setaffinity
+  __tracepoint_android_rvh_schedule
+  __tracepoint_android_rvh_schedule_bug
+  __tracepoint_android_rvh_select_fallback_rq
+  __tracepoint_android_rvh_select_task_rq_fair
+  __tracepoint_android_rvh_select_task_rq_rt
+  __tracepoint_android_rvh_set_balance_anon_file_reclaim
+  __tracepoint_android_rvh_set_cpus_allowed_by_task
+  __tracepoint_android_rvh_set_gfp_zone_flags
+  __tracepoint_android_rvh_set_readahead_gfp_mask
+  __tracepoint_android_rvh_setscheduler
+  __tracepoint_android_rvh_set_task_cpu
+  __tracepoint_android_rvh_set_user_nice
+  __tracepoint_android_rvh_shmem_get_folio
+  __tracepoint_android_rvh_show_max_freq
+  __tracepoint_android_rvh_tick_entry
+  __tracepoint_android_rvh_try_to_wake_up
+  __tracepoint_android_rvh_try_to_wake_up_success
+  __tracepoint_android_rvh_ttwu_cond
+  __tracepoint_android_rvh_uclamp_eff_get
+  __tracepoint_android_rvh_update_cpu_capacity
+  __tracepoint_android_rvh_update_misfit_status
+  __tracepoint_android_rvh_update_thermal_stats
+  __tracepoint_android_rvh_util_est_update
+  __tracepoint_android_rvh_wake_up_new_task
+  __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_check_uninterrupt_tasks
+  __tracepoint_android_vh_check_uninterrupt_tasks_done
+  __tracepoint_android_vh_cpufreq_fast_switch
+  __tracepoint_android_vh_cpufreq_resolve_freq
+  __tracepoint_android_vh_cpufreq_target
+  __tracepoint_android_vh_check_hibernation_swap
+  __tracepoint_android_vh_cpu_idle_enter
+  __tracepoint_android_vh_cpu_idle_exit
+  __tracepoint_android_vh_cpuidle_psci_enter
+  __tracepoint_android_vh_cpuidle_psci_exit
+  __tracepoint_android_vh_disable_thermal_cooling_stats
+  __tracepoint_android_vh_do_wake_up_sync
+  __tracepoint_android_vh_dump_throttled_rt_tasks
+  __tracepoint_android_vh_free_task
+  __tracepoint_android_vh_encrypt_page
+  __tracepoint_android_vh_ftrace_dump_buffer
+  __tracepoint_android_vh_ftrace_format_check
+  __tracepoint_android_vh_ftrace_oops_enter
+  __tracepoint_android_vh_ftrace_oops_exit
+  __tracepoint_android_vh_ftrace_size_check
+  __tracepoint_android_vh_ignore_dmabuf_vmap_bounds
+  __tracepoint_android_vh_gic_v3_suspend
+  __tracepoint_android_vh_ipi_stop
+  __tracepoint_android_vh_jiffies_update
+  __tracepoint_android_vh_kswapd_per_node
+  __tracepoint_android_vh_mpam_set
+  __tracepoint_android_vh_init_aes_encrypt
+  __tracepoint_android_vh_post_image_save
+  __tracepoint_android_vh_printk_hotplug
+  __tracepoint_android_vh_rproc_recovery
+  __tracepoint_android_vh_rproc_recovery_set
+  __tracepoint_android_vh_save_cpu_resume
+  __tracepoint_android_vh_save_hib_resume_bdev
+  __tracepoint_android_vh_scheduler_tick
+  __tracepoint_android_vh_setscheduler_uclamp
+  __tracepoint_android_vh_show_resume_epoch_val
+  __tracepoint_android_vh_show_suspend_epoch_val
+  __tracepoint_android_vh_skip_swap_map_write
+  __tracepoint_android_vh_timer_calc_index
+  __tracepoint_android_vh_ufs_check_int_errors
+  __tracepoint_android_vh_ufs_compl_command
+  __tracepoint_android_vh_ufs_send_command
+  __tracepoint_android_vh_ufs_send_tm_command
+  __tracepoint_android_vh_ufs_send_uic_command
+  __tracepoint_android_vh_ufs_update_sdev
+  __tracepoint_android_vh_update_topology_flags_workfn
+  __tracepoint_binder_transaction_received
+  __tracepoint_cpu_frequency_limits
+  __tracepoint_cpu_idle
+  __tracepoint_gpu_mem_total
+  __tracepoint_ipi_entry
+  __tracepoint_ipi_raise
+  __tracepoint_irq_handler_entry
+  __tracepoint_mmap_lock_acquire_returned
+  __tracepoint_mmap_lock_released
+  __tracepoint_mmap_lock_start_locking
+  tracepoint_probe_register
+  tracepoint_probe_register_prio
+  tracepoint_probe_unregister
+  __tracepoint_sched_overutilized_tp
+  __tracepoint_sched_switch
+  __tracepoint_suspend_resume
+  __tracepoint_xdp_exception
+  trace_print_array_seq
+  trace_print_flags_seq
+  trace_print_symbols_seq
+  trace_raw_output_prep
+  trace_seq_printf
+  trace_seq_putc
+  __trace_trigger_soft_disabled
+  tracing_off
+  try_module_get
+  try_wait_for_completion
+  __tty_alloc_driver
+  tty_driver_flush_buffer
+  tty_driver_kref_put
+  tty_encode_baud_rate
+  tty_flip_buffer_push
+  tty_get_char_size
+  tty_hangup
+  __tty_insert_flip_char
+  tty_insert_flip_string_fixed_flag
+  tty_kref_put
+  tty_ldisc_deref
+  tty_ldisc_flush
+  tty_ldisc_ref
+  tty_mode_ioctl
+  tty_port_close
+  tty_port_destroy
+  tty_port_hangup
+  tty_port_init
+  tty_port_install
+  tty_port_open
+  tty_port_put
+  tty_port_register_device
+  tty_port_tty_get
+  tty_port_tty_hangup
+  tty_port_tty_wakeup
+  tty_register_driver
+  tty_register_ldisc
+  tty_set_termios
+  tty_standard_install
+  tty_std_termios
+  tty_termios_baud_rate
+  tty_termios_copy_hw
+  tty_termios_encode_baud_rate
+  tty_unregister_device
+  tty_unregister_driver
+  tty_unregister_ldisc
+  tty_unthrottle
+  tty_vhangup
+  tty_wakeup
+  typec_get_drvdata
+  typec_register_partner
+  typec_register_port
+  typec_set_data_role
+  typec_set_pwr_opmode
+  typec_set_pwr_role
+  typec_unregister_partner
+  uart_add_one_port
+  uart_get_baud_rate
+  uart_insert_char
+  uart_register_driver
+  uart_remove_one_port
+  uart_resume_port
+  uart_suspend_port
+  uart_try_toggle_sysrq
+  uart_unregister_driver
+  uart_update_timeout
+  uart_write_wakeup
+  uclamp_eff_value
+  ucsi_connector_change
+  ucsi_create
+  ucsi_destroy
+  ucsi_get_drvdata
+  ucsi_register
+  ucsi_set_drvdata
+  ucsi_unregister
+  __udelay
+  __udp4_lib_lookup
+  __udp6_lib_lookup
+  udp6_set_csum
+  udp_set_csum
+  udp_sock_create4
+  udp_sock_create6
+  udp_table
+  udp_tunnel6_xmit_skb
+  udp_tunnel_sock_release
+  udp_tunnel_xmit_skb
+  ufshcd_auto_hibern8_update
+  ufshcd_dme_get_attr
+  ufshcd_dme_set_attr
+  ufshcd_dump_regs
+  ufshcd_fixup_dev_quirks
+  ufshcd_get_local_unipro_ver
+  ufshcd_hba_stop
+  ufshcd_hold
+  ufshcd_mcq_config_esi
+  ufshcd_mcq_enable_esi
+  ufshcd_mcq_poll_cqe_nolock
+  ufshcd_mcq_write_cqis
+  ufshcd_pltfrm_init
+  ufshcd_pltfrm_shutdown
+  ufshcd_query_attr
+  ufshcd_query_descriptor_retry
+  ufshcd_query_flag
+  ufshcd_release
+  ufshcd_remove
+  ufshcd_resume_complete
+  ufshcd_runtime_resume
+  ufshcd_runtime_suspend
+  ufshcd_suspend_prepare
+  ufshcd_system_freeze
+  ufshcd_system_restore
+  ufshcd_system_resume
+  ufshcd_system_suspend
+  ufshcd_system_thaw
+  ufshcd_uic_hibern8_enter
+  ufshcd_uic_hibern8_exit
+  __uio_register_device
+  uio_unregister_device
+  unlock_page
+  unregister_blkdev
+  unregister_candev
+  __unregister_chrdev
+  unregister_chrdev_region
+  unregister_console
+  unregister_die_notifier
+  unregister_ftrace_export
+  unregister_inet6addr_notifier
+  unregister_inetaddr_notifier
+  unregister_kprobe
+  unregister_kretprobe
+  unregister_netdev
+  unregister_netdevice_many
+  unregister_netdevice_notifier
+  unregister_netdevice_queue
+  unregister_netevent_notifier
+  unregister_net_sysctl_table
+  unregister_oom_notifier
+  unregister_pernet_device
+  unregister_pernet_subsys
+  unregister_pm_notifier
+  unregister_pppox_proto
+  unregister_qdisc
+  unregister_reboot_notifier
+  unregister_restart_handler
+  unregister_rpmsg_driver
+  unregister_shrinker
+  unregister_syscore_ops
+  unregister_sysctl_table
+  unregister_virtio_device
+  unregister_virtio_driver
+  up
+  update_devfreq
+  update_rq_clock
+  up_read
+  up_write
+  usb_add_phy_dev
+  usb_alloc_coherent
+  usb_alloc_urb
+  usb_altnum_to_altsetting
+  usb_anchor_urb
+  usb_assign_descriptors
+  usb_autopm_get_interface
+  usb_autopm_get_interface_async
+  usb_autopm_get_interface_no_resume
+  usb_autopm_put_interface
+  usb_autopm_put_interface_async
+  usb_bus_idr
+  usb_bus_idr_lock
+  usb_clear_halt
+  usb_composite_setup_continue
+  usb_control_msg
+  usb_control_msg_recv
+  usb_control_msg_send
+  usb_debug_root
+  usb_decode_ctrl
+  usb_deregister
+  usb_device_match_id
+  usb_disabled
+  usb_driver_claim_interface
+  usb_driver_release_interface
+  usb_driver_set_configuration
+  usb_enable_lpm
+  usb_ep_alloc_request
+  usb_ep_autoconfig
+  usb_ep_dequeue
+  usb_ep_disable
+  usb_ep_enable
+  usb_ep_free_request
+  usb_ep_queue
+  usb_ep_set_halt
+  usb_find_common_endpoints
+  usb_free_all_descriptors
+  usb_free_coherent
+  usb_free_urb
+  usb_function_register
+  usb_function_unregister
+  usb_gadget_wakeup
+  usb_get_dev
+  usb_get_from_anchor
+  usb_get_intf
+  usb_get_urb
+  usb_ifnum_to_if
+  usb_interface_id
+  usb_kill_urb
+  usb_match_id
+  usb_match_one_id
+  usb_phy_set_charger_current
+  usb_poison_urb
+  usb_put_dev
+  usb_put_function_instance
+  usb_put_intf
+  usb_register_driver
+  usb_register_notify
+  usb_remove_phy
+  usb_reset_configuration
+  usb_role_switch_find_by_fwnode
+  usb_role_switch_get_drvdata
+  usb_role_switch_register
+  usb_role_switch_set_role
+  usb_role_switch_unregister
+  usb_serial_claim_interface
+  usb_serial_deregister_drivers
+  usb_serial_generic_chars_in_buffer
+  usb_serial_generic_close
+  usb_serial_generic_get_icount
+  usb_serial_generic_open
+  usb_serial_generic_process_read_urb
+  usb_serial_generic_read_bulk_callback
+  usb_serial_generic_resume
+  usb_serial_generic_submit_read_urbs
+  usb_serial_generic_throttle
+  usb_serial_generic_tiocmiwait
+  usb_serial_generic_unthrottle
+  usb_serial_generic_wait_until_sent
+  usb_serial_generic_write
+  usb_serial_generic_write_bulk_callback
+  usb_serial_generic_write_start
+  usb_serial_handle_dcd_change
+  usb_serial_port_softint
+  usb_serial_register_drivers
+  usb_serial_resume
+  usb_serial_suspend
+  usb_show_dynids
+  usb_speed_string
+  usb_store_new_id
+  usb_string
+  usb_string_id
+  usb_submit_urb
+  usb_unlink_urb
+  usb_unpoison_urb
+  usb_unregister_notify
+  __usecs_to_jiffies
+  usleep_range_state
+  utf8_data_table
+  uuid_parse
+  v4l2_compat_ioctl32
+  v4l2_ctrl_find
+  v4l2_ctrl_get_name
+  v4l2_ctrl_handler_free
+  v4l2_ctrl_handler_init_class
+  __v4l2_ctrl_modify_range
+  v4l2_ctrl_new_custom
+  v4l2_ctrl_new_std
+  v4l2_ctrl_new_std_menu
+  v4l2_ctrl_request_complete
+  v4l2_ctrl_request_setup
+  __v4l2_ctrl_s_ctrl
+  v4l2_ctrl_subscribe_event
+  v4l2_device_register
+  v4l2_device_register_subdev
+  __v4l2_device_register_subdev_nodes
+  v4l2_device_unregister
+  v4l2_device_unregister_subdev
+  v4l2_event_dequeue
+  v4l2_event_pending
+  v4l2_event_queue
+  v4l2_event_queue_fh
+  v4l2_event_subscribe
+  v4l2_event_unsubscribe
+  v4l2_fh_add
+  v4l2_fh_del
+  v4l2_fh_exit
+  v4l2_fh_init
+  v4l2_fh_is_singular
+  v4l2_fh_open
+  v4l2_fh_release
+  v4l2_m2m_ctx_init
+  v4l2_m2m_ctx_release
+  v4l2_m2m_dqbuf
+  v4l2_m2m_init
+  v4l2_m2m_job_finish
+  v4l2_m2m_poll
+  v4l2_m2m_querybuf
+  v4l2_m2m_register_media_controller
+  v4l2_m2m_release
+  v4l2_m2m_reqbufs
+  v4l2_m2m_request_queue
+  v4l2_m2m_streamoff
+  v4l2_m2m_streamon
+  v4l2_m2m_try_schedule
+  v4l2_m2m_unregister_media_controller
+  v4l2_s_ctrl
+  v4l2_src_change_event_subscribe
+  v4l2_subdev_call_wrappers
+  v4l2_subdev_init
+  vb2_buffer_done
+  vb2_create_bufs
+  vb2_dqbuf
+  vb2_prepare_buf
+  vb2_qbuf
+  vb2_querybuf
+  vb2_queue_init
+  vb2_queue_release
+  vb2_reqbufs
+  vb2_request_validate
+  vb2_streamoff
+  vb2_streamon
+  vchan_dma_desc_free_list
+  vchan_find_desc
+  vchan_init
+  vchan_tx_desc_free
+  vchan_tx_submit
+  verify_pkcs7_signature
+  vfree
+  vhost_add_used_and_signal
+  vhost_dev_check_owner
+  vhost_dev_cleanup
+  vhost_dev_init
+  vhost_dev_ioctl
+  vhost_dev_stop
+  vhost_disable_notify
+  vhost_enable_notify
+  vhost_get_vq_desc
+  vhost_log_access_ok
+  vhost_vq_access_ok
+  vhost_vq_init_access
+  vhost_vring_ioctl
+  video_devdata
+  video_device_alloc
+  video_device_release
+  video_device_release_empty
+  video_ioctl2
+  __video_register_device
+  video_unregister_device
+  virtio_break_device
+  virtio_check_driver_offered_feature
+  virtio_config_changed
+  virtio_device_freeze
+  virtio_device_restore
+  virtio_max_dma_size
+  virtio_reset_device
+  virtqueue_add_inbuf
+  virtqueue_add_inbuf_ctx
+  virtqueue_add_outbuf
+  virtqueue_add_sgs
+  virtqueue_detach_unused_buf
+  virtqueue_disable_cb
+  virtqueue_enable_cb
+  virtqueue_enable_cb_delayed
+  virtqueue_enable_cb_prepare
+  virtqueue_get_avail_addr
+  virtqueue_get_buf
+  virtqueue_get_buf_ctx
+  virtqueue_get_desc_addr
+  virtqueue_get_used_addr
+  virtqueue_get_vring_size
+  virtqueue_is_broken
+  virtqueue_kick
+  virtqueue_kick_prepare
+  virtqueue_notify
+  virtqueue_poll
+  virtqueue_resize
+  vlan_dev_vlan_id
+  vlan_filter_drop_vids
+  vlan_filter_push_vids
+  vlan_ioctl_set
+  vlan_uses_dev
+  vlan_vid_add
+  vlan_vid_del
+  vlan_vids_add_by_dev
+  vlan_vids_del_by_dev
+  vmalloc
+  vmalloc_nr_pages
+  vmalloc_to_page
+  vmalloc_to_pfn
+  vmap
+  vmemdup_user
+  vmf_insert_mixed
+  vmf_insert_pfn
+  vm_get_page_prot
+  vm_insert_page
+  vm_iomap_memory
+  vm_map_pages
+  vm_map_ram
+  vm_mmap
+  vm_munmap
+  vm_node_stat
+  vm_unmap_ram
+  vm_zone_stat
+  vprintk
+  vring_create_virtqueue
+  vring_del_virtqueue
+  vring_interrupt
+  vring_transport_features
+  vscnprintf
+  vsnprintf
+  vsprintf
+  vunmap
+  vzalloc
+  wait_for_completion
+  wait_for_completion_interruptible
+  wait_for_completion_interruptible_timeout
+  wait_for_completion_killable
+  wait_for_completion_timeout
+  __wait_rcu_gp
+  wait_woken
+  __wake_up
+  wake_up_bit
+  wake_up_if_idle
+  __wake_up_locked
+  wake_up_process
+  wakeup_source_register
+  wakeup_source_unregister
+  __wake_up_sync_key
+  __warn_printk
+  wireless_nlevent_flush
+  wireless_send_event
+  woken_wake_function
+  work_busy
+  wpan_phy_find
+  wpan_phy_for_each
+  wpan_phy_free
+  wpan_phy_new
+  wpan_phy_register
+  wpan_phy_unregister
+  ww_mutex_lock
+  ww_mutex_trylock
+  ww_mutex_unlock
+  __xa_alloc
+  __xa_alloc_cyclic
+  xa_destroy
+  xa_erase
+  xa_find
+  xa_find_after
+  __xa_insert
+  xa_load
+  xa_store
+  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
+  xfrm_lookup
+  xhci_alloc_command
+  xhci_alloc_erst
+  xhci_free_command
+  xhci_get_endpoint_index
+  xhci_queue_stop_endpoint
+  xhci_ring_alloc
+  xhci_ring_cmd_db
+  xhci_ring_free
+  xhci_trb_virt_to_dma
+  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
+  zap_vma_ptes
+  zlib_deflate
+  zlib_deflateEnd
+  zlib_deflateInit2
+  zlib_deflateReset
+  zlib_deflate_workspacesize
+  zlib_inflate
+  zlib_inflateIncomp
+  zlib_inflateInit2
+  zlib_inflateReset
+  zlib_inflate_workspacesize
+  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_unisoc b/android/abi_gki_aarch64_unisoc
new file mode 100644
index 0000000..f2724b1
--- /dev/null
+++ b/android/abi_gki_aarch64_unisoc
@@ -0,0 +1,1945 @@
+[abi_symbol_list]
+# commonly used symbols
+  add_cpu
+  add_wait_queue
+  add_wait_queue_exclusive
+  activate_task
+  alloc_chrdev_region
+  alloc_etherdev_mqs
+  alloc_netdev_mqs
+  __alloc_pages
+  alloc_pages_exact
+  __alloc_percpu
+  __alloc_percpu_gfp
+  __alloc_skb
+  alloc_workqueue
+  alt_cb_patch_nops
+  arch_freq_scale
+  __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
+  available_idle_cpu
+  balance_push_callback
+  bcmp
+  blockdev_superblock
+  bpf_trace_run1
+  bpf_trace_run2
+  bpf_trace_run3
+  bpf_trace_run4
+  call_rcu
+  cancel_delayed_work
+  cancel_delayed_work_sync
+  cancel_work_sync
+  capable
+  cdc_parse_cdc_header
+  cdev_add
+  cdev_del
+  cdev_init
+  check_preempt_curr
+  __check_object_size
+  __class_create
+  class_destroy
+  class_find_device
+  __class_register
+  class_unregister
+  clk_disable
+  clk_enable
+  clk_fixed_factor_ops
+  clk_get_rate
+  clk_prepare
+  clk_set_parent
+  clk_unprepare
+  complete
+  __const_udelay
+  consume_skb
+  _copy_from_iter
+  _copy_to_iter
+  __cpuhp_remove_state
+  __cpuhp_setup_state
+  __cpuhp_state_add_instance
+  __cpuhp_state_remove_instance
+  __cpufreq_driver_target
+  cpufreq_disable_fast_switch
+  cpufreq_driver_fast_switch
+  cpufreq_driver_resolve_freq
+  cpufreq_enable_fast_switch
+  cpufreq_policy_transition_delay_us
+  cpufreq_this_cpu_can_update
+  cpufreq_register_governor
+  cpufreq_unregister_governor
+  cpu_hwcaps
+  cpu_number
+  __cpu_active_mask
+  __cpu_online_mask
+  __cpu_possible_mask
+  __cpu_present_mask
+  crc32_le
+  crypto_aead_decrypt
+  crypto_aead_encrypt
+  crypto_aead_setauthsize
+  crypto_aead_setkey
+  crypto_alloc_aead
+  crypto_alloc_shash
+  crypto_destroy_tfm
+  crypto_has_alg
+  css_next_child
+  datagram_poll
+  deactivate_task
+  debugfs_create_dir
+  debugfs_create_file
+  debugfs_create_u8
+  debugfs_remove
+  default_llseek
+  default_wake_function
+  delayed_work_timer_fn
+  del_timer
+  del_timer_sync
+  destroy_workqueue
+  dev_add_pack
+  dev_addr_mod
+  dev_driver_string
+  _dev_err
+  dev_err_probe
+  dev_fwnode
+  __dev_get_by_index
+  dev_get_by_index
+  dev_get_by_name
+  dev_get_regmap
+  dev_get_tstats64
+  device_add
+  device_create
+  device_create_file
+  device_del
+  device_destroy
+  device_get_match_data
+  device_initialize
+  device_move
+  device_property_read_u32_array
+  device_remove_file
+  device_set_wakeup_capable
+  device_wakeup_disable
+  device_wakeup_enable
+  _dev_info
+  __dev_kfree_skb_any
+  __dev_kfree_skb_irq
+  devm_add_action
+  devm_clk_get
+  devm_clk_get_optional
+  devm_free_irq
+  devm_gpiochip_add_data_with_key
+  devm_gpiod_get_optional
+  devm_hwspin_lock_request_specific
+  devm_iio_channel_get
+  devm_ioremap
+  devm_ioremap_resource
+  devm_kfree
+  devm_kmalloc
+  devm_mbox_controller_register
+  devm_nvmem_register
+  devm_of_platform_populate
+  devm_pinctrl_get
+  devm_platform_get_and_ioremap_resource
+  devm_platform_ioremap_resource
+  devm_power_supply_register
+  __devm_regmap_init
+  devm_regulator_get
+  devm_regulator_register
+  devm_request_threaded_irq
+  __devm_reset_control_get
+  devm_spi_register_controller
+  devm_usb_get_phy_by_phandle
+  __dev_queue_xmit
+  dev_remove_pack
+  dev_set_mac_address
+  dev_set_name
+  _dev_warn
+  disable_irq_nosync
+  dma_alloc_attrs
+  dma_buf_export
+  dma_free_attrs
+  dma_map_page_attrs
+  dma_release_channel
+  dma_request_chan
+  dma_set_coherent_mask
+  dma_set_mask
+  dma_sync_single_for_cpu
+  dma_sync_single_for_device
+  dma_unmap_page_attrs
+  do_trace_netlink_extack
+  double_rq_lock
+  down_read
+  down_write
+  driver_unregister
+  ___drm_dbg
+  __drm_dev_dbg
+  __drm_err
+  dst_release
+  __dynamic_dev_dbg
+  __dynamic_netdev_dbg
+  __dynamic_pr_debug
+  init_task
+  enable_irq
+  eth_mac_addr
+  eth_platform_get_mac_address
+  ethtool_convert_legacy_u32_to_link_mode
+  ethtool_op_get_link
+  ethtool_op_get_ts_info
+  eth_type_trans
+  eth_validate_addr
+  extcon_get_state
+  _find_next_bit
+  finish_wait
+  flush_delayed_work
+  flush_work
+  __flush_workqueue
+  __folio_put
+  fortify_panic
+  fput
+  free_irq
+  free_netdev
+  __free_pages
+  free_pages
+  free_pages_exact
+  free_percpu
+  genlmsg_put
+  genl_register_family
+  genl_unregister_family
+  gen_pool_add_owner
+  gen_pool_alloc_algo_owner
+  gen_pool_avail
+  gen_pool_create
+  gen_pool_destroy
+  gen_pool_free_owner
+  get_device
+  __get_free_pages
+  get_random_bytes
+  gic_nonsecure_priorities
+  gpiochip_disable_irq
+  gpiochip_enable_irq
+  gpiochip_get_data
+  gpiochip_irq_relres
+  gpiochip_irq_reqres
+  gpiod_get_value_cansleep
+  gpiod_to_irq
+  handle_bad_irq
+  handle_edge_irq
+  handle_level_irq
+  hrtimer_active
+  hrtimer_cancel
+  hrtimer_forward
+  hrtimer_init
+  hrtimer_start_range_ns
+  __hwspin_lock_timeout
+  __hwspin_unlock
+  i2c_add_numbered_adapter
+  i2c_del_adapter
+  ida_alloc_range
+  ida_free
+  idr_alloc
+  idr_destroy
+  idr_find
+  idr_for_each
+  idr_get_next
+  idr_remove
+  iio_read_channel_processed
+  init_net
+  __init_rwsem
+  __init_swait_queue_head
+  init_timer_key
+  init_wait_entry
+  __init_waitqueue_head
+  input_register_device
+  ioremap_prot
+  iounmap
+  iov_iter_kvec
+  iov_iter_revert
+  ip_route_output_flow
+  __ipv6_addr_type
+  irq_get_irq_data
+  __irq_resolve_mapping
+  irq_set_irq_wake
+  is_vmalloc_addr
+  jiffies
+  jiffies_to_msecs
+  kasan_flag_enabled
+  kernel_accept
+  kernel_bind
+  kernel_connect
+  kernel_listen
+  kernel_sendmsg
+  kernel_sock_shutdown
+  __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
+  kmem_cache_free
+  kmemdup
+  kobject_uevent
+  kobject_uevent_env
+  ksoftirqd
+  kstrtobool
+  kstrtoint
+  kstrtouint
+  kstrtoull
+  kthread_cancel_work_sync
+  kthread_create_on_node
+  kthread_should_stop
+  kthread_stop
+  ktime_get
+  ktime_get_boot_fast_ns
+  ktime_get_mono_fast_ns
+  ktime_get_with_offset
+  kvfree_call_rcu
+  __list_add_valid
+  __list_del_entry_valid
+  __local_bh_enable_ip
+  lock_sock_nested
+  log_post_read_mmio
+  log_post_write_mmio
+  log_read_mmio
+  log_write_mmio
+  mbox_chan_received_data
+  mbox_chan_txdone
+  memcpy
+  memmove
+  memset
+  memstart_addr
+  migrate_swap
+  misc_deregister
+  misc_register
+  mod_timer
+  __module_get
+  module_layout
+  module_put
+  __msecs_to_jiffies
+  msleep
+  __mutex_init
+  mutex_lock
+  mutex_trylock
+  mutex_unlock
+  napi_complete_done
+  napi_enable
+  __napi_schedule
+  napi_schedule_prep
+  __netdev_alloc_skb
+  netdev_err
+  netdev_info
+  netdev_notice
+  netdev_printk
+  netdev_warn
+  netif_carrier_off
+  netif_carrier_on
+  netif_device_attach
+  netif_device_detach
+  netif_napi_add_weight
+  netif_receive_skb
+  netif_rx
+  netif_set_tso_max_size
+  netif_tx_lock
+  netif_tx_unlock
+  netif_tx_wake_queue
+  netlink_broadcast
+  netlink_unicast
+  net_ratelimit
+  nf_conntrack_destroy
+  nla_memcpy
+  __nla_parse
+  nla_put
+  nla_put_64bit
+  nla_strscpy
+  __nlmsg_put
+  noop_llseek
+  nr_cpu_ids
+  ns_capable
+  ns_to_kernel_old_timeval
+  nvmem_cell_get
+  nvmem_cell_put
+  nvmem_cell_read
+  of_address_to_resource
+  of_alias_get_id
+  of_device_get_match_data
+  of_device_is_compatible
+  of_find_compatible_node
+  of_find_device_by_node
+  of_find_node_opts_by_path
+  of_find_property
+  of_get_cpu_node
+  of_get_next_child
+  of_get_parent
+  of_get_property
+  of_hwspin_lock_get_id
+  of_match_node
+  __of_parse_phandle_with_args
+  of_property_read_string
+  of_property_read_string_helper
+  of_property_read_u32_index
+  of_property_read_variable_u32_array
+  page_pinner_inited
+  __page_pinner_put_page
+  panic
+  panic_notifier_list
+  param_ops_bool
+  param_ops_int
+  param_ops_uint
+  pcpu_nr_pages
+  __per_cpu_offset
+  perf_trace_buf_alloc
+  perf_trace_run_bpf_submit
+  pinctrl_lookup_state
+  pinctrl_select_state
+  platform_device_unregister
+  __platform_driver_register
+  platform_driver_unregister
+  platform_get_irq
+  platform_get_irq_byname
+  platform_get_resource
+  __pm_relax
+  __pm_runtime_disable
+  pm_runtime_enable
+  pm_runtime_force_resume
+  pm_runtime_force_suspend
+  __pm_runtime_idle
+  __pm_runtime_resume
+  pm_runtime_set_autosuspend_delay
+  __pm_runtime_set_status
+  __pm_runtime_suspend
+  __pm_runtime_use_autosuspend
+  __pm_stay_awake
+  power_supply_get_battery_info
+  power_supply_get_drvdata
+  power_supply_put_battery_info
+  preempt_schedule
+  preempt_schedule_notrace
+  prepare_to_wait_event
+  _printk
+  _printk_deferred
+  proc_create
+  proc_create_net_data
+  proc_create_net_single
+  proc_dointvec_minmax
+  proc_doulongvec_minmax
+  _proc_mkdir
+  proc_mkdir
+  proto_register
+  proto_unregister
+  __pskb_copy_fclone
+  pskb_expand_head
+  __pskb_pull_tail
+  put_cmsg
+  put_device
+  __put_net
+  __put_task_struct
+  queue_delayed_work_on
+  queue_work_on
+  ___ratelimit
+  _raw_read_lock
+  _raw_read_lock_bh
+  _raw_read_unlock
+  _raw_read_unlock_bh
+  _raw_spin_lock
+  _raw_spin_lock_bh
+  _raw_spin_lock_irq
+  _raw_spin_lock_irqsave
+  _raw_spin_unlock
+  _raw_spin_unlock_bh
+  _raw_spin_unlock_irq
+  _raw_spin_unlock_irqrestore
+  _raw_write_lock
+  _raw_write_lock_bh
+  _raw_write_unlock
+  _raw_write_unlock_bh
+  raw_spin_rq_lock_nested
+  raw_spin_rq_unlock
+  rcu_barrier
+  __rcu_read_lock
+  __rcu_read_unlock
+  refcount_warn_saturate
+  register_netdev
+  register_netdevice
+  register_netdevice_notifier
+  register_net_sysctl
+  register_pernet_device
+  register_pernet_subsys
+  register_pm_notifier
+  register_syscore_ops
+  register_sysctl_table
+  regmap_read
+  regmap_update_bits_base
+  regmap_write
+  regulator_disable
+  regulator_disable_regmap
+  regulator_enable
+  regulator_enable_regmap
+  regulator_get_voltage_sel_regmap
+  regulator_is_enabled
+  regulator_is_enabled_regmap
+  regulator_list_voltage_linear
+  regulator_set_voltage
+  regulator_set_voltage_sel_regmap
+  release_firmware
+  release_sock
+  remap_pfn_range
+  remove_proc_entry
+  remove_wait_queue
+  request_firmware
+  __request_module
+  request_threaded_irq
+  return_address
+  root_task_group
+  rtc_time64_to_tm
+  rtnl_is_locked
+  rtnl_link_register
+  rtnl_link_unregister
+  rtnl_lock
+  rtnl_unlock
+  runqueues
+  sched_setscheduler
+  sched_uclamp_used
+  schedule
+  schedule_timeout
+  schedule_timeout_uninterruptible
+  scnprintf
+  security_sk_clone
+  security_sock_graft
+  seq_buf_printf
+  seq_lseek
+  seq_printf
+  seq_putc
+  seq_puts
+  seq_read
+  setup_udp_tunnel_sock
+  set_task_cpu
+  set_user_nice
+  sg_init_one
+  sg_init_table
+  sg_next
+  si_mem_available
+  si_swapinfo
+  simple_attr_open
+  simple_attr_release
+  simple_read_from_buffer
+  single_open
+  single_release
+  sk_alloc
+  skb_clone
+  skb_copy
+  skb_copy_bits
+  skb_copy_datagram_iter
+  skb_copy_expand
+  skb_dequeue
+  skb_free_datagram
+  skb_pull
+  skb_push
+  skb_put
+  skb_queue_head
+  skb_queue_purge
+  skb_queue_tail
+  skb_recv_datagram
+  skb_trim
+  skb_tstamp_tx
+  skb_unlink
+  sk_error_report
+  sk_free
+  snprintf
+  sock_alloc_send_pskb
+  sock_create_kern
+  sock_efree
+  sockfd_lookup
+  sock_gettstamp
+  sock_i_ino
+  sock_init_data
+  sock_i_uid
+  sock_no_accept
+  sock_no_bind
+  sock_no_connect
+  sock_no_getname
+  sock_no_listen
+  sock_no_mmap
+  sock_no_recvmsg
+  sock_no_sendmsg
+  sock_no_sendpage
+  sock_no_shutdown
+  sock_no_socketpair
+  sock_queue_rcv_skb_reason
+  __sock_recv_cmsgs
+  __sock_recv_timestamp
+  __sock_recv_wifi_status
+  sock_register
+  sock_release
+  sock_unregister
+  __spi_alloc_controller
+  sprintf
+  sscanf
+  static_key_disable
+  __stack_chk_fail
+  stop_machine
+  stop_one_cpu
+  stop_one_cpu_nowait
+  strcmp
+  strcpy
+  strlcat
+  strlen
+  strncmp
+  strncpy
+  strnlen
+  strscpy
+  strstr
+  synchronize_net
+  synchronize_rcu
+  syscon_regmap_lookup_by_phandle
+  syscon_regmap_lookup_by_phandle_args
+  sysctl_vals
+  sysfs_create_files
+  sysfs_create_group
+  sysfs_create_groups
+  sysfs_notify
+  sysfs_remove_files
+  sysfs_remove_group
+  sysfs_remove_groups
+  sysfs_streq
+  system_wq
+  tasklet_kill
+  __tasklet_schedule
+  tasklet_setup
+  tasklet_unlock_wait
+  tasklist_lock
+  tick_nohz_get_idle_calls_cpu
+  topology_clear_scale_freq_source
+  topology_update_done
+  trace_event_buffer_commit
+  trace_event_buffer_reserve
+  trace_event_printf
+  trace_event_raw_init
+  trace_event_reg
+  trace_handle_return
+  __trace_bprintk
+  __traceiter_android_rvh_account_irq
+  __traceiter_android_rvh_after_dequeue_task
+  __traceiter_android_rvh_after_enqueue_task
+  __traceiter_android_rvh_build_perf_domains
+  __traceiter_android_rvh_can_migrate_task
+  __traceiter_android_rvh_check_preempt_tick
+  __traceiter_android_rvh_check_preempt_wakeup
+  __traceiter_android_rvh_check_preempt_wakeup_ignore
+  __traceiter_android_rvh_cpu_cgroup_attach
+  __traceiter_android_rvh_cpu_cgroup_online
+  __traceiter_android_rvh_cpu_overutilized
+  __traceiter_android_rvh_dequeue_entity
+  __traceiter_android_rvh_dequeue_task
+  __traceiter_android_rvh_dequeue_task_fair
+  __traceiter_android_rvh_do_sched_yield
+  __traceiter_android_rvh_effective_cpu_util
+  __traceiter_android_rvh_enqueue_entity
+  __traceiter_android_rvh_enqueue_task
+  __traceiter_android_rvh_enqueue_task_fair
+  __traceiter_android_rvh_entity_tick
+  __traceiter_android_rvh_find_busiest_group
+  __traceiter_android_rvh_find_busiest_queue
+  __traceiter_android_rvh_find_lowest_rq
+  __traceiter_android_rvh_is_cpu_allowed
+  __traceiter_android_rvh_migrate_queued_task
+  __traceiter_android_rvh_new_task_stats
+  __traceiter_android_rvh_pick_next_entity
+  __traceiter_android_rvh_place_entity
+  __traceiter_android_rvh_replace_next_task_fair
+  __traceiter_android_rvh_rto_next_cpu
+  __traceiter_android_rvh_sched_balance_rt
+  __traceiter_android_rvh_sched_cpu_dying
+  __traceiter_android_rvh_sched_cpu_starting
+  __traceiter_android_rvh_sched_exec
+  __traceiter_android_rvh_sched_fork
+  __traceiter_android_rvh_sched_fork_init
+  __traceiter_android_rvh_sched_newidle_balance
+  __traceiter_android_rvh_sched_nohz_balancer_kick
+  __traceiter_android_rvh_sched_rebalance_domains
+  __traceiter_android_rvh_sched_setaffinity
+  __traceiter_android_rvh_schedule
+  __traceiter_android_rvh_select_fallback_rq
+  __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_setscheduler
+  __traceiter_android_rvh_set_task_cpu
+  __traceiter_android_rvh_tick_entry
+  __traceiter_android_rvh_try_to_wake_up
+  __traceiter_android_rvh_try_to_wake_up_success
+  __traceiter_android_rvh_update_misfit_status
+  __traceiter_android_rvh_update_thermal_stats
+  __traceiter_android_rvh_wake_up_new_task
+  __traceiter_android_rvh_psci_cpu_suspend
+  __traceiter_android_rvh_psci_tos_resident_on
+  __traceiter_android_vh_build_sched_domains
+  __traceiter_android_vh_check_uninterrupt_tasks
+  __traceiter_android_vh_check_uninterrupt_tasks_done
+  __traceiter_android_vh_cpufreq_fast_switch
+  __traceiter_android_vh_cpufreq_resolve_freq
+  __traceiter_android_vh_cpufreq_target
+  __traceiter_android_vh_cpu_idle_enter
+  __traceiter_android_vh_cpu_idle_exit
+  __traceiter_android_vh_get_thermal_zone_device
+  __traceiter_android_vh_modify_thermal_request_freq
+  __traceiter_android_vh_modify_thermal_target_freq
+  __traceiter_android_vh_scheduler_tick
+  __traceiter_android_vh_thermal_power_cap
+  __traceiter_android_vh_thermal_register
+  __traceiter_android_vh_thermal_unregister
+  __traceiter_android_vh_update_topology_flags_workfn
+  __traceiter_clock_set_rate
+  __traceiter_cpu_frequency
+  __traceiter_cpu_frequency_limits
+  __traceiter_sched_overutilized_tp
+  __traceiter_sched_switch
+  trace_output_call
+  __tracepoint_android_rvh_account_irq
+  __tracepoint_android_rvh_after_dequeue_task
+  __tracepoint_android_rvh_after_enqueue_task
+  __tracepoint_android_rvh_build_perf_domains
+  __tracepoint_android_rvh_can_migrate_task
+  __tracepoint_android_rvh_check_preempt_tick
+  __tracepoint_android_rvh_check_preempt_wakeup
+  __tracepoint_android_rvh_check_preempt_wakeup_ignore
+  __tracepoint_android_rvh_cpu_cgroup_attach
+  __tracepoint_android_rvh_cpu_cgroup_online
+  __tracepoint_android_rvh_cpu_overutilized
+  __tracepoint_android_rvh_dequeue_entity
+  __tracepoint_android_rvh_dequeue_task
+  __tracepoint_android_rvh_dequeue_task_fair
+  __tracepoint_android_rvh_do_sched_yield
+  __tracepoint_android_rvh_effective_cpu_util
+  __tracepoint_android_rvh_enqueue_entity
+  __tracepoint_android_rvh_enqueue_task
+  __tracepoint_android_rvh_enqueue_task_fair
+  __tracepoint_android_rvh_entity_tick
+  __tracepoint_android_rvh_find_busiest_group
+  __tracepoint_android_rvh_find_busiest_queue
+  __tracepoint_android_rvh_find_lowest_rq
+  __tracepoint_android_rvh_is_cpu_allowed
+  __tracepoint_android_rvh_migrate_queued_task
+  __tracepoint_android_rvh_new_task_stats
+  __tracepoint_android_rvh_pick_next_entity
+  __tracepoint_android_rvh_place_entity
+  __tracepoint_android_rvh_replace_next_task_fair
+  __tracepoint_android_rvh_rto_next_cpu
+  __tracepoint_android_rvh_sched_balance_rt
+  __tracepoint_android_rvh_sched_cpu_dying
+  __tracepoint_android_rvh_sched_cpu_starting
+  __tracepoint_android_rvh_sched_exec
+  __tracepoint_android_rvh_sched_fork
+  __tracepoint_android_rvh_sched_fork_init
+  __tracepoint_android_rvh_sched_newidle_balance
+  __tracepoint_android_rvh_sched_nohz_balancer_kick
+  __tracepoint_android_rvh_sched_rebalance_domains
+  __tracepoint_android_rvh_sched_setaffinity
+  __tracepoint_android_rvh_schedule
+  __tracepoint_android_rvh_select_fallback_rq
+  __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_setscheduler
+  __tracepoint_android_rvh_set_task_cpu
+  __tracepoint_android_rvh_tick_entry
+  __tracepoint_android_rvh_try_to_wake_up
+  __tracepoint_android_rvh_try_to_wake_up_success
+  __tracepoint_android_rvh_update_misfit_status
+  __tracepoint_android_rvh_update_thermal_stats
+  __tracepoint_android_rvh_wake_up_new_task
+  __tracepoint_android_rvh_psci_cpu_suspend
+  __tracepoint_android_rvh_psci_tos_resident_on
+  __tracepoint_android_vh_build_sched_domains
+  __tracepoint_android_vh_check_uninterrupt_tasks
+  __tracepoint_android_vh_check_uninterrupt_tasks_done
+  __tracepoint_android_vh_cpufreq_fast_switch
+  __tracepoint_android_vh_cpufreq_resolve_freq
+  __tracepoint_android_vh_cpufreq_target
+  __tracepoint_android_vh_cpu_idle_enter
+  __tracepoint_android_vh_cpu_idle_exit
+  __tracepoint_android_vh_get_thermal_zone_device
+  __tracepoint_android_vh_modify_thermal_request_freq
+  __tracepoint_android_vh_modify_thermal_target_freq
+  __tracepoint_android_vh_scheduler_tick
+  __tracepoint_android_vh_thermal_power_cap
+  __tracepoint_android_vh_thermal_register
+  __tracepoint_android_vh_thermal_unregister
+  __tracepoint_android_vh_update_topology_flags_workfn
+  __tracepoint_clock_set_rate
+  __tracepoint_cpu_frequency
+  __tracepoint_cpu_frequency_limits
+  __tracepoint_sched_overutilized_tp
+  __tracepoint_sched_switch
+  tracepoint_probe_register
+  tracepoint_probe_unregister
+  trace_print_symbols_seq
+  trace_raw_output_prep
+  __trace_trigger_soft_disabled
+  try_module_get
+  __tty_alloc_driver
+  tty_driver_kref_put
+  tty_flip_buffer_push
+  __tty_insert_flip_char
+  tty_insert_flip_string_fixed_flag
+  tty_kref_put
+  tty_port_close
+  tty_port_hangup
+  tty_port_init
+  tty_port_open
+  tty_port_put
+  tty_port_register_device
+  tty_port_tty_get
+  tty_port_tty_hangup
+  tty_port_tty_wakeup
+  tty_register_driver
+  tty_register_ldisc
+  tty_standard_install
+  tty_std_termios
+  tty_termios_baud_rate
+  tty_unregister_device
+  tty_unregister_driver
+  tty_unregister_ldisc
+  tty_vhangup
+  udp_sock_create4
+  udp_sock_create6
+  unregister_chrdev_region
+  unregister_netdev
+  unregister_netdevice_many
+  unregister_netdevice_notifier
+  unregister_netdevice_queue
+  unregister_net_sysctl_table
+  unregister_pernet_device
+  unregister_pernet_subsys
+  unregister_pm_notifier
+  up_read
+  up_write
+  update_rq_clock
+  usb_alloc_urb
+  usb_anchor_urb
+  usb_autopm_get_interface
+  usb_autopm_get_interface_async
+  usb_autopm_get_interface_no_resume
+  usb_autopm_put_interface
+  usb_autopm_put_interface_async
+  usb_clear_halt
+  usb_control_msg
+  usb_control_msg_recv
+  usb_deregister
+  usb_driver_claim_interface
+  usb_driver_release_interface
+  usb_driver_set_configuration
+  usb_find_common_endpoints
+  usb_free_urb
+  usb_get_dr_mode
+  usb_get_from_anchor
+  usb_get_intf
+  usb_ifnum_to_if
+  usb_kill_urb
+  usb_otg_state_string
+  usb_phy_get_charger_current
+  usb_poison_urb
+  usb_put_intf
+  usb_register_driver
+  usb_set_interface
+  usb_submit_urb
+  usb_udc_vbus_handler
+  usb_unlink_urb
+  usb_unpoison_urb
+  usleep_range_state
+  vfree
+  vmalloc
+  vmalloc_nr_pages
+  vmap
+  vm_memory_committed
+  vm_node_stat
+  vm_zone_stat
+  vsnprintf
+  vunmap
+  vzalloc
+  wait_for_completion
+  wait_for_completion_timeout
+  wait_woken
+  __wake_up
+  wake_up_bit
+  wake_up_process
+  wakeup_source_add
+  wakeup_source_create
+  __warn_printk
+  woken_wake_function
+
+# required by 6lowpan.ko
+  addrconf_add_linklocal
+  addrconf_prefix_rcv_add_addr
+  __ndisc_fill_addr_option
+
+# required by 8021q.ko
+  call_netdevice_notifiers
+  dev_change_flags
+  dev_close_many
+  __dev_get_by_name
+  dev_get_flags
+  dev_get_stats
+  dev_mc_sync
+  dev_mc_unsync
+  dev_set_allmulti
+  dev_set_mtu
+  dev_set_promiscuity
+  dev_uc_add
+  dev_uc_del
+  dev_uc_sync
+  dev_uc_unsync
+  ether_setup
+  eth_header_parse
+  __ethtool_get_link_ksettings
+  linkwatch_fire_event
+  netdev_update_features
+  netdev_upper_dev_link
+  netdev_upper_dev_unlink
+  netif_inherit_tso_max
+  netif_stacked_transfer_operstate
+  __nla_validate
+  proc_create_single_data
+  proc_remove
+  strscpy_pad
+  vlan_dev_vlan_id
+  vlan_filter_drop_vids
+  vlan_filter_push_vids
+  vlan_ioctl_set
+  vlan_uses_dev
+  vlan_vid_add
+  vlan_vid_del
+
+# required by aqc111.ko
+  usb_reset_configuration
+
+# required by asix.ko
+  genphy_resume
+  mdiobus_alloc_size
+  mdiobus_free
+  mdiobus_get_phy
+  __mdiobus_register
+  mdiobus_unregister
+  net_selftest
+  net_selftest_get_count
+  net_selftest_get_strings
+  phy_attached_info
+  phy_connect
+  phy_disconnect
+  phy_do_ioctl_running
+  phy_ethtool_get_link_ksettings
+  phy_ethtool_nway_reset
+  phy_ethtool_set_link_ksettings
+  phylink_connect_phy
+  phylink_create
+  phylink_destroy
+  phylink_disconnect_phy
+  phylink_ethtool_get_pauseparam
+  phylink_ethtool_set_pauseparam
+  phylink_generic_validate
+  phylink_resume
+  phylink_start
+  phylink_stop
+  phylink_suspend
+  phy_print_status
+  phy_start
+  phy_stop
+  phy_suspend
+
+# required by bluetooth.ko
+  aes_encrypt
+  aes_expandkey
+  bit_wait
+  crc16
+  crypto_alloc_kpp
+  crypto_ecdh_encode_key
+  crypto_ecdh_key_len
+  __crypto_memneq
+  crypto_shash_setkey
+  crypto_shash_tfm_digest
+  debugfs_attr_read
+  debugfs_attr_write
+  debugfs_create_u16
+  device_find_child
+  drain_workqueue
+  fwnode_property_read_u8_array
+  __get_random_u32_below
+  __get_task_comm
+  init_uts_ns
+  kfree_const
+  kstrtobool_from_user
+  kvasprintf_const
+  out_of_line_wait_on_bit
+  proc_create_seq_private
+  radix_tree_tagged
+  seq_hlist_next
+  seq_hlist_start_head
+  simple_open
+  skb_pull_data
+  sk_filter_trim_cap
+  __sock_queue_rcv_skb
+  vsprintf
+
+# required by btbcm.ko
+  firmware_request_nowarn
+
+# required by btsdio.ko
+  sdio_claim_host
+  sdio_claim_irq
+  sdio_disable_func
+  sdio_enable_func
+  sdio_readb
+  sdio_readsb
+  sdio_register_driver
+  sdio_release_host
+  sdio_release_irq
+  sdio_unregister_driver
+  sdio_writeb
+  sdio_writesb
+
+# required by can-bcm.ko
+  dev_get_by_index_rcu
+
+# required by can-dev.ko
+  gpiod_set_value
+  __netif_napi_del
+  of_get_child_by_name
+
+# required by can-gw.ko
+  netlink_capable
+  rtnl_register_module
+  rtnl_unregister
+  rtnl_unregister_all
+
+# required by can-raw.ko
+  __kmalloc_node_track_caller
+  sock_cmsg_send
+  sock_recv_errqueue
+  __sock_tx_timestamp
+
+# required by can.ko
+  round_jiffies
+
+# required by cdc-acm.ko
+  krealloc
+  tty_get_char_size
+  usb_alloc_coherent
+  usb_free_coherent
+
+# required by cdc_ncm.ko
+  usb_altnum_to_altsetting
+
+# required by clk-sprd.ko
+  clk_hw_get_num_parents
+  clk_hw_get_parent
+  clk_hw_is_enabled
+  __clk_mux_determine_rate
+  device_node_to_regmap
+  devm_clk_hw_register
+  devm_of_clk_add_hw_provider
+  __devm_regmap_init_mmio_clk
+  divider_get_val
+  divider_recalc_rate
+  divider_round_rate_parent
+  of_clk_hw_onecell_get
+  __udelay
+
+# required by diag.ko
+  __netlink_dump_start
+  sock_diag_register
+  sock_diag_save_cookie
+  sock_diag_unregister
+
+# required by dmc_drv.ko
+  proc_create_data
+
+# required by drm_dma_helper.ko
+  dma_alloc_pages
+  dma_buf_vmap
+  dma_buf_vunmap
+  dma_free_pages
+  dma_get_sgtable_attrs
+  dma_mmap_attrs
+  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_handle_create
+  drm_gem_object_free
+  drm_gem_object_init
+  drm_gem_object_release
+  drm_gem_private_object_init
+  drm_gem_vm_close
+  drm_gem_vm_open
+  drm_prime_gem_destroy
+  drm_prime_get_contiguous_size
+  drm_printf
+  vm_get_page_prot
+
+# required by ftdi_sio.ko
+  __bitmap_complement
+  _find_first_bit
+  gpiochip_add_data_with_key
+  gpiochip_remove
+  kstrtou8
+  tty_encode_baud_rate
+
+# required by gpio-eic-sprd.ko
+  generic_handle_irq
+  gpiochip_find
+
+# required by gpio-pmic-eic-sprd.ko
+  handle_nested_irq
+
+# required by gpio-sprd.ko
+  generic_handle_domain_irq
+  __platform_driver_probe
+
+# required by hci_uart.ko
+  bit_wait_timeout
+  clk_is_match
+  clk_set_rate
+  debugfs_create_bool
+  debugfs_create_u32
+  debugfs_create_u64
+  dev_coredumpv
+  device_property_present
+  device_property_read_string
+  device_property_read_u8_array
+  devm_clk_put
+  devm_regulator_bulk_get
+  gpiod_set_value_cansleep
+  n_tty_ioctl_helper
+  of_irq_get_byname
+  out_of_line_wait_on_bit_timeout
+  __percpu_down_read
+  percpu_down_write
+  percpu_free_rwsem
+  __percpu_init_rwsem
+  percpu_up_write
+  rcuwait_wake_up
+  regulator_bulk_disable
+  regulator_bulk_enable
+  regulator_set_load
+  serdev_device_close
+  __serdev_device_driver_register
+  serdev_device_get_tiocm
+  serdev_device_open
+  serdev_device_set_baudrate
+  serdev_device_set_flow_control
+  serdev_device_set_tiocm
+  serdev_device_wait_until_sent
+  serdev_device_write_buf
+  serdev_device_write_flush
+  _trace_android_vh_record_pcpu_rwsem_starttime
+  tty_driver_flush_buffer
+  tty_ldisc_flush
+  tty_set_termios
+  tty_termios_encode_baud_rate
+  tty_unthrottle
+
+# required by hidp.ko
+  hid_add_device
+  hid_allocate_device
+  hid_destroy_device
+  hid_ignore
+  hid_input_report
+  hid_parse_report
+  input_allocate_device
+  input_event
+  input_unregister_device
+  memdup_user
+  memscan
+  __module_put_and_kthread_exit
+  mutex_lock_interruptible
+
+# required by i2c-sprd.ko
+  i2c_get_dma_safe_msg_buf
+  i2c_put_dma_safe_msg_buf
+  reset_control_reset
+
+# required by ieee802154.ko
+  class_for_each_device
+  __dev_change_net_namespace
+  device_match_name
+  device_rename
+  get_net_ns_by_fd
+  get_net_ns_by_pid
+
+# required by ieee802154_6lowpan.ko
+  fqdir_exit
+  fqdir_init
+  inet_frag_destroy
+  inet_frag_find
+  inet_frag_kill
+  inet_frag_queue_insert
+  inet_frag_reasm_finish
+  inet_frag_reasm_prepare
+  inet_frags_fini
+  inet_frags_init
+  init_user_ns
+  nd_tbl
+  neigh_destroy
+  neigh_lookup
+  proc_dointvec_jiffies
+
+# required by ieee802154_socket.ko
+  dev_getbyhwaddr_rcu
+  dev_getfirstbyhwtype
+  dev_load
+  get_user_ifreq
+  put_user_ifreq
+  sk_common_release
+  sock_common_getsockopt
+  sock_common_recvmsg
+  sock_common_setsockopt
+
+# required by kfifo_buf.ko
+  devres_add
+  __devres_alloc_node
+  devres_free
+  iio_buffer_init
+  iio_buffer_put
+  iio_device_attach_buffer
+  __kfifo_from_user
+  __kfifo_to_user
+
+# required by l2tp_core.ko
+  idr_alloc_u32
+  idr_get_next_ul
+  idr_replace
+  inet6_csk_xmit
+  ip_queue_xmit
+  udp6_set_csum
+  udp_set_csum
+
+# required by l2tp_ppp.ko
+  sock_wmalloc
+
+# required by leds-sc27xx-bltc.ko
+  devm_led_classdev_register_ext
+  of_get_next_available_child
+
+# required by mac802154.ko
+  crc_ccitt
+  crypto_alloc_sync_skcipher
+  crypto_skcipher_decrypt
+  crypto_skcipher_encrypt
+  crypto_skcipher_setkey
+  dev_alloc_name
+
+# required by mii.ko
+  ethtool_convert_link_mode_to_legacy_u32
+
+# required by mmc_hsq.ko
+  mmc_cqe_request_done
+
+# required by musb_hdrc.ko
+  device_unregister
+  _dev_printk
+  param_ops_ushort
+  platform_bus_type
+  sg_miter_next
+  sg_miter_start
+  sg_miter_stop
+  usb_add_gadget_udc
+  usb_add_hcd
+  usb_create_hcd
+  usb_debug_root
+  usb_del_gadget_udc
+  usb_ep_set_halt
+  usb_ep_set_maxpacket_limit
+  usb_gadget_giveback_request
+  usb_gadget_map_request_by_dev
+  usb_gadget_udc_reset
+  usb_hcd_check_unlink_urb
+  usb_hcd_giveback_urb
+  usb_hcd_link_urb_to_ep
+  usb_hcd_map_urb_for_dma
+  usb_hcd_poll_rh_status
+  usb_hcd_resume_root_hub
+  usb_hcd_unlink_urb_from_ep
+  usb_hcd_unmap_urb_for_dma
+  usb_phy_set_charger_current
+  usb_put_hcd
+  usb_remove_hcd
+
+# required by musb_sprd.ko
+  disable_irq
+  extcon_get_edev_by_phandle
+  extcon_register_notifier
+  extcon_unregister_notifier
+  platform_device_register_full
+  usb_ep_disable
+  usb_gadget_set_state
+  usb_role_switch_get_drvdata
+  usb_role_switch_register
+  usb_role_switch_unregister
+  usb_speed_string
+
+# required by nfc.ko
+  class_dev_iter_exit
+  class_dev_iter_init
+  class_dev_iter_next
+  netlink_register_notifier
+  netlink_unregister_notifier
+  print_hex_dump
+  sock_no_ioctl
+
+# required by phy-sprd-commonphy.ko
+  raw_notifier_call_chain
+  raw_notifier_chain_register
+
+# required by phy-sprd-ums512.ko
+  usb_add_phy_dev
+  usb_phy_set_charger_state
+  usb_remove_phy
+
+# required by pinctrl-sprd.ko
+  of_prop_next_string
+  pinconf_generic_parse_dt_config
+  pinctrl_dev_get_drvdata
+  pinctrl_register
+  pinctrl_unregister
+  pinctrl_utils_add_map_configs
+  pinctrl_utils_add_map_mux
+  pinctrl_utils_free_map
+  pinctrl_utils_reserve_map
+  pin_get_name
+
+# required by ppp_deflate.ko
+  zlib_deflate
+  zlib_deflateEnd
+  zlib_deflateInit2
+  zlib_deflateReset
+  zlib_deflate_workspacesize
+  zlib_inflate
+  zlib_inflateIncomp
+  zlib_inflateInit2
+  zlib_inflateReset
+  zlib_inflate_workspacesize
+
+# required by ppp_generic.ko
+  fget
+  iov_iter_init
+  netdev_name_in_use
+  __register_chrdev
+  skb_pull_rcsum
+  skb_scrub_packet
+  __unregister_chrdev
+
+# required by ppp_mppe.ko
+  crypto_has_ahash
+  crypto_shash_final
+  crypto_shash_update
+
+# required by pptp.ko
+  _find_next_zero_bit
+  gre_add_protocol
+  gre_del_protocol
+  ip_local_out
+  __ip_select_ident
+  ip_send_check
+  security_sk_classify_flow
+  skb_realloc_headroom
+  skb_set_owner_w
+  __sk_receive_skb
+  sk_setup_caps
+
+# required by pwm-sprd.ko
+  clk_bulk_disable
+  clk_bulk_enable
+  clk_bulk_prepare
+  clk_bulk_unprepare
+  devm_clk_bulk_get
+  pwmchip_add
+  pwmchip_remove
+
+# required by r8152.ko
+  crypto_shash_digest
+  csum_ipv6_magic
+  device_set_wakeup_enable
+  kmalloc_large_node
+  kmalloc_node_trace
+  __napi_alloc_skb
+  napi_disable
+  napi_gro_receive
+  skb_add_rx_frag
+  skb_checksum_help
+  __skb_gso_segment
+  system_long_wq
+  usb_enable_lpm
+  usb_queue_reset_device
+  usb_reset_device
+  work_busy
+
+# required by rfcomm.ko
+  tty_port_install
+  tty_wakeup
+
+# required by rfkill.ko
+  add_uevent_var
+  compat_ptr_ioctl
+  led_trigger_event
+  led_trigger_register
+  led_trigger_unregister
+  round_jiffies_relative
+  stream_open
+  system_power_efficient_wq
+
+# required by rtc-sc27xx.ko
+  devm_rtc_allocate_device
+  __devm_rtc_register_device
+  rtc_ktime_to_tm
+  rtc_tm_to_time64
+  rtc_update_irq
+
+# required by rtl8150.ko
+  __printk_ratelimit
+  usb_control_msg_send
+
+# required by sc2730-regulator.ko
+  generic_file_llseek
+  kasprintf
+  regulator_map_voltage_linear
+  simple_attr_read
+  simple_attr_write
+
+# required by sc27xx-poweroff.ko
+  pm_power_off
+  remove_cpu
+
+# required by sc27xx-vibra.ko
+  devm_input_allocate_device
+  input_ff_create_memless
+  input_set_capability
+
+# required by sc27xx_adc.ko
+  devm_iio_device_alloc
+  __devm_iio_device_register
+  devm_regulator_get_optional
+  hwspin_lock_free
+  hwspin_lock_request_specific
+  of_property_count_elems_of_size
+  sort
+
+# required by sc27xx_fuel_gauge.ko
+  devm_gpiod_get
+  devm_kmemdup
+  power_supply_changed
+  power_supply_find_ocv2cap_table
+  power_supply_get_by_name
+  power_supply_get_property
+  power_supply_ocv2cap_simple
+  power_supply_put
+  power_supply_temp2resist_simple
+
+# required by sc27xx_typec.ko
+  devm_extcon_dev_allocate
+  devm_extcon_dev_register
+  extcon_set_state_sync
+  system_unbound_wq
+  typec_register_partner
+  typec_register_port
+  typec_set_data_role
+  typec_set_pwr_opmode
+  typec_set_pwr_role
+  typec_set_vconn_role
+  typec_unregister_partner
+  typec_unregister_port
+
+# required by sdhci-sprd.ko
+  clk_round_rate
+  mmc_of_parse
+  mmc_regulator_set_ocr
+  mmc_regulator_set_vqmmc
+  mmc_request_done
+  of_get_named_gpio_flags
+  __sdhci_add_host
+  sdhci_cleanup_host
+  sdhci_enable_clk
+  sdhci_enable_v4_mode
+  sdhci_pltfm_free
+  sdhci_pltfm_init
+  sdhci_remove_host
+  sdhci_request
+  sdhci_request_atomic
+  sdhci_reset
+  sdhci_runtime_resume_host
+  sdhci_runtime_suspend_host
+  sdhci_set_bus_width
+  sdhci_setup_host
+
+# required by sensorhub.ko
+  debugfs_create_symlink
+  iio_alloc_pollfunc
+  iio_dealloc_pollfunc
+  iio_device_alloc
+  iio_device_free
+  iio_device_id
+  iio_device_unregister
+  iio_pollfunc_store_time
+  iio_push_to_buffers
+  __iio_trigger_alloc
+  iio_trigger_free
+  iio_trigger_notify_done
+  iio_trigger_poll
+  iio_trigger_register
+  iio_trigger_unregister
+  pm_wakeup_ws_event
+  sysfs_create_link
+
+# required by sipc-core.ko
+  mbox_free_channel
+  mbox_request_channel
+  mbox_send_message
+  __memcpy_fromio
+  pfn_is_map_memory
+
+# required by sipx.ko
+  hrtimer_try_to_cancel
+
+# required by slcan.ko
+  hex_asc_upper
+  hex_to_bin
+  tty_mode_ioctl
+
+# required by snd-soc-sprd-platform.ko
+  devm_snd_soc_register_component
+  dmam_alloc_attrs
+  dmam_free_coherent
+  of_reserved_mem_device_init_by_idx
+  snd_dma_alloc_dir_pages
+  snd_dma_free_pages
+  snd_pcm_hw_constraint_integer
+  snd_pcm_hw_constraint_step
+  snd_pcm_period_elapsed
+  snd_pcm_set_managed_buffer_all
+  snd_soc_set_runtime_hwparams
+
+# required by spi-sprd-adi.ko
+  _dev_emerg
+  register_restart_handler
+  seq_buf_printf
+  unregister_restart_handler
+
+# required by spi-sprd.ko
+  spi_controller_suspend
+  spi_finalize_current_transfer
+
+# required by sprd-bc1p2.ko
+  kthread_flush_worker
+  __kthread_init_worker
+  kthread_queue_work
+  kthread_worker_fn
+
+# required by sprd-dma.ko
+  dma_async_device_register
+  dma_async_device_unregister
+  dma_async_tx_descriptor_init
+  of_dma_controller_free
+  of_dma_controller_register
+  of_dma_simple_xlate
+  vchan_dma_desc_free_list
+  vchan_find_desc
+  vchan_init
+  vchan_tx_desc_free
+  vchan_tx_submit
+
+# required by sprd-drm.ko
+  component_add
+  component_bind_all
+  component_compare_of
+  component_del
+  component_master_del
+  component_unbind_all
+  __devm_drm_dev_alloc
+  devm_drm_of_get_bridge
+  drm_atomic_get_crtc_state
+  drm_atomic_helper_check
+  drm_atomic_helper_check_plane_state
+  drm_atomic_helper_commit
+  drm_atomic_helper_commit_tail_rpm
+  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_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_bridge_attach
+  drm_compat_ioctl
+  drm_crtc_cleanup
+  drm_crtc_handle_vblank
+  drm_crtc_send_vblank_event
+  drm_crtc_vblank_off
+  drm_crtc_vblank_on
+  drm_dev_register
+  drm_dev_unregister
+  drm_display_mode_to_videomode
+  drm_encoder_cleanup
+  drm_encoder_init
+  drm_firmware_drivers_only
+  drm_gem_fb_create
+  drm_gem_mmap
+  drm_gem_prime_fd_to_handle
+  drm_gem_prime_handle_to_fd
+  drm_gem_prime_mmap
+  drm_ioctl
+  drm_kms_helper_poll_fini
+  drm_kms_helper_poll_init
+  __drmm_crtc_alloc_with_planes
+  drmm_mode_config_init
+  drm_mode_config_reset
+  __drmm_universal_plane_alloc
+  drm_of_component_probe
+  drm_of_find_possible_crtcs
+  drm_open
+  drm_panel_bridge_remove
+  drm_plane_cleanup
+  drm_plane_create_alpha_property
+  drm_plane_create_blend_mode_property
+  drm_plane_create_rotation_property
+  drm_plane_create_zpos_immutable_property
+  drm_poll
+  drm_read
+  drm_release
+  drm_vblank_init
+  mipi_dsi_host_register
+  mipi_dsi_host_unregister
+  of_drm_find_bridge
+  of_graph_get_port_by_id
+  of_graph_get_remote_node
+  __platform_register_drivers
+  platform_unregister_drivers
+
+# required by sprd-iommu.ko
+  iommu_device_register
+  iommu_device_sysfs_add
+  iommu_device_sysfs_remove
+  iommu_device_unregister
+  iommu_group_alloc
+  iommu_group_put
+  iommu_group_ref_get
+  platform_device_put
+
+# required by sprd-sc27xx-spi.ko
+  devm_regmap_add_irq_chip
+  __spi_register_driver
+  spi_sync
+
+# required by sprd_ddr_dvfs.ko
+  _ctype
+  devfreq_add_device
+  devfreq_add_governor
+  devfreq_remove_device
+  devfreq_remove_governor
+  dev_pm_opp_add
+  update_devfreq
+
+# required by sprd_hwspinlock.ko
+  devm_hwspin_lock_register
+
+# required by sprd_power_manager.ko
+  register_reboot_notifier
+  unregister_reboot_notifier
+
+# required by sprd_shm.ko
+  dma_buf_fd
+  gen_pool_best_fit
+  gen_pool_set_algo
+  gen_pool_virt_to_phys
+  memremap
+  memunmap
+  __of_get_address
+  of_property_read_u64
+  of_translate_address
+
+# required by sprd_systimer.ko
+  clocks_calc_mult_shift
+  of_iomap
+
+# required by sprd_thermal.ko
+  devm_thermal_of_zone_register
+  devm_thermal_of_zone_unregister
+  of_nvmem_cell_get
+  thermal_zone_device_disable
+  thermal_zone_device_enable
+
+# required by sprd_time_sync.ko
+  arch_timer_read_counter
+  ktime_get_real_seconds
+  sys_tz
+
+# required by sprd_time_sync_cp.ko
+  register_kprobe
+  unregister_kprobe
+
+# required by sprd_wdt.ko
+  devm_watchdog_register_device
+  watchdog_init_timeout
+
+# required by sysdump.ko
+  android_rvh_probe_register
+  input_close_device
+  input_open_device
+  input_register_handle
+  input_register_handler
+  input_unregister_handle
+  input_unregister_handler
+  kimage_vaddr
+  ktime_get_ts64
+  __memset_io
+  of_find_node_by_name
+  oops_in_progress
+  proc_dointvec
+  proc_dostring
+  register_die_notifier
+  register_sysctl_table
+  smp_call_function
+  stack_trace_save_tsk
+  __task_pid_nr_ns
+  __traceiter_android_rvh_report_bug
+  __traceiter_android_vh_ipi_stop
+  __tracepoint_android_rvh_report_bug
+  __tracepoint_android_vh_ipi_stop
+  tracepoint_probe_register
+  tracepoint_probe_unregister
+  unregister_sysctl_table
+  vmalloc_to_page
+
+# 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_add
+  dma_heap_get_dev
+  dma_heap_get_name
+  dma_map_sgtable
+  dma_sync_sg_for_cpu
+  dma_sync_sg_for_device
+  dma_unmap_sg_attrs
+  sg_alloc_table
+  sg_free_table
+  __sg_page_iter_next
+  __sg_page_iter_start
+
+# required by tipc.ko
+  bin2hex
+  crypto_default_rng
+  crypto_get_default_rng
+  crypto_put_default_rng
+  dev_nit_active
+  dst_cache_destroy
+  dst_cache_get
+  dst_cache_init
+  dst_cache_set_ip4
+  dst_cache_set_ip6
+  get_random_u32
+  in6addr_any
+  ip6_dst_hoplimit
+  __ip_dev_find
+  ip_mc_join_group
+  ipv6_dev_find
+  ipv6_stub
+  jiffies_to_usecs
+  kfree_skb_partial
+  list_sort
+  memchr
+  netlink_net_capable
+  net_namespace_list
+  overflowuid
+  proc_dointvec_minmax
+  pskb_put
+  ___pskb_trim
+  _raw_spin_trylock_bh
+  rb_erase
+  __rb_erase_color
+  rb_first
+  rb_first_postorder
+  __rb_insert_augmented
+  rb_insert_color
+  rb_next
+  rb_next_postorder
+  refcount_dec_if_one
+  rhashtable_destroy
+  rhashtable_init
+  rhashtable_insert_slow
+  rhashtable_walk_enter
+  rhashtable_walk_exit
+  rhashtable_walk_next
+  rhashtable_walk_start_check
+  rhashtable_walk_stop
+  __rht_bucket_nested
+  rht_bucket_nested
+  rht_bucket_nested_insert
+  skb_cow_data
+  skb_to_sgvec
+  skb_try_coalesce
+  sk_reset_timer
+  sk_stop_timer
+  sock_recvmsg
+  sock_rfree
+  strchr
+  strrchr
+  sysctl_vals
+  udp_tunnel6_xmit_skb
+  udp_tunnel_sock_release
+  udp_tunnel_xmit_skb
+  vscnprintf
+  __wake_up_sync_key
+
+# required by trusty-ipc.ko
+  register_virtio_driver
+  strncpy_from_user
+  unregister_virtio_driver
+  virtqueue_add_inbuf
+  virtqueue_add_outbuf
+  virtqueue_detach_unused_buf
+  virtqueue_get_buf
+  virtqueue_get_vring_size
+  virtqueue_kick
+  virtqueue_kick_prepare
+  virtqueue_notify
+  wait_for_completion_interruptible_timeout
+
+# required by trusty-irq.ko
+  disable_percpu_irq
+  enable_percpu_irq
+  free_percpu_irq
+  irq_create_of_mapping
+  __request_percpu_irq
+
+# required by trusty-log.ko
+  vm_map_ram
+  vm_unmap_ram
+
+# required by trusty-pm.ko
+  unregister_syscore_ops
+
+# required by trusty-virtio.ko
+  register_virtio_device
+  unregister_virtio_device
+  vring_del_virtqueue
+  vring_interrupt
+  vring_new_virtqueue
+
+# required by trusty.ko
+  device_for_each_child
+  of_platform_populate
+
+# required by ufs-sprd.ko
+  reset_control_assert
+  reset_control_deassert
+  ufshcd_dme_configure_adapt
+  ufshcd_dme_get_attr
+  ufshcd_dme_set_attr
+  ufshcd_pltfrm_init
+  ufshcd_pltfrm_shutdown
+  ufshcd_remove
+  ufshcd_resume_complete
+  ufshcd_runtime_resume
+  ufshcd_runtime_suspend
+  ufshcd_suspend_prepare
+  ufshcd_system_resume
+  ufshcd_system_suspend
+
+# required by ums512-clk.ko
+  devm_reset_controller_register
+
+# required by unisoc-iommu.ko
+  blocking_notifier_call_chain
+  blocking_notifier_chain_register
+  memset32
+  of_count_phandle_with_args
+
+# required by unisoc-mailbox.ko
+  cpu_pm_register_notifier
+
+# required by usbnet.ko
+  hex2bin
+  usb_get_urb
+  usb_string
+
+# required by usbserial.ko
+  bus_register
+  bus_unregister
+  driver_attach
+  driver_register
+  __kfifo_alloc
+  __kfifo_free
+  __kfifo_in
+  schedule_timeout_interruptible
+  tty_hangup
+  tty_ldisc_deref
+  tty_ldisc_ref
+  tty_port_destroy
+  tty_termios_copy_hw
+  usb_disabled
+  usb_get_dev
+  usb_match_id
+  usb_match_one_id
+  usb_put_dev
+  usb_show_dynids
+  usb_store_new_id
+
+# required by zram.ko
+  bdev_end_io_acct
+  bdev_start_io_acct
+  bio_endio
+  bio_end_io_acct_remapped
+  bio_start_io_acct
+  __blk_alloc_disk
+  blk_queue_flag_clear
+  blk_queue_flag_set
+  blk_queue_io_min
+  blk_queue_io_opt
+  blk_queue_logical_block_size
+  blk_queue_max_discard_sectors
+  blk_queue_max_write_zeroes_sectors
+  blk_queue_physical_block_size
+  crypto_alloc_base
+  crypto_comp_compress
+  crypto_comp_decompress
+  del_gendisk
+  device_add_disk
+  flush_dcache_page
+  kstrtou16
+  memparse
+  memset64
+  mutex_is_locked
+  __num_online_cpus
+  page_endio
+  put_disk
+  __register_blkdev
+  set_capacity
+  set_capacity_and_notify
+  sync_blockdev
+  unregister_blkdev
+
+# required by zsmalloc.ko
+  __ClearPageMovable
+  dec_zone_page_state
+  folio_wait_bit
+  inc_zone_page_state
+  kstrdup
+  register_shrinker
+  __SetPageMovable
+  unlock_page
+  unregister_shrinker
diff --git a/android/abi_gki_aarch64_virtual_device b/android/abi_gki_aarch64_virtual_device
new file mode 100644
index 0000000..b8e0293
--- /dev/null
+++ b/android/abi_gki_aarch64_virtual_device
@@ -0,0 +1,1453 @@
+[abi_symbol_list]
+# commonly used symbols
+  alloc_etherdev_mqs
+  alloc_netdev_mqs
+  __alloc_pages
+  __alloc_skb
+  alloc_workqueue
+  alt_cb_patch_nops
+  amba_driver_register
+  amba_driver_unregister
+  __arch_copy_from_user
+  __arch_copy_to_user
+  arm64_use_ng_mappings
+  bcmp
+  bpf_trace_run1
+  bpf_trace_run2
+  bpf_trace_run3
+  bpf_trace_run4
+  bpf_trace_run5
+  bpf_trace_run6
+  bt_err
+  bt_info
+  bt_warn
+  build_skb
+  cancel_delayed_work
+  cancel_delayed_work_sync
+  cancel_work_sync
+  __check_object_size
+  __class_create
+  class_destroy
+  clk_disable
+  clk_enable
+  clk_get_rate
+  clk_prepare
+  clk_set_rate
+  clk_unprepare
+  complete
+  __const_udelay
+  consume_skb
+  cpu_hwcaps
+  cpu_number
+  __cpu_online_mask
+  crc32_le
+  csum_partial
+  debugfs_attr_read
+  debugfs_attr_write
+  debugfs_create_devm_seqfile
+  debugfs_create_dir
+  debugfs_create_file
+  debugfs_create_u32
+  debugfs_create_u8
+  debugfs_remove
+  default_llseek
+  delayed_work_timer_fn
+  del_timer
+  del_timer_sync
+  destroy_workqueue
+  dev_addr_mod
+  dev_alloc_name
+  dev_close
+  _dev_err
+  __dev_get_by_index
+  device_create
+  device_create_file
+  device_remove_file
+  device_set_wakeup_capable
+  device_unregister
+  device_wakeup_enable
+  _dev_info
+  __dev_kfree_skb_any
+  devm_clk_get
+  devm_clk_hw_register
+  devm_ioremap
+  devm_ioremap_resource
+  devm_kfree
+  devm_kmalloc
+  devm_request_threaded_irq
+  _dev_notice
+  _dev_printk
+  __dev_queue_xmit
+  _dev_warn
+  dma_alloc_attrs
+  dma_buf_export
+  dma_fence_context_alloc
+  dma_fence_init
+  dma_fence_release
+  dma_fence_signal_locked
+  dma_free_attrs
+  dmam_alloc_attrs
+  dma_set_coherent_mask
+  dma_set_mask
+  dma_sync_sg_for_device
+  dma_sync_single_for_device
+  dma_unmap_sg_attrs
+  do_trace_netlink_extack
+  drm_add_modes_noedid
+  drm_atomic_get_crtc_state
+  drm_atomic_helper_check
+  drm_atomic_helper_check_plane_state
+  drm_atomic_helper_commit
+  drm_atomic_helper_connector_destroy_state
+  drm_atomic_helper_connector_duplicate_state
+  drm_atomic_helper_connector_reset
+  drm_atomic_helper_disable_plane
+  drm_atomic_helper_page_flip
+  drm_atomic_helper_set_config
+  drm_atomic_helper_shutdown
+  drm_atomic_helper_update_plane
+  drm_compat_ioctl
+  drm_connector_attach_encoder
+  drm_connector_cleanup
+  drm_connector_init
+  drm_crtc_arm_vblank_event
+  drm_crtc_cleanup
+  drm_crtc_handle_vblank
+  drm_crtc_init_with_planes
+  drm_crtc_send_vblank_event
+  drm_crtc_vblank_get
+  drm_crtc_vblank_off
+  drm_crtc_vblank_on
+  ___drm_dbg
+  drm_debugfs_create_files
+  drm_dev_alloc
+  drm_dev_put
+  drm_dev_register
+  drm_dev_unregister
+  __drm_err
+  drm_gem_create_mmap_offset
+  drm_gem_fb_create
+  drm_gem_handle_create
+  drm_gem_mmap
+  drm_gem_object_free
+  drm_gem_object_release
+  drm_gem_prime_fd_to_handle
+  drm_gem_prime_handle_to_fd
+  drm_gem_prime_mmap
+  drm_gem_private_object_init
+  drm_gem_vm_close
+  drm_gem_vm_open
+  drm_helper_probe_single_connector_modes
+  drm_ioctl
+  drmm_mode_config_init
+  drm_mode_config_reset
+  __drmm_universal_plane_alloc
+  drm_open
+  drm_poll
+  drm_read
+  drm_release
+  drm_set_preferred_mode
+  drm_simple_encoder_init
+  drm_vblank_init
+  ether_setup
+  eth_mac_addr
+  ethtool_op_get_link
+  ethtool_op_get_ts_info
+  eth_type_trans
+  eth_validate_addr
+  fd_install
+  _find_first_bit
+  finish_wait
+  firmware_request_nowarn
+  flush_delayed_work
+  flush_work
+  __flush_workqueue
+  __folio_put
+  fortify_panic
+  fput
+  free_irq
+  free_netdev
+  __free_pages
+  free_pages
+  genlmsg_put
+  genl_register_family
+  genl_unregister_family
+  get_device
+  __get_free_pages
+  get_random_bytes
+  get_unused_fd_flags
+  gic_nonsecure_priorities
+  gpiod_put
+  hci_alloc_dev_priv
+  __hci_cmd_sync
+  __hci_cmd_sync_ev
+  hci_free_dev
+  hci_recv_frame
+  hci_register_dev
+  hci_unregister_dev
+  hrtimer_cancel
+  hrtimer_forward
+  hrtimer_init
+  hrtimer_start_range_ns
+  ida_alloc_range
+  ida_free
+  idr_alloc
+  idr_destroy
+  idr_get_next
+  idr_remove
+  init_net
+  __init_swait_queue_head
+  init_timer_key
+  init_wait_entry
+  __init_waitqueue_head
+  input_alloc_absinfo
+  input_allocate_device
+  input_event
+  input_free_device
+  input_mt_init_slots
+  input_register_device
+  input_set_abs_params
+  input_unregister_device
+  ioremap_prot
+  iounmap
+  irq_set_irq_wake
+  is_vmalloc_addr
+  jiffies
+  jiffies_to_msecs
+  kasan_flag_enabled
+  kfree
+  kfree_sensitive
+  kfree_skb_reason
+  kimage_voffset
+  __kmalloc
+  kmalloc_caches
+  kmalloc_trace
+  kmemdup
+  kstrndup
+  kstrtobool_from_user
+  kthread_create_on_node
+  kthread_park
+  kthread_should_stop
+  kthread_stop
+  kthread_unpark
+  ktime_get
+  ktime_get_with_offset
+  kvfree
+  kvfree_call_rcu
+  kvmalloc_node
+  __list_add_valid
+  __list_del_entry_valid
+  __local_bh_enable_ip
+  log_post_read_mmio
+  log_post_write_mmio
+  log_read_mmio
+  log_write_mmio
+  memcpy
+  memmove
+  memset
+  memstart_addr
+  misc_deregister
+  misc_register
+  mod_delayed_work_on
+  mod_timer
+  module_layout
+  __msecs_to_jiffies
+  msleep
+  __mutex_init
+  mutex_lock
+  mutex_lock_interruptible
+  mutex_unlock
+  napi_complete_done
+  napi_disable
+  napi_enable
+  napi_gro_receive
+  __napi_schedule
+  napi_schedule_prep
+  __netdev_alloc_skb
+  netdev_err
+  netdev_info
+  netdev_printk
+  netdev_rx_handler_register
+  netdev_rx_handler_unregister
+  netdev_upper_dev_unlink
+  netdev_warn
+  netif_carrier_off
+  netif_carrier_on
+  netif_device_detach
+  netif_napi_add_weight
+  __netif_napi_del
+  netif_receive_skb_list
+  netif_rx
+  netif_tx_stop_all_queues
+  netif_tx_wake_queue
+  netlink_broadcast
+  netlink_register_notifier
+  netlink_unicast
+  netlink_unregister_notifier
+  net_ratelimit
+  nf_conntrack_destroy
+  nla_memcpy
+  __nla_parse
+  nla_put
+  nla_put_64bit
+  nonseekable_open
+  noop_llseek
+  nr_cpu_ids
+  of_device_is_compatible
+  of_find_property
+  of_property_read_variable_u32_array
+  page_frag_alloc_align
+  __page_frag_cache_drain
+  page_frag_free
+  page_pinner_inited
+  __page_pinner_put_page
+  param_ops_bool
+  param_ops_charp
+  param_ops_int
+  param_ops_uint
+  passthru_features_check
+  pci_bus_type
+  pci_disable_device
+  pci_enable_device
+  pci_find_capability
+  pci_find_next_capability
+  pci_iounmap
+  pci_read_config_byte
+  pci_read_config_dword
+  __pci_register_driver
+  pci_release_region
+  pci_request_region
+  pci_unregister_driver
+  perf_trace_buf_alloc
+  perf_trace_run_bpf_submit
+  platform_device_add
+  platform_device_add_data
+  platform_device_alloc
+  platform_device_del
+  platform_device_put
+  platform_device_register_full
+  platform_device_unregister
+  __platform_driver_register
+  platform_driver_unregister
+  platform_get_irq
+  platform_get_resource
+  pm_wakeup_dev_event
+  preempt_schedule
+  preempt_schedule_notrace
+  prepare_to_wait_event
+  _printk
+  __pskb_pull_tail
+  ___pskb_trim
+  put_device
+  __put_task_struct
+  put_unused_fd
+  queue_delayed_work_on
+  queue_work_on
+  ___ratelimit
+  _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
+  __rcu_read_lock
+  __rcu_read_unlock
+  refcount_warn_saturate
+  register_netdevice
+  register_netdevice_notifier
+  register_pernet_device
+  register_virtio_device
+  register_virtio_driver
+  __regmap_init
+  regmap_write
+  release_firmware
+  remap_pfn_range
+  request_firmware
+  request_threaded_irq
+  rhashtable_insert_slow
+  __rht_bucket_nested
+  rht_bucket_nested
+  rht_bucket_nested_insert
+  rtnl_is_locked
+  rtnl_lock
+  rtnl_unlock
+  sched_set_fifo_low
+  schedule
+  schedule_timeout
+  scnprintf
+  seq_lseek
+  seq_printf
+  seq_puts
+  seq_read
+  serio_close
+  serio_interrupt
+  serio_open
+  serio_reconnect
+  __serio_register_driver
+  __serio_register_port
+  serio_unregister_driver
+  sg_alloc_table
+  sg_free_table
+  sg_init_one
+  sg_init_table
+  sg_miter_next
+  sg_miter_start
+  sg_miter_stop
+  sg_next
+  simple_attr_open
+  simple_attr_release
+  simple_open
+  simple_read_from_buffer
+  single_open
+  single_release
+  skb_add_rx_frag
+  skb_clone
+  skb_copy
+  skb_copy_bits
+  skb_copy_expand
+  skb_dequeue
+  skb_pull
+  skb_pull_data
+  skb_push
+  skb_put
+  skb_queue_head
+  skb_queue_purge
+  skb_queue_tail
+  skb_to_sgvec
+  skb_trim
+  snprintf
+  sprintf
+  sscanf
+  __stack_chk_fail
+  strcasecmp
+  strcmp
+  strcpy
+  strlen
+  strncpy
+  strnlen
+  strscpy
+  __sw_hweight16
+  __sw_hweight32
+  __sw_hweight8
+  sync_file_create
+  synchronize_irq
+  synchronize_net
+  synchronize_rcu
+  sysfs_create_group
+  sysfs_remove_group
+  sysfs_remove_link
+  system_freezable_wq
+  system_wq
+  __tasklet_schedule
+  tasklet_setup
+  tasklet_unlock_wait
+  trace_event_buffer_commit
+  trace_event_buffer_reserve
+  trace_event_printf
+  trace_event_raw_init
+  trace_event_reg
+  trace_handle_return
+  trace_raw_output_prep
+  __trace_trigger_soft_disabled
+  unregister_netdev
+  unregister_netdevice_many
+  unregister_netdevice_notifier
+  unregister_netdevice_queue
+  unregister_pernet_device
+  unregister_virtio_device
+  unregister_virtio_driver
+  usb_add_hcd
+  usb_alloc_urb
+  usb_anchor_urb
+  usb_bulk_msg
+  usb_control_msg
+  usb_create_hcd
+  usb_create_shared_hcd
+  usb_deregister
+  usb_disabled
+  usb_free_urb
+  usb_get_dev
+  usb_hcd_check_unlink_urb
+  usb_hcd_giveback_urb
+  usb_hcd_is_primary_hcd
+  usb_hcd_link_urb_to_ep
+  usb_hcd_poll_rh_status
+  usb_hcd_resume_root_hub
+  usb_hcd_unlink_urb_from_ep
+  usb_kill_anchored_urbs
+  usb_put_dev
+  usb_put_hcd
+  usb_register_driver
+  usb_remove_hcd
+  usb_reset_device
+  usb_submit_urb
+  usb_unanchor_urb
+  __usecs_to_jiffies
+  usleep_range_state
+  virtio_break_device
+  virtio_check_driver_offered_feature
+  virtio_config_changed
+  virtio_device_freeze
+  virtio_device_restore
+  virtio_reset_device
+  virtqueue_add_inbuf
+  virtqueue_add_outbuf
+  virtqueue_add_sgs
+  virtqueue_detach_unused_buf
+  virtqueue_disable_cb
+  virtqueue_enable_cb
+  virtqueue_get_avail_addr
+  virtqueue_get_buf
+  virtqueue_get_desc_addr
+  virtqueue_get_used_addr
+  virtqueue_get_vring_size
+  virtqueue_is_broken
+  virtqueue_kick
+  virtqueue_kick_prepare
+  virtqueue_notify
+  vmalloc_to_page
+  vm_get_page_prot
+  vring_create_virtqueue
+  vring_del_virtqueue
+  vring_interrupt
+  vring_transport_features
+  __wake_up
+  wake_up_process
+  __warn_printk
+
+# required by ambakmi.ko
+  amba_release_regions
+  amba_request_regions
+  clk_get
+  clk_put
+  serio_unregister_port
+
+# required by armmmci.ko
+  clk_round_rate
+  devm_of_iomap
+  devm_pinctrl_get
+  __devm_reset_control_get
+  dma_map_sg_attrs
+  dma_release_channel
+  dma_request_chan
+  gpiod_direction_input
+  gpiod_get
+  gpiod_get_value
+  gpiod_set_value
+  mmc_add_host
+  mmc_alloc_host
+  mmc_free_host
+  mmc_gpiod_request_cd
+  mmc_gpiod_request_ro
+  mmc_gpio_get_cd
+  mmc_gpio_get_ro
+  mmc_of_parse
+  mmc_regulator_get_supply
+  mmc_regulator_set_ocr
+  mmc_regulator_set_vqmmc
+  mmc_remove_host
+  mmc_request_done
+  mmc_send_tuning
+  of_get_property
+  pinctrl_lookup_state
+  pinctrl_pm_select_sleep_state
+  pinctrl_select_default_state
+  pinctrl_select_state
+  pm_runtime_force_resume
+  pm_runtime_force_suspend
+  __pm_runtime_idle
+  __pm_runtime_resume
+  pm_runtime_set_autosuspend_delay
+  __pm_runtime_use_autosuspend
+  regulator_disable
+  regulator_enable
+  reset_control_assert
+  reset_control_deassert
+  sg_copy_from_buffer
+  sg_copy_to_buffer
+
+# required by btintel.ko
+  bit_wait_timeout
+  bt_to_errno
+  hci_cmd_sync
+  out_of_line_wait_on_bit_timeout
+  request_firmware_direct
+  wake_up_bit
+
+# required by btusb.ko
+  btbcm_set_bdaddr
+  btbcm_setup_apple
+  btbcm_setup_patchram
+  device_wakeup_disable
+  __dev_kfree_skb_irq
+  disable_irq
+  disable_irq_nosync
+  enable_irq
+  gpiod_get_optional
+  gpiod_set_value_cansleep
+  hci_cmd_sync_cancel
+  hci_recv_diag
+  irq_modify_status
+  ktime_get_mono_fast_ns
+  of_irq_get_byname
+  of_match_device
+  of_property_read_variable_u16_array
+  pm_runtime_allow
+  pm_runtime_forbid
+  __pm_runtime_suspend
+  pm_system_wakeup
+  usb_autopm_get_interface
+  usb_autopm_put_interface
+  usb_driver_claim_interface
+  usb_driver_release_interface
+  usb_enable_autosuspend
+  usb_get_from_anchor
+  usb_ifnum_to_if
+  usb_match_id
+  usb_queue_reset_device
+  usb_scuttle_anchored_urbs
+  usb_set_interface
+
+# required by cfg80211.ko
+  bpf_trace_run10
+  bpf_trace_run7
+  bpf_trace_run8
+  __class_register
+  class_unregister
+  _ctype
+  debugfs_rename
+  __dev_change_net_namespace
+  dev_get_by_index
+  device_add
+  device_del
+  device_initialize
+  device_rename
+  dev_set_name
+  gcd
+  genlmsg_multicast_allns
+  get_net_ns_by_fd
+  get_net_ns_by_pid
+  inet_csk_get_port
+  init_uts_ns
+  key_create_or_update
+  key_put
+  keyring_alloc
+  ktime_get_coarse_with_offset
+  memcmp
+  net_ns_type_operations
+  nla_find
+  nla_reserve
+  __nla_validate
+  of_prop_next_u32
+  __put_net
+  rb_erase
+  rb_insert_color
+  request_firmware_nowait
+  rfkill_alloc
+  rfkill_blocked
+  rfkill_destroy
+  rfkill_register
+  rfkill_resume_polling
+  rfkill_set_hw_state_reason
+  rfkill_unregister
+  __sock_create
+  sock_release
+  sysfs_create_link
+  system_power_efficient_wq
+  trace_print_array_seq
+  verify_pkcs7_signature
+  wireless_nlevent_flush
+
+# required by clk-vexpress-osc.ko
+  clk_hw_set_rate_range
+  devm_of_clk_add_hw_provider
+  of_clk_hw_simple_get
+  of_property_read_string
+  regmap_read
+
+# required by drm_dma_helper.ko
+  dma_alloc_pages
+  dma_buf_vmap
+  dma_buf_vunmap
+  dma_free_pages
+  dma_get_sgtable_attrs
+  dma_mmap_attrs
+  dma_mmap_pages
+  drm_atomic_helper_damage_iter_init
+  drm_atomic_helper_damage_iter_next
+  __drm_dev_dbg
+  drm_format_info_block_height
+  drm_format_info_block_width
+  drm_gem_fb_get_obj
+  drm_gem_object_init
+  drm_prime_gem_destroy
+  drm_prime_get_contiguous_size
+  drm_printf
+
+# required by dummy-cpufreq.ko
+  cpufreq_generic_attr
+  cpufreq_register_driver
+  cpufreq_unregister_driver
+
+# required by dummy_hcd.ko
+  ktime_get_ts64
+  strstr
+  usb_add_gadget_udc
+  usb_del_gadget_udc
+  usb_ep_set_maxpacket_limit
+  usb_gadget_giveback_request
+  usb_gadget_udc_reset
+
+# required by failover.ko
+  netdev_master_upper_dev_link
+
+# required by goldfish_address_space.ko
+  memremap
+  memunmap
+
+# required by goldfish_battery.ko
+  power_supply_changed
+  power_supply_get_drvdata
+  power_supply_register
+  power_supply_unregister
+
+# required by goldfish_pipe.ko
+  pin_user_pages_fast
+  unpin_user_pages_dirty_lock
+
+# required by goldfish_sync.ko
+  dma_fence_default_wait
+  dma_fence_free
+
+# required by gs_usb.ko
+  alloc_candev_mqs
+  alloc_can_err_skb
+  alloc_canfd_skb
+  alloc_can_skb
+  can_change_mtu
+  can_dropped_invalid_skb
+  can_eth_ioctl_hwts
+  can_ethtool_op_get_ts_info_hwts
+  can_fd_dlc2len
+  can_fd_len2dlc
+  can_free_echo_skb
+  can_get_echo_skb
+  can_put_echo_skb
+  close_candev
+  free_candev
+  open_candev
+  register_candev
+  timecounter_cyc2time
+  timecounter_init
+  timecounter_read
+  unregister_candev
+  usb_control_msg_recv
+  usb_control_msg_send
+
+# required by hci_vhci.ko
+  _copy_from_iter
+  hci_resume_dev
+  hci_suspend_dev
+  iov_iter_revert
+
+# required by mac80211.ko
+  __alloc_percpu_gfp
+  arc4_crypt
+  arc4_setkey
+  bitmap_free
+  bitmap_zalloc
+  call_rcu
+  __cpu_possible_mask
+  crc32_be
+  crypto_aead_decrypt
+  crypto_aead_encrypt
+  crypto_aead_setauthsize
+  crypto_aead_setkey
+  crypto_alloc_aead
+  crypto_alloc_shash
+  crypto_alloc_skcipher
+  crypto_destroy_tfm
+  __crypto_memneq
+  crypto_shash_digest
+  crypto_shash_finup
+  crypto_shash_setkey
+  crypto_shash_update
+  crypto_skcipher_decrypt
+  crypto_skcipher_encrypt
+  crypto_skcipher_setkey
+  __crypto_xor
+  dev_fetch_sw_netstats
+  _find_next_bit
+  free_percpu
+  get_random_u16
+  __hw_addr_init
+  __hw_addr_sync
+  __hw_addr_unsync
+  idr_find
+  idr_for_each
+  kernel_param_lock
+  kernel_param_unlock
+  kfree_skb_list_reason
+  kmalloc_large
+  ktime_get_seconds
+  netdev_set_default_ethtool_ops
+  netif_receive_skb
+  __per_cpu_offset
+  pskb_expand_head
+  rcu_barrier
+  register_inet6addr_notifier
+  register_inetaddr_notifier
+  rhashtable_free_and_destroy
+  rhltable_init
+  round_jiffies
+  round_jiffies_relative
+  round_jiffies_up
+  skb_checksum_help
+  skb_clone_sk
+  skb_complete_wifi_ack
+  skb_ensure_writable
+  __skb_get_hash
+  __skb_gso_segment
+  __sw_hweight64
+  tasklet_kill
+  unregister_inet6addr_notifier
+  unregister_inetaddr_notifier
+
+# required by mac80211_hwsim.ko
+  device_bind_driver
+  device_release_driver
+  dst_release
+  genl_notify
+  net_namespace_list
+  rhashtable_destroy
+  rhashtable_init
+  schedule_timeout_interruptible
+  __skb_ext_put
+
+# required by mt76-usb.ko
+  usb_init_urb
+  usb_kill_urb
+  usb_poison_urb
+  usb_unpoison_urb
+
+# required by mt76.ko
+  debugfs_create_blob
+  debugfs_create_file_unsafe
+  dev_driver_string
+  devm_kmemdup
+  dev_set_threaded
+  dma_map_page_attrs
+  dma_sync_single_for_cpu
+  dma_unmap_page_attrs
+  init_dummy_netdev
+  __ioread32_copy
+  __iowrite32_copy
+  kthread_parkme
+  kthread_should_park
+  led_classdev_register_ext
+  led_classdev_unregister
+  of_get_child_by_name
+  of_get_mac_address
+  of_get_next_child
+  of_prop_next_string
+  pci_disable_link_state
+  pcie_capability_clear_and_set_word
+  pcie_capability_read_word
+  radix_tree_tagged
+  __skb_pad
+
+# required by mt76x02-lib.ko
+  debugfs_create_bool
+  __kfifo_init
+
+# required by mt76x02-usb.ko
+  hrtimer_active
+  system_highpri_wq
+
+# required by nd_virtio.ko
+  bio_alloc_bioset
+  bio_chain
+  bio_clone_blkg_association
+  fs_bio_set
+  submit_bio
+
+# required by net_failover.ko
+  call_netdevice_notifiers
+  dev_get_stats
+  dev_mc_sync_multiple
+  dev_mc_unsync
+  dev_open
+  dev_set_mtu
+  dev_uc_sync_multiple
+  dev_uc_unsync
+  __ethtool_get_link_ksettings
+  netdev_change_features
+  netdev_core_stats_alloc
+  netdev_increment_features
+  netdev_lower_state_changed
+  netdev_pick_tx
+  register_netdev
+  vlan_uses_dev
+  vlan_vid_add
+  vlan_vid_del
+  vlan_vids_add_by_dev
+  vlan_vids_del_by_dev
+
+# required by pl111_drm.ko
+  __clk_get_name
+  clk_hw_get_parent
+  clk_hw_round_rate
+  drm_kms_helper_poll_init
+  drm_of_find_panel_or_bridge
+  drm_panel_bridge_add_typed
+  drm_panel_bridge_connector
+  drm_panel_bridge_remove
+  drm_simple_display_pipe_attach_bridge
+  drm_simple_display_pipe_init
+  of_find_device_by_node
+  of_find_matching_node_and_match
+  of_find_node_opts_by_path
+  of_get_next_available_child
+  of_graph_get_next_endpoint
+  of_reserved_mem_device_init_by_idx
+  of_reserved_mem_device_release
+  regmap_update_bits_base
+  syscon_node_to_regmap
+
+# required by psmouse.ko
+  bus_register_notifier
+  bus_unregister_notifier
+  device_add_groups
+  device_link_add
+  device_link_remove
+  device_remove_groups
+  i2c_adapter_type
+  i2c_bus_type
+  i2c_client_type
+  i2c_for_each_dev
+  i2c_new_scanned_device
+  i2c_unregister_device
+  i2c_verify_adapter
+  input_mt_assign_slots
+  input_mt_drop_unused
+  input_mt_report_finger_count
+  input_mt_report_pointer_emulation
+  input_mt_report_slot_state
+  input_mt_sync_frame
+  input_set_capability
+  kstrtobool
+  kstrtou8
+  kstrtouint
+  ps2_begin_command
+  ps2_cmd_aborted
+  ps2_command
+  ps2_drain
+  ps2_end_command
+  ps2_handle_ack
+  ps2_handle_response
+  ps2_init
+  ps2_sendbyte
+  ps2_sliced_command
+  serio_rescan
+  serio_unregister_child_port
+  strncmp
+  strsep
+
+# required by pulse8-cec.ko
+  cec_allocate_adapter
+  cec_delete_adapter
+  cec_received_msg_ts
+  cec_register_adapter
+  cec_s_log_addrs
+  cec_s_phys_addr
+  cec_transmit_attempt_done_ts
+  cec_unregister_adapter
+  wait_for_completion_timeout
+
+# required by rtc-test.ko
+  add_timer
+  devm_rtc_allocate_device
+  __devm_rtc_register_device
+  ktime_get_real_seconds
+  rtc_time64_to_tm
+  rtc_tm_to_time64
+  rtc_update_irq
+
+# 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_add
+  dma_heap_get_dev
+  dma_heap_get_name
+  dma_map_sgtable
+  dma_sync_sg_for_cpu
+  __sg_page_iter_next
+  __sg_page_iter_start
+  vfree
+  vmalloc
+  vmap
+  vunmap
+
+# required by usbip-core.ko
+  iov_iter_kvec
+  param_ops_ulong
+  print_hex_dump
+  sock_recvmsg
+
+# required by vexpress-config.ko
+  devres_add
+  __devres_alloc_node
+  devres_free
+  of_find_compatible_node
+  of_get_next_parent
+  __of_parse_phandle_with_args
+  of_platform_populate
+  of_root
+  regmap_exit
+  __udelay
+
+# required by vexpress-sysreg.ko
+  bgpio_init
+  devm_gpiochip_add_data_with_key
+  devm_mfd_add_devices
+
+# required by vhci-hcd.ko
+  kernel_sendmsg
+  kernel_sock_shutdown
+  kstrtoint
+  kstrtoll
+  platform_bus
+  sockfd_lookup
+  strchr
+  usb_speed_string
+
+# required by virt_wifi.ko
+  __module_get
+  module_put
+  netdev_upper_dev_link
+  netif_stacked_transfer_operstate
+  rtnl_link_register
+  rtnl_link_unregister
+
+# required by virtio-gpu.ko
+  __devm_request_region
+  dma_fence_match_context
+  dma_fence_wait_timeout
+  dma_map_resource
+  dma_resv_add_fence
+  dma_resv_reserve_fences
+  dma_resv_test_signaled
+  dma_resv_wait_timeout
+  dma_unmap_resource
+  drm_add_edid_modes
+  drm_aperture_remove_conflicting_pci_framebuffers
+  drm_atomic_helper_crtc_destroy_state
+  drm_atomic_helper_crtc_duplicate_state
+  drm_atomic_helper_crtc_reset
+  drm_atomic_helper_damage_merged
+  drm_atomic_helper_dirtyfb
+  drm_atomic_helper_plane_destroy_state
+  drm_atomic_helper_plane_duplicate_state
+  drm_atomic_helper_plane_reset
+  drm_connector_attach_edid_property
+  drm_connector_register
+  drm_connector_unregister
+  drm_connector_update_edid_property
+  drm_cvt_mode
+  drm_dev_enter
+  drm_dev_exit
+  drm_dev_get
+  drm_dev_printk
+  drm_dev_unplug
+  drm_do_get_edid
+  drm_event_reserve_init
+  drm_firmware_drivers_only
+  drm_framebuffer_init
+  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_free_mmap_offset
+  drm_gem_lock_reservations
+  drm_gem_map_attach
+  drm_gem_map_detach
+  drm_gem_map_dma_buf
+  drm_gem_object_lookup
+  drm_gem_prime_import
+  drm_gem_shmem_create
+  drm_gem_shmem_free
+  drm_gem_shmem_get_pages_sgt
+  drm_gem_shmem_get_sg_table
+  drm_gem_shmem_mmap
+  drm_gem_shmem_pin
+  drm_gem_shmem_print_info
+  drm_gem_shmem_unpin
+  drm_gem_shmem_vmap
+  drm_gem_shmem_vm_ops
+  drm_gem_shmem_vunmap
+  drm_gem_unlock_reservations
+  drm_gem_unmap_dma_buf
+  drm_helper_hpd_irq_event
+  drm_helper_mode_fill_fb_struct
+  drm_kms_helper_hotplug_event
+  drmm_kfree
+  drmm_kmalloc
+  drm_mm_init
+  drm_mm_insert_node_in_range
+  drm_mm_print
+  drm_mm_remove_node
+  drm_mm_takedown
+  drm_mode_probed_add
+  __drm_printfn_seq_file
+  __drm_puts_seq_file
+  drm_send_event
+  __get_task_comm
+  iomem_resource
+  is_virtio_device
+  kmem_cache_alloc
+  kmem_cache_create
+  kmem_cache_destroy
+  kmem_cache_free
+  memdup_user
+  sync_file_get_fence
+  __traceiter_dma_fence_emit
+  __tracepoint_dma_fence_emit
+  vmemdup_user
+  ww_mutex_lock_interruptible
+  ww_mutex_unlock
+
+# required by virtio-rng.ko
+  hwrng_register
+  hwrng_unregister
+  wait_for_completion_killable
+
+# required by virtio_balloon.ko
+  adjust_managed_page_count
+  all_vm_events
+  balloon_mops
+  balloon_page_alloc
+  balloon_page_dequeue
+  balloon_page_enqueue
+  __ClearPageMovable
+  init_on_free
+  mutex_trylock
+  page_relinquish
+  page_reporting_register
+  page_reporting_unregister
+  register_oom_notifier
+  register_shrinker
+  __SetPageMovable
+  si_mem_available
+  si_meminfo
+  unregister_oom_notifier
+  unregister_shrinker
+  virtqueue_disable_dma_api_for_buffers
+  vm_event_states
+  vm_node_stat
+
+# required by virtio_blk.ko
+  blk_execute_rq
+  __blk_mq_alloc_disk
+  blk_mq_alloc_request
+  blk_mq_alloc_tag_set
+  blk_mq_complete_request
+  blk_mq_end_request
+  blk_mq_end_request_batch
+  blk_mq_free_request
+  blk_mq_free_tag_set
+  blk_mq_map_queues
+  blk_mq_quiesce_queue
+  blk_mq_requeue_request
+  blk_mq_start_request
+  blk_mq_start_stopped_hw_queues
+  blk_mq_stop_hw_queue
+  blk_mq_unquiesce_queue
+  blk_mq_virtio_map_queues
+  blk_queue_alignment_offset
+  blk_queue_io_min
+  blk_queue_io_opt
+  blk_queue_logical_block_size
+  blk_queue_max_discard_sectors
+  blk_queue_max_discard_segments
+  blk_queue_max_hw_sectors
+  blk_queue_max_secure_erase_sectors
+  blk_queue_max_segments
+  blk_queue_max_segment_size
+  blk_queue_max_write_zeroes_sectors
+  blk_queue_physical_block_size
+  blk_queue_write_cache
+  blk_rq_map_kern
+  __blk_rq_map_sg
+  blk_status_to_errno
+  del_gendisk
+  device_add_disk
+  put_disk
+  __register_blkdev
+  set_capacity_and_notify
+  set_disk_ro
+  sg_alloc_table_chained
+  sg_free_table_chained
+  string_get_size
+  sysfs_emit
+  __sysfs_match_string
+  unregister_blkdev
+  virtio_max_dma_size
+
+# required by virtio_console.ko
+  cdev_add
+  cdev_alloc
+  cdev_del
+  device_destroy
+  fasync_helper
+  hvc_alloc
+  hvc_instantiate
+  hvc_kick
+  hvc_poll
+  hvc_remove
+  __hvc_resize
+  kill_fasync
+  kobject_uevent
+  pipe_lock
+  pipe_unlock
+  __register_chrdev
+  __splice_from_pipe
+  unlock_page
+  __unregister_chrdev
+  wait_for_completion
+
+# required by virtio_mmio.ko
+  device_for_each_child
+  device_register
+  devm_platform_ioremap_resource
+  memparse
+
+# required by virtio_net.ko
+  bpf_dispatcher_xdp_func
+  bpf_master_redirect_enabled_key
+  bpf_prog_add
+  bpf_prog_put
+  bpf_prog_sub
+  bpf_stats_enabled_key
+  bpf_warn_invalid_xdp_action
+  __cpuhp_remove_state
+  __cpuhp_setup_state
+  __cpuhp_state_add_instance
+  __cpuhp_state_remove_instance
+  cpumask_next_wrap
+  cpus_read_lock
+  cpus_read_unlock
+  eth_commit_mac_addr_change
+  eth_prepare_mac_addr_change
+  ethtool_sprintf
+  ethtool_virtdev_set_link_ksettings
+  flow_keys_basic_dissector
+  jiffies_to_usecs
+  __napi_alloc_skb
+  napi_consume_skb
+  netdev_notify_peers
+  netdev_rss_key_fill
+  netif_device_attach
+  netif_set_real_num_rx_queues
+  netif_set_real_num_tx_queues
+  __netif_set_xps_queue
+  netif_tx_lock
+  netif_tx_unlock
+  __num_online_cpus
+  sched_clock
+  skb_coalesce_rx_frag
+  __skb_flow_dissect
+  skb_page_frag_refill
+  skb_partial_csum_set
+  skb_tstamp_tx
+  softnet_data
+  __traceiter_xdp_exception
+  __tracepoint_xdp_exception
+  virtqueue_add_inbuf_ctx
+  virtqueue_enable_cb_delayed
+  virtqueue_enable_cb_prepare
+  virtqueue_get_buf_ctx
+  virtqueue_poll
+  virtqueue_resize
+  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_reg
+  xdp_rxq_info_reg_mem_model
+  xdp_rxq_info_unreg
+  xdp_warn
+
+# required by virtio_pci.ko
+  __irq_apply_affinity_hint
+  pci_alloc_irq_vectors_affinity
+  pci_device_is_present
+  pci_disable_sriov
+  pci_enable_sriov
+  pci_find_ext_capability
+  pci_free_irq_vectors
+  pci_irq_get_affinity
+  pci_irq_vector
+  pci_set_master
+  pci_vfs_assigned
+
+# required by virtio_pci_legacy_dev.ko
+  pci_iomap
+
+# required by virtio_pci_modern_dev.ko
+  pci_iomap_range
+  pci_release_selected_regions
+  pci_request_selected_regions
+
+# required by virtio_pmem.ko
+  nvdimm_bus_register
+  nvdimm_bus_unregister
+  nvdimm_pmem_region_create
+
+# required by virtio_snd.ko
+  snd_card_free
+  snd_card_new
+  snd_card_register
+  snd_jack_new
+  snd_jack_report
+  snd_pcm_add_chmap_ctls
+  snd_pcm_format_physical_width
+  snd_pcm_hw_constraint_integer
+  snd_pcm_lib_ioctl
+  snd_pcm_new
+  snd_pcm_period_elapsed
+  snd_pcm_set_managed_buffer_all
+  snd_pcm_set_ops
+  wait_for_completion_interruptible_timeout
+
+# required by vkms.ko
+  __devm_drm_dev_alloc
+  devres_open_group
+  devres_release_group
+  drm_atomic_add_affected_planes
+  drm_atomic_helper_check_wb_encoder_state
+  drm_atomic_helper_cleanup_planes
+  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_crtc_destroy_state
+  __drm_atomic_helper_crtc_duplicate_state
+  __drm_atomic_helper_crtc_reset
+  drm_atomic_helper_fake_vblank
+  drm_atomic_helper_wait_for_flip_done
+  drm_calc_timestamping_constants
+  drm_crtc_accurate_vblank_count
+  drm_crtc_add_crc_entry
+  drm_crtc_vblank_put
+  drm_encoder_cleanup
+  drm_gem_cleanup_shadow_fb
+  __drm_gem_destroy_shadow_plane_state
+  __drm_gem_duplicate_shadow_plane_state
+  drm_gem_fb_vmap
+  drm_gem_fb_vunmap
+  drm_gem_prepare_shadow_fb
+  __drm_gem_reset_shadow_plane
+  drm_gem_shmem_dumb_create
+  drm_gem_shmem_prime_import_sg_table
+  drm_mode_object_get
+  drm_mode_object_put
+  drm_writeback_connector_init
+  drm_writeback_queue_job
+  drm_writeback_signal_completion
+
+# required by vmw_vsock_virtio_transport.ko
+  sk_error_report
+  virtio_transport_connect
+  virtio_transport_deliver_tap_pkt
+  virtio_transport_destruct
+  virtio_transport_dgram_allow
+  virtio_transport_dgram_bind
+  virtio_transport_dgram_dequeue
+  virtio_transport_dgram_enqueue
+  virtio_transport_do_socket_init
+  virtio_transport_free_pkt
+  virtio_transport_notify_buffer_size
+  virtio_transport_notify_poll_in
+  virtio_transport_notify_poll_out
+  virtio_transport_notify_recv_init
+  virtio_transport_notify_recv_post_dequeue
+  virtio_transport_notify_recv_pre_block
+  virtio_transport_notify_recv_pre_dequeue
+  virtio_transport_notify_send_init
+  virtio_transport_notify_send_post_enqueue
+  virtio_transport_notify_send_pre_block
+  virtio_transport_notify_send_pre_enqueue
+  virtio_transport_recv_pkt
+  virtio_transport_release
+  virtio_transport_seqpacket_dequeue
+  virtio_transport_seqpacket_enqueue
+  virtio_transport_seqpacket_has_data
+  virtio_transport_shutdown
+  virtio_transport_stream_allow
+  virtio_transport_stream_dequeue
+  virtio_transport_stream_enqueue
+  virtio_transport_stream_has_data
+  virtio_transport_stream_has_space
+  virtio_transport_stream_is_active
+  virtio_transport_stream_rcvhiwat
+  vsock_core_register
+  vsock_core_unregister
+  vsock_for_each_connected_socket
+
+# preserved by --additions-only
+  __alloc_percpu
+  bdev_end_io_acct
+  bdev_start_io_acct
+  bio_endio
+  bio_end_io_acct_remapped
+  bio_start_io_acct
+  __blk_alloc_disk
+  blk_queue_flag_clear
+  blk_queue_flag_set
+  can_bus_off
+  can_change_state
+  capable
+  contig_page_data
+  crypto_alloc_base
+  crypto_comp_compress
+  crypto_comp_decompress
+  crypto_has_alg
+  dec_zone_page_state
+  down_read
+  down_write
+  flush_dcache_page
+  folio_wait_bit
+  hex_asc_upper
+  hex_to_bin
+  inc_zone_page_state
+  __init_rwsem
+  kstrdup
+  kstrtou16
+  kstrtoull
+  memset64
+  mutex_is_locked
+  page_endio
+  _raw_read_lock
+  _raw_read_unlock
+  _raw_write_lock
+  _raw_write_unlock
+  set_capacity
+  sock_efree
+  sync_blockdev
+  sysfs_streq
+  tty_mode_ioctl
+  tty_register_ldisc
+  tty_unregister_ldisc
+  up_read
+  up_write
+  vzalloc
diff --git a/android/abi_gki_aarch64_vivo b/android/abi_gki_aarch64_vivo
new file mode 100644
index 0000000..934892f
--- /dev/null
+++ b/android/abi_gki_aarch64_vivo
@@ -0,0 +1,5124 @@
+[abi_symbol_list]
+  I_BDEV
+  __ClearPageMovable
+  __SetPageMovable
+  ___drm_dbg
+  ___pskb_trim
+  ___ratelimit
+  __alloc_pages
+  __alloc_percpu
+  __alloc_percpu_gfp
+  __alloc_skb
+  __arch_clear_user
+  __arch_copy_from_user
+  __arch_copy_to_user
+  __arm_smccc_smc
+  __arm_smccc_sve_check
+  __auxiliary_driver_register
+  __balance_callbacks
+  __bitmap_and
+  __bitmap_andnot
+  __bitmap_clear
+  __bitmap_complement
+  __bitmap_equal
+  __bitmap_intersects
+  __bitmap_or
+  __bitmap_set
+  __bitmap_subset
+  __bitmap_weight
+  __bitmap_xor
+  __blk_alloc_disk
+  __blk_mq_alloc_disk
+  __blk_mq_end_request
+  __blk_rq_map_sg
+  __check_object_size
+  __class_create
+  __class_register
+  __clk_determine_rate
+  __clk_get_hw
+  __clk_get_name
+  __clk_is_enabled
+  __clk_mux_determine_rate
+  __clk_mux_determine_rate_closest
+  __clocksource_register_scale
+  __const_udelay
+  __copy_overflow
+  __cpu_active_mask
+  __cpu_dying_mask
+  __cpu_online_mask
+  __cpu_possible_mask
+  __cpu_present_mask
+  __cpufreq_driver_target
+  __cpuhp_remove_state
+  __cpuhp_setup_state
+  __cpuhp_setup_state_cpuslocked
+  __cpuhp_state_add_instance
+  __cpuhp_state_remove_instance
+  __crypto_memneq
+  __crypto_xor
+  __dev_change_net_namespace
+  __dev_get_by_index
+  __dev_get_by_name
+  __dev_kfree_skb_any
+  __dev_kfree_skb_irq
+  __dev_queue_xmit
+  __devm_alloc_percpu
+  __devm_clk_hw_register_divider
+  __devm_clk_hw_register_mux
+  __devm_drm_dev_alloc
+  __devm_iio_device_register
+  __devm_irq_alloc_descs
+  __devm_of_phy_provider_register
+  __devm_regmap_init
+  __devm_regmap_init_i2c
+  __devm_regmap_init_mmio_clk
+  __devm_regmap_init_spi
+  __devm_regmap_init_spmi_ext
+  __devm_request_region
+  __devm_reset_control_bulk_get
+  __devm_reset_control_get
+  __devm_rtc_register_device
+  __devm_spi_alloc_controller
+  __devres_alloc_node
+  __dma_request_channel
+  __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_crtc_reset
+  __drm_atomic_helper_plane_destroy_state
+  __drm_atomic_helper_plane_duplicate_state
+  __drm_atomic_helper_plane_reset
+  __drm_atomic_helper_private_obj_duplicate_state
+  __drm_atomic_state_free
+  __drm_crtc_commit_free
+  __drm_debug
+  __drm_dev_dbg
+  __drm_err
+  __drm_gem_destroy_shadow_plane_state
+  __drm_gem_duplicate_shadow_plane_state
+  __drm_gem_reset_shadow_plane
+  __drm_printfn_coredump
+  __drm_printfn_debug
+  __drm_printfn_info
+  __drm_printfn_seq_file
+  __drm_puts_coredump
+  __drm_puts_seq_file
+  __drmm_universal_plane_alloc
+  __dynamic_dev_dbg
+  __dynamic_pr_debug
+  __ethtool_get_link_ksettings
+  __fdget
+  __flush_workqueue
+  __folio_lock
+  __folio_put
+  __free_pages
+  __genphy_config_aneg
+  __get_free_pages
+  __get_random_u32_below
+  __get_task_comm
+  __get_task_ioprio
+  __getblk_gfp
+  __hci_cmd_send
+  __hci_cmd_sync
+  __hci_cmd_sync_ev
+  __hci_cmd_sync_sk
+  __hci_cmd_sync_status
+  __hci_cmd_sync_status_sk
+  __hrtimer_get_remaining
+  __hvc_resize
+  __hw_addr_init
+  __hw_addr_sync
+  __hw_addr_unsync
+  __hwspin_lock_timeout
+  __hwspin_unlock
+  __i2c_smbus_xfer
+  __i2c_transfer
+  __inet6_lookup_established
+  __inet_lookup_established
+  __init_rwsem
+  __init_swait_queue_head
+  __init_waitqueue_head
+  __ioread32_copy
+  __iowrite32_copy
+  __ip_dev_find
+  __ip_select_ident
+  __ipv6_addr_type
+  __irq_alloc_descs
+  __irq_apply_affinity_hint
+  __irq_domain_add
+  __irq_resolve_mapping
+  __irq_set_handler
+  __kfifo_alloc
+  __kfifo_free
+  __kfifo_from_user
+  __kfifo_from_user_r
+  __kfifo_in
+  __kfifo_in_r
+  __kfifo_init
+  __kfifo_len_r
+  __kfifo_out
+  __kfifo_out_peek
+  __kfifo_out_r
+  __kfifo_to_user
+  __kfifo_to_user_r
+  __kmalloc
+  __kmalloc_node_track_caller
+  __kthread_init_worker
+  __list_add_valid
+  __list_del_entry_valid
+  __local_bh_enable_ip
+  __lock_buffer
+  __mdiobus_read
+  __mdiobus_write
+  __media_device_register
+  __memcat_p
+  __memcpy_fromio
+  __memcpy_toio
+  __memset_io
+  __migrate_task
+  __mmap_lock_do_trace_acquire_returned
+  __mmap_lock_do_trace_released
+  __mmap_lock_do_trace_start_locking
+  __mmdrop
+  __module_get
+  __module_put_and_kthread_exit
+  __msecs_to_jiffies
+  __mutex_init
+  __napi_alloc_skb
+  __napi_schedule
+  __ndelay
+  __ndisc_fill_addr_option
+  __netdev_alloc_skb
+  __netif_napi_del
+  __netif_set_xps_queue
+  __netlink_dump_start
+  __netlink_kernel_create
+  __nfc_alloc_vendor_cmd_reply_skb
+  __nla_parse
+  __nla_validate
+  __nlmsg_put
+  __num_online_cpus
+  __of_get_address
+  __of_parse_phandle_with_args
+  __of_reset_control_get
+  __page_frag_cache_drain
+  __page_mapcount
+  __pagevec_release
+  __pci_register_driver
+  __per_cpu_offset
+  __percpu_down_read
+  __percpu_init_rwsem
+  __platform_driver_probe
+  __platform_driver_register
+  __pm_relax
+  __pm_runtime_disable
+  __pm_runtime_idle
+  __pm_runtime_resume
+  __pm_runtime_set_status
+  __pm_runtime_suspend
+  __pm_runtime_use_autosuspend
+  __pm_stay_awake
+  __printk_ratelimit
+  __pskb_copy_fclone
+  __pskb_pull_tail
+  __put_net
+  __rb_erase_color
+  __rb_insert_augmented
+  __rcu_read_lock
+  __rcu_read_unlock
+  __refrigerator
+  __register_blkdev
+  __register_chrdev
+  __register_rpmsg_driver
+  __regmap_init
+  __release_region
+  __request_module
+  __request_percpu_irq
+  __request_region
+  __reset_control_get
+  __rht_bucket_nested
+  __rt_mutex_init
+  __scsi_add_device
+  __scsi_iterate_devices
+  __scsi_print_sense
+  __sdhci_add_host
+  __sdhci_set_timeout
+  __seq_open_private
+  __serdev_device_driver_register
+  __serio_register_driver
+  __serio_register_port
+  __sg_page_iter_dma_next
+  __sg_page_iter_next
+  __sg_page_iter_start
+  __sk_receive_skb
+  __skb_checksum_complete
+  __skb_ext_put
+  __skb_flow_dissect
+  __skb_get_hash
+  __skb_gso_segment
+  __skb_pad
+  __sock_create
+  __sock_queue_rcv_skb
+  __sock_recv_cmsgs
+  __sock_recv_timestamp
+  __sock_recv_wifi_status
+  __sock_tx_timestamp
+  __spi_alloc_controller
+  __spi_register_driver
+  __splice_from_pipe
+  __spmi_driver_register
+  __srcu_read_lock
+  __srcu_read_unlock
+  __stack_chk_fail
+  __sw_hweight16
+  __sw_hweight32
+  __sw_hweight64
+  __sw_hweight8
+  __sysfs_match_string
+  __task_pid_nr_ns
+  __task_rq_lock
+  __tasklet_hi_schedule
+  __tasklet_schedule
+  __trace_bprintk
+  __trace_puts
+  __trace_trigger_soft_disabled
+  __traceiter_android_rvh_account_irq
+  __traceiter_android_rvh_after_dequeue_task
+  __traceiter_android_rvh_after_enqueue_task
+  __traceiter_android_rvh_arm64_serror_panic
+  __traceiter_android_rvh_audio_usb_offload_disconnect
+  __traceiter_android_rvh_build_perf_domains
+  __traceiter_android_rvh_can_migrate_task
+  __traceiter_android_rvh_check_preempt_tick
+  __traceiter_android_rvh_check_preempt_wakeup
+  __traceiter_android_rvh_check_preempt_wakeup_ignore
+  __traceiter_android_rvh_cpu_cgroup_attach
+  __traceiter_android_rvh_cpu_cgroup_online
+  __traceiter_android_rvh_cpu_overutilized
+  __traceiter_android_rvh_dequeue_entity
+  __traceiter_android_rvh_dequeue_task
+  __traceiter_android_rvh_dequeue_task_fair
+  __traceiter_android_rvh_die_kernel_fault
+  __traceiter_android_rvh_do_el1_bti
+  __traceiter_android_rvh_do_el1_fpac
+  __traceiter_android_rvh_do_sched_yield
+  __traceiter_android_rvh_do_sea
+  __traceiter_android_rvh_do_sp_pc_abort
+  __traceiter_android_rvh_do_undefinstr
+  __traceiter_android_rvh_enqueue_entity
+  __traceiter_android_rvh_enqueue_task
+  __traceiter_android_rvh_enqueue_task_fair
+  __traceiter_android_rvh_entity_tick
+  __traceiter_android_rvh_find_busiest_group
+  __traceiter_android_rvh_find_busiest_queue
+  __traceiter_android_rvh_find_lowest_rq
+  __traceiter_android_rvh_finish_prio_fork
+  __traceiter_android_rvh_flush_task
+  __traceiter_android_rvh_get_nohz_timer_target
+  __traceiter_android_rvh_gic_v3_set_affinity
+  __traceiter_android_rvh_iommu_alloc_insert_iova
+  __traceiter_android_rvh_iommu_iovad_init_alloc_algo
+  __traceiter_android_rvh_iommu_limit_align_shift
+  __traceiter_android_rvh_iommu_setup_dma_ops
+  __traceiter_android_rvh_is_cpu_allowed
+  __traceiter_android_rvh_migrate_queued_task
+  __traceiter_android_rvh_new_task_stats
+  __traceiter_android_rvh_panic_unhandled
+  __traceiter_android_rvh_pick_next_entity
+  __traceiter_android_rvh_place_entity
+  __traceiter_android_rvh_prepare_prio_fork
+  __traceiter_android_rvh_replace_next_task_fair
+  __traceiter_android_rvh_report_bug
+  __traceiter_android_rvh_rtmutex_prepare_setprio
+  __traceiter_android_rvh_rto_next_cpu
+  __traceiter_android_rvh_sched_balance_rt
+  __traceiter_android_rvh_sched_cpu_dying
+  __traceiter_android_rvh_sched_cpu_starting
+  __traceiter_android_rvh_sched_exec
+  __traceiter_android_rvh_sched_fork
+  __traceiter_android_rvh_sched_fork_init
+  __traceiter_android_rvh_sched_getaffinity
+  __traceiter_android_rvh_sched_newidle_balance
+  __traceiter_android_rvh_sched_nohz_balancer_kick
+  __traceiter_android_rvh_sched_rebalance_domains
+  __traceiter_android_rvh_sched_setaffinity
+  __traceiter_android_rvh_schedule
+  __traceiter_android_rvh_schedule_bug
+  __traceiter_android_rvh_select_fallback_rq
+  __traceiter_android_rvh_select_task_rq_fair
+  __traceiter_android_rvh_select_task_rq_rt
+  __traceiter_android_rvh_set_balance_anon_file_reclaim
+  __traceiter_android_rvh_set_cpus_allowed_by_task
+  __traceiter_android_rvh_set_task_cpu
+  __traceiter_android_rvh_set_user_nice
+  __traceiter_android_rvh_setscheduler
+  __traceiter_android_rvh_shmem_get_folio
+  __traceiter_android_rvh_show_max_freq
+  __traceiter_android_rvh_tick_entry
+  __traceiter_android_rvh_try_to_wake_up
+  __traceiter_android_rvh_try_to_wake_up_success
+  __traceiter_android_rvh_ttwu_cond
+  __traceiter_android_rvh_uclamp_eff_get
+  __traceiter_android_rvh_update_cpu_capacity
+  __traceiter_android_rvh_update_misfit_status
+  __traceiter_android_rvh_update_thermal_stats
+  __traceiter_android_rvh_util_est_update
+  __traceiter_android_rvh_wake_up_new_task
+  __traceiter_android_vh_audio_usb_offload_connect
+  __traceiter_android_vh_binder_restore_priority
+  __traceiter_android_vh_binder_set_priority
+  __traceiter_android_vh_binder_transaction_init
+  __traceiter_android_vh_binder_wait_for_work
+  __traceiter_android_vh_binder_wakeup_ilocked
+  __traceiter_android_vh_build_sched_domains
+  __traceiter_android_vh_check_uninterrupt_tasks
+  __traceiter_android_vh_check_uninterrupt_tasks_done
+  __traceiter_android_vh_cpu_idle_enter
+  __traceiter_android_vh_cpu_idle_exit
+  __traceiter_android_vh_cpufreq_fast_switch
+  __traceiter_android_vh_cpufreq_resolve_freq
+  __traceiter_android_vh_cpufreq_target
+  __traceiter_android_vh_cpuidle_psci_enter
+  __traceiter_android_vh_cpuidle_psci_exit
+  __traceiter_android_vh_disable_thermal_cooling_stats
+  __traceiter_android_vh_do_wake_up_sync
+  __traceiter_android_vh_dump_throttled_rt_tasks
+  __traceiter_android_vh_free_task
+  __traceiter_android_vh_ftrace_dump_buffer
+  __traceiter_android_vh_ftrace_format_check
+  __traceiter_android_vh_ftrace_oops_enter
+  __traceiter_android_vh_ftrace_oops_exit
+  __traceiter_android_vh_ftrace_size_check
+  __traceiter_android_vh_ignore_dmabuf_vmap_bounds
+  __traceiter_android_vh_ipi_stop
+  __traceiter_android_vh_is_fpsimd_save
+  __traceiter_android_vh_jiffies_update
+  __traceiter_android_vh_mmap_region
+  __traceiter_android_vh_mutex_wait_finish
+  __traceiter_android_vh_mutex_wait_start
+  __traceiter_android_vh_printk_hotplug
+  __traceiter_android_vh_rproc_recovery
+  __traceiter_android_vh_rproc_recovery_set
+  __traceiter_android_vh_rtmutex_wait_finish
+  __traceiter_android_vh_rtmutex_wait_start
+  __traceiter_android_vh_rwsem_read_wait_finish
+  __traceiter_android_vh_rwsem_read_wait_start
+  __traceiter_android_vh_rwsem_write_wait_finish
+  __traceiter_android_vh_rwsem_write_wait_start
+  __traceiter_android_vh_sched_show_task
+  __traceiter_android_vh_scheduler_tick
+  __traceiter_android_vh_setscheduler_uclamp
+  __traceiter_android_vh_show_resume_epoch_val
+  __traceiter_android_vh_show_suspend_epoch_val
+  __traceiter_android_vh_sysrq_crash
+  __traceiter_android_vh_timer_calc_index
+  __traceiter_android_vh_try_to_freeze_todo
+  __traceiter_android_vh_try_to_freeze_todo_unfrozen
+  __traceiter_android_vh_try_to_unmap_one
+  __traceiter_android_vh_ufs_check_int_errors
+  __traceiter_android_vh_ufs_clock_scaling
+  __traceiter_android_vh_ufs_compl_command
+  __traceiter_android_vh_ufs_fill_prdt
+  __traceiter_android_vh_ufs_prepare_command
+  __traceiter_android_vh_ufs_send_command
+  __traceiter_android_vh_ufs_send_tm_command
+  __traceiter_android_vh_ufs_send_uic_command
+  __traceiter_android_vh_ufs_update_sdev
+  __traceiter_android_vh_ufs_update_sysfs
+  __traceiter_android_vh_update_topology_flags_workfn
+  __traceiter_android_vh_watchdog_timer_softlockup
+  __traceiter_binder_transaction_received
+  __traceiter_clock_set_rate
+  __traceiter_console
+  __traceiter_cpu_frequency_limits
+  __traceiter_cpu_idle
+  __traceiter_device_pm_callback_end
+  __traceiter_device_pm_callback_start
+  __traceiter_dma_fence_emit
+  __traceiter_gpu_mem_total
+  __traceiter_hrtimer_expire_entry
+  __traceiter_hrtimer_expire_exit
+  __traceiter_ipi_entry
+  __traceiter_ipi_raise
+  __traceiter_irq_handler_entry
+  __traceiter_irq_handler_exit
+  __traceiter_mmap_lock_acquire_returned
+  __traceiter_mmap_lock_released
+  __traceiter_mmap_lock_start_locking
+  __traceiter_sched_overutilized_tp
+  __traceiter_sched_switch
+  __traceiter_suspend_resume
+  __traceiter_workqueue_execute_start
+  __traceiter_xdp_exception
+  __tracepoint_android_rvh_account_irq
+  __tracepoint_android_rvh_after_dequeue_task
+  __tracepoint_android_rvh_after_enqueue_task
+  __tracepoint_android_rvh_arm64_serror_panic
+  __tracepoint_android_rvh_audio_usb_offload_disconnect
+  __tracepoint_android_rvh_build_perf_domains
+  __tracepoint_android_rvh_can_migrate_task
+  __tracepoint_android_rvh_check_preempt_tick
+  __tracepoint_android_rvh_check_preempt_wakeup
+  __tracepoint_android_rvh_check_preempt_wakeup_ignore
+  __tracepoint_android_rvh_cpu_cgroup_attach
+  __tracepoint_android_rvh_cpu_cgroup_online
+  __tracepoint_android_rvh_cpu_overutilized
+  __tracepoint_android_rvh_dequeue_entity
+  __tracepoint_android_rvh_dequeue_task
+  __tracepoint_android_rvh_dequeue_task_fair
+  __tracepoint_android_rvh_die_kernel_fault
+  __tracepoint_android_rvh_do_el1_bti
+  __tracepoint_android_rvh_do_el1_fpac
+  __tracepoint_android_rvh_do_sched_yield
+  __tracepoint_android_rvh_do_sea
+  __tracepoint_android_rvh_do_sp_pc_abort
+  __tracepoint_android_rvh_do_undefinstr
+  __tracepoint_android_rvh_enqueue_entity
+  __tracepoint_android_rvh_enqueue_task
+  __tracepoint_android_rvh_enqueue_task_fair
+  __tracepoint_android_rvh_entity_tick
+  __tracepoint_android_rvh_find_busiest_group
+  __tracepoint_android_rvh_find_busiest_queue
+  __tracepoint_android_rvh_find_lowest_rq
+  __tracepoint_android_rvh_finish_prio_fork
+  __tracepoint_android_rvh_flush_task
+  __tracepoint_android_rvh_get_nohz_timer_target
+  __tracepoint_android_rvh_gic_v3_set_affinity
+  __tracepoint_android_rvh_iommu_alloc_insert_iova
+  __tracepoint_android_rvh_iommu_iovad_init_alloc_algo
+  __tracepoint_android_rvh_iommu_limit_align_shift
+  __tracepoint_android_rvh_iommu_setup_dma_ops
+  __tracepoint_android_rvh_is_cpu_allowed
+  __tracepoint_android_rvh_migrate_queued_task
+  __tracepoint_android_rvh_new_task_stats
+  __tracepoint_android_rvh_panic_unhandled
+  __tracepoint_android_rvh_pick_next_entity
+  __tracepoint_android_rvh_place_entity
+  __tracepoint_android_rvh_prepare_prio_fork
+  __tracepoint_android_rvh_replace_next_task_fair
+  __tracepoint_android_rvh_report_bug
+  __tracepoint_android_rvh_rtmutex_prepare_setprio
+  __tracepoint_android_rvh_rto_next_cpu
+  __tracepoint_android_rvh_sched_balance_rt
+  __tracepoint_android_rvh_sched_cpu_dying
+  __tracepoint_android_rvh_sched_cpu_starting
+  __tracepoint_android_rvh_sched_exec
+  __tracepoint_android_rvh_sched_fork
+  __tracepoint_android_rvh_sched_fork_init
+  __tracepoint_android_rvh_sched_getaffinity
+  __tracepoint_android_rvh_sched_newidle_balance
+  __tracepoint_android_rvh_sched_nohz_balancer_kick
+  __tracepoint_android_rvh_sched_rebalance_domains
+  __tracepoint_android_rvh_sched_setaffinity
+  __tracepoint_android_rvh_schedule
+  __tracepoint_android_rvh_schedule_bug
+  __tracepoint_android_rvh_select_fallback_rq
+  __tracepoint_android_rvh_select_task_rq_fair
+  __tracepoint_android_rvh_select_task_rq_rt
+  __tracepoint_android_rvh_set_balance_anon_file_reclaim
+  __tracepoint_android_rvh_set_cpus_allowed_by_task
+  __tracepoint_android_rvh_set_task_cpu
+  __tracepoint_android_rvh_set_user_nice
+  __tracepoint_android_rvh_setscheduler
+  __tracepoint_android_rvh_shmem_get_folio
+  __tracepoint_android_rvh_show_max_freq
+  __tracepoint_android_rvh_tick_entry
+  __tracepoint_android_rvh_try_to_wake_up
+  __tracepoint_android_rvh_try_to_wake_up_success
+  __tracepoint_android_rvh_ttwu_cond
+  __tracepoint_android_rvh_uclamp_eff_get
+  __tracepoint_android_rvh_update_cpu_capacity
+  __tracepoint_android_rvh_update_misfit_status
+  __tracepoint_android_rvh_update_thermal_stats
+  __tracepoint_android_rvh_util_est_update
+  __tracepoint_android_rvh_wake_up_new_task
+  __tracepoint_android_vh_audio_usb_offload_connect
+  __tracepoint_android_vh_binder_restore_priority
+  __tracepoint_android_vh_binder_set_priority
+  __tracepoint_android_vh_binder_transaction_init
+  __tracepoint_android_vh_binder_wait_for_work
+  __tracepoint_android_vh_binder_wakeup_ilocked
+  __tracepoint_android_vh_build_sched_domains
+  __tracepoint_android_vh_check_uninterrupt_tasks
+  __tracepoint_android_vh_check_uninterrupt_tasks_done
+  __tracepoint_android_vh_cpu_idle_enter
+  __tracepoint_android_vh_cpu_idle_exit
+  __tracepoint_android_vh_cpufreq_fast_switch
+  __tracepoint_android_vh_cpufreq_resolve_freq
+  __tracepoint_android_vh_cpufreq_target
+  __tracepoint_android_vh_cpuidle_psci_enter
+  __tracepoint_android_vh_cpuidle_psci_exit
+  __tracepoint_android_vh_disable_thermal_cooling_stats
+  __tracepoint_android_vh_do_wake_up_sync
+  __tracepoint_android_vh_dump_throttled_rt_tasks
+  __tracepoint_android_vh_free_task
+  __tracepoint_android_vh_ftrace_dump_buffer
+  __tracepoint_android_vh_ftrace_format_check
+  __tracepoint_android_vh_ftrace_oops_enter
+  __tracepoint_android_vh_ftrace_oops_exit
+  __tracepoint_android_vh_ftrace_size_check
+  __tracepoint_android_vh_ignore_dmabuf_vmap_bounds
+  __tracepoint_android_vh_ipi_stop
+  __tracepoint_android_vh_is_fpsimd_save
+  __tracepoint_android_vh_jiffies_update
+  __tracepoint_android_vh_mmap_region
+  __tracepoint_android_vh_mutex_wait_finish
+  __tracepoint_android_vh_mutex_wait_start
+  __tracepoint_android_vh_printk_hotplug
+  __tracepoint_android_vh_rproc_recovery
+  __tracepoint_android_vh_rproc_recovery_set
+  __tracepoint_android_vh_rtmutex_wait_finish
+  __tracepoint_android_vh_rtmutex_wait_start
+  __tracepoint_android_vh_rwsem_read_wait_finish
+  __tracepoint_android_vh_rwsem_read_wait_start
+  __tracepoint_android_vh_rwsem_write_wait_finish
+  __tracepoint_android_vh_rwsem_write_wait_start
+  __tracepoint_android_vh_sched_show_task
+  __tracepoint_android_vh_scheduler_tick
+  __tracepoint_android_vh_setscheduler_uclamp
+  __tracepoint_android_vh_show_resume_epoch_val
+  __tracepoint_android_vh_show_suspend_epoch_val
+  __tracepoint_android_vh_sysrq_crash
+  __tracepoint_android_vh_timer_calc_index
+  __tracepoint_android_vh_try_to_unmap_one
+  __tracepoint_android_vh_try_to_freeze_todo
+  __tracepoint_android_vh_try_to_freeze_todo_unfrozen
+  __tracepoint_android_vh_ufs_check_int_errors
+  __tracepoint_android_vh_ufs_clock_scaling
+  __tracepoint_android_vh_ufs_compl_command
+  __tracepoint_android_vh_ufs_fill_prdt
+  __tracepoint_android_vh_ufs_prepare_command
+  __tracepoint_android_vh_ufs_send_command
+  __tracepoint_android_vh_ufs_send_tm_command
+  __tracepoint_android_vh_ufs_send_uic_command
+  __tracepoint_android_vh_ufs_update_sdev
+  __tracepoint_android_vh_ufs_update_sysfs
+  __tracepoint_android_vh_update_topology_flags_workfn
+  __tracepoint_android_vh_watchdog_timer_softlockup
+  __tracepoint_binder_transaction_received
+  __tracepoint_clock_set_rate
+  __tracepoint_console
+  __tracepoint_cpu_frequency_limits
+  __tracepoint_cpu_idle
+  __tracepoint_device_pm_callback_end
+  __tracepoint_device_pm_callback_start
+  __tracepoint_dma_fence_emit
+  __tracepoint_gpu_mem_total
+  __tracepoint_hrtimer_expire_entry
+  __tracepoint_hrtimer_expire_exit
+  __tracepoint_ipi_entry
+  __tracepoint_ipi_raise
+  __tracepoint_irq_handler_entry
+  __tracepoint_irq_handler_exit
+  __tracepoint_mmap_lock_acquire_returned
+  __tracepoint_mmap_lock_released
+  __tracepoint_mmap_lock_start_locking
+  __tracepoint_sched_overutilized_tp
+  __tracepoint_sched_switch
+  __tracepoint_suspend_resume
+  __tracepoint_workqueue_execute_start
+  __tracepoint_xdp_exception
+  __tty_alloc_driver
+  __tty_insert_flip_char
+  __udelay
+  __udp4_lib_lookup
+  __udp6_lib_lookup
+  __uio_register_device
+  __unregister_chrdev
+  __usb_create_hcd
+  __usecs_to_jiffies
+  __v4l2_ctrl_modify_range
+  __v4l2_ctrl_s_ctrl
+  __v4l2_device_register_subdev_nodes
+  __var_waitqueue
+  __video_register_device
+  __vmalloc
+  __wait_on_buffer
+  __wait_rcu_gp
+  __wake_up
+  __wake_up_locked
+  __wake_up_sync
+  __wake_up_sync_key
+  __warn_printk
+  __xa_alloc
+  __xa_alloc_cyclic
+  __xa_insert
+  __xdp_rxq_info_reg
+  __xfrm_state_destroy
+  _copy_from_iter
+  _copy_to_iter
+  _ctype
+  _dev_crit
+  _dev_emerg
+  _dev_err
+  _dev_info
+  _dev_notice
+  _dev_printk
+  _dev_warn
+  _find_first_and_bit
+  _find_first_bit
+  _find_first_zero_bit
+  _find_last_bit
+  _find_next_and_bit
+  _find_next_bit
+  _find_next_zero_bit
+  _printk
+  _printk_deferred
+  _proc_mkdir
+  _raw_read_lock
+  _raw_read_lock_bh
+  _raw_read_lock_irq
+  _raw_read_lock_irqsave
+  _raw_read_unlock
+  _raw_read_unlock_bh
+  _raw_read_unlock_irq
+  _raw_read_unlock_irqrestore
+  _raw_spin_lock
+  _raw_spin_lock_bh
+  _raw_spin_lock_irq
+  _raw_spin_lock_irqsave
+  _raw_spin_trylock
+  _raw_spin_trylock_bh
+  _raw_spin_unlock
+  _raw_spin_unlock_bh
+  _raw_spin_unlock_irq
+  _raw_spin_unlock_irqrestore
+  _raw_write_lock
+  _raw_write_lock_bh
+  _raw_write_lock_irq
+  _raw_write_lock_irqsave
+  _raw_write_trylock
+  _raw_write_unlock
+  _raw_write_unlock_bh
+  _raw_write_unlock_irq
+  _raw_write_unlock_irqrestore
+  _snd_pcm_hw_params_any
+  _totalram_pages
+  access_process_vm
+  activate_task
+  add_cpu
+  add_device_randomness
+  add_memory
+  add_taint
+  add_timer
+  add_timer_on
+  add_uevent_var
+  add_wait_queue
+  add_wait_queue_exclusive
+  addrconf_add_linklocal
+  addrconf_prefix_rcv_add_addr
+  adjust_managed_page_count
+  aes_encrypt
+  aes_expandkey
+  alarm_cancel
+  alarm_init
+  alarm_start
+  alarm_start_relative
+  alarm_try_to_cancel
+  alarmtimer_get_rtcdev
+  all_vm_events
+  alloc_anon_inode
+  alloc_can_err_skb
+  alloc_can_skb
+  alloc_candev_mqs
+  alloc_canfd_skb
+  alloc_canxl_skb
+  alloc_chrdev_region
+  alloc_etherdev_mqs
+  alloc_io_pgtable_ops
+  alloc_netdev_mqs
+  alloc_pages_exact
+  alloc_skb_with_frags
+  alloc_workqueue
+  alt_cb_patch_nops
+  amba_bustype
+  amba_driver_register
+  amba_driver_unregister
+  amba_release_regions
+  amba_request_regions
+  android_rvh_probe_register
+  anon_inode_getfd
+  anon_inode_getfile
+  arc4_crypt
+  arc4_setkey
+  arch_freq_scale
+  arch_timer_read_counter
+  argv_free
+  argv_split
+  arm64_use_ng_mappings
+  async_schedule_node
+  async_schedule_node_domain
+  async_synchronize_cookie
+  async_synchronize_full_domain
+  atomic_notifier_call_chain
+  atomic_notifier_chain_register
+  atomic_notifier_chain_unregister
+  autoremove_wake_function
+  auxiliary_driver_unregister
+  available_idle_cpu
+  backlight_device_get_by_type
+  backlight_device_register
+  backlight_device_set_brightness
+  backlight_device_unregister
+  balance_dirty_pages_ratelimited
+  balance_push_callback
+  balloon_mops
+  balloon_page_alloc
+  balloon_page_dequeue
+  balloon_page_enqueue
+  baswap
+  bcmp
+  bdev_end_io_acct
+  bdev_start_io_acct
+  bdi_alloc
+  bdi_put
+  bdi_register
+  bgpio_init
+  bin2hex
+  bio_add_page
+  bio_alloc_bioset
+  bio_associate_blkg
+  bio_chain
+  bio_clone_blkg_association
+  bio_end_io_acct_remapped
+  bio_endio
+  bio_put
+  bio_start_io_acct
+  bit_wait
+  bit_wait_timeout
+  bitmap_allocate_region
+  bitmap_find_next_zero_area_off
+  bitmap_free
+  bitmap_from_arr32
+  bitmap_parse
+  bitmap_parselist
+  bitmap_print_to_pagebuf
+  bitmap_release_region
+  bitmap_to_arr32
+  bitmap_zalloc
+  blk_execute_rq
+  blk_execute_rq_nowait
+  blk_mq_alloc_request
+  blk_mq_alloc_sq_tag_set
+  blk_mq_alloc_tag_set
+  blk_mq_complete_request
+  blk_mq_end_request
+  blk_mq_end_request_batch
+  blk_mq_free_request
+  blk_mq_free_tag_set
+  blk_mq_freeze_queue
+  blk_mq_init_queue
+  blk_mq_map_queues
+  blk_mq_quiesce_queue
+  blk_mq_requeue_request
+  blk_mq_rq_cpu
+  blk_mq_start_request
+  blk_mq_start_stopped_hw_queues
+  blk_mq_stop_hw_queue
+  blk_mq_tagset_busy_iter
+  blk_mq_unfreeze_queue
+  blk_mq_unquiesce_queue
+  blk_mq_virtio_map_queues
+  blk_queue_alignment_offset
+  blk_queue_flag_clear
+  blk_queue_flag_set
+  blk_queue_io_min
+  blk_queue_io_opt
+  blk_queue_logical_block_size
+  blk_queue_max_discard_sectors
+  blk_queue_max_discard_segments
+  blk_queue_max_hw_sectors
+  blk_queue_max_secure_erase_sectors
+  blk_queue_max_segment_size
+  blk_queue_max_segments
+  blk_queue_max_write_zeroes_sectors
+  blk_queue_physical_block_size
+  blk_queue_update_dma_alignment
+  blk_queue_update_dma_pad
+  blk_queue_write_cache
+  blk_rq_map_kern
+  blk_rq_map_user
+  blk_rq_map_user_io
+  blk_rq_map_user_iov
+  blk_rq_unmap_user
+  blk_status_to_errno
+  blk_update_request
+  blkdev_get_by_dev
+  blkdev_get_by_path
+  blkdev_issue_flush
+  blkdev_put
+  blocking_notifier_call_chain
+  blocking_notifier_chain_register
+  blocking_notifier_chain_unregister
+  bpf_dispatcher_xdp_func
+  bpf_master_redirect_enabled_key
+  bpf_prog_add
+  bpf_prog_put
+  bpf_prog_sub
+  bpf_stats_enabled_key
+  bpf_trace_run1
+  bpf_trace_run10
+  bpf_trace_run11
+  bpf_trace_run12
+  bpf_trace_run2
+  bpf_trace_run3
+  bpf_trace_run4
+  bpf_trace_run5
+  bpf_trace_run6
+  bpf_trace_run7
+  bpf_trace_run8
+  bpf_trace_run9
+  bpf_warn_invalid_xdp_action
+  bsg_job_done
+  bsg_remove_queue
+  bsg_setup_queue
+  bt_accept_dequeue
+  bt_accept_enqueue
+  bt_accept_unlink
+  bt_debugfs
+  bt_err
+  bt_err_ratelimited
+  bt_info
+  bt_procfs_cleanup
+  bt_procfs_init
+  bt_sock_ioctl
+  bt_sock_link
+  bt_sock_poll
+  bt_sock_reclassify_lock
+  bt_sock_recvmsg
+  bt_sock_register
+  bt_sock_stream_recvmsg
+  bt_sock_unlink
+  bt_sock_unregister
+  bt_sock_wait_ready
+  bt_sock_wait_state
+  bt_status
+  bt_to_errno
+  bt_warn
+  bt_warn_ratelimited
+  btbcm_check_bdaddr
+  btbcm_finalize
+  btbcm_initialize
+  btbcm_patchram
+  btbcm_read_pcm_int_params
+  btbcm_set_bdaddr
+  btbcm_setup_apple
+  btbcm_setup_patchram
+  btbcm_write_pcm_int_params
+  build_skb
+  bus_find_device
+  bus_for_each_dev
+  bus_for_each_drv
+  bus_register
+  bus_register_notifier
+  bus_unregister
+  bus_unregister_notifier
+  cache_line_size
+  caches_clean_inval_pou
+  call_netdevice_notifiers
+  call_rcu
+  call_rcu_tasks
+  call_rcu_tasks_trace
+  call_srcu
+  can_bus_off
+  can_change_mtu
+  can_change_state
+  can_dropped_invalid_skb
+  can_eth_ioctl_hwts
+  can_ethtool_op_get_ts_info_hwts
+  can_fd_dlc2len
+  can_fd_len2dlc
+  can_free_echo_skb
+  can_get_echo_skb
+  can_get_state_str
+  can_proto_register
+  can_proto_unregister
+  can_put_echo_skb
+  can_rx_offload_add_fifo
+  can_rx_offload_add_manual
+  can_rx_offload_add_timestamp
+  can_rx_offload_del
+  can_rx_offload_enable
+  can_rx_offload_get_echo_skb
+  can_rx_offload_irq_finish
+  can_rx_offload_irq_offload_fifo
+  can_rx_offload_irq_offload_timestamp
+  can_rx_offload_queue_tail
+  can_rx_offload_queue_timestamp
+  can_rx_offload_threaded_irq_finish
+  can_rx_register
+  can_rx_unregister
+  can_send
+  can_skb_get_frame_len
+  can_sock_destruct
+  cancel_delayed_work
+  cancel_delayed_work_sync
+  cancel_work_sync
+  capable
+  cdc_parse_cdc_header
+  cdev_add
+  cdev_alloc
+  cdev_del
+  cdev_device_add
+  cdev_device_del
+  cdev_init
+  cec_allocate_adapter
+  cec_delete_adapter
+  cec_received_msg_ts
+  cec_register_adapter
+  cec_s_log_addrs
+  cec_s_phys_addr
+  cec_transmit_attempt_done_ts
+  cec_unregister_adapter
+  cgroup_path_ns
+  cgroup_taskset_first
+  cgroup_taskset_next
+  check_move_unevictable_pages
+  check_preempt_curr
+  check_zeroed_user
+  class_create_file_ns
+  class_destroy
+  class_dev_iter_exit
+  class_dev_iter_init
+  class_dev_iter_next
+  class_find_device
+  class_for_each_device
+  class_interface_unregister
+  class_remove_file_ns
+  class_unregister
+  cleanup_srcu_struct
+  clear_page
+  clk_bulk_disable
+  clk_bulk_enable
+  clk_bulk_prepare
+  clk_bulk_put_all
+  clk_bulk_unprepare
+  clk_disable
+  clk_enable
+  clk_fixed_factor_ops
+  clk_fixed_rate_ops
+  clk_get
+  clk_get_parent
+  clk_get_rate
+  clk_hw_get_clk
+  clk_hw_get_flags
+  clk_hw_get_name
+  clk_hw_get_num_parents
+  clk_hw_get_parent
+  clk_hw_get_parent_by_index
+  clk_hw_get_rate
+  clk_hw_get_rate_range
+  clk_hw_is_enabled
+  clk_hw_is_prepared
+  clk_hw_register
+  clk_hw_round_rate
+  clk_hw_set_rate_range
+  clk_hw_unregister
+  clk_is_match
+  clk_notifier_register
+  clk_notifier_unregister
+  clk_prepare
+  clk_put
+  clk_register
+  clk_register_clkdev
+  clk_register_fixed_factor
+  clk_register_fixed_rate
+  clk_register_gate
+  clk_restore_context
+  clk_round_rate
+  clk_set_parent
+  clk_set_rate
+  clk_sync_state
+  clk_unprepare
+  clockevents_config_and_register
+  clocks_calc_mult_shift
+  close_candev
+  close_fd
+  cma_alloc
+  cma_for_each_area
+  cma_get_name
+  cma_release
+  compat_ptr_ioctl
+  complete
+  complete_all
+  completion_done
+  component_add
+  component_bind_all
+  component_compare_of
+  component_del
+  component_master_add_with_match
+  component_master_del
+  component_match_add_release
+  component_unbind_all
+  cond_synchronize_rcu
+  cond_synchronize_rcu_expedited
+  config_ep_by_speed
+  config_group_init
+  config_group_init_type_name
+  config_item_get
+  config_item_put
+  config_item_set_name
+  configfs_register_group
+  configfs_register_subsystem
+  configfs_unregister_group
+  configfs_unregister_subsystem
+  console_printk
+  console_set_on_cmdline
+  console_stop
+  console_suspend_enabled
+  consume_skb
+  contig_page_data
+  copy_from_kernel_nofault
+  cpu_all_bits
+  cpu_bit_bitmap
+  cpu_hwcaps
+  cpu_irqtime
+  cpu_is_hotpluggable
+  cpu_latency_qos_add_request
+  cpu_latency_qos_remove_request
+  cpu_latency_qos_request_active
+  cpu_latency_qos_update_request
+  cpu_number
+  cpu_pm_register_notifier
+  cpu_pm_unregister_notifier
+  cpu_scale
+  cpu_subsys
+  cpu_topology
+  cpufreq_cpu_get
+  cpufreq_cpu_get_raw
+  cpufreq_cpu_put
+  cpufreq_dbs_governor_exit
+  cpufreq_dbs_governor_init
+  cpufreq_dbs_governor_limits
+  cpufreq_dbs_governor_start
+  cpufreq_dbs_governor_stop
+  cpufreq_disable_fast_switch
+  cpufreq_driver_fast_switch
+  cpufreq_driver_resolve_freq
+  cpufreq_driver_target
+  cpufreq_enable_boost_support
+  cpufreq_enable_fast_switch
+  cpufreq_freq_attr_scaling_available_freqs
+  cpufreq_freq_attr_scaling_boost_freqs
+  cpufreq_freq_transition_begin
+  cpufreq_freq_transition_end
+  cpufreq_frequency_table_get_index
+  cpufreq_frequency_table_verify
+  cpufreq_generic_attr
+  cpufreq_generic_frequency_table_verify
+  cpufreq_get
+  cpufreq_get_driver_data
+  cpufreq_get_policy
+  cpufreq_policy_transition_delay_us
+  cpufreq_quick_get
+  cpufreq_quick_get_max
+  cpufreq_register_driver
+  cpufreq_register_governor
+  cpufreq_register_notifier
+  cpufreq_table_index_unsorted
+  cpufreq_unregister_driver
+  cpufreq_unregister_governor
+  cpuhp_tasks_frozen
+  cpuidle_governor_latency_req
+  cpuidle_register_governor
+  cpumask_any_and_distribute
+  cpumask_next_wrap
+  cpupri_find_fitness
+  cpus_read_lock
+  cpus_read_unlock
+  crc16
+  crc32_be
+  crc32_le
+  crc8
+  crc8_populate_msb
+  crc_ccitt
+  create_function_device
+  crypto_aead_decrypt
+  crypto_aead_encrypt
+  crypto_aead_setauthsize
+  crypto_aead_setkey
+  crypto_ahash_digest
+  crypto_ahash_setkey
+  crypto_alloc_aead
+  crypto_alloc_ahash
+  crypto_alloc_base
+  crypto_alloc_kpp
+  crypto_alloc_shash
+  crypto_alloc_skcipher
+  crypto_alloc_sync_skcipher
+  crypto_comp_compress
+  crypto_comp_decompress
+  crypto_default_rng
+  crypto_dequeue_request
+  crypto_destroy_tfm
+  crypto_ecdh_encode_key
+  crypto_ecdh_key_len
+  crypto_enqueue_request
+  crypto_get_default_rng
+  crypto_has_ahash
+  crypto_has_alg
+  crypto_init_queue
+  crypto_put_default_rng
+  crypto_register_aead
+  crypto_register_ahash
+  crypto_register_rng
+  crypto_register_rngs
+  crypto_register_shash
+  crypto_register_skcipher
+  crypto_req_done
+  crypto_shash_digest
+  crypto_shash_final
+  crypto_shash_finup
+  crypto_shash_setkey
+  crypto_shash_tfm_digest
+  crypto_shash_update
+  crypto_skcipher_decrypt
+  crypto_skcipher_encrypt
+  crypto_skcipher_setkey
+  crypto_unregister_aead
+  crypto_unregister_ahash
+  crypto_unregister_rng
+  crypto_unregister_rngs
+  crypto_unregister_shash
+  crypto_unregister_skcipher
+  css_next_child
+  csum_ipv6_magic
+  csum_partial
+  csum_tcpudp_nofold
+  d_path
+  dapm_regulator_event
+  datagram_poll
+  dbs_update
+  deactivate_locked_super
+  deactivate_task
+  debug_locks_off
+  debug_locks_silent
+  debugfs_attr_read
+  debugfs_attr_write
+  debugfs_create_atomic_t
+  debugfs_create_blob
+  debugfs_create_bool
+  debugfs_create_devm_seqfile
+  debugfs_create_dir
+  debugfs_create_file
+  debugfs_create_file_unsafe
+  debugfs_create_size_t
+  debugfs_create_symlink
+  debugfs_create_u16
+  debugfs_create_u32
+  debugfs_create_u64
+  debugfs_create_u8
+  debugfs_create_ulong
+  debugfs_create_x32
+  debugfs_create_x64
+  debugfs_create_x8
+  debugfs_file_get
+  debugfs_file_put
+  debugfs_lookup
+  debugfs_lookup_and_remove
+  debugfs_remove
+  debugfs_rename
+  dec_node_page_state
+  dec_zone_page_state
+  default_llseek
+  default_wake_function
+  deferred_free
+  del_gendisk
+  del_timer
+  del_timer_sync
+  delayed_work_timer_fn
+  desc_to_gpio
+  destroy_workqueue
+  dev_add_pack
+  dev_addr_mod
+  dev_alloc_name
+  dev_change_flags
+  dev_close
+  dev_close_many
+  dev_coredumpm
+  dev_coredumpv
+  dev_driver_string
+  dev_err_probe
+  dev_fetch_sw_netstats
+  dev_fwnode
+  dev_get_by_index
+  dev_get_by_index_rcu
+  dev_get_by_name
+  dev_get_by_name_rcu
+  dev_get_flags
+  dev_get_regmap
+  dev_get_stats
+  dev_getbyhwaddr_rcu
+  dev_getfirstbyhwtype
+  dev_load
+  dev_mc_sync
+  dev_mc_sync_multiple
+  dev_mc_unsync
+  dev_nit_active
+  dev_open
+  dev_pm_clear_wake_irq
+  dev_pm_domain_attach
+  dev_pm_domain_attach_by_name
+  dev_pm_domain_detach
+  dev_pm_genpd_add_notifier
+  dev_pm_genpd_remove_notifier
+  dev_pm_genpd_set_next_wakeup
+  dev_pm_genpd_set_performance_state
+  dev_pm_opp_add
+  dev_pm_opp_adjust_voltage
+  dev_pm_opp_clear_config
+  dev_pm_opp_disable
+  dev_pm_opp_enable
+  dev_pm_opp_find_freq_ceil
+  dev_pm_opp_find_freq_exact
+  dev_pm_opp_find_freq_floor
+  dev_pm_opp_find_level_exact
+  dev_pm_opp_get_freq
+  dev_pm_opp_get_level
+  dev_pm_opp_get_of_node
+  dev_pm_opp_get_opp_count
+  dev_pm_opp_get_voltage
+  dev_pm_opp_of_add_table
+  dev_pm_opp_of_cpumask_remove_table
+  dev_pm_opp_of_find_icc_paths
+  dev_pm_opp_of_get_opp_desc_node
+  dev_pm_opp_of_register_em
+  dev_pm_opp_of_remove_table
+  dev_pm_opp_put
+  dev_pm_opp_remove
+  dev_pm_opp_remove_all_dynamic
+  dev_pm_opp_set_config
+  dev_pm_opp_set_opp
+  dev_pm_opp_set_rate
+  dev_pm_opp_set_sharing_cpus
+  dev_pm_qos_add_notifier
+  dev_pm_qos_add_request
+  dev_pm_qos_read_value
+  dev_pm_qos_remove_notifier
+  dev_pm_qos_remove_request
+  dev_pm_qos_update_request
+  dev_pm_set_wake_irq
+  dev_printk_emit
+  dev_remove_pack
+  dev_set_allmulti
+  dev_set_mac_address
+  dev_set_mtu
+  dev_set_name
+  dev_set_promiscuity
+  dev_set_threaded
+  dev_uc_add
+  dev_uc_del
+  dev_uc_sync
+  dev_uc_sync_multiple
+  dev_uc_unsync
+  devfreq_add_device
+  devfreq_add_governor
+  devfreq_cooling_unregister
+  devfreq_get_devfreq_by_node
+  devfreq_monitor_resume
+  devfreq_monitor_start
+  devfreq_monitor_stop
+  devfreq_monitor_suspend
+  devfreq_recommended_opp
+  devfreq_register_opp_notifier
+  devfreq_remove_device
+  devfreq_remove_governor
+  devfreq_resume_device
+  devfreq_suspend_device
+  devfreq_unregister_opp_notifier
+  devfreq_update_interval
+  device_add
+  device_add_disk
+  device_add_groups
+  device_bind_driver
+  device_create
+  device_create_bin_file
+  device_create_file
+  device_create_managed_software_node
+  device_create_with_groups
+  device_del
+  device_destroy
+  device_find_child
+  device_for_each_child
+  device_for_each_child_reverse
+  device_get_child_node_count
+  device_get_dma_attr
+  device_get_mac_address
+  device_get_match_data
+  device_get_named_child_node
+  device_get_next_child_node
+  device_get_phy_mode
+  device_initialize
+  device_link_add
+  device_link_del
+  device_link_remove
+  device_match_fwnode
+  device_match_name
+  device_match_of_node
+  device_move
+  device_property_match_string
+  device_property_present
+  device_property_read_string
+  device_property_read_u16_array
+  device_property_read_u32_array
+  device_property_read_u8_array
+  device_register
+  device_release_driver
+  device_remove_bin_file
+  device_remove_file
+  device_remove_groups
+  device_rename
+  device_set_wakeup_capable
+  device_set_wakeup_enable
+  device_show_int
+  device_store_int
+  device_unregister
+  device_wakeup_disable
+  device_wakeup_enable
+  devm_add_action
+  devm_alloc_etherdev_mqs
+  devm_backlight_device_register
+  devm_backlight_device_unregister
+  devm_bitmap_zalloc
+  devm_blk_crypto_profile_init
+  devm_clk_bulk_get
+  devm_clk_bulk_get_all
+  devm_clk_bulk_get_optional
+  devm_clk_get
+  devm_clk_get_optional
+  devm_clk_hw_register
+  devm_clk_hw_register_fixed_factor_parent_hw
+  devm_clk_put
+  devm_clk_register
+  devm_devfreq_add_device
+  devm_device_add_group
+  devm_device_add_groups
+  devm_device_remove_group
+  devm_drm_of_get_bridge
+  devm_drm_panel_bridge_add_typed
+  devm_extcon_dev_allocate
+  devm_extcon_dev_register
+  devm_extcon_dev_unregister
+  devm_free_irq
+  devm_fwnode_iio_channel_get_by_name
+  devm_fwnode_pwm_get
+  devm_gen_pool_create
+  devm_get_clk_from_child
+  devm_gh_rm_register_platform_ops
+  devm_gpio_request
+  devm_gpio_request_one
+  devm_gpiochip_add_data_with_key
+  devm_gpiod_get
+  devm_gpiod_get_array
+  devm_gpiod_get_index
+  devm_gpiod_get_optional
+  devm_gpiod_put
+  devm_gpiod_put_array
+  devm_hwspin_lock_register
+  devm_i2c_new_dummy_device
+  devm_iio_channel_get
+  devm_iio_device_alloc
+  devm_input_allocate_device
+  devm_ioremap
+  devm_ioremap_resource
+  devm_ioremap_wc
+  devm_iounmap
+  devm_kasprintf
+  devm_kfree
+  devm_kmalloc
+  devm_kmemdup
+  devm_krealloc
+  devm_kstrdup
+  devm_kstrdup_const
+  devm_led_classdev_flash_register_ext
+  devm_led_classdev_multicolor_register_ext
+  devm_led_classdev_register_ext
+  devm_mbox_controller_register
+  devm_memremap
+  devm_mfd_add_devices
+  devm_mipi_dsi_attach
+  devm_mipi_dsi_device_register_full
+  devm_nvmem_cell_get
+  devm_nvmem_device_get
+  devm_nvmem_register
+  devm_of_clk_add_hw_provider
+  devm_of_icc_get
+  devm_of_iomap
+  devm_of_platform_populate
+  devm_pci_alloc_host_bridge
+  devm_phy_create
+  devm_phy_get
+  devm_phy_package_join
+  devm_phy_put
+  devm_pinctrl_get
+  devm_pinctrl_put
+  devm_pinctrl_register
+  devm_pinctrl_register_and_init
+  devm_platform_get_and_ioremap_resource
+  devm_platform_ioremap_resource
+  devm_platform_ioremap_resource_byname
+  devm_pm_clk_create
+  devm_pm_opp_of_add_table
+  devm_pm_opp_set_config
+  devm_pm_runtime_enable
+  devm_power_supply_register
+  devm_pwm_get
+  devm_qcom_smem_state_get
+  devm_regmap_add_irq_chip
+  devm_regmap_del_irq_chip
+  devm_regmap_field_alloc
+  devm_regulator_bulk_get
+  devm_regulator_bulk_get_const
+  devm_regulator_get
+  devm_regulator_get_exclusive
+  devm_regulator_get_optional
+  devm_regulator_put
+  devm_regulator_register
+  devm_regulator_register_notifier
+  devm_request_any_context_irq
+  devm_request_threaded_irq
+  devm_reset_control_array_get
+  devm_reset_controller_register
+  devm_rtc_allocate_device
+  devm_rtc_device_register
+  devm_snd_soc_register_card
+  devm_snd_soc_register_component
+  devm_spi_register_controller
+  devm_thermal_of_cooling_device_register
+  devm_thermal_of_zone_register
+  devm_usb_get_phy_by_node
+  devm_usb_get_phy_by_phandle
+  devm_watchdog_register_device
+  devres_add
+  devres_destroy
+  devres_free
+  devres_open_group
+  devres_release
+  devres_release_group
+  disable_irq
+  disable_irq_nosync
+  disable_percpu_irq
+  divider_get_val
+  divider_recalc_rate
+  divider_ro_round_rate_parent
+  divider_round_rate_parent
+  dma_alloc_attrs
+  dma_alloc_pages
+  dma_async_device_register
+  dma_async_device_unregister
+  dma_async_tx_descriptor_init
+  dma_buf_attach
+  dma_buf_begin_cpu_access
+  dma_buf_begin_cpu_access_partial
+  dma_buf_detach
+  dma_buf_end_cpu_access
+  dma_buf_end_cpu_access_partial
+  dma_buf_export
+  dma_buf_fd
+  dma_buf_get
+  dma_buf_get_each
+  dma_buf_get_flags
+  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_array_create
+  dma_fence_array_ops
+  dma_fence_chain_init
+  dma_fence_context_alloc
+  dma_fence_default_wait
+  dma_fence_enable_sw_signaling
+  dma_fence_free
+  dma_fence_get_status
+  dma_fence_init
+  dma_fence_match_context
+  dma_fence_release
+  dma_fence_remove_callback
+  dma_fence_signal
+  dma_fence_signal_locked
+  dma_fence_signal_timestamp_locked
+  dma_fence_wait_timeout
+  dma_free_attrs
+  dma_free_pages
+  dma_get_sgtable_attrs
+  dma_get_slave_caps
+  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
+  dma_heap_put
+  dma_map_page_attrs
+  dma_map_resource
+  dma_map_sg_attrs
+  dma_map_sgtable
+  dma_mmap_attrs
+  dma_mmap_pages
+  dma_pool_alloc
+  dma_pool_create
+  dma_pool_destroy
+  dma_pool_free
+  dma_release_channel
+  dma_request_chan
+  dma_resv_add_fence
+  dma_resv_describe
+  dma_resv_fini
+  dma_resv_get_singleton
+  dma_resv_init
+  dma_resv_iter_first
+  dma_resv_iter_next
+  dma_resv_reserve_fences
+  dma_resv_test_signaled
+  dma_resv_wait_timeout
+  dma_set_coherent_mask
+  dma_set_mask
+  dma_sync_sg_for_cpu
+  dma_sync_sg_for_device
+  dma_sync_single_for_cpu
+  dma_sync_single_for_device
+  dma_unmap_page_attrs
+  dma_unmap_resource
+  dma_unmap_sg_attrs
+  dmabuf_page_pool_alloc
+  dmabuf_page_pool_create
+  dmabuf_page_pool_destroy
+  dmabuf_page_pool_free
+  dmabuf_page_pool_get_size
+  dmaengine_unmap_put
+  dmam_alloc_attrs
+  dmam_free_coherent
+  do_SAK
+  do_trace_netlink_extack
+  do_trace_rcu_torture_read
+  do_wait_intr
+  do_wait_intr_irq
+  double_rq_lock
+  down
+  down_interruptible
+  down_read
+  down_read_trylock
+  down_timeout
+  down_trylock
+  down_write
+  downgrade_write
+  dput
+  dql_completed
+  dql_reset
+  drain_workqueue
+  driver_attach
+  driver_find_device
+  driver_register
+  driver_set_override
+  driver_unregister
+  drm_add_edid_modes
+  drm_add_modes_noedid
+  drm_aperture_remove_conflicting_pci_framebuffers
+  drm_atomic_add_affected_connectors
+  drm_atomic_add_affected_planes
+  drm_atomic_commit
+  drm_atomic_get_connector_state
+  drm_atomic_get_crtc_state
+  drm_atomic_get_new_bridge_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_check
+  drm_atomic_helper_check_modeset
+  drm_atomic_helper_check_plane_state
+  drm_atomic_helper_check_planes
+  drm_atomic_helper_check_wb_encoder_state
+  drm_atomic_helper_cleanup_planes
+  drm_atomic_helper_commit
+  drm_atomic_helper_commit_cleanup_done
+  drm_atomic_helper_commit_duplicated_state
+  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_commit_tail
+  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_crtc_reset
+  drm_atomic_helper_damage_iter_init
+  drm_atomic_helper_damage_iter_next
+  drm_atomic_helper_damage_merged
+  drm_atomic_helper_dirtyfb
+  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_prepare_planes
+  drm_atomic_helper_set_config
+  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_fences
+  drm_atomic_helper_wait_for_flip_done
+  drm_atomic_helper_wait_for_vblanks
+  drm_atomic_nonblocking_commit
+  drm_atomic_normalize_zpos
+  drm_atomic_print_new_state
+  drm_atomic_private_obj_fini
+  drm_atomic_private_obj_init
+  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_set_mode_prop_for_crtc
+  drm_atomic_state_alloc
+  drm_atomic_state_clear
+  drm_atomic_state_default_clear
+  drm_atomic_state_default_release
+  drm_atomic_state_init
+  drm_bridge_add
+  drm_bridge_attach
+  drm_bridge_chain_disable
+  drm_bridge_chain_enable
+  drm_bridge_chain_mode_set
+  drm_bridge_chain_post_disable
+  drm_bridge_chain_pre_enable
+  drm_bridge_connector_enable_hpd
+  drm_bridge_connector_init
+  drm_bridge_detect
+  drm_bridge_hpd_notify
+  drm_bridge_remove
+  drm_calc_timestamping_constants
+  drm_client_init
+  drm_client_modeset_commit_locked
+  drm_client_register
+  drm_compat_ioctl
+  drm_connector_attach_edid_property
+  drm_connector_attach_encoder
+  drm_connector_cleanup
+  drm_connector_init
+  drm_connector_list_iter_begin
+  drm_connector_list_iter_end
+  drm_connector_list_iter_next
+  drm_connector_list_update
+  drm_connector_register
+  drm_connector_unregister
+  drm_connector_update_edid_property
+  drm_crtc_accurate_vblank_count
+  drm_crtc_add_crc_entry
+  drm_crtc_arm_vblank_event
+  drm_crtc_cleanup
+  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_set_max_vblank_count
+  drm_crtc_vblank_count_and_time
+  drm_crtc_vblank_get
+  drm_crtc_vblank_helper_get_vblank_timestamp
+  drm_crtc_vblank_off
+  drm_crtc_vblank_on
+  drm_crtc_vblank_put
+  drm_crtc_vblank_reset
+  drm_crtc_wait_one_vblank
+  drm_cvt_mode
+  drm_debugfs_create_files
+  drm_detect_hdmi_monitor
+  drm_detect_monitor_audio
+  drm_dev_alloc
+  drm_dev_enter
+  drm_dev_exit
+  drm_dev_get
+  drm_dev_printk
+  drm_dev_put
+  drm_dev_register
+  drm_dev_unplug
+  drm_dev_unregister
+  drm_display_mode_from_cea_vic
+  drm_display_mode_to_videomode
+  drm_do_get_edid
+  drm_edid_block_valid
+  drm_edid_duplicate
+  drm_edid_get_monitor_name
+  drm_edid_is_valid
+  drm_encoder_cleanup
+  drm_encoder_init
+  drm_event_cancel_free
+  drm_event_reserve_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_block_height
+  drm_format_info_block_width
+  drm_framebuffer_init
+  drm_framebuffer_lookup
+  drm_framebuffer_remove
+  drm_framebuffer_unregister_private
+  drm_gem_cleanup_shadow_fb
+  drm_gem_create_mmap_offset
+  drm_gem_dmabuf_mmap
+  drm_gem_dmabuf_release
+  drm_gem_dmabuf_vmap
+  drm_gem_dmabuf_vunmap
+  drm_gem_fb_create
+  drm_gem_fb_create_handle
+  drm_gem_fb_destroy
+  drm_gem_fb_get_obj
+  drm_gem_fb_vmap
+  drm_gem_fb_vunmap
+  drm_gem_free_mmap_offset
+  drm_gem_get_pages
+  drm_gem_handle_create
+  drm_gem_lock_reservations
+  drm_gem_lru_init
+  drm_gem_lru_move_tail
+  drm_gem_lru_scan
+  drm_gem_map_attach
+  drm_gem_map_detach
+  drm_gem_map_dma_buf
+  drm_gem_mmap
+  drm_gem_mmap_obj
+  drm_gem_object_free
+  drm_gem_object_init
+  drm_gem_object_lookup
+  drm_gem_object_release
+  drm_gem_plane_helper_prepare_fb
+  drm_gem_prepare_shadow_fb
+  drm_gem_prime_fd_to_handle
+  drm_gem_prime_handle_to_fd
+  drm_gem_prime_import
+  drm_gem_prime_import_dev
+  drm_gem_prime_mmap
+  drm_gem_private_object_init
+  drm_gem_put_pages
+  drm_gem_shmem_create
+  drm_gem_shmem_dumb_create
+  drm_gem_shmem_free
+  drm_gem_shmem_get_pages_sgt
+  drm_gem_shmem_get_sg_table
+  drm_gem_shmem_mmap
+  drm_gem_shmem_pin
+  drm_gem_shmem_prime_import_sg_table
+  drm_gem_shmem_print_info
+  drm_gem_shmem_unpin
+  drm_gem_shmem_vm_ops
+  drm_gem_shmem_vmap
+  drm_gem_shmem_vunmap
+  drm_gem_unlock_reservations
+  drm_gem_unmap_dma_buf
+  drm_gem_vm_close
+  drm_gem_vm_open
+  drm_get_connector_status_name
+  drm_get_connector_type_name
+  drm_get_edid
+  drm_get_format_info
+  drm_handle_vblank
+  drm_hdmi_avi_infoframe_from_display_mode
+  drm_helper_hpd_irq_event
+  drm_helper_mode_fill_fb_struct
+  drm_helper_move_panel_connectors_to_head
+  drm_helper_probe_single_connector_modes
+  drm_ioctl
+  drm_is_current_master
+  drm_kms_helper_hotplug_event
+  drm_kms_helper_poll_disable
+  drm_kms_helper_poll_enable
+  drm_kms_helper_poll_fini
+  drm_kms_helper_poll_init
+  drm_master_get
+  drm_master_put
+  drm_mm_init
+  drm_mm_insert_node_in_range
+  drm_mm_print
+  drm_mm_remove_node
+  drm_mm_takedown
+  drm_mode_config_cleanup
+  drm_mode_config_helper_resume
+  drm_mode_config_helper_suspend
+  drm_mode_config_reset
+  drm_mode_convert_to_umode
+  drm_mode_convert_umode
+  drm_mode_copy
+  drm_mode_create
+  drm_mode_create_dp_colorspace_property
+  drm_mode_create_tile_group
+  drm_mode_debug_printmodeline
+  drm_mode_destroy
+  drm_mode_duplicate
+  drm_mode_equal
+  drm_mode_equal_no_clocks
+  drm_mode_is_420_only
+  drm_mode_match
+  drm_mode_object_find
+  drm_mode_object_get
+  drm_mode_object_put
+  drm_mode_probed_add
+  drm_mode_prune_invalid
+  drm_mode_set_crtcinfo
+  drm_mode_set_name
+  drm_mode_sort
+  drm_mode_vrefresh
+  drm_modeset_acquire_fini
+  drm_modeset_acquire_init
+  drm_modeset_backoff
+  drm_modeset_drop_locks
+  drm_modeset_lock
+  drm_modeset_lock_all
+  drm_modeset_lock_all_ctx
+  drm_modeset_lock_init
+  drm_modeset_lock_single_interruptible
+  drm_modeset_unlock
+  drm_modeset_unlock_all
+  drm_object_attach_property
+  drm_object_property_set_value
+  drm_of_component_match_add
+  drm_of_find_panel_or_bridge
+  drm_of_get_data_lanes_count
+  drm_open
+  drm_panel_add
+  drm_panel_bridge_add_typed
+  drm_panel_bridge_connector
+  drm_panel_bridge_remove
+  drm_panel_disable
+  drm_panel_enable
+  drm_panel_get_modes
+  drm_panel_init
+  drm_panel_prepare
+  drm_panel_remove
+  drm_panel_unprepare
+  drm_plane_cleanup
+  drm_plane_create_alpha_property
+  drm_plane_create_blend_mode_property
+  drm_plane_create_rotation_property
+  drm_plane_create_zpos_immutable_property
+  drm_plane_create_zpos_property
+  drm_plane_enable_fb_damage_clips
+  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_probe_ddc
+  drm_property_blob_get
+  drm_property_blob_put
+  drm_property_create
+  drm_property_create_bitmask
+  drm_property_create_blob
+  drm_property_create_bool
+  drm_property_create_enum
+  drm_property_create_range
+  drm_property_create_signed_range
+  drm_property_lookup_blob
+  drm_property_replace_blob
+  drm_puts
+  drm_read
+  drm_rect_calc_hscale
+  drm_rect_calc_vscale
+  drm_rect_clip_scaled
+  drm_rect_intersect
+  drm_release
+  drm_rotation_simplify
+  drm_self_refresh_helper_alter_state
+  drm_send_event
+  drm_send_event_locked
+  drm_set_preferred_mode
+  drm_simple_display_pipe_attach_bridge
+  drm_simple_display_pipe_init
+  drm_simple_encoder_init
+  drm_state_dump
+  drm_syncobj_add_point
+  drm_syncobj_find
+  drm_syncobj_find_fence
+  drm_syncobj_free
+  drm_syncobj_replace_fence
+  drm_sysfs_connector_status_event
+  drm_universal_plane_init
+  drm_vblank_init
+  drm_wait_one_vblank
+  drm_writeback_connector_init
+  drm_writeback_connector_init_with_encoder
+  drm_writeback_queue_job
+  drm_writeback_signal_completion
+  drmm_kfree
+  drmm_kmalloc
+  drmm_mode_config_init
+  dst_cache_destroy
+  dst_cache_get
+  dst_cache_init
+  dst_cache_set_ip4
+  dst_cache_set_ip6
+  dst_release
+  dump_backtrace
+  dump_stack
+  dw_handle_msi_irq
+  dw_pcie_host_init
+  dw_pcie_read
+  dw_pcie_setup_rc
+  dw_pcie_write
+  edac_device_add_device
+  edac_device_alloc_ctl_info
+  edac_device_alloc_index
+  edac_device_del_device
+  edac_device_free_ctl_info
+  edac_device_handle_ce_count
+  edac_device_handle_ue_count
+  em_cpu_get
+  emergency_restart
+  enable_irq
+  enable_percpu_irq
+  end_buffer_read_sync
+  eth_commit_mac_addr_change
+  eth_header_parse
+  eth_mac_addr
+  eth_prepare_mac_addr_change
+  eth_type_trans
+  eth_validate_addr
+  ether_setup
+  ethnl_cable_test_fault_length
+  ethnl_cable_test_result
+  ethtool_convert_legacy_u32_to_link_mode
+  ethtool_convert_link_mode_to_legacy_u32
+  ethtool_op_get_link
+  ethtool_op_get_ts_info
+  ethtool_sprintf
+  ethtool_virtdev_set_link_ksettings
+  event_triggers_call
+  eventfd_ctx_fdget
+  eventfd_ctx_fileget
+  eventfd_ctx_put
+  eventfd_ctx_remove_wait_queue
+  eventfd_signal
+  extcon_get_edev_by_phandle
+  extcon_get_edev_name
+  extcon_get_extcon_dev
+  extcon_get_property
+  extcon_get_state
+  extcon_register_notifier
+  extcon_set_property
+  extcon_set_property_capability
+  extcon_set_state
+  extcon_set_state_sync
+  extcon_unregister_notifier
+  fasync_helper
+  fd_install
+  fget
+  file_ra_state_init
+  file_write_and_wait_range
+  filp_close
+  find_extend_vma
+  find_get_pid
+  find_pid_ns
+  find_task_by_vpid
+  find_vma
+  find_vma_intersection
+  find_vpid
+  finish_wait
+  firmware_request_nowarn
+  fixed_size_llseek
+  flow_block_cb_setup_simple
+  flow_keys_basic_dissector
+  flow_rule_match_basic
+  flow_rule_match_ipv4_addrs
+  flow_rule_match_ports
+  flow_rule_match_vlan
+  flush_dcache_page
+  flush_delayed_fput
+  flush_delayed_work
+  flush_work
+  folio_wait_bit
+  for_each_kernel_tracepoint
+  fortify_panic
+  fput
+  fqdir_exit
+  fqdir_init
+  frame_vector_create
+  frame_vector_destroy
+  frame_vector_to_pages
+  free_candev
+  free_io_pgtable_ops
+  free_irq
+  free_netdev
+  free_pages
+  free_pages_exact
+  free_percpu
+  free_percpu_irq
+  freezer_active
+  freezing_slow_path
+  freq_qos_add_notifier
+  freq_qos_add_request
+  freq_qos_remove_notifier
+  freq_qos_remove_request
+  freq_qos_update_request
+  fs_bio_set
+  fsync_bdev
+  ftrace_dump
+  full_name_hash
+  fwnode_find_reference
+  fwnode_get_name
+  fwnode_get_named_child_node
+  fwnode_get_next_child_node
+  fwnode_gpiod_get_index
+  fwnode_handle_get
+  fwnode_handle_put
+  fwnode_property_present
+  fwnode_property_read_string
+  fwnode_property_read_u32_array
+  fwnode_property_read_u8_array
+  fwnode_usb_role_switch_get
+  gcd
+  gen_pool_add_owner
+  gen_pool_alloc_algo_owner
+  gen_pool_avail
+  gen_pool_best_fit
+  gen_pool_create
+  gen_pool_destroy
+  gen_pool_dma_alloc_align
+  gen_pool_dma_zalloc_align
+  gen_pool_first_fit_align
+  gen_pool_first_fit_order_align
+  gen_pool_free_owner
+  gen_pool_has_addr
+  gen_pool_set_algo
+  gen_pool_size
+  gen_pool_virt_to_phys
+  generic_device_group
+  generic_file_llseek
+  generic_file_read_iter
+  generic_handle_domain_irq
+  generic_handle_irq
+  generic_mii_ioctl
+  generic_perform_write
+  generic_shutdown_super
+  generic_write_checks
+  geni_icc_disable
+  geni_icc_enable
+  geni_icc_get
+  geni_icc_set_bw
+  geni_se_clk_freq_match
+  geni_se_config_packing
+  geni_se_get_qup_hw_version
+  geni_se_init
+  geni_se_resources_off
+  geni_se_resources_on
+  geni_se_rx_dma_prep
+  geni_se_rx_dma_unprep
+  geni_se_select_mode
+  geni_se_tx_dma_prep
+  geni_se_tx_dma_unprep
+  genl_notify
+  genl_register_family
+  genl_unregister_family
+  genlmsg_multicast_allns
+  genlmsg_put
+  genphy_read_abilities
+  genphy_read_lpa
+  genphy_read_mmd_unsupported
+  genphy_read_status
+  genphy_restart_aneg
+  genphy_resume
+  genphy_soft_reset
+  genphy_suspend
+  genphy_update_link
+  genphy_write_mmd_unsupported
+  get_completed_synchronize_rcu
+  get_cpu_device
+  get_cpu_idle_time
+  get_cpu_idle_time_us
+  get_cpu_iowait_time_us
+  get_device
+  get_device_system_crosststamp
+  get_each_object_track
+  get_governor_parent_kobj
+  get_net_ns_by_fd
+  get_net_ns_by_pid
+  get_option
+  get_options
+  get_page_owner_handle
+  get_pfnblock_flags_mask
+  get_pid_task
+  get_random_bytes
+  get_random_u16
+  get_random_u32
+  get_random_u64
+  get_random_u8
+  get_sg_io_hdr
+  get_slabinfo
+  get_state_synchronize_rcu
+  get_state_synchronize_srcu
+  get_task_mm
+  get_task_pid
+  get_thermal_instance
+  get_unmapped_area
+  get_unused_fd_flags
+  get_user_ifreq
+  get_user_pages
+  get_user_pages_fast
+  get_vaddr_frames
+  get_zeroed_page
+  getboottime64
+  gh_rm_call
+  gh_rm_notifier_register
+  gh_rm_notifier_unregister
+  gic_nonsecure_priorities
+  glob_match
+  gov_attr_set_get
+  gov_attr_set_init
+  gov_attr_set_put
+  gov_update_cpu_data
+  governor_sysfs_ops
+  gpio_free
+  gpio_free_array
+  gpio_request
+  gpio_request_array
+  gpio_request_one
+  gpio_to_desc
+  gpiochip_add_data_with_key
+  gpiochip_add_pin_range
+  gpiochip_disable_irq
+  gpiochip_enable_irq
+  gpiochip_find
+  gpiochip_generic_config
+  gpiochip_generic_free
+  gpiochip_generic_request
+  gpiochip_get_data
+  gpiochip_irq_relres
+  gpiochip_irq_reqres
+  gpiochip_line_is_valid
+  gpiochip_lock_as_irq
+  gpiochip_populate_parent_fwspec_fourcell
+  gpiochip_remove
+  gpiochip_unlock_as_irq
+  gpiod_cansleep
+  gpiod_count
+  gpiod_direction_input
+  gpiod_direction_output
+  gpiod_direction_output_raw
+  gpiod_get
+  gpiod_get_optional
+  gpiod_get_raw_value
+  gpiod_get_raw_value_cansleep
+  gpiod_get_value
+  gpiod_get_value_cansleep
+  gpiod_is_active_low
+  gpiod_put
+  gpiod_set_consumer_name
+  gpiod_set_debounce
+  gpiod_set_raw_value
+  gpiod_set_raw_value_cansleep
+  gpiod_set_value
+  gpiod_set_value_cansleep
+  gpiod_to_chip
+  gpiod_to_irq
+  gre_add_protocol
+  gre_del_protocol
+  gro_cells_destroy
+  gro_cells_init
+  gro_cells_receive
+  gs_alloc_req
+  gs_free_req
+  gserial_alloc_line
+  gserial_connect
+  gserial_disconnect
+  gserial_free_line
+  gserial_resume
+  gserial_suspend
+  guid_gen
+  h4_recv_buf
+  handle_bad_irq
+  handle_edge_irq
+  handle_fasteoi_ack_irq
+  handle_fasteoi_irq
+  handle_level_irq
+  handle_nested_irq
+  handle_simple_irq
+  handle_sysrq
+  hashlen_string
+  have_governor_per_policy
+  hci_alloc_dev_priv
+  hci_cmd_sync
+  hci_cmd_sync_cancel
+  hci_cmd_sync_queue
+  hci_conn_check_secure
+  hci_conn_security
+  hci_conn_switch_role
+  hci_free_dev
+  hci_get_route
+  hci_mgmt_chan_register
+  hci_mgmt_chan_unregister
+  hci_recv_diag
+  hci_recv_frame
+  hci_register_cb
+  hci_register_dev
+  hci_release_dev
+  hci_reset_dev
+  hci_resume_dev
+  hci_set_fw_info
+  hci_set_hw_info
+  hci_suspend_dev
+  hci_uart_register_device
+  hci_uart_tx_wakeup
+  hci_uart_unregister_device
+  hci_unregister_cb
+  hci_unregister_dev
+  hdmi_audio_infoframe_init
+  hdmi_audio_infoframe_pack
+  hdmi_infoframe_pack
+  hex2bin
+  hex_asc_upper
+  hex_dump_to_buffer
+  hex_to_bin
+  hid_add_device
+  hid_allocate_device
+  hid_destroy_device
+  hid_ignore
+  hid_input_report
+  hid_parse_report
+  hidp_hid_driver
+  housekeeping_cpumask
+  housekeeping_overridden
+  housekeeping_test_cpu
+  hrtimer_active
+  hrtimer_cancel
+  hrtimer_forward
+  hrtimer_init
+  hrtimer_init_sleeper
+  hrtimer_sleeper_start_expires
+  hrtimer_start_range_ns
+  hrtimer_try_to_cancel
+  hvc_alloc
+  hvc_instantiate
+  hvc_kick
+  hvc_poll
+  hvc_remove
+  hwrng_register
+  hwrng_unregister
+  hwspin_lock_free
+  hwspin_lock_request_specific
+  hypervisor_kobj
+  i2c_adapter_type
+  i2c_add_adapter
+  i2c_add_numbered_adapter
+  i2c_bit_add_numbered_bus
+  i2c_bus_type
+  i2c_client_type
+  i2c_del_adapter
+  i2c_del_driver
+  i2c_for_each_dev
+  i2c_generic_scl_recovery
+  i2c_get_adapter
+  i2c_get_device_id
+  i2c_get_dma_safe_msg_buf
+  i2c_match_id
+  i2c_new_ancillary_device
+  i2c_new_client_device
+  i2c_new_dummy_device
+  i2c_new_scanned_device
+  i2c_parse_fw_timings
+  i2c_put_adapter
+  i2c_put_dma_safe_msg_buf
+  i2c_recover_bus
+  i2c_register_driver
+  i2c_smbus_read_byte
+  i2c_smbus_read_byte_data
+  i2c_smbus_read_i2c_block_data
+  i2c_smbus_read_word_data
+  i2c_smbus_write_byte
+  i2c_smbus_write_byte_data
+  i2c_smbus_write_i2c_block_data
+  i2c_smbus_write_word_data
+  i2c_smbus_xfer
+  i2c_transfer
+  i2c_transfer_buffer_flags
+  i2c_unregister_device
+  i2c_verify_adapter
+  i2c_verify_client
+  i3c_device_do_priv_xfers
+  i3c_driver_register_with_owner
+  i3c_driver_unregister
+  i3c_generic_ibi_alloc_pool
+  i3c_generic_ibi_free_pool
+  i3c_generic_ibi_get_free_slot
+  i3c_generic_ibi_recycle_slot
+  i3c_master_add_i3c_dev_locked
+  i3c_master_disec_locked
+  i3c_master_do_daa
+  i3c_master_enec_locked
+  i3c_master_entdaa_locked
+  i3c_master_get_free_addr
+  i3c_master_queue_ibi
+  i3c_master_register
+  i3c_master_set_info
+  i3c_master_unregister
+  icc_disable
+  icc_enable
+  icc_get
+  icc_link_create
+  icc_node_add
+  icc_node_create
+  icc_nodes_remove
+  icc_provider_add
+  icc_provider_del
+  icc_provider_deregister
+  icc_provider_init
+  icc_provider_register
+  icc_put
+  icc_set_bw
+  icc_set_tag
+  icc_std_aggregate
+  icc_sync_state
+  ida_alloc_range
+  ida_destroy
+  ida_free
+  idr_alloc
+  idr_alloc_cyclic
+  idr_alloc_u32
+  idr_destroy
+  idr_find
+  idr_for_each
+  idr_get_next
+  idr_get_next_ul
+  idr_preload
+  idr_remove
+  idr_replace
+  ieee802154_alloc_hw
+  ieee802154_configure_durations
+  ieee802154_free_hw
+  ieee802154_hdr_peek
+  ieee802154_hdr_peek_addrs
+  ieee802154_hdr_pull
+  ieee802154_hdr_push
+  ieee802154_max_payload
+  ieee802154_register_hw
+  ieee802154_rx_irqsafe
+  ieee802154_stop_queue
+  ieee802154_unregister_hw
+  ieee802154_wake_queue
+  ieee802154_xmit_complete
+  ieee802154_xmit_error
+  ieee802154_xmit_hw_error
+  iio_buffer_enabled
+  iio_buffer_init
+  iio_buffer_put
+  iio_channel_get
+  iio_channel_release
+  iio_device_attach_buffer
+  iio_device_claim_direct_mode
+  iio_device_release_direct_mode
+  iio_device_unregister
+  iio_get_channel_type
+  iio_push_event
+  iio_push_to_buffers
+  iio_read_channel_processed
+  iio_write_channel_raw
+  import_iovec
+  in4_pton
+  in6_pton
+  in6addr_any
+  in_aton
+  in_egroup_p
+  inc_node_page_state
+  inc_zone_page_state
+  inet6_csk_xmit
+  inet6_ioctl
+  inet_csk_get_port
+  inet_frag_destroy
+  inet_frag_find
+  inet_frag_kill
+  inet_frag_queue_insert
+  inet_frag_reasm_finish
+  inet_frag_reasm_prepare
+  inet_frags_fini
+  inet_frags_init
+  inet_ioctl
+  init_dummy_netdev
+  init_iova_domain
+  init_net
+  init_on_free
+  init_pid_ns
+  init_pseudo
+  init_srcu_struct
+  init_task
+  init_timer_key
+  init_user_ns
+  init_uts_ns
+  init_wait_entry
+  init_wait_var_entry
+  input_alloc_absinfo
+  input_allocate_device
+  input_close_device
+  input_event
+  input_ff_create
+  input_ff_destroy
+  input_free_device
+  input_mt_assign_slots
+  input_mt_destroy_slots
+  input_mt_drop_unused
+  input_mt_init_slots
+  input_mt_report_finger_count
+  input_mt_report_pointer_emulation
+  input_mt_report_slot_state
+  input_mt_sync_frame
+  input_open_device
+  input_register_device
+  input_register_handle
+  input_register_handler
+  input_set_abs_params
+  input_set_capability
+  input_set_timestamp
+  input_unregister_device
+  input_unregister_handle
+  input_unregister_handler
+  insert_resource
+  int_sqrt
+  interval_tree_insert
+  interval_tree_iter_first
+  interval_tree_iter_next
+  interval_tree_remove
+  invalidate_mapping_pages
+  io_schedule_timeout
+  iomem_resource
+  iommu_alloc_resv_region
+  iommu_attach_device
+  iommu_attach_group
+  iommu_detach_device
+  iommu_device_register
+  iommu_device_sysfs_add
+  iommu_device_sysfs_remove
+  iommu_device_unlink
+  iommu_device_unregister
+  iommu_dma_get_resv_regions
+  iommu_domain_alloc
+  iommu_domain_free
+  iommu_fwspec_add_ids
+  iommu_fwspec_free
+  iommu_get_domain_for_dev
+  iommu_get_msi_cookie
+  iommu_group_alloc
+  iommu_group_for_each_dev
+  iommu_group_get
+  iommu_group_get_iommudata
+  iommu_group_put
+  iommu_group_ref_get
+  iommu_group_set_iommudata
+  iommu_group_set_name
+  iommu_iova_to_phys
+  iommu_map
+  iommu_map_sg
+  iommu_present
+  iommu_put_resv_regions
+  iommu_register_device_fault_handler
+  iommu_report_device_fault
+  iommu_set_fault_handler
+  iommu_set_pgtable_quirks
+  iommu_unmap
+  iommu_unregister_device_fault_handler
+  ioremap_prot
+  iounmap
+  iov_iter_init
+  iov_iter_kvec
+  iov_iter_revert
+  ip6_dst_hoplimit
+  ip6_local_out
+  ip6_route_me_harder
+  ip_compute_csum
+  ip_local_out
+  ip_mc_join_group
+  ip_queue_xmit
+  ip_route_me_harder
+  ip_route_output_flow
+  ip_send_check
+  ipi_desc_get
+  iput
+  ipv6_dev_find
+  ipv6_ext_hdr
+  ipv6_find_hdr
+  ipv6_skip_exthdr
+  ipv6_stub
+  irq_check_status_bit
+  irq_chip_ack_parent
+  irq_chip_disable_parent
+  irq_chip_enable_parent
+  irq_chip_eoi_parent
+  irq_chip_get_parent_state
+  irq_chip_mask_parent
+  irq_chip_retrigger_hierarchy
+  irq_chip_set_affinity_parent
+  irq_chip_set_parent_state
+  irq_chip_set_type_parent
+  irq_chip_set_vcpu_affinity_parent
+  irq_chip_set_wake_parent
+  irq_chip_unmask_parent
+  irq_create_fwspec_mapping
+  irq_create_mapping_affinity
+  irq_create_of_mapping
+  irq_dispose_mapping
+  irq_do_set_affinity
+  irq_domain_alloc_irqs_parent
+  irq_domain_create_hierarchy
+  irq_domain_disconnect_hierarchy
+  irq_domain_free_irqs_common
+  irq_domain_free_irqs_parent
+  irq_domain_get_irq_data
+  irq_domain_remove
+  irq_domain_set_hwirq_and_chip
+  irq_domain_set_info
+  irq_domain_simple_ops
+  irq_domain_translate_twocell
+  irq_domain_update_bus_token
+  irq_domain_xlate_onecell
+  irq_domain_xlate_twocell
+  irq_find_matching_fwspec
+  irq_get_irq_data
+  irq_get_irqchip_state
+  irq_modify_status
+  irq_of_parse_and_map
+  irq_set_affinity
+  irq_set_affinity_notifier
+  irq_set_chained_handler_and_data
+  irq_set_chip_and_handler_name
+  irq_set_chip_data
+  irq_set_handler_data
+  irq_set_irq_type
+  irq_set_irq_wake
+  irq_set_irqchip_state
+  irq_set_parent
+  irq_to_desc
+  irq_work_queue
+  irq_work_queue_on
+  irq_work_sync
+  is_virtio_device
+  is_vmalloc_addr
+  isolate_and_split_free_page
+  isolate_anon_lru_page
+  iterate_fd
+  jiffies
+  jiffies64_to_msecs
+  jiffies_64
+  jiffies_64_to_clock_t
+  jiffies_to_msecs
+  jiffies_to_usecs
+  kasan_flag_enabled
+  kasprintf
+  kern_mount
+  kern_unmount
+  kernel_accept
+  kernel_bind
+  kernel_connect
+  kernel_cpustat
+  kernel_getsockname
+  kernel_kobj
+  kernel_listen
+  kernel_param_lock
+  kernel_param_unlock
+  kernel_power_off
+  kernel_recvmsg
+  kernel_restart
+  kernel_sendmsg
+  kernel_sock_shutdown
+  kernfs_find_and_get_ns
+  kernfs_notify
+  kernfs_put
+  key_create_or_update
+  key_put
+  keyring_alloc
+  kfree
+  kfree_const
+  kfree_sensitive
+  kfree_skb_list_reason
+  kfree_skb_partial
+  kfree_skb_reason
+  kick_all_cpus_sync
+  kill_anon_super
+  kill_fasync
+  kimage_vaddr
+  kimage_voffset
+  kmalloc_caches
+  kmalloc_large
+  kmalloc_node_trace
+  kmalloc_trace
+  kmem_cache_alloc
+  kmem_cache_create
+  kmem_cache_create_usercopy
+  kmem_cache_destroy
+  kmem_cache_free
+  kmemdup
+  kmemdup_nul
+  kmsg_dump_get_buffer
+  kmsg_dump_get_line
+  kmsg_dump_register
+  kmsg_dump_rewind
+  kmsg_dump_unregister
+  kobj_sysfs_ops
+  kobject_add
+  kobject_create_and_add
+  kobject_del
+  kobject_get
+  kobject_get_path
+  kobject_init
+  kobject_init_and_add
+  kobject_put
+  kobject_set_name
+  kobject_uevent
+  kobject_uevent_env
+  krealloc
+  kset_create_and_add
+  kset_find_obj
+  kset_unregister
+  ksize
+  ksoftirqd
+  kstat
+  kstat_irqs_cpu
+  kstat_irqs_usr
+  kstrdup
+  kstrdup_const
+  kstrdup_quotable_cmdline
+  kstrndup
+  kstrtobool
+  kstrtobool_from_user
+  kstrtoint
+  kstrtoint_from_user
+  kstrtol_from_user
+  kstrtoll
+  kstrtos8
+  kstrtos8_from_user
+  kstrtou16
+  kstrtou16_from_user
+  kstrtou8
+  kstrtou8_from_user
+  kstrtouint
+  kstrtouint_from_user
+  kstrtoul_from_user
+  kstrtoull
+  kstrtoull_from_user
+  kthread_bind
+  kthread_bind_mask
+  kthread_cancel_delayed_work_sync
+  kthread_cancel_work_sync
+  kthread_complete_and_exit
+  kthread_create_on_cpu
+  kthread_create_on_node
+  kthread_create_worker
+  kthread_delayed_work_timer_fn
+  kthread_destroy_worker
+  kthread_flush_work
+  kthread_flush_worker
+  kthread_mod_delayed_work
+  kthread_park
+  kthread_parkme
+  kthread_queue_delayed_work
+  kthread_queue_work
+  kthread_should_park
+  kthread_should_stop
+  kthread_stop
+  kthread_unpark
+  kthread_worker_fn
+  ktime_add_safe
+  ktime_get
+  ktime_get_coarse_real_ts64
+  ktime_get_coarse_with_offset
+  ktime_get_mono_fast_ns
+  ktime_get_raw
+  ktime_get_raw_ts64
+  ktime_get_real_seconds
+  ktime_get_real_ts64
+  ktime_get_seconds
+  ktime_get_snapshot
+  ktime_get_ts64
+  ktime_get_with_offset
+  kunit_binary_assert_format
+  kunit_do_failed_assertion
+  kunit_kmalloc_array
+  kunit_ptr_not_err_assert_format
+  kvasprintf_const
+  kvfree
+  kvfree_call_rcu
+  kvmalloc_node
+  l2cap_add_psm
+  l2cap_chan_close
+  l2cap_chan_connect
+  l2cap_chan_create
+  l2cap_chan_del
+  l2cap_chan_list
+  l2cap_chan_put
+  l2cap_chan_send
+  l2cap_chan_set_defaults
+  l2cap_conn_get
+  l2cap_conn_put
+  l2cap_is_socket
+  l2cap_register_user
+  l2cap_unregister_user
+  l2tp_recv_common
+  l2tp_session_create
+  l2tp_session_dec_refcount
+  l2tp_session_delete
+  l2tp_session_get
+  l2tp_session_get_by_ifname
+  l2tp_session_get_nth
+  l2tp_session_inc_refcount
+  l2tp_session_register
+  l2tp_session_set_header_len
+  l2tp_sk_to_tunnel
+  l2tp_tunnel_create
+  l2tp_tunnel_dec_refcount
+  l2tp_tunnel_delete
+  l2tp_tunnel_get
+  l2tp_tunnel_get_nth
+  l2tp_tunnel_get_session
+  l2tp_tunnel_inc_refcount
+  l2tp_tunnel_register
+  l2tp_udp_encap_recv
+  l2tp_xmit_skb
+  led_classdev_flash_register_ext
+  led_classdev_flash_unregister
+  led_classdev_register_ext
+  led_classdev_unregister
+  led_mc_calc_color_components
+  led_trigger_event
+  led_trigger_register
+  led_trigger_register_simple
+  led_trigger_unregister
+  led_trigger_unregister_simple
+  linkwatch_fire_event
+  list_sort
+  llist_add_batch
+  llist_reverse_order
+  lock_sock_nested
+  lockref_get
+  log_abnormal_wakeup_reason
+  log_post_read_mmio
+  log_post_write_mmio
+  log_read_mmio
+  log_threaded_irq_wakeup_reason
+  log_write_mmio
+  logfc
+  lookup_bdev
+  loops_per_jiffy
+  lowpan_header_compress
+  lowpan_header_decompress
+  lowpan_nhc_add
+  lowpan_nhc_del
+  lowpan_register_netdev
+  lowpan_register_netdevice
+  lowpan_unregister_netdev
+  lowpan_unregister_netdevice
+  mac_pton
+  mas_empty_area_rev
+  mas_find
+  match_string
+  mbox_chan_received_data
+  mbox_chan_txdone
+  mbox_client_txdone
+  mbox_controller_register
+  mbox_controller_unregister
+  mbox_free_channel
+  mbox_request_channel
+  mbox_send_message
+  mdio_device_create
+  mdio_device_free
+  mdiobus_alloc_size
+  mdiobus_free
+  mdiobus_get_phy
+  mdiobus_modify_changed
+  mdiobus_read
+  mdiobus_unregister
+  mdiobus_write
+  media_device_cleanup
+  media_device_init
+  media_device_unregister
+  media_entity_pads_init
+  mem_dump_obj
+  mem_section
+  memblock_end_of_DRAM
+  memblock_free
+  memchr
+  memchr_inv
+  memcmp
+  memcpy
+  memcpy_and_pad
+  memdup_user
+  memdup_user_nul
+  memmove
+  memory_block_size_bytes
+  memory_cgrp_subsys
+  memory_cgrp_subsys_enabled_key
+  memory_read_from_buffer
+  memparse
+  mempool_alloc
+  mempool_alloc_pages
+  mempool_alloc_slab
+  mempool_create
+  mempool_destroy
+  mempool_free
+  mempool_free_pages
+  mempool_free_slab
+  mempool_resize
+  memremap
+  memremap_pages
+  memscan
+  memset
+  memset64
+  memstart_addr
+  memunmap
+  memunmap_pages
+  mfd_add_devices
+  mfd_remove_devices
+  migrate_pages
+  migrate_swap
+  mii_check_media
+  mii_ethtool_gset
+  mii_nway_restart
+  mipi_dsi_attach
+  mipi_dsi_compression_mode
+  mipi_dsi_create_packet
+  mipi_dsi_dcs_read
+  mipi_dsi_dcs_set_column_address
+  mipi_dsi_dcs_set_display_brightness
+  mipi_dsi_dcs_set_page_address
+  mipi_dsi_dcs_set_tear_off
+  mipi_dsi_dcs_write_buffer
+  mipi_dsi_detach
+  mipi_dsi_device_register_full
+  mipi_dsi_driver_register_full
+  mipi_dsi_driver_unregister
+  mipi_dsi_generic_write
+  mipi_dsi_host_register
+  mipi_dsi_host_unregister
+  mipi_dsi_packet_format_is_long
+  mipi_dsi_picture_parameter_set
+  misc_deregister
+  misc_register
+  mmc_add_host
+  mmc_alloc_host
+  mmc_cqe_request_done
+  mmc_free_host
+  mmc_gpio_get_cd
+  mmc_gpio_get_ro
+  mmc_gpiod_request_cd
+  mmc_gpiod_request_ro
+  mmc_of_parse
+  mmc_regulator_get_supply
+  mmc_regulator_set_ocr
+  mmc_regulator_set_vqmmc
+  mmc_remove_host
+  mmc_request_done
+  mmc_send_tuning
+  mmc_wait_for_cmd
+  mmput
+  mod_delayed_work_on
+  mod_node_page_state
+  mod_timer
+  module_put
+  msi_first_desc
+  msi_get_virq
+  msi_next_desc
+  msleep
+  msleep_interruptible
+  mtree_load
+  mutex_is_locked
+  mutex_lock
+  mutex_lock_interruptible
+  mutex_trylock
+  mutex_unlock
+  n_tty_ioctl_helper
+  name_to_dev_t
+  napi_complete_done
+  napi_consume_skb
+  napi_disable
+  napi_enable
+  napi_gro_flush
+  napi_gro_receive
+  napi_schedule_prep
+  nd_tbl
+  neigh_destroy
+  neigh_lookup
+  neigh_resolve_output
+  net_namespace_list
+  net_ns_type_operations
+  net_ratelimit
+  netdev_alert
+  netdev_change_features
+  netdev_core_stats_alloc
+  netdev_err
+  netdev_increment_features
+  netdev_info
+  netdev_lower_state_changed
+  netdev_master_upper_dev_link
+  netdev_name_in_use
+  netdev_notice
+  netdev_notify_peers
+  netdev_pick_tx
+  netdev_printk
+  netdev_rss_key_fill
+  netdev_rx_handler_register
+  netdev_rx_handler_unregister
+  netdev_set_default_ethtool_ops
+  netdev_state_change
+  netdev_update_features
+  netdev_upper_dev_link
+  netdev_upper_dev_unlink
+  netdev_warn
+  netif_carrier_off
+  netif_carrier_on
+  netif_device_attach
+  netif_device_detach
+  netif_inherit_tso_max
+  netif_napi_add_weight
+  netif_receive_skb
+  netif_receive_skb_list
+  netif_rx
+  netif_schedule_queue
+  netif_set_real_num_rx_queues
+  netif_set_real_num_tx_queues
+  netif_stacked_transfer_operstate
+  netif_tx_lock
+  netif_tx_stop_all_queues
+  netif_tx_unlock
+  netif_tx_wake_queue
+  netlink_broadcast
+  netlink_capable
+  netlink_kernel_release
+  netlink_net_capable
+  netlink_register_notifier
+  netlink_unicast
+  netlink_unregister_notifier
+  nf_conntrack_destroy
+  nf_ct_attach
+  nf_ct_delete
+  nf_register_net_hooks
+  nf_unregister_net_hooks
+  nfc_add_se
+  nfc_alloc_recv_skb
+  nfc_allocate_device
+  nfc_class
+  nfc_dep_link_is_up
+  nfc_driver_failure
+  nfc_find_se
+  nfc_fw_download_done
+  nfc_get_local_general_bytes
+  nfc_proto_register
+  nfc_proto_unregister
+  nfc_register_device
+  nfc_remove_se
+  nfc_se_connectivity
+  nfc_se_transaction
+  nfc_send_to_raw_sock
+  nfc_set_remote_general_bytes
+  nfc_target_lost
+  nfc_targets_found
+  nfc_tm_activated
+  nfc_tm_data_received
+  nfc_tm_deactivated
+  nfc_unregister_device
+  nfc_vendor_cmd_reply
+  nla_find
+  nla_memcpy
+  nla_put
+  nla_put_64bit
+  nla_put_nohdr
+  nla_reserve
+  nla_reserve_64bit
+  nla_strscpy
+  nonseekable_open
+  noop_llseek
+  nr_cpu_ids
+  nr_ipi_get
+  nr_irqs
+  nr_swap_pages
+  ns_capable
+  ns_to_kernel_old_timeval
+  ns_to_timespec64
+  nsec_to_clock_t
+  nsecs_to_jiffies
+  nvdimm_bus_register
+  nvdimm_bus_unregister
+  nvdimm_pmem_region_create
+  nvmem_cell_get
+  nvmem_cell_put
+  nvmem_cell_read
+  nvmem_cell_read_u32
+  nvmem_cell_read_variable_le_u32
+  nvmem_cell_write
+  nvmem_device_put
+  nvmem_device_read
+  nvmem_device_write
+  nvmem_register
+  nvmem_unregister
+  of_address_to_resource
+  of_alias_get_id
+  of_can_transceiver
+  of_clk_add_hw_provider
+  of_clk_add_provider
+  of_clk_del_provider
+  of_clk_get
+  of_clk_get_by_name
+  of_clk_get_from_provider
+  of_clk_get_parent_name
+  of_clk_hw_onecell_get
+  of_clk_hw_simple_get
+  of_clk_set_defaults
+  of_clk_src_onecell_get
+  of_clk_src_simple_get
+  of_count_phandle_with_args
+  of_cpu_node_to_id
+  of_css
+  of_devfreq_cooling_register
+  of_device_get_match_data
+  of_device_is_available
+  of_device_is_compatible
+  of_device_modalias
+  of_device_request_module
+  of_device_uevent_modalias
+  of_dma_configure_id
+  of_dma_controller_free
+  of_dma_controller_register
+  of_dma_is_coherent
+  of_drm_find_bridge
+  of_drm_find_panel
+  of_find_backlight_by_node
+  of_find_compatible_node
+  of_find_device_by_node
+  of_find_i2c_adapter_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_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_onecell
+  of_genpd_add_provider_simple
+  of_genpd_del_provider
+  of_get_child_by_name
+  of_get_compatible_child
+  of_get_cpu_node
+  of_get_i2c_adapter_by_node
+  of_get_mac_address
+  of_get_named_gpio_flags
+  of_get_next_available_child
+  of_get_next_child
+  of_get_next_parent
+  of_get_parent
+  of_get_property
+  of_get_regulator_init_data
+  of_get_required_opp_performance_state
+  of_graph_get_endpoint_by_regs
+  of_graph_get_next_endpoint
+  of_graph_get_port_parent
+  of_graph_get_remote_endpoint
+  of_graph_get_remote_node
+  of_graph_get_remote_port_parent
+  of_graph_is_present
+  of_graph_parse_endpoint
+  of_hwspin_lock_get_id
+  of_icc_get
+  of_icc_get_from_provider
+  of_icc_xlate_onecell
+  of_iomap
+  of_irq_find_parent
+  of_irq_get
+  of_irq_get_byname
+  of_irq_parse_one
+  of_irq_to_resource
+  of_machine_is_compatible
+  of_match_device
+  of_match_node
+  of_modalias_node
+  of_n_addr_cells
+  of_n_size_cells
+  of_node_name_eq
+  of_nvmem_device_get
+  of_phandle_iterator_init
+  of_phandle_iterator_next
+  of_phy_is_fixed_link
+  of_phy_simple_xlate
+  of_platform_depopulate
+  of_platform_device_create
+  of_platform_device_destroy
+  of_platform_populate
+  of_pm_clk_add_clks
+  of_prop_next_string
+  of_prop_next_u32
+  of_property_count_elems_of_size
+  of_property_match_string
+  of_property_read_string
+  of_property_read_string_helper
+  of_property_read_u32_index
+  of_property_read_u64
+  of_property_read_u64_index
+  of_property_read_variable_u16_array
+  of_property_read_variable_u32_array
+  of_property_read_variable_u64_array
+  of_property_read_variable_u8_array
+  of_reserved_mem_device_init_by_idx
+  of_reserved_mem_device_release
+  of_reserved_mem_lookup
+  of_root
+  of_thermal_get_ntrips
+  of_thermal_get_trip_points
+  of_thermal_is_trip_valid
+  of_translate_address
+  of_usb_host_tpl_support
+  offline_and_remove_memory
+  on_each_cpu_cond_mask
+  oops_in_progress
+  open_candev
+  out_of_line_wait_on_bit
+  out_of_line_wait_on_bit_timeout
+  overflowuid
+  page_endio
+  page_ext_get
+  page_ext_put
+  page_frag_alloc_align
+  page_frag_free
+  page_is_ram
+  page_mapping
+  page_pool_alloc_pages
+  page_pool_create
+  page_pool_destroy
+  page_pool_put_defragged_page
+  page_pool_release_page
+  page_relinquish
+  page_reporting_register
+  page_reporting_unregister
+  panic
+  panic_notifier_list
+  panic_timeout
+  param_array_ops
+  param_get_int
+  param_get_string
+  param_get_uint
+  param_get_ullong
+  param_ops_bool
+  param_ops_byte
+  param_ops_charp
+  param_ops_int
+  param_ops_long
+  param_ops_string
+  param_ops_uint
+  param_ops_ullong
+  param_ops_ulong
+  param_set_bool
+  param_set_copystring
+  param_set_int
+  param_set_uint
+  passthru_features_check
+  pci_aer_clear_nonfatal_status
+  pci_alloc_irq_vectors_affinity
+  pci_assign_resource
+  pci_bus_type
+  pci_clear_master
+  pci_dev_get
+  pci_dev_present
+  pci_dev_put
+  pci_device_group
+  pci_device_is_present
+  pci_disable_device
+  pci_disable_link_state
+  pci_disable_msi
+  pci_disable_sriov
+  pci_enable_device
+  pci_enable_msi
+  pci_enable_pcie_error_reporting
+  pci_enable_sriov
+  pci_enable_wake
+  pci_find_bus
+  pci_find_capability
+  pci_find_ext_capability
+  pci_find_next_capability
+  pci_free_irq_vectors
+  pci_get_device
+  pci_get_domain_bus_and_slot
+  pci_get_slot
+  pci_host_probe
+  pci_iomap
+  pci_iomap_range
+  pci_iounmap
+  pci_irq_get_affinity
+  pci_irq_vector
+  pci_load_and_free_saved_state
+  pci_load_saved_state
+  pci_match_id
+  pci_msi_create_irq_domain
+  pci_msi_mask_irq
+  pci_msi_unmask_irq
+  pci_read_config_byte
+  pci_read_config_dword
+  pci_read_config_word
+  pci_release_region
+  pci_release_regions
+  pci_release_selected_regions
+  pci_request_region
+  pci_request_selected_regions
+  pci_rescan_bus
+  pci_restore_msi_state
+  pci_restore_state
+  pci_save_state
+  pci_set_master
+  pci_set_power_state
+  pci_store_saved_state
+  pci_unregister_driver
+  pci_vfs_assigned
+  pci_wake_from_d3
+  pci_walk_bus
+  pci_write_config_dword
+  pci_write_config_word
+  pcie_capability_clear_and_set_word
+  pcie_capability_read_word
+  pcie_capability_write_word
+  pcpu_nr_pages
+  per_cpu_ptr_to_phys
+  percpu_down_write
+  percpu_free_rwsem
+  percpu_up_write
+  perf_aux_output_begin
+  perf_aux_output_end
+  perf_aux_output_flag
+  perf_event_addr_filters_sync
+  perf_event_create_kernel_counter
+  perf_event_disable
+  perf_event_enable
+  perf_event_pause
+  perf_event_read_local
+  perf_event_read_value
+  perf_event_release_kernel
+  perf_event_update_userpage
+  perf_get_aux
+  perf_pmu_migrate_context
+  perf_pmu_register
+  perf_pmu_unregister
+  perf_trace_buf_alloc
+  perf_trace_run_bpf_submit
+  pfn_is_map_memory
+  phy_attached_info
+  phy_calibrate
+  phy_configure
+  phy_drivers_register
+  phy_drivers_unregister
+  phy_error
+  phy_ethtool_get_wol
+  phy_ethtool_set_wol
+  phy_exit
+  phy_init
+  phy_init_eee
+  phy_init_hw
+  phy_mac_interrupt
+  phy_modify
+  phy_modify_mmd
+  phy_power_off
+  phy_power_on
+  phy_read_mmd
+  phy_resolve_aneg_linkmode
+  phy_set_mode_ext
+  phy_start_aneg
+  phy_trigger_machine
+  phy_write_mmd
+  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_fwnode_phy_connect
+  phylink_generic_validate
+  phylink_get_eee_err
+  phylink_mac_change
+  phylink_mii_c22_pcs_decode_state
+  phylink_mii_c22_pcs_encode_advertisement
+  phylink_mii_ioctl
+  phylink_of_phy_connect
+  phylink_resume
+  phylink_set_port_modes
+  phylink_speed_down
+  phylink_speed_up
+  phylink_start
+  phylink_stop
+  phylink_suspend
+  pick_highest_pushable_task
+  pick_migrate_task
+  pid_nr_ns
+  pid_task
+  pin_get_name
+  pin_user_pages
+  pin_user_pages_fast
+  pin_user_pages_remote
+  pinconf_generic_dt_free_map
+  pinconf_generic_dt_node_to_map
+  pinctrl_add_gpio_range
+  pinctrl_dev_get_drvdata
+  pinctrl_enable
+  pinctrl_force_default
+  pinctrl_force_sleep
+  pinctrl_generic_add_group
+  pinctrl_generic_get_group_count
+  pinctrl_generic_get_group_name
+  pinctrl_generic_get_group_pins
+  pinctrl_generic_remove_group
+  pinctrl_get
+  pinctrl_lookup_state
+  pinctrl_pm_select_default_state
+  pinctrl_pm_select_idle_state
+  pinctrl_pm_select_sleep_state
+  pinctrl_put
+  pinctrl_remove_gpio_range
+  pinctrl_select_default_state
+  pinctrl_select_state
+  pinctrl_utils_free_map
+  pipe_lock
+  pipe_unlock
+  pktgen_xfrm_outer_mode_output
+  platform_bus
+  platform_bus_type
+  platform_device_add
+  platform_device_add_data
+  platform_device_add_resources
+  platform_device_alloc
+  platform_device_del
+  platform_device_put
+  platform_device_register
+  platform_device_register_full
+  platform_device_unregister
+  platform_driver_unregister
+  platform_find_device_by_driver
+  platform_get_irq
+  platform_get_irq_byname
+  platform_get_irq_byname_optional
+  platform_get_irq_optional
+  platform_get_resource
+  platform_get_resource_byname
+  platform_irq_count
+  platform_irqchip_probe
+  platform_msi_domain_alloc_irqs
+  platform_msi_domain_free_irqs
+  pm_clk_add
+  pm_clk_create
+  pm_clk_destroy
+  pm_clk_resume
+  pm_clk_suspend
+  pm_generic_resume
+  pm_generic_runtime_resume
+  pm_generic_runtime_suspend
+  pm_generic_suspend
+  pm_genpd_add_subdomain
+  pm_genpd_init
+  pm_genpd_remove
+  pm_genpd_remove_subdomain
+  pm_get_active_wakeup_sources
+  pm_power_off
+  pm_relax
+  pm_runtime_allow
+  pm_runtime_autosuspend_expiration
+  pm_runtime_barrier
+  pm_runtime_enable
+  pm_runtime_forbid
+  pm_runtime_force_resume
+  pm_runtime_force_suspend
+  pm_runtime_get_if_active
+  pm_runtime_irq_safe
+  pm_runtime_no_callbacks
+  pm_runtime_set_autosuspend_delay
+  pm_stay_awake
+  pm_system_wakeup
+  pm_wakeup_dev_event
+  pm_wakeup_ws_event
+  policy_has_boost_freq
+  poll_state_synchronize_rcu
+  poll_state_synchronize_srcu
+  power_supply_changed
+  power_supply_get_by_name
+  power_supply_get_by_phandle_array
+  power_supply_get_drvdata
+  power_supply_get_property
+  power_supply_put
+  power_supply_reg_notifier
+  power_supply_register
+  power_supply_set_property
+  power_supply_unreg_notifier
+  power_supply_unregister
+  ppp_channel_index
+  ppp_dev_name
+  ppp_input
+  ppp_input_error
+  ppp_output_wakeup
+  ppp_register_channel
+  ppp_register_compressor
+  ppp_register_net_channel
+  ppp_unit_number
+  ppp_unregister_channel
+  ppp_unregister_compressor
+  pppox_compat_ioctl
+  pppox_ioctl
+  pppox_unbind_sock
+  pps_event
+  pps_register_source
+  pps_unregister_source
+  preempt_schedule
+  preempt_schedule_notrace
+  prepare_to_wait
+  prepare_to_wait_event
+  print_hex_dump
+  proc_create
+  proc_create_data
+  proc_create_net_data
+  proc_create_net_single
+  proc_create_seq_private
+  proc_create_single_data
+  proc_dointvec
+  proc_dointvec_jiffies
+  proc_dointvec_minmax
+  proc_dostring
+  proc_douintvec_minmax
+  proc_doulongvec_minmax
+  proc_mkdir
+  proc_mkdir_data
+  proc_remove
+  proc_set_size
+  proc_set_user
+  proc_symlink
+  proto_register
+  proto_unregister
+  ps2_begin_command
+  ps2_cmd_aborted
+  ps2_command
+  ps2_drain
+  ps2_end_command
+  ps2_handle_ack
+  ps2_handle_response
+  ps2_init
+  ps2_sendbyte
+  ps2_sliced_command
+  pskb_expand_head
+  pskb_put
+  pstore_register
+  pstore_unregister
+  ptp_classify_raw
+  ptp_clock_event
+  ptp_clock_index
+  ptp_clock_register
+  ptp_clock_unregister
+  ptp_parse_header
+  put_cmsg
+  put_device
+  put_disk
+  put_iova_domain
+  put_pid
+  put_sg_io_hdr
+  put_unused_fd
+  put_user_ifreq
+  put_vaddr_frames
+  putback_movable_pages
+  pwm_apply_state
+  pwmchip_add
+  pwmchip_remove
+  qca_read_soc_version
+  qca_send_pre_shutdown_cmd
+  qca_set_bdaddr
+  qca_set_bdaddr_rome
+  qca_uart_setup
+  qcom_icc_xlate_extended
+  qcom_smem_state_get
+  qcom_smem_state_put
+  qcom_smem_state_register
+  qcom_smem_state_unregister
+  qcom_smem_state_update_bits
+  queue_delayed_work_on
+  queue_work_on
+  radix_tree_delete
+  radix_tree_insert
+  radix_tree_iter_delete
+  radix_tree_iter_resume
+  radix_tree_lookup
+  radix_tree_next_chunk
+  radix_tree_tagged
+  rational_best_approximation
+  raw_notifier_call_chain
+  raw_notifier_chain_register
+  raw_notifier_chain_unregister
+  raw_spin_rq_lock_nested
+  raw_spin_rq_unlock
+  rb_erase
+  rb_first
+  rb_first_postorder
+  rb_insert_color
+  rb_last
+  rb_next
+  rb_next_postorder
+  rb_prev
+  rb_replace_node
+  rcu_barrier
+  rcu_barrier_tasks
+  rcu_barrier_tasks_trace
+  rcu_bind_current_to_nocb
+  rcu_check_boost_fail
+  rcu_cpu_stall_suppress
+  rcu_cpu_stall_suppress_at_boot
+  rcu_expedite_gp
+  rcu_force_quiescent_state
+  rcu_fwd_progress_check
+  rcu_get_gp_kthreads_prio
+  rcu_get_gp_seq
+  rcu_gp_is_expedited
+  rcu_gp_is_normal
+  rcu_gp_set_torture_wait
+  rcu_inkernel_boot_has_ended
+  rcu_is_watching
+  rcu_jiffies_till_stall_check
+  rcu_nocb_cpu_deoffload
+  rcu_nocb_cpu_offload
+  rcu_read_unlock_trace_special
+  rcu_tasks_trace_qs_blkd
+  rcu_trc_cmpxchg_need_qs
+  rcu_unexpedite_gp
+  rcutorture_get_gp_data
+  rcuwait_wake_up
+  rdev_get_drvdata
+  rdev_get_id
+  read_cache_page
+  reboot_mode
+  rebuild_sched_domains
+  reciprocal_value
+  reclaim_shmem_address_space
+  refcount_dec_and_lock
+  refcount_dec_and_mutex_lock
+  refcount_dec_if_one
+  refcount_dec_not_one
+  refcount_warn_saturate
+  regcache_cache_bypass
+  regcache_cache_only
+  regcache_drop_region
+  regcache_mark_dirty
+  regcache_sync
+  regcache_sync_region
+  register_candev
+  register_chrdev_region
+  register_console
+  register_die_notifier
+  register_ftrace_export
+  register_inet6addr_notifier
+  register_inetaddr_notifier
+  register_kernel_break_hook
+  register_kprobe
+  register_kretprobe
+  register_memory_notifier
+  register_module_notifier
+  register_net_sysctl
+  register_netdev
+  register_netdevice
+  register_netdevice_notifier
+  register_netevent_notifier
+  register_oom_notifier
+  register_pernet_device
+  register_pernet_subsys
+  register_pm_notifier
+  register_pppox_proto
+  register_qdisc
+  register_reboot_notifier
+  register_restart_handler
+  register_shrinker
+  register_syscore_ops
+  register_sysctl
+  register_sysctl_table
+  register_tcf_proto_ops
+  register_virtio_device
+  register_virtio_driver
+  register_vmap_purge_notifier
+  regmap_async_complete
+  regmap_bulk_read
+  regmap_bulk_write
+  regmap_check_range_table
+  regmap_exit
+  regmap_field_read
+  regmap_field_update_bits_base
+  regmap_get_device
+  regmap_get_val_bytes
+  regmap_irq_get_virq
+  regmap_irq_set_type_config_simple
+  regmap_mmio_detach_clk
+  regmap_multi_reg_write
+  regmap_multi_reg_write_bypassed
+  regmap_noinc_read
+  regmap_noinc_write
+  regmap_raw_read
+  regmap_raw_write
+  regmap_raw_write_async
+  regmap_read
+  regmap_register_patch
+  regmap_update_bits_base
+  regmap_write
+  regulator_allow_bypass
+  regulator_bulk_disable
+  regulator_bulk_enable
+  regulator_bulk_get
+  regulator_count_voltages
+  regulator_disable
+  regulator_disable_regmap
+  regulator_enable
+  regulator_enable_regmap
+  regulator_force_disable
+  regulator_get
+  regulator_get_current_limit_regmap
+  regulator_get_drvdata
+  regulator_get_linear_step
+  regulator_get_mode
+  regulator_get_optional
+  regulator_get_voltage
+  regulator_get_voltage_rdev
+  regulator_get_voltage_sel_regmap
+  regulator_is_enabled
+  regulator_is_enabled_regmap
+  regulator_is_supported_voltage
+  regulator_list_voltage_linear
+  regulator_list_voltage_linear_range
+  regulator_map_voltage_linear
+  regulator_map_voltage_linear_range
+  regulator_notifier_call_chain
+  regulator_put
+  regulator_register_notifier
+  regulator_set_active_discharge_regmap
+  regulator_set_current_limit
+  regulator_set_current_limit_regmap
+  regulator_set_load
+  regulator_set_mode
+  regulator_set_pull_down_regmap
+  regulator_set_voltage
+  regulator_set_voltage_sel_regmap
+  regulator_unregister
+  regulator_unregister_notifier
+  release_firmware
+  release_sock
+  remap_pfn_range
+  remap_vmalloc_range
+  remove_cpu
+  remove_memory
+  remove_proc_entry
+  remove_proc_subtree
+  remove_resource
+  remove_wait_queue
+  report_iommu_fault
+  request_any_context_irq
+  request_firmware
+  request_firmware_direct
+  request_firmware_into_buf
+  request_firmware_nowait
+  request_threaded_irq
+  resched_curr
+  reservation_ww_class
+  reset_control_acquire
+  reset_control_assert
+  reset_control_bulk_assert
+  reset_control_bulk_deassert
+  reset_control_deassert
+  reset_control_put
+  reset_control_release
+  reset_control_reset
+  return_address
+  rfkill_alloc
+  rfkill_blocked
+  rfkill_destroy
+  rfkill_find_type
+  rfkill_get_led_trigger_name
+  rfkill_init_sw_state
+  rfkill_pause_polling
+  rfkill_register
+  rfkill_resume_polling
+  rfkill_set_hw_state_reason
+  rfkill_set_led_trigger_name
+  rfkill_set_states
+  rfkill_set_sw_state
+  rfkill_soft_blocked
+  rfkill_unregister
+  rhashtable_destroy
+  rhashtable_free_and_destroy
+  rhashtable_init
+  rhashtable_insert_slow
+  rhashtable_walk_enter
+  rhashtable_walk_exit
+  rhashtable_walk_next
+  rhashtable_walk_start_check
+  rhashtable_walk_stop
+  rhltable_init
+  rht_bucket_nested
+  rht_bucket_nested_insert
+  root_task_group
+  round_jiffies
+  round_jiffies_relative
+  round_jiffies_up
+  rpmsg_create_channel
+  rpmsg_create_ept
+  rpmsg_poll
+  rpmsg_register_device
+  rpmsg_register_device_override
+  rpmsg_release_channel
+  rpmsg_send
+  rpmsg_trysend
+  rpmsg_unregister_device
+  rproc_add
+  rproc_add_subdev
+  rproc_alloc
+  rproc_boot
+  rproc_coredump
+  rproc_coredump_add_custom_segment
+  rproc_coredump_add_segment
+  rproc_coredump_cleanup
+  rproc_coredump_set_elf_info
+  rproc_coredump_using_sections
+  rproc_del
+  rproc_elf_get_boot_addr
+  rproc_free
+  rproc_get_by_child
+  rproc_get_by_phandle
+  rproc_put
+  rproc_remove_subdev
+  rproc_report_crash
+  rproc_set_firmware
+  rproc_shutdown
+  rps_needed
+  rt_mutex_lock
+  rt_mutex_trylock
+  rt_mutex_unlock
+  rtc_class_close
+  rtc_class_open
+  rtc_read_alarm
+  rtc_read_time
+  rtc_set_alarm
+  rtc_time64_to_tm
+  rtc_tm_to_time64
+  rtc_update_irq
+  rtc_valid_tm
+  rtnl_is_locked
+  rtnl_link_register
+  rtnl_link_unregister
+  rtnl_lock
+  rtnl_register_module
+  rtnl_trylock
+  rtnl_unicast
+  rtnl_unlock
+  rtnl_unregister
+  rtnl_unregister_all
+  runqueues
+  safe_candev_priv
+  sampling_rate_store
+  sb800_prefetch
+  scatterwalk_ffwd
+  scatterwalk_map_and_copy
+  sched_clock
+  sched_feat_keys
+  sched_feat_names
+  sched_set_fifo
+  sched_set_fifo_low
+  sched_set_normal
+  sched_setattr
+  sched_setattr_nocheck
+  sched_setscheduler
+  sched_setscheduler_nocheck
+  sched_show_task
+  sched_uclamp_used
+  schedule
+  schedule_hrtimeout
+  schedule_timeout
+  schedule_timeout_interruptible
+  schedule_timeout_uninterruptible
+  scmi_driver_register
+  scmi_driver_unregister
+  scmi_protocol_register
+  scmi_protocol_unregister
+  scnprintf
+  scsi_add_host_with_dma
+  scsi_alloc_request
+  scsi_autopm_get_device
+  scsi_autopm_put_device
+  scsi_block_requests
+  scsi_block_when_processing_errors
+  scsi_change_queue_depth
+  scsi_cmd_allowed
+  scsi_command_size_tbl
+  scsi_device_get
+  scsi_device_lookup
+  scsi_device_put
+  scsi_dma_map
+  scsi_dma_unmap
+  scsi_host_alloc
+  scsi_host_lookup
+  scsi_host_put
+  scsi_ioctl
+  scsi_ioctl_block_when_processing_errors
+  scsi_is_host_device
+  scsi_normalize_sense
+  scsi_print_command
+  scsi_register_interface
+  scsi_remove_host
+  scsi_report_bus_reset
+  scsi_scan_host
+  scsi_unblock_requests
+  sdev_prefix_printk
+  sdhci_add_host
+  sdhci_cleanup_host
+  sdhci_cqe_disable
+  sdhci_cqe_enable
+  sdhci_cqe_irq
+  sdhci_enable_clk
+  sdhci_get_property
+  sdhci_pltfm_free
+  sdhci_pltfm_init
+  sdhci_remove_host
+  sdhci_reset
+  sdhci_set_bus_width
+  sdhci_set_power_noreg
+  sdhci_setup_host
+  sdio_claim_host
+  sdio_claim_irq
+  sdio_disable_func
+  sdio_enable_func
+  sdio_memcpy_fromio
+  sdio_memcpy_toio
+  sdio_readb
+  sdio_readsb
+  sdio_register_driver
+  sdio_release_host
+  sdio_release_irq
+  sdio_set_block_size
+  sdio_unregister_driver
+  sdio_writeb
+  sdio_writeb_readb
+  sdio_writesb
+  security_sk_classify_flow
+  security_sk_clone
+  security_sock_graft
+  select_fallback_rq
+  send_sig
+  send_sig_info
+  seq_buf_printf
+  seq_hex_dump
+  seq_hlist_next
+  seq_hlist_start_head
+  seq_lseek
+  seq_open
+  seq_printf
+  seq_putc
+  seq_puts
+  seq_read
+  seq_release
+  seq_release_private
+  seq_vprintf
+  seq_write
+  serdev_device_close
+  serdev_device_get_tiocm
+  serdev_device_open
+  serdev_device_set_baudrate
+  serdev_device_set_flow_control
+  serdev_device_set_tiocm
+  serdev_device_wait_until_sent
+  serdev_device_write_buf
+  serdev_device_write_flush
+  serio_close
+  serio_interrupt
+  serio_open
+  serio_reconnect
+  serio_rescan
+  serio_unregister_child_port
+  serio_unregister_driver
+  serio_unregister_port
+  set_blocksize
+  set_capacity
+  set_capacity_and_notify
+  set_cpus_allowed_ptr
+  set_direct_map_range_uncached
+  set_disk_ro
+  set_freezable
+  set_next_entity
+  set_normalized_timespec64
+  set_page_dirty
+  set_page_dirty_lock
+  set_task_cpu
+  set_user_nice
+  setup_udp_tunnel_sock
+  sg_alloc_table
+  sg_alloc_table_chained
+  sg_alloc_table_from_pages_segment
+  sg_copy_from_buffer
+  sg_copy_to_buffer
+  sg_free_table
+  sg_free_table_chained
+  sg_init_one
+  sg_init_table
+  sg_miter_next
+  sg_miter_skip
+  sg_miter_start
+  sg_miter_stop
+  sg_nents
+  sg_next
+  sget_fc
+  shmem_file_setup
+  shmem_read_mapping_page_gfp
+  shmem_truncate_range
+  show_rcu_gp_kthreads
+  show_rcu_tasks_classic_gp_kthread
+  show_rcu_tasks_trace_gp_kthread
+  show_regs
+  si_mem_available
+  si_meminfo
+  si_swapinfo
+  simple_attr_open
+  simple_attr_read
+  simple_attr_release
+  simple_attr_write
+  simple_open
+  simple_read_from_buffer
+  simple_strtol
+  simple_strtoll
+  simple_strtoul
+  simple_strtoull
+  simple_write_to_buffer
+  single_open
+  single_open_size
+  single_release
+  sk_alloc
+  sk_common_release
+  sk_error_report
+  sk_filter_trim_cap
+  sk_free
+  sk_reset_timer
+  sk_setup_caps
+  sk_stop_timer
+  skb_add_rx_frag
+  skb_append_pagefrags
+  skb_checksum
+  skb_checksum_help
+  skb_clone
+  skb_clone_sk
+  skb_coalesce_rx_frag
+  skb_complete_tx_timestamp
+  skb_complete_wifi_ack
+  skb_copy
+  skb_copy_bits
+  skb_copy_datagram_from_iter
+  skb_copy_datagram_iter
+  skb_copy_expand
+  skb_cow_data
+  skb_dequeue
+  skb_dequeue_tail
+  skb_ensure_writable
+  skb_free_datagram
+  skb_page_frag_refill
+  skb_partial_csum_set
+  skb_pull
+  skb_pull_data
+  skb_pull_rcsum
+  skb_push
+  skb_put
+  skb_queue_head
+  skb_queue_purge
+  skb_queue_tail
+  skb_realloc_headroom
+  skb_recv_datagram
+  skb_scrub_packet
+  skb_set_owner_w
+  skb_store_bits
+  skb_to_sgvec
+  skb_trim
+  skb_try_coalesce
+  skb_tstamp_tx
+  skb_unlink
+  skip_spaces
+  slhc_compress
+  slhc_free
+  slhc_init
+  slhc_remember
+  slhc_toss
+  slhc_uncompress
+  smp_call_function
+  smp_call_function_single
+  smp_call_function_single_async
+  smp_call_on_cpu
+  snd_card_free
+  snd_card_new
+  snd_card_register
+  snd_compr_stop_error
+  snd_ctl_add
+  snd_ctl_boolean_mono_info
+  snd_ctl_enum_info
+  snd_ctl_new1
+  snd_ctl_notify
+  snd_ctl_remove
+  snd_dma_alloc_dir_pages
+  snd_dma_free_pages
+  snd_hwdep_new
+  snd_info_create_card_entry
+  snd_info_create_module_entry
+  snd_info_free_entry
+  snd_info_register
+  snd_interval_refine
+  snd_jack_new
+  snd_jack_report
+  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_physical_width
+  snd_pcm_format_width
+  snd_pcm_hw_constraint_eld
+  snd_pcm_hw_constraint_integer
+  snd_pcm_hw_constraint_list
+  snd_pcm_hw_constraint_mask64
+  snd_pcm_hw_constraint_minmax
+  snd_pcm_hw_constraint_step
+  snd_pcm_lib_free_pages
+  snd_pcm_lib_ioctl
+  snd_pcm_lib_malloc_pages
+  snd_pcm_lib_preallocate_pages
+  snd_pcm_new
+  snd_pcm_period_elapsed
+  snd_pcm_set_managed_buffer
+  snd_pcm_set_managed_buffer_all
+  snd_pcm_set_ops
+  snd_pcm_std_chmaps
+  snd_pcm_stop
+  snd_soc_add_component_controls
+  snd_soc_add_dai_controls
+  snd_soc_bytes_tlv_callback
+  snd_soc_card_get_kcontrol
+  snd_soc_card_jack_new
+  snd_soc_card_jack_new_pins
+  snd_soc_component_disable_pin
+  snd_soc_component_exit_regmap
+  snd_soc_component_force_enable_pin
+  snd_soc_component_init_regmap
+  snd_soc_component_read
+  snd_soc_component_read_field
+  snd_soc_component_set_jack
+  snd_soc_component_set_pll
+  snd_soc_component_set_sysclk
+  snd_soc_component_update_bits
+  snd_soc_component_write
+  snd_soc_component_write_field
+  snd_soc_dai_get_channel_map
+  snd_soc_dai_link_set_capabilities
+  snd_soc_dai_set_channel_map
+  snd_soc_dai_set_fmt
+  snd_soc_dai_set_pll
+  snd_soc_dai_set_sysclk
+  snd_soc_dai_set_tdm_slot
+  snd_soc_daifmt_clock_provider_from_bitmap
+  snd_soc_daifmt_parse_clock_provider_raw
+  snd_soc_daifmt_parse_format
+  snd_soc_dapm_add_routes
+  snd_soc_dapm_disable_pin
+  snd_soc_dapm_force_enable_pin
+  snd_soc_dapm_get_enum_double
+  snd_soc_dapm_get_volsw
+  snd_soc_dapm_ignore_suspend
+  snd_soc_dapm_kcontrol_dapm
+  snd_soc_dapm_kcontrol_widget
+  snd_soc_dapm_mixer_update_power
+  snd_soc_dapm_mux_update_power
+  snd_soc_dapm_new_controls
+  snd_soc_dapm_new_widgets
+  snd_soc_dapm_put_enum_double
+  snd_soc_dapm_put_volsw
+  snd_soc_dapm_sync
+  snd_soc_find_dai
+  snd_soc_get_enum_double
+  snd_soc_get_pcm_runtime
+  snd_soc_get_volsw
+  snd_soc_get_volsw_range
+  snd_soc_info_enum_double
+  snd_soc_info_multi_ext
+  snd_soc_info_volsw
+  snd_soc_info_volsw_range
+  snd_soc_info_volsw_sx
+  snd_soc_jack_report
+  snd_soc_lookup_component
+  snd_soc_new_compress
+  snd_soc_of_get_dai_link_codecs
+  snd_soc_of_get_dai_name
+  snd_soc_of_parse_audio_routing
+  snd_soc_of_parse_audio_simple_widgets
+  snd_soc_of_parse_aux_devs
+  snd_soc_of_parse_card_name
+  snd_soc_of_parse_pin_switches
+  snd_soc_params_to_bclk
+  snd_soc_pm_ops
+  snd_soc_put_enum_double
+  snd_soc_put_volsw
+  snd_soc_put_volsw_range
+  snd_soc_put_volsw_sx
+  snd_soc_register_card
+  snd_soc_register_component
+  snd_soc_rtdcom_lookup
+  snd_soc_runtime_set_dai_fmt
+  snd_soc_set_runtime_hwparams
+  snd_soc_tplg_component_load
+  snd_soc_tplg_component_remove
+  snd_soc_tplg_widget_bind_event
+  snd_soc_unregister_card
+  snd_soc_unregister_component
+  snd_timer_interrupt
+  snd_usb_autoresume
+  snd_usb_autosuspend
+  snd_usb_endpoint_close
+  snd_usb_endpoint_open
+  snd_usb_endpoint_prepare
+  snprintf
+  soc_device_register
+  soc_device_unregister
+  sock_alloc_send_pskb
+  sock_cmsg_send
+  sock_common_getsockopt
+  sock_common_recvmsg
+  sock_common_setsockopt
+  sock_create_kern
+  sock_diag_register
+  sock_diag_save_cookie
+  sock_diag_unregister
+  sock_edemux
+  sock_efree
+  sock_gen_put
+  sock_gettstamp
+  sock_i_ino
+  sock_i_uid
+  sock_init_data
+  sock_no_accept
+  sock_no_bind
+  sock_no_connect
+  sock_no_getname
+  sock_no_ioctl
+  sock_no_listen
+  sock_no_mmap
+  sock_no_recvmsg
+  sock_no_sendmsg
+  sock_no_sendpage
+  sock_no_shutdown
+  sock_no_socketpair
+  sock_queue_rcv_skb_reason
+  sock_recv_errqueue
+  sock_recvmsg
+  sock_register
+  sock_release
+  sock_rfree
+  sock_setsockopt
+  sock_unregister
+  sock_wfree
+  sock_wmalloc
+  sockfd_lookup
+  softnet_data
+  sort
+  spi_async
+  spi_bus_lock
+  spi_bus_type
+  spi_bus_unlock
+  spi_controller_resume
+  spi_controller_suspend
+  spi_delay_exec
+  spi_finalize_current_message
+  spi_finalize_current_transfer
+  spi_get_device_id
+  spi_get_next_queued_message
+  spi_register_controller
+  spi_setup
+  spi_sync
+  spi_sync_locked
+  spi_unregister_controller
+  spi_write_then_read
+  split_page
+  spmi_controller_add
+  spmi_controller_alloc
+  spmi_controller_remove
+  spmi_device_from_of
+  spmi_ext_register_read
+  spmi_ext_register_readl
+  spmi_ext_register_write
+  spmi_ext_register_writel
+  spmi_register_read
+  spmi_register_write
+  spmi_register_zero_write
+  sprint_symbol
+  sprintf
+  srcu_barrier
+  srcu_batches_completed
+  srcu_init_notifier_head
+  srcu_notifier_call_chain
+  srcu_notifier_chain_register
+  srcu_notifier_chain_unregister
+  srcu_torture_stats_print
+  srcutorture_get_gp_data
+  sscanf
+  stack_depot_fetch
+  stack_depot_save
+  stack_trace_print
+  stack_trace_save
+  stack_trace_save_tsk
+  start_poll_synchronize_rcu
+  start_poll_synchronize_rcu_expedited
+  start_poll_synchronize_srcu
+  static_key_disable
+  static_key_slow_dec
+  static_key_slow_inc
+  stop_machine
+  stop_one_cpu
+  stop_one_cpu_nowait
+  stpcpy
+  strcasecmp
+  strcat
+  strchr
+  strchrnul
+  strcmp
+  strcpy
+  strcspn
+  stream_open
+  strim
+  string_get_size
+  strlcat
+  strlcpy
+  strlen
+  strncasecmp
+  strncat
+  strnchr
+  strncmp
+  strncpy
+  strncpy_from_user
+  strndup_user
+  strnlen
+  strnstr
+  strpbrk
+  strrchr
+  strreplace
+  strscpy
+  strscpy_pad
+  strsep
+  strspn
+  strstr
+  submit_bh
+  submit_bio
+  subsys_system_register
+  suspend_set_ops
+  sync_blockdev
+  sync_file_create
+  sync_file_get_fence
+  synchronize_irq
+  synchronize_net
+  synchronize_rcu
+  synchronize_rcu_expedited
+  synchronize_rcu_tasks
+  synchronize_rcu_tasks_trace
+  synchronize_srcu
+  synchronize_srcu_expedited
+  synth_event_create
+  synth_event_delete
+  sys_tz
+  syscon_node_to_regmap
+  syscon_regmap_lookup_by_phandle
+  sysctl_sched_features
+  sysctl_vals
+  sysfs_add_file_to_group
+  sysfs_add_link_to_group
+  sysfs_create_bin_file
+  sysfs_create_file_ns
+  sysfs_create_files
+  sysfs_create_group
+  sysfs_create_groups
+  sysfs_create_link
+  sysfs_emit
+  sysfs_emit_at
+  sysfs_notify
+  sysfs_remove_bin_file
+  sysfs_remove_file_from_group
+  sysfs_remove_file_ns
+  sysfs_remove_files
+  sysfs_remove_group
+  sysfs_remove_groups
+  sysfs_remove_link
+  sysfs_remove_link_from_group
+  sysfs_streq
+  sysfs_update_group
+  sysrq_mask
+  system_32bit_el0_cpumask
+  system_freezable_power_efficient_wq
+  system_freezable_wq
+  system_highpri_wq
+  system_long_wq
+  system_power_efficient_wq
+  system_state
+  system_unbound_wq
+  system_wq
+  task_active_pid_ns
+  task_rq_lock
+  tasklet_init
+  tasklet_kill
+  tasklet_setup
+  tasklet_unlock_wait
+  tasklist_lock
+  tcf_action_exec
+  tcf_exts_destroy
+  tcf_exts_dump
+  tcf_exts_dump_stats
+  tcf_exts_validate
+  tcf_queue_work
+  tcp_hashinfo
+  tcpci_get_tcpm_port
+  tcpci_irq
+  tcpci_register_port
+  tcpci_unregister_port
+  tcpm_cc_change
+  tcpm_pd_hard_reset
+  tcpm_pd_receive
+  tcpm_pd_transmit_complete
+  tcpm_port_clean
+  tcpm_port_is_toggling
+  tcpm_sink_frs
+  tcpm_sourcing_vbus
+  tcpm_vbus_change
+  thermal_cdev_update
+  thermal_cooling_device_register
+  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
+  tick_nohz_get_sleep_length
+  time64_to_tm
+  timecounter_cyc2time
+  timecounter_init
+  timecounter_read
+  timer_unstable_counter_workaround
+  timespec64_to_jiffies
+  tipc_dump_done
+  tipc_dump_start
+  tipc_nl_sk_walk
+  tipc_sk_fill_sock_diag
+  topology_clear_scale_freq_source
+  topology_update_done
+  topology_update_thermal_pressure
+  touch_softlockup_watchdog
+  trace_array_put
+  trace_clock_local
+  trace_event_buffer_commit
+  trace_event_buffer_reserve
+  trace_event_ignore_this_pid
+  trace_event_printf
+  trace_event_raw_init
+  trace_event_reg
+  trace_get_event_file
+  trace_handle_return
+  trace_output_call
+  trace_print_array_seq
+  trace_print_bitmask_seq
+  trace_print_flags_seq
+  trace_print_hex_seq
+  trace_print_symbols_seq
+  trace_raw_output_prep
+  trace_seq_printf
+  trace_seq_putc
+  tracepoint_probe_register
+  tracepoint_probe_register_prio
+  tracepoint_probe_unregister
+  tracing_off
+  try_module_get
+  try_to_del_timer_sync
+  try_wait_for_completion
+  tty_driver_flush_buffer
+  tty_driver_kref_put
+  tty_encode_baud_rate
+  tty_flip_buffer_push
+  tty_get_char_size
+  tty_hangup
+  tty_insert_flip_string_fixed_flag
+  tty_kref_put
+  tty_ldisc_deref
+  tty_ldisc_flush
+  tty_ldisc_ref
+  tty_mode_ioctl
+  tty_port_close
+  tty_port_destroy
+  tty_port_hangup
+  tty_port_init
+  tty_port_install
+  tty_port_open
+  tty_port_put
+  tty_port_register_device
+  tty_port_tty_get
+  tty_port_tty_hangup
+  tty_port_tty_wakeup
+  tty_register_driver
+  tty_register_ldisc
+  tty_set_termios
+  tty_standard_install
+  tty_std_termios
+  tty_termios_baud_rate
+  tty_termios_copy_hw
+  tty_termios_encode_baud_rate
+  tty_unregister_device
+  tty_unregister_driver
+  tty_unregister_ldisc
+  tty_unthrottle
+  tty_vhangup
+  tty_wakeup
+  typec_find_port_data_role
+  typec_find_port_power_role
+  typec_get_drvdata
+  typec_mux_get_drvdata
+  typec_mux_register
+  typec_register_partner
+  typec_register_port
+  typec_set_data_role
+  typec_set_orientation
+  typec_set_pwr_opmode
+  typec_set_pwr_role
+  typec_switch_get_drvdata
+  typec_switch_register
+  typec_switch_unregister
+  typec_unregister_partner
+  typec_unregister_port
+  uart_add_one_port
+  uart_console_device
+  uart_console_write
+  uart_get_baud_rate
+  uart_insert_char
+  uart_parse_options
+  uart_register_driver
+  uart_remove_one_port
+  uart_resume_port
+  uart_set_options
+  uart_suspend_port
+  uart_try_toggle_sysrq
+  uart_unregister_driver
+  uart_update_timeout
+  uart_write_wakeup
+  uclamp_eff_value
+  ucsi_connector_change
+  ucsi_create
+  ucsi_destroy
+  ucsi_get_drvdata
+  ucsi_register
+  ucsi_send_command
+  ucsi_set_drvdata
+  ucsi_unregister
+  udp4_hwcsum
+  udp6_set_csum
+  udp_set_csum
+  udp_sock_create4
+  udp_sock_create6
+  udp_table
+  udp_tunnel6_xmit_skb
+  udp_tunnel_sock_release
+  udp_tunnel_xmit_skb
+  ufshcd_alloc_host
+  ufshcd_auto_hibern8_update
+  ufshcd_bkops_ctrl
+  ufshcd_config_pwr_mode
+  ufshcd_dealloc_host
+  ufshcd_dme_configure_adapt
+  ufshcd_dme_get_attr
+  ufshcd_dme_set_attr
+  ufshcd_dump_regs
+  ufshcd_fixup_dev_quirks
+  ufshcd_get_local_unipro_ver
+  ufshcd_get_pwr_dev_param
+  ufshcd_hba_enable
+  ufshcd_hba_stop
+  ufshcd_hold
+  ufshcd_init_pwr_dev_param
+  ufshcd_make_hba_operational
+  ufshcd_mcq_config_esi
+  ufshcd_mcq_enable_esi
+  ufshcd_mcq_poll_cqe_nolock
+  ufshcd_mcq_write_cqis
+  ufshcd_pltfrm_init
+  ufshcd_pltfrm_shutdown
+  ufshcd_query_attr
+  ufshcd_query_attr_retry
+  ufshcd_query_descriptor_retry
+  ufshcd_query_flag
+  ufshcd_query_flag_retry
+  ufshcd_read_desc_param
+  ufshcd_release
+  ufshcd_remove
+  ufshcd_resume_complete
+  ufshcd_runtime_resume
+  ufshcd_runtime_suspend
+  ufshcd_shutdown
+  ufshcd_suspend_prepare
+  ufshcd_system_freeze
+  ufshcd_system_restore
+  ufshcd_system_resume
+  ufshcd_system_suspend
+  ufshcd_system_thaw
+  ufshcd_uic_hibern8_enter
+  ufshcd_uic_hibern8_exit
+  ufshcd_update_evt_hist
+  uio_unregister_device
+  unlock_buffer
+  unlock_page
+  unmap_mapping_range
+  unpin_user_page
+  unpin_user_pages_dirty_lock
+  unregister_blkdev
+  unregister_candev
+  unregister_chrdev_region
+  unregister_console
+  unregister_die_notifier
+  unregister_ftrace_export
+  unregister_inet6addr_notifier
+  unregister_inetaddr_notifier
+  unregister_kprobe
+  unregister_kretprobe
+  unregister_memory_notifier
+  unregister_net_sysctl_table
+  unregister_netdev
+  unregister_netdevice_many
+  unregister_netdevice_notifier
+  unregister_netdevice_queue
+  unregister_netevent_notifier
+  unregister_oom_notifier
+  unregister_pernet_device
+  unregister_pernet_subsys
+  unregister_pm_notifier
+  unregister_pppox_proto
+  unregister_qdisc
+  unregister_reboot_notifier
+  unregister_restart_handler
+  unregister_rpmsg_driver
+  unregister_shrinker
+  unregister_syscore_ops
+  unregister_sysctl_table
+  unregister_tcf_proto_ops
+  unregister_virtio_device
+  unregister_virtio_driver
+  unregister_vmap_purge_notifier
+  up
+  up_read
+  up_write
+  update_devfreq
+  update_rq_clock
+  usb_add_function
+  usb_add_gadget_udc
+  usb_add_hcd
+  usb_add_phy_dev
+  usb_alloc_coherent
+  usb_alloc_urb
+  usb_amd_dev_put
+  usb_amd_prefetch_quirk
+  usb_amd_quirk_pll_check
+  usb_amd_quirk_pll_disable
+  usb_amd_quirk_pll_enable
+  usb_anchor_urb
+  usb_assign_descriptors
+  usb_autopm_get_interface
+  usb_autopm_get_interface_async
+  usb_autopm_get_interface_no_resume
+  usb_autopm_put_interface
+  usb_autopm_put_interface_async
+  usb_bulk_msg
+  usb_bus_idr
+  usb_bus_idr_lock
+  usb_calc_bus_time
+  usb_clear_halt
+  usb_composite_setup_continue
+  usb_control_msg
+  usb_control_msg_recv
+  usb_control_msg_send
+  usb_copy_descriptors
+  usb_create_hcd
+  usb_create_shared_hcd
+  usb_debug_root
+  usb_decode_ctrl
+  usb_del_gadget_udc
+  usb_deregister
+  usb_device_match_id
+  usb_disabled
+  usb_driver_claim_interface
+  usb_driver_release_interface
+  usb_enable_autosuspend
+  usb_ep_alloc_request
+  usb_ep_autoconfig
+  usb_ep_dequeue
+  usb_ep_disable
+  usb_ep_enable
+  usb_ep_free_request
+  usb_ep_queue
+  usb_ep_set_halt
+  usb_ep_set_maxpacket_limit
+  usb_find_common_endpoints
+  usb_free_all_descriptors
+  usb_free_coherent
+  usb_free_urb
+  usb_function_register
+  usb_function_unregister
+  usb_gadget_activate
+  usb_gadget_deactivate
+  usb_gadget_giveback_request
+  usb_gadget_set_state
+  usb_gadget_udc_reset
+  usb_gadget_wakeup
+  usb_get_dev
+  usb_get_from_anchor
+  usb_get_intf
+  usb_gstrings_attach
+  usb_hc_died
+  usb_hcd_check_unlink_urb
+  usb_hcd_giveback_urb
+  usb_hcd_is_primary_hcd
+  usb_hcd_link_urb_to_ep
+  usb_hcd_pci_pm_ops
+  usb_hcd_pci_probe
+  usb_hcd_pci_remove
+  usb_hcd_pci_shutdown
+  usb_hcd_platform_shutdown
+  usb_hcd_poll_rh_status
+  usb_hcd_resume_root_hub
+  usb_hcd_unlink_urb_from_ep
+  usb_hcds_loaded
+  usb_hub_find_child
+  usb_ifnum_to_if
+  usb_init_urb
+  usb_interface_id
+  usb_kill_anchored_urbs
+  usb_kill_urb
+  usb_match_id
+  usb_match_one_id
+  usb_otg_state_string
+  usb_phy_set_charger_current
+  usb_poison_urb
+  usb_put_dev
+  usb_put_function_instance
+  usb_put_hcd
+  usb_put_intf
+  usb_queue_reset_device
+  usb_register_driver
+  usb_register_notify
+  usb_remove_hcd
+  usb_remove_phy
+  usb_reset_device
+  usb_role_switch_find_by_fwnode
+  usb_role_switch_get_drvdata
+  usb_role_switch_put
+  usb_role_switch_register
+  usb_role_switch_set_role
+  usb_role_switch_unregister
+  usb_root_hub_lost_power
+  usb_scuttle_anchored_urbs
+  usb_serial_claim_interface
+  usb_serial_deregister_drivers
+  usb_serial_generic_chars_in_buffer
+  usb_serial_generic_close
+  usb_serial_generic_get_icount
+  usb_serial_generic_open
+  usb_serial_generic_process_read_urb
+  usb_serial_generic_read_bulk_callback
+  usb_serial_generic_resume
+  usb_serial_generic_submit_read_urbs
+  usb_serial_generic_throttle
+  usb_serial_generic_tiocmiwait
+  usb_serial_generic_unthrottle
+  usb_serial_generic_wait_until_sent
+  usb_serial_generic_write
+  usb_serial_generic_write_bulk_callback
+  usb_serial_generic_write_start
+  usb_serial_handle_dcd_change
+  usb_serial_port_softint
+  usb_serial_register_drivers
+  usb_serial_resume
+  usb_serial_suspend
+  usb_set_device_state
+  usb_set_interface
+  usb_show_dynids
+  usb_speed_string
+  usb_store_new_id
+  usb_string_id
+  usb_submit_urb
+  usb_udc_vbus_handler
+  usb_unanchor_urb
+  usb_unpoison_urb
+  usb_unregister_notify
+  usbnet_get_endpoints
+  usbnet_link_change
+  usleep_range_state
+  utf16s_to_utf8s
+  utf8_data_table
+  uuid_parse
+  v4l2_compat_ioctl32
+  v4l2_ctrl_find
+  v4l2_ctrl_get_name
+  v4l2_ctrl_handler_free
+  v4l2_ctrl_handler_init_class
+  v4l2_ctrl_handler_setup
+  v4l2_ctrl_log_status
+  v4l2_ctrl_new_custom
+  v4l2_ctrl_new_std
+  v4l2_ctrl_new_std_compound
+  v4l2_ctrl_new_std_menu
+  v4l2_ctrl_request_complete
+  v4l2_ctrl_request_setup
+  v4l2_ctrl_subscribe_event
+  v4l2_device_register
+  v4l2_device_register_subdev
+  v4l2_device_unregister
+  v4l2_device_unregister_subdev
+  v4l2_event_dequeue
+  v4l2_event_pending
+  v4l2_event_queue
+  v4l2_event_queue_fh
+  v4l2_event_subscribe
+  v4l2_event_unsubscribe
+  v4l2_fh_add
+  v4l2_fh_del
+  v4l2_fh_exit
+  v4l2_fh_init
+  v4l2_fh_is_singular
+  v4l2_fh_open
+  v4l2_fh_release
+  v4l2_i2c_subdev_init
+  v4l2_m2m_buf_queue
+  v4l2_m2m_buf_remove
+  v4l2_m2m_buf_remove_by_buf
+  v4l2_m2m_buf_remove_by_idx
+  v4l2_m2m_ctx_init
+  v4l2_m2m_ctx_release
+  v4l2_m2m_fop_mmap
+  v4l2_m2m_fop_poll
+  v4l2_m2m_get_curr_priv
+  v4l2_m2m_get_vq
+  v4l2_m2m_init
+  v4l2_m2m_ioctl_create_bufs
+  v4l2_m2m_ioctl_dqbuf
+  v4l2_m2m_ioctl_expbuf
+  v4l2_m2m_ioctl_prepare_buf
+  v4l2_m2m_ioctl_qbuf
+  v4l2_m2m_ioctl_querybuf
+  v4l2_m2m_ioctl_reqbufs
+  v4l2_m2m_ioctl_streamoff
+  v4l2_m2m_ioctl_streamon
+  v4l2_m2m_ioctl_try_decoder_cmd
+  v4l2_m2m_ioctl_try_encoder_cmd
+  v4l2_m2m_job_finish
+  v4l2_m2m_next_buf
+  v4l2_m2m_qbuf
+  v4l2_m2m_register_media_controller
+  v4l2_m2m_release
+  v4l2_m2m_request_queue
+  v4l2_m2m_unregister_media_controller
+  v4l2_s_ctrl
+  v4l2_src_change_event_subscribe
+  v4l2_subdev_call_wrappers
+  v4l2_subdev_init
+  vb2_buffer_done
+  vb2_create_bufs
+  vb2_dma_contig_memops
+  vb2_dma_sg_memops
+  vb2_dqbuf
+  vb2_fop_mmap
+  vb2_fop_poll
+  vb2_fop_read
+  vb2_fop_release
+  vb2_ioctl_create_bufs
+  vb2_ioctl_dqbuf
+  vb2_ioctl_expbuf
+  vb2_ioctl_qbuf
+  vb2_ioctl_querybuf
+  vb2_ioctl_reqbufs
+  vb2_ioctl_streamoff
+  vb2_ioctl_streamon
+  vb2_mmap
+  vb2_ops_wait_finish
+  vb2_ops_wait_prepare
+  vb2_plane_cookie
+  vb2_plane_vaddr
+  vb2_poll
+  vb2_prepare_buf
+  vb2_qbuf
+  vb2_querybuf
+  vb2_queue_error
+  vb2_queue_init
+  vb2_queue_release
+  vb2_reqbufs
+  vb2_request_validate
+  vb2_streamoff
+  vb2_streamon
+  vb2_vmalloc_memops
+  vb2_wait_for_all_buffers
+  vchan_dma_desc_free_list
+  vchan_find_desc
+  vchan_init
+  vchan_tx_desc_free
+  vchan_tx_submit
+  verify_pkcs7_signature
+  vfree
+  vfs_fsync_range
+  vhost_add_used_and_signal
+  vhost_dev_check_owner
+  vhost_dev_cleanup
+  vhost_dev_init
+  vhost_dev_ioctl
+  vhost_dev_stop
+  vhost_disable_notify
+  vhost_enable_notify
+  vhost_get_vq_desc
+  vhost_log_access_ok
+  vhost_vq_access_ok
+  vhost_vq_init_access
+  vhost_vring_ioctl
+  video_devdata
+  video_device_alloc
+  video_device_release
+  video_device_release_empty
+  video_ioctl2
+  video_unregister_device
+  virtio_break_device
+  virtio_check_driver_offered_feature
+  virtio_config_changed
+  virtio_device_freeze
+  virtio_device_restore
+  virtio_max_dma_size
+  virtio_reset_device
+  virtio_transport_connect
+  virtio_transport_deliver_tap_pkt
+  virtio_transport_destruct
+  virtio_transport_dgram_allow
+  virtio_transport_dgram_bind
+  virtio_transport_dgram_dequeue
+  virtio_transport_dgram_enqueue
+  virtio_transport_do_socket_init
+  virtio_transport_free_pkt
+  virtio_transport_notify_buffer_size
+  virtio_transport_notify_poll_in
+  virtio_transport_notify_poll_out
+  virtio_transport_notify_recv_init
+  virtio_transport_notify_recv_post_dequeue
+  virtio_transport_notify_recv_pre_block
+  virtio_transport_notify_recv_pre_dequeue
+  virtio_transport_notify_send_init
+  virtio_transport_notify_send_post_enqueue
+  virtio_transport_notify_send_pre_block
+  virtio_transport_notify_send_pre_enqueue
+  virtio_transport_recv_pkt
+  virtio_transport_release
+  virtio_transport_seqpacket_dequeue
+  virtio_transport_seqpacket_enqueue
+  virtio_transport_seqpacket_has_data
+  virtio_transport_shutdown
+  virtio_transport_stream_allow
+  virtio_transport_stream_dequeue
+  virtio_transport_stream_enqueue
+  virtio_transport_stream_has_data
+  virtio_transport_stream_has_space
+  virtio_transport_stream_is_active
+  virtio_transport_stream_rcvhiwat
+  virtqueue_add_inbuf
+  virtqueue_add_inbuf_ctx
+  virtqueue_add_outbuf
+  virtqueue_add_sgs
+  virtqueue_detach_unused_buf
+  virtqueue_disable_cb
+  virtqueue_disable_dma_api_for_buffers
+  virtqueue_enable_cb
+  virtqueue_enable_cb_delayed
+  virtqueue_enable_cb_prepare
+  virtqueue_get_avail_addr
+  virtqueue_get_buf
+  virtqueue_get_buf_ctx
+  virtqueue_get_desc_addr
+  virtqueue_get_used_addr
+  virtqueue_get_vring_size
+  virtqueue_is_broken
+  virtqueue_kick
+  virtqueue_kick_prepare
+  virtqueue_notify
+  virtqueue_poll
+  virtqueue_resize
+  vlan_dev_vlan_id
+  vlan_filter_drop_vids
+  vlan_filter_push_vids
+  vlan_ioctl_set
+  vlan_uses_dev
+  vlan_vid_add
+  vlan_vid_del
+  vlan_vids_add_by_dev
+  vlan_vids_del_by_dev
+  vm_event_states
+  vm_get_page_prot
+  vm_insert_page
+  vm_iomap_memory
+  vm_map_pages
+  vm_map_ram
+  vm_mmap
+  vm_munmap
+  vm_node_stat
+  vm_unmap_ram
+  vm_zone_stat
+  vmalloc
+  vmalloc_nr_pages
+  vmalloc_to_page
+  vmalloc_to_pfn
+  vmalloc_user
+  vmap
+  vmemdup_user
+  vmf_insert_mixed
+  vmf_insert_pfn
+  vmf_insert_pfn_prot
+  vprintk
+  vprintk_emit
+  vring_create_virtqueue
+  vring_del_virtqueue
+  vring_interrupt
+  vring_new_virtqueue
+  vring_transport_features
+  vscnprintf
+  vsnprintf
+  vsock_core_register
+  vsock_core_unregister
+  vsock_for_each_connected_socket
+  vsprintf
+  vunmap
+  vzalloc
+  vzalloc_node
+  wait_for_completion
+  wait_for_completion_interruptible
+  wait_for_completion_interruptible_timeout
+  wait_for_completion_io_timeout
+  wait_for_completion_killable
+  wait_for_completion_killable_timeout
+  wait_for_completion_timeout
+  wait_for_device_probe
+  wait_woken
+  wake_up_bit
+  wake_up_if_idle
+  wake_up_process
+  wake_up_var
+  wakeup_source_add
+  wakeup_source_create
+  wakeup_source_destroy
+  wakeup_source_register
+  wakeup_source_remove
+  wakeup_source_unregister
+  wakeup_sources_read_lock
+  wakeup_sources_read_unlock
+  wakeup_sources_walk_next
+  wakeup_sources_walk_start
+  watchdog_init_timeout
+  watchdog_register_device
+  watchdog_set_restart_priority
+  watchdog_unregister_device
+  wireless_nlevent_flush
+  wireless_send_event
+  woken_wake_function
+  work_busy
+  wpan_phy_find
+  wpan_phy_for_each
+  wpan_phy_free
+  wpan_phy_new
+  wpan_phy_register
+  wpan_phy_unregister
+  ww_mutex_lock
+  ww_mutex_lock_interruptible
+  ww_mutex_trylock
+  ww_mutex_unlock
+  xa_destroy
+  xa_erase
+  xa_find
+  xa_find_after
+  xa_load
+  xa_store
+  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_mem_model
+  xdp_rxq_info_unreg
+  xdp_rxq_info_unreg_mem_model
+  xdp_warn
+  xfrm_lookup
+  xfrm_state_lookup_byspi
+  xfrm_stateonly_find
+  xhci_alloc_command
+  xhci_alloc_erst
+  xhci_free_command
+  xhci_gen_setup
+  xhci_get_endpoint_index
+  xhci_init_driver
+  xhci_queue_stop_endpoint
+  xhci_resume
+  xhci_ring_alloc
+  xhci_ring_cmd_db
+  xhci_ring_free
+  xhci_run
+  xhci_suspend
+  xhci_trb_virt_to_dma
+  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
+  zap_vma_ptes
+  zlib_deflate
+  zlib_deflateEnd
+  zlib_deflateInit2
+  zlib_deflateReset
+  zlib_deflate_workspacesize
+  zlib_inflate
+  zlib_inflateIncomp
+  zlib_inflateInit2
+  zlib_inflateReset
+  zlib_inflate_workspacesize
+  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_xiaomi b/android/abi_gki_aarch64_xiaomi
new file mode 100644
index 0000000..0435b3d6b
--- /dev/null
+++ b/android/abi_gki_aarch64_xiaomi
@@ -0,0 +1,257 @@
+[abi_symbol_list]
+  proc_mkdir_data
+  proc_create_seq_private
+  i2c_smbus_read_byte_data
+  i2c_smbus_write_byte_data
+  blk_execute_rq
+  blk_rq_map_kern
+  scsi_device_lookup
+  scsi_host_lookup
+  scsi_host_put
+  ufshcd_read_desc_param
+  utf16s_to_utf8s
+  async_schedule_node
+  blk_mq_alloc_tag_set
+  blk_mq_init_queue
+  blk_mq_tagset_busy_iter
+  bsg_job_done
+  bsg_remove_queue
+  bsg_setup_queue
+  dev_pm_opp_remove
+  scsi_add_host_with_dma
+  scsi_block_requests
+  scsi_dma_unmap
+  scsi_is_host_device
+  scsi_remove_host
+  scsi_report_bus_reset
+  scsi_scan_host
+  scsi_unblock_requests
+  scsi_change_queue_depth
+  scsi_print_command
+  scsi_dma_map
+  scsi_host_alloc
+  scsi_normalize_sense
+  sg_copy_from_buffer
+  sg_copy_to_buffer
+  ufshcd_alloc_host
+  ufshcd_config_pwr_mode
+  ufshcd_dealloc_host
+  ufshcd_hba_enable
+  ufshcd_make_hba_operational
+  ufshcd_query_attr_retry
+  ufshcd_query_flag_retry
+  ufshcd_update_evt_hist
+  wait_for_completion_io_timeout
+  __scsi_add_device
+  blk_mq_free_tag_set
+  blk_queue_update_dma_alignment
+  blk_queue_update_dma_pad
+  mempool_resize
+  mempool_alloc_pages
+  mempool_free_pages
+  regmap_raw_write_async
+  snd_soc_bytes_tlv_callback
+  regmap_async_complete
+  snd_compr_stop_error
+  snd_soc_component_disable_pin
+  snd_soc_component_force_enable_pin
+  snd_pcm_format_physical_width
+  snd_pcm_hw_constraint_list
+  regmap_multi_reg_write_bypassed
+  snd_ctl_boolean_mono_info
+  snd_soc_put_volsw_range
+  snd_soc_get_volsw_range
+  snd_soc_info_volsw_range
+  regmap_raw_write
+  regcache_drop_region
+  regmap_raw_read
+  regmap_multi_reg_write
+  regulator_bulk_enable
+  __blk_mq_end_request
+  balance_dirty_pages_ratelimited
+  bdi_alloc
+  bdi_put
+  bdi_register
+  blk_mq_freeze_queue
+  blk_mq_quiesce_queue
+  blk_mq_start_request
+  blk_mq_unfreeze_queue
+  blk_mq_unquiesce_queue
+  blk_queue_write_cache
+  blk_update_request
+  blkdev_get_by_dev
+  blkdev_get_by_path
+  blkdev_put
+  deactivate_locked_super
+  fixed_size_llseek
+  generic_shutdown_super
+  kmsg_dump_get_buffer
+  kmsg_dump_register
+  kmsg_dump_rewind
+  kmsg_dump_unregister
+  ktime_get_coarse_real_ts64
+  lockref_get
+  logfc
+  lookup_bdev
+  name_to_dev_t
+  nvmem_register
+  nvmem_unregister
+  proc_create_single_data
+  read_cache_page
+  set_disk_ro
+  set_page_dirty
+  sget_fc
+  simple_strtoul
+  sync_blockdev
+  wait_for_device_probe
+  blk_mq_alloc_sq_tag_set
+  __traceiter_android_vh_binder_wait_for_work
+  __tracepoint_android_vh_binder_wait_for_work
+  __traceiter_android_vh_free_task
+  __tracepoint_android_vh_free_task
+  jiffies_64
+  __traceiter_android_rvh_check_preempt_tick
+  __traceiter_android_rvh_dequeue_entity
+  __traceiter_android_rvh_enqueue_entity
+  __tracepoint_android_rvh_check_preempt_tick
+  __tracepoint_android_rvh_dequeue_entity
+  __tracepoint_android_rvh_enqueue_entity
+  console_printk
+  __traceiter_android_vh_binder_transaction_init
+  __tracepoint_android_vh_binder_transaction_init
+  drm_get_connector_type_name
+  gpio_request_array
+  wakeup_sources_read_lock
+  wakeup_sources_read_unlock
+  wakeup_sources_walk_start
+  wakeup_sources_walk_next
+
+#required by migt.ko
+  __traceiter_android_rvh_after_enqueue_task
+  __traceiter_android_rvh_after_dequeue_task
+  __traceiter_android_vh_map_util_freq
+  __tracepoint_android_rvh_after_enqueue_task
+  __tracepoint_android_rvh_after_dequeue_task
+  __tracepoint_android_vh_map_util_freq
+
+#required by ufs-qcom.ko
+  blk_crypto_reprogram_all_keys
+  blk_crypto_register
+  blk_crypto_keyslot_index
+  blk_mq_destroy_queue
+  blk_put_queue
+  blk_pm_runtime_init
+  sbitmap_weight
+  scsi_done
+  scsi_remove_device
+
+#required by mi_sched.ko
+  __traceiter_android_vh_scheduler_tick
+  __traceiter_android_vh_free_user
+  __traceiter_android_vh_alloc_uid
+  __tracepoint_android_vh_scheduler_tick
+  __tracepoint_android_vh_free_user
+  __tracepoint_android_vh_alloc_uid
+  free_uid
+  find_user
+
+#required by mi_freqwdg.ko
+  __traceiter_android_vh_freq_qos_remove_request
+  __traceiter_android_vh_freq_qos_update_request
+  __traceiter_android_vh_freq_qos_add_request
+  __traceiter_android_rvh_entity_tick
+  __traceiter_android_rvh_dequeue_task_fair
+  __tracepoint_android_vh_freq_qos_remove_request
+  __tracepoint_android_vh_freq_qos_update_request
+  __tracepoint_android_vh_freq_qos_add_request
+  __tracepoint_android_rvh_dequeue_task_fair
+  __tracepoint_android_rvh_entity_tick
+
+#required by millet.ko
+  __traceiter_android_rvh_refrigerator
+  __tracepoint_android_rvh_refrigerator
+  freezer_cgrp_subsys
+
+#required by bfq module
+  __blkg_prfill_rwstat
+  blkg_rwstat_recursive_sum
+  blkg_prfill_rwstat
+  blkg_conf_finish
+  blkg_conf_prep
+  __blkg_prfill_u64
+  blkcg_print_blkgs
+  blkg_rwstat_exit
+  blkg_rwstat_init
+  percpu_counter_add_batch
+  io_cgrp_subsys_on_dfl_key
+  ioc_lookup_icq
+  bdi_dev_name
+
+#required by metis.ko module
+  __traceiter_android_vh_rwsem_read_wait_start
+  __traceiter_android_vh_rwsem_write_wait_start
+  __traceiter_android_vh_mutex_wait_start
+  __traceiter_android_vh_alter_mutex_list_add
+  __traceiter_android_rvh_cpuset_fork
+  __traceiter_android_vh_sched_setaffinity_early
+  __traceiter_android_rvh_set_cpus_allowed_comm
+  __traceiter_android_rvh_dequeue_task
+  __tracepoint_android_vh_rwsem_read_wait_start
+  __tracepoint_android_vh_rwsem_write_wait_start
+  __tracepoint_android_vh_mutex_wait_start
+  __tracepoint_android_vh_alter_mutex_list_add
+  __tracepoint_android_rvh_cpuset_fork
+  __tracepoint_android_vh_sched_setaffinity_early
+  __tracepoint_android_rvh_set_cpus_allowed_comm
+  __tracepoint_android_rvh_dequeue_task
+  cpuset_cpus_allowed
+
+#required by millet.ko
+  __traceiter_android_vh_binder_wait_for_work
+  __traceiter_android_vh_do_send_sig_info
+  __traceiter_android_vh_binder_preset
+  __traceiter_android_vh_binder_trans
+  __traceiter_android_vh_binder_reply
+  __traceiter_android_vh_binder_alloc_new_buf_locked
+  __tracepoint_android_vh_binder_wait_for_work
+  __tracepoint_android_vh_do_send_sig_info
+  __tracepoint_android_vh_binder_preset
+  __tracepoint_android_vh_binder_trans
+  __tracepoint_android_vh_binder_reply
+  __tracepoint_android_vh_binder_alloc_new_buf_locked
+
+#required by io_limit.ko
+  __traceiter_android_vh_psi_event
+  __traceiter_android_vh_psi_group
+  __traceiter_android_rvh_ctl_dirty_rate
+  __tracepoint_android_vh_psi_event
+  __tracepoint_android_vh_psi_group
+  __tracepoint_android_rvh_ctl_dirty_rate
+
+#required by touch module
+  power_supply_is_system_supplied
+
+#required by mi_mempool.ko
+  __traceiter_android_vh_alloc_pages_reclaim_bypass
+  __traceiter_android_vh_alloc_pages_failure_bypass
+  __tracepoint_android_vh_alloc_pages_reclaim_bypass
+  __tracepoint_android_vh_alloc_pages_failure_bypass
+
+#required by mi_mempool.ko
+  __traceiter_android_vh_mmput
+  __tracepoint_android_vh_mmput
+
+#required by mi_mempool.ko
+  __traceiter_android_vh_madvise_cold_pageout_skip
+  __tracepoint_android_vh_madvise_cold_pageout_skip
+
+#required by n_gsm.ko
+  tty_write_room
+  tty_port_tty_set
+  tty_register_device
+  tty_hung_up_p
+  tty_name
+  tty_port_block_til_ready
+  tty_port_close_start
+  tty_port_lower_dtr_rts
+  tty_port_close_end
diff --git a/android/abi_gki_protected_exports_aarch64 b/android/abi_gki_protected_exports_aarch64
new file mode 100644
index 0000000..6b40237
--- /dev/null
+++ b/android/abi_gki_protected_exports_aarch64
@@ -0,0 +1,337 @@
+__hci_cmd_send
+__hci_cmd_sync
+__hci_cmd_sync_ev
+__hci_cmd_sync_sk
+__hci_cmd_sync_status
+__hci_cmd_sync_status_sk
+__nfc_alloc_vendor_cmd_reply_skb
+alloc_can_err_skb
+alloc_can_skb
+alloc_candev_mqs
+alloc_canfd_skb
+alloc_canxl_skb
+arc4_crypt
+arc4_setkey
+baswap
+bt_accept_dequeue
+bt_accept_enqueue
+bt_accept_unlink
+bt_debugfs
+bt_err
+bt_err_ratelimited
+bt_info
+bt_procfs_cleanup
+bt_procfs_init
+bt_sock_ioctl
+bt_sock_link
+bt_sock_poll
+bt_sock_reclassify_lock
+bt_sock_recvmsg
+bt_sock_register
+bt_sock_stream_recvmsg
+bt_sock_unlink
+bt_sock_unregister
+bt_sock_wait_ready
+bt_sock_wait_state
+bt_status
+bt_to_errno
+bt_warn
+bt_warn_ratelimited
+btbcm_check_bdaddr
+btbcm_finalize
+btbcm_initialize
+btbcm_patchram
+btbcm_read_pcm_int_params
+btbcm_set_bdaddr
+btbcm_setup_apple
+btbcm_setup_patchram
+btbcm_write_pcm_int_params
+can_bus_off
+can_change_mtu
+can_change_state
+can_dropped_invalid_skb
+can_eth_ioctl_hwts
+can_ethtool_op_get_ts_info_hwts
+can_fd_dlc2len
+can_fd_len2dlc
+can_free_echo_skb
+can_get_echo_skb
+can_get_state_str
+can_proto_register
+can_proto_unregister
+can_put_echo_skb
+can_rx_offload_add_fifo
+can_rx_offload_add_manual
+can_rx_offload_add_timestamp
+can_rx_offload_del
+can_rx_offload_enable
+can_rx_offload_get_echo_skb
+can_rx_offload_irq_finish
+can_rx_offload_irq_offload_fifo
+can_rx_offload_irq_offload_timestamp
+can_rx_offload_queue_tail
+can_rx_offload_queue_timestamp
+can_rx_offload_threaded_irq_finish
+can_rx_register
+can_rx_unregister
+can_send
+can_skb_get_frame_len
+can_sock_destruct
+cdc_ncm_bind_common
+cdc_ncm_change_mtu
+cdc_ncm_fill_tx_frame
+cdc_ncm_rx_fixup
+cdc_ncm_rx_verify_ndp16
+cdc_ncm_rx_verify_ndp32
+cdc_ncm_rx_verify_nth16
+cdc_ncm_rx_verify_nth32
+cdc_ncm_select_altsetting
+cdc_ncm_tx_fixup
+cdc_ncm_unbind
+close_candev
+free_candev
+generic_mii_ioctl
+h4_recv_buf
+hci_alloc_dev_priv
+hci_cmd_sync
+hci_cmd_sync_cancel
+hci_cmd_sync_queue
+hci_conn_check_secure
+hci_conn_security
+hci_conn_switch_role
+hci_free_dev
+hci_get_route
+hci_mgmt_chan_register
+hci_mgmt_chan_unregister
+hci_recv_diag
+hci_recv_frame
+hci_register_cb
+hci_register_dev
+hci_release_dev
+hci_reset_dev
+hci_resume_dev
+hci_set_fw_info
+hci_set_hw_info
+hci_suspend_dev
+hci_uart_register_device
+hci_uart_tx_wakeup
+hci_uart_unregister_device
+hci_unregister_cb
+hci_unregister_dev
+hidp_hid_driver
+ieee802154_alloc_hw
+ieee802154_configure_durations
+ieee802154_free_hw
+ieee802154_hdr_peek
+ieee802154_hdr_peek_addrs
+ieee802154_hdr_pull
+ieee802154_hdr_push
+ieee802154_max_payload
+ieee802154_register_hw
+ieee802154_rx_irqsafe
+ieee802154_stop_queue
+ieee802154_unregister_hw
+ieee802154_wake_queue
+ieee802154_xmit_complete
+ieee802154_xmit_error
+ieee802154_xmit_hw_error
+l2cap_add_psm
+l2cap_chan_close
+l2cap_chan_connect
+l2cap_chan_create
+l2cap_chan_del
+l2cap_chan_list
+l2cap_chan_put
+l2cap_chan_send
+l2cap_chan_set_defaults
+l2cap_conn_get
+l2cap_conn_put
+l2cap_is_socket
+l2cap_register_user
+l2cap_unregister_user
+l2tp_recv_common
+l2tp_session_create
+l2tp_session_dec_refcount
+l2tp_session_delete
+l2tp_session_get
+l2tp_session_get_by_ifname
+l2tp_session_get_nth
+l2tp_session_inc_refcount
+l2tp_session_register
+l2tp_session_set_header_len
+l2tp_sk_to_tunnel
+l2tp_tunnel_create
+l2tp_tunnel_dec_refcount
+l2tp_tunnel_delete
+l2tp_tunnel_get
+l2tp_tunnel_get_nth
+l2tp_tunnel_get_session
+l2tp_tunnel_inc_refcount
+l2tp_tunnel_register
+l2tp_udp_encap_recv
+l2tp_xmit_skb
+lowpan_header_compress
+lowpan_header_decompress
+lowpan_nhc_add
+lowpan_nhc_del
+lowpan_register_netdev
+lowpan_register_netdevice
+lowpan_unregister_netdev
+lowpan_unregister_netdevice
+mii_check_gmii_support
+mii_check_link
+mii_check_media
+mii_ethtool_get_link_ksettings
+mii_ethtool_gset
+mii_ethtool_set_link_ksettings
+mii_ethtool_sset
+mii_link_ok
+mii_nway_restart
+nfc_add_se
+nfc_alloc_recv_skb
+nfc_allocate_device
+nfc_class
+nfc_dep_link_is_up
+nfc_driver_failure
+nfc_find_se
+nfc_fw_download_done
+nfc_get_local_general_bytes
+nfc_proto_register
+nfc_proto_unregister
+nfc_register_device
+nfc_remove_se
+nfc_se_connectivity
+nfc_se_transaction
+nfc_send_to_raw_sock
+nfc_set_remote_general_bytes
+nfc_target_lost
+nfc_targets_found
+nfc_tm_activated
+nfc_tm_data_received
+nfc_tm_deactivated
+nfc_unregister_device
+nfc_vendor_cmd_reply
+of_can_transceiver
+open_candev
+ppp_channel_index
+ppp_dev_name
+ppp_input
+ppp_input_error
+ppp_output_wakeup
+ppp_register_channel
+ppp_register_compressor
+ppp_register_net_channel
+ppp_unit_number
+ppp_unregister_channel
+ppp_unregister_compressor
+pppox_compat_ioctl
+pppox_ioctl
+pppox_unbind_sock
+qca_read_soc_version
+qca_send_pre_shutdown_cmd
+qca_set_bdaddr
+qca_set_bdaddr_rome
+qca_uart_setup
+register_candev
+register_pppox_proto
+rfkill_alloc
+rfkill_blocked
+rfkill_destroy
+rfkill_find_type
+rfkill_get_led_trigger_name
+rfkill_init_sw_state
+rfkill_pause_polling
+rfkill_register
+rfkill_resume_polling
+rfkill_set_hw_state_reason
+rfkill_set_led_trigger_name
+rfkill_set_states
+rfkill_set_sw_state
+rfkill_soft_blocked
+rfkill_unregister
+rtl8152_get_version
+safe_candev_priv
+slhc_compress
+slhc_free
+slhc_init
+slhc_remember
+slhc_toss
+slhc_uncompress
+tipc_dump_done
+tipc_dump_start
+tipc_nl_sk_walk
+tipc_sk_fill_sock_diag
+unregister_candev
+unregister_pppox_proto
+usb_serial_claim_interface
+usb_serial_deregister_drivers
+usb_serial_generic_chars_in_buffer
+usb_serial_generic_close
+usb_serial_generic_get_icount
+usb_serial_generic_open
+usb_serial_generic_process_read_urb
+usb_serial_generic_read_bulk_callback
+usb_serial_generic_resume
+usb_serial_generic_submit_read_urbs
+usb_serial_generic_throttle
+usb_serial_generic_tiocmiwait
+usb_serial_generic_unthrottle
+usb_serial_generic_wait_until_sent
+usb_serial_generic_write
+usb_serial_generic_write_bulk_callback
+usb_serial_generic_write_start
+usb_serial_handle_dcd_change
+usb_serial_port_softint
+usb_serial_register_drivers
+usb_serial_resume
+usb_serial_suspend
+usbnet_cdc_bind
+usbnet_cdc_status
+usbnet_cdc_unbind
+usbnet_cdc_update_filter
+usbnet_cdc_zte_rx_fixup
+usbnet_change_mtu
+usbnet_defer_kevent
+usbnet_device_suggests_idle
+usbnet_disconnect
+usbnet_ether_cdc_bind
+usbnet_generic_cdc_bind
+usbnet_get_drvinfo
+usbnet_get_endpoints
+usbnet_get_ethernet_addr
+usbnet_get_link
+usbnet_get_link_ksettings_internal
+usbnet_get_link_ksettings_mii
+usbnet_get_msglevel
+usbnet_link_change
+usbnet_manage_power
+usbnet_nway_reset
+usbnet_open
+usbnet_pause_rx
+usbnet_probe
+usbnet_purge_paused_rxq
+usbnet_read_cmd
+usbnet_read_cmd_nopm
+usbnet_resume
+usbnet_resume_rx
+usbnet_set_link_ksettings_mii
+usbnet_set_msglevel
+usbnet_set_rx_mode
+usbnet_skb_return
+usbnet_start_xmit
+usbnet_status_start
+usbnet_status_stop
+usbnet_stop
+usbnet_suspend
+usbnet_tx_timeout
+usbnet_unlink_rx_urbs
+usbnet_update_max_qlen
+usbnet_write_cmd
+usbnet_write_cmd_async
+usbnet_write_cmd_nopm
+wpan_phy_find
+wpan_phy_for_each
+wpan_phy_free
+wpan_phy_new
+wpan_phy_register
+wpan_phy_unregister
\ No newline at end of file
diff --git a/android/abi_gki_protected_exports_x86_64 b/android/abi_gki_protected_exports_x86_64
new file mode 100644
index 0000000..6b40237
--- /dev/null
+++ b/android/abi_gki_protected_exports_x86_64
@@ -0,0 +1,337 @@
+__hci_cmd_send
+__hci_cmd_sync
+__hci_cmd_sync_ev
+__hci_cmd_sync_sk
+__hci_cmd_sync_status
+__hci_cmd_sync_status_sk
+__nfc_alloc_vendor_cmd_reply_skb
+alloc_can_err_skb
+alloc_can_skb
+alloc_candev_mqs
+alloc_canfd_skb
+alloc_canxl_skb
+arc4_crypt
+arc4_setkey
+baswap
+bt_accept_dequeue
+bt_accept_enqueue
+bt_accept_unlink
+bt_debugfs
+bt_err
+bt_err_ratelimited
+bt_info
+bt_procfs_cleanup
+bt_procfs_init
+bt_sock_ioctl
+bt_sock_link
+bt_sock_poll
+bt_sock_reclassify_lock
+bt_sock_recvmsg
+bt_sock_register
+bt_sock_stream_recvmsg
+bt_sock_unlink
+bt_sock_unregister
+bt_sock_wait_ready
+bt_sock_wait_state
+bt_status
+bt_to_errno
+bt_warn
+bt_warn_ratelimited
+btbcm_check_bdaddr
+btbcm_finalize
+btbcm_initialize
+btbcm_patchram
+btbcm_read_pcm_int_params
+btbcm_set_bdaddr
+btbcm_setup_apple
+btbcm_setup_patchram
+btbcm_write_pcm_int_params
+can_bus_off
+can_change_mtu
+can_change_state
+can_dropped_invalid_skb
+can_eth_ioctl_hwts
+can_ethtool_op_get_ts_info_hwts
+can_fd_dlc2len
+can_fd_len2dlc
+can_free_echo_skb
+can_get_echo_skb
+can_get_state_str
+can_proto_register
+can_proto_unregister
+can_put_echo_skb
+can_rx_offload_add_fifo
+can_rx_offload_add_manual
+can_rx_offload_add_timestamp
+can_rx_offload_del
+can_rx_offload_enable
+can_rx_offload_get_echo_skb
+can_rx_offload_irq_finish
+can_rx_offload_irq_offload_fifo
+can_rx_offload_irq_offload_timestamp
+can_rx_offload_queue_tail
+can_rx_offload_queue_timestamp
+can_rx_offload_threaded_irq_finish
+can_rx_register
+can_rx_unregister
+can_send
+can_skb_get_frame_len
+can_sock_destruct
+cdc_ncm_bind_common
+cdc_ncm_change_mtu
+cdc_ncm_fill_tx_frame
+cdc_ncm_rx_fixup
+cdc_ncm_rx_verify_ndp16
+cdc_ncm_rx_verify_ndp32
+cdc_ncm_rx_verify_nth16
+cdc_ncm_rx_verify_nth32
+cdc_ncm_select_altsetting
+cdc_ncm_tx_fixup
+cdc_ncm_unbind
+close_candev
+free_candev
+generic_mii_ioctl
+h4_recv_buf
+hci_alloc_dev_priv
+hci_cmd_sync
+hci_cmd_sync_cancel
+hci_cmd_sync_queue
+hci_conn_check_secure
+hci_conn_security
+hci_conn_switch_role
+hci_free_dev
+hci_get_route
+hci_mgmt_chan_register
+hci_mgmt_chan_unregister
+hci_recv_diag
+hci_recv_frame
+hci_register_cb
+hci_register_dev
+hci_release_dev
+hci_reset_dev
+hci_resume_dev
+hci_set_fw_info
+hci_set_hw_info
+hci_suspend_dev
+hci_uart_register_device
+hci_uart_tx_wakeup
+hci_uart_unregister_device
+hci_unregister_cb
+hci_unregister_dev
+hidp_hid_driver
+ieee802154_alloc_hw
+ieee802154_configure_durations
+ieee802154_free_hw
+ieee802154_hdr_peek
+ieee802154_hdr_peek_addrs
+ieee802154_hdr_pull
+ieee802154_hdr_push
+ieee802154_max_payload
+ieee802154_register_hw
+ieee802154_rx_irqsafe
+ieee802154_stop_queue
+ieee802154_unregister_hw
+ieee802154_wake_queue
+ieee802154_xmit_complete
+ieee802154_xmit_error
+ieee802154_xmit_hw_error
+l2cap_add_psm
+l2cap_chan_close
+l2cap_chan_connect
+l2cap_chan_create
+l2cap_chan_del
+l2cap_chan_list
+l2cap_chan_put
+l2cap_chan_send
+l2cap_chan_set_defaults
+l2cap_conn_get
+l2cap_conn_put
+l2cap_is_socket
+l2cap_register_user
+l2cap_unregister_user
+l2tp_recv_common
+l2tp_session_create
+l2tp_session_dec_refcount
+l2tp_session_delete
+l2tp_session_get
+l2tp_session_get_by_ifname
+l2tp_session_get_nth
+l2tp_session_inc_refcount
+l2tp_session_register
+l2tp_session_set_header_len
+l2tp_sk_to_tunnel
+l2tp_tunnel_create
+l2tp_tunnel_dec_refcount
+l2tp_tunnel_delete
+l2tp_tunnel_get
+l2tp_tunnel_get_nth
+l2tp_tunnel_get_session
+l2tp_tunnel_inc_refcount
+l2tp_tunnel_register
+l2tp_udp_encap_recv
+l2tp_xmit_skb
+lowpan_header_compress
+lowpan_header_decompress
+lowpan_nhc_add
+lowpan_nhc_del
+lowpan_register_netdev
+lowpan_register_netdevice
+lowpan_unregister_netdev
+lowpan_unregister_netdevice
+mii_check_gmii_support
+mii_check_link
+mii_check_media
+mii_ethtool_get_link_ksettings
+mii_ethtool_gset
+mii_ethtool_set_link_ksettings
+mii_ethtool_sset
+mii_link_ok
+mii_nway_restart
+nfc_add_se
+nfc_alloc_recv_skb
+nfc_allocate_device
+nfc_class
+nfc_dep_link_is_up
+nfc_driver_failure
+nfc_find_se
+nfc_fw_download_done
+nfc_get_local_general_bytes
+nfc_proto_register
+nfc_proto_unregister
+nfc_register_device
+nfc_remove_se
+nfc_se_connectivity
+nfc_se_transaction
+nfc_send_to_raw_sock
+nfc_set_remote_general_bytes
+nfc_target_lost
+nfc_targets_found
+nfc_tm_activated
+nfc_tm_data_received
+nfc_tm_deactivated
+nfc_unregister_device
+nfc_vendor_cmd_reply
+of_can_transceiver
+open_candev
+ppp_channel_index
+ppp_dev_name
+ppp_input
+ppp_input_error
+ppp_output_wakeup
+ppp_register_channel
+ppp_register_compressor
+ppp_register_net_channel
+ppp_unit_number
+ppp_unregister_channel
+ppp_unregister_compressor
+pppox_compat_ioctl
+pppox_ioctl
+pppox_unbind_sock
+qca_read_soc_version
+qca_send_pre_shutdown_cmd
+qca_set_bdaddr
+qca_set_bdaddr_rome
+qca_uart_setup
+register_candev
+register_pppox_proto
+rfkill_alloc
+rfkill_blocked
+rfkill_destroy
+rfkill_find_type
+rfkill_get_led_trigger_name
+rfkill_init_sw_state
+rfkill_pause_polling
+rfkill_register
+rfkill_resume_polling
+rfkill_set_hw_state_reason
+rfkill_set_led_trigger_name
+rfkill_set_states
+rfkill_set_sw_state
+rfkill_soft_blocked
+rfkill_unregister
+rtl8152_get_version
+safe_candev_priv
+slhc_compress
+slhc_free
+slhc_init
+slhc_remember
+slhc_toss
+slhc_uncompress
+tipc_dump_done
+tipc_dump_start
+tipc_nl_sk_walk
+tipc_sk_fill_sock_diag
+unregister_candev
+unregister_pppox_proto
+usb_serial_claim_interface
+usb_serial_deregister_drivers
+usb_serial_generic_chars_in_buffer
+usb_serial_generic_close
+usb_serial_generic_get_icount
+usb_serial_generic_open
+usb_serial_generic_process_read_urb
+usb_serial_generic_read_bulk_callback
+usb_serial_generic_resume
+usb_serial_generic_submit_read_urbs
+usb_serial_generic_throttle
+usb_serial_generic_tiocmiwait
+usb_serial_generic_unthrottle
+usb_serial_generic_wait_until_sent
+usb_serial_generic_write
+usb_serial_generic_write_bulk_callback
+usb_serial_generic_write_start
+usb_serial_handle_dcd_change
+usb_serial_port_softint
+usb_serial_register_drivers
+usb_serial_resume
+usb_serial_suspend
+usbnet_cdc_bind
+usbnet_cdc_status
+usbnet_cdc_unbind
+usbnet_cdc_update_filter
+usbnet_cdc_zte_rx_fixup
+usbnet_change_mtu
+usbnet_defer_kevent
+usbnet_device_suggests_idle
+usbnet_disconnect
+usbnet_ether_cdc_bind
+usbnet_generic_cdc_bind
+usbnet_get_drvinfo
+usbnet_get_endpoints
+usbnet_get_ethernet_addr
+usbnet_get_link
+usbnet_get_link_ksettings_internal
+usbnet_get_link_ksettings_mii
+usbnet_get_msglevel
+usbnet_link_change
+usbnet_manage_power
+usbnet_nway_reset
+usbnet_open
+usbnet_pause_rx
+usbnet_probe
+usbnet_purge_paused_rxq
+usbnet_read_cmd
+usbnet_read_cmd_nopm
+usbnet_resume
+usbnet_resume_rx
+usbnet_set_link_ksettings_mii
+usbnet_set_msglevel
+usbnet_set_rx_mode
+usbnet_skb_return
+usbnet_start_xmit
+usbnet_status_start
+usbnet_status_stop
+usbnet_stop
+usbnet_suspend
+usbnet_tx_timeout
+usbnet_unlink_rx_urbs
+usbnet_update_max_qlen
+usbnet_write_cmd
+usbnet_write_cmd_async
+usbnet_write_cmd_nopm
+wpan_phy_find
+wpan_phy_for_each
+wpan_phy_free
+wpan_phy_new
+wpan_phy_register
+wpan_phy_unregister
\ No newline at end of file
diff --git a/android/gki_aarch64_protected_modules b/android/gki_aarch64_protected_modules
new file mode 100644
index 0000000..2a232a6
--- /dev/null
+++ b/android/gki_aarch64_protected_modules
@@ -0,0 +1,56 @@
+drivers/bluetooth/btbcm.ko
+drivers/bluetooth/btqca.ko
+drivers/bluetooth/btsdio.ko
+drivers/bluetooth/hci_uart.ko
+drivers/net/can/dev/can-dev.ko
+drivers/net/can/slcan/slcan.ko
+drivers/net/can/vcan.ko
+drivers/net/mii.ko
+drivers/net/ppp/bsd_comp.ko
+drivers/net/ppp/ppp_deflate.ko
+drivers/net/ppp/ppp_generic.ko
+drivers/net/ppp/ppp_mppe.ko
+drivers/net/ppp/pppox.ko
+drivers/net/ppp/pptp.ko
+drivers/net/slip/slhc.ko
+drivers/net/usb/aqc111.ko
+drivers/net/usb/asix.ko
+drivers/net/usb/ax88179_178a.ko
+drivers/net/usb/cdc_eem.ko
+drivers/net/usb/cdc_ether.ko
+drivers/net/usb/cdc_ncm.ko
+drivers/net/usb/r8152.ko
+drivers/net/usb/r8153_ecm.ko
+drivers/net/usb/rtl8150.ko
+drivers/net/usb/usbnet.ko
+drivers/usb/class/cdc-acm.ko
+drivers/usb/serial/ftdi_sio.ko
+drivers/usb/serial/usbserial.ko
+lib/crypto/libarc4.ko
+net/6lowpan/6lowpan.ko
+net/6lowpan/nhc_dest.ko
+net/6lowpan/nhc_fragment.ko
+net/6lowpan/nhc_hop.ko
+net/6lowpan/nhc_ipv6.ko
+net/6lowpan/nhc_mobility.ko
+net/6lowpan/nhc_routing.ko
+net/6lowpan/nhc_udp.ko
+net/8021q/8021q.ko
+net/bluetooth/bluetooth.ko
+net/bluetooth/hidp/hidp.ko
+net/bluetooth/rfcomm/rfcomm.ko
+net/can/can.ko
+net/can/can-bcm.ko
+net/can/can-gw.ko
+net/can/can-raw.ko
+net/ieee802154/6lowpan/ieee802154_6lowpan.ko
+net/ieee802154/ieee802154.ko
+net/ieee802154/ieee802154_socket.ko
+net/l2tp/l2tp_core.ko
+net/l2tp/l2tp_ppp.ko
+net/mac802154/mac802154.ko
+net/nfc/nfc.ko
+net/rfkill/rfkill.ko
+net/tipc/diag.ko
+net/tipc/tipc.ko
+
diff --git a/android/gki_system_dlkm_modules b/android/gki_system_dlkm_modules
new file mode 100644
index 0000000..70befe1
--- /dev/null
+++ b/android/gki_system_dlkm_modules
@@ -0,0 +1,59 @@
+drivers/block/zram/zram.ko
+drivers/bluetooth/btbcm.ko
+drivers/bluetooth/btqca.ko
+drivers/bluetooth/btsdio.ko
+drivers/bluetooth/hci_uart.ko
+drivers/net/can/dev/can-dev.ko
+drivers/net/can/slcan/slcan.ko
+drivers/net/can/vcan.ko
+drivers/net/mii.ko
+drivers/net/ppp/bsd_comp.ko
+drivers/net/ppp/ppp_deflate.ko
+drivers/net/ppp/ppp_generic.ko
+drivers/net/ppp/ppp_mppe.ko
+drivers/net/ppp/pppox.ko
+drivers/net/ppp/pptp.ko
+drivers/net/slip/slhc.ko
+drivers/net/usb/aqc111.ko
+drivers/net/usb/asix.ko
+drivers/net/usb/ax88179_178a.ko
+drivers/net/usb/cdc_eem.ko
+drivers/net/usb/cdc_ether.ko
+drivers/net/usb/cdc_ncm.ko
+drivers/net/usb/r8152.ko
+drivers/net/usb/r8153_ecm.ko
+drivers/net/usb/rtl8150.ko
+drivers/net/usb/usbnet.ko
+drivers/usb/class/cdc-acm.ko
+drivers/usb/serial/ftdi_sio.ko
+drivers/usb/serial/usbserial.ko
+kernel/kheaders.ko
+lib/crypto/libarc4.ko
+mm/zsmalloc.ko
+net/6lowpan/6lowpan.ko
+net/6lowpan/nhc_dest.ko
+net/6lowpan/nhc_fragment.ko
+net/6lowpan/nhc_hop.ko
+net/6lowpan/nhc_ipv6.ko
+net/6lowpan/nhc_mobility.ko
+net/6lowpan/nhc_routing.ko
+net/6lowpan/nhc_udp.ko
+net/8021q/8021q.ko
+net/bluetooth/bluetooth.ko
+net/bluetooth/hidp/hidp.ko
+net/bluetooth/rfcomm/rfcomm.ko
+net/can/can.ko
+net/can/can-bcm.ko
+net/can/can-gw.ko
+net/can/can-raw.ko
+net/ieee802154/6lowpan/ieee802154_6lowpan.ko
+net/ieee802154/ieee802154.ko
+net/ieee802154/ieee802154_socket.ko
+net/l2tp/l2tp_core.ko
+net/l2tp/l2tp_ppp.ko
+net/mac802154/mac802154.ko
+net/nfc/nfc.ko
+net/rfkill/rfkill.ko
+net/tipc/diag.ko
+net/tipc/tipc.ko
+
diff --git a/android/gki_x86_64_protected_modules b/android/gki_x86_64_protected_modules
new file mode 100644
index 0000000..2a232a6
--- /dev/null
+++ b/android/gki_x86_64_protected_modules
@@ -0,0 +1,56 @@
+drivers/bluetooth/btbcm.ko
+drivers/bluetooth/btqca.ko
+drivers/bluetooth/btsdio.ko
+drivers/bluetooth/hci_uart.ko
+drivers/net/can/dev/can-dev.ko
+drivers/net/can/slcan/slcan.ko
+drivers/net/can/vcan.ko
+drivers/net/mii.ko
+drivers/net/ppp/bsd_comp.ko
+drivers/net/ppp/ppp_deflate.ko
+drivers/net/ppp/ppp_generic.ko
+drivers/net/ppp/ppp_mppe.ko
+drivers/net/ppp/pppox.ko
+drivers/net/ppp/pptp.ko
+drivers/net/slip/slhc.ko
+drivers/net/usb/aqc111.ko
+drivers/net/usb/asix.ko
+drivers/net/usb/ax88179_178a.ko
+drivers/net/usb/cdc_eem.ko
+drivers/net/usb/cdc_ether.ko
+drivers/net/usb/cdc_ncm.ko
+drivers/net/usb/r8152.ko
+drivers/net/usb/r8153_ecm.ko
+drivers/net/usb/rtl8150.ko
+drivers/net/usb/usbnet.ko
+drivers/usb/class/cdc-acm.ko
+drivers/usb/serial/ftdi_sio.ko
+drivers/usb/serial/usbserial.ko
+lib/crypto/libarc4.ko
+net/6lowpan/6lowpan.ko
+net/6lowpan/nhc_dest.ko
+net/6lowpan/nhc_fragment.ko
+net/6lowpan/nhc_hop.ko
+net/6lowpan/nhc_ipv6.ko
+net/6lowpan/nhc_mobility.ko
+net/6lowpan/nhc_routing.ko
+net/6lowpan/nhc_udp.ko
+net/8021q/8021q.ko
+net/bluetooth/bluetooth.ko
+net/bluetooth/hidp/hidp.ko
+net/bluetooth/rfcomm/rfcomm.ko
+net/can/can.ko
+net/can/can-bcm.ko
+net/can/can-gw.ko
+net/can/can-raw.ko
+net/ieee802154/6lowpan/ieee802154_6lowpan.ko
+net/ieee802154/ieee802154.ko
+net/ieee802154/ieee802154_socket.ko
+net/l2tp/l2tp_core.ko
+net/l2tp/l2tp_ppp.ko
+net/mac802154/mac802154.ko
+net/nfc/nfc.ko
+net/rfkill/rfkill.ko
+net/tipc/diag.ko
+net/tipc/tipc.ko
+
diff --git a/arch/Kconfig b/arch/Kconfig
index 81599f5c..ee64dd7 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -651,6 +651,13 @@
 	  reading and writing arbitrary memory may be able to locate them
 	  and hijack control flow by modifying the stacks.
 
+config DYNAMIC_SCS
+	bool
+	help
+	  Set by the arch code if it relies on code patching to insert the
+	  shadow call stack push and pop instructions rather than on the
+	  compiler.
+
 config LTO
 	bool
 	help
@@ -1316,6 +1323,9 @@
 config ARCH_HAS_MEM_ENCRYPT
 	bool
 
+config ARCH_HAS_MEM_RELINQUISH
+	bool
+
 config ARCH_HAS_CC_PLATFORM
 	bool
 
diff --git a/arch/arm/include/asm/hypervisor.h b/arch/arm/include/asm/hypervisor.h
index bd61502..8133c8c 100644
--- a/arch/arm/include/asm/hypervisor.h
+++ b/arch/arm/include/asm/hypervisor.h
@@ -6,5 +6,6 @@
 
 void kvm_init_hyp_services(void);
 bool kvm_arm_hyp_service_available(u32 func_id);
+void kvm_arm_init_hyp_services(void);
 
 #endif
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c
index a2b31d9..3d105c0 100644
--- a/arch/arm/kernel/process.c
+++ b/arch/arm/kernel/process.c
@@ -316,7 +316,7 @@ static int __init gate_vma_init(void)
 	gate_vma.vm_page_prot = PAGE_READONLY_EXEC;
 	gate_vma.vm_start = 0xffff0000;
 	gate_vma.vm_end	= 0xffff0000 + PAGE_SIZE;
-	gate_vma.vm_flags = VM_READ | VM_EXEC | VM_MAYREAD | VM_MAYEXEC;
+	vm_flags_init(&gate_vma, VM_READ | VM_EXEC | VM_MAYREAD | VM_MAYEXEC);
 	return 0;
 }
 arch_initcall(gate_vma_init);
diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c
index 978db2d..3751c25a 100644
--- a/arch/arm/kernel/smp.c
+++ b/arch/arm/kernel/smp.c
@@ -51,6 +51,10 @@
 #define CREATE_TRACE_POINTS
 #include <trace/events/ipi.h>
 
+EXPORT_TRACEPOINT_SYMBOL_GPL(ipi_raise);
+EXPORT_TRACEPOINT_SYMBOL_GPL(ipi_entry);
+EXPORT_TRACEPOINT_SYMBOL_GPL(ipi_exit);
+
 /*
  * as from 2.5, kernels no longer have an init_tasks structure
  * so we need some other way of telling a new secondary core
diff --git a/arch/arm64/Kbuild b/arch/arm64/Kbuild
index 5bfbf7d..e4847ba 100644
--- a/arch/arm64/Kbuild
+++ b/arch/arm64/Kbuild
@@ -3,6 +3,7 @@
 obj-$(CONFIG_KVM)	+= kvm/
 obj-$(CONFIG_XEN)	+= xen/
 obj-$(subst m,y,$(CONFIG_HYPERV))	+= hyperv/
+obj-$(CONFIG_GUNYAH)	+= gunyah/
 obj-$(CONFIG_CRYPTO)	+= crypto/
 
 # for cleaning
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
index 43ff7c7..bf11f89 100644
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
@@ -28,9 +28,12 @@
 	select ARCH_HAS_FORTIFY_SOURCE
 	select ARCH_HAS_GCOV_PROFILE_ALL
 	select ARCH_HAS_GIGANTIC_PAGE
+	select ARCH_HAS_IOREMAP_PHYS_HOOKS
 	select ARCH_HAS_KCOV
 	select ARCH_HAS_KEEPINITRD
 	select ARCH_HAS_MEMBARRIER_SYNC_CORE
+	select ARCH_HAS_MEM_ENCRYPT
+	select ARCH_HAS_MEM_RELINQUISH
 	select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE
 	select ARCH_HAS_PTE_DEVMAP
 	select ARCH_HAS_PTE_SPECIAL
@@ -93,6 +96,7 @@
 	select ARCH_SUPPORTS_INT128 if CC_HAS_INT128
 	select ARCH_SUPPORTS_NUMA_BALANCING
 	select ARCH_SUPPORTS_PAGE_TABLE_CHECK
+	select ARCH_SUPPORTS_PER_VMA_LOCK
 	select ARCH_WANT_COMPAT_IPC_PARSE_VERSION if COMPAT
 	select ARCH_WANT_DEFAULT_BPF_JIT
 	select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT
@@ -140,6 +144,7 @@
 	select GENERIC_GETTIMEOFDAY
 	select GENERIC_VDSO_TIME_NS
 	select HARDIRQS_SW_RESEND
+	select HAVE_MOD_ARCH_SPECIFIC if (ARM64_MODULE_PLTS || KVM)
 	select HAVE_MOVE_PMD
 	select HAVE_MOVE_PUD
 	select HAVE_PCI
@@ -369,6 +374,9 @@
 	default 0xeffffff800000000 if ARM64_VA_BITS_36 && KASAN_SW_TAGS
 	default 0xffffffffffffffff
 
+config UNWIND_TABLES
+	bool
+
 source "arch/arm64/Kconfig.platforms"
 
 menu "Kernel Features"
@@ -1132,6 +1140,23 @@
 
 	  If unsure, say Y.
 
+config ANDROID_ARM64_WORKAROUND_DMA_BEYOND_POC
+	bool "Remove cacheable aliases of non-cacheable DMA buffers at stage-2"
+	default y
+	depends on KVM
+	help
+	  Some SoCs integrate non-coherent DMA-capable peripherals beyond
+	  the Point of Coherency (PoC), resulting in loss of coherency
+	  with non-cacheable mappings on the CPU in the presence of a
+	  cacheable alias.
+
+	  This workaround provides a mechanism (controlled by the kernel
+	  command-line) to remap pages as non-cacheable in pKVM's stage-2
+	  mapping for the host, thereby removing any cacheable aliases
+	  that may be present in the stage-1 mapping.
+
+	  If unsure, say Y.
+
 endmenu # "ARM errata workarounds via the alternatives framework"
 
 choice
@@ -2045,7 +2070,6 @@
 config ARM64_MODULE_PLTS
 	bool "Use PLTs to allow module memory to spill over into vmalloc area"
 	depends on MODULES
-	select HAVE_MOD_ARCH_SPECIFIC
 	help
 	  Allocate PLTs when loading modules so that jumps and calls whose
 	  targets are too far away for their relative offsets to be encoded
@@ -2156,6 +2180,15 @@
 
           If unsure, leave the default value.
 
+config UNWIND_PATCH_PAC_INTO_SCS
+	bool "Enable shadow call stack dynamically using code patching"
+	# needs Clang with https://reviews.llvm.org/D111780 incorporated
+	depends on CC_IS_CLANG && CLANG_VERSION >= 150000
+	depends on ARM64_PTR_AUTH_KERNEL && CC_HAS_BRANCH_PROT_PAC_RET
+	depends on SHADOW_CALL_STACK
+	select UNWIND_TABLES
+	select DYNAMIC_SCS
+
 endmenu # "Kernel Features"
 
 menu "Boot options"
@@ -2191,6 +2224,12 @@
 	  the boot loader doesn't provide any, the default kernel command
 	  string provided in CMDLINE will be used.
 
+config CMDLINE_EXTEND
+	bool "Extend bootloader kernel arguments"
+	help
+	  The command-line arguments provided by the boot loader will be
+	  appended to the default kernel command string.
+
 config CMDLINE_FORCE
 	bool "Always use the default kernel command string"
 	help
diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile
index 5e56d26..908eaf9 100644
--- a/arch/arm64/Makefile
+++ b/arch/arm64/Makefile
@@ -45,8 +45,13 @@
 KBUILD_AFLAGS	+= $(call cc-option,-mabi=lp64)
 
 # Avoid generating .eh_frame* sections.
+ifneq ($(CONFIG_UNWIND_TABLES),y)
 KBUILD_CFLAGS	+= -fno-asynchronous-unwind-tables -fno-unwind-tables
 KBUILD_AFLAGS	+= -fno-asynchronous-unwind-tables -fno-unwind-tables
+else
+KBUILD_CFLAGS	+= -fasynchronous-unwind-tables
+KBUILD_AFLAGS	+= -fasynchronous-unwind-tables
+endif
 
 ifeq ($(CONFIG_STACKPROTECTOR_PER_TASK),y)
 prepare: stack_protector_prepare
@@ -72,10 +77,16 @@
 # We enable additional protection for leaf functions as there is some
 # narrow potential for ROP protection benefits and no substantial
 # performance impact has been observed.
+PACRET-y := pac-ret+leaf
+
+# Using a shadow call stack in leaf functions is too costly, so avoid PAC there
+# as well when we may be patching PAC into SCS
+PACRET-$(CONFIG_UNWIND_PATCH_PAC_INTO_SCS) := pac-ret
+
 ifeq ($(CONFIG_ARM64_BTI_KERNEL),y)
-branch-prot-flags-$(CONFIG_CC_HAS_BRANCH_PROT_PAC_RET_BTI) := -mbranch-protection=pac-ret+leaf+bti
+branch-prot-flags-$(CONFIG_CC_HAS_BRANCH_PROT_PAC_RET_BTI) := -mbranch-protection=$(PACRET-y)+bti
 else
-branch-prot-flags-$(CONFIG_CC_HAS_BRANCH_PROT_PAC_RET) := -mbranch-protection=pac-ret+leaf
+branch-prot-flags-$(CONFIG_CC_HAS_BRANCH_PROT_PAC_RET) := -mbranch-protection=$(PACRET-y)
 endif
 # -march=armv8.3-a enables the non-nops instructions for PAC, to avoid the
 # compiler to generate them and consequently to break the single image contract
@@ -155,7 +166,10 @@
 KBUILD_IMAGE	:= $(boot)/vmlinuz.efi
 endif
 
+# Don't compile Image in mixed build with "all" target
+ifndef KBUILD_MIXED_TREE
 all:	$(notdir $(KBUILD_IMAGE))
+endif
 
 
 Image vmlinuz.efi: vmlinux
@@ -187,6 +201,11 @@
   endif
 endif
 
+ifeq ($(CONFIG_KVM),y)
+archscripts:
+	$(Q)$(MAKE) $(build)=arch/arm64/tools gen-hyprel
+endif
+
 ifeq ($(KBUILD_EXTMOD),)
 # We need to generate vdso-offsets.h before compiling certain files in kernel/.
 # In order to do that, we should use the archprepare target, but we can't since
diff --git a/arch/arm64/Makefile.postlink b/arch/arm64/Makefile.postlink
new file mode 100644
index 0000000..8cf297f
--- /dev/null
+++ b/arch/arm64/Makefile.postlink
@@ -0,0 +1,49 @@
+# SPDX-License-Identifier: GPL-2.0
+
+#
+# This file is included by the generic Kbuild makefile to permit the
+# architecture to perform postlink actions on vmlinux and any .ko module file.
+# In this case, we only need it for fips140.ko, which needs some postprocessing
+# for the integrity check mandated by FIPS. This involves making copies of the
+# relocation sections so that the module will have access to them at
+# initialization time, and calculating and injecting a HMAC digest into the
+# module. All other targets are NOPs.
+#
+
+PHONY := __archpost
+__archpost:
+
+-include include/config/auto.conf
+include scripts/Kbuild.include
+
+CMD_FIPS140_GEN_HMAC = crypto/fips140_gen_hmac
+quiet_cmd_gen_hmac = HMAC    $@
+      cmd_gen_hmac = $(OBJCOPY) $@ \
+	--dump-section=$(shell $(READELF) -SW $@|grep -Eo '\.rela\.text\S*')=$@.rela.text \
+	--dump-section=$(shell $(READELF) -SW $@|grep -Eo '\.rela\.rodata\S*')=$@.rela.rodata && \
+	$(OBJCOPY) $@ \
+	--add-section=.init.rela.text=$@.rela.text \
+	--add-section=.init.rela.rodata=$@.rela.rodata \
+	--set-section-flags=.init.rela.text=alloc,readonly \
+	--set-section-flags=.init.rela.rodata=alloc,readonly && \
+	$(CMD_FIPS140_GEN_HMAC) $@
+
+# `@true` prevents complaints when there is nothing to be done
+
+vmlinux: FORCE
+	@true
+
+$(objtree)/crypto/fips140.ko: FORCE
+	$(call cmd,gen_hmac)
+
+%.ko: FORCE
+	@true
+
+clean:
+	rm -f $(objtree)/crypto/fips140.ko.rela.*
+
+PHONY += FORCE clean
+
+FORCE:
+
+.PHONY: $(PHONY)
diff --git a/arch/arm64/configs/16k_gki.fragment b/arch/arm64/configs/16k_gki.fragment
new file mode 100644
index 0000000..b923493
--- /dev/null
+++ b/arch/arm64/configs/16k_gki.fragment
@@ -0,0 +1,3 @@
+CONFIG_ARM64_16K_PAGES=y
+# b/241785095
+# CONFIG_INCREMENTAL_FS is not set
diff --git a/arch/arm64/configs/amlogic_gki.fragment b/arch/arm64/configs/amlogic_gki.fragment
new file mode 100644
index 0000000..e577f55
--- /dev/null
+++ b/arch/arm64/configs/amlogic_gki.fragment
@@ -0,0 +1,142 @@
+#
+# Generic drivers/frameworks
+#
+CONFIG_COMMON_CLK_PWM=m
+CONFIG_REGULATOR_PWM=m
+CONFIG_PWRSEQ_EMMC=m
+CONFIG_PWRSEQ_SIMPLE=m
+CONFIG_USB_DWC2=m
+CONFIG_LEDS_GPIO=m
+
+#
+# Networking
+#
+CONFIG_REALTEK_PHY=m
+CONFIG_STMMAC_ETH=m
+CONFIG_STMMAC_PLATFORM=m
+
+#
+# WLAN
+#
+CONFIG_WLAN_VENDOR_BROADCOM=y
+CONFIG_BRCMUTIL=m
+CONFIG_BRCMFMAC=m
+CONFIG_BRCMFMAC_PROTO_BCDC=y
+CONFIG_BRCMFMAC_SDIO=y
+
+#
+# Amlogic
+#
+CONFIG_ARCH_MESON=y
+CONFIG_SERIAL_MESON=m
+CONFIG_SERIAL_MESON_CONSOLE=y
+
+#
+# Amlogic drivers as modules
+#
+
+# core
+CONFIG_MESON_SM=m
+CONFIG_RESET_MESON=m
+CONFIG_MESON_IRQ_GPIO=m
+
+# clocks
+CONFIG_COMMON_CLK_MESON_REGMAP=m
+CONFIG_COMMON_CLK_MESON_DUALDIV=m
+CONFIG_COMMON_CLK_MESON_MPLL=m
+CONFIG_COMMON_CLK_MESON_PHASE=m
+CONFIG_COMMON_CLK_MESON_PLL=m
+CONFIG_COMMON_CLK_MESON_SCLK_DIV=m
+CONFIG_COMMON_CLK_MESON_VID_PLL_DIV=m
+CONFIG_COMMON_CLK_MESON_AO_CLKC=m
+CONFIG_COMMON_CLK_MESON_EE_CLKC=m
+CONFIG_COMMON_CLK_MESON_CPU_DYNDIV=m
+CONFIG_COMMON_CLK_GXBB=m
+CONFIG_COMMON_CLK_AXG=m
+CONFIG_COMMON_CLK_G12A=m
+
+# PHY
+CONFIG_PHY_MESON8B_USB2=m
+CONFIG_PHY_MESON_GXL_USB2=m
+CONFIG_PHY_MESON_G12A_USB2=m
+CONFIG_PHY_MESON_G12A_USB3_PCIE=m
+CONFIG_PHY_MESON_AXG_PCIE=m
+CONFIG_PHY_MESON_AXG_MIPI_PCIE_ANALOG=m
+
+# peripherals
+CONFIG_I2C_MESON=m
+CONFIG_MMC_MESON_GX=m
+CONFIG_HW_RANDOM_MESON=m
+CONFIG_USB_DWC3_MESON_G12A=m
+CONFIG_MESON_SARADC=m
+CONFIG_SPI_MESON_SPICC=m
+CONFIG_SPI_MESON_SPIFC=m
+CONFIG_PCI_MESON=m
+CONFIG_DWMAC_MESON=m
+CONFIG_MDIO_BUS_MUX_MESON_G12A=m
+CONFIG_MESON_GXL_PHY=m
+CONFIG_PINCTRL_MESON=m
+CONFIG_PINCTRL_MESON_GXBB=m
+CONFIG_PINCTRL_MESON_GXL=m
+CONFIG_PINCTRL_MESON_AXG=m
+CONFIG_PINCTRL_MESON_AXG_PMX=m
+CONFIG_PINCTRL_MESON_G12A=m
+CONFIG_MESON_GXBB_WATCHDOG=m
+CONFIG_MESON_WATCHDOG=m
+CONFIG_MTD_NAND_MESON=m
+CONFIG_PWM_MESON=m
+CONFIG_IR_MESON=m
+CONFIG_MESON_EFUSE=m
+CONFIG_MFD_KHADAS_MCU=m
+CONFIG_KHADAS_MCU_FAN_THERMAL=m
+CONFIG_AMLOGIC_THERMAL=m
+
+# sound
+CONFIG_SND_MESON_AXG_SOUND_CARD=m
+CONFIG_SND_MESON_GX_SOUND_CARD=m
+CONFIG_SND_MESON_G12A_TOHDMITX=m
+
+# display / video
+CONFIG_DRM_MESON=m
+CONFIG_DRM_MESON_DW_HDMI=m
+CONFIG_DRM_DW_HDMI=m
+CONFIG_DRM_DW_HDMI_AHB_AUDIO=m
+CONFIG_DRM_DW_HDMI_I2S_AUDIO=m
+CONFIG_DRM_DW_HDMI_CEC=m
+CONFIG_CEC_MESON_AO=m
+CONFIG_CEC_MESON_G12A_AO=m
+CONFIG_VIDEO_MESON_GE2D=m
+
+# SoC drivers
+CONFIG_MESON_CANVAS=m
+CONFIG_MESON_CLK_MEASURE=m
+CONFIG_MESON_GX_PM_DOMAINS=m
+CONFIG_MESON_EE_PM_DOMAINS=m
+CONFIG_MESON_SECURE_PM_DOMAINS=m
+
+#
+# Amlogic drivers disable
+#
+
+# 32-bit SoC drivers
+CONFIG_MESON6_TIMER=n
+CONFIG_MESON_MX_SOCINFO=n
+
+# only needed by DRM on S805X
+CONFIG_MESON_GX_SOCINFO=n
+
+#
+# Debug / Testing
+#
+
+# devtmpfs needed for buildroot/udev module loading, serial console
+#CONFIG_DEVTMPFS=y
+#CONFIG_DEVTMPFS_MOUNT=y
+
+# debug/testing with FB console
+#CONFIG_DRM_KMS_FB_HELPER=y
+#CONFIG_DRM_FBDEV_EMULATION=y
+#CONFIG_FB=y
+#CONFIG_VT=y
+#CONFIG_FRAMEBUFFER_CONSOLE=y
+#CONFIG_LOGO=y
diff --git a/arch/arm64/configs/db845c_gki.fragment b/arch/arm64/configs/db845c_gki.fragment
new file mode 100644
index 0000000..4d55a74
--- /dev/null
+++ b/arch/arm64/configs/db845c_gki.fragment
@@ -0,0 +1,316 @@
+# CONFIG_MODULE_SIG_ALL is not set
+CONFIG_QRTR=m
+CONFIG_QRTR_TUN=m
+CONFIG_SCSI_UFS_QCOM=m
+CONFIG_INPUT_PM8941_PWRKEY=m
+CONFIG_SERIAL_MSM=m
+CONFIG_I2C_QCOM_GENI=m
+CONFIG_I2C_QUP=m
+CONFIG_PINCTRL_MSM=m
+CONFIG_PINCTRL_QCOM_SPMI_PMIC=m
+CONFIG_PINCTRL_SDM845=m
+CONFIG_POWER_RESET_QCOM_PON=m
+CONFIG_SYSCON_REBOOT_MODE=m
+CONFIG_QCOM_TSENS=m
+CONFIG_QCOM_WDT=m
+CONFIG_PM8916_WATCHDOG=m
+CONFIG_MFD_SPMI_PMIC=m
+CONFIG_SPMI_MSM_PMIC_ARB=m
+CONFIG_REGULATOR_QCOM_RPMH=m
+CONFIG_REGULATOR_QCOM_SPMI=m
+CONFIG_DRM_MSM=m
+# CONFIG_DRM_MSM_DSI_28NM_PHY is not set
+# CONFIG_DRM_MSM_DSI_20NM_PHY is not set
+# CONFIG_DRM_MSM_DSI_28NM_8960_PHY is not set
+CONFIG_DRM_LONTIUM_LT9611=m
+CONFIG_USB_OHCI_HCD=m
+CONFIG_USB_OHCI_HCD_PLATFORM=m
+# CONFIG_USB_DWC3_HAPS is not set
+# CONFIG_USB_DWC3_OF_SIMPLE is not set
+CONFIG_USB_GADGET_VBUS_DRAW=500
+# CONFIG_USB_DUMMY_HCD is not set
+CONFIG_USB_ROLE_SWITCH=m
+CONFIG_USB_ULPI_BUS=m
+CONFIG_MMC_SDHCI_MSM=m
+CONFIG_RTC_DRV_PM8XXX=m
+CONFIG_COMMON_CLK_QCOM=m
+CONFIG_SDM_GPUCC_845=m
+CONFIG_QCOM_CLK_RPMH=m
+CONFIG_SDM_DISPCC_845=m
+CONFIG_HWSPINLOCK_QCOM=m
+CONFIG_QCOM_LLCC=m
+CONFIG_QCOM_RMTFS_MEM=m
+CONFIG_QCOM_SMEM=m
+CONFIG_QCOM_SMSM=m
+CONFIG_EXTCON_USB_GPIO=m
+CONFIG_RESET_QCOM_AOSS=m
+CONFIG_RESET_QCOM_PDC=m
+CONFIG_PHY_QCOM_QMP=m
+CONFIG_PHY_QCOM_QUSB2=m
+CONFIG_PHY_QCOM_USB_HS=m
+CONFIG_NVMEM_QCOM_QFPROM=m
+CONFIG_INTERCONNECT_QCOM=y
+CONFIG_INTERCONNECT_QCOM_OSM_L3=m
+CONFIG_INTERCONNECT_QCOM_SDM845=m
+CONFIG_QCOM_RPMH=m
+CONFIG_QCOM_RPMHPD=m
+CONFIG_WLAN_VENDOR_ATH=y
+CONFIG_ATH10K_AHB=y
+CONFIG_ATH10K=m
+CONFIG_ATH10K_PCI=m
+CONFIG_ATH10K_SNOC=m
+CONFIG_QRTR_SMD=m
+CONFIG_QCOM_FASTRPC=m
+CONFIG_QCOM_APCS_IPC=m
+CONFIG_QCOM_Q6V5_COMMON=m
+CONFIG_QCOM_RPROC_COMMON=m
+CONFIG_QCOM_Q6V5_ADSP=m
+CONFIG_QCOM_Q6V5_MSS=m
+CONFIG_QCOM_Q6V5_PAS=m
+CONFIG_QCOM_Q6V5_WCSS=m
+CONFIG_QCOM_SYSMON=m
+CONFIG_RPMSG_QCOM_GLINK_SMEM=m
+CONFIG_RPMSG_QCOM_SMD=m
+CONFIG_QCOM_AOSS_QMP=m
+CONFIG_QCOM_SMP2P=m
+CONFIG_QCOM_SOCINFO=m
+CONFIG_QCOM_APR=m
+CONFIG_QCOM_GLINK_SSR=m
+CONFIG_RPMSG_QCOM_GLINK_RPM=m
+CONFIG_QCOM_PDC=m
+CONFIG_QCOM_SCM=m
+CONFIG_ARM_SMMU=m
+CONFIG_ARM_QCOM_CPUFREQ_HW=m
+# XXX Audio bits start here
+CONFIG_I2C_CHARDEV=m
+CONFIG_I2C_MUX=m
+CONFIG_I2C_MUX_PCA954x=m
+CONFIG_I2C_DESIGNWARE_PLATFORM=m
+CONFIG_I2C_RK3X=m
+CONFIG_SPI_PL022=m
+CONFIG_SPI_QCOM_QSPI=m
+CONFIG_SPI_QUP=m
+CONFIG_SPI_QCOM_GENI=m
+CONFIG_GPIO_WCD934X=m
+CONFIG_MFD_WCD934X=m
+CONFIG_REGULATOR_GPIO=m
+CONFIG_SND_SOC_QCOM=m
+CONFIG_SND_SOC_QCOM_COMMON=m
+CONFIG_SND_SOC_QDSP6_COMMON=m
+CONFIG_SND_SOC_QDSP6_CORE=m
+CONFIG_SND_SOC_QDSP6_AFE=m
+CONFIG_SND_SOC_QDSP6_AFE_DAI=m
+CONFIG_SND_SOC_QDSP6_ADM=m
+CONFIG_SND_SOC_QDSP6_ROUTING=m
+CONFIG_SND_SOC_QDSP6_ASM=m
+CONFIG_SND_SOC_QDSP6_ASM_DAI=m
+CONFIG_SND_SOC_QDSP6=m
+CONFIG_SND_SOC_SDM845=m
+CONFIG_SND_SOC_DMIC=m
+CONFIG_SND_SOC_WCD9335=m
+CONFIG_SND_SOC_WCD934X=m
+CONFIG_SND_SOC_WSA881X=m
+CONFIG_QCOM_BAM_DMA=m
+CONFIG_QCOM_GPI_DMA=m
+CONFIG_SPMI_PMIC_CLKDIV=m
+CONFIG_SOUNDWIRE=m
+CONFIG_SOUNDWIRE_QCOM=m
+CONFIG_SLIMBUS=m
+CONFIG_SLIM_QCOM_NGD_CTRL=m
+CONFIG_DMABUF_HEAPS_SYSTEM=m
+CONFIG_VIDEO_QCOM_VENUS=m
+CONFIG_SDM_VIDEOCC_845=m
+# CONFIG_CXD2880_SPI_DRV is not set
+# CONFIG_MEDIA_TUNER_SIMPLE is not set
+# CONFIG_MEDIA_TUNER_TDA18250 is not set
+# CONFIG_MEDIA_TUNER_TDA8290 is not set
+# CONFIG_MEDIA_TUNER_TDA827X is not set
+# CONFIG_MEDIA_TUNER_TDA18271 is not set
+# CONFIG_MEDIA_TUNER_TDA9887 is not set
+# CONFIG_MEDIA_TUNER_TEA5761 is not set
+# CONFIG_MEDIA_TUNER_TEA5767 is not set
+# CONFIG_MEDIA_TUNER_MSI001 is not set
+# CONFIG_MEDIA_TUNER_MT20XX is not set
+# CONFIG_MEDIA_TUNER_MT2060 is not set
+# CONFIG_MEDIA_TUNER_MT2063 is not set
+# CONFIG_MEDIA_TUNER_MT2266 is not set
+# CONFIG_MEDIA_TUNER_MT2131 is not set
+# CONFIG_MEDIA_TUNER_QT1010 is not set
+# CONFIG_MEDIA_TUNER_XC2028 is not set
+# CONFIG_MEDIA_TUNER_XC5000 is not set
+# CONFIG_MEDIA_TUNER_XC4000 is not set
+# CONFIG_MEDIA_TUNER_MXL5005S is not set
+# CONFIG_MEDIA_TUNER_MXL5007T is not set
+# CONFIG_MEDIA_TUNER_MC44S803 is not set
+# CONFIG_MEDIA_TUNER_MAX2165 is not set
+# CONFIG_MEDIA_TUNER_TDA18218 is not set
+# CONFIG_MEDIA_TUNER_FC0011 is not set
+# CONFIG_MEDIA_TUNER_FC0012 is not set
+# CONFIG_MEDIA_TUNER_FC0013 is not set
+# CONFIG_MEDIA_TUNER_TDA18212 is not set
+# CONFIG_MEDIA_TUNER_E4000 is not set
+# CONFIG_MEDIA_TUNER_FC2580 is not set
+# CONFIG_MEDIA_TUNER_M88RS6000T is not set
+# CONFIG_MEDIA_TUNER_TUA9001 is not set
+# CONFIG_MEDIA_TUNER_SI2157 is not set
+# CONFIG_MEDIA_TUNER_IT913X is not set
+# CONFIG_MEDIA_TUNER_R820T is not set
+# CONFIG_MEDIA_TUNER_MXL301RF is not set
+# CONFIG_MEDIA_TUNER_QM1D1C0042 is not set
+# CONFIG_MEDIA_TUNER_QM1D1B0004 is not set
+# CONFIG_DVB_STB0899 is not set
+# CONFIG_DVB_STB6100 is not set
+# CONFIG_DVB_STV090x is not set
+# CONFIG_DVB_STV0910 is not set
+# CONFIG_DVB_STV6110x is not set
+# CONFIG_DVB_STV6111 is not set
+# CONFIG_DVB_MXL5XX is not set
+# CONFIG_DVB_M88DS3103 is not set
+# CONFIG_DVB_DRXK is not set
+# CONFIG_DVB_TDA18271C2DD is not set
+# CONFIG_DVB_SI2165 is not set
+# CONFIG_DVB_MN88472 is not set
+# CONFIG_DVB_MN88473 is not set
+# CONFIG_DVB_CX24110 is not set
+# CONFIG_DVB_CX24123 is not set
+# CONFIG_DVB_MT312 is not set
+# CONFIG_DVB_ZL10036 is not set
+# CONFIG_DVB_ZL10039 is not set
+# CONFIG_DVB_S5H1420 is not set
+# CONFIG_DVB_STV0288 is not set
+# CONFIG_DVB_STB6000 is not set
+# CONFIG_DVB_STV0299 is not set
+# CONFIG_DVB_STV6110 is not set
+# CONFIG_DVB_STV0900 is not set
+# CONFIG_DVB_TDA8083 is not set
+# CONFIG_DVB_TDA10086 is not set
+# CONFIG_DVB_TDA8261 is not set
+# CONFIG_DVB_VES1X93 is not set
+# CONFIG_DVB_TUNER_ITD1000 is not set
+# CONFIG_DVB_TUNER_CX24113 is not set
+# CONFIG_DVB_TDA826X is not set
+# CONFIG_DVB_TUA6100 is not set
+# CONFIG_DVB_CX24116 is not set
+# CONFIG_DVB_CX24117 is not set
+# CONFIG_DVB_CX24120 is not set
+# CONFIG_DVB_SI21XX is not set
+# CONFIG_DVB_TS2020 is not set
+# CONFIG_DVB_DS3000 is not set
+# CONFIG_DVB_MB86A16 is not set
+# CONFIG_DVB_TDA10071 is not set
+# CONFIG_DVB_SP8870 is not set
+# CONFIG_DVB_SP887X is not set
+# CONFIG_DVB_CX22700 is not set
+# CONFIG_DVB_CX22702 is not set
+# CONFIG_DVB_S5H1432 is not set
+# CONFIG_DVB_DRXD is not set
+# CONFIG_DVB_L64781 is not set
+# CONFIG_DVB_TDA1004X is not set
+# CONFIG_DVB_NXT6000 is not set
+# CONFIG_DVB_MT352 is not set
+# CONFIG_DVB_ZL10353 is not set
+# CONFIG_DVB_DIB3000MB is not set
+# CONFIG_DVB_DIB3000MC is not set
+# CONFIG_DVB_DIB7000M is not set
+# CONFIG_DVB_DIB7000P is not set
+# CONFIG_DVB_DIB9000 is not set
+# CONFIG_DVB_TDA10048 is not set
+# CONFIG_DVB_AF9013 is not set
+# CONFIG_DVB_EC100 is not set
+# CONFIG_DVB_STV0367 is not set
+# CONFIG_DVB_CXD2820R is not set
+# CONFIG_DVB_CXD2841ER is not set
+# CONFIG_DVB_RTL2830 is not set
+# CONFIG_DVB_RTL2832 is not set
+# CONFIG_DVB_RTL2832_SDR is not set
+# CONFIG_DVB_SI2168 is not set
+# CONFIG_DVB_ZD1301_DEMOD is not set
+# CONFIG_DVB_CXD2880 is not set
+# CONFIG_DVB_VES1820 is not set
+# CONFIG_DVB_TDA10021 is not set
+# CONFIG_DVB_TDA10023 is not set
+# CONFIG_DVB_STV0297 is not set
+# CONFIG_DVB_NXT200X is not set
+# CONFIG_DVB_OR51211 is not set
+# CONFIG_DVB_OR51132 is not set
+# CONFIG_DVB_BCM3510 is not set
+# CONFIG_DVB_LGDT330X is not set
+# CONFIG_DVB_LGDT3305 is not set
+# CONFIG_DVB_LGDT3306A is not set
+# CONFIG_DVB_LG2160 is not set
+# CONFIG_DVB_S5H1409 is not set
+# CONFIG_DVB_AU8522_DTV is not set
+# CONFIG_DVB_AU8522_V4L is not set
+# CONFIG_DVB_S5H1411 is not set
+# CONFIG_DVB_S921 is not set
+# CONFIG_DVB_DIB8000 is not set
+# CONFIG_DVB_MB86A20S is not set
+# CONFIG_DVB_TC90522 is not set
+# CONFIG_DVB_MN88443X is not set
+# CONFIG_DVB_PLL is not set
+# CONFIG_DVB_TUNER_DIB0070 is not set
+# CONFIG_DVB_TUNER_DIB0090 is not set
+# CONFIG_DVB_DRX39XYJ is not set
+# CONFIG_DVB_LNBH25 is not set
+# CONFIG_DVB_LNBH29 is not set
+# CONFIG_DVB_LNBP21 is not set
+# CONFIG_DVB_LNBP22 is not set
+# CONFIG_DVB_ISL6405 is not set
+# CONFIG_DVB_ISL6421 is not set
+# CONFIG_DVB_ISL6423 is not set
+# CONFIG_DVB_A8293 is not set
+# CONFIG_DVB_LGS8GL5 is not set
+# CONFIG_DVB_LGS8GXX is not set
+# CONFIG_DVB_ATBM8830 is not set
+# CONFIG_DVB_TDA665x is not set
+# CONFIG_DVB_IX2505V is not set
+# CONFIG_DVB_M88RS2000 is not set
+# CONFIG_DVB_AF9033 is not set
+# CONFIG_DVB_HORUS3A is not set
+# CONFIG_DVB_ASCOT2E is not set
+# CONFIG_DVB_HELENE is not set
+# CONFIG_DVB_CXD2099 is not set
+# CONFIG_DVB_SP2 is not set
+CONFIG_QCOM_COMMAND_DB=m
+CONFIG_QCOM_LMH=m
+# XXX RB5 bits start here
+CONFIG_QCOM_IPCC=m
+CONFIG_QCOM_SPMI_ADC5=m
+CONFIG_QCOM_SPMI_TEMP_ALARM=m
+CONFIG_RPMSG_NS=m
+CONFIG_CAN_MCP251XFD=m
+CONFIG_ATH11K=m
+CONFIG_ATH11K_AHB=m
+CONFIG_ATH11K_PCI=m
+CONFIG_PINCTRL_SM8250=m
+CONFIG_PINCTRL_SM8250_LPASS_LPI=m
+CONFIG_PINCTRL_LPASS_LPI=m
+CONFIG_QCOM_SPMI_ADC_TM5=m
+CONFIG_MFD_QCOM_QCA639X=m
+CONFIG_REGULATOR_QCOM_USB_VBUS=m
+CONFIG_DRM_DISPLAY_CONNECTOR=m
+CONFIG_DRM_LONTIUM_LT9611UXC=m
+CONFIG_SND_SOC_SM8250=m
+CONFIG_SND_SOC_LPASS_WSA_MACRO=m
+CONFIG_SND_SOC_LPASS_VA_MACRO=m
+CONFIG_TYPEC_QCOM_PMIC=m
+CONFIG_LEDS_QCOM_LPG=m
+CONFIG_SM_GPUCC_8250=m
+CONFIG_SM_DISPCC_8250=m
+CONFIG_SM_VIDEOCC_8250=m
+CONFIG_CLK_GFM_LPASS_SM8250=m
+CONFIG_PHY_QCOM_USB_SNPS_FEMTO_V2=m
+CONFIG_INTERCONNECT_QCOM_SM8250=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_QCOM_CPR=m
+CONFIG_QCOM_SPM=m
+# XXX SM8450 bits start here
+CONFIG_PINCTRL_SM8450=m
+CONFIG_SM_GCC_8450=m
+CONFIG_INTERCONNECT_QCOM_SM8450=m
+# CFG80211 & MAC80211 as modules
+CONFIG_CFG80211=m
+CONFIG_NL80211_TESTMODE=y
+# CONFIG_CFG80211_DEFAULT_PS is not set
+# CONFIG_CFG80211_CRDA_SUPPORT is not set
+CONFIG_MAC80211=m
diff --git a/arch/arm64/configs/fips140_gki.fragment b/arch/arm64/configs/fips140_gki.fragment
new file mode 100644
index 0000000..aa8444d
--- /dev/null
+++ b/arch/arm64/configs/fips140_gki.fragment
@@ -0,0 +1,2 @@
+CONFIG_CRYPTO_FIPS140_MOD=m
+# CONFIG_MODULE_SIG_ALL is not set
diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig
new file mode 100644
index 0000000..29782a3
--- /dev/null
+++ b/arch/arm64/configs/gki_defconfig
@@ -0,0 +1,733 @@
+CONFIG_UAPI_HEADER_TEST=y
+CONFIG_AUDIT=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_BPF_SYSCALL=y
+CONFIG_BPF_JIT=y
+CONFIG_BPF_JIT_ALWAYS_ON=y
+# CONFIG_BPF_UNPRIV_DEFAULT_OFF is not set
+CONFIG_PREEMPT=y
+CONFIG_IRQ_TIME_ACCOUNTING=y
+CONFIG_TASKSTATS=y
+CONFIG_TASK_XACCT=y
+CONFIG_TASK_IO_ACCOUNTING=y
+CONFIG_PSI=y
+CONFIG_RCU_EXPERT=y
+CONFIG_RCU_BOOST=y
+CONFIG_RCU_NOCB_CPU=y
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_IKHEADERS=m
+CONFIG_UCLAMP_TASK=y
+CONFIG_UCLAMP_BUCKETS_COUNT=20
+CONFIG_CGROUPS=y
+CONFIG_MEMCG=y
+CONFIG_BLK_CGROUP=y
+CONFIG_CGROUP_SCHED=y
+CONFIG_UCLAMP_TASK_GROUP=y
+CONFIG_CGROUP_FREEZER=y
+CONFIG_CPUSETS=y
+CONFIG_CGROUP_CPUACCT=y
+CONFIG_CGROUP_BPF=y
+CONFIG_NAMESPACES=y
+# CONFIG_PID_NS is not set
+CONFIG_RT_SOFTIRQ_AWARE_SCHED=y
+# CONFIG_RD_BZIP2 is not set
+# CONFIG_RD_LZMA is not set
+# CONFIG_RD_XZ is not set
+# CONFIG_RD_LZO is not set
+CONFIG_BOOT_CONFIG=y
+# CONFIG_SYSFS_SYSCALL is not set
+# CONFIG_FHANDLE is not set
+CONFIG_KALLSYMS_ALL=y
+# CONFIG_RSEQ is not set
+CONFIG_EMBEDDED=y
+CONFIG_PROFILING=y
+CONFIG_ARCH_SUNXI=y
+CONFIG_ARCH_HISI=y
+CONFIG_ARCH_QCOM=y
+CONFIG_SCHED_MC=y
+CONFIG_NR_CPUS=32
+CONFIG_PARAVIRT_TIME_ACCOUNTING=y
+CONFIG_ARM64_SW_TTBR0_PAN=y
+CONFIG_COMPAT=y
+CONFIG_ARMV8_DEPRECATED=y
+CONFIG_SWP_EMULATION=y
+CONFIG_CP15_BARRIER_EMULATION=y
+CONFIG_SETEND_EMULATION=y
+# CONFIG_ARM64_BTI_KERNEL is not set
+CONFIG_RANDOMIZE_BASE=y
+# CONFIG_RANDOMIZE_MODULE_REGION_FULL is not set
+CONFIG_UNWIND_PATCH_PAC_INTO_SCS=y
+CONFIG_CMDLINE="console=ttynull stack_depot_disable=on cgroup_disable=pressure kasan.page_alloc.sample=10 kasan.stacktrace=off kvm-arm.mode=protected bootconfig ioremap_guard"
+CONFIG_CMDLINE_EXTEND=y
+# CONFIG_DMI is not set
+CONFIG_HIBERNATION=y
+CONFIG_PM_WAKELOCKS=y
+CONFIG_PM_WAKELOCKS_LIMIT=0
+# CONFIG_PM_WAKELOCKS_GC is not set
+CONFIG_ENERGY_MODEL=y
+CONFIG_CPU_IDLE=y
+CONFIG_CPU_IDLE_GOV_MENU=y
+CONFIG_CPU_IDLE_GOV_TEO=y
+CONFIG_ARM_PSCI_CPUIDLE=y
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_STAT=y
+CONFIG_CPU_FREQ_TIMES=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_ARM_SCPI_CPUFREQ=y
+CONFIG_ARM_SCMI_CPUFREQ=y
+CONFIG_VIRTUALIZATION=y
+CONFIG_KVM=y
+CONFIG_PKVM_MODULE_PATH="/lib/modules/"
+CONFIG_KPROBES=y
+CONFIG_JUMP_LABEL=y
+CONFIG_SHADOW_CALL_STACK=y
+CONFIG_CFI_CLANG=y
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+CONFIG_MODULE_SCMVERSION=y
+CONFIG_MODULE_SIG=y
+CONFIG_MODULE_SIG_PROTECT=y
+CONFIG_MODPROBE_PATH="/system/bin/modprobe"
+CONFIG_BLK_DEV_ZONED=y
+CONFIG_BLK_DEV_THROTTLING=y
+CONFIG_BLK_CGROUP_IOCOST=y
+CONFIG_BLK_INLINE_ENCRYPTION=y
+CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y
+CONFIG_IOSCHED_BFQ=y
+CONFIG_BFQ_GROUP_IOSCHED=y
+CONFIG_GKI_HACKS_TO_FIX=y
+# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
+CONFIG_BINFMT_MISC=y
+# CONFIG_SLAB_MERGE_DEFAULT is not set
+CONFIG_SLAB_FREELIST_RANDOM=y
+CONFIG_SLAB_FREELIST_HARDENED=y
+CONFIG_SHUFFLE_PAGE_ALLOCATOR=y
+# CONFIG_COMPAT_BRK is not set
+CONFIG_MEMORY_HOTPLUG=y
+CONFIG_MEMORY_HOTREMOVE=y
+CONFIG_DEFAULT_MMAP_MIN_ADDR=32768
+CONFIG_TRANSPARENT_HUGEPAGE=y
+CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y
+CONFIG_CLEANCACHE=y
+CONFIG_CMA=y
+CONFIG_CMA_DEBUGFS=y
+CONFIG_CMA_AREAS=16
+# CONFIG_ZONE_DMA is not set
+CONFIG_ZONE_DEVICE=y
+CONFIG_ANON_VMA_NAME=y
+CONFIG_USERFAULTFD=y
+CONFIG_LRU_GEN=y
+CONFIG_LRU_GEN_ENABLED=y
+CONFIG_NET=y
+CONFIG_PACKET=y
+CONFIG_UNIX=y
+CONFIG_XFRM_USER=y
+CONFIG_XFRM_INTERFACE=y
+CONFIG_XFRM_MIGRATE=y
+CONFIG_XFRM_STATISTICS=y
+CONFIG_NET_KEY=y
+CONFIG_XDP_SOCKETS=y
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_ADVANCED_ROUTER=y
+CONFIG_IP_MULTIPLE_TABLES=y
+CONFIG_NET_IPIP=y
+CONFIG_NET_IPGRE_DEMUX=y
+CONFIG_NET_IPGRE=y
+CONFIG_NET_IPVTI=y
+CONFIG_INET_ESP=y
+CONFIG_INET_UDP_DIAG=y
+CONFIG_INET_DIAG_DESTROY=y
+CONFIG_IPV6_ROUTER_PREF=y
+CONFIG_IPV6_ROUTE_INFO=y
+CONFIG_IPV6_OPTIMISTIC_DAD=y
+CONFIG_INET6_ESP=y
+CONFIG_INET6_IPCOMP=y
+CONFIG_IPV6_MIP6=y
+CONFIG_IPV6_VTI=y
+CONFIG_IPV6_GRE=y
+CONFIG_IPV6_MULTIPLE_TABLES=y
+CONFIG_IPV6_MROUTE=y
+CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
+CONFIG_NETFILTER=y
+CONFIG_NF_CONNTRACK=y
+CONFIG_NF_CONNTRACK_SECMARK=y
+CONFIG_NF_CONNTRACK_PROCFS=y
+CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CONNTRACK_AMANDA=y
+CONFIG_NF_CONNTRACK_FTP=y
+CONFIG_NF_CONNTRACK_H323=y
+CONFIG_NF_CONNTRACK_IRC=y
+CONFIG_NF_CONNTRACK_NETBIOS_NS=y
+CONFIG_NF_CONNTRACK_PPTP=y
+CONFIG_NF_CONNTRACK_SANE=y
+CONFIG_NF_CONNTRACK_TFTP=y
+CONFIG_NF_CT_NETLINK=y
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=y
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=y
+CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=y
+CONFIG_NETFILTER_XT_TARGET_DSCP=y
+CONFIG_NETFILTER_XT_TARGET_IDLETIMER=y
+CONFIG_NETFILTER_XT_TARGET_MARK=y
+CONFIG_NETFILTER_XT_TARGET_NFLOG=y
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=y
+CONFIG_NETFILTER_XT_TARGET_NOTRACK=y
+CONFIG_NETFILTER_XT_TARGET_TEE=y
+CONFIG_NETFILTER_XT_TARGET_TPROXY=y
+CONFIG_NETFILTER_XT_TARGET_TRACE=y
+CONFIG_NETFILTER_XT_TARGET_SECMARK=y
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=y
+CONFIG_NETFILTER_XT_MATCH_BPF=y
+CONFIG_NETFILTER_XT_MATCH_COMMENT=y
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=y
+CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=y
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=y
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
+CONFIG_NETFILTER_XT_MATCH_DSCP=y
+CONFIG_NETFILTER_XT_MATCH_ESP=y
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=y
+CONFIG_NETFILTER_XT_MATCH_HELPER=y
+CONFIG_NETFILTER_XT_MATCH_IPRANGE=y
+CONFIG_NETFILTER_XT_MATCH_L2TP=y
+CONFIG_NETFILTER_XT_MATCH_LENGTH=y
+CONFIG_NETFILTER_XT_MATCH_LIMIT=y
+CONFIG_NETFILTER_XT_MATCH_MAC=y
+CONFIG_NETFILTER_XT_MATCH_MARK=y
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=y
+CONFIG_NETFILTER_XT_MATCH_OWNER=y
+CONFIG_NETFILTER_XT_MATCH_POLICY=y
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=y
+CONFIG_NETFILTER_XT_MATCH_QUOTA=y
+CONFIG_NETFILTER_XT_MATCH_QUOTA2=y
+CONFIG_NETFILTER_XT_MATCH_QUOTA2_LOG=y
+CONFIG_NETFILTER_XT_MATCH_SOCKET=y
+CONFIG_NETFILTER_XT_MATCH_STATE=y
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=y
+CONFIG_NETFILTER_XT_MATCH_STRING=y
+CONFIG_NETFILTER_XT_MATCH_TIME=y
+CONFIG_NETFILTER_XT_MATCH_U32=y
+CONFIG_IP_NF_IPTABLES=y
+CONFIG_IP_NF_MATCH_ECN=y
+CONFIG_IP_NF_MATCH_TTL=y
+CONFIG_IP_NF_FILTER=y
+CONFIG_IP_NF_TARGET_REJECT=y
+CONFIG_IP_NF_NAT=y
+CONFIG_IP_NF_TARGET_MASQUERADE=y
+CONFIG_IP_NF_TARGET_NETMAP=y
+CONFIG_IP_NF_TARGET_REDIRECT=y
+CONFIG_IP_NF_MANGLE=y
+CONFIG_IP_NF_RAW=y
+CONFIG_IP_NF_SECURITY=y
+CONFIG_IP_NF_ARPTABLES=y
+CONFIG_IP_NF_ARPFILTER=y
+CONFIG_IP_NF_ARP_MANGLE=y
+CONFIG_IP6_NF_IPTABLES=y
+CONFIG_IP6_NF_MATCH_RPFILTER=y
+CONFIG_IP6_NF_FILTER=y
+CONFIG_IP6_NF_TARGET_REJECT=y
+CONFIG_IP6_NF_MANGLE=y
+CONFIG_IP6_NF_RAW=y
+CONFIG_TIPC=m
+CONFIG_L2TP=m
+CONFIG_BRIDGE=y
+CONFIG_VLAN_8021Q=m
+CONFIG_6LOWPAN=m
+CONFIG_IEEE802154=m
+CONFIG_IEEE802154_6LOWPAN=m
+CONFIG_MAC802154=m
+CONFIG_NET_SCHED=y
+CONFIG_NET_SCH_HTB=y
+CONFIG_NET_SCH_PRIO=y
+CONFIG_NET_SCH_MULTIQ=y
+CONFIG_NET_SCH_SFQ=y
+CONFIG_NET_SCH_TBF=y
+CONFIG_NET_SCH_NETEM=y
+CONFIG_NET_SCH_CODEL=y
+CONFIG_NET_SCH_FQ_CODEL=y
+CONFIG_NET_SCH_FQ=y
+CONFIG_NET_SCH_INGRESS=y
+CONFIG_NET_CLS_BASIC=y
+CONFIG_NET_CLS_FW=y
+CONFIG_NET_CLS_U32=y
+CONFIG_CLS_U32_MARK=y
+CONFIG_NET_CLS_FLOW=y
+CONFIG_NET_CLS_BPF=y
+CONFIG_NET_CLS_MATCHALL=y
+CONFIG_NET_EMATCH=y
+CONFIG_NET_EMATCH_CMP=y
+CONFIG_NET_EMATCH_NBYTE=y
+CONFIG_NET_EMATCH_U32=y
+CONFIG_NET_EMATCH_META=y
+CONFIG_NET_EMATCH_TEXT=y
+CONFIG_NET_CLS_ACT=y
+CONFIG_NET_ACT_POLICE=y
+CONFIG_NET_ACT_GACT=y
+CONFIG_NET_ACT_MIRRED=y
+CONFIG_NET_ACT_SKBEDIT=y
+CONFIG_NET_ACT_BPF=y
+CONFIG_VSOCKETS=y
+CONFIG_CGROUP_NET_PRIO=y
+CONFIG_CAN=m
+CONFIG_BT=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_HIDP=m
+CONFIG_BT_HCIBTSDIO=m
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_LL=y
+CONFIG_BT_HCIUART_BCM=y
+CONFIG_BT_HCIUART_QCA=y
+CONFIG_RFKILL=m
+CONFIG_NFC=m
+CONFIG_PCI=y
+CONFIG_PCIEPORTBUS=y
+CONFIG_PCIEAER=y
+CONFIG_PCI_IOV=y
+# CONFIG_VGA_ARB is not set
+CONFIG_PCI_HOST_GENERIC=y
+CONFIG_PCIE_DW_PLAT_EP=y
+CONFIG_PCIE_QCOM=y
+CONFIG_PCIE_KIRIN=y
+CONFIG_PCI_ENDPOINT=y
+CONFIG_FW_LOADER_USER_HELPER=y
+# CONFIG_FW_CACHE is not set
+# CONFIG_SUN50I_DE2_BUS is not set
+# CONFIG_SUNXI_RSB is not set
+CONFIG_ARM_SCMI_PROTOCOL=y
+# CONFIG_ARM_SCMI_POWER_DOMAIN is not set
+CONFIG_ARM_SCPI_PROTOCOL=y
+# CONFIG_ARM_SCPI_POWER_DOMAIN is not set
+# CONFIG_EFI_ARMSTUB_DTB_LOADER is not set
+CONFIG_GNSS=y
+CONFIG_ZRAM=m
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_LOOP_MIN_COUNT=16
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=8192
+CONFIG_BLK_DEV_UBLK=y
+CONFIG_BLK_DEV_NVME=y
+CONFIG_SRAM=y
+CONFIG_UID_SYS_STATS=y
+CONFIG_SCSI=y
+# CONFIG_SCSI_PROC_FS is not set
+CONFIG_BLK_DEV_SD=y
+CONFIG_MD=y
+CONFIG_BLK_DEV_DM=y
+CONFIG_DM_CRYPT=y
+CONFIG_DM_DEFAULT_KEY=y
+CONFIG_DM_SNAPSHOT=y
+CONFIG_DM_UEVENT=y
+CONFIG_DM_VERITY=y
+CONFIG_DM_VERITY_FEC=y
+CONFIG_NETDEVICES=y
+CONFIG_DUMMY=y
+CONFIG_WIREGUARD=y
+CONFIG_IFB=y
+CONFIG_MACSEC=y
+CONFIG_TUN=y
+CONFIG_VETH=y
+CONFIG_LED_TRIGGER_PHY=y
+CONFIG_AX88796B_PHY=y
+CONFIG_CAN_VCAN=m
+CONFIG_CAN_SLCAN=m
+CONFIG_PPP=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_MPPE=m
+CONFIG_PPTP=m
+CONFIG_PPPOL2TP=m
+CONFIG_USB_NET_DRIVERS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_RTL8152=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_CDC_EEM=m
+# CONFIG_USB_NET_NET1080 is not set
+# CONFIG_USB_NET_CDC_SUBSET is not set
+# CONFIG_USB_NET_ZAURUS is not set
+CONFIG_USB_NET_AQC111=m
+# CONFIG_WLAN_VENDOR_ADMTEK is not set
+# CONFIG_WLAN_VENDOR_ATH is not set
+# CONFIG_WLAN_VENDOR_ATMEL is not set
+# CONFIG_WLAN_VENDOR_BROADCOM is not set
+# CONFIG_WLAN_VENDOR_CISCO is not set
+# CONFIG_WLAN_VENDOR_INTEL is not set
+# CONFIG_WLAN_VENDOR_INTERSIL is not set
+# CONFIG_WLAN_VENDOR_MARVELL is not set
+# CONFIG_WLAN_VENDOR_MEDIATEK is not set
+# CONFIG_WLAN_VENDOR_RALINK is not set
+# CONFIG_WLAN_VENDOR_REALTEK is not set
+# CONFIG_WLAN_VENDOR_RSI is not set
+# CONFIG_WLAN_VENDOR_ST is not set
+# CONFIG_WLAN_VENDOR_TI is not set
+# CONFIG_WLAN_VENDOR_ZYDAS is not set
+# CONFIG_WLAN_VENDOR_QUANTENNA is not set
+CONFIG_INPUT_EVDEV=y
+CONFIG_KEYBOARD_GPIO=y
+# CONFIG_MOUSE_PS2 is not set
+CONFIG_INPUT_JOYSTICK=y
+CONFIG_JOYSTICK_XPAD=y
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_UINPUT=y
+# CONFIG_VT is not set
+# CONFIG_LEGACY_PTYS is not set
+CONFIG_SERIAL_8250=y
+# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set
+CONFIG_SERIAL_8250_CONSOLE=y
+# CONFIG_SERIAL_8250_EXAR is not set
+CONFIG_SERIAL_8250_NR_UARTS=32
+CONFIG_SERIAL_8250_RUNTIME_UARTS=0
+CONFIG_SERIAL_8250_DW=y
+CONFIG_SERIAL_OF_PLATFORM=y
+CONFIG_SERIAL_AMBA_PL011=y
+CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
+CONFIG_SERIAL_SAMSUNG=y
+CONFIG_SERIAL_SAMSUNG_CONSOLE=y
+CONFIG_SERIAL_QCOM_GENI=y
+CONFIG_SERIAL_QCOM_GENI_CONSOLE=y
+CONFIG_SERIAL_SPRD=y
+CONFIG_SERIAL_SPRD_CONSOLE=y
+CONFIG_NULL_TTY=y
+CONFIG_HVC_DCC=y
+CONFIG_SERIAL_DEV_BUS=y
+CONFIG_HW_RANDOM=y
+# CONFIG_DEVMEM is not set
+# CONFIG_DEVPORT is not set
+# CONFIG_I2C_COMPAT is not set
+# CONFIG_I2C_HELPER_AUTO is not set
+CONFIG_I3C=y
+CONFIG_SPI=y
+CONFIG_SPI_MEM=y
+# CONFIG_SPMI_MSM_PMIC_ARB is not set
+# CONFIG_PINCTRL_SUN8I_H3_R is not set
+# CONFIG_PINCTRL_SUN50I_A64 is not set
+# CONFIG_PINCTRL_SUN50I_A64_R is not set
+# CONFIG_PINCTRL_SUN50I_A100 is not set
+# CONFIG_PINCTRL_SUN50I_A100_R is not set
+# CONFIG_PINCTRL_SUN50I_H5 is not set
+# CONFIG_PINCTRL_SUN50I_H6 is not set
+# CONFIG_PINCTRL_SUN50I_H6_R is not set
+# CONFIG_PINCTRL_SUN50I_H616 is not set
+# CONFIG_PINCTRL_SUN50I_H616_R is not set
+CONFIG_GPIO_GENERIC_PLATFORM=y
+CONFIG_POWER_RESET_HISI=y
+CONFIG_POWER_RESET_SYSCON=y
+# CONFIG_HWMON is not set
+CONFIG_THERMAL=y
+CONFIG_THERMAL_NETLINK=y
+CONFIG_THERMAL_STATISTICS=y
+CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=100
+CONFIG_THERMAL_WRITABLE_TRIPS=y
+CONFIG_THERMAL_GOV_USER_SPACE=y
+CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y
+CONFIG_CPU_THERMAL=y
+CONFIG_DEVFREQ_THERMAL=y
+CONFIG_THERMAL_EMULATION=y
+CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_CORE=y
+CONFIG_MFD_ACT8945A=y
+CONFIG_REGULATOR=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_RC_CORE=y
+CONFIG_BPF_LIRC_MODE2=y
+CONFIG_LIRC=y
+# CONFIG_RC_MAP is not set
+CONFIG_RC_DECODERS=y
+CONFIG_RC_DEVICES=y
+CONFIG_MEDIA_CEC_RC=y
+# CONFIG_MEDIA_ANALOG_TV_SUPPORT is not set
+# CONFIG_MEDIA_DIGITAL_TV_SUPPORT is not set
+# CONFIG_MEDIA_RADIO_SUPPORT is not set
+# CONFIG_MEDIA_SDR_SUPPORT is not set
+# CONFIG_MEDIA_TEST_SUPPORT is not set
+CONFIG_MEDIA_USB_SUPPORT=y
+CONFIG_USB_GSPCA=y
+CONFIG_USB_VIDEO_CLASS=y
+CONFIG_V4L_PLATFORM_DRIVERS=y
+CONFIG_V4L_MEM2MEM_DRIVERS=y
+CONFIG_DRM=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_SOUND=y
+CONFIG_SND=y
+CONFIG_SND_HRTIMER=y
+# CONFIG_SND_SUPPORT_OLD_API is not set
+# CONFIG_SND_VERBOSE_PROCFS is not set
+# CONFIG_SND_DRIVERS is not set
+CONFIG_SND_USB_AUDIO=y
+CONFIG_SND_SOC=y
+CONFIG_HID_BATTERY_STRENGTH=y
+CONFIG_HIDRAW=y
+CONFIG_UHID=y
+CONFIG_HID_APPLE=y
+CONFIG_HID_PRODIKEYS=y
+CONFIG_HID_ELECOM=y
+CONFIG_HID_UCLOGIC=y
+CONFIG_HID_LOGITECH=y
+CONFIG_HID_LOGITECH_DJ=y
+CONFIG_HID_MAGICMOUSE=y
+CONFIG_HID_MICROSOFT=y
+CONFIG_HID_MULTITOUCH=y
+CONFIG_HID_NINTENDO=y
+CONFIG_HID_PICOLCD=y
+CONFIG_HID_PLANTRONICS=y
+CONFIG_HID_PLAYSTATION=y
+CONFIG_PLAYSTATION_FF=y
+CONFIG_HID_ROCCAT=y
+CONFIG_HID_SONY=y
+CONFIG_SONY_FF=y
+CONFIG_HID_STEAM=y
+CONFIG_HID_WACOM=y
+CONFIG_HID_WIIMOTE=y
+CONFIG_USB_HIDDEV=y
+CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
+CONFIG_USB_OTG=y
+CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_XHCI_PCI_RENESAS=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+CONFIG_USB_EHCI_HCD_PLATFORM=y
+CONFIG_USB_ACM=m
+CONFIG_USB_STORAGE=y
+CONFIG_USB_UAS=y
+CONFIG_USB_DWC3=y
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_GADGET=y
+CONFIG_USB_CONFIGFS=y
+CONFIG_USB_CONFIGFS_UEVENT=y
+CONFIG_USB_CONFIGFS_SERIAL=y
+CONFIG_USB_CONFIGFS_ACM=y
+CONFIG_USB_CONFIGFS_NCM=y
+CONFIG_USB_CONFIGFS_ECM=y
+CONFIG_USB_CONFIGFS_EEM=y
+CONFIG_USB_CONFIGFS_MASS_STORAGE=y
+CONFIG_USB_CONFIGFS_F_FS=y
+CONFIG_USB_CONFIGFS_F_ACC=y
+CONFIG_USB_CONFIGFS_F_AUDIO_SRC=y
+CONFIG_USB_CONFIGFS_F_UAC2=y
+CONFIG_USB_CONFIGFS_F_MIDI=y
+CONFIG_USB_CONFIGFS_F_HID=y
+CONFIG_USB_CONFIGFS_F_UVC=y
+CONFIG_TYPEC=y
+CONFIG_TYPEC_TCPM=y
+CONFIG_TYPEC_TCPCI=y
+CONFIG_TYPEC_UCSI=y
+CONFIG_TYPEC_DP_ALTMODE=y
+CONFIG_MMC=y
+# CONFIG_PWRSEQ_EMMC is not set
+# CONFIG_PWRSEQ_SIMPLE is not set
+CONFIG_MMC_CRYPTO=y
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_PLTFM=y
+CONFIG_SCSI_UFSHCD=y
+CONFIG_SCSI_UFS_BSG=y
+CONFIG_SCSI_UFS_CRYPTO=y
+CONFIG_SCSI_UFSHCD_PCI=y
+CONFIG_SCSI_UFSHCD_PLATFORM=y
+CONFIG_SCSI_UFS_DWC_TC_PLATFORM=y
+CONFIG_SCSI_UFS_HISI=y
+CONFIG_LEDS_CLASS_FLASH=y
+CONFIG_LEDS_CLASS_MULTICOLOR=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_TRANSIENT=y
+CONFIG_EDAC=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_DRV_PL030=y
+CONFIG_RTC_DRV_PL031=y
+CONFIG_DMABUF_HEAPS=y
+CONFIG_DMABUF_SYSFS_STATS=y
+CONFIG_DMABUF_HEAPS_DEFERRED_FREE=y
+CONFIG_DMABUF_HEAPS_PAGE_POOL=y
+CONFIG_UIO=y
+CONFIG_VIRT_DRIVERS=y
+CONFIG_GUNYAH=y
+# CONFIG_GUNYAH_QCOM_PLATFORM is not set
+CONFIG_GUNYAH_VCPU=y
+CONFIG_GUNYAH_IRQFD=y
+CONFIG_GUNYAH_IOEVENTFD=y
+CONFIG_VHOST_VSOCK=y
+CONFIG_STAGING=y
+CONFIG_ASHMEM=y
+CONFIG_COMMON_CLK_SCPI=y
+# CONFIG_SUNXI_CCU is not set
+CONFIG_HWSPINLOCK=y
+# CONFIG_SUN50I_ERRATUM_UNKNOWN1 is not set
+CONFIG_MAILBOX=y
+CONFIG_IOMMU_IO_PGTABLE_ARMV7S=y
+CONFIG_REMOTEPROC=y
+CONFIG_REMOTEPROC_CDEV=y
+CONFIG_RPMSG_CHAR=y
+CONFIG_QCOM_GENI_SE=y
+CONFIG_DEVFREQ_GOV_PERFORMANCE=y
+CONFIG_DEVFREQ_GOV_POWERSAVE=y
+CONFIG_DEVFREQ_GOV_USERSPACE=y
+CONFIG_DEVFREQ_GOV_PASSIVE=y
+CONFIG_PM_DEVFREQ_EVENT=y
+CONFIG_IIO=y
+CONFIG_IIO_BUFFER=y
+CONFIG_IIO_TRIGGER=y
+CONFIG_PWM=y
+CONFIG_GENERIC_PHY=y
+CONFIG_POWERCAP=y
+CONFIG_ANDROID_BINDER_IPC=y
+CONFIG_ANDROID_BINDERFS=y
+CONFIG_ANDROID_VENDOR_HOOKS=y
+CONFIG_ANDROID_DEBUG_KINFO=y
+CONFIG_LIBNVDIMM=y
+CONFIG_INTERCONNECT=y
+CONFIG_EXT4_FS=y
+CONFIG_EXT4_FS_POSIX_ACL=y
+CONFIG_EXT4_FS_SECURITY=y
+CONFIG_F2FS_FS=y
+CONFIG_F2FS_FS_SECURITY=y
+CONFIG_F2FS_FS_COMPRESSION=y
+CONFIG_F2FS_UNFAIR_RWSEM=y
+CONFIG_FS_ENCRYPTION=y
+CONFIG_FS_ENCRYPTION_INLINE_CRYPT=y
+CONFIG_FS_VERITY=y
+CONFIG_FS_VERITY_BUILTIN_SIGNATURES=y
+# CONFIG_DNOTIFY is not set
+CONFIG_QUOTA=y
+CONFIG_QFMT_V2=y
+CONFIG_FUSE_FS=y
+CONFIG_VIRTIO_FS=y
+CONFIG_FUSE_BPF=y
+CONFIG_OVERLAY_FS=y
+CONFIG_INCREMENTAL_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_EXFAT_FS=y
+CONFIG_TMPFS=y
+# CONFIG_EFIVAR_FS is not set
+CONFIG_PSTORE=y
+CONFIG_PSTORE_CONSOLE=y
+CONFIG_PSTORE_PMSG=y
+CONFIG_PSTORE_RAM=y
+CONFIG_EROFS_FS=y
+CONFIG_EROFS_FS_PCPU_KTHREAD=y
+CONFIG_EROFS_FS_PCPU_KTHREAD_HIPRI=y
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_CODEPAGE_737=y
+CONFIG_NLS_CODEPAGE_775=y
+CONFIG_NLS_CODEPAGE_850=y
+CONFIG_NLS_CODEPAGE_852=y
+CONFIG_NLS_CODEPAGE_855=y
+CONFIG_NLS_CODEPAGE_857=y
+CONFIG_NLS_CODEPAGE_860=y
+CONFIG_NLS_CODEPAGE_861=y
+CONFIG_NLS_CODEPAGE_862=y
+CONFIG_NLS_CODEPAGE_863=y
+CONFIG_NLS_CODEPAGE_864=y
+CONFIG_NLS_CODEPAGE_865=y
+CONFIG_NLS_CODEPAGE_866=y
+CONFIG_NLS_CODEPAGE_869=y
+CONFIG_NLS_CODEPAGE_936=y
+CONFIG_NLS_CODEPAGE_950=y
+CONFIG_NLS_CODEPAGE_932=y
+CONFIG_NLS_CODEPAGE_949=y
+CONFIG_NLS_CODEPAGE_874=y
+CONFIG_NLS_ISO8859_8=y
+CONFIG_NLS_CODEPAGE_1250=y
+CONFIG_NLS_CODEPAGE_1251=y
+CONFIG_NLS_ASCII=y
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_2=y
+CONFIG_NLS_ISO8859_3=y
+CONFIG_NLS_ISO8859_4=y
+CONFIG_NLS_ISO8859_5=y
+CONFIG_NLS_ISO8859_6=y
+CONFIG_NLS_ISO8859_7=y
+CONFIG_NLS_ISO8859_9=y
+CONFIG_NLS_ISO8859_13=y
+CONFIG_NLS_ISO8859_14=y
+CONFIG_NLS_ISO8859_15=y
+CONFIG_NLS_KOI8_R=y
+CONFIG_NLS_KOI8_U=y
+CONFIG_NLS_MAC_ROMAN=y
+CONFIG_NLS_MAC_CELTIC=y
+CONFIG_NLS_MAC_CENTEURO=y
+CONFIG_NLS_MAC_CROATIAN=y
+CONFIG_NLS_MAC_CYRILLIC=y
+CONFIG_NLS_MAC_GAELIC=y
+CONFIG_NLS_MAC_GREEK=y
+CONFIG_NLS_MAC_ICELAND=y
+CONFIG_NLS_MAC_INUIT=y
+CONFIG_NLS_MAC_ROMANIAN=y
+CONFIG_NLS_MAC_TURKISH=y
+CONFIG_NLS_UTF8=y
+CONFIG_UNICODE=y
+CONFIG_SECURITY=y
+CONFIG_SECURITYFS=y
+CONFIG_SECURITY_NETWORK=y
+CONFIG_HARDENED_USERCOPY=y
+CONFIG_FORTIFY_SOURCE=y
+CONFIG_STATIC_USERMODEHELPER=y
+CONFIG_STATIC_USERMODEHELPER_PATH=""
+CONFIG_SECURITY_SELINUX=y
+CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y
+CONFIG_CRYPTO_ECDH=y
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_ADIANTUM=y
+CONFIG_CRYPTO_HCTR2=y
+CONFIG_CRYPTO_CHACHA20POLY1305=y
+CONFIG_CRYPTO_CCM=y
+CONFIG_CRYPTO_BLAKE2B=y
+CONFIG_CRYPTO_CMAC=y
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_XCBC=y
+CONFIG_CRYPTO_LZO=y
+CONFIG_CRYPTO_LZ4=y
+CONFIG_CRYPTO_ZSTD=y
+CONFIG_CRYPTO_ANSI_CPRNG=y
+CONFIG_CRYPTO_GHASH_ARM64_CE=y
+CONFIG_CRYPTO_SHA2_ARM64_CE=y
+CONFIG_CRYPTO_SHA512_ARM64_CE=y
+CONFIG_CRYPTO_POLYVAL_ARM64_CE=y
+CONFIG_CRYPTO_AES_ARM64_CE_BLK=y
+CONFIG_TRACE_MMIO_ACCESS=y
+CONFIG_CRC_CCITT=y
+CONFIG_XZ_DEC=y
+CONFIG_DMA_CMA=y
+CONFIG_PRINTK_TIME=y
+CONFIG_PRINTK_CALLER=y
+CONFIG_DYNAMIC_DEBUG_CORE=y
+CONFIG_DEBUG_INFO_DWARF4=y
+CONFIG_DEBUG_INFO_BTF=y
+CONFIG_MODULE_ALLOW_BTF_MISMATCH=y
+CONFIG_HEADERS_INSTALL=y
+# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_UBSAN=y
+CONFIG_UBSAN_TRAP=y
+CONFIG_UBSAN_LOCAL_BOUNDS=y
+# CONFIG_UBSAN_SHIFT is not set
+# CONFIG_UBSAN_BOOL is not set
+# CONFIG_UBSAN_ENUM is not set
+CONFIG_PAGE_OWNER=y
+CONFIG_PAGE_PINNER=y
+CONFIG_PER_VMA_LOCK_STATS=y
+CONFIG_DEBUG_STACK_USAGE=y
+CONFIG_DEBUG_MEMORY_INIT=y
+CONFIG_KASAN=y
+CONFIG_KASAN_HW_TAGS=y
+CONFIG_KFENCE=y
+CONFIG_KFENCE_SAMPLE_INTERVAL=500
+CONFIG_KFENCE_NUM_OBJECTS=63
+CONFIG_KFENCE_STATIC_KEYS=y
+CONFIG_PANIC_ON_OOPS=y
+CONFIG_PANIC_TIMEOUT=-1
+CONFIG_SOFTLOCKUP_DETECTOR=y
+CONFIG_WQ_WATCHDOG=y
+CONFIG_SCHEDSTATS=y
+# CONFIG_DEBUG_PREEMPT is not set
+CONFIG_BUG_ON_DATA_CORRUPTION=y
+CONFIG_HIST_TRIGGERS=y
+CONFIG_PID_IN_CONTEXTIDR=y
+CONFIG_KUNIT=y
+CONFIG_KUNIT_DEBUGFS=y
+# CONFIG_KUNIT_DEFAULT_ENABLED is not set
+# CONFIG_RUNTIME_TESTING_MENU is not set
diff --git a/arch/arm64/configs/rockpi4_gki.fragment b/arch/arm64/configs/rockpi4_gki.fragment
new file mode 100644
index 0000000..2af01b8
--- /dev/null
+++ b/arch/arm64/configs/rockpi4_gki.fragment
@@ -0,0 +1,82 @@
+# Core features
+CONFIG_ARCH_ROCKCHIP=y
+# CONFIG_CLK_PX30 is not set
+# CONFIG_CLK_RV110X is not set
+# CONFIG_CLK_RK3036 is not set
+# CONFIG_CLK_RK312X is not set
+# CONFIG_CLK_RK3188 is not set
+# CONFIG_CLK_RK322X is not set
+# CONFIG_CLK_RK3288 is not set
+# CONFIG_CLK_RK3308 is not set
+# CONFIG_CLK_RK3328 is not set
+# CONFIG_CLK_RK3368 is not set
+CONFIG_COMMON_CLK_RK808=m
+CONFIG_CPUFREQ_DT=m
+CONFIG_MFD_RK808=m
+CONFIG_PCIE_ROCKCHIP_HOST=m
+CONFIG_PHY_ROCKCHIP_PCIE=m
+CONFIG_PL330_DMA=m
+CONFIG_PWM_ROCKCHIP=m
+CONFIG_PWRSEQ_SIMPLE=m
+CONFIG_REGULATOR_FAN53555=m
+CONFIG_REGULATOR_PWM=m
+CONFIG_REGULATOR_RK808=m
+CONFIG_ROCKCHIP_EFUSE=m
+CONFIG_ROCKCHIP_IOMMU=y
+CONFIG_ROCKCHIP_IODOMAIN=m
+CONFIG_ROCKCHIP_MBOX=y
+CONFIG_ROCKCHIP_PM_DOMAINS=y
+CONFIG_ROCKCHIP_THERMAL=m
+
+# Ethernet
+CONFIG_STMMAC_ETH=m
+# CONFIG_DWMAC_GENERIC is not set
+# CONFIG_DWMAC_IPQ806X is not set
+# CONFIG_DWMAC_QCOM_ETHQOS is not set
+# CONFIG_DWMAC_SUNXI is not set
+# CONFIG_DWMAC_SUN8I is not set
+
+# I2C
+CONFIG_I2C_RK3X=m
+
+# Watchdog
+CONFIG_DW_WATCHDOG=m
+
+# Display
+CONFIG_DRM_ROCKCHIP=m
+CONFIG_ROCKCHIP_ANALOGIX_DP=y
+CONFIG_ROCKCHIP_DW_HDMI=y
+CONFIG_ROCKCHIP_DW_MIPI_DSI=y
+
+# USB 2.x
+CONFIG_PHY_ROCKCHIP_INNO_USB2=m
+CONFIG_USB_OHCI_HCD=m
+# CONFIG_USB_OHCI_HCD_PCI is not set
+CONFIG_USB_OHCI_HCD_PLATFORM=m
+
+# eMMC / SD-Card
+CONFIG_MMC_SDHCI_OF_ARASAN=m
+CONFIG_MMC_DW=m
+CONFIG_MMC_DW_ROCKCHIP=m
+CONFIG_PHY_ROCKCHIP_EMMC=m
+
+# Real-time clock
+CONFIG_RTC_DRV_RK808=m
+
+# Type-C
+CONFIG_PHY_ROCKCHIP_TYPEC=m
+
+# SAR ADC
+CONFIG_ROCKCHIP_SARADC=m
+
+# Audio
+CONFIG_SND_SOC_ROCKCHIP_I2S=m
+
+# To boot Linux distributions like Debian
+CONFIG_DEVTMPFS=y
+
+# To bootstrap rootfs with QEMU
+CONFIG_HW_RANDOM_VIRTIO=m
+CONFIG_VIRTIO_PCI=m
+CONFIG_VIRTIO_BLK=m
+CONFIG_VIRTIO_NET=m
diff --git a/arch/arm64/crypto/Kbuild.fips140 b/arch/arm64/crypto/Kbuild.fips140
new file mode 100644
index 0000000..9aa0af6
--- /dev/null
+++ b/arch/arm64/crypto/Kbuild.fips140
@@ -0,0 +1,52 @@
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# Create a separate FIPS archive that duplicates the modules that are relevant
+# for FIPS 140 certification as builtin objects
+#
+
+sha1-ce-y := sha1-ce-glue.o sha1-ce-core.o
+sha2-ce-y := sha2-ce-glue.o sha2-ce-core.o
+sha512-ce-y := sha512-ce-glue.o sha512-ce-core.o
+ghash-ce-y := ghash-ce-glue.o ghash-ce-core.o
+aes-ce-cipher-y := aes-ce-core.o aes-ce-glue.o
+aes-ce-blk-y := aes-glue-ce.o aes-ce.o
+aes-neon-blk-y := aes-glue-neon.o aes-neon.o
+sha256-arm64-y := sha256-glue.o sha256-core.o
+sha512-arm64-y := sha512-glue.o sha512-core.o
+aes-arm64-y := aes-cipher-core.o aes-cipher-glue.o
+aes-neon-bs-y := aes-neonbs-core.o aes-neonbs-glue.o
+
+crypto-arm64-fips-src	  := $(srctree)/arch/arm64/crypto/
+crypto-arm64-fips-modules := sha1-ce.o sha2-ce.o sha512-ce.o ghash-ce.o \
+			     aes-ce-cipher.o aes-ce-blk.o aes-neon-blk.o \
+			     sha256-arm64.o sha512-arm64.o aes-arm64.o \
+			     aes-neon-bs.o
+
+crypto-fips-objs += $(foreach o,$(crypto-arm64-fips-modules),$($(o:.o=-y):.o=-fips-arch.o))
+
+CFLAGS_aes-glue-ce-fips-arch.o := -DUSE_V8_CRYPTO_EXTENSIONS
+
+$(obj)/aes-glue-%-fips-arch.o: KBUILD_CFLAGS += $(FIPS140_CFLAGS)
+$(obj)/aes-glue-%-fips-arch.o: $(crypto-arm64-fips-src)/aes-glue.c FORCE
+	$(call if_changed_rule,cc_o_c)
+
+$(obj)/%-fips-arch.o: KBUILD_CFLAGS += $(FIPS140_CFLAGS)
+$(obj)/%-fips-arch.o: $(crypto-arm64-fips-src)/%.c FORCE
+	$(call if_changed_rule,cc_o_c)
+
+$(obj)/%-fips-arch.o: $(crypto-arm64-fips-src)/%.S FORCE
+	$(call if_changed_rule,as_o_S)
+
+quiet_cmd_perlasm = PERLASM $@
+      cmd_perlasm = $(PERL) $(<) void $(@)
+
+$(obj)/%-core.S: $(crypto-arm64-fips-src)/%-armv8.pl
+	$(call cmd,perlasm)
+
+$(obj)/sha256-core.S: $(crypto-arm64-fips-src)/sha512-armv8.pl
+	$(call cmd,perlasm)
+
+clean-files += sha256-core.S sha512-core.S
+
+$(obj)/%-fips-arch.o: $(obj)/%.S FORCE
+	$(call if_changed_rule,as_o_S)
diff --git a/arch/arm64/gunyah/Makefile b/arch/arm64/gunyah/Makefile
new file mode 100644
index 0000000..84f1e38
--- /dev/null
+++ b/arch/arm64/gunyah/Makefile
@@ -0,0 +1,3 @@
+# SPDX-License-Identifier: GPL-2.0
+
+obj-$(CONFIG_GUNYAH) += gunyah_hypercall.o
diff --git a/arch/arm64/gunyah/gunyah_hypercall.c b/arch/arm64/gunyah/gunyah_hypercall.c
new file mode 100644
index 0000000..e178b5a
--- /dev/null
+++ b/arch/arm64/gunyah/gunyah_hypercall.c
@@ -0,0 +1,142 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+#include <linux/arm-smccc.h>
+#include <linux/module.h>
+#include <linux/gunyah.h>
+#include <linux/uuid.h>
+
+/* {c1d58fcd-a453-5fdb-9265-ce36673d5f14} */
+static const uuid_t GUNYAH_UUID =
+	UUID_INIT(0xc1d58fcd, 0xa453, 0x5fdb, 0x92, 0x65, 0xce, 0x36, 0x67, 0x3d, 0x5f, 0x14);
+
+bool arch_is_gh_guest(void)
+{
+	struct arm_smccc_res res;
+	uuid_t uuid;
+	u32 *up;
+
+	arm_smccc_1_1_hvc(ARM_SMCCC_VENDOR_HYP_CALL_UID_FUNC_ID, &res);
+
+	up = (u32 *)&uuid.b[0];
+	up[0] = lower_32_bits(res.a0);
+	up[1] = lower_32_bits(res.a1);
+	up[2] = lower_32_bits(res.a2);
+	up[3] = lower_32_bits(res.a3);
+
+	return uuid_equal(&uuid, &GUNYAH_UUID);
+}
+EXPORT_SYMBOL_GPL(arch_is_gh_guest);
+
+#define GH_HYPERCALL(fn)	ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL, ARM_SMCCC_SMC_64, \
+						   ARM_SMCCC_OWNER_VENDOR_HYP, \
+						   fn)
+
+#define GH_HYPERCALL_HYP_IDENTIFY		GH_HYPERCALL(0x8000)
+#define GH_HYPERCALL_BELL_SEND			GH_HYPERCALL(0x8012)
+#define GH_HYPERCALL_BELL_SET_MASK		GH_HYPERCALL(0x8015)
+#define GH_HYPERCALL_MSGQ_SEND			GH_HYPERCALL(0x801B)
+#define GH_HYPERCALL_MSGQ_RECV			GH_HYPERCALL(0x801C)
+#define GH_HYPERCALL_VCPU_RUN			GH_HYPERCALL(0x8065)
+
+/**
+ * gh_hypercall_hyp_identify() - Returns build information and feature flags
+ *                               supported by Gunyah.
+ * @hyp_identity: filled by the hypercall with the API info and feature flags.
+ */
+void gh_hypercall_hyp_identify(struct gh_hypercall_hyp_identify_resp *hyp_identity)
+{
+	struct arm_smccc_res res;
+
+	arm_smccc_1_1_hvc(GH_HYPERCALL_HYP_IDENTIFY, &res);
+
+	hyp_identity->api_info = res.a0;
+	hyp_identity->flags[0] = res.a1;
+	hyp_identity->flags[1] = res.a2;
+	hyp_identity->flags[2] = res.a3;
+}
+EXPORT_SYMBOL_GPL(gh_hypercall_hyp_identify);
+
+enum gh_error gh_hypercall_bell_send(u64 capid, u64 new_flags, u64 *old_flags)
+{
+	struct arm_smccc_res res;
+
+	arm_smccc_1_1_hvc(GH_HYPERCALL_BELL_SEND, capid, new_flags, 0, &res);
+
+	if (res.a0 == GH_ERROR_OK && old_flags)
+		*old_flags = res.a1;
+
+	return res.a0;
+}
+EXPORT_SYMBOL_GPL(gh_hypercall_bell_send);
+
+enum gh_error gh_hypercall_bell_set_mask(u64 capid, u64 enable_mask, u64 ack_mask)
+{
+	struct arm_smccc_res res;
+
+	arm_smccc_1_1_hvc(GH_HYPERCALL_BELL_SET_MASK, capid, enable_mask, ack_mask, 0, &res);
+
+	return res.a0;
+}
+EXPORT_SYMBOL_GPL(gh_hypercall_bell_set_mask);
+
+enum gh_error gh_hypercall_msgq_send(u64 capid, size_t size, void *buff, u64 tx_flags, bool *ready)
+{
+	struct arm_smccc_res res;
+
+	arm_smccc_1_1_hvc(GH_HYPERCALL_MSGQ_SEND, capid, size, (uintptr_t)buff, tx_flags, 0, &res);
+
+	if (res.a0 == GH_ERROR_OK)
+		*ready = !!res.a1;
+
+	return res.a0;
+}
+EXPORT_SYMBOL_GPL(gh_hypercall_msgq_send);
+
+enum gh_error gh_hypercall_msgq_recv(u64 capid, void *buff, size_t size, size_t *recv_size,
+					bool *ready)
+{
+	struct arm_smccc_res res;
+
+	arm_smccc_1_1_hvc(GH_HYPERCALL_MSGQ_RECV, capid, (uintptr_t)buff, size, 0, &res);
+
+	if (res.a0 == GH_ERROR_OK) {
+		*recv_size = res.a1;
+		*ready = !!res.a2;
+	}
+
+	return res.a0;
+}
+EXPORT_SYMBOL_GPL(gh_hypercall_msgq_recv);
+
+enum gh_error gh_hypercall_vcpu_run(u64 capid, u64 *resume_data,
+					struct gh_hypercall_vcpu_run_resp *resp)
+{
+	struct arm_smccc_1_2_regs args = {
+		.a0 = GH_HYPERCALL_VCPU_RUN,
+		.a1 = capid,
+		.a2 = resume_data[0],
+		.a3 = resume_data[1],
+		.a4 = resume_data[2],
+		/* C language says this will be implictly zero. Gunyah requires 0, so be explicit */
+		.a5 = 0,
+	};
+	struct arm_smccc_1_2_regs res;
+
+	arm_smccc_1_2_hvc(&args, &res);
+
+	if (res.a0 == GH_ERROR_OK) {
+		resp->sized_state = res.a1;
+		resp->state_data[0] = res.a2;
+		resp->state_data[1] = res.a3;
+		resp->state_data[2] = res.a4;
+	}
+
+	return res.a0;
+}
+EXPORT_SYMBOL_GPL(gh_hypercall_vcpu_run);
+
+MODULE_LICENSE("GPL");
+MODULE_DESCRIPTION("Gunyah Hypervisor Hypercalls");
diff --git a/arch/arm64/include/asm/alternative-macros.h b/arch/arm64/include/asm/alternative-macros.h
index 3622e9f..c7842fd 100644
--- a/arch/arm64/include/asm/alternative-macros.h
+++ b/arch/arm64/include/asm/alternative-macros.h
@@ -19,6 +19,7 @@
 #error "cpucaps have overflown ARM64_CB_BIT"
 #endif
 
+#ifndef BUILD_FIPS140_KO
 #ifndef __ASSEMBLY__
 
 #include <linux/stringify.h>
@@ -261,4 +262,50 @@ alternative_has_feature_unlikely(unsigned long feature)
 
 #endif /* __ASSEMBLY__ */
 
+#else
+
+/*
+ * The FIPS140 module does not support alternatives patching, as this
+ * invalidates the HMAC digest of the .text section. However, some alternatives
+ * are known to be irrelevant so we can tolerate them in the FIPS140 module, as
+ * they will never be applied in the first place in the use cases that the
+ * FIPS140 module targets (Android running on a production phone). Any other
+ * uses of alternatives should be avoided, as it is not safe in the general
+ * case to simply use the default sequence in one place (the fips module) and
+ * the alternative sequence everywhere else.
+ *
+ * Below is an allowlist of features that we can ignore, by simply taking the
+ * safe default instruction sequence. Note that this implies that the FIPS140
+ * module is not compatible with VHE, or with pseudo-NMI support.
+ */
+
+#define __ALT_ARM64_HAS_LDAPR			0,
+#define __ALT_ARM64_HAS_VIRT_HOST_EXTN		0,
+#define __ALT_ARM64_HAS_IRQ_PRIO_MASKING	0,
+
+#define ALTERNATIVE(oldinstr, newinstr, feature, ...)   \
+	_ALTERNATIVE(oldinstr, __ALT_ ## feature, #feature)
+
+#define _ALTERNATIVE(oldinstr, feature, feature_str)   \
+	__take_second_arg(feature oldinstr, \
+		".err Feature " feature_str " not supported in fips140 module")
+
+#ifndef __ASSEMBLY__
+
+#include <linux/types.h>
+
+static __always_inline bool
+alternative_has_feature_likely(unsigned long feature)
+{
+	return feature == ARM64_HAS_LDAPR ||
+		feature == ARM64_HAS_VIRT_HOST_EXTN ||
+		feature == ARM64_HAS_IRQ_PRIO_MASKING;
+}
+
+#define alternative_has_feature_unlikely alternative_has_feature_likely
+
+#endif /* !__ASSEMBLY__ */
+
+#endif /* BUILD_FIPS140_KO */
+
 #endif /* __ASM_ALTERNATIVE_MACROS_H */
diff --git a/arch/arm64/include/asm/android_erratum_pgtable.h b/arch/arm64/include/asm/android_erratum_pgtable.h
new file mode 100644
index 0000000..57b7fbf
--- /dev/null
+++ b/arch/arm64/include/asm/android_erratum_pgtable.h
@@ -0,0 +1,53 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright (C) 2023 - Google LLC
+ * Author: Will Deacon <willdeacon@google.com>
+ */
+#ifndef _ASM_ARM64_ANDROID_ERRATUM_PGTABLE_H
+#define _ASM_ARM64_ANDROID_ERRATUM_PGTABLE_H
+
+#ifndef __ASM_PGTABLE_H
+#error "Please don't include this header directly."
+#endif
+
+#ifdef CONFIG_ANDROID_ARM64_WORKAROUND_DMA_BEYOND_POC
+extern void pkvm_host_set_stage2_memattr(phys_addr_t addr, bool force_nc);
+extern __init int pkvm_register_early_nc_mappings(void);
+
+DECLARE_STATIC_KEY_FALSE(pkvm_force_nc);
+static inline bool prot_needs_stage2_update(pgprot_t prot)
+{
+	pteval_t val = pgprot_val(prot);
+
+	if (!static_branch_unlikely(&pkvm_force_nc))
+		return 0;
+
+	return (val & PTE_ATTRINDX_MASK) == PTE_ATTRINDX(MT_NORMAL_NC);
+}
+
+static inline void arm64_update_cacheable_aliases(pte_t *ptep, pte_t pte)
+{
+	pte_t old_pte = READ_ONCE(*ptep);
+	bool force_nc;
+
+	if (!static_branch_unlikely(&pkvm_force_nc))
+		return;
+
+	if (pte_valid(old_pte) == pte_valid(pte))
+		return;
+
+	if (!pte_valid(pte)) {
+		force_nc = false;
+		pte = old_pte;
+	} else {
+		force_nc = true;
+	}
+
+	if ((pte_val(pte) & PTE_ATTRINDX_MASK) == PTE_ATTRINDX(MT_NORMAL_NC))
+		pkvm_host_set_stage2_memattr(__pte_to_phys(pte), force_nc);
+}
+#else
+static inline void arm64_update_cacheable_aliases(pte_t *ptep, pte_t pte) { }
+static inline bool prot_needs_stage2_update(pgprot_t prot) { return false; }
+#endif /* CONFIG_ANDROID_ARM64_WORKAROUND_DMA_BEYOND_POC */
+#endif /* _ASM_ARM64_ANDROID_ERRATUM_PGTABLE_H */
diff --git a/arch/arm64/include/asm/assembler.h b/arch/arm64/include/asm/assembler.h
index e5957a5..661827b 100644
--- a/arch/arm64/include/asm/assembler.h
+++ b/arch/arm64/include/asm/assembler.h
@@ -921,4 +921,19 @@ alternative_cb ARM64_ALWAYS_SYSTEM, spectre_bhb_patch_clearbhb
 alternative_cb_end
 #endif /* CONFIG_MITIGATE_SPECTRE_BRANCH_HISTORY */
 	.endm
+
+#if defined(__KVM_NVHE_HYPERVISOR__)
+/*
+ * pKVM uses the module_ops struct to expose services to modules but
+ * doesn't allow fine-grained definition of the license for each export,
+ * and doesn't have a way to check the license of the loaded module.
+ * Given that said module may be proprietary, let's seek GPL compliance
+ * by preventing the accidental export of GPL symbols to hyp modules via
+ * pKVM's module_ops struct.
+ */
+#ifdef EXPORT_SYMBOL_GPL
+#undef EXPORT_SYMBOL_GPL
+#endif
+#define EXPORT_SYMBOL_GPL(sym) ASM_BUILD_BUG()
+#endif
 #endif	/* __ASM_ASSEMBLER_H */
diff --git a/arch/arm64/include/asm/cache.h b/arch/arm64/include/asm/cache.h
index c0b178d..079a200 100644
--- a/arch/arm64/include/asm/cache.h
+++ b/arch/arm64/include/asm/cache.h
@@ -23,7 +23,7 @@
  * cache before the transfer is done, causing old data to be seen by
  * the CPU.
  */
-#define ARCH_DMA_MINALIGN	(128)
+#define ARCH_DMA_MINALIGN	(64)
 
 #ifndef __ASSEMBLY__
 
diff --git a/arch/arm64/include/asm/el2_setup.h b/arch/arm64/include/asm/el2_setup.h
index 668569a..1cc29960 100644
--- a/arch/arm64/include/asm/el2_setup.h
+++ b/arch/arm64/include/asm/el2_setup.h
@@ -196,4 +196,96 @@
 	__init_el2_nvhe_prepare_eret
 .endm
 
+#ifndef __KVM_NVHE_HYPERVISOR__
+// This will clobber tmp1 and tmp2, and expect tmp1 to contain
+// the id register value as read from the HW
+.macro __check_override idreg, fld, width, pass, fail, tmp1, tmp2
+	ubfx	\tmp1, \tmp1, #\fld, #\width
+	cbz	\tmp1, \fail
+
+	adr_l	\tmp1, \idreg\()_override
+	ldr	\tmp2, [\tmp1, FTR_OVR_VAL_OFFSET]
+	ldr	\tmp1, [\tmp1, FTR_OVR_MASK_OFFSET]
+	ubfx	\tmp2, \tmp2, #\fld, #\width
+	ubfx	\tmp1, \tmp1, #\fld, #\width
+	cmp	\tmp1, xzr
+	and	\tmp2, \tmp2, \tmp1
+	csinv	\tmp2, \tmp2, xzr, ne
+	cbnz	\tmp2, \pass
+	b	\fail
+.endm
+
+// This will clobber tmp1 and tmp2
+.macro check_override idreg, fld, pass, fail, tmp1, tmp2
+	mrs	\tmp1, \idreg\()_el1
+	__check_override \idreg \fld 4 \pass \fail \tmp1 \tmp2
+.endm
+#else
+// This will clobber tmp
+.macro __check_override idreg, fld, width, pass, fail, tmp, ignore
+	ldr_l	\tmp, \idreg\()_el1_sys_val
+	ubfx	\tmp, \tmp, #\fld, #\width
+	cbnz	\tmp, \pass
+	b	\fail
+.endm
+
+.macro check_override idreg, fld, pass, fail, tmp, ignore
+	__check_override \idreg \fld 4 \pass \fail \tmp \ignore
+.endm
+#endif
+
+.macro finalise_el2_state
+	check_override id_aa64pfr0, ID_AA64PFR0_EL1_SVE_SHIFT, .Linit_sve_\@, .Lskip_sve_\@, x1, x2
+
+.Linit_sve_\@:	/* SVE register access */
+	mrs	x0, cptr_el2			// Disable SVE traps
+	bic	x0, x0, #CPTR_EL2_TZ
+	msr	cptr_el2, x0
+	isb
+	mov	x1, #ZCR_ELx_LEN_MASK		// SVE: Enable full vector
+	msr_s	SYS_ZCR_EL2, x1			// length for EL1.
+
+.Lskip_sve_\@:
+	check_override id_aa64pfr1, ID_AA64PFR1_EL1_SME_SHIFT, .Linit_sme_\@, .Lskip_sme_\@, x1, x2
+
+.Linit_sme_\@:	/* SME register access and priority mapping */
+	mrs	x0, cptr_el2			// Disable SME traps
+	bic	x0, x0, #CPTR_EL2_TSM
+	msr	cptr_el2, x0
+	isb
+
+	mrs	x1, sctlr_el2
+	orr	x1, x1, #SCTLR_ELx_ENTP2	// Disable TPIDR2 traps
+	msr	sctlr_el2, x1
+	isb
+
+	mov	x0, #0				// SMCR controls
+
+	// Full FP in SM?
+	mrs_s	x1, SYS_ID_AA64SMFR0_EL1
+	__check_override id_aa64smfr0, ID_AA64SMFR0_EL1_FA64_SHIFT, 1, .Linit_sme_fa64_\@, .Lskip_sme_fa64_\@, x1, x2
+
+.Linit_sme_fa64_\@:
+	orr	x0, x0, SMCR_ELx_FA64_MASK
+.Lskip_sme_fa64_\@:
+
+	orr	x0, x0, #SMCR_ELx_LEN_MASK	// Enable full SME vector
+	msr_s	SYS_SMCR_EL2, x0		// length for EL1.
+
+	mrs_s	x1, SYS_SMIDR_EL1		// Priority mapping supported?
+	ubfx    x1, x1, #SMIDR_EL1_SMPS_SHIFT, #1
+	cbz     x1, .Lskip_sme_\@
+
+	msr_s	SYS_SMPRIMAP_EL2, xzr		// Make all priorities equal
+
+	mrs	x1, id_aa64mmfr1_el1		// HCRX_EL2 present?
+	ubfx	x1, x1, #ID_AA64MMFR1_EL1_HCX_SHIFT, #4
+	cbz	x1, .Lskip_sme_\@
+
+	mrs_s	x1, SYS_HCRX_EL2
+	orr	x1, x1, #HCRX_EL2_SMPME_MASK	// Enable priority mapping
+	msr_s	SYS_HCRX_EL2, x1
+.Lskip_sme_\@:
+.endm
+
 #endif /* __ARM_KVM_INIT_H__ */
diff --git a/arch/arm64/include/asm/exception.h b/arch/arm64/include/asm/exception.h
index 19713d0f..18dbb35a 100644
--- a/arch/arm64/include/asm/exception.h
+++ b/arch/arm64/include/asm/exception.h
@@ -8,16 +8,11 @@
 #define __ASM_EXCEPTION_H
 
 #include <asm/esr.h>
-#include <asm/kprobes.h>
 #include <asm/ptrace.h>
 
 #include <linux/interrupt.h>
 
-#ifdef CONFIG_FUNCTION_GRAPH_TRACER
 #define __exception_irq_entry	__irq_entry
-#else
-#define __exception_irq_entry	__kprobes
-#endif
 
 static inline unsigned long disr_to_esr(u64 disr)
 {
diff --git a/arch/arm64/include/asm/fixmap.h b/arch/arm64/include/asm/fixmap.h
index 71ed5fd..02bf6e4 100644
--- a/arch/arm64/include/asm/fixmap.h
+++ b/arch/arm64/include/asm/fixmap.h
@@ -109,6 +109,8 @@ void __init early_fixmap_init(void);
 
 extern void __set_fixmap(enum fixed_addresses idx, phys_addr_t phys, pgprot_t prot);
 
+extern pte_t *__get_fixmap_pte(enum fixed_addresses idx);
+
 #include <asm-generic/fixmap.h>
 
 #endif /* !__ASSEMBLY__ */
diff --git a/arch/arm64/include/asm/gunyah.h b/arch/arm64/include/asm/gunyah.h
new file mode 100644
index 0000000..c83d983
--- /dev/null
+++ b/arch/arm64/include/asm/gunyah.h
@@ -0,0 +1,24 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+#ifndef _ASM_GUNYAH_H
+#define _ASM_GUNYAH_H
+
+#include <linux/irq.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+
+static inline int arch_gh_fill_irq_fwspec_params(u32 virq, struct irq_fwspec *fwspec)
+{
+	/* Assume that Gunyah gave us an SPI; defensively check it */
+	if (WARN_ON(virq < 32 || virq > 1019))
+		return -EINVAL;
+
+	fwspec->param_count = 3;
+	fwspec->param[0] = GIC_SPI;
+	fwspec->param[1] = virq - 32;
+	fwspec->param[2] = IRQ_TYPE_EDGE_RISING;
+	return 0;
+}
+
+#endif
diff --git a/arch/arm64/include/asm/hypervisor.h b/arch/arm64/include/asm/hypervisor.h
index 0ae427f..9b4e4ed 100644
--- a/arch/arm64/include/asm/hypervisor.h
+++ b/arch/arm64/include/asm/hypervisor.h
@@ -6,5 +6,14 @@
 
 void kvm_init_hyp_services(void);
 bool kvm_arm_hyp_service_available(u32 func_id);
+void kvm_arm_init_hyp_services(void);
+void kvm_init_memshare_services(void);
+void kvm_init_ioremap_services(void);
+
+#ifdef CONFIG_MEMORY_RELINQUISH
+void kvm_init_memrelinquish_services(void);
+#else
+static inline void kvm_init_memrelinquish_services(void) {}
+#endif
 
 #endif
diff --git a/arch/arm64/include/asm/kfence.h b/arch/arm64/include/asm/kfence.h
index aa855c6..a81937f 100644
--- a/arch/arm64/include/asm/kfence.h
+++ b/arch/arm64/include/asm/kfence.h
@@ -19,4 +19,14 @@ static inline bool kfence_protect_page(unsigned long addr, bool protect)
 	return true;
 }
 
+#ifdef CONFIG_KFENCE
+extern bool kfence_early_init;
+static inline bool arm64_kfence_can_set_direct_map(void)
+{
+	return !kfence_early_init;
+}
+#else /* CONFIG_KFENCE */
+static inline bool arm64_kfence_can_set_direct_map(void) { return false; }
+#endif /* CONFIG_KFENCE */
+
 #endif /* __ASM_KFENCE_H */
diff --git a/arch/arm64/include/asm/kvm_arm.h b/arch/arm64/include/asm/kvm_arm.h
index 8aa8492..7313fac 100644
--- a/arch/arm64/include/asm/kvm_arm.h
+++ b/arch/arm64/include/asm/kvm_arm.h
@@ -135,7 +135,7 @@
  * 40 bits wide (T0SZ = 24).  Systems with a PARange smaller than 40 bits are
  * not known to exist and will break with this configuration.
  *
- * The VTCR_EL2 is configured per VM and is initialised in kvm_arm_setup_stage2().
+ * The VTCR_EL2 is configured per VM and is initialised in kvm_init_stage2_mmu.
  *
  * Note that when using 4K pages, we concatenate two first level page tables
  * together. With 16K pages, we concatenate 16 first level page tables.
@@ -344,6 +344,8 @@
 #define PAR_TO_HPFAR(par)		\
 	(((par) & GENMASK_ULL(PHYS_MASK_SHIFT - 1, 12)) >> 8)
 
+#define FAR_MASK GENMASK_ULL(11, 0)
+
 #define ECN(x) { ESR_ELx_EC_##x, #x }
 
 #define kvm_arm_exception_class \
@@ -361,4 +363,13 @@
 #define CPACR_EL1_DEFAULT	(CPACR_EL1_FPEN_EL0EN | CPACR_EL1_FPEN_EL1EN |\
 				 CPACR_EL1_ZEN_EL1EN)
 
+/*
+ * ARMv8 Reset Values
+ */
+#define VCPU_RESET_PSTATE_EL1	(PSR_MODE_EL1h | PSR_A_BIT | PSR_I_BIT | \
+				 PSR_F_BIT | PSR_D_BIT)
+
+#define VCPU_RESET_PSTATE_SVC	(PSR_AA32_MODE_SVC | PSR_AA32_A_BIT | \
+				 PSR_AA32_I_BIT | PSR_AA32_F_BIT)
+
 #endif /* __ARM64_KVM_ARM_H__ */
diff --git a/arch/arm64/include/asm/kvm_asm.h b/arch/arm64/include/asm/kvm_asm.h
index 5303576..6755a0d 100644
--- a/arch/arm64/include/asm/kvm_asm.h
+++ b/arch/arm64/include/asm/kvm_asm.h
@@ -59,23 +59,53 @@ enum __kvm_host_smccc_func {
 	__KVM_HOST_SMCCC_FUNC___kvm_enable_ssbs,
 	__KVM_HOST_SMCCC_FUNC___vgic_v3_init_lrs,
 	__KVM_HOST_SMCCC_FUNC___vgic_v3_get_gic_config,
+	__KVM_HOST_SMCCC_FUNC___kvm_flush_vm_context,
+	__KVM_HOST_SMCCC_FUNC___kvm_tlb_flush_vmid_ipa,
+	__KVM_HOST_SMCCC_FUNC___kvm_tlb_flush_vmid,
+	__KVM_HOST_SMCCC_FUNC___kvm_flush_cpu_context,
+	__KVM_HOST_SMCCC_FUNC___pkvm_alloc_module_va,
+	__KVM_HOST_SMCCC_FUNC___pkvm_map_module_page,
+	__KVM_HOST_SMCCC_FUNC___pkvm_unmap_module_page,
+	__KVM_HOST_SMCCC_FUNC___pkvm_init_module,
+	__KVM_HOST_SMCCC_FUNC___pkvm_register_hcall,
 	__KVM_HOST_SMCCC_FUNC___pkvm_prot_finalize,
 
 	/* Hypercalls available after pKVM finalisation */
 	__KVM_HOST_SMCCC_FUNC___pkvm_host_share_hyp,
 	__KVM_HOST_SMCCC_FUNC___pkvm_host_unshare_hyp,
+	__KVM_HOST_SMCCC_FUNC___pkvm_host_map_guest,
 	__KVM_HOST_SMCCC_FUNC___kvm_adjust_pc,
 	__KVM_HOST_SMCCC_FUNC___kvm_vcpu_run,
-	__KVM_HOST_SMCCC_FUNC___kvm_flush_vm_context,
-	__KVM_HOST_SMCCC_FUNC___kvm_tlb_flush_vmid_ipa,
-	__KVM_HOST_SMCCC_FUNC___kvm_tlb_flush_vmid,
-	__KVM_HOST_SMCCC_FUNC___kvm_flush_cpu_context,
 	__KVM_HOST_SMCCC_FUNC___kvm_timer_set_cntvoff,
-	__KVM_HOST_SMCCC_FUNC___vgic_v3_read_vmcr,
-	__KVM_HOST_SMCCC_FUNC___vgic_v3_write_vmcr,
-	__KVM_HOST_SMCCC_FUNC___vgic_v3_save_aprs,
-	__KVM_HOST_SMCCC_FUNC___vgic_v3_restore_aprs,
-	__KVM_HOST_SMCCC_FUNC___pkvm_vcpu_init_traps,
+	__KVM_HOST_SMCCC_FUNC___vgic_v3_save_vmcr_aprs,
+	__KVM_HOST_SMCCC_FUNC___vgic_v3_restore_vmcr_aprs,
+	__KVM_HOST_SMCCC_FUNC___pkvm_init_vm,
+	__KVM_HOST_SMCCC_FUNC___pkvm_init_vcpu,
+	__KVM_HOST_SMCCC_FUNC___pkvm_start_teardown_vm,
+	__KVM_HOST_SMCCC_FUNC___pkvm_finalize_teardown_vm,
+	__KVM_HOST_SMCCC_FUNC___pkvm_reclaim_dying_guest_page,
+	__KVM_HOST_SMCCC_FUNC___pkvm_vcpu_load,
+	__KVM_HOST_SMCCC_FUNC___pkvm_vcpu_put,
+	__KVM_HOST_SMCCC_FUNC___pkvm_vcpu_sync_state,
+	__KVM_HOST_SMCCC_FUNC___pkvm_iommu_driver_init,
+	__KVM_HOST_SMCCC_FUNC___pkvm_iommu_register,
+	__KVM_HOST_SMCCC_FUNC___pkvm_iommu_pm_notify,
+	__KVM_HOST_SMCCC_FUNC___pkvm_iommu_finalize,
+	__KVM_HOST_SMCCC_FUNC___pkvm_load_tracing,
+	__KVM_HOST_SMCCC_FUNC___pkvm_teardown_tracing,
+	__KVM_HOST_SMCCC_FUNC___pkvm_enable_tracing,
+	__KVM_HOST_SMCCC_FUNC___pkvm_rb_swap_reader_page,
+	__KVM_HOST_SMCCC_FUNC___pkvm_rb_update_footers,
+	__KVM_HOST_SMCCC_FUNC___pkvm_enable_event,
+#ifdef CONFIG_ANDROID_ARM64_WORKAROUND_DMA_BEYOND_POC
+	__KVM_HOST_SMCCC_FUNC___pkvm_host_set_stage2_memattr,
+#endif
+
+	/*
+	 * Start of the dynamically registered hypercalls. Start a bit
+	 * further, just in case some modules...
+	 */
+	__KVM_HOST_SMCCC_FUNC___dynamic_hcalls = 128,
 };
 
 #define DECLARE_KVM_VHE_SYM(sym)	extern char sym[]
@@ -106,7 +136,7 @@ enum __kvm_host_smccc_func {
 #define per_cpu_ptr_nvhe_sym(sym, cpu)						\
 	({									\
 		unsigned long base, off;					\
-		base = kvm_arm_hyp_percpu_base[cpu];				\
+		base = kvm_nvhe_sym(kvm_arm_hyp_percpu_base)[cpu];		\
 		off = (unsigned long)&CHOOSE_NVHE_SYM(sym) -			\
 		      (unsigned long)&CHOOSE_NVHE_SYM(__per_cpu_start);		\
 		base ? (typeof(CHOOSE_NVHE_SYM(sym))*)(base + off) : NULL;	\
@@ -123,6 +153,19 @@ extern void *__nvhe_undefined_symbol;
 #define this_cpu_ptr_hyp_sym(sym)	(&__nvhe_undefined_symbol)
 #define per_cpu_ptr_hyp_sym(sym, cpu)	(&__nvhe_undefined_symbol)
 
+/*
+ * pKVM uses the module_ops struct to expose services to modules but
+ * doesn't allow fine-grained definition of the license for each export,
+ * and doesn't have a way to check the license of the loaded module.
+ * Given that said module may be proprietary, let's seek GPL compliance
+ * by preventing the accidental export of GPL symbols to hyp modules via
+ * pKVM's module_ops struct.
+ */
+#ifdef EXPORT_SYMBOL_GPL
+#undef EXPORT_SYMBOL_GPL
+#endif
+#define EXPORT_SYMBOL_GPL(sym) BUILD_BUG()
+
 #elif defined(__KVM_VHE_HYPERVISOR__)
 
 #define CHOOSE_VHE_SYM(sym)	sym
@@ -172,6 +215,7 @@ struct kvm_nvhe_init_params {
 	unsigned long stack_pa;
 	phys_addr_t pgd_pa;
 	unsigned long hcr_el2;
+	unsigned long hfgwtr_el2;
 	unsigned long vttbr;
 	unsigned long vtcr;
 };
@@ -211,7 +255,7 @@ DECLARE_KVM_HYP_SYM(__kvm_hyp_vector);
 #define __kvm_hyp_init		CHOOSE_NVHE_SYM(__kvm_hyp_init)
 #define __kvm_hyp_vector	CHOOSE_HYP_SYM(__kvm_hyp_vector)
 
-extern unsigned long kvm_arm_hyp_percpu_base[NR_CPUS];
+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);
 
@@ -231,8 +275,6 @@ extern int __kvm_vcpu_run(struct kvm_vcpu *vcpu);
 extern void __kvm_adjust_pc(struct kvm_vcpu *vcpu);
 
 extern u64 __vgic_v3_get_gic_config(void);
-extern u64 __vgic_v3_read_vmcr(void);
-extern void __vgic_v3_write_vmcr(u32 vmcr);
 extern void __vgic_v3_init_lrs(void);
 
 extern u64 __kvm_get_mdcr_el2(void);
diff --git a/arch/arm64/include/asm/kvm_emulate.h b/arch/arm64/include/asm/kvm_emulate.h
index 0d40c48..2cfce26 100644
--- a/arch/arm64/include/asm/kvm_emulate.h
+++ b/arch/arm64/include/asm/kvm_emulate.h
@@ -42,6 +42,11 @@ void kvm_inject_dabt(struct kvm_vcpu *vcpu, unsigned long addr);
 void kvm_inject_pabt(struct kvm_vcpu *vcpu, unsigned long addr);
 void kvm_inject_size_fault(struct kvm_vcpu *vcpu);
 
+unsigned long get_except64_offset(unsigned long psr, unsigned long target_mode,
+				  enum exception_type type);
+unsigned long get_except64_cpsr(unsigned long old, bool has_mte,
+				unsigned long sctlr, unsigned long mode);
+
 void kvm_vcpu_wfi(struct kvm_vcpu *vcpu);
 
 #if defined(__KVM_VHE_HYPERVISOR__) || defined(__KVM_NVHE_HYPERVISOR__)
@@ -508,4 +513,61 @@ static inline bool vcpu_has_feature(struct kvm_vcpu *vcpu, int feature)
 	return test_bit(feature, vcpu->arch.features);
 }
 
+static inline int kvm_vcpu_enable_ptrauth(struct kvm_vcpu *vcpu)
+{
+	/*
+	 * For now make sure that both address/generic pointer authentication
+	 * features are requested by the userspace together and the system
+	 * supports these capabilities.
+	 */
+	if (!vcpu_has_feature(vcpu, KVM_ARM_VCPU_PTRAUTH_ADDRESS) ||
+	    !vcpu_has_feature(vcpu, KVM_ARM_VCPU_PTRAUTH_GENERIC) ||
+	    !system_has_full_ptr_auth())
+		return -EINVAL;
+
+	vcpu_set_flag(vcpu, GUEST_HAS_PTRAUTH);
+	return 0;
+}
+
+/* Reset a vcpu's core registers. */
+static inline void kvm_reset_vcpu_core(struct kvm_vcpu *vcpu)
+{
+	u32 pstate;
+
+	if (vcpu_el1_is_32bit(vcpu)) {
+		pstate = VCPU_RESET_PSTATE_SVC;
+	} else {
+		pstate = VCPU_RESET_PSTATE_EL1;
+	}
+
+	/* Reset core registers */
+	memset(vcpu_gp_regs(vcpu), 0, sizeof(*vcpu_gp_regs(vcpu)));
+	memset(&vcpu->arch.ctxt.fp_regs, 0, sizeof(vcpu->arch.ctxt.fp_regs));
+	vcpu->arch.ctxt.spsr_abt = 0;
+	vcpu->arch.ctxt.spsr_und = 0;
+	vcpu->arch.ctxt.spsr_irq = 0;
+	vcpu->arch.ctxt.spsr_fiq = 0;
+	vcpu_gp_regs(vcpu)->pstate = pstate;
+}
+
+/* PSCI reset handling for a vcpu. */
+static inline void kvm_reset_vcpu_psci(struct kvm_vcpu *vcpu,
+				       struct vcpu_reset_state *reset_state)
+{
+	unsigned long target_pc = reset_state->pc;
+
+	/* Gracefully handle Thumb2 entry point */
+	if (vcpu_mode_is_32bit(vcpu) && (target_pc & 1)) {
+		target_pc &= ~1UL;
+		vcpu_set_thumb(vcpu);
+	}
+
+	/* Propagate caller endianness */
+	if (reset_state->be)
+		kvm_vcpu_set_be(vcpu);
+
+	*vcpu_pc(vcpu) = target_pc;
+	vcpu_set_reg(vcpu, 0, reset_state->r0);
+}
+
 #endif /* __ARM64_KVM_EMULATE_H__ */
diff --git a/arch/arm64/include/asm/kvm_host.h b/arch/arm64/include/asm/kvm_host.h
index b5a8e8b..740a62f 100644
--- a/arch/arm64/include/asm/kvm_host.h
+++ b/arch/arm64/include/asm/kvm_host.h
@@ -67,12 +67,71 @@ enum kvm_mode kvm_get_mode(void);
 DECLARE_STATIC_KEY_FALSE(userspace_irqchip_in_use);
 
 extern unsigned int kvm_sve_max_vl;
+extern unsigned int kvm_host_sve_max_vl;
 int kvm_arm_init_sve(void);
 
 u32 __attribute_const__ kvm_target_cpu(void);
 int kvm_reset_vcpu(struct kvm_vcpu *vcpu);
 void kvm_arm_vcpu_destroy(struct kvm_vcpu *vcpu);
 
+struct kvm_hyp_memcache {
+	phys_addr_t head;
+	unsigned long nr_pages;
+};
+
+static inline void push_hyp_memcache(struct kvm_hyp_memcache *mc,
+				     phys_addr_t *p,
+				     phys_addr_t (*to_pa)(void *virt))
+{
+	*p = mc->head;
+	mc->head = to_pa(p);
+	mc->nr_pages++;
+}
+
+static inline void *pop_hyp_memcache(struct kvm_hyp_memcache *mc,
+				     void *(*to_va)(phys_addr_t phys))
+{
+	phys_addr_t *p = to_va(mc->head);
+
+	if (!mc->nr_pages)
+		return NULL;
+
+	mc->head = *p;
+	mc->nr_pages--;
+
+	return p;
+}
+
+static inline int __topup_hyp_memcache(struct kvm_hyp_memcache *mc,
+				       unsigned long min_pages,
+				       void *(*alloc_fn)(void *arg),
+				       phys_addr_t (*to_pa)(void *virt),
+				       void *arg)
+{
+	while (mc->nr_pages < min_pages) {
+		phys_addr_t *p = alloc_fn(arg);
+
+		if (!p)
+			return -ENOMEM;
+		push_hyp_memcache(mc, p, to_pa);
+	}
+
+	return 0;
+}
+
+static inline void __free_hyp_memcache(struct kvm_hyp_memcache *mc,
+				       void (*free_fn)(void *virt, void *arg),
+				       void *(*to_va)(phys_addr_t phys),
+				       void *arg)
+{
+	while (mc->nr_pages)
+		free_fn(pop_hyp_memcache(mc, to_va), arg);
+}
+
+void free_hyp_memcache(struct kvm_hyp_memcache *mc, struct kvm *kvm);
+void free_hyp_stage2_memcache(struct kvm_hyp_memcache *mc, struct kvm *kvm);
+int topup_hyp_memcache(struct kvm_vcpu *vcpu);
+
 struct kvm_vmid {
 	atomic64_t id;
 };
@@ -115,6 +174,23 @@ struct kvm_smccc_features {
 	unsigned long vendor_hyp_bmap;
 };
 
+struct kvm_pinned_page {
+	struct rb_node		node;
+	struct page		*page;
+	u64			ipa;
+};
+
+typedef unsigned int pkvm_handle_t;
+
+struct kvm_protected_vm {
+	pkvm_handle_t handle;
+	struct kvm_hyp_memcache teardown_mc;
+	struct kvm_hyp_memcache teardown_stage2_mc;
+	struct rb_root pinned_pages;
+	gpa_t pvmfw_load_addr;
+	bool enabled;
+};
+
 struct kvm_arch {
 	struct kvm_s2_mmu mmu;
 
@@ -127,9 +203,6 @@ struct kvm_arch {
 	/* Mandated version of PSCI */
 	u32 psci_version;
 
-	/* Protects VM-scoped configuration data */
-	struct mutex config_lock;
-
 	/*
 	 * If we encounter a data abort without valid instruction syndrome
 	 * information, report this to user space.  User space can (and
@@ -152,7 +225,8 @@ struct kvm_arch {
 #define KVM_ARCH_FLAG_EL1_32BIT				4
 	/* PSCI SYSTEM_SUSPEND enabled for the guest */
 #define KVM_ARCH_FLAG_SYSTEM_SUSPEND_ENABLED		5
-
+	/* Guest has bought into the MMIO guard extension */
+#define KVM_ARCH_FLAG_MMIO_GUARD			6
 	unsigned long flags;
 
 	/*
@@ -169,6 +243,12 @@ struct kvm_arch {
 
 	/* Hypercall features firmware registers' descriptor */
 	struct kvm_smccc_features smccc_feat;
+
+	/*
+	 * For an untrusted host VM, 'pkvm.handle' is used to lookup
+	 * the associated pKVM instance in the hypervisor.
+	 */
+	struct kvm_protected_vm pkvm;
 };
 
 struct kvm_vcpu_fault_info {
@@ -280,6 +360,7 @@ struct kvm_host_data {
 struct kvm_host_psci_config {
 	/* PSCI version used by host. */
 	u32 version;
+	u32 smccc_version;
 
 	/* Function IDs used by host if version is v0.1. */
 	struct psci_0_1_function_ids function_ids_0_1;
@@ -299,6 +380,34 @@ extern s64 kvm_nvhe_sym(hyp_physvirt_offset);
 extern u64 kvm_nvhe_sym(hyp_cpu_logical_map)[NR_CPUS];
 #define hyp_cpu_logical_map CHOOSE_NVHE_SYM(hyp_cpu_logical_map)
 
+enum pkvm_iommu_pm_event {
+	PKVM_IOMMU_PM_SUSPEND,
+	PKVM_IOMMU_PM_RESUME,
+};
+
+struct pkvm_iommu_ops;
+
+struct pkvm_iommu_driver {
+	const struct pkvm_iommu_ops *ops;
+	struct list_head list;
+	atomic_t state;
+};
+
+int pkvm_iommu_driver_init(u64 drv, void *data, size_t size);
+int pkvm_iommu_register(struct device *dev, u64 drv, phys_addr_t pa,
+			size_t size, struct device *parent, u8 flags);
+int pkvm_iommu_suspend(struct device *dev);
+int pkvm_iommu_resume(struct device *dev);
+
+/*
+ * Reject future calls to pkvm_iommu_driver_init() and pkvm_iommu_register()
+ * and report errors if found. Incase of errors pKVM can take proper actions
+ * as erasing pvmfw.
+ */
+int pkvm_iommu_finalize(int err);
+
+bool pkvm_iommu_finalized(void);
+
 struct vcpu_reset_state {
 	unsigned long	pc;
 	unsigned long	r0;
@@ -371,7 +480,6 @@ struct kvm_vcpu_arch {
 	struct kvm_guest_debug_arch external_debug_state;
 
 	struct user_fpsimd_state *host_fpsimd_state;	/* hyp VA */
-	struct task_struct *parent_task;
 
 	struct {
 		/* {Break,watch}point registers */
@@ -401,10 +509,13 @@ struct kvm_vcpu_arch {
 
 	/* vcpu power state */
 	struct kvm_mp_state mp_state;
-	spinlock_t mp_state_lock;
 
-	/* Cache some mmu pages needed inside spinlock regions */
-	struct kvm_mmu_memory_cache mmu_page_cache;
+	union {
+		/* Cache some mmu pages needed inside spinlock regions */
+		struct kvm_mmu_memory_cache mmu_page_cache;
+		/* Pages to be donated to pkvm/EL2 if it runs out */
+		struct kvm_hyp_memcache pkvm_memcache;
+	};
 
 	/* Target CPU and feature flags */
 	int target;
@@ -495,9 +606,27 @@ struct kvm_vcpu_arch {
 		__vcpu_flags_preempt_enable();			\
 	} while (0)
 
+#define __vcpu_copy_flag(vt, vs, flagset, f, m)			\
+	do {							\
+		typeof(vs->arch.flagset) tmp, val;		\
+								\
+		__build_check_flag(vs, flagset, f, m);		\
+								\
+		__vcpu_flags_preempt_disable();			\
+		val = READ_ONCE(vs->arch.flagset);		\
+		val &= (m);					\
+		tmp = READ_ONCE(vt->arch.flagset);		\
+		tmp &= ~(m);					\
+		tmp |= val;					\
+		WRITE_ONCE(vt->arch.flagset, tmp);		\
+		__vcpu_flags_preempt_enable();			\
+	} while (0)
+
+
 #define vcpu_get_flag(v, ...)	__vcpu_get_flag((v), __VA_ARGS__)
 #define vcpu_set_flag(v, ...)	__vcpu_set_flag((v), __VA_ARGS__)
 #define vcpu_clear_flag(v, ...)	__vcpu_clear_flag((v), __VA_ARGS__)
+#define vcpu_copy_flag(vt, vs,...) __vcpu_copy_flag((vt), (vs), __VA_ARGS__)
 
 /* SVE exposed to guest */
 #define GUEST_HAS_SVE		__vcpu_single_flag(cflags, BIT(0))
@@ -515,6 +644,8 @@ struct kvm_vcpu_arch {
 #define INCREMENT_PC		__vcpu_single_flag(iflags, BIT(1))
 /* Target EL/MODE (not a single flag, but let's abuse the macro) */
 #define EXCEPT_MASK		__vcpu_single_flag(iflags, GENMASK(3, 1))
+/* Cover both PENDING_EXCEPTION and EXCEPT_MASK for global operations */
+#define PC_UPDATE_REQ		__vcpu_single_flag(iflags, GENMASK(3, 0))
 
 /* Helpers to encode exceptions with minimum fuss */
 #define __EXCEPT_MASK_VAL	unpack_vcpu_flag(EXCEPT_MASK)
@@ -546,6 +677,8 @@ struct kvm_vcpu_arch {
 #define DEBUG_STATE_SAVE_SPE	__vcpu_single_flag(iflags, BIT(5))
 /* Save TRBE context if active  */
 #define DEBUG_STATE_SAVE_TRBE	__vcpu_single_flag(iflags, BIT(6))
+/* pKVM host vcpu state is dirty, needs resync */
+#define PKVM_HOST_STATE_DIRTY	__vcpu_single_flag(iflags, BIT(7))
 
 /* SVE enabled for host EL0 */
 #define HOST_SVE_ENABLED	__vcpu_single_flag(sflags, BIT(0))
@@ -622,9 +755,6 @@ struct kvm_vcpu_arch {
 
 #define __vcpu_sys_reg(v,r)	(ctxt_sys_reg(&(v)->arch.ctxt, (r)))
 
-u64 vcpu_read_sys_reg(const struct kvm_vcpu *vcpu, int reg);
-void vcpu_write_sys_reg(struct kvm_vcpu *vcpu, u64 val, int reg);
-
 static inline bool __vcpu_read_sys_reg_from_cpu(int reg, u64 *val)
 {
 	/*
@@ -716,8 +846,32 @@ static inline bool __vcpu_write_sys_reg_to_cpu(u64 val, int reg)
 	return true;
 }
 
+#define vcpu_read_sys_reg(__vcpu, reg)					\
+	({								\
+		u64 __val = 0x8badf00d8badf00d;				\
+									\
+		/* SYSREGS_ON_CPU is only used in VHE */		\
+		((!is_nvhe_hyp_code() &&				\
+		  vcpu_get_flag(__vcpu, SYSREGS_ON_CPU) &&		\
+		  __vcpu_read_sys_reg_from_cpu(reg, &__val))) ?		\
+		 __val							\
+		 :							\
+		 ctxt_sys_reg(&__vcpu->arch.ctxt, reg);			\
+	 })
+
+#define vcpu_write_sys_reg(__vcpu, __val, reg)				\
+	do {								\
+		/* SYSREGS_ON_CPU is only used in VHE */		\
+		if (is_nvhe_hyp_code() ||				\
+		    !vcpu_get_flag(__vcpu, SYSREGS_ON_CPU) ||		\
+		    !__vcpu_write_sys_reg_to_cpu(__val, reg))		\
+			ctxt_sys_reg(&__vcpu->arch.ctxt, reg) = __val;	\
+	} while (0)
+
 struct kvm_vm_stat {
 	struct kvm_vm_stat_generic generic;
+	atomic64_t protected_hyp_mem;
+	atomic64_t protected_shared_mem;
 };
 
 struct kvm_vcpu_stat {
@@ -890,9 +1044,26 @@ void kvm_arm_setup_debug(struct kvm_vcpu *vcpu);
 void kvm_arm_clear_debug(struct kvm_vcpu *vcpu);
 void kvm_arm_reset_debug_ptr(struct kvm_vcpu *vcpu);
 
+#define __vcpu_save_guest_debug_regs(vcpu)				\
+	do {								\
+		u64 val = vcpu_read_sys_reg(vcpu, MDSCR_EL1);		\
+									\
+		(vcpu)->arch.guest_debug_preserved.mdscr_el1 = val;	\
+	} while(0)
+
+#define __vcpu_restore_guest_debug_regs(vcpu)				\
+	do {								\
+		u64 val = (vcpu)->arch.guest_debug_preserved.mdscr_el1;	\
+									\
+		vcpu_write_sys_reg(vcpu, val, MDSCR_EL1);		\
+	} while (0)
+
 #define kvm_vcpu_os_lock_enabled(vcpu)		\
 	(!!(__vcpu_sys_reg(vcpu, OSLSR_EL1) & SYS_OSLSR_OSLK))
 
+#define kvm_vcpu_needs_debug_regs(vcpu)		\
+	((vcpu)->guest_debug || kvm_vcpu_os_lock_enabled(vcpu))
+
 int kvm_arm_vcpu_arch_set_attr(struct kvm_vcpu *vcpu,
 			       struct kvm_device_attr *attr);
 int kvm_arm_vcpu_arch_get_attr(struct kvm_vcpu *vcpu,
@@ -909,7 +1080,6 @@ void kvm_arch_vcpu_load_fp(struct kvm_vcpu *vcpu);
 void kvm_arch_vcpu_ctxflush_fp(struct kvm_vcpu *vcpu);
 void kvm_arch_vcpu_ctxsync_fp(struct kvm_vcpu *vcpu);
 void kvm_arch_vcpu_put_fp(struct kvm_vcpu *vcpu);
-void kvm_vcpu_unshare_task_fp(struct kvm_vcpu *vcpu);
 
 static inline bool kvm_pmu_counter_deferred(struct perf_event_attr *attr)
 {
@@ -936,12 +1106,7 @@ int kvm_set_ipa_limit(void);
 #define __KVM_HAVE_ARCH_VM_ALLOC
 struct kvm *kvm_arch_alloc_vm(void);
 
-int kvm_arm_setup_stage2(struct kvm *kvm, unsigned long type);
-
-static inline bool kvm_vm_is_protected(struct kvm *kvm)
-{
-	return false;
-}
+#define kvm_vm_is_protected(kvm)	((kvm)->arch.pkvm.enabled)
 
 void kvm_init_protected_traps(struct kvm_vcpu *vcpu);
 
diff --git a/arch/arm64/include/asm/kvm_hyp.h b/arch/arm64/include/asm/kvm_hyp.h
index aa7fa2a..861049a 100644
--- a/arch/arm64/include/asm/kvm_hyp.h
+++ b/arch/arm64/include/asm/kvm_hyp.h
@@ -15,6 +15,9 @@
 DECLARE_PER_CPU(struct kvm_cpu_context, kvm_hyp_ctxt);
 DECLARE_PER_CPU(unsigned long, kvm_hyp_vector);
 DECLARE_PER_CPU(struct kvm_nvhe_init_params, kvm_init_params);
+DECLARE_PER_CPU(int, hyp_cpu_number);
+
+#define hyp_smp_processor_id() (__this_cpu_read(hyp_cpu_number))
 
 #define read_sysreg_elx(r,nvh,vh)					\
 	({								\
@@ -61,8 +64,8 @@ void __vgic_v3_save_state(struct vgic_v3_cpu_if *cpu_if);
 void __vgic_v3_restore_state(struct vgic_v3_cpu_if *cpu_if);
 void __vgic_v3_activate_traps(struct vgic_v3_cpu_if *cpu_if);
 void __vgic_v3_deactivate_traps(struct vgic_v3_cpu_if *cpu_if);
-void __vgic_v3_save_aprs(struct vgic_v3_cpu_if *cpu_if);
-void __vgic_v3_restore_aprs(struct vgic_v3_cpu_if *cpu_if);
+void __vgic_v3_save_vmcr_aprs(struct vgic_v3_cpu_if *cpu_if);
+void __vgic_v3_restore_vmcr_aprs(struct vgic_v3_cpu_if *cpu_if);
 int __vgic_v3_perform_cpuif_access(struct kvm_vcpu *vcpu);
 
 #ifdef __KVM_NVHE_HYPERVISOR__
@@ -90,6 +93,7 @@ void __debug_restore_host_buffers_nvhe(struct kvm_vcpu *vcpu);
 
 void __fpsimd_save_state(struct user_fpsimd_state *fp_regs);
 void __fpsimd_restore_state(struct user_fpsimd_state *fp_regs);
+void __sve_save_state(void *sve_pffr, u32 *fpsr);
 void __sve_restore_state(void *sve_pffr, u32 *fpsr);
 
 #ifndef __KVM_NVHE_HYPERVISOR__
@@ -114,6 +118,11 @@ int __pkvm_init(phys_addr_t phys, unsigned long size, unsigned long nr_cpus,
 void __noreturn __host_enter(struct kvm_cpu_context *host_ctxt);
 #endif
 
+#ifdef __KVM_NVHE_HYPERVISOR__
+struct user_fpsimd_state *get_host_fpsimd_state(struct kvm_vcpu *vcpu);
+struct kvm_host_sve_state *get_host_sve_state(struct kvm_vcpu *vcpu);
+#endif
+
 extern u64 kvm_nvhe_sym(id_aa64pfr0_el1_sys_val);
 extern u64 kvm_nvhe_sym(id_aa64pfr1_el1_sys_val);
 extern u64 kvm_nvhe_sym(id_aa64isar0_el1_sys_val);
@@ -122,5 +131,17 @@ extern u64 kvm_nvhe_sym(id_aa64isar2_el1_sys_val);
 extern u64 kvm_nvhe_sym(id_aa64mmfr0_el1_sys_val);
 extern u64 kvm_nvhe_sym(id_aa64mmfr1_el1_sys_val);
 extern u64 kvm_nvhe_sym(id_aa64mmfr2_el1_sys_val);
+extern u64 kvm_nvhe_sym(id_aa64smfr0_el1_sys_val);
 
+extern unsigned long kvm_nvhe_sym(__icache_flags);
+extern unsigned int kvm_nvhe_sym(kvm_arm_vmid_bits);
+extern bool kvm_nvhe_sym(smccc_trng_available);
+extern unsigned int kvm_nvhe_sym(kvm_host_sve_max_vl);
+
+struct kvm_nvhe_clock_data {
+	u32 mult;
+	u32 shift;
+	u64 epoch_ns;
+	u64 epoch_cyc;
+};
 #endif /* __ARM64_KVM_HYP_H__ */
diff --git a/arch/arm64/include/asm/kvm_hypevents.h b/arch/arm64/include/asm/kvm_hypevents.h
new file mode 100644
index 0000000..8a2dd41
--- /dev/null
+++ b/arch/arm64/include/asm/kvm_hypevents.h
@@ -0,0 +1,74 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+
+#ifndef __ARM64_KVM_HYPEVENTS_H_
+#define __ARM64_KVM_HYPEVENTS_H_
+
+#ifdef __KVM_NVHE_HYPERVISOR__
+#include <nvhe/trace.h>
+#endif
+
+/*
+ * Hypervisor events definitions.
+ */
+
+HYP_EVENT(hyp_enter,
+	HE_PROTO(void),
+	HE_STRUCT(
+	),
+	HE_ASSIGN(
+	),
+	HE_PRINTK(" ")
+);
+
+HYP_EVENT(hyp_exit,
+	HE_PROTO(void),
+	HE_STRUCT(
+	),
+	HE_ASSIGN(
+	),
+	HE_PRINTK(" ")
+);
+
+HYP_EVENT(host_hcall,
+	HE_PROTO(unsigned int id, u8 invalid),
+	HE_STRUCT(
+		he_field(unsigned int, id)
+		he_field(u8, invalid)
+	),
+	HE_ASSIGN(
+		__entry->id = id;
+		__entry->invalid = invalid;
+	),
+	HE_PRINTK("id=%u invalid=%u",
+		  __entry->id, __entry->invalid)
+);
+
+HYP_EVENT(host_smc,
+	HE_PROTO(u64 id, u8 forwarded),
+	HE_STRUCT(
+		he_field(u64, id)
+		he_field(u8, forwarded)
+	),
+	HE_ASSIGN(
+		__entry->id = id;
+		__entry->forwarded = forwarded;
+	),
+	HE_PRINTK("id=%llu invalid=%u",
+		  __entry->id, __entry->forwarded)
+);
+
+
+HYP_EVENT(host_mem_abort,
+	HE_PROTO(u64 esr, u64 addr),
+	HE_STRUCT(
+		he_field(u64, esr)
+		he_field(u64, addr)
+	),
+	HE_ASSIGN(
+		__entry->esr = esr;
+		__entry->addr = addr;
+	),
+	HE_PRINTK("esr=0x%llx addr=0x%llx",
+		  __entry->esr, __entry->addr)
+);
+#endif
diff --git a/arch/arm64/include/asm/kvm_hypevents_defs.h b/arch/arm64/include/asm/kvm_hypevents_defs.h
new file mode 100644
index 0000000..e228d89
--- /dev/null
+++ b/arch/arm64/include/asm/kvm_hypevents_defs.h
@@ -0,0 +1,30 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+
+#ifndef __ARM64_KVM_HYPEVENTS_DEFS_H
+#define __ARM64_KVM_HYPEVENTS_DEFS_H
+
+struct hyp_event_id {
+	unsigned short id;
+	void *data;
+};
+
+struct hyp_entry_hdr {
+	unsigned short id;
+};
+
+/*
+ * Hyp events definitions common to the hyp and the host
+ */
+#define HYP_EVENT_FORMAT(__name, __struct)	\
+	struct trace_hyp_format_##__name {	\
+		struct hyp_entry_hdr hdr;	\
+		__struct			\
+	}
+
+#define HE_PROTO(args...)	args
+#define HE_STRUCT(args...)	args
+#define HE_ASSIGN(args...)	args
+#define HE_PRINTK(args...)	args
+
+#define he_field(type, item)	type item;
+#endif
diff --git a/arch/arm64/include/asm/kvm_hyptrace.h b/arch/arm64/include/asm/kvm_hyptrace.h
new file mode 100644
index 0000000..d32b445
--- /dev/null
+++ b/arch/arm64/include/asm/kvm_hyptrace.h
@@ -0,0 +1,21 @@
+#ifndef __ARM64_KVM_HYPTRACE_H_
+#define __ARM64_KVM_HYPTRACE_H_
+#include <asm/kvm_hyp.h>
+
+#include <linux/ring_buffer_ext.h>
+
+/*
+ * Host donations to the hypervisor to store the struct hyp_buffer_page.
+ */
+struct hyp_buffer_pages_backing {
+	unsigned long start;
+	size_t size;
+};
+
+struct hyp_trace_pack {
+	struct hyp_buffer_pages_backing		backing;
+	struct kvm_nvhe_clock_data		trace_clock_data;
+	struct trace_buffer_pack		trace_buffer_pack;
+
+};
+#endif
diff --git a/arch/arm64/include/asm/kvm_mmu.h b/arch/arm64/include/asm/kvm_mmu.h
index 7784081..0f2cfa1 100644
--- a/arch/arm64/include/asm/kvm_mmu.h
+++ b/arch/arm64/include/asm/kvm_mmu.h
@@ -116,6 +116,7 @@ alternative_cb_end
 #include <asm/cacheflush.h>
 #include <asm/mmu_context.h>
 #include <asm/kvm_host.h>
+#include <asm/kvm_pkvm_module.h>
 
 void kvm_update_va_mask(struct alt_instr *alt,
 			__le32 *origptr, __le32 *updptr, int nr_inst);
@@ -166,7 +167,7 @@ int create_hyp_exec_mappings(phys_addr_t phys_addr, size_t size,
 void free_hyp_pgds(void);
 
 void stage2_unmap_vm(struct kvm *kvm);
-int kvm_init_stage2_mmu(struct kvm *kvm, struct kvm_s2_mmu *mmu);
+int kvm_init_stage2_mmu(struct kvm *kvm, struct kvm_s2_mmu *mmu, unsigned long type);
 void kvm_free_stage2_pgd(struct kvm_s2_mmu *mmu);
 int kvm_phys_addr_ioremap(struct kvm *kvm, phys_addr_t guest_ipa,
 			  phys_addr_t pa, unsigned long size, bool writable);
@@ -187,8 +188,13 @@ static inline void *__kvm_vector_slot2addr(void *base,
 
 struct kvm;
 
-#define kvm_flush_dcache_to_poc(a,l)	\
-	dcache_clean_inval_poc((unsigned long)(a), (unsigned long)(a)+(l))
+#define kvm_flush_dcache_to_poc(a, l)	do {			\
+	unsigned long __a = (unsigned long)(a);			\
+	unsigned long __l = (unsigned long)(l);			\
+								\
+	if (__l)						\
+		dcache_clean_inval_poc(__a, __a + __l);		\
+} while (0)
 
 static inline bool vcpu_has_cache_enabled(struct kvm_vcpu *vcpu)
 {
diff --git a/arch/arm64/include/asm/kvm_pgtable.h b/arch/arm64/include/asm/kvm_pgtable.h
index 3252eb5..ce85d55 100644
--- a/arch/arm64/include/asm/kvm_pgtable.h
+++ b/arch/arm64/include/asm/kvm_pgtable.h
@@ -42,6 +42,41 @@ typedef u64 kvm_pte_t;
 #define KVM_PTE_ADDR_MASK		GENMASK(47, PAGE_SHIFT)
 #define KVM_PTE_ADDR_51_48		GENMASK(15, 12)
 
+#define KVM_PHYS_INVALID		(-1ULL)
+
+#define KVM_PTE_TYPE			BIT(1)
+#define KVM_PTE_TYPE_BLOCK		0
+#define KVM_PTE_TYPE_PAGE		1
+#define KVM_PTE_TYPE_TABLE		1
+
+#define KVM_PTE_LEAF_ATTR_LO		GENMASK(11, 2)
+
+#define KVM_PTE_LEAF_ATTR_LO_S1_ATTRIDX	GENMASK(4, 2)
+#define KVM_PTE_LEAF_ATTR_LO_S1_AP	GENMASK(7, 6)
+#define KVM_PTE_LEAF_ATTR_LO_S1_AP_RO	3
+#define KVM_PTE_LEAF_ATTR_LO_S1_AP_RW	1
+#define KVM_PTE_LEAF_ATTR_LO_S1_SH	GENMASK(9, 8)
+#define KVM_PTE_LEAF_ATTR_LO_S1_SH_IS	3
+#define KVM_PTE_LEAF_ATTR_LO_S1_AF	BIT(10)
+
+#define KVM_PTE_LEAF_ATTR_LO_S2_MEMATTR	GENMASK(5, 2)
+#define KVM_PTE_LEAF_ATTR_LO_S2_S2AP_R	BIT(6)
+#define KVM_PTE_LEAF_ATTR_LO_S2_S2AP_W	BIT(7)
+#define KVM_PTE_LEAF_ATTR_LO_S2_SH	GENMASK(9, 8)
+#define KVM_PTE_LEAF_ATTR_LO_S2_SH_IS	3
+#define KVM_PTE_LEAF_ATTR_LO_S2_AF	BIT(10)
+
+#define KVM_PTE_LEAF_ATTR_HI		GENMASK(63, 51)
+
+#define KVM_PTE_LEAF_ATTR_HI_SW		GENMASK(58, 55)
+
+#define KVM_PTE_LEAF_ATTR_HI_S1_XN	BIT(54)
+
+#define KVM_PTE_LEAF_ATTR_HI_S2_XN_PXN	1
+#define KVM_PTE_LEAF_ATTR_HI_S2_XN_UXN	3
+#define KVM_PTE_LEAF_ATTR_HI_S2_XN_XN	2
+#define KVM_PTE_LEAF_ATTR_HI_S2_XN	GENMASK(54, 53)
+
 static inline bool kvm_pte_valid(kvm_pte_t pte)
 {
 	return pte & KVM_PTE_VALID;
@@ -57,6 +92,18 @@ static inline u64 kvm_pte_to_phys(kvm_pte_t pte)
 	return pa;
 }
 
+static inline kvm_pte_t kvm_phys_to_pte(u64 pa)
+{
+	kvm_pte_t pte = pa & KVM_PTE_ADDR_MASK;
+
+	if (PAGE_SHIFT == 16) {
+		pa &= GENMASK(51, 48);
+		pte |= FIELD_PREP(KVM_PTE_ADDR_51_48, pa >> 48);
+	}
+
+	return pte;
+}
+
 static inline u64 kvm_granule_shift(u32 level)
 {
 	/* Assumes KVM_PGTABLE_MAX_LEVELS is 4 */
@@ -73,6 +120,17 @@ static inline bool kvm_level_supports_block_mapping(u32 level)
 	return level >= KVM_PGTABLE_MIN_BLOCK_LEVEL;
 }
 
+static inline bool kvm_pte_table(kvm_pte_t pte, u32 level)
+{
+	if (level == KVM_PGTABLE_MAX_LEVELS - 1)
+		return false;
+
+	if (!kvm_pte_valid(pte))
+		return false;
+
+	return FIELD_GET(KVM_PTE_TYPE, pte) == KVM_PTE_TYPE_TABLE;
+}
+
 /**
  * struct kvm_pgtable_mm_ops - Memory management callbacks.
  * @zalloc_page:		Allocate a single zeroed memory page.
@@ -112,6 +170,11 @@ struct kvm_pgtable_mm_ops {
 	void		(*icache_inval_pou)(void *addr, size_t size);
 };
 
+static inline kvm_pte_t *kvm_pte_follow(kvm_pte_t pte, struct kvm_pgtable_mm_ops *mm_ops)
+{
+	return mm_ops->phys_to_virt(kvm_pte_to_phys(pte));
+}
+
 /**
  * enum kvm_pgtable_stage2_flags - Stage-2 page-table flags.
  * @KVM_PGTABLE_S2_NOFWB:	Don't enforce Normal-WB even if the CPUs have
@@ -129,6 +192,9 @@ enum kvm_pgtable_stage2_flags {
  * @KVM_PGTABLE_PROT_W:		Write permission.
  * @KVM_PGTABLE_PROT_R:		Read permission.
  * @KVM_PGTABLE_PROT_DEVICE:	Device attributes.
+ * @KVM_PGTABLE_PROT_NC:	Normal non-cacheable attributes.
+ * @KVM_PGTABLE_PROT_PXN:	Privileged execute-never.
+ * @KVM_PGTABLE_PROT_UXN:	Unprivileged execute-never.
  * @KVM_PGTABLE_PROT_SW0:	Software bit 0.
  * @KVM_PGTABLE_PROT_SW1:	Software bit 1.
  * @KVM_PGTABLE_PROT_SW2:	Software bit 2.
@@ -140,6 +206,9 @@ enum kvm_pgtable_prot {
 	KVM_PGTABLE_PROT_R			= BIT(2),
 
 	KVM_PGTABLE_PROT_DEVICE			= BIT(3),
+	KVM_PGTABLE_PROT_NC			= BIT(4),
+	KVM_PGTABLE_PROT_PXN			= BIT(5),
+	KVM_PGTABLE_PROT_UXN			= BIT(6),
 
 	KVM_PGTABLE_PROT_SW0			= BIT(55),
 	KVM_PGTABLE_PROT_SW1			= BIT(56),
@@ -153,6 +222,20 @@ enum kvm_pgtable_prot {
 #define PKVM_HOST_MEM_PROT	KVM_PGTABLE_PROT_RWX
 #define PKVM_HOST_MMIO_PROT	KVM_PGTABLE_PROT_RW
 
+#define KVM_HOST_S2_DEFAULT_MASK   (KVM_PTE_LEAF_ATTR_HI |	\
+				    KVM_PTE_LEAF_ATTR_LO)
+
+#define KVM_HOST_S2_DEFAULT_MEM_PTE		\
+	(PTE_S2_MEMATTR(MT_S2_NORMAL) |		\
+	KVM_PTE_LEAF_ATTR_LO_S2_S2AP_R |	\
+	KVM_PTE_LEAF_ATTR_LO_S2_S2AP_W |	\
+	KVM_PTE_LEAF_ATTR_LO_S2_AF |		\
+	FIELD_PREP(KVM_PTE_LEAF_ATTR_LO_S2_SH, KVM_PTE_LEAF_ATTR_LO_S2_SH_IS))
+
+#define KVM_HOST_S2_DEFAULT_MMIO_PTE		\
+	(KVM_HOST_S2_DEFAULT_MEM_PTE |		\
+	KVM_PTE_LEAF_ATTR_HI_S2_XN)
+
 #define PAGE_HYP		KVM_PGTABLE_PROT_RW
 #define PAGE_HYP_EXEC		(KVM_PGTABLE_PROT_R | KVM_PGTABLE_PROT_X)
 #define PAGE_HYP_RO		(KVM_PGTABLE_PROT_R)
@@ -161,6 +244,22 @@ enum kvm_pgtable_prot {
 typedef bool (*kvm_pgtable_force_pte_cb_t)(u64 addr, u64 end,
 					   enum kvm_pgtable_prot prot);
 
+typedef bool (*kvm_pgtable_pte_is_counted_cb_t)(kvm_pte_t pte, u32 level);
+
+/**
+ * struct kvm_pgtable_pte_ops - PTE callbacks.
+ * @force_pte_cb:		Force the mapping granularity to pages and
+ *				return true if we support this instead of
+ *				block mappings.
+ * @pte_is_counted_cb		Verify the attributes of the @pte argument
+ *				and return true if the descriptor needs to be
+ *				refcounted, otherwise return false.
+ */
+struct kvm_pgtable_pte_ops {
+	kvm_pgtable_force_pte_cb_t		force_pte_cb;
+	kvm_pgtable_pte_is_counted_cb_t		pte_is_counted_cb;
+};
+
 /**
  * struct kvm_pgtable - KVM page-table.
  * @ia_bits:		Maximum input address size, in bits.
@@ -169,8 +268,7 @@ typedef bool (*kvm_pgtable_force_pte_cb_t)(u64 addr, u64 end,
  * @mm_ops:		Memory management callbacks.
  * @mmu:		Stage-2 KVM MMU struct. Unused for stage-1 page-tables.
  * @flags:		Stage-2 page-table flags.
- * @force_pte_cb:	Function that returns true if page level mappings must
- *			be used instead of block mappings.
+ * @pte_ops:		PTE callbacks.
  */
 struct kvm_pgtable {
 	u32					ia_bits;
@@ -181,7 +279,7 @@ struct kvm_pgtable {
 	/* Stage-2 only */
 	struct kvm_s2_mmu			*mmu;
 	enum kvm_pgtable_stage2_flags		flags;
-	kvm_pgtable_force_pte_cb_t		force_pte_cb;
+	struct kvm_pgtable_pte_ops		*pte_ops;
 };
 
 /**
@@ -297,23 +395,30 @@ u64 kvm_pgtable_hyp_unmap(struct kvm_pgtable *pgt, u64 addr, u64 size);
 u64 kvm_get_vtcr(u64 mmfr0, u64 mmfr1, u32 phys_shift);
 
 /**
+ * kvm_pgtable_stage2_pgd_size() - Helper to compute size of a stage-2 PGD
+ * @vtcr:	Content of the VTCR register.
+ *
+ * Return: the size (in bytes) of the stage-2 PGD
+ */
+size_t kvm_pgtable_stage2_pgd_size(u64 vtcr);
+
+/**
  * __kvm_pgtable_stage2_init() - Initialise a guest stage-2 page-table.
  * @pgt:	Uninitialised page-table structure to initialise.
  * @mmu:	S2 MMU context for this S2 translation
  * @mm_ops:	Memory management callbacks.
  * @flags:	Stage-2 configuration flags.
- * @force_pte_cb: Function that returns true if page level mappings must
- *		be used instead of block mappings.
+ * @pte_ops:	PTE callbacks.
  *
  * Return: 0 on success, negative error code on failure.
  */
 int __kvm_pgtable_stage2_init(struct kvm_pgtable *pgt, struct kvm_s2_mmu *mmu,
 			      struct kvm_pgtable_mm_ops *mm_ops,
 			      enum kvm_pgtable_stage2_flags flags,
-			      kvm_pgtable_force_pte_cb_t force_pte_cb);
+			      struct kvm_pgtable_pte_ops *pte_ops);
 
-#define kvm_pgtable_stage2_init(pgt, mmu, mm_ops) \
-	__kvm_pgtable_stage2_init(pgt, mmu, mm_ops, 0, NULL)
+#define kvm_pgtable_stage2_init(pgt, mmu, mm_ops, pte_ops) \
+	__kvm_pgtable_stage2_init(pgt, mmu, mm_ops, 0, pte_ops)
 
 /**
  * kvm_pgtable_stage2_destroy() - Destroy an unused guest stage-2 page-table.
@@ -357,14 +462,16 @@ int kvm_pgtable_stage2_map(struct kvm_pgtable *pgt, u64 addr, u64 size,
 			   void *mc);
 
 /**
- * kvm_pgtable_stage2_set_owner() - Unmap and annotate pages in the IPA space to
- *				    track ownership.
+ * kvm_pgtable_stage2_annotate() - Unmap and annotate pages in the IPA space
+ *				   to track ownership (and more).
  * @pgt:	Page-table structure initialised by kvm_pgtable_stage2_init*().
  * @addr:	Base intermediate physical address to annotate.
  * @size:	Size of the annotated range.
  * @mc:		Cache of pre-allocated and zeroed memory from which to allocate
  *		page-table pages.
- * @owner_id:	Unique identifier for the owner of the page.
+ * @annotation:	A 63 bit value that will be stored in the page tables.
+ *		@annotation[0] must be 0, and @annotation[63:1] is stored
+ *		in the page tables.
  *
  * By default, all page-tables are owned by identifier 0. This function can be
  * used to mark portions of the IPA space as owned by other entities. When a
@@ -373,8 +480,8 @@ int kvm_pgtable_stage2_map(struct kvm_pgtable *pgt, u64 addr, u64 size,
  *
  * Return: 0 on success, negative error code on failure.
  */
-int kvm_pgtable_stage2_set_owner(struct kvm_pgtable *pgt, u64 addr, u64 size,
-				 void *mc, u8 owner_id);
+int kvm_pgtable_stage2_annotate(struct kvm_pgtable *pgt, u64 addr, u64 size,
+				void *mc, kvm_pte_t annotation);
 
 /**
  * kvm_pgtable_stage2_unmap() - Remove a mapping from a guest stage-2 page-table.
@@ -396,6 +503,21 @@ int kvm_pgtable_stage2_set_owner(struct kvm_pgtable *pgt, u64 addr, u64 size,
 int kvm_pgtable_stage2_unmap(struct kvm_pgtable *pgt, u64 addr, u64 size);
 
 /**
+ * kvm_pgtable_stage2_reclaim_leaves() - Attempt to reclaim leaf page-table
+ *					 pages by coalescing table entries into
+ *					 block mappings.
+ * @pgt:	Page-table structure initialised by kvm_pgtable_stage2_init*().
+ * @addr:	Intermediate physical address from which to reclaim leaves.
+ * @size:	Size of the range.
+ *
+ * The offset of @addr within a page is ignored and @size is rounded-up to
+ * the next page boundary.
+ *
+ * Return: 0 on success, negative error code on failure.
+ */
+int kvm_pgtable_stage2_reclaim_leaves(struct kvm_pgtable *pgt, u64 addr, u64 size);
+
+/**
  * kvm_pgtable_stage2_wrprotect() - Write-protect guest stage-2 address range
  *                                  without TLB invalidation.
  * @pgt:	Page-table structure initialised by kvm_pgtable_stage2_init*().
diff --git a/arch/arm64/include/asm/kvm_pkvm.h b/arch/arm64/include/asm/kvm_pkvm.h
index 9f4ad2a..a1459fb 100644
--- a/arch/arm64/include/asm/kvm_pkvm.h
+++ b/arch/arm64/include/asm/kvm_pkvm.h
@@ -2,18 +2,318 @@
 /*
  * Copyright (C) 2020 - Google LLC
  * Author: Quentin Perret <qperret@google.com>
+ * Author: Fuad Tabba <tabba@google.com>
  */
 #ifndef __ARM64_KVM_PKVM_H__
 #define __ARM64_KVM_PKVM_H__
 
+#include <linux/arm_ffa.h>
 #include <linux/memblock.h>
+#include <linux/scatterlist.h>
 #include <asm/kvm_pgtable.h>
+#include <asm/sysreg.h>
+
+/*
+ * Stores the sve state for the host in protected mode.
+ */
+struct kvm_host_sve_state {
+	u64 zcr_el1;
+
+	/*
+	 * Ordering is important since __sve_save_state/__sve_restore_state
+	 * relies on it.
+	 */
+	u32 fpsr;
+	u32 fpcr;
+
+	/* Must be SVE_VQ_BYTES (128 bit) aligned. */
+	char sve_regs[];
+};
+
+/* Maximum number of VMs that can co-exist under pKVM. */
+#define KVM_MAX_PVMS 255
 
 #define HYP_MEMBLOCK_REGIONS 128
+#define PVMFW_INVALID_LOAD_ADDR	(-1)
+
+int pkvm_vm_ioctl_enable_cap(struct kvm *kvm,struct kvm_enable_cap *cap);
+int pkvm_init_host_vm(struct kvm *kvm, unsigned long type);
+int pkvm_create_hyp_vm(struct kvm *kvm);
+void pkvm_destroy_hyp_vm(struct kvm *kvm);
+void pkvm_host_reclaim_page(struct kvm *host_kvm, phys_addr_t ipa);
+
+/*
+ * Definitions for features to be allowed or restricted for guest virtual
+ * machines, depending on the mode KVM is running in and on the type of guest
+ * that is running.
+ *
+ * The ALLOW masks represent a bitmask of feature fields that are allowed
+ * without any restrictions as long as they are supported by the system.
+ *
+ * The RESTRICT_UNSIGNED masks, if present, represent unsigned fields for
+ * features that are restricted to support at most the specified feature.
+ *
+ * If a feature field is not present in either, than it is not supported.
+ *
+ * The approach taken for protected VMs is to allow features that are:
+ * - Needed by common Linux distributions (e.g., floating point)
+ * - Trivial to support, e.g., supporting the feature does not introduce or
+ * require tracking of additional state in KVM
+ * - Cannot be trapped or prevent the guest from using anyway
+ */
+
+/*
+ * Allow for protected VMs:
+ * - Floating-point and Advanced SIMD
+ * - GICv3(+) system register interface
+ * - Data Independent Timing
+ * - Spectre/Meltdown Mitigation
+ */
+#define PVM_ID_AA64PFR0_ALLOW (\
+	ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_FP) | \
+	ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_AdvSIMD) | \
+	ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_GIC) | \
+	ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_DIT) | \
+	ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_CSV2) | \
+	ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_CSV3) \
+	)
+
+/*
+ * Restrict to the following *unsigned* features for protected VMs:
+ * - AArch64 guests only (no support for AArch32 guests):
+ *	AArch32 adds complexity in trap handling, emulation, condition codes,
+ *	etc...
+ * - RAS (v1)
+ *	Supported by KVM
+ */
+#define PVM_ID_AA64PFR0_RESTRICT_UNSIGNED (\
+	FIELD_PREP(ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_EL0), ID_AA64PFR0_EL1_ELx_64BIT_ONLY) | \
+	FIELD_PREP(ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_EL1), ID_AA64PFR0_EL1_ELx_64BIT_ONLY) | \
+	FIELD_PREP(ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_EL2), ID_AA64PFR0_EL1_ELx_64BIT_ONLY) | \
+	FIELD_PREP(ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_EL3), ID_AA64PFR0_EL1_ELx_64BIT_ONLY) | \
+	FIELD_PREP(ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_RAS), ID_AA64PFR0_EL1_RAS_IMP) \
+	)
+
+/*
+ * Allow for protected VMs:
+ * - Branch Target Identification
+ * - Speculative Store Bypassing
+ */
+#define PVM_ID_AA64PFR1_ALLOW (\
+	ARM64_FEATURE_MASK(ID_AA64PFR1_EL1_BT) | \
+	ARM64_FEATURE_MASK(ID_AA64PFR1_EL1_SSBS) \
+	)
+
+/*
+ * Allow for protected VMs:
+ * - Mixed-endian
+ * - Distinction between Secure and Non-secure Memory
+ * - Mixed-endian at EL0 only
+ * - Non-context synchronizing exception entry and exit
+ */
+#define PVM_ID_AA64MMFR0_ALLOW (\
+	ARM64_FEATURE_MASK(ID_AA64MMFR0_EL1_BIGEND) | \
+	ARM64_FEATURE_MASK(ID_AA64MMFR0_EL1_SNSMEM) | \
+	ARM64_FEATURE_MASK(ID_AA64MMFR0_EL1_BIGENDEL0) | \
+	ARM64_FEATURE_MASK(ID_AA64MMFR0_EL1_EXS) \
+	)
+
+/*
+ * Restrict to the following *unsigned* features for protected VMs:
+ * - 40-bit IPA
+ * - 16-bit ASID
+ */
+#define PVM_ID_AA64MMFR0_RESTRICT_UNSIGNED (\
+	FIELD_PREP(ARM64_FEATURE_MASK(ID_AA64MMFR0_EL1_PARANGE), ID_AA64MMFR0_EL1_PARANGE_40) | \
+	FIELD_PREP(ARM64_FEATURE_MASK(ID_AA64MMFR0_EL1_ASIDBITS), ID_AA64MMFR0_EL1_ASIDBITS_16) \
+	)
+
+/*
+ * Allow for protected VMs:
+ * - Hardware translation table updates to Access flag and Dirty state
+ * - Number of VMID bits from CPU
+ * - Hierarchical Permission Disables
+ * - Privileged Access Never
+ * - SError interrupt exceptions from speculative reads
+ * - Enhanced Translation Synchronization
+ */
+#define PVM_ID_AA64MMFR1_ALLOW (\
+	ARM64_FEATURE_MASK(ID_AA64MMFR1_EL1_HAFDBS) | \
+	ARM64_FEATURE_MASK(ID_AA64MMFR1_EL1_VMIDBits) | \
+	ARM64_FEATURE_MASK(ID_AA64MMFR1_EL1_HPDS) | \
+	ARM64_FEATURE_MASK(ID_AA64MMFR1_EL1_PAN) | \
+	ARM64_FEATURE_MASK(ID_AA64MMFR1_EL1_SpecSEI) | \
+	ARM64_FEATURE_MASK(ID_AA64MMFR1_EL1_ETS) \
+	)
+
+/*
+ * Allow for protected VMs:
+ * - Common not Private translations
+ * - User Access Override
+ * - IESB bit in the SCTLR_ELx registers
+ * - Unaligned single-copy atomicity and atomic functions
+ * - ESR_ELx.EC value on an exception by read access to feature ID space
+ * - TTL field in address operations.
+ * - Break-before-make sequences when changing translation block size
+ * - E0PDx mechanism
+ */
+#define PVM_ID_AA64MMFR2_ALLOW (\
+	ARM64_FEATURE_MASK(ID_AA64MMFR2_EL1_CnP) | \
+	ARM64_FEATURE_MASK(ID_AA64MMFR2_EL1_UAO) | \
+	ARM64_FEATURE_MASK(ID_AA64MMFR2_EL1_IESB) | \
+	ARM64_FEATURE_MASK(ID_AA64MMFR2_EL1_AT) | \
+	ARM64_FEATURE_MASK(ID_AA64MMFR2_EL1_IDS) | \
+	ARM64_FEATURE_MASK(ID_AA64MMFR2_EL1_TTL) | \
+	ARM64_FEATURE_MASK(ID_AA64MMFR2_EL1_BBM) | \
+	ARM64_FEATURE_MASK(ID_AA64MMFR2_EL1_E0PD) \
+	)
+
+/*
+ * No support for Scalable Vectors for protected VMs:
+ *	Requires additional support from KVM, e.g., context-switching and
+ *	trapping at EL2
+ */
+#define PVM_ID_AA64ZFR0_ALLOW (0ULL)
+
+/*
+ * No support for debug, including breakpoints, and watchpoints for protected
+ * VMs:
+ *	The Arm architecture mandates support for at least the Armv8 debug
+ *	architecture, which would include at least 2 hardware breakpoints and
+ *	watchpoints. Providing that support to protected guests adds
+ *	considerable state and complexity. Therefore, the reserved value of 0 is
+ *	used for debug-related fields.
+ */
+#define PVM_ID_AA64DFR0_ALLOW (0ULL)
+#define PVM_ID_AA64DFR1_ALLOW (0ULL)
+
+/*
+ * No support for implementation defined features.
+ */
+#define PVM_ID_AA64AFR0_ALLOW (0ULL)
+#define PVM_ID_AA64AFR1_ALLOW (0ULL)
+
+/*
+ * No restrictions on instructions implemented in AArch64.
+ */
+#define PVM_ID_AA64ISAR0_ALLOW (\
+	ARM64_FEATURE_MASK(ID_AA64ISAR0_EL1_AES) | \
+	ARM64_FEATURE_MASK(ID_AA64ISAR0_EL1_SHA1) | \
+	ARM64_FEATURE_MASK(ID_AA64ISAR0_EL1_SHA2) | \
+	ARM64_FEATURE_MASK(ID_AA64ISAR0_EL1_CRC32) | \
+	ARM64_FEATURE_MASK(ID_AA64ISAR0_EL1_ATOMIC) | \
+	ARM64_FEATURE_MASK(ID_AA64ISAR0_EL1_RDM) | \
+	ARM64_FEATURE_MASK(ID_AA64ISAR0_EL1_SHA3) | \
+	ARM64_FEATURE_MASK(ID_AA64ISAR0_EL1_SM3) | \
+	ARM64_FEATURE_MASK(ID_AA64ISAR0_EL1_SM4) | \
+	ARM64_FEATURE_MASK(ID_AA64ISAR0_EL1_DP) | \
+	ARM64_FEATURE_MASK(ID_AA64ISAR0_EL1_FHM) | \
+	ARM64_FEATURE_MASK(ID_AA64ISAR0_EL1_TS) | \
+	ARM64_FEATURE_MASK(ID_AA64ISAR0_EL1_TLB) | \
+	ARM64_FEATURE_MASK(ID_AA64ISAR0_EL1_RNDR) \
+	)
+
+#define PVM_ID_AA64ISAR1_ALLOW (\
+	ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_DPB) | \
+	ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_APA) | \
+	ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_API) | \
+	ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_JSCVT) | \
+	ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_FCMA) | \
+	ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_LRCPC) | \
+	ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_GPA) | \
+	ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_GPI) | \
+	ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_FRINTTS) | \
+	ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_SB) | \
+	ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_SPECRES) | \
+	ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_BF16) | \
+	ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_DGH) | \
+	ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_I8MM) \
+	)
+
+#define PVM_ID_AA64ISAR2_ALLOW (\
+	ARM64_FEATURE_MASK(ID_AA64ISAR2_EL1_GPA3) | \
+	ARM64_FEATURE_MASK(ID_AA64ISAR2_EL1_APA3) \
+	)
+
+/*
+ * Returns the maximum number of breakpoints supported for protected VMs.
+ */
+static inline int pkvm_get_max_brps(void)
+{
+	int num = FIELD_GET(ARM64_FEATURE_MASK(ID_AA64DFR0_EL1_BRPs),
+			    PVM_ID_AA64DFR0_ALLOW);
+
+	/*
+	 * If breakpoints are supported, the maximum number is 1 + the field.
+	 * Otherwise, return 0, which is not compliant with the architecture,
+	 * but is reserved and is used here to indicate no debug support.
+	 */
+	return num ? num + 1 : 0;
+}
+
+/*
+ * Returns the maximum number of watchpoints supported for protected VMs.
+ */
+static inline int pkvm_get_max_wrps(void)
+{
+	int num = FIELD_GET(ARM64_FEATURE_MASK(ID_AA64DFR0_EL1_WRPs),
+			    PVM_ID_AA64DFR0_ALLOW);
+
+	return num ? num + 1 : 0;
+}
+
+enum pkvm_moveable_reg_type {
+	PKVM_MREG_MEMORY,
+	PKVM_MREG_PROTECTED_RANGE,
+};
+
+struct pkvm_moveable_reg {
+	phys_addr_t start;
+	u64 size;
+	enum pkvm_moveable_reg_type type;
+};
+
+#define PKVM_NR_MOVEABLE_REGS 512
+extern struct pkvm_moveable_reg kvm_nvhe_sym(pkvm_moveable_regs)[];
+extern unsigned int kvm_nvhe_sym(pkvm_moveable_regs_nr);
 
 extern struct memblock_region kvm_nvhe_sym(hyp_memory)[];
 extern unsigned int kvm_nvhe_sym(hyp_memblock_nr);
 
+extern phys_addr_t kvm_nvhe_sym(pvmfw_base);
+extern phys_addr_t kvm_nvhe_sym(pvmfw_size);
+
+static inline unsigned long
+hyp_vmemmap_memblock_size(struct memblock_region *reg, size_t vmemmap_entry_size)
+{
+	unsigned long nr_pages = reg->size >> PAGE_SHIFT;
+	unsigned long start, end;
+
+	start = (reg->base >> PAGE_SHIFT) * vmemmap_entry_size;
+	end = start + nr_pages * vmemmap_entry_size;
+	start = ALIGN_DOWN(start, PAGE_SIZE);
+	end = ALIGN(end, PAGE_SIZE);
+
+	return end - start;
+}
+
+static inline unsigned long hyp_vmemmap_pages(size_t vmemmap_entry_size)
+{
+	unsigned long res = 0, i;
+
+	for (i = 0; i < kvm_nvhe_sym(hyp_memblock_nr); i++) {
+		res += hyp_vmemmap_memblock_size(&kvm_nvhe_sym(hyp_memory)[i],
+						 vmemmap_entry_size);
+	}
+
+	return res >> PAGE_SHIFT;
+}
+
+static inline unsigned long hyp_vm_table_pages(void)
+{
+	return PAGE_ALIGN(KVM_MAX_PVMS * sizeof(void *)) >> PAGE_SHIFT;
+}
+
 static inline unsigned long __hyp_pgtable_max_pages(unsigned long nr_pages)
 {
 	unsigned long total = 0, i;
@@ -27,27 +327,28 @@ static inline unsigned long __hyp_pgtable_max_pages(unsigned long nr_pages)
 	return total;
 }
 
-static inline unsigned long __hyp_pgtable_total_pages(void)
+static inline unsigned long __hyp_pgtable_moveable_regs_pages(void)
 {
 	unsigned long res = 0, i;
 
-	/* Cover all of memory with page-granularity */
-	for (i = 0; i < kvm_nvhe_sym(hyp_memblock_nr); i++) {
-		struct memblock_region *reg = &kvm_nvhe_sym(hyp_memory)[i];
+	/* Cover all of moveable regions with page-granularity */
+	for (i = 0; i < kvm_nvhe_sym(pkvm_moveable_regs_nr); i++) {
+		struct pkvm_moveable_reg *reg = &kvm_nvhe_sym(pkvm_moveable_regs)[i];
 		res += __hyp_pgtable_max_pages(reg->size >> PAGE_SHIFT);
 	}
 
 	return res;
 }
 
+#define __PKVM_PRIVATE_SZ SZ_1G
+
 static inline unsigned long hyp_s1_pgtable_pages(void)
 {
 	unsigned long res;
 
-	res = __hyp_pgtable_total_pages();
+	res = __hyp_pgtable_moveable_regs_pages();
 
-	/* Allow 1 GiB for private mappings */
-	res += __hyp_pgtable_max_pages(SZ_1G >> PAGE_SHIFT);
+	res += __hyp_pgtable_max_pages(__PKVM_PRIVATE_SZ >> PAGE_SHIFT);
 
 	return res;
 }
@@ -60,12 +361,63 @@ static inline unsigned long host_s2_pgtable_pages(void)
 	 * Include an extra 16 pages to safely upper-bound the worst case of
 	 * concatenated pgds.
 	 */
-	res = __hyp_pgtable_total_pages() + 16;
+	res = __hyp_pgtable_moveable_regs_pages() + 16;
 
-	/* Allow 1 GiB for MMIO mappings */
+	/* Allow 1 GiB for non-moveable regions */
 	res += __hyp_pgtable_max_pages(SZ_1G >> PAGE_SHIFT);
 
 	return res;
 }
 
+#define KVM_FFA_MBOX_NR_PAGES	1
+
+/*
+ * Maximum number of consitutents allowed in a descriptor. This number is
+ * arbitrary, see comment below on SG_MAX_SEGMENTS in hyp_ffa_proxy_pages().
+ */
+#define KVM_FFA_MAX_NR_CONSTITUENTS	4096
+
+static inline unsigned long hyp_ffa_proxy_pages(void)
+{
+	size_t desc_max;
+
+	/*
+	 * SG_MAX_SEGMENTS is supposed to bound the number of elements in an
+	 * sglist, which should match the number of consituents in the
+	 * corresponding FFA descriptor. As such, the EL2 buffer needs to be
+	 * large enough to hold a descriptor with SG_MAX_SEGMENTS consituents
+	 * at least. But the kernel's DMA code doesn't enforce the limit, and
+	 * it is sometimes abused, so let's allow larger descriptors and hope
+	 * for the best.
+	 */
+	BUILD_BUG_ON(KVM_FFA_MAX_NR_CONSTITUENTS < SG_MAX_SEGMENTS);
+
+	/*
+	 * The hypervisor FFA proxy needs enough memory to buffer a fragmented
+	 * descriptor returned from EL3 in response to a RETRIEVE_REQ call.
+	 */
+	desc_max = sizeof(struct ffa_mem_region) +
+		   sizeof(struct ffa_mem_region_attributes) +
+		   sizeof(struct ffa_composite_mem_region) +
+		   KVM_FFA_MAX_NR_CONSTITUENTS * sizeof(struct ffa_mem_region_addr_range);
+
+	/* Plus a page each for the hypervisor's RX and TX mailboxes. */
+	return (2 * KVM_FFA_MBOX_NR_PAGES) + DIV_ROUND_UP(desc_max, PAGE_SIZE);
+}
+
+static inline size_t pkvm_host_fp_state_size(void)
+{
+	if (system_supports_sve())
+		return size_add(sizeof(struct kvm_host_sve_state),
+		       SVE_SIG_REGS_SIZE(sve_vq_from_vl(kvm_host_sve_max_vl)));
+	else
+		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/kvm_pkvm_module.h b/arch/arm64/include/asm/kvm_pkvm_module.h
new file mode 100644
index 0000000..28c3271
--- /dev/null
+++ b/arch/arm64/include/asm/kvm_pkvm_module.h
@@ -0,0 +1,143 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+
+#ifndef __ARM64_KVM_PKVM_MODULE_H__
+#define __ARM64_KVM_PKVM_MODULE_H__
+
+#include <asm/kvm_pgtable.h>
+#include <linux/android_kabi.h>
+#include <linux/export.h>
+
+typedef void (*dyn_hcall_t)(struct kvm_cpu_context *);
+
+enum pkvm_psci_notification {
+	PKVM_PSCI_CPU_SUSPEND,
+	PKVM_PSCI_SYSTEM_SUSPEND,
+	PKVM_PSCI_CPU_ENTRY,
+};
+
+#ifdef CONFIG_MODULES
+struct pkvm_module_ops {
+	int (*create_private_mapping)(phys_addr_t phys, size_t size,
+				      enum kvm_pgtable_prot prot,
+				      unsigned long *haddr);
+	void *(*alloc_module_va)(u64 nr_pages);
+	int (*map_module_page)(u64 pfn, void *va, enum kvm_pgtable_prot prot, bool is_protected);
+	int (*register_serial_driver)(void (*hyp_putc_cb)(char));
+	void (*puts)(const char *str);
+	void (*putx64)(u64 num);
+	void *(*fixmap_map)(phys_addr_t phys);
+	void (*fixmap_unmap)(void);
+	void *(*linear_map_early)(phys_addr_t phys, size_t size, enum kvm_pgtable_prot prot);
+	void (*linear_unmap_early)(void *addr, size_t size);
+	void (*flush_dcache_to_poc)(void *addr, size_t size);
+	void (*update_hcr_el2)(unsigned long set_mask, unsigned long clear_mask);
+	void (*update_hfgwtr_el2)(unsigned long set_mask, unsigned long clear_mask);
+	int (*register_host_perm_fault_handler)(int (*cb)(struct kvm_cpu_context *ctxt, u64 esr, u64 addr));
+	int (*host_stage2_mod_prot)(u64 pfn, enum kvm_pgtable_prot prot);
+	int (*host_stage2_get_leaf)(phys_addr_t phys, kvm_pte_t *ptep, u32 *level);
+	int (*register_host_smc_handler)(bool (*cb)(struct kvm_cpu_context *));
+	int (*register_default_trap_handler)(bool (*cb)(struct kvm_cpu_context *));
+	int (*register_illegal_abt_notifier)(void (*cb)(struct kvm_cpu_context *));
+	int (*register_psci_notifier)(void (*cb)(enum pkvm_psci_notification, struct kvm_cpu_context *));
+	int (*register_hyp_panic_notifier)(void (*cb)(struct kvm_cpu_context *host_ctxt));
+	int (*host_donate_hyp)(u64 pfn, u64 nr_pages);
+	int (*hyp_donate_host)(u64 pfn, u64 nr_pages);
+	int (*host_share_hyp)(u64 pfn);
+	int (*host_unshare_hyp)(u64 pfn);
+	int (*pin_shared_mem)(void *from, void *to);
+	void (*unpin_shared_mem)(void *from, void *to);
+	void* (*memcpy)(void *to, const void *from, size_t count);
+	void* (*memset)(void *dst, int c, size_t count);
+	phys_addr_t (*hyp_pa)(void *x);
+	void* (*hyp_va)(phys_addr_t phys);
+	unsigned long (*kern_hyp_va)(unsigned long x);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
+	ANDROID_KABI_RESERVE(5);
+	ANDROID_KABI_RESERVE(6);
+	ANDROID_KABI_RESERVE(7);
+	ANDROID_KABI_RESERVE(8);
+	ANDROID_KABI_RESERVE(9);
+	ANDROID_KABI_RESERVE(10);
+	ANDROID_KABI_RESERVE(11);
+	ANDROID_KABI_RESERVE(12);
+	ANDROID_KABI_RESERVE(13);
+	ANDROID_KABI_RESERVE(14);
+	ANDROID_KABI_RESERVE(15);
+	ANDROID_KABI_RESERVE(16);
+	ANDROID_KABI_RESERVE(17);
+	ANDROID_KABI_RESERVE(18);
+	ANDROID_KABI_RESERVE(19);
+	ANDROID_KABI_RESERVE(20);
+	ANDROID_KABI_RESERVE(21);
+	ANDROID_KABI_RESERVE(22);
+	ANDROID_KABI_RESERVE(23);
+	ANDROID_KABI_RESERVE(24);
+	ANDROID_KABI_RESERVE(25);
+	ANDROID_KABI_RESERVE(26);
+	ANDROID_KABI_RESERVE(27);
+	ANDROID_KABI_RESERVE(28);
+	ANDROID_KABI_RESERVE(29);
+	ANDROID_KABI_RESERVE(30);
+	ANDROID_KABI_RESERVE(31);
+	ANDROID_KABI_RESERVE(32);
+};
+
+int __pkvm_load_el2_module(struct module *this, unsigned long *token);
+
+int __pkvm_register_el2_call(unsigned long hfn_hyp_va);
+#else
+static inline int __pkvm_load_el2_module(struct module *this,
+					 unsigned long *token)
+{
+	return -ENOSYS;
+}
+
+static inline int __pkvm_register_el2_call(unsigned long hfn_hyp_va)
+{
+	return -ENOSYS;
+}
+#endif /* CONFIG_MODULES */
+
+int pkvm_load_early_modules(void);
+
+#ifdef MODULE
+/*
+ * Convert an EL2 module addr from the kernel VA to the hyp VA
+ */
+#define pkvm_el2_mod_va(kern_va, token)					\
+({									\
+	unsigned long hyp_text_kern_va =				\
+		(unsigned long)THIS_MODULE->arch.hyp.text.start;	\
+	unsigned long offset;						\
+									\
+	offset = (unsigned long)kern_va - hyp_text_kern_va;		\
+	token + offset;							\
+})
+
+#define pkvm_load_el2_module(init_fn, token)				\
+({									\
+	THIS_MODULE->arch.hyp.init = init_fn;				\
+	__pkvm_load_el2_module(THIS_MODULE, token);			\
+})
+
+#define pkvm_register_el2_mod_call(hfn, token)				\
+({									\
+	__pkvm_register_el2_call(pkvm_el2_mod_va(hfn, token));		\
+})
+
+#define pkvm_el2_mod_call(id, ...)					\
+	({								\
+		struct arm_smccc_res res;				\
+									\
+		arm_smccc_1_1_hvc(KVM_HOST_SMCCC_ID(id),		\
+				  ##__VA_ARGS__, &res);			\
+		WARN_ON(res.a0 != SMCCC_RET_SUCCESS);			\
+									\
+		res.a1;							\
+	})
+#endif
+#endif
diff --git a/arch/arm64/include/asm/lse.h b/arch/arm64/include/asm/lse.h
index c503db8..2875129 100644
--- a/arch/arm64/include/asm/lse.h
+++ b/arch/arm64/include/asm/lse.h
@@ -4,7 +4,7 @@
 
 #include <asm/atomic_ll_sc.h>
 
-#ifdef CONFIG_ARM64_LSE_ATOMICS
+#if defined(CONFIG_ARM64_LSE_ATOMICS) && !defined(BUILD_FIPS140_KO)
 
 #define __LSE_PREAMBLE	".arch_extension lse\n"
 
diff --git a/arch/arm64/include/asm/mem_encrypt.h b/arch/arm64/include/asm/mem_encrypt.h
new file mode 100644
index 0000000..300c8b8
--- /dev/null
+++ b/arch/arm64/include/asm/mem_encrypt.h
@@ -0,0 +1,9 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+#ifndef __ASM_MEM_ENCRYPT_H
+#define __ASM_MEM_ENCRYPT_H
+
+bool mem_encrypt_active(void);
+int set_memory_encrypted(unsigned long addr, int numpages);
+int set_memory_decrypted(unsigned long addr, int numpages);
+
+#endif	/* __ASM_MEM_ENCRYPT_H */
diff --git a/arch/arm64/include/asm/mem_relinquish.h b/arch/arm64/include/asm/mem_relinquish.h
new file mode 100644
index 0000000..ac51786
--- /dev/null
+++ b/arch/arm64/include/asm/mem_relinquish.h
@@ -0,0 +1,15 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (C) 2022 Google LLC
+ * Author: Keir Fraser <keirf@google.com>
+ */
+
+#ifndef __ASM_MEM_RELINQUISH_H
+#define __ASM_MEM_RELINQUISH_H
+
+struct page;
+
+bool kvm_has_memrelinquish_services(void);
+void page_relinquish(struct page *page);
+
+#endif	/* __ASM_MEM_RELINQUISH_H */
diff --git a/arch/arm64/include/asm/memory.h b/arch/arm64/include/asm/memory.h
index 9dd08cd..57fc7f1 100644
--- a/arch/arm64/include/asm/memory.h
+++ b/arch/arm64/include/asm/memory.h
@@ -142,11 +142,13 @@
 #define MT_NORMAL_NC		2
 #define MT_DEVICE_nGnRnE	3
 #define MT_DEVICE_nGnRE		4
+#define MT_NORMAL_iNC_oWB	5
 
 /*
  * Memory types for Stage-2 translation
  */
 #define MT_S2_NORMAL		0xf
+#define MT_S2_NORMAL_NC		0x5
 #define MT_S2_DEVICE_nGnRE	0x1
 
 /*
@@ -154,6 +156,7 @@
  * Stage-2 enforces Normal-WB and Device-nGnRE
  */
 #define MT_S2_FWB_NORMAL	6
+#define MT_S2_FWB_NORMAL_NC	5
 #define MT_S2_FWB_DEVICE_nGnRE	1
 
 #ifdef CONFIG_ARM64_4K_PAGES
diff --git a/arch/arm64/include/asm/module.h b/arch/arm64/include/asm/module.h
index 18734fe..3a505c1 100644
--- a/arch/arm64/include/asm/module.h
+++ b/arch/arm64/include/asm/module.h
@@ -14,12 +14,50 @@ struct mod_plt_sec {
 	int			plt_max_entries;
 };
 
-struct mod_arch_specific {
-	struct mod_plt_sec	core;
-	struct mod_plt_sec	init;
-
-	/* for CONFIG_DYNAMIC_FTRACE */
+#define ARM64_MODULE_PLTS_ARCHDATA					\
+	struct mod_plt_sec	core;					\
+	struct mod_plt_sec	init;					\
+									\
+	/* for CONFIG_DYNAMIC_FTRACE */					\
 	struct plt_entry	*ftrace_trampolines;
+#else
+#define ARM64_MODULE_PLTS_ARCHDATA
+#endif
+
+#ifdef CONFIG_KVM
+struct pkvm_module_section {
+	void *start;
+	void *end;
+};
+
+typedef s32 kvm_nvhe_reloc_t;
+struct pkvm_module_ops;
+
+struct pkvm_el2_module {
+	struct pkvm_module_section text;
+	struct pkvm_module_section bss;
+	struct pkvm_module_section rodata;
+	struct pkvm_module_section data;
+	kvm_nvhe_reloc_t *relocs;
+	unsigned int nr_relocs;
+	int (*init)(const struct pkvm_module_ops *ops);
+};
+
+void kvm_apply_hyp_module_relocations(void *mod_start, void *hyp_va,
+				      kvm_nvhe_reloc_t *begin,
+				      kvm_nvhe_reloc_t *end);
+
+#define ARM64_MODULE_KVM_ARCHDATA					\
+	/* For pKVM hypervisor modules */				\
+	struct pkvm_el2_module	hyp;
+#else
+#define ARM64_MODULE_KVM_ARCHDATA
+#endif
+
+#ifdef CONFIG_HAVE_MOD_ARCH_SPECIFIC
+struct mod_arch_specific {
+	ARM64_MODULE_PLTS_ARCHDATA
+	ARM64_MODULE_KVM_ARCHDATA
 };
 #endif
 
diff --git a/arch/arm64/include/asm/module.lds.h b/arch/arm64/include/asm/module.lds.h
index 094701ec..c385aba 100644
--- a/arch/arm64/include/asm/module.lds.h
+++ b/arch/arm64/include/asm/module.lds.h
@@ -1,3 +1,6 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+#include <asm/page-def.h>
+
 SECTIONS {
 #ifdef CONFIG_ARM64_MODULE_PLTS
 	.plt 0 : { BYTE(0) }
@@ -17,4 +20,32 @@
 	 */
 	.text.hot : { *(.text.hot) }
 #endif
+
+#ifdef CONFIG_KVM
+	.hyp.text : ALIGN(PAGE_SIZE) {
+		*(.hyp.text)
+		. = ALIGN(PAGE_SIZE);
+	}
+	.hyp.bss : ALIGN(PAGE_SIZE) {
+		*(.hyp.bss)
+		. = ALIGN(PAGE_SIZE);
+	}
+	.hyp.rodata : ALIGN(PAGE_SIZE) {
+		*(.hyp.rodata)
+		. = ALIGN(PAGE_SIZE);
+	}
+	.hyp.data : ALIGN(PAGE_SIZE) {
+		*(.hyp.data)
+		. = ALIGN(PAGE_SIZE);
+	}
+	.hyp.reloc : ALIGN(4) {	*(.hyp.reloc) }
+#endif
+
+#ifdef CONFIG_UNWIND_TABLES
+	/*
+	 * Currently, we only use unwind info at module load time, so we can
+	 * put it into the .init allocation.
+	 */
+	.init.eh_frame : { *(.eh_frame) }
+#endif
 }
diff --git a/arch/arm64/include/asm/mte.h b/arch/arm64/include/asm/mte.h
index 3f8199b..684fb1f 100644
--- a/arch/arm64/include/asm/mte.h
+++ b/arch/arm64/include/asm/mte.h
@@ -25,7 +25,7 @@ unsigned long mte_copy_tags_to_user(void __user *to, void *from,
 				    unsigned long n);
 int mte_save_tags(struct page *page);
 void mte_save_page_tags(const void *page_addr, void *tag_storage);
-bool mte_restore_tags(swp_entry_t entry, struct page *page);
+void mte_restore_tags(swp_entry_t entry, struct page *page);
 void mte_restore_page_tags(void *page_addr, const void *tag_storage);
 void mte_invalidate_tags(int type, pgoff_t offset);
 void mte_invalidate_tags_area(int type);
@@ -61,7 +61,7 @@ static inline bool page_mte_tagged(struct page *page)
 }
 
 void mte_zero_clear_page_tags(void *addr);
-void mte_sync_tags(pte_t old_pte, pte_t pte);
+void mte_sync_tags(pte_t pte);
 void mte_copy_page_tags(void *kto, const void *kfrom);
 void mte_thread_init_user(void);
 void mte_thread_switch(struct task_struct *next);
@@ -89,7 +89,7 @@ static inline bool page_mte_tagged(struct page *page)
 static inline void mte_zero_clear_page_tags(void *addr)
 {
 }
-static inline void mte_sync_tags(pte_t old_pte, pte_t pte)
+static inline void mte_sync_tags(pte_t pte)
 {
 }
 static inline void mte_copy_page_tags(void *kto, const void *kfrom)
diff --git a/arch/arm64/include/asm/patching.h b/arch/arm64/include/asm/patching.h
index 6bf5adc..82b1e0c 100644
--- a/arch/arm64/include/asm/patching.h
+++ b/arch/arm64/include/asm/patching.h
@@ -6,6 +6,7 @@
 
 int aarch64_insn_read(void *addr, u32 *insnp);
 int aarch64_insn_write(void *addr, u32 insn);
+int aarch64_addr_write(void *addr, u64 dst);
 
 int aarch64_insn_patch_text_nosync(void *addr, u32 insn);
 int aarch64_insn_patch_text(void *addrs[], u32 insns[], int cnt);
diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h
index 5d0f1f7..60df845 100644
--- a/arch/arm64/include/asm/pgtable.h
+++ b/arch/arm64/include/asm/pgtable.h
@@ -320,6 +320,8 @@ static inline void __check_racy_pte_update(struct mm_struct *mm, pte_t *ptep,
 		     __func__, pte_val(old_pte), pte_val(pte));
 }
 
+#include <asm/android_erratum_pgtable.h>
+
 static inline void __set_pte_at(struct mm_struct *mm, unsigned long addr,
 				pte_t *ptep, pte_t pte)
 {
@@ -333,21 +335,12 @@ static inline void __set_pte_at(struct mm_struct *mm, unsigned long addr,
 	 * don't expose tags (instruction fetches don't check tags).
 	 */
 	if (system_supports_mte() && pte_access_permitted(pte, false) &&
-	    !pte_special(pte)) {
-		pte_t old_pte = READ_ONCE(*ptep);
-		/*
-		 * We only need to synchronise if the new PTE has tags enabled
-		 * or if swapping in (in which case another mapping may have
-		 * set tags in the past even if this PTE isn't tagged).
-		 * (!pte_none() && !pte_present()) is an open coded version of
-		 * is_swap_pte()
-		 */
-		if (pte_tagged(pte) || (!pte_none(old_pte) && !pte_present(old_pte)))
-			mte_sync_tags(old_pte, pte);
-	}
+	    !pte_special(pte) && pte_tagged(pte))
+		mte_sync_tags(pte);
 
 	__check_racy_pte_update(mm, ptep, pte);
 
+	arm64_update_cacheable_aliases(ptep, pte);
 	set_pte(ptep, pte);
 }
 
@@ -531,6 +524,7 @@ static inline pmd_t pmd_mkdevmap(pmd_t pmd)
 static inline void set_pmd_at(struct mm_struct *mm, unsigned long addr,
 			      pmd_t *pmdp, pmd_t pmd)
 {
+	WARN_ON(prot_needs_stage2_update(__pgprot(pmd_val(pmd))));
 	page_table_check_pmd_set(mm, addr, pmdp, pmd);
 	return __set_pte_at(mm, addr, (pte_t *)pmdp, pmd_pte(pmd));
 }
@@ -538,6 +532,7 @@ static inline void set_pmd_at(struct mm_struct *mm, unsigned long addr,
 static inline void set_pud_at(struct mm_struct *mm, unsigned long addr,
 			      pud_t *pudp, pud_t pud)
 {
+	WARN_ON(prot_needs_stage2_update(__pgprot(pud_val(pud))));
 	page_table_check_pud_set(mm, addr, pudp, pud);
 	return __set_pte_at(mm, addr, (pte_t *)pudp, pud_pte(pud));
 }
@@ -578,6 +573,15 @@ static inline void set_pud_at(struct mm_struct *mm, unsigned long addr,
 	__pgprot_modify(prot, PTE_ATTRINDX_MASK, \
 			PTE_ATTRINDX(MT_NORMAL_NC) | PTE_PXN | PTE_UXN)
 
+/*
+ * Mark the prot value as outer cacheable and inner non-cacheable. Non-coherent
+ * devices on a system with support for a system or last level cache use these
+ * attributes to cache allocations in the system cache.
+ */
+#define pgprot_syscached(prot) \
+	__pgprot_modify(prot, PTE_ATTRINDX_MASK, \
+			PTE_ATTRINDX(MT_NORMAL_iNC_oWB) | PTE_PXN | PTE_UXN)
+
 #define __HAVE_PHYS_MEM_ACCESS_PROT
 struct file;
 extern pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn,
@@ -933,7 +937,10 @@ static inline int pmdp_test_and_clear_young(struct vm_area_struct *vma,
 static inline pte_t ptep_get_and_clear(struct mm_struct *mm,
 				       unsigned long address, pte_t *ptep)
 {
-	pte_t pte = __pte(xchg_relaxed(&pte_val(*ptep), 0));
+	pte_t pte;
+
+	arm64_update_cacheable_aliases(ptep, __pte(0));
+	pte = __pte(xchg_relaxed(&pte_val(*ptep), 0));
 
 	page_table_check_pte_clear(mm, address, pte);
 
@@ -1049,8 +1056,8 @@ static inline void arch_swap_invalidate_area(int type)
 #define __HAVE_ARCH_SWAP_RESTORE
 static inline void arch_swap_restore(swp_entry_t entry, struct folio *folio)
 {
-	if (system_supports_mte() && mte_restore_tags(entry, &folio->page))
-		set_page_mte_tagged(&folio->page);
+	if (system_supports_mte())
+  		mte_restore_tags(entry, &folio->page);
 }
 
 #endif /* CONFIG_ARM64_MTE */
diff --git a/arch/arm64/include/asm/processor.h b/arch/arm64/include/asm/processor.h
index 400f895..14e6187 100644
--- a/arch/arm64/include/asm/processor.h
+++ b/arch/arm64/include/asm/processor.h
@@ -31,6 +31,7 @@
 #include <linux/stddef.h>
 #include <linux/string.h>
 #include <linux/thread_info.h>
+#include <linux/android_vendor.h>
 
 #include <vdso/processor.h>
 
@@ -152,6 +153,8 @@ struct thread_struct {
 		struct user_fpsimd_state fpsimd_state;
 	} uw;
 
+	ANDROID_VENDOR_DATA(1);
+
 	unsigned int		fpsimd_cpu;
 	void			*sve_state;	/* SVE registers, if any */
 	void			*za_state;	/* ZA register, if any */
diff --git a/arch/arm64/include/asm/scs.h b/arch/arm64/include/asm/scs.h
index 5cd4d09..13df982 100644
--- a/arch/arm64/include/asm/scs.h
+++ b/arch/arm64/include/asm/scs.h
@@ -5,6 +5,7 @@
 #ifdef __ASSEMBLY__
 
 #include <asm/asm-offsets.h>
+#include <asm/sysreg.h>
 
 #ifdef CONFIG_SHADOW_CALL_STACK
 	scs_sp	.req	x18
@@ -25,6 +26,54 @@
 	.endm
 #endif /* CONFIG_SHADOW_CALL_STACK */
 
+
+#else
+
+#include <linux/scs.h>
+#include <asm/cpufeature.h>
+
+#ifdef CONFIG_UNWIND_PATCH_PAC_INTO_SCS
+static inline bool should_patch_pac_into_scs(void)
+{
+	u64 reg;
+
+	/*
+	 * We only enable the shadow call stack dynamically if we are running
+	 * on a system that does not implement PAC or BTI. PAC and SCS provide
+	 * roughly the same level of protection, and BTI relies on the PACIASP
+	 * instructions serving as landing pads, preventing us from patching
+	 * those instructions into something else.
+	 */
+	reg = read_sysreg_s(SYS_ID_AA64ISAR1_EL1);
+	if (SYS_FIELD_GET(ID_AA64ISAR1_EL1, APA, reg) |
+	    SYS_FIELD_GET(ID_AA64ISAR1_EL1, API, reg))
+		return false;
+
+	reg = read_sysreg_s(SYS_ID_AA64ISAR2_EL1);
+	if (SYS_FIELD_GET(ID_AA64ISAR2_EL1, APA3, reg))
+		return false;
+
+	if (IS_ENABLED(CONFIG_ARM64_BTI_KERNEL)) {
+		reg = read_sysreg_s(SYS_ID_AA64PFR1_EL1);
+		if (reg & (0xf << ID_AA64PFR1_EL1_BT_SHIFT))
+			return false;
+	}
+	return true;
+}
+
+static inline void dynamic_scs_init(void)
+{
+	if (should_patch_pac_into_scs()) {
+		pr_info("Enabling dynamic shadow call stack\n");
+		static_branch_enable(&dynamic_scs_enabled);
+	}
+}
+#else
+static inline void dynamic_scs_init(void) {}
+#endif
+
+int scs_patch(const u8 eh_frame[], int size);
+
 #endif /* __ASSEMBLY __ */
 
 #endif /* _ASM_SCS_H */
diff --git a/arch/arm64/include/asm/sections.h b/arch/arm64/include/asm/sections.h
index 40971ac..51b0d59 100644
--- a/arch/arm64/include/asm/sections.h
+++ b/arch/arm64/include/asm/sections.h
@@ -11,6 +11,7 @@ extern char __alt_instructions[], __alt_instructions_end[];
 extern char __hibernate_exit_text_start[], __hibernate_exit_text_end[];
 extern char __hyp_idmap_text_start[], __hyp_idmap_text_end[];
 extern char __hyp_text_start[], __hyp_text_end[];
+extern char __hyp_data_start[], __hyp_data_end[];
 extern char __hyp_rodata_start[], __hyp_rodata_end[];
 extern char __hyp_reloc_begin[], __hyp_reloc_end[];
 extern char __hyp_bss_start[], __hyp_bss_end[];
diff --git a/arch/arm64/include/asm/set_memory.h b/arch/arm64/include/asm/set_memory.h
index 0f740b7..0ad879e4 100644
--- a/arch/arm64/include/asm/set_memory.h
+++ b/arch/arm64/include/asm/set_memory.h
@@ -10,6 +10,7 @@ bool can_set_direct_map(void);
 
 int set_memory_valid(unsigned long addr, int numpages, int enable);
 
+int arch_set_direct_map_range_uncached(unsigned long addr, unsigned long numpages);
 int set_direct_map_invalid_noflush(struct page *page);
 int set_direct_map_default_noflush(struct page *page);
 bool kernel_page_present(struct page *page);
diff --git a/arch/arm64/include/asm/simd.h b/arch/arm64/include/asm/simd.h
index 6a75d7e..543fa59 100644
--- a/arch/arm64/include/asm/simd.h
+++ b/arch/arm64/include/asm/simd.h
@@ -35,9 +35,7 @@ static __must_check inline bool may_use_simd(void)
 	 * migrated, and if it's clear we cannot be migrated to a CPU
 	 * where it is set.
 	 */
-	return !WARN_ON(!system_capabilities_finalized()) &&
-	       system_supports_fpsimd() &&
-	       !in_hardirq() && !irqs_disabled() && !in_nmi() &&
+	return !in_hardirq() && !irqs_disabled() && !in_nmi() &&
 	       !this_cpu_read(fpsimd_context_busy);
 }
 
diff --git a/arch/arm64/include/asm/smp.h b/arch/arm64/include/asm/smp.h
index fc55f5a..b936377 100644
--- a/arch/arm64/include/asm/smp.h
+++ b/arch/arm64/include/asm/smp.h
@@ -87,6 +87,8 @@ extern void secondary_entry(void);
 
 extern void arch_send_call_function_single_ipi(int cpu);
 extern void arch_send_call_function_ipi_mask(const struct cpumask *mask);
+extern int nr_ipi_get(void);
+extern struct irq_desc **ipi_desc_get(void);
 
 #ifdef CONFIG_ARM64_ACPI_PARKING_PROTOCOL
 extern void arch_send_wakeup_ipi_mask(const struct cpumask *mask);
diff --git a/arch/arm64/include/asm/sysreg.h b/arch/arm64/include/asm/sysreg.h
index 3a448ab..5b9d557 100644
--- a/arch/arm64/include/asm/sysreg.h
+++ b/arch/arm64/include/asm/sysreg.h
@@ -669,6 +669,7 @@
 #define MAIR_ATTR_NORMAL_TAGGED		UL(0xf0)
 #define MAIR_ATTR_NORMAL		UL(0xff)
 #define MAIR_ATTR_MASK			UL(0xff)
+#define MAIR_ATTR_NORMAL_iNC_oWB	UL(0xf4)
 
 /* Position the attr at the correct index */
 #define MAIR_ATTRIDX(attr, idx)		((attr) << ((idx) * 8))
diff --git a/arch/arm64/include/asm/virt.h b/arch/arm64/include/asm/virt.h
index 4eb601e..44dbede 100644
--- a/arch/arm64/include/asm/virt.h
+++ b/arch/arm64/include/asm/virt.h
@@ -81,6 +81,12 @@ void __hyp_reset_vectors(void);
 
 DECLARE_STATIC_KEY_FALSE(kvm_protected_mode_initialized);
 
+static inline bool is_pkvm_initialized(void)
+{
+	return IS_ENABLED(CONFIG_KVM) &&
+	       static_branch_likely(&kvm_protected_mode_initialized);
+}
+
 /* Reports the availability of HYP mode */
 static inline bool is_hyp_mode_available(void)
 {
@@ -88,8 +94,7 @@ static inline bool is_hyp_mode_available(void)
 	 * If KVM protected mode is initialized, all CPUs must have been booted
 	 * in EL2. Avoid checking __boot_cpu_mode as CPUs now come up in EL1.
 	 */
-	if (IS_ENABLED(CONFIG_KVM) &&
-	    static_branch_likely(&kvm_protected_mode_initialized))
+	if (is_pkvm_initialized())
 		return true;
 
 	return (__boot_cpu_mode[0] == BOOT_CPU_MODE_EL2 &&
@@ -103,8 +108,7 @@ static inline bool is_hyp_mode_mismatched(void)
 	 * If KVM protected mode is initialized, all CPUs must have been booted
 	 * in EL2. Avoid checking __boot_cpu_mode as CPUs now come up in EL1.
 	 */
-	if (IS_ENABLED(CONFIG_KVM) &&
-	    static_branch_likely(&kvm_protected_mode_initialized))
+	if (is_pkvm_initialized())
 		return false;
 
 	return __boot_cpu_mode[0] != __boot_cpu_mode[1];
diff --git a/arch/arm64/include/asm/vmalloc.h b/arch/arm64/include/asm/vmalloc.h
index 38fafff..964744b 100644
--- a/arch/arm64/include/asm/vmalloc.h
+++ b/arch/arm64/include/asm/vmalloc.h
@@ -9,6 +9,9 @@
 #define arch_vmap_pud_supported arch_vmap_pud_supported
 static inline bool arch_vmap_pud_supported(pgprot_t prot)
 {
+	if (prot_needs_stage2_update(prot))
+		return false;
+
 	/*
 	 * SW table walks can't handle removal of intermediate entries.
 	 */
@@ -19,6 +22,9 @@ static inline bool arch_vmap_pud_supported(pgprot_t prot)
 #define arch_vmap_pmd_supported arch_vmap_pmd_supported
 static inline bool arch_vmap_pmd_supported(pgprot_t prot)
 {
+	if (prot_needs_stage2_update(prot))
+		return false;
+
 	/* See arch_vmap_pud_supported() */
 	return !IS_ENABLED(CONFIG_PTDUMP_DEBUGFS);
 }
diff --git a/arch/arm64/include/uapi/asm/kvm.h b/arch/arm64/include/uapi/asm/kvm.h
index 316917b..288f2da 100644
--- a/arch/arm64/include/uapi/asm/kvm.h
+++ b/arch/arm64/include/uapi/asm/kvm.h
@@ -457,6 +457,15 @@ enum {
 #define KVM_PSCI_RET_INVAL		PSCI_RET_INVALID_PARAMS
 #define KVM_PSCI_RET_DENIED		PSCI_RET_DENIED
 
+/* Protected KVM */
+#define KVM_CAP_ARM_PROTECTED_VM_FLAGS_SET_FW_IPA	0
+#define KVM_CAP_ARM_PROTECTED_VM_FLAGS_INFO		1
+
+struct kvm_protected_vm_info {
+	__u64 firmware_size;
+	__u64 __reserved[7];
+};
+
 /* arm64-specific kvm_run::system_event flags */
 /*
  * Reset caused by a PSCI v1.1 SYSTEM_RESET2 call.
diff --git a/arch/arm64/kernel/Makefile b/arch/arm64/kernel/Makefile
index 2f361a8..8dd925f 100644
--- a/arch/arm64/kernel/Makefile
+++ b/arch/arm64/kernel/Makefile
@@ -80,6 +80,8 @@
 obj-$(CONFIG_ARM64_MTE)			+= mte.o
 obj-y					+= vdso-wrap.o
 obj-$(CONFIG_COMPAT_VDSO)		+= vdso32-wrap.o
+obj-$(CONFIG_UNWIND_PATCH_PAC_INTO_SCS)	+= patch-scs.o
+CFLAGS_patch-scs.o			+= -mbranch-protection=none
 
 # Force dependency (vdso*-wrap.S includes vdso.so through incbin)
 $(obj)/vdso-wrap.o: $(obj)/vdso/vdso.so
diff --git a/arch/arm64/kernel/asm-offsets.c b/arch/arm64/kernel/asm-offsets.c
index 1197e76..57191e3 100644
--- a/arch/arm64/kernel/asm-offsets.c
+++ b/arch/arm64/kernel/asm-offsets.c
@@ -128,6 +128,7 @@ int main(void)
   DEFINE(NVHE_INIT_STACK_HYP_VA,	offsetof(struct kvm_nvhe_init_params, stack_hyp_va));
   DEFINE(NVHE_INIT_PGD_PA,	offsetof(struct kvm_nvhe_init_params, pgd_pa));
   DEFINE(NVHE_INIT_HCR_EL2,	offsetof(struct kvm_nvhe_init_params, hcr_el2));
+  DEFINE(NVHE_INIT_HFGWTR_EL2,	offsetof(struct kvm_nvhe_init_params, hfgwtr_el2));
   DEFINE(NVHE_INIT_VTTBR,	offsetof(struct kvm_nvhe_init_params, vttbr));
   DEFINE(NVHE_INIT_VTCR,	offsetof(struct kvm_nvhe_init_params, vtcr));
 #endif
diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c
index b3eb538..cfea7a6 100644
--- a/arch/arm64/kernel/cpufeature.c
+++ b/arch/arm64/kernel/cpufeature.c
@@ -1458,6 +1458,7 @@ const struct cpumask *system_32bit_el0_cpumask(void)
 
 	return cpu_possible_mask;
 }
+EXPORT_SYMBOL_GPL(system_32bit_el0_cpumask);
 
 static int __init parse_32bit_el0_param(char *str)
 {
diff --git a/arch/arm64/kernel/debug-monitors.c b/arch/arm64/kernel/debug-monitors.c
index 64f2ecb..2da6d86 100644
--- a/arch/arm64/kernel/debug-monitors.c
+++ b/arch/arm64/kernel/debug-monitors.c
@@ -283,21 +283,25 @@ void register_user_break_hook(struct break_hook *hook)
 {
 	register_debug_hook(&hook->node, &user_break_hook);
 }
+EXPORT_SYMBOL_GPL(register_user_break_hook);
 
 void unregister_user_break_hook(struct break_hook *hook)
 {
 	unregister_debug_hook(&hook->node);
 }
+EXPORT_SYMBOL_GPL(unregister_user_break_hook);
 
 void register_kernel_break_hook(struct break_hook *hook)
 {
 	register_debug_hook(&hook->node, &kernel_break_hook);
 }
+EXPORT_SYMBOL_GPL(register_kernel_break_hook);
 
 void unregister_kernel_break_hook(struct break_hook *hook)
 {
 	unregister_debug_hook(&hook->node);
 }
+EXPORT_SYMBOL_GPL(unregister_kernel_break_hook);
 
 static int call_break_hook(struct pt_regs *regs, unsigned long esr)
 {
diff --git a/arch/arm64/kernel/entry-common.c b/arch/arm64/kernel/entry-common.c
index 27369fa..08015c9 100644
--- a/arch/arm64/kernel/entry-common.c
+++ b/arch/arm64/kernel/entry-common.c
@@ -27,6 +27,8 @@
 #include <asm/sysreg.h>
 #include <asm/system_misc.h>
 
+#include <trace/hooks/traps.h>
+
 /*
  * Handle IRQ/context state management when entering from kernel mode.
  * Before this function is called it is not safe to call regular kernel code,
@@ -292,6 +294,7 @@ static void noinstr __panic_unhandled(struct pt_regs *regs, const char *vector,
 		vector, smp_processor_id(), esr,
 		esr_get_class_string(esr));
 
+	trace_android_rvh_panic_unhandled(regs, vector, esr);
 	__show_regs(regs);
 	panic("Unhandled exception");
 }
diff --git a/arch/arm64/kernel/head.S b/arch/arm64/kernel/head.S
index cdbbc95..b9c1a50 100644
--- a/arch/arm64/kernel/head.S
+++ b/arch/arm64/kernel/head.S
@@ -462,6 +462,9 @@
 	bl	early_fdt_map			// Try mapping the FDT early
 	mov	x0, x20				// pass the full boot status
 	bl	init_feature_override		// Parse cpu feature overrides
+#ifdef CONFIG_UNWIND_PATCH_PAC_INTO_SCS
+	bl	scs_patch_vmlinux
+#endif
 	mov	x0, x20
 	bl	finalise_el2			// Prefer VHE if possible
 	ldp	x29, x30, [sp], #16
diff --git a/arch/arm64/kernel/hibernate.c b/arch/arm64/kernel/hibernate.c
index 788597a..2ea6bc5 100644
--- a/arch/arm64/kernel/hibernate.c
+++ b/arch/arm64/kernel/hibernate.c
@@ -33,6 +33,7 @@
 #include <asm/sysreg.h>
 #include <asm/trans_pgd.h>
 #include <asm/virt.h>
+#include <trace/hooks/bl_hib.h>
 
 /*
  * Hibernate core relies on this value being 0 on resume, and marks it
@@ -80,6 +81,8 @@ static struct arch_hibernate_hdr {
 	phys_addr_t	__hyp_stub_vectors;
 
 	u64		sleep_cpu_mpidr;
+
+	ANDROID_VENDOR_DATA(1);
 } resume_hdr;
 
 static inline void arch_hdr_invariants(struct arch_hibernate_hdr_invariants *i)
@@ -117,6 +120,9 @@ int arch_hibernation_header_save(void *addr, unsigned int max_size)
 	hdr->ttbr1_el1		= __pa_symbol(swapper_pg_dir);
 	hdr->reenter_kernel	= _cpu_resume;
 
+	trace_android_vh_save_cpu_resume(&hdr->android_vendor_data1,
+						__pa(cpu_resume));
+
 	/* We can't use __hyp_get_vectors() because kvm may still be loaded */
 	if (el2_reset_needed())
 		hdr->__hyp_stub_vectors = __pa_symbol(__hyp_stub_vectors);
diff --git a/arch/arm64/kernel/hyp-stub.S b/arch/arm64/kernel/hyp-stub.S
index 2ee18c8..9439240 100644
--- a/arch/arm64/kernel/hyp-stub.S
+++ b/arch/arm64/kernel/hyp-stub.S
@@ -16,30 +16,6 @@
 #include <asm/ptrace.h>
 #include <asm/virt.h>
 
-// Warning, hardcoded register allocation
-// This will clobber x1 and x2, and expect x1 to contain
-// the id register value as read from the HW
-.macro __check_override idreg, fld, width, pass, fail
-	ubfx	x1, x1, #\fld, #\width
-	cbz	x1, \fail
-
-	adr_l	x1, \idreg\()_override
-	ldr	x2, [x1, FTR_OVR_VAL_OFFSET]
-	ldr	x1, [x1, FTR_OVR_MASK_OFFSET]
-	ubfx	x2, x2, #\fld, #\width
-	ubfx	x1, x1, #\fld, #\width
-	cmp	x1, xzr
-	and	x2, x2, x1
-	csinv	x2, x2, xzr, ne
-	cbnz	x2, \pass
-	b	\fail
-.endm
-
-.macro check_override idreg, fld, pass, fail
-	mrs	x1, \idreg\()_el1
-	__check_override \idreg \fld 4 \pass \fail
-.endm
-
 	.text
 	.pushsection	.hyp.text, "ax"
 
@@ -98,58 +74,7 @@
 SYM_CODE_END(elx_sync)
 
 SYM_CODE_START_LOCAL(__finalise_el2)
-	check_override id_aa64pfr0 ID_AA64PFR0_EL1_SVE_SHIFT .Linit_sve .Lskip_sve
-
-.Linit_sve:	/* SVE register access */
-	mrs	x0, cptr_el2			// Disable SVE traps
-	bic	x0, x0, #CPTR_EL2_TZ
-	msr	cptr_el2, x0
-	isb
-	mov	x1, #ZCR_ELx_LEN_MASK		// SVE: Enable full vector
-	msr_s	SYS_ZCR_EL2, x1			// length for EL1.
-
-.Lskip_sve:
-	check_override id_aa64pfr1 ID_AA64PFR1_EL1_SME_SHIFT .Linit_sme .Lskip_sme
-
-.Linit_sme:	/* SME register access and priority mapping */
-	mrs	x0, cptr_el2			// Disable SME traps
-	bic	x0, x0, #CPTR_EL2_TSM
-	msr	cptr_el2, x0
-	isb
-
-	mrs	x1, sctlr_el2
-	orr	x1, x1, #SCTLR_ELx_ENTP2	// Disable TPIDR2 traps
-	msr	sctlr_el2, x1
-	isb
-
-	mov	x0, #0				// SMCR controls
-
-	// Full FP in SM?
-	mrs_s	x1, SYS_ID_AA64SMFR0_EL1
-	__check_override id_aa64smfr0 ID_AA64SMFR0_EL1_FA64_SHIFT 1 .Linit_sme_fa64 .Lskip_sme_fa64
-
-.Linit_sme_fa64:
-	orr	x0, x0, SMCR_ELx_FA64_MASK
-.Lskip_sme_fa64:
-
-	orr	x0, x0, #SMCR_ELx_LEN_MASK	// Enable full SME vector
-	msr_s	SYS_SMCR_EL2, x0		// length for EL1.
-
-	mrs_s	x1, SYS_SMIDR_EL1		// Priority mapping supported?
-	ubfx    x1, x1, #SMIDR_EL1_SMPS_SHIFT, #1
-	cbz     x1, .Lskip_sme
-
-	msr_s	SYS_SMPRIMAP_EL2, xzr		// Make all priorities equal
-
-	mrs	x1, id_aa64mmfr1_el1		// HCRX_EL2 present?
-	ubfx	x1, x1, #ID_AA64MMFR1_EL1_HCX_SHIFT, #4
-	cbz	x1, .Lskip_sme
-
-	mrs_s	x1, SYS_HCRX_EL2
-	orr	x1, x1, #HCRX_EL2_SMPME_MASK	// Enable priority mapping
-	msr_s	SYS_HCRX_EL2, x1
-
-.Lskip_sme:
+	finalise_el2_state
 
 	// nVHE? No way! Give me the real thing!
 	// Sanity check: MMU *must* be off
@@ -157,7 +82,7 @@
 	tbnz	x1, #0, 1f
 
 	// Needs to be VHE capable, obviously
-	check_override id_aa64mmfr1 ID_AA64MMFR1_EL1_VH_SHIFT 2f 1f
+	check_override id_aa64mmfr1 ID_AA64MMFR1_EL1_VH_SHIFT 2f 1f x1 x2
 
 1:	mov_q	x0, HVC_STUB_ERR
 	eret
diff --git a/arch/arm64/kernel/idreg-override.c b/arch/arm64/kernel/idreg-override.c
index 9513376..1af3ac4 100644
--- a/arch/arm64/kernel/idreg-override.c
+++ b/arch/arm64/kernel/idreg-override.c
@@ -287,8 +287,11 @@ static __init void parse_cmdline(void)
 {
 	const u8 *prop = get_bootargs_cmdline();
 
-	if (IS_ENABLED(CONFIG_CMDLINE_FORCE) || !prop)
+	if (IS_ENABLED(CONFIG_CMDLINE_EXTEND) ||
+	    IS_ENABLED(CONFIG_CMDLINE_FORCE) ||
+	    !prop) {
 		__parse_cmdline(CONFIG_CMDLINE, true);
+	}
 
 	if (!IS_ENABLED(CONFIG_CMDLINE_FORCE) && prop)
 		__parse_cmdline(prop, true);
diff --git a/arch/arm64/kernel/image-vars.h b/arch/arm64/kernel/image-vars.h
index 8151412..1e57ebc 100644
--- a/arch/arm64/kernel/image-vars.h
+++ b/arch/arm64/kernel/image-vars.h
@@ -71,12 +71,6 @@ KVM_NVHE_ALIAS(nvhe_hyp_panic_handler);
 /* Vectors installed by hyp-init on reset HVC. */
 KVM_NVHE_ALIAS(__hyp_stub_vectors);
 
-/* Kernel symbol used by icache_is_vpipt(). */
-KVM_NVHE_ALIAS(__icache_flags);
-
-/* VMID bits set by the KVM VMID allocator */
-KVM_NVHE_ALIAS(kvm_arm_vmid_bits);
-
 /* Static keys which are set if a vGIC trap should be handled in hyp. */
 KVM_NVHE_ALIAS(vgic_v2_cpuif_trap);
 KVM_NVHE_ALIAS(vgic_v3_cpuif_trap);
@@ -92,9 +86,6 @@ KVM_NVHE_ALIAS(gic_nonsecure_priorities);
 KVM_NVHE_ALIAS(__start___kvm_ex_table);
 KVM_NVHE_ALIAS(__stop___kvm_ex_table);
 
-/* Array containing bases of nVHE per-CPU memory regions. */
-KVM_NVHE_ALIAS(kvm_arm_hyp_percpu_base);
-
 /* PMU available static key */
 #ifdef CONFIG_HW_PERF_EVENTS
 KVM_NVHE_ALIAS(kvm_arm_pmu_available);
@@ -111,12 +102,6 @@ KVM_NVHE_ALIAS_HYP(__memcpy, __pi_memcpy);
 KVM_NVHE_ALIAS_HYP(__memset, __pi_memset);
 #endif
 
-/* Kernel memory sections */
-KVM_NVHE_ALIAS(__start_rodata);
-KVM_NVHE_ALIAS(__end_rodata);
-KVM_NVHE_ALIAS(__bss_start);
-KVM_NVHE_ALIAS(__bss_stop);
-
 /* Hyp memory sections */
 KVM_NVHE_ALIAS(__hyp_idmap_text_start);
 KVM_NVHE_ALIAS(__hyp_idmap_text_end);
@@ -124,12 +109,22 @@ KVM_NVHE_ALIAS(__hyp_text_start);
 KVM_NVHE_ALIAS(__hyp_text_end);
 KVM_NVHE_ALIAS(__hyp_bss_start);
 KVM_NVHE_ALIAS(__hyp_bss_end);
+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
+KVM_NVHE_ALIAS(__hyp_event_ids_start);
+KVM_NVHE_ALIAS(__hyp_event_ids_end);
+#endif
 
 /* pKVM static key */
 KVM_NVHE_ALIAS(kvm_protected_mode_initialized);
 
+#ifdef CONFIG_ANDROID_ARM64_WORKAROUND_DMA_BEYOND_POC
+KVM_NVHE_ALIAS(pkvm_force_nc);
+#endif
+
 #endif /* CONFIG_KVM */
 
 #endif /* __ARM64_KERNEL_IMAGE_VARS_H */
diff --git a/arch/arm64/kernel/irq.c b/arch/arm64/kernel/irq.c
index 38dbd38..9d8eaab 100644
--- a/arch/arm64/kernel/irq.c
+++ b/arch/arm64/kernel/irq.c
@@ -41,7 +41,7 @@ static void init_irq_scs(void)
 {
 	int cpu;
 
-	if (!IS_ENABLED(CONFIG_SHADOW_CALL_STACK))
+	if (!scs_is_enabled())
 		return;
 
 	for_each_possible_cpu(cpu)
diff --git a/arch/arm64/kernel/module.c b/arch/arm64/kernel/module.c
index 76b41e4..b059333 100644
--- a/arch/arm64/kernel/module.c
+++ b/arch/arm64/kernel/module.c
@@ -15,9 +15,11 @@
 #include <linux/kernel.h>
 #include <linux/mm.h>
 #include <linux/moduleloader.h>
+#include <linux/scs.h>
 #include <linux/vmalloc.h>
 #include <asm/alternative.h>
 #include <asm/insn.h>
+#include <asm/scs.h>
 #include <asm/sections.h>
 
 void *module_alloc(unsigned long size)
@@ -505,14 +507,79 @@ static int module_init_ftrace_plt(const Elf_Ehdr *hdr,
 	return 0;
 }
 
+static int module_init_hyp(const Elf_Ehdr *hdr, const Elf_Shdr *sechdrs,
+			   struct module *mod)
+{
+#ifdef CONFIG_KVM
+	const Elf_Shdr *s;
+
+	/*
+	 * If the .hyp.text is missing or empty, this is not a hypervisor
+	 * module so ignore the rest of it.
+	 */
+	s = find_section(hdr, sechdrs, ".hyp.text");
+	if (!s || !s->sh_size)
+		return 0;
+
+	mod->arch.hyp.text = (struct pkvm_module_section) {
+		.start	= (void *)s->sh_addr,
+		.end	= (void *)s->sh_addr + s->sh_size,
+	};
+
+	s = find_section(hdr, sechdrs, ".hyp.reloc");
+	if (!s)
+		return -ENOEXEC;
+
+	mod->arch.hyp.relocs = (void *)s->sh_addr;
+	mod->arch.hyp.nr_relocs = s->sh_size / sizeof(*mod->arch.hyp.relocs);
+
+	s = find_section(hdr, sechdrs, ".hyp.bss");
+	if (s && s->sh_size) {
+		mod->arch.hyp.bss = (struct pkvm_module_section) {
+			.start	= (void *)s->sh_addr,
+			.end	= (void *)s->sh_addr + s->sh_size,
+		};
+	}
+
+	s = find_section(hdr, sechdrs, ".hyp.rodata");
+	if (s && s->sh_size) {
+		mod->arch.hyp.rodata = (struct pkvm_module_section) {
+			.start	= (void *)s->sh_addr,
+			.end	= (void *)s->sh_addr + s->sh_size,
+		};
+	}
+
+	s = find_section(hdr, sechdrs, ".hyp.data");
+	if (s && s->sh_size) {
+		mod->arch.hyp.data = (struct pkvm_module_section) {
+			.start	= (void *)s->sh_addr,
+			.end	= (void *)s->sh_addr + s->sh_size,
+		};
+	}
+#endif
+	return 0;
+}
+
 int module_finalize(const Elf_Ehdr *hdr,
 		    const Elf_Shdr *sechdrs,
 		    struct module *me)
 {
+	int err;
 	const Elf_Shdr *s;
+
 	s = find_section(hdr, sechdrs, ".altinstructions");
 	if (s)
 		apply_alternatives_module((void *)s->sh_addr, s->sh_size);
 
-	return module_init_ftrace_plt(hdr, sechdrs, me);
+	if (scs_is_dynamic()) {
+		s = find_section(hdr, sechdrs, ".init.eh_frame");
+		if (s)
+			scs_patch((void *)s->sh_addr, s->sh_size);
+	}
+
+	err = module_init_ftrace_plt(hdr, sechdrs, me);
+	if (err)
+		return err;
+
+	return module_init_hyp(hdr, sechdrs, me);
 }
diff --git a/arch/arm64/kernel/mte.c b/arch/arm64/kernel/mte.c
index e20af03..9f3e68b 100644
--- a/arch/arm64/kernel/mte.c
+++ b/arch/arm64/kernel/mte.c
@@ -35,47 +35,18 @@ DEFINE_STATIC_KEY_FALSE(mte_async_or_asymm_mode);
 EXPORT_SYMBOL_GPL(mte_async_or_asymm_mode);
 #endif
 
-static void mte_sync_page_tags(struct page *page, pte_t old_pte,
-			       bool check_swap, bool pte_is_tagged)
-{
-	if (check_swap && is_swap_pte(old_pte)) {
-		swp_entry_t entry = pte_to_swp_entry(old_pte);
-
-		if (!non_swap_entry(entry) && mte_restore_tags(entry, page)) {
-			set_page_mte_tagged(page);
-			return;
-		}
-	}
-
-	if (!pte_is_tagged)
-		return;
-
-	/*
-	 * Test PG_mte_tagged again in case it was racing with another
-	 * set_pte_at().
-	 */
-	if (!page_mte_tagged(page)) {
-		mte_clear_page_tags(page_address(page));
-		set_page_mte_tagged(page);
-	}
-}
-
-void mte_sync_tags(pte_t old_pte, pte_t pte)
+void mte_sync_tags(pte_t pte)
 {
 	struct page *page = pte_page(pte);
 	long i, nr_pages = compound_nr(page);
-	bool check_swap = nr_pages == 1;
-	bool pte_is_tagged = pte_tagged(pte);
-
-	/* Early out if there's nothing to do */
-	if (!check_swap && !pte_is_tagged)
-		return;
 
 	/* if PG_mte_tagged is set, tags have already been initialised */
-	for (i = 0; i < nr_pages; i++, page++)
-		if (!page_mte_tagged(page))
-			mte_sync_page_tags(page, old_pte, check_swap,
-					   pte_is_tagged);
+	for (i = 0; i < nr_pages; i++, page++) {
+		if (!page_mte_tagged(page)) {
+			mte_clear_page_tags(page_address(page));
+			set_page_mte_tagged(page);
+		}
+	}
 
 	/* ensure the tags are visible before the PTE is set */
 	smp_wmb();
diff --git a/arch/arm64/kernel/patch-scs.c b/arch/arm64/kernel/patch-scs.c
new file mode 100644
index 0000000..1b3da02
--- /dev/null
+++ b/arch/arm64/kernel/patch-scs.c
@@ -0,0 +1,257 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (C) 2022 - Google LLC
+ * Author: Ard Biesheuvel <ardb@google.com>
+ */
+
+#include <linux/bug.h>
+#include <linux/errno.h>
+#include <linux/init.h>
+#include <linux/linkage.h>
+#include <linux/printk.h>
+#include <linux/types.h>
+
+#include <asm/cacheflush.h>
+#include <asm/scs.h>
+
+//
+// This minimal DWARF CFI parser is partially based on the code in
+// arch/arc/kernel/unwind.c, and on the document below:
+// https://refspecs.linuxbase.org/LSB_4.0.0/LSB-Core-generic/LSB-Core-generic/ehframechpt.html
+//
+
+#define DW_CFA_nop                          0x00
+#define DW_CFA_set_loc                      0x01
+#define DW_CFA_advance_loc1                 0x02
+#define DW_CFA_advance_loc2                 0x03
+#define DW_CFA_advance_loc4                 0x04
+#define DW_CFA_offset_extended              0x05
+#define DW_CFA_restore_extended             0x06
+#define DW_CFA_undefined                    0x07
+#define DW_CFA_same_value                   0x08
+#define DW_CFA_register                     0x09
+#define DW_CFA_remember_state               0x0a
+#define DW_CFA_restore_state                0x0b
+#define DW_CFA_def_cfa                      0x0c
+#define DW_CFA_def_cfa_register             0x0d
+#define DW_CFA_def_cfa_offset               0x0e
+#define DW_CFA_def_cfa_expression           0x0f
+#define DW_CFA_expression                   0x10
+#define DW_CFA_offset_extended_sf           0x11
+#define DW_CFA_def_cfa_sf                   0x12
+#define DW_CFA_def_cfa_offset_sf            0x13
+#define DW_CFA_val_offset                   0x14
+#define DW_CFA_val_offset_sf                0x15
+#define DW_CFA_val_expression               0x16
+#define DW_CFA_lo_user                      0x1c
+#define DW_CFA_negate_ra_state              0x2d
+#define DW_CFA_GNU_args_size                0x2e
+#define DW_CFA_GNU_negative_offset_extended 0x2f
+#define DW_CFA_hi_user                      0x3f
+
+extern const u8 __eh_frame_start[], __eh_frame_end[];
+
+enum {
+	PACIASP		= 0xd503233f,
+	AUTIASP		= 0xd50323bf,
+	SCS_PUSH	= 0xf800865e,
+	SCS_POP		= 0xf85f8e5e,
+};
+
+static void __always_inline scs_patch_loc(u64 loc)
+{
+	u32 insn = le32_to_cpup((void *)loc);
+
+	switch (insn) {
+	case PACIASP:
+		*(u32 *)loc = cpu_to_le32(SCS_PUSH);
+		break;
+	case AUTIASP:
+		*(u32 *)loc = cpu_to_le32(SCS_POP);
+		break;
+	default:
+		/*
+		 * While the DW_CFA_negate_ra_state directive is guaranteed to
+		 * appear right after a PACIASP/AUTIASP instruction, it may
+		 * also appear after a DW_CFA_restore_state directive that
+		 * restores a state that is only partially accurate, and is
+		 * followed by DW_CFA_negate_ra_state directive to toggle the
+		 * PAC bit again. So we permit other instructions here, and ignore
+		 * them.
+		 */
+		return;
+	}
+	dcache_clean_pou(loc, loc + sizeof(u32));
+}
+
+/*
+ * Skip one uleb128/sleb128 encoded quantity from the opcode stream. All bytes
+ * except the last one have bit #7 set.
+ */
+static int __always_inline skip_xleb128(const u8 **opcode, int size)
+{
+	u8 c;
+
+	do {
+		c = *(*opcode)++;
+		size--;
+	} while (c & BIT(7));
+
+	return size;
+}
+
+struct eh_frame {
+	/*
+	 * The size of this frame if 0 < size < U32_MAX, 0 terminates the list.
+	 */
+	u32	size;
+
+	/*
+	 * The first frame is a Common Information Entry (CIE) frame, followed
+	 * by one or more Frame Description Entry (FDE) frames. In the former
+	 * case, this field is 0, otherwise it is the negated offset relative
+	 * to the associated CIE frame.
+	 */
+	u32	cie_id_or_pointer;
+
+	union {
+		struct { // CIE
+			u8	version;
+			u8	augmentation_string[];
+		};
+
+		struct { // FDE
+			s32	initial_loc;
+			s32	range;
+			u8	opcodes[];
+		};
+	};
+};
+
+static int noinstr scs_handle_fde_frame(const struct eh_frame *frame,
+					bool fde_has_augmentation_data,
+					int code_alignment_factor)
+{
+	int size = frame->size - offsetof(struct eh_frame, opcodes) + 4;
+	u64 loc = (u64)offset_to_ptr(&frame->initial_loc);
+	const u8 *opcode = frame->opcodes;
+
+	if (fde_has_augmentation_data) {
+		int l;
+
+		// assume single byte uleb128_t
+		if (WARN_ON(*opcode & BIT(7)))
+			return -ENOEXEC;
+
+		l = *opcode++;
+		opcode += l;
+		size -= l + 1;
+	}
+
+	/*
+	 * Starting from 'loc', apply the CFA opcodes that advance the location
+	 * pointer, and identify the locations of the PAC instructions.
+	 */
+	while (size-- > 0) {
+		switch (*opcode++) {
+		case DW_CFA_nop:
+		case DW_CFA_remember_state:
+		case DW_CFA_restore_state:
+			break;
+
+		case DW_CFA_advance_loc1:
+			loc += *opcode++ * code_alignment_factor;
+			size--;
+			break;
+
+		case DW_CFA_advance_loc2:
+			loc += *opcode++ * code_alignment_factor;
+			loc += (*opcode++ << 8) * code_alignment_factor;
+			size -= 2;
+			break;
+
+		case DW_CFA_def_cfa:
+		case DW_CFA_offset_extended:
+			size = skip_xleb128(&opcode, size);
+			fallthrough;
+		case DW_CFA_def_cfa_offset:
+		case DW_CFA_def_cfa_offset_sf:
+		case DW_CFA_def_cfa_register:
+		case DW_CFA_same_value:
+		case DW_CFA_restore_extended:
+		case 0x80 ... 0xbf:
+			size = skip_xleb128(&opcode, size);
+			break;
+
+		case DW_CFA_negate_ra_state:
+			scs_patch_loc(loc - 4);
+			break;
+
+		case 0x40 ... 0x7f:
+			// advance loc
+			loc += (opcode[-1] & 0x3f) * code_alignment_factor;
+			break;
+
+		case 0xc0 ... 0xff:
+			break;
+
+		default:
+			pr_err("unhandled opcode: %02x in FDE frame %lx\n", opcode[-1], (uintptr_t)frame);
+			return -ENOEXEC;
+		}
+	}
+	return 0;
+}
+
+int noinstr scs_patch(const u8 eh_frame[], int size)
+{
+	const u8 *p = eh_frame;
+
+	while (size > 4) {
+		const struct eh_frame *frame = (const void *)p;
+		bool fde_has_augmentation_data = true;
+		int code_alignment_factor = 1;
+		int ret;
+
+		if (frame->size == 0 ||
+		    frame->size == U32_MAX ||
+		    frame->size > size)
+			break;
+
+		if (frame->cie_id_or_pointer == 0) {
+			const u8 *p = frame->augmentation_string;
+
+			/* a 'z' in the augmentation string must come first */
+			fde_has_augmentation_data = *p == 'z';
+
+			/*
+			 * The code alignment factor is a uleb128 encoded field
+			 * but given that the only sensible values are 1 or 4,
+			 * there is no point in decoding the whole thing.
+			 */
+			p += strlen(p) + 1;
+			if (!WARN_ON(*p & BIT(7)))
+				code_alignment_factor = *p;
+		} else {
+			ret = scs_handle_fde_frame(frame,
+						   fde_has_augmentation_data,
+						   code_alignment_factor);
+			if (ret)
+				return ret;
+		}
+
+		p += sizeof(frame->size) + frame->size;
+		size -= sizeof(frame->size) + frame->size;
+	}
+	return 0;
+}
+
+asmlinkage void __init scs_patch_vmlinux(void)
+{
+	if (!should_patch_pac_into_scs())
+		return;
+
+	WARN_ON(scs_patch(__eh_frame_start, __eh_frame_end - __eh_frame_start));
+	icache_inval_all_pou();
+	isb();
+}
diff --git a/arch/arm64/kernel/patching.c b/arch/arm64/kernel/patching.c
index 33e0fab..b336073 100644
--- a/arch/arm64/kernel/patching.c
+++ b/arch/arm64/kernel/patching.c
@@ -66,16 +66,16 @@ int __kprobes aarch64_insn_read(void *addr, u32 *insnp)
 	return ret;
 }
 
-static int __kprobes __aarch64_insn_write(void *addr, __le32 insn)
+static int __kprobes __aarch64_text_write(void *dst, void *src, size_t size)
 {
-	void *waddr = addr;
-	unsigned long flags = 0;
+	unsigned long flags;
+	void *waddr;
 	int ret;
 
 	raw_spin_lock_irqsave(&patch_lock, flags);
-	waddr = patch_map(addr, FIX_TEXT_POKE0);
+	waddr = patch_map(dst, FIX_TEXT_POKE0);
 
-	ret = copy_to_kernel_nofault(waddr, &insn, AARCH64_INSN_SIZE);
+	ret = copy_to_kernel_nofault(waddr, src, size);
 
 	patch_unmap(FIX_TEXT_POKE0);
 	raw_spin_unlock_irqrestore(&patch_lock, flags);
@@ -85,7 +85,14 @@ static int __kprobes __aarch64_insn_write(void *addr, __le32 insn)
 
 int __kprobes aarch64_insn_write(void *addr, u32 insn)
 {
-	return __aarch64_insn_write(addr, cpu_to_le32(insn));
+	__le32 __insn = cpu_to_le32(insn);
+
+	return __aarch64_text_write(addr, &__insn, AARCH64_INSN_SIZE);
+}
+
+int __kprobes aarch64_addr_write(void *addr, u64 dst)
+{
+	return __aarch64_text_write(addr, &dst, sizeof(dst));
 }
 
 int __kprobes aarch64_insn_patch_text_nosync(void *addr, u32 insn)
diff --git a/arch/arm64/kernel/pi/Makefile b/arch/arm64/kernel/pi/Makefile
index 8392914..4c0ea3c 100644
--- a/arch/arm64/kernel/pi/Makefile
+++ b/arch/arm64/kernel/pi/Makefile
@@ -7,6 +7,7 @@
 		   -I$(srctree)/scripts/dtc/libfdt -fno-stack-protector \
 		   -include $(srctree)/include/linux/hidden.h \
 		   -D__DISABLE_EXPORTS -ffreestanding -D__NO_FORTIFY \
+		   -fno-asynchronous-unwind-tables -fno-unwind-tables \
 		   $(call cc-option,-fno-addrsig)
 
 # remove SCS flags from all objects in this directory
diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c
index 044a7d7..013e456 100644
--- a/arch/arm64/kernel/process.c
+++ b/arch/arm64/kernel/process.c
@@ -41,6 +41,8 @@
 #include <linux/thread_info.h>
 #include <linux/prctl.h>
 #include <linux/stacktrace.h>
+#include <trace/hooks/fpsimd.h>
+#include <trace/hooks/mpam.h>
 
 #include <asm/alternative.h>
 #include <asm/compat.h>
@@ -245,6 +247,7 @@ void show_regs(struct pt_regs *regs)
 	__show_regs(regs);
 	dump_backtrace(regs, NULL, KERN_DEFAULT);
 }
+EXPORT_SYMBOL_GPL(show_regs);
 
 static void tls_thread_flush(void)
 {
@@ -532,6 +535,12 @@ struct task_struct *__switch_to(struct task_struct *prev,
 	ptrauth_thread_switch_user(next);
 
 	/*
+	 *  vendor hook is needed before the dsb(),
+	 *  because MPAM is related to cache maintenance.
+	 */
+	trace_android_vh_mpam_set(prev, next);
+
+	/*
 	 * Complete any pending TLB or cache maintenance on this CPU in case
 	 * the thread migrates to a different CPU.
 	 * This full barrier is also required by the membarrier system
@@ -549,6 +558,8 @@ struct task_struct *__switch_to(struct task_struct *prev,
 	if (prev->thread.sctlr_user != next->thread.sctlr_user)
 		update_sctlr_el1(next->thread.sctlr_user);
 
+	trace_android_vh_is_fpsimd_save(prev, next);
+
 	/* the actual thread switch */
 	last = cpu_switch_to(prev, next);
 
@@ -587,6 +598,7 @@ unsigned long __get_wchan(struct task_struct *p)
 
 	return wchan_info.pc;
 }
+EXPORT_SYMBOL_GPL(get_wchan);
 
 unsigned long arch_align_stack(unsigned long sp)
 {
diff --git a/arch/arm64/kernel/sdei.c b/arch/arm64/kernel/sdei.c
index d56e170..830be01 100644
--- a/arch/arm64/kernel/sdei.c
+++ b/arch/arm64/kernel/sdei.c
@@ -144,7 +144,7 @@ static int init_sdei_scs(void)
 	int cpu;
 	int err = 0;
 
-	if (!IS_ENABLED(CONFIG_SHADOW_CALL_STACK))
+	if (!scs_is_enabled())
 		return 0;
 
 	for_each_possible_cpu(cpu) {
diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c
index fea3223..a0bc75b 100644
--- a/arch/arm64/kernel/setup.c
+++ b/arch/arm64/kernel/setup.c
@@ -30,6 +30,7 @@
 #include <linux/efi.h>
 #include <linux/psci.h>
 #include <linux/sched/task.h>
+#include <linux/scs.h>
 #include <linux/mm.h>
 
 #include <asm/acpi.h>
@@ -40,8 +41,10 @@
 #include <asm/elf.h>
 #include <asm/cpufeature.h>
 #include <asm/cpu_ops.h>
+#include <asm/hypervisor.h>
 #include <asm/kasan.h>
 #include <asm/numa.h>
+#include <asm/scs.h>
 #include <asm/sections.h>
 #include <asm/setup.h>
 #include <asm/smp_plat.h>
@@ -49,6 +52,7 @@
 #include <asm/tlbflush.h>
 #include <asm/traps.h>
 #include <asm/efi.h>
+#include <asm/hypervisor.h>
 #include <asm/xen/hypervisor.h>
 #include <asm/mmu_context.h>
 
@@ -312,6 +316,8 @@ void __init __no_sanitize_address setup_arch(char **cmdline_p)
 	jump_label_init();
 	parse_early_param();
 
+	dynamic_scs_init();
+
 	/*
 	 * Unmask asynchronous aborts and fiq after bringing up possible
 	 * earlycon. (Report possible System Errors once we can report this
@@ -438,3 +444,10 @@ static int __init register_arm64_panic_block(void)
 	return 0;
 }
 device_initcall(register_arm64_panic_block);
+
+void kvm_arm_init_hyp_services(void)
+{
+	kvm_init_ioremap_services();
+	kvm_init_memshare_services();
+	kvm_init_memrelinquish_services();
+}
diff --git a/arch/arm64/kernel/smp.c b/arch/arm64/kernel/smp.c
index ffc5d76..de8dcba 100644
--- a/arch/arm64/kernel/smp.c
+++ b/arch/arm64/kernel/smp.c
@@ -53,9 +53,14 @@
 
 #define CREATE_TRACE_POINTS
 #include <trace/events/ipi.h>
+#undef CREATE_TRACE_POINTS
+#include <trace/hooks/debug.h>
 
 DEFINE_PER_CPU_READ_MOSTLY(int, cpu_number);
 EXPORT_PER_CPU_SYMBOL(cpu_number);
+EXPORT_TRACEPOINT_SYMBOL_GPL(ipi_raise);
+EXPORT_TRACEPOINT_SYMBOL_GPL(ipi_entry);
+EXPORT_TRACEPOINT_SYMBOL_GPL(ipi_exit);
 
 /*
  * as from 2.5, kernels no longer have an init_tasks structure
@@ -877,6 +882,7 @@ static void do_handle_IPI(int ipinr)
 		break;
 
 	case IPI_CPU_STOP:
+		trace_android_vh_ipi_stop(get_irq_regs());
 		local_cpu_stop();
 		break;
 
@@ -1097,3 +1103,15 @@ bool cpus_are_stuck_in_kernel(void)
 	return !!cpus_stuck_in_kernel || smp_spin_tables ||
 		is_protected_kvm_enabled();
 }
+
+int nr_ipi_get(void)
+{
+	return nr_ipi;
+}
+EXPORT_SYMBOL_GPL(nr_ipi_get);
+
+struct irq_desc **ipi_desc_get(void)
+{
+	return ipi_desc;
+}
+EXPORT_SYMBOL_GPL(ipi_desc_get);
diff --git a/arch/arm64/kernel/stacktrace.c b/arch/arm64/kernel/stacktrace.c
index 8315430..1fc70bc 100644
--- a/arch/arm64/kernel/stacktrace.c
+++ b/arch/arm64/kernel/stacktrace.c
@@ -159,6 +159,7 @@ void dump_backtrace(struct pt_regs *regs, struct task_struct *tsk,
 
 	put_task_stack(tsk);
 }
+EXPORT_SYMBOL_GPL(dump_backtrace);
 
 void show_stack(struct task_struct *tsk, unsigned long *sp, const char *loglvl)
 {
diff --git a/arch/arm64/kernel/traps.c b/arch/arm64/kernel/traps.c
index 23d281e..23e8822 100644
--- a/arch/arm64/kernel/traps.c
+++ b/arch/arm64/kernel/traps.c
@@ -46,6 +46,8 @@
 #include <asm/system_misc.h>
 #include <asm/sysreg.h>
 
+#include <trace/hooks/traps.h>
+
 static bool __kprobes __check_eq(unsigned long pstate)
 {
 	return (pstate & PSR_Z_BIT) != 0;
@@ -495,6 +497,7 @@ void do_undefinstr(struct pt_regs *regs, unsigned long esr)
 	if (call_undef_hook(regs) == 0)
 		return;
 
+	trace_android_rvh_do_undefinstr(regs, esr);
 	if (!user_mode(regs))
 		die("Oops - Undefined instruction", regs, esr);
 
@@ -509,6 +512,7 @@ void do_el0_bti(struct pt_regs *regs)
 
 void do_el1_bti(struct pt_regs *regs, unsigned long esr)
 {
+	trace_android_rvh_do_el1_bti(regs, esr);
 	die("Oops - BTI", regs, esr);
 }
 NOKPROBE_SYMBOL(do_el1_bti);
@@ -524,6 +528,7 @@ void do_el1_fpac(struct pt_regs *regs, unsigned long esr)
 	 * Unexpected FPAC exception in the kernel: kill the task before it
 	 * does any more harm.
 	 */
+	trace_android_rvh_do_el1_fpac(regs, esr);
 	die("Oops - FPAC", regs, esr);
 }
 NOKPROBE_SYMBOL(do_el1_fpac)
@@ -915,6 +920,8 @@ void __noreturn arm64_serror_panic(struct pt_regs *regs, unsigned long esr)
 
 	pr_crit("SError Interrupt on CPU%d, code 0x%016lx -- %s\n",
 		smp_processor_id(), esr, esr_get_class_string(esr));
+
+	trace_android_rvh_arm64_serror_panic(regs, esr);
 	if (regs)
 		__show_regs(regs);
 
@@ -1013,7 +1020,7 @@ static int cfi_handler(struct pt_regs *regs, unsigned long esr)
 
 	switch (report_cfi_failure(regs, regs->pc, &target, type)) {
 	case BUG_TRAP_TYPE_BUG:
-		die("Oops - CFI", regs, 0);
+		die("Oops - CFI", regs, esr);
 		break;
 
 	case BUG_TRAP_TYPE_WARN:
diff --git a/arch/arm64/kernel/vmlinux.lds.S b/arch/arm64/kernel/vmlinux.lds.S
index 45131e3..b38ad53 100644
--- a/arch/arm64/kernel/vmlinux.lds.S
+++ b/arch/arm64/kernel/vmlinux.lds.S
@@ -13,16 +13,36 @@
 	*(__kvm_ex_table)					\
 	__stop___kvm_ex_table = .;
 
-#define HYPERVISOR_DATA_SECTIONS				\
+#ifdef CONFIG_TRACING
+#define HYPERVISOR_EVENT_IDS 					\
+	. = ALIGN(PAGE_SIZE);					\
+	__hyp_event_ids_start = .;				\
+	*(HYP_SECTION_NAME(.event_ids))				\
+	__hyp_event_ids_end = .;
+#else
+#define HYPERVISOR_EVENT_IDS
+#endif
+
+#define HYPERVISOR_RODATA_SECTIONS				\
 	HYP_SECTION_NAME(.rodata) : {				\
 		. = ALIGN(PAGE_SIZE);				\
 		__hyp_rodata_start = .;				\
 		*(HYP_SECTION_NAME(.data..ro_after_init))	\
 		*(HYP_SECTION_NAME(.rodata))			\
+		HYPERVISOR_EVENT_IDS				\
 		. = ALIGN(PAGE_SIZE);				\
 		__hyp_rodata_end = .;				\
 	}
 
+#define HYPERVISOR_DATA_SECTION					\
+	HYP_SECTION_NAME(.data) : {				\
+		. = ALIGN(PAGE_SIZE);				\
+		__hyp_data_start = .;				\
+		*(HYP_SECTION_NAME(.data))			\
+		. = ALIGN(PAGE_SIZE);				\
+		__hyp_data_end = .;				\
+	}
+
 #define HYPERVISOR_PERCPU_SECTION				\
 	. = ALIGN(PAGE_SIZE);					\
 	HYP_SECTION_NAME(.data..percpu) : {			\
@@ -51,9 +71,11 @@
 #define SBSS_ALIGN			PAGE_SIZE
 #else /* CONFIG_KVM */
 #define HYPERVISOR_EXTABLE
-#define HYPERVISOR_DATA_SECTIONS
+#define HYPERVISOR_RODATA_SECTIONS
+#define HYPERVISOR_DATA_SECTION
 #define HYPERVISOR_PERCPU_SECTION
 #define HYPERVISOR_RELOC_SECTION
+#define HYPERVISOR_EVENTS
 #define SBSS_ALIGN			0
 #endif
 
@@ -121,6 +143,17 @@
 #define TRAMP_TEXT
 #endif
 
+#ifdef CONFIG_UNWIND_TABLES
+#define UNWIND_DATA_SECTIONS				\
+	.eh_frame : {					\
+		__eh_frame_start = .;			\
+		*(.eh_frame)				\
+		__eh_frame_end = .;			\
+	}
+#else
+#define UNWIND_DATA_SECTIONS
+#endif
+
 /*
  * The size of the PE/COFF section that covers the kernel image, which
  * runs from _stext to _edata, must be a round multiple of the PE/COFF
@@ -188,7 +221,15 @@
 	/* everything from this point to __init_begin will be marked RO NX */
 	RO_DATA(PAGE_SIZE)
 
-	HYPERVISOR_DATA_SECTIONS
+	HYPERVISOR_RODATA_SECTIONS
+
+#ifdef CONFIG_TRACING
+	.rodata.hyp_events : {
+		__hyp_events_start = .;
+		*(_hyp_events)
+		__hyp_events_end = .;
+	}
+#endif
 
 	/* code sections that are never executed via the kernel mapping */
 	.rodata.text : {
@@ -231,6 +272,8 @@
 		__alt_instructions_end = .;
 	}
 
+	UNWIND_DATA_SECTIONS
+
 	. = ALIGN(SEGMENT_ALIGN);
 	__inittext_end = .;
 	__initdata_begin = .;
@@ -276,6 +319,8 @@
 	_sdata = .;
 	RW_DATA(L1_CACHE_BYTES, PAGE_SIZE, THREAD_ALIGN)
 
+	HYPERVISOR_DATA_SECTION
+
 	/*
 	 * Data written with the MMU off but read with the MMU on requires
 	 * cache lines to be invalidated, discarding up to a Cache Writeback
diff --git a/arch/arm64/kvm/Kconfig b/arch/arm64/kvm/Kconfig
index 815cc11..a3853eb 100644
--- a/arch/arm64/kvm/Kconfig
+++ b/arch/arm64/kvm/Kconfig
@@ -69,4 +69,11 @@
 
 	  If unsure, or not using protected nVHE (pKVM), say N.
 
+config PKVM_MODULE_PATH
+	string "Path to pKVM modules"
+	default ""
+	help
+	  Directory where the pKVM modules are found. If empty, the modules
+	  will be searched into the default path /lib/modules/<uname>.
+
 endif # VIRTUALIZATION
diff --git a/arch/arm64/kvm/Makefile b/arch/arm64/kvm/Makefile
index 5e33c2d..d215f3d 100644
--- a/arch/arm64/kvm/Makefile
+++ b/arch/arm64/kvm/Makefile
@@ -14,7 +14,7 @@
 	 inject_fault.o va_layout.o handle_exit.o \
 	 guest.o debug.o reset.o sys_regs.o stacktrace.o \
 	 vgic-sys-reg-v3.o fpsimd.o pkvm.o \
-	 arch_timer.o trng.o vmid.o \
+	 arch_timer.o trng.o vmid.o iommu.o \
 	 vgic/vgic.o vgic/vgic-init.o \
 	 vgic/vgic-irqfd.o vgic/vgic-v2.o \
 	 vgic/vgic-v3.o vgic/vgic-v4.o \
@@ -23,6 +23,9 @@
 	 vgic/vgic-its.o vgic/vgic-debug.o
 
 kvm-$(CONFIG_HW_PERF_EVENTS)  += pmu-emul.o pmu.o
+kvm-$(CONFIG_ANDROID_ARM64_WORKAROUND_DMA_BEYOND_POC) += android_erratum_pgtable.o
+
+kvm-$(CONFIG_TRACING) += hyp_events.o hyp_trace.o
 
 always-y := hyp_constants.h hyp-constants.s
 
diff --git a/arch/arm64/kvm/android_erratum_pgtable.c b/arch/arm64/kvm/android_erratum_pgtable.c
new file mode 100644
index 0000000..301f24e
--- /dev/null
+++ b/arch/arm64/kvm/android_erratum_pgtable.c
@@ -0,0 +1,108 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2023 - Google LLC
+ * Author: Will Deacon <willdeacon@google.com>
+ */
+#include <asm/kvm_host.h>
+#include <asm/pgtable.h>
+
+#include <linux/init.h>
+#include <linux/jump_label.h>
+#include <linux/memblock.h>
+
+DEFINE_STATIC_KEY_FALSE(pkvm_force_nc);
+static int __init early_pkvm_force_nc_cfg(char *arg)
+{
+	static_branch_enable(&pkvm_force_nc);
+	return 0;
+}
+early_param("kvm-arm.force_nc", early_pkvm_force_nc_cfg);
+
+/*
+ * Update the stage-2 memory attributes (cacheability) for a page, usually
+ * in response to mapping or unmapping a normal non-cacheable region at stage-1.
+ *
+ * If 'force_nc' is set, the stage-2 entry is immediately made non-cacheable
+ * (and cleaned+invalidated to the PoC) otherwise the entry is unmapped and the
+ * cacheability determined based on the stage-1 attribute of the next access
+ * (with no cache maintenance being performed).
+ */
+struct pkvm_host_nc_region {
+	phys_addr_t	start;
+	phys_addr_t	end;
+};
+
+#define PKVM_HOST_MAX_EARLY_NC_REGIONS	8
+static struct pkvm_host_nc_region
+pkvm_host_early_nc_regions[PKVM_HOST_MAX_EARLY_NC_REGIONS];
+
+static void pkvm_host_track_early_nc_mapping(phys_addr_t addr)
+{
+	static int idx /*= 0*/;
+	struct pkvm_host_nc_region *reg = &pkvm_host_early_nc_regions[idx];
+
+	if (reg->start == reg->end) {
+		reg->start = addr;
+	} else if (reg->end != addr) {
+		if (WARN_ON(idx == PKVM_HOST_MAX_EARLY_NC_REGIONS - 1))
+			return;
+
+		reg = &pkvm_host_early_nc_regions[++idx];
+		reg->start = addr;
+	}
+
+	reg->end = addr + PAGE_SIZE;
+}
+
+void pkvm_host_set_stage2_memattr(phys_addr_t addr, bool force_nc)
+{
+	int err;
+
+	if (kvm_get_mode() != KVM_MODE_PROTECTED)
+		return;
+
+	/*
+	 * Non-memory regions or carveouts marked as "no-map" are handled
+	 * entirely by their corresponding driver, which should avoid the
+	 * creation of a cacheable alias in the first place.
+	 */
+	if (!memblock_is_map_memory(addr))
+		return;
+
+	if (!is_pkvm_initialized()) {
+		if (!WARN_ON_ONCE(!force_nc))
+			pkvm_host_track_early_nc_mapping(addr);
+		return;
+	}
+
+	err = kvm_call_hyp_nvhe(__pkvm_host_set_stage2_memattr, addr, force_nc);
+	WARN_ON(err && err != -EAGAIN);
+}
+EXPORT_SYMBOL_GPL(pkvm_host_set_stage2_memattr);
+
+int __init pkvm_register_early_nc_mappings(void)
+{
+	int i;
+
+	if (!is_pkvm_initialized())
+		return 0;
+
+	for (i = 0; i < PKVM_HOST_MAX_EARLY_NC_REGIONS; ++i) {
+		struct pkvm_host_nc_region *reg = &pkvm_host_early_nc_regions[i];
+
+		if (reg->start == reg->end)
+			return 0;
+
+		while (reg->start != reg->end) {
+			int err;
+
+			err = kvm_call_hyp_nvhe(__pkvm_host_set_stage2_memattr, reg->start, true);
+			if (err)
+				return err;
+
+			reg->start += PAGE_SIZE;
+		}
+	}
+
+	return 0;
+}
diff --git a/arch/arm64/kvm/arch_timer.c b/arch/arm64/kvm/arch_timer.c
index bb24a76..3c7096c 100644
--- a/arch/arm64/kvm/arch_timer.c
+++ b/arch/arm64/kvm/arch_timer.c
@@ -88,7 +88,9 @@ static u64 timer_get_offset(struct arch_timer_context *ctxt)
 
 	switch(arch_timer_ctx_index(ctxt)) {
 	case TIMER_VTIMER:
-		return __vcpu_sys_reg(vcpu, CNTVOFF_EL2);
+		if (likely(!kvm_vm_is_protected(vcpu->kvm)))
+			return __vcpu_sys_reg(vcpu, CNTVOFF_EL2);
+		fallthrough;
 	default:
 		return 0;
 	}
@@ -768,6 +770,9 @@ static void update_vtimer_cntvoff(struct kvm_vcpu *vcpu, u64 cntvoff)
 	struct kvm *kvm = vcpu->kvm;
 	struct kvm_vcpu *tmp;
 
+	if (unlikely(kvm_vm_is_protected(vcpu->kvm)))
+		cntvoff = 0;
+
 	mutex_lock(&kvm->lock);
 	kvm_for_each_vcpu(i, tmp, kvm)
 		timer_set_offset(vcpu_vtimer(tmp), cntvoff);
diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c
index 35481d5..a219e6d 100644
--- a/arch/arm64/kvm/arm.c
+++ b/arch/arm64/kvm/arm.c
@@ -16,7 +16,6 @@
 #include <linux/fs.h>
 #include <linux/mman.h>
 #include <linux/sched.h>
-#include <linux/kmemleak.h>
 #include <linux/kvm.h>
 #include <linux/kvm_irqfd.h>
 #include <linux/irqbypass.h>
@@ -27,6 +26,8 @@
 #define CREATE_TRACE_POINTS
 #include "trace_arm.h"
 
+#include "hyp_trace.h"
+
 #include <linux/uaccess.h>
 #include <asm/ptrace.h>
 #include <asm/mman.h>
@@ -37,6 +38,7 @@
 #include <asm/kvm_arm.h>
 #include <asm/kvm_asm.h>
 #include <asm/kvm_mmu.h>
+#include <asm/kvm_pkvm.h>
 #include <asm/kvm_emulate.h>
 #include <asm/sections.h>
 
@@ -45,13 +47,12 @@
 #include <kvm/arm_psci.h>
 
 static enum kvm_mode kvm_mode = KVM_MODE_DEFAULT;
-DEFINE_STATIC_KEY_FALSE(kvm_protected_mode_initialized);
 
 DECLARE_KVM_HYP_PER_CPU(unsigned long, kvm_hyp_vector);
 
 DEFINE_PER_CPU(unsigned long, kvm_arm_hyp_stack_page);
-unsigned long kvm_arm_hyp_percpu_base[NR_CPUS];
 DECLARE_KVM_NVHE_PER_CPU(struct kvm_nvhe_init_params, kvm_init_params);
+DECLARE_KVM_NVHE_PER_CPU(int, hyp_cpu_number);
 
 static bool vgic_present;
 
@@ -78,18 +79,31 @@ int kvm_vm_ioctl_enable_cap(struct kvm *kvm,
 {
 	int r;
 
-	if (cap->flags)
-		return -EINVAL;
+	/* Capabilities with flags */
+	switch (cap->cap) {
+	case KVM_CAP_ARM_PROTECTED_VM:
+		return pkvm_vm_ioctl_enable_cap(kvm, cap);
+	default:
+		if (cap->flags)
+			return -EINVAL;
+	}
 
+	/* Capabilities without flags */
 	switch (cap->cap) {
 	case KVM_CAP_ARM_NISV_TO_USER:
-		r = 0;
-		set_bit(KVM_ARCH_FLAG_RETURN_NISV_IO_ABORT_TO_USER,
-			&kvm->arch.flags);
+		if (kvm_vm_is_protected(kvm)) {
+			r = -EINVAL;
+		} else {
+			r = 0;
+			set_bit(KVM_ARCH_FLAG_RETURN_NISV_IO_ABORT_TO_USER,
+				&kvm->arch.flags);
+		}
 		break;
 	case KVM_CAP_ARM_MTE:
 		mutex_lock(&kvm->lock);
-		if (!system_supports_mte() || kvm->created_vcpus) {
+		if (!system_supports_mte() ||
+		    kvm_vm_is_protected(kvm) ||
+		    kvm->created_vcpus) {
 			r = -EINVAL;
 		} else {
 			r = 0;
@@ -138,34 +152,27 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)
 {
 	int ret;
 
-	ret = kvm_arm_setup_stage2(kvm, type);
-	if (ret)
-		return ret;
-
-	ret = kvm_init_stage2_mmu(kvm, &kvm->arch.mmu);
-	if (ret)
-		return ret;
-
-	mutex_init(&kvm->arch.config_lock);
-
-#ifdef CONFIG_LOCKDEP
-	/* Clue in lockdep that the config_lock must be taken inside kvm->lock */
-	mutex_lock(&kvm->lock);
-	mutex_lock(&kvm->arch.config_lock);
-	mutex_unlock(&kvm->arch.config_lock);
-	mutex_unlock(&kvm->lock);
-#endif
+	if (type & ~KVM_VM_TYPE_MASK)
+		return -EINVAL;
 
 	ret = kvm_share_hyp(kvm, kvm + 1);
 	if (ret)
-		goto out_free_stage2_pgd;
+		return ret;
+
+	ret = pkvm_init_host_vm(kvm, type);
+	if (ret)
+		goto err_unshare_kvm;
 
 	if (!zalloc_cpumask_var(&kvm->arch.supported_cpus, GFP_KERNEL)) {
 		ret = -ENOMEM;
-		goto out_free_stage2_pgd;
+		goto err_unshare_kvm;
 	}
 	cpumask_copy(kvm->arch.supported_cpus, cpu_possible_mask);
 
+	ret = kvm_init_stage2_mmu(kvm, &kvm->arch.mmu, type);
+	if (ret)
+		goto err_free_cpumask;
+
 	kvm_vgic_early_init(kvm);
 
 	/* The maximum number of VCPUs is limited by the host's GIC model */
@@ -174,9 +181,12 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)
 	set_default_spectre(kvm);
 	kvm_arm_init_hypercalls(kvm);
 
-	return ret;
-out_free_stage2_pgd:
-	kvm_free_stage2_pgd(&kvm->arch.mmu);
+	return 0;
+
+err_free_cpumask:
+	free_cpumask_var(kvm->arch.supported_cpus);
+err_unshare_kvm:
+	kvm_unshare_hyp(kvm, kvm + 1);
 	return ret;
 }
 
@@ -197,14 +207,22 @@ void kvm_arch_destroy_vm(struct kvm *kvm)
 
 	kvm_vgic_destroy(kvm);
 
+	if (is_protected_kvm_enabled())
+		pkvm_destroy_hyp_vm(kvm);
+
 	kvm_destroy_vcpus(kvm);
 
+	if (atomic64_read(&kvm->stat.protected_hyp_mem))
+		pr_warn("%lluB of donations to the nVHE hyp are missing\n",
+			atomic64_read(&kvm->stat.protected_hyp_mem));
+
 	kvm_unshare_hyp(kvm, kvm + 1);
 }
 
-int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
+static int kvm_check_extension(struct kvm *kvm, long ext)
 {
 	int r;
+
 	switch (ext) {
 	case KVM_CAP_IRQCHIP:
 		r = vgic_present;
@@ -222,7 +240,6 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
 	case KVM_CAP_IMMEDIATE_EXIT:
 	case KVM_CAP_VCPU_EVENTS:
 	case KVM_CAP_ARM_IRQ_LINE_LAYOUT_2:
-	case KVM_CAP_ARM_NISV_TO_USER:
 	case KVM_CAP_ARM_INJECT_EXT_DABT:
 	case KVM_CAP_SET_GUEST_DEBUG:
 	case KVM_CAP_VCPU_ATTRIBUTES:
@@ -230,6 +247,9 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
 	case KVM_CAP_ARM_SYSTEM_SUSPEND:
 		r = 1;
 		break;
+	case KVM_CAP_ARM_NISV_TO_USER:
+		r = !kvm || !kvm_vm_is_protected(kvm);
+		break;
 	case KVM_CAP_SET_GUEST_DEBUG2:
 		return KVM_GUESTDBG_VALID_MASK;
 	case KVM_CAP_ARM_SET_DEVICE_ADDR:
@@ -303,6 +323,75 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
 	return r;
 }
 
+/*
+ * Checks whether the extension specified in ext is supported in protected
+ * mode for the specified vm.
+ * The capabilities supported by kvm in general are passed in kvm_cap.
+ */
+static int pkvm_check_extension(struct kvm *kvm, long ext, int kvm_cap)
+{
+	int r;
+
+	switch (ext) {
+	case KVM_CAP_IRQCHIP:
+	case KVM_CAP_ARM_PSCI:
+	case KVM_CAP_ARM_PSCI_0_2:
+	case KVM_CAP_NR_VCPUS:
+	case KVM_CAP_MAX_VCPUS:
+	case KVM_CAP_MAX_VCPU_ID:
+	case KVM_CAP_MSI_DEVID:
+	case KVM_CAP_ARM_VM_IPA_SIZE:
+		r = kvm_cap;
+		break;
+	case KVM_CAP_GUEST_DEBUG_HW_BPS:
+		r = min(kvm_cap, pkvm_get_max_brps());
+		break;
+	case KVM_CAP_GUEST_DEBUG_HW_WPS:
+		r = min(kvm_cap, pkvm_get_max_wrps());
+		break;
+	case KVM_CAP_ARM_PMU_V3:
+		r = kvm_cap && FIELD_GET(ARM64_FEATURE_MASK(ID_AA64DFR0_EL1_PMUVer),
+					 PVM_ID_AA64DFR0_ALLOW);
+		break;
+	case KVM_CAP_ARM_SVE:
+		r = kvm_cap && FIELD_GET(ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_SVE),
+					 PVM_ID_AA64PFR0_RESTRICT_UNSIGNED);
+		break;
+	case KVM_CAP_ARM_PTRAUTH_ADDRESS:
+		r = kvm_cap &&
+		    FIELD_GET(ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_API),
+			      PVM_ID_AA64ISAR1_ALLOW) &&
+		    FIELD_GET(ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_APA),
+			      PVM_ID_AA64ISAR1_ALLOW);
+		break;
+	case KVM_CAP_ARM_PTRAUTH_GENERIC:
+		r = kvm_cap &&
+		    FIELD_GET(ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_GPI),
+			      PVM_ID_AA64ISAR1_ALLOW) &&
+		    FIELD_GET(ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_GPA),
+			      PVM_ID_AA64ISAR1_ALLOW);
+		break;
+	case KVM_CAP_ARM_PROTECTED_VM:
+		r = 1;
+		break;
+	default:
+		r = 0;
+		break;
+	}
+
+	return r;
+}
+
+int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
+{
+	int r = kvm_check_extension(kvm, ext);
+
+	if (kvm && kvm_vm_is_protected(kvm))
+		r = pkvm_check_extension(kvm, ext, r);
+
+	return r;
+}
+
 long kvm_arch_dev_ioctl(struct file *filp,
 			unsigned int ioctl, unsigned long arg)
 {
@@ -334,16 +423,6 @@ int kvm_arch_vcpu_create(struct kvm_vcpu *vcpu)
 {
 	int err;
 
-	spin_lock_init(&vcpu->arch.mp_state_lock);
-
-#ifdef CONFIG_LOCKDEP
-	/* Inform lockdep that the config_lock is acquired after vcpu->mutex */
-	mutex_lock(&vcpu->mutex);
-	mutex_lock(&vcpu->kvm->arch.config_lock);
-	mutex_unlock(&vcpu->kvm->arch.config_lock);
-	mutex_unlock(&vcpu->mutex);
-#endif
-
 	/* Force users to call KVM_ARM_VCPU_INIT */
 	vcpu->arch.target = -1;
 	bitmap_zero(vcpu->arch.features, KVM_VCPU_MAX_FEATURES);
@@ -383,7 +462,11 @@ void kvm_arch_vcpu_destroy(struct kvm_vcpu *vcpu)
 	if (vcpu_has_run_once(vcpu) && unlikely(!irqchip_in_kernel(vcpu->kvm)))
 		static_branch_dec(&userspace_irqchip_in_use);
 
-	kvm_mmu_free_memory_cache(&vcpu->arch.mmu_page_cache);
+	if (is_protected_kvm_enabled())
+		free_hyp_stage2_memcache(&vcpu->arch.pkvm_memcache, vcpu->kvm);
+	else
+		kvm_mmu_free_memory_cache(&vcpu->arch.mmu_page_cache);
+
 	kvm_timer_vcpu_terminate(vcpu);
 	kvm_pmu_vcpu_destroy(vcpu);
 
@@ -405,6 +488,9 @@ void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
 	struct kvm_s2_mmu *mmu;
 	int *last_ran;
 
+	if (is_protected_kvm_enabled())
+		goto nommu;
+
 	mmu = vcpu->arch.hw_mmu;
 	last_ran = this_cpu_ptr(mmu->last_vcpu_ran);
 
@@ -422,6 +508,7 @@ void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
 		*last_ran = vcpu->vcpu_id;
 	}
 
+nommu:
 	vcpu->cpu = cpu;
 
 	kvm_vgic_load(vcpu);
@@ -442,18 +529,36 @@ void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
 		vcpu_ptrauth_disable(vcpu);
 	kvm_arch_vcpu_load_debug_state_flags(vcpu);
 
+	if (is_protected_kvm_enabled()) {
+		kvm_call_hyp_nvhe(__pkvm_vcpu_load,
+				  vcpu->kvm->arch.pkvm.handle,
+				  vcpu->vcpu_idx, vcpu->arch.hcr_el2);
+		kvm_call_hyp(__vgic_v3_restore_vmcr_aprs,
+			     &vcpu->arch.vgic_cpu.vgic_v3);
+	}
+
 	if (!cpumask_test_cpu(smp_processor_id(), vcpu->kvm->arch.supported_cpus))
 		vcpu_set_on_unsupported_cpu(vcpu);
 }
 
 void kvm_arch_vcpu_put(struct kvm_vcpu *vcpu)
 {
+	if (is_protected_kvm_enabled()) {
+		kvm_call_hyp(__vgic_v3_save_vmcr_aprs,
+			     &vcpu->arch.vgic_cpu.vgic_v3);
+		kvm_call_hyp_nvhe(__pkvm_vcpu_put);
+
+		/* __pkvm_vcpu_put implies a sync of the state */
+		if (!kvm_vm_is_protected(vcpu->kvm))
+			vcpu_set_flag(vcpu, PKVM_HOST_STATE_DIRTY);
+	}
+
 	kvm_arch_vcpu_put_debug_state_flags(vcpu);
 	kvm_arch_vcpu_put_fp(vcpu);
 	if (has_vhe())
 		kvm_vcpu_put_sysregs_vhe(vcpu);
 	kvm_timer_vcpu_put(vcpu);
-	kvm_vgic_put(vcpu);
+	kvm_vgic_put(vcpu, false);
 	kvm_vcpu_pmu_restore_host(vcpu);
 	kvm_arm_vmid_clear_active();
 
@@ -461,41 +566,34 @@ void kvm_arch_vcpu_put(struct kvm_vcpu *vcpu)
 	vcpu->cpu = -1;
 }
 
-static void __kvm_arm_vcpu_power_off(struct kvm_vcpu *vcpu)
+void kvm_arm_vcpu_power_off(struct kvm_vcpu *vcpu)
 {
-	WRITE_ONCE(vcpu->arch.mp_state.mp_state, KVM_MP_STATE_STOPPED);
+	vcpu->arch.mp_state.mp_state = KVM_MP_STATE_STOPPED;
 	kvm_make_request(KVM_REQ_SLEEP, vcpu);
 	kvm_vcpu_kick(vcpu);
 }
 
-void kvm_arm_vcpu_power_off(struct kvm_vcpu *vcpu)
-{
-	spin_lock(&vcpu->arch.mp_state_lock);
-	__kvm_arm_vcpu_power_off(vcpu);
-	spin_unlock(&vcpu->arch.mp_state_lock);
-}
-
 bool kvm_arm_vcpu_stopped(struct kvm_vcpu *vcpu)
 {
-	return READ_ONCE(vcpu->arch.mp_state.mp_state) == KVM_MP_STATE_STOPPED;
+	return vcpu->arch.mp_state.mp_state == KVM_MP_STATE_STOPPED;
 }
 
 static void kvm_arm_vcpu_suspend(struct kvm_vcpu *vcpu)
 {
-	WRITE_ONCE(vcpu->arch.mp_state.mp_state, KVM_MP_STATE_SUSPENDED);
+	vcpu->arch.mp_state.mp_state = KVM_MP_STATE_SUSPENDED;
 	kvm_make_request(KVM_REQ_SUSPEND, vcpu);
 	kvm_vcpu_kick(vcpu);
 }
 
 static bool kvm_arm_vcpu_suspended(struct kvm_vcpu *vcpu)
 {
-	return READ_ONCE(vcpu->arch.mp_state.mp_state) == KVM_MP_STATE_SUSPENDED;
+	return vcpu->arch.mp_state.mp_state == KVM_MP_STATE_SUSPENDED;
 }
 
 int kvm_arch_vcpu_ioctl_get_mpstate(struct kvm_vcpu *vcpu,
 				    struct kvm_mp_state *mp_state)
 {
-	*mp_state = READ_ONCE(vcpu->arch.mp_state);
+	*mp_state = vcpu->arch.mp_state;
 
 	return 0;
 }
@@ -505,14 +603,12 @@ int kvm_arch_vcpu_ioctl_set_mpstate(struct kvm_vcpu *vcpu,
 {
 	int ret = 0;
 
-	spin_lock(&vcpu->arch.mp_state_lock);
-
 	switch (mp_state->mp_state) {
 	case KVM_MP_STATE_RUNNABLE:
-		WRITE_ONCE(vcpu->arch.mp_state, *mp_state);
+		vcpu->arch.mp_state = *mp_state;
 		break;
 	case KVM_MP_STATE_STOPPED:
-		__kvm_arm_vcpu_power_off(vcpu);
+		kvm_arm_vcpu_power_off(vcpu);
 		break;
 	case KVM_MP_STATE_SUSPENDED:
 		kvm_arm_vcpu_suspend(vcpu);
@@ -521,8 +617,6 @@ int kvm_arch_vcpu_ioctl_set_mpstate(struct kvm_vcpu *vcpu,
 		ret = -EINVAL;
 	}
 
-	spin_unlock(&vcpu->arch.mp_state_lock);
-
 	return ret;
 }
 
@@ -600,6 +694,15 @@ int kvm_arch_vcpu_run_pid_change(struct kvm_vcpu *vcpu)
 	if (ret)
 		return ret;
 
+	if (is_protected_kvm_enabled()) {
+		/* Start with the vcpu in a dirty state */
+		if (!kvm_vm_is_protected(vcpu->kvm))
+			vcpu_set_flag(vcpu, PKVM_HOST_STATE_DIRTY);
+		ret = pkvm_create_hyp_vm(kvm);
+		if (ret)
+			return ret;
+	}
+
 	if (!irqchip_in_kernel(kvm)) {
 		/*
 		 * Tell the rest of the code that there are userspace irqchip
@@ -608,17 +711,9 @@ int kvm_arch_vcpu_run_pid_change(struct kvm_vcpu *vcpu)
 		static_branch_inc(&userspace_irqchip_in_use);
 	}
 
-	/*
-	 * Initialize traps for protected VMs.
-	 * NOTE: Move to run in EL2 directly, rather than via a hypercall, once
-	 * the code is in place for first run initialization at EL2.
-	 */
-	if (kvm_vm_is_protected(kvm))
-		kvm_call_hyp_nvhe(__pkvm_vcpu_init_traps, vcpu);
-
-	mutex_lock(&kvm->arch.config_lock);
+	mutex_lock(&kvm->lock);
 	set_bit(KVM_ARCH_FLAG_HAS_RAN_ONCE, &kvm->arch.flags);
-	mutex_unlock(&kvm->arch.config_lock);
+	mutex_unlock(&kvm->lock);
 
 	return ret;
 }
@@ -691,15 +786,14 @@ void kvm_vcpu_wfi(struct kvm_vcpu *vcpu)
 	 * doorbells to be signalled, should an interrupt become pending.
 	 */
 	preempt_disable();
-	kvm_vgic_vmcr_sync(vcpu);
-	vgic_v4_put(vcpu, true);
+	kvm_vgic_put(vcpu, true);
 	preempt_enable();
 
 	kvm_vcpu_halt(vcpu);
 	vcpu_clear_flag(vcpu, IN_WFIT);
 
 	preempt_disable();
-	vgic_v4_load(vcpu);
+	kvm_vgic_load(vcpu);
 	preempt_enable();
 }
 
@@ -1233,7 +1327,7 @@ static int kvm_arch_vcpu_ioctl_vcpu_init(struct kvm_vcpu *vcpu,
 	if (test_bit(KVM_ARM_VCPU_POWER_OFF, vcpu->arch.features))
 		kvm_arm_vcpu_power_off(vcpu);
 	else
-		WRITE_ONCE(vcpu->arch.mp_state.mp_state, KVM_MP_STATE_RUNNABLE);
+		vcpu->arch.mp_state.mp_state = KVM_MP_STATE_RUNNABLE;
 
 	return 0;
 }
@@ -1553,6 +1647,9 @@ static void cpu_prepare_hyp_mode(int cpu)
 {
 	struct kvm_nvhe_init_params *params = per_cpu_ptr_nvhe_sym(kvm_init_params, cpu);
 	unsigned long tcr;
+	int *hyp_cpu_number_ptr = per_cpu_ptr_nvhe_sym(hyp_cpu_number, cpu);
+
+	*hyp_cpu_number_ptr = cpu;
 
 	/*
 	 * Calculate the raw per-cpu offset without a translation from the
@@ -1590,6 +1687,7 @@ static void cpu_prepare_hyp_mode(int cpu)
 	else
 		params->hcr_el2 = HCR_HOST_NVHE_FLAGS;
 	params->vttbr = params->vtcr = 0;
+	params->hfgwtr_el2 = HFGxTR_EL2_nSMPRI_EL1_MASK | HFGxTR_EL2_nTPIDR2_EL0_MASK;
 
 	/*
 	 * Flush the init params from the data cache because the struct will
@@ -1810,6 +1908,7 @@ static bool init_psci_relay(void)
 	}
 
 	kvm_host_psci_config.version = psci_ops.get_version();
+	kvm_host_psci_config.smccc_version = arm_smccc_get_version();
 
 	if (kvm_host_psci_config.version == PSCI_VERSION(0, 1)) {
 		kvm_host_psci_config.function_ids_0_1 = get_psci_0_1_function_ids();
@@ -1875,13 +1974,13 @@ 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(kvm_arm_hyp_percpu_base[cpu], nvhe_percpu_order());
+		free_pages(kvm_nvhe_sym(kvm_arm_hyp_percpu_base)[cpu], nvhe_percpu_order());
 	}
 }
 
 static int do_pkvm_init(u32 hyp_va_bits)
 {
-	void *per_cpu_base = kvm_ksym_ref(kvm_arm_hyp_percpu_base);
+	void *per_cpu_base = kvm_ksym_ref(kvm_nvhe_sym(kvm_arm_hyp_percpu_base));
 	int ret;
 
 	preempt_disable();
@@ -1935,8 +2034,15 @@ static void kvm_hyp_init_symbols(void)
 	kvm_nvhe_sym(id_aa64mmfr0_el1_sys_val) = read_sanitised_ftr_reg(SYS_ID_AA64MMFR0_EL1);
 	kvm_nvhe_sym(id_aa64mmfr1_el1_sys_val) = read_sanitised_ftr_reg(SYS_ID_AA64MMFR1_EL1);
 	kvm_nvhe_sym(id_aa64mmfr2_el1_sys_val) = read_sanitised_ftr_reg(SYS_ID_AA64MMFR2_EL1);
+	kvm_nvhe_sym(id_aa64smfr0_el1_sys_val) = read_sanitised_ftr_reg(SYS_ID_AA64SMFR0_EL1);
+	kvm_nvhe_sym(__icache_flags) = __icache_flags;
+	kvm_nvhe_sym(kvm_arm_vmid_bits) = kvm_arm_vmid_bits;
+	kvm_nvhe_sym(smccc_trng_available) = smccc_trng_available;
+	kvm_nvhe_sym(kvm_host_sve_max_vl) = kvm_host_sve_max_vl;
 }
 
+int kvm_hyp_init_events(void);
+
 static int kvm_hyp_init_protection(u32 hyp_va_bits)
 {
 	void *addr = phys_to_virt(hyp_mem_base);
@@ -2008,7 +2114,7 @@ static int init_hyp_mode(void)
 
 		page_addr = page_address(page);
 		memcpy(page_addr, CHOOSE_NVHE_SYM(__per_cpu_start), nvhe_percpu_size());
-		kvm_arm_hyp_percpu_base[cpu] = (unsigned long)page_addr;
+		kvm_nvhe_sym(kvm_arm_hyp_percpu_base)[cpu] = (unsigned long)page_addr;
 	}
 
 	/*
@@ -2021,6 +2127,13 @@ static int init_hyp_mode(void)
 		goto out_err;
 	}
 
+	err = create_hyp_mappings(kvm_ksym_ref(__hyp_data_start),
+				  kvm_ksym_ref(__hyp_data_end), PAGE_HYP);
+	if (err) {
+		kvm_err("Cannot map .hyp.data section\n");
+		goto out_err;
+	}
+
 	err = create_hyp_mappings(kvm_ksym_ref(__hyp_rodata_start),
 				  kvm_ksym_ref(__hyp_rodata_end), PAGE_HYP_RO);
 	if (err) {
@@ -2101,7 +2214,7 @@ static int init_hyp_mode(void)
 	}
 
 	for_each_possible_cpu(cpu) {
-		char *percpu_begin = (char *)kvm_arm_hyp_percpu_base[cpu];
+		char *percpu_begin = (char *)kvm_nvhe_sym(kvm_arm_hyp_percpu_base)[cpu];
 		char *percpu_end = percpu_begin + nvhe_percpu_size();
 
 		/* Map Hyp percpu pages */
@@ -2117,6 +2230,11 @@ static int init_hyp_mode(void)
 
 	kvm_hyp_init_symbols();
 
+	/* TODO: Real .h interface */
+#ifdef CONFIG_TRACING
+	kvm_hyp_init_events();
+#endif
+
 	if (is_protected_kvm_enabled()) {
 		init_cpu_logical_map();
 
@@ -2140,41 +2258,6 @@ static int init_hyp_mode(void)
 	return err;
 }
 
-static void _kvm_host_prot_finalize(void *arg)
-{
-	int *err = arg;
-
-	if (WARN_ON(kvm_call_hyp_nvhe(__pkvm_prot_finalize)))
-		WRITE_ONCE(*err, -EINVAL);
-}
-
-static int pkvm_drop_host_privileges(void)
-{
-	int ret = 0;
-
-	/*
-	 * Flip the static key upfront as that may no longer be possible
-	 * once the host stage 2 is installed.
-	 */
-	static_branch_enable(&kvm_protected_mode_initialized);
-	on_each_cpu(_kvm_host_prot_finalize, &ret, 1);
-	return ret;
-}
-
-static int finalize_hyp_mode(void)
-{
-	if (!is_protected_kvm_enabled())
-		return 0;
-
-	/*
-	 * Exclude HYP sections from kmemleak so that they don't get peeked
-	 * at, which would end badly once inaccessible.
-	 */
-	kmemleak_free_part(__hyp_bss_start, __hyp_bss_end - __hyp_bss_start);
-	kmemleak_free_part_phys(hyp_mem_base, hyp_mem_size);
-	return pkvm_drop_host_privileges();
-}
-
 struct kvm_vcpu *kvm_mpidr_to_vcpu(struct kvm *kvm, unsigned long mpidr)
 {
 	struct kvm_vcpu *vcpu;
@@ -2290,11 +2373,9 @@ int kvm_arch_init(void *opaque)
 		goto out_hyp;
 
 	if (!in_hyp_mode) {
-		err = finalize_hyp_mode();
-		if (err) {
-			kvm_err("Failed to finalize Hyp protection\n");
-			goto out_hyp;
-		}
+		err = init_hyp_tracefs();
+		if (err)
+			kvm_err("Failed to initialize Hyp tracing\n");
 	}
 
 	if (is_protected_kvm_enabled()) {
diff --git a/arch/arm64/kvm/debug.c b/arch/arm64/kvm/debug.c
index fccf9ec..81218d7 100644
--- a/arch/arm64/kvm/debug.c
+++ b/arch/arm64/kvm/debug.c
@@ -39,9 +39,7 @@ static DEFINE_PER_CPU(u64, mdcr_el2);
  */
 static void save_guest_debug_regs(struct kvm_vcpu *vcpu)
 {
-	u64 val = vcpu_read_sys_reg(vcpu, MDSCR_EL1);
-
-	vcpu->arch.guest_debug_preserved.mdscr_el1 = val;
+	__vcpu_save_guest_debug_regs(vcpu);
 
 	trace_kvm_arm_set_dreg32("Saved MDSCR_EL1",
 				vcpu->arch.guest_debug_preserved.mdscr_el1);
@@ -52,9 +50,7 @@ static void save_guest_debug_regs(struct kvm_vcpu *vcpu)
 
 static void restore_guest_debug_regs(struct kvm_vcpu *vcpu)
 {
-	u64 val = vcpu->arch.guest_debug_preserved.mdscr_el1;
-
-	vcpu_write_sys_reg(vcpu, val, MDSCR_EL1);
+	__vcpu_restore_guest_debug_regs(vcpu);
 
 	trace_kvm_arm_set_dreg32("Restored MDSCR_EL1",
 				vcpu_read_sys_reg(vcpu, MDSCR_EL1));
@@ -175,7 +171,7 @@ void kvm_arm_setup_debug(struct kvm_vcpu *vcpu)
 	kvm_arm_setup_mdcr_el2(vcpu);
 
 	/* Check if we need to use the debug registers. */
-	if (vcpu->guest_debug || kvm_vcpu_os_lock_enabled(vcpu)) {
+	if (kvm_vcpu_needs_debug_regs(vcpu)) {
 		/* Save guest debug state */
 		save_guest_debug_regs(vcpu);
 
@@ -284,7 +280,7 @@ void kvm_arm_clear_debug(struct kvm_vcpu *vcpu)
 	/*
 	 * Restore the guest's debug registers if we were using them.
 	 */
-	if (vcpu->guest_debug || kvm_vcpu_os_lock_enabled(vcpu)) {
+	if (kvm_vcpu_needs_debug_regs(vcpu)) {
 		if (vcpu->guest_debug & KVM_GUESTDBG_SINGLESTEP) {
 			if (!(*vcpu_cpsr(vcpu) & DBG_SPSR_SS))
 				/*
diff --git a/arch/arm64/kvm/fpsimd.c b/arch/arm64/kvm/fpsimd.c
index ec8e449..453c6a5 100644
--- a/arch/arm64/kvm/fpsimd.c
+++ b/arch/arm64/kvm/fpsimd.c
@@ -14,19 +14,6 @@
 #include <asm/kvm_mmu.h>
 #include <asm/sysreg.h>
 
-void kvm_vcpu_unshare_task_fp(struct kvm_vcpu *vcpu)
-{
-	struct task_struct *p = vcpu->arch.parent_task;
-	struct user_fpsimd_state *fpsimd;
-
-	if (!is_protected_kvm_enabled() || !p)
-		return;
-
-	fpsimd = &p->thread.uw.fpsimd_state;
-	kvm_unshare_hyp(fpsimd, fpsimd + 1);
-	put_task_struct(p);
-}
-
 /*
  * Called on entry to KVM_RUN unless this vcpu previously ran at least
  * once and the most recent prior KVM_RUN for this vcpu was called from
@@ -38,11 +25,12 @@ void kvm_vcpu_unshare_task_fp(struct kvm_vcpu *vcpu)
  */
 int kvm_arch_vcpu_run_map_fp(struct kvm_vcpu *vcpu)
 {
+	struct user_fpsimd_state *fpsimd = &current->thread.uw.fpsimd_state;
 	int ret;
 
-	struct user_fpsimd_state *fpsimd = &current->thread.uw.fpsimd_state;
-
-	kvm_vcpu_unshare_task_fp(vcpu);
+	/* pKVM has its own tracking of the host fpsimd state. */
+	if (is_protected_kvm_enabled())
+		return 0;
 
 	/* Make sure the host task fpsimd state is visible to hyp: */
 	ret = kvm_share_hyp(fpsimd, fpsimd + 1);
@@ -51,17 +39,6 @@ int kvm_arch_vcpu_run_map_fp(struct kvm_vcpu *vcpu)
 
 	vcpu->arch.host_fpsimd_state = kern_hyp_va(fpsimd);
 
-	/*
-	 * We need to keep current's task_struct pinned until its data has been
-	 * unshared with the hypervisor to make sure it is not re-used by the
-	 * kernel and donated to someone else while already shared -- see
-	 * kvm_vcpu_unshare_task_fp() for the matching put_task_struct().
-	 */
-	if (is_protected_kvm_enabled()) {
-		get_task_struct(current);
-		vcpu->arch.parent_task = current;
-	}
-
 	return 0;
 }
 
@@ -178,7 +155,18 @@ void kvm_arch_vcpu_put_fp(struct kvm_vcpu *vcpu)
 		if (vcpu_has_sve(vcpu)) {
 			__vcpu_sys_reg(vcpu, ZCR_EL1) = read_sysreg_el1(SYS_ZCR);
 
-			/* Restore the VL that was saved when bound to the CPU */
+			/*
+			 * Restore the VL that was saved when bound to the CPU,
+			 * which is the maximum VL for the guest. Because
+			 * the layout of the data when saving the sve state
+			 * depends on the VL, we need to use a consistent VL.
+			 * Note that this means that at guest exit ZCR_EL1 is
+			 * not necessarily the same as on guest entry.
+			 *
+			 * Flushing the cpu state sets the TIF_FOREIGN_FPSTATE
+			 * bit for the context, which lets the kernel restore
+			 * the sve state, including ZCR_EL1 later.
+			 */
 			if (!has_vhe())
 				sve_cond_update_zcr_vq(vcpu_sve_max_vq(vcpu) - 1,
 						       SYS_ZCR_EL1);
diff --git a/arch/arm64/kvm/guest.c b/arch/arm64/kvm/guest.c
index dd20b86..a3b31f2 100644
--- a/arch/arm64/kvm/guest.c
+++ b/arch/arm64/kvm/guest.c
@@ -29,7 +29,9 @@
 #include "trace.h"
 
 const struct _kvm_stats_desc kvm_vm_stats_desc[] = {
-	KVM_GENERIC_VM_STATS()
+	KVM_GENERIC_VM_STATS(),
+	STATS_DESC_ICOUNTER(VM, protected_hyp_mem),
+	STATS_DESC_ICOUNTER(VM, protected_shared_mem),
 };
 
 const struct kvm_stats_header kvm_vm_stats_header = {
@@ -951,9 +953,7 @@ int kvm_arm_vcpu_arch_set_attr(struct kvm_vcpu *vcpu,
 
 	switch (attr->group) {
 	case KVM_ARM_VCPU_PMU_V3_CTRL:
-		mutex_lock(&vcpu->kvm->arch.config_lock);
 		ret = kvm_arm_pmu_v3_set_attr(vcpu, attr);
-		mutex_unlock(&vcpu->kvm->arch.config_lock);
 		break;
 	case KVM_ARM_VCPU_TIMER_CTRL:
 		ret = kvm_arm_timer_set_attr(vcpu, attr);
diff --git a/arch/arm64/kvm/handle_exit.c b/arch/arm64/kvm/handle_exit.c
index e778eefc..05b3ec8 100644
--- a/arch/arm64/kvm/handle_exit.c
+++ b/arch/arm64/kvm/handle_exit.c
@@ -241,6 +241,21 @@ static int handle_trap_exceptions(struct kvm_vcpu *vcpu)
 	int handled;
 
 	/*
+	 * If we run a non-protected VM when protection is enabled
+	 * system-wide, resync the state from the hypervisor and mark
+	 * it as dirty on the host side if it wasn't dirty already
+	 * (which could happen if preemption has taken place).
+	 */
+	if (is_protected_kvm_enabled() && !kvm_vm_is_protected(vcpu->kvm)) {
+		preempt_disable();
+		if (!(vcpu_get_flag(vcpu, PKVM_HOST_STATE_DIRTY))) {
+			kvm_call_hyp_nvhe(__pkvm_vcpu_sync_state);
+			vcpu_set_flag(vcpu, PKVM_HOST_STATE_DIRTY);
+		}
+		preempt_enable();
+	}
+
+	/*
 	 * See ARM ARM B1.14.1: "Hyp traps on instructions
 	 * that fail their condition code check"
 	 */
@@ -307,6 +322,13 @@ int handle_exit(struct kvm_vcpu *vcpu, int exception_index)
 /* For exit types that need handling before we can be preempted */
 void handle_exit_early(struct kvm_vcpu *vcpu, int exception_index)
 {
+	/*
+	 * We just exited, so the state is clean from a hypervisor
+	 * perspective.
+	 */
+	if (is_protected_kvm_enabled())
+		vcpu_clear_flag(vcpu, PKVM_HOST_STATE_DIRTY);
+
 	if (ARM_SERROR_PENDING(exception_index)) {
 		if (this_cpu_has_cap(ARM64_HAS_RAS_EXTN)) {
 			u64 disr = kvm_vcpu_get_disr(vcpu);
diff --git a/arch/arm64/kvm/hyp/exception.c b/arch/arm64/kvm/hyp/exception.c
index 791d3de..a5fa6a1 100644
--- a/arch/arm64/kvm/hyp/exception.c
+++ b/arch/arm64/kvm/hyp/exception.c
@@ -61,12 +61,25 @@ static void __vcpu_write_spsr_und(struct kvm_vcpu *vcpu, u64 val)
 		vcpu->arch.ctxt.spsr_und = val;
 }
 
+unsigned long get_except64_offset(unsigned long psr, unsigned long target_mode,
+				  enum exception_type type)
+{
+	u64 mode = psr & (PSR_MODE_MASK | PSR_MODE32_BIT);
+	u64 exc_offset;
+
+	if      (mode == target_mode)
+		exc_offset = CURRENT_EL_SP_ELx_VECTOR;
+	else if ((mode | PSR_MODE_THREAD_BIT) == target_mode)
+		exc_offset = CURRENT_EL_SP_EL0_VECTOR;
+	else if (!(mode & PSR_MODE32_BIT))
+		exc_offset = LOWER_EL_AArch64_VECTOR;
+	else
+		exc_offset = LOWER_EL_AArch32_VECTOR;
+
+	return exc_offset + type;
+}
+
 /*
- * This performs the exception entry at a given EL (@target_mode), stashing PC
- * and PSTATE into ELR and SPSR respectively, and compute the new PC/PSTATE.
- * The EL passed to this function *must* be a non-secure, privileged mode with
- * bit 0 being set (PSTATE.SP == 1).
- *
  * When an exception is taken, most PSTATE fields are left unchanged in the
  * handler. However, some are explicitly overridden (e.g. M[4:0]). Luckily all
  * of the inherited bits have the same position in the AArch64/AArch32 SPSR_ELx
@@ -78,45 +91,17 @@ static void __vcpu_write_spsr_und(struct kvm_vcpu *vcpu, u64 val)
  * Here we manipulate the fields in order of the AArch64 SPSR_ELx layout, from
  * MSB to LSB.
  */
-static void enter_exception64(struct kvm_vcpu *vcpu, unsigned long target_mode,
-			      enum exception_type type)
+unsigned long get_except64_cpsr(unsigned long old, bool has_mte,
+				unsigned long sctlr, unsigned long target_mode)
 {
-	unsigned long sctlr, vbar, old, new, mode;
-	u64 exc_offset;
-
-	mode = *vcpu_cpsr(vcpu) & (PSR_MODE_MASK | PSR_MODE32_BIT);
-
-	if      (mode == target_mode)
-		exc_offset = CURRENT_EL_SP_ELx_VECTOR;
-	else if ((mode | PSR_MODE_THREAD_BIT) == target_mode)
-		exc_offset = CURRENT_EL_SP_EL0_VECTOR;
-	else if (!(mode & PSR_MODE32_BIT))
-		exc_offset = LOWER_EL_AArch64_VECTOR;
-	else
-		exc_offset = LOWER_EL_AArch32_VECTOR;
-
-	switch (target_mode) {
-	case PSR_MODE_EL1h:
-		vbar = __vcpu_read_sys_reg(vcpu, VBAR_EL1);
-		sctlr = __vcpu_read_sys_reg(vcpu, SCTLR_EL1);
-		__vcpu_write_sys_reg(vcpu, *vcpu_pc(vcpu), ELR_EL1);
-		break;
-	default:
-		/* Don't do that */
-		BUG();
-	}
-
-	*vcpu_pc(vcpu) = vbar + exc_offset + type;
-
-	old = *vcpu_cpsr(vcpu);
-	new = 0;
+	u64 new = 0;
 
 	new |= (old & PSR_N_BIT);
 	new |= (old & PSR_Z_BIT);
 	new |= (old & PSR_C_BIT);
 	new |= (old & PSR_V_BIT);
 
-	if (kvm_has_mte(kern_hyp_va(vcpu->kvm)))
+	if (has_mte)
 		new |= PSR_TCO_BIT;
 
 	new |= (old & PSR_DIT_BIT);
@@ -152,6 +137,36 @@ static void enter_exception64(struct kvm_vcpu *vcpu, unsigned long target_mode,
 
 	new |= target_mode;
 
+	return new;
+}
+
+/*
+ * This performs the exception entry at a given EL (@target_mode), stashing PC
+ * and PSTATE into ELR and SPSR respectively, and compute the new PC/PSTATE.
+ * The EL passed to this function *must* be a non-secure, privileged mode with
+ * bit 0 being set (PSTATE.SP == 1).
+ */
+static void enter_exception64(struct kvm_vcpu *vcpu, unsigned long target_mode,
+			      enum exception_type type)
+{
+	u64 offset = get_except64_offset(*vcpu_cpsr(vcpu), target_mode, type);
+	unsigned long sctlr, vbar, old, new;
+
+	switch (target_mode) {
+	case PSR_MODE_EL1h:
+		vbar = __vcpu_read_sys_reg(vcpu, VBAR_EL1);
+		sctlr = __vcpu_read_sys_reg(vcpu, SCTLR_EL1);
+		__vcpu_write_sys_reg(vcpu, *vcpu_pc(vcpu), ELR_EL1);
+		break;
+	default:
+		/* Don't do that */
+		BUG();
+	}
+
+	*vcpu_pc(vcpu) = vbar + offset;
+
+	old = *vcpu_cpsr(vcpu);
+	new = get_except64_cpsr(old, kvm_has_mte(kern_hyp_va(vcpu->kvm)), sctlr, target_mode);
 	*vcpu_cpsr(vcpu) = new;
 	__vcpu_write_spsr(vcpu, old);
 }
diff --git a/arch/arm64/kvm/hyp/fpsimd.S b/arch/arm64/kvm/hyp/fpsimd.S
index 61e6f3b..e950875 100644
--- a/arch/arm64/kvm/hyp/fpsimd.S
+++ b/arch/arm64/kvm/hyp/fpsimd.S
@@ -25,3 +25,9 @@
 	sve_load 0, x1, x2, 3
 	ret
 SYM_FUNC_END(__sve_restore_state)
+
+SYM_FUNC_START(__sve_save_state)
+	mov	x2, #1
+	sve_save 0, x1, x2, 3
+	ret
+SYM_FUNC_END(__sve_save_state)
diff --git a/arch/arm64/kvm/hyp/hyp-constants.c b/arch/arm64/kvm/hyp/hyp-constants.c
index b3742a6..9fe0d2a 100644
--- a/arch/arm64/kvm/hyp/hyp-constants.c
+++ b/arch/arm64/kvm/hyp/hyp-constants.c
@@ -2,9 +2,16 @@
 
 #include <linux/kbuild.h>
 #include <nvhe/memory.h>
+#include <nvhe/pkvm.h>
+#include <nvhe/trace.h>
 
 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
+	DEFINE(STRUCT_HYP_BUFFER_PAGE_SIZE,	sizeof(struct hyp_buffer_page));
+#endif
 	return 0;
 }
diff --git a/arch/arm64/kvm/hyp/include/hyp/switch.h b/arch/arm64/kvm/hyp/include/hyp/switch.h
index 081aca8..89f7a56 100644
--- a/arch/arm64/kvm/hyp/include/hyp/switch.h
+++ b/arch/arm64/kvm/hyp/include/hyp/switch.h
@@ -37,12 +37,6 @@ struct kvm_exception_table_entry {
 extern struct kvm_exception_table_entry __start___kvm_ex_table;
 extern struct kvm_exception_table_entry __stop___kvm_ex_table;
 
-/* Check whether the FP regs are owned by the guest */
-static inline bool guest_owns_fp_regs(struct kvm_vcpu *vcpu)
-{
-	return vcpu->arch.fp_state == FP_STATE_GUEST_OWNED;
-}
-
 /* Save the 32-bit only FPSIMD system register state */
 static inline void __fpsimd_save_fpexc32(struct kvm_vcpu *vcpu)
 {
@@ -167,6 +161,10 @@ static inline void __hyp_sve_restore_guest(struct kvm_vcpu *vcpu)
 	write_sysreg_el1(__vcpu_sys_reg(vcpu, ZCR_EL1), SYS_ZCR);
 }
 
+static void kvm_hyp_handle_fpsimd_host(struct kvm_vcpu *vcpu);
+
+static void __deactivate_fpsimd_traps(struct kvm_vcpu *vcpu);
+
 /*
  * We trap the first access to the FP/SIMD to save the host context and
  * restore the guest context lazily.
@@ -177,7 +175,6 @@ static bool kvm_hyp_handle_fpsimd(struct kvm_vcpu *vcpu, u64 *exit_code)
 {
 	bool sve_guest;
 	u8 esr_ec;
-	u64 reg;
 
 	if (!system_supports_fpsimd())
 		return false;
@@ -192,24 +189,12 @@ static bool kvm_hyp_handle_fpsimd(struct kvm_vcpu *vcpu, u64 *exit_code)
 	/* Valid trap.  Switch the context: */
 
 	/* First disable enough traps to allow us to update the registers */
-	if (has_vhe()) {
-		reg = CPACR_EL1_FPEN_EL0EN | CPACR_EL1_FPEN_EL1EN;
-		if (sve_guest)
-			reg |= CPACR_EL1_ZEN_EL0EN | CPACR_EL1_ZEN_EL1EN;
-
-		sysreg_clear_set(cpacr_el1, 0, reg);
-	} else {
-		reg = CPTR_EL2_TFP;
-		if (sve_guest)
-			reg |= CPTR_EL2_TZ;
-
-		sysreg_clear_set(cptr_el2, reg, 0);
-	}
+	__deactivate_fpsimd_traps(vcpu);
 	isb();
 
 	/* Write out the host state if it's in the registers */
 	if (vcpu->arch.fp_state == FP_STATE_HOST_OWNED)
-		__fpsimd_save_state(vcpu->arch.host_fpsimd_state);
+		kvm_hyp_handle_fpsimd_host(vcpu);
 
 	/* Restore the guest state */
 	if (sve_guest)
diff --git a/arch/arm64/kvm/hyp/include/nvhe/arm-smccc.h b/arch/arm64/kvm/hyp/include/nvhe/arm-smccc.h
new file mode 100644
index 0000000..4b69d33
--- /dev/null
+++ b/arch/arm64/kvm/hyp/include/nvhe/arm-smccc.h
@@ -0,0 +1,13 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include <asm/kvm_hypevents.h>
+
+#include <linux/arm-smccc.h>
+
+#undef arm_smccc_1_1_smc
+#define arm_smccc_1_1_smc(...)					\
+	do {							\
+		trace_hyp_exit();				\
+		__arm_smccc_1_1(SMCCC_SMC_INST, __VA_ARGS__);	\
+		trace_hyp_enter();				\
+	} while (0)
diff --git a/arch/arm64/kvm/hyp/include/nvhe/clock.h b/arch/arm64/kvm/hyp/include/nvhe/clock.h
new file mode 100644
index 0000000..7e5c2d2
--- /dev/null
+++ b/arch/arm64/kvm/hyp/include/nvhe/clock.h
@@ -0,0 +1,15 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __ARM64_KVM_HYP_NVHE_CLOCK_H
+#define __ARM64_KVM_HYP_NVHE_CLOCK_H
+#include <linux/types.h>
+
+#include <asm/kvm_hyp.h>
+
+#ifdef CONFIG_TRACING
+void trace_clock_update(struct kvm_nvhe_clock_data *data);
+u64 trace_clock(void);
+#else
+static inline void trace_clock_update(struct kvm_nvhe_clock_data *data) { }
+static inline u64 trace_clock(void) { return 0; }
+#endif
+#endif
diff --git a/arch/arm64/kvm/hyp/include/nvhe/ffa.h b/arch/arm64/kvm/hyp/include/nvhe/ffa.h
new file mode 100644
index 0000000..1becb10
--- /dev/null
+++ b/arch/arm64/kvm/hyp/include/nvhe/ffa.h
@@ -0,0 +1,17 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (C) 2022 - Google LLC
+ * Author: Andrew Walbran <qwandor@google.com>
+ */
+#ifndef __KVM_HYP_FFA_H
+#define __KVM_HYP_FFA_H
+
+#include <asm/kvm_host.h>
+
+#define FFA_MIN_FUNC_NUM 0x60
+#define FFA_MAX_FUNC_NUM 0x7F
+
+int hyp_ffa_init(void *pages);
+bool kvm_host_ffa_handler(struct kvm_cpu_context *host_ctxt);
+
+#endif /* __KVM_HYP_FFA_H */
diff --git a/arch/arm64/kvm/hyp/include/nvhe/fixed_config.h b/arch/arm64/kvm/hyp/include/nvhe/fixed_config.h
deleted file mode 100644
index 37440e1..0000000
--- a/arch/arm64/kvm/hyp/include/nvhe/fixed_config.h
+++ /dev/null
@@ -1,208 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * Copyright (C) 2021 Google LLC
- * Author: Fuad Tabba <tabba@google.com>
- */
-
-#ifndef __ARM64_KVM_FIXED_CONFIG_H__
-#define __ARM64_KVM_FIXED_CONFIG_H__
-
-#include <asm/sysreg.h>
-
-/*
- * This file contains definitions for features to be allowed or restricted for
- * guest virtual machines, depending on the mode KVM is running in and on the
- * type of guest that is running.
- *
- * The ALLOW masks represent a bitmask of feature fields that are allowed
- * without any restrictions as long as they are supported by the system.
- *
- * The RESTRICT_UNSIGNED masks, if present, represent unsigned fields for
- * features that are restricted to support at most the specified feature.
- *
- * If a feature field is not present in either, than it is not supported.
- *
- * The approach taken for protected VMs is to allow features that are:
- * - Needed by common Linux distributions (e.g., floating point)
- * - Trivial to support, e.g., supporting the feature does not introduce or
- * require tracking of additional state in KVM
- * - Cannot be trapped or prevent the guest from using anyway
- */
-
-/*
- * Allow for protected VMs:
- * - Floating-point and Advanced SIMD
- * - Data Independent Timing
- * - Spectre/Meltdown Mitigation
- */
-#define PVM_ID_AA64PFR0_ALLOW (\
-	ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_FP) | \
-	ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_AdvSIMD) | \
-	ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_DIT) | \
-	ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_CSV2) | \
-	ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_CSV3) \
-	)
-
-/*
- * Restrict to the following *unsigned* features for protected VMs:
- * - AArch64 guests only (no support for AArch32 guests):
- *	AArch32 adds complexity in trap handling, emulation, condition codes,
- *	etc...
- * - RAS (v1)
- *	Supported by KVM
- */
-#define PVM_ID_AA64PFR0_RESTRICT_UNSIGNED (\
-	FIELD_PREP(ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_EL0), ID_AA64PFR0_EL1_ELx_64BIT_ONLY) | \
-	FIELD_PREP(ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_EL1), ID_AA64PFR0_EL1_ELx_64BIT_ONLY) | \
-	FIELD_PREP(ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_EL2), ID_AA64PFR0_EL1_ELx_64BIT_ONLY) | \
-	FIELD_PREP(ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_EL3), ID_AA64PFR0_EL1_ELx_64BIT_ONLY) | \
-	FIELD_PREP(ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_RAS), ID_AA64PFR0_EL1_RAS_IMP) \
-	)
-
-/*
- * Allow for protected VMs:
- * - Branch Target Identification
- * - Speculative Store Bypassing
- */
-#define PVM_ID_AA64PFR1_ALLOW (\
-	ARM64_FEATURE_MASK(ID_AA64PFR1_EL1_BT) | \
-	ARM64_FEATURE_MASK(ID_AA64PFR1_EL1_SSBS) \
-	)
-
-/*
- * Allow for protected VMs:
- * - Mixed-endian
- * - Distinction between Secure and Non-secure Memory
- * - Mixed-endian at EL0 only
- * - Non-context synchronizing exception entry and exit
- */
-#define PVM_ID_AA64MMFR0_ALLOW (\
-	ARM64_FEATURE_MASK(ID_AA64MMFR0_EL1_BIGEND) | \
-	ARM64_FEATURE_MASK(ID_AA64MMFR0_EL1_SNSMEM) | \
-	ARM64_FEATURE_MASK(ID_AA64MMFR0_EL1_BIGENDEL0) | \
-	ARM64_FEATURE_MASK(ID_AA64MMFR0_EL1_EXS) \
-	)
-
-/*
- * Restrict to the following *unsigned* features for protected VMs:
- * - 40-bit IPA
- * - 16-bit ASID
- */
-#define PVM_ID_AA64MMFR0_RESTRICT_UNSIGNED (\
-	FIELD_PREP(ARM64_FEATURE_MASK(ID_AA64MMFR0_EL1_PARANGE), ID_AA64MMFR0_EL1_PARANGE_40) | \
-	FIELD_PREP(ARM64_FEATURE_MASK(ID_AA64MMFR0_EL1_ASIDBITS), ID_AA64MMFR0_EL1_ASIDBITS_16) \
-	)
-
-/*
- * Allow for protected VMs:
- * - Hardware translation table updates to Access flag and Dirty state
- * - Number of VMID bits from CPU
- * - Hierarchical Permission Disables
- * - Privileged Access Never
- * - SError interrupt exceptions from speculative reads
- * - Enhanced Translation Synchronization
- */
-#define PVM_ID_AA64MMFR1_ALLOW (\
-	ARM64_FEATURE_MASK(ID_AA64MMFR1_EL1_HAFDBS) | \
-	ARM64_FEATURE_MASK(ID_AA64MMFR1_EL1_VMIDBits) | \
-	ARM64_FEATURE_MASK(ID_AA64MMFR1_EL1_HPDS) | \
-	ARM64_FEATURE_MASK(ID_AA64MMFR1_EL1_PAN) | \
-	ARM64_FEATURE_MASK(ID_AA64MMFR1_EL1_SpecSEI) | \
-	ARM64_FEATURE_MASK(ID_AA64MMFR1_EL1_ETS) \
-	)
-
-/*
- * Allow for protected VMs:
- * - Common not Private translations
- * - User Access Override
- * - IESB bit in the SCTLR_ELx registers
- * - Unaligned single-copy atomicity and atomic functions
- * - ESR_ELx.EC value on an exception by read access to feature ID space
- * - TTL field in address operations.
- * - Break-before-make sequences when changing translation block size
- * - E0PDx mechanism
- */
-#define PVM_ID_AA64MMFR2_ALLOW (\
-	ARM64_FEATURE_MASK(ID_AA64MMFR2_EL1_CnP) | \
-	ARM64_FEATURE_MASK(ID_AA64MMFR2_EL1_UAO) | \
-	ARM64_FEATURE_MASK(ID_AA64MMFR2_EL1_IESB) | \
-	ARM64_FEATURE_MASK(ID_AA64MMFR2_EL1_AT) | \
-	ARM64_FEATURE_MASK(ID_AA64MMFR2_EL1_IDS) | \
-	ARM64_FEATURE_MASK(ID_AA64MMFR2_EL1_TTL) | \
-	ARM64_FEATURE_MASK(ID_AA64MMFR2_EL1_BBM) | \
-	ARM64_FEATURE_MASK(ID_AA64MMFR2_EL1_E0PD) \
-	)
-
-/*
- * No support for Scalable Vectors for protected VMs:
- *	Requires additional support from KVM, e.g., context-switching and
- *	trapping at EL2
- */
-#define PVM_ID_AA64ZFR0_ALLOW (0ULL)
-
-/*
- * No support for debug, including breakpoints, and watchpoints for protected
- * VMs:
- *	The Arm architecture mandates support for at least the Armv8 debug
- *	architecture, which would include at least 2 hardware breakpoints and
- *	watchpoints. Providing that support to protected guests adds
- *	considerable state and complexity. Therefore, the reserved value of 0 is
- *	used for debug-related fields.
- */
-#define PVM_ID_AA64DFR0_ALLOW (0ULL)
-#define PVM_ID_AA64DFR1_ALLOW (0ULL)
-
-/*
- * No support for implementation defined features.
- */
-#define PVM_ID_AA64AFR0_ALLOW (0ULL)
-#define PVM_ID_AA64AFR1_ALLOW (0ULL)
-
-/*
- * No restrictions on instructions implemented in AArch64.
- */
-#define PVM_ID_AA64ISAR0_ALLOW (\
-	ARM64_FEATURE_MASK(ID_AA64ISAR0_EL1_AES) | \
-	ARM64_FEATURE_MASK(ID_AA64ISAR0_EL1_SHA1) | \
-	ARM64_FEATURE_MASK(ID_AA64ISAR0_EL1_SHA2) | \
-	ARM64_FEATURE_MASK(ID_AA64ISAR0_EL1_CRC32) | \
-	ARM64_FEATURE_MASK(ID_AA64ISAR0_EL1_ATOMIC) | \
-	ARM64_FEATURE_MASK(ID_AA64ISAR0_EL1_RDM) | \
-	ARM64_FEATURE_MASK(ID_AA64ISAR0_EL1_SHA3) | \
-	ARM64_FEATURE_MASK(ID_AA64ISAR0_EL1_SM3) | \
-	ARM64_FEATURE_MASK(ID_AA64ISAR0_EL1_SM4) | \
-	ARM64_FEATURE_MASK(ID_AA64ISAR0_EL1_DP) | \
-	ARM64_FEATURE_MASK(ID_AA64ISAR0_EL1_FHM) | \
-	ARM64_FEATURE_MASK(ID_AA64ISAR0_EL1_TS) | \
-	ARM64_FEATURE_MASK(ID_AA64ISAR0_EL1_TLB) | \
-	ARM64_FEATURE_MASK(ID_AA64ISAR0_EL1_RNDR) \
-	)
-
-#define PVM_ID_AA64ISAR1_ALLOW (\
-	ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_DPB) | \
-	ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_APA) | \
-	ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_API) | \
-	ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_JSCVT) | \
-	ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_FCMA) | \
-	ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_LRCPC) | \
-	ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_GPA) | \
-	ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_GPI) | \
-	ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_FRINTTS) | \
-	ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_SB) | \
-	ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_SPECRES) | \
-	ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_BF16) | \
-	ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_DGH) | \
-	ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_I8MM) \
-	)
-
-#define PVM_ID_AA64ISAR2_ALLOW (\
-	ARM64_FEATURE_MASK(ID_AA64ISAR2_EL1_GPA3) | \
-	ARM64_FEATURE_MASK(ID_AA64ISAR2_EL1_APA3) \
-	)
-
-u64 pvm_read_id_reg(const struct kvm_vcpu *vcpu, u32 id);
-bool kvm_handle_pvm_sysreg(struct kvm_vcpu *vcpu, u64 *exit_code);
-bool kvm_handle_pvm_restricted(struct kvm_vcpu *vcpu, u64 *exit_code);
-int kvm_check_pvm_sysreg_table(void);
-
-#endif /* __ARM64_KVM_FIXED_CONFIG_H__ */
diff --git a/arch/arm64/kvm/hyp/include/nvhe/gfp.h b/arch/arm64/kvm/hyp/include/nvhe/gfp.h
index 0a048dc..9330b13 100644
--- a/arch/arm64/kvm/hyp/include/nvhe/gfp.h
+++ b/arch/arm64/kvm/hyp/include/nvhe/gfp.h
@@ -7,7 +7,7 @@
 #include <nvhe/memory.h>
 #include <nvhe/spinlock.h>
 
-#define HYP_NO_ORDER	USHRT_MAX
+#define HYP_NO_ORDER	0xff
 
 struct hyp_pool {
 	/*
@@ -19,11 +19,11 @@ struct hyp_pool {
 	struct list_head free_area[MAX_ORDER];
 	phys_addr_t range_start;
 	phys_addr_t range_end;
-	unsigned short max_order;
+	u8 max_order;
 };
 
 /* Allocation */
-void *hyp_alloc_pages(struct hyp_pool *pool, unsigned short order);
+void *hyp_alloc_pages(struct hyp_pool *pool, u8 order);
 void hyp_split_page(struct hyp_page *page);
 void hyp_get_page(struct hyp_pool *pool, void *addr);
 void hyp_put_page(struct hyp_pool *pool, void *addr);
diff --git a/arch/arm64/kvm/hyp/include/nvhe/iommu.h b/arch/arm64/kvm/hyp/include/nvhe/iommu.h
new file mode 100644
index 0000000..54fb965
--- /dev/null
+++ b/arch/arm64/kvm/hyp/include/nvhe/iommu.h
@@ -0,0 +1,101 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+#ifndef __ARM64_KVM_NVHE_IOMMU_H__
+#define __ARM64_KVM_NVHE_IOMMU_H__
+
+#include <linux/types.h>
+#include <asm/kvm_host.h>
+
+#include <nvhe/mem_protect.h>
+
+struct pkvm_iommu;
+
+struct pkvm_iommu_ops {
+	/*
+	 * Global driver initialization called before devices are registered.
+	 * Driver-specific arguments are passed in a buffer shared by the host.
+	 * The buffer memory has been pinned in EL2 but host retains R/W access.
+	 * Extra care must be taken when reading from it to avoid TOCTOU bugs.
+	 * If the driver maintains its own page tables, it is expected to
+	 * initialize them to all memory owned by the host.
+	 * Driver initialization lock held during callback.
+	 */
+	int (*init)(void *data, size_t size);
+
+	/*
+	 * Driver-specific validation of a device that is being registered.
+	 * All fields of the device struct have been populated.
+	 * Called with the host lock held.
+	 */
+	int (*validate)(struct pkvm_iommu *dev);
+
+	/*
+	 * Validation of a new child device that is being register by
+	 * the parent device the child selected. Called with the host lock held.
+	 */
+	int (*validate_child)(struct pkvm_iommu *dev, struct pkvm_iommu *child);
+
+	/*
+	 * Callback to apply a host stage-2 mapping change at driver level.
+	 * Called before 'host_stage2_idmap_apply' with host lock held.
+	 */
+	void (*host_stage2_idmap_prepare)(phys_addr_t start, phys_addr_t end,
+					  enum kvm_pgtable_prot prot);
+
+	/*
+	 * Callback to apply a host stage-2 mapping change at device level.
+	 * Called after 'host_stage2_idmap_prepare' with host lock held.
+	 */
+	void (*host_stage2_idmap_apply)(struct pkvm_iommu *dev,
+					phys_addr_t start, phys_addr_t end);
+
+	/*
+	 * Callback to finish a host stage-2 mapping change at device level.
+	 * Called after 'host_stage2_idmap_apply' with host lock held.
+	 */
+	void (*host_stage2_idmap_complete)(struct pkvm_iommu *dev);
+
+	/* Power management callbacks. Called with host lock held. */
+	int (*suspend)(struct pkvm_iommu *dev);
+	int (*resume)(struct pkvm_iommu *dev);
+
+	/*
+	 * Host data abort handler callback. Called with host lock held.
+	 * Returns true if the data abort has been handled.
+	 */
+	bool (*host_dabt_handler)(struct pkvm_iommu *dev,
+				  struct kvm_cpu_context *host_ctxt,
+				  u32 esr, size_t off);
+
+	/* Amount of memory allocated per-device for use by the driver. */
+	size_t data_size;
+};
+
+struct pkvm_iommu {
+	struct pkvm_iommu *parent;
+	struct list_head list;
+	struct list_head siblings;
+	struct list_head children;
+	unsigned long id;
+	const struct pkvm_iommu_ops *ops;
+	phys_addr_t pa;
+	void *va;
+	size_t size;
+	bool powered;
+	u8 flags;
+	char data[];
+};
+
+int __pkvm_iommu_driver_init(struct pkvm_iommu_driver *drv, void *data, size_t size);
+int __pkvm_iommu_register(unsigned long dev_id, unsigned long drv_id,
+			  phys_addr_t dev_pa, size_t dev_size,
+			  unsigned long parent_id, u8 flags,
+			  void *kern_mem_va);
+int __pkvm_iommu_pm_notify(unsigned long dev_id,
+			   enum pkvm_iommu_pm_event event);
+int __pkvm_iommu_finalize(int err);
+bool pkvm_iommu_host_dabt_handler(struct kvm_cpu_context *host_ctxt, u32 esr,
+				  phys_addr_t fault_pa);
+void pkvm_iommu_host_stage2_idmap(phys_addr_t start, phys_addr_t end,
+				  enum kvm_pgtable_prot prot);
+
+#endif	/* __ARM64_KVM_NVHE_IOMMU_H__ */
diff --git a/arch/arm64/kvm/hyp/include/nvhe/mem_protect.h b/arch/arm64/kvm/hyp/include/nvhe/mem_protect.h
index 80e9983..b0eabed 100644
--- a/arch/arm64/kvm/hyp/include/nvhe/mem_protect.h
+++ b/arch/arm64/kvm/hyp/include/nvhe/mem_protect.h
@@ -8,8 +8,10 @@
 #define __KVM_NVHE_MEM_PROTECT__
 #include <linux/kvm_host.h>
 #include <asm/kvm_hyp.h>
+#include <asm/kvm_mmu.h>
 #include <asm/kvm_pgtable.h>
 #include <asm/virt.h>
+#include <nvhe/pkvm.h>
 #include <nvhe/spinlock.h>
 
 /*
@@ -28,7 +30,9 @@ enum pkvm_page_state {
 					  KVM_PGTABLE_PROT_SW1,
 
 	/* Meta-states which aren't encoded directly in the PTE's SW bits */
-	PKVM_NOPAGE,
+	PKVM_NOPAGE			= BIT(0),
+	PKVM_PAGE_RESTRICTED_PROT	= BIT(1),
+	PKVM_MODULE_DONT_TOUCH		= BIT(2),
 };
 
 #define PKVM_PAGE_STATE_PROT_MASK	(KVM_PGTABLE_PROT_SW0 | KVM_PGTABLE_PROT_SW1)
@@ -43,30 +47,74 @@ static inline enum pkvm_page_state pkvm_getstate(enum kvm_pgtable_prot prot)
 	return prot & PKVM_PAGE_STATE_PROT_MASK;
 }
 
-struct host_kvm {
+struct host_mmu {
 	struct kvm_arch arch;
 	struct kvm_pgtable pgt;
 	struct kvm_pgtable_mm_ops mm_ops;
 	hyp_spinlock_t lock;
 };
-extern struct host_kvm host_kvm;
+extern struct host_mmu host_mmu;
 
-extern const u8 pkvm_hyp_id;
+/* This corresponds to page-table locking order */
+enum pkvm_component_id {
+	PKVM_ID_HOST,
+	PKVM_ID_HYP,
+	PKVM_ID_GUEST,
+	PKVM_ID_FFA,
+	PKVM_ID_PROTECTED,
+	PKVM_ID_MAX = PKVM_ID_PROTECTED,
+};
+
+extern unsigned long hyp_nr_cpus;
 
 int __pkvm_prot_finalize(void);
 int __pkvm_host_share_hyp(u64 pfn);
 int __pkvm_host_unshare_hyp(u64 pfn);
+int __pkvm_host_reclaim_page(struct pkvm_hyp_vm *vm, u64 pfn, u64 ipa);
+int __pkvm_host_donate_hyp(u64 pfn, u64 nr_pages);
+int ___pkvm_host_donate_hyp(u64 pfn, u64 nr_pages, bool accept_mmio);
+int __pkvm_host_donate_hyp_locked(u64 pfn, u64 nr_pages);
+int __pkvm_hyp_donate_host(u64 pfn, u64 nr_pages);
+int __pkvm_host_share_guest(u64 pfn, u64 gfn, struct pkvm_hyp_vcpu *vcpu);
+int __pkvm_host_donate_guest(u64 pfn, u64 gfn, struct pkvm_hyp_vcpu *vcpu);
+int __pkvm_guest_share_host(struct pkvm_hyp_vcpu *hyp_vcpu, u64 ipa);
+int __pkvm_guest_unshare_host(struct pkvm_hyp_vcpu *hyp_vcpu, u64 ipa);
+int __pkvm_guest_relinquish_to_host(struct pkvm_hyp_vcpu *vcpu,
+				    u64 ipa, u64 *ppa);
+int __pkvm_install_ioguard_page(struct pkvm_hyp_vcpu *hyp_vcpu, u64 ipa);
+int __pkvm_remove_ioguard_page(struct pkvm_hyp_vcpu *hyp_vcpu, u64 ipa);
+bool __pkvm_check_ioguard_page(struct pkvm_hyp_vcpu *hyp_vcpu);
+int __pkvm_host_share_ffa(u64 pfn, u64 nr_pages);
+int __pkvm_host_unshare_ffa(u64 pfn, u64 nr_pages);
 
 bool addr_is_memory(phys_addr_t phys);
-int host_stage2_idmap_locked(phys_addr_t addr, u64 size, enum kvm_pgtable_prot prot);
-int host_stage2_set_owner_locked(phys_addr_t addr, u64 size, u8 owner_id);
+int host_stage2_idmap_locked(phys_addr_t addr, u64 size, enum kvm_pgtable_prot prot,
+			     bool update_iommu);
+int host_stage2_set_owner_locked(phys_addr_t addr, u64 size, enum pkvm_component_id owner_id);
+int host_stage2_unmap_reg_locked(phys_addr_t start, u64 size);
 int kvm_host_prepare_stage2(void *pgt_pool_base);
+int kvm_guest_prepare_stage2(struct pkvm_hyp_vm *vm, void *pgd);
 void handle_host_mem_abort(struct kvm_cpu_context *host_ctxt);
 
+int hyp_register_host_perm_fault_handler(int (*cb)(struct kvm_cpu_context *ctxt, u64 esr, u64 addr));
+int hyp_pin_shared_mem(void *from, void *to);
+void hyp_unpin_shared_mem(void *from, void *to);
+int host_stage2_get_leaf(phys_addr_t phys, kvm_pte_t *ptep, u32 *level);
+int refill_memcache(struct kvm_hyp_memcache *mc, unsigned long min_pages,
+		    struct kvm_hyp_memcache *host_mc);
+
+int module_change_host_page_prot(u64 pfn, enum kvm_pgtable_prot prot);
+
+void destroy_hyp_vm_pgt(struct pkvm_hyp_vm *vm);
+void drain_hyp_pool(struct pkvm_hyp_vm *vm, struct kvm_hyp_memcache *mc);
+
+void psci_mem_protect_inc(u64 n);
+void psci_mem_protect_dec(u64 n);
+
 static __always_inline void __load_host_stage2(void)
 {
 	if (static_branch_likely(&kvm_protected_mode_initialized))
-		__load_stage2(&host_kvm.arch.mmu, &host_kvm.arch);
+		__load_stage2(&host_mmu.arch.mmu, &host_mmu.arch);
 	else
 		write_sysreg(0, vttbr_el2);
 }
diff --git a/arch/arm64/kvm/hyp/include/nvhe/memory.h b/arch/arm64/kvm/hyp/include/nvhe/memory.h
index 592b7ed..a392021 100644
--- a/arch/arm64/kvm/hyp/include/nvhe/memory.h
+++ b/arch/arm64/kvm/hyp/include/nvhe/memory.h
@@ -7,9 +7,16 @@
 
 #include <linux/types.h>
 
+/*
+ * Accesses to struct hyp_page flags are serialized by the host stage-2
+ * page-table lock.
+ */
+#define MODULE_OWNED_PAGE		BIT(0)
+
 struct hyp_page {
 	unsigned short refcount;
-	unsigned short order;
+	u8 order;
+	u8 flags;
 };
 
 extern u64 __hyp_vmemmap;
@@ -38,6 +45,10 @@ static inline phys_addr_t hyp_virt_to_phys(void *addr)
 #define hyp_page_to_virt(page)	__hyp_va(hyp_page_to_phys(page))
 #define hyp_page_to_pool(page)	(((struct hyp_page *)page)->pool)
 
+/*
+ * Refcounting for 'struct hyp_page'.
+ * hyp_pool::lock must be held if atomic access to the refcount is required.
+ */
 static inline int hyp_page_count(void *addr)
 {
 	struct hyp_page *p = hyp_virt_to_page(addr);
@@ -45,4 +56,27 @@ static inline int hyp_page_count(void *addr)
 	return p->refcount;
 }
 
+static inline void hyp_page_ref_inc(struct hyp_page *p)
+{
+	BUG_ON(p->refcount == USHRT_MAX);
+	p->refcount++;
+}
+
+static inline void hyp_page_ref_dec(struct hyp_page *p)
+{
+	BUG_ON(!p->refcount);
+	p->refcount--;
+}
+
+static inline int hyp_page_ref_dec_and_test(struct hyp_page *p)
+{
+	hyp_page_ref_dec(p);
+	return (p->refcount == 0);
+}
+
+static inline void hyp_set_page_refcounted(struct hyp_page *p)
+{
+	BUG_ON(p->refcount);
+	p->refcount = 1;
+}
 #endif /* __KVM_HYP_MEMORY_H */
diff --git a/arch/arm64/kvm/hyp/include/nvhe/mm.h b/arch/arm64/kvm/hyp/include/nvhe/mm.h
index 42d8eb9..92278f8 100644
--- a/arch/arm64/kvm/hyp/include/nvhe/mm.h
+++ b/arch/arm64/kvm/hyp/include/nvhe/mm.h
@@ -12,10 +12,17 @@
 
 extern struct kvm_pgtable pkvm_pgtable;
 extern hyp_spinlock_t pkvm_pgd_lock;
+extern const struct pkvm_module_ops module_ops;
+
+int hyp_create_pcpu_fixmap(void);
+void *hyp_fixmap_map(phys_addr_t phys);
+void *hyp_fixmap_map_nc(phys_addr_t phys);
+void hyp_fixmap_unmap(void);
+void hyp_poison_page(phys_addr_t phys);
 
 int hyp_create_idmap(u32 hyp_va_bits);
 int hyp_map_vectors(void);
-int hyp_back_vmemmap(phys_addr_t phys, unsigned long size, phys_addr_t back);
+int hyp_back_vmemmap(phys_addr_t back);
 int pkvm_cpu_set_vector(enum arm64_hyp_spectre_vector slot);
 int pkvm_create_mappings(void *from, void *to, enum kvm_pgtable_prot prot);
 int pkvm_create_mappings_locked(void *from, void *to, enum kvm_pgtable_prot prot);
@@ -23,17 +30,14 @@ int __pkvm_create_private_mapping(phys_addr_t phys, size_t size,
 				  enum kvm_pgtable_prot prot,
 				  unsigned long *haddr);
 int pkvm_alloc_private_va_range(size_t size, unsigned long *haddr);
+void pkvm_remove_mappings(void *from, void *to);
 
-static inline void hyp_vmemmap_range(phys_addr_t phys, unsigned long size,
-				     unsigned long *start, unsigned long *end)
-{
-	unsigned long nr_pages = size >> PAGE_SHIFT;
-	struct hyp_page *p = hyp_phys_to_page(phys);
-
-	*start = (unsigned long)p;
-	*end = *start + nr_pages * sizeof(struct hyp_page);
-	*start = ALIGN_DOWN(*start, PAGE_SIZE);
-	*end = ALIGN(*end, PAGE_SIZE);
-}
-
+int __pkvm_map_module_page(u64 pfn, void *va, enum kvm_pgtable_prot prot, bool is_protected);
+void __pkvm_unmap_module_page(u64 pfn, void *va);
+void *__pkvm_alloc_module_va(u64 nr_pages);
+#ifdef CONFIG_NVHE_EL2_DEBUG
+void assert_in_mod_range(unsigned long addr);
+#else
+static inline void assert_in_mod_range(unsigned long addr) { }
+#endif /* CONFIG_NVHE_EL2_DEBUG */
 #endif /* __KVM_HYP_MM_H */
diff --git a/arch/arm64/kvm/hyp/include/nvhe/modules.h b/arch/arm64/kvm/hyp/include/nvhe/modules.h
new file mode 100644
index 0000000..975d081
--- /dev/null
+++ b/arch/arm64/kvm/hyp/include/nvhe/modules.h
@@ -0,0 +1,28 @@
+#include <asm/kvm_pgtable.h>
+
+#define HCALL_HANDLED 0
+#define HCALL_UNHANDLED -1
+
+int __pkvm_register_host_smc_handler(bool (*cb)(struct kvm_cpu_context *));
+int __pkvm_register_default_trap_handler(bool (*cb)(struct kvm_cpu_context *));
+int __pkvm_register_illegal_abt_notifier(void (*cb)(struct kvm_cpu_context *));
+int __pkvm_register_hyp_panic_notifier(void (*cb)(struct kvm_cpu_context *));
+
+enum pkvm_psci_notification;
+int __pkvm_register_psci_notifier(void (*cb)(enum pkvm_psci_notification, struct kvm_cpu_context *));
+
+#ifdef CONFIG_MODULES
+int __pkvm_init_module(void *module_init);
+int __pkvm_register_hcall(unsigned long hfn_hyp_va);
+int handle_host_dynamic_hcall(struct kvm_cpu_context *host_ctxt);
+void __pkvm_close_module_registration(void);
+#else
+static inline int __pkvm_init_module(void *module_init) { return -EOPNOTSUPP; }
+static inline int
+__pkvm_register_hcall(unsigned long hfn_hyp_va) { return -EOPNOTSUPP; }
+static inline int handle_host_dynamic_hcall(struct kvm_cpu_context *host_ctxt)
+{
+	return HCALL_UNHANDLED;
+}
+static inline void __pkvm_close_module_registration(void) { }
+#endif
diff --git a/arch/arm64/kvm/hyp/include/nvhe/pkvm.h b/arch/arm64/kvm/hyp/include/nvhe/pkvm.h
new file mode 100644
index 0000000..b11fd81
--- /dev/null
+++ b/arch/arm64/kvm/hyp/include/nvhe/pkvm.h
@@ -0,0 +1,165 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (C) 2021 Google LLC
+ * Author: Fuad Tabba <tabba@google.com>
+ */
+
+#ifndef __ARM64_KVM_NVHE_PKVM_H__
+#define __ARM64_KVM_NVHE_PKVM_H__
+
+#include <asm/kvm_pkvm.h>
+
+#include <nvhe/gfp.h>
+#include <nvhe/spinlock.h>
+
+/*
+ * Misconfiguration events that can undermine pKVM security.
+ */
+enum pkvm_system_misconfiguration {
+	NO_DMA_ISOLATION,
+};
+
+/*
+ * Holds the relevant data for maintaining the vcpu state completely at hyp.
+ */
+struct pkvm_hyp_vcpu {
+	struct kvm_vcpu vcpu;
+
+	/* Backpointer to the host's (untrusted) vCPU instance. */
+	struct kvm_vcpu *host_vcpu;
+
+	/*
+	 * If this hyp vCPU is loaded, then this is a backpointer to the
+	 * per-cpu pointer tracking us. Otherwise, NULL if not loaded.
+	 */
+	struct pkvm_hyp_vcpu **loaded_hyp_vcpu;
+
+	/* Tracks exit code for the protected guest. */
+	u32 exit_code;
+
+	/*
+	 * Track the power state transition of a protected vcpu.
+	 * Can be in one of three states:
+	 * PSCI_0_2_AFFINITY_LEVEL_ON
+	 * PSCI_0_2_AFFINITY_LEVEL_OFF
+	 * PSCI_0_2_AFFINITY_LEVEL_PENDING
+	 */
+	int power_state;
+};
+
+/*
+ * Holds the relevant data for running a protected vm.
+ */
+struct pkvm_hyp_vm {
+	struct kvm kvm;
+
+	/* Backpointer to the host's (untrusted) KVM instance. */
+	struct kvm *host_kvm;
+
+	/* The guest's stage-2 page-table managed by the hypervisor. */
+	struct kvm_pgtable pgt;
+	struct kvm_pgtable_mm_ops mm_ops;
+	struct hyp_pool pool;
+	hyp_spinlock_t lock;
+
+	/* Primary vCPU pending entry to the pvmfw */
+	struct pkvm_hyp_vcpu *pvmfw_entry_vcpu;
+
+	/*
+	 * The number of vcpus initialized and ready to run.
+	 * Modifying this is protected by 'vm_table_lock'.
+	 */
+	unsigned int nr_vcpus;
+
+	/*
+	 * True when the guest is being torn down. When in this state, the
+	 * guest's vCPUs can't be loaded anymore, but its pages can be
+	 * reclaimed by the host.
+	 */
+	bool is_dying;
+
+	/* Array of the hyp vCPU structures for this 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)
+{
+	return container_of(hyp_vcpu->vcpu.kvm, struct pkvm_hyp_vm, kvm);
+}
+
+static inline bool vcpu_is_protected(struct kvm_vcpu *vcpu)
+{
+	if (!is_protected_kvm_enabled())
+		return false;
+
+	return vcpu->kvm->arch.pkvm.enabled;
+}
+
+static inline bool pkvm_hyp_vcpu_is_protected(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	return vcpu_is_protected(&hyp_vcpu->vcpu);
+}
+
+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);
+int __pkvm_init_vcpu(pkvm_handle_t handle, struct kvm_vcpu *host_vcpu,
+		     unsigned long vcpu_hva);
+int __pkvm_start_teardown_vm(pkvm_handle_t handle);
+int __pkvm_finalize_teardown_vm(pkvm_handle_t handle);
+int __pkvm_reclaim_dying_guest_page(pkvm_handle_t handle, u64 pfn, u64 ipa);
+
+struct pkvm_hyp_vcpu *pkvm_load_hyp_vcpu(pkvm_handle_t handle,
+					 unsigned int vcpu_idx);
+void pkvm_put_hyp_vcpu(struct pkvm_hyp_vcpu *hyp_vcpu);
+struct pkvm_hyp_vcpu *pkvm_get_loaded_hyp_vcpu(void);
+
+u64 pvm_read_id_reg(const struct kvm_vcpu *vcpu, u32 id);
+bool kvm_handle_pvm_sysreg(struct kvm_vcpu *vcpu, u64 *exit_code);
+bool kvm_handle_pvm_restricted(struct kvm_vcpu *vcpu, u64 *exit_code);
+void kvm_reset_pvm_sys_regs(struct kvm_vcpu *vcpu);
+int kvm_check_pvm_sysreg_table(void);
+
+void pkvm_reset_vcpu(struct pkvm_hyp_vcpu *hyp_vcpu);
+
+bool kvm_handle_pvm_hvc64(struct kvm_vcpu *vcpu, u64 *exit_code);
+bool kvm_hyp_handle_hvc64(struct kvm_vcpu *vcpu, u64 *exit_code);
+
+struct pkvm_hyp_vcpu *pkvm_mpidr_to_hyp_vcpu(struct pkvm_hyp_vm *vm, u64 mpidr);
+
+static inline bool pkvm_hyp_vm_has_pvmfw(struct pkvm_hyp_vm *vm)
+{
+	return vm->kvm.arch.pkvm.pvmfw_load_addr != PVMFW_INVALID_LOAD_ADDR;
+}
+
+static inline bool pkvm_ipa_range_has_pvmfw(struct pkvm_hyp_vm *vm,
+					    u64 ipa_start, u64 ipa_end)
+{
+	struct kvm_protected_vm *pkvm = &vm->kvm.arch.pkvm;
+	u64 pvmfw_load_end = pkvm->pvmfw_load_addr + pvmfw_size;
+
+	if (!pkvm_hyp_vm_has_pvmfw(vm))
+		return false;
+
+	return ipa_end > pkvm->pvmfw_load_addr && ipa_start < pvmfw_load_end;
+}
+
+static inline void pkvm_set_max_sve_vq(void)
+{
+	sve_cond_update_zcr_vq(sve_vq_from_vl(kvm_host_sve_max_vl) - 1,
+			       SYS_ZCR_EL2);
+}
+
+int pkvm_load_pvmfw_pages(struct pkvm_hyp_vm *vm, u64 ipa, phys_addr_t phys,
+			  u64 size);
+void pkvm_poison_pvmfw_pages(void);
+
+#endif /* __ARM64_KVM_NVHE_PKVM_H__ */
diff --git a/arch/arm64/kvm/hyp/include/nvhe/serial.h b/arch/arm64/kvm/hyp/include/nvhe/serial.h
new file mode 100644
index 0000000..85ff8fd
--- /dev/null
+++ b/arch/arm64/kvm/hyp/include/nvhe/serial.h
@@ -0,0 +1,11 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#ifndef __ARM64_KVM_NVHE_SERIAL_H__
+#define __ARM64_KVM_NVHE_SERIAL_H__
+
+void hyp_puts(const char *s);
+void hyp_putx64(u64 x);
+void hyp_putc(char c);
+int __pkvm_register_serial_driver(void (*driver_cb)(char));
+
+#endif
diff --git a/arch/arm64/kvm/hyp/include/nvhe/spinlock.h b/arch/arm64/kvm/hyp/include/nvhe/spinlock.h
index 4652fd0..7c7ea8c 100644
--- a/arch/arm64/kvm/hyp/include/nvhe/spinlock.h
+++ b/arch/arm64/kvm/hyp/include/nvhe/spinlock.h
@@ -28,9 +28,17 @@ typedef union hyp_spinlock {
 	};
 } hyp_spinlock_t;
 
+#define __HYP_SPIN_LOCK_INITIALIZER \
+	{ .__val = 0 }
+
+#define __HYP_SPIN_LOCK_UNLOCKED \
+	((hyp_spinlock_t) __HYP_SPIN_LOCK_INITIALIZER)
+
+#define DEFINE_HYP_SPINLOCK(x)	hyp_spinlock_t x = __HYP_SPIN_LOCK_UNLOCKED
+
 #define hyp_spin_lock_init(l)						\
 do {									\
-	*(l) = (hyp_spinlock_t){ .__val = 0 };				\
+	*(l) = __HYP_SPIN_LOCK_UNLOCKED;				\
 } while (0)
 
 static inline void hyp_spin_lock(hyp_spinlock_t *lock)
diff --git a/arch/arm64/kvm/hyp/include/nvhe/trace.h b/arch/arm64/kvm/hyp/include/nvhe/trace.h
new file mode 100644
index 0000000..2aec8f7
--- /dev/null
+++ b/arch/arm64/kvm/hyp/include/nvhe/trace.h
@@ -0,0 +1,115 @@
+#ifndef __ARM64_KVM_HYP_NVHE_TRACE_H
+#define __ARM64_KVM_HYP_NVHE_TRACE_H
+
+#include <nvhe/trace.h>
+
+#include <linux/trace_events.h>
+#include <linux/ring_buffer.h>
+
+#include <asm/kvm_hyptrace.h>
+#include <asm/kvm_hypevents_defs.h>
+#include <asm/percpu.h>
+
+#ifdef CONFIG_TRACING
+
+struct hyp_buffer_page {
+	struct list_head list;
+	struct buffer_data_page *page;
+	atomic_t write;
+	atomic_t entries;
+};
+
+#define HYP_RB_NONWRITABLE	0
+#define HYP_RB_WRITABLE		1
+#define HYP_RB_WRITING		2
+
+struct hyp_rb_per_cpu {
+	struct hyp_buffer_page *tail_page;
+	struct hyp_buffer_page *reader_page;
+	struct hyp_buffer_page *head_page;
+	struct hyp_buffer_page *bpages;
+	unsigned long nr_pages;
+	atomic64_t write_stamp;
+	atomic_t pages_touched;
+	atomic_t nr_entries;
+	atomic_t status;
+	atomic_t overrun;
+};
+
+static inline bool __start_write_hyp_rb(struct hyp_rb_per_cpu *rb)
+{
+	return atomic_cmpxchg(&rb->status, HYP_RB_WRITABLE, HYP_RB_WRITING)
+		!= HYP_RB_NONWRITABLE;
+}
+
+static inline void __stop_write_hyp_rb(struct hyp_rb_per_cpu *rb)
+{
+	/*
+	 * Paired with rb_cpu_disable()
+	 */
+	atomic_set_release(&rb->status, HYP_RB_WRITABLE);
+}
+
+struct hyp_rb_per_cpu;
+DECLARE_PER_CPU(struct hyp_rb_per_cpu, trace_rb);
+
+void *rb_reserve_trace_entry(struct hyp_rb_per_cpu *cpu_buffer, unsigned long length);
+
+int __pkvm_load_tracing(unsigned long pack_va, size_t pack_size);
+void __pkvm_teardown_tracing(void);
+int __pkvm_enable_tracing(bool enable);
+int __pkvm_rb_swap_reader_page(int cpu);
+int __pkvm_rb_update_footers(int cpu);
+int __pkvm_enable_event(unsigned short id, bool enable);
+
+#define HYP_EVENT(__name, __proto, __struct, __assign, __printk)		\
+	HYP_EVENT_FORMAT(__name, __struct);					\
+	extern atomic_t __name##_enabled;					\
+	extern unsigned short hyp_event_id_##__name;				\
+	static inline void trace_##__name(__proto)				\
+	{									\
+		size_t length = sizeof(struct trace_hyp_format_##__name);	\
+		struct hyp_rb_per_cpu *rb = this_cpu_ptr(&trace_rb);		\
+		struct trace_hyp_format_##__name *__entry;			\
+										\
+		if (!atomic_read(&__name##_enabled))				\
+			return;							\
+		if (!__start_write_hyp_rb(rb))					\
+			return;							\
+		__entry = rb_reserve_trace_entry(rb, length);			\
+		__entry->hdr.id = hyp_event_id_##__name;			\
+		__assign							\
+		__stop_write_hyp_rb(rb);					\
+	}
+
+/* TODO: atomic_t to static_branch */
+
+#else
+static inline int __pkvm_load_tracing(unsigned long pack_va, size_t pack_size)
+{
+	return -ENODEV;
+}
+
+static inline void __pkvm_teardown_tracing(void) { }
+
+static inline int __pkvm_enable_tracing(bool enable) { return -ENODEV; }
+
+static inline int __pkvm_rb_swap_reader_page(int cpu)
+{
+	return -ENODEV;
+}
+
+static inline int __pkvm_rb_update_footers(int cpu)
+{
+	return -ENODEV;
+}
+
+#define HYP_EVENT(__name, __proto, __struct, __assign, __printk)	\
+	static inline void trace_##__name(__proto) {}
+
+static inline int __pkvm_enable_event(unsigned short id, bool enable)
+{
+	return -ENODEV;
+}
+#endif
+#endif
diff --git a/arch/arm64/kvm/hyp/include/nvhe/trap_handler.h b/arch/arm64/kvm/hyp/include/nvhe/trap_handler.h
index 45a84f0..1e6d995 100644
--- a/arch/arm64/kvm/hyp/include/nvhe/trap_handler.h
+++ b/arch/arm64/kvm/hyp/include/nvhe/trap_handler.h
@@ -15,6 +15,4 @@
 #define DECLARE_REG(type, name, ctxt, reg)	\
 				type name = (type)cpu_reg(ctxt, (reg))
 
-void __pkvm_vcpu_init_traps(struct kvm_vcpu *vcpu);
-
 #endif /* __ARM64_KVM_NVHE_TRAP_HANDLER_H__ */
diff --git a/arch/arm64/kvm/hyp/nvhe/.gitignore b/arch/arm64/kvm/hyp/nvhe/.gitignore
index 5b6c43c..899547d8 100644
--- a/arch/arm64/kvm/hyp/nvhe/.gitignore
+++ b/arch/arm64/kvm/hyp/nvhe/.gitignore
@@ -1,4 +1,3 @@
 # SPDX-License-Identifier: GPL-2.0-only
-gen-hyprel
 hyp.lds
 hyp-reloc.S
diff --git a/arch/arm64/kvm/hyp/nvhe/Makefile b/arch/arm64/kvm/hyp/nvhe/Makefile
index be0a2bc..3283c43 100644
--- a/arch/arm64/kvm/hyp/nvhe/Makefile
+++ b/arch/arm64/kvm/hyp/nvhe/Makefile
@@ -1,111 +1,21 @@
 # SPDX-License-Identifier: GPL-2.0
-#
-# Makefile for Kernel-based Virtual Machine module, HYP/nVHE part
-#
-
-asflags-y := -D__KVM_NVHE_HYPERVISOR__ -D__DISABLE_EXPORTS
-
-# Tracepoint and MMIO logging symbols should not be visible at nVHE KVM as
-# there is no way to execute them and any such MMIO access from nVHE KVM
-# will explode instantly (Words of Marc Zyngier). So introduce a generic flag
-# __DISABLE_TRACE_MMIO__ to disable MMIO tracing for nVHE KVM.
-ccflags-y := -D__KVM_NVHE_HYPERVISOR__ -D__DISABLE_EXPORTS -D__DISABLE_TRACE_MMIO__
-ccflags-y += -fno-stack-protector	\
-	     -DDISABLE_BRANCH_PROFILING	\
-	     $(DISABLE_STACKLEAK_PLUGIN)
-
-hostprogs := gen-hyprel
-HOST_EXTRACFLAGS += -I$(objtree)/include
 
 lib-objs := clear_page.o copy_page.o memcpy.o memset.o
 lib-objs := $(addprefix ../../../lib/, $(lib-objs))
 
 hyp-obj-y := timer-sr.o sysreg-sr.o debug-sr.o switch.o tlb.o hyp-init.o host.o \
 	 hyp-main.o hyp-smp.o psci-relay.o early_alloc.o page_alloc.o \
-	 cache.o setup.o mm.o mem_protect.o sys_regs.o pkvm.o stacktrace.o
+	 cache.o setup.o mm.o mem_protect.o sys_regs.o pkvm.o stacktrace.o ffa.o iommu.o \
+	 serial.o
 hyp-obj-y += ../vgic-v3-sr.o ../aarch32.o ../vgic-v2-cpuif-proxy.o ../entry.o \
 	 ../fpsimd.o ../hyp-entry.o ../exception.o ../pgtable.o
+hyp-obj-$(CONFIG_TRACING) += clock.o events.o trace.o
 hyp-obj-$(CONFIG_DEBUG_LIST) += list_debug.o
+hyp-obj-$(CONFIG_MODULES) += modules.o
 hyp-obj-y += $(lib-objs)
 
-##
-## Build rules for compiling nVHE hyp code
-## Output of this folder is `kvm_nvhe.o`, a partially linked object
-## file containing all nVHE hyp code and data.
-##
-
-hyp-obj := $(patsubst %.o,%.nvhe.o,$(hyp-obj-y))
-obj-y := kvm_nvhe.o
-targets += $(hyp-obj) kvm_nvhe.tmp.o kvm_nvhe.rel.o hyp.lds hyp-reloc.S hyp-reloc.o
-
-# 1) Compile all source files to `.nvhe.o` object files. The file extension
-#    avoids file name clashes for files shared with VHE.
-$(obj)/%.nvhe.o: $(src)/%.c FORCE
-	$(call if_changed_rule,cc_o_c)
-$(obj)/%.nvhe.o: $(src)/%.S FORCE
-	$(call if_changed_rule,as_o_S)
-
-# 2) Compile linker script.
 $(obj)/hyp.lds: $(src)/hyp.lds.S FORCE
 	$(call if_changed_dep,cpp_lds_S)
 
-# 3) Partially link all '.nvhe.o' files and apply the linker script.
-#    Prefixes names of ELF sections with '.hyp', eg. '.hyp.text'.
-#    Note: The following rule assumes that the 'ld' rule puts LDFLAGS before
-#          the list of dependencies to form '-T $(obj)/hyp.lds'. This is to
-#          keep the dependency on the target while avoiding an error from
-#          GNU ld if the linker script is passed to it twice.
-LDFLAGS_kvm_nvhe.tmp.o := -r -T
-$(obj)/kvm_nvhe.tmp.o: $(obj)/hyp.lds $(addprefix $(obj)/,$(hyp-obj)) FORCE
-	$(call if_changed,ld)
-
-# 4) Generate list of hyp code/data positions that need to be relocated at
-#    runtime. Because the hypervisor is part of the kernel binary, relocations
-#    produce a kernel VA. We enumerate relocations targeting hyp at build time
-#    and convert the kernel VAs at those positions to hyp VAs.
-$(obj)/hyp-reloc.S: $(obj)/kvm_nvhe.tmp.o $(obj)/gen-hyprel FORCE
-	$(call if_changed,hyprel)
-
-# 5) Compile hyp-reloc.S and link it into the existing partially linked object.
-#    The object file now contains a section with pointers to hyp positions that
-#    will contain kernel VAs at runtime. These pointers have relocations on them
-#    so that they get updated as the hyp object is linked into `vmlinux`.
-LDFLAGS_kvm_nvhe.rel.o := -r
-$(obj)/kvm_nvhe.rel.o: $(obj)/kvm_nvhe.tmp.o $(obj)/hyp-reloc.o FORCE
-	$(call if_changed,ld)
-
-# 6) Produce the final 'kvm_nvhe.o', ready to be linked into 'vmlinux'.
-#    Prefixes names of ELF symbols with '__kvm_nvhe_'.
-$(obj)/kvm_nvhe.o: $(obj)/kvm_nvhe.rel.o FORCE
-	$(call if_changed,hypcopy)
-
-# The HYPREL command calls `gen-hyprel` to generate an assembly file with
-# a list of relocations targeting hyp code/data.
-quiet_cmd_hyprel = HYPREL  $@
-      cmd_hyprel = $(obj)/gen-hyprel $< > $@
-
-# The HYPCOPY command uses `objcopy` to prefix all ELF symbol names
-# to avoid clashes with VHE code/data.
-quiet_cmd_hypcopy = HYPCOPY $@
-      cmd_hypcopy = $(OBJCOPY) --prefix-symbols=__kvm_nvhe_ $< $@
-
-# Remove ftrace, Shadow Call Stack, and CFI CFLAGS.
-# This is equivalent to the 'notrace', '__noscs', and '__nocfi' annotations.
-KBUILD_CFLAGS := $(filter-out $(CC_FLAGS_FTRACE) $(CC_FLAGS_SCS) $(CC_FLAGS_CFI), $(KBUILD_CFLAGS))
-# Starting from 13.0.0 llvm emits SHT_REL section '.llvm.call-graph-profile'
-# when profile optimization is applied. gen-hyprel does not support SHT_REL and
-# causes a build failure. Remove profile optimization flags.
-KBUILD_CFLAGS := $(filter-out -fprofile-sample-use=% -fprofile-use=%, $(KBUILD_CFLAGS))
-
-# KVM nVHE code is run at a different exception code with a different map, so
-# compiler instrumentation that inserts callbacks or checks into the code may
-# cause crashes. Just disable it.
-GCOV_PROFILE	:= n
-KASAN_SANITIZE	:= n
-KCSAN_SANITIZE	:= n
-UBSAN_SANITIZE	:= n
-KCOV_INSTRUMENT	:= n
-
-# Skip objtool checking for this directory because nVHE code is compiled with
-# non-standard build rules.
-OBJECT_FILES_NON_STANDARD := y
+include $(srctree)/arch/arm64/kvm/hyp/nvhe/Makefile.nvhe
+obj-y := kvm_nvhe.o
diff --git a/arch/arm64/kvm/hyp/nvhe/Makefile.module b/arch/arm64/kvm/hyp/nvhe/Makefile.module
new file mode 100644
index 0000000..d3ad446
--- /dev/null
+++ b/arch/arm64/kvm/hyp/nvhe/Makefile.module
@@ -0,0 +1,6 @@
+# SPDX-License-Identifier: GPL-2.0
+
+$(obj)/hyp.lds: arch/arm64/kvm/hyp/nvhe/module.lds.S FORCE
+	$(call if_changed_dep,cpp_lds_S)
+
+include $(srctree)/arch/arm64/kvm/hyp/nvhe/Makefile.nvhe
diff --git a/arch/arm64/kvm/hyp/nvhe/Makefile.nvhe b/arch/arm64/kvm/hyp/nvhe/Makefile.nvhe
new file mode 100644
index 0000000..f7d9d6e
--- /dev/null
+++ b/arch/arm64/kvm/hyp/nvhe/Makefile.nvhe
@@ -0,0 +1,95 @@
+# SPDX-License-Identifier: GPL-2.0
+#
+# Makefile for Kernel-based Virtual Machine module, HYP/nVHE part
+#
+
+asflags-y := -D__KVM_NVHE_HYPERVISOR__ -D__DISABLE_EXPORTS
+
+# Tracepoint and MMIO logging symbols should not be visible at nVHE KVM as
+# there is no way to execute them and any such MMIO access from nVHE KVM
+# will explode instantly (Words of Marc Zyngier). So introduce a generic flag
+# __DISABLE_TRACE_MMIO__ to disable MMIO tracing for nVHE KVM.
+ccflags-y := -D__KVM_NVHE_HYPERVISOR__ -D__DISABLE_EXPORTS -D__DISABLE_TRACE_MMIO__
+ccflags-y += -fno-stack-protector	\
+	     -DDISABLE_BRANCH_PROFILING	\
+	     $(DISABLE_STACKLEAK_PLUGIN)
+
+HYPREL := arch/arm64/tools/gen-hyprel
+
+##
+## Build rules for compiling nVHE hyp code
+## Output of this folder is `kvm_nvhe.o`, a partially linked object
+## file containing all nVHE hyp code and data.
+##
+
+hyp-obj := $(patsubst %.o,%.nvhe.o,$(hyp-obj-y))
+targets += $(hyp-obj) kvm_nvhe.tmp.o kvm_nvhe.rel.o hyp.lds hyp-reloc.S hyp-reloc.o
+
+# 1) Compile all source files to `.nvhe.o` object files. The file extension
+#    avoids file name clashes for files shared with VHE.
+$(obj)/%.nvhe.o: $(src)/%.c FORCE
+	$(call if_changed_rule,cc_o_c)
+$(obj)/%.nvhe.o: $(src)/%.S FORCE
+	$(call if_changed_rule,as_o_S)
+
+# 2) Partially link all '.nvhe.o' files and apply the linker script.
+#    Prefixes names of ELF sections with '.hyp', eg. '.hyp.text'.
+#    Note: The following rule assumes that the 'ld' rule puts LDFLAGS before
+#          the list of dependencies to form '-T $(obj)/hyp.lds'. This is to
+#          keep the dependency on the target while avoiding an error from
+#          GNU ld if the linker script is passed to it twice.
+LDFLAGS_kvm_nvhe.tmp.o := -r -T
+$(obj)/kvm_nvhe.tmp.o: $(obj)/hyp.lds $(addprefix $(obj)/,$(hyp-obj)) FORCE
+	$(call if_changed,ld)
+
+# 3) Generate list of hyp code/data positions that need to be relocated at
+#    runtime. Because the hypervisor is part of the kernel binary, relocations
+#    produce a kernel VA. We enumerate relocations targeting hyp at build time
+#    and convert the kernel VAs at those positions to hyp VAs.
+$(obj)/hyp-reloc.S: $(obj)/kvm_nvhe.tmp.o FORCE
+	$(call if_changed,hyprel)
+
+# 4) Compile hyp-reloc.S and link it into the existing partially linked object.
+#    The object file now contains a section with pointers to hyp positions that
+#    will contain kernel VAs at runtime. These pointers have relocations on them
+#    so that they get updated as the hyp object is linked into `vmlinux`.
+LDFLAGS_kvm_nvhe.rel.o := -r
+$(obj)/kvm_nvhe.rel.o: $(obj)/kvm_nvhe.tmp.o $(obj)/hyp-reloc.o FORCE
+	$(call if_changed,ld)
+
+# 5) Produce the final 'kvm_nvhe.o', ready to be linked into 'vmlinux'.
+#    Prefixes names of ELF symbols with '__kvm_nvhe_'.
+$(obj)/kvm_nvhe.o: $(obj)/kvm_nvhe.rel.o FORCE
+	$(call if_changed,hypcopy)
+
+# The HYPREL command calls `gen-hyprel` to generate an assembly file with
+# a list of relocations targeting hyp code/data.
+quiet_cmd_hyprel = HYPREL  $@
+      cmd_hyprel = $(HYPREL) $< > $@
+
+# The HYPCOPY command uses `objcopy` to prefix all ELF symbol names
+# to avoid clashes with VHE code/data.
+quiet_cmd_hypcopy = HYPCOPY $@
+      cmd_hypcopy = $(OBJCOPY) --prefix-symbols=__kvm_nvhe_ $< $@
+
+# Remove ftrace, Shadow Call Stack, and CFI CFLAGS.
+# This is equivalent to the 'notrace', '__noscs', and '__nocfi' annotations.
+KBUILD_CFLAGS := $(filter-out $(CC_FLAGS_FTRACE) $(CC_FLAGS_SCS) $(CC_FLAGS_CFI), $(KBUILD_CFLAGS))
+# Starting from 13.0.0 llvm emits SHT_REL section '.llvm.call-graph-profile'
+# when profile optimization is applied. gen-hyprel does not support SHT_REL and
+# causes a build failure. Remove profile optimization flags.
+KBUILD_CFLAGS := $(filter-out -fprofile-sample-use=% -fprofile-use=%, $(KBUILD_CFLAGS))
+KBUILD_CFLAGS += -fno-asynchronous-unwind-tables -fno-unwind-tables
+
+# KVM nVHE code is run at a different exception code with a different map, so
+# compiler instrumentation that inserts callbacks or checks into the code may
+# cause crashes. Just disable it.
+GCOV_PROFILE	:= n
+KASAN_SANITIZE	:= n
+KCSAN_SANITIZE	:= n
+UBSAN_SANITIZE	:= n
+KCOV_INSTRUMENT	:= n
+
+# Skip objtool checking for this directory because nVHE code is compiled with
+# non-standard build rules.
+OBJECT_FILES_NON_STANDARD := y
diff --git a/arch/arm64/kvm/hyp/nvhe/cache.S b/arch/arm64/kvm/hyp/nvhe/cache.S
index 0c367eb..85936c1 100644
--- a/arch/arm64/kvm/hyp/nvhe/cache.S
+++ b/arch/arm64/kvm/hyp/nvhe/cache.S
@@ -12,3 +12,14 @@
 	ret
 SYM_FUNC_END(__pi_dcache_clean_inval_poc)
 SYM_FUNC_ALIAS(dcache_clean_inval_poc, __pi_dcache_clean_inval_poc)
+
+SYM_FUNC_START(__pi_icache_inval_pou)
+alternative_if ARM64_HAS_CACHE_DIC
+	isb
+	ret
+alternative_else_nop_endif
+
+	invalidate_icache_by_line x0, x1, x2, x3
+	ret
+SYM_FUNC_END(__pi_icache_inval_pou)
+SYM_FUNC_ALIAS(icache_inval_pou, __pi_icache_inval_pou)
diff --git a/arch/arm64/kvm/hyp/nvhe/clock.c b/arch/arm64/kvm/hyp/nvhe/clock.c
new file mode 100644
index 0000000..4ff87e8
--- /dev/null
+++ b/arch/arm64/kvm/hyp/nvhe/clock.c
@@ -0,0 +1,42 @@
+// SPDX-License-Identifier: GPL-2.0
+#include <nvhe/clock.h>
+
+#include <asm/arch_timer.h>
+#include <asm/div64.h>
+
+static struct kvm_nvhe_clock_data trace_clock_data;
+
+/*
+ * Update without any locks! This is fine because tracing, the sole user of this
+ * clock is ordering the memory and protects from races between read and
+ * updates.
+ */
+void trace_clock_update(struct kvm_nvhe_clock_data *data)
+{
+	trace_clock_data.mult = data->mult;
+	trace_clock_data.shift = data->shift;
+	trace_clock_data.epoch_ns = data->epoch_ns;
+	trace_clock_data.epoch_cyc = data->epoch_cyc;
+}
+
+/*
+ * This clock is relying on host provided slope and epoch values to return
+ * something synchronized with the host. The downside is we can't trust the
+ * output which must not be used for anything else than debugging.
+ */
+u64 trace_clock(void)
+{
+	u64 cyc = __arch_counter_get_cntpct() - trace_clock_data.epoch_cyc;
+	__uint128_t ns;
+
+	/*
+	 * The host kernel can avoid the 64-bits overflow of the multiplication
+	 * by updating the epoch value with a timer (see
+	 * kernel/time/clocksource.c). The hypervisor doesn't have that option,
+	 * so let's do a more costly 128-bits mult here.
+	 */
+	ns = (__uint128_t)cyc * trace_clock_data.mult;
+	ns >>= trace_clock_data.shift;
+
+	return (u64)ns + trace_clock_data.epoch_ns;
+}
diff --git a/arch/arm64/kvm/hyp/nvhe/events.c b/arch/arm64/kvm/hyp/nvhe/events.c
new file mode 100644
index 0000000..69b300a
--- /dev/null
+++ b/arch/arm64/kvm/hyp/nvhe/events.c
@@ -0,0 +1,42 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (C) 2023 Google LLC
+ */
+
+#include <nvhe/trace.h>
+#include <nvhe/mm.h>
+
+extern struct hyp_event_id __hyp_event_ids_start[];
+extern struct hyp_event_id __hyp_event_ids_end[];
+
+#undef HYP_EVENT
+#define HYP_EVENT(__name, __proto, __struct, __assign, __printk)	\
+	atomic_t __ro_after_init __name##_enabled = ATOMIC_INIT(0);	\
+	struct hyp_event_id hyp_event_id_##__name __section(".hyp.event_ids") = {	\
+		.data = (void *)&__name##_enabled,			\
+	}
+
+#include <asm/kvm_hypevents.h>
+
+int __pkvm_enable_event(unsigned short id, bool enable)
+{
+	struct hyp_event_id *event_id = __hyp_event_ids_start;
+	atomic_t *enable_key;
+
+	for (; (unsigned long)event_id < (unsigned long)__hyp_event_ids_end;
+	     event_id++) {
+		if (event_id->id != id)
+			continue;
+
+		enable_key = (atomic_t *)event_id->data;
+		enable_key = hyp_fixmap_map(__hyp_pa(enable_key));
+
+		atomic_set(enable_key, enable);
+
+		hyp_fixmap_unmap();
+
+		return 0;
+	}
+
+	return -EINVAL;
+}
diff --git a/arch/arm64/kvm/hyp/nvhe/ffa.c b/arch/arm64/kvm/hyp/nvhe/ffa.c
new file mode 100644
index 0000000..6b8e6b9
--- /dev/null
+++ b/arch/arm64/kvm/hyp/nvhe/ffa.c
@@ -0,0 +1,741 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * FF-A v1.0 proxy to filter out invalid memory-sharing SMC calls issued by
+ * the host. FF-A is a slightly more palatable abbreviation of "Arm Firmware
+ * Framework for Arm A-profile", which is specified by Arm in document
+ * number DEN0077.
+ *
+ * Copyright (C) 2022 - Google LLC
+ * Author: Andrew Walbran <qwandor@google.com>
+ *
+ * This driver hooks into the SMC trapping logic for the host and intercepts
+ * all calls falling within the FF-A range. Each call is either:
+ *
+ *	- Forwarded on unmodified to the SPMD at EL3
+ *	- Rejected as "unsupported"
+ *	- Accompanied by a host stage-2 page-table check/update and reissued
+ *
+ * Consequently, any attempts by the host to make guest memory pages
+ * accessible to the secure world using FF-A will be detected either here
+ * (in the case that the memory is already owned by the guest) or during
+ * donation to the guest (in the case that the memory was previously shared
+ * with the secure world).
+ *
+ * To allow the rolling-back of page-table updates and FF-A calls in the
+ * event of failure, operations involving the RXTX buffers are locked for
+ * the duration and are therefore serialised.
+ */
+
+#include <linux/arm_ffa.h>
+#include <asm/kvm_pkvm.h>
+
+#include <nvhe/arm-smccc.h>
+#include <nvhe/ffa.h>
+#include <nvhe/mem_protect.h>
+#include <nvhe/memory.h>
+#include <nvhe/trap_handler.h>
+#include <nvhe/spinlock.h>
+
+/*
+ * "ID value 0 must be returned at the Non-secure physical FF-A instance"
+ * We share this ID with the host.
+ */
+#define HOST_FFA_ID	0
+
+/*
+ * A buffer to hold the maximum descriptor size we can see from the host,
+ * which is required when the SPMD returns a fragmented FFA_MEM_RETRIEVE_RESP
+ * when resolving the handle on the reclaim path.
+ */
+struct kvm_ffa_descriptor_buffer {
+	void	*buf;
+	size_t	len;
+};
+
+static struct kvm_ffa_descriptor_buffer ffa_desc_buf;
+
+struct kvm_ffa_buffers {
+	hyp_spinlock_t lock;
+	void *tx;
+	void *rx;
+};
+
+/*
+ * Note that we don't currently lock these buffers explicitly, instead
+ * relying on the locking of the host FFA buffers as we only have one
+ * client.
+ */
+static struct kvm_ffa_buffers hyp_buffers;
+static struct kvm_ffa_buffers host_buffers;
+
+static void ffa_to_smccc_error(struct arm_smccc_res *res, u64 ffa_errno)
+{
+	*res = (struct arm_smccc_res) {
+		.a0	= FFA_ERROR,
+		.a2	= ffa_errno,
+	};
+}
+
+static void ffa_to_smccc_res_prop(struct arm_smccc_res *res, int ret, u64 prop)
+{
+	if (ret == FFA_RET_SUCCESS) {
+		*res = (struct arm_smccc_res) { .a0 = FFA_SUCCESS,
+						.a2 = prop };
+	} else {
+		ffa_to_smccc_error(res, ret);
+	}
+}
+
+static void ffa_to_smccc_res(struct arm_smccc_res *res, int ret)
+{
+	ffa_to_smccc_res_prop(res, ret, 0);
+}
+
+static void ffa_set_retval(struct kvm_cpu_context *ctxt,
+			   struct arm_smccc_res *res)
+{
+	cpu_reg(ctxt, 0) = res->a0;
+	cpu_reg(ctxt, 1) = res->a1;
+	cpu_reg(ctxt, 2) = res->a2;
+	cpu_reg(ctxt, 3) = res->a3;
+}
+
+static bool is_ffa_call(u64 func_id)
+{
+	return ARM_SMCCC_IS_FAST_CALL(func_id) &&
+	       ARM_SMCCC_OWNER_NUM(func_id) == ARM_SMCCC_OWNER_STANDARD &&
+	       ARM_SMCCC_FUNC_NUM(func_id) >= FFA_MIN_FUNC_NUM &&
+	       ARM_SMCCC_FUNC_NUM(func_id) <= FFA_MAX_FUNC_NUM;
+}
+
+static int spmd_map_ffa_buffers(u64 ffa_page_count)
+{
+	struct arm_smccc_res res;
+
+	arm_smccc_1_1_smc(FFA_FN64_RXTX_MAP,
+			  hyp_virt_to_phys(hyp_buffers.tx),
+			  hyp_virt_to_phys(hyp_buffers.rx),
+			  ffa_page_count,
+			  0, 0, 0, 0,
+			  &res);
+
+	return res.a0 == FFA_SUCCESS ? FFA_RET_SUCCESS : res.a2;
+}
+
+static int spmd_unmap_ffa_buffers(void)
+{
+	struct arm_smccc_res res;
+
+	arm_smccc_1_1_smc(FFA_RXTX_UNMAP,
+			  HOST_FFA_ID,
+			  0, 0, 0, 0, 0, 0,
+			  &res);
+
+	return res.a0 == FFA_SUCCESS ? FFA_RET_SUCCESS : res.a2;
+}
+
+static void spmd_mem_frag_tx(struct arm_smccc_res *res, u32 handle_lo,
+			     u32 handle_hi, u32 fraglen, u32 endpoint_id)
+{
+	arm_smccc_1_1_smc(FFA_MEM_FRAG_TX,
+			  handle_lo, handle_hi, fraglen, endpoint_id,
+			  0, 0, 0,
+			  res);
+}
+
+static void spmd_mem_frag_rx(struct arm_smccc_res *res, u32 handle_lo,
+			     u32 handle_hi, u32 fragoff)
+{
+	arm_smccc_1_1_smc(FFA_MEM_FRAG_RX,
+			  handle_lo, handle_hi, fragoff, HOST_FFA_ID,
+			  0, 0, 0,
+			  res);
+}
+
+static void spmd_mem_xfer(struct arm_smccc_res *res, u64 func_id, u32 len,
+			  u32 fraglen)
+{
+	arm_smccc_1_1_smc(func_id, len, fraglen,
+			  0, 0, 0, 0, 0,
+			  res);
+}
+
+static void spmd_mem_reclaim(struct arm_smccc_res *res, u32 handle_lo,
+			     u32 handle_hi, u32 flags)
+{
+	arm_smccc_1_1_smc(FFA_MEM_RECLAIM,
+			  handle_lo, handle_hi, flags,
+			  0, 0, 0, 0,
+			  res);
+}
+
+static void spmd_retrieve_req(struct arm_smccc_res *res, u32 len)
+{
+	arm_smccc_1_1_smc(FFA_FN64_MEM_RETRIEVE_REQ,
+			  len, len,
+			  0, 0, 0, 0, 0,
+			  res);
+}
+
+static void do_ffa_rxtx_map(struct arm_smccc_res *res,
+			    struct kvm_cpu_context *ctxt)
+{
+	DECLARE_REG(phys_addr_t, tx, ctxt, 1);
+	DECLARE_REG(phys_addr_t, rx, ctxt, 2);
+	DECLARE_REG(u32, npages, ctxt, 3);
+	int ret = 0;
+	void *rx_virt, *tx_virt;
+
+	if (npages != (KVM_FFA_MBOX_NR_PAGES * PAGE_SIZE) / FFA_PAGE_SIZE) {
+		ret = FFA_RET_INVALID_PARAMETERS;
+		goto out;
+	}
+
+	if (!PAGE_ALIGNED(tx) || !PAGE_ALIGNED(rx)) {
+		ret = FFA_RET_INVALID_PARAMETERS;
+		goto out;
+	}
+
+	hyp_spin_lock(&host_buffers.lock);
+	if (host_buffers.tx) {
+		ret = FFA_RET_DENIED;
+		goto out_unlock;
+	}
+
+	ret = spmd_map_ffa_buffers(npages);
+	if (ret)
+		goto out_unlock;
+
+	ret = __pkvm_host_share_hyp(hyp_phys_to_pfn(tx));
+	if (ret) {
+		ret = FFA_RET_INVALID_PARAMETERS;
+		goto err_unmap;
+	}
+
+	ret = __pkvm_host_share_hyp(hyp_phys_to_pfn(rx));
+	if (ret) {
+		ret = FFA_RET_INVALID_PARAMETERS;
+		goto err_unshare_tx;
+	}
+
+	tx_virt = hyp_phys_to_virt(tx);
+	ret = hyp_pin_shared_mem(tx_virt, tx_virt + 1);
+	if (ret) {
+		ret = FFA_RET_INVALID_PARAMETERS;
+		goto err_unshare_rx;
+	}
+
+	rx_virt = hyp_phys_to_virt(rx);
+	ret = hyp_pin_shared_mem(rx_virt, rx_virt + 1);
+	if (ret) {
+		ret = FFA_RET_INVALID_PARAMETERS;
+		goto err_unpin_tx;
+	}
+
+	host_buffers.tx = tx_virt;
+	host_buffers.rx = rx_virt;
+
+out_unlock:
+	hyp_spin_unlock(&host_buffers.lock);
+out:
+	ffa_to_smccc_res(res, ret);
+	return;
+
+err_unpin_tx:
+	hyp_unpin_shared_mem(tx_virt, tx_virt + 1);
+err_unshare_rx:
+	__pkvm_host_unshare_hyp(hyp_phys_to_pfn(rx));
+err_unshare_tx:
+	__pkvm_host_unshare_hyp(hyp_phys_to_pfn(tx));
+err_unmap:
+	spmd_unmap_ffa_buffers();
+	goto out_unlock;
+}
+
+static void do_ffa_rxtx_unmap(struct arm_smccc_res *res,
+			      struct kvm_cpu_context *ctxt)
+{
+	DECLARE_REG(u32, id, ctxt, 1);
+	int ret = 0;
+
+	if (id != HOST_FFA_ID) {
+		ret = FFA_RET_INVALID_PARAMETERS;
+		goto out;
+	}
+
+	hyp_spin_lock(&host_buffers.lock);
+	if (!host_buffers.tx) {
+		ret = FFA_RET_INVALID_PARAMETERS;
+		goto out_unlock;
+	}
+
+	hyp_unpin_shared_mem(host_buffers.tx, host_buffers.tx + 1);
+	WARN_ON(__pkvm_host_unshare_hyp(hyp_virt_to_pfn(host_buffers.tx)));
+	host_buffers.tx = NULL;
+
+	hyp_unpin_shared_mem(host_buffers.rx, host_buffers.rx + 1);
+	WARN_ON(__pkvm_host_unshare_hyp(hyp_virt_to_pfn(host_buffers.rx)));
+	host_buffers.rx = NULL;
+
+	spmd_unmap_ffa_buffers();
+
+out_unlock:
+	hyp_spin_unlock(&host_buffers.lock);
+out:
+	ffa_to_smccc_res(res, ret);
+}
+
+static u32 __ffa_host_share_ranges(struct ffa_mem_region_addr_range *ranges,
+				   u32 nranges)
+{
+	u32 i;
+
+	for (i = 0; i < nranges; ++i) {
+		struct ffa_mem_region_addr_range *range = &ranges[i];
+		u64 sz = (u64)range->pg_cnt * FFA_PAGE_SIZE;
+		u64 pfn = hyp_phys_to_pfn(range->address);
+
+		if (!PAGE_ALIGNED(sz))
+			break;
+
+		if (__pkvm_host_share_ffa(pfn, sz / PAGE_SIZE))
+			break;
+	}
+
+	return i;
+}
+
+static u32 __ffa_host_unshare_ranges(struct ffa_mem_region_addr_range *ranges,
+				     u32 nranges)
+{
+	u32 i;
+
+	for (i = 0; i < nranges; ++i) {
+		struct ffa_mem_region_addr_range *range = &ranges[i];
+		u64 sz = (u64)range->pg_cnt * FFA_PAGE_SIZE;
+		u64 pfn = hyp_phys_to_pfn(range->address);
+
+		if (!PAGE_ALIGNED(sz))
+			break;
+
+		if (__pkvm_host_unshare_ffa(pfn, sz / PAGE_SIZE))
+			break;
+	}
+
+	return i;
+}
+
+static int ffa_host_share_ranges(struct ffa_mem_region_addr_range *ranges,
+				 u32 nranges)
+{
+	u32 nshared = __ffa_host_share_ranges(ranges, nranges);
+	int ret = 0;
+
+	if (nshared != nranges) {
+		WARN_ON(__ffa_host_unshare_ranges(ranges, nshared) != nshared);
+		ret = FFA_RET_DENIED;
+	}
+
+	return ret;
+}
+
+static int ffa_host_unshare_ranges(struct ffa_mem_region_addr_range *ranges,
+				   u32 nranges)
+{
+	u32 nunshared = __ffa_host_unshare_ranges(ranges, nranges);
+	int ret = 0;
+
+	if (nunshared != nranges) {
+		WARN_ON(__ffa_host_share_ranges(ranges, nunshared) != nunshared);
+		ret = FFA_RET_DENIED;
+	}
+
+	return ret;
+}
+
+static void do_ffa_mem_frag_tx(struct arm_smccc_res *res,
+			       struct kvm_cpu_context *ctxt)
+{
+	DECLARE_REG(u32, handle_lo, ctxt, 1);
+	DECLARE_REG(u32, handle_hi, ctxt, 2);
+	DECLARE_REG(u32, fraglen, ctxt, 3);
+	DECLARE_REG(u32, endpoint_id, ctxt, 4);
+	struct ffa_mem_region_addr_range *buf;
+	int ret = FFA_RET_INVALID_PARAMETERS;
+	u32 nr_ranges;
+
+	if (fraglen > KVM_FFA_MBOX_NR_PAGES * PAGE_SIZE)
+		goto out;
+
+	if (fraglen % sizeof(*buf))
+		goto out;
+
+	hyp_spin_lock(&host_buffers.lock);
+	if (!host_buffers.tx)
+		goto out_unlock;
+
+	buf = hyp_buffers.tx;
+	memcpy(buf, host_buffers.tx, fraglen);
+	nr_ranges = fraglen / sizeof(*buf);
+
+	ret = ffa_host_share_ranges(buf, nr_ranges);
+	if (ret) {
+		/*
+		 * We're effectively aborting the transaction, so we need
+		 * to restore the global state back to what it was prior to
+		 * transmission of the first fragment.
+		 */
+		spmd_mem_reclaim(res, handle_lo, handle_hi, 0);
+		WARN_ON(res->a0 != FFA_SUCCESS);
+		goto out_unlock;
+	}
+
+	spmd_mem_frag_tx(res, handle_lo, handle_hi, fraglen, endpoint_id);
+	if (res->a0 != FFA_SUCCESS && res->a0 != FFA_MEM_FRAG_RX)
+		WARN_ON(ffa_host_unshare_ranges(buf, nr_ranges));
+
+out_unlock:
+	hyp_spin_unlock(&host_buffers.lock);
+out:
+	if (ret)
+		ffa_to_smccc_res(res, ret);
+
+	/*
+	 * If for any reason this did not succeed, we're in trouble as we have
+	 * now lost the content of the previous fragments and we can't rollback
+	 * the host stage-2 changes. The pages previously marked as shared will
+	 * remain stuck in that state forever, hence preventing the host from
+	 * sharing/donating them again and may possibly lead to subsequent
+	 * failures, but this will not compromise confidentiality.
+	 */
+	return;
+}
+
+static __always_inline void do_ffa_mem_xfer(const u64 func_id,
+					    struct arm_smccc_res *res,
+					    struct kvm_cpu_context *ctxt)
+{
+	DECLARE_REG(u32, len, ctxt, 1);
+	DECLARE_REG(u32, fraglen, ctxt, 2);
+	DECLARE_REG(u64, addr_mbz, ctxt, 3);
+	DECLARE_REG(u32, npages_mbz, ctxt, 4);
+	struct ffa_composite_mem_region *reg;
+	struct ffa_mem_region *buf;
+	u32 offset, nr_ranges;
+	int ret = 0;
+
+	BUILD_BUG_ON(func_id != FFA_FN64_MEM_SHARE &&
+		     func_id != FFA_FN64_MEM_LEND);
+
+	if (addr_mbz || npages_mbz || fraglen > len ||
+	    fraglen > KVM_FFA_MBOX_NR_PAGES * PAGE_SIZE) {
+		ret = FFA_RET_INVALID_PARAMETERS;
+		goto out;
+	}
+
+	if (fraglen < sizeof(struct ffa_mem_region) +
+		      sizeof(struct ffa_mem_region_attributes)) {
+		ret = FFA_RET_INVALID_PARAMETERS;
+		goto out;
+	}
+
+	hyp_spin_lock(&host_buffers.lock);
+	if (!host_buffers.tx) {
+		ret = FFA_RET_INVALID_PARAMETERS;
+		goto out_unlock;
+	}
+
+	buf = hyp_buffers.tx;
+	memcpy(buf, host_buffers.tx, fraglen);
+
+	offset = buf->ep_mem_access[0].composite_off;
+	if (!offset || buf->ep_count != 1 || buf->sender_id != HOST_FFA_ID) {
+		ret = FFA_RET_INVALID_PARAMETERS;
+		goto out_unlock;
+	}
+
+	if (fraglen < offset + sizeof(struct ffa_composite_mem_region)) {
+		ret = FFA_RET_INVALID_PARAMETERS;
+		goto out_unlock;
+	}
+
+	reg = (void *)buf + offset;
+	nr_ranges = ((void *)buf + fraglen) - (void *)reg->constituents;
+	if (nr_ranges % sizeof(reg->constituents[0])) {
+		ret = FFA_RET_INVALID_PARAMETERS;
+		goto out_unlock;
+	}
+
+	nr_ranges /= sizeof(reg->constituents[0]);
+	ret = ffa_host_share_ranges(reg->constituents, nr_ranges);
+	if (ret)
+		goto out_unlock;
+
+	spmd_mem_xfer(res, func_id, len, fraglen);
+	if (fraglen != len) {
+		if (res->a0 != FFA_MEM_FRAG_RX)
+			goto err_unshare;
+
+		if (res->a3 != fraglen)
+			goto err_unshare;
+	} else if (res->a0 != FFA_SUCCESS) {
+		goto err_unshare;
+	}
+
+out_unlock:
+	hyp_spin_unlock(&host_buffers.lock);
+out:
+	if (ret)
+		ffa_to_smccc_res(res, ret);
+	return;
+
+err_unshare:
+	WARN_ON(ffa_host_unshare_ranges(reg->constituents, nr_ranges));
+	goto out_unlock;
+}
+
+static void do_ffa_mem_reclaim(struct arm_smccc_res *res,
+			       struct kvm_cpu_context *ctxt)
+{
+	DECLARE_REG(u32, handle_lo, ctxt, 1);
+	DECLARE_REG(u32, handle_hi, ctxt, 2);
+	DECLARE_REG(u32, flags, ctxt, 3);
+	struct ffa_composite_mem_region *reg;
+	u32 offset, len, fraglen, fragoff;
+	struct ffa_mem_region *buf;
+	int ret = 0;
+	u64 handle;
+
+	handle = PACK_HANDLE(handle_lo, handle_hi);
+
+	hyp_spin_lock(&host_buffers.lock);
+
+	buf = hyp_buffers.tx;
+	*buf = (struct ffa_mem_region) {
+		.sender_id	= HOST_FFA_ID,
+		.handle		= handle,
+	};
+
+	spmd_retrieve_req(res, sizeof(*buf));
+	buf = hyp_buffers.rx;
+	if (res->a0 != FFA_MEM_RETRIEVE_RESP)
+		goto out_unlock;
+
+	len = res->a1;
+	fraglen = res->a2;
+
+	offset = buf->ep_mem_access[0].composite_off;
+	/*
+	 * We can trust the SPMD to get this right, but let's at least
+	 * check that we end up with something that doesn't look _completely_
+	 * bogus.
+	 */
+	if (WARN_ON(offset > len ||
+		    fraglen > KVM_FFA_MBOX_NR_PAGES * PAGE_SIZE)) {
+		ret = FFA_RET_ABORTED;
+		goto out_unlock;
+	}
+
+	if (len > ffa_desc_buf.len) {
+		ret = FFA_RET_NO_MEMORY;
+		goto out_unlock;
+	}
+
+	buf = ffa_desc_buf.buf;
+	memcpy(buf, hyp_buffers.rx, fraglen);
+
+	for (fragoff = fraglen; fragoff < len; fragoff += fraglen) {
+		spmd_mem_frag_rx(res, handle_lo, handle_hi, fragoff);
+		if (res->a0 != FFA_MEM_FRAG_TX) {
+			ret = FFA_RET_INVALID_PARAMETERS;
+			goto out_unlock;
+		}
+
+		fraglen = res->a3;
+		memcpy((void *)buf + fragoff, hyp_buffers.rx, fraglen);
+	}
+
+	spmd_mem_reclaim(res, handle_lo, handle_hi, flags);
+	if (res->a0 != FFA_SUCCESS)
+		goto out_unlock;
+
+	reg = (void *)buf + offset;
+	/* If the SPMD was happy, then we should be too. */
+	WARN_ON(ffa_host_unshare_ranges(reg->constituents,
+					reg->addr_range_cnt));
+out_unlock:
+	hyp_spin_unlock(&host_buffers.lock);
+
+	if (ret)
+		ffa_to_smccc_res(res, ret);
+}
+
+static bool ffa_call_unsupported(u64 func_id)
+{
+	switch (func_id) {
+	/* Unsupported memory management calls */
+	case FFA_FN64_MEM_RETRIEVE_REQ:
+	case FFA_MEM_RETRIEVE_RESP:
+	case FFA_MEM_RELINQUISH:
+	case FFA_MEM_OP_PAUSE:
+	case FFA_MEM_OP_RESUME:
+	case FFA_MEM_FRAG_RX:
+	case FFA_FN64_MEM_DONATE:
+	/* Indirect message passing via RX/TX buffers */
+	case FFA_MSG_SEND:
+	case FFA_MSG_POLL:
+	case FFA_MSG_WAIT:
+	/* 32-bit variants of 64-bit calls */
+	case FFA_MSG_SEND_DIRECT_REQ:
+	case FFA_MSG_SEND_DIRECT_RESP:
+	case FFA_RXTX_MAP:
+	case FFA_MEM_DONATE:
+	case FFA_MEM_RETRIEVE_REQ:
+		return true;
+	}
+
+	return false;
+}
+
+static bool do_ffa_features(struct arm_smccc_res *res,
+			    struct kvm_cpu_context *ctxt)
+{
+	DECLARE_REG(u32, id, ctxt, 1);
+	u64 prop = 0;
+	int ret = 0;
+
+	if (ffa_call_unsupported(id)) {
+		ret = FFA_RET_NOT_SUPPORTED;
+		goto out_handled;
+	}
+
+	switch (id) {
+	case FFA_MEM_SHARE:
+	case FFA_FN64_MEM_SHARE:
+	case FFA_MEM_LEND:
+	case FFA_FN64_MEM_LEND:
+		ret = FFA_RET_SUCCESS;
+		prop = 0; /* No support for dynamic buffers */
+		goto out_handled;
+	default:
+		return false;
+	}
+
+out_handled:
+	ffa_to_smccc_res_prop(res, ret, prop);
+	return true;
+}
+
+bool kvm_host_ffa_handler(struct kvm_cpu_context *host_ctxt)
+{
+	DECLARE_REG(u64, func_id, host_ctxt, 0);
+	struct arm_smccc_res res;
+
+	if (!is_ffa_call(func_id))
+		return false;
+
+	switch (func_id) {
+	case FFA_FEATURES:
+		if (!do_ffa_features(&res, host_ctxt))
+			return false;
+		goto out_handled;
+	/* Memory management */
+	case FFA_FN64_RXTX_MAP:
+		do_ffa_rxtx_map(&res, host_ctxt);
+		goto out_handled;
+	case FFA_RXTX_UNMAP:
+		do_ffa_rxtx_unmap(&res, host_ctxt);
+		goto out_handled;
+	case FFA_MEM_SHARE:
+	case FFA_FN64_MEM_SHARE:
+		do_ffa_mem_xfer(FFA_FN64_MEM_SHARE, &res, host_ctxt);
+		goto out_handled;
+	case FFA_MEM_RECLAIM:
+		do_ffa_mem_reclaim(&res, host_ctxt);
+		goto out_handled;
+	case FFA_MEM_LEND:
+	case FFA_FN64_MEM_LEND:
+		do_ffa_mem_xfer(FFA_FN64_MEM_LEND, &res, host_ctxt);
+		goto out_handled;
+	case FFA_MEM_FRAG_TX:
+		do_ffa_mem_frag_tx(&res, host_ctxt);
+		goto out_handled;
+	}
+
+	if (!ffa_call_unsupported(func_id))
+		return false; /* Pass through */
+
+	ffa_to_smccc_error(&res, FFA_RET_NOT_SUPPORTED);
+out_handled:
+	ffa_set_retval(host_ctxt, &res);
+	return true;
+}
+
+int hyp_ffa_init(void *pages)
+{
+	struct arm_smccc_res res;
+	size_t min_rxtx_sz;
+	void *tx, *rx;
+
+	if (kvm_host_psci_config.smccc_version < ARM_SMCCC_VERSION_1_1)
+		return 0;
+
+	arm_smccc_1_1_smc(FFA_VERSION, FFA_VERSION_1_0, 0, 0, 0, 0, 0, 0, &res);
+	if (res.a0 == FFA_RET_NOT_SUPPORTED)
+		return 0;
+
+	if (res.a0 != FFA_VERSION_1_0)
+		return -EOPNOTSUPP;
+
+	arm_smccc_1_1_smc(FFA_ID_GET, 0, 0, 0, 0, 0, 0, 0, &res);
+	if (res.a0 != FFA_SUCCESS)
+		return -EOPNOTSUPP;
+
+	if (res.a2 != HOST_FFA_ID)
+		return -EINVAL;
+
+	arm_smccc_1_1_smc(FFA_FEATURES, FFA_FN64_RXTX_MAP,
+			  0, 0, 0, 0, 0, 0, &res);
+	if (res.a0 != FFA_SUCCESS)
+		return -EOPNOTSUPP;
+
+	switch (res.a2) {
+	case FFA_FEAT_RXTX_MIN_SZ_4K:
+		min_rxtx_sz = SZ_4K;
+		break;
+	case FFA_FEAT_RXTX_MIN_SZ_16K:
+		min_rxtx_sz = SZ_16K;
+		break;
+	case FFA_FEAT_RXTX_MIN_SZ_64K:
+		min_rxtx_sz = SZ_64K;
+		break;
+	default:
+		return -EINVAL;
+	}
+
+	if (min_rxtx_sz > PAGE_SIZE)
+		return -EOPNOTSUPP;
+
+	tx = pages;
+	pages += KVM_FFA_MBOX_NR_PAGES * PAGE_SIZE;
+	rx = pages;
+	pages += KVM_FFA_MBOX_NR_PAGES * PAGE_SIZE;
+
+	ffa_desc_buf = (struct kvm_ffa_descriptor_buffer) {
+		.buf	= pages,
+		.len	= PAGE_SIZE *
+			  (hyp_ffa_proxy_pages() - (2 * KVM_FFA_MBOX_NR_PAGES)),
+	};
+
+	hyp_buffers = (struct kvm_ffa_buffers) {
+		.lock	= __HYP_SPIN_LOCK_UNLOCKED,
+		.tx	= tx,
+		.rx	= rx,
+	};
+
+	host_buffers = (struct kvm_ffa_buffers) {
+		.lock	= __HYP_SPIN_LOCK_UNLOCKED,
+	};
+
+	return 0;
+}
diff --git a/arch/arm64/kvm/hyp/nvhe/hyp-init.S b/arch/arm64/kvm/hyp/nvhe/hyp-init.S
index c953fb4b..73ced9c 100644
--- a/arch/arm64/kvm/hyp/nvhe/hyp-init.S
+++ b/arch/arm64/kvm/hyp/nvhe/hyp-init.S
@@ -95,6 +95,13 @@
 	ldr	x1, [x0, #NVHE_INIT_HCR_EL2]
 	msr	hcr_el2, x1
 
+	mrs	x1, ID_AA64MMFR0_EL1
+	and	x1, x1, #(0xf << ID_AA64MMFR0_EL1_FGT_SHIFT)
+	cbz	x1, 1f
+	ldr	x1, [x0, #NVHE_INIT_HFGWTR_EL2]
+	msr_s	SYS_HFGWTR_EL2, x1
+
+1:
 	ldr	x1, [x0, #NVHE_INIT_VTTBR]
 	msr	vttbr_el2, x1
 
@@ -183,6 +190,7 @@
 
 	/* Initialize EL2 CPU state to sane values. */
 	init_el2_state				// Clobbers x0..x2
+	finalise_el2_state
 
 	/* Enable MMU, set vectors and stack. */
 	mov	x0, x28
diff --git a/arch/arm64/kvm/hyp/nvhe/hyp-main.c b/arch/arm64/kvm/hyp/nvhe/hyp-main.c
index 3cea4b6..16abb1e 100644
--- a/arch/arm64/kvm/hyp/nvhe/hyp-main.c
+++ b/arch/arm64/kvm/hyp/nvhe/hyp-main.c
@@ -4,6 +4,8 @@
  * Author: Andrew Scull <ascull@google.com>
  */
 
+#include <kvm/arm_hypercalls.h>
+
 #include <hyp/adjust_pc.h>
 
 #include <asm/pgtable-types.h>
@@ -11,28 +13,895 @@
 #include <asm/kvm_emulate.h>
 #include <asm/kvm_host.h>
 #include <asm/kvm_hyp.h>
+#include <asm/kvm_hypevents.h>
 #include <asm/kvm_mmu.h>
 
+#include <nvhe/ffa.h>
+#include <nvhe/iommu.h>
 #include <nvhe/mem_protect.h>
+#include <nvhe/modules.h>
 #include <nvhe/mm.h>
+#include <nvhe/pkvm.h>
+#include <nvhe/trace.h>
 #include <nvhe/trap_handler.h>
 
+#include <linux/irqchip/arm-gic-v3.h>
+#include <uapi/linux/psci.h>
+
+#include "../../sys_regs.h"
+
 DEFINE_PER_CPU(struct kvm_nvhe_init_params, kvm_init_params);
 
 void __kvm_hyp_host_forward_smc(struct kvm_cpu_context *host_ctxt);
 
+static bool (*default_host_smc_handler)(struct kvm_cpu_context *host_ctxt);
+static bool (*default_trap_handler)(struct kvm_cpu_context *host_ctxt);
+
+int __pkvm_register_host_smc_handler(bool (*cb)(struct kvm_cpu_context *))
+{
+	return cmpxchg(&default_host_smc_handler, NULL, cb) ? -EBUSY : 0;
+}
+
+int __pkvm_register_default_trap_handler(bool (*cb)(struct kvm_cpu_context *))
+{
+	return cmpxchg(&default_trap_handler, NULL, cb) ? -EBUSY : 0;
+}
+
+static int pkvm_refill_memcache(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	struct pkvm_hyp_vm *hyp_vm = pkvm_hyp_vcpu_to_hyp_vm(hyp_vcpu);
+	u64 nr_pages = VTCR_EL2_LVLS(hyp_vm->kvm.arch.vtcr) - 1;
+	struct kvm_vcpu *host_vcpu = hyp_vcpu->host_vcpu;
+
+	return refill_memcache(&hyp_vcpu->vcpu.arch.pkvm_memcache, nr_pages,
+			       &host_vcpu->arch.pkvm_memcache);
+}
+
+typedef void (*hyp_entry_exit_handler_fn)(struct pkvm_hyp_vcpu *);
+
+static void handle_pvm_entry_wfx(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	if (vcpu_get_flag(hyp_vcpu->host_vcpu, INCREMENT_PC)) {
+		vcpu_clear_flag(&hyp_vcpu->vcpu, PC_UPDATE_REQ);
+		kvm_incr_pc(&hyp_vcpu->vcpu);
+	}
+}
+
+static void handle_pvm_entry_psci(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	u32 psci_fn = smccc_get_function(&hyp_vcpu->vcpu);
+	u64 ret = READ_ONCE(hyp_vcpu->host_vcpu->arch.ctxt.regs.regs[0]);
+
+	switch (psci_fn) {
+	case PSCI_0_2_FN_CPU_ON:
+	case PSCI_0_2_FN64_CPU_ON:
+		/*
+		 * Check whether the cpu_on request to the host was successful.
+		 * If not, reset the vcpu state from ON_PENDING to OFF.
+		 * This could happen if this vcpu attempted to turn on the other
+		 * vcpu while the other one is in the process of turning itself
+		 * off.
+		 */
+		if (ret != PSCI_RET_SUCCESS) {
+			unsigned long cpu_id = smccc_get_arg1(&hyp_vcpu->vcpu);
+			struct pkvm_hyp_vcpu *target_vcpu;
+			struct pkvm_hyp_vm *hyp_vm;
+
+			hyp_vm = pkvm_hyp_vcpu_to_hyp_vm(hyp_vcpu);
+			target_vcpu = pkvm_mpidr_to_hyp_vcpu(hyp_vm, cpu_id);
+
+			if (target_vcpu && READ_ONCE(target_vcpu->power_state) == PSCI_0_2_AFFINITY_LEVEL_ON_PENDING)
+				WRITE_ONCE(target_vcpu->power_state, PSCI_0_2_AFFINITY_LEVEL_OFF);
+
+			ret = PSCI_RET_INTERNAL_FAILURE;
+		}
+
+		break;
+	default:
+		break;
+	}
+
+	vcpu_set_reg(&hyp_vcpu->vcpu, 0, ret);
+}
+
+static void handle_pvm_entry_hvc64(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	u32 fn = smccc_get_function(&hyp_vcpu->vcpu);
+
+	switch (fn) {
+	case ARM_SMCCC_VENDOR_HYP_KVM_MMIO_GUARD_MAP_FUNC_ID:
+		pkvm_refill_memcache(hyp_vcpu);
+		break;
+	case ARM_SMCCC_VENDOR_HYP_KVM_MEM_SHARE_FUNC_ID:
+		fallthrough;
+	case ARM_SMCCC_VENDOR_HYP_KVM_MEM_UNSHARE_FUNC_ID:
+		fallthrough;
+	case ARM_SMCCC_VENDOR_HYP_KVM_MEM_RELINQUISH_FUNC_ID:
+		vcpu_set_reg(&hyp_vcpu->vcpu, 0, SMCCC_RET_SUCCESS);
+		break;
+	default:
+		handle_pvm_entry_psci(hyp_vcpu);
+		break;
+	}
+}
+
+static void handle_pvm_entry_sys64(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	struct kvm_vcpu *host_vcpu = hyp_vcpu->host_vcpu;
+
+	/* Exceptions have priority on anything else */
+	if (vcpu_get_flag(host_vcpu, PENDING_EXCEPTION)) {
+		/* Exceptions caused by this should be undef exceptions. */
+		u32 esr = (ESR_ELx_EC_UNKNOWN << ESR_ELx_EC_SHIFT);
+
+		__vcpu_sys_reg(&hyp_vcpu->vcpu, ESR_EL1) = esr;
+		kvm_pend_exception(&hyp_vcpu->vcpu, EXCEPT_AA64_EL1_SYNC);
+		return;
+	}
+
+	if (vcpu_get_flag(host_vcpu, INCREMENT_PC)) {
+		vcpu_clear_flag(&hyp_vcpu->vcpu, PC_UPDATE_REQ);
+		kvm_incr_pc(&hyp_vcpu->vcpu);
+	}
+
+	if (!esr_sys64_to_params(hyp_vcpu->vcpu.arch.fault.esr_el2).is_write) {
+		/* r0 as transfer register between the guest and the host. */
+		u64 rt_val = READ_ONCE(host_vcpu->arch.ctxt.regs.regs[0]);
+		int rt = kvm_vcpu_sys_get_rt(&hyp_vcpu->vcpu);
+
+		vcpu_set_reg(&hyp_vcpu->vcpu, rt, rt_val);
+	}
+}
+
+static void handle_pvm_entry_iabt(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	unsigned long cpsr = *vcpu_cpsr(&hyp_vcpu->vcpu);
+	u32 esr = ESR_ELx_IL;
+
+	if (!vcpu_get_flag(hyp_vcpu->host_vcpu, PENDING_EXCEPTION))
+		return;
+
+	/*
+	 * If the host wants to inject an exception, get syndrom and
+	 * fault address.
+	 */
+	if ((cpsr & PSR_MODE_MASK) == PSR_MODE_EL0t)
+		esr |= (ESR_ELx_EC_IABT_LOW << ESR_ELx_EC_SHIFT);
+	else
+		esr |= (ESR_ELx_EC_IABT_CUR << ESR_ELx_EC_SHIFT);
+
+	esr |= ESR_ELx_FSC_EXTABT;
+
+	__vcpu_sys_reg(&hyp_vcpu->vcpu, ESR_EL1) = esr;
+	__vcpu_sys_reg(&hyp_vcpu->vcpu, FAR_EL1) =
+		kvm_vcpu_get_hfar(&hyp_vcpu->vcpu);
+
+	/* Tell the run loop that we want to inject something */
+	kvm_pend_exception(&hyp_vcpu->vcpu, EXCEPT_AA64_EL1_SYNC);
+}
+
+static void handle_pvm_entry_dabt(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	struct kvm_vcpu *host_vcpu = hyp_vcpu->host_vcpu;
+	bool pc_update;
+
+	/* Exceptions have priority over anything else */
+	if (vcpu_get_flag(host_vcpu, PENDING_EXCEPTION)) {
+		unsigned long cpsr = *vcpu_cpsr(&hyp_vcpu->vcpu);
+		u32 esr = ESR_ELx_IL;
+
+		if ((cpsr & PSR_MODE_MASK) == PSR_MODE_EL0t)
+			esr |= (ESR_ELx_EC_DABT_LOW << ESR_ELx_EC_SHIFT);
+		else
+			esr |= (ESR_ELx_EC_DABT_CUR << ESR_ELx_EC_SHIFT);
+
+		esr |= ESR_ELx_FSC_EXTABT;
+
+		__vcpu_sys_reg(&hyp_vcpu->vcpu, ESR_EL1) = esr;
+		__vcpu_sys_reg(&hyp_vcpu->vcpu, FAR_EL1) =
+			kvm_vcpu_get_hfar(&hyp_vcpu->vcpu);
+
+		/* Tell the run loop that we want to inject something */
+		kvm_pend_exception(&hyp_vcpu->vcpu, EXCEPT_AA64_EL1_SYNC);
+
+		/* Cancel potential in-flight MMIO */
+		hyp_vcpu->vcpu.mmio_needed = false;
+		return;
+	}
+
+	/* Handle PC increment on MMIO */
+	pc_update = (hyp_vcpu->vcpu.mmio_needed &&
+		     vcpu_get_flag(host_vcpu, INCREMENT_PC));
+	if (pc_update) {
+		vcpu_clear_flag(&hyp_vcpu->vcpu, PC_UPDATE_REQ);
+		kvm_incr_pc(&hyp_vcpu->vcpu);
+	}
+
+	/* If we were doing an MMIO read access, update the register*/
+	if (pc_update && !kvm_vcpu_dabt_iswrite(&hyp_vcpu->vcpu)) {
+		/* r0 as transfer register between the guest and the host. */
+		u64 rd_val = READ_ONCE(host_vcpu->arch.ctxt.regs.regs[0]);
+		int rd = kvm_vcpu_dabt_get_rd(&hyp_vcpu->vcpu);
+
+		vcpu_set_reg(&hyp_vcpu->vcpu, rd, rd_val);
+	}
+
+	hyp_vcpu->vcpu.mmio_needed = false;
+}
+
+static void handle_pvm_exit_wfx(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	WRITE_ONCE(hyp_vcpu->host_vcpu->arch.ctxt.regs.pstate,
+		   hyp_vcpu->vcpu.arch.ctxt.regs.pstate & PSR_MODE_MASK);
+	WRITE_ONCE(hyp_vcpu->host_vcpu->arch.fault.esr_el2,
+		   hyp_vcpu->vcpu.arch.fault.esr_el2);
+}
+
+static void handle_pvm_exit_sys64(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	struct kvm_vcpu *host_vcpu = hyp_vcpu->host_vcpu;
+	u32 esr_el2 = hyp_vcpu->vcpu.arch.fault.esr_el2;
+
+	/* r0 as transfer register between the guest and the host. */
+	WRITE_ONCE(host_vcpu->arch.fault.esr_el2,
+		   esr_el2 & ~ESR_ELx_SYS64_ISS_RT_MASK);
+
+	/* The mode is required for the host to emulate some sysregs */
+	WRITE_ONCE(host_vcpu->arch.ctxt.regs.pstate,
+		   hyp_vcpu->vcpu.arch.ctxt.regs.pstate & PSR_MODE_MASK);
+
+	if (esr_sys64_to_params(esr_el2).is_write) {
+		int rt = kvm_vcpu_sys_get_rt(&hyp_vcpu->vcpu);
+		u64 rt_val = vcpu_get_reg(&hyp_vcpu->vcpu, rt);
+
+		WRITE_ONCE(host_vcpu->arch.ctxt.regs.regs[0], rt_val);
+	}
+}
+
+static void handle_pvm_exit_hvc64(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	struct kvm_vcpu *host_vcpu = hyp_vcpu->host_vcpu;
+	int n, i;
+
+	switch (smccc_get_function(&hyp_vcpu->vcpu)) {
+	/*
+	 * CPU_ON takes 3 arguments, however, to wake up the target vcpu the
+	 * host only needs to know the target's cpu_id, which is passed as the
+	 * first argument. The processing of the reset state is done at hyp.
+	 */
+	case PSCI_0_2_FN_CPU_ON:
+	case PSCI_0_2_FN64_CPU_ON:
+		n = 2;
+		break;
+
+	case PSCI_0_2_FN_CPU_OFF:
+	case PSCI_0_2_FN_SYSTEM_OFF:
+	case PSCI_0_2_FN_SYSTEM_RESET:
+	case PSCI_0_2_FN_CPU_SUSPEND:
+	case PSCI_0_2_FN64_CPU_SUSPEND:
+		n = 1;
+		break;
+
+	case ARM_SMCCC_VENDOR_HYP_KVM_MEM_SHARE_FUNC_ID:
+		fallthrough;
+	case ARM_SMCCC_VENDOR_HYP_KVM_MEM_UNSHARE_FUNC_ID:
+		fallthrough;
+	case ARM_SMCCC_VENDOR_HYP_KVM_MEM_RELINQUISH_FUNC_ID:
+		n = 4;
+		break;
+
+	case ARM_SMCCC_VENDOR_HYP_KVM_MMIO_GUARD_MAP_FUNC_ID:
+		n = 3;
+		break;
+
+	case PSCI_1_1_FN_SYSTEM_RESET2:
+	case PSCI_1_1_FN64_SYSTEM_RESET2:
+		n = 3;
+		break;
+
+	/*
+	 * The rest are either blocked or handled by HYP, so we should
+	 * really never be here.
+	 */
+	default:
+		BUG();
+	}
+
+	WRITE_ONCE(host_vcpu->arch.fault.esr_el2,
+		   hyp_vcpu->vcpu.arch.fault.esr_el2);
+
+	/* Pass the hvc function id (r0) as well as any potential arguments. */
+	for (i = 0; i < n; i++) {
+		WRITE_ONCE(host_vcpu->arch.ctxt.regs.regs[i],
+			   vcpu_get_reg(&hyp_vcpu->vcpu, i));
+	}
+}
+
+static void handle_pvm_exit_iabt(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	WRITE_ONCE(hyp_vcpu->host_vcpu->arch.fault.esr_el2,
+		   hyp_vcpu->vcpu.arch.fault.esr_el2);
+	WRITE_ONCE(hyp_vcpu->host_vcpu->arch.fault.hpfar_el2,
+		   hyp_vcpu->vcpu.arch.fault.hpfar_el2);
+}
+
+static void handle_pvm_exit_dabt(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	struct kvm_vcpu *host_vcpu = hyp_vcpu->host_vcpu;
+
+	hyp_vcpu->vcpu.mmio_needed = __pkvm_check_ioguard_page(hyp_vcpu);
+
+	if (hyp_vcpu->vcpu.mmio_needed) {
+		/* r0 as transfer register between the guest and the host. */
+		WRITE_ONCE(host_vcpu->arch.fault.esr_el2,
+			   hyp_vcpu->vcpu.arch.fault.esr_el2 & ~ESR_ELx_SRT_MASK);
+
+		if (kvm_vcpu_dabt_iswrite(&hyp_vcpu->vcpu)) {
+			int rt = kvm_vcpu_dabt_get_rd(&hyp_vcpu->vcpu);
+			u64 rt_val = vcpu_get_reg(&hyp_vcpu->vcpu, rt);
+
+			WRITE_ONCE(host_vcpu->arch.ctxt.regs.regs[0], rt_val);
+		}
+	} else {
+		WRITE_ONCE(host_vcpu->arch.fault.esr_el2,
+			   hyp_vcpu->vcpu.arch.fault.esr_el2 & ~ESR_ELx_ISV);
+	}
+
+	WRITE_ONCE(host_vcpu->arch.ctxt.regs.pstate,
+		   hyp_vcpu->vcpu.arch.ctxt.regs.pstate & PSR_MODE_MASK);
+	WRITE_ONCE(host_vcpu->arch.fault.far_el2,
+		   hyp_vcpu->vcpu.arch.fault.far_el2 & GENMASK(11, 0));
+	WRITE_ONCE(host_vcpu->arch.fault.hpfar_el2,
+		   hyp_vcpu->vcpu.arch.fault.hpfar_el2);
+	WRITE_ONCE(__vcpu_sys_reg(host_vcpu, SCTLR_EL1),
+		   __vcpu_sys_reg(&hyp_vcpu->vcpu, SCTLR_EL1) &
+			(SCTLR_ELx_EE | SCTLR_EL1_E0E));
+}
+
+static void handle_vm_entry_generic(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	vcpu_copy_flag(&hyp_vcpu->vcpu, hyp_vcpu->host_vcpu, PC_UPDATE_REQ);
+}
+
+static void handle_vm_exit_generic(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	WRITE_ONCE(hyp_vcpu->host_vcpu->arch.fault.esr_el2,
+		   hyp_vcpu->vcpu.arch.fault.esr_el2);
+}
+
+static void handle_vm_exit_abt(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	struct kvm_vcpu *host_vcpu = hyp_vcpu->host_vcpu;
+
+	WRITE_ONCE(host_vcpu->arch.fault.esr_el2,
+		   hyp_vcpu->vcpu.arch.fault.esr_el2);
+	WRITE_ONCE(host_vcpu->arch.fault.far_el2,
+		   hyp_vcpu->vcpu.arch.fault.far_el2);
+	WRITE_ONCE(host_vcpu->arch.fault.hpfar_el2,
+		   hyp_vcpu->vcpu.arch.fault.hpfar_el2);
+	WRITE_ONCE(host_vcpu->arch.fault.disr_el1,
+		   hyp_vcpu->vcpu.arch.fault.disr_el1);
+}
+
+static const hyp_entry_exit_handler_fn entry_hyp_pvm_handlers[] = {
+	[0 ... ESR_ELx_EC_MAX]		= NULL,
+	[ESR_ELx_EC_WFx]		= handle_pvm_entry_wfx,
+	[ESR_ELx_EC_HVC64]		= handle_pvm_entry_hvc64,
+	[ESR_ELx_EC_SYS64]		= handle_pvm_entry_sys64,
+	[ESR_ELx_EC_IABT_LOW]		= handle_pvm_entry_iabt,
+	[ESR_ELx_EC_DABT_LOW]		= handle_pvm_entry_dabt,
+};
+
+static const hyp_entry_exit_handler_fn exit_hyp_pvm_handlers[] = {
+	[0 ... ESR_ELx_EC_MAX]		= NULL,
+	[ESR_ELx_EC_WFx]		= handle_pvm_exit_wfx,
+	[ESR_ELx_EC_HVC64]		= handle_pvm_exit_hvc64,
+	[ESR_ELx_EC_SYS64]		= handle_pvm_exit_sys64,
+	[ESR_ELx_EC_IABT_LOW]		= handle_pvm_exit_iabt,
+	[ESR_ELx_EC_DABT_LOW]		= handle_pvm_exit_dabt,
+};
+
+static const hyp_entry_exit_handler_fn entry_hyp_vm_handlers[] = {
+	[0 ... ESR_ELx_EC_MAX]		= handle_vm_entry_generic,
+};
+
+static const hyp_entry_exit_handler_fn exit_hyp_vm_handlers[] = {
+	[0 ... ESR_ELx_EC_MAX]		= handle_vm_exit_generic,
+	[ESR_ELx_EC_IABT_LOW]		= handle_vm_exit_abt,
+	[ESR_ELx_EC_DABT_LOW]		= handle_vm_exit_abt,
+};
+
+static void flush_hyp_vgic_state(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	struct kvm_vcpu *host_vcpu = hyp_vcpu->host_vcpu;
+	struct vgic_v3_cpu_if *host_cpu_if, *hyp_cpu_if;
+	unsigned int used_lrs, max_lrs, i;
+
+	host_cpu_if	= &host_vcpu->arch.vgic_cpu.vgic_v3;
+	hyp_cpu_if	= &hyp_vcpu->vcpu.arch.vgic_cpu.vgic_v3;
+
+	max_lrs		= (read_gicreg(ICH_VTR_EL2) & 0xf) + 1;
+	used_lrs	= READ_ONCE(host_cpu_if->used_lrs);
+	used_lrs	= min(used_lrs, max_lrs);
+
+	hyp_cpu_if->vgic_hcr	= READ_ONCE(host_cpu_if->vgic_hcr);
+	/* Should be a one-off */
+	hyp_cpu_if->vgic_sre	= (ICC_SRE_EL1_DIB |
+				   ICC_SRE_EL1_DFB |
+				   ICC_SRE_EL1_SRE);
+	hyp_cpu_if->used_lrs	= used_lrs;
+
+	for (i = 0; i < used_lrs; i++)
+		hyp_cpu_if->vgic_lr[i] = READ_ONCE(host_cpu_if->vgic_lr[i]);
+}
+
+static void sync_hyp_vgic_state(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	struct kvm_vcpu *host_vcpu = hyp_vcpu->host_vcpu;
+	struct vgic_v3_cpu_if *host_cpu_if, *hyp_cpu_if;
+	unsigned int i;
+
+	host_cpu_if	= &host_vcpu->arch.vgic_cpu.vgic_v3;
+	hyp_cpu_if	= &hyp_vcpu->vcpu.arch.vgic_cpu.vgic_v3;
+
+	WRITE_ONCE(host_cpu_if->vgic_hcr, hyp_cpu_if->vgic_hcr);
+
+	for (i = 0; i < hyp_cpu_if->used_lrs; i++)
+		WRITE_ONCE(host_cpu_if->vgic_lr[i], hyp_cpu_if->vgic_lr[i]);
+}
+
+static void flush_hyp_timer_state(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	if (!pkvm_hyp_vcpu_is_protected(hyp_vcpu))
+		return;
+
+	/*
+	 * A hyp vcpu has no offset, and sees vtime == ptime. The
+	 * ptimer is fully emulated by EL1 and cannot be trusted.
+	 */
+	write_sysreg(0, cntvoff_el2);
+	isb();
+	write_sysreg_el0(__vcpu_sys_reg(&hyp_vcpu->vcpu, CNTV_CVAL_EL0),
+			 SYS_CNTV_CVAL);
+	write_sysreg_el0(__vcpu_sys_reg(&hyp_vcpu->vcpu, CNTV_CTL_EL0),
+			 SYS_CNTV_CTL);
+}
+
+static void sync_hyp_timer_state(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	if (!pkvm_hyp_vcpu_is_protected(hyp_vcpu))
+		return;
+
+	/*
+	 * Preserve the vtimer state so that it is always correct,
+	 * even if the host tries to make a mess.
+	 */
+	__vcpu_sys_reg(&hyp_vcpu->vcpu, CNTV_CVAL_EL0) =
+		read_sysreg_el0(SYS_CNTV_CVAL);
+	__vcpu_sys_reg(&hyp_vcpu->vcpu, CNTV_CTL_EL0) =
+		read_sysreg_el0(SYS_CNTV_CTL);
+}
+
+static void __copy_vcpu_state(const struct kvm_vcpu *from_vcpu,
+			      struct kvm_vcpu *to_vcpu)
+{
+	int i;
+
+	to_vcpu->arch.ctxt.regs		= from_vcpu->arch.ctxt.regs;
+	to_vcpu->arch.ctxt.spsr_abt	= from_vcpu->arch.ctxt.spsr_abt;
+	to_vcpu->arch.ctxt.spsr_und	= from_vcpu->arch.ctxt.spsr_und;
+	to_vcpu->arch.ctxt.spsr_irq	= from_vcpu->arch.ctxt.spsr_irq;
+	to_vcpu->arch.ctxt.spsr_fiq	= from_vcpu->arch.ctxt.spsr_fiq;
+
+	/*
+	 * Copy the sysregs, but don't mess with the timer state which
+	 * is directly handled by EL1 and is expected to be preserved.
+	 */
+	for (i = 1; i < NR_SYS_REGS; i++) {
+		if (i >= CNTVOFF_EL2 && i <= CNTP_CTL_EL0)
+			continue;
+		to_vcpu->arch.ctxt.sys_regs[i] = from_vcpu->arch.ctxt.sys_regs[i];
+	}
+}
+
+static void __sync_hyp_vcpu(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	__copy_vcpu_state(&hyp_vcpu->vcpu, hyp_vcpu->host_vcpu);
+}
+
+static void __flush_hyp_vcpu(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	__copy_vcpu_state(hyp_vcpu->host_vcpu, &hyp_vcpu->vcpu);
+}
+
+static void flush_debug_state(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	struct kvm_vcpu *vcpu = &hyp_vcpu->vcpu;
+	struct kvm_vcpu *host_vcpu = hyp_vcpu->host_vcpu;
+	u64 mdcr_el2 = READ_ONCE(host_vcpu->arch.mdcr_el2);
+
+	/*
+	 * Propagate the monitor debug configuration of the vcpu from host.
+	 * Preserve HPMN, which is set-up by some knowledgeable bootcode.
+	 * Ensure that MDCR_EL2_E2PB_MASK and MDCR_EL2_E2TB_MASK are clear,
+	 * as guests should not be able to access profiling and trace buffers.
+	 * Ensure that RES0 bits are clear.
+	 */
+	mdcr_el2 &= ~(MDCR_EL2_RES0 |
+		      MDCR_EL2_HPMN_MASK |
+		      (MDCR_EL2_E2PB_MASK << MDCR_EL2_E2PB_SHIFT) |
+		      (MDCR_EL2_E2TB_MASK << MDCR_EL2_E2TB_SHIFT));
+	vcpu->arch.mdcr_el2 = read_sysreg(mdcr_el2) & MDCR_EL2_HPMN_MASK;
+	vcpu->arch.mdcr_el2 |= mdcr_el2;
+
+	vcpu->arch.pmu = host_vcpu->arch.pmu;
+	vcpu->guest_debug = READ_ONCE(host_vcpu->guest_debug);
+
+	if (!kvm_vcpu_needs_debug_regs(vcpu))
+		return;
+
+	__vcpu_save_guest_debug_regs(vcpu);
+
+	/* Switch debug_ptr to the external_debug_state if done by the host. */
+	if (kern_hyp_va(READ_ONCE(host_vcpu->arch.debug_ptr)) ==
+	    &host_vcpu->arch.external_debug_state)
+		vcpu->arch.debug_ptr = &host_vcpu->arch.external_debug_state;
+
+	/* Propagate any special handling for single step from host. */
+	vcpu_write_sys_reg(vcpu, vcpu_read_sys_reg(host_vcpu, MDSCR_EL1),
+						   MDSCR_EL1);
+	*vcpu_cpsr(vcpu) = *vcpu_cpsr(host_vcpu);
+}
+
+static void sync_debug_state(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	struct kvm_vcpu *vcpu = &hyp_vcpu->vcpu;
+	struct kvm_vcpu *host_vcpu = hyp_vcpu->host_vcpu;
+
+	if (!kvm_vcpu_needs_debug_regs(vcpu))
+		return;
+
+	__vcpu_restore_guest_debug_regs(vcpu);
+	vcpu->arch.debug_ptr = &host_vcpu->arch.vcpu_debug_state;
+}
+
+static void flush_hyp_vcpu(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	struct kvm_vcpu *host_vcpu = hyp_vcpu->host_vcpu;
+	hyp_entry_exit_handler_fn ec_handler;
+	u8 esr_ec;
+
+	if (READ_ONCE(hyp_vcpu->power_state) == PSCI_0_2_AFFINITY_LEVEL_ON_PENDING)
+		pkvm_reset_vcpu(hyp_vcpu);
+
+	/*
+	 * If we deal with a non-protected guest and the state is potentially
+	 * dirty (from a host perspective), copy the state back into the hyp
+	 * vcpu.
+	 */
+	if (!pkvm_hyp_vcpu_is_protected(hyp_vcpu)) {
+		if (vcpu_get_flag(host_vcpu, PKVM_HOST_STATE_DIRTY))
+			__flush_hyp_vcpu(hyp_vcpu);
+
+		hyp_vcpu->vcpu.arch.iflags = READ_ONCE(host_vcpu->arch.iflags);
+		flush_debug_state(hyp_vcpu);
+
+		hyp_vcpu->vcpu.arch.hcr_el2 = HCR_GUEST_FLAGS & ~(HCR_RW | HCR_TWI | HCR_TWE);
+		hyp_vcpu->vcpu.arch.hcr_el2 |= READ_ONCE(host_vcpu->arch.hcr_el2);
+	}
+
+	hyp_vcpu->vcpu.arch.vsesr_el2 = host_vcpu->arch.vsesr_el2;
+
+	flush_hyp_vgic_state(hyp_vcpu);
+	flush_hyp_timer_state(hyp_vcpu);
+
+	switch (ARM_EXCEPTION_CODE(hyp_vcpu->exit_code)) {
+	case ARM_EXCEPTION_IRQ:
+	case ARM_EXCEPTION_EL1_SERROR:
+	case ARM_EXCEPTION_IL:
+		break;
+	case ARM_EXCEPTION_TRAP:
+		esr_ec = ESR_ELx_EC(kvm_vcpu_get_esr(&hyp_vcpu->vcpu));
+
+		if (pkvm_hyp_vcpu_is_protected(hyp_vcpu))
+			ec_handler = entry_hyp_pvm_handlers[esr_ec];
+		else
+			ec_handler = entry_hyp_vm_handlers[esr_ec];
+
+		if (ec_handler)
+			ec_handler(hyp_vcpu);
+		break;
+	default:
+		BUG();
+	}
+
+	hyp_vcpu->exit_code = 0;
+}
+
+static void sync_hyp_vcpu(struct pkvm_hyp_vcpu *hyp_vcpu, u32 exit_reason)
+{
+	struct kvm_vcpu *host_vcpu = hyp_vcpu->host_vcpu;
+	hyp_entry_exit_handler_fn ec_handler;
+	u8 esr_ec;
+
+	if (!pkvm_hyp_vcpu_is_protected(hyp_vcpu))
+		sync_debug_state(hyp_vcpu);
+
+	/*
+	 * Don't sync the vcpu GPR/sysreg state after a run. Instead,
+	 * leave it in the hyp vCPU until someone actually requires it.
+	 */
+	sync_hyp_vgic_state(hyp_vcpu);
+	sync_hyp_timer_state(hyp_vcpu);
+
+	switch (ARM_EXCEPTION_CODE(exit_reason)) {
+	case ARM_EXCEPTION_IRQ:
+		break;
+	case ARM_EXCEPTION_TRAP:
+		esr_ec = ESR_ELx_EC(kvm_vcpu_get_esr(&hyp_vcpu->vcpu));
+
+		if (pkvm_hyp_vcpu_is_protected(hyp_vcpu))
+			ec_handler = exit_hyp_pvm_handlers[esr_ec];
+		else
+			ec_handler = exit_hyp_vm_handlers[esr_ec];
+
+		if (ec_handler)
+			ec_handler(hyp_vcpu);
+		break;
+	case ARM_EXCEPTION_EL1_SERROR:
+	case ARM_EXCEPTION_IL:
+		break;
+	default:
+		BUG();
+	}
+
+	if (pkvm_hyp_vcpu_is_protected(hyp_vcpu))
+		vcpu_clear_flag(host_vcpu, PC_UPDATE_REQ);
+	else
+		host_vcpu->arch.iflags = hyp_vcpu->vcpu.arch.iflags;
+
+	hyp_vcpu->exit_code = exit_reason;
+}
+
+static void __hyp_sve_save_guest(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	struct kvm_vcpu *vcpu = &hyp_vcpu->vcpu;
+
+	__sve_save_state(vcpu_sve_pffr(vcpu), &vcpu->arch.ctxt.fp_regs.fpsr);
+	__vcpu_sys_reg(vcpu, ZCR_EL1) = read_sysreg_el1(SYS_ZCR);
+	sve_cond_update_zcr_vq(vcpu_sve_max_vq(vcpu) - 1, SYS_ZCR_EL1);
+}
+
+static void fpsimd_host_restore(void)
+{
+	sysreg_clear_set(cptr_el2, CPTR_EL2_TZ | CPTR_EL2_TFP, 0);
+	isb();
+
+	if (unlikely(is_protected_kvm_enabled())) {
+		struct pkvm_hyp_vcpu *hyp_vcpu = pkvm_get_loaded_hyp_vcpu();
+		struct kvm_vcpu *vcpu = &hyp_vcpu->vcpu;
+
+		if (vcpu_has_sve(vcpu))
+			__hyp_sve_save_guest(hyp_vcpu);
+		else
+			__fpsimd_save_state(&hyp_vcpu->vcpu.arch.ctxt.fp_regs);
+
+		if (system_supports_sve()) {
+			struct kvm_host_sve_state *sve_state = get_host_sve_state(vcpu);
+
+			write_sysreg_el1(sve_state->zcr_el1, SYS_ZCR);
+			pkvm_set_max_sve_vq();
+			__sve_restore_state(sve_state->sve_regs +
+					    sve_ffr_offset(kvm_host_sve_max_vl),
+					    &sve_state->fpsr);
+		} else {
+			__fpsimd_restore_state(get_host_fpsimd_state(vcpu));
+		}
+
+		hyp_vcpu->vcpu.arch.fp_state = FP_STATE_HOST_OWNED;
+	}
+
+	if (system_supports_sve())
+		sve_cond_update_zcr_vq(ZCR_ELx_LEN_MASK, SYS_ZCR_EL2);
+}
+
+static void handle___pkvm_vcpu_load(struct kvm_cpu_context *host_ctxt)
+{
+	DECLARE_REG(pkvm_handle_t, handle, host_ctxt, 1);
+	DECLARE_REG(unsigned int, vcpu_idx, host_ctxt, 2);
+	DECLARE_REG(u64, hcr_el2, host_ctxt, 3);
+	struct pkvm_hyp_vcpu *hyp_vcpu;
+	int __percpu *last_vcpu_ran;
+	int *last_ran;
+
+	if (!is_protected_kvm_enabled())
+		return;
+
+	hyp_vcpu = pkvm_load_hyp_vcpu(handle, vcpu_idx);
+	if (!hyp_vcpu)
+		return;
+
+	/*
+	 * Guarantee that both TLBs and I-cache are private to each vcpu. If a
+	 * vcpu from the same VM has previously run on the same physical CPU,
+	 * nuke the relevant contexts.
+	 */
+	last_vcpu_ran = hyp_vcpu->vcpu.arch.hw_mmu->last_vcpu_ran;
+	last_ran = (__force int *) &last_vcpu_ran[hyp_smp_processor_id()];
+	if (*last_ran != hyp_vcpu->vcpu.vcpu_id) {
+		__kvm_flush_cpu_context(hyp_vcpu->vcpu.arch.hw_mmu);
+		*last_ran = hyp_vcpu->vcpu.vcpu_id;
+	}
+
+	hyp_vcpu->vcpu.arch.fp_state = FP_STATE_HOST_OWNED;
+
+	if (pkvm_hyp_vcpu_is_protected(hyp_vcpu)) {
+		/* Propagate WFx trapping flags, trap ptrauth */
+		hyp_vcpu->vcpu.arch.hcr_el2 &= ~(HCR_TWE | HCR_TWI |
+						     HCR_API | HCR_APK);
+		hyp_vcpu->vcpu.arch.hcr_el2 |= hcr_el2 & (HCR_TWE | HCR_TWI);
+	}
+}
+
+static void handle___pkvm_vcpu_put(struct kvm_cpu_context *host_ctxt)
+{
+	struct pkvm_hyp_vcpu *hyp_vcpu;
+
+	if (!is_protected_kvm_enabled())
+		return;
+
+	hyp_vcpu = pkvm_get_loaded_hyp_vcpu();
+	if (hyp_vcpu) {
+		struct kvm_vcpu *host_vcpu = hyp_vcpu->host_vcpu;
+
+		if (hyp_vcpu->vcpu.arch.fp_state == FP_STATE_GUEST_OWNED)
+			fpsimd_host_restore();
+
+		if (!pkvm_hyp_vcpu_is_protected(hyp_vcpu) &&
+		    !vcpu_get_flag(host_vcpu, PKVM_HOST_STATE_DIRTY)) {
+			__sync_hyp_vcpu(hyp_vcpu);
+		}
+
+		pkvm_put_hyp_vcpu(hyp_vcpu);
+	}
+}
+
+static void handle___pkvm_vcpu_sync_state(struct kvm_cpu_context *host_ctxt)
+{
+	struct pkvm_hyp_vcpu *hyp_vcpu;
+
+	if (!is_protected_kvm_enabled())
+		return;
+
+	hyp_vcpu = pkvm_get_loaded_hyp_vcpu();
+	if (!hyp_vcpu || pkvm_hyp_vcpu_is_protected(hyp_vcpu))
+		return;
+
+	if (hyp_vcpu->vcpu.arch.fp_state == FP_STATE_GUEST_OWNED)
+		fpsimd_host_restore();
+
+	__sync_hyp_vcpu(hyp_vcpu);
+}
+
+static struct kvm_vcpu *__get_host_hyp_vcpus(struct kvm_vcpu *arg,
+					     struct pkvm_hyp_vcpu **hyp_vcpup)
+{
+	struct kvm_vcpu *host_vcpu = kern_hyp_va(arg);
+	struct pkvm_hyp_vcpu *hyp_vcpu = NULL;
+
+	if (unlikely(is_protected_kvm_enabled())) {
+		hyp_vcpu = pkvm_get_loaded_hyp_vcpu();
+
+		if (!hyp_vcpu || hyp_vcpu->host_vcpu != host_vcpu) {
+			hyp_vcpu = NULL;
+			host_vcpu = NULL;
+		}
+	}
+
+	*hyp_vcpup = hyp_vcpu;
+	return host_vcpu;
+}
+
+#define get_host_hyp_vcpus(ctxt, regnr, hyp_vcpup)			\
+	({								\
+		DECLARE_REG(struct kvm_vcpu *, __vcpu, ctxt, regnr);	\
+		__get_host_hyp_vcpus(__vcpu, hyp_vcpup);		\
+	})
+
+#define get_host_hyp_vcpus_from_vgic_v3_cpu_if(ctxt, regnr, hyp_vcpup)		\
+	({									\
+		DECLARE_REG(struct vgic_v3_cpu_if *, cif, ctxt, regnr); 	\
+		struct kvm_vcpu *__vcpu = container_of(cif,			\
+						       struct kvm_vcpu,		\
+						       arch.vgic_cpu.vgic_v3);	\
+										\
+		__get_host_hyp_vcpus(__vcpu, hyp_vcpup);			\
+	})
+
 static void handle___kvm_vcpu_run(struct kvm_cpu_context *host_ctxt)
 {
-	DECLARE_REG(struct kvm_vcpu *, vcpu, host_ctxt, 1);
+	struct pkvm_hyp_vcpu *hyp_vcpu;
+	struct kvm_vcpu *host_vcpu;
+	int ret;
 
-	cpu_reg(host_ctxt, 1) =  __kvm_vcpu_run(kern_hyp_va(vcpu));
+	host_vcpu = get_host_hyp_vcpus(host_ctxt, 1, &hyp_vcpu);
+	if (!host_vcpu) {
+		ret = -EINVAL;
+		goto out;
+	}
+
+	if (unlikely(hyp_vcpu)) {
+		flush_hyp_vcpu(hyp_vcpu);
+
+		ret = __kvm_vcpu_run(&hyp_vcpu->vcpu);
+
+		sync_hyp_vcpu(hyp_vcpu, ret);
+
+		if (hyp_vcpu->vcpu.arch.fp_state == FP_STATE_GUEST_OWNED) {
+			/*
+			 * The guest has used the FP, trap all accesses
+			 * from the host (both FP and SVE).
+			 */
+			u64 reg = CPTR_EL2_TFP;
+
+			if (system_supports_sve())
+				reg |= CPTR_EL2_TZ;
+
+			sysreg_clear_set(cptr_el2, 0, reg);
+		}
+	} else {
+		/* The host is fully trusted, run its vCPU directly. */
+		ret = __kvm_vcpu_run(host_vcpu);
+	}
+out:
+	cpu_reg(host_ctxt, 1) =  ret;
+}
+
+static void handle___pkvm_host_map_guest(struct kvm_cpu_context *host_ctxt)
+{
+	DECLARE_REG(u64, pfn, host_ctxt, 1);
+	DECLARE_REG(u64, gfn, host_ctxt, 2);
+	struct pkvm_hyp_vcpu *hyp_vcpu;
+	int ret = -EINVAL;
+
+	if (!is_protected_kvm_enabled())
+		goto out;
+
+	hyp_vcpu = pkvm_get_loaded_hyp_vcpu();
+	if (!hyp_vcpu)
+		goto out;
+
+	/* Top-up our per-vcpu memcache from the host's */
+	ret = pkvm_refill_memcache(hyp_vcpu);
+	if (ret)
+		goto out;
+
+	if (pkvm_hyp_vcpu_is_protected(hyp_vcpu))
+		ret = __pkvm_host_donate_guest(pfn, gfn, hyp_vcpu);
+	else
+		ret = __pkvm_host_share_guest(pfn, gfn, hyp_vcpu);
+out:
+	cpu_reg(host_ctxt, 1) =  ret;
 }
 
 static void handle___kvm_adjust_pc(struct kvm_cpu_context *host_ctxt)
 {
-	DECLARE_REG(struct kvm_vcpu *, vcpu, host_ctxt, 1);
+	struct pkvm_hyp_vcpu *hyp_vcpu;
+	struct kvm_vcpu *host_vcpu;
 
-	__kvm_adjust_pc(kern_hyp_va(vcpu));
+	host_vcpu = get_host_hyp_vcpus(host_ctxt, 1, &hyp_vcpu);
+	if (!host_vcpu)
+		return;
+
+	if (hyp_vcpu) {
+		/* This only applies to non-protected VMs */
+		if (pkvm_hyp_vcpu_is_protected(hyp_vcpu))
+			return;
+
+		__kvm_adjust_pc(&hyp_vcpu->vcpu);
+	} else {
+		__kvm_adjust_pc(host_vcpu);
+	}
 }
 
 static void handle___kvm_flush_vm_context(struct kvm_cpu_context *host_ctxt)
@@ -82,16 +951,6 @@ static void handle___vgic_v3_get_gic_config(struct kvm_cpu_context *host_ctxt)
 	cpu_reg(host_ctxt, 1) = __vgic_v3_get_gic_config();
 }
 
-static void handle___vgic_v3_read_vmcr(struct kvm_cpu_context *host_ctxt)
-{
-	cpu_reg(host_ctxt, 1) = __vgic_v3_read_vmcr();
-}
-
-static void handle___vgic_v3_write_vmcr(struct kvm_cpu_context *host_ctxt)
-{
-	__vgic_v3_write_vmcr(cpu_reg(host_ctxt, 1));
-}
-
 static void handle___vgic_v3_init_lrs(struct kvm_cpu_context *host_ctxt)
 {
 	__vgic_v3_init_lrs();
@@ -102,18 +961,65 @@ static void handle___kvm_get_mdcr_el2(struct kvm_cpu_context *host_ctxt)
 	cpu_reg(host_ctxt, 1) = __kvm_get_mdcr_el2();
 }
 
-static void handle___vgic_v3_save_aprs(struct kvm_cpu_context *host_ctxt)
+static void handle___vgic_v3_save_vmcr_aprs(struct kvm_cpu_context *host_ctxt)
 {
-	DECLARE_REG(struct vgic_v3_cpu_if *, cpu_if, host_ctxt, 1);
+	struct pkvm_hyp_vcpu *hyp_vcpu;
+	struct kvm_vcpu *host_vcpu;
 
-	__vgic_v3_save_aprs(kern_hyp_va(cpu_if));
+	host_vcpu = get_host_hyp_vcpus_from_vgic_v3_cpu_if(host_ctxt, 1,
+							   &hyp_vcpu);
+	if (!host_vcpu)
+		return;
+
+	if (unlikely(hyp_vcpu)) {
+		struct vgic_v3_cpu_if *hyp_cpu_if, *host_cpu_if;
+		int i;
+
+		hyp_cpu_if = &hyp_vcpu->vcpu.arch.vgic_cpu.vgic_v3;
+		__vgic_v3_save_vmcr_aprs(hyp_cpu_if);
+
+		host_cpu_if = &host_vcpu->arch.vgic_cpu.vgic_v3;
+		host_cpu_if->vgic_vmcr = hyp_cpu_if->vgic_vmcr;
+		for (i = 0; i < ARRAY_SIZE(host_cpu_if->vgic_ap0r); i++) {
+			host_cpu_if->vgic_ap0r[i] = hyp_cpu_if->vgic_ap0r[i];
+			host_cpu_if->vgic_ap1r[i] = hyp_cpu_if->vgic_ap1r[i];
+		}
+	} else {
+		__vgic_v3_save_vmcr_aprs(&host_vcpu->arch.vgic_cpu.vgic_v3);
+	}
 }
 
-static void handle___vgic_v3_restore_aprs(struct kvm_cpu_context *host_ctxt)
+static void handle___vgic_v3_restore_vmcr_aprs(struct kvm_cpu_context *host_ctxt)
 {
-	DECLARE_REG(struct vgic_v3_cpu_if *, cpu_if, host_ctxt, 1);
+	struct pkvm_hyp_vcpu *hyp_vcpu;
+	struct kvm_vcpu *host_vcpu;
 
-	__vgic_v3_restore_aprs(kern_hyp_va(cpu_if));
+	host_vcpu = get_host_hyp_vcpus_from_vgic_v3_cpu_if(host_ctxt, 1,
+							   &hyp_vcpu);
+	if (!host_vcpu)
+		return;
+
+	if (unlikely(hyp_vcpu)) {
+		struct vgic_v3_cpu_if *hyp_cpu_if, *host_cpu_if;
+		int i;
+
+		hyp_cpu_if = &hyp_vcpu->vcpu.arch.vgic_cpu.vgic_v3;
+		host_cpu_if = &host_vcpu->arch.vgic_cpu.vgic_v3;
+
+		hyp_cpu_if->vgic_vmcr = host_cpu_if->vgic_vmcr;
+		/* Should be a one-off */
+		hyp_cpu_if->vgic_sre = (ICC_SRE_EL1_DIB |
+					ICC_SRE_EL1_DFB |
+					ICC_SRE_EL1_SRE);
+		for (i = 0; i < ARRAY_SIZE(host_cpu_if->vgic_ap0r); i++) {
+			hyp_cpu_if->vgic_ap0r[i] = host_cpu_if->vgic_ap0r[i];
+			hyp_cpu_if->vgic_ap1r[i] = host_cpu_if->vgic_ap1r[i];
+		}
+
+		__vgic_v3_restore_vmcr_aprs(hyp_cpu_if);
+	} else {
+		__vgic_v3_restore_vmcr_aprs(&host_vcpu->arch.vgic_cpu.vgic_v3);
+	}
 }
 
 static void handle___pkvm_init(struct kvm_cpu_context *host_ctxt)
@@ -154,6 +1060,15 @@ static void handle___pkvm_host_unshare_hyp(struct kvm_cpu_context *host_ctxt)
 	cpu_reg(host_ctxt, 1) = __pkvm_host_unshare_hyp(pfn);
 }
 
+static void handle___pkvm_reclaim_dying_guest_page(struct kvm_cpu_context *host_ctxt)
+{
+	DECLARE_REG(pkvm_handle_t, handle, host_ctxt, 1);
+	DECLARE_REG(u64, pfn, host_ctxt, 2);
+	DECLARE_REG(u64, ipa, host_ctxt, 3);
+
+	cpu_reg(host_ctxt, 1) = __pkvm_reclaim_dying_guest_page(handle, pfn, ipa);
+}
+
 static void handle___pkvm_create_private_mapping(struct kvm_cpu_context *host_ctxt)
 {
 	DECLARE_REG(phys_addr_t, phys, host_ctxt, 1);
@@ -184,13 +1099,174 @@ static void handle___pkvm_prot_finalize(struct kvm_cpu_context *host_ctxt)
 	cpu_reg(host_ctxt, 1) = __pkvm_prot_finalize();
 }
 
-static void handle___pkvm_vcpu_init_traps(struct kvm_cpu_context *host_ctxt)
+static void handle___pkvm_init_vm(struct kvm_cpu_context *host_ctxt)
 {
-	DECLARE_REG(struct kvm_vcpu *, vcpu, host_ctxt, 1);
+	DECLARE_REG(struct kvm *, host_kvm, host_ctxt, 1);
+	DECLARE_REG(unsigned long, vm_hva, host_ctxt, 2);
+	DECLARE_REG(unsigned long, pgd_hva, host_ctxt, 3);
+	DECLARE_REG(unsigned long, last_ran_hva, host_ctxt, 4);
 
-	__pkvm_vcpu_init_traps(kern_hyp_va(vcpu));
+	host_kvm = kern_hyp_va(host_kvm);
+	cpu_reg(host_ctxt, 1) = __pkvm_init_vm(host_kvm, vm_hva, pgd_hva,
+					       last_ran_hva);
 }
 
+static void handle___pkvm_init_vcpu(struct kvm_cpu_context *host_ctxt)
+{
+	DECLARE_REG(pkvm_handle_t, handle, host_ctxt, 1);
+	DECLARE_REG(struct kvm_vcpu *, host_vcpu, host_ctxt, 2);
+	DECLARE_REG(unsigned long, vcpu_hva, host_ctxt, 3);
+
+	host_vcpu = kern_hyp_va(host_vcpu);
+	cpu_reg(host_ctxt, 1) = __pkvm_init_vcpu(handle, host_vcpu, vcpu_hva);
+}
+
+static void handle___pkvm_start_teardown_vm(struct kvm_cpu_context *host_ctxt)
+{
+	DECLARE_REG(pkvm_handle_t, handle, host_ctxt, 1);
+
+	cpu_reg(host_ctxt, 1) = __pkvm_start_teardown_vm(handle);
+}
+
+static void handle___pkvm_finalize_teardown_vm(struct kvm_cpu_context *host_ctxt)
+{
+	DECLARE_REG(pkvm_handle_t, handle, host_ctxt, 1);
+
+	cpu_reg(host_ctxt, 1) = __pkvm_finalize_teardown_vm(handle);
+}
+static void handle___pkvm_iommu_driver_init(struct kvm_cpu_context *host_ctxt)
+{
+	DECLARE_REG(struct pkvm_iommu_driver*, drv, host_ctxt, 1);
+	DECLARE_REG(void *, data, host_ctxt, 2);
+	DECLARE_REG(size_t, size, host_ctxt, 3);
+
+	data = kern_hyp_va(data);
+
+	cpu_reg(host_ctxt, 1) = __pkvm_iommu_driver_init(drv, data, size);
+}
+
+static void handle___pkvm_iommu_register(struct kvm_cpu_context *host_ctxt)
+{
+	DECLARE_REG(unsigned long, dev_id, host_ctxt, 1);
+	DECLARE_REG(unsigned long, drv_id, host_ctxt, 2);
+	DECLARE_REG(phys_addr_t, dev_pa, host_ctxt, 3);
+	DECLARE_REG(size_t, dev_size, host_ctxt, 4);
+	DECLARE_REG(unsigned long, parent_id, host_ctxt, 5);
+	DECLARE_REG(u8, flags, host_ctxt, 6);
+	DECLARE_REG(void *, mem, host_ctxt, 7);
+
+	cpu_reg(host_ctxt, 1) = __pkvm_iommu_register(dev_id, drv_id, dev_pa,
+						      dev_size, parent_id, flags, mem);
+}
+
+static void handle___pkvm_iommu_pm_notify(struct kvm_cpu_context *host_ctxt)
+{
+	DECLARE_REG(unsigned long, dev_id, host_ctxt, 1);
+	DECLARE_REG(enum pkvm_iommu_pm_event, event, host_ctxt, 2);
+
+	cpu_reg(host_ctxt, 1) = __pkvm_iommu_pm_notify(dev_id, event);
+}
+
+static void handle___pkvm_iommu_finalize(struct kvm_cpu_context *host_ctxt)
+{
+	DECLARE_REG(int, err, host_ctxt, 1);
+
+	cpu_reg(host_ctxt, 1) = __pkvm_iommu_finalize(err);
+}
+
+static void handle___pkvm_alloc_module_va(struct kvm_cpu_context *host_ctxt)
+{
+	DECLARE_REG(u64, nr_pages, host_ctxt, 1);
+
+	cpu_reg(host_ctxt, 1) = (u64)__pkvm_alloc_module_va(nr_pages);
+}
+
+static void handle___pkvm_map_module_page(struct kvm_cpu_context *host_ctxt)
+{
+	DECLARE_REG(u64, pfn, host_ctxt, 1);
+	DECLARE_REG(void *, va, host_ctxt, 2);
+	DECLARE_REG(enum kvm_pgtable_prot, prot, host_ctxt, 3);
+
+	cpu_reg(host_ctxt, 1) = (u64)__pkvm_map_module_page(pfn, va, prot, false);
+}
+
+static void handle___pkvm_unmap_module_page(struct kvm_cpu_context *host_ctxt)
+{
+	DECLARE_REG(u64, pfn, host_ctxt, 1);
+	DECLARE_REG(void *, va, host_ctxt, 2);
+
+	__pkvm_unmap_module_page(pfn, va);
+}
+
+static void handle___pkvm_init_module(struct kvm_cpu_context *host_ctxt)
+{
+	DECLARE_REG(void *, ptr, host_ctxt, 1);
+
+	cpu_reg(host_ctxt, 1) = __pkvm_init_module(ptr);
+}
+
+static void handle___pkvm_register_hcall(struct kvm_cpu_context *host_ctxt)
+{
+	DECLARE_REG(unsigned long, hfn_hyp_va, host_ctxt, 1);
+
+	cpu_reg(host_ctxt, 1) = __pkvm_register_hcall(hfn_hyp_va);
+}
+
+static void handle___pkvm_load_tracing(struct kvm_cpu_context *host_ctxt)
+{
+	 DECLARE_REG(unsigned long, pack_hva, host_ctxt, 1);
+	 DECLARE_REG(size_t, pack_size, host_ctxt, 2);
+
+	 cpu_reg(host_ctxt, 1) = __pkvm_load_tracing(pack_hva, pack_size);
+}
+
+static void handle___pkvm_teardown_tracing(struct kvm_cpu_context *host_ctxt)
+{
+	__pkvm_teardown_tracing();
+
+	cpu_reg(host_ctxt, 1) = 0;
+}
+
+static void handle___pkvm_enable_tracing(struct kvm_cpu_context *host_ctxt)
+{
+	DECLARE_REG(bool, enable, host_ctxt, 1);
+
+	cpu_reg(host_ctxt, 1) = __pkvm_enable_tracing(enable);
+}
+
+static void handle___pkvm_rb_swap_reader_page(struct kvm_cpu_context *host_ctxt)
+{
+	DECLARE_REG(int, cpu, host_ctxt, 1);
+
+	cpu_reg(host_ctxt, 1) = __pkvm_rb_swap_reader_page(cpu);
+}
+
+static void handle___pkvm_rb_update_footers(struct kvm_cpu_context *host_ctxt)
+{
+	DECLARE_REG(int, cpu, host_ctxt, 1);
+
+	cpu_reg(host_ctxt, 1) = __pkvm_rb_update_footers(cpu);
+}
+
+static void handle___pkvm_enable_event(struct kvm_cpu_context *host_ctxt)
+{
+	DECLARE_REG(unsigned short, id, host_ctxt, 1);
+	DECLARE_REG(bool, enable, host_ctxt, 2);
+
+	cpu_reg(host_ctxt, 1) = __pkvm_enable_event(id, enable);
+}
+
+#ifdef CONFIG_ANDROID_ARM64_WORKAROUND_DMA_BEYOND_POC
+extern int __pkvm_host_set_stage2_memattr(phys_addr_t phys, bool force_nc);
+static void handle___pkvm_host_set_stage2_memattr(struct kvm_cpu_context *host_ctxt)
+{
+	DECLARE_REG(phys_addr_t, phys, host_ctxt, 1);
+	DECLARE_REG(bool, force_nc, host_ctxt, 2);
+
+	cpu_reg(host_ctxt, 1) = __pkvm_host_set_stage2_memattr(phys, force_nc);
+}
+#endif
+
 typedef void (*hcall_t)(struct kvm_cpu_context *);
 
 #define HANDLE_FUNC(x)	[__KVM_HOST_SMCCC_FUNC_##x] = (hcall_t)handle_##x
@@ -204,22 +1280,46 @@ static const hcall_t host_hcall[] = {
 	HANDLE_FUNC(__kvm_enable_ssbs),
 	HANDLE_FUNC(__vgic_v3_init_lrs),
 	HANDLE_FUNC(__vgic_v3_get_gic_config),
-	HANDLE_FUNC(__pkvm_prot_finalize),
-
-	HANDLE_FUNC(__pkvm_host_share_hyp),
-	HANDLE_FUNC(__pkvm_host_unshare_hyp),
-	HANDLE_FUNC(__kvm_adjust_pc),
-	HANDLE_FUNC(__kvm_vcpu_run),
 	HANDLE_FUNC(__kvm_flush_vm_context),
 	HANDLE_FUNC(__kvm_tlb_flush_vmid_ipa),
 	HANDLE_FUNC(__kvm_tlb_flush_vmid),
 	HANDLE_FUNC(__kvm_flush_cpu_context),
+	HANDLE_FUNC(__pkvm_alloc_module_va),
+	HANDLE_FUNC(__pkvm_map_module_page),
+	HANDLE_FUNC(__pkvm_unmap_module_page),
+	HANDLE_FUNC(__pkvm_init_module),
+	HANDLE_FUNC(__pkvm_register_hcall),
+	HANDLE_FUNC(__pkvm_prot_finalize),
+
+	HANDLE_FUNC(__pkvm_host_share_hyp),
+	HANDLE_FUNC(__pkvm_host_unshare_hyp),
+	HANDLE_FUNC(__pkvm_host_map_guest),
+	HANDLE_FUNC(__kvm_adjust_pc),
+	HANDLE_FUNC(__kvm_vcpu_run),
 	HANDLE_FUNC(__kvm_timer_set_cntvoff),
-	HANDLE_FUNC(__vgic_v3_read_vmcr),
-	HANDLE_FUNC(__vgic_v3_write_vmcr),
-	HANDLE_FUNC(__vgic_v3_save_aprs),
-	HANDLE_FUNC(__vgic_v3_restore_aprs),
-	HANDLE_FUNC(__pkvm_vcpu_init_traps),
+	HANDLE_FUNC(__vgic_v3_save_vmcr_aprs),
+	HANDLE_FUNC(__vgic_v3_restore_vmcr_aprs),
+	HANDLE_FUNC(__pkvm_init_vm),
+	HANDLE_FUNC(__pkvm_init_vcpu),
+	HANDLE_FUNC(__pkvm_start_teardown_vm),
+	HANDLE_FUNC(__pkvm_finalize_teardown_vm),
+	HANDLE_FUNC(__pkvm_reclaim_dying_guest_page),
+	HANDLE_FUNC(__pkvm_vcpu_load),
+	HANDLE_FUNC(__pkvm_vcpu_put),
+	HANDLE_FUNC(__pkvm_vcpu_sync_state),
+	HANDLE_FUNC(__pkvm_iommu_driver_init),
+	HANDLE_FUNC(__pkvm_iommu_register),
+	HANDLE_FUNC(__pkvm_iommu_pm_notify),
+	HANDLE_FUNC(__pkvm_iommu_finalize),
+	HANDLE_FUNC(__pkvm_load_tracing),
+	HANDLE_FUNC(__pkvm_teardown_tracing),
+	HANDLE_FUNC(__pkvm_enable_tracing),
+	HANDLE_FUNC(__pkvm_rb_swap_reader_page),
+	HANDLE_FUNC(__pkvm_rb_update_footers),
+	HANDLE_FUNC(__pkvm_enable_event),
+#ifdef CONFIG_ANDROID_ARM64_WORKAROUND_DMA_BEYOND_POC
+	HANDLE_FUNC(__pkvm_host_set_stage2_memattr),
+#endif
 };
 
 static void handle_host_hcall(struct kvm_cpu_context *host_ctxt)
@@ -228,6 +1328,9 @@ static void handle_host_hcall(struct kvm_cpu_context *host_ctxt)
 	unsigned long hcall_min = 0;
 	hcall_t hfn;
 
+	if (handle_host_dynamic_hcall(host_ctxt) == HCALL_HANDLED)
+		return;
+
 	/*
 	 * If pKVM has been initialised then reject any calls to the
 	 * early "privileged" hypercalls. Note that we cannot reject
@@ -252,23 +1355,33 @@ static void handle_host_hcall(struct kvm_cpu_context *host_ctxt)
 	cpu_reg(host_ctxt, 0) = SMCCC_RET_SUCCESS;
 	hfn(host_ctxt);
 
+	trace_host_hcall(id, 0);
+
 	return;
 inval:
+	trace_host_hcall(id, 1);
 	cpu_reg(host_ctxt, 0) = SMCCC_RET_NOT_SUPPORTED;
 }
 
-static void default_host_smc_handler(struct kvm_cpu_context *host_ctxt)
-{
-	__kvm_hyp_host_forward_smc(host_ctxt);
-}
-
 static void handle_host_smc(struct kvm_cpu_context *host_ctxt)
 {
+	DECLARE_REG(u64, func_id, host_ctxt, 0);
+	struct pkvm_hyp_vcpu *hyp_vcpu;
 	bool handled;
 
+	hyp_vcpu = pkvm_get_loaded_hyp_vcpu();
+	if (hyp_vcpu && hyp_vcpu->vcpu.arch.fp_state == FP_STATE_GUEST_OWNED)
+		fpsimd_host_restore();
+
 	handled = kvm_host_psci_handler(host_ctxt);
 	if (!handled)
-		default_host_smc_handler(host_ctxt);
+		handled = kvm_host_ffa_handler(host_ctxt);
+	if (!handled && READ_ONCE(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);
 
 	/* SMC was trapped, move ELR past the current PC. */
 	kvm_skip_host_instr();
@@ -278,6 +1391,8 @@ void handle_trap(struct kvm_cpu_context *host_ctxt)
 {
 	u64 esr = read_sysreg_el2(SYS_ESR);
 
+	trace_hyp_enter();
+
 	switch (ESR_ELx_EC(esr)) {
 	case ESR_ELx_EC_HVC64:
 		handle_host_hcall(host_ctxt);
@@ -285,16 +1400,17 @@ void handle_trap(struct kvm_cpu_context *host_ctxt)
 	case ESR_ELx_EC_SMC64:
 		handle_host_smc(host_ctxt);
 		break;
+	case ESR_ELx_EC_FP_ASIMD:
 	case ESR_ELx_EC_SVE:
-		sysreg_clear_set(cptr_el2, CPTR_EL2_TZ, 0);
-		isb();
-		sve_cond_update_zcr_vq(ZCR_ELx_LEN_MASK, SYS_ZCR_EL2);
+		fpsimd_host_restore();
 		break;
 	case ESR_ELx_EC_IABT_LOW:
 	case ESR_ELx_EC_DABT_LOW:
 		handle_host_mem_abort(host_ctxt);
 		break;
 	default:
-		BUG();
+		BUG_ON(!READ_ONCE(default_trap_handler) || !default_trap_handler(host_ctxt));
 	}
+
+	trace_hyp_exit();
 }
diff --git a/arch/arm64/kvm/hyp/nvhe/hyp-smp.c b/arch/arm64/kvm/hyp/nvhe/hyp-smp.c
index 9f54833..9fcb92a 100644
--- a/arch/arm64/kvm/hyp/nvhe/hyp-smp.c
+++ b/arch/arm64/kvm/hyp/nvhe/hyp-smp.c
@@ -8,6 +8,8 @@
 #include <asm/kvm_hyp.h>
 #include <asm/kvm_mmu.h>
 
+DEFINE_PER_CPU(int, hyp_cpu_number);
+
 /*
  * nVHE copy of data structures tracking available CPU cores.
  * Only entries for CPUs that were online at KVM init are populated.
@@ -23,6 +25,8 @@ u64 cpu_logical_map(unsigned int cpu)
 	return hyp_cpu_logical_map[cpu];
 }
 
+unsigned long __ro_after_init kvm_arm_hyp_percpu_base[NR_CPUS];
+
 unsigned long __hyp_per_cpu_offset(unsigned int cpu)
 {
 	unsigned long *cpu_base_array;
diff --git a/arch/arm64/kvm/hyp/nvhe/hyp.lds.S b/arch/arm64/kvm/hyp/nvhe/hyp.lds.S
index f4562f4..b9ad9e6 100644
--- a/arch/arm64/kvm/hyp/nvhe/hyp.lds.S
+++ b/arch/arm64/kvm/hyp/nvhe/hyp.lds.S
@@ -16,6 +16,10 @@
 	HYP_SECTION(.text)
 	HYP_SECTION(.data..ro_after_init)
 	HYP_SECTION(.rodata)
+#ifdef CONFIG_TRACING
+	. = ALIGN(PAGE_SIZE);
+	HYP_SECTION(.event_ids)
+#endif
 
 	/*
 	 * .hyp..data..percpu needs to be page aligned to maintain the same
@@ -25,5 +29,7 @@
 	BEGIN_HYP_SECTION(.data..percpu)
 		PERCPU_INPUT(L1_CACHE_BYTES)
 	END_HYP_SECTION
+
 	HYP_SECTION(.bss)
+	HYP_SECTION(.data)
 }
diff --git a/arch/arm64/kvm/hyp/nvhe/iommu.c b/arch/arm64/kvm/hyp/nvhe/iommu.c
new file mode 100644
index 0000000..6c5ac9b
--- /dev/null
+++ b/arch/arm64/kvm/hyp/nvhe/iommu.c
@@ -0,0 +1,533 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (C) 2022 Google LLC
+ * Author: David Brazdil <dbrazdil@google.com>
+ */
+
+#include <linux/kvm_host.h>
+
+#include <asm/kvm_asm.h>
+#include <asm/kvm_hyp.h>
+#include <asm/kvm_mmu.h>
+#include <asm/kvm_pkvm.h>
+
+#include <hyp/adjust_pc.h>
+#include <nvhe/iommu.h>
+#include <nvhe/mm.h>
+#include <nvhe/modules.h>
+#include <nvhe/pkvm.h>
+
+#define DRV_ID(drv_addr)			((unsigned long)drv_addr)
+
+enum {
+	IOMMU_DRIVER_NOT_READY = 0,
+	IOMMU_DRIVER_INITIALIZING,
+	IOMMU_DRIVER_READY,
+};
+
+/* List of registered IOMMU drivers, protected with iommu_drv_lock. */
+static LIST_HEAD(iommu_drivers);
+/* IOMMU device list. Must only be accessed with host_mmu.lock held. */
+static LIST_HEAD(iommu_list);
+
+static bool iommu_finalized;
+static DEFINE_HYP_SPINLOCK(iommu_registration_lock);
+static DEFINE_HYP_SPINLOCK(iommu_drv_lock);
+
+static void *iommu_mem_pool;
+static size_t iommu_mem_remaining;
+
+static void assert_host_component_locked(void)
+{
+	hyp_assert_lock_held(&host_mmu.lock);
+}
+
+static void host_lock_component(void)
+{
+	hyp_spin_lock(&host_mmu.lock);
+}
+
+static void host_unlock_component(void)
+{
+	hyp_spin_unlock(&host_mmu.lock);
+}
+
+/*
+ * Find IOMMU driver by its ID. The input ID is treated as unstrusted
+ * and is properly validated.
+ */
+static inline struct pkvm_iommu_driver *get_driver(unsigned long id)
+{
+	struct pkvm_iommu_driver *drv, *ret = NULL;
+
+	hyp_spin_lock(&iommu_drv_lock);
+	list_for_each_entry(drv, &iommu_drivers, list) {
+		if (DRV_ID(drv) == id) {
+			ret =  drv;
+			break;
+		}
+	}
+	hyp_spin_unlock(&iommu_drv_lock);
+	return ret;
+}
+
+static inline bool driver_acquire_init(struct pkvm_iommu_driver *drv)
+{
+	return atomic_cmpxchg_acquire(&drv->state, IOMMU_DRIVER_NOT_READY,
+				      IOMMU_DRIVER_INITIALIZING)
+			== IOMMU_DRIVER_NOT_READY;
+}
+
+static inline void driver_release_init(struct pkvm_iommu_driver *drv,
+				       bool success)
+{
+	atomic_set_release(&drv->state, success ? IOMMU_DRIVER_READY
+						: IOMMU_DRIVER_NOT_READY);
+}
+
+static inline bool is_driver_ready(struct pkvm_iommu_driver *drv)
+{
+	return atomic_read(&drv->state) == IOMMU_DRIVER_READY;
+}
+
+static size_t __iommu_alloc_size(struct pkvm_iommu_driver *drv)
+{
+	return ALIGN(sizeof(struct pkvm_iommu) + drv->ops->data_size,
+		     sizeof(unsigned long));
+}
+
+static bool validate_driver_id_unique(struct pkvm_iommu_driver *drv)
+{
+	struct pkvm_iommu_driver *cur;
+
+	hyp_assert_lock_held(&iommu_drv_lock);
+	list_for_each_entry(cur, &iommu_drivers, list) {
+		if (DRV_ID(drv) == DRV_ID(cur))
+			return false;
+	}
+	return true;
+}
+
+static int __pkvm_register_iommu_driver(struct pkvm_iommu_driver *drv)
+{
+	int ret = 0;
+
+	if (!drv)
+		return -EINVAL;
+
+	hyp_assert_lock_held(&iommu_registration_lock);
+	hyp_spin_lock(&iommu_drv_lock);
+	if (validate_driver_id_unique(drv))
+		list_add_tail(&drv->list, &iommu_drivers);
+	else
+		ret = -EEXIST;
+	hyp_spin_unlock(&iommu_drv_lock);
+	return ret;
+}
+
+/* Global memory pool for allocating IOMMU list entry structs. */
+static inline struct pkvm_iommu *alloc_iommu(struct pkvm_iommu_driver *drv,
+					     void *mem, size_t mem_size)
+{
+	size_t size = __iommu_alloc_size(drv);
+	void *ptr;
+
+	assert_host_component_locked();
+
+	/*
+	 * If new memory is being provided, replace the existing pool with it.
+	 * Any remaining memory in the pool is discarded.
+	 */
+	if (mem && mem_size) {
+		iommu_mem_pool = mem;
+		iommu_mem_remaining = mem_size;
+	}
+
+	if (size > iommu_mem_remaining)
+		return NULL;
+
+	ptr = iommu_mem_pool;
+	iommu_mem_pool += size;
+	iommu_mem_remaining -= size;
+	return ptr;
+}
+
+static inline void free_iommu(struct pkvm_iommu_driver *drv, struct pkvm_iommu *ptr)
+{
+	size_t size = __iommu_alloc_size(drv);
+
+	assert_host_component_locked();
+
+	if (!ptr)
+		return;
+
+	/* Only allow freeing the last allocated buffer. */
+	if ((void *)ptr + size != iommu_mem_pool)
+		return;
+
+	iommu_mem_pool -= size;
+	iommu_mem_remaining += size;
+}
+
+static bool is_overlap(phys_addr_t r1_start, size_t r1_size,
+		       phys_addr_t r2_start, size_t r2_size)
+{
+	phys_addr_t r1_end = r1_start + r1_size;
+	phys_addr_t r2_end = r2_start + r2_size;
+
+	return (r1_start < r2_end) && (r2_start < r1_end);
+}
+
+static bool is_mmio_range(phys_addr_t base, size_t size)
+{
+	struct memblock_region *reg;
+	phys_addr_t limit = BIT(host_mmu.pgt.ia_bits);
+	size_t i;
+
+	/* Check against limits of host IPA space. */
+	if ((base >= limit) || !size || (size > limit - base))
+		return false;
+
+	for (i = 0; i < hyp_memblock_nr; i++) {
+		reg = &hyp_memory[i];
+		if (is_overlap(base, size, reg->base, reg->size))
+			return false;
+	}
+	return true;
+}
+
+static int __snapshot_host_stage2(u64 start, u64 pa_max, u32 level,
+				  kvm_pte_t *ptep,
+				  enum kvm_pgtable_walk_flags flags,
+				  void * const arg)
+{
+	struct pkvm_iommu_driver * const drv = arg;
+	u64 end = start + kvm_granule_size(level);
+	kvm_pte_t pte = *ptep;
+
+	/*
+	 * Valid stage-2 entries are created lazily, invalid ones eagerly.
+	 * Note: In the future we may need to check if [start,end) is MMIO.
+	 * Note: Drivers initialize their PTs to all memory owned by the host,
+	 * so we only call the driver on regions where that is not the case.
+	 */
+	if (pte && !kvm_pte_valid(pte))
+		drv->ops->host_stage2_idmap_prepare(start, end, /*prot*/ 0);
+	return 0;
+}
+
+static int snapshot_host_stage2(struct pkvm_iommu_driver * const drv)
+{
+	struct kvm_pgtable_walker walker = {
+		.cb	= __snapshot_host_stage2,
+		.arg	= drv,
+		.flags	= KVM_PGTABLE_WALK_LEAF,
+	};
+	struct kvm_pgtable *pgt = &host_mmu.pgt;
+
+	if (!drv->ops->host_stage2_idmap_prepare)
+		return 0;
+
+	return kvm_pgtable_walk(pgt, 0, BIT(pgt->ia_bits), &walker);
+}
+
+static bool validate_against_existing_iommus(struct pkvm_iommu *dev)
+{
+	struct pkvm_iommu *other;
+
+	assert_host_component_locked();
+
+	list_for_each_entry(other, &iommu_list, list) {
+		/* Device ID must be unique. */
+		if (dev->id == other->id)
+			return false;
+
+		/* MMIO regions must not overlap. */
+		if (is_overlap(dev->pa, dev->size, other->pa, other->size))
+			return false;
+	}
+	return true;
+}
+
+static struct pkvm_iommu *find_iommu_by_id(unsigned long id)
+{
+	struct pkvm_iommu *dev;
+
+	assert_host_component_locked();
+
+	list_for_each_entry(dev, &iommu_list, list) {
+		if (dev->id == id)
+			return dev;
+	}
+	return NULL;
+}
+
+/*
+ * Initialize EL2 IOMMU driver.
+ *
+ * This is a common hypercall for driver initialization. Driver-specific
+ * arguments are passed in a shared memory buffer. The driver is expected to
+ * initialize it's page-table bookkeeping.
+ */
+int __pkvm_iommu_driver_init(struct pkvm_iommu_driver *drv, void *data, size_t size)
+{
+	const struct pkvm_iommu_ops *ops;
+	int ret = 0;
+
+	/* New driver initialization not allowed after __pkvm_iommu_finalize(). */
+	hyp_spin_lock(&iommu_registration_lock);
+	if (iommu_finalized) {
+		ret = -EPERM;
+		goto out_unlock;
+	}
+
+	ret =  __pkvm_register_iommu_driver(drv);
+	if (ret)
+		return ret;
+
+	if (!drv->ops) {
+		ret = -EINVAL;
+		goto out_unlock;
+	}
+
+	if (!driver_acquire_init(drv)) {
+		ret = -EBUSY;
+		goto out_unlock;
+	}
+
+	ops = drv->ops;
+
+	/* This can change stage-2 mappings. */
+	if (ops->init) {
+		ret = hyp_pin_shared_mem(data, data + size);
+		if (!ret) {
+			ret = ops->init(data, size);
+			hyp_unpin_shared_mem(data, data + size);
+		}
+		if (ret)
+			goto out_release;
+	}
+
+	/*
+	 * Walk host stage-2 and pass current mappings to the driver. Start
+	 * accepting host stage-2 updates as soon as the host lock is released.
+	 */
+	host_lock_component();
+	ret = snapshot_host_stage2(drv);
+	if (!ret)
+		driver_release_init(drv, /*success=*/true);
+	host_unlock_component();
+
+out_release:
+	if (ret)
+		driver_release_init(drv, /*success=*/false);
+
+out_unlock:
+	hyp_spin_unlock(&iommu_registration_lock);
+	return ret;
+}
+
+int __pkvm_iommu_register(unsigned long dev_id, unsigned long drv_id,
+			  phys_addr_t dev_pa, size_t dev_size,
+			  unsigned long parent_id, u8 flags,
+			  void *kern_mem_va)
+{
+	struct pkvm_iommu *dev = NULL;
+	struct pkvm_iommu_driver *drv;
+	void *mem_va = NULL;
+	int ret = 0;
+
+	/* New device registration not allowed after __pkvm_iommu_finalize(). */
+	hyp_spin_lock(&iommu_registration_lock);
+	if (iommu_finalized) {
+		ret = -EPERM;
+		goto out_unlock;
+	}
+
+	drv = get_driver(drv_id);
+	if (!drv || !is_driver_ready(drv)) {
+		ret = -ENOENT;
+		goto out_unlock;
+	}
+
+	if (!PAGE_ALIGNED(dev_pa) || !PAGE_ALIGNED(dev_size)) {
+		ret = -EINVAL;
+		goto out_unlock;
+	}
+
+	if (!is_mmio_range(dev_pa, dev_size)) {
+		ret = -EINVAL;
+		goto out_unlock;
+	}
+
+	/*
+	 * Accept memory donation if the host is providing new memory.
+	 * Note: We do not return the memory even if there is an error later.
+	 */
+	if (kern_mem_va) {
+		mem_va = kern_hyp_va(kern_mem_va);
+
+		if (!PAGE_ALIGNED(mem_va)) {
+			ret = -EINVAL;
+			goto out_unlock;
+		}
+
+		ret = __pkvm_host_donate_hyp(hyp_virt_to_pfn(mem_va), 1);
+		if (ret)
+			goto out_unlock;
+	}
+
+	host_lock_component();
+
+	/* Allocate memory for the new device entry. */
+	dev = alloc_iommu(drv, mem_va, PAGE_SIZE);
+	if (!dev) {
+		ret = -ENOMEM;
+		goto out_free;
+	}
+
+	/* Populate the new device entry. */
+	*dev = (struct pkvm_iommu){
+		.children = LIST_HEAD_INIT(dev->children),
+		.id = dev_id,
+		.ops = drv->ops,
+		.pa = dev_pa,
+		.va = hyp_phys_to_virt(dev_pa),
+		.size = dev_size,
+		.flags = flags,
+	};
+
+	if (!validate_against_existing_iommus(dev)) {
+		ret = -EBUSY;
+		goto out_free;
+	}
+
+	if (parent_id) {
+		dev->parent = find_iommu_by_id(parent_id);
+		if (!dev->parent) {
+			ret = -EINVAL;
+			goto out_free;
+		}
+
+		if (dev->parent->ops->validate_child) {
+			ret = dev->parent->ops->validate_child(dev->parent, dev);
+			if (ret)
+				goto out_free;
+		}
+	}
+
+	if (dev->ops->validate) {
+		ret = dev->ops->validate(dev);
+		if (ret)
+			goto out_free;
+	}
+
+	ret = __pkvm_host_donate_hyp_locked(hyp_phys_to_pfn(dev_pa),
+					    PAGE_ALIGN(dev_size) >> PAGE_SHIFT);
+	if (ret)
+		goto out_free;
+
+	/* Register device and prevent host from mapping the MMIO range. */
+	list_add_tail(&dev->list, &iommu_list);
+	if (dev->parent)
+		list_add_tail(&dev->siblings, &dev->parent->children);
+
+out_free:
+	if (ret)
+		free_iommu(drv, dev);
+	host_unlock_component();
+
+out_unlock:
+	hyp_spin_unlock(&iommu_registration_lock);
+	return ret;
+}
+
+int __pkvm_iommu_finalize(int err)
+{
+	int ret = 0;
+
+	/* Err is not currently used in EL2.*/
+	WARN_ON(err);
+
+	hyp_spin_lock(&iommu_registration_lock);
+	if (!iommu_finalized)
+		iommu_finalized = true;
+	else
+		ret = -EPERM;
+	hyp_spin_unlock(&iommu_registration_lock);
+
+	return ret;
+}
+
+int __pkvm_iommu_pm_notify(unsigned long dev_id, enum pkvm_iommu_pm_event event)
+{
+	struct pkvm_iommu *dev;
+	int ret;
+
+	host_lock_component();
+	dev = find_iommu_by_id(dev_id);
+	if (dev) {
+		if (event == PKVM_IOMMU_PM_SUSPEND) {
+			ret = dev->ops->suspend ? dev->ops->suspend(dev) : 0;
+			if (!ret)
+				dev->powered = false;
+		} else if (event == PKVM_IOMMU_PM_RESUME) {
+			ret = dev->ops->resume ? dev->ops->resume(dev) : 0;
+			if (!ret)
+				dev->powered = true;
+		} else {
+			ret = -EINVAL;
+		}
+	} else {
+		ret = -ENODEV;
+	}
+	host_unlock_component();
+	return ret;
+}
+
+bool pkvm_iommu_host_dabt_handler(struct kvm_cpu_context *host_ctxt, u32 esr,
+				  phys_addr_t pa)
+{
+	struct pkvm_iommu *dev;
+
+	assert_host_component_locked();
+
+	list_for_each_entry(dev, &iommu_list, list) {
+		if (pa < dev->pa || pa >= dev->pa + dev->size)
+			continue;
+
+		/* No 'powered' check - the host assumes it is powered. */
+		if (!dev->ops->host_dabt_handler ||
+		    !dev->ops->host_dabt_handler(dev, host_ctxt, esr, pa - dev->pa))
+			return false;
+
+		kvm_skip_host_instr();
+		return true;
+	}
+	return false;
+}
+
+void pkvm_iommu_host_stage2_idmap(phys_addr_t start, phys_addr_t end,
+				  enum kvm_pgtable_prot prot)
+{
+	struct pkvm_iommu_driver *drv;
+	struct pkvm_iommu *dev;
+
+	assert_host_component_locked();
+	hyp_spin_lock(&iommu_drv_lock);
+	list_for_each_entry(drv, &iommu_drivers, list) {
+		if (drv && is_driver_ready(drv) && drv->ops->host_stage2_idmap_prepare)
+			drv->ops->host_stage2_idmap_prepare(start, end, prot);
+	}
+	hyp_spin_unlock(&iommu_drv_lock);
+
+	list_for_each_entry(dev, &iommu_list, list) {
+		if (dev->powered && dev->ops->host_stage2_idmap_apply)
+			dev->ops->host_stage2_idmap_apply(dev, start, end);
+	}
+
+	list_for_each_entry(dev, &iommu_list, list) {
+		if (dev->powered && dev->ops->host_stage2_idmap_complete)
+			dev->ops->host_stage2_idmap_complete(dev);
+	}
+}
diff --git a/arch/arm64/kvm/hyp/nvhe/mem_protect.c b/arch/arm64/kvm/hyp/nvhe/mem_protect.c
index 07f9dc9..2aeb5a8 100644
--- a/arch/arm64/kvm/hyp/nvhe/mem_protect.c
+++ b/arch/arm64/kvm/hyp/nvhe/mem_protect.c
@@ -7,35 +7,66 @@
 #include <linux/kvm_host.h>
 #include <asm/kvm_emulate.h>
 #include <asm/kvm_hyp.h>
+#include <asm/kvm_hypevents.h>
 #include <asm/kvm_mmu.h>
 #include <asm/kvm_pgtable.h>
 #include <asm/kvm_pkvm.h>
 #include <asm/stage2_pgtable.h>
 
+#include <hyp/adjust_pc.h>
 #include <hyp/fault.h>
 
 #include <nvhe/gfp.h>
+#include <nvhe/iommu.h>
 #include <nvhe/memory.h>
 #include <nvhe/mem_protect.h>
 #include <nvhe/mm.h>
+#include <nvhe/modules.h>
 
 #define KVM_HOST_S2_FLAGS (KVM_PGTABLE_S2_NOFWB | KVM_PGTABLE_S2_IDMAP)
 
-extern unsigned long hyp_nr_cpus;
-struct host_kvm host_kvm;
+struct host_mmu host_mmu;
+
+struct pkvm_moveable_reg pkvm_moveable_regs[PKVM_NR_MOVEABLE_REGS];
+unsigned int pkvm_moveable_regs_nr;
 
 static struct hyp_pool host_s2_pool;
 
-const u8 pkvm_hyp_id = 1;
+static DEFINE_PER_CPU(struct pkvm_hyp_vm *, __current_vm);
+#define current_vm (*this_cpu_ptr(&__current_vm))
+
+static struct kvm_pgtable_pte_ops host_s2_pte_ops;
+static bool host_stage2_force_pte(u64 addr, u64 end, enum kvm_pgtable_prot prot);
+static bool host_stage2_pte_is_counted(kvm_pte_t pte, u32 level);
+static bool guest_stage2_force_pte_cb(u64 addr, u64 end,
+				      enum kvm_pgtable_prot prot);
+static bool guest_stage2_pte_is_counted(kvm_pte_t pte, u32 level);
+
+static struct kvm_pgtable_pte_ops guest_s2_pte_ops = {
+	.force_pte_cb = guest_stage2_force_pte_cb,
+	.pte_is_counted_cb = guest_stage2_pte_is_counted
+};
+
+static void guest_lock_component(struct pkvm_hyp_vm *vm)
+{
+	hyp_spin_lock(&vm->lock);
+	current_vm = vm;
+}
+
+static void guest_unlock_component(struct pkvm_hyp_vm *vm)
+{
+	current_vm = NULL;
+	hyp_spin_unlock(&vm->lock);
+}
 
 static void host_lock_component(void)
 {
-	hyp_spin_lock(&host_kvm.lock);
+	hyp_spin_lock(&host_mmu.lock);
 }
 
 static void host_unlock_component(void)
 {
-	hyp_spin_unlock(&host_kvm.lock);
+	hyp_spin_unlock(&host_mmu.lock);
 }
 
 static void hyp_lock_component(void)
@@ -48,10 +79,35 @@ static void hyp_unlock_component(void)
 	hyp_spin_unlock(&pkvm_pgd_lock);
 }
 
+static void assert_host_can_alloc(void)
+{
+	/* We can always get back to the host from guest context */
+	if (read_sysreg(vttbr_el2) != kvm_get_vttbr(&host_mmu.arch.mmu))
+		return;
+
+	/*
+	 * An error code must be returned to EL1 to handle memory allocation
+	 * failures cleanly. That's doable for explicit calls into higher
+	 * ELs, but not so much for other EL2 entry reasons such as mem aborts.
+	 * Thankfully we don't need memory allocation in these cases by
+	 * construction, so let's enforce the invariant.
+	 */
+	switch (ESR_ELx_EC(read_sysreg(esr_el2))) {
+	case ESR_ELx_EC_HVC64:
+	case ESR_ELx_EC_SMC64:
+		break;
+	default:
+		WARN_ON(1);
+	}
+}
+
 static void *host_s2_zalloc_pages_exact(size_t size)
 {
-	void *addr = hyp_alloc_pages(&host_s2_pool, get_order(size));
+	void *addr;
 
+	assert_host_can_alloc();
+
+	addr = hyp_alloc_pages(&host_s2_pool, get_order(size));
 	hyp_split_page(hyp_virt_to_page(addr));
 
 	/*
@@ -66,6 +122,8 @@ static void *host_s2_zalloc_pages_exact(size_t size)
 
 static void *host_s2_zalloc_page(void *pool)
 {
+	assert_host_can_alloc();
+
 	return hyp_alloc_pages(pool, 0);
 }
 
@@ -90,7 +148,7 @@ static int prepare_s2_pool(void *pgt_pool_base)
 	if (ret)
 		return ret;
 
-	host_kvm.mm_ops = (struct kvm_pgtable_mm_ops) {
+	host_mmu.mm_ops = (struct kvm_pgtable_mm_ops) {
 		.zalloc_pages_exact = host_s2_zalloc_pages_exact,
 		.zalloc_page = host_s2_zalloc_page,
 		.phys_to_virt = hyp_phys_to_virt,
@@ -111,53 +169,260 @@ static void prepare_host_vtcr(void)
 	parange = kvm_get_parange(id_aa64mmfr0_el1_sys_val);
 	phys_shift = id_aa64mmfr0_parange_to_phys_shift(parange);
 
-	host_kvm.arch.vtcr = kvm_get_vtcr(id_aa64mmfr0_el1_sys_val,
+	host_mmu.arch.vtcr = kvm_get_vtcr(id_aa64mmfr0_el1_sys_val,
 					  id_aa64mmfr1_el1_sys_val, phys_shift);
 }
 
-static bool host_stage2_force_pte_cb(u64 addr, u64 end, enum kvm_pgtable_prot prot);
+static int prepopulate_host_stage2(void)
+{
+	struct memblock_region *reg;
+	u64 addr = 0;
+	int i, ret;
+
+	for (i = 0; i < hyp_memblock_nr; i++) {
+		reg = &hyp_memory[i];
+		ret = host_stage2_idmap_locked(addr, reg->base - addr, PKVM_HOST_MMIO_PROT, false);
+		if (ret)
+			return ret;
+		ret = host_stage2_idmap_locked(reg->base, reg->size, PKVM_HOST_MEM_PROT, false);
+		if (ret)
+			return ret;
+		addr = reg->base + reg->size;
+	}
+
+	return host_stage2_idmap_locked(addr, BIT(host_mmu.pgt.ia_bits) - addr, PKVM_HOST_MMIO_PROT,
+					false);
+}
 
 int kvm_host_prepare_stage2(void *pgt_pool_base)
 {
-	struct kvm_s2_mmu *mmu = &host_kvm.arch.mmu;
+	struct kvm_s2_mmu *mmu = &host_mmu.arch.mmu;
 	int ret;
 
 	prepare_host_vtcr();
-	hyp_spin_lock_init(&host_kvm.lock);
-	mmu->arch = &host_kvm.arch;
+	hyp_spin_lock_init(&host_mmu.lock);
+	mmu->arch = &host_mmu.arch;
 
 	ret = prepare_s2_pool(pgt_pool_base);
 	if (ret)
 		return ret;
 
-	ret = __kvm_pgtable_stage2_init(&host_kvm.pgt, mmu,
-					&host_kvm.mm_ops, KVM_HOST_S2_FLAGS,
-					host_stage2_force_pte_cb);
+	host_s2_pte_ops.force_pte_cb = host_stage2_force_pte;
+	host_s2_pte_ops.pte_is_counted_cb = host_stage2_pte_is_counted;
+
+	ret = __kvm_pgtable_stage2_init(&host_mmu.pgt, mmu,
+					&host_mmu.mm_ops, KVM_HOST_S2_FLAGS,
+					&host_s2_pte_ops);
 	if (ret)
 		return ret;
 
-	mmu->pgd_phys = __hyp_pa(host_kvm.pgt.pgd);
-	mmu->pgt = &host_kvm.pgt;
+	mmu->pgd_phys = __hyp_pa(host_mmu.pgt.pgd);
+	mmu->pgt = &host_mmu.pgt;
 	atomic64_set(&mmu->vmid.id, 0);
 
+	return prepopulate_host_stage2();
+}
+
+static bool guest_stage2_force_pte_cb(u64 addr, u64 end,
+				      enum kvm_pgtable_prot prot)
+{
+	return true;
+}
+
+static bool guest_stage2_pte_is_counted(kvm_pte_t pte, u32 level)
+{
+	/*
+	 * The refcount tracks valid entries as well as invalid entries if they
+	 * encode ownership of a page to another entity than the page-table
+	 * owner, whose id is 0.
+	 */
+	return !!pte;
+}
+
+static void *guest_s2_zalloc_pages_exact(size_t size)
+{
+	void *addr = hyp_alloc_pages(&current_vm->pool, get_order(size));
+
+	WARN_ON(size != (PAGE_SIZE << get_order(size)));
+	hyp_split_page(hyp_virt_to_page(addr));
+
+	return addr;
+}
+
+static void guest_s2_free_pages_exact(void *addr, unsigned long size)
+{
+	u8 order = get_order(size);
+	unsigned int i;
+
+	for (i = 0; i < (1 << order); i++)
+		hyp_put_page(&current_vm->pool, addr + (i * PAGE_SIZE));
+}
+
+static void *guest_s2_zalloc_page(void *mc)
+{
+	struct hyp_page *p;
+	void *addr;
+
+	addr = hyp_alloc_pages(&current_vm->pool, 0);
+	if (addr)
+		return addr;
+
+	addr = pop_hyp_memcache(mc, hyp_phys_to_virt);
+	if (!addr)
+		return addr;
+
+	memset(addr, 0, PAGE_SIZE);
+	p = hyp_virt_to_page(addr);
+	memset(p, 0, sizeof(*p));
+	p->refcount = 1;
+
+	return addr;
+}
+
+static void guest_s2_get_page(void *addr)
+{
+	hyp_get_page(&current_vm->pool, addr);
+}
+
+static void guest_s2_put_page(void *addr)
+{
+	hyp_put_page(&current_vm->pool, addr);
+}
+
+static void clean_dcache_guest_page(void *va, size_t size)
+{
+	__clean_dcache_guest_page(hyp_fixmap_map(__hyp_pa(va)), size);
+	hyp_fixmap_unmap();
+}
+
+static void invalidate_icache_guest_page(void *va, size_t size)
+{
+	__invalidate_icache_guest_page(hyp_fixmap_map(__hyp_pa(va)), size);
+	hyp_fixmap_unmap();
+}
+
+int kvm_guest_prepare_stage2(struct pkvm_hyp_vm *vm, void *pgd)
+{
+	struct kvm_s2_mmu *mmu = &vm->kvm.arch.mmu;
+	unsigned long nr_pages;
+	int ret;
+
+	nr_pages = kvm_pgtable_stage2_pgd_size(vm->kvm.arch.vtcr) >> PAGE_SHIFT;
+	ret = hyp_pool_init(&vm->pool, hyp_virt_to_pfn(pgd), nr_pages, 0);
+	if (ret)
+		return ret;
+
+	hyp_spin_lock_init(&vm->lock);
+	vm->mm_ops = (struct kvm_pgtable_mm_ops) {
+		.zalloc_pages_exact	= guest_s2_zalloc_pages_exact,
+		.free_pages_exact	= guest_s2_free_pages_exact,
+		.zalloc_page		= guest_s2_zalloc_page,
+		.phys_to_virt		= hyp_phys_to_virt,
+		.virt_to_phys		= hyp_virt_to_phys,
+		.page_count		= hyp_page_count,
+		.get_page		= guest_s2_get_page,
+		.put_page		= guest_s2_put_page,
+		.dcache_clean_inval_poc	= clean_dcache_guest_page,
+		.icache_inval_pou	= invalidate_icache_guest_page,
+	};
+
+	guest_lock_component(vm);
+	ret = __kvm_pgtable_stage2_init(mmu->pgt, mmu, &vm->mm_ops, 0,
+					&guest_s2_pte_ops);
+	guest_unlock_component(vm);
+	if (ret)
+		return ret;
+
+	vm->kvm.arch.mmu.pgd_phys = __hyp_pa(vm->pgt.pgd);
+
 	return 0;
 }
 
+struct relinquish_data {
+	enum pkvm_page_state expected_state;
+	u64 pa;
+};
+
+static int relinquish_walker(u64 addr, u64 end, u32 level, kvm_pte_t *ptep,
+			     enum kvm_pgtable_walk_flags flag, void * const arg)
+{
+	kvm_pte_t pte = *ptep;
+	struct relinquish_data *data = arg;
+	enum pkvm_page_state state;
+	phys_addr_t phys;
+
+	if (!kvm_pte_valid(pte))
+		return 0;
+
+	state = pkvm_getstate(kvm_pgtable_stage2_pte_prot(pte));
+	if (state != data->expected_state)
+		return -EPERM;
+
+	phys = kvm_pte_to_phys(pte);
+	if (state == PKVM_PAGE_OWNED) {
+		hyp_poison_page(phys);
+		psci_mem_protect_dec(1);
+	}
+
+	data->pa = phys;
+
+	return 0;
+}
+
+int __pkvm_guest_relinquish_to_host(struct pkvm_hyp_vcpu *vcpu,
+				    u64 ipa, u64 *ppa)
+{
+	struct relinquish_data data;
+	struct kvm_pgtable_walker walker = {
+		.cb     = relinquish_walker,
+		.flags  = KVM_PGTABLE_WALK_LEAF,
+		.arg    = &data,
+	};
+	struct pkvm_hyp_vm *vm = pkvm_hyp_vcpu_to_hyp_vm(vcpu);
+	int ret;
+
+	host_lock_component();
+	guest_lock_component(vm);
+
+	/* Expected page state depends on VM type. */
+	data.expected_state = pkvm_hyp_vcpu_is_protected(vcpu) ?
+		PKVM_PAGE_OWNED :
+		PKVM_PAGE_SHARED_BORROWED;
+
+	/* Set default pa value to "not found". */
+	data.pa = 0;
+
+	/* If ipa is mapped: poisons the page, and gets the pa. */
+	ret = kvm_pgtable_walk(&vm->pgt, ipa, PAGE_SIZE, &walker);
+
+	/* Zap the guest stage2 pte and return ownership to the host */
+	if (!ret && data.pa) {
+		WARN_ON(host_stage2_set_owner_locked(data.pa, PAGE_SIZE, PKVM_ID_HOST));
+		WARN_ON(kvm_pgtable_stage2_unmap(&vm->pgt, ipa, PAGE_SIZE));
+	}
+
+	guest_unlock_component(vm);
+	host_unlock_component();
+
+	*ppa = data.pa;
+	return ret;
+}
+
 int __pkvm_prot_finalize(void)
 {
-	struct kvm_s2_mmu *mmu = &host_kvm.arch.mmu;
+	struct kvm_s2_mmu *mmu = &host_mmu.arch.mmu;
 	struct kvm_nvhe_init_params *params = this_cpu_ptr(&kvm_init_params);
 
 	if (params->hcr_el2 & HCR_VM)
 		return -EPERM;
 
 	params->vttbr = kvm_get_vttbr(mmu);
-	params->vtcr = host_kvm.arch.vtcr;
+	params->vtcr = host_mmu.arch.vtcr;
 	params->hcr_el2 |= HCR_VM;
 	kvm_flush_dcache_to_poc(params, sizeof(*params));
 
 	write_sysreg(params->hcr_el2, hcr_el2);
-	__load_stage2(&host_kvm.arch.mmu, &host_kvm.arch);
+	__load_stage2(&host_mmu.arch.mmu, &host_mmu.arch);
 
 	/*
 	 * Make sure to have an ISB before the TLB maintenance below but only
@@ -170,24 +435,43 @@ int __pkvm_prot_finalize(void)
 	dsb(nsh);
 	isb();
 
+	__pkvm_close_module_registration();
+
 	return 0;
 }
 
-static int host_stage2_unmap_dev_all(void)
+int host_stage2_unmap_reg_locked(phys_addr_t start, u64 size)
 {
-	struct kvm_pgtable *pgt = &host_kvm.pgt;
-	struct memblock_region *reg;
+	int ret;
+
+	hyp_assert_lock_held(&host_mmu.lock);
+
+	ret = kvm_pgtable_stage2_reclaim_leaves(&host_mmu.pgt, start, size);
+	if (ret)
+		return ret;
+
+	pkvm_iommu_host_stage2_idmap(start, start + size, 0);
+	return 0;
+}
+
+static int host_stage2_unmap_unmoveable_regs(void)
+{
+	struct kvm_pgtable *pgt = &host_mmu.pgt;
+	struct pkvm_moveable_reg *reg;
 	u64 addr = 0;
 	int i, ret;
 
-	/* Unmap all non-memory regions to recycle the pages */
-	for (i = 0; i < hyp_memblock_nr; i++, addr = reg->base + reg->size) {
-		reg = &hyp_memory[i];
-		ret = kvm_pgtable_stage2_unmap(pgt, addr, reg->base - addr);
-		if (ret)
-			return ret;
+	/* Unmap all unmoveable regions to recycle the pages */
+	for (i = 0; i < pkvm_moveable_regs_nr; i++) {
+		reg = &pkvm_moveable_regs[i];
+		if (reg->start > addr) {
+			ret = host_stage2_unmap_reg_locked(addr, reg->start - addr);
+			if (ret)
+				return ret;
+		}
+		addr = max(addr, reg->start + reg->size);
 	}
-	return kvm_pgtable_stage2_unmap(pgt, addr, BIT(pgt->ia_bits) - addr);
+	return host_stage2_unmap_reg_locked(addr, BIT(pgt->ia_bits) - addr);
 }
 
 struct kvm_mem_range {
@@ -195,7 +479,7 @@ struct kvm_mem_range {
 	u64 end;
 };
 
-static bool find_mem_range(phys_addr_t addr, struct kvm_mem_range *range)
+static struct memblock_region *find_mem_range(phys_addr_t addr, struct kvm_mem_range *range)
 {
 	int cur, left = 0, right = hyp_memblock_nr;
 	struct memblock_region *reg;
@@ -218,18 +502,38 @@ static bool find_mem_range(phys_addr_t addr, struct kvm_mem_range *range)
 		} else {
 			range->start = reg->base;
 			range->end = end;
-			return true;
+			return reg;
 		}
 	}
 
-	return false;
+	return NULL;
+}
+
+static enum kvm_pgtable_prot default_host_prot(bool is_memory)
+{
+	return is_memory ? PKVM_HOST_MEM_PROT : PKVM_HOST_MMIO_PROT;
+}
+
+static enum kvm_pgtable_prot default_hyp_prot(phys_addr_t phys)
+{
+	return addr_is_memory(phys) ? PAGE_HYP : PAGE_HYP_DEVICE;
 }
 
 bool addr_is_memory(phys_addr_t phys)
 {
 	struct kvm_mem_range range;
 
-	return find_mem_range(phys, &range);
+	return !!find_mem_range(phys, &range);
+}
+
+static bool addr_is_allowed_memory(phys_addr_t phys)
+{
+	struct memblock_region *reg;
+	struct kvm_mem_range range;
+
+	reg = find_mem_range(phys, &range);
+
+	return reg && !(reg->flags & MEMBLOCK_NOMAP);
 }
 
 static bool is_in_mem_range(u64 addr, struct kvm_mem_range *range)
@@ -248,25 +552,34 @@ static bool range_is_memory(u64 start, u64 end)
 }
 
 static inline int __host_stage2_idmap(u64 start, u64 end,
-				      enum kvm_pgtable_prot prot)
+				      enum kvm_pgtable_prot prot,
+				      bool update_iommu)
 {
-	return kvm_pgtable_stage2_map(&host_kvm.pgt, start, end - start, start,
-				      prot, &host_s2_pool);
+	int ret;
+
+	ret = kvm_pgtable_stage2_map(&host_mmu.pgt, start, end - start, start,
+				     prot, &host_s2_pool);
+	if (ret)
+		return ret;
+
+	if (update_iommu)
+		pkvm_iommu_host_stage2_idmap(start, end, prot);
+	return 0;
 }
 
 /*
- * The pool has been provided with enough pages to cover all of memory with
- * page granularity, but it is difficult to know how much of the MMIO range
- * we will need to cover upfront, so we may need to 'recycle' the pages if we
- * run out.
+ * The pool has been provided with enough pages to cover all of moveable regions
+ * with page granularity, but it is difficult to know how much of the
+ * non-moveable regions we will need to cover upfront, so we may need to
+ * 'recycle' the pages if we run out.
  */
 #define host_stage2_try(fn, ...)					\
 	({								\
 		int __ret;						\
-		hyp_assert_lock_held(&host_kvm.lock);			\
+		hyp_assert_lock_held(&host_mmu.lock);			\
 		__ret = fn(__VA_ARGS__);				\
 		if (__ret == -ENOMEM) {					\
-			__ret = host_stage2_unmap_dev_all();		\
+			__ret = host_stage2_unmap_unmoveable_regs();		\
 			if (!__ret)					\
 				__ret = fn(__VA_ARGS__);		\
 		}							\
@@ -279,23 +592,10 @@ static inline bool range_included(struct kvm_mem_range *child,
 	return parent->start <= child->start && child->end <= parent->end;
 }
 
-static int host_stage2_adjust_range(u64 addr, struct kvm_mem_range *range)
+static int host_stage2_adjust_range(u64 addr, struct kvm_mem_range *range,
+				    u32 level)
 {
 	struct kvm_mem_range cur;
-	kvm_pte_t pte;
-	u32 level;
-	int ret;
-
-	hyp_assert_lock_held(&host_kvm.lock);
-	ret = kvm_pgtable_get_leaf(&host_kvm.pgt, addr, &pte, &level);
-	if (ret)
-		return ret;
-
-	if (kvm_pte_valid(pte))
-		return -EAGAIN;
-
-	if (pte)
-		return -EPERM;
 
 	do {
 		u64 granule = kvm_granule_size(level);
@@ -312,18 +612,39 @@ static int host_stage2_adjust_range(u64 addr, struct kvm_mem_range *range)
 }
 
 int host_stage2_idmap_locked(phys_addr_t addr, u64 size,
-			     enum kvm_pgtable_prot prot)
+			     enum kvm_pgtable_prot prot, bool update_iommu)
 {
-	return host_stage2_try(__host_stage2_idmap, addr, addr + size, prot);
+	return host_stage2_try(__host_stage2_idmap, addr, addr + size, prot, update_iommu);
 }
 
-int host_stage2_set_owner_locked(phys_addr_t addr, u64 size, u8 owner_id)
+#define KVM_INVALID_PTE_OWNER_MASK	GENMASK(9, 2)
+static kvm_pte_t kvm_init_invalid_leaf_owner(enum pkvm_component_id owner_id)
 {
-	return host_stage2_try(kvm_pgtable_stage2_set_owner, &host_kvm.pgt,
-			       addr, size, &host_s2_pool, owner_id);
+	return FIELD_PREP(KVM_INVALID_PTE_OWNER_MASK, owner_id);
 }
 
-static bool host_stage2_force_pte_cb(u64 addr, u64 end, enum kvm_pgtable_prot prot)
+int host_stage2_set_owner_locked(phys_addr_t addr, u64 size, enum pkvm_component_id owner_id)
+{
+	kvm_pte_t annotation;
+	enum kvm_pgtable_prot prot;
+	int ret;
+
+	if (owner_id > PKVM_ID_MAX)
+		return -EINVAL;
+
+	annotation = kvm_init_invalid_leaf_owner(owner_id);
+
+	ret = host_stage2_try(kvm_pgtable_stage2_annotate, &host_mmu.pgt,
+			      addr, size, &host_s2_pool, annotation);
+	if (ret)
+		return ret;
+
+	prot = owner_id == PKVM_ID_HOST ? PKVM_HOST_MEM_PROT : 0;
+	pkvm_iommu_host_stage2_idmap(addr, addr + size, prot);
+	return 0;
+}
+
+static bool host_stage2_force_pte(u64 addr, u64 end, enum kvm_pgtable_prot prot)
 {
 	/*
 	 * Block mappings must be used with care in the host stage-2 as a
@@ -339,52 +660,283 @@ static bool host_stage2_force_pte_cb(u64 addr, u64 end, enum kvm_pgtable_prot pr
 	 * mappings, hence avoiding to lose the state because of side-effects in
 	 * kvm_pgtable_stage2_map().
 	 */
-	if (range_is_memory(addr, end))
-		return prot != PKVM_HOST_MEM_PROT;
-	else
-		return prot != PKVM_HOST_MMIO_PROT;
+	return prot != default_host_prot(range_is_memory(addr, end));
 }
 
-static int host_stage2_idmap(u64 addr)
+static bool host_stage2_pte_is_counted(kvm_pte_t pte, u32 level)
 {
-	struct kvm_mem_range range;
-	bool is_memory = find_mem_range(addr, &range);
-	enum kvm_pgtable_prot prot;
-	int ret;
+	u64 phys;
 
-	prot = is_memory ? PKVM_HOST_MEM_PROT : PKVM_HOST_MMIO_PROT;
+	if (!kvm_pte_valid(pte))
+		return !!pte;
 
-	host_lock_component();
-	ret = host_stage2_adjust_range(addr, &range);
+	if (kvm_pte_table(pte, level))
+		return true;
+
+	phys = kvm_pte_to_phys(pte);
+	if (addr_is_memory(phys))
+		return (pte & KVM_HOST_S2_DEFAULT_MASK) !=
+			KVM_HOST_S2_DEFAULT_MEM_PTE;
+
+	return (pte & KVM_HOST_S2_DEFAULT_MASK) != KVM_HOST_S2_DEFAULT_MMIO_PTE;
+}
+
+#define DEFERRED_MEMATTR_NOTE	(1ULL << 24)
+#ifdef CONFIG_ANDROID_ARM64_WORKAROUND_DMA_BEYOND_POC
+static enum pkvm_page_state host_get_page_state(kvm_pte_t pte, u64 addr);
+
+int __pkvm_host_set_stage2_memattr(phys_addr_t phys, bool force_nc)
+{
+	kvm_pte_t pte;
+	int ret = 0;
+
+	if (!static_branch_unlikely(&pkvm_force_nc))
+		return -ENOENT;
+
+	phys = ALIGN_DOWN(phys, PAGE_SIZE);
+	hyp_spin_lock(&host_mmu.lock);
+
+	ret = kvm_pgtable_get_leaf(&host_mmu.pgt, phys, &pte, NULL);
 	if (ret)
 		goto unlock;
 
-	ret = host_stage2_idmap_locked(range.start, range.end - range.start, prot);
-unlock:
-	host_unlock_component();
+	if (!addr_is_memory(phys)) {
+		ret = -EIO;
+		goto unlock;
+	}
 
+	if (!kvm_pte_valid(pte) && pte) {
+		switch (pte) {
+		case DEFERRED_MEMATTR_NOTE:
+			break;
+		default:
+			ret = -EPERM;
+		}
+	} else if (host_get_page_state(pte, phys) != PKVM_PAGE_OWNED) {
+		ret = -EPERM;
+	}
+
+	if (ret)
+		goto unlock;
+
+	if (force_nc) {
+		ret = host_stage2_idmap_locked(phys, PAGE_SIZE,
+					       PKVM_HOST_MEM_PROT |
+					       KVM_PGTABLE_PROT_NC,
+					       false);
+		if (ret)
+			goto unlock;
+
+		kvm_flush_dcache_to_poc(hyp_fixmap_map_nc(phys), PAGE_SIZE);
+		hyp_fixmap_unmap();
+	} else {
+		ret = kvm_pgtable_stage2_annotate(&host_mmu.pgt, phys,
+						  PAGE_SIZE, &host_s2_pool,
+						  DEFERRED_MEMATTR_NOTE);
+	}
+unlock:
+	hyp_spin_unlock(&host_mmu.lock);
 	return ret;
 }
 
+static int handle_memattr_annotation(struct kvm_vcpu_fault_info *fault,
+				     u64 addr, enum kvm_pgtable_prot *prot,
+				     struct kvm_mem_range *range)
+{
+	u64 par, oldpar;
+
+	/* If the S1 MMU is disabled, treat the access as cacheable */
+	if (unlikely(!(read_sysreg(sctlr_el1) & SCTLR_ELx_M)))
+		return 0;
+
+	/* If we took a fault on a PTW, then treat it as cacheable */
+	if (fault->esr_el2 & ESR_ELx_S1PTW)
+		return 0;
+
+	oldpar = read_sysreg_par();
+
+	if (!__kvm_at("s1e1r", fault->far_el2))
+		par = read_sysreg_par();
+	else
+		par = SYS_PAR_EL1_F;
+
+	write_sysreg(oldpar, par_el1);
+
+	if (unlikely(par & SYS_PAR_EL1_F))
+		return -EAGAIN;
+
+	if ((par >> 56) == MAIR_ATTR_NORMAL_NC) {
+		range->start	= ALIGN_DOWN(addr, PAGE_SIZE);
+		range->end	= range->start + PAGE_SIZE;
+		*prot		|= KVM_PGTABLE_PROT_NC;
+	}
+
+	return 0;
+}
+#else
+static int handle_memattr_annotation(struct kvm_vcpu_fault_info *fault,
+				     u64 addr, enum kvm_pgtable_prot *prot,
+				     struct kvm_mem_range *range)
+{
+	return -EPERM;
+}
+#endif
+
+static int host_stage2_idmap(struct kvm_vcpu_fault_info *fault, u64 addr)
+{
+	struct kvm_mem_range range;
+	bool is_memory = !!find_mem_range(addr, &range);
+	enum kvm_pgtable_prot prot = default_host_prot(is_memory);
+	kvm_pte_t pte;
+	u32 level;
+	int ret;
+
+	hyp_assert_lock_held(&host_mmu.lock);
+
+	ret = kvm_pgtable_get_leaf(&host_mmu.pgt, addr, &pte, &level);
+	if (ret)
+		return ret;
+
+	if (kvm_pte_valid(pte))
+		return -EAGAIN;
+
+	if (pte) {
+		if (!is_memory)
+			return -EPERM;
+
+		switch (pte) {
+		case DEFERRED_MEMATTR_NOTE:
+			ret = handle_memattr_annotation(fault, addr, &prot,
+							&range);
+			if (ret)
+				return ret;
+			break;
+		default:
+			return -EPERM;
+		}
+	}
+
+	ret = host_stage2_adjust_range(addr, &range, level);
+	if (ret)
+		return ret;
+
+	/*
+	 * We're guaranteed not to require memory allocation by construction,
+	 * no need to bother even trying to recycle pages.
+	 */
+	return __host_stage2_idmap(range.start, range.end, prot, false);
+}
+
+static void (*illegal_abt_notifier)(struct kvm_cpu_context *host_ctxt);
+
+int __pkvm_register_illegal_abt_notifier(void (*cb)(struct kvm_cpu_context *))
+{
+	return cmpxchg(&illegal_abt_notifier, NULL, cb) ? -EBUSY : 0;
+}
+
+static void host_inject_abort(struct kvm_cpu_context *host_ctxt)
+{
+	u64 spsr = read_sysreg_el2(SYS_SPSR);
+	u64 esr = read_sysreg_el2(SYS_ESR);
+	u64 ventry, ec;
+
+	if (READ_ONCE(illegal_abt_notifier))
+		illegal_abt_notifier(host_ctxt);
+
+	/* Repaint the ESR to report a same-level fault if taken from EL1 */
+	if ((spsr & PSR_MODE_MASK) != PSR_MODE_EL0t) {
+		ec = ESR_ELx_EC(esr);
+		if (ec == ESR_ELx_EC_DABT_LOW)
+			ec = ESR_ELx_EC_DABT_CUR;
+		else if (ec == ESR_ELx_EC_IABT_LOW)
+			ec = ESR_ELx_EC_IABT_CUR;
+		else
+			WARN_ON(1);
+		esr &= ~ESR_ELx_EC_MASK;
+		esr |= ec << ESR_ELx_EC_SHIFT;
+	}
+
+	/*
+	 * Since S1PTW should only ever be set for stage-2 faults, we're pretty
+	 * much guaranteed that it won't be set in ESR_EL1 by the hardware. So,
+	 * let's use that bit to allow the host abort handler to differentiate
+	 * this abort from normal userspace faults.
+	 *
+	 * Note: although S1PTW is RES0 at EL1, it is guaranteed by the
+	 * architecture to be backed by flops, so it should be safe to use.
+	 */
+	esr |= ESR_ELx_S1PTW;
+
+	write_sysreg_el1(esr, SYS_ESR);
+	write_sysreg_el1(spsr, SYS_SPSR);
+	write_sysreg_el1(read_sysreg_el2(SYS_ELR), SYS_ELR);
+	write_sysreg_el1(read_sysreg_el2(SYS_FAR), SYS_FAR);
+
+	ventry = read_sysreg_el1(SYS_VBAR);
+	ventry += get_except64_offset(spsr, PSR_MODE_EL1h, except_type_sync);
+	write_sysreg_el2(ventry, SYS_ELR);
+
+	spsr = get_except64_cpsr(spsr, system_supports_mte(),
+				 read_sysreg_el1(SYS_SCTLR), PSR_MODE_EL1h);
+	write_sysreg_el2(spsr, SYS_SPSR);
+}
+
+static bool is_dabt(u64 esr)
+{
+	return ESR_ELx_EC(esr) == ESR_ELx_EC_DABT_LOW;
+}
+
+static int (*perm_fault_handler)(struct kvm_cpu_context *host_ctxt, u64 esr, u64 addr);
+
+int hyp_register_host_perm_fault_handler(int (*cb)(struct kvm_cpu_context *ctxt, u64 esr, u64 addr))
+{
+	return cmpxchg(&perm_fault_handler, NULL, cb) ? -EBUSY : 0;
+}
+
+static int handle_host_perm_fault(struct kvm_cpu_context *host_ctxt, u64 esr, u64 addr)
+{
+	int (*cb)(struct kvm_cpu_context *host_ctxt, u64 esr, u64 addr);
+
+	cb = READ_ONCE(perm_fault_handler);
+	return cb ? cb(host_ctxt, esr, addr) : -EPERM;
+}
+
 void handle_host_mem_abort(struct kvm_cpu_context *host_ctxt)
 {
 	struct kvm_vcpu_fault_info fault;
 	u64 esr, addr;
-	int ret = 0;
+	int ret = -EPERM;
 
 	esr = read_sysreg_el2(SYS_ESR);
 	BUG_ON(!__get_fault_info(esr, &fault));
+	fault.esr_el2 = esr;
 
 	addr = (fault.hpfar_el2 & HPFAR_MASK) << 8;
-	ret = host_stage2_idmap(addr);
-	BUG_ON(ret && ret != -EAGAIN);
-}
+	addr |= fault.far_el2 & FAR_MASK;
 
-/* This corresponds to locking order */
-enum pkvm_component_id {
-	PKVM_ID_HOST,
-	PKVM_ID_HYP,
-};
+	host_lock_component();
+
+	/* Check if an IOMMU device can handle the DABT. */
+	if (is_dabt(esr) && !addr_is_memory(addr) &&
+	    pkvm_iommu_host_dabt_handler(host_ctxt, esr, addr))
+		ret = 0;
+
+	/* If not handled, attempt to map the page. */
+	if (ret == -EPERM)
+		ret = host_stage2_idmap(&fault, addr);
+
+	host_unlock_component();
+
+	if ((esr & ESR_ELx_FSC_TYPE) == FSC_PERM)
+		ret = handle_host_perm_fault(host_ctxt, esr, addr);
+
+	if (ret == -EPERM)
+		host_inject_abort(host_ctxt);
+	else
+		BUG_ON(ret && ret != -EAGAIN);
+
+	trace_host_mem_abort(esr, addr);
+}
 
 struct pkvm_mem_transition {
 	u64				nr_pages;
@@ -399,11 +951,24 @@ struct pkvm_mem_transition {
 				/* Address in the completer's address space */
 				u64	completer_addr;
 			} host;
+			struct {
+				u64	completer_addr;
+			} hyp;
+			struct {
+				struct pkvm_hyp_vcpu *hyp_vcpu;
+			} guest;
 		};
 	} initiator;
 
 	struct {
 		enum pkvm_component_id	id;
+
+		union {
+			struct {
+				struct pkvm_hyp_vcpu *hyp_vcpu;
+				phys_addr_t phys;
+			} guest;
+		};
 	} completer;
 };
 
@@ -412,9 +977,13 @@ struct pkvm_mem_share {
 	const enum kvm_pgtable_prot		completer_prot;
 };
 
+struct pkvm_mem_donation {
+	const struct pkvm_mem_transition	tx;
+};
+
 struct check_walk_data {
 	enum pkvm_page_state	desired;
-	enum pkvm_page_state	(*get_page_state)(kvm_pte_t pte);
+	enum pkvm_page_state	(*get_page_state)(kvm_pte_t pte, u64 addr);
 };
 
 static int __check_page_state_visitor(u64 addr, u64 end, u32 level,
@@ -425,10 +994,7 @@ static int __check_page_state_visitor(u64 addr, u64 end, u32 level,
 	struct check_walk_data *d = arg;
 	kvm_pte_t pte = *ptep;
 
-	if (kvm_pte_valid(pte) && !addr_is_memory(kvm_pte_to_phys(pte)))
-		return -EINVAL;
-
-	return d->get_page_state(pte) == d->desired ? 0 : -EPERM;
+	return d->get_page_state(pte, addr) == d->desired ? 0 : -EPERM;
 }
 
 static int check_page_state_range(struct kvm_pgtable *pgt, u64 addr, u64 size,
@@ -443,12 +1009,28 @@ static int check_page_state_range(struct kvm_pgtable *pgt, u64 addr, u64 size,
 	return kvm_pgtable_walk(pgt, addr, size, &walker);
 }
 
-static enum pkvm_page_state host_get_page_state(kvm_pte_t pte)
+static enum pkvm_page_state host_get_page_state(kvm_pte_t pte, u64 addr)
 {
+	bool is_memory = addr_is_memory(addr);
+	enum pkvm_page_state state = 0;
+	enum kvm_pgtable_prot prot;
+
+	if (is_memory && hyp_phys_to_page(addr)->flags & MODULE_OWNED_PAGE)
+	       return PKVM_MODULE_DONT_TOUCH;
+
+	if (is_memory && !addr_is_allowed_memory(addr))
+		return PKVM_NOPAGE;
+
 	if (!kvm_pte_valid(pte) && pte)
 		return PKVM_NOPAGE;
 
-	return pkvm_getstate(kvm_pgtable_stage2_pte_prot(pte));
+	prot = kvm_pgtable_stage2_pte_prot(pte);
+	if (kvm_pte_valid(pte)) {
+		if ((prot & KVM_PGTABLE_PROT_RWX) != default_host_prot(is_memory))
+			state = PKVM_PAGE_RESTRICTED_PROT;
+	}
+
+	return state | pkvm_getstate(prot);
 }
 
 static int __host_check_page_state_range(u64 addr, u64 size,
@@ -459,8 +1041,8 @@ static int __host_check_page_state_range(u64 addr, u64 size,
 		.get_page_state	= host_get_page_state,
 	};
 
-	hyp_assert_lock_held(&host_kvm.lock);
-	return check_page_state_range(&host_kvm.pgt, addr, size, &d);
+	hyp_assert_lock_held(&host_mmu.lock);
+	return check_page_state_range(&host_mmu.pgt, addr, size, &d);
 }
 
 static int __host_set_page_state_range(u64 addr, u64 size,
@@ -468,7 +1050,7 @@ static int __host_set_page_state_range(u64 addr, u64 size,
 {
 	enum kvm_pgtable_prot prot = pkvm_mkstate(PKVM_HOST_MEM_PROT, state);
 
-	return host_stage2_idmap_locked(addr, size, prot);
+	return host_stage2_idmap_locked(addr, size, prot, true);
 }
 
 static int host_request_owned_transition(u64 *completer_addr,
@@ -511,12 +1093,100 @@ static int host_initiate_unshare(u64 *completer_addr,
 	return __host_set_page_state_range(addr, size, PKVM_PAGE_OWNED);
 }
 
-static enum pkvm_page_state hyp_get_page_state(kvm_pte_t pte)
+static int host_initiate_donation(u64 *completer_addr,
+				  const struct pkvm_mem_transition *tx)
 {
+	enum pkvm_component_id owner_id = tx->completer.id;
+	u64 size = tx->nr_pages * PAGE_SIZE;
+
+	*completer_addr = tx->initiator.host.completer_addr;
+	return host_stage2_set_owner_locked(tx->initiator.addr, size, owner_id);
+}
+
+static bool __host_ack_skip_pgtable_check(const struct pkvm_mem_transition *tx)
+{
+	return !(IS_ENABLED(CONFIG_NVHE_EL2_DEBUG) ||
+		 tx->initiator.id != PKVM_ID_HYP);
+}
+
+static int __host_ack_transition(u64 addr, const struct pkvm_mem_transition *tx,
+				 enum pkvm_page_state state)
+{
+	u64 size = tx->nr_pages * PAGE_SIZE;
+
+	if (__host_ack_skip_pgtable_check(tx))
+		return 0;
+
+	return __host_check_page_state_range(addr, size, state);
+}
+
+static int host_ack_share(u64 addr, const struct pkvm_mem_transition *tx,
+			  enum kvm_pgtable_prot perms)
+{
+	if (perms != PKVM_HOST_MEM_PROT)
+		return -EPERM;
+
+	return __host_ack_transition(addr, tx, PKVM_NOPAGE);
+}
+
+static int host_ack_donation(u64 addr, const struct pkvm_mem_transition *tx)
+{
+	return __host_ack_transition(addr, tx, PKVM_NOPAGE);
+}
+
+static int host_ack_unshare(u64 addr, const struct pkvm_mem_transition *tx)
+{
+	return __host_ack_transition(addr, tx, PKVM_PAGE_SHARED_BORROWED);
+}
+
+static int host_complete_share(u64 addr, const struct pkvm_mem_transition *tx,
+			       enum kvm_pgtable_prot perms)
+{
+	u64 size = tx->nr_pages * PAGE_SIZE;
+	int err;
+
+	err = __host_set_page_state_range(addr, size, PKVM_PAGE_SHARED_BORROWED);
+	if (err)
+		return err;
+
+	if (tx->initiator.id == PKVM_ID_GUEST)
+		psci_mem_protect_dec(tx->nr_pages);
+
+	return 0;
+}
+
+static int host_complete_unshare(u64 addr, const struct pkvm_mem_transition *tx)
+{
+	enum pkvm_component_id owner_id = tx->initiator.id;
+	u64 size = tx->nr_pages * PAGE_SIZE;
+
+	if (tx->initiator.id == PKVM_ID_GUEST)
+		psci_mem_protect_inc(tx->nr_pages);
+
+	return host_stage2_set_owner_locked(addr, size, owner_id);
+}
+
+static int host_complete_donation(u64 addr, const struct pkvm_mem_transition *tx)
+{
+	u64 size = tx->nr_pages * PAGE_SIZE;
+	enum pkvm_component_id host_id = tx->completer.id;
+
+	return host_stage2_set_owner_locked(addr, size, host_id);
+}
+
+static enum pkvm_page_state hyp_get_page_state(kvm_pte_t pte, u64 addr)
+{
+	enum pkvm_page_state state = 0;
+	enum kvm_pgtable_prot prot;
+
 	if (!kvm_pte_valid(pte))
 		return PKVM_NOPAGE;
 
-	return pkvm_getstate(kvm_pgtable_hyp_pte_prot(pte));
+	prot = kvm_pgtable_hyp_pte_prot(pte);
+	if (kvm_pte_valid(pte) && ((prot & KVM_PGTABLE_PROT_RWX) != PAGE_HYP))
+		state = PKVM_PAGE_RESTRICTED_PROT;
+
+	return state | pkvm_getstate(prot);
 }
 
 static int __hyp_check_page_state_range(u64 addr, u64 size,
@@ -531,6 +1201,27 @@ static int __hyp_check_page_state_range(u64 addr, u64 size,
 	return check_page_state_range(&pkvm_pgtable, addr, size, &d);
 }
 
+static int hyp_request_donation(u64 *completer_addr,
+				const struct pkvm_mem_transition *tx)
+{
+	u64 size = tx->nr_pages * PAGE_SIZE;
+	u64 addr = tx->initiator.addr;
+
+	*completer_addr = tx->initiator.hyp.completer_addr;
+	return __hyp_check_page_state_range(addr, size, PKVM_PAGE_OWNED);
+}
+
+static int hyp_initiate_donation(u64 *completer_addr,
+				 const struct pkvm_mem_transition *tx)
+{
+	u64 size = tx->nr_pages * PAGE_SIZE;
+	int ret;
+
+	*completer_addr = tx->initiator.hyp.completer_addr;
+	ret = kvm_pgtable_hyp_unmap(&pkvm_pgtable, tx->initiator.addr, size);
+	return (ret != size) ? -EFAULT : 0;
+}
+
 static bool __hyp_ack_skip_pgtable_check(const struct pkvm_mem_transition *tx)
 {
 	return !(IS_ENABLED(CONFIG_NVHE_EL2_DEBUG) ||
@@ -541,8 +1232,10 @@ static int hyp_ack_share(u64 addr, const struct pkvm_mem_transition *tx,
 			 enum kvm_pgtable_prot perms)
 {
 	u64 size = tx->nr_pages * PAGE_SIZE;
+	phys_addr_t phys = hyp_virt_to_phys((void *)addr);
+	enum kvm_pgtable_prot prot = default_hyp_prot(phys);
 
-	if (perms != PAGE_HYP)
+	if (!addr_is_memory(phys) || perms != prot)
 		return -EPERM;
 
 	if (__hyp_ack_skip_pgtable_check(tx))
@@ -555,6 +1248,9 @@ static int hyp_ack_unshare(u64 addr, const struct pkvm_mem_transition *tx)
 {
 	u64 size = tx->nr_pages * PAGE_SIZE;
 
+	if (tx->initiator.id == PKVM_ID_HOST && hyp_page_count((void *)addr))
+		return -EBUSY;
+
 	if (__hyp_ack_skip_pgtable_check(tx))
 		return 0;
 
@@ -562,6 +1258,16 @@ static int hyp_ack_unshare(u64 addr, const struct pkvm_mem_transition *tx)
 					    PKVM_PAGE_SHARED_BORROWED);
 }
 
+static int hyp_ack_donation(u64 addr, const struct pkvm_mem_transition *tx)
+{
+	u64 size = tx->nr_pages * PAGE_SIZE;
+
+	if (__hyp_ack_skip_pgtable_check(tx))
+		return 0;
+
+	return __hyp_check_page_state_range(addr, size, PKVM_NOPAGE);
+}
+
 static int hyp_complete_share(u64 addr, const struct pkvm_mem_transition *tx,
 			      enum kvm_pgtable_prot perms)
 {
@@ -580,6 +1286,232 @@ static int hyp_complete_unshare(u64 addr, const struct pkvm_mem_transition *tx)
 	return (ret != size) ? -EFAULT : 0;
 }
 
+static int hyp_complete_donation(u64 addr,
+				 const struct pkvm_mem_transition *tx)
+{
+	void *start = (void *)addr, *end = start + (tx->nr_pages * PAGE_SIZE);
+	phys_addr_t phys = hyp_virt_to_phys(start);
+	enum kvm_pgtable_prot prot = default_hyp_prot(phys);
+
+	prot = pkvm_mkstate(prot, PKVM_PAGE_OWNED);
+	return pkvm_create_mappings_locked(start, end, prot);
+}
+
+static enum pkvm_page_state guest_get_page_state(kvm_pte_t pte, u64 addr)
+{
+	enum pkvm_page_state state = 0;
+	enum kvm_pgtable_prot prot;
+
+	if (!kvm_pte_valid(pte))
+		return PKVM_NOPAGE;
+
+	prot = kvm_pgtable_stage2_pte_prot(pte);
+	if (kvm_pte_valid(pte) && ((prot & KVM_PGTABLE_PROT_RWX) != KVM_PGTABLE_PROT_RWX))
+		state = PKVM_PAGE_RESTRICTED_PROT;
+
+	return state | pkvm_getstate(prot);
+}
+
+static int __guest_check_page_state_range(struct pkvm_hyp_vcpu *vcpu, u64 addr,
+					  u64 size, enum pkvm_page_state state)
+{
+	struct pkvm_hyp_vm *vm = pkvm_hyp_vcpu_to_hyp_vm(vcpu);
+	struct check_walk_data d = {
+		.desired	= state,
+		.get_page_state	= guest_get_page_state,
+	};
+
+	hyp_assert_lock_held(&vm->lock);
+	return check_page_state_range(&vm->pgt, addr, size, &d);
+}
+
+static int guest_ack_share(u64 addr, const struct pkvm_mem_transition *tx,
+			   enum kvm_pgtable_prot perms)
+{
+	u64 size = tx->nr_pages * PAGE_SIZE;
+
+	if (!addr_is_memory(tx->completer.guest.phys) || perms != KVM_PGTABLE_PROT_RWX)
+		return -EPERM;
+
+	return __guest_check_page_state_range(tx->completer.guest.hyp_vcpu,
+					      addr, size, PKVM_NOPAGE);
+}
+
+static int guest_ack_donation(u64 addr, const struct pkvm_mem_transition *tx)
+{
+	u64 size = tx->nr_pages * PAGE_SIZE;
+
+	if (!addr_is_memory(tx->completer.guest.phys))
+		return -EPERM;
+
+	return __guest_check_page_state_range(tx->completer.guest.hyp_vcpu,
+					      addr, size, PKVM_NOPAGE);
+}
+
+static int guest_complete_share(u64 addr, const struct pkvm_mem_transition *tx,
+				enum kvm_pgtable_prot perms)
+{
+	struct pkvm_hyp_vcpu *vcpu = tx->completer.guest.hyp_vcpu;
+	struct pkvm_hyp_vm *vm = pkvm_hyp_vcpu_to_hyp_vm(vcpu);
+	u64 size = tx->nr_pages * PAGE_SIZE;
+	enum kvm_pgtable_prot prot;
+
+	prot = pkvm_mkstate(perms, PKVM_PAGE_SHARED_BORROWED);
+	return kvm_pgtable_stage2_map(&vm->pgt, addr, size, tx->completer.guest.phys,
+				      prot, &vcpu->vcpu.arch.pkvm_memcache);
+}
+
+static int guest_complete_donation(u64 addr, const struct pkvm_mem_transition *tx)
+{
+	enum kvm_pgtable_prot prot = pkvm_mkstate(KVM_PGTABLE_PROT_RWX, PKVM_PAGE_OWNED);
+	struct pkvm_hyp_vcpu *vcpu = tx->completer.guest.hyp_vcpu;
+	struct pkvm_hyp_vm *vm = pkvm_hyp_vcpu_to_hyp_vm(vcpu);
+	phys_addr_t phys = tx->completer.guest.phys;
+	u64 size = tx->nr_pages * PAGE_SIZE;
+	int err;
+
+	if (tx->initiator.id == PKVM_ID_HOST)
+		psci_mem_protect_inc(tx->nr_pages);
+
+	if (pkvm_ipa_range_has_pvmfw(vm, addr, addr + size)) {
+		if (WARN_ON(!pkvm_hyp_vcpu_is_protected(vcpu))) {
+			err = -EPERM;
+			goto err_undo_psci;
+		}
+
+		WARN_ON(tx->initiator.id != PKVM_ID_HOST);
+		err = pkvm_load_pvmfw_pages(vm, addr, phys, size);
+		if (err)
+			goto err_undo_psci;
+	}
+
+	/*
+	 * If this fails, we effectively leak the pages since they're now
+	 * owned by the guest but not mapped into its stage-2 page-table.
+	 */
+	return kvm_pgtable_stage2_map(&vm->pgt, addr, size, phys, prot,
+				      &vcpu->vcpu.arch.pkvm_memcache);
+
+err_undo_psci:
+	if (tx->initiator.id == PKVM_ID_HOST)
+		psci_mem_protect_dec(tx->nr_pages);
+	return err;
+}
+
+static int __guest_get_completer_addr(u64 *completer_addr, phys_addr_t phys,
+				      const struct pkvm_mem_transition *tx)
+{
+	switch (tx->completer.id) {
+	case PKVM_ID_HOST:
+		*completer_addr = phys;
+		break;
+	case PKVM_ID_HYP:
+		*completer_addr = (u64)__hyp_va(phys);
+		break;
+	default:
+		return -EINVAL;
+	}
+
+	return 0;
+}
+
+static int __guest_request_page_transition(u64 *completer_addr,
+					   const struct pkvm_mem_transition *tx,
+					   enum pkvm_page_state desired)
+{
+	struct pkvm_hyp_vcpu *vcpu = tx->initiator.guest.hyp_vcpu;
+	struct pkvm_hyp_vm *vm = pkvm_hyp_vcpu_to_hyp_vm(vcpu);
+	enum pkvm_page_state state;
+	phys_addr_t phys;
+	kvm_pte_t pte;
+	u32 level;
+	int ret;
+
+	if (tx->nr_pages != 1)
+		return -E2BIG;
+
+	ret = kvm_pgtable_get_leaf(&vm->pgt, tx->initiator.addr, &pte, &level);
+	if (ret)
+		return ret;
+
+	state = guest_get_page_state(pte, tx->initiator.addr);
+	if (state == PKVM_NOPAGE)
+		return -EFAULT;
+
+	if (state != desired)
+		return -EPERM;
+
+	/*
+	 * We only deal with page granular mappings in the guest for now as
+	 * the pgtable code relies on being able to recreate page mappings
+	 * lazily after zapping a block mapping, which doesn't work once the
+	 * pages have been donated.
+	 */
+	if (level != KVM_PGTABLE_MAX_LEVELS - 1)
+		return -EINVAL;
+
+	phys = kvm_pte_to_phys(pte);
+	if (!addr_is_allowed_memory(phys))
+		return -EINVAL;
+
+	return __guest_get_completer_addr(completer_addr, phys, tx);
+}
+
+static int guest_request_share(u64 *completer_addr,
+			       const struct pkvm_mem_transition *tx)
+{
+	return __guest_request_page_transition(completer_addr, tx,
+					       PKVM_PAGE_OWNED);
+}
+
+static int guest_request_unshare(u64 *completer_addr,
+				 const struct pkvm_mem_transition *tx)
+{
+	return __guest_request_page_transition(completer_addr, tx,
+					       PKVM_PAGE_SHARED_OWNED);
+}
+
+static int __guest_initiate_page_transition(u64 *completer_addr,
+					    const struct pkvm_mem_transition *tx,
+					    enum pkvm_page_state state)
+{
+	struct pkvm_hyp_vcpu *vcpu = tx->initiator.guest.hyp_vcpu;
+	struct kvm_hyp_memcache *mc = &vcpu->vcpu.arch.pkvm_memcache;
+	struct pkvm_hyp_vm *vm = pkvm_hyp_vcpu_to_hyp_vm(vcpu);
+	u64 size = tx->nr_pages * PAGE_SIZE;
+	u64 addr = tx->initiator.addr;
+	enum kvm_pgtable_prot prot;
+	phys_addr_t phys;
+	kvm_pte_t pte;
+	int ret;
+
+	ret = kvm_pgtable_get_leaf(&vm->pgt, addr, &pte, NULL);
+	if (ret)
+		return ret;
+
+	phys = kvm_pte_to_phys(pte);
+	prot = pkvm_mkstate(kvm_pgtable_stage2_pte_prot(pte), state);
+	ret = kvm_pgtable_stage2_map(&vm->pgt, addr, size, phys, prot, mc);
+	if (ret)
+		return ret;
+
+	return __guest_get_completer_addr(completer_addr, phys, tx);
+}
+
+static int guest_initiate_share(u64 *completer_addr,
+				const struct pkvm_mem_transition *tx)
+{
+	return __guest_initiate_page_transition(completer_addr, tx,
+						PKVM_PAGE_SHARED_OWNED);
+}
+
+static int guest_initiate_unshare(u64 *completer_addr,
+				  const struct pkvm_mem_transition *tx)
+{
+	return __guest_initiate_page_transition(completer_addr, tx,
+						PKVM_PAGE_OWNED);
+}
+
 static int check_share(struct pkvm_mem_share *share)
 {
 	const struct pkvm_mem_transition *tx = &share->tx;
@@ -590,6 +1522,9 @@ static int check_share(struct pkvm_mem_share *share)
 	case PKVM_ID_HOST:
 		ret = host_request_owned_transition(&completer_addr, tx);
 		break;
+	case PKVM_ID_GUEST:
+		ret = guest_request_share(&completer_addr, tx);
+		break;
 	default:
 		ret = -EINVAL;
 	}
@@ -598,9 +1533,22 @@ static int check_share(struct pkvm_mem_share *share)
 		return ret;
 
 	switch (tx->completer.id) {
+	case PKVM_ID_HOST:
+		ret = host_ack_share(completer_addr, tx, share->completer_prot);
+		break;
 	case PKVM_ID_HYP:
 		ret = hyp_ack_share(completer_addr, tx, share->completer_prot);
 		break;
+	case PKVM_ID_GUEST:
+		ret = guest_ack_share(completer_addr, tx, share->completer_prot);
+		break;
+	case PKVM_ID_FFA:
+		/*
+		 * We only check the host; the secure side will check the other
+		 * end when we forward the FFA call.
+		 */
+		ret = 0;
+		break;
 	default:
 		ret = -EINVAL;
 	}
@@ -618,6 +1566,9 @@ static int __do_share(struct pkvm_mem_share *share)
 	case PKVM_ID_HOST:
 		ret = host_initiate_share(&completer_addr, tx);
 		break;
+	case PKVM_ID_GUEST:
+		ret = guest_initiate_share(&completer_addr, tx);
+		break;
 	default:
 		ret = -EINVAL;
 	}
@@ -626,9 +1577,22 @@ static int __do_share(struct pkvm_mem_share *share)
 		return ret;
 
 	switch (tx->completer.id) {
+	case PKVM_ID_HOST:
+		ret = host_complete_share(completer_addr, tx, share->completer_prot);
+		break;
 	case PKVM_ID_HYP:
 		ret = hyp_complete_share(completer_addr, tx, share->completer_prot);
 		break;
+	case PKVM_ID_GUEST:
+		ret = guest_complete_share(completer_addr, tx, share->completer_prot);
+		break;
+	case PKVM_ID_FFA:
+		/*
+		 * We're not responsible for any secure page-tables, so there's
+		 * nothing to do here.
+		 */
+		ret = 0;
+		break;
 	default:
 		ret = -EINVAL;
 	}
@@ -666,6 +1630,9 @@ static int check_unshare(struct pkvm_mem_share *share)
 	case PKVM_ID_HOST:
 		ret = host_request_unshare(&completer_addr, tx);
 		break;
+	case PKVM_ID_GUEST:
+		ret = guest_request_unshare(&completer_addr, tx);
+		break;
 	default:
 		ret = -EINVAL;
 	}
@@ -674,9 +1641,16 @@ static int check_unshare(struct pkvm_mem_share *share)
 		return ret;
 
 	switch (tx->completer.id) {
+	case PKVM_ID_HOST:
+		ret = host_ack_unshare(completer_addr, tx);
+		break;
 	case PKVM_ID_HYP:
 		ret = hyp_ack_unshare(completer_addr, tx);
 		break;
+	case PKVM_ID_FFA:
+		/* See check_share() */
+		ret = 0;
+		break;
 	default:
 		ret = -EINVAL;
 	}
@@ -694,6 +1668,9 @@ static int __do_unshare(struct pkvm_mem_share *share)
 	case PKVM_ID_HOST:
 		ret = host_initiate_unshare(&completer_addr, tx);
 		break;
+	case PKVM_ID_GUEST:
+		ret = guest_initiate_unshare(&completer_addr, tx);
+		break;
 	default:
 		ret = -EINVAL;
 	}
@@ -702,9 +1679,16 @@ static int __do_unshare(struct pkvm_mem_share *share)
 		return ret;
 
 	switch (tx->completer.id) {
+	case PKVM_ID_HOST:
+		ret = host_complete_unshare(completer_addr, tx);
+		break;
 	case PKVM_ID_HYP:
 		ret = hyp_complete_unshare(completer_addr, tx);
 		break;
+	case PKVM_ID_FFA:
+		/* See __do_share() */
+		ret = 0;
+		break;
 	default:
 		ret = -EINVAL;
 	}
@@ -732,6 +1716,100 @@ static int do_unshare(struct pkvm_mem_share *share)
 	return WARN_ON(__do_unshare(share));
 }
 
+static int check_donation(struct pkvm_mem_donation *donation)
+{
+	const struct pkvm_mem_transition *tx = &donation->tx;
+	u64 completer_addr;
+	int ret;
+
+	switch (tx->initiator.id) {
+	case PKVM_ID_HOST:
+		ret = host_request_owned_transition(&completer_addr, tx);
+		break;
+	case PKVM_ID_HYP:
+		ret = hyp_request_donation(&completer_addr, tx);
+		break;
+	default:
+		ret = -EINVAL;
+	}
+
+	if (ret)
+		return ret;
+
+	switch (tx->completer.id) {
+	case PKVM_ID_HOST:
+		ret = host_ack_donation(completer_addr, tx);
+		break;
+	case PKVM_ID_HYP:
+		ret = hyp_ack_donation(completer_addr, tx);
+		break;
+	case PKVM_ID_GUEST:
+		ret = guest_ack_donation(completer_addr, tx);
+		break;
+	default:
+		ret = -EINVAL;
+	}
+
+	return ret;
+}
+
+static int __do_donate(struct pkvm_mem_donation *donation)
+{
+	const struct pkvm_mem_transition *tx = &donation->tx;
+	u64 completer_addr;
+	int ret;
+
+	switch (tx->initiator.id) {
+	case PKVM_ID_HOST:
+		ret = host_initiate_donation(&completer_addr, tx);
+		break;
+	case PKVM_ID_HYP:
+		ret = hyp_initiate_donation(&completer_addr, tx);
+		break;
+	default:
+		ret = -EINVAL;
+	}
+
+	if (ret)
+		return ret;
+
+	switch (tx->completer.id) {
+	case PKVM_ID_HOST:
+		ret = host_complete_donation(completer_addr, tx);
+		break;
+	case PKVM_ID_HYP:
+		ret = hyp_complete_donation(completer_addr, tx);
+		break;
+	case PKVM_ID_GUEST:
+		ret = guest_complete_donation(completer_addr, tx);
+		break;
+	default:
+		ret = -EINVAL;
+	}
+
+	return ret;
+}
+
+/*
+ * do_donate():
+ *
+ * The page owner transfers ownership to another component, losing access
+ * as a consequence.
+ *
+ * Initiator: OWNED	=> NOPAGE
+ * Completer: NOPAGE	=> OWNED
+ */
+static int do_donate(struct pkvm_mem_donation *donation)
+{
+	int ret;
+
+	ret = check_donation(donation);
+	if (ret)
+		return ret;
+
+	return WARN_ON(__do_donate(donation));
+}
+
 int __pkvm_host_share_hyp(u64 pfn)
 {
 	int ret;
@@ -751,7 +1829,7 @@ int __pkvm_host_share_hyp(u64 pfn)
 				.id	= PKVM_ID_HYP,
 			},
 		},
-		.completer_prot	= PAGE_HYP,
+		.completer_prot	= default_hyp_prot(host_addr),
 	};
 
 	host_lock_component();
@@ -765,6 +1843,70 @@ int __pkvm_host_share_hyp(u64 pfn)
 	return ret;
 }
 
+int __pkvm_guest_share_host(struct pkvm_hyp_vcpu *vcpu, u64 ipa)
+{
+	int ret;
+	struct pkvm_hyp_vm *vm = pkvm_hyp_vcpu_to_hyp_vm(vcpu);
+	struct pkvm_mem_share share = {
+		.tx	= {
+			.nr_pages	= 1,
+			.initiator	= {
+				.id	= PKVM_ID_GUEST,
+				.addr	= ipa,
+				.guest	= {
+					.hyp_vcpu = vcpu,
+				},
+			},
+			.completer	= {
+				.id	= PKVM_ID_HOST,
+			},
+		},
+		.completer_prot	= PKVM_HOST_MEM_PROT,
+	};
+
+	host_lock_component();
+	guest_lock_component(vm);
+
+	ret = do_share(&share);
+
+	guest_unlock_component(vm);
+	host_unlock_component();
+
+	return ret;
+}
+
+int __pkvm_guest_unshare_host(struct pkvm_hyp_vcpu *vcpu, u64 ipa)
+{
+	int ret;
+	struct pkvm_hyp_vm *vm = pkvm_hyp_vcpu_to_hyp_vm(vcpu);
+	struct pkvm_mem_share share = {
+		.tx	= {
+			.nr_pages	= 1,
+			.initiator	= {
+				.id	= PKVM_ID_GUEST,
+				.addr	= ipa,
+				.guest	= {
+					.hyp_vcpu = vcpu,
+				},
+			},
+			.completer	= {
+				.id	= PKVM_ID_HOST,
+			},
+		},
+		.completer_prot	= PKVM_HOST_MEM_PROT,
+	};
+
+	host_lock_component();
+	guest_lock_component(vm);
+
+	ret = do_unshare(&share);
+
+	guest_unlock_component(vm);
+	host_unlock_component();
+
+	return ret;
+}
+
 int __pkvm_host_unshare_hyp(u64 pfn)
 {
 	int ret;
@@ -784,7 +1926,7 @@ int __pkvm_host_unshare_hyp(u64 pfn)
 				.id	= PKVM_ID_HYP,
 			},
 		},
-		.completer_prot	= PAGE_HYP,
+		.completer_prot	= default_hyp_prot(host_addr),
 	};
 
 	host_lock_component();
@@ -797,3 +1939,526 @@ int __pkvm_host_unshare_hyp(u64 pfn)
 
 	return ret;
 }
+
+int __pkvm_host_donate_hyp(u64 pfn, u64 nr_pages)
+{
+	return ___pkvm_host_donate_hyp(pfn, nr_pages, false);
+}
+
+int ___pkvm_host_donate_hyp(u64 pfn, u64 nr_pages, bool accept_mmio)
+{
+	phys_addr_t start = hyp_pfn_to_phys(pfn);
+	phys_addr_t end = start + (nr_pages << PAGE_SHIFT);
+	int ret;
+
+	if (!accept_mmio && !range_is_memory(start, end))
+		return -EPERM;
+
+	host_lock_component();
+	ret = __pkvm_host_donate_hyp_locked(pfn, nr_pages);
+	host_unlock_component();
+
+	return ret;
+}
+
+int __pkvm_host_donate_hyp_locked(u64 pfn, u64 nr_pages)
+{
+	int ret;
+	u64 host_addr = hyp_pfn_to_phys(pfn);
+	u64 hyp_addr = (u64)__hyp_va(host_addr);
+	struct pkvm_mem_donation donation = {
+		.tx	= {
+			.nr_pages	= nr_pages,
+			.initiator	= {
+				.id	= PKVM_ID_HOST,
+				.addr	= host_addr,
+				.host	= {
+					.completer_addr = hyp_addr,
+				},
+			},
+			.completer	= {
+				.id	= PKVM_ID_HYP,
+			},
+		},
+	};
+
+	hyp_assert_lock_held(&host_mmu.lock);
+	hyp_lock_component();
+
+	ret = do_donate(&donation);
+
+	hyp_unlock_component();
+
+	return ret;
+}
+
+int __pkvm_hyp_donate_host(u64 pfn, u64 nr_pages)
+{
+	int ret;
+	u64 host_addr = hyp_pfn_to_phys(pfn);
+	u64 hyp_addr = (u64)__hyp_va(host_addr);
+	struct pkvm_mem_donation donation = {
+		.tx	= {
+			.nr_pages	= nr_pages,
+			.initiator	= {
+				.id	= PKVM_ID_HYP,
+				.addr	= hyp_addr,
+				.hyp	= {
+					.completer_addr = host_addr,
+				},
+			},
+			.completer	= {
+				.id	= PKVM_ID_HOST,
+			},
+		},
+	};
+
+	host_lock_component();
+	hyp_lock_component();
+
+	ret = do_donate(&donation);
+
+	hyp_unlock_component();
+	host_unlock_component();
+
+	return ret;
+}
+
+static int restrict_host_page_perms(u64 addr, kvm_pte_t pte, u32 level, enum kvm_pgtable_prot prot)
+{
+	int ret = 0;
+
+	/* XXX: optimize ... */
+	if (kvm_pte_valid(pte) && (level == KVM_PGTABLE_MAX_LEVELS - 1))
+		ret = kvm_pgtable_stage2_unmap(&host_mmu.pgt, addr, PAGE_SIZE);
+	if (!ret)
+		ret = host_stage2_idmap_locked(addr, PAGE_SIZE, prot, false);
+
+	return ret;
+}
+
+#define MODULE_PROT_ALLOWLIST (KVM_PGTABLE_PROT_RWX |	\
+			       KVM_PGTABLE_PROT_NC |	\
+			       KVM_PGTABLE_PROT_PXN |	\
+			       KVM_PGTABLE_PROT_UXN)
+int module_change_host_page_prot(u64 pfn, enum kvm_pgtable_prot prot)
+{
+	u64 addr = hyp_pfn_to_phys(pfn);
+	struct hyp_page *page = NULL;
+	kvm_pte_t pte;
+	u32 level;
+	int ret;
+
+	if ((prot & MODULE_PROT_ALLOWLIST) != prot)
+		return -EINVAL;
+
+	host_lock_component();
+	ret = kvm_pgtable_get_leaf(&host_mmu.pgt, addr, &pte, &level);
+	if (ret)
+		goto unlock;
+
+	/*
+	 * There is no hyp_vmemmap covering MMIO regions, which makes tracking
+	 * of module-owned MMIO regions hard, so we trust the modules not to
+	 * mess things up.
+	 */
+	if (!addr_is_memory(addr))
+		goto update;
+
+	ret = -EPERM;
+	page = hyp_phys_to_page(addr);
+
+	/*
+	 * Modules can only relax permissions of pages they own, and restrict
+	 * permissions of pristine pages.
+	 */
+	if (prot == KVM_PGTABLE_PROT_RWX) {
+		if (!(page->flags & MODULE_OWNED_PAGE))
+			goto unlock;
+	} else if (host_get_page_state(pte, addr) != PKVM_PAGE_OWNED) {
+		goto unlock;
+	}
+
+update:
+	if (prot == default_host_prot(!!page))
+		ret = host_stage2_set_owner_locked(addr, PAGE_SIZE, PKVM_ID_HOST);
+	else if (!prot)
+		ret = host_stage2_set_owner_locked(addr, PAGE_SIZE, PKVM_ID_PROTECTED);
+	else
+		ret = restrict_host_page_perms(addr, pte, level, prot);
+
+	if (ret || !page)
+		goto unlock;
+
+	if (prot != KVM_PGTABLE_PROT_RWX)
+		hyp_phys_to_page(addr)->flags |= MODULE_OWNED_PAGE;
+	else
+		hyp_phys_to_page(addr)->flags &= ~MODULE_OWNED_PAGE;
+
+unlock:
+	host_unlock_component();
+
+	return ret;
+}
+
+int hyp_pin_shared_mem(void *from, void *to)
+{
+	u64 cur, start = ALIGN_DOWN((u64)from, PAGE_SIZE);
+	u64 end = PAGE_ALIGN((u64)to);
+	u64 size = end - start;
+	int ret;
+
+	host_lock_component();
+	hyp_lock_component();
+
+	ret = __host_check_page_state_range(__hyp_pa(start), size,
+					    PKVM_PAGE_SHARED_OWNED);
+	if (ret)
+		goto unlock;
+
+	ret = __hyp_check_page_state_range(start, size,
+					   PKVM_PAGE_SHARED_BORROWED);
+	if (ret)
+		goto unlock;
+
+	for (cur = start; cur < end; cur += PAGE_SIZE)
+		hyp_page_ref_inc(hyp_virt_to_page(cur));
+
+unlock:
+	hyp_unlock_component();
+	host_unlock_component();
+
+	return ret;
+}
+
+void hyp_unpin_shared_mem(void *from, void *to)
+{
+	u64 cur, start = ALIGN_DOWN((u64)from, PAGE_SIZE);
+	u64 end = PAGE_ALIGN((u64)to);
+
+	host_lock_component();
+	hyp_lock_component();
+
+	for (cur = start; cur < end; cur += PAGE_SIZE)
+		hyp_page_ref_dec(hyp_virt_to_page(cur));
+
+	hyp_unlock_component();
+	host_unlock_component();
+}
+
+int __pkvm_host_share_guest(u64 pfn, u64 gfn, struct pkvm_hyp_vcpu *vcpu)
+{
+	int ret;
+	u64 host_addr = hyp_pfn_to_phys(pfn);
+	u64 guest_addr = hyp_pfn_to_phys(gfn);
+	struct pkvm_hyp_vm *vm = pkvm_hyp_vcpu_to_hyp_vm(vcpu);
+	struct pkvm_mem_share share = {
+		.tx	= {
+			.nr_pages	= 1,
+			.initiator	= {
+				.id	= PKVM_ID_HOST,
+				.addr	= host_addr,
+				.host	= {
+					.completer_addr = guest_addr,
+				},
+			},
+			.completer	= {
+				.id	= PKVM_ID_GUEST,
+				.guest	= {
+					.hyp_vcpu = vcpu,
+					.phys = host_addr,
+				},
+			},
+		},
+		.completer_prot	= KVM_PGTABLE_PROT_RWX,
+	};
+
+	host_lock_component();
+	guest_lock_component(vm);
+
+	ret = do_share(&share);
+
+	guest_unlock_component(vm);
+	host_unlock_component();
+
+	return ret;
+}
+
+int __pkvm_host_donate_guest(u64 pfn, u64 gfn, struct pkvm_hyp_vcpu *vcpu)
+{
+	int ret;
+	u64 host_addr = hyp_pfn_to_phys(pfn);
+	u64 guest_addr = hyp_pfn_to_phys(gfn);
+	struct pkvm_hyp_vm *vm = pkvm_hyp_vcpu_to_hyp_vm(vcpu);
+	struct pkvm_mem_donation donation = {
+		.tx	= {
+			.nr_pages	= 1,
+			.initiator	= {
+				.id	= PKVM_ID_HOST,
+				.addr	= host_addr,
+				.host	= {
+					.completer_addr = guest_addr,
+				},
+			},
+			.completer	= {
+				.id	= PKVM_ID_GUEST,
+				.guest	= {
+					.hyp_vcpu = vcpu,
+					.phys = host_addr,
+				},
+			},
+		},
+	};
+
+	host_lock_component();
+	guest_lock_component(vm);
+
+	ret = do_donate(&donation);
+
+	guest_unlock_component(vm);
+	host_unlock_component();
+
+	return ret;
+}
+
+int __pkvm_host_share_ffa(u64 pfn, u64 nr_pages)
+{
+	int ret;
+	struct pkvm_mem_share share = {
+		.tx	= {
+			.nr_pages	= nr_pages,
+			.initiator	= {
+				.id	= PKVM_ID_HOST,
+				.addr	= hyp_pfn_to_phys(pfn),
+			},
+			.completer	= {
+				.id	= PKVM_ID_FFA,
+			},
+		},
+	};
+
+	host_lock_component();
+	ret = do_share(&share);
+	host_unlock_component();
+
+	return ret;
+}
+
+
+int __pkvm_host_unshare_ffa(u64 pfn, u64 nr_pages)
+{
+	int ret;
+	struct pkvm_mem_share share = {
+		.tx	= {
+			.nr_pages	= nr_pages,
+			.initiator	= {
+				.id	= PKVM_ID_HOST,
+				.addr	= hyp_pfn_to_phys(pfn),
+			},
+			.completer	= {
+				.id	= PKVM_ID_FFA,
+			},
+		},
+	};
+
+	host_lock_component();
+	ret = do_unshare(&share);
+	host_unlock_component();
+
+	return ret;
+}
+
+void hyp_poison_page(phys_addr_t phys)
+{
+	void *addr = hyp_fixmap_map(phys);
+
+	memset(addr, 0, PAGE_SIZE);
+	/*
+	 * Prefer kvm_flush_dcache_to_poc() over __clean_dcache_guest_page()
+	 * here as the latter may elide the CMO under the assumption that FWB
+	 * will be enabled on CPUs that support it. This is incorrect for the
+	 * host stage-2 and would otherwise lead to a malicious host potentially
+	 * being able to read the contents of newly reclaimed guest pages.
+	 */
+	kvm_flush_dcache_to_poc(addr, PAGE_SIZE);
+	hyp_fixmap_unmap();
+}
+
+void destroy_hyp_vm_pgt(struct pkvm_hyp_vm *vm)
+{
+	guest_lock_component(vm);
+	kvm_pgtable_stage2_destroy(&vm->pgt);
+	guest_unlock_component(vm);
+}
+
+void drain_hyp_pool(struct pkvm_hyp_vm *vm, struct kvm_hyp_memcache *mc)
+{
+	void *addr = hyp_alloc_pages(&vm->pool, 0);
+
+	while (addr) {
+		memset(hyp_virt_to_page(addr), 0, sizeof(struct hyp_page));
+		push_hyp_memcache(mc, addr, hyp_virt_to_phys);
+		WARN_ON(__pkvm_hyp_donate_host(hyp_virt_to_pfn(addr), 1));
+		addr = hyp_alloc_pages(&vm->pool, 0);
+	}
+}
+
+int __pkvm_host_reclaim_page(struct pkvm_hyp_vm *vm, u64 pfn, u64 ipa)
+{
+	phys_addr_t phys = hyp_pfn_to_phys(pfn);
+	kvm_pte_t pte;
+	int ret;
+
+	host_lock_component();
+	guest_lock_component(vm);
+
+	ret = kvm_pgtable_get_leaf(&vm->pgt, ipa, &pte, NULL);
+	if (ret)
+		goto unlock;
+
+	if (!kvm_pte_valid(pte)) {
+		ret = -EINVAL;
+		goto unlock;
+	} else if (phys != kvm_pte_to_phys(pte)) {
+		ret = -EPERM;
+		goto unlock;
+	}
+
+	/* We could avoid TLB inval, it is done per VMID on the finalize path */
+	WARN_ON(kvm_pgtable_stage2_unmap(&vm->pgt, ipa, PAGE_SIZE));
+
+	switch(guest_get_page_state(pte, ipa)) {
+	case PKVM_PAGE_OWNED:
+		WARN_ON(__host_check_page_state_range(phys, PAGE_SIZE, PKVM_NOPAGE));
+		hyp_poison_page(phys);
+		psci_mem_protect_dec(1);
+		break;
+	case PKVM_PAGE_SHARED_BORROWED:
+		WARN_ON(__host_check_page_state_range(phys, PAGE_SIZE, PKVM_PAGE_SHARED_OWNED));
+		break;
+	case PKVM_PAGE_SHARED_OWNED:
+		WARN_ON(__host_check_page_state_range(phys, PAGE_SIZE, PKVM_PAGE_SHARED_BORROWED));
+		break;
+	default:
+		BUG_ON(1);
+	}
+
+	WARN_ON(host_stage2_set_owner_locked(phys, PAGE_SIZE, PKVM_ID_HOST));
+
+unlock:
+	guest_unlock_component(vm);
+	host_unlock_component();
+
+	return ret;
+}
+
+/* Replace this with something more structured once day */
+#define MMIO_NOTE	(('M' << 24 | 'M' << 16 | 'I' << 8 | 'O') << 1)
+
+static bool __check_ioguard_page(struct pkvm_hyp_vcpu *hyp_vcpu, u64 ipa)
+{
+	struct pkvm_hyp_vm *vm = pkvm_hyp_vcpu_to_hyp_vm(hyp_vcpu);
+	kvm_pte_t pte;
+	u32 level;
+	int ret;
+
+	ret = kvm_pgtable_get_leaf(&vm->pgt, ipa, &pte, &level);
+	if (ret)
+		return false;
+
+	/* Must be a PAGE_SIZE mapping with our annotation */
+	return (BIT(ARM64_HW_PGTABLE_LEVEL_SHIFT(level)) == PAGE_SIZE &&
+		pte == MMIO_NOTE);
+}
+
+int __pkvm_install_ioguard_page(struct pkvm_hyp_vcpu *hyp_vcpu, u64 ipa)
+{
+	struct pkvm_hyp_vm *vm = pkvm_hyp_vcpu_to_hyp_vm(hyp_vcpu);
+	kvm_pte_t pte;
+	u32 level;
+	int ret;
+
+	if (!test_bit(KVM_ARCH_FLAG_MMIO_GUARD, &vm->kvm.arch.flags))
+		return -EINVAL;
+
+	if (ipa & ~PAGE_MASK)
+		return -EINVAL;
+
+	guest_lock_component(vm);
+
+	ret = kvm_pgtable_get_leaf(&vm->pgt, ipa, &pte, &level);
+	if (ret)
+		goto unlock;
+
+	if (pte && BIT(ARM64_HW_PGTABLE_LEVEL_SHIFT(level)) == PAGE_SIZE) {
+		/*
+		 * Already flagged as MMIO, let's accept it, and fail
+		 * otherwise
+		 */
+		if (pte != MMIO_NOTE)
+			ret = -EBUSY;
+
+		goto unlock;
+	}
+
+	ret = kvm_pgtable_stage2_annotate(&vm->pgt, ipa, PAGE_SIZE,
+					  &hyp_vcpu->vcpu.arch.pkvm_memcache,
+					  MMIO_NOTE);
+
+unlock:
+	guest_unlock_component(vm);
+	return ret;
+}
+
+int __pkvm_remove_ioguard_page(struct pkvm_hyp_vcpu *hyp_vcpu, u64 ipa)
+{
+	struct pkvm_hyp_vm *vm = pkvm_hyp_vcpu_to_hyp_vm(hyp_vcpu);
+
+	if (!test_bit(KVM_ARCH_FLAG_MMIO_GUARD, &vm->kvm.arch.flags))
+		return -EINVAL;
+
+	guest_lock_component(vm);
+
+	if (__check_ioguard_page(hyp_vcpu, ipa))
+		WARN_ON(kvm_pgtable_stage2_unmap(&vm->pgt,
+				ALIGN_DOWN(ipa, PAGE_SIZE), PAGE_SIZE));
+
+	guest_unlock_component(vm);
+	return 0;
+}
+
+bool __pkvm_check_ioguard_page(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	struct pkvm_hyp_vm *vm = pkvm_hyp_vcpu_to_hyp_vm(hyp_vcpu);
+	u64 ipa, end;
+	bool ret;
+
+	if (!kvm_vcpu_dabt_isvalid(&hyp_vcpu->vcpu))
+		return false;
+
+	if (!test_bit(KVM_ARCH_FLAG_MMIO_GUARD, &vm->kvm.arch.flags))
+		return true;
+
+	ipa  = kvm_vcpu_get_fault_ipa(&hyp_vcpu->vcpu);
+	ipa |= kvm_vcpu_get_hfar(&hyp_vcpu->vcpu) & FAR_MASK;
+	end = ipa + kvm_vcpu_dabt_get_as(&hyp_vcpu->vcpu) - 1;
+
+	guest_lock_component(vm);
+	ret = __check_ioguard_page(hyp_vcpu, ipa);
+	if ((end & PAGE_MASK) != (ipa & PAGE_MASK))
+		ret &= __check_ioguard_page(hyp_vcpu, end);
+	guest_unlock_component(vm);
+
+	return ret;
+}
+
+int host_stage2_get_leaf(phys_addr_t phys, kvm_pte_t *ptep, u32 *level)
+{
+	int ret;
+
+	host_lock_component();
+	ret = kvm_pgtable_get_leaf(&host_mmu.pgt, phys, ptep, level);
+	host_unlock_component();
+
+	return ret;
+}
diff --git a/arch/arm64/kvm/hyp/nvhe/mm.c b/arch/arm64/kvm/hyp/nvhe/mm.c
index 96193cb..4d07d5e 100644
--- a/arch/arm64/kvm/hyp/nvhe/mm.c
+++ b/arch/arm64/kvm/hyp/nvhe/mm.c
@@ -14,7 +14,9 @@
 #include <nvhe/early_alloc.h>
 #include <nvhe/gfp.h>
 #include <nvhe/memory.h>
+#include <nvhe/mem_protect.h>
 #include <nvhe/mm.h>
+#include <nvhe/modules.h>
 #include <nvhe/spinlock.h>
 
 struct kvm_pgtable pkvm_pgtable;
@@ -23,7 +25,14 @@ hyp_spinlock_t pkvm_pgd_lock;
 struct memblock_region hyp_memory[HYP_MEMBLOCK_REGIONS];
 unsigned int hyp_memblock_nr;
 
-static u64 __io_map_base;
+static u64 __private_range_base;
+static u64 __private_range_cur;
+
+struct hyp_fixmap_slot {
+	u64 addr;
+	kvm_pte_t *ptep;
+};
+static DEFINE_PER_CPU(struct hyp_fixmap_slot, fixmap_slots);
 
 static int __pkvm_create_mappings(unsigned long start, unsigned long size,
 				  unsigned long phys, enum kvm_pgtable_prot prot)
@@ -42,29 +51,29 @@ static int __pkvm_create_mappings(unsigned long start, unsigned long size,
  * @size:	The size of the VA range to reserve.
  * @haddr:	The hypervisor virtual start address of the allocation.
  *
- * The private virtual address (VA) range is allocated above __io_map_base
+ * The private virtual address (VA) range is allocated above __private_range_base
  * and aligned based on the order of @size.
  *
  * Return: 0 on success or negative error code on failure.
  */
 int pkvm_alloc_private_va_range(size_t size, unsigned long *haddr)
 {
-	unsigned long base, addr;
+	unsigned long cur, addr;
 	int ret = 0;
 
 	hyp_spin_lock(&pkvm_pgd_lock);
 
 	/* Align the allocation based on the order of its size */
-	addr = ALIGN(__io_map_base, PAGE_SIZE << get_order(size));
+	addr = ALIGN(__private_range_cur, PAGE_SIZE << get_order(size));
 
 	/* The allocated size is always a multiple of PAGE_SIZE */
-	base = addr + PAGE_ALIGN(size);
+	cur = addr + PAGE_ALIGN(size);
 
-	/* Are we overflowing on the vmemmap ? */
-	if (!addr || base > __hyp_vmemmap)
+	/* Has the private range grown too large ? */
+	if (!addr || cur > __hyp_vmemmap || (cur - __private_range_base) > __PKVM_PRIVATE_SZ) {
 		ret = -ENOMEM;
-	else {
-		__io_map_base = base;
+	} else {
+		__private_range_cur = cur;
 		*haddr = addr;
 	}
 
@@ -93,6 +102,71 @@ int __pkvm_create_private_mapping(phys_addr_t phys, size_t size,
 	return err;
 }
 
+#ifdef CONFIG_NVHE_EL2_DEBUG
+static unsigned long mod_range_start = ULONG_MAX;
+static unsigned long mod_range_end;
+static DEFINE_HYP_SPINLOCK(mod_range_lock);
+
+static void update_mod_range(unsigned long addr, size_t size)
+{
+	hyp_spin_lock(&mod_range_lock);
+	mod_range_start = min(mod_range_start, addr);
+	mod_range_end = max(mod_range_end, addr + size);
+	hyp_spin_unlock(&mod_range_lock);
+}
+
+void assert_in_mod_range(unsigned long addr)
+{
+	/*
+	 * This is not entirely watertight if there are private range
+	 * allocations between modules being loaded, but in practice that is
+	 * probably going to be allocation initiated by the modules themselves.
+	 */
+	hyp_spin_lock(&mod_range_lock);
+	WARN_ON(addr < mod_range_start || mod_range_end <= addr);
+	hyp_spin_unlock(&mod_range_lock);
+}
+#else
+static inline void update_mod_range(unsigned long addr, size_t size) { }
+#endif
+
+void *__pkvm_alloc_module_va(u64 nr_pages)
+{
+	size_t size = nr_pages << PAGE_SHIFT;
+	unsigned long addr = 0;
+
+	if (!pkvm_alloc_private_va_range(size, &addr))
+		update_mod_range(addr, size);
+
+	return (void *)addr;
+}
+
+int __pkvm_map_module_page(u64 pfn, void *va, enum kvm_pgtable_prot prot, bool is_protected)
+{
+	unsigned long addr = (unsigned long)va;
+	int ret;
+
+	assert_in_mod_range(addr);
+
+	if (!is_protected) {
+		ret = __pkvm_host_donate_hyp(pfn, 1);
+		if (ret)
+			return ret;
+	}
+
+	ret = __pkvm_create_mappings(addr, PAGE_SIZE, hyp_pfn_to_phys(pfn), prot);
+	if (ret && !is_protected)
+		WARN_ON(__pkvm_hyp_donate_host(pfn, 1));
+
+	return ret;
+}
+
+void __pkvm_unmap_module_page(u64 pfn, void *va)
+{
+	WARN_ON(__pkvm_hyp_donate_host(pfn, 1));
+	pkvm_remove_mappings(va, va + PAGE_SIZE);
+}
+
 int pkvm_create_mappings_locked(void *from, void *to, enum kvm_pgtable_prot prot)
 {
 	unsigned long start = (unsigned long)from;
@@ -129,13 +203,45 @@ int pkvm_create_mappings(void *from, void *to, enum kvm_pgtable_prot prot)
 	return ret;
 }
 
-int hyp_back_vmemmap(phys_addr_t phys, unsigned long size, phys_addr_t back)
+void pkvm_remove_mappings(void *from, void *to)
 {
-	unsigned long start, end;
+	unsigned long size = (unsigned long)to - (unsigned long)from;
 
-	hyp_vmemmap_range(phys, size, &start, &end);
+	hyp_spin_lock(&pkvm_pgd_lock);
+	WARN_ON(kvm_pgtable_hyp_unmap(&pkvm_pgtable, (u64)from, size) != size);
+	hyp_spin_unlock(&pkvm_pgd_lock);
+}
 
-	return __pkvm_create_mappings(start, end - start, back, PAGE_HYP);
+int hyp_back_vmemmap(phys_addr_t back)
+{
+	unsigned long i, start, size, end = 0;
+	int ret;
+
+	for (i = 0; i < hyp_memblock_nr; i++) {
+		start = hyp_memory[i].base;
+		start = ALIGN_DOWN((u64)hyp_phys_to_page(start), PAGE_SIZE);
+		/*
+		 * The begining of the hyp_vmemmap region for the current
+		 * memblock may already be backed by the page backing the end
+		 * the previous region, so avoid mapping it twice.
+		 */
+		start = max(start, end);
+
+		end = hyp_memory[i].base + hyp_memory[i].size;
+		end = PAGE_ALIGN((u64)hyp_phys_to_page(end));
+		if (start >= end)
+			continue;
+
+		size = end - start;
+		ret = __pkvm_create_mappings(start, size, back, PAGE_HYP);
+		if (ret)
+			return ret;
+
+		memset(hyp_phys_to_virt(back), 0, size);
+		back += size;
+	}
+
+	return 0;
 }
 
 static void *__hyp_bp_vect_base;
@@ -189,6 +295,120 @@ int hyp_map_vectors(void)
 	return 0;
 }
 
+void *hyp_fixmap_map(phys_addr_t phys)
+{
+	struct hyp_fixmap_slot *slot = this_cpu_ptr(&fixmap_slots);
+	kvm_pte_t pte, *ptep = slot->ptep;
+
+	pte = *ptep;
+	pte &= ~kvm_phys_to_pte(KVM_PHYS_INVALID);
+	pte |= kvm_phys_to_pte(phys) | KVM_PTE_VALID;
+	WRITE_ONCE(*ptep, pte);
+	dsb(ishst);
+
+	return (void *)slot->addr + offset_in_page(phys);
+}
+
+#define KVM_PTE_LEAF_ATTR_LO_S1_ATTRIDX	GENMASK(4, 2)
+void *hyp_fixmap_map_nc(phys_addr_t phys)
+{
+	struct hyp_fixmap_slot *slot = this_cpu_ptr(&fixmap_slots);
+	kvm_pte_t pte, *ptep = slot->ptep;
+
+	pte = *ptep;
+	pte &= ~kvm_phys_to_pte(KVM_PHYS_INVALID);
+	pte |= kvm_phys_to_pte(phys) | KVM_PTE_VALID |
+	       FIELD_PREP(KVM_PTE_LEAF_ATTR_LO_S1_ATTRIDX, MT_NORMAL_NC);
+	WRITE_ONCE(*ptep, pte);
+	dsb(ishst);
+
+	return (void *)slot->addr;
+}
+
+static void fixmap_clear_slot(struct hyp_fixmap_slot *slot)
+{
+	kvm_pte_t *ptep = slot->ptep;
+	u64 addr = slot->addr;
+
+	/* Zap the memory type too. MT_NORMAL is 0 so the fixmap is cacheable by default */
+	WRITE_ONCE(*ptep, *ptep & ~(KVM_PTE_VALID | KVM_PTE_LEAF_ATTR_LO_S1_ATTRIDX));
+
+	/*
+	 * Irritatingly, the architecture requires that we use inner-shareable
+	 * broadcast TLB invalidation here in case another CPU speculates
+	 * through our fixmap and decides to create an "amalagamation of the
+	 * values held in the TLB" due to the apparent lack of a
+	 * break-before-make sequence.
+	 *
+	 * https://lore.kernel.org/kvm/20221017115209.2099-1-will@kernel.org/T/#mf10dfbaf1eaef9274c581b81c53758918c1d0f03
+	 */
+	dsb(ishst);
+	__tlbi_level(vale2is, __TLBI_VADDR(addr, 0), (KVM_PGTABLE_MAX_LEVELS - 1));
+	dsb(ish);
+	isb();
+}
+
+void hyp_fixmap_unmap(void)
+{
+	fixmap_clear_slot(this_cpu_ptr(&fixmap_slots));
+}
+
+static int __create_fixmap_slot_cb(u64 addr, u64 end, u32 level, kvm_pte_t *ptep,
+				   enum kvm_pgtable_walk_flags flag,
+				   void * const arg)
+{
+	struct hyp_fixmap_slot *slot = per_cpu_ptr(&fixmap_slots, (u64)arg);
+
+	if (!kvm_pte_valid(*ptep) || level != KVM_PGTABLE_MAX_LEVELS - 1)
+		return -EINVAL;
+
+	slot->addr = addr;
+	slot->ptep = ptep;
+
+	/*
+	 * Clear the PTE, but keep the page-table page refcount elevated to
+	 * prevent it from ever being freed. This lets us manipulate the PTEs
+	 * by hand safely without ever needing to allocate memory.
+	 */
+	fixmap_clear_slot(slot);
+
+	return 0;
+}
+
+static int create_fixmap_slot(u64 addr, u64 cpu)
+{
+	struct kvm_pgtable_walker walker = {
+		.cb	= __create_fixmap_slot_cb,
+		.flags	= KVM_PGTABLE_WALK_LEAF,
+		.arg = (void *)cpu,
+	};
+
+	return kvm_pgtable_walk(&pkvm_pgtable, addr, PAGE_SIZE, &walker);
+}
+
+int hyp_create_pcpu_fixmap(void)
+{
+	unsigned long addr, i;
+	int ret;
+
+	for (i = 0; i < hyp_nr_cpus; i++) {
+		ret = pkvm_alloc_private_va_range(PAGE_SIZE, &addr);
+		if (ret)
+			return ret;
+
+		ret = kvm_pgtable_hyp_map(&pkvm_pgtable, addr, PAGE_SIZE,
+					  __hyp_pa(__hyp_bss_start), PAGE_HYP);
+		if (ret)
+			return ret;
+
+		ret = create_fixmap_slot(addr, i);
+		if (ret)
+			return ret;
+	}
+
+	return 0;
+}
+
 int hyp_create_idmap(u32 hyp_va_bits)
 {
 	unsigned long start, end;
@@ -207,9 +427,43 @@ int hyp_create_idmap(u32 hyp_va_bits)
 	 * with the idmap to place the IOs and the vmemmap. IOs use the lower
 	 * half of the quarter and the vmemmap the upper half.
 	 */
-	__io_map_base = start & BIT(hyp_va_bits - 2);
-	__io_map_base ^= BIT(hyp_va_bits - 2);
-	__hyp_vmemmap = __io_map_base | BIT(hyp_va_bits - 3);
+	__private_range_base = start & BIT(hyp_va_bits - 2);
+	__private_range_base ^= BIT(hyp_va_bits - 2);
+	__private_range_cur = __private_range_base;
+	__hyp_vmemmap = __private_range_base | BIT(hyp_va_bits - 3);
 
 	return __pkvm_create_mappings(start, end - start, start, PAGE_HYP_EXEC);
 }
+
+static void *admit_host_page(void *arg)
+{
+	struct kvm_hyp_memcache *host_mc = arg;
+
+	if (!host_mc->nr_pages)
+		return NULL;
+
+	/*
+	 * The host still owns the pages in its memcache, so we need to go
+	 * through a full host-to-hyp donation cycle to change it. Fortunately,
+	 * __pkvm_host_donate_hyp() takes care of races for us, so if it
+	 * succeeds we're good to go.
+	 */
+	if (__pkvm_host_donate_hyp(hyp_phys_to_pfn(host_mc->head), 1))
+		return NULL;
+
+	return pop_hyp_memcache(host_mc, hyp_phys_to_virt);
+}
+
+/* Refill our local memcache by poping pages from the one provided by the host. */
+int refill_memcache(struct kvm_hyp_memcache *mc, unsigned long min_pages,
+		    struct kvm_hyp_memcache *host_mc)
+{
+	struct kvm_hyp_memcache tmp = *host_mc;
+	int ret;
+
+	ret =  __topup_hyp_memcache(mc, min_pages, admit_host_page,
+				    hyp_virt_to_phys, &tmp);
+	*host_mc = tmp;
+
+	return ret;
+}
diff --git a/arch/arm64/kvm/hyp/nvhe/module.lds.S b/arch/arm64/kvm/hyp/nvhe/module.lds.S
new file mode 100644
index 0000000..645080c
--- /dev/null
+++ b/arch/arm64/kvm/hyp/nvhe/module.lds.S
@@ -0,0 +1,26 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+
+#include <asm/hyp_image.h>
+#include <asm/page-def.h>
+
+SECTIONS {
+	.hyp.text : {
+		HYP_SECTION_SYMBOL_NAME(.text) = .;
+		*(.text .text.*)
+	}
+
+	.hyp.bss : {
+		HYP_SECTION_SYMBOL_NAME(.bss) = .;
+		*(.bss .bss.*)
+	}
+
+	.hyp.rodata : {
+		HYP_SECTION_SYMBOL_NAME(.rodata) = .;
+		*(.rodata .rodata.*)
+	}
+
+	.hyp.data : {
+		HYP_SECTION_SYMBOL_NAME(.data) = .;
+		*(.data .data.*)
+	}
+}
diff --git a/arch/arm64/kvm/hyp/nvhe/modules.c b/arch/arm64/kvm/hyp/nvhe/modules.c
new file mode 100644
index 0000000..49e6c2c
--- /dev/null
+++ b/arch/arm64/kvm/hyp/nvhe/modules.c
@@ -0,0 +1,197 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (C) 2022 Google LLC
+ */
+#include <asm/kvm_host.h>
+#include <asm/kvm_pkvm_module.h>
+
+#include <nvhe/mem_protect.h>
+#include <nvhe/modules.h>
+#include <nvhe/mm.h>
+#include <nvhe/serial.h>
+#include <nvhe/spinlock.h>
+#include <nvhe/trap_handler.h>
+
+static void __kvm_flush_dcache_to_poc(void *addr, size_t size)
+{
+	kvm_flush_dcache_to_poc((unsigned long)addr, (unsigned long)size);
+}
+
+static void __update_hcr_el2(unsigned long set_mask, unsigned long clear_mask)
+{
+	struct kvm_nvhe_init_params *params = this_cpu_ptr(&kvm_init_params);
+
+	params->hcr_el2 |= set_mask;
+	params->hcr_el2 &= ~clear_mask;
+	__kvm_flush_dcache_to_poc(params, sizeof(*params));
+	write_sysreg(params->hcr_el2, hcr_el2);
+}
+
+static void __update_hfgwtr_el2(unsigned long set_mask, unsigned long clear_mask)
+{
+	struct kvm_nvhe_init_params *params = this_cpu_ptr(&kvm_init_params);
+
+	params->hfgwtr_el2 |= set_mask;
+	params->hfgwtr_el2 &= ~clear_mask;
+	__kvm_flush_dcache_to_poc(params, sizeof(*params));
+	write_sysreg_s(params->hfgwtr_el2, SYS_HFGWTR_EL2);
+}
+
+static atomic_t early_lm_pages;
+static void *__pkvm_linear_map_early(phys_addr_t phys, size_t size, enum kvm_pgtable_prot prot)
+{
+	void *addr = NULL;
+	int ret;
+
+	if (!PAGE_ALIGNED(phys) || !PAGE_ALIGNED(size))
+		return NULL;
+
+	addr = __hyp_va(phys);
+	ret = pkvm_create_mappings(addr, addr + size, prot);
+	if (ret)
+		addr = NULL;
+	else
+		atomic_add(size, &early_lm_pages);
+
+	return addr;
+}
+
+static void __pkvm_linear_unmap_early(void *addr, size_t size)
+{
+	pkvm_remove_mappings(addr, addr + size);
+	atomic_sub(size, &early_lm_pages);
+}
+
+void __pkvm_close_module_registration(void)
+{
+	/*
+	 * Page ownership tracking might go out of sync if there are stale
+	 * entries in pKVM's linear map range, so they must really be gone by
+	 * now.
+	 */
+	WARN_ON_ONCE(atomic_read(&early_lm_pages));
+
+	/*
+	 * Nothing else to do, module loading HVCs are only accessible before
+	 * deprivilege
+	 */
+}
+
+static int __pkvm_module_host_donate_hyp(u64 pfn, u64 nr_pages)
+{
+	return ___pkvm_host_donate_hyp(pfn, nr_pages, true);
+}
+
+const struct pkvm_module_ops module_ops = {
+	.create_private_mapping = __pkvm_create_private_mapping,
+	.alloc_module_va = __pkvm_alloc_module_va,
+	.map_module_page = __pkvm_map_module_page,
+	.register_serial_driver = __pkvm_register_serial_driver,
+	.puts = hyp_puts,
+	.putx64 = hyp_putx64,
+	.fixmap_map = hyp_fixmap_map,
+	.fixmap_unmap = hyp_fixmap_unmap,
+	.linear_map_early = __pkvm_linear_map_early,
+	.linear_unmap_early = __pkvm_linear_unmap_early,
+	.flush_dcache_to_poc = __kvm_flush_dcache_to_poc,
+	.update_hcr_el2 = __update_hcr_el2,
+	.update_hfgwtr_el2 = __update_hfgwtr_el2,
+	.register_host_perm_fault_handler = hyp_register_host_perm_fault_handler,
+	.host_stage2_mod_prot = module_change_host_page_prot,
+	.host_stage2_get_leaf = host_stage2_get_leaf,
+	.register_host_smc_handler = __pkvm_register_host_smc_handler,
+	.register_default_trap_handler = __pkvm_register_default_trap_handler,
+	.register_illegal_abt_notifier = __pkvm_register_illegal_abt_notifier,
+	.register_psci_notifier = __pkvm_register_psci_notifier,
+	.register_hyp_panic_notifier = __pkvm_register_hyp_panic_notifier,
+	.host_donate_hyp = __pkvm_module_host_donate_hyp,
+	.hyp_donate_host = __pkvm_hyp_donate_host,
+	.host_share_hyp = __pkvm_host_share_hyp,
+	.host_unshare_hyp = __pkvm_host_unshare_hyp,
+	.pin_shared_mem = hyp_pin_shared_mem,
+	.unpin_shared_mem = hyp_unpin_shared_mem,
+	.memcpy = memcpy,
+	.memset = memset,
+	.hyp_pa = hyp_virt_to_phys,
+	.hyp_va = hyp_phys_to_virt,
+	.kern_hyp_va = __kern_hyp_va,
+};
+
+int __pkvm_init_module(void *module_init)
+{
+	int (*do_module_init)(const struct pkvm_module_ops *ops) = module_init;
+
+	return do_module_init(&module_ops);
+}
+
+#define MAX_DYNAMIC_HCALLS 128
+
+atomic_t num_dynamic_hcalls = ATOMIC_INIT(0);
+DEFINE_HYP_SPINLOCK(dyn_hcall_lock);
+
+static dyn_hcall_t host_dynamic_hcalls[MAX_DYNAMIC_HCALLS];
+
+int handle_host_dynamic_hcall(struct kvm_cpu_context *host_ctxt)
+{
+	DECLARE_REG(unsigned long, id, host_ctxt, 0);
+	dyn_hcall_t hfn;
+	int dyn_id;
+
+	/*
+	 * TODO: static key to protect when no dynamic hcall is registered?
+	 */
+
+	dyn_id = (int)(id - KVM_HOST_SMCCC_ID(0)) -
+		 __KVM_HOST_SMCCC_FUNC___dynamic_hcalls;
+	if (dyn_id < 0)
+		return HCALL_UNHANDLED;
+
+	cpu_reg(host_ctxt, 0) = SMCCC_RET_NOT_SUPPORTED;
+
+	/*
+	 * Order access to num_dynamic_hcalls and host_dynamic_hcalls. Paired
+	 * with __pkvm_register_hcall().
+	 */
+	if (dyn_id >= atomic_read_acquire(&num_dynamic_hcalls))
+		goto end;
+
+	hfn = READ_ONCE(host_dynamic_hcalls[dyn_id]);
+	if (!hfn)
+		goto end;
+
+	cpu_reg(host_ctxt, 0) = SMCCC_RET_SUCCESS;
+	hfn(host_ctxt);
+end:
+	return HCALL_HANDLED;
+}
+
+int __pkvm_register_hcall(unsigned long hvn_hyp_va)
+{
+	dyn_hcall_t hfn = (void *)hvn_hyp_va;
+	int reserved_id, ret;
+
+	assert_in_mod_range(hvn_hyp_va);
+
+	hyp_spin_lock(&dyn_hcall_lock);
+
+	reserved_id = atomic_read(&num_dynamic_hcalls);
+
+	if (reserved_id >= MAX_DYNAMIC_HCALLS) {
+		ret = -ENOMEM;
+		goto err_hcall_unlock;
+	}
+
+	WRITE_ONCE(host_dynamic_hcalls[reserved_id], hfn);
+
+	/*
+	 * Order access to num_dynamic_hcalls and host_dynamic_hcalls. Paired
+	 * with handle_host_dynamic_hcall.
+	 */
+	atomic_set_release(&num_dynamic_hcalls, reserved_id + 1);
+
+	ret = reserved_id + __KVM_HOST_SMCCC_FUNC___dynamic_hcalls;
+err_hcall_unlock:
+	hyp_spin_unlock(&dyn_hcall_lock);
+
+	return ret;
+};
diff --git a/arch/arm64/kvm/hyp/nvhe/page_alloc.c b/arch/arm64/kvm/hyp/nvhe/page_alloc.c
index d40f0b3..11b190f 100644
--- a/arch/arm64/kvm/hyp/nvhe/page_alloc.c
+++ b/arch/arm64/kvm/hyp/nvhe/page_alloc.c
@@ -32,7 +32,7 @@ u64 __hyp_vmemmap;
  */
 static struct hyp_page *__find_buddy_nocheck(struct hyp_pool *pool,
 					     struct hyp_page *p,
-					     unsigned short order)
+					     u8 order)
 {
 	phys_addr_t addr = hyp_page_to_phys(p);
 
@@ -51,7 +51,7 @@ static struct hyp_page *__find_buddy_nocheck(struct hyp_pool *pool,
 /* Find a buddy page currently available for allocation */
 static struct hyp_page *__find_buddy_avail(struct hyp_pool *pool,
 					   struct hyp_page *p,
-					   unsigned short order)
+					   u8 order)
 {
 	struct hyp_page *buddy = __find_buddy_nocheck(pool, p, order);
 
@@ -93,11 +93,16 @@ static inline struct hyp_page *node_to_page(struct list_head *node)
 static void __hyp_attach_page(struct hyp_pool *pool,
 			      struct hyp_page *p)
 {
-	unsigned short order = p->order;
+	phys_addr_t phys = hyp_page_to_phys(p);
 	struct hyp_page *buddy;
+	u8 order = p->order;
 
 	memset(hyp_page_to_virt(p), 0, PAGE_SIZE << p->order);
 
+	/* Skip coalescing for 'external' pages being freed into the pool. */
+	if (phys < pool->range_start || phys >= pool->range_end)
+		goto insert;
+
 	/*
 	 * Only the first struct hyp_page of a high-order page (otherwise known
 	 * as the 'head') should have p->order set. The non-head pages should
@@ -116,6 +121,7 @@ static void __hyp_attach_page(struct hyp_pool *pool,
 		p = min(p, buddy);
 	}
 
+insert:
 	/* Mark the new head, and insert it */
 	p->order = order;
 	page_add_to_list(p, &pool->free_area[order]);
@@ -123,7 +129,7 @@ static void __hyp_attach_page(struct hyp_pool *pool,
 
 static struct hyp_page *__hyp_extract_page(struct hyp_pool *pool,
 					   struct hyp_page *p,
-					   unsigned short order)
+					   u8 order)
 {
 	struct hyp_page *buddy;
 
@@ -144,25 +150,6 @@ static struct hyp_page *__hyp_extract_page(struct hyp_pool *pool,
 	return p;
 }
 
-static inline void hyp_page_ref_inc(struct hyp_page *p)
-{
-	BUG_ON(p->refcount == USHRT_MAX);
-	p->refcount++;
-}
-
-static inline int hyp_page_ref_dec_and_test(struct hyp_page *p)
-{
-	BUG_ON(!p->refcount);
-	p->refcount--;
-	return (p->refcount == 0);
-}
-
-static inline void hyp_set_page_refcounted(struct hyp_page *p)
-{
-	BUG_ON(p->refcount);
-	p->refcount = 1;
-}
-
 static void __hyp_put_page(struct hyp_pool *pool, struct hyp_page *p)
 {
 	if (hyp_page_ref_dec_and_test(p))
@@ -196,7 +183,7 @@ void hyp_get_page(struct hyp_pool *pool, void *addr)
 
 void hyp_split_page(struct hyp_page *p)
 {
-	unsigned short order = p->order;
+	u8 order = p->order;
 	unsigned int i;
 
 	p->order = 0;
@@ -208,10 +195,10 @@ void hyp_split_page(struct hyp_page *p)
 	}
 }
 
-void *hyp_alloc_pages(struct hyp_pool *pool, unsigned short order)
+void *hyp_alloc_pages(struct hyp_pool *pool, u8 order)
 {
-	unsigned short i = order;
 	struct hyp_page *p;
+	u8 i = order;
 
 	hyp_spin_lock(&pool->lock);
 
@@ -249,10 +236,8 @@ int hyp_pool_init(struct hyp_pool *pool, u64 pfn, unsigned int nr_pages,
 
 	/* Init the vmemmap portion */
 	p = hyp_phys_to_page(phys);
-	for (i = 0; i < nr_pages; i++) {
-		p[i].order = 0;
+	for (i = 0; i < nr_pages; i++)
 		hyp_set_page_refcounted(&p[i]);
-	}
 
 	/* Attach the unused pages to the buddy tree */
 	for (i = reserved_pages; i < nr_pages; i++)
diff --git a/arch/arm64/kvm/hyp/nvhe/pkvm.c b/arch/arm64/kvm/hyp/nvhe/pkvm.c
index 85d3b7a..bb25de6 100644
--- a/arch/arm64/kvm/hyp/nvhe/pkvm.c
+++ b/arch/arm64/kvm/hyp/nvhe/pkvm.c
@@ -6,9 +6,70 @@
 
 #include <linux/kvm_host.h>
 #include <linux/mm.h>
-#include <nvhe/fixed_config.h>
+
+#include <kvm/arm_hypercalls.h>
+#include <kvm/arm_psci.h>
+
+#include <asm/kvm_emulate.h>
+
+#include <nvhe/arm-smccc.h>
+#include <nvhe/mem_protect.h>
+#include <nvhe/memory.h>
+#include <nvhe/mm.h>
+#include <nvhe/pkvm.h>
 #include <nvhe/trap_handler.h>
 
+/* Used by icache_is_vpipt(). */
+unsigned long __icache_flags;
+
+/* Used by kvm_get_vttbr(). */
+unsigned int kvm_arm_vmid_bits;
+
+unsigned int kvm_host_sve_max_vl;
+
+/*
+ * The currently loaded hyp vCPU for each physical CPU. Used only when
+ * protected KVM is enabled, but for both protected and non-protected VMs.
+ */
+static DEFINE_PER_CPU(struct pkvm_hyp_vcpu *, loaded_hyp_vcpu);
+
+/*
+ * Host fp state for all cpus. This could include the host simd state, as well
+ * as the sve and sme states if supported. Written to when the guest accesses
+ * its own FPSIMD state, and read when the guest state is live and we need to
+ * switch back to the host.
+ *
+ * Only valid when (fp_state == FP_STATE_GUEST_OWNED) in the hyp vCPU structure.
+ */
+void *host_fp_state;
+
+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;
+}
+
+struct user_fpsimd_state *get_host_fpsimd_state(struct kvm_vcpu *vcpu)
+{
+	if (likely(!is_protected_kvm_enabled()))
+		return vcpu->arch.host_fpsimd_state;
+
+	WARN_ON(system_supports_sve());
+	return __get_host_fpsimd_bytes();
+}
+
+struct kvm_host_sve_state *get_host_sve_state(struct kvm_vcpu *vcpu)
+{
+	WARN_ON(!system_supports_sve());
+	WARN_ON(!is_protected_kvm_enabled());
+	return __get_host_fpsimd_bytes();
+}
+
 /*
  * Set trap register values based on features in ID_AA64PFR0.
  */
@@ -94,7 +155,7 @@ static void pvm_init_traps_aa64dfr0(struct kvm_vcpu *vcpu)
 
 	/* Trap Debug */
 	if (!FIELD_GET(ARM64_FEATURE_MASK(ID_AA64DFR0_EL1_DebugVer), feature_ids))
-		mdcr_set |= MDCR_EL2_TDRA | MDCR_EL2_TDA | MDCR_EL2_TDE;
+		mdcr_set |= MDCR_EL2_TDRA | MDCR_EL2_TDA;
 
 	/* Trap OS Double Lock */
 	if (!FIELD_GET(ARM64_FEATURE_MASK(ID_AA64DFR0_EL1_DoubleLock), feature_ids))
@@ -154,32 +215,1358 @@ static void pvm_init_traps_aa64mmfr1(struct kvm_vcpu *vcpu)
  */
 static void pvm_init_trap_regs(struct kvm_vcpu *vcpu)
 {
-	const u64 hcr_trap_feat_regs = HCR_TID3;
-	const u64 hcr_trap_impdef = HCR_TACR | HCR_TIDCP | HCR_TID1;
-
 	/*
 	 * Always trap:
 	 * - Feature id registers: to control features exposed to guests
 	 * - Implementation-defined features
 	 */
-	vcpu->arch.hcr_el2 |= hcr_trap_feat_regs | hcr_trap_impdef;
+	vcpu->arch.hcr_el2 = HCR_GUEST_FLAGS |
+			     HCR_TID3 | HCR_TACR | HCR_TIDCP | HCR_TID1;
 
-	/* Clear res0 and set res1 bits to trap potential new features. */
-	vcpu->arch.hcr_el2 &= ~(HCR_RES0);
-	vcpu->arch.mdcr_el2 &= ~(MDCR_EL2_RES0);
-	vcpu->arch.cptr_el2 |= CPTR_NVHE_EL2_RES1;
-	vcpu->arch.cptr_el2 &= ~(CPTR_NVHE_EL2_RES0);
+	if (cpus_have_const_cap(ARM64_HAS_RAS_EXTN)) {
+		/* route synchronous external abort exceptions to EL2 */
+		vcpu->arch.hcr_el2 |= HCR_TEA;
+		/* trap error record accesses */
+		vcpu->arch.hcr_el2 |= HCR_TERR;
+	}
+
+	if (cpus_have_const_cap(ARM64_HAS_STAGE2_FWB))
+		vcpu->arch.hcr_el2 |= HCR_FWB;
+
+	if (cpus_have_const_cap(ARM64_MISMATCHED_CACHE_TYPE))
+		vcpu->arch.hcr_el2 |= HCR_TID2;
 }
 
 /*
  * Initialize trap register values for protected VMs.
  */
-void __pkvm_vcpu_init_traps(struct kvm_vcpu *vcpu)
+static void pkvm_vcpu_init_traps(struct pkvm_hyp_vcpu *hyp_vcpu)
 {
-	pvm_init_trap_regs(vcpu);
-	pvm_init_traps_aa64pfr0(vcpu);
-	pvm_init_traps_aa64pfr1(vcpu);
-	pvm_init_traps_aa64dfr0(vcpu);
-	pvm_init_traps_aa64mmfr0(vcpu);
-	pvm_init_traps_aa64mmfr1(vcpu);
+	hyp_vcpu->vcpu.arch.cptr_el2 = CPTR_EL2_DEFAULT;
+	hyp_vcpu->vcpu.arch.mdcr_el2 = 0;
+
+	if (!pkvm_hyp_vcpu_is_protected(hyp_vcpu)) {
+		u64 hcr = READ_ONCE(hyp_vcpu->host_vcpu->arch.hcr_el2);
+
+		hyp_vcpu->vcpu.arch.hcr_el2 = HCR_GUEST_FLAGS | hcr;
+		return;
+	}
+
+	pvm_init_trap_regs(&hyp_vcpu->vcpu);
+	pvm_init_traps_aa64pfr0(&hyp_vcpu->vcpu);
+	pvm_init_traps_aa64pfr1(&hyp_vcpu->vcpu);
+	pvm_init_traps_aa64dfr0(&hyp_vcpu->vcpu);
+	pvm_init_traps_aa64mmfr0(&hyp_vcpu->vcpu);
+	pvm_init_traps_aa64mmfr1(&hyp_vcpu->vcpu);
+}
+
+/*
+ * Start the VM table handle at the offset defined instead of at 0.
+ * Mainly for sanity checking and debugging.
+ */
+#define HANDLE_OFFSET 0x1000
+
+static unsigned int vm_handle_to_idx(pkvm_handle_t handle)
+{
+	return handle - HANDLE_OFFSET;
+}
+
+static pkvm_handle_t idx_to_vm_handle(unsigned int idx)
+{
+	return idx + HANDLE_OFFSET;
+}
+
+/*
+ * Spinlock for protecting state related to the VM table. Protects writes
+ * to 'vm_table' and 'nr_table_entries' as well as reads and writes to
+ * 'last_hyp_vcpu_lookup'.
+ */
+static DEFINE_HYP_SPINLOCK(vm_table_lock);
+
+/*
+ * The table of VM entries for protected VMs in hyp.
+ * Allocated at hyp initialization and setup.
+ */
+static struct pkvm_hyp_vm **vm_table;
+
+void pkvm_hyp_vm_table_init(void *tbl)
+{
+	WARN_ON(vm_table);
+	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.
+ */
+static struct pkvm_hyp_vm *get_vm_by_handle(pkvm_handle_t handle)
+{
+	unsigned int idx = vm_handle_to_idx(handle);
+
+	if (unlikely(idx >= KVM_MAX_PVMS))
+		return NULL;
+
+	return vm_table[idx];
+}
+
+int __pkvm_reclaim_dying_guest_page(pkvm_handle_t handle, u64 pfn, u64 ipa)
+{
+	struct pkvm_hyp_vm *hyp_vm;
+	int ret = -EINVAL;
+
+	hyp_spin_lock(&vm_table_lock);
+	hyp_vm = get_vm_by_handle(handle);
+	if (!hyp_vm || !hyp_vm->is_dying)
+		goto unlock;
+
+	ret = __pkvm_host_reclaim_page(hyp_vm, pfn, ipa);
+	if (ret)
+		goto unlock;
+
+	drain_hyp_pool(hyp_vm, &hyp_vm->host_kvm->arch.pkvm.teardown_stage2_mc);
+unlock:
+	hyp_spin_unlock(&vm_table_lock);
+
+	return ret;
+}
+
+struct pkvm_hyp_vcpu *pkvm_load_hyp_vcpu(pkvm_handle_t handle,
+					 unsigned int vcpu_idx)
+{
+	struct pkvm_hyp_vcpu *hyp_vcpu = NULL;
+	struct pkvm_hyp_vm *hyp_vm;
+
+	/* Cannot load a new vcpu without putting the old one first. */
+	if (__this_cpu_read(loaded_hyp_vcpu))
+		return NULL;
+
+	hyp_spin_lock(&vm_table_lock);
+	hyp_vm = get_vm_by_handle(handle);
+	if (!hyp_vm || hyp_vm->is_dying || hyp_vm->nr_vcpus <= vcpu_idx)
+		goto unlock;
+
+	hyp_vcpu = hyp_vm->vcpus[vcpu_idx];
+
+	/* Ensure vcpu isn't loaded on more than one cpu simultaneously. */
+	if (unlikely(hyp_vcpu->loaded_hyp_vcpu)) {
+		hyp_vcpu = NULL;
+		goto unlock;
+	}
+
+	hyp_vcpu->loaded_hyp_vcpu = this_cpu_ptr(&loaded_hyp_vcpu);
+	hyp_page_ref_inc(hyp_virt_to_page(hyp_vm));
+unlock:
+	hyp_spin_unlock(&vm_table_lock);
+
+	if (hyp_vcpu)
+		__this_cpu_write(loaded_hyp_vcpu, hyp_vcpu);
+	return hyp_vcpu;
+}
+
+void pkvm_put_hyp_vcpu(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	struct pkvm_hyp_vm *hyp_vm = pkvm_hyp_vcpu_to_hyp_vm(hyp_vcpu);
+
+	hyp_spin_lock(&vm_table_lock);
+	hyp_vcpu->loaded_hyp_vcpu = NULL;
+	__this_cpu_write(loaded_hyp_vcpu, NULL);
+	hyp_page_ref_dec(hyp_virt_to_page(hyp_vm));
+	hyp_spin_unlock(&vm_table_lock);
+}
+
+struct pkvm_hyp_vcpu *pkvm_get_loaded_hyp_vcpu(void)
+{
+	return __this_cpu_read(loaded_hyp_vcpu);
+}
+
+static void pkvm_vcpu_init_features_from_host(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	struct kvm_vcpu *host_vcpu = hyp_vcpu->host_vcpu;
+	DECLARE_BITMAP(allowed_features, KVM_VCPU_MAX_FEATURES);
+
+	/* No restrictions for non-protected VMs. */
+	if (!pkvm_hyp_vcpu_is_protected(hyp_vcpu)) {
+		bitmap_copy(hyp_vcpu->vcpu.arch.features,
+			    host_vcpu->arch.features,
+			    KVM_VCPU_MAX_FEATURES);
+		return;
+	}
+
+	bitmap_zero(allowed_features, KVM_VCPU_MAX_FEATURES);
+
+	/*
+	 * For protected vms, always allow:
+	 * - CPU starting in poweroff state
+	 * - PSCI v0.2
+	 */
+	set_bit(KVM_ARM_VCPU_POWER_OFF, allowed_features);
+	set_bit(KVM_ARM_VCPU_PSCI_0_2, allowed_features);
+
+	/*
+	 * Check if remaining features are allowed:
+	 * - Performance Monitoring
+	 * - Scalable Vectors
+	 * - Pointer Authentication
+	 */
+	if (FIELD_GET(ARM64_FEATURE_MASK(ID_AA64DFR0_EL1_PMUVer), PVM_ID_AA64DFR0_ALLOW))
+		set_bit(KVM_ARM_VCPU_PMU_V3, allowed_features);
+
+	if (FIELD_GET(ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_SVE), PVM_ID_AA64PFR0_ALLOW))
+		set_bit(KVM_ARM_VCPU_SVE, allowed_features);
+
+	if (FIELD_GET(ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_API), PVM_ID_AA64ISAR1_ALLOW) &&
+	    FIELD_GET(ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_APA), PVM_ID_AA64ISAR1_ALLOW))
+		set_bit(KVM_ARM_VCPU_PTRAUTH_ADDRESS, allowed_features);
+
+	if (FIELD_GET(ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_GPI), PVM_ID_AA64ISAR1_ALLOW) &&
+	    FIELD_GET(ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_GPA), PVM_ID_AA64ISAR1_ALLOW))
+		set_bit(KVM_ARM_VCPU_PTRAUTH_GENERIC, allowed_features);
+
+	bitmap_and(hyp_vcpu->vcpu.arch.features, host_vcpu->arch.features,
+		   allowed_features, KVM_VCPU_MAX_FEATURES);
+
+	/*
+	 * Now sanitise the configuration flags that we have inherited
+	 * from the host, as they may refer to features that protected
+	 * mode doesn't support.
+	 */
+	if (!vcpu_has_feature(&hyp_vcpu->vcpu,(KVM_ARM_VCPU_SVE))) {
+		vcpu_clear_flag(&hyp_vcpu->vcpu, GUEST_HAS_SVE);
+		vcpu_clear_flag(&hyp_vcpu->vcpu, VCPU_SVE_FINALIZED);
+	}
+
+	if (!vcpu_has_feature(&hyp_vcpu->vcpu, KVM_ARM_VCPU_PTRAUTH_ADDRESS) ||
+	    !vcpu_has_feature(&hyp_vcpu->vcpu, KVM_ARM_VCPU_PTRAUTH_GENERIC))
+		vcpu_clear_flag(&hyp_vcpu->vcpu, GUEST_HAS_PTRAUTH);
+}
+
+static int pkvm_vcpu_init_ptrauth(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	struct kvm_vcpu *vcpu = &hyp_vcpu->vcpu;
+	int ret = 0;
+
+	if (test_bit(KVM_ARM_VCPU_PTRAUTH_ADDRESS, vcpu->arch.features) ||
+	    test_bit(KVM_ARM_VCPU_PTRAUTH_GENERIC, vcpu->arch.features))
+		ret = kvm_vcpu_enable_ptrauth(vcpu);
+
+	return ret;
+}
+
+static int pkvm_vcpu_init_psci(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	struct vcpu_reset_state *reset_state = &hyp_vcpu->vcpu.arch.reset_state;
+	struct pkvm_hyp_vm *hyp_vm = pkvm_hyp_vcpu_to_hyp_vm(hyp_vcpu);
+
+	if (test_bit(KVM_ARM_VCPU_POWER_OFF, hyp_vcpu->vcpu.arch.features)) {
+		reset_state->reset = false;
+		hyp_vcpu->power_state = PSCI_0_2_AFFINITY_LEVEL_OFF;
+	} else if (pkvm_hyp_vm_has_pvmfw(hyp_vm)) {
+		if (hyp_vm->pvmfw_entry_vcpu)
+			return -EINVAL;
+
+		hyp_vm->pvmfw_entry_vcpu = hyp_vcpu;
+		reset_state->reset = true;
+		hyp_vcpu->power_state = PSCI_0_2_AFFINITY_LEVEL_ON_PENDING;
+	} else {
+		struct kvm_vcpu *host_vcpu = hyp_vcpu->host_vcpu;
+
+		reset_state->pc = READ_ONCE(host_vcpu->arch.ctxt.regs.pc);
+		reset_state->r0 = READ_ONCE(host_vcpu->arch.ctxt.regs.regs[0]);
+		reset_state->reset = true;
+		hyp_vcpu->power_state = PSCI_0_2_AFFINITY_LEVEL_ON_PENDING;
+	}
+
+	return 0;
+}
+
+static void unpin_host_vcpu(struct kvm_vcpu *host_vcpu)
+{
+	if (host_vcpu)
+		hyp_unpin_shared_mem(host_vcpu, host_vcpu + 1);
+}
+
+static void unpin_host_sve_state(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	void *sve_state;
+
+	if (!test_bit(KVM_ARM_VCPU_SVE, hyp_vcpu->vcpu.arch.features))
+		return;
+
+	sve_state = kern_hyp_va(hyp_vcpu->vcpu.arch.sve_state);
+	hyp_unpin_shared_mem(sve_state,
+			     sve_state + vcpu_sve_state_size(&hyp_vcpu->vcpu));
+}
+
+static void unpin_host_vcpus(struct pkvm_hyp_vcpu *hyp_vcpus[],
+			     unsigned int nr_vcpus)
+{
+	int i;
+
+	for (i = 0; i < nr_vcpus; i++) {
+		struct pkvm_hyp_vcpu *hyp_vcpu = hyp_vcpus[i];
+
+		unpin_host_vcpu(hyp_vcpu->host_vcpu);
+		unpin_host_sve_state(hyp_vcpu);
+	}
+}
+
+static size_t pkvm_get_last_ran_size(void)
+{
+	return array_size(hyp_nr_cpus, sizeof(int));
+}
+
+static void init_pkvm_hyp_vm(struct kvm *host_kvm, struct pkvm_hyp_vm *hyp_vm,
+			     int *last_ran, unsigned int nr_vcpus)
+{
+	u64 pvmfw_load_addr = PVMFW_INVALID_LOAD_ADDR;
+
+	hyp_vm->host_kvm = host_kvm;
+	hyp_vm->kvm.created_vcpus = nr_vcpus;
+	hyp_vm->kvm.arch.vtcr = host_mmu.arch.vtcr;
+	hyp_vm->kvm.arch.pkvm.enabled = READ_ONCE(host_kvm->arch.pkvm.enabled);
+
+	if (hyp_vm->kvm.arch.pkvm.enabled)
+		pvmfw_load_addr = READ_ONCE(host_kvm->arch.pkvm.pvmfw_load_addr);
+	hyp_vm->kvm.arch.pkvm.pvmfw_load_addr = pvmfw_load_addr;
+
+	hyp_vm->kvm.arch.mmu.last_vcpu_ran = (int __percpu *)last_ran;
+	memset(last_ran, -1, pkvm_get_last_ran_size());
+}
+
+static int init_pkvm_hyp_vcpu(struct pkvm_hyp_vcpu *hyp_vcpu,
+			      struct pkvm_hyp_vm *hyp_vm,
+			      struct kvm_vcpu *host_vcpu,
+			      unsigned int vcpu_idx)
+{
+	int ret = 0;
+
+	if (hyp_pin_shared_mem(host_vcpu, host_vcpu + 1))
+		return -EBUSY;
+
+	if (host_vcpu->vcpu_idx != vcpu_idx) {
+		ret = -EINVAL;
+		goto done;
+	}
+
+	hyp_vcpu->host_vcpu = host_vcpu;
+
+	hyp_vcpu->vcpu.kvm = &hyp_vm->kvm;
+	hyp_vcpu->vcpu.vcpu_id = READ_ONCE(host_vcpu->vcpu_id);
+	hyp_vcpu->vcpu.vcpu_idx = vcpu_idx;
+
+	hyp_vcpu->vcpu.arch.hw_mmu = &hyp_vm->kvm.arch.mmu;
+	hyp_vcpu->vcpu.arch.cflags = READ_ONCE(host_vcpu->arch.cflags);
+	hyp_vcpu->vcpu.arch.mp_state.mp_state = KVM_MP_STATE_STOPPED;
+	hyp_vcpu->vcpu.arch.debug_ptr = &host_vcpu->arch.vcpu_debug_state;
+
+	pkvm_vcpu_init_features_from_host(hyp_vcpu);
+
+	ret = pkvm_vcpu_init_ptrauth(hyp_vcpu);
+	if (ret)
+		goto done;
+
+	ret = pkvm_vcpu_init_psci(hyp_vcpu);
+	if (ret)
+		goto done;
+
+	if (test_bit(KVM_ARM_VCPU_SVE, hyp_vcpu->vcpu.arch.features)) {
+		size_t sve_state_size;
+		void *sve_state;
+
+		hyp_vcpu->vcpu.arch.sve_state = READ_ONCE(host_vcpu->arch.sve_state);
+		hyp_vcpu->vcpu.arch.sve_max_vl = READ_ONCE(host_vcpu->arch.sve_max_vl);
+
+		sve_state = kern_hyp_va(hyp_vcpu->vcpu.arch.sve_state);
+		sve_state_size = vcpu_sve_state_size(&hyp_vcpu->vcpu);
+
+		if (!hyp_vcpu->vcpu.arch.sve_state || !sve_state_size ||
+		    hyp_pin_shared_mem(sve_state, sve_state + sve_state_size)) {
+			clear_bit(KVM_ARM_VCPU_SVE, hyp_vcpu->vcpu.arch.features);
+			hyp_vcpu->vcpu.arch.sve_state = NULL;
+			hyp_vcpu->vcpu.arch.sve_max_vl = 0;
+			ret = -EINVAL;
+			goto done;
+		}
+	}
+
+	pkvm_vcpu_init_traps(hyp_vcpu);
+	kvm_reset_pvm_sys_regs(&hyp_vcpu->vcpu);
+done:
+	if (ret)
+		unpin_host_vcpu(host_vcpu);
+	return ret;
+}
+
+static int find_free_vm_table_entry(struct kvm *host_kvm)
+{
+	int i;
+
+	for (i = 0; i < KVM_MAX_PVMS; ++i) {
+		if (!vm_table[i])
+			return i;
+	}
+
+	return -ENOMEM;
+}
+
+/*
+ * Allocate a VM table entry and insert a pointer to the new vm.
+ *
+ * Return a unique handle to the protected VM on success,
+ * negative error code on failure.
+ */
+static pkvm_handle_t insert_vm_table_entry(struct kvm *host_kvm,
+					   struct pkvm_hyp_vm *hyp_vm)
+{
+	struct kvm_s2_mmu *mmu = &hyp_vm->kvm.arch.mmu;
+	int idx;
+
+	hyp_assert_lock_held(&vm_table_lock);
+
+	/*
+	 * Initializing protected state might have failed, yet a malicious
+	 * host could trigger this function. Thus, ensure that 'vm_table'
+	 * exists.
+	 */
+	if (unlikely(!vm_table))
+		return -EINVAL;
+
+	idx = find_free_vm_table_entry(host_kvm);
+	if (idx < 0)
+		return idx;
+
+	hyp_vm->kvm.arch.pkvm.handle = idx_to_vm_handle(idx);
+
+	/* VMID 0 is reserved for the host */
+	atomic64_set(&mmu->vmid.id, idx + 1);
+
+	mmu->arch = &hyp_vm->kvm.arch;
+	mmu->pgt = &hyp_vm->pgt;
+
+	vm_table[idx] = hyp_vm;
+	return hyp_vm->kvm.arch.pkvm.handle;
+}
+
+/*
+ * Deallocate and remove the VM table entry corresponding to the handle.
+ */
+static void remove_vm_table_entry(pkvm_handle_t handle)
+{
+	hyp_assert_lock_held(&vm_table_lock);
+	vm_table[vm_handle_to_idx(handle)] = NULL;
+}
+
+static size_t pkvm_get_hyp_vm_size(unsigned int nr_vcpus)
+{
+	return size_add(sizeof(struct pkvm_hyp_vm),
+		size_mul(sizeof(struct pkvm_hyp_vcpu *), nr_vcpus));
+}
+
+static void *map_donated_memory_noclear(unsigned long host_va, size_t size)
+{
+	void *va = (void *)kern_hyp_va(host_va);
+
+	if (!PAGE_ALIGNED(va))
+		return NULL;
+
+	if (__pkvm_host_donate_hyp(hyp_virt_to_pfn(va),
+				   PAGE_ALIGN(size) >> PAGE_SHIFT))
+		return NULL;
+
+	return va;
+}
+
+static void *map_donated_memory(unsigned long host_va, size_t size)
+{
+	void *va = map_donated_memory_noclear(host_va, size);
+
+	if (va)
+		memset(va, 0, size);
+
+	return va;
+}
+
+static void __unmap_donated_memory(void *va, size_t size)
+{
+	kvm_flush_dcache_to_poc(va, size);
+	WARN_ON(__pkvm_hyp_donate_host(hyp_virt_to_pfn(va),
+				       PAGE_ALIGN(size) >> PAGE_SHIFT));
+}
+
+static void unmap_donated_memory(void *va, size_t size)
+{
+	if (!va)
+		return;
+
+	memset(va, 0, size);
+	__unmap_donated_memory(va, size);
+}
+
+static void unmap_donated_memory_noclear(void *va, size_t size)
+{
+	if (!va)
+		return;
+
+	__unmap_donated_memory(va, size);
+}
+
+/*
+ * Initialize the hypervisor copy of the protected VM state using the
+ * memory donated by the host.
+ *
+ * Unmaps the donated memory from the host at stage 2.
+ *
+ * host_kvm: A pointer to the host's struct kvm.
+ * vm_hva: The host va of the area being donated for the VM state.
+ *	   Must be page aligned.
+ * pgd_hva: The host va of the area being donated for the stage-2 PGD for
+ *	    the VM. Must be page aligned. Its size is implied by the VM's
+ *	    VTCR.
+ * last_ran_hva: The host va of the area being donated for hyp to use to track
+ *		 the most recent physical cpu on which each vcpu has run.
+ * Return a unique handle to the protected VM on success,
+ * negative error code on failure.
+ */
+int __pkvm_init_vm(struct kvm *host_kvm, unsigned long vm_hva,
+		   unsigned long pgd_hva, unsigned long last_ran_hva)
+{
+	struct pkvm_hyp_vm *hyp_vm = NULL;
+	int *last_ran = NULL;
+	size_t vm_size, pgd_size, last_ran_size;
+	unsigned int nr_vcpus;
+	void *pgd = NULL;
+	int ret;
+
+	ret = hyp_pin_shared_mem(host_kvm, host_kvm + 1);
+	if (ret)
+		return ret;
+
+	nr_vcpus = READ_ONCE(host_kvm->created_vcpus);
+	if (nr_vcpus < 1) {
+		ret = -EINVAL;
+		goto err_unpin_kvm;
+	}
+
+	vm_size = pkvm_get_hyp_vm_size(nr_vcpus);
+	last_ran_size = pkvm_get_last_ran_size();
+	pgd_size = kvm_pgtable_stage2_pgd_size(host_mmu.arch.vtcr);
+
+	ret = -ENOMEM;
+
+	hyp_vm = map_donated_memory(vm_hva, vm_size);
+	if (!hyp_vm)
+		goto err_remove_mappings;
+
+	last_ran = map_donated_memory(last_ran_hva, last_ran_size);
+	if (!last_ran)
+		goto err_remove_mappings;
+
+	pgd = map_donated_memory_noclear(pgd_hva, pgd_size);
+	if (!pgd)
+		goto err_remove_mappings;
+
+	init_pkvm_hyp_vm(host_kvm, hyp_vm, last_ran, nr_vcpus);
+
+	hyp_spin_lock(&vm_table_lock);
+	ret = insert_vm_table_entry(host_kvm, hyp_vm);
+	if (ret < 0)
+		goto err_unlock;
+
+	ret = kvm_guest_prepare_stage2(hyp_vm, pgd);
+	if (ret)
+		goto err_remove_vm_table_entry;
+	hyp_spin_unlock(&vm_table_lock);
+
+	return hyp_vm->kvm.arch.pkvm.handle;
+
+err_remove_vm_table_entry:
+	remove_vm_table_entry(hyp_vm->kvm.arch.pkvm.handle);
+err_unlock:
+	hyp_spin_unlock(&vm_table_lock);
+err_remove_mappings:
+	unmap_donated_memory(hyp_vm, vm_size);
+	unmap_donated_memory(last_ran, last_ran_size);
+	unmap_donated_memory(pgd, pgd_size);
+err_unpin_kvm:
+	hyp_unpin_shared_mem(host_kvm, host_kvm + 1);
+	return ret;
+}
+
+/*
+ * Initialize the hypervisor copy of the protected vCPU state using the
+ * memory donated by the host.
+ *
+ * handle: The handle for the protected vm.
+ * host_vcpu: A pointer to the corresponding host vcpu.
+ * vcpu_hva: The host va of the area being donated for the vcpu state.
+ *	     Must be page aligned. The size of the area must be equal to
+ *	     the page-aligned size of 'struct pkvm_hyp_vcpu'.
+ * Return 0 on success, negative error code on failure.
+ */
+int __pkvm_init_vcpu(pkvm_handle_t handle, struct kvm_vcpu *host_vcpu,
+		     unsigned long vcpu_hva)
+{
+	struct pkvm_hyp_vcpu *hyp_vcpu;
+	struct pkvm_hyp_vm *hyp_vm;
+	unsigned int idx;
+	int ret;
+
+	hyp_vcpu = map_donated_memory(vcpu_hva, sizeof(*hyp_vcpu));
+	if (!hyp_vcpu)
+		return -ENOMEM;
+
+	hyp_spin_lock(&vm_table_lock);
+
+	hyp_vm = get_vm_by_handle(handle);
+	if (!hyp_vm) {
+		ret = -ENOENT;
+		goto unlock;
+	}
+
+	idx = hyp_vm->nr_vcpus;
+	if (idx >= hyp_vm->kvm.created_vcpus) {
+		ret = -EINVAL;
+		goto unlock;
+	}
+
+	ret = init_pkvm_hyp_vcpu(hyp_vcpu, hyp_vm, host_vcpu, idx);
+	if (ret)
+		goto unlock;
+
+	hyp_vm->vcpus[idx] = hyp_vcpu;
+	hyp_vm->nr_vcpus++;
+unlock:
+	hyp_spin_unlock(&vm_table_lock);
+
+	if (ret)
+		unmap_donated_memory(hyp_vcpu, sizeof(*hyp_vcpu));
+
+	return ret;
+}
+
+static void
+teardown_donated_memory(struct kvm_hyp_memcache *mc, void *addr, size_t size)
+{
+	void *start;
+
+	size = PAGE_ALIGN(size);
+	memset(addr, 0, size);
+
+	for (start = addr; start < addr + size; start += PAGE_SIZE)
+		push_hyp_memcache(mc, start, hyp_virt_to_phys);
+
+	unmap_donated_memory_noclear(addr, size);
+}
+
+int __pkvm_start_teardown_vm(pkvm_handle_t handle)
+{
+	struct pkvm_hyp_vm *hyp_vm;
+	int ret = 0;
+
+	hyp_spin_lock(&vm_table_lock);
+	hyp_vm = get_vm_by_handle(handle);
+	if (!hyp_vm) {
+		ret = -ENOENT;
+		goto unlock;
+	} else if (WARN_ON(hyp_page_count(hyp_vm))) {
+		ret = -EBUSY;
+		goto unlock;
+	} else if (hyp_vm->is_dying) {
+		ret = -EINVAL;
+		goto unlock;
+	}
+
+	hyp_vm->is_dying = true;
+
+unlock:
+	hyp_spin_unlock(&vm_table_lock);
+
+	return ret;
+}
+
+int __pkvm_finalize_teardown_vm(pkvm_handle_t handle)
+{
+	struct kvm_hyp_memcache *mc, *stage2_mc;
+	size_t vm_size, last_ran_size;
+	int __percpu *last_vcpu_ran;
+	struct pkvm_hyp_vm *hyp_vm;
+	struct kvm *host_kvm;
+	unsigned int idx;
+	int err;
+
+	hyp_spin_lock(&vm_table_lock);
+	hyp_vm = get_vm_by_handle(handle);
+	if (!hyp_vm) {
+		err = -ENOENT;
+		goto err_unlock;
+	} else if (!hyp_vm->is_dying) {
+		err = -EBUSY;
+		goto err_unlock;
+	}
+
+	host_kvm = hyp_vm->host_kvm;
+
+	/* Ensure the VMID is clean before it can be reallocated */
+	__kvm_tlb_flush_vmid(&hyp_vm->kvm.arch.mmu);
+	remove_vm_table_entry(handle);
+	hyp_spin_unlock(&vm_table_lock);
+
+	mc = &host_kvm->arch.pkvm.teardown_mc;
+	stage2_mc = &host_kvm->arch.pkvm.teardown_stage2_mc;
+
+	destroy_hyp_vm_pgt(hyp_vm);
+	drain_hyp_pool(hyp_vm, stage2_mc);
+	unpin_host_vcpus(hyp_vm->vcpus, hyp_vm->nr_vcpus);
+
+	/* Push the metadata pages to the teardown memcache */
+	for (idx = 0; idx < hyp_vm->nr_vcpus; ++idx) {
+		struct pkvm_hyp_vcpu *hyp_vcpu = hyp_vm->vcpus[idx];
+		struct kvm_hyp_memcache *vcpu_mc;
+		void *addr;
+
+		vcpu_mc = &hyp_vcpu->vcpu.arch.pkvm_memcache;
+		while (vcpu_mc->nr_pages) {
+			addr = pop_hyp_memcache(vcpu_mc, hyp_phys_to_virt);
+			push_hyp_memcache(stage2_mc, addr, hyp_virt_to_phys);
+			unmap_donated_memory_noclear(addr, PAGE_SIZE);
+		}
+
+		teardown_donated_memory(mc, hyp_vcpu, sizeof(*hyp_vcpu));
+	}
+
+	last_vcpu_ran = hyp_vm->kvm.arch.mmu.last_vcpu_ran;
+	last_ran_size = pkvm_get_last_ran_size();
+	teardown_donated_memory(mc, (__force void *)last_vcpu_ran,
+				last_ran_size);
+
+	vm_size = pkvm_get_hyp_vm_size(hyp_vm->kvm.created_vcpus);
+	teardown_donated_memory(mc, hyp_vm, vm_size);
+	hyp_unpin_shared_mem(host_kvm, host_kvm + 1);
+	return 0;
+
+err_unlock:
+	hyp_spin_unlock(&vm_table_lock);
+	return err;
+}
+
+int pkvm_load_pvmfw_pages(struct pkvm_hyp_vm *vm, u64 ipa, phys_addr_t phys,
+			  u64 size)
+{
+	struct kvm_protected_vm *pkvm = &vm->kvm.arch.pkvm;
+	u64 npages, offset = ipa - pkvm->pvmfw_load_addr;
+	void *src = hyp_phys_to_virt(pvmfw_base) + offset;
+
+	if (offset >= pvmfw_size)
+		return -EINVAL;
+
+	size = min(size, pvmfw_size - offset);
+	if (!PAGE_ALIGNED(size) || !PAGE_ALIGNED(src))
+		return -EINVAL;
+
+	npages = size >> PAGE_SHIFT;
+	while (npages--) {
+		/*
+		 * No need for cache maintenance here, as the pgtable code will
+		 * take care of this when installing the pte in the guest's
+		 * stage-2 page table.
+		 */
+		memcpy(hyp_fixmap_map(phys), src, PAGE_SIZE);
+		hyp_fixmap_unmap();
+
+		src += PAGE_SIZE;
+		phys += PAGE_SIZE;
+	}
+
+	return 0;
+}
+
+void pkvm_poison_pvmfw_pages(void)
+{
+	u64 npages = pvmfw_size >> PAGE_SHIFT;
+	phys_addr_t addr = pvmfw_base;
+
+	while (npages--) {
+		hyp_poison_page(addr);
+		addr += PAGE_SIZE;
+	}
+}
+
+/*
+ * This function sets the registers on the vcpu to their architecturally defined
+ * reset values.
+ *
+ * Note: Can only be called by the vcpu on itself, after it has been turned on.
+ */
+void pkvm_reset_vcpu(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	struct vcpu_reset_state *reset_state = &hyp_vcpu->vcpu.arch.reset_state;
+	struct pkvm_hyp_vm *hyp_vm = pkvm_hyp_vcpu_to_hyp_vm(hyp_vcpu);
+
+	WARN_ON(!reset_state->reset);
+
+	pkvm_vcpu_init_ptrauth(hyp_vcpu);
+	kvm_reset_vcpu_core(&hyp_vcpu->vcpu);
+	kvm_reset_pvm_sys_regs(&hyp_vcpu->vcpu);
+
+	/* Must be done after reseting sys registers. */
+	kvm_reset_vcpu_psci(&hyp_vcpu->vcpu, reset_state);
+	if (hyp_vm->pvmfw_entry_vcpu == hyp_vcpu) {
+		struct kvm_vcpu *host_vcpu = hyp_vcpu->host_vcpu;
+		u64 entry = hyp_vm->kvm.arch.pkvm.pvmfw_load_addr;
+		int i;
+
+		/* X0 - X14 provided by the VMM (preserved) */
+		for (i = 0; i <= 14; ++i) {
+			u64 val = vcpu_get_reg(host_vcpu, i);
+
+			vcpu_set_reg(&hyp_vcpu->vcpu, i, val);
+		}
+
+		/* X15: Boot protocol version */
+		vcpu_set_reg(&hyp_vcpu->vcpu, 15, 0);
+
+		/* PC: IPA of pvmfw base */
+		*vcpu_pc(&hyp_vcpu->vcpu) = entry;
+		hyp_vm->pvmfw_entry_vcpu = NULL;
+
+		/* Auto enroll MMIO guard */
+		set_bit(KVM_ARCH_FLAG_MMIO_GUARD, &hyp_vm->kvm.arch.flags);
+	}
+
+	reset_state->reset = false;
+
+	hyp_vcpu->exit_code = 0;
+
+	WARN_ON(hyp_vcpu->power_state != PSCI_0_2_AFFINITY_LEVEL_ON_PENDING);
+	WRITE_ONCE(hyp_vcpu->vcpu.arch.mp_state.mp_state, KVM_MP_STATE_RUNNABLE);
+	WRITE_ONCE(hyp_vcpu->power_state, PSCI_0_2_AFFINITY_LEVEL_ON);
+}
+
+struct pkvm_hyp_vcpu *pkvm_mpidr_to_hyp_vcpu(struct pkvm_hyp_vm *hyp_vm,
+					     u64 mpidr)
+{
+	int i;
+
+	mpidr &= MPIDR_HWID_BITMASK;
+
+	for (i = 0; i < hyp_vm->nr_vcpus; i++) {
+		struct pkvm_hyp_vcpu *hyp_vcpu = hyp_vm->vcpus[i];
+
+		if (mpidr == kvm_vcpu_get_mpidr_aff(&hyp_vcpu->vcpu))
+			return hyp_vcpu;
+	}
+
+	return NULL;
+}
+
+/*
+ * Returns true if the hypervisor has handled the PSCI call, and control should
+ * go back to the guest, or false if the host needs to do some additional work
+ * (i.e., wake up the vcpu).
+ */
+static bool pvm_psci_vcpu_on(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	struct pkvm_hyp_vm *hyp_vm = pkvm_hyp_vcpu_to_hyp_vm(hyp_vcpu);
+	struct vcpu_reset_state *reset_state;
+	struct pkvm_hyp_vcpu *target;
+	unsigned long cpu_id, ret;
+	int power_state;
+
+	cpu_id = smccc_get_arg1(&hyp_vcpu->vcpu);
+	if (!kvm_psci_valid_affinity(&hyp_vcpu->vcpu, cpu_id)) {
+		ret = PSCI_RET_INVALID_PARAMS;
+		goto error;
+	}
+
+	target = pkvm_mpidr_to_hyp_vcpu(hyp_vm, cpu_id);
+	if (!target) {
+		ret = PSCI_RET_INVALID_PARAMS;
+		goto error;
+	}
+
+	/*
+	 * Make sure the requested vcpu is not on to begin with.
+	 * Atomic to avoid race between vcpus trying to power on the same vcpu.
+	 */
+	power_state = cmpxchg(&target->power_state,
+			      PSCI_0_2_AFFINITY_LEVEL_OFF,
+			      PSCI_0_2_AFFINITY_LEVEL_ON_PENDING);
+	switch (power_state) {
+	case PSCI_0_2_AFFINITY_LEVEL_ON_PENDING:
+		ret = PSCI_RET_ON_PENDING;
+		goto error;
+	case PSCI_0_2_AFFINITY_LEVEL_ON:
+		ret = PSCI_RET_ALREADY_ON;
+		goto error;
+	case PSCI_0_2_AFFINITY_LEVEL_OFF:
+		break;
+	default:
+		ret = PSCI_RET_INTERNAL_FAILURE;
+		goto error;
+	}
+
+	reset_state = &target->vcpu.arch.reset_state;
+	reset_state->pc = smccc_get_arg2(&hyp_vcpu->vcpu);
+	reset_state->r0 = smccc_get_arg3(&hyp_vcpu->vcpu);
+	/* Propagate caller endianness */
+	reset_state->be = kvm_vcpu_is_be(&hyp_vcpu->vcpu);
+	reset_state->reset = true;
+
+	/*
+	 * Return to the host, which should make the KVM_REQ_VCPU_RESET request
+	 * as well as kvm_vcpu_wake_up() to schedule the vcpu.
+	 */
+	return false;
+
+error:
+	/* If there's an error go back straight to the guest. */
+	smccc_set_retval(&hyp_vcpu->vcpu, ret, 0, 0, 0);
+	return true;
+}
+
+static bool pvm_psci_vcpu_affinity_info(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	unsigned long target_affinity_mask, target_affinity, lowest_affinity_level;
+	struct pkvm_hyp_vm *hyp_vm = pkvm_hyp_vcpu_to_hyp_vm(hyp_vcpu);
+	struct kvm_vcpu *vcpu = &hyp_vcpu->vcpu;
+	unsigned long mpidr, ret;
+	int i, matching_cpus = 0;
+
+	target_affinity = smccc_get_arg1(vcpu);
+	lowest_affinity_level = smccc_get_arg2(vcpu);
+	if (!kvm_psci_valid_affinity(vcpu, target_affinity)) {
+		ret = PSCI_RET_INVALID_PARAMS;
+		goto done;
+	}
+
+	/* Determine target affinity mask */
+	target_affinity_mask = psci_affinity_mask(lowest_affinity_level);
+	if (!target_affinity_mask) {
+		ret = PSCI_RET_INVALID_PARAMS;
+		goto done;
+	}
+
+	/* Ignore other bits of target affinity */
+	target_affinity &= target_affinity_mask;
+	ret = PSCI_0_2_AFFINITY_LEVEL_OFF;
+
+	/*
+	 * If at least one vcpu matching target affinity is ON then return ON,
+	 * then if at least one is PENDING_ON then return PENDING_ON.
+	 * Otherwise, return OFF.
+	 */
+	for (i = 0; i < hyp_vm->nr_vcpus; i++) {
+		struct pkvm_hyp_vcpu *target = hyp_vm->vcpus[i];
+
+		mpidr = kvm_vcpu_get_mpidr_aff(&target->vcpu);
+
+		if ((mpidr & target_affinity_mask) == target_affinity) {
+			int power_state;
+
+			matching_cpus++;
+			power_state = READ_ONCE(target->power_state);
+			switch (power_state) {
+			case PSCI_0_2_AFFINITY_LEVEL_ON_PENDING:
+				ret = PSCI_0_2_AFFINITY_LEVEL_ON_PENDING;
+				break;
+			case PSCI_0_2_AFFINITY_LEVEL_ON:
+				ret = PSCI_0_2_AFFINITY_LEVEL_ON;
+				goto done;
+			case PSCI_0_2_AFFINITY_LEVEL_OFF:
+				break;
+			default:
+				ret = PSCI_RET_INTERNAL_FAILURE;
+				goto done;
+			}
+		}
+	}
+
+	if (!matching_cpus)
+		ret = PSCI_RET_INVALID_PARAMS;
+
+done:
+	/* Nothing to be handled by the host. Go back to the guest. */
+	smccc_set_retval(vcpu, ret, 0, 0, 0);
+	return true;
+}
+
+/*
+ * Returns true if the hypervisor has handled the PSCI call, and control should
+ * go back to the guest, or false if the host needs to do some additional work
+ * (e.g., turn off and update vcpu scheduling status).
+ */
+static bool pvm_psci_vcpu_off(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	struct kvm_vcpu *vcpu = &hyp_vcpu->vcpu;
+
+	WARN_ON(vcpu->arch.mp_state.mp_state == KVM_MP_STATE_STOPPED);
+	WARN_ON(hyp_vcpu->power_state != PSCI_0_2_AFFINITY_LEVEL_ON);
+
+	WRITE_ONCE(vcpu->arch.mp_state.mp_state, KVM_MP_STATE_STOPPED);
+	WRITE_ONCE(hyp_vcpu->power_state, PSCI_0_2_AFFINITY_LEVEL_OFF);
+
+	/* Return to the host so that it can finish powering off the vcpu. */
+	return false;
+}
+
+static bool pvm_psci_version(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	/* Nothing to be handled by the host. Go back to the guest. */
+	smccc_set_retval(&hyp_vcpu->vcpu, KVM_ARM_PSCI_1_1, 0, 0, 0);
+	return true;
+}
+
+static bool pvm_psci_not_supported(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	/* Nothing to be handled by the host. Go back to the guest. */
+	smccc_set_retval(&hyp_vcpu->vcpu, PSCI_RET_NOT_SUPPORTED, 0, 0, 0);
+	return true;
+}
+
+static bool pvm_psci_features(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	struct kvm_vcpu *vcpu = &hyp_vcpu->vcpu;
+	u32 feature = smccc_get_arg1(vcpu);
+	unsigned long val;
+
+	switch (feature) {
+	case PSCI_0_2_FN_PSCI_VERSION:
+	case PSCI_0_2_FN_CPU_SUSPEND:
+	case PSCI_0_2_FN64_CPU_SUSPEND:
+	case PSCI_0_2_FN_CPU_OFF:
+	case PSCI_0_2_FN_CPU_ON:
+	case PSCI_0_2_FN64_CPU_ON:
+	case PSCI_0_2_FN_AFFINITY_INFO:
+	case PSCI_0_2_FN64_AFFINITY_INFO:
+	case PSCI_0_2_FN_SYSTEM_OFF:
+	case PSCI_0_2_FN_SYSTEM_RESET:
+	case PSCI_1_0_FN_PSCI_FEATURES:
+	case PSCI_1_1_FN_SYSTEM_RESET2:
+	case PSCI_1_1_FN64_SYSTEM_RESET2:
+	case ARM_SMCCC_VERSION_FUNC_ID:
+		val = PSCI_RET_SUCCESS;
+		break;
+	default:
+		val = PSCI_RET_NOT_SUPPORTED;
+		break;
+	}
+
+	/* Nothing to be handled by the host. Go back to the guest. */
+	smccc_set_retval(vcpu, val, 0, 0, 0);
+	return true;
+}
+
+static bool pkvm_handle_psci(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	struct kvm_vcpu *vcpu = &hyp_vcpu->vcpu;
+	u32 psci_fn = smccc_get_function(vcpu);
+
+	switch (psci_fn) {
+	case PSCI_0_2_FN_CPU_ON:
+		kvm_psci_narrow_to_32bit(vcpu);
+		fallthrough;
+	case PSCI_0_2_FN64_CPU_ON:
+		return pvm_psci_vcpu_on(hyp_vcpu);
+	case PSCI_0_2_FN_CPU_OFF:
+		return pvm_psci_vcpu_off(hyp_vcpu);
+	case PSCI_0_2_FN_AFFINITY_INFO:
+		kvm_psci_narrow_to_32bit(vcpu);
+		fallthrough;
+	case PSCI_0_2_FN64_AFFINITY_INFO:
+		return pvm_psci_vcpu_affinity_info(hyp_vcpu);
+	case PSCI_0_2_FN_PSCI_VERSION:
+		return pvm_psci_version(hyp_vcpu);
+	case PSCI_1_0_FN_PSCI_FEATURES:
+		return pvm_psci_features(hyp_vcpu);
+	case PSCI_0_2_FN_SYSTEM_RESET:
+	case PSCI_0_2_FN_CPU_SUSPEND:
+	case PSCI_0_2_FN64_CPU_SUSPEND:
+	case PSCI_0_2_FN_SYSTEM_OFF:
+	case PSCI_1_1_FN_SYSTEM_RESET2:
+	case PSCI_1_1_FN64_SYSTEM_RESET2:
+		return false; /* Handled by the host. */
+	default:
+		break;
+	}
+
+	return pvm_psci_not_supported(hyp_vcpu);
+}
+
+static u64 __pkvm_memshare_page_req(struct pkvm_hyp_vcpu *hyp_vcpu, u64 ipa)
+{
+	struct kvm_vcpu *vcpu = &hyp_vcpu->vcpu;
+	u64 elr;
+
+	/* Fake up a data abort (Level 3 translation fault on write) */
+	vcpu->arch.fault.esr_el2 = (u32)ESR_ELx_EC_DABT_LOW << ESR_ELx_EC_SHIFT |
+				   ESR_ELx_WNR | ESR_ELx_FSC_FAULT |
+				   FIELD_PREP(ESR_ELx_FSC_LEVEL, 3);
+
+	/* Shuffle the IPA around into the HPFAR */
+	vcpu->arch.fault.hpfar_el2 = (ipa >> 8) & HPFAR_MASK;
+
+	/* This is a virtual address. 0's good. Let's go with 0. */
+	vcpu->arch.fault.far_el2 = 0;
+
+	/* Rewind the ELR so we return to the HVC once the IPA is mapped */
+	elr = read_sysreg(elr_el2);
+	elr -= 4;
+	write_sysreg(elr, elr_el2);
+
+	return ARM_EXCEPTION_TRAP;
+}
+
+static bool pkvm_memshare_call(struct pkvm_hyp_vcpu *hyp_vcpu, u64 *exit_code)
+{
+	struct kvm_vcpu *vcpu = &hyp_vcpu->vcpu;
+	u64 ipa = smccc_get_arg1(vcpu);
+	u64 arg2 = smccc_get_arg2(vcpu);
+	u64 arg3 = smccc_get_arg3(vcpu);
+	int err;
+
+	if (arg2 || arg3)
+		goto out_guest_err;
+
+	err = __pkvm_guest_share_host(hyp_vcpu, ipa);
+	switch (err) {
+	case 0:
+		/* Success! Now tell the host. */
+		goto out_host;
+	case -EFAULT:
+		/*
+		 * Convert the exception into a data abort so that the page
+		 * being shared is mapped into the guest next time.
+		 */
+		*exit_code = __pkvm_memshare_page_req(hyp_vcpu, ipa);
+		goto out_host;
+	}
+
+out_guest_err:
+	smccc_set_retval(vcpu, SMCCC_RET_INVALID_PARAMETER, 0, 0, 0);
+	return true;
+
+out_host:
+	return false;
+}
+
+static bool pkvm_memunshare_call(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	struct kvm_vcpu *vcpu = &hyp_vcpu->vcpu;
+	u64 ipa = smccc_get_arg1(vcpu);
+	u64 arg2 = smccc_get_arg2(vcpu);
+	u64 arg3 = smccc_get_arg3(vcpu);
+	int err;
+
+	if (arg2 || arg3)
+		goto out_guest_err;
+
+	err = __pkvm_guest_unshare_host(hyp_vcpu, ipa);
+	if (err)
+		goto out_guest_err;
+
+	return false;
+
+out_guest_err:
+	smccc_set_retval(vcpu, SMCCC_RET_INVALID_PARAMETER, 0, 0, 0);
+	return true;
+}
+
+static bool pkvm_meminfo_call(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	struct kvm_vcpu *vcpu = &hyp_vcpu->vcpu;
+	u64 arg1 = smccc_get_arg1(vcpu);
+	u64 arg2 = smccc_get_arg2(vcpu);
+	u64 arg3 = smccc_get_arg3(vcpu);
+
+	if (arg1 || arg2 || arg3)
+		goto out_guest_err;
+
+	smccc_set_retval(vcpu, PAGE_SIZE, 0, 0, 0);
+	return true;
+
+out_guest_err:
+	smccc_set_retval(vcpu, SMCCC_RET_INVALID_PARAMETER, 0, 0, 0);
+	return true;
+}
+
+static bool pkvm_memrelinquish_call(struct pkvm_hyp_vcpu *hyp_vcpu)
+{
+	struct kvm_vcpu *vcpu = &hyp_vcpu->vcpu;
+	u64 ipa = smccc_get_arg1(vcpu);
+	u64 arg2 = smccc_get_arg2(vcpu);
+	u64 arg3 = smccc_get_arg3(vcpu);
+	u64 pa = 0;
+	int ret;
+
+	if (arg2 || arg3)
+		goto out_guest_err;
+
+	ret = __pkvm_guest_relinquish_to_host(hyp_vcpu, ipa, &pa);
+	if (ret)
+		goto out_guest_err;
+
+	if (pa != 0) {
+		/* Now pass to host. */
+		return false;
+	}
+
+	/* This was a NOP as no page was actually mapped at the IPA. */
+	smccc_set_retval(vcpu, 0, 0, 0, 0);
+	return true;
+
+out_guest_err:
+	smccc_set_retval(vcpu, SMCCC_RET_INVALID_PARAMETER, 0, 0, 0);
+	return true;
+}
+
+static bool pkvm_install_ioguard_page(struct pkvm_hyp_vcpu *hyp_vcpu, u64 *exit_code)
+{
+	u64 retval = SMCCC_RET_SUCCESS;
+	u64 ipa = smccc_get_arg1(&hyp_vcpu->vcpu);
+	int ret;
+
+	ret = __pkvm_install_ioguard_page(hyp_vcpu, ipa);
+	if (ret == -ENOMEM) {
+		/*
+		 * We ran out of memcache, let's ask for more. Cancel
+		 * the effects of the HVC that took us here, and
+		 * forward the hypercall to the host for page donation
+		 * purposes.
+		 */
+		write_sysreg_el2(read_sysreg_el2(SYS_ELR) - 4, SYS_ELR);
+		return false;
+	}
+
+	if (ret)
+		retval = SMCCC_RET_INVALID_PARAMETER;
+
+	smccc_set_retval(&hyp_vcpu->vcpu, retval, 0, 0, 0);
+	return true;
+}
+
+bool smccc_trng_available;
+
+static bool pkvm_forward_trng(struct kvm_vcpu *vcpu)
+{
+	u32 fn = smccc_get_function(vcpu);
+	struct arm_smccc_res res;
+	unsigned long arg1 = 0;
+
+	/*
+	 * Forward TRNG calls to EL3, as we can't trust the host to handle
+	 * these for us.
+	 */
+	switch (fn) {
+	case ARM_SMCCC_TRNG_FEATURES:
+	case ARM_SMCCC_TRNG_RND32:
+	case ARM_SMCCC_TRNG_RND64:
+		arg1 = smccc_get_arg1(vcpu);
+		fallthrough;
+	case ARM_SMCCC_TRNG_VERSION:
+	case ARM_SMCCC_TRNG_GET_UUID:
+		arm_smccc_1_1_smc(fn, arg1, &res);
+		smccc_set_retval(vcpu, res.a0, res.a1, res.a2, res.a3);
+		memzero_explicit(&res, sizeof(res));
+		break;
+	}
+
+	return true;
+}
+
+/*
+ * Handler for protected VM HVC calls.
+ *
+ * Returns true if the hypervisor has handled the exit, and control should go
+ * back to the guest, or false if it hasn't.
+ */
+bool kvm_handle_pvm_hvc64(struct kvm_vcpu *vcpu, u64 *exit_code)
+{
+	u64 val[4] = { SMCCC_RET_NOT_SUPPORTED };
+	u32 fn = smccc_get_function(vcpu);
+	struct pkvm_hyp_vcpu *hyp_vcpu;
+
+	hyp_vcpu = container_of(vcpu, struct pkvm_hyp_vcpu, vcpu);
+
+	switch (fn) {
+	case ARM_SMCCC_VERSION_FUNC_ID:
+		/* Nothing to be handled by the host. Go back to the guest. */
+		val[0] = ARM_SMCCC_VERSION_1_1;
+		break;
+	case ARM_SMCCC_VENDOR_HYP_CALL_UID_FUNC_ID:
+		val[0] = ARM_SMCCC_VENDOR_HYP_UID_KVM_REG_0;
+		val[1] = ARM_SMCCC_VENDOR_HYP_UID_KVM_REG_1;
+		val[2] = ARM_SMCCC_VENDOR_HYP_UID_KVM_REG_2;
+		val[3] = ARM_SMCCC_VENDOR_HYP_UID_KVM_REG_3;
+		break;
+	case ARM_SMCCC_VENDOR_HYP_KVM_FEATURES_FUNC_ID:
+		val[0] = BIT(ARM_SMCCC_KVM_FUNC_FEATURES);
+		val[0] |= BIT(ARM_SMCCC_KVM_FUNC_HYP_MEMINFO);
+		val[0] |= BIT(ARM_SMCCC_KVM_FUNC_MEM_SHARE);
+		val[0] |= BIT(ARM_SMCCC_KVM_FUNC_MEM_UNSHARE);
+		val[0] |= BIT(ARM_SMCCC_KVM_FUNC_MEM_RELINQUISH);
+		val[0] |= BIT(ARM_SMCCC_KVM_FUNC_MMIO_GUARD_INFO);
+		val[0] |= BIT(ARM_SMCCC_KVM_FUNC_MMIO_GUARD_ENROLL);
+		val[0] |= BIT(ARM_SMCCC_KVM_FUNC_MMIO_GUARD_MAP);
+		val[0] |= BIT(ARM_SMCCC_KVM_FUNC_MMIO_GUARD_UNMAP);
+		break;
+	case ARM_SMCCC_VENDOR_HYP_KVM_MMIO_GUARD_ENROLL_FUNC_ID:
+		set_bit(KVM_ARCH_FLAG_MMIO_GUARD, &vcpu->kvm->arch.flags);
+		val[0] = SMCCC_RET_SUCCESS;
+		break;
+	case ARM_SMCCC_VENDOR_HYP_KVM_MMIO_GUARD_MAP_FUNC_ID:
+		return pkvm_install_ioguard_page(hyp_vcpu, exit_code);
+	case ARM_SMCCC_VENDOR_HYP_KVM_MMIO_GUARD_UNMAP_FUNC_ID:
+		if (__pkvm_remove_ioguard_page(hyp_vcpu, vcpu_get_reg(vcpu, 1)))
+			val[0] = SMCCC_RET_INVALID_PARAMETER;
+		else
+			val[0] = SMCCC_RET_SUCCESS;
+		break;
+	case ARM_SMCCC_VENDOR_HYP_KVM_MMIO_GUARD_INFO_FUNC_ID:
+	case ARM_SMCCC_VENDOR_HYP_KVM_HYP_MEMINFO_FUNC_ID:
+		return pkvm_meminfo_call(hyp_vcpu);
+	case ARM_SMCCC_VENDOR_HYP_KVM_MEM_SHARE_FUNC_ID:
+		return pkvm_memshare_call(hyp_vcpu, exit_code);
+	case ARM_SMCCC_VENDOR_HYP_KVM_MEM_UNSHARE_FUNC_ID:
+		return pkvm_memunshare_call(hyp_vcpu);
+	case ARM_SMCCC_VENDOR_HYP_KVM_MEM_RELINQUISH_FUNC_ID:
+		return pkvm_memrelinquish_call(hyp_vcpu);
+	case ARM_SMCCC_TRNG_VERSION ... ARM_SMCCC_TRNG_RND32:
+	case ARM_SMCCC_TRNG_RND64:
+		if (smccc_trng_available)
+			return pkvm_forward_trng(vcpu);
+		break;
+	default:
+		return pkvm_handle_psci(hyp_vcpu);
+	}
+
+	smccc_set_retval(vcpu, val[0], val[1], val[2], val[3]);
+	return true;
+}
+
+/*
+ * Handler for non-protected VM HVC calls.
+ *
+ * Returns true if the hypervisor has handled the exit, and control should go
+ * back to the guest, or false if it hasn't.
+ */
+bool kvm_hyp_handle_hvc64(struct kvm_vcpu *vcpu, u64 *exit_code)
+{
+	u32 fn = smccc_get_function(vcpu);
+	struct pkvm_hyp_vcpu *hyp_vcpu;
+
+	hyp_vcpu = container_of(vcpu, struct pkvm_hyp_vcpu, vcpu);
+
+	switch (fn) {
+	case ARM_SMCCC_VENDOR_HYP_KVM_HYP_MEMINFO_FUNC_ID:
+		return pkvm_meminfo_call(hyp_vcpu);
+	case ARM_SMCCC_VENDOR_HYP_KVM_MEM_RELINQUISH_FUNC_ID:
+		return pkvm_memrelinquish_call(hyp_vcpu);
+	}
+
+	return false;
 }
diff --git a/arch/arm64/kvm/hyp/nvhe/psci-relay.c b/arch/arm64/kvm/hyp/nvhe/psci-relay.c
index 0850878..d4825b6 100644
--- a/arch/arm64/kvm/hyp/nvhe/psci-relay.c
+++ b/arch/arm64/kvm/hyp/nvhe/psci-relay.c
@@ -6,12 +6,15 @@
 
 #include <asm/kvm_asm.h>
 #include <asm/kvm_hyp.h>
+#include <asm/kvm_hypevents.h>
 #include <asm/kvm_mmu.h>
-#include <linux/arm-smccc.h>
 #include <linux/kvm_host.h>
 #include <uapi/linux/psci.h>
 
+#include <nvhe/arm-smccc.h>
+#include <nvhe/mem_protect.h>
 #include <nvhe/memory.h>
+#include <nvhe/pkvm.h>
 #include <nvhe/trap_handler.h>
 
 void kvm_hyp_cpu_entry(unsigned long r0);
@@ -22,6 +25,20 @@ void __noreturn __host_enter(struct kvm_cpu_context *host_ctxt);
 /* Config options set by the host. */
 struct kvm_host_psci_config __ro_after_init kvm_host_psci_config;
 
+static void (*pkvm_psci_notifier)(enum pkvm_psci_notification, struct kvm_cpu_context *);
+static void pkvm_psci_notify(enum pkvm_psci_notification notif, struct kvm_cpu_context *host_ctxt)
+{
+	if (READ_ONCE(pkvm_psci_notifier))
+		pkvm_psci_notifier(notif, host_ctxt);
+}
+
+#ifdef CONFIG_MODULES
+int __pkvm_register_psci_notifier(void (*cb)(enum pkvm_psci_notification, struct kvm_cpu_context *))
+{
+	return cmpxchg(&pkvm_psci_notifier, NULL, cb) ? -EBUSY : 0;
+}
+#endif
+
 #define INVALID_CPU_ID	UINT_MAX
 
 struct psci_boot_args {
@@ -153,6 +170,7 @@ static int psci_cpu_suspend(u64 func_id, struct kvm_cpu_context *host_ctxt)
 	DECLARE_REG(u64, power_state, host_ctxt, 1);
 	DECLARE_REG(unsigned long, pc, host_ctxt, 2);
 	DECLARE_REG(unsigned long, r0, host_ctxt, 3);
+	int ret;
 
 	struct psci_boot_args *boot_args;
 	struct kvm_nvhe_init_params *init_params;
@@ -167,13 +185,16 @@ static int psci_cpu_suspend(u64 func_id, struct kvm_cpu_context *host_ctxt)
 	boot_args->pc = pc;
 	boot_args->r0 = r0;
 
+	pkvm_psci_notify(PKVM_PSCI_CPU_SUSPEND, host_ctxt);
 	/*
 	 * Will either return if shallow sleep state, or wake up into the entry
 	 * point if it is a deep sleep state.
 	 */
-	return psci_call(func_id, power_state,
-			 __hyp_pa(&kvm_hyp_cpu_resume),
-			 __hyp_pa(init_params));
+	ret = psci_call(func_id, power_state,
+			__hyp_pa(&kvm_hyp_cpu_resume),
+			__hyp_pa(init_params));
+
+	return ret;
 }
 
 static int psci_system_suspend(u64 func_id, struct kvm_cpu_context *host_ctxt)
@@ -194,6 +215,8 @@ static int psci_system_suspend(u64 func_id, struct kvm_cpu_context *host_ctxt)
 	boot_args->pc = pc;
 	boot_args->r0 = r0;
 
+	pkvm_psci_notify(PKVM_PSCI_SYSTEM_SUSPEND, host_ctxt);
+
 	/* Will only return on error. */
 	return psci_call(func_id,
 			 __hyp_pa(&kvm_hyp_cpu_resume),
@@ -205,6 +228,8 @@ asmlinkage void __noreturn kvm_host_psci_cpu_entry(bool is_cpu_on)
 	struct psci_boot_args *boot_args;
 	struct kvm_cpu_context *host_ctxt;
 
+	trace_hyp_enter();
+
 	host_ctxt = &this_cpu_ptr(&kvm_host_data)->host_ctxt;
 
 	if (is_cpu_on)
@@ -218,9 +243,50 @@ asmlinkage void __noreturn kvm_host_psci_cpu_entry(bool is_cpu_on)
 	if (is_cpu_on)
 		release_boot_args(boot_args);
 
+	pkvm_psci_notify(PKVM_PSCI_CPU_ENTRY, host_ctxt);
+
+	trace_hyp_exit();
 	__host_enter(host_ctxt);
 }
 
+static DEFINE_HYP_SPINLOCK(mem_protect_lock);
+
+static u64 psci_mem_protect(s64 offset)
+{
+	static u64 cnt;
+	u64 new = cnt + offset;
+
+	hyp_assert_lock_held(&mem_protect_lock);
+
+	if (!offset || kvm_host_psci_config.version < PSCI_VERSION(1, 1))
+		return cnt;
+
+	if (!cnt || !new)
+		psci_call(PSCI_1_1_FN_MEM_PROTECT, offset < 0 ? 0 : 1, 0, 0);
+
+	cnt = new;
+	return cnt;
+}
+
+static bool psci_mem_protect_active(void)
+{
+	return psci_mem_protect(0);
+}
+
+void psci_mem_protect_inc(u64 n)
+{
+	hyp_spin_lock(&mem_protect_lock);
+	psci_mem_protect(n);
+	hyp_spin_unlock(&mem_protect_lock);
+}
+
+void psci_mem_protect_dec(u64 n)
+{
+	hyp_spin_lock(&mem_protect_lock);
+	psci_mem_protect(-n);
+	hyp_spin_unlock(&mem_protect_lock);
+}
+
 static unsigned long psci_0_1_handler(u64 func_id, struct kvm_cpu_context *host_ctxt)
 {
 	if (is_psci_0_1(cpu_off, func_id) || is_psci_0_1(migrate, func_id))
@@ -249,6 +315,9 @@ static unsigned long psci_0_2_handler(u64 func_id, struct kvm_cpu_context *host_
 	 */
 	case PSCI_0_2_FN_SYSTEM_OFF:
 	case PSCI_0_2_FN_SYSTEM_RESET:
+		pkvm_poison_pvmfw_pages();
+		/* Avoid racing with a MEM_PROTECT call. */
+		hyp_spin_lock(&mem_protect_lock);
 		return psci_forward(host_ctxt);
 	case PSCI_0_2_FN64_CPU_SUSPEND:
 		return psci_cpu_suspend(func_id, host_ctxt);
@@ -262,9 +331,14 @@ static unsigned long psci_0_2_handler(u64 func_id, struct kvm_cpu_context *host_
 static unsigned long psci_1_0_handler(u64 func_id, struct kvm_cpu_context *host_ctxt)
 {
 	switch (func_id) {
+	case PSCI_1_1_FN64_SYSTEM_RESET2:
+		pkvm_poison_pvmfw_pages();
+		hyp_spin_lock(&mem_protect_lock);
+		if (psci_mem_protect_active())
+			cpu_reg(host_ctxt, 0) = PSCI_0_2_FN_SYSTEM_RESET;
+		fallthrough;
 	case PSCI_1_0_FN_PSCI_FEATURES:
 	case PSCI_1_0_FN_SET_SUSPEND_MODE:
-	case PSCI_1_1_FN64_SYSTEM_RESET2:
 		return psci_forward(host_ctxt);
 	case PSCI_1_0_FN64_SYSTEM_SUSPEND:
 		return psci_system_suspend(func_id, host_ctxt);
diff --git a/arch/arm64/kvm/hyp/nvhe/serial.c b/arch/arm64/kvm/hyp/nvhe/serial.c
new file mode 100644
index 0000000..0b2cf3b
--- /dev/null
+++ b/arch/arm64/kvm/hyp/nvhe/serial.c
@@ -0,0 +1,68 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (C) 2022 - Google LLC
+ */
+
+#include <nvhe/pkvm.h>
+#include <nvhe/spinlock.h>
+
+static void (*__hyp_putc)(char c);
+
+static inline void __hyp_putx4(unsigned int x)
+{
+	x &= 0xf;
+	if (x <= 9)
+		x += '0';
+	else
+		x += ('a' - 0xa);
+
+	__hyp_putc(x);
+}
+
+static inline void __hyp_putx4n(unsigned long x, int n)
+{
+	int i = n >> 2;
+
+	__hyp_putc('0');
+	__hyp_putc('x');
+
+	while (i--)
+		__hyp_putx4(x >> (4 * i));
+
+	__hyp_putc('\n');
+	__hyp_putc('\r');
+}
+
+static inline bool hyp_serial_enabled(void)
+{
+	return !!READ_ONCE(__hyp_putc);
+}
+
+void hyp_puts(const char *s)
+{
+	if (!hyp_serial_enabled())
+		return;
+
+	while (*s)
+		__hyp_putc(*s++);
+
+	__hyp_putc('\n');
+	__hyp_putc('\r');
+}
+
+void hyp_putx64(u64 x)
+{
+	if (hyp_serial_enabled())
+		__hyp_putx4n(x, 64);
+}
+
+void hyp_putc(char c)
+{
+	if (hyp_serial_enabled())
+		__hyp_putc(c);
+}
+
+int __pkvm_register_serial_driver(void (*cb)(char))
+{
+	return cmpxchg(&__hyp_putc, NULL, cb) ? -EBUSY : 0;
+}
diff --git a/arch/arm64/kvm/hyp/nvhe/setup.c b/arch/arm64/kvm/hyp/nvhe/setup.c
index e8d4ea2..c0f502c 100644
--- a/arch/arm64/kvm/hyp/nvhe/setup.c
+++ b/arch/arm64/kvm/hyp/nvhe/setup.c
@@ -11,36 +11,49 @@
 #include <asm/kvm_pkvm.h>
 
 #include <nvhe/early_alloc.h>
-#include <nvhe/fixed_config.h>
+#include <nvhe/ffa.h>
 #include <nvhe/gfp.h>
+#include <nvhe/iommu.h>
 #include <nvhe/memory.h>
 #include <nvhe/mem_protect.h>
 #include <nvhe/mm.h>
+#include <nvhe/pkvm.h>
+#include <nvhe/serial.h>
 #include <nvhe/trap_handler.h>
 
 unsigned long hyp_nr_cpus;
 
+phys_addr_t pvmfw_base;
+phys_addr_t pvmfw_size;
+
 #define hyp_percpu_size ((unsigned long)__per_cpu_end - \
 			 (unsigned long)__per_cpu_start)
 
 static void *vmemmap_base;
+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;
 
 static int divide_memory_pool(void *virt, unsigned long size)
 {
-	unsigned long vstart, vend, nr_pages;
+	unsigned long nr_pages;
 
 	hyp_early_alloc_init(virt, size);
 
-	hyp_vmemmap_range(__hyp_pa(virt), size, &vstart, &vend);
-	nr_pages = (vend - vstart) >> PAGE_SHIFT;
+	nr_pages = hyp_vmemmap_pages(sizeof(struct hyp_page));
 	vmemmap_base = hyp_early_alloc_contig(nr_pages);
 	if (!vmemmap_base)
 		return -ENOMEM;
 
+	nr_pages = hyp_vm_table_pages();
+	vm_table_base = hyp_early_alloc_contig(nr_pages);
+	if (!vm_table_base)
+		return -ENOMEM;
+
 	nr_pages = hyp_s1_pgtable_pages();
 	hyp_pgt_base = hyp_early_alloc_contig(nr_pages);
 	if (!hyp_pgt_base)
@@ -51,6 +64,16 @@ static int divide_memory_pool(void *virt, unsigned long size)
 	if (!host_s2_pgt_base)
 		return -ENOMEM;
 
+	nr_pages = hyp_ffa_proxy_pages();
+	ffa_proxy_pages = hyp_early_alloc_contig(nr_pages);
+	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;
 }
 
@@ -78,7 +101,7 @@ static int recreate_hyp_mappings(phys_addr_t phys, unsigned long size,
 	if (ret)
 		return ret;
 
-	ret = hyp_back_vmemmap(phys, size, hyp_virt_to_phys(vmemmap_base));
+	ret = hyp_back_vmemmap(hyp_virt_to_phys(vmemmap_base));
 	if (ret)
 		return ret;
 
@@ -86,6 +109,10 @@ static int recreate_hyp_mappings(phys_addr_t phys, unsigned long size,
 	if (ret)
 		return ret;
 
+	ret = pkvm_create_mappings(__hyp_data_start, __hyp_data_end, PAGE_HYP);
+	if (ret)
+		return ret;
+
 	ret = pkvm_create_mappings(__hyp_rodata_start, __hyp_rodata_end, PAGE_HYP_RO);
 	if (ret)
 		return ret;
@@ -138,20 +165,24 @@ static int recreate_hyp_mappings(phys_addr_t phys, unsigned long size,
 	}
 
 	/*
-	 * Map the host's .bss and .rodata sections RO in the hypervisor, but
-	 * transfer the ownership from the host to the hypervisor itself to
-	 * make sure it can't be donated or shared with another entity.
+	 * Map the host sections RO in the hypervisor, but transfer the
+	 * ownership from the host to the hypervisor itself to make sure they
+	 * can't be donated or shared with another entity.
 	 *
 	 * The ownership transition requires matching changes in the host
 	 * stage-2. This will be done later (see finalize_host_mappings()) once
 	 * the hyp_vmemmap is addressable.
 	 */
 	prot = pkvm_mkstate(PAGE_HYP_RO, PKVM_PAGE_SHARED_OWNED);
-	ret = pkvm_create_mappings(__start_rodata, __end_rodata, prot);
+	ret = pkvm_create_mappings(&kvm_vgic_global_state,
+				   &kvm_vgic_global_state + 1, prot);
 	if (ret)
 		return ret;
 
-	ret = pkvm_create_mappings(__hyp_bss_end, __bss_stop, prot);
+	start = hyp_phys_to_virt(pvmfw_base);
+	end = start + pvmfw_size;
+	prot = pkvm_mkstate(PAGE_HYP_RO, PKVM_PAGE_OWNED);
+	ret = pkvm_create_mappings(start, end, prot);
 	if (ret)
 		return ret;
 
@@ -186,12 +217,11 @@ static void hpool_put_page(void *addr)
 	hyp_put_page(&hpool, addr);
 }
 
-static int finalize_host_mappings_walker(u64 addr, u64 end, u32 level,
-					 kvm_pte_t *ptep,
-					 enum kvm_pgtable_walk_flags flag,
-					 void * const arg)
+static int fix_host_ownership_walker(u64 addr, u64 end, u32 level,
+				     kvm_pte_t *ptep,
+				     enum kvm_pgtable_walk_flags flag,
+				     void * const arg)
 {
-	struct kvm_pgtable_mm_ops *mm_ops = arg;
 	enum kvm_pgtable_prot prot;
 	enum pkvm_page_state state;
 	kvm_pte_t pte = *ptep;
@@ -200,15 +230,6 @@ static int finalize_host_mappings_walker(u64 addr, u64 end, u32 level,
 	if (!kvm_pte_valid(pte))
 		return 0;
 
-	/*
-	 * Fix-up the refcount for the page-table pages as the early allocator
-	 * was unable to access the hyp_vmemmap and so the buddy allocator has
-	 * initialised the refcount to '1'.
-	 */
-	mm_ops->get_page(ptep);
-	if (flag != KVM_PGTABLE_WALK_LEAF)
-		return 0;
-
 	if (level != (KVM_PGTABLE_MAX_LEVELS - 1))
 		return -EINVAL;
 
@@ -223,7 +244,7 @@ static int finalize_host_mappings_walker(u64 addr, u64 end, u32 level,
 	state = pkvm_getstate(kvm_pgtable_hyp_pte_prot(pte));
 	switch (state) {
 	case PKVM_PAGE_OWNED:
-		return host_stage2_set_owner_locked(phys, PAGE_SIZE, pkvm_hyp_id);
+		return host_stage2_set_owner_locked(phys, PAGE_SIZE, PKVM_ID_HYP);
 	case PKVM_PAGE_SHARED_OWNED:
 		prot = pkvm_mkstate(PKVM_HOST_MEM_PROT, PKVM_PAGE_SHARED_BORROWED);
 		break;
@@ -234,15 +255,56 @@ static int finalize_host_mappings_walker(u64 addr, u64 end, u32 level,
 		return -EINVAL;
 	}
 
-	return host_stage2_idmap_locked(phys, PAGE_SIZE, prot);
+	return host_stage2_idmap_locked(phys, PAGE_SIZE, prot, false);
 }
 
-static int finalize_host_mappings(void)
+static int fix_hyp_pgtable_refcnt_walker(u64 addr, u64 end, u32 level,
+					 kvm_pte_t *ptep,
+					 enum kvm_pgtable_walk_flags flag,
+					 void * const arg)
+{
+	struct kvm_pgtable_mm_ops *mm_ops = arg;
+	kvm_pte_t pte = *ptep;
+
+	/*
+	 * Fix-up the refcount for the page-table pages as the early allocator
+	 * was unable to access the hyp_vmemmap and so the buddy allocator has
+	 * initialised the refcount to '1'.
+	 */
+	if (kvm_pte_valid(pte))
+		mm_ops->get_page(ptep);
+
+	return 0;
+}
+
+static int pin_table_walker(u64 addr, u64 end, u32 level, kvm_pte_t *ptep,
+			    enum kvm_pgtable_walk_flags flag, void * const arg)
+{
+	struct kvm_pgtable_mm_ops *mm_ops = arg;
+	kvm_pte_t pte = *ptep;
+
+	if (kvm_pte_valid(pte))
+		mm_ops->get_page(kvm_pte_follow(pte, mm_ops));
+
+	return 0;
+}
+
+static int pin_host_tables(void)
 {
 	struct kvm_pgtable_walker walker = {
-		.cb	= finalize_host_mappings_walker,
-		.flags	= KVM_PGTABLE_WALK_LEAF | KVM_PGTABLE_WALK_TABLE_POST,
-		.arg	= pkvm_pgtable.mm_ops,
+		.cb	= pin_table_walker,
+		.flags	= KVM_PGTABLE_WALK_TABLE_POST,
+		.arg	= &host_mmu.mm_ops,
+	};
+
+	return kvm_pgtable_walk(&host_mmu.pgt, 0, BIT(host_mmu.pgt.ia_bits), &walker);
+}
+
+static int fix_host_ownership(void)
+{
+	struct kvm_pgtable_walker walker = {
+		.cb	= fix_host_ownership_walker,
+		.flags	= KVM_PGTABLE_WALK_LEAF,
 	};
 	int i, ret;
 
@@ -258,6 +320,37 @@ static int finalize_host_mappings(void)
 	return 0;
 }
 
+static int fix_hyp_pgtable_refcnt(void)
+{
+	struct kvm_pgtable_walker walker = {
+		.cb	= fix_hyp_pgtable_refcnt_walker,
+		.flags	= KVM_PGTABLE_WALK_LEAF | KVM_PGTABLE_WALK_TABLE_POST,
+		.arg	= pkvm_pgtable.mm_ops,
+	};
+
+	return kvm_pgtable_walk(&pkvm_pgtable, 0, BIT(pkvm_pgtable.ia_bits),
+				&walker);
+}
+
+static int unmap_protected_regions(void)
+{
+	struct pkvm_moveable_reg *reg;
+	int i, ret;
+
+	for (i = 0; i < pkvm_moveable_regs_nr; i++) {
+		reg = &pkvm_moveable_regs[i];
+		if (reg->type != PKVM_MREG_PROTECTED_RANGE)
+			continue;
+
+		ret = host_stage2_set_owner_locked(reg->start, reg->size,
+						   PKVM_ID_PROTECTED);
+		if (ret)
+			return ret;
+	}
+
+	return 0;
+}
+
 void __noreturn __pkvm_init_finalise(void)
 {
 	struct kvm_host_data *host_data = this_cpu_ptr(&kvm_host_data);
@@ -287,10 +380,32 @@ void __noreturn __pkvm_init_finalise(void)
 	};
 	pkvm_pgtable.mm_ops = &pkvm_pgtable_mm_ops;
 
-	ret = finalize_host_mappings();
+	ret = fix_hyp_pgtable_refcnt();
 	if (ret)
 		goto out;
 
+	ret = hyp_create_pcpu_fixmap();
+	if (ret)
+		goto out;
+
+	ret = fix_host_ownership();
+	if (ret)
+		goto out;
+
+	ret = unmap_protected_regions();
+	if (ret)
+		goto out;
+
+	ret = pin_host_tables();
+	if (ret)
+		goto out;
+
+	ret = hyp_ffa_init(ffa_proxy_pages);
+	if (ret)
+		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/switch.c b/arch/arm64/kvm/hyp/nvhe/switch.c
index 895fb32..2363f86 100644
--- a/arch/arm64/kvm/hyp/nvhe/switch.c
+++ b/arch/arm64/kvm/hyp/nvhe/switch.c
@@ -7,7 +7,6 @@
 #include <hyp/switch.h>
 #include <hyp/sysreg-sr.h>
 
-#include <linux/arm-smccc.h>
 #include <linux/kvm_host.h>
 #include <linux/types.h>
 #include <linux/jump_label.h>
@@ -21,13 +20,14 @@
 #include <asm/kvm_asm.h>
 #include <asm/kvm_emulate.h>
 #include <asm/kvm_hyp.h>
+#include <asm/kvm_hypevents.h>
 #include <asm/kvm_mmu.h>
 #include <asm/fpsimd.h>
 #include <asm/debug-monitors.h>
 #include <asm/processor.h>
 
-#include <nvhe/fixed_config.h>
 #include <nvhe/mem_protect.h>
+#include <nvhe/pkvm.h>
 
 /* Non-VHE specific context */
 DEFINE_PER_CPU(struct kvm_host_data, kvm_host_data);
@@ -45,7 +45,7 @@ static void __activate_traps(struct kvm_vcpu *vcpu)
 
 	val = vcpu->arch.cptr_el2;
 	val |= CPTR_EL2_TTA | CPTR_EL2_TAM;
-	if (!guest_owns_fp_regs(vcpu)) {
+	if (vcpu->arch.fp_state != FP_STATE_GUEST_OWNED) {
 		val |= CPTR_EL2_TFP | CPTR_EL2_TZ;
 		__activate_traps_fpsimd32(vcpu);
 	}
@@ -108,6 +108,18 @@ static void __deactivate_traps(struct kvm_vcpu *vcpu)
 	write_sysreg(__kvm_hyp_host_vector, vbar_el2);
 }
 
+static void __deactivate_fpsimd_traps(struct kvm_vcpu *vcpu)
+{
+	u64 reg = CPTR_EL2_TFP;
+
+	if (vcpu_has_sve(vcpu) ||
+	    (is_protected_kvm_enabled() && system_supports_sve())) {
+		reg |= CPTR_EL2_TZ;
+	}
+
+	sysreg_clear_set(cptr_el2, reg, 0);
+}
+
 /* Save VGICv3 state on non-VHE systems */
 static void __hyp_vgic_save_state(struct kvm_vcpu *vcpu)
 {
@@ -178,9 +190,34 @@ static bool kvm_handle_pvm_sys64(struct kvm_vcpu *vcpu, u64 *exit_code)
 		kvm_handle_pvm_sysreg(vcpu, exit_code));
 }
 
+static void kvm_hyp_handle_fpsimd_host(struct kvm_vcpu *vcpu)
+{
+	/*
+	 * Non-protected kvm relies on the host restoring its sve state.
+	 * Protected kvm restores the host's sve state as not to reveal that
+	 * fpsimd was used by a guest nor leak upper sve bits.
+	 */
+	if (unlikely(is_protected_kvm_enabled() && system_supports_sve())) {
+		struct kvm_host_sve_state *sve_state = get_host_sve_state(vcpu);
+
+		sve_state->zcr_el1 = read_sysreg_el1(SYS_ZCR);
+		pkvm_set_max_sve_vq();
+		__sve_save_state(sve_state->sve_regs +
+					 sve_ffr_offset(kvm_host_sve_max_vl),
+				 &sve_state->fpsr);
+
+		/* Still trap SVE since it's handled by hyp in pKVM. */
+		if (!vcpu_has_sve(vcpu))
+			sysreg_clear_set(cptr_el2, 0, CPTR_EL2_TZ);
+	} else {
+		__fpsimd_save_state(get_host_fpsimd_state(vcpu));
+	}
+}
+
 static const exit_handler_fn hyp_exit_handlers[] = {
 	[0 ... ESR_ELx_EC_MAX]		= NULL,
 	[ESR_ELx_EC_CP15_32]		= kvm_hyp_handle_cp15_32,
+	[ESR_ELx_EC_HVC64]		= kvm_hyp_handle_hvc64,
 	[ESR_ELx_EC_SYS64]		= kvm_hyp_handle_sysreg,
 	[ESR_ELx_EC_SVE]		= kvm_hyp_handle_fpsimd,
 	[ESR_ELx_EC_FP_ASIMD]		= kvm_hyp_handle_fpsimd,
@@ -192,6 +229,7 @@ static const exit_handler_fn hyp_exit_handlers[] = {
 
 static const exit_handler_fn pvm_exit_handlers[] = {
 	[0 ... ESR_ELx_EC_MAX]		= NULL,
+	[ESR_ELx_EC_HVC64]		= kvm_handle_pvm_hvc64,
 	[ESR_ELx_EC_SYS64]		= kvm_handle_pvm_sys64,
 	[ESR_ELx_EC_SVE]		= kvm_handle_pvm_restricted,
 	[ESR_ELx_EC_FP_ASIMD]		= kvm_hyp_handle_fpsimd,
@@ -203,7 +241,7 @@ static const exit_handler_fn pvm_exit_handlers[] = {
 
 static const exit_handler_fn *kvm_get_exit_handler_array(struct kvm_vcpu *vcpu)
 {
-	if (unlikely(kvm_vm_is_protected(kern_hyp_va(vcpu->kvm))))
+	if (unlikely(vcpu_is_protected(vcpu)))
 		return pvm_exit_handlers;
 
 	return hyp_exit_handlers;
@@ -222,9 +260,7 @@ static const exit_handler_fn *kvm_get_exit_handler_array(struct kvm_vcpu *vcpu)
  */
 static void early_exit_filter(struct kvm_vcpu *vcpu, u64 *exit_code)
 {
-	struct kvm *kvm = kern_hyp_va(vcpu->kvm);
-
-	if (kvm_vm_is_protected(kvm) && vcpu_mode_is_32bit(vcpu)) {
+	if (unlikely(vcpu_is_protected(vcpu) && vcpu_mode_is_32bit(vcpu))) {
 		/*
 		 * As we have caught the guest red-handed, decide that it isn't
 		 * fit for purpose anymore by making the vcpu invalid. The VMM
@@ -297,10 +333,13 @@ int __kvm_vcpu_run(struct kvm_vcpu *vcpu)
 	__debug_switch_to_guest(vcpu);
 
 	do {
+		trace_hyp_exit();
+
 		/* Jump in the fire! */
 		exit_code = __guest_enter(vcpu);
 
 		/* And we're baaack! */
+		trace_hyp_enter();
 	} while (fixup_guest_exit(vcpu, &exit_code));
 
 	__sysreg_save_state_nvhe(guest_ctxt);
@@ -335,6 +374,12 @@ int __kvm_vcpu_run(struct kvm_vcpu *vcpu)
 	return exit_code;
 }
 
+static void (*hyp_panic_notifier)(struct kvm_cpu_context *host_ctxt);
+int __pkvm_register_hyp_panic_notifier(void (*cb)(struct kvm_cpu_context *host_ctxt))
+{
+	return cmpxchg(&hyp_panic_notifier, NULL, cb) ? -EBUSY : 0;
+}
+
 asmlinkage void __noreturn hyp_panic(void)
 {
 	u64 spsr = read_sysreg_el2(SYS_SPSR);
@@ -346,6 +391,9 @@ asmlinkage void __noreturn hyp_panic(void)
 	host_ctxt = &this_cpu_ptr(&kvm_host_data)->host_ctxt;
 	vcpu = host_ctxt->__hyp_running_vcpu;
 
+	if (READ_ONCE(hyp_panic_notifier))
+		hyp_panic_notifier(host_ctxt);
+
 	if (vcpu) {
 		__timer_disable_traps(vcpu);
 		__deactivate_traps(vcpu);
diff --git a/arch/arm64/kvm/hyp/nvhe/sys_regs.c b/arch/arm64/kvm/hyp/nvhe/sys_regs.c
index 3d5121e..1479886 100644
--- a/arch/arm64/kvm/hyp/nvhe/sys_regs.c
+++ b/arch/arm64/kvm/hyp/nvhe/sys_regs.c
@@ -11,7 +11,7 @@
 
 #include <hyp/adjust_pc.h>
 
-#include <nvhe/fixed_config.h>
+#include <nvhe/pkvm.h>
 
 #include "../../sys_regs.h"
 
@@ -26,6 +26,7 @@ u64 id_aa64isar2_el1_sys_val;
 u64 id_aa64mmfr0_el1_sys_val;
 u64 id_aa64mmfr1_el1_sys_val;
 u64 id_aa64mmfr2_el1_sys_val;
+u64 id_aa64smfr0_el1_sys_val;
 
 /*
  * Inject an unknown/undefined exception to an AArch64 guest while most of its
@@ -344,6 +345,17 @@ static const struct sys_reg_desc pvm_sys_reg_descs[] = {
 	/* Cache maintenance by set/way operations are restricted. */
 
 	/* Debug and Trace Registers are restricted. */
+	RAZ_WI(SYS_DBGBVRn_EL1(0)),
+	RAZ_WI(SYS_DBGBCRn_EL1(0)),
+	RAZ_WI(SYS_DBGWVRn_EL1(0)),
+	RAZ_WI(SYS_DBGWCRn_EL1(0)),
+	RAZ_WI(SYS_MDSCR_EL1),
+	RAZ_WI(SYS_OSLAR_EL1),
+	RAZ_WI(SYS_OSLSR_EL1),
+	RAZ_WI(SYS_OSDLR_EL1),
+
+	/* Group 1 ID registers */
+	RAZ_WI(SYS_REVIDR_EL1),
 
 	/* AArch64 mappings of the AArch32 ID registers */
 	/* CRm=1 */
@@ -447,8 +459,85 @@ static const struct sys_reg_desc pvm_sys_reg_descs[] = {
 	/* Performance Monitoring Registers are restricted. */
 };
 
+/* A structure to track reset values for system registers in protected vcpus. */
+struct sys_reg_desc_reset {
+	/* Index into sys_reg[]. */
+	int reg;
+
+	/* Reset function. */
+	void (*reset)(struct kvm_vcpu *, const struct sys_reg_desc_reset *);
+
+	/* Reset value. */
+	u64 value;
+};
+
+static void reset_actlr(struct kvm_vcpu *vcpu, const struct sys_reg_desc_reset *r)
+{
+	__vcpu_sys_reg(vcpu, r->reg) = read_sysreg(actlr_el1);
+}
+
+static void reset_amair_el1(struct kvm_vcpu *vcpu, const struct sys_reg_desc_reset *r)
+{
+	__vcpu_sys_reg(vcpu, r->reg) = read_sysreg(amair_el1);
+}
+
+static void reset_mpidr(struct kvm_vcpu *vcpu, const struct sys_reg_desc_reset *r)
+{
+	__vcpu_sys_reg(vcpu, r->reg) = calculate_mpidr(vcpu);
+}
+
+static void reset_value(struct kvm_vcpu *vcpu, const struct sys_reg_desc_reset *r)
+{
+	__vcpu_sys_reg(vcpu, r->reg) = r->value;
+}
+
+/* Specify the register's reset value. */
+#define RESET_VAL(REG, RESET_VAL) {  REG, reset_value, RESET_VAL }
+
+/* Specify a function that calculates the register's reset value. */
+#define RESET_FUNC(REG, RESET_FUNC) {  REG, RESET_FUNC, 0 }
+
 /*
- * Checks that the sysreg table is unique and in-order.
+ * Architected system registers reset values for Protected VMs.
+ * Important: Must be sorted ascending by REG (index into sys_reg[])
+ */
+static const struct sys_reg_desc_reset pvm_sys_reg_reset_vals[] = {
+	RESET_FUNC(MPIDR_EL1, reset_mpidr),
+	RESET_VAL(SCTLR_EL1, 0x00C50078),
+	RESET_FUNC(ACTLR_EL1, reset_actlr),
+	RESET_VAL(CPACR_EL1, 0),
+	RESET_VAL(ZCR_EL1, 0),
+	RESET_VAL(TCR_EL1, 0),
+	RESET_VAL(VBAR_EL1, 0),
+	RESET_VAL(CONTEXTIDR_EL1, 0),
+	RESET_FUNC(AMAIR_EL1, reset_amair_el1),
+	RESET_VAL(CNTKCTL_EL1, 0),
+	RESET_VAL(MDSCR_EL1, 0),
+	RESET_VAL(MDCCINT_EL1, 0),
+	RESET_VAL(DISR_EL1, 0),
+	RESET_VAL(PMCCFILTR_EL0, 0),
+	RESET_VAL(PMUSERENR_EL0, 0),
+};
+
+/*
+ * Sets system registers to reset value
+ *
+ * This function finds the right entry and sets the registers on the protected
+ * vcpu to their architecturally defined reset values.
+ */
+void kvm_reset_pvm_sys_regs(struct kvm_vcpu *vcpu)
+{
+	unsigned long i;
+
+	for (i = 0; i < ARRAY_SIZE(pvm_sys_reg_reset_vals); i++) {
+		const struct sys_reg_desc_reset *r = &pvm_sys_reg_reset_vals[i];
+
+		r->reset(vcpu, r);
+	}
+}
+
+/*
+ * Checks that the sysreg tables are unique and in-order.
  *
  * Returns 0 if the table is consistent, or 1 otherwise.
  */
@@ -461,6 +550,11 @@ int kvm_check_pvm_sysreg_table(void)
 			return 1;
 	}
 
+	for (i = 1; i < ARRAY_SIZE(pvm_sys_reg_reset_vals); i++) {
+		if (pvm_sys_reg_reset_vals[i-1].reg >= pvm_sys_reg_reset_vals[i].reg)
+			return 1;
+	}
+
 	return 0;
 }
 
diff --git a/arch/arm64/kvm/hyp/nvhe/tlb.c b/arch/arm64/kvm/hyp/nvhe/tlb.c
index d296d61..35092e1 100644
--- a/arch/arm64/kvm/hyp/nvhe/tlb.c
+++ b/arch/arm64/kvm/hyp/nvhe/tlb.c
@@ -11,26 +11,62 @@
 #include <nvhe/mem_protect.h>
 
 struct tlb_inv_context {
-	u64		tcr;
+	struct kvm_s2_mmu	*mmu;
+	u64			tcr;
+	u64			sctlr;
 };
 
-static void __tlb_switch_to_guest(struct kvm_s2_mmu *mmu,
-				  struct tlb_inv_context *cxt)
+static void enter_vmid_context(struct kvm_s2_mmu *mmu,
+			       struct tlb_inv_context *cxt)
 {
+	struct kvm_s2_mmu *host_s2_mmu = &host_mmu.arch.mmu;
+	struct kvm_cpu_context *host_ctxt;
+	struct kvm_vcpu *vcpu;
+
+	host_ctxt = &this_cpu_ptr(&kvm_host_data)->host_ctxt;
+	vcpu = host_ctxt->__hyp_running_vcpu;
+	cxt->mmu = NULL;
+
+	/*
+	 * If we're already in the desired context, then there's nothing
+	 * to do.
+	 */
+	if (vcpu) {
+		if (mmu == vcpu->arch.hw_mmu || WARN_ON(mmu != host_s2_mmu))
+			return;
+	} else if (mmu == host_s2_mmu) {
+		return;
+	}
+
+	cxt->mmu = mmu;
 	if (cpus_have_final_cap(ARM64_WORKAROUND_SPECULATIVE_AT)) {
 		u64 val;
 
 		/*
 		 * For CPUs that are affected by ARM 1319367, we need to
-		 * avoid a host Stage-1 walk while we have the guest's
-		 * VMID set in the VTTBR in order to invalidate TLBs.
-		 * We're guaranteed that the S1 MMU is enabled, so we can
-		 * simply set the EPD bits to avoid any further TLB fill.
+		 * avoid a Stage-1 walk with the old VMID while we have
+		 * the new VMID set in the VTTBR in order to invalidate TLBs.
+		 * We're guaranteed that the host S1 MMU is enabled, so
+		 * we can simply set the EPD bits to avoid any further
+		 * TLB fill. For guests, we ensure that the S1 MMU is
+		 * temporarily enabled in the next context.
 		 */
 		val = cxt->tcr = read_sysreg_el1(SYS_TCR);
 		val |= TCR_EPD1_MASK | TCR_EPD0_MASK;
 		write_sysreg_el1(val, SYS_TCR);
 		isb();
+
+		if (vcpu) {
+			val = cxt->sctlr = read_sysreg_el1(SYS_SCTLR);
+			if (!(val & SCTLR_ELx_M)) {
+				val |= SCTLR_ELx_M;
+				write_sysreg_el1(val, SYS_SCTLR);
+				isb();
+			}
+		} else {
+			/* The host S1 MMU is always enabled. */
+			cxt->sctlr = SCTLR_ELx_M;
+		}
 	}
 
 	/*
@@ -39,20 +75,44 @@ static void __tlb_switch_to_guest(struct kvm_s2_mmu *mmu,
 	 * ensuring that we always have an ISB, but not two ISBs back
 	 * to back.
 	 */
-	__load_stage2(mmu, kern_hyp_va(mmu->arch));
+	if (vcpu)
+		__load_host_stage2();
+	else
+		__load_stage2(mmu, kern_hyp_va(mmu->arch));
+
 	asm(ALTERNATIVE("isb", "nop", ARM64_WORKAROUND_SPECULATIVE_AT));
 }
 
-static void __tlb_switch_to_host(struct tlb_inv_context *cxt)
+static void exit_vmid_context(struct tlb_inv_context *cxt)
 {
-	__load_host_stage2();
+	struct kvm_s2_mmu *mmu = cxt->mmu;
+	struct kvm_cpu_context *host_ctxt;
+	struct kvm_vcpu *vcpu;
+
+	host_ctxt = &this_cpu_ptr(&kvm_host_data)->host_ctxt;
+	vcpu = host_ctxt->__hyp_running_vcpu;
+
+	if (!mmu)
+		return;
+
+	if (vcpu)
+		__load_stage2(mmu, kern_hyp_va(mmu->arch));
+	else
+		__load_host_stage2();
 
 	if (cpus_have_final_cap(ARM64_WORKAROUND_SPECULATIVE_AT)) {
-		/* Ensure write of the host VMID */
+		/* Ensure write of the old VMID */
 		isb();
-		/* Restore the host's TCR_EL1 */
+
+		if (!(cxt->sctlr & SCTLR_ELx_M)) {
+			write_sysreg_el1(cxt->sctlr, SYS_SCTLR);
+			isb();
+		}
+
 		write_sysreg_el1(cxt->tcr, SYS_TCR);
 	}
+
+	cxt->mmu = NULL;
 }
 
 void __kvm_tlb_flush_vmid_ipa(struct kvm_s2_mmu *mmu,
@@ -63,7 +123,7 @@ void __kvm_tlb_flush_vmid_ipa(struct kvm_s2_mmu *mmu,
 	dsb(ishst);
 
 	/* Switch to requested VMID */
-	__tlb_switch_to_guest(mmu, &cxt);
+	enter_vmid_context(mmu, &cxt);
 
 	/*
 	 * We could do so much better if we had the VA as well.
@@ -106,7 +166,7 @@ void __kvm_tlb_flush_vmid_ipa(struct kvm_s2_mmu *mmu,
 	if (icache_is_vpipt())
 		icache_inval_all_pou();
 
-	__tlb_switch_to_host(&cxt);
+	exit_vmid_context(&cxt);
 }
 
 void __kvm_tlb_flush_vmid(struct kvm_s2_mmu *mmu)
@@ -116,13 +176,13 @@ void __kvm_tlb_flush_vmid(struct kvm_s2_mmu *mmu)
 	dsb(ishst);
 
 	/* Switch to requested VMID */
-	__tlb_switch_to_guest(mmu, &cxt);
+	enter_vmid_context(mmu, &cxt);
 
 	__tlbi(vmalls12e1is);
 	dsb(ish);
 	isb();
 
-	__tlb_switch_to_host(&cxt);
+	exit_vmid_context(&cxt);
 }
 
 void __kvm_flush_cpu_context(struct kvm_s2_mmu *mmu)
@@ -130,14 +190,14 @@ void __kvm_flush_cpu_context(struct kvm_s2_mmu *mmu)
 	struct tlb_inv_context cxt;
 
 	/* Switch to requested VMID */
-	__tlb_switch_to_guest(mmu, &cxt);
+	enter_vmid_context(mmu, &cxt);
 
 	__tlbi(vmalle1);
 	asm volatile("ic iallu");
 	dsb(nsh);
 	isb();
 
-	__tlb_switch_to_host(&cxt);
+	exit_vmid_context(&cxt);
 }
 
 void __kvm_flush_vm_context(void)
diff --git a/arch/arm64/kvm/hyp/nvhe/trace.c b/arch/arm64/kvm/hyp/nvhe/trace.c
new file mode 100644
index 0000000..6f796ec7
--- /dev/null
+++ b/arch/arm64/kvm/hyp/nvhe/trace.c
@@ -0,0 +1,635 @@
+#include <nvhe/clock.h>
+#include <nvhe/mem_protect.h>
+#include <nvhe/mm.h>
+#include <nvhe/trace.h>
+
+#include <asm/kvm_mmu.h>
+#include <asm/local.h>
+
+#include <linux/ring_buffer.h>
+
+#define HYP_RB_PAGE_HEAD		1UL
+#define HYP_RB_PAGE_UPDATE		2UL
+#define HYP_RB_FLAG_MASK		3UL
+
+static struct hyp_buffer_pages_backing hyp_buffer_pages_backing;
+DEFINE_PER_CPU(struct hyp_rb_per_cpu, trace_rb);
+DEFINE_HYP_SPINLOCK(trace_rb_lock);
+
+static bool rb_set_flag(struct hyp_buffer_page *bpage, int new_flag)
+{
+	unsigned long ret, val = (unsigned long)bpage->list.next;
+
+	ret = cmpxchg((unsigned long *)&bpage->list.next,
+		      val, (val & ~HYP_RB_FLAG_MASK) | new_flag);
+
+	return ret == val;
+}
+
+static void rb_set_footer_status(struct hyp_buffer_page *bpage,
+				 unsigned long status,
+				 bool reader)
+{
+	struct buffer_data_page *page = bpage->page;
+	struct rb_ext_page_footer *footer;
+
+	footer = rb_ext_page_get_footer(page);
+
+	if (reader)
+		atomic_set(&footer->reader_status, status);
+	else
+		atomic_set(&footer->writer_status, status);
+}
+
+static void rb_footer_writer_status(struct hyp_buffer_page *bpage,
+				    unsigned long status)
+{
+	rb_set_footer_status(bpage, status, false);
+}
+
+static void rb_footer_reader_status(struct hyp_buffer_page *bpage,
+				    unsigned long status)
+{
+	rb_set_footer_status(bpage, status, true);
+}
+
+static struct hyp_buffer_page *rb_hyp_buffer_page(struct list_head *list)
+{
+	unsigned long ptr = (unsigned long)list & ~HYP_RB_FLAG_MASK;
+
+	return container_of((struct list_head *)ptr, struct hyp_buffer_page, list);
+}
+
+static struct hyp_buffer_page *rb_next_page(struct hyp_buffer_page *bpage)
+{
+	return rb_hyp_buffer_page(bpage->list.next);
+}
+
+static bool rb_is_head_page(struct hyp_buffer_page *bpage)
+{
+	return (unsigned long)bpage->list.prev->next & HYP_RB_PAGE_HEAD;
+}
+
+static struct hyp_buffer_page *rb_set_head_page(struct hyp_rb_per_cpu *cpu_buffer)
+{
+	struct hyp_buffer_page *bpage, *prev_head;
+	int cnt = 0;
+again:
+	bpage = prev_head = cpu_buffer->head_page;
+	do {
+		if (rb_is_head_page(bpage)) {
+			cpu_buffer->head_page = bpage;
+			rb_footer_reader_status(prev_head, 0);
+			rb_footer_reader_status(bpage, RB_PAGE_FT_HEAD);
+			return bpage;
+		}
+
+		bpage = rb_next_page(bpage);
+	} while (bpage != prev_head);
+
+	cnt++;
+
+	/* We might have race with the writer let's try again */
+	if (cnt < 3)
+		goto again;
+
+	return NULL;
+}
+
+static int rb_swap_reader_page(struct hyp_rb_per_cpu *cpu_buffer)
+{
+	unsigned long *old_head_link, old_link_val, new_link_val, overrun;
+	struct hyp_buffer_page *head, *reader = cpu_buffer->reader_page;
+	struct rb_ext_page_footer *footer;
+
+	rb_footer_reader_status(cpu_buffer->reader_page, 0);
+spin:
+	/* Update the cpu_buffer->header_page according to HYP_RB_PAGE_HEAD */
+	head = rb_set_head_page(cpu_buffer);
+	if (!head)
+		return -ENODEV;
+
+	/* Connect the reader page around the header page */
+	reader->list.next = head->list.next;
+	reader->list.prev = head->list.prev;
+
+	/* The reader page points to the new header page */
+	rb_set_flag(reader, HYP_RB_PAGE_HEAD);
+
+	/*
+	 * Paired with the cmpxchg in rb_move_tail(). Order the read of the head
+	 * page and overrun.
+	 */
+	smp_mb();
+	overrun = atomic_read(&cpu_buffer->overrun);
+
+	/* Try to swap the prev head link to the reader page */
+	old_head_link = (unsigned long *)&reader->list.prev->next;
+	old_link_val = (*old_head_link & ~HYP_RB_FLAG_MASK) | HYP_RB_PAGE_HEAD;
+	new_link_val = (unsigned long)&reader->list;
+	if (cmpxchg(old_head_link, old_link_val, new_link_val)
+		      != old_link_val)
+		goto spin;
+
+	cpu_buffer->head_page = rb_hyp_buffer_page(reader->list.next);
+	cpu_buffer->head_page->list.prev = &reader->list;
+	cpu_buffer->reader_page = head;
+
+	rb_footer_reader_status(cpu_buffer->reader_page, RB_PAGE_FT_READER);
+	rb_footer_reader_status(cpu_buffer->head_page, RB_PAGE_FT_HEAD);
+
+	footer = rb_ext_page_get_footer(cpu_buffer->reader_page->page);
+	footer->stats.overrun = overrun;
+
+	return 0;
+}
+
+static struct hyp_buffer_page *
+rb_move_tail(struct hyp_rb_per_cpu *cpu_buffer)
+{
+	struct hyp_buffer_page *tail_page, *new_tail, *new_head;
+
+	tail_page = cpu_buffer->tail_page;
+	new_tail = rb_next_page(tail_page);
+again:
+	/*
+	 * We caught the reader ... Let's try to move the head page.
+	 * The writer can only rely on ->next links to check if this is head.
+	 */
+	if ((unsigned long)tail_page->list.next & HYP_RB_PAGE_HEAD) {
+		/* The reader moved the head in between */
+		if (!rb_set_flag(tail_page, HYP_RB_PAGE_UPDATE))
+			goto again;
+
+		atomic_add(atomic_read(&new_tail->entries), &cpu_buffer->overrun);
+
+		/* Move the head */
+		rb_set_flag(new_tail, HYP_RB_PAGE_HEAD);
+
+		/* The new head is in place, reset the update flag */
+		rb_set_flag(tail_page, 0);
+
+		new_head = rb_next_page(new_tail);
+	}
+
+	rb_footer_writer_status(tail_page, 0);
+	rb_footer_writer_status(new_tail, RB_PAGE_FT_COMMIT);
+
+	local_set(&new_tail->page->commit, 0);
+
+	atomic_set(&new_tail->write, 0);
+	atomic_set(&new_tail->entries, 0);
+
+	atomic_inc(&cpu_buffer->pages_touched);
+
+	cpu_buffer->tail_page = new_tail;
+
+	return new_tail;
+}
+
+unsigned long rb_event_size(unsigned long length)
+{
+	struct ring_buffer_event *event;
+
+	return length + RB_EVNT_HDR_SIZE + sizeof(event->array[0]);
+}
+
+static struct ring_buffer_event *
+rb_add_ts_extend(struct ring_buffer_event *event, u64 delta)
+{
+	event->type_len = RINGBUF_TYPE_TIME_EXTEND;
+	event->time_delta = delta & TS_MASK;
+	event->array[0] = delta >> TS_SHIFT;
+
+	return (struct ring_buffer_event *)((unsigned long)event + 8);
+}
+
+static struct ring_buffer_event *
+rb_reserve_next(struct hyp_rb_per_cpu *cpu_buffer, unsigned long length)
+{
+	unsigned long ts_ext_size = 0, event_size = rb_event_size(length);
+	struct hyp_buffer_page *tail_page = cpu_buffer->tail_page;
+	struct ring_buffer_event *event;
+	unsigned long write, prev_write;
+	u64 ts, time_delta;
+
+	ts = trace_clock();
+
+	time_delta = ts - atomic64_read(&cpu_buffer->write_stamp);
+
+	if (test_time_stamp(time_delta))
+		ts_ext_size = 8;
+
+	prev_write = atomic_read(&tail_page->write);
+	write = prev_write + event_size + ts_ext_size;
+
+	if (unlikely(write > BUF_EXT_PAGE_SIZE))
+		tail_page = rb_move_tail(cpu_buffer);
+
+	if (!atomic_read(&tail_page->entries)) {
+		tail_page->page->time_stamp = ts;
+		time_delta = 0;
+		ts_ext_size = 0;
+		write = event_size;
+		prev_write = 0;
+	}
+
+	atomic_set(&tail_page->write, write);
+	atomic_inc(&tail_page->entries);
+
+	local_set(&tail_page->page->commit, write);
+
+	atomic_inc(&cpu_buffer->nr_entries);
+	atomic64_set(&cpu_buffer->write_stamp, ts);
+
+	event = (struct ring_buffer_event *)(tail_page->page->data +
+					     prev_write);
+	if (ts_ext_size) {
+		event = rb_add_ts_extend(event, time_delta);
+		time_delta = 0;
+	}
+
+	event->type_len = 0;
+	event->time_delta = time_delta;
+	event->array[0] = event_size - RB_EVNT_HDR_SIZE;
+
+	return event;
+}
+
+void *
+rb_reserve_trace_entry(struct hyp_rb_per_cpu *cpu_buffer, unsigned long length)
+{
+	struct ring_buffer_event *rb_event;
+
+	rb_event = rb_reserve_next(cpu_buffer, length);
+
+	return &rb_event->array[1];
+}
+
+static int rb_update_footers(struct hyp_rb_per_cpu *cpu_buffer)
+{
+	unsigned long entries, pages_touched, overrun;
+	struct rb_ext_page_footer *footer;
+	struct buffer_data_page *reader;
+
+	if (!rb_set_head_page(cpu_buffer))
+		return -ENODEV;
+
+	reader = cpu_buffer->reader_page->page;
+	footer = rb_ext_page_get_footer(reader);
+
+	entries = atomic_read(&cpu_buffer->nr_entries);
+	footer->stats.entries = entries;
+	pages_touched = atomic_read(&cpu_buffer->pages_touched);
+	footer->stats.pages_touched = pages_touched;
+	overrun = atomic_read(&cpu_buffer->overrun);
+	footer->stats.overrun = overrun;
+
+	return 0;
+}
+
+static int rb_page_init(struct hyp_buffer_page *bpage, unsigned long hva)
+{
+	void *hyp_va = (void *)kern_hyp_va(hva);
+	int ret;
+
+	ret = hyp_pin_shared_mem(hyp_va, hyp_va + PAGE_SIZE);
+	if (ret)
+		return ret;
+
+	INIT_LIST_HEAD(&bpage->list);
+	bpage->page = (struct buffer_data_page *)hyp_va;
+
+	atomic_set(&bpage->write, 0);
+
+	rb_footer_reader_status(bpage, 0);
+	rb_footer_writer_status(bpage, 0);
+
+	return 0;
+}
+
+static bool rb_cpu_loaded(struct hyp_rb_per_cpu *cpu_buffer)
+{
+	return cpu_buffer->bpages;
+}
+
+static void rb_cpu_disable(struct hyp_rb_per_cpu *cpu_buffer)
+{
+	unsigned int prev_status;
+
+	/* Wait for release of the buffer */
+	do {
+		/* Paired with __stop_write_hyp_rb */
+		prev_status = atomic_cmpxchg_acquire(&cpu_buffer->status,
+						     HYP_RB_WRITABLE,
+						     HYP_RB_NONWRITABLE);
+	} while (prev_status == HYP_RB_WRITING);
+
+	if (prev_status == HYP_RB_WRITABLE)
+		rb_update_footers(cpu_buffer);
+}
+
+static int rb_cpu_enable(struct hyp_rb_per_cpu *cpu_buffer)
+{
+	unsigned int prev_status;
+
+	if (!rb_cpu_loaded(cpu_buffer))
+		return -EINVAL;
+
+	prev_status = atomic_cmpxchg(&cpu_buffer->status,
+				     HYP_RB_NONWRITABLE, HYP_RB_WRITABLE);
+
+	if (prev_status == HYP_RB_NONWRITABLE)
+		return 0;
+
+	return -EINVAL;
+}
+
+static void rb_cpu_teardown(struct hyp_rb_per_cpu *cpu_buffer)
+{
+	int i;
+
+	if (!rb_cpu_loaded(cpu_buffer))
+		return;
+
+	rb_cpu_disable(cpu_buffer);
+
+	for (i = 0; i < cpu_buffer->nr_pages; i++) {
+		struct hyp_buffer_page *bpage = &cpu_buffer->bpages[i];
+
+		if (!bpage->page)
+			continue;
+
+		hyp_unpin_shared_mem((void *)bpage->page,
+				     (void *)bpage->page + PAGE_SIZE);
+	}
+
+	cpu_buffer->bpages = NULL;
+}
+
+static bool rb_cpu_fits_backing(unsigned long nr_pages,
+			        struct hyp_buffer_page *start)
+{
+	unsigned long max = hyp_buffer_pages_backing.start +
+			    hyp_buffer_pages_backing.size;
+	struct hyp_buffer_page *end = start + nr_pages;
+
+	return (unsigned long)end <= max;
+}
+
+static bool rb_cpu_fits_pack(struct ring_buffer_pack *rb_pack,
+			     unsigned long pack_end)
+{
+	unsigned long *end;
+
+	/* Check we can at least read nr_pages */
+	if ((unsigned long)&rb_pack->nr_pages >= pack_end)
+		return false;
+
+	end = &rb_pack->page_va[rb_pack->nr_pages];
+
+	return (unsigned long)end <= pack_end;
+}
+
+static int rb_cpu_init(struct ring_buffer_pack *rb_pack, struct hyp_buffer_page *start,
+		       struct hyp_rb_per_cpu *cpu_buffer)
+{
+	struct hyp_buffer_page *bpage = start;
+	int i, ret;
+
+	if (!rb_pack->nr_pages ||
+	    !rb_cpu_fits_backing(rb_pack->nr_pages + 1, start))
+		return -EINVAL;
+
+	memset(cpu_buffer, 0, sizeof(*cpu_buffer));
+
+	cpu_buffer->bpages = start;
+	cpu_buffer->nr_pages = rb_pack->nr_pages + 1;
+
+	/* The reader page is not part of the ring initially */
+	ret = rb_page_init(bpage, rb_pack->reader_page_va);
+	if (ret)
+		return ret;
+
+	cpu_buffer->reader_page = bpage;
+	cpu_buffer->tail_page = bpage + 1;
+	cpu_buffer->head_page = bpage + 1;
+
+	for (i = 0; i < rb_pack->nr_pages; i++) {
+		ret = rb_page_init(++bpage, rb_pack->page_va[i]);
+		if (ret)
+			goto err;
+
+		bpage->list.next = &(bpage + 1)->list;
+		bpage->list.prev = &(bpage - 1)->list;
+	}
+
+	/* Close the ring */
+	bpage->list.next = &cpu_buffer->tail_page->list;
+	cpu_buffer->tail_page->list.prev = &bpage->list;
+
+	/* The last init'ed page points to the head page */
+	rb_set_flag(bpage, HYP_RB_PAGE_HEAD);
+
+	rb_footer_reader_status(cpu_buffer->reader_page, RB_PAGE_FT_READER);
+	rb_footer_reader_status(cpu_buffer->head_page, RB_PAGE_FT_HEAD);
+	rb_footer_writer_status(cpu_buffer->head_page, RB_PAGE_FT_COMMIT);
+
+	atomic_set(&cpu_buffer->overrun, 0);
+	atomic64_set(&cpu_buffer->write_stamp, 0);
+
+	return 0;
+err:
+	rb_cpu_teardown(cpu_buffer);
+
+	return ret;
+}
+
+static int rb_setup_bpage_backing(struct hyp_trace_pack *pack)
+{
+	unsigned long start = kern_hyp_va(pack->backing.start);
+	size_t size = pack->backing.size;
+	int ret;
+
+	if (hyp_buffer_pages_backing.size)
+		return -EBUSY;
+
+	if (!PAGE_ALIGNED(start) || !PAGE_ALIGNED(size))
+		return -EINVAL;
+
+	ret = __pkvm_host_donate_hyp(hyp_virt_to_pfn((void *)start), size >> PAGE_SHIFT);
+	if (ret)
+		return ret;
+
+	memset((void *)start, 0, size);
+
+	hyp_buffer_pages_backing.start = start;
+	hyp_buffer_pages_backing.size = size;
+
+	return 0;
+}
+
+static void rb_teardown_bpage_backing(void)
+{
+	unsigned long start = hyp_buffer_pages_backing.start;
+	size_t size = hyp_buffer_pages_backing.size;
+
+	if (!size)
+		return;
+
+	memset((void *)start, 0, size);
+
+	WARN_ON(__pkvm_hyp_donate_host(hyp_virt_to_pfn(start), size >> PAGE_SHIFT));
+
+	hyp_buffer_pages_backing.start = 0;
+	hyp_buffer_pages_backing.size = 0;
+}
+
+int __pkvm_rb_update_footers(int cpu)
+{
+	struct hyp_rb_per_cpu *cpu_buffer;
+	int ret = 0;
+
+	if (cpu >= hyp_nr_cpus)
+		return -EINVAL;
+
+	/* TODO: per-CPU lock for */
+	hyp_spin_lock(&trace_rb_lock);
+
+	cpu_buffer = per_cpu_ptr(&trace_rb, cpu);
+
+	if (!rb_cpu_loaded(cpu_buffer))
+		ret = -ENODEV;
+	else
+		ret = rb_update_footers(cpu_buffer);
+
+	hyp_spin_unlock(&trace_rb_lock);
+
+	return ret;
+}
+
+int __pkvm_rb_swap_reader_page(int cpu)
+{
+	struct hyp_rb_per_cpu *cpu_buffer = per_cpu_ptr(&trace_rb, cpu);
+	int ret = 0;
+
+	if (cpu >= hyp_nr_cpus)
+		return -EINVAL;
+
+	/* TODO: per-CPU lock for */
+	hyp_spin_lock(&trace_rb_lock);
+
+	cpu_buffer = per_cpu_ptr(&trace_rb, cpu);
+
+	if (!rb_cpu_loaded(cpu_buffer))
+		ret = -ENODEV;
+	else
+		ret = rb_swap_reader_page(cpu_buffer);
+
+	hyp_spin_unlock(&trace_rb_lock);
+
+	return ret;
+}
+
+static void __pkvm_teardown_tracing_locked(void)
+{
+	int cpu;
+
+	hyp_assert_lock_held(&trace_rb_lock);
+
+	for (cpu = 0; cpu < hyp_nr_cpus; cpu++) {
+		struct hyp_rb_per_cpu *cpu_buffer = per_cpu_ptr(&trace_rb, cpu);
+
+		rb_cpu_teardown(cpu_buffer);
+	}
+
+	rb_teardown_bpage_backing();
+}
+
+void __pkvm_teardown_tracing(void)
+{
+	hyp_spin_lock(&trace_rb_lock);
+	__pkvm_teardown_tracing_locked();
+	hyp_spin_unlock(&trace_rb_lock);
+}
+
+int __pkvm_load_tracing(unsigned long pack_hva, size_t pack_size)
+{
+	struct hyp_trace_pack *pack = (struct hyp_trace_pack *)kern_hyp_va(pack_hva);
+	struct trace_buffer_pack *trace_pack = &pack->trace_buffer_pack;
+	struct hyp_buffer_page *bpage_backing_start;
+	struct ring_buffer_pack *rb_pack;
+	int ret, cpu;
+
+	if (!pack_size || !PAGE_ALIGNED(pack_hva) || !PAGE_ALIGNED(pack_size))
+		return -EINVAL;
+
+	ret = __pkvm_host_donate_hyp(hyp_virt_to_pfn((void *)pack),
+				     pack_size >> PAGE_SHIFT);
+	if (ret)
+		return ret;
+
+	hyp_spin_lock(&trace_rb_lock);
+
+	ret = rb_setup_bpage_backing(pack);
+	if (ret)
+		goto err;
+
+	trace_clock_update(&pack->trace_clock_data);
+
+	bpage_backing_start = (struct hyp_buffer_page *)hyp_buffer_pages_backing.start;
+
+	for_each_ring_buffer_pack(rb_pack, cpu, trace_pack) {
+		struct hyp_rb_per_cpu *cpu_buffer;
+		int cpu;
+
+		ret = -EINVAL;
+		if (!rb_cpu_fits_pack(rb_pack, pack_hva + pack_size))
+			break;
+
+		cpu = rb_pack->cpu;
+		if (cpu >= hyp_nr_cpus)
+			break;
+
+		cpu_buffer = per_cpu_ptr(&trace_rb, cpu);
+
+		ret = rb_cpu_init(rb_pack, bpage_backing_start, cpu_buffer);
+		if (ret)
+			break;
+
+		/* reader page + nr pages in rb */
+		bpage_backing_start += 1 + rb_pack->nr_pages;
+	}
+err:
+	if (ret)
+		__pkvm_teardown_tracing_locked();
+
+	hyp_spin_unlock(&trace_rb_lock);
+
+	WARN_ON(__pkvm_hyp_donate_host(hyp_virt_to_pfn((void *)pack),
+				       pack_size >> PAGE_SHIFT));
+	return ret;
+}
+
+int __pkvm_enable_tracing(bool enable)
+{
+	int cpu, ret = enable ? -EINVAL : 0;
+
+	hyp_spin_lock(&trace_rb_lock);
+	for (cpu = 0; cpu < hyp_nr_cpus; cpu++) {
+		struct hyp_rb_per_cpu *cpu_buffer = per_cpu_ptr(&trace_rb, cpu);
+
+		if (enable) {
+			int __ret = rb_cpu_enable(cpu_buffer);
+
+			if (!__ret)
+				ret = 0;
+		} else {
+			rb_cpu_disable(cpu_buffer);
+		}
+
+	}
+	hyp_spin_unlock(&trace_rb_lock);
+
+	return ret;
+}
diff --git a/arch/arm64/kvm/hyp/pgtable.c b/arch/arm64/kvm/hyp/pgtable.c
index cdf8e76..1293a9b 100644
--- a/arch/arm64/kvm/hyp/pgtable.c
+++ b/arch/arm64/kvm/hyp/pgtable.c
@@ -12,43 +12,10 @@
 #include <asm/stage2_pgtable.h>
 
 
-#define KVM_PTE_TYPE			BIT(1)
-#define KVM_PTE_TYPE_BLOCK		0
-#define KVM_PTE_TYPE_PAGE		1
-#define KVM_PTE_TYPE_TABLE		1
-
-#define KVM_PTE_LEAF_ATTR_LO		GENMASK(11, 2)
-
-#define KVM_PTE_LEAF_ATTR_LO_S1_ATTRIDX	GENMASK(4, 2)
-#define KVM_PTE_LEAF_ATTR_LO_S1_AP	GENMASK(7, 6)
-#define KVM_PTE_LEAF_ATTR_LO_S1_AP_RO	3
-#define KVM_PTE_LEAF_ATTR_LO_S1_AP_RW	1
-#define KVM_PTE_LEAF_ATTR_LO_S1_SH	GENMASK(9, 8)
-#define KVM_PTE_LEAF_ATTR_LO_S1_SH_IS	3
-#define KVM_PTE_LEAF_ATTR_LO_S1_AF	BIT(10)
-
-#define KVM_PTE_LEAF_ATTR_LO_S2_MEMATTR	GENMASK(5, 2)
-#define KVM_PTE_LEAF_ATTR_LO_S2_S2AP_R	BIT(6)
-#define KVM_PTE_LEAF_ATTR_LO_S2_S2AP_W	BIT(7)
-#define KVM_PTE_LEAF_ATTR_LO_S2_SH	GENMASK(9, 8)
-#define KVM_PTE_LEAF_ATTR_LO_S2_SH_IS	3
-#define KVM_PTE_LEAF_ATTR_LO_S2_AF	BIT(10)
-
-#define KVM_PTE_LEAF_ATTR_HI		GENMASK(63, 51)
-
-#define KVM_PTE_LEAF_ATTR_HI_SW		GENMASK(58, 55)
-
-#define KVM_PTE_LEAF_ATTR_HI_S1_XN	BIT(54)
-
-#define KVM_PTE_LEAF_ATTR_HI_S2_XN	BIT(54)
-
 #define KVM_PTE_LEAF_ATTR_S2_PERMS	(KVM_PTE_LEAF_ATTR_LO_S2_S2AP_R | \
 					 KVM_PTE_LEAF_ATTR_LO_S2_S2AP_W | \
 					 KVM_PTE_LEAF_ATTR_HI_S2_XN)
 
-#define KVM_INVALID_PTE_OWNER_MASK	GENMASK(9, 2)
-#define KVM_MAX_OWNER_ID		1
-
 struct kvm_pgtable_walk_data {
 	struct kvm_pgtable		*pgt;
 	struct kvm_pgtable_walker	*walker;
@@ -57,8 +24,6 @@ struct kvm_pgtable_walk_data {
 	u64				end;
 };
 
-#define KVM_PHYS_INVALID (-1ULL)
-
 static bool kvm_phys_is_valid(u64 phys)
 {
 	return phys < BIT(id_aa64mmfr0_parange_to_phys_shift(ID_AA64MMFR0_EL1_PARANGE_MAX));
@@ -111,32 +76,6 @@ static u32 kvm_pgd_pages(u32 ia_bits, u32 start_level)
 	return __kvm_pgd_page_idx(&pgt, -1ULL) + 1;
 }
 
-static bool kvm_pte_table(kvm_pte_t pte, u32 level)
-{
-	if (level == KVM_PGTABLE_MAX_LEVELS - 1)
-		return false;
-
-	if (!kvm_pte_valid(pte))
-		return false;
-
-	return FIELD_GET(KVM_PTE_TYPE, pte) == KVM_PTE_TYPE_TABLE;
-}
-
-static kvm_pte_t kvm_phys_to_pte(u64 pa)
-{
-	kvm_pte_t pte = pa & KVM_PTE_ADDR_MASK;
-
-	if (PAGE_SHIFT == 16)
-		pte |= FIELD_PREP(KVM_PTE_ADDR_51_48, pa >> 48);
-
-	return pte;
-}
-
-static kvm_pte_t *kvm_pte_follow(kvm_pte_t pte, struct kvm_pgtable_mm_ops *mm_ops)
-{
-	return mm_ops->phys_to_virt(kvm_pte_to_phys(pte));
-}
-
 static void kvm_clear_pte(kvm_pte_t *ptep)
 {
 	WRITE_ONCE(*ptep, 0);
@@ -167,11 +106,6 @@ static kvm_pte_t kvm_init_valid_leaf_pte(u64 pa, kvm_pte_t attr, u32 level)
 	return pte;
 }
 
-static kvm_pte_t kvm_init_invalid_leaf_owner(u8 owner_id)
-{
-	return FIELD_PREP(KVM_INVALID_PTE_OWNER_MASK, owner_id);
-}
-
 static int kvm_pgtable_visitor_cb(struct kvm_pgtable_walk_data *data, u64 addr,
 				  u32 level, kvm_pte_t *ptep,
 				  enum kvm_pgtable_walk_flags flag)
@@ -334,16 +268,27 @@ struct hyp_map_data {
 
 static int hyp_set_prot_attr(enum kvm_pgtable_prot prot, kvm_pte_t *ptep)
 {
-	bool device = prot & KVM_PGTABLE_PROT_DEVICE;
-	u32 mtype = device ? MT_DEVICE_nGnRE : MT_NORMAL;
-	kvm_pte_t attr = FIELD_PREP(KVM_PTE_LEAF_ATTR_LO_S1_ATTRIDX, mtype);
-	u32 sh = KVM_PTE_LEAF_ATTR_LO_S1_SH_IS;
 	u32 ap = (prot & KVM_PGTABLE_PROT_W) ? KVM_PTE_LEAF_ATTR_LO_S1_AP_RW :
 					       KVM_PTE_LEAF_ATTR_LO_S1_AP_RO;
+	bool device = prot & KVM_PGTABLE_PROT_DEVICE;
+	u32 sh = KVM_PTE_LEAF_ATTR_LO_S1_SH_IS;
+	bool nc = prot & KVM_PGTABLE_PROT_NC;
+	kvm_pte_t attr;
+	u32 mtype;
 
-	if (!(prot & KVM_PGTABLE_PROT_R))
+	if (!(prot & KVM_PGTABLE_PROT_R) || (device && nc) ||
+			(prot & (KVM_PGTABLE_PROT_PXN | KVM_PGTABLE_PROT_UXN)))
 		return -EINVAL;
 
+	if (device)
+		mtype = MT_DEVICE_nGnRnE;
+	else if (nc)
+		mtype = MT_NORMAL_NC;
+	else
+		mtype = MT_NORMAL;
+
+	attr = FIELD_PREP(KVM_PTE_LEAF_ATTR_LO_S1_ATTRIDX, mtype);
+
 	if (prot & KVM_PGTABLE_PROT_X) {
 		if (prot & KVM_PGTABLE_PROT_W)
 			return -EINVAL;
@@ -527,7 +472,7 @@ int kvm_pgtable_hyp_init(struct kvm_pgtable *pgt, u32 va_bits,
 	pgt->start_level	= KVM_PGTABLE_MAX_LEVELS - levels;
 	pgt->mm_ops		= mm_ops;
 	pgt->mmu		= NULL;
-	pgt->force_pte_cb	= NULL;
+	pgt->pte_ops		= NULL;
 
 	return 0;
 }
@@ -565,7 +510,7 @@ void kvm_pgtable_hyp_destroy(struct kvm_pgtable *pgt)
 struct stage2_map_data {
 	u64				phys;
 	kvm_pte_t			attr;
-	u8				owner_id;
+	u64				annotation;
 
 	kvm_pte_t			*anchor;
 	kvm_pte_t			*childp;
@@ -621,18 +566,39 @@ static bool stage2_has_fwb(struct kvm_pgtable *pgt)
 #define KVM_S2_MEMATTR(pgt, attr) PAGE_S2_MEMATTR(attr, stage2_has_fwb(pgt))
 
 static int stage2_set_prot_attr(struct kvm_pgtable *pgt, enum kvm_pgtable_prot prot,
-				kvm_pte_t *ptep)
+		kvm_pte_t *ptep)
 {
+	u64 exec_type = KVM_PTE_LEAF_ATTR_HI_S2_XN_XN;
 	bool device = prot & KVM_PGTABLE_PROT_DEVICE;
-	kvm_pte_t attr = device ? KVM_S2_MEMATTR(pgt, DEVICE_nGnRE) :
-			    KVM_S2_MEMATTR(pgt, NORMAL);
 	u32 sh = KVM_PTE_LEAF_ATTR_LO_S2_SH_IS;
+	bool nc = prot & KVM_PGTABLE_PROT_NC;
+	enum kvm_pgtable_prot exec_prot;
+	kvm_pte_t attr;
 
-	if (!(prot & KVM_PGTABLE_PROT_X))
-		attr |= KVM_PTE_LEAF_ATTR_HI_S2_XN;
-	else if (device)
-		return -EINVAL;
+	if (device)
+		attr = KVM_S2_MEMATTR(pgt, DEVICE_nGnRE);
+	else if (nc)
+		attr = KVM_S2_MEMATTR(pgt, NORMAL_NC);
+	else
+		attr = KVM_S2_MEMATTR(pgt, NORMAL);
 
+	exec_prot = prot & (KVM_PGTABLE_PROT_X | KVM_PGTABLE_PROT_PXN | KVM_PGTABLE_PROT_UXN);
+	switch(exec_prot) {
+	case KVM_PGTABLE_PROT_X:
+		goto set_ap;
+	case KVM_PGTABLE_PROT_PXN:
+		exec_type = KVM_PTE_LEAF_ATTR_HI_S2_XN_PXN;
+		break;
+	case KVM_PGTABLE_PROT_UXN:
+		exec_type = KVM_PTE_LEAF_ATTR_HI_S2_XN_UXN;
+		break;
+	default:
+		if (exec_prot)
+			return -EINVAL;
+	}
+	attr |= FIELD_PREP(KVM_PTE_LEAF_ATTR_HI_S2_XN, exec_type);
+
+set_ap:
 	if (prot & KVM_PGTABLE_PROT_R)
 		attr |= KVM_PTE_LEAF_ATTR_LO_S2_S2AP_R;
 
@@ -658,8 +624,21 @@ enum kvm_pgtable_prot kvm_pgtable_stage2_pte_prot(kvm_pte_t pte)
 		prot |= KVM_PGTABLE_PROT_R;
 	if (pte & KVM_PTE_LEAF_ATTR_LO_S2_S2AP_W)
 		prot |= KVM_PGTABLE_PROT_W;
-	if (!(pte & KVM_PTE_LEAF_ATTR_HI_S2_XN))
+	switch(FIELD_GET(KVM_PTE_LEAF_ATTR_HI_S2_XN, pte)) {
+	case 0:
 		prot |= KVM_PGTABLE_PROT_X;
+		break;
+	case KVM_PTE_LEAF_ATTR_HI_S2_XN_PXN:
+		prot |= KVM_PGTABLE_PROT_PXN;
+		break;
+	case KVM_PTE_LEAF_ATTR_HI_S2_XN_UXN:
+		prot |= KVM_PGTABLE_PROT_UXN;
+		break;
+	case KVM_PTE_LEAF_ATTR_HI_S2_XN_XN:
+		break;
+	default:
+		WARN_ON(1);
+	}
 
 	return prot;
 }
@@ -672,14 +651,14 @@ static bool stage2_pte_needs_update(kvm_pte_t old, kvm_pte_t new)
 	return ((old ^ new) & (~KVM_PTE_LEAF_ATTR_S2_PERMS));
 }
 
-static bool stage2_pte_is_counted(kvm_pte_t pte)
+static void stage2_clear_pte(kvm_pte_t *ptep, struct kvm_s2_mmu *mmu, u64 addr,
+			     u32 level)
 {
-	/*
-	 * The refcount tracks valid entries as well as invalid entries if they
-	 * encode ownership of a page to another entity than the page-table
-	 * owner, whose id is 0.
-	 */
-	return !!pte;
+	if (!kvm_pte_valid(*ptep))
+		return;
+
+	kvm_clear_pte(ptep);
+	kvm_call_hyp(__kvm_tlb_flush_vmid_ipa, mmu, addr, level);
 }
 
 static void stage2_put_pte(kvm_pte_t *ptep, struct kvm_s2_mmu *mmu, u64 addr,
@@ -689,23 +668,21 @@ static void stage2_put_pte(kvm_pte_t *ptep, struct kvm_s2_mmu *mmu, u64 addr,
 	 * Clear the existing PTE, and perform break-before-make with
 	 * TLB maintenance if it was valid.
 	 */
-	if (kvm_pte_valid(*ptep)) {
-		kvm_clear_pte(ptep);
-		kvm_call_hyp(__kvm_tlb_flush_vmid_ipa, mmu, addr, level);
-	}
-
+	stage2_clear_pte(ptep, mmu, addr, level);
 	mm_ops->put_page(ptep);
 }
 
 static bool stage2_pte_cacheable(struct kvm_pgtable *pgt, kvm_pte_t pte)
 {
 	u64 memattr = pte & KVM_PTE_LEAF_ATTR_LO_S2_MEMATTR;
-	return memattr == KVM_S2_MEMATTR(pgt, NORMAL);
+	return kvm_pte_valid(pte) && memattr == KVM_S2_MEMATTR(pgt, NORMAL);
 }
 
 static bool stage2_pte_executable(kvm_pte_t pte)
 {
-	return !(pte & KVM_PTE_LEAF_ATTR_HI_S2_XN);
+	kvm_pte_t xn = FIELD_GET(KVM_PTE_LEAF_ATTR_HI_S2_XN, pte);
+
+	return kvm_pte_valid(pte) && xn != KVM_PTE_LEAF_ATTR_HI_S2_XN_XN;
 }
 
 static bool stage2_leaf_mapping_allowed(u64 addr, u64 end, u32 level,
@@ -724,6 +701,7 @@ static int stage2_map_walker_try_leaf(u64 addr, u64 end, u32 level,
 	kvm_pte_t new, old = *ptep;
 	u64 granule = kvm_granule_size(level), phys = data->phys;
 	struct kvm_pgtable *pgt = data->mmu->pgt;
+	struct kvm_pgtable_pte_ops *pte_ops = pgt->pte_ops;
 	struct kvm_pgtable_mm_ops *mm_ops = data->mm_ops;
 
 	if (!stage2_leaf_mapping_allowed(addr, end, level, data))
@@ -732,32 +710,41 @@ static int stage2_map_walker_try_leaf(u64 addr, u64 end, u32 level,
 	if (kvm_phys_is_valid(phys))
 		new = kvm_init_valid_leaf_pte(phys, data->attr, level);
 	else
-		new = kvm_init_invalid_leaf_owner(data->owner_id);
+		new = data->annotation;
 
-	if (stage2_pte_is_counted(old)) {
-		/*
-		 * Skip updating the PTE if we are trying to recreate the exact
-		 * same mapping or only change the access permissions. Instead,
-		 * the vCPU will exit one more time from guest if still needed
-		 * and then go through the path of relaxing permissions.
-		 */
-		if (!stage2_pte_needs_update(old, new))
-			return -EAGAIN;
+	/*
+	 * Skip updating the PTE if we are trying to recreate the exact
+	 * same mapping or only change the access permissions. Instead,
+	 * the vCPU will exit one more time from guest if still needed
+	 * and then go through the path of relaxing permissions.
+	 */
+	if (!stage2_pte_needs_update(old, new))
+		return -EAGAIN;
 
-		stage2_put_pte(ptep, data->mmu, addr, level, mm_ops);
-	}
+	if (pte_ops->pte_is_counted_cb(old, level))
+		mm_ops->put_page(ptep);
+
+	/*
+	 * If we're only changing software bits, then we don't need to
+	 * do anything else.
+	 */
+	if (!((old ^ new) & ~KVM_PTE_LEAF_ATTR_HI_SW))
+		goto out_set_pte;
+
+	stage2_clear_pte(ptep, data->mmu, addr, level);
 
 	/* Perform CMOs before installation of the guest stage-2 PTE */
 	if (mm_ops->dcache_clean_inval_poc && stage2_pte_cacheable(pgt, new))
 		mm_ops->dcache_clean_inval_poc(kvm_pte_follow(new, mm_ops),
-						granule);
-
+					       granule);
 	if (mm_ops->icache_inval_pou && stage2_pte_executable(new))
 		mm_ops->icache_inval_pou(kvm_pte_follow(new, mm_ops), granule);
 
-	smp_store_release(ptep, new);
-	if (stage2_pte_is_counted(new))
+out_set_pte:
+	if (pte_ops->pte_is_counted_cb(new, level))
 		mm_ops->get_page(ptep);
+
+	smp_store_release(ptep, new);
 	if (kvm_phys_is_valid(phys))
 		data->phys += granule;
 	return 0;
@@ -790,11 +777,13 @@ static int stage2_map_walk_leaf(u64 addr, u64 end, u32 level, kvm_pte_t *ptep,
 				struct stage2_map_data *data)
 {
 	struct kvm_pgtable_mm_ops *mm_ops = data->mm_ops;
+	struct kvm_pgtable *pgt = data->mmu->pgt;
+	struct kvm_pgtable_pte_ops *pte_ops = pgt->pte_ops;
 	kvm_pte_t *childp, pte = *ptep;
 	int ret;
 
 	if (data->anchor) {
-		if (stage2_pte_is_counted(pte))
+		if (pte_ops->pte_is_counted_cb(pte, level))
 			mm_ops->put_page(ptep);
 
 		return 0;
@@ -819,8 +808,15 @@ static int stage2_map_walk_leaf(u64 addr, u64 end, u32 level, kvm_pte_t *ptep,
 	 * a table. Accesses beyond 'end' that fall within the new table
 	 * will be mapped lazily.
 	 */
-	if (stage2_pte_is_counted(pte))
+	if (pte_ops->pte_is_counted_cb(pte, level)) {
 		stage2_put_pte(ptep, data->mmu, addr, level, mm_ops);
+	} else {
+		/*
+		 * On non-refcounted PTEs we just clear them out without
+		 * dropping the refcount.
+		 */
+		stage2_clear_pte(ptep, data->mmu, addr, level);
+	}
 
 	kvm_set_table_pte(ptep, childp, mm_ops);
 	mm_ops->get_page(ptep);
@@ -828,6 +824,35 @@ static int stage2_map_walk_leaf(u64 addr, u64 end, u32 level, kvm_pte_t *ptep,
 	return 0;
 }
 
+static void stage2_coalesce_walk_table_post(u64 addr, u64 end, u32 level,
+					    kvm_pte_t *ptep,
+					    struct stage2_map_data *data)
+{
+	struct kvm_pgtable_mm_ops *mm_ops = data->mm_ops;
+	kvm_pte_t *childp = kvm_pte_follow(*ptep, mm_ops);
+
+	/*
+	 * Decrement the refcount only on the set ownership path to avoid a
+	 * loop situation when the following happens:
+	 *  1. We take a host stage2 fault and we create a small mapping which
+	 *  has default attributes (is not refcounted).
+	 *  2. On the way back we execute the post handler and we zap the
+	 *  table that holds our mapping.
+	 */
+	if (kvm_phys_is_valid(data->phys) ||
+	    !kvm_level_supports_block_mapping(level))
+		return;
+
+	/*
+	 * Free a page that is not referenced anymore and drop the reference
+	 * of the page table page.
+	 */
+	if (mm_ops->page_count(childp) == 1) {
+		stage2_put_pte(ptep, data->mmu, addr, level, mm_ops);
+		mm_ops->put_page(childp);
+	}
+}
+
 static int stage2_map_walk_table_post(u64 addr, u64 end, u32 level,
 				      kvm_pte_t *ptep,
 				      struct stage2_map_data *data)
@@ -836,8 +861,11 @@ static int stage2_map_walk_table_post(u64 addr, u64 end, u32 level,
 	kvm_pte_t *childp;
 	int ret = 0;
 
-	if (!data->anchor)
+	if (!data->anchor) {
+		stage2_coalesce_walk_table_post(addr, end, level, ptep,
+						data);
 		return 0;
+	}
 
 	if (data->anchor == ptep) {
 		childp = data->childp;
@@ -895,12 +923,12 @@ int kvm_pgtable_stage2_map(struct kvm_pgtable *pgt, u64 addr, u64 size,
 			   void *mc)
 {
 	int ret;
+	struct kvm_pgtable_pte_ops *pte_ops = pgt->pte_ops;
 	struct stage2_map_data map_data = {
 		.phys		= ALIGN_DOWN(phys, PAGE_SIZE),
 		.mmu		= pgt->mmu,
 		.memcache	= mc,
 		.mm_ops		= pgt->mm_ops,
-		.force_pte	= pgt->force_pte_cb && pgt->force_pte_cb(addr, addr + size, prot),
 	};
 	struct kvm_pgtable_walker walker = {
 		.cb		= stage2_map_walker,
@@ -910,6 +938,9 @@ int kvm_pgtable_stage2_map(struct kvm_pgtable *pgt, u64 addr, u64 size,
 		.arg		= &map_data,
 	};
 
+	if (pte_ops->force_pte_cb)
+		map_data.force_pte = pte_ops->force_pte_cb(addr, addr + size, prot);
+
 	if (WARN_ON((pgt->flags & KVM_PGTABLE_S2_IDMAP) && (addr != phys)))
 		return -EINVAL;
 
@@ -922,8 +953,8 @@ int kvm_pgtable_stage2_map(struct kvm_pgtable *pgt, u64 addr, u64 size,
 	return ret;
 }
 
-int kvm_pgtable_stage2_set_owner(struct kvm_pgtable *pgt, u64 addr, u64 size,
-				 void *mc, u8 owner_id)
+int kvm_pgtable_stage2_annotate(struct kvm_pgtable *pgt, u64 addr, u64 size,
+				void *mc, kvm_pte_t annotation)
 {
 	int ret;
 	struct stage2_map_data map_data = {
@@ -931,8 +962,8 @@ int kvm_pgtable_stage2_set_owner(struct kvm_pgtable *pgt, u64 addr, u64 size,
 		.mmu		= pgt->mmu,
 		.memcache	= mc,
 		.mm_ops		= pgt->mm_ops,
-		.owner_id	= owner_id,
 		.force_pte	= true,
+		.annotation	= annotation,
 	};
 	struct kvm_pgtable_walker walker = {
 		.cb		= stage2_map_walker,
@@ -942,7 +973,7 @@ int kvm_pgtable_stage2_set_owner(struct kvm_pgtable *pgt, u64 addr, u64 size,
 		.arg		= &map_data,
 	};
 
-	if (owner_id > KVM_MAX_OWNER_ID)
+	if (annotation & PTE_VALID)
 		return -EINVAL;
 
 	ret = kvm_pgtable_walk(pgt, addr, size, &walker);
@@ -956,11 +987,12 @@ static int stage2_unmap_walker(u64 addr, u64 end, u32 level, kvm_pte_t *ptep,
 	struct kvm_pgtable *pgt = arg;
 	struct kvm_s2_mmu *mmu = pgt->mmu;
 	struct kvm_pgtable_mm_ops *mm_ops = pgt->mm_ops;
+	struct kvm_pgtable_pte_ops *pte_ops = pgt->pte_ops;
 	kvm_pte_t pte = *ptep, *childp = NULL;
 	bool need_flush = false;
 
 	if (!kvm_pte_valid(pte)) {
-		if (stage2_pte_is_counted(pte)) {
+		if (pte_ops->pte_is_counted_cb(pte, level)) {
 			kvm_clear_pte(ptep);
 			mm_ops->put_page(ptep);
 		}
@@ -981,7 +1013,10 @@ static int stage2_unmap_walker(u64 addr, u64 end, u32 level, kvm_pte_t *ptep,
 	 * block entry and rely on the remaining portions being faulted
 	 * back lazily.
 	 */
-	stage2_put_pte(ptep, mmu, addr, level, mm_ops);
+	if (pte_ops->pte_is_counted_cb(pte, level))
+		stage2_put_pte(ptep, mmu, addr, level, mm_ops);
+	else
+		stage2_clear_pte(ptep, mmu, addr, level);
 
 	if (need_flush && mm_ops->dcache_clean_inval_poc)
 		mm_ops->dcache_clean_inval_poc(kvm_pte_follow(pte, mm_ops),
@@ -1004,6 +1039,30 @@ int kvm_pgtable_stage2_unmap(struct kvm_pgtable *pgt, u64 addr, u64 size)
 	return kvm_pgtable_walk(pgt, addr, size, &walker);
 }
 
+static int stage2_reclaim_leaf_walker(u64 addr, u64 end, u32 level, kvm_pte_t *ptep,
+				      enum kvm_pgtable_walk_flags flag, void * const arg)
+{
+	stage2_coalesce_walk_table_post(addr, end, level, ptep, arg);
+
+	return 0;
+}
+
+int kvm_pgtable_stage2_reclaim_leaves(struct kvm_pgtable *pgt, u64 addr, u64 size)
+{
+	struct stage2_map_data map_data = {
+		.phys		= KVM_PHYS_INVALID,
+		.mmu		= pgt->mmu,
+		.mm_ops		= pgt->mm_ops,
+	};
+	struct kvm_pgtable_walker walker = {
+		.cb	= stage2_reclaim_leaf_walker,
+		.arg	= &map_data,
+		.flags	= KVM_PGTABLE_WALK_TABLE_POST,
+	};
+
+	return kvm_pgtable_walk(pgt, addr, size, &walker);
+}
+
 struct stage2_attr_data {
 	kvm_pte_t			attr_set;
 	kvm_pte_t			attr_clr;
@@ -1122,7 +1181,7 @@ int kvm_pgtable_stage2_relax_perms(struct kvm_pgtable *pgt, u64 addr,
 	u32 level;
 	kvm_pte_t set = 0, clr = 0;
 
-	if (prot & KVM_PTE_LEAF_ATTR_HI_SW)
+	if (prot & !KVM_PGTABLE_PROT_RWX)
 		return -EINVAL;
 
 	if (prot & KVM_PGTABLE_PROT_R)
@@ -1148,7 +1207,7 @@ static int stage2_flush_walker(u64 addr, u64 end, u32 level, kvm_pte_t *ptep,
 	struct kvm_pgtable_mm_ops *mm_ops = pgt->mm_ops;
 	kvm_pte_t pte = *ptep;
 
-	if (!kvm_pte_valid(pte) || !stage2_pte_cacheable(pgt, pte))
+	if (!stage2_pte_cacheable(pgt, pte))
 		return 0;
 
 	if (mm_ops->dcache_clean_inval_poc)
@@ -1175,7 +1234,7 @@ int kvm_pgtable_stage2_flush(struct kvm_pgtable *pgt, u64 addr, u64 size)
 int __kvm_pgtable_stage2_init(struct kvm_pgtable *pgt, struct kvm_s2_mmu *mmu,
 			      struct kvm_pgtable_mm_ops *mm_ops,
 			      enum kvm_pgtable_stage2_flags flags,
-			      kvm_pgtable_force_pte_cb_t force_pte_cb)
+			      struct kvm_pgtable_pte_ops *pte_ops)
 {
 	size_t pgd_sz;
 	u64 vtcr = mmu->arch->vtcr;
@@ -1193,21 +1252,32 @@ int __kvm_pgtable_stage2_init(struct kvm_pgtable *pgt, struct kvm_s2_mmu *mmu,
 	pgt->mm_ops		= mm_ops;
 	pgt->mmu		= mmu;
 	pgt->flags		= flags;
-	pgt->force_pte_cb	= force_pte_cb;
+	pgt->pte_ops		= pte_ops;
 
 	/* Ensure zeroed PGD pages are visible to the hardware walker */
 	dsb(ishst);
 	return 0;
 }
 
+size_t kvm_pgtable_stage2_pgd_size(u64 vtcr)
+{
+	u32 ia_bits = VTCR_EL2_IPA(vtcr);
+	u32 sl0 = FIELD_GET(VTCR_EL2_SL0_MASK, vtcr);
+	u32 start_level = VTCR_EL2_TGRAN_SL0_BASE - sl0;
+
+	return kvm_pgd_pages(ia_bits, start_level) * PAGE_SIZE;
+}
+
 static int stage2_free_walker(u64 addr, u64 end, u32 level, kvm_pte_t *ptep,
 			      enum kvm_pgtable_walk_flags flag,
 			      void * const arg)
 {
-	struct kvm_pgtable_mm_ops *mm_ops = arg;
+	struct kvm_pgtable *pgt = arg;
+	struct kvm_pgtable_mm_ops *mm_ops = pgt->mm_ops;
+	struct kvm_pgtable_pte_ops *pte_ops = pgt->pte_ops;
 	kvm_pte_t pte = *ptep;
 
-	if (!stage2_pte_is_counted(pte))
+	if (!pte_ops->pte_is_counted_cb(pte, level))
 		return 0;
 
 	mm_ops->put_page(ptep);
@@ -1225,7 +1295,7 @@ void kvm_pgtable_stage2_destroy(struct kvm_pgtable *pgt)
 		.cb	= stage2_free_walker,
 		.flags	= KVM_PGTABLE_WALK_LEAF |
 			  KVM_PGTABLE_WALK_TABLE_POST,
-		.arg	= pgt->mm_ops,
+		.arg	= pgt,
 	};
 
 	WARN_ON(kvm_pgtable_walk(pgt, 0, BIT(pgt->ia_bits), &walker));
diff --git a/arch/arm64/kvm/hyp/vgic-v3-sr.c b/arch/arm64/kvm/hyp/vgic-v3-sr.c
index 6cb638b..7b397fa 100644
--- a/arch/arm64/kvm/hyp/vgic-v3-sr.c
+++ b/arch/arm64/kvm/hyp/vgic-v3-sr.c
@@ -330,7 +330,7 @@ void __vgic_v3_deactivate_traps(struct vgic_v3_cpu_if *cpu_if)
 		write_gicreg(0, ICH_HCR_EL2);
 }
 
-void __vgic_v3_save_aprs(struct vgic_v3_cpu_if *cpu_if)
+static void __vgic_v3_save_aprs(struct vgic_v3_cpu_if *cpu_if)
 {
 	u64 val;
 	u32 nr_pre_bits;
@@ -363,7 +363,7 @@ void __vgic_v3_save_aprs(struct vgic_v3_cpu_if *cpu_if)
 	}
 }
 
-void __vgic_v3_restore_aprs(struct vgic_v3_cpu_if *cpu_if)
+static void __vgic_v3_restore_aprs(struct vgic_v3_cpu_if *cpu_if)
 {
 	u64 val;
 	u32 nr_pre_bits;
@@ -455,16 +455,35 @@ u64 __vgic_v3_get_gic_config(void)
 	return val;
 }
 
-u64 __vgic_v3_read_vmcr(void)
+static u64 __vgic_v3_read_vmcr(void)
 {
 	return read_gicreg(ICH_VMCR_EL2);
 }
 
-void __vgic_v3_write_vmcr(u32 vmcr)
+static void __vgic_v3_write_vmcr(u32 vmcr)
 {
 	write_gicreg(vmcr, ICH_VMCR_EL2);
 }
 
+void __vgic_v3_save_vmcr_aprs(struct vgic_v3_cpu_if *cpu_if)
+{
+	__vgic_v3_save_aprs(cpu_if);
+	if (cpu_if->vgic_sre)
+		cpu_if->vgic_vmcr = __vgic_v3_read_vmcr();
+}
+
+void __vgic_v3_restore_vmcr_aprs(struct vgic_v3_cpu_if *cpu_if)
+{
+	/*
+	 * If dealing with a GICv2 emulation on GICv3, VMCR_EL2.VFIQen
+	 * is dependent on ICC_SRE_EL1.SRE, and we have to perform the
+	 * VMCR_EL2 save/restore in the world switch.
+	 */
+	if (cpu_if->vgic_sre)
+		__vgic_v3_write_vmcr(cpu_if->vgic_vmcr);
+	__vgic_v3_restore_aprs(cpu_if);
+}
+
 static int __vgic_v3_bpr_min(void)
 {
 	/* See Pseudocode for VPriorityGroup */
diff --git a/arch/arm64/kvm/hyp/vhe/switch.c b/arch/arm64/kvm/hyp/vhe/switch.c
index 45ac4a5..91211f86 100644
--- a/arch/arm64/kvm/hyp/vhe/switch.c
+++ b/arch/arm64/kvm/hyp/vhe/switch.c
@@ -55,7 +55,7 @@ static void __activate_traps(struct kvm_vcpu *vcpu)
 
 	val |= CPTR_EL2_TAM;
 
-	if (guest_owns_fp_regs(vcpu)) {
+	if (vcpu->arch.fp_state == FP_STATE_GUEST_OWNED) {
 		if (vcpu_has_sve(vcpu))
 			val |= CPACR_EL1_ZEN_EL0EN | CPACR_EL1_ZEN_EL1EN;
 	} else {
@@ -102,6 +102,21 @@ void deactivate_traps_vhe_put(struct kvm_vcpu *vcpu)
 	__deactivate_traps_common(vcpu);
 }
 
+static void __deactivate_fpsimd_traps(struct kvm_vcpu *vcpu)
+{
+	u64 reg = CPACR_EL1_FPEN_EL0EN | CPACR_EL1_FPEN_EL1EN;
+
+	if (vcpu_has_sve(vcpu))
+		reg |= CPACR_EL1_ZEN_EL0EN | CPACR_EL1_ZEN_EL1EN;
+
+	sysreg_clear_set(cpacr_el1, 0, reg);
+}
+
+static void kvm_hyp_handle_fpsimd_host(struct kvm_vcpu *vcpu)
+{
+	__fpsimd_save_state(vcpu->arch.host_fpsimd_state);
+}
+
 static const exit_handler_fn hyp_exit_handlers[] = {
 	[0 ... ESR_ELx_EC_MAX]		= NULL,
 	[ESR_ELx_EC_CP15_32]		= kvm_hyp_handle_cp15_32,
diff --git a/arch/arm64/kvm/hyp_events.c b/arch/arm64/kvm/hyp_events.c
new file mode 100644
index 0000000..4a6cfe5
--- /dev/null
+++ b/arch/arm64/kvm/hyp_events.c
@@ -0,0 +1,398 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (C) 2023 Google LLC
+ */
+
+#include <linux/tracefs.h>
+#include <linux/trace_events.h>
+
+#include <asm/kvm_host.h>
+#include <asm/kvm_hypevents_defs.h>
+#include <asm/setup.h>
+
+#include "hyp_trace.h"
+
+#define HYP_EVENT_NAME_MAX 32
+
+struct hyp_event {
+	struct trace_event_call *call;
+	char name[HYP_EVENT_NAME_MAX];
+	bool *enabled;
+};
+
+#define HYP_EVENT(__name, __proto, __struct, __assign, __printk)		\
+	HYP_EVENT_FORMAT(__name, __struct);					\
+	enum print_line_t hyp_event_trace_##__name(struct trace_iterator *iter,	\
+					  int flags, struct trace_event *event) \
+	{									\
+		struct ht_iterator *ht_iter = (struct ht_iterator *)iter;	\
+		struct trace_hyp_format_##__name __maybe_unused *__entry =	\
+			(struct trace_hyp_format_##__name *)ht_iter->ent;	\
+		trace_seq_puts(&ht_iter->seq, #__name);				\
+		trace_seq_putc(&ht_iter->seq, ' ');				\
+		trace_seq_printf(&ht_iter->seq, __printk);			\
+		trace_seq_putc(&ht_iter->seq, '\n');				\
+		return TRACE_TYPE_HANDLED;					\
+	}
+#include <asm/kvm_hypevents.h>
+
+#undef he_field
+#define he_field(_type, _item)						\
+	{								\
+		.type = #_type, .name = #_item,				\
+		.size = sizeof(_type), .align = __alignof__(_type),	\
+		.is_signed = is_signed_type(_type),			\
+	},
+#undef HYP_EVENT
+#define HYP_EVENT(__name, __proto, __struct, __assign, __printk)		\
+	static struct trace_event_fields hyp_event_fields_##__name[] = {	\
+		__struct							\
+		{}								\
+	};									\
+
+#undef __ARM64_KVM_HYPEVENTS_H_
+#include <asm/kvm_hypevents.h>
+
+#undef HYP_EVENT
+#undef HE_PRINTK
+#define __entry REC
+#define HE_PRINTK(fmt, args...) "\"" fmt "\", " __stringify(args)
+#define HYP_EVENT(__name, __proto, __struct, __assign, __printk)		\
+	static char hyp_event_print_fmt_##__name[] = __printk;			\
+	static struct trace_event_functions hyp_event_funcs_##__name = {	\
+		.trace = &hyp_event_trace_##__name,				\
+	};									\
+	static struct trace_event_class hyp_event_class_##__name = {		\
+		.system		= "nvhe-hypervisor",				\
+		.fields_array	= hyp_event_fields_##__name,			\
+		.fields		= LIST_HEAD_INIT(hyp_event_class_##__name.fields),\
+	};									\
+	static struct trace_event_call hyp_event_call_##__name = {		\
+		.class = &hyp_event_class_##__name,				\
+		.event.funcs = &hyp_event_funcs_##__name,			\
+		.print_fmt = hyp_event_print_fmt_##__name,			\
+	};									\
+	static bool hyp_event_enabled_##__name;					\
+	struct hyp_event __section("_hyp_events") hyp_event_##__name = {	\
+		.name = #__name,						\
+		.call = &hyp_event_call_##__name,				\
+		.enabled = &hyp_event_enabled_##__name,				\
+	}
+
+#undef __ARM64_KVM_HYPEVENTS_H_
+#include <asm/kvm_hypevents.h>
+
+extern struct hyp_event __hyp_events_start[];
+extern struct hyp_event __hyp_events_end[];
+
+/* hyp_event section used by the hypervisor */
+extern struct hyp_event_id __hyp_event_ids_start[];
+extern struct hyp_event_id __hyp_event_ids_end[];
+
+static struct hyp_event *find_hyp_event(const char *name)
+{
+	struct hyp_event *event = __hyp_events_start;
+
+	for (; (unsigned long)event < (unsigned long)__hyp_events_end;
+		event++) {
+		if (!strncmp(name, event->name, HYP_EVENT_NAME_MAX))
+			return event;
+	}
+
+	return NULL;
+}
+
+static int enable_hyp_event(struct hyp_event *event, bool enable)
+{
+	unsigned short id = event->call->event.type;
+	int ret;
+
+	if (enable == *event->enabled)
+		return 0;
+
+	ret = kvm_call_hyp_nvhe(__pkvm_enable_event, id, enable);
+	if (ret)
+		return ret;
+
+	*event->enabled = enable;
+
+	return 0;
+}
+
+static ssize_t
+hyp_event_write(struct file *filp, const char __user *ubuf, size_t cnt, loff_t *ppos)
+{
+	struct seq_file *seq_file = (struct seq_file *)filp->private_data;
+	struct hyp_event *evt = (struct hyp_event *)seq_file->private;
+	bool enabling;
+	int ret;
+	char c;
+
+	if (!cnt || cnt > 2)
+		return -EINVAL;
+
+	if (get_user(c, ubuf))
+		return -EFAULT;
+
+	switch (c) {
+	case '1':
+		enabling = true;
+		break;
+	case '0':
+		enabling = false;
+		break;
+	default:
+		return -EINVAL;
+	}
+
+	ret = enable_hyp_event(evt, enabling);
+	if (ret)
+		return ret;
+
+	return cnt;
+}
+
+static int hyp_event_show(struct seq_file *m, void *v)
+{
+	struct hyp_event *evt = (struct hyp_event *)m->private;
+
+	/* lock ?? Ain't no time for that ! */
+	seq_printf(m, "%d\n", *evt->enabled);
+
+	return 0;
+}
+
+static int hyp_event_open(struct inode *inode, struct file *filp)
+{
+	return single_open(filp, hyp_event_show, inode->i_private);
+}
+
+static const struct file_operations hyp_event_fops = {
+	.open		= hyp_event_open,
+	.write		= hyp_event_write,
+	.read		= seq_read,
+	.llseek		= seq_lseek,
+	.release	= single_release,
+};
+
+static int hyp_event_id_show(struct seq_file *m, void *v)
+{
+	struct hyp_event *evt = (struct hyp_event *)m->private;
+
+	seq_printf(m, "%d\n", evt->call->event.type);
+
+	return 0;
+}
+
+static int hyp_event_id_open(struct inode *inode, struct file *filp)
+{
+	return single_open(filp, hyp_event_id_show, inode->i_private);
+}
+
+static const struct file_operations hyp_event_id_fops = {
+	.open = hyp_event_id_open,
+	.read = seq_read,
+	.llseek = seq_lseek,
+	.release = single_release,
+};
+
+static int hyp_event_format_show(struct seq_file *m, void *v)
+{
+	struct hyp_event *evt = (struct hyp_event *)m->private;
+	struct trace_event_fields *field;
+	unsigned int offset = sizeof(struct hyp_entry_hdr);
+
+	seq_printf(m, "name: %s\n", evt->name);
+	seq_printf(m, "ID: %d\n", evt->call->event.type);
+	seq_puts(m, "format:\n\tfield:unsigned short common_type;\toffset:0;\tsize:2;\tsigned:0;\n");
+	seq_puts(m, "\n");
+
+	field = &evt->call->class->fields_array[0];
+	while (field->name) {
+		seq_printf(m, "\tfield:%s %s;\toffset:%u;\tsize:%u;\tsigned:%d;\n",
+			  field->type, field->name, offset, field->size,
+			  !!field->is_signed);
+		offset += field->size;
+		field++;
+	}
+
+	if (field != &evt->call->class->fields_array[0])
+		seq_puts(m, "\n");
+
+	seq_printf(m, "print fmt: %s\n", evt->call->print_fmt);
+
+	return 0;
+}
+
+static int hyp_event_format_open(struct inode *inode, struct file *file)
+{
+	return single_open(file, hyp_event_format_show, inode->i_private);
+}
+
+static const struct file_operations hyp_event_format_fops = {
+	.open = hyp_event_format_open,
+	.read = seq_read,
+	.llseek = seq_lseek,
+	.release = single_release,
+};
+
+static int hyp_header_page_show(struct seq_file *m, void *v)
+{
+	struct buffer_data_page bpage;
+
+	seq_printf(m, "\tfield: u64 timestamp;\t"
+		   "offset:0;\tsize:%lu;\tsigned:%d;\n",
+		   sizeof(bpage.time_stamp),
+		   is_signed_type(u64));
+
+	seq_printf(m, "\tfield: local_t commit;\t"
+		   "offset:%lu;\tsize:%lu;\tsigned:%d;\n",
+		   offsetof(typeof(bpage), commit),
+		   sizeof(bpage.commit),
+		   is_signed_type(long));
+
+	seq_printf(m, "\tfield: char data;\t"
+		   "offset:%lu;\tsize:%lu;\tsigned:%d;\n",
+		   offsetof(typeof(bpage), data),
+		   BUF_EXT_PAGE_SIZE,
+		   is_signed_type(char));
+
+	return 0;
+}
+
+static int hyp_header_page_open(struct inode *inode, struct file *file)
+{
+	return single_open(file, hyp_header_page_show, NULL);
+}
+
+static const struct file_operations hyp_header_page_fops = {
+	.open = hyp_header_page_open,
+	.read = seq_read,
+	.llseek = seq_lseek,
+	.release = single_release,
+};
+
+static char early_events[COMMAND_LINE_SIZE];
+
+static __init int setup_hyp_event_early(char *str)
+{
+	strscpy(early_events, str, COMMAND_LINE_SIZE);
+
+	return 1;
+}
+__setup("hyp_event=", setup_hyp_event_early);
+
+bool kvm_hyp_events_enable_early(void)
+{
+	char *token, *buf = early_events;
+	bool enabled = false;
+
+	while (true) {
+		token = strsep(&buf, ",");
+
+		if (!token)
+			break;
+
+		if (*token) {
+			struct hyp_event *event;
+			int ret;
+
+			event = find_hyp_event(token);
+			if (event) {
+				ret = enable_hyp_event(event, true);
+				if (ret)
+					pr_warn("Couldn't enable hyp event %s:%d\n",
+						token, ret);
+				else
+					enabled = true;
+			} else {
+				pr_warn("Couldn't find hyp event %s\n", token);
+			}
+		}
+
+		if (buf)
+			*(buf - 1) = ',';
+	}
+
+	return enabled;
+}
+
+void kvm_hyp_init_events_tracefs(struct dentry *parent)
+{
+	struct hyp_event *event = __hyp_events_start;
+	struct dentry *d, *event_dir;
+
+	parent = tracefs_create_dir("events", parent);
+	if (!parent) {
+		pr_err("Failed to create tracefs folder for hyp events\n");
+		return;
+	}
+
+	d = tracefs_create_file("header_page", 0400, parent, NULL,
+				&hyp_header_page_fops);
+	if (!d)
+		pr_err("Failed to create events/header_page\n");
+
+	parent = tracefs_create_dir("hyp", parent);
+	if (!parent) {
+		pr_err("Failed to create tracefs folder for hyp events\n");
+		return;
+	}
+
+	for (; (unsigned long)event < (unsigned long)__hyp_events_end; event++) {
+		event_dir = tracefs_create_dir(event->name, parent);
+		if (!event_dir) {
+			pr_err("Failed to create events/hyp/%s\n", event->name);
+			continue;
+		}
+		d = tracefs_create_file("enable", 0700, event_dir, (void *)event,
+				&hyp_event_fops);
+		if (!d)
+			pr_err("Failed to create events/hyp/%s/enable\n", event->name);
+
+		d = tracefs_create_file("id", 0400, event_dir, (void *)event,
+				&hyp_event_id_fops);
+		if (!d)
+			pr_err("Failed to create events/hyp/%s/id\n", event->name);
+
+		d = tracefs_create_file("format", 0400, event_dir, (void *)event,
+					&hyp_event_format_fops);
+		if (!d)
+			pr_err("Failed to create events/hyp/%s/format\n",
+			       event->name);
+
+	}
+}
+
+/*
+ * Register hyp events and write their id into the hyp section _hyp_event_ids.
+ */
+int kvm_hyp_init_events(void)
+{
+	struct hyp_event *event = __hyp_events_start;
+	struct hyp_event_id *hyp_event_id = __hyp_event_ids_start;
+	int ret, err = -ENODEV;
+
+	/* TODO: BUILD_BUG nr events host side / hyp side */
+
+	for (; (unsigned long)event < (unsigned long)__hyp_events_end;
+		event++, hyp_event_id++) {
+		event->call->name = event->name;
+		ret = register_trace_event(&event->call->event);
+		if (!ret) {
+			pr_warn("Couldn't register trace event for %s\n", event->name);
+			continue;
+		}
+
+		/*
+		 * Both the host and the hypervisor relies on the same hyp event
+		 * declarations from kvm_hypevents.h. We have then a 1:1
+		 * mapping.
+		 */
+		hyp_event_id->id = ret;
+
+		err = 0;
+	}
+
+	return err;
+}
diff --git a/arch/arm64/kvm/hyp_trace.c b/arch/arm64/kvm/hyp_trace.c
new file mode 100644
index 0000000..5eba729
--- /dev/null
+++ b/arch/arm64/kvm/hyp_trace.c
@@ -0,0 +1,1047 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (C) 2023 Google LLC
+ */
+
+#include <linux/arm-smccc.h>
+#include <linux/list.h>
+#include <linux/percpu-defs.h>
+#include <linux/ring_buffer.h>
+#include <linux/trace_events.h>
+#include <linux/tracefs.h>
+
+#include <asm/kvm_host.h>
+#include <asm/kvm_hyptrace.h>
+#include <asm/kvm_hypevents_defs.h>
+
+#include "hyp_constants.h"
+#include "hyp_trace.h"
+
+#define RB_POLL_MS 100
+
+#define TRACEFS_DIR "hyp"
+#define TRACEFS_MODE_WRITE 0640
+#define TRACEFS_MODE_READ 0440
+
+static bool hyp_trace_on;
+static bool hyp_free_tracing_deferred;
+static int hyp_trace_readers;
+static LIST_HEAD(hyp_pipe_readers);
+static struct trace_buffer *hyp_trace_buffer;
+static size_t hyp_trace_buffer_size = 7 << 10;
+static struct hyp_buffer_pages_backing hyp_buffer_pages_backing;
+static DEFINE_MUTEX(hyp_trace_lock);
+static DEFINE_PER_CPU(struct mutex, hyp_trace_reader_lock);
+
+static int bpage_backing_setup(struct hyp_trace_pack *pack)
+{
+	size_t backing_size;
+	void *start;
+
+	if (hyp_buffer_pages_backing.start)
+		return -EBUSY;
+
+	backing_size = STRUCT_HYP_BUFFER_PAGE_SIZE *
+		       pack->trace_buffer_pack.total_pages;
+	backing_size = PAGE_ALIGN(backing_size);
+
+	start = alloc_pages_exact(backing_size, GFP_KERNEL_ACCOUNT);
+	if (!start)
+		return -ENOMEM;
+
+	hyp_buffer_pages_backing.start = (unsigned long)start;
+	hyp_buffer_pages_backing.size = backing_size;
+	pack->backing.start = (unsigned long)start;
+	pack->backing.size = backing_size;
+
+	return 0;
+}
+
+static void bpage_backing_teardown(void)
+{
+	unsigned long backing = hyp_buffer_pages_backing.start;
+
+	if (!hyp_buffer_pages_backing.start)
+		return;
+
+	free_pages_exact((void *)backing, hyp_buffer_pages_backing.size);
+
+	hyp_buffer_pages_backing.start = 0;
+	hyp_buffer_pages_backing.size = 0;
+}
+
+/*
+ * Configure the hyp tracing clock. So far, only one is supported: "boot". This
+ * clock doesn't stop during suspend making it a good candidate. The downside is
+ * if this clock is corrected by NTP while tracing, the hyp clock will slightly
+ * drift compared to the host version.
+ */
+static void hyp_clock_setup(struct hyp_trace_pack *pack)
+{
+	struct kvm_nvhe_clock_data *clock_data = &pack->trace_clock_data;
+	struct system_time_snapshot snap;
+
+	ktime_get_snapshot(&snap);
+
+	clock_data->epoch_cyc = snap.cycles;
+	clock_data->epoch_ns = snap.boot;
+	clock_data->mult = snap.mono_mult;
+	clock_data->shift = snap.mono_shift;
+}
+
+static int __swap_reader_page(int cpu)
+{
+	return kvm_call_hyp_nvhe(__pkvm_rb_swap_reader_page, cpu);
+}
+
+static int __update_footers(int cpu)
+{
+	return kvm_call_hyp_nvhe(__pkvm_rb_update_footers, cpu);
+}
+
+struct ring_buffer_ext_cb hyp_cb = {
+	.update_footers = __update_footers,
+	.swap_reader = __swap_reader_page,
+};
+
+static inline int share_page(unsigned long va)
+{
+	return kvm_call_hyp_nvhe(__pkvm_host_share_hyp, virt_to_pfn(va), 1);
+}
+
+static inline int unshare_page(unsigned long va)
+{
+	return kvm_call_hyp_nvhe(__pkvm_host_unshare_hyp, virt_to_pfn(va), 1);
+}
+
+static int trace_pack_pages_apply(struct trace_buffer_pack *trace_pack,
+				  int (*func)(unsigned long))
+{
+	struct ring_buffer_pack *rb_pack;
+	int cpu, i, ret;
+
+	for_each_ring_buffer_pack(rb_pack, cpu, trace_pack) {
+		ret = func(rb_pack->reader_page_va);
+		if (ret)
+			return ret;
+
+		for (i = 0; i < rb_pack->nr_pages; i++) {
+			ret = func(rb_pack->page_va[i]);
+			if (ret)
+				return ret;
+		}
+	}
+
+	return 0;
+}
+
+/*
+ * hyp_trace_pack size depends on trace_buffer_pack's, so
+ * trace_buffer_setup is in charge of the allocation for the former.
+ */
+static int trace_buffer_setup(struct hyp_trace_pack **pack, size_t *pack_size)
+{
+	struct trace_buffer_pack *trace_pack;
+	int ret;
+
+	hyp_trace_buffer = ring_buffer_alloc_ext(hyp_trace_buffer_size, &hyp_cb);
+	if (!hyp_trace_buffer)
+		return -ENOMEM;
+
+	*pack_size = offsetof(struct hyp_trace_pack, trace_buffer_pack) +
+		     trace_buffer_pack_size(hyp_trace_buffer);
+	/*
+	 * The hypervisor will unmap the pack from the host to protect the
+	 * reading. Page granularity for the pack allocation ensures no other
+	 * useful data will be unmapped.
+	 */
+	*pack_size = PAGE_ALIGN(*pack_size);
+	*pack = alloc_pages_exact(*pack_size, GFP_KERNEL);
+	if (!*pack) {
+		ret = -ENOMEM;
+		goto err;
+	}
+
+	trace_pack = &(*pack)->trace_buffer_pack;
+	WARN_ON(trace_buffer_pack(hyp_trace_buffer, trace_pack));
+
+	ret = trace_pack_pages_apply(trace_pack, share_page);
+	if (ret) {
+		trace_pack_pages_apply(trace_pack, unshare_page);
+		free_pages_exact(*pack, *pack_size);
+		goto err;
+	}
+
+	return 0;
+err:
+	ring_buffer_free(hyp_trace_buffer);
+	hyp_trace_buffer = NULL;
+
+	return ret;
+}
+
+static void trace_buffer_teardown(struct trace_buffer_pack *trace_pack)
+{
+	bool alloc_trace_pack = !trace_pack;
+
+	if (alloc_trace_pack) {
+		trace_pack = kzalloc(trace_buffer_pack_size(hyp_trace_buffer), GFP_KERNEL);
+		if (!trace_pack) {
+			WARN_ON(1);
+			goto end;
+		}
+	}
+
+	WARN_ON(trace_buffer_pack(hyp_trace_buffer, trace_pack));
+	WARN_ON(trace_pack_pages_apply(trace_pack, unshare_page));
+
+	if (alloc_trace_pack)
+		kfree(trace_pack);
+end:
+	ring_buffer_free(hyp_trace_buffer);
+	hyp_trace_buffer = NULL;
+}
+
+static int hyp_load_tracing(void)
+{
+	struct hyp_trace_pack *pack;
+	size_t pack_size;
+	int ret;
+
+	ret = trace_buffer_setup(&pack, &pack_size);
+	if (ret)
+		return ret;
+
+	hyp_clock_setup(pack);
+
+	ret = bpage_backing_setup(pack);
+	if (ret)
+		goto end_buffer_teardown;
+
+	ret = kvm_call_hyp_nvhe(__pkvm_load_tracing, (unsigned long)pack, pack_size);
+	if (!ret)
+		goto end_free_pack;
+
+	bpage_backing_teardown();
+end_buffer_teardown:
+	trace_buffer_teardown(&pack->trace_buffer_pack);
+end_free_pack:
+	free_pages_exact(pack, pack_size);
+
+	return ret;
+}
+
+static void hyp_free_tracing(void)
+{
+	WARN_ON(hyp_trace_readers || hyp_trace_on);
+
+	if (WARN_ON(kvm_call_hyp_nvhe(__pkvm_teardown_tracing)))
+		return;
+
+	trace_buffer_teardown(NULL);
+	bpage_backing_teardown();
+}
+
+void hyp_poke_tracing(int cpu, const struct cpumask *cpus)
+{
+	if (cpu == RING_BUFFER_ALL_CPUS) {
+		for_each_cpu(cpu, cpus)
+			WARN_ON_ONCE(ring_buffer_poke(hyp_trace_buffer, cpu));
+	} else {
+		WARN_ON_ONCE(ring_buffer_poke(hyp_trace_buffer, cpu));
+	}
+}
+
+static int hyp_start_tracing(void)
+{
+	int ret = 0;
+
+	if (hyp_trace_on)
+		return -EBUSY;
+
+	if (!hyp_trace_buffer) {
+		ret = hyp_load_tracing();
+		if (ret)
+			return ret;
+	}
+
+	ret = kvm_call_hyp_nvhe(__pkvm_enable_tracing, true);
+	if (!ret) {
+		struct ht_iterator *iter;
+
+		list_for_each_entry(iter, &hyp_pipe_readers, list)
+			schedule_delayed_work(&iter->poke_work,
+					      msecs_to_jiffies(RB_POLL_MS));
+		hyp_trace_on = true;
+	}
+
+	return ret;
+}
+
+static void hyp_stop_tracing(void)
+{
+	struct ht_iterator *iter;
+	int ret;
+
+	if (!hyp_trace_buffer || !hyp_trace_on)
+		return;
+
+	ret = kvm_call_hyp_nvhe(__pkvm_enable_tracing, false);
+	if (ret) {
+		WARN_ON(1);
+		return;
+	}
+
+	hyp_trace_on = false;
+
+	list_for_each_entry(iter, &hyp_pipe_readers, list) {
+		cancel_delayed_work_sync(&iter->poke_work);
+		hyp_poke_tracing(iter->cpu, iter->cpus);
+	}
+}
+
+static ssize_t
+hyp_tracing_on(struct file *filp, const char __user *ubuf, size_t cnt, loff_t *ppos)
+{
+	int err = 0;
+	char c;
+
+	if (!cnt || cnt > 2)
+		return -EINVAL;
+
+	if (get_user(c, ubuf))
+		return -EFAULT;
+
+	mutex_lock(&hyp_trace_lock);
+
+	switch (c) {
+	case '1':
+		err = hyp_start_tracing();
+		break;
+	case '0':
+		hyp_stop_tracing();
+		break;
+	default:
+		err = -EINVAL;
+	}
+
+	mutex_unlock(&hyp_trace_lock);
+
+	return err ? err : cnt;
+}
+
+static ssize_t hyp_tracing_on_read(struct file *filp, char __user *ubuf,
+				   size_t cnt, loff_t *ppos)
+{
+	char buf[3];
+	int r;
+
+	mutex_lock(&hyp_trace_lock);
+	r = sprintf(buf, "%d\n", hyp_trace_on);
+	mutex_unlock(&hyp_trace_lock);
+
+	return simple_read_from_buffer(ubuf, cnt, ppos, buf, r);
+}
+
+static const struct file_operations hyp_tracing_on_fops = {
+	.write	= hyp_tracing_on,
+	.read	= hyp_tracing_on_read,
+};
+
+static ssize_t hyp_buffer_size(struct file *filp, const char __user *ubuf,
+			       size_t cnt, loff_t *ppos)
+{
+	unsigned long val;
+	int ret;
+
+	ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
+	if (ret)
+		return ret;
+
+	if (!val)
+		return -EINVAL;
+
+	mutex_lock(&hyp_trace_lock);
+	hyp_trace_buffer_size = val << 10; /* KB to B */
+	mutex_unlock(&hyp_trace_lock);
+
+	return cnt;
+}
+
+static ssize_t hyp_buffer_size_read(struct file *filp, char __user *ubuf,
+				    size_t cnt, loff_t *ppos)
+{
+	char buf[64];
+	int r;
+
+	mutex_lock(&hyp_trace_lock);
+	r = sprintf(buf, "%lu\n", hyp_trace_buffer_size >> 10);
+	mutex_unlock(&hyp_trace_lock);
+
+	return simple_read_from_buffer(ubuf, cnt, ppos, buf, r);
+}
+
+static const struct file_operations hyp_buffer_size_fops = {
+	.write	= hyp_buffer_size,
+	.read	= hyp_buffer_size_read,
+};
+
+static inline void hyp_trace_read_start(int cpu)
+{
+	if (cpu != RING_BUFFER_ALL_CPUS) {
+		mutex_lock(&per_cpu(hyp_trace_reader_lock, cpu));
+		return;
+	}
+
+	for_each_possible_cpu(cpu)
+		mutex_lock(&per_cpu(hyp_trace_reader_lock, cpu));
+}
+
+static inline void hyp_trace_read_stop(int cpu)
+{
+	if (cpu != RING_BUFFER_ALL_CPUS) {
+		mutex_unlock(&per_cpu(hyp_trace_reader_lock, cpu));
+		return;
+	}
+
+	for_each_possible_cpu(cpu)
+		mutex_unlock(&per_cpu(hyp_trace_reader_lock, cpu));
+}
+
+static void ht_print_trace_time(struct ht_iterator *iter)
+{
+	unsigned long usecs_rem;
+	u64 ts_ns = iter->ts;
+
+	do_div(ts_ns, 1000);
+	usecs_rem = do_div(ts_ns, USEC_PER_SEC);
+
+	trace_seq_printf(&iter->seq, "%5lu.%06lu: ",
+			 (unsigned long)ts_ns, usecs_rem);
+}
+
+static void ht_print_trace_cpu(struct ht_iterator *iter)
+{
+	trace_seq_printf(&iter->seq, "[%03d]\t", iter->ent_cpu);
+}
+
+extern struct trace_event *ftrace_find_event(int type);
+
+static int ht_print_trace_fmt(struct ht_iterator *iter)
+{
+	struct trace_event *e;
+
+	if (iter->lost_events)
+		trace_seq_printf(&iter->seq, "CPU:%d [LOST %lu EVENTS]\n",
+				 iter->ent_cpu, iter->lost_events);
+
+	ht_print_trace_cpu(iter);
+	ht_print_trace_time(iter);
+
+	e = ftrace_find_event(iter->ent->id);
+	if (e)
+		e->funcs->trace((struct trace_iterator *)iter, 0, e);
+	else
+		trace_seq_printf(&iter->seq, "Unknown event id %d\n", iter->ent->id);
+
+	return trace_seq_has_overflowed(&iter->seq) ? -EOVERFLOW : 0;
+};
+
+static struct ring_buffer_event *ht_next_event(struct ht_iterator *iter,
+					       u64 *ts, int *cpu)
+{
+	struct ring_buffer_event *evt = NULL;
+	int _cpu;
+	u64 _ts;
+
+	if (!iter->buf_iter)
+		return NULL;
+
+	if (iter->cpu != RING_BUFFER_ALL_CPUS) {
+		evt = ring_buffer_iter_peek(iter->buf_iter[iter->cpu], ts);
+		if (!evt)
+			return NULL;
+
+		*cpu = iter->cpu;
+		ring_buffer_iter_advance(iter->buf_iter[*cpu]);
+
+		return evt;
+	}
+
+	*ts = LLONG_MAX;
+	for_each_cpu(_cpu, iter->cpus) {
+		struct ring_buffer_event *_evt;
+
+		_evt = ring_buffer_iter_peek(iter->buf_iter[_cpu], &_ts);
+		if (!_evt)
+			continue;
+
+		if (_ts >= *ts)
+			continue;
+
+		*ts = _ts;
+		*cpu = _cpu;
+		evt = _evt;
+	}
+
+	if (evt)
+		ring_buffer_iter_advance(iter->buf_iter[*cpu]);
+
+	return evt;
+}
+
+static void *ht_next(struct seq_file *m, void *v, loff_t *pos)
+{
+	struct ht_iterator *iter = m->private;
+	struct ring_buffer_event *evt;
+	int cpu;
+	u64 ts;
+
+	(*pos)++;
+
+	evt = ht_next_event(iter, &ts, &cpu);
+	if (!evt)
+		return NULL;
+
+	iter->ent = (struct hyp_entry_hdr *)&evt->array[1];
+	iter->ts = ts;
+	iter->ent_size = evt->array[0];
+	iter->ent_cpu = cpu;
+
+	return iter;
+}
+
+static void ht_iter_reset(struct ht_iterator *iter)
+{
+	int cpu = iter->cpu;
+
+	if (!iter->buf_iter)
+		return;
+
+	if (cpu != RING_BUFFER_ALL_CPUS) {
+		ring_buffer_iter_reset(iter->buf_iter[cpu]);
+		return;
+	}
+
+	for_each_cpu(cpu, iter->cpus)
+		ring_buffer_iter_reset(iter->buf_iter[cpu]);
+}
+
+static void *ht_start(struct seq_file *m, loff_t *pos)
+{
+	struct ht_iterator *iter = m->private;
+
+	if (*pos == 0) {
+		ht_iter_reset(iter);
+		(*pos)++;
+		iter->ent = NULL;
+
+		return iter;
+	}
+
+	hyp_trace_read_start(iter->cpu);
+
+	return ht_next(m, NULL, pos);
+}
+
+static void ht_stop(struct seq_file *m, void *v)
+{
+	struct ht_iterator *iter = m->private;
+
+	hyp_trace_read_stop(iter->cpu);
+}
+
+static void ht_total_entries(struct ht_iterator *iter, unsigned long *entries,
+			     unsigned long *overrun)
+{
+	int cpu = iter->cpu;
+
+	*entries = 0;
+	*overrun = 0;
+
+	if (!hyp_trace_buffer)
+		return;
+
+	if (cpu != RING_BUFFER_ALL_CPUS) {
+		*entries = ring_buffer_entries_cpu(hyp_trace_buffer, cpu);
+		*overrun = ring_buffer_overrun_cpu(hyp_trace_buffer, cpu);
+		return;
+	}
+
+	for_each_cpu(cpu, iter->cpus) {
+		*entries += ring_buffer_entries_cpu(hyp_trace_buffer, cpu);
+		*overrun += ring_buffer_overrun_cpu(hyp_trace_buffer, cpu);
+	}
+}
+
+static int ht_show(struct seq_file *m, void *v)
+{
+	struct ht_iterator *iter = v;
+
+	if (!iter->ent) {
+		unsigned long entries, overrun;
+
+		ht_total_entries(iter, &entries, &overrun);
+		seq_printf(m, "# entries-in-buffer/entries-written: %lu/%lu\n",
+			  entries, overrun + entries);
+	} else {
+		ht_print_trace_fmt(iter);
+		trace_print_seq(m, &iter->seq);
+	}
+
+	return 0;
+}
+
+static const struct seq_operations hyp_trace_ops = {
+	.start	= ht_start,
+	.next	= ht_next,
+	.stop	= ht_stop,
+	.show	= ht_show,
+};
+
+static int hyp_trace_reset(int cpu)
+{
+	if (!hyp_trace_buffer)
+		return 0;
+
+	if (hyp_trace_on)
+		return -EBUSY;
+
+	if (cpu == RING_BUFFER_ALL_CPUS) {
+		if (hyp_trace_readers)
+			hyp_free_tracing_deferred = true;
+		else
+			hyp_free_tracing();
+
+		return 0;
+	}
+
+	ring_buffer_reset_cpu(hyp_trace_buffer, cpu);
+
+	return 0;
+}
+
+static void hyp_inc_readers(void)
+{
+	hyp_trace_readers++;
+}
+
+static void hyp_dec_readers(void)
+{
+	hyp_trace_readers--;
+
+	WARN_ON(hyp_trace_readers < 0);
+
+	if (hyp_trace_readers)
+		return;
+
+	if (hyp_free_tracing_deferred) {
+		hyp_free_tracing();
+		hyp_free_tracing_deferred = false;
+	}
+}
+
+static int hyp_trace_open(struct inode *inode, struct file *file)
+{
+	int cpu = (s64)inode->i_private;
+	int ret = 0;
+
+	mutex_lock(&hyp_trace_lock);
+
+	if (file->f_mode & FMODE_WRITE)
+		ret = hyp_trace_reset(cpu);
+
+	mutex_unlock(&hyp_trace_lock);
+
+	return ret;
+}
+
+static ssize_t hyp_trace_read(struct file *filp, char __user *ubuf,
+			      size_t cnt, loff_t *ppos)
+{
+	char buf[] = "** Reading trace not yet supported **\n";
+
+	return simple_read_from_buffer(ubuf, cnt, ppos, buf, strlen(buf));
+}
+
+static ssize_t hyp_trace_write(struct file *filp, const char __user *ubuf,
+			       size_t count, loff_t *ppos)
+{
+	/* No matter the input, writing resets the buffer */
+	return count;
+}
+
+static const struct file_operations hyp_trace_fops = {
+	.open		= hyp_trace_open,
+	.read		= hyp_trace_read,
+	.write		= hyp_trace_write,
+	.release	= NULL,
+};
+
+static struct ring_buffer_event *__ht_next_pipe_event(struct ht_iterator *iter)
+{
+	struct ring_buffer_event *evt = NULL;
+	int cpu = iter->cpu;
+
+	if (cpu != RING_BUFFER_ALL_CPUS) {
+		if (ring_buffer_empty_cpu(hyp_trace_buffer, cpu))
+			return NULL;
+
+		iter->ent_cpu = cpu;
+
+		return ring_buffer_peek(hyp_trace_buffer, cpu, &iter->ts,
+					&iter->lost_events);
+	}
+
+	iter->ts = LLONG_MAX;
+	for_each_cpu(cpu, iter->cpus) {
+		struct ring_buffer_event *_evt;
+		unsigned long lost_events;
+		u64 ts;
+
+		if (ring_buffer_empty_cpu(hyp_trace_buffer, cpu))
+			continue;
+
+		_evt = ring_buffer_peek(hyp_trace_buffer, cpu, &ts,
+					&lost_events);
+		if (!_evt)
+			continue;
+
+		if (ts >= iter->ts)
+			continue;
+
+		iter->ts = ts;
+		iter->ent_cpu = cpu;
+		iter->lost_events = lost_events;
+		evt = _evt;
+
+	}
+
+	return evt;
+}
+
+static void *ht_next_pipe_event(struct ht_iterator *iter)
+{
+	struct ring_buffer_event *event;
+
+	event = __ht_next_pipe_event(iter);
+	if (!event)
+		return NULL;
+
+	iter->ent = (struct hyp_entry_hdr *)&event->array[1];
+	iter->ent_size = event->array[0];
+
+	return iter;
+}
+
+static ssize_t
+hyp_trace_pipe_read(struct file *file, char __user *ubuf,
+		    size_t cnt, loff_t *ppos)
+{
+	struct ht_iterator *iter = (struct ht_iterator *)file->private_data;
+	int ret;
+
+	/* seq_buf buffer size */
+	if (cnt != PAGE_SIZE)
+		return -EINVAL;
+
+	trace_seq_init(&iter->seq);
+again:
+	ret = ring_buffer_wait(hyp_trace_buffer, iter->cpu, 0);
+	if (ret < 0)
+		return ret;
+
+	hyp_trace_read_start(iter->cpu);
+	while (ht_next_pipe_event(iter)) {
+		int prev_len = iter->seq.seq.len;
+
+		if (ht_print_trace_fmt(iter)) {
+			iter->seq.seq.len = prev_len;
+			break;
+		}
+
+		ring_buffer_consume(hyp_trace_buffer, iter->ent_cpu, NULL,
+				    NULL);
+	}
+	hyp_trace_read_stop(iter->cpu);
+
+	ret = trace_seq_to_user(&iter->seq, ubuf, cnt);
+	if (ret == -EBUSY)
+		goto again;
+
+	return ret;
+}
+
+static void __poke_reader(struct work_struct *work)
+{
+	struct delayed_work *dwork = to_delayed_work(work);
+	struct ht_iterator *iter;
+
+	iter = container_of(dwork, struct ht_iterator, poke_work);
+
+	hyp_poke_tracing(iter->cpu, iter->cpus);
+
+	schedule_delayed_work((struct delayed_work *)work,
+			      msecs_to_jiffies(RB_POLL_MS));
+}
+
+static int hyp_trace_pipe_open(struct inode *inode, struct file *file)
+{
+	int cpu = (s64)inode->i_private;
+	struct ht_iterator *iter;
+	int ret;
+
+	mutex_lock(&hyp_trace_lock);
+
+	if (!hyp_trace_buffer) {
+		ret = hyp_load_tracing();
+		if (ret)
+			goto unlock;
+	}
+
+	iter = kzalloc(sizeof(*iter), GFP_KERNEL);
+	if (!iter) {
+		ret = -ENOMEM;
+		goto unlock;
+	}
+
+	iter->cpu = cpu;
+	file->private_data = iter;
+
+	if (cpu == RING_BUFFER_ALL_CPUS) {
+		if (!zalloc_cpumask_var(&iter->cpus, GFP_KERNEL)) {
+			ret = -ENOMEM;
+			goto unlock;
+		}
+		for_each_possible_cpu(cpu) {
+			if (!ring_buffer_poke(hyp_trace_buffer, cpu))
+				cpumask_set_cpu(cpu, iter->cpus);
+		}
+	} else {
+		ret = ring_buffer_poke(hyp_trace_buffer, cpu);
+		if (ret)
+			goto unlock;
+	}
+
+	INIT_DELAYED_WORK(&iter->poke_work, __poke_reader);
+	if (hyp_trace_on)
+		schedule_delayed_work(&iter->poke_work,
+				      msecs_to_jiffies(RB_POLL_MS));
+	list_add(&iter->list, &hyp_pipe_readers);
+	hyp_inc_readers();
+unlock:
+	mutex_unlock(&hyp_trace_lock);
+	if (ret)
+		kfree(iter);
+
+	return ret;
+}
+
+static int hyp_trace_pipe_release(struct inode *inode, struct file *file)
+{
+	struct ht_iterator *iter = file->private_data;
+
+	mutex_lock(&hyp_trace_lock);
+	hyp_dec_readers();
+	list_del(&iter->list);
+	mutex_unlock(&hyp_trace_lock);
+
+	cancel_delayed_work_sync(&iter->poke_work);
+
+	free_cpumask_var(iter->cpus);
+	kfree(iter);
+
+	return 0;
+}
+
+static const struct file_operations hyp_trace_pipe_fops = {
+	.open		= hyp_trace_pipe_open,
+	.read		= hyp_trace_pipe_read,
+	.release	= hyp_trace_pipe_release,
+	.llseek		= no_llseek,
+};
+
+static ssize_t
+hyp_trace_raw_read(struct file *file, char __user *ubuf,
+		    size_t cnt, loff_t *ppos)
+{
+	struct ht_iterator *iter = (struct ht_iterator *)file->private_data;
+	size_t size;
+	int ret;
+
+	if (iter->copy_leftover)
+		goto read;
+again:
+	hyp_trace_read_start(iter->cpu);
+	ret = ring_buffer_read_page(hyp_trace_buffer, &iter->spare,
+				    cnt, iter->cpu, 0);
+	hyp_trace_read_stop(iter->cpu);
+	if (ret < 0) {
+		if (!ring_buffer_empty_cpu(hyp_trace_buffer, iter->cpu))
+			return 0;
+
+		ret = ring_buffer_wait(hyp_trace_buffer, iter->cpu, 0);
+		if (ret < 0)
+			return ret;
+
+		goto again;
+	}
+
+	iter->copy_leftover = 0;
+read:
+	size = PAGE_SIZE - iter->copy_leftover;
+	if (size > cnt)
+		size = cnt;
+
+	ret = copy_to_user(ubuf, iter->spare + PAGE_SIZE - size, size);
+	if (ret == size)
+		return -EFAULT;
+
+	size -= ret;
+	*ppos += size;
+	iter->copy_leftover = ret;
+
+	return size;
+}
+
+static int hyp_trace_raw_open(struct inode *inode, struct file *file)
+{
+	int ret = hyp_trace_pipe_open(inode, file);
+	struct ht_iterator *iter;
+
+	if (ret)
+		return ret;
+
+	iter = file->private_data;
+	iter->spare = ring_buffer_alloc_read_page(hyp_trace_buffer, iter->cpu);
+	if (IS_ERR(iter->spare)) {
+		ret = PTR_ERR(iter->spare);
+		iter->spare = NULL;
+		return ret;
+	}
+
+	return 0;
+}
+
+static int hyp_trace_raw_release(struct inode *inode, struct file *file)
+{
+	struct ht_iterator *iter = file->private_data;
+
+	ring_buffer_free_read_page(hyp_trace_buffer, iter->cpu, iter->spare);
+
+	return hyp_trace_pipe_release(inode, file);
+}
+
+static const struct file_operations hyp_trace_raw_fops = {
+	.open		= hyp_trace_raw_open,
+	.read		= hyp_trace_raw_read,
+	.release	= hyp_trace_raw_release,
+	.llseek		= no_llseek,
+};
+
+static int hyp_trace_clock_show(struct seq_file *m, void *v)
+{
+	seq_printf(m, "[boot]\n");
+	return 0;
+}
+
+static int hyp_trace_clock_open(struct inode *inode, struct file *file)
+{
+	return single_open(file, hyp_trace_clock_show, NULL);
+}
+
+static const struct file_operations hyp_trace_clock_fops = {
+	.open = hyp_trace_clock_open,
+	.read = seq_read,
+	.llseek = seq_lseek,
+	.release = single_release,
+};
+
+static void hyp_tracefs_create_cpu_file(const char *file_name,
+					int cpu,
+					umode_t mode,
+					const struct file_operations *fops,
+					struct dentry *parent)
+{
+	if (!tracefs_create_file(file_name, mode, parent, (void *)(s64)cpu, fops))
+		pr_warn("Failed to create tracefs %pd/%s\n", parent, file_name);
+}
+
+void kvm_hyp_init_events_tracefs(struct dentry *parent);
+bool kvm_hyp_events_enable_early(void);
+
+int init_hyp_tracefs(void)
+{
+	struct dentry *d, *root_dir, *per_cpu_root_dir;
+	char per_cpu_name[16];
+	int err, cpu;
+
+	if (!is_protected_kvm_enabled())
+		return 0;
+
+	root_dir = tracefs_create_dir(TRACEFS_DIR, NULL);
+	if (!root_dir) {
+		pr_err("Failed to create tracefs "TRACEFS_DIR"/\n");
+		return -ENODEV;
+	}
+
+	d = tracefs_create_file("tracing_on", TRACEFS_MODE_WRITE, root_dir,
+				NULL, &hyp_tracing_on_fops);
+	if (!d) {
+		pr_err("Failed to create tracefs "TRACEFS_DIR"/tracing_on\n");
+		return -ENODEV;
+	}
+
+	d = tracefs_create_file("buffer_size_kb", TRACEFS_MODE_WRITE, root_dir,
+				NULL, &hyp_buffer_size_fops);
+	if (!d)
+		pr_err("Failed to create tracefs "TRACEFS_DIR"/buffer_size_kb\n");
+
+	d = tracefs_create_file("trace_clock", TRACEFS_MODE_READ, root_dir, NULL,
+				&hyp_trace_clock_fops);
+	if (!d)
+		pr_err("Failed to create tracefs "TRACEFS_DIR"/trace_clock\n");
+
+	hyp_tracefs_create_cpu_file("trace", RING_BUFFER_ALL_CPUS,
+				    TRACEFS_MODE_WRITE, &hyp_trace_fops,
+				    root_dir);
+
+	hyp_tracefs_create_cpu_file("trace_pipe", RING_BUFFER_ALL_CPUS,
+				    TRACEFS_MODE_READ, &hyp_trace_pipe_fops,
+				    root_dir);
+
+	per_cpu_root_dir = tracefs_create_dir("per_cpu", root_dir);
+	if (!per_cpu_root_dir) {
+		pr_err("Failed to create tracefs "TRACEFS_DIR"/per_cpu/\n");
+		return -ENODEV;
+	}
+
+	for_each_possible_cpu(cpu) {
+		struct dentry *dir;
+
+		snprintf(per_cpu_name, sizeof(per_cpu_name), "cpu%d", cpu);
+		dir = tracefs_create_dir(per_cpu_name, per_cpu_root_dir);
+		if (!dir) {
+			pr_warn("Failed to create tracefs "TRACEFS_DIR"/per_cpu/cpu%d\n",
+				cpu);
+			continue;
+		}
+
+		hyp_tracefs_create_cpu_file("trace", cpu, TRACEFS_MODE_WRITE,
+					    &hyp_trace_fops, dir);
+		hyp_tracefs_create_cpu_file("trace_pipe", cpu, TRACEFS_MODE_READ,
+					    &hyp_trace_pipe_fops, dir);
+		hyp_tracefs_create_cpu_file("trace_pipe_raw", cpu,
+					    TRACEFS_MODE_READ,
+					    &hyp_trace_raw_fops, dir);
+	}
+
+	kvm_hyp_init_events_tracefs(root_dir);
+	if (kvm_hyp_events_enable_early()) {
+		err = hyp_start_tracing();
+		if (err)
+			pr_warn("Failed to start early events tracing: %d\n", err);
+	}
+
+	return 0;
+}
diff --git a/arch/arm64/kvm/hyp_trace.h b/arch/arm64/kvm/hyp_trace.h
new file mode 100644
index 0000000..19fc1ab
--- /dev/null
+++ b/arch/arm64/kvm/hyp_trace.h
@@ -0,0 +1,30 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+
+#ifndef __ARM64_KVM_HYP_TRACE_H__
+#define __ARM64_KVM_HYP_TRACE_H__
+
+#include <linux/trace_seq.h>
+#include <linux/workqueue.h>
+
+struct ht_iterator {
+	struct ring_buffer_iter **buf_iter;
+	struct hyp_entry_hdr *ent;
+	struct trace_seq seq;
+	struct list_head list;
+	u64 ts;
+	void *spare;
+	size_t copy_leftover;
+	size_t ent_size;
+	struct delayed_work poke_work;
+	unsigned long lost_events;
+	cpumask_var_t cpus;
+	int ent_cpu;
+	int cpu;
+};
+
+#ifdef CONFIG_TRACING
+int init_hyp_tracefs(void);
+#else
+static inline int init_hyp_tracefs(void) { return 0; }
+#endif
+#endif
diff --git a/arch/arm64/kvm/hypercalls.c b/arch/arm64/kvm/hypercalls.c
index 1f5beeb..6c05241 100644
--- a/arch/arm64/kvm/hypercalls.c
+++ b/arch/arm64/kvm/hypercalls.c
@@ -5,6 +5,7 @@
 #include <linux/kvm_host.h>
 
 #include <asm/kvm_emulate.h>
+#include <asm/kvm_pkvm.h>
 
 #include <kvm/arm_hypercalls.h>
 #include <kvm/arm_psci.h>
@@ -13,8 +14,15 @@
 	GENMASK(KVM_REG_ARM_STD_BMAP_BIT_COUNT - 1, 0)
 #define KVM_ARM_SMCCC_STD_HYP_FEATURES				\
 	GENMASK(KVM_REG_ARM_STD_HYP_BMAP_BIT_COUNT - 1, 0)
-#define KVM_ARM_SMCCC_VENDOR_HYP_FEATURES			\
-	GENMASK(KVM_REG_ARM_VENDOR_HYP_BMAP_BIT_COUNT - 1, 0)
+#define KVM_ARM_SMCCC_VENDOR_HYP_FEATURES ({				\
+	unsigned long f;						\
+	f = GENMASK(KVM_REG_ARM_VENDOR_HYP_BMAP_BIT_COUNT - 1, 0);	\
+	if (is_protected_kvm_enabled()) {				\
+		f |= BIT(ARM_SMCCC_KVM_FUNC_HYP_MEMINFO);		\
+		f |= BIT(ARM_SMCCC_KVM_FUNC_MEM_RELINQUISH);		\
+	}								\
+	f;								\
+})
 
 static void kvm_ptp_get_time(struct kvm_vcpu *vcpu, u64 *val)
 {
@@ -75,6 +83,9 @@ static bool kvm_hvc_call_default_allowed(u32 func_id)
 	 */
 	case ARM_SMCCC_VERSION_FUNC_ID:
 	case ARM_SMCCC_ARCH_FEATURES_FUNC_ID:
+	case ARM_SMCCC_VENDOR_HYP_KVM_MEM_SHARE_FUNC_ID:
+	case ARM_SMCCC_VENDOR_HYP_KVM_MEM_UNSHARE_FUNC_ID:
+	case ARM_SMCCC_VENDOR_HYP_KVM_MMIO_GUARD_MAP_FUNC_ID:
 		return true;
 	default:
 		/* PSCI 0.2 and up is in the 0:0x1f range */
@@ -116,6 +127,9 @@ static bool kvm_hvc_call_allowed(struct kvm_vcpu *vcpu, u32 func_id)
 	case ARM_SMCCC_VENDOR_HYP_KVM_PTP_FUNC_ID:
 		return test_bit(KVM_REG_ARM_VENDOR_HYP_BIT_PTP,
 				&smccc_feat->vendor_hyp_bmap);
+	case ARM_SMCCC_VENDOR_HYP_KVM_MEM_RELINQUISH_FUNC_ID:
+		return test_bit(ARM_SMCCC_KVM_FUNC_MEM_RELINQUISH,
+				&smccc_feat->vendor_hyp_bmap);
 	default:
 		return kvm_hvc_call_default_allowed(func_id);
 	}
@@ -213,6 +227,24 @@ int kvm_hvc_call_handler(struct kvm_vcpu *vcpu)
 	case ARM_SMCCC_VENDOR_HYP_KVM_PTP_FUNC_ID:
 		kvm_ptp_get_time(vcpu, val);
 		break;
+	case ARM_SMCCC_VENDOR_HYP_KVM_MEM_SHARE_FUNC_ID:
+	case ARM_SMCCC_VENDOR_HYP_KVM_MEM_UNSHARE_FUNC_ID:
+		if (!kvm_vm_is_protected(vcpu->kvm))
+			break;
+		atomic64_add(
+			func_id == ARM_SMCCC_VENDOR_HYP_KVM_MEM_SHARE_FUNC_ID ?
+			PAGE_SIZE : -PAGE_SIZE,
+			&vcpu->kvm->stat.protected_shared_mem);
+		val[0] = SMCCC_RET_SUCCESS;
+		break;
+	case ARM_SMCCC_VENDOR_HYP_KVM_MEM_RELINQUISH_FUNC_ID:
+		pkvm_host_reclaim_page(vcpu->kvm, smccc_get_arg1(vcpu));
+		val[0] = SMCCC_RET_SUCCESS;
+		break;
+	case ARM_SMCCC_VENDOR_HYP_KVM_MMIO_GUARD_MAP_FUNC_ID:
+		if (kvm_vm_is_protected(vcpu->kvm) && !topup_hyp_memcache(vcpu))
+			val[0] = SMCCC_RET_SUCCESS;
+		break;
 	case ARM_SMCCC_TRNG_VERSION:
 	case ARM_SMCCC_TRNG_FEATURES:
 	case ARM_SMCCC_TRNG_GET_UUID:
@@ -377,7 +409,7 @@ static int kvm_arm_set_fw_reg_bmap(struct kvm_vcpu *vcpu, u64 reg_id, u64 val)
 	if (val & ~fw_reg_features)
 		return -EINVAL;
 
-	mutex_lock(&kvm->arch.config_lock);
+	mutex_lock(&kvm->lock);
 
 	if (test_bit(KVM_ARCH_FLAG_HAS_RAN_ONCE, &kvm->arch.flags) &&
 	    val != *fw_reg_bmap) {
@@ -387,7 +419,7 @@ static int kvm_arm_set_fw_reg_bmap(struct kvm_vcpu *vcpu, u64 reg_id, u64 val)
 
 	WRITE_ONCE(*fw_reg_bmap, val);
 out:
-	mutex_unlock(&kvm->arch.config_lock);
+	mutex_unlock(&kvm->lock);
 	return ret;
 }
 
diff --git a/arch/arm64/kvm/iommu.c b/arch/arm64/kvm/iommu.c
new file mode 100644
index 0000000..006aeac
--- /dev/null
+++ b/arch/arm64/kvm/iommu.c
@@ -0,0 +1,73 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (C) 2022 - Google LLC
+ * Author: David Brazdil <dbrazdil@google.com>
+ */
+
+#include <linux/kvm_host.h>
+
+/* Did all IOMMUs register as expected. */
+static bool finalised;
+
+static unsigned long dev_to_id(struct device *dev)
+{
+	/* Use the struct device pointer as a unique identifier. */
+	return (unsigned long)dev;
+}
+
+int pkvm_iommu_driver_init(u64 drv, void *data, size_t size)
+{
+	return kvm_call_hyp_nvhe(__pkvm_iommu_driver_init, drv, data, size);
+}
+EXPORT_SYMBOL(pkvm_iommu_driver_init);
+
+int pkvm_iommu_register(struct device *dev, u64 drv, phys_addr_t pa,
+			size_t size, struct device *parent, u8 flags)
+{
+	void *mem;
+	int ret;
+
+	/*
+	 * Hypcall to register the device. It will return -ENOMEM if it needs
+	 * more memory. In that case allocate a page and retry.
+	 * We assume that hyp never allocates more than a page per hypcall.
+	 */
+	ret = kvm_call_hyp_nvhe(__pkvm_iommu_register, dev_to_id(dev),
+				drv, pa, size, dev_to_id(parent), flags, NULL);
+	if (ret == -ENOMEM) {
+		mem = (void *)__get_free_page(GFP_KERNEL);
+		if (!mem)
+			return -ENOMEM;
+
+		ret = kvm_call_hyp_nvhe(__pkvm_iommu_register, dev_to_id(dev),
+					drv, pa, size, dev_to_id(parent), flags, mem);
+	}
+	return ret;
+}
+EXPORT_SYMBOL(pkvm_iommu_register);
+
+int pkvm_iommu_suspend(struct device *dev)
+{
+	return kvm_call_hyp_nvhe(__pkvm_iommu_pm_notify, dev_to_id(dev),
+				 PKVM_IOMMU_PM_SUSPEND);
+}
+EXPORT_SYMBOL(pkvm_iommu_suspend);
+
+int pkvm_iommu_resume(struct device *dev)
+{
+	return kvm_call_hyp_nvhe(__pkvm_iommu_pm_notify, dev_to_id(dev),
+				 PKVM_IOMMU_PM_RESUME);
+}
+EXPORT_SYMBOL(pkvm_iommu_resume);
+
+int pkvm_iommu_finalize(int err)
+{
+	finalised = !err;
+	return kvm_call_hyp_nvhe(__pkvm_iommu_finalize, 0);
+}
+EXPORT_SYMBOL_GPL(pkvm_iommu_finalize);
+
+bool pkvm_iommu_finalized(void)
+{
+	return finalised;
+}
diff --git a/arch/arm64/kvm/mmio.c b/arch/arm64/kvm/mmio.c
index 3dd38a1..db6630c 100644
--- a/arch/arm64/kvm/mmio.c
+++ b/arch/arm64/kvm/mmio.c
@@ -133,8 +133,17 @@ int io_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa)
 	/*
 	 * No valid syndrome? Ask userspace for help if it has
 	 * volunteered to do so, and bail out otherwise.
+	 *
+	 * In the protected VM case, there isn't much userspace can do
+	 * though, so directly deliver an exception to the guest.
 	 */
 	if (!kvm_vcpu_dabt_isvalid(vcpu)) {
+		if (is_protected_kvm_enabled() &&
+		    kvm_vm_is_protected(vcpu->kvm)) {
+			kvm_inject_dabt(vcpu, kvm_vcpu_get_hfar(vcpu));
+			return 1;
+		}
+
 		if (test_bit(KVM_ARCH_FLAG_RETURN_NISV_IO_ABORT_TO_USER,
 			     &vcpu->kvm->arch.flags)) {
 			run->exit_reason = KVM_EXIT_ARM_NISV;
diff --git a/arch/arm64/kvm/mmu.c b/arch/arm64/kvm/mmu.c
index 54ccdcc..9e2f5a5 100644
--- a/arch/arm64/kvm/mmu.c
+++ b/arch/arm64/kvm/mmu.c
@@ -225,6 +225,24 @@ static void unmap_stage2_range(struct kvm_s2_mmu *mmu, phys_addr_t start, u64 si
 	__unmap_stage2_range(mmu, start, size, true);
 }
 
+static void pkvm_stage2_flush(struct kvm *kvm)
+{
+	struct kvm_pinned_page *ppage;
+	struct rb_node *node;
+
+	/*
+	 * Contrary to stage2_apply_range(), we don't need to check
+	 * whether the VM is being torn down, as this is always called
+	 * from a vcpu thread, and the list is only ever freed on VM
+	 * destroy (which only occurs when all vcpu are gone).
+	 */
+	for (node = rb_first(&kvm->arch.pkvm.pinned_pages); node; node = rb_next(node)) {
+		ppage = rb_entry(node, struct kvm_pinned_page, node);
+		__clean_dcache_guest_page(page_address(ppage->page), PAGE_SIZE);
+		cond_resched_rwlock_write(&kvm->mmu_lock);
+	}
+}
+
 static void stage2_flush_memslot(struct kvm *kvm,
 				 struct kvm_memory_slot *memslot)
 {
@@ -250,9 +268,13 @@ static void stage2_flush_vm(struct kvm *kvm)
 	idx = srcu_read_lock(&kvm->srcu);
 	write_lock(&kvm->mmu_lock);
 
-	slots = kvm_memslots(kvm);
-	kvm_for_each_memslot(memslot, bkt, slots)
-		stage2_flush_memslot(kvm, memslot);
+	if (!is_protected_kvm_enabled()) {
+		slots = kvm_memslots(kvm);
+		kvm_for_each_memslot(memslot, bkt, slots)
+			stage2_flush_memslot(kvm, memslot);
+	} else if (!kvm_vm_is_protected(kvm)) {
+		pkvm_stage2_flush(kvm);
+	}
 
 	write_unlock(&kvm->mmu_lock);
 	srcu_read_unlock(&kvm->srcu, idx);
@@ -677,6 +699,17 @@ static int get_user_mapping_size(struct kvm *kvm, u64 addr)
 	return BIT(ARM64_HW_PGTABLE_LEVEL_SHIFT(level));
 }
 
+static bool stage2_force_pte_cb(u64 addr, u64 end, enum kvm_pgtable_prot prot)
+{
+	return true;
+}
+
+static bool stage2_pte_is_counted(kvm_pte_t pte, u32 level)
+
+{
+	return !!pte;
+}
+
 static struct kvm_pgtable_mm_ops kvm_s2_mm_ops = {
 	.zalloc_page		= stage2_memcache_zalloc_page,
 	.zalloc_pages_exact	= kvm_s2_zalloc_pages_exact,
@@ -690,19 +723,54 @@ static struct kvm_pgtable_mm_ops kvm_s2_mm_ops = {
 	.icache_inval_pou	= invalidate_icache_guest_page,
 };
 
+static struct kvm_pgtable_pte_ops kvm_s2_pte_ops = {
+	.force_pte_cb = stage2_force_pte_cb,
+	.pte_is_counted_cb = stage2_pte_is_counted
+
+};
+
 /**
  * kvm_init_stage2_mmu - Initialise a S2 MMU structure
  * @kvm:	The pointer to the KVM structure
  * @mmu:	The pointer to the s2 MMU structure
+ * @type:	The machine type of the virtual machine
  *
  * Allocates only the stage-2 HW PGD level table(s).
  * Note we don't need locking here as this is only called when the VM is
  * created, which can only be done once.
  */
-int kvm_init_stage2_mmu(struct kvm *kvm, struct kvm_s2_mmu *mmu)
+int kvm_init_stage2_mmu(struct kvm *kvm, struct kvm_s2_mmu *mmu, unsigned long type)
 {
+	u32 kvm_ipa_limit = get_kvm_ipa_limit();
 	int cpu, err;
 	struct kvm_pgtable *pgt;
+	u64 mmfr0, mmfr1;
+	u32 phys_shift;
+
+	phys_shift = KVM_VM_TYPE_ARM_IPA_SIZE(type);
+	if (is_protected_kvm_enabled()) {
+		phys_shift = kvm_ipa_limit;
+	} else if (phys_shift) {
+		if (phys_shift > kvm_ipa_limit ||
+		    phys_shift < ARM64_MIN_PARANGE_BITS)
+			return -EINVAL;
+	} else {
+		phys_shift = KVM_PHYS_SHIFT;
+		if (phys_shift > kvm_ipa_limit) {
+			pr_warn_once("%s using unsupported default IPA limit, upgrade your VMM\n",
+				     current->comm);
+			return -EINVAL;
+		}
+	}
+
+	mmfr0 = read_sanitised_ftr_reg(SYS_ID_AA64MMFR0_EL1);
+	mmfr1 = read_sanitised_ftr_reg(SYS_ID_AA64MMFR1_EL1);
+	kvm->arch.vtcr = kvm_get_vtcr(mmfr0, mmfr1, phys_shift);
+	kvm->arch.pkvm.pinned_pages = RB_ROOT;
+	mmu->arch = &kvm->arch;
+
+	if (is_protected_kvm_enabled())
+		return 0;
 
 	if (mmu->pgt != NULL) {
 		kvm_err("kvm_arch already initialized?\n");
@@ -714,7 +782,8 @@ int kvm_init_stage2_mmu(struct kvm *kvm, struct kvm_s2_mmu *mmu)
 		return -ENOMEM;
 
 	mmu->arch = &kvm->arch;
-	err = kvm_pgtable_stage2_init(pgt, mmu, &kvm_s2_mm_ops);
+	err = kvm_pgtable_stage2_init(pgt, mmu, &kvm_s2_mm_ops,
+				      &kvm_s2_pte_ops);
 	if (err)
 		goto out_free_pgtable;
 
@@ -811,6 +880,9 @@ void kvm_free_stage2_pgd(struct kvm_s2_mmu *mmu)
 	struct kvm *kvm = kvm_s2_mmu_to_kvm(mmu);
 	struct kvm_pgtable *pgt = NULL;
 
+	if (is_protected_kvm_enabled())
+		return;
+
 	write_lock(&kvm->mmu_lock);
 	pgt = mmu->pgt;
 	if (pgt) {
@@ -826,6 +898,95 @@ void kvm_free_stage2_pgd(struct kvm_s2_mmu *mmu)
 	}
 }
 
+static void hyp_mc_free_fn(void *addr, void *args)
+{
+	bool account_stage2 = (bool)args;
+
+	if (account_stage2)
+		kvm_account_pgtable_pages(addr, -1);
+
+	free_page((unsigned long)addr);
+}
+
+static void *hyp_mc_alloc_fn(void *unused)
+{
+	void *addr = (void *)__get_free_page(GFP_KERNEL_ACCOUNT);
+
+	if (addr)
+		kvm_account_pgtable_pages(addr, 1);
+
+	return addr;
+}
+
+static void account_hyp_memcache(struct kvm_hyp_memcache *mc,
+				 unsigned long prev_nr_pages,
+				 struct kvm *kvm)
+{
+	unsigned long nr_pages = mc->nr_pages;
+
+	if (prev_nr_pages == nr_pages)
+		return;
+
+	if (nr_pages > prev_nr_pages) {
+		atomic64_add((nr_pages - prev_nr_pages) << PAGE_SHIFT,
+			     &kvm->stat.protected_hyp_mem);
+	} else {
+		atomic64_sub((prev_nr_pages - nr_pages) << PAGE_SHIFT,
+			     &kvm->stat.protected_hyp_mem);
+	}
+}
+
+static void __free_account_hyp_memcache(struct kvm_hyp_memcache *mc,
+					struct kvm *kvm,
+					bool account_stage2)
+{
+	unsigned long prev_nr_pages;
+
+	if (!is_protected_kvm_enabled())
+		return;
+
+	prev_nr_pages = mc->nr_pages;
+	__free_hyp_memcache(mc, hyp_mc_free_fn, kvm_host_va,
+			    (void *)account_stage2);
+	account_hyp_memcache(mc, prev_nr_pages, kvm);
+}
+
+void free_hyp_memcache(struct kvm_hyp_memcache *mc, struct kvm *kvm)
+{
+	__free_account_hyp_memcache(mc, kvm, false);
+}
+
+/*
+ * All pages donated to the hypervisor through kvm_hyp_memcache are for the
+ * stage-2 page table. However, kvm_hyp_memcache is also a vehicule to retrieve
+ * meta-data from the hypervisor, hence the need for a stage2 specific free
+ * function.
+ */
+void free_hyp_stage2_memcache(struct kvm_hyp_memcache *mc, struct kvm *kvm)
+{
+	__free_account_hyp_memcache(mc, kvm, true);
+}
+
+int topup_hyp_memcache(struct kvm_vcpu *vcpu)
+{
+	struct kvm_hyp_memcache *mc = &vcpu->arch.pkvm_memcache;
+	unsigned long prev_nr_pages;
+	int err;
+
+	if (!is_protected_kvm_enabled())
+		return 0;
+
+	prev_nr_pages = mc->nr_pages;
+
+	err = __topup_hyp_memcache(mc, kvm_mmu_cache_min_pages(vcpu->kvm),
+				   hyp_mc_alloc_fn,
+				   kvm_host_pa, NULL);
+	if (!err)
+		account_hyp_memcache(mc, prev_nr_pages, vcpu->kvm);
+
+	return err;
+}
+
 /**
  * kvm_phys_addr_ioremap - map a device range to guest IPA
  *
@@ -1145,6 +1306,118 @@ static int sanitise_mte_tags(struct kvm *kvm, kvm_pfn_t pfn,
 	return 0;
 }
 
+static int pkvm_host_map_guest(u64 pfn, u64 gfn)
+{
+	int ret = kvm_call_hyp_nvhe(__pkvm_host_map_guest, pfn, gfn);
+
+	/*
+	 * Getting -EPERM at this point implies that the pfn has already been
+	 * mapped. This should only ever happen when two vCPUs faulted on the
+	 * same page, and the current one lost the race to do the mapping.
+	 */
+	return (ret == -EPERM) ? -EAGAIN : ret;
+}
+
+static int cmp_ppages(struct rb_node *node, const struct rb_node *parent)
+{
+	struct kvm_pinned_page *a = container_of(node, struct kvm_pinned_page, node);
+	struct kvm_pinned_page *b = container_of(parent, struct kvm_pinned_page, node);
+
+	if (a->ipa < b->ipa)
+		return -1;
+	if (a->ipa > b->ipa)
+		return 1;
+	return 0;
+}
+
+static int insert_ppage(struct kvm *kvm, struct kvm_pinned_page *ppage)
+{
+	if (rb_find_add(&ppage->node, &kvm->arch.pkvm.pinned_pages, cmp_ppages))
+		return -EEXIST;
+
+	return 0;
+}
+
+static int pkvm_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
+			  unsigned long hva)
+{
+	struct mm_struct *mm = current->mm;
+	unsigned int flags = FOLL_HWPOISON | FOLL_LONGTERM | FOLL_WRITE;
+	struct kvm_pinned_page *ppage;
+	struct kvm *kvm = vcpu->kvm;
+	struct page *page;
+	u64 pfn;
+	int ret;
+
+	ret = topup_hyp_memcache(vcpu);
+	if (ret)
+		return -ENOMEM;
+
+	ppage = kmalloc(sizeof(*ppage), GFP_KERNEL_ACCOUNT);
+	if (!ppage)
+		return -ENOMEM;
+
+	ret = account_locked_vm(mm, 1, true);
+	if (ret)
+		goto free_ppage;
+
+	mmap_read_lock(mm);
+	ret = pin_user_pages(hva, 1, flags, &page, NULL);
+	mmap_read_unlock(mm);
+
+	if (ret == -EHWPOISON) {
+		kvm_send_hwpoison_signal(hva, PAGE_SHIFT);
+		ret = 0;
+		goto dec_account;
+	} else if (ret != 1) {
+		ret = -EFAULT;
+		goto dec_account;
+	} else if (!PageSwapBacked(page)) {
+		/*
+		 * We really can't deal with page-cache pages returned by GUP
+		 * because (a) we may trigger writeback of a page for which we
+		 * no longer have access and (b) page_mkclean() won't find the
+		 * stage-2 mapping in the rmap so we can get out-of-whack with
+		 * the filesystem when marking the page dirty during unpinning
+		 * (see cc5095747edf ("ext4: don't BUG if someone dirty pages
+		 * without asking ext4 first")).
+		 *
+		 * Ideally we'd just restrict ourselves to anonymous pages, but
+		 * we also want to allow memfd (i.e. shmem) pages, so check for
+		 * pages backed by swap in the knowledge that the GUP pin will
+		 * prevent try_to_unmap() from succeeding.
+		 */
+		ret = -EIO;
+		goto dec_account;
+	}
+
+	write_lock(&kvm->mmu_lock);
+	pfn = page_to_pfn(page);
+	ret = pkvm_host_map_guest(pfn, fault_ipa >> PAGE_SHIFT);
+	if (ret) {
+		if (ret == -EAGAIN)
+			ret = 0;
+		goto unpin;
+	}
+
+	ppage->page = page;
+	ppage->ipa = fault_ipa;
+	WARN_ON(insert_ppage(kvm, ppage));
+	write_unlock(&kvm->mmu_lock);
+
+	return 0;
+
+unpin:
+	write_unlock(&kvm->mmu_lock);
+	unpin_user_pages(&page, 1);
+dec_account:
+	account_locked_vm(mm, 1, false);
+free_ppage:
+	kfree(ppage);
+
+	return ret;
+}
+
 static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
 			  struct kvm_memory_slot *memslot, unsigned long hva,
 			  unsigned long fault_status)
@@ -1428,7 +1701,8 @@ int kvm_handle_guest_abort(struct kvm_vcpu *vcpu)
 		}
 
 		/* Falls between the IPA range and the PARange? */
-		if (fault_ipa >= BIT_ULL(vcpu->arch.hw_mmu->pgt->ia_bits)) {
+		if (!is_protected_kvm_enabled() &&
+		    fault_ipa >= BIT_ULL(vcpu->arch.hw_mmu->pgt->ia_bits)) {
 			fault_ipa |= kvm_vcpu_get_hfar(vcpu) & GENMASK(11, 0);
 
 			if (is_iabt)
@@ -1510,7 +1784,7 @@ int kvm_handle_guest_abort(struct kvm_vcpu *vcpu)
 		 * faulting VA. This is always 12 bits, irrespective
 		 * of the page size.
 		 */
-		fault_ipa |= kvm_vcpu_get_hfar(vcpu) & ((1 << 12) - 1);
+		fault_ipa |= kvm_vcpu_get_hfar(vcpu) & FAR_MASK;
 		ret = io_mem_abort(vcpu, fault_ipa);
 		goto out_unlock;
 	}
@@ -1524,7 +1798,11 @@ int kvm_handle_guest_abort(struct kvm_vcpu *vcpu)
 		goto out_unlock;
 	}
 
-	ret = user_mem_abort(vcpu, fault_ipa, memslot, hva, fault_status);
+	if (is_protected_kvm_enabled())
+		ret = pkvm_mem_abort(vcpu, fault_ipa, hva);
+	else
+		ret = user_mem_abort(vcpu, fault_ipa, memslot, hva, fault_status);
+
 	if (ret == 0)
 		ret = 1;
 out:
@@ -1733,6 +2011,19 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm,
 	hva_t hva, reg_end;
 	int ret = 0;
 
+	if (is_protected_kvm_enabled()) {
+		/* In protected mode, cannot modify memslots once a VM has run. */
+		if ((change == KVM_MR_DELETE || change == KVM_MR_MOVE) &&
+		    kvm->arch.pkvm.handle) {
+			return -EPERM;
+		}
+
+		if (new &&
+		    new->flags & (KVM_MEM_LOG_DIRTY_PAGES | KVM_MEM_READONLY)) {
+			return -EPERM;
+		}
+	}
+
 	if (change != KVM_MR_CREATE && change != KVM_MR_MOVE &&
 			change != KVM_MR_FLAGS_ONLY)
 		return 0;
@@ -1809,6 +2100,10 @@ void kvm_arch_flush_shadow_memslot(struct kvm *kvm,
 	gpa_t gpa = slot->base_gfn << PAGE_SHIFT;
 	phys_addr_t size = slot->npages << PAGE_SHIFT;
 
+	/* Stage-2 is managed by hyp in protected mode. */
+	if (is_protected_kvm_enabled())
+		return;
+
 	write_lock(&kvm->mmu_lock);
 	unmap_stage2_range(&kvm->arch.mmu, gpa, size);
 	write_unlock(&kvm->mmu_lock);
diff --git a/arch/arm64/kvm/pkvm.c b/arch/arm64/kvm/pkvm.c
index ebecb7c..b601ff98e 100644
--- a/arch/arm64/kvm/pkvm.c
+++ b/arch/arm64/kvm/pkvm.c
@@ -4,14 +4,32 @@
  * Author: Quentin Perret <qperret@google.com>
  */
 
+#include <linux/io.h>
+#include <linux/kmemleak.h>
 #include <linux/kvm_host.h>
 #include <linux/memblock.h>
+#include <linux/mm.h>
+#include <linux/mutex.h>
+#include <linux/of_address.h>
+#include <linux/of_fdt.h>
+#include <linux/of_reserved_mem.h>
 #include <linux/sort.h>
 
+#include <asm/kvm_hyp.h>
+#include <asm/kvm_mmu.h>
 #include <asm/kvm_pkvm.h>
+#include <asm/kvm_pkvm_module.h>
+#include <asm/setup.h>
 
 #include "hyp_constants.h"
 
+DEFINE_STATIC_KEY_FALSE(kvm_protected_mode_initialized);
+
+static struct reserved_mem *pkvm_firmware_mem;
+static phys_addr_t *pvmfw_base = &kvm_nvhe_sym(pvmfw_base);
+static phys_addr_t *pvmfw_size = &kvm_nvhe_sym(pvmfw_size);
+
+static struct pkvm_moveable_reg *moveable_regs = kvm_nvhe_sym(pkvm_moveable_regs);
 static struct memblock_region *hyp_memory = kvm_nvhe_sym(hyp_memory);
 static unsigned int *hyp_memblock_nr_ptr = &kvm_nvhe_sym(hyp_memblock_nr);
 
@@ -51,9 +69,83 @@ static int __init register_memblock_regions(void)
 	return 0;
 }
 
+static int cmp_moveable_reg(const void *p1, const void *p2)
+{
+	const struct pkvm_moveable_reg *r1 = p1;
+	const struct pkvm_moveable_reg *r2 = p2;
+
+	/*
+	 * Moveable regions may overlap, so put the largest one first when start
+	 * addresses are equal to allow a simpler walk from e.g.
+	 * host_stage2_unmap_unmoveable_regs().
+	 */
+	if (r1->start < r2->start)
+		return -1;
+	else if (r1->start > r2->start)
+		return 1;
+	else if (r1->size > r2->size)
+		return -1;
+	else if (r1->size < r2->size)
+		return 1;
+	return 0;
+}
+
+static void __init sort_moveable_regs(void)
+{
+	sort(moveable_regs,
+	     kvm_nvhe_sym(pkvm_moveable_regs_nr),
+	     sizeof(struct pkvm_moveable_reg),
+	     cmp_moveable_reg,
+	     NULL);
+}
+
+static int __init register_moveable_regions(void)
+{
+	struct memblock_region *reg;
+	struct device_node *np;
+	int i = 0;
+
+	for_each_mem_region(reg) {
+		if (i >= PKVM_NR_MOVEABLE_REGS)
+			return -ENOMEM;
+		moveable_regs[i].start = reg->base;
+		moveable_regs[i].size = reg->size;
+		moveable_regs[i].type = PKVM_MREG_MEMORY;
+		i++;
+	}
+
+	for_each_compatible_node(np, NULL, "pkvm,protected-region") {
+		struct resource res;
+		u64 start, size;
+		int ret;
+
+		if (i >= PKVM_NR_MOVEABLE_REGS)
+			return -ENOMEM;
+
+		ret = of_address_to_resource(np, 0, &res);
+		if (ret)
+			return ret;
+
+		start = res.start;
+		size = resource_size(&res);
+		if (!PAGE_ALIGNED(start) || !PAGE_ALIGNED(size))
+			return -EINVAL;
+
+		moveable_regs[i].start = start;
+		moveable_regs[i].size = size;
+		moveable_regs[i].type = PKVM_MREG_PROTECTED_RANGE;
+		i++;
+	}
+
+	kvm_nvhe_sym(pkvm_moveable_regs_nr) = i;
+	sort_moveable_regs();
+
+	return 0;
+}
+
 void __init kvm_hyp_reserve(void)
 {
-	u64 nr_pages, prev, hyp_mem_pages = 0;
+	u64 hyp_mem_pages = 0;
 	int ret;
 
 	if (!is_hyp_mode_available() || is_kernel_in_hyp_mode())
@@ -69,23 +161,19 @@ void __init kvm_hyp_reserve(void)
 		return;
 	}
 
+	ret = register_moveable_regions();
+	if (ret) {
+		*hyp_memblock_nr_ptr = 0;
+		kvm_err("Failed to register pkvm moveable regions: %d\n", ret);
+		return;
+	}
+
 	hyp_mem_pages += hyp_s1_pgtable_pages();
 	hyp_mem_pages += host_s2_pgtable_pages();
-
-	/*
-	 * The hyp_vmemmap needs to be backed by pages, but these pages
-	 * themselves need to be present in the vmemmap, so compute the number
-	 * of pages needed by looking for a fixed point.
-	 */
-	nr_pages = 0;
-	do {
-		prev = nr_pages;
-		nr_pages = hyp_mem_pages + prev;
-		nr_pages = DIV_ROUND_UP(nr_pages * STRUCT_HYP_PAGE_SIZE,
-					PAGE_SIZE);
-		nr_pages += __hyp_pgtable_max_pages(nr_pages);
-	} while (nr_pages != prev);
-	hyp_mem_pages += nr_pages;
+	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
@@ -107,3 +195,682 @@ void __init kvm_hyp_reserve(void)
 	kvm_info("Reserved %lld MiB at 0x%llx\n", hyp_mem_size >> 20,
 		 hyp_mem_base);
 }
+
+/*
+ * Allocates and donates memory for hypervisor VM structs at EL2.
+ *
+ * Allocates space for the VM state, which includes the hyp vm as well as
+ * the hyp vcpus.
+ *
+ * Stores an opaque handler in the kvm struct for future reference.
+ *
+ * Return 0 on success, negative error code on failure.
+ */
+static int __pkvm_create_hyp_vm(struct kvm *host_kvm)
+{
+	size_t pgd_sz, hyp_vm_sz, hyp_vcpu_sz, last_ran_sz, total_sz;
+	struct kvm_vcpu *host_vcpu;
+	pkvm_handle_t handle;
+	void *pgd, *hyp_vm, *last_ran;
+	unsigned long idx;
+	int ret;
+
+	if (host_kvm->created_vcpus < 1)
+		return -EINVAL;
+
+	pgd_sz = kvm_pgtable_stage2_pgd_size(host_kvm->arch.vtcr);
+
+	/*
+	 * The PGD pages will be reclaimed using a hyp_memcache which implies
+	 * page granularity. So, use alloc_pages_exact() to get individual
+	 * refcounts.
+	 */
+	pgd = alloc_pages_exact(pgd_sz, GFP_KERNEL_ACCOUNT);
+	if (!pgd)
+		return -ENOMEM;
+
+	/* Allocate memory to donate to hyp for vm and vcpu pointers. */
+	hyp_vm_sz = PAGE_ALIGN(size_add(PKVM_HYP_VM_SIZE,
+					size_mul(sizeof(void *),
+						 host_kvm->created_vcpus)));
+	hyp_vm = alloc_pages_exact(hyp_vm_sz, GFP_KERNEL_ACCOUNT);
+	if (!hyp_vm) {
+		ret = -ENOMEM;
+		goto free_pgd;
+	}
+
+	/* Allocate memory to donate to hyp for tracking mmu->last_vcpu_ran. */
+	last_ran_sz = PAGE_ALIGN(array_size(num_possible_cpus(), sizeof(int)));
+	last_ran = alloc_pages_exact(last_ran_sz, GFP_KERNEL_ACCOUNT);
+	if (!last_ran) {
+		ret = -ENOMEM;
+		goto free_vm;
+	}
+
+	/* Donate the VM memory to hyp and let hyp initialize it. */
+	ret = kvm_call_hyp_nvhe(__pkvm_init_vm, host_kvm, hyp_vm, pgd, last_ran);
+	if (ret < 0)
+		goto free_last_ran;
+
+	handle = ret;
+
+	host_kvm->arch.pkvm.handle = handle;
+
+	total_sz = hyp_vm_sz + last_ran_sz + pgd_sz;
+
+	/* Donate memory for the vcpus at hyp and initialize it. */
+	hyp_vcpu_sz = PAGE_ALIGN(PKVM_HYP_VCPU_SIZE);
+	kvm_for_each_vcpu(idx, host_vcpu, host_kvm) {
+		void *hyp_vcpu;
+
+		/* Indexing of the vcpus to be sequential starting at 0. */
+		if (WARN_ON(host_vcpu->vcpu_idx != idx)) {
+			ret = -EINVAL;
+			goto destroy_vm;
+		}
+
+		hyp_vcpu = alloc_pages_exact(hyp_vcpu_sz, GFP_KERNEL_ACCOUNT);
+		if (!hyp_vcpu) {
+			ret = -ENOMEM;
+			goto destroy_vm;
+		}
+
+		total_sz += hyp_vcpu_sz;
+
+		ret = kvm_call_hyp_nvhe(__pkvm_init_vcpu, handle, host_vcpu,
+					hyp_vcpu);
+		if (ret) {
+			free_pages_exact(hyp_vcpu, hyp_vcpu_sz);
+			goto destroy_vm;
+		}
+	}
+
+	atomic64_set(&host_kvm->stat.protected_hyp_mem, total_sz);
+	kvm_account_pgtable_pages(pgd, pgd_sz >> PAGE_SHIFT);
+
+	return 0;
+
+destroy_vm:
+	pkvm_destroy_hyp_vm(host_kvm);
+	return ret;
+free_last_ran:
+	free_pages_exact(last_ran, last_ran_sz);
+free_vm:
+	free_pages_exact(hyp_vm, hyp_vm_sz);
+free_pgd:
+	free_pages_exact(pgd, pgd_sz);
+	return ret;
+}
+
+int pkvm_create_hyp_vm(struct kvm *host_kvm)
+{
+	int ret = 0;
+
+	mutex_lock(&host_kvm->lock);
+	if (!host_kvm->arch.pkvm.handle)
+		ret = __pkvm_create_hyp_vm(host_kvm);
+	mutex_unlock(&host_kvm->lock);
+
+	return ret;
+}
+
+void pkvm_destroy_hyp_vm(struct kvm *host_kvm)
+{
+	struct kvm_pinned_page *ppage;
+	struct mm_struct *mm = current->mm;
+	struct rb_node *node;
+
+	if (!host_kvm->arch.pkvm.handle)
+		goto out_free;
+
+	WARN_ON(kvm_call_hyp_nvhe(__pkvm_start_teardown_vm, host_kvm->arch.pkvm.handle));
+
+	node = rb_first(&host_kvm->arch.pkvm.pinned_pages);
+	while (node) {
+		ppage = rb_entry(node, struct kvm_pinned_page, node);
+		WARN_ON(kvm_call_hyp_nvhe(__pkvm_reclaim_dying_guest_page,
+					  host_kvm->arch.pkvm.handle,
+					  page_to_pfn(ppage->page),
+					  ppage->ipa));
+		cond_resched();
+
+		account_locked_vm(mm, 1, false);
+		unpin_user_pages_dirty_lock(&ppage->page, 1, true);
+		node = rb_next(node);
+		rb_erase(&ppage->node, &host_kvm->arch.pkvm.pinned_pages);
+		kfree(ppage);
+	}
+
+	WARN_ON(kvm_call_hyp_nvhe(__pkvm_finalize_teardown_vm, host_kvm->arch.pkvm.handle));
+
+out_free:
+	host_kvm->arch.pkvm.handle = 0;
+	free_hyp_memcache(&host_kvm->arch.pkvm.teardown_mc, host_kvm);
+	free_hyp_stage2_memcache(&host_kvm->arch.pkvm.teardown_stage2_mc,
+				 host_kvm);
+}
+
+int pkvm_init_host_vm(struct kvm *host_kvm, unsigned long type)
+{
+	mutex_init(&host_kvm->lock);
+
+	if (!(type & KVM_VM_TYPE_ARM_PROTECTED))
+		return 0;
+
+	if (!is_protected_kvm_enabled())
+		return -EINVAL;
+
+	host_kvm->arch.pkvm.pvmfw_load_addr = PVMFW_INVALID_LOAD_ADDR;
+	host_kvm->arch.pkvm.enabled = true;
+	return 0;
+}
+
+static int rb_ppage_cmp(const void *key, const struct rb_node *node)
+{
+       struct kvm_pinned_page *p = container_of(node, struct kvm_pinned_page, node);
+       phys_addr_t ipa = (phys_addr_t)key;
+
+       return (ipa < p->ipa) ? -1 : (ipa > p->ipa);
+}
+
+void pkvm_host_reclaim_page(struct kvm *host_kvm, phys_addr_t ipa)
+{
+	struct kvm_pinned_page *ppage;
+	struct mm_struct *mm = current->mm;
+	struct rb_node *node;
+
+	write_lock(&host_kvm->mmu_lock);
+	node = rb_find((void *)ipa, &host_kvm->arch.pkvm.pinned_pages,
+		       rb_ppage_cmp);
+	if (node)
+		rb_erase(node, &host_kvm->arch.pkvm.pinned_pages);
+	write_unlock(&host_kvm->mmu_lock);
+
+	WARN_ON(!node);
+	if (!node)
+		return;
+
+	ppage = container_of(node, struct kvm_pinned_page, node);
+	account_locked_vm(mm, 1, false);
+	unpin_user_pages_dirty_lock(&ppage->page, 1, true);
+	kfree(ppage);
+}
+
+static int __init pkvm_firmware_rmem_err(struct reserved_mem *rmem,
+					 const char *reason)
+{
+	phys_addr_t end = rmem->base + rmem->size;
+
+	kvm_err("Ignoring pkvm guest firmware memory reservation [%pa - %pa]: %s\n",
+		&rmem->base, &end, reason);
+	return -EINVAL;
+}
+
+static int __init pkvm_firmware_rmem_init(struct reserved_mem *rmem)
+{
+	unsigned long node = rmem->fdt_node;
+
+	if (pkvm_firmware_mem)
+		return pkvm_firmware_rmem_err(rmem, "duplicate reservation");
+
+	if (!of_get_flat_dt_prop(node, "no-map", NULL))
+		return pkvm_firmware_rmem_err(rmem, "missing \"no-map\" property");
+
+	if (of_get_flat_dt_prop(node, "reusable", NULL))
+		return pkvm_firmware_rmem_err(rmem, "\"reusable\" property unsupported");
+
+	if (!PAGE_ALIGNED(rmem->base))
+		return pkvm_firmware_rmem_err(rmem, "base is not page-aligned");
+
+	if (!PAGE_ALIGNED(rmem->size))
+		return pkvm_firmware_rmem_err(rmem, "size is not page-aligned");
+
+	*pvmfw_size = rmem->size;
+	*pvmfw_base = rmem->base;
+	pkvm_firmware_mem = rmem;
+	return 0;
+}
+RESERVEDMEM_OF_DECLARE(pkvm_firmware, "linux,pkvm-guest-firmware-memory",
+		       pkvm_firmware_rmem_init);
+
+static int __init pkvm_firmware_rmem_clear(void)
+{
+	void *addr;
+	phys_addr_t size;
+
+	if (likely(!pkvm_firmware_mem))
+		return 0;
+
+	kvm_info("Clearing unused pKVM firmware memory\n");
+	size = pkvm_firmware_mem->size;
+	addr = memremap(pkvm_firmware_mem->base, size, MEMREMAP_WB);
+	if (!addr)
+		return -EINVAL;
+
+	memset(addr, 0, size);
+	/* Clear so user space doesn't get stale info via IOCTL. */
+	pkvm_firmware_mem = NULL;
+
+	dcache_clean_poc((unsigned long)addr, (unsigned long)addr + size);
+	memunmap(addr);
+	return 0;
+}
+
+static void _kvm_host_prot_finalize(void *arg)
+{
+	int *err = arg;
+
+	if (WARN_ON(kvm_call_hyp_nvhe(__pkvm_prot_finalize)))
+		WRITE_ONCE(*err, -EINVAL);
+}
+
+static int pkvm_drop_host_privileges(void)
+{
+	int ret = 0;
+
+	/*
+	 * Flip the static key upfront as that may no longer be possible
+	 * once the host stage 2 is installed.
+	 */
+	static_branch_enable(&kvm_protected_mode_initialized);
+
+	/*
+	 * Fixup the boot mode so that we don't take spurious round
+	 * trips via EL2 on cpu_resume. Flush to the PoC for a good
+	 * measure, so that it can be observed by a CPU coming out of
+	 * suspend with the MMU off.
+	 */
+	__boot_cpu_mode[0] = __boot_cpu_mode[1] = BOOT_CPU_MODE_EL1;
+	dcache_clean_poc((unsigned long)__boot_cpu_mode,
+			 (unsigned long)(__boot_cpu_mode + 2));
+
+	on_each_cpu(_kvm_host_prot_finalize, &ret, 1);
+	return ret;
+}
+
+static int __init finalize_pkvm(void)
+{
+	int ret;
+
+	if (!is_protected_kvm_enabled()) {
+		pkvm_firmware_rmem_clear();
+		return 0;
+	}
+
+	/*
+	 * Modules can play an essential part in the pKVM protection. All of
+	 * them must properly load to enable protected VMs.
+	 */
+	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.
+	 */
+	kmemleak_free_part(__hyp_bss_start, __hyp_bss_end - __hyp_bss_start);
+	kmemleak_free_part(__hyp_data_start, __hyp_data_end - __hyp_data_start);
+	kmemleak_free_part_phys(hyp_mem_base, hyp_mem_size);
+
+	ret = pkvm_drop_host_privileges();
+	if (ret) {
+		pr_err("Failed to de-privilege the host kernel: %d\n", ret);
+		pkvm_firmware_rmem_clear();
+	}
+
+#ifdef CONFIG_ANDROID_ARM64_WORKAROUND_DMA_BEYOND_POC
+	if (!ret)
+		ret = pkvm_register_early_nc_mappings();
+#endif
+
+	return ret;
+}
+device_initcall_sync(finalize_pkvm);
+
+static int pkvm_vm_ioctl_set_fw_ipa(struct kvm *kvm, u64 ipa)
+{
+	int ret = 0;
+
+	if (!pkvm_firmware_mem)
+		return -EINVAL;
+
+	mutex_lock(&kvm->lock);
+	if (kvm->arch.pkvm.handle) {
+		ret = -EBUSY;
+		goto out_unlock;
+	}
+
+	kvm->arch.pkvm.pvmfw_load_addr = ipa;
+out_unlock:
+	mutex_unlock(&kvm->lock);
+	return ret;
+}
+
+static int pkvm_vm_ioctl_info(struct kvm *kvm,
+			      struct kvm_protected_vm_info __user *info)
+{
+	struct kvm_protected_vm_info kinfo = {
+		.firmware_size = pkvm_firmware_mem ?
+				 pkvm_firmware_mem->size :
+				 0,
+	};
+
+	return copy_to_user(info, &kinfo, sizeof(kinfo)) ? -EFAULT : 0;
+}
+
+int pkvm_vm_ioctl_enable_cap(struct kvm *kvm, struct kvm_enable_cap *cap)
+{
+	if (!kvm_vm_is_protected(kvm))
+		return -EINVAL;
+
+	if (cap->args[1] || cap->args[2] || cap->args[3])
+		return -EINVAL;
+
+	switch (cap->flags) {
+	case KVM_CAP_ARM_PROTECTED_VM_FLAGS_SET_FW_IPA:
+		return pkvm_vm_ioctl_set_fw_ipa(kvm, cap->args[0]);
+	case KVM_CAP_ARM_PROTECTED_VM_FLAGS_INFO:
+		return pkvm_vm_ioctl_info(kvm, (void __force __user *)cap->args[0]);
+	default:
+		return -EINVAL;
+	}
+
+	return 0;
+}
+
+#ifdef CONFIG_MODULES
+static char early_pkvm_modules[COMMAND_LINE_SIZE] __initdata;
+
+static int __init early_pkvm_modules_cfg(char *arg)
+{
+	/*
+	 * Loading pKVM modules with kvm-arm.protected_modules is deprecated
+	 * Use kvm-arm.protected_modules=<module1>,<module2>
+	 */
+	if (!arg)
+		return -EINVAL;
+
+	strscpy(early_pkvm_modules, arg, COMMAND_LINE_SIZE);
+
+	return 0;
+}
+early_param("kvm-arm.protected_modules", early_pkvm_modules_cfg);
+
+static void free_modprobe_argv(struct subprocess_info *info)
+{
+	kfree(info->argv);
+}
+
+/*
+ * Heavily inspired by request_module(). The latest couldn't be reused though as
+ * the feature can be disabled depending on umh configuration. Here some
+ * security is enforced by making sure this can be called only when pKVM is
+ * enabled, not yet completely initialized.
+ */
+static int __init __pkvm_request_early_module(char *module_name,
+					      char *module_path)
+{
+	char *modprobe_path = CONFIG_MODPROBE_PATH;
+	struct subprocess_info *info;
+	static char *envp[] = {
+		"HOME=/",
+		"TERM=linux",
+		"PATH=/sbin:/usr/sbin:/bin:/usr/bin",
+		NULL
+	};
+	char **argv;
+	int idx = 0;
+
+	if (!is_protected_kvm_enabled())
+		return -EACCES;
+
+	if (static_branch_likely(&kvm_protected_mode_initialized))
+		return -EACCES;
+
+	argv = kmalloc(sizeof(char *) * 7, GFP_KERNEL);
+	if (!argv)
+		return -ENOMEM;
+
+	argv[idx++] = modprobe_path;
+	argv[idx++] = "-q";
+	if (*module_path != '\0') {
+		argv[idx++] = "-d";
+		argv[idx++] = module_path;
+	}
+	argv[idx++] = "--";
+	argv[idx++] = module_name;
+	argv[idx++] = NULL;
+
+	info = call_usermodehelper_setup(modprobe_path, argv, envp, GFP_KERNEL,
+					 NULL, free_modprobe_argv, NULL);
+	if (!info)
+		goto err;
+
+	/* Even with CONFIG_STATIC_USERMODEHELPER we really want this path */
+	info->path = modprobe_path;
+
+	return call_usermodehelper_exec(info, UMH_WAIT_PROC | UMH_KILLABLE);
+err:
+	kfree(argv);
+
+	return -ENOMEM;
+}
+
+static int __init pkvm_request_early_module(char *module_name, char *module_path)
+{
+	int err = __pkvm_request_early_module(module_name, module_path);
+
+	if (!err)
+		return 0;
+
+	/* Already tried the default path */
+	if (*module_path == '\0')
+		return err;
+
+	pr_info("loading %s from %s failed, fallback to the default path\n",
+		module_name, module_path);
+
+	return __pkvm_request_early_module(module_name, "");
+}
+
+int __init pkvm_load_early_modules(void)
+{
+	char *token, *buf = early_pkvm_modules;
+	char *module_path = CONFIG_PKVM_MODULE_PATH;
+	int err;
+
+	while (true) {
+		token = strsep(&buf, ",");
+
+		if (!token)
+			break;
+
+		if (*token) {
+			err = pkvm_request_early_module(token, module_path);
+			if (err) {
+				pr_err("Failed to load pkvm module %s: %d\n",
+				       token, err);
+				return err;
+			}
+		}
+
+		if (buf)
+			*(buf - 1) = ',';
+	}
+
+	return 0;
+}
+
+struct pkvm_mod_sec_mapping {
+	struct pkvm_module_section *sec;
+	enum kvm_pgtable_prot prot;
+};
+
+static void pkvm_unmap_module_pages(void *kern_va, void *hyp_va, size_t size)
+{
+	size_t offset;
+	u64 pfn;
+
+	for (offset = 0; offset < size; offset += PAGE_SIZE) {
+		pfn = vmalloc_to_pfn(kern_va + offset);
+		kvm_call_hyp_nvhe(__pkvm_unmap_module_page, pfn,
+				  hyp_va + offset);
+	}
+}
+
+static void pkvm_unmap_module_sections(struct pkvm_mod_sec_mapping *secs_map, void *hyp_va_base, int nr_secs)
+{
+	size_t offset, size;
+	void *start;
+	int i;
+
+	for (i = 0; i < nr_secs; i++) {
+		start = secs_map[i].sec->start;
+		size = secs_map[i].sec->end - start;
+		offset = start - secs_map[0].sec->start;
+		pkvm_unmap_module_pages(start, hyp_va_base + offset, size);
+	}
+}
+
+static int pkvm_map_module_section(struct pkvm_mod_sec_mapping *sec_map, void *hyp_va)
+{
+	size_t offset, size = sec_map->sec->end - sec_map->sec->start;
+	int ret;
+	u64 pfn;
+
+	for (offset = 0; offset < size; offset += PAGE_SIZE) {
+		pfn = vmalloc_to_pfn(sec_map->sec->start + offset);
+		ret = kvm_call_hyp_nvhe(__pkvm_map_module_page, pfn,
+					hyp_va + offset, sec_map->prot);
+		if (ret) {
+			pkvm_unmap_module_pages(sec_map->sec->start, hyp_va, offset);
+			return ret;
+		}
+	}
+
+	return 0;
+}
+
+static int pkvm_map_module_sections(struct pkvm_mod_sec_mapping *secs_map, void *hyp_va_base, int nr_secs)
+{
+	size_t offset;
+	int i, ret;
+
+	for (i = 0; i < nr_secs; i++) {
+		offset = secs_map[i].sec->start - secs_map[0].sec->start;
+		ret = pkvm_map_module_section(&secs_map[i], hyp_va_base + offset);
+		if (ret) {
+			pkvm_unmap_module_sections(secs_map, hyp_va_base, i);
+			return ret;
+		}
+	}
+
+	return 0;
+}
+
+static int __pkvm_cmp_mod_sec(const void *p1, const void *p2)
+{
+	struct pkvm_mod_sec_mapping const *s1 = p1;
+	struct pkvm_mod_sec_mapping const *s2 = p2;
+
+	return s1->sec->start < s2->sec->start ? -1 : s1->sec->start > s2->sec->start;
+}
+
+int __pkvm_load_el2_module(struct module *this, unsigned long *token)
+{
+	struct pkvm_el2_module *mod = &this->arch.hyp;
+	struct pkvm_mod_sec_mapping secs_map[] = {
+		{ &mod->text, KVM_PGTABLE_PROT_R | KVM_PGTABLE_PROT_X },
+		{ &mod->bss, KVM_PGTABLE_PROT_R | KVM_PGTABLE_PROT_W },
+		{ &mod->rodata, KVM_PGTABLE_PROT_R },
+		{ &mod->data, KVM_PGTABLE_PROT_R | KVM_PGTABLE_PROT_W },
+	};
+	void *start, *end, *hyp_va;
+	struct arm_smccc_res res;
+	kvm_nvhe_reloc_t *endrel;
+	int ret, i, secs_first;
+	size_t offset, size;
+
+	/* The pKVM hyp only allows loading before it is fully initialized */
+	if (!is_protected_kvm_enabled() || is_pkvm_initialized())
+		return -EOPNOTSUPP;
+
+	for (i = 0; i < ARRAY_SIZE(secs_map); i++) {
+		if (!PAGE_ALIGNED(secs_map[i].sec->start)) {
+			kvm_err("EL2 sections are not page-aligned\n");
+			return -EINVAL;
+		}
+	}
+
+	if (!try_module_get(this)) {
+		kvm_err("Kernel module has been unloaded\n");
+		return -ENODEV;
+	}
+
+	/* Missing or empty module sections are placed first */
+	sort(secs_map, ARRAY_SIZE(secs_map), sizeof(secs_map[0]), __pkvm_cmp_mod_sec, NULL);
+	for (secs_first = 0; secs_first < ARRAY_SIZE(secs_map); secs_first++) {
+		start = secs_map[secs_first].sec->start;
+		if (start)
+			break;
+	}
+	end = secs_map[ARRAY_SIZE(secs_map) - 1].sec->end;
+	size = end - start;
+
+	arm_smccc_1_1_hvc(KVM_HOST_SMCCC_FUNC(__pkvm_alloc_module_va),
+			  size >> PAGE_SHIFT, &res);
+	if (res.a0 != SMCCC_RET_SUCCESS || !res.a1) {
+		kvm_err("Failed to allocate hypervisor VA space for EL2 module\n");
+		module_put(this);
+		return res.a0 == SMCCC_RET_SUCCESS ? -ENOMEM : -EPERM;
+	}
+	hyp_va = (void *)res.a1;
+
+	/*
+	 * The token can be used for other calls related to this module.
+	 * Conveniently the only information needed is this addr so let's use it
+	 * as an identifier.
+	 */
+	if (token)
+		*token = (unsigned long)hyp_va;
+
+	endrel = (void *)mod->relocs + mod->nr_relocs * sizeof(*endrel);
+	kvm_apply_hyp_module_relocations(start, hyp_va, mod->relocs, endrel);
+
+	/*
+	 * Exclude EL2 module sections from kmemleak before making them
+	 * inaccessible.
+	 */
+	kmemleak_free_part(start, size);
+
+	ret = pkvm_map_module_sections(secs_map + secs_first, hyp_va,
+				       ARRAY_SIZE(secs_map) - secs_first);
+	if (ret) {
+		kvm_err("Failed to map EL2 module page: %d\n", ret);
+		module_put(this);
+		return ret;
+	}
+
+	offset = (size_t)((void *)mod->init - start);
+	ret = kvm_call_hyp_nvhe(__pkvm_init_module, hyp_va + offset);
+	if (ret) {
+		kvm_err("Failed to init EL2 module: %d\n", ret);
+		pkvm_unmap_module_sections(secs_map, hyp_va, ARRAY_SIZE(secs_map));
+		module_put(this);
+		return ret;
+	}
+
+	return 0;
+}
+EXPORT_SYMBOL(__pkvm_load_el2_module);
+
+int __pkvm_register_el2_call(unsigned long hfn_hyp_va)
+{
+	return kvm_call_hyp_nvhe(__pkvm_register_hcall, hfn_hyp_va);
+}
+EXPORT_SYMBOL(__pkvm_register_el2_call);
+#endif /* CONFIG_MODULES */
diff --git a/arch/arm64/kvm/pmu-emul.c b/arch/arm64/kvm/pmu-emul.c
index c7e5f6a..ed12c53 100644
--- a/arch/arm64/kvm/pmu-emul.c
+++ b/arch/arm64/kvm/pmu-emul.c
@@ -850,7 +850,7 @@ static int kvm_arm_pmu_v3_set_pmu(struct kvm_vcpu *vcpu, int pmu_id)
 	struct arm_pmu *arm_pmu;
 	int ret = -ENXIO;
 
-	lockdep_assert_held(&kvm->arch.config_lock);
+	mutex_lock(&kvm->lock);
 	mutex_lock(&arm_pmus_lock);
 
 	list_for_each_entry(entry, &arm_pmus, entry) {
@@ -870,6 +870,7 @@ static int kvm_arm_pmu_v3_set_pmu(struct kvm_vcpu *vcpu, int pmu_id)
 	}
 
 	mutex_unlock(&arm_pmus_lock);
+	mutex_unlock(&kvm->lock);
 	return ret;
 }
 
@@ -877,20 +878,22 @@ int kvm_arm_pmu_v3_set_attr(struct kvm_vcpu *vcpu, struct kvm_device_attr *attr)
 {
 	struct kvm *kvm = vcpu->kvm;
 
-	lockdep_assert_held(&kvm->arch.config_lock);
-
 	if (!kvm_vcpu_has_pmu(vcpu))
 		return -ENODEV;
 
 	if (vcpu->arch.pmu.created)
 		return -EBUSY;
 
+	mutex_lock(&kvm->lock);
 	if (!kvm->arch.arm_pmu) {
 		/* No PMU set, get the default one */
 		kvm->arch.arm_pmu = kvm_pmu_probe_armpmu();
-		if (!kvm->arch.arm_pmu)
+		if (!kvm->arch.arm_pmu) {
+			mutex_unlock(&kvm->lock);
 			return -ENODEV;
+		}
 	}
+	mutex_unlock(&kvm->lock);
 
 	switch (attr->attr) {
 	case KVM_ARM_VCPU_PMU_V3_IRQ: {
@@ -934,13 +937,19 @@ int kvm_arm_pmu_v3_set_attr(struct kvm_vcpu *vcpu, struct kvm_device_attr *attr)
 		     filter.action != KVM_PMU_EVENT_DENY))
 			return -EINVAL;
 
-		if (test_bit(KVM_ARCH_FLAG_HAS_RAN_ONCE, &kvm->arch.flags))
+		mutex_lock(&kvm->lock);
+
+		if (test_bit(KVM_ARCH_FLAG_HAS_RAN_ONCE, &kvm->arch.flags)) {
+			mutex_unlock(&kvm->lock);
 			return -EBUSY;
+		}
 
 		if (!kvm->arch.pmu_filter) {
 			kvm->arch.pmu_filter = bitmap_alloc(nr_events, GFP_KERNEL_ACCOUNT);
-			if (!kvm->arch.pmu_filter)
+			if (!kvm->arch.pmu_filter) {
+				mutex_unlock(&kvm->lock);
 				return -ENOMEM;
+			}
 
 			/*
 			 * The default depends on the first applied filter.
@@ -959,6 +968,8 @@ int kvm_arm_pmu_v3_set_attr(struct kvm_vcpu *vcpu, struct kvm_device_attr *attr)
 		else
 			bitmap_clear(kvm->arch.pmu_filter, filter.base_event, filter.nevents);
 
+		mutex_unlock(&kvm->lock);
+
 		return 0;
 	}
 	case KVM_ARM_VCPU_PMU_V3_SET_PMU: {
diff --git a/arch/arm64/kvm/psci.c b/arch/arm64/kvm/psci.c
index 5767e6b..0f7001d7 100644
--- a/arch/arm64/kvm/psci.c
+++ b/arch/arm64/kvm/psci.c
@@ -21,16 +21,6 @@
  * as described in ARM document number ARM DEN 0022A.
  */
 
-#define AFFINITY_MASK(level)	~((0x1UL << ((level) * MPIDR_LEVEL_BITS)) - 1)
-
-static unsigned long psci_affinity_mask(unsigned long affinity_level)
-{
-	if (affinity_level <= 3)
-		return MPIDR_HWID_BITMASK & AFFINITY_MASK(affinity_level);
-
-	return 0;
-}
-
 static unsigned long kvm_psci_vcpu_suspend(struct kvm_vcpu *vcpu)
 {
 	/*
@@ -51,18 +41,11 @@ static unsigned long kvm_psci_vcpu_suspend(struct kvm_vcpu *vcpu)
 	return PSCI_RET_SUCCESS;
 }
 
-static inline bool kvm_psci_valid_affinity(struct kvm_vcpu *vcpu,
-					   unsigned long affinity)
-{
-	return !(affinity & ~MPIDR_HWID_BITMASK);
-}
-
 static unsigned long kvm_psci_vcpu_on(struct kvm_vcpu *source_vcpu)
 {
 	struct vcpu_reset_state *reset_state;
 	struct kvm *kvm = source_vcpu->kvm;
 	struct kvm_vcpu *vcpu = NULL;
-	int ret = PSCI_RET_SUCCESS;
 	unsigned long cpu_id;
 
 	cpu_id = smccc_get_arg1(source_vcpu);
@@ -77,15 +60,11 @@ static unsigned long kvm_psci_vcpu_on(struct kvm_vcpu *source_vcpu)
 	 */
 	if (!vcpu)
 		return PSCI_RET_INVALID_PARAMS;
-
-	spin_lock(&vcpu->arch.mp_state_lock);
 	if (!kvm_arm_vcpu_stopped(vcpu)) {
 		if (kvm_psci_version(source_vcpu) != KVM_ARM_PSCI_0_1)
-			ret = PSCI_RET_ALREADY_ON;
+			return PSCI_RET_ALREADY_ON;
 		else
-			ret = PSCI_RET_INVALID_PARAMS;
-
-		goto out_unlock;
+			return PSCI_RET_INVALID_PARAMS;
 	}
 
 	reset_state = &vcpu->arch.reset_state;
@@ -101,7 +80,7 @@ static unsigned long kvm_psci_vcpu_on(struct kvm_vcpu *source_vcpu)
 	 */
 	reset_state->r0 = smccc_get_arg3(source_vcpu);
 
-	reset_state->reset = true;
+	WRITE_ONCE(reset_state->reset, true);
 	kvm_make_request(KVM_REQ_VCPU_RESET, vcpu);
 
 	/*
@@ -113,9 +92,7 @@ static unsigned long kvm_psci_vcpu_on(struct kvm_vcpu *source_vcpu)
 	vcpu->arch.mp_state.mp_state = KVM_MP_STATE_RUNNABLE;
 	kvm_vcpu_wake_up(vcpu);
 
-out_unlock:
-	spin_unlock(&vcpu->arch.mp_state_lock);
-	return ret;
+	return PSCI_RET_SUCCESS;
 }
 
 static unsigned long kvm_psci_vcpu_affinity_info(struct kvm_vcpu *vcpu)
@@ -175,11 +152,8 @@ static void kvm_prepare_system_event(struct kvm_vcpu *vcpu, u32 type, u64 flags)
 	 * after this call is handled and before the VCPUs have been
 	 * re-initialized.
 	 */
-	kvm_for_each_vcpu(i, tmp, vcpu->kvm) {
-		spin_lock(&tmp->arch.mp_state_lock);
-		WRITE_ONCE(tmp->arch.mp_state.mp_state, KVM_MP_STATE_STOPPED);
-		spin_unlock(&tmp->arch.mp_state_lock);
-	}
+	kvm_for_each_vcpu(i, tmp, vcpu->kvm)
+		tmp->arch.mp_state.mp_state = KVM_MP_STATE_STOPPED;
 	kvm_make_all_cpus_request(vcpu->kvm, KVM_REQ_SLEEP);
 
 	memset(&vcpu->run->system_event, 0, sizeof(vcpu->run->system_event));
@@ -214,18 +188,6 @@ static void kvm_psci_system_suspend(struct kvm_vcpu *vcpu)
 	run->exit_reason = KVM_EXIT_SYSTEM_EVENT;
 }
 
-static void kvm_psci_narrow_to_32bit(struct kvm_vcpu *vcpu)
-{
-	int i;
-
-	/*
-	 * Zero the input registers' upper 32 bits. They will be fully
-	 * zeroed on exit, so we're fine changing them in place.
-	 */
-	for (i = 1; i < 4; i++)
-		vcpu_set_reg(vcpu, i, lower_32_bits(vcpu_get_reg(vcpu, i)));
-}
-
 static unsigned long kvm_psci_check_allowed_function(struct kvm_vcpu *vcpu, u32 fn)
 {
 	/*
@@ -239,6 +201,7 @@ static unsigned long kvm_psci_check_allowed_function(struct kvm_vcpu *vcpu, u32
 
 static int kvm_psci_0_2_call(struct kvm_vcpu *vcpu)
 {
+	struct kvm *kvm = vcpu->kvm;
 	u32 psci_fn = smccc_get_function(vcpu);
 	unsigned long val;
 	int ret = 1;
@@ -263,7 +226,9 @@ static int kvm_psci_0_2_call(struct kvm_vcpu *vcpu)
 		kvm_psci_narrow_to_32bit(vcpu);
 		fallthrough;
 	case PSCI_0_2_FN64_CPU_ON:
+		mutex_lock(&kvm->lock);
 		val = kvm_psci_vcpu_on(vcpu);
+		mutex_unlock(&kvm->lock);
 		break;
 	case PSCI_0_2_FN_AFFINITY_INFO:
 		kvm_psci_narrow_to_32bit(vcpu);
@@ -402,6 +367,7 @@ static int kvm_psci_1_x_call(struct kvm_vcpu *vcpu, u32 minor)
 
 static int kvm_psci_0_1_call(struct kvm_vcpu *vcpu)
 {
+	struct kvm *kvm = vcpu->kvm;
 	u32 psci_fn = smccc_get_function(vcpu);
 	unsigned long val;
 
@@ -411,7 +377,9 @@ static int kvm_psci_0_1_call(struct kvm_vcpu *vcpu)
 		val = PSCI_RET_SUCCESS;
 		break;
 	case KVM_PSCI_FN_CPU_ON:
+		mutex_lock(&kvm->lock);
 		val = kvm_psci_vcpu_on(vcpu);
+		mutex_unlock(&kvm->lock);
 		break;
 	default:
 		val = PSCI_RET_NOT_SUPPORTED;
diff --git a/arch/arm64/kvm/reset.c b/arch/arm64/kvm/reset.c
index f9d0704..2ede291 100644
--- a/arch/arm64/kvm/reset.c
+++ b/arch/arm64/kvm/reset.c
@@ -32,21 +32,14 @@
 /* Maximum phys_shift supported for any VM on this host */
 static u32 kvm_ipa_limit;
 
-/*
- * ARMv8 Reset Values
- */
-#define VCPU_RESET_PSTATE_EL1	(PSR_MODE_EL1h | PSR_A_BIT | PSR_I_BIT | \
-				 PSR_F_BIT | PSR_D_BIT)
-
-#define VCPU_RESET_PSTATE_SVC	(PSR_AA32_MODE_SVC | PSR_AA32_A_BIT | \
-				 PSR_AA32_I_BIT | PSR_AA32_F_BIT)
-
 unsigned int kvm_sve_max_vl;
+unsigned int kvm_host_sve_max_vl;
 
 int kvm_arm_init_sve(void)
 {
 	if (system_supports_sve()) {
 		kvm_sve_max_vl = sve_max_virtualisable_vl();
+		kvm_host_sve_max_vl = sve_max_vl();
 
 		/*
 		 * The get_sve_reg()/set_sve_reg() ioctl interface will need
@@ -118,7 +111,7 @@ static int kvm_vcpu_finalize_sve(struct kvm_vcpu *vcpu)
 		kfree(buf);
 		return ret;
 	}
-	
+
 	vcpu->arch.sve_state = buf;
 	vcpu_set_flag(vcpu, VCPU_SVE_FINALIZED);
 	return 0;
@@ -152,7 +145,6 @@ void kvm_arm_vcpu_destroy(struct kvm_vcpu *vcpu)
 {
 	void *sve_state = vcpu->arch.sve_state;
 
-	kvm_vcpu_unshare_task_fp(vcpu);
 	kvm_unshare_hyp(vcpu, vcpu + 1);
 	if (sve_state)
 		kvm_unshare_hyp(sve_state, sve_state + vcpu_sve_state_size(vcpu));
@@ -165,22 +157,6 @@ static void kvm_vcpu_reset_sve(struct kvm_vcpu *vcpu)
 		memset(vcpu->arch.sve_state, 0, vcpu_sve_state_size(vcpu));
 }
 
-static int kvm_vcpu_enable_ptrauth(struct kvm_vcpu *vcpu)
-{
-	/*
-	 * For now make sure that both address/generic pointer authentication
-	 * features are requested by the userspace together and the system
-	 * supports these capabilities.
-	 */
-	if (!test_bit(KVM_ARM_VCPU_PTRAUTH_ADDRESS, vcpu->arch.features) ||
-	    !test_bit(KVM_ARM_VCPU_PTRAUTH_GENERIC, vcpu->arch.features) ||
-	    !system_has_full_ptr_auth())
-		return -EINVAL;
-
-	vcpu_set_flag(vcpu, GUEST_HAS_PTRAUTH);
-	return 0;
-}
-
 /**
  * kvm_set_vm_width() - set the register width for the guest
  * @vcpu: Pointer to the vcpu being configured
@@ -200,7 +176,7 @@ static int kvm_set_vm_width(struct kvm_vcpu *vcpu)
 
 	is32bit = vcpu_has_feature(vcpu, KVM_ARM_VCPU_EL1_32BIT);
 
-	lockdep_assert_held(&kvm->arch.config_lock);
+	lockdep_assert_held(&kvm->lock);
 
 	if (test_bit(KVM_ARCH_FLAG_REG_WIDTH_CONFIGURED, &kvm->arch.flags)) {
 		/*
@@ -251,20 +227,18 @@ int kvm_reset_vcpu(struct kvm_vcpu *vcpu)
 	struct vcpu_reset_state reset_state;
 	int ret;
 	bool loaded;
-	u32 pstate;
 
-	mutex_lock(&vcpu->kvm->arch.config_lock);
+	mutex_lock(&vcpu->kvm->lock);
 	ret = kvm_set_vm_width(vcpu);
-	mutex_unlock(&vcpu->kvm->arch.config_lock);
+	if (!ret) {
+		reset_state = vcpu->arch.reset_state;
+		WRITE_ONCE(vcpu->arch.reset_state.reset, false);
+	}
+	mutex_unlock(&vcpu->kvm->lock);
 
 	if (ret)
 		return ret;
 
-	spin_lock(&vcpu->arch.mp_state_lock);
-	reset_state = vcpu->arch.reset_state;
-	vcpu->arch.reset_state.reset = false;
-	spin_unlock(&vcpu->arch.mp_state_lock);
-
 	/* Reset PMU outside of the non-preemptible section */
 	kvm_pmu_vcpu_reset(vcpu);
 
@@ -291,29 +265,13 @@ int kvm_reset_vcpu(struct kvm_vcpu *vcpu)
 		}
 	}
 
-	switch (vcpu->arch.target) {
-	default:
-		if (vcpu_el1_is_32bit(vcpu)) {
-			pstate = VCPU_RESET_PSTATE_SVC;
-		} else {
-			pstate = VCPU_RESET_PSTATE_EL1;
-		}
-
-		if (kvm_vcpu_has_pmu(vcpu) && !kvm_arm_support_pmu_v3()) {
-			ret = -EINVAL;
-			goto out;
-		}
-		break;
+	if (kvm_vcpu_has_pmu(vcpu) && !kvm_arm_support_pmu_v3()) {
+		ret = -EINVAL;
+		goto out;
 	}
 
 	/* Reset core registers */
-	memset(vcpu_gp_regs(vcpu), 0, sizeof(*vcpu_gp_regs(vcpu)));
-	memset(&vcpu->arch.ctxt.fp_regs, 0, sizeof(vcpu->arch.ctxt.fp_regs));
-	vcpu->arch.ctxt.spsr_abt = 0;
-	vcpu->arch.ctxt.spsr_und = 0;
-	vcpu->arch.ctxt.spsr_irq = 0;
-	vcpu->arch.ctxt.spsr_fiq = 0;
-	vcpu_gp_regs(vcpu)->pstate = pstate;
+	kvm_reset_vcpu_core(vcpu);
 
 	/* Reset system registers */
 	kvm_reset_sys_regs(vcpu);
@@ -322,22 +280,8 @@ int kvm_reset_vcpu(struct kvm_vcpu *vcpu)
 	 * Additional reset state handling that PSCI may have imposed on us.
 	 * Must be done after all the sys_reg reset.
 	 */
-	if (reset_state.reset) {
-		unsigned long target_pc = reset_state.pc;
-
-		/* Gracefully handle Thumb2 entry point */
-		if (vcpu_mode_is_32bit(vcpu) && (target_pc & 1)) {
-			target_pc &= ~1UL;
-			vcpu_set_thumb(vcpu);
-		}
-
-		/* Propagate caller endianness */
-		if (reset_state.be)
-			kvm_vcpu_set_be(vcpu);
-
-		*vcpu_pc(vcpu) = target_pc;
-		vcpu_set_reg(vcpu, 0, reset_state.r0);
-	}
+	if (reset_state.reset)
+		kvm_reset_vcpu_psci(vcpu, &reset_state);
 
 	/* Reset timer */
 	ret = kvm_timer_vcpu_reset(vcpu);
@@ -396,32 +340,3 @@ int kvm_set_ipa_limit(void)
 
 	return 0;
 }
-
-int kvm_arm_setup_stage2(struct kvm *kvm, unsigned long type)
-{
-	u64 mmfr0, mmfr1;
-	u32 phys_shift;
-
-	if (type & ~KVM_VM_TYPE_ARM_IPA_SIZE_MASK)
-		return -EINVAL;
-
-	phys_shift = KVM_VM_TYPE_ARM_IPA_SIZE(type);
-	if (phys_shift) {
-		if (phys_shift > kvm_ipa_limit ||
-		    phys_shift < ARM64_MIN_PARANGE_BITS)
-			return -EINVAL;
-	} else {
-		phys_shift = KVM_PHYS_SHIFT;
-		if (phys_shift > kvm_ipa_limit) {
-			pr_warn_once("%s using unsupported default IPA limit, upgrade your VMM\n",
-				     current->comm);
-			return -EINVAL;
-		}
-	}
-
-	mmfr0 = read_sanitised_ftr_reg(SYS_ID_AA64MMFR0_EL1);
-	mmfr1 = read_sanitised_ftr_reg(SYS_ID_AA64MMFR1_EL1);
-	kvm->arch.vtcr = kvm_get_vtcr(mmfr0, mmfr1, phys_shift);
-
-	return 0;
-}
diff --git a/arch/arm64/kvm/sys_regs.c b/arch/arm64/kvm/sys_regs.c
index 457e74f..b3a8198 100644
--- a/arch/arm64/kvm/sys_regs.c
+++ b/arch/arm64/kvm/sys_regs.c
@@ -61,26 +61,6 @@ static bool write_to_read_only(struct kvm_vcpu *vcpu,
 	return false;
 }
 
-u64 vcpu_read_sys_reg(const struct kvm_vcpu *vcpu, int reg)
-{
-	u64 val = 0x8badf00d8badf00d;
-
-	if (vcpu_get_flag(vcpu, SYSREGS_ON_CPU) &&
-	    __vcpu_read_sys_reg_from_cpu(reg, &val))
-		return val;
-
-	return __vcpu_sys_reg(vcpu, reg);
-}
-
-void vcpu_write_sys_reg(struct kvm_vcpu *vcpu, u64 val, int reg)
-{
-	if (vcpu_get_flag(vcpu, SYSREGS_ON_CPU) &&
-	    __vcpu_write_sys_reg_to_cpu(val, reg))
-		return;
-
-	 __vcpu_sys_reg(vcpu, reg) = val;
-}
-
 /* 3 bits per cache level, as per CLIDR, but non-existent caches always 0 */
 static u32 cache_levels;
 
@@ -578,19 +558,7 @@ static void reset_actlr(struct kvm_vcpu *vcpu, const struct sys_reg_desc *r)
 
 static void reset_mpidr(struct kvm_vcpu *vcpu, const struct sys_reg_desc *r)
 {
-	u64 mpidr;
-
-	/*
-	 * Map the vcpu_id into the first three affinity level fields of
-	 * the MPIDR. We limit the number of VCPUs in level 0 due to a
-	 * limitation to 16 CPUs in that level in the ICC_SGIxR registers
-	 * of the GICv3 to be able to address each CPU directly when
-	 * sending IPIs.
-	 */
-	mpidr = (vcpu->vcpu_id & 0x0f) << MPIDR_LEVEL_SHIFT(0);
-	mpidr |= ((vcpu->vcpu_id >> 4) & 0xff) << MPIDR_LEVEL_SHIFT(1);
-	mpidr |= ((vcpu->vcpu_id >> 12) & 0xff) << MPIDR_LEVEL_SHIFT(2);
-	vcpu_write_sys_reg(vcpu, (1ULL << 31) | mpidr, MPIDR_EL1);
+	vcpu_write_sys_reg(vcpu, calculate_mpidr(vcpu), MPIDR_EL1);
 }
 
 static unsigned int pmu_visibility(const struct kvm_vcpu *vcpu,
diff --git a/arch/arm64/kvm/sys_regs.h b/arch/arm64/kvm/sys_regs.h
index e4ebb3a..c102399 100644
--- a/arch/arm64/kvm/sys_regs.h
+++ b/arch/arm64/kvm/sys_regs.h
@@ -200,6 +200,25 @@ find_reg(const struct sys_reg_params *params, const struct sys_reg_desc table[],
 	return __inline_bsearch((void *)pval, table, num, sizeof(table[0]), match_sys_reg);
 }
 
+static inline u64 calculate_mpidr(const struct kvm_vcpu *vcpu)
+{
+	u64 mpidr;
+
+	/*
+	 * Map the vcpu_id into the first three affinity level fields of
+	 * the MPIDR. We limit the number of VCPUs in level 0 due to a
+	 * limitation to 16 CPUs in that level in the ICC_SGIxR registers
+	 * of the GICv3 to be able to address each CPU directly when
+	 * sending IPIs.
+	 */
+	mpidr = (vcpu->vcpu_id & 0x0f) << MPIDR_LEVEL_SHIFT(0);
+	mpidr |= ((vcpu->vcpu_id >> 4) & 0xff) << MPIDR_LEVEL_SHIFT(1);
+	mpidr |= ((vcpu->vcpu_id >> 12) & 0xff) << MPIDR_LEVEL_SHIFT(2);
+	mpidr |= (1ULL << 31);
+
+	return mpidr;
+}
+
 const struct sys_reg_desc *get_reg_by_id(u64 id,
 					 const struct sys_reg_desc table[],
 					 unsigned int num);
diff --git a/arch/arm64/kvm/va_layout.c b/arch/arm64/kvm/va_layout.c
index 91b22a0..2923da0 100644
--- a/arch/arm64/kvm/va_layout.c
+++ b/arch/arm64/kvm/va_layout.c
@@ -12,6 +12,7 @@
 #include <asm/insn.h>
 #include <asm/kvm_mmu.h>
 #include <asm/memory.h>
+#include <asm/patching.h>
 
 /*
  * The LSB of the HYP VA tag
@@ -109,6 +110,29 @@ __init void kvm_apply_hyp_relocations(void)
 	}
 }
 
+void kvm_apply_hyp_module_relocations(void *mod_start, void *hyp_va,
+				      kvm_nvhe_reloc_t *begin,
+				      kvm_nvhe_reloc_t *end)
+{
+	kvm_nvhe_reloc_t *rel;
+
+	for (rel = begin; rel < end; ++rel) {
+		u32 **ptr, *va;
+
+		/*
+		 * Each entry contains a 32-bit relative offset from itself
+		 * to a VA position in the module area.
+		 */
+		ptr = (u32 **)((char *)rel + *rel);
+
+		/* Read the module VA value at the relocation address. */
+		va = *ptr;
+
+		/* Convert the module VA of the reloc to a hyp VA */
+		WARN_ON(aarch64_addr_write(ptr, (u64)(((void *)va - mod_start) + hyp_va)));
+	}
+}
+
 static u32 compute_instruction(int n, u32 rd, u32 rn)
 {
 	u32 insn = AARCH64_BREAK_FAULT;
diff --git a/arch/arm64/kvm/vgic/vgic-debug.c b/arch/arm64/kvm/vgic/vgic-debug.c
index 07aa043..78cde68 100644
--- a/arch/arm64/kvm/vgic/vgic-debug.c
+++ b/arch/arm64/kvm/vgic/vgic-debug.c
@@ -85,7 +85,7 @@ static void *vgic_debug_start(struct seq_file *s, loff_t *pos)
 	struct kvm *kvm = s->private;
 	struct vgic_state_iter *iter;
 
-	mutex_lock(&kvm->arch.config_lock);
+	mutex_lock(&kvm->lock);
 	iter = kvm->arch.vgic.iter;
 	if (iter) {
 		iter = ERR_PTR(-EBUSY);
@@ -104,7 +104,7 @@ static void *vgic_debug_start(struct seq_file *s, loff_t *pos)
 	if (end_of_vgic(iter))
 		iter = NULL;
 out:
-	mutex_unlock(&kvm->arch.config_lock);
+	mutex_unlock(&kvm->lock);
 	return iter;
 }
 
@@ -132,12 +132,12 @@ static void vgic_debug_stop(struct seq_file *s, void *v)
 	if (IS_ERR(v))
 		return;
 
-	mutex_lock(&kvm->arch.config_lock);
+	mutex_lock(&kvm->lock);
 	iter = kvm->arch.vgic.iter;
 	kfree(iter->lpi_array);
 	kfree(iter);
 	kvm->arch.vgic.iter = NULL;
-	mutex_unlock(&kvm->arch.config_lock);
+	mutex_unlock(&kvm->lock);
 }
 
 static void print_dist_state(struct seq_file *s, struct vgic_dist *dist)
diff --git a/arch/arm64/kvm/vgic/vgic-init.c b/arch/arm64/kvm/vgic/vgic-init.c
index f2f3bf4..f6d4f40 100644
--- a/arch/arm64/kvm/vgic/vgic-init.c
+++ b/arch/arm64/kvm/vgic/vgic-init.c
@@ -74,6 +74,9 @@ int kvm_vgic_create(struct kvm *kvm, u32 type)
 	unsigned long i;
 	int ret;
 
+	if (irqchip_in_kernel(kvm))
+		return -EEXIST;
+
 	/*
 	 * This function is also called by the KVM_CREATE_IRQCHIP handler,
 	 * which had no chance yet to check the availability of the GICv2
@@ -84,20 +87,10 @@ int kvm_vgic_create(struct kvm *kvm, u32 type)
 		!kvm_vgic_global_state.can_emulate_gicv2)
 		return -ENODEV;
 
-	/* Must be held to avoid race with vCPU creation */
-	lockdep_assert_held(&kvm->lock);
-
 	ret = -EBUSY;
 	if (!lock_all_vcpus(kvm))
 		return ret;
 
-	mutex_lock(&kvm->arch.config_lock);
-
-	if (irqchip_in_kernel(kvm)) {
-		ret = -EEXIST;
-		goto out_unlock;
-	}
-
 	kvm_for_each_vcpu(i, vcpu, kvm) {
 		if (vcpu_has_run_once(vcpu))
 			goto out_unlock;
@@ -125,7 +118,6 @@ int kvm_vgic_create(struct kvm *kvm, u32 type)
 		INIT_LIST_HEAD(&kvm->arch.vgic.rd_regions);
 
 out_unlock:
-	mutex_unlock(&kvm->arch.config_lock);
 	unlock_all_vcpus(kvm);
 	return ret;
 }
@@ -235,9 +227,9 @@ int kvm_vgic_vcpu_init(struct kvm_vcpu *vcpu)
 	 * KVM io device for the redistributor that belongs to this VCPU.
 	 */
 	if (dist->vgic_model == KVM_DEV_TYPE_ARM_VGIC_V3) {
-		mutex_lock(&vcpu->kvm->slots_lock);
+		mutex_lock(&vcpu->kvm->lock);
 		ret = vgic_register_redist_iodev(vcpu);
-		mutex_unlock(&vcpu->kvm->slots_lock);
+		mutex_unlock(&vcpu->kvm->lock);
 	}
 	return ret;
 }
@@ -258,6 +250,7 @@ static void kvm_vgic_vcpu_enable(struct kvm_vcpu *vcpu)
  * The function is generally called when nr_spis has been explicitly set
  * by the guest through the KVM DEVICE API. If not nr_spis is set to 256.
  * vgic_initialized() returns true when this function has succeeded.
+ * Must be called with kvm->lock held!
  */
 int vgic_init(struct kvm *kvm)
 {
@@ -266,8 +259,6 @@ int vgic_init(struct kvm *kvm)
 	int ret = 0, i;
 	unsigned long idx;
 
-	lockdep_assert_held(&kvm->arch.config_lock);
-
 	if (vgic_initialized(kvm))
 		return 0;
 
@@ -382,13 +373,12 @@ void kvm_vgic_vcpu_destroy(struct kvm_vcpu *vcpu)
 	vgic_cpu->rd_iodev.base_addr = VGIC_ADDR_UNDEF;
 }
 
+/* To be called with kvm->lock held */
 static void __kvm_vgic_destroy(struct kvm *kvm)
 {
 	struct kvm_vcpu *vcpu;
 	unsigned long i;
 
-	lockdep_assert_held(&kvm->arch.config_lock);
-
 	vgic_debug_destroy(kvm);
 
 	kvm_for_each_vcpu(i, vcpu, kvm)
@@ -399,9 +389,9 @@ static void __kvm_vgic_destroy(struct kvm *kvm)
 
 void kvm_vgic_destroy(struct kvm *kvm)
 {
-	mutex_lock(&kvm->arch.config_lock);
+	mutex_lock(&kvm->lock);
 	__kvm_vgic_destroy(kvm);
-	mutex_unlock(&kvm->arch.config_lock);
+	mutex_unlock(&kvm->lock);
 }
 
 /**
@@ -424,9 +414,9 @@ int vgic_lazy_init(struct kvm *kvm)
 		if (kvm->arch.vgic.vgic_model != KVM_DEV_TYPE_ARM_VGIC_V2)
 			return -EBUSY;
 
-		mutex_lock(&kvm->arch.config_lock);
+		mutex_lock(&kvm->lock);
 		ret = vgic_init(kvm);
-		mutex_unlock(&kvm->arch.config_lock);
+		mutex_unlock(&kvm->lock);
 	}
 
 	return ret;
@@ -446,48 +436,30 @@ int vgic_lazy_init(struct kvm *kvm)
 int kvm_vgic_map_resources(struct kvm *kvm)
 {
 	struct vgic_dist *dist = &kvm->arch.vgic;
-	enum vgic_type type;
-	gpa_t dist_base;
 	int ret = 0;
 
 	if (likely(vgic_ready(kvm)))
 		return 0;
 
-	mutex_lock(&kvm->slots_lock);
-	mutex_lock(&kvm->arch.config_lock);
+	mutex_lock(&kvm->lock);
 	if (vgic_ready(kvm))
 		goto out;
 
 	if (!irqchip_in_kernel(kvm))
 		goto out;
 
-	if (dist->vgic_model == KVM_DEV_TYPE_ARM_VGIC_V2) {
+	if (dist->vgic_model == KVM_DEV_TYPE_ARM_VGIC_V2)
 		ret = vgic_v2_map_resources(kvm);
-		type = VGIC_V2;
-	} else {
+	else
 		ret = vgic_v3_map_resources(kvm);
-		type = VGIC_V3;
-	}
 
-	if (ret) {
+	if (ret)
 		__kvm_vgic_destroy(kvm);
-		goto out;
-	}
-	dist->ready = true;
-	dist_base = dist->vgic_dist_base;
-	mutex_unlock(&kvm->arch.config_lock);
-
-	ret = vgic_register_dist_iodev(kvm, dist_base, type);
-	if (ret) {
-		kvm_err("Unable to register VGIC dist MMIO regions\n");
-		kvm_vgic_destroy(kvm);
-	}
-	mutex_unlock(&kvm->slots_lock);
-	return ret;
+	else
+		dist->ready = true;
 
 out:
-	mutex_unlock(&kvm->arch.config_lock);
-	mutex_unlock(&kvm->slots_lock);
+	mutex_unlock(&kvm->lock);
 	return ret;
 }
 
diff --git a/arch/arm64/kvm/vgic/vgic-its.c b/arch/arm64/kvm/vgic/vgic-its.c
index 00ad658..733b530 100644
--- a/arch/arm64/kvm/vgic/vgic-its.c
+++ b/arch/arm64/kvm/vgic/vgic-its.c
@@ -1936,7 +1936,6 @@ void vgic_lpi_translation_cache_destroy(struct kvm *kvm)
 
 static int vgic_its_create(struct kvm_device *dev, u32 type)
 {
-	int ret;
 	struct vgic_its *its;
 
 	if (type != KVM_DEV_TYPE_ARM_VGIC_ITS)
@@ -1946,12 +1945,9 @@ static int vgic_its_create(struct kvm_device *dev, u32 type)
 	if (!its)
 		return -ENOMEM;
 
-	mutex_lock(&dev->kvm->arch.config_lock);
-
 	if (vgic_initialized(dev->kvm)) {
-		ret = vgic_v4_init(dev->kvm);
+		int ret = vgic_v4_init(dev->kvm);
 		if (ret < 0) {
-			mutex_unlock(&dev->kvm->arch.config_lock);
 			kfree(its);
 			return ret;
 		}
@@ -1962,14 +1958,6 @@ static int vgic_its_create(struct kvm_device *dev, u32 type)
 	mutex_init(&its->its_lock);
 	mutex_init(&its->cmd_lock);
 
-	/* Yep, even more trickery for lock ordering... */
-#ifdef CONFIG_LOCKDEP
-	mutex_lock(&its->cmd_lock);
-	mutex_lock(&its->its_lock);
-	mutex_unlock(&its->its_lock);
-	mutex_unlock(&its->cmd_lock);
-#endif
-
 	its->vgic_its_base = VGIC_ADDR_UNDEF;
 
 	INIT_LIST_HEAD(&its->device_list);
@@ -1988,11 +1976,7 @@ static int vgic_its_create(struct kvm_device *dev, u32 type)
 
 	dev->private = its;
 
-	ret = vgic_its_set_abi(its, NR_ITS_ABIS - 1);
-
-	mutex_unlock(&dev->kvm->arch.config_lock);
-
-	return ret;
+	return vgic_its_set_abi(its, NR_ITS_ABIS - 1);
 }
 
 static void vgic_its_destroy(struct kvm_device *kvm_dev)
@@ -2061,13 +2045,6 @@ static int vgic_its_attr_regs_access(struct kvm_device *dev,
 
 	mutex_lock(&dev->kvm->lock);
 
-	if (!lock_all_vcpus(dev->kvm)) {
-		mutex_unlock(&dev->kvm->lock);
-		return -EBUSY;
-	}
-
-	mutex_lock(&dev->kvm->arch.config_lock);
-
 	if (IS_VGIC_ADDR_UNDEF(its->vgic_its_base)) {
 		ret = -ENXIO;
 		goto out;
@@ -2081,6 +2058,11 @@ static int vgic_its_attr_regs_access(struct kvm_device *dev,
 		goto out;
 	}
 
+	if (!lock_all_vcpus(dev->kvm)) {
+		ret = -EBUSY;
+		goto out;
+	}
+
 	addr = its->vgic_its_base + offset;
 
 	len = region->access_flags & VGIC_ACCESS_64bit ? 8 : 4;
@@ -2094,9 +2076,8 @@ static int vgic_its_attr_regs_access(struct kvm_device *dev,
 	} else {
 		*reg = region->its_read(dev->kvm, its, addr, len);
 	}
-out:
-	mutex_unlock(&dev->kvm->arch.config_lock);
 	unlock_all_vcpus(dev->kvm);
+out:
 	mutex_unlock(&dev->kvm->lock);
 	return ret;
 }
@@ -2768,15 +2749,14 @@ static int vgic_its_ctrl(struct kvm *kvm, struct vgic_its *its, u64 attr)
 		return 0;
 
 	mutex_lock(&kvm->lock);
+	mutex_lock(&its->its_lock);
 
 	if (!lock_all_vcpus(kvm)) {
+		mutex_unlock(&its->its_lock);
 		mutex_unlock(&kvm->lock);
 		return -EBUSY;
 	}
 
-	mutex_lock(&kvm->arch.config_lock);
-	mutex_lock(&its->its_lock);
-
 	switch (attr) {
 	case KVM_DEV_ARM_ITS_CTRL_RESET:
 		vgic_its_reset(kvm, its);
@@ -2789,9 +2769,8 @@ static int vgic_its_ctrl(struct kvm *kvm, struct vgic_its *its, u64 attr)
 		break;
 	}
 
-	mutex_unlock(&its->its_lock);
-	mutex_unlock(&kvm->arch.config_lock);
 	unlock_all_vcpus(kvm);
+	mutex_unlock(&its->its_lock);
 	mutex_unlock(&kvm->lock);
 	return ret;
 }
diff --git a/arch/arm64/kvm/vgic/vgic-kvm-device.c b/arch/arm64/kvm/vgic/vgic-kvm-device.c
index bf4b3d9..edeac23 100644
--- a/arch/arm64/kvm/vgic/vgic-kvm-device.c
+++ b/arch/arm64/kvm/vgic/vgic-kvm-device.c
@@ -46,7 +46,7 @@ int kvm_set_legacy_vgic_v2_addr(struct kvm *kvm, struct kvm_arm_device_addr *dev
 	struct vgic_dist *vgic = &kvm->arch.vgic;
 	int r;
 
-	mutex_lock(&kvm->arch.config_lock);
+	mutex_lock(&kvm->lock);
 	switch (FIELD_GET(KVM_ARM_DEVICE_TYPE_MASK, dev_addr->id)) {
 	case KVM_VGIC_V2_ADDR_TYPE_DIST:
 		r = vgic_check_type(kvm, KVM_DEV_TYPE_ARM_VGIC_V2);
@@ -68,7 +68,7 @@ int kvm_set_legacy_vgic_v2_addr(struct kvm *kvm, struct kvm_arm_device_addr *dev
 		r = -ENODEV;
 	}
 
-	mutex_unlock(&kvm->arch.config_lock);
+	mutex_unlock(&kvm->lock);
 
 	return r;
 }
@@ -102,11 +102,7 @@ static int kvm_vgic_addr(struct kvm *kvm, struct kvm_device_attr *attr, bool wri
 		if (get_user(addr, uaddr))
 			return -EFAULT;
 
-	/*
-	 * Since we can't hold config_lock while registering the redistributor
-	 * iodevs, take the slots_lock immediately.
-	 */
-	mutex_lock(&kvm->slots_lock);
+	mutex_lock(&kvm->lock);
 	switch (attr->attr) {
 	case KVM_VGIC_V2_ADDR_TYPE_DIST:
 		r = vgic_check_type(kvm, KVM_DEV_TYPE_ARM_VGIC_V2);
@@ -186,7 +182,6 @@ static int kvm_vgic_addr(struct kvm *kvm, struct kvm_device_attr *attr, bool wri
 	if (r)
 		goto out;
 
-	mutex_lock(&kvm->arch.config_lock);
 	if (write) {
 		r = vgic_check_iorange(kvm, *addr_ptr, addr, alignment, size);
 		if (!r)
@@ -194,10 +189,9 @@ static int kvm_vgic_addr(struct kvm *kvm, struct kvm_device_attr *attr, bool wri
 	} else {
 		addr = *addr_ptr;
 	}
-	mutex_unlock(&kvm->arch.config_lock);
 
 out:
-	mutex_unlock(&kvm->slots_lock);
+	mutex_unlock(&kvm->lock);
 
 	if (!r && !write)
 		r =  put_user(addr, uaddr);
@@ -233,7 +227,7 @@ static int vgic_set_common_attr(struct kvm_device *dev,
 		    (val & 31))
 			return -EINVAL;
 
-		mutex_lock(&dev->kvm->arch.config_lock);
+		mutex_lock(&dev->kvm->lock);
 
 		if (vgic_ready(dev->kvm) || dev->kvm->arch.vgic.nr_spis)
 			ret = -EBUSY;
@@ -241,16 +235,16 @@ static int vgic_set_common_attr(struct kvm_device *dev,
 			dev->kvm->arch.vgic.nr_spis =
 				val - VGIC_NR_PRIVATE_IRQS;
 
-		mutex_unlock(&dev->kvm->arch.config_lock);
+		mutex_unlock(&dev->kvm->lock);
 
 		return ret;
 	}
 	case KVM_DEV_ARM_VGIC_GRP_CTRL: {
 		switch (attr->attr) {
 		case KVM_DEV_ARM_VGIC_CTRL_INIT:
-			mutex_lock(&dev->kvm->arch.config_lock);
+			mutex_lock(&dev->kvm->lock);
 			r = vgic_init(dev->kvm);
-			mutex_unlock(&dev->kvm->arch.config_lock);
+			mutex_unlock(&dev->kvm->lock);
 			return r;
 		case KVM_DEV_ARM_VGIC_SAVE_PENDING_TABLES:
 			/*
@@ -266,10 +260,7 @@ static int vgic_set_common_attr(struct kvm_device *dev,
 				mutex_unlock(&dev->kvm->lock);
 				return -EBUSY;
 			}
-
-			mutex_lock(&dev->kvm->arch.config_lock);
 			r = vgic_v3_save_pending_tables(dev->kvm);
-			mutex_unlock(&dev->kvm->arch.config_lock);
 			unlock_all_vcpus(dev->kvm);
 			mutex_unlock(&dev->kvm->lock);
 			return r;
@@ -420,17 +411,15 @@ static int vgic_v2_attr_regs_access(struct kvm_device *dev,
 
 	mutex_lock(&dev->kvm->lock);
 
-	if (!lock_all_vcpus(dev->kvm)) {
-		mutex_unlock(&dev->kvm->lock);
-		return -EBUSY;
-	}
-
-	mutex_lock(&dev->kvm->arch.config_lock);
-
 	ret = vgic_init(dev->kvm);
 	if (ret)
 		goto out;
 
+	if (!lock_all_vcpus(dev->kvm)) {
+		ret = -EBUSY;
+		goto out;
+	}
+
 	switch (attr->group) {
 	case KVM_DEV_ARM_VGIC_GRP_CPU_REGS:
 		ret = vgic_v2_cpuif_uaccess(vcpu, is_write, addr, &val);
@@ -443,9 +432,8 @@ static int vgic_v2_attr_regs_access(struct kvm_device *dev,
 		break;
 	}
 
-out:
-	mutex_unlock(&dev->kvm->arch.config_lock);
 	unlock_all_vcpus(dev->kvm);
+out:
 	mutex_unlock(&dev->kvm->lock);
 
 	if (!ret && !is_write)
@@ -581,14 +569,12 @@ static int vgic_v3_attr_regs_access(struct kvm_device *dev,
 
 	mutex_lock(&dev->kvm->lock);
 
-	if (!lock_all_vcpus(dev->kvm)) {
-		mutex_unlock(&dev->kvm->lock);
-		return -EBUSY;
+	if (unlikely(!vgic_initialized(dev->kvm))) {
+		ret = -EBUSY;
+		goto out;
 	}
 
-	mutex_lock(&dev->kvm->arch.config_lock);
-
-	if (unlikely(!vgic_initialized(dev->kvm))) {
+	if (!lock_all_vcpus(dev->kvm)) {
 		ret = -EBUSY;
 		goto out;
 	}
@@ -623,9 +609,8 @@ static int vgic_v3_attr_regs_access(struct kvm_device *dev,
 		break;
 	}
 
-out:
-	mutex_unlock(&dev->kvm->arch.config_lock);
 	unlock_all_vcpus(dev->kvm);
+out:
 	mutex_unlock(&dev->kvm->lock);
 
 	if (!ret && uaccess && !is_write) {
diff --git a/arch/arm64/kvm/vgic/vgic-mmio-v3.c b/arch/arm64/kvm/vgic/vgic-mmio-v3.c
index 188d218..91201f7 100644
--- a/arch/arm64/kvm/vgic/vgic-mmio-v3.c
+++ b/arch/arm64/kvm/vgic/vgic-mmio-v3.c
@@ -111,7 +111,7 @@ static void vgic_mmio_write_v3_misc(struct kvm_vcpu *vcpu,
 	case GICD_CTLR: {
 		bool was_enabled, is_hwsgi;
 
-		mutex_lock(&vcpu->kvm->arch.config_lock);
+		mutex_lock(&vcpu->kvm->lock);
 
 		was_enabled = dist->enabled;
 		is_hwsgi = dist->nassgireq;
@@ -139,7 +139,7 @@ static void vgic_mmio_write_v3_misc(struct kvm_vcpu *vcpu,
 		else if (!was_enabled && dist->enabled)
 			vgic_kick_vcpus(vcpu->kvm);
 
-		mutex_unlock(&vcpu->kvm->arch.config_lock);
+		mutex_unlock(&vcpu->kvm->lock);
 		break;
 	}
 	case GICD_TYPER:
@@ -769,13 +769,10 @@ int vgic_register_redist_iodev(struct kvm_vcpu *vcpu)
 	struct vgic_io_device *rd_dev = &vcpu->arch.vgic_cpu.rd_iodev;
 	struct vgic_redist_region *rdreg;
 	gpa_t rd_base;
-	int ret = 0;
-
-	lockdep_assert_held(&kvm->slots_lock);
-	mutex_lock(&kvm->arch.config_lock);
+	int ret;
 
 	if (!IS_VGIC_ADDR_UNDEF(vgic_cpu->rd_iodev.base_addr))
-		goto out_unlock;
+		return 0;
 
 	/*
 	 * We may be creating VCPUs before having set the base address for the
@@ -785,12 +782,10 @@ int vgic_register_redist_iodev(struct kvm_vcpu *vcpu)
 	 */
 	rdreg = vgic_v3_rdist_free_slot(&vgic->rd_regions);
 	if (!rdreg)
-		goto out_unlock;
+		return 0;
 
-	if (!vgic_v3_check_base(kvm)) {
-		ret = -EINVAL;
-		goto out_unlock;
-	}
+	if (!vgic_v3_check_base(kvm))
+		return -EINVAL;
 
 	vgic_cpu->rdreg = rdreg;
 	vgic_cpu->rdreg_index = rdreg->free_index;
@@ -804,20 +799,16 @@ int vgic_register_redist_iodev(struct kvm_vcpu *vcpu)
 	rd_dev->nr_regions = ARRAY_SIZE(vgic_v3_rd_registers);
 	rd_dev->redist_vcpu = vcpu;
 
-	mutex_unlock(&kvm->arch.config_lock);
-
+	mutex_lock(&kvm->slots_lock);
 	ret = kvm_io_bus_register_dev(kvm, KVM_MMIO_BUS, rd_base,
 				      2 * SZ_64K, &rd_dev->dev);
+	mutex_unlock(&kvm->slots_lock);
+
 	if (ret)
 		return ret;
 
-	/* Protected by slots_lock */
 	rdreg->free_index++;
 	return 0;
-
-out_unlock:
-	mutex_unlock(&kvm->arch.config_lock);
-	return ret;
 }
 
 static void vgic_unregister_redist_iodev(struct kvm_vcpu *vcpu)
@@ -843,10 +834,12 @@ static int vgic_register_all_redist_iodevs(struct kvm *kvm)
 		/* The current c failed, so iterate over the previous ones. */
 		int i;
 
+		mutex_lock(&kvm->slots_lock);
 		for (i = 0; i < c; i++) {
 			vcpu = kvm_get_vcpu(kvm, i);
 			vgic_unregister_redist_iodev(vcpu);
 		}
+		mutex_unlock(&kvm->slots_lock);
 	}
 
 	return ret;
@@ -945,9 +938,7 @@ int vgic_v3_set_redist_base(struct kvm *kvm, u32 index, u64 addr, u32 count)
 {
 	int ret;
 
-	mutex_lock(&kvm->arch.config_lock);
 	ret = vgic_v3_alloc_redist_region(kvm, index, addr, count);
-	mutex_unlock(&kvm->arch.config_lock);
 	if (ret)
 		return ret;
 
@@ -959,10 +950,8 @@ int vgic_v3_set_redist_base(struct kvm *kvm, u32 index, u64 addr, u32 count)
 	if (ret) {
 		struct vgic_redist_region *rdreg;
 
-		mutex_lock(&kvm->arch.config_lock);
 		rdreg = vgic_v3_rdist_region_from_index(kvm, index);
 		vgic_v3_free_redist_region(rdreg);
-		mutex_unlock(&kvm->arch.config_lock);
 		return ret;
 	}
 
diff --git a/arch/arm64/kvm/vgic/vgic-mmio.c b/arch/arm64/kvm/vgic/vgic-mmio.c
index eb5c58d..b32d434c 100644
--- a/arch/arm64/kvm/vgic/vgic-mmio.c
+++ b/arch/arm64/kvm/vgic/vgic-mmio.c
@@ -527,13 +527,13 @@ unsigned long vgic_mmio_read_active(struct kvm_vcpu *vcpu,
 	u32 intid = VGIC_ADDR_TO_INTID(addr, 1);
 	u32 val;
 
-	mutex_lock(&vcpu->kvm->arch.config_lock);
+	mutex_lock(&vcpu->kvm->lock);
 	vgic_access_active_prepare(vcpu, intid);
 
 	val = __vgic_mmio_read_active(vcpu, addr, len);
 
 	vgic_access_active_finish(vcpu, intid);
-	mutex_unlock(&vcpu->kvm->arch.config_lock);
+	mutex_unlock(&vcpu->kvm->lock);
 
 	return val;
 }
@@ -622,13 +622,13 @@ void vgic_mmio_write_cactive(struct kvm_vcpu *vcpu,
 {
 	u32 intid = VGIC_ADDR_TO_INTID(addr, 1);
 
-	mutex_lock(&vcpu->kvm->arch.config_lock);
+	mutex_lock(&vcpu->kvm->lock);
 	vgic_access_active_prepare(vcpu, intid);
 
 	__vgic_mmio_write_cactive(vcpu, addr, len, val);
 
 	vgic_access_active_finish(vcpu, intid);
-	mutex_unlock(&vcpu->kvm->arch.config_lock);
+	mutex_unlock(&vcpu->kvm->lock);
 }
 
 int vgic_mmio_uaccess_write_cactive(struct kvm_vcpu *vcpu,
@@ -659,13 +659,13 @@ void vgic_mmio_write_sactive(struct kvm_vcpu *vcpu,
 {
 	u32 intid = VGIC_ADDR_TO_INTID(addr, 1);
 
-	mutex_lock(&vcpu->kvm->arch.config_lock);
+	mutex_lock(&vcpu->kvm->lock);
 	vgic_access_active_prepare(vcpu, intid);
 
 	__vgic_mmio_write_sactive(vcpu, addr, len, val);
 
 	vgic_access_active_finish(vcpu, intid);
-	mutex_unlock(&vcpu->kvm->arch.config_lock);
+	mutex_unlock(&vcpu->kvm->lock);
 }
 
 int vgic_mmio_uaccess_write_sactive(struct kvm_vcpu *vcpu,
@@ -1093,6 +1093,7 @@ int vgic_register_dist_iodev(struct kvm *kvm, gpa_t dist_base_address,
 			     enum vgic_type type)
 {
 	struct vgic_io_device *io_device = &kvm->arch.vgic.dist_iodev;
+	int ret = 0;
 	unsigned int len;
 
 	switch (type) {
@@ -1110,6 +1111,10 @@ int vgic_register_dist_iodev(struct kvm *kvm, gpa_t dist_base_address,
 	io_device->iodev_type = IODEV_DIST;
 	io_device->redist_vcpu = NULL;
 
-	return kvm_io_bus_register_dev(kvm, KVM_MMIO_BUS, dist_base_address,
-				       len, &io_device->dev);
+	mutex_lock(&kvm->slots_lock);
+	ret = kvm_io_bus_register_dev(kvm, KVM_MMIO_BUS, dist_base_address,
+				      len, &io_device->dev);
+	mutex_unlock(&kvm->slots_lock);
+
+	return ret;
 }
diff --git a/arch/arm64/kvm/vgic/vgic-v2.c b/arch/arm64/kvm/vgic/vgic-v2.c
index 7e9cdb7..4e8bb90 100644
--- a/arch/arm64/kvm/vgic/vgic-v2.c
+++ b/arch/arm64/kvm/vgic/vgic-v2.c
@@ -312,6 +312,12 @@ int vgic_v2_map_resources(struct kvm *kvm)
 		return ret;
 	}
 
+	ret = vgic_register_dist_iodev(kvm, dist->vgic_dist_base, VGIC_V2);
+	if (ret) {
+		kvm_err("Unable to register VGIC MMIO regions\n");
+		return ret;
+	}
+
 	if (!static_branch_unlikely(&vgic_v2_cpuif_trap)) {
 		ret = kvm_phys_addr_ioremap(kvm, dist->vgic_cpu_base,
 					    kvm_vgic_global_state.vcpu_base,
@@ -464,17 +470,10 @@ void vgic_v2_load(struct kvm_vcpu *vcpu)
 		       kvm_vgic_global_state.vctrl_base + GICH_APR);
 }
 
-void vgic_v2_vmcr_sync(struct kvm_vcpu *vcpu)
+void vgic_v2_put(struct kvm_vcpu *vcpu, bool blocking)
 {
 	struct vgic_v2_cpu_if *cpu_if = &vcpu->arch.vgic_cpu.vgic_v2;
 
 	cpu_if->vgic_vmcr = readl_relaxed(kvm_vgic_global_state.vctrl_base + GICH_VMCR);
-}
-
-void vgic_v2_put(struct kvm_vcpu *vcpu)
-{
-	struct vgic_v2_cpu_if *cpu_if = &vcpu->arch.vgic_cpu.vgic_v2;
-
-	vgic_v2_vmcr_sync(vcpu);
 	cpu_if->vgic_apr = readl_relaxed(kvm_vgic_global_state.vctrl_base + GICH_APR);
 }
diff --git a/arch/arm64/kvm/vgic/vgic-v3.c b/arch/arm64/kvm/vgic/vgic-v3.c
index f86c3007..8469155 100644
--- a/arch/arm64/kvm/vgic/vgic-v3.c
+++ b/arch/arm64/kvm/vgic/vgic-v3.c
@@ -538,6 +538,7 @@ int vgic_v3_map_resources(struct kvm *kvm)
 {
 	struct vgic_dist *dist = &kvm->arch.vgic;
 	struct kvm_vcpu *vcpu;
+	int ret = 0;
 	unsigned long c;
 
 	kvm_for_each_vcpu(c, vcpu, kvm) {
@@ -567,6 +568,12 @@ int vgic_v3_map_resources(struct kvm *kvm)
 		return -EBUSY;
 	}
 
+	ret = vgic_register_dist_iodev(kvm, dist->vgic_dist_base, VGIC_V3);
+	if (ret) {
+		kvm_err("Unable to register VGICv3 dist MMIO regions\n");
+		return ret;
+	}
+
 	if (kvm_vgic_global_state.has_gicv4_1)
 		vgic_v4_configure_vsgis(kvm);
 
@@ -714,15 +721,8 @@ void vgic_v3_load(struct kvm_vcpu *vcpu)
 {
 	struct vgic_v3_cpu_if *cpu_if = &vcpu->arch.vgic_cpu.vgic_v3;
 
-	/*
-	 * If dealing with a GICv2 emulation on GICv3, VMCR_EL2.VFIQen
-	 * is dependent on ICC_SRE_EL1.SRE, and we have to perform the
-	 * VMCR_EL2 save/restore in the world switch.
-	 */
-	if (likely(cpu_if->vgic_sre))
-		kvm_call_hyp(__vgic_v3_write_vmcr, cpu_if->vgic_vmcr);
-
-	kvm_call_hyp(__vgic_v3_restore_aprs, cpu_if);
+	if (likely(!is_protected_kvm_enabled()))
+		kvm_call_hyp(__vgic_v3_restore_vmcr_aprs, cpu_if);
 
 	if (has_vhe())
 		__vgic_v3_activate_traps(cpu_if);
@@ -730,23 +730,14 @@ void vgic_v3_load(struct kvm_vcpu *vcpu)
 	WARN_ON(vgic_v4_load(vcpu));
 }
 
-void vgic_v3_vmcr_sync(struct kvm_vcpu *vcpu)
+void vgic_v3_put(struct kvm_vcpu *vcpu, bool blocking)
 {
 	struct vgic_v3_cpu_if *cpu_if = &vcpu->arch.vgic_cpu.vgic_v3;
 
-	if (likely(cpu_if->vgic_sre))
-		cpu_if->vgic_vmcr = kvm_call_hyp_ret(__vgic_v3_read_vmcr);
-}
+	WARN_ON(vgic_v4_put(vcpu, blocking));
 
-void vgic_v3_put(struct kvm_vcpu *vcpu)
-{
-	struct vgic_v3_cpu_if *cpu_if = &vcpu->arch.vgic_cpu.vgic_v3;
-
-	WARN_ON(vgic_v4_put(vcpu, false));
-
-	vgic_v3_vmcr_sync(vcpu);
-
-	kvm_call_hyp(__vgic_v3_save_aprs, cpu_if);
+	if (likely(!is_protected_kvm_enabled()))
+		kvm_call_hyp(__vgic_v3_save_vmcr_aprs, cpu_if);
 
 	if (has_vhe())
 		__vgic_v3_deactivate_traps(cpu_if);
diff --git a/arch/arm64/kvm/vgic/vgic-v4.c b/arch/arm64/kvm/vgic/vgic-v4.c
index c1c28fe..a413718 100644
--- a/arch/arm64/kvm/vgic/vgic-v4.c
+++ b/arch/arm64/kvm/vgic/vgic-v4.c
@@ -184,14 +184,13 @@ static void vgic_v4_disable_vsgis(struct kvm_vcpu *vcpu)
 	}
 }
 
+/* Must be called with the kvm lock held */
 void vgic_v4_configure_vsgis(struct kvm *kvm)
 {
 	struct vgic_dist *dist = &kvm->arch.vgic;
 	struct kvm_vcpu *vcpu;
 	unsigned long i;
 
-	lockdep_assert_held(&kvm->arch.config_lock);
-
 	kvm_arm_halt_guest(kvm);
 
 	kvm_for_each_vcpu(i, vcpu, kvm) {
@@ -233,8 +232,9 @@ int vgic_v4_request_vpe_irq(struct kvm_vcpu *vcpu, int irq)
  * @kvm:	Pointer to the VM being initialized
  *
  * We may be called each time a vITS is created, or when the
- * vgic is initialized. In both cases, the number of vcpus
- * should now be fixed.
+ * vgic is initialized. This relies on kvm->lock to be
+ * held. In both cases, the number of vcpus should now be
+ * fixed.
  */
 int vgic_v4_init(struct kvm *kvm)
 {
@@ -243,8 +243,6 @@ int vgic_v4_init(struct kvm *kvm)
 	int nr_vcpus, ret;
 	unsigned long i;
 
-	lockdep_assert_held(&kvm->arch.config_lock);
-
 	if (!kvm_vgic_global_state.has_gicv4)
 		return 0; /* Nothing to see here... move along. */
 
@@ -311,14 +309,14 @@ int vgic_v4_init(struct kvm *kvm)
 /**
  * vgic_v4_teardown - Free the GICv4 data structures
  * @kvm:	Pointer to the VM being destroyed
+ *
+ * Relies on kvm->lock to be held.
  */
 void vgic_v4_teardown(struct kvm *kvm)
 {
 	struct its_vm *its_vm = &kvm->arch.vgic.its_vm;
 	int i;
 
-	lockdep_assert_held(&kvm->arch.config_lock);
-
 	if (!its_vm->vpes)
 		return;
 
diff --git a/arch/arm64/kvm/vgic/vgic.c b/arch/arm64/kvm/vgic/vgic.c
index 0a005da..6189ad9 100644
--- a/arch/arm64/kvm/vgic/vgic.c
+++ b/arch/arm64/kvm/vgic/vgic.c
@@ -24,13 +24,11 @@ struct vgic_global kvm_vgic_global_state __ro_after_init = {
 /*
  * Locking order is always:
  * kvm->lock (mutex)
- *   vcpu->mutex (mutex)
- *     kvm->arch.config_lock (mutex)
- *       its->cmd_lock (mutex)
- *         its->its_lock (mutex)
- *           vgic_cpu->ap_list_lock		must be taken with IRQs disabled
- *             kvm->lpi_list_lock		must be taken with IRQs disabled
- *               vgic_irq->irq_lock		must be taken with IRQs disabled
+ *   its->cmd_lock (mutex)
+ *     its->its_lock (mutex)
+ *       vgic_cpu->ap_list_lock		must be taken with IRQs disabled
+ *         kvm->lpi_list_lock		must be taken with IRQs disabled
+ *           vgic_irq->irq_lock		must be taken with IRQs disabled
  *
  * As the ap_list_lock might be taken from the timer interrupt handler,
  * we have to disable IRQs before taking this lock and everything lower
@@ -933,26 +931,15 @@ void kvm_vgic_load(struct kvm_vcpu *vcpu)
 		vgic_v3_load(vcpu);
 }
 
-void kvm_vgic_put(struct kvm_vcpu *vcpu)
+void kvm_vgic_put(struct kvm_vcpu *vcpu, bool blocking)
 {
 	if (unlikely(!vgic_initialized(vcpu->kvm)))
 		return;
 
 	if (kvm_vgic_global_state.type == VGIC_V2)
-		vgic_v2_put(vcpu);
+		vgic_v2_put(vcpu, blocking);
 	else
-		vgic_v3_put(vcpu);
-}
-
-void kvm_vgic_vmcr_sync(struct kvm_vcpu *vcpu)
-{
-	if (unlikely(!irqchip_in_kernel(vcpu->kvm)))
-		return;
-
-	if (kvm_vgic_global_state.type == VGIC_V2)
-		vgic_v2_vmcr_sync(vcpu);
-	else
-		vgic_v3_vmcr_sync(vcpu);
+		vgic_v3_put(vcpu, blocking);
 }
 
 int kvm_vgic_vcpu_pending_irq(struct kvm_vcpu *vcpu)
diff --git a/arch/arm64/kvm/vgic/vgic.h b/arch/arm64/kvm/vgic/vgic.h
index 23e280f..d9f54ac 100644
--- a/arch/arm64/kvm/vgic/vgic.h
+++ b/arch/arm64/kvm/vgic/vgic.h
@@ -201,8 +201,7 @@ int vgic_register_dist_iodev(struct kvm *kvm, gpa_t dist_base_address,
 
 void vgic_v2_init_lrs(void);
 void vgic_v2_load(struct kvm_vcpu *vcpu);
-void vgic_v2_put(struct kvm_vcpu *vcpu);
-void vgic_v2_vmcr_sync(struct kvm_vcpu *vcpu);
+void vgic_v2_put(struct kvm_vcpu *vcpu, bool blocking);
 
 void vgic_v2_save_state(struct kvm_vcpu *vcpu);
 void vgic_v2_restore_state(struct kvm_vcpu *vcpu);
@@ -232,8 +231,7 @@ int vgic_register_redist_iodev(struct kvm_vcpu *vcpu);
 bool vgic_v3_check_base(struct kvm *kvm);
 
 void vgic_v3_load(struct kvm_vcpu *vcpu);
-void vgic_v3_put(struct kvm_vcpu *vcpu);
-void vgic_v3_vmcr_sync(struct kvm_vcpu *vcpu);
+void vgic_v3_put(struct kvm_vcpu *vcpu, bool blocking);
 
 bool vgic_has_its(struct kvm *kvm);
 int kvm_vgic_register_its_device(void);
diff --git a/arch/arm64/mm/Makefile b/arch/arm64/mm/Makefile
index ff1e800..675de58 100644
--- a/arch/arm64/mm/Makefile
+++ b/arch/arm64/mm/Makefile
@@ -1,8 +1,9 @@
 # SPDX-License-Identifier: GPL-2.0
 obj-y				:= dma-mapping.o extable.o fault.o init.o \
 				   cache.o copypage.o flush.o \
-				   ioremap.o mmap.o pgd.o mmu.o \
+				   ioremap.o mem_encrypt.o mmap.o pgd.o mmu.o \
 				   context.o proc.o pageattr.o
+obj-$(CONFIG_MEMORY_RELINQUISH)	+= mem_relinquish.o
 obj-$(CONFIG_HUGETLB_PAGE)	+= hugetlbpage.o
 obj-$(CONFIG_PTDUMP_CORE)	+= ptdump.o
 obj-$(CONFIG_PTDUMP_DEBUGFS)	+= ptdump_debugfs.o
diff --git a/arch/arm64/mm/dma-mapping.c b/arch/arm64/mm/dma-mapping.c
index 5240f6a..f011f4c 100644
--- a/arch/arm64/mm/dma-mapping.c
+++ b/arch/arm64/mm/dma-mapping.c
@@ -9,6 +9,7 @@
 #include <linux/dma-map-ops.h>
 #include <linux/iommu.h>
 #include <xen/xen.h>
+#include <trace/hooks/iommu.h>
 
 #include <asm/cacheflush.h>
 #include <asm/xen/xen-ops.h>
@@ -66,15 +67,16 @@ void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size,
 {
 	int cls = cache_line_size_of_cpu();
 
-	WARN_TAINT(!coherent && cls > ARCH_DMA_MINALIGN,
-		   TAINT_CPU_OUT_OF_SPEC,
-		   "%s %s: ARCH_DMA_MINALIGN smaller than CTR_EL0.CWG (%d < %d)",
-		   dev_driver_string(dev), dev_name(dev),
-		   ARCH_DMA_MINALIGN, cls);
+	if (!coherent && cls > ARCH_DMA_MINALIGN)
+		panic("%s %s: ARCH_DMA_MINALIGN smaller than CTR_EL0.CWG (%d < %d)",
+		      dev_driver_string(dev), dev_name(dev), ARCH_DMA_MINALIGN,
+		      cls);
 
 	dev->dma_coherent = coherent;
-	if (iommu)
+	if (iommu) {
 		iommu_setup_dma_ops(dev, dma_base, dma_base + size - 1);
+		trace_android_rvh_iommu_setup_dma_ops(dev, dma_base, dma_base + size - 1);
+	}
 
 	xen_setup_dma_ops(dev);
 }
diff --git a/arch/arm64/mm/fault.c b/arch/arm64/mm/fault.c
index 2fef1fa..aa55a2a 100644
--- a/arch/arm64/mm/fault.c
+++ b/arch/arm64/mm/fault.c
@@ -25,6 +25,7 @@
 #include <linux/perf_event.h>
 #include <linux/preempt.h>
 #include <linux/hugetlb.h>
+#include <linux/gfp_types.h>
 
 #include <asm/acpi.h>
 #include <asm/bug.h>
@@ -42,6 +43,9 @@
 #include <asm/system_misc.h>
 #include <asm/tlbflush.h>
 #include <asm/traps.h>
+#include <asm/virt.h>
+
+#include <trace/hooks/fault.h>
 
 struct fault_info {
 	int	(*fn)(unsigned long far, unsigned long esr,
@@ -258,6 +262,15 @@ static inline bool is_el1_permission_fault(unsigned long addr, unsigned long esr
 	return false;
 }
 
+static bool is_pkvm_stage2_abort(unsigned int esr)
+{
+	/*
+	 * S1PTW should only ever be set in ESR_EL1 if the pkvm hypervisor
+	 * injected a stage-2 abort -- see host_inject_abort().
+	 */
+	return is_pkvm_initialized() && (esr & ESR_ELx_S1PTW);
+}
+
 static bool __kprobes is_spurious_el1_translation_fault(unsigned long addr,
 							unsigned long esr,
 							struct pt_regs *regs)
@@ -269,6 +282,9 @@ static bool __kprobes is_spurious_el1_translation_fault(unsigned long addr,
 	    (esr & ESR_ELx_FSC_TYPE) != ESR_ELx_FSC_FAULT)
 		return false;
 
+	if (is_pkvm_stage2_abort(esr))
+		return false;
+
 	local_irq_save(flags);
 	asm volatile("at s1e1r, %0" :: "r" (addr));
 	isb();
@@ -300,6 +316,7 @@ static void die_kernel_fault(const char *msg, unsigned long addr,
 
 	kasan_non_canonical_hook(addr);
 
+	trace_android_rvh_die_kernel_fault(msg, addr, esr, regs);
 	mem_abort_decode(esr);
 
 	show_pte(addr);
@@ -390,6 +407,8 @@ static void __do_kernel_fault(unsigned long addr, unsigned long esr,
 			msg = "read from unreadable memory";
 	} else if (addr < PAGE_SIZE) {
 		msg = "NULL pointer dereference";
+	} else if (is_pkvm_stage2_abort(esr)) {
+		msg = "access to hypervisor-protected memory";
 	} else {
 		if (is_translation_fault(esr) &&
 		    kfence_handle_page_fault(addr, esr & ESR_ELx_WNR, regs))
@@ -535,6 +554,9 @@ static int __kprobes do_page_fault(unsigned long far, unsigned long esr,
 	unsigned long vm_flags;
 	unsigned int mm_flags = FAULT_FLAG_DEFAULT;
 	unsigned long addr = untagged_addr(far);
+#ifdef CONFIG_PER_VMA_LOCK
+	struct vm_area_struct *vma;
+#endif
 
 	if (kprobe_page_fault(regs, esr))
 		return 0;
@@ -583,8 +605,45 @@ static int __kprobes do_page_fault(unsigned long far, unsigned long esr,
 					 addr, esr, regs);
 	}
 
+	if (is_pkvm_stage2_abort(esr)) {
+		if (!user_mode(regs))
+			goto no_context;
+		arm64_force_sig_fault(SIGSEGV, SEGV_ACCERR, far, "stage-2 fault");
+		return 0;
+	}
+
 	perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, addr);
 
+#ifdef CONFIG_PER_VMA_LOCK
+	if (!(mm_flags & FAULT_FLAG_USER))
+		goto lock_mmap;
+
+	vma = lock_vma_under_rcu(mm, addr);
+	if (!vma)
+		goto lock_mmap;
+
+	if (!(vma->vm_flags & vm_flags)) {
+		vma_end_read(vma);
+		goto lock_mmap;
+	}
+	fault = handle_mm_fault(vma, addr & PAGE_MASK,
+				mm_flags | FAULT_FLAG_VMA_LOCK, regs);
+	vma_end_read(vma);
+
+	if (!(fault & VM_FAULT_RETRY)) {
+		count_vm_vma_lock_event(VMA_LOCK_SUCCESS);
+		goto done;
+	}
+	count_vm_vma_lock_event(VMA_LOCK_RETRY);
+
+	/* Quick path to respond to signals */
+	if (fault_signal_pending(fault, regs)) {
+		if (!user_mode(regs))
+			goto no_context;
+		return 0;
+	}
+lock_mmap:
+#endif /* CONFIG_PER_VMA_LOCK */
 	/*
 	 * As per x86, we may deadlock here. However, since the kernel only
 	 * validly references user space from well defined areas of the code,
@@ -628,6 +687,9 @@ static int __kprobes do_page_fault(unsigned long far, unsigned long esr,
 	}
 	mmap_read_unlock(mm);
 
+#ifdef CONFIG_PER_VMA_LOCK
+done:
+#endif
 	/*
 	 * Handle the "normal" (no error) case first.
 	 */
@@ -738,6 +800,7 @@ static int do_sea(unsigned long far, unsigned long esr, struct pt_regs *regs)
 		 */
 		siaddr  = untagged_addr(far);
 	}
+	trace_android_rvh_do_sea(siaddr, esr, regs);
 	arm64_notify_die(inf->name, regs, inf->sig, inf->code, siaddr, esr);
 
 	return 0;
@@ -845,6 +908,8 @@ NOKPROBE_SYMBOL(do_mem_abort);
 
 void do_sp_pc_abort(unsigned long addr, unsigned long esr, struct pt_regs *regs)
 {
+	trace_android_rvh_do_sp_pc_abort(addr, esr, regs);
+
 	arm64_notify_die("SP/PC alignment exception", regs, SIGBUS, BUS_ADRALN,
 			 addr, esr);
 }
@@ -928,7 +993,7 @@ NOKPROBE_SYMBOL(do_debug_exception);
 struct page *alloc_zeroed_user_highpage_movable(struct vm_area_struct *vma,
 						unsigned long vaddr)
 {
-	gfp_t flags = GFP_HIGHUSER_MOVABLE | __GFP_ZERO;
+	gfp_t flags = GFP_HIGHUSER_MOVABLE | __GFP_ZERO | __GFP_CMA;
 
 	/*
 	 * If the page is mapped with PROT_MTE, initialise the tags at the
diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c
index 4b4651e..4fabbcf 100644
--- a/arch/arm64/mm/init.c
+++ b/arch/arm64/mm/init.c
@@ -90,6 +90,12 @@ phys_addr_t __ro_after_init arm64_dma_phys_limit;
 phys_addr_t __ro_after_init arm64_dma_phys_limit = PHYS_MASK + 1;
 #endif
 
+/*
+ * Provide a run-time mean of disabling ZONE_DMA32 if it is enabled via
+ * CONFIG_ZONE_DMA32.
+ */
+static bool disable_dma32 __ro_after_init;
+
 /* Current arm64 boot protocol requires 2MB alignment */
 #define CRASH_ALIGN			SZ_2M
 
@@ -225,7 +231,7 @@ static void __init zone_sizes_init(void)
 	max_zone_pfns[ZONE_DMA] = PFN_DOWN(arm64_dma_phys_limit);
 #endif
 #ifdef CONFIG_ZONE_DMA32
-	max_zone_pfns[ZONE_DMA32] = PFN_DOWN(dma32_phys_limit);
+	max_zone_pfns[ZONE_DMA32] = disable_dma32 ? 0 : PFN_DOWN(dma32_phys_limit);
 	if (!arm64_dma_phys_limit)
 		arm64_dma_phys_limit = dma32_phys_limit;
 #endif
@@ -234,6 +240,18 @@ static void __init zone_sizes_init(void)
 	free_area_init(max_zone_pfns);
 }
 
+static int __init early_disable_dma32(char *buf)
+{
+	if (!buf)
+		return -EINVAL;
+
+	if (!strcmp(buf, "on"))
+		disable_dma32 = true;
+
+	return 0;
+}
+early_param("disable_dma32", early_disable_dma32);
+
 int pfn_is_map_memory(unsigned long pfn)
 {
 	phys_addr_t addr = PFN_PHYS(pfn);
diff --git a/arch/arm64/mm/ioremap.c b/arch/arm64/mm/ioremap.c
index c5af103..060c578 100644
--- a/arch/arm64/mm/ioremap.c
+++ b/arch/arm64/mm/ioremap.c
@@ -1,7 +1,217 @@
 // SPDX-License-Identifier: GPL-2.0-only
 
+#define pr_fmt(fmt)	"ioremap: " fmt
+
 #include <linux/mm.h>
 #include <linux/io.h>
+#include <linux/arm-smccc.h>
+#include <linux/slab.h>
+
+#include <asm/fixmap.h>
+#include <asm/tlbflush.h>
+#include <asm/hypervisor.h>
+
+#ifndef ARM_SMCCC_KVM_FUNC_MMIO_GUARD_INFO
+#define ARM_SMCCC_KVM_FUNC_MMIO_GUARD_INFO	5
+
+#define ARM_SMCCC_VENDOR_HYP_KVM_MMIO_GUARD_INFO_FUNC_ID			\
+	ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL,				\
+			   ARM_SMCCC_SMC_64,				\
+			   ARM_SMCCC_OWNER_VENDOR_HYP,			\
+			   ARM_SMCCC_KVM_FUNC_MMIO_GUARD_INFO)
+#endif	/* ARM_SMCCC_KVM_FUNC_MMIO_GUARD_INFO */
+
+#ifndef ARM_SMCCC_KVM_FUNC_MMIO_GUARD_ENROLL
+#define ARM_SMCCC_KVM_FUNC_MMIO_GUARD_ENROLL	6
+
+#define ARM_SMCCC_VENDOR_HYP_KVM_MMIO_GUARD_ENROLL_FUNC_ID			\
+	ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL,				\
+			   ARM_SMCCC_SMC_64,				\
+			   ARM_SMCCC_OWNER_VENDOR_HYP,			\
+			   ARM_SMCCC_KVM_FUNC_MMIO_GUARD_ENROLL)
+#endif	/* ARM_SMCCC_KVM_FUNC_MMIO_GUARD_ENROLL */
+
+#ifndef ARM_SMCCC_KVM_FUNC_MMIO_GUARD_MAP
+#define ARM_SMCCC_KVM_FUNC_MMIO_GUARD_MAP	7
+
+#define ARM_SMCCC_VENDOR_HYP_KVM_MMIO_GUARD_MAP_FUNC_ID			\
+	ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL,				\
+			   ARM_SMCCC_SMC_64,				\
+			   ARM_SMCCC_OWNER_VENDOR_HYP,			\
+			   ARM_SMCCC_KVM_FUNC_MMIO_GUARD_MAP)
+#endif	/* ARM_SMCCC_KVM_FUNC_MMIO_GUARD_MAP */
+
+#ifndef ARM_SMCCC_KVM_FUNC_MMIO_GUARD_UNMAP
+#define ARM_SMCCC_KVM_FUNC_MMIO_GUARD_UNMAP	8
+
+#define ARM_SMCCC_VENDOR_HYP_KVM_MMIO_GUARD_UNMAP_FUNC_ID			\
+	ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL,				\
+			   ARM_SMCCC_SMC_64,				\
+			   ARM_SMCCC_OWNER_VENDOR_HYP,			\
+			   ARM_SMCCC_KVM_FUNC_MMIO_GUARD_UNMAP)
+#endif	/* ARM_SMCCC_KVM_FUNC_MMIO_GUARD_UNMAP */
+
+struct ioremap_guard_ref {
+	refcount_t	count;
+};
+
+static DEFINE_STATIC_KEY_FALSE(ioremap_guard_key);
+static DEFINE_XARRAY(ioremap_guard_array);
+static DEFINE_MUTEX(ioremap_guard_lock);
+
+static size_t guard_granule;
+
+static bool ioremap_guard;
+static int __init ioremap_guard_setup(char *str)
+{
+	ioremap_guard = true;
+
+	return 0;
+}
+early_param("ioremap_guard", ioremap_guard_setup);
+
+void kvm_init_ioremap_services(void)
+{
+	struct arm_smccc_res res;
+	size_t granule;
+
+	if (!ioremap_guard)
+		return;
+
+	/* We need all the functions to be implemented */
+	if (!kvm_arm_hyp_service_available(ARM_SMCCC_KVM_FUNC_MMIO_GUARD_INFO) ||
+	    !kvm_arm_hyp_service_available(ARM_SMCCC_KVM_FUNC_MMIO_GUARD_ENROLL) ||
+	    !kvm_arm_hyp_service_available(ARM_SMCCC_KVM_FUNC_MMIO_GUARD_MAP) ||
+	    !kvm_arm_hyp_service_available(ARM_SMCCC_KVM_FUNC_MMIO_GUARD_UNMAP))
+		return;
+
+	arm_smccc_1_1_invoke(ARM_SMCCC_VENDOR_HYP_KVM_MMIO_GUARD_INFO_FUNC_ID,
+			     0, 0, 0, &res);
+	granule = res.a0;
+	if (granule > PAGE_SIZE || !granule || (granule & (granule - 1))) {
+		pr_warn("KVM MMIO guard initialization failed: "
+			"guard granule (%lu), page size (%lu)\n",
+			granule, PAGE_SIZE);
+		return;
+	}
+
+	arm_smccc_1_1_invoke(ARM_SMCCC_VENDOR_HYP_KVM_MMIO_GUARD_ENROLL_FUNC_ID,
+			     &res);
+	if (res.a0 == SMCCC_RET_SUCCESS) {
+		guard_granule = granule;
+		static_branch_enable(&ioremap_guard_key);
+		pr_info("Using KVM MMIO guard for ioremap\n");
+	} else {
+		pr_warn("KVM MMIO guard registration failed (%ld)\n", res.a0);
+	}
+}
+
+void ioremap_phys_range_hook(phys_addr_t phys_addr, size_t size, pgprot_t prot)
+{
+	int guard_shift;
+
+	if (!static_branch_unlikely(&ioremap_guard_key))
+		return;
+
+	guard_shift = __builtin_ctzl(guard_granule);
+
+	mutex_lock(&ioremap_guard_lock);
+
+	while (size) {
+		u64 guard_fn = phys_addr >> guard_shift;
+		struct ioremap_guard_ref *ref;
+		struct arm_smccc_res res;
+
+		if (pfn_valid(__phys_to_pfn(phys_addr)))
+			goto next;
+
+		ref = xa_load(&ioremap_guard_array, guard_fn);
+		if (ref) {
+			refcount_inc(&ref->count);
+			goto next;
+		}
+
+		/*
+		 * It is acceptable for the allocation to fail, specially
+		 * if trying to ioremap something very early on, like with
+		 * earlycon, which happens long before kmem_cache_init.
+		 * This page will be permanently accessible, similar to a
+		 * saturated refcount.
+		 */
+		if (slab_is_available())
+			ref = kzalloc(sizeof(*ref), GFP_KERNEL);
+		if (ref) {
+			refcount_set(&ref->count, 1);
+			if (xa_err(xa_store(&ioremap_guard_array, guard_fn, ref,
+					    GFP_KERNEL))) {
+				kfree(ref);
+				ref = NULL;
+			}
+		}
+
+		arm_smccc_1_1_hvc(ARM_SMCCC_VENDOR_HYP_KVM_MMIO_GUARD_MAP_FUNC_ID,
+				  phys_addr, prot, &res);
+		if (res.a0 != SMCCC_RET_SUCCESS) {
+			pr_warn_ratelimited("Failed to register %llx\n",
+					    phys_addr);
+			xa_erase(&ioremap_guard_array, guard_fn);
+			kfree(ref);
+			goto out;
+		}
+
+	next:
+		size -= guard_granule;
+		phys_addr += guard_granule;
+	}
+out:
+	mutex_unlock(&ioremap_guard_lock);
+}
+
+void iounmap_phys_range_hook(phys_addr_t phys_addr, size_t size)
+{
+	int guard_shift;
+
+	if (!static_branch_unlikely(&ioremap_guard_key))
+		return;
+
+	VM_BUG_ON(phys_addr & ~PAGE_MASK || size & ~PAGE_MASK);
+	guard_shift = __builtin_ctzl(guard_granule);
+
+	mutex_lock(&ioremap_guard_lock);
+
+	while (size) {
+		u64 guard_fn = phys_addr >> guard_shift;
+		struct ioremap_guard_ref *ref;
+		struct arm_smccc_res res;
+
+		ref = xa_load(&ioremap_guard_array, guard_fn);
+		if (!ref) {
+			pr_warn_ratelimited("%llx not tracked, left mapped\n",
+					    phys_addr);
+			goto next;
+		}
+
+		if (!refcount_dec_and_test(&ref->count))
+			goto next;
+
+		xa_erase(&ioremap_guard_array, guard_fn);
+		kfree(ref);
+
+		arm_smccc_1_1_hvc(ARM_SMCCC_VENDOR_HYP_KVM_MMIO_GUARD_UNMAP_FUNC_ID,
+				  phys_addr, &res);
+		if (res.a0 != SMCCC_RET_SUCCESS) {
+			pr_warn_ratelimited("Failed to unregister %llx\n",
+					    phys_addr);
+			goto out;
+		}
+
+	next:
+		size -= guard_granule;
+		phys_addr += guard_granule;
+	}
+out:
+	mutex_unlock(&ioremap_guard_lock);
+}
 
 bool ioremap_allowed(phys_addr_t phys_addr, size_t size, unsigned long prot)
 {
diff --git a/arch/arm64/mm/mem_encrypt.c b/arch/arm64/mm/mem_encrypt.c
new file mode 100644
index 0000000..fd59ab7
--- /dev/null
+++ b/arch/arm64/mm/mem_encrypt.c
@@ -0,0 +1,134 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Implementation of the memory encryption/decryption API.
+ *
+ * Amusingly, no crypto is actually performed. Rather, we call into the
+ * hypervisor component of KVM to expose pages selectively to the host
+ * for virtio "DMA" operations. In other words, "encrypted" pages are
+ * not accessible to the host, whereas "decrypted" pages are.
+ *
+ * Author: Will Deacon <will@kernel.org>
+ */
+#include <linux/arm-smccc.h>
+#include <linux/mem_encrypt.h>
+#include <linux/memory.h>
+#include <linux/mm.h>
+#include <linux/set_memory.h>
+#include <linux/types.h>
+
+#include <asm/hypervisor.h>
+
+#ifndef ARM_SMCCC_KVM_FUNC_HYP_MEMINFO
+#define ARM_SMCCC_KVM_FUNC_HYP_MEMINFO	2
+
+#define ARM_SMCCC_VENDOR_HYP_KVM_HYP_MEMINFO_FUNC_ID			\
+	ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL,				\
+			   ARM_SMCCC_SMC_64,				\
+			   ARM_SMCCC_OWNER_VENDOR_HYP,			\
+			   ARM_SMCCC_KVM_FUNC_HYP_MEMINFO)
+#endif	/* ARM_SMCCC_KVM_FUNC_HYP_MEMINFO */
+
+#ifndef ARM_SMCCC_KVM_FUNC_MEM_SHARE
+#define ARM_SMCCC_KVM_FUNC_MEM_SHARE	3
+
+#define ARM_SMCCC_VENDOR_HYP_KVM_MEM_SHARE_FUNC_ID			\
+	ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL,				\
+			   ARM_SMCCC_SMC_64,				\
+			   ARM_SMCCC_OWNER_VENDOR_HYP,			\
+			   ARM_SMCCC_KVM_FUNC_MEM_SHARE)
+#endif	/* ARM_SMCCC_KVM_FUNC_MEM_SHARE */
+
+#ifndef ARM_SMCCC_KVM_FUNC_MEM_UNSHARE
+#define ARM_SMCCC_KVM_FUNC_MEM_UNSHARE	4
+
+#define ARM_SMCCC_VENDOR_HYP_KVM_MEM_UNSHARE_FUNC_ID			\
+	ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL,				\
+			   ARM_SMCCC_SMC_64,				\
+			   ARM_SMCCC_OWNER_VENDOR_HYP,			\
+			   ARM_SMCCC_KVM_FUNC_MEM_UNSHARE)
+#endif	/* ARM_SMCCC_KVM_FUNC_MEM_UNSHARE */
+
+static unsigned long memshare_granule_sz;
+
+bool mem_encrypt_active(void)
+{
+	return memshare_granule_sz;
+}
+EXPORT_SYMBOL(mem_encrypt_active);
+
+void kvm_init_memshare_services(void)
+{
+	int i;
+	struct arm_smccc_res res;
+	const u32 funcs[] = {
+		ARM_SMCCC_KVM_FUNC_HYP_MEMINFO,
+		ARM_SMCCC_KVM_FUNC_MEM_SHARE,
+		ARM_SMCCC_KVM_FUNC_MEM_UNSHARE,
+	};
+
+	for (i = 0; i < ARRAY_SIZE(funcs); ++i) {
+		if (!kvm_arm_hyp_service_available(funcs[i]))
+			return;
+	}
+
+	arm_smccc_1_1_invoke(ARM_SMCCC_VENDOR_HYP_KVM_HYP_MEMINFO_FUNC_ID,
+			     0, 0, 0, &res);
+	if (res.a0 > PAGE_SIZE) /* Includes error codes */
+		return;
+
+	memshare_granule_sz = res.a0;
+}
+
+static int arm_smccc_share_unshare_page(u32 func_id, phys_addr_t phys)
+{
+	phys_addr_t end = phys + PAGE_SIZE;
+
+	while (phys < end) {
+		struct arm_smccc_res res;
+
+		arm_smccc_1_1_invoke(func_id, phys, 0, 0, &res);
+		if (res.a0 != SMCCC_RET_SUCCESS)
+			return -EPERM;
+
+		phys += memshare_granule_sz;
+	}
+
+	return 0;
+}
+
+static int set_memory_xcrypted(u32 func_id, unsigned long start, int numpages)
+{
+	void *addr = (void *)start, *end = addr + numpages * PAGE_SIZE;
+
+	while (addr < end) {
+		int err;
+
+		err = arm_smccc_share_unshare_page(func_id, virt_to_phys(addr));
+		if (err)
+			return err;
+
+		addr += PAGE_SIZE;
+	}
+
+	return 0;
+}
+
+int set_memory_encrypted(unsigned long addr, int numpages)
+{
+	if (!memshare_granule_sz || WARN_ON(!PAGE_ALIGNED(addr)))
+		return 0;
+
+	return set_memory_xcrypted(ARM_SMCCC_VENDOR_HYP_KVM_MEM_UNSHARE_FUNC_ID,
+				   addr, numpages);
+}
+EXPORT_SYMBOL_GPL(set_memory_encrypted);
+
+int set_memory_decrypted(unsigned long addr, int numpages)
+{
+	if (!memshare_granule_sz || WARN_ON(!PAGE_ALIGNED(addr)))
+		return 0;
+
+	return set_memory_xcrypted(ARM_SMCCC_VENDOR_HYP_KVM_MEM_SHARE_FUNC_ID,
+				   addr, numpages);
+}
+EXPORT_SYMBOL_GPL(set_memory_decrypted);
diff --git a/arch/arm64/mm/mem_relinquish.c b/arch/arm64/mm/mem_relinquish.c
new file mode 100644
index 0000000..7948098
--- /dev/null
+++ b/arch/arm64/mm/mem_relinquish.c
@@ -0,0 +1,65 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (C) 2022 Google LLC
+ * Author: Keir Fraser <keirf@google.com>
+ */
+
+#include <linux/arm-smccc.h>
+#include <linux/mem_relinquish.h>
+#include <linux/memory.h>
+#include <linux/mm.h>
+#include <linux/types.h>
+
+#include <asm/hypervisor.h>
+
+static unsigned long memshare_granule_sz;
+
+void kvm_init_memrelinquish_services(void)
+{
+	int i;
+	struct arm_smccc_res res;
+	const u32 funcs[] = {
+		ARM_SMCCC_KVM_FUNC_HYP_MEMINFO,
+		ARM_SMCCC_KVM_FUNC_MEM_RELINQUISH,
+	};
+
+	for (i = 0; i < ARRAY_SIZE(funcs); ++i) {
+		if (!kvm_arm_hyp_service_available(funcs[i]))
+			return;
+	}
+
+	arm_smccc_1_1_invoke(ARM_SMCCC_VENDOR_HYP_KVM_HYP_MEMINFO_FUNC_ID,
+			     0, 0, 0, &res);
+	if (res.a0 > PAGE_SIZE) /* Includes error codes */
+		return;
+
+	memshare_granule_sz = res.a0;
+}
+
+bool kvm_has_memrelinquish_services(void)
+{
+	return !!memshare_granule_sz;
+}
+EXPORT_SYMBOL_GPL(kvm_has_memrelinquish_services);
+
+void page_relinquish(struct page *page)
+{
+	phys_addr_t phys, end;
+	u32 func_id = ARM_SMCCC_VENDOR_HYP_KVM_MEM_RELINQUISH_FUNC_ID;
+
+	if (!memshare_granule_sz)
+		return;
+
+	phys = page_to_phys(page);
+	end = phys + PAGE_SIZE;
+
+	while (phys < end) {
+		struct arm_smccc_res res;
+
+		arm_smccc_1_1_invoke(func_id, phys, 0, 0, &res);
+		BUG_ON(res.a0 != SMCCC_RET_SUCCESS);
+
+		phys += memshare_granule_sz;
+	}
+}
+EXPORT_SYMBOL_GPL(page_relinquish);
diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c
index 9a7c3896..65fb117 100644
--- a/arch/arm64/mm/mmu.c
+++ b/arch/arm64/mm/mmu.c
@@ -24,6 +24,7 @@
 #include <linux/mm.h>
 #include <linux/vmalloc.h>
 #include <linux/set_memory.h>
+#include <linux/kfence.h>
 
 #include <asm/barrier.h>
 #include <asm/cputype.h>
@@ -38,6 +39,7 @@
 #include <asm/ptdump.h>
 #include <asm/tlbflush.h>
 #include <asm/pgalloc.h>
+#include <asm/kfence.h>
 
 #define NO_BLOCK_MAPPINGS	BIT(0)
 #define NO_CONT_MAPPINGS	BIT(1)
@@ -521,12 +523,67 @@ static int __init enable_crash_mem_map(char *arg)
 }
 early_param("crashkernel", enable_crash_mem_map);
 
+#ifdef CONFIG_KFENCE
+
+bool __ro_after_init kfence_early_init = !!CONFIG_KFENCE_SAMPLE_INTERVAL;
+
+/* early_param() will be parsed before map_mem() below. */
+static int __init parse_kfence_early_init(char *arg)
+{
+	int val;
+
+	if (get_option(&arg, &val))
+		kfence_early_init = !!val;
+	return 0;
+}
+early_param("kfence.sample_interval", parse_kfence_early_init);
+
+static phys_addr_t __init arm64_kfence_alloc_pool(void)
+{
+	phys_addr_t kfence_pool;
+
+	if (!kfence_early_init)
+		return 0;
+
+	kfence_pool = memblock_phys_alloc(KFENCE_POOL_SIZE, PAGE_SIZE);
+	if (!kfence_pool) {
+		pr_err("failed to allocate kfence pool\n");
+		kfence_early_init = false;
+		return 0;
+	}
+
+	/* Temporarily mark as NOMAP. */
+	memblock_mark_nomap(kfence_pool, KFENCE_POOL_SIZE);
+
+	return kfence_pool;
+}
+
+static void __init arm64_kfence_map_pool(phys_addr_t kfence_pool, pgd_t *pgdp)
+{
+	if (!kfence_pool)
+		return;
+
+	/* KFENCE pool needs page-level mapping. */
+	__map_memblock(pgdp, kfence_pool, kfence_pool + KFENCE_POOL_SIZE,
+			pgprot_tagged(PAGE_KERNEL),
+			NO_BLOCK_MAPPINGS | NO_CONT_MAPPINGS);
+	memblock_clear_nomap(kfence_pool, KFENCE_POOL_SIZE);
+	__kfence_pool = phys_to_virt(kfence_pool);
+}
+#else /* CONFIG_KFENCE */
+
+static inline phys_addr_t arm64_kfence_alloc_pool(void) { return 0; }
+static inline void arm64_kfence_map_pool(phys_addr_t kfence_pool, pgd_t *pgdp) { }
+
+#endif /* CONFIG_KFENCE */
+
 static void __init map_mem(pgd_t *pgdp)
 {
 	static const u64 direct_map_end = _PAGE_END(VA_BITS_MIN);
 	phys_addr_t kernel_start = __pa_symbol(_stext);
 	phys_addr_t kernel_end = __pa_symbol(__init_begin);
 	phys_addr_t start, end;
+	phys_addr_t early_kfence_pool;
 	int flags = NO_EXEC_MAPPINGS;
 	u64 i;
 
@@ -539,6 +596,8 @@ static void __init map_mem(pgd_t *pgdp)
 	 */
 	BUILD_BUG_ON(pgd_index(direct_map_end - 1) == pgd_index(direct_map_end));
 
+	early_kfence_pool = arm64_kfence_alloc_pool();
+
 	if (can_set_direct_map())
 		flags |= NO_BLOCK_MAPPINGS | NO_CONT_MAPPINGS;
 
@@ -604,6 +663,8 @@ static void __init map_mem(pgd_t *pgdp)
 		}
 	}
 #endif
+
+	arm64_kfence_map_pool(early_kfence_pool, pgdp);
 }
 
 void mark_rodata_ro(void)
@@ -1351,6 +1412,21 @@ void __set_fixmap(enum fixed_addresses idx,
 	}
 }
 
+pte_t *__get_fixmap_pte(enum fixed_addresses idx)
+{
+	unsigned long addr = __fix_to_virt(idx);
+	pte_t *ptep;
+
+	BUG_ON(idx <= FIX_HOLE || idx >= __end_of_fixed_addresses);
+
+	ptep = fixmap_pte(addr);
+
+	if (!pte_valid(*ptep))
+		return NULL;
+
+	return ptep;
+}
+
 void *__init fixmap_remap_fdt(phys_addr_t dt_phys, int *size, pgprot_t prot)
 {
 	const u64 dt_virt_base = __fix_to_virt(FIX_FDT);
diff --git a/arch/arm64/mm/mteswap.c b/arch/arm64/mm/mteswap.c
index 70f9132..72267a6 100644
--- a/arch/arm64/mm/mteswap.c
+++ b/arch/arm64/mm/mteswap.c
@@ -46,21 +46,19 @@ int mte_save_tags(struct page *page)
 	return 0;
 }
 
-bool mte_restore_tags(swp_entry_t entry, struct page *page)
+void mte_restore_tags(swp_entry_t entry, struct page *page)
 {
 	void *tags = xa_load(&mte_pages, entry.val);
 
 	if (!tags)
-		return false;
+		return;
 
 	/*
-	 * Test PG_mte_tagged again in case it was racing with another
-	 * set_pte_at().
+	 * Test PG_mte_tagged in case the tags were restored before
+	 * (e.g. CoW pages).
 	 */
 	if (!test_and_set_bit(PG_mte_tagged, &page->flags))
 		mte_restore_page_tags(page_address(page), tags);
-
-	return true;
 }
 
 void mte_invalidate_tags(int type, pgoff_t offset)
diff --git a/arch/arm64/mm/pageattr.c b/arch/arm64/mm/pageattr.c
index 5922178..dd1291a 100644
--- a/arch/arm64/mm/pageattr.c
+++ b/arch/arm64/mm/pageattr.c
@@ -11,6 +11,7 @@
 #include <asm/cacheflush.h>
 #include <asm/set_memory.h>
 #include <asm/tlbflush.h>
+#include <asm/kfence.h>
 
 struct page_change_data {
 	pgprot_t set_mask;
@@ -22,12 +23,14 @@ bool rodata_full __ro_after_init = IS_ENABLED(CONFIG_RODATA_FULL_DEFAULT_ENABLED
 bool can_set_direct_map(void)
 {
 	/*
-	 * rodata_full, DEBUG_PAGEALLOC and KFENCE require linear map to be
+	 * rodata_full and DEBUG_PAGEALLOC require linear map to be
 	 * mapped at page granularity, so that it is possible to
 	 * protect/unprotect single pages.
+	 *
+	 * KFENCE pool requires page-granular mapping if initialized late.
 	 */
 	return (rodata_enabled && rodata_full) || debug_pagealloc_enabled() ||
-		IS_ENABLED(CONFIG_KFENCE);
+		arm64_kfence_can_set_direct_map();
 }
 
 static int change_page_range(pte_t *ptep, unsigned long addr, void *data)
@@ -160,6 +163,23 @@ int set_memory_valid(unsigned long addr, int numpages, int enable)
 					__pgprot(PTE_VALID));
 }
 
+/*
+ * Only to be used with memory in the logical map (e.g. vmapped memory will
+ * face coherency issues as we don't call vm_unmap_aliases()). Only to be used
+ * whilst accesses are not ongoing to the region, as we do not follow the
+ * make-before-break sequence in order to cut down the run time of this
+ * function.
+ */
+int arch_set_direct_map_range_uncached(unsigned long addr, unsigned long numpages)
+{
+	if (!can_set_direct_map())
+		return 0;
+
+	return __change_memory_common(addr, PAGE_SIZE * numpages,
+				      __pgprot(PTE_ATTRINDX(MT_NORMAL_NC)),
+				      __pgprot(PTE_ATTRINDX_MASK));
+}
+
 int set_direct_map_invalid_noflush(struct page *page)
 {
 	struct page_change_data data = {
diff --git a/arch/arm64/mm/proc.S b/arch/arm64/mm/proc.S
index b9ecbba..de78444 100644
--- a/arch/arm64/mm/proc.S
+++ b/arch/arm64/mm/proc.S
@@ -68,7 +68,8 @@
 	 MAIR_ATTRIDX(MAIR_ATTR_DEVICE_nGnRE, MT_DEVICE_nGnRE) |	\
 	 MAIR_ATTRIDX(MAIR_ATTR_NORMAL_NC, MT_NORMAL_NC) |		\
 	 MAIR_ATTRIDX(MAIR_ATTR_NORMAL, MT_NORMAL) |			\
-	 MAIR_ATTRIDX(MAIR_ATTR_NORMAL, MT_NORMAL_TAGGED))
+	 MAIR_ATTRIDX(MAIR_ATTR_NORMAL, MT_NORMAL_TAGGED) |		\
+	 MAIR_ATTRIDX(MAIR_ATTR_NORMAL_iNC_oWB, MT_NORMAL_iNC_oWB))
 
 #ifdef CONFIG_CPU_PM
 /**
diff --git a/drivers/staging/greybus/tools/.gitignore b/arch/arm64/tools/.gitignore
similarity index 73%
rename from drivers/staging/greybus/tools/.gitignore
rename to arch/arm64/tools/.gitignore
index 1fd364a..1ddeddd 100644
--- a/drivers/staging/greybus/tools/.gitignore
+++ b/arch/arm64/tools/.gitignore
@@ -1,2 +1,2 @@
 # SPDX-License-Identifier: GPL-2.0-only
-loopback_test
+gen-hyprel
diff --git a/arch/arm64/tools/Makefile b/arch/arm64/tools/Makefile
index 07a93ab..3b60450 100644
--- a/arch/arm64/tools/Makefile
+++ b/arch/arm64/tools/Makefile
@@ -22,3 +22,7 @@
 
 $(kapi)/sysreg-defs.h: $(src)/gen-sysreg.awk $(src)/sysreg FORCE
 	$(call if_changed,gen_sysreg)
+
+HOST_EXTRACFLAGS += -I$(objtree)/include
+hostprogs += gen-hyprel
+gen-hyprel: $(obj)/gen-hyprel
diff --git a/arch/arm64/tools/cpucaps b/arch/arm64/tools/cpucaps
index f1c0347..7b79a8b 100644
--- a/arch/arm64/tools/cpucaps
+++ b/arch/arm64/tools/cpucaps
@@ -82,6 +82,27 @@
 WORKAROUND_CLEAN_CACHE
 WORKAROUND_DEVICE_LOAD_ACQUIRE
 WORKAROUND_NVIDIA_CARMEL_CNP
+WORKAROUND_NXP_ERR050104
 WORKAROUND_QCOM_FALKOR_E1003
 WORKAROUND_REPEAT_TLBI
 WORKAROUND_SPECULATIVE_AT
+ANDROID_KABI_RESERVE_01
+ANDROID_KABI_RESERVE_02
+ANDROID_KABI_RESERVE_03
+ANDROID_KABI_RESERVE_04
+ANDROID_KABI_RESERVE_05
+ANDROID_KABI_RESERVE_06
+ANDROID_KABI_RESERVE_07
+ANDROID_KABI_RESERVE_08
+ANDROID_KABI_RESERVE_09
+ANDROID_KABI_RESERVE_10
+ANDROID_KABI_RESERVE_11
+ANDROID_KABI_RESERVE_12
+ANDROID_KABI_RESERVE_13
+ANDROID_KABI_RESERVE_14
+ANDROID_KABI_RESERVE_15
+ANDROID_KABI_RESERVE_16
+ANDROID_KABI_RESERVE_17
+ANDROID_KABI_RESERVE_18
+ANDROID_KABI_RESERVE_19
+ANDROID_KABI_RESERVE_20
diff --git a/arch/arm64/kvm/hyp/nvhe/gen-hyprel.c b/arch/arm64/tools/gen-hyprel.c
similarity index 100%
rename from arch/arm64/kvm/hyp/nvhe/gen-hyprel.c
rename to arch/arm64/tools/gen-hyprel.c
diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c
index fc4e421..7f5353e 100644
--- a/arch/ia64/mm/init.c
+++ b/arch/ia64/mm/init.c
@@ -109,7 +109,7 @@ ia64_init_addr_space (void)
 		vma_set_anonymous(vma);
 		vma->vm_start = current->thread.rbs_bot & PAGE_MASK;
 		vma->vm_end = vma->vm_start + PAGE_SIZE;
-		vma->vm_flags = VM_DATA_DEFAULT_FLAGS|VM_GROWSUP|VM_ACCOUNT;
+		vm_flags_init(vma, VM_DATA_DEFAULT_FLAGS|VM_GROWSUP|VM_ACCOUNT);
 		vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
 		mmap_write_lock(current->mm);
 		if (insert_vm_struct(current->mm, vma)) {
@@ -127,8 +127,8 @@ ia64_init_addr_space (void)
 			vma_set_anonymous(vma);
 			vma->vm_end = PAGE_SIZE;
 			vma->vm_page_prot = __pgprot(pgprot_val(PAGE_READONLY) | _PAGE_MA_NAT);
-			vma->vm_flags = VM_READ | VM_MAYREAD | VM_IO |
-					VM_DONTEXPAND | VM_DONTDUMP;
+			vm_flags_init(vma, VM_READ | VM_MAYREAD | VM_IO |
+				      VM_DONTEXPAND | VM_DONTDUMP);
 			mmap_write_lock(current->mm);
 			if (insert_vm_struct(current->mm, vma)) {
 				mmap_write_unlock(current->mm);
@@ -272,7 +272,7 @@ static int __init gate_vma_init(void)
 	vma_init(&gate_vma, NULL);
 	gate_vma.vm_start = FIXADDR_USER_START;
 	gate_vma.vm_end = FIXADDR_USER_END;
-	gate_vma.vm_flags = VM_READ | VM_MAYREAD | VM_EXEC | VM_MAYEXEC;
+	vm_flags_init(&gate_vma, VM_READ | VM_MAYREAD | VM_EXEC | VM_MAYEXEC);
 	gate_vma.vm_page_prot = __pgprot(__ACCESS_BITS | _PAGE_PL_3 | _PAGE_AR_RX);
 
 	return 0;
diff --git a/arch/loongarch/include/asm/tlb.h b/arch/loongarch/include/asm/tlb.h
index dd24f58..f5e4deb 100644
--- a/arch/loongarch/include/asm/tlb.h
+++ b/arch/loongarch/include/asm/tlb.h
@@ -149,7 +149,7 @@ static inline void tlb_flush(struct mmu_gather *tlb)
 	struct vm_area_struct vma;
 
 	vma.vm_mm = tlb->mm;
-	vma.vm_flags = 0;
+	vm_flags_init(&vma, 0);
 	if (tlb->fullmm) {
 		flush_tlb_mm(tlb->mm);
 		return;
diff --git a/arch/powerpc/kvm/book3s_hv_uvmem.c b/arch/powerpc/kvm/book3s_hv_uvmem.c
index e2f11f9..303869f 100644
--- a/arch/powerpc/kvm/book3s_hv_uvmem.c
+++ b/arch/powerpc/kvm/book3s_hv_uvmem.c
@@ -393,6 +393,7 @@ static int kvmppc_memslot_page_merge(struct kvm *kvm,
 {
 	unsigned long gfn = memslot->base_gfn;
 	unsigned long end, start = gfn_to_hva(kvm, gfn);
+	unsigned long vm_flags;
 	int ret = 0;
 	struct vm_area_struct *vma;
 	int merge_flag = (merge) ? MADV_MERGEABLE : MADV_UNMERGEABLE;
@@ -409,12 +410,15 @@ static int kvmppc_memslot_page_merge(struct kvm *kvm,
 			ret = H_STATE;
 			break;
 		}
+		/* Copy vm_flags to avoid partial modifications in ksm_madvise */
+		vm_flags = vma->vm_flags;
 		ret = ksm_madvise(vma, vma->vm_start, vma->vm_end,
-			  merge_flag, &vma->vm_flags);
+			  merge_flag, &vm_flags);
 		if (ret) {
 			ret = H_STATE;
 			break;
 		}
+		vm_flags_reset(vma, vm_flags);
 		start = vma->vm_end;
 	} while (end > vma->vm_end);
 
diff --git a/arch/powerpc/kvm/book3s_xive_native.c b/arch/powerpc/kvm/book3s_xive_native.c
index 5271c33..250dddd 100644
--- a/arch/powerpc/kvm/book3s_xive_native.c
+++ b/arch/powerpc/kvm/book3s_xive_native.c
@@ -325,7 +325,7 @@ static int kvmppc_xive_native_mmap(struct kvm_device *dev,
 		return -EINVAL;
 	}
 
-	vma->vm_flags |= VM_IO | VM_PFNMAP;
+	vm_flags_set(vma, VM_IO | VM_PFNMAP);
 	vma->vm_page_prot = pgprot_noncached_wc(vma->vm_page_prot);
 
 	/*
diff --git a/arch/powerpc/mm/book3s64/subpage_prot.c b/arch/powerpc/mm/book3s64/subpage_prot.c
index d73b3b4..b75a9fb 100644
--- a/arch/powerpc/mm/book3s64/subpage_prot.c
+++ b/arch/powerpc/mm/book3s64/subpage_prot.c
@@ -156,7 +156,7 @@ static void subpage_mark_vma_nohuge(struct mm_struct *mm, unsigned long addr,
 	 * VM_NOHUGEPAGE and split them.
 	 */
 	for_each_vma_range(vmi, vma, addr + len) {
-		vma->vm_flags |= VM_NOHUGEPAGE;
+		vm_flags_set(vma, VM_NOHUGEPAGE);
 		walk_page_vma(vma, &subpage_walk_ops, NULL);
 	}
 }
diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c
index af46aa8..531177a 100644
--- a/arch/powerpc/mm/fault.c
+++ b/arch/powerpc/mm/fault.c
@@ -474,6 +474,40 @@ static int ___do_page_fault(struct pt_regs *regs, unsigned long address,
 	if (is_exec)
 		flags |= FAULT_FLAG_INSTRUCTION;
 
+#ifdef CONFIG_PER_VMA_LOCK
+	if (!(flags & FAULT_FLAG_USER))
+		goto lock_mmap;
+
+	vma = lock_vma_under_rcu(mm, address);
+	if (!vma)
+		goto lock_mmap;
+
+	if (unlikely(access_pkey_error(is_write, is_exec,
+				       (error_code & DSISR_KEYFAULT), vma))) {
+		vma_end_read(vma);
+		goto lock_mmap;
+	}
+
+	if (unlikely(access_error(is_write, is_exec, vma))) {
+		vma_end_read(vma);
+		goto lock_mmap;
+	}
+
+	fault = handle_mm_fault(vma, address, flags | FAULT_FLAG_VMA_LOCK, regs);
+	vma_end_read(vma);
+
+	if (!(fault & VM_FAULT_RETRY)) {
+		count_vm_vma_lock_event(VMA_LOCK_SUCCESS);
+		goto done;
+	}
+	count_vm_vma_lock_event(VMA_LOCK_RETRY);
+
+	if (fault_signal_pending(fault, regs))
+		return user_mode(regs) ? 0 : SIGBUS;
+
+lock_mmap:
+#endif /* CONFIG_PER_VMA_LOCK */
+
 	/* When running in the kernel we expect faults to occur only to
 	 * addresses in user space.  All other faults represent errors in the
 	 * kernel and should generate an OOPS.  Unfortunately, in the case of an
@@ -550,6 +584,9 @@ static int ___do_page_fault(struct pt_regs *regs, unsigned long address,
 
 	mmap_read_unlock(current->mm);
 
+#ifdef CONFIG_PER_VMA_LOCK
+done:
+#endif
 	if (unlikely(fault & VM_FAULT_ERROR))
 		return mm_fault_error(regs, address, fault);
 
diff --git a/arch/powerpc/platforms/book3s/vas-api.c b/arch/powerpc/platforms/book3s/vas-api.c
index 40f5ae5..2888dae 100644
--- a/arch/powerpc/platforms/book3s/vas-api.c
+++ b/arch/powerpc/platforms/book3s/vas-api.c
@@ -525,7 +525,7 @@ static int coproc_mmap(struct file *fp, struct vm_area_struct *vma)
 	pfn = paste_addr >> PAGE_SHIFT;
 
 	/* flags, page_prot from cxl_mmap(), except we want cachable */
-	vma->vm_flags |= VM_IO | VM_PFNMAP;
+	vm_flags_set(vma, VM_IO | VM_PFNMAP);
 	vma->vm_page_prot = pgprot_cached(vma->vm_page_prot);
 
 	prot = __pgprot(pgprot_val(vma->vm_page_prot) | _PAGE_DIRTY);
diff --git a/arch/powerpc/platforms/cell/spufs/file.c b/arch/powerpc/platforms/cell/spufs/file.c
index 62d90a5..02a8158 100644
--- a/arch/powerpc/platforms/cell/spufs/file.c
+++ b/arch/powerpc/platforms/cell/spufs/file.c
@@ -291,7 +291,7 @@ static int spufs_mem_mmap(struct file *file, struct vm_area_struct *vma)
 	if (!(vma->vm_flags & VM_SHARED))
 		return -EINVAL;
 
-	vma->vm_flags |= VM_IO | VM_PFNMAP;
+	vm_flags_set(vma, VM_IO | VM_PFNMAP);
 	vma->vm_page_prot = pgprot_noncached_wc(vma->vm_page_prot);
 
 	vma->vm_ops = &spufs_mem_mmap_vmops;
@@ -381,7 +381,7 @@ static int spufs_cntl_mmap(struct file *file, struct vm_area_struct *vma)
 	if (!(vma->vm_flags & VM_SHARED))
 		return -EINVAL;
 
-	vma->vm_flags |= VM_IO | VM_PFNMAP;
+	vm_flags_set(vma, VM_IO | VM_PFNMAP);
 	vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
 
 	vma->vm_ops = &spufs_cntl_mmap_vmops;
@@ -1043,7 +1043,7 @@ static int spufs_signal1_mmap(struct file *file, struct vm_area_struct *vma)
 	if (!(vma->vm_flags & VM_SHARED))
 		return -EINVAL;
 
-	vma->vm_flags |= VM_IO | VM_PFNMAP;
+	vm_flags_set(vma, VM_IO | VM_PFNMAP);
 	vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
 
 	vma->vm_ops = &spufs_signal1_mmap_vmops;
@@ -1179,7 +1179,7 @@ static int spufs_signal2_mmap(struct file *file, struct vm_area_struct *vma)
 	if (!(vma->vm_flags & VM_SHARED))
 		return -EINVAL;
 
-	vma->vm_flags |= VM_IO | VM_PFNMAP;
+	vm_flags_set(vma, VM_IO | VM_PFNMAP);
 	vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
 
 	vma->vm_ops = &spufs_signal2_mmap_vmops;
@@ -1302,7 +1302,7 @@ static int spufs_mss_mmap(struct file *file, struct vm_area_struct *vma)
 	if (!(vma->vm_flags & VM_SHARED))
 		return -EINVAL;
 
-	vma->vm_flags |= VM_IO | VM_PFNMAP;
+	vm_flags_set(vma, VM_IO | VM_PFNMAP);
 	vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
 
 	vma->vm_ops = &spufs_mss_mmap_vmops;
@@ -1364,7 +1364,7 @@ static int spufs_psmap_mmap(struct file *file, struct vm_area_struct *vma)
 	if (!(vma->vm_flags & VM_SHARED))
 		return -EINVAL;
 
-	vma->vm_flags |= VM_IO | VM_PFNMAP;
+	vm_flags_set(vma, VM_IO | VM_PFNMAP);
 	vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
 
 	vma->vm_ops = &spufs_psmap_mmap_vmops;
@@ -1424,7 +1424,7 @@ static int spufs_mfc_mmap(struct file *file, struct vm_area_struct *vma)
 	if (!(vma->vm_flags & VM_SHARED))
 		return -EINVAL;
 
-	vma->vm_flags |= VM_IO | VM_PFNMAP;
+	vm_flags_set(vma, VM_IO | VM_PFNMAP);
 	vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
 
 	vma->vm_ops = &spufs_mfc_mmap_vmops;
diff --git a/arch/powerpc/platforms/powernv/Kconfig b/arch/powerpc/platforms/powernv/Kconfig
index ae248a1..70a46ac 100644
--- a/arch/powerpc/platforms/powernv/Kconfig
+++ b/arch/powerpc/platforms/powernv/Kconfig
@@ -16,6 +16,7 @@
 	select PPC_DOORBELL
 	select MMU_NOTIFIER
 	select FORCE_SMP
+	select ARCH_SUPPORTS_PER_VMA_LOCK
 	default y
 
 config OPAL_PRD
diff --git a/arch/powerpc/platforms/pseries/Kconfig b/arch/powerpc/platforms/pseries/Kconfig
index a3b4d995..e036a04 100644
--- a/arch/powerpc/platforms/pseries/Kconfig
+++ b/arch/powerpc/platforms/pseries/Kconfig
@@ -21,6 +21,7 @@
 	select HOTPLUG_CPU
 	select FORCE_SMP
 	select SWIOTLB
+	select ARCH_SUPPORTS_PER_VMA_LOCK
 	default y
 
 config PARAVIRT
diff --git a/arch/riscv/configs/gki.config b/arch/riscv/configs/gki.config
new file mode 100644
index 0000000..5558fef
--- /dev/null
+++ b/arch/riscv/configs/gki.config
@@ -0,0 +1,2 @@
+CONFIG_CPU_FREQ=y
+CONFIG_GPIOLIB=y
diff --git a/arch/riscv/configs/gki_defconfig b/arch/riscv/configs/gki_defconfig
new file mode 120000
index 0000000..3388ea4
--- /dev/null
+++ b/arch/riscv/configs/gki_defconfig
@@ -0,0 +1 @@
+../../arm64/configs/gki_defconfig
\ No newline at end of file
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
index de575af..927f251 100644
--- a/arch/s390/Kconfig
+++ b/arch/s390/Kconfig
@@ -115,6 +115,7 @@
 	select ARCH_SUPPORTS_DEBUG_PAGEALLOC
 	select ARCH_SUPPORTS_HUGETLBFS
 	select ARCH_SUPPORTS_NUMA_BALANCING
+	select ARCH_SUPPORTS_PER_VMA_LOCK
 	select ARCH_USE_BUILTIN_BSWAP
 	select ARCH_USE_CMPXCHG_LOCKREF
 	select ARCH_WANTS_DYNAMIC_TASK_STRUCT
diff --git a/arch/s390/include/asm/hardirq.h b/arch/s390/include/asm/hardirq.h
index 58668ff..cd9cc11 100644
--- a/arch/s390/include/asm/hardirq.h
+++ b/arch/s390/include/asm/hardirq.h
@@ -16,6 +16,12 @@
 #define local_softirq_pending() (S390_lowcore.softirq_pending)
 #define set_softirq_pending(x) (S390_lowcore.softirq_pending = (x))
 #define or_softirq_pending(x)  (S390_lowcore.softirq_pending |= (x))
+/*
+ *  Not sure what the right thing is here  for s390,
+ *  but returning 0 will result in no logical change
+ *  from what happens now
+ */
+#define __cpu_softirq_pending(x) (0)
 
 #define __ARCH_IRQ_STAT
 #define __ARCH_IRQ_EXIT_IRQS_DISABLED
diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c
index 8e84ed2..1622309 100644
--- a/arch/s390/mm/fault.c
+++ b/arch/s390/mm/fault.c
@@ -403,6 +403,30 @@ static inline vm_fault_t do_exception(struct pt_regs *regs, int access)
 		access = VM_WRITE;
 	if (access == VM_WRITE)
 		flags |= FAULT_FLAG_WRITE;
+#ifdef CONFIG_PER_VMA_LOCK
+	if (!(flags & FAULT_FLAG_USER))
+		goto lock_mmap;
+	vma = lock_vma_under_rcu(mm, address);
+	if (!vma)
+		goto lock_mmap;
+	if (!(vma->vm_flags & access)) {
+		vma_end_read(vma);
+		goto lock_mmap;
+	}
+	fault = handle_mm_fault(vma, address, flags | FAULT_FLAG_VMA_LOCK, regs);
+	vma_end_read(vma);
+	if (!(fault & VM_FAULT_RETRY)) {
+		count_vm_vma_lock_event(VMA_LOCK_SUCCESS);
+		goto out;
+	}
+	count_vm_vma_lock_event(VMA_LOCK_RETRY);
+	/* Quick path to respond to signals */
+	if (fault_signal_pending(fault, regs)) {
+		fault = VM_FAULT_SIGNAL;
+		goto out;
+	}
+lock_mmap:
+#endif /* CONFIG_PER_VMA_LOCK */
 	mmap_read_lock(mm);
 
 	gmap = NULL;
diff --git a/arch/s390/mm/gmap.c b/arch/s390/mm/gmap.c
index 02d15c8..e4567b5 100644
--- a/arch/s390/mm/gmap.c
+++ b/arch/s390/mm/gmap.c
@@ -2518,8 +2518,7 @@ static inline void thp_split_mm(struct mm_struct *mm)
 	VMA_ITERATOR(vmi, mm, 0);
 
 	for_each_vma(vmi, vma) {
-		vma->vm_flags &= ~VM_HUGEPAGE;
-		vma->vm_flags |= VM_NOHUGEPAGE;
+		vm_flags_mod(vma, VM_NOHUGEPAGE, VM_HUGEPAGE);
 		walk_page_vma(vma, &thp_split_walk_ops, NULL);
 	}
 	mm->def_flags |= VM_NOHUGEPAGE;
@@ -2584,14 +2583,18 @@ int gmap_mark_unmergeable(void)
 {
 	struct mm_struct *mm = current->mm;
 	struct vm_area_struct *vma;
+	unsigned long vm_flags;
 	int ret;
 	VMA_ITERATOR(vmi, mm, 0);
 
 	for_each_vma(vmi, vma) {
+		/* Copy vm_flags to avoid partial modifications in ksm_madvise */
+		vm_flags = vma->vm_flags;
 		ret = ksm_madvise(vma, vma->vm_start, vma->vm_end,
-				  MADV_UNMERGEABLE, &vma->vm_flags);
+				  MADV_UNMERGEABLE, &vm_flags);
 		if (ret)
 			return ret;
+		vm_flags_reset(vma, vm_flags);
 	}
 	mm->def_flags &= ~VM_MERGEABLE;
 	return 0;
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index b2c0fce..ab3ce4e 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -27,6 +27,7 @@
 	# Options that are inherently 64-bit kernel only:
 	select ARCH_HAS_GIGANTIC_PAGE
 	select ARCH_SUPPORTS_INT128 if CC_HAS_INT128
+	select ARCH_SUPPORTS_PER_VMA_LOCK
 	select ARCH_USE_CMPXCHG_LOCKREF
 	select HAVE_ARCH_SOFT_DIRTY
 	select MODULES_USE_ELF_RELA
diff --git a/arch/x86/Makefile b/arch/x86/Makefile
index 3419ffa..298e5ec 100644
--- a/arch/x86/Makefile
+++ b/arch/x86/Makefile
@@ -264,8 +264,11 @@
 
 PHONY += bzImage $(BOOT_TARGETS)
 
+# Don't compile Image in mixed build with "all" target
+ifndef KBUILD_MIXED_TREE
 # Default kernel to build
 all: bzImage
+endif
 
 # KBUILD_IMAGE specify target image being built
 KBUILD_IMAGE := $(boot)/bzImage
diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig
new file mode 100644
index 0000000..15f83e5
--- /dev/null
+++ b/arch/x86/configs/gki_defconfig
@@ -0,0 +1,671 @@
+CONFIG_UAPI_HEADER_TEST=y
+CONFIG_KERNEL_LZ4=y
+CONFIG_AUDIT=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_BPF_SYSCALL=y
+CONFIG_BPF_JIT=y
+CONFIG_BPF_JIT_ALWAYS_ON=y
+# CONFIG_BPF_UNPRIV_DEFAULT_OFF is not set
+CONFIG_PREEMPT=y
+# CONFIG_PREEMPT_DYNAMIC is not set
+CONFIG_IRQ_TIME_ACCOUNTING=y
+CONFIG_TASKSTATS=y
+CONFIG_TASK_XACCT=y
+CONFIG_TASK_IO_ACCOUNTING=y
+CONFIG_PSI=y
+CONFIG_RCU_EXPERT=y
+CONFIG_RCU_BOOST=y
+CONFIG_RCU_NOCB_CPU=y
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_IKHEADERS=m
+CONFIG_UCLAMP_TASK=y
+CONFIG_UCLAMP_BUCKETS_COUNT=20
+CONFIG_CGROUPS=y
+CONFIG_MEMCG=y
+CONFIG_BLK_CGROUP=y
+CONFIG_CGROUP_SCHED=y
+CONFIG_UCLAMP_TASK_GROUP=y
+CONFIG_CGROUP_FREEZER=y
+CONFIG_CPUSETS=y
+CONFIG_CGROUP_CPUACCT=y
+CONFIG_CGROUP_BPF=y
+CONFIG_NAMESPACES=y
+# CONFIG_TIME_NS is not set
+# CONFIG_PID_NS is not set
+CONFIG_RT_SOFTIRQ_AWARE_SCHED=y
+# CONFIG_RD_BZIP2 is not set
+# CONFIG_RD_LZMA is not set
+# CONFIG_RD_XZ is not set
+# CONFIG_RD_LZO is not set
+CONFIG_BOOT_CONFIG=y
+# CONFIG_UID16 is not set
+# CONFIG_SYSFS_SYSCALL is not set
+# CONFIG_FHANDLE is not set
+# CONFIG_PCSPKR_PLATFORM is not set
+CONFIG_KALLSYMS_ALL=y
+# CONFIG_RSEQ is not set
+CONFIG_EMBEDDED=y
+CONFIG_PROFILING=y
+CONFIG_SMP=y
+CONFIG_X86_X2APIC=y
+CONFIG_HYPERVISOR_GUEST=y
+CONFIG_PARAVIRT=y
+CONFIG_PARAVIRT_TIME_ACCOUNTING=y
+CONFIG_NR_CPUS=32
+# CONFIG_X86_MCE is not set
+# CONFIG_MICROCODE is not set
+# CONFIG_X86_5LEVEL is not set
+# CONFIG_MTRR_SANITIZER is not set
+CONFIG_EFI=y
+CONFIG_CMDLINE_BOOL=y
+CONFIG_CMDLINE="console=ttynull stack_depot_disable=on cgroup_disable=pressure bootconfig"
+CONFIG_HIBERNATION=y
+CONFIG_PM_WAKELOCKS=y
+CONFIG_PM_WAKELOCKS_LIMIT=0
+# CONFIG_PM_WAKELOCKS_GC is not set
+# CONFIG_ACPI_AC is not set
+# CONFIG_ACPI_BATTERY is not set
+# CONFIG_ACPI_FAN is not set
+# CONFIG_ACPI_THERMAL is not set
+# CONFIG_X86_PM_TIMER is not set
+CONFIG_CPU_FREQ_STAT=y
+CONFIG_CPU_FREQ_TIMES=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_IA32_EMULATION=y
+CONFIG_KVM=y
+CONFIG_KVM_INTEL=y
+CONFIG_KVM_AMD=y
+CONFIG_KPROBES=y
+CONFIG_JUMP_LABEL=y
+CONFIG_CFI_CLANG=y
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+CONFIG_MODULE_SCMVERSION=y
+CONFIG_MODULE_SIG=y
+CONFIG_MODULE_SIG_PROTECT=y
+CONFIG_BLK_DEV_ZONED=y
+CONFIG_BLK_DEV_THROTTLING=y
+CONFIG_BLK_CGROUP_IOCOST=y
+CONFIG_BLK_INLINE_ENCRYPTION=y
+CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y
+CONFIG_IOSCHED_BFQ=y
+CONFIG_BFQ_GROUP_IOSCHED=y
+CONFIG_GKI_HACKS_TO_FIX=y
+# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
+CONFIG_BINFMT_MISC=y
+# CONFIG_SLAB_MERGE_DEFAULT is not set
+CONFIG_SLAB_FREELIST_RANDOM=y
+CONFIG_SLAB_FREELIST_HARDENED=y
+CONFIG_SHUFFLE_PAGE_ALLOCATOR=y
+# CONFIG_COMPAT_BRK is not set
+CONFIG_MEMORY_HOTPLUG=y
+CONFIG_MEMORY_HOTREMOVE=y
+CONFIG_DEFAULT_MMAP_MIN_ADDR=32768
+CONFIG_TRANSPARENT_HUGEPAGE=y
+CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y
+CONFIG_CLEANCACHE=y
+CONFIG_CMA=y
+CONFIG_CMA_DEBUGFS=y
+CONFIG_CMA_AREAS=16
+# CONFIG_ZONE_DMA is not set
+CONFIG_ZONE_DEVICE=y
+CONFIG_ANON_VMA_NAME=y
+CONFIG_USERFAULTFD=y
+CONFIG_LRU_GEN=y
+CONFIG_LRU_GEN_ENABLED=y
+CONFIG_NET=y
+CONFIG_PACKET=y
+CONFIG_UNIX=y
+CONFIG_XFRM_USER=y
+CONFIG_XFRM_INTERFACE=y
+CONFIG_XFRM_MIGRATE=y
+CONFIG_XFRM_STATISTICS=y
+CONFIG_NET_KEY=y
+CONFIG_XDP_SOCKETS=y
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_ADVANCED_ROUTER=y
+CONFIG_IP_MULTIPLE_TABLES=y
+CONFIG_NET_IPIP=y
+CONFIG_NET_IPGRE_DEMUX=y
+CONFIG_NET_IPGRE=y
+CONFIG_NET_IPVTI=y
+CONFIG_INET_ESP=y
+CONFIG_INET_UDP_DIAG=y
+CONFIG_INET_DIAG_DESTROY=y
+CONFIG_IPV6_ROUTER_PREF=y
+CONFIG_IPV6_ROUTE_INFO=y
+CONFIG_IPV6_OPTIMISTIC_DAD=y
+CONFIG_INET6_ESP=y
+CONFIG_INET6_IPCOMP=y
+CONFIG_IPV6_MIP6=y
+CONFIG_IPV6_VTI=y
+CONFIG_IPV6_GRE=y
+CONFIG_IPV6_MULTIPLE_TABLES=y
+CONFIG_IPV6_MROUTE=y
+CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
+CONFIG_NETFILTER=y
+CONFIG_NF_CONNTRACK=y
+CONFIG_NF_CONNTRACK_SECMARK=y
+CONFIG_NF_CONNTRACK_PROCFS=y
+CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CONNTRACK_AMANDA=y
+CONFIG_NF_CONNTRACK_FTP=y
+CONFIG_NF_CONNTRACK_H323=y
+CONFIG_NF_CONNTRACK_IRC=y
+CONFIG_NF_CONNTRACK_NETBIOS_NS=y
+CONFIG_NF_CONNTRACK_PPTP=y
+CONFIG_NF_CONNTRACK_SANE=y
+CONFIG_NF_CONNTRACK_TFTP=y
+CONFIG_NF_CT_NETLINK=y
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=y
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=y
+CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=y
+CONFIG_NETFILTER_XT_TARGET_DSCP=y
+CONFIG_NETFILTER_XT_TARGET_IDLETIMER=y
+CONFIG_NETFILTER_XT_TARGET_MARK=y
+CONFIG_NETFILTER_XT_TARGET_NFLOG=y
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=y
+CONFIG_NETFILTER_XT_TARGET_NOTRACK=y
+CONFIG_NETFILTER_XT_TARGET_TEE=y
+CONFIG_NETFILTER_XT_TARGET_TPROXY=y
+CONFIG_NETFILTER_XT_TARGET_TRACE=y
+CONFIG_NETFILTER_XT_TARGET_SECMARK=y
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=y
+CONFIG_NETFILTER_XT_MATCH_BPF=y
+CONFIG_NETFILTER_XT_MATCH_COMMENT=y
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=y
+CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=y
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=y
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
+CONFIG_NETFILTER_XT_MATCH_DSCP=y
+CONFIG_NETFILTER_XT_MATCH_ESP=y
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=y
+CONFIG_NETFILTER_XT_MATCH_HELPER=y
+CONFIG_NETFILTER_XT_MATCH_IPRANGE=y
+CONFIG_NETFILTER_XT_MATCH_L2TP=y
+CONFIG_NETFILTER_XT_MATCH_LENGTH=y
+CONFIG_NETFILTER_XT_MATCH_LIMIT=y
+CONFIG_NETFILTER_XT_MATCH_MAC=y
+CONFIG_NETFILTER_XT_MATCH_MARK=y
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=y
+CONFIG_NETFILTER_XT_MATCH_OWNER=y
+CONFIG_NETFILTER_XT_MATCH_POLICY=y
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=y
+CONFIG_NETFILTER_XT_MATCH_QUOTA=y
+CONFIG_NETFILTER_XT_MATCH_QUOTA2=y
+CONFIG_NETFILTER_XT_MATCH_QUOTA2_LOG=y
+CONFIG_NETFILTER_XT_MATCH_SOCKET=y
+CONFIG_NETFILTER_XT_MATCH_STATE=y
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=y
+CONFIG_NETFILTER_XT_MATCH_STRING=y
+CONFIG_NETFILTER_XT_MATCH_TIME=y
+CONFIG_NETFILTER_XT_MATCH_U32=y
+CONFIG_IP_NF_IPTABLES=y
+CONFIG_IP_NF_MATCH_ECN=y
+CONFIG_IP_NF_MATCH_TTL=y
+CONFIG_IP_NF_FILTER=y
+CONFIG_IP_NF_TARGET_REJECT=y
+CONFIG_IP_NF_NAT=y
+CONFIG_IP_NF_TARGET_MASQUERADE=y
+CONFIG_IP_NF_TARGET_NETMAP=y
+CONFIG_IP_NF_TARGET_REDIRECT=y
+CONFIG_IP_NF_MANGLE=y
+CONFIG_IP_NF_RAW=y
+CONFIG_IP_NF_SECURITY=y
+CONFIG_IP_NF_ARPTABLES=y
+CONFIG_IP_NF_ARPFILTER=y
+CONFIG_IP_NF_ARP_MANGLE=y
+CONFIG_IP6_NF_IPTABLES=y
+CONFIG_IP6_NF_MATCH_RPFILTER=y
+CONFIG_IP6_NF_FILTER=y
+CONFIG_IP6_NF_TARGET_REJECT=y
+CONFIG_IP6_NF_MANGLE=y
+CONFIG_IP6_NF_RAW=y
+CONFIG_TIPC=m
+CONFIG_L2TP=m
+CONFIG_BRIDGE=y
+CONFIG_VLAN_8021Q=m
+CONFIG_6LOWPAN=m
+CONFIG_IEEE802154=m
+CONFIG_IEEE802154_6LOWPAN=m
+CONFIG_MAC802154=m
+CONFIG_NET_SCHED=y
+CONFIG_NET_SCH_HTB=y
+CONFIG_NET_SCH_PRIO=y
+CONFIG_NET_SCH_MULTIQ=y
+CONFIG_NET_SCH_SFQ=y
+CONFIG_NET_SCH_TBF=y
+CONFIG_NET_SCH_NETEM=y
+CONFIG_NET_SCH_CODEL=y
+CONFIG_NET_SCH_FQ_CODEL=y
+CONFIG_NET_SCH_FQ=y
+CONFIG_NET_SCH_INGRESS=y
+CONFIG_NET_CLS_BASIC=y
+CONFIG_NET_CLS_FW=y
+CONFIG_NET_CLS_U32=y
+CONFIG_CLS_U32_MARK=y
+CONFIG_NET_CLS_FLOW=y
+CONFIG_NET_CLS_BPF=y
+CONFIG_NET_CLS_MATCHALL=y
+CONFIG_NET_EMATCH=y
+CONFIG_NET_EMATCH_CMP=y
+CONFIG_NET_EMATCH_NBYTE=y
+CONFIG_NET_EMATCH_U32=y
+CONFIG_NET_EMATCH_META=y
+CONFIG_NET_EMATCH_TEXT=y
+CONFIG_NET_CLS_ACT=y
+CONFIG_NET_ACT_POLICE=y
+CONFIG_NET_ACT_GACT=y
+CONFIG_NET_ACT_MIRRED=y
+CONFIG_NET_ACT_SKBEDIT=y
+CONFIG_NET_ACT_BPF=y
+CONFIG_VSOCKETS=y
+CONFIG_CGROUP_NET_PRIO=y
+CONFIG_CAN=m
+CONFIG_BT=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_HIDP=m
+CONFIG_BT_HCIBTSDIO=m
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_LL=y
+CONFIG_BT_HCIUART_BCM=y
+CONFIG_BT_HCIUART_QCA=y
+CONFIG_RFKILL=m
+CONFIG_NFC=m
+CONFIG_PCI=y
+CONFIG_PCIEPORTBUS=y
+CONFIG_PCIEAER=y
+CONFIG_PCI_MSI=y
+CONFIG_PCI_IOV=y
+CONFIG_PCIE_DW_PLAT_EP=y
+CONFIG_PCI_ENDPOINT=y
+CONFIG_FW_LOADER_USER_HELPER=y
+# CONFIG_FW_CACHE is not set
+CONFIG_GNSS=y
+CONFIG_OF=y
+CONFIG_ZRAM=m
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_LOOP_MIN_COUNT=16
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=8192
+CONFIG_BLK_DEV_UBLK=y
+CONFIG_BLK_DEV_NVME=y
+CONFIG_SRAM=y
+CONFIG_UID_SYS_STATS=y
+CONFIG_SCSI=y
+# CONFIG_SCSI_PROC_FS is not set
+CONFIG_BLK_DEV_SD=y
+CONFIG_MD=y
+CONFIG_BLK_DEV_DM=y
+CONFIG_DM_CRYPT=y
+CONFIG_DM_DEFAULT_KEY=y
+CONFIG_DM_SNAPSHOT=y
+CONFIG_DM_UEVENT=y
+CONFIG_DM_VERITY=y
+CONFIG_DM_VERITY_FEC=y
+CONFIG_NETDEVICES=y
+CONFIG_DUMMY=y
+CONFIG_WIREGUARD=y
+CONFIG_IFB=y
+CONFIG_MACSEC=y
+CONFIG_TUN=y
+CONFIG_VETH=y
+CONFIG_LED_TRIGGER_PHY=y
+CONFIG_AX88796B_PHY=y
+CONFIG_CAN_VCAN=m
+CONFIG_CAN_SLCAN=m
+CONFIG_PPP=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_MPPE=m
+CONFIG_PPTP=m
+CONFIG_PPPOL2TP=m
+CONFIG_USB_NET_DRIVERS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_RTL8152=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_CDC_EEM=m
+# CONFIG_USB_NET_NET1080 is not set
+# CONFIG_USB_NET_CDC_SUBSET is not set
+# CONFIG_USB_NET_ZAURUS is not set
+CONFIG_USB_NET_AQC111=m
+# CONFIG_WLAN_VENDOR_ADMTEK is not set
+# CONFIG_WLAN_VENDOR_ATH is not set
+# CONFIG_WLAN_VENDOR_ATMEL is not set
+# CONFIG_WLAN_VENDOR_BROADCOM is not set
+# CONFIG_WLAN_VENDOR_CISCO is not set
+# CONFIG_WLAN_VENDOR_INTEL is not set
+# CONFIG_WLAN_VENDOR_INTERSIL is not set
+# CONFIG_WLAN_VENDOR_MARVELL is not set
+# CONFIG_WLAN_VENDOR_MEDIATEK is not set
+# CONFIG_WLAN_VENDOR_RALINK is not set
+# CONFIG_WLAN_VENDOR_REALTEK is not set
+# CONFIG_WLAN_VENDOR_RSI is not set
+# CONFIG_WLAN_VENDOR_ST is not set
+# CONFIG_WLAN_VENDOR_TI is not set
+# CONFIG_WLAN_VENDOR_ZYDAS is not set
+# CONFIG_WLAN_VENDOR_QUANTENNA is not set
+CONFIG_INPUT_EVDEV=y
+CONFIG_KEYBOARD_GPIO=y
+# CONFIG_MOUSE_PS2 is not set
+CONFIG_INPUT_JOYSTICK=y
+CONFIG_JOYSTICK_XPAD=y
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_UINPUT=y
+# CONFIG_VT is not set
+# CONFIG_LEGACY_PTYS is not set
+CONFIG_SERIAL_8250=y
+# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_NR_UARTS=32
+CONFIG_SERIAL_8250_RUNTIME_UARTS=0
+CONFIG_SERIAL_OF_PLATFORM=y
+CONFIG_SERIAL_SAMSUNG=y
+CONFIG_SERIAL_SAMSUNG_CONSOLE=y
+CONFIG_NULL_TTY=y
+CONFIG_SERIAL_DEV_BUS=y
+CONFIG_HW_RANDOM=y
+# CONFIG_HW_RANDOM_VIA is not set
+# CONFIG_DEVMEM is not set
+# CONFIG_DEVPORT is not set
+CONFIG_HPET=y
+# CONFIG_I2C_COMPAT is not set
+# CONFIG_I2C_HELPER_AUTO is not set
+CONFIG_I3C=y
+CONFIG_SPI=y
+CONFIG_SPI_MEM=y
+CONFIG_GPIOLIB=y
+CONFIG_GPIO_GENERIC_PLATFORM=y
+# CONFIG_HWMON is not set
+CONFIG_THERMAL_NETLINK=y
+CONFIG_THERMAL_STATISTICS=y
+CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=100
+CONFIG_THERMAL_WRITABLE_TRIPS=y
+CONFIG_THERMAL_GOV_USER_SPACE=y
+CONFIG_CPU_THERMAL=y
+CONFIG_DEVFREQ_THERMAL=y
+CONFIG_THERMAL_EMULATION=y
+# CONFIG_X86_PKG_TEMP_THERMAL is not set
+CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_CORE=y
+CONFIG_MFD_SYSCON=y
+CONFIG_REGULATOR=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_RC_CORE=y
+CONFIG_BPF_LIRC_MODE2=y
+CONFIG_LIRC=y
+# CONFIG_RC_MAP is not set
+CONFIG_RC_DECODERS=y
+CONFIG_RC_DEVICES=y
+CONFIG_MEDIA_CEC_RC=y
+# CONFIG_MEDIA_ANALOG_TV_SUPPORT is not set
+# CONFIG_MEDIA_DIGITAL_TV_SUPPORT is not set
+# CONFIG_MEDIA_RADIO_SUPPORT is not set
+# CONFIG_MEDIA_SDR_SUPPORT is not set
+# CONFIG_MEDIA_TEST_SUPPORT is not set
+CONFIG_MEDIA_USB_SUPPORT=y
+CONFIG_USB_GSPCA=y
+CONFIG_USB_VIDEO_CLASS=y
+CONFIG_V4L_PLATFORM_DRIVERS=y
+CONFIG_V4L_MEM2MEM_DRIVERS=y
+CONFIG_DRM=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_SOUND=y
+CONFIG_SND=y
+CONFIG_SND_HRTIMER=y
+# CONFIG_SND_SUPPORT_OLD_API is not set
+# CONFIG_SND_VERBOSE_PROCFS is not set
+# CONFIG_SND_DRIVERS is not set
+CONFIG_SND_USB_AUDIO=y
+CONFIG_SND_SOC=y
+CONFIG_HID_BATTERY_STRENGTH=y
+CONFIG_HIDRAW=y
+CONFIG_UHID=y
+CONFIG_HID_APPLE=y
+CONFIG_HID_PRODIKEYS=y
+CONFIG_HID_ELECOM=y
+CONFIG_HID_UCLOGIC=y
+CONFIG_HID_LOGITECH=y
+CONFIG_HID_LOGITECH_DJ=y
+CONFIG_HID_MAGICMOUSE=y
+CONFIG_HID_MICROSOFT=y
+CONFIG_HID_MULTITOUCH=y
+CONFIG_HID_NINTENDO=y
+CONFIG_HID_PICOLCD=y
+CONFIG_HID_PLANTRONICS=y
+CONFIG_HID_PLAYSTATION=y
+CONFIG_PLAYSTATION_FF=y
+CONFIG_HID_ROCCAT=y
+CONFIG_HID_SONY=y
+CONFIG_SONY_FF=y
+CONFIG_HID_STEAM=y
+CONFIG_HID_WACOM=y
+CONFIG_HID_WIIMOTE=y
+CONFIG_USB_HIDDEV=y
+CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
+CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_XHCI_PCI_RENESAS=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+CONFIG_USB_EHCI_HCD_PLATFORM=y
+CONFIG_USB_ACM=m
+CONFIG_USB_STORAGE=y
+CONFIG_USB_UAS=y
+CONFIG_USB_DWC3=y
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_GADGET=y
+CONFIG_USB_CONFIGFS=y
+CONFIG_USB_CONFIGFS_UEVENT=y
+CONFIG_USB_CONFIGFS_SERIAL=y
+CONFIG_USB_CONFIGFS_ACM=y
+CONFIG_USB_CONFIGFS_NCM=y
+CONFIG_USB_CONFIGFS_ECM=y
+CONFIG_USB_CONFIGFS_EEM=y
+CONFIG_USB_CONFIGFS_MASS_STORAGE=y
+CONFIG_USB_CONFIGFS_F_FS=y
+CONFIG_USB_CONFIGFS_F_ACC=y
+CONFIG_USB_CONFIGFS_F_AUDIO_SRC=y
+CONFIG_USB_CONFIGFS_F_UAC2=y
+CONFIG_USB_CONFIGFS_F_MIDI=y
+CONFIG_USB_CONFIGFS_F_HID=y
+CONFIG_USB_CONFIGFS_F_UVC=y
+CONFIG_TYPEC=y
+CONFIG_TYPEC_TCPM=y
+CONFIG_TYPEC_TCPCI=y
+CONFIG_TYPEC_UCSI=y
+CONFIG_TYPEC_DP_ALTMODE=y
+CONFIG_MMC=y
+# CONFIG_PWRSEQ_EMMC is not set
+# CONFIG_PWRSEQ_SIMPLE is not set
+CONFIG_MMC_CRYPTO=y
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_PLTFM=y
+CONFIG_SCSI_UFSHCD=y
+CONFIG_SCSI_UFS_BSG=y
+CONFIG_SCSI_UFS_CRYPTO=y
+CONFIG_SCSI_UFSHCD_PCI=y
+CONFIG_SCSI_UFSHCD_PLATFORM=y
+CONFIG_SCSI_UFS_DWC_TC_PLATFORM=y
+CONFIG_LEDS_CLASS_FLASH=y
+CONFIG_LEDS_CLASS_MULTICOLOR=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_TRANSIENT=y
+CONFIG_EDAC=y
+CONFIG_RTC_CLASS=y
+# CONFIG_RTC_HCTOSYS is not set
+CONFIG_DMABUF_HEAPS=y
+CONFIG_DMABUF_SYSFS_STATS=y
+CONFIG_DMABUF_HEAPS_DEFERRED_FREE=y
+CONFIG_DMABUF_HEAPS_PAGE_POOL=y
+CONFIG_UIO=y
+CONFIG_VHOST_VSOCK=y
+CONFIG_STAGING=y
+CONFIG_ASHMEM=y
+CONFIG_REMOTEPROC=y
+CONFIG_REMOTEPROC_CDEV=y
+CONFIG_RPMSG_CHAR=y
+CONFIG_PM_DEVFREQ_EVENT=y
+CONFIG_IIO=y
+CONFIG_IIO_BUFFER=y
+CONFIG_IIO_TRIGGER=y
+CONFIG_POWERCAP=y
+CONFIG_ANDROID_BINDER_IPC=y
+CONFIG_ANDROID_BINDERFS=y
+CONFIG_ANDROID_VENDOR_HOOKS=y
+CONFIG_ANDROID_DEBUG_KINFO=y
+CONFIG_LIBNVDIMM=y
+CONFIG_INTERCONNECT=y
+CONFIG_EXT4_FS=y
+CONFIG_EXT4_FS_POSIX_ACL=y
+CONFIG_EXT4_FS_SECURITY=y
+CONFIG_F2FS_FS=y
+CONFIG_F2FS_FS_SECURITY=y
+CONFIG_F2FS_FS_COMPRESSION=y
+CONFIG_F2FS_UNFAIR_RWSEM=y
+CONFIG_FS_ENCRYPTION=y
+CONFIG_FS_ENCRYPTION_INLINE_CRYPT=y
+CONFIG_FS_VERITY=y
+CONFIG_FS_VERITY_BUILTIN_SIGNATURES=y
+# CONFIG_DNOTIFY is not set
+CONFIG_QUOTA=y
+CONFIG_QFMT_V2=y
+CONFIG_FUSE_FS=y
+CONFIG_VIRTIO_FS=y
+CONFIG_FUSE_BPF=y
+CONFIG_OVERLAY_FS=y
+CONFIG_INCREMENTAL_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_EXFAT_FS=y
+CONFIG_TMPFS=y
+CONFIG_TMPFS_POSIX_ACL=y
+# CONFIG_EFIVAR_FS is not set
+CONFIG_PSTORE=y
+CONFIG_PSTORE_CONSOLE=y
+CONFIG_PSTORE_PMSG=y
+CONFIG_PSTORE_RAM=y
+CONFIG_EROFS_FS=y
+CONFIG_EROFS_FS_PCPU_KTHREAD=y
+CONFIG_EROFS_FS_PCPU_KTHREAD_HIPRI=y
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_CODEPAGE_737=y
+CONFIG_NLS_CODEPAGE_775=y
+CONFIG_NLS_CODEPAGE_850=y
+CONFIG_NLS_CODEPAGE_852=y
+CONFIG_NLS_CODEPAGE_855=y
+CONFIG_NLS_CODEPAGE_857=y
+CONFIG_NLS_CODEPAGE_860=y
+CONFIG_NLS_CODEPAGE_861=y
+CONFIG_NLS_CODEPAGE_862=y
+CONFIG_NLS_CODEPAGE_863=y
+CONFIG_NLS_CODEPAGE_864=y
+CONFIG_NLS_CODEPAGE_865=y
+CONFIG_NLS_CODEPAGE_866=y
+CONFIG_NLS_CODEPAGE_869=y
+CONFIG_NLS_CODEPAGE_936=y
+CONFIG_NLS_CODEPAGE_950=y
+CONFIG_NLS_CODEPAGE_932=y
+CONFIG_NLS_CODEPAGE_949=y
+CONFIG_NLS_CODEPAGE_874=y
+CONFIG_NLS_ISO8859_8=y
+CONFIG_NLS_CODEPAGE_1250=y
+CONFIG_NLS_CODEPAGE_1251=y
+CONFIG_NLS_ASCII=y
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_2=y
+CONFIG_NLS_ISO8859_3=y
+CONFIG_NLS_ISO8859_4=y
+CONFIG_NLS_ISO8859_5=y
+CONFIG_NLS_ISO8859_6=y
+CONFIG_NLS_ISO8859_7=y
+CONFIG_NLS_ISO8859_9=y
+CONFIG_NLS_ISO8859_13=y
+CONFIG_NLS_ISO8859_14=y
+CONFIG_NLS_ISO8859_15=y
+CONFIG_NLS_KOI8_R=y
+CONFIG_NLS_KOI8_U=y
+CONFIG_NLS_MAC_ROMAN=y
+CONFIG_NLS_MAC_CELTIC=y
+CONFIG_NLS_MAC_CENTEURO=y
+CONFIG_NLS_MAC_CROATIAN=y
+CONFIG_NLS_MAC_CYRILLIC=y
+CONFIG_NLS_MAC_GAELIC=y
+CONFIG_NLS_MAC_GREEK=y
+CONFIG_NLS_MAC_ICELAND=y
+CONFIG_NLS_MAC_INUIT=y
+CONFIG_NLS_MAC_ROMANIAN=y
+CONFIG_NLS_MAC_TURKISH=y
+CONFIG_NLS_UTF8=y
+CONFIG_UNICODE=y
+CONFIG_SECURITY=y
+CONFIG_SECURITYFS=y
+CONFIG_SECURITY_NETWORK=y
+CONFIG_HARDENED_USERCOPY=y
+CONFIG_FORTIFY_SOURCE=y
+CONFIG_STATIC_USERMODEHELPER=y
+CONFIG_STATIC_USERMODEHELPER_PATH=""
+CONFIG_SECURITY_SELINUX=y
+CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y
+CONFIG_CRYPTO_ECDH=y
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_ADIANTUM=y
+CONFIG_CRYPTO_HCTR2=y
+CONFIG_CRYPTO_CHACHA20POLY1305=y
+CONFIG_CRYPTO_CCM=y
+CONFIG_CRYPTO_BLAKE2B=y
+CONFIG_CRYPTO_CMAC=y
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_XCBC=y
+CONFIG_CRYPTO_LZO=y
+CONFIG_CRYPTO_LZ4=y
+CONFIG_CRYPTO_ZSTD=y
+CONFIG_CRYPTO_ANSI_CPRNG=y
+CONFIG_CRYPTO_AES_NI_INTEL=y
+CONFIG_CRYPTO_POLYVAL_CLMUL_NI=y
+CONFIG_CRYPTO_SHA256_SSSE3=y
+CONFIG_CRYPTO_SHA512_SSSE3=y
+CONFIG_CRC_CCITT=y
+CONFIG_CRC8=y
+CONFIG_XZ_DEC=y
+CONFIG_DMA_CMA=y
+CONFIG_PRINTK_TIME=y
+CONFIG_DYNAMIC_DEBUG_CORE=y
+CONFIG_DEBUG_INFO_DWARF4=y
+CONFIG_DEBUG_INFO_BTF=y
+CONFIG_MODULE_ALLOW_BTF_MISMATCH=y
+CONFIG_HEADERS_INSTALL=y
+# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_UBSAN=y
+CONFIG_UBSAN_TRAP=y
+CONFIG_UBSAN_LOCAL_BOUNDS=y
+# CONFIG_UBSAN_SHIFT is not set
+# CONFIG_UBSAN_BOOL is not set
+# CONFIG_UBSAN_ENUM is not set
+CONFIG_PAGE_OWNER=y
+CONFIG_PER_VMA_LOCK_STATS=y
+CONFIG_DEBUG_STACK_USAGE=y
+CONFIG_DEBUG_MEMORY_INIT=y
+CONFIG_KFENCE=y
+CONFIG_KFENCE_SAMPLE_INTERVAL=500
+CONFIG_KFENCE_NUM_OBJECTS=63
+CONFIG_KFENCE_STATIC_KEYS=y
+CONFIG_PANIC_ON_OOPS=y
+CONFIG_PANIC_TIMEOUT=-1
+CONFIG_SOFTLOCKUP_DETECTOR=y
+CONFIG_WQ_WATCHDOG=y
+CONFIG_SCHEDSTATS=y
+CONFIG_BUG_ON_DATA_CORRUPTION=y
+CONFIG_HIST_TRIGGERS=y
+CONFIG_UNWINDER_FRAME_POINTER=y
+CONFIG_KUNIT=y
+CONFIG_KUNIT_DEBUGFS=y
+# CONFIG_KUNIT_DEFAULT_ENABLED is not set
diff --git a/arch/x86/entry/vsyscall/vsyscall_64.c b/arch/x86/entry/vsyscall/vsyscall_64.c
index 4af81df..d234ca7 100644
--- a/arch/x86/entry/vsyscall/vsyscall_64.c
+++ b/arch/x86/entry/vsyscall/vsyscall_64.c
@@ -391,7 +391,7 @@ void __init map_vsyscall(void)
 	}
 
 	if (vsyscall_mode == XONLY)
-		gate_vma.vm_flags = VM_EXEC;
+		vm_flags_init(&gate_vma, VM_EXEC);
 
 	BUILD_BUG_ON((unsigned long)__fix_to_virt(VSYSCALL_PAGE) !=
 		     (unsigned long)VSYSCALL_ADDR);
diff --git a/arch/x86/include/asm/page.h b/arch/x86/include/asm/page.h
index 9cc82f3..179b360 100644
--- a/arch/x86/include/asm/page.h
+++ b/arch/x86/include/asm/page.h
@@ -35,7 +35,7 @@ static inline void copy_user_page(void *to, void *from, unsigned long vaddr,
 }
 
 #define alloc_zeroed_user_highpage_movable(vma, vaddr) \
-	alloc_page_vma(GFP_HIGHUSER_MOVABLE | __GFP_ZERO, vma, vaddr)
+	alloc_page_vma(GFP_HIGHUSER_MOVABLE | __GFP_ZERO | __GFP_CMA, vma, vaddr)
 #define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE_MOVABLE
 
 #ifndef __pa
diff --git a/arch/x86/kernel/cpu/sgx/driver.c b/arch/x86/kernel/cpu/sgx/driver.c
index aa9b8b8..262f5fb 100644
--- a/arch/x86/kernel/cpu/sgx/driver.c
+++ b/arch/x86/kernel/cpu/sgx/driver.c
@@ -95,7 +95,7 @@ static int sgx_mmap(struct file *file, struct vm_area_struct *vma)
 		return ret;
 
 	vma->vm_ops = &sgx_vm_ops;
-	vma->vm_flags |= VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP | VM_IO;
+	vm_flags_set(vma, VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP | VM_IO);
 	vma->vm_private_data = encl;
 
 	return 0;
diff --git a/arch/x86/kernel/cpu/sgx/virt.c b/arch/x86/kernel/cpu/sgx/virt.c
index 6a77a14..c3e37ea 100644
--- a/arch/x86/kernel/cpu/sgx/virt.c
+++ b/arch/x86/kernel/cpu/sgx/virt.c
@@ -105,7 +105,7 @@ static int sgx_vepc_mmap(struct file *file, struct vm_area_struct *vma)
 
 	vma->vm_ops = &sgx_vepc_vm_ops;
 	/* Don't copy VMA in fork() */
-	vma->vm_flags |= VM_PFNMAP | VM_IO | VM_DONTDUMP | VM_DONTCOPY;
+	vm_flags_set(vma, VM_PFNMAP | VM_IO | VM_DONTDUMP | VM_DONTCOPY);
 	vma->vm_private_data = vepc;
 
 	return 0;
diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
index 7b0d4ab..6551d62 100644
--- a/arch/x86/mm/fault.c
+++ b/arch/x86/mm/fault.c
@@ -19,6 +19,7 @@
 #include <linux/uaccess.h>		/* faulthandler_disabled()	*/
 #include <linux/efi.h>			/* efi_crash_gracefully_on_page_fault()*/
 #include <linux/mm_types.h>
+#include <linux/mm.h>			/* find_and_lock_vma() */
 
 #include <asm/cpufeature.h>		/* boot_cpu_has, ...		*/
 #include <asm/traps.h>			/* dotraplinkage, ...		*/
@@ -1354,6 +1355,38 @@ void do_user_addr_fault(struct pt_regs *regs,
 	}
 #endif
 
+#ifdef CONFIG_PER_VMA_LOCK
+	if (!(flags & FAULT_FLAG_USER))
+		goto lock_mmap;
+
+	vma = lock_vma_under_rcu(mm, address);
+	if (!vma)
+		goto lock_mmap;
+
+	if (unlikely(access_error(error_code, vma))) {
+		vma_end_read(vma);
+		goto lock_mmap;
+	}
+	fault = handle_mm_fault(vma, address, flags | FAULT_FLAG_VMA_LOCK, regs);
+	vma_end_read(vma);
+
+	if (!(fault & VM_FAULT_RETRY)) {
+		count_vm_vma_lock_event(VMA_LOCK_SUCCESS);
+		goto done;
+	}
+	count_vm_vma_lock_event(VMA_LOCK_RETRY);
+
+	/* Quick path to respond to signals */
+	if (fault_signal_pending(fault, regs)) {
+		if (!user_mode(regs))
+			kernelmode_fixup_or_oops(regs, error_code, address,
+						 SIGBUS, BUS_ADRERR,
+						 ARCH_DEFAULT_PKEY);
+		return;
+	}
+lock_mmap:
+#endif /* CONFIG_PER_VMA_LOCK */
+
 	/*
 	 * Kernel-mode access to the user address space should only occur
 	 * on well-defined single instructions listed in the exception
@@ -1454,6 +1487,9 @@ void do_user_addr_fault(struct pt_regs *regs,
 	}
 
 	mmap_read_unlock(mm);
+#ifdef CONFIG_PER_VMA_LOCK
+done:
+#endif
 	if (likely(!(fault & VM_FAULT_ERROR)))
 		return;
 
diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c
index 0d5ccea..088fabf 100644
--- a/arch/x86/mm/init.c
+++ b/arch/x86/mm/init.c
@@ -113,6 +113,12 @@ static unsigned long min_pfn_mapped;
 static bool __initdata can_use_brk_pgt = true;
 
 /*
+ * Provide a run-time mean of disabling ZONE_DMA32 if it is enabled via
+ * CONFIG_ZONE_DMA32.
+ */
+static bool disable_dma32 __ro_after_init;
+
+/*
  * Pages returned are already directly mapped.
  *
  * Changing that is likely to break Xen, see commit:
@@ -1053,7 +1059,7 @@ void __init zone_sizes_init(void)
 	max_zone_pfns[ZONE_DMA]		= min(MAX_DMA_PFN, max_low_pfn);
 #endif
 #ifdef CONFIG_ZONE_DMA32
-	max_zone_pfns[ZONE_DMA32]	= min(MAX_DMA32_PFN, max_low_pfn);
+	max_zone_pfns[ZONE_DMA32]	= disable_dma32 ? 0 : min(MAX_DMA32_PFN, max_low_pfn);
 #endif
 	max_zone_pfns[ZONE_NORMAL]	= max_low_pfn;
 #ifdef CONFIG_HIGHMEM
@@ -1063,6 +1069,18 @@ void __init zone_sizes_init(void)
 	free_area_init(max_zone_pfns);
 }
 
+static int __init early_disable_dma32(char *buf)
+{
+	if (!buf)
+		return -EINVAL;
+
+	if (!strcmp(buf, "on"))
+		disable_dma32 = true;
+
+	return 0;
+}
+early_param("disable_dma32", early_disable_dma32);
+
 __visible DEFINE_PER_CPU_ALIGNED(struct tlb_state, cpu_tlbstate) = {
 	.loaded_mm = &init_mm,
 	.next_asid = 1,
diff --git a/arch/x86/mm/pat/memtype.c b/arch/x86/mm/pat/memtype.c
index 66a209f..ce425c2b 100644
--- a/arch/x86/mm/pat/memtype.c
+++ b/arch/x86/mm/pat/memtype.c
@@ -1046,7 +1046,7 @@ int track_pfn_remap(struct vm_area_struct *vma, pgprot_t *prot,
 
 		ret = reserve_pfn_range(paddr, size, prot, 0);
 		if (ret == 0 && vma)
-			vma->vm_flags |= VM_PAT;
+			vm_flags_set(vma, VM_PAT);
 		return ret;
 	}
 
@@ -1092,7 +1092,7 @@ void track_pfn_insert(struct vm_area_struct *vma, pgprot_t *prot, pfn_t pfn)
  * can be for the entire vma (in which case pfn, size are zero).
  */
 void untrack_pfn(struct vm_area_struct *vma, unsigned long pfn,
-		 unsigned long size)
+		 unsigned long size, bool mm_wr_locked)
 {
 	resource_size_t paddr;
 	unsigned long prot;
@@ -1111,8 +1111,12 @@ void untrack_pfn(struct vm_area_struct *vma, unsigned long pfn,
 		size = vma->vm_end - vma->vm_start;
 	}
 	free_pfn_range(paddr, size);
-	if (vma)
-		vma->vm_flags &= ~VM_PAT;
+	if (vma) {
+		if (mm_wr_locked)
+			vm_flags_clear(vma, VM_PAT);
+		else
+			__vm_flags_mod(vma, 0, VM_PAT);
+	}
 }
 
 /*
@@ -1122,7 +1126,7 @@ void untrack_pfn(struct vm_area_struct *vma, unsigned long pfn,
  */
 void untrack_pfn_moved(struct vm_area_struct *vma)
 {
-	vma->vm_flags &= ~VM_PAT;
+	vm_flags_clear(vma, VM_PAT);
 }
 
 pgprot_t pgprot_writecombine(pgprot_t prot)
diff --git a/arch/x86/um/mem_32.c b/arch/x86/um/mem_32.c
index cafd01f..29b2203 100644
--- a/arch/x86/um/mem_32.c
+++ b/arch/x86/um/mem_32.c
@@ -16,7 +16,7 @@ static int __init gate_vma_init(void)
 	vma_init(&gate_vma, NULL);
 	gate_vma.vm_start = FIXADDR_USER_START;
 	gate_vma.vm_end = FIXADDR_USER_END;
-	gate_vma.vm_flags = VM_READ | VM_MAYREAD | VM_EXEC | VM_MAYEXEC;
+	vm_flags_init(&gate_vma, VM_READ | VM_MAYREAD | VM_EXEC | VM_MAYEXEC);
 	gate_vma.vm_page_prot = PAGE_READONLY;
 
 	return 0;
diff --git a/block/bdev.c b/block/bdev.c
index d699ecd..87d66d1 100644
--- a/block/bdev.c
+++ b/block/bdev.c
@@ -24,6 +24,7 @@
 #include <linux/pseudo_fs.h>
 #include <linux/uio.h>
 #include <linux/namei.h>
+#include <linux/cleancache.h>
 #include <linux/part_stat.h>
 #include <linux/uaccess.h>
 #include <linux/stat.h>
@@ -86,6 +87,10 @@ void invalidate_bdev(struct block_device *bdev)
 		lru_add_drain_all();	/* make sure all lru add caches are flushed */
 		invalidate_mapping_pages(mapping, 0, -1);
 	}
+	/* 99% of the time, we don't need to flush the cleancache on the bdev.
+	 * But, for the strange corners, lets be cautious
+	 */
+	cleancache_invalidate_inode(mapping);
 }
 EXPORT_SYMBOL(invalidate_bdev);
 
diff --git a/block/bio.c b/block/bio.c
index d5cd825..73a3fd3 100644
--- a/block/bio.c
+++ b/block/bio.c
@@ -264,6 +264,9 @@ void bio_init(struct bio *bio, struct block_device *bdev, struct bio_vec *table,
 #endif
 #ifdef CONFIG_BLK_INLINE_ENCRYPTION
 	bio->bi_crypt_context = NULL;
+#if IS_ENABLED(CONFIG_DM_DEFAULT_KEY)
+	bio->bi_skip_dm_default_key = false;
+#endif
 #endif
 #ifdef CONFIG_BLK_DEV_INTEGRITY
 	bio->bi_integrity = NULL;
diff --git a/block/blk-core.c b/block/blk-core.c
index 24ee778..74656d75 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -58,6 +58,12 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(block_bio_complete);
 EXPORT_TRACEPOINT_SYMBOL_GPL(block_split);
 EXPORT_TRACEPOINT_SYMBOL_GPL(block_unplug);
 EXPORT_TRACEPOINT_SYMBOL_GPL(block_rq_insert);
+EXPORT_TRACEPOINT_SYMBOL_GPL(block_bio_queue);
+EXPORT_TRACEPOINT_SYMBOL_GPL(block_getrq);
+EXPORT_TRACEPOINT_SYMBOL_GPL(block_rq_issue);
+EXPORT_TRACEPOINT_SYMBOL_GPL(block_rq_merge);
+EXPORT_TRACEPOINT_SYMBOL_GPL(block_rq_requeue);
+EXPORT_TRACEPOINT_SYMBOL_GPL(block_rq_complete);
 
 DEFINE_IDA(blk_queue_ida);
 
diff --git a/block/blk-crypto-fallback.c b/block/blk-crypto-fallback.c
index ad9844c..243953d 100644
--- a/block/blk-crypto-fallback.c
+++ b/block/blk-crypto-fallback.c
@@ -87,7 +87,7 @@ static struct bio_set crypto_bio_split;
  * This is the key we set when evicting a keyslot. This *should* be the all 0's
  * key, but AES-XTS rejects that key, so we use some random bytes instead.
  */
-static u8 blank_key[BLK_CRYPTO_MAX_KEY_SIZE];
+static u8 blank_key[BLK_CRYPTO_MAX_STANDARD_KEY_SIZE];
 
 static void blk_crypto_fallback_evict_keyslot(unsigned int slot)
 {
@@ -180,6 +180,8 @@ static struct bio *blk_crypto_fallback_clone_bio(struct bio *bio_src)
 
 	bio_clone_blkg_association(bio, bio_src);
 
+	bio_clone_skip_dm_default_key(bio, bio_src);
+
 	return bio;
 }
 
@@ -539,7 +541,7 @@ static int blk_crypto_fallback_init(void)
 	if (blk_crypto_fallback_inited)
 		return 0;
 
-	get_random_bytes(blank_key, BLK_CRYPTO_MAX_KEY_SIZE);
+	get_random_bytes(blank_key, sizeof(blank_key));
 
 	err = bioset_init(&crypto_bio_split, 64, 0, 0);
 	if (err)
@@ -552,6 +554,7 @@ static int blk_crypto_fallback_init(void)
 
 	profile->ll_ops = blk_crypto_fallback_ll_ops;
 	profile->max_dun_bytes_supported = BLK_CRYPTO_MAX_IV_SIZE;
+	profile->key_types_supported = BLK_CRYPTO_KEY_TYPE_STANDARD;
 
 	/* All blk-crypto modes have a crypto API fallback. */
 	for (i = 0; i < BLK_ENCRYPTION_MODE_MAX; i++)
diff --git a/block/blk-crypto-internal.h b/block/blk-crypto-internal.h
index 8ac5597..79f419e 100644
--- a/block/blk-crypto-internal.h
+++ b/block/blk-crypto-internal.h
@@ -14,6 +14,7 @@ struct blk_crypto_mode {
 	const char *name; /* name of this mode, shown in sysfs */
 	const char *cipher_str; /* crypto API name (for fallback case) */
 	unsigned int keysize; /* key size in bytes */
+	unsigned int security_strength; /* security strength in bytes */
 	unsigned int ivsize; /* iv size in bytes */
 };
 
@@ -21,9 +22,9 @@ extern const struct blk_crypto_mode blk_crypto_modes[];
 
 #ifdef CONFIG_BLK_INLINE_ENCRYPTION
 
-int blk_crypto_sysfs_register(struct request_queue *q);
+int blk_crypto_sysfs_register(struct gendisk *disk);
 
-void blk_crypto_sysfs_unregister(struct request_queue *q);
+void blk_crypto_sysfs_unregister(struct gendisk *disk);
 
 void bio_crypt_dun_increment(u64 dun[BLK_CRYPTO_DUN_ARRAY_SIZE],
 			     unsigned int inc);
@@ -84,12 +85,14 @@ bool __blk_crypto_cfg_supported(struct blk_crypto_profile *profile,
 
 #else /* CONFIG_BLK_INLINE_ENCRYPTION */
 
-static inline int blk_crypto_sysfs_register(struct request_queue *q)
+static inline int blk_crypto_sysfs_register(struct gendisk *disk)
 {
 	return 0;
 }
 
-static inline void blk_crypto_sysfs_unregister(struct request_queue *q) { }
+static inline void blk_crypto_sysfs_unregister(struct gendisk *disk)
+{
+}
 
 static inline bool bio_crypt_rq_ctx_compatible(struct request *rq,
 					       struct bio *bio)
diff --git a/block/blk-crypto-profile.c b/block/blk-crypto-profile.c
index 3290c03..fe55072 100644
--- a/block/blk-crypto-profile.c
+++ b/block/blk-crypto-profile.c
@@ -351,6 +351,8 @@ bool __blk_crypto_cfg_supported(struct blk_crypto_profile *profile,
 		return false;
 	if (profile->max_dun_bytes_supported < cfg->dun_bytes)
 		return false;
+	if (!(profile->key_types_supported & cfg->key_type))
+		return false;
 	return true;
 }
 
@@ -461,6 +463,45 @@ bool blk_crypto_register(struct blk_crypto_profile *profile,
 EXPORT_SYMBOL_GPL(blk_crypto_register);
 
 /**
+ * blk_crypto_derive_sw_secret() - Derive software secret from wrapped key
+ * @bdev: a block device that supports hardware-wrapped keys
+ * @eph_key: the hardware-wrapped key in ephemerally-wrapped form
+ * @eph_key_size: size of @eph_key in bytes
+ * @sw_secret: (output) the software secret
+ *
+ * Given a hardware-wrapped key in ephemerally-wrapped form (the same form that
+ * it is used for I/O), ask the hardware to derive the secret which software can
+ * use for cryptographic tasks other than inline encryption.  This secret is
+ * guaranteed to be cryptographically isolated from the inline encryption key,
+ * i.e. derived with a different KDF context.
+ *
+ * Return: 0 on success, -EOPNOTSUPP if the block device doesn't support
+ *	   hardware-wrapped keys, -EBADMSG if the key isn't a valid
+ *	   hardware-wrapped key, or another -errno code.
+ */
+int blk_crypto_derive_sw_secret(struct block_device *bdev,
+				const u8 *eph_key, size_t eph_key_size,
+				u8 sw_secret[BLK_CRYPTO_SW_SECRET_SIZE])
+{
+	struct blk_crypto_profile *profile =
+		bdev_get_queue(bdev)->crypto_profile;
+	int err;
+
+	if (!profile)
+		return -EOPNOTSUPP;
+	if (!(profile->key_types_supported & BLK_CRYPTO_KEY_TYPE_HW_WRAPPED))
+		return -EOPNOTSUPP;
+	if (!profile->ll_ops.derive_sw_secret)
+		return -EOPNOTSUPP;
+	blk_crypto_hw_enter(profile);
+	err = profile->ll_ops.derive_sw_secret(profile, eph_key, eph_key_size,
+					       sw_secret);
+	blk_crypto_hw_exit(profile);
+	return err;
+}
+EXPORT_SYMBOL_GPL(blk_crypto_derive_sw_secret);
+
+/**
  * blk_crypto_intersect_capabilities() - restrict supported crypto capabilities
  *					 by child device
  * @parent: the crypto profile for the parent device
@@ -483,10 +524,12 @@ void blk_crypto_intersect_capabilities(struct blk_crypto_profile *parent,
 			    child->max_dun_bytes_supported);
 		for (i = 0; i < ARRAY_SIZE(child->modes_supported); i++)
 			parent->modes_supported[i] &= child->modes_supported[i];
+		parent->key_types_supported &= child->key_types_supported;
 	} else {
 		parent->max_dun_bytes_supported = 0;
 		memset(parent->modes_supported, 0,
 		       sizeof(parent->modes_supported));
+		parent->key_types_supported = 0;
 	}
 }
 EXPORT_SYMBOL_GPL(blk_crypto_intersect_capabilities);
@@ -519,6 +562,9 @@ bool blk_crypto_has_capabilities(const struct blk_crypto_profile *target,
 	    target->max_dun_bytes_supported)
 		return false;
 
+	if (reference->key_types_supported & ~target->key_types_supported)
+		return false;
+
 	return true;
 }
 EXPORT_SYMBOL_GPL(blk_crypto_has_capabilities);
@@ -553,5 +599,6 @@ void blk_crypto_update_capabilities(struct blk_crypto_profile *dst,
 	       sizeof(dst->modes_supported));
 
 	dst->max_dun_bytes_supported = src->max_dun_bytes_supported;
+	dst->key_types_supported = src->key_types_supported;
 }
 EXPORT_SYMBOL_GPL(blk_crypto_update_capabilities);
diff --git a/block/blk-crypto-sysfs.c b/block/blk-crypto-sysfs.c
index fd93bd2..e05f145 100644
--- a/block/blk-crypto-sysfs.c
+++ b/block/blk-crypto-sysfs.c
@@ -126,8 +126,9 @@ static struct kobj_type blk_crypto_ktype = {
  * If the request_queue has a blk_crypto_profile, create the "crypto"
  * subdirectory in sysfs (/sys/block/$disk/queue/crypto/).
  */
-int blk_crypto_sysfs_register(struct request_queue *q)
+int blk_crypto_sysfs_register(struct gendisk *disk)
 {
+	struct request_queue *q = disk->queue;
 	struct blk_crypto_kobj *obj;
 	int err;
 
@@ -149,9 +150,9 @@ int blk_crypto_sysfs_register(struct request_queue *q)
 	return 0;
 }
 
-void blk_crypto_sysfs_unregister(struct request_queue *q)
+void blk_crypto_sysfs_unregister(struct gendisk *disk)
 {
-	kobject_put(q->crypto_kobject);
+	kobject_put(disk->queue->crypto_kobject);
 }
 
 static int __init blk_crypto_sysfs_init(void)
diff --git a/block/blk-crypto.c b/block/blk-crypto.c
index 6733286..8940437 100644
--- a/block/blk-crypto.c
+++ b/block/blk-crypto.c
@@ -23,20 +23,30 @@ const struct blk_crypto_mode blk_crypto_modes[] = {
 		.name = "AES-256-XTS",
 		.cipher_str = "xts(aes)",
 		.keysize = 64,
+		.security_strength = 32,
 		.ivsize = 16,
 	},
 	[BLK_ENCRYPTION_MODE_AES_128_CBC_ESSIV] = {
 		.name = "AES-128-CBC-ESSIV",
 		.cipher_str = "essiv(cbc(aes),sha256)",
 		.keysize = 16,
+		.security_strength = 16,
 		.ivsize = 16,
 	},
 	[BLK_ENCRYPTION_MODE_ADIANTUM] = {
 		.name = "Adiantum",
 		.cipher_str = "adiantum(xchacha12,aes)",
 		.keysize = 32,
+		.security_strength = 32,
 		.ivsize = 32,
 	},
+	[BLK_ENCRYPTION_MODE_SM4_XTS] = {
+		.name = "SM4-XTS",
+		.cipher_str = "xts(sm4)",
+		.keysize = 32,
+		.security_strength = 16,
+		.ivsize = 16,
+	},
 };
 
 /*
@@ -70,9 +80,15 @@ static int __init bio_crypt_ctx_init(void)
 	/* This is assumed in various places. */
 	BUILD_BUG_ON(BLK_ENCRYPTION_MODE_INVALID != 0);
 
-	/* Sanity check that no algorithm exceeds the defined limits. */
+	/*
+	 * Validate the crypto mode properties.  This ideally would be done with
+	 * static assertions, but boot-time checks are the next best thing.
+	 */
 	for (i = 0; i < BLK_ENCRYPTION_MODE_MAX; i++) {
-		BUG_ON(blk_crypto_modes[i].keysize > BLK_CRYPTO_MAX_KEY_SIZE);
+		BUG_ON(blk_crypto_modes[i].keysize >
+		       BLK_CRYPTO_MAX_STANDARD_KEY_SIZE);
+		BUG_ON(blk_crypto_modes[i].security_strength >
+		       blk_crypto_modes[i].keysize);
 		BUG_ON(blk_crypto_modes[i].ivsize > BLK_CRYPTO_MAX_IV_SIZE);
 	}
 
@@ -100,6 +116,7 @@ void bio_crypt_set_ctx(struct bio *bio, const struct blk_crypto_key *key,
 
 	bio->bi_crypt_context = bc;
 }
+EXPORT_SYMBOL_GPL(bio_crypt_set_ctx);
 
 void __bio_crypt_free_ctx(struct bio *bio)
 {
@@ -309,8 +326,9 @@ int __blk_crypto_rq_bio_prep(struct request *rq, struct bio *bio,
 /**
  * blk_crypto_init_key() - Prepare a key for use with blk-crypto
  * @blk_key: Pointer to the blk_crypto_key to initialize.
- * @raw_key: Pointer to the raw key. Must be the correct length for the chosen
- *	     @crypto_mode; see blk_crypto_modes[].
+ * @raw_key: the raw bytes of the key
+ * @raw_key_size: size of the raw key in bytes
+ * @key_type: type of the key -- either standard or hardware-wrapped
  * @crypto_mode: identifier for the encryption algorithm to use
  * @dun_bytes: number of bytes that will be used to specify the DUN when this
  *	       key is used
@@ -319,7 +337,9 @@ int __blk_crypto_rq_bio_prep(struct request *rq, struct bio *bio,
  * Return: 0 on success, -errno on failure.  The caller is responsible for
  *	   zeroizing both blk_key and raw_key when done with them.
  */
-int blk_crypto_init_key(struct blk_crypto_key *blk_key, const u8 *raw_key,
+int blk_crypto_init_key(struct blk_crypto_key *blk_key,
+			const u8 *raw_key, size_t raw_key_size,
+			enum blk_crypto_key_type key_type,
 			enum blk_crypto_mode_num crypto_mode,
 			unsigned int dun_bytes,
 			unsigned int data_unit_size)
@@ -332,8 +352,19 @@ int blk_crypto_init_key(struct blk_crypto_key *blk_key, const u8 *raw_key,
 		return -EINVAL;
 
 	mode = &blk_crypto_modes[crypto_mode];
-	if (mode->keysize == 0)
+	switch (key_type) {
+	case BLK_CRYPTO_KEY_TYPE_STANDARD:
+		if (raw_key_size != mode->keysize)
+			return -EINVAL;
+		break;
+	case BLK_CRYPTO_KEY_TYPE_HW_WRAPPED:
+		if (raw_key_size < mode->security_strength ||
+		    raw_key_size > BLK_CRYPTO_MAX_HW_WRAPPED_KEY_SIZE)
+			return -EINVAL;
+		break;
+	default:
 		return -EINVAL;
+	}
 
 	if (dun_bytes == 0 || dun_bytes > mode->ivsize)
 		return -EINVAL;
@@ -344,12 +375,14 @@ int blk_crypto_init_key(struct blk_crypto_key *blk_key, const u8 *raw_key,
 	blk_key->crypto_cfg.crypto_mode = crypto_mode;
 	blk_key->crypto_cfg.dun_bytes = dun_bytes;
 	blk_key->crypto_cfg.data_unit_size = data_unit_size;
+	blk_key->crypto_cfg.key_type = key_type;
 	blk_key->data_unit_size_bits = ilog2(data_unit_size);
-	blk_key->size = mode->keysize;
-	memcpy(blk_key->raw, raw_key, mode->keysize);
+	blk_key->size = raw_key_size;
+	memcpy(blk_key->raw, raw_key, raw_key_size);
 
 	return 0;
 }
+EXPORT_SYMBOL_GPL(blk_crypto_init_key);
 
 bool blk_crypto_config_supported_natively(struct block_device *bdev,
 					  const struct blk_crypto_config *cfg)
@@ -366,8 +399,10 @@ bool blk_crypto_config_supported_natively(struct block_device *bdev,
 bool blk_crypto_config_supported(struct block_device *bdev,
 				 const struct blk_crypto_config *cfg)
 {
-	return IS_ENABLED(CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK) ||
-	       blk_crypto_config_supported_natively(bdev, cfg);
+	if (IS_ENABLED(CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK) &&
+	    cfg->key_type == BLK_CRYPTO_KEY_TYPE_STANDARD)
+		return true;
+	return blk_crypto_config_supported_natively(bdev, cfg);
 }
 
 /**
@@ -390,8 +425,13 @@ int blk_crypto_start_using_key(struct block_device *bdev,
 {
 	if (blk_crypto_config_supported_natively(bdev, &key->crypto_cfg))
 		return 0;
+	if (key->crypto_cfg.key_type != BLK_CRYPTO_KEY_TYPE_STANDARD) {
+		pr_warn_once("tried to use wrapped key, but hardware doesn't support it\n");
+		return -EOPNOTSUPP;
+	}
 	return blk_crypto_fallback_start_using_mode(key->crypto_cfg.crypto_mode);
 }
+EXPORT_SYMBOL_GPL(blk_crypto_start_using_key);
 
 /**
  * blk_crypto_evict_key() - Evict a blk_crypto_key from a block_device
diff --git a/block/blk-mq-tag.c b/block/blk-mq-tag.c
index a80d7c6..6d53948 100644
--- a/block/blk-mq-tag.c
+++ b/block/blk-mq-tag.c
@@ -102,10 +102,6 @@ void __blk_mq_tag_idle(struct blk_mq_hw_ctx *hctx)
 static int __blk_mq_get_tag(struct blk_mq_alloc_data *data,
 			    struct sbitmap_queue *bt)
 {
-	if (!data->q->elevator && !(data->flags & BLK_MQ_REQ_RESERVED) &&
-			!hctx_may_queue(data->hctx, bt))
-		return BLK_MQ_NO_TAG;
-
 	if (data->shallow_depth)
 		return sbitmap_queue_get_shallow(bt, data->shallow_depth);
 	else
diff --git a/block/blk-mq.c b/block/blk-mq.c
index add013d..e6f6099 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -1748,9 +1748,6 @@ static bool __blk_mq_alloc_driver_tag(struct request *rq)
 	if (blk_mq_tag_is_reserved(rq->mq_hctx->sched_tags, rq->internal_tag)) {
 		bt = &rq->mq_hctx->tags->breserved_tags;
 		tag_offset = 0;
-	} else {
-		if (!hctx_may_queue(rq->mq_hctx, bt))
-			return false;
 	}
 
 	tag = __sbitmap_queue_get(bt);
@@ -4055,8 +4052,9 @@ EXPORT_SYMBOL(blk_mq_init_queue);
  * blk_mq_destroy_queue - shutdown a request queue
  * @q: request queue to shutdown
  *
- * This shuts down a request queue allocated by blk_mq_init_queue() and drops
- * the initial reference.  All future requests will failed with -ENODEV.
+ * This shuts down a request queue allocated by blk_mq_init_queue(). All future
+ * requests will be failed with -ENODEV. The caller is responsible for dropping
+ * the reference from blk_mq_init_queue() by calling blk_put_queue().
  *
  * Context: can sleep
  */
@@ -4074,9 +4072,6 @@ void blk_mq_destroy_queue(struct request_queue *q)
 	blk_sync_queue(q);
 	blk_mq_cancel_work_sync(q);
 	blk_mq_exit_queue(q);
-
-	/* @q is and will stay empty, shutdown and put */
-	blk_put_queue(q);
 }
 EXPORT_SYMBOL(blk_mq_destroy_queue);
 
@@ -4093,6 +4088,7 @@ struct gendisk *__blk_mq_alloc_disk(struct blk_mq_tag_set *set, void *queuedata,
 	disk = __alloc_disk_node(q, set->numa_node, lkclass);
 	if (!disk) {
 		blk_mq_destroy_queue(q);
+		blk_put_queue(q);
 		return ERR_PTR(-ENOMEM);
 	}
 	set_bit(GD_OWNS_QUEUE, &disk->state);
diff --git a/block/blk-mq.h b/block/blk-mq.h
index 0b28708..908f830 100644
--- a/block/blk-mq.h
+++ b/block/blk-mq.h
@@ -334,46 +334,6 @@ static inline void blk_mq_free_requests(struct list_head *list)
 	}
 }
 
-/*
- * For shared tag users, we track the number of currently active users
- * and attempt to provide a fair share of the tag depth for each of them.
- */
-static inline bool hctx_may_queue(struct blk_mq_hw_ctx *hctx,
-				  struct sbitmap_queue *bt)
-{
-	unsigned int depth, users;
-
-	if (!hctx || !(hctx->flags & BLK_MQ_F_TAG_QUEUE_SHARED))
-		return true;
-
-	/*
-	 * Don't try dividing an ant
-	 */
-	if (bt->sb.depth == 1)
-		return true;
-
-	if (blk_mq_is_shared_tags(hctx->flags)) {
-		struct request_queue *q = hctx->queue;
-
-		if (!test_bit(QUEUE_FLAG_HCTX_ACTIVE, &q->queue_flags))
-			return true;
-	} else {
-		if (!test_bit(BLK_MQ_S_TAG_ACTIVE, &hctx->state))
-			return true;
-	}
-
-	users = atomic_read(&hctx->tags->active_queues);
-
-	if (!users)
-		return true;
-
-	/*
-	 * Allow at least some tags
-	 */
-	depth = max((bt->sb.depth + users - 1) / users, 4U);
-	return __blk_mq_active_requests(hctx) < depth;
-}
-
 /* run the code block in @dispatch_ops with rcu/srcu read lock held */
 #define __blk_mq_run_dispatch_ops(q, check_sleep, dispatch_ops)	\
 do {								\
diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c
index e71b3b4..bc39225 100644
--- a/block/blk-sysfs.c
+++ b/block/blk-sysfs.c
@@ -838,7 +838,7 @@ int blk_register_queue(struct gendisk *disk)
 			goto put_dev;
 	}
 
-	ret = blk_crypto_sysfs_register(q);
+	ret = blk_crypto_sysfs_register(disk);
 	if (ret)
 		goto put_dev;
 
@@ -915,7 +915,7 @@ void blk_unregister_queue(struct gendisk *disk)
 	 */
 	if (queue_is_mq(q))
 		blk_mq_sysfs_unregister(disk);
-	blk_crypto_sysfs_unregister(q);
+	blk_crypto_sysfs_unregister(disk);
 
 	mutex_lock(&q->sysfs_lock);
 	elv_unregister_queue(q);
diff --git a/block/bsg-lib.c b/block/bsg-lib.c
index d6f5dcd..435c323 100644
--- a/block/bsg-lib.c
+++ b/block/bsg-lib.c
@@ -325,6 +325,7 @@ void bsg_remove_queue(struct request_queue *q)
 
 		bsg_unregister_queue(bset->bd);
 		blk_mq_destroy_queue(q);
+		blk_put_queue(q);
 		blk_mq_free_tag_set(&bset->tag_set);
 		kfree(bset);
 	}
@@ -400,6 +401,7 @@ struct request_queue *bsg_setup_queue(struct device *dev, const char *name,
 	return q;
 out_cleanup_queue:
 	blk_mq_destroy_queue(q);
+	blk_put_queue(q);
 out_queue:
 	blk_mq_free_tag_set(set);
 out_tag_set:
diff --git a/block/elevator.h b/block/elevator.h
index 3f0593b..977265a 100644
--- a/block/elevator.h
+++ b/block/elevator.h
@@ -4,6 +4,7 @@
 
 #include <linux/percpu.h>
 #include <linux/hashtable.h>
+#include <linux/android_kabi.h>
 
 struct io_cq;
 struct elevator_type;
@@ -46,6 +47,11 @@ struct elevator_mq_ops {
 	struct request *(*next_request)(struct request_queue *, struct request *);
 	void (*init_icq)(struct io_cq *);
 	void (*exit_icq)(struct io_cq *);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 #define ELV_NAME_MAX	(16)
@@ -82,6 +88,9 @@ struct elevator_type
 	/* managed by elevator core */
 	char icq_cache_name[ELV_NAME_MAX + 6];	/* elvname + "_io_cq" */
 	struct list_head list;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 #define ELV_HASH_BITS 6
diff --git a/build.config.aarch64 b/build.config.aarch64
new file mode 100644
index 0000000..ac19250
--- /dev/null
+++ b/build.config.aarch64
@@ -0,0 +1,16 @@
+ARCH=arm64
+MAKE_GOALS="
+Image
+modules
+"
+
+FILES="
+arch/arm64/boot/Image
+vmlinux
+System.map
+vmlinux.symvers
+modules.builtin
+modules.builtin.modinfo
+"
+
+NDK_TRIPLE=${AARCH64_NDK_TRIPLE}
diff --git a/build.config.allmodconfig b/build.config.allmodconfig
new file mode 100644
index 0000000..3d443b9
--- /dev/null
+++ b/build.config.allmodconfig
@@ -0,0 +1,18 @@
+DEFCONFIG=allmodconfig
+
+POST_DEFCONFIG_CMDS="update_config"
+function update_config() {
+    ${KERNEL_DIR}/scripts/config --file ${OUT_DIR}/.config \
+         -e UNWINDER_FRAME_POINTER \
+         -d WERROR \
+         -d SAMPLES \
+         -d BPFILTER \
+         -e RANDSTRUCT_NONE \
+         -d RANDSTRUCT_FULL \
+         -d RANDSTRUCT \
+         -d AF_RXRPC \
+         -d AFS_FS \
+
+    (cd ${OUT_DIR} && \
+     make O=${OUT_DIR} $archsubarch CROSS_COMPILE=${CROSS_COMPILE} ${TOOL_ARGS} ${MAKE_ARGS} olddefconfig)
+}
diff --git a/build.config.allmodconfig.aarch64 b/build.config.allmodconfig.aarch64
new file mode 100644
index 0000000..2fbe380
--- /dev/null
+++ b/build.config.allmodconfig.aarch64
@@ -0,0 +1,4 @@
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.common
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.aarch64
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.allmodconfig
+
diff --git a/build.config.allmodconfig.arm b/build.config.allmodconfig.arm
new file mode 100644
index 0000000..e92744a
--- /dev/null
+++ b/build.config.allmodconfig.arm
@@ -0,0 +1,4 @@
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.common
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.arm
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.allmodconfig
+
diff --git a/build.config.allmodconfig.x86_64 b/build.config.allmodconfig.x86_64
new file mode 100644
index 0000000..f06b30c
--- /dev/null
+++ b/build.config.allmodconfig.x86_64
@@ -0,0 +1,4 @@
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.common
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.x86_64
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.allmodconfig
+
diff --git a/build.config.amlogic b/build.config.amlogic
new file mode 100644
index 0000000..97bae1b
--- /dev/null
+++ b/build.config.amlogic
@@ -0,0 +1,38 @@
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.gki.aarch64
+
+DEFCONFIG=amlogic_gki_defconfig
+FRAGMENT_CONFIG=${KERNEL_DIR}/arch/arm64/configs/amlogic_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}"
+
+# needed for DT overlay support
+DTC_FLAGS="-@"
+
+MAKE_GOALS="
+Image
+modules
+Image.lz4
+Image.gz
+dtbs
+"
+
+FILES="${FILES}
+arch/arm64/boot/Image.lz4
+arch/arm64/boot/dts/amlogic/meson-g12a-sei510*.dtb
+arch/arm64/boot/dts/amlogic/meson-sm1-sei610*.dtb
+arch/arm64/boot/dts/amlogic/meson-sm1-khadas-vim3l*.dtb
+arch/arm64/boot/dts/amlogic/meson-g12b-a311d-khadas-vim3*.dtb
+"
+
+#
+# NOTE: Using Image.lz4 in MAKE_GOALS does not work because
+#   kernel build passes legacy option (-l) to lz4 command
+#   and u-boot fails to decompress.  Instead, add custom
+#   command to lz4 compress same options as kernel, but
+#   without the -l.
+#
+EXTRA_CMDS="lz4_compress"
+function lz4_compress() {
+        lz4 -f -12 --favor-decSpeed ${OUT_DIR}/arch/arm64/boot/Image ${OUT_DIR}/arch/arm64/boot/Image.lz4
+}
diff --git a/build.config.arm b/build.config.arm
new file mode 100644
index 0000000..4d6fa4c
--- /dev/null
+++ b/build.config.arm
@@ -0,0 +1,13 @@
+ARCH=arm
+MAKE_GOALS="
+zImage
+modules
+"
+
+FILES="
+arch/arm/boot/zImage
+vmlinux
+System.map
+"
+
+NDK_TRIPLE=${ARM_NDK_TRIPLE}
diff --git a/build.config.common b/build.config.common
new file mode 100644
index 0000000..f9becf2
--- /dev/null
+++ b/build.config.common
@@ -0,0 +1,17 @@
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.constants
+
+KMI_GENERATION=11
+
+LLVM=1
+DEPMOD=depmod
+CLANG_PREBUILT_BIN=prebuilts/clang/host/linux-x86/clang-${CLANG_VERSION}/bin
+BUILDTOOLS_PREBUILT_BIN=build/kernel/build-tools/path/linux-x86
+DTC=${ROOT_DIR}/${BUILDTOOLS_PREBUILT_BIN}/dtc
+
+KCFLAGS="${KCFLAGS} -D__ANDROID_COMMON_KERNEL__"
+EXTRA_CMDS=''
+STOP_SHIP_TRACEPRINTK=1
+IN_KERNEL_MODULES=1
+DO_NOT_STRIP_MODULES=1
+
+HERMETIC_TOOLCHAIN=${HERMETIC_TOOLCHAIN:-1}
diff --git a/build.config.constants b/build.config.constants
new file mode 100644
index 0000000..fa2b849
--- /dev/null
+++ b/build.config.constants
@@ -0,0 +1,5 @@
+BRANCH=android14-6.1
+CLANG_VERSION=r487747c
+AARCH64_NDK_TRIPLE=aarch64-linux-android31
+X86_64_NDK_TRIPLE=x86_64-linux-android31
+ARM_NDK_TRIPLE=arm-linux-androideabi31
diff --git a/build.config.db845c b/build.config.db845c
new file mode 100644
index 0000000..8ad7ae3
--- /dev/null
+++ b/build.config.db845c
@@ -0,0 +1,14 @@
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.common
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.aarch64
+
+BUILD_INITRAMFS=1
+DEFCONFIG=db845c_gki_defconfig
+FRAGMENT_CONFIG=${KERNEL_DIR}/arch/arm64/configs/db845c_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}"
+
+FILES="
+arch/arm64/boot/dts/qcom/sdm845-db845c.dtb
+arch/arm64/boot/dts/qcom/qrb5165-rb5.dtb
+arch/arm64/boot/dts/qcom/sm8450-qrd.dtb
+"
diff --git a/build.config.gki b/build.config.gki
new file mode 100644
index 0000000..4b931d9
--- /dev/null
+++ b/build.config.gki
@@ -0,0 +1,2 @@
+DEFCONFIG=gki_defconfig
+POST_DEFCONFIG_CMDS="check_defconfig"
diff --git a/build.config.gki-debug.aarch64 b/build.config.gki-debug.aarch64
new file mode 100644
index 0000000..c1fe2f0
--- /dev/null
+++ b/build.config.gki-debug.aarch64
@@ -0,0 +1,3 @@
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.gki.aarch64
+TRIM_NONLISTED_KMI=""
+KMI_SYMBOL_LIST_STRICT_MODE=""
diff --git a/build.config.gki-debug.x86_64 b/build.config.gki-debug.x86_64
new file mode 100644
index 0000000..d89b7ad
--- /dev/null
+++ b/build.config.gki-debug.x86_64
@@ -0,0 +1,3 @@
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.gki.x86_64
+TRIM_NONLISTED_KMI=""
+KMI_SYMBOL_LIST_STRICT_MODE=""
diff --git a/build.config.gki.aarch64 b/build.config.gki.aarch64
new file mode 100644
index 0000000..45c5199
--- /dev/null
+++ b/build.config.gki.aarch64
@@ -0,0 +1,22 @@
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.common
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.aarch64
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.gki
+
+FILES="${FILES}
+arch/arm64/boot/Image.lz4
+arch/arm64/boot/Image.gz
+"
+
+BUILD_SYSTEM_DLKM=1
+MODULES_LIST=${ROOT_DIR}/${KERNEL_DIR}/android/gki_system_dlkm_modules
+
+BUILD_GKI_CERTIFICATION_TOOLS=1
+
+BUILD_GKI_ARTIFACTS=1
+BUILD_GKI_BOOT_IMG_SIZE=67108864
+BUILD_GKI_BOOT_IMG_GZ_SIZE=47185920
+BUILD_GKI_BOOT_IMG_LZ4_SIZE=53477376
+
+if [ -n "${GKI_BUILD_CONFIG_FRAGMENT}" ]; then
+source ${GKI_BUILD_CONFIG_FRAGMENT}
+fi
diff --git a/build.config.gki.aarch64.16k b/build.config.gki.aarch64.16k
new file mode 100644
index 0000000..20be95d
--- /dev/null
+++ b/build.config.gki.aarch64.16k
@@ -0,0 +1,5 @@
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.gki.aarch64
+
+DEFCONFIG=16k_gki_defconfig
+PRE_DEFCONFIG_CMDS="mkdir -p \${OUT_DIR}/arch/arm64/configs/ && cat ${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/gki_defconfig ${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/16k_gki.fragment > \${OUT_DIR}/arch/arm64/configs/${DEFCONFIG};"
+POST_DEFCONFIG_CMDS=""
diff --git a/build.config.gki.aarch64.fips140 b/build.config.gki.aarch64.fips140
new file mode 100644
index 0000000..ec493ef
--- /dev/null
+++ b/build.config.gki.aarch64.fips140
@@ -0,0 +1,27 @@
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.common
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.aarch64
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.gki
+
+FILES="
+crypto/fips140.ko
+"
+
+MAKE_GOALS="
+modules
+"
+
+if [ "${LTO}" = "none" ]; then
+	echo "The FIPS140 module needs LTO to be enabled."
+	exit 1
+fi
+
+MODULES_ORDER=android/gki_aarch64_fips140_modules
+KERNEL_DIR=common
+
+DEFCONFIG=fips140_gki_defconfig
+PRE_DEFCONFIG_CMDS="mkdir -p \${OUT_DIR}/arch/arm64/configs/ && KCONFIG_CONFIG=\${OUT_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}/${KERNEL_DIR}/arch/arm64/configs/fips140_gki.fragment"
+POST_DEFCONFIG_CMDS=""
+
+if [ -n "${GKI_BUILD_CONFIG_FRAGMENT}" ]; then
+source ${GKI_BUILD_CONFIG_FRAGMENT}
+fi
diff --git a/build.config.gki.riscv64 b/build.config.gki.riscv64
new file mode 100644
index 0000000..c216a04
--- /dev/null
+++ b/build.config.gki.riscv64
@@ -0,0 +1,25 @@
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.common
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.riscv64
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.gki
+
+FILES="${FILES}
+arch/riscv/boot/Image.lz4
+arch/riscv/boot/Image.gz
+"
+
+BUILD_SYSTEM_DLKM=1
+MODULES_LIST=${ROOT_DIR}/${KERNEL_DIR}/android/gki_system_dlkm_modules
+
+BUILD_GKI_CERTIFICATION_TOOLS=1
+
+BUILD_GKI_ARTIFACTS=1
+BUILD_GKI_BOOT_IMG_SIZE=67108864
+BUILD_GKI_BOOT_IMG_GZ_SIZE=47185920
+BUILD_GKI_BOOT_IMG_LZ4_SIZE=53477376
+
+PRE_DEFCONFIG_CMDS="mkdir -p \${OUT_DIR}/arch/riscv/configs/ && cat ${ROOT_DIR}/${KERNEL_DIR}/arch/riscv/configs/gki_defconfig ${ROOT_DIR}/${KERNEL_DIR}/arch/riscv/configs/64-bit.config ${ROOT_DIR}/${KERNEL_DIR}/arch/riscv/configs/gki.config > \${OUT_DIR}/arch/riscv/configs/${DEFCONFIG};"
+POST_DEFCONFIG_CMDS=""
+
+if [ -n "${GKI_BUILD_CONFIG_FRAGMENT}" ]; then
+source ${GKI_BUILD_CONFIG_FRAGMENT}
+fi
diff --git a/build.config.gki.x86_64 b/build.config.gki.x86_64
new file mode 100644
index 0000000..93f492c
--- /dev/null
+++ b/build.config.gki.x86_64
@@ -0,0 +1,15 @@
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.common
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.x86_64
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.gki
+
+BUILD_SYSTEM_DLKM=1
+MODULES_LIST=${ROOT_DIR}/${KERNEL_DIR}/android/gki_system_dlkm_modules
+
+BUILD_GKI_CERTIFICATION_TOOLS=1
+
+BUILD_GKI_ARTIFACTS=1
+BUILD_GKI_BOOT_IMG_SIZE=67108864
+
+if [ -n "${GKI_BUILD_CONFIG_FRAGMENT}" ]; then
+source ${GKI_BUILD_CONFIG_FRAGMENT}
+fi
diff --git a/build.config.gki_kasan b/build.config.gki_kasan
new file mode 100644
index 0000000..1aca62c
--- /dev/null
+++ b/build.config.gki_kasan
@@ -0,0 +1,22 @@
+DEFCONFIG=gki_defconfig
+POST_DEFCONFIG_CMDS="check_defconfig && update_kasan_config"
+KERNEL_DIR=common
+LTO=none
+
+function update_kasan_config() {
+    ${KERNEL_DIR}/scripts/config --file ${OUT_DIR}/.config \
+         -e CONFIG_KASAN \
+         -e CONFIG_KASAN_INLINE \
+         -e CONFIG_KCOV \
+         -e CONFIG_PANIC_ON_WARN_DEFAULT_ENABLE \
+         -d CONFIG_RANDOMIZE_BASE \
+         -d CONFIG_KASAN_OUTLINE \
+         --set-val CONFIG_FRAME_WARN 0 \
+         -d CFI \
+         -d CFI_PERMISSIVE \
+         -d CFI_CLANG \
+         -d SHADOW_CALL_STACK
+    (cd ${OUT_DIR} && \
+     make ${TOOL_ARGS} O=${OUT_DIR} olddefconfig)
+}
+
diff --git a/build.config.gki_kasan.aarch64 b/build.config.gki_kasan.aarch64
new file mode 100644
index 0000000..9fd2560
--- /dev/null
+++ b/build.config.gki_kasan.aarch64
@@ -0,0 +1,3 @@
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.common
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.aarch64
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.gki_kasan
diff --git a/build.config.gki_kasan.x86_64 b/build.config.gki_kasan.x86_64
new file mode 100644
index 0000000..eec6458
--- /dev/null
+++ b/build.config.gki_kasan.x86_64
@@ -0,0 +1,4 @@
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.common
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.x86_64
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.gki_kasan
+
diff --git a/build.config.gki_kprobes b/build.config.gki_kprobes
new file mode 100644
index 0000000..f1c6cf7
--- /dev/null
+++ b/build.config.gki_kprobes
@@ -0,0 +1,20 @@
+DEFCONFIG=gki_defconfig
+POST_DEFCONFIG_CMDS="check_defconfig && update_kprobes_config"
+function update_kprobes_config() {
+    ${KERNEL_DIR}/scripts/config --file ${OUT_DIR}/.config \
+         -d LTO \
+         -d LTO_CLANG_THIN \
+         -d CFI \
+         -d CFI_PERMISSIVE \
+         -d CFI_CLANG \
+         -e CONFIG_DYNAMIC_FTRACE \
+         -e CONFIG_FUNCTION_TRACER \
+         -e CONFIG_IRQSOFF_TRACER \
+         -e CONFIG_FUNCTION_PROFILER \
+         -e CONFIG_PREEMPT_TRACER \
+         -e CONFIG_CHECKPOINT_RESTORE \
+         -d CONFIG_RANDOMIZE_BASE
+    (cd ${OUT_DIR} && \
+     make ${TOOL_ARGS} O=${OUT_DIR} olddefconfig)
+}
+
diff --git a/build.config.gki_kprobes.aarch64 b/build.config.gki_kprobes.aarch64
new file mode 100644
index 0000000..627c217
--- /dev/null
+++ b/build.config.gki_kprobes.aarch64
@@ -0,0 +1,4 @@
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.common
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.aarch64
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.gki_kprobes
+
diff --git a/build.config.gki_kprobes.x86_64 b/build.config.gki_kprobes.x86_64
new file mode 100644
index 0000000..a1d3da7
--- /dev/null
+++ b/build.config.gki_kprobes.x86_64
@@ -0,0 +1,4 @@
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.common
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.x86_64
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.gki_kprobes
+
diff --git a/build.config.khwasan b/build.config.khwasan
new file mode 100644
index 0000000..c8e0c5e
--- /dev/null
+++ b/build.config.khwasan
@@ -0,0 +1,17 @@
+append_cmd POST_DEFCONFIG_CMDS update_khwasan_config
+
+function update_khwasan_config() {
+  ${KERNEL_DIR}/scripts/config --file ${OUT_DIR}/.config \
+    -e CONFIG_KASAN \
+    -d CONFIG_KASAN_HW_TAGS \
+    -e CONFIG_KASAN_SW_TAGS \
+    -e CONFIG_KASAN_OUTLINE \
+    -e CONFIG_KASAN_PANIC_ON_WARN \
+    -e CONFIG_KCOV \
+    -e CONFIG_PANIC_ON_WARN_DEFAULT_ENABLE \
+    -d CONFIG_RANDOMIZE_BASE \
+    --set-val CONFIG_FRAME_WARN 0 \
+    -d SHADOW_CALL_STACK
+  (cd ${OUT_DIR} && \
+   make O=${OUT_DIR} "${TOOL_ARGS[@]}" ${MAKE_ARGS} olddefconfig)
+}
diff --git a/build.config.riscv64 b/build.config.riscv64
new file mode 100644
index 0000000..0ef054b
--- /dev/null
+++ b/build.config.riscv64
@@ -0,0 +1,14 @@
+ARCH=riscv
+MAKE_GOALS="
+Image
+modules
+"
+
+FILES="
+arch/riscv/boot/Image
+vmlinux
+System.map
+vmlinux.symvers
+modules.builtin
+modules.builtin.modinfo
+"
diff --git a/build.config.rockpi4 b/build.config.rockpi4
new file mode 100644
index 0000000..15c10c3
--- /dev/null
+++ b/build.config.rockpi4
@@ -0,0 +1,18 @@
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.common
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.aarch64
+TRIM_NONLISTED_KMI=""
+KMI_SYMBOL_LIST_STRICT_MODE=""
+
+BUILD_INITRAMFS=1
+LZ4_RAMDISK=1
+DEFCONFIG=rockpi4_gki_defconfig
+FRAGMENT_CONFIG=${KERNEL_DIR}/arch/arm64/configs/rockpi4_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}"
+
+DTS_EXT_DIR=common-modules/virtual-device
+DTC_INCLUDE=${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/boot/dts/rockchip
+
+FILES="${FILES}
+../common-modules/virtual-device/rk3399-rock-pi-4b.dtb
+"
diff --git a/build.config.x86_64 b/build.config.x86_64
new file mode 100644
index 0000000..5577460
--- /dev/null
+++ b/build.config.x86_64
@@ -0,0 +1,16 @@
+ARCH=x86_64
+MAKE_GOALS="
+bzImage
+modules
+"
+
+FILES="
+arch/x86/boot/bzImage
+vmlinux
+System.map
+vmlinux.symvers
+modules.builtin
+modules.builtin.modinfo
+"
+
+NDK_TRIPLE=${X86_64_NDK_TRIPLE}
diff --git a/certs/extract-cert.c b/certs/extract-cert.c
index 8c1fb9a..5c66eda 100644
--- a/certs/extract-cert.c
+++ b/certs/extract-cert.c
@@ -56,6 +56,7 @@ static void display_openssl_errors(int l)
 	}
 }
 
+#ifndef OPENSSL_IS_BORINGSSL
 static void drain_openssl_errors(void)
 {
 	const char *file;
@@ -65,6 +66,7 @@ static void drain_openssl_errors(void)
 		return;
 	while (ERR_get_error_line(&file, &line)) {}
 }
+#endif
 
 #define ERR(cond, fmt, ...)				\
 	do {						\
@@ -119,6 +121,10 @@ int main(int argc, char **argv)
 		fclose(f);
 		exit(0);
 	} else if (!strncmp(cert_src, "pkcs11:", 7)) {
+#ifdef OPENSSL_IS_BORINGSSL
+		ERR(1, "BoringSSL does not support extracting from PKCS#11");
+		exit(1);
+#else
 		ENGINE *e;
 		struct {
 			const char *cert_id;
@@ -141,6 +147,7 @@ int main(int argc, char **argv)
 		ENGINE_ctrl_cmd(e, "LOAD_CERT_CTRL", 0, &parms, NULL, 1);
 		ERR(!parms.cert, "Get X.509 from PKCS#11");
 		write_cert(parms.cert);
+#endif
 	} else {
 		BIO *b;
 		X509 *x509;
diff --git a/crypto/Kconfig b/crypto/Kconfig
index d779667..65f71ac 100644
--- a/crypto/Kconfig
+++ b/crypto/Kconfig
@@ -54,6 +54,31 @@
 	  This option provides the ability to override the FIPS Module Version.
 	  By default the KERNELRELEASE value is used.
 
+config CRYPTO_FIPS140_MOD
+	tristate "Enable FIPS 140 cryptographic module"
+	depends on ARM64 && ARM64_MODULE_PLTS
+	depends on m
+	help
+	  This option enables building a loadable module fips140.ko, which
+	  contains various crypto algorithms that are also built into vmlinux.
+	  At load time, this module overrides the built-in implementations of
+	  these algorithms with its implementations.  It also runs self-tests on
+	  these algorithms and verifies the integrity of its code and data.  If
+	  either of these steps fails, the kernel will panic.
+
+	  This module is intended to be loaded at early boot time in order to
+	  meet FIPS 140 and NIAP FPT_TST_EXT.1 requirements.  It shouldn't be
+	  used if you don't need to meet these requirements.
+
+config CRYPTO_FIPS140_MOD_EVAL_TESTING
+	bool "Enable evaluation testing features in FIPS 140 module"
+	depends on CRYPTO_FIPS140_MOD
+	help
+	  This option adds some features to the FIPS 140 module which are needed
+	  for lab evaluation testing of the module, e.g. support for injecting
+	  errors and support for a userspace interface to some of the module's
+	  services.  This option should not be enabled in production builds.
+
 config CRYPTO_ALGAPI
 	tristate
 	select CRYPTO_ALGAPI2
diff --git a/crypto/Makefile b/crypto/Makefile
index 303b21c..1fa1ea1 100644
--- a/crypto/Makefile
+++ b/crypto/Makefile
@@ -212,3 +212,56 @@
 # Key derivation function
 #
 obj-$(CONFIG_CRYPTO_KDF800108_CTR) += kdf_sp800108.o
+
+ifneq ($(CONFIG_CRYPTO_FIPS140_MOD),)
+
+FIPS140_CFLAGS := -DBUILD_FIPS140_KO -include $(srctree)/crypto/fips140-defs.h
+
+CFLAGS_jitterentropy-fips.o := -O0
+KASAN_SANITIZE_jitterentropy-fips.o = n
+UBSAN_SANITIZE_jitterentropy-fips.o = n
+
+# Compile an extra copy of various crypto algorithms into the fips140 module.
+#
+# Note: the module will still work if some files are removed from here.
+# However, it may affect FIPS certifiability.  Don't remove files from here
+# without considering impact on FIPS certifiability.
+
+crypto-fips-objs := drbg.o ecb.o cbc.o ctr.o cts.o gcm.o xts.o hmac.o cmac.o \
+		    gf128mul.o aes_generic.o lib-crypto-aes.o \
+		    jitterentropy.o jitterentropy-kcapi.o \
+		    sha1_generic.o sha256_generic.o sha512_generic.o \
+		    lib-crypto-memneq.o lib-crypto-sha1.o lib-crypto-sha256.o \
+		    lib-crypto-utils.o
+crypto-fips-objs := $(foreach o,$(crypto-fips-objs),$(o:.o=-fips.o))
+
+# get the arch to add its objects to $(crypto-fips-objs)
+include $(srctree)/arch/$(ARCH)/crypto/Kbuild.fips140
+
+$(obj)/%-fips.o: KBUILD_CFLAGS += $(FIPS140_CFLAGS)
+$(obj)/%-fips.o: $(src)/%.c FORCE
+	$(call if_changed_rule,cc_o_c)
+$(obj)/lib-%-fips.o: $(srctree)/lib/%.c FORCE
+	$(call if_changed_rule,cc_o_c)
+$(obj)/lib-crypto-%-fips.o: $(srctree)/lib/crypto/%.c FORCE
+	$(call if_changed_rule,cc_o_c)
+
+fips140-objs := \
+	fips140-alg-registration.o \
+	fips140-module.o \
+	fips140-refs.o \
+	fips140-selftests.o \
+	$(crypto-fips-objs)
+fips140-$(CONFIG_CRYPTO_FIPS140_MOD_EVAL_TESTING) += \
+	fips140-eval-testing.o
+obj-m += fips140.o
+
+CFLAGS_fips140-alg-registration.o += $(FIPS140_CFLAGS)
+CFLAGS_fips140-module.o += $(FIPS140_CFLAGS)
+CFLAGS_fips140-selftests.o += $(FIPS140_CFLAGS)
+CFLAGS_fips140-eval-testing.o += $(FIPS140_CFLAGS)
+
+hostprogs-always-y := fips140_gen_hmac
+HOSTLDLIBS_fips140_gen_hmac := -lcrypto -lelf
+
+endif
diff --git a/crypto/algapi.c b/crypto/algapi.c
index 8c3a869..60b98d2 100644
--- a/crypto/algapi.c
+++ b/crypto/algapi.c
@@ -222,12 +222,65 @@ void crypto_remove_spawns(struct crypto_alg *alg, struct list_head *list,
 }
 EXPORT_SYMBOL_GPL(crypto_remove_spawns);
 
+static void crypto_alg_finish_registration(struct crypto_alg *alg,
+					   bool fulfill_requests,
+					   struct list_head *algs_to_put)
+{
+	struct crypto_alg *q;
+
+	list_for_each_entry(q, &crypto_alg_list, cra_list) {
+		if (q == alg)
+			continue;
+
+		if (crypto_is_moribund(q))
+			continue;
+
+		if (crypto_is_larval(q)) {
+			struct crypto_larval *larval = (void *)q;
+
+			/*
+			 * Check to see if either our generic name or
+			 * specific name can satisfy the name requested
+			 * by the larval entry q.
+			 */
+			if (strcmp(alg->cra_name, q->cra_name) &&
+			    strcmp(alg->cra_driver_name, q->cra_name))
+				continue;
+
+			if (larval->adult)
+				continue;
+			if ((q->cra_flags ^ alg->cra_flags) & larval->mask)
+				continue;
+
+			if (fulfill_requests && crypto_mod_get(alg))
+				larval->adult = alg;
+			else
+				larval->adult = ERR_PTR(-EAGAIN);
+
+			continue;
+		}
+
+		if (strcmp(alg->cra_name, q->cra_name))
+			continue;
+
+		if (strcmp(alg->cra_driver_name, q->cra_driver_name) &&
+		    q->cra_priority > alg->cra_priority)
+			continue;
+
+		crypto_remove_spawns(q, algs_to_put, alg);
+	}
+
+	crypto_notify(CRYPTO_MSG_ALG_LOADED, alg);
+}
+
 static struct crypto_larval *crypto_alloc_test_larval(struct crypto_alg *alg)
 {
 	struct crypto_larval *larval;
 
-	if (!IS_ENABLED(CONFIG_CRYPTO_MANAGER))
-		return NULL;
+	if (!IS_ENABLED(CONFIG_CRYPTO_MANAGER) ||
+	    IS_ENABLED(CONFIG_CRYPTO_MANAGER_DISABLE_TESTS) ||
+	    (alg->cra_flags & CRYPTO_ALG_INTERNAL))
+		return NULL; /* No self-test needed */
 
 	larval = crypto_larval_alloc(alg->cra_name,
 				     alg->cra_flags | CRYPTO_ALG_TESTED, 0);
@@ -248,7 +301,8 @@ static struct crypto_larval *crypto_alloc_test_larval(struct crypto_alg *alg)
 	return larval;
 }
 
-static struct crypto_larval *__crypto_register_alg(struct crypto_alg *alg)
+static struct crypto_larval *
+__crypto_register_alg(struct crypto_alg *alg, struct list_head *algs_to_put)
 {
 	struct crypto_alg *q;
 	struct crypto_larval *larval;
@@ -259,9 +313,6 @@ static struct crypto_larval *__crypto_register_alg(struct crypto_alg *alg)
 
 	INIT_LIST_HEAD(&alg->cra_users);
 
-	/* No cheating! */
-	alg->cra_flags &= ~CRYPTO_ALG_TESTED;
-
 	ret = -EEXIST;
 
 	list_for_each_entry(q, &crypto_alg_list, cra_list) {
@@ -288,13 +339,18 @@ static struct crypto_larval *__crypto_register_alg(struct crypto_alg *alg)
 
 	list_add(&alg->cra_list, &crypto_alg_list);
 
-	if (larval)
-		list_add(&larval->alg.cra_list, &crypto_alg_list);
-	else
-		alg->cra_flags |= CRYPTO_ALG_TESTED;
-
 	crypto_stats_init(alg);
 
+	if (larval) {
+		/* No cheating! */
+		alg->cra_flags &= ~CRYPTO_ALG_TESTED;
+
+		list_add(&larval->alg.cra_list, &crypto_alg_list);
+	} else {
+		alg->cra_flags |= CRYPTO_ALG_TESTED;
+		crypto_alg_finish_registration(alg, true, algs_to_put);
+	}
+
 out:
 	return larval;
 
@@ -341,7 +397,10 @@ void crypto_alg_tested(const char *name, int err)
 
 	alg->cra_flags |= CRYPTO_ALG_TESTED;
 
-	/* Only satisfy larval waiters if we are the best. */
+	/*
+	 * If a higher-priority implementation of the same algorithm is
+	 * currently being tested, then don't fulfill request larvals.
+	 */
 	best = true;
 	list_for_each_entry(q, &crypto_alg_list, cra_list) {
 		if (crypto_is_moribund(q) || !crypto_is_larval(q))
@@ -356,47 +415,7 @@ void crypto_alg_tested(const char *name, int err)
 		}
 	}
 
-	list_for_each_entry(q, &crypto_alg_list, cra_list) {
-		if (q == alg)
-			continue;
-
-		if (crypto_is_moribund(q))
-			continue;
-
-		if (crypto_is_larval(q)) {
-			struct crypto_larval *larval = (void *)q;
-
-			/*
-			 * Check to see if either our generic name or
-			 * specific name can satisfy the name requested
-			 * by the larval entry q.
-			 */
-			if (strcmp(alg->cra_name, q->cra_name) &&
-			    strcmp(alg->cra_driver_name, q->cra_name))
-				continue;
-
-			if (larval->adult)
-				continue;
-			if ((q->cra_flags ^ alg->cra_flags) & larval->mask)
-				continue;
-
-			if (best && crypto_mod_get(alg))
-				larval->adult = alg;
-			else
-				larval->adult = ERR_PTR(-EAGAIN);
-
-			continue;
-		}
-
-		if (strcmp(alg->cra_name, q->cra_name))
-			continue;
-
-		if (strcmp(alg->cra_driver_name, q->cra_driver_name) &&
-		    q->cra_priority > alg->cra_priority)
-			continue;
-
-		crypto_remove_spawns(q, &list, alg);
-	}
+	crypto_alg_finish_registration(alg, best, &list);
 
 complete:
 	complete_all(&test->completion);
@@ -423,7 +442,8 @@ EXPORT_SYMBOL_GPL(crypto_remove_final);
 int crypto_register_alg(struct crypto_alg *alg)
 {
 	struct crypto_larval *larval;
-	bool test_started;
+	LIST_HEAD(algs_to_put);
+	bool test_started = false;
 	int err;
 
 	alg->cra_flags &= ~CRYPTO_ALG_DEAD;
@@ -432,17 +452,18 @@ int crypto_register_alg(struct crypto_alg *alg)
 		return err;
 
 	down_write(&crypto_alg_sem);
-	larval = __crypto_register_alg(alg);
-	test_started = static_key_enabled(&crypto_boot_test_finished);
-	if (!IS_ERR_OR_NULL(larval))
+	larval = __crypto_register_alg(alg, &algs_to_put);
+	if (!IS_ERR_OR_NULL(larval)) {
+		test_started = crypto_boot_test_finished();
 		larval->test_started = test_started;
+	}
 	up_write(&crypto_alg_sem);
 
-	if (IS_ERR_OR_NULL(larval))
+	if (IS_ERR(larval))
 		return PTR_ERR(larval);
-
 	if (test_started)
 		crypto_wait_for_test(larval);
+	crypto_remove_final(&algs_to_put);
 	return 0;
 }
 EXPORT_SYMBOL_GPL(crypto_register_alg);
@@ -621,6 +642,7 @@ int crypto_register_instance(struct crypto_template *tmpl,
 	struct crypto_larval *larval;
 	struct crypto_spawn *spawn;
 	u32 fips_internal = 0;
+	LIST_HEAD(algs_to_put);
 	int err;
 
 	err = crypto_check_alg(&inst->alg);
@@ -652,7 +674,7 @@ int crypto_register_instance(struct crypto_template *tmpl,
 
 	inst->alg.cra_flags |= (fips_internal & CRYPTO_ALG_FIPS_INTERNAL);
 
-	larval = __crypto_register_alg(&inst->alg);
+	larval = __crypto_register_alg(&inst->alg, &algs_to_put);
 	if (IS_ERR(larval))
 		goto unlock;
 	else if (larval)
@@ -664,15 +686,12 @@ int crypto_register_instance(struct crypto_template *tmpl,
 unlock:
 	up_write(&crypto_alg_sem);
 
-	err = PTR_ERR(larval);
-	if (IS_ERR_OR_NULL(larval))
-		goto err;
-
-	crypto_wait_for_test(larval);
-	err = 0;
-
-err:
-	return err;
+	if (IS_ERR(larval))
+		return PTR_ERR(larval);
+	if (larval)
+		crypto_wait_for_test(larval);
+	crypto_remove_final(&algs_to_put);
+	return 0;
 }
 EXPORT_SYMBOL_GPL(crypto_register_instance);
 
@@ -1239,6 +1258,9 @@ EXPORT_SYMBOL_GPL(crypto_stats_skcipher_decrypt);
 
 static void __init crypto_start_tests(void)
 {
+	if (IS_ENABLED(CONFIG_CRYPTO_MANAGER_DISABLE_TESTS))
+		return;
+
 	for (;;) {
 		struct crypto_larval *larval = NULL;
 		struct crypto_alg *q;
@@ -1272,7 +1294,7 @@ static void __init crypto_start_tests(void)
 		crypto_wait_for_test(larval);
 	}
 
-	static_branch_enable(&crypto_boot_test_finished);
+	set_crypto_boot_test_finished();
 }
 
 static int __init crypto_algapi_init(void)
diff --git a/crypto/algboss.c b/crypto/algboss.c
index eb5fe84..0de1e66 100644
--- a/crypto/algboss.c
+++ b/crypto/algboss.c
@@ -175,18 +175,10 @@ static int cryptomgr_test(void *data)
 {
 	struct crypto_test_param *param = data;
 	u32 type = param->type;
-	int err = 0;
-
-#ifdef CONFIG_CRYPTO_MANAGER_DISABLE_TESTS
-	goto skiptest;
-#endif
-
-	if (type & CRYPTO_ALG_TESTED)
-		goto skiptest;
+	int err;
 
 	err = alg_test(param->driver, param->alg, type, CRYPTO_ALG_TESTED);
 
-skiptest:
 	crypto_alg_tested(param->driver, err);
 
 	kfree(param);
@@ -197,7 +189,9 @@ static int cryptomgr_schedule_test(struct crypto_alg *alg)
 {
 	struct task_struct *thread;
 	struct crypto_test_param *param;
-	u32 type;
+
+	if (IS_ENABLED(CONFIG_CRYPTO_MANAGER_DISABLE_TESTS))
+		return NOTIFY_DONE;
 
 	if (!try_module_get(THIS_MODULE))
 		goto err;
@@ -208,13 +202,7 @@ static int cryptomgr_schedule_test(struct crypto_alg *alg)
 
 	memcpy(param->driver, alg->cra_driver_name, sizeof(param->driver));
 	memcpy(param->alg, alg->cra_name, sizeof(param->alg));
-	type = alg->cra_flags;
-
-	/* Do not test internal algorithms. */
-	if (type & CRYPTO_ALG_INTERNAL)
-		type |= CRYPTO_ALG_TESTED;
-
-	param->type = type;
+	param->type = alg->cra_flags;
 
 	thread = kthread_run(cryptomgr_test, param, "cryptomgr_test");
 	if (IS_ERR(thread))
diff --git a/crypto/api.c b/crypto/api.c
index 64f2d36..b022702 100644
--- a/crypto/api.c
+++ b/crypto/api.c
@@ -31,8 +31,10 @@ EXPORT_SYMBOL_GPL(crypto_alg_sem);
 BLOCKING_NOTIFIER_HEAD(crypto_chain);
 EXPORT_SYMBOL_GPL(crypto_chain);
 
-DEFINE_STATIC_KEY_FALSE(crypto_boot_test_finished);
-EXPORT_SYMBOL_GPL(crypto_boot_test_finished);
+#ifndef CONFIG_CRYPTO_MANAGER_DISABLE_TESTS
+DEFINE_STATIC_KEY_FALSE(__crypto_boot_test_finished);
+EXPORT_SYMBOL_GPL(__crypto_boot_test_finished);
+#endif
 
 static struct crypto_alg *crypto_larval_wait(struct crypto_alg *alg);
 
@@ -172,9 +174,6 @@ void crypto_wait_for_test(struct crypto_larval *larval)
 
 	err = wait_for_completion_killable(&larval->completion);
 	WARN_ON(err);
-	if (!err)
-		crypto_notify(CRYPTO_MSG_ALG_LOADED, larval);
-
 out:
 	crypto_larval_kill(&larval->alg);
 }
@@ -205,7 +204,7 @@ static struct crypto_alg *crypto_larval_wait(struct crypto_alg *alg)
 	struct crypto_larval *larval = (void *)alg;
 	long timeout;
 
-	if (!static_branch_likely(&crypto_boot_test_finished))
+	if (!crypto_boot_test_finished())
 		crypto_start_test(larval);
 
 	timeout = wait_for_completion_killable_timeout(
diff --git a/crypto/fips140-alg-registration.c b/crypto/fips140-alg-registration.c
new file mode 100644
index 0000000..03757f8
--- /dev/null
+++ b/crypto/fips140-alg-registration.c
@@ -0,0 +1,388 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Block crypto operations until tests complete
+ *
+ * Copyright 2021 Google LLC
+ *
+ * This file defines the fips140_crypto_register_*() functions, to which all
+ * calls to crypto_register_*() in the module are redirected.  These functions
+ * override the tfm initialization function of each algorithm to insert a wait
+ * for the module having completed its self-tests and integrity check.
+ *
+ * The exact field that we override depends on the algorithm type.  For
+ * algorithm types that have a strongly-typed initialization function pointer
+ * (e.g. skcipher), we must override that, since cra_init isn't guaranteed to be
+ * called for those despite the field being present in the base struct.  For the
+ * other algorithm types (e.g. "cipher") we must override cra_init.
+ *
+ * All of this applies to both normal algorithms and template instances.
+ *
+ * The purpose of all of this is to meet a FIPS requirement where the module
+ * must not produce any output from cryptographic algorithms until it completes
+ * its tests.  Technically this is impossible, but this solution meets the
+ * intent of the requirement, assuming the user makes a supported sequence of
+ * API calls.  Note that we can't simply run the tests before registering the
+ * algorithms, as the algorithms must be registered in order to run the tests.
+ *
+ * It would be much easier to handle this in the kernel's crypto API framework.
+ * Unfortunately, that was deemed insufficient because the module itself is
+ * required to do the enforcement.  What is *actually* required is still very
+ * vague, but the approach implemented here should meet the requirement.
+ */
+
+/*
+ * This file is the one place in fips140.ko that needs to call the kernel's real
+ * algorithm registration functions, so #undefine all the macros from
+ * fips140-defs.h so that the "fips140_" prefix doesn't automatically get added.
+ */
+#undef aead_register_instance
+#undef ahash_register_instance
+#undef crypto_register_aead
+#undef crypto_register_aeads
+#undef crypto_register_ahash
+#undef crypto_register_ahashes
+#undef crypto_register_alg
+#undef crypto_register_algs
+#undef crypto_register_rng
+#undef crypto_register_rngs
+#undef crypto_register_shash
+#undef crypto_register_shashes
+#undef crypto_register_skcipher
+#undef crypto_register_skciphers
+#undef shash_register_instance
+#undef skcipher_register_instance
+
+#include <crypto/algapi.h>
+#include <crypto/internal/aead.h>
+#include <crypto/internal/hash.h>
+#include <crypto/internal/rng.h>
+#include <crypto/internal/skcipher.h>
+#include <linux/xarray.h>
+
+#include "fips140-module.h"
+
+/* Indicates whether the self-tests and integrity check have completed */
+DECLARE_COMPLETION(fips140_tests_done);
+
+/* The thread running the self-tests and integrity check */
+struct task_struct *fips140_init_thread;
+
+/*
+ * Map from crypto_alg to original initialization function (possibly NULL)
+ *
+ * Note: unregistering an algorithm will leak its map entry, as we don't bother
+ * to remove it.  This should be fine since fips140.ko can't be unloaded.  The
+ * proper solution would be to store the original function pointer in a new
+ * field in 'struct crypto_alg', but that would require kernel support.
+ */
+static DEFINE_XARRAY(fips140_init_func_map);
+
+static bool fips140_ready(void)
+{
+	return completion_done(&fips140_tests_done);
+}
+
+/*
+ * Wait until crypto operations are allowed to proceed.  Return true if the
+ * tests are done, or false if the caller is the thread running the tests so it
+ * is allowed to proceed anyway.
+ */
+static bool fips140_wait_until_ready(struct crypto_alg *alg)
+{
+	if (fips140_ready())
+		return true;
+	/*
+	 * The thread running the tests must not wait.  Since tfms can only be
+	 * allocated in task context, we can reliably determine whether the
+	 * invocation is from that thread or not by checking 'current'.
+	 */
+	if (current == fips140_init_thread)
+		return false;
+
+	pr_info("blocking user of %s until tests complete\n",
+		alg->cra_driver_name);
+	wait_for_completion(&fips140_tests_done);
+	pr_info("tests done, allowing %s to proceed\n", alg->cra_driver_name);
+	return true;
+}
+
+static int fips140_store_init_function(struct crypto_alg *alg, void *func)
+{
+	void *ret;
+
+	/*
+	 * The XArray API requires 4-byte aligned values.  Although function
+	 * pointers in general aren't guaranteed to be 4-byte aligned, it should
+	 * be the case for the platforms this module is used on.
+	 */
+	if (WARN_ON((unsigned long)func & 3))
+		return -EINVAL;
+
+	ret = xa_store(&fips140_init_func_map, (unsigned long)alg, func,
+		       GFP_KERNEL);
+	return xa_err(ret);
+}
+
+/* Get the algorithm's original initialization function (possibly NULL) */
+static void *fips140_load_init_function(struct crypto_alg *alg)
+{
+	return xa_load(&fips140_init_func_map, (unsigned long)alg);
+}
+
+/* tfm initialization function overrides */
+
+static int fips140_alg_init_tfm(struct crypto_tfm *tfm)
+{
+	struct crypto_alg *alg = tfm->__crt_alg;
+	int (*cra_init)(struct crypto_tfm *tfm) =
+		fips140_load_init_function(alg);
+
+	if (fips140_wait_until_ready(alg))
+		WRITE_ONCE(alg->cra_init, cra_init);
+	return cra_init ? cra_init(tfm) : 0;
+}
+
+static int fips140_aead_init_tfm(struct crypto_aead *tfm)
+{
+	struct aead_alg *alg = crypto_aead_alg(tfm);
+	int (*init)(struct crypto_aead *tfm) =
+		fips140_load_init_function(&alg->base);
+
+	if (fips140_wait_until_ready(&alg->base))
+		WRITE_ONCE(alg->init, init);
+	return init ? init(tfm) : 0;
+}
+
+static int fips140_ahash_init_tfm(struct crypto_ahash *tfm)
+{
+	struct hash_alg_common *halg = crypto_hash_alg_common(tfm);
+	struct ahash_alg *alg = container_of(halg, struct ahash_alg, halg);
+	int (*init_tfm)(struct crypto_ahash *tfm) =
+		fips140_load_init_function(&halg->base);
+
+	if (fips140_wait_until_ready(&halg->base))
+		WRITE_ONCE(alg->init_tfm, init_tfm);
+	return init_tfm ? init_tfm(tfm) : 0;
+}
+
+static int fips140_shash_init_tfm(struct crypto_shash *tfm)
+{
+	struct shash_alg *alg = crypto_shash_alg(tfm);
+	int (*init_tfm)(struct crypto_shash *tfm) =
+		fips140_load_init_function(&alg->base);
+
+	if (fips140_wait_until_ready(&alg->base))
+		WRITE_ONCE(alg->init_tfm, init_tfm);
+	return init_tfm ? init_tfm(tfm) : 0;
+}
+
+static int fips140_skcipher_init_tfm(struct crypto_skcipher *tfm)
+{
+	struct skcipher_alg *alg = crypto_skcipher_alg(tfm);
+	int (*init)(struct crypto_skcipher *tfm) =
+		fips140_load_init_function(&alg->base);
+
+	if (fips140_wait_until_ready(&alg->base))
+		WRITE_ONCE(alg->init, init);
+	return init ? init(tfm) : 0;
+}
+
+/* Single algorithm registration */
+
+#define prepare_alg(alg, base_alg, field, wrapper_func)			\
+({									\
+	int err = 0;							\
+									\
+	if (!fips140_ready() && alg->field != wrapper_func) {		\
+		err = fips140_store_init_function(base_alg, alg->field);\
+		if (err == 0)						\
+			alg->field = wrapper_func;			\
+	}								\
+	err;								\
+})
+
+static int fips140_prepare_alg(struct crypto_alg *alg)
+{
+	/*
+	 * Override cra_init.  This is only for algorithm types like cipher and
+	 * rng that don't have a strongly-typed initialization function.
+	 */
+	return prepare_alg(alg, alg, cra_init, fips140_alg_init_tfm);
+}
+
+static int fips140_prepare_aead_alg(struct aead_alg *alg)
+{
+	return prepare_alg(alg, &alg->base, init, fips140_aead_init_tfm);
+}
+
+static int fips140_prepare_ahash_alg(struct ahash_alg *alg)
+{
+	return prepare_alg(alg, &alg->halg.base, init_tfm,
+			   fips140_ahash_init_tfm);
+}
+
+static int fips140_prepare_rng_alg(struct rng_alg *alg)
+{
+	/*
+	 * rng doesn't have a strongly-typed initialization function, so we must
+	 * treat rng algorithms as "generic" algorithms.
+	 */
+	return fips140_prepare_alg(&alg->base);
+}
+
+static int fips140_prepare_shash_alg(struct shash_alg *alg)
+{
+	return prepare_alg(alg, &alg->base, init_tfm, fips140_shash_init_tfm);
+}
+
+static int fips140_prepare_skcipher_alg(struct skcipher_alg *alg)
+{
+	return prepare_alg(alg, &alg->base, init, fips140_skcipher_init_tfm);
+}
+
+int fips140_crypto_register_alg(struct crypto_alg *alg)
+{
+	return fips140_prepare_alg(alg) ?: crypto_register_alg(alg);
+}
+
+int fips140_crypto_register_aead(struct aead_alg *alg)
+{
+	return fips140_prepare_aead_alg(alg) ?: crypto_register_aead(alg);
+}
+
+int fips140_crypto_register_ahash(struct ahash_alg *alg)
+{
+	return fips140_prepare_ahash_alg(alg) ?: crypto_register_ahash(alg);
+}
+
+int fips140_crypto_register_rng(struct rng_alg *alg)
+{
+	return fips140_prepare_rng_alg(alg) ?: crypto_register_rng(alg);
+}
+
+int fips140_crypto_register_shash(struct shash_alg *alg)
+{
+	return fips140_prepare_shash_alg(alg) ?: crypto_register_shash(alg);
+}
+
+int fips140_crypto_register_skcipher(struct skcipher_alg *alg)
+{
+	return fips140_prepare_skcipher_alg(alg) ?:
+		crypto_register_skcipher(alg);
+}
+
+/* Instance registration */
+
+int fips140_aead_register_instance(struct crypto_template *tmpl,
+				   struct aead_instance *inst)
+{
+	return fips140_prepare_aead_alg(&inst->alg) ?:
+		aead_register_instance(tmpl, inst);
+}
+
+int fips140_ahash_register_instance(struct crypto_template *tmpl,
+				    struct ahash_instance *inst)
+{
+	return fips140_prepare_ahash_alg(&inst->alg) ?:
+		ahash_register_instance(tmpl, inst);
+}
+
+int fips140_shash_register_instance(struct crypto_template *tmpl,
+				    struct shash_instance *inst)
+{
+	return fips140_prepare_shash_alg(&inst->alg) ?:
+		shash_register_instance(tmpl, inst);
+}
+
+int fips140_skcipher_register_instance(struct crypto_template *tmpl,
+				       struct skcipher_instance *inst)
+{
+	return fips140_prepare_skcipher_alg(&inst->alg) ?:
+		skcipher_register_instance(tmpl, inst);
+}
+
+/* Bulk algorithm registration */
+
+int fips140_crypto_register_algs(struct crypto_alg *algs, int count)
+{
+	int i;
+	int err;
+
+	for (i = 0; i < count; i++) {
+		err = fips140_prepare_alg(&algs[i]);
+		if (err)
+			return err;
+	}
+
+	return crypto_register_algs(algs, count);
+}
+
+int fips140_crypto_register_aeads(struct aead_alg *algs, int count)
+{
+	int i;
+	int err;
+
+	for (i = 0; i < count; i++) {
+		err = fips140_prepare_aead_alg(&algs[i]);
+		if (err)
+			return err;
+	}
+
+	return crypto_register_aeads(algs, count);
+}
+
+int fips140_crypto_register_ahashes(struct ahash_alg *algs, int count)
+{
+	int i;
+	int err;
+
+	for (i = 0; i < count; i++) {
+		err = fips140_prepare_ahash_alg(&algs[i]);
+		if (err)
+			return err;
+	}
+
+	return crypto_register_ahashes(algs, count);
+}
+
+int fips140_crypto_register_rngs(struct rng_alg *algs, int count)
+{
+	int i;
+	int err;
+
+	for (i = 0; i < count; i++) {
+		err = fips140_prepare_rng_alg(&algs[i]);
+		if (err)
+			return err;
+	}
+
+	return crypto_register_rngs(algs, count);
+}
+
+int fips140_crypto_register_shashes(struct shash_alg *algs, int count)
+{
+	int i;
+	int err;
+
+	for (i = 0; i < count; i++) {
+		err = fips140_prepare_shash_alg(&algs[i]);
+		if (err)
+			return err;
+	}
+
+	return crypto_register_shashes(algs, count);
+}
+
+int fips140_crypto_register_skciphers(struct skcipher_alg *algs, int count)
+{
+	int i;
+	int err;
+
+	for (i = 0; i < count; i++) {
+		err = fips140_prepare_skcipher_alg(&algs[i]);
+		if (err)
+			return err;
+	}
+
+	return crypto_register_skciphers(algs, count);
+}
diff --git a/crypto/fips140-defs.h b/crypto/fips140-defs.h
new file mode 100644
index 0000000..9005f95
--- /dev/null
+++ b/crypto/fips140-defs.h
@@ -0,0 +1,58 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright 2021 Google LLC
+ *
+ * This file is automatically included by all files built into fips140.ko, via
+ * the "-include" compiler flag.
+ */
+
+/*
+ * fips140.ko is built from various unmodified or minimally modified kernel
+ * source files, many of which are normally meant to be buildable into different
+ * modules themselves.  That results in conflicting instances of module_init()
+ * and related macros such as MODULE_LICENSE().
+ *
+ * To solve that, we undefine MODULE to trick the kernel headers into thinking
+ * the code is being compiled as built-in.  That causes module_init() and
+ * 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.
+ */
+#undef MODULE
+
+/*
+ * Defining KBUILD_MODFILE is also required, since the kernel headers expect it
+ * to be defined when code that can be a module is compiled as built-in.
+ */
+#define KBUILD_MODFILE "crypto/fips140"
+
+/*
+ * Disable symbol exports by default.  fips140.ko includes various files that
+ * use EXPORT_SYMBOL*(), but it's unwanted to export any symbols from fips140.ko
+ * except where explicitly needed for FIPS certification reasons.
+ */
+#define __DISABLE_EXPORTS
+
+/*
+ * Redirect all calls to algorithm registration functions to the wrapper
+ * functions defined within the module.
+ */
+#define aead_register_instance		fips140_aead_register_instance
+#define ahash_register_instance		fips140_ahash_register_instance
+#define crypto_register_aead		fips140_crypto_register_aead
+#define crypto_register_aeads		fips140_crypto_register_aeads
+#define crypto_register_ahash		fips140_crypto_register_ahash
+#define crypto_register_ahashes		fips140_crypto_register_ahashes
+#define crypto_register_alg		fips140_crypto_register_alg
+#define crypto_register_algs		fips140_crypto_register_algs
+#define crypto_register_rng		fips140_crypto_register_rng
+#define crypto_register_rngs		fips140_crypto_register_rngs
+#define crypto_register_shash		fips140_crypto_register_shash
+#define crypto_register_shashes		fips140_crypto_register_shashes
+#define crypto_register_skcipher	fips140_crypto_register_skcipher
+#define crypto_register_skciphers	fips140_crypto_register_skciphers
+#define shash_register_instance		fips140_shash_register_instance
+#define skcipher_register_instance	fips140_skcipher_register_instance
diff --git a/crypto/fips140-eval-testing-uapi.h b/crypto/fips140-eval-testing-uapi.h
new file mode 100644
index 0000000..04e6cf6
--- /dev/null
+++ b/crypto/fips140-eval-testing-uapi.h
@@ -0,0 +1,30 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
+
+#ifndef _CRYPTO_FIPS140_EVAL_TESTING_H
+#define _CRYPTO_FIPS140_EVAL_TESTING_H
+
+#include <linux/ioctl.h>
+
+/*
+ * This header defines the ioctls that are available on the fips140 character
+ * device.  These ioctls expose some of the module's services to userspace so
+ * that they can be tested by the FIPS certification lab; this is a required
+ * part of getting a FIPS 140 certification.  These ioctls do not have any other
+ * purpose, and they do not need to be present in production builds.
+ */
+
+/*
+ * Call the fips140_is_approved_service() function.  The argument must be the
+ * service name as a NUL-terminated string.  The return value will be 1 if
+ * fips140_is_approved_service() returned true, or 0 if it returned false.
+ */
+#define FIPS140_IOCTL_IS_APPROVED_SERVICE	_IO('F', 0)
+
+/*
+ * Call the fips140_module_version() function.  The argument must be a pointer
+ * to a buffer of size >= 256 chars.  The NUL-terminated string returned by
+ * fips140_module_version() will be written to this buffer.
+ */
+#define FIPS140_IOCTL_MODULE_VERSION		_IOR('F', 1, char[256])
+
+#endif /* _CRYPTO_FIPS140_EVAL_TESTING_H */
diff --git a/crypto/fips140-eval-testing.c b/crypto/fips140-eval-testing.c
new file mode 100644
index 0000000..ea3cd65
--- /dev/null
+++ b/crypto/fips140-eval-testing.c
@@ -0,0 +1,129 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright 2021 Google LLC
+ *
+ * This file can optionally be built into fips140.ko in order to support certain
+ * types of testing that the FIPS lab has to do to evaluate the module.  It
+ * should not be included in production builds of the module.
+ */
+
+/*
+ * We have to redefine inline to mean always_inline, so that _copy_to_user()
+ * gets inlined.  This is needed for it to be placed into the correct section.
+ * See fips140_copy_to_user().
+ *
+ * We also need to undefine BUILD_FIPS140_KO to allow the use of the code
+ * patching which copy_to_user() requires.
+ */
+#undef inline
+#define inline inline __attribute__((__always_inline__)) __gnu_inline \
+       __inline_maybe_unused notrace
+#undef BUILD_FIPS140_KO
+
+#include <linux/cdev.h>
+#include <linux/fs.h>
+#include <linux/module.h>
+#include <linux/slab.h>
+
+#include "fips140-module.h"
+#include "fips140-eval-testing-uapi.h"
+
+/*
+ * This option allows deliberately failing the self-tests for a particular
+ * algorithm.
+ */
+static char *fips140_fail_selftest;
+module_param_named(fail_selftest, fips140_fail_selftest, charp, 0);
+
+/* This option allows deliberately failing the integrity check. */
+static bool fips140_fail_integrity_check;
+module_param_named(fail_integrity_check, fips140_fail_integrity_check, bool, 0);
+
+static dev_t fips140_devnum;
+static struct cdev fips140_cdev;
+
+/* Inject a self-test failure (via corrupting the result) if requested. */
+void fips140_inject_selftest_failure(const char *impl, u8 *result)
+{
+	if (fips140_fail_selftest && strcmp(impl, fips140_fail_selftest) == 0)
+		result[0] ^= 0xff;
+}
+
+/* Inject an integrity check failure (via corrupting the text) if requested. */
+void fips140_inject_integrity_failure(u8 *textcopy)
+{
+	if (fips140_fail_integrity_check)
+		textcopy[0] ^= 0xff;
+}
+
+static long fips140_ioctl_is_approved_service(unsigned long arg)
+{
+	const char *service_name = strndup_user((const char __user *)arg, 256);
+	long ret;
+
+	if (IS_ERR(service_name))
+		return PTR_ERR(service_name);
+
+	ret = fips140_is_approved_service(service_name);
+
+	kfree(service_name);
+	return ret;
+}
+
+/*
+ * Code in fips140.ko is covered by an integrity check by default, and this
+ * check breaks if copy_to_user() is called.  This is because copy_to_user() is
+ * an inline function that relies on code patching.  However, since this is
+ * "evaluation testing" code which isn't included in the production builds of
+ * fips140.ko, it's acceptable to just exclude it from the integrity check.
+ */
+static noinline unsigned long __section("text.._fips140_unchecked")
+fips140_copy_to_user(void __user *to, const void *from, unsigned long n)
+{
+	return copy_to_user(to, from, n);
+}
+
+static long fips140_ioctl_module_version(unsigned long arg)
+{
+	const char *version = fips140_module_version();
+	size_t len = strlen(version) + 1;
+
+	if (len > 256)
+		return -EOVERFLOW;
+
+	if (fips140_copy_to_user((void __user *)arg, version, len))
+		return -EFAULT;
+
+	return 0;
+}
+
+static long fips140_ioctl(struct file *file, unsigned int cmd,
+			  unsigned long arg)
+{
+	switch (cmd) {
+	case FIPS140_IOCTL_IS_APPROVED_SERVICE:
+		return fips140_ioctl_is_approved_service(arg);
+	case FIPS140_IOCTL_MODULE_VERSION:
+		return fips140_ioctl_module_version(arg);
+	default:
+		return -ENOTTY;
+	}
+}
+
+static const struct file_operations fips140_fops = {
+	.unlocked_ioctl = fips140_ioctl,
+};
+
+bool fips140_eval_testing_init(void)
+{
+	if (alloc_chrdev_region(&fips140_devnum, 1, 1, "fips140") != 0) {
+		pr_err("failed to allocate device number\n");
+		return false;
+	}
+	cdev_init(&fips140_cdev, &fips140_fops);
+	if (cdev_add(&fips140_cdev, fips140_devnum, 1) != 0) {
+		pr_err("failed to add fips140 character device\n");
+		return false;
+	}
+	return true;
+}
diff --git a/crypto/fips140-generated-testvecs.h b/crypto/fips140-generated-testvecs.h
new file mode 100644
index 0000000..d4ccd77
--- /dev/null
+++ b/crypto/fips140-generated-testvecs.h
@@ -0,0 +1,68 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/* Copyright 2021 Google LLC */
+
+/*
+ * This header was automatically generated by gen_fips140_testvecs.py.
+ * Don't edit it directly.
+ */
+
+static const u8 fips_message[32] __initconst =
+	"This is a 32-byte test message.";
+
+static const u8 fips_aes_key[16] __initconst = "128-bit AES key";
+
+static const u8 fips_aes_iv[16] __initconst = "ABCDEFGHIJKLMNOP";
+
+static const u8 fips_aes_cbc_ciphertext[32] __initconst =
+	"\x4c\x3e\xeb\x38\x8d\x1f\x28\xfd\xa2\x3b\xa9\xda\x36\xf2\x99\xe2"
+	"\x84\x84\x66\x37\x0a\x53\x68\x2f\x17\x95\x8d\x7f\xca\x5a\x68\x4e";
+
+static const u8 fips_aes_ecb_ciphertext[32] __initconst =
+	"\xc1\x9d\xe6\xb8\xb2\x90\xff\xfe\xf2\x77\x18\xb0\x55\xd3\xee\xa9"
+	"\xe2\x6f\x4a\x32\x67\xfd\xb7\xa5\x2f\x4b\x6e\x1a\x86\x2b\x6e\x3a";
+
+static const u8 fips_aes_ctr_ciphertext[32] __initconst =
+	"\xed\x06\x2c\xd0\xbc\x48\xd1\x2e\x6a\x4e\x13\xe9\xaa\x17\x40\xca"
+	"\x00\xb4\xaf\x3b\x4f\xee\x73\xd6\x6c\x41\xf6\x4c\x8b\x0d\x6a\x0f";
+
+static const u8 fips_aes_gcm_assoc[22] __initconst = "associated data string";
+
+static const u8 fips_aes_gcm_ciphertext[48] __initconst =
+	"\x37\x88\x3e\x1d\x58\x50\xda\x10\x07\xeb\x52\xdf\xea\x0a\x54\xd4"
+	"\x44\xbf\x88\x2a\xf3\x03\x03\x84\xaf\x8b\x96\xbd\xea\x65\x60\x6f"
+	"\x82\xfa\x51\xf4\x28\xad\x0c\xf1\xce\x0f\x91\xdd\x1a\x4c\x77\x5f";
+
+static const u8 fips_aes_xts_key[32] __initconst =
+	"This is an AES-128-XTS key.";
+
+static const u8 fips_aes_xts_ciphertext[32] __initconst =
+	"\x4f\xf7\x9f\x6c\x00\xa8\x30\xdf\xff\xf3\x25\x9c\xf6\x0b\x1b\xfd"
+	"\x3b\x34\x5e\x67\x7c\xf8\x8b\x68\x9a\xb9\x5a\x89\x51\x51\xbd\x35";
+
+static const u8 fips_aes_cmac_digest[16] __initconst =
+	"\x0c\x05\xda\x64\x51\x0c\x8e\x6c\x86\x52\x46\xa8\x2d\xb1\xfe\x0f";
+
+static const u8 fips_hmac_key[16] __initconst = "128-bit HMAC key";
+
+static const u8 fips_sha1_digest[20] __initconst =
+	"\x1b\x78\xc7\x4b\xd5\xd4\x83\xb1\x58\xc5\x96\x83\x4f\x16\x8d\x15"
+	"\xb4\xaa\x22\x8c";
+
+static const u8 fips_sha256_digest[32] __initconst =
+	"\x4e\x11\x83\x0c\x53\x80\x1e\x5f\x9b\x38\x33\x38\xe8\x74\x43\xb0"
+	"\xc1\x3a\xbe\xbf\x75\xf0\x12\x0f\x21\x33\xf5\x16\x33\xf1\xb0\x81";
+
+static const u8 fips_hmac_sha256_digest[32] __initconst =
+	"\x63\x0e\xb5\x73\x79\xfc\xaf\x5f\x86\xe3\xaf\xf0\xc8\x36\xef\xd5"
+	"\x35\x8d\x40\x25\x38\xb3\x65\x72\x98\xf3\x59\xd8\x1e\x54\x4c\xa1";
+
+static const u8 fips_sha512_digest[64] __initconst =
+	"\x32\xe0\x44\x23\xbd\xe3\xec\x28\xbf\xf1\x34\x11\xd5\xae\xbf\xd5"
+	"\xc0\x8e\xb5\xa1\x04\xef\x2f\x07\x84\xf1\xd9\x83\x0f\x6c\x31\xab"
+	"\xf7\xe7\x57\xfa\xf7\xae\xf0\x6f\xb2\x16\x08\x32\xcf\xc7\xef\x35"
+	"\xb3\x3b\x51\xb9\xfd\xe7\xff\x5e\xb2\x8b\xc6\x79\xe6\x14\x04\xb4";
+
+/*
+ * This header was automatically generated by gen_fips140_testvecs.py.
+ * Don't edit it directly.
+ */
diff --git a/crypto/fips140-module.c b/crypto/fips140-module.c
new file mode 100644
index 0000000..5c2a594
--- /dev/null
+++ b/crypto/fips140-module.c
@@ -0,0 +1,611 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright 2021 Google LLC
+ * Author: Ard Biesheuvel <ardb@google.com>
+ *
+ * This file is the core of fips140.ko, which contains various crypto algorithms
+ * that are also built into vmlinux.  At load time, this module overrides the
+ * built-in implementations of these algorithms with its implementations.  It
+ * also runs self-tests on these algorithms and verifies the integrity of its
+ * code and data.  If either of these steps fails, the kernel will panic.
+ *
+ * This module is intended to be loaded at early boot time in order to meet
+ * FIPS 140 and NIAP FPT_TST_EXT.1 requirements.  It shouldn't be used if you
+ * don't need to meet these requirements.
+ */
+
+/*
+ * Since this .c file is the real entry point of 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 <linux/ctype.h>
+#include <linux/module.h>
+#include <crypto/aead.h>
+#include <crypto/aes.h>
+#include <crypto/hash.h>
+#include <crypto/sha2.h>
+#include <crypto/skcipher.h>
+#include <crypto/rng.h>
+#include <trace/hooks/fips140.h>
+
+#include "fips140-module.h"
+#include "internal.h"
+
+/*
+ * FIPS 140-2 prefers the use of HMAC with a public key over a plain hash.
+ */
+u8 __initdata fips140_integ_hmac_key[] = "The quick brown fox jumps over the lazy dog";
+
+/* this is populated by the build tool */
+u8 __initdata fips140_integ_hmac_digest[SHA256_DIGEST_SIZE];
+
+const u32 __initcall_start_marker __section(".initcalls._start");
+const u32 __initcall_end_marker __section(".initcalls._end");
+
+const u8 __fips140_text_start __section(".text.._start");
+const u8 __fips140_text_end __section(".text.._end");
+
+const u8 __fips140_rodata_start __section(".rodata.._start");
+const u8 __fips140_rodata_end __section(".rodata.._end");
+
+/*
+ * We need this little detour to prevent Clang from detecting out of bounds
+ * accesses to __fips140_text_start and __fips140_rodata_start, which only exist
+ * to delineate the section, and so their sizes are not relevant to us.
+ */
+const u32 *__initcall_start = &__initcall_start_marker;
+
+const u8 *__text_start = &__fips140_text_start;
+const u8 *__rodata_start = &__fips140_rodata_start;
+
+/*
+ * The list of the crypto API algorithms (by cra_name) that will be unregistered
+ * by this module, in preparation for the module registering its own
+ * implementation(s) of them.
+ *
+ * All algorithms that will be declared as FIPS-approved in the module
+ * certification must be listed here, to ensure that the non-FIPS-approved
+ * implementations of these algorithms in the kernel image aren't used.
+ *
+ * For every algorithm in this list, the module should contain all the "same"
+ * implementations that the kernel image does, including the C implementation as
+ * well as any architecture-specific implementations.  This is needed to avoid
+ * performance regressions as well as the possibility of an algorithm being
+ * unavailable on some CPUs.  E.g., "xcbc(aes)" isn't in this list, as the
+ * module doesn't have a C implementation of it (and it won't be FIPS-approved).
+ *
+ * Due to a quirk in the FIPS requirements, "gcm(aes)" isn't actually able to be
+ * FIPS-approved.  However, we otherwise treat it the same as the algorithms
+ * that will be FIPS-approved, and therefore it's included in this list.
+ *
+ * When adding a new algorithm here, make sure to consider whether it needs a
+ * self-test added to fips140_selftests[] as well.
+ */
+static const struct {
+	const char *name;
+	bool approved;
+} fips140_algs_to_replace[] = {
+	{"aes", true},
+
+	{"cmac(aes)", true},
+	{"ecb(aes)", true},
+
+	{"cbc(aes)", true},
+	{"cts(cbc(aes))", true},
+	{"ctr(aes)", true},
+	{"xts(aes)", true},
+	{"gcm(aes)", false},
+
+	{"hmac(sha1)", true},
+	{"hmac(sha224)", true},
+	{"hmac(sha256)", true},
+	{"hmac(sha384)", true},
+	{"hmac(sha512)", true},
+	{"sha1", true},
+	{"sha224", true},
+	{"sha256", true},
+	{"sha384", true},
+	{"sha512", true},
+
+	{"stdrng", true},
+	{"jitterentropy_rng", false},
+};
+
+static bool __init fips140_should_unregister_alg(struct crypto_alg *alg)
+{
+	int i;
+
+	/*
+	 * All software algorithms are synchronous, hardware algorithms must
+	 * be covered by their own FIPS 140 certification.
+	 */
+	if (alg->cra_flags & CRYPTO_ALG_ASYNC)
+		return false;
+
+	for (i = 0; i < ARRAY_SIZE(fips140_algs_to_replace); i++) {
+		if (!strcmp(alg->cra_name, fips140_algs_to_replace[i].name))
+			return true;
+	}
+	return false;
+}
+
+/*
+ * FIPS 140-3 service indicators.  FIPS 140-3 requires that all services
+ * "provide an indicator when the service utilises an approved cryptographic
+ * algorithm, security function or process in an approved manner".  What this
+ * means is very debatable, even with the help of the FIPS 140-3 Implementation
+ * Guidance document.  However, it was decided that a function that takes in an
+ * algorithm name and returns whether that algorithm is approved or not will
+ * meet this requirement.  Note, this relies on some properties of the module:
+ *
+ *   - The module doesn't distinguish between "services" and "algorithms"; its
+ *     services are simply its algorithms.
+ *
+ *   - The status of an approved algorithm is never non-approved, since (a) the
+ *     module doesn't support operating in a non-approved mode, such as a mode
+ *     where the self-tests are skipped; (b) there are no cases where the module
+ *     supports non-approved settings for approved algorithms, e.g.
+ *     non-approved key sizes; and (c) this function isn't available to be
+ *     called until the module_init function has completed, so it's guaranteed
+ *     that the self-tests and integrity check have already passed.
+ *
+ *   - The module does support some non-approved algorithms, so a single static
+ *     indicator ("return true;") would not be acceptable.
+ */
+bool fips140_is_approved_service(const char *name)
+{
+	size_t i;
+
+	for (i = 0; i < ARRAY_SIZE(fips140_algs_to_replace); i++) {
+		if (!strcmp(name, fips140_algs_to_replace[i].name))
+			return fips140_algs_to_replace[i].approved;
+	}
+	return false;
+}
+EXPORT_SYMBOL_GPL(fips140_is_approved_service);
+
+/*
+ * FIPS 140-3 requires that modules provide a "service" that outputs "the name
+ * or module identifier and the versioning information that can be correlated
+ * with a validation record".  This function meets that requirement.
+ *
+ * Note: the module also prints this same information to the kernel log when it
+ * is loaded.  That might meet the requirement by itself.  However, given the
+ * vagueness of what counts as a "service", we provide this function too, just
+ * in case the certification lab or CMVP is happier with an explicit function.
+ *
+ * Note: /sys/modules/fips140/scmversion also provides versioning information
+ * about the module.  However that file just shows the bare git commit ID, so it
+ * probably isn't sufficient to meet the FIPS requirement, which seems to want
+ * the "official" module name and version number used in the FIPS certificate.
+ */
+const char *fips140_module_version(void)
+{
+	return FIPS140_MODULE_NAME " " FIPS140_MODULE_VERSION;
+}
+EXPORT_SYMBOL_GPL(fips140_module_version);
+
+static LIST_HEAD(existing_live_algos);
+
+/*
+ * Release a list of algorithms which have been removed from crypto_alg_list.
+ *
+ * Note that even though the list is a private list, we have to hold
+ * crypto_alg_sem while iterating through it because crypto_unregister_alg() may
+ * run concurrently (as we haven't taken a reference to the algorithms on the
+ * list), and crypto_unregister_alg() will remove the algorithm from whichever
+ * list it happens to be on, while holding crypto_alg_sem.  That's okay, since
+ * in that case crypto_unregister_alg() will handle the crypto_alg_put().
+ */
+static void fips140_remove_final(struct list_head *list)
+{
+	struct crypto_alg *alg;
+	struct crypto_alg *n;
+
+	/*
+	 * We need to take crypto_alg_sem to safely traverse the list (see
+	 * comment above), but we have to drop it when doing each
+	 * crypto_alg_put() as that may take crypto_alg_sem again.
+	 */
+	down_write(&crypto_alg_sem);
+	list_for_each_entry_safe(alg, n, list, cra_list) {
+		list_del_init(&alg->cra_list);
+		up_write(&crypto_alg_sem);
+
+		crypto_alg_put(alg);
+
+		down_write(&crypto_alg_sem);
+	}
+	up_write(&crypto_alg_sem);
+}
+
+static void __init unregister_existing_fips140_algos(void)
+{
+	struct crypto_alg *alg, *tmp;
+	LIST_HEAD(remove_list);
+	LIST_HEAD(spawns);
+
+	down_write(&crypto_alg_sem);
+
+	/*
+	 * Find all registered algorithms that we care about, and move them to a
+	 * private list so that they are no longer exposed via the algo lookup
+	 * API. Subsequently, we will unregister them if they are not in active
+	 * use. If they are, we can't fully unregister them but we can ensure
+	 * that new users won't use them.
+	 */
+	list_for_each_entry_safe(alg, tmp, &crypto_alg_list, cra_list) {
+		if (!fips140_should_unregister_alg(alg))
+			continue;
+		if (refcount_read(&alg->cra_refcnt) == 1) {
+			/*
+			 * This algorithm is not currently in use, but there may
+			 * be template instances holding references to it via
+			 * spawns. So let's tear it down like
+			 * crypto_unregister_alg() would, but without releasing
+			 * the lock, to prevent races with concurrent TFM
+			 * allocations.
+			 */
+			alg->cra_flags |= CRYPTO_ALG_DEAD;
+			list_move(&alg->cra_list, &remove_list);
+			crypto_remove_spawns(alg, &spawns, NULL);
+		} else {
+			/*
+			 * This algorithm is live, i.e. it has TFMs allocated,
+			 * so we can't fully unregister it.  It's not necessary
+			 * to dynamically redirect existing users to the FIPS
+			 * code, given that they can't be relying on FIPS
+			 * certified crypto in the first place.  However, we do
+			 * need to ensure that new users will get the FIPS code.
+			 *
+			 * In most cases, setting alg->cra_priority to 0
+			 * achieves this.  However, that isn't enough for
+			 * algorithms like "hmac(sha256)" that need to be
+			 * instantiated from a template, since existing
+			 * algorithms always take priority over a template being
+			 * instantiated.  Therefore, we move the algorithm to
+			 * a private list so that algorithm lookups won't find
+			 * it anymore.  To further distinguish it from the FIPS
+			 * algorithms, we also append "+orig" to its name.
+			 */
+			pr_info("found already-live algorithm '%s' ('%s')\n",
+				alg->cra_name, alg->cra_driver_name);
+			alg->cra_priority = 0;
+			strlcat(alg->cra_name, "+orig", CRYPTO_MAX_ALG_NAME);
+			strlcat(alg->cra_driver_name, "+orig",
+				CRYPTO_MAX_ALG_NAME);
+			list_move(&alg->cra_list, &existing_live_algos);
+		}
+	}
+	up_write(&crypto_alg_sem);
+
+	fips140_remove_final(&remove_list);
+	fips140_remove_final(&spawns);
+}
+
+static void __init unapply_text_relocations(void *section, int section_size,
+					    const Elf64_Rela *rela, int numrels)
+{
+	while (numrels--) {
+		u32 *place = (u32 *)(section + rela->r_offset);
+
+		BUG_ON(rela->r_offset >= section_size);
+
+		switch (ELF64_R_TYPE(rela->r_info)) {
+#ifdef CONFIG_ARM64
+		case R_AARCH64_ABS32: /* for KCFI */
+			*place = 0;
+			break;
+
+		case R_AARCH64_JUMP26:
+		case R_AARCH64_CALL26:
+			*place &= ~GENMASK(25, 0);
+			break;
+
+		case R_AARCH64_ADR_PREL_LO21:
+		case R_AARCH64_ADR_PREL_PG_HI21:
+		case R_AARCH64_ADR_PREL_PG_HI21_NC:
+			*place &= ~(GENMASK(30, 29) | GENMASK(23, 5));
+			break;
+
+		case R_AARCH64_ADD_ABS_LO12_NC:
+		case R_AARCH64_LDST8_ABS_LO12_NC:
+		case R_AARCH64_LDST16_ABS_LO12_NC:
+		case R_AARCH64_LDST32_ABS_LO12_NC:
+		case R_AARCH64_LDST64_ABS_LO12_NC:
+		case R_AARCH64_LDST128_ABS_LO12_NC:
+			*place &= ~GENMASK(21, 10);
+			break;
+		default:
+			pr_err("unhandled relocation type %llu\n",
+			       ELF64_R_TYPE(rela->r_info));
+			BUG();
+#else
+#error
+#endif
+		}
+		rela++;
+	}
+}
+
+static void __init unapply_rodata_relocations(void *section, int section_size,
+					      const Elf64_Rela *rela, int numrels)
+{
+	while (numrels--) {
+		void *place = section + rela->r_offset;
+
+		BUG_ON(rela->r_offset >= section_size);
+
+		switch (ELF64_R_TYPE(rela->r_info)) {
+#ifdef CONFIG_ARM64
+		case R_AARCH64_ABS64:
+			*(u64 *)place = 0;
+			break;
+		default:
+			pr_err("unhandled relocation type %llu\n",
+			       ELF64_R_TYPE(rela->r_info));
+			BUG();
+#else
+#error
+#endif
+		}
+		rela++;
+	}
+}
+
+extern struct {
+	u32	offset;
+	u32	count;
+} fips140_rela_text, fips140_rela_rodata;
+
+static bool __init check_fips140_module_hmac(void)
+{
+	struct crypto_shash *tfm = NULL;
+	SHASH_DESC_ON_STACK(desc, dontcare);
+	u8 digest[SHA256_DIGEST_SIZE];
+	void *textcopy, *rodatacopy;
+	int textsize, rodatasize;
+	bool ok = false;
+	int err;
+
+	textsize	= &__fips140_text_end - &__fips140_text_start;
+	rodatasize	= &__fips140_rodata_end - &__fips140_rodata_start;
+
+	pr_info("text size  : 0x%x\n", textsize);
+	pr_info("rodata size: 0x%x\n", rodatasize);
+
+	textcopy = kmalloc(textsize + rodatasize, GFP_KERNEL);
+	if (!textcopy) {
+		pr_err("Failed to allocate memory for copy of .text\n");
+		goto out;
+	}
+
+	rodatacopy = textcopy + textsize;
+
+	memcpy(textcopy, __text_start, textsize);
+	memcpy(rodatacopy, __rodata_start, rodatasize);
+
+	// apply the relocations in reverse on the copies of .text  and .rodata
+	unapply_text_relocations(textcopy, textsize,
+				 offset_to_ptr(&fips140_rela_text.offset),
+				 fips140_rela_text.count);
+
+	unapply_rodata_relocations(rodatacopy, rodatasize,
+				  offset_to_ptr(&fips140_rela_rodata.offset),
+				  fips140_rela_rodata.count);
+
+	fips140_inject_integrity_failure(textcopy);
+
+	tfm = crypto_alloc_shash("hmac(sha256)", 0, 0);
+	if (IS_ERR(tfm)) {
+		pr_err("failed to allocate hmac tfm (%ld)\n", PTR_ERR(tfm));
+		tfm = NULL;
+		goto out;
+	}
+	desc->tfm = tfm;
+
+	pr_info("using '%s' for integrity check\n",
+		crypto_shash_driver_name(tfm));
+
+	err = crypto_shash_setkey(tfm, fips140_integ_hmac_key,
+				  strlen(fips140_integ_hmac_key)) ?:
+	      crypto_shash_init(desc) ?:
+	      crypto_shash_update(desc, textcopy, textsize) ?:
+	      crypto_shash_finup(desc, rodatacopy, rodatasize, digest);
+
+	/* Zeroizing this is important; see the comment below. */
+	shash_desc_zero(desc);
+
+	if (err) {
+		pr_err("failed to calculate hmac shash (%d)\n", err);
+		goto out;
+	}
+
+	if (memcmp(digest, fips140_integ_hmac_digest, sizeof(digest))) {
+		pr_err("provided_digest  : %*phN\n", (int)sizeof(digest),
+		       fips140_integ_hmac_digest);
+
+		pr_err("calculated digest: %*phN\n", (int)sizeof(digest),
+		       digest);
+		goto out;
+	}
+	ok = true;
+out:
+	/*
+	 * FIPS 140-3 requires that all "temporary value(s) generated during the
+	 * integrity test" be zeroized (ref: FIPS 140-3 IG 9.7.B).  There is no
+	 * technical reason to do this given that these values are public
+	 * information, but this is the requirement so we follow it.
+	 */
+	crypto_free_shash(tfm);
+	memzero_explicit(digest, sizeof(digest));
+	kfree_sensitive(textcopy);
+	return ok;
+}
+
+static void fips140_sha256(void *p, const u8 *data, unsigned int len, u8 *out,
+			   int *hook_inuse)
+{
+	sha256(data, len, out);
+	*hook_inuse = 1;
+}
+
+static void fips140_aes_expandkey(void *p, struct crypto_aes_ctx *ctx,
+				  const u8 *in_key, unsigned int key_len,
+				  int *err)
+{
+	*err = aes_expandkey(ctx, in_key, key_len);
+}
+
+static void fips140_aes_encrypt(void *priv, const struct crypto_aes_ctx *ctx,
+				u8 *out, const u8 *in, int *hook_inuse)
+{
+	aes_encrypt(ctx, out, in);
+	*hook_inuse = 1;
+}
+
+static void fips140_aes_decrypt(void *priv, const struct crypto_aes_ctx *ctx,
+				u8 *out, const u8 *in, int *hook_inuse)
+{
+	aes_decrypt(ctx, out, in);
+	*hook_inuse = 1;
+}
+
+static bool update_fips140_library_routines(void)
+{
+	int ret;
+
+	ret = register_trace_android_vh_sha256(fips140_sha256, NULL) ?:
+	      register_trace_android_vh_aes_expandkey(fips140_aes_expandkey, NULL) ?:
+	      register_trace_android_vh_aes_encrypt(fips140_aes_encrypt, NULL) ?:
+	      register_trace_android_vh_aes_decrypt(fips140_aes_decrypt, NULL);
+
+	return ret == 0;
+}
+
+/*
+ * Initialize the FIPS 140 module.
+ *
+ * Note: this routine iterates over the contents of the initcall section, which
+ * consists of an array of function pointers that was emitted by the linker
+ * rather than the compiler. This means that these function pointers lack the
+ * usual CFI stubs that the compiler emits when CFI codegen is enabled. So
+ * let's disable CFI locally when handling the initcall array, to avoid
+ * surpises.
+ */
+static int __init __attribute__((__no_sanitize__("cfi")))
+fips140_init(void)
+{
+	const u32 *initcall;
+
+	pr_info("loading " FIPS140_MODULE_NAME " " FIPS140_MODULE_VERSION "\n");
+	fips140_init_thread = current;
+
+	unregister_existing_fips140_algos();
+
+	/* iterate over all init routines present in this module and call them */
+	for (initcall = __initcall_start + 1;
+	     initcall < &__initcall_end_marker;
+	     initcall++) {
+		int (*init)(void) = offset_to_ptr(initcall);
+		int err = init();
+
+		/*
+		 * ENODEV is expected from initcalls that only register
+		 * algorithms that depend on non-present CPU features.  Besides
+		 * that, errors aren't expected here.
+		 */
+		if (err && err != -ENODEV) {
+			pr_err("initcall %ps() failed: %d\n", init, err);
+			goto panic;
+		}
+	}
+
+	if (!fips140_run_selftests())
+		goto panic;
+
+	/*
+	 * It may seem backward to perform the integrity check last, but this
+	 * is intentional: the check itself uses hmac(sha256) which is one of
+	 * the algorithms that are replaced with versions from this module, and
+	 * the integrity check must use the replacement version.  Also, to be
+	 * ready for FIPS 140-3, the integrity check algorithm must have already
+	 * been self-tested.
+	 */
+
+	if (!check_fips140_module_hmac()) {
+		pr_crit("integrity check failed -- giving up!\n");
+		goto panic;
+	}
+	pr_info("integrity check passed\n");
+
+	complete_all(&fips140_tests_done);
+
+	if (!update_fips140_library_routines())
+		goto panic;
+
+	if (!fips140_eval_testing_init())
+		goto panic;
+
+	pr_info("module successfully loaded\n");
+	return 0;
+
+panic:
+	panic("FIPS 140 module load failure");
+}
+
+module_init(fips140_init);
+
+MODULE_IMPORT_NS(CRYPTO_INTERNAL);
+MODULE_LICENSE("GPL v2");
+
+/*
+ * Below are copies of some selected "crypto-related" helper functions that are
+ * used by fips140.ko but are not already built into it, due to them being
+ * defined in a file that cannot easily be built into fips140.ko (e.g.,
+ * crypto/algapi.c) instead of one that can (e.g., most files in lib/).
+ *
+ * There is no hard rule about what needs to be included here, as this is for
+ * FIPS certifiability, not any technical reason.  FIPS modules are supposed to
+ * implement the "crypto" themselves, but to do so they are allowed to call
+ * non-cryptographic helper functions from outside the module.  Something like
+ * memcpy() is "clearly" non-cryptographic.  However, there is is ambiguity
+ * about functions like crypto_inc() which aren't cryptographic by themselves,
+ * but are more closely associated with cryptography than e.g. memcpy().  To err
+ * on the side of caution, we define copies of some selected functions below so
+ * that calls to them from within fips140.ko will remain in fips140.ko.
+ */
+
+static inline void crypto_inc_byte(u8 *a, unsigned int size)
+{
+	u8 *b = (a + size);
+	u8 c;
+
+	for (; size; size--) {
+		c = *--b + 1;
+		*b = c;
+		if (c)
+			break;
+	}
+}
+
+void crypto_inc(u8 *a, unsigned int size)
+{
+	__be32 *b = (__be32 *)(a + size);
+	u32 c;
+
+	if (IS_ENABLED(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS) ||
+	    IS_ALIGNED((unsigned long)b, __alignof__(*b)))
+		for (; size >= 4; size -= 4) {
+			c = be32_to_cpu(*--b) + 1;
+			*b = cpu_to_be32(c);
+			if (likely(c))
+				return;
+		}
+
+	crypto_inc_byte(a, size);
+}
diff --git a/crypto/fips140-module.h b/crypto/fips140-module.h
new file mode 100644
index 0000000..a2a6319
--- /dev/null
+++ b/crypto/fips140-module.h
@@ -0,0 +1,50 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright 2021 Google LLC
+ */
+
+#ifndef _CRYPTO_FIPS140_MODULE_H
+#define _CRYPTO_FIPS140_MODULE_H
+
+#include <linux/completion.h>
+#include <linux/module.h>
+#include <generated/utsrelease.h>
+
+#undef pr_fmt
+#define pr_fmt(fmt) "fips140: " fmt
+
+/*
+ * This is the name and version number of the module that are shown on the FIPS
+ * certificate.
+ */
+#define FIPS140_MODULE_NAME "Android Kernel Cryptographic Module"
+#define FIPS140_MODULE_VERSION UTS_RELEASE
+
+/* fips140-eval-testing.c */
+#ifdef CONFIG_CRYPTO_FIPS140_MOD_EVAL_TESTING
+void fips140_inject_selftest_failure(const char *impl, u8 *result);
+void fips140_inject_integrity_failure(u8 *textcopy);
+bool fips140_eval_testing_init(void);
+#else
+static inline void fips140_inject_selftest_failure(const char *impl, u8 *result)
+{
+}
+static inline void fips140_inject_integrity_failure(u8 *textcopy)
+{
+}
+static inline bool fips140_eval_testing_init(void)
+{
+	return true;
+}
+#endif /* !CONFIG_CRYPTO_FIPS140_MOD_EVAL_TESTING */
+
+/* fips140-module.c */
+extern struct completion fips140_tests_done;
+extern struct task_struct *fips140_init_thread;
+bool fips140_is_approved_service(const char *name);
+const char *fips140_module_version(void);
+
+/* fips140-selftests.c */
+bool __init __must_check fips140_run_selftests(void);
+
+#endif /* _CRYPTO_FIPS140_MODULE_H */
diff --git a/crypto/fips140-refs.S b/crypto/fips140-refs.S
new file mode 100644
index 0000000..fcbd527
--- /dev/null
+++ b/crypto/fips140-refs.S
@@ -0,0 +1,34 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright 2021 Google LLC
+ * Author: Ard Biesheuvel <ardb@google.com>
+ *
+ * This file contains the variable definitions that will be used by the FIPS140
+ * s/w module to access the RELA sections in the ELF image. These are used to
+ * apply the relocations applied by the module loader in reverse, so that we
+ * can reconstruct the image that was used to derive the HMAC used by the
+ * integrity check.
+ *
+ * The first .long of each entry will be populated by the module loader based
+ * on the actual placement of the respective RELA section in memory. The second
+ * .long carries the RELA entry count, and is populated by the host tool that
+ * also generates the HMAC of the contents of .text and .rodata.
+ */
+
+#include <linux/linkage.h>
+#include <asm/assembler.h>
+
+	.section	".init.rodata", "a"
+
+	.align	2
+	.globl	fips140_rela_text
+fips140_rela_text:
+	.weak	__sec_rela_text
+	.long	__sec_rela_text - .
+	.long	0
+
+	.globl	fips140_rela_rodata
+fips140_rela_rodata:
+	.weak	__sec_rela_rodata
+	.long	__sec_rela_rodata - .
+	.long	0
diff --git a/crypto/fips140-selftests.c b/crypto/fips140-selftests.c
new file mode 100644
index 0000000..9663b1a
--- /dev/null
+++ b/crypto/fips140-selftests.c
@@ -0,0 +1,998 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright 2021 Google LLC
+ *
+ * Authors: Elena Petrova <lenaptr@google.com>,
+ *          Eric Biggers <ebiggers@google.com>
+ *
+ * Self-tests of fips140.ko cryptographic functionality.  These are run at
+ * module load time to fulfill FIPS 140 and NIAP FPT_TST_EXT.1 requirements.
+ *
+ * The actual requirements for these self-tests are somewhat vague, but
+ * section 9 ("Self-Tests") of the FIPS 140-2 Implementation Guidance document
+ * (https://csrc.nist.gov/csrc/media/projects/cryptographic-module-validation-program/documents/fips140-2/fips1402ig.pdf)
+ * is somewhat helpful.  Basically, all implementations of all FIPS approved
+ * algorithms (including modes of operation) must be tested.  However:
+ *
+ *   - There are provisions for skipping tests that are already sufficiently
+ *     covered by other tests.  E.g., HMAC-SHA256 may cover SHA-256.
+ *
+ *   - Only one test vector is required per algorithm, and it can be generated
+ *     by any known-good implementation or taken from any official document.
+ *
+ *   - For ciphers, both encryption and decryption must be tested.
+ *
+ *   - Only one key size per algorithm needs to be tested.
+ *
+ * There is some ambiguity about whether all implementations of each algorithm
+ * must be tested, or whether it is sufficient to test just the highest priority
+ * implementation.  To be safe we test all implementations, except ones that can
+ * be excluded by one of the rules above.
+ *
+ * See fips140_selftests[] for the list of tests we've selected.  Currently, all
+ * our test vectors except the AES-CBC-CTS and DRBG ones were generated by the
+ * script tools/crypto/gen_fips140_testvecs.py, using the known-good
+ * implementations in the Python packages hashlib, pycryptodome, and
+ * cryptography.
+ *
+ * Note that we don't reuse the upstream crypto API's self-tests
+ * (crypto/testmgr.{c,h}), for several reasons:
+ *
+ *   - To meet FIPS requirements, the self-tests must be located within the FIPS
+ *     module boundary (fips140.ko).  But testmgr is integrated into the crypto
+ *     API framework and can't be extracted into the module.
+ *
+ *   - testmgr is much more heavyweight than required for FIPS and NIAP; it
+ *     tests more algorithms and does more tests per algorithm, as it's meant to
+ *     do proper testing and not just meet certification requirements.  We need
+ *     tests that can run with minimal overhead on every boot-up.
+ *
+ *   - Despite being more heavyweight in general, testmgr doesn't test the
+ *     SHA-256 and AES library APIs, despite that being needed here.
+ */
+#include <crypto/aead.h>
+#include <crypto/aes.h>
+#include <crypto/drbg.h>
+#include <crypto/hash.h>
+#include <crypto/rng.h>
+#include <crypto/sha2.h>
+#include <crypto/skcipher.h>
+
+#include "fips140-module.h"
+
+/* Test vector for an AEAD algorithm */
+struct aead_testvec {
+	const u8 *key;
+	size_t key_size;
+	const u8 *iv;
+	size_t iv_size;
+	const u8 *assoc;
+	size_t assoc_size;
+	const u8 *plaintext;
+	size_t plaintext_size;
+	const u8 *ciphertext;
+	size_t ciphertext_size;
+};
+
+/* Test vector for a length-preserving encryption algorithm */
+struct skcipher_testvec {
+	const u8 *key;
+	size_t key_size;
+	const u8 *iv;
+	size_t iv_size;
+	const u8 *plaintext;
+	const u8 *ciphertext;
+	size_t message_size;
+};
+
+/* Test vector for a hash algorithm */
+struct hash_testvec {
+	const u8 *key;
+	size_t key_size;
+	const u8 *message;
+	size_t message_size;
+	const u8 *digest;
+	size_t digest_size;
+};
+
+/* Test vector for a DRBG algorithm */
+struct drbg_testvec {
+	const u8 *entropy;
+	size_t entropy_size;
+	const u8 *pers;
+	size_t pers_size;
+	const u8 *entpr_a;
+	const u8 *entpr_b;
+	size_t entpr_size;
+	const u8 *add_a;
+	const u8 *add_b;
+	size_t add_size;
+	const u8 *output;
+	size_t out_size;
+};
+
+struct fips_test {
+	/* The name of the algorithm, in crypto API syntax */
+	const char *alg;
+
+	/*
+	 * The optional list of implementations to test.  @func will be called
+	 * once per implementation, or once with @alg if this list is empty.
+	 * The implementation names must be given in crypto API syntax, or in
+	 * the case of a library implementation should have "-lib" appended.
+	 */
+	const char *impls[8];
+
+	/*
+	 * The test function.  It should execute a known-answer test on an
+	 * algorithm implementation, using the below test vector.
+	 */
+	int __must_check (*func)(const struct fips_test *test,
+				 const char *impl);
+
+	/* The test vector, with a format specific to the type of algorithm */
+	union {
+		struct aead_testvec aead;
+		struct skcipher_testvec skcipher;
+		struct hash_testvec hash;
+		struct drbg_testvec drbg;
+	};
+};
+
+/* Maximum IV size (in bytes) among any algorithm tested here */
+#define MAX_IV_SIZE	16
+
+static int __init __must_check
+fips_check_result(u8 *result, const u8 *expected_result, size_t result_size,
+		  const char *impl, const char *operation)
+{
+	fips140_inject_selftest_failure(impl, result);
+	if (memcmp(result, expected_result, result_size) != 0) {
+		pr_err("wrong result from %s %s\n", impl, operation);
+		return -EBADMSG;
+	}
+	return 0;
+}
+
+/*
+ * None of the algorithms should be ASYNC, as the FIPS module doesn't register
+ * any ASYNC algorithms.  (The ASYNC flag is only declared by hardware
+ * algorithms, which would need their own FIPS certification.)
+ *
+ * Ideally we would verify alg->cra_module == THIS_MODULE here as well, but that
+ * doesn't work because the files are compiled as built-in code.
+ */
+static int __init __must_check
+fips_validate_alg(const struct crypto_alg *alg)
+{
+	if (alg->cra_flags & CRYPTO_ALG_ASYNC) {
+		pr_err("unexpectedly got async implementation of %s (%s)\n",
+		       alg->cra_name, alg->cra_driver_name);
+		return -EINVAL;
+	}
+	return 0;
+}
+
+static int __init __must_check
+fips_handle_alloc_tfm_error(const char *impl, int err)
+{
+	if (err == -ENOENT) {
+		/*
+		 * The requested implementation of the algorithm wasn't found.
+		 * This is expected if the CPU lacks a feature the
+		 * implementation needs, such as the ARMv8 Crypto Extensions.
+		 *
+		 * When this happens, the implementation isn't available for
+		 * use, so we can't test it, nor do we need to.  So we just skip
+		 * the test.
+		 */
+		pr_info("%s is unavailable (no CPU support?), skipping testing it\n",
+			impl);
+		return 0;
+	}
+	pr_err("failed to allocate %s tfm: %d\n", impl, err);
+	return err;
+}
+
+static int __init __must_check
+fips_test_aes_library(const struct fips_test *test, const char *impl)
+{
+	const struct skcipher_testvec *vec = &test->skcipher;
+	struct crypto_aes_ctx ctx;
+	u8 block[AES_BLOCK_SIZE];
+	int err;
+
+	if (WARN_ON(vec->message_size != AES_BLOCK_SIZE))
+		return -EINVAL;
+
+	err = aes_expandkey(&ctx, vec->key, vec->key_size);
+	if (err) {
+		pr_err("aes_expandkey() failed: %d\n", err);
+		return err;
+	}
+	aes_encrypt(&ctx, block, vec->plaintext);
+	err = fips_check_result(block, vec->ciphertext, AES_BLOCK_SIZE,
+				impl, "encryption");
+	if (err)
+		return err;
+	aes_decrypt(&ctx, block, block);
+	return fips_check_result(block, vec->plaintext, AES_BLOCK_SIZE,
+				 impl, "decryption");
+}
+
+/* Test a length-preserving symmetric cipher using the crypto_skcipher API. */
+static int __init __must_check
+fips_test_skcipher(const struct fips_test *test, const char *impl)
+{
+	const struct skcipher_testvec *vec = &test->skcipher;
+	struct crypto_skcipher *tfm;
+	struct skcipher_request *req = NULL;
+	u8 *message = NULL;
+	struct scatterlist sg;
+	u8 iv[MAX_IV_SIZE];
+	int err;
+
+	if (WARN_ON(vec->iv_size > MAX_IV_SIZE))
+		return -EINVAL;
+	if (WARN_ON(vec->message_size <= 0))
+		return -EINVAL;
+
+	tfm = crypto_alloc_skcipher(impl, 0, 0);
+	if (IS_ERR(tfm))
+		return fips_handle_alloc_tfm_error(impl, PTR_ERR(tfm));
+	err = fips_validate_alg(&crypto_skcipher_alg(tfm)->base);
+	if (err)
+		goto out;
+	if (crypto_skcipher_ivsize(tfm) != vec->iv_size) {
+		pr_err("%s has wrong IV size\n", impl);
+		err = -EINVAL;
+		goto out;
+	}
+
+	req = skcipher_request_alloc(tfm, GFP_KERNEL);
+	message = kmemdup(vec->plaintext, vec->message_size, GFP_KERNEL);
+	if (!req || !message) {
+		err = -ENOMEM;
+		goto out;
+	}
+	sg_init_one(&sg, message, vec->message_size);
+
+	skcipher_request_set_callback(req, CRYPTO_TFM_REQ_MAY_SLEEP,
+				      NULL, NULL);
+	skcipher_request_set_crypt(req, &sg, &sg, vec->message_size, iv);
+
+	err = crypto_skcipher_setkey(tfm, vec->key, vec->key_size);
+	if (err) {
+		pr_err("failed to set %s key: %d\n", impl, err);
+		goto out;
+	}
+
+	/* Encrypt the plaintext, then verify the resulting ciphertext. */
+	memcpy(iv, vec->iv, vec->iv_size);
+	err = crypto_skcipher_encrypt(req);
+	if (err) {
+		pr_err("%s encryption failed: %d\n", impl, err);
+		goto out;
+	}
+	err = fips_check_result(message, vec->ciphertext, vec->message_size,
+				impl, "encryption");
+	if (err)
+		goto out;
+
+	/* Decrypt the ciphertext, then verify the resulting plaintext. */
+	memcpy(iv, vec->iv, vec->iv_size);
+	err = crypto_skcipher_decrypt(req);
+	if (err) {
+		pr_err("%s decryption failed: %d\n", impl, err);
+		goto out;
+	}
+	err = fips_check_result(message, vec->plaintext, vec->message_size,
+				impl, "decryption");
+out:
+	kfree(message);
+	skcipher_request_free(req);
+	crypto_free_skcipher(tfm);
+	return err;
+}
+
+/* Test an AEAD using the crypto_aead API. */
+static int __init __must_check
+fips_test_aead(const struct fips_test *test, const char *impl)
+{
+	const struct aead_testvec *vec = &test->aead;
+	const int tag_size = vec->ciphertext_size - vec->plaintext_size;
+	struct crypto_aead *tfm;
+	struct aead_request *req = NULL;
+	u8 *assoc = NULL;
+	u8 *message = NULL;
+	struct scatterlist sg[2];
+	int sg_idx = 0;
+	u8 iv[MAX_IV_SIZE];
+	int err;
+
+	if (WARN_ON(vec->iv_size > MAX_IV_SIZE))
+		return -EINVAL;
+	if (WARN_ON(vec->ciphertext_size <= vec->plaintext_size))
+		return -EINVAL;
+
+	tfm = crypto_alloc_aead(impl, 0, 0);
+	if (IS_ERR(tfm))
+		return fips_handle_alloc_tfm_error(impl, PTR_ERR(tfm));
+	err = fips_validate_alg(&crypto_aead_alg(tfm)->base);
+	if (err)
+		goto out;
+	if (crypto_aead_ivsize(tfm) != vec->iv_size) {
+		pr_err("%s has wrong IV size\n", impl);
+		err = -EINVAL;
+		goto out;
+	}
+
+	req = aead_request_alloc(tfm, GFP_KERNEL);
+	assoc = kmemdup(vec->assoc, vec->assoc_size, GFP_KERNEL);
+	message = kzalloc(vec->ciphertext_size, GFP_KERNEL);
+	if (!req || !assoc || !message) {
+		err = -ENOMEM;
+		goto out;
+	}
+	memcpy(message, vec->plaintext, vec->plaintext_size);
+
+	sg_init_table(sg, ARRAY_SIZE(sg));
+	if (vec->assoc_size)
+		sg_set_buf(&sg[sg_idx++], assoc, vec->assoc_size);
+	sg_set_buf(&sg[sg_idx++], message, vec->ciphertext_size);
+
+	aead_request_set_ad(req, vec->assoc_size);
+	aead_request_set_callback(req, CRYPTO_TFM_REQ_MAY_SLEEP, NULL, NULL);
+
+	err = crypto_aead_setkey(tfm, vec->key, vec->key_size);
+	if (err) {
+		pr_err("failed to set %s key: %d\n", impl, err);
+		goto out;
+	}
+
+	err = crypto_aead_setauthsize(tfm, tag_size);
+	if (err) {
+		pr_err("failed to set %s authentication tag size: %d\n",
+		       impl, err);
+		goto out;
+	}
+
+	/*
+	 * Encrypt the plaintext, then verify the resulting ciphertext (which
+	 * includes the authentication tag).
+	 */
+	memcpy(iv, vec->iv, vec->iv_size);
+	aead_request_set_crypt(req, sg, sg, vec->plaintext_size, iv);
+	err = crypto_aead_encrypt(req);
+	if (err) {
+		pr_err("%s encryption failed: %d\n", impl, err);
+		goto out;
+	}
+	err = fips_check_result(message, vec->ciphertext, vec->ciphertext_size,
+				impl, "encryption");
+	if (err)
+		goto out;
+
+	/*
+	 * Decrypt the ciphertext (which includes the authentication tag), then
+	 * verify the resulting plaintext.
+	 */
+	memcpy(iv, vec->iv, vec->iv_size);
+	aead_request_set_crypt(req, sg, sg, vec->ciphertext_size, iv);
+	err = crypto_aead_decrypt(req);
+	if (err) {
+		pr_err("%s decryption failed: %d\n", impl, err);
+		goto out;
+	}
+	err = fips_check_result(message, vec->plaintext, vec->plaintext_size,
+				impl, "decryption");
+out:
+	kfree(message);
+	kfree(assoc);
+	aead_request_free(req);
+	crypto_free_aead(tfm);
+	return err;
+}
+
+/*
+ * Test a hash algorithm using the crypto_shash API.
+ *
+ * Note that we don't need to test the crypto_ahash API too, since none of the
+ * hash algorithms in the FIPS module have the ASYNC flag, and thus there will
+ * be no hash algorithms that can be accessed only through crypto_ahash.
+ */
+static int __init __must_check
+fips_test_hash(const struct fips_test *test, const char *impl)
+{
+	const struct hash_testvec *vec = &test->hash;
+	struct crypto_shash *tfm;
+	u8 digest[HASH_MAX_DIGESTSIZE];
+	int err;
+
+	if (WARN_ON(vec->digest_size > HASH_MAX_DIGESTSIZE))
+		return -EINVAL;
+
+	tfm = crypto_alloc_shash(impl, 0, 0);
+	if (IS_ERR(tfm))
+		return fips_handle_alloc_tfm_error(impl, PTR_ERR(tfm));
+	err = fips_validate_alg(&crypto_shash_alg(tfm)->base);
+	if (err)
+		goto out;
+	if (crypto_shash_digestsize(tfm) != vec->digest_size) {
+		pr_err("%s has wrong digest size\n", impl);
+		err = -EINVAL;
+		goto out;
+	}
+
+	if (vec->key) {
+		err = crypto_shash_setkey(tfm, vec->key, vec->key_size);
+		if (err) {
+			pr_err("failed to set %s key: %d\n", impl, err);
+			goto out;
+		}
+	}
+
+	err = crypto_shash_tfm_digest(tfm, vec->message, vec->message_size,
+				      digest);
+	if (err) {
+		pr_err("%s digest computation failed: %d\n", impl, err);
+		goto out;
+	}
+	err = fips_check_result(digest, vec->digest, vec->digest_size,
+				impl, "digest");
+out:
+	crypto_free_shash(tfm);
+	return err;
+}
+
+static int __init __must_check
+fips_test_sha256_library(const struct fips_test *test, const char *impl)
+{
+	const struct hash_testvec *vec = &test->hash;
+	u8 digest[SHA256_DIGEST_SIZE];
+
+	if (WARN_ON(vec->digest_size != SHA256_DIGEST_SIZE))
+		return -EINVAL;
+
+	sha256(vec->message, vec->message_size, digest);
+	return fips_check_result(digest, vec->digest, vec->digest_size,
+				 impl, "digest");
+}
+
+/* Test a DRBG using the crypto_rng API. */
+static int __init __must_check
+fips_test_drbg(const struct fips_test *test, const char *impl)
+{
+	const struct drbg_testvec *vec = &test->drbg;
+	struct crypto_rng *rng;
+	u8 *output = NULL;
+	struct drbg_test_data test_data;
+	struct drbg_string addtl, pers, testentropy;
+	int err;
+
+	rng = crypto_alloc_rng(impl, 0, 0);
+	if (IS_ERR(rng))
+		return fips_handle_alloc_tfm_error(impl, PTR_ERR(rng));
+	err = fips_validate_alg(&crypto_rng_alg(rng)->base);
+	if (err)
+		goto out;
+
+	output = kzalloc(vec->out_size, GFP_KERNEL);
+	if (!output) {
+		err = -ENOMEM;
+		goto out;
+	}
+
+	/*
+	 * Initialize the DRBG with the entropy and personalization string given
+	 * in the test vector.
+	 */
+	test_data.testentropy = &testentropy;
+	drbg_string_fill(&testentropy, vec->entropy, vec->entropy_size);
+	drbg_string_fill(&pers, vec->pers, vec->pers_size);
+	err = crypto_drbg_reset_test(rng, &pers, &test_data);
+	if (err) {
+		pr_err("failed to reset %s\n", impl);
+		goto out;
+	}
+
+	/*
+	 * Generate some random bytes using the additional data string provided
+	 * in the test vector.  Also use the additional entropy if provided
+	 * (relevant for the prediction-resistant DRBG variants only).
+	 */
+	drbg_string_fill(&addtl, vec->add_a, vec->add_size);
+	if (vec->entpr_size) {
+		drbg_string_fill(&testentropy, vec->entpr_a, vec->entpr_size);
+		err = crypto_drbg_get_bytes_addtl_test(rng, output,
+						       vec->out_size, &addtl,
+						       &test_data);
+	} else {
+		err = crypto_drbg_get_bytes_addtl(rng, output, vec->out_size,
+						  &addtl);
+	}
+	if (err) {
+		pr_err("failed to get bytes from %s (try 1): %d\n",
+		       impl, err);
+		goto out;
+	}
+
+	/*
+	 * Do the same again, using a second additional data string, and (when
+	 * applicable) a second additional entropy string.
+	 */
+	drbg_string_fill(&addtl, vec->add_b, vec->add_size);
+	if (test->drbg.entpr_size) {
+		drbg_string_fill(&testentropy, vec->entpr_b, vec->entpr_size);
+		err = crypto_drbg_get_bytes_addtl_test(rng, output,
+						       vec->out_size, &addtl,
+						       &test_data);
+	} else {
+		err = crypto_drbg_get_bytes_addtl(rng, output, vec->out_size,
+						  &addtl);
+	}
+	if (err) {
+		pr_err("failed to get bytes from %s (try 2): %d\n",
+		       impl, err);
+		goto out;
+	}
+
+	/* Check that the DRBG generated the expected output. */
+	err = fips_check_result(output, vec->output, vec->out_size,
+				impl, "get_bytes");
+out:
+	kfree(output);
+	crypto_free_rng(rng);
+	return err;
+}
+
+/* Include the test vectors generated by the Python script. */
+#include "fips140-generated-testvecs.h"
+
+/*
+ * List of all self-tests.  Keep this in sync with fips140_algorithms[].
+ *
+ * When possible, we have followed the FIPS 140-2 Implementation Guidance (IG)
+ * document when creating this list of tests.  The result is intended to be a
+ * list of tests that is near-minimal (and thus minimizes runtime overhead)
+ * while complying with all requirements.  For additional details, see the
+ * comment at the beginning of this file.
+ */
+static const struct fips_test fips140_selftests[] __initconst = {
+	/*
+	 * Test for the AES library API.
+	 *
+	 * Since the AES library API may use its own AES implementation and the
+	 * module provides no support for composing it with a mode of operation
+	 * (it's just plain AES), we must test it directly.
+	 *
+	 * In contrast, we don't need to directly test the "aes" ciphers that
+	 * are accessible through the crypto_cipher API (e.g. "aes-ce"), as they
+	 * are covered indirectly by AES-CMAC and AES-ECB tests.
+	 */
+	{
+		.alg		= "aes",
+		.impls		= {"aes-lib"},
+		.func		= fips_test_aes_library,
+		.skcipher	= {
+			.key		= fips_aes_key,
+			.key_size	= sizeof(fips_aes_key),
+			.plaintext	= fips_message,
+			.ciphertext	= fips_aes_ecb_ciphertext,
+			.message_size	= 16,
+		}
+	},
+	/*
+	 * Tests for AES-CMAC, a.k.a. "cmac(aes)" in crypto API syntax.
+	 *
+	 * The IG requires that each underlying AES implementation be tested in
+	 * an authenticated mode, if implemented.  Of such modes, this module
+	 * implements AES-GCM and AES-CMAC.  However, AES-GCM doesn't "count"
+	 * because this module's implementations of AES-GCM won't actually be
+	 * FIPS-approved, due to a quirk in the FIPS requirements.
+	 *
+	 * Therefore, for us this requirement applies to AES-CMAC, so we must
+	 * test the "cmac" template composed with each "aes" implementation.
+	 *
+	 * Separately from the above, we also must test all standalone
+	 * implementations of "cmac(aes)" such as "cmac-aes-ce", as they don't
+	 * reuse another full AES implementation and thus can't be covered by
+	 * another test.
+	 */
+	{
+		.alg		= "cmac(aes)",
+		.impls		= {
+			/* "cmac" template with all "aes" implementations */
+			"cmac(aes-generic)",
+			"cmac(aes-arm64)",
+			"cmac(aes-ce)",
+			/* All standalone implementations of "cmac(aes)" */
+			"cmac-aes-neon",
+			"cmac-aes-ce",
+		},
+		.func		= fips_test_hash,
+		.hash		= {
+			.key		= fips_aes_key,
+			.key_size	= sizeof(fips_aes_key),
+			.message	= fips_message,
+			.message_size	= sizeof(fips_message),
+			.digest		= fips_aes_cmac_digest,
+			.digest_size	= sizeof(fips_aes_cmac_digest),
+		}
+	},
+	/*
+	 * Tests for AES-ECB, a.k.a. "ecb(aes)" in crypto API syntax.
+	 *
+	 * The IG requires that each underlying AES implementation be tested in
+	 * a mode that exercises the encryption direction of AES and in a mode
+	 * that exercises the decryption direction of AES.  CMAC only covers the
+	 * encryption direction, so we choose ECB to test decryption.  Thus, we
+	 * test the "ecb" template composed with each "aes" implementation.
+	 *
+	 * Separately from the above, we also must test all standalone
+	 * implementations of "ecb(aes)" such as "ecb-aes-ce", as they don't
+	 * reuse another full AES implementation and thus can't be covered by
+	 * another test.
+	 */
+	{
+		.alg		= "ecb(aes)",
+		.impls		= {
+			/* "ecb" template with all "aes" implementations */
+			"ecb(aes-generic)",
+			"ecb(aes-arm64)",
+			"ecb(aes-ce)",
+			/* All standalone implementations of "ecb(aes)" */
+			"ecb-aes-neon",
+			"ecb-aes-neonbs",
+			"ecb-aes-ce",
+		},
+		.func		= fips_test_skcipher,
+		.skcipher	= {
+			.key		= fips_aes_key,
+			.key_size	= sizeof(fips_aes_key),
+			.plaintext	= fips_message,
+			.ciphertext	= fips_aes_ecb_ciphertext,
+			.message_size	= sizeof(fips_message)
+		}
+	},
+	/*
+	 * Tests for AES-CBC, AES-CBC-CTS, AES-CTR, AES-XTS, and AES-GCM.
+	 *
+	 * According to the IG, an AES mode of operation doesn't need to have
+	 * its own test, provided that (a) both the encryption and decryption
+	 * directions of the underlying AES implementation are already tested
+	 * via other mode(s), and (b) in the case of an authenticated mode, at
+	 * least one other authenticated mode is already tested.  The tests of
+	 * the "cmac" and "ecb" templates fulfill these conditions; therefore,
+	 * we don't need to test any other AES mode templates.
+	 *
+	 * This does *not* apply to standalone implementations of these modes
+	 * such as "cbc-aes-ce", as such implementations don't reuse another
+	 * full AES implementation and thus can't be covered by another test.
+	 * We must test all such standalone implementations.
+	 *
+	 * The AES-GCM test isn't actually required, as it's expected that this
+	 * module's AES-GCM implementation won't actually be able to be
+	 * FIPS-approved.  This is unfortunate; it's caused by the FIPS
+	 * requirements for GCM being incompatible with GCM implementations that
+	 * don't generate their own IVs.  We choose to still include the AES-GCM
+	 * test to keep it on par with the other FIPS-approved algorithms, in
+	 * case it turns out that AES-GCM can be approved after all.
+	 */
+	{
+		.alg		= "cbc(aes)",
+		.impls		= {
+			/* All standalone implementations of "cbc(aes)" */
+			"cbc-aes-neon",
+			"cbc-aes-neonbs",
+			"cbc-aes-ce",
+		},
+		.func		= fips_test_skcipher,
+		.skcipher	= {
+			.key		= fips_aes_key,
+			.key_size	= sizeof(fips_aes_key),
+			.iv		= fips_aes_iv,
+			.iv_size	= sizeof(fips_aes_iv),
+			.plaintext	= fips_message,
+			.ciphertext	= fips_aes_cbc_ciphertext,
+			.message_size	= sizeof(fips_message),
+		}
+	}, {
+		.alg		= "cts(cbc(aes))",
+		.impls		= {
+			/* All standalone implementations of "cts(cbc(aes))" */
+			"cts-cbc-aes-neon",
+			"cts-cbc-aes-ce",
+		},
+		.func		= fips_test_skcipher,
+		/* Test vector taken from RFC 3962 */
+		.skcipher	= {
+			.key    = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
+				  "\x74\x65\x72\x69\x79\x61\x6b\x69",
+			.key_size = 16,
+			.iv	= "\x00\x00\x00\x00\x00\x00\x00\x00"
+				  "\x00\x00\x00\x00\x00\x00\x00\x00",
+			.iv_size = 16,
+			.plaintext = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
+				     "\x6c\x69\x6b\x65\x20\x74\x68\x65"
+				     "\x20\x47\x65\x6e\x65\x72\x61\x6c"
+				     "\x20\x47\x61\x75\x27\x73\x20",
+			.ciphertext = "\xfc\x00\x78\x3e\x0e\xfd\xb2\xc1"
+				      "\xd4\x45\xd4\xc8\xef\xf7\xed\x22"
+				      "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
+				      "\xc0\x7b\x25\xe2\x5e\xcf\xe5",
+			.message_size = 31,
+		}
+	}, {
+		.alg		= "ctr(aes)",
+		.impls		= {
+			/* All standalone implementations of "ctr(aes)" */
+			"ctr-aes-neon",
+			"ctr-aes-neonbs",
+			"ctr-aes-ce",
+		},
+		.func		= fips_test_skcipher,
+		.skcipher	= {
+			.key		= fips_aes_key,
+			.key_size	= sizeof(fips_aes_key),
+			.iv		= fips_aes_iv,
+			.iv_size	= sizeof(fips_aes_iv),
+			.plaintext	= fips_message,
+			.ciphertext	= fips_aes_ctr_ciphertext,
+			.message_size	= sizeof(fips_message),
+		}
+	}, {
+		.alg		= "xts(aes)",
+		.impls		= {
+			/* All standalone implementations of "xts(aes)" */
+			"xts-aes-neon",
+			"xts-aes-neonbs",
+			"xts-aes-ce",
+		},
+		.func		= fips_test_skcipher,
+		.skcipher	= {
+			.key		= fips_aes_xts_key,
+			.key_size	= sizeof(fips_aes_xts_key),
+			.iv		= fips_aes_iv,
+			.iv_size	= sizeof(fips_aes_iv),
+			.plaintext	= fips_message,
+			.ciphertext	= fips_aes_xts_ciphertext,
+			.message_size	= sizeof(fips_message),
+		}
+	}, {
+		.alg		= "gcm(aes)",
+		.impls		= {
+			/* All standalone implementations of "gcm(aes)" */
+			"gcm-aes-ce",
+		},
+		.func		= fips_test_aead,
+		.aead		= {
+			.key		= fips_aes_key,
+			.key_size	= sizeof(fips_aes_key),
+			.iv		= fips_aes_iv,
+			/* The GCM implementations assume an IV size of 12. */
+			.iv_size	= 12,
+			.assoc		= fips_aes_gcm_assoc,
+			.assoc_size	= sizeof(fips_aes_gcm_assoc),
+			.plaintext	= fips_message,
+			.plaintext_size	= sizeof(fips_message),
+			.ciphertext	= fips_aes_gcm_ciphertext,
+			.ciphertext_size = sizeof(fips_aes_gcm_ciphertext),
+		}
+	},
+
+	/* Tests for SHA-1 */
+	{
+		.alg		= "sha1",
+		.impls		= {
+			/* All implementations of "sha1" */
+			"sha1-generic",
+			"sha1-ce"
+		},
+		.func		= fips_test_hash,
+		.hash		= {
+			.message	= fips_message,
+			.message_size	= sizeof(fips_message),
+			.digest		= fips_sha1_digest,
+			.digest_size	= sizeof(fips_sha1_digest)
+		}
+	},
+	/*
+	 * Tests for all SHA-256 implementations other than the sha256() library
+	 * function.  As per the IG, these tests also fulfill the tests for the
+	 * corresponding SHA-224 implementations.
+	 */
+	{
+		.alg		= "sha256",
+		.impls		= {
+			/* All implementations of "sha256" */
+			"sha256-generic",
+			"sha256-arm64",
+			"sha256-ce",
+		},
+		.func		= fips_test_hash,
+		.hash		= {
+			.message	= fips_message,
+			.message_size	= sizeof(fips_message),
+			.digest		= fips_sha256_digest,
+			.digest_size	= sizeof(fips_sha256_digest)
+		}
+	},
+	/*
+	 * Test for the sha256() library function.  This must be tested
+	 * separately because it may use its own SHA-256 implementation.
+	 */
+	{
+		.alg		= "sha256",
+		.impls		= {"sha256-lib"},
+		.func		= fips_test_sha256_library,
+		.hash		= {
+			.message	= fips_message,
+			.message_size	= sizeof(fips_message),
+			.digest		= fips_sha256_digest,
+			.digest_size	= sizeof(fips_sha256_digest)
+		}
+	},
+	/*
+	 * Tests for all SHA-512 implementations.  As per the IG, these tests
+	 * also fulfill the tests for the corresponding SHA-384 implementations.
+	 */
+	{
+		.alg		= "sha512",
+		.impls		= {
+			/* All implementations of "sha512" */
+			"sha512-generic",
+			"sha512-arm64",
+			"sha512-ce",
+		},
+		.func		= fips_test_hash,
+		.hash		= {
+			.message	= fips_message,
+			.message_size	= sizeof(fips_message),
+			.digest		= fips_sha512_digest,
+			.digest_size	= sizeof(fips_sha512_digest)
+		}
+	},
+	/*
+	 * Test for HMAC.  As per the IG, only one HMAC test is required,
+	 * provided that the same HMAC code is shared by all HMAC-SHA*.  This is
+	 * true in our case.  We choose HMAC-SHA256 for the test.
+	 *
+	 * Note that as per the IG, this can fulfill the test for the underlying
+	 * SHA.  However, we don't currently rely on this.
+	 */
+	{
+		.alg		= "hmac(sha256)",
+		.func		= fips_test_hash,
+		.hash		= {
+			.key		= fips_hmac_key,
+			.key_size	= sizeof(fips_hmac_key),
+			.message	= fips_message,
+			.message_size	= sizeof(fips_message),
+			.digest		= fips_hmac_sha256_digest,
+			.digest_size	= sizeof(fips_hmac_sha256_digest)
+		}
+	},
+	/*
+	 * Known-answer tests for the SP800-90A DRBG algorithms.
+	 *
+	 * These test vectors were manually extracted from
+	 * https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Algorithm-Validation-Program/documents/drbg/drbgtestvectors.zip.
+	 *
+	 * The selection of these tests follows the FIPS 140-2 IG as well as
+	 * Section 11 of SP800-90A:
+	 *
+	 * - We must test all DRBG types (HMAC, Hash, and CTR) that the module
+	 *   implements.  However, currently the module only implements
+	 *   HMAC_DRBG (since CONFIG_CRYPTO_DRBG_CTR and CONFIG_CRYPTO_DRBG_HASH
+	 *   aren't enabled).  Therefore, we only need to test HMAC_DRBG.
+	 *
+	 * - We only need to test one HMAC variant.
+	 *
+	 * - We must test all DRBG operations: Instantiate(), Reseed(), and
+	 *   Generate().  However, a single test sequence with a single output
+	 *   comparison may cover all three operations, and this is what we do.
+	 *   Note that Reseed() happens implicitly via the use of the additional
+	 *   input and also via the use of prediction resistance when enabled.
+	 *
+	 * - The personalization string, additional input, and prediction
+	 *   resistance support must be tested.  Therefore we have chosen test
+	 *   vectors that have a nonempty personalization string and nonempty
+	 *   additional input, and we test the prediction-resistant variant.
+	 *   Testing the non-prediction-resistant variant is not required.
+	 */
+	{
+		.alg	= "drbg_pr_hmac_sha256",
+		.func	= fips_test_drbg,
+		.drbg	= {
+			.entropy =
+				"\xc7\xcc\xbc\x67\x7e\x21\x66\x1e\x27\x2b\x63\xdd"
+				"\x3a\x78\xdc\xdf\x66\x6d\x3f\x24\xae\xcf\x37\x01"
+				"\xa9\x0d\x89\x8a\xa7\xdc\x81\x58\xae\xb2\x10\x15"
+				"\x7e\x18\x44\x6d\x13\xea\xdf\x37\x85\xfe\x81\xfb",
+			.entropy_size = 48,
+			.entpr_a =
+				"\x7b\xa1\x91\x5b\x3c\x04\xc4\x1b\x1d\x19\x2f\x1a"
+				"\x18\x81\x60\x3c\x6c\x62\x91\xb7\xe9\xf5\xcb\x96"
+				"\xbb\x81\x6a\xcc\xb5\xae\x55\xb6",
+			.entpr_b =
+				"\x99\x2c\xc7\x78\x7e\x3b\x88\x12\xef\xbe\xd3\xd2"
+				"\x7d\x2a\xa5\x86\xda\x8d\x58\x73\x4a\x0a\xb2\x2e"
+				"\xbb\x4c\x7e\xe3\x9a\xb6\x81\xc1",
+			.entpr_size = 32,
+			.output =
+				"\x95\x6f\x95\xfc\x3b\xb7\xfe\x3e\xd0\x4e\x1a\x14"
+				"\x6c\x34\x7f\x7b\x1d\x0d\x63\x5e\x48\x9c\x69\xe6"
+				"\x46\x07\xd2\x87\xf3\x86\x52\x3d\x98\x27\x5e\xd7"
+				"\x54\xe7\x75\x50\x4f\xfb\x4d\xfd\xac\x2f\x4b\x77"
+				"\xcf\x9e\x8e\xcc\x16\xa2\x24\xcd\x53\xde\x3e\xc5"
+				"\x55\x5d\xd5\x26\x3f\x89\xdf\xca\x8b\x4e\x1e\xb6"
+				"\x88\x78\x63\x5c\xa2\x63\x98\x4e\x6f\x25\x59\xb1"
+				"\x5f\x2b\x23\xb0\x4b\xa5\x18\x5d\xc2\x15\x74\x40"
+				"\x59\x4c\xb4\x1e\xcf\x9a\x36\xfd\x43\xe2\x03\xb8"
+				"\x59\x91\x30\x89\x2a\xc8\x5a\x43\x23\x7c\x73\x72"
+				"\xda\x3f\xad\x2b\xba\x00\x6b\xd1",
+			.out_size = 128,
+			.add_a =
+				"\x18\xe8\x17\xff\xef\x39\xc7\x41\x5c\x73\x03\x03"
+				"\xf6\x3d\xe8\x5f\xc8\xab\xe4\xab\x0f\xad\xe8\xd6"
+				"\x86\x88\x55\x28\xc1\x69\xdd\x76",
+			.add_b =
+				"\xac\x07\xfc\xbe\x87\x0e\xd3\xea\x1f\x7e\xb8\xe7"
+				"\x9d\xec\xe8\xe7\xbc\xf3\x18\x25\x77\x35\x4a\xaa"
+				"\x00\x99\x2a\xdd\x0a\x00\x50\x82",
+			.add_size = 32,
+			.pers =
+				"\xbc\x55\xab\x3c\xf6\x52\xb0\x11\x3d\x7b\x90\xb8"
+				"\x24\xc9\x26\x4e\x5a\x1e\x77\x0d\x3d\x58\x4a\xda"
+				"\xd1\x81\xe9\xf8\xeb\x30\x8f\x6f",
+			.pers_size = 32,
+		}
+	}
+};
+
+static int __init __must_check
+fips_run_test(const struct fips_test *test)
+{
+	int i;
+	int err;
+
+	/*
+	 * If no implementations were specified, then just test the default one.
+	 * Otherwise, test the specified list of implementations.
+	 */
+
+	if (test->impls[0] == NULL) {
+		err = test->func(test, test->alg);
+		if (err)
+			pr_emerg("self-tests failed for algorithm %s: %d\n",
+				 test->alg, err);
+		return err;
+	}
+
+	for (i = 0; i < ARRAY_SIZE(test->impls) && test->impls[i] != NULL;
+	     i++) {
+		err = test->func(test, test->impls[i]);
+		if (err) {
+			pr_emerg("self-tests failed for algorithm %s, implementation %s: %d\n",
+				 test->alg, test->impls[i], err);
+			return err;
+		}
+	}
+	return 0;
+}
+
+bool __init fips140_run_selftests(void)
+{
+	int i;
+
+	pr_info("running self-tests\n");
+	for (i = 0; i < ARRAY_SIZE(fips140_selftests); i++) {
+		if (fips_run_test(&fips140_selftests[i]) != 0) {
+			/* The caller is responsible for calling panic(). */
+			return false;
+		}
+	}
+	pr_info("all self-tests passed\n");
+	return true;
+}
diff --git a/crypto/fips140_gen_hmac.c b/crypto/fips140_gen_hmac.c
new file mode 100644
index 0000000..69f754d
--- /dev/null
+++ b/crypto/fips140_gen_hmac.c
@@ -0,0 +1,194 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (C) 2021 - Google LLC
+ * Author: Ard Biesheuvel <ardb@google.com>
+ *
+ * This is a host tool that is intended to be used to take the HMAC digest of
+ * the .text and .rodata sections of the fips140.ko module, and store it inside
+ * the module. The module will perform an integrity selfcheck at module_init()
+ * time, by recalculating the digest and comparing it with the value calculated
+ * here.
+ *
+ * Note that the peculiar way an HMAC is being used as a digest with a public
+ * key rather than as a symmetric key signature is mandated by FIPS 140-2.
+ */
+
+#include <elf.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/mman.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#include <openssl/hmac.h>
+
+static Elf64_Ehdr *ehdr;
+static Elf64_Shdr *shdr;
+static int num_shdr;
+static const char *strtab, *shstrtab;
+static Elf64_Sym *syms;
+static int num_syms;
+
+static Elf64_Shdr *find_symtab_section(void)
+{
+	int i;
+
+	for (i = 0; i < num_shdr; i++)
+		if (shdr[i].sh_type == SHT_SYMTAB)
+			return &shdr[i];
+	return NULL;
+}
+
+static int get_section_idx(const char *name)
+{
+	int i;
+
+	for (i = 0; i < num_shdr; i++)
+		if (!strcmp(shstrtab + shdr[i].sh_name, name))
+			return i;
+	return -1;
+}
+
+static int get_sym_idx(const char *sym_name)
+{
+	int i;
+
+	for (i = 0; i < num_syms; i++)
+		if (!strcmp(strtab + syms[i].st_name, sym_name))
+			return i;
+	return -1;
+}
+
+static void *get_sym_addr(const char *sym_name)
+{
+	int i = get_sym_idx(sym_name);
+
+	if (i >= 0)
+		return (void *)ehdr + shdr[syms[i].st_shndx].sh_offset +
+		       syms[i].st_value;
+	return NULL;
+}
+
+static int update_rela_ref(const char *name)
+{
+	/*
+	 * We need to do a couple of things to ensure that the copied RELA data
+	 * is accessible to the module itself at module init time:
+	 * - the associated entry in the symbol table needs to refer to the
+	 *   correct section index, and have SECTION type and GLOBAL linkage.
+	 * - the 'count' global variable in the module need to be set to the
+	 *   right value based on the size of the RELA section.
+	 */
+	unsigned int *size_var;
+	int sec_idx, sym_idx;
+	char str[32];
+
+	sprintf(str, "fips140_rela_%s", name);
+	size_var = get_sym_addr(str);
+	if (!size_var) {
+		printf("variable '%s' not found, disregarding .%s section\n",
+		       str, name);
+		return 1;
+	}
+
+	sprintf(str, "__sec_rela_%s", name);
+	sym_idx = get_sym_idx(str);
+
+	sprintf(str, ".init.rela.%s", name);
+	sec_idx = get_section_idx(str);
+
+	if (sec_idx < 0 || sym_idx < 0) {
+		fprintf(stderr, "failed to locate metadata for .%s section in binary\n",
+			name);
+		return 0;
+	}
+
+	syms[sym_idx].st_shndx = sec_idx;
+	syms[sym_idx].st_info = (STB_GLOBAL << 4) | STT_SECTION;
+
+	size_var[1] = shdr[sec_idx].sh_size / sizeof(Elf64_Rela);
+
+	return 1;
+}
+
+static void hmac_section(HMAC_CTX *hmac, const char *start, const char *end)
+{
+	void *start_addr = get_sym_addr(start);
+	void *end_addr = get_sym_addr(end);
+
+	HMAC_Update(hmac, start_addr, end_addr - start_addr);
+}
+
+int main(int argc, char **argv)
+{
+	Elf64_Shdr *symtab_shdr;
+	const char *hmac_key;
+	unsigned char *dg;
+	unsigned int dglen;
+	struct stat stat;
+	HMAC_CTX *hmac;
+	int fd, ret;
+
+	if (argc < 2) {
+		fprintf(stderr, "file argument missing\n");
+		exit(EXIT_FAILURE);
+	}
+
+	fd = open(argv[1], O_RDWR);
+	if (fd < 0) {
+		fprintf(stderr, "failed to open %s\n", argv[1]);
+		exit(EXIT_FAILURE);
+	}
+
+	ret = fstat(fd, &stat);
+	if (ret < 0) {
+		fprintf(stderr, "failed to stat() %s\n", argv[1]);
+		exit(EXIT_FAILURE);
+	}
+
+	ehdr = mmap(0, stat.st_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
+	if (ehdr == MAP_FAILED) {
+		fprintf(stderr, "failed to mmap() %s\n", argv[1]);
+		exit(EXIT_FAILURE);
+	}
+
+	shdr = (void *)ehdr + ehdr->e_shoff;
+	num_shdr = ehdr->e_shnum;
+
+	symtab_shdr = find_symtab_section();
+
+	syms = (void *)ehdr + symtab_shdr->sh_offset;
+	num_syms = symtab_shdr->sh_size / sizeof(Elf64_Sym);
+
+	strtab = (void *)ehdr + shdr[symtab_shdr->sh_link].sh_offset;
+	shstrtab = (void *)ehdr + shdr[ehdr->e_shstrndx].sh_offset;
+
+	if (!update_rela_ref("text") || !update_rela_ref("rodata"))
+		exit(EXIT_FAILURE);
+
+	hmac_key = get_sym_addr("fips140_integ_hmac_key");
+	if (!hmac_key) {
+		fprintf(stderr, "failed to locate HMAC key in binary\n");
+		exit(EXIT_FAILURE);
+	}
+
+	dg = get_sym_addr("fips140_integ_hmac_digest");
+	if (!dg) {
+		fprintf(stderr, "failed to locate HMAC digest in binary\n");
+		exit(EXIT_FAILURE);
+	}
+
+	hmac = HMAC_CTX_new();
+	HMAC_Init_ex(hmac, hmac_key, strlen(hmac_key), EVP_sha256(), NULL);
+
+	hmac_section(hmac, "__fips140_text_start", "__fips140_text_end");
+	hmac_section(hmac, "__fips140_rodata_start", "__fips140_rodata_end");
+
+	HMAC_Final(hmac, dg, &dglen);
+
+	close(fd);
+	return 0;
+}
diff --git a/crypto/internal.h b/crypto/internal.h
index c083855..932f0aa 100644
--- a/crypto/internal.h
+++ b/crypto/internal.h
@@ -47,7 +47,25 @@ extern struct list_head crypto_alg_list;
 extern struct rw_semaphore crypto_alg_sem;
 extern struct blocking_notifier_head crypto_chain;
 
-DECLARE_STATIC_KEY_FALSE(crypto_boot_test_finished);
+#ifdef CONFIG_CRYPTO_MANAGER_DISABLE_TESTS
+static inline bool crypto_boot_test_finished(void)
+{
+	return true;
+}
+static inline void set_crypto_boot_test_finished(void)
+{
+}
+#else
+DECLARE_STATIC_KEY_FALSE(__crypto_boot_test_finished);
+static inline bool crypto_boot_test_finished(void)
+{
+	return static_branch_likely(&__crypto_boot_test_finished);
+}
+static inline void set_crypto_boot_test_finished(void)
+{
+	static_branch_enable(&__crypto_boot_test_finished);
+}
+#endif /* !CONFIG_CRYPTO_MANAGER_DISABLE_TESTS */
 
 #ifdef CONFIG_PROC_FS
 void __init crypto_init_proc(void);
diff --git a/crypto/kdf_sp800108.c b/crypto/kdf_sp800108.c
index 58edf77..c3f9938 100644
--- a/crypto/kdf_sp800108.c
+++ b/crypto/kdf_sp800108.c
@@ -125,9 +125,13 @@ static const struct kdf_testvec kdf_ctr_hmac_sha256_tv_template[] = {
 
 static int __init crypto_kdf108_init(void)
 {
-	int ret = kdf_test(&kdf_ctr_hmac_sha256_tv_template[0], "hmac(sha256)",
-			   crypto_kdf108_setkey, crypto_kdf108_ctr_generate);
+	int ret;
 
+	if (IS_ENABLED(CONFIG_CRYPTO_MANAGER_DISABLE_TESTS))
+		return 0;
+
+	ret = kdf_test(&kdf_ctr_hmac_sha256_tv_template[0], "hmac(sha256)",
+		       crypto_kdf108_setkey, crypto_kdf108_ctr_generate);
 	if (ret) {
 		if (fips_enabled)
 			panic("alg: self-tests for CTR-KDF (hmac(sha256)) failed (rc=%d)\n",
@@ -136,7 +140,7 @@ static int __init crypto_kdf108_init(void)
 		WARN(1,
 		     "alg: self-tests for CTR-KDF (hmac(sha256)) failed (rc=%d)\n",
 		     ret);
-	} else {
+	} else if (fips_enabled) {
 		pr_info("alg: self-tests for CTR-KDF (hmac(sha256)) passed\n");
 	}
 
diff --git a/drivers/acpi/pfr_telemetry.c b/drivers/acpi/pfr_telemetry.c
index 27fb6cda..843f678 100644
--- a/drivers/acpi/pfr_telemetry.c
+++ b/drivers/acpi/pfr_telemetry.c
@@ -310,7 +310,7 @@ pfrt_log_mmap(struct file *file, struct vm_area_struct *vma)
 		return -EROFS;
 
 	/* changing from read to write with mprotect is not allowed */
-	vma->vm_flags &= ~VM_MAYWRITE;
+	vm_flags_clear(vma, VM_MAYWRITE);
 
 	pfrt_log_dev = to_pfrt_log_dev(file);
 
diff --git a/drivers/android/Kconfig b/drivers/android/Kconfig
index 07aa8ae..c5e063b 100644
--- a/drivers/android/Kconfig
+++ b/drivers/android/Kconfig
@@ -47,4 +47,59 @@
 	  exhaustively with combinations of various buffer sizes and
 	  alignments.
 
+config ANDROID_VENDOR_HOOKS
+	bool "Android Vendor Hooks"
+	depends on TRACEPOINTS
+	help
+	  Enable vendor hooks implemented as tracepoints
+
+	  Allow vendor modules to attach to tracepoint "hooks" defined via
+	  DECLARE_HOOK or DECLARE_RESTRICTED_HOOK.
+
+config ANDROID_DEBUG_KINFO
+	bool "Android Debug Kernel Information Support"
+	depends on KALLSYMS
+	help
+	  This supports kernel information backup for bootloader usage.
+	  Specifics:
+	   - The kallsyms symbols for unwind_backtrace
+	   - Page directory pointer
+	   - UTS_RELEASE
+	   - BUILD_INFO(ro.build.fingerprint)
+
+config ANDROID_KABI_RESERVE
+	bool "Android KABI reserve padding"
+	default y
+	help
+	  This option enables the padding that the Android GKI kernel adds
+	  to many different kernel structures to support an in-kernel stable ABI
+	  over the lifespan of support for the kernel.
+
+	  Only disable this option if you have a system that needs the Android
+	  kernel drivers, but is NOT an Android GKI kernel image. If disabled
+	  it has the possibility to make the kernel static and runtime image
+	  slightly smaller but will NOT be supported by the Google Android
+	  kernel team.
+
+	  If even slightly unsure, say Y.
+
+config ANDROID_VENDOR_OEM_DATA
+	bool "Android vendor and OEM data padding"
+	default y
+	help
+	  This option enables the padding that the Android GKI kernel adds
+	  to many different kernel structures to support an in-kernel stable ABI
+	  over the lifespan of support for the kernel as well as OEM additional
+	  fields that are needed by some of the Android kernel tracepoints. The
+	  macros enabled by this option are used to enable padding in vendor modules
+	  used for the above specified purposes.
+
+	  Only disable this option if you have a system that needs the Android
+	  kernel drivers, but is NOT an Android GKI kernel image and you do NOT
+	  use the Android kernel tracepoints. If disabled it has the possibility
+	  to make the kernel static and runtime image slightly smaller but will
+	  NOT be supported by the Google Android kernel team.
+
+	  If even slightly unsure, say Y.
+
 endmenu
diff --git a/drivers/android/Makefile b/drivers/android/Makefile
index c9d3d0c9..9b89e4b 100644
--- a/drivers/android/Makefile
+++ b/drivers/android/Makefile
@@ -4,3 +4,5 @@
 obj-$(CONFIG_ANDROID_BINDERFS)		+= binderfs.o
 obj-$(CONFIG_ANDROID_BINDER_IPC)	+= binder.o binder_alloc.o
 obj-$(CONFIG_ANDROID_BINDER_IPC_SELFTEST) += binder_alloc_selftest.o
+obj-$(CONFIG_ANDROID_VENDOR_HOOKS) += vendor_hooks.o
+obj-$(CONFIG_ANDROID_DEBUG_KINFO)	+= debug_kinfo.o
diff --git a/drivers/android/binder.c b/drivers/android/binder.c
index e374a8a..de7a12f 100644
--- a/drivers/android/binder.c
+++ b/drivers/android/binder.c
@@ -66,13 +66,17 @@
 #include <linux/syscalls.h>
 #include <linux/task_work.h>
 #include <linux/sizes.h>
+#include <linux/ktime.h>
+#include <linux/android_vendor.h>
 
+#include <uapi/linux/sched/types.h>
 #include <uapi/linux/android/binder.h>
 
 #include <linux/cacheflush.h>
 
 #include "binder_internal.h"
 #include "binder_trace.h"
+#include <trace/hooks/binder.h>
 
 static HLIST_HEAD(binder_deferred_list);
 static DEFINE_MUTEX(binder_deferred_lock);
@@ -539,6 +543,11 @@ static void binder_inc_node_tmpref_ilocked(struct binder_node *node);
 static bool binder_has_work_ilocked(struct binder_thread *thread,
 				    bool do_proc_work)
 {
+	int ret = 0;
+
+	trace_android_vh_binder_has_work_ilocked(thread, do_proc_work, &ret);
+	if (ret)
+		return true;
 	return thread->process_todo ||
 		thread->looper_need_return ||
 		(do_proc_work &&
@@ -574,6 +583,7 @@ static void binder_wakeup_poll_threads_ilocked(struct binder_proc *proc,
 		thread = rb_entry(n, struct binder_thread, rb_node);
 		if (thread->looper & BINDER_LOOPER_STATE_POLL &&
 		    binder_available_for_proc_work_ilocked(thread)) {
+			trace_android_vh_binder_wakeup_ilocked(thread->task, sync, proc);
 			if (sync)
 				wake_up_interruptible_sync(&thread->wait);
 			else
@@ -633,6 +643,7 @@ static void binder_wakeup_thread_ilocked(struct binder_proc *proc,
 	assert_spin_locked(&proc->inner_lock);
 
 	if (thread) {
+		trace_android_vh_binder_wakeup_ilocked(thread->task, sync, proc);
 		if (sync)
 			wake_up_interruptible_sync(&thread->wait);
 		else
@@ -663,22 +674,195 @@ static void binder_wakeup_proc_ilocked(struct binder_proc *proc)
 	binder_wakeup_thread_ilocked(proc, thread, /* sync = */false);
 }
 
-static void binder_set_nice(long nice)
+static bool is_rt_policy(int policy)
 {
-	long min_nice;
+	return policy == SCHED_FIFO || policy == SCHED_RR;
+}
 
-	if (can_nice(current, nice)) {
-		set_user_nice(current, nice);
+static bool is_fair_policy(int policy)
+{
+	return policy == SCHED_NORMAL || policy == SCHED_BATCH;
+}
+
+static bool binder_supported_policy(int policy)
+{
+	return is_fair_policy(policy) || is_rt_policy(policy);
+}
+
+static int to_userspace_prio(int policy, int kernel_priority)
+{
+	if (is_fair_policy(policy))
+		return PRIO_TO_NICE(kernel_priority);
+	else
+		return MAX_RT_PRIO - 1 - kernel_priority;
+}
+
+static int to_kernel_prio(int policy, int user_priority)
+{
+	if (is_fair_policy(policy))
+		return NICE_TO_PRIO(user_priority);
+	else
+		return MAX_RT_PRIO - 1 - user_priority;
+}
+
+static void binder_do_set_priority(struct binder_thread *thread,
+				   const struct binder_priority *desired,
+				   bool verify)
+{
+	struct task_struct *task = thread->task;
+	int priority; /* user-space prio value */
+	bool has_cap_nice;
+	unsigned int policy = desired->sched_policy;
+
+	if (task->policy == policy && task->normal_prio == desired->prio) {
+		spin_lock(&thread->prio_lock);
+		if (thread->prio_state == BINDER_PRIO_PENDING)
+			thread->prio_state = BINDER_PRIO_SET;
+		spin_unlock(&thread->prio_lock);
 		return;
 	}
-	min_nice = rlimit_to_nice(rlimit(RLIMIT_NICE));
-	binder_debug(BINDER_DEBUG_PRIORITY_CAP,
-		     "%d: nice value %ld not allowed use %ld instead\n",
-		      current->pid, nice, min_nice);
-	set_user_nice(current, min_nice);
-	if (min_nice <= MAX_NICE)
+
+	has_cap_nice = has_capability_noaudit(task, CAP_SYS_NICE);
+
+	priority = to_userspace_prio(policy, desired->prio);
+
+	if (verify && is_rt_policy(policy) && !has_cap_nice) {
+		long max_rtprio = task_rlimit(task, RLIMIT_RTPRIO);
+
+		if (max_rtprio == 0) {
+			policy = SCHED_NORMAL;
+			priority = MIN_NICE;
+		} else if (priority > max_rtprio) {
+			priority = max_rtprio;
+		}
+	}
+
+	if (verify && is_fair_policy(policy) && !has_cap_nice) {
+		long min_nice = rlimit_to_nice(task_rlimit(task, RLIMIT_NICE));
+
+		if (min_nice > MAX_NICE) {
+			binder_user_error("%d RLIMIT_NICE not set\n",
+					  task->pid);
+			return;
+		} else if (priority < min_nice) {
+			priority = min_nice;
+		}
+	}
+
+	if (policy != desired->sched_policy ||
+	    to_kernel_prio(policy, priority) != desired->prio)
+		binder_debug(BINDER_DEBUG_PRIORITY_CAP,
+			     "%d: priority %d not allowed, using %d instead\n",
+			      task->pid, desired->prio,
+			      to_kernel_prio(policy, priority));
+
+	trace_binder_set_priority(task->tgid, task->pid, task->normal_prio,
+				  to_kernel_prio(policy, priority),
+				  desired->prio);
+
+	spin_lock(&thread->prio_lock);
+	if (!verify && thread->prio_state == BINDER_PRIO_ABORT) {
+		/*
+		 * A new priority has been set by an incoming nested
+		 * transaction. Abort this priority restore and allow
+		 * the transaction to run at the new desired priority.
+		 */
+		spin_unlock(&thread->prio_lock);
+		binder_debug(BINDER_DEBUG_PRIORITY_CAP,
+			"%d: %s: aborting priority restore\n",
+			thread->pid, __func__);
 		return;
-	binder_user_error("%d RLIMIT_NICE not set\n", current->pid);
+	}
+
+	/* Set the actual priority */
+	if (task->policy != policy || is_rt_policy(policy)) {
+		struct sched_param params;
+
+		params.sched_priority = is_rt_policy(policy) ? priority : 0;
+
+		sched_setscheduler_nocheck(task,
+					   policy | SCHED_RESET_ON_FORK,
+					   &params);
+	}
+	if (is_fair_policy(policy))
+		set_user_nice(task, priority);
+
+	thread->prio_state = BINDER_PRIO_SET;
+	spin_unlock(&thread->prio_lock);
+}
+
+static void binder_set_priority(struct binder_thread *thread,
+				const struct binder_priority *desired)
+{
+	binder_do_set_priority(thread, desired, /* verify = */ true);
+}
+
+static void binder_restore_priority(struct binder_thread *thread,
+				    const struct binder_priority *desired)
+{
+	binder_do_set_priority(thread, desired, /* verify = */ false);
+}
+
+static void binder_transaction_priority(struct binder_thread *thread,
+					struct binder_transaction *t,
+					struct binder_node *node)
+{
+	struct task_struct *task = thread->task;
+	struct binder_priority desired = t->priority;
+	const struct binder_priority node_prio = {
+		.sched_policy = node->sched_policy,
+		.prio = node->min_priority,
+	};
+	bool skip = false;
+
+	if (t->set_priority_called)
+		return;
+
+	t->set_priority_called = true;
+
+	trace_android_vh_binder_priority_skip(task, &skip);
+	if (skip)
+		return;
+
+	if (!node->inherit_rt && is_rt_policy(desired.sched_policy)) {
+		desired.prio = NICE_TO_PRIO(0);
+		desired.sched_policy = SCHED_NORMAL;
+	}
+
+	if (node_prio.prio < t->priority.prio ||
+	    (node_prio.prio == t->priority.prio &&
+	     node_prio.sched_policy == SCHED_FIFO)) {
+		/*
+		 * In case the minimum priority on the node is
+		 * higher (lower value), use that priority. If
+		 * the priority is the same, but the node uses
+		 * SCHED_FIFO, prefer SCHED_FIFO, since it can
+		 * run unbounded, unlike SCHED_RR.
+		 */
+		desired = node_prio;
+	}
+
+	spin_lock(&thread->prio_lock);
+	if (thread->prio_state == BINDER_PRIO_PENDING) {
+		/*
+		 * Task is in the process of changing priorities
+		 * saving its current values would be incorrect.
+		 * Instead, save the pending priority and signal
+		 * the task to abort the priority restore.
+		 */
+		t->saved_priority = thread->prio_next;
+		thread->prio_state = BINDER_PRIO_ABORT;
+		binder_debug(BINDER_DEBUG_PRIORITY_CAP,
+			"%d: saved pending priority %d\n",
+			current->pid, thread->prio_next.prio);
+	} else {
+		t->saved_priority.sched_policy = task->policy;
+		t->saved_priority.prio = task->normal_prio;
+	}
+	spin_unlock(&thread->prio_lock);
+
+	binder_set_priority(thread, &desired);
+	trace_android_vh_binder_set_priority(t, task);
 }
 
 static struct binder_node *binder_get_node_ilocked(struct binder_proc *proc,
@@ -731,6 +915,7 @@ static struct binder_node *binder_init_node_ilocked(
 	binder_uintptr_t ptr = fp ? fp->binder : 0;
 	binder_uintptr_t cookie = fp ? fp->cookie : 0;
 	__u32 flags = fp ? fp->flags : 0;
+	s8 priority;
 
 	assert_spin_locked(&proc->inner_lock);
 
@@ -763,8 +948,12 @@ static struct binder_node *binder_init_node_ilocked(
 	node->ptr = ptr;
 	node->cookie = cookie;
 	node->work.type = BINDER_WORK_NODE;
-	node->min_priority = flags & FLAT_BINDER_FLAG_PRIORITY_MASK;
+	priority = flags & FLAT_BINDER_FLAG_PRIORITY_MASK;
+	node->sched_policy = (flags & FLAT_BINDER_FLAG_SCHED_POLICY_MASK) >>
+		FLAT_BINDER_FLAG_SCHED_POLICY_SHIFT;
+	node->min_priority = to_kernel_prio(node->sched_policy, priority);
 	node->accept_fds = !!(flags & FLAT_BINDER_FLAG_ACCEPTS_FDS);
+	node->inherit_rt = !!(flags & FLAT_BINDER_FLAG_INHERIT_RT);
 	node->txn_security_ctx = !!(flags & FLAT_BINDER_FLAG_TXN_SECURITY_CTX);
 	spin_lock_init(&node->lock);
 	INIT_LIST_HEAD(&node->work.entry);
@@ -1114,6 +1303,7 @@ static struct binder_ref *binder_get_ref_for_node_olocked(
 		     "%d new ref %d desc %d for node %d\n",
 		      proc->pid, new_ref->data.debug_id, new_ref->data.desc,
 		      node->debug_id);
+	trace_android_vh_binder_new_ref(proc->tsk, new_ref->data.desc, new_ref->node->debug_id);
 	binder_node_unlock(node);
 	return new_ref;
 }
@@ -1281,6 +1471,8 @@ static struct binder_node *binder_get_node_from_ref(
  */
 static void binder_free_ref(struct binder_ref *ref)
 {
+	trace_android_vh_binder_del_ref(ref->proc ? ref->proc->tsk : NULL,
+					ref->data.desc);
 	if (ref->node)
 		binder_free_node(ref->node);
 	kfree(ref->death);
@@ -1934,23 +2126,24 @@ static void binder_deferred_fd_close(int fd)
 static void binder_transaction_buffer_release(struct binder_proc *proc,
 					      struct binder_thread *thread,
 					      struct binder_buffer *buffer,
-					      binder_size_t off_end_offset,
+					      binder_size_t failed_at,
 					      bool is_failure)
 {
 	int debug_id = buffer->debug_id;
-	binder_size_t off_start_offset, buffer_offset;
+	binder_size_t off_start_offset, buffer_offset, off_end_offset;
 
 	binder_debug(BINDER_DEBUG_TRANSACTION,
 		     "%d buffer release %d, size %zd-%zd, failed at %llx\n",
 		     proc->pid, buffer->debug_id,
 		     buffer->data_size, buffer->offsets_size,
-		     (unsigned long long)off_end_offset);
+		     (unsigned long long)failed_at);
 
 	if (buffer->target_node)
 		binder_dec_node(buffer->target_node, 1, 0);
 
 	off_start_offset = ALIGN(buffer->data_size, sizeof(void *));
-
+	off_end_offset = is_failure && failed_at ? failed_at :
+				off_start_offset + buffer->offsets_size;
 	for (buffer_offset = off_start_offset; buffer_offset < off_end_offset;
 	     buffer_offset += sizeof(binder_size_t)) {
 		struct binder_object_header *hdr;
@@ -2110,21 +2303,6 @@ static void binder_transaction_buffer_release(struct binder_proc *proc,
 	}
 }
 
-/* Clean up all the objects in the buffer */
-static inline void binder_release_entire_buffer(struct binder_proc *proc,
-						struct binder_thread *thread,
-						struct binder_buffer *buffer,
-						bool is_failure)
-{
-	binder_size_t off_end_offset;
-
-	off_end_offset = ALIGN(buffer->data_size, sizeof(void *));
-	off_end_offset += buffer->offsets_size;
-
-	binder_transaction_buffer_release(proc, thread, buffer,
-					  off_end_offset, is_failure);
-}
-
 static int binder_translate_binder(struct flat_binder_object *fp,
 				   struct binder_transaction *t,
 				   struct binder_thread *thread)
@@ -2752,9 +2930,11 @@ static int binder_proc_transaction(struct binder_transaction *t,
 	bool oneway = !!(t->flags & TF_ONE_WAY);
 	bool pending_async = false;
 	struct binder_transaction *t_outdated = NULL;
+	bool skip = false;
 
 	BUG_ON(!node);
 	binder_node_lock(node);
+
 	if (oneway) {
 		BUG_ON(thread);
 		if (node->has_async_transaction)
@@ -2776,10 +2956,18 @@ static int binder_proc_transaction(struct binder_transaction *t,
 		return proc->is_frozen ? BR_FROZEN_REPLY : BR_DEAD_REPLY;
 	}
 
-	if (!thread && !pending_async)
+	trace_android_vh_binder_proc_transaction_entry(proc, t,
+		&thread, node->debug_id, pending_async, !oneway, &skip);
+
+	if (!thread && !pending_async && !skip)
 		thread = binder_select_thread_ilocked(proc);
 
+	trace_android_vh_binder_proc_transaction(current, proc->tsk,
+		thread ? thread->task : NULL, node->debug_id, t->code,
+		pending_async);
+
 	if (thread) {
+		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);
@@ -2798,6 +2986,8 @@ static int binder_proc_transaction(struct binder_transaction *t,
 		binder_enqueue_work_ilocked(&t->work, &node->async_todo);
 	}
 
+	trace_android_vh_binder_proc_transaction_finish(proc, t,
+		thread ? thread->task : NULL, pending_async, !oneway);
 	if (!pending_async)
 		binder_wakeup_thread_ilocked(proc, thread, !oneway /* sync */);
 
@@ -2815,7 +3005,7 @@ static int binder_proc_transaction(struct binder_transaction *t,
 		t_outdated->buffer = NULL;
 		buffer->transaction = NULL;
 		trace_binder_transaction_update_buffer_release(buffer);
-		binder_release_entire_buffer(proc, NULL, buffer, false);
+		binder_transaction_buffer_release(proc, NULL, buffer, 0, 0);
 		binder_alloc_free_buf(&proc->alloc, buffer);
 		kfree(t_outdated);
 		binder_stats_deleted(BINDER_STAT_TRANSACTION);
@@ -2910,12 +3100,14 @@ static void binder_transaction(struct binder_proc *proc,
 	binder_size_t last_fixup_min_off = 0;
 	struct binder_context *context = proc->context;
 	int t_debug_id = atomic_inc_return(&binder_last_id);
+	ktime_t t_start_time = ktime_get();
 	char *secctx = NULL;
 	u32 secctx_sz = 0;
 	struct list_head sgc_head;
 	struct list_head pf_head;
 	const void __user *user_buffer = (const void __user *)
 				(uintptr_t)tr->data.ptr.buffer;
+	bool is_nested = false;
 	INIT_LIST_HEAD(&sgc_head);
 	INIT_LIST_HEAD(&pf_head);
 
@@ -2963,7 +3155,6 @@ static void binder_transaction(struct binder_proc *proc,
 		}
 		thread->transaction_stack = in_reply_to->to_parent;
 		binder_inner_proc_unlock(proc);
-		binder_set_nice(in_reply_to->saved_priority);
 		target_thread = binder_get_txn_from_and_acq_inner(in_reply_to);
 		if (target_thread == NULL) {
 			/* annotation for sparse */
@@ -2991,6 +3182,7 @@ static void binder_transaction(struct binder_proc *proc,
 		target_proc = target_thread->proc;
 		target_proc->tmp_ref++;
 		binder_inner_proc_unlock(target_thread->proc);
+		trace_android_vh_binder_reply(target_proc, proc, thread, tr);
 	} else {
 		if (tr->target.handle) {
 			struct binder_ref *ref;
@@ -3053,6 +3245,7 @@ static void binder_transaction(struct binder_proc *proc,
 			return_error_line = __LINE__;
 			goto err_invalid_target_handle;
 		}
+		trace_android_vh_binder_trans(target_proc, proc, thread, tr);
 		if (security_binder_transaction(proc->cred,
 						target_proc->cred) < 0) {
 			binder_txn_error("%d:%d transaction credentials failed\n",
@@ -3113,6 +3306,7 @@ static void binder_transaction(struct binder_proc *proc,
 					atomic_inc(&from->tmp_ref);
 					target_thread = from;
 					spin_unlock(&tmp->lock);
+					is_nested = true;
 					break;
 				}
 				spin_unlock(&tmp->lock);
@@ -3138,6 +3332,7 @@ static void binder_transaction(struct binder_proc *proc,
 	INIT_LIST_HEAD(&t->fd_fixups);
 	binder_stats_created(BINDER_STAT_TRANSACTION);
 	spin_lock_init(&t->lock);
+	trace_android_vh_binder_transaction_init(t);
 
 	tcomplete = kzalloc(sizeof(*tcomplete), GFP_KERNEL);
 	if (tcomplete == NULL) {
@@ -3151,6 +3346,7 @@ static void binder_transaction(struct binder_proc *proc,
 	binder_stats_created(BINDER_STAT_TRANSACTION_COMPLETE);
 
 	t->debug_id = t_debug_id;
+	t->start_time = t_start_time;
 
 	if (reply)
 		binder_debug(BINDER_DEBUG_TRANSACTION,
@@ -3175,12 +3371,23 @@ static void binder_transaction(struct binder_proc *proc,
 		t->from = thread;
 	else
 		t->from = NULL;
+	t->from_pid = proc->pid;
+	t->from_tid = thread->pid;
 	t->sender_euid = task_euid(proc->tsk);
 	t->to_proc = target_proc;
 	t->to_thread = target_thread;
 	t->code = tr->code;
 	t->flags = tr->flags;
-	t->priority = task_nice(current);
+	t->is_nested = is_nested;
+	if (!(t->flags & TF_ONE_WAY) &&
+	    binder_supported_policy(current->policy)) {
+		/* Inherit supported policies for synchronous transactions */
+		t->priority.sched_policy = current->policy;
+		t->priority.prio = current->normal_prio;
+	} else {
+		/* Otherwise, fall back to the default priority */
+		t->priority = target_proc->default_priority;
+	}
 
 	if (target_node && target_node->txn_security_ctx) {
 		u32 secid;
@@ -3593,7 +3800,15 @@ static void binder_transaction(struct binder_proc *proc,
 		binder_enqueue_thread_work_ilocked(target_thread, &t->work);
 		target_proc->outstanding_txns++;
 		binder_inner_proc_unlock(target_proc);
+		if (in_reply_to->is_nested) {
+			spin_lock(&thread->prio_lock);
+			thread->prio_state = BINDER_PRIO_PENDING;
+			thread->prio_next = in_reply_to->saved_priority;
+			spin_unlock(&thread->prio_lock);
+		}
 		wake_up_interruptible_sync(&target_thread->wait);
+		trace_android_vh_binder_restore_priority(in_reply_to, current);
+		binder_restore_priority(thread, &in_reply_to->saved_priority);
 		binder_free_transaction(in_reply_to);
 	} else if (!(t->flags & TF_ONE_WAY)) {
 		BUG_ON(t->buffer->async_transaction != 0);
@@ -3716,6 +3931,8 @@ static void binder_transaction(struct binder_proc *proc,
 
 	BUG_ON(thread->return_error.cmd != BR_OK);
 	if (in_reply_to) {
+		trace_android_vh_binder_restore_priority(in_reply_to, current);
+		binder_restore_priority(thread, &in_reply_to->saved_priority);
 		binder_set_txn_from_error(in_reply_to, t_debug_id,
 				return_error, return_error_param);
 		thread->return_error.cmd = BR_TRANSACTION_COMPLETE;
@@ -3773,7 +3990,7 @@ binder_free_buf(struct binder_proc *proc,
 		binder_node_inner_unlock(buf_node);
 	}
 	trace_binder_transaction_buffer_release(buffer);
-	binder_release_entire_buffer(proc, thread, buffer, is_failure);
+	binder_transaction_buffer_release(proc, thread, buffer, 0, is_failure);
 	binder_alloc_free_buf(&proc->alloc, buffer);
 }
 
@@ -4021,6 +4238,7 @@ static int binder_thread_write(struct binder_proc *proc,
 			}
 			thread->looper |= BINDER_LOOPER_STATE_REGISTERED;
 			binder_inner_proc_unlock(proc);
+			trace_android_vh_binder_looper_state_registered(thread, proc);
 			break;
 		case BC_ENTER_LOOPER:
 			binder_debug(BINDER_DEBUG_THREADS,
@@ -4281,6 +4499,7 @@ static int binder_wait_for_work(struct binder_thread *thread,
 		if (do_proc_work)
 			list_add(&thread->waiting_thread_node,
 				 &proc->waiting_threads);
+		trace_android_vh_binder_wait_for_work(do_proc_work, thread, proc);
 		binder_inner_proc_unlock(proc);
 		schedule();
 		binder_inner_proc_lock(proc);
@@ -4386,7 +4605,8 @@ static int binder_thread_read(struct binder_proc *proc,
 			wait_event_interruptible(binder_user_error_wait,
 						 binder_stop_on_user_error < 2);
 		}
-		binder_set_nice(proc->default_priority);
+		trace_android_vh_binder_restore_priority(NULL, current);
+		binder_restore_priority(thread, &proc->default_priority);
 	}
 
 	if (non_block) {
@@ -4412,6 +4632,10 @@ static int binder_thread_read(struct binder_proc *proc,
 		size_t trsize = sizeof(*trd);
 
 		binder_inner_proc_lock(proc);
+		trace_android_vh_binder_select_worklist_ilocked(&list, thread,
+						proc, wait_for_proc_work);
+		if (list)
+			goto skip;
 		if (!binder_worklist_empty_ilocked(&thread->todo))
 			list = &thread->todo;
 		else if (!binder_worklist_empty_ilocked(&proc->todo) &&
@@ -4425,11 +4649,12 @@ static int binder_thread_read(struct binder_proc *proc,
 				goto retry;
 			break;
 		}
-
+skip:
 		if (end - ptr < sizeof(tr) + 4) {
 			binder_inner_proc_unlock(proc);
 			break;
 		}
+		trace_android_vh_binder_thread_read(&list, proc, thread);
 		w = binder_dequeue_work_head_ilocked(list);
 		if (binder_worklist_empty_ilocked(&thread->todo))
 			thread->process_todo = false;
@@ -4616,13 +4841,7 @@ static int binder_thread_read(struct binder_proc *proc,
 
 			trd->target.ptr = target_node->ptr;
 			trd->cookie =  target_node->cookie;
-			t->saved_priority = task_nice(current);
-			if (t->priority < target_node->min_priority &&
-			    !(t->flags & TF_ONE_WAY))
-				binder_set_nice(t->priority);
-			else if (!(t->flags & TF_ONE_WAY) ||
-				 t->saved_priority > target_node->min_priority)
-				binder_set_nice(target_node->min_priority);
+			binder_transaction_priority(thread, t, target_node);
 			cmd = BR_TRANSACTION;
 		} else {
 			trd->target.ptr = 0;
@@ -4640,6 +4859,7 @@ static int binder_thread_read(struct binder_proc *proc,
 			trd->sender_pid =
 				task_tgid_nr_ns(sender,
 						task_active_pid_ns(current));
+			trace_android_vh_sync_txn_recvd(thread->task, t_from->task);
 		} else {
 			trd->sender_pid = 0;
 		}
@@ -4840,6 +5060,8 @@ static struct binder_thread *binder_get_thread_ilocked(
 	binder_stats_created(BINDER_STAT_THREAD);
 	thread->proc = proc;
 	thread->pid = current->pid;
+	get_task_struct(current);
+	thread->task = current;
 	atomic_set(&thread->tmp_ref, 0);
 	init_waitqueue_head(&thread->wait);
 	INIT_LIST_HEAD(&thread->todo);
@@ -4850,6 +5072,8 @@ static struct binder_thread *binder_get_thread_ilocked(
 	thread->return_error.cmd = BR_OK;
 	thread->reply_error.work.type = BINDER_WORK_RETURN_ERROR;
 	thread->reply_error.cmd = BR_OK;
+	spin_lock_init(&thread->prio_lock);
+	thread->prio_state = BINDER_PRIO_SET;
 	thread->ee.command = BR_OK;
 	INIT_LIST_HEAD(&new_thread->waiting_thread_node);
 	return thread;
@@ -4894,6 +5118,7 @@ static void binder_free_proc(struct binder_proc *proc)
 	put_task_struct(proc->tsk);
 	put_cred(proc->cred);
 	binder_stats_deleted(BINDER_STAT_PROC);
+	trace_android_vh_binder_free_proc(proc);
 	kfree(proc);
 }
 
@@ -4902,6 +5127,7 @@ static void binder_free_thread(struct binder_thread *thread)
 	BUG_ON(!list_empty(&thread->todo));
 	binder_stats_deleted(BINDER_STAT_THREAD);
 	binder_proc_dec_tmpref(thread->proc);
+	put_task_struct(thread->task);
 	kfree(thread);
 }
 
@@ -4991,6 +5217,7 @@ static int binder_thread_release(struct binder_proc *proc,
 	if (send_reply)
 		binder_send_failed_reply(send_reply, BR_DEAD_REPLY);
 	binder_release_work(proc, &thread->todo);
+	trace_android_vh_binder_thread_release(proc, thread);
 	binder_thread_dec_tmpref(thread);
 	return active_transactions;
 }
@@ -5067,6 +5294,7 @@ static int binder_ioctl_write_read(struct file *filp,
 		if (!binder_worklist_empty_ilocked(&proc->todo))
 			binder_wakeup_proc_ilocked(proc);
 		binder_inner_proc_unlock(proc);
+		trace_android_vh_binder_read_done(proc, thread);
 		if (ret < 0) {
 			if (copy_to_user(ubuf, &bwr, sizeof(bwr)))
 				ret = -EFAULT;
@@ -5586,8 +5814,7 @@ static int binder_mmap(struct file *filp, struct vm_area_struct *vma)
 		       proc->pid, vma->vm_start, vma->vm_end, "bad vm_flags", -EPERM);
 		return -EPERM;
 	}
-	vma->vm_flags |= VM_DONTCOPY | VM_MIXEDMAP;
-	vma->vm_flags &= ~VM_MAYWRITE;
+	vm_flags_mod(vma, VM_DONTCOPY | VM_MIXEDMAP, VM_MAYWRITE);
 
 	vma->vm_ops = &binder_vm_ops;
 	vma->vm_private_data = proc;
@@ -5616,7 +5843,14 @@ static int binder_open(struct inode *nodp, struct file *filp)
 	proc->cred = get_cred(filp->f_cred);
 	INIT_LIST_HEAD(&proc->todo);
 	init_waitqueue_head(&proc->freeze_wait);
-	proc->default_priority = task_nice(current);
+	if (binder_supported_policy(current->policy)) {
+		proc->default_priority.sched_policy = current->policy;
+		proc->default_priority.prio = current->normal_prio;
+	} else {
+		proc->default_priority.sched_policy = SCHED_NORMAL;
+		proc->default_priority.prio = NICE_TO_PRIO(0);
+	}
+
 	/* binderfs stashes devices in i_private */
 	if (is_binderfs_device(nodp)) {
 		binder_dev = nodp->i_private;
@@ -5645,7 +5879,7 @@ static int binder_open(struct inode *nodp, struct file *filp)
 	}
 	hlist_add_head(&proc->proc_node, &binder_procs);
 	mutex_unlock(&binder_procs_lock);
-
+	trace_android_vh_binder_preset(&binder_procs, &binder_procs_lock);
 	if (binder_debugfs_dir_entry_proc && !existing_pid) {
 		char strbuf[11];
 
@@ -5937,17 +6171,20 @@ static void print_binder_transaction_ilocked(struct seq_file *m,
 {
 	struct binder_proc *to_proc;
 	struct binder_buffer *buffer = t->buffer;
+	ktime_t current_time = ktime_get();
 
 	spin_lock(&t->lock);
 	to_proc = t->to_proc;
 	seq_printf(m,
-		   "%s %d: %pK from %d:%d to %d:%d code %x flags %x pri %ld r%d",
+		   "%s %d: %pK from %d:%d to %d:%d code %x flags %x pri %d:%d r%d elapsed %lldms",
 		   prefix, t->debug_id, t,
-		   t->from ? t->from->proc->pid : 0,
-		   t->from ? t->from->pid : 0,
+		   t->from_pid,
+		   t->from_tid,
 		   to_proc ? to_proc->pid : 0,
 		   t->to_thread ? t->to_thread->pid : 0,
-		   t->code, t->flags, t->priority, t->need_reply);
+		   t->code, t->flags, t->priority.sched_policy,
+		   t->priority.prio, t->need_reply,
+		   ktime_ms_delta(current_time, t->start_time));
 	spin_unlock(&t->lock);
 
 	if (proc != to_proc) {
@@ -6065,8 +6302,9 @@ static void print_binder_node_nilocked(struct seq_file *m,
 	hlist_for_each_entry(ref, &node->refs, node_entry)
 		count++;
 
-	seq_printf(m, "  node %d: u%016llx c%016llx hs %d hw %d ls %d lw %d is %d iw %d tr %d",
+	seq_printf(m, "  node %d: u%016llx c%016llx pri %d:%d hs %d hw %d ls %d lw %d is %d iw %d tr %d",
 		   node->debug_id, (u64)node->ptr, (u64)node->cookie,
+		   node->sched_policy, node->min_priority,
 		   node->has_strong_ref, node->has_weak_ref,
 		   node->local_strong_refs, node->local_weak_refs,
 		   node->internal_strong_refs, count, node->tmp_refs);
@@ -6610,5 +6848,6 @@ device_initcall(binder_init);
 
 #define CREATE_TRACE_POINTS
 #include "binder_trace.h"
+EXPORT_TRACEPOINT_SYMBOL_GPL(binder_transaction_received);
 
 MODULE_LICENSE("GPL v2");
diff --git a/drivers/android/binder_alloc.c b/drivers/android/binder_alloc.c
index 4fb89ef..7d10b7e 100644
--- a/drivers/android/binder_alloc.c
+++ b/drivers/android/binder_alloc.c
@@ -25,6 +25,7 @@
 #include <linux/sizes.h>
 #include "binder_alloc.h"
 #include "binder_trace.h"
+#include <trace/hooks/binder.h>
 
 struct list_lru binder_alloc_lru;
 
@@ -407,6 +408,7 @@ static struct binder_buffer *binder_alloc_new_buf_locked(
 				alloc->pid, extra_buffers_size);
 		return ERR_PTR(-EINVAL);
 	}
+	trace_android_vh_binder_alloc_new_buf_locked(size, &alloc->free_async_space, is_async);
 	if (is_async &&
 	    alloc->free_async_space < size + sizeof(struct binder_buffer)) {
 		binder_alloc_debug(BINDER_DEBUG_BUFFER_ALLOC,
diff --git a/drivers/android/binder_internal.h b/drivers/android/binder_internal.h
index abe19d8..439c8c2 100644
--- a/drivers/android/binder_internal.h
+++ b/drivers/android/binder_internal.h
@@ -215,10 +215,13 @@ struct binder_error {
  *                        and by @lock)
  * @has_async_transaction: async transaction to node in progress
  *                        (protected by @lock)
+ * @sched_policy:         minimum scheduling policy for node
+ *                        (invariant after initialized)
  * @accept_fds:           file descriptor operations supported for node
  *                        (invariant after initialized)
  * @min_priority:         minimum scheduling priority
  *                        (invariant after initialized)
+ * @inherit_rt:           inherit RT scheduling policy from caller
  * @txn_security_ctx:     require sender's security context
  *                        (invariant after initialized)
  * @async_todo:           list of async work items
@@ -256,6 +259,8 @@ struct binder_node {
 		/*
 		 * invariant after initialization
 		 */
+		u8 sched_policy:2;
+		u8 inherit_rt:1;
 		u8 accept_fds:1;
 		u8 txn_security_ctx:1;
 		u8 min_priority;
@@ -325,6 +330,28 @@ struct binder_ref {
 };
 
 /**
+ * struct binder_priority - scheduler policy and priority
+ * @sched_policy            scheduler policy
+ * @prio                    [100..139] for SCHED_NORMAL, [0..99] for FIFO/RT
+ *
+ * The binder driver supports inheriting the following scheduler policies:
+ * SCHED_NORMAL
+ * SCHED_BATCH
+ * SCHED_FIFO
+ * SCHED_RR
+ */
+struct binder_priority {
+	unsigned int sched_policy;
+	int prio;
+};
+
+enum binder_prio_state {
+	BINDER_PRIO_SET,	/* desired priority set */
+	BINDER_PRIO_PENDING,	/* initiated a saved priority restore */
+	BINDER_PRIO_ABORT,	/* abort the pending priority restore */
+};
+
+/**
  * struct binder_proc - binder process bookkeeping
  * @proc_node:            element for binder_procs list
  * @threads:              rbtree of binder_threads in this proc
@@ -424,7 +451,7 @@ struct binder_proc {
 	int requested_threads;
 	int requested_threads_started;
 	int tmp_ref;
-	long default_priority;
+	struct binder_priority default_priority;
 	struct dentry *debugfs_entry;
 	struct binder_alloc alloc;
 	struct binder_context *context;
@@ -469,6 +496,13 @@ struct binder_proc {
  * @is_dead:              thread is dead and awaiting free
  *                        when outstanding transactions are cleaned up
  *                        (protected by @proc->inner_lock)
+ * @task:                 struct task_struct for this thread
+ * @prio_lock:            protects thread priority fields
+ * @prio_next:            saved priority to be restored next
+ *                        (protected by @prio_lock)
+ * @prio_state:           state of the priority restore process as
+ *                        defined by enum binder_prio_state
+ *                        (protected by @prio_lock)
  *
  * Bookkeeping structure for binder threads.
  */
@@ -489,6 +523,10 @@ struct binder_thread {
 	struct binder_stats stats;
 	atomic_t tmp_ref;
 	bool is_dead;
+	struct task_struct *task;
+	spinlock_t prio_lock;
+	struct binder_priority prio_next;
+	enum binder_prio_state prio_state;
 };
 
 /**
@@ -514,6 +552,8 @@ struct binder_transaction {
 	int debug_id;
 	struct binder_work work;
 	struct binder_thread *from;
+	pid_t from_pid;
+	pid_t from_tid;
 	struct binder_transaction *from_parent;
 	struct binder_proc *to_proc;
 	struct binder_thread *to_thread;
@@ -524,9 +564,12 @@ struct binder_transaction {
 	struct binder_buffer *buffer;
 	unsigned int    code;
 	unsigned int    flags;
-	long    priority;
-	long    saved_priority;
+	struct binder_priority priority;
+	struct binder_priority saved_priority;
+	bool set_priority_called;
+	bool is_nested;
 	kuid_t  sender_euid;
+	ktime_t start_time;
 	struct list_head fd_fixups;
 	binder_uintptr_t security_ctx;
 	/**
@@ -536,6 +579,7 @@ struct binder_transaction {
 	 * during thread teardown
 	 */
 	spinlock_t lock;
+	ANDROID_VENDOR_DATA(1);
 };
 
 /**
diff --git a/drivers/android/binder_trace.h b/drivers/android/binder_trace.h
index 8cc07e6..5d82cf8 100644
--- a/drivers/android/binder_trace.h
+++ b/drivers/android/binder_trace.h
@@ -76,6 +76,30 @@ DEFINE_BINDER_FUNCTION_RETURN_EVENT(binder_ioctl_done);
 DEFINE_BINDER_FUNCTION_RETURN_EVENT(binder_write_done);
 DEFINE_BINDER_FUNCTION_RETURN_EVENT(binder_read_done);
 
+TRACE_EVENT(binder_set_priority,
+	TP_PROTO(int proc, int thread, unsigned int old_prio,
+		 unsigned int desired_prio, unsigned int new_prio),
+	TP_ARGS(proc, thread, old_prio, new_prio, desired_prio),
+
+	TP_STRUCT__entry(
+		__field(int, proc)
+		__field(int, thread)
+		__field(unsigned int, old_prio)
+		__field(unsigned int, new_prio)
+		__field(unsigned int, desired_prio)
+	),
+	TP_fast_assign(
+		__entry->proc = proc;
+		__entry->thread = thread;
+		__entry->old_prio = old_prio;
+		__entry->new_prio = new_prio;
+		__entry->desired_prio = desired_prio;
+	),
+	TP_printk("proc=%d thread=%d old=%d => new=%d desired=%d",
+		  __entry->proc, __entry->thread, __entry->old_prio,
+		  __entry->new_prio, __entry->desired_prio)
+);
+
 TRACE_EVENT(binder_wait_for_work,
 	TP_PROTO(bool proc_work, bool transaction_stack, bool thread_todo),
 	TP_ARGS(proc_work, transaction_stack, thread_todo),
diff --git a/drivers/android/debug_kinfo.c b/drivers/android/debug_kinfo.c
new file mode 100644
index 0000000..6a16232
--- /dev/null
+++ b/drivers/android/debug_kinfo.c
@@ -0,0 +1,198 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * debug_kinfo.c - backup kernel information for bootloader usage
+ *
+ * Copyright 2002 Rusty Russell <rusty@rustcorp.com.au> IBM Corporation
+ * Copyright 2021 Google LLC
+ */
+
+#include <linux/platform_device.h>
+#include <linux/kallsyms.h>
+#include <linux/vmalloc.h>
+#include <linux/module.h>
+#include <linux/of_address.h>
+#include <linux/of_reserved_mem.h>
+#include <linux/pgtable.h>
+#include <asm/module.h>
+#include "debug_kinfo.h"
+
+/*
+ * These will be re-linked against their real values
+ * during the second link stage.
+ */
+extern const unsigned long kallsyms_addresses[] __weak;
+extern const int kallsyms_offsets[] __weak;
+extern const u8 kallsyms_names[] __weak;
+
+/*
+ * Tell the compiler that the count isn't in the small data section if the arch
+ * has one (eg: FRV).
+ */
+extern const unsigned int kallsyms_num_syms __weak
+__section(".rodata");
+
+extern const unsigned long kallsyms_relative_base __weak
+__section(".rodata");
+
+extern const u8 kallsyms_token_table[] __weak;
+extern const u16 kallsyms_token_index[] __weak;
+
+extern const unsigned int kallsyms_markers[] __weak;
+
+static void *all_info_addr;
+static u32 all_info_size;
+
+static void update_kernel_all_info(struct kernel_all_info *all_info)
+{
+	int index;
+	struct kernel_info *info;
+	u32 *checksum_info;
+
+	all_info->magic_number = DEBUG_KINFO_MAGIC;
+	all_info->combined_checksum = 0;
+
+	info = &(all_info->info);
+	checksum_info = (u32 *)info;
+	for (index = 0; index < sizeof(*info) / sizeof(u32); index++)
+		all_info->combined_checksum ^= checksum_info[index];
+}
+
+static int build_info_set(const char *str, const struct kernel_param *kp)
+{
+	struct kernel_all_info *all_info;
+	size_t build_info_size;
+	int ret = 0;
+
+	if (all_info_addr == 0 || all_info_size == 0) {
+		ret = -EPERM;
+		goto Exit;
+	}
+
+	all_info = (struct kernel_all_info *)all_info_addr;
+	build_info_size = sizeof(all_info->info.build_info);
+
+	memcpy(&all_info->info.build_info, str, min(build_info_size - 1, strlen(str)));
+	update_kernel_all_info(all_info);
+
+	if (strlen(str) > build_info_size) {
+		pr_warn("%s: Build info buffer (len: %zd) can't hold entire string '%s'\n",
+				__func__, build_info_size, str);
+		ret = -ENOMEM;
+	}
+
+Exit:
+	return ret;
+}
+
+static const struct kernel_param_ops build_info_op = {
+	.set = build_info_set,
+};
+
+module_param_cb(build_info, &build_info_op, NULL, 0200);
+MODULE_PARM_DESC(build_info, "Write build info to field 'build_info' of debug kinfo.");
+
+static int debug_kinfo_probe(struct platform_device *pdev)
+{
+	struct device_node *mem_region;
+	struct reserved_mem *rmem;
+	struct kernel_all_info *all_info;
+	struct kernel_info *info;
+
+	mem_region = of_parse_phandle(pdev->dev.of_node, "memory-region", 0);
+	if (!mem_region) {
+		dev_warn(&pdev->dev, "no such memory-region\n");
+		return -ENODEV;
+	}
+
+	rmem = of_reserved_mem_lookup(mem_region);
+	if (!rmem) {
+		dev_warn(&pdev->dev, "no such reserved mem of node name %s\n",
+				pdev->dev.of_node->name);
+		return -ENODEV;
+	}
+
+	/* Need to wait for reserved memory to be mapped */
+	if (!rmem->priv) {
+		return -EPROBE_DEFER;
+	}
+
+	if (!rmem->base || !rmem->size) {
+		dev_warn(&pdev->dev, "unexpected reserved memory\n");
+		return -EINVAL;
+	}
+
+	if (rmem->size < sizeof(struct kernel_all_info)) {
+		dev_warn(&pdev->dev, "unexpected reserved memory size\n");
+		return -EINVAL;
+	}
+
+	all_info_addr = rmem->priv;
+	all_info_size = rmem->size;
+
+	memset(all_info_addr, 0, sizeof(struct kernel_all_info));
+	all_info = (struct kernel_all_info *)all_info_addr;
+	info = &(all_info->info);
+	info->enabled_all = IS_ENABLED(CONFIG_KALLSYMS_ALL);
+	info->enabled_base_relative = IS_ENABLED(CONFIG_KALLSYMS_BASE_RELATIVE);
+	info->enabled_absolute_percpu = IS_ENABLED(CONFIG_KALLSYMS_ABSOLUTE_PERCPU);
+	info->enabled_cfi_clang = IS_ENABLED(CONFIG_CFI_CLANG);
+	info->num_syms = kallsyms_num_syms;
+	info->name_len = KSYM_NAME_LEN;
+	info->bit_per_long = BITS_PER_LONG;
+	info->module_name_len = MODULE_NAME_LEN;
+	info->symbol_len = KSYM_SYMBOL_LEN;
+	if (!info->enabled_base_relative)
+		info->_addresses_pa = (u64)__pa_symbol((volatile void *)kallsyms_addresses);
+	else {
+		info->_relative_pa = (u64)__pa_symbol((volatile void *)kallsyms_relative_base);
+		info->_offsets_pa = (u64)__pa_symbol((volatile void *)kallsyms_offsets);
+	}
+	info->_stext_pa = (u64)__pa_symbol(_stext);
+	info->_etext_pa = (u64)__pa_symbol(_etext);
+	info->_sinittext_pa = (u64)__pa_symbol(_sinittext);
+	info->_einittext_pa = (u64)__pa_symbol(_einittext);
+	info->_end_pa = (u64)__pa_symbol(_end);
+	info->_names_pa = (u64)__pa_symbol((volatile void *)kallsyms_names);
+	info->_token_table_pa = (u64)__pa_symbol((volatile void *)kallsyms_token_table);
+	info->_token_index_pa = (u64)__pa_symbol((volatile void *)kallsyms_token_index);
+	info->_markers_pa = (u64)__pa_symbol((volatile void *)kallsyms_markers);
+	info->thread_size = THREAD_SIZE;
+	info->swapper_pg_dir_pa = (u64)__pa_symbol(swapper_pg_dir);
+	strlcpy(info->last_uts_release, init_utsname()->release, sizeof(info->last_uts_release));
+	info->enabled_modules_tree_lookup = IS_ENABLED(CONFIG_MODULES_TREE_LOOKUP);
+	info->mod_core_layout_offset = offsetof(struct module, core_layout);
+	info->mod_init_layout_offset = offsetof(struct module, init_layout);
+	info->mod_kallsyms_offset = offsetof(struct module, kallsyms);
+#if defined(CONFIG_RANDOMIZE_BASE) && defined(MODULES_VSIZE)
+	info->module_start_va = module_alloc_base;
+	info->module_end_va = info->module_start_va + MODULES_VSIZE;
+#elif defined(CONFIG_MODULES) && defined(MODULES_VADDR)
+	info->module_start_va = MODULES_VADDR;
+	info->module_end_va = MODULES_END;
+#else
+	info->module_start_va = VMALLOC_START;
+	info->module_end_va = VMALLOC_END;
+#endif
+	update_kernel_all_info(all_info);
+
+	return 0;
+}
+
+static const struct of_device_id debug_kinfo_of_match[] = {
+	{ .compatible	= "google,debug-kinfo" },
+	{},
+};
+MODULE_DEVICE_TABLE(of, debug_kinfo_of_match);
+
+static struct platform_driver debug_kinfo_driver = {
+	.probe = debug_kinfo_probe,
+	.driver = {
+		.name = "debug-kinfo",
+		.of_match_table = of_match_ptr(debug_kinfo_of_match),
+	},
+};
+module_platform_driver(debug_kinfo_driver);
+
+MODULE_AUTHOR("Jone Chou <jonechou@google.com>");
+MODULE_DESCRIPTION("Debug Kinfo Driver");
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/android/debug_kinfo.h b/drivers/android/debug_kinfo.h
new file mode 100644
index 0000000..921f140
--- /dev/null
+++ b/drivers/android/debug_kinfo.h
@@ -0,0 +1,71 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * debug_kinfo.h - backup kernel information for bootloader usage
+ *
+ * Copyright 2021 Google LLC
+ */
+
+#ifndef DEBUG_KINFO_H
+#define DEBUG_KINFO_H
+
+#include <linux/utsname.h>
+
+#define BUILD_INFO_LEN		256
+#define DEBUG_KINFO_MAGIC	0xCCEEDDFF
+
+/*
+ * Header structure must be byte-packed, since the table is provided to
+ * bootloader.
+ */
+struct kernel_info {
+	/* For kallsyms */
+	__u8 enabled_all;
+	__u8 enabled_base_relative;
+	__u8 enabled_absolute_percpu;
+	__u8 enabled_cfi_clang;
+	__u32 num_syms;
+	__u16 name_len;
+	__u16 bit_per_long;
+	__u16 module_name_len;
+	__u16 symbol_len;
+	__u64 _addresses_pa;
+	__u64 _relative_pa;
+	__u64 _stext_pa;
+	__u64 _etext_pa;
+	__u64 _sinittext_pa;
+	__u64 _einittext_pa;
+	__u64 _end_pa;
+	__u64 _offsets_pa;
+	__u64 _names_pa;
+	__u64 _token_table_pa;
+	__u64 _token_index_pa;
+	__u64 _markers_pa;
+
+	/* For frame pointer */
+	__u32 thread_size;
+
+	/* For virt_to_phys */
+	__u64 swapper_pg_dir_pa;
+
+	/* For linux banner */
+	__u8 last_uts_release[__NEW_UTS_LEN];
+
+	/* Info of running build */
+	__u8 build_info[BUILD_INFO_LEN];
+
+	/* For module kallsyms */
+	__u32 enabled_modules_tree_lookup;
+	__u32 mod_core_layout_offset;
+	__u32 mod_init_layout_offset;
+	__u32 mod_kallsyms_offset;
+	__u64 module_start_va;
+	__u64 module_end_va;
+} __packed;
+
+struct kernel_all_info {
+	__u32 magic_number;
+	__u32 combined_checksum;
+	struct kernel_info info;
+} __packed;
+
+#endif // DEBUG_KINFO_H
diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
new file mode 100644
index 0000000..c2af4ce
--- /dev/null
+++ b/drivers/android/vendor_hooks.c
@@ -0,0 +1,309 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/* vendor_hook.c
+ *
+ * Android Vendor Hook Support
+ *
+ * Copyright 2020 Google LLC
+ */
+
+#include <linux/iova.h>
+#include <linux/dma-buf.h>
+#include <linux/futex.h>
+#include <linux/pm_qos.h>
+
+#define CREATE_TRACE_POINTS
+#include <trace/hooks/vendor_hooks.h>
+#include <linux/tracepoint.h>
+
+#include <trace/hooks/fpsimd.h>
+#include <trace/hooks/binder.h>
+#include <trace/hooks/dtask.h>
+#include <trace/hooks/cpuidle.h>
+#include <trace/hooks/mpam.h>
+#include <trace/hooks/wqlockup.h>
+#include <trace/hooks/debug.h>
+#include <trace/hooks/sysrqcrash.h>
+#include <trace/hooks/printk.h>
+#include <trace/hooks/epoch.h>
+#include <trace/hooks/cpufreq.h>
+#include <trace/hooks/preemptirq.h>
+#include <trace/hooks/ftrace_dump.h>
+#include <trace/hooks/ufshcd.h>
+#include <trace/hooks/mmc.h>
+#include <trace/hooks/cgroup.h>
+#include <trace/hooks/sys.h>
+#include <trace/hooks/iommu.h>
+#include <trace/hooks/mm.h>
+#include <trace/hooks/net.h>
+#include <trace/hooks/pm_domain.h>
+#include <trace/hooks/cpuidle_psci.h>
+#include <trace/hooks/vmscan.h>
+#include <trace/hooks/avc.h>
+#include <trace/hooks/creds.h>
+#include <trace/hooks/module.h>
+#include <trace/hooks/selinux.h>
+#include <trace/hooks/syscall_check.h>
+#include <trace/hooks/remoteproc.h>
+#include <trace/hooks/rwsem.h>
+#include <trace/hooks/futex.h>
+#include <trace/hooks/fips140.h>
+#include <trace/hooks/dmabuf.h>
+#include <trace/hooks/gic.h>
+#include <trace/hooks/gic_v3.h>
+#include <trace/hooks/timer.h>
+#include <trace/hooks/topology.h>
+#include <trace/hooks/hung_task.h>
+#include <trace/hooks/bug.h>
+#include <trace/hooks/softlockup.h>
+#include <trace/hooks/power.h>
+#include <trace/hooks/fault.h>
+#include <trace/hooks/traps.h>
+#include <trace/hooks/thermal.h>
+#include <trace/hooks/audio_usboffload.h>
+#include <trace/hooks/typec.h>
+#include <trace/hooks/user.h>
+#include <trace/hooks/signal.h>
+#include <trace/hooks/psci.h>
+#include <trace/hooks/psi.h>
+#include <trace/hooks/bl_hib.h>
+
+/*
+ * Export tracepoints that act as a bare tracehook (ie: have no trace event
+ * associated with them) to allow external modules to probe them.
+ */
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sk_alloc);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sk_free);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_nf_conn_alloc);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_nf_conn_free);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_refrigerator);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_arch_set_freq_scale);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_is_fpsimd_save);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_transaction_init);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_priority_skip);
+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_mutex_wait_start);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mutex_wait_finish);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mutex_init);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rtmutex_wait_start);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rtmutex_wait_finish);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mutex_opt_spin_start);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mutex_opt_spin_finish);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mutex_can_spin_on_owner);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_read_wait_start);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_read_wait_finish);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_write_wait_start);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_write_wait_finish);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_opt_spin_start);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_opt_spin_finish);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_can_spin_on_owner);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sched_show_task);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpu_idle_enter);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpu_idle_exit);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mpam_set);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_wq_lockup_pool);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ipi_stop);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sysrq_crash);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_printk_hotplug);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_suspend_epoch_val);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_resume_epoch_val);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_freq_table_limits);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpufreq_resolve_freq);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpufreq_fast_switch);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpufreq_target);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_preempt_disable);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_preempt_enable);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_irqs_disable);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_irqs_enable);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_cpu_cgroup_attach);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_cpu_cgroup_online);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_meminfo_cache_adjust);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_si_mem_available_adjust);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_si_meminfo_adjust);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_oops_enter);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_oops_exit);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_size_check);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_format_check);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_dump_buffer);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_fill_prdt);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_prepare_command);
+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_vh_syscall_prctl_finished);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_send_uic_command);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_send_tm_command);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_check_int_errors);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_update_sdev);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_clock_scaling);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_use_mcq_hooks);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_mcq_abort);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cgroup_attach);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_iommu_setup_dma_ops);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_iommu_alloc_insert_iova);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_iommu_iovad_alloc_iova);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_iommu_iovad_free_iova);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_iommu_iovad_init_alloc_algo);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_iommu_limit_align_shift);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ptype_head);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_allow_domain_state);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpuidle_psci_enter);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpuidle_psci_exit);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_wait_for_work);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_proc_transaction_finish);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_proc_transaction_entry);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_select_worklist_ilocked);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sync_txn_recvd);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_cpufreq_transition);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_freq_qos_add_request);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_freq_qos_update_request);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_freq_qos_remove_request);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_balance_anon_file_reclaim);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_show_max_freq);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_dm_bufio_shrink_scan_bypass);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cleanup_old_buffers_bypass);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_selinux_avc_insert);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_selinux_avc_node_delete);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_selinux_avc_node_replace);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_selinux_avc_lookup);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_commit_creds);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_exit_creds);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_override_creds);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_revert_creds);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_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_rvh_set_module_core_rw_nx);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_module_init_rw_nx);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_module_permit_before_init);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_module_permit_after_init);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_selinux_is_initialized);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_shmem_get_folio);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_check_mmap_file);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_check_file_open);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_check_bpf_syscall);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ignore_dmabuf_vmap_bounds);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rproc_recovery);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rproc_recovery_set);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_init);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_wake);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_write_finished);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alter_rwsem_list_add);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alter_futex_plist_add);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_futex_sleep_start);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_do_futex);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_futex_wait_start);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_futex_wait_end);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_futex_wake_traverse_plist);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_futex_wake_this);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_futex_wake_up_q_finish);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sha256);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_aes_expandkey);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_aes_encrypt);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_aes_decrypt);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_timer_calc_index);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_gic_v3_set_affinity);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_gic_set_affinity);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_gic_v3_affinity_init);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_check_uninterrupt_tasks);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_check_uninterrupt_tasks_done);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_meminfo_proc_show);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_exit_mm);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alloc_pages_slowpath);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_mem);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_print_slabinfo_header);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cache_show);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_report_bug);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_watchdog_timer_softlockup);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_try_to_freeze_todo);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_try_to_freeze_todo_unfrozen);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_die_kernel_fault);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_do_sea);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_do_sp_pc_abort);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_do_undefinstr);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_do_el1_bti);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_do_el1_fpac);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_panic_unhandled);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_arm64_serror_panic);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_disable_thermal_cooling_stats);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_gic_resume);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_gic_v3_suspend);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_audio_usb_offload_connect);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_audio_usb_offload_disconnect);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_kswapd_per_node);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_typec_tcpci_override_toggling);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_typec_tcpci_get_vbus);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_typec_store_partner_src_caps);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_typec_tcpm_get_timer);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_typec_tcpm_modify_src_caps);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_typec_tcpm_log);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_gfp_zone_flags);
+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_binder_looper_state_registered);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_thread_read);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_free_proc);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_thread_release);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_has_work_ilocked);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_read_done);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_preset);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alloc_uid);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_free_user);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mem_cgroup_id_remove);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mem_cgroup_css_offline);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mem_cgroup_css_online);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mem_cgroup_free);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mem_cgroup_alloc);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_cpuset_fork);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_alloc_new_buf_locked);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_reply);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_trans);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mmap_region);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_try_to_unmap_one);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_shrink_slab_bypass);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_do_shrink_slab);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_get_page_wmark);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_page_add_new_anon_rmap);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_psci_tos_resident_on);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_psci_cpu_suspend);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_psi_event);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_psi_group);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpufreq_acct_update_power);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_modify_scan_control);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_should_continue_reclaim);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_file_is_tiny_bypass);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_mmc_resume);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_mmc_suspend);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_exit_signal);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_shrink_node_memcgs);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_modify_thermal_request_freq);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_modify_thermal_target_freq);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_proc_transaction);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_new_ref);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_del_ref);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_thermal_register);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_thermal_unregister);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_get_thermal_zone_device);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_thermal_power_cap);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alloc_pages_reclaim_bypass);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alloc_pages_failure_bypass);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_madvise_pageout_swap_entry);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_madvise_swapin_walk_pmd_entry);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_process_madvise_end);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_smaps_pte_entry);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_smap);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_ctl_dirty_rate);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_check_hibernation_swap);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_save_cpu_resume);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_save_hib_resume_bdev);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_encrypt_page);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_init_aes_encrypt);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_skip_swap_map_write);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_post_image_save);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_madvise_cold_pageout_skip);
diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c
index 9c0052d..8f931a6 100644
--- a/drivers/ata/libata-scsi.c
+++ b/drivers/ata/libata-scsi.c
@@ -367,8 +367,12 @@ int ata_cmd_ioctl(struct scsi_device *scsidev, void __user *arg)
 	u8 scsi_cmd[MAX_COMMAND_SIZE];
 	u8 args[4], *argbuf = NULL;
 	int argsize = 0;
-	enum dma_data_direction data_dir;
 	struct scsi_sense_hdr sshdr;
+	const struct scsi_exec_args exec_args = {
+		.sshdr = &sshdr,
+		.sense = sensebuf,
+		.sense_len = sizeof(sensebuf),
+	};
 	int cmd_result;
 
 	if (arg == NULL)
@@ -391,11 +395,9 @@ int ata_cmd_ioctl(struct scsi_device *scsidev, void __user *arg)
 		scsi_cmd[1]  = (4 << 1); /* PIO Data-in */
 		scsi_cmd[2]  = 0x0e;     /* no off.line or cc, read from dev,
 					    block count in sector count field */
-		data_dir = DMA_FROM_DEVICE;
 	} else {
 		scsi_cmd[1]  = (3 << 1); /* Non-data */
 		scsi_cmd[2]  = 0x20;     /* cc but no off.line or data xfer */
-		data_dir = DMA_NONE;
 	}
 
 	scsi_cmd[0] = ATA_16;
@@ -413,9 +415,8 @@ int ata_cmd_ioctl(struct scsi_device *scsidev, void __user *arg)
 
 	/* Good values for timeout and retries?  Values below
 	   from scsi_ioctl_send_command() for default case... */
-	cmd_result = scsi_execute(scsidev, scsi_cmd, data_dir, argbuf, argsize,
-				  sensebuf, &sshdr, (10*HZ), 5, 0, 0, NULL);
-
+	cmd_result = scsi_execute_cmd(scsidev, scsi_cmd, REQ_OP_DRV_IN, argbuf,
+				      argsize, 10 * HZ, 5, &exec_args);
 	if (cmd_result < 0) {
 		rc = cmd_result;
 		goto error;
@@ -475,6 +476,11 @@ int ata_task_ioctl(struct scsi_device *scsidev, void __user *arg)
 	u8 args[7];
 	struct scsi_sense_hdr sshdr;
 	int cmd_result;
+	const struct scsi_exec_args exec_args = {
+		.sshdr = &sshdr,
+		.sense = sensebuf,
+		.sense_len = sizeof(sensebuf),
+	};
 
 	if (arg == NULL)
 		return -EINVAL;
@@ -497,9 +503,8 @@ int ata_task_ioctl(struct scsi_device *scsidev, void __user *arg)
 
 	/* Good values for timeout and retries?  Values below
 	   from scsi_ioctl_send_command() for default case... */
-	cmd_result = scsi_execute(scsidev, scsi_cmd, DMA_NONE, NULL, 0,
-				sensebuf, &sshdr, (10*HZ), 5, 0, 0, NULL);
-
+	cmd_result = scsi_execute_cmd(scsidev, scsi_cmd, REQ_OP_DRV_IN, NULL,
+				      0, 10 * HZ, 5, &exec_args);
 	if (cmd_result < 0) {
 		rc = cmd_result;
 		goto error;
diff --git a/drivers/base/arch_topology.c b/drivers/base/arch_topology.c
index e7d6e665..2cdade8 100644
--- a/drivers/base/arch_topology.c
+++ b/drivers/base/arch_topology.c
@@ -23,6 +23,10 @@
 #define CREATE_TRACE_POINTS
 #include <trace/events/thermal_pressure.h>
 
+#undef CREATE_TRACE_POINTS
+#include <trace/hooks/sched.h>
+#include <trace/hooks/topology.h>
+
 static DEFINE_PER_CPU(struct scale_freq_data __rcu *, sft_data);
 static struct cpumask scale_freq_counters_mask;
 static bool scale_freq_invariant;
@@ -146,6 +150,8 @@ void topology_set_freq_scale(const struct cpumask *cpus, unsigned long cur_freq,
 
 	scale = (cur_freq << SCHED_CAPACITY_SHIFT) / max_freq;
 
+	trace_android_vh_arch_set_freq_scale(cpus, cur_freq, max_freq, &scale);
+
 	for_each_cpu(i, cpus)
 		per_cpu(arch_freq_scale, i) = scale;
 }
@@ -159,6 +165,7 @@ void topology_set_cpu_scale(unsigned int cpu, unsigned long capacity)
 }
 
 DEFINE_PER_CPU(unsigned long, thermal_pressure);
+EXPORT_PER_CPU_SYMBOL_GPL(thermal_pressure);
 
 /**
  * topology_update_thermal_pressure() - Update thermal pressure for CPUs
@@ -201,8 +208,11 @@ void topology_update_thermal_pressure(const struct cpumask *cpus,
 
 	trace_thermal_pressure_update(cpu, th_pressure);
 
-	for_each_cpu(cpu, cpus)
+	for_each_cpu(cpu, cpus) {
 		WRITE_ONCE(per_cpu(thermal_pressure, cpu), th_pressure);
+		trace_android_rvh_update_thermal_stats(cpu);
+	}
+
 }
 EXPORT_SYMBOL_GPL(topology_update_thermal_pressure);
 
@@ -240,6 +250,8 @@ static int register_cpu_capacity_sysctl(void)
 subsys_initcall(register_cpu_capacity_sysctl);
 
 static int update_topology;
+bool topology_update_done;
+EXPORT_SYMBOL_GPL(topology_update_done);
 
 int topology_update_cpu_topology(void)
 {
@@ -254,6 +266,8 @@ static void update_topology_flags_workfn(struct work_struct *work)
 {
 	update_topology = 1;
 	rebuild_sched_domains();
+	topology_update_done = true;
+	trace_android_vh_update_topology_flags_workfn(NULL);
 	pr_debug("sched_domain hierarchy rebuilt, flags updated\n");
 	update_topology = 0;
 }
diff --git a/drivers/base/firmware_loader/main.c b/drivers/base/firmware_loader/main.c
index 7c3590f..9281191 100644
--- a/drivers/base/firmware_loader/main.c
+++ b/drivers/base/firmware_loader/main.c
@@ -467,21 +467,82 @@ static int fw_decompress_xz(struct device *dev, struct fw_priv *fw_priv,
 #endif /* CONFIG_FW_LOADER_COMPRESS_XZ */
 
 /* direct firmware loading support */
-static char fw_path_para[256];
+#define CUSTOM_FW_PATH_COUNT	10
+#define PATH_SIZE		255
+static char fw_path_para[CUSTOM_FW_PATH_COUNT][PATH_SIZE];
 static const char * const fw_path[] = {
-	fw_path_para,
+	fw_path_para[0],
+	fw_path_para[1],
+	fw_path_para[2],
+	fw_path_para[3],
+	fw_path_para[4],
+	fw_path_para[5],
+	fw_path_para[6],
+	fw_path_para[7],
+	fw_path_para[8],
+	fw_path_para[9],
 	"/lib/firmware/updates/" UTS_RELEASE,
 	"/lib/firmware/updates",
 	"/lib/firmware/" UTS_RELEASE,
 	"/lib/firmware"
 };
 
+static char strpath[PATH_SIZE * CUSTOM_FW_PATH_COUNT];
+static int firmware_param_path_set(const char *val, const struct kernel_param *kp)
+{
+	int i;
+	char *path, *end;
+
+	strscpy(strpath, val, sizeof(strpath));
+	/* Remove leading and trailing spaces from path */
+	path = strim(strpath);
+	for (i = 0; path && i < CUSTOM_FW_PATH_COUNT; i++) {
+		end = strchr(path, ',');
+
+		/* Skip continuous token case, for example ',,,' */
+		if (end == path) {
+			i--;
+			path = ++end;
+			continue;
+		}
+
+		if (end != NULL)
+			*end = '\0';
+		else {
+			/* end of the string reached and no other tockens ','  */
+			strscpy(fw_path_para[i], path, PATH_SIZE);
+			break;
+		}
+
+		strscpy(fw_path_para[i], path, PATH_SIZE);
+		path = ++end;
+	}
+
+	return 0;
+}
+
+static int firmware_param_path_get(char *buffer, const struct kernel_param *kp)
+{
+	int count = 0, i;
+
+	for (i = 0; i < CUSTOM_FW_PATH_COUNT; i++)
+		if (strlen(fw_path_para[i]) != 0)
+			count += sysfs_emit_at(buffer, count, "%s,", fw_path_para[i]);
+
+	return count;
+}
 /*
- * Typical usage is that passing 'firmware_class.path=$CUSTOMIZED_PATH'
+ * Typical usage is that passing 'firmware_class.path=/vendor,/firwmare_mnt'
  * from kernel command line because firmware_class is generally built in
- * kernel instead of module.
+ * kernel instead of module. ',' is used as delimiter for setting 10
+ * custom paths for firmware loader.
  */
-module_param_string(path, fw_path_para, sizeof(fw_path_para), 0644);
+
+static const struct kernel_param_ops firmware_param_ops = {
+	.set = firmware_param_path_set,
+	.get = firmware_param_path_get,
+};
+module_param_cb(path, &firmware_param_ops, NULL, 0644);
 MODULE_PARM_DESC(path, "customized firmware image search path with a higher priority than default path");
 
 static int
diff --git a/drivers/base/power/domain_governor.c b/drivers/base/power/domain_governor.c
index 282a3a1..88616ee 100644
--- a/drivers/base/power/domain_governor.c
+++ b/drivers/base/power/domain_governor.c
@@ -12,6 +12,8 @@
 #include <linux/cpumask.h>
 #include <linux/ktime.h>
 
+#include <trace/hooks/pm_domain.h>
+
 static int dev_update_qos_constraint(struct device *dev, void *data)
 {
 	s64 *constraint_ns_p = data;
@@ -179,6 +181,11 @@ static bool __default_power_down_ok(struct dev_pm_domain *pd,
 	struct pm_domain_data *pdd;
 	s64 min_off_time_ns;
 	s64 off_on_time_ns;
+	bool allow = true;
+
+	trace_android_vh_allow_domain_state(genpd, state, &allow);
+	if (!allow)
+		return false;
 
 	off_on_time_ns = genpd->states[state].power_off_latency_ns +
 		genpd->states[state].power_on_latency_ns;
diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c
index c501392..69a485f 100644
--- a/drivers/base/power/main.c
+++ b/drivers/base/power/main.c
@@ -34,6 +34,7 @@
 #include <linux/cpufreq.h>
 #include <linux/devfreq.h>
 #include <linux/timer.h>
+#include <linux/wakeup_reason.h>
 
 #include "../base.h"
 #include "power.h"
@@ -1241,6 +1242,8 @@ static int __device_suspend_noirq(struct device *dev, pm_message_t state, bool a
 	error = dpm_run_callback(callback, dev, state, info);
 	if (error) {
 		async_error = error;
+		log_suspend_abort_reason("Device %s failed to %s noirq: error %d",
+					 dev_name(dev), pm_verb(state.event), error);
 		goto Complete;
 	}
 
@@ -1435,6 +1438,8 @@ static int __device_suspend_late(struct device *dev, pm_message_t state, bool as
 	error = dpm_run_callback(callback, dev, state, info);
 	if (error) {
 		async_error = error;
+		log_suspend_abort_reason("Device %s failed to %s late: error %d",
+					 dev_name(dev), pm_verb(state.event), error);
 		goto Complete;
 	}
 	dpm_propagate_wakeup_to_parent(dev);
@@ -1711,6 +1716,9 @@ static int __device_suspend(struct device *dev, pm_message_t state, bool async)
 
 		dpm_propagate_wakeup_to_parent(dev);
 		dpm_clear_superiors_direct_complete(dev);
+	} else {
+		log_suspend_abort_reason("Device %s failed to %s: error %d",
+					 dev_name(dev), pm_verb(state.event), error);
 	}
 
 	device_unlock(dev);
@@ -1924,6 +1932,9 @@ int dpm_prepare(pm_message_t state)
 		} else {
 			dev_info(dev, "not prepared for power transition: code %d\n",
 				 error);
+			log_suspend_abort_reason("Device %s not prepared for power transition: code %d",
+						 dev_name(dev), error);
+			dpm_save_failed_dev(dev_name(dev));
 		}
 
 		mutex_unlock(&dpm_list_mtx);
diff --git a/drivers/base/power/qos.c b/drivers/base/power/qos.c
index 8e93167..0489db3 100644
--- a/drivers/base/power/qos.c
+++ b/drivers/base/power/qos.c
@@ -137,6 +137,7 @@ s32 dev_pm_qos_read_value(struct device *dev, enum dev_pm_qos_req_type type)
 
 	return ret;
 }
+EXPORT_SYMBOL_GPL(dev_pm_qos_read_value);
 
 /**
  * apply_constraint - Add/modify/remove device PM QoS request.
diff --git a/drivers/base/power/wakeup.c b/drivers/base/power/wakeup.c
index 7cc0c0c..441092f 100644
--- a/drivers/base/power/wakeup.c
+++ b/drivers/base/power/wakeup.c
@@ -15,6 +15,9 @@
 #include <linux/seq_file.h>
 #include <linux/debugfs.h>
 #include <linux/pm_wakeirq.h>
+#include <linux/irq.h>
+#include <linux/irqdesc.h>
+#include <linux/wakeup_reason.h>
 #include <trace/events/power.h>
 
 #include "power.h"
@@ -844,6 +847,37 @@ void pm_wakeup_dev_event(struct device *dev, unsigned int msec, bool hard)
 }
 EXPORT_SYMBOL_GPL(pm_wakeup_dev_event);
 
+void pm_get_active_wakeup_sources(char *pending_wakeup_source, size_t max)
+{
+	struct wakeup_source *ws, *last_active_ws = NULL;
+	int len = 0;
+	bool active = false;
+
+	rcu_read_lock();
+	list_for_each_entry_rcu(ws, &wakeup_sources, entry) {
+		if (ws->active && len < max) {
+			if (!active)
+				len += scnprintf(pending_wakeup_source, max,
+						"Pending Wakeup Sources: ");
+			len += scnprintf(pending_wakeup_source + len, max - len,
+				"%s ", ws->name);
+			active = true;
+		} else if (!active &&
+			   (!last_active_ws ||
+			    ktime_to_ns(ws->last_time) >
+			    ktime_to_ns(last_active_ws->last_time))) {
+			last_active_ws = ws;
+		}
+	}
+	if (!active && last_active_ws) {
+		scnprintf(pending_wakeup_source, max,
+				"Last active Wakeup Source: %s",
+				last_active_ws->name);
+	}
+	rcu_read_unlock();
+}
+EXPORT_SYMBOL_GPL(pm_get_active_wakeup_sources);
+
 void pm_print_active_wakeup_sources(void)
 {
 	struct wakeup_source *ws;
@@ -882,6 +916,7 @@ bool pm_wakeup_pending(void)
 {
 	unsigned long flags;
 	bool ret = false;
+	char suspend_abort[MAX_SUSPEND_ABORT_LEN];
 
 	raw_spin_lock_irqsave(&events_lock, flags);
 	if (events_check_enabled) {
@@ -896,6 +931,10 @@ bool pm_wakeup_pending(void)
 	if (ret) {
 		pm_pr_dbg("Wakeup pending, aborting suspend\n");
 		pm_print_active_wakeup_sources();
+		pm_get_active_wakeup_sources(suspend_abort,
+					     MAX_SUSPEND_ABORT_LEN);
+		log_suspend_abort_reason(suspend_abort);
+		pr_info("PM: %s\n", suspend_abort);
 	}
 
 	return ret || atomic_read(&pm_abort_suspend) > 0;
@@ -948,8 +987,21 @@ void pm_system_irq_wakeup(unsigned int irq_number)
 
 	raw_spin_unlock_irqrestore(&wakeup_irq_lock, flags);
 
-	if (irq_number)
+	if (irq_number) {
+		struct irq_desc *desc;
+		const char *name = "null";
+
+		desc = irq_to_desc(irq_number);
+		if (desc == NULL)
+			name = "stray irq";
+		else if (desc->action && desc->action->name)
+			name = desc->action->name;
+
+		log_irq_wakeup_reason(irq_number);
+		pr_warn("%s: %d triggered %s\n", __func__, irq_number, name);
+
 		pm_system_wakeup();
+	}
 }
 
 unsigned int pm_wakeup_irq(void)
diff --git a/drivers/base/syscore.c b/drivers/base/syscore.c
index 13db1f7..3a9527d 100644
--- a/drivers/base/syscore.c
+++ b/drivers/base/syscore.c
@@ -10,6 +10,7 @@
 #include <linux/module.h>
 #include <linux/suspend.h>
 #include <trace/events/power.h>
+#include <linux/wakeup_reason.h>
 
 static LIST_HEAD(syscore_ops_list);
 static DEFINE_MUTEX(syscore_ops_lock);
@@ -73,7 +74,9 @@ int syscore_suspend(void)
 	return 0;
 
  err_out:
-	pr_err("PM: System core suspend callback %pS failed.\n", ops->suspend);
+	log_suspend_abort_reason("System core suspend callback %pS failed",
+		ops->suspend);
+	pr_err("PM: System core suspend callback %pF failed.\n", ops->suspend);
 
 	list_for_each_entry_continue(ops, &syscore_ops_list, node)
 		if (ops->resume)
diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
index 966aab9..0102469 100644
--- a/drivers/block/zram/zram_drv.c
+++ b/drivers/block/zram/zram_drv.c
@@ -505,7 +505,7 @@ static ssize_t backing_dev_store(struct device *dev,
 	if (sz > 0 && file_name[sz - 1] == '\n')
 		file_name[sz - 1] = 0x00;
 
-	backing_dev = filp_open(file_name, O_RDWR|O_LARGEFILE, 0);
+	backing_dev = filp_open_block(file_name, O_RDWR|O_LARGEFILE, 0);
 	if (IS_ERR(backing_dev)) {
 		err = PTR_ERR(backing_dev);
 		backing_dev = NULL;
@@ -1395,13 +1395,14 @@ static int __zram_bvec_write(struct zram *zram, struct bio_vec *bvec,
 				__GFP_KSWAPD_RECLAIM |
 				__GFP_NOWARN |
 				__GFP_HIGHMEM |
-				__GFP_MOVABLE);
+				__GFP_MOVABLE |
+				__GFP_CMA);
 	if (IS_ERR((void *)handle)) {
 		zcomp_stream_put(zram->comp);
 		atomic64_inc(&zram->stats.writestall);
 		handle = zs_malloc(zram->mem_pool, comp_len,
 				GFP_NOIO | __GFP_HIGHMEM |
-				__GFP_MOVABLE);
+				__GFP_MOVABLE | __GFP_CMA);
 		if (IS_ERR((void *)handle))
 			return PTR_ERR((void *)handle);
 
diff --git a/drivers/bluetooth/btbcm.c b/drivers/bluetooth/btbcm.c
index de2ea589..6c33ec9 100644
--- a/drivers/bluetooth/btbcm.c
+++ b/drivers/bluetooth/btbcm.c
@@ -6,7 +6,9 @@
  *  Copyright (C) 2015  Intel Corporation
  */
 
+#ifndef __GENKSYMS__	// ANDROID CRC kabi preservation hack due to commit 76dd7893bd10
 #include <linux/efi.h>
+#endif
 #include <linux/module.h>
 #include <linux/firmware.h>
 #include <linux/dmi.h>
diff --git a/drivers/char/mspec.c b/drivers/char/mspec.c
index f8231e2..b35f651 100644
--- a/drivers/char/mspec.c
+++ b/drivers/char/mspec.c
@@ -206,7 +206,7 @@ mspec_mmap(struct file *file, struct vm_area_struct *vma,
 	refcount_set(&vdata->refcnt, 1);
 	vma->vm_private_data = vdata;
 
-	vma->vm_flags |= VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP;
+	vm_flags_set(vma, VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP);
 	if (vdata->type == MSPEC_UNCACHED)
 		vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
 	vma->vm_ops = &mspec_vm_ops;
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
index 57b8366..05fe21f 100644
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -72,6 +72,8 @@ struct clk_core {
 	unsigned long		flags;
 	bool			orphan;
 	bool			rpm_enabled;
+	bool			need_sync;
+	bool			boot_enabled;
 	unsigned int		enable_count;
 	unsigned int		prepare_count;
 	unsigned int		protect_count;
@@ -1301,6 +1303,10 @@ static void __init clk_unprepare_unused_subtree(struct clk_core *core)
 	hlist_for_each_entry(child, &core->children, child_node)
 		clk_unprepare_unused_subtree(child);
 
+	if (dev_has_sync_state(core->dev) &&
+	    !(core->flags & CLK_DONT_HOLD_STATE))
+		return;
+
 	if (core->prepare_count)
 		return;
 
@@ -1332,6 +1338,10 @@ static void __init clk_disable_unused_subtree(struct clk_core *core)
 	hlist_for_each_entry(child, &core->children, child_node)
 		clk_disable_unused_subtree(child);
 
+	if (dev_has_sync_state(core->dev) &&
+	    !(core->flags & CLK_DONT_HOLD_STATE))
+		return;
+
 	if (core->flags & CLK_OPS_PARENT_ENABLE)
 		clk_core_prepare_enable(core->parent);
 
@@ -1405,6 +1415,38 @@ static int __init clk_disable_unused(void)
 }
 late_initcall_sync(clk_disable_unused);
 
+static void clk_unprepare_disable_dev_subtree(struct clk_core *core,
+					      struct device *dev)
+{
+	struct clk_core *child;
+
+	lockdep_assert_held(&prepare_lock);
+
+	hlist_for_each_entry(child, &core->children, child_node)
+		clk_unprepare_disable_dev_subtree(child, dev);
+
+	if (core->dev != dev || !core->need_sync)
+		return;
+
+	clk_core_disable_unprepare(core);
+}
+
+void clk_sync_state(struct device *dev)
+{
+	struct clk_core *core;
+
+	clk_prepare_lock();
+
+	hlist_for_each_entry(core, &clk_root_list, child_node)
+		clk_unprepare_disable_dev_subtree(core, dev);
+
+	hlist_for_each_entry(core, &clk_orphan_list, child_node)
+		clk_unprepare_disable_dev_subtree(core, dev);
+
+	clk_prepare_unlock();
+}
+EXPORT_SYMBOL_GPL(clk_sync_state);
+
 static int clk_core_determine_round_nolock(struct clk_core *core,
 					   struct clk_rate_request *req)
 {
@@ -1895,6 +1937,33 @@ int clk_hw_get_parent_index(struct clk_hw *hw)
 }
 EXPORT_SYMBOL_GPL(clk_hw_get_parent_index);
 
+static void clk_core_hold_state(struct clk_core *core)
+{
+	if (core->need_sync || !core->boot_enabled)
+		return;
+
+	if (core->orphan || !dev_has_sync_state(core->dev))
+		return;
+
+	if (core->flags & CLK_DONT_HOLD_STATE)
+		return;
+
+	core->need_sync = !clk_core_prepare_enable(core);
+}
+
+static void __clk_core_update_orphan_hold_state(struct clk_core *core)
+{
+	struct clk_core *child;
+
+	if (core->orphan)
+		return;
+
+	clk_core_hold_state(core);
+
+	hlist_for_each_entry(child, &core->children, child_node)
+		__clk_core_update_orphan_hold_state(child);
+}
+
 /*
  * Update the orphan status of @core and all its children.
  */
@@ -2198,6 +2267,13 @@ static struct clk_core *clk_propagate_rate_change(struct clk_core *core,
 			fail_clk = core;
 	}
 
+	if (core->ops->pre_rate_change) {
+		ret = core->ops->pre_rate_change(core->hw, core->rate,
+						 core->new_rate);
+		if (ret)
+			fail_clk = core;
+	}
+
 	hlist_for_each_entry(child, &core->children, child_node) {
 		/* Skip children who will be reparented to another clock */
 		if (child->new_parent && child->new_parent != core)
@@ -2292,6 +2368,9 @@ static void clk_change_rate(struct clk_core *core)
 	if (core->flags & CLK_RECALC_NEW_RATES)
 		(void)clk_calc_new_rates(core, core->new_rate);
 
+	if (core->ops->post_rate_change)
+		core->ops->post_rate_change(core->hw, old_rate, core->rate);
+
 	/*
 	 * Use safe iteration, as change_rate can actually swap parents
 	 * for certain clock types.
@@ -3231,7 +3310,7 @@ static int clk_dump_show(struct seq_file *s, void *data)
 }
 DEFINE_SHOW_ATTRIBUTE(clk_dump);
 
-#undef CLOCK_ALLOW_WRITE_DEBUGFS
+#define CLOCK_ALLOW_WRITE_DEBUGFS
 #ifdef CLOCK_ALLOW_WRITE_DEBUGFS
 /*
  * This can be dangerous, therefore don't provide any real compile time
@@ -3560,24 +3639,6 @@ static int __init clk_debug_init(void)
 {
 	struct clk_core *core;
 
-#ifdef CLOCK_ALLOW_WRITE_DEBUGFS
-	pr_warn("\n");
-	pr_warn("********************************************************************\n");
-	pr_warn("**     NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE           **\n");
-	pr_warn("**                                                                **\n");
-	pr_warn("**  WRITEABLE clk DebugFS SUPPORT HAS BEEN ENABLED IN THIS KERNEL **\n");
-	pr_warn("**                                                                **\n");
-	pr_warn("** This means that this kernel is built to expose clk operations  **\n");
-	pr_warn("** such as parent or rate setting, enabling, disabling, etc.      **\n");
-	pr_warn("** to userspace, which may compromise security on your system.    **\n");
-	pr_warn("**                                                                **\n");
-	pr_warn("** If you see this message and you are not debugging the          **\n");
-	pr_warn("** kernel, report this immediately to your vendor!                **\n");
-	pr_warn("**                                                                **\n");
-	pr_warn("**     NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE           **\n");
-	pr_warn("********************************************************************\n");
-#endif
-
 	rootdir = debugfs_create_dir("clk", NULL);
 
 	debugfs_create_file("clk_summary", 0444, rootdir, &all_lists,
@@ -3630,6 +3691,7 @@ static void clk_core_reparent_orphans_nolock(void)
 			__clk_set_parent_after(orphan, parent, NULL);
 			__clk_recalc_accuracies(orphan);
 			__clk_recalc_rates(orphan, true, 0);
+			__clk_core_update_orphan_hold_state(orphan);
 
 			/*
 			 * __clk_init_parent() will set the initial req_rate to
@@ -3806,6 +3868,8 @@ static int __clk_core_init(struct clk_core *core)
 		rate = 0;
 	core->rate = core->req_rate = rate;
 
+	core->boot_enabled = clk_core_is_enabled(core);
+
 	/*
 	 * Enable CLK_IS_CRITICAL clocks so newly added critical clocks
 	 * don't get accidentally disabled when walking the orphan tree and
@@ -3828,6 +3892,7 @@ static int __clk_core_init(struct clk_core *core)
 		}
 	}
 
+	clk_core_hold_state(core);
 	clk_core_reparent_orphans_nolock();
 
 	kref_init(&core->ref);
diff --git a/drivers/clk/qcom/dispcc-sdm845.c b/drivers/clk/qcom/dispcc-sdm845.c
index 735adfe..414ffb6 100644
--- a/drivers/clk/qcom/dispcc-sdm845.c
+++ b/drivers/clk/qcom/dispcc-sdm845.c
@@ -3,6 +3,7 @@
  * Copyright (c) 2018-2019, The Linux Foundation. All rights reserved.
  */
 
+#include <linux/clk.h>
 #include <linux/clk-provider.h>
 #include <linux/module.h>
 #include <linux/platform_device.h>
@@ -869,6 +870,7 @@ static struct platform_driver disp_cc_sdm845_driver = {
 	.driver		= {
 		.name	= "disp_cc-sdm845",
 		.of_match_table = disp_cc_sdm845_match_table,
+		.sync_state = clk_sync_state,
 	},
 };
 
diff --git a/drivers/clk/qcom/gcc-msm8998.c b/drivers/clk/qcom/gcc-msm8998.c
index 33473c5..8b4e4a3 100644
--- a/drivers/clk/qcom/gcc-msm8998.c
+++ b/drivers/clk/qcom/gcc-msm8998.c
@@ -3261,6 +3261,7 @@ static struct platform_driver gcc_msm8998_driver = {
 	.driver		= {
 		.name	= "gcc-msm8998",
 		.of_match_table = gcc_msm8998_match_table,
+		.sync_state = clk_sync_state,
 	},
 };
 
diff --git a/drivers/clk/qcom/gcc-sdm845.c b/drivers/clk/qcom/gcc-sdm845.c
index 6af08e0..0f2aadd 100644
--- a/drivers/clk/qcom/gcc-sdm845.c
+++ b/drivers/clk/qcom/gcc-sdm845.c
@@ -4020,6 +4020,7 @@ static struct platform_driver gcc_sdm845_driver = {
 	.driver		= {
 		.name	= "gcc-sdm845",
 		.of_match_table = gcc_sdm845_match_table,
+		.sync_state = clk_sync_state,
 	},
 };
 
diff --git a/drivers/clk/qcom/gpucc-sdm845.c b/drivers/clk/qcom/gpucc-sdm845.c
index 110b544..8749aab 100644
--- a/drivers/clk/qcom/gpucc-sdm845.c
+++ b/drivers/clk/qcom/gpucc-sdm845.c
@@ -205,6 +205,7 @@ static struct platform_driver gpu_cc_sdm845_driver = {
 	.driver = {
 		.name = "sdm845-gpucc",
 		.of_match_table = gpu_cc_sdm845_match_table,
+		.sync_state = clk_sync_state,
 	},
 };
 
diff --git a/drivers/clk/qcom/videocc-sdm845.c b/drivers/clk/qcom/videocc-sdm845.c
index c77a4dd..f678ade 100644
--- a/drivers/clk/qcom/videocc-sdm845.c
+++ b/drivers/clk/qcom/videocc-sdm845.c
@@ -337,6 +337,7 @@ static struct platform_driver video_cc_sdm845_driver = {
 	.driver		= {
 		.name	= "sdm845-videocc",
 		.of_match_table = video_cc_sdm845_match_table,
+		.sync_state = clk_sync_state,
 	},
 };
 
diff --git a/drivers/clocksource/Kconfig b/drivers/clocksource/Kconfig
index 4469e7f..718d676 100644
--- a/drivers/clocksource/Kconfig
+++ b/drivers/clocksource/Kconfig
@@ -135,7 +135,7 @@
 	  Enables the support for the RDA Micro timer driver.
 
 config SUN4I_TIMER
-	bool "Sun4i timer driver" if COMPILE_TEST
+	bool "Sun4i timer driver"
 	depends on HAS_IOMEM
 	select CLKSRC_MMIO
 	select TIMER_OF
@@ -472,13 +472,22 @@
 	bool
 
 config MTK_TIMER
-	bool "Mediatek timer driver" if COMPILE_TEST
+	tristate "MediaTek timer driver"
 	depends on HAS_IOMEM
 	select TIMER_OF
 	select CLKSRC_MMIO
 	help
 	  Support for Mediatek timer driver.
 
+config MTK_CPUX_TIMER
+	bool "MediaTek CPUX timer driver" if COMPILE_TEST
+	depends on HAS_IOMEM
+	default ARCH_MEDIATEK
+	select TIMER_OF
+	select CLKSRC_MMIO
+	help
+	  Support for MediaTek CPUXGPT timer driver.
+
 config SPRD_TIMER
 	bool "Spreadtrum timer driver" if EXPERT
 	depends on HAS_IOMEM
diff --git a/drivers/clocksource/Makefile b/drivers/clocksource/Makefile
index 64ab547..f12d398 100644
--- a/drivers/clocksource/Makefile
+++ b/drivers/clocksource/Makefile
@@ -51,6 +51,7 @@
 obj-$(CONFIG_VF_PIT_TIMER)	+= timer-vf-pit.o
 obj-$(CONFIG_CLKSRC_QCOM)	+= timer-qcom.o
 obj-$(CONFIG_MTK_TIMER)		+= timer-mediatek.o
+obj-$(CONFIG_MTK_CPUX_TIMER)	+= timer-mediatek-cpux.o
 obj-$(CONFIG_CLKSRC_PISTACHIO)	+= timer-pistachio.o
 obj-$(CONFIG_CLKSRC_TI_32K)	+= timer-ti-32k.o
 obj-$(CONFIG_OXNAS_RPS_TIMER)	+= timer-oxnas-rps.o
diff --git a/drivers/clocksource/mmio.c b/drivers/clocksource/mmio.c
index 9de7515..b08b2f9 100644
--- a/drivers/clocksource/mmio.c
+++ b/drivers/clocksource/mmio.c
@@ -21,6 +21,7 @@ u64 clocksource_mmio_readl_up(struct clocksource *c)
 {
 	return (u64)readl_relaxed(to_mmio_clksrc(c)->reg);
 }
+EXPORT_SYMBOL_GPL(clocksource_mmio_readl_up);
 
 u64 clocksource_mmio_readl_down(struct clocksource *c)
 {
@@ -46,9 +47,9 @@ u64 clocksource_mmio_readw_down(struct clocksource *c)
  * @bits:	Number of valid bits
  * @read:	One of clocksource_mmio_read*() above
  */
-int __init clocksource_mmio_init(void __iomem *base, const char *name,
-	unsigned long hz, int rating, unsigned bits,
-	u64 (*read)(struct clocksource *))
+int clocksource_mmio_init(void __iomem *base, const char *name,
+			  unsigned long hz, int rating, unsigned bits,
+			  u64 (*read)(struct clocksource *))
 {
 	struct clocksource_mmio *cs;
 
@@ -68,3 +69,4 @@ int __init clocksource_mmio_init(void __iomem *base, const char *name,
 
 	return clocksource_register_hz(&cs->clksrc, hz);
 }
+EXPORT_SYMBOL_GPL(clocksource_mmio_init);
diff --git a/drivers/clocksource/timer-mediatek-cpux.c b/drivers/clocksource/timer-mediatek-cpux.c
new file mode 100644
index 0000000..a8e3df4
--- /dev/null
+++ b/drivers/clocksource/timer-mediatek-cpux.c
@@ -0,0 +1,140 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * MediaTek SoCs CPUX General Purpose Timer handling
+ *
+ * Based on timer-mediatek.c:
+ * Copyright (C) 2014 Matthias Brugger <matthias.bgg@gmail.com>
+ *
+ * Copyright (C) 2022 Collabora Ltd.
+ *                    AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
+ */
+
+#define pr_fmt(fmt)	KBUILD_MODNAME ": " fmt
+
+#include <linux/clockchips.h>
+#include <linux/clocksource.h>
+#include <linux/interrupt.h>
+#include <linux/irqreturn.h>
+#include <linux/sched_clock.h>
+#include <linux/slab.h>
+#include "timer-of.h"
+
+#define TIMER_SYNC_TICKS        3
+
+/* cpux mcusys wrapper */
+#define CPUX_CON_REG		0x0
+#define CPUX_IDX_REG		0x4
+
+/* cpux */
+#define CPUX_IDX_GLOBAL_CTRL	0x0
+ #define CPUX_ENABLE		BIT(0)
+ #define CPUX_CLK_DIV_MASK	GENMASK(10, 8)
+ #define CPUX_CLK_DIV1		BIT(8)
+ #define CPUX_CLK_DIV2		BIT(9)
+ #define CPUX_CLK_DIV4		BIT(10)
+#define CPUX_IDX_GLOBAL_IRQ	0x30
+
+static u32 mtk_cpux_readl(u32 reg_idx, struct timer_of *to)
+{
+	writel(reg_idx, timer_of_base(to) + CPUX_IDX_REG);
+	return readl(timer_of_base(to) + CPUX_CON_REG);
+}
+
+static void mtk_cpux_writel(u32 val, u32 reg_idx, struct timer_of *to)
+{
+	writel(reg_idx, timer_of_base(to) + CPUX_IDX_REG);
+	writel(val, timer_of_base(to) + CPUX_CON_REG);
+}
+
+static void mtk_cpux_set_irq(struct timer_of *to, bool enable)
+{
+	const unsigned long *irq_mask = cpumask_bits(cpu_possible_mask);
+	u32 val;
+
+	val = mtk_cpux_readl(CPUX_IDX_GLOBAL_IRQ, to);
+
+	if (enable)
+		val |= *irq_mask;
+	else
+		val &= ~(*irq_mask);
+
+	mtk_cpux_writel(val, CPUX_IDX_GLOBAL_IRQ, to);
+}
+
+static int mtk_cpux_clkevt_shutdown(struct clock_event_device *clkevt)
+{
+	/* Clear any irq */
+	mtk_cpux_set_irq(to_timer_of(clkevt), false);
+
+	/*
+	 * Disabling CPUXGPT timer will crash the platform, especially
+	 * if Trusted Firmware is using it (usually, for sleep states),
+	 * so we only mask the IRQ and call it a day.
+	 */
+	return 0;
+}
+
+static int mtk_cpux_clkevt_resume(struct clock_event_device *clkevt)
+{
+	mtk_cpux_set_irq(to_timer_of(clkevt), true);
+	return 0;
+}
+
+static struct timer_of to = {
+	/*
+	 * There are per-cpu interrupts for the CPUX General Purpose Timer
+	 * but since this timer feeds the AArch64 System Timer we can rely
+	 * on the CPU timer PPIs as well, so we don't declare TIMER_OF_IRQ.
+	 */
+	.flags = TIMER_OF_BASE | TIMER_OF_CLOCK,
+
+	.clkevt = {
+		.name = "mtk-cpuxgpt",
+		.cpumask = cpu_possible_mask,
+		.rating = 10,
+		.set_state_shutdown = mtk_cpux_clkevt_shutdown,
+		.tick_resume = mtk_cpux_clkevt_resume,
+	},
+};
+
+static int __init mtk_cpux_init(struct device_node *node)
+{
+	u32 freq, val;
+	int ret;
+
+	/* If this fails, bad things are about to happen... */
+	ret = timer_of_init(node, &to);
+	if (ret) {
+		WARN(1, "Cannot start CPUX timers.\n");
+		return ret;
+	}
+
+	/*
+	 * Check if we're given a clock with the right frequency for this
+	 * timer, otherwise warn but keep going with the setup anyway, as
+	 * that makes it possible to still boot the kernel, even though
+	 * it may not work correctly (random lockups, etc).
+	 * The reason behind this is that having an early UART may not be
+	 * possible for everyone and this gives a chance to retrieve kmsg
+	 * for eventual debugging even on consumer devices.
+	 */
+	freq = timer_of_rate(&to);
+	if (freq > 13000000)
+		WARN(1, "Requested unsupported timer frequency %u\n", freq);
+
+	/* Clock input is 26MHz, set DIV2 to achieve 13MHz clock */
+	val = mtk_cpux_readl(CPUX_IDX_GLOBAL_CTRL, &to);
+	val &= ~CPUX_CLK_DIV_MASK;
+	val |= CPUX_CLK_DIV2;
+	mtk_cpux_writel(val, CPUX_IDX_GLOBAL_CTRL, &to);
+
+	/* Enable all CPUXGPT timers */
+	val = mtk_cpux_readl(CPUX_IDX_GLOBAL_CTRL, &to);
+	mtk_cpux_writel(val | CPUX_ENABLE, CPUX_IDX_GLOBAL_CTRL, &to);
+
+	clockevents_config_and_register(&to.clkevt, timer_of_rate(&to),
+					TIMER_SYNC_TICKS, 0xffffffff);
+
+	return 0;
+}
+TIMER_OF_DECLARE(mtk_mt6795, "mediatek,mt6795-systimer", mtk_cpux_init);
diff --git a/drivers/clocksource/timer-mediatek.c b/drivers/clocksource/timer-mediatek.c
index d5b29fd..afeacb5 100644
--- a/drivers/clocksource/timer-mediatek.c
+++ b/drivers/clocksource/timer-mediatek.c
@@ -13,6 +13,9 @@
 #include <linux/clocksource.h>
 #include <linux/interrupt.h>
 #include <linux/irqreturn.h>
+#include <linux/module.h>
+#include <linux/of_device.h>
+#include <linux/platform_device.h>
 #include <linux/sched_clock.h>
 #include <linux/slab.h>
 #include "timer-of.h"
@@ -22,19 +25,6 @@
 
 #define TIMER_SYNC_TICKS        (3)
 
-/* cpux mcusys wrapper */
-#define CPUX_CON_REG		0x0
-#define CPUX_IDX_REG		0x4
-
-/* cpux */
-#define CPUX_IDX_GLOBAL_CTRL	0x0
- #define CPUX_ENABLE		BIT(0)
- #define CPUX_CLK_DIV_MASK	GENMASK(10, 8)
- #define CPUX_CLK_DIV1		BIT(8)
- #define CPUX_CLK_DIV2		BIT(9)
- #define CPUX_CLK_DIV4		BIT(10)
-#define CPUX_IDX_GLOBAL_IRQ	0x30
-
 /* gpt */
 #define GPT_IRQ_EN_REG          0x00
 #define GPT_IRQ_ENABLE(val)     BIT((val) - 1)
@@ -85,52 +75,6 @@
 
 static void __iomem *gpt_sched_reg __read_mostly;
 
-static u32 mtk_cpux_readl(u32 reg_idx, struct timer_of *to)
-{
-	writel(reg_idx, timer_of_base(to) + CPUX_IDX_REG);
-	return readl(timer_of_base(to) + CPUX_CON_REG);
-}
-
-static void mtk_cpux_writel(u32 val, u32 reg_idx, struct timer_of *to)
-{
-	writel(reg_idx, timer_of_base(to) + CPUX_IDX_REG);
-	writel(val, timer_of_base(to) + CPUX_CON_REG);
-}
-
-static void mtk_cpux_set_irq(struct timer_of *to, bool enable)
-{
-	const unsigned long *irq_mask = cpumask_bits(cpu_possible_mask);
-	u32 val;
-
-	val = mtk_cpux_readl(CPUX_IDX_GLOBAL_IRQ, to);
-
-	if (enable)
-		val |= *irq_mask;
-	else
-		val &= ~(*irq_mask);
-
-	mtk_cpux_writel(val, CPUX_IDX_GLOBAL_IRQ, to);
-}
-
-static int mtk_cpux_clkevt_shutdown(struct clock_event_device *clkevt)
-{
-	/* Clear any irq */
-	mtk_cpux_set_irq(to_timer_of(clkevt), false);
-
-	/*
-	 * Disabling CPUXGPT timer will crash the platform, especially
-	 * if Trusted Firmware is using it (usually, for sleep states),
-	 * so we only mask the IRQ and call it a day.
-	 */
-	return 0;
-}
-
-static int mtk_cpux_clkevt_resume(struct clock_event_device *clkevt)
-{
-	mtk_cpux_set_irq(to_timer_of(clkevt), true);
-	return 0;
-}
-
 static void mtk_syst_ack_irq(struct timer_of *to)
 {
 	/* Clear and disable interrupt */
@@ -340,60 +284,6 @@ static struct timer_of to = {
 	},
 };
 
-static int __init mtk_cpux_init(struct device_node *node)
-{
-	static struct timer_of to_cpux;
-	u32 freq, val;
-	int ret;
-
-	/*
-	 * There are per-cpu interrupts for the CPUX General Purpose Timer
-	 * but since this timer feeds the AArch64 System Timer we can rely
-	 * on the CPU timer PPIs as well, so we don't declare TIMER_OF_IRQ.
-	 */
-	to_cpux.flags = TIMER_OF_BASE | TIMER_OF_CLOCK;
-	to_cpux.clkevt.name = "mtk-cpuxgpt";
-	to_cpux.clkevt.rating = 10;
-	to_cpux.clkevt.cpumask = cpu_possible_mask;
-	to_cpux.clkevt.set_state_shutdown = mtk_cpux_clkevt_shutdown;
-	to_cpux.clkevt.tick_resume = mtk_cpux_clkevt_resume;
-
-	/* If this fails, bad things are about to happen... */
-	ret = timer_of_init(node, &to_cpux);
-	if (ret) {
-		WARN(1, "Cannot start CPUX timers.\n");
-		return ret;
-	}
-
-	/*
-	 * Check if we're given a clock with the right frequency for this
-	 * timer, otherwise warn but keep going with the setup anyway, as
-	 * that makes it possible to still boot the kernel, even though
-	 * it may not work correctly (random lockups, etc).
-	 * The reason behind this is that having an early UART may not be
-	 * possible for everyone and this gives a chance to retrieve kmsg
-	 * for eventual debugging even on consumer devices.
-	 */
-	freq = timer_of_rate(&to_cpux);
-	if (freq > 13000000)
-		WARN(1, "Requested unsupported timer frequency %u\n", freq);
-
-	/* Clock input is 26MHz, set DIV2 to achieve 13MHz clock */
-	val = mtk_cpux_readl(CPUX_IDX_GLOBAL_CTRL, &to_cpux);
-	val &= ~CPUX_CLK_DIV_MASK;
-	val |= CPUX_CLK_DIV2;
-	mtk_cpux_writel(val, CPUX_IDX_GLOBAL_CTRL, &to_cpux);
-
-	/* Enable all CPUXGPT timers */
-	val = mtk_cpux_readl(CPUX_IDX_GLOBAL_CTRL, &to_cpux);
-	mtk_cpux_writel(val | CPUX_ENABLE, CPUX_IDX_GLOBAL_CTRL, &to_cpux);
-
-	clockevents_config_and_register(&to_cpux.clkevt, timer_of_rate(&to_cpux),
-					TIMER_SYNC_TICKS, 0xffffffff);
-
-	return 0;
-}
-
 static int __init mtk_syst_init(struct device_node *node)
 {
 	int ret;
@@ -450,6 +340,35 @@ static int __init mtk_gpt_init(struct device_node *node)
 
 	return 0;
 }
+
+#ifndef MODULE
 TIMER_OF_DECLARE(mtk_mt6577, "mediatek,mt6577-timer", mtk_gpt_init);
 TIMER_OF_DECLARE(mtk_mt6765, "mediatek,mt6765-timer", mtk_syst_init);
-TIMER_OF_DECLARE(mtk_mt6795, "mediatek,mt6795-systimer", mtk_cpux_init);
+#else
+static int mtk_timer_probe(struct platform_device *pdev)
+{
+	int (*timer_init)(struct device_node *node);
+	struct device_node *np = pdev->dev.of_node;
+
+	timer_init = of_device_get_match_data(&pdev->dev);
+	return timer_init(np);
+}
+
+static const struct of_device_id mtk_timer_match_table[] = {
+	{ .compatible = "mediatek,mt6577-timer", .data = mtk_gpt_init },
+	{ .compatible = "mediatek,mt6765-timer", .data = mtk_syst_init },
+	{ /* sentinel */ }
+};
+
+static struct platform_driver mtk_timer_driver = {
+	.probe = mtk_timer_probe,
+	.driver = {
+		.name = "mediatek-timer",
+		.of_match_table = mtk_timer_match_table,
+	},
+};
+module_platform_driver(mtk_timer_driver);
+
+MODULE_DESCRIPTION("MediaTek Timer driver");
+MODULE_LICENSE("GPL v2");
+#endif
diff --git a/drivers/clocksource/timer-of.c b/drivers/clocksource/timer-of.c
index c3f54d9..59bc592 100644
--- a/drivers/clocksource/timer-of.c
+++ b/drivers/clocksource/timer-of.c
@@ -19,7 +19,7 @@
  *
  * Free the irq resource
  */
-static __init void timer_of_irq_exit(struct of_timer_irq *of_irq)
+static void timer_of_irq_exit(struct of_timer_irq *of_irq)
 {
 	struct timer_of *to = container_of(of_irq, struct timer_of, of_irq);
 
@@ -47,8 +47,8 @@ static __init void timer_of_irq_exit(struct of_timer_irq *of_irq)
  *
  * Returns 0 on success, < 0 otherwise
  */
-static __init int timer_of_irq_init(struct device_node *np,
-				    struct of_timer_irq *of_irq)
+static int timer_of_irq_init(struct device_node *np,
+			     struct of_timer_irq *of_irq)
 {
 	int ret;
 	struct timer_of *to = container_of(of_irq, struct timer_of, of_irq);
@@ -91,7 +91,7 @@ static __init int timer_of_irq_init(struct device_node *np,
  *
  * Disables and releases the refcount on the clk
  */
-static __init void timer_of_clk_exit(struct of_timer_clk *of_clk)
+static void timer_of_clk_exit(struct of_timer_clk *of_clk)
 {
 	of_clk->rate = 0;
 	clk_disable_unprepare(of_clk->clk);
@@ -107,8 +107,8 @@ static __init void timer_of_clk_exit(struct of_timer_clk *of_clk)
  *
  * Returns 0 on success, < 0 otherwise
  */
-static __init int timer_of_clk_init(struct device_node *np,
-				    struct of_timer_clk *of_clk)
+static int timer_of_clk_init(struct device_node *np,
+			     struct of_timer_clk *of_clk)
 {
 	int ret;
 
@@ -146,13 +146,13 @@ static __init int timer_of_clk_init(struct device_node *np,
 	goto out;
 }
 
-static __init void timer_of_base_exit(struct of_timer_base *of_base)
+static void timer_of_base_exit(struct of_timer_base *of_base)
 {
 	iounmap(of_base->base);
 }
 
-static __init int timer_of_base_init(struct device_node *np,
-				     struct of_timer_base *of_base)
+static int timer_of_base_init(struct device_node *np,
+			      struct of_timer_base *of_base)
 {
 	of_base->base = of_base->name ?
 		of_io_request_and_map(np, of_base->index, of_base->name) :
@@ -165,7 +165,7 @@ static __init int timer_of_base_init(struct device_node *np,
 	return 0;
 }
 
-int __init timer_of_init(struct device_node *np, struct timer_of *to)
+int timer_of_init(struct device_node *np, struct timer_of *to)
 {
 	int ret = -EINVAL;
 	int flags = 0;
@@ -209,6 +209,7 @@ int __init timer_of_init(struct device_node *np, struct timer_of *to)
 		timer_of_base_exit(&to->of_base);
 	return ret;
 }
+EXPORT_SYMBOL_GPL(timer_of_init);
 
 /**
  * timer_of_cleanup - release timer_of resources
@@ -217,7 +218,7 @@ int __init timer_of_init(struct device_node *np, struct timer_of *to)
  * Release the resources that has been used in timer_of_init().
  * This function should be called in init error cases
  */
-void __init timer_of_cleanup(struct timer_of *to)
+void timer_of_cleanup(struct timer_of *to)
 {
 	if (to->flags & TIMER_OF_IRQ)
 		timer_of_irq_exit(&to->of_irq);
diff --git a/drivers/clocksource/timer-of.h b/drivers/clocksource/timer-of.h
index a5478f3..5d14728 100644
--- a/drivers/clocksource/timer-of.h
+++ b/drivers/clocksource/timer-of.h
@@ -66,9 +66,9 @@ static inline unsigned long timer_of_period(struct timer_of *to)
 	return to->of_clk.period;
 }
 
-extern int __init timer_of_init(struct device_node *np,
-				struct timer_of *to);
+extern int timer_of_init(struct device_node *np,
+			 struct timer_of *to);
 
-extern void __init timer_of_cleanup(struct timer_of *to);
+extern void timer_of_cleanup(struct timer_of *to);
 
 #endif
diff --git a/drivers/cpufreq/Kconfig b/drivers/cpufreq/Kconfig
index 2a84fc6..c939546 100644
--- a/drivers/cpufreq/Kconfig
+++ b/drivers/cpufreq/Kconfig
@@ -35,6 +35,13 @@
 
 	  If in doubt, say N.
 
+config CPU_FREQ_TIMES
+       bool "CPU frequency time-in-state statistics"
+       help
+         Export CPU time-in-state information through procfs.
+
+         If in doubt, say N.
+
 choice
 	prompt "Default CPUFreq governor"
 	default CPU_FREQ_DEFAULT_GOV_USERSPACE if ARM_SA1100_CPUFREQ || ARM_SA1110_CPUFREQ
@@ -227,6 +234,15 @@
 
 	  If in doubt, say N.
 
+config CPUFREQ_DUMMY
+	tristate "Dummy CPU frequency driver"
+	help
+	  This option adds a generic dummy CPUfreq driver, which sets a fake
+	  2-frequency table when initializing each policy and otherwise does
+	  nothing.
+
+	  If in doubt, say N
+
 if X86
 source "drivers/cpufreq/Kconfig.x86"
 endif
diff --git a/drivers/cpufreq/Makefile b/drivers/cpufreq/Makefile
index 49b98c6..1f8ec8c8 100644
--- a/drivers/cpufreq/Makefile
+++ b/drivers/cpufreq/Makefile
@@ -5,7 +5,10 @@
 # CPUfreq stats
 obj-$(CONFIG_CPU_FREQ_STAT)             += cpufreq_stats.o
 
-# CPUfreq governors 
+# CPUfreq times
+obj-$(CONFIG_CPU_FREQ_TIMES)		+= cpufreq_times.o
+
+# CPUfreq governors
 obj-$(CONFIG_CPU_FREQ_GOV_PERFORMANCE)	+= cpufreq_performance.o
 obj-$(CONFIG_CPU_FREQ_GOV_POWERSAVE)	+= cpufreq_powersave.o
 obj-$(CONFIG_CPU_FREQ_GOV_USERSPACE)	+= cpufreq_userspace.o
@@ -17,6 +20,8 @@
 obj-$(CONFIG_CPUFREQ_DT)		+= cpufreq-dt.o
 obj-$(CONFIG_CPUFREQ_DT_PLATDEV)	+= cpufreq-dt-platdev.o
 
+obj-$(CONFIG_CPUFREQ_DUMMY)		+= dummy-cpufreq.o
+
 # Traces
 CFLAGS_amd-pstate-trace.o               := -I$(src)
 amd_pstate-y				:= amd-pstate.o amd-pstate-trace.o
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
index 285ba51..c8944d7 100644
--- a/drivers/cpufreq/cpufreq.c
+++ b/drivers/cpufreq/cpufreq.c
@@ -16,6 +16,7 @@
 
 #include <linux/cpu.h>
 #include <linux/cpufreq.h>
+#include <linux/cpufreq_times.h>
 #include <linux/cpu_cooling.h>
 #include <linux/delay.h>
 #include <linux/device.h>
@@ -30,6 +31,8 @@
 #include <linux/tick.h>
 #include <linux/units.h>
 #include <trace/events/power.h>
+#include <trace/hooks/cpufreq.h>
+#include <trace/hooks/thermal.h>
 
 static LIST_HEAD(cpufreq_policy_list);
 
@@ -387,7 +390,9 @@ static void cpufreq_notify_transition(struct cpufreq_policy *policy,
 					 CPUFREQ_POSTCHANGE, freqs);
 
 		cpufreq_stats_record_transition(policy, freqs->new);
+		cpufreq_times_record_transition(policy, freqs->new);
 		policy->cur = freqs->new;
+		trace_android_rvh_cpufreq_transition(policy);
 	}
 }
 
@@ -529,8 +534,10 @@ static unsigned int __resolve_freq(struct cpufreq_policy *policy,
 		unsigned int target_freq, unsigned int relation)
 {
 	unsigned int idx;
+	unsigned int old_target_freq = target_freq;
 
 	target_freq = clamp_val(target_freq, policy->min, policy->max);
+	trace_android_vh_cpufreq_resolve_freq(policy, &target_freq, old_target_freq);
 
 	if (!policy->freq_table)
 		return target_freq;
@@ -689,8 +696,15 @@ static ssize_t show_##file_name				\
 	return sprintf(buf, "%u\n", policy->object);	\
 }
 
+static ssize_t show_cpuinfo_max_freq(struct cpufreq_policy *policy, char *buf)
+{
+	unsigned int max_freq = policy->cpuinfo.max_freq;
+
+	trace_android_rvh_show_max_freq(policy, &max_freq);
+	return sprintf(buf, "%u\n", max_freq);
+}
+
 show_one(cpuinfo_min_freq, cpuinfo.min_freq);
-show_one(cpuinfo_max_freq, cpuinfo.max_freq);
 show_one(cpuinfo_transition_latency, cpuinfo.transition_latency);
 show_one(scaling_min_freq, min);
 show_one(scaling_max_freq, max);
@@ -1489,6 +1503,7 @@ static int cpufreq_online(unsigned int cpu)
 			goto out_destroy_policy;
 
 		cpufreq_stats_create_table(policy);
+		cpufreq_times_create_policy(policy);
 
 		write_lock_irqsave(&cpufreq_driver_lock, flags);
 		list_add(&policy->policy_list, &cpufreq_policy_list);
@@ -1523,8 +1538,10 @@ static int cpufreq_online(unsigned int cpu)
 	if (cpufreq_driver->ready)
 		cpufreq_driver->ready(policy);
 
-	if (cpufreq_thermal_control_enabled(cpufreq_driver))
+	if (cpufreq_thermal_control_enabled(cpufreq_driver)) {
 		policy->cdev = of_cpufreq_cooling_register(policy);
+		trace_android_vh_thermal_register(policy);
+	}
 
 	pr_debug("initialization complete\n");
 
@@ -1609,6 +1626,7 @@ static void __cpufreq_offline(unsigned int cpu, struct cpufreq_policy *policy)
 
 	if (cpufreq_thermal_control_enabled(cpufreq_driver)) {
 		cpufreq_cooling_unregister(policy->cdev);
+		trace_android_vh_thermal_unregister(policy);
 		policy->cdev = NULL;
 	}
 
@@ -2116,9 +2134,11 @@ unsigned int cpufreq_driver_fast_switch(struct cpufreq_policy *policy,
 					unsigned int target_freq)
 {
 	unsigned int freq;
+	unsigned int old_target_freq = target_freq;
 	int cpu;
 
 	target_freq = clamp_val(target_freq, policy->min, policy->max);
+	trace_android_vh_cpufreq_fast_switch(policy, &target_freq, old_target_freq);
 	freq = cpufreq_driver->fast_switch(policy, target_freq);
 
 	if (!freq)
@@ -2128,6 +2148,8 @@ unsigned int cpufreq_driver_fast_switch(struct cpufreq_policy *policy,
 	arch_set_freq_scale(policy->related_cpus, freq,
 			    policy->cpuinfo.max_freq);
 	cpufreq_stats_record_transition(policy, freq);
+	cpufreq_times_record_transition(policy, freq);
+	trace_android_rvh_cpufreq_transition(policy);
 
 	if (trace_cpu_frequency_enabled()) {
 		for_each_cpu(cpu, policy->cpus)
@@ -2275,6 +2297,8 @@ int __cpufreq_driver_target(struct cpufreq_policy *policy,
 
 	target_freq = __resolve_freq(policy, target_freq, relation);
 
+	trace_android_vh_cpufreq_target(policy, &target_freq, old_target_freq);
+
 	pr_debug("target for CPU %u: %u kHz, relation %u, requested %u kHz\n",
 		 policy->cpu, target_freq, relation, old_target_freq);
 
@@ -2604,7 +2628,6 @@ static int cpufreq_set_policy(struct cpufreq_policy *policy,
 		ret = cpufreq_start_governor(policy);
 		if (!ret) {
 			pr_debug("governor change\n");
-			sched_cpufreq_governor_change(policy, old_gov);
 			return 0;
 		}
 		cpufreq_exit_governor(policy);
@@ -2622,6 +2645,7 @@ static int cpufreq_set_policy(struct cpufreq_policy *policy,
 
 	return ret;
 }
+EXPORT_TRACEPOINT_SYMBOL_GPL(cpu_frequency_limits);
 
 /**
  * cpufreq_update_policy - Re-evaluate an existing cpufreq policy.
diff --git a/drivers/cpufreq/cpufreq_times.c b/drivers/cpufreq/cpufreq_times.c
new file mode 100644
index 0000000..47dc34c
--- /dev/null
+++ b/drivers/cpufreq/cpufreq_times.c
@@ -0,0 +1,214 @@
+/* drivers/cpufreq/cpufreq_times.c
+ *
+ * Copyright (C) 2018 Google, Inc.
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#include <linux/cpufreq.h>
+#include <linux/cpufreq_times.h>
+#include <linux/jiffies.h>
+#include <linux/sched.h>
+#include <linux/seq_file.h>
+#include <linux/slab.h>
+#include <linux/spinlock.h>
+#include <linux/threads.h>
+#include <trace/hooks/cpufreq.h>
+
+static DEFINE_SPINLOCK(task_time_in_state_lock); /* task->time_in_state */
+
+/**
+ * struct cpu_freqs - per-cpu frequency information
+ * @offset: start of these freqs' stats in task time_in_state array
+ * @max_state: number of entries in freq_table
+ * @last_index: index in freq_table of last frequency switched to
+ * @freq_table: list of available frequencies
+ */
+struct cpu_freqs {
+	unsigned int offset;
+	unsigned int max_state;
+	unsigned int last_index;
+	unsigned int freq_table[0];
+};
+
+static struct cpu_freqs *all_freqs[NR_CPUS];
+
+static unsigned int next_offset;
+
+void cpufreq_task_times_init(struct task_struct *p)
+{
+	unsigned long flags;
+
+	spin_lock_irqsave(&task_time_in_state_lock, flags);
+	p->time_in_state = NULL;
+	spin_unlock_irqrestore(&task_time_in_state_lock, flags);
+	p->max_state = 0;
+}
+
+void cpufreq_task_times_alloc(struct task_struct *p)
+{
+	void *temp;
+	unsigned long flags;
+	unsigned int max_state = READ_ONCE(next_offset);
+
+	/* We use one array to avoid multiple allocs per task */
+	temp = kcalloc(max_state, sizeof(p->time_in_state[0]), GFP_ATOMIC);
+	if (!temp)
+		return;
+
+	spin_lock_irqsave(&task_time_in_state_lock, flags);
+	p->time_in_state = temp;
+	spin_unlock_irqrestore(&task_time_in_state_lock, flags);
+	p->max_state = max_state;
+}
+
+/* Caller must hold task_time_in_state_lock */
+static int cpufreq_task_times_realloc_locked(struct task_struct *p)
+{
+	void *temp;
+	unsigned int max_state = READ_ONCE(next_offset);
+
+	temp = krealloc(p->time_in_state, max_state * sizeof(u64), GFP_ATOMIC);
+	if (!temp)
+		return -ENOMEM;
+	p->time_in_state = temp;
+	memset(p->time_in_state + p->max_state, 0,
+	       (max_state - p->max_state) * sizeof(u64));
+	p->max_state = max_state;
+	return 0;
+}
+
+void cpufreq_task_times_exit(struct task_struct *p)
+{
+	unsigned long flags;
+	void *temp;
+
+	if (!p->time_in_state)
+		return;
+
+	spin_lock_irqsave(&task_time_in_state_lock, flags);
+	temp = p->time_in_state;
+	p->time_in_state = NULL;
+	spin_unlock_irqrestore(&task_time_in_state_lock, flags);
+	kfree(temp);
+}
+
+int proc_time_in_state_show(struct seq_file *m, struct pid_namespace *ns,
+	struct pid *pid, struct task_struct *p)
+{
+	unsigned int cpu, i;
+	u64 cputime;
+	unsigned long flags;
+	struct cpu_freqs *freqs;
+	struct cpu_freqs *last_freqs = NULL;
+
+	spin_lock_irqsave(&task_time_in_state_lock, flags);
+	for_each_possible_cpu(cpu) {
+		freqs = all_freqs[cpu];
+		if (!freqs || freqs == last_freqs)
+			continue;
+		last_freqs = freqs;
+
+		seq_printf(m, "cpu%u\n", cpu);
+		for (i = 0; i < freqs->max_state; i++) {
+			cputime = 0;
+			if (freqs->offset + i < p->max_state &&
+			    p->time_in_state)
+				cputime = p->time_in_state[freqs->offset + i];
+			seq_printf(m, "%u %lu\n", freqs->freq_table[i],
+				   (unsigned long)nsec_to_clock_t(cputime));
+		}
+	}
+	spin_unlock_irqrestore(&task_time_in_state_lock, flags);
+	return 0;
+}
+
+void cpufreq_acct_update_power(struct task_struct *p, u64 cputime)
+{
+	unsigned long flags;
+	unsigned int state;
+	struct cpu_freqs *freqs = all_freqs[task_cpu(p)];
+
+	if (!freqs || is_idle_task(p) || p->flags & PF_EXITING)
+		return;
+
+	state = freqs->offset + READ_ONCE(freqs->last_index);
+
+	spin_lock_irqsave(&task_time_in_state_lock, flags);
+	if ((state < p->max_state || !cpufreq_task_times_realloc_locked(p)) &&
+	    p->time_in_state)
+		p->time_in_state[state] += cputime;
+	spin_unlock_irqrestore(&task_time_in_state_lock, flags);
+
+	trace_android_vh_cpufreq_acct_update_power(cputime, p, state);
+}
+
+static int cpufreq_times_get_index(struct cpu_freqs *freqs, unsigned int freq)
+{
+	int index;
+        for (index = 0; index < freqs->max_state; ++index) {
+		if (freqs->freq_table[index] == freq)
+			return index;
+        }
+	return -1;
+}
+
+void cpufreq_times_create_policy(struct cpufreq_policy *policy)
+{
+	int cpu, index = 0;
+	unsigned int count = 0;
+	struct cpufreq_frequency_table *pos, *table;
+	struct cpu_freqs *freqs;
+	void *tmp;
+
+	if (all_freqs[policy->cpu])
+		return;
+
+	table = policy->freq_table;
+	if (!table)
+		return;
+
+	cpufreq_for_each_valid_entry(pos, table)
+		count++;
+
+	tmp =  kzalloc(sizeof(*freqs) + sizeof(freqs->freq_table[0]) * count,
+		       GFP_KERNEL);
+	if (!tmp)
+		return;
+
+	freqs = tmp;
+	freqs->max_state = count;
+
+	cpufreq_for_each_valid_entry(pos, table)
+		freqs->freq_table[index++] = pos->frequency;
+
+	index = cpufreq_times_get_index(freqs, policy->cur);
+	if (index >= 0)
+		WRITE_ONCE(freqs->last_index, index);
+
+	freqs->offset = next_offset;
+	WRITE_ONCE(next_offset, freqs->offset + count);
+	for_each_cpu(cpu, policy->related_cpus)
+		all_freqs[cpu] = freqs;
+}
+
+void cpufreq_times_record_transition(struct cpufreq_policy *policy,
+	unsigned int new_freq)
+{
+	int index;
+	struct cpu_freqs *freqs = all_freqs[policy->cpu];
+	if (!freqs)
+		return;
+
+	index = cpufreq_times_get_index(freqs, new_freq);
+	if (index >= 0)
+		WRITE_ONCE(freqs->last_index, index);
+}
diff --git a/drivers/cpufreq/dummy-cpufreq.c b/drivers/cpufreq/dummy-cpufreq.c
new file mode 100644
index 0000000..e74ef67
--- /dev/null
+++ b/drivers/cpufreq/dummy-cpufreq.c
@@ -0,0 +1,60 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2019 Google, Inc.
+ */
+#include <linux/cpufreq.h>
+#include <linux/module.h>
+
+static struct cpufreq_frequency_table freq_table[] = {
+	{ .frequency = 1 },
+	{ .frequency = 2 },
+	{ .frequency = CPUFREQ_TABLE_END },
+};
+
+static int dummy_cpufreq_target_index(struct cpufreq_policy *policy,
+				   unsigned int index)
+{
+	return 0;
+}
+
+static int dummy_cpufreq_driver_init(struct cpufreq_policy *policy)
+{
+	policy->freq_table = freq_table;
+	return 0;
+}
+
+static unsigned int dummy_cpufreq_get(unsigned int cpu)
+{
+	return 1;
+}
+
+static int dummy_cpufreq_verify(struct cpufreq_policy_data *data)
+{
+	return 0;
+}
+
+static struct cpufreq_driver dummy_cpufreq_driver = {
+	.name = "dummy",
+	.target_index = dummy_cpufreq_target_index,
+	.init = dummy_cpufreq_driver_init,
+	.get = dummy_cpufreq_get,
+	.verify = dummy_cpufreq_verify,
+	.attr = cpufreq_generic_attr,
+};
+
+static int __init dummy_cpufreq_init(void)
+{
+	return cpufreq_register_driver(&dummy_cpufreq_driver);
+}
+
+static void __exit dummy_cpufreq_exit(void)
+{
+	cpufreq_unregister_driver(&dummy_cpufreq_driver);
+}
+
+module_init(dummy_cpufreq_init);
+module_exit(dummy_cpufreq_exit);
+
+MODULE_AUTHOR("Connor O'Brien <connoro@google.com>");
+MODULE_DESCRIPTION("dummy cpufreq driver");
+MODULE_LICENSE("GPL");
diff --git a/drivers/cpufreq/freq_table.c b/drivers/cpufreq/freq_table.c
index 67e56cf..24d3115 100644
--- a/drivers/cpufreq/freq_table.c
+++ b/drivers/cpufreq/freq_table.c
@@ -9,6 +9,7 @@
 
 #include <linux/cpufreq.h>
 #include <linux/module.h>
+#include <trace/hooks/cpufreq.h>
 
 /*********************************************************************
  *                     FREQUENCY TABLE HELPERS                       *
@@ -51,6 +52,7 @@ int cpufreq_frequency_table_cpuinfo(struct cpufreq_policy *policy,
 			max_freq = freq;
 	}
 
+	trace_android_vh_freq_table_limits(policy, min_freq, max_freq);
 	policy->min = policy->cpuinfo.min_freq = min_freq;
 	policy->max = max_freq;
 	/*
diff --git a/drivers/cpuidle/cpuidle-psci.c b/drivers/cpuidle/cpuidle-psci.c
index 57bc3e3..f92cf17 100644
--- a/drivers/cpuidle/cpuidle-psci.c
+++ b/drivers/cpuidle/cpuidle-psci.c
@@ -26,6 +26,7 @@
 #include <linux/syscore_ops.h>
 
 #include <asm/cpuidle.h>
+#include <trace/hooks/cpuidle_psci.h>
 
 #include "cpuidle-psci.h"
 #include "dt_idle_states.h"
@@ -68,8 +69,12 @@ static int __psci_enter_domain_idle_state(struct cpuidle_device *dev,
 	if (ret)
 		return -1;
 
+
 	/* Do runtime PM to manage a hierarchical CPU toplogy. */
 	ct_irq_enter_irqson();
+
+	trace_android_vh_cpuidle_psci_enter(dev, s2idle);
+
 	if (s2idle)
 		dev_pm_genpd_suspend(pd_dev);
 	else
@@ -87,6 +92,9 @@ static int __psci_enter_domain_idle_state(struct cpuidle_device *dev,
 		dev_pm_genpd_resume(pd_dev);
 	else
 		pm_runtime_get_sync(pd_dev);
+
+	trace_android_vh_cpuidle_psci_exit(dev, s2idle);
+
 	ct_irq_exit_irqson();
 
 	cpu_pm_exit();
diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c
index 6eceb19..054449e 100644
--- a/drivers/cpuidle/cpuidle.c
+++ b/drivers/cpuidle/cpuidle.c
@@ -26,6 +26,7 @@
 #include <linux/mmu_context.h>
 #include <linux/context_tracking.h>
 #include <trace/events/power.h>
+#include <trace/hooks/cpuidle.h>
 
 #include "cpuidle.h"
 
@@ -204,11 +205,22 @@ int cpuidle_enter_state(struct cpuidle_device *dev, struct cpuidle_driver *drv,
 {
 	int entered_state;
 
-	struct cpuidle_state *target_state = &drv->states[index];
-	bool broadcast = !!(target_state->flags & CPUIDLE_FLAG_TIMER_STOP);
+	struct cpuidle_state *target_state;
+	bool broadcast;
 	ktime_t time_start, time_end;
 
 	/*
+	 * The vendor hook may modify index, which means target_state and
+	 * broadcast must be assigned after the vendor hook.
+	 */
+	trace_android_vh_cpu_idle_enter(&index, dev);
+	if (index < 0)
+		return index;
+
+	target_state = &drv->states[index];
+	broadcast = !!(target_state->flags & CPUIDLE_FLAG_TIMER_STOP);
+
+	/*
 	 * Tell the time framework to switch to a broadcast timer because our
 	 * local timer will be shut down.  If a local timer is used from another
 	 * CPU as a broadcast timer, this call may fail if it is not available.
@@ -244,6 +256,7 @@ int cpuidle_enter_state(struct cpuidle_device *dev, struct cpuidle_driver *drv,
 	sched_clock_idle_wakeup_event();
 	time_end = ns_to_ktime(local_clock());
 	trace_cpu_idle(PWR_EVENT_EXIT, dev->cpu);
+	trace_android_vh_cpu_idle_exit(entered_state, dev);
 
 	/* The cpu is no longer idle or about to enter idle. */
 	sched_idle_set_state(NULL);
diff --git a/drivers/cpuidle/driver.c b/drivers/cpuidle/driver.c
index f70aa17..5bfdb86 100644
--- a/drivers/cpuidle/driver.c
+++ b/drivers/cpuidle/driver.c
@@ -385,3 +385,4 @@ void cpuidle_driver_state_disabled(struct cpuidle_driver *drv, int idx,
 
 	mutex_unlock(&cpuidle_lock);
 }
+EXPORT_SYMBOL_GPL(cpuidle_driver_state_disabled);
diff --git a/drivers/cpuidle/governor.c b/drivers/cpuidle/governor.c
index 0d0f975..ca15755 100644
--- a/drivers/cpuidle/governor.c
+++ b/drivers/cpuidle/governor.c
@@ -101,6 +101,7 @@ int cpuidle_register_governor(struct cpuidle_governor *gov)
 
 	return ret;
 }
+EXPORT_SYMBOL_GPL(cpuidle_register_governor);
 
 /**
  * cpuidle_governor_latency_req - Compute a latency constraint for CPU
@@ -117,3 +118,4 @@ s64 cpuidle_governor_latency_req(unsigned int cpu)
 
 	return (s64)device_req * NSEC_PER_USEC;
 }
+EXPORT_SYMBOL_GPL(cpuidle_governor_latency_req);
diff --git a/drivers/cpuidle/governors/teo.c b/drivers/cpuidle/governors/teo.c
index d9262db..987fc5f 100644
--- a/drivers/cpuidle/governors/teo.c
+++ b/drivers/cpuidle/governors/teo.c
@@ -2,8 +2,13 @@
 /*
  * Timer events oriented CPU idle governor
  *
+ * TEO governor:
  * Copyright (C) 2018 - 2021 Intel Corporation
  * Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+ *
+ * Util-awareness mechanism:
+ * Copyright (C) 2022 Arm Ltd.
+ * Author: Kajetan Puchalski <kajetan.puchalski@arm.com>
  */
 
 /**
@@ -99,15 +104,56 @@
  *      select the given idle state instead of the candidate one.
  *
  * 3. By default, select the candidate state.
+ *
+ * Util-awareness mechanism:
+ *
+ * The idea behind the util-awareness extension is that there are two distinct
+ * scenarios for the CPU which should result in two different approaches to idle
+ * state selection - utilized and not utilized.
+ *
+ * In this case, 'utilized' means that the average runqueue util of the CPU is
+ * above a certain threshold.
+ *
+ * When the CPU is utilized while going into idle, more likely than not it will
+ * be woken up to do more work soon and so a shallower idle state should be
+ * selected to minimise latency and maximise performance. When the CPU is not
+ * being utilized, the usual metrics-based approach to selecting the deepest
+ * available idle state should be preferred to take advantage of the power
+ * saving.
+ *
+ * In order to achieve this, the governor uses a utilization threshold.
+ * The threshold is computed per-CPU as a percentage of the CPU's capacity
+ * by bit shifting the capacity value. Based on testing, the shift of 6 (~1.56%)
+ * seems to be getting the best results.
+ *
+ * Before selecting the next idle state, the governor compares the current CPU
+ * util to the precomputed util threshold. If it's below, it defaults to the
+ * TEO metrics mechanism. If it's above, the closest shallower idle state will
+ * be selected instead, as long as is not a polling state.
  */
 
 #include <linux/cpuidle.h>
 #include <linux/jiffies.h>
 #include <linux/kernel.h>
+#include <linux/sched.h>
 #include <linux/sched/clock.h>
+#include <linux/sched/topology.h>
 #include <linux/tick.h>
 
 /*
+ * The number of bits to shift the CPU's capacity by in order to determine
+ * the utilized threshold.
+ *
+ * 6 was chosen based on testing as the number that achieved the best balance
+ * of power and performance on average.
+ *
+ * The resulting threshold is high enough to not be triggered by background
+ * noise and low enough to react quickly when activity starts to ramp up.
+ */
+#define UTIL_THRESHOLD_SHIFT 6
+
+
+/*
  * The PULSE value is added to metrics when they grow and the DECAY_SHIFT value
  * is used for decreasing metrics on a regular basis.
  */
@@ -137,9 +183,11 @@ struct teo_bin {
  * @time_span_ns: Time between idle state selection and post-wakeup update.
  * @sleep_length_ns: Time till the closest timer event (at the selection time).
  * @state_bins: Idle state data bins for this CPU.
- * @total: Grand total of the "intercepts" and "hits" mertics for all bins.
+ * @total: Grand total of the "intercepts" and "hits" metrics for all bins.
  * @next_recent_idx: Index of the next @recent_idx entry to update.
  * @recent_idx: Indices of bins corresponding to recent "intercepts".
+ * @util_threshold: Threshold above which the CPU is considered utilized
+ * @utilized: Whether the last sleep on the CPU happened while utilized
  */
 struct teo_cpu {
 	s64 time_span_ns;
@@ -148,11 +196,30 @@ struct teo_cpu {
 	unsigned int total;
 	int next_recent_idx;
 	int recent_idx[NR_RECENT];
+	unsigned long util_threshold;
+	bool utilized;
 };
 
 static DEFINE_PER_CPU(struct teo_cpu, teo_cpus);
 
 /**
+ * teo_cpu_is_utilized - Check if the CPU's util is above the threshold
+ * @cpu: Target CPU
+ * @cpu_data: Governor CPU data for the target CPU
+ */
+#ifdef CONFIG_SMP
+static bool teo_cpu_is_utilized(int cpu, struct teo_cpu *cpu_data)
+{
+	return sched_cpu_util(cpu) > cpu_data->util_threshold;
+}
+#else
+static bool teo_cpu_is_utilized(int cpu, struct teo_cpu *cpu_data)
+{
+	return false;
+}
+#endif
+
+/**
  * teo_update - Update CPU metrics after wakeup.
  * @drv: cpuidle driver containing state data.
  * @dev: Target CPU.
@@ -258,15 +325,17 @@ static s64 teo_middle_of_bin(int idx, struct cpuidle_driver *drv)
  * @dev: Target CPU.
  * @state_idx: Index of the capping idle state.
  * @duration_ns: Idle duration value to match.
+ * @no_poll: Don't consider polling states.
  */
 static int teo_find_shallower_state(struct cpuidle_driver *drv,
 				    struct cpuidle_device *dev, int state_idx,
-				    s64 duration_ns)
+				    s64 duration_ns, bool no_poll)
 {
 	int i;
 
 	for (i = state_idx - 1; i >= 0; i--) {
-		if (dev->states_usage[i].disable)
+		if (dev->states_usage[i].disable ||
+				(no_poll && drv->states[i].flags & CPUIDLE_FLAG_POLLING))
 			continue;
 
 		state_idx = i;
@@ -321,6 +390,22 @@ static int teo_select(struct cpuidle_driver *drv, struct cpuidle_device *dev,
 			goto end;
 	}
 
+	cpu_data->utilized = teo_cpu_is_utilized(dev->cpu, cpu_data);
+	/*
+	 * If the CPU is being utilized over the threshold and there are only 2
+	 * states to choose from, the metrics need not be considered, so choose
+	 * 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;
+			}
+		}
+	}
+
 	/*
 	 * Find the deepest idle state whose target residency does not exceed
 	 * the current sleep length and the deepest idle state not deeper than
@@ -452,6 +537,13 @@ static int teo_select(struct cpuidle_driver *drv, struct cpuidle_device *dev,
 	if (idx > constraint_idx)
 		idx = constraint_idx;
 
+	/*
+	 * If the CPU is being utilized over the threshold, choose a shallower
+	 * non-polling state to improve latency
+	 */
+	if (cpu_data->utilized)
+		idx = teo_find_shallower_state(drv, dev, idx, duration_ns, true);
+
 end:
 	/*
 	 * Don't stop the tick if the selected state is a polling one or if the
@@ -469,7 +561,7 @@ static int teo_select(struct cpuidle_driver *drv, struct cpuidle_device *dev,
 		 */
 		if (idx > idx0 &&
 		    drv->states[idx].target_residency_ns > delta_tick)
-			idx = teo_find_shallower_state(drv, dev, idx, delta_tick);
+			idx = teo_find_shallower_state(drv, dev, idx, delta_tick, false);
 	}
 
 	return idx;
@@ -508,9 +600,11 @@ static int teo_enable_device(struct cpuidle_driver *drv,
 			     struct cpuidle_device *dev)
 {
 	struct teo_cpu *cpu_data = per_cpu_ptr(&teo_cpus, dev->cpu);
+	unsigned long max_capacity = arch_scale_cpu_capacity(dev->cpu);
 	int i;
 
 	memset(cpu_data, 0, sizeof(*cpu_data));
+	cpu_data->util_threshold = max_capacity >> UTIL_THRESHOLD_SHIFT;
 
 	for (i = 0; i < NR_RECENT; i++)
 		cpu_data->recent_idx[i] = -1;
diff --git a/drivers/crypto/hisilicon/qm.c b/drivers/crypto/hisilicon/qm.c
index 07e1e39..53937be 100644
--- a/drivers/crypto/hisilicon/qm.c
+++ b/drivers/crypto/hisilicon/qm.c
@@ -3333,7 +3333,7 @@ static int hisi_qm_uacce_mmap(struct uacce_queue *q,
 				return -EINVAL;
 		}
 
-		vma->vm_flags |= VM_IO;
+		vm_flags_set(vma, VM_IO);
 
 		return remap_pfn_range(vma, vma->vm_start,
 				       phys_base >> PAGE_SHIFT,
diff --git a/drivers/dax/device.c b/drivers/dax/device.c
index 5494d74..223e4e2 100644
--- a/drivers/dax/device.c
+++ b/drivers/dax/device.c
@@ -308,7 +308,7 @@ static int dax_mmap(struct file *filp, struct vm_area_struct *vma)
 		return rc;
 
 	vma->vm_ops = &dax_vm_ops;
-	vma->vm_flags |= VM_HUGEPAGE;
+	vm_flags_set(vma, VM_HUGEPAGE);
 	return 0;
 }
 
diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c
index eb6b593..842f0fe 100644
--- a/drivers/dma-buf/dma-buf.c
+++ b/drivers/dma-buf/dma-buf.c
@@ -27,14 +27,13 @@
 #include <linux/mm.h>
 #include <linux/mount.h>
 #include <linux/pseudo_fs.h>
+#include <trace/hooks/dmabuf.h>
 
 #include <uapi/linux/dma-buf.h>
 #include <uapi/linux/magic.h>
 
 #include "dma-buf-sysfs-stats.h"
 
-static inline int is_dma_buf_file(struct file *);
-
 struct dma_buf_list {
 	struct list_head head;
 	struct mutex lock;
@@ -42,6 +41,39 @@ struct dma_buf_list {
 
 static struct dma_buf_list db_list;
 
+/**
+ * dma_buf_get_each - Helps in traversing the db_list and calls the
+ * callback function which can extract required info out of each
+ * dmabuf.
+ * The db_list needs to be locked to prevent the db_list from being
+ * dynamically updated during the traversal process.
+ *
+ * @callback: [in]   Handle for each dmabuf buffer in db_list.
+ * @private:  [in]   User-defined, used to pass in when callback is
+ *                   called.
+ *
+ * Returns 0 on success, otherwise returns a non-zero value for
+ * mutex_lock_interruptible or callback.
+ */
+int dma_buf_get_each(int (*callback)(const struct dma_buf *dmabuf,
+		     void *private), void *private)
+{
+	struct dma_buf *buf;
+	int ret = mutex_lock_interruptible(&db_list.lock);
+
+	if (ret)
+		return ret;
+
+	list_for_each_entry(buf, &db_list.head, list_node) {
+		ret = callback(buf, private);
+		if (ret)
+			break;
+	}
+	mutex_unlock(&db_list.lock);
+	return ret;
+}
+EXPORT_SYMBOL_NS_GPL(dma_buf_get_each, MINIDUMP);
+
 static char *dmabuffs_dname(struct dentry *dentry, char *buffer, int buflen)
 {
 	struct dma_buf *dmabuf;
@@ -131,6 +163,7 @@ static struct file_system_type dma_buf_fs_type = {
 static int dma_buf_mmap_internal(struct file *file, struct vm_area_struct *vma)
 {
 	struct dma_buf *dmabuf;
+	bool ignore_bounds = false;
 
 	if (!is_dma_buf_file(file))
 		return -EINVAL;
@@ -141,9 +174,11 @@ static int dma_buf_mmap_internal(struct file *file, struct vm_area_struct *vma)
 	if (!dmabuf->ops->mmap)
 		return -EINVAL;
 
+	trace_android_vh_ignore_dmabuf_vmap_bounds(dmabuf, &ignore_bounds);
+
 	/* check for overflowing the buffer's size */
-	if (vma->vm_pgoff + vma_pages(vma) >
-	    dmabuf->size >> PAGE_SHIFT)
+	if ((vma->vm_pgoff + vma_pages(vma) >
+	    dmabuf->size >> PAGE_SHIFT) && !ignore_bounds)
 		return -EINVAL;
 
 	return dmabuf->ops->mmap(dmabuf, vma);
@@ -304,6 +339,16 @@ static __poll_t dma_buf_poll(struct file *file, poll_table *poll)
 	return events;
 }
 
+static long _dma_buf_set_name(struct dma_buf *dmabuf, const char *name)
+{
+	spin_lock(&dmabuf->name_lock);
+	kfree(dmabuf->name);
+	dmabuf->name = name;
+	spin_unlock(&dmabuf->name_lock);
+
+	return 0;
+}
+
 /**
  * dma_buf_set_name - Set a name to a specific dma_buf to track the usage.
  * It could support changing the name of the dma-buf if the same
@@ -317,19 +362,35 @@ static __poll_t dma_buf_poll(struct file *file, poll_table *poll)
  * devices, return -EBUSY.
  *
  */
-static long dma_buf_set_name(struct dma_buf *dmabuf, const char __user *buf)
+long dma_buf_set_name(struct dma_buf *dmabuf, const char *name)
+{
+	long ret = 0;
+	char *buf = kstrndup(name, DMA_BUF_NAME_LEN, GFP_KERNEL);
+
+	if (!buf)
+		return -ENOMEM;
+
+	ret = _dma_buf_set_name(dmabuf, buf);
+	if (ret)
+		kfree(buf);
+
+	return ret;
+}
+EXPORT_SYMBOL_GPL(dma_buf_set_name);
+
+static long dma_buf_set_name_user(struct dma_buf *dmabuf, const char __user *buf)
 {
 	char *name = strndup_user(buf, DMA_BUF_NAME_LEN);
+	long ret = 0;
 
 	if (IS_ERR(name))
 		return PTR_ERR(name);
 
-	spin_lock(&dmabuf->name_lock);
-	kfree(dmabuf->name);
-	dmabuf->name = name;
-	spin_unlock(&dmabuf->name_lock);
+	ret = _dma_buf_set_name(dmabuf, name);
+	if (ret)
+		kfree(name);
 
-	return 0;
+	return ret;
 }
 
 #if IS_ENABLED(CONFIG_SYNC_FILE)
@@ -478,7 +539,7 @@ static long dma_buf_ioctl(struct file *file,
 
 	case DMA_BUF_SET_NAME_A:
 	case DMA_BUF_SET_NAME_B:
-		return dma_buf_set_name(dmabuf, (const char __user *)arg);
+		return dma_buf_set_name_user(dmabuf, (const char __user *)arg);
 
 #if IS_ENABLED(CONFIG_SYNC_FILE)
 	case DMA_BUF_IOCTL_EXPORT_SYNC_FILE:
@@ -519,10 +580,11 @@ static const struct file_operations dma_buf_fops = {
 /*
  * is_dma_buf_file - Check if struct file* is associated with dma_buf
  */
-static inline int is_dma_buf_file(struct file *file)
+int is_dma_buf_file(struct file *file)
 {
 	return file->f_op == &dma_buf_fops;
 }
+EXPORT_SYMBOL_NS_GPL(is_dma_buf_file, DMA_BUF);
 
 static struct file *dma_buf_getfile(size_t size, int flags)
 {
@@ -1306,6 +1368,30 @@ int dma_buf_begin_cpu_access(struct dma_buf *dmabuf,
 }
 EXPORT_SYMBOL_NS_GPL(dma_buf_begin_cpu_access, DMA_BUF);
 
+int dma_buf_begin_cpu_access_partial(struct dma_buf *dmabuf,
+				     enum dma_data_direction direction,
+				     unsigned int offset, unsigned int len)
+{
+	int ret = 0;
+
+	if (WARN_ON(!dmabuf))
+		return -EINVAL;
+
+	if (dmabuf->ops->begin_cpu_access_partial)
+		ret = dmabuf->ops->begin_cpu_access_partial(dmabuf, direction,
+							    offset, len);
+
+	/* Ensure that all fences are waited upon - but we first allow
+	 * the native handler the chance to do so more efficiently if it
+	 * chooses. A double invocation here will be reasonably cheap no-op.
+	 */
+	if (ret == 0)
+		ret = __dma_buf_begin_cpu_access(dmabuf, direction);
+
+	return ret;
+}
+EXPORT_SYMBOL_GPL(dma_buf_begin_cpu_access_partial);
+
 /**
  * dma_buf_end_cpu_access - Must be called after accessing a dma_buf from the
  * cpu in the kernel context. Calls end_cpu_access to allow exporter-specific
@@ -1334,6 +1420,21 @@ int dma_buf_end_cpu_access(struct dma_buf *dmabuf,
 }
 EXPORT_SYMBOL_NS_GPL(dma_buf_end_cpu_access, DMA_BUF);
 
+int dma_buf_end_cpu_access_partial(struct dma_buf *dmabuf,
+				   enum dma_data_direction direction,
+				   unsigned int offset, unsigned int len)
+{
+	int ret = 0;
+
+	WARN_ON(!dmabuf);
+
+	if (dmabuf->ops->end_cpu_access_partial)
+		ret = dmabuf->ops->end_cpu_access_partial(dmabuf, direction,
+							  offset, len);
+
+	return ret;
+}
+EXPORT_SYMBOL_GPL(dma_buf_end_cpu_access_partial);
 
 /**
  * dma_buf_mmap - Setup up a userspace mmap with the given vma
@@ -1454,6 +1555,20 @@ void dma_buf_vunmap(struct dma_buf *dmabuf, struct iosys_map *map)
 }
 EXPORT_SYMBOL_NS_GPL(dma_buf_vunmap, DMA_BUF);
 
+int dma_buf_get_flags(struct dma_buf *dmabuf, unsigned long *flags)
+{
+	int ret = 0;
+
+	if (WARN_ON(!dmabuf) || !flags)
+		return -EINVAL;
+
+	if (dmabuf->ops->get_flags)
+		ret = dmabuf->ops->get_flags(dmabuf, flags);
+
+	return ret;
+}
+EXPORT_SYMBOL_GPL(dma_buf_get_flags);
+
 #ifdef CONFIG_DEBUG_FS
 static int dma_buf_debug_show(struct seq_file *s, void *unused)
 {
diff --git a/drivers/dma-buf/dma-heap.c b/drivers/dma-buf/dma-heap.c
index 59d1588..53d8ee8 100644
--- a/drivers/dma-buf/dma-heap.c
+++ b/drivers/dma-buf/dma-heap.c
@@ -31,6 +31,7 @@
  * @heap_devt		heap device node
  * @list		list head connecting to list of heaps
  * @heap_cdev		heap char device
+ * @heap_dev		heap device struct
  *
  * Represents a heap of memory from which buffers can be made.
  */
@@ -41,6 +42,8 @@ struct dma_heap {
 	dev_t heap_devt;
 	struct list_head list;
 	struct cdev heap_cdev;
+	struct kref refcount;
+	struct device *heap_dev;
 };
 
 static LIST_HEAD(heap_list);
@@ -49,22 +52,60 @@ static dev_t dma_heap_devt;
 static struct class *dma_heap_class;
 static DEFINE_XARRAY_ALLOC(dma_heap_minors);
 
-static int dma_heap_buffer_alloc(struct dma_heap *heap, size_t len,
-				 unsigned int fd_flags,
-				 unsigned int heap_flags)
+struct dma_heap *dma_heap_find(const char *name)
 {
-	struct dma_buf *dmabuf;
-	int fd;
+	struct dma_heap *h;
 
+	mutex_lock(&heap_list_lock);
+	list_for_each_entry(h, &heap_list, list) {
+		if (!strcmp(h->name, name)) {
+			kref_get(&h->refcount);
+			mutex_unlock(&heap_list_lock);
+			return h;
+		}
+	}
+	mutex_unlock(&heap_list_lock);
+	return NULL;
+}
+EXPORT_SYMBOL_GPL(dma_heap_find);
+
+
+void dma_heap_buffer_free(struct dma_buf *dmabuf)
+{
+	dma_buf_put(dmabuf);
+}
+EXPORT_SYMBOL_GPL(dma_heap_buffer_free);
+
+struct dma_buf *dma_heap_buffer_alloc(struct dma_heap *heap, size_t len,
+				      unsigned int fd_flags,
+				      unsigned int heap_flags)
+{
+	if (fd_flags & ~DMA_HEAP_VALID_FD_FLAGS)
+		return ERR_PTR(-EINVAL);
+
+	if (heap_flags & ~DMA_HEAP_VALID_HEAP_FLAGS)
+		return ERR_PTR(-EINVAL);
 	/*
 	 * Allocations from all heaps have to begin
 	 * and end on page boundaries.
 	 */
 	len = PAGE_ALIGN(len);
 	if (!len)
-		return -EINVAL;
+		return ERR_PTR(-EINVAL);
 
-	dmabuf = heap->ops->allocate(heap, len, fd_flags, heap_flags);
+	return heap->ops->allocate(heap, len, fd_flags, heap_flags);
+}
+EXPORT_SYMBOL_GPL(dma_heap_buffer_alloc);
+
+int dma_heap_bufferfd_alloc(struct dma_heap *heap, size_t len,
+			    unsigned int fd_flags,
+			    unsigned int heap_flags)
+{
+	struct dma_buf *dmabuf;
+	int fd;
+
+	dmabuf = dma_heap_buffer_alloc(heap, len, fd_flags, heap_flags);
+
 	if (IS_ERR(dmabuf))
 		return PTR_ERR(dmabuf);
 
@@ -74,7 +115,9 @@ static int dma_heap_buffer_alloc(struct dma_heap *heap, size_t len,
 		/* just return, as put will call release and that will free */
 	}
 	return fd;
+
 }
+EXPORT_SYMBOL_GPL(dma_heap_bufferfd_alloc);
 
 static int dma_heap_open(struct inode *inode, struct file *file)
 {
@@ -102,15 +145,9 @@ static long dma_heap_ioctl_allocate(struct file *file, void *data)
 	if (heap_allocation->fd)
 		return -EINVAL;
 
-	if (heap_allocation->fd_flags & ~DMA_HEAP_VALID_FD_FLAGS)
-		return -EINVAL;
-
-	if (heap_allocation->heap_flags & ~DMA_HEAP_VALID_HEAP_FLAGS)
-		return -EINVAL;
-
-	fd = dma_heap_buffer_alloc(heap, heap_allocation->len,
-				   heap_allocation->fd_flags,
-				   heap_allocation->heap_flags);
+	fd = dma_heap_bufferfd_alloc(heap, heap_allocation->len,
+				     heap_allocation->fd_flags,
+				     heap_allocation->heap_flags);
 	if (fd < 0)
 		return fd;
 
@@ -203,6 +240,47 @@ void *dma_heap_get_drvdata(struct dma_heap *heap)
 {
 	return heap->priv;
 }
+EXPORT_SYMBOL_GPL(dma_heap_get_drvdata);
+
+static void dma_heap_release(struct kref *ref)
+{
+	struct dma_heap *heap = container_of(ref, struct dma_heap, refcount);
+	int minor = MINOR(heap->heap_devt);
+
+	/* Note, we already holding the heap_list_lock here */
+	list_del(&heap->list);
+
+	device_destroy(dma_heap_class, heap->heap_devt);
+	cdev_del(&heap->heap_cdev);
+	xa_erase(&dma_heap_minors, minor);
+
+	kfree(heap);
+}
+
+void dma_heap_put(struct dma_heap *h)
+{
+	/*
+	 * Take the heap_list_lock now to avoid racing with code
+	 * scanning the list and then taking a kref.
+	 */
+	mutex_lock(&heap_list_lock);
+	kref_put(&h->refcount, dma_heap_release);
+	mutex_unlock(&heap_list_lock);
+}
+EXPORT_SYMBOL_GPL(dma_heap_put);
+
+/**
+ * dma_heap_get_dev() - get device struct for the heap
+ * @heap: DMA-Heap to retrieve device struct from
+ *
+ * Returns:
+ * The device struct for the heap.
+ */
+struct device *dma_heap_get_dev(struct dma_heap *heap)
+{
+	return heap->heap_dev;
+}
+EXPORT_SYMBOL_GPL(dma_heap_get_dev);
 
 /**
  * dma_heap_get_name() - get heap name
@@ -215,11 +293,11 @@ const char *dma_heap_get_name(struct dma_heap *heap)
 {
 	return heap->name;
 }
+EXPORT_SYMBOL_GPL(dma_heap_get_name);
 
 struct dma_heap *dma_heap_add(const struct dma_heap_export_info *exp_info)
 {
 	struct dma_heap *heap, *h, *err_ret;
-	struct device *dev_ret;
 	unsigned int minor;
 	int ret;
 
@@ -237,6 +315,7 @@ struct dma_heap *dma_heap_add(const struct dma_heap_export_info *exp_info)
 	if (!heap)
 		return ERR_PTR(-ENOMEM);
 
+	kref_init(&heap->refcount);
 	heap->name = exp_info->name;
 	heap->ops = exp_info->ops;
 	heap->priv = exp_info->priv;
@@ -261,17 +340,20 @@ struct dma_heap *dma_heap_add(const struct dma_heap_export_info *exp_info)
 		goto err1;
 	}
 
-	dev_ret = device_create(dma_heap_class,
-				NULL,
-				heap->heap_devt,
-				NULL,
-				heap->name);
-	if (IS_ERR(dev_ret)) {
+	heap->heap_dev = device_create(dma_heap_class,
+				       NULL,
+				       heap->heap_devt,
+				       NULL,
+				       heap->name);
+	if (IS_ERR(heap->heap_dev)) {
 		pr_err("dma_heap: Unable to create device\n");
-		err_ret = ERR_CAST(dev_ret);
+		err_ret = ERR_CAST(heap->heap_dev);
 		goto err2;
 	}
 
+	/* Make sure it doesn't disappear on us */
+	heap->heap_dev = get_device(heap->heap_dev);
+
 	mutex_lock(&heap_list_lock);
 	/* check the name is unique */
 	list_for_each_entry(h, &heap_list, list) {
@@ -280,6 +362,7 @@ struct dma_heap *dma_heap_add(const struct dma_heap_export_info *exp_info)
 			pr_err("dma_heap: Already registered heap named %s\n",
 			       exp_info->name);
 			err_ret = ERR_PTR(-EINVAL);
+			put_device(heap->heap_dev);
 			goto err3;
 		}
 	}
@@ -300,27 +383,88 @@ struct dma_heap *dma_heap_add(const struct dma_heap_export_info *exp_info)
 	kfree(heap);
 	return err_ret;
 }
+EXPORT_SYMBOL_GPL(dma_heap_add);
 
 static char *dma_heap_devnode(struct device *dev, umode_t *mode)
 {
 	return kasprintf(GFP_KERNEL, "dma_heap/%s", dev_name(dev));
 }
 
+static ssize_t total_pools_kb_show(struct kobject *kobj,
+				   struct kobj_attribute *attr, char *buf)
+{
+	struct dma_heap *heap;
+	u64 total_pool_size = 0;
+
+	mutex_lock(&heap_list_lock);
+	list_for_each_entry(heap, &heap_list, list) {
+		if (heap->ops->get_pool_size)
+			total_pool_size += heap->ops->get_pool_size(heap);
+	}
+	mutex_unlock(&heap_list_lock);
+
+	return sysfs_emit(buf, "%llu\n", total_pool_size / 1024);
+}
+
+static struct kobj_attribute total_pools_kb_attr =
+	__ATTR_RO(total_pools_kb);
+
+static struct attribute *dma_heap_sysfs_attrs[] = {
+	&total_pools_kb_attr.attr,
+	NULL,
+};
+
+ATTRIBUTE_GROUPS(dma_heap_sysfs);
+
+static struct kobject *dma_heap_kobject;
+
+static int dma_heap_sysfs_setup(void)
+{
+	int ret;
+
+	dma_heap_kobject = kobject_create_and_add("dma_heap", kernel_kobj);
+	if (!dma_heap_kobject)
+		return -ENOMEM;
+
+	ret = sysfs_create_groups(dma_heap_kobject, dma_heap_sysfs_groups);
+	if (ret) {
+		kobject_put(dma_heap_kobject);
+		return ret;
+	}
+
+	return 0;
+}
+
+static void dma_heap_sysfs_teardown(void)
+{
+	kobject_put(dma_heap_kobject);
+}
+
 static int dma_heap_init(void)
 {
 	int ret;
 
-	ret = alloc_chrdev_region(&dma_heap_devt, 0, NUM_HEAP_MINORS, DEVNAME);
+	ret = dma_heap_sysfs_setup();
 	if (ret)
 		return ret;
 
+	ret = alloc_chrdev_region(&dma_heap_devt, 0, NUM_HEAP_MINORS, DEVNAME);
+	if (ret)
+		goto err_chrdev;
+
 	dma_heap_class = class_create(THIS_MODULE, DEVNAME);
 	if (IS_ERR(dma_heap_class)) {
-		unregister_chrdev_region(dma_heap_devt, NUM_HEAP_MINORS);
-		return PTR_ERR(dma_heap_class);
+		ret = PTR_ERR(dma_heap_class);
+		goto err_class;
 	}
 	dma_heap_class->devnode = dma_heap_devnode;
 
 	return 0;
+
+err_class:
+	unregister_chrdev_region(dma_heap_devt, NUM_HEAP_MINORS);
+err_chrdev:
+	dma_heap_sysfs_teardown();
+	return ret;
 }
 subsys_initcall(dma_heap_init);
diff --git a/drivers/dma-buf/heaps/Kconfig b/drivers/dma-buf/heaps/Kconfig
index a5eef06..9c9cfdb 100644
--- a/drivers/dma-buf/heaps/Kconfig
+++ b/drivers/dma-buf/heaps/Kconfig
@@ -1,12 +1,23 @@
+menuconfig DMABUF_HEAPS_DEFERRED_FREE
+	bool "DMA-BUF heaps deferred-free library"
+	help
+	  Choose this option to enable the DMA-BUF heaps deferred-free library.
+
+menuconfig DMABUF_HEAPS_PAGE_POOL
+	bool "DMA-BUF heaps page-pool library"
+	help
+	  Choose this option to enable the DMA-BUF heaps page-pool library.
+
 config DMABUF_HEAPS_SYSTEM
-	bool "DMA-BUF System Heap"
+	tristate "DMA-BUF System Heap"
 	depends on DMABUF_HEAPS
+	select DMABUF_HEAPS_PAGE_POOL
 	help
 	  Choose this option to enable the system dmabuf heap. The system heap
 	  is backed by pages from the buddy allocator. If in doubt, say Y.
 
 config DMABUF_HEAPS_CMA
-	bool "DMA-BUF CMA Heap"
+	tristate "DMA-BUF CMA Heap"
 	depends on DMABUF_HEAPS && DMA_CMA
 	help
 	  Choose this option to enable dma-buf CMA heap. This heap is backed
diff --git a/drivers/dma-buf/heaps/Makefile b/drivers/dma-buf/heaps/Makefile
index 97446779..4d4cd94 100644
--- a/drivers/dma-buf/heaps/Makefile
+++ b/drivers/dma-buf/heaps/Makefile
@@ -1,3 +1,5 @@
 # SPDX-License-Identifier: GPL-2.0
+obj-$(CONFIG_DMABUF_HEAPS_DEFERRED_FREE) += deferred-free-helper.o
+obj-$(CONFIG_DMABUF_HEAPS_PAGE_POOL)	+= page_pool.o
 obj-$(CONFIG_DMABUF_HEAPS_SYSTEM)	+= system_heap.o
 obj-$(CONFIG_DMABUF_HEAPS_CMA)		+= cma_heap.o
diff --git a/drivers/dma-buf/heaps/cma_heap.c b/drivers/dma-buf/heaps/cma_heap.c
index 28fb04e..3da34c9 100644
--- a/drivers/dma-buf/heaps/cma_heap.c
+++ b/drivers/dma-buf/heaps/cma_heap.c
@@ -99,9 +99,10 @@ static struct sg_table *cma_heap_map_dma_buf(struct dma_buf_attachment *attachme
 {
 	struct dma_heap_attachment *a = attachment->priv;
 	struct sg_table *table = &a->table;
+	int attrs = attachment->dma_map_attrs;
 	int ret;
 
-	ret = dma_map_sgtable(attachment->dev, table, direction, 0);
+	ret = dma_map_sgtable(attachment->dev, table, direction, attrs);
 	if (ret)
 		return ERR_PTR(-ENOMEM);
 	a->mapped = true;
@@ -113,9 +114,10 @@ static void cma_heap_unmap_dma_buf(struct dma_buf_attachment *attachment,
 				   enum dma_data_direction direction)
 {
 	struct dma_heap_attachment *a = attachment->priv;
+	int attrs = attachment->dma_map_attrs;
 
 	a->mapped = false;
-	dma_unmap_sgtable(attachment->dev, table, direction, 0);
+	dma_unmap_sgtable(attachment->dev, table, direction, attrs);
 }
 
 static int cma_heap_dma_buf_begin_cpu_access(struct dma_buf *dmabuf,
@@ -405,3 +407,4 @@ static int add_default_cma_heap(void)
 module_init(add_default_cma_heap);
 MODULE_DESCRIPTION("DMA-BUF CMA Heap");
 MODULE_LICENSE("GPL v2");
+MODULE_IMPORT_NS(DMA_BUF);
diff --git a/drivers/dma-buf/heaps/deferred-free-helper.c b/drivers/dma-buf/heaps/deferred-free-helper.c
new file mode 100644
index 0000000..bae2717
--- /dev/null
+++ b/drivers/dma-buf/heaps/deferred-free-helper.c
@@ -0,0 +1,138 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Deferred dmabuf freeing helper
+ *
+ * Copyright (C) 2020 Linaro, Ltd.
+ *
+ * Based on the ION page pool code
+ * Copyright (C) 2011 Google, Inc.
+ */
+
+#include <linux/freezer.h>
+#include <linux/list.h>
+#include <linux/slab.h>
+#include <linux/swap.h>
+#include <linux/sched/signal.h>
+
+#include "deferred-free-helper.h"
+
+static LIST_HEAD(free_list);
+static size_t list_nr_pages;
+wait_queue_head_t freelist_waitqueue;
+struct task_struct *freelist_task;
+static DEFINE_SPINLOCK(free_list_lock);
+
+void deferred_free(struct deferred_freelist_item *item,
+		   void (*free)(struct deferred_freelist_item*,
+				enum df_reason),
+		   size_t nr_pages)
+{
+	unsigned long flags;
+
+	INIT_LIST_HEAD(&item->list);
+	item->nr_pages = nr_pages;
+	item->free = free;
+
+	spin_lock_irqsave(&free_list_lock, flags);
+	list_add(&item->list, &free_list);
+	list_nr_pages += nr_pages;
+	spin_unlock_irqrestore(&free_list_lock, flags);
+	wake_up(&freelist_waitqueue);
+}
+EXPORT_SYMBOL_GPL(deferred_free);
+
+static size_t free_one_item(enum df_reason reason)
+{
+	unsigned long flags;
+	size_t nr_pages;
+	struct deferred_freelist_item *item;
+
+	spin_lock_irqsave(&free_list_lock, flags);
+	if (list_empty(&free_list)) {
+		spin_unlock_irqrestore(&free_list_lock, flags);
+		return 0;
+	}
+	item = list_first_entry(&free_list, struct deferred_freelist_item, list);
+	list_del(&item->list);
+	nr_pages = item->nr_pages;
+	list_nr_pages -= nr_pages;
+	spin_unlock_irqrestore(&free_list_lock, flags);
+
+	item->free(item, reason);
+	return nr_pages;
+}
+
+static unsigned long get_freelist_nr_pages(void)
+{
+	unsigned long nr_pages;
+	unsigned long flags;
+
+	spin_lock_irqsave(&free_list_lock, flags);
+	nr_pages = list_nr_pages;
+	spin_unlock_irqrestore(&free_list_lock, flags);
+	return nr_pages;
+}
+
+static unsigned long freelist_shrink_count(struct shrinker *shrinker,
+					   struct shrink_control *sc)
+{
+	return get_freelist_nr_pages();
+}
+
+static unsigned long freelist_shrink_scan(struct shrinker *shrinker,
+					  struct shrink_control *sc)
+{
+	unsigned long total_freed = 0;
+
+	if (sc->nr_to_scan == 0)
+		return 0;
+
+	while (total_freed < sc->nr_to_scan) {
+		size_t pages_freed = free_one_item(DF_UNDER_PRESSURE);
+
+		if (!pages_freed)
+			break;
+
+		total_freed += pages_freed;
+	}
+
+	return total_freed;
+}
+
+static struct shrinker freelist_shrinker = {
+	.count_objects = freelist_shrink_count,
+	.scan_objects = freelist_shrink_scan,
+	.seeks = DEFAULT_SEEKS,
+	.batch = 0,
+};
+
+static int deferred_free_thread(void *data)
+{
+	while (true) {
+		wait_event_freezable(freelist_waitqueue,
+				     get_freelist_nr_pages() > 0);
+
+		free_one_item(DF_NORMAL);
+	}
+
+	return 0;
+}
+
+static int deferred_freelist_init(void)
+{
+	list_nr_pages = 0;
+
+	init_waitqueue_head(&freelist_waitqueue);
+	freelist_task = kthread_run(deferred_free_thread, NULL,
+				    "%s", "dmabuf-deferred-free-worker");
+	if (IS_ERR(freelist_task)) {
+		pr_err("Creating thread for deferred free failed\n");
+		return -1;
+	}
+	sched_set_normal(freelist_task, 19);
+
+	return register_shrinker(&freelist_shrinker, "dmabuf-deferred-free-shrinker");
+}
+module_init(deferred_freelist_init);
+MODULE_LICENSE("GPL v2");
+
diff --git a/drivers/dma-buf/heaps/deferred-free-helper.h b/drivers/dma-buf/heaps/deferred-free-helper.h
new file mode 100644
index 0000000..1194032
--- /dev/null
+++ b/drivers/dma-buf/heaps/deferred-free-helper.h
@@ -0,0 +1,55 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+
+#ifndef DEFERRED_FREE_HELPER_H
+#define DEFERRED_FREE_HELPER_H
+
+/**
+ * df_reason - enum for reason why item was freed
+ *
+ * This provides a reason for why the free function was called
+ * on the item. This is useful when deferred_free is used in
+ * combination with a pagepool, so under pressure the page can
+ * be immediately freed.
+ *
+ * DF_NORMAL:         Normal deferred free
+ *
+ * DF_UNDER_PRESSURE: Free was called because the system
+ *                    is under memory pressure. Usually
+ *                    from a shrinker. Avoid allocating
+ *                    memory in the free call, as it may
+ *                    fail.
+ */
+enum df_reason {
+	DF_NORMAL,
+	DF_UNDER_PRESSURE,
+};
+
+/**
+ * deferred_freelist_item - item structure for deferred freelist
+ *
+ * This is to be added to the structure for whatever you want to
+ * defer freeing on.
+ *
+ * @nr_pages: number of pages used by item to be freed
+ * @free: function pointer to be called when freeing the item
+ * @list: list entry for the deferred list
+ */
+struct deferred_freelist_item {
+	size_t nr_pages;
+	void (*free)(struct deferred_freelist_item *i,
+		     enum df_reason reason);
+	struct list_head list;
+};
+
+/**
+ * deferred_free - call to add item to the deferred free list
+ *
+ * @item: Pointer to deferred_freelist_item field of a structure
+ * @free: Function pointer to the free call
+ * @nr_pages: number of pages to be freed
+ */
+void deferred_free(struct deferred_freelist_item *item,
+		   void (*free)(struct deferred_freelist_item *i,
+				enum df_reason reason),
+		   size_t nr_pages);
+#endif
diff --git a/drivers/dma-buf/heaps/page_pool.c b/drivers/dma-buf/heaps/page_pool.c
new file mode 100644
index 0000000..56e6a6f
--- /dev/null
+++ b/drivers/dma-buf/heaps/page_pool.c
@@ -0,0 +1,294 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * DMA BUF page pool system
+ *
+ * Copyright (C) 2020 Linaro Ltd.
+ *
+ * Based on the ION page pool code
+ * Copyright (C) 2011 Google, Inc.
+ */
+
+#include "page_pool.h"
+
+#include <linux/list.h>
+#include <linux/shrinker.h>
+#include <linux/spinlock.h>
+#include <linux/swap.h>
+#include <linux/sched/signal.h>
+
+/* page types we track in the pool */
+enum {
+	POOL_LOWPAGE,      /* Clean lowmem pages */
+	POOL_HIGHPAGE,     /* Clean highmem pages */
+
+	POOL_TYPE_SIZE,
+};
+
+/**
+ * struct dmabuf_page_pool - pagepool struct
+ * @count[]:		array of number of pages of that type in the pool
+ * @items[]:		array of list of pages of the specific type
+ * @lock:		lock protecting this struct and especially the count
+ *			item list
+ * @gfp_mask:		gfp_mask to use from alloc
+ * @order:		order of pages in the pool
+ * @list:		list node for list of pools
+ *
+ * Allows you to keep a pool of pre allocated pages to use
+ */
+struct dmabuf_page_pool {
+	int count[POOL_TYPE_SIZE];
+	struct list_head items[POOL_TYPE_SIZE];
+	spinlock_t lock;
+	gfp_t gfp_mask;
+	unsigned int order;
+	struct list_head list;
+};
+
+static LIST_HEAD(pool_list);
+static DEFINE_MUTEX(pool_list_lock);
+
+static inline
+struct page *dmabuf_page_pool_alloc_pages(struct dmabuf_page_pool *pool)
+{
+	if (fatal_signal_pending(current))
+		return NULL;
+	return alloc_pages(pool->gfp_mask, pool->order);
+}
+
+static inline void dmabuf_page_pool_free_pages(struct dmabuf_page_pool *pool,
+					       struct page *page)
+{
+	__free_pages(page, pool->order);
+}
+
+static void dmabuf_page_pool_add(struct dmabuf_page_pool *pool, struct page *page)
+{
+	int index;
+
+	if (PageHighMem(page))
+		index = POOL_HIGHPAGE;
+	else
+		index = POOL_LOWPAGE;
+
+	spin_lock(&pool->lock);
+	list_add_tail(&page->lru, &pool->items[index]);
+	pool->count[index]++;
+	spin_unlock(&pool->lock);
+	mod_node_page_state(page_pgdat(page), NR_KERNEL_MISC_RECLAIMABLE,
+			    1 << pool->order);
+}
+
+static struct page *dmabuf_page_pool_remove(struct dmabuf_page_pool *pool, int index)
+{
+	struct page *page;
+
+	spin_lock(&pool->lock);
+	page = list_first_entry_or_null(&pool->items[index], struct page, lru);
+	if (page) {
+		pool->count[index]--;
+		list_del(&page->lru);
+		spin_unlock(&pool->lock);
+		mod_node_page_state(page_pgdat(page), NR_KERNEL_MISC_RECLAIMABLE,
+				    -(1 << pool->order));
+		goto out;
+	}
+	spin_unlock(&pool->lock);
+out:
+	return page;
+}
+
+static struct page *dmabuf_page_pool_fetch(struct dmabuf_page_pool *pool)
+{
+	struct page *page = NULL;
+
+	page = dmabuf_page_pool_remove(pool, POOL_HIGHPAGE);
+	if (!page)
+		page = dmabuf_page_pool_remove(pool, POOL_LOWPAGE);
+
+	return page;
+}
+
+struct page *dmabuf_page_pool_alloc(struct dmabuf_page_pool *pool)
+{
+	struct page *page = NULL;
+
+	if (WARN_ON(!pool))
+		return NULL;
+
+	page = dmabuf_page_pool_fetch(pool);
+
+	if (!page)
+		page = dmabuf_page_pool_alloc_pages(pool);
+	return page;
+}
+EXPORT_SYMBOL_GPL(dmabuf_page_pool_alloc);
+
+void dmabuf_page_pool_free(struct dmabuf_page_pool *pool, struct page *page)
+{
+	if (WARN_ON(pool->order != compound_order(page)))
+		return;
+
+	dmabuf_page_pool_add(pool, page);
+}
+EXPORT_SYMBOL_GPL(dmabuf_page_pool_free);
+
+static int dmabuf_page_pool_total(struct dmabuf_page_pool *pool, bool high)
+{
+	int count = pool->count[POOL_LOWPAGE];
+
+	if (high)
+		count += pool->count[POOL_HIGHPAGE];
+
+	return count << pool->order;
+}
+
+struct dmabuf_page_pool *dmabuf_page_pool_create(gfp_t gfp_mask, unsigned int order)
+{
+	struct dmabuf_page_pool *pool = kmalloc(sizeof(*pool), GFP_KERNEL);
+	int i;
+
+	if (!pool)
+		return NULL;
+
+	for (i = 0; i < POOL_TYPE_SIZE; i++) {
+		pool->count[i] = 0;
+		INIT_LIST_HEAD(&pool->items[i]);
+	}
+	pool->gfp_mask = gfp_mask | __GFP_COMP;
+	pool->order = order;
+	spin_lock_init(&pool->lock);
+
+	mutex_lock(&pool_list_lock);
+	list_add(&pool->list, &pool_list);
+	mutex_unlock(&pool_list_lock);
+
+	return pool;
+}
+EXPORT_SYMBOL_GPL(dmabuf_page_pool_create);
+
+void dmabuf_page_pool_destroy(struct dmabuf_page_pool *pool)
+{
+	struct page *page;
+	int i;
+
+	/* Remove us from the pool list */
+	mutex_lock(&pool_list_lock);
+	list_del(&pool->list);
+	mutex_unlock(&pool_list_lock);
+
+	/* Free any remaining pages in the pool */
+	for (i = 0; i < POOL_TYPE_SIZE; i++) {
+		while ((page = dmabuf_page_pool_remove(pool, i)))
+			dmabuf_page_pool_free_pages(pool, page);
+	}
+
+	kfree(pool);
+}
+EXPORT_SYMBOL_GPL(dmabuf_page_pool_destroy);
+
+unsigned long dmabuf_page_pool_get_size(struct dmabuf_page_pool *pool)
+{
+       int i;
+       unsigned long num_pages = 0;
+
+       spin_lock(&pool->lock);
+       for (i = 0; i < POOL_TYPE_SIZE; ++i)
+               num_pages += pool->count[i];
+       spin_unlock(&pool->lock);
+       num_pages <<= pool->order; /* pool order is immutable */
+
+       return num_pages * PAGE_SIZE;
+}
+EXPORT_SYMBOL_GPL(dmabuf_page_pool_get_size);
+
+static int dmabuf_page_pool_do_shrink(struct dmabuf_page_pool *pool, gfp_t gfp_mask,
+				      int nr_to_scan)
+{
+	int freed = 0;
+	bool high;
+
+	if (current_is_kswapd())
+		high = true;
+	else
+		high = !!(gfp_mask & __GFP_HIGHMEM);
+
+	if (nr_to_scan == 0)
+		return dmabuf_page_pool_total(pool, high);
+
+	while (freed < nr_to_scan) {
+		struct page *page;
+
+		/* Try to free low pages first */
+		page = dmabuf_page_pool_remove(pool, POOL_LOWPAGE);
+		if (!page)
+			page = dmabuf_page_pool_remove(pool, POOL_HIGHPAGE);
+
+		if (!page)
+			break;
+
+		dmabuf_page_pool_free_pages(pool, page);
+		freed += (1 << pool->order);
+	}
+
+	return freed;
+}
+
+static int dmabuf_page_pool_shrink(gfp_t gfp_mask, int nr_to_scan)
+{
+	struct dmabuf_page_pool *pool;
+	int nr_total = 0;
+	int nr_freed;
+	int only_scan = 0;
+
+	if (!nr_to_scan)
+		only_scan = 1;
+
+	mutex_lock(&pool_list_lock);
+	list_for_each_entry(pool, &pool_list, list) {
+		if (only_scan) {
+			nr_total += dmabuf_page_pool_do_shrink(pool,
+							       gfp_mask,
+							       nr_to_scan);
+		} else {
+			nr_freed = dmabuf_page_pool_do_shrink(pool,
+							      gfp_mask,
+							      nr_to_scan);
+			nr_to_scan -= nr_freed;
+			nr_total += nr_freed;
+			if (nr_to_scan <= 0)
+				break;
+		}
+	}
+	mutex_unlock(&pool_list_lock);
+
+	return nr_total;
+}
+
+static unsigned long dmabuf_page_pool_shrink_count(struct shrinker *shrinker,
+						   struct shrink_control *sc)
+{
+	return dmabuf_page_pool_shrink(sc->gfp_mask, 0);
+}
+
+static unsigned long dmabuf_page_pool_shrink_scan(struct shrinker *shrinker,
+						  struct shrink_control *sc)
+{
+	if (sc->nr_to_scan == 0)
+		return 0;
+	return dmabuf_page_pool_shrink(sc->gfp_mask, sc->nr_to_scan);
+}
+
+struct shrinker pool_shrinker = {
+	.count_objects = dmabuf_page_pool_shrink_count,
+	.scan_objects = dmabuf_page_pool_shrink_scan,
+	.seeks = DEFAULT_SEEKS,
+	.batch = 0,
+};
+
+static int dmabuf_page_pool_init_shrinker(void)
+{
+	return register_shrinker(&pool_shrinker, "dmabuf-page-pool-shrinker");
+}
+module_init(dmabuf_page_pool_init_shrinker);
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/dma-buf/heaps/page_pool.h b/drivers/dma-buf/heaps/page_pool.h
new file mode 100644
index 0000000..5f6f938
--- /dev/null
+++ b/drivers/dma-buf/heaps/page_pool.h
@@ -0,0 +1,27 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * DMA BUF PagePool implementation
+ * Based on earlier ION code by Google
+ *
+ * Copyright (C) 2011 Google, Inc.
+ * Copyright (C) 2020 Linaro Ltd.
+ */
+
+#ifndef _DMABUF_PAGE_POOL_H
+#define _DMABUF_PAGE_POOL_H
+
+#include <linux/mm_types.h>
+#include <linux/types.h>
+
+struct dmabuf_page_pool;
+
+struct dmabuf_page_pool *dmabuf_page_pool_create(gfp_t gfp_mask,
+						 unsigned int order);
+void dmabuf_page_pool_destroy(struct dmabuf_page_pool *pool);
+struct page *dmabuf_page_pool_alloc(struct dmabuf_page_pool *pool);
+void dmabuf_page_pool_free(struct dmabuf_page_pool *pool, struct page *page);
+
+/* get pool size in bytes */
+unsigned long dmabuf_page_pool_get_size(struct dmabuf_page_pool *pool);
+
+#endif /* _DMABUF_PAGE_POOL_H */
diff --git a/drivers/dma-buf/heaps/system_heap.c b/drivers/dma-buf/heaps/system_heap.c
index fcf836b..e7796e4 100644
--- a/drivers/dma-buf/heaps/system_heap.c
+++ b/drivers/dma-buf/heaps/system_heap.c
@@ -21,7 +21,10 @@
 #include <linux/slab.h>
 #include <linux/vmalloc.h>
 
+#include "page_pool.h"
+
 static struct dma_heap *sys_heap;
+static struct dma_heap *sys_uncached_heap;
 
 struct system_heap_buffer {
 	struct dma_heap *heap;
@@ -31,6 +34,8 @@ struct system_heap_buffer {
 	struct sg_table sg_table;
 	int vmap_cnt;
 	void *vaddr;
+
+	bool uncached;
 };
 
 struct dma_heap_attachment {
@@ -38,6 +43,8 @@ struct dma_heap_attachment {
 	struct sg_table *table;
 	struct list_head list;
 	bool mapped;
+
+	bool uncached;
 };
 
 #define LOW_ORDER_GFP (GFP_HIGHUSER | __GFP_ZERO | __GFP_COMP)
@@ -54,6 +61,7 @@ static gfp_t order_flags[] = {HIGH_ORDER_GFP, MID_ORDER_GFP, LOW_ORDER_GFP};
  */
 static const unsigned int orders[] = {8, 4, 0};
 #define NUM_ORDERS ARRAY_SIZE(orders)
+struct dmabuf_page_pool *pools[NUM_ORDERS];
 
 static struct sg_table *dup_sg_table(struct sg_table *table)
 {
@@ -101,7 +109,7 @@ static int system_heap_attach(struct dma_buf *dmabuf,
 	a->dev = attachment->dev;
 	INIT_LIST_HEAD(&a->list);
 	a->mapped = false;
-
+	a->uncached = buffer->uncached;
 	attachment->priv = a;
 
 	mutex_lock(&buffer->lock);
@@ -131,9 +139,13 @@ static struct sg_table *system_heap_map_dma_buf(struct dma_buf_attachment *attac
 {
 	struct dma_heap_attachment *a = attachment->priv;
 	struct sg_table *table = a->table;
+	int attr = attachment->dma_map_attrs;
 	int ret;
 
-	ret = dma_map_sgtable(attachment->dev, table, direction, 0);
+	if (a->uncached)
+		attr |= DMA_ATTR_SKIP_CPU_SYNC;
+
+	ret = dma_map_sgtable(attachment->dev, table, direction, attr);
 	if (ret)
 		return ERR_PTR(ret);
 
@@ -146,9 +158,12 @@ static void system_heap_unmap_dma_buf(struct dma_buf_attachment *attachment,
 				      enum dma_data_direction direction)
 {
 	struct dma_heap_attachment *a = attachment->priv;
+	int attr = attachment->dma_map_attrs;
 
+	if (a->uncached)
+		attr |= DMA_ATTR_SKIP_CPU_SYNC;
 	a->mapped = false;
-	dma_unmap_sgtable(attachment->dev, table, direction, 0);
+	dma_unmap_sgtable(attachment->dev, table, direction, attr);
 }
 
 static int system_heap_dma_buf_begin_cpu_access(struct dma_buf *dmabuf,
@@ -162,10 +177,12 @@ static int system_heap_dma_buf_begin_cpu_access(struct dma_buf *dmabuf,
 	if (buffer->vmap_cnt)
 		invalidate_kernel_vmap_range(buffer->vaddr, buffer->len);
 
-	list_for_each_entry(a, &buffer->attachments, list) {
-		if (!a->mapped)
-			continue;
-		dma_sync_sgtable_for_cpu(a->dev, a->table, direction);
+	if (!buffer->uncached) {
+		list_for_each_entry(a, &buffer->attachments, list) {
+			if (!a->mapped)
+				continue;
+			dma_sync_sgtable_for_cpu(a->dev, a->table, direction);
+		}
 	}
 	mutex_unlock(&buffer->lock);
 
@@ -183,10 +200,12 @@ static int system_heap_dma_buf_end_cpu_access(struct dma_buf *dmabuf,
 	if (buffer->vmap_cnt)
 		flush_kernel_vmap_range(buffer->vaddr, buffer->len);
 
-	list_for_each_entry(a, &buffer->attachments, list) {
-		if (!a->mapped)
-			continue;
-		dma_sync_sgtable_for_device(a->dev, a->table, direction);
+	if (!buffer->uncached) {
+		list_for_each_entry(a, &buffer->attachments, list) {
+			if (!a->mapped)
+				continue;
+			dma_sync_sgtable_for_device(a->dev, a->table, direction);
+		}
 	}
 	mutex_unlock(&buffer->lock);
 
@@ -201,6 +220,9 @@ static int system_heap_mmap(struct dma_buf *dmabuf, struct vm_area_struct *vma)
 	struct sg_page_iter piter;
 	int ret;
 
+	if (buffer->uncached)
+		vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot);
+
 	for_each_sgtable_page(table, &piter, vma->vm_pgoff) {
 		struct page *page = sg_page_iter_page(&piter);
 
@@ -222,17 +244,21 @@ static void *system_heap_do_vmap(struct system_heap_buffer *buffer)
 	struct page **pages = vmalloc(sizeof(struct page *) * npages);
 	struct page **tmp = pages;
 	struct sg_page_iter piter;
+	pgprot_t pgprot = PAGE_KERNEL;
 	void *vaddr;
 
 	if (!pages)
 		return ERR_PTR(-ENOMEM);
 
+	if (buffer->uncached)
+		pgprot = pgprot_writecombine(PAGE_KERNEL);
+
 	for_each_sgtable_page(table, &piter, 0) {
 		WARN_ON(tmp - pages >= npages);
 		*tmp++ = sg_page_iter_page(&piter);
 	}
 
-	vaddr = vmap(pages, npages, VM_MAP, PAGE_KERNEL);
+	vaddr = vmap(pages, npages, VM_MAP, pgprot);
 	vfree(pages);
 
 	if (!vaddr)
@@ -282,18 +308,43 @@ static void system_heap_vunmap(struct dma_buf *dmabuf, struct iosys_map *map)
 	iosys_map_clear(map);
 }
 
+static int system_heap_zero_buffer(struct system_heap_buffer *buffer)
+{
+	struct sg_table *sgt = &buffer->sg_table;
+	struct sg_page_iter piter;
+	struct page *p;
+	void *vaddr;
+	int ret = 0;
+
+	for_each_sgtable_page(sgt, &piter, 0) {
+		p = sg_page_iter_page(&piter);
+		vaddr = kmap_local_page(p);
+		memset(vaddr, 0, PAGE_SIZE);
+		kunmap_local(vaddr);
+	}
+
+	return ret;
+}
+
 static void system_heap_dma_buf_release(struct dma_buf *dmabuf)
 {
 	struct system_heap_buffer *buffer = dmabuf->priv;
 	struct sg_table *table;
 	struct scatterlist *sg;
-	int i;
+	int i, j;
+
+	/* Zero the buffer pages before adding back to the pool */
+	system_heap_zero_buffer(buffer);
 
 	table = &buffer->sg_table;
 	for_each_sgtable_sg(table, sg, i) {
 		struct page *page = sg_page(sg);
 
-		__free_pages(page, compound_order(page));
+		for (j = 0; j < NUM_ORDERS; j++) {
+			if (compound_order(page) == orders[j])
+				break;
+		}
+		dmabuf_page_pool_free(pools[j], page);
 	}
 	sg_free_table(table);
 	kfree(buffer);
@@ -323,8 +374,7 @@ static struct page *alloc_largest_available(unsigned long size,
 			continue;
 		if (max_order < orders[i])
 			continue;
-
-		page = alloc_pages(order_flags[i], orders[i]);
+		page = dmabuf_page_pool_alloc(pools[i]);
 		if (!page)
 			continue;
 		return page;
@@ -332,10 +382,11 @@ static struct page *alloc_largest_available(unsigned long size,
 	return NULL;
 }
 
-static struct dma_buf *system_heap_allocate(struct dma_heap *heap,
-					    unsigned long len,
-					    unsigned long fd_flags,
-					    unsigned long heap_flags)
+static struct dma_buf *system_heap_do_allocate(struct dma_heap *heap,
+					       unsigned long len,
+					       unsigned long fd_flags,
+					       unsigned long heap_flags,
+					       bool uncached)
 {
 	struct system_heap_buffer *buffer;
 	DEFINE_DMA_BUF_EXPORT_INFO(exp_info);
@@ -356,6 +407,7 @@ static struct dma_buf *system_heap_allocate(struct dma_heap *heap,
 	mutex_init(&buffer->lock);
 	buffer->heap = heap;
 	buffer->len = len;
+	buffer->uncached = uncached;
 
 	INIT_LIST_HEAD(&pages);
 	i = 0;
@@ -401,6 +453,18 @@ static struct dma_buf *system_heap_allocate(struct dma_heap *heap,
 		ret = PTR_ERR(dmabuf);
 		goto free_pages;
 	}
+
+	/*
+	 * For uncached buffers, we need to initially flush cpu cache, since
+	 * the __GFP_ZERO on the allocation means the zeroing was done by the
+	 * cpu and thus it is likely cached. Map (and implicitly flush) and
+	 * unmap it now so we don't get corruption later on.
+	 */
+	if (buffer->uncached) {
+		dma_map_sgtable(dma_heap_get_dev(heap), table, DMA_BIDIRECTIONAL, 0);
+		dma_unmap_sgtable(dma_heap_get_dev(heap), table, DMA_BIDIRECTIONAL, 0);
+	}
+
 	return dmabuf;
 
 free_pages:
@@ -418,13 +482,69 @@ static struct dma_buf *system_heap_allocate(struct dma_heap *heap,
 	return ERR_PTR(ret);
 }
 
+static struct dma_buf *system_heap_allocate(struct dma_heap *heap,
+					    unsigned long len,
+					    unsigned long fd_flags,
+					    unsigned long heap_flags)
+{
+	return system_heap_do_allocate(heap, len, fd_flags, heap_flags, false);
+}
+
+static long system_get_pool_size(struct dma_heap *heap)
+{
+	unsigned long num_bytes = 0;
+	struct dmabuf_page_pool **pool = pools;
+
+	for (int i = 0; i < NUM_ORDERS; i++, pool++)
+		num_bytes += dmabuf_page_pool_get_size(*pool);
+
+	return num_bytes;
+}
+
 static const struct dma_heap_ops system_heap_ops = {
 	.allocate = system_heap_allocate,
+	.get_pool_size = system_get_pool_size,
+};
+
+static struct dma_buf *system_uncached_heap_allocate(struct dma_heap *heap,
+						     unsigned long len,
+						     unsigned long fd_flags,
+						     unsigned long heap_flags)
+{
+	return system_heap_do_allocate(heap, len, fd_flags, heap_flags, true);
+}
+
+/* Dummy function to be used until we can call coerce_mask_and_coherent */
+static struct dma_buf *system_uncached_heap_not_initialized(struct dma_heap *heap,
+							    unsigned long len,
+							    unsigned long fd_flags,
+							    unsigned long heap_flags)
+{
+	return ERR_PTR(-EBUSY);
+}
+
+static struct dma_heap_ops system_uncached_heap_ops = {
+	/* After system_heap_create is complete, we will swap this */
+	.allocate = system_uncached_heap_not_initialized,
 };
 
 static int system_heap_create(void)
 {
 	struct dma_heap_export_info exp_info;
+	int i;
+
+	for (i = 0; i < NUM_ORDERS; i++) {
+		pools[i] = dmabuf_page_pool_create(order_flags[i], orders[i]);
+
+		if (IS_ERR(pools[i])) {
+			int j;
+
+			pr_err("%s: page pool creation failed!\n", __func__);
+			for (j = 0; j < i; j++)
+				dmabuf_page_pool_destroy(pools[j]);
+			return PTR_ERR(pools[i]);
+		}
+	}
 
 	exp_info.name = "system";
 	exp_info.ops = &system_heap_ops;
@@ -434,7 +554,20 @@ static int system_heap_create(void)
 	if (IS_ERR(sys_heap))
 		return PTR_ERR(sys_heap);
 
+	exp_info.name = "system-uncached";
+	exp_info.ops = &system_uncached_heap_ops;
+	exp_info.priv = NULL;
+
+	sys_uncached_heap = dma_heap_add(&exp_info);
+	if (IS_ERR(sys_uncached_heap))
+		return PTR_ERR(sys_uncached_heap);
+
+	dma_coerce_mask_and_coherent(dma_heap_get_dev(sys_uncached_heap), DMA_BIT_MASK(64));
+	mb(); /* make sure we only set allocate after dma_mask is set */
+	system_uncached_heap_ops.allocate = system_uncached_heap_allocate;
+
 	return 0;
 }
 module_init(system_heap_create);
 MODULE_LICENSE("GPL v2");
+MODULE_IMPORT_NS(DMA_BUF);
diff --git a/drivers/dma/idxd/cdev.c b/drivers/dma/idxd/cdev.c
index a9b96b1..674bfef 100644
--- a/drivers/dma/idxd/cdev.c
+++ b/drivers/dma/idxd/cdev.c
@@ -6,7 +6,6 @@
 #include <linux/pci.h>
 #include <linux/device.h>
 #include <linux/sched/task.h>
-#include <linux/intel-svm.h>
 #include <linux/io-64-nonatomic-lo-hi.h>
 #include <linux/cdev.h>
 #include <linux/fs.h>
@@ -100,7 +99,7 @@ static int idxd_cdev_open(struct inode *inode, struct file *filp)
 	filp->private_data = ctx;
 
 	if (device_user_pasid_enabled(idxd)) {
-		sva = iommu_sva_bind_device(dev, current->mm, NULL);
+		sva = iommu_sva_bind_device(dev, current->mm);
 		if (IS_ERR(sva)) {
 			rc = PTR_ERR(sva);
 			dev_err(dev, "pasid allocation failed: %d\n", rc);
@@ -202,7 +201,7 @@ static int idxd_cdev_mmap(struct file *filp, struct vm_area_struct *vma)
 	if (rc < 0)
 		return rc;
 
-	vma->vm_flags |= VM_DONTCOPY;
+	vm_flags_set(vma, VM_DONTCOPY);
 	pfn = (base + idxd_get_wq_portal_full_offset(wq->id,
 				IDXD_PORTAL_LIMITED)) >> PAGE_SHIFT;
 	vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
diff --git a/drivers/dma/idxd/init.c b/drivers/dma/idxd/init.c
index e0f4954..e63b0c6 100644
--- a/drivers/dma/idxd/init.c
+++ b/drivers/dma/idxd/init.c
@@ -14,7 +14,6 @@
 #include <linux/io-64-nonatomic-lo-hi.h>
 #include <linux/device.h>
 #include <linux/idr.h>
-#include <linux/intel-svm.h>
 #include <linux/iommu.h>
 #include <uapi/linux/idxd.h>
 #include <linux/dmaengine.h>
@@ -502,29 +501,7 @@ static struct idxd_device *idxd_alloc(struct pci_dev *pdev, struct idxd_driver_d
 
 static int idxd_enable_system_pasid(struct idxd_device *idxd)
 {
-	int flags;
-	unsigned int pasid;
-	struct iommu_sva *sva;
-
-	flags = SVM_FLAG_SUPERVISOR_MODE;
-
-	sva = iommu_sva_bind_device(&idxd->pdev->dev, NULL, &flags);
-	if (IS_ERR(sva)) {
-		dev_warn(&idxd->pdev->dev,
-			 "iommu sva bind failed: %ld\n", PTR_ERR(sva));
-		return PTR_ERR(sva);
-	}
-
-	pasid = iommu_sva_get_pasid(sva);
-	if (pasid == IOMMU_PASID_INVALID) {
-		iommu_sva_unbind_device(sva);
-		return -ENODEV;
-	}
-
-	idxd->sva = sva;
-	idxd->pasid = pasid;
-	dev_dbg(&idxd->pdev->dev, "system pasid: %u\n", pasid);
-	return 0;
+	return -EOPNOTSUPP;
 }
 
 static void idxd_disable_system_pasid(struct idxd_device *idxd)
diff --git a/drivers/firmware/arm_ffa/driver.c b/drivers/firmware/arm_ffa/driver.c
index c37e8235..2109cd1 100644
--- a/drivers/firmware/arm_ffa/driver.c
+++ b/drivers/firmware/arm_ffa/driver.c
@@ -36,81 +36,6 @@
 #include "common.h"
 
 #define FFA_DRIVER_VERSION	FFA_VERSION_1_0
-
-#define FFA_SMC(calling_convention, func_num)				\
-	ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL, (calling_convention),	\
-			   ARM_SMCCC_OWNER_STANDARD, (func_num))
-
-#define FFA_SMC_32(func_num)	FFA_SMC(ARM_SMCCC_SMC_32, (func_num))
-#define FFA_SMC_64(func_num)	FFA_SMC(ARM_SMCCC_SMC_64, (func_num))
-
-#define FFA_ERROR			FFA_SMC_32(0x60)
-#define FFA_SUCCESS			FFA_SMC_32(0x61)
-#define FFA_INTERRUPT			FFA_SMC_32(0x62)
-#define FFA_VERSION			FFA_SMC_32(0x63)
-#define FFA_FEATURES			FFA_SMC_32(0x64)
-#define FFA_RX_RELEASE			FFA_SMC_32(0x65)
-#define FFA_RXTX_MAP			FFA_SMC_32(0x66)
-#define FFA_FN64_RXTX_MAP		FFA_SMC_64(0x66)
-#define FFA_RXTX_UNMAP			FFA_SMC_32(0x67)
-#define FFA_PARTITION_INFO_GET		FFA_SMC_32(0x68)
-#define FFA_ID_GET			FFA_SMC_32(0x69)
-#define FFA_MSG_POLL			FFA_SMC_32(0x6A)
-#define FFA_MSG_WAIT			FFA_SMC_32(0x6B)
-#define FFA_YIELD			FFA_SMC_32(0x6C)
-#define FFA_RUN				FFA_SMC_32(0x6D)
-#define FFA_MSG_SEND			FFA_SMC_32(0x6E)
-#define FFA_MSG_SEND_DIRECT_REQ		FFA_SMC_32(0x6F)
-#define FFA_FN64_MSG_SEND_DIRECT_REQ	FFA_SMC_64(0x6F)
-#define FFA_MSG_SEND_DIRECT_RESP	FFA_SMC_32(0x70)
-#define FFA_FN64_MSG_SEND_DIRECT_RESP	FFA_SMC_64(0x70)
-#define FFA_MEM_DONATE			FFA_SMC_32(0x71)
-#define FFA_FN64_MEM_DONATE		FFA_SMC_64(0x71)
-#define FFA_MEM_LEND			FFA_SMC_32(0x72)
-#define FFA_FN64_MEM_LEND		FFA_SMC_64(0x72)
-#define FFA_MEM_SHARE			FFA_SMC_32(0x73)
-#define FFA_FN64_MEM_SHARE		FFA_SMC_64(0x73)
-#define FFA_MEM_RETRIEVE_REQ		FFA_SMC_32(0x74)
-#define FFA_FN64_MEM_RETRIEVE_REQ	FFA_SMC_64(0x74)
-#define FFA_MEM_RETRIEVE_RESP		FFA_SMC_32(0x75)
-#define FFA_MEM_RELINQUISH		FFA_SMC_32(0x76)
-#define FFA_MEM_RECLAIM			FFA_SMC_32(0x77)
-#define FFA_MEM_OP_PAUSE		FFA_SMC_32(0x78)
-#define FFA_MEM_OP_RESUME		FFA_SMC_32(0x79)
-#define FFA_MEM_FRAG_RX			FFA_SMC_32(0x7A)
-#define FFA_MEM_FRAG_TX			FFA_SMC_32(0x7B)
-#define FFA_NORMAL_WORLD_RESUME		FFA_SMC_32(0x7C)
-
-/*
- * For some calls it is necessary to use SMC64 to pass or return 64-bit values.
- * For such calls FFA_FN_NATIVE(name) will choose the appropriate
- * (native-width) function ID.
- */
-#ifdef CONFIG_64BIT
-#define FFA_FN_NATIVE(name)	FFA_FN64_##name
-#else
-#define FFA_FN_NATIVE(name)	FFA_##name
-#endif
-
-/* FFA error codes. */
-#define FFA_RET_SUCCESS            (0)
-#define FFA_RET_NOT_SUPPORTED      (-1)
-#define FFA_RET_INVALID_PARAMETERS (-2)
-#define FFA_RET_NO_MEMORY          (-3)
-#define FFA_RET_BUSY               (-4)
-#define FFA_RET_INTERRUPTED        (-5)
-#define FFA_RET_DENIED             (-6)
-#define FFA_RET_RETRY              (-7)
-#define FFA_RET_ABORTED            (-8)
-
-#define MAJOR_VERSION_MASK	GENMASK(30, 16)
-#define MINOR_VERSION_MASK	GENMASK(15, 0)
-#define MAJOR_VERSION(x)	((u16)(FIELD_GET(MAJOR_VERSION_MASK, (x))))
-#define MINOR_VERSION(x)	((u16)(FIELD_GET(MINOR_VERSION_MASK, (x))))
-#define PACK_VERSION_INFO(major, minor)			\
-	(FIELD_PREP(MAJOR_VERSION_MASK, (major)) |	\
-	 FIELD_PREP(MINOR_VERSION_MASK, (minor)))
-#define FFA_VERSION_1_0		PACK_VERSION_INFO(1, 0)
 #define FFA_MIN_VERSION		FFA_VERSION_1_0
 
 #define SENDER_ID_MASK		GENMASK(31, 16)
@@ -121,12 +46,6 @@
 	(FIELD_PREP(SENDER_ID_MASK, (s)) | FIELD_PREP(RECEIVER_ID_MASK, (r)))
 
 /*
- * FF-A specification mentions explicitly about '4K pages'. This should
- * not be confused with the kernel PAGE_SIZE, which is the translation
- * granule kernel is configured and may be one among 4K, 16K and 64K.
- */
-#define FFA_PAGE_SIZE		SZ_4K
-/*
  * Keeping RX TX buffer size as 4K for now
  * 64K may be preferred to keep it min a page in 64K PAGE_SIZE config
  */
@@ -178,9 +97,9 @@ static struct ffa_drv_info *drv_info;
  */
 static u32 ffa_compatible_version_find(u32 version)
 {
-	u16 major = MAJOR_VERSION(version), minor = MINOR_VERSION(version);
-	u16 drv_major = MAJOR_VERSION(FFA_DRIVER_VERSION);
-	u16 drv_minor = MINOR_VERSION(FFA_DRIVER_VERSION);
+	u16 major = FFA_MAJOR_VERSION(version), minor = FFA_MINOR_VERSION(version);
+	u16 drv_major = FFA_MAJOR_VERSION(FFA_DRIVER_VERSION);
+	u16 drv_minor = FFA_MINOR_VERSION(FFA_DRIVER_VERSION);
 
 	if ((major < drv_major) || (major == drv_major && minor <= drv_minor))
 		return version;
@@ -204,16 +123,16 @@ static int ffa_version_check(u32 *version)
 
 	if (ver.a0 < FFA_MIN_VERSION) {
 		pr_err("Incompatible v%d.%d! Earliest supported v%d.%d\n",
-		       MAJOR_VERSION(ver.a0), MINOR_VERSION(ver.a0),
-		       MAJOR_VERSION(FFA_MIN_VERSION),
-		       MINOR_VERSION(FFA_MIN_VERSION));
+		       FFA_MAJOR_VERSION(ver.a0), FFA_MINOR_VERSION(ver.a0),
+		       FFA_MAJOR_VERSION(FFA_MIN_VERSION),
+		       FFA_MINOR_VERSION(FFA_MIN_VERSION));
 		return -EINVAL;
 	}
 
-	pr_info("Driver version %d.%d\n", MAJOR_VERSION(FFA_DRIVER_VERSION),
-		MINOR_VERSION(FFA_DRIVER_VERSION));
-	pr_info("Firmware version %d.%d found\n", MAJOR_VERSION(ver.a0),
-		MINOR_VERSION(ver.a0));
+	pr_info("Driver version %d.%d\n", FFA_MAJOR_VERSION(FFA_DRIVER_VERSION),
+		FFA_MINOR_VERSION(FFA_DRIVER_VERSION));
+	pr_info("Firmware version %d.%d found\n", FFA_MAJOR_VERSION(ver.a0),
+		FFA_MINOR_VERSION(ver.a0));
 	*version = ffa_compatible_version_find(ver.a0);
 
 	return 0;
diff --git a/drivers/firmware/efi/libstub/Makefile b/drivers/firmware/efi/libstub/Makefile
index ef5045a..453b675 100644
--- a/drivers/firmware/efi/libstub/Makefile
+++ b/drivers/firmware/efi/libstub/Makefile
@@ -20,6 +20,7 @@
 # disable the stackleak plugin
 cflags-$(CONFIG_ARM64)		:= $(subst $(CC_FLAGS_FTRACE),,$(KBUILD_CFLAGS)) \
 				   -fpie $(DISABLE_STACKLEAK_PLUGIN) \
+				   -fno-unwind-tables -fno-asynchronous-unwind-tables \
 				   $(call cc-option,-mbranch-protection=none)
 cflags-$(CONFIG_ARM)		:= $(subst $(CC_FLAGS_FTRACE),,$(KBUILD_CFLAGS)) \
 				   -fno-builtin -fpic \
diff --git a/drivers/firmware/psci/psci.c b/drivers/firmware/psci/psci.c
index f78249f..c8c0740 100644
--- a/drivers/firmware/psci/psci.c
+++ b/drivers/firmware/psci/psci.c
@@ -28,6 +28,7 @@
 #include <asm/system_misc.h>
 #include <asm/smp_plat.h>
 #include <asm/suspend.h>
+#include <trace/hooks/psci.h>
 
 /*
  * While a 64-bit OS can make calls with SMC32 calling conventions, for some
@@ -53,6 +54,12 @@ static enum arm_smccc_conduit psci_conduit = SMCCC_CONDUIT_NONE;
 
 bool psci_tos_resident_on(int cpu)
 {
+	bool resident = false;
+
+	trace_android_rvh_psci_tos_resident_on(cpu, &resident);
+	if (resident)
+		return resident;
+
 	return cpu == resident_cpu;
 }
 
@@ -175,6 +182,11 @@ static __always_inline int
 __psci_cpu_suspend(u32 fn, u32 state, unsigned long entry_point)
 {
 	int err;
+	bool deny = false;
+
+	trace_android_rvh_psci_cpu_suspend(state, &deny);
+	if (deny)
+		return -EPERM;
 
 	err = invoke_psci_fn(fn, state, entry_point, 0);
 	return psci_to_linux_errno(err);
diff --git a/drivers/firmware/qcom_scm.c b/drivers/firmware/qcom_scm.c
index 51eb853..12f2f45 100644
--- a/drivers/firmware/qcom_scm.c
+++ b/drivers/firmware/qcom_scm.c
@@ -898,7 +898,7 @@ static int __qcom_scm_assign_mem(struct device *dev, phys_addr_t mem_region,
  * Return negative errno on failure or 0 on success with @srcvm updated.
  */
 int qcom_scm_assign_mem(phys_addr_t mem_addr, size_t mem_sz,
-			unsigned int *srcvm,
+			u64 *srcvm,
 			const struct qcom_scm_vmperm *newvm,
 			unsigned int dest_cnt)
 {
@@ -915,9 +915,9 @@ int qcom_scm_assign_mem(phys_addr_t mem_addr, size_t mem_sz,
 	__le32 *src;
 	void *ptr;
 	int ret, i, b;
-	unsigned long srcvm_bits = *srcvm;
+	u64 srcvm_bits = *srcvm;
 
-	src_sz = hweight_long(srcvm_bits) * sizeof(*src);
+	src_sz = hweight64(srcvm_bits) * sizeof(*src);
 	mem_to_map_sz = sizeof(*mem_to_map);
 	dest_sz = dest_cnt * sizeof(*destvm);
 	ptr_sz = ALIGN(src_sz, SZ_64) + ALIGN(mem_to_map_sz, SZ_64) +
@@ -930,8 +930,10 @@ int qcom_scm_assign_mem(phys_addr_t mem_addr, size_t mem_sz,
 	/* Fill source vmid detail */
 	src = ptr;
 	i = 0;
-	for_each_set_bit(b, &srcvm_bits, BITS_PER_LONG)
-		src[i++] = cpu_to_le32(b);
+	for (b = 0; b < BITS_PER_TYPE(u64); b++) {
+		if (srcvm_bits & BIT(b))
+			src[i++] = cpu_to_le32(b);
+	}
 
 	/* Fill details of mem buff to map */
 	mem_to_map = ptr + ALIGN(src_sz, SZ_64);
diff --git a/drivers/firmware/smccc/kvm_guest.c b/drivers/firmware/smccc/kvm_guest.c
index 89a68e7..e2c9528 100644
--- a/drivers/firmware/smccc/kvm_guest.c
+++ b/drivers/firmware/smccc/kvm_guest.c
@@ -10,6 +10,8 @@
 
 #include <asm/hypervisor.h>
 
+void __weak kvm_arm_init_hyp_services(void) {}
+
 static DECLARE_BITMAP(__kvm_arm_hyp_services, ARM_SMCCC_KVM_NUM_FUNCS) __ro_after_init = { };
 
 void __init kvm_init_hyp_services(void)
@@ -39,6 +41,8 @@ void __init kvm_init_hyp_services(void)
 
 	pr_info("hypervisor services detected (0x%08lx 0x%08lx 0x%08lx 0x%08lx)\n",
 		 res.a3, res.a2, res.a1, res.a0);
+
+	kvm_arm_init_hyp_services();
 }
 
 bool kvm_arm_hyp_service_available(u32 func_id)
diff --git a/drivers/firmware/smccc/smccc.c b/drivers/firmware/smccc/smccc.c
index db818f9..60ccf3e 100644
--- a/drivers/firmware/smccc/smccc.c
+++ b/drivers/firmware/smccc/smccc.c
@@ -17,13 +17,9 @@ static enum arm_smccc_conduit smccc_conduit = SMCCC_CONDUIT_NONE;
 
 bool __ro_after_init smccc_trng_available = false;
 u64 __ro_after_init smccc_has_sve_hint = false;
-s32 __ro_after_init smccc_soc_id_version = SMCCC_RET_NOT_SUPPORTED;
-s32 __ro_after_init smccc_soc_id_revision = SMCCC_RET_NOT_SUPPORTED;
 
 void __init arm_smccc_version_init(u32 version, enum arm_smccc_conduit conduit)
 {
-	struct arm_smccc_res res;
-
 	smccc_version = version;
 	smccc_conduit = conduit;
 
@@ -31,18 +27,6 @@ void __init arm_smccc_version_init(u32 version, enum arm_smccc_conduit conduit)
 	if (IS_ENABLED(CONFIG_ARM64_SVE) &&
 	    smccc_version >= ARM_SMCCC_VERSION_1_3)
 		smccc_has_sve_hint = true;
-
-	if ((smccc_version >= ARM_SMCCC_VERSION_1_2) &&
-	    (smccc_conduit != SMCCC_CONDUIT_NONE)) {
-		arm_smccc_1_1_invoke(ARM_SMCCC_ARCH_FEATURES_FUNC_ID,
-				     ARM_SMCCC_ARCH_SOC_ID, &res);
-		if ((s32)res.a0 >= 0) {
-			arm_smccc_1_1_invoke(ARM_SMCCC_ARCH_SOC_ID, 0, &res);
-			smccc_soc_id_version = (s32)res.a0;
-			arm_smccc_1_1_invoke(ARM_SMCCC_ARCH_SOC_ID, 1, &res);
-			smccc_soc_id_revision = (s32)res.a0;
-		}
-	}
 }
 
 enum arm_smccc_conduit arm_smccc_1_1_get_conduit(void)
@@ -60,16 +44,6 @@ u32 arm_smccc_get_version(void)
 }
 EXPORT_SYMBOL_GPL(arm_smccc_get_version);
 
-s32 arm_smccc_get_soc_id_version(void)
-{
-	return smccc_soc_id_version;
-}
-
-s32 arm_smccc_get_soc_id_revision(void)
-{
-	return smccc_soc_id_revision;
-}
-
 static int __init smccc_devices_init(void)
 {
 	struct platform_device *pdev;
diff --git a/drivers/firmware/smccc/soc_id.c b/drivers/firmware/smccc/soc_id.c
index 890eb45..dd7c3d5 100644
--- a/drivers/firmware/smccc/soc_id.c
+++ b/drivers/firmware/smccc/soc_id.c
@@ -42,23 +42,41 @@ static int __init smccc_soc_init(void)
 	if (arm_smccc_get_version() < ARM_SMCCC_VERSION_1_2)
 		return 0;
 
-	soc_id_version = arm_smccc_get_soc_id_version();
-	if (soc_id_version == SMCCC_RET_NOT_SUPPORTED) {
+	if (arm_smccc_1_1_get_conduit() == SMCCC_CONDUIT_NONE) {
+		pr_err("%s: invalid SMCCC conduit\n", __func__);
+		return -EOPNOTSUPP;
+	}
+
+	arm_smccc_1_1_invoke(ARM_SMCCC_ARCH_FEATURES_FUNC_ID,
+			     ARM_SMCCC_ARCH_SOC_ID, &res);
+
+	if ((int)res.a0 == SMCCC_RET_NOT_SUPPORTED) {
 		pr_info("ARCH_SOC_ID not implemented, skipping ....\n");
 		return 0;
 	}
 
-	if (soc_id_version < 0) {
+	if ((int)res.a0 < 0) {
+		pr_info("ARCH_FEATURES(ARCH_SOC_ID) returned error: %lx\n",
+			res.a0);
+		return -EINVAL;
+	}
+
+	arm_smccc_1_1_invoke(ARM_SMCCC_ARCH_SOC_ID, 0, &res);
+	if ((int)res.a0 < 0) {
 		pr_err("ARCH_SOC_ID(0) returned error: %lx\n", res.a0);
 		return -EINVAL;
 	}
 
-	soc_id_rev = arm_smccc_get_soc_id_revision();
-	if (soc_id_rev < 0) {
+	soc_id_version = res.a0;
+
+	arm_smccc_1_1_invoke(ARM_SMCCC_ARCH_SOC_ID, 1, &res);
+	if ((int)res.a0 < 0) {
 		pr_err("ARCH_SOC_ID(1) returned error: %lx\n", res.a0);
 		return -EINVAL;
 	}
 
+	soc_id_rev = res.a0;
+
 	soc_dev_attr = kzalloc(sizeof(*soc_dev_attr), GFP_KERNEL);
 	if (!soc_dev_attr)
 		return -ENOMEM;
diff --git a/drivers/gpio/gpiolib.h b/drivers/gpio/gpiolib.h
index 9ad68a0..78ce74e 100644
--- a/drivers/gpio/gpiolib.h
+++ b/drivers/gpio/gpiolib.h
@@ -16,6 +16,7 @@
 #include <linux/module.h>
 #include <linux/cdev.h>
 #include <linux/rwsem.h>
+#include <linux/android_kabi.h>
 
 #define GPIOCHIP_NAME	"gpiochip"
 
@@ -75,6 +76,7 @@ struct gpio_device {
 	 */
 	struct list_head pin_ranges;
 #endif
+	ANDROID_KABI_RESERVE(1);
 };
 
 /* gpio suffixes used for ACPI and device tree lookup */
@@ -100,6 +102,7 @@ struct gpio_array {
 	struct gpio_chip	*chip;
 	unsigned long		*get_mask;
 	unsigned long		*set_mask;
+	ANDROID_KABI_RESERVE(1);
 	unsigned long		invert_mask[];
 };
 
@@ -179,6 +182,7 @@ struct gpio_desc {
 	/* debounce period in microseconds */
 	unsigned int		debounce_period_us;
 #endif
+	ANDROID_KABI_RESERVE(1);
 };
 
 #define gpiod_not_found(desc)		(IS_ERR(desc) && PTR_ERR(desc) == -ENOENT)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
index 91571b1..5635a1b 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
@@ -256,7 +256,7 @@ static int amdgpu_gem_object_mmap(struct drm_gem_object *obj, struct vm_area_str
 	 */
 	if (is_cow_mapping(vma->vm_flags) &&
 	    !(vma->vm_flags & (VM_READ | VM_WRITE | VM_EXEC)))
-		vma->vm_flags &= ~VM_MAYWRITE;
+		vm_flags_clear(vma, VM_MAYWRITE);
 
 	return drm_gem_ttm_mmap(obj, vma);
 }
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
index e191d38..ffe64d8 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
@@ -2888,8 +2888,8 @@ static int kfd_mmio_mmap(struct kfd_dev *dev, struct kfd_process *process,
 
 	address = dev->adev->rmmio_remap.bus_addr;
 
-	vma->vm_flags |= VM_IO | VM_DONTCOPY | VM_DONTEXPAND | VM_NORESERVE |
-				VM_DONTDUMP | VM_PFNMAP;
+	vm_flags_set(vma, VM_IO | VM_DONTCOPY | VM_DONTEXPAND | VM_NORESERVE |
+				VM_DONTDUMP | VM_PFNMAP);
 
 	vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
 
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_doorbell.c b/drivers/gpu/drm/amd/amdkfd/kfd_doorbell.c
index 3ac599f..38c9e1c 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_doorbell.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_doorbell.c
@@ -159,8 +159,8 @@ int kfd_doorbell_mmap(struct kfd_dev *dev, struct kfd_process *process,
 	address = kfd_get_process_doorbells(pdd);
 	if (!address)
 		return -ENOMEM;
-	vma->vm_flags |= VM_IO | VM_DONTCOPY | VM_DONTEXPAND | VM_NORESERVE |
-				VM_DONTDUMP | VM_PFNMAP;
+	vm_flags_set(vma, VM_IO | VM_DONTCOPY | VM_DONTEXPAND | VM_NORESERVE |
+				VM_DONTDUMP | VM_PFNMAP);
 
 	vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
 
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_events.c b/drivers/gpu/drm/amd/amdkfd/kfd_events.c
index 2880ed9..c894cf8 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_events.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_events.c
@@ -1049,8 +1049,8 @@ int kfd_event_mmap(struct kfd_process *p, struct vm_area_struct *vma)
 	pfn = __pa(page->kernel_address);
 	pfn >>= PAGE_SHIFT;
 
-	vma->vm_flags |= VM_IO | VM_DONTCOPY | VM_DONTEXPAND | VM_NORESERVE
-		       | VM_DONTDUMP | VM_PFNMAP;
+	vm_flags_set(vma, VM_IO | VM_DONTCOPY | VM_DONTEXPAND | VM_NORESERVE
+		       | VM_DONTDUMP | VM_PFNMAP);
 
 	pr_debug("Mapping signal page\n");
 	pr_debug("     start user address  == 0x%08lx\n", vma->vm_start);
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c b/drivers/gpu/drm/amd/amdkfd/kfd_process.c
index 7f68d51..140cb27 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c
@@ -2031,8 +2031,8 @@ int kfd_reserved_mem_mmap(struct kfd_dev *dev, struct kfd_process *process,
 		return -ENOMEM;
 	}
 
-	vma->vm_flags |= VM_IO | VM_DONTCOPY | VM_DONTEXPAND
-		| VM_NORESERVE | VM_DONTDUMP | VM_PFNMAP;
+	vm_flags_set(vma, VM_IO | VM_DONTCOPY | VM_DONTEXPAND
+		| VM_NORESERVE | VM_DONTDUMP | VM_PFNMAP);
 	/* Mapping pages to user process */
 	return remap_pfn_range(vma, vma->vm_start,
 			       PFN_DOWN(__pa(qpd->cwsr_kaddr)),
diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c
index b87ed42..6d67cf4 100644
--- a/drivers/gpu/drm/drm_gem.c
+++ b/drivers/gpu/drm/drm_gem.c
@@ -1047,7 +1047,7 @@ int drm_gem_mmap_obj(struct drm_gem_object *obj, unsigned long obj_size,
 			goto err_drm_gem_object_put;
 		}
 
-		vma->vm_flags |= VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP;
+		vm_flags_set(vma, VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP);
 		vma->vm_page_prot = pgprot_writecombine(vm_get_page_prot(vma->vm_flags));
 		vma->vm_page_prot = pgprot_decrypted(vma->vm_page_prot);
 	}
diff --git a/drivers/gpu/drm/drm_gem_dma_helper.c b/drivers/gpu/drm/drm_gem_dma_helper.c
index f6901ff..d9f2305 100644
--- a/drivers/gpu/drm/drm_gem_dma_helper.c
+++ b/drivers/gpu/drm/drm_gem_dma_helper.c
@@ -530,8 +530,7 @@ int drm_gem_dma_mmap(struct drm_gem_dma_object *dma_obj, struct vm_area_struct *
 	 * the whole buffer.
 	 */
 	vma->vm_pgoff -= drm_vma_node_start(&obj->vma_node);
-	vma->vm_flags &= ~VM_PFNMAP;
-	vma->vm_flags |= VM_DONTEXPAND;
+	vm_flags_mod(vma, VM_DONTEXPAND, VM_PFNMAP);
 
 	if (dma_obj->map_noncoherent) {
 		vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
diff --git a/drivers/gpu/drm/drm_gem_shmem_helper.c b/drivers/gpu/drm/drm_gem_shmem_helper.c
index 5fdc608..15aeaee 100644
--- a/drivers/gpu/drm/drm_gem_shmem_helper.c
+++ b/drivers/gpu/drm/drm_gem_shmem_helper.c
@@ -636,7 +636,7 @@ int drm_gem_shmem_mmap(struct drm_gem_shmem_object *shmem, struct vm_area_struct
 	if (ret)
 		return ret;
 
-	vma->vm_flags |= VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP;
+	vm_flags_set(vma, VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP);
 	vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
 	if (shmem->map_wc)
 		vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot);
diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c
index ca2a6e6..8c69534 100644
--- a/drivers/gpu/drm/drm_ioctl.c
+++ b/drivers/gpu/drm/drm_ioctl.c
@@ -678,9 +678,9 @@ static const struct drm_ioctl_desc drm_ioctls[] = {
 	DRM_IOCTL_DEF(DRM_IOCTL_MODE_RMFB, drm_mode_rmfb_ioctl, 0),
 	DRM_IOCTL_DEF(DRM_IOCTL_MODE_PAGE_FLIP, drm_mode_page_flip_ioctl, DRM_MASTER),
 	DRM_IOCTL_DEF(DRM_IOCTL_MODE_DIRTYFB, drm_mode_dirtyfb_ioctl, DRM_MASTER),
-	DRM_IOCTL_DEF(DRM_IOCTL_MODE_CREATE_DUMB, drm_mode_create_dumb_ioctl, 0),
-	DRM_IOCTL_DEF(DRM_IOCTL_MODE_MAP_DUMB, drm_mode_mmap_dumb_ioctl, 0),
-	DRM_IOCTL_DEF(DRM_IOCTL_MODE_DESTROY_DUMB, drm_mode_destroy_dumb_ioctl, 0),
+	DRM_IOCTL_DEF(DRM_IOCTL_MODE_CREATE_DUMB, drm_mode_create_dumb_ioctl, DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF(DRM_IOCTL_MODE_MAP_DUMB, drm_mode_mmap_dumb_ioctl, DRM_RENDER_ALLOW),
+	DRM_IOCTL_DEF(DRM_IOCTL_MODE_DESTROY_DUMB, drm_mode_destroy_dumb_ioctl, DRM_RENDER_ALLOW),
 	DRM_IOCTL_DEF(DRM_IOCTL_MODE_OBJ_GETPROPERTIES, drm_mode_obj_get_properties_ioctl, 0),
 	DRM_IOCTL_DEF(DRM_IOCTL_MODE_OBJ_SETPROPERTY, drm_mode_obj_set_property_ioctl, DRM_MASTER),
 	DRM_IOCTL_DEF(DRM_IOCTL_MODE_CURSOR2, drm_mode_cursor2_ioctl, DRM_MASTER),
diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c
index 304004f..fb3a2ad 100644
--- a/drivers/gpu/drm/drm_modes.c
+++ b/drivers/gpu/drm/drm_modes.c
@@ -2012,6 +2012,7 @@ void drm_mode_convert_to_umode(struct drm_mode_modeinfo *out,
 	strncpy(out->name, in->name, DRM_DISPLAY_MODE_LEN);
 	out->name[DRM_DISPLAY_MODE_LEN-1] = 0;
 }
+EXPORT_SYMBOL_GPL(drm_mode_convert_to_umode);
 
 /**
  * drm_mode_convert_umode - convert a modeinfo into a drm_display_mode
@@ -2088,6 +2089,7 @@ int drm_mode_convert_umode(struct drm_device *dev,
 
 	return 0;
 }
+EXPORT_SYMBOL_GPL(drm_mode_convert_umode);
 
 /**
  * drm_mode_is_420_only - if a given videomode can be only supported in YCBCR420
diff --git a/drivers/gpu/drm/drm_vm.c b/drivers/gpu/drm/drm_vm.c
index f024dc9..87c9fe5 100644
--- a/drivers/gpu/drm/drm_vm.c
+++ b/drivers/gpu/drm/drm_vm.c
@@ -476,7 +476,7 @@ static int drm_mmap_dma(struct file *filp, struct vm_area_struct *vma)
 
 	if (!capable(CAP_SYS_ADMIN) &&
 	    (dma->flags & _DRM_DMA_USE_PCI_RO)) {
-		vma->vm_flags &= ~(VM_WRITE | VM_MAYWRITE);
+		vm_flags_clear(vma, VM_WRITE | VM_MAYWRITE);
 #if defined(__i386__) || defined(__x86_64__)
 		pgprot_val(vma->vm_page_prot) &= ~_PAGE_RW;
 #else
@@ -492,7 +492,7 @@ static int drm_mmap_dma(struct file *filp, struct vm_area_struct *vma)
 
 	vma->vm_ops = &drm_vm_dma_ops;
 
-	vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP;
+	vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP);
 
 	drm_vm_open_locked(dev, vma);
 	return 0;
@@ -560,7 +560,7 @@ static int drm_mmap_locked(struct file *filp, struct vm_area_struct *vma)
 		return -EINVAL;
 
 	if (!capable(CAP_SYS_ADMIN) && (map->flags & _DRM_READ_ONLY)) {
-		vma->vm_flags &= ~(VM_WRITE | VM_MAYWRITE);
+		vm_flags_clear(vma, VM_WRITE | VM_MAYWRITE);
 #if defined(__i386__) || defined(__x86_64__)
 		pgprot_val(vma->vm_page_prot) &= ~_PAGE_RW;
 #else
@@ -628,7 +628,7 @@ static int drm_mmap_locked(struct file *filp, struct vm_area_struct *vma)
 	default:
 		return -EINVAL;	/* This should never happen. */
 	}
-	vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP;
+	vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP);
 
 	drm_vm_open_locked(dev, vma);
 	return 0;
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gem.c b/drivers/gpu/drm/etnaviv/etnaviv_gem.c
index 5cf13e52..9444b8e 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_gem.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_gem.c
@@ -130,7 +130,7 @@ static int etnaviv_gem_mmap_obj(struct etnaviv_gem_object *etnaviv_obj,
 {
 	pgprot_t vm_page_prot;
 
-	vma->vm_flags |= VM_IO | VM_MIXEDMAP | VM_DONTEXPAND | VM_DONTDUMP;
+	vm_flags_set(vma, VM_IO | VM_MIXEDMAP | VM_DONTEXPAND | VM_DONTDUMP);
 
 	vm_page_prot = vm_get_page_prot(vma->vm_flags);
 
diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.c b/drivers/gpu/drm/exynos/exynos_drm_gem.c
index 3e493f4..638ca96 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_gem.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_gem.c
@@ -274,7 +274,7 @@ static int exynos_drm_gem_mmap_buffer(struct exynos_drm_gem *exynos_gem,
 	unsigned long vm_size;
 	int ret;
 
-	vma->vm_flags &= ~VM_PFNMAP;
+	vm_flags_clear(vma, VM_PFNMAP);
 	vma->vm_pgoff = 0;
 
 	vm_size = vma->vm_end - vma->vm_start;
@@ -368,7 +368,7 @@ static int exynos_drm_gem_mmap(struct drm_gem_object *obj, struct vm_area_struct
 	if (obj->import_attach)
 		return dma_buf_mmap(obj->dma_buf, vma, 0);
 
-	vma->vm_flags |= VM_IO | VM_DONTEXPAND | VM_DONTDUMP;
+	vm_flags_set(vma, VM_IO | VM_DONTEXPAND | VM_DONTDUMP);
 
 	DRM_DEV_DEBUG_KMS(to_dma_dev(obj->dev), "flags = 0x%x\n",
 			  exynos_gem->flags);
diff --git a/drivers/gpu/drm/gma500/framebuffer.c b/drivers/gpu/drm/gma500/framebuffer.c
index aa3ecf7..f013a75a 100644
--- a/drivers/gpu/drm/gma500/framebuffer.c
+++ b/drivers/gpu/drm/gma500/framebuffer.c
@@ -139,7 +139,7 @@ static int psbfb_mmap(struct fb_info *info, struct vm_area_struct *vma)
 	 */
 	vma->vm_ops = &psbfb_vm_ops;
 	vma->vm_private_data = (void *)fb;
-	vma->vm_flags |= VM_IO | VM_MIXEDMAP | VM_DONTEXPAND | VM_DONTDUMP;
+	vm_flags_set(vma, VM_IO | VM_MIXEDMAP | VM_DONTEXPAND | VM_DONTDUMP);
 	return 0;
 }
 
diff --git a/drivers/gpu/drm/i810/i810_dma.c b/drivers/gpu/drm/i810/i810_dma.c
index 9fb4dd6..01967dd8 100644
--- a/drivers/gpu/drm/i810/i810_dma.c
+++ b/drivers/gpu/drm/i810/i810_dma.c
@@ -102,7 +102,7 @@ static int i810_mmap_buffers(struct file *filp, struct vm_area_struct *vma)
 	buf = dev_priv->mmap_buffer;
 	buf_priv = buf->dev_private;
 
-	vma->vm_flags |= VM_DONTCOPY;
+	vm_flags_set(vma, VM_DONTCOPY);
 
 	buf_priv->currently_mapped = I810_BUF_MAPPED;
 
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_mman.c b/drivers/gpu/drm/i915/gem/i915_gem_mman.c
index d445e2d..0ec22c7 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_mman.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_mman.c
@@ -979,7 +979,7 @@ int i915_gem_mmap(struct file *filp, struct vm_area_struct *vma)
 			i915_gem_object_put(obj);
 			return -EINVAL;
 		}
-		vma->vm_flags &= ~VM_MAYWRITE;
+		vm_flags_clear(vma, VM_MAYWRITE);
 	}
 
 	anon = mmap_singleton(to_i915(dev));
@@ -988,7 +988,7 @@ int i915_gem_mmap(struct file *filp, struct vm_area_struct *vma)
 		return PTR_ERR(anon);
 	}
 
-	vma->vm_flags |= VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP | VM_IO;
+	vm_flags_set(vma, VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP | VM_IO);
 
 	/*
 	 * We keep the ref on mmo->obj, not vm_file, but we require
diff --git a/drivers/gpu/drm/i915/i915_user_extensions.c b/drivers/gpu/drm/i915/i915_user_extensions.c
index c822d0a..e3f8083 100644
--- a/drivers/gpu/drm/i915/i915_user_extensions.c
+++ b/drivers/gpu/drm/i915/i915_user_extensions.c
@@ -51,7 +51,7 @@ int i915_user_extensions(struct i915_user_extension __user *ext,
 			return err;
 
 		if (get_user(next, &ext->next_extension) ||
-		    overflows_type(next, ext))
+		    overflows_type(next, uintptr_t))
 			return -EFAULT;
 
 		ext = u64_to_user_ptr(next);
diff --git a/drivers/gpu/drm/i915/i915_utils.h b/drivers/gpu/drm/i915/i915_utils.h
index 6c14d13..67a66d4 100644
--- a/drivers/gpu/drm/i915/i915_utils.h
+++ b/drivers/gpu/drm/i915/i915_utils.h
@@ -111,10 +111,6 @@ bool i915_error_injected(void);
 #define range_overflows_end_t(type, start, size, max) \
 	range_overflows_end((type)(start), (type)(size), (type)(max))
 
-/* Note we don't consider signbits :| */
-#define overflows_type(x, T) \
-	(sizeof(x) > sizeof(T) && (x) >> BITS_PER_TYPE(T))
-
 #define ptr_mask_bits(ptr, n) ({					\
 	unsigned long __v = (unsigned long)(ptr);			\
 	(typeof(ptr))(__v & -BIT(n));					\
diff --git a/drivers/gpu/drm/mediatek/mtk_drm_gem.c b/drivers/gpu/drm/mediatek/mtk_drm_gem.c
index 6c204cc..67170f5 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_gem.c
+++ b/drivers/gpu/drm/mediatek/mtk_drm_gem.c
@@ -158,7 +158,7 @@ static int mtk_drm_gem_object_mmap(struct drm_gem_object *obj,
 	 * dma_alloc_attrs() allocated a struct page table for mtk_gem, so clear
 	 * VM_PFNMAP flag that was set by drm_gem_mmap_obj()/drm_gem_mmap().
 	 */
-	vma->vm_flags |= VM_IO | VM_DONTEXPAND | VM_DONTDUMP;
+	vm_flags_set(vma, VM_IO | VM_DONTEXPAND | VM_DONTDUMP);
 	vma->vm_page_prot = pgprot_writecombine(vm_get_page_prot(vma->vm_flags));
 	vma->vm_page_prot = pgprot_decrypted(vma->vm_page_prot);
 
diff --git a/drivers/gpu/drm/msm/msm_gem.c b/drivers/gpu/drm/msm/msm_gem.c
index 1dee0d1..c2fb98a 100644
--- a/drivers/gpu/drm/msm/msm_gem.c
+++ b/drivers/gpu/drm/msm/msm_gem.c
@@ -1012,7 +1012,7 @@ static int msm_gem_object_mmap(struct drm_gem_object *obj, struct vm_area_struct
 {
 	struct msm_gem_object *msm_obj = to_msm_bo(obj);
 
-	vma->vm_flags |= VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP;
+	vm_flags_set(vma, VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP);
 	vma->vm_page_prot = msm_gem_pgprot(msm_obj, vm_get_page_prot(vma->vm_flags));
 
 	return 0;
diff --git a/drivers/gpu/drm/omapdrm/omap_gem.c b/drivers/gpu/drm/omapdrm/omap_gem.c
index cf57179..19fef93 100644
--- a/drivers/gpu/drm/omapdrm/omap_gem.c
+++ b/drivers/gpu/drm/omapdrm/omap_gem.c
@@ -543,8 +543,7 @@ int omap_gem_mmap_obj(struct drm_gem_object *obj,
 {
 	struct omap_gem_object *omap_obj = to_omap_bo(obj);
 
-	vma->vm_flags &= ~VM_PFNMAP;
-	vma->vm_flags |= VM_MIXEDMAP;
+	vm_flags_mod(vma, VM_MIXEDMAP, VM_PFNMAP);
 
 	if (omap_obj->flags & OMAP_BO_WC) {
 		vma->vm_page_prot = pgprot_writecombine(vm_get_page_prot(vma->vm_flags));
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_gem.c b/drivers/gpu/drm/rockchip/rockchip_drm_gem.c
index 9426f79..c77ab47 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_gem.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_gem.c
@@ -250,8 +250,7 @@ static int rockchip_drm_gem_object_mmap(struct drm_gem_object *obj,
 	 * We allocated a struct page table for rk_obj, so clear
 	 * VM_PFNMAP flag that was set by drm_gem_mmap_obj()/drm_gem_mmap().
 	 */
-	vma->vm_flags |= VM_IO | VM_DONTEXPAND | VM_DONTDUMP;
-	vma->vm_flags &= ~VM_PFNMAP;
+	vm_flags_mod(vma, VM_IO | VM_DONTEXPAND | VM_DONTDUMP, VM_PFNMAP);
 
 	vma->vm_page_prot = pgprot_writecombine(vm_get_page_prot(vma->vm_flags));
 	vma->vm_page_prot = pgprot_decrypted(vma->vm_page_prot);
diff --git a/drivers/gpu/drm/tegra/gem.c b/drivers/gpu/drm/tegra/gem.c
index 8199109..808449c 100644
--- a/drivers/gpu/drm/tegra/gem.c
+++ b/drivers/gpu/drm/tegra/gem.c
@@ -573,7 +573,7 @@ int __tegra_gem_mmap(struct drm_gem_object *gem, struct vm_area_struct *vma)
 		 * and set the vm_pgoff (used as a fake buffer offset by DRM)
 		 * to 0 as we want to map the whole buffer.
 		 */
-		vma->vm_flags &= ~VM_PFNMAP;
+		vm_flags_clear(vma, VM_PFNMAP);
 		vma->vm_pgoff = 0;
 
 		err = dma_mmap_wc(gem->dev->dev, vma, bo->vaddr, bo->iova,
@@ -587,8 +587,7 @@ int __tegra_gem_mmap(struct drm_gem_object *gem, struct vm_area_struct *vma)
 	} else {
 		pgprot_t prot = vm_get_page_prot(vma->vm_flags);
 
-		vma->vm_flags |= VM_MIXEDMAP;
-		vma->vm_flags &= ~VM_PFNMAP;
+		vm_flags_mod(vma, VM_MIXEDMAP, VM_PFNMAP);
 
 		vma->vm_page_prot = pgprot_writecombine(prot);
 	}
diff --git a/drivers/gpu/drm/ttm/ttm_bo_vm.c b/drivers/gpu/drm/ttm/ttm_bo_vm.c
index 3811931..429241c 100644
--- a/drivers/gpu/drm/ttm/ttm_bo_vm.c
+++ b/drivers/gpu/drm/ttm/ttm_bo_vm.c
@@ -468,8 +468,7 @@ int ttm_bo_mmap_obj(struct vm_area_struct *vma, struct ttm_buffer_object *bo)
 
 	vma->vm_private_data = bo;
 
-	vma->vm_flags |= VM_PFNMAP;
-	vma->vm_flags |= VM_IO | VM_DONTEXPAND | VM_DONTDUMP;
+	vm_flags_set(vma, VM_PFNMAP | VM_IO | VM_DONTEXPAND | VM_DONTDUMP);
 	return 0;
 }
 EXPORT_SYMBOL(ttm_bo_mmap_obj);
diff --git a/drivers/gpu/drm/virtio/virtgpu_display.c b/drivers/gpu/drm/virtio/virtgpu_display.c
index 9ea7611..2df9d83 100644
--- a/drivers/gpu/drm/virtio/virtgpu_display.c
+++ b/drivers/gpu/drm/virtio/virtgpu_display.c
@@ -301,10 +301,6 @@ virtio_gpu_user_framebuffer_create(struct drm_device *dev,
 	struct virtio_gpu_framebuffer *virtio_gpu_fb;
 	int ret;
 
-	if (mode_cmd->pixel_format != DRM_FORMAT_HOST_XRGB8888 &&
-	    mode_cmd->pixel_format != DRM_FORMAT_HOST_ARGB8888)
-		return ERR_PTR(-ENOENT);
-
 	/* lookup object associated with res handle */
 	obj = drm_gem_object_lookup(file_priv, mode_cmd->handles[0]);
 	if (!obj)
@@ -340,7 +336,6 @@ int virtio_gpu_modeset_init(struct virtio_gpu_device *vgdev)
 	if (ret)
 		return ret;
 
-	vgdev->ddev->mode_config.quirk_addfb_prefer_host_byte_order = true;
 	vgdev->ddev->mode_config.funcs = &virtio_gpu_mode_funcs;
 
 	/* modes will be validated against the framebuffer size */
diff --git a/drivers/gpu/drm/virtio/virtgpu_plane.c b/drivers/gpu/drm/virtio/virtgpu_plane.c
index 4c09e31..b8fcbca4 100644
--- a/drivers/gpu/drm/virtio/virtgpu_plane.c
+++ b/drivers/gpu/drm/virtio/virtgpu_plane.c
@@ -30,7 +30,14 @@
 #include "virtgpu_drv.h"
 
 static const uint32_t virtio_gpu_formats[] = {
-	DRM_FORMAT_HOST_XRGB8888,
+	DRM_FORMAT_XRGB8888,
+	DRM_FORMAT_ARGB8888,
+	DRM_FORMAT_BGRX8888,
+	DRM_FORMAT_BGRA8888,
+	DRM_FORMAT_RGBX8888,
+	DRM_FORMAT_RGBA8888,
+	DRM_FORMAT_XBGR8888,
+	DRM_FORMAT_ABGR8888,
 };
 
 static const uint32_t virtio_gpu_cursor_formats[] = {
@@ -42,6 +49,32 @@ uint32_t virtio_gpu_translate_format(uint32_t drm_fourcc)
 	uint32_t format;
 
 	switch (drm_fourcc) {
+#ifdef __BIG_ENDIAN
+	case DRM_FORMAT_XRGB8888:
+		format = VIRTIO_GPU_FORMAT_X8R8G8B8_UNORM;
+		break;
+	case DRM_FORMAT_ARGB8888:
+		format = VIRTIO_GPU_FORMAT_A8R8G8B8_UNORM;
+		break;
+	case DRM_FORMAT_BGRX8888:
+		format = VIRTIO_GPU_FORMAT_B8G8R8X8_UNORM;
+		break;
+	case DRM_FORMAT_BGRA8888:
+		format = VIRTIO_GPU_FORMAT_B8G8R8A8_UNORM;
+		break;
+	case DRM_FORMAT_RGBX8888:
+		format = VIRTIO_GPU_FORMAT_R8G8B8X8_UNORM;
+		break;
+	case DRM_FORMAT_RGBA8888:
+		format = VIRTIO_GPU_FORMAT_R8G8B8A8_UNORM;
+		break;
+	case DRM_FORMAT_XBGR8888:
+		format = VIRTIO_GPU_FORMAT_X8B8G8R8_UNORM;
+		break;
+	case DRM_FORMAT_ABGR8888:
+		format = VIRTIO_GPU_FORMAT_A8B8G8R8_UNORM;
+		break;
+#else
 	case DRM_FORMAT_XRGB8888:
 		format = VIRTIO_GPU_FORMAT_B8G8R8X8_UNORM;
 		break;
@@ -54,6 +87,19 @@ uint32_t virtio_gpu_translate_format(uint32_t drm_fourcc)
 	case DRM_FORMAT_BGRA8888:
 		format = VIRTIO_GPU_FORMAT_A8R8G8B8_UNORM;
 		break;
+	case DRM_FORMAT_RGBX8888:
+		format = VIRTIO_GPU_FORMAT_X8B8G8R8_UNORM;
+		break;
+	case DRM_FORMAT_RGBA8888:
+		format = VIRTIO_GPU_FORMAT_A8B8G8R8_UNORM;
+		break;
+	case DRM_FORMAT_XBGR8888:
+		format = VIRTIO_GPU_FORMAT_R8G8B8X8_UNORM;
+		break;
+	case DRM_FORMAT_ABGR8888:
+		format = VIRTIO_GPU_FORMAT_R8G8B8A8_UNORM;
+		break;
+#endif
 	default:
 		/*
 		 * This should not happen, we handle everything listed
diff --git a/drivers/gpu/drm/virtio/virtgpu_vram.c b/drivers/gpu/drm/virtio/virtgpu_vram.c
index 6b45b04..25df81c 100644
--- a/drivers/gpu/drm/virtio/virtgpu_vram.c
+++ b/drivers/gpu/drm/virtio/virtgpu_vram.c
@@ -46,7 +46,7 @@ static int virtio_gpu_vram_mmap(struct drm_gem_object *obj,
 		return -EINVAL;
 
 	vma->vm_pgoff -= drm_vma_node_start(&obj->vma_node);
-	vma->vm_flags |= VM_MIXEDMAP | VM_DONTEXPAND;
+	vm_flags_set(vma, VM_MIXEDMAP | VM_DONTEXPAND);
 	vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
 	vma->vm_page_prot = pgprot_decrypted(vma->vm_page_prot);
 	vma->vm_ops = &virtio_gpu_vram_vm_ops;
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_glue.c b/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_glue.c
index 265f7c4..90097d0 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_glue.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_glue.c
@@ -97,7 +97,7 @@ int vmw_mmap(struct file *filp, struct vm_area_struct *vma)
 
 	/* Use VM_PFNMAP rather than VM_MIXEDMAP if not a COW mapping */
 	if (!is_cow_mapping(vma->vm_flags))
-		vma->vm_flags = (vma->vm_flags & ~VM_MIXEDMAP) | VM_PFNMAP;
+		vm_flags_mod(vma, VM_PFNMAP, VM_MIXEDMAP);
 
 	ttm_bo_put(bo); /* release extra ref taken by ttm_bo_mmap_obj() */
 
diff --git a/drivers/gpu/drm/xen/xen_drm_front_gem.c b/drivers/gpu/drm/xen/xen_drm_front_gem.c
index e31554d..339efaa 100644
--- a/drivers/gpu/drm/xen/xen_drm_front_gem.c
+++ b/drivers/gpu/drm/xen/xen_drm_front_gem.c
@@ -70,8 +70,7 @@ static int xen_drm_front_gem_object_mmap(struct drm_gem_object *gem_obj,
 	 * vm_pgoff (used as a fake buffer offset by DRM) to 0 as we want to map
 	 * the whole buffer.
 	 */
-	vma->vm_flags &= ~VM_PFNMAP;
-	vma->vm_flags |= VM_MIXEDMAP | VM_DONTEXPAND;
+	vm_flags_mod(vma, VM_MIXEDMAP | VM_DONTEXPAND, VM_PFNMAP);
 	vma->vm_pgoff = 0;
 
 	/*
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
index 799a308..e012a43 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -32,6 +32,7 @@
 #include <linux/hiddev.h>
 #include <linux/hid-debug.h>
 #include <linux/hidraw.h>
+#include <linux/uhid.h>
 
 #include "hid-ids.h"
 
@@ -292,8 +293,8 @@ static int hid_add_field(struct hid_parser *parser, unsigned report_type, unsign
 	offset = report->size;
 	report->size += parser->global.report_size * parser->global.report_count;
 
-	if (parser->device->ll_driver->max_buffer_size)
-		max_buffer_size = parser->device->ll_driver->max_buffer_size;
+	if (parser->device->ll_driver == &uhid_hid_driver)
+		max_buffer_size = UHID_DATA_MAX;
 
 	/* Total size check: Allow for possible report index byte */
 	if (report->size > (max_buffer_size - 1) << 3) {
@@ -1986,8 +1987,8 @@ int hid_report_raw_event(struct hid_device *hid, enum hid_report_type type, u8 *
 
 	rsize = hid_compute_report_size(report);
 
-	if (hid->ll_driver->max_buffer_size)
-		max_buffer_size = hid->ll_driver->max_buffer_size;
+	if (hid->ll_driver == &uhid_hid_driver)
+		max_buffer_size = UHID_DATA_MAX;
 
 	if (report_enum->numbered && rsize >= max_buffer_size)
 		rsize = max_buffer_size - 1;
@@ -2397,8 +2398,8 @@ int hid_hw_raw_request(struct hid_device *hdev,
 {
 	unsigned int max_buffer_size = HID_MAX_BUFFER_SIZE;
 
-	if (hdev->ll_driver->max_buffer_size)
-		max_buffer_size = hdev->ll_driver->max_buffer_size;
+	if (hdev->ll_driver == &uhid_hid_driver)
+		max_buffer_size = UHID_DATA_MAX;
 
 	if (len < 1 || len > max_buffer_size || !buf)
 		return -EINVAL;
@@ -2421,8 +2422,8 @@ int hid_hw_output_report(struct hid_device *hdev, __u8 *buf, size_t len)
 {
 	unsigned int max_buffer_size = HID_MAX_BUFFER_SIZE;
 
-	if (hdev->ll_driver->max_buffer_size)
-		max_buffer_size = hdev->ll_driver->max_buffer_size;
+	if (hdev->ll_driver == &uhid_hid_driver)
+		max_buffer_size = UHID_DATA_MAX;
 
 	if (len < 1 || len > max_buffer_size || !buf)
 		return -EINVAL;
diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c
index 3acaaca..7ceef4f 100644
--- a/drivers/hid/hid-input.c
+++ b/drivers/hid/hid-input.c
@@ -1236,6 +1236,16 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
 			return;
 		}
 		goto unknown;
+	case HID_UP_CAMERA:
+		switch (usage->hid & HID_USAGE) {
+		case 0x020:
+			map_key_clear(KEY_CAMERA_FOCUS);	break;
+		case 0x021:
+			map_key_clear(KEY_CAMERA);		break;
+		default:
+			goto ignore;
+		}
+		break;
 
 	case HID_UP_HPVENDOR:	/* Reported on a Dutch layout HP5308 */
 		set_bit(EV_REP, input->evbit);
diff --git a/drivers/hid/uhid.c b/drivers/hid/uhid.c
index 59ac757..2a918ae 100644
--- a/drivers/hid/uhid.c
+++ b/drivers/hid/uhid.c
@@ -395,7 +395,6 @@ struct hid_ll_driver uhid_hid_driver = {
 	.parse = uhid_hid_parse,
 	.raw_request = uhid_hid_raw_request,
 	.output_report = uhid_hid_output_report,
-	.max_buffer_size = UHID_DATA_MAX,
 };
 EXPORT_SYMBOL_GPL(uhid_hid_driver);
 
diff --git a/drivers/hsi/clients/cmt_speech.c b/drivers/hsi/clients/cmt_speech.c
index 8069f79..daa8e1b 100644
--- a/drivers/hsi/clients/cmt_speech.c
+++ b/drivers/hsi/clients/cmt_speech.c
@@ -1264,7 +1264,7 @@ static int cs_char_mmap(struct file *file, struct vm_area_struct *vma)
 	if (vma_pages(vma) != 1)
 		return -EINVAL;
 
-	vma->vm_flags |= VM_IO | VM_DONTDUMP | VM_DONTEXPAND;
+	vm_flags_set(vma, VM_IO | VM_DONTDUMP | VM_DONTEXPAND);
 	vma->vm_ops = &cs_char_vm_ops;
 	vma->vm_private_data = file->private_data;
 
diff --git a/drivers/hv/channel.c b/drivers/hv/channel.c
index 56f7e06..0ffe095 100644
--- a/drivers/hv/channel.c
+++ b/drivers/hv/channel.c
@@ -19,6 +19,7 @@
 #include <linux/interrupt.h>
 #include <linux/set_memory.h>
 #include <asm/page.h>
+#include <asm/mem_encrypt.h>
 #include <asm/mshyperv.h>
 
 #include "hyperv_vmbus.h"
diff --git a/drivers/hv/connection.c b/drivers/hv/connection.c
index da51b50..7872b6a 100644
--- a/drivers/hv/connection.c
+++ b/drivers/hv/connection.c
@@ -21,6 +21,7 @@
 #include <linux/export.h>
 #include <linux/io.h>
 #include <linux/set_memory.h>
+#include <asm/mem_encrypt.h>
 #include <asm/mshyperv.h>
 
 #include "hyperv_vmbus.h"
diff --git a/drivers/hwmon/drivetemp.c b/drivers/hwmon/drivetemp.c
index 5bac2b0..8e5759b 100644
--- a/drivers/hwmon/drivetemp.c
+++ b/drivers/hwmon/drivetemp.c
@@ -164,7 +164,7 @@ static int drivetemp_scsi_command(struct drivetemp_data *st,
 				 u8 lba_low, u8 lba_mid, u8 lba_high)
 {
 	u8 scsi_cmd[MAX_COMMAND_SIZE];
-	int data_dir;
+	enum req_op op;
 
 	memset(scsi_cmd, 0, sizeof(scsi_cmd));
 	scsi_cmd[0] = ATA_16;
@@ -175,7 +175,7 @@ static int drivetemp_scsi_command(struct drivetemp_data *st,
 		 * field.
 		 */
 		scsi_cmd[2] = 0x06;
-		data_dir = DMA_TO_DEVICE;
+		op = REQ_OP_DRV_OUT;
 	} else {
 		scsi_cmd[1] = (4 << 1);	/* PIO Data-in */
 		/*
@@ -183,7 +183,7 @@ static int drivetemp_scsi_command(struct drivetemp_data *st,
 		 * field.
 		 */
 		scsi_cmd[2] = 0x0e;
-		data_dir = DMA_FROM_DEVICE;
+		op = REQ_OP_DRV_IN;
 	}
 	scsi_cmd[4] = feature;
 	scsi_cmd[6] = 1;	/* 1 sector */
@@ -192,9 +192,8 @@ static int drivetemp_scsi_command(struct drivetemp_data *st,
 	scsi_cmd[12] = lba_high;
 	scsi_cmd[14] = ata_command;
 
-	return scsi_execute_req(st->sdev, scsi_cmd, data_dir,
-				st->smartdata, ATA_SECT_SIZE, NULL, HZ, 5,
-				NULL);
+	return scsi_execute_cmd(st->sdev, scsi_cmd, op, st->smartdata,
+				ATA_SECT_SIZE, HZ, 5, NULL);
 }
 
 static int drivetemp_ata_command(struct drivetemp_data *st, u8 feature,
diff --git a/drivers/hwtracing/intel_th/msu.c b/drivers/hwtracing/intel_th/msu.c
index 6c8215a..9621efe 100644
--- a/drivers/hwtracing/intel_th/msu.c
+++ b/drivers/hwtracing/intel_th/msu.c
@@ -1659,7 +1659,7 @@ static int intel_th_msc_mmap(struct file *file, struct vm_area_struct *vma)
 		atomic_dec(&msc->user_count);
 
 	vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
-	vma->vm_flags |= VM_DONTEXPAND | VM_DONTCOPY;
+	vm_flags_set(vma, VM_DONTEXPAND | VM_DONTCOPY);
 	vma->vm_ops = &msc_mmap_ops;
 	return ret;
 }
diff --git a/drivers/hwtracing/stm/core.c b/drivers/hwtracing/stm/core.c
index 2712e69..534fbef 100644
--- a/drivers/hwtracing/stm/core.c
+++ b/drivers/hwtracing/stm/core.c
@@ -715,7 +715,7 @@ static int stm_char_mmap(struct file *file, struct vm_area_struct *vma)
 	pm_runtime_get_sync(&stm->dev);
 
 	vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
-	vma->vm_flags |= VM_IO | VM_DONTEXPAND | VM_DONTDUMP;
+	vm_flags_set(vma, VM_IO | VM_DONTEXPAND | VM_DONTDUMP);
 	vma->vm_ops = &stm_mmap_vmops;
 	vm_iomap_memory(vma, phys, size);
 
diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qcom-geni.c
index 8fce98b..09dd0ed 100644
--- a/drivers/i2c/busses/i2c-qcom-geni.c
+++ b/drivers/i2c/busses/i2c-qcom-geni.c
@@ -14,7 +14,7 @@
 #include <linux/of.h>
 #include <linux/platform_device.h>
 #include <linux/pm_runtime.h>
-#include <linux/qcom-geni-se.h>
+#include <linux/soc/qcom/geni-se.h>
 #include <linux/spinlock.h>
 
 #define SE_I2C_TX_TRANS_LEN		0x26c
diff --git a/drivers/infiniband/hw/hfi1/file_ops.c b/drivers/infiniband/hw/hfi1/file_ops.c
index 7c5d487..47e4c808 100644
--- a/drivers/infiniband/hw/hfi1/file_ops.c
+++ b/drivers/infiniband/hw/hfi1/file_ops.c
@@ -403,7 +403,7 @@ static int hfi1_file_mmap(struct file *fp, struct vm_area_struct *vma)
 			ret = -EPERM;
 			goto done;
 		}
-		vma->vm_flags &= ~VM_MAYWRITE;
+		vm_flags_clear(vma, VM_MAYWRITE);
 		addr = vma->vm_start;
 		for (i = 0 ; i < uctxt->egrbufs.numbufs; i++) {
 			memlen = uctxt->egrbufs.buffers[i].len;
@@ -528,7 +528,7 @@ static int hfi1_file_mmap(struct file *fp, struct vm_area_struct *vma)
 		goto done;
 	}
 
-	vma->vm_flags = flags;
+	vm_flags_reset(vma, flags);
 	hfi1_cdbg(PROC,
 		  "%u:%u type:%u io/vf:%d/%d, addr:0x%llx, len:%lu(%lu), flags:0x%lx\n",
 		    ctxt, subctxt, type, mapio, vmf, memaddr, memlen,
diff --git a/drivers/infiniband/hw/mlx5/main.c b/drivers/infiniband/hw/mlx5/main.c
index 3178df5..9dc30ea 100644
--- a/drivers/infiniband/hw/mlx5/main.c
+++ b/drivers/infiniband/hw/mlx5/main.c
@@ -2091,7 +2091,7 @@ static int mlx5_ib_mmap_clock_info_page(struct mlx5_ib_dev *dev,
 
 	if (vma->vm_flags & (VM_WRITE | VM_EXEC))
 		return -EPERM;
-	vma->vm_flags &= ~VM_MAYWRITE;
+	vm_flags_clear(vma, VM_MAYWRITE);
 
 	if (!dev->mdev->clock_info)
 		return -EOPNOTSUPP;
@@ -2315,7 +2315,7 @@ static int mlx5_ib_mmap(struct ib_ucontext *ibcontext, struct vm_area_struct *vm
 
 		if (vma->vm_flags & VM_WRITE)
 			return -EPERM;
-		vma->vm_flags &= ~VM_MAYWRITE;
+		vm_flags_clear(vma, VM_MAYWRITE);
 
 		/* Don't expose to user-space information it shouldn't have */
 		if (PAGE_SIZE > 4096)
diff --git a/drivers/infiniband/hw/qib/qib_file_ops.c b/drivers/infiniband/hw/qib/qib_file_ops.c
index 3937144..80fe92a 100644
--- a/drivers/infiniband/hw/qib/qib_file_ops.c
+++ b/drivers/infiniband/hw/qib/qib_file_ops.c
@@ -733,7 +733,7 @@ static int qib_mmap_mem(struct vm_area_struct *vma, struct qib_ctxtdata *rcd,
 		}
 
 		/* don't allow them to later change with mprotect */
-		vma->vm_flags &= ~VM_MAYWRITE;
+		vm_flags_clear(vma, VM_MAYWRITE);
 	}
 
 	pfn = virt_to_phys(kvaddr) >> PAGE_SHIFT;
@@ -769,7 +769,7 @@ static int mmap_ureg(struct vm_area_struct *vma, struct qib_devdata *dd,
 		phys = dd->physaddr + ureg;
 		vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
 
-		vma->vm_flags |= VM_DONTCOPY | VM_DONTEXPAND;
+		vm_flags_set(vma, VM_DONTCOPY | VM_DONTEXPAND);
 		ret = io_remap_pfn_range(vma, vma->vm_start,
 					 phys >> PAGE_SHIFT,
 					 vma->vm_end - vma->vm_start,
@@ -810,8 +810,7 @@ static int mmap_piobufs(struct vm_area_struct *vma,
 	 * don't allow them to later change to readable with mprotect (for when
 	 * not initially mapped readable, as is normally the case)
 	 */
-	vma->vm_flags &= ~VM_MAYREAD;
-	vma->vm_flags |= VM_DONTCOPY | VM_DONTEXPAND;
+	vm_flags_mod(vma, VM_DONTCOPY | VM_DONTEXPAND, VM_MAYREAD);
 
 	/* We used PAT if wc_cookie == 0 */
 	if (!dd->wc_cookie)
@@ -852,7 +851,7 @@ static int mmap_rcvegrbufs(struct vm_area_struct *vma,
 		goto bail;
 	}
 	/* don't allow them to later change to writable with mprotect */
-	vma->vm_flags &= ~VM_MAYWRITE;
+	vm_flags_clear(vma, VM_MAYWRITE);
 
 	start = vma->vm_start;
 
@@ -944,7 +943,7 @@ static int mmap_kvaddr(struct vm_area_struct *vma, u64 pgaddr,
 		 * Don't allow permission to later change to writable
 		 * with mprotect.
 		 */
-		vma->vm_flags &= ~VM_MAYWRITE;
+		vm_flags_clear(vma, VM_MAYWRITE);
 	} else
 		goto bail;
 	len = vma->vm_end - vma->vm_start;
@@ -955,7 +954,7 @@ static int mmap_kvaddr(struct vm_area_struct *vma, u64 pgaddr,
 
 	vma->vm_pgoff = (unsigned long) addr >> PAGE_SHIFT;
 	vma->vm_ops = &qib_file_vm_ops;
-	vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP;
+	vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP);
 	ret = 1;
 
 bail:
diff --git a/drivers/infiniband/hw/usnic/usnic_ib_verbs.c b/drivers/infiniband/hw/usnic/usnic_ib_verbs.c
index 6e8c4fb..6289238 100644
--- a/drivers/infiniband/hw/usnic/usnic_ib_verbs.c
+++ b/drivers/infiniband/hw/usnic/usnic_ib_verbs.c
@@ -672,7 +672,7 @@ int usnic_ib_mmap(struct ib_ucontext *context,
 	usnic_dbg("\n");
 
 	us_ibdev = to_usdev(context->device);
-	vma->vm_flags |= VM_IO;
+	vm_flags_set(vma, VM_IO);
 	vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
 	vfid = vma->vm_pgoff;
 	usnic_dbg("Page Offset %lu PAGE_SHIFT %u VFID %u\n",
diff --git a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.c b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.c
index 1917658..9f54aa9 100644
--- a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.c
+++ b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.c
@@ -408,7 +408,7 @@ int pvrdma_mmap(struct ib_ucontext *ibcontext, struct vm_area_struct *vma)
 	}
 
 	/* Map UAR to kernel space, VM_LOCKED? */
-	vma->vm_flags |= VM_DONTCOPY | VM_DONTEXPAND;
+	vm_flags_set(vma, VM_DONTCOPY | VM_DONTEXPAND);
 	vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
 	if (io_remap_pfn_range(vma, start, context->uar.pfn, size,
 			       vma->vm_page_prot))
diff --git a/drivers/iommu/Makefile b/drivers/iommu/Makefile
index cc9f381..7fbf6a33 100644
--- a/drivers/iommu/Makefile
+++ b/drivers/iommu/Makefile
@@ -28,6 +28,6 @@
 obj-$(CONFIG_S390_IOMMU) += s390-iommu.o
 obj-$(CONFIG_HYPERV_IOMMU) += hyperv-iommu.o
 obj-$(CONFIG_VIRTIO_IOMMU) += virtio-iommu.o
-obj-$(CONFIG_IOMMU_SVA) += iommu-sva-lib.o io-pgfault.o
+obj-$(CONFIG_IOMMU_SVA) += iommu-sva.o io-pgfault.o
 obj-$(CONFIG_SPRD_IOMMU) += sprd-iommu.o
 obj-$(CONFIG_APPLE_DART) += apple-dart.o
diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c
index 5968a56..a5a63b1 100644
--- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c
+++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c
@@ -10,7 +10,7 @@
 #include <linux/slab.h>
 
 #include "arm-smmu-v3.h"
-#include "../../iommu-sva-lib.h"
+#include "../../iommu-sva.h"
 #include "../../io-pgtable-arm.h"
 
 struct arm_smmu_mmu_notifier {
@@ -344,11 +344,6 @@ __arm_smmu_sva_bind(struct device *dev, struct mm_struct *mm)
 	if (!bond)
 		return ERR_PTR(-ENOMEM);
 
-	/* Allocate a PASID for this mm if necessary */
-	ret = iommu_sva_alloc_pasid(mm, 1, (1U << master->ssid_bits) - 1);
-	if (ret)
-		goto err_free_bond;
-
 	bond->mm = mm;
 	bond->sva.dev = dev;
 	refcount_set(&bond->refs, 1);
@@ -367,42 +362,6 @@ __arm_smmu_sva_bind(struct device *dev, struct mm_struct *mm)
 	return ERR_PTR(ret);
 }
 
-struct iommu_sva *
-arm_smmu_sva_bind(struct device *dev, struct mm_struct *mm, void *drvdata)
-{
-	struct iommu_sva *handle;
-	struct iommu_domain *domain = iommu_get_domain_for_dev(dev);
-	struct arm_smmu_domain *smmu_domain = to_smmu_domain(domain);
-
-	if (smmu_domain->stage != ARM_SMMU_DOMAIN_S1)
-		return ERR_PTR(-EINVAL);
-
-	mutex_lock(&sva_lock);
-	handle = __arm_smmu_sva_bind(dev, mm);
-	mutex_unlock(&sva_lock);
-	return handle;
-}
-
-void arm_smmu_sva_unbind(struct iommu_sva *handle)
-{
-	struct arm_smmu_bond *bond = sva_to_bond(handle);
-
-	mutex_lock(&sva_lock);
-	if (refcount_dec_and_test(&bond->refs)) {
-		list_del(&bond->list);
-		arm_smmu_mmu_notifier_put(bond->smmu_mn);
-		kfree(bond);
-	}
-	mutex_unlock(&sva_lock);
-}
-
-u32 arm_smmu_sva_get_pasid(struct iommu_sva *handle)
-{
-	struct arm_smmu_bond *bond = sva_to_bond(handle);
-
-	return bond->mm->pasid;
-}
-
 bool arm_smmu_sva_supported(struct arm_smmu_device *smmu)
 {
 	unsigned long reg, fld;
@@ -550,3 +509,64 @@ void arm_smmu_sva_notifier_synchronize(void)
 	 */
 	mmu_notifier_synchronize();
 }
+
+void arm_smmu_sva_remove_dev_pasid(struct iommu_domain *domain,
+				   struct device *dev, ioasid_t id)
+{
+	struct mm_struct *mm = domain->mm;
+	struct arm_smmu_bond *bond = NULL, *t;
+	struct arm_smmu_master *master = dev_iommu_priv_get(dev);
+
+	mutex_lock(&sva_lock);
+	list_for_each_entry(t, &master->bonds, list) {
+		if (t->mm == mm) {
+			bond = t;
+			break;
+		}
+	}
+
+	if (!WARN_ON(!bond) && refcount_dec_and_test(&bond->refs)) {
+		list_del(&bond->list);
+		arm_smmu_mmu_notifier_put(bond->smmu_mn);
+		kfree(bond);
+	}
+	mutex_unlock(&sva_lock);
+}
+
+static int arm_smmu_sva_set_dev_pasid(struct iommu_domain *domain,
+				      struct device *dev, ioasid_t id)
+{
+	int ret = 0;
+	struct iommu_sva *handle;
+	struct mm_struct *mm = domain->mm;
+
+	mutex_lock(&sva_lock);
+	handle = __arm_smmu_sva_bind(dev, mm);
+	if (IS_ERR(handle))
+		ret = PTR_ERR(handle);
+	mutex_unlock(&sva_lock);
+
+	return ret;
+}
+
+static void arm_smmu_sva_domain_free(struct iommu_domain *domain)
+{
+	kfree(domain);
+}
+
+static const struct iommu_domain_ops arm_smmu_sva_domain_ops = {
+	.set_dev_pasid		= arm_smmu_sva_set_dev_pasid,
+	.free			= arm_smmu_sva_domain_free
+};
+
+struct iommu_domain *arm_smmu_sva_domain_alloc(void)
+{
+	struct iommu_domain *domain;
+
+	domain = kzalloc(sizeof(*domain), GFP_KERNEL);
+	if (!domain)
+		return NULL;
+	domain->ops = &arm_smmu_sva_domain_ops;
+
+	return domain;
+}
diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
index d4d8bfe..6e4a5a5 100644
--- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
+++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
@@ -29,7 +29,7 @@
 
 #include "arm-smmu-v3.h"
 #include "../../dma-iommu.h"
-#include "../../iommu-sva-lib.h"
+#include "../../iommu-sva.h"
 
 static bool disable_bypass = true;
 module_param(disable_bypass, bool, 0444);
@@ -2009,6 +2009,9 @@ static struct iommu_domain *arm_smmu_domain_alloc(unsigned type)
 {
 	struct arm_smmu_domain *smmu_domain;
 
+	if (type == IOMMU_DOMAIN_SVA)
+		return arm_smmu_sva_domain_alloc();
+
 	if (type != IOMMU_DOMAIN_UNMANAGED &&
 	    type != IOMMU_DOMAIN_DMA &&
 	    type != IOMMU_DOMAIN_DMA_FQ &&
@@ -2838,6 +2841,17 @@ static int arm_smmu_def_domain_type(struct device *dev)
 	return 0;
 }
 
+static void arm_smmu_remove_dev_pasid(struct device *dev, ioasid_t pasid)
+{
+	struct iommu_domain *domain;
+
+	domain = iommu_get_domain_for_dev_pasid(dev, pasid, IOMMU_DOMAIN_SVA);
+	if (WARN_ON(IS_ERR(domain)) || !domain)
+		return;
+
+	arm_smmu_sva_remove_dev_pasid(domain, dev, pasid);
+}
+
 static struct iommu_ops arm_smmu_ops = {
 	.capable		= arm_smmu_capable,
 	.domain_alloc		= arm_smmu_domain_alloc,
@@ -2846,11 +2860,9 @@ static struct iommu_ops arm_smmu_ops = {
 	.device_group		= arm_smmu_device_group,
 	.of_xlate		= arm_smmu_of_xlate,
 	.get_resv_regions	= arm_smmu_get_resv_regions,
+	.remove_dev_pasid	= arm_smmu_remove_dev_pasid,
 	.dev_enable_feat	= arm_smmu_dev_enable_feature,
 	.dev_disable_feat	= arm_smmu_dev_disable_feature,
-	.sva_bind		= arm_smmu_sva_bind,
-	.sva_unbind		= arm_smmu_sva_unbind,
-	.sva_get_pasid		= arm_smmu_sva_get_pasid,
 	.page_response		= arm_smmu_page_response,
 	.def_domain_type	= arm_smmu_def_domain_type,
 	.pgsize_bitmap		= -1UL, /* Restricted during device attach */
@@ -3543,6 +3555,7 @@ static int arm_smmu_device_hw_probe(struct arm_smmu_device *smmu)
 	/* SID/SSID sizes */
 	smmu->ssid_bits = FIELD_GET(IDR1_SSIDSIZE, reg);
 	smmu->sid_bits = FIELD_GET(IDR1_SIDSIZE, reg);
+	smmu->iommu.max_pasids = 1UL << smmu->ssid_bits;
 
 	/*
 	 * If the SMMU supports fewer bits than would fill a single L2 stream
diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h
index cd48590..8d772ea 100644
--- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h
+++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h
@@ -754,11 +754,10 @@ bool arm_smmu_master_sva_enabled(struct arm_smmu_master *master);
 int arm_smmu_master_enable_sva(struct arm_smmu_master *master);
 int arm_smmu_master_disable_sva(struct arm_smmu_master *master);
 bool arm_smmu_master_iopf_supported(struct arm_smmu_master *master);
-struct iommu_sva *arm_smmu_sva_bind(struct device *dev, struct mm_struct *mm,
-				    void *drvdata);
-void arm_smmu_sva_unbind(struct iommu_sva *handle);
-u32 arm_smmu_sva_get_pasid(struct iommu_sva *handle);
 void arm_smmu_sva_notifier_synchronize(void);
+struct iommu_domain *arm_smmu_sva_domain_alloc(void);
+void arm_smmu_sva_remove_dev_pasid(struct iommu_domain *domain,
+				   struct device *dev, ioasid_t id);
 #else /* CONFIG_ARM_SMMU_V3_SVA */
 static inline bool arm_smmu_sva_supported(struct arm_smmu_device *smmu)
 {
@@ -790,19 +789,17 @@ static inline bool arm_smmu_master_iopf_supported(struct arm_smmu_master *master
 	return false;
 }
 
-static inline struct iommu_sva *
-arm_smmu_sva_bind(struct device *dev, struct mm_struct *mm, void *drvdata)
-{
-	return ERR_PTR(-ENODEV);
-}
-
-static inline void arm_smmu_sva_unbind(struct iommu_sva *handle) {}
-
-static inline u32 arm_smmu_sva_get_pasid(struct iommu_sva *handle)
-{
-	return IOMMU_PASID_INVALID;
-}
-
 static inline void arm_smmu_sva_notifier_synchronize(void) {}
+
+static inline struct iommu_domain *arm_smmu_sva_domain_alloc(void)
+{
+	return NULL;
+}
+
+static inline void arm_smmu_sva_remove_dev_pasid(struct iommu_domain *domain,
+						 struct device *dev,
+						 ioasid_t id)
+{
+}
 #endif /* CONFIG_ARM_SMMU_V3_SVA */
 #endif /* _ARM_SMMU_V3_H */
diff --git a/drivers/iommu/dma-iommu.c b/drivers/iommu/dma-iommu.c
index 9297b74..c9bdec5 100644
--- a/drivers/iommu/dma-iommu.c
+++ b/drivers/iommu/dma-iommu.c
@@ -28,6 +28,7 @@
 #include <linux/spinlock.h>
 #include <linux/swiotlb.h>
 #include <linux/vmalloc.h>
+#include <trace/hooks/iommu.h>
 
 #include "dma-iommu.h"
 
@@ -578,6 +579,9 @@ static int iommu_dma_init_domain(struct iommu_domain *domain, dma_addr_t base,
 	}
 
 	init_iova_domain(iovad, 1UL << order, base_pfn);
+
+	trace_android_rvh_iommu_iovad_init_alloc_algo(dev, iovad);
+
 	ret = iova_domain_init_rcaches(iovad);
 	if (ret)
 		goto done_unlock;
@@ -609,6 +613,10 @@ static int dma_info_to_prot(enum dma_data_direction dir, bool coherent,
 
 	if (attrs & DMA_ATTR_PRIVILEGED)
 		prot |= IOMMU_PRIV;
+	if (attrs & DMA_ATTR_SYS_CACHE)
+		prot |= IOMMU_SYS_CACHE;
+	if (attrs & DMA_ATTR_SYS_CACHE_NWA)
+		prot |= IOMMU_SYS_CACHE_NWA;
 
 	switch (dir) {
 	case DMA_BIDIRECTIONAL:
@@ -651,6 +659,8 @@ static dma_addr_t iommu_dma_alloc_iova(struct iommu_domain *domain,
 		iova = alloc_iova_fast(iovad, iova_len, dma_limit >> shift,
 				       true);
 
+	trace_android_vh_iommu_iovad_alloc_iova(dev, iovad, (dma_addr_t)iova << shift, size);
+
 	return (dma_addr_t)iova << shift;
 }
 
@@ -669,6 +679,8 @@ static void iommu_dma_free_iova(struct iommu_dma_cookie *cookie,
 	else
 		free_iova_fast(iovad, iova_pfn(iovad, iova),
 				size >> iova_shift(iovad));
+
+	trace_android_vh_iommu_iovad_free_iova(iovad, iova, size);
 }
 
 static void __iommu_dma_unmap(struct device *dev, dma_addr_t dma_addr,
diff --git a/drivers/iommu/intel/dmar.c b/drivers/iommu/intel/dmar.c
index f800989..c80c524 100644
--- a/drivers/iommu/intel/dmar.c
+++ b/drivers/iommu/intel/dmar.c
@@ -1107,6 +1107,13 @@ static int alloc_iommu(struct dmar_drhd_unit *drhd)
 	raw_spin_lock_init(&iommu->register_lock);
 
 	/*
+	 * A value of N in PSS field of eCap register indicates hardware
+	 * supports PASID field of N+1 bits.
+	 */
+	if (pasid_supported(iommu))
+		iommu->iommu.max_pasids = 2UL << ecap_pss(iommu->ecap);
+
+	/*
 	 * This is only for hotplug; at boot time intel_iommu_enabled won't
 	 * be set yet. When intel_iommu_init() runs, it registers the units
 	 * present at boot time, then sets intel_iommu_enabled.
diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c
index d4b5d20..ca2c2b5 100644
--- a/drivers/iommu/intel/iommu.c
+++ b/drivers/iommu/intel/iommu.c
@@ -27,7 +27,7 @@
 #include "iommu.h"
 #include "../dma-iommu.h"
 #include "../irq_remapping.h"
-#include "../iommu-sva-lib.h"
+#include "../iommu-sva.h"
 #include "pasid.h"
 #include "cap_audit.h"
 
@@ -4189,6 +4189,8 @@ static struct iommu_domain *intel_iommu_domain_alloc(unsigned type)
 		return domain;
 	case IOMMU_DOMAIN_IDENTITY:
 		return &si_domain->domain;
+	case IOMMU_DOMAIN_SVA:
+		return intel_svm_domain_alloc();
 	default:
 		return NULL;
 	}
@@ -4746,6 +4748,28 @@ static void intel_iommu_iotlb_sync_map(struct iommu_domain *domain,
 		__mapping_notify_one(info->iommu, dmar_domain, pfn, pages);
 }
 
+static void intel_iommu_remove_dev_pasid(struct device *dev, ioasid_t pasid)
+{
+	struct intel_iommu *iommu = device_to_iommu(dev, NULL, NULL);
+	struct iommu_domain *domain;
+
+	/* Domain type specific cleanup: */
+	domain = iommu_get_domain_for_dev_pasid(dev, pasid, 0);
+	if (domain) {
+		switch (domain->type) {
+		case IOMMU_DOMAIN_SVA:
+			intel_svm_remove_dev_pasid(dev, pasid);
+			break;
+		default:
+			/* should never reach here */
+			WARN_ON(1);
+			break;
+		}
+	}
+
+	intel_pasid_tear_down_entry(iommu, dev, pasid, false);
+}
+
 const struct iommu_ops intel_iommu_ops = {
 	.capable		= intel_iommu_capable,
 	.domain_alloc		= intel_iommu_domain_alloc,
@@ -4758,11 +4782,9 @@ const struct iommu_ops intel_iommu_ops = {
 	.dev_disable_feat	= intel_iommu_dev_disable_feat,
 	.is_attach_deferred	= intel_iommu_is_attach_deferred,
 	.def_domain_type	= device_def_domain_type,
+	.remove_dev_pasid	= intel_iommu_remove_dev_pasid,
 	.pgsize_bitmap		= SZ_4K,
 #ifdef CONFIG_INTEL_IOMMU_SVM
-	.sva_bind		= intel_svm_bind,
-	.sva_unbind		= intel_svm_unbind,
-	.sva_get_pasid		= intel_svm_get_pasid,
 	.page_response		= intel_svm_page_response,
 #endif
 	.default_domain_ops = &(const struct iommu_domain_ops) {
diff --git a/drivers/iommu/intel/iommu.h b/drivers/iommu/intel/iommu.h
index db9df7c..20f4dd7 100644
--- a/drivers/iommu/intel/iommu.h
+++ b/drivers/iommu/intel/iommu.h
@@ -480,8 +480,6 @@ enum {
 #define VTD_FLAG_IRQ_REMAP_PRE_ENABLED	(1 << 1)
 #define VTD_FLAG_SVM_CAPABLE		(1 << 2)
 
-extern int intel_iommu_sm;
-
 #define sm_supported(iommu)	(intel_iommu_sm && ecap_smts((iommu)->ecap))
 #define pasid_supported(iommu)	(sm_supported(iommu) &&			\
 				 ecap_pasid((iommu)->ecap))
@@ -754,12 +752,10 @@ struct intel_iommu *device_to_iommu(struct device *dev, u8 *bus, u8 *devfn);
 extern void intel_svm_check(struct intel_iommu *iommu);
 extern int intel_svm_enable_prq(struct intel_iommu *iommu);
 extern int intel_svm_finish_prq(struct intel_iommu *iommu);
-struct iommu_sva *intel_svm_bind(struct device *dev, struct mm_struct *mm,
-				 void *drvdata);
-void intel_svm_unbind(struct iommu_sva *handle);
-u32 intel_svm_get_pasid(struct iommu_sva *handle);
 int intel_svm_page_response(struct device *dev, struct iommu_fault_event *evt,
 			    struct iommu_page_response *msg);
+struct iommu_domain *intel_svm_domain_alloc(void);
+void intel_svm_remove_dev_pasid(struct device *dev, ioasid_t pasid);
 
 struct intel_svm_dev {
 	struct list_head list;
@@ -784,6 +780,14 @@ struct intel_svm {
 };
 #else
 static inline void intel_svm_check(struct intel_iommu *iommu) {}
+static inline struct iommu_domain *intel_svm_domain_alloc(void)
+{
+	return NULL;
+}
+
+static inline void intel_svm_remove_dev_pasid(struct device *dev, ioasid_t pasid)
+{
+}
 #endif
 
 #ifdef CONFIG_INTEL_IOMMU_DEBUGFS
@@ -799,6 +803,7 @@ struct context_entry *iommu_context_addr(struct intel_iommu *iommu, u8 bus,
 extern const struct iommu_ops intel_iommu_ops;
 
 #ifdef CONFIG_INTEL_IOMMU
+extern int intel_iommu_sm;
 extern int iommu_calculate_agaw(struct intel_iommu *iommu);
 extern int iommu_calculate_max_sagaw(struct intel_iommu *iommu);
 extern int dmar_disabled;
@@ -814,6 +819,7 @@ static inline int iommu_calculate_max_sagaw(struct intel_iommu *iommu)
 }
 #define dmar_disabled	(1)
 #define intel_iommu_enabled (0)
+#define intel_iommu_sm (0)
 #endif
 
 static inline const char *decode_prq_descriptor(char *str, size_t size,
diff --git a/drivers/iommu/intel/svm.c b/drivers/iommu/intel/svm.c
index 03b2535..c76b662 100644
--- a/drivers/iommu/intel/svm.c
+++ b/drivers/iommu/intel/svm.c
@@ -24,7 +24,7 @@
 #include "iommu.h"
 #include "pasid.h"
 #include "perf.h"
-#include "../iommu-sva-lib.h"
+#include "../iommu-sva.h"
 #include "trace.h"
 
 static irqreturn_t prq_event_thread(int irq, void *d);
@@ -299,19 +299,9 @@ static int pasid_to_svm_sdev(struct device *dev, unsigned int pasid,
 	return 0;
 }
 
-static int intel_svm_alloc_pasid(struct device *dev, struct mm_struct *mm,
-				 unsigned int flags)
-{
-	ioasid_t max_pasid = dev_is_pci(dev) ?
-			pci_max_pasids(to_pci_dev(dev)) : intel_pasid_max_id;
-
-	return iommu_sva_alloc_pasid(mm, PASID_MIN, max_pasid - 1);
-}
-
 static struct iommu_sva *intel_svm_bind_mm(struct intel_iommu *iommu,
 					   struct device *dev,
-					   struct mm_struct *mm,
-					   unsigned int flags)
+					   struct mm_struct *mm)
 {
 	struct device_domain_info *info = dev_iommu_priv_get(dev);
 	struct intel_svm_dev *sdev;
@@ -327,22 +317,18 @@ static struct iommu_sva *intel_svm_bind_mm(struct intel_iommu *iommu,
 
 		svm->pasid = mm->pasid;
 		svm->mm = mm;
-		svm->flags = flags;
 		INIT_LIST_HEAD_RCU(&svm->devs);
 
-		if (!(flags & SVM_FLAG_SUPERVISOR_MODE)) {
-			svm->notifier.ops = &intel_mmuops;
-			ret = mmu_notifier_register(&svm->notifier, mm);
-			if (ret) {
-				kfree(svm);
-				return ERR_PTR(ret);
-			}
+		svm->notifier.ops = &intel_mmuops;
+		ret = mmu_notifier_register(&svm->notifier, mm);
+		if (ret) {
+			kfree(svm);
+			return ERR_PTR(ret);
 		}
 
 		ret = pasid_private_add(svm->pasid, svm);
 		if (ret) {
-			if (svm->notifier.ops)
-				mmu_notifier_unregister(&svm->notifier, mm);
+			mmu_notifier_unregister(&svm->notifier, mm);
 			kfree(svm);
 			return ERR_PTR(ret);
 		}
@@ -377,9 +363,7 @@ static struct iommu_sva *intel_svm_bind_mm(struct intel_iommu *iommu,
 	}
 
 	/* Setup the pasid table: */
-	sflags = (flags & SVM_FLAG_SUPERVISOR_MODE) ?
-			PASID_FLAG_SUPERVISOR_MODE : 0;
-	sflags |= cpu_feature_enabled(X86_FEATURE_LA57) ? PASID_FLAG_FL5LP : 0;
+	sflags = cpu_feature_enabled(X86_FEATURE_LA57) ? PASID_FLAG_FL5LP : 0;
 	ret = intel_pasid_setup_first_level(iommu, dev, mm->pgd, mm->pasid,
 					    FLPT_DEFAULT_DID, sflags);
 	if (ret)
@@ -393,8 +377,7 @@ static struct iommu_sva *intel_svm_bind_mm(struct intel_iommu *iommu,
 	kfree(sdev);
 free_svm:
 	if (list_empty(&svm->devs)) {
-		if (svm->notifier.ops)
-			mmu_notifier_unregister(&svm->notifier, mm);
+		mmu_notifier_unregister(&svm->notifier, mm);
 		pasid_private_remove(mm->pasid);
 		kfree(svm);
 	}
@@ -787,67 +770,6 @@ static irqreturn_t prq_event_thread(int irq, void *d)
 	return IRQ_RETVAL(handled);
 }
 
-struct iommu_sva *intel_svm_bind(struct device *dev, struct mm_struct *mm, void *drvdata)
-{
-	struct intel_iommu *iommu = device_to_iommu(dev, NULL, NULL);
-	unsigned int flags = 0;
-	struct iommu_sva *sva;
-	int ret;
-
-	if (drvdata)
-		flags = *(unsigned int *)drvdata;
-
-	if (flags & SVM_FLAG_SUPERVISOR_MODE) {
-		if (!ecap_srs(iommu->ecap)) {
-			dev_err(dev, "%s: Supervisor PASID not supported\n",
-				iommu->name);
-			return ERR_PTR(-EOPNOTSUPP);
-		}
-
-		if (mm) {
-			dev_err(dev, "%s: Supervisor PASID with user provided mm\n",
-				iommu->name);
-			return ERR_PTR(-EINVAL);
-		}
-
-		mm = &init_mm;
-	}
-
-	mutex_lock(&pasid_mutex);
-	ret = intel_svm_alloc_pasid(dev, mm, flags);
-	if (ret) {
-		mutex_unlock(&pasid_mutex);
-		return ERR_PTR(ret);
-	}
-
-	sva = intel_svm_bind_mm(iommu, dev, mm, flags);
-	mutex_unlock(&pasid_mutex);
-
-	return sva;
-}
-
-void intel_svm_unbind(struct iommu_sva *sva)
-{
-	struct intel_svm_dev *sdev = to_intel_svm_dev(sva);
-
-	mutex_lock(&pasid_mutex);
-	intel_svm_unbind_mm(sdev->dev, sdev->pasid);
-	mutex_unlock(&pasid_mutex);
-}
-
-u32 intel_svm_get_pasid(struct iommu_sva *sva)
-{
-	struct intel_svm_dev *sdev;
-	u32 pasid;
-
-	mutex_lock(&pasid_mutex);
-	sdev = to_intel_svm_dev(sva);
-	pasid = sdev->pasid;
-	mutex_unlock(&pasid_mutex);
-
-	return pasid;
-}
-
 int intel_svm_page_response(struct device *dev,
 			    struct iommu_fault_event *evt,
 			    struct iommu_page_response *msg)
@@ -918,3 +840,50 @@ int intel_svm_page_response(struct device *dev,
 out:
 	return ret;
 }
+
+void intel_svm_remove_dev_pasid(struct device *dev, ioasid_t pasid)
+{
+	mutex_lock(&pasid_mutex);
+	intel_svm_unbind_mm(dev, pasid);
+	mutex_unlock(&pasid_mutex);
+}
+
+static int intel_svm_set_dev_pasid(struct iommu_domain *domain,
+				   struct device *dev, ioasid_t pasid)
+{
+	struct device_domain_info *info = dev_iommu_priv_get(dev);
+	struct intel_iommu *iommu = info->iommu;
+	struct mm_struct *mm = domain->mm;
+	struct iommu_sva *sva;
+	int ret = 0;
+
+	mutex_lock(&pasid_mutex);
+	sva = intel_svm_bind_mm(iommu, dev, mm);
+	if (IS_ERR(sva))
+		ret = PTR_ERR(sva);
+	mutex_unlock(&pasid_mutex);
+
+	return ret;
+}
+
+static void intel_svm_domain_free(struct iommu_domain *domain)
+{
+	kfree(to_dmar_domain(domain));
+}
+
+static const struct iommu_domain_ops intel_svm_domain_ops = {
+	.set_dev_pasid		= intel_svm_set_dev_pasid,
+	.free			= intel_svm_domain_free
+};
+
+struct iommu_domain *intel_svm_domain_alloc(void)
+{
+	struct dmar_domain *domain;
+
+	domain = kzalloc(sizeof(*domain), GFP_KERNEL);
+	if (!domain)
+		return NULL;
+	domain->domain.ops = &intel_svm_domain_ops;
+
+	return &domain->domain;
+}
diff --git a/drivers/iommu/io-pgfault.c b/drivers/iommu/io-pgfault.c
index 1df8c1d..e5b8b91 100644
--- a/drivers/iommu/io-pgfault.c
+++ b/drivers/iommu/io-pgfault.c
@@ -11,7 +11,7 @@
 #include <linux/slab.h>
 #include <linux/workqueue.h>
 
-#include "iommu-sva-lib.h"
+#include "iommu-sva.h"
 
 /**
  * struct iopf_queue - IO Page Fault queue
@@ -69,69 +69,18 @@ static int iopf_complete_group(struct device *dev, struct iopf_fault *iopf,
 	return iommu_page_response(dev, &resp);
 }
 
-static enum iommu_page_response_code
-iopf_handle_single(struct iopf_fault *iopf)
-{
-	vm_fault_t ret;
-	struct mm_struct *mm;
-	struct vm_area_struct *vma;
-	unsigned int access_flags = 0;
-	unsigned int fault_flags = FAULT_FLAG_REMOTE;
-	struct iommu_fault_page_request *prm = &iopf->fault.prm;
-	enum iommu_page_response_code status = IOMMU_PAGE_RESP_INVALID;
-
-	if (!(prm->flags & IOMMU_FAULT_PAGE_REQUEST_PASID_VALID))
-		return status;
-
-	mm = iommu_sva_find(prm->pasid);
-	if (IS_ERR_OR_NULL(mm))
-		return status;
-
-	mmap_read_lock(mm);
-
-	vma = find_extend_vma(mm, prm->addr);
-	if (!vma)
-		/* Unmapped area */
-		goto out_put_mm;
-
-	if (prm->perm & IOMMU_FAULT_PERM_READ)
-		access_flags |= VM_READ;
-
-	if (prm->perm & IOMMU_FAULT_PERM_WRITE) {
-		access_flags |= VM_WRITE;
-		fault_flags |= FAULT_FLAG_WRITE;
-	}
-
-	if (prm->perm & IOMMU_FAULT_PERM_EXEC) {
-		access_flags |= VM_EXEC;
-		fault_flags |= FAULT_FLAG_INSTRUCTION;
-	}
-
-	if (!(prm->perm & IOMMU_FAULT_PERM_PRIV))
-		fault_flags |= FAULT_FLAG_USER;
-
-	if (access_flags & ~vma->vm_flags)
-		/* Access fault */
-		goto out_put_mm;
-
-	ret = handle_mm_fault(vma, prm->addr, fault_flags, NULL);
-	status = ret & VM_FAULT_ERROR ? IOMMU_PAGE_RESP_INVALID :
-		IOMMU_PAGE_RESP_SUCCESS;
-
-out_put_mm:
-	mmap_read_unlock(mm);
-	mmput(mm);
-
-	return status;
-}
-
-static void iopf_handle_group(struct work_struct *work)
+static void iopf_handler(struct work_struct *work)
 {
 	struct iopf_group *group;
+	struct iommu_domain *domain;
 	struct iopf_fault *iopf, *next;
 	enum iommu_page_response_code status = IOMMU_PAGE_RESP_SUCCESS;
 
 	group = container_of(work, struct iopf_group, work);
+	domain = iommu_get_domain_for_dev_pasid(group->dev,
+				group->last_fault.fault.prm.pasid, 0);
+	if (!domain || !domain->iopf_handler)
+		status = IOMMU_PAGE_RESP_INVALID;
 
 	list_for_each_entry_safe(iopf, next, &group->faults, list) {
 		/*
@@ -139,7 +88,8 @@ static void iopf_handle_group(struct work_struct *work)
 		 * faults in the group if there is an error.
 		 */
 		if (status == IOMMU_PAGE_RESP_SUCCESS)
-			status = iopf_handle_single(iopf);
+			status = domain->iopf_handler(&iopf->fault,
+						      domain->fault_data);
 
 		if (!(iopf->fault.prm.flags &
 		      IOMMU_FAULT_PAGE_REQUEST_LAST_PAGE))
@@ -181,6 +131,13 @@ static void iopf_handle_group(struct work_struct *work)
  * request completes, outstanding faults will have been dealt with by the time
  * the PASID is freed.
  *
+ * Any valid page fault will be eventually routed to an iommu domain and the
+ * page fault handler installed there will get called. The users of this
+ * handling framework should guarantee that the iommu domain could only be
+ * freed after the device has stopped generating page faults (or the iommu
+ * hardware has been set to block the page faults) and the pending page faults
+ * have been flushed.
+ *
  * Return: 0 on success and <0 on error.
  */
 int iommu_queue_iopf(struct iommu_fault *fault, void *cookie)
@@ -235,7 +192,7 @@ int iommu_queue_iopf(struct iommu_fault *fault, void *cookie)
 	group->last_fault.fault = *fault;
 	INIT_LIST_HEAD(&group->faults);
 	list_add(&group->last_fault.list, &group->faults);
-	INIT_WORK(&group->work, iopf_handle_group);
+	INIT_WORK(&group->work, iopf_handler);
 
 	/* See if we have partial faults for this group */
 	list_for_each_entry_safe(iopf, next, &iopf_param->partial, list) {
diff --git a/drivers/iommu/io-pgtable-arm.c b/drivers/iommu/io-pgtable-arm.c
index 0ba817e..078e8d1 100644
--- a/drivers/iommu/io-pgtable-arm.c
+++ b/drivers/iommu/io-pgtable-arm.c
@@ -118,10 +118,14 @@
 #define ARM_LPAE_MAIR_ATTR_NC		0x44
 #define ARM_LPAE_MAIR_ATTR_INC_OWBRWA	0xf4
 #define ARM_LPAE_MAIR_ATTR_WBRWA	0xff
+#define ARM_LPAE_MAIR_ATTR_INC_OWBRANWA		0xe4ULL
+#define ARM_LPAE_MAIR_ATTR_IWBRWA_OWBRANWA	0xefULL
 #define ARM_LPAE_MAIR_ATTR_IDX_NC	0
 #define ARM_LPAE_MAIR_ATTR_IDX_CACHE	1
 #define ARM_LPAE_MAIR_ATTR_IDX_DEV	2
 #define ARM_LPAE_MAIR_ATTR_IDX_INC_OCACHE	3
+#define ARM_LPAE_MAIR_ATTR_IDX_INC_OCACHE_NWA		4
+#define ARM_LPAE_MAIR_ATTR_IDX_ICACHE_OCACHE_NWA	5
 
 #define ARM_MALI_LPAE_TTBR_ADRMODE_TABLE (3u << 0)
 #define ARM_MALI_LPAE_TTBR_READ_INNER	BIT(2)
@@ -433,9 +437,19 @@ static arm_lpae_iopte arm_lpae_prot_to_pte(struct arm_lpae_io_pgtable *data,
 		if (prot & IOMMU_MMIO)
 			pte |= (ARM_LPAE_MAIR_ATTR_IDX_DEV
 				<< ARM_LPAE_PTE_ATTRINDX_SHIFT);
+		else if ((prot & IOMMU_CACHE) && (prot & IOMMU_SYS_CACHE_NWA))
+			pte |= (ARM_LPAE_MAIR_ATTR_IDX_ICACHE_OCACHE_NWA
+				<< ARM_LPAE_PTE_ATTRINDX_SHIFT);
+		/* IOMMU_CACHE + IOMMU_SYS_CACHE equivalent to IOMMU_CACHE */
 		else if (prot & IOMMU_CACHE)
 			pte |= (ARM_LPAE_MAIR_ATTR_IDX_CACHE
 				<< ARM_LPAE_PTE_ATTRINDX_SHIFT);
+		else if (prot & IOMMU_SYS_CACHE)
+			pte |= (ARM_LPAE_MAIR_ATTR_IDX_INC_OCACHE
+				<< ARM_LPAE_PTE_ATTRINDX_SHIFT);
+		else if (prot & IOMMU_SYS_CACHE_NWA)
+			pte |= (ARM_LPAE_MAIR_ATTR_IDX_INC_OCACHE_NWA
+				<< ARM_LPAE_PTE_ATTRINDX_SHIFT);
 	}
 
 	/*
@@ -891,7 +905,11 @@ arm_64_lpae_alloc_pgtable_s1(struct io_pgtable_cfg *cfg, void *cookie)
 	      (ARM_LPAE_MAIR_ATTR_DEVICE
 	       << ARM_LPAE_MAIR_ATTR_SHIFT(ARM_LPAE_MAIR_ATTR_IDX_DEV)) |
 	      (ARM_LPAE_MAIR_ATTR_INC_OWBRWA
-	       << ARM_LPAE_MAIR_ATTR_SHIFT(ARM_LPAE_MAIR_ATTR_IDX_INC_OCACHE));
+	       << ARM_LPAE_MAIR_ATTR_SHIFT(ARM_LPAE_MAIR_ATTR_IDX_INC_OCACHE)) |
+	      (ARM_LPAE_MAIR_ATTR_INC_OWBRANWA
+	       << ARM_LPAE_MAIR_ATTR_SHIFT(ARM_LPAE_MAIR_ATTR_IDX_INC_OCACHE_NWA)) |
+	      (ARM_LPAE_MAIR_ATTR_IWBRWA_OWBRANWA
+	       << ARM_LPAE_MAIR_ATTR_SHIFT(ARM_LPAE_MAIR_ATTR_IDX_ICACHE_OCACHE_NWA));
 
 	cfg->arm_lpae_s1_cfg.mair = reg;
 
diff --git a/drivers/iommu/iommu-sva-lib.c b/drivers/iommu/iommu-sva-lib.c
deleted file mode 100644
index 1065061..0000000
--- a/drivers/iommu/iommu-sva-lib.c
+++ /dev/null
@@ -1,71 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * Helpers for IOMMU drivers implementing SVA
- */
-#include <linux/mutex.h>
-#include <linux/sched/mm.h>
-
-#include "iommu-sva-lib.h"
-
-static DEFINE_MUTEX(iommu_sva_lock);
-static DECLARE_IOASID_SET(iommu_sva_pasid);
-
-/**
- * iommu_sva_alloc_pasid - Allocate a PASID for the mm
- * @mm: the mm
- * @min: minimum PASID value (inclusive)
- * @max: maximum PASID value (inclusive)
- *
- * Try to allocate a PASID for this mm, or take a reference to the existing one
- * provided it fits within the [@min, @max] range. On success the PASID is
- * available in mm->pasid and will be available for the lifetime of the mm.
- *
- * Returns 0 on success and < 0 on error.
- */
-int iommu_sva_alloc_pasid(struct mm_struct *mm, ioasid_t min, ioasid_t max)
-{
-	int ret = 0;
-	ioasid_t pasid;
-
-	if (min == INVALID_IOASID || max == INVALID_IOASID ||
-	    min == 0 || max < min)
-		return -EINVAL;
-
-	mutex_lock(&iommu_sva_lock);
-	/* Is a PASID already associated with this mm? */
-	if (pasid_valid(mm->pasid)) {
-		if (mm->pasid < min || mm->pasid >= max)
-			ret = -EOVERFLOW;
-		goto out;
-	}
-
-	pasid = ioasid_alloc(&iommu_sva_pasid, min, max, mm);
-	if (!pasid_valid(pasid))
-		ret = -ENOMEM;
-	else
-		mm_pasid_set(mm, pasid);
-out:
-	mutex_unlock(&iommu_sva_lock);
-	return ret;
-}
-EXPORT_SYMBOL_GPL(iommu_sva_alloc_pasid);
-
-/* ioasid_find getter() requires a void * argument */
-static bool __mmget_not_zero(void *mm)
-{
-	return mmget_not_zero(mm);
-}
-
-/**
- * iommu_sva_find() - Find mm associated to the given PASID
- * @pasid: Process Address Space ID assigned to the mm
- *
- * On success a reference to the mm is taken, and must be released with mmput().
- *
- * Returns the mm corresponding to this PASID, or an error if not found.
- */
-struct mm_struct *iommu_sva_find(ioasid_t pasid)
-{
-	return ioasid_find(&iommu_sva_pasid, pasid, __mmget_not_zero);
-}
-EXPORT_SYMBOL_GPL(iommu_sva_find);
diff --git a/drivers/iommu/iommu-sva.c b/drivers/iommu/iommu-sva.c
new file mode 100644
index 0000000..24bf9b2
--- /dev/null
+++ b/drivers/iommu/iommu-sva.c
@@ -0,0 +1,240 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Helpers for IOMMU drivers implementing SVA
+ */
+#include <linux/mutex.h>
+#include <linux/sched/mm.h>
+#include <linux/iommu.h>
+
+#include "iommu-sva.h"
+
+static DEFINE_MUTEX(iommu_sva_lock);
+static DECLARE_IOASID_SET(iommu_sva_pasid);
+
+/**
+ * iommu_sva_alloc_pasid - Allocate a PASID for the mm
+ * @mm: the mm
+ * @min: minimum PASID value (inclusive)
+ * @max: maximum PASID value (inclusive)
+ *
+ * Try to allocate a PASID for this mm, or take a reference to the existing one
+ * provided it fits within the [@min, @max] range. On success the PASID is
+ * available in mm->pasid and will be available for the lifetime of the mm.
+ *
+ * Returns 0 on success and < 0 on error.
+ */
+int iommu_sva_alloc_pasid(struct mm_struct *mm, ioasid_t min, ioasid_t max)
+{
+	int ret = 0;
+	ioasid_t pasid;
+
+	if (min == INVALID_IOASID || max == INVALID_IOASID ||
+	    min == 0 || max < min)
+		return -EINVAL;
+
+	mutex_lock(&iommu_sva_lock);
+	/* Is a PASID already associated with this mm? */
+	if (pasid_valid(mm->pasid)) {
+		if (mm->pasid < min || mm->pasid >= max)
+			ret = -EOVERFLOW;
+		goto out;
+	}
+
+	pasid = ioasid_alloc(&iommu_sva_pasid, min, max, mm);
+	if (!pasid_valid(pasid))
+		ret = -ENOMEM;
+	else
+		mm_pasid_set(mm, pasid);
+out:
+	mutex_unlock(&iommu_sva_lock);
+	return ret;
+}
+EXPORT_SYMBOL_GPL(iommu_sva_alloc_pasid);
+
+/* ioasid_find getter() requires a void * argument */
+static bool __mmget_not_zero(void *mm)
+{
+	return mmget_not_zero(mm);
+}
+
+/**
+ * iommu_sva_find() - Find mm associated to the given PASID
+ * @pasid: Process Address Space ID assigned to the mm
+ *
+ * On success a reference to the mm is taken, and must be released with mmput().
+ *
+ * Returns the mm corresponding to this PASID, or an error if not found.
+ */
+struct mm_struct *iommu_sva_find(ioasid_t pasid)
+{
+	return ioasid_find(&iommu_sva_pasid, pasid, __mmget_not_zero);
+}
+EXPORT_SYMBOL_GPL(iommu_sva_find);
+
+/**
+ * iommu_sva_bind_device() - Bind a process address space to a device
+ * @dev: the device
+ * @mm: the mm to bind, caller must hold a reference to mm_users
+ *
+ * Create a bond between device and address space, allowing the device to
+ * access the mm using the PASID returned by iommu_sva_get_pasid(). If a
+ * bond already exists between @device and @mm, an additional internal
+ * reference is taken. Caller must call iommu_sva_unbind_device()
+ * to release each reference.
+ *
+ * iommu_dev_enable_feature(dev, IOMMU_DEV_FEAT_SVA) must be called first, to
+ * initialize the required SVA features.
+ *
+ * On error, returns an ERR_PTR value.
+ */
+struct iommu_sva *iommu_sva_bind_device(struct device *dev, struct mm_struct *mm)
+{
+	struct iommu_domain *domain;
+	struct iommu_sva *handle;
+	ioasid_t max_pasids;
+	int ret;
+
+	max_pasids = dev->iommu->max_pasids;
+	if (!max_pasids)
+		return ERR_PTR(-EOPNOTSUPP);
+
+	/* Allocate mm->pasid if necessary. */
+	ret = iommu_sva_alloc_pasid(mm, 1, max_pasids - 1);
+	if (ret)
+		return ERR_PTR(ret);
+
+	handle = kzalloc(sizeof(*handle), GFP_KERNEL);
+	if (!handle)
+		return ERR_PTR(-ENOMEM);
+
+	mutex_lock(&iommu_sva_lock);
+	/* Search for an existing domain. */
+	domain = iommu_get_domain_for_dev_pasid(dev, mm->pasid,
+						IOMMU_DOMAIN_SVA);
+	if (IS_ERR(domain)) {
+		ret = PTR_ERR(domain);
+		goto out_unlock;
+	}
+
+	if (domain) {
+		domain->users++;
+		goto out;
+	}
+
+	/* Allocate a new domain and set it on device pasid. */
+	domain = iommu_sva_domain_alloc(dev, mm);
+	if (!domain) {
+		ret = -ENOMEM;
+		goto out_unlock;
+	}
+
+	ret = iommu_attach_device_pasid(domain, dev, mm->pasid);
+	if (ret)
+		goto out_free_domain;
+	domain->users = 1;
+out:
+	mutex_unlock(&iommu_sva_lock);
+	handle->dev = dev;
+	handle->domain = domain;
+
+	return handle;
+
+out_free_domain:
+	iommu_domain_free(domain);
+out_unlock:
+	mutex_unlock(&iommu_sva_lock);
+	kfree(handle);
+
+	return ERR_PTR(ret);
+}
+EXPORT_SYMBOL_GPL(iommu_sva_bind_device);
+
+/**
+ * iommu_sva_unbind_device() - Remove a bond created with iommu_sva_bind_device
+ * @handle: the handle returned by iommu_sva_bind_device()
+ *
+ * Put reference to a bond between device and address space. The device should
+ * not be issuing any more transaction for this PASID. All outstanding page
+ * requests for this PASID must have been flushed to the IOMMU.
+ */
+void iommu_sva_unbind_device(struct iommu_sva *handle)
+{
+	struct iommu_domain *domain = handle->domain;
+	ioasid_t pasid = domain->mm->pasid;
+	struct device *dev = handle->dev;
+
+	mutex_lock(&iommu_sva_lock);
+	if (--domain->users == 0) {
+		iommu_detach_device_pasid(domain, dev, pasid);
+		iommu_domain_free(domain);
+	}
+	mutex_unlock(&iommu_sva_lock);
+	kfree(handle);
+}
+EXPORT_SYMBOL_GPL(iommu_sva_unbind_device);
+
+u32 iommu_sva_get_pasid(struct iommu_sva *handle)
+{
+	struct iommu_domain *domain = handle->domain;
+
+	return domain->mm->pasid;
+}
+EXPORT_SYMBOL_GPL(iommu_sva_get_pasid);
+
+/*
+ * I/O page fault handler for SVA
+ */
+enum iommu_page_response_code
+iommu_sva_handle_iopf(struct iommu_fault *fault, void *data)
+{
+	vm_fault_t ret;
+	struct vm_area_struct *vma;
+	struct mm_struct *mm = data;
+	unsigned int access_flags = 0;
+	unsigned int fault_flags = FAULT_FLAG_REMOTE;
+	struct iommu_fault_page_request *prm = &fault->prm;
+	enum iommu_page_response_code status = IOMMU_PAGE_RESP_INVALID;
+
+	if (!(prm->flags & IOMMU_FAULT_PAGE_REQUEST_PASID_VALID))
+		return status;
+
+	if (!mmget_not_zero(mm))
+		return status;
+
+	mmap_read_lock(mm);
+
+	vma = find_extend_vma(mm, prm->addr);
+	if (!vma)
+		/* Unmapped area */
+		goto out_put_mm;
+
+	if (prm->perm & IOMMU_FAULT_PERM_READ)
+		access_flags |= VM_READ;
+
+	if (prm->perm & IOMMU_FAULT_PERM_WRITE) {
+		access_flags |= VM_WRITE;
+		fault_flags |= FAULT_FLAG_WRITE;
+	}
+
+	if (prm->perm & IOMMU_FAULT_PERM_EXEC) {
+		access_flags |= VM_EXEC;
+		fault_flags |= FAULT_FLAG_INSTRUCTION;
+	}
+
+	if (!(prm->perm & IOMMU_FAULT_PERM_PRIV))
+		fault_flags |= FAULT_FLAG_USER;
+
+	if (access_flags & ~vma->vm_flags)
+		/* Access fault */
+		goto out_put_mm;
+
+	ret = handle_mm_fault(vma, prm->addr, fault_flags, NULL);
+	status = ret & VM_FAULT_ERROR ? IOMMU_PAGE_RESP_INVALID :
+		IOMMU_PAGE_RESP_SUCCESS;
+
+out_put_mm:
+	mmap_read_unlock(mm);
+	mmput(mm);
+
+	return status;
+}
diff --git a/drivers/iommu/iommu-sva-lib.h b/drivers/iommu/iommu-sva.h
similarity index 82%
rename from drivers/iommu/iommu-sva-lib.h
rename to drivers/iommu/iommu-sva.h
index 8909ea1..7215a76 100644
--- a/drivers/iommu/iommu-sva-lib.h
+++ b/drivers/iommu/iommu-sva.h
@@ -2,8 +2,8 @@
 /*
  * SVA library for IOMMU drivers
  */
-#ifndef _IOMMU_SVA_LIB_H
-#define _IOMMU_SVA_LIB_H
+#ifndef _IOMMU_SVA_H
+#define _IOMMU_SVA_H
 
 #include <linux/ioasid.h>
 #include <linux/mm_types.h>
@@ -26,6 +26,8 @@ int iopf_queue_flush_dev(struct device *dev);
 struct iopf_queue *iopf_queue_alloc(const char *name);
 void iopf_queue_free(struct iopf_queue *queue);
 int iopf_queue_discard_partial(struct iopf_queue *queue);
+enum iommu_page_response_code
+iommu_sva_handle_iopf(struct iommu_fault *fault, void *data);
 
 #else /* CONFIG_IOMMU_SVA */
 static inline int iommu_queue_iopf(struct iommu_fault *fault, void *cookie)
@@ -63,5 +65,11 @@ static inline int iopf_queue_discard_partial(struct iopf_queue *queue)
 {
 	return -ENODEV;
 }
+
+static inline enum iommu_page_response_code
+iommu_sva_handle_iopf(struct iommu_fault *fault, void *data)
+{
+	return IOMMU_PAGE_RESP_INVALID;
+}
 #endif /* CONFIG_IOMMU_SVA */
-#endif /* _IOMMU_SVA_LIB_H */
+#endif /* _IOMMU_SVA_H */
diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c
index 2bcd1f2..3355e3b 100644
--- a/drivers/iommu/iommu.c
+++ b/drivers/iommu/iommu.c
@@ -21,6 +21,7 @@
 #include <linux/idr.h>
 #include <linux/err.h>
 #include <linux/pci.h>
+#include <linux/pci-ats.h>
 #include <linux/bitops.h>
 #include <linux/platform_device.h>
 #include <linux/property.h>
@@ -28,9 +29,12 @@
 #include <linux/module.h>
 #include <linux/cc_platform.h>
 #include <trace/events/iommu.h>
+#include <linux/sched/mm.h>
 
 #include "dma-iommu.h"
 
+#include "iommu-sva.h"
+
 static struct kset *iommu_group_kset;
 static DEFINE_IDA(iommu_group_ida);
 
@@ -42,6 +46,7 @@ struct iommu_group {
 	struct kobject kobj;
 	struct kobject *devices_kobj;
 	struct list_head devices;
+	struct xarray pasid_array;
 	struct mutex mutex;
 	void *iommu_data;
 	void (*iommu_data_release)(void *iommu_data);
@@ -278,6 +283,24 @@ static void dev_iommu_free(struct device *dev)
 	kfree(param);
 }
 
+static u32 dev_iommu_get_max_pasids(struct device *dev)
+{
+	u32 max_pasids = 0, bits = 0;
+	int ret;
+
+	if (dev_is_pci(dev)) {
+		ret = pci_max_pasids(to_pci_dev(dev));
+		if (ret > 0)
+			max_pasids = ret;
+	} else {
+		ret = device_property_read_u32(dev, "pasid-num-bits", &bits);
+		if (!ret)
+			max_pasids = 1UL << bits;
+	}
+
+	return min_t(u32, max_pasids, dev->iommu->iommu_dev->max_pasids);
+}
+
 static int __iommu_probe_device(struct device *dev, struct list_head *group_list)
 {
 	const struct iommu_ops *ops = dev->bus->iommu_ops;
@@ -313,6 +336,7 @@ static int __iommu_probe_device(struct device *dev, struct list_head *group_list
 	}
 
 	dev->iommu->iommu_dev = iommu_dev;
+	dev->iommu->max_pasids = dev_iommu_get_max_pasids(dev);
 
 	group = iommu_group_get_for_dev(dev);
 	if (IS_ERR(group)) {
@@ -719,6 +743,7 @@ struct iommu_group *iommu_group_alloc(void)
 	mutex_init(&group->mutex);
 	INIT_LIST_HEAD(&group->devices);
 	INIT_LIST_HEAD(&group->entry);
+	xa_init(&group->pasid_array);
 
 	ret = ida_alloc(&iommu_group_ida, GFP_KERNEL);
 	if (ret < 0) {
@@ -1937,6 +1962,8 @@ EXPORT_SYMBOL_GPL(iommu_domain_alloc);
 
 void iommu_domain_free(struct iommu_domain *domain)
 {
+	if (domain->type == IOMMU_DOMAIN_SVA)
+		mmdrop(domain->mm);
 	iommu_put_dma_cookie(domain);
 	domain->ops->free(domain);
 }
@@ -2765,98 +2792,6 @@ int iommu_dev_disable_feature(struct device *dev, enum iommu_dev_features feat)
 }
 EXPORT_SYMBOL_GPL(iommu_dev_disable_feature);
 
-/**
- * iommu_sva_bind_device() - Bind a process address space to a device
- * @dev: the device
- * @mm: the mm to bind, caller must hold a reference to it
- * @drvdata: opaque data pointer to pass to bind callback
- *
- * Create a bond between device and address space, allowing the device to access
- * the mm using the returned PASID. If a bond already exists between @device and
- * @mm, it is returned and an additional reference is taken. Caller must call
- * iommu_sva_unbind_device() to release each reference.
- *
- * iommu_dev_enable_feature(dev, IOMMU_DEV_FEAT_SVA) must be called first, to
- * initialize the required SVA features.
- *
- * On error, returns an ERR_PTR value.
- */
-struct iommu_sva *
-iommu_sva_bind_device(struct device *dev, struct mm_struct *mm, void *drvdata)
-{
-	struct iommu_group *group;
-	struct iommu_sva *handle = ERR_PTR(-EINVAL);
-	const struct iommu_ops *ops = dev_iommu_ops(dev);
-
-	if (!ops->sva_bind)
-		return ERR_PTR(-ENODEV);
-
-	group = iommu_group_get(dev);
-	if (!group)
-		return ERR_PTR(-ENODEV);
-
-	/* Ensure device count and domain don't change while we're binding */
-	mutex_lock(&group->mutex);
-
-	/*
-	 * To keep things simple, SVA currently doesn't support IOMMU groups
-	 * with more than one device. Existing SVA-capable systems are not
-	 * affected by the problems that required IOMMU groups (lack of ACS
-	 * isolation, device ID aliasing and other hardware issues).
-	 */
-	if (iommu_group_device_count(group) != 1)
-		goto out_unlock;
-
-	handle = ops->sva_bind(dev, mm, drvdata);
-
-out_unlock:
-	mutex_unlock(&group->mutex);
-	iommu_group_put(group);
-
-	return handle;
-}
-EXPORT_SYMBOL_GPL(iommu_sva_bind_device);
-
-/**
- * iommu_sva_unbind_device() - Remove a bond created with iommu_sva_bind_device
- * @handle: the handle returned by iommu_sva_bind_device()
- *
- * Put reference to a bond between device and address space. The device should
- * not be issuing any more transaction for this PASID. All outstanding page
- * requests for this PASID must have been flushed to the IOMMU.
- */
-void iommu_sva_unbind_device(struct iommu_sva *handle)
-{
-	struct iommu_group *group;
-	struct device *dev = handle->dev;
-	const struct iommu_ops *ops = dev_iommu_ops(dev);
-
-	if (!ops->sva_unbind)
-		return;
-
-	group = iommu_group_get(dev);
-	if (!group)
-		return;
-
-	mutex_lock(&group->mutex);
-	ops->sva_unbind(handle);
-	mutex_unlock(&group->mutex);
-
-	iommu_group_put(group);
-}
-EXPORT_SYMBOL_GPL(iommu_sva_unbind_device);
-
-u32 iommu_sva_get_pasid(struct iommu_sva *handle)
-{
-	const struct iommu_ops *ops = dev_iommu_ops(handle->dev);
-
-	if (!ops->sva_get_pasid)
-		return IOMMU_PASID_INVALID;
-
-	return ops->sva_get_pasid(handle);
-}
-EXPORT_SYMBOL_GPL(iommu_sva_get_pasid);
-
 /*
  * Changes the default domain of an iommu group that has *only* one device
  *
@@ -3126,7 +3061,8 @@ int iommu_device_use_default_domain(struct device *dev)
 
 	mutex_lock(&group->mutex);
 	if (group->owner_cnt) {
-		if (group->owner || !iommu_is_default_domain(group)) {
+		if (group->owner || !iommu_is_default_domain(group) ||
+		    !xa_empty(&group->pasid_array)) {
 			ret = -EBUSY;
 			goto unlock_out;
 		}
@@ -3157,7 +3093,7 @@ void iommu_device_unuse_default_domain(struct device *dev)
 		return;
 
 	mutex_lock(&group->mutex);
-	if (!WARN_ON(!group->owner_cnt))
+	if (!WARN_ON(!group->owner_cnt || !xa_empty(&group->pasid_array)))
 		group->owner_cnt--;
 
 	mutex_unlock(&group->mutex);
@@ -3205,7 +3141,8 @@ int iommu_group_claim_dma_owner(struct iommu_group *group, void *owner)
 		ret = -EPERM;
 		goto unlock_out;
 	} else {
-		if (group->domain && group->domain != group->default_domain) {
+		if ((group->domain && group->domain != group->default_domain) ||
+		    !xa_empty(&group->pasid_array)) {
 			ret = -EBUSY;
 			goto unlock_out;
 		}
@@ -3239,7 +3176,8 @@ void iommu_group_release_dma_owner(struct iommu_group *group)
 	int ret;
 
 	mutex_lock(&group->mutex);
-	if (WARN_ON(!group->owner_cnt || !group->owner))
+	if (WARN_ON(!group->owner_cnt || !group->owner ||
+		    !xa_empty(&group->pasid_array)))
 		goto unlock_out;
 
 	group->owner_cnt = 0;
@@ -3270,3 +3208,150 @@ bool iommu_group_dma_owner_claimed(struct iommu_group *group)
 	return user;
 }
 EXPORT_SYMBOL_GPL(iommu_group_dma_owner_claimed);
+
+static int __iommu_set_group_pasid(struct iommu_domain *domain,
+				   struct iommu_group *group, ioasid_t pasid)
+{
+	struct group_device *device;
+	int ret = 0;
+
+	list_for_each_entry(device, &group->devices, list) {
+		ret = domain->ops->set_dev_pasid(domain, device->dev, pasid);
+		if (ret)
+			break;
+	}
+
+	return ret;
+}
+
+static void __iommu_remove_group_pasid(struct iommu_group *group,
+				       ioasid_t pasid)
+{
+	struct group_device *device;
+	const struct iommu_ops *ops;
+
+	list_for_each_entry(device, &group->devices, list) {
+		ops = dev_iommu_ops(device->dev);
+		ops->remove_dev_pasid(device->dev, pasid);
+	}
+}
+
+/*
+ * iommu_attach_device_pasid() - Attach a domain to pasid of device
+ * @domain: the iommu domain.
+ * @dev: the attached device.
+ * @pasid: the pasid of the device.
+ *
+ * Return: 0 on success, or an error.
+ */
+int iommu_attach_device_pasid(struct iommu_domain *domain,
+			      struct device *dev, ioasid_t pasid)
+{
+	struct iommu_group *group;
+	void *curr;
+	int ret;
+
+	if (!domain->ops->set_dev_pasid)
+		return -EOPNOTSUPP;
+
+	group = iommu_group_get(dev);
+	if (!group)
+		return -ENODEV;
+
+	mutex_lock(&group->mutex);
+	curr = xa_cmpxchg(&group->pasid_array, pasid, NULL, domain, GFP_KERNEL);
+	if (curr) {
+		ret = xa_err(curr) ? : -EBUSY;
+		goto out_unlock;
+	}
+
+	ret = __iommu_set_group_pasid(domain, group, pasid);
+	if (ret) {
+		__iommu_remove_group_pasid(group, pasid);
+		xa_erase(&group->pasid_array, pasid);
+	}
+out_unlock:
+	mutex_unlock(&group->mutex);
+	iommu_group_put(group);
+
+	return ret;
+}
+EXPORT_SYMBOL_GPL(iommu_attach_device_pasid);
+
+/*
+ * iommu_detach_device_pasid() - Detach the domain from pasid of device
+ * @domain: the iommu domain.
+ * @dev: the attached device.
+ * @pasid: the pasid of the device.
+ *
+ * The @domain must have been attached to @pasid of the @dev with
+ * iommu_attach_device_pasid().
+ */
+void iommu_detach_device_pasid(struct iommu_domain *domain, struct device *dev,
+			       ioasid_t pasid)
+{
+	struct iommu_group *group = iommu_group_get(dev);
+
+	mutex_lock(&group->mutex);
+	__iommu_remove_group_pasid(group, pasid);
+	WARN_ON(xa_erase(&group->pasid_array, pasid) != domain);
+	mutex_unlock(&group->mutex);
+
+	iommu_group_put(group);
+}
+EXPORT_SYMBOL_GPL(iommu_detach_device_pasid);
+
+/*
+ * iommu_get_domain_for_dev_pasid() - Retrieve domain for @pasid of @dev
+ * @dev: the queried device
+ * @pasid: the pasid of the device
+ * @type: matched domain type, 0 for any match
+ *
+ * This is a variant of iommu_get_domain_for_dev(). It returns the existing
+ * domain attached to pasid of a device. Callers must hold a lock around this
+ * function, and both iommu_attach/detach_dev_pasid() whenever a domain of
+ * type is being manipulated. This API does not internally resolve races with
+ * attach/detach.
+ *
+ * Return: attached domain on success, NULL otherwise.
+ */
+struct iommu_domain *iommu_get_domain_for_dev_pasid(struct device *dev,
+						    ioasid_t pasid,
+						    unsigned int type)
+{
+	struct iommu_domain *domain;
+	struct iommu_group *group;
+
+	group = iommu_group_get(dev);
+	if (!group)
+		return NULL;
+
+	xa_lock(&group->pasid_array);
+	domain = xa_load(&group->pasid_array, pasid);
+	if (type && domain && domain->type != type)
+		domain = ERR_PTR(-EBUSY);
+	xa_unlock(&group->pasid_array);
+	iommu_group_put(group);
+
+	return domain;
+}
+EXPORT_SYMBOL_GPL(iommu_get_domain_for_dev_pasid);
+
+struct iommu_domain *iommu_sva_domain_alloc(struct device *dev,
+					    struct mm_struct *mm)
+{
+	const struct iommu_ops *ops = dev_iommu_ops(dev);
+	struct iommu_domain *domain;
+
+	domain = ops->domain_alloc(IOMMU_DOMAIN_SVA);
+	if (!domain)
+		return NULL;
+
+	domain->type = IOMMU_DOMAIN_SVA;
+	mmgrab(mm);
+	domain->mm = mm;
+	domain->iopf_handler = iommu_sva_handle_iopf;
+	domain->fault_data = mm;
+
+	return domain;
+}
diff --git a/drivers/iommu/iova.c b/drivers/iommu/iova.c
index fe452ce..1cf7d0f 100644
--- a/drivers/iommu/iova.c
+++ b/drivers/iommu/iova.c
@@ -11,6 +11,7 @@
 #include <linux/smp.h>
 #include <linux/bitops.h>
 #include <linux/cpu.h>
+#include <trace/hooks/iommu.h>
 
 /* The anchor node sits above the top of the usable address space */
 #define IOVA_ANCHOR	~0UL
@@ -70,6 +71,7 @@ init_iova_domain(struct iova_domain *iovad, unsigned long granule,
 	iovad->anchor.pfn_lo = iovad->anchor.pfn_hi = IOVA_ANCHOR;
 	rb_link_node(&iovad->anchor.node, NULL, &iovad->rbroot.rb_node);
 	rb_insert_color(&iovad->anchor.node, &iovad->rbroot);
+	android_init_vendor_data(iovad, 1);
 }
 EXPORT_SYMBOL_GPL(init_iova_domain);
 
@@ -186,8 +188,11 @@ static int __alloc_and_insert_iova_range(struct iova_domain *iovad,
 	unsigned long align_mask = ~0UL;
 	unsigned long high_pfn = limit_pfn, low_pfn = iovad->start_pfn;
 
-	if (size_aligned)
-		align_mask <<= fls_long(size - 1);
+	if (size_aligned) {
+		unsigned long shift = fls_long(size - 1);
+		trace_android_rvh_iommu_limit_align_shift(iovad, size, &shift);
+		align_mask <<= shift;
+	}
 
 	/* Walk the tree backwards */
 	spin_lock_irqsave(&iovad->iova_rbtree_lock, flags);
@@ -316,14 +321,18 @@ alloc_iova(struct iova_domain *iovad, unsigned long size,
 	bool size_aligned)
 {
 	struct iova *new_iova;
-	int ret;
+	int ret = -1;
 
 	new_iova = alloc_iova_mem();
 	if (!new_iova)
 		return NULL;
 
-	ret = __alloc_and_insert_iova_range(iovad, size, limit_pfn + 1,
-			new_iova, size_aligned);
+	trace_android_rvh_iommu_alloc_insert_iova(iovad, size, limit_pfn + 1,
+			new_iova, size_aligned, &ret);
+	if (ret) {
+		ret = __alloc_and_insert_iova_range(iovad, size,
+			limit_pfn + 1, new_iova, size_aligned);
+	}
 
 	if (ret) {
 		free_iova_mem(new_iova);
diff --git a/drivers/irqchip/Kconfig b/drivers/irqchip/Kconfig
index a29a426..7ef9f5e 100644
--- a/drivers/irqchip/Kconfig
+++ b/drivers/irqchip/Kconfig
@@ -35,7 +35,6 @@
 	select IRQ_DOMAIN_HIERARCHY
 	select PARTITION_PERCPU
 	select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
-	select HAVE_ARM_SMCCC_DISCOVERY
 
 config ARM_GIC_V3_ITS
 	bool
diff --git a/drivers/irqchip/irq-gic-v3.c b/drivers/irqchip/irq-gic-v3.c
index 11f7c53..7e981e0 100644
--- a/drivers/irqchip/irq-gic-v3.c
+++ b/drivers/irqchip/irq-gic-v3.c
@@ -18,14 +18,14 @@
 #include <linux/percpu.h>
 #include <linux/refcount.h>
 #include <linux/slab.h>
+#include <linux/syscore_ops.h>
+#include <trace/hooks/gic_v3.h>
+#include <trace/hooks/gic.h>
 
 #include <linux/irqchip.h>
 #include <linux/irqchip/arm-gic-common.h>
 #include <linux/irqchip/arm-gic-v3.h>
 #include <linux/irqchip/irq-partition-percpu.h>
-#include <linux/bitfield.h>
-#include <linux/bits.h>
-#include <linux/arm-smccc.h>
 
 #include <asm/cputype.h>
 #include <asm/exception.h>
@@ -48,26 +48,7 @@ struct redist_region {
 	bool			single_redist;
 };
 
-struct gic_chip_data {
-	struct fwnode_handle	*fwnode;
-	phys_addr_t		dist_phys_base;
-	void __iomem		*dist_base;
-	struct redist_region	*redist_regions;
-	struct rdists		rdists;
-	struct irq_domain	*domain;
-	u64			redist_stride;
-	u32			nr_redist_regions;
-	u64			flags;
-	bool			has_rss;
-	unsigned int		ppi_nr;
-	struct partition_desc	**ppi_descs;
-};
-
-#define T241_CHIPS_MAX		4
-static void __iomem *t241_dist_base_alias[T241_CHIPS_MAX] __read_mostly;
-static DEFINE_STATIC_KEY_FALSE(gic_nvidia_t241_erratum);
-
-static struct gic_chip_data gic_data __read_mostly;
+static struct gic_chip_data_v3 gic_data __read_mostly;
 static DEFINE_STATIC_KEY_TRUE(supports_deactivate_key);
 
 #define GIC_ID_NR	(1U << GICD_TYPER_ID_BITS(gic_data.rdists.gicd_typer))
@@ -196,39 +177,6 @@ static inline bool gic_irq_in_rdist(struct irq_data *d)
 	}
 }
 
-static inline void __iomem *gic_dist_base_alias(struct irq_data *d)
-{
-	if (static_branch_unlikely(&gic_nvidia_t241_erratum)) {
-		irq_hw_number_t hwirq = irqd_to_hwirq(d);
-		u32 chip;
-
-		/*
-		 * For the erratum T241-FABRIC-4, read accesses to GICD_In{E}
-		 * registers are directed to the chip that owns the SPI. The
-		 * the alias region can also be used for writes to the
-		 * GICD_In{E} except GICD_ICENABLERn. Each chip has support
-		 * for 320 {E}SPIs. Mappings for all 4 chips:
-		 *    Chip0 = 32-351
-		 *    Chip1 = 352-671
-		 *    Chip2 = 672-991
-		 *    Chip3 = 4096-4415
-		 */
-		switch (__get_intid_range(hwirq)) {
-		case SPI_RANGE:
-			chip = (hwirq - 32) / 320;
-			break;
-		case ESPI_RANGE:
-			chip = 3;
-			break;
-		default:
-			unreachable();
-		}
-		return t241_dist_base_alias[chip];
-	}
-
-	return gic_data.dist_base;
-}
-
 static inline void __iomem *gic_dist_base(struct irq_data *d)
 {
 	switch (get_intid_range(d)) {
@@ -264,10 +212,11 @@ static void gic_do_wait_for_rwp(void __iomem *base, u32 bit)
 }
 
 /* Wait for completion of a distributor change */
-static void gic_dist_wait_for_rwp(void)
+void gic_v3_dist_wait_for_rwp(void)
 {
 	gic_do_wait_for_rwp(gic_data.dist_base, GICD_CTLR_RWP);
 }
+EXPORT_SYMBOL_GPL(gic_v3_dist_wait_for_rwp);
 
 /* Wait for completion of a redistributor change */
 static void gic_redist_wait_for_rwp(void)
@@ -387,7 +336,7 @@ static int gic_peek_irq(struct irq_data *d, u32 offset)
 	if (gic_irq_in_rdist(d))
 		base = gic_data_rdist_sgi_base();
 	else
-		base = gic_dist_base_alias(d);
+		base = gic_data.dist_base;
 
 	return !!(readl_relaxed(base + offset + (index / 32) * 4) & mask);
 }
@@ -414,7 +363,7 @@ static void gic_mask_irq(struct irq_data *d)
 	if (gic_irq_in_rdist(d))
 		gic_redist_wait_for_rwp();
 	else
-		gic_dist_wait_for_rwp();
+		gic_v3_dist_wait_for_rwp();
 }
 
 static void gic_eoimode1_mask_irq(struct irq_data *d)
@@ -638,7 +587,7 @@ static int gic_set_type(struct irq_data *d, unsigned int type)
 	if (gic_irq_in_rdist(d))
 		base = gic_data_rdist_sgi_base();
 	else
-		base = gic_dist_base_alias(d);
+		base = gic_data.dist_base;
 
 	offset = convert_offset_index(d, GICD_ICFGR, &index);
 
@@ -870,7 +819,7 @@ static bool gic_has_group0(void)
 	return val != 0;
 }
 
-static void __init gic_dist_init(void)
+void gic_v3_dist_init(void)
 {
 	unsigned int i;
 	u64 affinity;
@@ -879,7 +828,7 @@ static void __init gic_dist_init(void)
 
 	/* Disable the distributor */
 	writel_relaxed(0, base + GICD_CTLR);
-	gic_dist_wait_for_rwp();
+	gic_v3_dist_wait_for_rwp();
 
 	/*
 	 * Configure SPIs as non-secure Group-1. This will only matter
@@ -916,19 +865,24 @@ static void __init gic_dist_init(void)
 
 	/* Enable distributor with ARE, Group1, and wait for it to drain */
 	writel_relaxed(val, base + GICD_CTLR);
-	gic_dist_wait_for_rwp();
+	gic_v3_dist_wait_for_rwp();
 
 	/*
 	 * Set all global interrupts to the boot CPU only. ARE must be
 	 * enabled.
 	 */
 	affinity = gic_mpidr_to_affinity(cpu_logical_map(smp_processor_id()));
-	for (i = 32; i < GIC_LINE_NR; i++)
+	for (i = 32; i < GIC_LINE_NR; i++) {
+		trace_android_vh_gic_v3_affinity_init(i, GICD_IROUTER, &affinity);
 		gic_write_irouter(affinity, base + GICD_IROUTER + i * 8);
+	}
 
-	for (i = 0; i < GIC_ESPI_NR; i++)
+	for (i = 0; i < GIC_ESPI_NR; i++) {
+		trace_android_vh_gic_v3_affinity_init(i, GICD_IROUTERnE, &affinity);
 		gic_write_irouter(affinity, base + GICD_IROUTERnE + i * 8);
+	}
 }
+EXPORT_SYMBOL_GPL(gic_v3_dist_init);
 
 static int gic_iterate_rdists(int (*fn)(struct redist_region *, void __iomem *))
 {
@@ -1224,7 +1178,7 @@ static int gic_dist_supports_lpis(void)
 		!gicv3_nolpi);
 }
 
-static void gic_cpu_init(void)
+void gic_v3_cpu_init(void)
 {
 	void __iomem *rbase;
 	int i;
@@ -1251,6 +1205,7 @@ static void gic_cpu_init(void)
 	/* initialise system registers */
 	gic_cpu_sys_reg_init();
 }
+EXPORT_SYMBOL_GPL(gic_v3_cpu_init);
 
 #ifdef CONFIG_SMP
 
@@ -1259,7 +1214,7 @@ static void gic_cpu_init(void)
 
 static int gic_starting_cpu(unsigned int cpu)
 {
-	gic_cpu_init();
+	gic_v3_cpu_init();
 
 	if (gic_dist_supports_lpis())
 		its_cpu_init();
@@ -1389,6 +1344,9 @@ static int gic_set_affinity(struct irq_data *d, const struct cpumask *mask_val,
 	reg = gic_dist_base(d) + offset + (index * 8);
 	val = gic_mpidr_to_affinity(cpu_logical_map(cpu));
 
+	trace_android_rvh_gic_v3_set_affinity(d, mask_val, &val, force, gic_dist_base(d),
+					gic_data.redist_regions[0].redist_base,
+					gic_data.redist_stride);
 	gic_write_irouter(val, reg);
 
 	/*
@@ -1441,6 +1399,36 @@ static void gic_cpu_pm_init(void)
 static inline void gic_cpu_pm_init(void) { }
 #endif /* CONFIG_CPU_PM */
 
+#ifdef CONFIG_PM
+void gic_v3_resume(void)
+{
+	trace_android_vh_gic_resume(&gic_data);
+}
+EXPORT_SYMBOL_GPL(gic_v3_resume);
+
+static int gic_v3_suspend(void)
+{
+	trace_android_vh_gic_v3_suspend(&gic_data);
+	return 0;
+}
+
+static struct syscore_ops gic_syscore_ops = {
+	.resume = gic_v3_resume,
+	.suspend = gic_v3_suspend,
+};
+
+static void gic_syscore_init(void)
+{
+	register_syscore_ops(&gic_syscore_ops);
+}
+
+#else
+static inline void gic_syscore_init(void) { }
+void gic_v3_resume(void) { }
+static int gic_v3_suspend(void) { return 0; }
+#endif
+
+
 static struct irq_chip gic_chip = {
 	.name			= "GICv3",
 	.irq_mask		= gic_mask_irq,
@@ -1724,7 +1712,7 @@ static const struct irq_domain_ops partition_domain_ops = {
 
 static bool gic_enable_quirk_msm8996(void *data)
 {
-	struct gic_chip_data *d = data;
+	struct gic_chip_data_v3 *d = data;
 
 	d->flags |= FLAGS_WORKAROUND_GICR_WAKER_MSM8996;
 
@@ -1733,7 +1721,7 @@ static bool gic_enable_quirk_msm8996(void *data)
 
 static bool gic_enable_quirk_mtk_gicr(void *data)
 {
-	struct gic_chip_data *d = data;
+	struct gic_chip_data_v3 *d = data;
 
 	d->flags |= FLAGS_WORKAROUND_MTK_GICR_SAVE;
 
@@ -1742,7 +1730,7 @@ static bool gic_enable_quirk_mtk_gicr(void *data)
 
 static bool gic_enable_quirk_cavium_38539(void *data)
 {
-	struct gic_chip_data *d = data;
+	struct gic_chip_data_v3 *d = data;
 
 	d->flags |= FLAGS_WORKAROUND_CAVIUM_ERRATUM_38539;
 
@@ -1751,7 +1739,7 @@ static bool gic_enable_quirk_cavium_38539(void *data)
 
 static bool gic_enable_quirk_hip06_07(void *data)
 {
-	struct gic_chip_data *d = data;
+	struct gic_chip_data_v3 *d = data;
 
 	/*
 	 * HIP06 GICD_IIDR clashes with GIC-600 product number (despite
@@ -1769,43 +1757,6 @@ static bool gic_enable_quirk_hip06_07(void *data)
 	return false;
 }
 
-#define T241_CHIPN_MASK		GENMASK_ULL(45, 44)
-#define T241_CHIP_GICDA_OFFSET	0x1580000
-#define SMCCC_SOC_ID_T241	0x036b0241
-
-static bool gic_enable_quirk_nvidia_t241(void *data)
-{
-	s32 soc_id = arm_smccc_get_soc_id_version();
-	unsigned long chip_bmask = 0;
-	phys_addr_t phys;
-	u32 i;
-
-	/* Check JEP106 code for NVIDIA T241 chip (036b:0241) */
-	if ((soc_id < 0) || (soc_id != SMCCC_SOC_ID_T241))
-		return false;
-
-	/* Find the chips based on GICR regions PHYS addr */
-	for (i = 0; i < gic_data.nr_redist_regions; i++) {
-		chip_bmask |= BIT(FIELD_GET(T241_CHIPN_MASK,
-				  (u64)gic_data.redist_regions[i].phys_base));
-	}
-
-	if (hweight32(chip_bmask) < 3)
-		return false;
-
-	/* Setup GICD alias regions */
-	for (i = 0; i < ARRAY_SIZE(t241_dist_base_alias); i++) {
-		if (chip_bmask & BIT(i)) {
-			phys = gic_data.dist_phys_base + T241_CHIP_GICDA_OFFSET;
-			phys |= FIELD_PREP(T241_CHIPN_MASK, i);
-			t241_dist_base_alias[i] = ioremap(phys, SZ_64K);
-			WARN_ON_ONCE(!t241_dist_base_alias[i]);
-		}
-	}
-	static_branch_enable(&gic_nvidia_t241_erratum);
-	return true;
-}
-
 static const struct gic_quirk gic_quirks[] = {
 	{
 		.desc	= "GICv3: Qualcomm MSM8996 broken firmware",
@@ -1843,12 +1794,6 @@ static const struct gic_quirk gic_quirks[] = {
 		.init	= gic_enable_quirk_cavium_38539,
 	},
 	{
-		.desc	= "GICv3: NVIDIA erratum T241-FABRIC-4",
-		.iidr	= 0x0402043b,
-		.mask	= 0xffffffff,
-		.init	= gic_enable_quirk_nvidia_t241,
-	},
-	{
 	}
 };
 
@@ -1920,8 +1865,7 @@ static void gic_enable_nmi_support(void)
 		gic_chip.flags |= IRQCHIP_SUPPORTS_NMI;
 }
 
-static int __init gic_init_bases(phys_addr_t dist_phys_base,
-				 void __iomem *dist_base,
+static int __init gic_init_bases(void __iomem *dist_base,
 				 struct redist_region *rdist_regs,
 				 u32 nr_redist_regions,
 				 u64 redist_stride,
@@ -1937,7 +1881,6 @@ static int __init gic_init_bases(phys_addr_t dist_phys_base,
 		pr_info("GIC: Using split EOI/Deactivate mode\n");
 
 	gic_data.fwnode = handle;
-	gic_data.dist_phys_base = dist_phys_base;
 	gic_data.dist_base = dist_base;
 	gic_data.redist_regions = rdist_regs;
 	gic_data.nr_redist_regions = nr_redist_regions;
@@ -1965,13 +1908,10 @@ static int __init gic_init_bases(phys_addr_t dist_phys_base,
 	gic_data.domain = irq_domain_create_tree(handle, &gic_irq_domain_ops,
 						 &gic_data);
 	gic_data.rdists.rdist = alloc_percpu(typeof(*gic_data.rdists.rdist));
-	if (!static_branch_unlikely(&gic_nvidia_t241_erratum)) {
-		/* Disable GICv4.x features for the erratum T241-FABRIC-4 */
-		gic_data.rdists.has_rvpeid = true;
-		gic_data.rdists.has_vlpis = true;
-		gic_data.rdists.has_direct_lpi = true;
-		gic_data.rdists.has_vpend_valid_dirty = true;
-	}
+	gic_data.rdists.has_rvpeid = true;
+	gic_data.rdists.has_vlpis = true;
+	gic_data.rdists.has_direct_lpi = true;
+	gic_data.rdists.has_vpend_valid_dirty = true;
 
 	if (WARN_ON(!gic_data.domain) || WARN_ON(!gic_data.rdists.rdist)) {
 		err = -ENOMEM;
@@ -1992,10 +1932,11 @@ static int __init gic_init_bases(phys_addr_t dist_phys_base,
 
 	gic_update_rdist_properties();
 
-	gic_dist_init();
-	gic_cpu_init();
+	gic_v3_dist_init();
+	gic_v3_cpu_init();
 	gic_smp_init();
 	gic_cpu_pm_init();
+	gic_syscore_init();
 
 	if (gic_dist_supports_lpis()) {
 		its_init(handle, &gic_data.rdists, gic_data.domain);
@@ -2177,7 +2118,6 @@ static void __iomem *gic_of_iomap(struct device_node *node, int idx,
 
 static int __init gic_of_init(struct device_node *node, struct device_node *parent)
 {
-	phys_addr_t dist_phys_base;
 	void __iomem *dist_base;
 	struct redist_region *rdist_regs;
 	struct resource res;
@@ -2191,8 +2131,6 @@ static int __init gic_of_init(struct device_node *node, struct device_node *pare
 		return PTR_ERR(dist_base);
 	}
 
-	dist_phys_base = res.start;
-
 	err = gic_validate_dist_version(dist_base);
 	if (err) {
 		pr_err("%pOF: no distributor detected, giving up\n", node);
@@ -2224,8 +2162,8 @@ static int __init gic_of_init(struct device_node *node, struct device_node *pare
 
 	gic_enable_of_quirks(node, gic_quirks, &gic_data);
 
-	err = gic_init_bases(dist_phys_base, dist_base, rdist_regs,
-			     nr_redist_regions, redist_stride, &node->fwnode);
+	err = gic_init_bases(dist_base, rdist_regs, nr_redist_regions,
+			     redist_stride, &node->fwnode);
 	if (err)
 		goto out_unmap_rdist;
 
@@ -2541,9 +2479,8 @@ gic_acpi_init(union acpi_subtable_headers *header, const unsigned long end)
 		goto out_redist_unmap;
 	}
 
-	err = gic_init_bases(dist->base_address, acpi_data.dist_base,
-			     acpi_data.redist_regs, acpi_data.nr_redist_regions,
-			     0, gsi_domain_handle);
+	err = gic_init_bases(acpi_data.dist_base, acpi_data.redist_regs,
+			     acpi_data.nr_redist_regions, 0, gsi_domain_handle);
 	if (err)
 		goto out_fwhandle_free;
 
diff --git a/drivers/irqchip/irq-gic.c b/drivers/irqchip/irq-gic.c
index 4c7bae0..98c6778 100644
--- a/drivers/irqchip/irq-gic.c
+++ b/drivers/irqchip/irq-gic.c
@@ -39,6 +39,7 @@
 #include <linux/irqchip.h>
 #include <linux/irqchip/chained_irq.h>
 #include <linux/irqchip/arm-gic.h>
+#include <trace/hooks/gic.h>
 
 #include <asm/cputype.h>
 #include <asm/irq.h>
@@ -816,6 +817,8 @@ static int gic_set_affinity(struct irq_data *d, const struct cpumask *mask_val,
 		writeb_relaxed(gic_cpu_map[cpu], reg);
 	irq_data_update_effective_affinity(d, cpumask_of(cpu));
 
+	trace_android_vh_gic_set_affinity(d, mask_val, force, gic_cpu_map, reg);
+
 	return IRQ_SET_MASK_OK_DONE;
 }
 
diff --git a/drivers/mailbox/Makefile b/drivers/mailbox/Makefile
index fc93761..5f929bb 100644
--- a/drivers/mailbox/Makefile
+++ b/drivers/mailbox/Makefile
@@ -55,6 +55,8 @@
 
 obj-$(CONFIG_ZYNQMP_IPI_MBOX)	+= zynqmp-ipi-mailbox.o
 
+obj-$(CONFIG_GUNYAH)		+= gunyah-msgq.o
+
 obj-$(CONFIG_SUN6I_MSGBOX)	+= sun6i-msgbox.o
 
 obj-$(CONFIG_SPRD_MBOX)		+= sprd-mailbox.o
diff --git a/drivers/mailbox/gunyah-msgq.c b/drivers/mailbox/gunyah-msgq.c
new file mode 100644
index 0000000..7f77733
--- /dev/null
+++ b/drivers/mailbox/gunyah-msgq.c
@@ -0,0 +1,219 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+#include <linux/mailbox_controller.h>
+#include <linux/module.h>
+#include <linux/interrupt.h>
+#include <linux/gunyah.h>
+#include <linux/printk.h>
+#include <linux/init.h>
+#include <linux/slab.h>
+#include <linux/wait.h>
+
+#define mbox_chan_to_msgq(chan) (container_of(chan->mbox, struct gh_msgq, mbox))
+
+static irqreturn_t gh_msgq_rx_irq_handler(int irq, void *data)
+{
+	struct gh_msgq *msgq = data;
+	struct gh_msgq_rx_data rx_data;
+	enum gh_error gh_error;
+	bool ready = true;
+
+	while (ready) {
+		gh_error = gh_hypercall_msgq_recv(msgq->rx_ghrsc->capid,
+				&rx_data.data, sizeof(rx_data.data),
+				&rx_data.length, &ready);
+		if (gh_error != GH_ERROR_OK) {
+			if (gh_error != GH_ERROR_MSGQUEUE_EMPTY)
+				dev_warn(msgq->mbox.dev, "Failed to receive data: %d\n", gh_error);
+			break;
+		}
+		if (likely(gh_msgq_chan(msgq)->cl))
+			mbox_chan_received_data(gh_msgq_chan(msgq), &rx_data);
+	}
+
+	return IRQ_HANDLED;
+}
+
+/* Fired when message queue transitions from "full" to "space available" to send messages */
+static irqreturn_t gh_msgq_tx_irq_handler(int irq, void *data)
+{
+	struct gh_msgq *msgq = data;
+
+	mbox_chan_txdone(gh_msgq_chan(msgq), 0);
+
+	return IRQ_HANDLED;
+}
+
+/* Fired after sending message and hypercall told us there was more space available. */
+static void gh_msgq_txdone_tasklet(struct tasklet_struct *tasklet)
+{
+	struct gh_msgq *msgq = container_of(tasklet, struct gh_msgq, txdone_tasklet);
+
+	mbox_chan_txdone(gh_msgq_chan(msgq), msgq->last_ret);
+}
+
+static int gh_msgq_send_data(struct mbox_chan *chan, void *data)
+{
+	struct gh_msgq *msgq = mbox_chan_to_msgq(chan);
+	struct gh_msgq_tx_data *msgq_data = data;
+	u64 tx_flags = 0;
+	enum gh_error gh_error;
+	bool ready;
+
+	if (!msgq->tx_ghrsc)
+		return -EOPNOTSUPP;
+
+	if (msgq_data->push)
+		tx_flags |= GH_HYPERCALL_MSGQ_TX_FLAGS_PUSH;
+
+	gh_error = gh_hypercall_msgq_send(msgq->tx_ghrsc->capid, msgq_data->length, msgq_data->data,
+						tx_flags, &ready);
+
+	/**
+	 * unlikely because Linux tracks state of msgq and should not try to
+	 * send message when msgq is full.
+	 */
+	if (unlikely(gh_error == GH_ERROR_MSGQUEUE_FULL))
+		return -EAGAIN;
+
+	/**
+	 * Propagate all other errors to client. If we return error to mailbox
+	 * framework, then no other messages can be sent and nobody will know
+	 * to retry this message.
+	 */
+	msgq->last_ret = gh_error_remap(gh_error);
+
+	/**
+	 * This message was successfully sent, but message queue isn't ready to
+	 * accept more messages because it's now full. Mailbox framework
+	 * requires that we only report that message was transmitted when
+	 * we're ready to transmit another message. We'll get that in the form
+	 * of tx IRQ once the other side starts to drain the msgq.
+	 */
+	if (gh_error == GH_ERROR_OK) {
+		if (!ready)
+			return 0;
+	} else {
+		dev_err(msgq->mbox.dev, "Failed to send data: %d (%d)\n", gh_error, msgq->last_ret);
+	}
+
+	/**
+	 * We can send more messages. Mailbox framework requires that tx done
+	 * happens asynchronously to sending the message. Gunyah message queues
+	 * tell us right away on the hypercall return whether we can send more
+	 * messages. To work around this, defer the txdone to a tasklet.
+	 */
+	tasklet_schedule(&msgq->txdone_tasklet);
+
+	return 0;
+}
+
+static struct mbox_chan_ops gh_msgq_ops = {
+	.send_data = gh_msgq_send_data,
+};
+
+/**
+ * gh_msgq_init() - Initialize a Gunyah message queue with an mbox_client
+ * @parent: device parent used for the mailbox controller
+ * @msgq: Pointer to the gh_msgq to initialize
+ * @cl: A mailbox client to bind to the mailbox channel that the message queue creates
+ * @tx_ghrsc: optional, the transmission side of the message queue
+ * @rx_ghrsc: optional, the receiving side of the message queue
+ *
+ * At least one of tx_ghrsc and rx_ghrsc must be not NULL. Most message queue use cases come with
+ * a pair of message queues to facilitate bidirectional communication. When tx_ghrsc is set,
+ * the client can send messages with mbox_send_message(gh_msgq_chan(msgq), msg). When rx_ghrsc
+ * is set, the mbox_client must register an .rx_callback() and the message queue driver will
+ * deliver all available messages upon receiving the RX ready interrupt. The messages should be
+ * consumed or copied by the client right away as the gh_msgq_rx_data will be replaced/destroyed
+ * after the callback.
+ *
+ * Returns - 0 on success, negative otherwise
+ */
+int gh_msgq_init(struct device *parent, struct gh_msgq *msgq, struct mbox_client *cl,
+		 struct gh_resource *tx_ghrsc, struct gh_resource *rx_ghrsc)
+{
+	int ret;
+
+	/* Must have at least a tx_ghrsc or rx_ghrsc and that they are the right device types */
+	if ((!tx_ghrsc && !rx_ghrsc) ||
+	    (tx_ghrsc && tx_ghrsc->type != GH_RESOURCE_TYPE_MSGQ_TX) ||
+	    (rx_ghrsc && rx_ghrsc->type != GH_RESOURCE_TYPE_MSGQ_RX))
+		return -EINVAL;
+
+	msgq->mbox.dev = parent;
+	msgq->mbox.ops = &gh_msgq_ops;
+	msgq->mbox.num_chans = 1;
+	msgq->mbox.txdone_irq = true;
+	msgq->mbox.chans = &msgq->mbox_chan;
+
+	ret = mbox_controller_register(&msgq->mbox);
+	if (ret)
+		return ret;
+
+	ret = mbox_bind_client(gh_msgq_chan(msgq), cl);
+	if (ret)
+		goto err_mbox;
+
+	if (tx_ghrsc) {
+		msgq->tx_ghrsc = tx_ghrsc;
+
+		ret = request_irq(msgq->tx_ghrsc->irq, gh_msgq_tx_irq_handler, 0, "gh_msgq_tx",
+				msgq);
+		if (ret)
+			goto err_tx_ghrsc;
+
+		enable_irq_wake(msgq->tx_ghrsc->irq);
+
+		tasklet_setup(&msgq->txdone_tasklet, gh_msgq_txdone_tasklet);
+	}
+
+	if (rx_ghrsc) {
+		msgq->rx_ghrsc = rx_ghrsc;
+
+		ret = request_threaded_irq(msgq->rx_ghrsc->irq, NULL, gh_msgq_rx_irq_handler,
+						IRQF_ONESHOT, "gh_msgq_rx", msgq);
+		if (ret)
+			goto err_tx_irq;
+
+		enable_irq_wake(msgq->rx_ghrsc->irq);
+	}
+
+	return 0;
+err_tx_irq:
+	if (msgq->tx_ghrsc)
+		free_irq(msgq->tx_ghrsc->irq, msgq);
+
+	msgq->rx_ghrsc = NULL;
+err_tx_ghrsc:
+	msgq->tx_ghrsc = NULL;
+err_mbox:
+	mbox_controller_unregister(&msgq->mbox);
+	return ret;
+}
+EXPORT_SYMBOL_GPL(gh_msgq_init);
+
+void gh_msgq_remove(struct gh_msgq *msgq)
+{
+	mbox_free_channel(gh_msgq_chan(msgq));
+
+	if (msgq->rx_ghrsc)
+		free_irq(msgq->rx_ghrsc->irq, msgq);
+
+	if (msgq->tx_ghrsc) {
+		tasklet_kill(&msgq->txdone_tasklet);
+		free_irq(msgq->tx_ghrsc->irq, msgq);
+	}
+
+	mbox_controller_unregister(&msgq->mbox);
+
+	msgq->rx_ghrsc = NULL;
+	msgq->tx_ghrsc = NULL;
+}
+EXPORT_SYMBOL_GPL(gh_msgq_remove);
+
+MODULE_LICENSE("GPL");
+MODULE_DESCRIPTION("Gunyah Message Queue Driver");
diff --git a/drivers/mailbox/mailbox.c b/drivers/mailbox/mailbox.c
index 4229b9b..adf36c0 100644
--- a/drivers/mailbox/mailbox.c
+++ b/drivers/mailbox/mailbox.c
@@ -317,6 +317,71 @@ int mbox_flush(struct mbox_chan *chan, unsigned long timeout)
 }
 EXPORT_SYMBOL_GPL(mbox_flush);
 
+static int __mbox_bind_client(struct mbox_chan *chan, struct mbox_client *cl)
+{
+	struct device *dev = cl->dev;
+	unsigned long flags;
+	int ret;
+
+	if (chan->cl || !try_module_get(chan->mbox->dev->driver->owner)) {
+		dev_dbg(dev, "%s: mailbox not free\n", __func__);
+		return -EBUSY;
+	}
+
+	spin_lock_irqsave(&chan->lock, flags);
+	chan->msg_free = 0;
+	chan->msg_count = 0;
+	chan->active_req = NULL;
+	chan->cl = cl;
+	init_completion(&chan->tx_complete);
+
+	if (chan->txdone_method	== TXDONE_BY_POLL && cl->knows_txdone)
+		chan->txdone_method = TXDONE_BY_ACK;
+
+	spin_unlock_irqrestore(&chan->lock, flags);
+
+	if (chan->mbox->ops->startup) {
+		ret = chan->mbox->ops->startup(chan);
+
+		if (ret) {
+			dev_err(dev, "Unable to startup the chan (%d)\n", ret);
+			mbox_free_channel(chan);
+			return ret;
+		}
+	}
+
+	return 0;
+}
+
+/**
+ * mbox_bind_client - Request a mailbox channel.
+ * @chan: The mailbox channel to bind the client to.
+ * @cl: Identity of the client requesting the channel.
+ *
+ * The Client specifies its requirements and capabilities while asking for
+ * a mailbox channel. It can't be called from atomic context.
+ * The channel is exclusively allocated and can't be used by another
+ * client before the owner calls mbox_free_channel.
+ * After assignment, any packet received on this channel will be
+ * handed over to the client via the 'rx_callback'.
+ * The framework holds reference to the client, so the mbox_client
+ * structure shouldn't be modified until the mbox_free_channel returns.
+ *
+ * Return: 0 if the channel was assigned to the client successfully.
+ *         <0 for request failure.
+ */
+int mbox_bind_client(struct mbox_chan *chan, struct mbox_client *cl)
+{
+	int ret;
+
+	mutex_lock(&con_mutex);
+	ret = __mbox_bind_client(chan, cl);
+	mutex_unlock(&con_mutex);
+
+	return ret;
+}
+EXPORT_SYMBOL_GPL(mbox_bind_client);
+
 /**
  * mbox_request_channel - Request a mailbox channel.
  * @cl: Identity of the client requesting the channel.
@@ -340,7 +405,6 @@ struct mbox_chan *mbox_request_channel(struct mbox_client *cl, int index)
 	struct mbox_controller *mbox;
 	struct of_phandle_args spec;
 	struct mbox_chan *chan;
-	unsigned long flags;
 	int ret;
 
 	if (!dev || !dev->of_node) {
@@ -372,33 +436,9 @@ struct mbox_chan *mbox_request_channel(struct mbox_client *cl, int index)
 		return chan;
 	}
 
-	if (chan->cl || !try_module_get(mbox->dev->driver->owner)) {
-		dev_dbg(dev, "%s: mailbox not free\n", __func__);
-		mutex_unlock(&con_mutex);
-		return ERR_PTR(-EBUSY);
-	}
-
-	spin_lock_irqsave(&chan->lock, flags);
-	chan->msg_free = 0;
-	chan->msg_count = 0;
-	chan->active_req = NULL;
-	chan->cl = cl;
-	init_completion(&chan->tx_complete);
-
-	if (chan->txdone_method	== TXDONE_BY_POLL && cl->knows_txdone)
-		chan->txdone_method = TXDONE_BY_ACK;
-
-	spin_unlock_irqrestore(&chan->lock, flags);
-
-	if (chan->mbox->ops->startup) {
-		ret = chan->mbox->ops->startup(chan);
-
-		if (ret) {
-			dev_err(dev, "Unable to startup the chan (%d)\n", ret);
-			mbox_free_channel(chan);
-			chan = ERR_PTR(ret);
-		}
-	}
+	ret = __mbox_bind_client(chan, cl);
+	if (ret)
+		chan = ERR_PTR(ret);
 
 	mutex_unlock(&con_mutex);
 	return chan;
diff --git a/drivers/md/Kconfig b/drivers/md/Kconfig
index 662d219..ef70f60 100644
--- a/drivers/md/Kconfig
+++ b/drivers/md/Kconfig
@@ -294,6 +294,27 @@
 
 	  If unsure, say N.
 
+config DM_DEFAULT_KEY
+	tristate "Default-key target support"
+	depends on BLK_DEV_DM
+	depends on BLK_INLINE_ENCRYPTION
+	# dm-default-key doesn't require -o inlinecrypt, but it does currently
+	# rely on the inline encryption hooks being built into the kernel.
+	depends on FS_ENCRYPTION_INLINE_CRYPT
+	help
+	  This device-mapper target allows you to create a device that
+	  assigns a default encryption key to bios that aren't for the
+	  contents of an encrypted file.
+
+	  This ensures that all blocks on-disk will be encrypted with
+	  some key, without the performance hit of file contents being
+	  encrypted twice when fscrypt (File-Based Encryption) is used.
+
+	  It is only appropriate to use dm-default-key when key
+	  configuration is tightly controlled, like it is in Android,
+	  such that all fscrypt keys are at least as hard to compromise
+	  as the default key.
+
 config DM_SNAPSHOT
        tristate "Snapshot target"
        depends on BLK_DEV_DM
@@ -657,4 +678,18 @@
 	  Enables audit logging of several security relevant events in the
 	  particular device-mapper targets, especially the integrity target.
 
+config DM_USER
+	tristate "Block device in userspace"
+	depends on BLK_DEV_DM
+	default y
+	help
+	  This device-mapper target allows a userspace daemon to provide the
+	  contents of a block device.  See
+	  <file:Documentation/block/dm-user.rst> for more information.
+
+	  To compile this code as a module, choose M here: the module will be
+	  called dm-user.
+
+	  If unsure, say N.
+
 endif # MD
diff --git a/drivers/md/Makefile b/drivers/md/Makefile
index 84291e3..369f2ae 100644
--- a/drivers/md/Makefile
+++ b/drivers/md/Makefile
@@ -57,6 +57,7 @@
 obj-$(CONFIG_DM_BUFIO)		+= dm-bufio.o
 obj-$(CONFIG_DM_BIO_PRISON)	+= dm-bio-prison.o
 obj-$(CONFIG_DM_CRYPT)		+= dm-crypt.o
+obj-$(CONFIG_DM_DEFAULT_KEY)	+= dm-default-key.o
 obj-$(CONFIG_DM_DELAY)		+= dm-delay.o
 obj-$(CONFIG_DM_DUST)		+= dm-dust.o
 obj-$(CONFIG_DM_FLAKEY)		+= dm-flakey.o
@@ -84,6 +85,7 @@
 obj-$(CONFIG_DM_ZONED)		+= dm-zoned.o
 obj-$(CONFIG_DM_WRITECACHE)	+= dm-writecache.o
 obj-$(CONFIG_SECURITY_LOADPIN_VERITY)	+= dm-verity-loadpin.o
+obj-$(CONFIG_DM_USER)		+= dm-user.o
 
 ifeq ($(CONFIG_DM_INIT),y)
 dm-mod-objs			+= dm-init.o
diff --git a/drivers/md/dm-bufio.c b/drivers/md/dm-bufio.c
index 382c5cc..45b09be 100644
--- a/drivers/md/dm-bufio.c
+++ b/drivers/md/dm-bufio.c
@@ -20,6 +20,8 @@
 #include <linux/stacktrace.h>
 #include <linux/jump_label.h>
 
+#include <trace/hooks/mm.h>
+
 #define DM_MSG_PREFIX "bufio"
 
 /*
@@ -1702,6 +1704,13 @@ static void shrink_work(struct work_struct *w)
 static unsigned long dm_bufio_shrink_scan(struct shrinker *shrink, struct shrink_control *sc)
 {
 	struct dm_bufio_client *c;
+	bool bypass = false;
+
+	trace_android_vh_dm_bufio_shrink_scan_bypass(
+			dm_bufio_current_allocated,
+			&bypass);
+	if (bypass)
+		return 0;
 
 	c = container_of(shrink, struct dm_bufio_client, shrinker);
 	atomic_long_add(sc->nr_to_scan, &c->need_shrink);
@@ -2040,6 +2049,14 @@ static void cleanup_old_buffers(void)
 {
 	unsigned long max_age_hz = get_max_age_hz();
 	struct dm_bufio_client *c;
+	bool bypass = false;
+
+	trace_android_vh_cleanup_old_buffers_bypass(
+				dm_bufio_current_allocated,
+				&max_age_hz,
+				&bypass);
+	if (bypass)
+		return;
 
 	mutex_lock(&dm_bufio_clients_lock);
 
diff --git a/drivers/md/dm-default-key.c b/drivers/md/dm-default-key.c
new file mode 100644
index 0000000..394112d
--- /dev/null
+++ b/drivers/md/dm-default-key.c
@@ -0,0 +1,436 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2017 Google, Inc.
+ */
+
+#include <linux/blk-crypto.h>
+#include <linux/device-mapper.h>
+#include <linux/module.h>
+
+#define DM_MSG_PREFIX		"default-key"
+
+static const struct dm_default_key_cipher {
+	const char *name;
+	enum blk_crypto_mode_num mode_num;
+	int key_size;
+} dm_default_key_ciphers[] = {
+	{
+		.name = "aes-xts-plain64",
+		.mode_num = BLK_ENCRYPTION_MODE_AES_256_XTS,
+		.key_size = 64,
+	}, {
+		.name = "xchacha12,aes-adiantum-plain64",
+		.mode_num = BLK_ENCRYPTION_MODE_ADIANTUM,
+		.key_size = 32,
+	},
+};
+
+/**
+ * struct dm_default_c - private data of a default-key target
+ * @dev: the underlying device
+ * @start: starting sector of the range of @dev which this target actually maps.
+ *	   For this purpose a "sector" is 512 bytes.
+ * @cipher_string: the name of the encryption algorithm being used
+ * @iv_offset: starting offset for IVs.  IVs are generated as if the target were
+ *	       preceded by @iv_offset 512-byte sectors.
+ * @sector_size: crypto sector size in bytes (usually 4096)
+ * @sector_bits: log2(sector_size)
+ * @key: the encryption key to use
+ * @max_dun: the maximum DUN that may be used (computed from other params)
+ */
+struct default_key_c {
+	struct dm_dev *dev;
+	sector_t start;
+	const char *cipher_string;
+	u64 iv_offset;
+	unsigned int sector_size;
+	unsigned int sector_bits;
+	struct blk_crypto_key key;
+	enum blk_crypto_key_type key_type;
+	u64 max_dun;
+};
+
+static const struct dm_default_key_cipher *
+lookup_cipher(const char *cipher_string)
+{
+	int i;
+
+	for (i = 0; i < ARRAY_SIZE(dm_default_key_ciphers); i++) {
+		if (strcmp(cipher_string, dm_default_key_ciphers[i].name) == 0)
+			return &dm_default_key_ciphers[i];
+	}
+	return NULL;
+}
+
+static void default_key_dtr(struct dm_target *ti)
+{
+	struct default_key_c *dkc = ti->private;
+
+	if (dkc->dev) {
+		blk_crypto_evict_key(dkc->dev->bdev, &dkc->key);
+		dm_put_device(ti, dkc->dev);
+	}
+	kfree_sensitive(dkc->cipher_string);
+	kfree_sensitive(dkc);
+}
+
+static int default_key_ctr_optional(struct dm_target *ti,
+				    unsigned int argc, char **argv)
+{
+	struct default_key_c *dkc = ti->private;
+	struct dm_arg_set as;
+	static const struct dm_arg _args[] = {
+		{0, 4, "Invalid number of feature args"},
+	};
+	unsigned int opt_params;
+	const char *opt_string;
+	bool iv_large_sectors = false;
+	char dummy;
+	int err;
+
+	as.argc = argc;
+	as.argv = argv;
+
+	err = dm_read_arg_group(_args, &as, &opt_params, &ti->error);
+	if (err)
+		return err;
+
+	while (opt_params--) {
+		opt_string = dm_shift_arg(&as);
+		if (!opt_string) {
+			ti->error = "Not enough feature arguments";
+			return -EINVAL;
+		}
+		if (!strcmp(opt_string, "allow_discards")) {
+			ti->num_discard_bios = 1;
+		} else if (sscanf(opt_string, "sector_size:%u%c",
+				  &dkc->sector_size, &dummy) == 1) {
+			if (dkc->sector_size < SECTOR_SIZE ||
+			    dkc->sector_size > 4096 ||
+			    !is_power_of_2(dkc->sector_size)) {
+				ti->error = "Invalid sector_size";
+				return -EINVAL;
+			}
+		} else if (!strcmp(opt_string, "iv_large_sectors")) {
+			iv_large_sectors = true;
+		} else if (!strcmp(opt_string, "wrappedkey_v0")) {
+			dkc->key_type = BLK_CRYPTO_KEY_TYPE_HW_WRAPPED;
+		} else {
+			ti->error = "Invalid feature arguments";
+			return -EINVAL;
+		}
+	}
+
+	/* dm-default-key doesn't implement iv_large_sectors=false. */
+	if (dkc->sector_size != SECTOR_SIZE && !iv_large_sectors) {
+		ti->error = "iv_large_sectors must be specified";
+		return -EINVAL;
+	}
+
+	return 0;
+}
+
+/*
+ * Construct a default-key mapping:
+ * <cipher> <key> <iv_offset> <dev_path> <start>
+ *
+ * This syntax matches dm-crypt's, but lots of unneeded functionality has been
+ * removed.  Also, dm-default-key requires that the "iv_large_sectors" option be
+ * given whenever a non-default sector size is used.
+ */
+static int default_key_ctr(struct dm_target *ti, unsigned int argc, char **argv)
+{
+	struct default_key_c *dkc;
+	const struct dm_default_key_cipher *cipher;
+	u8 raw_key[BLK_CRYPTO_MAX_ANY_KEY_SIZE];
+	unsigned int raw_key_size;
+	unsigned int dun_bytes;
+	unsigned long long tmpll;
+	char dummy;
+	int err;
+
+	if (argc < 5) {
+		ti->error = "Not enough arguments";
+		return -EINVAL;
+	}
+
+	dkc = kzalloc(sizeof(*dkc), GFP_KERNEL);
+	if (!dkc) {
+		ti->error = "Out of memory";
+		return -ENOMEM;
+	}
+	ti->private = dkc;
+	dkc->key_type = BLK_CRYPTO_KEY_TYPE_STANDARD;
+
+	/* <cipher> */
+	dkc->cipher_string = kstrdup(argv[0], GFP_KERNEL);
+	if (!dkc->cipher_string) {
+		ti->error = "Out of memory";
+		err = -ENOMEM;
+		goto bad;
+	}
+	cipher = lookup_cipher(dkc->cipher_string);
+	if (!cipher) {
+		ti->error = "Unsupported cipher";
+		err = -EINVAL;
+		goto bad;
+	}
+
+	/* <key> */
+	raw_key_size = strlen(argv[1]);
+	if (raw_key_size > 2 * BLK_CRYPTO_MAX_ANY_KEY_SIZE ||
+	    raw_key_size % 2) {
+		ti->error = "Invalid keysize";
+		err = -EINVAL;
+		goto bad;
+	}
+	raw_key_size /= 2;
+	if (hex2bin(raw_key, argv[1], raw_key_size) != 0) {
+		ti->error = "Malformed key string";
+		err = -EINVAL;
+		goto bad;
+	}
+
+	/* <iv_offset> */
+	if (sscanf(argv[2], "%llu%c", &dkc->iv_offset, &dummy) != 1) {
+		ti->error = "Invalid iv_offset sector";
+		err = -EINVAL;
+		goto bad;
+	}
+
+	/* <dev_path> */
+	err = dm_get_device(ti, argv[3], dm_table_get_mode(ti->table),
+			    &dkc->dev);
+	if (err) {
+		ti->error = "Device lookup failed";
+		goto bad;
+	}
+
+	/* <start> */
+	if (sscanf(argv[4], "%llu%c", &tmpll, &dummy) != 1 ||
+	    tmpll != (sector_t)tmpll) {
+		ti->error = "Invalid start sector";
+		err = -EINVAL;
+		goto bad;
+	}
+	dkc->start = tmpll;
+
+	/* optional arguments */
+	dkc->sector_size = SECTOR_SIZE;
+	if (argc > 5) {
+		err = default_key_ctr_optional(ti, argc - 5, &argv[5]);
+		if (err)
+			goto bad;
+	}
+	dkc->sector_bits = ilog2(dkc->sector_size);
+	if (ti->len & ((dkc->sector_size >> SECTOR_SHIFT) - 1)) {
+		ti->error = "Device size is not a multiple of sector_size";
+		err = -EINVAL;
+		goto bad;
+	}
+
+	dkc->max_dun = (dkc->iv_offset + ti->len - 1) >>
+		       (dkc->sector_bits - SECTOR_SHIFT);
+	dun_bytes = DIV_ROUND_UP(fls64(dkc->max_dun), 8);
+
+	err = blk_crypto_init_key(&dkc->key, raw_key, raw_key_size,
+				  dkc->key_type, cipher->mode_num,
+				  dun_bytes, dkc->sector_size);
+	if (err) {
+		ti->error = "Error initializing blk-crypto key";
+		goto bad;
+	}
+
+	err = blk_crypto_start_using_key(dkc->dev->bdev, &dkc->key);
+	if (err) {
+		ti->error = "Error starting to use blk-crypto";
+		goto bad;
+	}
+
+	ti->num_flush_bios = 1;
+
+	err = 0;
+	goto out;
+
+bad:
+	default_key_dtr(ti);
+out:
+	memzero_explicit(raw_key, sizeof(raw_key));
+	return err;
+}
+
+static int default_key_map(struct dm_target *ti, struct bio *bio)
+{
+	const struct default_key_c *dkc = ti->private;
+	sector_t sector_in_target;
+	u64 dun[BLK_CRYPTO_DUN_ARRAY_SIZE] = { 0 };
+
+	bio_set_dev(bio, dkc->dev->bdev);
+
+	/*
+	 * If the bio is a device-level request which doesn't target a specific
+	 * sector, there's nothing more to do.
+	 */
+	if (bio_sectors(bio) == 0)
+		return DM_MAPIO_REMAPPED;
+
+	/* Map the bio's sector to the underlying device. (512-byte sectors) */
+	sector_in_target = dm_target_offset(ti, bio->bi_iter.bi_sector);
+	bio->bi_iter.bi_sector = dkc->start + sector_in_target;
+
+	/*
+	 * If the bio should skip dm-default-key (i.e. if it's for an encrypted
+	 * file's contents), or if it doesn't have any data (e.g. if it's a
+	 * DISCARD request), there's nothing more to do.
+	 */
+	if (bio_should_skip_dm_default_key(bio) || !bio_has_data(bio))
+		return DM_MAPIO_REMAPPED;
+
+	/*
+	 * Else, dm-default-key needs to set this bio's encryption context.
+	 * It must not already have one.
+	 */
+	if (WARN_ON_ONCE(bio_has_crypt_ctx(bio)))
+		return DM_MAPIO_KILL;
+
+	/* Calculate the DUN and enforce data-unit (crypto sector) alignment. */
+	dun[0] = dkc->iv_offset + sector_in_target; /* 512-byte sectors */
+	if (dun[0] & ((dkc->sector_size >> SECTOR_SHIFT) - 1))
+		return DM_MAPIO_KILL;
+	dun[0] >>= dkc->sector_bits - SECTOR_SHIFT; /* crypto sectors */
+
+	/*
+	 * This check isn't necessary as we should have calculated max_dun
+	 * correctly, but be safe.
+	 */
+	if (WARN_ON_ONCE(dun[0] > dkc->max_dun))
+		return DM_MAPIO_KILL;
+
+	bio_crypt_set_ctx(bio, &dkc->key, dun, GFP_NOIO);
+
+	return DM_MAPIO_REMAPPED;
+}
+
+static void default_key_status(struct dm_target *ti, status_type_t type,
+			       unsigned int status_flags, char *result,
+			       unsigned int maxlen)
+{
+	const struct default_key_c *dkc = ti->private;
+	unsigned int sz = 0;
+	int num_feature_args = 0;
+
+	switch (type) {
+	case STATUSTYPE_INFO:
+	case STATUSTYPE_IMA:
+		result[0] = '\0';
+		break;
+
+	case STATUSTYPE_TABLE:
+		/* Omit the key for now. */
+		DMEMIT("%s - %llu %s %llu", dkc->cipher_string, dkc->iv_offset,
+		       dkc->dev->name, (unsigned long long)dkc->start);
+
+		num_feature_args += !!ti->num_discard_bios;
+		if (dkc->sector_size != SECTOR_SIZE)
+			num_feature_args += 2;
+		if (dkc->key_type == BLK_CRYPTO_KEY_TYPE_HW_WRAPPED)
+			num_feature_args += 1;
+		if (num_feature_args != 0) {
+			DMEMIT(" %d", num_feature_args);
+			if (ti->num_discard_bios)
+				DMEMIT(" allow_discards");
+			if (dkc->sector_size != SECTOR_SIZE) {
+				DMEMIT(" sector_size:%u", dkc->sector_size);
+				DMEMIT(" iv_large_sectors");
+			}
+			if (dkc->key_type == BLK_CRYPTO_KEY_TYPE_HW_WRAPPED)
+				DMEMIT(" wrappedkey_v0");
+		}
+		break;
+	}
+}
+
+static int default_key_prepare_ioctl(struct dm_target *ti,
+				     struct block_device **bdev)
+{
+	const struct default_key_c *dkc = ti->private;
+	const struct dm_dev *dev = dkc->dev;
+
+	*bdev = dev->bdev;
+
+	/* Only pass ioctls through if the device sizes match exactly. */
+	if (dkc->start != 0 ||
+	    ti->len != i_size_read(dev->bdev->bd_inode) >> SECTOR_SHIFT)
+		return 1;
+	return 0;
+}
+
+static int default_key_iterate_devices(struct dm_target *ti,
+				       iterate_devices_callout_fn fn,
+				       void *data)
+{
+	const struct default_key_c *dkc = ti->private;
+
+	return fn(ti, dkc->dev, dkc->start, ti->len, data);
+}
+
+static void default_key_io_hints(struct dm_target *ti,
+				 struct queue_limits *limits)
+{
+	const struct default_key_c *dkc = ti->private;
+	const unsigned int sector_size = dkc->sector_size;
+
+	limits->logical_block_size =
+		max_t(unsigned int, limits->logical_block_size, sector_size);
+	limits->physical_block_size =
+		max_t(unsigned int, limits->physical_block_size, sector_size);
+	limits->io_min = max_t(unsigned int, limits->io_min, sector_size);
+}
+
+#ifdef CONFIG_BLK_DEV_ZONED
+static int default_key_report_zones(struct dm_target *ti,
+		struct dm_report_zones_args *args, unsigned int nr_zones)
+{
+	struct default_key_c *dkc = ti->private;
+
+	return dm_report_zones(dkc->dev->bdev, dkc->start,
+			dkc->start + dm_target_offset(ti, args->next_sector),
+			args, nr_zones);
+}
+#else
+#define default_key_report_zones NULL
+#endif
+
+static struct target_type default_key_target = {
+	.name			= "default-key",
+	.version		= {2, 1, 0},
+	.features		= DM_TARGET_PASSES_CRYPTO | DM_TARGET_ZONED_HM,
+	.report_zones		= default_key_report_zones,
+	.module			= THIS_MODULE,
+	.ctr			= default_key_ctr,
+	.dtr			= default_key_dtr,
+	.map			= default_key_map,
+	.status			= default_key_status,
+	.prepare_ioctl		= default_key_prepare_ioctl,
+	.iterate_devices	= default_key_iterate_devices,
+	.io_hints		= default_key_io_hints,
+};
+
+static int __init dm_default_key_init(void)
+{
+	return dm_register_target(&default_key_target);
+}
+
+static void __exit dm_default_key_exit(void)
+{
+	dm_unregister_target(&default_key_target);
+}
+
+module_init(dm_default_key_init);
+module_exit(dm_default_key_exit);
+
+MODULE_AUTHOR("Paul Lawrence <paullawrence@google.com>");
+MODULE_AUTHOR("Paul Crowley <paulcrowley@google.com>");
+MODULE_AUTHOR("Eric Biggers <ebiggers@google.com>");
+MODULE_DESCRIPTION(DM_NAME " target for encrypting filesystem metadata");
+MODULE_LICENSE("GPL");
diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c
index 3acded2..04de0fb 100644
--- a/drivers/md/dm-table.c
+++ b/drivers/md/dm-table.c
@@ -1241,6 +1241,68 @@ static int dm_keyslot_evict(struct blk_crypto_profile *profile,
 	return 0;
 }
 
+struct dm_derive_sw_secret_args {
+	const u8 *eph_key;
+	size_t eph_key_size;
+	u8 *sw_secret;
+	int err;
+};
+
+static int dm_derive_sw_secret_callback(struct dm_target *ti,
+					struct dm_dev *dev, sector_t start,
+					sector_t len, void *data)
+{
+	struct dm_derive_sw_secret_args *args = data;
+
+	if (!args->err)
+		return 0;
+
+	args->err = blk_crypto_derive_sw_secret(dev->bdev,
+						args->eph_key,
+						args->eph_key_size,
+						args->sw_secret);
+	/* Try another device in case this fails. */
+	return 0;
+}
+
+/*
+ * Retrieve the sw_secret from the underlying device.  Given that only one
+ * sw_secret can exist for a particular wrapped key, retrieve it only from the
+ * first device that supports derive_sw_secret().
+ */
+static int dm_derive_sw_secret(struct blk_crypto_profile *profile,
+			       const u8 *eph_key, size_t eph_key_size,
+			       u8 sw_secret[BLK_CRYPTO_SW_SECRET_SIZE])
+{
+	struct mapped_device *md =
+		container_of(profile, struct dm_crypto_profile, profile)->md;
+	struct dm_derive_sw_secret_args args = {
+		.eph_key = eph_key,
+		.eph_key_size = eph_key_size,
+		.sw_secret = sw_secret,
+		.err = -EOPNOTSUPP,
+	};
+	struct dm_table *t;
+	int srcu_idx;
+	int i;
+	struct dm_target *ti;
+
+	t = dm_get_live_table(md, &srcu_idx);
+	if (!t)
+		return -EOPNOTSUPP;
+	for (i = 0; i < t->num_targets; i++) {
+		ti = dm_table_get_target(t, i);
+		if (!ti->type->iterate_devices)
+			continue;
+		ti->type->iterate_devices(ti, dm_derive_sw_secret_callback,
+					  &args);
+		if (!args.err)
+			break;
+	}
+	dm_put_live_table(md, srcu_idx);
+	return args.err;
+}
+
 static int
 device_intersect_crypto_capabilities(struct dm_target *ti, struct dm_dev *dev,
 				     sector_t start, sector_t len, void *data)
@@ -1296,9 +1358,11 @@ static int dm_table_construct_crypto_profile(struct dm_table *t)
 	profile = &dmcp->profile;
 	blk_crypto_profile_init(profile, 0);
 	profile->ll_ops.keyslot_evict = dm_keyslot_evict;
+	profile->ll_ops.derive_sw_secret = dm_derive_sw_secret;
 	profile->max_dun_bytes_supported = UINT_MAX;
 	memset(profile->modes_supported, 0xFF,
 	       sizeof(profile->modes_supported));
+	profile->key_types_supported = ~0;
 
 	for (i = 0; i < t->num_targets; i++) {
 		struct dm_target *ti = dm_table_get_target(t, i);
diff --git a/drivers/md/dm-user.c b/drivers/md/dm-user.c
new file mode 100644
index 0000000..b3a4e2e
--- /dev/null
+++ b/drivers/md/dm-user.c
@@ -0,0 +1,1286 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2020 Google, Inc
+ * Copyright (C) 2020 Palmer Dabbelt <palmerdabbelt@google.com>
+ */
+
+#include <linux/device-mapper.h>
+#include <uapi/linux/dm-user.h>
+
+#include <linux/bio.h>
+#include <linux/init.h>
+#include <linux/mempool.h>
+#include <linux/miscdevice.h>
+#include <linux/module.h>
+#include <linux/poll.h>
+#include <linux/uio.h>
+#include <linux/wait.h>
+#include <linux/workqueue.h>
+
+#define DM_MSG_PREFIX "user"
+
+#define MAX_OUTSTANDING_MESSAGES 128
+
+static unsigned int daemon_timeout_msec = 4000;
+module_param_named(dm_user_daemon_timeout_msec, daemon_timeout_msec, uint,
+		   0644);
+MODULE_PARM_DESC(dm_user_daemon_timeout_msec,
+		 "IO Timeout in msec if daemon does not process");
+
+/*
+ * dm-user uses four structures:
+ *
+ *  - "struct target", the outermost structure, corresponds to a single device
+ *    mapper target.  This contains the set of outstanding BIOs that have been
+ *    provided by DM and are not actively being processed by the user, along
+ *    with a misc device that userspace can open to communicate with the
+ *    kernel.  Each time userspaces opens the misc device a new channel is
+ *    created.
+ *  - "struct channel", which represents a single active communication channel
+ *    with userspace.  Userspace may choose arbitrary read/write sizes to use
+ *    when processing messages, channels form these into logical accesses.
+ *    When userspace responds to a full message the channel completes the BIO
+ *    and obtains a new message to process from the target.
+ *  - "struct message", which wraps a BIO with the additional information
+ *    required by the kernel to sort out what to do with BIOs when they return
+ *    from userspace.
+ *  - "struct dm_user_message", which is the exact message format that
+ *    userspace sees.
+ *
+ * The hot path contains three distinct operations:
+ *
+ *  - user_map(), which is provided a BIO from device mapper that is queued
+ *    into the target.  This allocates and enqueues a new message.
+ *  - dev_read(), which dequeues a message, copies it to userspace.
+ *  - dev_write(), which looks up a message (keyed by sequence number) and
+ *    completes the corresponding BIO.
+ *
+ * Lock ordering (outer to inner)
+ *
+ * 1) miscdevice's global lock.  This is held around dev_open, so it has to be
+ *    the outermost lock.
+ * 2) target->lock
+ * 3) channel->lock
+ */
+
+struct message {
+	/*
+	 * Messages themselves do not need a lock, they're protected by either
+	 * the target or channel's lock, depending on which can reference them
+	 * directly.
+	 */
+	struct dm_user_message msg;
+	struct bio *bio;
+	size_t posn_to_user;
+	size_t total_to_user;
+	size_t posn_from_user;
+	size_t total_from_user;
+
+	struct list_head from_user;
+	struct list_head to_user;
+
+	/*
+	 * These are written back from the user.  They live in the same spot in
+	 * the message, but we need to either keep the old values around or
+	 * call a bunch more BIO helpers.  These are only valid after write has
+	 * adopted the message.
+	 */
+	u64 return_type;
+	u64 return_flags;
+
+	struct delayed_work work;
+	bool delayed;
+	struct target *t;
+};
+
+struct target {
+	/*
+	 * A target has a single lock, which protects everything in the target
+	 * (but does not protect the channels associated with a target).
+	 */
+	struct mutex lock;
+
+	/*
+	 * There is only one point at which anything blocks: userspace blocks
+	 * reading a new message, which is woken up by device mapper providing
+	 * a new BIO to process (or tearing down the target).  The
+	 * corresponding write side doesn't block, instead we treat userspace's
+	 * response containing a message that has yet to be mapped as an
+	 * invalid operation.
+	 */
+	struct wait_queue_head wq;
+
+	/*
+	 * Messages are delivered to userspace in order, but may be returned
+	 * out of order.  This allows userspace to schedule IO if it wants to.
+	 */
+	mempool_t message_pool;
+	u64 next_seq_to_map;
+	u64 next_seq_to_user;
+	struct list_head to_user;
+
+	/*
+	 * There is a misc device per target.  The name is selected by
+	 * userspace (via a DM create ioctl argument), and each ends up in
+	 * /dev/dm-user/.  It looks like a better way to do this may be to have
+	 * a filesystem to manage these, but this was more expedient.  The
+	 * current mechanism is functional, but does result in an arbitrary
+	 * number of dynamically created misc devices.
+	 */
+	struct miscdevice miscdev;
+
+	/*
+	 * Device mapper's target destructor triggers tearing this all down,
+	 * but we can't actually free until every channel associated with this
+	 * target has been destroyed.  Channels each have a reference to their
+	 * target, and there is an additional single reference that corresponds
+	 * to both DM and the misc device (both of which are destroyed by DM).
+	 *
+	 * In the common case userspace will be asleep waiting for a new
+	 * message when device mapper decides to destroy the target, which
+	 * means no new messages will appear.  The destroyed flag triggers a
+	 * wakeup, which will end up removing the reference.
+	 */
+	struct kref references;
+	int dm_destroyed;
+	bool daemon_terminated;
+};
+
+struct channel {
+	struct target *target;
+
+	/*
+	 * A channel has a single lock, which prevents multiple reads (or
+	 * multiple writes) from conflicting with each other.
+	 */
+	struct mutex lock;
+
+	struct message *cur_to_user;
+	struct message *cur_from_user;
+	ssize_t to_user_error;
+	ssize_t from_user_error;
+
+	/*
+	 * Once a message has been forwarded to userspace on a channel it must
+	 * be responded to on the same channel.  This allows us to error out
+	 * the messages that have not yet been responded to by a channel when
+	 * that channel closes, which makes handling errors more reasonable for
+	 * fault-tolerant userspace daemons.  It also happens to make avoiding
+	 * shared locks between user_map() and dev_read() a lot easier.
+	 *
+	 * This does preclude a multi-threaded work stealing userspace
+	 * implementation (or at least, force a degree of head-of-line blocking
+	 * on the response path).
+	 */
+	struct list_head from_user;
+
+	/*
+	 * Responses from userspace can arrive in arbitrarily small chunks.
+	 * We need some place to buffer one up until we can find the
+	 * corresponding kernel-side message to continue processing, so instead
+	 * of allocating them we just keep one off to the side here.  This can
+	 * only ever be pointer to by from_user_cur, and will never have a BIO.
+	 */
+	struct message scratch_message_from_user;
+};
+
+static void message_kill(struct message *m, mempool_t *pool)
+{
+	m->bio->bi_status = BLK_STS_IOERR;
+	bio_endio(m->bio);
+	mempool_free(m, pool);
+}
+
+static inline bool is_user_space_thread_present(struct target *t)
+{
+	lockdep_assert_held(&t->lock);
+	return (kref_read(&t->references) > 1);
+}
+
+static void process_delayed_work(struct work_struct *work)
+{
+	struct delayed_work *del_work = to_delayed_work(work);
+	struct message *msg = container_of(del_work, struct message, work);
+
+	struct target *t = msg->t;
+
+	mutex_lock(&t->lock);
+
+	/*
+	 * There is at least one thread to process the IO.
+	 */
+	if (is_user_space_thread_present(t)) {
+		mutex_unlock(&t->lock);
+		return;
+	}
+
+	/*
+	 * Terminate the IO with an error
+	 */
+	list_del(&msg->to_user);
+	pr_err("I/O error: sector %llu: no user-space daemon for %s target\n",
+	       msg->bio->bi_iter.bi_sector,
+	       t->miscdev.name);
+	message_kill(msg, &t->message_pool);
+	mutex_unlock(&t->lock);
+}
+
+static void enqueue_delayed_work(struct message *m, bool is_delay)
+{
+	unsigned long delay = 0;
+
+	m->delayed = true;
+	INIT_DELAYED_WORK(&m->work, process_delayed_work);
+
+	/*
+	 * Snapuserd daemon is the user-space process
+	 * which processes IO request from dm-user
+	 * when OTA is applied. Per the current design,
+	 * when a dm-user target is created, daemon
+	 * attaches to target and starts processing
+	 * the IO's. Daemon is terminated only when
+	 * dm-user target is destroyed.
+	 *
+	 * If for some reason, daemon crashes or terminates early,
+	 * without destroying the dm-user target; then
+	 * there is no mechanism to restart the daemon
+	 * and start processing the IO's from the same target.
+	 * Theoretically, it is possible but that infrastructure
+	 * doesn't exist in the android ecosystem.
+	 *
+	 * Thus, when the daemon terminates, there is no way the IO's
+	 * issued on that target will be processed. Hence,
+	 * we set the delay to 0 and fail the IO's immediately.
+	 *
+	 * On the other hand, when a new dm-user target is created,
+	 * we wait for the daemon to get attached for the first time.
+	 * This primarily happens when init first stage spins up
+	 * the daemon. At this point, since the snapshot device is mounted
+	 * of a root filesystem, dm-user target may receive IO request
+	 * even though daemon is not fully launched. We don't want
+	 * to fail those IO requests immediately. Thus, we queue these
+	 * requests with a timeout so that daemon is ready to process
+	 * those IO requests. Again, if the daemon fails to launch within
+	 * the timeout period, then IO's will be failed.
+	 */
+	if (is_delay)
+		delay = msecs_to_jiffies(daemon_timeout_msec);
+
+	queue_delayed_work(system_wq, &m->work, delay);
+}
+
+static inline struct target *target_from_target(struct dm_target *target)
+{
+	WARN_ON(target->private == NULL);
+	return target->private;
+}
+
+static inline struct target *target_from_miscdev(struct miscdevice *miscdev)
+{
+	return container_of(miscdev, struct target, miscdev);
+}
+
+static inline struct channel *channel_from_file(struct file *file)
+{
+	WARN_ON(file->private_data == NULL);
+	return file->private_data;
+}
+
+static inline struct target *target_from_channel(struct channel *c)
+{
+	WARN_ON(c->target == NULL);
+	return c->target;
+}
+
+static inline size_t bio_size(struct bio *bio)
+{
+	struct bio_vec bvec;
+	struct bvec_iter iter;
+	size_t out = 0;
+
+	bio_for_each_segment (bvec, bio, iter)
+		out += bio_iter_len(bio, iter);
+	return out;
+}
+
+static inline size_t bio_bytes_needed_to_user(struct bio *bio)
+{
+	switch (bio_op(bio)) {
+	case REQ_OP_WRITE:
+		return sizeof(struct dm_user_message) + bio_size(bio);
+	case REQ_OP_READ:
+	case REQ_OP_FLUSH:
+	case REQ_OP_DISCARD:
+	case REQ_OP_SECURE_ERASE:
+	case REQ_OP_WRITE_ZEROES:
+		return sizeof(struct dm_user_message);
+
+	/*
+	 * These ops are not passed to userspace under the assumption that
+	 * they're not going to be particularly useful in that context.
+	 */
+	default:
+		return -EOPNOTSUPP;
+	}
+}
+
+static inline size_t bio_bytes_needed_from_user(struct bio *bio)
+{
+	switch (bio_op(bio)) {
+	case REQ_OP_READ:
+		return sizeof(struct dm_user_message) + bio_size(bio);
+	case REQ_OP_WRITE:
+	case REQ_OP_FLUSH:
+	case REQ_OP_DISCARD:
+	case REQ_OP_SECURE_ERASE:
+	case REQ_OP_WRITE_ZEROES:
+		return sizeof(struct dm_user_message);
+
+	/*
+	 * These ops are not passed to userspace under the assumption that
+	 * they're not going to be particularly useful in that context.
+	 */
+	default:
+		return -EOPNOTSUPP;
+	}
+}
+
+static inline long bio_type_to_user_type(struct bio *bio)
+{
+	switch (bio_op(bio)) {
+	case REQ_OP_READ:
+		return DM_USER_REQ_MAP_READ;
+	case REQ_OP_WRITE:
+		return DM_USER_REQ_MAP_WRITE;
+	case REQ_OP_FLUSH:
+		return DM_USER_REQ_MAP_FLUSH;
+	case REQ_OP_DISCARD:
+		return DM_USER_REQ_MAP_DISCARD;
+	case REQ_OP_SECURE_ERASE:
+		return DM_USER_REQ_MAP_SECURE_ERASE;
+	case REQ_OP_WRITE_ZEROES:
+		return DM_USER_REQ_MAP_WRITE_ZEROES;
+
+	/*
+	 * These ops are not passed to userspace under the assumption that
+	 * they're not going to be particularly useful in that context.
+	 */
+	default:
+		return -EOPNOTSUPP;
+	}
+}
+
+static inline long bio_flags_to_user_flags(struct bio *bio)
+{
+	u64 out = 0;
+	typeof(bio->bi_opf) opf = bio->bi_opf & ~REQ_OP_MASK;
+
+	if (opf & REQ_FAILFAST_DEV) {
+		opf &= ~REQ_FAILFAST_DEV;
+		out |= DM_USER_REQ_MAP_FLAG_FAILFAST_DEV;
+	}
+
+	if (opf & REQ_FAILFAST_TRANSPORT) {
+		opf &= ~REQ_FAILFAST_TRANSPORT;
+		out |= DM_USER_REQ_MAP_FLAG_FAILFAST_TRANSPORT;
+	}
+
+	if (opf & REQ_FAILFAST_DRIVER) {
+		opf &= ~REQ_FAILFAST_DRIVER;
+		out |= DM_USER_REQ_MAP_FLAG_FAILFAST_DRIVER;
+	}
+
+	if (opf & REQ_SYNC) {
+		opf &= ~REQ_SYNC;
+		out |= DM_USER_REQ_MAP_FLAG_SYNC;
+	}
+
+	if (opf & REQ_META) {
+		opf &= ~REQ_META;
+		out |= DM_USER_REQ_MAP_FLAG_META;
+	}
+
+	if (opf & REQ_PRIO) {
+		opf &= ~REQ_PRIO;
+		out |= DM_USER_REQ_MAP_FLAG_PRIO;
+	}
+
+	if (opf & REQ_NOMERGE) {
+		opf &= ~REQ_NOMERGE;
+		out |= DM_USER_REQ_MAP_FLAG_NOMERGE;
+	}
+
+	if (opf & REQ_IDLE) {
+		opf &= ~REQ_IDLE;
+		out |= DM_USER_REQ_MAP_FLAG_IDLE;
+	}
+
+	if (opf & REQ_INTEGRITY) {
+		opf &= ~REQ_INTEGRITY;
+		out |= DM_USER_REQ_MAP_FLAG_INTEGRITY;
+	}
+
+	if (opf & REQ_FUA) {
+		opf &= ~REQ_FUA;
+		out |= DM_USER_REQ_MAP_FLAG_FUA;
+	}
+
+	if (opf & REQ_PREFLUSH) {
+		opf &= ~REQ_PREFLUSH;
+		out |= DM_USER_REQ_MAP_FLAG_PREFLUSH;
+	}
+
+	if (opf & REQ_RAHEAD) {
+		opf &= ~REQ_RAHEAD;
+		out |= DM_USER_REQ_MAP_FLAG_RAHEAD;
+	}
+
+	if (opf & REQ_BACKGROUND) {
+		opf &= ~REQ_BACKGROUND;
+		out |= DM_USER_REQ_MAP_FLAG_BACKGROUND;
+	}
+
+	if (opf & REQ_NOWAIT) {
+		opf &= ~REQ_NOWAIT;
+		out |= DM_USER_REQ_MAP_FLAG_NOWAIT;
+	}
+
+	if (opf & REQ_NOUNMAP) {
+		opf &= ~REQ_NOUNMAP;
+		out |= DM_USER_REQ_MAP_FLAG_NOUNMAP;
+	}
+
+	if (unlikely(opf)) {
+		pr_warn("unsupported BIO type %x\n", opf);
+		return -EOPNOTSUPP;
+	}
+	WARN_ON(out < 0);
+	return out;
+}
+
+/*
+ * Not quite what's in blk-map.c, but instead what I thought the functions in
+ * blk-map did.  This one seems more generally useful and I think we could
+ * write the blk-map version in terms of this one.  The differences are that
+ * this has a return value that counts, and blk-map uses the BIO _all iters.
+ * Neither  advance the BIO iter but don't advance the IOV iter, which is a bit
+ * odd here.
+ */
+static ssize_t bio_copy_from_iter(struct bio *bio, struct iov_iter *iter)
+{
+	struct bio_vec bvec;
+	struct bvec_iter biter;
+	ssize_t out = 0;
+
+	bio_for_each_segment (bvec, bio, biter) {
+		ssize_t ret;
+
+		ret = copy_page_from_iter(bvec.bv_page, bvec.bv_offset,
+					  bvec.bv_len, iter);
+
+		/*
+		 * FIXME: I thought that IOV copies had a mechanism for
+		 * terminating early, if for example a signal came in while
+		 * sleeping waiting for a page to be mapped, but I don't see
+		 * where that would happen.
+		 */
+		WARN_ON(ret < 0);
+		out += ret;
+
+		if (!iov_iter_count(iter))
+			break;
+
+		if (ret < bvec.bv_len)
+			return ret;
+	}
+
+	return out;
+}
+
+static ssize_t bio_copy_to_iter(struct bio *bio, struct iov_iter *iter)
+{
+	struct bio_vec bvec;
+	struct bvec_iter biter;
+	ssize_t out = 0;
+
+	bio_for_each_segment (bvec, bio, biter) {
+		ssize_t ret;
+
+		ret = copy_page_to_iter(bvec.bv_page, bvec.bv_offset,
+					bvec.bv_len, iter);
+
+		/* as above */
+		WARN_ON(ret < 0);
+		out += ret;
+
+		if (!iov_iter_count(iter))
+			break;
+
+		if (ret < bvec.bv_len)
+			return ret;
+	}
+
+	return out;
+}
+
+static ssize_t msg_copy_to_iov(struct message *msg, struct iov_iter *to)
+{
+	ssize_t copied = 0;
+
+	if (!iov_iter_count(to))
+		return 0;
+
+	if (msg->posn_to_user < sizeof(msg->msg)) {
+		copied = copy_to_iter((char *)(&msg->msg) + msg->posn_to_user,
+				      sizeof(msg->msg) - msg->posn_to_user, to);
+	} else {
+		copied = bio_copy_to_iter(msg->bio, to);
+		if (copied > 0)
+			bio_advance(msg->bio, copied);
+	}
+
+	if (copied < 0)
+		return copied;
+
+	msg->posn_to_user += copied;
+	return copied;
+}
+
+static ssize_t msg_copy_from_iov(struct message *msg, struct iov_iter *from)
+{
+	ssize_t copied = 0;
+
+	if (!iov_iter_count(from))
+		return 0;
+
+	if (msg->posn_from_user < sizeof(msg->msg)) {
+		copied = copy_from_iter(
+			(char *)(&msg->msg) + msg->posn_from_user,
+			sizeof(msg->msg) - msg->posn_from_user, from);
+	} else {
+		copied = bio_copy_from_iter(msg->bio, from);
+		if (copied > 0)
+			bio_advance(msg->bio, copied);
+	}
+
+	if (copied < 0)
+		return copied;
+
+	msg->posn_from_user += copied;
+	return copied;
+}
+
+static struct message *msg_get_map(struct target *t)
+{
+	struct message *m;
+
+	lockdep_assert_held(&t->lock);
+
+	m = mempool_alloc(&t->message_pool, GFP_NOIO);
+	m->msg.seq = t->next_seq_to_map++;
+	INIT_LIST_HEAD(&m->to_user);
+	INIT_LIST_HEAD(&m->from_user);
+	return m;
+}
+
+static struct message *msg_get_to_user(struct target *t)
+{
+	struct message *m;
+
+	lockdep_assert_held(&t->lock);
+
+	if (list_empty(&t->to_user))
+		return NULL;
+
+	m = list_first_entry(&t->to_user, struct message, to_user);
+
+	list_del(&m->to_user);
+
+	/*
+	 * If the IO was queued to workqueue since there
+	 * was no daemon to service the IO, then we
+	 * will have to cancel the delayed work as the
+	 * IO will be processed by this user-space thread.
+	 *
+	 * If the delayed work was already picked up for
+	 * processing, then wait for it to complete. Note
+	 * that the IO will not be terminated by the work
+	 * queue thread.
+	 */
+	if (unlikely(m->delayed)) {
+		mutex_unlock(&t->lock);
+		cancel_delayed_work_sync(&m->work);
+		mutex_lock(&t->lock);
+	}
+	return m;
+}
+
+static struct message *msg_get_from_user(struct channel *c, u64 seq)
+{
+	struct message *m;
+	struct list_head *cur, *tmp;
+
+	lockdep_assert_held(&c->lock);
+
+	list_for_each_safe (cur, tmp, &c->from_user) {
+		m = list_entry(cur, struct message, from_user);
+		if (m->msg.seq == seq) {
+			list_del(&m->from_user);
+			return m;
+		}
+	}
+
+	return NULL;
+}
+
+/*
+ * Returns 0 when there is no work left to do.  This must be callable without
+ * holding the target lock, as it is part of the waitqueue's check expression.
+ * When called without the lock it may spuriously indicate there is remaining
+ * work, but when called with the lock it must be accurate.
+ */
+static int target_poll(struct target *t)
+{
+	return !list_empty(&t->to_user) || t->dm_destroyed;
+}
+
+static void target_release(struct kref *ref)
+{
+	struct target *t = container_of(ref, struct target, references);
+	struct list_head *cur, *tmp;
+
+	/*
+	 * There may be outstanding BIOs that have not yet been given to
+	 * userspace.  At this point there's nothing we can do about them, as
+	 * there are and will never be any channels.
+	 */
+	list_for_each_safe (cur, tmp, &t->to_user) {
+		struct message *m = list_entry(cur, struct message, to_user);
+
+		if (unlikely(m->delayed)) {
+			bool ret;
+
+			mutex_unlock(&t->lock);
+			ret = cancel_delayed_work_sync(&m->work);
+			mutex_lock(&t->lock);
+			if (!ret)
+				continue;
+		}
+		message_kill(m, &t->message_pool);
+	}
+
+	mempool_exit(&t->message_pool);
+	mutex_unlock(&t->lock);
+	mutex_destroy(&t->lock);
+	kfree(t);
+}
+
+static void target_put(struct target *t)
+{
+	/*
+	 * This both releases a reference to the target and the lock.  We leave
+	 * it up to the caller to hold the lock, as they probably needed it for
+	 * something else.
+	 */
+	lockdep_assert_held(&t->lock);
+
+	if (!kref_put(&t->references, target_release)) {
+		/*
+		 * User-space thread is getting terminated.
+		 * We need to scan the list for all those
+		 * pending IO's which were not processed yet
+		 * and put them back to work-queue for delayed
+		 * processing.
+		 */
+		if (!is_user_space_thread_present(t)) {
+			struct list_head *cur, *tmp;
+
+			list_for_each_safe(cur, tmp, &t->to_user) {
+				struct message *m = list_entry(cur,
+							       struct message,
+							       to_user);
+				if (!m->delayed)
+					enqueue_delayed_work(m, false);
+			}
+			/*
+			 * Daemon attached to this target is terminated.
+			 */
+			t->daemon_terminated = true;
+		}
+		mutex_unlock(&t->lock);
+	}
+}
+
+static struct channel *channel_alloc(struct target *t)
+{
+	struct channel *c;
+
+	lockdep_assert_held(&t->lock);
+
+	c = kzalloc(sizeof(*c), GFP_KERNEL);
+	if (c == NULL)
+		return NULL;
+
+	kref_get(&t->references);
+	c->target = t;
+	c->cur_from_user = &c->scratch_message_from_user;
+	mutex_init(&c->lock);
+	INIT_LIST_HEAD(&c->from_user);
+	return c;
+}
+
+static void channel_free(struct channel *c)
+{
+	struct list_head *cur, *tmp;
+
+	lockdep_assert_held(&c->lock);
+
+	/*
+	 * There may be outstanding BIOs that have been given to userspace but
+	 * have not yet been completed.  The channel has been shut down so
+	 * there's no way to process the rest of those messages, so we just go
+	 * ahead and error out the BIOs.  Hopefully whatever's on the other end
+	 * can handle the errors.  One could imagine splitting the BIOs and
+	 * completing as much as we got, but that seems like overkill here.
+	 *
+	 * Our only other options would be to let the BIO hang around (which
+	 * seems way worse) or to resubmit it to userspace in the hope there's
+	 * another channel.  I don't really like the idea of submitting a
+	 * message twice.
+	 */
+	if (c->cur_to_user != NULL)
+		message_kill(c->cur_to_user, &c->target->message_pool);
+	if (c->cur_from_user != &c->scratch_message_from_user)
+		message_kill(c->cur_from_user, &c->target->message_pool);
+	list_for_each_safe (cur, tmp, &c->from_user)
+		message_kill(list_entry(cur, struct message, from_user),
+			     &c->target->message_pool);
+
+	mutex_lock(&c->target->lock);
+	target_put(c->target);
+	mutex_unlock(&c->lock);
+	mutex_destroy(&c->lock);
+	kfree(c);
+}
+
+static int dev_open(struct inode *inode, struct file *file)
+{
+	struct channel *c;
+	struct target *t;
+
+	/*
+	 * This is called by miscdev, which sets private_data to point to the
+	 * struct miscdevice that was opened.  The rest of our file operations
+	 * want to refer to the channel that's been opened, so we swap that
+	 * pointer out with a fresh channel.
+	 *
+	 * This is called with the miscdev lock held, which is also held while
+	 * registering/unregistering the miscdev.  The miscdev must be
+	 * registered for this to get called, which means there must be an
+	 * outstanding reference to the target, which means it cannot be freed
+	 * out from under us despite us not holding a reference yet.
+	 */
+	t = container_of(file->private_data, struct target, miscdev);
+	mutex_lock(&t->lock);
+	file->private_data = c = channel_alloc(t);
+
+	if (c == NULL) {
+		mutex_unlock(&t->lock);
+		return -ENOMEM;
+	}
+
+	mutex_unlock(&t->lock);
+	return 0;
+}
+
+static ssize_t dev_read(struct kiocb *iocb, struct iov_iter *to)
+{
+	struct channel *c = channel_from_file(iocb->ki_filp);
+	ssize_t total_processed = 0;
+	ssize_t processed;
+
+	mutex_lock(&c->lock);
+
+	if (unlikely(c->to_user_error)) {
+		total_processed = c->to_user_error;
+		goto cleanup_unlock;
+	}
+
+	if (c->cur_to_user == NULL) {
+		struct target *t = target_from_channel(c);
+
+		mutex_lock(&t->lock);
+
+		while (!target_poll(t)) {
+			int e;
+
+			mutex_unlock(&t->lock);
+			mutex_unlock(&c->lock);
+			e = wait_event_interruptible(t->wq, target_poll(t));
+			mutex_lock(&c->lock);
+			mutex_lock(&t->lock);
+
+			if (unlikely(e != 0)) {
+				/*
+				 * We haven't processed any bytes in either the
+				 * BIO or the IOV, so we can just terminate
+				 * right now.  Elsewhere in the kernel handles
+				 * restarting the syscall when appropriate.
+				 */
+				total_processed = e;
+				mutex_unlock(&t->lock);
+				goto cleanup_unlock;
+			}
+		}
+
+		if (unlikely(t->dm_destroyed)) {
+			/*
+			 * DM has destroyed this target, so just lock
+			 * the user out.  There's really nothing else
+			 * we can do here.  Note that we don't actually
+			 * tear any thing down until userspace has
+			 * closed the FD, as there may still be
+			 * outstanding BIOs.
+			 *
+			 * This is kind of a wacky error code to
+			 * return.  My goal was really just to try and
+			 * find something that wasn't likely to be
+			 * returned by anything else in the miscdev
+			 * path.  The message "block device required"
+			 * seems like a somewhat reasonable thing to
+			 * say when the target has disappeared out from
+			 * under us, but "not block" isn't sensible.
+			 */
+			c->to_user_error = total_processed = -ENOTBLK;
+			mutex_unlock(&t->lock);
+			goto cleanup_unlock;
+		}
+
+		/*
+		 * Ensures that accesses to the message data are not ordered
+		 * before the remote accesses that produce that message data.
+		 *
+		 * This pairs with the barrier in user_map(), via the
+		 * conditional within the while loop above. Also see the lack
+		 * of barrier in user_dtr(), which is why this can be after the
+		 * destroyed check.
+		 */
+		smp_rmb();
+
+		c->cur_to_user = msg_get_to_user(t);
+		WARN_ON(c->cur_to_user == NULL);
+		mutex_unlock(&t->lock);
+	}
+
+	processed = msg_copy_to_iov(c->cur_to_user, to);
+	total_processed += processed;
+
+	WARN_ON(c->cur_to_user->posn_to_user > c->cur_to_user->total_to_user);
+	if (c->cur_to_user->posn_to_user == c->cur_to_user->total_to_user) {
+		struct message *m = c->cur_to_user;
+
+		c->cur_to_user = NULL;
+		list_add_tail(&m->from_user, &c->from_user);
+	}
+
+cleanup_unlock:
+	mutex_unlock(&c->lock);
+	return total_processed;
+}
+
+static ssize_t dev_write(struct kiocb *iocb, struct iov_iter *from)
+{
+	struct channel *c = channel_from_file(iocb->ki_filp);
+	ssize_t total_processed = 0;
+	ssize_t processed;
+
+	mutex_lock(&c->lock);
+
+	if (unlikely(c->from_user_error)) {
+		total_processed = c->from_user_error;
+		goto cleanup_unlock;
+	}
+
+	/*
+	 * cur_from_user can never be NULL.  If there's no real message it must
+	 * point to the scratch space.
+	 */
+	WARN_ON(c->cur_from_user == NULL);
+	if (c->cur_from_user->posn_from_user < sizeof(struct dm_user_message)) {
+		struct message *msg, *old;
+
+		processed = msg_copy_from_iov(c->cur_from_user, from);
+		if (processed <= 0) {
+			pr_warn("msg_copy_from_iov() returned %zu\n",
+				processed);
+			c->from_user_error = -EINVAL;
+			goto cleanup_unlock;
+		}
+		total_processed += processed;
+
+		/*
+		 * In the unlikely event the user has provided us a very short
+		 * write, not even big enough to fill a message, just succeed.
+		 * We'll eventually build up enough bytes to do something.
+		 */
+		if (unlikely(c->cur_from_user->posn_from_user <
+			     sizeof(struct dm_user_message)))
+			goto cleanup_unlock;
+
+		old = c->cur_from_user;
+		mutex_lock(&c->target->lock);
+		msg = msg_get_from_user(c, c->cur_from_user->msg.seq);
+		if (msg == NULL) {
+			pr_info("user provided an invalid messag seq of %llx\n",
+				old->msg.seq);
+			mutex_unlock(&c->target->lock);
+			c->from_user_error = -EINVAL;
+			goto cleanup_unlock;
+		}
+		mutex_unlock(&c->target->lock);
+
+		WARN_ON(old->posn_from_user != sizeof(struct dm_user_message));
+		msg->posn_from_user = sizeof(struct dm_user_message);
+		msg->return_type = old->msg.type;
+		msg->return_flags = old->msg.flags;
+		WARN_ON(msg->posn_from_user > msg->total_from_user);
+		c->cur_from_user = msg;
+		WARN_ON(old != &c->scratch_message_from_user);
+	}
+
+	/*
+	 * Userspace can signal an error for single requests by overwriting the
+	 * seq field.
+	 */
+	switch (c->cur_from_user->return_type) {
+	case DM_USER_RESP_SUCCESS:
+		c->cur_from_user->bio->bi_status = BLK_STS_OK;
+		break;
+	case DM_USER_RESP_ERROR:
+	case DM_USER_RESP_UNSUPPORTED:
+	default:
+		c->cur_from_user->bio->bi_status = BLK_STS_IOERR;
+		goto finish_bio;
+	}
+
+	/*
+	 * The op was a success as far as userspace is concerned, so process
+	 * whatever data may come along with it.  The user may provide the BIO
+	 * data in multiple chunks, in which case we don't need to finish the
+	 * BIO.
+	 */
+	processed = msg_copy_from_iov(c->cur_from_user, from);
+	total_processed += processed;
+
+	if (c->cur_from_user->posn_from_user <
+	    c->cur_from_user->total_from_user)
+		goto cleanup_unlock;
+
+finish_bio:
+	/*
+	 * When we set up this message the BIO's size matched the
+	 * message size, if that's not still the case then something
+	 * has gone off the rails.
+	 */
+	WARN_ON(bio_size(c->cur_from_user->bio) != 0);
+	bio_endio(c->cur_from_user->bio);
+
+	/*
+	 * We don't actually need to take the target lock here, as all
+	 * we're doing is freeing the message and mempools have their
+	 * own lock.  Each channel has its ows scratch message.
+	 */
+	WARN_ON(c->cur_from_user == &c->scratch_message_from_user);
+	mempool_free(c->cur_from_user, &c->target->message_pool);
+	c->scratch_message_from_user.posn_from_user = 0;
+	c->cur_from_user = &c->scratch_message_from_user;
+
+cleanup_unlock:
+	mutex_unlock(&c->lock);
+	return total_processed;
+}
+
+static int dev_release(struct inode *inode, struct file *file)
+{
+	struct channel *c;
+
+	c = channel_from_file(file);
+	mutex_lock(&c->lock);
+	channel_free(c);
+
+	return 0;
+}
+
+static const struct file_operations file_operations = {
+	.owner = THIS_MODULE,
+	.open = dev_open,
+	.llseek = no_llseek,
+	.read_iter = dev_read,
+	.write_iter = dev_write,
+	.release = dev_release,
+};
+
+static int user_ctr(struct dm_target *ti, unsigned int argc, char **argv)
+{
+	struct target *t;
+	int r;
+
+	if (argc != 3) {
+		ti->error = "Invalid argument count";
+		r = -EINVAL;
+		goto cleanup_none;
+	}
+
+	t = kzalloc(sizeof(*t), GFP_KERNEL);
+	if (t == NULL) {
+		r = -ENOMEM;
+		goto cleanup_none;
+	}
+	ti->private = t;
+
+	/* Enable more BIO types. */
+	ti->num_discard_bios = 1;
+	ti->discards_supported = true;
+	ti->num_flush_bios = 1;
+	ti->flush_supported = true;
+
+	/*
+	 * We begin with a single reference to the target, which is miscdev's
+	 * reference.  This ensures that the target won't be freed
+	 * until after the miscdev has been unregistered and all extant
+	 * channels have been closed.
+	 */
+	kref_init(&t->references);
+
+	t->daemon_terminated = false;
+	mutex_init(&t->lock);
+	init_waitqueue_head(&t->wq);
+	INIT_LIST_HEAD(&t->to_user);
+	mempool_init_kmalloc_pool(&t->message_pool, MAX_OUTSTANDING_MESSAGES,
+				  sizeof(struct message));
+
+	t->miscdev.minor = MISC_DYNAMIC_MINOR;
+	t->miscdev.fops = &file_operations;
+	t->miscdev.name = kasprintf(GFP_KERNEL, "dm-user/%s", argv[2]);
+	if (t->miscdev.name == NULL) {
+		r = -ENOMEM;
+		goto cleanup_message_pool;
+	}
+
+	/*
+	 * Once the miscdev is registered it can be opened and therefor
+	 * concurrent references to the channel can happen.  Holding the target
+	 * lock during misc_register() could deadlock.  If registration
+	 * succeeds then we will not access the target again so we just stick a
+	 * barrier here, which pairs with taking the target lock everywhere
+	 * else the target is accessed.
+	 *
+	 * I forgot where we ended up on the RCpc/RCsc locks.  IIU RCsc locks
+	 * would mean that we could take the target lock earlier and release it
+	 * here instead of the memory barrier.  I'm not sure that's any better,
+	 * though, and this isn't on a hot path so it probably doesn't matter
+	 * either way.
+	 */
+	smp_mb();
+
+	r = misc_register(&t->miscdev);
+	if (r) {
+		DMERR("Unable to register miscdev %s for dm-user",
+		      t->miscdev.name);
+		r = -ENOMEM;
+		goto cleanup_misc_name;
+	}
+
+	return 0;
+
+cleanup_misc_name:
+	kfree(t->miscdev.name);
+cleanup_message_pool:
+	mempool_exit(&t->message_pool);
+	kfree(t);
+cleanup_none:
+	return r;
+}
+
+static void user_dtr(struct dm_target *ti)
+{
+	struct target *t = target_from_target(ti);
+
+	/*
+	 * Removes the miscdev.  This must be called without the target lock
+	 * held to avoid a possible deadlock because our open implementation is
+	 * called holding the miscdev lock and must later take the target lock.
+	 *
+	 * There is no race here because only DM can register/unregister the
+	 * miscdev, and DM ensures that doesn't happen twice.  The internal
+	 * miscdev lock is sufficient to ensure there are no races between
+	 * deregistering the miscdev and open.
+	 */
+	misc_deregister(&t->miscdev);
+
+	/*
+	 * We are now free to take the target's lock and drop our reference to
+	 * the target.  There are almost certainly tasks sleeping in read on at
+	 * least one of the channels associated with this target, this
+	 * explicitly wakes them up and terminates the read.
+	 */
+	mutex_lock(&t->lock);
+	/*
+	 * No barrier here, as wait/wake ensures that the flag visibility is
+	 * correct WRT the wake/sleep state of the target tasks.
+	 */
+	t->dm_destroyed = true;
+	wake_up_all(&t->wq);
+	target_put(t);
+}
+
+/*
+ * Consumes a BIO from device mapper, queueing it up for userspace.
+ */
+static int user_map(struct dm_target *ti, struct bio *bio)
+{
+	struct target *t;
+	struct message *entry;
+
+	t = target_from_target(ti);
+	/*
+	 * FIXME
+	 *
+	 * This seems like a bad idea.  Specifically, here we're
+	 * directly on the IO path when we take the target lock, which may also
+	 * be taken from a user context.  The user context doesn't actively
+	 * trigger anything that may sleep while holding the lock, but this
+	 * still seems like a bad idea.
+	 *
+	 * The obvious way to fix this would be to use a proper queue, which
+	 * would result in no shared locks between the direct IO path and user
+	 * tasks.  I had a version that did this, but the head-of-line blocking
+	 * from the circular buffer resulted in us needing a fairly large
+	 * allocation in order to avoid situations in which the queue fills up
+	 * and everything goes off the rails.
+	 *
+	 * I could jump through a some hoops to avoid a shared lock while still
+	 * allowing for a large queue, but I'm not actually sure that allowing
+	 * for very large queues is the right thing to do here.  Intuitively it
+	 * seems better to keep the queues small in here (essentially sized to
+	 * the user latency for performance reasons only) and rely on returning
+	 * DM_MAPIO_REQUEUE regularly, as that would give the rest of the
+	 * kernel more information.
+	 *
+	 * I'll spend some time trying to figure out what's going on with
+	 * DM_MAPIO_REQUEUE, but if someone has a better idea of how to fix
+	 * this I'm all ears.
+	 */
+	mutex_lock(&t->lock);
+
+	/*
+	 * FIXME
+	 *
+	 * The assumption here is that there's no benefit to returning
+	 * DM_MAPIO_KILL as opposed to just erroring out the BIO, but I'm not
+	 * sure that's actually true -- for example, I could imagine users
+	 * expecting that submitted BIOs are unlikely to fail and therefor
+	 * relying on submission failure to indicate an unsupported type.
+	 *
+	 * There's two ways I can think of to fix this:
+	 *   - Add DM arguments that are parsed during the constructor that
+	 *     allow various dm_target flags to be set that indicate the op
+	 *     types supported by this target.  This may make sense for things
+	 *     like discard, where DM can already transform the BIOs to a form
+	 *     that's likely to be supported.
+	 *   - Some sort of pre-filter that allows userspace to hook in here
+	 *     and kill BIOs before marking them as submitted.  My guess would
+	 *     be that a userspace round trip is a bad idea here, but a BPF
+	 *     call seems resonable.
+	 *
+	 * My guess is that we'd likely want to do both.  The first one is easy
+	 * and gives DM the proper info, so it seems better.  The BPF call
+	 * seems overly complex for just this, but one could imagine wanting to
+	 * sometimes return _MAPPED and a BPF filter would be the way to do
+	 * that.
+	 *
+	 * For example, in Android we have an in-kernel DM device called
+	 * "dm-bow" that takes advange of some portion of the space that has
+	 * been discarded on a device to provide opportunistic block-level
+	 * backups.  While one could imagine just implementing this entirely in
+	 * userspace, that would come with an appreciable performance penalty.
+	 * Instead one could keep a BPF program that forwards most accesses
+	 * directly to the backing block device while informing a userspace
+	 * daemon of any discarded space and on writes to blocks that are to be
+	 * backed up.
+	 */
+	if (unlikely((bio_type_to_user_type(bio) < 0) ||
+		     (bio_flags_to_user_flags(bio) < 0))) {
+		mutex_unlock(&t->lock);
+		return DM_MAPIO_KILL;
+	}
+
+	entry = msg_get_map(t);
+	if (unlikely(entry == NULL)) {
+		mutex_unlock(&t->lock);
+		return DM_MAPIO_REQUEUE;
+	}
+
+	entry->msg.type = bio_type_to_user_type(bio);
+	entry->msg.flags = bio_flags_to_user_flags(bio);
+	entry->msg.sector = bio->bi_iter.bi_sector;
+	entry->msg.len = bio_size(bio);
+	entry->bio = bio;
+	entry->posn_to_user = 0;
+	entry->total_to_user = bio_bytes_needed_to_user(bio);
+	entry->posn_from_user = 0;
+	entry->total_from_user = bio_bytes_needed_from_user(bio);
+	entry->delayed = false;
+	entry->t = t;
+	/* Pairs with the barrier in dev_read() */
+	smp_wmb();
+	list_add_tail(&entry->to_user, &t->to_user);
+
+	/*
+	 * If there is no daemon to process the IO's,
+	 * queue these messages into a workqueue with
+	 * a timeout.
+	 */
+	if (!is_user_space_thread_present(t))
+		enqueue_delayed_work(entry, !t->daemon_terminated);
+
+	wake_up_interruptible(&t->wq);
+	mutex_unlock(&t->lock);
+	return DM_MAPIO_SUBMITTED;
+}
+
+static struct target_type user_target = {
+	.name = "user",
+	.version = { 1, 0, 0 },
+	.module = THIS_MODULE,
+	.ctr = user_ctr,
+	.dtr = user_dtr,
+	.map = user_map,
+};
+
+static int __init dm_user_init(void)
+{
+	int r;
+
+	r = dm_register_target(&user_target);
+	if (r) {
+		DMERR("register failed %d", r);
+		goto error;
+	}
+
+	return 0;
+
+error:
+	return r;
+}
+
+static void __exit dm_user_exit(void)
+{
+	dm_unregister_target(&user_target);
+}
+
+module_init(dm_user_init);
+module_exit(dm_user_exit);
+MODULE_AUTHOR("Palmer Dabbelt <palmerdabbelt@google.com>");
+MODULE_DESCRIPTION(DM_NAME " target returning blocks from userspace");
+MODULE_LICENSE("GPL");
diff --git a/drivers/md/dm-verity-target.c b/drivers/md/dm-verity-target.c
index 14a9988..fd68500 100644
--- a/drivers/md/dm-verity-target.c
+++ b/drivers/md/dm-verity-target.c
@@ -1162,7 +1162,6 @@ static int verity_ctr(struct dm_target *ti, unsigned int argc, char **argv)
 	struct dm_verity_sig_opts verify_args = {0};
 	struct dm_arg_set as;
 	unsigned int num;
-	unsigned int wq_flags;
 	unsigned long long num_ll;
 	int r;
 	int i;
@@ -1399,8 +1398,6 @@ static int verity_ctr(struct dm_target *ti, unsigned int argc, char **argv)
 		goto bad;
 	}
 
-	/* WQ_UNBOUND greatly improves performance when running on ramdisk */
-	wq_flags = WQ_MEM_RECLAIM | WQ_UNBOUND;
 	/*
 	 * Using WQ_HIGHPRI improves throughput and completion latency by
 	 * reducing wait times when reading from a dm-verity device.
@@ -1410,8 +1407,7 @@ static int verity_ctr(struct dm_target *ti, unsigned int argc, char **argv)
 	 * will fall-back to using it for error handling (or if the bufio cache
 	 * doesn't have required hashes).
 	 */
-	wq_flags |= WQ_HIGHPRI;
-	v->verify_wq = alloc_workqueue("kverityd", wq_flags, num_online_cpus());
+	v->verify_wq = alloc_workqueue("kverityd", WQ_MEM_RECLAIM | WQ_HIGHPRI, 0);
 	if (!v->verify_wq) {
 		ti->error = "Cannot allocate workqueue";
 		r = -ENOMEM;
diff --git a/drivers/media/Kconfig b/drivers/media/Kconfig
index 283b78b..351c1e8 100644
--- a/drivers/media/Kconfig
+++ b/drivers/media/Kconfig
@@ -65,8 +65,7 @@
 # Multimedia support - automatically enable V4L2 and DVB core
 #
 config MEDIA_CAMERA_SUPPORT
-	bool
-	prompt "Cameras and video grabbers" if MEDIA_SUPPORT_FILTER
+	bool "Cameras and video grabbers"
 	default y if !MEDIA_SUPPORT_FILTER
 	help
 	  Enable support for webcams and video grabbers.
@@ -74,8 +73,7 @@
 	  Say Y when you have a webcam or a video capture grabber board.
 
 config MEDIA_ANALOG_TV_SUPPORT
-	bool
-	prompt "Analog TV" if MEDIA_SUPPORT_FILTER
+	bool "Analog TV"
 	default y if !MEDIA_SUPPORT_FILTER
 	help
 	  Enable analog TV support.
@@ -88,8 +86,7 @@
 		will disable support for them.
 
 config MEDIA_DIGITAL_TV_SUPPORT
-	bool
-	prompt "Digital TV" if MEDIA_SUPPORT_FILTER
+	bool "Digital TV"
 	default y if !MEDIA_SUPPORT_FILTER
 	help
 	  Enable digital TV support.
@@ -98,8 +95,7 @@
 	  hybrid digital TV and analog TV.
 
 config MEDIA_RADIO_SUPPORT
-	bool
-	prompt "AM/FM radio receivers/transmitters" if MEDIA_SUPPORT_FILTER
+	bool "AM/FM radio receivers/transmitters"
 	default y if !MEDIA_SUPPORT_FILTER
 	help
 	  Enable AM/FM radio support.
@@ -114,8 +110,7 @@
 		disable support for them.
 
 config MEDIA_SDR_SUPPORT
-	bool
-	prompt "Software defined radio" if MEDIA_SUPPORT_FILTER
+	bool "Software defined radio"
 	default y if !MEDIA_SUPPORT_FILTER
 	help
 	  Enable software defined radio support.
@@ -123,8 +118,7 @@
 	  Say Y when you have a software defined radio device.
 
 config MEDIA_PLATFORM_SUPPORT
-	bool
-	prompt "Platform-specific devices" if MEDIA_SUPPORT_FILTER
+	bool "Platform-specific devices"
 	default y if !MEDIA_SUPPORT_FILTER
 	help
 	  Enable support for complex cameras, codecs, and other hardware
@@ -137,8 +131,7 @@
 	  Say Y when you want to be able to see such devices.
 
 config MEDIA_TEST_SUPPORT
-	bool
-	prompt "Test drivers" if MEDIA_SUPPORT_FILTER
+	bool "Test drivers"
 	default y if !MEDIA_SUPPORT_FILTER
 	help
 	  These drivers should not be used on production kernels, but
diff --git a/drivers/media/common/videobuf2/videobuf2-dma-contig.c b/drivers/media/common/videobuf2/videobuf2-dma-contig.c
index 678b359..8efe636 100644
--- a/drivers/media/common/videobuf2/videobuf2-dma-contig.c
+++ b/drivers/media/common/videobuf2/videobuf2-dma-contig.c
@@ -292,7 +292,7 @@ static int vb2_dc_mmap(void *buf_priv, struct vm_area_struct *vma)
 		return ret;
 	}
 
-	vma->vm_flags		|= VM_DONTEXPAND | VM_DONTDUMP;
+	vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP);
 	vma->vm_private_data	= &buf->handler;
 	vma->vm_ops		= &vb2_common_vm_ops;
 
diff --git a/drivers/media/common/videobuf2/videobuf2-vmalloc.c b/drivers/media/common/videobuf2/videobuf2-vmalloc.c
index 948152f..f883b3f 100644
--- a/drivers/media/common/videobuf2/videobuf2-vmalloc.c
+++ b/drivers/media/common/videobuf2/videobuf2-vmalloc.c
@@ -182,7 +182,7 @@ static int vb2_vmalloc_mmap(void *buf_priv, struct vm_area_struct *vma)
 	/*
 	 * Make sure that vm_areas for 2 buffers won't be merged together
 	 */
-	vma->vm_flags		|= VM_DONTEXPAND;
+	vm_flags_set(vma, VM_DONTEXPAND);
 
 	/*
 	 * Use common vm_area operations to track buffer refcount.
diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c
index 6876ec2..91ae25e 100644
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
@@ -1444,7 +1444,9 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt)
 	case V4L2_META_FMT_VIVID:       descr = "Vivid Metadata"; break;
 	case V4L2_META_FMT_RK_ISP1_PARAMS:	descr = "Rockchip ISP1 3A Parameters"; break;
 	case V4L2_META_FMT_RK_ISP1_STAT_3A:	descr = "Rockchip ISP1 3A Statistics"; break;
+	case V4L2_PIX_FMT_NV12_8L128:	descr = "NV12 (8x128 Linear)"; break;
 	case V4L2_PIX_FMT_NV12M_8L128:	descr = "NV12M (8x128 Linear)"; break;
+	case V4L2_PIX_FMT_NV12_10BE_8L128:	descr = "10-bit NV12 (8x128 Linear, BE)"; break;
 	case V4L2_PIX_FMT_NV12M_10BE_8L128:	descr = "10-bit NV12M (8x128 Linear, BE)"; break;
 
 	default:
@@ -1476,6 +1478,9 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt)
 		case V4L2_PIX_FMT_HEVC_SLICE:	descr = "HEVC Parsed Slice Data"; break;
 		case V4L2_PIX_FMT_FWHT:		descr = "FWHT"; break; /* used in vicodec */
 		case V4L2_PIX_FMT_FWHT_STATELESS:	descr = "FWHT Stateless"; break; /* used in vicodec */
+		case V4L2_PIX_FMT_SPK:		descr = "Sorenson Spark"; break;
+		case V4L2_PIX_FMT_RV30:		descr = "RealVideo 8"; break;
+		case V4L2_PIX_FMT_RV40:		descr = "RealVideo 9 & 10"; break;
 		case V4L2_PIX_FMT_CPIA1:	descr = "GSPCA CPiA YUV"; break;
 		case V4L2_PIX_FMT_WNVA:		descr = "WNVA"; break;
 		case V4L2_PIX_FMT_SN9C10X:	descr = "GSPCA SN9C10X"; break;
diff --git a/drivers/media/v4l2-core/videobuf-dma-contig.c b/drivers/media/v4l2-core/videobuf-dma-contig.c
index f2c4393..4c2ec7a0 100644
--- a/drivers/media/v4l2-core/videobuf-dma-contig.c
+++ b/drivers/media/v4l2-core/videobuf-dma-contig.c
@@ -314,7 +314,7 @@ static int __videobuf_mmap_mapper(struct videobuf_queue *q,
 	}
 
 	vma->vm_ops = &videobuf_vm_ops;
-	vma->vm_flags |= VM_DONTEXPAND;
+	vm_flags_set(vma, VM_DONTEXPAND);
 	vma->vm_private_data = map;
 
 	dev_dbg(q->dev, "mmap %p: q=%p %08lx-%08lx (%lx) pgoff %08lx buf %d\n",
diff --git a/drivers/media/v4l2-core/videobuf-dma-sg.c b/drivers/media/v4l2-core/videobuf-dma-sg.c
index f75e5ee..031f553 100644
--- a/drivers/media/v4l2-core/videobuf-dma-sg.c
+++ b/drivers/media/v4l2-core/videobuf-dma-sg.c
@@ -634,8 +634,8 @@ static int __videobuf_mmap_mapper(struct videobuf_queue *q,
 	map->count    = 1;
 	map->q        = q;
 	vma->vm_ops   = &videobuf_vm_ops;
-	vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP;
-	vma->vm_flags &= ~VM_IO; /* using shared anonymous pages */
+	/* using shared anonymous pages */
+	vm_flags_mod(vma, VM_DONTEXPAND | VM_DONTDUMP, VM_IO);
 	vma->vm_private_data = map;
 	dprintk(1, "mmap %p: q=%p %08lx-%08lx pgoff %08lx bufs %d-%d\n",
 		map, q, vma->vm_start, vma->vm_end, vma->vm_pgoff, first, last);
diff --git a/drivers/media/v4l2-core/videobuf-vmalloc.c b/drivers/media/v4l2-core/videobuf-vmalloc.c
index 9b244372..85c7090 100644
--- a/drivers/media/v4l2-core/videobuf-vmalloc.c
+++ b/drivers/media/v4l2-core/videobuf-vmalloc.c
@@ -247,7 +247,7 @@ static int __videobuf_mmap_mapper(struct videobuf_queue *q,
 	}
 
 	vma->vm_ops          = &videobuf_vm_ops;
-	vma->vm_flags       |= VM_DONTEXPAND | VM_DONTDUMP;
+	vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP);
 	vma->vm_private_data = map;
 
 	dprintk(1, "mmap %p: q=%p %08lx-%08lx (%lx) pgoff %08lx buf %d\n",
diff --git a/drivers/message/fusion/mptsas.c b/drivers/message/fusion/mptsas.c
index 34901bc..88fe4a8 100644
--- a/drivers/message/fusion/mptsas.c
+++ b/drivers/message/fusion/mptsas.c
@@ -1952,12 +1952,12 @@ mptsas_qcmd(struct Scsi_Host *shost, struct scsi_cmnd *SCpnt)
  *	@sc: scsi command that the midlayer is about to time out
  *
  **/
-static enum blk_eh_timer_return mptsas_eh_timed_out(struct scsi_cmnd *sc)
+static enum scsi_timeout_action mptsas_eh_timed_out(struct scsi_cmnd *sc)
 {
 	MPT_SCSI_HOST *hd;
 	MPT_ADAPTER   *ioc;
 	VirtDevice    *vdevice;
-	enum blk_eh_timer_return rc = BLK_EH_DONE;
+	enum scsi_timeout_action rc = SCSI_EH_NOT_HANDLED;
 
 	hd = shost_priv(sc->device->host);
 	if (hd == NULL) {
@@ -1980,7 +1980,7 @@ static enum blk_eh_timer_return mptsas_eh_timed_out(struct scsi_cmnd *sc)
 		dtmprintk(ioc, printk(MYIOC_s_WARN_FMT ": %s: ioc is in reset,"
 		    "SML need to reset the timer (sc=%p)\n",
 		    ioc->name, __func__, sc));
-		rc = BLK_EH_RESET_TIMER;
+		rc = SCSI_EH_RESET_TIMER;
 	}
 	vdevice = sc->device->hostdata;
 	if (vdevice && vdevice->vtarget && (vdevice->vtarget->inDMD
@@ -1988,7 +1988,7 @@ static enum blk_eh_timer_return mptsas_eh_timed_out(struct scsi_cmnd *sc)
 		dtmprintk(ioc, printk(MYIOC_s_WARN_FMT ": %s: target removed "
 		    "or in device removal delay (sc=%p)\n",
 		    ioc->name, __func__, sc));
-		rc = BLK_EH_RESET_TIMER;
+		rc = SCSI_EH_RESET_TIMER;
 		goto done;
 	}
 
diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
index 358ad56..4d2026f 100644
--- a/drivers/misc/Kconfig
+++ b/drivers/misc/Kconfig
@@ -461,6 +461,21 @@
 	tristate
 	default MISC_RTSX_PCI || MISC_RTSX_USB
 
+config UID_SYS_STATS
+	bool "Per-UID statistics"
+	depends on PROFILING && TASK_XACCT && TASK_IO_ACCOUNTING
+	help
+	  Per UID based cpu time statistics exported to /proc/uid_cputime
+	  Per UID based io statistics exported to /proc/uid_io
+	  Per UID based procstat control in /proc/uid_procstat
+
+config UID_SYS_STATS_DEBUG
+	bool "Per-TASK statistics"
+	depends on UID_SYS_STATS
+	default n
+	help
+	  Per TASK based io statistics exported to /proc/uid_io
+
 config HISI_HIKEY_USB
 	tristate "USB GPIO Hub on HiSilicon Hikey 960/970 Platform"
 	depends on (OF && GPIOLIB) || COMPILE_TEST
diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile
index ac9b3e7..72b154b 100644
--- a/drivers/misc/Makefile
+++ b/drivers/misc/Makefile
@@ -62,3 +62,4 @@
 obj-$(CONFIG_OPEN_DICE)		+= open-dice.o
 obj-$(CONFIG_GP_PCI1XXXX)	+= mchp_pci1xxxx/
 obj-$(CONFIG_VCPU_STALL_DETECTOR)	+= vcpu_stall_detector.o
+obj-$(CONFIG_UID_SYS_STATS)	+= uid_sys_stats.o
diff --git a/drivers/misc/cxl/context.c b/drivers/misc/cxl/context.c
index acaa448..76b5ea6 100644
--- a/drivers/misc/cxl/context.c
+++ b/drivers/misc/cxl/context.c
@@ -220,7 +220,7 @@ int cxl_context_iomap(struct cxl_context *ctx, struct vm_area_struct *vma)
 	pr_devel("%s: mmio physical: %llx pe: %i master:%i\n", __func__,
 		 ctx->psn_phys, ctx->pe , ctx->master);
 
-	vma->vm_flags |= VM_IO | VM_PFNMAP;
+	vm_flags_set(vma, VM_IO | VM_PFNMAP);
 	vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
 	vma->vm_ops = &cxl_mmap_vmops;
 	return 0;
diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c
index 8b1e866..e150227 100644
--- a/drivers/misc/fastrpc.c
+++ b/drivers/misc/fastrpc.c
@@ -247,7 +247,7 @@ struct fastrpc_channel_ctx {
 	int domain_id;
 	int sesscount;
 	int vmcount;
-	u32 perms;
+	u64 perms;
 	struct qcom_scm_vmperm vmperms[FASTRPC_MAX_VMIDS];
 	struct rpmsg_device *rpdev;
 	struct fastrpc_session_ctx session[FASTRPC_MAX_SESSIONS];
@@ -303,7 +303,7 @@ static void fastrpc_free_map(struct kref *ref)
 			perm.vmid = QCOM_SCM_VMID_HLOS;
 			perm.perm = QCOM_SCM_PERM_RWX;
 			err = qcom_scm_assign_mem(map->phys, map->size,
-				&(map->fl->cctx->vmperms[0].vmid), &perm, 1);
+				&map->fl->cctx->perms, &perm, 1);
 			if (err) {
 				dev_err(map->fl->sctx->dev, "Failed to assign memory phys 0x%llx size 0x%llx err %d",
 						map->phys, map->size, err);
@@ -754,10 +754,8 @@ static int fastrpc_map_create(struct fastrpc_user *fl, int fd,
 		 * If subsystem VMIDs are defined in DTSI, then do
 		 * hyp_assign from HLOS to those VM(s)
 		 */
-		unsigned int perms = BIT(QCOM_SCM_VMID_HLOS);
-
 		map->attr = attr;
-		err = qcom_scm_assign_mem(map->phys, (u64)map->size, &perms,
+		err = qcom_scm_assign_mem(map->phys, (u64)map->size, &fl->cctx->perms,
 				fl->cctx->vmperms, fl->cctx->vmcount);
 		if (err) {
 			dev_err(sess->dev, "Failed to assign memory with phys 0x%llx size 0x%llx err %d",
diff --git a/drivers/misc/habanalabs/common/memory.c b/drivers/misc/habanalabs/common/memory.c
index a49038d..1d13c05 100644
--- a/drivers/misc/habanalabs/common/memory.c
+++ b/drivers/misc/habanalabs/common/memory.c
@@ -2082,7 +2082,7 @@ static int hl_ts_mmap(struct hl_mmap_mem_buf *buf, struct vm_area_struct *vma, v
 {
 	struct hl_ts_buff *ts_buff = buf->private;
 
-	vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP | VM_DONTCOPY | VM_NORESERVE;
+	vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP | VM_DONTCOPY | VM_NORESERVE);
 	return remap_vmalloc_range(vma, ts_buff->user_buff_address, 0);
 }
 
diff --git a/drivers/misc/habanalabs/gaudi/gaudi.c b/drivers/misc/habanalabs/gaudi/gaudi.c
index 9256041..493015a 100644
--- a/drivers/misc/habanalabs/gaudi/gaudi.c
+++ b/drivers/misc/habanalabs/gaudi/gaudi.c
@@ -4236,8 +4236,8 @@ static int gaudi_mmap(struct hl_device *hdev, struct vm_area_struct *vma,
 {
 	int rc;
 
-	vma->vm_flags |= VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP |
-			VM_DONTCOPY | VM_NORESERVE;
+	vm_flags_set(vma, VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP |
+			VM_DONTCOPY | VM_NORESERVE);
 
 	rc = dma_mmap_coherent(hdev->dev, vma, cpu_addr,
 				(dma_addr - HOST_PHYS_BASE), size);
diff --git a/drivers/misc/habanalabs/gaudi2/gaudi2.c b/drivers/misc/habanalabs/gaudi2/gaudi2.c
index 65e6cae..98448ad 100644
--- a/drivers/misc/habanalabs/gaudi2/gaudi2.c
+++ b/drivers/misc/habanalabs/gaudi2/gaudi2.c
@@ -5599,8 +5599,8 @@ static int gaudi2_mmap(struct hl_device *hdev, struct vm_area_struct *vma,
 {
 	int rc;
 
-	vma->vm_flags |= VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP |
-			VM_DONTCOPY | VM_NORESERVE;
+	vm_flags_set(vma, VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP |
+			VM_DONTCOPY | VM_NORESERVE);
 
 #ifdef _HAS_DMA_MMAP_COHERENT
 
@@ -9894,8 +9894,8 @@ static int gaudi2_block_mmap(struct hl_device *hdev, struct vm_area_struct *vma,
 
 	address = pci_resource_start(hdev->pdev, SRAM_CFG_BAR_ID) + offset_in_bar;
 
-	vma->vm_flags |= VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP |
-			VM_DONTCOPY | VM_NORESERVE;
+	vm_flags_set(vma, VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP |
+			VM_DONTCOPY | VM_NORESERVE);
 
 	rc = remap_pfn_range(vma, vma->vm_start, address >> PAGE_SHIFT,
 			block_size, vma->vm_page_prot);
diff --git a/drivers/misc/habanalabs/goya/goya.c b/drivers/misc/habanalabs/goya/goya.c
index 5ef9e3c..b09d0bb 100644
--- a/drivers/misc/habanalabs/goya/goya.c
+++ b/drivers/misc/habanalabs/goya/goya.c
@@ -2880,8 +2880,8 @@ static int goya_mmap(struct hl_device *hdev, struct vm_area_struct *vma,
 {
 	int rc;
 
-	vma->vm_flags |= VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP |
-			VM_DONTCOPY | VM_NORESERVE;
+	vm_flags_set(vma, VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP |
+			VM_DONTCOPY | VM_NORESERVE);
 
 	rc = dma_mmap_coherent(hdev->dev, vma, cpu_addr,
 				(dma_addr - HOST_PHYS_BASE), size);
diff --git a/drivers/misc/ocxl/context.c b/drivers/misc/ocxl/context.c
index 9eb0d93..7f83116 100644
--- a/drivers/misc/ocxl/context.c
+++ b/drivers/misc/ocxl/context.c
@@ -180,7 +180,7 @@ static int check_mmap_afu_irq(struct ocxl_context *ctx,
 	if ((vma->vm_flags & VM_READ) || (vma->vm_flags & VM_EXEC) ||
 		!(vma->vm_flags & VM_WRITE))
 		return -EINVAL;
-	vma->vm_flags &= ~(VM_MAYREAD | VM_MAYEXEC);
+	vm_flags_clear(vma, VM_MAYREAD | VM_MAYEXEC);
 	return 0;
 }
 
@@ -204,7 +204,7 @@ int ocxl_context_mmap(struct ocxl_context *ctx, struct vm_area_struct *vma)
 	if (rc)
 		return rc;
 
-	vma->vm_flags |= VM_IO | VM_PFNMAP;
+	vm_flags_set(vma, VM_IO | VM_PFNMAP);
 	vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
 	vma->vm_ops = &ocxl_vmops;
 	return 0;
diff --git a/drivers/misc/ocxl/sysfs.c b/drivers/misc/ocxl/sysfs.c
index 25c78df..405180d 100644
--- a/drivers/misc/ocxl/sysfs.c
+++ b/drivers/misc/ocxl/sysfs.c
@@ -134,7 +134,7 @@ static int global_mmio_mmap(struct file *filp, struct kobject *kobj,
 		(afu->config.global_mmio_size >> PAGE_SHIFT))
 		return -EINVAL;
 
-	vma->vm_flags |= VM_IO | VM_PFNMAP;
+	vm_flags_set(vma, VM_IO | VM_PFNMAP);
 	vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
 	vma->vm_ops = &global_mmio_vmops;
 	vma->vm_private_data = afu;
diff --git a/drivers/misc/open-dice.c b/drivers/misc/open-dice.c
index c61be34..29bce79 100644
--- a/drivers/misc/open-dice.c
+++ b/drivers/misc/open-dice.c
@@ -96,13 +96,13 @@ static int open_dice_mmap(struct file *filp, struct vm_area_struct *vma)
 
 	/* Ensure userspace cannot acquire VM_WRITE + VM_SHARED later. */
 	if (vma->vm_flags & VM_WRITE)
-		vma->vm_flags &= ~VM_MAYSHARE;
+		vm_flags_clear(vma, VM_MAYSHARE);
 	else if (vma->vm_flags & VM_SHARED)
-		vma->vm_flags &= ~VM_MAYWRITE;
+		vm_flags_clear(vma, VM_MAYWRITE);
 
 	/* Create write-combine mapping so all clients observe a wipe. */
 	vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot);
-	vma->vm_flags |= VM_DONTCOPY | VM_DONTDUMP;
+	vm_flags_set(vma, VM_DONTCOPY | VM_DONTDUMP);
 	return vm_iomap_memory(vma, drvdata->rmem->base, drvdata->rmem->size);
 }
 
diff --git a/drivers/misc/sgi-gru/grufile.c b/drivers/misc/sgi-gru/grufile.c
index 7ffcfc0..a3d659c 100644
--- a/drivers/misc/sgi-gru/grufile.c
+++ b/drivers/misc/sgi-gru/grufile.c
@@ -101,8 +101,8 @@ static int gru_file_mmap(struct file *file, struct vm_area_struct *vma)
 				vma->vm_end & (GRU_GSEG_PAGESIZE - 1))
 		return -EINVAL;
 
-	vma->vm_flags |= VM_IO | VM_PFNMAP | VM_LOCKED |
-			 VM_DONTCOPY | VM_DONTEXPAND | VM_DONTDUMP;
+	vm_flags_set(vma, VM_IO | VM_PFNMAP | VM_LOCKED |
+			 VM_DONTCOPY | VM_DONTEXPAND | VM_DONTDUMP);
 	vma->vm_page_prot = PAGE_SHARED;
 	vma->vm_ops = &gru_vm_ops;
 
diff --git a/drivers/misc/uacce/uacce.c b/drivers/misc/uacce/uacce.c
index b70a013..b65ab44 100644
--- a/drivers/misc/uacce/uacce.c
+++ b/drivers/misc/uacce/uacce.c
@@ -108,7 +108,7 @@ static int uacce_bind_queue(struct uacce_device *uacce, struct uacce_queue *q)
 	if (!(uacce->flags & UACCE_DEV_SVA))
 		return 0;
 
-	handle = iommu_sva_bind_device(uacce->parent, current->mm, NULL);
+	handle = iommu_sva_bind_device(uacce->parent, current->mm);
 	if (IS_ERR(handle))
 		return PTR_ERR(handle);
 
@@ -229,7 +229,7 @@ static int uacce_fops_mmap(struct file *filep, struct vm_area_struct *vma)
 	if (!qfr)
 		return -ENOMEM;
 
-	vma->vm_flags |= VM_DONTCOPY | VM_DONTEXPAND | VM_WIPEONFORK;
+	vm_flags_set(vma, VM_DONTCOPY | VM_DONTEXPAND | VM_WIPEONFORK);
 	vma->vm_ops = &uacce_vm_ops;
 	vma->vm_private_data = q;
 	qfr->type = type;
diff --git a/drivers/misc/uid_sys_stats.c b/drivers/misc/uid_sys_stats.c
new file mode 100644
index 0000000..36a34b1
--- /dev/null
+++ b/drivers/misc/uid_sys_stats.c
@@ -0,0 +1,774 @@
+/* drivers/misc/uid_sys_stats.c
+ *
+ * Copyright (C) 2014 - 2015 Google, Inc.
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#include <linux/atomic.h>
+#include <linux/err.h>
+#include <linux/hashtable.h>
+#include <linux/init.h>
+#include <linux/kernel.h>
+#include <linux/list.h>
+#include <linux/mm.h>
+#include <linux/proc_fs.h>
+#include <linux/profile.h>
+#include <linux/rtmutex.h>
+#include <linux/sched/cputime.h>
+#include <linux/seq_file.h>
+#include <linux/slab.h>
+#include <linux/uaccess.h>
+
+
+#define UID_HASH_BITS	10
+DECLARE_HASHTABLE(hash_table, UID_HASH_BITS);
+
+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;
+
+struct io_stats {
+	u64 read_bytes;
+	u64 write_bytes;
+	u64 rchar;
+	u64 wchar;
+	u64 fsync;
+};
+
+#define UID_STATE_FOREGROUND	0
+#define UID_STATE_BACKGROUND	1
+#define UID_STATE_BUCKET_SIZE	2
+
+#define UID_STATE_TOTAL_CURR	2
+#define UID_STATE_TOTAL_LAST	3
+#define UID_STATE_DEAD_TASKS	4
+#define UID_STATE_SIZE		5
+
+#define MAX_TASK_COMM_LEN 256
+
+struct task_entry {
+	char comm[MAX_TASK_COMM_LEN];
+	pid_t pid;
+	struct io_stats io[UID_STATE_SIZE];
+	struct hlist_node hash;
+};
+
+struct uid_entry {
+	uid_t uid;
+	u64 utime;
+	u64 stime;
+	u64 active_utime;
+	u64 active_stime;
+	int state;
+	struct io_stats io[UID_STATE_SIZE];
+	struct hlist_node hash;
+#ifdef CONFIG_UID_SYS_STATS_DEBUG
+	DECLARE_HASHTABLE(task_entries, UID_HASH_BITS);
+#endif
+};
+
+static u64 compute_write_bytes(struct task_io_accounting *ioac)
+{
+	if (ioac->write_bytes <= ioac->cancelled_write_bytes)
+		return 0;
+
+	return ioac->write_bytes - ioac->cancelled_write_bytes;
+}
+
+static void compute_io_bucket_stats(struct io_stats *io_bucket,
+					struct io_stats *io_curr,
+					struct io_stats *io_last,
+					struct io_stats *io_dead)
+{
+	/* tasks could switch to another uid group, but its io_last in the
+	 * previous uid group could still be positive.
+	 * therefore before each update, do an overflow check first
+	 */
+	int64_t delta;
+
+	delta = io_curr->read_bytes + io_dead->read_bytes -
+		io_last->read_bytes;
+	io_bucket->read_bytes += delta > 0 ? delta : 0;
+	delta = io_curr->write_bytes + io_dead->write_bytes -
+		io_last->write_bytes;
+	io_bucket->write_bytes += delta > 0 ? delta : 0;
+	delta = io_curr->rchar + io_dead->rchar - io_last->rchar;
+	io_bucket->rchar += delta > 0 ? delta : 0;
+	delta = io_curr->wchar + io_dead->wchar - io_last->wchar;
+	io_bucket->wchar += delta > 0 ? delta : 0;
+	delta = io_curr->fsync + io_dead->fsync - io_last->fsync;
+	io_bucket->fsync += delta > 0 ? delta : 0;
+
+	io_last->read_bytes = io_curr->read_bytes;
+	io_last->write_bytes = io_curr->write_bytes;
+	io_last->rchar = io_curr->rchar;
+	io_last->wchar = io_curr->wchar;
+	io_last->fsync = io_curr->fsync;
+
+	memset(io_dead, 0, sizeof(struct io_stats));
+}
+
+#ifdef CONFIG_UID_SYS_STATS_DEBUG
+static void get_full_task_comm(struct task_entry *task_entry,
+		struct task_struct *task)
+{
+	int i = 0, offset = 0, len = 0;
+	/* save one byte for terminating null character */
+	int unused_len = MAX_TASK_COMM_LEN - TASK_COMM_LEN - 1;
+	char buf[MAX_TASK_COMM_LEN - TASK_COMM_LEN - 1];
+	struct mm_struct *mm = task->mm;
+
+	/* fill the first TASK_COMM_LEN bytes with thread name */
+	__get_task_comm(task_entry->comm, TASK_COMM_LEN, task);
+	i = strlen(task_entry->comm);
+	while (i < TASK_COMM_LEN)
+		task_entry->comm[i++] = ' ';
+
+	/* next the executable file name */
+	if (mm) {
+		mmap_write_lock(mm);
+		if (mm->exe_file) {
+			char *pathname = d_path(&mm->exe_file->f_path, buf,
+					unused_len);
+
+			if (!IS_ERR(pathname)) {
+				len = strlcpy(task_entry->comm + i, pathname,
+						unused_len);
+				i += len;
+				task_entry->comm[i++] = ' ';
+				unused_len--;
+			}
+		}
+		mmap_write_unlock(mm);
+	}
+	unused_len -= len;
+
+	/* fill the rest with command line argument
+	 * replace each null or new line character
+	 * between args in argv with whitespace */
+	len = get_cmdline(task, buf, unused_len);
+	while (offset < len) {
+		if (buf[offset] != '\0' && buf[offset] != '\n')
+			task_entry->comm[i++] = buf[offset];
+		else
+			task_entry->comm[i++] = ' ';
+		offset++;
+	}
+
+	/* get rid of trailing whitespaces in case when arg is memset to
+	 * zero before being reset in userspace
+	 */
+	while (task_entry->comm[i-1] == ' ')
+		i--;
+	task_entry->comm[i] = '\0';
+}
+
+static struct task_entry *find_task_entry(struct uid_entry *uid_entry,
+		struct task_struct *task)
+{
+	struct task_entry *task_entry;
+
+	hash_for_each_possible(uid_entry->task_entries, task_entry, hash,
+			task->pid) {
+		if (task->pid == task_entry->pid) {
+			/* if thread name changed, update the entire command */
+			int len = strnchr(task_entry->comm, ' ', TASK_COMM_LEN)
+				- task_entry->comm;
+
+			if (strncmp(task_entry->comm, task->comm, len))
+				get_full_task_comm(task_entry, task);
+			return task_entry;
+		}
+	}
+	return NULL;
+}
+
+static struct task_entry *find_or_register_task(struct uid_entry *uid_entry,
+		struct task_struct *task)
+{
+	struct task_entry *task_entry;
+	pid_t pid = task->pid;
+
+	task_entry = find_task_entry(uid_entry, task);
+	if (task_entry)
+		return task_entry;
+
+	task_entry = kzalloc(sizeof(struct task_entry), GFP_ATOMIC);
+	if (!task_entry)
+		return NULL;
+
+	get_full_task_comm(task_entry, task);
+
+	task_entry->pid = pid;
+	hash_add(uid_entry->task_entries, &task_entry->hash, (unsigned int)pid);
+
+	return task_entry;
+}
+
+static void remove_uid_tasks(struct uid_entry *uid_entry)
+{
+	struct task_entry *task_entry;
+	unsigned long bkt_task;
+	struct hlist_node *tmp_task;
+
+	hash_for_each_safe(uid_entry->task_entries, bkt_task,
+			tmp_task, task_entry, hash) {
+		hash_del(&task_entry->hash);
+		kfree(task_entry);
+	}
+}
+
+static void set_io_uid_tasks_zero(struct uid_entry *uid_entry)
+{
+	struct task_entry *task_entry;
+	unsigned long bkt_task;
+
+	hash_for_each(uid_entry->task_entries, bkt_task, task_entry, hash) {
+		memset(&task_entry->io[UID_STATE_TOTAL_CURR], 0,
+			sizeof(struct io_stats));
+	}
+}
+
+static void add_uid_tasks_io_stats(struct task_entry *task_entry,
+				   struct task_io_accounting *ioac, int slot)
+{
+	struct io_stats *task_io_slot = &task_entry->io[slot];
+
+	task_io_slot->read_bytes += ioac->read_bytes;
+	task_io_slot->write_bytes += compute_write_bytes(ioac);
+	task_io_slot->rchar += ioac->rchar;
+	task_io_slot->wchar += ioac->wchar;
+	task_io_slot->fsync += ioac->syscfs;
+}
+
+static void compute_io_uid_tasks(struct uid_entry *uid_entry)
+{
+	struct task_entry *task_entry;
+	unsigned long bkt_task;
+
+	hash_for_each(uid_entry->task_entries, bkt_task, task_entry, hash) {
+		compute_io_bucket_stats(&task_entry->io[uid_entry->state],
+					&task_entry->io[UID_STATE_TOTAL_CURR],
+					&task_entry->io[UID_STATE_TOTAL_LAST],
+					&task_entry->io[UID_STATE_DEAD_TASKS]);
+	}
+}
+
+static void show_io_uid_tasks(struct seq_file *m, struct uid_entry *uid_entry)
+{
+	struct task_entry *task_entry;
+	unsigned long bkt_task;
+
+	hash_for_each(uid_entry->task_entries, bkt_task, task_entry, hash) {
+		/* Separated by comma because space exists in task comm */
+		seq_printf(m, "task,%s,%lu,%llu,%llu,%llu,%llu,%llu,%llu,%llu,%llu,%llu,%llu\n",
+				task_entry->comm,
+				(unsigned long)task_entry->pid,
+				task_entry->io[UID_STATE_FOREGROUND].rchar,
+				task_entry->io[UID_STATE_FOREGROUND].wchar,
+				task_entry->io[UID_STATE_FOREGROUND].read_bytes,
+				task_entry->io[UID_STATE_FOREGROUND].write_bytes,
+				task_entry->io[UID_STATE_BACKGROUND].rchar,
+				task_entry->io[UID_STATE_BACKGROUND].wchar,
+				task_entry->io[UID_STATE_BACKGROUND].read_bytes,
+				task_entry->io[UID_STATE_BACKGROUND].write_bytes,
+				task_entry->io[UID_STATE_FOREGROUND].fsync,
+				task_entry->io[UID_STATE_BACKGROUND].fsync);
+	}
+}
+#else
+static void remove_uid_tasks(struct uid_entry *uid_entry) {};
+static void set_io_uid_tasks_zero(struct uid_entry *uid_entry) {};
+static void compute_io_uid_tasks(struct uid_entry *uid_entry) {};
+static void show_io_uid_tasks(struct seq_file *m,
+		struct uid_entry *uid_entry) {}
+#endif
+
+static struct uid_entry *find_uid_entry(uid_t uid)
+{
+	struct uid_entry *uid_entry;
+	hash_for_each_possible(hash_table, uid_entry, hash, uid) {
+		if (uid_entry->uid == uid)
+			return uid_entry;
+	}
+	return NULL;
+}
+
+static struct uid_entry *find_or_register_uid(uid_t uid)
+{
+	struct uid_entry *uid_entry;
+
+	uid_entry = find_uid_entry(uid);
+	if (uid_entry)
+		return uid_entry;
+
+	uid_entry = kzalloc(sizeof(struct uid_entry), GFP_ATOMIC);
+	if (!uid_entry)
+		return NULL;
+
+	uid_entry->uid = uid;
+#ifdef CONFIG_UID_SYS_STATS_DEBUG
+	hash_init(uid_entry->task_entries);
+#endif
+	hash_add(hash_table, &uid_entry->hash, uid);
+
+	return uid_entry;
+}
+
+static int uid_cputime_show(struct seq_file *m, void *v)
+{
+	struct uid_entry *uid_entry = NULL;
+	struct task_struct *task, *temp;
+	struct user_namespace *user_ns = current_user_ns();
+	u64 utime;
+	u64 stime;
+	unsigned long 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;
+	}
+
+	rcu_read_lock();
+	do_each_thread(temp, task) {
+		uid = from_kuid_munged(user_ns, task_uid(task));
+		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);
+			pr_err("%s: failed to find the uid_entry for uid %d\n",
+				__func__, uid);
+			return -ENOMEM;
+		}
+		/* avoid double accounting of dying threads */
+		if (!(task->flags & PF_EXITING)) {
+			task_cputime_adjusted(task, &utime, &stime);
+			uid_entry->active_utime += utime;
+			uid_entry->active_stime += stime;
+		}
+	} 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));
+	}
+
+	rt_mutex_unlock(&uid_lock);
+	return 0;
+}
+
+static int uid_cputime_open(struct inode *inode, struct file *file)
+{
+	return single_open(file, uid_cputime_show, pde_data(inode));
+}
+
+static const struct proc_ops uid_cputime_fops = {
+	.proc_open	= uid_cputime_open,
+	.proc_read	= seq_read,
+	.proc_lseek	= seq_lseek,
+	.proc_release	= single_release,
+};
+
+static int uid_remove_open(struct inode *inode, struct file *file)
+{
+	return single_open(file, NULL, NULL);
+}
+
+static ssize_t uid_remove_write(struct file *file,
+			const char __user *buffer, size_t count, loff_t *ppos)
+{
+	struct uid_entry *uid_entry;
+	struct hlist_node *tmp;
+	char uids[128];
+	char *start_uid, *end_uid = NULL;
+	long int uid_start = 0, uid_end = 0;
+
+	if (count >= sizeof(uids))
+		count = sizeof(uids) - 1;
+
+	if (copy_from_user(uids, buffer, count))
+		return -EFAULT;
+
+	uids[count] = '\0';
+	end_uid = uids;
+	start_uid = strsep(&end_uid, "-");
+
+	if (!start_uid || !end_uid)
+		return -EINVAL;
+
+	if (kstrtol(start_uid, 10, &uid_start) != 0 ||
+		kstrtol(end_uid, 10, &uid_end) != 0) {
+		return -EINVAL;
+	}
+
+	rt_mutex_lock(&uid_lock);
+
+	for (; uid_start <= uid_end; uid_start++) {
+		hash_for_each_possible_safe(hash_table, uid_entry, tmp,
+							hash, (uid_t)uid_start) {
+			if (uid_start == uid_entry->uid) {
+				remove_uid_tasks(uid_entry);
+				hash_del(&uid_entry->hash);
+				kfree(uid_entry);
+			}
+		}
+	}
+
+	rt_mutex_unlock(&uid_lock);
+	return count;
+}
+
+static const struct proc_ops uid_remove_fops = {
+	.proc_open	= uid_remove_open,
+	.proc_release	= single_release,
+	.proc_write	= uid_remove_write,
+};
+
+static void __add_uid_io_stats(struct uid_entry *uid_entry,
+			struct task_io_accounting *ioac, int slot)
+{
+	struct io_stats *io_slot = &uid_entry->io[slot];
+
+	io_slot->read_bytes += ioac->read_bytes;
+	io_slot->write_bytes += compute_write_bytes(ioac);
+	io_slot->rchar += ioac->rchar;
+	io_slot->wchar += ioac->wchar;
+	io_slot->fsync += ioac->syscfs;
+}
+
+static void add_uid_io_stats(struct uid_entry *uid_entry,
+			struct task_struct *task, int slot)
+{
+	struct task_entry *task_entry __maybe_unused;
+
+	/* avoid double accounting of dying threads */
+	if (slot != UID_STATE_DEAD_TASKS && (task->flags & PF_EXITING))
+		return;
+
+#ifdef CONFIG_UID_SYS_STATS_DEBUG
+	task_entry = find_or_register_task(uid_entry, task);
+	add_uid_tasks_io_stats(task_entry, &task->ioac, slot);
+#endif
+	__add_uid_io_stats(uid_entry, &task->ioac, slot);
+}
+
+static void update_io_stats_all_locked(void)
+{
+	struct uid_entry *uid_entry = NULL;
+	struct task_struct *task, *temp;
+	struct user_namespace *user_ns = current_user_ns();
+	unsigned long 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);
+	}
+
+	rcu_read_lock();
+	do_each_thread(temp, task) {
+		uid = from_kuid_munged(user_ns, task_uid(task));
+		if (!uid_entry || uid_entry->uid != uid)
+			uid_entry = find_or_register_uid(uid);
+		if (!uid_entry)
+			continue;
+		add_uid_io_stats(uid_entry, task, UID_STATE_TOTAL_CURR);
+	} 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);
+	}
+}
+
+static void update_io_stats_uid_locked(struct uid_entry *uid_entry)
+{
+	struct task_struct *task, *temp;
+	struct user_namespace *user_ns = current_user_ns();
+
+	memset(&uid_entry->io[UID_STATE_TOTAL_CURR], 0,
+		sizeof(struct io_stats));
+	set_io_uid_tasks_zero(uid_entry);
+
+	rcu_read_lock();
+	do_each_thread(temp, task) {
+		if (from_kuid_munged(user_ns, task_uid(task)) != uid_entry->uid)
+			continue;
+		add_uid_io_stats(uid_entry, task, UID_STATE_TOTAL_CURR);
+	} while_each_thread(temp, task);
+	rcu_read_unlock();
+
+	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);
+}
+
+
+static int uid_io_show(struct seq_file *m, void *v)
+{
+	struct uid_entry *uid_entry;
+	unsigned long bkt;
+
+	rt_mutex_lock(&uid_lock);
+
+	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",
+				uid_entry->uid,
+				uid_entry->io[UID_STATE_FOREGROUND].rchar,
+				uid_entry->io[UID_STATE_FOREGROUND].wchar,
+				uid_entry->io[UID_STATE_FOREGROUND].read_bytes,
+				uid_entry->io[UID_STATE_FOREGROUND].write_bytes,
+				uid_entry->io[UID_STATE_BACKGROUND].rchar,
+				uid_entry->io[UID_STATE_BACKGROUND].wchar,
+				uid_entry->io[UID_STATE_BACKGROUND].read_bytes,
+				uid_entry->io[UID_STATE_BACKGROUND].write_bytes,
+				uid_entry->io[UID_STATE_FOREGROUND].fsync,
+				uid_entry->io[UID_STATE_BACKGROUND].fsync);
+
+		show_io_uid_tasks(m, uid_entry);
+	}
+
+	rt_mutex_unlock(&uid_lock);
+	return 0;
+}
+
+static int uid_io_open(struct inode *inode, struct file *file)
+{
+	return single_open(file, uid_io_show, pde_data(inode));
+}
+
+static const struct proc_ops uid_io_fops = {
+	.proc_open	= uid_io_open,
+	.proc_read	= seq_read,
+	.proc_lseek	= seq_lseek,
+	.proc_release	= single_release,
+};
+
+static int uid_procstat_open(struct inode *inode, struct file *file)
+{
+	return single_open(file, NULL, NULL);
+}
+
+static ssize_t uid_procstat_write(struct file *file,
+			const char __user *buffer, size_t count, loff_t *ppos)
+{
+	struct uid_entry *uid_entry;
+	uid_t uid;
+	int argc, state;
+	char input[128];
+
+	if (count >= sizeof(input))
+		return -EINVAL;
+
+	if (copy_from_user(input, buffer, count))
+		return -EFAULT;
+
+	input[count] = '\0';
+
+	argc = sscanf(input, "%u %d", &uid, &state);
+	if (argc != 2)
+		return -EINVAL;
+
+	if (state != UID_STATE_BACKGROUND && state != UID_STATE_FOREGROUND)
+		return -EINVAL;
+
+	rt_mutex_lock(&uid_lock);
+
+	uid_entry = find_or_register_uid(uid);
+	if (!uid_entry) {
+		rt_mutex_unlock(&uid_lock);
+		return -EINVAL;
+	}
+
+	if (uid_entry->state == state) {
+		rt_mutex_unlock(&uid_lock);
+		return count;
+	}
+
+	update_io_stats_uid_locked(uid_entry);
+
+	uid_entry->state = state;
+
+	rt_mutex_unlock(&uid_lock);
+
+	return count;
+}
+
+static const struct proc_ops uid_procstat_fops = {
+	.proc_open	= uid_procstat_open,
+	.proc_release	= single_release,
+	.proc_write	= uid_procstat_write,
+};
+
+struct update_stats_work {
+	struct work_struct work;
+	uid_t uid;
+#ifdef CONFIG_UID_SYS_STATS_DEBUG
+	struct task_struct *task;
+#endif
+	struct task_io_accounting ioac;
+	u64 utime;
+	u64 stime;
+};
+
+static void update_stats_workfn(struct work_struct *work)
+{
+	struct update_stats_work *usw =
+		container_of(work, struct update_stats_work, work);
+	struct uid_entry *uid_entry;
+	struct task_entry *task_entry __maybe_unused;
+
+	rt_mutex_lock(&uid_lock);
+	uid_entry = find_uid_entry(usw->uid);
+	if (!uid_entry)
+		goto exit;
+
+	uid_entry->utime += usw->utime;
+	uid_entry->stime += usw->stime;
+
+#ifdef CONFIG_UID_SYS_STATS_DEBUG
+	task_entry = find_task_entry(uid_entry, usw->task);
+	if (!task_entry)
+		goto exit;
+	add_uid_tasks_io_stats(task_entry, &usw->ioac,
+			       UID_STATE_DEAD_TASKS);
+#endif
+	__add_uid_io_stats(uid_entry, &usw->ioac, UID_STATE_DEAD_TASKS);
+exit:
+	rt_mutex_unlock(&uid_lock);
+#ifdef CONFIG_UID_SYS_STATS_DEBUG
+	put_task_struct(usw->task);
+#endif
+	kfree(usw);
+}
+
+static int process_notifier(struct notifier_block *self,
+			unsigned long cmd, void *v)
+{
+	struct task_struct *task = v;
+	struct uid_entry *uid_entry;
+	u64 utime, stime;
+	uid_t uid;
+
+	if (!task)
+		return NOTIFY_OK;
+
+	uid = from_kuid_munged(current_user_ns(), task_uid(task));
+	if (!rt_mutex_trylock(&uid_lock)) {
+		struct update_stats_work *usw;
+
+		usw = kmalloc(sizeof(struct update_stats_work), GFP_KERNEL);
+		if (usw) {
+			INIT_WORK(&usw->work, update_stats_workfn);
+			usw->uid = uid;
+#ifdef CONFIG_UID_SYS_STATS_DEBUG
+			usw->task = get_task_struct(task);
+#endif
+			/*
+			 * Copy task->ioac since task might be destroyed before
+			 * the work is later performed.
+			 */
+			usw->ioac = task->ioac;
+			task_cputime_adjusted(task, &usw->utime, &usw->stime);
+			schedule_work(&usw->work);
+		}
+		return NOTIFY_OK;
+	}
+
+	uid_entry = find_or_register_uid(uid);
+	if (!uid_entry) {
+		pr_err("%s: failed to find uid %d\n", __func__, uid);
+		goto exit;
+	}
+
+	task_cputime_adjusted(task, &utime, &stime);
+	uid_entry->utime += utime;
+	uid_entry->stime += stime;
+
+	add_uid_io_stats(uid_entry, task, UID_STATE_DEAD_TASKS);
+
+exit:
+	rt_mutex_unlock(&uid_lock);
+	return NOTIFY_OK;
+}
+
+static struct notifier_block process_notifier_block = {
+	.notifier_call	= process_notifier,
+};
+
+static int __init proc_uid_sys_stats_init(void)
+{
+	hash_init(hash_table);
+
+	cpu_parent = proc_mkdir("uid_cputime", NULL);
+	if (!cpu_parent) {
+		pr_err("%s: failed to create uid_cputime proc entry\n",
+			__func__);
+		goto err;
+	}
+
+	proc_create_data("remove_uid_range", 0222, cpu_parent,
+		&uid_remove_fops, NULL);
+	proc_create_data("show_uid_stat", 0444, cpu_parent,
+		&uid_cputime_fops, NULL);
+
+	io_parent = proc_mkdir("uid_io", NULL);
+	if (!io_parent) {
+		pr_err("%s: failed to create uid_io proc entry\n",
+			__func__);
+		goto err;
+	}
+
+	proc_create_data("stats", 0444, io_parent,
+		&uid_io_fops, NULL);
+
+	proc_parent = proc_mkdir("uid_procstat", NULL);
+	if (!proc_parent) {
+		pr_err("%s: failed to create uid_procstat proc entry\n",
+			__func__);
+		goto err;
+	}
+
+	proc_create_data("set", 0222, proc_parent,
+		&uid_procstat_fops, NULL);
+
+	profile_event_register(PROFILE_TASK_EXIT, &process_notifier_block);
+
+	return 0;
+
+err:
+	remove_proc_subtree("uid_cputime", NULL);
+	remove_proc_subtree("uid_io", NULL);
+	remove_proc_subtree("uid_procstat", NULL);
+	return -ENOMEM;
+}
+
+early_initcall(proc_uid_sys_stats_init);
diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
index de1cc9e..51aaf3a 100644
--- a/drivers/mmc/core/core.c
+++ b/drivers/mmc/core/core.c
@@ -917,6 +917,7 @@ void mmc_set_clock(struct mmc_host *host, unsigned int hz)
 	host->ios.clock = hz;
 	mmc_set_ios(host);
 }
+EXPORT_SYMBOL_GPL(mmc_set_clock);
 
 int mmc_execute_tuning(struct mmc_card *card)
 {
@@ -951,6 +952,7 @@ int mmc_execute_tuning(struct mmc_card *card)
 
 	return err;
 }
+EXPORT_SYMBOL_GPL(mmc_execute_tuning);
 
 /*
  * Change the bus mode (open drain/push-pull) of a host.
@@ -960,6 +962,7 @@ void mmc_set_bus_mode(struct mmc_host *host, unsigned int mode)
 	host->ios.bus_mode = mode;
 	mmc_set_ios(host);
 }
+EXPORT_SYMBOL_GPL(mmc_set_bus_mode);
 
 /*
  * Change data bus width of a host.
@@ -969,6 +972,7 @@ void mmc_set_bus_width(struct mmc_host *host, unsigned int width)
 	host->ios.bus_width = width;
 	mmc_set_ios(host);
 }
+EXPORT_SYMBOL_GPL(mmc_set_bus_width);
 
 /*
  * Set initial state after a power cycle or a hw_reset.
@@ -1002,6 +1006,7 @@ void mmc_set_initial_state(struct mmc_host *host)
 
 	mmc_crypto_set_initial_state(host);
 }
+EXPORT_SYMBOL_GPL(mmc_set_initial_state);
 
 /**
  * mmc_vdd_to_ocrbitnum - Convert a voltage to the OCR bit number
@@ -1271,6 +1276,7 @@ void mmc_set_timing(struct mmc_host *host, unsigned int timing)
 	host->ios.timing = timing;
 	mmc_set_ios(host);
 }
+EXPORT_SYMBOL_GPL(mmc_set_timing);
 
 /*
  * Select appropriate driver type for host.
diff --git a/drivers/mmc/core/host.c b/drivers/mmc/core/host.c
index b89dca1..095724a 100644
--- a/drivers/mmc/core/host.c
+++ b/drivers/mmc/core/host.c
@@ -166,6 +166,7 @@ void mmc_retune_hold(struct mmc_host *host)
 		host->retune_now = 1;
 	host->hold_retune += 1;
 }
+EXPORT_SYMBOL(mmc_retune_hold);
 
 void mmc_retune_release(struct mmc_host *host)
 {
diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
index 89cd48f..693aef9 100644
--- a/drivers/mmc/core/mmc.c
+++ b/drivers/mmc/core/mmc.c
@@ -18,6 +18,7 @@
 #include <linux/mmc/host.h>
 #include <linux/mmc/card.h>
 #include <linux/mmc/mmc.h>
+#include <trace/hooks/mmc.h>
 
 #include "core.h"
 #include "card.h"
@@ -1002,7 +1003,7 @@ static void mmc_set_bus_speed(struct mmc_card *card)
  * If the bus width is changed successfully, return the selected width value.
  * Zero is returned instead of error value if the wide width is not supported.
  */
-static int mmc_select_bus_width(struct mmc_card *card)
+int mmc_select_bus_width(struct mmc_card *card)
 {
 	static unsigned ext_csd_bits[] = {
 		EXT_CSD_BUS_WIDTH_8,
@@ -1067,11 +1068,12 @@ static int mmc_select_bus_width(struct mmc_card *card)
 
 	return err;
 }
+EXPORT_SYMBOL_GPL(mmc_select_bus_width);
 
 /*
  * Switch to the high-speed mode
  */
-static int mmc_select_hs(struct mmc_card *card)
+int mmc_select_hs(struct mmc_card *card)
 {
 	int err;
 
@@ -1085,11 +1087,12 @@ static int mmc_select_hs(struct mmc_card *card)
 
 	return err;
 }
+EXPORT_SYMBOL_GPL(mmc_select_hs);
 
 /*
  * Activate wide bus and DDR if supported.
  */
-static int mmc_select_hs_ddr(struct mmc_card *card)
+int mmc_select_hs_ddr(struct mmc_card *card)
 {
 	struct mmc_host *host = card->host;
 	u32 bus_width, ext_csd_bits;
@@ -1158,8 +1161,9 @@ static int mmc_select_hs_ddr(struct mmc_card *card)
 
 	return err;
 }
+EXPORT_SYMBOL_GPL(mmc_select_hs_ddr);
 
-static int mmc_select_hs400(struct mmc_card *card)
+int mmc_select_hs400(struct mmc_card *card)
 {
 	struct mmc_host *host = card->host;
 	unsigned int max_dtr;
@@ -1253,6 +1257,7 @@ static int mmc_select_hs400(struct mmc_card *card)
 	       __func__, err);
 	return err;
 }
+EXPORT_SYMBOL_GPL(mmc_select_hs400);
 
 int mmc_hs200_to_hs400(struct mmc_card *card)
 {
@@ -1533,7 +1538,7 @@ static int mmc_select_hs200(struct mmc_card *card)
 /*
  * Activate High Speed, HS200 or HS400ES mode if supported.
  */
-static int mmc_select_timing(struct mmc_card *card)
+int mmc_select_timing(struct mmc_card *card)
 {
 	int err = 0;
 
@@ -1568,12 +1573,13 @@ static int mmc_select_timing(struct mmc_card *card)
 	mmc_set_bus_speed(card);
 	return 0;
 }
+EXPORT_SYMBOL_GPL(mmc_select_timing);
 
 /*
  * Execute tuning sequence to seek the proper bus operating
  * conditions for HS200 and HS400, which sends CMD21 to the device.
  */
-static int mmc_hs200_tuning(struct mmc_card *card)
+int mmc_hs200_tuning(struct mmc_card *card)
 {
 	struct mmc_host *host = card->host;
 
@@ -1588,6 +1594,7 @@ static int mmc_hs200_tuning(struct mmc_card *card)
 
 	return mmc_execute_tuning(card);
 }
+EXPORT_SYMBOL_GPL(mmc_hs200_tuning);
 
 /*
  * Handle the detection and initialisation of a card.
@@ -2112,9 +2119,10 @@ static int _mmc_suspend(struct mmc_host *host, bool is_suspend)
 	    ((host->caps2 & MMC_CAP2_FULL_PWR_CYCLE) || !is_suspend ||
 	     (host->caps2 & MMC_CAP2_FULL_PWR_CYCLE_IN_SUSPEND)))
 		err = mmc_poweroff_notify(host->card, notify_type);
-	else if (mmc_can_sleep(host->card))
+	else if (mmc_can_sleep(host->card)) {
+		trace_android_rvh_mmc_suspend(host);
 		err = mmc_sleep(host);
-	else if (!mmc_host_is_spi(host))
+	} else if (!mmc_host_is_spi(host))
 		err = mmc_deselect_cards(host);
 
 	if (!err) {
@@ -2149,6 +2157,7 @@ static int mmc_suspend(struct mmc_host *host)
 static int _mmc_resume(struct mmc_host *host)
 {
 	int err = 0;
+	bool resume_success = false;
 
 	mmc_claim_host(host);
 
@@ -2156,7 +2165,9 @@ static int _mmc_resume(struct mmc_host *host)
 		goto out;
 
 	mmc_power_up(host, host->card->ocr);
-	err = mmc_init_card(host, host->card->ocr, host->card);
+	trace_android_rvh_mmc_resume(host, &resume_success);
+	if (!resume_success)
+		err = mmc_init_card(host, host->card->ocr, host->card);
 	mmc_card_clr_suspended(host->card);
 
 out:
diff --git a/drivers/mmc/core/mmc_ops.c b/drivers/mmc/core/mmc_ops.c
index 81c55bf..62c16da 100644
--- a/drivers/mmc/core/mmc_ops.c
+++ b/drivers/mmc/core/mmc_ops.c
@@ -118,6 +118,7 @@ int mmc_select_card(struct mmc_card *card)
 
 	return _mmc_select_card(card->host, card);
 }
+EXPORT_SYMBOL_GPL(mmc_select_card);
 
 int mmc_deselect_cards(struct mmc_host *host)
 {
@@ -575,6 +576,7 @@ bool mmc_prepare_busy_cmd(struct mmc_host *host, struct mmc_command *cmd,
 	cmd->busy_timeout = timeout_ms;
 	return true;
 }
+EXPORT_SYMBOL_GPL(mmc_prepare_busy_cmd);
 
 /**
  *	__mmc_switch - modify EXT_CSD register
diff --git a/drivers/mmc/core/queue.c b/drivers/mmc/core/queue.c
index b396e39..2c710d7 100644
--- a/drivers/mmc/core/queue.c
+++ b/drivers/mmc/core/queue.c
@@ -69,6 +69,7 @@ enum mmc_issue_type mmc_issue_type(struct mmc_queue *mq, struct request *req)
 
 	return MMC_ISSUE_SYNC;
 }
+EXPORT_SYMBOL_GPL(mmc_issue_type);
 
 static void __mmc_cqe_recovery_notifier(struct mmc_queue *mq)
 {
diff --git a/drivers/mmc/host/cqhci-crypto.c b/drivers/mmc/host/cqhci-crypto.c
index d5f4b69..6652982 100644
--- a/drivers/mmc/host/cqhci-crypto.c
+++ b/drivers/mmc/host/cqhci-crypto.c
@@ -210,6 +210,8 @@ int cqhci_crypto_init(struct cqhci_host *cq_host)
 	/* Unfortunately, CQHCI crypto only supports 32 DUN bits. */
 	profile->max_dun_bytes_supported = 4;
 
+	profile->key_types_supported = BLK_CRYPTO_KEY_TYPE_STANDARD;
+
 	/*
 	 * Cache all the crypto capabilities and advertise the supported crypto
 	 * modes and data unit sizes to the block layer.
diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h
index 5ce7cdc..4e12462 100644
--- a/drivers/mmc/host/sdhci.h
+++ b/drivers/mmc/host/sdhci.h
@@ -16,6 +16,7 @@
 #include <linux/io.h>
 #include <linux/leds.h>
 #include <linux/interrupt.h>
+#include <linux/android_kabi.h>
 
 #include <linux/mmc/host.h>
 
@@ -616,6 +617,8 @@ struct sdhci_host {
 
 	u64			data_timeout;
 
+	ANDROID_KABI_RESERVE(1);
+
 	unsigned long private[] ____cacheline_aligned;
 };
 
@@ -663,6 +666,8 @@ struct sdhci_ops {
 	void	(*request_done)(struct sdhci_host *host,
 				struct mmc_request *mrq);
 	void    (*dump_vendor_regs)(struct sdhci_host *host);
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 #ifdef CONFIG_MMC_SDHCI_IO_ACCESSORS
diff --git a/drivers/net/wireless/ath/ath10k/qmi.c b/drivers/net/wireless/ath/ath10k/qmi.c
index 66cb7a1..6d1d87e 100644
--- a/drivers/net/wireless/ath/ath10k/qmi.c
+++ b/drivers/net/wireless/ath/ath10k/qmi.c
@@ -28,7 +28,7 @@ static int ath10k_qmi_map_msa_permission(struct ath10k_qmi *qmi,
 {
 	struct qcom_scm_vmperm dst_perms[3];
 	struct ath10k *ar = qmi->ar;
-	unsigned int src_perms;
+	u64 src_perms;
 	u32 perm_count;
 	int ret;
 
@@ -60,7 +60,7 @@ static int ath10k_qmi_unmap_msa_permission(struct ath10k_qmi *qmi,
 {
 	struct qcom_scm_vmperm dst_perms;
 	struct ath10k *ar = qmi->ar;
-	unsigned int src_perms;
+	u64 src_perms;
 	int ret;
 
 	src_perms = BIT(QCOM_SCM_VMID_MSS_MSA) | BIT(QCOM_SCM_VMID_WLAN);
diff --git a/drivers/net/wireless/ath/ath6kl/cfg80211.c b/drivers/net/wireless/ath/ath6kl/cfg80211.c
index a20e0ae..0c2b8b1 100644
--- a/drivers/net/wireless/ath/ath6kl/cfg80211.c
+++ b/drivers/net/wireless/ath/ath6kl/cfg80211.c
@@ -1119,7 +1119,7 @@ void ath6kl_cfg80211_ch_switch_notify(struct ath6kl_vif *vif, int freq,
 					NL80211_CHAN_HT20 : NL80211_CHAN_NO_HT);
 
 	mutex_lock(&vif->wdev.mtx);
-	cfg80211_ch_switch_notify(vif->ndev, &chandef, 0);
+	cfg80211_ch_switch_notify(vif->ndev, &chandef, 0, 0);
 	mutex_unlock(&vif->wdev.mtx);
 }
 
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
index ad5a8d6..100aa19 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
@@ -6011,7 +6011,7 @@ brcmf_bss_roaming_done(struct brcmf_cfg80211_info *cfg,
 	brcmf_dbg(CONN, "Report roaming result\n");
 
 	if (profile->use_fwsup == BRCMF_PROFILE_FWSUP_1X && profile->is_ft) {
-		cfg80211_port_authorized(ndev, profile->bssid, GFP_KERNEL);
+		cfg80211_port_authorized(ndev, profile->bssid, NULL, 0, GFP_KERNEL);
 		brcmf_dbg(CONN, "Report port authorized\n");
 	}
 
diff --git a/drivers/net/wireless/marvell/mwifiex/11h.c b/drivers/net/wireless/marvell/mwifiex/11h.c
index 6a9d7bc1..b0c40a7 100644
--- a/drivers/net/wireless/marvell/mwifiex/11h.c
+++ b/drivers/net/wireless/marvell/mwifiex/11h.c
@@ -292,6 +292,6 @@ void mwifiex_dfs_chan_sw_work_queue(struct work_struct *work)
 	mwifiex_dbg(priv->adapter, MSG,
 		    "indicating channel switch completion to kernel\n");
 	mutex_lock(&priv->wdev.mtx);
-	cfg80211_ch_switch_notify(priv->netdev, &priv->dfs_chandef, 0);
+	cfg80211_ch_switch_notify(priv->netdev, &priv->dfs_chandef, 0, 0);
 	mutex_unlock(&priv->wdev.mtx);
 }
diff --git a/drivers/net/wireless/quantenna/qtnfmac/event.c b/drivers/net/wireless/quantenna/qtnfmac/event.c
index 4fafe37..31bc58e 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/event.c
+++ b/drivers/net/wireless/quantenna/qtnfmac/event.c
@@ -478,7 +478,7 @@ qtnf_event_handle_freq_change(struct qtnf_wmac *mac,
 			continue;
 
 		mutex_lock(&vif->wdev.mtx);
-		cfg80211_ch_switch_notify(vif->netdev, &chandef, 0);
+		cfg80211_ch_switch_notify(vif->netdev, &chandef, 0, 0);
 		mutex_unlock(&vif->wdev.mtx);
 	}
 
@@ -662,6 +662,7 @@ qtnf_event_handle_update_owe(struct qtnf_vif *vif,
 	memcpy(ie, owe_ev->ies, ie_len);
 	owe_info.ie_len = ie_len;
 	owe_info.ie = ie;
+	owe_info.assoc_link_id = -1;
 
 	pr_info("%s: external OWE processing: peer=%pM\n",
 		vif->netdev->name, owe_ev->peer);
diff --git a/drivers/nvme/host/apple.c b/drivers/nvme/host/apple.c
index 262d2b6..c5fc293 100644
--- a/drivers/nvme/host/apple.c
+++ b/drivers/nvme/host/apple.c
@@ -1510,6 +1510,7 @@ static int apple_nvme_probe(struct platform_device *pdev)
 	if (!blk_get_queue(anv->ctrl.admin_q)) {
 		nvme_start_admin_queue(&anv->ctrl);
 		blk_mq_destroy_queue(anv->ctrl.admin_q);
+		blk_put_queue(anv->ctrl.admin_q);
 		anv->ctrl.admin_q = NULL;
 		ret = -ENODEV;
 		goto put_dev;
diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
index a7d9b5b..308c7c7 100644
--- a/drivers/nvme/host/core.c
+++ b/drivers/nvme/host/core.c
@@ -4934,6 +4934,7 @@ int nvme_alloc_admin_tag_set(struct nvme_ctrl *ctrl, struct blk_mq_tag_set *set,
 
 out_cleanup_admin_q:
 	blk_mq_destroy_queue(ctrl->admin_q);
+	blk_put_queue(ctrl->admin_q);
 out_free_tagset:
 	blk_mq_free_tag_set(set);
 	ctrl->admin_q = NULL;
@@ -4945,8 +4946,11 @@ EXPORT_SYMBOL_GPL(nvme_alloc_admin_tag_set);
 void nvme_remove_admin_tag_set(struct nvme_ctrl *ctrl)
 {
 	blk_mq_destroy_queue(ctrl->admin_q);
-	if (ctrl->ops->flags & NVME_F_FABRICS)
+	blk_put_queue(ctrl->admin_q);
+	if (ctrl->ops->flags & NVME_F_FABRICS) {
 		blk_mq_destroy_queue(ctrl->fabrics_q);
+		blk_put_queue(ctrl->fabrics_q);
+	}
 	blk_mq_free_tag_set(ctrl->admin_tagset);
 }
 EXPORT_SYMBOL_GPL(nvme_remove_admin_tag_set);
@@ -4994,8 +4998,10 @@ EXPORT_SYMBOL_GPL(nvme_alloc_io_tag_set);
 
 void nvme_remove_io_tag_set(struct nvme_ctrl *ctrl)
 {
-	if (ctrl->ops->flags & NVME_F_FABRICS)
+	if (ctrl->ops->flags & NVME_F_FABRICS) {
 		blk_mq_destroy_queue(ctrl->connect_q);
+		blk_put_queue(ctrl->connect_q);
+	}
 	blk_mq_free_tag_set(ctrl->tagset);
 }
 EXPORT_SYMBOL_GPL(nvme_remove_io_tag_set);
diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
index 145fa7e..9011b2d 100644
--- a/drivers/nvme/host/pci.c
+++ b/drivers/nvme/host/pci.c
@@ -1750,6 +1750,7 @@ static void nvme_dev_remove_admin(struct nvme_dev *dev)
 		 */
 		nvme_start_admin_queue(&dev->ctrl);
 		blk_mq_destroy_queue(dev->ctrl.admin_q);
+		blk_put_queue(dev->ctrl.admin_q);
 		blk_mq_free_tag_set(&dev->admin_tagset);
 	}
 }
diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
index d1a68b6..335d39e 100644
--- a/drivers/of/fdt.c
+++ b/drivers/of/fdt.c
@@ -1148,10 +1148,32 @@ int __init early_init_dt_scan_memory(void)
 	return found_memory;
 }
 
+/*
+ * Convert configs to something easy to use in C code
+ */
+#if defined(CONFIG_CMDLINE_FORCE)
+static const int overwrite_incoming_cmdline = 1;
+static const int read_dt_cmdline;
+static const int concat_cmdline;
+#elif defined(CONFIG_CMDLINE_EXTEND)
+static const int overwrite_incoming_cmdline;
+static const int read_dt_cmdline = 1;
+static const int concat_cmdline = 1;
+#else /* CMDLINE_FROM_BOOTLOADER */
+static const int overwrite_incoming_cmdline;
+static const int read_dt_cmdline = 1;
+static const int concat_cmdline;
+#endif
+#ifdef CONFIG_CMDLINE
+static const char *config_cmdline = CONFIG_CMDLINE;
+#else
+static const char *config_cmdline = "";
+#endif
+
 int __init early_init_dt_scan_chosen(char *cmdline)
 {
-	int l, node;
-	const char *p;
+	int l = 0, node;
+	const char *p = NULL;
 	const void *rng_seed;
 	const void *fdt = initial_boot_params;
 
@@ -1179,30 +1201,29 @@ int __init early_init_dt_scan_chosen(char *cmdline)
 				fdt_totalsize(initial_boot_params));
 	}
 
-	/* Retrieve command line */
-	p = of_get_flat_dt_prop(node, "bootargs", &l);
-	if (p != NULL && l > 0)
-		strscpy(cmdline, p, min(l, COMMAND_LINE_SIZE));
+	/* Put CONFIG_CMDLINE in if forced or if data had nothing in it to start */
+	if (overwrite_incoming_cmdline || !cmdline[0])
+		strscpy(cmdline, config_cmdline, COMMAND_LINE_SIZE);
+
+	/* Retrieve command line unless forcing */
+	if (read_dt_cmdline)
+		p = of_get_flat_dt_prop(node, "bootargs", &l);
+	if (p != NULL && l > 0) {
+		if (concat_cmdline) {
+			int cmdline_len;
+			int copy_len;
+			strlcat(cmdline, " ", COMMAND_LINE_SIZE);
+			cmdline_len = strlen(cmdline);
+			copy_len = COMMAND_LINE_SIZE - cmdline_len - 1;
+			copy_len = min((int)l, copy_len);
+			strncpy(cmdline + cmdline_len, p, copy_len);
+			cmdline[cmdline_len + copy_len] = '\0';
+		} else {
+			strscpy(cmdline, p, min(l, COMMAND_LINE_SIZE));
+		}
+	}
 
 handle_cmdline:
-	/*
-	 * CONFIG_CMDLINE is meant to be a default in case nothing else
-	 * managed to set the command line, unless CONFIG_CMDLINE_FORCE
-	 * is set in which case we override whatever was found earlier.
-	 */
-#ifdef CONFIG_CMDLINE
-#if defined(CONFIG_CMDLINE_EXTEND)
-	strlcat(cmdline, " ", COMMAND_LINE_SIZE);
-	strlcat(cmdline, CONFIG_CMDLINE, COMMAND_LINE_SIZE);
-#elif defined(CONFIG_CMDLINE_FORCE)
-	strscpy(cmdline, CONFIG_CMDLINE, COMMAND_LINE_SIZE);
-#else
-	/* No arguments from boot loader, use kernel's  cmdl*/
-	if (!((char *)cmdline)[0])
-		strscpy(cmdline, CONFIG_CMDLINE, COMMAND_LINE_SIZE);
-#endif
-#endif /* CONFIG_CMDLINE */
-
 	pr_debug("Command line is: %s\n", (char *)cmdline);
 
 	return 0;
diff --git a/drivers/of/of_reserved_mem.c b/drivers/of/of_reserved_mem.c
index f90975e..fc636f9 100644
--- a/drivers/of/of_reserved_mem.c
+++ b/drivers/of/of_reserved_mem.c
@@ -26,7 +26,7 @@
 
 #include "of_private.h"
 
-#define MAX_RESERVED_REGIONS	64
+#define MAX_RESERVED_REGIONS	128
 static struct reserved_mem reserved_mem[MAX_RESERVED_REGIONS];
 static int reserved_mem_count;
 
diff --git a/drivers/of/unittest-data/Makefile b/drivers/of/unittest-data/Makefile
index d072f3b..011dcd2 100644
--- a/drivers/of/unittest-data/Makefile
+++ b/drivers/of/unittest-data/Makefile
@@ -42,9 +42,7 @@
 DTC_FLAGS_testcases += -@
 
 # suppress warnings about intentional errors
-DTC_FLAGS_testcases += -Wno-interrupts_property \
-	-Wno-node_name_vs_property_name \
-	-Wno-interrupt_map
+DTC_FLAGS_testcases += -Wno-interrupts_property
 
 # Apply overlays statically with fdtoverlay.  This is a build time test that
 # the overlays can be applied successfully by fdtoverlay.  This does not
@@ -94,10 +92,6 @@
 
 apply_static_overlay_2 := overlay.dtbo
 
-DTC_FLAGS_static_base_1 += -Wno-interrupts_property \
-	-Wno-node_name_vs_property_name \
-	-Wno-interrupt_map
-
 static_test_1-dtbs := static_base_1.dtb $(apply_static_overlay_1)
 static_test_2-dtbs := static_base_2.dtb $(apply_static_overlay_2)
 
diff --git a/drivers/pci/ats.c b/drivers/pci/ats.c
index c967ad6..f9cc2e1 100644
--- a/drivers/pci/ats.c
+++ b/drivers/pci/ats.c
@@ -382,6 +382,9 @@ int pci_enable_pasid(struct pci_dev *pdev, int features)
 	if (!pasid)
 		return -EINVAL;
 
+	if (!pci_acs_path_enabled(pdev, NULL, PCI_ACS_RR | PCI_ACS_UF))
+		return -EINVAL;
+
 	pci_read_config_word(pdev, pasid + PCI_PASID_CAP, &supported);
 	supported &= PCI_PASID_CAP_EXEC | PCI_PASID_CAP_PRIV;
 
diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c b/drivers/pci/controller/dwc/pcie-designware-host.c
index 39f3b37..28d2f75 100644
--- a/drivers/pci/controller/dwc/pcie-designware-host.c
+++ b/drivers/pci/controller/dwc/pcie-designware-host.c
@@ -83,6 +83,7 @@ irqreturn_t dw_handle_msi_irq(struct dw_pcie_rp *pp)
 
 	return ret;
 }
+EXPORT_SYMBOL_GPL(dw_handle_msi_irq);
 
 /* Chained MSI interrupt service routine */
 static void dw_chained_msi_isr(struct irq_desc *desc)
@@ -478,14 +479,19 @@ int dw_pcie_host_init(struct dw_pcie_rp *pp)
 	if (ret)
 		goto err_free_msi;
 
-	if (!dw_pcie_link_up(pci)) {
+	if (dw_pcie_link_up(pci)) {
+		dw_pcie_print_link_status(pci);
+	} else {
 		ret = dw_pcie_start_link(pci);
 		if (ret)
 			goto err_free_msi;
-	}
 
-	/* Ignore errors, the link may come up later */
-	dw_pcie_wait_for_link(pci);
+		if (pci->ops && pci->ops->start_link) {
+			ret = dw_pcie_wait_for_link(pci);
+			if (ret)
+				goto err_stop_link;
+		}
+	}
 
 	bridge->sysdata = pp;
 
diff --git a/drivers/pci/controller/dwc/pcie-designware.c b/drivers/pci/controller/dwc/pcie-designware.c
index 575834c..c1ba866 100644
--- a/drivers/pci/controller/dwc/pcie-designware.c
+++ b/drivers/pci/controller/dwc/pcie-designware.c
@@ -434,9 +434,20 @@ 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);
 }
 
-int dw_pcie_wait_for_link(struct dw_pcie *pci)
+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)
+{
 	int retries;
 
 	/* Check if the link is up or not */
@@ -452,12 +463,7 @@ int dw_pcie_wait_for_link(struct dw_pcie *pci)
 		return -ETIMEDOUT;
 	}
 
-	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));
+	dw_pcie_print_link_status(pci);
 
 	return 0;
 }
diff --git a/drivers/pci/controller/dwc/pcie-designware.h b/drivers/pci/controller/dwc/pcie-designware.h
index a871ae7..408c9a7 100644
--- a/drivers/pci/controller/dwc/pcie-designware.h
+++ b/drivers/pci/controller/dwc/pcie-designware.h
@@ -351,6 +351,7 @@ 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/pci/pci.h b/drivers/pci/pci.h
index ffccb03..02effb2 100644
--- a/drivers/pci/pci.h
+++ b/drivers/pci/pci.h
@@ -3,6 +3,7 @@
 #define DRIVERS_PCI_H
 
 #include <linux/pci.h>
+#include <linux/android_kabi.h>
 
 /* Number of possible devfns: 0.0 to 1f.7 inclusive */
 #define MAX_NR_DEVFNS 256
@@ -315,6 +316,11 @@ struct pci_sriov {
 	u16		subsystem_device; /* VF subsystem device */
 	resource_size_t	barsz[PCI_SRIOV_NUM_BARS];	/* VF BAR size */
 	bool		drivers_autoprobe; /* Auto probing of VFs by driver */
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 /**
diff --git a/drivers/power/supply/power_supply_core.c b/drivers/power/supply/power_supply_core.c
index 7871ab5..b0d0307 100644
--- a/drivers/power/supply/power_supply_core.c
+++ b/drivers/power/supply/power_supply_core.c
@@ -34,6 +34,13 @@ EXPORT_SYMBOL_GPL(power_supply_notifier);
 
 static struct device_type power_supply_dev_type;
 
+struct match_device_node_array_param {
+	struct device_node *parent_of_node;
+	struct power_supply **psy;
+	ssize_t psy_size;
+	ssize_t psy_count;
+};
+
 #define POWER_SUPPLY_DEFERRED_REGISTER_TIME	msecs_to_jiffies(10)
 
 static bool __power_supply_is_supplied_by(struct power_supply *supplier,
@@ -530,6 +537,77 @@ struct power_supply *power_supply_get_by_phandle(struct device_node *np,
 }
 EXPORT_SYMBOL_GPL(power_supply_get_by_phandle);
 
+static int power_supply_match_device_node_array(struct device *dev,
+						void *data)
+{
+	struct match_device_node_array_param *param =
+		(struct match_device_node_array_param *)data;
+	struct power_supply **psy = param->psy;
+	ssize_t size = param->psy_size;
+	ssize_t *count = &param->psy_count;
+
+	if (!dev->parent || dev->parent->of_node != param->parent_of_node)
+		return 0;
+
+	if (*count >= size)
+		return -EOVERFLOW;
+
+	psy[*count] = dev_get_drvdata(dev);
+	atomic_inc(&psy[*count]->use_cnt);
+	(*count)++;
+
+	return 0;
+}
+
+/**
+ * power_supply_get_by_phandle_array() - Similar to
+ * power_supply_get_by_phandle but returns an array of power supply
+ * objects which are associated with the phandle.
+ * @np: Pointer to device node holding phandle property.
+ * @property: Name of property holding a power supply name.
+ * @psy: Array of power_supply pointers provided by the client which is
+ * filled by power_supply_get_by_phandle_array.
+ * @size: size of power_supply pointer array.
+ *
+ * If power supply was found, it increases reference count for the
+ * internal power supply's device. The user should power_supply_put()
+ * after usage.
+ *
+ * Return: On success returns the number of power supply objects filled
+ * in the @psy array.
+ * -EOVERFLOW when size of @psy array is not suffice.
+ * -EINVAL when @psy is NULL or @size is 0.
+ * -ENODEV when matching device_node is not found.
+ */
+int power_supply_get_by_phandle_array(struct device_node *np,
+				      const char *property,
+				      struct power_supply **psy,
+				      ssize_t size)
+{
+	struct device_node *power_supply_np;
+	int ret;
+	struct match_device_node_array_param param;
+
+	if (!psy || !size)
+		return -EINVAL;
+
+	power_supply_np = of_parse_phandle(np, property, 0);
+	if (!power_supply_np)
+		return -ENODEV;
+
+	param.parent_of_node = power_supply_np;
+	param.psy = psy;
+	param.psy_size = size;
+	param.psy_count = 0;
+	ret = class_for_each_device(power_supply_class, NULL, &param,
+				    power_supply_match_device_node_array);
+
+	of_node_put(power_supply_np);
+
+	return param.psy_count;
+}
+EXPORT_SYMBOL_GPL(power_supply_get_by_phandle_array);
+
 static void devm_power_supply_put(struct device *dev, void *res)
 {
 	struct power_supply **psy = res;
diff --git a/drivers/power/supply/power_supply_sysfs.c b/drivers/power/supply/power_supply_sysfs.c
index 7abd916..4f8ddba2 100644
--- a/drivers/power/supply/power_supply_sysfs.c
+++ b/drivers/power/supply/power_supply_sysfs.c
@@ -90,6 +90,7 @@ static const char * const POWER_SUPPLY_CHARGE_TYPE_TEXT[] = {
 	[POWER_SUPPLY_CHARGE_TYPE_CUSTOM]	= "Custom",
 	[POWER_SUPPLY_CHARGE_TYPE_LONGLIFE]	= "Long Life",
 	[POWER_SUPPLY_CHARGE_TYPE_BYPASS]	= "Bypass",
+	[POWER_SUPPLY_CHARGE_TYPE_TAPER_EXT]	= "Taper",
 };
 
 static const char * const POWER_SUPPLY_HEALTH_TEXT[] = {
diff --git a/drivers/remoteproc/qcom_q6v5_mss.c b/drivers/remoteproc/qcom_q6v5_mss.c
index 7dbab5f..fb03c70 100644
--- a/drivers/remoteproc/qcom_q6v5_mss.c
+++ b/drivers/remoteproc/qcom_q6v5_mss.c
@@ -230,8 +230,8 @@ struct q6v5 {
 	bool has_qaccept_regs;
 	bool has_ext_cntl_regs;
 	bool has_vq6;
-	int mpss_perm;
-	int mba_perm;
+	u64 mpss_perm;
+	u64 mba_perm;
 	const char *hexagon_mdt_image;
 	int version;
 };
@@ -407,7 +407,7 @@ static void q6v5_pds_disable(struct q6v5 *qproc, struct device **pds,
 	}
 }
 
-static int q6v5_xfer_mem_ownership(struct q6v5 *qproc, int *current_perm,
+static int q6v5_xfer_mem_ownership(struct q6v5 *qproc, u64 *current_perm,
 				   bool local, bool remote, phys_addr_t addr,
 				   size_t size)
 {
@@ -939,7 +939,7 @@ static int q6v5_mpss_init_image(struct q6v5 *qproc, const struct firmware *fw,
 	unsigned long dma_attrs = DMA_ATTR_FORCE_CONTIGUOUS;
 	dma_addr_t phys;
 	void *metadata;
-	int mdata_perm;
+	u64 mdata_perm;
 	int xferop_ret;
 	size_t size;
 	void *ptr;
diff --git a/drivers/remoteproc/remoteproc_core.c b/drivers/remoteproc/remoteproc_core.c
index c3f194d..0444e15 100644
--- a/drivers/remoteproc/remoteproc_core.c
+++ b/drivers/remoteproc/remoteproc_core.c
@@ -38,6 +38,7 @@
 #include <linux/virtio_ring.h>
 #include <asm/byteorder.h>
 #include <linux/platform_device.h>
+#include <trace/hooks/remoteproc.h>
 
 #include "remoteproc_internal.h"
 
@@ -1890,6 +1891,7 @@ static void rproc_crash_handler_work(struct work_struct *work)
 		rproc_trigger_recovery(rproc);
 
 out:
+	trace_android_vh_rproc_recovery(rproc);
 	pm_relax(rproc->dev.parent);
 }
 
diff --git a/drivers/remoteproc/remoteproc_coredump.c b/drivers/remoteproc/remoteproc_coredump.c
index 4b09342..9c53c3d 100644
--- a/drivers/remoteproc/remoteproc_coredump.c
+++ b/drivers/remoteproc/remoteproc_coredump.c
@@ -32,6 +32,7 @@ void rproc_coredump_cleanup(struct rproc *rproc)
 		kfree(entry);
 	}
 }
+EXPORT_SYMBOL_GPL(rproc_coredump_cleanup);
 
 /**
  * rproc_coredump_add_segment() - add segment of device memory to coredump
@@ -327,6 +328,7 @@ void rproc_coredump(struct rproc *rproc)
 	 */
 	wait_for_completion(&dump_state.dump_done);
 }
+EXPORT_SYMBOL_GPL(rproc_coredump);
 
 /**
  * rproc_coredump_using_sections() - perform coredump using section headers
diff --git a/drivers/remoteproc/remoteproc_sysfs.c b/drivers/remoteproc/remoteproc_sysfs.c
index 8c7ea89..4517bfb 100644
--- a/drivers/remoteproc/remoteproc_sysfs.c
+++ b/drivers/remoteproc/remoteproc_sysfs.c
@@ -5,6 +5,7 @@
 
 #include <linux/remoteproc.h>
 #include <linux/slab.h>
+#include <trace/hooks/remoteproc.h>
 
 #include "remoteproc_internal.h"
 
@@ -50,10 +51,16 @@ static ssize_t recovery_store(struct device *dev,
 
 	if (sysfs_streq(buf, "enabled")) {
 		/* change the flag and begin the recovery process if needed */
+		mutex_lock(&rproc->lock);
 		rproc->recovery_disabled = false;
+		trace_android_vh_rproc_recovery_set(rproc);
+		mutex_unlock(&rproc->lock);
 		rproc_trigger_recovery(rproc);
 	} else if (sysfs_streq(buf, "disabled")) {
+		mutex_lock(&rproc->lock);
 		rproc->recovery_disabled = true;
+		trace_android_vh_rproc_recovery_set(rproc);
+		mutex_unlock(&rproc->lock);
 	} else if (sysfs_streq(buf, "recover")) {
 		/* begin the recovery process without changing the flag */
 		rproc_trigger_recovery(rproc);
diff --git a/drivers/sbus/char/oradax.c b/drivers/sbus/char/oradax.c
index 21b7cb6..e300cf2 100644
--- a/drivers/sbus/char/oradax.c
+++ b/drivers/sbus/char/oradax.c
@@ -389,7 +389,7 @@ static int dax_devmap(struct file *f, struct vm_area_struct *vma)
 	/* completion area is mapped read-only for user */
 	if (vma->vm_flags & VM_WRITE)
 		return -EPERM;
-	vma->vm_flags &= ~VM_MAYWRITE;
+	vm_flags_clear(vma, VM_MAYWRITE);
 
 	if (remap_pfn_range(vma, vma->vm_start, ctx->ca_buf_ra >> PAGE_SHIFT,
 			    len, vma->vm_page_prot))
diff --git a/drivers/scsi/ch.c b/drivers/scsi/ch.c
index 7ab29ea..72fe6df 100644
--- a/drivers/scsi/ch.c
+++ b/drivers/scsi/ch.c
@@ -184,20 +184,21 @@ static int ch_find_errno(struct scsi_sense_hdr *sshdr)
 
 static int
 ch_do_scsi(scsi_changer *ch, unsigned char *cmd, int cmd_len,
-	   void *buffer, unsigned buflength,
-	   enum dma_data_direction direction)
+	   void *buffer, unsigned int buflength, enum req_op op)
 {
 	int errno, retries = 0, timeout, result;
 	struct scsi_sense_hdr sshdr;
+	const struct scsi_exec_args exec_args = {
+		.sshdr = &sshdr,
+	};
 
 	timeout = (cmd[0] == INITIALIZE_ELEMENT_STATUS)
 		? timeout_init : timeout_move;
 
  retry:
 	errno = 0;
-	result = scsi_execute_req(ch->device, cmd, direction, buffer,
-				  buflength, &sshdr, timeout * HZ,
-				  MAX_RETRIES, NULL);
+	result = scsi_execute_cmd(ch->device, cmd, op, buffer, buflength,
+				  timeout * HZ, MAX_RETRIES, &exec_args);
 	if (result < 0)
 		return result;
 	if (scsi_sense_valid(&sshdr)) {
@@ -254,7 +255,7 @@ ch_read_element_status(scsi_changer *ch, u_int elem, char *data)
 	cmd[5] = 1;
 	cmd[9] = 255;
 	if (0 == (result = ch_do_scsi(ch, cmd, 12,
-				      buffer, 256, DMA_FROM_DEVICE))) {
+				      buffer, 256, REQ_OP_DRV_IN))) {
 		if (((buffer[16] << 8) | buffer[17]) != elem) {
 			DPRINTK("asked for element 0x%02x, got 0x%02x\n",
 				elem,(buffer[16] << 8) | buffer[17]);
@@ -284,7 +285,7 @@ ch_init_elem(scsi_changer *ch)
 	memset(cmd,0,sizeof(cmd));
 	cmd[0] = INITIALIZE_ELEMENT_STATUS;
 	cmd[1] = (ch->device->lun & 0x7) << 5;
-	err = ch_do_scsi(ch, cmd, 6, NULL, 0, DMA_NONE);
+	err = ch_do_scsi(ch, cmd, 6, NULL, 0, REQ_OP_DRV_IN);
 	VPRINTK(KERN_INFO, "... finished\n");
 	return err;
 }
@@ -306,10 +307,10 @@ ch_readconfig(scsi_changer *ch)
 	cmd[1] = (ch->device->lun & 0x7) << 5;
 	cmd[2] = 0x1d;
 	cmd[4] = 255;
-	result = ch_do_scsi(ch, cmd, 10, buffer, 255, DMA_FROM_DEVICE);
+	result = ch_do_scsi(ch, cmd, 10, buffer, 255, REQ_OP_DRV_IN);
 	if (0 != result) {
 		cmd[1] |= (1<<3);
-		result  = ch_do_scsi(ch, cmd, 10, buffer, 255, DMA_FROM_DEVICE);
+		result  = ch_do_scsi(ch, cmd, 10, buffer, 255, REQ_OP_DRV_IN);
 	}
 	if (0 == result) {
 		ch->firsts[CHET_MT] =
@@ -434,7 +435,7 @@ ch_position(scsi_changer *ch, u_int trans, u_int elem, int rotate)
 	cmd[4]  = (elem  >> 8) & 0xff;
 	cmd[5]  =  elem        & 0xff;
 	cmd[8]  = rotate ? 1 : 0;
-	return ch_do_scsi(ch, cmd, 10, NULL, 0, DMA_NONE);
+	return ch_do_scsi(ch, cmd, 10, NULL, 0, REQ_OP_DRV_IN);
 }
 
 static int
@@ -455,7 +456,7 @@ ch_move(scsi_changer *ch, u_int trans, u_int src, u_int dest, int rotate)
 	cmd[6]  = (dest  >> 8) & 0xff;
 	cmd[7]  =  dest        & 0xff;
 	cmd[10] = rotate ? 1 : 0;
-	return ch_do_scsi(ch, cmd, 12, NULL,0, DMA_NONE);
+	return ch_do_scsi(ch, cmd, 12, NULL, 0, REQ_OP_DRV_IN);
 }
 
 static int
@@ -481,7 +482,7 @@ ch_exchange(scsi_changer *ch, u_int trans, u_int src,
 	cmd[9]  =  dest2       & 0xff;
 	cmd[10] = (rotate1 ? 1 : 0) | (rotate2 ? 2 : 0);
 
-	return ch_do_scsi(ch, cmd, 12, NULL, 0, DMA_NONE);
+	return ch_do_scsi(ch, cmd, 12, NULL, 0, REQ_OP_DRV_IN);
 }
 
 static void
@@ -531,7 +532,7 @@ ch_set_voltag(scsi_changer *ch, u_int elem,
 	memcpy(buffer,tag,32);
 	ch_check_voltag(buffer);
 
-	result = ch_do_scsi(ch, cmd, 12, buffer, 256, DMA_TO_DEVICE);
+	result = ch_do_scsi(ch, cmd, 12, buffer, 256, REQ_OP_DRV_OUT);
 	kfree(buffer);
 	return result;
 }
@@ -799,8 +800,7 @@ static long ch_ioctl(struct file *file,
 		ch_cmd[5] = 1;
 		ch_cmd[9] = 255;
 
-		result = ch_do_scsi(ch, ch_cmd, 12,
-				    buffer, 256, DMA_FROM_DEVICE);
+		result = ch_do_scsi(ch, ch_cmd, 12, buffer, 256, REQ_OP_DRV_IN);
 		if (!result) {
 			cge.cge_status = buffer[18];
 			cge.cge_flags = 0;
diff --git a/drivers/scsi/cxlflash/ocxl_hw.c b/drivers/scsi/cxlflash/ocxl_hw.c
index 631eda2..6542818 100644
--- a/drivers/scsi/cxlflash/ocxl_hw.c
+++ b/drivers/scsi/cxlflash/ocxl_hw.c
@@ -1167,7 +1167,7 @@ static int afu_mmap(struct file *file, struct vm_area_struct *vma)
 	    (ctx->psn_size >> PAGE_SHIFT))
 		return -EINVAL;
 
-	vma->vm_flags |= VM_IO | VM_PFNMAP;
+	vm_flags_set(vma, VM_IO | VM_PFNMAP);
 	vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
 	vma->vm_ops = &ocxlflash_vmops;
 	return 0;
diff --git a/drivers/scsi/cxlflash/superpipe.c b/drivers/scsi/cxlflash/superpipe.c
index df0ebab..22cfc2e 100644
--- a/drivers/scsi/cxlflash/superpipe.c
+++ b/drivers/scsi/cxlflash/superpipe.c
@@ -308,19 +308,19 @@ static int afu_attach(struct cxlflash_cfg *cfg, struct ctx_info *ctxi)
  * @lli:	LUN destined for capacity request.
  *
  * The READ_CAP16 can take quite a while to complete. Should an EEH occur while
- * in scsi_execute(), the EEH handler will attempt to recover. As part of the
- * recovery, the handler drains all currently running ioctls, waiting until they
- * have completed before proceeding with a reset. As this routine is used on the
- * ioctl path, this can create a condition where the EEH handler becomes stuck,
- * infinitely waiting for this ioctl thread. To avoid this behavior, temporarily
- * unmark this thread as an ioctl thread by releasing the ioctl read semaphore.
- * This will allow the EEH handler to proceed with a recovery while this thread
- * is still running. Once the scsi_execute() returns, reacquire the ioctl read
- * semaphore and check the adapter state in case it changed while inside of
- * scsi_execute(). The state check will wait if the adapter is still being
- * recovered or return a failure if the recovery failed. In the event that the
- * adapter reset failed, simply return the failure as the ioctl would be unable
- * to continue.
+ * in scsi_execute_cmd(), the EEH handler will attempt to recover. As part of
+ * the recovery, the handler drains all currently running ioctls, waiting until
+ * they have completed before proceeding with a reset. As this routine is used
+ * on the ioctl path, this can create a condition where the EEH handler becomes
+ * stuck, infinitely waiting for this ioctl thread. To avoid this behavior,
+ * temporarily unmark this thread as an ioctl thread by releasing the ioctl
+ * read semaphore. This will allow the EEH handler to proceed with a recovery
+ * while this thread is still running. Once the scsi_execute_cmd() returns,
+ * reacquire the ioctl read semaphore and check the adapter state in case it
+ * changed while inside of scsi_execute_cmd(). The state check will wait if the
+ * adapter is still being recovered or return a failure if the recovery failed.
+ * In the event that the adapter reset failed, simply return the failure as the
+ * ioctl would be unable to continue.
  *
  * Note that the above puts a requirement on this routine to only be called on
  * an ioctl thread.
@@ -333,6 +333,9 @@ static int read_cap16(struct scsi_device *sdev, struct llun_info *lli)
 	struct device *dev = &cfg->dev->dev;
 	struct glun_info *gli = lli->parent;
 	struct scsi_sense_hdr sshdr;
+	const struct scsi_exec_args exec_args = {
+		.sshdr = &sshdr,
+	};
 	u8 *cmd_buf = NULL;
 	u8 *scsi_cmd = NULL;
 	int rc = 0;
@@ -357,9 +360,8 @@ static int read_cap16(struct scsi_device *sdev, struct llun_info *lli)
 
 	/* Drop the ioctl read semahpore across lengthy call */
 	up_read(&cfg->ioctl_rwsem);
-	result = scsi_execute(sdev, scsi_cmd, DMA_FROM_DEVICE, cmd_buf,
-			      CMD_BUFSIZE, NULL, &sshdr, to, CMD_RETRIES,
-			      0, 0, NULL);
+	result = scsi_execute_cmd(sdev, scsi_cmd, REQ_OP_DRV_IN, cmd_buf,
+				  CMD_BUFSIZE, to, CMD_RETRIES, &exec_args);
 	down_read(&cfg->ioctl_rwsem);
 	rc = check_state(cfg);
 	if (rc) {
diff --git a/drivers/scsi/cxlflash/vlun.c b/drivers/scsi/cxlflash/vlun.c
index 5c74dc7..9caabf5 100644
--- a/drivers/scsi/cxlflash/vlun.c
+++ b/drivers/scsi/cxlflash/vlun.c
@@ -397,19 +397,19 @@ static int init_vlun(struct llun_info *lli)
  * @nblks:	Number of logical blocks to write same.
  *
  * The SCSI WRITE_SAME16 can take quite a while to complete. Should an EEH occur
- * while in scsi_execute(), the EEH handler will attempt to recover. As part of
- * the recovery, the handler drains all currently running ioctls, waiting until
- * they have completed before proceeding with a reset. As this routine is used
- * on the ioctl path, this can create a condition where the EEH handler becomes
- * stuck, infinitely waiting for this ioctl thread. To avoid this behavior,
- * temporarily unmark this thread as an ioctl thread by releasing the ioctl read
- * semaphore. This will allow the EEH handler to proceed with a recovery while
- * this thread is still running. Once the scsi_execute() returns, reacquire the
- * ioctl read semaphore and check the adapter state in case it changed while
- * inside of scsi_execute(). The state check will wait if the adapter is still
- * being recovered or return a failure if the recovery failed. In the event that
- * the adapter reset failed, simply return the failure as the ioctl would be
- * unable to continue.
+ * while in scsi_execute_cmd(), the EEH handler will attempt to recover. As
+ * part of the recovery, the handler drains all currently running ioctls,
+ * waiting until they have completed before proceeding with a reset. As this
+ * routine is used on the ioctl path, this can create a condition where the
+ * EEH handler becomes stuck, infinitely waiting for this ioctl thread. To
+ * avoid this behavior, temporarily unmark this thread as an ioctl thread by
+ * releasing the ioctl read semaphore. This will allow the EEH handler to
+ * proceed with a recovery while this thread is still running. Once the
+ * scsi_execute_cmd() returns, reacquire the ioctl read semaphore and check the
+ * adapter state in case it changed while inside of scsi_execute_cmd(). The
+ * state check will wait if the adapter is still being recovered or return a
+ * failure if the recovery failed. In the event that the adapter reset failed,
+ * simply return the failure as the ioctl would be unable to continue.
  *
  * Note that the above puts a requirement on this routine to only be called on
  * an ioctl thread.
@@ -450,9 +450,9 @@ static int write_same16(struct scsi_device *sdev,
 
 		/* Drop the ioctl read semahpore across lengthy call */
 		up_read(&cfg->ioctl_rwsem);
-		result = scsi_execute(sdev, scsi_cmd, DMA_TO_DEVICE, cmd_buf,
-				      CMD_BUFSIZE, NULL, NULL, to,
-				      CMD_RETRIES, 0, 0, NULL);
+		result = scsi_execute_cmd(sdev, scsi_cmd, REQ_OP_DRV_OUT,
+					  cmd_buf, CMD_BUFSIZE, to,
+					  CMD_RETRIES, NULL);
 		down_read(&cfg->ioctl_rwsem);
 		rc = check_state(cfg);
 		if (rc) {
diff --git a/drivers/scsi/device_handler/scsi_dh_alua.c b/drivers/scsi/device_handler/scsi_dh_alua.c
index 0781f99..eecb974 100644
--- a/drivers/scsi/device_handler/scsi_dh_alua.c
+++ b/drivers/scsi/device_handler/scsi_dh_alua.c
@@ -127,8 +127,11 @@ static int submit_rtpg(struct scsi_device *sdev, unsigned char *buff,
 		       int bufflen, struct scsi_sense_hdr *sshdr, int flags)
 {
 	u8 cdb[MAX_COMMAND_SIZE];
-	blk_opf_t req_flags = REQ_FAILFAST_DEV | REQ_FAILFAST_TRANSPORT |
-		REQ_FAILFAST_DRIVER;
+	blk_opf_t opf = REQ_OP_DRV_IN | REQ_FAILFAST_DEV |
+				REQ_FAILFAST_TRANSPORT | REQ_FAILFAST_DRIVER;
+	const struct scsi_exec_args exec_args = {
+		.sshdr = sshdr,
+	};
 
 	/* Prepare the command. */
 	memset(cdb, 0x0, MAX_COMMAND_SIZE);
@@ -139,9 +142,9 @@ static int submit_rtpg(struct scsi_device *sdev, unsigned char *buff,
 		cdb[1] = MI_REPORT_TARGET_PGS;
 	put_unaligned_be32(bufflen, &cdb[6]);
 
-	return scsi_execute(sdev, cdb, DMA_FROM_DEVICE, buff, bufflen, NULL,
-			sshdr, ALUA_FAILOVER_TIMEOUT * HZ,
-			ALUA_FAILOVER_RETRIES, req_flags, 0, NULL);
+	return scsi_execute_cmd(sdev, cdb, opf, buff, bufflen,
+				ALUA_FAILOVER_TIMEOUT * HZ,
+				ALUA_FAILOVER_RETRIES, &exec_args);
 }
 
 /*
@@ -157,8 +160,11 @@ static int submit_stpg(struct scsi_device *sdev, int group_id,
 	u8 cdb[MAX_COMMAND_SIZE];
 	unsigned char stpg_data[8];
 	int stpg_len = 8;
-	blk_opf_t req_flags = REQ_FAILFAST_DEV | REQ_FAILFAST_TRANSPORT |
-		REQ_FAILFAST_DRIVER;
+	blk_opf_t opf = REQ_OP_DRV_OUT | REQ_FAILFAST_DEV |
+				REQ_FAILFAST_TRANSPORT | REQ_FAILFAST_DRIVER;
+	const struct scsi_exec_args exec_args = {
+		.sshdr = sshdr,
+	};
 
 	/* Prepare the data buffer */
 	memset(stpg_data, 0, stpg_len);
@@ -171,9 +177,9 @@ static int submit_stpg(struct scsi_device *sdev, int group_id,
 	cdb[1] = MO_SET_TARGET_PGS;
 	put_unaligned_be32(stpg_len, &cdb[6]);
 
-	return scsi_execute(sdev, cdb, DMA_TO_DEVICE, stpg_data, stpg_len, NULL,
-			sshdr, ALUA_FAILOVER_TIMEOUT * HZ,
-			ALUA_FAILOVER_RETRIES, req_flags, 0, NULL);
+	return scsi_execute_cmd(sdev, cdb, opf, stpg_data,
+				stpg_len, ALUA_FAILOVER_TIMEOUT * HZ,
+				ALUA_FAILOVER_RETRIES, &exec_args);
 }
 
 static struct alua_port_group *alua_find_get_pg(char *id_str, size_t id_size,
diff --git a/drivers/scsi/device_handler/scsi_dh_emc.c b/drivers/scsi/device_handler/scsi_dh_emc.c
index 2e21ab4..3cf88db 100644
--- a/drivers/scsi/device_handler/scsi_dh_emc.c
+++ b/drivers/scsi/device_handler/scsi_dh_emc.c
@@ -239,8 +239,11 @@ static int send_trespass_cmd(struct scsi_device *sdev,
 	unsigned char cdb[MAX_COMMAND_SIZE];
 	int err, res = SCSI_DH_OK, len;
 	struct scsi_sense_hdr sshdr;
-	blk_opf_t req_flags = REQ_FAILFAST_DEV | REQ_FAILFAST_TRANSPORT |
-		REQ_FAILFAST_DRIVER;
+	blk_opf_t opf = REQ_OP_DRV_OUT | REQ_FAILFAST_DEV |
+				REQ_FAILFAST_TRANSPORT | REQ_FAILFAST_DRIVER;
+	const struct scsi_exec_args exec_args = {
+		.sshdr = &sshdr,
+	};
 
 	if (csdev->flags & CLARIION_SHORT_TRESPASS) {
 		page22 = short_trespass;
@@ -263,9 +266,9 @@ static int send_trespass_cmd(struct scsi_device *sdev,
 	BUG_ON((len > CLARIION_BUFFER_SIZE));
 	memcpy(csdev->buffer, page22, len);
 
-	err = scsi_execute(sdev, cdb, DMA_TO_DEVICE, csdev->buffer, len, NULL,
-			&sshdr, CLARIION_TIMEOUT * HZ, CLARIION_RETRIES,
-			req_flags, 0, NULL);
+	err = scsi_execute_cmd(sdev, cdb, opf, csdev->buffer, len,
+			       CLARIION_TIMEOUT * HZ, CLARIION_RETRIES,
+			       &exec_args);
 	if (err) {
 		if (scsi_sense_valid(&sshdr))
 			res = trespass_endio(sdev, &sshdr);
diff --git a/drivers/scsi/device_handler/scsi_dh_hp_sw.c b/drivers/scsi/device_handler/scsi_dh_hp_sw.c
index 0d2cfa6..5f2f943 100644
--- a/drivers/scsi/device_handler/scsi_dh_hp_sw.c
+++ b/drivers/scsi/device_handler/scsi_dh_hp_sw.c
@@ -83,12 +83,15 @@ static int hp_sw_tur(struct scsi_device *sdev, struct hp_sw_dh_data *h)
 	unsigned char cmd[6] = { TEST_UNIT_READY };
 	struct scsi_sense_hdr sshdr;
 	int ret = SCSI_DH_OK, res;
-	blk_opf_t req_flags = REQ_FAILFAST_DEV | REQ_FAILFAST_TRANSPORT |
-		REQ_FAILFAST_DRIVER;
+	blk_opf_t opf = REQ_OP_DRV_IN | REQ_FAILFAST_DEV |
+				REQ_FAILFAST_TRANSPORT | REQ_FAILFAST_DRIVER;
+	const struct scsi_exec_args exec_args = {
+		.sshdr = &sshdr,
+	};
 
 retry:
-	res = scsi_execute(sdev, cmd, DMA_NONE, NULL, 0, NULL, &sshdr,
-			HP_SW_TIMEOUT, HP_SW_RETRIES, req_flags, 0, NULL);
+	res = scsi_execute_cmd(sdev, cmd, opf, NULL, 0, HP_SW_TIMEOUT,
+			       HP_SW_RETRIES, &exec_args);
 	if (res) {
 		if (scsi_sense_valid(&sshdr))
 			ret = tur_done(sdev, h, &sshdr);
@@ -121,12 +124,15 @@ static int hp_sw_start_stop(struct hp_sw_dh_data *h)
 	struct scsi_device *sdev = h->sdev;
 	int res, rc = SCSI_DH_OK;
 	int retry_cnt = HP_SW_RETRIES;
-	blk_opf_t req_flags = REQ_FAILFAST_DEV | REQ_FAILFAST_TRANSPORT |
-		REQ_FAILFAST_DRIVER;
+	blk_opf_t opf = REQ_OP_DRV_IN | REQ_FAILFAST_DEV |
+				REQ_FAILFAST_TRANSPORT | REQ_FAILFAST_DRIVER;
+	const struct scsi_exec_args exec_args = {
+		.sshdr = &sshdr,
+	};
 
 retry:
-	res = scsi_execute(sdev, cmd, DMA_NONE, NULL, 0, NULL, &sshdr,
-			HP_SW_TIMEOUT, HP_SW_RETRIES, req_flags, 0, NULL);
+	res = scsi_execute_cmd(sdev, cmd, opf, NULL, 0, HP_SW_TIMEOUT,
+			       HP_SW_RETRIES, &exec_args);
 	if (res) {
 		if (!scsi_sense_valid(&sshdr)) {
 			sdev_printk(KERN_WARNING, sdev,
diff --git a/drivers/scsi/device_handler/scsi_dh_rdac.c b/drivers/scsi/device_handler/scsi_dh_rdac.c
index bf87547..c553864 100644
--- a/drivers/scsi/device_handler/scsi_dh_rdac.c
+++ b/drivers/scsi/device_handler/scsi_dh_rdac.c
@@ -536,8 +536,11 @@ static void send_mode_select(struct work_struct *work)
 	unsigned char cdb[MAX_COMMAND_SIZE];
 	struct scsi_sense_hdr sshdr;
 	unsigned int data_size;
-	blk_opf_t req_flags = REQ_FAILFAST_DEV | REQ_FAILFAST_TRANSPORT |
-		REQ_FAILFAST_DRIVER;
+	blk_opf_t opf = REQ_OP_DRV_OUT | REQ_FAILFAST_DEV |
+				REQ_FAILFAST_TRANSPORT | REQ_FAILFAST_DRIVER;
+	const struct scsi_exec_args exec_args = {
+		.sshdr = &sshdr,
+	};
 
 	spin_lock(&ctlr->ms_lock);
 	list_splice_init(&ctlr->ms_head, &list);
@@ -555,9 +558,8 @@ static void send_mode_select(struct work_struct *work)
 		(char *) h->ctlr->array_name, h->ctlr->index,
 		(retry_cnt == RDAC_RETRY_COUNT) ? "queueing" : "retrying");
 
-	if (scsi_execute(sdev, cdb, DMA_TO_DEVICE, &h->ctlr->mode_select,
-			data_size, NULL, &sshdr, RDAC_TIMEOUT * HZ,
-			RDAC_RETRIES, req_flags, 0, NULL)) {
+	if (scsi_execute_cmd(sdev, cdb, opf, &h->ctlr->mode_select, data_size,
+			     RDAC_TIMEOUT * HZ, RDAC_RETRIES, &exec_args)) {
 		err = mode_select_handle_sense(sdev, &sshdr);
 		if (err == SCSI_DH_RETRY && retry_cnt--)
 			goto retry;
diff --git a/drivers/scsi/libiscsi.c b/drivers/scsi/libiscsi.c
index 6e811d7..127f3d7 100644
--- a/drivers/scsi/libiscsi.c
+++ b/drivers/scsi/libiscsi.c
@@ -2071,9 +2071,9 @@ static int iscsi_has_ping_timed_out(struct iscsi_conn *conn)
 		return 0;
 }
 
-enum blk_eh_timer_return iscsi_eh_cmd_timed_out(struct scsi_cmnd *sc)
+enum scsi_timeout_action iscsi_eh_cmd_timed_out(struct scsi_cmnd *sc)
 {
-	enum blk_eh_timer_return rc = BLK_EH_DONE;
+	enum scsi_timeout_action rc = SCSI_EH_NOT_HANDLED;
 	struct iscsi_task *task = NULL, *running_task;
 	struct iscsi_cls_session *cls_session;
 	struct iscsi_session *session;
@@ -2093,7 +2093,7 @@ enum blk_eh_timer_return iscsi_eh_cmd_timed_out(struct scsi_cmnd *sc)
 		 * Raced with completion. Blk layer has taken ownership
 		 * so let timeout code complete it now.
 		 */
-		rc = BLK_EH_DONE;
+		rc = SCSI_EH_NOT_HANDLED;
 		spin_unlock(&session->back_lock);
 		goto done;
 	}
@@ -2102,7 +2102,7 @@ enum blk_eh_timer_return iscsi_eh_cmd_timed_out(struct scsi_cmnd *sc)
 		 * Racing with the completion path right now, so give it more
 		 * time so that path can complete it like normal.
 		 */
-		rc = BLK_EH_RESET_TIMER;
+		rc = SCSI_EH_RESET_TIMER;
 		task = NULL;
 		spin_unlock(&session->back_lock);
 		goto done;
@@ -2120,21 +2120,21 @@ enum blk_eh_timer_return iscsi_eh_cmd_timed_out(struct scsi_cmnd *sc)
 		if (unlikely(system_state != SYSTEM_RUNNING)) {
 			sc->result = DID_NO_CONNECT << 16;
 			ISCSI_DBG_EH(session, "sc on shutdown, handled\n");
-			rc = BLK_EH_DONE;
+			rc = SCSI_EH_NOT_HANDLED;
 			goto done;
 		}
 		/*
 		 * We are probably in the middle of iscsi recovery so let
 		 * that complete and handle the error.
 		 */
-		rc = BLK_EH_RESET_TIMER;
+		rc = SCSI_EH_RESET_TIMER;
 		goto done;
 	}
 
 	conn = session->leadconn;
 	if (!conn) {
 		/* In the middle of shuting down */
-		rc = BLK_EH_RESET_TIMER;
+		rc = SCSI_EH_RESET_TIMER;
 		goto done;
 	}
 
@@ -2151,7 +2151,7 @@ enum blk_eh_timer_return iscsi_eh_cmd_timed_out(struct scsi_cmnd *sc)
 			     "Last data xfer at %lu. Last timeout was at "
 			     "%lu\n.", task->last_xfer, task->last_timeout);
 		task->have_checked_conn = false;
-		rc = BLK_EH_RESET_TIMER;
+		rc = SCSI_EH_RESET_TIMER;
 		goto done;
 	}
 
@@ -2162,7 +2162,7 @@ enum blk_eh_timer_return iscsi_eh_cmd_timed_out(struct scsi_cmnd *sc)
 	 * and can let the iscsi eh handle it
 	 */
 	if (iscsi_has_ping_timed_out(conn)) {
-		rc = BLK_EH_RESET_TIMER;
+		rc = SCSI_EH_RESET_TIMER;
 		goto done;
 	}
 
@@ -2200,7 +2200,7 @@ enum blk_eh_timer_return iscsi_eh_cmd_timed_out(struct scsi_cmnd *sc)
 				     task->last_xfer, running_task->last_xfer,
 				     task->last_timeout);
 			spin_unlock(&session->back_lock);
-			rc = BLK_EH_RESET_TIMER;
+			rc = SCSI_EH_RESET_TIMER;
 			goto done;
 		}
 	}
@@ -2216,14 +2216,14 @@ enum blk_eh_timer_return iscsi_eh_cmd_timed_out(struct scsi_cmnd *sc)
 	 */
 	if (READ_ONCE(conn->ping_task)) {
 		task->have_checked_conn = true;
-		rc = BLK_EH_RESET_TIMER;
+		rc = SCSI_EH_RESET_TIMER;
 		goto done;
 	}
 
 	/* Make sure there is a transport check done */
 	iscsi_send_nopout(conn, NULL);
 	task->have_checked_conn = true;
-	rc = BLK_EH_RESET_TIMER;
+	rc = SCSI_EH_RESET_TIMER;
 
 done:
 	spin_unlock_bh(&session->frwd_lock);
@@ -2232,7 +2232,7 @@ enum blk_eh_timer_return iscsi_eh_cmd_timed_out(struct scsi_cmnd *sc)
 		task->last_timeout = jiffies;
 		iscsi_put_task(task);
 	}
-	ISCSI_DBG_EH(session, "return %s\n", rc == BLK_EH_RESET_TIMER ?
+	ISCSI_DBG_EH(session, "return %s\n", rc == SCSI_EH_RESET_TIMER ?
 		     "timer reset" : "shutdown or nh");
 	return rc;
 }
diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c
index 13ee8e4..c895189 100644
--- a/drivers/scsi/megaraid/megaraid_sas_base.c
+++ b/drivers/scsi/megaraid/megaraid_sas_base.c
@@ -2927,15 +2927,14 @@ static int megasas_generic_reset(struct scsi_cmnd *scmd)
  * Sets the FW busy flag and reduces the host->can_queue if the
  * cmd has not been completed within the timeout period.
  */
-static enum
-blk_eh_timer_return megasas_reset_timer(struct scsi_cmnd *scmd)
+static enum scsi_timeout_action megasas_reset_timer(struct scsi_cmnd *scmd)
 {
 	struct megasas_instance *instance;
 	unsigned long flags;
 
 	if (time_after(jiffies, scmd->jiffies_at_alloc +
 				(scmd_timeout * 2) * HZ)) {
-		return BLK_EH_DONE;
+		return SCSI_EH_NOT_HANDLED;
 	}
 
 	instance = (struct megasas_instance *)scmd->device->host->hostdata;
@@ -2949,7 +2948,7 @@ blk_eh_timer_return megasas_reset_timer(struct scsi_cmnd *scmd)
 
 		spin_unlock_irqrestore(instance->host->host_lock, flags);
 	}
-	return BLK_EH_RESET_TIMER;
+	return SCSI_EH_RESET_TIMER;
 }
 
 /**
diff --git a/drivers/scsi/mvumi.c b/drivers/scsi/mvumi.c
index 05d3ce9..b3dcb89 100644
--- a/drivers/scsi/mvumi.c
+++ b/drivers/scsi/mvumi.c
@@ -2109,7 +2109,7 @@ static int mvumi_queue_command(struct Scsi_Host *shost,
 	return 0;
 }
 
-static enum blk_eh_timer_return mvumi_timed_out(struct scsi_cmnd *scmd)
+static enum scsi_timeout_action mvumi_timed_out(struct scsi_cmnd *scmd)
 {
 	struct mvumi_cmd *cmd = mvumi_priv(scmd)->cmd_priv;
 	struct Scsi_Host *host = scmd->device->host;
@@ -2137,7 +2137,7 @@ static enum blk_eh_timer_return mvumi_timed_out(struct scsi_cmnd *scmd)
 	mvumi_return_cmd(mhba, cmd);
 	spin_unlock_irqrestore(mhba->shost->host_lock, flags);
 
-	return BLK_EH_DONE;
+	return SCSI_EH_NOT_HANDLED;
 }
 
 static int
diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c
index 9e849f6..0055021 100644
--- a/drivers/scsi/qla4xxx/ql4_os.c
+++ b/drivers/scsi/qla4xxx/ql4_os.c
@@ -116,7 +116,7 @@ static int qla4xxx_iface_set_param(struct Scsi_Host *shost, void *data,
 static int qla4xxx_get_iface_param(struct iscsi_iface *iface,
 				   enum iscsi_param_type param_type,
 				   int param, char *buf);
-static enum blk_eh_timer_return qla4xxx_eh_cmd_timed_out(struct scsi_cmnd *sc);
+static enum scsi_timeout_action qla4xxx_eh_cmd_timed_out(struct scsi_cmnd *sc);
 static struct iscsi_endpoint *qla4xxx_ep_connect(struct Scsi_Host *shost,
 						 struct sockaddr *dst_addr,
 						 int non_blocking);
@@ -1871,17 +1871,17 @@ static void qla4xxx_conn_get_stats(struct iscsi_cls_conn *cls_conn,
 	return;
 }
 
-static enum blk_eh_timer_return qla4xxx_eh_cmd_timed_out(struct scsi_cmnd *sc)
+static enum scsi_timeout_action qla4xxx_eh_cmd_timed_out(struct scsi_cmnd *sc)
 {
 	struct iscsi_cls_session *session;
 	unsigned long flags;
-	enum blk_eh_timer_return ret = BLK_EH_DONE;
+	enum scsi_timeout_action ret = SCSI_EH_NOT_HANDLED;
 
 	session = starget_to_session(scsi_target(sc->device));
 
 	spin_lock_irqsave(&session->lock, flags);
 	if (session->state == ISCSI_SESSION_FAILED)
-		ret = BLK_EH_RESET_TIMER;
+		ret = SCSI_EH_RESET_TIMER;
 	spin_unlock_irqrestore(&session->lock, flags);
 
 	return ret;
diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
index 3cda5d2..9d4ec80 100644
--- a/drivers/scsi/scsi.c
+++ b/drivers/scsi/scsi.c
@@ -309,8 +309,8 @@ static int scsi_vpd_inquiry(struct scsi_device *sdev, unsigned char *buffer,
 	 * I'm not convinced we need to try quite this hard to get VPD, but
 	 * all the existing users tried this hard.
 	 */
-	result = scsi_execute_req(sdev, cmd, DMA_FROM_DEVICE, buffer,
-				  len, NULL, 30 * HZ, 3, NULL);
+	result = scsi_execute_cmd(sdev, cmd, REQ_OP_DRV_IN, buffer, len,
+				  30 * HZ, 3, NULL);
 	if (result)
 		return -EIO;
 
@@ -520,6 +520,9 @@ int scsi_report_opcode(struct scsi_device *sdev, unsigned char *buffer,
 	unsigned char cmd[16];
 	struct scsi_sense_hdr sshdr;
 	int result, request_len;
+	const struct scsi_exec_args exec_args = {
+		.sshdr = &sshdr,
+	};
 
 	if (sdev->no_report_opcodes || sdev->scsi_level < SCSI_SPC_3)
 		return -EINVAL;
@@ -541,9 +544,8 @@ int scsi_report_opcode(struct scsi_device *sdev, unsigned char *buffer,
 	put_unaligned_be32(request_len, &cmd[6]);
 	memset(buffer, 0, len);
 
-	result = scsi_execute_req(sdev, cmd, DMA_FROM_DEVICE, buffer,
-				  request_len, &sshdr, 30 * HZ, 3, NULL);
-
+	result = scsi_execute_cmd(sdev, cmd, REQ_OP_DRV_IN, buffer,
+				  request_len, 30 * HZ, 3, &exec_args);
 	if (result < 0)
 		return result;
 	if (result && scsi_sense_valid(&sshdr) &&
diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c
index 02520f9..3f10074 100644
--- a/drivers/scsi/scsi_error.c
+++ b/drivers/scsi/scsi_error.c
@@ -231,6 +231,11 @@ scsi_abort_command(struct scsi_cmnd *scmd)
 	struct Scsi_Host *shost = sdev->host;
 	unsigned long flags;
 
+	if (!shost->hostt->eh_abort_handler) {
+		/* No abort handler, fail command directly */
+		return FAILED;
+	}
+
 	if (scmd->eh_eflags & SCSI_EH_ABORT_SCHEDULED) {
 		/*
 		 * Retry after abort failed, escalate to next level.
@@ -328,7 +333,6 @@ void scsi_eh_scmd_add(struct scsi_cmnd *scmd)
 enum blk_eh_timer_return scsi_timeout(struct request *req)
 {
 	struct scsi_cmnd *scmd = blk_mq_rq_to_pdu(req);
-	enum blk_eh_timer_return rtn = BLK_EH_DONE;
 	struct Scsi_Host *host = scmd->device->host;
 
 	trace_scsi_dispatch_cmd_timeout(scmd);
@@ -338,23 +342,29 @@ enum blk_eh_timer_return scsi_timeout(struct request *req)
 	if (host->eh_deadline != -1 && !host->last_reset)
 		host->last_reset = jiffies;
 
-	if (host->hostt->eh_timed_out)
-		rtn = host->hostt->eh_timed_out(scmd);
-
-	if (rtn == BLK_EH_DONE) {
-		/*
-		 * If scsi_done() has already set SCMD_STATE_COMPLETE, do not
-		 * modify *scmd.
-		 */
-		if (test_and_set_bit(SCMD_STATE_COMPLETE, &scmd->state))
+	if (host->hostt->eh_timed_out) {
+		switch (host->hostt->eh_timed_out(scmd)) {
+		case SCSI_EH_DONE:
 			return BLK_EH_DONE;
-		if (scsi_abort_command(scmd) != SUCCESS) {
-			set_host_byte(scmd, DID_TIME_OUT);
-			scsi_eh_scmd_add(scmd);
+		case SCSI_EH_RESET_TIMER:
+			return BLK_EH_RESET_TIMER;
+		case SCSI_EH_NOT_HANDLED:
+			break;
 		}
 	}
 
-	return rtn;
+	/*
+	 * If scsi_done() has already set SCMD_STATE_COMPLETE, do not modify
+	 * *scmd.
+	 */
+	if (test_and_set_bit(SCMD_STATE_COMPLETE, &scmd->state))
+		return BLK_EH_DONE;
+	if (scsi_abort_command(scmd) != SUCCESS) {
+		set_host_byte(scmd, DID_TIME_OUT);
+		scsi_eh_scmd_add(scmd);
+	}
+
+	return BLK_EH_DONE;
 }
 
 /**
diff --git a/drivers/scsi/scsi_ioctl.c b/drivers/scsi/scsi_ioctl.c
index 2d20da5..5055c74 100644
--- a/drivers/scsi/scsi_ioctl.c
+++ b/drivers/scsi/scsi_ioctl.c
@@ -69,12 +69,15 @@ static int ioctl_internal_command(struct scsi_device *sdev, char *cmd,
 {
 	int result;
 	struct scsi_sense_hdr sshdr;
+	const struct scsi_exec_args exec_args = {
+		.sshdr = &sshdr,
+	};
 
 	SCSI_LOG_IOCTL(1, sdev_printk(KERN_INFO, sdev,
 				      "Trying ioctl with scsi command %d\n", *cmd));
 
-	result = scsi_execute_req(sdev, cmd, DMA_NONE, NULL, 0,
-				  &sshdr, timeout, retries, NULL);
+	result = scsi_execute_cmd(sdev, cmd, REQ_OP_DRV_IN, NULL, 0, timeout,
+				  retries, &exec_args);
 
 	SCSI_LOG_IOCTL(2, sdev_printk(KERN_INFO, sdev,
 				      "Ioctl returned  0x%x\n", result));
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index fb6e9a7..32999e8 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -185,39 +185,37 @@ void scsi_queue_insert(struct scsi_cmnd *cmd, int reason)
 	__scsi_queue_insert(cmd, reason, true);
 }
 
-
 /**
- * __scsi_execute - insert request and wait for the result
- * @sdev:	scsi device
+ * scsi_execute_cmd - insert request and wait for the result
+ * @sdev:	scsi_device
  * @cmd:	scsi command
- * @data_direction: data direction
+ * @opf:	block layer request cmd_flags
  * @buffer:	data buffer
  * @bufflen:	len of buffer
- * @sense:	optional sense buffer
- * @sshdr:	optional decoded sense header
  * @timeout:	request timeout in HZ
  * @retries:	number of times to retry request
- * @flags:	flags for ->cmd_flags
- * @rq_flags:	flags for ->rq_flags
- * @resid:	optional residual length
+ * @args:	Optional args. See struct definition for field descriptions
  *
  * Returns the scsi_cmnd result field if a command was executed, or a negative
  * Linux error code if we didn't get that far.
  */
-int __scsi_execute(struct scsi_device *sdev, const unsigned char *cmd,
-		 int data_direction, void *buffer, unsigned bufflen,
-		 unsigned char *sense, struct scsi_sense_hdr *sshdr,
-		 int timeout, int retries, blk_opf_t flags,
-		 req_flags_t rq_flags, int *resid)
+int scsi_execute_cmd(struct scsi_device *sdev, const unsigned char *cmd,
+		     blk_opf_t opf, void *buffer, unsigned int bufflen,
+		     int timeout, int retries,
+		     const struct scsi_exec_args *args)
 {
+	static const struct scsi_exec_args default_args;
 	struct request *req;
 	struct scsi_cmnd *scmd;
 	int ret;
 
-	req = scsi_alloc_request(sdev->request_queue,
-			data_direction == DMA_TO_DEVICE ?
-			REQ_OP_DRV_OUT : REQ_OP_DRV_IN,
-			rq_flags & RQF_PM ? BLK_MQ_REQ_PM : 0);
+	if (!args)
+		args = &default_args;
+	else if (WARN_ON_ONCE(args->sense &&
+			      args->sense_len != SCSI_SENSE_BUFFERSIZE))
+		return -EINVAL;
+
+	req = scsi_alloc_request(sdev->request_queue, opf, args->req_flags);
 	if (IS_ERR(req))
 		return PTR_ERR(req);
 
@@ -231,9 +229,9 @@ int __scsi_execute(struct scsi_device *sdev, const unsigned char *cmd,
 	scmd->cmd_len = COMMAND_SIZE(cmd[0]);
 	memcpy(scmd->cmnd, cmd, scmd->cmd_len);
 	scmd->allowed = retries;
+	scmd->flags |= args->scmd_flags;
 	req->timeout = timeout;
-	req->cmd_flags |= flags;
-	req->rq_flags |= rq_flags | RQF_QUIET;
+	req->rq_flags |= RQF_QUIET;
 
 	/*
 	 * head injection *required* here otherwise quiesce won't work
@@ -249,20 +247,21 @@ int __scsi_execute(struct scsi_device *sdev, const unsigned char *cmd,
 	if (unlikely(scmd->resid_len > 0 && scmd->resid_len <= bufflen))
 		memset(buffer + bufflen - scmd->resid_len, 0, scmd->resid_len);
 
-	if (resid)
-		*resid = scmd->resid_len;
-	if (sense && scmd->sense_len)
-		memcpy(sense, scmd->sense_buffer, SCSI_SENSE_BUFFERSIZE);
-	if (sshdr)
+	if (args->resid)
+		*args->resid = scmd->resid_len;
+	if (args->sense)
+		memcpy(args->sense, scmd->sense_buffer, SCSI_SENSE_BUFFERSIZE);
+	if (args->sshdr)
 		scsi_normalize_sense(scmd->sense_buffer, scmd->sense_len,
-				     sshdr);
+				     args->sshdr);
+
 	ret = scmd->result;
  out:
 	blk_mq_free_request(req);
 
 	return ret;
 }
-EXPORT_SYMBOL(__scsi_execute);
+EXPORT_SYMBOL(scsi_execute_cmd);
 
 /*
  * Wake up the error handler if necessary. Avoid as follows that the error
@@ -1343,9 +1342,6 @@ static inline int scsi_host_queue_ready(struct request_queue *q,
 				   struct scsi_device *sdev,
 				   struct scsi_cmnd *cmd)
 {
-	if (scsi_host_in_recovery(shost))
-		return 0;
-
 	if (atomic_read(&shost->host_blocked) > 0) {
 		if (scsi_host_busy(shost) > 0)
 			goto starved;
@@ -1736,6 +1732,11 @@ static blk_status_t scsi_queue_rq(struct blk_mq_hw_ctx *hctx,
 	ret = BLK_STS_RESOURCE;
 	if (!scsi_target_queue_ready(shost, sdev))
 		goto out_put_budget;
+	if (unlikely(scsi_host_in_recovery(shost))) {
+		if (cmd->flags & SCMD_FAIL_IF_RECOVERING)
+			ret = BLK_STS_OFFLINE;
+		goto out_dec_target_busy;
+	}
 	if (!scsi_host_queue_ready(q, shost, sdev, cmd))
 		goto out_dec_target_busy;
 
@@ -2089,6 +2090,9 @@ int scsi_mode_select(struct scsi_device *sdev, int pf, int sp,
 {
 	unsigned char cmd[10];
 	unsigned char *real_buffer;
+	const struct scsi_exec_args exec_args = {
+		.sshdr = sshdr,
+	};
 	int ret;
 
 	memset(cmd, 0, sizeof(cmd));
@@ -2138,8 +2142,8 @@ int scsi_mode_select(struct scsi_device *sdev, int pf, int sp,
 		cmd[4] = len;
 	}
 
-	ret = scsi_execute_req(sdev, cmd, DMA_TO_DEVICE, real_buffer, len,
-			       sshdr, timeout, retries, NULL);
+	ret = scsi_execute_cmd(sdev, cmd, REQ_OP_DRV_OUT, real_buffer, len,
+			       timeout, retries, &exec_args);
 	kfree(real_buffer);
 	return ret;
 }
@@ -2170,6 +2174,10 @@ scsi_mode_sense(struct scsi_device *sdev, int dbd, int modepage,
 	int header_length;
 	int result, retry_count = retries;
 	struct scsi_sense_hdr my_sshdr;
+	const struct scsi_exec_args exec_args = {
+		/* caller might not be interested in sense, but we need it */
+		.sshdr = sshdr ? : &my_sshdr,
+	};
 
 	memset(data, 0, sizeof(*data));
 	memset(&cmd[0], 0, 12);
@@ -2178,9 +2186,7 @@ scsi_mode_sense(struct scsi_device *sdev, int dbd, int modepage,
 	cmd[1] = dbd & 0x18;	/* allows DBD and LLBA bits */
 	cmd[2] = modepage;
 
-	/* caller might not be interested in sense, but we need it */
-	if (!sshdr)
-		sshdr = &my_sshdr;
+	sshdr = exec_args.sshdr;
 
  retry:
 	use_10_for_ms = sdev->use_10_for_ms || len > 255;
@@ -2203,8 +2209,8 @@ scsi_mode_sense(struct scsi_device *sdev, int dbd, int modepage,
 
 	memset(buffer, 0, len);
 
-	result = scsi_execute_req(sdev, cmd, DMA_FROM_DEVICE, buffer, len,
-				  sshdr, timeout, retries, NULL);
+	result = scsi_execute_cmd(sdev, cmd, REQ_OP_DRV_IN, buffer, len,
+				  timeout, retries, &exec_args);
 	if (result < 0)
 		return result;
 
@@ -2284,12 +2290,15 @@ scsi_test_unit_ready(struct scsi_device *sdev, int timeout, int retries,
 	char cmd[] = {
 		TEST_UNIT_READY, 0, 0, 0, 0, 0,
 	};
+	const struct scsi_exec_args exec_args = {
+		.sshdr = sshdr,
+	};
 	int result;
 
 	/* try to eat the UNIT_ATTENTION if there are enough retries */
 	do {
-		result = scsi_execute_req(sdev, cmd, DMA_NONE, NULL, 0, sshdr,
-					  timeout, 1, NULL);
+		result = scsi_execute_cmd(sdev, cmd, REQ_OP_DRV_IN, NULL, 0,
+					  timeout, 1, &exec_args);
 		if (sdev->removable && scsi_sense_valid(sshdr) &&
 		    sshdr->sense_key == UNIT_ATTENTION)
 			sdev->changed = 1;
diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c
index d12f2dc..13ff524 100644
--- a/drivers/scsi/scsi_scan.c
+++ b/drivers/scsi/scsi_scan.c
@@ -210,7 +210,7 @@ static void scsi_unlock_floptical(struct scsi_device *sdev,
 	scsi_cmd[3] = 0;
 	scsi_cmd[4] = 0x2a;     /* size */
 	scsi_cmd[5] = 0;
-	scsi_execute_req(sdev, scsi_cmd, DMA_FROM_DEVICE, result, 0x2a, NULL,
+	scsi_execute_cmd(sdev, scsi_cmd, REQ_OP_DRV_IN, result, 0x2a,
 			 SCSI_TIMEOUT, 3, NULL);
 }
 
@@ -647,8 +647,12 @@ static int scsi_probe_lun(struct scsi_device *sdev, unsigned char *inq_result,
 	unsigned char scsi_cmd[MAX_COMMAND_SIZE];
 	int first_inquiry_len, try_inquiry_len, next_inquiry_len;
 	int response_len = 0;
-	int pass, count, result;
+	int pass, count, result, resid;
 	struct scsi_sense_hdr sshdr;
+	const struct scsi_exec_args exec_args = {
+		.sshdr = &sshdr,
+		.resid = &resid,
+	};
 
 	*bflags = 0;
 
@@ -666,18 +670,16 @@ static int scsi_probe_lun(struct scsi_device *sdev, unsigned char *inq_result,
 
 	/* Each pass gets up to three chances to ignore Unit Attention */
 	for (count = 0; count < 3; ++count) {
-		int resid;
-
 		memset(scsi_cmd, 0, 6);
 		scsi_cmd[0] = INQUIRY;
 		scsi_cmd[4] = (unsigned char) try_inquiry_len;
 
 		memset(inq_result, 0, try_inquiry_len);
 
-		result = scsi_execute_req(sdev,  scsi_cmd, DMA_FROM_DEVICE,
-					  inq_result, try_inquiry_len, &sshdr,
+		result = scsi_execute_cmd(sdev,  scsi_cmd, REQ_OP_DRV_IN,
+					  inq_result, try_inquiry_len,
 					  HZ / 2 + HZ * scsi_inq_timeout, 3,
-					  &resid);
+					  &exec_args);
 
 		SCSI_LOG_SCAN_BUS(3, sdev_printk(KERN_INFO, sdev,
 				"scsi scan: INQUIRY %s with code 0x%x\n",
@@ -1405,6 +1407,9 @@ static int scsi_report_lun_scan(struct scsi_target *starget, blist_flags_t bflag
 	struct scsi_sense_hdr sshdr;
 	struct scsi_device *sdev;
 	struct Scsi_Host *shost = dev_to_shost(&starget->dev);
+	const struct scsi_exec_args exec_args = {
+		.sshdr = &sshdr,
+	};
 	int ret = 0;
 
 	/*
@@ -1479,9 +1484,10 @@ static int scsi_report_lun_scan(struct scsi_target *starget, blist_flags_t bflag
 				"scsi scan: Sending REPORT LUNS to (try %d)\n",
 				retries));
 
-		result = scsi_execute_req(sdev, scsi_cmd, DMA_FROM_DEVICE,
-					  lun_data, length, &sshdr,
-					  SCSI_REPORT_LUNS_TIMEOUT, 3, NULL);
+		result = scsi_execute_cmd(sdev, scsi_cmd, REQ_OP_DRV_IN,
+					  lun_data, length,
+					  SCSI_REPORT_LUNS_TIMEOUT, 3,
+					  &exec_args);
 
 		SCSI_LOG_SCAN_BUS(3, sdev_printk (KERN_INFO, sdev,
 				"scsi scan: REPORT LUNS"
diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c
index cac7c90..12c4c55 100644
--- a/drivers/scsi/scsi_sysfs.c
+++ b/drivers/scsi/scsi_sysfs.c
@@ -456,6 +456,8 @@ static void scsi_device_dev_release_usercontext(struct work_struct *work)
 
 	mod = sdev->host->hostt->module;
 
+	might_sleep();
+
 	scsi_dh_release_device(sdev);
 
 	parent = sdev->sdev_gendev.parent;
@@ -1486,6 +1488,7 @@ void __scsi_remove_device(struct scsi_device *sdev)
 	mutex_unlock(&sdev->state_mutex);
 
 	blk_mq_destroy_queue(sdev->request_queue);
+	blk_put_queue(sdev->request_queue);
 	kref_put(&sdev->host->tagset_refcnt, scsi_mq_free_tags);
 	cancel_work_sync(&sdev->requeue_work);
 
diff --git a/drivers/scsi/scsi_transport_fc.c b/drivers/scsi/scsi_transport_fc.c
index 8934160..0965f8a 100644
--- a/drivers/scsi/scsi_transport_fc.c
+++ b/drivers/scsi/scsi_transport_fc.c
@@ -2530,15 +2530,14 @@ static int fc_vport_match(struct attribute_container *cont,
  * Notes:
  *	This routine assumes no locks are held on entry.
  */
-enum blk_eh_timer_return
-fc_eh_timed_out(struct scsi_cmnd *scmd)
+enum scsi_timeout_action fc_eh_timed_out(struct scsi_cmnd *scmd)
 {
 	struct fc_rport *rport = starget_to_rport(scsi_target(scmd->device));
 
 	if (rport->port_state == FC_PORTSTATE_BLOCKED)
-		return BLK_EH_RESET_TIMER;
+		return SCSI_EH_RESET_TIMER;
 
-	return BLK_EH_DONE;
+	return SCSI_EH_NOT_HANDLED;
 }
 EXPORT_SYMBOL(fc_eh_timed_out);
 
diff --git a/drivers/scsi/scsi_transport_spi.c b/drivers/scsi/scsi_transport_spi.c
index f569cf0..2442d4d 100644
--- a/drivers/scsi/scsi_transport_spi.c
+++ b/drivers/scsi/scsi_transport_spi.c
@@ -105,28 +105,27 @@ static int sprint_frac(char *dest, int value, int denom)
 }
 
 static int spi_execute(struct scsi_device *sdev, const void *cmd,
-		       enum dma_data_direction dir,
-		       void *buffer, unsigned bufflen,
+		       enum req_op op, void *buffer, unsigned int bufflen,
 		       struct scsi_sense_hdr *sshdr)
 {
 	int i, result;
-	unsigned char sense[SCSI_SENSE_BUFFERSIZE];
 	struct scsi_sense_hdr sshdr_tmp;
+	blk_opf_t opf = op | REQ_FAILFAST_DEV | REQ_FAILFAST_TRANSPORT |
+			REQ_FAILFAST_DRIVER;
+	const struct scsi_exec_args exec_args = {
+		.req_flags = BLK_MQ_REQ_PM,
+		.sshdr = sshdr ? : &sshdr_tmp,
+	};
 
-	if (!sshdr)
-		sshdr = &sshdr_tmp;
+	sshdr = exec_args.sshdr;
 
 	for(i = 0; i < DV_RETRIES; i++) {
 		/*
 		 * The purpose of the RQF_PM flag below is to bypass the
 		 * SDEV_QUIESCE state.
 		 */
-		result = scsi_execute(sdev, cmd, dir, buffer, bufflen, sense,
-				      sshdr, DV_TIMEOUT, /* retries */ 1,
-				      REQ_FAILFAST_DEV |
-				      REQ_FAILFAST_TRANSPORT |
-				      REQ_FAILFAST_DRIVER,
-				      RQF_PM, NULL);
+		result = scsi_execute_cmd(sdev, cmd, opf, buffer, bufflen,
+					  DV_TIMEOUT, 1, &exec_args);
 		if (result < 0 || !scsi_sense_valid(sshdr) ||
 		    sshdr->sense_key != UNIT_ATTENTION)
 			break;
@@ -675,7 +674,7 @@ spi_dv_device_echo_buffer(struct scsi_device *sdev, u8 *buffer,
 	}
 
 	for (r = 0; r < retries; r++) {
-		result = spi_execute(sdev, spi_write_buffer, DMA_TO_DEVICE,
+		result = spi_execute(sdev, spi_write_buffer, REQ_OP_DRV_OUT,
 				     buffer, len, &sshdr);
 		if(result || !scsi_device_online(sdev)) {
 
@@ -697,7 +696,7 @@ spi_dv_device_echo_buffer(struct scsi_device *sdev, u8 *buffer,
 		}
 
 		memset(ptr, 0, len);
-		spi_execute(sdev, spi_read_buffer, DMA_FROM_DEVICE,
+		spi_execute(sdev, spi_read_buffer, REQ_OP_DRV_IN,
 			    ptr, len, NULL);
 		scsi_device_set_state(sdev, SDEV_QUIESCE);
 
@@ -722,7 +721,7 @@ spi_dv_device_compare_inquiry(struct scsi_device *sdev, u8 *buffer,
 	for (r = 0; r < retries; r++) {
 		memset(ptr, 0, len);
 
-		result = spi_execute(sdev, spi_inquiry, DMA_FROM_DEVICE,
+		result = spi_execute(sdev, spi_inquiry, REQ_OP_DRV_IN,
 				     ptr, len, NULL);
 		
 		if(result || !scsi_device_online(sdev)) {
@@ -828,7 +827,7 @@ spi_dv_device_get_echo_buffer(struct scsi_device *sdev, u8 *buffer)
 	 * (reservation conflict, device not ready, etc) just
 	 * skip the write tests */
 	for (l = 0; ; l++) {
-		result = spi_execute(sdev, spi_test_unit_ready, DMA_NONE, 
+		result = spi_execute(sdev, spi_test_unit_ready, REQ_OP_DRV_IN,
 				     NULL, 0, NULL);
 
 		if(result) {
@@ -841,7 +840,7 @@ spi_dv_device_get_echo_buffer(struct scsi_device *sdev, u8 *buffer)
 	}
 
 	result = spi_execute(sdev, spi_read_buffer_descriptor, 
-			     DMA_FROM_DEVICE, buffer, 4, NULL);
+			     REQ_OP_DRV_IN, buffer, 4, NULL);
 
 	if (result)
 		/* Device has no echo buffer */
diff --git a/drivers/scsi/scsi_transport_srp.c b/drivers/scsi/scsi_transport_srp.c
index 98a34ed..87d0fb8 100644
--- a/drivers/scsi/scsi_transport_srp.c
+++ b/drivers/scsi/scsi_transport_srp.c
@@ -594,13 +594,13 @@ EXPORT_SYMBOL(srp_reconnect_rport);
  * @scmd: SCSI command.
  *
  * If a timeout occurs while an rport is in the blocked state, ask the SCSI
- * EH to continue waiting (BLK_EH_RESET_TIMER). Otherwise let the SCSI core
- * handle the timeout (BLK_EH_DONE).
+ * EH to continue waiting (SCSI_EH_RESET_TIMER). Otherwise let the SCSI core
+ * handle the timeout (SCSI_EH_NOT_HANDLED).
  *
  * Note: This function is called from soft-IRQ context and with the request
  * queue lock held.
  */
-enum blk_eh_timer_return srp_timed_out(struct scsi_cmnd *scmd)
+enum scsi_timeout_action srp_timed_out(struct scsi_cmnd *scmd)
 {
 	struct scsi_device *sdev = scmd->device;
 	struct Scsi_Host *shost = sdev->host;
@@ -611,7 +611,7 @@ enum blk_eh_timer_return srp_timed_out(struct scsi_cmnd *scmd)
 	return rport && rport->fast_io_fail_tmo < 0 &&
 		rport->dev_loss_tmo < 0 &&
 		i->f->reset_timer_if_blocked && scsi_device_blocked(sdev) ?
-		BLK_EH_RESET_TIMER : BLK_EH_DONE;
+		SCSI_EH_RESET_TIMER : SCSI_EH_NOT_HANDLED;
 }
 EXPORT_SYMBOL(srp_timed_out);
 
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index e934779..0efc659 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -664,6 +664,9 @@ static int sd_sec_submit(void *data, u16 spsp, u8 secp, void *buffer,
 	struct scsi_disk *sdkp = data;
 	struct scsi_device *sdev = sdkp->device;
 	u8 cdb[12] = { 0, };
+	const struct scsi_exec_args exec_args = {
+		.req_flags = BLK_MQ_REQ_PM,
+	};
 	int ret;
 
 	cdb[0] = send ? SECURITY_PROTOCOL_OUT : SECURITY_PROTOCOL_IN;
@@ -671,9 +674,9 @@ static int sd_sec_submit(void *data, u16 spsp, u8 secp, void *buffer,
 	put_unaligned_be16(spsp, &cdb[2]);
 	put_unaligned_be32(len, &cdb[6]);
 
-	ret = scsi_execute(sdev, cdb, send ? DMA_TO_DEVICE : DMA_FROM_DEVICE,
-		buffer, len, NULL, NULL, SD_TIMEOUT, sdkp->max_retries, 0,
-		RQF_PM, NULL);
+	ret = scsi_execute_cmd(sdev, cdb, send ? REQ_OP_DRV_OUT : REQ_OP_DRV_IN,
+			       buffer, len, SD_TIMEOUT, sdkp->max_retries,
+			       &exec_args);
 	return ret <= 0 ? ret : -EIO;
 }
 #endif /* CONFIG_BLK_SED_OPAL */
@@ -1578,13 +1581,16 @@ static int sd_sync_cache(struct scsi_disk *sdkp, struct scsi_sense_hdr *sshdr)
 	const int timeout = sdp->request_queue->rq_timeout
 		* SD_FLUSH_TIMEOUT_MULTIPLIER;
 	struct scsi_sense_hdr my_sshdr;
+	const struct scsi_exec_args exec_args = {
+		.req_flags = BLK_MQ_REQ_PM,
+		/* caller might not be interested in sense, but we need it */
+		.sshdr = sshdr ? : &my_sshdr,
+	};
 
 	if (!scsi_device_online(sdp))
 		return -ENODEV;
 
-	/* caller might not be interested in sense, but we need it */
-	if (!sshdr)
-		sshdr = &my_sshdr;
+	sshdr = exec_args.sshdr;
 
 	for (retries = 3; retries > 0; --retries) {
 		unsigned char cmd[10] = { 0 };
@@ -1594,8 +1600,8 @@ static int sd_sync_cache(struct scsi_disk *sdkp, struct scsi_sense_hdr *sshdr)
 		 * Leave the rest of the command zero to indicate
 		 * flush everything.
 		 */
-		res = scsi_execute(sdp, cmd, DMA_NONE, NULL, 0, NULL, sshdr,
-				timeout, sdkp->max_retries, 0, RQF_PM, NULL);
+		res = scsi_execute_cmd(sdp, cmd, REQ_OP_DRV_IN, NULL, 0,
+				       timeout, sdkp->max_retries, &exec_args);
 		if (res == 0)
 			break;
 	}
@@ -1707,6 +1713,9 @@ static int sd_pr_command(struct block_device *bdev, u8 sa,
 	struct scsi_disk *sdkp = scsi_disk(bdev->bd_disk);
 	struct scsi_device *sdev = sdkp->device;
 	struct scsi_sense_hdr sshdr;
+	const struct scsi_exec_args exec_args = {
+		.sshdr = &sshdr,
+	};
 	int result;
 	u8 cmd[16] = { 0, };
 	u8 data[24] = { 0, };
@@ -1720,8 +1729,9 @@ static int sd_pr_command(struct block_device *bdev, u8 sa,
 	put_unaligned_be64(sa_key, &data[8]);
 	data[20] = flags;
 
-	result = scsi_execute_req(sdev, cmd, DMA_TO_DEVICE, &data, sizeof(data),
-			&sshdr, SD_TIMEOUT, sdkp->max_retries, NULL);
+	result = scsi_execute_cmd(sdev, cmd, REQ_OP_DRV_OUT, &data,
+				  sizeof(data), SD_TIMEOUT, sdkp->max_retries,
+				  &exec_args);
 
 	if (scsi_status_is_check_condition(result) &&
 	    scsi_sense_valid(&sshdr)) {
@@ -2047,6 +2057,9 @@ sd_spinup_disk(struct scsi_disk *sdkp)
 	int retries, spintime;
 	unsigned int the_result;
 	struct scsi_sense_hdr sshdr;
+	const struct scsi_exec_args exec_args = {
+		.sshdr = &sshdr,
+	};
 	int sense_valid = 0;
 
 	spintime = 0;
@@ -2062,10 +2075,11 @@ sd_spinup_disk(struct scsi_disk *sdkp)
 			cmd[0] = TEST_UNIT_READY;
 			memset((void *) &cmd[1], 0, 9);
 
-			the_result = scsi_execute_req(sdkp->device, cmd,
-						      DMA_NONE, NULL, 0,
-						      &sshdr, SD_TIMEOUT,
-						      sdkp->max_retries, NULL);
+			the_result = scsi_execute_cmd(sdkp->device, cmd,
+						      REQ_OP_DRV_IN, NULL, 0,
+						      SD_TIMEOUT,
+						      sdkp->max_retries,
+						      &exec_args);
 
 			/*
 			 * If the drive has indicated to us that it
@@ -2122,10 +2136,10 @@ sd_spinup_disk(struct scsi_disk *sdkp)
 				cmd[4] = 1;	/* Start spin cycle */
 				if (sdkp->device->start_stop_pwr_cond)
 					cmd[4] |= 1 << 4;
-				scsi_execute_req(sdkp->device, cmd, DMA_NONE,
-						 NULL, 0, &sshdr,
+				scsi_execute_cmd(sdkp->device, cmd,
+						 REQ_OP_DRV_IN, NULL, 0,
 						 SD_TIMEOUT, sdkp->max_retries,
-						 NULL);
+						 &exec_args);
 				spintime_expire = jiffies + 100 * HZ;
 				spintime = 1;
 			}
@@ -2255,6 +2269,9 @@ static int read_capacity_16(struct scsi_disk *sdkp, struct scsi_device *sdp,
 {
 	unsigned char cmd[16];
 	struct scsi_sense_hdr sshdr;
+	const struct scsi_exec_args exec_args = {
+		.sshdr = &sshdr,
+	};
 	int sense_valid = 0;
 	int the_result;
 	int retries = 3, reset_retries = READ_CAPACITY_RETRIES_ON_RESET;
@@ -2272,9 +2289,9 @@ static int read_capacity_16(struct scsi_disk *sdkp, struct scsi_device *sdp,
 		cmd[13] = RC16_LEN;
 		memset(buffer, 0, RC16_LEN);
 
-		the_result = scsi_execute_req(sdp, cmd, DMA_FROM_DEVICE,
-					buffer, RC16_LEN, &sshdr,
-					SD_TIMEOUT, sdkp->max_retries, NULL);
+		the_result = scsi_execute_cmd(sdp, cmd, REQ_OP_DRV_IN,
+					      buffer, RC16_LEN, SD_TIMEOUT,
+					      sdkp->max_retries, &exec_args);
 
 		if (media_not_present(sdkp, &sshdr))
 			return -ENODEV;
@@ -2346,6 +2363,9 @@ static int read_capacity_10(struct scsi_disk *sdkp, struct scsi_device *sdp,
 {
 	unsigned char cmd[16];
 	struct scsi_sense_hdr sshdr;
+	const struct scsi_exec_args exec_args = {
+		.sshdr = &sshdr,
+	};
 	int sense_valid = 0;
 	int the_result;
 	int retries = 3, reset_retries = READ_CAPACITY_RETRIES_ON_RESET;
@@ -2357,9 +2377,9 @@ static int read_capacity_10(struct scsi_disk *sdkp, struct scsi_device *sdp,
 		memset(&cmd[1], 0, 9);
 		memset(buffer, 0, 8);
 
-		the_result = scsi_execute_req(sdp, cmd, DMA_FROM_DEVICE,
-					buffer, 8, &sshdr,
-					SD_TIMEOUT, sdkp->max_retries, NULL);
+		the_result = scsi_execute_cmd(sdp, cmd, REQ_OP_DRV_IN, buffer,
+					      8, SD_TIMEOUT, sdkp->max_retries,
+					      &exec_args);
 
 		if (media_not_present(sdkp, &sshdr))
 			return -ENODEV;
@@ -3601,6 +3621,10 @@ static int sd_start_stop_device(struct scsi_disk *sdkp, int start)
 {
 	unsigned char cmd[6] = { START_STOP };	/* START_VALID */
 	struct scsi_sense_hdr sshdr;
+	const struct scsi_exec_args exec_args = {
+		.sshdr = &sshdr,
+		.req_flags = BLK_MQ_REQ_PM,
+	};
 	struct scsi_device *sdp = sdkp->device;
 	int res;
 
@@ -3613,8 +3637,8 @@ static int sd_start_stop_device(struct scsi_disk *sdkp, int start)
 	if (!scsi_device_online(sdp))
 		return -ENODEV;
 
-	res = scsi_execute(sdp, cmd, DMA_NONE, NULL, 0, NULL, &sshdr,
-			SD_TIMEOUT, sdkp->max_retries, 0, RQF_PM, NULL);
+	res = scsi_execute_cmd(sdp, cmd, REQ_OP_DRV_IN, NULL, 0, SD_TIMEOUT,
+			       sdkp->max_retries, &exec_args);
 	if (res) {
 		sd_print_result(sdkp, "Start/Stop Unit failed", res);
 		if (res > 0 && scsi_sense_valid(&sshdr)) {
@@ -3754,10 +3778,13 @@ static int sd_resume_runtime(struct device *dev)
 	if (sdp->ignore_media_change) {
 		/* clear the device's sense data */
 		static const u8 cmd[10] = { REQUEST_SENSE };
+		const struct scsi_exec_args exec_args = {
+			.req_flags = BLK_MQ_REQ_PM,
+		};
 
-		if (scsi_execute(sdp, cmd, DMA_NONE, NULL, 0, NULL,
-				 NULL, sdp->request_queue->rq_timeout, 1, 0,
-				 RQF_PM, NULL))
+		if (scsi_execute_cmd(sdp, cmd, REQ_OP_DRV_IN, NULL, 0,
+				     sdp->request_queue->rq_timeout, 1,
+				     &exec_args))
 			sd_printk(KERN_NOTICE, sdkp,
 				  "Failed to clear sense data\n");
 	}
diff --git a/drivers/scsi/sd.h b/drivers/scsi/sd.h
index 5eea762..9795398 100644
--- a/drivers/scsi/sd.h
+++ b/drivers/scsi/sd.h
@@ -150,6 +150,9 @@ struct scsi_disk {
 	unsigned	urswrz : 1;
 	unsigned	security : 1;
 	unsigned	ignore_medium_access_errors : 1;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 #define to_scsi_disk(obj) container_of(obj, struct scsi_disk, disk_dev)
 
diff --git a/drivers/scsi/sd_zbc.c b/drivers/scsi/sd_zbc.c
index 4c35b4a..4131e57 100644
--- a/drivers/scsi/sd_zbc.c
+++ b/drivers/scsi/sd_zbc.c
@@ -145,6 +145,9 @@ static int sd_zbc_do_report_zones(struct scsi_disk *sdkp, unsigned char *buf,
 	struct scsi_device *sdp = sdkp->device;
 	const int timeout = sdp->request_queue->rq_timeout;
 	struct scsi_sense_hdr sshdr;
+	const struct scsi_exec_args exec_args = {
+		.sshdr = &sshdr,
+	};
 	unsigned char cmd[16];
 	unsigned int rep_len;
 	int result;
@@ -157,9 +160,8 @@ static int sd_zbc_do_report_zones(struct scsi_disk *sdkp, unsigned char *buf,
 	if (partial)
 		cmd[14] = ZBC_REPORT_ZONE_PARTIAL;
 
-	result = scsi_execute_req(sdp, cmd, DMA_FROM_DEVICE,
-				  buf, buflen, &sshdr,
-				  timeout, SD_MAX_RETRIES, NULL);
+	result = scsi_execute_cmd(sdp, cmd, REQ_OP_DRV_IN, buf, buflen,
+				  timeout, SD_MAX_RETRIES, &exec_args);
 	if (result) {
 		sd_printk(KERN_ERR, sdkp,
 			  "REPORT ZONES start lba %llu failed\n", lba);
diff --git a/drivers/scsi/ses.c b/drivers/scsi/ses.c
index 6a1428d..b54f2c6 100644
--- a/drivers/scsi/ses.c
+++ b/drivers/scsi/ses.c
@@ -89,10 +89,13 @@ static int ses_recv_diag(struct scsi_device *sdev, int page_code,
 	unsigned char recv_page_code;
 	unsigned int retries = SES_RETRIES;
 	struct scsi_sense_hdr sshdr;
+	const struct scsi_exec_args exec_args = {
+		.sshdr = &sshdr,
+	};
 
 	do {
-		ret = scsi_execute_req(sdev, cmd, DMA_FROM_DEVICE, buf, bufflen,
-				       &sshdr, SES_TIMEOUT, 1, NULL);
+		ret = scsi_execute_cmd(sdev, cmd, REQ_OP_DRV_IN, buf, bufflen,
+				       SES_TIMEOUT, 1, &exec_args);
 	} while (ret > 0 && --retries && scsi_sense_valid(&sshdr) &&
 		 (sshdr.sense_key == NOT_READY ||
 		  (sshdr.sense_key == UNIT_ATTENTION && sshdr.asc == 0x29)));
@@ -130,10 +133,13 @@ static int ses_send_diag(struct scsi_device *sdev, int page_code,
 	};
 	struct scsi_sense_hdr sshdr;
 	unsigned int retries = SES_RETRIES;
+	const struct scsi_exec_args exec_args = {
+		.sshdr = &sshdr,
+	};
 
 	do {
-		result = scsi_execute_req(sdev, cmd, DMA_TO_DEVICE, buf, bufflen,
-					  &sshdr, SES_TIMEOUT, 1, NULL);
+		result = scsi_execute_cmd(sdev, cmd, REQ_OP_DRV_OUT, buf,
+					  bufflen, SES_TIMEOUT, 1, &exec_args);
 	} while (result > 0 && --retries && scsi_sense_valid(&sshdr) &&
 		 (sshdr.sense_key == NOT_READY ||
 		  (sshdr.sense_key == UNIT_ATTENTION && sshdr.asc == 0x29)));
diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c
index 12344be..cbaf987 100644
--- a/drivers/scsi/sg.c
+++ b/drivers/scsi/sg.c
@@ -1288,7 +1288,7 @@ sg_mmap(struct file *filp, struct vm_area_struct *vma)
 	}
 
 	sfp->mmap_called = 1;
-	vma->vm_flags |= VM_IO | VM_DONTEXPAND | VM_DONTDUMP;
+	vm_flags_set(vma, VM_IO | VM_DONTEXPAND | VM_DONTDUMP);
 	vma->vm_private_data = sfp;
 	vma->vm_ops = &sg_mmap_vm_ops;
 out:
diff --git a/drivers/scsi/sr.c b/drivers/scsi/sr.c
index a278b73..9e51dcd 100644
--- a/drivers/scsi/sr.c
+++ b/drivers/scsi/sr.c
@@ -170,10 +170,13 @@ static unsigned int sr_get_events(struct scsi_device *sdev)
 	struct event_header *eh = (void *)buf;
 	struct media_event_desc *med = (void *)(buf + 4);
 	struct scsi_sense_hdr sshdr;
+	const struct scsi_exec_args exec_args = {
+		.sshdr = &sshdr,
+	};
 	int result;
 
-	result = scsi_execute_req(sdev, cmd, DMA_FROM_DEVICE, buf, sizeof(buf),
-				  &sshdr, SR_TIMEOUT, MAX_RETRIES, NULL);
+	result = scsi_execute_cmd(sdev, cmd, REQ_OP_DRV_IN, buf, sizeof(buf),
+				  SR_TIMEOUT, MAX_RETRIES, &exec_args);
 	if (scsi_sense_valid(&sshdr) && sshdr.sense_key == UNIT_ATTENTION)
 		return DISK_EVENT_MEDIA_CHANGE;
 
@@ -730,8 +733,8 @@ static void get_sectorsize(struct scsi_cd *cd)
 		memset(buffer, 0, sizeof(buffer));
 
 		/* Do the command and wait.. */
-		the_result = scsi_execute_req(cd->device, cmd, DMA_FROM_DEVICE,
-					      buffer, sizeof(buffer), NULL,
+		the_result = scsi_execute_cmd(cd->device, cmd, REQ_OP_DRV_IN,
+					      buffer, sizeof(buffer),
 					      SR_TIMEOUT, MAX_RETRIES, NULL);
 
 		retries--;
diff --git a/drivers/scsi/sr_ioctl.c b/drivers/scsi/sr_ioctl.c
index fbdb5124..5b0b35e 100644
--- a/drivers/scsi/sr_ioctl.c
+++ b/drivers/scsi/sr_ioctl.c
@@ -188,13 +188,15 @@ static int sr_play_trkind(struct cdrom_device_info *cdi,
 int sr_do_ioctl(Scsi_CD *cd, struct packet_command *cgc)
 {
 	struct scsi_device *SDev;
-	struct scsi_sense_hdr local_sshdr, *sshdr = &local_sshdr;
+	struct scsi_sense_hdr local_sshdr, *sshdr;
 	int result, err = 0, retries = 0;
+	const struct scsi_exec_args exec_args = {
+		.sshdr = cgc->sshdr ? : &local_sshdr,
+	};
 
 	SDev = cd->device;
 
-	if (cgc->sshdr)
-		sshdr = cgc->sshdr;
+	sshdr = exec_args.sshdr;
 
       retry:
 	if (!scsi_block_when_processing_errors(SDev)) {
@@ -202,10 +204,11 @@ int sr_do_ioctl(Scsi_CD *cd, struct packet_command *cgc)
 		goto out;
 	}
 
-	result = scsi_execute(SDev, cgc->cmd, cgc->data_direction,
-			      cgc->buffer, cgc->buflen, NULL, sshdr,
-			      cgc->timeout, IOCTL_RETRIES, 0, 0, NULL);
-
+	result = scsi_execute_cmd(SDev, cgc->cmd,
+				  cgc->data_direction == DMA_TO_DEVICE ?
+				  REQ_OP_DRV_OUT : REQ_OP_DRV_IN, cgc->buffer,
+				  cgc->buflen, cgc->timeout, IOCTL_RETRIES,
+				  &exec_args);
 	/* Minimal error checking.  Ignore cases we know about, and report the rest. */
 	if (result < 0) {
 		err = result;
diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c
index 5284f9a..c8c58dc 100644
--- a/drivers/scsi/storvsc_drv.c
+++ b/drivers/scsi/storvsc_drv.c
@@ -1667,13 +1667,13 @@ static int storvsc_host_reset_handler(struct scsi_cmnd *scmnd)
  * be unbounded on Azure.  Reset the timer unconditionally to give the host a
  * chance to perform EH.
  */
-static enum blk_eh_timer_return storvsc_eh_timed_out(struct scsi_cmnd *scmnd)
+static enum scsi_timeout_action storvsc_eh_timed_out(struct scsi_cmnd *scmnd)
 {
 #if IS_ENABLED(CONFIG_SCSI_FC_ATTRS)
 	if (scmnd->device->host->transportt == fc_transport_template)
 		return fc_eh_timed_out(scmnd);
 #endif
-	return BLK_EH_RESET_TIMER;
+	return SCSI_EH_RESET_TIMER;
 }
 
 static bool storvsc_scsi_cmd_ok(struct scsi_cmnd *scmnd)
diff --git a/drivers/scsi/virtio_scsi.c b/drivers/scsi/virtio_scsi.c
index 2a79ab1..b221c3c 100644
--- a/drivers/scsi/virtio_scsi.c
+++ b/drivers/scsi/virtio_scsi.c
@@ -347,8 +347,8 @@ static void virtscsi_rescan_hotunplug(struct virtio_scsi *vscsi)
 
 		memset(inq_result, 0, inq_result_len);
 
-		result = scsi_execute_req(sdev, scsi_cmd, DMA_FROM_DEVICE,
-					  inq_result, inquiry_len, NULL,
+		result = scsi_execute_cmd(sdev, scsi_cmd, REQ_OP_DRV_IN,
+					  inq_result, inquiry_len,
 					  SD_TIMEOUT, SD_MAX_RETRIES, NULL);
 
 		if (result == 0 && inq_result[0] >> 5) {
@@ -731,9 +731,9 @@ static void virtscsi_commit_rqs(struct Scsi_Host *shost, u16 hwq)
  * latencies might be higher than on bare metal.  Reset the timer
  * unconditionally to give the host a chance to perform EH.
  */
-static enum blk_eh_timer_return virtscsi_eh_timed_out(struct scsi_cmnd *scmnd)
+static enum scsi_timeout_action virtscsi_eh_timed_out(struct scsi_cmnd *scmnd)
 {
-	return BLK_EH_RESET_TIMER;
+	return SCSI_EH_RESET_TIMER;
 }
 
 static struct scsi_host_template virtscsi_host_template = {
diff --git a/drivers/soc/qcom/qcom-geni-se.c b/drivers/soc/qcom/qcom-geni-se.c
index a0ceeed..e442df3 100644
--- a/drivers/soc/qcom/qcom-geni-se.c
+++ b/drivers/soc/qcom/qcom-geni-se.c
@@ -14,7 +14,7 @@
 #include <linux/of_platform.h>
 #include <linux/pinctrl/consumer.h>
 #include <linux/platform_device.h>
-#include <linux/qcom-geni-se.h>
+#include <linux/soc/qcom/geni-se.h>
 
 /**
  * DOC: Overview
diff --git a/drivers/soc/qcom/rmtfs_mem.c b/drivers/soc/qcom/rmtfs_mem.c
index 0feaae3..69991e4 100644
--- a/drivers/soc/qcom/rmtfs_mem.c
+++ b/drivers/soc/qcom/rmtfs_mem.c
@@ -30,7 +30,7 @@ struct qcom_rmtfs_mem {
 
 	unsigned int client_id;
 
-	unsigned int perms;
+	u64 perms;
 };
 
 static ssize_t qcom_rmtfs_mem_show(struct device *dev,
diff --git a/drivers/spi/spi-geni-qcom.c b/drivers/spi/spi-geni-qcom.c
index dd15818..3f68a01 100644
--- a/drivers/spi/spi-geni-qcom.c
+++ b/drivers/spi/spi-geni-qcom.c
@@ -12,7 +12,7 @@
 #include <linux/platform_device.h>
 #include <linux/pm_opp.h>
 #include <linux/pm_runtime.h>
-#include <linux/qcom-geni-se.h>
+#include <linux/soc/qcom/geni-se.h>
 #include <linux/spi/spi.h>
 #include <linux/spinlock.h>
 
diff --git a/drivers/staging/Kconfig b/drivers/staging/Kconfig
index 5cfabd5..306a484 100644
--- a/drivers/staging/Kconfig
+++ b/drivers/staging/Kconfig
@@ -56,6 +56,8 @@
 
 source "drivers/staging/media/Kconfig"
 
+source "drivers/staging/android/Kconfig"
+
 source "drivers/staging/board/Kconfig"
 
 source "drivers/staging/gdm724x/Kconfig"
diff --git a/drivers/staging/Makefile b/drivers/staging/Makefile
index f8c3aa9c..a375649 100644
--- a/drivers/staging/Makefile
+++ b/drivers/staging/Makefile
@@ -18,6 +18,7 @@
 obj-$(CONFIG_FB_SM750)		+= sm750fb/
 obj-$(CONFIG_USB_EMXX)		+= emxx_udc/
 obj-$(CONFIG_MFD_NVEC)		+= nvec/
+obj-$(CONFIG_ASHMEM)		+= android/
 obj-$(CONFIG_STAGING_BOARD)	+= board/
 obj-$(CONFIG_LTE_GDM724X)	+= gdm724x/
 obj-$(CONFIG_FB_TFT)		+= fbtft/
diff --git a/drivers/staging/android/Kconfig b/drivers/staging/android/Kconfig
new file mode 100644
index 0000000..36f4413
--- /dev/null
+++ b/drivers/staging/android/Kconfig
@@ -0,0 +1,15 @@
+# SPDX-License-Identifier: GPL-2.0
+menu "Android"
+
+config ASHMEM
+	bool "Enable the Anonymous Shared Memory Subsystem"
+	depends on SHMEM
+	help
+	  The ashmem subsystem is a new shared memory allocator, similar to
+	  POSIX SHM but with different behavior and sporting a simpler
+	  file-based API.
+
+	  It is, in theory, a good memory allocator for low-memory devices,
+	  because it can discard shared memory units when under memory pressure.
+
+endmenu
diff --git a/drivers/staging/android/Makefile b/drivers/staging/android/Makefile
new file mode 100644
index 0000000..e9a55a5
--- /dev/null
+++ b/drivers/staging/android/Makefile
@@ -0,0 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
+ccflags-y += -I$(src)			# needed for trace events
+
+obj-$(CONFIG_ASHMEM)			+= ashmem.o
diff --git a/drivers/staging/android/TODO b/drivers/staging/android/TODO
new file mode 100644
index 0000000..f74eb44
--- /dev/null
+++ b/drivers/staging/android/TODO
@@ -0,0 +1,8 @@
+TODO:
+	- sparse fixes
+	- rename files to be not so "generic"
+	- add proper arch dependencies as needed
+	- audit userspace interfaces to make sure they are sane
+
+Please send patches to Greg Kroah-Hartman <greg@kroah.com> and Cc:
+Arve Hjønnevåg <arve@android.com> and Riley Andrews <riandrews@android.com>
diff --git a/drivers/staging/android/ashmem.c b/drivers/staging/android/ashmem.c
new file mode 100644
index 0000000..8e56627
--- /dev/null
+++ b/drivers/staging/android/ashmem.c
@@ -0,0 +1,1000 @@
+// SPDX-License-Identifier: GPL-2.0
+/* mm/ashmem.c
+ *
+ * Anonymous Shared Memory Subsystem, ashmem
+ *
+ * Copyright (C) 2008 Google, Inc.
+ *
+ * Robert Love <rlove@google.com>
+ */
+
+#define pr_fmt(fmt) "ashmem: " fmt
+
+#include <linux/init.h>
+#include <linux/export.h>
+#include <linux/file.h>
+#include <linux/fs.h>
+#include <linux/falloc.h>
+#include <linux/miscdevice.h>
+#include <linux/security.h>
+#include <linux/mm.h>
+#include <linux/mman.h>
+#include <linux/uaccess.h>
+#include <linux/personality.h>
+#include <linux/bitops.h>
+#include <linux/mutex.h>
+#include <linux/shmem_fs.h>
+#include "ashmem.h"
+
+#define ASHMEM_NAME_PREFIX "dev/ashmem/"
+#define ASHMEM_NAME_PREFIX_LEN (sizeof(ASHMEM_NAME_PREFIX) - 1)
+#define ASHMEM_FULL_NAME_LEN (ASHMEM_NAME_LEN + ASHMEM_NAME_PREFIX_LEN)
+
+/**
+ * struct ashmem_area - The anonymous shared memory area
+ * @name:		The optional name in /proc/pid/maps
+ * @unpinned_list:	The list of all ashmem areas
+ * @file:		The shmem-based backing file
+ * @size:		The size of the mapping, in bytes
+ * @prot_mask:		The allowed protection bits, as vm_flags
+ *
+ * The lifecycle of this structure is from our parent file's open() until
+ * its release(). It is also protected by 'ashmem_mutex'
+ *
+ * Warning: Mappings do NOT pin this structure; It dies on close()
+ */
+struct ashmem_area {
+	char name[ASHMEM_FULL_NAME_LEN];
+	struct list_head unpinned_list;
+	struct file *file;
+	size_t size;
+	unsigned long prot_mask;
+};
+
+/**
+ * struct ashmem_range - A range of unpinned/evictable pages
+ * @lru:	         The entry in the LRU list
+ * @unpinned:	         The entry in its area's unpinned list
+ * @asma:	         The associated anonymous shared memory area.
+ * @pgstart:	         The starting page (inclusive)
+ * @pgend:	         The ending page (inclusive)
+ * @purged:	         The purge status (ASHMEM_NOT or ASHMEM_WAS_PURGED)
+ *
+ * The lifecycle of this structure is from unpin to pin.
+ * It is protected by 'ashmem_mutex'
+ */
+struct ashmem_range {
+	struct list_head lru;
+	struct list_head unpinned;
+	struct ashmem_area *asma;
+	size_t pgstart;
+	size_t pgend;
+	unsigned int purged;
+};
+
+/* LRU list of unpinned pages, protected by ashmem_mutex */
+static LIST_HEAD(ashmem_lru_list);
+
+static atomic_t ashmem_shrink_inflight = ATOMIC_INIT(0);
+static DECLARE_WAIT_QUEUE_HEAD(ashmem_shrink_wait);
+
+/*
+ * long lru_count - The count of pages on our LRU list.
+ *
+ * This is protected by ashmem_mutex.
+ */
+static unsigned long lru_count;
+
+/*
+ * ashmem_mutex - protects the list of and each individual ashmem_area
+ *
+ * Lock Ordering: ashmex_mutex -> i_mutex -> i_alloc_sem
+ */
+static DEFINE_MUTEX(ashmem_mutex);
+
+static struct kmem_cache *ashmem_area_cachep __read_mostly;
+static struct kmem_cache *ashmem_range_cachep __read_mostly;
+
+/*
+ * A separate lockdep class for the backing shmem inodes to resolve the lockdep
+ * warning about the race between kswapd taking fs_reclaim before inode_lock
+ * and write syscall taking inode_lock and then fs_reclaim.
+ * Note that such race is impossible because ashmem does not support write
+ * syscalls operating on the backing shmem.
+ */
+static struct lock_class_key backing_shmem_inode_class;
+
+static inline unsigned long range_size(struct ashmem_range *range)
+{
+	return range->pgend - range->pgstart + 1;
+}
+
+static inline bool range_on_lru(struct ashmem_range *range)
+{
+	return range->purged == ASHMEM_NOT_PURGED;
+}
+
+static inline bool page_range_subsumes_range(struct ashmem_range *range,
+					     size_t start, size_t end)
+{
+	return (range->pgstart >= start) && (range->pgend <= end);
+}
+
+static inline bool page_range_subsumed_by_range(struct ashmem_range *range,
+						size_t start, size_t end)
+{
+	return (range->pgstart <= start) && (range->pgend >= end);
+}
+
+static inline bool page_in_range(struct ashmem_range *range, size_t page)
+{
+	return (range->pgstart <= page) && (range->pgend >= page);
+}
+
+static inline bool page_range_in_range(struct ashmem_range *range,
+				       size_t start, size_t end)
+{
+	return page_in_range(range, start) || page_in_range(range, end) ||
+		page_range_subsumes_range(range, start, end);
+}
+
+static inline bool range_before_page(struct ashmem_range *range,
+				     size_t page)
+{
+	return range->pgend < page;
+}
+
+#define PROT_MASK		(PROT_EXEC | PROT_READ | PROT_WRITE)
+
+/**
+ * lru_add() - Adds a range of memory to the LRU list
+ * @range:     The memory range being added.
+ *
+ * The range is first added to the end (tail) of the LRU list.
+ * After this, the size of the range is added to @lru_count
+ */
+static inline void lru_add(struct ashmem_range *range)
+{
+	list_add_tail(&range->lru, &ashmem_lru_list);
+	lru_count += range_size(range);
+}
+
+/**
+ * lru_del() - Removes a range of memory from the LRU list
+ * @range:     The memory range being removed
+ *
+ * The range is first deleted from the LRU list.
+ * After this, the size of the range is removed from @lru_count
+ */
+static inline void lru_del(struct ashmem_range *range)
+{
+	list_del(&range->lru);
+	lru_count -= range_size(range);
+}
+
+/**
+ * range_alloc() - Allocates and initializes a new ashmem_range structure
+ * @asma:	   The associated ashmem_area
+ * @prev_range:	   The previous ashmem_range in the sorted asma->unpinned list
+ * @purged:	   Initial purge status (ASMEM_NOT_PURGED or ASHMEM_WAS_PURGED)
+ * @start:	   The starting page (inclusive)
+ * @end:	   The ending page (inclusive)
+ * @new_range:	   The placeholder for the new range
+ *
+ * This function is protected by ashmem_mutex.
+ */
+static void range_alloc(struct ashmem_area *asma,
+			struct ashmem_range *prev_range, unsigned int purged,
+			size_t start, size_t end,
+			struct ashmem_range **new_range)
+{
+	struct ashmem_range *range = *new_range;
+
+	*new_range = NULL;
+	range->asma = asma;
+	range->pgstart = start;
+	range->pgend = end;
+	range->purged = purged;
+
+	list_add_tail(&range->unpinned, &prev_range->unpinned);
+
+	if (range_on_lru(range))
+		lru_add(range);
+}
+
+/**
+ * range_del() - Deletes and deallocates an ashmem_range structure
+ * @range:	 The associated ashmem_range that has previously been allocated
+ */
+static void range_del(struct ashmem_range *range)
+{
+	list_del(&range->unpinned);
+	if (range_on_lru(range))
+		lru_del(range);
+	kmem_cache_free(ashmem_range_cachep, range);
+}
+
+/**
+ * range_shrink() - Shrinks an ashmem_range
+ * @range:	    The associated ashmem_range being shrunk
+ * @start:	    The starting byte of the new range
+ * @end:	    The ending byte of the new range
+ *
+ * This does not modify the data inside the existing range in any way - It
+ * simply shrinks the boundaries of the range.
+ *
+ * Theoretically, with a little tweaking, this could eventually be changed
+ * to range_resize, and expand the lru_count if the new range is larger.
+ */
+static inline void range_shrink(struct ashmem_range *range,
+				size_t start, size_t end)
+{
+	size_t pre = range_size(range);
+
+	range->pgstart = start;
+	range->pgend = end;
+
+	if (range_on_lru(range))
+		lru_count -= pre - range_size(range);
+}
+
+/**
+ * ashmem_open() - Opens an Anonymous Shared Memory structure
+ * @inode:	   The backing file's index node(?)
+ * @file:	   The backing file
+ *
+ * Please note that the ashmem_area is not returned by this function - It is
+ * instead written to "file->private_data".
+ *
+ * Return: 0 if successful, or another code if unsuccessful.
+ */
+static int ashmem_open(struct inode *inode, struct file *file)
+{
+	struct ashmem_area *asma;
+	int ret;
+
+	ret = generic_file_open(inode, file);
+	if (ret)
+		return ret;
+
+	asma = kmem_cache_zalloc(ashmem_area_cachep, GFP_KERNEL);
+	if (!asma)
+		return -ENOMEM;
+
+	INIT_LIST_HEAD(&asma->unpinned_list);
+	memcpy(asma->name, ASHMEM_NAME_PREFIX, ASHMEM_NAME_PREFIX_LEN);
+	asma->prot_mask = PROT_MASK;
+	file->private_data = asma;
+
+	return 0;
+}
+
+/**
+ * ashmem_release() - Releases an Anonymous Shared Memory structure
+ * @ignored:	      The backing file's Index Node(?) - It is ignored here.
+ * @file:	      The backing file
+ *
+ * Return: 0 if successful. If it is anything else, go have a coffee and
+ * try again.
+ */
+static int ashmem_release(struct inode *ignored, struct file *file)
+{
+	struct ashmem_area *asma = file->private_data;
+	struct ashmem_range *range, *next;
+
+	mutex_lock(&ashmem_mutex);
+	list_for_each_entry_safe(range, next, &asma->unpinned_list, unpinned)
+		range_del(range);
+	mutex_unlock(&ashmem_mutex);
+
+	if (asma->file)
+		fput(asma->file);
+	kmem_cache_free(ashmem_area_cachep, asma);
+
+	return 0;
+}
+
+static ssize_t ashmem_read_iter(struct kiocb *iocb, struct iov_iter *iter)
+{
+	struct ashmem_area *asma = iocb->ki_filp->private_data;
+	int ret = 0;
+
+	mutex_lock(&ashmem_mutex);
+
+	/* If size is not set, or set to 0, always return EOF. */
+	if (asma->size == 0)
+		goto out_unlock;
+
+	if (!asma->file) {
+		ret = -EBADF;
+		goto out_unlock;
+	}
+
+	/*
+	 * asma and asma->file are used outside the lock here.  We assume
+	 * once asma->file is set it will never be changed, and will not
+	 * be destroyed until all references to the file are dropped and
+	 * ashmem_release is called.
+	 */
+	mutex_unlock(&ashmem_mutex);
+	ret = vfs_iter_read(asma->file, iter, &iocb->ki_pos, 0);
+	mutex_lock(&ashmem_mutex);
+	if (ret > 0)
+		asma->file->f_pos = iocb->ki_pos;
+out_unlock:
+	mutex_unlock(&ashmem_mutex);
+	return ret;
+}
+
+static loff_t ashmem_llseek(struct file *file, loff_t offset, int origin)
+{
+	struct ashmem_area *asma = file->private_data;
+	loff_t ret;
+
+	mutex_lock(&ashmem_mutex);
+
+	if (asma->size == 0) {
+		mutex_unlock(&ashmem_mutex);
+		return -EINVAL;
+	}
+
+	if (!asma->file) {
+		mutex_unlock(&ashmem_mutex);
+		return -EBADF;
+	}
+
+	mutex_unlock(&ashmem_mutex);
+
+	ret = vfs_llseek(asma->file, offset, origin);
+	if (ret < 0)
+		return ret;
+
+	/** Copy f_pos from backing file, since f_ops->llseek() sets it */
+	file->f_pos = asma->file->f_pos;
+	return ret;
+}
+
+static inline vm_flags_t calc_vm_may_flags(unsigned long prot)
+{
+	return _calc_vm_trans(prot, PROT_READ,  VM_MAYREAD) |
+	       _calc_vm_trans(prot, PROT_WRITE, VM_MAYWRITE) |
+	       _calc_vm_trans(prot, PROT_EXEC,  VM_MAYEXEC);
+}
+
+static int ashmem_vmfile_mmap(struct file *file, struct vm_area_struct *vma)
+{
+	/* do not allow to mmap ashmem backing shmem file directly */
+	return -EPERM;
+}
+
+static unsigned long
+ashmem_vmfile_get_unmapped_area(struct file *file, unsigned long addr,
+				unsigned long len, unsigned long pgoff,
+				unsigned long flags)
+{
+	return current->mm->get_unmapped_area(file, addr, len, pgoff, flags);
+}
+
+static int ashmem_mmap(struct file *file, struct vm_area_struct *vma)
+{
+	static struct file_operations vmfile_fops;
+	struct ashmem_area *asma = file->private_data;
+	int ret = 0;
+
+	mutex_lock(&ashmem_mutex);
+
+	/* user needs to SET_SIZE before mapping */
+	if (!asma->size) {
+		ret = -EINVAL;
+		goto out;
+	}
+
+	/* requested mapping size larger than object size */
+	if (vma->vm_end - vma->vm_start > PAGE_ALIGN(asma->size)) {
+		ret = -EINVAL;
+		goto out;
+	}
+
+	/* requested protection bits must match our allowed protection mask */
+	if ((vma->vm_flags & ~calc_vm_prot_bits(asma->prot_mask, 0)) &
+	    calc_vm_prot_bits(PROT_MASK, 0)) {
+		ret = -EPERM;
+		goto out;
+	}
+	vm_flags_clear(vma, calc_vm_may_flags(~asma->prot_mask));
+
+	if (!asma->file) {
+		char *name = ASHMEM_NAME_DEF;
+		struct file *vmfile;
+		struct inode *inode;
+
+		if (asma->name[ASHMEM_NAME_PREFIX_LEN] != '\0')
+			name = asma->name;
+
+		/* ... and allocate the backing shmem file */
+		vmfile = shmem_file_setup(name, asma->size, vma->vm_flags);
+		if (IS_ERR(vmfile)) {
+			ret = PTR_ERR(vmfile);
+			goto out;
+		}
+		vmfile->f_mode |= FMODE_LSEEK;
+		inode = file_inode(vmfile);
+		lockdep_set_class(&inode->i_rwsem, &backing_shmem_inode_class);
+		asma->file = vmfile;
+		/*
+		 * override mmap operation of the vmfile so that it can't be
+		 * remapped which would lead to creation of a new vma with no
+		 * asma permission checks. Have to override get_unmapped_area
+		 * as well to prevent VM_BUG_ON check for f_ops modification.
+		 */
+		if (!vmfile_fops.mmap) {
+			vmfile_fops = *vmfile->f_op;
+			vmfile_fops.mmap = ashmem_vmfile_mmap;
+			vmfile_fops.get_unmapped_area =
+					ashmem_vmfile_get_unmapped_area;
+		}
+		vmfile->f_op = &vmfile_fops;
+	}
+	get_file(asma->file);
+
+	/*
+	 * XXX - Reworked to use shmem_zero_setup() instead of
+	 * shmem_set_file while we're in staging. -jstultz
+	 */
+	if (vma->vm_flags & VM_SHARED) {
+		ret = shmem_zero_setup(vma);
+		if (ret) {
+			fput(asma->file);
+			goto out;
+		}
+	} else {
+		vma_set_anonymous(vma);
+	}
+
+	vma_set_file(vma, asma->file);
+	/* XXX: merge this with the get_file() above if possible */
+	fput(asma->file);
+
+out:
+	mutex_unlock(&ashmem_mutex);
+	return ret;
+}
+
+/*
+ * ashmem_shrink - our cache shrinker, called from mm/vmscan.c
+ *
+ * 'nr_to_scan' is the number of objects to scan for freeing.
+ *
+ * 'gfp_mask' is the mask of the allocation that got us into this mess.
+ *
+ * Return value is the number of objects freed or -1 if we cannot
+ * proceed without risk of deadlock (due to gfp_mask).
+ *
+ * We approximate LRU via least-recently-unpinned, jettisoning unpinned partial
+ * chunks of ashmem regions LRU-wise one-at-a-time until we hit 'nr_to_scan'
+ * pages freed.
+ */
+static unsigned long
+ashmem_shrink_scan(struct shrinker *shrink, struct shrink_control *sc)
+{
+	unsigned long freed = 0;
+
+	/* We might recurse into filesystem code, so bail out if necessary */
+	if (!(sc->gfp_mask & __GFP_FS))
+		return SHRINK_STOP;
+
+	if (!mutex_trylock(&ashmem_mutex))
+		return -1;
+
+	while (!list_empty(&ashmem_lru_list)) {
+		struct ashmem_range *range =
+			list_first_entry(&ashmem_lru_list, typeof(*range), lru);
+		loff_t start = range->pgstart * PAGE_SIZE;
+		loff_t end = (range->pgend + 1) * PAGE_SIZE;
+		struct file *f = range->asma->file;
+
+		get_file(f);
+		atomic_inc(&ashmem_shrink_inflight);
+		range->purged = ASHMEM_WAS_PURGED;
+		lru_del(range);
+
+		freed += range_size(range);
+		mutex_unlock(&ashmem_mutex);
+		f->f_op->fallocate(f,
+				   FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE,
+				   start, end - start);
+		fput(f);
+		if (atomic_dec_and_test(&ashmem_shrink_inflight))
+			wake_up_all(&ashmem_shrink_wait);
+		if (!mutex_trylock(&ashmem_mutex))
+			goto out;
+		if (--sc->nr_to_scan <= 0)
+			break;
+	}
+	mutex_unlock(&ashmem_mutex);
+out:
+	return freed;
+}
+
+static unsigned long
+ashmem_shrink_count(struct shrinker *shrink, struct shrink_control *sc)
+{
+	/*
+	 * note that lru_count is count of pages on the lru, not a count of
+	 * objects on the list. This means the scan function needs to return the
+	 * number of pages freed, not the number of objects scanned.
+	 */
+	return lru_count;
+}
+
+static struct shrinker ashmem_shrinker = {
+	.count_objects = ashmem_shrink_count,
+	.scan_objects = ashmem_shrink_scan,
+	/*
+	 * XXX (dchinner): I wish people would comment on why they need on
+	 * significant changes to the default value here
+	 */
+	.seeks = DEFAULT_SEEKS * 4,
+};
+
+static int set_prot_mask(struct ashmem_area *asma, unsigned long prot)
+{
+	int ret = 0;
+
+	mutex_lock(&ashmem_mutex);
+
+	/* the user can only remove, not add, protection bits */
+	if ((asma->prot_mask & prot) != prot) {
+		ret = -EINVAL;
+		goto out;
+	}
+
+	/* does the application expect PROT_READ to imply PROT_EXEC? */
+	if ((prot & PROT_READ) && (current->personality & READ_IMPLIES_EXEC))
+		prot |= PROT_EXEC;
+
+	asma->prot_mask = prot;
+
+out:
+	mutex_unlock(&ashmem_mutex);
+	return ret;
+}
+
+static int set_name(struct ashmem_area *asma, void __user *name)
+{
+	int len;
+	int ret = 0;
+	char local_name[ASHMEM_NAME_LEN];
+
+	/*
+	 * Holding the ashmem_mutex while doing a copy_from_user might cause
+	 * an data abort which would try to access mmap_lock. If another
+	 * thread has invoked ashmem_mmap then it will be holding the
+	 * semaphore and will be waiting for ashmem_mutex, there by leading to
+	 * deadlock. We'll release the mutex and take the name to a local
+	 * variable that does not need protection and later copy the local
+	 * variable to the structure member with lock held.
+	 */
+	len = strncpy_from_user(local_name, name, ASHMEM_NAME_LEN);
+	if (len < 0)
+		return len;
+
+	mutex_lock(&ashmem_mutex);
+	/* cannot change an existing mapping's name */
+	if (asma->file)
+		ret = -EINVAL;
+	else
+		strscpy(asma->name + ASHMEM_NAME_PREFIX_LEN, local_name,
+			ASHMEM_NAME_LEN);
+
+	mutex_unlock(&ashmem_mutex);
+	return ret;
+}
+
+static int get_name(struct ashmem_area *asma, void __user *name)
+{
+	int ret = 0;
+	size_t len;
+	/*
+	 * Have a local variable to which we'll copy the content
+	 * from asma with the lock held. Later we can copy this to the user
+	 * space safely without holding any locks. So even if we proceed to
+	 * wait for mmap_lock, it won't lead to deadlock.
+	 */
+	char local_name[ASHMEM_NAME_LEN];
+
+	mutex_lock(&ashmem_mutex);
+	if (asma->name[ASHMEM_NAME_PREFIX_LEN] != '\0') {
+		/*
+		 * Copying only `len', instead of ASHMEM_NAME_LEN, bytes
+		 * prevents us from revealing one user's stack to another.
+		 */
+		len = strlen(asma->name + ASHMEM_NAME_PREFIX_LEN) + 1;
+		memcpy(local_name, asma->name + ASHMEM_NAME_PREFIX_LEN, len);
+	} else {
+		len = sizeof(ASHMEM_NAME_DEF);
+		memcpy(local_name, ASHMEM_NAME_DEF, len);
+	}
+	mutex_unlock(&ashmem_mutex);
+
+	/*
+	 * Now we are just copying from the stack variable to userland
+	 * No lock held
+	 */
+	if (copy_to_user(name, local_name, len))
+		ret = -EFAULT;
+	return ret;
+}
+
+/*
+ * ashmem_pin - pin the given ashmem region, returning whether it was
+ * previously purged (ASHMEM_WAS_PURGED) or not (ASHMEM_NOT_PURGED).
+ *
+ * Caller must hold ashmem_mutex.
+ */
+static int ashmem_pin(struct ashmem_area *asma, size_t pgstart, size_t pgend,
+		      struct ashmem_range **new_range)
+{
+	struct ashmem_range *range, *next;
+	int ret = ASHMEM_NOT_PURGED;
+
+	list_for_each_entry_safe(range, next, &asma->unpinned_list, unpinned) {
+		/* moved past last applicable page; we can short circuit */
+		if (range_before_page(range, pgstart))
+			break;
+
+		/*
+		 * The user can ask us to pin pages that span multiple ranges,
+		 * or to pin pages that aren't even unpinned, so this is messy.
+		 *
+		 * Four cases:
+		 * 1. The requested range subsumes an existing range, so we
+		 *    just remove the entire matching range.
+		 * 2. The requested range overlaps the start of an existing
+		 *    range, so we just update that range.
+		 * 3. The requested range overlaps the end of an existing
+		 *    range, so we just update that range.
+		 * 4. The requested range punches a hole in an existing range,
+		 *    so we have to update one side of the range and then
+		 *    create a new range for the other side.
+		 */
+		if (page_range_in_range(range, pgstart, pgend)) {
+			ret |= range->purged;
+
+			/* Case #1: Easy. Just nuke the whole thing. */
+			if (page_range_subsumes_range(range, pgstart, pgend)) {
+				range_del(range);
+				continue;
+			}
+
+			/* Case #2: We overlap from the start, so adjust it */
+			if (range->pgstart >= pgstart) {
+				range_shrink(range, pgend + 1, range->pgend);
+				continue;
+			}
+
+			/* Case #3: We overlap from the rear, so adjust it */
+			if (range->pgend <= pgend) {
+				range_shrink(range, range->pgstart,
+					     pgstart - 1);
+				continue;
+			}
+
+			/*
+			 * Case #4: We eat a chunk out of the middle. A bit
+			 * more complicated, we allocate a new range for the
+			 * second half and adjust the first chunk's endpoint.
+			 */
+			range_alloc(asma, range, range->purged,
+				    pgend + 1, range->pgend, new_range);
+			range_shrink(range, range->pgstart, pgstart - 1);
+			break;
+		}
+	}
+
+	return ret;
+}
+
+/*
+ * ashmem_unpin - unpin the given range of pages. Returns zero on success.
+ *
+ * Caller must hold ashmem_mutex.
+ */
+static int ashmem_unpin(struct ashmem_area *asma, size_t pgstart, size_t pgend,
+			struct ashmem_range **new_range)
+{
+	struct ashmem_range *range = NULL, *iter, *next;
+	unsigned int purged = ASHMEM_NOT_PURGED;
+
+restart:
+	list_for_each_entry_safe(iter, next, &asma->unpinned_list, unpinned) {
+		/* short circuit: this is our insertion point */
+		if (range_before_page(iter, pgstart)) {
+			range = iter;
+			break;
+		}
+
+		/*
+		 * The user can ask us to unpin pages that are already entirely
+		 * or partially pinned. We handle those two cases here.
+		 */
+		if (page_range_subsumed_by_range(iter, pgstart, pgend))
+			return 0;
+		if (page_range_in_range(iter, pgstart, pgend)) {
+			pgstart = min(iter->pgstart, pgstart);
+			pgend = max(iter->pgend, pgend);
+			purged |= iter->purged;
+			range_del(iter);
+			goto restart;
+		}
+	}
+
+	range = list_prepare_entry(range, &asma->unpinned_list, unpinned);
+	range_alloc(asma, range, purged, pgstart, pgend, new_range);
+	return 0;
+}
+
+/*
+ * ashmem_get_pin_status - Returns ASHMEM_IS_UNPINNED if _any_ pages in the
+ * given interval are unpinned and ASHMEM_IS_PINNED otherwise.
+ *
+ * Caller must hold ashmem_mutex.
+ */
+static int ashmem_get_pin_status(struct ashmem_area *asma, size_t pgstart,
+				 size_t pgend)
+{
+	struct ashmem_range *range;
+	int ret = ASHMEM_IS_PINNED;
+
+	list_for_each_entry(range, &asma->unpinned_list, unpinned) {
+		if (range_before_page(range, pgstart))
+			break;
+		if (page_range_in_range(range, pgstart, pgend)) {
+			ret = ASHMEM_IS_UNPINNED;
+			break;
+		}
+	}
+
+	return ret;
+}
+
+static int ashmem_pin_unpin(struct ashmem_area *asma, unsigned long cmd,
+			    void __user *p)
+{
+	struct ashmem_pin pin;
+	size_t pgstart, pgend;
+	int ret = -EINVAL;
+	struct ashmem_range *range = NULL;
+
+	if (copy_from_user(&pin, p, sizeof(pin)))
+		return -EFAULT;
+
+	if (cmd == ASHMEM_PIN || cmd == ASHMEM_UNPIN) {
+		range = kmem_cache_zalloc(ashmem_range_cachep, GFP_KERNEL);
+		if (!range)
+			return -ENOMEM;
+	}
+
+	mutex_lock(&ashmem_mutex);
+	wait_event(ashmem_shrink_wait, !atomic_read(&ashmem_shrink_inflight));
+
+	if (!asma->file)
+		goto out_unlock;
+
+	/* per custom, you can pass zero for len to mean "everything onward" */
+	if (!pin.len)
+		pin.len = PAGE_ALIGN(asma->size) - pin.offset;
+
+	if ((pin.offset | pin.len) & ~PAGE_MASK)
+		goto out_unlock;
+
+	if (((__u32)-1) - pin.offset < pin.len)
+		goto out_unlock;
+
+	if (PAGE_ALIGN(asma->size) < pin.offset + pin.len)
+		goto out_unlock;
+
+	pgstart = pin.offset / PAGE_SIZE;
+	pgend = pgstart + (pin.len / PAGE_SIZE) - 1;
+
+	switch (cmd) {
+	case ASHMEM_PIN:
+		ret = ashmem_pin(asma, pgstart, pgend, &range);
+		break;
+	case ASHMEM_UNPIN:
+		ret = ashmem_unpin(asma, pgstart, pgend, &range);
+		break;
+	case ASHMEM_GET_PIN_STATUS:
+		ret = ashmem_get_pin_status(asma, pgstart, pgend);
+		break;
+	}
+
+out_unlock:
+	mutex_unlock(&ashmem_mutex);
+	if (range)
+		kmem_cache_free(ashmem_range_cachep, range);
+
+	return ret;
+}
+
+static long ashmem_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
+{
+	struct ashmem_area *asma = file->private_data;
+	unsigned long ino;
+	long ret = -ENOTTY;
+
+	switch (cmd) {
+	case ASHMEM_SET_NAME:
+		ret = set_name(asma, (void __user *)arg);
+		break;
+	case ASHMEM_GET_NAME:
+		ret = get_name(asma, (void __user *)arg);
+		break;
+	case ASHMEM_SET_SIZE:
+		ret = -EINVAL;
+		mutex_lock(&ashmem_mutex);
+		if (!asma->file) {
+			ret = 0;
+			asma->size = (size_t)arg;
+		}
+		mutex_unlock(&ashmem_mutex);
+		break;
+	case ASHMEM_GET_SIZE:
+		ret = asma->size;
+		break;
+	case ASHMEM_SET_PROT_MASK:
+		ret = set_prot_mask(asma, arg);
+		break;
+	case ASHMEM_GET_PROT_MASK:
+		ret = asma->prot_mask;
+		break;
+	case ASHMEM_PIN:
+	case ASHMEM_UNPIN:
+	case ASHMEM_GET_PIN_STATUS:
+		ret = ashmem_pin_unpin(asma, cmd, (void __user *)arg);
+		break;
+	case ASHMEM_PURGE_ALL_CACHES:
+		ret = -EPERM;
+		if (capable(CAP_SYS_ADMIN)) {
+			struct shrink_control sc = {
+				.gfp_mask = GFP_KERNEL,
+				.nr_to_scan = LONG_MAX,
+			};
+			ret = ashmem_shrink_count(&ashmem_shrinker, &sc);
+			ashmem_shrink_scan(&ashmem_shrinker, &sc);
+		}
+		break;
+	case ASHMEM_GET_FILE_ID:
+		/* Lock around our check to avoid racing with ashmem_mmap(). */
+		mutex_lock(&ashmem_mutex);
+		if (!asma || !asma->file) {
+			mutex_unlock(&ashmem_mutex);
+			ret = -EINVAL;
+			break;
+		}
+		ino = file_inode(asma->file)->i_ino;
+		mutex_unlock(&ashmem_mutex);
+
+		if (copy_to_user((void __user *)arg, &ino, sizeof(ino))) {
+			ret = -EFAULT;
+			break;
+		}
+		ret = 0;
+		break;
+	}
+
+	return ret;
+}
+
+/* support of 32bit userspace on 64bit platforms */
+#ifdef CONFIG_COMPAT
+static long compat_ashmem_ioctl(struct file *file, unsigned int cmd,
+				unsigned long arg)
+{
+	switch (cmd) {
+	case COMPAT_ASHMEM_SET_SIZE:
+		cmd = ASHMEM_SET_SIZE;
+		break;
+	case COMPAT_ASHMEM_SET_PROT_MASK:
+		cmd = ASHMEM_SET_PROT_MASK;
+		break;
+	}
+	return ashmem_ioctl(file, cmd, arg);
+}
+#endif
+#ifdef CONFIG_PROC_FS
+static void ashmem_show_fdinfo(struct seq_file *m, struct file *file)
+{
+	struct ashmem_area *asma = file->private_data;
+
+	mutex_lock(&ashmem_mutex);
+
+	if (asma->file)
+		seq_printf(m, "inode:\t%ld\n", file_inode(asma->file)->i_ino);
+
+	if (asma->name[ASHMEM_NAME_PREFIX_LEN] != '\0')
+		seq_printf(m, "name:\t%s\n",
+			   asma->name + ASHMEM_NAME_PREFIX_LEN);
+
+	seq_printf(m, "size:\t%zu\n", asma->size);
+
+	mutex_unlock(&ashmem_mutex);
+}
+#endif
+static const struct file_operations ashmem_fops = {
+	.owner = THIS_MODULE,
+	.open = ashmem_open,
+	.release = ashmem_release,
+	.read_iter = ashmem_read_iter,
+	.llseek = ashmem_llseek,
+	.mmap = ashmem_mmap,
+	.unlocked_ioctl = ashmem_ioctl,
+#ifdef CONFIG_COMPAT
+	.compat_ioctl = compat_ashmem_ioctl,
+#endif
+#ifdef CONFIG_PROC_FS
+	.show_fdinfo = ashmem_show_fdinfo,
+#endif
+};
+
+/*
+ * is_ashmem_file - Check if struct file* is associated with ashmem
+ */
+int is_ashmem_file(struct file *file)
+{
+	return file->f_op == &ashmem_fops;
+}
+EXPORT_SYMBOL_GPL(is_ashmem_file);
+
+static struct miscdevice ashmem_misc = {
+	.minor = MISC_DYNAMIC_MINOR,
+	.name = "ashmem",
+	.fops = &ashmem_fops,
+};
+
+static int __init ashmem_init(void)
+{
+	int ret = -ENOMEM;
+
+	ashmem_area_cachep = kmem_cache_create("ashmem_area_cache",
+					       sizeof(struct ashmem_area),
+					       0, 0, NULL);
+	if (!ashmem_area_cachep) {
+		pr_err("failed to create slab cache\n");
+		goto out;
+	}
+
+	ashmem_range_cachep = kmem_cache_create("ashmem_range_cache",
+						sizeof(struct ashmem_range),
+						0, SLAB_RECLAIM_ACCOUNT, NULL);
+	if (!ashmem_range_cachep) {
+		pr_err("failed to create slab cache\n");
+		goto out_free1;
+	}
+
+	ret = misc_register(&ashmem_misc);
+	if (ret) {
+		pr_err("failed to register misc device!\n");
+		goto out_free2;
+	}
+
+	ret = register_shrinker(&ashmem_shrinker, "android-ashmem");
+	if (ret) {
+		pr_err("failed to register shrinker!\n");
+		goto out_demisc;
+	}
+
+	pr_info("initialized\n");
+
+	return 0;
+
+out_demisc:
+	misc_deregister(&ashmem_misc);
+out_free2:
+	kmem_cache_destroy(ashmem_range_cachep);
+out_free1:
+	kmem_cache_destroy(ashmem_area_cachep);
+out:
+	return ret;
+}
+device_initcall(ashmem_init);
diff --git a/drivers/staging/android/ashmem.h b/drivers/staging/android/ashmem.h
new file mode 100644
index 0000000..9fa72ed
--- /dev/null
+++ b/drivers/staging/android/ashmem.h
@@ -0,0 +1,26 @@
+/* SPDX-License-Identifier: GPL-2.0 OR Apache-2.0 */
+/*
+ * include/linux/ashmem.h
+ *
+ * Copyright 2008 Google Inc.
+ * Author: Robert Love
+ */
+
+#ifndef _LINUX_ASHMEM_H
+#define _LINUX_ASHMEM_H
+
+#include <linux/limits.h>
+#include <linux/ioctl.h>
+#include <linux/compat.h>
+
+#include "uapi/ashmem.h"
+
+/* support of 32bit userspace on 64bit platforms */
+#ifdef CONFIG_COMPAT
+#define COMPAT_ASHMEM_SET_SIZE		_IOW(__ASHMEMIOC, 3, compat_size_t)
+#define COMPAT_ASHMEM_SET_PROT_MASK	_IOW(__ASHMEMIOC, 5, unsigned int)
+#endif
+
+int is_ashmem_file(struct file *file);
+
+#endif	/* _LINUX_ASHMEM_H */
diff --git a/drivers/staging/android/uapi/ashmem.h b/drivers/staging/android/uapi/ashmem.h
new file mode 100644
index 0000000..f962a5f
--- /dev/null
+++ b/drivers/staging/android/uapi/ashmem.h
@@ -0,0 +1,44 @@
+/* SPDX-License-Identifier: GPL-2.0 OR Apache-2.0 */
+/*
+ * Copyright 2008 Google Inc.
+ * Author: Robert Love
+ */
+
+#ifndef _UAPI_LINUX_ASHMEM_H
+#define _UAPI_LINUX_ASHMEM_H
+
+#include <linux/ioctl.h>
+#include <linux/types.h>
+
+#define ASHMEM_NAME_LEN		256
+
+#define ASHMEM_NAME_DEF		"dev/ashmem"
+
+/* Return values from ASHMEM_PIN: Was the mapping purged while unpinned? */
+#define ASHMEM_NOT_PURGED	0
+#define ASHMEM_WAS_PURGED	1
+
+/* Return values from ASHMEM_GET_PIN_STATUS: Is the mapping pinned? */
+#define ASHMEM_IS_UNPINNED	0
+#define ASHMEM_IS_PINNED	1
+
+struct ashmem_pin {
+	__u32 offset;	/* offset into region, in bytes, page-aligned */
+	__u32 len;	/* length forward from offset, in bytes, page-aligned */
+};
+
+#define __ASHMEMIOC		0x77
+
+#define ASHMEM_SET_NAME		_IOW(__ASHMEMIOC, 1, char[ASHMEM_NAME_LEN])
+#define ASHMEM_GET_NAME		_IOR(__ASHMEMIOC, 2, char[ASHMEM_NAME_LEN])
+#define ASHMEM_SET_SIZE		_IOW(__ASHMEMIOC, 3, size_t)
+#define ASHMEM_GET_SIZE		_IO(__ASHMEMIOC, 4)
+#define ASHMEM_SET_PROT_MASK	_IOW(__ASHMEMIOC, 5, unsigned long)
+#define ASHMEM_GET_PROT_MASK	_IO(__ASHMEMIOC, 6)
+#define ASHMEM_PIN		_IOW(__ASHMEMIOC, 7, struct ashmem_pin)
+#define ASHMEM_UNPIN		_IOW(__ASHMEMIOC, 8, struct ashmem_pin)
+#define ASHMEM_GET_PIN_STATUS	_IO(__ASHMEMIOC, 9)
+#define ASHMEM_PURGE_ALL_CACHES	_IO(__ASHMEMIOC, 10)
+#define ASHMEM_GET_FILE_ID		_IOR(__ASHMEMIOC, 11, unsigned long)
+
+#endif	/* _UAPI_LINUX_ASHMEM_H */
diff --git a/drivers/staging/greybus/tools/Android.mk b/drivers/staging/greybus/tools/Android.mk
deleted file mode 100644
index fdadbf6..0000000
--- a/drivers/staging/greybus/tools/Android.mk
+++ /dev/null
@@ -1,10 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES:= loopback_test.c
-LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE := gb_loopback_test
-
-include $(BUILD_EXECUTABLE)
-
diff --git a/drivers/staging/greybus/tools/Makefile b/drivers/staging/greybus/tools/Makefile
deleted file mode 100644
index a3bbd73..0000000
--- a/drivers/staging/greybus/tools/Makefile
+++ /dev/null
@@ -1,33 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-ifeq ($(strip $(V)), 1)
-  Q =
-else
-  Q = @
-endif
-
-CFLAGS	+= -std=gnu99 -Wall -Wextra -g \
-	    -D_GNU_SOURCE \
-	    -Wno-unused-parameter \
-	    -Wmaybe-uninitialized \
-	    -Wredundant-decls \
-	    -Wcast-align \
-	    -Wsign-compare \
-	    -Wno-missing-field-initializers \
-	    -Wno-shift-negative-value
-
-CC	:= $(CROSS_COMPILE)gcc
-
-TOOLS = loopback_test
-
-all: $(TOOLS)
-
-%.o: %.c ../greybus_protocols.h
-	@echo '  TARGET_CC $@'
-	$(Q)$(CC) $(CFLAGS) -c $< -o $@
-
-loopback_%: loopback_%.o
-	@echo '  TARGET_LD $@'
-	$(Q)$(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@
-
-clean::
-	rm -f *.o $(TOOLS)
diff --git a/drivers/staging/greybus/tools/README.loopback b/drivers/staging/greybus/tools/README.loopback
deleted file mode 100644
index 070a510..0000000
--- a/drivers/staging/greybus/tools/README.loopback
+++ /dev/null
@@ -1,198 +0,0 @@
-
-
-        1 - LOOPBACK DRIVER
-
-The driver implements the main logic of the loopback test and provides
-sysfs files to configure the test and retrieve the results.
-A user could run a test without the need of the test application given
-that he understands the sysfs interface of the loopback driver.
-
-The loopback kernel driver needs to be loaded and at least one module
-with the loopback feature enabled must be present for the sysfs files to be
-created and for the loopback test application to be able to run.
-
-To load the module:
-# modprobe gb-loopback
-
-
-When the module is probed,  New files are available on the sysfs
-directory of the detected loopback device.
-(typically under "/sys/bus/graybus/devices").
-
-Here is a short summary of the sysfs interface files that should be visible:
-
-* Loopback Configuration Files:
-    async - Use asynchronous operations.
-    iteration_max - Number of tests iterations to perform.
-    size - payload size of the transfer.
-    timeout - The number of microseconds to give an individual
-              asynchronous request before timing out.
-    us_wait - Time to wait between 2 messages
-    type - By writing the test type to this file, the test starts.
-           Valid tests are:
-             0 stop the test
-             2 - ping
-             3 - transfer
-             4 - sink
-
-* Loopback feedback files:
-    error - number of errors that have occurred.
-    iteration_count - Number of iterations performed.
-    requests_completed - Number of requests successfully completed.
-    requests_timedout - Number of requests that have timed out.
-    timeout_max - Max allowed timeout
-    timeout_min - Min allowed timeout.
-
-* Loopback result files:
-    apbridge_unipro_latency_avg
-    apbridge_unipro_latency_max
-    apbridge_unipro_latency_min
-    gpbridge_firmware_latency_avg
-    gpbridge_firmware_latency_max
-    gpbridge_firmware_latency_min
-    requests_per_second_avg
-    requests_per_second_max
-    requests_per_second_min
-    latency_avg
-    latency_max
-    latency_min
-    throughput_avg
-    throughput_max
-    throughput_min
-
-
-
-            2 - LOOPBACK TEST APPLICATION
-
-The loopback test application manages and formats the results provided by
-the loopback kernel module. The purpose of this application
-is to:
-    - Start and manage multiple loopback device tests concurrently.
-    - Calculate the aggregate results for multiple devices.
-    - Gather and format test results (csv or human readable).
-
-The best way to get up to date usage information for the application is
-usually to pass the "-h" parameter.
-Here is the summary of the available options:
-
- Mandatory arguments
-   -t     must be one of the test names - sink, transfer or ping
-   -i     iteration count - the number of iterations to run the test over
- Optional arguments
-   -S     sysfs location - location for greybus 'endo' entries default /sys/bus/greybus/devices/
-   -D     debugfs location - location for loopback debugfs entries default /sys/kernel/debug/gb_loopback/
-   -s     size of data packet to send during test - defaults to zero
-   -m     mask - a bit mask of connections to include example: -m 8 = 4th connection -m 9 = 1st and 4th connection etc
-                 default is zero which means broadcast to all connections
-   -v     verbose output
-   -d     debug output
-   -r     raw data output - when specified the full list of latency values are included in the output CSV
-   -p     porcelain - when specified printout is in a user-friendly non-CSV format. This option suppresses writing to CSV file
-   -a     aggregate - show aggregation of all enabled devies
-   -l     list found loopback devices and exit.
-   -x     Async - Enable async transfers.
-   -o     Timeout - Timeout in microseconds for async operations.
-
-
-
-             3 - REAL WORLD EXAMPLE USAGES
-
- 3.1 - Using the driver sysfs files to run a test on a single device:
-
-* Run a 1000 transfers of a 100 byte packet. Each transfer is started only
-after the previous one finished successfully:
-    echo 0 > /sys/bus/greybus/devices/1-2.17/type
-    echo 0 > /sys/bus/greybus/devices/1-2.17/async
-    echo 2000 > /sys/bus/greybus/devices/1-2.17/us_wait
-    echo 100 > /sys/bus/greybus/devices/1-2.17/size
-    echo 1000 > /sys/bus/greybus/devices/1-2.17/iteration_max
-    echo 0 > /sys/bus/greybus/devices/1-2.17/mask
-    echo 200000 > /sys/bus/greybus/devices/1-2.17/timeout
-    echo 3 > /sys/bus/greybus/devices/1-2.17/type
-
-* Run a 1000 transfers of a 100 byte packet. Transfers are started without
-waiting for the previous one to finish:
-    echo 0 > /sys/bus/greybus/devices/1-2.17/type
-    echo 3 > /sys/bus/greybus/devices/1-2.17/async
-    echo 0 > /sys/bus/greybus/devices/1-2.17/us_wait
-    echo 100 > /sys/bus/greybus/devices/1-2.17/size
-    echo 1000 > /sys/bus/greybus/devices/1-2.17/iteration_max
-    echo 0 > /sys/bus/greybus/devices/1-2.17/mask
-    echo 200000 > /sys/bus/greybus/devices/1-2.17/timeout
-    echo 3 > /sys/bus/greybus/devices/1-2.17/type
-
-* Read the results from sysfs:
-    cat /sys/bus/greybus/devices/1-2.17/requests_per_second_min
-    cat /sys/bus/greybus/devices/1-2.17/requests_per_second_max
-    cat /sys/bus/greybus/devices/1-2.17/requests_per_second_avg
-
-    cat /sys/bus/greybus/devices/1-2.17/latency_min
-    cat /sys/bus/greybus/devices/1-2.17/latency_max
-    cat /sys/bus/greybus/devices/1-2.17/latency_avg
-
-    cat /sys/bus/greybus/devices/1-2.17/apbridge_unipro_latency_min
-    cat /sys/bus/greybus/devices/1-2.17/apbridge_unipro_latency_max
-    cat /sys/bus/greybus/devices/1-2.17/apbridge_unipro_latency_avg
-
-    cat /sys/bus/greybus/devices/1-2.17/gpbridge_firmware_latency_min
-    cat /sys/bus/greybus/devices/1-2.17/gpbridge_firmware_latency_max
-    cat /sys/bus/greybus/devices/1-2.17/gpbridge_firmware_latency_avg
-
-    cat /sys/bus/greybus/devices/1-2.17/error
-    cat /sys/bus/greybus/devices/1-2.17/requests_completed
-    cat /sys/bus/greybus/devices/1-2.17/requests_timedout
-
-
-3.2 - using the test application:
-
-* Run a transfer test 10 iterations of size 100 bytes on all available devices
-    #/loopback_test -t transfer -i 10 -s 100
-    1970-1-1 0:10:7,transfer,1-4.17,100,10,0,443,509,471.700012,66,1963,2256,2124.600098,293,102776,118088,109318.898438,15312,1620,1998,1894.099976,378,56,57,56.799999,1
-    1970-1-1 0:10:7,transfer,1-5.17,100,10,0,399,542,463.399994,143,1845,2505,2175.800049,660,92568,125744,107393.296875,33176,1469,2305,1806.500000,836,56,57,56.799999,1
-
-
-* Show the aggregate results of both devices. ("-a")
-    #/loopback_test -t transfer -i 10 -s 100  -a
-    1970-1-1 0:10:35,transfer,1-4.17,100,10,0,448,580,494.100006,132,1722,2230,2039.400024,508,103936,134560,114515.703125,30624,1513,1980,1806.900024,467,56,57,57.299999,1
-    1970-1-1 0:10:35,transfer,1-5.17,100,10,0,383,558,478.600006,175,1791,2606,2115.199951,815,88856,129456,110919.703125,40600,1457,2246,1773.599976,789,56,57,57.099998,1
-    1970-1-1 0:10:35,transfer,aggregate,100,10,0,383,580,486.000000,197,1722,2606,2077.000000,884,88856,134560,112717.000000,45704,1457,2246,1789.000000,789,56,57,57.000000,1
-
-* Example usage of the mask option to select which devices will
-  run the test (1st, 2nd, or both devices):
-    # /loopback_test -t transfer -i 10 -s 100 -m 1
-    1970-1-1 0:11:56,transfer,1-4.17,100,10,0,514,558,544.900024,44,1791,1943,1836.599976,152,119248,129456,126301.296875,10208,1600,1001609,101613.601562,1000009,56,57,56.900002,1
-    # /loopback_test -t transfer -i 10 -s 100 -m 2
-    1970-1-1 0:12:0,transfer,1-5.17,100,10,0,468,554,539.000000,86,1804,2134,1859.500000,330,108576,128528,124932.500000,19952,1606,1626,1619.300049,20,56,57,57.400002,1
-    # /loopback_test -t transfer -i 10 -s 100 -m 3
-    1970-1-1 0:12:3,transfer,1-4.17,100,10,0,432,510,469.399994,78,1959,2313,2135.800049,354,100224,118320,108785.296875,18096,1610,2024,1893.500000,414,56,57,57.200001,1
-    1970-1-1 0:12:3,transfer,1-5.17,100,10,0,404,542,468.799988,138,1843,2472,2152.500000,629,93728,125744,108646.101562,32016,1504,2247,1853.099976,743,56,57,57.099998,1
-
-* Show output in human readable format ("-p")
-    # /loopback_test -t transfer -i 10 -s 100 -m 3 -p
-
-    1970-1-1 0:12:37
-    test:                       transfer
-    path:                       1-4.17
-    size:                       100
-    iterations:                 10
-    errors:                     0
-    async:                      Disabled
-    requests per-sec:           min=390, max=547, average=469.299988, jitter=157
-    ap-throughput B/s:          min=90480 max=126904 average=108762.101562 jitter=36424
-    ap-latency usec:            min=1826 max=2560 average=2146.000000 jitter=734
-    apbridge-latency usec:      min=1620 max=1982 average=1882.099976 jitter=362
-    gpbridge-latency usec:      min=56 max=57 average=57.099998 jitter=1
-
-
-    1970-1-1 0:12:37
-    test:                       transfer
-    path:                       1-5.17
-    size:                       100
-    iterations:                 10
-    errors:                     0
-    async:                      Disabled
-    requests per-sec:           min=397, max=538, average=461.700012, jitter=141
-    ap-throughput B/s:          min=92104 max=124816 average=106998.898438 jitter=32712
-    ap-latency usec:            min=1856 max=2514 average=2185.699951 jitter=658
-    apbridge-latency usec:      min=1460 max=2296 average=1828.599976 jitter=836
-    gpbridge-latency usec:      min=56 max=57 average=57.099998 jitter=1
diff --git a/drivers/staging/greybus/tools/lbtest b/drivers/staging/greybus/tools/lbtest
deleted file mode 100755
index 47c4812..0000000
--- a/drivers/staging/greybus/tools/lbtest
+++ /dev/null
@@ -1,169 +0,0 @@
-#!/usr/bin/env python
-# SPDX-License-Identifier: BSD-3-Clause
-
-# Copyright (c) 2015 Google, Inc.
-# Copyright (c) 2015 Linaro, Ltd.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-# 1. Redistributions of source code must retain the above copyright notice,
-# this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright notice,
-# this list of conditions and the following disclaimer in the documentation
-# and/or other materials provided with the distribution.
-# 3. Neither the name of the copyright holder nor the names of its
-# contributors may be used to endorse or promote products derived from this
-# software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
-# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-from __future__ import print_function
-import csv
-import datetime
-import sys
-import time
-
-dict = {'ping': '2', 'transfer': '3', 'sink': '4'}
-verbose = 1
-
-def abort():
-	sys.exit(1)
-
-def usage():
-	print('Usage: looptest TEST SIZE ITERATIONS PATH\n\n'
-	'  Run TEST for a number of ITERATIONS with operation data SIZE bytes\n'
-	'  TEST may be \'ping\' \'transfer\' or \'sink\'\n'
-	'  SIZE indicates the size of transfer <= greybus max payload bytes\n'
-	'  ITERATIONS indicates the number of times to execute TEST at SIZE bytes\n'
-	'             Note if ITERATIONS is set to zero then this utility will\n'
-	'             initiate an infinite (non terminating) test and exit\n'
-	'             without logging any metrics data\n'
-	'  PATH indicates the sysfs path for the loopback greybus entries e.g.\n'
-	'             /sys/bus/greybus/devices/endo0:1:1:1:1/\n'
-	'Examples:\n'
-	'  looptest transfer 128 10000\n'
-	'  looptest ping 0 128\n'
-	'  looptest sink 2030 32768\n'
-	.format(sys.argv[0]), file=sys.stderr)
-
-	abort()
-
-def read_sysfs_int(path):
-	try:
-		f = open(path, "r");
-		val = f.read();
-		f.close()
-		return int(val)
-	except IOError as e:
-		print("I/O error({0}): {1}".format(e.errno, e.strerror))
-		print("Invalid path %s" % path)
-
-def write_sysfs_val(path, val):
-	try:
-		f = open(path, "r+")
-		f.write(val)
-		f.close()
-	except IOError as e:
-		print("I/O error({0}): {1}".format(e.errno, e.strerror))
-		print("Invalid path %s" % path)
-
-def log_csv(test_name, size, iteration_max, sys_pfx):
-	# file name will test_name_size_iteration_max.csv
-	# every time the same test with the same parameters is run we will then
-	# append to the same CSV with datestamp - representing each test dataset
-	fname = test_name + '_' + size + '_' + str(iteration_max) + '.csv'
-
-	try:
-		# gather data set
-		date = str(datetime.datetime.now())
-		error = read_sysfs_int(sys_pfx + 'error')
-		request_min = read_sysfs_int(sys_pfx + 'requests_per_second_min')
-		request_max = read_sysfs_int(sys_pfx + 'requests_per_second_max')
-		request_avg = read_sysfs_int(sys_pfx + 'requests_per_second_avg')
-		latency_min = read_sysfs_int(sys_pfx + 'latency_min')
-		latency_max = read_sysfs_int(sys_pfx + 'latency_max')
-		latency_avg = read_sysfs_int(sys_pfx + 'latency_avg')
-		throughput_min = read_sysfs_int(sys_pfx + 'throughput_min')
-		throughput_max = read_sysfs_int(sys_pfx + 'throughput_max')
-		throughput_avg = read_sysfs_int(sys_pfx + 'throughput_avg')
-
-		# derive jitter
-		request_jitter = request_max - request_min
-		latency_jitter = latency_max - latency_min
-		throughput_jitter = throughput_max - throughput_min
-
-		# append data set to file
-		with open(fname, 'a') as csvf:
-			row = csv.writer(csvf, delimiter=",", quotechar="'",
-					quoting=csv.QUOTE_MINIMAL)
-			row.writerow([date, test_name, size, iteration_max, error,
-					request_min, request_max, request_avg, request_jitter,
-					latency_min, latency_max, latency_avg, latency_jitter,
-					throughput_min, throughput_max, throughput_avg, throughput_jitter])
-	except IOError as e:
-		print("I/O error({0}): {1}".format(e.errno, e.strerror))
-
-def loopback_run(test_name, size, iteration_max, sys_pfx):
-	test_id = dict[test_name]
-	try:
-		# Terminate any currently running test
-		write_sysfs_val(sys_pfx + 'type', '0')
-		# Set parameter for no wait between messages
-		write_sysfs_val(sys_pfx + 'ms_wait', '0')
-		# Set operation size
-		write_sysfs_val(sys_pfx + 'size', size)
-		# Set iterations
-		write_sysfs_val(sys_pfx + 'iteration_max', str(iteration_max))
-		# Initiate by setting loopback operation type
-		write_sysfs_val(sys_pfx + 'type', test_id)
-		time.sleep(1)
-
-		if iteration_max == 0:
-			print ("Infinite test initiated CSV won't be logged\n")
-			return
-
-		previous = 0
-		err = 0
-		while True:
-			# get current count bail out if it hasn't changed
-			iteration_count = read_sysfs_int(sys_pfx + 'iteration_count')
-			if previous == iteration_count:
-				err = 1
-				break
-			elif iteration_count == iteration_max:
-				break
-			previous = iteration_count
-			if verbose:
-				print('%02d%% complete %d of %d ' %
-					(100 * iteration_count / iteration_max,
-					iteration_count, iteration_max))
-			time.sleep(1)
-		if err:
-			print ('\nError executing test\n')
-		else:
-			log_csv(test_name, size, iteration_max, sys_pfx)
-	except ValueError as ve:
-		print("Error: %s " % format(e.strerror), file=sys.stderr)
-		abort()
-
-def main():
-	if len(sys.argv) < 5:
-		usage()
-
-	if sys.argv[1] in dict.keys():
-		loopback_run(sys.argv[1], sys.argv[2], int(sys.argv[3]), sys.argv[4])
-	else:
-		usage()
-if __name__ == '__main__':
-	main()
diff --git a/drivers/staging/greybus/tools/loopback_test.c b/drivers/staging/greybus/tools/loopback_test.c
deleted file mode 100644
index 4c42e39..0000000
--- a/drivers/staging/greybus/tools/loopback_test.c
+++ /dev/null
@@ -1,992 +0,0 @@
-// SPDX-License-Identifier: BSD-3-Clause
-/*
- * Loopback test application
- *
- * Copyright 2015 Google Inc.
- * Copyright 2015 Linaro Ltd.
- */
-#include <errno.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <stdint.h>
-#include <poll.h>
-#include <sys/types.h>
-#include <time.h>
-#include <unistd.h>
-#include <dirent.h>
-#include <signal.h>
-
-#define MAX_NUM_DEVICES 10
-#define MAX_SYSFS_PREFIX 0x80
-#define MAX_SYSFS_PATH	0x200
-#define CSV_MAX_LINE	0x1000
-#define SYSFS_MAX_INT	0x20
-#define MAX_STR_LEN	255
-#define DEFAULT_ASYNC_TIMEOUT 200000
-
-struct dict {
-	char *name;
-	int type;
-};
-
-static struct dict dict[] = {
-	{"ping", 2},
-	{"transfer", 3},
-	{"sink", 4},
-	{NULL,}		/* list termination */
-};
-
-struct loopback_results {
-	float latency_avg;
-	uint32_t latency_max;
-	uint32_t latency_min;
-	uint32_t latency_jitter;
-
-	float request_avg;
-	uint32_t request_max;
-	uint32_t request_min;
-	uint32_t request_jitter;
-
-	float throughput_avg;
-	uint32_t throughput_max;
-	uint32_t throughput_min;
-	uint32_t throughput_jitter;
-
-	float apbridge_unipro_latency_avg;
-	uint32_t apbridge_unipro_latency_max;
-	uint32_t apbridge_unipro_latency_min;
-	uint32_t apbridge_unipro_latency_jitter;
-
-	float gbphy_firmware_latency_avg;
-	uint32_t gbphy_firmware_latency_max;
-	uint32_t gbphy_firmware_latency_min;
-	uint32_t gbphy_firmware_latency_jitter;
-
-	uint32_t error;
-};
-
-struct loopback_device {
-	char name[MAX_STR_LEN];
-	char sysfs_entry[MAX_SYSFS_PATH];
-	char debugfs_entry[MAX_SYSFS_PATH];
-	struct loopback_results results;
-};
-
-struct loopback_test {
-	int verbose;
-	int debug;
-	int raw_data_dump;
-	int porcelain;
-	int mask;
-	int size;
-	int iteration_max;
-	int aggregate_output;
-	int test_id;
-	int device_count;
-	int list_devices;
-	int use_async;
-	int async_timeout;
-	int async_outstanding_operations;
-	int us_wait;
-	int file_output;
-	int stop_all;
-	int poll_count;
-	char test_name[MAX_STR_LEN];
-	char sysfs_prefix[MAX_SYSFS_PREFIX];
-	char debugfs_prefix[MAX_SYSFS_PREFIX];
-	struct timespec poll_timeout;
-	struct loopback_device devices[MAX_NUM_DEVICES];
-	struct loopback_results aggregate_results;
-	struct pollfd fds[MAX_NUM_DEVICES];
-};
-
-struct loopback_test t;
-
-/* Helper macros to calculate the aggregate results for all devices */
-static inline int device_enabled(struct loopback_test *t, int dev_idx);
-
-#define GET_MAX(field)							\
-static int get_##field##_aggregate(struct loopback_test *t)		\
-{									\
-	uint32_t max = 0;						\
-	int i;								\
-	for (i = 0; i < t->device_count; i++) {				\
-		if (!device_enabled(t, i))				\
-			continue;					\
-		if (t->devices[i].results.field > max)			\
-			max = t->devices[i].results.field;		\
-	}								\
-	return max;							\
-}									\
-
-#define GET_MIN(field)							\
-static int get_##field##_aggregate(struct loopback_test *t)		\
-{									\
-	uint32_t min = ~0;						\
-	int i;								\
-	for (i = 0; i < t->device_count; i++) {				\
-		if (!device_enabled(t, i))				\
-			continue;					\
-		if (t->devices[i].results.field < min)			\
-			min = t->devices[i].results.field;		\
-	}								\
-	return min;							\
-}									\
-
-#define GET_AVG(field)							\
-static int get_##field##_aggregate(struct loopback_test *t)		\
-{									\
-	uint32_t val = 0;						\
-	uint32_t count = 0;						\
-	int i;								\
-	for (i = 0; i < t->device_count; i++) {				\
-		if (!device_enabled(t, i))				\
-			continue;					\
-		count++;						\
-		val += t->devices[i].results.field;			\
-	}								\
-	if (count)							\
-		val /= count;						\
-	return val;							\
-}									\
-
-GET_MAX(throughput_max);
-GET_MAX(request_max);
-GET_MAX(latency_max);
-GET_MAX(apbridge_unipro_latency_max);
-GET_MAX(gbphy_firmware_latency_max);
-GET_MIN(throughput_min);
-GET_MIN(request_min);
-GET_MIN(latency_min);
-GET_MIN(apbridge_unipro_latency_min);
-GET_MIN(gbphy_firmware_latency_min);
-GET_AVG(throughput_avg);
-GET_AVG(request_avg);
-GET_AVG(latency_avg);
-GET_AVG(apbridge_unipro_latency_avg);
-GET_AVG(gbphy_firmware_latency_avg);
-
-void abort(void)
-{
-	_exit(1);
-}
-
-void usage(void)
-{
-	fprintf(stderr, "Usage: loopback_test TEST [SIZE] ITERATIONS [SYSPATH] [DBGPATH]\n\n"
-	"  Run TEST for a number of ITERATIONS with operation data SIZE bytes\n"
-	"  TEST may be \'ping\' \'transfer\' or \'sink\'\n"
-	"  SIZE indicates the size of transfer <= greybus max payload bytes\n"
-	"  ITERATIONS indicates the number of times to execute TEST at SIZE bytes\n"
-	"             Note if ITERATIONS is set to zero then this utility will\n"
-	"             initiate an infinite (non terminating) test and exit\n"
-	"             without logging any metrics data\n"
-	"  SYSPATH indicates the sysfs path for the loopback greybus entries e.g.\n"
-	"          /sys/bus/greybus/devices\n"
-	"  DBGPATH indicates the debugfs path for the loopback greybus entries e.g.\n"
-	"          /sys/kernel/debug/gb_loopback/\n"
-	" Mandatory arguments\n"
-	"   -t     must be one of the test names - sink, transfer or ping\n"
-	"   -i     iteration count - the number of iterations to run the test over\n"
-	" Optional arguments\n"
-	"   -S     sysfs location - location for greybus 'endo' entries default /sys/bus/greybus/devices/\n"
-	"   -D     debugfs location - location for loopback debugfs entries default /sys/kernel/debug/gb_loopback/\n"
-	"   -s     size of data packet to send during test - defaults to zero\n"
-	"   -m     mask - a bit mask of connections to include example: -m 8 = 4th connection -m 9 = 1st and 4th connection etc\n"
-	"                 default is zero which means broadcast to all connections\n"
-	"   -v     verbose output\n"
-	"   -d     debug output\n"
-	"   -r     raw data output - when specified the full list of latency values are included in the output CSV\n"
-	"   -p     porcelain - when specified printout is in a user-friendly non-CSV format. This option suppresses writing to CSV file\n"
-	"   -a     aggregate - show aggregation of all enabled devices\n"
-	"   -l     list found loopback devices and exit\n"
-	"   -x     Async - Enable async transfers\n"
-	"   -o     Async Timeout - Timeout in uSec for async operations\n"
-	"   -O     Poll loop time out in seconds(max time a test is expected to last, default: 30sec)\n"
-	"   -c     Max number of outstanding operations for async operations\n"
-	"   -w     Wait in uSec between operations\n"
-	"   -z     Enable output to a CSV file (incompatible with -p)\n"
-	"   -f     When starting new loopback test, stop currently running tests on all devices\n"
-	"Examples:\n"
-	"  Send 10000 transfers with a packet size of 128 bytes to all active connections\n"
-	"  loopback_test -t transfer -s 128 -i 10000 -S /sys/bus/greybus/devices/ -D /sys/kernel/debug/gb_loopback/\n"
-	"  loopback_test -t transfer -s 128 -i 10000 -m 0\n"
-	"  Send 10000 transfers with a packet size of 128 bytes to connection 1 and 4\n"
-	"  loopback_test -t transfer -s 128 -i 10000 -m 9\n"
-	"  loopback_test -t ping -s 0 128 -i -S /sys/bus/greybus/devices/ -D /sys/kernel/debug/gb_loopback/\n"
-	"  loopback_test -t sink -s 2030 -i 32768 -S /sys/bus/greybus/devices/ -D /sys/kernel/debug/gb_loopback/\n");
-	abort();
-}
-
-static inline int device_enabled(struct loopback_test *t, int dev_idx)
-{
-	if (!t->mask || (t->mask & (1 << dev_idx)))
-		return 1;
-
-	return 0;
-}
-
-static void show_loopback_devices(struct loopback_test *t)
-{
-	int i;
-
-	if (t->device_count == 0) {
-		printf("No loopback devices.\n");
-		return;
-	}
-
-	for (i = 0; i < t->device_count; i++)
-		printf("device[%d] = %s\n", i, t->devices[i].name);
-
-}
-
-int open_sysfs(const char *sys_pfx, const char *node, int flags)
-{
-	int fd;
-	char path[MAX_SYSFS_PATH];
-
-	snprintf(path, sizeof(path), "%s%s", sys_pfx, node);
-	fd = open(path, flags);
-	if (fd < 0) {
-		fprintf(stderr, "unable to open %s\n", path);
-		abort();
-	}
-	return fd;
-}
-
-int read_sysfs_int_fd(int fd, const char *sys_pfx, const char *node)
-{
-	char buf[SYSFS_MAX_INT];
-
-	if (read(fd, buf, sizeof(buf)) < 0) {
-		fprintf(stderr, "unable to read from %s%s %s\n", sys_pfx, node,
-			strerror(errno));
-		close(fd);
-		abort();
-	}
-	return atoi(buf);
-}
-
-float read_sysfs_float_fd(int fd, const char *sys_pfx, const char *node)
-{
-	char buf[SYSFS_MAX_INT];
-
-	if (read(fd, buf, sizeof(buf)) < 0) {
-
-		fprintf(stderr, "unable to read from %s%s %s\n", sys_pfx, node,
-			strerror(errno));
-		close(fd);
-		abort();
-	}
-	return atof(buf);
-}
-
-int read_sysfs_int(const char *sys_pfx, const char *node)
-{
-	int fd, val;
-
-	fd = open_sysfs(sys_pfx, node, O_RDONLY);
-	val = read_sysfs_int_fd(fd, sys_pfx, node);
-	close(fd);
-	return val;
-}
-
-float read_sysfs_float(const char *sys_pfx, const char *node)
-{
-	int fd;
-	float val;
-
-	fd = open_sysfs(sys_pfx, node, O_RDONLY);
-	val = read_sysfs_float_fd(fd, sys_pfx, node);
-	close(fd);
-	return val;
-}
-
-void write_sysfs_val(const char *sys_pfx, const char *node, int val)
-{
-	int fd, len;
-	char buf[SYSFS_MAX_INT];
-
-	fd = open_sysfs(sys_pfx, node, O_RDWR);
-	len = snprintf(buf, sizeof(buf), "%d", val);
-	if (write(fd, buf, len) < 0) {
-		fprintf(stderr, "unable to write to %s%s %s\n", sys_pfx, node,
-			strerror(errno));
-		close(fd);
-		abort();
-	}
-	close(fd);
-}
-
-static int get_results(struct loopback_test *t)
-{
-	struct loopback_device *d;
-	struct loopback_results *r;
-	int i;
-
-	for (i = 0; i < t->device_count; i++) {
-		if (!device_enabled(t, i))
-			continue;
-
-		d = &t->devices[i];
-		r = &d->results;
-
-		r->error = read_sysfs_int(d->sysfs_entry, "error");
-		r->request_min = read_sysfs_int(d->sysfs_entry, "requests_per_second_min");
-		r->request_max = read_sysfs_int(d->sysfs_entry, "requests_per_second_max");
-		r->request_avg = read_sysfs_float(d->sysfs_entry, "requests_per_second_avg");
-
-		r->latency_min = read_sysfs_int(d->sysfs_entry, "latency_min");
-		r->latency_max = read_sysfs_int(d->sysfs_entry, "latency_max");
-		r->latency_avg = read_sysfs_float(d->sysfs_entry, "latency_avg");
-
-		r->throughput_min = read_sysfs_int(d->sysfs_entry, "throughput_min");
-		r->throughput_max = read_sysfs_int(d->sysfs_entry, "throughput_max");
-		r->throughput_avg = read_sysfs_float(d->sysfs_entry, "throughput_avg");
-
-		r->apbridge_unipro_latency_min =
-			read_sysfs_int(d->sysfs_entry, "apbridge_unipro_latency_min");
-		r->apbridge_unipro_latency_max =
-			read_sysfs_int(d->sysfs_entry, "apbridge_unipro_latency_max");
-		r->apbridge_unipro_latency_avg =
-			read_sysfs_float(d->sysfs_entry, "apbridge_unipro_latency_avg");
-
-		r->gbphy_firmware_latency_min =
-			read_sysfs_int(d->sysfs_entry, "gbphy_firmware_latency_min");
-		r->gbphy_firmware_latency_max =
-			read_sysfs_int(d->sysfs_entry, "gbphy_firmware_latency_max");
-		r->gbphy_firmware_latency_avg =
-			read_sysfs_float(d->sysfs_entry, "gbphy_firmware_latency_avg");
-
-		r->request_jitter = r->request_max - r->request_min;
-		r->latency_jitter = r->latency_max - r->latency_min;
-		r->throughput_jitter = r->throughput_max - r->throughput_min;
-		r->apbridge_unipro_latency_jitter =
-			r->apbridge_unipro_latency_max - r->apbridge_unipro_latency_min;
-		r->gbphy_firmware_latency_jitter =
-			r->gbphy_firmware_latency_max - r->gbphy_firmware_latency_min;
-
-	}
-
-	/*calculate the aggregate results of all enabled devices */
-	if (t->aggregate_output) {
-		r = &t->aggregate_results;
-
-		r->request_min = get_request_min_aggregate(t);
-		r->request_max = get_request_max_aggregate(t);
-		r->request_avg = get_request_avg_aggregate(t);
-
-		r->latency_min = get_latency_min_aggregate(t);
-		r->latency_max = get_latency_max_aggregate(t);
-		r->latency_avg = get_latency_avg_aggregate(t);
-
-		r->throughput_min = get_throughput_min_aggregate(t);
-		r->throughput_max = get_throughput_max_aggregate(t);
-		r->throughput_avg = get_throughput_avg_aggregate(t);
-
-		r->apbridge_unipro_latency_min =
-			get_apbridge_unipro_latency_min_aggregate(t);
-		r->apbridge_unipro_latency_max =
-			get_apbridge_unipro_latency_max_aggregate(t);
-		r->apbridge_unipro_latency_avg =
-			get_apbridge_unipro_latency_avg_aggregate(t);
-
-		r->gbphy_firmware_latency_min =
-			get_gbphy_firmware_latency_min_aggregate(t);
-		r->gbphy_firmware_latency_max =
-			get_gbphy_firmware_latency_max_aggregate(t);
-		r->gbphy_firmware_latency_avg =
-			get_gbphy_firmware_latency_avg_aggregate(t);
-
-		r->request_jitter = r->request_max - r->request_min;
-		r->latency_jitter = r->latency_max - r->latency_min;
-		r->throughput_jitter = r->throughput_max - r->throughput_min;
-		r->apbridge_unipro_latency_jitter =
-			r->apbridge_unipro_latency_max - r->apbridge_unipro_latency_min;
-		r->gbphy_firmware_latency_jitter =
-			r->gbphy_firmware_latency_max - r->gbphy_firmware_latency_min;
-
-	}
-
-	return 0;
-}
-
-int format_output(struct loopback_test *t,
-		  struct loopback_results *r,
-		  const char *dev_name,
-		  char *buf, int buf_len,
-		  struct tm *tm)
-{
-	int len = 0;
-
-	memset(buf, 0x00, buf_len);
-	len = snprintf(buf, buf_len, "%u-%u-%u %u:%u:%u",
-		       tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday,
-		       tm->tm_hour, tm->tm_min, tm->tm_sec);
-
-	if (t->porcelain) {
-		len += snprintf(&buf[len], buf_len - len,
-			"\n test:\t\t\t%s\n path:\t\t\t%s\n size:\t\t\t%u\n iterations:\t\t%u\n errors:\t\t%u\n async:\t\t\t%s\n",
-			t->test_name,
-			dev_name,
-			t->size,
-			t->iteration_max,
-			r->error,
-			t->use_async ? "Enabled" : "Disabled");
-
-		len += snprintf(&buf[len], buf_len - len,
-			" requests per-sec:\tmin=%u, max=%u, average=%f, jitter=%u\n",
-			r->request_min,
-			r->request_max,
-			r->request_avg,
-			r->request_jitter);
-
-		len += snprintf(&buf[len], buf_len - len,
-			" ap-throughput B/s:\tmin=%u max=%u average=%f jitter=%u\n",
-			r->throughput_min,
-			r->throughput_max,
-			r->throughput_avg,
-			r->throughput_jitter);
-		len += snprintf(&buf[len], buf_len - len,
-			" ap-latency usec:\tmin=%u max=%u average=%f jitter=%u\n",
-			r->latency_min,
-			r->latency_max,
-			r->latency_avg,
-			r->latency_jitter);
-		len += snprintf(&buf[len], buf_len - len,
-			" apbridge-latency usec:\tmin=%u max=%u average=%f jitter=%u\n",
-			r->apbridge_unipro_latency_min,
-			r->apbridge_unipro_latency_max,
-			r->apbridge_unipro_latency_avg,
-			r->apbridge_unipro_latency_jitter);
-
-		len += snprintf(&buf[len], buf_len - len,
-			" gbphy-latency usec:\tmin=%u max=%u average=%f jitter=%u\n",
-			r->gbphy_firmware_latency_min,
-			r->gbphy_firmware_latency_max,
-			r->gbphy_firmware_latency_avg,
-			r->gbphy_firmware_latency_jitter);
-
-	} else {
-		len += snprintf(&buf[len], buf_len - len, ",%s,%s,%u,%u,%u",
-			t->test_name, dev_name, t->size, t->iteration_max,
-			r->error);
-
-		len += snprintf(&buf[len], buf_len - len, ",%u,%u,%f,%u",
-			r->request_min,
-			r->request_max,
-			r->request_avg,
-			r->request_jitter);
-
-		len += snprintf(&buf[len], buf_len - len, ",%u,%u,%f,%u",
-			r->latency_min,
-			r->latency_max,
-			r->latency_avg,
-			r->latency_jitter);
-
-		len += snprintf(&buf[len], buf_len - len, ",%u,%u,%f,%u",
-			r->throughput_min,
-			r->throughput_max,
-			r->throughput_avg,
-			r->throughput_jitter);
-
-		len += snprintf(&buf[len], buf_len - len, ",%u,%u,%f,%u",
-			r->apbridge_unipro_latency_min,
-			r->apbridge_unipro_latency_max,
-			r->apbridge_unipro_latency_avg,
-			r->apbridge_unipro_latency_jitter);
-
-		len += snprintf(&buf[len], buf_len - len, ",%u,%u,%f,%u",
-			r->gbphy_firmware_latency_min,
-			r->gbphy_firmware_latency_max,
-			r->gbphy_firmware_latency_avg,
-			r->gbphy_firmware_latency_jitter);
-	}
-
-	printf("\n%s\n", buf);
-
-	return len;
-}
-
-static int log_results(struct loopback_test *t)
-{
-	int fd, i, len, ret;
-	struct tm tm;
-	time_t local_time;
-	char file_name[MAX_SYSFS_PATH];
-	char data[CSV_MAX_LINE];
-
-	local_time = time(NULL);
-	tm = *localtime(&local_time);
-
-	/*
-	 * file name will test_name_size_iteration_max.csv
-	 * every time the same test with the same parameters is run we will then
-	 * append to the same CSV with datestamp - representing each test
-	 * dataset.
-	 */
-	if (t->file_output && !t->porcelain) {
-		snprintf(file_name, sizeof(file_name), "%s_%d_%d.csv",
-			 t->test_name, t->size, t->iteration_max);
-
-		fd = open(file_name, O_WRONLY | O_CREAT | O_APPEND, 0644);
-		if (fd < 0) {
-			fprintf(stderr, "unable to open %s for appending\n", file_name);
-			abort();
-		}
-
-	}
-	for (i = 0; i < t->device_count; i++) {
-		if (!device_enabled(t, i))
-			continue;
-
-		len = format_output(t, &t->devices[i].results,
-				    t->devices[i].name,
-				    data, sizeof(data), &tm);
-		if (t->file_output && !t->porcelain) {
-			ret = write(fd, data, len);
-			if (ret == -1)
-				fprintf(stderr, "unable to write %d bytes to csv.\n", len);
-		}
-
-	}
-
-
-	if (t->aggregate_output) {
-		len = format_output(t, &t->aggregate_results, "aggregate",
-				    data, sizeof(data), &tm);
-		if (t->file_output && !t->porcelain) {
-			ret = write(fd, data, len);
-			if (ret == -1)
-				fprintf(stderr, "unable to write %d bytes to csv.\n", len);
-		}
-	}
-
-	if (t->file_output && !t->porcelain)
-		close(fd);
-
-	return 0;
-}
-
-int is_loopback_device(const char *path, const char *node)
-{
-	char file[MAX_SYSFS_PATH];
-
-	snprintf(file, MAX_SYSFS_PATH, "%s%s/iteration_count", path, node);
-	if (access(file, F_OK) == 0)
-		return 1;
-	return 0;
-}
-
-int find_loopback_devices(struct loopback_test *t)
-{
-	struct dirent **namelist;
-	int i, n, ret;
-	unsigned int dev_id;
-	struct loopback_device *d;
-
-	n = scandir(t->sysfs_prefix, &namelist, NULL, alphasort);
-	if (n < 0) {
-		perror("scandir");
-		ret = -ENODEV;
-		goto baddir;
-	}
-
-	/* Don't include '.' and '..' */
-	if (n <= 2) {
-		ret = -ENOMEM;
-		goto done;
-	}
-
-	for (i = 0; i < n; i++) {
-		ret = sscanf(namelist[i]->d_name, "gb_loopback%u", &dev_id);
-		if (ret != 1)
-			continue;
-
-		if (!is_loopback_device(t->sysfs_prefix, namelist[i]->d_name))
-			continue;
-
-		if (t->device_count == MAX_NUM_DEVICES) {
-			fprintf(stderr, "max number of devices reached!\n");
-			break;
-		}
-
-		d = &t->devices[t->device_count++];
-		snprintf(d->name, MAX_STR_LEN, "gb_loopback%u", dev_id);
-
-		snprintf(d->sysfs_entry, MAX_SYSFS_PATH, "%s%s/",
-			 t->sysfs_prefix, d->name);
-
-		snprintf(d->debugfs_entry, MAX_SYSFS_PATH, "%sraw_latency_%s",
-			 t->debugfs_prefix, d->name);
-
-		if (t->debug)
-			printf("add %s %s\n", d->sysfs_entry, d->debugfs_entry);
-	}
-
-	ret = 0;
-done:
-	for (i = 0; i < n; i++)
-		free(namelist[i]);
-	free(namelist);
-baddir:
-	return ret;
-}
-
-static int open_poll_files(struct loopback_test *t)
-{
-	struct loopback_device *dev;
-	char buf[MAX_SYSFS_PATH + MAX_STR_LEN];
-	char dummy;
-	int fds_idx = 0;
-	int i;
-
-	for (i = 0; i < t->device_count; i++) {
-		dev = &t->devices[i];
-
-		if (!device_enabled(t, i))
-			continue;
-
-		snprintf(buf, sizeof(buf), "%s%s", dev->sysfs_entry, "iteration_count");
-		t->fds[fds_idx].fd = open(buf, O_RDONLY);
-		if (t->fds[fds_idx].fd < 0) {
-			fprintf(stderr, "Error opening poll file!\n");
-			goto err;
-		}
-		read(t->fds[fds_idx].fd, &dummy, 1);
-		t->fds[fds_idx].events = POLLERR | POLLPRI;
-		t->fds[fds_idx].revents = 0;
-		fds_idx++;
-	}
-
-	t->poll_count = fds_idx;
-
-	return 0;
-
-err:
-	for (i = 0; i < fds_idx; i++)
-		close(t->fds[i].fd);
-
-	return -1;
-}
-
-static int close_poll_files(struct loopback_test *t)
-{
-	int i;
-	for (i = 0; i < t->poll_count; i++)
-		close(t->fds[i].fd);
-
-	return 0;
-}
-static int is_complete(struct loopback_test *t)
-{
-	int iteration_count;
-	int i;
-
-	for (i = 0; i < t->device_count; i++) {
-		if (!device_enabled(t, i))
-			continue;
-
-		iteration_count = read_sysfs_int(t->devices[i].sysfs_entry,
-						 "iteration_count");
-
-		/* at least one device did not finish yet */
-		if (iteration_count != t->iteration_max)
-			return 0;
-	}
-
-	return 1;
-}
-
-static void stop_tests(struct loopback_test *t)
-{
-	int i;
-
-	for (i = 0; i < t->device_count; i++) {
-		if (!device_enabled(t, i))
-			continue;
-		write_sysfs_val(t->devices[i].sysfs_entry, "type", 0);
-	}
-}
-
-static void handler(int sig) { /* do nothing */  }
-
-static int wait_for_complete(struct loopback_test *t)
-{
-	int number_of_events = 0;
-	char dummy;
-	int ret;
-	int i;
-	struct timespec *ts = NULL;
-	struct sigaction sa;
-	sigset_t mask_old, mask;
-
-	sigemptyset(&mask);
-	sigemptyset(&mask_old);
-	sigaddset(&mask, SIGINT);
-	sigprocmask(SIG_BLOCK, &mask, &mask_old);
-
-	sa.sa_handler = handler;
-	sa.sa_flags = 0;
-	sigemptyset(&sa.sa_mask);
-	if (sigaction(SIGINT, &sa, NULL) == -1) {
-		fprintf(stderr, "sigaction error\n");
-		return -1;
-	}
-
-	if (t->poll_timeout.tv_sec != 0)
-		ts = &t->poll_timeout;
-
-	while (1) {
-
-		ret = ppoll(t->fds, t->poll_count, ts, &mask_old);
-		if (ret <= 0) {
-			stop_tests(t);
-			fprintf(stderr, "Poll exit with errno %d\n", errno);
-			return -1;
-		}
-
-		for (i = 0; i < t->poll_count; i++) {
-			if (t->fds[i].revents & POLLPRI) {
-				/* Dummy read to clear the event */
-				read(t->fds[i].fd, &dummy, 1);
-				number_of_events++;
-			}
-		}
-
-		if (number_of_events == t->poll_count)
-			break;
-	}
-
-	if (!is_complete(t)) {
-		fprintf(stderr, "Iteration count did not finish!\n");
-		return -1;
-	}
-
-	return 0;
-}
-
-static void prepare_devices(struct loopback_test *t)
-{
-	int i;
-
-	/*
-	 * Cancel any running tests on enabled devices. If
-	 * stop_all option is given, stop test on all devices.
-	 */
-	for (i = 0; i < t->device_count; i++)
-		if (t->stop_all || device_enabled(t, i))
-			write_sysfs_val(t->devices[i].sysfs_entry, "type", 0);
-
-
-	for (i = 0; i < t->device_count; i++) {
-		if (!device_enabled(t, i))
-			continue;
-
-		write_sysfs_val(t->devices[i].sysfs_entry, "us_wait",
-				t->us_wait);
-
-		/* Set operation size */
-		write_sysfs_val(t->devices[i].sysfs_entry, "size", t->size);
-
-		/* Set iterations */
-		write_sysfs_val(t->devices[i].sysfs_entry, "iteration_max",
-				t->iteration_max);
-
-		if (t->use_async) {
-			write_sysfs_val(t->devices[i].sysfs_entry, "async", 1);
-			write_sysfs_val(t->devices[i].sysfs_entry,
-					"timeout", t->async_timeout);
-			write_sysfs_val(t->devices[i].sysfs_entry,
-					"outstanding_operations_max",
-					t->async_outstanding_operations);
-		} else {
-			write_sysfs_val(t->devices[i].sysfs_entry, "async", 0);
-		}
-	}
-}
-
-static int start(struct loopback_test *t)
-{
-	int i;
-
-	/* the test starts by writing test_id to the type file. */
-	for (i = 0; i < t->device_count; i++) {
-		if (!device_enabled(t, i))
-			continue;
-
-		write_sysfs_val(t->devices[i].sysfs_entry, "type", t->test_id);
-	}
-
-	return 0;
-}
-
-
-void loopback_run(struct loopback_test *t)
-{
-	int i;
-	int ret;
-
-	for (i = 0; dict[i].name != NULL; i++) {
-		if (strstr(dict[i].name, t->test_name))
-			t->test_id = dict[i].type;
-	}
-	if (!t->test_id) {
-		fprintf(stderr, "invalid test %s\n", t->test_name);
-		usage();
-		return;
-	}
-
-	prepare_devices(t);
-
-	ret = open_poll_files(t);
-	if (ret)
-		goto err;
-
-	start(t);
-
-	ret = wait_for_complete(t);
-	close_poll_files(t);
-	if (ret)
-		goto err;
-
-
-	get_results(t);
-
-	log_results(t);
-
-	return;
-
-err:
-	printf("Error running test\n");
-	return;
-}
-
-static int sanity_check(struct loopback_test *t)
-{
-	int i;
-
-	if (t->device_count == 0) {
-		fprintf(stderr, "No loopback devices found\n");
-		return -1;
-	}
-
-	for (i = 0; i < MAX_NUM_DEVICES; i++) {
-		if (!device_enabled(t, i))
-			continue;
-
-		if (t->mask && !strcmp(t->devices[i].name, "")) {
-			fprintf(stderr, "Bad device mask %x\n", (1 << i));
-			return -1;
-		}
-
-	}
-
-
-	return 0;
-}
-
-int main(int argc, char *argv[])
-{
-	int o, ret;
-	char *sysfs_prefix = "/sys/class/gb_loopback/";
-	char *debugfs_prefix = "/sys/kernel/debug/gb_loopback/";
-
-	memset(&t, 0, sizeof(t));
-
-	while ((o = getopt(argc, argv,
-			   "t:s:i:S:D:m:v::d::r::p::a::l::x::o:O:c:w:z::f::")) != -1) {
-		switch (o) {
-		case 't':
-			snprintf(t.test_name, MAX_STR_LEN, "%s", optarg);
-			break;
-		case 's':
-			t.size = atoi(optarg);
-			break;
-		case 'i':
-			t.iteration_max = atoi(optarg);
-			break;
-		case 'S':
-			snprintf(t.sysfs_prefix, MAX_SYSFS_PREFIX, "%s", optarg);
-			break;
-		case 'D':
-			snprintf(t.debugfs_prefix, MAX_SYSFS_PREFIX, "%s", optarg);
-			break;
-		case 'm':
-			t.mask = atol(optarg);
-			break;
-		case 'v':
-			t.verbose = 1;
-			break;
-		case 'd':
-			t.debug = 1;
-			break;
-		case 'r':
-			t.raw_data_dump = 1;
-			break;
-		case 'p':
-			t.porcelain = 1;
-			break;
-		case 'a':
-			t.aggregate_output = 1;
-			break;
-		case 'l':
-			t.list_devices = 1;
-			break;
-		case 'x':
-			t.use_async = 1;
-			break;
-		case 'o':
-			t.async_timeout = atoi(optarg);
-			break;
-		case 'O':
-			t.poll_timeout.tv_sec = atoi(optarg);
-			break;
-		case 'c':
-			t.async_outstanding_operations = atoi(optarg);
-			break;
-		case 'w':
-			t.us_wait = atoi(optarg);
-			break;
-		case 'z':
-			t.file_output = 1;
-			break;
-		case 'f':
-			t.stop_all = 1;
-			break;
-		default:
-			usage();
-			return -EINVAL;
-		}
-	}
-
-	if (!strcmp(t.sysfs_prefix, ""))
-		snprintf(t.sysfs_prefix, MAX_SYSFS_PREFIX, "%s", sysfs_prefix);
-
-	if (!strcmp(t.debugfs_prefix, ""))
-		snprintf(t.debugfs_prefix, MAX_SYSFS_PREFIX, "%s", debugfs_prefix);
-
-	ret = find_loopback_devices(&t);
-	if (ret)
-		return ret;
-	ret = sanity_check(&t);
-	if (ret)
-		return ret;
-
-	if (t.list_devices) {
-		show_loopback_devices(&t);
-		return 0;
-	}
-
-	if (t.test_name[0] == '\0' || t.iteration_max == 0)
-		usage();
-
-	if (t.async_timeout == 0)
-		t.async_timeout = DEFAULT_ASYNC_TIMEOUT;
-
-	loopback_run(&t);
-
-	return 0;
-}
diff --git a/drivers/staging/media/atomisp/pci/atomisp_fops.c b/drivers/staging/media/atomisp/pci/atomisp_fops.c
index 5fa2e25..49b2114 100644
--- a/drivers/staging/media/atomisp/pci/atomisp_fops.c
+++ b/drivers/staging/media/atomisp/pci/atomisp_fops.c
@@ -951,7 +951,7 @@ int atomisp_videobuf_mmap_mapper(struct videobuf_queue *q,
 		    buf->boff == offset) {
 			vm_mem = buf->priv;
 			ret = frame_mmap(isp, vm_mem->vaddr, vma);
-			vma->vm_flags |= VM_IO | VM_DONTEXPAND | VM_DONTDUMP;
+			vm_flags_set(vma, VM_IO | VM_DONTEXPAND | VM_DONTDUMP);
 			break;
 		}
 	}
@@ -1027,7 +1027,7 @@ static int atomisp_mmap(struct file *file, struct vm_area_struct *vma)
 		 * Without VM_SHARED, remap_pfn_range() treats
 		 * this kind of mapping as invalid.
 		 */
-		vma->vm_flags |= VM_SHARED;
+		vm_flags_set(vma, VM_SHARED);
 		ret = hmm_mmap(vma, vma->vm_pgoff << PAGE_SHIFT);
 		mutex_unlock(&isp->mutex);
 		return ret;
@@ -1071,7 +1071,7 @@ static int atomisp_mmap(struct file *file, struct vm_area_struct *vma)
 			goto error;
 		}
 		raw_virt_addr->data_bytes = origin_size;
-		vma->vm_flags |= VM_IO | VM_DONTEXPAND | VM_DONTDUMP;
+		vm_flags_set(vma, VM_IO | VM_DONTEXPAND | VM_DONTDUMP);
 		mutex_unlock(&isp->mutex);
 		return 0;
 	}
diff --git a/drivers/staging/media/atomisp/pci/hmm/hmm_bo.c b/drivers/staging/media/atomisp/pci/hmm/hmm_bo.c
index a5fd6d3..be064e4 100644
--- a/drivers/staging/media/atomisp/pci/hmm/hmm_bo.c
+++ b/drivers/staging/media/atomisp/pci/hmm/hmm_bo.c
@@ -1102,7 +1102,7 @@ int hmm_bo_mmap(struct vm_area_struct *vma, struct hmm_buffer_object *bo)
 	vma->vm_private_data = bo;
 
 	vma->vm_ops = &hmm_bo_vm_ops;
-	vma->vm_flags |= VM_IO | VM_DONTEXPAND | VM_DONTDUMP;
+	vm_flags_set(vma, VM_IO | VM_DONTEXPAND | VM_DONTDUMP);
 
 	/*
 	 * call hmm_bo_vm_open explicitly.
diff --git a/drivers/staging/media/deprecated/meye/meye.c b/drivers/staging/media/deprecated/meye/meye.c
index 5d87efd..746c6ea 100644
--- a/drivers/staging/media/deprecated/meye/meye.c
+++ b/drivers/staging/media/deprecated/meye/meye.c
@@ -1476,8 +1476,8 @@ static int meye_mmap(struct file *file, struct vm_area_struct *vma)
 	}
 
 	vma->vm_ops = &meye_vm_ops;
-	vma->vm_flags &= ~VM_IO;	/* not I/O memory */
-	vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP;
+	/* not I/O memory */
+	vm_flags_mod(vma, VM_DONTEXPAND | VM_DONTDUMP, VM_IO);
 	vma->vm_private_data = (void *) (offset / gbufsize);
 	meye_vm_open(vma);
 
diff --git a/drivers/staging/media/deprecated/stkwebcam/stk-webcam.c b/drivers/staging/media/deprecated/stkwebcam/stk-webcam.c
index 787edb3..a1b7ad3 100644
--- a/drivers/staging/media/deprecated/stkwebcam/stk-webcam.c
+++ b/drivers/staging/media/deprecated/stkwebcam/stk-webcam.c
@@ -779,7 +779,7 @@ static int v4l_stk_mmap(struct file *fp, struct vm_area_struct *vma)
 	ret = remap_vmalloc_range(vma, sbuf->buffer, 0);
 	if (ret)
 		return ret;
-	vma->vm_flags |= VM_DONTEXPAND;
+	vm_flags_set(vma, VM_DONTEXPAND);
 	vma->vm_private_data = sbuf;
 	vma->vm_ops = &stk_v4l_vm_ops;
 	sbuf->v4lbuf.flags |= V4L2_BUF_FLAG_MAPPED;
diff --git a/drivers/target/target_core_pscsi.c b/drivers/target/target_core_pscsi.c
index 69a4c95..e7425549 100644
--- a/drivers/target/target_core_pscsi.c
+++ b/drivers/target/target_core_pscsi.c
@@ -144,8 +144,7 @@ static void pscsi_tape_read_blocksize(struct se_device *dev,
 	cdb[0] = MODE_SENSE;
 	cdb[4] = 0x0c; /* 12 bytes */
 
-	ret = scsi_execute_req(sdev, cdb, DMA_FROM_DEVICE, buf, 12, NULL,
-			HZ, 1, NULL);
+	ret = scsi_execute_cmd(sdev, cdb, REQ_OP_DRV_IN, buf, 12, HZ, 1, NULL);
 	if (ret)
 		goto out_free;
 
@@ -195,8 +194,8 @@ pscsi_get_inquiry_vpd_serial(struct scsi_device *sdev, struct t10_wwn *wwn)
 	cdb[2] = 0x80; /* Unit Serial Number */
 	put_unaligned_be16(INQUIRY_VPD_SERIAL_LEN, &cdb[3]);
 
-	ret = scsi_execute_req(sdev, cdb, DMA_FROM_DEVICE, buf,
-			      INQUIRY_VPD_SERIAL_LEN, NULL, HZ, 1, NULL);
+	ret = scsi_execute_cmd(sdev, cdb, REQ_OP_DRV_IN, buf,
+			       INQUIRY_VPD_SERIAL_LEN, HZ, 1, NULL);
 	if (ret)
 		goto out_free;
 
@@ -230,9 +229,8 @@ pscsi_get_inquiry_vpd_device_ident(struct scsi_device *sdev,
 	cdb[2] = 0x83; /* Device Identifier */
 	put_unaligned_be16(INQUIRY_VPD_DEVICE_IDENTIFIER_LEN, &cdb[3]);
 
-	ret = scsi_execute_req(sdev, cdb, DMA_FROM_DEVICE, buf,
-			      INQUIRY_VPD_DEVICE_IDENTIFIER_LEN,
-			      NULL, HZ, 1, NULL);
+	ret = scsi_execute_cmd(sdev, cdb, REQ_OP_DRV_IN, buf,
+			       INQUIRY_VPD_DEVICE_IDENTIFIER_LEN, HZ, 1, NULL);
 	if (ret)
 		goto out;
 
diff --git a/drivers/target/target_core_user.c b/drivers/target/target_core_user.c
index 2940559c..15ffc8d 100644
--- a/drivers/target/target_core_user.c
+++ b/drivers/target/target_core_user.c
@@ -1928,7 +1928,7 @@ static int tcmu_mmap(struct uio_info *info, struct vm_area_struct *vma)
 {
 	struct tcmu_dev *udev = container_of(info, struct tcmu_dev, uio_info);
 
-	vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP;
+	vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP);
 	vma->vm_ops = &tcmu_vm_ops;
 
 	vma->vm_private_data = udev;
diff --git a/drivers/thermal/cpufreq_cooling.c b/drivers/thermal/cpufreq_cooling.c
index 9f8b438..74938a1 100644
--- a/drivers/thermal/cpufreq_cooling.c
+++ b/drivers/thermal/cpufreq_cooling.c
@@ -24,6 +24,7 @@
 #include <linux/units.h>
 
 #include <trace/events/thermal.h>
+#include <trace/hooks/thermal.h>
 
 /*
  * Cooling state <-> CPUFreq frequency
@@ -226,6 +227,8 @@ static int cpufreq_get_requested_power(struct thermal_cooling_device *cdev,
 
 	freq = cpufreq_quick_get(policy->cpu);
 
+	trace_android_vh_modify_thermal_request_freq(policy, &freq);
+
 	for_each_cpu(cpu, policy->related_cpus) {
 		u32 load;
 
@@ -305,6 +308,8 @@ static int cpufreq_power2state(struct thermal_cooling_device *cdev,
 	normalised_power = (power * 100) / last_load;
 	target_freq = cpu_power_to_freq(cpufreq_cdev, normalised_power);
 
+	trace_android_vh_modify_thermal_target_freq(policy, &target_freq);
+
 	*state = get_level(cpufreq_cdev, target_freq);
 	trace_thermal_power_cpu_limit(policy->related_cpus, target_freq, *state,
 				      power);
diff --git a/drivers/thermal/gov_power_allocator.c b/drivers/thermal/gov_power_allocator.c
index 2d1aeab..5471c90 100644
--- a/drivers/thermal/gov_power_allocator.c
+++ b/drivers/thermal/gov_power_allocator.c
@@ -14,6 +14,8 @@
 
 #define CREATE_TRACE_POINTS
 #include <trace/events/thermal_power_allocator.h>
+#undef CREATE_TRACE_POINTS
+#include <trace/hooks/thermal.h>
 
 #include "thermal_core.h"
 
@@ -462,6 +464,7 @@ static int allocate_power(struct thermal_zone_device *tz,
 	}
 
 	power_range = pid_controller(tz, control_temp, max_allocatable_power);
+	trace_android_vh_thermal_power_cap(&power_range);
 
 	divvy_up_power(weighted_req_power, max_power, num_actors,
 		       total_weighted_req_power, power_range, granted_power,
diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
index 1eae4ec..25b9dbd 100644
--- a/drivers/thermal/thermal_core.c
+++ b/drivers/thermal/thermal_core.c
@@ -23,6 +23,8 @@
 
 #define CREATE_TRACE_POINTS
 #include <trace/events/thermal.h>
+#undef CREATE_TRACE_POINTS
+#include <trace/hooks/thermal.h>
 
 #include "thermal_core.h"
 #include "thermal_hwmon.h"
@@ -481,6 +483,8 @@ void thermal_zone_device_update(struct thermal_zone_device *tz,
 		handle_thermal_trip(tz, count);
 
 	monitor_thermal_zone(tz);
+
+	trace_android_vh_get_thermal_zone_device(tz);
 out:
 	mutex_unlock(&tz->lock);
 }
diff --git a/drivers/thermal/thermal_helpers.c b/drivers/thermal/thermal_helpers.c
index fca0b23..096b221 100644
--- a/drivers/thermal/thermal_helpers.c
+++ b/drivers/thermal/thermal_helpers.c
@@ -238,6 +238,7 @@ void thermal_cdev_update(struct thermal_cooling_device *cdev)
 	}
 	mutex_unlock(&cdev->lock);
 }
+EXPORT_SYMBOL_GPL(thermal_cdev_update);
 
 /**
  * thermal_zone_get_slope - return the slope attribute of the thermal zone
diff --git a/drivers/thermal/thermal_sysfs.c b/drivers/thermal/thermal_sysfs.c
index bd75961..12233ee 100644
--- a/drivers/thermal/thermal_sysfs.c
+++ b/drivers/thermal/thermal_sysfs.c
@@ -18,6 +18,7 @@
 #include <linux/slab.h>
 #include <linux/string.h>
 #include <linux/jiffies.h>
+#include <trace/hooks/thermal.h>
 
 #include "thermal_core.h"
 
@@ -825,6 +826,12 @@ static void cooling_device_stats_setup(struct thermal_cooling_device *cdev)
 	struct cooling_dev_stats *stats;
 	unsigned long states;
 	int var;
+	bool disable_cdev_stats = false;
+
+	trace_android_vh_disable_thermal_cooling_stats(cdev,
+						&disable_cdev_stats);
+	if (disable_cdev_stats)
+		goto out;
 
 	if (cdev->ops->get_max_state(cdev, &states))
 		goto out;
diff --git a/drivers/tty/hvc/hvc_console.h b/drivers/tty/hvc/hvc_console.h
index 18d0058..97200fb 100644
--- a/drivers/tty/hvc/hvc_console.h
+++ b/drivers/tty/hvc/hvc_console.h
@@ -30,7 +30,7 @@
  * for the tty device.  Since this driver supports hotplug of vty adapters we
  * need to make sure we have enough allocated.
  */
-#define HVC_ALLOC_TTY_ADAPTERS	8
+#define HVC_ALLOC_TTY_ADAPTERS	64
 
 struct hvc_struct {
 	struct tty_port port;
diff --git a/drivers/tty/hvc/hvc_dcc.c b/drivers/tty/hvc/hvc_dcc.c
index 1751108..3cbd441 100644
--- a/drivers/tty/hvc/hvc_dcc.c
+++ b/drivers/tty/hvc/hvc_dcc.c
@@ -6,6 +6,7 @@
 #include <linux/cpumask.h>
 #include <linux/init.h>
 #include <linux/kfifo.h>
+#include <linux/moduleparam.h>
 #include <linux/serial.h>
 #include <linux/serial_core.h>
 #include <linux/smp.h>
@@ -16,6 +17,13 @@
 
 #include "hvc_console.h"
 
+/*
+ * Disable DCC driver at runtime. Want driver enabled for GKI, but some devices
+ * do not support the registers and crash when driver pokes the registers
+ */
+static bool enable;
+module_param(enable, bool, 0444);
+
 /* DCC Status Bits */
 #define DCC_STATUS_RX		(1 << 30)
 #define DCC_STATUS_TX		(1 << 29)
@@ -257,7 +265,7 @@ static int __init hvc_dcc_console_init(void)
 {
 	int ret;
 
-	if (!hvc_dcc_check())
+	if (!enable || !hvc_dcc_check())
 		return -ENODEV;
 
 	/* Returns -1 if error */
@@ -271,7 +279,7 @@ static int __init hvc_dcc_init(void)
 {
 	struct hvc_struct *p;
 
-	if (!hvc_dcc_check())
+	if (!enable || !hvc_dcc_check())
 		return -ENODEV;
 
 	if (IS_ENABLED(CONFIG_HVC_DCC_SERIALIZE_SMP)) {
diff --git a/drivers/tty/serial/Kconfig b/drivers/tty/serial/Kconfig
index 12f6851..7fd19ef 100644
--- a/drivers/tty/serial/Kconfig
+++ b/drivers/tty/serial/Kconfig
@@ -238,7 +238,6 @@
 
 config SERIAL_SAMSUNG
 	tristate "Samsung SoC serial support"
-	depends on PLAT_SAMSUNG || ARCH_S5PV210 || ARCH_EXYNOS || ARCH_APPLE || ARCH_ARTPEC || COMPILE_TEST
 	select SERIAL_CORE
 	help
 	  Support for the on-chip UARTs on the Samsung
diff --git a/drivers/tty/serial/qcom_geni_serial.c b/drivers/tty/serial/qcom_geni_serial.c
index cf9dc2d..591e6b6 100644
--- a/drivers/tty/serial/qcom_geni_serial.c
+++ b/drivers/tty/serial/qcom_geni_serial.c
@@ -16,7 +16,7 @@
 #include <linux/platform_device.h>
 #include <linux/pm_runtime.h>
 #include <linux/pm_wakeirq.h>
-#include <linux/qcom-geni-se.h>
+#include <linux/soc/qcom/geni-se.h>
 #include <linux/serial.h>
 #include <linux/serial_core.h>
 #include <linux/slab.h>
@@ -938,6 +938,7 @@ static int qcom_geni_serial_port_setup(struct uart_port *uport)
 			       false, true, true);
 	geni_se_init(&port->se, UART_RX_WM, port->rx_fifo_depth - 2);
 	geni_se_select_mode(&port->se, GENI_SE_FIFO);
+	qcom_geni_serial_start_rx(uport);
 	port->setup = true;
 
 	return 0;
@@ -1560,9 +1561,43 @@ static int __maybe_unused qcom_geni_serial_sys_resume(struct device *dev)
 	return ret;
 }
 
+static int qcom_geni_serial_sys_hib_resume(struct device *dev)
+{
+	int ret = 0;
+	struct uart_port *uport;
+	struct qcom_geni_private_data *private_data;
+	struct qcom_geni_serial_port *port = dev_get_drvdata(dev);
+
+	uport = &port->uport;
+	private_data = uport->private_data;
+
+	if (uart_console(uport)) {
+		geni_icc_set_tag(&port->se, 0x7);
+		geni_icc_set_bw(&port->se);
+		ret = uart_resume_port(private_data->drv, uport);
+		/*
+		 * For hibernation usecase clients for
+		 * console UART won't call port setup during restore,
+		 * hence call port setup for console uart.
+		 */
+		qcom_geni_serial_port_setup(uport);
+	} else {
+		/*
+		 * Peripheral register settings are lost during hibernation.
+		 * Update setup flag such that port setup happens again
+		 * during next session. Clients of HS-UART will close and
+		 * open the port during hibernation.
+		 */
+		port->setup = false;
+	}
+	return ret;
+}
+
 static const struct dev_pm_ops qcom_geni_serial_pm_ops = {
 	SET_SYSTEM_SLEEP_PM_OPS(qcom_geni_serial_sys_suspend,
 					qcom_geni_serial_sys_resume)
+	.restore = qcom_geni_serial_sys_hib_resume,
+	.thaw = qcom_geni_serial_sys_hib_resume,
 };
 
 static const struct of_device_id qcom_geni_serial_match_table[] = {
diff --git a/drivers/tty/sysrq.c b/drivers/tty/sysrq.c
index d2b2720..a8e9de2 100644
--- a/drivers/tty/sysrq.c
+++ b/drivers/tty/sysrq.c
@@ -55,6 +55,8 @@
 #include <asm/ptrace.h>
 #include <asm/irq_regs.h>
 
+#include <trace/hooks/sysrqcrash.h>
+
 /* Whether we react on sysrq keys or just ignore them */
 static int __read_mostly sysrq_enabled = CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE;
 static bool __read_mostly sysrq_always_enabled;
@@ -152,6 +154,8 @@ static void sysrq_handle_crash(int key)
 	/* release the RCU read lock before crashing */
 	rcu_read_unlock();
 
+	trace_android_vh_sysrq_crash(current);
+
 	panic("sysrq triggered crash\n");
 }
 static const struct sysrq_key_op sysrq_crash_op = {
diff --git a/drivers/ufs/core/Makefile b/drivers/ufs/core/Makefile
index 62f38c5..4d02e0f 100644
--- a/drivers/ufs/core/Makefile
+++ b/drivers/ufs/core/Makefile
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 
 obj-$(CONFIG_SCSI_UFSHCD)		+= ufshcd-core.o
-ufshcd-core-y				+= ufshcd.o ufs-sysfs.o
+ufshcd-core-y				+= ufshcd.o ufs-sysfs.o ufs-mcq.o
 ufshcd-core-$(CONFIG_DEBUG_FS)		+= ufs-debugfs.o
 ufshcd-core-$(CONFIG_SCSI_UFS_BSG)	+= ufs_bsg.o
 ufshcd-core-$(CONFIG_SCSI_UFS_CRYPTO)	+= ufshcd-crypto.o
diff --git a/drivers/ufs/core/ufs-mcq.c b/drivers/ufs/core/ufs-mcq.c
new file mode 100644
index 0000000..d544508
--- /dev/null
+++ b/drivers/ufs/core/ufs-mcq.c
@@ -0,0 +1,694 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (c) 2022 Qualcomm Innovation Center. All rights reserved.
+ *
+ * Authors:
+ *	Asutosh Das <quic_asutoshd@quicinc.com>
+ *	Can Guo <quic_cang@quicinc.com>
+ */
+
+#include <asm/unaligned.h>
+#include <linux/dma-mapping.h>
+#include <linux/module.h>
+#include <linux/platform_device.h>
+#include "ufshcd-priv.h"
+#include <linux/delay.h>
+#include <scsi/scsi_cmnd.h>
+#include <linux/bitfield.h>
+#include <linux/iopoll.h>
+
+#define MAX_QUEUE_SUP GENMASK(7, 0)
+#define UFS_MCQ_MIN_RW_QUEUES 2
+#define UFS_MCQ_MIN_READ_QUEUES 0
+#define UFS_MCQ_NUM_DEV_CMD_QUEUES 1
+#define UFS_MCQ_MIN_POLL_QUEUES 0
+#define QUEUE_EN_OFFSET 31
+#define QUEUE_ID_OFFSET 16
+
+#define MAX_DEV_CMD_ENTRIES	2
+#define MCQ_CFG_MAC_MASK	GENMASK(16, 8)
+#define MCQ_QCFG_SIZE		0x40
+#define MCQ_ENTRY_SIZE_IN_DWORD	8
+#define CQE_UCD_BA GENMASK_ULL(63, 7)
+
+/* Max mcq register polling time in microseconds */
+#define MCQ_POLL_US 500000
+
+static int rw_queue_count_set(const char *val, const struct kernel_param *kp)
+{
+	return param_set_uint_minmax(val, kp, UFS_MCQ_MIN_RW_QUEUES,
+				     num_possible_cpus());
+}
+
+static const struct kernel_param_ops rw_queue_count_ops = {
+	.set = rw_queue_count_set,
+	.get = param_get_uint,
+};
+
+static unsigned int rw_queues;
+module_param_cb(rw_queues, &rw_queue_count_ops, &rw_queues, 0644);
+MODULE_PARM_DESC(rw_queues,
+		 "Number of interrupt driven I/O queues used for rw. Default value is nr_cpus");
+
+static int read_queue_count_set(const char *val, const struct kernel_param *kp)
+{
+	return param_set_uint_minmax(val, kp, UFS_MCQ_MIN_READ_QUEUES,
+				     num_possible_cpus());
+}
+
+static const struct kernel_param_ops read_queue_count_ops = {
+	.set = read_queue_count_set,
+	.get = param_get_uint,
+};
+
+static unsigned int read_queues;
+module_param_cb(read_queues, &read_queue_count_ops, &read_queues, 0644);
+MODULE_PARM_DESC(read_queues,
+		 "Number of interrupt driven read queues used for read. Default value is 0");
+
+static int poll_queue_count_set(const char *val, const struct kernel_param *kp)
+{
+	return param_set_uint_minmax(val, kp, UFS_MCQ_MIN_POLL_QUEUES,
+				     num_possible_cpus());
+}
+
+static const struct kernel_param_ops poll_queue_count_ops = {
+	.set = poll_queue_count_set,
+	.get = param_get_uint,
+};
+
+static unsigned int poll_queues = 1;
+module_param_cb(poll_queues, &poll_queue_count_ops, &poll_queues, 0644);
+MODULE_PARM_DESC(poll_queues,
+		 "Number of poll queues used for r/w. Default value is 1");
+
+/**
+ * ufshcd_mcq_config_mac - Set the #Max Activ Cmds.
+ * @hba: per adapter instance
+ * @max_active_cmds: maximum # of active commands to the device at any time.
+ *
+ * The controller won't send more than the max_active_cmds to the device at
+ * any time.
+ */
+void ufshcd_mcq_config_mac(struct ufs_hba *hba, u32 max_active_cmds)
+{
+	u32 val;
+
+	val = ufshcd_readl(hba, REG_UFS_MCQ_CFG);
+	val &= ~MCQ_CFG_MAC_MASK;
+	val |= FIELD_PREP(MCQ_CFG_MAC_MASK, max_active_cmds);
+	ufshcd_writel(hba, val, REG_UFS_MCQ_CFG);
+}
+
+/**
+ * ufshcd_mcq_req_to_hwq - find the hardware queue on which the
+ * request would be issued.
+ * @hba: per adapter instance
+ * @req: pointer to the request to be issued
+ *
+ * Returns the hardware queue instance on which the request would
+ * be queued.
+ */
+struct ufs_hw_queue *ufshcd_mcq_req_to_hwq(struct ufs_hba *hba,
+					 struct request *req)
+{
+	u32 utag = blk_mq_unique_tag(req);
+	u32 hwq = blk_mq_unique_tag_to_hwq(utag);
+
+	/* uhq[0] is used to serve device commands */
+	return &hba->uhq[hwq + UFSHCD_MCQ_IO_QUEUE_OFFSET];
+}
+
+/**
+ * ufshcd_mcq_decide_queue_depth - decide the queue depth
+ * @hba: per adapter instance
+ *
+ * Returns queue-depth on success, non-zero on error
+ *
+ * MAC - Max. Active Command of the Host Controller (HC)
+ * HC wouldn't send more than this commands to the device.
+ * It is mandatory to implement get_hba_mac() to enable MCQ mode.
+ * Calculates and adjusts the queue depth based on the depth
+ * supported by the HC and ufs device.
+ */
+int ufshcd_mcq_decide_queue_depth(struct ufs_hba *hba)
+{
+	int mac;
+
+	/* Mandatory to implement get_hba_mac() */
+	mac = ufshcd_mcq_vops_get_hba_mac(hba);
+	if (mac < 0) {
+		dev_err(hba->dev, "Failed to get mac, err=%d\n", mac);
+		return mac;
+	}
+
+	WARN_ON_ONCE(!hba->dev_info.bqueuedepth);
+	/*
+	 * max. value of bqueuedepth = 256, mac is host dependent.
+	 * It is mandatory for UFS device to define bQueueDepth if
+	 * shared queuing architecture is enabled.
+	 */
+	return min_t(int, mac, hba->dev_info.bqueuedepth);
+}
+
+static int ufshcd_mcq_config_nr_queues(struct ufs_hba *hba)
+{
+	int i;
+	u32 hba_maxq, rem, tot_queues;
+	struct Scsi_Host *host = hba->host;
+
+	/* maxq is 0 based value */
+	hba_maxq = FIELD_GET(MAX_QUEUE_SUP, hba->mcq_capabilities) + 1;
+
+	tot_queues = UFS_MCQ_NUM_DEV_CMD_QUEUES + read_queues + poll_queues +
+			rw_queues;
+
+	if (hba_maxq < tot_queues) {
+		dev_err(hba->dev, "Total queues (%d) exceeds HC capacity (%d)\n",
+			tot_queues, hba_maxq);
+		return -EOPNOTSUPP;
+	}
+
+	rem = hba_maxq - UFS_MCQ_NUM_DEV_CMD_QUEUES;
+
+	if (rw_queues) {
+		hba->nr_queues[HCTX_TYPE_DEFAULT] = rw_queues;
+		rem -= hba->nr_queues[HCTX_TYPE_DEFAULT];
+	} else {
+		rw_queues = num_possible_cpus();
+	}
+
+	if (poll_queues) {
+		hba->nr_queues[HCTX_TYPE_POLL] = poll_queues;
+		rem -= hba->nr_queues[HCTX_TYPE_POLL];
+	}
+
+	if (read_queues) {
+		hba->nr_queues[HCTX_TYPE_READ] = read_queues;
+		rem -= hba->nr_queues[HCTX_TYPE_READ];
+	}
+
+	if (!hba->nr_queues[HCTX_TYPE_DEFAULT])
+		hba->nr_queues[HCTX_TYPE_DEFAULT] = min3(rem, rw_queues,
+							 num_possible_cpus());
+
+	for (i = 0; i < HCTX_MAX_TYPES; i++)
+		host->nr_hw_queues += hba->nr_queues[i];
+
+	hba->nr_hw_queues = host->nr_hw_queues + UFS_MCQ_NUM_DEV_CMD_QUEUES;
+	return 0;
+}
+
+int ufshcd_mcq_memory_alloc(struct ufs_hba *hba)
+{
+	struct ufs_hw_queue *hwq;
+	size_t utrdl_size, cqe_size;
+	int i;
+
+	for (i = 0; i < hba->nr_hw_queues; i++) {
+		hwq = &hba->uhq[i];
+
+		utrdl_size = sizeof(struct utp_transfer_req_desc) *
+			     hwq->max_entries;
+		hwq->sqe_base_addr = dmam_alloc_coherent(hba->dev, utrdl_size,
+							 &hwq->sqe_dma_addr,
+							 GFP_KERNEL);
+		if (!hwq->sqe_dma_addr) {
+			dev_err(hba->dev, "SQE allocation failed\n");
+			return -ENOMEM;
+		}
+
+		cqe_size = sizeof(struct cq_entry) * hwq->max_entries;
+		hwq->cqe_base_addr = dmam_alloc_coherent(hba->dev, cqe_size,
+							 &hwq->cqe_dma_addr,
+							 GFP_KERNEL);
+		if (!hwq->cqe_dma_addr) {
+			dev_err(hba->dev, "CQE allocation failed\n");
+			return -ENOMEM;
+		}
+	}
+
+	return 0;
+}
+
+
+/* Operation and runtime registers configuration */
+#define MCQ_CFG_n(r, i)	((r) + MCQ_QCFG_SIZE * (i))
+#define MCQ_OPR_OFFSET_n(p, i) \
+	(hba->mcq_opr[(p)].offset + hba->mcq_opr[(p)].stride * (i))
+
+static void __iomem *mcq_opr_base(struct ufs_hba *hba,
+					 enum ufshcd_mcq_opr n, int i)
+{
+	struct ufshcd_mcq_opr_info_t *opr = &hba->mcq_opr[n];
+
+	return opr->base + opr->stride * i;
+}
+
+u32 ufshcd_mcq_read_cqis(struct ufs_hba *hba, int i)
+{
+	return readl(mcq_opr_base(hba, OPR_CQIS, i) + REG_CQIS);
+}
+
+void ufshcd_mcq_write_cqis(struct ufs_hba *hba, u32 val, int i)
+{
+	writel(val, mcq_opr_base(hba, OPR_CQIS, i) + REG_CQIS);
+}
+EXPORT_SYMBOL_GPL(ufshcd_mcq_write_cqis);
+
+/*
+ * Current MCQ specification doesn't provide a Task Tag or its equivalent in
+ * the Completion Queue Entry. Find the Task Tag using an indirect method.
+ */
+static int ufshcd_mcq_get_tag(struct ufs_hba *hba,
+				     struct ufs_hw_queue *hwq,
+				     struct cq_entry *cqe)
+{
+	u64 addr;
+
+	/* sizeof(struct utp_transfer_cmd_desc) must be a multiple of 128 */
+	BUILD_BUG_ON(sizeof(struct utp_transfer_cmd_desc) & GENMASK(6, 0));
+
+	/* Bits 63:7 UCD base address, 6:5 are reserved, 4:0 is SQ ID */
+	addr = (le64_to_cpu(cqe->command_desc_base_addr) & CQE_UCD_BA) -
+		hba->ucdl_dma_addr;
+
+	return div_u64(addr, ufshcd_get_ucd_size(hba));
+}
+
+static void ufshcd_mcq_process_cqe(struct ufs_hba *hba,
+				   struct ufs_hw_queue *hwq)
+{
+	struct cq_entry *cqe = ufshcd_mcq_cur_cqe(hwq);
+	int tag = ufshcd_mcq_get_tag(hba, hwq, cqe);
+
+	if (cqe->command_desc_base_addr) {
+		ufshcd_compl_one_cqe(hba, tag, cqe);
+		/* After processed the cqe, mark it empty (invalid) entry */
+		cqe->command_desc_base_addr = 0;
+	}
+}
+
+void ufshcd_mcq_compl_all_cqes_lock(struct ufs_hba *hba,
+				    struct ufs_hw_queue *hwq)
+{
+	unsigned long flags;
+	u32 entries = hwq->max_entries;
+
+	spin_lock_irqsave(&hwq->cq_lock, flags);
+	while (entries > 0) {
+		ufshcd_mcq_process_cqe(hba, hwq);
+		ufshcd_mcq_inc_cq_head_slot(hwq);
+		entries--;
+	}
+
+	ufshcd_mcq_update_cq_tail_slot(hwq);
+	hwq->cq_head_slot = hwq->cq_tail_slot;
+	spin_unlock_irqrestore(&hwq->cq_lock, flags);
+}
+
+unsigned long ufshcd_mcq_poll_cqe_nolock(struct ufs_hba *hba,
+						struct ufs_hw_queue *hwq)
+{
+	unsigned long completed_reqs = 0;
+
+	ufshcd_mcq_update_cq_tail_slot(hwq);
+	while (!ufshcd_mcq_is_cq_empty(hwq)) {
+		ufshcd_mcq_process_cqe(hba, hwq);
+		ufshcd_mcq_inc_cq_head_slot(hwq);
+		completed_reqs++;
+	}
+
+	if (completed_reqs)
+		ufshcd_mcq_update_cq_head(hwq);
+
+	return completed_reqs;
+}
+EXPORT_SYMBOL_GPL(ufshcd_mcq_poll_cqe_nolock);
+
+unsigned long ufshcd_mcq_poll_cqe_lock(struct ufs_hba *hba,
+				       struct ufs_hw_queue *hwq)
+{
+	unsigned long completed_reqs, flags;
+
+	spin_lock_irqsave(&hwq->cq_lock, flags);
+	completed_reqs = ufshcd_mcq_poll_cqe_nolock(hba, hwq);
+	spin_unlock_irqrestore(&hwq->cq_lock, flags);
+
+	return completed_reqs;
+}
+EXPORT_SYMBOL_GPL(ufshcd_mcq_poll_cqe_lock);
+
+void ufshcd_mcq_make_queues_operational(struct ufs_hba *hba)
+{
+	struct ufs_hw_queue *hwq;
+	u16 qsize;
+	int i;
+
+	for (i = 0; i < hba->nr_hw_queues; i++) {
+		hwq = &hba->uhq[i];
+		hwq->id = i;
+		qsize = hwq->max_entries * MCQ_ENTRY_SIZE_IN_DWORD - 1;
+
+		/* Submission Queue Lower Base Address */
+		ufsmcq_writelx(hba, lower_32_bits(hwq->sqe_dma_addr),
+			      MCQ_CFG_n(REG_SQLBA, i));
+		/* Submission Queue Upper Base Address */
+		ufsmcq_writelx(hba, upper_32_bits(hwq->sqe_dma_addr),
+			      MCQ_CFG_n(REG_SQUBA, i));
+		/* Submission Queue Doorbell Address Offset */
+		ufsmcq_writelx(hba, MCQ_OPR_OFFSET_n(OPR_SQD, i),
+			      MCQ_CFG_n(REG_SQDAO, i));
+		/* Submission Queue Interrupt Status Address Offset */
+		ufsmcq_writelx(hba, MCQ_OPR_OFFSET_n(OPR_SQIS, i),
+			      MCQ_CFG_n(REG_SQISAO, i));
+
+		/* Completion Queue Lower Base Address */
+		ufsmcq_writelx(hba, lower_32_bits(hwq->cqe_dma_addr),
+			      MCQ_CFG_n(REG_CQLBA, i));
+		/* Completion Queue Upper Base Address */
+		ufsmcq_writelx(hba, upper_32_bits(hwq->cqe_dma_addr),
+			      MCQ_CFG_n(REG_CQUBA, i));
+		/* Completion Queue Doorbell Address Offset */
+		ufsmcq_writelx(hba, MCQ_OPR_OFFSET_n(OPR_CQD, i),
+			      MCQ_CFG_n(REG_CQDAO, i));
+		/* Completion Queue Interrupt Status Address Offset */
+		ufsmcq_writelx(hba, MCQ_OPR_OFFSET_n(OPR_CQIS, i),
+			      MCQ_CFG_n(REG_CQISAO, i));
+
+		/* Save the base addresses for quicker access */
+		hwq->mcq_sq_head = mcq_opr_base(hba, OPR_SQD, i) + REG_SQHP;
+		hwq->mcq_sq_tail = mcq_opr_base(hba, OPR_SQD, i) + REG_SQTP;
+		hwq->mcq_cq_head = mcq_opr_base(hba, OPR_CQD, i) + REG_CQHP;
+		hwq->mcq_cq_tail = mcq_opr_base(hba, OPR_CQD, i) + REG_CQTP;
+
+		/* Reinitializing is needed upon HC reset */
+		hwq->sq_tail_slot = hwq->cq_tail_slot = hwq->cq_head_slot = 0;
+
+		/* Enable Tail Entry Push Status interrupt only for non-poll queues */
+		if (i < hba->nr_hw_queues - hba->nr_queues[HCTX_TYPE_POLL])
+			writel(1, mcq_opr_base(hba, OPR_CQIS, i) + REG_CQIE);
+
+		/* Completion Queue Enable|Size to Completion Queue Attribute */
+		ufsmcq_writel(hba, (1 << QUEUE_EN_OFFSET) | qsize,
+			      MCQ_CFG_n(REG_CQATTR, i));
+
+		/*
+		 * Submission Qeueue Enable|Size|Completion Queue ID to
+		 * Submission Queue Attribute
+		 */
+		ufsmcq_writel(hba, (1 << QUEUE_EN_OFFSET) | qsize |
+			      (i << QUEUE_ID_OFFSET),
+			      MCQ_CFG_n(REG_SQATTR, i));
+	}
+}
+
+void ufshcd_mcq_enable_esi(struct ufs_hba *hba)
+{
+	ufshcd_writel(hba, ufshcd_readl(hba, REG_UFS_MEM_CFG) | 0x2,
+		      REG_UFS_MEM_CFG);
+}
+EXPORT_SYMBOL_GPL(ufshcd_mcq_enable_esi);
+
+void ufshcd_mcq_config_esi(struct ufs_hba *hba, struct msi_msg *msg)
+{
+	ufshcd_writel(hba, msg->address_lo, REG_UFS_ESILBA);
+	ufshcd_writel(hba, msg->address_hi, REG_UFS_ESIUBA);
+}
+EXPORT_SYMBOL_GPL(ufshcd_mcq_config_esi);
+
+int ufshcd_mcq_init(struct ufs_hba *hba)
+{
+	struct Scsi_Host *host = hba->host;
+	struct ufs_hw_queue *hwq;
+	int ret, i;
+
+	ret = ufshcd_mcq_config_nr_queues(hba);
+	if (ret)
+		return ret;
+
+	ret = ufshcd_vops_mcq_config_resource(hba);
+	if (ret)
+		return ret;
+
+	ret = ufshcd_mcq_vops_op_runtime_config(hba);
+	if (ret) {
+		dev_err(hba->dev, "Operation runtime config failed, ret=%d\n",
+			ret);
+		return ret;
+	}
+	hba->uhq = devm_kzalloc(hba->dev,
+				hba->nr_hw_queues * sizeof(struct ufs_hw_queue),
+				GFP_KERNEL);
+	if (!hba->uhq) {
+		dev_err(hba->dev, "ufs hw queue memory allocation failed\n");
+		return -ENOMEM;
+	}
+
+	for (i = 0; i < hba->nr_hw_queues; i++) {
+		hwq = &hba->uhq[i];
+		hwq->max_entries = hba->nutrs;
+		spin_lock_init(&hwq->sq_lock);
+		spin_lock_init(&hwq->cq_lock);
+		mutex_init(&hwq->sq_mutex);
+	}
+
+	/* The very first HW queue serves device commands */
+	hba->dev_cmd_queue = &hba->uhq[0];
+	/* Give dev_cmd_queue the minimal number of entries */
+	hba->dev_cmd_queue->max_entries = MAX_DEV_CMD_ENTRIES;
+
+	host->host_tagset = 1;
+	return 0;
+}
+
+static int ufshcd_mcq_sq_stop(struct ufs_hba *hba, struct ufs_hw_queue *hwq)
+{
+	void __iomem *reg;
+	u32 id = hwq->id, val;
+	int err;
+
+	if (hba->quirks & UFSHCD_QUIRK_MCQ_BROKEN_RTC)
+		return -ETIMEDOUT;
+
+	writel(SQ_STOP, mcq_opr_base(hba, OPR_SQD, id) + REG_SQRTC);
+	reg = mcq_opr_base(hba, OPR_SQD, id) + REG_SQRTS;
+	err = read_poll_timeout(readl, val, val & SQ_STS, 20,
+				MCQ_POLL_US, false, reg);
+	if (err)
+		dev_err(hba->dev, "%s: failed. hwq-id=%d, err=%d\n",
+			__func__, id, err);
+	return err;
+}
+
+static int ufshcd_mcq_sq_start(struct ufs_hba *hba, struct ufs_hw_queue *hwq)
+{
+	void __iomem *reg;
+	u32 id = hwq->id, val;
+	int err;
+
+	if (hba->quirks & UFSHCD_QUIRK_MCQ_BROKEN_RTC)
+		return -ETIMEDOUT;
+
+	writel(SQ_START, mcq_opr_base(hba, OPR_SQD, id) + REG_SQRTC);
+	reg = mcq_opr_base(hba, OPR_SQD, id) + REG_SQRTS;
+	err = read_poll_timeout(readl, val, !(val & SQ_STS), 20,
+				MCQ_POLL_US, false, reg);
+	if (err)
+		dev_err(hba->dev, "%s: failed. hwq-id=%d, err=%d\n",
+			__func__, id, err);
+	return err;
+}
+
+/**
+ * ufshcd_mcq_sq_cleanup - Clean up submission queue resources
+ * associated with the pending command.
+ * @hba - per adapter instance.
+ * @task_tag - The command's task tag.
+ *
+ * Returns 0 for success; error code otherwise.
+ */
+int ufshcd_mcq_sq_cleanup(struct ufs_hba *hba, int task_tag)
+{
+	struct ufshcd_lrb *lrbp = &hba->lrb[task_tag];
+	struct scsi_cmnd *cmd = lrbp->cmd;
+	struct ufs_hw_queue *hwq;
+	void __iomem *reg, *opr_sqd_base;
+	u32 nexus, id, val;
+	int err;
+
+	if (hba->quirks & UFSHCD_QUIRK_MCQ_BROKEN_RTC)
+		return -ETIMEDOUT;
+
+	if (task_tag != hba->nutrs - UFSHCD_NUM_RESERVED) {
+		if (!cmd)
+			return -EINVAL;
+		hwq = ufshcd_mcq_req_to_hwq(hba, scsi_cmd_to_rq(cmd));
+	} else {
+		hwq = hba->dev_cmd_queue;
+	}
+
+	id = hwq->id;
+
+	mutex_lock(&hwq->sq_mutex);
+
+	/* stop the SQ fetching before working on it */
+	err = ufshcd_mcq_sq_stop(hba, hwq);
+	if (err)
+		goto unlock;
+
+	/* SQCTI = EXT_IID, IID, LUN, Task Tag */
+	nexus = lrbp->lun << 8 | task_tag;
+	opr_sqd_base = mcq_opr_base(hba, OPR_SQD, id);
+	writel(nexus, opr_sqd_base + REG_SQCTI);
+
+	/* SQRTCy.ICU = 1 */
+	writel(SQ_ICU, opr_sqd_base + REG_SQRTC);
+
+	/* Poll SQRTSy.CUS = 1. Return result from SQRTSy.RTC */
+	reg = opr_sqd_base + REG_SQRTS;
+	err = read_poll_timeout(readl, val, val & SQ_CUS, 20,
+				MCQ_POLL_US, false, reg);
+	if (err)
+		dev_err(hba->dev, "%s: failed. hwq=%d, tag=%d err=%ld\n",
+			__func__, id, task_tag,
+			FIELD_GET(SQ_ICU_ERR_CODE_MASK, readl(reg)));
+
+	if (ufshcd_mcq_sq_start(hba, hwq))
+		err = -ETIMEDOUT;
+
+unlock:
+	mutex_unlock(&hwq->sq_mutex);
+	return err;
+}
+
+/**
+ * ufshcd_mcq_nullify_sqe - Nullify the submission queue entry.
+ * Write the sqe's Command Type to 0xF. The host controller will not
+ * fetch any sqe with Command Type = 0xF.
+ *
+ * @utrd - UTP Transfer Request Descriptor to be nullified.
+ */
+static void ufshcd_mcq_nullify_sqe(struct utp_transfer_req_desc *utrd)
+{
+	u32 dword_0;
+
+	dword_0 = le32_to_cpu(utrd->header.dword_0);
+	dword_0 &= ~UPIU_COMMAND_TYPE_MASK;
+	dword_0 |= FIELD_PREP(UPIU_COMMAND_TYPE_MASK, 0xF);
+	utrd->header.dword_0 = cpu_to_le32(dword_0);
+}
+
+/**
+ * ufshcd_mcq_sqe_search - Search for the command in the submission queue
+ * If the command is in the submission queue and not issued to the device yet,
+ * nullify the sqe so the host controller will skip fetching the sqe.
+ *
+ * @hba - per adapter instance.
+ * @hwq - Hardware Queue to be searched.
+ * @task_tag - The command's task tag.
+ *
+ * Returns true if the SQE containing the command is present in the SQ
+ * (not fetched by the controller); returns false if the SQE is not in the SQ.
+ */
+static bool ufshcd_mcq_sqe_search(struct ufs_hba *hba,
+				  struct ufs_hw_queue *hwq, int task_tag)
+{
+	struct ufshcd_lrb *lrbp = &hba->lrb[task_tag];
+	struct utp_transfer_req_desc *utrd;
+	u32 mask = hwq->max_entries - 1;
+	__le64  cmd_desc_base_addr;
+	bool ret = false;
+	u64 addr, match;
+	u32 sq_head_slot;
+
+	if (hba->quirks & UFSHCD_QUIRK_MCQ_BROKEN_RTC)
+		return true;
+
+	mutex_lock(&hwq->sq_mutex);
+
+	ufshcd_mcq_sq_stop(hba, hwq);
+	sq_head_slot = ufshcd_mcq_get_sq_head_slot(hwq);
+	if (sq_head_slot == hwq->sq_tail_slot)
+		goto out;
+
+	cmd_desc_base_addr = lrbp->utr_descriptor_ptr->command_desc_base_addr;
+	addr = le64_to_cpu(cmd_desc_base_addr) & CQE_UCD_BA;
+
+	while (sq_head_slot != hwq->sq_tail_slot) {
+		utrd = hwq->sqe_base_addr +
+				sq_head_slot * sizeof(struct utp_transfer_req_desc);
+		match = le64_to_cpu(utrd->command_desc_base_addr) & CQE_UCD_BA;
+		if (addr == match) {
+			ufshcd_mcq_nullify_sqe(utrd);
+			ret = true;
+			goto out;
+		}
+		sq_head_slot = (sq_head_slot + 1) & mask;
+	}
+
+out:
+	ufshcd_mcq_sq_start(hba, hwq);
+	mutex_unlock(&hwq->sq_mutex);
+	return ret;
+}
+
+/**
+ * ufshcd_mcq_abort - Abort the command in MCQ.
+ * @cmd - The command to be aborted.
+ *
+ * Returns SUCCESS or FAILED error codes
+ */
+int ufshcd_mcq_abort(struct scsi_cmnd *cmd)
+{
+	struct Scsi_Host *host = cmd->device->host;
+	struct ufs_hba *hba = shost_priv(host);
+	int tag = scsi_cmd_to_rq(cmd)->tag;
+	struct ufshcd_lrb *lrbp = &hba->lrb[tag];
+	struct ufs_hw_queue *hwq;
+	int err = FAILED;
+
+	if (!ufshcd_cmd_inflight(lrbp->cmd)) {
+		dev_err(hba->dev,
+			"%s: skip abort. cmd at tag %d already completed.\n",
+			__func__, tag);
+		goto out;
+	}
+
+	/* Skip task abort in case previous aborts failed and report failure */
+	if (lrbp->req_abort_skip) {
+		dev_err(hba->dev, "%s: skip abort. tag %d failed earlier\n",
+			__func__, tag);
+		goto out;
+	}
+
+	hwq = ufshcd_mcq_req_to_hwq(hba, scsi_cmd_to_rq(cmd));
+
+	if (ufshcd_mcq_sqe_search(hba, hwq, tag)) {
+		/*
+		 * Failure. The command should not be "stuck" in SQ for
+		 * a long time which resulted in command being aborted.
+		 */
+		dev_err(hba->dev, "%s: cmd found in sq. hwq=%d, tag=%d\n",
+			__func__, hwq->id, tag);
+		goto out;
+	}
+
+	/*
+	 * The command is not in the submission queue, and it is not
+	 * in the completion queue either. Query the device to see if
+	 * the command is being processed in the device.
+	 */
+	if (ufshcd_try_to_abort_task(hba, tag)) {
+		dev_err(hba->dev, "%s: device abort failed %d\n", __func__, err);
+		lrbp->req_abort_skip = true;
+		goto out;
+	}
+
+	err = SUCCESS;
+	if (ufshcd_cmd_inflight(lrbp->cmd))
+		ufshcd_release_scsi_cmd(hba, lrbp);
+
+out:
+	return err;
+}
diff --git a/drivers/ufs/core/ufs-sysfs.c b/drivers/ufs/core/ufs-sysfs.c
index 53aea56..820ff90 100644
--- a/drivers/ufs/core/ufs-sysfs.c
+++ b/drivers/ufs/core/ufs-sysfs.c
@@ -10,6 +10,8 @@
 #include "ufs-sysfs.h"
 #include "ufshcd-priv.h"
 
+#include <trace/hooks/ufshcd.h>
+
 static const char *ufshcd_uic_link_state_to_string(
 			enum uic_link_state state)
 {
@@ -1234,8 +1236,7 @@ static ssize_t _pname##_show(struct device *dev,			\
 	struct scsi_device *sdev = to_scsi_device(dev);			\
 	struct ufs_hba *hba = shost_priv(sdev->host);			\
 	u8 lun = ufshcd_scsi_to_upiu_lun(sdev->lun);			\
-	if (!ufs_is_valid_unit_desc_lun(&hba->dev_info, lun,		\
-				_duname##_DESC_PARAM##_puname))		\
+	if (!ufs_is_valid_unit_desc_lun(&hba->dev_info, lun))		\
 		return -EINVAL;						\
 	return ufs_sysfs_read_desc_param(hba, QUERY_DESC_IDN_##_duname,	\
 		lun, _duname##_DESC_PARAM##_puname, buf, _size);	\
@@ -1286,9 +1287,27 @@ static struct attribute *ufs_sysfs_unit_descriptor[] = {
 	NULL,
 };
 
+static umode_t ufs_unit_descriptor_is_visible(struct kobject *kobj, struct attribute *attr, int n)
+{
+	struct device *dev = container_of(kobj, struct device, kobj);
+	struct scsi_device *sdev = to_scsi_device(dev);
+	u8 lun = ufshcd_scsi_to_upiu_lun(sdev->lun);
+	umode_t mode = attr->mode;
+
+	if (lun == UFS_UPIU_BOOT_WLUN || lun == UFS_UPIU_UFS_DEVICE_WLUN)
+		/* Boot and device WLUN have no unit descriptors */
+		mode = 0;
+	if (lun == UFS_UPIU_RPMB_WLUN && attr == &dev_attr_wb_buf_alloc_units.attr)
+		mode = 0;
+
+	return mode;
+}
+
+
 const struct attribute_group ufs_sysfs_unit_descriptor_group = {
 	.name = "unit_descriptor",
 	.attrs = ufs_sysfs_unit_descriptor,
+	.is_visible = ufs_unit_descriptor_is_visible,
 };
 
 static ssize_t dyn_cap_needed_attribute_show(struct device *dev,
@@ -1337,10 +1356,12 @@ void ufs_sysfs_add_nodes(struct device *dev)
 	int ret;
 
 	ret = sysfs_create_groups(&dev->kobj, ufs_sysfs_groups);
-	if (ret)
+	if (ret) {
 		dev_err(dev,
 			"%s: sysfs groups creation failed (err = %d)\n",
 			__func__, ret);
+		return;
+	}
 }
 
 void ufs_sysfs_remove_nodes(struct device *dev)
diff --git a/drivers/ufs/core/ufs_bsg.c b/drivers/ufs/core/ufs_bsg.c
index b99e3f3..0d38e7f 100644
--- a/drivers/ufs/core/ufs_bsg.c
+++ b/drivers/ufs/core/ufs_bsg.c
@@ -6,6 +6,7 @@
  */
 
 #include <linux/bsg-lib.h>
+#include <linux/dma-mapping.h>
 #include <scsi/scsi.h>
 #include <scsi/scsi_host.h>
 #include "ufs_bsg.h"
@@ -16,31 +17,11 @@ static int ufs_bsg_get_query_desc_size(struct ufs_hba *hba, int *desc_len,
 				       struct utp_upiu_query *qr)
 {
 	int desc_size = be16_to_cpu(qr->length);
-	int desc_id = qr->idn;
 
 	if (desc_size <= 0)
 		return -EINVAL;
 
-	ufshcd_map_desc_id_to_length(hba, desc_id, desc_len);
-	if (!*desc_len)
-		return -EINVAL;
-
-	*desc_len = min_t(int, *desc_len, desc_size);
-
-	return 0;
-}
-
-static int ufs_bsg_verify_query_size(struct ufs_hba *hba,
-				     unsigned int request_len,
-				     unsigned int reply_len)
-{
-	int min_req_len = sizeof(struct ufs_bsg_request);
-	int min_rsp_len = sizeof(struct ufs_bsg_reply);
-
-	if (min_req_len > request_len || min_rsp_len > reply_len) {
-		dev_err(hba->dev, "not enough space assigned\n");
-		return -EINVAL;
-	}
+	*desc_len = min_t(int, QUERY_DESC_MAX_SIZE, desc_size);
 
 	return 0;
 }
@@ -83,23 +64,84 @@ static int ufs_bsg_alloc_desc_buffer(struct ufs_hba *hba, struct bsg_job *job,
 	return 0;
 }
 
+static int ufs_bsg_exec_advanced_rpmb_req(struct ufs_hba *hba, struct bsg_job *job)
+{
+	struct ufs_rpmb_request *rpmb_request = job->request;
+	struct ufs_rpmb_reply *rpmb_reply = job->reply;
+	struct bsg_buffer *payload = NULL;
+	enum dma_data_direction dir;
+	struct scatterlist *sg_list = NULL;
+	int rpmb_req_type;
+	int sg_cnt = 0;
+	int ret;
+	int data_len;
+
+	if (hba->ufs_version < ufshci_version(4, 0) || !hba->dev_info.b_advanced_rpmb_en ||
+	    !(hba->capabilities & MASK_EHSLUTRD_SUPPORTED))
+		return -EINVAL;
+
+	if (rpmb_request->ehs_req.length != 2 || rpmb_request->ehs_req.ehs_type != 1)
+		return -EINVAL;
+
+	rpmb_req_type = be16_to_cpu(rpmb_request->ehs_req.meta.req_resp_type);
+
+	switch (rpmb_req_type) {
+	case UFS_RPMB_WRITE_KEY:
+	case UFS_RPMB_READ_CNT:
+	case UFS_RPMB_PURGE_ENABLE:
+		dir = DMA_NONE;
+		break;
+	case UFS_RPMB_WRITE:
+	case UFS_RPMB_SEC_CONF_WRITE:
+		dir = DMA_TO_DEVICE;
+		break;
+	case UFS_RPMB_READ:
+	case UFS_RPMB_SEC_CONF_READ:
+	case UFS_RPMB_PURGE_STATUS_READ:
+		dir = DMA_FROM_DEVICE;
+		break;
+	default:
+		return -EINVAL;
+	}
+
+	if (dir != DMA_NONE) {
+		payload = &job->request_payload;
+		if (!payload || !payload->payload_len || !payload->sg_cnt)
+			return -EINVAL;
+
+		sg_cnt = dma_map_sg(hba->host->dma_dev, payload->sg_list, payload->sg_cnt, dir);
+		if (unlikely(!sg_cnt))
+			return -ENOMEM;
+		sg_list = payload->sg_list;
+		data_len = payload->payload_len;
+	}
+
+	ret = ufshcd_advanced_rpmb_req_handler(hba, &rpmb_request->bsg_request.upiu_req,
+				   &rpmb_reply->bsg_reply.upiu_rsp, &rpmb_request->ehs_req,
+				   &rpmb_reply->ehs_rsp, sg_cnt, sg_list, dir);
+
+	if (dir != DMA_NONE) {
+		dma_unmap_sg(hba->host->dma_dev, payload->sg_list, payload->sg_cnt, dir);
+
+		if (!ret)
+			rpmb_reply->bsg_reply.reply_payload_rcv_len = data_len;
+	}
+
+	return ret;
+}
+
 static int ufs_bsg_request(struct bsg_job *job)
 {
 	struct ufs_bsg_request *bsg_request = job->request;
 	struct ufs_bsg_reply *bsg_reply = job->reply;
 	struct ufs_hba *hba = shost_priv(dev_to_shost(job->dev->parent));
-	unsigned int req_len = job->request_len;
-	unsigned int reply_len = job->reply_len;
 	struct uic_command uc = {};
 	int msgcode;
-	uint8_t *desc_buff = NULL;
+	uint8_t *buff = NULL;
 	int desc_len = 0;
 	enum query_opcode desc_op = UPIU_QUERY_OPCODE_NOP;
 	int ret;
-
-	ret = ufs_bsg_verify_query_size(hba, req_len, reply_len);
-	if (ret)
-		goto out;
+	bool rpmb = false;
 
 	bsg_reply->reply_payload_rcv_len = 0;
 
@@ -109,34 +151,39 @@ static int ufs_bsg_request(struct bsg_job *job)
 	switch (msgcode) {
 	case UPIU_TRANSACTION_QUERY_REQ:
 		desc_op = bsg_request->upiu_req.qr.opcode;
-		ret = ufs_bsg_alloc_desc_buffer(hba, job, &desc_buff,
-						&desc_len, desc_op);
-		if (ret) {
-			ufshcd_rpm_put_sync(hba);
+		ret = ufs_bsg_alloc_desc_buffer(hba, job, &buff, &desc_len, desc_op);
+		if (ret)
 			goto out;
-		}
-
 		fallthrough;
 	case UPIU_TRANSACTION_NOP_OUT:
 	case UPIU_TRANSACTION_TASK_REQ:
 		ret = ufshcd_exec_raw_upiu_cmd(hba, &bsg_request->upiu_req,
 					       &bsg_reply->upiu_rsp, msgcode,
-					       desc_buff, &desc_len, desc_op);
+					       buff, &desc_len, desc_op);
 		if (ret)
-			dev_err(hba->dev,
-				"exe raw upiu: error code %d\n", ret);
-
+			dev_err(hba->dev, "exe raw upiu: error code %d\n", ret);
+		else if (desc_op == UPIU_QUERY_OPCODE_READ_DESC && desc_len) {
+			bsg_reply->reply_payload_rcv_len =
+				sg_copy_from_buffer(job->request_payload.sg_list,
+						    job->request_payload.sg_cnt,
+						    buff, desc_len);
+		}
 		break;
 	case UPIU_TRANSACTION_UIC_CMD:
 		memcpy(&uc, &bsg_request->upiu_req.uc, UIC_CMD_SIZE);
 		ret = ufshcd_send_uic_cmd(hba, &uc);
 		if (ret)
-			dev_err(hba->dev,
-				"send uic cmd: error code %d\n", ret);
+			dev_err(hba->dev, "send uic cmd: error code %d\n", ret);
 
 		memcpy(&bsg_reply->upiu_rsp.uc, &uc, UIC_CMD_SIZE);
 
 		break;
+	case UPIU_TRANSACTION_ARPMB_CMD:
+		rpmb = true;
+		ret = ufs_bsg_exec_advanced_rpmb_req(hba, job);
+		if (ret)
+			dev_err(hba->dev, "ARPMB OP failed: error code  %d\n", ret);
+		break;
 	default:
 		ret = -ENOTSUPP;
 		dev_err(hba->dev, "unsupported msgcode 0x%x\n", msgcode);
@@ -144,22 +191,11 @@ static int ufs_bsg_request(struct bsg_job *job)
 		break;
 	}
 
-	ufshcd_rpm_put_sync(hba);
-
-	if (!desc_buff)
-		goto out;
-
-	if (desc_op == UPIU_QUERY_OPCODE_READ_DESC && desc_len)
-		bsg_reply->reply_payload_rcv_len =
-			sg_copy_from_buffer(job->request_payload.sg_list,
-					    job->request_payload.sg_cnt,
-					    desc_buff, desc_len);
-
-	kfree(desc_buff);
-
 out:
+	ufshcd_rpm_put_sync(hba);
+	kfree(buff);
 	bsg_reply->result = ret;
-	job->reply_len = sizeof(struct ufs_bsg_reply);
+	job->reply_len = !rpmb ? sizeof(struct ufs_bsg_reply) : sizeof(struct ufs_rpmb_reply);
 	/* complete the job here only if no error */
 	if (ret == 0)
 		bsg_job_done(job, ret, bsg_reply->reply_payload_rcv_len);
diff --git a/drivers/ufs/core/ufshcd-crypto.c b/drivers/ufs/core/ufshcd-crypto.c
index 198360f..c1a8354 100644
--- a/drivers/ufs/core/ufshcd-crypto.c
+++ b/drivers/ufs/core/ufshcd-crypto.c
@@ -123,6 +123,10 @@ bool ufshcd_crypto_enable(struct ufs_hba *hba)
 
 	/* Reset might clear all keys, so reprogram all the keys. */
 	blk_crypto_reprogram_all_keys(&hba->crypto_profile);
+
+	if (hba->android_quirks & UFSHCD_ANDROID_QUIRK_BROKEN_CRYPTO_ENABLE)
+		return false;
+
 	return true;
 }
 
@@ -159,6 +163,9 @@ int ufshcd_hba_init_crypto_capabilities(struct ufs_hba *hba)
 	int err = 0;
 	enum blk_crypto_mode_num blk_mode_num;
 
+	if (hba->android_quirks & UFSHCD_ANDROID_QUIRK_CUSTOM_CRYPTO_PROFILE)
+		return 0;
+
 	/*
 	 * Don't use crypto if either the hardware doesn't advertise the
 	 * standard crypto capability bit *or* if the vendor specific driver
@@ -190,6 +197,7 @@ int ufshcd_hba_init_crypto_capabilities(struct ufs_hba *hba)
 	hba->crypto_profile.ll_ops = ufshcd_crypto_ops;
 	/* UFS only supports 8 bytes for any DUN */
 	hba->crypto_profile.max_dun_bytes_supported = 8;
+	hba->crypto_profile.key_types_supported = BLK_CRYPTO_KEY_TYPE_STANDARD;
 	hba->crypto_profile.dev = hba->dev;
 
 	/*
@@ -228,9 +236,10 @@ void ufshcd_init_crypto(struct ufs_hba *hba)
 	if (!(hba->caps & UFSHCD_CAP_CRYPTO))
 		return;
 
-	/* Clear all keyslots - the number of keyslots is (CFGC + 1) */
-	for (slot = 0; slot < hba->crypto_capabilities.config_count + 1; slot++)
-		ufshcd_clear_keyslot(hba, slot);
+	/* Clear all keyslots */
+	for (slot = 0; slot < hba->crypto_profile.num_slots; slot++)
+		hba->crypto_profile.ll_ops.keyslot_evict(&hba->crypto_profile,
+							 NULL, slot);
 }
 
 void ufshcd_crypto_register(struct ufs_hba *hba, struct request_queue *q)
diff --git a/drivers/ufs/core/ufshcd-crypto.h b/drivers/ufs/core/ufshcd-crypto.h
index 504cc84..9ceae18 100644
--- a/drivers/ufs/core/ufshcd-crypto.h
+++ b/drivers/ufs/core/ufshcd-crypto.h
@@ -37,6 +37,19 @@ ufshcd_prepare_req_desc_hdr_crypto(struct ufshcd_lrb *lrbp, u32 *dword_0,
 	}
 }
 
+static inline void ufshcd_crypto_clear_prdt(struct ufs_hba *hba,
+					    struct ufshcd_lrb *lrbp)
+{
+	if (!(hba->android_quirks & UFSHCD_ANDROID_QUIRK_KEYS_IN_PRDT))
+		return;
+
+	if (!(scsi_cmd_to_rq(lrbp->cmd)->crypt_ctx))
+		return;
+
+	memzero_explicit(lrbp->ucd_prdt_ptr,
+			 ufshcd_sg_entry_size(hba) * scsi_sg_count(lrbp->cmd));
+}
+
 bool ufshcd_crypto_enable(struct ufs_hba *hba);
 
 int ufshcd_hba_init_crypto_capabilities(struct ufs_hba *hba);
@@ -54,6 +67,9 @@ static inline void
 ufshcd_prepare_req_desc_hdr_crypto(struct ufshcd_lrb *lrbp, u32 *dword_0,
 				   u32 *dword_1, u32 *dword_3) { }
 
+static inline void ufshcd_crypto_clear_prdt(struct ufs_hba *hba,
+					    struct ufshcd_lrb *lrbp) { }
+
 static inline bool ufshcd_crypto_enable(struct ufs_hba *hba)
 {
 	return false;
diff --git a/drivers/ufs/core/ufshcd-priv.h b/drivers/ufs/core/ufshcd-priv.h
index f68ca33..2541a52 100644
--- a/drivers/ufs/core/ufshcd-priv.h
+++ b/drivers/ufs/core/ufshcd-priv.h
@@ -61,7 +61,30 @@ int ufshcd_query_attr(struct ufs_hba *hba, enum query_opcode opcode,
 int ufshcd_query_flag(struct ufs_hba *hba, enum query_opcode opcode,
 	enum flag_idn idn, u8 index, bool *flag_res);
 void ufshcd_auto_hibern8_update(struct ufs_hba *hba, u32 ahit);
+void ufshcd_compl_one_cqe(struct ufs_hba *hba, int task_tag,
+			  struct cq_entry *cqe);
+int ufshcd_mcq_init(struct ufs_hba *hba);
+int ufshcd_mcq_decide_queue_depth(struct ufs_hba *hba);
+int ufshcd_mcq_memory_alloc(struct ufs_hba *hba);
+void ufshcd_mcq_make_queues_operational(struct ufs_hba *hba);
+void ufshcd_mcq_config_mac(struct ufs_hba *hba, u32 max_active_cmds);
+void ufshcd_mcq_select_mcq_mode(struct ufs_hba *hba);
+u32 ufshcd_mcq_read_cqis(struct ufs_hba *hba, int i);
+void ufshcd_mcq_write_cqis(struct ufs_hba *hba, u32 val, int i);
+struct ufs_hw_queue *ufshcd_mcq_req_to_hwq(struct ufs_hba *hba,
+					   struct request *req);
+unsigned long ufshcd_mcq_poll_cqe_lock(struct ufs_hba *hba,
+				       struct ufs_hw_queue *hwq);
+void ufshcd_mcq_compl_all_cqes_lock(struct ufs_hba *hba,
+				    struct ufs_hw_queue *hwq);
+bool ufshcd_cmd_inflight(struct scsi_cmnd *cmd);
+int ufshcd_mcq_sq_cleanup(struct ufs_hba *hba, int task_tag);
+int ufshcd_mcq_abort(struct scsi_cmnd *cmd);
+int ufshcd_try_to_abort_task(struct ufs_hba *hba, int tag);
+void ufshcd_release_scsi_cmd(struct ufs_hba *hba,
+			     struct ufshcd_lrb *lrbp);
 
+#define UFSHCD_MCQ_IO_QUEUE_OFFSET	1
 #define SD_ASCII_STD true
 #define SD_RAW false
 int ufshcd_read_string_desc(struct ufs_hba *hba, u8 desc_index,
@@ -70,9 +93,6 @@ int ufshcd_read_string_desc(struct ufs_hba *hba, u8 desc_index,
 int ufshcd_hold(struct ufs_hba *hba, bool async);
 void ufshcd_release(struct ufs_hba *hba);
 
-void ufshcd_map_desc_id_to_length(struct ufs_hba *hba, enum desc_idn desc_id,
-				  int *desc_length);
-
 int ufshcd_send_uic_cmd(struct ufs_hba *hba, struct uic_command *uic_cmd);
 
 int ufshcd_exec_raw_upiu_cmd(struct ufs_hba *hba,
@@ -226,6 +246,53 @@ static inline void ufshcd_vops_config_scaling_param(struct ufs_hba *hba,
 		hba->vops->config_scaling_param(hba, p, data);
 }
 
+static inline void ufshcd_vops_reinit_notify(struct ufs_hba *hba)
+{
+	if (hba->vops && hba->vops->reinit_notify)
+		hba->vops->reinit_notify(hba);
+}
+
+static inline int ufshcd_vops_mcq_config_resource(struct ufs_hba *hba)
+{
+	if (hba->vops && hba->vops->mcq_config_resource)
+		return hba->vops->mcq_config_resource(hba);
+
+	return -EOPNOTSUPP;
+}
+
+static inline int ufshcd_mcq_vops_get_hba_mac(struct ufs_hba *hba)
+{
+	if (hba->vops && hba->vops->get_hba_mac)
+		return hba->vops->get_hba_mac(hba);
+
+	return -EOPNOTSUPP;
+}
+
+static inline int ufshcd_mcq_vops_op_runtime_config(struct ufs_hba *hba)
+{
+	if (hba->vops && hba->vops->op_runtime_config)
+		return hba->vops->op_runtime_config(hba);
+
+	return -EOPNOTSUPP;
+}
+
+static inline int ufshcd_vops_get_outstanding_cqs(struct ufs_hba *hba,
+						  unsigned long *ocqs)
+{
+	if (hba->vops && hba->vops->get_outstanding_cqs)
+		return hba->vops->get_outstanding_cqs(hba, ocqs);
+
+	return -EOPNOTSUPP;
+}
+
+static inline int ufshcd_mcq_vops_config_esi(struct ufs_hba *hba)
+{
+	if (hba->vops && hba->vops->config_esi)
+		return hba->vops->config_esi(hba);
+
+	return -EOPNOTSUPP;
+}
+
 extern const struct ufs_pm_lvl_states ufs_pm_lvl_states[];
 
 /**
@@ -293,17 +360,61 @@ static inline int ufshcd_rpm_put(struct ufs_hba *hba)
  * @lun: LU number to check
  * @return: true if the lun has a matching unit descriptor, false otherwise
  */
-static inline bool ufs_is_valid_unit_desc_lun(struct ufs_dev_info *dev_info,
-		u8 lun, u8 param_offset)
+static inline bool ufs_is_valid_unit_desc_lun(struct ufs_dev_info *dev_info, u8 lun)
 {
 	if (!dev_info || !dev_info->max_lu_supported) {
 		pr_err("Max General LU supported by UFS isn't initialized\n");
 		return false;
 	}
-	/* WB is available only for the logical unit from 0 to 7 */
-	if (param_offset == UNIT_DESC_PARAM_WB_BUF_ALLOC_UNITS)
-		return lun < UFS_UPIU_MAX_WB_LUN_ID;
 	return lun == UFS_UPIU_RPMB_WLUN || (lun < dev_info->max_lu_supported);
 }
 
+static inline void ufshcd_inc_sq_tail(struct ufs_hw_queue *q)
+{
+	u32 mask = q->max_entries - 1;
+	u32 val;
+
+	q->sq_tail_slot = (q->sq_tail_slot + 1) & mask;
+	val = q->sq_tail_slot * sizeof(struct utp_transfer_req_desc);
+	writel(val, q->mcq_sq_tail);
+}
+
+static inline void ufshcd_mcq_update_cq_tail_slot(struct ufs_hw_queue *q)
+{
+	u32 val = readl(q->mcq_cq_tail);
+
+	q->cq_tail_slot = val / sizeof(struct cq_entry);
+}
+
+static inline bool ufshcd_mcq_is_cq_empty(struct ufs_hw_queue *q)
+{
+	return q->cq_head_slot == q->cq_tail_slot;
+}
+
+static inline void ufshcd_mcq_inc_cq_head_slot(struct ufs_hw_queue *q)
+{
+	q->cq_head_slot++;
+	if (q->cq_head_slot == q->max_entries)
+		q->cq_head_slot = 0;
+}
+
+static inline void ufshcd_mcq_update_cq_head(struct ufs_hw_queue *q)
+{
+	writel(q->cq_head_slot * sizeof(struct cq_entry), q->mcq_cq_head);
+}
+
+static inline struct cq_entry *ufshcd_mcq_cur_cqe(struct ufs_hw_queue *q)
+{
+	struct cq_entry *cqe = q->cqe_base_addr;
+
+	return cqe + q->cq_head_slot;
+}
+
+static inline u32 ufshcd_mcq_get_sq_head_slot(struct ufs_hw_queue *q)
+{
+	u32 val = readl(q->mcq_sq_head);
+
+	return val / sizeof(struct utp_transfer_req_desc);
+}
+
 #endif /* _UFSHCD_PRIV_H_ */
diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c
index 977bd4b..646a1e9 100644
--- a/drivers/ufs/core/ufshcd.c
+++ b/drivers/ufs/core/ufshcd.c
@@ -40,9 +40,18 @@
 #define CREATE_TRACE_POINTS
 #include <trace/events/ufs.h>
 
+#undef CREATE_TRACE_POINTS
+#include <trace/hooks/ufshcd.h>
+
 #define UFSHCD_ENABLE_INTRS	(UTP_TRANSFER_REQ_COMPL |\
 				 UTP_TASK_REQ_COMPL |\
 				 UFSHCD_ERROR_MASK)
+
+#define UFSHCD_ENABLE_MCQ_INTRS	(UTP_TASK_REQ_COMPL |\
+				 UFSHCD_ERROR_MASK |\
+				 MCQ_CQ_EVENT_STATUS)
+
+
 /* UIC command timeout, unit: ms */
 #define UIC_CMD_TIMEOUT	500
 
@@ -56,6 +65,9 @@
 /* Query request timeout */
 #define QUERY_REQ_TIMEOUT 1500 /* 1.5 seconds */
 
+/* Advanced RPMB request timeout */
+#define ADVANCED_RPMB_REQ_TIMEOUT  3000 /* 3 seconds */
+
 /* Task management command timeout */
 #define TM_CMD_TIMEOUT	100 /* msecs */
 
@@ -89,6 +101,33 @@
 /* Polling time to wait for fDeviceInit */
 #define FDEVICEINIT_COMPL_TIMEOUT 1500 /* millisecs */
 
+/* UFSHC 4.0 compliant HC support this mode, refer param_set_mcq_mode() */
+static bool use_mcq_mode = true;
+
+static bool is_mcq_supported(struct ufs_hba *hba)
+{
+	return hba->mcq_sup && use_mcq_mode;
+}
+
+static int param_set_mcq_mode(const char *val, const struct kernel_param *kp)
+{
+	int ret;
+
+	ret = param_set_bool(val, kp);
+	if (ret)
+		return ret;
+
+	return 0;
+}
+
+static const struct kernel_param_ops mcq_mode_ops = {
+	.set = param_set_mcq_mode,
+	.get = param_get_bool,
+};
+
+module_param_cb(use_mcq_mode, &mcq_mode_ops, &use_mcq_mode, 0644);
+MODULE_PARM_DESC(use_mcq_mode, "Control MCQ mode for controllers starting from UFSHCI 4.0. 1 - enable MCQ, 0 - disable MCQ. MCQ is enabled by default");
+
 #define ufshcd_toggle_vreg(_dev, _vreg, _on)				\
 	({                                                              \
 		int _ret;                                               \
@@ -137,7 +176,6 @@ EXPORT_SYMBOL_GPL(ufshcd_dump_regs);
 enum {
 	UFSHCD_MAX_CHANNEL	= 0,
 	UFSHCD_MAX_ID		= 1,
-	UFSHCD_NUM_RESERVED	= 1,
 	UFSHCD_CMD_PER_LUN	= 32 - UFSHCD_NUM_RESERVED,
 	UFSHCD_CAN_QUEUE	= 32 - UFSHCD_NUM_RESERVED,
 };
@@ -265,12 +303,20 @@ static int ufshcd_setup_hba_vreg(struct ufs_hba *hba, bool on);
 static int ufshcd_setup_vreg(struct ufs_hba *hba, bool on);
 static inline int ufshcd_config_vreg_hpm(struct ufs_hba *hba,
 					 struct ufs_vreg *vreg);
-static int ufshcd_try_to_abort_task(struct ufs_hba *hba, int tag);
 static void ufshcd_wb_toggle_buf_flush_during_h8(struct ufs_hba *hba,
 						 bool enable);
 static void ufshcd_hba_vreg_set_lpm(struct ufs_hba *hba);
 static void ufshcd_hba_vreg_set_hpm(struct ufs_hba *hba);
 
+static inline int ufshcd_use_mcq_hooks(struct ufs_hba *hba)
+{
+	bool mcq_hooks = false;
+
+	trace_android_vh_ufs_use_mcq_hooks(hba, &mcq_hooks);
+
+	return mcq_hooks;
+}
+
 static inline void ufshcd_enable_irq(struct ufs_hba *hba)
 {
 	if (!hba->is_irq_enabled) {
@@ -346,6 +392,8 @@ static void ufshcd_add_tm_upiu_trace(struct ufs_hba *hba, unsigned int tag,
 {
 	struct utp_task_req_desc *descp = &hba->utmrdl_base_addr[tag];
 
+	trace_android_vh_ufs_send_tm_command(hba, tag, (int)str_t);
+
 	if (!trace_ufshcd_upiu_enabled())
 		return;
 
@@ -367,6 +415,8 @@ static void ufshcd_add_uic_command_trace(struct ufs_hba *hba,
 {
 	u32 cmd;
 
+	trace_android_vh_ufs_send_uic_command(hba, ucmd, (int)str_t);
+
 	if (!trace_ufshcd_uic_command_enabled())
 		return;
 
@@ -386,7 +436,9 @@ static void ufshcd_add_command_trace(struct ufs_hba *hba, unsigned int tag,
 {
 	u64 lba = 0;
 	u8 opcode = 0, group_id = 0;
-	u32 intr, doorbell;
+	u32 doorbell = 0;
+	u32 intr;
+	int hwq_id = -1;
 	struct ufshcd_lrb *lrbp = &hba->lrb[tag];
 	struct scsi_cmnd *cmd = lrbp->cmd;
 	struct request *rq = scsi_cmd_to_rq(cmd);
@@ -420,9 +472,16 @@ static void ufshcd_add_command_trace(struct ufs_hba *hba, unsigned int tag,
 	}
 
 	intr = ufshcd_readl(hba, REG_INTERRUPT_STATUS);
-	doorbell = ufshcd_readl(hba, REG_UTP_TRANSFER_REQ_DOOR_BELL);
+
+	if (is_mcq_enabled(hba)) {
+		struct ufs_hw_queue *hwq = ufshcd_mcq_req_to_hwq(hba, rq);
+
+		hwq_id = hwq->id;
+	} else {
+		doorbell = ufshcd_readl(hba, REG_UTP_TRANSFER_REQ_DOOR_BELL);
+	}
 	trace_ufshcd_command(dev_name(hba->dev), str_t, tag,
-			doorbell, transfer_len, intr, lba, opcode, group_id);
+			doorbell, hwq_id, transfer_len, intr, lba, opcode, group_id);
 }
 
 static void ufshcd_print_clk_freqs(struct ufs_hba *hba)
@@ -486,6 +545,9 @@ static void ufshcd_print_evt_hist(struct ufs_hba *hba)
 	ufshcd_print_evt(hba, UFS_EVT_RESUME_ERR, "resume_fail");
 	ufshcd_print_evt(hba, UFS_EVT_SUSPEND_ERR,
 			 "suspend_fail");
+	ufshcd_print_evt(hba, UFS_EVT_WL_RES_ERR, "wlun resume_fail");
+	ufshcd_print_evt(hba, UFS_EVT_WL_SUSP_ERR,
+			 "wlun suspend_fail");
 	ufshcd_print_evt(hba, UFS_EVT_DEV_RESET, "dev_reset");
 	ufshcd_print_evt(hba, UFS_EVT_HOST_RESET, "host_reset");
 	ufshcd_print_evt(hba, UFS_EVT_ABORT, "task_abort");
@@ -494,48 +556,66 @@ static void ufshcd_print_evt_hist(struct ufs_hba *hba)
 }
 
 static
-void ufshcd_print_trs(struct ufs_hba *hba, unsigned long bitmap, bool pr_prdt)
+void ufshcd_print_tr(struct ufs_hba *hba, int tag, bool pr_prdt)
 {
 	const struct ufshcd_lrb *lrbp;
 	int prdt_length;
-	int tag;
 
-	for_each_set_bit(tag, &bitmap, hba->nutrs) {
-		lrbp = &hba->lrb[tag];
+	lrbp = &hba->lrb[tag];
 
-		dev_err(hba->dev, "UPIU[%d] - issue time %lld us\n",
-				tag, div_u64(lrbp->issue_time_stamp_local_clock, 1000));
-		dev_err(hba->dev, "UPIU[%d] - complete time %lld us\n",
-				tag, div_u64(lrbp->compl_time_stamp_local_clock, 1000));
-		dev_err(hba->dev,
-			"UPIU[%d] - Transfer Request Descriptor phys@0x%llx\n",
-			tag, (u64)lrbp->utrd_dma_addr);
+	dev_err(hba->dev, "UPIU[%d] - issue time %lld us\n",
+			tag, div_u64(lrbp->issue_time_stamp_local_clock, 1000));
+	dev_err(hba->dev, "UPIU[%d] - complete time %lld us\n",
+			tag, div_u64(lrbp->compl_time_stamp_local_clock, 1000));
+	dev_err(hba->dev,
+		"UPIU[%d] - Transfer Request Descriptor phys@0x%llx\n",
+		tag, (u64)lrbp->utrd_dma_addr);
 
-		ufshcd_hex_dump("UPIU TRD: ", lrbp->utr_descriptor_ptr,
-				sizeof(struct utp_transfer_req_desc));
-		dev_err(hba->dev, "UPIU[%d] - Request UPIU phys@0x%llx\n", tag,
-			(u64)lrbp->ucd_req_dma_addr);
-		ufshcd_hex_dump("UPIU REQ: ", lrbp->ucd_req_ptr,
-				sizeof(struct utp_upiu_req));
-		dev_err(hba->dev, "UPIU[%d] - Response UPIU phys@0x%llx\n", tag,
-			(u64)lrbp->ucd_rsp_dma_addr);
-		ufshcd_hex_dump("UPIU RSP: ", lrbp->ucd_rsp_ptr,
-				sizeof(struct utp_upiu_rsp));
+	ufshcd_hex_dump("UPIU TRD: ", lrbp->utr_descriptor_ptr,
+			sizeof(struct utp_transfer_req_desc));
+	dev_err(hba->dev, "UPIU[%d] - Request UPIU phys@0x%llx\n", tag,
+		(u64)lrbp->ucd_req_dma_addr);
+	ufshcd_hex_dump("UPIU REQ: ", lrbp->ucd_req_ptr,
+			sizeof(struct utp_upiu_req));
+	dev_err(hba->dev, "UPIU[%d] - Response UPIU phys@0x%llx\n", tag,
+		(u64)lrbp->ucd_rsp_dma_addr);
+	ufshcd_hex_dump("UPIU RSP: ", lrbp->ucd_rsp_ptr,
+			sizeof(struct utp_upiu_rsp));
 
-		prdt_length = le16_to_cpu(
-			lrbp->utr_descriptor_ptr->prd_table_length);
-		if (hba->quirks & UFSHCD_QUIRK_PRDT_BYTE_GRAN)
-			prdt_length /= sizeof(struct ufshcd_sg_entry);
+	prdt_length = le16_to_cpu(
+		lrbp->utr_descriptor_ptr->prd_table_length);
+	if (hba->quirks & UFSHCD_QUIRK_PRDT_BYTE_GRAN)
+		prdt_length /= ufshcd_sg_entry_size(hba);
 
-		dev_err(hba->dev,
-			"UPIU[%d] - PRDT - %d entries  phys@0x%llx\n",
-			tag, prdt_length,
-			(u64)lrbp->ucd_prdt_dma_addr);
+	dev_err(hba->dev,
+		"UPIU[%d] - PRDT - %d entries  phys@0x%llx\n",
+		tag, prdt_length,
+		(u64)lrbp->ucd_prdt_dma_addr);
 
-		if (pr_prdt)
-			ufshcd_hex_dump("UPIU PRDT: ", lrbp->ucd_prdt_ptr,
-				sizeof(struct ufshcd_sg_entry) * prdt_length);
-	}
+	if (pr_prdt)
+		ufshcd_hex_dump("UPIU PRDT: ", lrbp->ucd_prdt_ptr,
+			ufshcd_sg_entry_size(hba) * prdt_length);
+}
+
+static bool ufshcd_print_tr_iter(struct request *req, void *priv)
+{
+	struct scsi_device *sdev = req->q->queuedata;
+	struct Scsi_Host *shost = sdev->host;
+	struct ufs_hba *hba = shost_priv(shost);
+
+	ufshcd_print_tr(hba, req->tag, *(bool *)priv);
+
+	return true;
+}
+
+/**
+ * ufshcd_print_trs_all - print trs for all started requests.
+ * @hba: per-adapter instance.
+ * @pr_prdt: need to print prdt or not.
+ */
+static void ufshcd_print_trs_all(struct ufs_hba *hba, bool pr_prdt)
+{
+	blk_mq_tagset_busy_iter(&hba->host->tag_set, ufshcd_print_tr_iter, &pr_prdt);
 }
 
 static void ufshcd_print_tmrs(struct ufs_hba *hba, unsigned long bitmap)
@@ -737,12 +817,17 @@ static inline bool ufshcd_is_device_present(struct ufs_hba *hba)
 /**
  * ufshcd_get_tr_ocs - Get the UTRD Overall Command Status
  * @lrbp: pointer to local command reference block
+ * @cqe: pointer to the completion queue entry
  *
  * This function is used to get the OCS field from UTRD
  * Returns the OCS field in the UTRD
  */
-static enum utp_ocs ufshcd_get_tr_ocs(struct ufshcd_lrb *lrbp)
+static enum utp_ocs ufshcd_get_tr_ocs(struct ufshcd_lrb *lrbp,
+				      struct cq_entry *cqe)
 {
+	if (cqe)
+		return le32_to_cpu(cqe->status) & MASK_OCS;
+
 	return le32_to_cpu(lrbp->utr_descriptor_ptr->header.dword_2) & MASK_OCS;
 }
 
@@ -1118,6 +1203,12 @@ static u32 ufshcd_pending_cmds(struct ufs_hba *hba)
 	return pending;
 }
 
+/*
+ * Wait until all pending SCSI commands and TMFs have finished or the timeout
+ * has expired.
+ *
+ * Return: 0 upon success; -EBUSY upon timeout.
+ */
 static int ufshcd_wait_for_doorbell_clr(struct ufs_hba *hba,
 					u64 wait_timeout_us)
 {
@@ -1151,7 +1242,7 @@ static int ufshcd_wait_for_doorbell_clr(struct ufs_hba *hba,
 		}
 
 		spin_unlock_irqrestore(hba->host->host_lock, flags);
-		schedule();
+		io_schedule_timeout(msecs_to_jiffies(20));
 		if (ktime_to_us(ktime_sub(ktime_get(), start)) >
 		    wait_timeout_us) {
 			timeout = true;
@@ -1222,9 +1313,14 @@ static int ufshcd_scale_gear(struct ufs_hba *hba, bool scale_up)
 	return ret;
 }
 
-static int ufshcd_clock_scaling_prepare(struct ufs_hba *hba)
+/*
+ * Wait until all pending SCSI commands and TMFs have finished or the timeout
+ * has expired.
+ *
+ * Return: 0 upon success; -EBUSY upon timeout.
+ */
+static int ufshcd_clock_scaling_prepare(struct ufs_hba *hba, u64 timeout_us)
 {
-	#define DOORBELL_CLR_TOUT_US		(1000 * 1000) /* 1 sec */
 	int ret = 0;
 	/*
 	 * make sure that there are no outstanding requests when
@@ -1235,7 +1331,7 @@ static int ufshcd_clock_scaling_prepare(struct ufs_hba *hba)
 	down_write(&hba->clk_scaling_lock);
 
 	if (!hba->clk_scaling.is_allowed ||
-	    ufshcd_wait_for_doorbell_clr(hba, DOORBELL_CLR_TOUT_US)) {
+	    ufshcd_wait_for_doorbell_clr(hba, timeout_us)) {
 		ret = -EBUSY;
 		up_write(&hba->clk_scaling_lock);
 		mutex_unlock(&hba->wb_mutex);
@@ -1277,7 +1373,7 @@ static int ufshcd_devfreq_scale(struct ufs_hba *hba, bool scale_up)
 {
 	int ret = 0;
 
-	ret = ufshcd_clock_scaling_prepare(hba);
+	ret = ufshcd_clock_scaling_prepare(hba, 1 * USEC_PER_SEC);
 	if (ret)
 		return ret;
 
@@ -1353,6 +1449,8 @@ static int ufshcd_devfreq_target(struct device *dev,
 	struct list_head *clk_list = &hba->clk_list_head;
 	struct ufs_clk_info *clki;
 	unsigned long irq_flags;
+	bool force_out = false;
+	bool force_scaling = false;
 
 	if (!ufshcd_is_clkscaling_supported(hba))
 		return -EINVAL;
@@ -1378,8 +1476,11 @@ static int ufshcd_devfreq_target(struct device *dev,
 	scale_up = *freq == clki->max_freq;
 	if (!scale_up)
 		*freq = clki->min_freq;
+
+	trace_android_vh_ufs_clock_scaling(hba, &force_out, &force_scaling, &scale_up);
+
 	/* Update the frequency */
-	if (!ufshcd_is_devfreq_scaling_required(hba, scale_up)) {
+	if (force_out || (!force_scaling && !ufshcd_is_devfreq_scaling_required(hba, scale_up))) {
 		spin_unlock_irqrestore(hba->host->host_lock, irq_flags);
 		ret = 0;
 		goto out; /* no state change required */
@@ -1438,7 +1539,7 @@ static int ufshcd_devfreq_get_dev_status(struct device *dev,
 	scaling->window_start_t = curr_t;
 	scaling->tot_busy_t = 0;
 
-	if (hba->outstanding_reqs) {
+	if (scaling->active_reqs) {
 		scaling->busy_start_t = curr_t;
 		scaling->is_busy_started = true;
 	} else {
@@ -2011,7 +2112,6 @@ static void ufshcd_exit_clk_gating(struct ufs_hba *hba)
 	destroy_workqueue(hba->clk_gating.clk_gating_workq);
 }
 
-/* Must be called with host lock acquired */
 static void ufshcd_clk_scaling_start_busy(struct ufs_hba *hba)
 {
 	bool queue_resume_work = false;
@@ -2057,7 +2157,7 @@ static void ufshcd_clk_scaling_update_busy(struct ufs_hba *hba)
 
 	spin_lock_irqsave(hba->host->host_lock, flags);
 	hba->clk_scaling.active_reqs--;
-	if (!hba->outstanding_reqs && scaling->is_busy_started) {
+	if (!scaling->active_reqs && scaling->is_busy_started) {
 		scaling->tot_busy_t += ktime_to_us(ktime_sub(ktime_get(),
 					scaling->busy_start_t));
 		scaling->busy_start_t = 0;
@@ -2134,9 +2234,11 @@ static void ufshcd_update_monitor(struct ufs_hba *hba, const struct ufshcd_lrb *
  * ufshcd_send_command - Send SCSI or device management commands
  * @hba: per adapter instance
  * @task_tag: Task tag of the command
+ * @hwq: pointer to hardware queue instance
  */
 static inline
-void ufshcd_send_command(struct ufs_hba *hba, unsigned int task_tag)
+void ufshcd_send_command(struct ufs_hba *hba, unsigned int task_tag,
+			 struct ufs_hw_queue *hwq)
 {
 	struct ufshcd_lrb *lrbp = &hba->lrb[task_tag];
 	unsigned long flags;
@@ -2145,17 +2247,30 @@ void ufshcd_send_command(struct ufs_hba *hba, unsigned int task_tag)
 	lrbp->issue_time_stamp_local_clock = local_clock();
 	lrbp->compl_time_stamp = ktime_set(0, 0);
 	lrbp->compl_time_stamp_local_clock = 0;
+	trace_android_vh_ufs_send_command(hba, lrbp);
 	ufshcd_add_command_trace(hba, task_tag, UFS_CMD_SEND);
 	ufshcd_clk_scaling_start_busy(hba);
 	if (unlikely(ufshcd_should_inform_monitor(hba, lrbp)))
 		ufshcd_start_monitor(hba, lrbp);
 
-	spin_lock_irqsave(&hba->outstanding_lock, flags);
-	if (hba->vops && hba->vops->setup_xfer_req)
-		hba->vops->setup_xfer_req(hba, task_tag, !!lrbp->cmd);
-	__set_bit(task_tag, &hba->outstanding_reqs);
-	ufshcd_writel(hba, 1 << task_tag, REG_UTP_TRANSFER_REQ_DOOR_BELL);
-	spin_unlock_irqrestore(&hba->outstanding_lock, flags);
+	if (is_mcq_enabled(hba)) {
+		int utrd_size = sizeof(struct utp_transfer_req_desc);
+
+		spin_lock(&hwq->sq_lock);
+		memcpy(hwq->sqe_base_addr + (hwq->sq_tail_slot * utrd_size),
+		       lrbp->utr_descriptor_ptr, utrd_size);
+		ufshcd_inc_sq_tail(hwq);
+		spin_unlock(&hwq->sq_lock);
+	} else {
+		spin_lock_irqsave(&hba->outstanding_lock, flags);
+		if (hba->vops && hba->vops->setup_xfer_req)
+			hba->vops->setup_xfer_req(hba, lrbp->task_tag,
+						  !!lrbp->cmd);
+		__set_bit(lrbp->task_tag, &hba->outstanding_reqs);
+		ufshcd_writel(hba, 1 << lrbp->task_tag,
+			      REG_UTP_TRANSFER_REQ_DOOR_BELL);
+		spin_unlock_irqrestore(&hba->outstanding_lock, flags);
+	}
 }
 
 /**
@@ -2243,6 +2358,14 @@ static inline int ufshcd_hba_capabilities(struct ufs_hba *hba)
 	if (err)
 		dev_err(hba->dev, "crypto setup failed\n");
 
+	hba->mcq_sup = FIELD_GET(MASK_MCQ_SUPPORT, hba->capabilities);
+	if (!hba->mcq_sup)
+		return err;
+
+	hba->mcq_capabilities = ufshcd_readl(hba, REG_MCQCAP);
+	hba->ext_iid_sup = FIELD_GET(MASK_EXT_IID_SUPPORT,
+				     hba->mcq_capabilities);
+
 	return err;
 }
 
@@ -2395,38 +2518,30 @@ int ufshcd_send_uic_cmd(struct ufs_hba *hba, struct uic_command *uic_cmd)
 }
 
 /**
- * ufshcd_map_sg - Map scatter-gather list to prdt
- * @hba: per adapter instance
- * @lrbp: pointer to local reference block
- *
- * Returns 0 in case of success, non-zero value in case of failure
+ * ufshcd_sgl_to_prdt - SG list to PRTD (Physical Region Description Table, 4DW format)
+ * @hba:	per-adapter instance
+ * @lrbp:	pointer to local reference block
+ * @sg_entries:	The number of sg lists actually used
+ * @sg_list:	Pointer to SG list
  */
-static int ufshcd_map_sg(struct ufs_hba *hba, struct ufshcd_lrb *lrbp)
+static void ufshcd_sgl_to_prdt(struct ufs_hba *hba, struct ufshcd_lrb *lrbp, int sg_entries,
+			       struct scatterlist *sg_list)
 {
-	struct ufshcd_sg_entry *prd_table;
+	struct ufshcd_sg_entry *prd;
 	struct scatterlist *sg;
-	struct scsi_cmnd *cmd;
-	int sg_segments;
 	int i;
 
-	cmd = lrbp->cmd;
-	sg_segments = scsi_dma_map(cmd);
-	if (sg_segments < 0)
-		return sg_segments;
-
-	if (sg_segments) {
+	if (sg_entries) {
 
 		if (hba->quirks & UFSHCD_QUIRK_PRDT_BYTE_GRAN)
 			lrbp->utr_descriptor_ptr->prd_table_length =
-				cpu_to_le16((sg_segments *
-					sizeof(struct ufshcd_sg_entry)));
+				cpu_to_le16(sg_entries * ufshcd_sg_entry_size(hba));
 		else
-			lrbp->utr_descriptor_ptr->prd_table_length =
-				cpu_to_le16(sg_segments);
+			lrbp->utr_descriptor_ptr->prd_table_length = cpu_to_le16(sg_entries);
 
-		prd_table = lrbp->ucd_prdt_ptr;
+		prd = lrbp->ucd_prdt_ptr;
 
-		scsi_for_each_sg(cmd, sg, sg_segments, i) {
+		for_each_sg(sg_list, sg, sg_entries, i) {
 			const unsigned int len = sg_dma_len(sg);
 
 			/*
@@ -2438,15 +2553,37 @@ static int ufshcd_map_sg(struct ufs_hba *hba, struct ufshcd_lrb *lrbp)
 			 * indicates 4 bytes, '7' indicates 8 bytes, etc."
 			 */
 			WARN_ONCE(len > 256 * 1024, "len = %#x\n", len);
-			prd_table[i].size = cpu_to_le32(len - 1);
-			prd_table[i].addr = cpu_to_le64(sg->dma_address);
-			prd_table[i].reserved = 0;
+			prd->size = cpu_to_le32(len - 1);
+			prd->addr = cpu_to_le64(sg->dma_address);
+			prd->reserved = 0;
+			prd = (void *)prd + ufshcd_sg_entry_size(hba);
 		}
 	} else {
 		lrbp->utr_descriptor_ptr->prd_table_length = 0;
 	}
+}
 
-	return 0;
+/**
+ * ufshcd_map_sg - Map scatter-gather list to prdt
+ * @hba: per adapter instance
+ * @lrbp: pointer to local reference block
+ *
+ * Returns 0 in case of success, non-zero value in case of failure
+ */
+static int ufshcd_map_sg(struct ufs_hba *hba, struct ufshcd_lrb *lrbp)
+{
+	struct scsi_cmnd *cmd = lrbp->cmd;
+	int sg_segments = scsi_dma_map(cmd);
+	int err;
+
+	if (sg_segments < 0)
+		return sg_segments;
+
+	ufshcd_sgl_to_prdt(hba, lrbp, sg_segments, scsi_sglist(cmd));
+
+	err = 0;
+	trace_android_vh_ufs_fill_prdt(hba, lrbp, sg_segments, &err);
+	return err;
 }
 
 /**
@@ -2492,14 +2629,15 @@ static void ufshcd_disable_intr(struct ufs_hba *hba, u32 intrs)
 }
 
 /**
- * ufshcd_prepare_req_desc_hdr() - Fills the requests header
+ * ufshcd_prepare_req_desc_hdr - Fill UTP Transfer request descriptor header according to request
  * descriptor according to request
  * @lrbp: pointer to local reference block
  * @upiu_flags: flags required in the header
  * @cmd_dir: requests data direction
+ * @ehs_length: Total EHS Length (in 32‐bytes units of all Extra Header Segments)
  */
-static void ufshcd_prepare_req_desc_hdr(struct ufshcd_lrb *lrbp,
-			u8 *upiu_flags, enum dma_data_direction cmd_dir)
+static void ufshcd_prepare_req_desc_hdr(struct ufshcd_lrb *lrbp, u8 *upiu_flags,
+					enum dma_data_direction cmd_dir, int ehs_length)
 {
 	struct utp_transfer_req_desc *req_desc = lrbp->utr_descriptor_ptr;
 	u32 data_direction;
@@ -2518,8 +2656,8 @@ static void ufshcd_prepare_req_desc_hdr(struct ufshcd_lrb *lrbp,
 		*upiu_flags = UPIU_CMD_FLAGS_NONE;
 	}
 
-	dword_0 = data_direction | (lrbp->command_type
-				<< UPIU_COMMAND_TYPE_OFFSET);
+	dword_0 = data_direction | (lrbp->command_type << UPIU_COMMAND_TYPE_OFFSET) |
+		ehs_length << 8;
 	if (lrbp->intr_cmd)
 		dword_0 |= UTP_REQ_DESC_INT_CMD;
 
@@ -2574,8 +2712,7 @@ void ufshcd_prepare_utp_scsi_cmd_upiu(struct ufshcd_lrb *lrbp, u8 upiu_flags)
 }
 
 /**
- * ufshcd_prepare_utp_query_req_upiu() - fills the utp_transfer_req_desc,
- * for query requsts
+ * ufshcd_prepare_utp_query_req_upiu() - fill the utp_transfer_req_desc for query request
  * @hba: UFS hba
  * @lrbp: local reference block pointer
  * @upiu_flags: flags
@@ -2646,7 +2783,7 @@ static int ufshcd_compose_devman_upiu(struct ufs_hba *hba,
 	else
 		lrbp->command_type = UTP_CMD_TYPE_UFS_STORAGE;
 
-	ufshcd_prepare_req_desc_hdr(lrbp, &upiu_flags, DMA_NONE);
+	ufshcd_prepare_req_desc_hdr(lrbp, &upiu_flags, DMA_NONE, 0);
 	if (hba->dev_cmd.type == DEV_CMD_TYPE_QUERY)
 		ufshcd_prepare_utp_query_req_upiu(hba, lrbp, upiu_flags);
 	else if (hba->dev_cmd.type == DEV_CMD_TYPE_NOP)
@@ -2674,8 +2811,7 @@ static int ufshcd_comp_scsi_upiu(struct ufs_hba *hba, struct ufshcd_lrb *lrbp)
 		lrbp->command_type = UTP_CMD_TYPE_UFS_STORAGE;
 
 	if (likely(lrbp->cmd)) {
-		ufshcd_prepare_req_desc_hdr(lrbp, &upiu_flags,
-						lrbp->cmd->sc_data_direction);
+		ufshcd_prepare_req_desc_hdr(lrbp, &upiu_flags, lrbp->cmd->sc_data_direction, 0);
 		ufshcd_prepare_utp_scsi_cmd_upiu(lrbp, upiu_flags);
 	} else {
 		ret = -EINVAL;
@@ -2707,33 +2843,38 @@ static inline bool is_device_wlun(struct scsi_device *sdev)
  */
 static void ufshcd_map_queues(struct Scsi_Host *shost)
 {
-	int i;
+	struct ufs_hba *hba = shost_priv(shost);
+	int i, queue_offset = 0;
+
+	if (!is_mcq_supported(hba)) {
+		hba->nr_queues[HCTX_TYPE_DEFAULT] = 1;
+		hba->nr_queues[HCTX_TYPE_READ] = 0;
+		hba->nr_queues[HCTX_TYPE_POLL] = 1;
+		hba->nr_hw_queues = 1;
+	}
 
 	for (i = 0; i < shost->nr_maps; i++) {
 		struct blk_mq_queue_map *map = &shost->tag_set.map[i];
 
-		switch (i) {
-		case HCTX_TYPE_DEFAULT:
-		case HCTX_TYPE_POLL:
-			map->nr_queues = 1;
-			break;
-		case HCTX_TYPE_READ:
-			map->nr_queues = 0;
+		map->nr_queues = hba->nr_queues[i];
+		if (!map->nr_queues)
 			continue;
-		default:
-			WARN_ON_ONCE(true);
-		}
-		map->queue_offset = 0;
+		map->queue_offset = queue_offset;
+		if (i == HCTX_TYPE_POLL && !is_mcq_supported(hba))
+			map->queue_offset = 0;
+
 		blk_mq_map_queues(map);
+		queue_offset += map->nr_queues;
 	}
 }
 
 static void ufshcd_init_lrb(struct ufs_hba *hba, struct ufshcd_lrb *lrb, int i)
 {
-	struct utp_transfer_cmd_desc *cmd_descp = hba->ucdl_base_addr;
+	struct utp_transfer_cmd_desc *cmd_descp = (void *)hba->ucdl_base_addr +
+		i * ufshcd_get_ucd_size(hba);
 	struct utp_transfer_req_desc *utrdlp = hba->utrdl_base_addr;
 	dma_addr_t cmd_desc_element_addr = hba->ucdl_dma_addr +
-		i * sizeof(struct utp_transfer_cmd_desc);
+		i * ufshcd_get_ucd_size(hba);
 	u16 response_offset = offsetof(struct utp_transfer_cmd_desc,
 				       response_upiu);
 	u16 prdt_offset = offsetof(struct utp_transfer_cmd_desc, prd_table);
@@ -2741,11 +2882,11 @@ static void ufshcd_init_lrb(struct ufs_hba *hba, struct ufshcd_lrb *lrb, int i)
 	lrb->utr_descriptor_ptr = utrdlp + i;
 	lrb->utrd_dma_addr = hba->utrdl_dma_addr +
 		i * sizeof(struct utp_transfer_req_desc);
-	lrb->ucd_req_ptr = (struct utp_upiu_req *)(cmd_descp + i);
+	lrb->ucd_req_ptr = (struct utp_upiu_req *)cmd_descp->command_upiu;
 	lrb->ucd_req_dma_addr = cmd_desc_element_addr;
-	lrb->ucd_rsp_ptr = (struct utp_upiu_rsp *)cmd_descp[i].response_upiu;
+	lrb->ucd_rsp_ptr = (struct utp_upiu_rsp *)cmd_descp->response_upiu;
 	lrb->ucd_rsp_dma_addr = cmd_desc_element_addr + response_offset;
-	lrb->ucd_prdt_ptr = cmd_descp[i].prd_table;
+	lrb->ucd_prdt_ptr = (struct ufshcd_sg_entry *)cmd_descp->prd_table;
 	lrb->ucd_prdt_dma_addr = cmd_desc_element_addr + prdt_offset;
 }
 
@@ -2762,6 +2903,7 @@ static int ufshcd_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd)
 	int tag = scsi_cmd_to_rq(cmd)->tag;
 	struct ufshcd_lrb *lrbp;
 	int err = 0;
+	struct ufs_hw_queue *hwq = NULL;
 
 	WARN_ONCE(tag < 0 || tag >= hba->nutrs, "Invalid tag %d\n", tag);
 
@@ -2833,6 +2975,14 @@ static int ufshcd_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd)
 
 	ufshcd_prepare_lrbp_crypto(scsi_cmd_to_rq(cmd), lrbp);
 
+	trace_android_vh_ufs_prepare_command(hba, scsi_cmd_to_rq(cmd), lrbp,
+					     &err);
+	if (err) {
+		lrbp->cmd = NULL;
+		ufshcd_release(hba);
+		goto out;
+	}
+
 	lrbp->req_abort_skip = false;
 
 	ufshpb_prep(hba, lrbp);
@@ -2846,7 +2996,10 @@ static int ufshcd_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd)
 		goto out;
 	}
 
-	ufshcd_send_command(hba, tag);
+	if (is_mcq_enabled(hba))
+		hwq = ufshcd_mcq_req_to_hwq(hba, scsi_cmd_to_rq(cmd));
+
+	ufshcd_send_command(hba, tag, hwq);
 
 out:
 	rcu_read_unlock();
@@ -2876,13 +3029,50 @@ static int ufshcd_compose_dev_cmd(struct ufs_hba *hba,
 }
 
 /*
- * Clear all the requests from the controller for which a bit has been set in
- * @mask and wait until the controller confirms that these requests have been
- * cleared.
+ * Check with the block layer if the command is inflight
+ * @cmd: command to check.
+ *
+ * Returns true if command is inflight; false if not.
  */
-static int ufshcd_clear_cmds(struct ufs_hba *hba, u32 mask)
+bool ufshcd_cmd_inflight(struct scsi_cmnd *cmd)
 {
+	struct request *rq;
+
+	if (!cmd)
+		return false;
+
+	rq = scsi_cmd_to_rq(cmd);
+	if (!blk_mq_request_started(rq))
+		return false;
+
+	return true;
+}
+
+/*
+ * Clear the pending command in the controller and wait until
+ * the controller confirms that the command has been cleared.
+ * @hba: per adapter instance
+ * @task_tag: The tag number of the command to be cleared.
+ */
+static int ufshcd_clear_cmd(struct ufs_hba *hba, u32 task_tag)
+{
+	u32 mask = 1U << task_tag;
 	unsigned long flags;
+	int err;
+
+	if (is_mcq_enabled(hba)) {
+		/*
+		 * MCQ mode. Clean up the MCQ resources similar to
+		 * what the ufshcd_utrl_clear() does for SDB mode.
+		 */
+		err = ufshcd_mcq_sq_cleanup(hba, task_tag);
+		if (err) {
+			dev_err(hba->dev, "%s: failed tag=%d. err=%d\n",
+				__func__, task_tag, err);
+			return err;
+		}
+		return 0;
+	}
 
 	/* clear outstanding transaction before retry */
 	spin_lock_irqsave(hba->host->host_lock, flags);
@@ -2941,6 +3131,12 @@ ufshcd_dev_cmd_completion(struct ufs_hba *hba, struct ufshcd_lrb *lrbp)
 		dev_err(hba->dev, "%s: Reject UPIU not fully implemented\n",
 				__func__);
 		break;
+	case UPIU_TRANSACTION_RESPONSE:
+		if (hba->dev_cmd.type != DEV_CMD_TYPE_RPMB) {
+			err = -EINVAL;
+			dev_err(hba->dev, "%s: unexpected response %x\n", __func__, resp);
+		}
+		break;
 	default:
 		err = -EINVAL;
 		dev_err(hba->dev, "%s: Invalid device management cmd response: %x\n",
@@ -2970,14 +3166,23 @@ static int ufshcd_wait_for_dev_cmd(struct ufs_hba *hba,
 		 * not trigger any race conditions.
 		 */
 		hba->dev_cmd.complete = NULL;
-		err = ufshcd_get_tr_ocs(lrbp);
+		err = ufshcd_get_tr_ocs(lrbp, hba->dev_cmd.cqe);
 		if (!err)
 			err = ufshcd_dev_cmd_completion(hba, lrbp);
 	} else {
 		err = -ETIMEDOUT;
 		dev_dbg(hba->dev, "%s: dev_cmd request timedout, tag %d\n",
 			__func__, lrbp->task_tag);
-		if (ufshcd_clear_cmds(hba, 1U << lrbp->task_tag) == 0) {
+
+		/* MCQ mode */
+		if (is_mcq_enabled(hba)) {
+			err = ufshcd_clear_cmd(hba, lrbp->task_tag);
+			hba->dev_cmd.complete = NULL;
+			return err;
+		}
+
+		/* SDB mode */
+		if (ufshcd_clear_cmd(hba, lrbp->task_tag) == 0) {
 			/* successfully cleared the command, retry if needed */
 			err = -EAGAIN;
 			/*
@@ -3057,10 +3262,11 @@ static int ufshcd_exec_dev_cmd(struct ufs_hba *hba,
 		goto out;
 
 	hba->dev_cmd.complete = &wait;
+	hba->dev_cmd.cqe = NULL;
 
 	ufshcd_add_query_upiu_trace(hba, UFS_QUERY_SEND, lrbp->ucd_req_ptr);
 
-	ufshcd_send_command(hba, tag);
+	ufshcd_send_command(hba, tag, hba->dev_cmd_queue);
 	err = ufshcd_wait_for_dev_cmd(hba, lrbp, timeout);
 	ufshcd_add_query_upiu_trace(hba, err ? UFS_QUERY_ERR : UFS_QUERY_COMP,
 				    (struct utp_upiu_req *)lrbp->ucd_rsp_ptr);
@@ -3094,7 +3300,7 @@ static inline void ufshcd_init_query(struct ufs_hba *hba,
 	(*request)->upiu_req.selector = selector;
 }
 
-static int ufshcd_query_flag_retry(struct ufs_hba *hba,
+int ufshcd_query_flag_retry(struct ufs_hba *hba,
 	enum query_opcode opcode, enum flag_idn idn, u8 index, bool *flag_res)
 {
 	int ret;
@@ -3116,6 +3322,7 @@ static int ufshcd_query_flag_retry(struct ufs_hba *hba,
 			__func__, opcode, idn, ret, retries);
 	return ret;
 }
+EXPORT_SYMBOL_GPL(ufshcd_query_flag_retry);
 
 /**
  * ufshcd_query_flag() - API function for sending flag query requests
@@ -3184,6 +3391,7 @@ int ufshcd_query_flag(struct ufs_hba *hba, enum query_opcode opcode,
 	ufshcd_release(hba);
 	return err;
 }
+EXPORT_SYMBOL_GPL(ufshcd_query_flag);
 
 /**
  * ufshcd_query_attr - API function for sending attribute requests
@@ -3247,6 +3455,7 @@ int ufshcd_query_attr(struct ufs_hba *hba, enum query_opcode opcode,
 	ufshcd_release(hba);
 	return err;
 }
+EXPORT_SYMBOL_GPL(ufshcd_query_attr);
 
 /**
  * ufshcd_query_attr_retry() - API function for sending query
@@ -3284,6 +3493,7 @@ int ufshcd_query_attr_retry(struct ufs_hba *hba,
 			__func__, idn, ret, QUERY_REQ_RETRIES);
 	return ret;
 }
+EXPORT_SYMBOL_GPL(ufshcd_query_attr_retry);
 
 static int __ufshcd_query_descriptor(struct ufs_hba *hba,
 			enum query_opcode opcode, enum desc_idn idn, u8 index,
@@ -3379,37 +3589,7 @@ int ufshcd_query_descriptor_retry(struct ufs_hba *hba,
 
 	return err;
 }
-
-/**
- * ufshcd_map_desc_id_to_length - map descriptor IDN to its length
- * @hba: Pointer to adapter instance
- * @desc_id: descriptor idn value
- * @desc_len: mapped desc length (out)
- */
-void ufshcd_map_desc_id_to_length(struct ufs_hba *hba, enum desc_idn desc_id,
-				  int *desc_len)
-{
-	if (desc_id >= QUERY_DESC_IDN_MAX || desc_id == QUERY_DESC_IDN_RFU_0 ||
-	    desc_id == QUERY_DESC_IDN_RFU_1)
-		*desc_len = 0;
-	else
-		*desc_len = hba->desc_size[desc_id];
-}
-EXPORT_SYMBOL(ufshcd_map_desc_id_to_length);
-
-static void ufshcd_update_desc_length(struct ufs_hba *hba,
-				      enum desc_idn desc_id, int desc_index,
-				      unsigned char desc_len)
-{
-	if (hba->desc_size[desc_id] == QUERY_DESC_MAX_SIZE &&
-	    desc_id != QUERY_DESC_IDN_STRING && desc_index != UFS_RPMB_UNIT)
-		/* For UFS 3.1, the normal unit descriptor is 10 bytes larger
-		 * than the RPMB unit, however, both descriptors share the same
-		 * desc_idn, to cover both unit descriptors with one length, we
-		 * choose the normal unit descriptor length by desc_index.
-		 */
-		hba->desc_size[desc_id] = desc_len;
-}
+EXPORT_SYMBOL_GPL(ufshcd_query_descriptor_retry);
 
 /**
  * ufshcd_read_desc_param - read the specified descriptor parameter
@@ -3431,26 +3611,13 @@ int ufshcd_read_desc_param(struct ufs_hba *hba,
 {
 	int ret;
 	u8 *desc_buf;
-	int buff_len;
+	int buff_len = QUERY_DESC_MAX_SIZE;
 	bool is_kmalloc = true;
 
 	/* Safety check */
 	if (desc_id >= QUERY_DESC_IDN_MAX || !param_size)
 		return -EINVAL;
 
-	/* Get the length of descriptor */
-	ufshcd_map_desc_id_to_length(hba, desc_id, &buff_len);
-	if (!buff_len) {
-		dev_err(hba->dev, "%s: Failed to get desc length\n", __func__);
-		return -EINVAL;
-	}
-
-	if (param_offset >= buff_len) {
-		dev_err(hba->dev, "%s: Invalid offset 0x%x in descriptor IDN 0x%x, length 0x%x\n",
-			__func__, param_offset, desc_id, buff_len);
-		return -EINVAL;
-	}
-
 	/* Check whether we need temp memory */
 	if (param_offset != 0 || param_size < buff_len) {
 		desc_buf = kzalloc(buff_len, GFP_KERNEL);
@@ -3463,15 +3630,24 @@ int ufshcd_read_desc_param(struct ufs_hba *hba,
 
 	/* Request for full descriptor */
 	ret = ufshcd_query_descriptor_retry(hba, UPIU_QUERY_OPCODE_READ_DESC,
-					desc_id, desc_index, 0,
-					desc_buf, &buff_len);
-
+					    desc_id, desc_index, 0,
+					    desc_buf, &buff_len);
 	if (ret) {
 		dev_err(hba->dev, "%s: Failed reading descriptor. desc_id %d, desc_index %d, param_offset %d, ret %d\n",
 			__func__, desc_id, desc_index, param_offset, ret);
 		goto out;
 	}
 
+	/* Update descriptor length */
+	buff_len = desc_buf[QUERY_DESC_LENGTH_OFFSET];
+
+	if (param_offset >= buff_len) {
+		dev_err(hba->dev, "%s: Invalid offset 0x%x in descriptor IDN 0x%x, length 0x%x\n",
+			__func__, param_offset, desc_id, buff_len);
+		ret = -EINVAL;
+		goto out;
+	}
+
 	/* Sanity check */
 	if (desc_buf[QUERY_DESC_DESC_TYPE_OFFSET] != desc_id) {
 		dev_err(hba->dev, "%s: invalid desc_id %d in descriptor header\n",
@@ -3480,10 +3656,6 @@ int ufshcd_read_desc_param(struct ufs_hba *hba,
 		goto out;
 	}
 
-	/* Update descriptor length */
-	buff_len = desc_buf[QUERY_DESC_LENGTH_OFFSET];
-	ufshcd_update_desc_length(hba, desc_id, desc_index, buff_len);
-
 	if (is_kmalloc) {
 		/* Make sure we don't copy more data than available */
 		if (param_offset >= buff_len)
@@ -3497,6 +3669,7 @@ int ufshcd_read_desc_param(struct ufs_hba *hba,
 		kfree(desc_buf);
 	return ret;
 }
+EXPORT_SYMBOL_GPL(ufshcd_read_desc_param);
 
 /**
  * struct uc_string_id - unicode string
@@ -3620,7 +3793,7 @@ static inline int ufshcd_read_unit_desc_param(struct ufs_hba *hba,
 	 * Unit descriptors are only available for general purpose LUs (LUN id
 	 * from 0 to 7) and RPMB Well known LU.
 	 */
-	if (!ufs_is_valid_unit_desc_lun(&hba->dev_info, lun, param_offset))
+	if (!ufs_is_valid_unit_desc_lun(&hba->dev_info, lun))
 		return -EOPNOTSUPP;
 
 	return ufshcd_read_desc_param(hba, QUERY_DESC_IDN_UNIT, lun,
@@ -3670,7 +3843,7 @@ static int ufshcd_memory_alloc(struct ufs_hba *hba)
 	size_t utmrdl_size, utrdl_size, ucdl_size;
 
 	/* Allocate memory for UTP command descriptors */
-	ucdl_size = (sizeof(struct utp_transfer_cmd_desc) * hba->nutrs);
+	ucdl_size = ufshcd_get_ucd_size(hba) * hba->nutrs;
 	hba->ucdl_base_addr = dmam_alloc_coherent(hba->dev,
 						  ucdl_size,
 						  &hba->ucdl_dma_addr,
@@ -3678,12 +3851,9 @@ static int ufshcd_memory_alloc(struct ufs_hba *hba)
 
 	/*
 	 * UFSHCI requires UTP command descriptor to be 128 byte aligned.
-	 * make sure hba->ucdl_dma_addr is aligned to PAGE_SIZE
-	 * if hba->ucdl_dma_addr is aligned to PAGE_SIZE, then it will
-	 * be aligned to 128 bytes as well
 	 */
 	if (!hba->ucdl_base_addr ||
-	    WARN_ON(hba->ucdl_dma_addr & (PAGE_SIZE - 1))) {
+	    WARN_ON(hba->ucdl_dma_addr & (128 - 1))) {
 		dev_err(hba->dev,
 			"Command Descriptor Memory allocation failed\n");
 		goto out;
@@ -3699,13 +3869,21 @@ static int ufshcd_memory_alloc(struct ufs_hba *hba)
 						   &hba->utrdl_dma_addr,
 						   GFP_KERNEL);
 	if (!hba->utrdl_base_addr ||
-	    WARN_ON(hba->utrdl_dma_addr & (PAGE_SIZE - 1))) {
+	    WARN_ON(hba->utrdl_dma_addr & (1024 - 1))) {
 		dev_err(hba->dev,
 			"Transfer Descriptor Memory allocation failed\n");
 		goto out;
 	}
 
 	/*
+	 * Skip utmrdl allocation; it may have been
+	 * allocated during first pass and not released during
+	 * MCQ memory allocation.
+	 * See ufshcd_release_sdb_queue() and ufshcd_config_mcq()
+	 */
+	if (hba->utmrdl_base_addr)
+		goto skip_utmrdl;
+	/*
 	 * Allocate memory for UTP Task Management descriptors
 	 * UFSHCI requires 1024 byte alignment of UTMRD
 	 */
@@ -3715,12 +3893,13 @@ static int ufshcd_memory_alloc(struct ufs_hba *hba)
 						    &hba->utmrdl_dma_addr,
 						    GFP_KERNEL);
 	if (!hba->utmrdl_base_addr ||
-	    WARN_ON(hba->utmrdl_dma_addr & (PAGE_SIZE - 1))) {
+	    WARN_ON(hba->utmrdl_dma_addr & (1024 - 1))) {
 		dev_err(hba->dev,
 		"Task Management Descriptor Memory allocation failed\n");
 		goto out;
 	}
 
+skip_utmrdl:
 	/* Allocate memory for local reference block */
 	hba->lrb = devm_kcalloc(hba->dev,
 				hba->nutrs, sizeof(struct ufshcd_lrb),
@@ -3764,17 +3943,15 @@ static void ufshcd_host_memory_configure(struct ufs_hba *hba)
 	prdt_offset =
 		offsetof(struct utp_transfer_cmd_desc, prd_table);
 
-	cmd_desc_size = sizeof(struct utp_transfer_cmd_desc);
+	cmd_desc_size = ufshcd_get_ucd_size(hba);
 	cmd_desc_dma_addr = hba->ucdl_dma_addr;
 
 	for (i = 0; i < hba->nutrs; i++) {
 		/* Configure UTRD with command descriptor base address */
 		cmd_desc_element_addr =
 				(cmd_desc_dma_addr + (cmd_desc_size * i));
-		utrdlp[i].command_desc_base_addr_lo =
-				cpu_to_le32(lower_32_bits(cmd_desc_element_addr));
-		utrdlp[i].command_desc_base_addr_hi =
-				cpu_to_le32(upper_32_bits(cmd_desc_element_addr));
+		utrdlp[i].command_desc_base_addr =
+				cpu_to_le64(cmd_desc_element_addr);
 
 		/* Response upiu and prdt offset should be in double words */
 		if (hba->quirks & UFSHCD_QUIRK_PRDT_BYTE_GRAN) {
@@ -4492,7 +4669,7 @@ static int ufshcd_complete_dev_init(struct ufs_hba *hba)
 		QUERY_FLAG_IDN_FDEVICEINIT, 0, NULL);
 	if (err) {
 		dev_err(hba->dev,
-			"%s setting fDeviceInit flag failed with error %d\n",
+			"%s: setting fDeviceInit flag failed with error %d\n",
 			__func__, err);
 		goto out;
 	}
@@ -4509,11 +4686,11 @@ static int ufshcd_complete_dev_init(struct ufs_hba *hba)
 
 	if (err) {
 		dev_err(hba->dev,
-				"%s reading fDeviceInit flag failed with error %d\n",
+				"%s: reading fDeviceInit flag failed with error %d\n",
 				__func__, err);
 	} else if (flag_res) {
 		dev_err(hba->dev,
-				"%s fDeviceInit was not cleared by the device\n",
+				"%s: fDeviceInit was not cleared by the device\n",
 				__func__);
 		err = -EBUSY;
 	}
@@ -4680,14 +4857,18 @@ int ufshcd_hba_enable(struct ufs_hba *hba)
 		/* enable UIC related interrupts */
 		ufshcd_enable_intr(hba, UFSHCD_UIC_MASK);
 		ret = ufshcd_dme_reset(hba);
-		if (!ret) {
-			ret = ufshcd_dme_enable(hba);
-			if (!ret)
-				ufshcd_vops_hce_enable_notify(hba, POST_CHANGE);
-			if (ret)
-				dev_err(hba->dev,
-					"Host controller enable failed with non-hce\n");
+		if (ret) {
+			dev_err(hba->dev, "DME_RESET failed\n");
+			return ret;
 		}
+
+		ret = ufshcd_dme_enable(hba);
+		if (ret) {
+			dev_err(hba->dev, "Enabling DME failed\n");
+			return ret;
+		}
+
+		ufshcd_vops_hce_enable_notify(hba, POST_CHANGE);
 	} else {
 		ret = ufshcd_hba_execute_hce(hba);
 	}
@@ -4874,100 +5055,6 @@ static int ufshcd_verify_dev_init(struct ufs_hba *hba)
 }
 
 /**
- * ufshcd_set_queue_depth - set lun queue depth
- * @sdev: pointer to SCSI device
- *
- * Read bLUQueueDepth value and activate scsi tagged command
- * queueing. For WLUN, queue depth is set to 1. For best-effort
- * cases (bLUQueueDepth = 0) the queue depth is set to a maximum
- * value that host can queue.
- */
-static void ufshcd_set_queue_depth(struct scsi_device *sdev)
-{
-	int ret = 0;
-	u8 lun_qdepth;
-	struct ufs_hba *hba;
-
-	hba = shost_priv(sdev->host);
-
-	lun_qdepth = hba->nutrs;
-	ret = ufshcd_read_unit_desc_param(hba,
-					  ufshcd_scsi_to_upiu_lun(sdev->lun),
-					  UNIT_DESC_PARAM_LU_Q_DEPTH,
-					  &lun_qdepth,
-					  sizeof(lun_qdepth));
-
-	/* Some WLUN doesn't support unit descriptor */
-	if (ret == -EOPNOTSUPP)
-		lun_qdepth = 1;
-	else if (!lun_qdepth)
-		/* eventually, we can figure out the real queue depth */
-		lun_qdepth = hba->nutrs;
-	else
-		lun_qdepth = min_t(int, lun_qdepth, hba->nutrs);
-
-	dev_dbg(hba->dev, "%s: activate tcq with queue depth %d\n",
-			__func__, lun_qdepth);
-	scsi_change_queue_depth(sdev, lun_qdepth);
-}
-
-/*
- * ufshcd_get_lu_wp - returns the "b_lu_write_protect" from UNIT DESCRIPTOR
- * @hba: per-adapter instance
- * @lun: UFS device lun id
- * @b_lu_write_protect: pointer to buffer to hold the LU's write protect info
- *
- * Returns 0 in case of success and b_lu_write_protect status would be returned
- * @b_lu_write_protect parameter.
- * Returns -ENOTSUPP if reading b_lu_write_protect is not supported.
- * Returns -EINVAL in case of invalid parameters passed to this function.
- */
-static int ufshcd_get_lu_wp(struct ufs_hba *hba,
-			    u8 lun,
-			    u8 *b_lu_write_protect)
-{
-	int ret;
-
-	if (!b_lu_write_protect)
-		ret = -EINVAL;
-	/*
-	 * According to UFS device spec, RPMB LU can't be write
-	 * protected so skip reading bLUWriteProtect parameter for
-	 * it. For other W-LUs, UNIT DESCRIPTOR is not available.
-	 */
-	else if (lun >= hba->dev_info.max_lu_supported)
-		ret = -ENOTSUPP;
-	else
-		ret = ufshcd_read_unit_desc_param(hba,
-					  lun,
-					  UNIT_DESC_PARAM_LU_WR_PROTECT,
-					  b_lu_write_protect,
-					  sizeof(*b_lu_write_protect));
-	return ret;
-}
-
-/**
- * ufshcd_get_lu_power_on_wp_status - get LU's power on write protect
- * status
- * @hba: per-adapter instance
- * @sdev: pointer to SCSI device
- *
- */
-static inline void ufshcd_get_lu_power_on_wp_status(struct ufs_hba *hba,
-						    const struct scsi_device *sdev)
-{
-	if (hba->dev_info.f_power_on_wp_en &&
-	    !hba->dev_info.is_lu_power_on_wp) {
-		u8 b_lu_write_protect;
-
-		if (!ufshcd_get_lu_wp(hba, ufshcd_scsi_to_upiu_lun(sdev->lun),
-				      &b_lu_write_protect) &&
-		    (b_lu_write_protect == UFS_LU_POWER_ON_WP))
-			hba->dev_info.is_lu_power_on_wp = true;
-	}
-}
-
-/**
  * ufshcd_setup_links - associate link b/w device wlun and other luns
  * @sdev: pointer to SCSI device
  * @hba: pointer to ufs hba
@@ -5005,6 +5092,64 @@ static void ufshcd_setup_links(struct ufs_hba *hba, struct scsi_device *sdev)
 }
 
 /**
+ * ufshcd_lu_init - Initialize the relevant parameters of the LU
+ * @hba: per-adapter instance
+ * @sdev: pointer to SCSI device
+ */
+static void ufshcd_lu_init(struct ufs_hba *hba, struct scsi_device *sdev)
+{
+	int len = QUERY_DESC_MAX_SIZE;
+	u8 lun = ufshcd_scsi_to_upiu_lun(sdev->lun);
+	u8 lun_qdepth = hba->nutrs;
+	u8 *desc_buf;
+	int ret;
+
+	desc_buf = kzalloc(len, GFP_KERNEL);
+	if (!desc_buf)
+		goto set_qdepth;
+
+	ret = ufshcd_read_unit_desc_param(hba, lun, 0, desc_buf, len);
+	if (ret < 0) {
+		if (ret == -EOPNOTSUPP)
+			/* If LU doesn't support unit descriptor, its queue depth is set to 1 */
+			lun_qdepth = 1;
+		kfree(desc_buf);
+		goto set_qdepth;
+	}
+
+	if (desc_buf[UNIT_DESC_PARAM_LU_Q_DEPTH]) {
+		/*
+		 * In per-LU queueing architecture, bLUQueueDepth will not be 0, then we will
+		 * use the smaller between UFSHCI CAP.NUTRS and UFS LU bLUQueueDepth
+		 */
+		lun_qdepth = min_t(int, desc_buf[UNIT_DESC_PARAM_LU_Q_DEPTH], hba->nutrs);
+	}
+	/*
+	 * According to UFS device specification, the write protection mode is only supported by
+	 * normal LU, not supported by WLUN.
+	 */
+	if (hba->dev_info.f_power_on_wp_en && lun < hba->dev_info.max_lu_supported &&
+	    !hba->dev_info.is_lu_power_on_wp &&
+	    desc_buf[UNIT_DESC_PARAM_LU_WR_PROTECT] == UFS_LU_POWER_ON_WP)
+		hba->dev_info.is_lu_power_on_wp = true;
+
+	/* In case of RPMB LU, check if advanced RPMB mode is enabled */
+	if (desc_buf[UNIT_DESC_PARAM_UNIT_INDEX] == UFS_UPIU_RPMB_WLUN &&
+	    desc_buf[RPMB_UNIT_DESC_PARAM_REGION_EN] & BIT(4))
+		hba->dev_info.b_advanced_rpmb_en = true;
+
+
+	kfree(desc_buf);
+set_qdepth:
+	/*
+	 * For WLUNs that don't support unit descriptor, queue depth is set to 1. For LUs whose
+	 * bLUQueueDepth == 0, the queue depth is set to a maximum value that host can queue.
+	 */
+	dev_dbg(hba->dev, "Set LU %x queue depth %d\n", lun, lun_qdepth);
+	scsi_change_queue_depth(sdev, lun_qdepth);
+}
+
+/**
  * ufshcd_slave_alloc - handle initial SCSI device configurations
  * @sdev: pointer to SCSI device
  *
@@ -5031,12 +5176,12 @@ static int ufshcd_slave_alloc(struct scsi_device *sdev)
 	/* WRITE_SAME command is not supported */
 	sdev->no_write_same = 1;
 
-	ufshcd_set_queue_depth(sdev);
-
-	ufshcd_get_lu_power_on_wp_status(hba, sdev);
+	ufshcd_lu_init(hba, sdev);
 
 	ufshcd_setup_links(hba, sdev);
 
+	trace_android_vh_ufs_update_sdev(sdev);
+
 	return 0;
 }
 
@@ -5103,6 +5248,8 @@ static int ufshcd_slave_configure(struct scsi_device *sdev)
 
 	ufshcd_crypto_register(hba, q);
 
+	trace_android_vh_ufs_update_sdev(sdev);
+
 	return 0;
 }
 
@@ -5184,18 +5331,20 @@ ufshcd_scsi_cmd_status(struct ufshcd_lrb *lrbp, int scsi_status)
  * ufshcd_transfer_rsp_status - Get overall status of the response
  * @hba: per adapter instance
  * @lrbp: pointer to local reference block of completed command
+ * @cqe: pointer to the completion queue entry
  *
  * Returns result of the command to notify SCSI midlayer
  */
 static inline int
-ufshcd_transfer_rsp_status(struct ufs_hba *hba, struct ufshcd_lrb *lrbp)
+ufshcd_transfer_rsp_status(struct ufs_hba *hba, struct ufshcd_lrb *lrbp,
+			   struct cq_entry *cqe)
 {
 	int result = 0;
 	int scsi_status;
 	enum utp_ocs ocs;
 
 	/* overall command status of utrd */
-	ocs = ufshcd_get_tr_ocs(lrbp);
+	ocs = ufshcd_get_tr_ocs(lrbp, cqe);
 
 	if (hba->quirks & UFSHCD_QUIRK_BROKEN_OCS_FATAL_ERROR) {
 		if (be32_to_cpu(lrbp->ucd_rsp_ptr->header.dword_1) &
@@ -5284,7 +5433,7 @@ ufshcd_transfer_rsp_status(struct ufs_hba *hba, struct ufshcd_lrb *lrbp)
 
 	if ((host_byte(result) != DID_OK) &&
 	    (host_byte(result) != DID_REQUEUE) && !hba->silence_err_logs)
-		ufshcd_print_trs(hba, 1 << lrbp->task_tag, true);
+		ufshcd_print_tr(hba, lrbp->task_tag, true);
 	return result;
 }
 
@@ -5348,18 +5497,56 @@ static irqreturn_t ufshcd_uic_cmd_compl(struct ufs_hba *hba, u32 intr_status)
 }
 
 /* Release the resources allocated for processing a SCSI command. */
-static void ufshcd_release_scsi_cmd(struct ufs_hba *hba,
-				    struct ufshcd_lrb *lrbp)
+void ufshcd_release_scsi_cmd(struct ufs_hba *hba,
+			     struct ufshcd_lrb *lrbp)
 {
 	struct scsi_cmnd *cmd = lrbp->cmd;
 
 	scsi_dma_unmap(cmd);
+	ufshcd_crypto_clear_prdt(hba, lrbp);
 	lrbp->cmd = NULL;	/* Mark the command as completed. */
 	ufshcd_release(hba);
 	ufshcd_clk_scaling_update_busy(hba);
 }
 
 /**
+ * ufshcd_compl_one_cqe - handle a completion queue entry
+ * @hba: per adapter instance
+ * @task_tag: the task tag of the request to be completed
+ * @cqe: pointer to the completion queue entry
+ */
+void ufshcd_compl_one_cqe(struct ufs_hba *hba, int task_tag,
+			  struct cq_entry *cqe)
+{
+	struct ufshcd_lrb *lrbp;
+	struct scsi_cmnd *cmd;
+
+	lrbp = &hba->lrb[task_tag];
+	lrbp->compl_time_stamp = ktime_get();
+	lrbp->compl_time_stamp_local_clock = local_clock();
+	cmd = lrbp->cmd;
+	if (cmd) {
+		trace_android_vh_ufs_compl_command(hba, lrbp);
+		if (unlikely(ufshcd_should_inform_monitor(hba, lrbp)))
+			ufshcd_update_monitor(hba, lrbp);
+		ufshcd_add_command_trace(hba, task_tag, UFS_CMD_COMP);
+		cmd->result = ufshcd_transfer_rsp_status(hba, lrbp, cqe);
+		ufshcd_release_scsi_cmd(hba, lrbp);
+		/* Do not touch lrbp after scsi done */
+		scsi_done(cmd);
+	} else if (lrbp->command_type == UTP_CMD_TYPE_DEV_MANAGE ||
+		   lrbp->command_type == UTP_CMD_TYPE_UFS_STORAGE) {
+		if (hba->dev_cmd.complete) {
+			trace_android_vh_ufs_compl_command(hba, lrbp);
+			hba->dev_cmd.cqe = cqe;
+			ufshcd_add_command_trace(hba, task_tag, UFS_DEV_COMP);
+			complete(hba->dev_cmd.complete);
+			ufshcd_clk_scaling_update_busy(hba);
+		}
+	}
+}
+
+/**
  * __ufshcd_transfer_req_compl - handle SCSI and query command completion
  * @hba: per adapter instance
  * @completed_reqs: bitmask that indicates which requests to complete
@@ -5367,33 +5554,10 @@ static void ufshcd_release_scsi_cmd(struct ufs_hba *hba,
 static void __ufshcd_transfer_req_compl(struct ufs_hba *hba,
 					unsigned long completed_reqs)
 {
-	struct ufshcd_lrb *lrbp;
-	struct scsi_cmnd *cmd;
-	int index;
+	int tag;
 
-	for_each_set_bit(index, &completed_reqs, hba->nutrs) {
-		lrbp = &hba->lrb[index];
-		lrbp->compl_time_stamp = ktime_get();
-		lrbp->compl_time_stamp_local_clock = local_clock();
-		cmd = lrbp->cmd;
-		if (cmd) {
-			if (unlikely(ufshcd_should_inform_monitor(hba, lrbp)))
-				ufshcd_update_monitor(hba, lrbp);
-			ufshcd_add_command_trace(hba, index, UFS_CMD_COMP);
-			cmd->result = ufshcd_transfer_rsp_status(hba, lrbp);
-			ufshcd_release_scsi_cmd(hba, lrbp);
-			/* Do not touch lrbp after scsi done */
-			scsi_done(cmd);
-		} else if (lrbp->command_type == UTP_CMD_TYPE_DEV_MANAGE ||
-			lrbp->command_type == UTP_CMD_TYPE_UFS_STORAGE) {
-			if (hba->dev_cmd.complete) {
-				ufshcd_add_command_trace(hba, index,
-							 UFS_DEV_COMP);
-				complete(hba->dev_cmd.complete);
-				ufshcd_clk_scaling_update_busy(hba);
-			}
-		}
-	}
+	for_each_set_bit(tag, &completed_reqs, hba->nutrs)
+		ufshcd_compl_one_cqe(hba, tag, NULL);
 }
 
 /* Any value that is not an existing queue number is fine for this constant. */
@@ -5425,6 +5589,13 @@ static int ufshcd_poll(struct Scsi_Host *shost, unsigned int queue_num)
 	struct ufs_hba *hba = shost_priv(shost);
 	unsigned long completed_reqs, flags;
 	u32 tr_doorbell;
+	struct ufs_hw_queue *hwq;
+
+	if (is_mcq_enabled(hba)) {
+		hwq = &hba->uhq[queue_num + UFSHCD_MCQ_IO_QUEUE_OFFSET];
+
+		return ufshcd_mcq_poll_cqe_lock(hba, hwq);
+	}
 
 	spin_lock_irqsave(&hba->outstanding_lock, flags);
 	tr_doorbell = ufshcd_readl(hba, REG_UTP_TRANSFER_REQ_DOOR_BELL);
@@ -5446,6 +5617,57 @@ static int ufshcd_poll(struct Scsi_Host *shost, unsigned int queue_num)
 }
 
 /**
+ * ufshcd_mcq_compl_pending_transfer - MCQ mode function. It is
+ * invoked from the error handler context or ufshcd_host_reset_and_restore()
+ * to complete the pending transfers and free the resources associated with
+ * the scsi command.
+ *
+ * @hba: per adapter instance
+ * @force_compl: This flag is set to true when invoked
+ * from ufshcd_host_reset_and_restore() in which case it requires special
+ * handling because the host controller has been reset by ufshcd_hba_stop().
+ */
+static void ufshcd_mcq_compl_pending_transfer(struct ufs_hba *hba,
+					      bool force_compl)
+{
+	struct ufs_hw_queue *hwq;
+	struct ufshcd_lrb *lrbp;
+	struct scsi_cmnd *cmd;
+	unsigned long flags;
+	u32 hwq_num, utag;
+	int tag;
+
+	for (tag = 0; tag < hba->nutrs; tag++) {
+		lrbp = &hba->lrb[tag];
+		cmd = lrbp->cmd;
+		if (!ufshcd_cmd_inflight(cmd) ||
+		    test_bit(SCMD_STATE_COMPLETE, &cmd->state))
+			continue;
+
+		utag = blk_mq_unique_tag(scsi_cmd_to_rq(cmd));
+		hwq_num = blk_mq_unique_tag_to_hwq(utag);
+		hwq = &hba->uhq[hwq_num + UFSHCD_MCQ_IO_QUEUE_OFFSET];
+
+		if (force_compl) {
+			ufshcd_mcq_compl_all_cqes_lock(hba, hwq);
+			/*
+			 * For those cmds of which the cqes are not present
+			 * in the cq, complete them explicitly.
+			 */
+			if (cmd && !test_bit(SCMD_STATE_COMPLETE, &cmd->state)) {
+				spin_lock_irqsave(&hwq->cq_lock, flags);
+				set_host_byte(cmd, DID_REQUEUE);
+				ufshcd_release_scsi_cmd(hba, lrbp);
+				scsi_done(cmd);
+				spin_unlock_irqrestore(&hwq->cq_lock, flags);
+			}
+		} else {
+			ufshcd_mcq_poll_cqe_lock(hba, hwq);
+		}
+	}
+}
+
+/**
  * ufshcd_transfer_req_compl - handle SCSI and query command completion
  * @hba: per adapter instance
  *
@@ -5678,7 +5900,7 @@ static inline int ufshcd_get_bkops_status(struct ufs_hba *hba, u32 *status)
  * to know whether auto bkops is enabled or disabled after this function
  * returns control to it.
  */
-static int ufshcd_bkops_ctrl(struct ufs_hba *hba,
+int ufshcd_bkops_ctrl(struct ufs_hba *hba,
 			     enum bkops_status status)
 {
 	int err;
@@ -5703,6 +5925,7 @@ static int ufshcd_bkops_ctrl(struct ufs_hba *hba,
 out:
 	return err;
 }
+EXPORT_SYMBOL_GPL(ufshcd_bkops_ctrl);
 
 /**
  * ufshcd_urgent_bkops - handle urgent bkops exception event
@@ -6009,9 +6232,13 @@ static void ufshcd_exception_event_handler(struct work_struct *work)
 }
 
 /* Complete requests that have door-bell cleared */
-static void ufshcd_complete_requests(struct ufs_hba *hba)
+static void ufshcd_complete_requests(struct ufs_hba *hba, bool force_compl)
 {
-	ufshcd_transfer_req_compl(hba);
+	if (is_mcq_enabled(hba))
+		ufshcd_mcq_compl_pending_transfer(hba, force_compl);
+	else
+		ufshcd_transfer_req_compl(hba);
+
 	ufshcd_tmc_handler(hba);
 }
 
@@ -6247,6 +6474,56 @@ static bool ufshcd_is_pwr_mode_restore_needed(struct ufs_hba *hba)
 	return false;
 }
 
+static bool ufshcd_abort_all(struct ufs_hba *hba)
+{
+	bool needs_reset = false;
+	int tag, ret;
+
+	if (is_mcq_enabled(hba)) {
+		struct ufshcd_lrb *lrbp;
+		int tag;
+
+		for (tag = 0; tag < hba->nutrs; tag++) {
+			lrbp = &hba->lrb[tag];
+			if (!ufshcd_cmd_inflight(lrbp->cmd))
+				continue;
+			ret = ufshcd_try_to_abort_task(hba, tag);
+			dev_err(hba->dev, "Aborting tag %d / CDB %#02x %s\n", tag,
+				hba->lrb[tag].cmd ? hba->lrb[tag].cmd->cmnd[0] : -1,
+				ret ? "failed" : "succeeded");
+			if (ret) {
+				needs_reset = true;
+				goto out;
+			}
+		}
+	} else {
+		/* Clear pending transfer requests */
+		for_each_set_bit(tag, &hba->outstanding_reqs, hba->nutrs) {
+			ret = ufshcd_try_to_abort_task(hba, tag);
+			dev_err(hba->dev, "Aborting tag %d / CDB %#02x %s\n", tag,
+				hba->lrb[tag].cmd ? hba->lrb[tag].cmd->cmnd[0] : -1,
+				ret ? "failed" : "succeeded");
+			if (ret) {
+				needs_reset = true;
+				goto out;
+			}
+		}
+	}
+	/* Clear pending task management requests */
+	for_each_set_bit(tag, &hba->outstanding_tasks, hba->nutmrs) {
+		if (ufshcd_clear_tm_cmd(hba, tag)) {
+			needs_reset = true;
+			goto out;
+		}
+	}
+
+out:
+	/* Complete the requests that are cleared by s/w */
+	ufshcd_complete_requests(hba, false);
+
+	return needs_reset;
+}
+
 /**
  * ufshcd_err_handler - handle UFS errors that require s/w attention
  * @work: pointer to work structure
@@ -6258,10 +6535,7 @@ static void ufshcd_err_handler(struct work_struct *work)
 	unsigned long flags;
 	bool needs_restore;
 	bool needs_reset;
-	bool err_xfer;
-	bool err_tm;
 	int pmc_err;
-	int tag;
 
 	hba = container_of(work, struct ufs_hba, eh_work);
 
@@ -6285,13 +6559,11 @@ static void ufshcd_err_handler(struct work_struct *work)
 	spin_unlock_irqrestore(hba->host->host_lock, flags);
 	ufshcd_err_handling_prepare(hba);
 	/* Complete requests that have door-bell cleared by h/w */
-	ufshcd_complete_requests(hba);
+	ufshcd_complete_requests(hba, false);
 	spin_lock_irqsave(hba->host->host_lock, flags);
 again:
 	needs_restore = false;
 	needs_reset = false;
-	err_xfer = false;
-	err_tm = false;
 
 	if (hba->ufshcd_state != UFSHCD_STATE_ERROR)
 		hba->ufshcd_state = UFSHCD_STATE_RESET;
@@ -6323,7 +6595,7 @@ static void ufshcd_err_handler(struct work_struct *work)
 		ufshcd_print_pwr_info(hba);
 		ufshcd_print_evt_hist(hba);
 		ufshcd_print_tmrs(hba, hba->outstanding_tasks);
-		ufshcd_print_trs(hba, hba->outstanding_reqs, pr_prdt);
+		ufshcd_print_trs_all(hba, pr_prdt);
 		spin_lock_irqsave(hba->host->host_lock, flags);
 	}
 
@@ -6360,34 +6632,13 @@ static void ufshcd_err_handler(struct work_struct *work)
 	hba->silence_err_logs = true;
 	/* release lock as clear command might sleep */
 	spin_unlock_irqrestore(hba->host->host_lock, flags);
-	/* Clear pending transfer requests */
-	for_each_set_bit(tag, &hba->outstanding_reqs, hba->nutrs) {
-		if (ufshcd_try_to_abort_task(hba, tag)) {
-			err_xfer = true;
-			goto lock_skip_pending_xfer_clear;
-		}
-		dev_err(hba->dev, "Aborted tag %d / CDB %#02x\n", tag,
-			hba->lrb[tag].cmd ? hba->lrb[tag].cmd->cmnd[0] : -1);
-	}
 
-	/* Clear pending task management requests */
-	for_each_set_bit(tag, &hba->outstanding_tasks, hba->nutmrs) {
-		if (ufshcd_clear_tm_cmd(hba, tag)) {
-			err_tm = true;
-			goto lock_skip_pending_xfer_clear;
-		}
-	}
-
-lock_skip_pending_xfer_clear:
-	/* Complete the requests that are cleared by s/w */
-	ufshcd_complete_requests(hba);
+	needs_reset = ufshcd_abort_all(hba);
 
 	spin_lock_irqsave(hba->host->host_lock, flags);
 	hba->silence_err_logs = false;
-	if (err_xfer || err_tm) {
-		needs_reset = true;
+	if (needs_reset)
 		goto do_reset;
-	}
 
 	/*
 	 * After all reqs and tasks are cleared from doorbell,
@@ -6587,6 +6838,8 @@ static irqreturn_t ufshcd_check_errors(struct ufs_hba *hba, u32 intr_status)
 		queue_eh_work = true;
 	}
 
+	trace_android_vh_ufs_check_int_errors(hba, queue_eh_work);
+
 	if (queue_eh_work) {
 		/*
 		 * update the transfer error masks to sticky bits, let's do this
@@ -6652,6 +6905,40 @@ static irqreturn_t ufshcd_tmc_handler(struct ufs_hba *hba)
 }
 
 /**
+ * ufshcd_handle_mcq_cq_events - handle MCQ completion queue events
+ * @hba: per adapter instance
+ *
+ * Returns IRQ_HANDLED if interrupt is handled
+ */
+static irqreturn_t ufshcd_handle_mcq_cq_events(struct ufs_hba *hba)
+{
+	struct ufs_hw_queue *hwq;
+	unsigned long outstanding_cqs;
+	unsigned int nr_queues;
+	int i, ret;
+	u32 events;
+
+	ret = ufshcd_vops_get_outstanding_cqs(hba, &outstanding_cqs);
+	if (ret)
+		outstanding_cqs = (1U << hba->nr_hw_queues) - 1;
+
+	/* Exclude the poll queues */
+	nr_queues = hba->nr_hw_queues - hba->nr_queues[HCTX_TYPE_POLL];
+	for_each_set_bit(i, &outstanding_cqs, nr_queues) {
+		hwq = &hba->uhq[i];
+
+		events = ufshcd_mcq_read_cqis(hba, i);
+		if (events)
+			ufshcd_mcq_write_cqis(hba, events, i);
+
+		if (events & UFSHCD_MCQ_CQIS_TAIL_ENT_PUSH_STS)
+			ufshcd_mcq_poll_cqe_lock(hba, hwq);
+	}
+
+	return IRQ_HANDLED;
+}
+
+/**
  * ufshcd_sl_intr - Interrupt service routine
  * @hba: per adapter instance
  * @intr_status: contains interrupts generated by the controller
@@ -6676,6 +6963,9 @@ static irqreturn_t ufshcd_sl_intr(struct ufs_hba *hba, u32 intr_status)
 	if (intr_status & UTP_TRANSFER_REQ_COMPL)
 		retval |= ufshcd_transfer_req_compl(hba);
 
+	if (intr_status & MCQ_CQ_EVENT_STATUS)
+		retval |= ufshcd_handle_mcq_cq_events(hba);
+
 	return retval;
 }
 
@@ -6924,7 +7214,7 @@ static int ufshcd_issue_devman_upiu_cmd(struct ufs_hba *hba,
 	/* update the task tag in the request upiu */
 	req_upiu->header.dword_0 |= cpu_to_be32(tag);
 
-	ufshcd_prepare_req_desc_hdr(lrbp, &upiu_flags, DMA_NONE);
+	ufshcd_prepare_req_desc_hdr(lrbp, &upiu_flags, DMA_NONE, 0);
 
 	/* just copy the upiu request as it is */
 	memcpy(lrbp->ucd_req_ptr, req_upiu, sizeof(*lrbp->ucd_req_ptr));
@@ -6943,7 +7233,7 @@ static int ufshcd_issue_devman_upiu_cmd(struct ufs_hba *hba,
 
 	ufshcd_add_query_upiu_trace(hba, UFS_QUERY_SEND, lrbp->ucd_req_ptr);
 
-	ufshcd_send_command(hba, tag);
+	ufshcd_send_command(hba, tag, hba->dev_cmd_queue);
 	/*
 	 * ignore the returning value here - ufshcd_check_query_response is
 	 * bound to fail since dev_cmd.query and dev_cmd.type were left empty.
@@ -7048,6 +7338,100 @@ int ufshcd_exec_raw_upiu_cmd(struct ufs_hba *hba,
 }
 
 /**
+ * ufshcd_advanced_rpmb_req_handler - handle advanced RPMB request
+ * @hba:	per adapter instance
+ * @req_upiu:	upiu request
+ * @rsp_upiu:	upiu reply
+ * @req_ehs:	EHS field which contains Advanced RPMB Request Message
+ * @rsp_ehs:	EHS field which returns Advanced RPMB Response Message
+ * @sg_cnt:	The number of sg lists actually used
+ * @sg_list:	Pointer to SG list when DATA IN/OUT UPIU is required in ARPMB operation
+ * @dir:	DMA direction
+ *
+ * Returns zero on success, non-zero on failure
+ */
+int ufshcd_advanced_rpmb_req_handler(struct ufs_hba *hba, struct utp_upiu_req *req_upiu,
+			 struct utp_upiu_req *rsp_upiu, struct ufs_ehs *req_ehs,
+			 struct ufs_ehs *rsp_ehs, int sg_cnt, struct scatterlist *sg_list,
+			 enum dma_data_direction dir)
+{
+	DECLARE_COMPLETION_ONSTACK(wait);
+	const u32 tag = hba->reserved_slot;
+	struct ufshcd_lrb *lrbp;
+	int err = 0;
+	int result;
+	u8 upiu_flags;
+	u8 *ehs_data;
+	u16 ehs_len;
+
+	/* Protects use of hba->reserved_slot. */
+	ufshcd_hold(hba, false);
+	mutex_lock(&hba->dev_cmd.lock);
+	down_read(&hba->clk_scaling_lock);
+
+	lrbp = &hba->lrb[tag];
+	WARN_ON(lrbp->cmd);
+	lrbp->cmd = NULL;
+	lrbp->task_tag = tag;
+	lrbp->lun = UFS_UPIU_RPMB_WLUN;
+
+	lrbp->intr_cmd = true;
+	ufshcd_prepare_lrbp_crypto(NULL, lrbp);
+	hba->dev_cmd.type = DEV_CMD_TYPE_RPMB;
+
+	/* Advanced RPMB starts from UFS 4.0, so its command type is UTP_CMD_TYPE_UFS_STORAGE */
+	lrbp->command_type = UTP_CMD_TYPE_UFS_STORAGE;
+
+	ufshcd_prepare_req_desc_hdr(lrbp, &upiu_flags, dir, 2);
+
+	/* update the task tag and LUN in the request upiu */
+	req_upiu->header.dword_0 |= cpu_to_be32(upiu_flags << 16 | UFS_UPIU_RPMB_WLUN << 8 | tag);
+
+	/* copy the UPIU(contains CDB) request as it is */
+	memcpy(lrbp->ucd_req_ptr, req_upiu, sizeof(*lrbp->ucd_req_ptr));
+	/* Copy EHS, starting with byte32, immediately after the CDB package */
+	memcpy(lrbp->ucd_req_ptr + 1, req_ehs, sizeof(*req_ehs));
+
+	if (dir != DMA_NONE && sg_list)
+		ufshcd_sgl_to_prdt(hba, lrbp, sg_cnt, sg_list);
+
+	memset(lrbp->ucd_rsp_ptr, 0, sizeof(struct utp_upiu_rsp));
+
+	hba->dev_cmd.complete = &wait;
+
+	ufshcd_send_command(hba, tag, hba->dev_cmd_queue);
+
+	err = ufshcd_wait_for_dev_cmd(hba, lrbp, ADVANCED_RPMB_REQ_TIMEOUT);
+
+	if (!err) {
+		/* Just copy the upiu response as it is */
+		memcpy(rsp_upiu, lrbp->ucd_rsp_ptr, sizeof(*rsp_upiu));
+		/* Get the response UPIU result */
+		result = ufshcd_get_rsp_upiu_result(lrbp->ucd_rsp_ptr);
+
+		ehs_len = be32_to_cpu(lrbp->ucd_rsp_ptr->header.dword_2) >> 24;
+		/*
+		 * Since the bLength in EHS indicates the total size of the EHS Header and EHS Data
+		 * in 32 Byte units, the value of the bLength Request/Response for Advanced RPMB
+		 * Message is 02h
+		 */
+		if (ehs_len == 2 && rsp_ehs) {
+			/*
+			 * ucd_rsp_ptr points to a buffer with a length of 512 bytes
+			 * (ALIGNED_UPIU_SIZE = 512), and the EHS data just starts from byte32
+			 */
+			ehs_data = (u8 *)lrbp->ucd_rsp_ptr + EHS_OFFSET_IN_RESPONSE;
+			memcpy(rsp_ehs, ehs_data, ehs_len * 32);
+		}
+	}
+
+	up_read(&hba->clk_scaling_lock);
+	mutex_unlock(&hba->dev_cmd.lock);
+	ufshcd_release(hba);
+	return err ? : result;
+}
+
+/**
  * ufshcd_eh_device_reset_handler() - Reset a single logical unit.
  * @cmd: SCSI command pointer
  *
@@ -7058,7 +7442,9 @@ static int ufshcd_eh_device_reset_handler(struct scsi_cmnd *cmd)
 	unsigned long flags, pending_reqs = 0, not_cleared = 0;
 	struct Scsi_Host *host;
 	struct ufs_hba *hba;
-	u32 pos;
+	struct ufs_hw_queue *hwq;
+	struct ufshcd_lrb *lrbp;
+	u32 pos, not_cleared_mask = 0;
 	int err;
 	u8 resp = 0xF, lun;
 
@@ -7073,6 +7459,20 @@ static int ufshcd_eh_device_reset_handler(struct scsi_cmnd *cmd)
 		goto out;
 	}
 
+	if (is_mcq_enabled(hba)) {
+		for (pos = 0; pos < hba->nutrs; pos++) {
+			lrbp = &hba->lrb[pos];
+			if (ufshcd_cmd_inflight(lrbp->cmd) &&
+			    lrbp->lun == lun) {
+				ufshcd_clear_cmd(hba, pos);
+				hwq = ufshcd_mcq_req_to_hwq(hba, scsi_cmd_to_rq(lrbp->cmd));
+				ufshcd_mcq_poll_cqe_lock(hba, hwq);
+			}
+		}
+		err = 0;
+		goto out;
+	}
+
 	/* clear the commands that were pending for corresponding LUN */
 	spin_lock_irqsave(&hba->outstanding_lock, flags);
 	for_each_set_bit(pos, &hba->outstanding_reqs, hba->nutrs)
@@ -7081,17 +7481,20 @@ static int ufshcd_eh_device_reset_handler(struct scsi_cmnd *cmd)
 	hba->outstanding_reqs &= ~pending_reqs;
 	spin_unlock_irqrestore(&hba->outstanding_lock, flags);
 
-	if (ufshcd_clear_cmds(hba, pending_reqs) < 0) {
-		spin_lock_irqsave(&hba->outstanding_lock, flags);
-		not_cleared = pending_reqs &
-			ufshcd_readl(hba, REG_UTP_TRANSFER_REQ_DOOR_BELL);
-		hba->outstanding_reqs |= not_cleared;
-		spin_unlock_irqrestore(&hba->outstanding_lock, flags);
+	for_each_set_bit(pos, &pending_reqs, hba->nutrs) {
+		if (ufshcd_clear_cmd(hba, pos) < 0) {
+			spin_lock_irqsave(&hba->outstanding_lock, flags);
+			not_cleared = 1U << pos &
+				ufshcd_readl(hba, REG_UTP_TRANSFER_REQ_DOOR_BELL);
+			hba->outstanding_reqs |= not_cleared;
+			not_cleared_mask |= not_cleared;
+			spin_unlock_irqrestore(&hba->outstanding_lock, flags);
 
-		dev_err(hba->dev, "%s: failed to clear requests %#lx\n",
-			__func__, not_cleared);
+			dev_err(hba->dev, "%s: failed to clear request %d\n",
+				__func__, pos);
+		}
 	}
-	__ufshcd_transfer_req_compl(hba, pending_reqs & ~not_cleared);
+	__ufshcd_transfer_req_compl(hba, pending_reqs & ~not_cleared_mask);
 
 out:
 	hba->req_abort_count = 0;
@@ -7129,7 +7532,7 @@ static void ufshcd_set_req_abort_skip(struct ufs_hba *hba, unsigned long bitmap)
  *
  * Returns zero on success, non-zero on failure
  */
-static int ufshcd_try_to_abort_task(struct ufs_hba *hba, int tag)
+int ufshcd_try_to_abort_task(struct ufs_hba *hba, int tag)
 {
 	struct ufshcd_lrb *lrbp = &hba->lrb[tag];
 	int err = 0;
@@ -7152,6 +7555,20 @@ static int ufshcd_try_to_abort_task(struct ufs_hba *hba, int tag)
 			 */
 			dev_err(hba->dev, "%s: cmd at tag %d not pending in the device.\n",
 				__func__, tag);
+			if (is_mcq_enabled(hba)) {
+				/* MCQ mode */
+				if (ufshcd_cmd_inflight(lrbp->cmd)) {
+					/* sleep for max. 200us same delay as in SDB mode */
+					usleep_range(100, 200);
+					continue;
+				}
+				/* command completed already */
+				dev_err(hba->dev, "%s: cmd at tag=%d is cleared.\n",
+					__func__, tag);
+				goto out;
+			}
+
+			/* Single Doorbell Mode */
 			reg = ufshcd_readl(hba, REG_UTP_TRANSFER_REQ_DOOR_BELL);
 			if (reg & (1 << tag)) {
 				/* sleep for max. 200us to stabilize */
@@ -7188,7 +7605,7 @@ static int ufshcd_try_to_abort_task(struct ufs_hba *hba, int tag)
 		goto out;
 	}
 
-	err = ufshcd_clear_cmds(hba, 1U << tag);
+	err = ufshcd_clear_cmd(hba, tag);
 	if (err)
 		dev_err(hba->dev, "%s: Failed clearing cmd at tag %d, err %d\n",
 			__func__, tag, err);
@@ -7216,16 +7633,24 @@ static int ufshcd_abort(struct scsi_cmnd *cmd)
 
 	WARN_ONCE(tag < 0, "Invalid tag %d\n", tag);
 
-	ufshcd_hold(hba, false);
-	reg = ufshcd_readl(hba, REG_UTP_TRANSFER_REQ_DOOR_BELL);
-	/* If command is already aborted/completed, return FAILED. */
-	if (!(test_bit(tag, &hba->outstanding_reqs))) {
-		dev_err(hba->dev,
-			"%s: cmd at tag %d already completed, outstanding=0x%lx, doorbell=0x%x\n",
-			__func__, tag, hba->outstanding_reqs, reg);
-		goto release;
+	if (ufshcd_use_mcq_hooks(hba)) {
+		trace_android_vh_ufs_mcq_abort(hba, cmd, &err);
+		return err;
 	}
 
+	ufshcd_hold(hba, false);
+
+	if (!is_mcq_enabled(hba)) {
+		reg = ufshcd_readl(hba, REG_UTP_TRANSFER_REQ_DOOR_BELL);
+		if (!test_bit(tag, &hba->outstanding_reqs)) {
+			/* If command is already aborted/completed, return FAILED. */
+			dev_err(hba->dev,
+				"%s: cmd at tag %d already completed, outstanding=0x%lx, doorbell=0x%x\n",
+				__func__, tag, hba->outstanding_reqs, reg);
+			goto release;
+		}
+ 	}
+
 	/* Print Transfer Request of aborted task */
 	dev_info(hba->dev, "%s: Device abort task at tag %d\n", __func__, tag);
 
@@ -7242,13 +7667,14 @@ static int ufshcd_abort(struct scsi_cmnd *cmd)
 		ufshcd_print_evt_hist(hba);
 		ufshcd_print_host_state(hba);
 		ufshcd_print_pwr_info(hba);
-		ufshcd_print_trs(hba, 1 << tag, true);
+		ufshcd_print_tr(hba, tag, true);
 	} else {
-		ufshcd_print_trs(hba, 1 << tag, false);
+		ufshcd_print_tr(hba, tag, false);
 	}
 	hba->req_abort_count++;
 
-	if (!(reg & (1 << tag))) {
+	if (!is_mcq_enabled(hba) && !(reg & (1 << tag))) {
+		/* only execute this code in single doorbell mode */
 		dev_err(hba->dev,
 		"%s: cmd was completed, but without a notifying intr, tag = %d",
 		__func__, tag);
@@ -7274,6 +7700,12 @@ static int ufshcd_abort(struct scsi_cmnd *cmd)
 		goto release;
 	}
 
+	if (is_mcq_enabled(hba)) {
+		/* MCQ mode. Branch off to handle abort for mcq mode */
+		err = ufshcd_mcq_abort(cmd);
+		goto release;
+	}
+
 	/* Skip task abort in case previous aborts failed and report failure */
 	if (lrbp->req_abort_skip) {
 		dev_err(hba->dev, "%s: skipping abort\n", __func__);
@@ -7329,7 +7761,7 @@ static int ufshcd_host_reset_and_restore(struct ufs_hba *hba)
 	ufshpb_toggle_state(hba, HPB_PRESENT, HPB_RESET);
 	ufshcd_hba_stop(hba);
 	hba->silence_err_logs = true;
-	ufshcd_complete_requests(hba);
+	ufshcd_complete_requests(hba, true);
 	hba->silence_err_logs = false;
 
 	/* scale up clocks to max frequency before full reinitialization */
@@ -7489,12 +7921,11 @@ static u32 ufshcd_get_max_icc_level(int sup_curr_uA, u32 start_scan,
  * In case regulators are not initialized we'll return 0
  * @hba: per-adapter instance
  * @desc_buf: power descriptor buffer to extract ICC levels from.
- * @len: length of desc_buff
  *
  * Returns calculated ICC level
  */
 static u32 ufshcd_find_max_sup_active_icc_level(struct ufs_hba *hba,
-						const u8 *desc_buf, int len)
+						const u8 *desc_buf)
 {
 	u32 icc_level = 0;
 
@@ -7536,25 +7967,23 @@ static u32 ufshcd_find_max_sup_active_icc_level(struct ufs_hba *hba,
 static void ufshcd_set_active_icc_lvl(struct ufs_hba *hba)
 {
 	int ret;
-	int buff_len = hba->desc_size[QUERY_DESC_IDN_POWER];
 	u8 *desc_buf;
 	u32 icc_level;
 
-	desc_buf = kmalloc(buff_len, GFP_KERNEL);
+	desc_buf = kzalloc(QUERY_DESC_MAX_SIZE, GFP_KERNEL);
 	if (!desc_buf)
 		return;
 
 	ret = ufshcd_read_desc_param(hba, QUERY_DESC_IDN_POWER, 0, 0,
-				     desc_buf, buff_len);
+				     desc_buf, QUERY_DESC_MAX_SIZE);
 	if (ret) {
 		dev_err(hba->dev,
-			"%s: Failed reading power descriptor.len = %d ret = %d",
-			__func__, buff_len, ret);
+			"%s: Failed reading power descriptor ret = %d",
+			__func__, ret);
 		goto out;
 	}
 
-	icc_level = ufshcd_find_max_sup_active_icc_level(hba, desc_buf,
-							 buff_len);
+	icc_level = ufshcd_find_max_sup_active_icc_level(hba, desc_buf);
 	dev_dbg(hba->dev, "%s: setting icc_level 0x%x", __func__, icc_level);
 
 	ret = ufshcd_query_attr_retry(hba, UPIU_QUERY_OPCODE_WRITE_ATTR,
@@ -7664,10 +8093,6 @@ static void ufshcd_wb_probe(struct ufs_hba *hba, const u8 *desc_buf)
 	     (hba->dev_quirks & UFS_DEVICE_QUIRK_SUPPORT_EXTENDED_FEATURES)))
 		goto wb_disabled;
 
-	if (hba->desc_size[QUERY_DESC_IDN_DEVICE] <
-	    DEVICE_DESC_PARAM_EXT_UFS_FEATURE_SUP + 4)
-		goto wb_disabled;
-
 	ext_ufs_feature = get_unaligned_be32(desc_buf +
 					DEVICE_DESC_PARAM_EXT_UFS_FEATURE_SUP);
 
@@ -7738,6 +8163,31 @@ static void ufshcd_temp_notif_probe(struct ufs_hba *hba, const u8 *desc_buf)
 	}
 }
 
+static void ufshcd_ext_iid_probe(struct ufs_hba *hba, u8 *desc_buf)
+{
+	struct ufs_dev_info *dev_info = &hba->dev_info;
+	u32 ext_ufs_feature;
+	u32 ext_iid_en = 0;
+	int err;
+
+	/* Only UFS-4.0 and above may support EXT_IID */
+	if (dev_info->wspecversion < 0x400)
+		goto out;
+
+	ext_ufs_feature = get_unaligned_be32(desc_buf +
+				     DEVICE_DESC_PARAM_EXT_UFS_FEATURE_SUP);
+	if (!(ext_ufs_feature & UFS_DEV_EXT_IID_SUP))
+		goto out;
+
+	err = ufshcd_query_attr_retry(hba, UPIU_QUERY_OPCODE_READ_ATTR,
+				      QUERY_ATTR_IDN_EXT_IID_EN, 0, 0, &ext_iid_en);
+	if (err)
+		dev_err(hba->dev, "failed reading bEXTIIDEn. err = %d\n", err);
+
+out:
+	dev_info->b_ext_iid_en = ext_iid_en;
+}
+
 void ufshcd_fixup_dev_quirks(struct ufs_hba *hba,
 			     const struct ufs_dev_quirk *fixups)
 {
@@ -7775,14 +8225,14 @@ static int ufs_get_device_desc(struct ufs_hba *hba)
 	u8 *desc_buf;
 	struct ufs_dev_info *dev_info = &hba->dev_info;
 
-	desc_buf = kmalloc(QUERY_DESC_MAX_SIZE, GFP_KERNEL);
+	desc_buf = kzalloc(QUERY_DESC_MAX_SIZE, GFP_KERNEL);
 	if (!desc_buf) {
 		err = -ENOMEM;
 		goto out;
 	}
 
 	err = ufshcd_read_desc_param(hba, QUERY_DESC_IDN_DEVICE, 0, 0, desc_buf,
-				     hba->desc_size[QUERY_DESC_IDN_DEVICE]);
+				     QUERY_DESC_MAX_SIZE);
 	if (err) {
 		dev_err(hba->dev, "%s: Failed reading Device Desc. err = %d\n",
 			__func__, err);
@@ -7799,6 +8249,7 @@ static int ufs_get_device_desc(struct ufs_hba *hba)
 	/* getting Specification Version in big endian format */
 	dev_info->wspecversion = desc_buf[DEVICE_DESC_PARAM_SPEC_VER] << 8 |
 				      desc_buf[DEVICE_DESC_PARAM_SPEC_VER + 1];
+	dev_info->bqueuedepth = desc_buf[DEVICE_DESC_PARAM_Q_DPTH];
 	b_ufs_feature_sup = desc_buf[DEVICE_DESC_PARAM_UFS_FEAT];
 
 	model_index = desc_buf[DEVICE_DESC_PARAM_PRDCT_NAME];
@@ -7836,6 +8287,9 @@ static int ufs_get_device_desc(struct ufs_hba *hba)
 
 	ufshcd_temp_notif_probe(hba, desc_buf);
 
+	if (hba->ext_iid_sup)
+		ufshcd_ext_iid_probe(hba, desc_buf);
+
 	/*
 	 * ufshcd_read_string_desc returns size of the string
 	 * reset the error value
@@ -8029,18 +8483,16 @@ static void ufshcd_clear_dbg_ufs_stats(struct ufs_hba *hba)
 static int ufshcd_device_geo_params_init(struct ufs_hba *hba)
 {
 	int err;
-	size_t buff_len;
 	u8 *desc_buf;
 
-	buff_len = hba->desc_size[QUERY_DESC_IDN_GEOMETRY];
-	desc_buf = kmalloc(buff_len, GFP_KERNEL);
+	desc_buf = kzalloc(QUERY_DESC_MAX_SIZE, GFP_KERNEL);
 	if (!desc_buf) {
 		err = -ENOMEM;
 		goto out;
 	}
 
 	err = ufshcd_read_desc_param(hba, QUERY_DESC_IDN_GEOMETRY, 0, 0,
-				     desc_buf, buff_len);
+				     desc_buf, QUERY_DESC_MAX_SIZE);
 	if (err) {
 		dev_err(hba->dev, "%s: Failed reading Geometry Desc. err = %d\n",
 				__func__, err);
@@ -8052,7 +8504,7 @@ static int ufshcd_device_geo_params_init(struct ufs_hba *hba)
 	else if (desc_buf[GEOMETRY_DESC_PARAM_MAX_NUM_LUN] == 0)
 		hba->dev_info.max_lu_supported = 8;
 
-	if (hba->desc_size[QUERY_DESC_IDN_GEOMETRY] >=
+	if (desc_buf[QUERY_DESC_LENGTH_OFFSET] >=
 		GEOMETRY_DESC_PARAM_HPB_MAX_ACTIVE_REGS)
 		ufshpb_get_geo_info(hba, desc_buf);
 
@@ -8137,11 +8589,7 @@ static int ufshcd_set_dev_ref_clk(struct ufs_hba *hba)
 static int ufshcd_device_params_init(struct ufs_hba *hba)
 {
 	bool flag;
-	int ret, i;
-
-	 /* Init device descriptor sizes */
-	for (i = 0; i < QUERY_DESC_IDN_MAX; i++)
-		hba->desc_size[i] = QUERY_DESC_MAX_SIZE;
+	int ret;
 
 	/* Init UFS geometry descriptor related parameters */
 	ret = ufshcd_device_geo_params_init(hba);
@@ -8209,6 +8657,87 @@ static int ufshcd_add_lus(struct ufs_hba *hba)
 	return ret;
 }
 
+/* SDB - Single Doorbell */
+static void ufshcd_release_sdb_queue(struct ufs_hba *hba, int nutrs)
+{
+	size_t ucdl_size, utrdl_size;
+
+	ucdl_size = ufshcd_get_ucd_size(hba) * nutrs;
+	dmam_free_coherent(hba->dev, ucdl_size, hba->ucdl_base_addr,
+			   hba->ucdl_dma_addr);
+
+	utrdl_size = sizeof(struct utp_transfer_req_desc) * nutrs;
+	dmam_free_coherent(hba->dev, utrdl_size, hba->utrdl_base_addr,
+			   hba->utrdl_dma_addr);
+
+	devm_kfree(hba->dev, hba->lrb);
+}
+
+static int ufshcd_alloc_mcq(struct ufs_hba *hba)
+{
+	int ret;
+	int old_nutrs = hba->nutrs;
+
+	ret = ufshcd_mcq_decide_queue_depth(hba);
+	if (ret < 0)
+		return ret;
+
+	hba->nutrs = ret;
+	ret = ufshcd_mcq_init(hba);
+	if (ret)
+		goto err;
+
+	/*
+	 * Previously allocated memory for nutrs may not be enough in MCQ mode.
+	 * Number of supported tags in MCQ mode may be larger than SDB mode.
+	 */
+	if (hba->nutrs != old_nutrs) {
+		ufshcd_release_sdb_queue(hba, old_nutrs);
+		ret = ufshcd_memory_alloc(hba);
+		if (ret)
+			goto err;
+		ufshcd_host_memory_configure(hba);
+	}
+
+	ret = ufshcd_mcq_memory_alloc(hba);
+	if (ret)
+		goto err;
+
+	return 0;
+err:
+	hba->nutrs = old_nutrs;
+	return ret;
+}
+
+static void ufshcd_config_mcq(struct ufs_hba *hba)
+{
+	int ret;
+	u32 intrs;
+
+	ret = ufshcd_mcq_vops_config_esi(hba);
+	dev_info(hba->dev, "ESI %sconfigured\n", ret ? "is not " : "");
+
+	intrs = UFSHCD_ENABLE_MCQ_INTRS;
+	if (hba->quirks & UFSHCD_QUIRK_MCQ_BROKEN_INTR)
+		intrs &= ~MCQ_CQ_EVENT_STATUS;
+	ufshcd_enable_intr(hba, intrs);
+	ufshcd_mcq_make_queues_operational(hba);
+	ufshcd_mcq_config_mac(hba, hba->nutrs);
+
+	hba->host->can_queue = hba->nutrs - UFSHCD_NUM_RESERVED;
+	hba->reserved_slot = hba->nutrs - UFSHCD_NUM_RESERVED;
+
+	/* Select MCQ mode */
+	ufshcd_writel(hba, ufshcd_readl(hba, REG_UFS_MEM_CFG) | 0x1,
+		      REG_UFS_MEM_CFG);
+	hba->mcq_enabled = true;
+
+	dev_info(hba->dev, "MCQ configured, nr_queues=%d, io_queues=%d, read_queue=%d, poll_queues=%d, queue_depth=%d\n",
+		 hba->nr_hw_queues, hba->nr_queues[HCTX_TYPE_DEFAULT],
+		 hba->nr_queues[HCTX_TYPE_READ], hba->nr_queues[HCTX_TYPE_POLL],
+		 hba->nutrs);
+}
+
 /**
  * ufshcd_probe_hba - probe hba to detect device and initialize it
  * @hba: per-adapter instance
@@ -8221,6 +8750,7 @@ static int ufshcd_probe_hba(struct ufs_hba *hba, bool init_dev_params)
 	int ret;
 	unsigned long flags;
 	ktime_t start = ktime_get();
+	struct Scsi_Host *host = hba->host;
 
 	hba->ufshcd_state = UFSHCD_STATE_RESET;
 
@@ -8237,6 +8767,10 @@ static int ufshcd_probe_hba(struct ufs_hba *hba, bool init_dev_params)
 	/* UniPro link is active now */
 	ufshcd_set_link_active(hba);
 
+	/* Reconfigure MCQ upon reset */
+	if (is_mcq_enabled(hba) && !init_dev_params)
+		ufshcd_config_mcq(hba);
+
 	/* Verify device initialization by sending NOP OUT UPIU */
 	ret = ufshcd_verify_dev_init(hba);
 	if (ret)
@@ -8254,7 +8788,27 @@ static int ufshcd_probe_hba(struct ufs_hba *hba, bool init_dev_params)
 	if (init_dev_params) {
 		ret = ufshcd_device_params_init(hba);
 		if (ret)
-			goto out;
+			return ret;
+		if (is_mcq_supported(hba) && !hba->scsi_host_added) {
+			ret = ufshcd_alloc_mcq(hba);
+			if (!ret) {
+				ufshcd_config_mcq(hba);
+			} else {
+				/* Continue with SDB mode */
+				use_mcq_mode = false;
+				dev_err(hba->dev, "MCQ mode is disabled, err=%d\n",
+					 ret);
+			}
+			ret = scsi_add_host(host, hba->dev);
+			if (ret) {
+				dev_err(hba->dev, "scsi_add_host failed\n");
+				goto out;
+			}
+			hba->scsi_host_added = true;
+		} else if (is_mcq_supported(hba)) {
+			/* UFSHCD_QUIRK_REINIT_AFTER_MAX_GEAR_SWITCH is set */
+			ufshcd_config_mcq(hba);
+		}
 	}
 
 	ufshcd_tune_unipro_params(hba);
@@ -8341,6 +8895,28 @@ static void ufshcd_async_scan(void *data, async_cookie_t cookie)
 	}
 }
 
+static enum scsi_timeout_action ufshcd_eh_timed_out(struct scsi_cmnd *scmd)
+{
+	struct ufs_hba *hba = shost_priv(scmd->device->host);
+
+	if (!hba->system_suspending) {
+		/* Activate the error handler in the SCSI core. */
+		return SCSI_EH_NOT_HANDLED;
+	}
+
+	/*
+	 * If we get here we know that no TMFs are outstanding and also that
+	 * the only pending command is a START STOP UNIT command. Handle the
+	 * timeout of that command directly to prevent a deadlock between
+	 * ufshcd_set_dev_pwr_mode() and ufshcd_err_handler().
+	 */
+	ufshcd_link_recovery(hba);
+	dev_info(hba->dev, "%s() finished; outstanding_tasks = %#lx.\n",
+		 __func__, hba->outstanding_tasks);
+
+	return hba->outstanding_reqs ? SCSI_EH_RESET_TIMER : SCSI_EH_DONE;
+}
+
 static const struct attribute_group *ufshcd_driver_groups[] = {
 	&ufs_sysfs_unit_descriptor_group,
 	&ufs_sysfs_lun_attributes_group,
@@ -8375,6 +8951,7 @@ static struct scsi_host_template ufshcd_driver_template = {
 	.eh_abort_handler	= ufshcd_abort,
 	.eh_device_reset_handler = ufshcd_eh_device_reset_handler,
 	.eh_host_reset_handler   = ufshcd_eh_host_reset_handler,
+	.eh_timed_out		= ufshcd_eh_timed_out,
 	.this_id		= -1,
 	.sg_tablesize		= SG_ALL,
 	.cmd_per_lun		= UFSHCD_CMD_PER_LUN,
@@ -8384,7 +8961,6 @@ static struct scsi_host_template ufshcd_driver_template = {
 	.max_host_blocked	= 1,
 	.track_queue_depth	= 1,
 	.sdev_groups		= ufshcd_driver_groups,
-	.dma_boundary		= PAGE_SIZE - 1,
 	.rpm_autosuspend_delay	= RPM_AUTOSUSPEND_DELAY_MS,
 };
 
@@ -8778,6 +9354,21 @@ static void ufshcd_hba_exit(struct ufs_hba *hba)
 	}
 }
 
+static int ufshcd_execute_start_stop(struct scsi_device *sdev,
+				     enum ufs_dev_pwr_mode pwr_mode,
+				     struct scsi_sense_hdr *sshdr)
+{
+	const unsigned char cdb[6] = { START_STOP, 0, 0, 0, pwr_mode << 4, 0 };
+	const struct scsi_exec_args args = {
+		.sshdr = sshdr,
+		.req_flags = BLK_MQ_REQ_PM,
+		.scmd_flags = SCMD_FAIL_IF_RECOVERING,
+	};
+
+	return scsi_execute_cmd(sdev, cdb, REQ_OP_DRV_IN, /*buffer=*/NULL,
+			/*bufflen=*/0, /*timeout=*/HZ, /*retries=*/0, &args);
+}
+
 /**
  * ufshcd_set_dev_pwr_mode - sends START STOP UNIT command to set device
  *			     power mode
@@ -8790,7 +9381,6 @@ static void ufshcd_hba_exit(struct ufs_hba *hba)
 static int ufshcd_set_dev_pwr_mode(struct ufs_hba *hba,
 				     enum ufs_dev_pwr_mode pwr_mode)
 {
-	unsigned char cmd[6] = { START_STOP };
 	struct scsi_sense_hdr sshdr;
 	struct scsi_device *sdp;
 	unsigned long flags;
@@ -8798,15 +9388,10 @@ static int ufshcd_set_dev_pwr_mode(struct ufs_hba *hba,
 
 	spin_lock_irqsave(hba->host->host_lock, flags);
 	sdp = hba->ufs_device_wlun;
-	if (sdp) {
+	if (sdp && scsi_device_online(sdp))
 		ret = scsi_device_get(sdp);
-		if (!ret && !scsi_device_online(sdp)) {
-			ret = -ENODEV;
-			scsi_device_put(sdp);
-		}
-	} else {
+	else
 		ret = -ENODEV;
-	}
 	spin_unlock_irqrestore(hba->host->host_lock, flags);
 
 	if (ret)
@@ -8820,19 +9405,18 @@ static int ufshcd_set_dev_pwr_mode(struct ufs_hba *hba,
 	 */
 	hba->host->eh_noresume = 1;
 
-	cmd[4] = pwr_mode << 4;
-
 	/*
 	 * Current function would be generally called from the power management
 	 * callbacks hence set the RQF_PM flag so that it doesn't resume the
 	 * already suspended childs.
 	 */
 	for (retries = 3; retries > 0; --retries) {
-		ret = scsi_execute(sdp, cmd, DMA_NONE, NULL, 0, NULL, &sshdr,
-				   HZ, 0, 0, RQF_PM, NULL);
-		if (!scsi_status_is_check_condition(ret) ||
-				!scsi_sense_valid(&sshdr) ||
-				sshdr.sense_key != UNIT_ATTENTION)
+		ret = ufshcd_execute_start_stop(sdp, pwr_mode, &sshdr);
+		/*
+		 * scsi_execute() only returns a negative value if the request
+		 * queue is dying.
+		 */
+		if (ret <= 0)
 			break;
 	}
 	if (ret) {
@@ -8844,10 +9428,9 @@ static int ufshcd_set_dev_pwr_mode(struct ufs_hba *hba,
 				scsi_print_sense_hdr(sdp, NULL, &sshdr);
 			ret = -EIO;
 		}
-	}
-
-	if (!ret)
+	} else {
 		hba->curr_dev_pwr_mode = pwr_mode;
+	}
 
 	scsi_device_put(sdp);
 	hba->host->eh_noresume = 0;
@@ -8856,7 +9439,7 @@ static int ufshcd_set_dev_pwr_mode(struct ufs_hba *hba,
 
 static int ufshcd_link_state_transition(struct ufs_hba *hba,
 					enum uic_link_state req_link_state,
-					int check_for_bkops)
+					bool check_for_bkops)
 {
 	int ret = 0;
 
@@ -9007,7 +9590,7 @@ static void ufshcd_hba_vreg_set_hpm(struct ufs_hba *hba)
 static int __ufshcd_wl_suspend(struct ufs_hba *hba, enum ufs_pm_op pm_op)
 {
 	int ret = 0;
-	int check_for_bkops;
+	bool check_for_bkops;
 	enum ufs_pm_level pm_lvl;
 	enum ufs_dev_pwr_mode req_dev_pwr_mode;
 	enum uic_link_state req_link_state;
@@ -9326,6 +9909,7 @@ static int ufshcd_wl_suspend(struct device *dev)
 
 	hba = shost_priv(sdev->host);
 	down(&hba->host_sem);
+	hba->system_suspending = true;
 
 	if (pm_runtime_suspended(dev))
 		goto out;
@@ -9367,6 +9951,7 @@ static int ufshcd_wl_resume(struct device *dev)
 		hba->curr_dev_pwr_mode, hba->uic_link_state);
 	if (!ret)
 		hba->is_sys_suspended = false;
+	hba->system_suspending = false;
 	up(&hba->host_sem);
 	return ret;
 }
@@ -9458,6 +10043,7 @@ static int ufshcd_resume(struct ufs_hba *hba)
 
 	/* enable the host irq as host controller would be active soon */
 	ufshcd_enable_irq(hba);
+
 	goto out;
 
 disable_vreg:
@@ -9611,6 +10197,7 @@ void ufshcd_remove(struct ufs_hba *hba)
 	ufshpb_remove(hba);
 	ufs_sysfs_remove_nodes(hba->dev);
 	blk_mq_destroy_queue(hba->tmf_queue);
+	blk_put_queue(hba->tmf_queue);
 	blk_mq_free_tag_set(&hba->tmf_tag_set);
 	scsi_remove_host(hba->host);
 	/* disable interrupts */
@@ -9620,6 +10207,56 @@ void ufshcd_remove(struct ufs_hba *hba)
 }
 EXPORT_SYMBOL_GPL(ufshcd_remove);
 
+#ifdef CONFIG_PM_SLEEP
+int ufshcd_system_freeze(struct device *dev)
+{
+
+	return ufshcd_system_suspend(dev);
+
+}
+EXPORT_SYMBOL_GPL(ufshcd_system_freeze);
+
+int ufshcd_system_restore(struct device *dev)
+{
+
+	struct ufs_hba *hba = dev_get_drvdata(dev);
+	int ret;
+
+	ret = ufshcd_system_resume(dev);
+	if (ret)
+		return ret;
+
+	/* Configure UTRL and UTMRL base address registers */
+	ufshcd_writel(hba, lower_32_bits(hba->utrdl_dma_addr),
+			REG_UTP_TRANSFER_REQ_LIST_BASE_L);
+	ufshcd_writel(hba, upper_32_bits(hba->utrdl_dma_addr),
+			REG_UTP_TRANSFER_REQ_LIST_BASE_H);
+	ufshcd_writel(hba, lower_32_bits(hba->utmrdl_dma_addr),
+			REG_UTP_TASK_REQ_LIST_BASE_L);
+	ufshcd_writel(hba, upper_32_bits(hba->utmrdl_dma_addr),
+			REG_UTP_TASK_REQ_LIST_BASE_H);
+	/*
+	 * Make sure that UTRL and UTMRL base address registers
+	 * are updated with the latest queue addresses. Only after
+	 * updating these addresses, we can queue the new commands.
+	 */
+	mb();
+
+	/* Resuming from hibernate, assume that link was OFF */
+	ufshcd_set_link_off(hba);
+
+	return 0;
+
+}
+EXPORT_SYMBOL_GPL(ufshcd_system_restore);
+
+int ufshcd_system_thaw(struct device *dev)
+{
+	return ufshcd_system_resume(dev);
+}
+EXPORT_SYMBOL_GPL(ufshcd_system_thaw);
+#endif /* CONFIG_PM_SLEEP  */
+
 /**
  * ufshcd_dealloc_host - deallocate Host Bus Adapter (HBA)
  * @hba: pointer to Host Bus Adapter (HBA)
@@ -9678,6 +10315,7 @@ int ufshcd_alloc_host(struct device *dev, struct ufs_hba **hba_handle)
 	hba->dev = dev;
 	hba->dev_ref_clk_freq = REF_CLK_FREQ_INVAL;
 	hba->nop_out_timeout = NOP_OUT_TIMEOUT;
+	ufshcd_set_sg_entry_size(hba, sizeof(struct ufshcd_sg_entry));
 	INIT_LIST_HEAD(&hba->clk_list_head);
 	spin_lock_init(&hba->outstanding_lock);
 
@@ -9827,10 +10465,12 @@ int ufshcd_init(struct ufs_hba *hba, void __iomem *mmio_base, unsigned int irq)
 		hba->is_irq_enabled = true;
 	}
 
-	err = scsi_add_host(host, hba->dev);
-	if (err) {
-		dev_err(hba->dev, "scsi_add_host failed\n");
-		goto out_disable;
+	if (!is_mcq_supported(hba)) {
+		err = scsi_add_host(host, hba->dev);
+		if (err) {
+			dev_err(hba->dev, "scsi_add_host failed\n");
+			goto out_disable;
+		}
 	}
 
 	hba->tmf_tag_set = (struct blk_mq_tag_set) {
@@ -9901,13 +10541,15 @@ int ufshcd_init(struct ufs_hba *hba, void __iomem *mmio_base, unsigned int irq)
 	ufshcd_set_ufs_dev_active(hba);
 
 	async_schedule(ufshcd_async_scan, hba);
-	ufs_sysfs_add_nodes(hba->dev);
+	ufs_sysfs_add_nodes(dev);
+	trace_android_vh_ufs_update_sysfs(hba);
 
 	device_enable_async_suspend(dev);
 	return 0;
 
 free_tmf_queue:
 	blk_mq_destroy_queue(hba->tmf_queue);
+	blk_put_queue(hba->tmf_queue);
 free_tmf_tag_set:
 	blk_mq_free_tag_set(&hba->tmf_tag_set);
 out_remove_scsi_host:
@@ -10057,11 +10699,6 @@ static int __init ufshcd_core_init(void)
 {
 	int ret;
 
-	/* Verify that there are no gaps in struct utp_transfer_cmd_desc. */
-	static_assert(sizeof(struct utp_transfer_cmd_desc) ==
-		      2 * ALIGNED_UPIU_SIZE +
-			      SG_ALL * sizeof(struct ufshcd_sg_entry));
-
 	ufs_debugfs_init();
 
 	ret = scsi_register_driver(&ufs_dev_wlun_template.gendrv);
diff --git a/drivers/ufs/core/ufshpb.c b/drivers/ufs/core/ufshpb.c
index b7f412d..a46a766 100644
--- a/drivers/ufs/core/ufshpb.c
+++ b/drivers/ufs/core/ufshpb.c
@@ -233,11 +233,6 @@ static bool ufshpb_test_ppn_dirty(struct ufshpb_lu *hpb, int rgn_idx,
 	rgn = hpb->rgn_tbl + rgn_idx;
 	srgn = rgn->srgn_tbl + srgn_idx;
 
-	if (likely(!srgn->is_last))
-		bitmap_len = hpb->entries_per_srgn;
-	else
-		bitmap_len = hpb->last_srgn_entries;
-
 	if (!ufshpb_is_valid_srgn(rgn, srgn))
 		return true;
 
@@ -253,6 +248,11 @@ static bool ufshpb_test_ppn_dirty(struct ufshpb_lu *hpb, int rgn_idx,
 		return true;
 	}
 
+	if (likely(!srgn->is_last))
+		bitmap_len = hpb->entries_per_srgn;
+	else
+		bitmap_len = hpb->last_srgn_entries;
+
 	if ((srgn_offset + cnt) > bitmap_len)
 		bit_len = bitmap_len - srgn_offset;
 	else
@@ -2289,7 +2289,7 @@ static bool ufshpb_check_hpb_reset_query(struct ufs_hba *hba)
 	/* wait for the device to complete HPB reset query */
 	for (try = 0; try < HPB_RESET_REQ_RETRIES; try++) {
 		dev_dbg(hba->dev,
-			"%s start flag reset polling %d times\n",
+			"%s: start flag reset polling %d times\n",
 			__func__, try);
 
 		/* Poll fHpbReset flag to be cleared */
@@ -2298,7 +2298,7 @@ static bool ufshpb_check_hpb_reset_query(struct ufs_hba *hba)
 
 		if (err) {
 			dev_err(hba->dev,
-				"%s reading fHpbReset flag failed with error %d\n",
+				"%s: reading fHpbReset flag failed with error %d\n",
 				__func__, err);
 			return flag_res;
 		}
@@ -2310,7 +2310,7 @@ static bool ufshpb_check_hpb_reset_query(struct ufs_hba *hba)
 	}
 	if (flag_res) {
 		dev_err(hba->dev,
-			"%s fHpbReset was not cleared by the device\n",
+			"%s: fHpbReset was not cleared by the device\n",
 			__func__);
 	}
 out:
@@ -2382,12 +2382,10 @@ static int ufshpb_get_lu_info(struct ufs_hba *hba, int lun,
 {
 	u16 max_active_rgns;
 	u8 lu_enable;
-	int size;
+	int size = QUERY_DESC_MAX_SIZE;
 	int ret;
 	char desc_buf[QUERY_DESC_MAX_SIZE];
 
-	ufshcd_map_desc_id_to_length(hba, QUERY_DESC_IDN_UNIT, &size);
-
 	ufshcd_rpm_get_sync(hba);
 	ret = ufshcd_query_descriptor_retry(hba, UPIU_QUERY_OPCODE_READ_DESC,
 					    QUERY_DESC_IDN_UNIT, lun, 0,
diff --git a/drivers/ufs/host/Kconfig b/drivers/ufs/host/Kconfig
index 4cc2dbd..ce3be02 100644
--- a/drivers/ufs/host/Kconfig
+++ b/drivers/ufs/host/Kconfig
@@ -48,7 +48,7 @@
 
 config SCSI_UFS_DWC_TC_PLATFORM
 	tristate "DesignWare platform support using a G210 Test Chip"
-	depends on SCSI_UFSHCD_PLATFORM
+	depends on OF && SCSI_UFSHCD_PLATFORM
 	help
 	  Synopsys Test Chip is a PHY for prototyping purposes.
 
@@ -57,8 +57,9 @@
 config SCSI_UFS_QCOM
 	tristate "QCOM specific hooks to UFS controller platform driver"
 	depends on SCSI_UFSHCD_PLATFORM && ARCH_QCOM
+	depends on GENERIC_MSI_IRQ
+	depends on RESET_CONTROLLER
 	select QCOM_SCM if SCSI_UFS_CRYPTO
-	select RESET_CONTROLLER
 	help
 	  This selects the QCOM specific additions to UFSHCD platform driver.
 	  UFS host on QCOM needs some vendor specific configuration before
@@ -124,3 +125,19 @@
 
 	  Select this if you have UFS host controller on Samsung Exynos SoC.
 	  If unsure, say N.
+
+config SCSI_UFS_VARIABLE_SG_ENTRY_SIZE
+	bool
+	default y if SCSI_UFS_CRYPTO
+
+config SCSI_UFS_SPRD
+	tristate "Unisoc specific hooks to UFS controller platform driver"
+	depends on SCSI_UFSHCD_PLATFORM && (ARCH_SPRD || COMPILE_TEST)
+	help
+	  This selects the Unisoc specific additions to UFSHCD platform driver.
+	  UFS host on Unisoc needs some vendor specific configuration before
+	  accessing the hardware which includes PHY configuration and vendor
+	  specific registers.
+
+	  Select this if you have UFS controller on Unisoc chipset.
+	  If unsure, say N.
diff --git a/drivers/ufs/host/Makefile b/drivers/ufs/host/Makefile
index 7717ca9..d7c5bf7 100644
--- a/drivers/ufs/host/Makefile
+++ b/drivers/ufs/host/Makefile
@@ -12,4 +12,5 @@
 obj-$(CONFIG_SCSI_UFS_HISI) += ufs-hisi.o
 obj-$(CONFIG_SCSI_UFS_MEDIATEK) += ufs-mediatek.o
 obj-$(CONFIG_SCSI_UFS_RENESAS) += ufs-renesas.o
+obj-$(CONFIG_SCSI_UFS_SPRD) += ufs-sprd.o
 obj-$(CONFIG_SCSI_UFS_TI_J721E) += ti-j721e-ufs.o
diff --git a/drivers/ufs/host/ufs-exynos.c b/drivers/ufs/host/ufs-exynos.c
index 3cdac89..7c985fc 100644
--- a/drivers/ufs/host/ufs-exynos.c
+++ b/drivers/ufs/host/ufs-exynos.c
@@ -1300,6 +1300,14 @@ static int exynos_ufs_hce_enable_notify(struct ufs_hba *hba,
 
 	switch (status) {
 	case PRE_CHANGE:
+		/*
+		 * The maximum segment size must be set after scsi_host_alloc()
+		 * has been called and before LUN scanning starts
+		 * (ufshcd_async_scan()). Note: this callback may also be called
+		 * from other functions than ufshcd_init().
+		 */
+		hba->host->max_segment_size = 4096;
+
 		if (ufs->drv_data->pre_hce_enable) {
 			ret = ufs->drv_data->pre_hce_enable(ufs);
 			if (ret)
diff --git a/drivers/ufs/host/ufs-mediatek.c b/drivers/ufs/host/ufs-mediatek.c
index 7309f3f..1541917 100644
--- a/drivers/ufs/host/ufs-mediatek.c
+++ b/drivers/ufs/host/ufs-mediatek.c
@@ -109,7 +109,7 @@ static bool ufs_mtk_is_pmc_via_fastauto(struct ufs_hba *hba)
 {
 	struct ufs_mtk_host *host = ufshcd_get_variant(hba);
 
-	return (host->caps & UFS_MTK_CAP_PMC_VIA_FASTAUTO);
+	return !!(host->caps & UFS_MTK_CAP_PMC_VIA_FASTAUTO);
 }
 
 static void ufs_mtk_cfg_unipro_cg(struct ufs_hba *hba, bool enable)
@@ -441,8 +441,6 @@ static int ufs_mtk_mphy_power_on(struct ufs_hba *hba, bool on)
 		if (ufs_mtk_is_va09_supported(hba)) {
 			ufs_mtk_va09_pwr_ctrl(res, 0);
 			ret = regulator_disable(host->reg_va09);
-			if (ret < 0)
-				goto out;
 		}
 	}
 out:
@@ -903,6 +901,8 @@ static int ufs_mtk_init(struct ufs_hba *hba)
 	hba->caps |= UFSHCD_CAP_CLK_SCALING;
 
 	hba->quirks |= UFSHCI_QUIRK_SKIP_MANUAL_WB_FLUSH_CTRL;
+	hba->quirks |= UFSHCD_QUIRK_MCQ_BROKEN_INTR;
+	hba->quirks |= UFSHCD_QUIRK_MCQ_BROKEN_RTC;
 	hba->vps->wb_flush_threshold = UFS_WB_BUF_REMAIN_PERCENT(80);
 
 	if (host->caps & UFS_MTK_CAP_DISABLE_AH8)
@@ -1097,7 +1097,7 @@ static void ufs_mtk_setup_clk_gating(struct ufs_hba *hba)
 	}
 }
 
-static int ufs_mtk_post_link(struct ufs_hba *hba)
+static void ufs_mtk_post_link(struct ufs_hba *hba)
 {
 	/* enable unipro clock gating feature */
 	ufs_mtk_cfg_unipro_cg(hba, true);
@@ -1108,8 +1108,6 @@ static int ufs_mtk_post_link(struct ufs_hba *hba)
 			FIELD_PREP(UFSHCI_AHIBERN8_SCALE_MASK, 3);
 
 	ufs_mtk_setup_clk_gating(hba);
-
-	return 0;
 }
 
 static int ufs_mtk_link_startup_notify(struct ufs_hba *hba,
@@ -1122,7 +1120,7 @@ static int ufs_mtk_link_startup_notify(struct ufs_hba *hba,
 		ret = ufs_mtk_pre_link(hba);
 		break;
 	case POST_CHANGE:
-		ret = ufs_mtk_post_link(hba);
+		ufs_mtk_post_link(hba);
 		break;
 	default:
 		ret = -EINVAL;
@@ -1274,9 +1272,8 @@ static int ufs_mtk_suspend(struct ufs_hba *hba, enum ufs_pm_op pm_op,
 	struct arm_smccc_res res;
 
 	if (status == PRE_CHANGE) {
-		if (!ufshcd_is_auto_hibern8_supported(hba))
-			return 0;
-		ufs_mtk_auto_hibern8_disable(hba);
+		if (ufshcd_is_auto_hibern8_supported(hba))
+			ufs_mtk_auto_hibern8_disable(hba);
 		return 0;
 	}
 
@@ -1618,6 +1615,7 @@ static int ufs_mtk_system_resume(struct device *dev)
 }
 #endif
 
+#ifdef CONFIG_PM
 static int ufs_mtk_runtime_suspend(struct device *dev)
 {
 	struct ufs_hba *hba = dev_get_drvdata(dev);
@@ -1640,6 +1638,7 @@ static int ufs_mtk_runtime_resume(struct device *dev)
 
 	return ufshcd_runtime_resume(dev);
 }
+#endif
 
 static const struct dev_pm_ops ufs_mtk_pm_ops = {
 	SET_SYSTEM_SLEEP_PM_OPS(ufs_mtk_system_suspend,
diff --git a/drivers/ufs/host/ufs-qcom.c b/drivers/ufs/host/ufs-qcom.c
index 8ad1415..76c5616 100644
--- a/drivers/ufs/host/ufs-qcom.c
+++ b/drivers/ufs/host/ufs-qcom.c
@@ -22,8 +22,11 @@
 #include <ufs/ufshci.h>
 #include <ufs/ufs_quirks.h>
 
-#define UFS_QCOM_DEFAULT_DBG_PRINT_EN	\
-	(UFS_QCOM_DBG_PRINT_REGS_EN | UFS_QCOM_DBG_PRINT_TEST_BUS_EN)
+#define MCQ_QCFGPTR_MASK	GENMASK(7, 0)
+#define MCQ_QCFGPTR_UNIT	0x200
+#define MCQ_SQATTR_OFFSET(c) \
+	((((c) >> 16) & MCQ_QCFGPTR_MASK) * MCQ_QCFGPTR_UNIT)
+#define MCQ_QCFG_SIZE	0x40
 
 enum {
 	TSTBUS_UAWM,
@@ -52,12 +55,6 @@ static struct ufs_qcom_host *rcdev_to_ufs_host(struct reset_controller_dev *rcd)
 	return container_of(rcd, struct ufs_qcom_host, rcdev);
 }
 
-static void ufs_qcom_dump_regs_wrapper(struct ufs_hba *hba, int offset, int len,
-				       const char *prefix, void *priv)
-{
-	ufshcd_dump_regs(hba, offset, len * 4, prefix);
-}
-
 static int ufs_qcom_host_clk_get(struct device *dev,
 		const char *name, struct clk **clk_out, bool optional)
 {
@@ -110,7 +107,7 @@ static void ufs_qcom_disable_lane_clks(struct ufs_qcom_host *host)
 
 static int ufs_qcom_enable_lane_clks(struct ufs_qcom_host *host)
 {
-	int err = 0;
+	int err;
 	struct device *dev = host->hba->dev;
 
 	if (host->is_lane_clks_enabled)
@@ -119,7 +116,7 @@ static int ufs_qcom_enable_lane_clks(struct ufs_qcom_host *host)
 	err = ufs_qcom_host_clk_enable(dev, "rx_lane0_sync_clk",
 		host->rx_l0_sync_clk);
 	if (err)
-		goto out;
+		return err;
 
 	err = ufs_qcom_host_clk_enable(dev, "tx_lane0_sync_clk",
 		host->tx_l0_sync_clk);
@@ -137,7 +134,8 @@ static int ufs_qcom_enable_lane_clks(struct ufs_qcom_host *host)
 		goto disable_rx_l1;
 
 	host->is_lane_clks_enabled = true;
-	goto out;
+
+	return 0;
 
 disable_rx_l1:
 	clk_disable_unprepare(host->rx_l1_sync_clk);
@@ -145,7 +143,7 @@ static int ufs_qcom_enable_lane_clks(struct ufs_qcom_host *host)
 	clk_disable_unprepare(host->tx_l0_sync_clk);
 disable_rx_l0:
 	clk_disable_unprepare(host->rx_l0_sync_clk);
-out:
+
 	return err;
 }
 
@@ -160,25 +158,25 @@ static int ufs_qcom_init_lane_clks(struct ufs_qcom_host *host)
 	err = ufs_qcom_host_clk_get(dev, "rx_lane0_sync_clk",
 					&host->rx_l0_sync_clk, false);
 	if (err)
-		goto out;
+		return err;
 
 	err = ufs_qcom_host_clk_get(dev, "tx_lane0_sync_clk",
 					&host->tx_l0_sync_clk, false);
 	if (err)
-		goto out;
+		return err;
 
 	/* In case of single lane per direction, don't read lane1 clocks */
 	if (host->hba->lanes_per_direction > 1) {
 		err = ufs_qcom_host_clk_get(dev, "rx_lane1_sync_clk",
 			&host->rx_l1_sync_clk, false);
 		if (err)
-			goto out;
+			return err;
 
 		err = ufs_qcom_host_clk_get(dev, "tx_lane1_sync_clk",
 			&host->tx_l1_sync_clk, true);
 	}
-out:
-	return err;
+
+	return 0;
 }
 
 static int ufs_qcom_check_hibern8(struct ufs_hba *hba)
@@ -226,6 +224,10 @@ static void ufs_qcom_select_unipro_mode(struct ufs_qcom_host *host)
 	ufshcd_rmwl(host->hba, QUNIPRO_SEL,
 		   ufs_qcom_cap_qunipro(host) ? QUNIPRO_SEL : 0,
 		   REG_UFS_CFG1);
+
+	if (host->hw_ver.major == 0x05)
+		ufshcd_rmwl(host->hba, QUNIPRO_G4_SEL, 0, REG_UFS_CFG0);
+
 	/* make sure above configuration is applied before we return */
 	mb();
 }
@@ -241,7 +243,7 @@ static int ufs_qcom_host_reset(struct ufs_hba *hba)
 
 	if (!host->core_reset) {
 		dev_warn(hba->dev, "%s: reset control not set\n", __func__);
-		goto out;
+		return 0;
 	}
 
 	reenable_intr = hba->is_irq_enabled;
@@ -252,7 +254,7 @@ static int ufs_qcom_host_reset(struct ufs_hba *hba)
 	if (ret) {
 		dev_err(hba->dev, "%s: core_reset assert failed, err = %d\n",
 				 __func__, ret);
-		goto out;
+		return ret;
 	}
 
 	/*
@@ -274,15 +276,33 @@ static int ufs_qcom_host_reset(struct ufs_hba *hba)
 		hba->is_irq_enabled = true;
 	}
 
-out:
-	return ret;
+	return 0;
+}
+
+static u32 ufs_qcom_get_hs_gear(struct ufs_hba *hba)
+{
+	struct ufs_qcom_host *host = ufshcd_get_variant(hba);
+
+	if (host->hw_ver.major == 0x1) {
+		/*
+		 * HS-G3 operations may not reliably work on legacy QCOM
+		 * UFS host controller hardware even though capability
+		 * exchange during link startup phase may end up
+		 * negotiating maximum supported gear as G3.
+		 * Hence downgrade the maximum supported gear to HS-G2.
+		 */
+		return UFS_HS_G2;
+	}
+
+	/* Default is HS-G3 */
+	return UFS_HS_G3;
 }
 
 static int ufs_qcom_power_up_sequence(struct ufs_hba *hba)
 {
 	struct ufs_qcom_host *host = ufshcd_get_variant(hba);
 	struct phy *phy = host->generic_phy;
-	int ret = 0;
+	int ret;
 	bool is_rate_B = UFS_QCOM_LIMIT_HS_RATE == PA_HS_MODE_B;
 
 	/* Reset UFS Host Controller and PHY */
@@ -299,7 +319,7 @@ static int ufs_qcom_power_up_sequence(struct ufs_hba *hba)
 	if (ret) {
 		dev_err(hba->dev, "%s: phy init failed, ret = %d\n",
 			__func__, ret);
-		goto out;
+		return ret;
 	}
 
 	/* power on phy - start serdes and phy's power and clocks */
@@ -316,7 +336,7 @@ static int ufs_qcom_power_up_sequence(struct ufs_hba *hba)
 
 out_disable_phy:
 	phy_exit(phy);
-out:
+
 	return ret;
 }
 
@@ -374,7 +394,6 @@ static int ufs_qcom_hce_enable_notify(struct ufs_hba *hba,
 static int ufs_qcom_cfg_timers(struct ufs_hba *hba, u32 gear,
 			       u32 hs, u32 rate, bool update_link_startup_timer)
 {
-	int ret = 0;
 	struct ufs_qcom_host *host = ufshcd_get_variant(hba);
 	struct ufs_clk_info *clki;
 	u32 core_clk_period_in_ns;
@@ -409,11 +428,11 @@ static int ufs_qcom_cfg_timers(struct ufs_hba *hba, u32 gear,
 	 * Aggregation logic.
 	*/
 	if (ufs_qcom_cap_qunipro(host) && !ufshcd_is_intr_aggr_allowed(hba))
-		goto out;
+		return 0;
 
 	if (gear == 0) {
 		dev_err(hba->dev, "%s: invalid gear = %d\n", __func__, gear);
-		goto out_error;
+		return -EINVAL;
 	}
 
 	list_for_each_entry(clki, &hba->clk_list_head, list) {
@@ -436,7 +455,7 @@ static int ufs_qcom_cfg_timers(struct ufs_hba *hba, u32 gear,
 	}
 
 	if (ufs_qcom_cap_qunipro(host))
-		goto out;
+		return 0;
 
 	core_clk_period_in_ns = NSEC_PER_SEC / core_clk_rate;
 	core_clk_period_in_ns <<= OFFSET_CLK_NS_REG;
@@ -451,7 +470,7 @@ static int ufs_qcom_cfg_timers(struct ufs_hba *hba, u32 gear,
 					"%s: index %d exceeds table size %zu\n",
 					__func__, gear,
 					ARRAY_SIZE(hs_fr_table_rA));
-				goto out_error;
+				return -EINVAL;
 			}
 			tx_clk_cycles_per_us = hs_fr_table_rA[gear-1][1];
 		} else if (rate == PA_HS_MODE_B) {
@@ -460,13 +479,13 @@ static int ufs_qcom_cfg_timers(struct ufs_hba *hba, u32 gear,
 					"%s: index %d exceeds table size %zu\n",
 					__func__, gear,
 					ARRAY_SIZE(hs_fr_table_rB));
-				goto out_error;
+				return -EINVAL;
 			}
 			tx_clk_cycles_per_us = hs_fr_table_rB[gear-1][1];
 		} else {
 			dev_err(hba->dev, "%s: invalid rate = %d\n",
 				__func__, rate);
-			goto out_error;
+			return -EINVAL;
 		}
 		break;
 	case SLOWAUTO_MODE:
@@ -476,14 +495,14 @@ static int ufs_qcom_cfg_timers(struct ufs_hba *hba, u32 gear,
 					"%s: index %d exceeds table size %zu\n",
 					__func__, gear,
 					ARRAY_SIZE(pwm_fr_table));
-			goto out_error;
+			return -EINVAL;
 		}
 		tx_clk_cycles_per_us = pwm_fr_table[gear-1][1];
 		break;
 	case UNCHANGED:
 	default:
 		dev_err(hba->dev, "%s: invalid mode = %d\n", __func__, hs);
-		goto out_error;
+		return -EINVAL;
 	}
 
 	if (ufshcd_readl(hba, REG_UFS_TX_SYMBOL_CLK_NS_US) !=
@@ -498,21 +517,17 @@ static int ufs_qcom_cfg_timers(struct ufs_hba *hba, u32 gear,
 		mb();
 	}
 
-	if (update_link_startup_timer) {
+	if (update_link_startup_timer && host->hw_ver.major != 0x5) {
 		ufshcd_writel(hba, ((core_clk_rate / MSEC_PER_SEC) * 100),
-			      REG_UFS_PA_LINK_STARTUP_TIMER);
+			      REG_UFS_CFG0);
 		/*
 		 * make sure that this configuration is applied before
 		 * we return
 		 */
 		mb();
 	}
-	goto out;
 
-out_error:
-	ret = -EINVAL;
-out:
-	return ret;
+	return 0;
 }
 
 static int ufs_qcom_link_startup_notify(struct ufs_hba *hba,
@@ -527,8 +542,7 @@ static int ufs_qcom_link_startup_notify(struct ufs_hba *hba,
 					0, true)) {
 			dev_err(hba->dev, "%s: ufs_qcom_cfg_timers() failed\n",
 				__func__);
-			err = -EINVAL;
-			goto out;
+			return -EINVAL;
 		}
 
 		if (ufs_qcom_cap_qunipro(host))
@@ -554,7 +568,6 @@ static int ufs_qcom_link_startup_notify(struct ufs_hba *hba,
 		break;
 	}
 
-out:
 	return err;
 }
 
@@ -691,8 +704,7 @@ static int ufs_qcom_pwr_change_notify(struct ufs_hba *hba,
 
 	if (!dev_req_params) {
 		pr_err("%s: incoming dev_req_params is NULL\n", __func__);
-		ret = -EINVAL;
-		goto out;
+		return -EINVAL;
 	}
 
 	switch (status) {
@@ -700,27 +712,16 @@ static int ufs_qcom_pwr_change_notify(struct ufs_hba *hba,
 		ufshcd_init_pwr_dev_param(&ufs_qcom_cap);
 		ufs_qcom_cap.hs_rate = UFS_QCOM_LIMIT_HS_RATE;
 
-		if (host->hw_ver.major == 0x1) {
-			/*
-			 * HS-G3 operations may not reliably work on legacy QCOM
-			 * UFS host controller hardware even though capability
-			 * exchange during link startup phase may end up
-			 * negotiating maximum supported gear as G3.
-			 * Hence downgrade the maximum supported gear to HS-G2.
-			 */
-			if (ufs_qcom_cap.hs_tx_gear > UFS_HS_G2)
-				ufs_qcom_cap.hs_tx_gear = UFS_HS_G2;
-			if (ufs_qcom_cap.hs_rx_gear > UFS_HS_G2)
-				ufs_qcom_cap.hs_rx_gear = UFS_HS_G2;
-		}
+		/* This driver only supports symmetic gear setting i.e., hs_tx_gear == hs_rx_gear */
+		ufs_qcom_cap.hs_tx_gear = ufs_qcom_cap.hs_rx_gear = ufs_qcom_get_hs_gear(hba);
 
 		ret = ufshcd_get_pwr_dev_param(&ufs_qcom_cap,
 					       dev_max_params,
 					       dev_req_params);
 		if (ret) {
-			pr_err("%s: failed to determine capabilities\n",
+			dev_err(hba->dev, "%s: failed to determine capabilities\n",
 					__func__);
-			goto out;
+			return ret;
 		}
 
 		/* enable the device ref clock before changing to HS mode */
@@ -761,7 +762,7 @@ static int ufs_qcom_pwr_change_notify(struct ufs_hba *hba,
 		ret = -EINVAL;
 		break;
 	}
-out:
+
 	return ret;
 }
 
@@ -773,14 +774,11 @@ static int ufs_qcom_quirk_host_pa_saveconfigtime(struct ufs_hba *hba)
 	err = ufshcd_dme_get(hba, UIC_ARG_MIB(PA_VS_CONFIG_REG1),
 			     &pa_vs_config_reg1);
 	if (err)
-		goto out;
+		return err;
 
 	/* Allow extension of MSB bits of PA_SaveConfigTime attribute */
-	err = ufshcd_dme_set(hba, UIC_ARG_MIB(PA_VS_CONFIG_REG1),
+	return ufshcd_dme_set(hba, UIC_ARG_MIB(PA_VS_CONFIG_REG1),
 			    (pa_vs_config_reg1 | (1 << 12)));
-
-out:
-	return err;
 }
 
 static int ufs_qcom_apply_dev_quirks(struct ufs_hba *hba)
@@ -906,8 +904,6 @@ ufs_qcom_reset_assert(struct reset_controller_dev *rcdev, unsigned long id)
 {
 	struct ufs_qcom_host *host = rcdev_to_ufs_host(rcdev);
 
-	/* Currently this code only knows about a single reset. */
-	WARN_ON(id);
 	ufs_qcom_assert_reset(host->hba);
 	/* provide 1ms delay to let the reset pulse propagate. */
 	usleep_range(1000, 1100);
@@ -919,8 +915,6 @@ ufs_qcom_reset_deassert(struct reset_controller_dev *rcdev, unsigned long id)
 {
 	struct ufs_qcom_host *host = rcdev_to_ufs_host(rcdev);
 
-	/* Currently this code only knows about a single reset. */
-	WARN_ON(id);
 	ufs_qcom_deassert_reset(host->hba);
 
 	/*
@@ -957,9 +951,8 @@ static int ufs_qcom_init(struct ufs_hba *hba)
 
 	host = devm_kzalloc(dev, sizeof(*host), GFP_KERNEL);
 	if (!host) {
-		err = -ENOMEM;
 		dev_err(dev, "%s: no memory for qcom ufs host\n", __func__);
-		goto out;
+		return -ENOMEM;
 	}
 
 	/* Make a two way bind between the qcom host and the hba */
@@ -980,10 +973,8 @@ static int ufs_qcom_init(struct ufs_hba *hba)
 	host->rcdev.owner = dev->driver->owner;
 	host->rcdev.nr_resets = 1;
 	err = devm_reset_controller_register(dev, &host->rcdev);
-	if (err) {
+	if (err)
 		dev_warn(dev, "Failed to register reset controller\n");
-		err = 0;
-	}
 
 	if (!has_acpi_companion(dev)) {
 		host->generic_phy = devm_phy_get(dev, "ufsphy");
@@ -1046,20 +1037,18 @@ static int ufs_qcom_init(struct ufs_hba *hba)
 	if (hba->dev->id < MAX_UFS_QCOM_HOSTS)
 		ufs_qcom_hosts[hba->dev->id] = host;
 
-	host->dbg_print_en |= UFS_QCOM_DEFAULT_DBG_PRINT_EN;
 	ufs_qcom_get_default_testbus_cfg(host);
 	err = ufs_qcom_testbus_config(host);
-	if (err) {
+	if (err)
+		/* Failure is non-fatal */
 		dev_warn(dev, "%s: failed to configure the testbus %d\n",
 				__func__, err);
-		err = 0;
-	}
 
-	goto out;
+	return 0;
 
 out_variant_clear:
 	ufshcd_set_variant(hba, NULL);
-out:
+
 	return err;
 }
 
@@ -1085,7 +1074,7 @@ static int ufs_qcom_set_dme_vs_core_clk_ctrl_clear_div(struct ufs_hba *hba,
 			    UIC_ARG_MIB(DME_VS_CORE_CLK_CTRL),
 			    &core_clk_ctrl_reg);
 	if (err)
-		goto out;
+		return err;
 
 	core_clk_ctrl_reg &= ~DME_VS_CORE_CLK_CTRL_MAX_CORE_CLK_1US_CYCLES_MASK;
 	core_clk_ctrl_reg |= clk_cycles;
@@ -1093,11 +1082,9 @@ static int ufs_qcom_set_dme_vs_core_clk_ctrl_clear_div(struct ufs_hba *hba,
 	/* Clear CORE_CLK_DIV_EN */
 	core_clk_ctrl_reg &= ~DME_VS_CORE_CLK_CTRL_CORE_CLK_DIV_EN_BIT;
 
-	err = ufshcd_dme_set(hba,
+	return ufshcd_dme_set(hba,
 			    UIC_ARG_MIB(DME_VS_CORE_CLK_CTRL),
 			    core_clk_ctrl_reg);
-out:
-	return err;
 }
 
 static int ufs_qcom_clk_scale_up_pre_change(struct ufs_hba *hba)
@@ -1180,7 +1167,7 @@ static int ufs_qcom_clk_scale_notify(struct ufs_hba *hba,
 
 		if (err || !dev_req_params) {
 			ufshcd_uic_hibern8_exit(hba);
-			goto out;
+			return err;
 		}
 
 		ufs_qcom_cfg_timers(hba,
@@ -1191,81 +1178,14 @@ static int ufs_qcom_clk_scale_notify(struct ufs_hba *hba,
 		ufshcd_uic_hibern8_exit(hba);
 	}
 
-out:
-	return err;
-}
-
-static void ufs_qcom_print_hw_debug_reg_all(struct ufs_hba *hba,
-		void *priv, void (*print_fn)(struct ufs_hba *hba,
-		int offset, int num_regs, const char *str, void *priv))
-{
-	u32 reg;
-	struct ufs_qcom_host *host;
-
-	if (unlikely(!hba)) {
-		pr_err("%s: hba is NULL\n", __func__);
-		return;
-	}
-	if (unlikely(!print_fn)) {
-		dev_err(hba->dev, "%s: print_fn is NULL\n", __func__);
-		return;
-	}
-
-	host = ufshcd_get_variant(hba);
-	if (!(host->dbg_print_en & UFS_QCOM_DBG_PRINT_REGS_EN))
-		return;
-
-	reg = ufs_qcom_get_debug_reg_offset(host, UFS_UFS_DBG_RD_REG_OCSC);
-	print_fn(hba, reg, 44, "UFS_UFS_DBG_RD_REG_OCSC ", priv);
-
-	reg = ufshcd_readl(hba, REG_UFS_CFG1);
-	reg |= UTP_DBG_RAMS_EN;
-	ufshcd_writel(hba, reg, REG_UFS_CFG1);
-
-	reg = ufs_qcom_get_debug_reg_offset(host, UFS_UFS_DBG_RD_EDTL_RAM);
-	print_fn(hba, reg, 32, "UFS_UFS_DBG_RD_EDTL_RAM ", priv);
-
-	reg = ufs_qcom_get_debug_reg_offset(host, UFS_UFS_DBG_RD_DESC_RAM);
-	print_fn(hba, reg, 128, "UFS_UFS_DBG_RD_DESC_RAM ", priv);
-
-	reg = ufs_qcom_get_debug_reg_offset(host, UFS_UFS_DBG_RD_PRDT_RAM);
-	print_fn(hba, reg, 64, "UFS_UFS_DBG_RD_PRDT_RAM ", priv);
-
-	/* clear bit 17 - UTP_DBG_RAMS_EN */
-	ufshcd_rmwl(hba, UTP_DBG_RAMS_EN, 0, REG_UFS_CFG1);
-
-	reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_UAWM);
-	print_fn(hba, reg, 4, "UFS_DBG_RD_REG_UAWM ", priv);
-
-	reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_UARM);
-	print_fn(hba, reg, 4, "UFS_DBG_RD_REG_UARM ", priv);
-
-	reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_TXUC);
-	print_fn(hba, reg, 48, "UFS_DBG_RD_REG_TXUC ", priv);
-
-	reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_RXUC);
-	print_fn(hba, reg, 27, "UFS_DBG_RD_REG_RXUC ", priv);
-
-	reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_DFC);
-	print_fn(hba, reg, 19, "UFS_DBG_RD_REG_DFC ", priv);
-
-	reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_TRLUT);
-	print_fn(hba, reg, 34, "UFS_DBG_RD_REG_TRLUT ", priv);
-
-	reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_TMRLUT);
-	print_fn(hba, reg, 9, "UFS_DBG_RD_REG_TMRLUT ", priv);
+	return 0;
 }
 
 static void ufs_qcom_enable_test_bus(struct ufs_qcom_host *host)
 {
-	if (host->dbg_print_en & UFS_QCOM_DBG_PRINT_TEST_BUS_EN) {
-		ufshcd_rmwl(host->hba, UFS_REG_TEST_BUS_EN,
-				UFS_REG_TEST_BUS_EN, REG_UFS_CFG1);
-		ufshcd_rmwl(host->hba, TEST_BUS_EN, TEST_BUS_EN, REG_UFS_CFG1);
-	} else {
-		ufshcd_rmwl(host->hba, UFS_REG_TEST_BUS_EN, 0, REG_UFS_CFG1);
-		ufshcd_rmwl(host->hba, TEST_BUS_EN, 0, REG_UFS_CFG1);
-	}
+	ufshcd_rmwl(host->hba, UFS_REG_TEST_BUS_EN,
+			UFS_REG_TEST_BUS_EN, REG_UFS_CFG1);
+	ufshcd_rmwl(host->hba, TEST_BUS_EN, TEST_BUS_EN, REG_UFS_CFG1);
 }
 
 static void ufs_qcom_get_default_testbus_cfg(struct ufs_qcom_host *host)
@@ -1374,10 +1294,53 @@ int ufs_qcom_testbus_config(struct ufs_qcom_host *host)
 
 static void ufs_qcom_dump_dbg_regs(struct ufs_hba *hba)
 {
+	u32 reg;
+	struct ufs_qcom_host *host;
+
+	host = ufshcd_get_variant(hba);
+
 	ufshcd_dump_regs(hba, REG_UFS_SYS1CLK_1US, 16 * 4,
 			 "HCI Vendor Specific Registers ");
 
-	ufs_qcom_print_hw_debug_reg_all(hba, NULL, ufs_qcom_dump_regs_wrapper);
+	reg = ufs_qcom_get_debug_reg_offset(host, UFS_UFS_DBG_RD_REG_OCSC);
+	ufshcd_dump_regs(hba, reg, 44 * 4, "UFS_UFS_DBG_RD_REG_OCSC ");
+
+	reg = ufshcd_readl(hba, REG_UFS_CFG1);
+	reg |= UTP_DBG_RAMS_EN;
+	ufshcd_writel(hba, reg, REG_UFS_CFG1);
+
+	reg = ufs_qcom_get_debug_reg_offset(host, UFS_UFS_DBG_RD_EDTL_RAM);
+	ufshcd_dump_regs(hba, reg, 32 * 4, "UFS_UFS_DBG_RD_EDTL_RAM ");
+
+	reg = ufs_qcom_get_debug_reg_offset(host, UFS_UFS_DBG_RD_DESC_RAM);
+	ufshcd_dump_regs(hba, reg, 128 * 4, "UFS_UFS_DBG_RD_DESC_RAM ");
+
+	reg = ufs_qcom_get_debug_reg_offset(host, UFS_UFS_DBG_RD_PRDT_RAM);
+	ufshcd_dump_regs(hba, reg, 64 * 4, "UFS_UFS_DBG_RD_PRDT_RAM ");
+
+	/* clear bit 17 - UTP_DBG_RAMS_EN */
+	ufshcd_rmwl(hba, UTP_DBG_RAMS_EN, 0, REG_UFS_CFG1);
+
+	reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_UAWM);
+	ufshcd_dump_regs(hba, reg, 4 * 4, "UFS_DBG_RD_REG_UAWM ");
+
+	reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_UARM);
+	ufshcd_dump_regs(hba, reg, 4 * 4, "UFS_DBG_RD_REG_UARM ");
+
+	reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_TXUC);
+	ufshcd_dump_regs(hba, reg, 48 * 4, "UFS_DBG_RD_REG_TXUC ");
+
+	reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_RXUC);
+	ufshcd_dump_regs(hba, reg, 27 * 4, "UFS_DBG_RD_REG_RXUC ");
+
+	reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_DFC);
+	ufshcd_dump_regs(hba, reg, 19 * 4, "UFS_DBG_RD_REG_DFC ");
+
+	reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_TRLUT);
+	ufshcd_dump_regs(hba, reg, 34 * 4, "UFS_DBG_RD_REG_TRLUT ");
+
+	reg = ufs_qcom_get_debug_reg_offset(host, UFS_DBG_RD_REG_TMRLUT);
+	ufshcd_dump_regs(hba, reg, 9 * 4, "UFS_DBG_RD_REG_TMRLUT ");
 }
 
 /**
@@ -1424,6 +1387,227 @@ static void ufs_qcom_config_scaling_param(struct ufs_hba *hba,
 }
 #endif
 
+/* Resources */
+static const struct ufshcd_res_info ufs_res_info[RES_MAX] = {
+	{.name = "ufs_mem",},
+	{.name = "mcq",},
+	/* Submission Queue DAO */
+	{.name = "mcq_sqd",},
+	/* Submission Queue Interrupt Status */
+	{.name = "mcq_sqis",},
+	/* Completion Queue DAO */
+	{.name = "mcq_cqd",},
+	/* Completion Queue Interrupt Status */
+	{.name = "mcq_cqis",},
+	/* MCQ vendor specific */
+	{.name = "mcq_vs",},
+};
+
+static int ufs_qcom_mcq_config_resource(struct ufs_hba *hba)
+{
+	struct platform_device *pdev = to_platform_device(hba->dev);
+	struct ufshcd_res_info *res;
+	struct resource *res_mem, *res_mcq;
+	int i, ret = 0;
+
+	memcpy(hba->res, ufs_res_info, sizeof(ufs_res_info));
+
+	for (i = 0; i < RES_MAX; i++) {
+		res = &hba->res[i];
+		res->resource = platform_get_resource_byname(pdev,
+							     IORESOURCE_MEM,
+							     res->name);
+		if (!res->resource) {
+			dev_info(hba->dev, "Resource %s not provided\n", res->name);
+			if (i == RES_UFS)
+				return -ENOMEM;
+			continue;
+		} else if (i == RES_UFS) {
+			res_mem = res->resource;
+			res->base = hba->mmio_base;
+			continue;
+		}
+
+		res->base = devm_ioremap_resource(hba->dev, res->resource);
+		if (IS_ERR(res->base)) {
+			dev_err(hba->dev, "Failed to map res %s, err=%d\n",
+					 res->name, (int)PTR_ERR(res->base));
+			ret = PTR_ERR(res->base);
+			res->base = NULL;
+			return ret;
+		}
+	}
+
+	/* MCQ resource provided in DT */
+	res = &hba->res[RES_MCQ];
+	/* Bail if MCQ resource is provided */
+	if (res->base)
+		goto out;
+
+	/* Explicitly allocate MCQ resource from ufs_mem */
+	res_mcq = devm_kzalloc(hba->dev, sizeof(*res_mcq), GFP_KERNEL);
+	if (!res_mcq)
+		return -ENOMEM;
+
+	res_mcq->start = res_mem->start +
+			 MCQ_SQATTR_OFFSET(hba->mcq_capabilities);
+	res_mcq->end = res_mcq->start + hba->nr_hw_queues * MCQ_QCFG_SIZE - 1;
+	res_mcq->flags = res_mem->flags;
+	res_mcq->name = "mcq";
+
+	ret = insert_resource(&iomem_resource, res_mcq);
+	if (ret) {
+		dev_err(hba->dev, "Failed to insert MCQ resource, err=%d\n",
+			ret);
+		return ret;
+	}
+
+	res->base = devm_ioremap_resource(hba->dev, res_mcq);
+	if (IS_ERR(res->base)) {
+		dev_err(hba->dev, "MCQ registers mapping failed, err=%d\n",
+			(int)PTR_ERR(res->base));
+		ret = PTR_ERR(res->base);
+		goto ioremap_err;
+	}
+
+out:
+	hba->mcq_base = res->base;
+	return 0;
+ioremap_err:
+	res->base = NULL;
+	remove_resource(res_mcq);
+	return ret;
+}
+
+static int ufs_qcom_op_runtime_config(struct ufs_hba *hba)
+{
+	struct ufshcd_res_info *mem_res, *sqdao_res;
+	struct ufshcd_mcq_opr_info_t *opr;
+	int i;
+
+	mem_res = &hba->res[RES_UFS];
+	sqdao_res = &hba->res[RES_MCQ_SQD];
+
+	if (!mem_res->base || !sqdao_res->base)
+		return -EINVAL;
+
+	for (i = 0; i < OPR_MAX; i++) {
+		opr = &hba->mcq_opr[i];
+		opr->offset = sqdao_res->resource->start -
+			      mem_res->resource->start + 0x40 * i;
+		opr->stride = 0x100;
+		opr->base = sqdao_res->base + 0x40 * i;
+	}
+
+	return 0;
+}
+
+static int ufs_qcom_get_hba_mac(struct ufs_hba *hba)
+{
+	/* Qualcomm HC supports up to 64 */
+	return MAX_SUPP_MAC;
+}
+
+static int ufs_qcom_get_outstanding_cqs(struct ufs_hba *hba,
+					unsigned long *ocqs)
+{
+	struct ufshcd_res_info *mcq_vs_res = &hba->res[RES_MCQ_VS];
+
+	if (!mcq_vs_res->base)
+		return -EINVAL;
+
+	*ocqs = readl(mcq_vs_res->base + UFS_MEM_CQIS_VS);
+
+	return 0;
+}
+
+static void ufs_qcom_write_msi_msg(struct msi_desc *desc, struct msi_msg *msg)
+{
+	struct device *dev = msi_desc_to_dev(desc);
+	struct ufs_hba *hba = dev_get_drvdata(dev);
+
+	ufshcd_mcq_config_esi(hba, msg);
+}
+
+static irqreturn_t ufs_qcom_mcq_esi_handler(int irq, void *__hba)
+{
+	struct ufs_hba *hba = __hba;
+	struct ufs_qcom_host *host = ufshcd_get_variant(hba);
+	u32 id = irq - host->esi_base;
+	struct ufs_hw_queue *hwq = &hba->uhq[id];
+
+	ufshcd_mcq_write_cqis(hba, 0x1, id);
+	ufshcd_mcq_poll_cqe_lock(hba, hwq);
+
+	return IRQ_HANDLED;
+}
+
+static int ufs_qcom_config_esi(struct ufs_hba *hba)
+{
+	struct ufs_qcom_host *host = ufshcd_get_variant(hba);
+	struct msi_desc *desc;
+	struct msi_desc *failed_desc = NULL;
+	int nr_irqs, ret;
+
+	if (host->esi_enabled)
+		return 0;
+	else if (host->esi_base < 0)
+		return -EINVAL;
+
+	/*
+	 * 1. We only handle CQs as of now.
+	 * 2. Poll queues do not need ESI.
+	 */
+	nr_irqs = hba->nr_hw_queues - hba->nr_queues[HCTX_TYPE_POLL];
+	ret = platform_msi_domain_alloc_irqs(hba->dev, nr_irqs,
+					     ufs_qcom_write_msi_msg);
+	if (ret)
+		goto out;
+
+	msi_for_each_desc(desc, hba->dev, MSI_DESC_ALL) {
+		if (!desc->msi_index)
+			host->esi_base = desc->irq;
+
+		ret = devm_request_irq(hba->dev, desc->irq,
+				       ufs_qcom_mcq_esi_handler,
+				       IRQF_SHARED, "qcom-mcq-esi", hba);
+		if (ret) {
+			dev_err(hba->dev, "%s: Fail to request IRQ for %d, err = %d\n",
+				__func__, desc->irq, ret);
+			failed_desc = desc;
+			break;
+		}
+	}
+
+	if (ret) {
+		/* Rewind */
+		msi_for_each_desc(desc, hba->dev, MSI_DESC_ALL) {
+			if (desc == failed_desc)
+				break;
+			devm_free_irq(hba->dev, desc->irq, hba);
+		}
+		platform_msi_domain_free_irqs(hba->dev);
+	} else {
+		if (host->hw_ver.major == 6 && host->hw_ver.minor == 0 &&
+		    host->hw_ver.step == 0) {
+			ufshcd_writel(hba,
+				      ufshcd_readl(hba, REG_UFS_CFG3) | 0x1F000,
+				      REG_UFS_CFG3);
+		}
+		ufshcd_mcq_enable_esi(hba);
+	}
+
+out:
+	if (ret) {
+		host->esi_base = -1;
+		dev_warn(hba->dev, "Failed to request Platform MSI %d\n", ret);
+	} else {
+		host->esi_enabled = true;
+	}
+
+	return ret;
+}
+
 /*
  * struct ufs_hba_qcom_vops - UFS QCOM specific variant operations
  *
@@ -1447,6 +1631,11 @@ static const struct ufs_hba_variant_ops ufs_hba_qcom_vops = {
 	.device_reset		= ufs_qcom_device_reset,
 	.config_scaling_param = ufs_qcom_config_scaling_param,
 	.program_key		= ufs_qcom_ice_program_key,
+	.mcq_config_resource	= ufs_qcom_mcq_config_resource,
+	.get_hba_mac		= ufs_qcom_get_hba_mac,
+	.op_runtime_config	= ufs_qcom_op_runtime_config,
+	.get_outstanding_cqs	= ufs_qcom_get_outstanding_cqs,
+	.config_esi		= ufs_qcom_config_esi,
 };
 
 /**
@@ -1463,9 +1652,9 @@ static int ufs_qcom_probe(struct platform_device *pdev)
 	/* Perform generic probe */
 	err = ufshcd_pltfrm_init(pdev, &ufs_hba_qcom_vops);
 	if (err)
-		dev_err(dev, "ufshcd_pltfrm_init() failed %d\n", err);
+		return dev_err_probe(dev, err, "ufshcd_pltfrm_init() failed\n");
 
-	return err;
+	return 0;
 }
 
 /**
@@ -1480,6 +1669,7 @@ static int ufs_qcom_remove(struct platform_device *pdev)
 
 	pm_runtime_get_sync(&(pdev)->dev);
 	ufshcd_remove(hba);
+	platform_msi_domain_free_irqs(hba->dev);
 	return 0;
 }
 
@@ -1498,10 +1688,16 @@ MODULE_DEVICE_TABLE(acpi, ufs_qcom_acpi_match);
 #endif
 
 static const struct dev_pm_ops ufs_qcom_pm_ops = {
-	SET_SYSTEM_SLEEP_PM_OPS(ufshcd_system_suspend, ufshcd_system_resume)
 	SET_RUNTIME_PM_OPS(ufshcd_runtime_suspend, ufshcd_runtime_resume, NULL)
 	.prepare	 = ufshcd_suspend_prepare,
 	.complete	 = ufshcd_resume_complete,
+#ifdef CONFIG_PM_SLEEP
+	.suspend         = ufshcd_system_suspend,
+	.resume          = ufshcd_system_resume,
+	.freeze          = ufshcd_system_freeze,
+	.restore         = ufshcd_system_restore,
+	.thaw            = ufshcd_system_thaw,
+#endif
 };
 
 static struct platform_driver ufs_qcom_pltform = {
diff --git a/drivers/ufs/host/ufs-qcom.h b/drivers/ufs/host/ufs-qcom.h
index 44466a3..078b707 100644
--- a/drivers/ufs/host/ufs-qcom.h
+++ b/drivers/ufs/host/ufs-qcom.h
@@ -16,13 +16,11 @@
 #define HBRN8_POLL_TOUT_MS      100
 #define DEFAULT_CLK_RATE_HZ     1000000
 #define BUS_VECTOR_NAME_LEN     32
+#define MAX_SUPP_MAC		64
 
-#define UFS_HW_VER_MAJOR_SHFT	(28)
-#define UFS_HW_VER_MAJOR_MASK	(0x000F << UFS_HW_VER_MAJOR_SHFT)
-#define UFS_HW_VER_MINOR_SHFT	(16)
-#define UFS_HW_VER_MINOR_MASK	(0x0FFF << UFS_HW_VER_MINOR_SHFT)
-#define UFS_HW_VER_STEP_SHFT	(0)
-#define UFS_HW_VER_STEP_MASK	(0xFFFF << UFS_HW_VER_STEP_SHFT)
+#define UFS_HW_VER_MAJOR_MASK	GENMASK(31, 28)
+#define UFS_HW_VER_MINOR_MASK	GENMASK(27, 16)
+#define UFS_HW_VER_STEP_MASK	GENMASK(15, 0)
 
 /* vendor specific pre-defined parameters */
 #define SLOW 1
@@ -36,8 +34,10 @@ enum {
 	REG_UFS_TX_SYMBOL_CLK_NS_US         = 0xC4,
 	REG_UFS_LOCAL_PORT_ID_REG           = 0xC8,
 	REG_UFS_PA_ERR_CODE                 = 0xCC,
-	REG_UFS_RETRY_TIMER_REG             = 0xD0,
-	REG_UFS_PA_LINK_STARTUP_TIMER       = 0xD8,
+	/* On older UFS revisions, this register is called "RETRY_TIMER_REG" */
+	REG_UFS_PARAM0                      = 0xD0,
+	/* On older UFS revisions, this register is called "REG_UFS_PA_LINK_STARTUP_TIMER" */
+	REG_UFS_CFG0                        = 0xD8,
 	REG_UFS_CFG1                        = 0xDC,
 	REG_UFS_CFG2                        = 0xE0,
 	REG_UFS_HW_VERSION                  = 0xE4,
@@ -53,6 +53,8 @@ enum {
 	 * added in HW Version 3.0.0
 	 */
 	UFS_AH8_CFG				= 0xFC,
+
+	REG_UFS_CFG3				= 0x271C,
 };
 
 /* QCOM UFS host controller vendor specific debug registers */
@@ -72,28 +74,39 @@ enum {
 	UFS_UFS_DBG_RD_EDTL_RAM			= 0x1900,
 };
 
+enum {
+	UFS_MEM_CQIS_VS		= 0x8,
+};
+
 #define UFS_CNTLR_2_x_x_VEN_REGS_OFFSET(x)	(0x000 + x)
 #define UFS_CNTLR_3_x_x_VEN_REGS_OFFSET(x)	(0x400 + x)
 
+/* bit definitions for REG_UFS_CFG0 register */
+#define QUNIPRO_G4_SEL		BIT(5)
+
 /* bit definitions for REG_UFS_CFG1 register */
-#define QUNIPRO_SEL		0x1
-#define UTP_DBG_RAMS_EN		0x20000
+#define QUNIPRO_SEL		BIT(0)
+#define UFS_PHY_SOFT_RESET	BIT(1)
+#define UTP_DBG_RAMS_EN		BIT(17)
 #define TEST_BUS_EN		BIT(18)
 #define TEST_BUS_SEL		GENMASK(22, 19)
 #define UFS_REG_TEST_BUS_EN	BIT(30)
 
+#define UFS_PHY_RESET_ENABLE	1
+#define UFS_PHY_RESET_DISABLE	0
+
 /* bit definitions for REG_UFS_CFG2 register */
-#define UAWM_HW_CGC_EN		(1 << 0)
-#define UARM_HW_CGC_EN		(1 << 1)
-#define TXUC_HW_CGC_EN		(1 << 2)
-#define RXUC_HW_CGC_EN		(1 << 3)
-#define DFC_HW_CGC_EN		(1 << 4)
-#define TRLUT_HW_CGC_EN		(1 << 5)
-#define TMRLUT_HW_CGC_EN	(1 << 6)
-#define OCSC_HW_CGC_EN		(1 << 7)
+#define UAWM_HW_CGC_EN		BIT(0)
+#define UARM_HW_CGC_EN		BIT(1)
+#define TXUC_HW_CGC_EN		BIT(2)
+#define RXUC_HW_CGC_EN		BIT(3)
+#define DFC_HW_CGC_EN		BIT(4)
+#define TRLUT_HW_CGC_EN		BIT(5)
+#define TMRLUT_HW_CGC_EN	BIT(6)
+#define OCSC_HW_CGC_EN		BIT(7)
 
 /* bit definition for UFS_UFS_TEST_BUS_CTRL_n */
-#define TEST_BUS_SUB_SEL_MASK	0x1F  /* All XXX_SEL fields are 5 bits wide */
+#define TEST_BUS_SUB_SEL_MASK	GENMASK(4, 0)  /* All XXX_SEL fields are 5 bits wide */
 
 #define REG_UFS_CFG2_CGC_EN_ALL (UAWM_HW_CGC_EN | UARM_HW_CGC_EN |\
 				 TXUC_HW_CGC_EN | RXUC_HW_CGC_EN |\
@@ -101,26 +114,11 @@ enum {
 				 TMRLUT_HW_CGC_EN | OCSC_HW_CGC_EN)
 
 /* bit offset */
-enum {
-	OFFSET_UFS_PHY_SOFT_RESET           = 1,
-	OFFSET_CLK_NS_REG                   = 10,
-};
+#define OFFSET_CLK_NS_REG		0xa
 
 /* bit masks */
-enum {
-	MASK_UFS_PHY_SOFT_RESET             = 0x2,
-	MASK_TX_SYMBOL_CLK_1US_REG          = 0x3FF,
-	MASK_CLK_NS_REG                     = 0xFFFC00,
-};
-
-/* QCOM UFS debug print bit mask */
-#define UFS_QCOM_DBG_PRINT_REGS_EN	BIT(0)
-#define UFS_QCOM_DBG_PRINT_ICE_REGS_EN	BIT(1)
-#define UFS_QCOM_DBG_PRINT_TEST_BUS_EN	BIT(2)
-
-#define UFS_QCOM_DBG_PRINT_ALL	\
-	(UFS_QCOM_DBG_PRINT_REGS_EN | UFS_QCOM_DBG_PRINT_ICE_REGS_EN | \
-	 UFS_QCOM_DBG_PRINT_TEST_BUS_EN)
+#define MASK_TX_SYMBOL_CLK_1US_REG	GENMASK(9, 0)
+#define MASK_CLK_NS_REG			GENMASK(23, 10)
 
 /* QUniPro Vendor specific attributes */
 #define PA_VS_CONFIG_REG1	0x9000
@@ -135,15 +133,15 @@ ufs_qcom_get_controller_revision(struct ufs_hba *hba,
 {
 	u32 ver = ufshcd_readl(hba, REG_UFS_HW_VERSION);
 
-	*major = (ver & UFS_HW_VER_MAJOR_MASK) >> UFS_HW_VER_MAJOR_SHFT;
-	*minor = (ver & UFS_HW_VER_MINOR_MASK) >> UFS_HW_VER_MINOR_SHFT;
-	*step = (ver & UFS_HW_VER_STEP_MASK) >> UFS_HW_VER_STEP_SHFT;
+	*major = FIELD_GET(UFS_HW_VER_MAJOR_MASK, ver);
+	*minor = FIELD_GET(UFS_HW_VER_MINOR_MASK, ver);
+	*step = FIELD_GET(UFS_HW_VER_STEP_MASK, ver);
 };
 
 static inline void ufs_qcom_assert_reset(struct ufs_hba *hba)
 {
-	ufshcd_rmwl(hba, MASK_UFS_PHY_SOFT_RESET,
-			1 << OFFSET_UFS_PHY_SOFT_RESET, REG_UFS_CFG1);
+	ufshcd_rmwl(hba, UFS_PHY_SOFT_RESET, FIELD_PREP(UFS_PHY_SOFT_RESET, UFS_PHY_RESET_ENABLE),
+		    REG_UFS_CFG1);
 
 	/*
 	 * Make sure assertion of ufs phy reset is written to
@@ -154,8 +152,8 @@ static inline void ufs_qcom_assert_reset(struct ufs_hba *hba)
 
 static inline void ufs_qcom_deassert_reset(struct ufs_hba *hba)
 {
-	ufshcd_rmwl(hba, MASK_UFS_PHY_SOFT_RESET,
-			0 << OFFSET_UFS_PHY_SOFT_RESET, REG_UFS_CFG1);
+	ufshcd_rmwl(hba, UFS_PHY_SOFT_RESET, FIELD_PREP(UFS_PHY_SOFT_RESET, UFS_PHY_RESET_DISABLE),
+		    REG_UFS_CFG1);
 
 	/*
 	 * Make sure de-assertion of ufs phy reset is written to
@@ -212,8 +210,6 @@ struct ufs_qcom_host {
 
 	u32 dev_ref_clk_en_mask;
 
-	/* Bitmask for enabling debug prints */
-	u32 dbg_print_en;
 	struct ufs_qcom_testbus testbus;
 
 	/* Reset control of HCI */
@@ -221,6 +217,9 @@ struct ufs_qcom_host {
 	struct reset_controller_dev rcdev;
 
 	struct gpio_desc *device_reset;
+
+	int esi_base;
+	bool esi_enabled;
 };
 
 static inline u32
diff --git a/drivers/ufs/host/ufs-sprd.c b/drivers/ufs/host/ufs-sprd.c
new file mode 100644
index 0000000..051f3f4
--- /dev/null
+++ b/drivers/ufs/host/ufs-sprd.c
@@ -0,0 +1,458 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * UNISOC UFS Host Controller driver
+ *
+ * Copyright (C) 2022 Unisoc, Inc.
+ * Author: Zhe Wang <zhe.wang1@unisoc.com>
+ */
+
+#include <linux/arm-smccc.h>
+#include <linux/mfd/syscon.h>
+#include <linux/of.h>
+#include <linux/platform_device.h>
+#include <linux/regmap.h>
+#include <linux/reset.h>
+#include <linux/regulator/consumer.h>
+
+#include <ufs/ufshcd.h>
+#include "ufshcd-pltfrm.h"
+#include "ufs-sprd.h"
+
+static const struct of_device_id ufs_sprd_of_match[];
+
+static struct ufs_sprd_priv *ufs_sprd_get_priv_data(struct ufs_hba *hba)
+{
+	struct ufs_sprd_host *host = ufshcd_get_variant(hba);
+
+	WARN_ON(!host->priv);
+	return host->priv;
+}
+
+static void ufs_sprd_regmap_update(struct ufs_sprd_priv *priv, unsigned int index,
+				unsigned int reg, unsigned int bits,  unsigned int val)
+{
+	regmap_update_bits(priv->sysci[index].regmap, reg, bits, val);
+}
+
+static void ufs_sprd_regmap_read(struct ufs_sprd_priv *priv, unsigned int index,
+				unsigned int reg, unsigned int *val)
+{
+	regmap_read(priv->sysci[index].regmap, reg, val);
+}
+
+static void ufs_sprd_get_unipro_ver(struct ufs_hba *hba)
+{
+	struct ufs_sprd_host *host = ufshcd_get_variant(hba);
+
+	if (ufshcd_dme_get(hba, UIC_ARG_MIB(PA_LOCALVERINFO), &host->unipro_ver))
+		host->unipro_ver = 0;
+}
+
+static void ufs_sprd_ctrl_uic_compl(struct ufs_hba *hba, bool enable)
+{
+	u32 set = ufshcd_readl(hba, REG_INTERRUPT_ENABLE);
+
+	if (enable == true)
+		set |= UIC_COMMAND_COMPL;
+	else
+		set &= ~UIC_COMMAND_COMPL;
+	ufshcd_writel(hba, set, REG_INTERRUPT_ENABLE);
+}
+
+static int ufs_sprd_get_reset_ctrl(struct device *dev, struct ufs_sprd_rst *rci)
+{
+	rci->rc = devm_reset_control_get(dev, rci->name);
+	if (IS_ERR(rci->rc)) {
+		dev_err(dev, "failed to get reset ctrl:%s\n", rci->name);
+		return PTR_ERR(rci->rc);
+	}
+
+	return 0;
+}
+
+static int ufs_sprd_get_syscon_reg(struct device *dev, struct ufs_sprd_syscon *sysci)
+{
+	sysci->regmap = syscon_regmap_lookup_by_phandle(dev->of_node, sysci->name);
+	if (IS_ERR(sysci->regmap)) {
+		dev_err(dev, "failed to get ufs syscon:%s\n", sysci->name);
+		return PTR_ERR(sysci->regmap);
+	}
+
+	return 0;
+}
+
+static int ufs_sprd_get_vreg(struct device *dev, struct ufs_sprd_vreg *vregi)
+{
+	vregi->vreg = devm_regulator_get(dev, vregi->name);
+	if (IS_ERR(vregi->vreg)) {
+		dev_err(dev, "failed to get vreg:%s\n", vregi->name);
+		return PTR_ERR(vregi->vreg);
+	}
+
+	return 0;
+}
+
+static int ufs_sprd_parse_dt(struct device *dev, struct ufs_hba *hba, struct ufs_sprd_host *host)
+{
+	u32 i;
+	struct ufs_sprd_priv *priv = host->priv;
+	int ret = 0;
+
+	/* Parse UFS reset ctrl info */
+	for (i = 0; i < SPRD_UFS_RST_MAX; i++) {
+		if (!priv->rci[i].name)
+			continue;
+		ret = ufs_sprd_get_reset_ctrl(dev, &priv->rci[i]);
+		if (ret)
+			goto out;
+	}
+
+	/* Parse UFS syscon reg info */
+	for (i = 0; i < SPRD_UFS_SYSCON_MAX; i++) {
+		if (!priv->sysci[i].name)
+			continue;
+		ret = ufs_sprd_get_syscon_reg(dev, &priv->sysci[i]);
+		if (ret)
+			goto out;
+	}
+
+	/* Parse UFS vreg info */
+	for (i = 0; i < SPRD_UFS_VREG_MAX; i++) {
+		if (!priv->vregi[i].name)
+			continue;
+		ret = ufs_sprd_get_vreg(dev, &priv->vregi[i]);
+		if (ret)
+			goto out;
+	}
+
+out:
+	return ret;
+}
+
+static int ufs_sprd_common_init(struct ufs_hba *hba)
+{
+	struct device *dev = hba->dev;
+	struct ufs_sprd_host *host;
+	struct platform_device __maybe_unused *pdev = to_platform_device(dev);
+	const struct of_device_id *of_id;
+	int ret = 0;
+
+	host = devm_kzalloc(dev, sizeof(*host), GFP_KERNEL);
+	if (!host)
+		return -ENOMEM;
+
+	of_id = of_match_node(ufs_sprd_of_match, pdev->dev.of_node);
+	if (of_id->data != NULL)
+		host->priv = container_of(of_id->data, struct ufs_sprd_priv,
+					  ufs_hba_sprd_vops);
+
+	host->hba = hba;
+	ufshcd_set_variant(hba, host);
+
+	hba->caps |= UFSHCD_CAP_CLK_GATING |
+		UFSHCD_CAP_CRYPTO |
+		UFSHCD_CAP_WB_EN;
+	hba->quirks |= UFSHCD_QUIRK_DELAY_BEFORE_DME_CMDS;
+
+	ret = ufs_sprd_parse_dt(dev, hba, host);
+
+	return ret;
+}
+
+static int sprd_ufs_pwr_change_notify(struct ufs_hba *hba,
+				      enum ufs_notify_change_status status,
+				      struct ufs_pa_layer_attr *dev_max_params,
+				      struct ufs_pa_layer_attr *dev_req_params)
+{
+	struct ufs_sprd_host *host = ufshcd_get_variant(hba);
+
+	if (status == PRE_CHANGE) {
+		memcpy(dev_req_params, dev_max_params,
+			sizeof(struct ufs_pa_layer_attr));
+		if (host->unipro_ver >= UFS_UNIPRO_VER_1_8)
+			ufshcd_dme_configure_adapt(hba, dev_req_params->gear_tx,
+						   PA_INITIAL_ADAPT);
+	}
+
+	return 0;
+}
+
+static int ufs_sprd_suspend(struct ufs_hba *hba, enum ufs_pm_op pm_op,
+			    enum ufs_notify_change_status status)
+{
+	unsigned long flags;
+
+	if (status == PRE_CHANGE) {
+		if (ufshcd_is_auto_hibern8_supported(hba)) {
+			spin_lock_irqsave(hba->host->host_lock, flags);
+			ufshcd_writel(hba, 0, REG_AUTO_HIBERNATE_IDLE_TIMER);
+			spin_unlock_irqrestore(hba->host->host_lock, flags);
+		}
+	}
+
+	return 0;
+}
+
+static void ufs_sprd_n6_host_reset(struct ufs_hba *hba)
+{
+	struct ufs_sprd_priv *priv = ufs_sprd_get_priv_data(hba);
+
+	dev_info(hba->dev, "ufs host reset!\n");
+
+	reset_control_assert(priv->rci[SPRD_UFSHCI_SOFT_RST].rc);
+	usleep_range(1000, 1100);
+	reset_control_deassert(priv->rci[SPRD_UFSHCI_SOFT_RST].rc);
+}
+
+static int ufs_sprd_n6_device_reset(struct ufs_hba *hba)
+{
+	struct ufs_sprd_priv *priv = ufs_sprd_get_priv_data(hba);
+
+	dev_info(hba->dev, "ufs device reset!\n");
+
+	reset_control_assert(priv->rci[SPRD_UFS_DEV_RST].rc);
+	usleep_range(1000, 1100);
+	reset_control_deassert(priv->rci[SPRD_UFS_DEV_RST].rc);
+
+	return 0;
+}
+
+static void ufs_sprd_n6_key_acc_enable(struct ufs_hba *hba)
+{
+	u32 val;
+	u32 retry = 10;
+	struct arm_smccc_res res;
+
+check_hce:
+	/* Key access only can be enabled under HCE enable */
+	val = ufshcd_readl(hba, REG_CONTROLLER_ENABLE);
+	if (!(val & CONTROLLER_ENABLE)) {
+		ufs_sprd_n6_host_reset(hba);
+		val |= CONTROLLER_ENABLE;
+		ufshcd_writel(hba, val, REG_CONTROLLER_ENABLE);
+		usleep_range(1000, 1100);
+		if (retry) {
+			retry--;
+			goto check_hce;
+		}
+		goto disable_crypto;
+	}
+
+	arm_smccc_smc(SPRD_SIP_SVC_STORAGE_UFS_CRYPTO_ENABLE,
+		      0, 0, 0, 0, 0, 0, 0, &res);
+	if (!res.a0)
+		return;
+
+disable_crypto:
+	dev_err(hba->dev, "key reg access enable fail, disable crypto\n");
+	hba->caps &= ~UFSHCD_CAP_CRYPTO;
+}
+
+static int ufs_sprd_n6_init(struct ufs_hba *hba)
+{
+	struct ufs_sprd_priv *priv;
+	int ret = 0;
+
+	ret = ufs_sprd_common_init(hba);
+	if (ret != 0)
+		return ret;
+
+	priv = ufs_sprd_get_priv_data(hba);
+
+	ret = regulator_enable(priv->vregi[SPRD_UFS_VDD_MPHY].vreg);
+	if (ret)
+		return -ENODEV;
+
+	if (hba->caps & UFSHCD_CAP_CRYPTO)
+		ufs_sprd_n6_key_acc_enable(hba);
+
+	return 0;
+}
+
+static int ufs_sprd_n6_phy_init(struct ufs_hba *hba)
+{
+	int ret = 0;
+	uint32_t val = 0;
+	uint32_t retry = 10;
+	uint32_t offset;
+	struct ufs_sprd_priv *priv = ufs_sprd_get_priv_data(hba);
+
+	ufshcd_dme_set(hba, UIC_ARG_MIB(CBREFCLKCTRL2), 0x90);
+	ufshcd_dme_set(hba, UIC_ARG_MIB(CBCRCTRL), 0x01);
+	ufshcd_dme_set(hba, UIC_ARG_MIB_SEL(RXSQCONTROL,
+				UIC_ARG_MPHY_RX_GEN_SEL_INDEX(0)), 0x01);
+	ufshcd_dme_set(hba, UIC_ARG_MIB_SEL(RXSQCONTROL,
+				UIC_ARG_MPHY_RX_GEN_SEL_INDEX(1)), 0x01);
+	ufshcd_dme_set(hba, UIC_ARG_MIB(VS_MPHYCFGUPDT), 0x01);
+	ufshcd_dme_set(hba, UIC_ARG_MIB(CBRATESEL), 0x01);
+
+	do {
+		/* phy_sram_init_done */
+		ufs_sprd_regmap_read(priv, SPRD_UFS_ANLG, 0xc, &val);
+		if ((val & 0x1) == 0x1) {
+			for (offset = 0x40; offset < 0x42; offset++) {
+				/* Lane afe calibration */
+				ufshcd_dme_set(hba, UIC_ARG_MIB(CBCREGADDRLSB), 0x1c);
+				ufshcd_dme_set(hba, UIC_ARG_MIB(CBCREGADDRMSB), offset);
+				ufshcd_dme_set(hba, UIC_ARG_MIB(CBCREGWRLSB), 0x04);
+				ufshcd_dme_set(hba, UIC_ARG_MIB(CBCREGWRMSB), 0x00);
+				ufshcd_dme_set(hba, UIC_ARG_MIB(CBCREGRDWRSEL), 0x01);
+				ufshcd_dme_set(hba, UIC_ARG_MIB(VS_MPHYCFGUPDT), 0x01);
+			}
+
+			goto update_phy;
+		}
+		udelay(1000);
+		retry--;
+	} while (retry > 0);
+
+	ret = -ETIMEDOUT;
+	goto out;
+
+update_phy:
+	/* phy_sram_ext_ld_done */
+	ufs_sprd_regmap_update(priv, SPRD_UFS_ANLG, 0xc, 0x2, 0);
+	ufshcd_dme_set(hba, UIC_ARG_MIB(VS_MPHYCFGUPDT), 0x01);
+	ufshcd_dme_set(hba, UIC_ARG_MIB(VS_MPHYDISABLE), 0x0);
+out:
+	return ret;
+}
+
+
+static int sprd_ufs_n6_hce_enable_notify(struct ufs_hba *hba,
+					 enum ufs_notify_change_status status)
+{
+	int err = 0;
+	struct ufs_sprd_priv *priv = ufs_sprd_get_priv_data(hba);
+
+	if (status == PRE_CHANGE) {
+		/* phy_sram_ext_ld_done */
+		ufs_sprd_regmap_update(priv, SPRD_UFS_ANLG, 0xc, 0x2, 0x2);
+		/* phy_sram_bypass */
+		ufs_sprd_regmap_update(priv, SPRD_UFS_ANLG, 0xc, 0x4, 0x4);
+
+		ufs_sprd_n6_host_reset(hba);
+
+		if (hba->caps & UFSHCD_CAP_CRYPTO)
+			ufs_sprd_n6_key_acc_enable(hba);
+	}
+
+	if (status == POST_CHANGE) {
+		err = ufs_sprd_n6_phy_init(hba);
+		if (err) {
+			dev_err(hba->dev, "Phy setup failed (%d)\n", err);
+			goto out;
+		}
+
+		ufs_sprd_get_unipro_ver(hba);
+	}
+out:
+	return err;
+}
+
+static void sprd_ufs_n6_h8_notify(struct ufs_hba *hba,
+				  enum uic_cmd_dme cmd,
+				  enum ufs_notify_change_status status)
+{
+	struct ufs_sprd_priv *priv = ufs_sprd_get_priv_data(hba);
+
+	if (status == PRE_CHANGE) {
+		if (cmd == UIC_CMD_DME_HIBER_ENTER)
+			/*
+			 * Disable UIC COMPL INTR to prevent access to UFSHCI after
+			 * checking HCS.UPMCRS
+			 */
+			ufs_sprd_ctrl_uic_compl(hba, false);
+
+		if (cmd == UIC_CMD_DME_HIBER_EXIT) {
+			ufs_sprd_regmap_update(priv, SPRD_UFS_AON_APB, APB_UFSDEV_REG,
+				APB_UFSDEV_REFCLK_EN, APB_UFSDEV_REFCLK_EN);
+			ufs_sprd_regmap_update(priv, SPRD_UFS_AON_APB, APB_USB31PLL_CTRL,
+				APB_USB31PLLV_REF2MPHY, APB_USB31PLLV_REF2MPHY);
+		}
+	}
+
+	if (status == POST_CHANGE) {
+		if (cmd == UIC_CMD_DME_HIBER_EXIT)
+			ufs_sprd_ctrl_uic_compl(hba, true);
+
+		if (cmd == UIC_CMD_DME_HIBER_ENTER) {
+			ufs_sprd_regmap_update(priv, SPRD_UFS_AON_APB, APB_UFSDEV_REG,
+				APB_UFSDEV_REFCLK_EN, 0);
+			ufs_sprd_regmap_update(priv, SPRD_UFS_AON_APB, APB_USB31PLL_CTRL,
+				APB_USB31PLLV_REF2MPHY, 0);
+		}
+	}
+}
+
+static struct ufs_sprd_priv n6_ufs = {
+	.rci[SPRD_UFSHCI_SOFT_RST] = { .name = "controller", },
+	.rci[SPRD_UFS_DEV_RST] = { .name = "device", },
+
+	.sysci[SPRD_UFS_ANLG] = { .name = "sprd,ufs-anlg-syscon", },
+	.sysci[SPRD_UFS_AON_APB] = { .name = "sprd,aon-apb-syscon", },
+
+	.vregi[SPRD_UFS_VDD_MPHY] = { .name = "vdd-mphy", },
+
+	.ufs_hba_sprd_vops = {
+		.name = "sprd,ums9620-ufs",
+		.init = ufs_sprd_n6_init,
+		.hce_enable_notify = sprd_ufs_n6_hce_enable_notify,
+		.pwr_change_notify = sprd_ufs_pwr_change_notify,
+		.hibern8_notify = sprd_ufs_n6_h8_notify,
+		.device_reset = ufs_sprd_n6_device_reset,
+		.suspend = ufs_sprd_suspend,
+	},
+};
+
+static const struct of_device_id __maybe_unused ufs_sprd_of_match[] = {
+	{ .compatible = "sprd,ums9620-ufs", .data = &n6_ufs.ufs_hba_sprd_vops},
+	{},
+};
+MODULE_DEVICE_TABLE(of, ufs_sprd_of_match);
+
+static int ufs_sprd_probe(struct platform_device *pdev)
+{
+	int err;
+	struct device *dev = &pdev->dev;
+	const struct of_device_id *of_id;
+
+	of_id = of_match_node(ufs_sprd_of_match, dev->of_node);
+	err = ufshcd_pltfrm_init(pdev, of_id->data);
+	if (err)
+		dev_err(dev, "ufshcd_pltfrm_init() failed %d\n", err);
+
+	return err;
+}
+
+static int ufs_sprd_remove(struct platform_device *pdev)
+{
+	struct ufs_hba *hba =  platform_get_drvdata(pdev);
+
+	pm_runtime_get_sync(&(pdev)->dev);
+	ufshcd_remove(hba);
+	return 0;
+}
+
+static const struct dev_pm_ops ufs_sprd_pm_ops = {
+	SET_SYSTEM_SLEEP_PM_OPS(ufshcd_system_suspend, ufshcd_system_resume)
+	SET_RUNTIME_PM_OPS(ufshcd_runtime_suspend, ufshcd_runtime_resume, NULL)
+	.prepare	 = ufshcd_suspend_prepare,
+	.complete	 = ufshcd_resume_complete,
+};
+
+static struct platform_driver ufs_sprd_pltform = {
+	.probe = ufs_sprd_probe,
+	.remove = ufs_sprd_remove,
+	.shutdown = ufshcd_pltfrm_shutdown,
+	.driver = {
+		.name = "ufshcd-sprd",
+		.pm = &ufs_sprd_pm_ops,
+		.of_match_table = of_match_ptr(ufs_sprd_of_match),
+	},
+};
+module_platform_driver(ufs_sprd_pltform);
+
+MODULE_AUTHOR("Zhe Wang <zhe.wang1@unisoc.com>");
+MODULE_DESCRIPTION("Unisoc UFS Host Driver");
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/ufs/host/ufs-sprd.h b/drivers/ufs/host/ufs-sprd.h
new file mode 100644
index 0000000..26ad5c3
--- /dev/null
+++ b/drivers/ufs/host/ufs-sprd.h
@@ -0,0 +1,85 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * UNISOC UFS Host Controller driver
+ *
+ * Copyright (C) 2022 Unisoc, Inc.
+ * Author: Zhe Wang <zhe.wang1@unisoc.com>
+ */
+
+#ifndef _UFS_SPRD_H_
+#define _UFS_SPRD_H_
+
+/* Vendor specific attributes */
+#define RXSQCONTROL	0x8009
+#define CBRATESEL	0x8114
+#define CBCREGADDRLSB	0x8116
+#define CBCREGADDRMSB	0x8117
+#define CBCREGWRLSB	0x8118
+#define CBCREGWRMSB	0x8119
+#define CBCREGRDWRSEL	0x811C
+#define CBCRCTRL	0x811F
+#define CBREFCLKCTRL2	0x8132
+#define VS_MPHYDISABLE	0xD0C1
+
+#define APB_UFSDEV_REG		0xCE8
+#define APB_UFSDEV_REFCLK_EN	0x2
+#define APB_USB31PLL_CTRL	0xCFC
+#define APB_USB31PLLV_REF2MPHY	0x1
+
+#define SPRD_SIP_SVC_STORAGE_UFS_CRYPTO_ENABLE				\
+	ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL,				\
+			   ARM_SMCCC_SMC_32,				\
+			   ARM_SMCCC_OWNER_SIP,				\
+			   0x0301)
+
+enum SPRD_UFS_RST_INDEX {
+	SPRD_UFSHCI_SOFT_RST,
+	SPRD_UFS_DEV_RST,
+
+	SPRD_UFS_RST_MAX
+};
+
+enum SPRD_UFS_SYSCON_INDEX {
+	SPRD_UFS_ANLG,
+	SPRD_UFS_AON_APB,
+
+	SPRD_UFS_SYSCON_MAX
+};
+
+enum SPRD_UFS_VREG_INDEX {
+	SPRD_UFS_VDD_MPHY,
+
+	SPRD_UFS_VREG_MAX
+};
+
+struct ufs_sprd_rst {
+	const char *name;
+	struct reset_control *rc;
+};
+
+struct ufs_sprd_syscon {
+	const char *name;
+	struct regmap *regmap;
+};
+
+struct ufs_sprd_vreg {
+	const char *name;
+	struct regulator *vreg;
+};
+
+struct ufs_sprd_priv {
+	struct ufs_sprd_rst rci[SPRD_UFS_RST_MAX];
+	struct ufs_sprd_syscon sysci[SPRD_UFS_SYSCON_MAX];
+	struct ufs_sprd_vreg vregi[SPRD_UFS_VREG_MAX];
+	const struct ufs_hba_variant_ops ufs_hba_sprd_vops;
+};
+
+struct ufs_sprd_host {
+	struct ufs_hba *hba;
+	struct ufs_sprd_priv *priv;
+	void __iomem *ufs_dbg_mmio;
+
+	enum ufs_unipro_ver unipro_ver;
+};
+
+#endif /* _UFS_SPRD_H_ */
diff --git a/drivers/uio/uio.c b/drivers/uio/uio.c
index 43afbb7..62082d6 100644
--- a/drivers/uio/uio.c
+++ b/drivers/uio/uio.c
@@ -713,7 +713,7 @@ static const struct vm_operations_struct uio_logical_vm_ops = {
 
 static int uio_mmap_logical(struct vm_area_struct *vma)
 {
-	vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP;
+	vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP);
 	vma->vm_ops = &uio_logical_vm_ops;
 	return 0;
 }
diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c
index 984de3f5..fcf6881 100644
--- a/drivers/usb/core/devio.c
+++ b/drivers/usb/core/devio.c
@@ -287,8 +287,7 @@ static int usbdev_mmap(struct file *file, struct vm_area_struct *vma)
 		}
 	}
 
-	vma->vm_flags |= VM_IO;
-	vma->vm_flags |= (VM_DONTEXPAND | VM_DONTDUMP);
+	vm_flags_set(vma, VM_IO | VM_DONTEXPAND | VM_DONTDUMP);
 	vma->vm_ops = &usbdev_vm_ops;
 	vma->vm_private_data = usbm;
 
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index 1abe43d..58e7d1e 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -2018,6 +2018,19 @@ bool usb_device_is_owned(struct usb_device *udev)
 	return !!hub->ports[udev->portnum - 1]->port_owner;
 }
 
+static void update_port_device_state(struct usb_device *udev)
+{
+	struct usb_hub *hub;
+	struct usb_port *port_dev;
+
+	if (udev->parent) {
+		hub = usb_hub_to_struct_hub(udev->parent);
+		port_dev = hub->ports[udev->portnum - 1];
+		WRITE_ONCE(port_dev->state, udev->state);
+		sysfs_notify_dirent(port_dev->state_kn);
+	}
+}
+
 static void recursively_mark_NOTATTACHED(struct usb_device *udev)
 {
 	struct usb_hub *hub = usb_hub_to_struct_hub(udev);
@@ -2030,6 +2043,7 @@ static void recursively_mark_NOTATTACHED(struct usb_device *udev)
 	if (udev->state == USB_STATE_SUSPENDED)
 		udev->active_duration -= jiffies;
 	udev->state = USB_STATE_NOTATTACHED;
+	update_port_device_state(udev);
 }
 
 /**
@@ -2086,6 +2100,7 @@ void usb_set_device_state(struct usb_device *udev,
 				udev->state != USB_STATE_SUSPENDED)
 			udev->active_duration += jiffies;
 		udev->state = new_state;
+		update_port_device_state(udev);
 	} else
 		recursively_mark_NOTATTACHED(udev);
 	spin_unlock_irqrestore(&device_state_lock, flags);
diff --git a/drivers/usb/core/hub.h b/drivers/usb/core/hub.h
index b292585..f244cc4 100644
--- a/drivers/usb/core/hub.h
+++ b/drivers/usb/core/hub.h
@@ -84,6 +84,8 @@ struct usb_hub {
  * @peer: related usb2 and usb3 ports (share the same connector)
  * @req: default pm qos request for hubs without port power control
  * @connect_type: port's connect type
+ * @state: device state of the usb device attached to the port
+ * @state_kn: kernfs_node of the sysfs attribute that accesses @state
  * @location: opaque representation of platform connector location
  * @status_lock: synchronize port_event() vs usb_port_{suspend|resume}
  * @portnum: port index num based one
@@ -98,6 +100,8 @@ struct usb_port {
 	struct usb_port *peer;
 	struct dev_pm_qos_request *req;
 	enum usb_port_connect_type connect_type;
+	enum usb_device_state state;
+	struct kernfs_node *state_kn;
 	usb_port_location_t location;
 	struct mutex status_lock;
 	u32 over_current_count;
diff --git a/drivers/usb/core/port.c b/drivers/usb/core/port.c
index 38c1a4f..e458ed1 100644
--- a/drivers/usb/core/port.c
+++ b/drivers/usb/core/port.c
@@ -133,6 +133,16 @@ static ssize_t connect_type_show(struct device *dev,
 }
 static DEVICE_ATTR_RO(connect_type);
 
+static ssize_t state_show(struct device *dev,
+			  struct device_attribute *attr, char *buf)
+{
+	struct usb_port *port_dev = to_usb_port(dev);
+	enum usb_device_state state = READ_ONCE(port_dev->state);
+
+	return sysfs_emit(buf, "%s\n", usb_state_string(state));
+}
+static DEVICE_ATTR_RO(state);
+
 static ssize_t over_current_count_show(struct device *dev,
 				       struct device_attribute *attr, char *buf)
 {
@@ -232,6 +242,7 @@ static DEVICE_ATTR_RW(usb3_lpm_permit);
 
 static struct attribute *port_dev_attrs[] = {
 	&dev_attr_connect_type.attr,
+	&dev_attr_state.attr,
 	&dev_attr_location.attr,
 	&dev_attr_quirks.attr,
 	&dev_attr_over_current_count.attr,
@@ -677,19 +688,24 @@ int usb_hub_create_port_device(struct usb_hub *hub, int port1)
 		return retval;
 	}
 
+	port_dev->state_kn = sysfs_get_dirent(port_dev->dev.kobj.sd, "state");
+	if (!port_dev->state_kn) {
+		dev_err(&port_dev->dev, "failed to sysfs_get_dirent 'state'\n");
+		retval = -ENODEV;
+		goto err_unregister;
+	}
+
 	/* Set default policy of port-poweroff disabled. */
 	retval = dev_pm_qos_add_request(&port_dev->dev, port_dev->req,
 			DEV_PM_QOS_FLAGS, PM_QOS_FLAG_NO_POWER_OFF);
 	if (retval < 0) {
-		device_unregister(&port_dev->dev);
-		return retval;
+		goto err_put_kn;
 	}
 
 	retval = component_add(&port_dev->dev, &connector_ops);
 	if (retval) {
 		dev_warn(&port_dev->dev, "failed to add component\n");
-		device_unregister(&port_dev->dev);
-		return retval;
+		goto err_put_kn;
 	}
 
 	find_and_link_peer(hub, port1);
@@ -726,6 +742,13 @@ int usb_hub_create_port_device(struct usb_hub *hub, int port1)
 		port_dev->req = NULL;
 	}
 	return 0;
+
+err_put_kn:
+	sysfs_put(port_dev->state_kn);
+err_unregister:
+	device_unregister(&port_dev->dev);
+
+	return retval;
 }
 
 void usb_hub_remove_port_device(struct usb_hub *hub, int port1)
@@ -737,5 +760,6 @@ void usb_hub_remove_port_device(struct usb_hub *hub, int port1)
 	if (peer)
 		unlink_peers(port_dev, peer);
 	component_del(&port_dev->dev, &connector_ops);
+	sysfs_put(port_dev->state_kn);
 	device_unregister(&port_dev->dev);
 }
diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h
index bb57bc9..09d7d73 100644
--- a/drivers/usb/dwc3/core.h
+++ b/drivers/usb/dwc3/core.h
@@ -22,6 +22,7 @@
 #include <linux/debugfs.h>
 #include <linux/wait.h>
 #include <linux/workqueue.h>
+#include <linux/android_kabi.h>
 
 #include <linux/usb/ch9.h>
 #include <linux/usb/gadget.h>
@@ -33,6 +34,8 @@
 
 #include <linux/power_supply.h>
 
+#include <linux/android_kabi.h>
+
 #define DWC3_MSG_MAX	500
 
 /* Global constants */
@@ -676,6 +679,8 @@ struct dwc3_event_buffer {
 	dma_addr_t		dma;
 
 	struct dwc3		*dwc;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 #define DWC3_EP_FLAG_STALLED	BIT(0)
@@ -771,6 +776,9 @@ struct dwc3_ep {
 	/* For isochronous START TRANSFER workaround only */
 	u8			combo_num;
 	int			start_cmd_status;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 enum dwc3_phy {
@@ -882,6 +890,9 @@ struct dwc3_hwparams {
 	u32	hwparams7;
 	u32	hwparams8;
 	u32	hwparams9;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 /* HWPARAMS0 */
@@ -954,6 +965,9 @@ struct dwc3_request {
 	unsigned int		needs_extra_trb:1;
 	unsigned int		direction:1;
 	unsigned int		mapped:1;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 /*
@@ -1336,6 +1350,11 @@ struct dwc3 {
 	int			last_fifo_depth;
 	int			num_ep_resized;
 	struct dentry		*debug_root;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 #define INCRX_BURST_MODE 0
diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index 7e94d31..6c63777 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -139,6 +139,24 @@ int dwc3_gadget_set_link_state(struct dwc3 *dwc, enum dwc3_link_state state)
 	return -ETIMEDOUT;
 }
 
+static void dwc3_ep0_reset_state(struct dwc3 *dwc)
+{
+	unsigned int	dir;
+
+	if (dwc->ep0state != EP0_SETUP_PHASE) {
+		dir = !!dwc->ep0_expect_in;
+		if (dwc->ep0state == EP0_DATA_PHASE)
+			dwc3_ep0_end_control_data(dwc, dwc->eps[dir]);
+		else
+			dwc3_ep0_end_control_data(dwc, dwc->eps[!dir]);
+
+		dwc->eps[0]->trb_enqueue = 0;
+		dwc->eps[1]->trb_enqueue = 0;
+
+		dwc3_ep0_stall_and_restart(dwc);
+	}
+}
+
 /**
  * dwc3_ep_inc_trb - increment a trb index.
  * @index: Pointer to the TRB index to increment.
@@ -2552,16 +2570,9 @@ static int dwc3_gadget_soft_disconnect(struct dwc3 *dwc)
 		ret = wait_for_completion_timeout(&dwc->ep0_in_setup,
 				msecs_to_jiffies(DWC3_PULL_UP_TIMEOUT));
 		if (ret == 0) {
-			unsigned int    dir;
-
 			dev_warn(dwc->dev, "wait for SETUP phase timed out\n");
 			spin_lock_irqsave(&dwc->lock, flags);
-			dir = !!dwc->ep0_expect_in;
-			if (dwc->ep0state == EP0_DATA_PHASE)
-				dwc3_ep0_end_control_data(dwc, dwc->eps[dir]);
-			else
-				dwc3_ep0_end_control_data(dwc, dwc->eps[!dir]);
-			dwc3_ep0_stall_and_restart(dwc);
+			dwc3_ep0_reset_state(dwc);
 			spin_unlock_irqrestore(&dwc->lock, flags);
 		}
 	}
@@ -3846,16 +3857,7 @@ static void dwc3_gadget_disconnect_interrupt(struct dwc3 *dwc)
 	dwc->setup_packet_pending = false;
 	usb_gadget_set_state(dwc->gadget, USB_STATE_NOTATTACHED);
 
-	if (dwc->ep0state != EP0_SETUP_PHASE) {
-		unsigned int    dir;
-
-		dir = !!dwc->ep0_expect_in;
-		if (dwc->ep0state == EP0_DATA_PHASE)
-			dwc3_ep0_end_control_data(dwc, dwc->eps[dir]);
-		else
-			dwc3_ep0_end_control_data(dwc, dwc->eps[!dir]);
-		dwc3_ep0_stall_and_restart(dwc);
-	}
+	dwc3_ep0_reset_state(dwc);
 }
 
 static void dwc3_gadget_reset_interrupt(struct dwc3 *dwc)
@@ -3911,20 +3913,7 @@ static void dwc3_gadget_reset_interrupt(struct dwc3 *dwc)
 	 * phase. So ensure that EP0 is in setup phase by issuing a stall
 	 * and restart if EP0 is not in setup phase.
 	 */
-	if (dwc->ep0state != EP0_SETUP_PHASE) {
-		unsigned int	dir;
-
-		dir = !!dwc->ep0_expect_in;
-		if (dwc->ep0state == EP0_DATA_PHASE)
-			dwc3_ep0_end_control_data(dwc, dwc->eps[dir]);
-		else
-			dwc3_ep0_end_control_data(dwc, dwc->eps[!dir]);
-
-		dwc->eps[0]->trb_enqueue = 0;
-		dwc->eps[1]->trb_enqueue = 0;
-
-		dwc3_ep0_stall_and_restart(dwc);
-	}
+	dwc3_ep0_reset_state(dwc);
 
 	/*
 	 * In the Synopsis DesignWare Cores USB3 Databook Rev. 3.30a
diff --git a/drivers/usb/gadget/Kconfig b/drivers/usb/gadget/Kconfig
index 4fa2ddf3..87a97af 100644
--- a/drivers/usb/gadget/Kconfig
+++ b/drivers/usb/gadget/Kconfig
@@ -216,6 +216,12 @@
 config USB_F_TCM
 	tristate
 
+config USB_F_ACC
+	tristate
+
+config USB_F_AUDIO_SRC
+	tristate
+
 # this first set of drivers all depend on bulk-capable hardware.
 
 config USB_CONFIGFS
@@ -230,6 +236,14 @@
 	  appropriate symbolic links.
 	  For more information see Documentation/usb/gadget_configfs.rst.
 
+config USB_CONFIGFS_UEVENT
+	bool "Uevent notification of Gadget state"
+	depends on USB_CONFIGFS
+	help
+	  Enable uevent notifications to userspace when the gadget
+	  state changes. The gadget can be in any of the following
+	  three states: "CONNECTED/DISCONNECTED/CONFIGURED"
+
 config USB_CONFIGFS_SERIAL
 	bool "Generic serial bulk in/out"
 	depends on USB_CONFIGFS
@@ -371,6 +385,23 @@
 	  implemented in kernel space (for instance Ethernet, serial or
 	  mass storage) and other are implemented in user space.
 
+config USB_CONFIGFS_F_ACC
+	bool "Accessory gadget"
+	depends on USB_CONFIGFS
+	depends on HID=y
+	select USB_F_ACC
+	help
+	  USB gadget Accessory support
+
+config USB_CONFIGFS_F_AUDIO_SRC
+	bool "Audio Source gadget"
+	depends on USB_CONFIGFS
+	depends on SND
+	select SND_PCM
+	select USB_F_AUDIO_SRC
+	help
+	  USB gadget Audio Source support
+
 config USB_CONFIGFS_F_UAC1
 	bool "Audio Class 1.0"
 	depends on USB_CONFIGFS
diff --git a/drivers/usb/gadget/configfs.c b/drivers/usb/gadget/configfs.c
index 4dcf295..96136bd 100644
--- a/drivers/usb/gadget/configfs.c
+++ b/drivers/usb/gadget/configfs.c
@@ -10,6 +10,32 @@
 #include "u_f.h"
 #include "u_os_desc.h"
 
+#ifdef CONFIG_USB_CONFIGFS_UEVENT
+#include <linux/platform_device.h>
+#include <linux/kdev_t.h>
+#include <linux/usb/ch9.h>
+
+#ifdef CONFIG_USB_CONFIGFS_F_ACC
+extern int acc_ctrlrequest_composite(struct usb_composite_dev *cdev,
+				const struct usb_ctrlrequest *ctrl);
+void acc_disconnect(void);
+#endif
+static struct class *android_class;
+static struct device *android_device;
+static int index;
+static int gadget_index;
+
+struct device *create_function_device(char *name)
+{
+	if (android_device && !IS_ERR(android_device))
+		return device_create(android_class, android_device,
+			MKDEV(0, index++), NULL, name);
+	else
+		return ERR_PTR(-EINVAL);
+}
+EXPORT_SYMBOL_GPL(create_function_device);
+#endif
+
 int check_user_usb_string(const char *name,
 		struct usb_gadget_strings *stringtab_dev)
 {
@@ -51,6 +77,12 @@ struct gadget_info {
 	char qw_sign[OS_STRING_QW_SIGN_LEN];
 	spinlock_t spinlock;
 	bool unbind;
+#ifdef CONFIG_USB_CONFIGFS_UEVENT
+	bool connected;
+	bool sw_connected;
+	struct work_struct work;
+	struct device *dev;
+#endif
 };
 
 static inline struct gadget_info *to_gadget_info(struct config_item *item)
@@ -273,7 +305,7 @@ static ssize_t gadget_dev_desc_UDC_store(struct config_item *item,
 
 	mutex_lock(&gi->lock);
 
-	if (!strlen(name)) {
+	if (!strlen(name) || strcmp(name, "none") == 0) {
 		ret = unregister_gadget(gi);
 		if (ret)
 			goto err;
@@ -1424,6 +1456,57 @@ static int configfs_composite_bind(struct usb_gadget *gadget,
 	return ret;
 }
 
+#ifdef CONFIG_USB_CONFIGFS_UEVENT
+static void android_work(struct work_struct *data)
+{
+	struct gadget_info *gi = container_of(data, struct gadget_info, work);
+	struct usb_composite_dev *cdev = &gi->cdev;
+	char *disconnected[2] = { "USB_STATE=DISCONNECTED", NULL };
+	char *connected[2]    = { "USB_STATE=CONNECTED", NULL };
+	char *configured[2]   = { "USB_STATE=CONFIGURED", NULL };
+	/* 0-connected 1-configured 2-disconnected*/
+	bool status[3] = { false, false, false };
+	unsigned long flags;
+	bool uevent_sent = false;
+
+	spin_lock_irqsave(&cdev->lock, flags);
+	if (cdev->config)
+		status[1] = true;
+
+	if (gi->connected != gi->sw_connected) {
+		if (gi->connected)
+			status[0] = true;
+		else
+			status[2] = true;
+		gi->sw_connected = gi->connected;
+	}
+	spin_unlock_irqrestore(&cdev->lock, flags);
+
+	if (status[0]) {
+		kobject_uevent_env(&gi->dev->kobj, KOBJ_CHANGE, connected);
+		pr_info("%s: sent uevent %s\n", __func__, connected[0]);
+		uevent_sent = true;
+	}
+
+	if (status[1]) {
+		kobject_uevent_env(&gi->dev->kobj, KOBJ_CHANGE, configured);
+		pr_info("%s: sent uevent %s\n", __func__, configured[0]);
+		uevent_sent = true;
+	}
+
+	if (status[2]) {
+		kobject_uevent_env(&gi->dev->kobj, KOBJ_CHANGE, disconnected);
+		pr_info("%s: sent uevent %s\n", __func__, disconnected[0]);
+		uevent_sent = true;
+	}
+
+	if (!uevent_sent) {
+		pr_info("%s: did not send uevent (%d %d %p)\n", __func__,
+			gi->connected, gi->sw_connected, cdev->config);
+	}
+}
+#endif
+
 static void configfs_composite_unbind(struct usb_gadget *gadget)
 {
 	struct usb_composite_dev	*cdev;
@@ -1451,6 +1534,53 @@ static void configfs_composite_unbind(struct usb_gadget *gadget)
 	spin_unlock_irqrestore(&gi->spinlock, flags);
 }
 
+#ifdef CONFIG_USB_CONFIGFS_UEVENT
+static int android_setup(struct usb_gadget *gadget,
+			const struct usb_ctrlrequest *c)
+{
+	struct usb_composite_dev *cdev = get_gadget_data(gadget);
+	unsigned long flags;
+	struct gadget_info *gi = container_of(cdev, struct gadget_info, cdev);
+	int value = -EOPNOTSUPP;
+	struct usb_function_instance *fi;
+
+	spin_lock_irqsave(&cdev->lock, flags);
+	if (!gi->connected) {
+		gi->connected = 1;
+		schedule_work(&gi->work);
+	}
+	spin_unlock_irqrestore(&cdev->lock, flags);
+	list_for_each_entry(fi, &gi->available_func, cfs_list) {
+		if (fi != NULL && fi->f != NULL && fi->f->setup != NULL) {
+			value = fi->f->setup(fi->f, c);
+			if (value >= 0)
+				break;
+		}
+	}
+
+#ifdef CONFIG_USB_CONFIGFS_F_ACC
+	if (value < 0)
+		value = acc_ctrlrequest_composite(cdev, c);
+#endif
+
+	if (value < 0) {
+		spin_lock_irqsave(&gi->spinlock, flags);
+		value = composite_setup(gadget, c);
+		spin_unlock_irqrestore(&gi->spinlock, flags);
+	}
+
+	spin_lock_irqsave(&cdev->lock, flags);
+	if (c->bRequest == USB_REQ_SET_CONFIGURATION &&
+						cdev->config) {
+		schedule_work(&gi->work);
+	}
+	spin_unlock_irqrestore(&cdev->lock, flags);
+
+	return value;
+}
+
+#else // CONFIG_USB_CONFIGFS_UEVENT
+
 static int configfs_composite_setup(struct usb_gadget *gadget,
 		const struct usb_ctrlrequest *ctrl)
 {
@@ -1476,6 +1606,8 @@ static int configfs_composite_setup(struct usb_gadget *gadget,
 	return ret;
 }
 
+#endif // CONFIG_USB_CONFIGFS_UEVENT
+
 static void configfs_composite_disconnect(struct usb_gadget *gadget)
 {
 	struct usb_composite_dev *cdev;
@@ -1486,6 +1618,14 @@ static void configfs_composite_disconnect(struct usb_gadget *gadget)
 	if (!cdev)
 		return;
 
+#ifdef CONFIG_USB_CONFIGFS_F_ACC
+	/*
+	 * accessory HID support can be active while the
+	 * accessory function is not actually enabled,
+	 * so we need to inform it when we are disconnected.
+	 */
+	acc_disconnect();
+#endif
 	gi = container_of(cdev, struct gadget_info, cdev);
 	spin_lock_irqsave(&gi->spinlock, flags);
 	cdev = get_gadget_data(gadget);
@@ -1494,6 +1634,10 @@ static void configfs_composite_disconnect(struct usb_gadget *gadget)
 		return;
 	}
 
+#ifdef CONFIG_USB_CONFIGFS_UEVENT
+	gi->connected = 0;
+	schedule_work(&gi->work);
+#endif
 	composite_disconnect(gadget);
 	spin_unlock_irqrestore(&gi->spinlock, flags);
 }
@@ -1568,10 +1712,13 @@ static const struct usb_gadget_driver configfs_driver_template = {
 	.bind           = configfs_composite_bind,
 	.unbind         = configfs_composite_unbind,
 
+#ifdef CONFIG_USB_CONFIGFS_UEVENT
+	.setup          = android_setup,
+#else
 	.setup          = configfs_composite_setup,
+#endif
 	.reset          = configfs_composite_reset,
 	.disconnect     = configfs_composite_disconnect,
-
 	.suspend	= configfs_composite_suspend,
 	.resume		= configfs_composite_resume,
 
@@ -1582,6 +1729,91 @@ static const struct usb_gadget_driver configfs_driver_template = {
 	.match_existing_only = 1,
 };
 
+#ifdef CONFIG_USB_CONFIGFS_UEVENT
+static ssize_t state_show(struct device *pdev, struct device_attribute *attr,
+			char *buf)
+{
+	struct gadget_info *dev = dev_get_drvdata(pdev);
+	struct usb_composite_dev *cdev;
+	char *state = "DISCONNECTED";
+	unsigned long flags;
+
+	if (!dev)
+		goto out;
+
+	cdev = &dev->cdev;
+
+	if (!cdev)
+		goto out;
+
+	spin_lock_irqsave(&cdev->lock, flags);
+	if (cdev->config)
+		state = "CONFIGURED";
+	else if (dev->connected)
+		state = "CONNECTED";
+	spin_unlock_irqrestore(&cdev->lock, flags);
+out:
+	return sprintf(buf, "%s\n", state);
+}
+
+static DEVICE_ATTR(state, S_IRUGO, state_show, NULL);
+
+static struct device_attribute *android_usb_attributes[] = {
+	&dev_attr_state,
+	NULL
+};
+
+static int android_device_create(struct gadget_info *gi)
+{
+	struct device_attribute **attrs;
+	struct device_attribute *attr;
+
+	INIT_WORK(&gi->work, android_work);
+	gi->dev = device_create(android_class, NULL,
+			MKDEV(0, 0), NULL, "android%d", gadget_index++);
+	if (IS_ERR(gi->dev))
+		return PTR_ERR(gi->dev);
+
+	dev_set_drvdata(gi->dev, gi);
+	if (!android_device)
+		android_device = gi->dev;
+
+	attrs = android_usb_attributes;
+	while ((attr = *attrs++)) {
+		int err;
+
+		err = device_create_file(gi->dev, attr);
+		if (err) {
+			device_destroy(gi->dev->class,
+				       gi->dev->devt);
+			return err;
+		}
+	}
+
+	return 0;
+}
+
+static void android_device_destroy(struct gadget_info *gi)
+{
+	struct device_attribute **attrs;
+	struct device_attribute *attr;
+
+	attrs = android_usb_attributes;
+	while ((attr = *attrs++))
+		device_remove_file(gi->dev, attr);
+	device_destroy(gi->dev->class, gi->dev->devt);
+}
+#else
+static inline int android_device_create(struct gadget_info *gi)
+{
+	return 0;
+}
+
+static inline void android_device_destroy(struct gadget_info *gi)
+{
+}
+#endif
+
 static struct config_group *gadgets_make(
 		struct config_group *group,
 		const char *name)
@@ -1639,6 +1871,9 @@ static struct config_group *gadgets_make(
 	if (!gi->composite.gadget_driver.function)
 		goto out_free_driver_name;
 
+	if (android_device_create(gi) < 0)
+		goto out_free_driver_name;
+
 	return &gi->group;
 
 out_free_driver_name:
@@ -1650,7 +1885,11 @@ static struct config_group *gadgets_make(
 
 static void gadgets_drop(struct config_group *group, struct config_item *item)
 {
+	struct gadget_info *gi;
+
+	gi = container_of(to_config_group(item), struct gadget_info, group);
 	config_item_put(item);
+	android_device_destroy(gi);
 }
 
 static struct configfs_group_operations gadgets_ops = {
@@ -1690,6 +1929,13 @@ static int __init gadget_cfs_init(void)
 	config_group_init(&gadget_subsys.su_group);
 
 	ret = configfs_register_subsystem(&gadget_subsys);
+
+#ifdef CONFIG_USB_CONFIGFS_UEVENT
+	android_class = class_create(THIS_MODULE, "android_usb");
+	if (IS_ERR(android_class))
+		return PTR_ERR(android_class);
+#endif
+
 	return ret;
 }
 module_init(gadget_cfs_init);
@@ -1697,5 +1943,10 @@ module_init(gadget_cfs_init);
 static void __exit gadget_cfs_exit(void)
 {
 	configfs_unregister_subsystem(&gadget_subsys);
+#ifdef CONFIG_USB_CONFIGFS_UEVENT
+	if (!IS_ERR(android_class))
+		class_destroy(android_class);
+#endif
+
 }
 module_exit(gadget_cfs_exit);
diff --git a/drivers/usb/gadget/function/Makefile b/drivers/usb/gadget/function/Makefile
index 5d3a6cf..dd33a12 100644
--- a/drivers/usb/gadget/function/Makefile
+++ b/drivers/usb/gadget/function/Makefile
@@ -50,3 +50,7 @@
 obj-$(CONFIG_USB_F_PRINTER)	+= usb_f_printer.o
 usb_f_tcm-y			:= f_tcm.o
 obj-$(CONFIG_USB_F_TCM)		+= usb_f_tcm.o
+usb_f_accessory-y		:= f_accessory.o
+obj-$(CONFIG_USB_F_ACC)		+= usb_f_accessory.o
+usb_f_audio_source-y		:= f_audio_source.o
+obj-$(CONFIG_USB_F_AUDIO_SRC)	+= usb_f_audio_source.o
diff --git a/drivers/usb/gadget/function/f_accessory.c b/drivers/usb/gadget/function/f_accessory.c
new file mode 100644
index 0000000..ce7814c
--- /dev/null
+++ b/drivers/usb/gadget/function/f_accessory.c
@@ -0,0 +1,1574 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Gadget Function Driver for Android USB accessories
+ *
+ * Copyright (C) 2011 Google, Inc.
+ * Author: Mike Lockwood <lockwood@android.com>
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+/* #define DEBUG */
+/* #define VERBOSE_DEBUG */
+
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/poll.h>
+#include <linux/delay.h>
+#include <linux/wait.h>
+#include <linux/err.h>
+#include <linux/interrupt.h>
+#include <linux/kthread.h>
+#include <linux/freezer.h>
+#include <linux/kref.h>
+#include <linux/kernel.h>
+
+#include <linux/types.h>
+#include <linux/file.h>
+#include <linux/device.h>
+#include <linux/miscdevice.h>
+
+#include <linux/hid.h>
+#include <linux/hiddev.h>
+#include <linux/usb.h>
+#include <linux/usb/ch9.h>
+#include <linux/usb/f_accessory.h>
+
+#include <linux/configfs.h>
+#include <linux/usb/composite.h>
+
+#define MAX_INST_NAME_LEN        40
+#define BULK_BUFFER_SIZE    16384
+#define ACC_STRING_SIZE     256
+
+#define PROTOCOL_VERSION    2
+
+/* String IDs */
+#define INTERFACE_STRING_INDEX	0
+
+/* number of tx and rx requests to allocate */
+#define TX_REQ_MAX 4
+#define RX_REQ_MAX 2
+
+struct acc_hid_dev {
+	struct list_head	list;
+	struct hid_device *hid;
+	struct acc_dev *dev;
+	/* accessory defined ID */
+	int id;
+	/* HID report descriptor */
+	u8 *report_desc;
+	/* length of HID report descriptor */
+	int report_desc_len;
+	/* number of bytes of report_desc we have received so far */
+	int report_desc_offset;
+};
+
+struct acc_dev {
+	struct usb_function function;
+	struct usb_composite_dev *cdev;
+	spinlock_t lock;
+	struct acc_dev_ref *ref;
+
+	struct usb_ep *ep_in;
+	struct usb_ep *ep_out;
+
+	/* online indicates state of function_set_alt & function_unbind
+	 * set to 1 when we connect
+	 */
+	int online;
+
+	/* disconnected indicates state of open & release
+	 * Set to 1 when we disconnect.
+	 * Not cleared until our file is closed.
+	 */
+	int disconnected;
+
+	/* strings sent by the host */
+	char manufacturer[ACC_STRING_SIZE];
+	char model[ACC_STRING_SIZE];
+	char description[ACC_STRING_SIZE];
+	char version[ACC_STRING_SIZE];
+	char uri[ACC_STRING_SIZE];
+	char serial[ACC_STRING_SIZE];
+
+	/* for acc_complete_set_string */
+	int string_index;
+
+	/* set to 1 if we have a pending start request */
+	int start_requested;
+
+	int audio_mode;
+
+	/* synchronize access to our device file */
+	atomic_t open_excl;
+
+	struct list_head tx_idle;
+
+	wait_queue_head_t read_wq;
+	wait_queue_head_t write_wq;
+	struct usb_request *rx_req[RX_REQ_MAX];
+	int rx_done;
+
+	/* delayed work for handling ACCESSORY_START */
+	struct delayed_work start_work;
+
+	/* work for handling ACCESSORY GET PROTOCOL */
+	struct work_struct getprotocol_work;
+
+	/* work for handling ACCESSORY SEND STRING */
+	struct work_struct sendstring_work;
+
+	/* worker for registering and unregistering hid devices */
+	struct work_struct hid_work;
+
+	/* list of active HID devices */
+	struct list_head	hid_list;
+
+	/* list of new HID devices to register */
+	struct list_head	new_hid_list;
+
+	/* list of dead HID devices to unregister */
+	struct list_head	dead_hid_list;
+};
+
+static struct usb_interface_descriptor acc_interface_desc = {
+	.bLength                = USB_DT_INTERFACE_SIZE,
+	.bDescriptorType        = USB_DT_INTERFACE,
+	.bInterfaceNumber       = 0,
+	.bNumEndpoints          = 2,
+	.bInterfaceClass        = USB_CLASS_VENDOR_SPEC,
+	.bInterfaceSubClass     = USB_SUBCLASS_VENDOR_SPEC,
+	.bInterfaceProtocol     = 0,
+};
+
+static struct usb_endpoint_descriptor acc_superspeedplus_in_desc = {
+	.bLength                = USB_DT_ENDPOINT_SIZE,
+	.bDescriptorType        = USB_DT_ENDPOINT,
+	.bEndpointAddress       = USB_DIR_IN,
+	.bmAttributes           = USB_ENDPOINT_XFER_BULK,
+	.wMaxPacketSize         = cpu_to_le16(1024),
+};
+
+static struct usb_endpoint_descriptor acc_superspeedplus_out_desc = {
+	.bLength                = USB_DT_ENDPOINT_SIZE,
+	.bDescriptorType        = USB_DT_ENDPOINT,
+	.bEndpointAddress       = USB_DIR_OUT,
+	.bmAttributes           = USB_ENDPOINT_XFER_BULK,
+	.wMaxPacketSize         = cpu_to_le16(1024),
+};
+
+static struct usb_ss_ep_comp_descriptor acc_superspeedplus_comp_desc = {
+	.bLength                = sizeof(acc_superspeedplus_comp_desc),
+	.bDescriptorType        = USB_DT_SS_ENDPOINT_COMP,
+
+	/* the following 2 values can be tweaked if necessary */
+	/* .bMaxBurst =         0, */
+	/* .bmAttributes =      0, */
+};
+
+static struct usb_endpoint_descriptor acc_superspeed_in_desc = {
+	.bLength                = USB_DT_ENDPOINT_SIZE,
+	.bDescriptorType        = USB_DT_ENDPOINT,
+	.bEndpointAddress       = USB_DIR_IN,
+	.bmAttributes           = USB_ENDPOINT_XFER_BULK,
+	.wMaxPacketSize         = cpu_to_le16(1024),
+};
+
+static struct usb_endpoint_descriptor acc_superspeed_out_desc = {
+	.bLength                = USB_DT_ENDPOINT_SIZE,
+	.bDescriptorType        = USB_DT_ENDPOINT,
+	.bEndpointAddress       = USB_DIR_OUT,
+	.bmAttributes           = USB_ENDPOINT_XFER_BULK,
+	.wMaxPacketSize         = cpu_to_le16(1024),
+};
+
+static struct usb_ss_ep_comp_descriptor acc_superspeed_comp_desc = {
+	.bLength                = sizeof(acc_superspeed_comp_desc),
+	.bDescriptorType        = USB_DT_SS_ENDPOINT_COMP,
+
+	/* the following 2 values can be tweaked if necessary */
+	/* .bMaxBurst =         0, */
+	/* .bmAttributes =      0, */
+};
+
+static struct usb_endpoint_descriptor acc_highspeed_in_desc = {
+	.bLength                = USB_DT_ENDPOINT_SIZE,
+	.bDescriptorType        = USB_DT_ENDPOINT,
+	.bEndpointAddress       = USB_DIR_IN,
+	.bmAttributes           = USB_ENDPOINT_XFER_BULK,
+	.wMaxPacketSize         = cpu_to_le16(512),
+};
+
+static struct usb_endpoint_descriptor acc_highspeed_out_desc = {
+	.bLength                = USB_DT_ENDPOINT_SIZE,
+	.bDescriptorType        = USB_DT_ENDPOINT,
+	.bEndpointAddress       = USB_DIR_OUT,
+	.bmAttributes           = USB_ENDPOINT_XFER_BULK,
+	.wMaxPacketSize         = cpu_to_le16(512),
+};
+
+static struct usb_endpoint_descriptor acc_fullspeed_in_desc = {
+	.bLength                = USB_DT_ENDPOINT_SIZE,
+	.bDescriptorType        = USB_DT_ENDPOINT,
+	.bEndpointAddress       = USB_DIR_IN,
+	.bmAttributes           = USB_ENDPOINT_XFER_BULK,
+};
+
+static struct usb_endpoint_descriptor acc_fullspeed_out_desc = {
+	.bLength                = USB_DT_ENDPOINT_SIZE,
+	.bDescriptorType        = USB_DT_ENDPOINT,
+	.bEndpointAddress       = USB_DIR_OUT,
+	.bmAttributes           = USB_ENDPOINT_XFER_BULK,
+};
+
+static struct usb_descriptor_header *fs_acc_descs[] = {
+	(struct usb_descriptor_header *) &acc_interface_desc,
+	(struct usb_descriptor_header *) &acc_fullspeed_in_desc,
+	(struct usb_descriptor_header *) &acc_fullspeed_out_desc,
+	NULL,
+};
+
+static struct usb_descriptor_header *hs_acc_descs[] = {
+	(struct usb_descriptor_header *) &acc_interface_desc,
+	(struct usb_descriptor_header *) &acc_highspeed_in_desc,
+	(struct usb_descriptor_header *) &acc_highspeed_out_desc,
+	NULL,
+};
+
+static struct usb_descriptor_header *ss_acc_descs[] = {
+	(struct usb_descriptor_header *) &acc_interface_desc,
+	(struct usb_descriptor_header *) &acc_superspeed_in_desc,
+	(struct usb_descriptor_header *) &acc_superspeed_comp_desc,
+	(struct usb_descriptor_header *) &acc_superspeed_out_desc,
+	(struct usb_descriptor_header *) &acc_superspeed_comp_desc,
+	NULL,
+};
+
+static struct usb_descriptor_header *ssp_acc_descs[] = {
+	(struct usb_descriptor_header *) &acc_interface_desc,
+	(struct usb_descriptor_header *) &acc_superspeedplus_in_desc,
+	(struct usb_descriptor_header *) &acc_superspeedplus_comp_desc,
+	(struct usb_descriptor_header *) &acc_superspeedplus_out_desc,
+	(struct usb_descriptor_header *) &acc_superspeedplus_comp_desc,
+	NULL,
+};
+
+static struct usb_string acc_string_defs[] = {
+	[INTERFACE_STRING_INDEX].s	= "Android Accessory Interface",
+	{  },	/* end of list */
+};
+
+static struct usb_gadget_strings acc_string_table = {
+	.language		= 0x0409,	/* en-US */
+	.strings		= acc_string_defs,
+};
+
+static struct usb_gadget_strings *acc_strings[] = {
+	&acc_string_table,
+	NULL,
+};
+
+struct acc_dev_ref {
+	struct kref	kref;
+	struct acc_dev	*acc_dev;
+};
+
+static struct acc_dev_ref _acc_dev_ref = {
+	.kref = KREF_INIT(0),
+};
+
+struct acc_instance {
+	struct usb_function_instance func_inst;
+	const char *name;
+};
+
+static struct acc_dev *get_acc_dev(void)
+{
+	struct acc_dev_ref *ref = &_acc_dev_ref;
+
+	return kref_get_unless_zero(&ref->kref) ? ref->acc_dev : NULL;
+}
+
+static void __put_acc_dev(struct kref *kref)
+{
+	struct acc_dev_ref *ref = container_of(kref, struct acc_dev_ref, kref);
+	struct acc_dev *dev = ref->acc_dev;
+
+	/* Cancel any async work */
+	cancel_delayed_work_sync(&dev->start_work);
+	cancel_work_sync(&dev->getprotocol_work);
+	cancel_work_sync(&dev->sendstring_work);
+	cancel_work_sync(&dev->hid_work);
+
+	ref->acc_dev = NULL;
+	kfree(dev);
+}
+
+static void put_acc_dev(struct acc_dev *dev)
+{
+	struct acc_dev_ref *ref = dev->ref;
+
+	WARN_ON(ref->acc_dev != dev);
+	kref_put(&ref->kref, __put_acc_dev);
+}
+
+static inline struct acc_dev *func_to_dev(struct usb_function *f)
+{
+	return container_of(f, struct acc_dev, function);
+}
+
+static struct usb_request *acc_request_new(struct usb_ep *ep, int buffer_size)
+{
+	struct usb_request *req = usb_ep_alloc_request(ep, GFP_KERNEL);
+
+	if (!req)
+		return NULL;
+
+	/* now allocate buffers for the requests */
+	req->buf = kmalloc(buffer_size, GFP_KERNEL);
+	if (!req->buf) {
+		usb_ep_free_request(ep, req);
+		return NULL;
+	}
+
+	return req;
+}
+
+static void acc_request_free(struct usb_request *req, struct usb_ep *ep)
+{
+	if (req) {
+		kfree(req->buf);
+		usb_ep_free_request(ep, req);
+	}
+}
+
+/* add a request to the tail of a list */
+static void req_put(struct acc_dev *dev, struct list_head *head,
+		struct usb_request *req)
+{
+	unsigned long flags;
+
+	spin_lock_irqsave(&dev->lock, flags);
+	list_add_tail(&req->list, head);
+	spin_unlock_irqrestore(&dev->lock, flags);
+}
+
+/* remove a request from the head of a list */
+static struct usb_request *req_get(struct acc_dev *dev, struct list_head *head)
+{
+	unsigned long flags;
+	struct usb_request *req;
+
+	spin_lock_irqsave(&dev->lock, flags);
+	if (list_empty(head)) {
+		req = 0;
+	} else {
+		req = list_first_entry(head, struct usb_request, list);
+		list_del(&req->list);
+	}
+	spin_unlock_irqrestore(&dev->lock, flags);
+	return req;
+}
+
+static void acc_set_disconnected(struct acc_dev *dev)
+{
+	dev->disconnected = 1;
+}
+
+static void acc_complete_in(struct usb_ep *ep, struct usb_request *req)
+{
+	struct acc_dev *dev = get_acc_dev();
+
+	if (!dev)
+		return;
+
+	if (req->status == -ESHUTDOWN) {
+		pr_debug("acc_complete_in set disconnected");
+		acc_set_disconnected(dev);
+	}
+
+	req_put(dev, &dev->tx_idle, req);
+
+	wake_up(&dev->write_wq);
+	put_acc_dev(dev);
+}
+
+static void acc_complete_out(struct usb_ep *ep, struct usb_request *req)
+{
+	struct acc_dev *dev = get_acc_dev();
+
+	if (!dev)
+		return;
+
+	dev->rx_done = 1;
+	if (req->status == -ESHUTDOWN) {
+		pr_debug("acc_complete_out set disconnected");
+		acc_set_disconnected(dev);
+	}
+
+	wake_up(&dev->read_wq);
+	put_acc_dev(dev);
+}
+
+static void acc_complete_set_string(struct usb_ep *ep, struct usb_request *req)
+{
+	struct acc_dev	*dev = ep->driver_data;
+	char *string_dest = NULL;
+	int length = req->actual;
+
+	if (req->status != 0) {
+		pr_err("acc_complete_set_string, err %d\n", req->status);
+		return;
+	}
+
+	switch (dev->string_index) {
+	case ACCESSORY_STRING_MANUFACTURER:
+		string_dest = dev->manufacturer;
+		break;
+	case ACCESSORY_STRING_MODEL:
+		string_dest = dev->model;
+		break;
+	case ACCESSORY_STRING_DESCRIPTION:
+		string_dest = dev->description;
+		break;
+	case ACCESSORY_STRING_VERSION:
+		string_dest = dev->version;
+		break;
+	case ACCESSORY_STRING_URI:
+		string_dest = dev->uri;
+		break;
+	case ACCESSORY_STRING_SERIAL:
+		string_dest = dev->serial;
+		break;
+	}
+	if (string_dest) {
+		unsigned long flags;
+
+		if (length >= ACC_STRING_SIZE)
+			length = ACC_STRING_SIZE - 1;
+
+		spin_lock_irqsave(&dev->lock, flags);
+		memcpy(string_dest, req->buf, length);
+		/* ensure zero termination */
+		string_dest[length] = 0;
+		spin_unlock_irqrestore(&dev->lock, flags);
+	} else {
+		pr_err("unknown accessory string index %d\n",
+			dev->string_index);
+	}
+}
+
+static void acc_complete_set_hid_report_desc(struct usb_ep *ep,
+		struct usb_request *req)
+{
+	struct acc_hid_dev *hid = req->context;
+	struct acc_dev *dev = hid->dev;
+	int length = req->actual;
+
+	if (req->status != 0) {
+		pr_err("acc_complete_set_hid_report_desc, err %d\n",
+			req->status);
+		return;
+	}
+
+	memcpy(hid->report_desc + hid->report_desc_offset, req->buf, length);
+	hid->report_desc_offset += length;
+	if (hid->report_desc_offset == hid->report_desc_len) {
+		/* After we have received the entire report descriptor
+		 * we schedule work to initialize the HID device
+		 */
+		schedule_work(&dev->hid_work);
+	}
+}
+
+static void acc_complete_send_hid_event(struct usb_ep *ep,
+		struct usb_request *req)
+{
+	struct acc_hid_dev *hid = req->context;
+	int length = req->actual;
+
+	if (req->status != 0) {
+		pr_err("acc_complete_send_hid_event, err %d\n", req->status);
+		return;
+	}
+
+	hid_report_raw_event(hid->hid, HID_INPUT_REPORT, req->buf, length, 1);
+}
+
+static int acc_hid_parse(struct hid_device *hid)
+{
+	struct acc_hid_dev *hdev = hid->driver_data;
+
+	hid_parse_report(hid, hdev->report_desc, hdev->report_desc_len);
+	return 0;
+}
+
+static int acc_hid_start(struct hid_device *hid)
+{
+	return 0;
+}
+
+static void acc_hid_stop(struct hid_device *hid)
+{
+}
+
+static int acc_hid_open(struct hid_device *hid)
+{
+	return 0;
+}
+
+static void acc_hid_close(struct hid_device *hid)
+{
+}
+
+static int acc_hid_raw_request(struct hid_device *hid, unsigned char reportnum,
+	__u8 *buf, size_t len, unsigned char rtype, int reqtype)
+{
+	return 0;
+}
+
+static struct hid_ll_driver acc_hid_ll_driver = {
+	.parse = acc_hid_parse,
+	.start = acc_hid_start,
+	.stop = acc_hid_stop,
+	.open = acc_hid_open,
+	.close = acc_hid_close,
+	.raw_request = acc_hid_raw_request,
+};
+
+static struct acc_hid_dev *acc_hid_new(struct acc_dev *dev,
+		int id, int desc_len)
+{
+	struct acc_hid_dev *hdev;
+
+	hdev = kzalloc(sizeof(*hdev), GFP_ATOMIC);
+	if (!hdev)
+		return NULL;
+	hdev->report_desc = kzalloc(desc_len, GFP_ATOMIC);
+	if (!hdev->report_desc) {
+		kfree(hdev);
+		return NULL;
+	}
+	hdev->dev = dev;
+	hdev->id = id;
+	hdev->report_desc_len = desc_len;
+
+	return hdev;
+}
+
+static struct acc_hid_dev *acc_hid_get(struct list_head *list, int id)
+{
+	struct acc_hid_dev *hid;
+
+	list_for_each_entry(hid, list, list) {
+		if (hid->id == id)
+			return hid;
+	}
+	return NULL;
+}
+
+static int acc_register_hid(struct acc_dev *dev, int id, int desc_length)
+{
+	struct acc_hid_dev *hid;
+	unsigned long flags;
+
+	/* report descriptor length must be > 0 */
+	if (desc_length <= 0)
+		return -EINVAL;
+
+	spin_lock_irqsave(&dev->lock, flags);
+	/* replace HID if one already exists with this ID */
+	hid = acc_hid_get(&dev->hid_list, id);
+	if (!hid)
+		hid = acc_hid_get(&dev->new_hid_list, id);
+	if (hid)
+		list_move(&hid->list, &dev->dead_hid_list);
+
+	hid = acc_hid_new(dev, id, desc_length);
+	if (!hid) {
+		spin_unlock_irqrestore(&dev->lock, flags);
+		return -ENOMEM;
+	}
+
+	list_add(&hid->list, &dev->new_hid_list);
+	spin_unlock_irqrestore(&dev->lock, flags);
+
+	/* schedule work to register the HID device */
+	schedule_work(&dev->hid_work);
+	return 0;
+}
+
+static int acc_unregister_hid(struct acc_dev *dev, int id)
+{
+	struct acc_hid_dev *hid;
+	unsigned long flags;
+
+	spin_lock_irqsave(&dev->lock, flags);
+	hid = acc_hid_get(&dev->hid_list, id);
+	if (!hid)
+		hid = acc_hid_get(&dev->new_hid_list, id);
+	if (!hid) {
+		spin_unlock_irqrestore(&dev->lock, flags);
+		return -EINVAL;
+	}
+
+	list_move(&hid->list, &dev->dead_hid_list);
+	spin_unlock_irqrestore(&dev->lock, flags);
+
+	schedule_work(&dev->hid_work);
+	return 0;
+}
+
+static int create_bulk_endpoints(struct acc_dev *dev,
+				struct usb_endpoint_descriptor *in_desc,
+				struct usb_endpoint_descriptor *out_desc)
+{
+	struct usb_composite_dev *cdev = dev->cdev;
+	struct usb_request *req;
+	struct usb_ep *ep;
+	int i;
+
+	DBG(cdev, "create_bulk_endpoints dev: %p\n", dev);
+
+	ep = usb_ep_autoconfig(cdev->gadget, in_desc);
+	if (!ep) {
+		DBG(cdev, "usb_ep_autoconfig for ep_in failed\n");
+		return -ENODEV;
+	}
+	DBG(cdev, "usb_ep_autoconfig for ep_in got %s\n", ep->name);
+	ep->driver_data = dev;		/* claim the endpoint */
+	dev->ep_in = ep;
+
+	ep = usb_ep_autoconfig(cdev->gadget, out_desc);
+	if (!ep) {
+		DBG(cdev, "usb_ep_autoconfig for ep_out failed\n");
+		return -ENODEV;
+	}
+	DBG(cdev, "usb_ep_autoconfig for ep_out got %s\n", ep->name);
+	ep->driver_data = dev;		/* claim the endpoint */
+	dev->ep_out = ep;
+
+	/* now allocate requests for our endpoints */
+	for (i = 0; i < TX_REQ_MAX; i++) {
+		req = acc_request_new(dev->ep_in, BULK_BUFFER_SIZE);
+		if (!req)
+			goto fail;
+		req->complete = acc_complete_in;
+		req_put(dev, &dev->tx_idle, req);
+	}
+	for (i = 0; i < RX_REQ_MAX; i++) {
+		req = acc_request_new(dev->ep_out, BULK_BUFFER_SIZE);
+		if (!req)
+			goto fail;
+		req->complete = acc_complete_out;
+		dev->rx_req[i] = req;
+	}
+
+	return 0;
+
+fail:
+	pr_err("acc_bind() could not allocate requests\n");
+	while ((req = req_get(dev, &dev->tx_idle)))
+		acc_request_free(req, dev->ep_in);
+	for (i = 0; i < RX_REQ_MAX; i++) {
+		acc_request_free(dev->rx_req[i], dev->ep_out);
+		dev->rx_req[i] = NULL;
+	}
+
+	return -1;
+}
+
+static ssize_t acc_read(struct file *fp, char __user *buf,
+	size_t count, loff_t *pos)
+{
+	struct acc_dev *dev = fp->private_data;
+	struct usb_request *req;
+	ssize_t r = count;
+	ssize_t data_length;
+	unsigned xfer;
+	int ret = 0;
+
+	pr_debug("acc_read(%zu)\n", count);
+
+	if (dev->disconnected) {
+		pr_debug("acc_read disconnected");
+		return -ENODEV;
+	}
+
+	if (count > BULK_BUFFER_SIZE)
+		count = BULK_BUFFER_SIZE;
+
+	/* we will block until we're online */
+	pr_debug("acc_read: waiting for online\n");
+	ret = wait_event_interruptible(dev->read_wq, dev->online);
+	if (ret < 0) {
+		r = ret;
+		goto done;
+	}
+
+	if (!dev->rx_req[0]) {
+		pr_warn("acc_read: USB request already handled/freed");
+		r = -EINVAL;
+		goto done;
+	}
+
+	/*
+	 * Calculate the data length by considering termination character.
+	 * Then compansite the difference of rounding up to
+	 * integer multiple of maxpacket size.
+	 */
+	data_length = count;
+	data_length += dev->ep_out->maxpacket - 1;
+	data_length -= data_length % dev->ep_out->maxpacket;
+
+	if (dev->rx_done) {
+		// last req cancelled. try to get it.
+		req = dev->rx_req[0];
+		goto copy_data;
+	}
+
+requeue_req:
+	/* queue a request */
+	req = dev->rx_req[0];
+	req->length = data_length;
+	dev->rx_done = 0;
+	ret = usb_ep_queue(dev->ep_out, req, GFP_KERNEL);
+	if (ret < 0) {
+		r = -EIO;
+		goto done;
+	} else {
+		pr_debug("rx %p queue\n", req);
+	}
+
+	/* wait for a request to complete */
+	ret = wait_event_interruptible(dev->read_wq, dev->rx_done);
+	if (ret < 0) {
+		r = ret;
+		ret = usb_ep_dequeue(dev->ep_out, req);
+		if (ret != 0) {
+			// cancel failed. There can be a data already received.
+			// it will be retrieved in the next read.
+			pr_debug("acc_read: cancelling failed %d", ret);
+		}
+		goto done;
+	}
+
+copy_data:
+	dev->rx_done = 0;
+	if (dev->online) {
+		/* If we got a 0-len packet, throw it back and try again. */
+		if (req->actual == 0)
+			goto requeue_req;
+
+		pr_debug("rx %p %u\n", req, req->actual);
+		xfer = (req->actual < count) ? req->actual : count;
+		r = xfer;
+		if (copy_to_user(buf, req->buf, xfer))
+			r = -EFAULT;
+	} else
+		r = -EIO;
+
+done:
+	pr_debug("acc_read returning %zd\n", r);
+	return r;
+}
+
+static ssize_t acc_write(struct file *fp, const char __user *buf,
+	size_t count, loff_t *pos)
+{
+	struct acc_dev *dev = fp->private_data;
+	struct usb_request *req = 0;
+	ssize_t r = count;
+	unsigned xfer;
+	int ret;
+
+	pr_debug("acc_write(%zu)\n", count);
+
+	if (!dev->online || dev->disconnected) {
+		pr_debug("acc_write disconnected or not online");
+		return -ENODEV;
+	}
+
+	while (count > 0) {
+		/* get an idle tx request to use */
+		req = 0;
+		ret = wait_event_interruptible(dev->write_wq,
+			((req = req_get(dev, &dev->tx_idle)) || !dev->online));
+		if (!dev->online || dev->disconnected) {
+			pr_debug("acc_write dev->error\n");
+			r = -EIO;
+			break;
+		}
+
+		if (!req) {
+			r = ret;
+			break;
+		}
+
+		if (count > BULK_BUFFER_SIZE) {
+			xfer = BULK_BUFFER_SIZE;
+			/* ZLP, They will be more TX requests so not yet. */
+			req->zero = 0;
+		} else {
+			xfer = count;
+			/* If the data length is a multple of the
+			 * maxpacket size then send a zero length packet(ZLP).
+			*/
+			req->zero = ((xfer % dev->ep_in->maxpacket) == 0);
+		}
+		if (copy_from_user(req->buf, buf, xfer)) {
+			r = -EFAULT;
+			break;
+		}
+
+		req->length = xfer;
+		ret = usb_ep_queue(dev->ep_in, req, GFP_KERNEL);
+		if (ret < 0) {
+			pr_debug("acc_write: xfer error %d\n", ret);
+			r = -EIO;
+			break;
+		}
+
+		buf += xfer;
+		count -= xfer;
+
+		/* zero this so we don't try to free it on error exit */
+		req = 0;
+	}
+
+	if (req)
+		req_put(dev, &dev->tx_idle, req);
+
+	pr_debug("acc_write returning %zd\n", r);
+	return r;
+}
+
+static long acc_ioctl(struct file *fp, unsigned code, unsigned long value)
+{
+	struct acc_dev *dev = fp->private_data;
+	char *src = NULL;
+	int ret;
+
+	switch (code) {
+	case ACCESSORY_GET_STRING_MANUFACTURER:
+		src = dev->manufacturer;
+		break;
+	case ACCESSORY_GET_STRING_MODEL:
+		src = dev->model;
+		break;
+	case ACCESSORY_GET_STRING_DESCRIPTION:
+		src = dev->description;
+		break;
+	case ACCESSORY_GET_STRING_VERSION:
+		src = dev->version;
+		break;
+	case ACCESSORY_GET_STRING_URI:
+		src = dev->uri;
+		break;
+	case ACCESSORY_GET_STRING_SERIAL:
+		src = dev->serial;
+		break;
+	case ACCESSORY_IS_START_REQUESTED:
+		return dev->start_requested;
+	case ACCESSORY_GET_AUDIO_MODE:
+		return dev->audio_mode;
+	}
+	if (!src)
+		return -EINVAL;
+
+	ret = strlen(src) + 1;
+	if (copy_to_user((void __user *)value, src, ret))
+		ret = -EFAULT;
+	return ret;
+}
+
+static int acc_open(struct inode *ip, struct file *fp)
+{
+	struct acc_dev *dev = get_acc_dev();
+
+	if (!dev)
+		return -ENODEV;
+
+	if (atomic_xchg(&dev->open_excl, 1)) {
+		put_acc_dev(dev);
+		return -EBUSY;
+	}
+
+	dev->disconnected = 0;
+	fp->private_data = dev;
+	return 0;
+}
+
+static int acc_release(struct inode *ip, struct file *fp)
+{
+	struct acc_dev *dev = fp->private_data;
+
+	if (!dev)
+		return -ENOENT;
+
+	/* indicate that we are disconnected
+	 * still could be online so don't touch online flag
+	 */
+	dev->disconnected = 1;
+
+	fp->private_data = NULL;
+	WARN_ON(!atomic_xchg(&dev->open_excl, 0));
+	put_acc_dev(dev);
+	return 0;
+}
+
+/* file operations for /dev/usb_accessory */
+static const struct file_operations acc_fops = {
+	.owner = THIS_MODULE,
+	.read = acc_read,
+	.write = acc_write,
+	.unlocked_ioctl = acc_ioctl,
+	.compat_ioctl = acc_ioctl,
+	.open = acc_open,
+	.release = acc_release,
+};
+
+static int acc_hid_probe(struct hid_device *hdev,
+		const struct hid_device_id *id)
+{
+	int ret;
+
+	ret = hid_parse(hdev);
+	if (ret)
+		return ret;
+	return hid_hw_start(hdev, HID_CONNECT_DEFAULT);
+}
+
+static struct miscdevice acc_device = {
+	.minor = MISC_DYNAMIC_MINOR,
+	.name = "usb_accessory",
+	.fops = &acc_fops,
+};
+
+static const struct hid_device_id acc_hid_table[] = {
+	{ HID_USB_DEVICE(HID_ANY_ID, HID_ANY_ID) },
+	{ }
+};
+
+static struct hid_driver acc_hid_driver = {
+	.name = "USB accessory",
+	.id_table = acc_hid_table,
+	.probe = acc_hid_probe,
+};
+
+static void acc_complete_setup_noop(struct usb_ep *ep, struct usb_request *req)
+{
+	/*
+	 * Default no-op function when nothing needs to be done for the
+	 * setup request
+	 */
+}
+
+int acc_ctrlrequest(struct usb_composite_dev *cdev,
+				const struct usb_ctrlrequest *ctrl)
+{
+	struct acc_dev	*dev = get_acc_dev();
+	int	value = -EOPNOTSUPP;
+	struct acc_hid_dev *hid;
+	int offset;
+	u8 b_requestType = ctrl->bRequestType;
+	u8 b_request = ctrl->bRequest;
+	u16	w_index = le16_to_cpu(ctrl->wIndex);
+	u16	w_value = le16_to_cpu(ctrl->wValue);
+	u16	w_length = le16_to_cpu(ctrl->wLength);
+	unsigned long flags;
+
+	/*
+	 * If instance is not created which is the case in power off charging
+	 * mode, dev will be NULL. Hence return error if it is the case.
+	 */
+	if (!dev)
+		return -ENODEV;
+
+	if (b_requestType == (USB_DIR_OUT | USB_TYPE_VENDOR)) {
+		if (b_request == ACCESSORY_START) {
+			dev->start_requested = 1;
+			schedule_delayed_work(
+				&dev->start_work, msecs_to_jiffies(10));
+			value = 0;
+			cdev->req->complete = acc_complete_setup_noop;
+		} else if (b_request == ACCESSORY_SEND_STRING) {
+			schedule_work(&dev->sendstring_work);
+			dev->string_index = w_index;
+			cdev->gadget->ep0->driver_data = dev;
+			cdev->req->complete = acc_complete_set_string;
+			value = w_length;
+		} else if (b_request == ACCESSORY_SET_AUDIO_MODE &&
+				w_index == 0 && w_length == 0) {
+			dev->audio_mode = w_value;
+			cdev->req->complete = acc_complete_setup_noop;
+			value = 0;
+		} else if (b_request == ACCESSORY_REGISTER_HID) {
+			cdev->req->complete = acc_complete_setup_noop;
+			value = acc_register_hid(dev, w_value, w_index);
+		} else if (b_request == ACCESSORY_UNREGISTER_HID) {
+			cdev->req->complete = acc_complete_setup_noop;
+			value = acc_unregister_hid(dev, w_value);
+		} else if (b_request == ACCESSORY_SET_HID_REPORT_DESC) {
+			spin_lock_irqsave(&dev->lock, flags);
+			hid = acc_hid_get(&dev->new_hid_list, w_value);
+			spin_unlock_irqrestore(&dev->lock, flags);
+			if (!hid) {
+				value = -EINVAL;
+				goto err;
+			}
+			offset = w_index;
+			if (offset != hid->report_desc_offset
+				|| offset + w_length > hid->report_desc_len) {
+				value = -EINVAL;
+				goto err;
+			}
+			cdev->req->context = hid;
+			cdev->req->complete = acc_complete_set_hid_report_desc;
+			value = w_length;
+		} else if (b_request == ACCESSORY_SEND_HID_EVENT) {
+			spin_lock_irqsave(&dev->lock, flags);
+			hid = acc_hid_get(&dev->hid_list, w_value);
+			spin_unlock_irqrestore(&dev->lock, flags);
+			if (!hid) {
+				value = -EINVAL;
+				goto err;
+			}
+			cdev->req->context = hid;
+			cdev->req->complete = acc_complete_send_hid_event;
+			value = w_length;
+		}
+	} else if (b_requestType == (USB_DIR_IN | USB_TYPE_VENDOR)) {
+		if (b_request == ACCESSORY_GET_PROTOCOL) {
+			schedule_work(&dev->getprotocol_work);
+			*((u16 *)cdev->req->buf) = PROTOCOL_VERSION;
+			value = sizeof(u16);
+			cdev->req->complete = acc_complete_setup_noop;
+			/* clear any string left over from a previous session */
+			memset(dev->manufacturer, 0, sizeof(dev->manufacturer));
+			memset(dev->model, 0, sizeof(dev->model));
+			memset(dev->description, 0, sizeof(dev->description));
+			memset(dev->version, 0, sizeof(dev->version));
+			memset(dev->uri, 0, sizeof(dev->uri));
+			memset(dev->serial, 0, sizeof(dev->serial));
+			dev->start_requested = 0;
+			dev->audio_mode = 0;
+		}
+	}
+
+	if (value >= 0) {
+		cdev->req->zero = 0;
+		cdev->req->length = value;
+		value = usb_ep_queue(cdev->gadget->ep0, cdev->req, GFP_ATOMIC);
+		if (value < 0)
+			ERROR(cdev, "%s setup response queue error\n",
+				__func__);
+	}
+
+err:
+	if (value == -EOPNOTSUPP)
+		VDBG(cdev,
+			"unknown class-specific control req "
+			"%02x.%02x v%04x i%04x l%u\n",
+			ctrl->bRequestType, ctrl->bRequest,
+			w_value, w_index, w_length);
+	put_acc_dev(dev);
+	return value;
+}
+EXPORT_SYMBOL_GPL(acc_ctrlrequest);
+
+int acc_ctrlrequest_composite(struct usb_composite_dev *cdev,
+			      const struct usb_ctrlrequest *ctrl)
+{
+	u16 w_length = le16_to_cpu(ctrl->wLength);
+
+	if (w_length > USB_COMP_EP0_BUFSIZ) {
+		if (ctrl->bRequestType & USB_DIR_IN) {
+			/* Cast away the const, we are going to overwrite on purpose. */
+			__le16 *temp = (__le16 *)&ctrl->wLength;
+
+			*temp = cpu_to_le16(USB_COMP_EP0_BUFSIZ);
+			w_length = USB_COMP_EP0_BUFSIZ;
+		} else {
+			return -EINVAL;
+		}
+	}
+	return acc_ctrlrequest(cdev, ctrl);
+}
+EXPORT_SYMBOL_GPL(acc_ctrlrequest_composite);
+
+static int
+__acc_function_bind(struct usb_configuration *c,
+			struct usb_function *f, bool configfs)
+{
+	struct usb_composite_dev *cdev = c->cdev;
+	struct usb_string *us;
+	struct acc_dev	*dev = func_to_dev(f);
+	int			id;
+	int			ret;
+
+	DBG(cdev, "acc_function_bind dev: %p\n", dev);
+
+	if (configfs) {
+		us = usb_gstrings_attach(cdev, acc_strings, ARRAY_SIZE(acc_string_defs));
+		if (IS_ERR(us))
+			return PTR_ERR(us);
+		ret = us[INTERFACE_STRING_INDEX].id;
+		acc_interface_desc.iInterface = ret;
+		dev->cdev = c->cdev;
+	}
+	ret = hid_register_driver(&acc_hid_driver);
+	if (ret)
+		return ret;
+
+	dev->start_requested = 0;
+
+	/* allocate interface ID(s) */
+	id = usb_interface_id(c, f);
+	if (id < 0)
+		return id;
+	acc_interface_desc.bInterfaceNumber = id;
+
+	/* allocate endpoints */
+	ret = create_bulk_endpoints(dev, &acc_fullspeed_in_desc,
+			&acc_fullspeed_out_desc);
+	if (ret)
+		return ret;
+
+	/* support high speed hardware */
+	acc_highspeed_in_desc.bEndpointAddress =
+		acc_fullspeed_in_desc.bEndpointAddress;
+	acc_highspeed_out_desc.bEndpointAddress =
+		acc_fullspeed_out_desc.bEndpointAddress;
+
+	/* support super speed hardware */
+	acc_superspeed_in_desc.bEndpointAddress =
+		acc_fullspeed_in_desc.bEndpointAddress;
+	acc_superspeed_out_desc.bEndpointAddress =
+		acc_fullspeed_out_desc.bEndpointAddress;
+
+	/* support super speed plus hardware */
+	acc_superspeedplus_in_desc.bEndpointAddress =
+		acc_fullspeed_in_desc.bEndpointAddress;
+	acc_superspeedplus_out_desc.bEndpointAddress =
+		acc_fullspeed_out_desc.bEndpointAddress;
+
+	DBG(cdev, "%s speed %s: IN/%s, OUT/%s\n",
+			gadget_is_dualspeed(c->cdev->gadget) ? "dual" : "full",
+			f->name, dev->ep_in->name, dev->ep_out->name);
+	return 0;
+}
+
+static int
+acc_function_bind_configfs(struct usb_configuration *c,
+			struct usb_function *f) {
+	return __acc_function_bind(c, f, true);
+}
+
+static void
+kill_all_hid_devices(struct acc_dev *dev)
+{
+	struct acc_hid_dev *hid;
+	struct list_head *entry, *temp;
+	unsigned long flags;
+
+	spin_lock_irqsave(&dev->lock, flags);
+	list_for_each_safe(entry, temp, &dev->hid_list) {
+		hid = list_entry(entry, struct acc_hid_dev, list);
+		list_del(&hid->list);
+		list_add(&hid->list, &dev->dead_hid_list);
+	}
+	list_for_each_safe(entry, temp, &dev->new_hid_list) {
+		hid = list_entry(entry, struct acc_hid_dev, list);
+		list_del(&hid->list);
+		list_add(&hid->list, &dev->dead_hid_list);
+	}
+	spin_unlock_irqrestore(&dev->lock, flags);
+
+	schedule_work(&dev->hid_work);
+}
+
+static void
+acc_hid_unbind(struct acc_dev *dev)
+{
+	hid_unregister_driver(&acc_hid_driver);
+	kill_all_hid_devices(dev);
+}
+
+static void
+acc_function_unbind(struct usb_configuration *c, struct usb_function *f)
+{
+	struct acc_dev	*dev = func_to_dev(f);
+	struct usb_request *req;
+	int i;
+
+	dev->online = 0;		/* clear online flag */
+	wake_up(&dev->read_wq);		/* unblock reads on closure */
+	wake_up(&dev->write_wq);	/* likewise for writes */
+
+	while ((req = req_get(dev, &dev->tx_idle)))
+		acc_request_free(req, dev->ep_in);
+	for (i = 0; i < RX_REQ_MAX; i++) {
+		acc_request_free(dev->rx_req[i], dev->ep_out);
+		dev->rx_req[i] = NULL;
+	}
+
+	acc_hid_unbind(dev);
+}
+
+static void acc_getprotocol_work(struct work_struct *data)
+{
+	char *envp[2] = { "ACCESSORY=GETPROTOCOL", NULL };
+
+	kobject_uevent_env(&acc_device.this_device->kobj, KOBJ_CHANGE, envp);
+}
+
+static void acc_sendstring_work(struct work_struct *data)
+{
+	char *envp[2] = { "ACCESSORY=SENDSTRING", NULL };
+
+	kobject_uevent_env(&acc_device.this_device->kobj, KOBJ_CHANGE, envp);
+}
+
+static void acc_start_work(struct work_struct *data)
+{
+	char *envp[2] = { "ACCESSORY=START", NULL };
+
+	kobject_uevent_env(&acc_device.this_device->kobj, KOBJ_CHANGE, envp);
+}
+
+static int acc_hid_init(struct acc_hid_dev *hdev)
+{
+	struct hid_device *hid;
+	int ret;
+
+	hid = hid_allocate_device();
+	if (IS_ERR(hid))
+		return PTR_ERR(hid);
+
+	hid->ll_driver = &acc_hid_ll_driver;
+	hid->dev.parent = acc_device.this_device;
+
+	hid->bus = BUS_USB;
+	hid->vendor = HID_ANY_ID;
+	hid->product = HID_ANY_ID;
+	hid->driver_data = hdev;
+	ret = hid_add_device(hid);
+	if (ret) {
+		pr_err("can't add hid device: %d\n", ret);
+		hid_destroy_device(hid);
+		return ret;
+	}
+
+	hdev->hid = hid;
+	return 0;
+}
+
+static void acc_hid_delete(struct acc_hid_dev *hid)
+{
+	kfree(hid->report_desc);
+	kfree(hid);
+}
+
+static void acc_hid_work(struct work_struct *data)
+{
+	struct acc_dev *dev = get_acc_dev();
+	struct list_head	*entry, *temp;
+	struct acc_hid_dev *hid;
+	struct list_head	new_list, dead_list;
+	unsigned long flags;
+
+	if (!dev)
+		return;
+
+	INIT_LIST_HEAD(&new_list);
+
+	spin_lock_irqsave(&dev->lock, flags);
+
+	/* copy hids that are ready for initialization to new_list */
+	list_for_each_safe(entry, temp, &dev->new_hid_list) {
+		hid = list_entry(entry, struct acc_hid_dev, list);
+		if (hid->report_desc_offset == hid->report_desc_len)
+			list_move(&hid->list, &new_list);
+	}
+
+	if (list_empty(&dev->dead_hid_list)) {
+		INIT_LIST_HEAD(&dead_list);
+	} else {
+		/* move all of dev->dead_hid_list to dead_list */
+		dead_list.prev = dev->dead_hid_list.prev;
+		dead_list.next = dev->dead_hid_list.next;
+		dead_list.next->prev = &dead_list;
+		dead_list.prev->next = &dead_list;
+		INIT_LIST_HEAD(&dev->dead_hid_list);
+	}
+
+	spin_unlock_irqrestore(&dev->lock, flags);
+
+	/* register new HID devices */
+	list_for_each_safe(entry, temp, &new_list) {
+		hid = list_entry(entry, struct acc_hid_dev, list);
+		if (acc_hid_init(hid)) {
+			pr_err("can't add HID device %p\n", hid);
+			acc_hid_delete(hid);
+		} else {
+			spin_lock_irqsave(&dev->lock, flags);
+			list_move(&hid->list, &dev->hid_list);
+			spin_unlock_irqrestore(&dev->lock, flags);
+		}
+	}
+
+	/* remove dead HID devices */
+	list_for_each_safe(entry, temp, &dead_list) {
+		hid = list_entry(entry, struct acc_hid_dev, list);
+		list_del(&hid->list);
+		if (hid->hid)
+			hid_destroy_device(hid->hid);
+		acc_hid_delete(hid);
+	}
+
+	put_acc_dev(dev);
+}
+
+static int acc_function_set_alt(struct usb_function *f,
+		unsigned intf, unsigned alt)
+{
+	struct acc_dev	*dev = func_to_dev(f);
+	struct usb_composite_dev *cdev = f->config->cdev;
+	int ret;
+
+	DBG(cdev, "acc_function_set_alt intf: %d alt: %d\n", intf, alt);
+
+	ret = config_ep_by_speed(cdev->gadget, f, dev->ep_in);
+	if (ret)
+		return ret;
+
+	ret = usb_ep_enable(dev->ep_in);
+	if (ret)
+		return ret;
+
+	ret = config_ep_by_speed(cdev->gadget, f, dev->ep_out);
+	if (ret)
+		return ret;
+
+	ret = usb_ep_enable(dev->ep_out);
+	if (ret) {
+		usb_ep_disable(dev->ep_in);
+		return ret;
+	}
+
+	dev->online = 1;
+	dev->disconnected = 0; /* if online then not disconnected */
+
+	/* readers may be blocked waiting for us to go online */
+	wake_up(&dev->read_wq);
+	return 0;
+}
+
+static void acc_function_disable(struct usb_function *f)
+{
+	struct acc_dev	*dev = func_to_dev(f);
+	struct usb_composite_dev	*cdev = dev->cdev;
+
+	DBG(cdev, "acc_function_disable\n");
+	acc_set_disconnected(dev); /* this now only sets disconnected */
+	dev->online = 0; /* so now need to clear online flag here too */
+	usb_ep_disable(dev->ep_in);
+	usb_ep_disable(dev->ep_out);
+
+	/* readers may be blocked waiting for us to go online */
+	wake_up(&dev->read_wq);
+
+	VDBG(cdev, "%s disabled\n", dev->function.name);
+}
+
+static int acc_setup(void)
+{
+	struct acc_dev_ref *ref = &_acc_dev_ref;
+	struct acc_dev *dev;
+	int ret;
+
+	if (kref_read(&ref->kref))
+		return -EBUSY;
+
+	dev = kzalloc(sizeof(*dev), GFP_KERNEL);
+	if (!dev)
+		return -ENOMEM;
+
+	spin_lock_init(&dev->lock);
+	init_waitqueue_head(&dev->read_wq);
+	init_waitqueue_head(&dev->write_wq);
+	atomic_set(&dev->open_excl, 0);
+	INIT_LIST_HEAD(&dev->tx_idle);
+	INIT_LIST_HEAD(&dev->hid_list);
+	INIT_LIST_HEAD(&dev->new_hid_list);
+	INIT_LIST_HEAD(&dev->dead_hid_list);
+	INIT_DELAYED_WORK(&dev->start_work, acc_start_work);
+	INIT_WORK(&dev->hid_work, acc_hid_work);
+	INIT_WORK(&dev->getprotocol_work, acc_getprotocol_work);
+	INIT_WORK(&dev->sendstring_work, acc_sendstring_work);
+
+	dev->ref = ref;
+	if (cmpxchg_relaxed(&ref->acc_dev, NULL, dev)) {
+		ret = -EBUSY;
+		goto err_free_dev;
+	}
+
+	ret = misc_register(&acc_device);
+	if (ret)
+		goto err_zap_ptr;
+
+	kref_init(&ref->kref);
+	return 0;
+
+err_zap_ptr:
+	ref->acc_dev = NULL;
+err_free_dev:
+	kfree(dev);
+	pr_err("USB accessory gadget driver failed to initialize\n");
+	return ret;
+}
+
+void acc_disconnect(void)
+{
+	struct acc_dev *dev = get_acc_dev();
+
+	if (!dev)
+		return;
+
+	/* unregister all HID devices if USB is disconnected */
+	kill_all_hid_devices(dev);
+	put_acc_dev(dev);
+}
+EXPORT_SYMBOL_GPL(acc_disconnect);
+
+static void acc_cleanup(void)
+{
+	struct acc_dev *dev = get_acc_dev();
+
+	misc_deregister(&acc_device);
+	put_acc_dev(dev);
+	put_acc_dev(dev); /* Pairs with kref_init() in acc_setup() */
+}
+static struct acc_instance *to_acc_instance(struct config_item *item)
+{
+	return container_of(to_config_group(item), struct acc_instance,
+		func_inst.group);
+}
+
+static void acc_attr_release(struct config_item *item)
+{
+	struct acc_instance *fi_acc = to_acc_instance(item);
+
+	usb_put_function_instance(&fi_acc->func_inst);
+}
+
+static struct configfs_item_operations acc_item_ops = {
+	.release        = acc_attr_release,
+};
+
+static struct config_item_type acc_func_type = {
+	.ct_item_ops    = &acc_item_ops,
+	.ct_owner       = THIS_MODULE,
+};
+
+static struct acc_instance *to_fi_acc(struct usb_function_instance *fi)
+{
+	return container_of(fi, struct acc_instance, func_inst);
+}
+
+static int acc_set_inst_name(struct usb_function_instance *fi, const char *name)
+{
+	struct acc_instance *fi_acc;
+	char *ptr;
+	int name_len;
+
+	name_len = strlen(name) + 1;
+	if (name_len > MAX_INST_NAME_LEN)
+		return -ENAMETOOLONG;
+
+	ptr = kstrndup(name, name_len, GFP_KERNEL);
+	if (!ptr)
+		return -ENOMEM;
+
+	fi_acc = to_fi_acc(fi);
+	fi_acc->name = ptr;
+	return 0;
+}
+
+static void acc_free_inst(struct usb_function_instance *fi)
+{
+	struct acc_instance *fi_acc;
+
+	fi_acc = to_fi_acc(fi);
+	kfree(fi_acc->name);
+	acc_cleanup();
+}
+
+static struct usb_function_instance *acc_alloc_inst(void)
+{
+	struct acc_instance *fi_acc;
+	int err;
+
+	fi_acc = kzalloc(sizeof(*fi_acc), GFP_KERNEL);
+	if (!fi_acc)
+		return ERR_PTR(-ENOMEM);
+	fi_acc->func_inst.set_inst_name = acc_set_inst_name;
+	fi_acc->func_inst.free_func_inst = acc_free_inst;
+
+	err = acc_setup();
+	if (err) {
+		kfree(fi_acc);
+		return ERR_PTR(err);
+	}
+
+	config_group_init_type_name(&fi_acc->func_inst.group,
+					"", &acc_func_type);
+	return  &fi_acc->func_inst;
+}
+
+static void acc_free(struct usb_function *f)
+{
+	struct acc_dev *dev = func_to_dev(f);
+
+	put_acc_dev(dev);
+}
+
+int acc_ctrlrequest_configfs(struct usb_function *f,
+			const struct usb_ctrlrequest *ctrl) {
+	if (f->config != NULL && f->config->cdev != NULL)
+		return acc_ctrlrequest(f->config->cdev, ctrl);
+	else
+		return -1;
+}
+
+static struct usb_function *acc_alloc(struct usb_function_instance *fi)
+{
+	struct acc_dev *dev = get_acc_dev();
+
+	dev->function.name = "accessory";
+	dev->function.strings = acc_strings,
+	dev->function.fs_descriptors = fs_acc_descs;
+	dev->function.hs_descriptors = hs_acc_descs;
+	dev->function.ss_descriptors = ss_acc_descs;
+	dev->function.ssp_descriptors = ssp_acc_descs;
+	dev->function.bind = acc_function_bind_configfs;
+	dev->function.unbind = acc_function_unbind;
+	dev->function.set_alt = acc_function_set_alt;
+	dev->function.disable = acc_function_disable;
+	dev->function.free_func = acc_free;
+	dev->function.setup = acc_ctrlrequest_configfs;
+
+	return &dev->function;
+}
+DECLARE_USB_FUNCTION_INIT(accessory, acc_alloc_inst, acc_alloc);
+MODULE_LICENSE("GPL");
diff --git a/drivers/usb/gadget/function/f_audio_source.c b/drivers/usb/gadget/function/f_audio_source.c
new file mode 100644
index 0000000..c768a52
--- /dev/null
+++ b/drivers/usb/gadget/function/f_audio_source.c
@@ -0,0 +1,1071 @@
+/*
+ * Gadget Function Driver for USB audio source device
+ *
+ * Copyright (C) 2012 Google, Inc.
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#include <linux/device.h>
+#include <linux/usb/audio.h>
+#include <linux/wait.h>
+#include <linux/pm_qos.h>
+#include <sound/core.h>
+#include <sound/initval.h>
+#include <sound/pcm.h>
+
+#include <linux/usb.h>
+#include <linux/usb_usual.h>
+#include <linux/usb/ch9.h>
+#include <linux/configfs.h>
+#include <linux/usb/composite.h>
+#include <linux/module.h>
+#include <linux/moduleparam.h>
+#define SAMPLE_RATE 44100
+#define FRAMES_PER_MSEC (SAMPLE_RATE / 1000)
+
+#define IN_EP_MAX_PACKET_SIZE 256
+
+/* Number of requests to allocate */
+#define IN_EP_REQ_COUNT 4
+
+#define AUDIO_AC_INTERFACE	0
+#define AUDIO_AS_INTERFACE	1
+#define AUDIO_NUM_INTERFACES	2
+#define MAX_INST_NAME_LEN     40
+
+/* B.3.1  Standard AC Interface Descriptor */
+static struct usb_interface_descriptor ac_interface_desc = {
+	.bLength =		USB_DT_INTERFACE_SIZE,
+	.bDescriptorType =	USB_DT_INTERFACE,
+	.bNumEndpoints =	0,
+	.bInterfaceClass =	USB_CLASS_AUDIO,
+	.bInterfaceSubClass =	USB_SUBCLASS_AUDIOCONTROL,
+};
+
+DECLARE_UAC_AC_HEADER_DESCRIPTOR(2);
+
+#define UAC_DT_AC_HEADER_LENGTH	UAC_DT_AC_HEADER_SIZE(AUDIO_NUM_INTERFACES)
+/* 1 input terminal, 1 output terminal and 1 feature unit */
+#define UAC_DT_TOTAL_LENGTH (UAC_DT_AC_HEADER_LENGTH \
+	+ UAC_DT_INPUT_TERMINAL_SIZE + UAC_DT_OUTPUT_TERMINAL_SIZE \
+	+ UAC_DT_FEATURE_UNIT_SIZE(0))
+/* B.3.2  Class-Specific AC Interface Descriptor */
+static struct uac1_ac_header_descriptor_2 ac_header_desc = {
+	.bLength =		UAC_DT_AC_HEADER_LENGTH,
+	.bDescriptorType =	USB_DT_CS_INTERFACE,
+	.bDescriptorSubtype =	UAC_HEADER,
+	.bcdADC =		__constant_cpu_to_le16(0x0100),
+	.wTotalLength =		__constant_cpu_to_le16(UAC_DT_TOTAL_LENGTH),
+	.bInCollection =	AUDIO_NUM_INTERFACES,
+	.baInterfaceNr = {
+		[0] =		AUDIO_AC_INTERFACE,
+		[1] =		AUDIO_AS_INTERFACE,
+	}
+};
+
+#define INPUT_TERMINAL_ID	1
+static struct uac_input_terminal_descriptor input_terminal_desc = {
+	.bLength =		UAC_DT_INPUT_TERMINAL_SIZE,
+	.bDescriptorType =	USB_DT_CS_INTERFACE,
+	.bDescriptorSubtype =	UAC_INPUT_TERMINAL,
+	.bTerminalID =		INPUT_TERMINAL_ID,
+	.wTerminalType =	UAC_INPUT_TERMINAL_MICROPHONE,
+	.bAssocTerminal =	0,
+	.wChannelConfig =	0x3,
+};
+
+DECLARE_UAC_FEATURE_UNIT_DESCRIPTOR(0);
+
+#define FEATURE_UNIT_ID		2
+static struct uac_feature_unit_descriptor_0 feature_unit_desc = {
+	.bLength		= UAC_DT_FEATURE_UNIT_SIZE(0),
+	.bDescriptorType	= USB_DT_CS_INTERFACE,
+	.bDescriptorSubtype	= UAC_FEATURE_UNIT,
+	.bUnitID		= FEATURE_UNIT_ID,
+	.bSourceID		= INPUT_TERMINAL_ID,
+	.bControlSize		= 2,
+};
+
+#define OUTPUT_TERMINAL_ID	3
+static struct uac1_output_terminal_descriptor output_terminal_desc = {
+	.bLength		= UAC_DT_OUTPUT_TERMINAL_SIZE,
+	.bDescriptorType	= USB_DT_CS_INTERFACE,
+	.bDescriptorSubtype	= UAC_OUTPUT_TERMINAL,
+	.bTerminalID		= OUTPUT_TERMINAL_ID,
+	.wTerminalType		= UAC_TERMINAL_STREAMING,
+	.bAssocTerminal		= FEATURE_UNIT_ID,
+	.bSourceID		= FEATURE_UNIT_ID,
+};
+
+/* B.4.1  Standard AS Interface Descriptor */
+static struct usb_interface_descriptor as_interface_alt_0_desc = {
+	.bLength =		USB_DT_INTERFACE_SIZE,
+	.bDescriptorType =	USB_DT_INTERFACE,
+	.bAlternateSetting =	0,
+	.bNumEndpoints =	0,
+	.bInterfaceClass =	USB_CLASS_AUDIO,
+	.bInterfaceSubClass =	USB_SUBCLASS_AUDIOSTREAMING,
+};
+
+static struct usb_interface_descriptor as_interface_alt_1_desc = {
+	.bLength =		USB_DT_INTERFACE_SIZE,
+	.bDescriptorType =	USB_DT_INTERFACE,
+	.bAlternateSetting =	1,
+	.bNumEndpoints =	1,
+	.bInterfaceClass =	USB_CLASS_AUDIO,
+	.bInterfaceSubClass =	USB_SUBCLASS_AUDIOSTREAMING,
+};
+
+/* B.4.2  Class-Specific AS Interface Descriptor */
+static struct uac1_as_header_descriptor as_header_desc = {
+	.bLength =		UAC_DT_AS_HEADER_SIZE,
+	.bDescriptorType =	USB_DT_CS_INTERFACE,
+	.bDescriptorSubtype =	UAC_AS_GENERAL,
+	.bTerminalLink =	INPUT_TERMINAL_ID,
+	.bDelay =		1,
+	.wFormatTag =		UAC_FORMAT_TYPE_I_PCM,
+};
+
+DECLARE_UAC_FORMAT_TYPE_I_DISCRETE_DESC(1);
+
+static struct uac_format_type_i_discrete_descriptor_1 as_type_i_desc = {
+	.bLength =		UAC_FORMAT_TYPE_I_DISCRETE_DESC_SIZE(1),
+	.bDescriptorType =	USB_DT_CS_INTERFACE,
+	.bDescriptorSubtype =	UAC_FORMAT_TYPE,
+	.bFormatType =		UAC_FORMAT_TYPE_I,
+	.bSubframeSize =	2,
+	.bBitResolution =	16,
+	.bSamFreqType =		1,
+};
+
+/* Standard ISO IN Endpoint Descriptor for highspeed */
+static struct usb_endpoint_descriptor hs_as_in_ep_desc  = {
+	.bLength =		USB_DT_ENDPOINT_AUDIO_SIZE,
+	.bDescriptorType =	USB_DT_ENDPOINT,
+	.bEndpointAddress =	USB_DIR_IN,
+	.bmAttributes =		USB_ENDPOINT_SYNC_SYNC
+				| USB_ENDPOINT_XFER_ISOC,
+	.wMaxPacketSize =	__constant_cpu_to_le16(IN_EP_MAX_PACKET_SIZE),
+	.bInterval =		4, /* poll 1 per millisecond */
+};
+
+/* Standard ISO IN Endpoint Descriptor for highspeed */
+static struct usb_endpoint_descriptor fs_as_in_ep_desc  = {
+	.bLength =		USB_DT_ENDPOINT_AUDIO_SIZE,
+	.bDescriptorType =	USB_DT_ENDPOINT,
+	.bEndpointAddress =	USB_DIR_IN,
+	.bmAttributes =		USB_ENDPOINT_SYNC_SYNC
+				| USB_ENDPOINT_XFER_ISOC,
+	.wMaxPacketSize =	__constant_cpu_to_le16(IN_EP_MAX_PACKET_SIZE),
+	.bInterval =		1, /* poll 1 per millisecond */
+};
+
+/* Class-specific AS ISO OUT Endpoint Descriptor */
+static struct uac_iso_endpoint_descriptor as_iso_in_desc = {
+	.bLength =		UAC_ISO_ENDPOINT_DESC_SIZE,
+	.bDescriptorType =	USB_DT_CS_ENDPOINT,
+	.bDescriptorSubtype =	UAC_EP_GENERAL,
+	.bmAttributes =		1,
+	.bLockDelayUnits =	1,
+	.wLockDelay =		__constant_cpu_to_le16(1),
+};
+
+static struct usb_descriptor_header *hs_audio_desc[] = {
+	(struct usb_descriptor_header *)&ac_interface_desc,
+	(struct usb_descriptor_header *)&ac_header_desc,
+
+	(struct usb_descriptor_header *)&input_terminal_desc,
+	(struct usb_descriptor_header *)&output_terminal_desc,
+	(struct usb_descriptor_header *)&feature_unit_desc,
+
+	(struct usb_descriptor_header *)&as_interface_alt_0_desc,
+	(struct usb_descriptor_header *)&as_interface_alt_1_desc,
+	(struct usb_descriptor_header *)&as_header_desc,
+
+	(struct usb_descriptor_header *)&as_type_i_desc,
+
+	(struct usb_descriptor_header *)&hs_as_in_ep_desc,
+	(struct usb_descriptor_header *)&as_iso_in_desc,
+	NULL,
+};
+
+static struct usb_descriptor_header *fs_audio_desc[] = {
+	(struct usb_descriptor_header *)&ac_interface_desc,
+	(struct usb_descriptor_header *)&ac_header_desc,
+
+	(struct usb_descriptor_header *)&input_terminal_desc,
+	(struct usb_descriptor_header *)&output_terminal_desc,
+	(struct usb_descriptor_header *)&feature_unit_desc,
+
+	(struct usb_descriptor_header *)&as_interface_alt_0_desc,
+	(struct usb_descriptor_header *)&as_interface_alt_1_desc,
+	(struct usb_descriptor_header *)&as_header_desc,
+
+	(struct usb_descriptor_header *)&as_type_i_desc,
+
+	(struct usb_descriptor_header *)&fs_as_in_ep_desc,
+	(struct usb_descriptor_header *)&as_iso_in_desc,
+	NULL,
+};
+
+static struct snd_pcm_hardware audio_hw_info = {
+	.info =			SNDRV_PCM_INFO_MMAP |
+				SNDRV_PCM_INFO_MMAP_VALID |
+				SNDRV_PCM_INFO_BATCH |
+				SNDRV_PCM_INFO_INTERLEAVED |
+				SNDRV_PCM_INFO_BLOCK_TRANSFER,
+
+	.formats		= SNDRV_PCM_FMTBIT_S16_LE,
+	.channels_min		= 2,
+	.channels_max		= 2,
+	.rate_min		= SAMPLE_RATE,
+	.rate_max		= SAMPLE_RATE,
+
+	.buffer_bytes_max =	1024 * 1024,
+	.period_bytes_min =	64,
+	.period_bytes_max =	512 * 1024,
+	.periods_min =		2,
+	.periods_max =		1024,
+};
+
+/*-------------------------------------------------------------------------*/
+
+struct audio_source_config {
+	int	card;
+	int	device;
+};
+
+struct audio_dev {
+	struct usb_function		func;
+	struct snd_card			*card;
+	struct snd_pcm			*pcm;
+	struct snd_pcm_substream *substream;
+
+	struct list_head		idle_reqs;
+	struct usb_ep			*in_ep;
+
+	spinlock_t			lock;
+
+	/* beginning, end and current position in our buffer */
+	void				*buffer_start;
+	void				*buffer_end;
+	void				*buffer_pos;
+
+	/* byte size of a "period" */
+	unsigned int			period;
+	/* bytes sent since last call to snd_pcm_period_elapsed */
+	unsigned int			period_offset;
+	/* time we started playing */
+	ktime_t				start_time;
+	/* number of frames sent since start_time */
+	s64				frames_sent;
+	struct audio_source_config	*config;
+	/* for creating and issuing QoS requests */
+	struct pm_qos_request pm_qos;
+};
+
+static inline struct audio_dev *func_to_audio(struct usb_function *f)
+{
+	return container_of(f, struct audio_dev, func);
+}
+
+/*-------------------------------------------------------------------------*/
+
+struct audio_source_instance {
+	struct usb_function_instance func_inst;
+	const char *name;
+	struct audio_source_config *config;
+	struct device *audio_device;
+};
+
+static void audio_source_attr_release(struct config_item *item);
+
+static struct configfs_item_operations audio_source_item_ops = {
+	.release        = audio_source_attr_release,
+};
+
+static struct config_item_type audio_source_func_type = {
+	.ct_item_ops    = &audio_source_item_ops,
+	.ct_owner       = THIS_MODULE,
+};
+
+static ssize_t audio_source_pcm_show(struct device *dev,
+		struct device_attribute *attr, char *buf);
+
+static DEVICE_ATTR(pcm, S_IRUGO, audio_source_pcm_show, NULL);
+
+static struct device_attribute *audio_source_function_attributes[] = {
+	&dev_attr_pcm,
+	NULL
+};
+
+/*--------------------------------------------------------------------------*/
+
+static struct usb_request *audio_request_new(struct usb_ep *ep, int buffer_size)
+{
+	struct usb_request *req = usb_ep_alloc_request(ep, GFP_KERNEL);
+
+	if (!req)
+		return NULL;
+
+	req->buf = kmalloc(buffer_size, GFP_KERNEL);
+	if (!req->buf) {
+		usb_ep_free_request(ep, req);
+		return NULL;
+	}
+	req->length = buffer_size;
+	return req;
+}
+
+static void audio_request_free(struct usb_request *req, struct usb_ep *ep)
+{
+	if (req) {
+		kfree(req->buf);
+		usb_ep_free_request(ep, req);
+	}
+}
+
+static void audio_req_put(struct audio_dev *audio, struct usb_request *req)
+{
+	unsigned long flags;
+
+	spin_lock_irqsave(&audio->lock, flags);
+	list_add_tail(&req->list, &audio->idle_reqs);
+	spin_unlock_irqrestore(&audio->lock, flags);
+}
+
+static struct usb_request *audio_req_get(struct audio_dev *audio)
+{
+	unsigned long flags;
+	struct usb_request *req;
+
+	spin_lock_irqsave(&audio->lock, flags);
+	if (list_empty(&audio->idle_reqs)) {
+		req = 0;
+	} else {
+		req = list_first_entry(&audio->idle_reqs, struct usb_request,
+				list);
+		list_del(&req->list);
+	}
+	spin_unlock_irqrestore(&audio->lock, flags);
+	return req;
+}
+
+/* send the appropriate number of packets to match our bitrate */
+static void audio_send(struct audio_dev *audio)
+{
+	struct snd_pcm_runtime *runtime;
+	struct usb_request *req;
+	int length, length1, length2, ret;
+	s64 msecs;
+	s64 frames;
+	ktime_t now;
+
+	/* audio->substream will be null if we have been closed */
+	if (!audio->substream)
+		return;
+	/* audio->buffer_pos will be null if we have been stopped */
+	if (!audio->buffer_pos)
+		return;
+
+	runtime = audio->substream->runtime;
+
+	/* compute number of frames to send */
+	now = ktime_get();
+	msecs = div_s64((ktime_to_ns(now) - ktime_to_ns(audio->start_time)),
+			1000000);
+	frames = div_s64((msecs * SAMPLE_RATE), 1000);
+
+	/* Readjust our frames_sent if we fall too far behind.
+	 * If we get too far behind it is better to drop some frames than
+	 * to keep sending data too fast in an attempt to catch up.
+	 */
+	if (frames - audio->frames_sent > 10 * FRAMES_PER_MSEC)
+		audio->frames_sent = frames - FRAMES_PER_MSEC;
+
+	frames -= audio->frames_sent;
+
+	/* We need to send something to keep the pipeline going */
+	if (frames <= 0)
+		frames = FRAMES_PER_MSEC;
+
+	while (frames > 0) {
+		req = audio_req_get(audio);
+		if (!req)
+			break;
+
+		length = frames_to_bytes(runtime, frames);
+		if (length > IN_EP_MAX_PACKET_SIZE)
+			length = IN_EP_MAX_PACKET_SIZE;
+
+		if (audio->buffer_pos + length > audio->buffer_end)
+			length1 = audio->buffer_end - audio->buffer_pos;
+		else
+			length1 = length;
+		memcpy(req->buf, audio->buffer_pos, length1);
+		if (length1 < length) {
+			/* Wrap around and copy remaining length
+			 * at beginning of buffer.
+			 */
+			length2 = length - length1;
+			memcpy(req->buf + length1, audio->buffer_start,
+					length2);
+			audio->buffer_pos = audio->buffer_start + length2;
+		} else {
+			audio->buffer_pos += length1;
+			if (audio->buffer_pos >= audio->buffer_end)
+				audio->buffer_pos = audio->buffer_start;
+		}
+
+		req->length = length;
+		ret = usb_ep_queue(audio->in_ep, req, GFP_ATOMIC);
+		if (ret < 0) {
+			pr_err("usb_ep_queue failed ret: %d\n", ret);
+			audio_req_put(audio, req);
+			break;
+		}
+
+		frames -= bytes_to_frames(runtime, length);
+		audio->frames_sent += bytes_to_frames(runtime, length);
+	}
+}
+
+static void audio_control_complete(struct usb_ep *ep, struct usb_request *req)
+{
+	/* nothing to do here */
+}
+
+static void audio_data_complete(struct usb_ep *ep, struct usb_request *req)
+{
+	struct audio_dev *audio = req->context;
+
+	pr_debug("audio_data_complete req->status %d req->actual %d\n",
+		req->status, req->actual);
+
+	audio_req_put(audio, req);
+
+	if (!audio->buffer_start || req->status)
+		return;
+
+	audio->period_offset += req->actual;
+	if (audio->period_offset >= audio->period) {
+		snd_pcm_period_elapsed(audio->substream);
+		audio->period_offset = 0;
+	}
+	audio_send(audio);
+}
+
+static int audio_set_endpoint_req(struct usb_function *f,
+		const struct usb_ctrlrequest *ctrl)
+{
+	int value = -EOPNOTSUPP;
+	u16 ep = le16_to_cpu(ctrl->wIndex);
+	u16 len = le16_to_cpu(ctrl->wLength);
+	u16 w_value = le16_to_cpu(ctrl->wValue);
+
+	pr_debug("bRequest 0x%x, w_value 0x%04x, len %d, endpoint %d\n",
+			ctrl->bRequest, w_value, len, ep);
+
+	switch (ctrl->bRequest) {
+	case UAC_SET_CUR:
+	case UAC_SET_MIN:
+	case UAC_SET_MAX:
+	case UAC_SET_RES:
+		value = len;
+		break;
+	default:
+		break;
+	}
+
+	return value;
+}
+
+static int audio_get_endpoint_req(struct usb_function *f,
+		const struct usb_ctrlrequest *ctrl)
+{
+	struct usb_composite_dev *cdev = f->config->cdev;
+	int value = -EOPNOTSUPP;
+	u8 ep = ((le16_to_cpu(ctrl->wIndex) >> 8) & 0xFF);
+	u16 len = le16_to_cpu(ctrl->wLength);
+	u16 w_value = le16_to_cpu(ctrl->wValue);
+	u8 *buf = cdev->req->buf;
+
+	pr_debug("bRequest 0x%x, w_value 0x%04x, len %d, endpoint %d\n",
+			ctrl->bRequest, w_value, len, ep);
+
+	if (w_value == UAC_EP_CS_ATTR_SAMPLE_RATE << 8) {
+		switch (ctrl->bRequest) {
+		case UAC_GET_CUR:
+		case UAC_GET_MIN:
+		case UAC_GET_MAX:
+		case UAC_GET_RES:
+			/* return our sample rate */
+			buf[0] = (u8)SAMPLE_RATE;
+			buf[1] = (u8)(SAMPLE_RATE >> 8);
+			buf[2] = (u8)(SAMPLE_RATE >> 16);
+			value = 3;
+			break;
+		default:
+			break;
+		}
+	}
+
+	return value;
+}
+
+static int
+audio_setup(struct usb_function *f, const struct usb_ctrlrequest *ctrl)
+{
+	struct usb_composite_dev *cdev = f->config->cdev;
+	struct usb_request *req = cdev->req;
+	int value = -EOPNOTSUPP;
+	u16 w_index = le16_to_cpu(ctrl->wIndex);
+	u16 w_value = le16_to_cpu(ctrl->wValue);
+	u16 w_length = le16_to_cpu(ctrl->wLength);
+
+	/* composite driver infrastructure handles everything; interface
+	 * activation uses set_alt().
+	 */
+	switch (ctrl->bRequestType) {
+	case USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_ENDPOINT:
+		value = audio_set_endpoint_req(f, ctrl);
+		break;
+
+	case USB_DIR_IN | USB_TYPE_CLASS | USB_RECIP_ENDPOINT:
+		value = audio_get_endpoint_req(f, ctrl);
+		break;
+	}
+
+	/* respond with data transfer or status phase? */
+	if (value >= 0) {
+		pr_debug("audio req%02x.%02x v%04x i%04x l%d\n",
+			ctrl->bRequestType, ctrl->bRequest,
+			w_value, w_index, w_length);
+		req->zero = 0;
+		req->length = value;
+		req->complete = audio_control_complete;
+		value = usb_ep_queue(cdev->gadget->ep0, req, GFP_ATOMIC);
+		if (value < 0)
+			pr_err("audio response on err %d\n", value);
+	}
+
+	/* device either stalls (value < 0) or reports success */
+	return value;
+}
+
+static int audio_set_alt(struct usb_function *f, unsigned intf, unsigned alt)
+{
+	struct audio_dev *audio = func_to_audio(f);
+	struct usb_composite_dev *cdev = f->config->cdev;
+	int ret;
+
+	pr_debug("audio_set_alt intf %d, alt %d\n", intf, alt);
+
+	ret = config_ep_by_speed(cdev->gadget, f, audio->in_ep);
+	if (ret)
+		return ret;
+
+	usb_ep_enable(audio->in_ep);
+	return 0;
+}
+
+static void audio_disable(struct usb_function *f)
+{
+	struct audio_dev	*audio = func_to_audio(f);
+
+	pr_debug("audio_disable\n");
+	usb_ep_disable(audio->in_ep);
+}
+
+static void audio_free_func(struct usb_function *f)
+{
+	/* no-op */
+}
+
+/*-------------------------------------------------------------------------*/
+
+static void audio_build_desc(struct audio_dev *audio)
+{
+	u8 *sam_freq;
+	int rate;
+
+	/* Set channel numbers */
+	input_terminal_desc.bNrChannels = 2;
+	as_type_i_desc.bNrChannels = 2;
+
+	/* Set sample rates */
+	rate = SAMPLE_RATE;
+	sam_freq = as_type_i_desc.tSamFreq[0];
+	memcpy(sam_freq, &rate, 3);
+}
+
+
+static int snd_card_setup(struct usb_configuration *c,
+	struct audio_source_config *config);
+static struct audio_source_instance *to_fi_audio_source(
+	const struct usb_function_instance *fi);
+
+
+/* audio function driver setup/binding */
+static int
+audio_bind(struct usb_configuration *c, struct usb_function *f)
+{
+	struct usb_composite_dev *cdev = c->cdev;
+	struct audio_dev *audio = func_to_audio(f);
+	int status;
+	struct usb_ep *ep;
+	struct usb_request *req;
+	int i;
+	int err;
+
+	if (IS_ENABLED(CONFIG_USB_CONFIGFS)) {
+		struct audio_source_instance *fi_audio =
+				to_fi_audio_source(f->fi);
+		struct audio_source_config *config =
+				fi_audio->config;
+
+		err = snd_card_setup(c, config);
+		if (err)
+			return err;
+	}
+
+	audio_build_desc(audio);
+
+	/* allocate instance-specific interface IDs, and patch descriptors */
+	status = usb_interface_id(c, f);
+	if (status < 0)
+		goto fail;
+	ac_interface_desc.bInterfaceNumber = status;
+
+	/* AUDIO_AC_INTERFACE */
+	ac_header_desc.baInterfaceNr[0] = status;
+
+	status = usb_interface_id(c, f);
+	if (status < 0)
+		goto fail;
+	as_interface_alt_0_desc.bInterfaceNumber = status;
+	as_interface_alt_1_desc.bInterfaceNumber = status;
+
+	/* AUDIO_AS_INTERFACE */
+	ac_header_desc.baInterfaceNr[1] = status;
+
+	status = -ENODEV;
+
+	/* allocate our endpoint */
+	ep = usb_ep_autoconfig(cdev->gadget, &fs_as_in_ep_desc);
+	if (!ep)
+		goto fail;
+	audio->in_ep = ep;
+	ep->driver_data = audio; /* claim */
+
+	if (gadget_is_dualspeed(c->cdev->gadget))
+		hs_as_in_ep_desc.bEndpointAddress =
+			fs_as_in_ep_desc.bEndpointAddress;
+
+	f->fs_descriptors = fs_audio_desc;
+	f->hs_descriptors = hs_audio_desc;
+
+	for (i = 0, status = 0; i < IN_EP_REQ_COUNT && status == 0; i++) {
+		req = audio_request_new(ep, IN_EP_MAX_PACKET_SIZE);
+		if (req) {
+			req->context = audio;
+			req->complete = audio_data_complete;
+			audio_req_put(audio, req);
+		} else
+			status = -ENOMEM;
+	}
+
+fail:
+	return status;
+}
+
+static void
+audio_unbind(struct usb_configuration *c, struct usb_function *f)
+{
+	struct audio_dev *audio = func_to_audio(f);
+	struct usb_request *req;
+
+	while ((req = audio_req_get(audio)))
+		audio_request_free(req, audio->in_ep);
+
+	snd_card_free_when_closed(audio->card);
+	audio->card = NULL;
+	audio->pcm = NULL;
+	audio->substream = NULL;
+	audio->in_ep = NULL;
+
+	if (IS_ENABLED(CONFIG_USB_CONFIGFS)) {
+		struct audio_source_instance *fi_audio =
+				to_fi_audio_source(f->fi);
+		struct audio_source_config *config =
+				fi_audio->config;
+
+		config->card = -1;
+		config->device = -1;
+	}
+}
+
+static void audio_pcm_playback_start(struct audio_dev *audio)
+{
+	audio->start_time = ktime_get();
+	audio->frames_sent = 0;
+	audio_send(audio);
+}
+
+static void audio_pcm_playback_stop(struct audio_dev *audio)
+{
+	unsigned long flags;
+
+	spin_lock_irqsave(&audio->lock, flags);
+	audio->buffer_start = 0;
+	audio->buffer_end = 0;
+	audio->buffer_pos = 0;
+	spin_unlock_irqrestore(&audio->lock, flags);
+}
+
+static int audio_pcm_open(struct snd_pcm_substream *substream)
+{
+	struct snd_pcm_runtime *runtime = substream->runtime;
+	struct audio_dev *audio = substream->private_data;
+
+	runtime->private_data = audio;
+	runtime->hw = audio_hw_info;
+	snd_pcm_limit_hw_rates(runtime);
+	runtime->hw.channels_max = 2;
+
+	audio->substream = substream;
+
+	/* Add the QoS request and set the latency to 0 */
+	cpu_latency_qos_add_request(&audio->pm_qos, 0);
+
+	return 0;
+}
+
+static int audio_pcm_close(struct snd_pcm_substream *substream)
+{
+	struct audio_dev *audio = substream->private_data;
+	unsigned long flags;
+
+	spin_lock_irqsave(&audio->lock, flags);
+
+	/* Remove the QoS request */
+	cpu_latency_qos_remove_request(&audio->pm_qos);
+
+	audio->substream = NULL;
+	spin_unlock_irqrestore(&audio->lock, flags);
+
+	return 0;
+}
+
+static int audio_pcm_hw_params(struct snd_pcm_substream *substream,
+				struct snd_pcm_hw_params *params)
+{
+	unsigned int channels = params_channels(params);
+	unsigned int rate = params_rate(params);
+
+	if (rate != SAMPLE_RATE)
+		return -EINVAL;
+	if (channels != 2)
+		return -EINVAL;
+
+	return snd_pcm_lib_alloc_vmalloc_buffer(substream,
+		params_buffer_bytes(params));
+}
+
+static int audio_pcm_hw_free(struct snd_pcm_substream *substream)
+{
+	return snd_pcm_lib_free_vmalloc_buffer(substream);
+}
+
+static int audio_pcm_prepare(struct snd_pcm_substream *substream)
+{
+	struct snd_pcm_runtime *runtime = substream->runtime;
+	struct audio_dev *audio = runtime->private_data;
+
+	audio->period = snd_pcm_lib_period_bytes(substream);
+	audio->period_offset = 0;
+	audio->buffer_start = runtime->dma_area;
+	audio->buffer_end = audio->buffer_start
+		+ snd_pcm_lib_buffer_bytes(substream);
+	audio->buffer_pos = audio->buffer_start;
+
+	return 0;
+}
+
+static snd_pcm_uframes_t audio_pcm_pointer(struct snd_pcm_substream *substream)
+{
+	struct snd_pcm_runtime *runtime = substream->runtime;
+	struct audio_dev *audio = runtime->private_data;
+	ssize_t bytes = audio->buffer_pos - audio->buffer_start;
+
+	/* return offset of next frame to fill in our buffer */
+	return bytes_to_frames(runtime, bytes);
+}
+
+static int audio_pcm_playback_trigger(struct snd_pcm_substream *substream,
+					int cmd)
+{
+	struct audio_dev *audio = substream->runtime->private_data;
+	int ret = 0;
+
+	switch (cmd) {
+	case SNDRV_PCM_TRIGGER_START:
+	case SNDRV_PCM_TRIGGER_RESUME:
+		audio_pcm_playback_start(audio);
+		break;
+
+	case SNDRV_PCM_TRIGGER_STOP:
+	case SNDRV_PCM_TRIGGER_SUSPEND:
+		audio_pcm_playback_stop(audio);
+		break;
+
+	default:
+		ret = -EINVAL;
+	}
+
+	return ret;
+}
+
+static struct audio_dev _audio_dev = {
+	.func = {
+		.name = "audio_source",
+		.bind = audio_bind,
+		.unbind = audio_unbind,
+		.set_alt = audio_set_alt,
+		.setup = audio_setup,
+		.disable = audio_disable,
+		.free_func = audio_free_func,
+	},
+	.lock = __SPIN_LOCK_UNLOCKED(_audio_dev.lock),
+	.idle_reqs = LIST_HEAD_INIT(_audio_dev.idle_reqs),
+};
+
+static struct snd_pcm_ops audio_playback_ops = {
+	.open		= audio_pcm_open,
+	.close		= audio_pcm_close,
+	.ioctl		= snd_pcm_lib_ioctl,
+	.hw_params	= audio_pcm_hw_params,
+	.hw_free	= audio_pcm_hw_free,
+	.prepare	= audio_pcm_prepare,
+	.trigger	= audio_pcm_playback_trigger,
+	.pointer	= audio_pcm_pointer,
+};
+
+int audio_source_bind_config(struct usb_configuration *c,
+		struct audio_source_config *config)
+{
+	struct audio_dev *audio;
+	int err;
+
+	config->card = -1;
+	config->device = -1;
+
+	audio = &_audio_dev;
+
+	err = snd_card_setup(c, config);
+	if (err)
+		return err;
+
+	err = usb_add_function(c, &audio->func);
+	if (err)
+		goto add_fail;
+
+	return 0;
+
+add_fail:
+	snd_card_free(audio->card);
+	return err;
+}
+
+static int snd_card_setup(struct usb_configuration *c,
+		struct audio_source_config *config)
+{
+	struct audio_dev *audio;
+	struct snd_card *card;
+	struct snd_pcm *pcm;
+	int err;
+
+	audio = &_audio_dev;
+
+	err = snd_card_new(&c->cdev->gadget->dev,
+			SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1,
+			THIS_MODULE, 0, &card);
+	if (err)
+		return err;
+
+	err = snd_pcm_new(card, "USB audio source", 0, 1, 0, &pcm);
+	if (err)
+		goto pcm_fail;
+
+	pcm->private_data = audio;
+	pcm->info_flags = 0;
+	audio->pcm = pcm;
+
+	strlcpy(pcm->name, "USB gadget audio", sizeof(pcm->name));
+
+	snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &audio_playback_ops);
+	snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV,
+				NULL, 0, 64 * 1024);
+
+	strlcpy(card->driver, "audio_source", sizeof(card->driver));
+	strlcpy(card->shortname, card->driver, sizeof(card->shortname));
+	strlcpy(card->longname, "USB accessory audio source",
+		sizeof(card->longname));
+
+	err = snd_card_register(card);
+	if (err)
+		goto register_fail;
+
+	config->card = pcm->card->number;
+	config->device = pcm->device;
+	audio->card = card;
+	return 0;
+
+register_fail:
+pcm_fail:
+	snd_card_free(audio->card);
+	return err;
+}
+
+static struct audio_source_instance *to_audio_source_instance(
+					struct config_item *item)
+{
+	return container_of(to_config_group(item), struct audio_source_instance,
+		func_inst.group);
+}
+
+static struct audio_source_instance *to_fi_audio_source(
+					const struct usb_function_instance *fi)
+{
+	return container_of(fi, struct audio_source_instance, func_inst);
+}
+
+static void audio_source_attr_release(struct config_item *item)
+{
+	struct audio_source_instance *fi_audio = to_audio_source_instance(item);
+
+	usb_put_function_instance(&fi_audio->func_inst);
+}
+
+static int audio_source_set_inst_name(struct usb_function_instance *fi,
+					const char *name)
+{
+	struct audio_source_instance *fi_audio;
+	char *ptr;
+	int name_len;
+
+	name_len = strlen(name) + 1;
+	if (name_len > MAX_INST_NAME_LEN)
+		return -ENAMETOOLONG;
+
+	ptr = kstrndup(name, name_len, GFP_KERNEL);
+	if (!ptr)
+		return -ENOMEM;
+
+	fi_audio = to_fi_audio_source(fi);
+	fi_audio->name = ptr;
+
+	return 0;
+}
+
+static void audio_source_free_inst(struct usb_function_instance *fi)
+{
+	struct audio_source_instance *fi_audio;
+
+	fi_audio = to_fi_audio_source(fi);
+	device_destroy(fi_audio->audio_device->class,
+			fi_audio->audio_device->devt);
+	kfree(fi_audio->name);
+	kfree(fi_audio->config);
+}
+
+static ssize_t audio_source_pcm_show(struct device *dev,
+		struct device_attribute *attr, char *buf)
+{
+	struct audio_source_instance *fi_audio = dev_get_drvdata(dev);
+	struct audio_source_config *config = fi_audio->config;
+
+	/* print PCM card and device numbers */
+	return sprintf(buf, "%d %d\n", config->card, config->device);
+}
+
+struct device *create_function_device(char *name);
+
+static struct usb_function_instance *audio_source_alloc_inst(void)
+{
+	struct audio_source_instance *fi_audio;
+	struct device_attribute **attrs;
+	struct device_attribute *attr;
+	struct device *dev;
+	void *err_ptr;
+	int err = 0;
+
+	fi_audio = kzalloc(sizeof(*fi_audio), GFP_KERNEL);
+	if (!fi_audio)
+		return ERR_PTR(-ENOMEM);
+
+	fi_audio->func_inst.set_inst_name = audio_source_set_inst_name;
+	fi_audio->func_inst.free_func_inst = audio_source_free_inst;
+
+	fi_audio->config = kzalloc(sizeof(struct audio_source_config),
+							GFP_KERNEL);
+	if (!fi_audio->config) {
+		err_ptr = ERR_PTR(-ENOMEM);
+		goto fail_audio;
+	}
+
+	config_group_init_type_name(&fi_audio->func_inst.group, "",
+						&audio_source_func_type);
+	dev = create_function_device("f_audio_source");
+
+	if (IS_ERR(dev)) {
+		err_ptr = dev;
+		goto fail_audio_config;
+	}
+
+	fi_audio->config->card = -1;
+	fi_audio->config->device = -1;
+	fi_audio->audio_device = dev;
+
+	attrs = audio_source_function_attributes;
+	if (attrs) {
+		while ((attr = *attrs++) && !err)
+			err = device_create_file(dev, attr);
+		if (err) {
+			err_ptr = ERR_PTR(-EINVAL);
+			goto fail_device;
+		}
+	}
+
+	dev_set_drvdata(dev, fi_audio);
+	_audio_dev.config = fi_audio->config;
+
+	return  &fi_audio->func_inst;
+
+fail_device:
+	device_destroy(dev->class, dev->devt);
+fail_audio_config:
+	kfree(fi_audio->config);
+fail_audio:
+	kfree(fi_audio);
+	return err_ptr;
+
+}
+
+static struct usb_function *audio_source_alloc(struct usb_function_instance *fi)
+{
+	return &_audio_dev.func;
+}
+
+DECLARE_USB_FUNCTION_INIT(audio_source, audio_source_alloc_inst,
+			audio_source_alloc);
+MODULE_LICENSE("GPL");
diff --git a/drivers/usb/gadget/function/f_midi.c b/drivers/usb/gadget/function/f_midi.c
index fddf539..9511b22 100644
--- a/drivers/usb/gadget/function/f_midi.c
+++ b/drivers/usb/gadget/function/f_midi.c
@@ -1268,6 +1268,65 @@ static void f_midi_free_inst(struct usb_function_instance *f)
 	}
 }
 
+#ifdef CONFIG_USB_CONFIGFS_UEVENT
+extern struct device *create_function_device(char *name);
+static ssize_t alsa_show(struct device *dev,
+		struct device_attribute *attr, char *buf)
+{
+	struct usb_function_instance *fi_midi = dev_get_drvdata(dev);
+	struct f_midi *midi;
+
+	if (!fi_midi->f)
+		dev_warn(dev, "f_midi: function not set\n");
+
+	if (fi_midi && fi_midi->f) {
+		midi = func_to_midi(fi_midi->f);
+		if (midi->rmidi && midi->card && midi->rmidi->card)
+			return sprintf(buf, "%d %d\n",
+			midi->rmidi->card->number, midi->rmidi->device);
+	}
+
+	/* print PCM card and device numbers */
+	return sprintf(buf, "%d %d\n", -1, -1);
+}
+
+static DEVICE_ATTR(alsa, S_IRUGO, alsa_show, NULL);
+
+static struct device_attribute *alsa_function_attributes[] = {
+	&dev_attr_alsa,
+	NULL
+};
+
+static int create_alsa_device(struct usb_function_instance *fi)
+{
+	struct device *dev;
+	struct device_attribute **attrs;
+	struct device_attribute *attr;
+	int err = 0;
+
+	dev = create_function_device("f_midi");
+	if (IS_ERR(dev))
+		return PTR_ERR(dev);
+
+	attrs = alsa_function_attributes;
+	if (attrs) {
+		while ((attr = *attrs++) && !err)
+			err = device_create_file(dev, attr);
+		if (err) {
+			device_destroy(dev->class, dev->devt);
+			return -EINVAL;
+		}
+	}
+	dev_set_drvdata(dev, fi);
+	return 0;
+}
+#else
+static int create_alsa_device(struct usb_function_instance *fi)
+{
+	return 0;
+}
+#endif
+
 static struct usb_function_instance *f_midi_alloc_inst(void)
 {
 	struct f_midi_opts *opts;
@@ -1286,6 +1345,11 @@ static struct usb_function_instance *f_midi_alloc_inst(void)
 	opts->out_ports = 1;
 	opts->refcnt = 1;
 
+	if (create_alsa_device(&opts->func_inst)) {
+		kfree(opts);
+		return ERR_PTR(-ENODEV);
+	}
+
 	config_group_init_type_name(&opts->func_inst.group, "",
 				    &midi_func_type);
 
@@ -1306,6 +1370,7 @@ static void f_midi_free(struct usb_function *f)
 		kfifo_free(&midi->in_req_fifo);
 		kfree(midi);
 		free = true;
+		opts->func_inst.f = NULL;
 	}
 	mutex_unlock(&opts->lock);
 
@@ -1393,6 +1458,7 @@ static struct usb_function *f_midi_alloc(struct usb_function_instance *fi)
 	midi->func.disable	= f_midi_disable;
 	midi->func.free_func	= f_midi_free;
 
+	fi->f = &midi->func;
 	return &midi->func;
 
 midi_free:
diff --git a/drivers/usb/gadget/function/f_uvc.c b/drivers/usb/gadget/function/f_uvc.c
index 4419b79..32f2c16 100644
--- a/drivers/usb/gadget/function/f_uvc.c
+++ b/drivers/usb/gadget/function/f_uvc.c
@@ -39,9 +39,6 @@ MODULE_PARM_DESC(trace, "Trace level bitmask");
 
 /* string IDs are assigned dynamically */
 
-#define UVC_STRING_CONTROL_IDX			0
-#define UVC_STRING_STREAMING_IDX		1
-
 static struct usb_string uvc_en_us_strings[] = {
 	/* [UVC_STRING_CONTROL_IDX].s = DYNAMIC, */
 	[UVC_STRING_STREAMING_IDX].s = "Video Streaming",
@@ -229,6 +226,8 @@ uvc_function_setup(struct usb_function *f, const struct usb_ctrlrequest *ctrl)
 	struct uvc_device *uvc = to_uvc(f);
 	struct v4l2_event v4l2_event;
 	struct uvc_event *uvc_event = (void *)&v4l2_event.u.data;
+	unsigned int interface = le16_to_cpu(ctrl->wIndex) & 0xff;
+	struct usb_ctrlrequest *mctrl;
 
 	if ((ctrl->bRequestType & USB_TYPE_MASK) != USB_TYPE_CLASS) {
 		uvcg_info(f, "invalid request type\n");
@@ -249,6 +248,16 @@ uvc_function_setup(struct usb_function *f, const struct usb_ctrlrequest *ctrl)
 	memset(&v4l2_event, 0, sizeof(v4l2_event));
 	v4l2_event.type = UVC_EVENT_SETUP;
 	memcpy(&uvc_event->req, ctrl, sizeof(uvc_event->req));
+
+	/* check for the interface number, fixup the interface number in
+	 * the ctrl request so the userspace doesn't have to bother with
+	 * offset and configfs parsing
+	 */
+	mctrl = &uvc_event->req;
+	mctrl->wIndex &= ~cpu_to_le16(0xff);
+	if (interface == uvc->streaming_intf)
+		mctrl->wIndex = cpu_to_le16(UVC_STRING_STREAMING_IDX);
+
 	v4l2_event_queue(&uvc->vdev, &v4l2_event);
 
 	return 0;
diff --git a/drivers/usb/gadget/function/uvc_configfs.c b/drivers/usb/gadget/function/uvc_configfs.c
index 015a7bb..1460142 100644
--- a/drivers/usb/gadget/function/uvc_configfs.c
+++ b/drivers/usb/gadget/function/uvc_configfs.c
@@ -1569,7 +1569,7 @@ UVCG_UNCOMPRESSED_ATTR(b_bits_per_pixel, bBitsPerPixel, 8);
 UVCG_UNCOMPRESSED_ATTR(b_default_frame_index, bDefaultFrameIndex, 8);
 UVCG_UNCOMPRESSED_ATTR_RO(b_aspect_ratio_x, bAspectRatioX, 8);
 UVCG_UNCOMPRESSED_ATTR_RO(b_aspect_ratio_y, bAspectRatioY, 8);
-UVCG_UNCOMPRESSED_ATTR_RO(bm_interface_flags, bmInterfaceFlags, 8);
+UVCG_UNCOMPRESSED_ATTR_RO(bm_interlace_flags, bmInterlaceFlags, 8);
 
 #undef UVCG_UNCOMPRESSED_ATTR
 #undef UVCG_UNCOMPRESSED_ATTR_RO
@@ -1598,7 +1598,7 @@ static struct configfs_attribute *uvcg_uncompressed_attrs[] = {
 	&uvcg_uncompressed_attr_b_default_frame_index,
 	&uvcg_uncompressed_attr_b_aspect_ratio_x,
 	&uvcg_uncompressed_attr_b_aspect_ratio_y,
-	&uvcg_uncompressed_attr_bm_interface_flags,
+	&uvcg_uncompressed_attr_bm_interlace_flags,
 	&uvcg_uncompressed_attr_bma_controls,
 	NULL,
 };
@@ -1631,7 +1631,7 @@ static struct config_group *uvcg_uncompressed_make(struct config_group *group,
 	h->desc.bDefaultFrameIndex	= 1;
 	h->desc.bAspectRatioX		= 0;
 	h->desc.bAspectRatioY		= 0;
-	h->desc.bmInterfaceFlags	= 0;
+	h->desc.bmInterlaceFlags	= 0;
 	h->desc.bCopyProtect		= 0;
 
 	INIT_LIST_HEAD(&h->fmt.frames);
@@ -1757,7 +1757,7 @@ UVCG_MJPEG_ATTR(b_default_frame_index, bDefaultFrameIndex, 8);
 UVCG_MJPEG_ATTR_RO(bm_flags, bmFlags, 8);
 UVCG_MJPEG_ATTR_RO(b_aspect_ratio_x, bAspectRatioX, 8);
 UVCG_MJPEG_ATTR_RO(b_aspect_ratio_y, bAspectRatioY, 8);
-UVCG_MJPEG_ATTR_RO(bm_interface_flags, bmInterfaceFlags, 8);
+UVCG_MJPEG_ATTR_RO(bm_interlace_flags, bmInterlaceFlags, 8);
 
 #undef UVCG_MJPEG_ATTR
 #undef UVCG_MJPEG_ATTR_RO
@@ -1785,7 +1785,7 @@ static struct configfs_attribute *uvcg_mjpeg_attrs[] = {
 	&uvcg_mjpeg_attr_bm_flags,
 	&uvcg_mjpeg_attr_b_aspect_ratio_x,
 	&uvcg_mjpeg_attr_b_aspect_ratio_y,
-	&uvcg_mjpeg_attr_bm_interface_flags,
+	&uvcg_mjpeg_attr_bm_interlace_flags,
 	&uvcg_mjpeg_attr_bma_controls,
 	NULL,
 };
@@ -1812,7 +1812,7 @@ static struct config_group *uvcg_mjpeg_make(struct config_group *group,
 	h->desc.bDefaultFrameIndex	= 1;
 	h->desc.bAspectRatioX		= 0;
 	h->desc.bAspectRatioY		= 0;
-	h->desc.bmInterfaceFlags	= 0;
+	h->desc.bmInterlaceFlags	= 0;
 	h->desc.bCopyProtect		= 0;
 
 	INIT_LIST_HEAD(&h->fmt.frames);
diff --git a/drivers/usb/gadget/function/uvc_video.c b/drivers/usb/gadget/function/uvc_video.c
index dd1c6b2..e818659 100644
--- a/drivers/usb/gadget/function/uvc_video.c
+++ b/drivers/usb/gadget/function/uvc_video.c
@@ -386,6 +386,9 @@ static void uvcg_video_pump(struct work_struct *work)
 	struct uvc_buffer *buf;
 	unsigned long flags;
 	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) {
 		/*
@@ -408,20 +411,35 @@ static void uvcg_video_pump(struct work_struct *work)
 		 */
 		spin_lock_irqsave(&queue->irqlock, flags);
 		buf = uvcg_queue_head(queue);
-		if (buf == NULL) {
+
+		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;
+		} 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
+			 * prevent missed ISOC transfers.
+			 */
+			req->length = 0;
+			buf_int = false;
+		} else {
+			/*
+			 * Either queue has been disconnected or no video buffer
+			 * available to bulk transfer. Either way, stop processing
+			 * further.
+			 */
 			spin_unlock_irqrestore(&queue->irqlock, flags);
 			break;
 		}
 
-		video->encode(req, video, buf);
-
 		/*
 		 * 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.
 		 */
-		if (list_empty(&video->req_free) ||
-		    buf->state == UVC_BUF_STATE_DONE ||
+		if (list_empty(&video->req_free) || buf_int ||
 		    !(video->req_int_count %
 		       DIV_ROUND_UP(video->uvc_num_requests, 4))) {
 			video->req_int_count = 0;
@@ -441,8 +459,7 @@ static void uvcg_video_pump(struct work_struct *work)
 
 		/* Endpoint now owns the request */
 		req = NULL;
-		if (buf->state != UVC_BUF_STATE_DONE)
-			video->req_int_count++;
+		video->req_int_count++;
 	}
 
 	if (!req)
@@ -527,4 +544,3 @@ int uvcg_video_init(struct uvc_video *video, struct uvc_device *uvc)
 			V4L2_BUF_TYPE_VIDEO_OUTPUT, &video->mutex);
 	return 0;
 }
-
diff --git a/drivers/usb/gadget/legacy/webcam.c b/drivers/usb/gadget/legacy/webcam.c
index e9b5846..c06dd1a 100644
--- a/drivers/usb/gadget/legacy/webcam.c
+++ b/drivers/usb/gadget/legacy/webcam.c
@@ -171,7 +171,7 @@ static const struct uvc_format_uncompressed uvc_format_yuv = {
 	.bDefaultFrameIndex	= 1,
 	.bAspectRatioX		= 0,
 	.bAspectRatioY		= 0,
-	.bmInterfaceFlags	= 0,
+	.bmInterlaceFlags	= 0,
 	.bCopyProtect		= 0,
 };
 
@@ -222,7 +222,7 @@ static const struct uvc_format_mjpeg uvc_format_mjpg = {
 	.bDefaultFrameIndex	= 1,
 	.bAspectRatioX		= 0,
 	.bAspectRatioY		= 0,
-	.bmInterfaceFlags	= 0,
+	.bmInterlaceFlags	= 0,
 	.bCopyProtect		= 0,
 };
 
diff --git a/drivers/usb/host/xhci-hub.c b/drivers/usb/host/xhci-hub.c
index 4619d5e..5440288 100644
--- a/drivers/usb/host/xhci-hub.c
+++ b/drivers/usb/host/xhci-hub.c
@@ -535,8 +535,13 @@ static int xhci_stop_device(struct xhci_hcd *xhci, int slot_id, int suspend)
 	    cmd->status == COMP_COMMAND_RING_STOPPED) {
 		xhci_warn(xhci, "Timeout while waiting for stop endpoint command\n");
 		ret = -ETIME;
+		goto cmd_cleanup;
 	}
 
+	ret = xhci_vendor_sync_dev_ctx(xhci, slot_id);
+	if (ret)
+		xhci_warn(xhci, "Sync device context failed, ret=%d\n", ret);
+
 cmd_cleanup:
 	xhci_free_command(xhci, cmd);
 	return ret;
@@ -1824,6 +1829,7 @@ int xhci_bus_suspend(struct usb_hcd *hcd)
 
 	return 0;
 }
+EXPORT_SYMBOL_GPL(xhci_bus_suspend);
 
 /*
  * Workaround for missing Cold Attach Status (CAS) if device re-plugged in S3.
@@ -1968,6 +1974,7 @@ int xhci_bus_resume(struct usb_hcd *hcd)
 	spin_unlock_irqrestore(&xhci->lock, flags);
 	return 0;
 }
+EXPORT_SYMBOL_GPL(xhci_bus_resume);
 
 unsigned long xhci_get_resuming_ports(struct usb_hcd *hcd)
 {
diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c
index 81ca2bc..98c4cf88 100644
--- a/drivers/usb/host/xhci-mem.c
+++ b/drivers/usb/host/xhci-mem.c
@@ -65,7 +65,7 @@ static struct xhci_segment *xhci_segment_alloc(struct xhci_hcd *xhci,
 	return seg;
 }
 
-static void xhci_segment_free(struct xhci_hcd *xhci, struct xhci_segment *seg)
+void xhci_segment_free(struct xhci_hcd *xhci, struct xhci_segment *seg)
 {
 	if (seg->trbs) {
 		dma_pool_free(xhci->segment_pool, seg->trbs, seg->dma);
@@ -74,8 +74,9 @@ static void xhci_segment_free(struct xhci_hcd *xhci, struct xhci_segment *seg)
 	kfree(seg->bounce_buf);
 	kfree(seg);
 }
+EXPORT_SYMBOL_GPL(xhci_segment_free);
 
-static void xhci_free_segments_for_ring(struct xhci_hcd *xhci,
+void xhci_free_segments_for_ring(struct xhci_hcd *xhci,
 				struct xhci_segment *first)
 {
 	struct xhci_segment *seg;
@@ -96,9 +97,9 @@ static void xhci_free_segments_for_ring(struct xhci_hcd *xhci,
  * DMA address of the next segment.  The caller needs to set any Link TRB
  * related flags, such as End TRB, Toggle Cycle, and no snoop.
  */
-static void xhci_link_segments(struct xhci_segment *prev,
-			       struct xhci_segment *next,
-			       enum xhci_ring_type type, bool chain_links)
+void xhci_link_segments(struct xhci_segment *prev,
+			struct xhci_segment *next,
+			enum xhci_ring_type type, bool chain_links)
 {
 	u32 val;
 
@@ -118,6 +119,7 @@ static void xhci_link_segments(struct xhci_segment *prev,
 		prev->trbs[TRBS_PER_SEGMENT-1].link.control = cpu_to_le32(val);
 	}
 }
+EXPORT_SYMBOL_GPL(xhci_link_segments);
 
 /*
  * Link the ring to the new segments.
@@ -256,7 +258,7 @@ static int xhci_update_stream_segment_mapping(
 	return ret;
 }
 
-static void xhci_remove_stream_mapping(struct xhci_ring *ring)
+void xhci_remove_stream_mapping(struct xhci_ring *ring)
 {
 	struct xhci_segment *seg;
 
@@ -269,6 +271,7 @@ static void xhci_remove_stream_mapping(struct xhci_ring *ring)
 		seg = seg->next;
 	} while (seg != ring->first_seg);
 }
+EXPORT_SYMBOL_GPL(xhci_remove_stream_mapping);
 
 static int xhci_update_stream_mapping(struct xhci_ring *ring, gfp_t mem_flags)
 {
@@ -292,6 +295,7 @@ void xhci_ring_free(struct xhci_hcd *xhci, struct xhci_ring *ring)
 
 	kfree(ring);
 }
+EXPORT_SYMBOL_GPL(xhci_ring_free);
 
 void xhci_initialize_ring_info(struct xhci_ring *ring,
 			       unsigned int cycle_state)
@@ -316,6 +320,7 @@ void xhci_initialize_ring_info(struct xhci_ring *ring,
 	 */
 	ring->num_trbs_free = ring->num_segs * (TRBS_PER_SEGMENT - 1) - 1;
 }
+EXPORT_SYMBOL_GPL(xhci_initialize_ring_info);
 
 /* Allocate segments and link them for a ring */
 static int xhci_alloc_segments_for_ring(struct xhci_hcd *xhci,
@@ -361,6 +366,54 @@ static int xhci_alloc_segments_for_ring(struct xhci_hcd *xhci,
 	return 0;
 }
 
+static void xhci_vendor_free_container_ctx(struct xhci_hcd *xhci, struct xhci_container_ctx *ctx)
+{
+	struct xhci_vendor_ops *ops = xhci_vendor_get_ops(xhci);
+
+	if (ops && ops->free_container_ctx)
+		ops->free_container_ctx(xhci, ctx);
+}
+
+static void xhci_vendor_alloc_container_ctx(struct xhci_hcd *xhci, struct xhci_container_ctx *ctx,
+					    int type, gfp_t flags)
+{
+	struct xhci_vendor_ops *ops = xhci_vendor_get_ops(xhci);
+
+	if (ops && ops->alloc_container_ctx)
+		ops->alloc_container_ctx(xhci, ctx, type, flags);
+}
+
+static struct xhci_ring *xhci_vendor_alloc_transfer_ring(struct xhci_hcd *xhci,
+		u32 endpoint_type, enum xhci_ring_type ring_type,
+		unsigned int max_packet, gfp_t mem_flags)
+{
+	struct xhci_vendor_ops *ops = xhci_vendor_get_ops(xhci);
+
+	if (ops && ops->alloc_transfer_ring)
+		return ops->alloc_transfer_ring(xhci, endpoint_type, ring_type,
+				max_packet, mem_flags);
+	return 0;
+}
+
+void xhci_vendor_free_transfer_ring(struct xhci_hcd *xhci,
+		struct xhci_virt_device *virt_dev, unsigned int ep_index)
+{
+	struct xhci_vendor_ops *ops = xhci_vendor_get_ops(xhci);
+
+	if (ops && ops->free_transfer_ring)
+		ops->free_transfer_ring(xhci, virt_dev, ep_index);
+}
+
+bool xhci_vendor_is_usb_offload_enabled(struct xhci_hcd *xhci,
+		struct xhci_virt_device *virt_dev, unsigned int ep_index)
+{
+	struct xhci_vendor_ops *ops = xhci_vendor_get_ops(xhci);
+
+	if (ops && ops->is_usb_offload_enabled)
+		return ops->is_usb_offload_enabled(xhci, virt_dev, ep_index);
+	return false;
+}
+
 /*
  * Create a new ring with zero or more segments.
  *
@@ -407,12 +460,17 @@ struct xhci_ring *xhci_ring_alloc(struct xhci_hcd *xhci,
 	kfree(ring);
 	return NULL;
 }
+EXPORT_SYMBOL_GPL(xhci_ring_alloc);
 
 void xhci_free_endpoint_ring(struct xhci_hcd *xhci,
 		struct xhci_virt_device *virt_dev,
 		unsigned int ep_index)
 {
-	xhci_ring_free(xhci, virt_dev->eps[ep_index].ring);
+	if (xhci_vendor_is_usb_offload_enabled(xhci, virt_dev, ep_index))
+		xhci_vendor_free_transfer_ring(xhci, virt_dev, ep_index);
+	else
+		xhci_ring_free(xhci, virt_dev->eps[ep_index].ring);
+
 	virt_dev->eps[ep_index].ring = NULL;
 }
 
@@ -470,6 +528,7 @@ struct xhci_container_ctx *xhci_alloc_container_ctx(struct xhci_hcd *xhci,
 {
 	struct xhci_container_ctx *ctx;
 	struct device *dev = xhci_to_hcd(xhci)->self.sysdev;
+	struct xhci_vendor_ops *ops = xhci_vendor_get_ops(xhci);
 
 	if ((type != XHCI_CTX_TYPE_DEVICE) && (type != XHCI_CTX_TYPE_INPUT))
 		return NULL;
@@ -483,7 +542,12 @@ struct xhci_container_ctx *xhci_alloc_container_ctx(struct xhci_hcd *xhci,
 	if (type == XHCI_CTX_TYPE_INPUT)
 		ctx->size += CTX_SIZE(xhci->hcc_params);
 
-	ctx->bytes = dma_pool_zalloc(xhci->device_pool, flags, &ctx->dma);
+	if (xhci_vendor_is_usb_offload_enabled(xhci, NULL, 0) &&
+	    (ops && ops->alloc_container_ctx))
+		xhci_vendor_alloc_container_ctx(xhci, ctx, type, flags);
+	else
+		ctx->bytes = dma_pool_zalloc(xhci->device_pool, flags, &ctx->dma);
+
 	if (!ctx->bytes) {
 		kfree(ctx);
 		return NULL;
@@ -494,9 +558,16 @@ struct xhci_container_ctx *xhci_alloc_container_ctx(struct xhci_hcd *xhci,
 void xhci_free_container_ctx(struct xhci_hcd *xhci,
 			     struct xhci_container_ctx *ctx)
 {
+	struct xhci_vendor_ops *ops = xhci_vendor_get_ops(xhci);
+
 	if (!ctx)
 		return;
-	dma_pool_free(xhci->device_pool, ctx->bytes, ctx->dma);
+	if (xhci_vendor_is_usb_offload_enabled(xhci, NULL, 0) &&
+	    (ops && ops->free_container_ctx))
+		xhci_vendor_free_container_ctx(xhci, ctx);
+	else
+		dma_pool_free(xhci->device_pool, ctx->bytes, ctx->dma);
+
 	kfree(ctx);
 }
 
@@ -518,6 +589,7 @@ struct xhci_slot_ctx *xhci_get_slot_ctx(struct xhci_hcd *xhci,
 	return (struct xhci_slot_ctx *)
 		(ctx->bytes + CTX_SIZE(xhci->hcc_params));
 }
+EXPORT_SYMBOL_GPL(xhci_get_slot_ctx);
 
 struct xhci_ep_ctx *xhci_get_ep_ctx(struct xhci_hcd *xhci,
 				    struct xhci_container_ctx *ctx,
@@ -885,7 +957,7 @@ void xhci_free_virt_device(struct xhci_hcd *xhci, int slot_id)
 
 	for (i = 0; i < 31; i++) {
 		if (dev->eps[i].ring)
-			xhci_ring_free(xhci, dev->eps[i].ring);
+			xhci_free_endpoint_ring(xhci, dev, i);
 		if (dev->eps[i].stream_info)
 			xhci_free_stream_info(xhci,
 					dev->eps[i].stream_info);
@@ -1487,8 +1559,16 @@ int xhci_endpoint_init(struct xhci_hcd *xhci,
 		mult = 0;
 
 	/* Set up the endpoint ring */
-	virt_dev->eps[ep_index].new_ring =
-		xhci_ring_alloc(xhci, 2, 1, ring_type, max_packet, mem_flags);
+	if (xhci_vendor_is_usb_offload_enabled(xhci, virt_dev, ep_index) &&
+	    usb_endpoint_xfer_isoc(&ep->desc)) {
+		virt_dev->eps[ep_index].new_ring =
+			xhci_vendor_alloc_transfer_ring(xhci, endpoint_type, ring_type,
+							max_packet, mem_flags);
+	} else {
+		virt_dev->eps[ep_index].new_ring =
+			xhci_ring_alloc(xhci, 2, 1, ring_type, max_packet, mem_flags);
+	}
+
 	if (!virt_dev->eps[ep_index].new_ring)
 		return -ENOMEM;
 
@@ -1755,6 +1835,7 @@ struct xhci_command *xhci_alloc_command(struct xhci_hcd *xhci,
 	INIT_LIST_HEAD(&command->cmd_list);
 	return command;
 }
+EXPORT_SYMBOL_GPL(xhci_alloc_command);
 
 struct xhci_command *xhci_alloc_command_with_ctx(struct xhci_hcd *xhci,
 		bool allocate_completion, gfp_t mem_flags)
@@ -1788,6 +1869,7 @@ void xhci_free_command(struct xhci_hcd *xhci,
 	kfree(command->completion);
 	kfree(command);
 }
+EXPORT_SYMBOL_GPL(xhci_free_command);
 
 int xhci_alloc_erst(struct xhci_hcd *xhci,
 		    struct xhci_ring *evt_ring,
@@ -1818,6 +1900,7 @@ int xhci_alloc_erst(struct xhci_hcd *xhci,
 
 	return 0;
 }
+EXPORT_SYMBOL_GPL(xhci_alloc_erst);
 
 void xhci_free_erst(struct xhci_hcd *xhci, struct xhci_erst *erst)
 {
@@ -1831,6 +1914,25 @@ void xhci_free_erst(struct xhci_hcd *xhci, struct xhci_erst *erst)
 				erst->erst_dma_addr);
 	erst->entries = NULL;
 }
+EXPORT_SYMBOL_GPL(xhci_free_erst);
+
+static struct xhci_device_context_array *xhci_vendor_alloc_dcbaa(
+		struct xhci_hcd *xhci, gfp_t flags)
+{
+	struct xhci_vendor_ops *ops = xhci_vendor_get_ops(xhci);
+
+	if (ops && ops->alloc_dcbaa)
+		return ops->alloc_dcbaa(xhci, flags);
+	return 0;
+}
+
+static void xhci_vendor_free_dcbaa(struct xhci_hcd *xhci)
+{
+	struct xhci_vendor_ops *ops = xhci_vendor_get_ops(xhci);
+
+	if (ops && ops->free_dcbaa)
+		ops->free_dcbaa(xhci);
+}
 
 void xhci_mem_cleanup(struct xhci_hcd *xhci)
 {
@@ -1883,9 +1985,13 @@ void xhci_mem_cleanup(struct xhci_hcd *xhci)
 	xhci_dbg_trace(xhci, trace_xhci_dbg_init,
 			"Freed medium stream array pool");
 
-	if (xhci->dcbaa)
-		dma_free_coherent(dev, sizeof(*xhci->dcbaa),
-				xhci->dcbaa, xhci->dcbaa->dma);
+	if (xhci_vendor_is_usb_offload_enabled(xhci, NULL, 0)) {
+		xhci_vendor_free_dcbaa(xhci);
+	} else {
+		if (xhci->dcbaa)
+			dma_free_coherent(dev, sizeof(*xhci->dcbaa),
+					xhci->dcbaa, xhci->dcbaa->dma);
+	}
 	xhci->dcbaa = NULL;
 
 	scratchpad_free(xhci);
@@ -1966,7 +2072,7 @@ static int xhci_test_trb_in_td(struct xhci_hcd *xhci,
 }
 
 /* TRB math checks for xhci_trb_in_td(), using the command and event rings. */
-static int xhci_check_trb_in_td_math(struct xhci_hcd *xhci)
+int xhci_check_trb_in_td_math(struct xhci_hcd *xhci)
 {
 	struct {
 		dma_addr_t		input_dma;
@@ -2086,6 +2192,7 @@ static int xhci_check_trb_in_td_math(struct xhci_hcd *xhci)
 	xhci_dbg(xhci, "TRB math tests passed.\n");
 	return 0;
 }
+EXPORT_SYMBOL_GPL(xhci_check_trb_in_td_math);
 
 static void xhci_set_hc_event_deq(struct xhci_hcd *xhci)
 {
@@ -2422,15 +2529,21 @@ int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags)
 	 * xHCI section 5.4.6 - Device Context array must be
 	 * "physically contiguous and 64-byte (cache line) aligned".
 	 */
-	xhci->dcbaa = dma_alloc_coherent(dev, sizeof(*xhci->dcbaa), &dma,
-			flags);
-	if (!xhci->dcbaa)
-		goto fail;
-	xhci->dcbaa->dma = dma;
+	if (xhci_vendor_is_usb_offload_enabled(xhci, NULL, 0)) {
+		xhci->dcbaa = xhci_vendor_alloc_dcbaa(xhci, flags);
+		if (!xhci->dcbaa)
+			goto fail;
+	} else {
+		xhci->dcbaa = dma_alloc_coherent(dev, sizeof(*xhci->dcbaa), &dma,
+				flags);
+		if (!xhci->dcbaa)
+			goto fail;
+		xhci->dcbaa->dma = dma;
+	}
 	xhci_dbg_trace(xhci, trace_xhci_dbg_init,
 			"// Device context base array address = 0x%llx (DMA), %p (virt)",
 			(unsigned long long)xhci->dcbaa->dma, xhci->dcbaa);
-	xhci_write_64(xhci, dma, &xhci->op_regs->dcbaa_ptr);
+	xhci_write_64(xhci, xhci->dcbaa->dma, &xhci->op_regs->dcbaa_ptr);
 
 	/*
 	 * Initialize the ring segment pool.  The ring must be a contiguous
diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c
index 5fb55bf..2ef716f 100644
--- a/drivers/usb/host/xhci-plat.c
+++ b/drivers/usb/host/xhci-plat.c
@@ -173,6 +173,43 @@ static const struct of_device_id usb_xhci_of_match[] = {
 MODULE_DEVICE_TABLE(of, usb_xhci_of_match);
 #endif
 
+static struct xhci_plat_priv_overwrite xhci_plat_vendor_overwrite;
+
+int xhci_plat_register_vendor_ops(struct xhci_vendor_ops *vendor_ops)
+{
+	if (vendor_ops == NULL)
+		return -EINVAL;
+
+	xhci_plat_vendor_overwrite.vendor_ops = vendor_ops;
+
+	return 0;
+}
+EXPORT_SYMBOL_GPL(xhci_plat_register_vendor_ops);
+
+static int xhci_vendor_init(struct xhci_hcd *xhci)
+{
+	struct xhci_vendor_ops *ops = xhci_vendor_get_ops(xhci);
+	struct xhci_plat_priv *priv = xhci_to_priv(xhci);
+
+	if (xhci_plat_vendor_overwrite.vendor_ops)
+		ops = priv->vendor_ops = xhci_plat_vendor_overwrite.vendor_ops;
+
+	if (ops && ops->vendor_init)
+		return ops->vendor_init(xhci);
+	return 0;
+}
+
+static void xhci_vendor_cleanup(struct xhci_hcd *xhci)
+{
+	struct xhci_vendor_ops *ops = xhci_vendor_get_ops(xhci);
+	struct xhci_plat_priv *priv = xhci_to_priv(xhci);
+
+	if (ops && ops->vendor_cleanup)
+		ops->vendor_cleanup(xhci);
+
+	priv->vendor_ops = NULL;
+}
+
 static int xhci_plat_probe(struct platform_device *pdev)
 {
 	const struct xhci_plat_priv *priv_match;
@@ -317,6 +354,10 @@ static int xhci_plat_probe(struct platform_device *pdev)
 			goto disable_clk;
 	}
 
+	ret = xhci_vendor_init(xhci);
+	if (ret)
+		goto disable_usb_phy;
+
 	hcd->tpl_support = of_usb_host_tpl_support(sysdev->of_node);
 
 	if (priv && (priv->quirks & XHCI_SKIP_PHY_INIT))
@@ -410,6 +451,9 @@ static int xhci_plat_remove(struct platform_device *dev)
 	if (shared_hcd)
 		usb_put_hcd(shared_hcd);
 
+	xhci_vendor_cleanup(xhci);
+
+	usb_put_hcd(shared_hcd);
 	clk_disable_unprepare(clk);
 	clk_disable_unprepare(reg_clk);
 	usb_put_hcd(hcd);
diff --git a/drivers/usb/host/xhci-plat.h b/drivers/usb/host/xhci-plat.h
index 1fb149d..5b096f7 100644
--- a/drivers/usb/host/xhci-plat.h
+++ b/drivers/usb/host/xhci-plat.h
@@ -13,6 +13,9 @@
 struct xhci_plat_priv {
 	const char *firmware_name;
 	unsigned long long quirks;
+	struct xhci_vendor_ops *vendor_ops;
+	struct xhci_vendor_data *vendor_data;
+	int (*plat_setup)(struct usb_hcd *);
 	void (*plat_start)(struct usb_hcd *);
 	int (*init_quirk)(struct usb_hcd *);
 	int (*suspend_quirk)(struct usb_hcd *);
@@ -21,4 +24,11 @@ struct xhci_plat_priv {
 
 #define hcd_to_xhci_priv(h) ((struct xhci_plat_priv *)hcd_to_xhci(h)->priv)
 #define xhci_to_priv(x) ((struct xhci_plat_priv *)(x)->priv)
+
+struct xhci_plat_priv_overwrite {
+	struct xhci_vendor_ops *vendor_ops;
+};
+
+int xhci_plat_register_vendor_ops(struct xhci_vendor_ops *vendor_ops);
+
 #endif	/* _XHCI_PLAT_H */
diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
index 7a7ab52..eb6df61 100644
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
@@ -79,6 +79,7 @@ dma_addr_t xhci_trb_virt_to_dma(struct xhci_segment *seg,
 		return 0;
 	return seg->dma + (segment_offset * sizeof(*trb));
 }
+EXPORT_SYMBOL_GPL(xhci_trb_virt_to_dma);
 
 static bool trb_is_noop(union xhci_trb *trb)
 {
@@ -331,6 +332,7 @@ void xhci_ring_cmd_db(struct xhci_hcd *xhci)
 	/* Flush PCI posted writes */
 	readl(&xhci->dba->doorbell[0]);
 }
+EXPORT_SYMBOL_GPL(xhci_ring_cmd_db);
 
 static bool xhci_mod_cmd_timer(struct xhci_hcd *xhci, unsigned long delay)
 {
@@ -4391,6 +4393,7 @@ int xhci_queue_stop_endpoint(struct xhci_hcd *xhci, struct xhci_command *cmd,
 	return queue_command(xhci, cmd, 0, 0, 0,
 			trb_slot_id | trb_ep_index | type | trb_suspend, false);
 }
+EXPORT_SYMBOL_GPL(xhci_queue_stop_endpoint);
 
 int xhci_queue_reset_ep(struct xhci_hcd *xhci, struct xhci_command *cmd,
 			int slot_id, unsigned int ep_index,
diff --git a/drivers/usb/host/xhci-trace.h b/drivers/usb/host/xhci-trace.h
index 61e93a35..653b3e2 100644
--- a/drivers/usb/host/xhci-trace.h
+++ b/drivers/usb/host/xhci-trace.h
@@ -80,20 +80,16 @@ DECLARE_EVENT_CLASS(xhci_log_ctx,
 		__field(dma_addr_t, ctx_dma)
 		__field(u8 *, ctx_va)
 		__field(unsigned, ctx_ep_num)
-		__field(int, slot_id)
 		__dynamic_array(u32, ctx_data,
 			((HCC_64BYTE_CONTEXT(xhci->hcc_params) + 1) * 8) *
 			((ctx->type == XHCI_CTX_TYPE_INPUT) + ep_num + 1))
 	),
 	TP_fast_assign(
-		struct usb_device *udev;
 
-		udev = to_usb_device(xhci_to_hcd(xhci)->self.controller);
 		__entry->ctx_64 = HCC_64BYTE_CONTEXT(xhci->hcc_params);
 		__entry->ctx_type = ctx->type;
 		__entry->ctx_dma = ctx->dma;
 		__entry->ctx_va = ctx->bytes;
-		__entry->slot_id = udev->slot_id;
 		__entry->ctx_ep_num = ep_num;
 		memcpy(__get_dynamic_array(ctx_data), ctx->bytes,
 			((HCC_64BYTE_CONTEXT(xhci->hcc_params) + 1) * 32) *
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
index c02ad4f..3715068 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -9,7 +9,9 @@
  */
 
 #include <linux/pci.h>
+#ifndef __GENKSYMS__	/* ANDROID: KABI CRC preservation hack */
 #include <linux/iommu.h>
+#endif
 #include <linux/iopoll.h>
 #include <linux/irq.h>
 #include <linux/log2.h>
@@ -23,6 +25,7 @@
 #include "xhci-trace.h"
 #include "xhci-debugfs.h"
 #include "xhci-dbgcap.h"
+#include "xhci-plat.h"
 
 #define DRIVER_AUTHOR "Sarah Sharp"
 #define DRIVER_DESC "'eXtensible' Host Controller (xHC) Driver"
@@ -1673,6 +1676,11 @@ static int xhci_urb_enqueue(struct usb_hcd *hcd, struct urb *urb, gfp_t mem_flag
 		return -ENODEV;
 	}
 
+	if (xhci_vendor_usb_offload_skip_urb(xhci, urb)) {
+		xhci_dbg(xhci, "skip urb for usb offload\n");
+		return -EOPNOTSUPP;
+	}
+
 	if (usb_endpoint_xfer_isoc(&urb->ep->desc))
 		num_tds = urb->number_of_packets;
 	else if (usb_endpoint_is_bulk_out(&urb->ep->desc) &&
@@ -3013,6 +3021,14 @@ static int xhci_configure_endpoint(struct xhci_hcd *xhci,
 			xhci_finish_resource_reservation(xhci, ctrl_ctx);
 		spin_unlock_irqrestore(&xhci->lock, flags);
 	}
+	if (ret)
+		goto failed;
+
+	ret = xhci_vendor_sync_dev_ctx(xhci, udev->slot_id);
+	if (ret)
+		xhci_warn(xhci, "sync device context failed, ret=%d", ret);
+
+failed:
 	return ret;
 }
 
@@ -3156,7 +3172,11 @@ void xhci_reset_bandwidth(struct usb_hcd *hcd, struct usb_device *udev)
 	for (i = 0; i < 31; i++) {
 		if (virt_dev->eps[i].new_ring) {
 			xhci_debugfs_remove_endpoint(xhci, virt_dev, i);
-			xhci_ring_free(xhci, virt_dev->eps[i].new_ring);
+			if (xhci_vendor_is_usb_offload_enabled(xhci, virt_dev, i))
+				xhci_vendor_free_transfer_ring(xhci, virt_dev, i);
+			else
+				xhci_ring_free(xhci, virt_dev->eps[i].new_ring);
+
 			virt_dev->eps[i].new_ring = NULL;
 		}
 	}
@@ -3317,6 +3337,13 @@ static void xhci_endpoint_reset(struct usb_hcd *hcd,
 
 	wait_for_completion(stop_cmd->completion);
 
+	err = xhci_vendor_sync_dev_ctx(xhci, udev->slot_id);
+	if (err) {
+		xhci_warn(xhci, "%s: Failed to sync device context failed, err=%d",
+			  __func__, err);
+		goto cleanup;
+	}
+
 	spin_lock_irqsave(&xhci->lock, flags);
 
 	/* config ep command clears toggle if add and drop ep flags are set */
@@ -3348,6 +3375,11 @@ static void xhci_endpoint_reset(struct usb_hcd *hcd,
 
 	wait_for_completion(cfg_cmd->completion);
 
+	err = xhci_vendor_sync_dev_ctx(xhci, udev->slot_id);
+	if (err)
+		xhci_warn(xhci, "%s: Failed to sync device context failed, err=%d",
+			  __func__, err);
+
 	xhci_free_command(xhci, cfg_cmd);
 cleanup:
 	xhci_free_command(xhci, stop_cmd);
@@ -3893,6 +3925,13 @@ static int xhci_discover_or_reset_device(struct usb_hcd *hcd,
 	/* Wait for the Reset Device command to finish */
 	wait_for_completion(reset_device_cmd->completion);
 
+	ret = xhci_vendor_sync_dev_ctx(xhci, slot_id);
+	if (ret) {
+		xhci_warn(xhci, "%s: Failed to sync device context failed, err=%d",
+			  __func__, ret);
+		goto command_cleanup;
+	}
+
 	/* The Reset Device command can't fail, according to the 0.95/0.96 spec,
 	 * unless we tried to reset a slot ID that wasn't enabled,
 	 * or the device wasn't in the addressed or configured state.
@@ -4142,6 +4181,14 @@ int xhci_alloc_dev(struct usb_hcd *hcd, struct usb_device *udev)
 		xhci_warn(xhci, "Could not allocate xHCI USB device data structures\n");
 		goto disable_slot;
 	}
+
+	ret = xhci_vendor_sync_dev_ctx(xhci, slot_id);
+	if (ret) {
+		xhci_warn(xhci, "%s: Failed to sync device context failed, err=%d",
+			  __func__, ret);
+		goto disable_slot;
+	}
+
 	vdev = xhci->devs[slot_id];
 	slot_ctx = xhci_get_slot_ctx(xhci, vdev->out_ctx);
 	trace_xhci_alloc_dev(slot_ctx);
@@ -4272,6 +4319,13 @@ static int xhci_setup_device(struct usb_hcd *hcd, struct usb_device *udev,
 	/* ctrl tx can take up to 5 sec; XXX: need more time for xHC? */
 	wait_for_completion(command->completion);
 
+	ret = xhci_vendor_sync_dev_ctx(xhci, udev->slot_id);
+	if (ret) {
+		xhci_warn(xhci, "%s: Failed to sync device context failed, err=%d",
+			  __func__, ret);
+		goto out;
+	}
+
 	/* FIXME: From section 4.3.4: "Software shall be responsible for timing
 	 * the SetAddress() "recovery interval" required by USB and aborting the
 	 * command on a timeout.
@@ -4356,10 +4410,11 @@ static int xhci_setup_device(struct usb_hcd *hcd, struct usb_device *udev,
 	return ret;
 }
 
-static int xhci_address_device(struct usb_hcd *hcd, struct usb_device *udev)
+int xhci_address_device(struct usb_hcd *hcd, struct usb_device *udev)
 {
 	return xhci_setup_device(hcd, udev, SETUP_CONTEXT_ADDRESS);
 }
+EXPORT_SYMBOL_GPL(xhci_address_device);
 
 static int xhci_enable_device(struct usb_hcd *hcd, struct usb_device *udev)
 {
@@ -4424,6 +4479,14 @@ static int __maybe_unused xhci_change_max_exit_latency(struct xhci_hcd *xhci,
 		return -ENOMEM;
 	}
 
+	ret = xhci_vendor_sync_dev_ctx(xhci, udev->slot_id);
+	if (ret) {
+		spin_unlock_irqrestore(&xhci->lock, flags);
+		xhci_warn(xhci, "%s: Failed to sync device context failed, err=%d",
+			  __func__, ret);
+		return ret;
+	}
+
 	xhci_slot_copy(xhci, command->in_ctx, virt_dev->out_ctx);
 	spin_unlock_irqrestore(&xhci->lock, flags);
 
@@ -4451,6 +4514,30 @@ static int __maybe_unused xhci_change_max_exit_latency(struct xhci_hcd *xhci,
 	return ret;
 }
 
+struct xhci_vendor_ops *xhci_vendor_get_ops(struct xhci_hcd *xhci)
+{
+	return xhci_to_priv(xhci)->vendor_ops;
+}
+EXPORT_SYMBOL_GPL(xhci_vendor_get_ops);
+
+int xhci_vendor_sync_dev_ctx(struct xhci_hcd *xhci, unsigned int slot_id)
+{
+	struct xhci_vendor_ops *ops = xhci_vendor_get_ops(xhci);
+
+	if (ops && ops->sync_dev_ctx)
+		return ops->sync_dev_ctx(xhci, slot_id);
+	return 0;
+}
+
+bool xhci_vendor_usb_offload_skip_urb(struct xhci_hcd *xhci, struct urb *urb)
+{
+	struct xhci_vendor_ops *ops = xhci_vendor_get_ops(xhci);
+
+	if (ops && ops->usb_offload_skip_urb)
+		return ops->usb_offload_skip_urb(xhci, urb);
+	return false;
+}
+
 #ifdef CONFIG_PM
 
 /* BESL to HIRD Encoding array for USB2 LPM */
@@ -5180,6 +5267,15 @@ int xhci_update_hub_device(struct usb_hcd *hcd, struct usb_device *hdev,
 		return -ENOMEM;
 	}
 
+	ret = xhci_vendor_sync_dev_ctx(xhci, hdev->slot_id);
+	if (ret) {
+		xhci_warn(xhci, "%s: Failed to sync device context failed, err=%d",
+			  __func__, ret);
+		xhci_free_command(xhci, config_cmd);
+		spin_unlock_irqrestore(&xhci->lock, flags);
+		return ret;
+	}
+
 	xhci_slot_copy(xhci, config_cmd->in_ctx, vdev->out_ctx);
 	ctrl_ctx->add_flags |= cpu_to_le32(SLOT_FLAG);
 	slot_ctx = xhci_get_slot_ctx(xhci, config_cmd->in_ctx);
@@ -5523,6 +5619,12 @@ void xhci_init_driver(struct hc_driver *drv,
 			drv->reset_bandwidth = over->reset_bandwidth;
 		if (over->update_hub_device)
 			drv->update_hub_device = over->update_hub_device;
+		if (over->address_device)
+			drv->address_device = over->address_device;
+		if (over->bus_suspend)
+			drv->bus_suspend = over->bus_suspend;
+		if (over->bus_resume)
+			drv->bus_resume = over->bus_resume;
 	}
 }
 EXPORT_SYMBOL_GPL(xhci_init_driver);
diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h
index 6348cac..dbeba64 100644
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
@@ -17,6 +17,7 @@
 #include <linux/kernel.h>
 #include <linux/usb/hcd.h>
 #include <linux/io-64-nonatomic-lo-hi.h>
+#include <linux/android_kabi.h>
 
 /* Code sharing between pci-quirks and xhci hcd */
 #include	"xhci-ext-caps.h"
@@ -815,6 +816,9 @@ struct xhci_command {
 	struct completion		*completion;
 	union xhci_trb			*command_trb;
 	struct list_head		cmd_list;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 /* drop context bitmasks */
@@ -1548,6 +1552,8 @@ struct xhci_segment {
 	void			*bounce_buf;
 	unsigned int		bounce_offs;
 	unsigned int		bounce_len;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 enum xhci_cancelled_td_status {
@@ -1636,6 +1642,9 @@ struct xhci_ring {
 	enum xhci_ring_type	type;
 	bool			last_td_was_short;
 	struct radix_tree_root	*trb_address_map;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 struct xhci_erst_entry {
@@ -1653,6 +1662,8 @@ struct xhci_erst {
 	dma_addr_t		erst_dma_addr;
 	/* Num entries the ERST can contain */
 	unsigned int		erst_size;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct xhci_scratchpad {
@@ -1929,6 +1940,12 @@ struct xhci_hcd {
 	struct list_head	regset_list;
 
 	void			*dbc;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
+
 	/* platform-specific data -- must come last */
 	unsigned long		priv[] __aligned(sizeof(s64));
 };
@@ -1946,6 +1963,14 @@ struct xhci_driver_overrides {
 	void (*reset_bandwidth)(struct usb_hcd *, struct usb_device *);
 	int (*update_hub_device)(struct usb_hcd *hcd, struct usb_device *hdev,
 			    struct usb_tt *tt, gfp_t mem_flags);
+	int (*address_device)(struct usb_hcd *hcd, struct usb_device *udev);
+	int (*bus_suspend)(struct usb_hcd *hcd);
+	int (*bus_resume)(struct usb_hcd *hcd);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 #define	XHCI_CFC_DELAY		10
@@ -2066,6 +2091,7 @@ int xhci_endpoint_init(struct xhci_hcd *xhci, struct xhci_virt_device *virt_dev,
 struct xhci_ring *xhci_ring_alloc(struct xhci_hcd *xhci,
 		unsigned int num_segs, unsigned int cycle_state,
 		enum xhci_ring_type type, unsigned int max_packet, gfp_t flags);
+void xhci_remove_stream_mapping(struct xhci_ring *ring);
 void xhci_ring_free(struct xhci_hcd *xhci, struct xhci_ring *ring);
 int xhci_ring_expansion(struct xhci_hcd *xhci, struct xhci_ring *ring,
 		unsigned int num_trbs, gfp_t flags);
@@ -2127,6 +2153,7 @@ int xhci_check_bandwidth(struct usb_hcd *hcd, struct usb_device *udev);
 void xhci_reset_bandwidth(struct usb_hcd *hcd, struct usb_device *udev);
 int xhci_update_hub_device(struct usb_hcd *hcd, struct usb_device *hdev,
 			   struct usb_tt *tt, gfp_t mem_flags);
+int xhci_address_device(struct usb_hcd *hcd, struct usb_device *udev);
 int xhci_disable_slot(struct xhci_hcd *xhci, u32 slot_id);
 int xhci_ext_cap_init(struct xhci_hcd *xhci);
 
@@ -2234,6 +2261,52 @@ static inline struct xhci_ring *xhci_urb_to_transfer_ring(struct xhci_hcd *xhci,
 					urb->stream_id);
 }
 
+/**
+ * struct xhci_vendor_ops - function callbacks for vendor specific operations
+ * @vendor_init: called for vendor init process
+ * @vendor_cleanup: called for vendor cleanup process
+ * @is_usb_offload_enabled: called to check if usb offload enabled
+ * @alloc_dcbaa: called when allocating vendor specific dcbaa
+ * @free_dcbaa: called to free vendor specific dcbaa
+ * @alloc_transfer_ring: called when remote transfer ring allocation is required
+ * @free_transfer_ring: called to free vendor specific transfer ring
+ * @sync_dev_ctx: called when synchronization for device context is required
+ * @usb_offload_skip_urb: skip urb control for offloading
+ * @alloc_container_ctx: called when allocating vendor specific container context
+ * @free_container_ctx: called to free vendor specific container context
+ */
+struct xhci_vendor_ops {
+	int (*vendor_init)(struct xhci_hcd *xhci);
+	void (*vendor_cleanup)(struct xhci_hcd *xhci);
+	bool (*is_usb_offload_enabled)(struct xhci_hcd *xhci,
+				       struct xhci_virt_device *vdev,
+				       unsigned int ep_index);
+
+	struct xhci_device_context_array *(*alloc_dcbaa)(struct xhci_hcd *xhci,
+							 gfp_t flags);
+	void (*free_dcbaa)(struct xhci_hcd *xhci);
+
+	struct xhci_ring *(*alloc_transfer_ring)(struct xhci_hcd *xhci,
+			u32 endpoint_type, enum xhci_ring_type ring_type,
+			unsigned int max_packet, gfp_t mem_flags);
+	void (*free_transfer_ring)(struct xhci_hcd *xhci,
+			struct xhci_virt_device *virt_dev, unsigned int ep_index);
+	int (*sync_dev_ctx)(struct xhci_hcd *xhci, unsigned int slot_id);
+	bool (*usb_offload_skip_urb)(struct xhci_hcd *xhci, struct urb *urb);
+	void (*alloc_container_ctx)(struct xhci_hcd *xhci, struct xhci_container_ctx *ctx,
+				    int type, gfp_t flags);
+	void (*free_container_ctx)(struct xhci_hcd *xhci, struct xhci_container_ctx *ctx);
+};
+
+struct xhci_vendor_ops *xhci_vendor_get_ops(struct xhci_hcd *xhci);
+
+int xhci_vendor_sync_dev_ctx(struct xhci_hcd *xhci, unsigned int slot_id);
+bool xhci_vendor_usb_offload_skip_urb(struct xhci_hcd *xhci, struct urb *urb);
+void xhci_vendor_free_transfer_ring(struct xhci_hcd *xhci,
+		struct xhci_virt_device *virt_dev, unsigned int ep_index);
+bool xhci_vendor_is_usb_offload_enabled(struct xhci_hcd *xhci,
+		struct xhci_virt_device *virt_dev, unsigned int ep_index);
+
 /*
  * TODO: As per spec Isochronous IDT transmissions are supported. We bypass
  * them anyways as we where unable to find a device that matches the
diff --git a/drivers/usb/mon/mon_bin.c b/drivers/usb/mon/mon_bin.c
index 094e812..abb1cd3 100644
--- a/drivers/usb/mon/mon_bin.c
+++ b/drivers/usb/mon/mon_bin.c
@@ -1272,8 +1272,7 @@ static int mon_bin_mmap(struct file *filp, struct vm_area_struct *vma)
 	if (vma->vm_flags & VM_WRITE)
 		return -EPERM;
 
-	vma->vm_flags &= ~VM_MAYWRITE;
-	vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP;
+	vm_flags_mod(vma, VM_DONTEXPAND | VM_DONTDUMP, VM_MAYWRITE);
 	vma->vm_private_data = filp->private_data;
 	mon_bin_vma_open(vma);
 	return 0;
diff --git a/drivers/usb/typec/altmodes/displayport.c b/drivers/usb/typec/altmodes/displayport.c
index 7cdf83f..ebcaf9b 100644
--- a/drivers/usb/typec/altmodes/displayport.c
+++ b/drivers/usb/typec/altmodes/displayport.c
@@ -150,6 +150,7 @@ static int dp_altmode_status_update(struct dp_altmode *dp)
 		if (dp->hpd != hpd) {
 			drm_connector_oob_hotplug_event(dp->connector_fwnode);
 			dp->hpd = hpd;
+			sysfs_notify(&dp->alt->dev.kobj, "displayport", "hpd");
 		}
 	}
 
@@ -522,9 +523,18 @@ static ssize_t pin_assignment_show(struct device *dev,
 }
 static DEVICE_ATTR_RW(pin_assignment);
 
+static ssize_t hpd_show(struct device *dev, struct device_attribute *attr, char *buf)
+{
+	struct dp_altmode *dp = dev_get_drvdata(dev);
+
+	return sysfs_emit(buf, "%d\n", dp->hpd);
+}
+static DEVICE_ATTR_RO(hpd);
+
 static struct attribute *dp_altmode_attrs[] = {
 	&dev_attr_configuration.attr,
 	&dev_attr_pin_assignment.attr,
+	&dev_attr_hpd.attr,
 	NULL
 };
 
diff --git a/drivers/usb/typec/bus.h b/drivers/usb/typec/bus.h
index 56dec26..fa021ed 100644
--- a/drivers/usb/typec/bus.h
+++ b/drivers/usb/typec/bus.h
@@ -4,6 +4,7 @@
 #define __USB_TYPEC_ALTMODE_H__
 
 #include <linux/usb/typec_altmode.h>
+#include <linux/android_kabi.h>
 
 struct bus_type;
 struct typec_mux;
@@ -22,6 +23,7 @@ struct altmode {
 
 	struct altmode			*partner;
 	struct altmode			*plug[2];
+	ANDROID_KABI_RESERVE(1);
 };
 
 #define to_altmode(d) container_of(d, struct altmode, adev)
diff --git a/drivers/usb/typec/class.h b/drivers/usb/typec/class.h
index 673b295..8dc08e0 100644
--- a/drivers/usb/typec/class.h
+++ b/drivers/usb/typec/class.h
@@ -5,6 +5,7 @@
 
 #include <linux/device.h>
 #include <linux/usb/typec.h>
+#include <linux/android_kabi.h>
 
 struct typec_mux;
 struct typec_switch;
@@ -14,6 +15,7 @@ struct typec_plug {
 	enum typec_plug_index		index;
 	struct ida			mode_ids;
 	int				num_altmodes;
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct typec_cable {
@@ -22,6 +24,7 @@ struct typec_cable {
 	struct usb_pd_identity		*identity;
 	unsigned int			active:1;
 	u16				pd_revision; /* 0300H = "3.0" */
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct typec_partner {
@@ -35,6 +38,7 @@ struct typec_partner {
 	enum usb_pd_svdm_ver		svdm_version;
 
 	struct usb_power_delivery	*pd;
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct typec_port {
@@ -59,6 +63,7 @@ struct typec_port {
 
 	const struct typec_capability	*cap;
 	const struct typec_operations   *ops;
+	ANDROID_KABI_RESERVE(1);
 };
 
 #define to_typec_port(_dev_) container_of(_dev_, struct typec_port, dev)
diff --git a/drivers/usb/typec/mux.h b/drivers/usb/typec/mux.h
index 58f0f28..bdb015a 100644
--- a/drivers/usb/typec/mux.h
+++ b/drivers/usb/typec/mux.h
@@ -4,15 +4,18 @@
 #define __USB_TYPEC_MUX__
 
 #include <linux/usb/typec_mux.h>
+#include <linux/android_kabi.h>
 
 struct typec_switch_dev {
 	struct device dev;
 	typec_switch_set_fn_t set;
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct typec_mux_dev {
 	struct device dev;
 	typec_mux_set_fn_t set;
+	ANDROID_KABI_RESERVE(1);
 };
 
 #define to_typec_switch_dev(_dev_) container_of(_dev_, struct typec_switch_dev, dev)
diff --git a/drivers/usb/typec/tcpm/tcpci.c b/drivers/usb/typec/tcpm/tcpci.c
index 72f8d1e..1d983ea 100644
--- a/drivers/usb/typec/tcpm/tcpci.c
+++ b/drivers/usb/typec/tcpm/tcpci.c
@@ -16,6 +16,7 @@
 #include <linux/usb/tcpci.h>
 #include <linux/usb/tcpm.h>
 #include <linux/usb/typec.h>
+#include <trace/hooks/typec.h>
 
 #define	PD_RETRY_COUNT_DEFAULT			3
 #define	PD_RETRY_COUNT_3_0_OR_HIGHER		2
@@ -179,8 +180,11 @@ static int tcpci_start_toggling(struct tcpc_dev *tcpc,
 
 	/* Handle vendor drp toggling */
 	if (tcpci->data->start_drp_toggling) {
+		int override_toggling = 0;
+		trace_android_vh_typec_tcpci_override_toggling(tcpci, tcpci->data,
+							       &override_toggling);
 		ret = tcpci->data->start_drp_toggling(tcpci, tcpci->data, cc);
-		if (ret < 0)
+		if (ret < 0 || override_toggling)
 			return ret;
 	}
 
@@ -403,6 +407,14 @@ static void tcpci_frs_sourcing_vbus(struct tcpc_dev *dev)
 		tcpci->data->frs_sourcing_vbus(tcpci, tcpci->data);
 }
 
+static void tcpci_check_contaminant(struct tcpc_dev *dev)
+{
+	struct tcpci *tcpci = tcpc_to_tcpci(dev);
+
+	if (tcpci->data->check_contaminant)
+		tcpci->data->check_contaminant(tcpci, tcpci->data);
+}
+
 static int tcpci_set_bist_data(struct tcpc_dev *tcpc, bool enable)
 {
 	struct tcpci *tcpci = tcpc_to_tcpci(tcpc);
@@ -449,7 +461,11 @@ static int tcpci_get_vbus(struct tcpc_dev *tcpc)
 {
 	struct tcpci *tcpci = tcpc_to_tcpci(tcpc);
 	unsigned int reg;
-	int ret;
+	int ret, vbus, bypass = 0;
+
+	trace_android_rvh_typec_tcpci_get_vbus(tcpci, tcpci->data, &vbus, &bypass);
+	if (bypass)
+		return vbus;
 
 	ret = regmap_read(tcpci->regmap, TCPC_POWER_STATUS, &reg);
 	if (ret < 0)
@@ -778,6 +794,9 @@ struct tcpci *tcpci_register_port(struct device *dev, struct tcpci_data *data)
 	tcpci->tcpc.frs_sourcing_vbus = tcpci_frs_sourcing_vbus;
 	tcpci->tcpc.set_partner_usb_comm_capable = tcpci_set_partner_usb_comm_capable;
 
+	if (tcpci->data->check_contaminant)
+		tcpci->tcpc.check_contaminant = tcpci_check_contaminant;
+
 	if (tcpci->data->auto_discharge_disconnect) {
 		tcpci->tcpc.enable_auto_vbus_discharge = tcpci_enable_auto_vbus_discharge;
 		tcpci->tcpc.set_auto_vbus_discharge_threshold =
diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c
index 5240996..8f3e845 100644
--- a/drivers/usb/typec/tcpm/tcpm.c
+++ b/drivers/usb/typec/tcpm/tcpm.c
@@ -31,11 +31,13 @@
 #include <linux/usb/tcpm.h>
 #include <linux/usb/typec_altmode.h>
 
+#include <trace/hooks/typec.h>
 #include <uapi/linux/sched/types.h>
 
 #define FOREACH_STATE(S)			\
 	S(INVALID_STATE),			\
 	S(TOGGLING),			\
+	S(CHECK_CONTAMINANT),			\
 	S(SRC_UNATTACHED),			\
 	S(SRC_ATTACH_WAIT),			\
 	S(SRC_ATTACHED),			\
@@ -249,6 +251,7 @@ enum frs_typec_current {
 #define TCPM_RESET_EVENT	BIT(2)
 #define TCPM_FRS_EVENT		BIT(3)
 #define TCPM_SOURCING_VBUS	BIT(4)
+#define TCPM_PORT_CLEAN		BIT(5)
 
 #define LOG_BUFFER_ENTRIES	1024
 #define LOG_BUFFER_ENTRY_SIZE	128
@@ -483,6 +486,13 @@ struct tcpm_port {
 	 * SNK_READY for non-pd link.
 	 */
 	bool slow_charger_loop;
+
+	/*
+	 * When true indicates that the lower level drivers indicate potential presence
+	 * of contaminant in the connector pins based on the tcpm state machine
+	 * transitions.
+	 */
+	bool potential_contaminant;
 #ifdef CONFIG_DEBUG_FS
 	struct dentry *dentry;
 	struct mutex logbuffer_lock;	/* log buffer access lock */
@@ -597,6 +607,7 @@ static void _tcpm_log(struct tcpm_port *port, const char *fmt, va_list args)
 	char tmpbuffer[LOG_BUFFER_ENTRY_SIZE];
 	u64 ts_nsec = local_clock();
 	unsigned long rem_nsec;
+	bool bypass_log = false;
 
 	mutex_lock(&port->logbuffer_lock);
 	if (!port->logbuffer[port->logbuffer_head]) {
@@ -609,6 +620,9 @@ static void _tcpm_log(struct tcpm_port *port, const char *fmt, va_list args)
 	}
 
 	vsnprintf(tmpbuffer, sizeof(tmpbuffer), fmt, args);
+	trace_android_vh_typec_tcpm_log(tmpbuffer, &bypass_log);
+	if (bypass_log)
+		goto abort;
 
 	if (tcpm_log_full(port)) {
 		port->logbuffer_head = max(port->logbuffer_head - 1, 0);
@@ -647,7 +661,7 @@ static void tcpm_log(struct tcpm_port *port, const char *fmt, ...)
 	/* Do not log while disconnected and unattached */
 	if (tcpm_port_is_disconnected(port) &&
 	    (port->state == SRC_UNATTACHED || port->state == SNK_UNATTACHED ||
-	     port->state == TOGGLING))
+	     port->state == TOGGLING || port->state == CHECK_CONTAMINANT))
 		return;
 
 	va_start(args, fmt);
@@ -2461,7 +2475,8 @@ static void tcpm_pd_data_request(struct tcpm_port *port,
 				   port->nr_source_caps);
 
 		tcpm_register_source_caps(port);
-
+		trace_android_vh_typec_store_partner_src_caps(&port->nr_source_caps,
+							      &port->source_caps);
 		/*
 		 * Adjust revision in subsequent message headers, as required,
 		 * to comply with 6.2.1.1.5 of the USB PD 3.0 spec. We don't
@@ -3926,18 +3941,32 @@ static void run_state_machine(struct tcpm_port *port)
 {
 	int ret;
 	enum typec_pwr_opmode opmode;
-	unsigned int msecs;
+	unsigned int msecs, timer_val_msecs;
 	enum tcpm_state upcoming_state;
+	const char *state_name;
+
+	if (port->tcpc->check_contaminant && port->state != CHECK_CONTAMINANT)
+		port->potential_contaminant = ((port->enter_state == SRC_ATTACH_WAIT &&
+						port->state == SRC_UNATTACHED) ||
+					       (port->enter_state == SNK_ATTACH_WAIT &&
+						port->state == SNK_UNATTACHED));
 
 	port->enter_state = port->state;
 	switch (port->state) {
 	case TOGGLING:
 		break;
+	case CHECK_CONTAMINANT:
+		port->tcpc->check_contaminant(port->tcpc);
+		break;
 	/* SRC states */
 	case SRC_UNATTACHED:
 		if (!port->non_pd_role_swap)
 			tcpm_swap_complete(port, -ENOTCONN);
 		tcpm_src_detach(port);
+		if (port->potential_contaminant) {
+			tcpm_set_state(port, CHECK_CONTAMINANT, 0);
+			break;
+		}
 		if (tcpm_start_toggling(port, tcpm_rp_cc(port))) {
 			tcpm_set_state(port, TOGGLING, 0);
 			break;
@@ -3947,17 +3976,20 @@ static void run_state_machine(struct tcpm_port *port)
 			tcpm_set_state(port, SNK_UNATTACHED, PD_T_DRP_SNK);
 		break;
 	case SRC_ATTACH_WAIT:
+		timer_val_msecs = PD_T_CC_DEBOUNCE;
+		trace_android_vh_typec_tcpm_get_timer(tcpm_states[SRC_ATTACH_WAIT],
+						      CC_DEBOUNCE, &timer_val_msecs);
 		if (tcpm_port_is_debug(port))
 			tcpm_set_state(port, DEBUG_ACC_ATTACHED,
-				       PD_T_CC_DEBOUNCE);
+				       timer_val_msecs);
 		else if (tcpm_port_is_audio(port))
 			tcpm_set_state(port, AUDIO_ACC_ATTACHED,
-				       PD_T_CC_DEBOUNCE);
+				       timer_val_msecs);
 		else if (tcpm_port_is_source(port) && port->vbus_vsafe0v)
 			tcpm_set_state(port,
 				       tcpm_try_snk(port) ? SNK_TRY
 							  : SRC_ATTACHED,
-				       PD_T_CC_DEBOUNCE);
+				       timer_val_msecs);
 		break;
 
 	case SNK_TRY:
@@ -4008,7 +4040,10 @@ static void run_state_machine(struct tcpm_port *port)
 		}
 		break;
 	case SRC_TRYWAIT_DEBOUNCE:
-		tcpm_set_state(port, SRC_ATTACHED, PD_T_CC_DEBOUNCE);
+		timer_val_msecs = PD_T_CC_DEBOUNCE;
+		trace_android_vh_typec_tcpm_get_timer(tcpm_states[SRC_TRYWAIT_DEBOUNCE],
+						      CC_DEBOUNCE, &timer_val_msecs);
+		tcpm_set_state(port, SRC_ATTACHED, timer_val_msecs);
 		break;
 	case SRC_TRYWAIT_UNATTACHED:
 		tcpm_set_state(port, SNK_UNATTACHED, 0);
@@ -4175,6 +4210,10 @@ static void run_state_machine(struct tcpm_port *port)
 			tcpm_swap_complete(port, -ENOTCONN);
 		tcpm_pps_complete(port, -ENOTCONN);
 		tcpm_snk_detach(port);
+		if (port->potential_contaminant) {
+			tcpm_set_state(port, CHECK_CONTAMINANT, 0);
+			break;
+		}
 		if (tcpm_start_toggling(port, TYPEC_CC_RD)) {
 			tcpm_set_state(port, TOGGLING, 0);
 			break;
@@ -4184,15 +4223,18 @@ static void run_state_machine(struct tcpm_port *port)
 			tcpm_set_state(port, SRC_UNATTACHED, PD_T_DRP_SRC);
 		break;
 	case SNK_ATTACH_WAIT:
+		timer_val_msecs = PD_T_CC_DEBOUNCE;
+		trace_android_vh_typec_tcpm_get_timer(tcpm_states[SNK_ATTACH_WAIT],
+						      CC_DEBOUNCE, &timer_val_msecs);
 		if ((port->cc1 == TYPEC_CC_OPEN &&
 		     port->cc2 != TYPEC_CC_OPEN) ||
 		    (port->cc1 != TYPEC_CC_OPEN &&
 		     port->cc2 == TYPEC_CC_OPEN))
 			tcpm_set_state(port, SNK_DEBOUNCED,
-				       PD_T_CC_DEBOUNCE);
+				       timer_val_msecs);
 		else if (tcpm_port_is_disconnected(port))
 			tcpm_set_state(port, SNK_UNATTACHED,
-				       PD_T_PD_DEBOUNCE);
+				       timer_val_msecs);
 		break;
 	case SNK_DEBOUNCED:
 		if (tcpm_port_is_disconnected(port))
@@ -4228,8 +4270,11 @@ static void run_state_machine(struct tcpm_port *port)
 		tcpm_set_state(port, SRC_ATTACHED, PD_T_PD_DEBOUNCE);
 		break;
 	case SNK_TRYWAIT:
+		timer_val_msecs = PD_T_CC_DEBOUNCE;
+		trace_android_vh_typec_tcpm_get_timer(tcpm_states[SNK_TRYWAIT],
+						      CC_DEBOUNCE, &timer_val_msecs);
 		tcpm_set_cc(port, TYPEC_CC_RD);
-		tcpm_set_state(port, SNK_TRYWAIT_VBUS, PD_T_CC_DEBOUNCE);
+		tcpm_set_state(port, SNK_TRYWAIT_VBUS, timer_val_msecs);
 		break;
 	case SNK_TRYWAIT_VBUS:
 		/*
@@ -4269,7 +4314,10 @@ static void run_state_machine(struct tcpm_port *port)
 			/* SRC -> SNK POWER/FAST_ROLE_SWAP finished */
 			tcpm_ams_finish(port);
 
-		tcpm_set_state(port, SNK_DISCOVERY, 0);
+		timer_val_msecs = 0;
+		trace_android_vh_typec_tcpm_get_timer(tcpm_states[SNK_STARTUP],
+						      SINK_DISCOVERY_BC12, &timer_val_msecs);
+		tcpm_set_state(port, SNK_DISCOVERY, timer_val_msecs);
 		break;
 	case SNK_DISCOVERY:
 		if (port->vbus_present) {
@@ -4295,8 +4343,10 @@ static void run_state_machine(struct tcpm_port *port)
 					PD_T_DB_DETECT : PD_T_NO_RESPONSE);
 		break;
 	case SNK_DISCOVERY_DEBOUNCE:
-		tcpm_set_state(port, SNK_DISCOVERY_DEBOUNCE_DONE,
-			       PD_T_CC_DEBOUNCE);
+		timer_val_msecs = PD_T_CC_DEBOUNCE;
+		trace_android_vh_typec_tcpm_get_timer(tcpm_states[SNK_DISCOVERY_DEBOUNCE],
+						      CC_DEBOUNCE, &timer_val_msecs);
+		tcpm_set_state(port, SNK_DISCOVERY_DEBOUNCE_DONE, timer_val_msecs);
 		break;
 	case SNK_DISCOVERY_DEBOUNCE_DONE:
 		if (!tcpm_port_is_disconnected(port) &&
@@ -4314,6 +4364,9 @@ static void run_state_machine(struct tcpm_port *port)
 			tcpm_set_state(port, SNK_READY, 0);
 			break;
 		}
+		timer_val_msecs = PD_T_SINK_WAIT_CAP;
+		trace_android_vh_typec_tcpm_get_timer(tcpm_states[SNK_WAIT_CAPABILITIES],
+						      SINK_WAIT_CAP, &timer_val_msecs);
 		/*
 		 * If VBUS has never been low, and we time out waiting
 		 * for source cap, try a soft reset first, in case we
@@ -4323,10 +4376,10 @@ static void run_state_machine(struct tcpm_port *port)
 		if (port->vbus_never_low) {
 			port->vbus_never_low = false;
 			tcpm_set_state(port, SNK_SOFT_RESET,
-				       PD_T_SINK_WAIT_CAP);
+				       timer_val_msecs);
 		} else {
 			tcpm_set_state(port, hard_reset_state(port),
-				       PD_T_SINK_WAIT_CAP);
+				       timer_val_msecs);
 		}
 		break;
 	case SNK_NEGOTIATE_CAPABILITIES:
@@ -4452,7 +4505,10 @@ static void run_state_machine(struct tcpm_port *port)
 			tcpm_set_state(port, ACC_UNATTACHED, 0);
 		break;
 	case AUDIO_ACC_DEBOUNCE:
-		tcpm_set_state(port, ACC_UNATTACHED, PD_T_CC_DEBOUNCE);
+		timer_val_msecs = PD_T_CC_DEBOUNCE;
+		trace_android_vh_typec_tcpm_get_timer(tcpm_states[AUDIO_ACC_DEBOUNCE],
+						      CC_DEBOUNCE, &timer_val_msecs);
+		tcpm_set_state(port, ACC_UNATTACHED, timer_val_msecs);
 		break;
 
 	/* Hard_Reset states */
@@ -4647,7 +4703,10 @@ static void run_state_machine(struct tcpm_port *port)
 		tcpm_set_state(port, ERROR_RECOVERY, 0);
 		break;
 	case FR_SWAP_SNK_SRC_TRANSITION_TO_OFF:
-		tcpm_set_state(port, ERROR_RECOVERY, PD_T_PS_SOURCE_OFF);
+		timer_val_msecs = PD_T_PS_SOURCE_OFF;
+		state_name = tcpm_states[FR_SWAP_SNK_SRC_TRANSITION_TO_OFF];
+		trace_android_vh_typec_tcpm_get_timer(state_name, SOURCE_OFF, &timer_val_msecs);
+		tcpm_set_state(port, ERROR_RECOVERY, timer_val_msecs);
 		break;
 	case FR_SWAP_SNK_SRC_NEW_SINK_READY:
 		if (port->vbus_source)
@@ -4699,10 +4758,13 @@ static void run_state_machine(struct tcpm_port *port)
 			       PD_T_SRCSWAPSTDBY);
 		break;
 	case PR_SWAP_SRC_SNK_SOURCE_OFF:
+		timer_val_msecs = PD_T_CC_DEBOUNCE;
+		trace_android_vh_typec_tcpm_get_timer(tcpm_states[PR_SWAP_SRC_SNK_SOURCE_OFF],
+						      CC_DEBOUNCE, &timer_val_msecs);
 		tcpm_set_cc(port, TYPEC_CC_RD);
 		/* allow CC debounce */
 		tcpm_set_state(port, PR_SWAP_SRC_SNK_SOURCE_OFF_CC_DEBOUNCED,
-			       PD_T_CC_DEBOUNCE);
+			       timer_val_msecs);
 		break;
 	case PR_SWAP_SRC_SNK_SOURCE_OFF_CC_DEBOUNCED:
 		/*
@@ -4729,6 +4791,9 @@ static void run_state_machine(struct tcpm_port *port)
 		/* will be source, remove existing capabilities */
 		usb_power_delivery_unregister_capabilities(port->partner_source_caps);
 		port->partner_source_caps = NULL;
+		timer_val_msecs = PD_T_PS_SOURCE_OFF;
+		trace_android_vh_typec_tcpm_get_timer(tcpm_states[PR_SWAP_SNK_SRC_SINK_OFF],
+						      SOURCE_OFF, &timer_val_msecs);
 		/*
 		 * Prevent vbus discharge circuit from turning on during PR_SWAP
 		 * as this is not a disconnect.
@@ -4736,8 +4801,7 @@ static void run_state_machine(struct tcpm_port *port)
 		tcpm_set_auto_vbus_discharge_threshold(port, TYPEC_PWR_MODE_USB,
 						       port->pps_data.active, 0);
 		tcpm_set_charge(port, false);
-		tcpm_set_state(port, hard_reset_state(port),
-			       PD_T_PS_SOURCE_OFF);
+		tcpm_set_state(port, hard_reset_state(port), timer_val_msecs);
 		break;
 	case PR_SWAP_SNK_SRC_SOURCE_ON:
 		tcpm_enable_auto_vbus_discharge(port, true);
@@ -4867,9 +4931,12 @@ static void run_state_machine(struct tcpm_port *port)
 			       PD_T_ERROR_RECOVERY);
 		break;
 	case PORT_RESET_WAIT_OFF:
+		timer_val_msecs = PD_T_PS_SOURCE_OFF;
+		trace_android_vh_typec_tcpm_get_timer(tcpm_states[PORT_RESET_WAIT_OFF],
+						      SOURCE_OFF, &timer_val_msecs);
 		tcpm_set_state(port,
 			       tcpm_default_state(port),
-			       port->vbus_present ? PD_T_PS_SOURCE_OFF : 0);
+			       port->vbus_present ? timer_val_msecs : 0);
 		break;
 
 	/* AMS intermediate state */
@@ -4959,6 +5026,9 @@ static void _tcpm_cc_change(struct tcpm_port *port, enum typec_cc_status cc1,
 		else if (tcpm_port_is_sink(port))
 			tcpm_set_state(port, SNK_ATTACH_WAIT, 0);
 		break;
+	case CHECK_CONTAMINANT:
+		/* Wait for Toggling to be resumed */
+		break;
 	case SRC_UNATTACHED:
 	case ACC_UNATTACHED:
 		if (tcpm_port_is_debug(port) || tcpm_port_is_audio(port) ||
@@ -5331,6 +5401,8 @@ static void _tcpm_pd_vbus_off(struct tcpm_port *port)
 
 static void _tcpm_pd_vbus_vsafe0v(struct tcpm_port *port)
 {
+	unsigned int timer_val_msecs;
+
 	tcpm_log_force(port, "VBUS VSAFE0V");
 	port->vbus_vsafe0v = true;
 	switch (port->state) {
@@ -5342,9 +5414,12 @@ static void _tcpm_pd_vbus_vsafe0v(struct tcpm_port *port)
 		tcpm_set_state(port, SRC_HARD_RESET_VBUS_ON, PD_T_SRC_RECOVER);
 		break;
 	case SRC_ATTACH_WAIT:
+		timer_val_msecs = PD_T_CC_DEBOUNCE;
+		trace_android_vh_typec_tcpm_get_timer(tcpm_states[SRC_ATTACH_WAIT],
+						      CC_DEBOUNCE, &timer_val_msecs);
 		if (tcpm_port_is_source(port))
 			tcpm_set_state(port, tcpm_try_snk(port) ? SNK_TRY : SRC_ATTACHED,
-				       PD_T_CC_DEBOUNCE);
+				       timer_val_msecs);
 		break;
 	case SRC_STARTUP:
 	case SRC_SEND_CAPABILITIES:
@@ -5430,9 +5505,38 @@ static void tcpm_pd_event_handler(struct kthread_work *work)
 		}
 		if (events & TCPM_CC_EVENT) {
 			enum typec_cc_status cc1, cc2;
+			bool modified = false;
 
 			if (port->tcpc->get_cc(port->tcpc, &cc1, &cc2) == 0)
 				_tcpm_cc_change(port, cc1, cc2);
+
+			trace_android_vh_typec_tcpm_modify_src_caps(&port->nr_src_pdo,
+								    &port->src_pdo, &modified);
+			if (modified) {
+				int ret;
+
+				switch (port->state) {
+				case SRC_UNATTACHED:
+				case SRC_ATTACH_WAIT:
+				case SRC_TRYWAIT:
+					tcpm_set_cc(port, tcpm_rp_cc(port));
+					break;
+				case SRC_SEND_CAPABILITIES:
+				case SRC_SEND_CAPABILITIES_TIMEOUT:
+				case SRC_NEGOTIATE_CAPABILITIES:
+				case SRC_READY:
+				case SRC_WAIT_NEW_CAPABILITIES:
+					port->caps_count = 0;
+					port->upcoming_state = SRC_SEND_CAPABILITIES;
+					ret = tcpm_ams_start(port, POWER_NEGOTIATION);
+					if (ret == -EAGAIN)
+						port->upcoming_state = INVALID_STATE;
+					break;
+				default:
+					break;
+				}
+			}
+
 		}
 		if (events & TCPM_FRS_EVENT) {
 			if (port->state == SNK_READY) {
@@ -5458,6 +5562,15 @@ static void tcpm_pd_event_handler(struct kthread_work *work)
 			port->vbus_source = true;
 			_tcpm_pd_vbus_on(port);
 		}
+		if (events & TCPM_PORT_CLEAN) {
+			tcpm_log(port, "port clean");
+			if (port->state == CHECK_CONTAMINANT) {
+				if (tcpm_start_toggling(port, tcpm_rp_cc(port)))
+					tcpm_set_state(port, TOGGLING, 0);
+				else
+					tcpm_set_state(port, tcpm_default_state(port), 0);
+			}
+		}
 
 		spin_lock(&port->pd_event_lock);
 	}
@@ -5510,6 +5623,21 @@ void tcpm_sourcing_vbus(struct tcpm_port *port)
 }
 EXPORT_SYMBOL_GPL(tcpm_sourcing_vbus);
 
+void tcpm_port_clean(struct tcpm_port *port)
+{
+	spin_lock(&port->pd_event_lock);
+	port->pd_events |= TCPM_PORT_CLEAN;
+	spin_unlock(&port->pd_event_lock);
+	kthread_queue_work(port->wq, &port->event_work);
+}
+EXPORT_SYMBOL_GPL(tcpm_port_clean);
+
+bool tcpm_port_is_toggling(struct tcpm_port *port)
+{
+	return port->port_type == TYPEC_PORT_DRP && port->state == TOGGLING;
+}
+EXPORT_SYMBOL_GPL(tcpm_port_is_toggling);
+
 static void tcpm_enable_frs_work(struct kthread_work *work)
 {
 	struct tcpm_port *port = container_of(work, struct tcpm_port, enable_frs);
diff --git a/drivers/vdpa/vdpa_user/iova_domain.c b/drivers/vdpa/vdpa_user/iova_domain.c
index e682bc7..5e4a77b 100644
--- a/drivers/vdpa/vdpa_user/iova_domain.c
+++ b/drivers/vdpa/vdpa_user/iova_domain.c
@@ -512,7 +512,7 @@ static int vduse_domain_mmap(struct file *file, struct vm_area_struct *vma)
 {
 	struct vduse_iova_domain *domain = file->private_data;
 
-	vma->vm_flags |= VM_DONTDUMP | VM_DONTEXPAND;
+	vm_flags_set(vma, VM_DONTDUMP | VM_DONTEXPAND);
 	vma->vm_private_data = domain;
 	vma->vm_ops = &vduse_domain_mmap_ops;
 
diff --git a/drivers/vfio/pci/vfio_pci_core.c b/drivers/vfio/pci/vfio_pci_core.c
index e030c21..bc9cda4 100644
--- a/drivers/vfio/pci/vfio_pci_core.c
+++ b/drivers/vfio/pci/vfio_pci_core.c
@@ -1792,7 +1792,7 @@ int vfio_pci_core_mmap(struct vfio_device *core_vdev, struct vm_area_struct *vma
 	 * See remap_pfn_range(), called from vfio_pci_fault() but we can't
 	 * change vm_flags within the fault handler.  Set them now.
 	 */
-	vma->vm_flags |= VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP;
+	vm_flags_set(vma, VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP);
 	vma->vm_ops = &vfio_pci_mmap_ops;
 
 	return 0;
diff --git a/drivers/vhost/vdpa.c b/drivers/vhost/vdpa.c
index 31a1566..17d368d 100644
--- a/drivers/vhost/vdpa.c
+++ b/drivers/vhost/vdpa.c
@@ -1336,7 +1336,7 @@ static int vhost_vdpa_mmap(struct file *file, struct vm_area_struct *vma)
 	if (vma->vm_end - vma->vm_start != notify.size)
 		return -ENOTSUPP;
 
-	vma->vm_flags |= VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP;
+	vm_flags_set(vma, VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP);
 	vma->vm_ops = &vhost_vdpa_vm_ops;
 	return 0;
 }
diff --git a/drivers/video/fbdev/68328fb.c b/drivers/video/fbdev/68328fb.c
index 7db03ed..41df61b 100644
--- a/drivers/video/fbdev/68328fb.c
+++ b/drivers/video/fbdev/68328fb.c
@@ -391,7 +391,7 @@ static int mc68x328fb_mmap(struct fb_info *info, struct vm_area_struct *vma)
 #ifndef MMU
 	/* this is uClinux (no MMU) specific code */
 
-	vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP;
+	vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP);
 	vma->vm_start = videomemory;
 
 	return 0;
diff --git a/drivers/video/fbdev/core/fb_defio.c b/drivers/video/fbdev/core/fb_defio.c
index a3cf1f7..ed5e4a5 100644
--- a/drivers/video/fbdev/core/fb_defio.c
+++ b/drivers/video/fbdev/core/fb_defio.c
@@ -232,9 +232,9 @@ static const struct address_space_operations fb_deferred_io_aops = {
 int fb_deferred_io_mmap(struct fb_info *info, struct vm_area_struct *vma)
 {
 	vma->vm_ops = &fb_deferred_io_vm_ops;
-	vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP;
+	vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP);
 	if (!(info->flags & FBINFO_VIRTFB))
-		vma->vm_flags |= VM_IO;
+		vm_flags_set(vma, VM_IO);
 	vma->vm_private_data = info;
 	return 0;
 }
diff --git a/drivers/virt/Kconfig b/drivers/virt/Kconfig
index 87ef258..c39409b 100644
--- a/drivers/virt/Kconfig
+++ b/drivers/virt/Kconfig
@@ -52,4 +52,6 @@
 
 source "drivers/virt/coco/sev-guest/Kconfig"
 
+source "drivers/virt/gunyah/Kconfig"
+
 endif
diff --git a/drivers/virt/Makefile b/drivers/virt/Makefile
index 093674e..92b7e53 100644
--- a/drivers/virt/Makefile
+++ b/drivers/virt/Makefile
@@ -11,3 +11,4 @@
 obj-$(CONFIG_ACRN_HSM)		+= acrn/
 obj-$(CONFIG_EFI_SECRET)	+= coco/efi_secret/
 obj-$(CONFIG_SEV_GUEST)		+= coco/sev-guest/
+obj-y				+= gunyah/
diff --git a/drivers/virt/gunyah/Kconfig b/drivers/virt/gunyah/Kconfig
new file mode 100644
index 0000000..02c7a8b
--- /dev/null
+++ b/drivers/virt/gunyah/Kconfig
@@ -0,0 +1,60 @@
+# SPDX-License-Identifier: GPL-2.0-only
+
+config GUNYAH
+	tristate "Gunyah Virtualization drivers"
+	depends on ARM64
+	depends on MAILBOX
+	select GUNYAH_PLATFORM_HOOKS
+	select AUXILIARY_BUS
+	imply GUNYAH_QCOM_PLATFORM if ARCH_QCOM
+	help
+	  The Gunyah drivers are the helper interfaces that run in a guest VM
+	  such as basic inter-VM IPC and signaling mechanisms, and higher level
+	  services such as memory/device sharing, IRQ sharing, and so on.
+
+	  Say Y/M here to enable the drivers needed to interact in a Gunyah
+	  virtual environment.
+
+config GUNYAH_PLATFORM_HOOKS
+	tristate
+
+config GUNYAH_QCOM_PLATFORM
+	tristate "Support for Gunyah on Qualcomm platforms"
+	depends on GUNYAH
+	select GUNYAH_PLATFORM_HOOKS
+	select QCOM_SCM
+	help
+	  Enable support for interacting with Gunyah on Qualcomm
+	  platforms. Interaction with Qualcomm firmware requires
+	  extra platform-specific support.
+
+	  Say Y/M here to use Gunyah on Qualcomm platforms.
+
+config GUNYAH_VCPU
+	tristate "Runnable Gunyah vCPUs"
+	depends on GUNYAH
+	help
+	  Enable kernel support for host-scheduled vCPUs running under Gunyah.
+	  When selecting this option, userspace virtual machine managers (VMM)
+	  can schedule the guest VM's vCPUs instead of using Gunyah's scheduler.
+	  VMMs can also handle stage 2 faults of the vCPUs.
+
+	  Say Y/M here if unsure and you want to support Gunyah VMMs.
+
+config GUNYAH_IRQFD
+	tristate "Gunyah irqfd interface"
+	depends on GUNYAH
+	help
+	  Enable kernel support for creating irqfds which can raise an interrupt
+	  on Gunyah virtual machine.
+
+	  Say Y/M here if unsure and you want to support Gunyah VMMs.
+
+config GUNYAH_IOEVENTFD
+	tristate "Gunyah ioeventfd interface"
+	depends on GUNYAH
+	help
+	  Enable kernel support for creating ioeventfds which can alert userspace
+	  when a Gunyah virtual machine accesses a memory address.
+
+	  Say Y/M here if unsure and you want to support Gunyah VMMs.
diff --git a/drivers/virt/gunyah/Makefile b/drivers/virt/gunyah/Makefile
new file mode 100644
index 0000000..63ca11e
--- /dev/null
+++ b/drivers/virt/gunyah/Makefile
@@ -0,0 +1,11 @@
+# SPDX-License-Identifier: GPL-2.0
+
+obj-$(CONFIG_GUNYAH_PLATFORM_HOOKS) += gunyah_platform_hooks.o
+obj-$(CONFIG_GUNYAH_QCOM_PLATFORM) += gunyah_qcom.o
+
+gunyah-y += rsc_mgr.o rsc_mgr_rpc.o vm_mgr.o vm_mgr_mm.o
+obj-$(CONFIG_GUNYAH) += gunyah.o
+
+obj-$(CONFIG_GUNYAH_VCPU) += gunyah_vcpu.o
+obj-$(CONFIG_GUNYAH_IRQFD) += gunyah_irqfd.o
+obj-$(CONFIG_GUNYAH_IOEVENTFD) += gunyah_ioeventfd.o
diff --git a/drivers/virt/gunyah/gunyah_ioeventfd.c b/drivers/virt/gunyah/gunyah_ioeventfd.c
new file mode 100644
index 0000000..5b1b9fd
--- /dev/null
+++ b/drivers/virt/gunyah/gunyah_ioeventfd.c
@@ -0,0 +1,130 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+#include <linux/eventfd.h>
+#include <linux/file.h>
+#include <linux/fs.h>
+#include <linux/gunyah.h>
+#include <linux/gunyah_vm_mgr.h>
+#include <linux/module.h>
+#include <linux/printk.h>
+
+#include <uapi/linux/gunyah.h>
+
+struct gh_ioeventfd {
+	struct gh_vm_function_instance *f;
+	struct gh_vm_io_handler io_handler;
+
+	struct eventfd_ctx *ctx;
+};
+
+static int gh_write_ioeventfd(struct gh_vm_io_handler *io_dev, u64 addr, u32 len, u64 data)
+{
+	struct gh_ioeventfd *iofd = container_of(io_dev, struct gh_ioeventfd, io_handler);
+
+	eventfd_signal(iofd->ctx, 1);
+	return 0;
+}
+
+static struct gh_vm_io_handler_ops io_ops = {
+	.write = gh_write_ioeventfd,
+};
+
+static long gh_ioeventfd_bind(struct gh_vm_function_instance *f)
+{
+	const struct gh_fn_ioeventfd_arg *args = f->argp;
+	struct gh_ioeventfd *iofd;
+	struct eventfd_ctx *ctx;
+	int ret;
+
+	if (f->arg_size != sizeof(*args))
+		return -EINVAL;
+
+	/* All other flag bits are reserved for future use */
+	if (args->flags & ~GH_IOEVENTFD_FLAGS_DATAMATCH)
+		return -EINVAL;
+
+	/* 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 -EINVAL;
+	}
+
+	/* check for range overflow */
+	if (overflows_type(args->addr + args->len, u64))
+		return -EINVAL;
+
+	/* ioeventfd with no length can't be combined with DATAMATCH */
+	if (!args->len && (args->flags & GH_IOEVENTFD_FLAGS_DATAMATCH))
+		return -EINVAL;
+
+	ctx = eventfd_ctx_fdget(args->fd);
+	if (IS_ERR(ctx))
+		return PTR_ERR(ctx);
+
+	iofd = kzalloc(sizeof(*iofd), GFP_KERNEL);
+	if (!iofd) {
+		ret = -ENOMEM;
+		goto err_eventfd;
+	}
+
+	f->data = iofd;
+	iofd->f = f;
+
+	iofd->ctx = ctx;
+
+	if (args->flags & GH_IOEVENTFD_FLAGS_DATAMATCH) {
+		iofd->io_handler.datamatch = true;
+		iofd->io_handler.len = args->len;
+		iofd->io_handler.data = args->datamatch;
+	}
+	iofd->io_handler.addr = args->addr;
+	iofd->io_handler.ops = &io_ops;
+
+	ret = gh_vm_add_io_handler(f->ghvm, &iofd->io_handler);
+	if (ret)
+		goto err_io_dev_add;
+
+	return 0;
+
+err_io_dev_add:
+	kfree(iofd);
+err_eventfd:
+	eventfd_ctx_put(ctx);
+	return ret;
+}
+
+static void gh_ioevent_unbind(struct gh_vm_function_instance *f)
+{
+	struct gh_ioeventfd *iofd = f->data;
+
+	eventfd_ctx_put(iofd->ctx);
+	gh_vm_remove_io_handler(iofd->f->ghvm, &iofd->io_handler);
+	kfree(iofd);
+}
+
+static bool gh_ioevent_compare(const struct gh_vm_function_instance *f,
+				const void *arg, size_t size)
+{
+	const struct gh_fn_ioeventfd_arg *instance = f->argp,
+					 *other = arg;
+
+	if (sizeof(*other) != size)
+		return false;
+
+	return instance->addr == other->addr;
+}
+
+DECLARE_GH_VM_FUNCTION_INIT(ioeventfd, GH_FN_IOEVENTFD, 3,
+				gh_ioeventfd_bind, gh_ioevent_unbind,
+				gh_ioevent_compare);
+MODULE_DESCRIPTION("Gunyah ioeventfd VM Function");
+MODULE_LICENSE("GPL");
diff --git a/drivers/virt/gunyah/gunyah_irqfd.c b/drivers/virt/gunyah/gunyah_irqfd.c
new file mode 100644
index 0000000..3e954eb
--- /dev/null
+++ b/drivers/virt/gunyah/gunyah_irqfd.c
@@ -0,0 +1,180 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+#include <linux/eventfd.h>
+#include <linux/file.h>
+#include <linux/fs.h>
+#include <linux/gunyah.h>
+#include <linux/gunyah_vm_mgr.h>
+#include <linux/module.h>
+#include <linux/poll.h>
+#include <linux/printk.h>
+
+#include <uapi/linux/gunyah.h>
+
+struct gh_irqfd {
+	struct gh_resource *ghrsc;
+	struct gh_vm_resource_ticket ticket;
+	struct gh_vm_function_instance *f;
+
+	bool level;
+
+	struct eventfd_ctx *ctx;
+	wait_queue_entry_t wait;
+	poll_table pt;
+};
+
+static int irqfd_wakeup(wait_queue_entry_t *wait, unsigned int mode, int sync, void *key)
+{
+	struct gh_irqfd *irqfd = container_of(wait, struct gh_irqfd, wait);
+	__poll_t flags = key_to_poll(key);
+	int ret = 0;
+
+	if (flags & EPOLLIN) {
+		if (irqfd->ghrsc) {
+			ret = gh_hypercall_bell_send(irqfd->ghrsc->capid, 1, NULL);
+			if (ret)
+				pr_err_ratelimited("Failed to inject interrupt %d: %d\n",
+						irqfd->ticket.label, ret);
+		} else
+			pr_err_ratelimited("Premature injection of interrupt\n");
+	}
+
+	return 0;
+}
+
+static void irqfd_ptable_queue_proc(struct file *file, wait_queue_head_t *wqh, poll_table *pt)
+{
+	struct gh_irqfd *irq_ctx = container_of(pt, struct gh_irqfd, pt);
+
+	add_wait_queue(wqh, &irq_ctx->wait);
+}
+
+static bool gh_irqfd_populate(struct gh_vm_resource_ticket *ticket, struct gh_resource *ghrsc)
+{
+	struct gh_irqfd *irqfd = container_of(ticket, struct gh_irqfd, ticket);
+	int ret;
+
+	if (irqfd->ghrsc) {
+		pr_warn("irqfd%d already got a Gunyah resource. Check if multiple resources with same label were configured.\n",
+			irqfd->ticket.label);
+		return false;
+	}
+
+	irqfd->ghrsc = ghrsc;
+	if (irqfd->level) {
+		/* Configure the bell to trigger when bit 0 is asserted (see
+		 * irq_wakeup) and for bell to automatically clear bit 0 once
+		 * received by the VM (ack_mask).  need to make sure bit 0 is cleared right away,
+		 * otherwise the line will never be deasserted. Emulating edge
+		 * trigger interrupt does not need to set either mask
+		 * because irq is listed only once per gh_hypercall_bell_send
+		 */
+		ret = gh_hypercall_bell_set_mask(irqfd->ghrsc->capid, 1, 1);
+		if (ret)
+			pr_warn("irq %d couldn't be set as level triggered. Might cause IRQ storm if asserted\n",
+				irqfd->ticket.label);
+	}
+
+	return true;
+}
+
+static void gh_irqfd_unpopulate(struct gh_vm_resource_ticket *ticket, struct gh_resource *ghrsc)
+{
+	struct gh_irqfd *irqfd = container_of(ticket, struct gh_irqfd, ticket);
+	u64 cnt;
+
+	eventfd_ctx_remove_wait_queue(irqfd->ctx, &irqfd->wait, &cnt);
+}
+
+static long gh_irqfd_bind(struct gh_vm_function_instance *f)
+{
+	struct gh_fn_irqfd_arg *args = f->argp;
+	struct gh_irqfd *irqfd;
+	__poll_t events;
+	struct fd fd;
+	long r;
+
+	if (f->arg_size != sizeof(*args))
+		return -EINVAL;
+
+	/* All other flag bits are reserved for future use */
+	if (args->flags & ~GH_IRQFD_FLAGS_LEVEL)
+		return -EINVAL;
+
+	irqfd = kzalloc(sizeof(*irqfd), GFP_KERNEL);
+	if (!irqfd)
+		return -ENOMEM;
+
+	irqfd->f = f;
+	f->data = irqfd;
+
+	fd = fdget(args->fd);
+	if (!fd.file) {
+		kfree(irqfd);
+		return -EBADF;
+	}
+
+	irqfd->ctx = eventfd_ctx_fileget(fd.file);
+	if (IS_ERR(irqfd->ctx)) {
+		r = PTR_ERR(irqfd->ctx);
+		goto err_fdput;
+	}
+
+	if (args->flags & GH_IRQFD_FLAGS_LEVEL)
+		irqfd->level = true;
+
+	init_waitqueue_func_entry(&irqfd->wait, irqfd_wakeup);
+	init_poll_funcptr(&irqfd->pt, irqfd_ptable_queue_proc);
+
+	irqfd->ticket.resource_type = GH_RESOURCE_TYPE_BELL_TX;
+	irqfd->ticket.label = args->label;
+	irqfd->ticket.owner = THIS_MODULE;
+	irqfd->ticket.populate = gh_irqfd_populate;
+	irqfd->ticket.unpopulate = gh_irqfd_unpopulate;
+
+	r = gh_vm_add_resource_ticket(f->ghvm, &irqfd->ticket);
+	if (r)
+		goto err_ctx;
+
+	events = vfs_poll(fd.file, &irqfd->pt);
+	if (events & EPOLLIN)
+		pr_warn("Premature injection of interrupt\n");
+	fdput(fd);
+
+	return 0;
+err_ctx:
+	eventfd_ctx_put(irqfd->ctx);
+err_fdput:
+	fdput(fd);
+	kfree(irqfd);
+	return r;
+}
+
+static void gh_irqfd_unbind(struct gh_vm_function_instance *f)
+{
+	struct gh_irqfd *irqfd = f->data;
+
+	gh_vm_remove_resource_ticket(irqfd->f->ghvm, &irqfd->ticket);
+	eventfd_ctx_put(irqfd->ctx);
+	kfree(irqfd);
+}
+
+static bool gh_irqfd_compare(const struct gh_vm_function_instance *f,
+				const void *arg, size_t size)
+{
+	const struct gh_fn_irqfd_arg *instance = f->argp,
+					 *other = arg;
+
+	if (sizeof(*other) != size)
+		return false;
+
+	return instance->label == other->label;
+}
+
+DECLARE_GH_VM_FUNCTION_INIT(irqfd, GH_FN_IRQFD, 2, gh_irqfd_bind, gh_irqfd_unbind,
+				gh_irqfd_compare);
+MODULE_DESCRIPTION("Gunyah irqfd VM Function");
+MODULE_LICENSE("GPL");
diff --git a/drivers/virt/gunyah/gunyah_platform_hooks.c b/drivers/virt/gunyah/gunyah_platform_hooks.c
new file mode 100644
index 0000000..905515b
--- /dev/null
+++ b/drivers/virt/gunyah/gunyah_platform_hooks.c
@@ -0,0 +1,80 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+#include <linux/module.h>
+#include <linux/rwsem.h>
+#include <linux/gunyah_rsc_mgr.h>
+
+#include "rsc_mgr.h"
+
+static const struct gh_rm_platform_ops *rm_platform_ops;
+static DECLARE_RWSEM(rm_platform_ops_lock);
+
+int gh_rm_platform_pre_mem_share(struct gh_rm *rm, struct gh_rm_mem_parcel *mem_parcel)
+{
+	int ret = 0;
+
+	down_read(&rm_platform_ops_lock);
+	if (rm_platform_ops && rm_platform_ops->pre_mem_share)
+		ret = rm_platform_ops->pre_mem_share(rm, mem_parcel);
+	up_read(&rm_platform_ops_lock);
+	return ret;
+}
+EXPORT_SYMBOL_GPL(gh_rm_platform_pre_mem_share);
+
+int gh_rm_platform_post_mem_reclaim(struct gh_rm *rm, struct gh_rm_mem_parcel *mem_parcel)
+{
+	int ret = 0;
+
+	down_read(&rm_platform_ops_lock);
+	if (rm_platform_ops && rm_platform_ops->post_mem_reclaim)
+		ret = rm_platform_ops->post_mem_reclaim(rm, mem_parcel);
+	up_read(&rm_platform_ops_lock);
+	return ret;
+}
+EXPORT_SYMBOL_GPL(gh_rm_platform_post_mem_reclaim);
+
+int gh_rm_register_platform_ops(const struct gh_rm_platform_ops *platform_ops)
+{
+	int ret = 0;
+
+	down_write(&rm_platform_ops_lock);
+	if (!rm_platform_ops)
+		rm_platform_ops = platform_ops;
+	else
+		ret = -EEXIST;
+	up_write(&rm_platform_ops_lock);
+	return ret;
+}
+EXPORT_SYMBOL_GPL(gh_rm_register_platform_ops);
+
+void gh_rm_unregister_platform_ops(const struct gh_rm_platform_ops *platform_ops)
+{
+	down_write(&rm_platform_ops_lock);
+	if (rm_platform_ops == platform_ops)
+		rm_platform_ops = NULL;
+	up_write(&rm_platform_ops_lock);
+}
+EXPORT_SYMBOL_GPL(gh_rm_unregister_platform_ops);
+
+static void _devm_gh_rm_unregister_platform_ops(void *data)
+{
+	gh_rm_unregister_platform_ops((const struct gh_rm_platform_ops *)data);
+}
+
+int devm_gh_rm_register_platform_ops(struct device *dev, const struct gh_rm_platform_ops *ops)
+{
+	int ret;
+
+	ret = gh_rm_register_platform_ops(ops);
+	if (ret)
+		return ret;
+
+	return devm_add_action(dev, _devm_gh_rm_unregister_platform_ops, (void *)ops);
+}
+EXPORT_SYMBOL_GPL(devm_gh_rm_register_platform_ops);
+
+MODULE_LICENSE("GPL");
+MODULE_DESCRIPTION("Gunyah Platform Hooks");
diff --git a/drivers/virt/gunyah/gunyah_qcom.c b/drivers/virt/gunyah/gunyah_qcom.c
new file mode 100644
index 0000000..be5363f
--- /dev/null
+++ b/drivers/virt/gunyah/gunyah_qcom.c
@@ -0,0 +1,153 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+#include <linux/arm-smccc.h>
+#include <linux/gunyah_rsc_mgr.h>
+#include <linux/module.h>
+#include <linux/qcom_scm.h>
+#include <linux/types.h>
+#include <linux/uuid.h>
+
+#define QCOM_SCM_RM_MANAGED_VMID	0x3A
+#define QCOM_SCM_MAX_MANAGED_VMID	0x3F
+
+static int qcom_scm_gh_rm_pre_mem_share(void *rm, struct gh_rm_mem_parcel *mem_parcel)
+{
+	struct qcom_scm_vmperm *new_perms;
+	u64 src, src_cpy;
+	int ret = 0, i, n;
+	u16 vmid;
+
+	new_perms = kcalloc(mem_parcel->n_acl_entries, sizeof(*new_perms), GFP_KERNEL);
+	if (!new_perms)
+		return -ENOMEM;
+
+	for (n = 0; n < mem_parcel->n_acl_entries; n++) {
+		vmid = le16_to_cpu(mem_parcel->acl_entries[n].vmid);
+		if (vmid <= QCOM_SCM_MAX_MANAGED_VMID)
+			new_perms[n].vmid = vmid;
+		else
+			new_perms[n].vmid = QCOM_SCM_RM_MANAGED_VMID;
+		if (mem_parcel->acl_entries[n].perms & GH_RM_ACL_X)
+			new_perms[n].perm |= QCOM_SCM_PERM_EXEC;
+		if (mem_parcel->acl_entries[n].perms & GH_RM_ACL_W)
+			new_perms[n].perm |= QCOM_SCM_PERM_WRITE;
+		if (mem_parcel->acl_entries[n].perms & GH_RM_ACL_R)
+			new_perms[n].perm |= QCOM_SCM_PERM_READ;
+	}
+
+	src = BIT_ULL(QCOM_SCM_VMID_HLOS);
+
+	for (i = 0; i < mem_parcel->n_mem_entries; i++) {
+		src_cpy = src;
+		ret = qcom_scm_assign_mem(le64_to_cpu(mem_parcel->mem_entries[i].phys_addr),
+						le64_to_cpu(mem_parcel->mem_entries[i].size),
+						&src_cpy, new_perms, mem_parcel->n_acl_entries);
+		if (ret)
+			break;
+	}
+
+	if (!ret)
+		goto out;
+
+	src = 0;
+	for (n = 0; n < mem_parcel->n_acl_entries; n++) {
+		vmid = le16_to_cpu(mem_parcel->acl_entries[n].vmid);
+		if (vmid <= QCOM_SCM_MAX_MANAGED_VMID)
+			src |= BIT_ULL(vmid);
+		else
+			src |= BIT_ULL(QCOM_SCM_RM_MANAGED_VMID);
+	}
+
+	new_perms[0].vmid = QCOM_SCM_VMID_HLOS;
+
+	for (i--; i >= 0; i--) {
+		src_cpy = src;
+		WARN_ON_ONCE(qcom_scm_assign_mem(
+				le64_to_cpu(mem_parcel->mem_entries[i].phys_addr),
+				le64_to_cpu(mem_parcel->mem_entries[i].size),
+				&src_cpy, new_perms, 1));
+	}
+
+out:
+	kfree(new_perms);
+	return ret;
+}
+
+static int qcom_scm_gh_rm_post_mem_reclaim(void *rm, struct gh_rm_mem_parcel *mem_parcel)
+{
+	struct qcom_scm_vmperm new_perms;
+	u64 src = 0, src_cpy;
+	int ret = 0, i, n;
+	u16 vmid;
+
+	new_perms.vmid = QCOM_SCM_VMID_HLOS;
+	new_perms.perm = QCOM_SCM_PERM_EXEC | QCOM_SCM_PERM_WRITE | QCOM_SCM_PERM_READ;
+
+	for (n = 0; n < mem_parcel->n_acl_entries; n++) {
+		vmid = le16_to_cpu(mem_parcel->acl_entries[n].vmid);
+		if (vmid <= QCOM_SCM_MAX_MANAGED_VMID)
+			src |= (1ull << vmid);
+		else
+			src |= (1ull << QCOM_SCM_RM_MANAGED_VMID);
+	}
+
+	for (i = 0; i < mem_parcel->n_mem_entries; i++) {
+		src_cpy = src;
+		ret = qcom_scm_assign_mem(le64_to_cpu(mem_parcel->mem_entries[i].phys_addr),
+						le64_to_cpu(mem_parcel->mem_entries[i].size),
+						&src_cpy, &new_perms, 1);
+		WARN_ON_ONCE(ret);
+	}
+
+	return ret;
+}
+
+static struct gh_rm_platform_ops qcom_scm_gh_rm_platform_ops = {
+	.pre_mem_share = qcom_scm_gh_rm_pre_mem_share,
+	.post_mem_reclaim = qcom_scm_gh_rm_post_mem_reclaim,
+};
+
+/* {19bd54bd-0b37-571b-946f-609b54539de6} */
+static const uuid_t QCOM_EXT_UUID =
+	UUID_INIT(0x19bd54bd, 0x0b37, 0x571b, 0x94, 0x6f, 0x60, 0x9b, 0x54, 0x53, 0x9d, 0xe6);
+
+#define GH_QCOM_EXT_CALL_UUID_ID	ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL, ARM_SMCCC_SMC_32, \
+							   ARM_SMCCC_OWNER_VENDOR_HYP, 0x3f01)
+
+static bool gh_has_qcom_extensions(void)
+{
+	struct arm_smccc_res res;
+	uuid_t uuid;
+	u32 *up;
+
+	arm_smccc_1_1_smc(GH_QCOM_EXT_CALL_UUID_ID, &res);
+
+	up = (u32 *)&uuid.b[0];
+	up[0] = lower_32_bits(res.a0);
+	up[1] = lower_32_bits(res.a1);
+	up[2] = lower_32_bits(res.a2);
+	up[3] = lower_32_bits(res.a3);
+
+	return uuid_equal(&uuid, &QCOM_EXT_UUID);
+}
+
+static int __init qcom_gh_platform_hooks_register(void)
+{
+	if (!gh_has_qcom_extensions())
+		return -ENODEV;
+
+	return gh_rm_register_platform_ops(&qcom_scm_gh_rm_platform_ops);
+}
+
+static void __exit qcom_gh_platform_hooks_unregister(void)
+{
+	gh_rm_unregister_platform_ops(&qcom_scm_gh_rm_platform_ops);
+}
+
+module_init(qcom_gh_platform_hooks_register);
+module_exit(qcom_gh_platform_hooks_unregister);
+MODULE_DESCRIPTION("Qualcomm Technologies, Inc. Platform Hooks for Gunyah");
+MODULE_LICENSE("GPL");
diff --git a/drivers/virt/gunyah/gunyah_vcpu.c b/drivers/virt/gunyah/gunyah_vcpu.c
new file mode 100644
index 0000000..82a0cbf
--- /dev/null
+++ b/drivers/virt/gunyah/gunyah_vcpu.c
@@ -0,0 +1,470 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+#include <linux/anon_inodes.h>
+#include <linux/file.h>
+#include <linux/gunyah.h>
+#include <linux/gunyah_vm_mgr.h>
+#include <linux/interrupt.h>
+#include <linux/kref.h>
+#include <linux/mm.h>
+#include <linux/module.h>
+#include <linux/types.h>
+#include <linux/wait.h>
+
+#include "vm_mgr.h"
+
+#include <uapi/linux/gunyah.h>
+
+#define MAX_VCPU_NAME		20 /* gh-vcpu:u32_max+NUL */
+
+struct gh_vcpu {
+	struct gh_vm_function_instance *f;
+	struct gh_resource *rsc;
+	struct mutex run_lock;
+	/* Track why vcpu_run left last time around. */
+	enum {
+		GH_VCPU_UNKNOWN = 0,
+		GH_VCPU_READY,
+		GH_VCPU_MMIO_READ,
+		GH_VCPU_SYSTEM_DOWN,
+	} state;
+	u8 mmio_read_len;
+	struct gh_vcpu_run *vcpu_run;
+	struct completion ready;
+	struct gh_vm *ghvm;
+
+	struct notifier_block nb;
+	struct gh_vm_resource_ticket ticket;
+	struct kref kref;
+};
+
+static void vcpu_release(struct kref *kref)
+{
+	struct gh_vcpu *vcpu = container_of(kref, struct gh_vcpu, kref);
+
+	free_page((unsigned long)vcpu->vcpu_run);
+	kfree(vcpu);
+}
+
+/*
+ * When hypervisor allows us to schedule vCPU again, it gives us an interrupt
+ */
+static irqreturn_t gh_vcpu_irq_handler(int irq, void *data)
+{
+	struct gh_vcpu *vcpu = data;
+
+	complete(&vcpu->ready);
+	return IRQ_HANDLED;
+}
+
+static bool gh_handle_mmio(struct gh_vcpu *vcpu,
+				struct gh_hypercall_vcpu_run_resp *vcpu_run_resp)
+{
+	int ret = 0;
+	u64 addr = vcpu_run_resp->state_data[0],
+	    len  = vcpu_run_resp->state_data[1],
+	    data = vcpu_run_resp->state_data[2];
+
+	if (WARN_ON(len > sizeof(u64)))
+		len = sizeof(u64);
+
+	if (vcpu_run_resp->state == GH_VCPU_ADDRSPACE_VMMIO_READ) {
+		vcpu->vcpu_run->mmio.is_write = 0;
+		/* Record that we need to give vCPU user's supplied value next gh_vcpu_run() */
+		vcpu->state = GH_VCPU_MMIO_READ;
+		vcpu->mmio_read_len = len;
+	} else { /* GH_VCPU_ADDRSPACE_VMMIO_WRITE */
+		/* Try internal handlers first */
+		ret = gh_vm_mmio_write(vcpu->f->ghvm, addr, len, data);
+		if (!ret)
+			return true;
+
+		/* Give userspace the info */
+		vcpu->vcpu_run->mmio.is_write = 1;
+		memcpy(vcpu->vcpu_run->mmio.data, &data, len);
+	}
+
+	vcpu->vcpu_run->mmio.phys_addr = addr;
+	vcpu->vcpu_run->mmio.len = len;
+	vcpu->vcpu_run->exit_reason = GH_VCPU_EXIT_MMIO;
+
+	return false;
+}
+
+static int gh_vcpu_rm_notification(struct notifier_block *nb, unsigned long action, void *data)
+{
+	struct gh_vcpu *vcpu = container_of(nb, struct gh_vcpu, nb);
+	struct gh_rm_vm_exited_payload *exit_payload = data;
+
+	if (action == GH_RM_NOTIFICATION_VM_EXITED &&
+		le16_to_cpu(exit_payload->vmid) == vcpu->ghvm->vmid)
+		complete(&vcpu->ready);
+
+	return NOTIFY_OK;
+}
+
+static inline enum gh_vm_status remap_vm_status(enum gh_rm_vm_status rm_status)
+{
+	switch (rm_status) {
+	case GH_RM_VM_STATUS_INIT_FAILED:
+		return GH_VM_STATUS_LOAD_FAILED;
+	case GH_RM_VM_STATUS_EXITED:
+		return GH_VM_STATUS_EXITED;
+	default:
+		return GH_VM_STATUS_CRASHED;
+	}
+}
+
+/**
+ * gh_vcpu_check_system() - Check whether VM as a whole is running
+ * @vcpu: Pointer to gh_vcpu
+ *
+ * Returns true if the VM is alive.
+ * Returns false if the vCPU is the VM is not alive (can only be that VM is shutting down).
+ */
+static bool gh_vcpu_check_system(struct gh_vcpu *vcpu)
+	__must_hold(&vcpu->run_lock)
+{
+	bool ret = true;
+
+	down_read(&vcpu->ghvm->status_lock);
+	if (likely(vcpu->ghvm->vm_status == GH_RM_VM_STATUS_RUNNING))
+		goto out;
+
+	vcpu->vcpu_run->status.status = remap_vm_status(vcpu->ghvm->vm_status);
+	vcpu->vcpu_run->status.exit_info = vcpu->ghvm->exit_info;
+	vcpu->vcpu_run->exit_reason = GH_VCPU_EXIT_STATUS;
+	vcpu->state = GH_VCPU_SYSTEM_DOWN;
+	ret = false;
+out:
+	up_read(&vcpu->ghvm->status_lock);
+	return ret;
+}
+
+/**
+ * gh_vcpu_run() - Request Gunyah to begin scheduling this vCPU.
+ * @vcpu: The client descriptor that was obtained via gh_vcpu_alloc()
+ */
+static int gh_vcpu_run(struct gh_vcpu *vcpu)
+{
+	struct gh_hypercall_vcpu_run_resp vcpu_run_resp;
+	u64 state_data[3] = { 0 };
+	enum gh_error gh_error;
+	int ret = 0;
+
+	if (!vcpu->f)
+		return -ENODEV;
+
+	if (mutex_lock_interruptible(&vcpu->run_lock))
+		return -ERESTARTSYS;
+
+	if (!vcpu->rsc) {
+		ret = -ENODEV;
+		goto out;
+	}
+
+	switch (vcpu->state) {
+	case GH_VCPU_UNKNOWN:
+		if (vcpu->ghvm->vm_status != GH_RM_VM_STATUS_RUNNING) {
+			/* Check if VM is up. If VM is starting, will block until VM is fully up
+			 * since that thread does down_write.
+			 */
+			if (!gh_vcpu_check_system(vcpu))
+				goto out;
+		}
+		vcpu->state = GH_VCPU_READY;
+		break;
+	case GH_VCPU_MMIO_READ:
+		if (unlikely(vcpu->mmio_read_len > sizeof(state_data[0])))
+			vcpu->mmio_read_len = sizeof(state_data[0]);
+		memcpy(&state_data[0], vcpu->vcpu_run->mmio.data, vcpu->mmio_read_len);
+		vcpu->state = GH_VCPU_READY;
+		break;
+	case GH_VCPU_SYSTEM_DOWN:
+		goto out;
+	default:
+		break;
+	}
+
+	while (!ret && !signal_pending(current)) {
+		if (vcpu->vcpu_run->immediate_exit) {
+			ret = -EINTR;
+			goto out;
+		}
+
+		gh_error = gh_hypercall_vcpu_run(vcpu->rsc->capid, state_data, &vcpu_run_resp);
+		if (gh_error == GH_ERROR_OK) {
+			switch (vcpu_run_resp.state) {
+			case GH_VCPU_STATE_READY:
+				if (need_resched())
+					schedule();
+				break;
+			case GH_VCPU_STATE_POWERED_OFF:
+				/* vcpu might be off because the VM is shut down.
+				 * If so, it won't ever run again: exit back to user
+				 */
+				if (!gh_vcpu_check_system(vcpu))
+					goto out;
+				/* Otherwise, another vcpu will turn it on (e.g. by PSCI)
+				 * and hyp sends an interrupt to wake Linux up.
+				 */
+				fallthrough;
+			case GH_VCPU_STATE_EXPECTS_WAKEUP:
+				ret = wait_for_completion_interruptible(&vcpu->ready);
+				/* reinitialize completion before next hypercall. If we reinitialize
+				 * after the hypercall, interrupt may have already come before
+				 * re-initializing the completion and then end up waiting for
+				 * event that already happened.
+				 */
+				reinit_completion(&vcpu->ready);
+				/* Check system status again. Completion might've
+				 * come from gh_vcpu_rm_notification
+				 */
+				if (!ret && !gh_vcpu_check_system(vcpu))
+					goto out;
+				break;
+			case GH_VCPU_STATE_BLOCKED:
+				schedule();
+				break;
+			case GH_VCPU_ADDRSPACE_VMMIO_READ:
+			case GH_VCPU_ADDRSPACE_VMMIO_WRITE:
+				if (!gh_handle_mmio(vcpu, &vcpu_run_resp))
+					goto out;
+				break;
+			default:
+				pr_warn_ratelimited("Unknown vCPU state: %llx\n",
+							vcpu_run_resp.sized_state);
+				schedule();
+				break;
+			}
+		} else if (gh_error == GH_ERROR_RETRY) {
+			schedule();
+		} else {
+			ret = gh_error_remap(gh_error);
+		}
+	}
+
+out:
+	mutex_unlock(&vcpu->run_lock);
+
+	if (signal_pending(current))
+		return -ERESTARTSYS;
+
+	return ret;
+}
+
+static long gh_vcpu_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
+{
+	struct gh_vcpu *vcpu = filp->private_data;
+	long ret = -EINVAL;
+
+	switch (cmd) {
+	case GH_VCPU_RUN:
+		ret = gh_vcpu_run(vcpu);
+		break;
+	case GH_VCPU_MMAP_SIZE:
+		ret = PAGE_SIZE;
+		break;
+	default:
+		break;
+	}
+	return ret;
+}
+
+static int gh_vcpu_release(struct inode *inode, struct file *filp)
+{
+	struct gh_vcpu *vcpu = filp->private_data;
+
+	gh_vm_put(vcpu->ghvm);
+	kref_put(&vcpu->kref, vcpu_release);
+	return 0;
+}
+
+static vm_fault_t gh_vcpu_fault(struct vm_fault *vmf)
+{
+	struct gh_vcpu *vcpu = vmf->vma->vm_file->private_data;
+	struct page *page = NULL;
+
+	if (vmf->pgoff == 0)
+		page = virt_to_page(vcpu->vcpu_run);
+
+	get_page(page);
+	vmf->page = page;
+	return 0;
+}
+
+static const struct vm_operations_struct gh_vcpu_ops = {
+	.fault = gh_vcpu_fault,
+};
+
+static int gh_vcpu_mmap(struct file *file, struct vm_area_struct *vma)
+{
+	vma->vm_ops = &gh_vcpu_ops;
+	return 0;
+}
+
+static const struct file_operations gh_vcpu_fops = {
+	.owner = THIS_MODULE,
+	.unlocked_ioctl = gh_vcpu_ioctl,
+	.release = gh_vcpu_release,
+	.llseek = noop_llseek,
+	.mmap = gh_vcpu_mmap,
+};
+
+static bool gh_vcpu_populate(struct gh_vm_resource_ticket *ticket, struct gh_resource *ghrsc)
+{
+	struct gh_vcpu *vcpu = container_of(ticket, struct gh_vcpu, ticket);
+	int ret;
+
+	mutex_lock(&vcpu->run_lock);
+	if (vcpu->rsc) {
+		pr_warn("vcpu%d already got a Gunyah resource. Check if multiple resources with same label were configured.\n",
+			vcpu->ticket.label);
+		ret = -EEXIST;
+		goto out;
+	}
+
+	vcpu->rsc = ghrsc;
+	init_completion(&vcpu->ready);
+
+	ret = request_irq(vcpu->rsc->irq, gh_vcpu_irq_handler, IRQF_TRIGGER_RISING, "gh_vcpu",
+			vcpu);
+	if (ret)
+		pr_warn("Failed to request vcpu irq %d: %d", vcpu->rsc->irq, ret);
+
+	enable_irq_wake(vcpu->rsc->irq);
+
+out:
+	mutex_unlock(&vcpu->run_lock);
+	return !ret;
+}
+
+static void gh_vcpu_unpopulate(struct gh_vm_resource_ticket *ticket,
+				   struct gh_resource *ghrsc)
+{
+	struct gh_vcpu *vcpu = container_of(ticket, struct gh_vcpu, ticket);
+
+	vcpu->vcpu_run->immediate_exit = true;
+	complete_all(&vcpu->ready);
+	mutex_lock(&vcpu->run_lock);
+	free_irq(vcpu->rsc->irq, vcpu);
+	vcpu->rsc = NULL;
+	mutex_unlock(&vcpu->run_lock);
+}
+
+static long gh_vcpu_bind(struct gh_vm_function_instance *f)
+{
+	struct gh_fn_vcpu_arg *arg = f->argp;
+	struct gh_vcpu *vcpu;
+	char name[MAX_VCPU_NAME];
+	struct file *file;
+	struct page *page;
+	int fd;
+	long r;
+
+	if (f->arg_size != sizeof(*arg))
+		return -EINVAL;
+
+	vcpu = kzalloc(sizeof(*vcpu), GFP_KERNEL);
+	if (!vcpu)
+		return -ENOMEM;
+
+	vcpu->f = f;
+	f->data = vcpu;
+	mutex_init(&vcpu->run_lock);
+	kref_init(&vcpu->kref);
+
+	page = alloc_page(GFP_KERNEL | __GFP_ZERO);
+	if (!page) {
+		r = -ENOMEM;
+		goto err_destroy_vcpu;
+	}
+	vcpu->vcpu_run = page_address(page);
+
+	vcpu->ticket.resource_type = GH_RESOURCE_TYPE_VCPU;
+	vcpu->ticket.label = arg->id;
+	vcpu->ticket.owner = THIS_MODULE;
+	vcpu->ticket.populate = gh_vcpu_populate;
+	vcpu->ticket.unpopulate = gh_vcpu_unpopulate;
+
+	r = gh_vm_add_resource_ticket(f->ghvm, &vcpu->ticket);
+	if (r)
+		goto err_destroy_page;
+
+	if (!gh_vm_get(f->ghvm)) {
+		r = -ENODEV;
+		goto err_remove_resource_ticket;
+	}
+	vcpu->ghvm = f->ghvm;
+
+	vcpu->nb.notifier_call = gh_vcpu_rm_notification;
+	/* Ensure we run after the vm_mgr handles the notification and does
+	 * any necessary state changes. We wake up to check the new state.
+	 */
+	vcpu->nb.priority = -1;
+	r = gh_rm_notifier_register(f->rm, &vcpu->nb);
+	if (r)
+		goto err_put_gh_vm;
+
+	kref_get(&vcpu->kref);
+
+	fd = get_unused_fd_flags(O_CLOEXEC);
+	if (fd < 0) {
+		r = fd;
+		goto err_notifier;
+	}
+
+	snprintf(name, sizeof(name), "gh-vcpu:%u", vcpu->ticket.label);
+	file = anon_inode_getfile(name, &gh_vcpu_fops, vcpu, O_RDWR);
+	if (IS_ERR(file)) {
+		r = PTR_ERR(file);
+		goto err_put_fd;
+	}
+
+	fd_install(fd, file);
+
+	return fd;
+err_put_fd:
+	put_unused_fd(fd);
+err_notifier:
+	gh_rm_notifier_unregister(f->rm, &vcpu->nb);
+err_put_gh_vm:
+	gh_vm_put(vcpu->ghvm);
+err_remove_resource_ticket:
+	gh_vm_remove_resource_ticket(f->ghvm, &vcpu->ticket);
+err_destroy_page:
+	free_page((unsigned long)vcpu->vcpu_run);
+err_destroy_vcpu:
+	kfree(vcpu);
+	return r;
+}
+
+static void gh_vcpu_unbind(struct gh_vm_function_instance *f)
+{
+	struct gh_vcpu *vcpu = f->data;
+
+	gh_rm_notifier_unregister(f->rm, &vcpu->nb);
+	gh_vm_remove_resource_ticket(vcpu->f->ghvm, &vcpu->ticket);
+	vcpu->f = NULL;
+
+	kref_put(&vcpu->kref, vcpu_release);
+}
+
+static bool gh_vcpu_compare(const struct gh_vm_function_instance *f,
+				const void *arg, size_t size)
+{
+	const struct gh_fn_vcpu_arg *instance = f->argp,
+					 *other = arg;
+
+	if (sizeof(*other) != size)
+		return false;
+
+	return instance->id == other->id;
+}
+
+DECLARE_GH_VM_FUNCTION_INIT(vcpu, GH_FN_VCPU, 1, gh_vcpu_bind, gh_vcpu_unbind, gh_vcpu_compare);
+MODULE_DESCRIPTION("Gunyah vCPU Function");
+MODULE_LICENSE("GPL");
diff --git a/drivers/virt/gunyah/rsc_mgr.c b/drivers/virt/gunyah/rsc_mgr.c
new file mode 100644
index 0000000..ab29e76
--- /dev/null
+++ b/drivers/virt/gunyah/rsc_mgr.c
@@ -0,0 +1,954 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+#include <linux/of.h>
+#include <linux/slab.h>
+#include <linux/mutex.h>
+#include <linux/sched.h>
+#include <linux/gunyah.h>
+#include <linux/module.h>
+#include <linux/of_irq.h>
+#include <linux/notifier.h>
+#include <linux/workqueue.h>
+#include <linux/completion.h>
+#include <linux/auxiliary_bus.h>
+#include <linux/gunyah_rsc_mgr.h>
+#include <linux/platform_device.h>
+#include <linux/miscdevice.h>
+
+#include <asm/gunyah.h>
+
+#include "rsc_mgr.h"
+#include "vm_mgr.h"
+
+#define RM_RPC_API_VERSION_MASK		GENMASK(3, 0)
+#define RM_RPC_HEADER_WORDS_MASK	GENMASK(7, 4)
+#define RM_RPC_API_VERSION		FIELD_PREP(RM_RPC_API_VERSION_MASK, 1)
+#define RM_RPC_HEADER_WORDS		FIELD_PREP(RM_RPC_HEADER_WORDS_MASK, \
+						(sizeof(struct gh_rm_rpc_hdr) / sizeof(u32)))
+#define RM_RPC_API			(RM_RPC_API_VERSION | RM_RPC_HEADER_WORDS)
+
+#define RM_RPC_TYPE_CONTINUATION	0x0
+#define RM_RPC_TYPE_REQUEST		0x1
+#define RM_RPC_TYPE_REPLY		0x2
+#define RM_RPC_TYPE_NOTIF		0x3
+#define RM_RPC_TYPE_MASK		GENMASK(1, 0)
+
+#define GH_RM_MAX_NUM_FRAGMENTS		62
+#define RM_RPC_FRAGMENTS_MASK		GENMASK(7, 2)
+
+struct gh_rm_rpc_hdr {
+	u8 api;
+	u8 type;
+	__le16 seq;
+	__le32 msg_id;
+} __packed;
+
+struct gh_rm_rpc_reply_hdr {
+	struct gh_rm_rpc_hdr hdr;
+	__le32 err_code; /* GH_RM_ERROR_* */
+} __packed;
+
+#define GH_RM_MAX_MSG_SIZE	(GH_MSGQ_MAX_MSG_SIZE - sizeof(struct gh_rm_rpc_hdr))
+
+/* RM Error codes */
+enum gh_rm_error {
+	GH_RM_ERROR_OK			= 0x0,
+	GH_RM_ERROR_UNIMPLEMENTED	= 0xFFFFFFFF,
+	GH_RM_ERROR_NOMEM		= 0x1,
+	GH_RM_ERROR_NORESOURCE		= 0x2,
+	GH_RM_ERROR_DENIED		= 0x3,
+	GH_RM_ERROR_INVALID		= 0x4,
+	GH_RM_ERROR_BUSY		= 0x5,
+	GH_RM_ERROR_ARGUMENT_INVALID	= 0x6,
+	GH_RM_ERROR_HANDLE_INVALID	= 0x7,
+	GH_RM_ERROR_VALIDATE_FAILED	= 0x8,
+	GH_RM_ERROR_MAP_FAILED		= 0x9,
+	GH_RM_ERROR_MEM_INVALID		= 0xA,
+	GH_RM_ERROR_MEM_INUSE		= 0xB,
+	GH_RM_ERROR_MEM_RELEASED	= 0xC,
+	GH_RM_ERROR_VMID_INVALID	= 0xD,
+	GH_RM_ERROR_LOOKUP_FAILED	= 0xE,
+	GH_RM_ERROR_IRQ_INVALID		= 0xF,
+	GH_RM_ERROR_IRQ_INUSE		= 0x10,
+	GH_RM_ERROR_IRQ_RELEASED	= 0x11,
+};
+
+/**
+ * struct gh_rm_connection - Represents a complete message from resource manager
+ * @payload: Combined payload of all the fragments (msg headers stripped off).
+ * @size: Size of the payload received so far.
+ * @msg_id: Message ID from the header.
+ * @type: RM_RPC_TYPE_REPLY or RM_RPC_TYPE_NOTIF.
+ * @num_fragments: total number of fragments expected to be received.
+ * @fragments_received: fragments received so far.
+ * @reply: Fields used for request/reply sequences
+ * @notification: Fields used for notifiations
+ */
+struct gh_rm_connection {
+	void *payload;
+	size_t size;
+	__le32 msg_id;
+	u8 type;
+
+	u8 num_fragments;
+	u8 fragments_received;
+
+	union {
+		/**
+		 * @ret: Linux return code, there was an error processing connection
+		 * @seq: Sequence ID for the main message.
+		 * @rm_error: For request/reply sequences with standard replies
+		 * @seq_done: Signals caller that the RM reply has been received
+		 */
+		struct {
+			int ret;
+			u16 seq;
+			enum gh_rm_error rm_error;
+			struct completion seq_done;
+		} reply;
+
+		/**
+		 * @rm: Pointer to the RM that launched the connection
+		 * @work: Triggered when all fragments of a notification received
+		 */
+		struct {
+			struct gh_rm *rm;
+			struct work_struct work;
+		} notification;
+	};
+};
+
+/**
+ * struct gh_rm - private data for communicating w/Gunyah resource manager
+ * @dev: pointer to RM platform device
+ * @tx_ghrsc: message queue resource to TX to RM
+ * @rx_ghrsc: message queue resource to RX from RM
+ * @msgq: mailbox instance of TX/RX resources above
+ * @msgq_client: mailbox client of above msgq
+ * @active_rx_connection: ongoing gh_rm_connection for which we're receiving fragments
+ * @last_tx_ret: return value of last mailbox tx
+ * @call_xarray: xarray to allocate & lookup sequence IDs for Request/Response flows
+ * @next_seq: next ID to allocate (for xa_alloc_cyclic)
+ * @cache: cache for allocating Tx messages
+ * @send_lock: synchronization to allow only one request to be sent at a time
+ * @nh: notifier chain for clients interested in RM notification messages
+ * @miscdev: /dev/gunyah
+ * @irq_domain: Domain to translate Gunyah hwirqs to Linux irqs
+ */
+struct gh_rm {
+	struct device *dev;
+	struct gh_resource tx_ghrsc;
+	struct gh_resource rx_ghrsc;
+	struct gh_msgq msgq;
+	struct mbox_client msgq_client;
+	struct gh_rm_connection *active_rx_connection;
+	int last_tx_ret;
+
+	struct xarray call_xarray;
+	u32 next_seq;
+
+	struct kmem_cache *cache;
+	struct mutex send_lock;
+	struct blocking_notifier_head nh;
+
+	struct auxiliary_device adev;
+	struct miscdevice miscdev;
+	struct irq_domain *irq_domain;
+};
+
+/**
+ * gh_rm_error_remap() - Remap Gunyah resource manager errors into a Linux error code
+ * @rm_error: "Standard" return value from Gunyah resource manager
+ */
+static inline int gh_rm_error_remap(enum gh_rm_error rm_error)
+{
+	switch (rm_error) {
+	case GH_RM_ERROR_OK:
+		return 0;
+	case GH_RM_ERROR_UNIMPLEMENTED:
+		return -EOPNOTSUPP;
+	case GH_RM_ERROR_NOMEM:
+		return -ENOMEM;
+	case GH_RM_ERROR_NORESOURCE:
+		return -ENODEV;
+	case GH_RM_ERROR_DENIED:
+		return -EPERM;
+	case GH_RM_ERROR_BUSY:
+		return -EBUSY;
+	case GH_RM_ERROR_INVALID:
+	case GH_RM_ERROR_ARGUMENT_INVALID:
+	case GH_RM_ERROR_HANDLE_INVALID:
+	case GH_RM_ERROR_VALIDATE_FAILED:
+	case GH_RM_ERROR_MAP_FAILED:
+	case GH_RM_ERROR_MEM_INVALID:
+	case GH_RM_ERROR_MEM_INUSE:
+	case GH_RM_ERROR_MEM_RELEASED:
+	case GH_RM_ERROR_VMID_INVALID:
+	case GH_RM_ERROR_LOOKUP_FAILED:
+	case GH_RM_ERROR_IRQ_INVALID:
+	case GH_RM_ERROR_IRQ_INUSE:
+	case GH_RM_ERROR_IRQ_RELEASED:
+		return -EINVAL;
+	default:
+		return -EBADMSG;
+	}
+}
+
+struct gh_irq_chip_data {
+	u32 gh_virq;
+};
+
+static struct irq_chip gh_rm_irq_chip = {
+	.name			= "Gunyah",
+	.irq_enable		= irq_chip_enable_parent,
+	.irq_disable		= irq_chip_disable_parent,
+	.irq_ack		= irq_chip_ack_parent,
+	.irq_mask		= irq_chip_mask_parent,
+	.irq_mask_ack		= irq_chip_mask_ack_parent,
+	.irq_unmask		= irq_chip_unmask_parent,
+	.irq_eoi		= irq_chip_eoi_parent,
+	.irq_set_affinity	= irq_chip_set_affinity_parent,
+	.irq_set_type		= irq_chip_set_type_parent,
+	.irq_set_wake		= irq_chip_set_wake_parent,
+	.irq_set_vcpu_affinity	= irq_chip_set_vcpu_affinity_parent,
+	.irq_retrigger		= irq_chip_retrigger_hierarchy,
+	.irq_get_irqchip_state	= irq_chip_get_parent_state,
+	.irq_set_irqchip_state	= irq_chip_set_parent_state,
+	.flags			= IRQCHIP_SET_TYPE_MASKED |
+				  IRQCHIP_SKIP_SET_WAKE |
+				  IRQCHIP_MASK_ON_SUSPEND,
+};
+
+static int gh_rm_irq_domain_alloc(struct irq_domain *d, unsigned int virq, unsigned int nr_irqs,
+				 void *arg)
+{
+	struct gh_irq_chip_data *chip_data, *spec = arg;
+	struct irq_fwspec parent_fwspec = {};
+	struct gh_rm *rm = d->host_data;
+	u32 gh_virq = spec->gh_virq;
+	int ret;
+
+	if (nr_irqs != 1)
+		return -EINVAL;
+
+	chip_data = kzalloc(sizeof(*chip_data), GFP_KERNEL);
+	if (!chip_data)
+		return -ENOMEM;
+
+	chip_data->gh_virq = gh_virq;
+
+	ret = irq_domain_set_hwirq_and_chip(d, virq, chip_data->gh_virq, &gh_rm_irq_chip,
+						chip_data);
+	if (ret)
+		goto err_free_irq_data;
+
+	parent_fwspec.fwnode = d->parent->fwnode;
+	ret = arch_gh_fill_irq_fwspec_params(chip_data->gh_virq, &parent_fwspec);
+	if (ret) {
+		dev_err(rm->dev, "virq translation failed %u: %d\n", chip_data->gh_virq, ret);
+		goto err_free_irq_data;
+	}
+
+	ret = irq_domain_alloc_irqs_parent(d, virq, nr_irqs, &parent_fwspec);
+	if (ret)
+		goto err_free_irq_data;
+
+	return ret;
+err_free_irq_data:
+	kfree(chip_data);
+	return ret;
+}
+
+static void gh_rm_irq_domain_free_single(struct irq_domain *d, unsigned int virq)
+{
+	struct irq_data *irq_data;
+
+	irq_data = irq_domain_get_irq_data(d, virq);
+	if (!irq_data)
+		return;
+
+	kfree(irq_data->chip_data);
+	irq_data->chip_data = NULL;
+}
+
+static void gh_rm_irq_domain_free(struct irq_domain *d, unsigned int virq, unsigned int nr_irqs)
+{
+	unsigned int i;
+
+	for (i = 0; i < nr_irqs; i++)
+		gh_rm_irq_domain_free_single(d, virq);
+}
+
+static const struct irq_domain_ops gh_rm_irq_domain_ops = {
+	.alloc		= gh_rm_irq_domain_alloc,
+	.free		= gh_rm_irq_domain_free,
+};
+
+struct gh_resource *gh_rm_alloc_resource(struct gh_rm *rm, struct gh_rm_hyp_resource *hyp_resource)
+{
+	struct gh_resource *ghrsc;
+	int ret;
+
+	ghrsc = kzalloc(sizeof(*ghrsc), GFP_KERNEL);
+	if (!ghrsc)
+		return NULL;
+
+	ghrsc->type = hyp_resource->type;
+	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) {
+		struct gh_irq_chip_data irq_data = {
+			.gh_virq = le32_to_cpu(hyp_resource->virq),
+		};
+
+		ret = irq_domain_alloc_irqs(rm->irq_domain, 1, NUMA_NO_NODE, &irq_data);
+		if (ret < 0) {
+			dev_err(rm->dev,
+				"Failed to allocate interrupt for resource %d label: %d: %d\n",
+				ghrsc->type, ghrsc->rm_label, ret);
+			kfree(ghrsc);
+			return NULL;
+		} else {
+			ghrsc->irq = ret;
+		}
+	}
+
+	return ghrsc;
+}
+
+void gh_rm_free_resource(struct gh_resource *ghrsc)
+{
+	irq_dispose_mapping(ghrsc->irq);
+	kfree(ghrsc);
+}
+
+static int gh_rm_init_connection_payload(struct gh_rm_connection *connection, void *msg,
+					size_t hdr_size, size_t msg_size)
+{
+	size_t max_buf_size, payload_size;
+	struct gh_rm_rpc_hdr *hdr = msg;
+
+	if (msg_size < hdr_size)
+		return -EINVAL;
+
+	payload_size = msg_size - hdr_size;
+
+	connection->num_fragments = FIELD_GET(RM_RPC_FRAGMENTS_MASK, hdr->type);
+	connection->fragments_received = 0;
+
+	/* There's not going to be any payload, no need to allocate buffer. */
+	if (!payload_size && !connection->num_fragments)
+		return 0;
+
+	if (connection->num_fragments > GH_RM_MAX_NUM_FRAGMENTS)
+		return -EINVAL;
+
+	max_buf_size = payload_size + (connection->num_fragments * GH_RM_MAX_MSG_SIZE);
+
+	connection->payload = kzalloc(max_buf_size, GFP_KERNEL);
+	if (!connection->payload)
+		return -ENOMEM;
+
+	memcpy(connection->payload, msg + hdr_size, payload_size);
+	connection->size = payload_size;
+	return 0;
+}
+
+static void gh_rm_abort_connection(struct gh_rm *rm)
+{
+	switch (rm->active_rx_connection->type) {
+	case RM_RPC_TYPE_REPLY:
+		rm->active_rx_connection->reply.ret = -EIO;
+		complete(&rm->active_rx_connection->reply.seq_done);
+		break;
+	case RM_RPC_TYPE_NOTIF:
+		fallthrough;
+	default:
+		kfree(rm->active_rx_connection->payload);
+		kfree(rm->active_rx_connection);
+	}
+
+	rm->active_rx_connection = NULL;
+}
+
+static void gh_rm_notif_work(struct work_struct *work)
+{
+	struct gh_rm_connection *connection = container_of(work, struct gh_rm_connection,
+								notification.work);
+	struct gh_rm *rm = connection->notification.rm;
+
+	blocking_notifier_call_chain(&rm->nh, le32_to_cpu(connection->msg_id), connection->payload);
+
+	put_device(rm->dev);
+	kfree(connection->payload);
+	kfree(connection);
+}
+
+static void gh_rm_process_notif(struct gh_rm *rm, void *msg, size_t msg_size)
+{
+	struct gh_rm_connection *connection;
+	struct gh_rm_rpc_hdr *hdr = msg;
+	int ret;
+
+	if (rm->active_rx_connection)
+		gh_rm_abort_connection(rm);
+
+	connection = kzalloc(sizeof(*connection), GFP_KERNEL);
+	if (!connection)
+		return;
+
+	connection->type = RM_RPC_TYPE_NOTIF;
+	connection->msg_id = hdr->msg_id;
+
+	get_device(rm->dev);
+	connection->notification.rm = rm;
+	INIT_WORK(&connection->notification.work, gh_rm_notif_work);
+
+	ret = gh_rm_init_connection_payload(connection, msg, sizeof(*hdr), msg_size);
+	if (ret) {
+		dev_err(rm->dev, "Failed to initialize connection for notification: %d\n", ret);
+		put_device(rm->dev);
+		kfree(connection);
+		return;
+	}
+
+	rm->active_rx_connection = connection;
+}
+
+static void gh_rm_process_reply(struct gh_rm *rm, void *msg, size_t msg_size)
+{
+	struct gh_rm_rpc_reply_hdr *reply_hdr = msg;
+	struct gh_rm_connection *connection;
+	u16 seq_id;
+
+	seq_id = le16_to_cpu(reply_hdr->hdr.seq);
+	connection = xa_load(&rm->call_xarray, seq_id);
+
+	if (!connection || connection->msg_id != reply_hdr->hdr.msg_id)
+		return;
+
+	if (rm->active_rx_connection)
+		gh_rm_abort_connection(rm);
+
+	if (gh_rm_init_connection_payload(connection, msg, sizeof(*reply_hdr), msg_size)) {
+		dev_err(rm->dev, "Failed to alloc connection buffer for sequence %d\n", seq_id);
+		/* Send connection complete and error the client. */
+		connection->reply.ret = -ENOMEM;
+		complete(&connection->reply.seq_done);
+		return;
+	}
+
+	connection->reply.rm_error = le32_to_cpu(reply_hdr->err_code);
+	rm->active_rx_connection = connection;
+}
+
+static void gh_rm_process_cont(struct gh_rm *rm, struct gh_rm_connection *connection,
+				void *msg, size_t msg_size)
+{
+	struct gh_rm_rpc_hdr *hdr = msg;
+	size_t payload_size = msg_size - sizeof(*hdr);
+
+	if (!rm->active_rx_connection)
+		return;
+
+	/*
+	 * hdr->fragments and hdr->msg_id preserves the value from first reply
+	 * or notif message. To detect mishandling, check it's still intact.
+	 */
+	if (connection->msg_id != hdr->msg_id ||
+		connection->num_fragments != FIELD_GET(RM_RPC_FRAGMENTS_MASK, hdr->type)) {
+		gh_rm_abort_connection(rm);
+		return;
+	}
+
+	memcpy(connection->payload + connection->size, msg + sizeof(*hdr), payload_size);
+	connection->size += payload_size;
+	connection->fragments_received++;
+}
+
+static void gh_rm_try_complete_connection(struct gh_rm *rm)
+{
+	struct gh_rm_connection *connection = rm->active_rx_connection;
+
+	if (!connection || connection->fragments_received != connection->num_fragments)
+		return;
+
+	switch (connection->type) {
+	case RM_RPC_TYPE_REPLY:
+		complete(&connection->reply.seq_done);
+		break;
+	case RM_RPC_TYPE_NOTIF:
+		schedule_work(&connection->notification.work);
+		break;
+	default:
+		dev_err_ratelimited(rm->dev, "Invalid message type (%u) received\n",
+					connection->type);
+		gh_rm_abort_connection(rm);
+		break;
+	}
+
+	rm->active_rx_connection = NULL;
+}
+
+static void gh_rm_msgq_rx_data(struct mbox_client *cl, void *mssg)
+{
+	struct gh_rm *rm = container_of(cl, struct gh_rm, msgq_client);
+	struct gh_msgq_rx_data *rx_data = mssg;
+	size_t msg_size = rx_data->length;
+	void *msg = rx_data->data;
+	struct gh_rm_rpc_hdr *hdr;
+
+	if (msg_size < sizeof(*hdr) || msg_size > GH_MSGQ_MAX_MSG_SIZE)
+		return;
+
+	hdr = msg;
+	if (hdr->api != RM_RPC_API) {
+		dev_err(rm->dev, "Unknown RM RPC API version: %x\n", hdr->api);
+		return;
+	}
+
+	switch (FIELD_GET(RM_RPC_TYPE_MASK, hdr->type)) {
+	case RM_RPC_TYPE_NOTIF:
+		gh_rm_process_notif(rm, msg, msg_size);
+		break;
+	case RM_RPC_TYPE_REPLY:
+		gh_rm_process_reply(rm, msg, msg_size);
+		break;
+	case RM_RPC_TYPE_CONTINUATION:
+		gh_rm_process_cont(rm, rm->active_rx_connection, msg, msg_size);
+		break;
+	default:
+		dev_err(rm->dev, "Invalid message type (%lu) received\n",
+			FIELD_GET(RM_RPC_TYPE_MASK, hdr->type));
+		return;
+	}
+
+	gh_rm_try_complete_connection(rm);
+}
+
+static void gh_rm_msgq_tx_done(struct mbox_client *cl, void *mssg, int r)
+{
+	struct gh_rm *rm = container_of(cl, struct gh_rm, msgq_client);
+
+	kmem_cache_free(rm->cache, mssg);
+	rm->last_tx_ret = r;
+}
+
+static int gh_rm_send_request(struct gh_rm *rm, u32 message_id,
+			      const void *req_buf, size_t req_buf_size,
+			      struct gh_rm_connection *connection)
+{
+	size_t buf_size_remaining = req_buf_size;
+	const void *req_buf_curr = req_buf;
+	struct gh_msgq_tx_data *msg;
+	struct gh_rm_rpc_hdr *hdr, hdr_template;
+	u32 cont_fragments = 0;
+	size_t payload_size;
+	void *payload;
+	int ret;
+
+	if (req_buf_size > GH_RM_MAX_NUM_FRAGMENTS * GH_RM_MAX_MSG_SIZE) {
+		dev_warn(rm->dev, "Limit (%lu bytes) exceeded for the maximum message size: %lu\n",
+			GH_RM_MAX_NUM_FRAGMENTS * GH_RM_MAX_MSG_SIZE, req_buf_size);
+		dump_stack();
+		return -E2BIG;
+	}
+
+	if (req_buf_size)
+		cont_fragments = (req_buf_size - 1) / GH_RM_MAX_MSG_SIZE;
+
+	hdr_template.api = RM_RPC_API;
+	hdr_template.type = FIELD_PREP(RM_RPC_TYPE_MASK, RM_RPC_TYPE_REQUEST) |
+				FIELD_PREP(RM_RPC_FRAGMENTS_MASK, cont_fragments);
+	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;
+
+	do {
+		msg = kmem_cache_zalloc(rm->cache, GFP_KERNEL);
+		if (!msg) {
+			ret = -ENOMEM;
+			goto out;
+		}
+
+		/* Fill header */
+		hdr = (struct gh_rm_rpc_hdr *)&msg->data[0];
+		*hdr = hdr_template;
+
+		/* Copy payload */
+		payload = &msg->data[0] + sizeof(*hdr);
+		payload_size = min(buf_size_remaining, GH_RM_MAX_MSG_SIZE);
+		memcpy(payload, req_buf_curr, payload_size);
+		req_buf_curr += payload_size;
+		buf_size_remaining -= payload_size;
+
+		/* Force the last fragment to immediately alert the receiver */
+		msg->push = !buf_size_remaining;
+		msg->length = sizeof(*hdr) + payload_size;
+
+		ret = mbox_send_message(gh_msgq_chan(&rm->msgq), msg);
+		if (ret < 0) {
+			kmem_cache_free(rm->cache, msg);
+			break;
+		}
+
+		if (rm->last_tx_ret) {
+			ret = rm->last_tx_ret;
+			break;
+		}
+
+		hdr_template.type = FIELD_PREP(RM_RPC_TYPE_MASK, RM_RPC_TYPE_CONTINUATION) |
+					FIELD_PREP(RM_RPC_FRAGMENTS_MASK, cont_fragments);
+	} while (buf_size_remaining);
+
+out:
+	mutex_unlock(&rm->send_lock);
+	return ret < 0 ? ret : 0;
+}
+
+/**
+ * gh_rm_call: Achieve request-response type communication with RPC
+ * @rm: Pointer to Gunyah resource manager internal data
+ * @message_id: The RM RPC message-id
+ * @req_buf: Request buffer that contains the payload
+ * @req_buf_size: Total size of the payload
+ * @resp_buf: Pointer to a response buffer
+ * @resp_buf_size: Size of the response buffer
+ *
+ * Make a request to the Resource Manager and wait for reply back. For a successful
+ * response, the function returns the payload. The size of the payload is set in
+ * resp_buf_size. The resp_buf must be freed by the caller when 0 is returned
+ * and resp_buf_size != 0.
+ *
+ * req_buf should be not NULL for req_buf_size >0. If req_buf_size == 0,
+ * req_buf *can* be NULL and no additional payload is sent.
+ *
+ * Context: Process context. Will sleep waiting for reply.
+ * Return: 0 on success. <0 if error.
+ */
+int gh_rm_call(void *_rm, u32 message_id, const void *req_buf, size_t req_buf_size,
+		void **resp_buf, size_t *resp_buf_size)
+{
+	struct gh_rm *rm = _rm;
+	struct gh_rm_connection *connection;
+	u32 seq_id;
+	int ret;
+
+	/* message_id 0 is reserved. req_buf_size implies req_buf is not NULL */
+	if (!rm || !message_id || (!req_buf && req_buf_size))
+		return -EINVAL;
+
+
+	connection = kzalloc(sizeof(*connection), GFP_KERNEL);
+	if (!connection)
+		return -ENOMEM;
+
+	connection->type = RM_RPC_TYPE_REPLY;
+	connection->msg_id = cpu_to_le32(message_id);
+
+	init_completion(&connection->reply.seq_done);
+
+	/* Allocate a new seq number for this connection */
+	ret = xa_alloc_cyclic(&rm->call_xarray, &seq_id, connection, xa_limit_16b, &rm->next_seq,
+				GFP_KERNEL);
+	if (ret < 0)
+		goto free;
+	connection->reply.seq = lower_16_bits(seq_id);
+
+	/* Send the request to the Resource Manager */
+	ret = gh_rm_send_request(rm, message_id, req_buf, req_buf_size, connection);
+	if (ret < 0)
+		goto out;
+
+	/* Wait for response. Uninterruptible because rollback based on what RM did to VM
+	 * requires us to know how RM handled the call.
+	 */
+	wait_for_completion(&connection->reply.seq_done);
+
+	/* Check for internal (kernel) error waiting for the response */
+	if (connection->reply.ret) {
+		ret = connection->reply.ret;
+		if (ret != -ENOMEM)
+			kfree(connection->payload);
+		goto out;
+	}
+
+	/* Got a response, did resource manager give us an error? */
+	if (connection->reply.rm_error != GH_RM_ERROR_OK) {
+		dev_warn(rm->dev, "RM rejected message %08x. Error: %d\n", message_id,
+			connection->reply.rm_error);
+		ret = gh_rm_error_remap(connection->reply.rm_error);
+		kfree(connection->payload);
+		goto out;
+	}
+
+	/* Everything looks good, return the payload */
+	if (resp_buf_size)
+		*resp_buf_size = connection->size;
+	if (connection->size && resp_buf)
+		*resp_buf = connection->payload;
+	else {
+		/* kfree in case RM sent us multiple fragments but never any data in
+		 * those fragments. We would've allocated memory for it, but connection->size == 0
+		 */
+		kfree(connection->payload);
+	}
+
+out:
+	xa_erase(&rm->call_xarray, connection->reply.seq);
+free:
+	kfree(connection);
+	return ret;
+}
+EXPORT_SYMBOL_GPL(gh_rm_call);
+
+
+int gh_rm_notifier_register(void *_rm, struct notifier_block *nb)
+{
+	struct gh_rm *rm = _rm;
+
+	return blocking_notifier_chain_register(&rm->nh, nb);
+}
+EXPORT_SYMBOL_GPL(gh_rm_notifier_register);
+
+int gh_rm_notifier_unregister(void *_rm, struct notifier_block *nb)
+{
+	struct gh_rm *rm = _rm;
+
+	return blocking_notifier_chain_unregister(&rm->nh, nb);
+}
+EXPORT_SYMBOL_GPL(gh_rm_notifier_unregister);
+
+struct device *gh_rm_get(struct gh_rm *rm)
+{
+	return get_device(rm->miscdev.this_device);
+}
+EXPORT_SYMBOL_GPL(gh_rm_get);
+
+void gh_rm_put(struct gh_rm *rm)
+{
+	put_device(rm->miscdev.this_device);
+}
+EXPORT_SYMBOL_GPL(gh_rm_put);
+
+static long gh_dev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
+{
+	struct miscdevice *miscdev = filp->private_data;
+	struct gh_rm *rm = container_of(miscdev, struct gh_rm, miscdev);
+
+	return gh_dev_vm_mgr_ioctl(rm, cmd, arg);
+}
+
+static const struct file_operations gh_dev_fops = {
+	.owner		= THIS_MODULE,
+	.unlocked_ioctl	= gh_dev_ioctl,
+	.compat_ioctl	= compat_ptr_ioctl,
+	.llseek		= noop_llseek,
+};
+
+static void gh_adev_release(struct device *dev)
+{
+	/* no-op */
+}
+
+static int gh_adev_init(struct gh_rm *rm, const char *name)
+{
+	struct auxiliary_device *adev = &rm->adev;
+	int ret = 0;
+
+	adev->name = name;
+	adev->dev.parent = rm->dev;
+	adev->dev.release = gh_adev_release;
+	ret = auxiliary_device_init(adev);
+	if (ret)
+		return ret;
+
+	ret = auxiliary_device_add(adev);
+	if (ret) {
+		auxiliary_device_uninit(adev);
+		return ret;
+	}
+
+	return ret;
+}
+
+static int gh_msgq_platform_probe_direction(struct platform_device *pdev, bool tx,
+					    struct gh_resource *ghrsc)
+{
+	struct device_node *node = pdev->dev.of_node;
+	int ret;
+	int idx = tx ? 0 : 1;
+
+	ghrsc->type = tx ? GH_RESOURCE_TYPE_MSGQ_TX : GH_RESOURCE_TYPE_MSGQ_RX;
+
+	ghrsc->irq = platform_get_irq(pdev, idx);
+	if (ghrsc->irq < 0) {
+		dev_err(&pdev->dev, "Failed to get irq%d: %d\n", idx, ghrsc->irq);
+		return ghrsc->irq;
+	}
+
+	ret = of_property_read_u64_index(node, "reg", idx, &ghrsc->capid);
+	if (ret) {
+		dev_err(&pdev->dev, "Failed to get capid%d: %d\n", idx, ret);
+		return ret;
+	}
+
+	return 0;
+}
+
+static int gh_identify(void)
+{
+	struct gh_hypercall_hyp_identify_resp gh_api;
+
+	if (!arch_is_gh_guest())
+		return -ENODEV;
+
+	gh_hypercall_hyp_identify(&gh_api);
+
+	pr_info("Running under Gunyah hypervisor %llx/v%u\n",
+		FIELD_GET(GH_API_INFO_VARIANT_MASK, gh_api.api_info),
+		gh_api_version(&gh_api));
+
+	/* We might move this out to individual drivers if there's ever an API version bump */
+	if (gh_api_version(&gh_api) != GH_API_V1) {
+		pr_info("Unsupported Gunyah version: %u\n", gh_api_version(&gh_api));
+		return -ENODEV;
+	}
+
+	return 0;
+}
+
+static int gh_rm_drv_probe(struct platform_device *pdev)
+{
+	struct irq_domain *parent_irq_domain;
+	struct device_node *parent_irq_node;
+	struct gh_msgq_tx_data *msg;
+	struct gh_rm *rm;
+	int ret;
+
+	ret = gh_identify();
+	if (ret)
+		return ret;
+
+	rm = devm_kzalloc(&pdev->dev, sizeof(*rm), GFP_KERNEL);
+	if (!rm)
+		return -ENOMEM;
+
+	platform_set_drvdata(pdev, rm);
+	rm->dev = &pdev->dev;
+
+	mutex_init(&rm->send_lock);
+	BLOCKING_INIT_NOTIFIER_HEAD(&rm->nh);
+	xa_init_flags(&rm->call_xarray, XA_FLAGS_ALLOC);
+	rm->cache = kmem_cache_create("gh_rm", struct_size(msg, data, GH_MSGQ_MAX_MSG_SIZE), 0,
+		SLAB_HWCACHE_ALIGN, NULL);
+	if (!rm->cache)
+		return -ENOMEM;
+
+	ret = gh_msgq_platform_probe_direction(pdev, true, &rm->tx_ghrsc);
+	if (ret)
+		goto err_cache;
+
+	ret = gh_msgq_platform_probe_direction(pdev, false, &rm->rx_ghrsc);
+	if (ret)
+		goto err_cache;
+
+	rm->msgq_client.dev = &pdev->dev;
+	rm->msgq_client.tx_block = true;
+	rm->msgq_client.rx_callback = gh_rm_msgq_rx_data;
+	rm->msgq_client.tx_done = gh_rm_msgq_tx_done;
+
+	ret = gh_msgq_init(&pdev->dev, &rm->msgq, &rm->msgq_client, &rm->tx_ghrsc, &rm->rx_ghrsc);
+	if (ret)
+		goto err_cache;
+
+	parent_irq_node = of_irq_find_parent(pdev->dev.of_node);
+	if (!parent_irq_node) {
+		dev_err(&pdev->dev, "Failed to find interrupt parent of resource manager\n");
+		ret = -ENODEV;
+		goto err_msgq;
+	}
+
+	parent_irq_domain = irq_find_host(parent_irq_node);
+	if (!parent_irq_domain) {
+		dev_err(&pdev->dev, "Failed to find interrupt parent domain of resource manager\n");
+		ret = -ENODEV;
+		goto err_msgq;
+	}
+
+	rm->irq_domain = irq_domain_add_hierarchy(parent_irq_domain, 0, 0, pdev->dev.of_node,
+							&gh_rm_irq_domain_ops, NULL);
+	if (!rm->irq_domain) {
+		dev_err(&pdev->dev, "Failed to add irq domain\n");
+		ret = -ENODEV;
+		goto err_msgq;
+	}
+	rm->irq_domain->host_data = rm;
+
+	rm->miscdev.parent = &pdev->dev;
+	rm->miscdev.name = "gunyah";
+	rm->miscdev.minor = MISC_DYNAMIC_MINOR;
+	rm->miscdev.fops = &gh_dev_fops;
+
+	ret = misc_register(&rm->miscdev);
+	if (ret)
+		goto err_irq_domain;
+
+	ret = gh_adev_init(rm, "gh_rm_core");
+	if (ret) {
+		dev_err(&pdev->dev, "Failed to add gh_rm_core device\n");
+		goto err_misc_device;
+	}
+
+	return 0;
+
+err_misc_device:
+	misc_deregister(&rm->miscdev);
+err_irq_domain:
+	irq_domain_remove(rm->irq_domain);
+err_msgq:
+	gh_msgq_remove(&rm->msgq);
+err_cache:
+	kmem_cache_destroy(rm->cache);
+	return ret;
+}
+
+static int gh_rm_drv_remove(struct platform_device *pdev)
+{
+	struct gh_rm *rm = platform_get_drvdata(pdev);
+
+	auxiliary_device_delete(&rm->adev);
+	auxiliary_device_uninit(&rm->adev);
+	misc_deregister(&rm->miscdev);
+	irq_domain_remove(rm->irq_domain);
+	gh_msgq_remove(&rm->msgq);
+	kmem_cache_destroy(rm->cache);
+
+	return 0;
+}
+
+static const struct of_device_id gh_rm_of_match[] = {
+	{ .compatible = "gunyah-resource-manager" },
+	{}
+};
+MODULE_DEVICE_TABLE(of, gh_rm_of_match);
+
+static struct platform_driver gh_rm_driver = {
+	.probe = gh_rm_drv_probe,
+	.remove = gh_rm_drv_remove,
+	.driver = {
+		.name = "gh_rsc_mgr",
+		.of_match_table = gh_rm_of_match,
+	},
+};
+module_platform_driver(gh_rm_driver);
+
+MODULE_LICENSE("GPL");
+MODULE_DESCRIPTION("Gunyah Resource Manager Driver");
diff --git a/drivers/virt/gunyah/rsc_mgr.h b/drivers/virt/gunyah/rsc_mgr.h
new file mode 100644
index 0000000..8d896a20
--- /dev/null
+++ b/drivers/virt/gunyah/rsc_mgr.h
@@ -0,0 +1,19 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+#ifndef __GH_RSC_MGR_PRIV_H
+#define __GH_RSC_MGR_PRIV_H
+
+#include <linux/gunyah.h>
+#include <linux/gunyah_rsc_mgr.h>
+#include <linux/types.h>
+
+struct gh_rm;
+int gh_rm_call(void *rsc_mgr, u32 message_id, const void *req_buf, size_t req_buf_size,
+		void **resp_buf, size_t *resp_buf_size);
+
+int gh_rm_platform_pre_mem_share(struct gh_rm *rm, struct gh_rm_mem_parcel *mem_parcel);
+int gh_rm_platform_post_mem_reclaim(struct gh_rm *rm, struct gh_rm_mem_parcel *mem_parcel);
+
+#endif
diff --git a/drivers/virt/gunyah/rsc_mgr_rpc.c b/drivers/virt/gunyah/rsc_mgr_rpc.c
new file mode 100644
index 0000000..3deb2e4
--- /dev/null
+++ b/drivers/virt/gunyah/rsc_mgr_rpc.c
@@ -0,0 +1,532 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+#include <linux/gunyah_rsc_mgr.h>
+#include "rsc_mgr.h"
+
+/* Message IDs: Memory Management */
+#define GH_RM_RPC_MEM_LEND			0x51000012
+#define GH_RM_RPC_MEM_SHARE			0x51000013
+#define GH_RM_RPC_MEM_RECLAIM			0x51000015
+#define GH_RM_RPC_MEM_APPEND			0x51000018
+
+/* Message IDs: VM Management */
+#define GH_RM_RPC_VM_ALLOC_VMID			0x56000001
+#define GH_RM_RPC_VM_DEALLOC_VMID		0x56000002
+#define GH_RM_RPC_VM_START			0x56000004
+#define GH_RM_RPC_VM_STOP			0x56000005
+#define GH_RM_RPC_VM_RESET			0x56000006
+#define GH_RM_RPC_VM_CONFIG_IMAGE		0x56000009
+#define GH_RM_RPC_VM_INIT			0x5600000B
+#define GH_RM_RPC_VM_GET_HYP_RESOURCES		0x56000020
+#define GH_RM_RPC_VM_GET_VMID			0x56000024
+#define GH_RM_RPC_VM_SET_FIRMWARE_MEM		0x56000032
+
+struct gh_rm_vm_common_vmid_req {
+	__le16 vmid;
+	__le16 _padding;
+} __packed;
+
+/* Call: MEM_LEND, MEM_SHARE */
+#define GH_MEM_SHARE_REQ_FLAGS_APPEND		BIT(1)
+
+struct gh_rm_mem_share_req_header {
+	u8 mem_type;
+	u8 _padding0;
+	u8 flags;
+	u8 _padding1;
+	__le32 label;
+} __packed;
+
+struct gh_rm_mem_share_req_acl_section {
+	__le32 n_entries;
+	struct gh_rm_mem_acl_entry entries[];
+};
+
+struct gh_rm_mem_share_req_mem_section {
+	__le16 n_entries;
+	__le16 _padding;
+	struct gh_rm_mem_entry entries[];
+};
+
+/* Call: MEM_RELEASE */
+struct gh_rm_mem_release_req {
+	__le32 mem_handle;
+	u8 flags; /* currently not used */
+	u8 _padding0;
+	__le16 _padding1;
+} __packed;
+
+/* Call: MEM_APPEND */
+#define GH_MEM_APPEND_REQ_FLAGS_END		BIT(0)
+
+struct gh_rm_mem_append_req_header {
+	__le32 mem_handle;
+	u8 flags;
+	u8 _padding0;
+	__le16 _padding1;
+} __packed;
+
+/* Call: VM_ALLOC */
+struct gh_rm_vm_alloc_vmid_resp {
+	__le16 vmid;
+	__le16 _padding;
+} __packed;
+
+/* Call: VM_STOP */
+#define GH_RM_VM_STOP_FLAG_FORCE_STOP		BIT(0)
+
+#define GH_RM_VM_STOP_REASON_FORCE_STOP		3
+
+struct gh_rm_vm_stop_req {
+	__le16 vmid;
+	u8 flags;
+	u8 _padding;
+	__le32 stop_reason;
+} __packed;
+
+/* Call: VM_CONFIG_IMAGE */
+struct gh_rm_vm_config_image_req {
+	__le16 vmid;
+	__le16 auth_mech;
+	__le32 mem_handle;
+	__le64 image_offset;
+	__le64 image_size;
+	__le64 dtb_offset;
+	__le64 dtb_size;
+} __packed;
+
+/* Call: VM_SET_FIRMWARE_MEM */
+struct gh_vm_set_firmware_mem_req {
+	__le16 vmid;
+	__le16 reserved;
+	__le32 mem_handle;
+	__le64 fw_offset;
+	__le64 fw_size;
+} __packed;
+
+#define GH_RM_MAX_MEM_ENTRIES	512
+
+/*
+ * Several RM calls take only a VMID as a parameter and give only standard
+ * response back. Deduplicate boilerplate code by using this common call.
+ */
+static int gh_rm_common_vmid_call(struct gh_rm *rm, u32 message_id, u16 vmid)
+{
+	struct gh_rm_vm_common_vmid_req req_payload = {
+		.vmid = cpu_to_le16(vmid),
+	};
+
+	return gh_rm_call(rm, message_id, &req_payload, sizeof(req_payload), NULL, NULL);
+}
+
+static int _gh_rm_mem_append(struct gh_rm *rm, u32 mem_handle, bool end_append,
+			struct gh_rm_mem_entry *mem_entries, size_t n_mem_entries)
+{
+	struct gh_rm_mem_share_req_mem_section *mem_section;
+	struct gh_rm_mem_append_req_header *req_header;
+	size_t msg_size = 0;
+	void *msg;
+	int ret;
+
+	msg_size += sizeof(struct gh_rm_mem_append_req_header);
+	msg_size += struct_size(mem_section, entries, n_mem_entries);
+
+	msg = kzalloc(msg_size, GFP_KERNEL);
+	if (!msg)
+		return -ENOMEM;
+
+	req_header = msg;
+	mem_section = (void *)(req_header + 1);
+
+	req_header->mem_handle = cpu_to_le32(mem_handle);
+	if (end_append)
+		req_header->flags |= GH_MEM_APPEND_REQ_FLAGS_END;
+
+	mem_section->n_entries = cpu_to_le16(n_mem_entries);
+	memcpy(mem_section->entries, mem_entries, sizeof(*mem_entries) * n_mem_entries);
+
+	ret = gh_rm_call(rm, GH_RM_RPC_MEM_APPEND, msg, msg_size, NULL, NULL);
+	kfree(msg);
+
+	return ret;
+}
+
+static int gh_rm_mem_append(struct gh_rm *rm, u32 mem_handle,
+			struct gh_rm_mem_entry *mem_entries, size_t n_mem_entries)
+{
+	bool end_append;
+	int ret = 0;
+	size_t n;
+
+	while (n_mem_entries) {
+		if (n_mem_entries > GH_RM_MAX_MEM_ENTRIES) {
+			end_append = false;
+			n = GH_RM_MAX_MEM_ENTRIES;
+		} else {
+			end_append = true;
+			n = n_mem_entries;
+		}
+
+		ret = _gh_rm_mem_append(rm, mem_handle, end_append, mem_entries, n);
+		if (ret)
+			break;
+
+		mem_entries += n;
+		n_mem_entries -= n;
+	}
+
+	return ret;
+}
+
+static int gh_rm_mem_lend_common(struct gh_rm *rm, u32 message_id, struct gh_rm_mem_parcel *p)
+{
+	size_t msg_size = 0, initial_mem_entries = p->n_mem_entries, resp_size;
+	size_t acl_section_size, mem_section_size;
+	struct gh_rm_mem_share_req_acl_section *acl_section;
+	struct gh_rm_mem_share_req_mem_section *mem_section;
+	struct gh_rm_mem_share_req_header *req_header;
+	u32 *attr_section;
+	__le32 *resp;
+	void *msg;
+	int ret;
+
+	if (!p->acl_entries || !p->n_acl_entries || !p->mem_entries || !p->n_mem_entries ||
+	    p->n_acl_entries > U8_MAX || p->mem_handle != GH_MEM_HANDLE_INVAL)
+		return -EINVAL;
+
+	if (initial_mem_entries > GH_RM_MAX_MEM_ENTRIES)
+		initial_mem_entries = GH_RM_MAX_MEM_ENTRIES;
+
+	acl_section_size = struct_size(acl_section, entries, p->n_acl_entries);
+	mem_section_size = struct_size(mem_section, entries, initial_mem_entries);
+	/* The format of the message goes:
+	 * request header
+	 * ACL entries (which VMs get what kind of access to this memory parcel)
+	 * Memory entries (list of memory regions to share)
+	 * Memory attributes (currently unused, we'll hard-code the size to 0)
+	 */
+	msg_size += sizeof(struct gh_rm_mem_share_req_header);
+	msg_size += acl_section_size;
+	msg_size += mem_section_size;
+	msg_size += sizeof(u32); /* for memory attributes, currently unused */
+
+	msg = kzalloc(msg_size, GFP_KERNEL);
+	if (!msg)
+		return -ENOMEM;
+
+	ret = gh_rm_platform_pre_mem_share(rm, p);
+	if (ret) {
+		kfree(msg);
+		return ret;
+	}
+
+	req_header = msg;
+	acl_section = (void *)req_header + sizeof(*req_header);
+	mem_section = (void *)acl_section + acl_section_size;
+	attr_section = (void *)mem_section + mem_section_size;
+
+	req_header->mem_type = p->mem_type;
+	if (initial_mem_entries != p->n_mem_entries)
+		req_header->flags |= GH_MEM_SHARE_REQ_FLAGS_APPEND;
+	req_header->label = cpu_to_le32(p->label);
+
+	acl_section->n_entries = cpu_to_le32(p->n_acl_entries);
+	memcpy(acl_section->entries, p->acl_entries,
+		flex_array_size(acl_section, entries, p->n_acl_entries));
+
+	mem_section->n_entries = cpu_to_le16(initial_mem_entries);
+	memcpy(mem_section->entries, p->mem_entries,
+		flex_array_size(mem_section, entries, initial_mem_entries));
+
+	/* Set n_entries for memory attribute section to 0 */
+	*attr_section = 0;
+
+	ret = gh_rm_call(rm, message_id, msg, msg_size, (void **)&resp, &resp_size);
+	kfree(msg);
+
+	if (ret) {
+		gh_rm_platform_post_mem_reclaim(rm, p);
+		return ret;
+	}
+
+	p->mem_handle = le32_to_cpu(*resp);
+	kfree(resp);
+
+	if (initial_mem_entries != p->n_mem_entries) {
+		ret = gh_rm_mem_append(rm, p->mem_handle,
+					&p->mem_entries[initial_mem_entries],
+					p->n_mem_entries - initial_mem_entries);
+		if (ret) {
+			gh_rm_mem_reclaim(rm, p);
+			p->mem_handle = GH_MEM_HANDLE_INVAL;
+		}
+	}
+
+	return ret;
+}
+
+/**
+ * gh_rm_mem_lend() - Lend memory to other virtual machines.
+ * @rm: Handle to a Gunyah resource manager
+ * @parcel: Information about the memory to be lent.
+ *
+ * Lending removes Linux's access to the memory while the memory parcel is lent.
+ */
+int gh_rm_mem_lend(struct gh_rm *rm, struct gh_rm_mem_parcel *parcel)
+{
+	return gh_rm_mem_lend_common(rm, GH_RM_RPC_MEM_LEND, parcel);
+}
+
+
+/**
+ * gh_rm_mem_share() - Share memory with other virtual machines.
+ * @rm: Handle to a Gunyah resource manager
+ * @parcel: Information about the memory to be shared.
+ *
+ * Sharing keeps Linux's access to the memory while the memory parcel is shared.
+ */
+int gh_rm_mem_share(struct gh_rm *rm, struct gh_rm_mem_parcel *parcel)
+{
+	return gh_rm_mem_lend_common(rm, GH_RM_RPC_MEM_SHARE, parcel);
+}
+
+/**
+ * gh_rm_mem_reclaim() - Reclaim a memory parcel
+ * @rm: Handle to a Gunyah resource manager
+ * @parcel: Information about the memory to be reclaimed.
+ *
+ * RM maps the associated memory back into the stage-2 page tables of the owner VM.
+ */
+int gh_rm_mem_reclaim(struct gh_rm *rm, struct gh_rm_mem_parcel *parcel)
+{
+	struct gh_rm_mem_release_req req = {
+		.mem_handle = cpu_to_le32(parcel->mem_handle),
+	};
+	int ret;
+
+	ret = gh_rm_call(rm, GH_RM_RPC_MEM_RECLAIM, &req, sizeof(req), NULL, NULL);
+	/* Only call the platform mem reclaim hooks if we reclaimed the memory */
+	if (ret)
+		return ret;
+
+	return gh_rm_platform_post_mem_reclaim(rm, parcel);
+}
+
+/**
+ * gh_rm_vm_set_firmware_mem() - Set the location of firmware for GH_RM_VM_AUTH_QCOM_ANDROID_PVM VMs
+ * @rm: Handle to a Gunyah resource manager.
+ * @vmid: VM identifier allocated with gh_rm_alloc_vmid.
+ * @parcel: Memory parcel where the firmware should be loaded.
+ * @fw_offset: offset into the memory parcel where the firmware should be loaded.
+ * @fw_size: Maxmimum size of the fw that can be loaded.
+ */
+int gh_rm_vm_set_firmware_mem(struct gh_rm *rm, u16 vmid, struct gh_rm_mem_parcel *parcel,
+				u64 fw_offset, u64 fw_size)
+{
+	struct gh_vm_set_firmware_mem_req req = {
+		.vmid = cpu_to_le16(vmid),
+		.mem_handle = cpu_to_le32(parcel->mem_handle),
+		.fw_offset = cpu_to_le64(fw_offset),
+		.fw_size = cpu_to_le64(fw_size),
+	};
+
+	return gh_rm_call(rm, GH_RM_RPC_VM_SET_FIRMWARE_MEM, &req, sizeof(req), NULL, NULL);
+}
+EXPORT_SYMBOL_GPL(gh_rm_vm_set_firmware_mem);
+
+/**
+ * gh_rm_alloc_vmid() - Allocate a new VM in Gunyah. Returns the VM identifier.
+ * @rm: Handle to a Gunyah resource manager
+ * @vmid: Use 0 to dynamically allocate a VM. A reserved VMID can be supplied
+ *        to request allocation of a platform-defined VM.
+ *
+ * Returns - the allocated VMID or negative value on error
+ */
+int gh_rm_alloc_vmid(struct gh_rm *rm, u16 vmid)
+{
+	struct gh_rm_vm_common_vmid_req req_payload = {
+		.vmid = cpu_to_le16(vmid),
+	};
+	struct gh_rm_vm_alloc_vmid_resp *resp_payload;
+	size_t resp_size;
+	void *resp;
+	int ret;
+
+	ret = gh_rm_call(rm, GH_RM_RPC_VM_ALLOC_VMID, &req_payload, sizeof(req_payload), &resp,
+			&resp_size);
+	if (ret)
+		return ret;
+
+	if (!vmid) {
+		resp_payload = resp;
+		ret = le16_to_cpu(resp_payload->vmid);
+		kfree(resp);
+	}
+
+	return ret;
+}
+
+/**
+ * gh_rm_dealloc_vmid() - Dispose of a VMID
+ * @rm: Handle to a Gunyah resource manager
+ * @vmid: VM identifier allocated with gh_rm_alloc_vmid
+ */
+int gh_rm_dealloc_vmid(struct gh_rm *rm, u16 vmid)
+{
+	return gh_rm_common_vmid_call(rm, GH_RM_RPC_VM_DEALLOC_VMID, vmid);
+}
+
+/**
+ * gh_rm_vm_reset() - Reset a VM's resources
+ * @rm: Handle to a Gunyah resource manager
+ * @vmid: VM identifier allocated with gh_rm_alloc_vmid
+ *
+ * As part of tearing down the VM, request RM to clean up all the VM resources
+ * associated with the VM. Only after this, Linux can clean up all the
+ * references it maintains to resources.
+ */
+int gh_rm_vm_reset(struct gh_rm *rm, u16 vmid)
+{
+	return gh_rm_common_vmid_call(rm, GH_RM_RPC_VM_RESET, vmid);
+}
+
+/**
+ * gh_rm_vm_start() - Move a VM into "ready to run" state
+ * @rm: Handle to a Gunyah resource manager
+ * @vmid: VM identifier allocated with gh_rm_alloc_vmid
+ *
+ * On VMs which use proxy scheduling, vcpu_run is needed to actually run the VM.
+ * On VMs which use Gunyah's scheduling, the vCPUs start executing in accordance with Gunyah
+ * scheduling policies.
+ */
+int gh_rm_vm_start(struct gh_rm *rm, u16 vmid)
+{
+	return gh_rm_common_vmid_call(rm, GH_RM_RPC_VM_START, vmid);
+}
+
+/**
+ * gh_rm_vm_stop() - Send a request to Resource Manager VM to forcibly stop a VM.
+ * @rm: Handle to a Gunyah resource manager
+ * @vmid: VM identifier allocated with gh_rm_alloc_vmid
+ */
+int gh_rm_vm_stop(struct gh_rm *rm, u16 vmid)
+{
+	struct gh_rm_vm_stop_req req_payload = {
+		.vmid = cpu_to_le16(vmid),
+		.flags = GH_RM_VM_STOP_FLAG_FORCE_STOP,
+		.stop_reason = cpu_to_le32(GH_RM_VM_STOP_REASON_FORCE_STOP),
+	};
+
+	return gh_rm_call(rm, GH_RM_RPC_VM_STOP, &req_payload, sizeof(req_payload), NULL, NULL);
+}
+
+/**
+ * gh_rm_vm_configure() - Prepare a VM to start and provide the common
+ *			  configuration needed by RM to configure a VM
+ * @rm: Handle to a Gunyah resource manager
+ * @vmid: VM identifier allocated with gh_rm_alloc_vmid
+ * @auth_mechanism: Authentication mechanism used by resource manager to verify
+ *                  the virtual machine
+ * @mem_handle: Handle to a previously shared memparcel that contains all parts
+ *              of the VM image subject to authentication.
+ * @image_offset: Start address of VM image, relative to the start of memparcel
+ * @image_size: Size of the VM image
+ * @dtb_offset: Start address of the devicetree binary with VM configuration,
+ *              relative to start of memparcel.
+ * @dtb_size: Maximum size of devicetree binary.
+ */
+int gh_rm_vm_configure(struct gh_rm *rm, u16 vmid, enum gh_rm_vm_auth_mechanism auth_mechanism,
+		u32 mem_handle, u64 image_offset, u64 image_size, u64 dtb_offset, u64 dtb_size)
+{
+	struct gh_rm_vm_config_image_req req_payload = {
+		.vmid = cpu_to_le16(vmid),
+		.auth_mech = cpu_to_le16(auth_mechanism),
+		.mem_handle = cpu_to_le32(mem_handle),
+		.image_offset = cpu_to_le64(image_offset),
+		.image_size = cpu_to_le64(image_size),
+		.dtb_offset = cpu_to_le64(dtb_offset),
+		.dtb_size = cpu_to_le64(dtb_size),
+	};
+
+	return gh_rm_call(rm, GH_RM_RPC_VM_CONFIG_IMAGE, &req_payload, sizeof(req_payload),
+			  NULL, NULL);
+}
+
+/**
+ * gh_rm_vm_init() - Move the VM to initialized state.
+ * @rm: Handle to a Gunyah resource manager
+ * @vmid: VM identifier
+ *
+ * RM will allocate needed resources for the VM.
+ */
+int gh_rm_vm_init(struct gh_rm *rm, u16 vmid)
+{
+	return gh_rm_common_vmid_call(rm, GH_RM_RPC_VM_INIT, vmid);
+}
+
+/**
+ * gh_rm_get_hyp_resources() - Retrieve hypervisor resources (capabilities) associated with a VM
+ * @rm: Handle to a Gunyah resource manager
+ * @vmid: VMID of the other VM to get the resources of
+ * @resources: Set by gh_rm_get_hyp_resources and contains the returned hypervisor resources.
+ *             Caller must free the resources pointer if successful.
+ */
+int gh_rm_get_hyp_resources(struct gh_rm *rm, u16 vmid,
+				struct gh_rm_hyp_resources **resources)
+{
+	struct gh_rm_vm_common_vmid_req req_payload = {
+		.vmid = cpu_to_le16(vmid),
+	};
+	struct gh_rm_hyp_resources *resp;
+	size_t resp_size;
+	int ret;
+
+	ret = gh_rm_call(rm, GH_RM_RPC_VM_GET_HYP_RESOURCES,
+			 &req_payload, sizeof(req_payload),
+			 (void **)&resp, &resp_size);
+	if (ret)
+		return ret;
+
+	if (!resp_size)
+		return -EBADMSG;
+
+	if (resp_size < struct_size(resp, entries, 0) ||
+		resp_size != struct_size(resp, entries, le32_to_cpu(resp->n_entries))) {
+		kfree(resp);
+		return -EBADMSG;
+	}
+
+	*resources = resp;
+	return 0;
+}
+
+/**
+ * gh_rm_get_vmid() - Retrieve VMID of this virtual machine
+ * @rm: Handle to a Gunyah resource manager
+ * @vmid: Filled with the VMID of this VM
+ */
+int gh_rm_get_vmid(struct gh_rm *rm, u16 *vmid)
+{
+	static u16 cached_vmid = GH_VMID_INVAL;
+	size_t resp_size;
+	__le32 *resp;
+	int ret;
+
+	if (cached_vmid != GH_VMID_INVAL) {
+		*vmid = cached_vmid;
+		return 0;
+	}
+
+	ret = gh_rm_call(rm, GH_RM_RPC_VM_GET_VMID, NULL, 0, (void **)&resp, &resp_size);
+	if (ret)
+		return ret;
+
+	*vmid = cached_vmid = lower_16_bits(le32_to_cpu(*resp));
+	kfree(resp);
+
+	return ret;
+}
+EXPORT_SYMBOL_GPL(gh_rm_get_vmid);
diff --git a/drivers/virt/gunyah/vm_mgr.c b/drivers/virt/gunyah/vm_mgr.c
new file mode 100644
index 0000000..e643e33
--- /dev/null
+++ b/drivers/virt/gunyah/vm_mgr.c
@@ -0,0 +1,830 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+#define pr_fmt(fmt) "gh_vm_mgr: " fmt
+
+#include <linux/anon_inodes.h>
+#include <linux/compat.h>
+#include <linux/file.h>
+#include <linux/gunyah_rsc_mgr.h>
+#include <linux/gunyah_vm_mgr.h>
+#include <linux/miscdevice.h>
+#include <linux/mm.h>
+#include <linux/module.h>
+#include <linux/xarray.h>
+
+#include <uapi/linux/gunyah.h>
+
+#include "vm_mgr.h"
+
+static void gh_vm_free(struct work_struct *work);
+
+static DEFINE_XARRAY(gh_vm_functions);
+
+static void gh_vm_put_function(struct gh_vm_function *fn)
+{
+	module_put(fn->mod);
+}
+
+static struct gh_vm_function *gh_vm_get_function(u32 type)
+{
+	struct gh_vm_function *fn;
+
+	fn = xa_load(&gh_vm_functions, type);
+	if (!fn) {
+		request_module("ghfunc:%d", type);
+
+		fn = xa_load(&gh_vm_functions, type);
+	}
+
+	if (!fn || !try_module_get(fn->mod))
+		fn = ERR_PTR(-ENOENT);
+
+	return fn;
+}
+
+static void gh_vm_remove_function_instance(struct gh_vm_function_instance *inst)
+	__must_hold(&inst->ghvm->fn_lock)
+{
+	inst->fn->unbind(inst);
+	list_del(&inst->vm_list);
+	gh_vm_put_function(inst->fn);
+	kfree(inst->argp);
+	kfree(inst);
+}
+
+static void gh_vm_remove_functions(struct gh_vm *ghvm)
+{
+	struct gh_vm_function_instance *inst, *iiter;
+
+	mutex_lock(&ghvm->fn_lock);
+	list_for_each_entry_safe(inst, iiter, &ghvm->functions, vm_list) {
+		gh_vm_remove_function_instance(inst);
+	}
+	mutex_unlock(&ghvm->fn_lock);
+}
+
+static long gh_vm_add_function_instance(struct gh_vm *ghvm, struct gh_fn_desc *f)
+{
+	struct gh_vm_function_instance *inst;
+	void __user *argp;
+	long r = 0;
+
+	if (f->arg_size > GH_FN_MAX_ARG_SIZE) {
+		dev_err_ratelimited(ghvm->parent, "%s: arg_size > %d\n",
+					__func__, GH_FN_MAX_ARG_SIZE);
+		return -EINVAL;
+	}
+
+	inst = kzalloc(sizeof(*inst), GFP_KERNEL);
+	if (!inst)
+		return -ENOMEM;
+
+	inst->arg_size = f->arg_size;
+	if (inst->arg_size) {
+		inst->argp = kzalloc(inst->arg_size, GFP_KERNEL);
+		if (!inst->argp) {
+			r = -ENOMEM;
+			goto free;
+		}
+
+		argp = u64_to_user_ptr(f->arg);
+		if (copy_from_user(inst->argp, argp, f->arg_size)) {
+			r = -EFAULT;
+			goto free_arg;
+		}
+	}
+
+	inst->fn = gh_vm_get_function(f->type);
+	if (IS_ERR(inst->fn)) {
+		r = PTR_ERR(inst->fn);
+		goto free_arg;
+	}
+
+	inst->ghvm = ghvm;
+	inst->rm = ghvm->rm;
+
+	mutex_lock(&ghvm->fn_lock);
+	r = inst->fn->bind(inst);
+	if (r < 0) {
+		mutex_unlock(&ghvm->fn_lock);
+		gh_vm_put_function(inst->fn);
+		goto free_arg;
+	}
+
+	list_add(&inst->vm_list, &ghvm->functions);
+	mutex_unlock(&ghvm->fn_lock);
+
+	return r;
+free_arg:
+	kfree(inst->argp);
+free:
+	kfree(inst);
+	return r;
+}
+
+static long gh_vm_rm_function_instance(struct gh_vm *ghvm, struct gh_fn_desc *f)
+{
+	struct gh_vm_function_instance *inst, *iter;
+	void __user *user_argp;
+	void *argp;
+	long r = 0;
+
+	r = mutex_lock_interruptible(&ghvm->fn_lock);
+	if (r)
+		return r;
+
+	if (f->arg_size) {
+		argp = kzalloc(f->arg_size, GFP_KERNEL);
+		if (!argp) {
+			r = -ENOMEM;
+			goto out;
+		}
+
+		user_argp = u64_to_user_ptr(f->arg);
+		if (copy_from_user(argp, user_argp, f->arg_size)) {
+			r = -EFAULT;
+			kfree(argp);
+			goto out;
+		}
+
+		r = -ENOENT;
+		list_for_each_entry_safe(inst, iter, &ghvm->functions, vm_list) {
+			if (inst->fn->type == f->type &&
+				inst->fn->compare(inst, argp, f->arg_size)) {
+				gh_vm_remove_function_instance(inst);
+				r = 0;
+			}
+		}
+
+		kfree(argp);
+	}
+
+out:
+	mutex_unlock(&ghvm->fn_lock);
+	return r;
+}
+
+int gh_vm_function_register(struct gh_vm_function *fn)
+{
+	if (!fn->bind || !fn->unbind)
+		return -EINVAL;
+
+	return xa_err(xa_store(&gh_vm_functions, fn->type, fn, GFP_KERNEL));
+}
+EXPORT_SYMBOL_GPL(gh_vm_function_register);
+
+void gh_vm_function_unregister(struct gh_vm_function *fn)
+{
+	/* Expecting unregister to only come when unloading a module */
+	WARN_ON(fn->mod && module_refcount(fn->mod));
+	xa_erase(&gh_vm_functions, fn->type);
+}
+EXPORT_SYMBOL_GPL(gh_vm_function_unregister);
+
+int gh_vm_add_resource_ticket(struct gh_vm *ghvm, struct gh_vm_resource_ticket *ticket)
+{
+	struct gh_vm_resource_ticket *iter;
+	struct gh_resource *ghrsc, *rsc_iter;
+	int ret = 0;
+
+	mutex_lock(&ghvm->resources_lock);
+	list_for_each_entry(iter, &ghvm->resource_tickets, vm_list) {
+		if (iter->resource_type == ticket->resource_type && iter->label == ticket->label) {
+			ret = -EEXIST;
+			goto out;
+		}
+	}
+
+	if (!try_module_get(ticket->owner)) {
+		ret = -ENODEV;
+		goto out;
+	}
+
+	list_add(&ticket->vm_list, &ghvm->resource_tickets);
+	INIT_LIST_HEAD(&ticket->resources);
+
+	list_for_each_entry_safe(ghrsc, rsc_iter, &ghvm->resources, list) {
+		if (ghrsc->type == ticket->resource_type && ghrsc->rm_label == ticket->label) {
+			if (ticket->populate(ticket, ghrsc))
+				list_move(&ghrsc->list, &ticket->resources);
+		}
+	}
+out:
+	mutex_unlock(&ghvm->resources_lock);
+	return ret;
+}
+EXPORT_SYMBOL_GPL(gh_vm_add_resource_ticket);
+
+void gh_vm_remove_resource_ticket(struct gh_vm *ghvm, struct gh_vm_resource_ticket *ticket)
+{
+	struct gh_resource *ghrsc, *iter;
+
+	mutex_lock(&ghvm->resources_lock);
+	list_for_each_entry_safe(ghrsc, iter, &ticket->resources, list) {
+		ticket->unpopulate(ticket, ghrsc);
+		list_move(&ghrsc->list, &ghvm->resources);
+	}
+
+	module_put(ticket->owner);
+	list_del(&ticket->vm_list);
+	mutex_unlock(&ghvm->resources_lock);
+}
+EXPORT_SYMBOL_GPL(gh_vm_remove_resource_ticket);
+
+static void gh_vm_add_resource(struct gh_vm *ghvm, struct gh_resource *ghrsc)
+{
+	struct gh_vm_resource_ticket *ticket;
+
+	mutex_lock(&ghvm->resources_lock);
+	list_for_each_entry(ticket, &ghvm->resource_tickets, vm_list) {
+		if (ghrsc->type == ticket->resource_type && ghrsc->rm_label == ticket->label) {
+			if (ticket->populate(ticket, ghrsc))
+				list_add(&ghrsc->list, &ticket->resources);
+			else
+				list_add(&ghrsc->list, &ghvm->resources);
+			/* unconditonal -- we prevent multiple identical
+			 * resource tickets so there will not be some other
+			 * ticket elsewhere in the list if populate() failed.
+			 */
+			goto found;
+		}
+	}
+	list_add(&ghrsc->list, &ghvm->resources);
+found:
+	mutex_unlock(&ghvm->resources_lock);
+}
+
+static void gh_vm_clean_resources(struct gh_vm *ghvm)
+{
+	struct gh_vm_resource_ticket *ticket, *titer;
+	struct gh_resource *ghrsc, *riter;
+
+	mutex_lock(&ghvm->resources_lock);
+	if (!list_empty(&ghvm->resource_tickets)) {
+		dev_warn(ghvm->parent, "Dangling resource tickets:\n");
+		list_for_each_entry_safe(ticket, titer, &ghvm->resource_tickets, vm_list) {
+			dev_warn(ghvm->parent, "  %pS\n", ticket->populate);
+			gh_vm_remove_resource_ticket(ghvm, ticket);
+		}
+	}
+
+	list_for_each_entry_safe(ghrsc, riter, &ghvm->resources, list) {
+		gh_rm_free_resource(ghrsc);
+	}
+	mutex_unlock(&ghvm->resources_lock);
+}
+
+static int _gh_vm_io_handler_compare(const struct rb_node *node, const struct rb_node *parent)
+{
+	struct gh_vm_io_handler *n = container_of(node, struct gh_vm_io_handler, node);
+	struct gh_vm_io_handler *p = container_of(parent, struct gh_vm_io_handler, node);
+
+	if (n->addr < p->addr)
+		return -1;
+	if (n->addr > p->addr)
+		return 1;
+	if ((n->len && !p->len) || (!n->len && p->len))
+		return 0;
+	if (n->len < p->len)
+		return -1;
+	if (n->len > p->len)
+		return 1;
+	/* one of the io handlers doesn't have datamatch and the other does.
+	 * For purposes of comparison, that makes them identical since the
+	 * one that doesn't have datamatch will cover the same handler that
+	 * does.
+	 */
+	if (n->datamatch != p->datamatch)
+		return 0;
+	if (n->data < p->data)
+		return -1;
+	if (n->data > p->data)
+		return 1;
+	return 0;
+}
+
+static int gh_vm_io_handler_compare(struct rb_node *node, const struct rb_node *parent)
+{
+	return _gh_vm_io_handler_compare(node, parent);
+}
+
+static int gh_vm_io_handler_find(const void *key, const struct rb_node *node)
+{
+	const struct gh_vm_io_handler *k = key;
+
+	return _gh_vm_io_handler_compare(&k->node, node);
+}
+
+static struct gh_vm_io_handler *gh_vm_mgr_find_io_hdlr(struct gh_vm *ghvm, u64 addr,
+								u64 len, u64 data)
+{
+	struct gh_vm_io_handler key = {
+		.addr = addr,
+		.len = len,
+		.datamatch = true,
+		.data = data,
+	};
+	struct rb_node *node;
+
+	node = rb_find(&key, &ghvm->mmio_handler_root, gh_vm_io_handler_find);
+	if (!node)
+		return NULL;
+
+	return container_of(node, struct gh_vm_io_handler, node);
+}
+
+int gh_vm_mmio_write(struct gh_vm *ghvm, u64 addr, u32 len, u64 data)
+{
+	struct gh_vm_io_handler *io_hdlr = NULL;
+	int ret;
+
+	down_read(&ghvm->mmio_handler_lock);
+	io_hdlr = gh_vm_mgr_find_io_hdlr(ghvm, addr, len, data);
+	if (!io_hdlr || !io_hdlr->ops || !io_hdlr->ops->write) {
+		ret = -ENODEV;
+		goto out;
+	}
+
+	ret = io_hdlr->ops->write(io_hdlr, addr, len, data);
+
+out:
+	up_read(&ghvm->mmio_handler_lock);
+	return ret;
+}
+EXPORT_SYMBOL_GPL(gh_vm_mmio_write);
+
+int gh_vm_add_io_handler(struct gh_vm *ghvm, struct gh_vm_io_handler *io_hdlr)
+{
+	struct rb_node *found;
+
+	if (io_hdlr->datamatch && (!io_hdlr->len || io_hdlr->len > sizeof(io_hdlr->data)))
+		return -EINVAL;
+
+	down_write(&ghvm->mmio_handler_lock);
+	found = rb_find_add(&io_hdlr->node, &ghvm->mmio_handler_root, gh_vm_io_handler_compare);
+	up_write(&ghvm->mmio_handler_lock);
+
+	return found ? -EEXIST : 0;
+}
+EXPORT_SYMBOL_GPL(gh_vm_add_io_handler);
+
+void gh_vm_remove_io_handler(struct gh_vm *ghvm, struct gh_vm_io_handler *io_hdlr)
+{
+	down_write(&ghvm->mmio_handler_lock);
+	rb_erase(&io_hdlr->node, &ghvm->mmio_handler_root);
+	up_write(&ghvm->mmio_handler_lock);
+}
+EXPORT_SYMBOL_GPL(gh_vm_remove_io_handler);
+
+static int gh_vm_rm_notification_status(struct gh_vm *ghvm, void *data)
+{
+	struct gh_rm_vm_status_payload *payload = data;
+
+	if (le16_to_cpu(payload->vmid) != ghvm->vmid)
+		return NOTIFY_OK;
+
+	/* All other state transitions are synchronous to a corresponding RM call */
+	if (payload->vm_status == GH_RM_VM_STATUS_RESET) {
+		down_write(&ghvm->status_lock);
+		ghvm->vm_status = payload->vm_status;
+		up_write(&ghvm->status_lock);
+		wake_up(&ghvm->vm_status_wait);
+	}
+
+	return NOTIFY_DONE;
+}
+
+static int gh_vm_rm_notification_exited(struct gh_vm *ghvm, void *data)
+{
+	struct gh_rm_vm_exited_payload *payload = data;
+
+	if (le16_to_cpu(payload->vmid) != ghvm->vmid)
+		return NOTIFY_OK;
+
+	down_write(&ghvm->status_lock);
+	ghvm->vm_status = GH_RM_VM_STATUS_EXITED;
+	ghvm->exit_info.type = le16_to_cpu(payload->exit_type);
+	ghvm->exit_info.reason_size = le32_to_cpu(payload->exit_reason_size);
+	memcpy(&ghvm->exit_info.reason, payload->exit_reason,
+		min(GH_VM_MAX_EXIT_REASON_SIZE, ghvm->exit_info.reason_size));
+	up_write(&ghvm->status_lock);
+	wake_up(&ghvm->vm_status_wait);
+
+	return NOTIFY_DONE;
+}
+
+static int gh_vm_rm_notification(struct notifier_block *nb, unsigned long action, void *data)
+{
+	struct gh_vm *ghvm = container_of(nb, struct gh_vm, nb);
+
+	switch (action) {
+	case GH_RM_NOTIFICATION_VM_STATUS:
+		return gh_vm_rm_notification_status(ghvm, data);
+	case GH_RM_NOTIFICATION_VM_EXITED:
+		return gh_vm_rm_notification_exited(ghvm, data);
+	default:
+		return NOTIFY_OK;
+	}
+}
+
+static void gh_vm_stop(struct gh_vm *ghvm)
+{
+	int ret;
+
+	down_write(&ghvm->status_lock);
+	if (ghvm->vm_status == GH_RM_VM_STATUS_RUNNING) {
+		ret = gh_rm_vm_stop(ghvm->rm, ghvm->vmid);
+		if (ret)
+			dev_warn(ghvm->parent, "Failed to stop VM: %d\n", ret);
+	}
+	up_write(&ghvm->status_lock);
+
+	wait_event(ghvm->vm_status_wait, ghvm->vm_status == GH_RM_VM_STATUS_EXITED);
+}
+
+static __must_check struct gh_vm *gh_vm_alloc(struct gh_rm *rm)
+{
+	struct gh_vm *ghvm;
+
+	ghvm = kzalloc(sizeof(*ghvm), GFP_KERNEL);
+	if (!ghvm)
+		return ERR_PTR(-ENOMEM);
+
+	ghvm->parent = gh_rm_get(rm);
+	ghvm->vmid = GH_VMID_INVAL;
+	ghvm->rm = rm;
+
+	mmgrab(current->mm);
+	ghvm->mm = current->mm;
+	mutex_init(&ghvm->mm_lock);
+	INIT_LIST_HEAD(&ghvm->memory_mappings);
+	init_rwsem(&ghvm->status_lock);
+	init_waitqueue_head(&ghvm->vm_status_wait);
+	INIT_WORK(&ghvm->free_work, gh_vm_free);
+	kref_init(&ghvm->kref);
+	mutex_init(&ghvm->resources_lock);
+	INIT_LIST_HEAD(&ghvm->resources);
+	INIT_LIST_HEAD(&ghvm->resource_tickets);
+	init_rwsem(&ghvm->mmio_handler_lock);
+	ghvm->mmio_handler_root = RB_ROOT;
+	INIT_LIST_HEAD(&ghvm->functions);
+	ghvm->vm_status = GH_RM_VM_STATUS_NO_STATE;
+
+	return ghvm;
+}
+
+static int gh_vm_start(struct gh_vm *ghvm)
+{
+	struct gh_vm_mem *mapping;
+	struct gh_rm_hyp_resources *resources;
+	struct gh_resource *ghrsc;
+	u64 dtb_offset;
+	u32 mem_handle;
+	int ret, i, n;
+
+	down_write(&ghvm->status_lock);
+	if (ghvm->vm_status != GH_RM_VM_STATUS_NO_STATE) {
+		up_write(&ghvm->status_lock);
+		return 0;
+	}
+
+	ghvm->nb.notifier_call = gh_vm_rm_notification;
+	ret = gh_rm_notifier_register(ghvm->rm, &ghvm->nb);
+	if (ret)
+		goto err;
+
+	ret = gh_rm_alloc_vmid(ghvm->rm, 0);
+	if (ret < 0) {
+		gh_rm_notifier_unregister(ghvm->rm, &ghvm->nb);
+		goto err;
+	}
+	ghvm->vmid = ret;
+	ghvm->vm_status = GH_RM_VM_STATUS_LOAD;
+
+	mutex_lock(&ghvm->mm_lock);
+	list_for_each_entry(mapping, &ghvm->memory_mappings, list) {
+		mapping->parcel.acl_entries[0].vmid = cpu_to_le16(ghvm->vmid);
+		switch (mapping->share_type) {
+		case VM_MEM_LEND:
+			ret = gh_rm_mem_lend(ghvm->rm, &mapping->parcel);
+			break;
+		case VM_MEM_SHARE:
+			ret = gh_rm_mem_share(ghvm->rm, &mapping->parcel);
+			break;
+		}
+		if (ret) {
+			dev_warn(ghvm->parent, "Failed to %s parcel %d: %d\n",
+				mapping->share_type == VM_MEM_LEND ? "lend" : "share",
+				mapping->parcel.label, ret);
+			mutex_unlock(&ghvm->mm_lock);
+			goto err;
+		}
+	}
+	mutex_unlock(&ghvm->mm_lock);
+
+	mapping = gh_vm_mem_find_by_addr(ghvm, ghvm->dtb_config.guest_phys_addr,
+					ghvm->dtb_config.size);
+	if (!mapping) {
+		dev_warn(ghvm->parent, "Failed to find the memory_handle for DTB\n");
+		ret = -EINVAL;
+		goto err;
+	}
+
+	mem_handle = mapping->parcel.mem_handle;
+	dtb_offset = ghvm->dtb_config.guest_phys_addr - mapping->guest_phys_addr;
+
+	ret = gh_rm_vm_configure(ghvm->rm, ghvm->vmid, ghvm->auth, mem_handle,
+				0, 0, dtb_offset, ghvm->dtb_config.size);
+	if (ret) {
+		dev_warn(ghvm->parent, "Failed to configure VM: %d\n", ret);
+		goto err;
+	}
+
+	if (ghvm->auth == GH_RM_VM_AUTH_QCOM_ANDROID_PVM) {
+		mapping = gh_vm_mem_find_by_addr(ghvm, ghvm->fw_config.guest_phys_addr,
+						ghvm->fw_config.size);
+		if (!mapping) {
+			pr_warn("Failed to find the memory handle for pVM firmware\n");
+			ret = -EINVAL;
+			goto err;
+		}
+		ret = gh_rm_vm_set_firmware_mem(ghvm->rm, ghvm->vmid, &mapping->parcel,
+				ghvm->fw_config.guest_phys_addr - mapping->guest_phys_addr,
+				ghvm->fw_config.size);
+		if (ret) {
+			pr_warn("Failed to configure pVM firmware\n");
+			goto err;
+		}
+	}
+
+	ret = gh_rm_vm_init(ghvm->rm, ghvm->vmid);
+	if (ret) {
+		ghvm->vm_status = GH_RM_VM_STATUS_INIT_FAILED;
+		dev_warn(ghvm->parent, "Failed to initialize VM: %d\n", ret);
+		goto err;
+	}
+	ghvm->vm_status = GH_RM_VM_STATUS_READY;
+
+	ret = gh_rm_get_hyp_resources(ghvm->rm, ghvm->vmid, &resources);
+	if (ret) {
+		dev_warn(ghvm->parent, "Failed to get hypervisor resources for VM: %d\n", ret);
+		goto err;
+	}
+
+	for (i = 0, n = le32_to_cpu(resources->n_entries); i < n; i++) {
+		ghrsc = gh_rm_alloc_resource(ghvm->rm, &resources->entries[i]);
+		if (!ghrsc) {
+			ret = -ENOMEM;
+			goto err;
+		}
+
+		gh_vm_add_resource(ghvm, ghrsc);
+	}
+
+	ret = gh_rm_vm_start(ghvm->rm, ghvm->vmid);
+	if (ret) {
+		dev_warn(ghvm->parent, "Failed to start VM: %d\n", ret);
+		goto err;
+	}
+
+	ghvm->vm_status = GH_RM_VM_STATUS_RUNNING;
+	up_write(&ghvm->status_lock);
+	return ret;
+err:
+	/* gh_vm_free will handle releasing resources and reclaiming memory */
+	up_write(&ghvm->status_lock);
+	return ret;
+}
+
+static int gh_vm_ensure_started(struct gh_vm *ghvm)
+{
+	int ret;
+
+	ret = down_read_interruptible(&ghvm->status_lock);
+	if (ret)
+		return ret;
+
+	/* Unlikely because VM is typically started */
+	if (unlikely(ghvm->vm_status == GH_RM_VM_STATUS_NO_STATE)) {
+		up_read(&ghvm->status_lock);
+		ret = gh_vm_start(ghvm);
+		if (ret)
+			return ret;
+		/** gh_vm_start() is guaranteed to bring status out of
+		 * GH_RM_VM_STATUS_LOAD, thus infinitely recursive call is not
+		 * possible
+		 */
+		return gh_vm_ensure_started(ghvm);
+	}
+
+	/* Unlikely because VM is typically running */
+	if (unlikely(ghvm->vm_status != GH_RM_VM_STATUS_RUNNING))
+		ret = -ENODEV;
+
+	up_read(&ghvm->status_lock);
+	return ret;
+}
+
+static long gh_vm_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
+{
+	struct gh_vm *ghvm = filp->private_data;
+	void __user *argp = (void __user *)arg;
+	long r;
+	bool lend = false;
+
+	switch (cmd) {
+	case GH_VM_ANDROID_LEND_USER_MEM:
+		lend = true;
+		fallthrough;
+	case GH_VM_SET_USER_MEM_REGION: {
+		struct gh_userspace_memory_region region;
+
+		/* only allow owner task to add memory */
+		if (ghvm->mm != current->mm)
+			return -EPERM;
+
+		if (copy_from_user(&region, argp, sizeof(region)))
+			return -EFAULT;
+
+		/* All other flag bits are reserved for future use */
+		if (region.flags & ~(GH_MEM_ALLOW_READ | GH_MEM_ALLOW_WRITE | GH_MEM_ALLOW_EXEC))
+			return -EINVAL;
+
+		r = gh_vm_mem_alloc(ghvm, &region, lend);
+		break;
+	}
+	case GH_VM_SET_DTB_CONFIG: {
+		struct gh_vm_dtb_config dtb_config;
+
+		if (copy_from_user(&dtb_config, argp, sizeof(dtb_config)))
+			return -EFAULT;
+
+		if (overflows_type(dtb_config.guest_phys_addr + dtb_config.size, u64))
+			return -EOVERFLOW;
+
+		ghvm->dtb_config = dtb_config;
+
+		r = 0;
+		break;
+	}
+	case GH_VM_ANDROID_SET_FW_CONFIG: {
+		r = -EFAULT;
+		if (copy_from_user(&ghvm->fw_config, argp, sizeof(ghvm->fw_config)))
+			break;
+
+		ghvm->auth = GH_RM_VM_AUTH_QCOM_ANDROID_PVM;
+		r = 0;
+		break;
+	}
+	case GH_VM_START: {
+		r = gh_vm_ensure_started(ghvm);
+		break;
+	}
+	case GH_VM_ADD_FUNCTION: {
+		struct gh_fn_desc f;
+
+		if (copy_from_user(&f, argp, sizeof(f)))
+			return -EFAULT;
+
+		r = gh_vm_add_function_instance(ghvm, &f);
+		break;
+	}
+	case GH_VM_REMOVE_FUNCTION: {
+		struct gh_fn_desc f;
+
+		if (copy_from_user(&f, argp, sizeof(f)))
+			return -EFAULT;
+
+		r = gh_vm_rm_function_instance(ghvm, &f);
+		break;
+	}
+	default:
+		r = -ENOTTY;
+		break;
+	}
+
+	return r;
+}
+
+static void gh_vm_free(struct work_struct *work)
+{
+	struct gh_vm *ghvm = container_of(work, struct gh_vm, free_work);
+	int ret;
+
+	if (ghvm->vm_status == GH_RM_VM_STATUS_RUNNING)
+		gh_vm_stop(ghvm);
+
+	gh_vm_remove_functions(ghvm);
+	gh_vm_clean_resources(ghvm);
+
+	if (ghvm->vm_status != GH_RM_VM_STATUS_NO_STATE &&
+	    ghvm->vm_status != GH_RM_VM_STATUS_LOAD &&
+	    ghvm->vm_status != GH_RM_VM_STATUS_RESET) {
+		ret = gh_rm_vm_reset(ghvm->rm, ghvm->vmid);
+		if (ret)
+			dev_err(ghvm->parent, "Failed to reset the vm: %d\n", ret);
+		wait_event(ghvm->vm_status_wait, ghvm->vm_status == GH_RM_VM_STATUS_RESET);
+	}
+
+	gh_vm_mem_reclaim(ghvm);
+
+	if (ghvm->vm_status > GH_RM_VM_STATUS_NO_STATE) {
+		gh_rm_notifier_unregister(ghvm->rm, &ghvm->nb);
+
+		ret = gh_rm_dealloc_vmid(ghvm->rm, ghvm->vmid);
+		if (ret)
+			dev_warn(ghvm->parent, "Failed to deallocate vmid: %d\n", ret);
+	}
+
+	gh_rm_put(ghvm->rm);
+	mmdrop(ghvm->mm);
+	kfree(ghvm);
+}
+
+int __must_check gh_vm_get(struct gh_vm *ghvm)
+{
+	return kref_get_unless_zero(&ghvm->kref);
+}
+EXPORT_SYMBOL_GPL(gh_vm_get);
+
+static void _gh_vm_put(struct kref *kref)
+{
+	struct gh_vm *ghvm = container_of(kref, struct gh_vm, kref);
+
+	/* VM will be reset and make RM calls which can interruptible sleep.
+	 * Defer to a work so this thread can receive signal.
+	 */
+	schedule_work(&ghvm->free_work);
+}
+
+void gh_vm_put(struct gh_vm *ghvm)
+{
+	kref_put(&ghvm->kref, _gh_vm_put);
+}
+EXPORT_SYMBOL_GPL(gh_vm_put);
+
+static int gh_vm_release(struct inode *inode, struct file *filp)
+{
+	struct gh_vm *ghvm = filp->private_data;
+
+	gh_vm_put(ghvm);
+	return 0;
+}
+
+static const struct file_operations gh_vm_fops = {
+	.owner = THIS_MODULE,
+	.unlocked_ioctl = gh_vm_ioctl,
+	.compat_ioctl	= compat_ptr_ioctl,
+	.release = gh_vm_release,
+	.llseek = noop_llseek,
+};
+
+static long gh_dev_ioctl_create_vm(struct gh_rm *rm, unsigned long arg)
+{
+	struct gh_vm *ghvm;
+	struct file *file;
+	int fd, err;
+
+	/* arg reserved for future use. */
+	if (arg)
+		return -EINVAL;
+
+	ghvm = gh_vm_alloc(rm);
+	if (IS_ERR(ghvm))
+		return PTR_ERR(ghvm);
+
+	fd = get_unused_fd_flags(O_CLOEXEC);
+	if (fd < 0) {
+		err = fd;
+		goto err_destroy_vm;
+	}
+
+	file = anon_inode_getfile("gunyah-vm", &gh_vm_fops, ghvm, O_RDWR);
+	if (IS_ERR(file)) {
+		err = PTR_ERR(file);
+		goto err_put_fd;
+	}
+
+	fd_install(fd, file);
+
+	return fd;
+
+err_put_fd:
+	put_unused_fd(fd);
+err_destroy_vm:
+	gh_vm_put(ghvm);
+	return err;
+}
+
+long gh_dev_vm_mgr_ioctl(struct gh_rm *rm, unsigned int cmd, unsigned long arg)
+{
+	switch (cmd) {
+	case GH_CREATE_VM:
+		return gh_dev_ioctl_create_vm(rm, arg);
+	default:
+		return -ENOTTY;
+	}
+}
diff --git a/drivers/virt/gunyah/vm_mgr.h b/drivers/virt/gunyah/vm_mgr.h
new file mode 100644
index 0000000..6b88ba6
--- /dev/null
+++ b/drivers/virt/gunyah/vm_mgr.h
@@ -0,0 +1,71 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+#ifndef _GH_VM_MGR_H
+#define _GH_VM_MGR_H
+
+#include <linux/gunyah_rsc_mgr.h>
+#include <linux/gunyah_vm_mgr.h>
+#include <linux/list.h>
+#include <linux/kref.h>
+#include <linux/miscdevice.h>
+#include <linux/mutex.h>
+#include <linux/rwsem.h>
+#include <linux/wait.h>
+
+#include <uapi/linux/gunyah.h>
+
+long gh_dev_vm_mgr_ioctl(struct gh_rm *rm, unsigned int cmd, unsigned long arg);
+
+enum gh_vm_mem_share_type {
+	VM_MEM_SHARE,
+	VM_MEM_LEND,
+};
+
+struct gh_vm_mem {
+	struct list_head list;
+	enum gh_vm_mem_share_type share_type;
+	struct gh_rm_mem_parcel parcel;
+
+	__u64 guest_phys_addr;
+	struct page **pages;
+	unsigned long npages;
+};
+
+struct gh_vm {
+	u16 vmid;
+	struct gh_rm *rm;
+	struct device *parent;
+	enum gh_rm_vm_auth_mechanism auth;
+	struct gh_vm_dtb_config dtb_config;
+	struct gh_vm_firmware_config fw_config;
+
+	struct notifier_block nb;
+	enum gh_rm_vm_status vm_status;
+	wait_queue_head_t vm_status_wait;
+	struct rw_semaphore status_lock;
+	struct gh_vm_exit_info exit_info;
+
+	struct work_struct free_work;
+	struct kref kref;
+	struct mm_struct *mm; /* userspace tied to this vm */
+	struct mutex mm_lock;
+	struct list_head memory_mappings;
+	struct mutex fn_lock;
+	struct list_head functions;
+	struct mutex resources_lock;
+	struct list_head resources;
+	struct list_head resource_tickets;
+	struct rb_root mmio_handler_root;
+	struct rw_semaphore mmio_handler_lock;
+};
+
+int gh_vm_mem_alloc(struct gh_vm *ghvm, struct gh_userspace_memory_region *region, bool lend);
+void gh_vm_mem_reclaim(struct gh_vm *ghvm);
+struct gh_vm_mem *gh_vm_mem_find_by_addr(struct gh_vm *ghvm, u64 guest_phys_addr, u32 size);
+
+int gh_vm_mmio_write(struct gh_vm *ghvm, u64 addr, u32 len, u64 data);
+
+#endif
diff --git a/drivers/virt/gunyah/vm_mgr_mm.c b/drivers/virt/gunyah/vm_mgr_mm.c
new file mode 100644
index 0000000..f7ddfd8
--- /dev/null
+++ b/drivers/virt/gunyah/vm_mgr_mm.c
@@ -0,0 +1,259 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+#define pr_fmt(fmt) "gh_vm_mgr: " fmt
+
+#include <linux/gunyah_rsc_mgr.h>
+#include <linux/mm.h>
+
+#include <uapi/linux/gunyah.h>
+
+#include "vm_mgr.h"
+
+static bool pages_are_mergeable(struct page *a, struct page *b)
+{
+	return page_to_pfn(a) + 1 == page_to_pfn(b);
+}
+
+static bool gh_vm_mem_overlap(struct gh_vm_mem *a, u64 addr, u64 size)
+{
+	u64 a_end = a->guest_phys_addr + (a->npages << PAGE_SHIFT);
+	u64 end = addr + size;
+
+	return a->guest_phys_addr < end && addr < a_end;
+}
+
+static struct gh_vm_mem *__gh_vm_mem_find_by_label(struct gh_vm *ghvm, u32 label)
+	__must_hold(&ghvm->mm_lock)
+{
+	struct gh_vm_mem *mapping;
+
+	list_for_each_entry(mapping, &ghvm->memory_mappings, list)
+		if (mapping->parcel.label == label)
+			return mapping;
+
+	return NULL;
+}
+
+static void gh_vm_mem_reclaim_mapping(struct gh_vm *ghvm, struct gh_vm_mem *mapping)
+	__must_hold(&ghvm->mm_lock)
+{
+	int ret = 0;
+
+	if (mapping->parcel.mem_handle != GH_MEM_HANDLE_INVAL) {
+		ret = gh_rm_mem_reclaim(ghvm->rm, &mapping->parcel);
+		if (ret)
+			pr_warn("Failed to reclaim memory parcel for label %d: %d\n",
+				mapping->parcel.label, ret);
+	}
+
+	if (!ret) {
+		unpin_user_pages(mapping->pages, mapping->npages);
+		account_locked_vm(ghvm->mm, mapping->npages, false);
+	}
+
+	kfree(mapping->pages);
+	kfree(mapping->parcel.acl_entries);
+	kfree(mapping->parcel.mem_entries);
+
+	list_del(&mapping->list);
+}
+
+void gh_vm_mem_reclaim(struct gh_vm *ghvm)
+{
+	struct gh_vm_mem *mapping, *tmp;
+
+	mutex_lock(&ghvm->mm_lock);
+
+	list_for_each_entry_safe(mapping, tmp, &ghvm->memory_mappings, list) {
+		gh_vm_mem_reclaim_mapping(ghvm, mapping);
+		kfree(mapping);
+	}
+
+	mutex_unlock(&ghvm->mm_lock);
+}
+
+struct gh_vm_mem *gh_vm_mem_find_by_addr(struct gh_vm *ghvm, u64 guest_phys_addr, u32 size)
+{
+	struct gh_vm_mem *mapping;
+
+	if (overflows_type(guest_phys_addr + size, u64))
+		return NULL;
+
+	mutex_lock(&ghvm->mm_lock);
+
+	list_for_each_entry(mapping, &ghvm->memory_mappings, list) {
+		if (gh_vm_mem_overlap(mapping, guest_phys_addr, size))
+			goto unlock;
+	}
+
+	mapping = NULL;
+unlock:
+	mutex_unlock(&ghvm->mm_lock);
+	return mapping;
+}
+
+int gh_vm_mem_alloc(struct gh_vm *ghvm, struct gh_userspace_memory_region *region, bool lend)
+{
+	struct gh_vm_mem *mapping, *tmp_mapping;
+	struct page *curr_page, *prev_page;
+	struct gh_rm_mem_parcel *parcel;
+	int i, j, pinned, ret = 0;
+	unsigned int gup_flags;
+	size_t entry_size;
+	u16 vmid;
+
+	if (!region->memory_size || !PAGE_ALIGNED(region->memory_size) ||
+		!PAGE_ALIGNED(region->userspace_addr) ||
+		!PAGE_ALIGNED(region->guest_phys_addr))
+		return -EINVAL;
+
+	if (overflows_type(region->guest_phys_addr + region->memory_size, u64))
+		return -EOVERFLOW;
+
+	ret = mutex_lock_interruptible(&ghvm->mm_lock);
+	if (ret)
+		return ret;
+
+	mapping = __gh_vm_mem_find_by_label(ghvm, region->label);
+	if (mapping) {
+		ret = -EEXIST;
+		goto unlock;
+	}
+
+	list_for_each_entry(tmp_mapping, &ghvm->memory_mappings, list) {
+		if (gh_vm_mem_overlap(tmp_mapping, region->guest_phys_addr,
+					region->memory_size)) {
+			ret = -EEXIST;
+			goto unlock;
+		}
+	}
+
+	mapping = kzalloc(sizeof(*mapping), GFP_KERNEL_ACCOUNT);
+	if (!mapping) {
+		ret = -ENOMEM;
+		goto unlock;
+	}
+
+	mapping->guest_phys_addr = region->guest_phys_addr;
+	mapping->npages = region->memory_size >> PAGE_SHIFT;
+	parcel = &mapping->parcel;
+	parcel->label = region->label;
+	parcel->mem_handle = GH_MEM_HANDLE_INVAL; /* to be filled later by mem_share/mem_lend */
+	parcel->mem_type = GH_RM_MEM_TYPE_NORMAL;
+
+	ret = account_locked_vm(ghvm->mm, mapping->npages, true);
+	if (ret)
+		goto free_mapping;
+
+	mapping->pages = kcalloc(mapping->npages, sizeof(*mapping->pages), GFP_KERNEL_ACCOUNT);
+	if (!mapping->pages) {
+		ret = -ENOMEM;
+		mapping->npages = 0; /* update npages for reclaim */
+		goto unlock_pages;
+	}
+
+	gup_flags = FOLL_LONGTERM;
+	if (region->flags & GH_MEM_ALLOW_WRITE)
+		gup_flags |= FOLL_WRITE;
+
+	pinned = pin_user_pages_fast(region->userspace_addr, mapping->npages,
+					gup_flags, mapping->pages);
+	if (pinned < 0) {
+		ret = pinned;
+		goto free_pages;
+	} else if (pinned != mapping->npages) {
+		ret = -EFAULT;
+		mapping->npages = pinned; /* update npages for reclaim */
+		goto unpin_pages;
+	}
+
+	if (lend) {
+		parcel->n_acl_entries = 1;
+		mapping->share_type = VM_MEM_LEND;
+	} else {
+		parcel->n_acl_entries = 2;
+		mapping->share_type = VM_MEM_SHARE;
+	}
+	parcel->acl_entries = kcalloc(parcel->n_acl_entries,
+				      sizeof(*parcel->acl_entries), GFP_KERNEL);
+	if (!parcel->acl_entries) {
+		ret = -ENOMEM;
+		goto unpin_pages;
+	}
+
+	/* acl_entries[0].vmid will be this VM's vmid. We'll fill it when the
+	 * VM is starting and we know the VM's vmid.
+	 */
+	if (region->flags & GH_MEM_ALLOW_READ)
+		parcel->acl_entries[0].perms |= GH_RM_ACL_R;
+	if (region->flags & GH_MEM_ALLOW_WRITE)
+		parcel->acl_entries[0].perms |= GH_RM_ACL_W;
+	if (region->flags & GH_MEM_ALLOW_EXEC)
+		parcel->acl_entries[0].perms |= GH_RM_ACL_X;
+
+	if (!lend) {
+		ret = gh_rm_get_vmid(ghvm->rm, &vmid);
+		if (ret)
+			goto free_acl;
+
+		parcel->acl_entries[1].vmid = cpu_to_le16(vmid);
+		/* Host assumed to have all these permissions. Gunyah will not
+		* grant new permissions if host actually had less than RWX
+		*/
+		parcel->acl_entries[1].perms = GH_RM_ACL_R | GH_RM_ACL_W | GH_RM_ACL_X;
+	}
+
+	parcel->n_mem_entries = 1;
+	for (i = 1; i < mapping->npages; i++) {
+		if (!pages_are_mergeable(mapping->pages[i - 1], mapping->pages[i]))
+			parcel->n_mem_entries++;
+	}
+
+	parcel->mem_entries = kcalloc(parcel->n_mem_entries,
+					sizeof(parcel->mem_entries[0]),
+					GFP_KERNEL_ACCOUNT);
+	if (!parcel->mem_entries) {
+		ret = -ENOMEM;
+		goto free_acl;
+	}
+
+	/* reduce number of entries by combining contiguous pages into single memory entry */
+	prev_page = mapping->pages[0];
+	parcel->mem_entries[0].phys_addr = cpu_to_le64(page_to_phys(prev_page));
+	entry_size = PAGE_SIZE;
+	for (i = 1, j = 0; i < mapping->npages; i++) {
+		curr_page = mapping->pages[i];
+		if (pages_are_mergeable(prev_page, curr_page)) {
+			entry_size += PAGE_SIZE;
+		} else {
+			parcel->mem_entries[j].size = cpu_to_le64(entry_size);
+			j++;
+			parcel->mem_entries[j].phys_addr =
+				cpu_to_le64(page_to_phys(curr_page));
+			entry_size = PAGE_SIZE;
+		}
+
+		prev_page = curr_page;
+	}
+	parcel->mem_entries[j].size = cpu_to_le64(entry_size);
+
+	list_add(&mapping->list, &ghvm->memory_mappings);
+	mutex_unlock(&ghvm->mm_lock);
+	return 0;
+free_acl:
+	kfree(parcel->acl_entries);
+unpin_pages:
+	unpin_user_pages(mapping->pages, pinned);
+free_pages:
+	kfree(mapping->pages);
+unlock_pages:
+	account_locked_vm(ghvm->mm, mapping->npages, false);
+free_mapping:
+	kfree(mapping);
+unlock:
+	mutex_unlock(&ghvm->mm_lock);
+	return ret;
+}
diff --git a/drivers/virtio/Kconfig b/drivers/virtio/Kconfig
index 0a53a61..8f4730f 100644
--- a/drivers/virtio/Kconfig
+++ b/drivers/virtio/Kconfig
@@ -167,7 +167,7 @@
 	 If unsure, say 'N'.
 
 config VIRTIO_DMA_SHARED_BUFFER
-	tristate
+	tristate "Virtio DMA shared buffer support"
 	depends on DMA_SHARED_BUFFER
 	help
 	 This option adds a flavor of dma buffers that are backed by
diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c
index 3f78a3a..72fe240 100644
--- a/drivers/virtio/virtio_balloon.c
+++ b/drivers/virtio/virtio_balloon.c
@@ -553,11 +553,15 @@ static int init_vqs(struct virtio_balloon *vb)
 		virtqueue_kick(vb->stats_vq);
 	}
 
-	if (virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_FREE_PAGE_HINT))
+	if (virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_FREE_PAGE_HINT)) {
 		vb->free_page_vq = vqs[VIRTIO_BALLOON_VQ_FREE_PAGE];
+		virtqueue_disable_dma_api_for_buffers(vb->free_page_vq);
+	}
 
-	if (virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_REPORTING))
+	if (virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_REPORTING)) {
 		vb->reporting_vq = vqs[VIRTIO_BALLOON_VQ_REPORTING];
+		virtqueue_disable_dma_api_for_buffers(vb->reporting_vq);
+	}
 
 	return 0;
 }
@@ -1093,7 +1097,6 @@ static int virtballoon_validate(struct virtio_device *vdev)
 	else if (!virtio_has_feature(vdev, VIRTIO_BALLOON_F_PAGE_POISON))
 		__virtio_clear_bit(vdev, VIRTIO_BALLOON_F_REPORTING);
 
-	__virtio_clear_bit(vdev, VIRTIO_F_ACCESS_PLATFORM);
 	return 0;
 }
 
diff --git a/drivers/virtio/virtio_dma_buf.c b/drivers/virtio/virtio_dma_buf.c
index 2521a75..19a843f 100644
--- a/drivers/virtio/virtio_dma_buf.c
+++ b/drivers/virtio/virtio_dma_buf.c
@@ -25,11 +25,14 @@ struct dma_buf *virtio_dma_buf_export
 			     const struct virtio_dma_buf_ops, ops);
 
 	if (!exp_info->ops ||
-	    exp_info->ops->attach != &virtio_dma_buf_attach ||
 	    !virtio_ops->get_uuid) {
 		return ERR_PTR(-EINVAL);
 	}
 
+	if (!(IS_ENABLED(CONFIG_CFI_CLANG) && IS_ENABLED(CONFIG_MODULES)) &&
+	    exp_info->ops->attach != &virtio_dma_buf_attach)
+		return ERR_PTR(-EINVAL);
+
 	return dma_buf_export(exp_info);
 }
 EXPORT_SYMBOL(virtio_dma_buf_export);
@@ -60,6 +63,9 @@ EXPORT_SYMBOL(virtio_dma_buf_attach);
  */
 bool is_virtio_dma_buf(struct dma_buf *dma_buf)
 {
+	if (IS_ENABLED(CONFIG_CFI_CLANG) && IS_ENABLED(CONFIG_MODULES))
+		return true;
+
 	return dma_buf->ops->attach == &virtio_dma_buf_attach;
 }
 EXPORT_SYMBOL(is_virtio_dma_buf);
diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
index 90d514c..6016865 100644
--- a/drivers/virtio/virtio_ring.c
+++ b/drivers/virtio/virtio_ring.c
@@ -2873,4 +2873,14 @@ const struct vring *virtqueue_get_vring(struct virtqueue *vq)
 }
 EXPORT_SYMBOL_GPL(virtqueue_get_vring);
 
+/*
+ * Prevents use of DMA API for buffers passed via the specified virtqueue.
+ * DMA API may still be used for the vrings themselves.
+ */
+void virtqueue_disable_dma_api_for_buffers(struct virtqueue *vq)
+{
+	to_vvq(vq)->use_dma_api = false;
+}
+EXPORT_SYMBOL_GPL(virtqueue_disable_dma_api_for_buffers);
+
 MODULE_LICENSE("GPL");
diff --git a/drivers/xen/gntalloc.c b/drivers/xen/gntalloc.c
index a15729b..26ffb87 100644
--- a/drivers/xen/gntalloc.c
+++ b/drivers/xen/gntalloc.c
@@ -525,7 +525,7 @@ static int gntalloc_mmap(struct file *filp, struct vm_area_struct *vma)
 
 	vma->vm_private_data = vm_priv;
 
-	vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP;
+	vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP);
 
 	vma->vm_ops = &gntalloc_vmops;
 
diff --git a/drivers/xen/gntdev.c b/drivers/xen/gntdev.c
index 4d9a305..61faea1 100644
--- a/drivers/xen/gntdev.c
+++ b/drivers/xen/gntdev.c
@@ -1055,10 +1055,10 @@ static int gntdev_mmap(struct file *flip, struct vm_area_struct *vma)
 
 	vma->vm_ops = &gntdev_vmops;
 
-	vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP | VM_MIXEDMAP;
+	vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP | VM_MIXEDMAP);
 
 	if (use_ptemod)
-		vma->vm_flags |= VM_DONTCOPY;
+		vm_flags_set(vma, VM_DONTCOPY);
 
 	vma->vm_private_data = map;
 	if (map->flags) {
diff --git a/drivers/xen/privcmd-buf.c b/drivers/xen/privcmd-buf.c
index dd5bbb6..2fa10ca 100644
--- a/drivers/xen/privcmd-buf.c
+++ b/drivers/xen/privcmd-buf.c
@@ -156,7 +156,7 @@ static int privcmd_buf_mmap(struct file *file, struct vm_area_struct *vma)
 	vma_priv->file_priv = file_priv;
 	vma_priv->users = 1;
 
-	vma->vm_flags |= VM_IO | VM_DONTEXPAND;
+	vm_flags_set(vma, VM_IO | VM_DONTEXPAND);
 	vma->vm_ops = &privcmd_buf_vm_ops;
 	vma->vm_private_data = vma_priv;
 
diff --git a/drivers/xen/privcmd.c b/drivers/xen/privcmd.c
index 1edf45e..e2f580e 100644
--- a/drivers/xen/privcmd.c
+++ b/drivers/xen/privcmd.c
@@ -934,8 +934,8 @@ static int privcmd_mmap(struct file *file, struct vm_area_struct *vma)
 {
 	/* DONTCOPY is essential for Xen because copy_page_range doesn't know
 	 * how to recreate these mappings */
-	vma->vm_flags |= VM_IO | VM_PFNMAP | VM_DONTCOPY |
-			 VM_DONTEXPAND | VM_DONTDUMP;
+	vm_flags_set(vma, VM_IO | VM_PFNMAP | VM_DONTCOPY |
+			 VM_DONTEXPAND | VM_DONTDUMP);
 	vma->vm_ops = &privcmd_vm_ops;
 	vma->vm_private_data = NULL;
 
diff --git a/fs/Kconfig b/fs/Kconfig
index 703a1ce..7d27482 100644
--- a/fs/Kconfig
+++ b/fs/Kconfig
@@ -127,6 +127,7 @@
 source "fs/autofs/Kconfig"
 source "fs/fuse/Kconfig"
 source "fs/overlayfs/Kconfig"
+source "fs/incfs/Kconfig"
 
 menu "Caches"
 
diff --git a/fs/Makefile b/fs/Makefile
index 9b7bcf6..102e4cd 100644
--- a/fs/Makefile
+++ b/fs/Makefile
@@ -111,6 +111,7 @@
 obj-$(CONFIG_FUSE_FS)		+= fuse/
 obj-$(CONFIG_OVERLAY_FS)	+= overlayfs/
 obj-$(CONFIG_ORANGEFS_FS)       += orangefs/
+obj-$(CONFIG_INCREMENTAL_FS)	+= incfs/
 obj-$(CONFIG_UDF_FS)		+= udf/
 obj-$(CONFIG_SUN_OPENPROMFS)	+= openpromfs/
 obj-$(CONFIG_OMFS_FS)		+= omfs/
diff --git a/fs/aio.c b/fs/aio.c
index e85ba0b..b0b17bd 100644
--- a/fs/aio.c
+++ b/fs/aio.c
@@ -394,7 +394,7 @@ static const struct vm_operations_struct aio_ring_vm_ops = {
 
 static int aio_ring_mmap(struct file *file, struct vm_area_struct *vma)
 {
-	vma->vm_flags |= VM_DONTEXPAND;
+	vm_flags_set(vma, VM_DONTEXPAND);
 	vma->vm_ops = &aio_ring_vm_ops;
 	return 0;
 }
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
index 58785dc..fe99865 100644
--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -13,6 +13,7 @@
 #include <linux/writeback.h>
 #include <linux/pagevec.h>
 #include <linux/prefetch.h>
+#include <linux/cleancache.h>
 #include <linux/fsverity.h>
 #include "misc.h"
 #include "extent_io.h"
@@ -1764,6 +1765,15 @@ static int btrfs_do_readpage(struct page *page, struct extent_map **em_cached,
 		goto out;
 	}
 
+	if (!PageUptodate(page)) {
+		if (cleancache_get_page(page) == 0) {
+			BUG_ON(blocksize != PAGE_SIZE);
+			unlock_extent(tree, start, end, NULL);
+			unlock_page(page);
+			goto out;
+		}
+	}
+
 	if (page->index == last_byte >> PAGE_SHIFT) {
 		size_t zero_offset = offset_in_page(last_byte);
 
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
index 6438300..84c0e5b 100644
--- a/fs/btrfs/super.c
+++ b/fs/btrfs/super.c
@@ -23,6 +23,7 @@
 #include <linux/miscdevice.h>
 #include <linux/magic.h>
 #include <linux/slab.h>
+#include <linux/cleancache.h>
 #include <linux/ratelimit.h>
 #include <linux/crc32c.h>
 #include <linux/btrfs.h>
@@ -1480,6 +1481,7 @@ static int btrfs_fill_super(struct super_block *sb,
 		goto fail_close;
 	}
 
+	cleancache_init_fs(sb);
 	sb->s_flags |= SB_ACTIVE;
 	return 0;
 
diff --git a/fs/btrfs/verity.c b/fs/btrfs/verity.c
index ee00e33..c5763db 100644
--- a/fs/btrfs/verity.c
+++ b/fs/btrfs/verity.c
@@ -777,30 +777,25 @@ static struct page *btrfs_read_merkle_tree_page(struct inode *inode,
 /*
  * fsverity op that writes a Merkle tree block into the btree.
  *
- * @inode:          inode to write a Merkle tree block for
- * @buf:            Merkle tree data block to write
- * @index:          index of the block in the Merkle tree
- * @log_blocksize:  log base 2 of the Merkle tree block size
- *
- * Note that the block size could be different from the page size, so it is not
- * safe to assume that index is a page index.
+ * @inode:	inode to write a Merkle tree block for
+ * @buf:	Merkle tree block to write
+ * @pos:	the position of the block in the Merkle tree (in bytes)
+ * @size:	the Merkle tree block size (in bytes)
  *
  * Returns 0 on success or negative error code on failure
  */
 static int btrfs_write_merkle_tree_block(struct inode *inode, const void *buf,
-					u64 index, int log_blocksize)
+					 u64 pos, unsigned int size)
 {
-	u64 off = index << log_blocksize;
-	u64 len = 1ULL << log_blocksize;
 	loff_t merkle_pos = merkle_file_pos(inode);
 
 	if (merkle_pos < 0)
 		return merkle_pos;
-	if (merkle_pos > inode->i_sb->s_maxbytes - off - len)
+	if (merkle_pos > inode->i_sb->s_maxbytes - pos - size)
 		return -EFBIG;
 
 	return write_key_bytes(BTRFS_I(inode), BTRFS_VERITY_MERKLE_ITEM_KEY,
-			       off, buf, len);
+			       pos, buf, size);
 }
 
 const struct fsverity_operations btrfs_verityops = {
diff --git a/fs/buffer.c b/fs/buffer.c
index d9c6d1f..623e77d 100644
--- a/fs/buffer.c
+++ b/fs/buffer.c
@@ -48,6 +48,7 @@
 #include <linux/sched/mm.h>
 #include <trace/events/block.h>
 #include <linux/fscrypt.h>
+#include <linux/fsverity.h>
 
 #include "internal.h"
 
@@ -295,20 +296,53 @@ static void end_buffer_async_read(struct buffer_head *bh, int uptodate)
 	return;
 }
 
-struct decrypt_bh_ctx {
+struct postprocess_bh_ctx {
 	struct work_struct work;
 	struct buffer_head *bh;
 };
 
+static void verify_bh(struct work_struct *work)
+{
+	struct postprocess_bh_ctx *ctx =
+		container_of(work, struct postprocess_bh_ctx, work);
+	struct buffer_head *bh = ctx->bh;
+	bool valid;
+
+	valid = fsverity_verify_blocks(page_folio(bh->b_page), bh->b_size,
+				       bh_offset(bh));
+	end_buffer_async_read(bh, valid);
+	kfree(ctx);
+}
+
+static bool need_fsverity(struct buffer_head *bh)
+{
+	struct page *page = bh->b_page;
+	struct inode *inode = page->mapping->host;
+
+	return fsverity_active(inode) &&
+		/* needed by ext4 */
+		page->index < DIV_ROUND_UP(inode->i_size, PAGE_SIZE);
+}
+
 static void decrypt_bh(struct work_struct *work)
 {
-	struct decrypt_bh_ctx *ctx =
-		container_of(work, struct decrypt_bh_ctx, work);
+	struct postprocess_bh_ctx *ctx =
+		container_of(work, struct postprocess_bh_ctx, work);
 	struct buffer_head *bh = ctx->bh;
 	int err;
 
-	err = fscrypt_decrypt_pagecache_blocks(bh->b_page, bh->b_size,
-					       bh_offset(bh));
+	err = fscrypt_decrypt_pagecache_blocks(page_folio(bh->b_page),
+					       bh->b_size, bh_offset(bh));
+	if (err == 0 && need_fsverity(bh)) {
+		/*
+		 * We use different work queues for decryption and for verity
+		 * because verity may require reading metadata pages that need
+		 * decryption, and we shouldn't recurse to the same workqueue.
+		 */
+		INIT_WORK(&ctx->work, verify_bh);
+		fsverity_enqueue_verify_work(&ctx->work);
+		return;
+	}
 	end_buffer_async_read(bh, err == 0);
 	kfree(ctx);
 }
@@ -319,15 +353,24 @@ static void decrypt_bh(struct work_struct *work)
  */
 static void end_buffer_async_read_io(struct buffer_head *bh, int uptodate)
 {
-	/* Decrypt if needed */
-	if (uptodate &&
-	    fscrypt_inode_uses_fs_layer_crypto(bh->b_page->mapping->host)) {
-		struct decrypt_bh_ctx *ctx = kmalloc(sizeof(*ctx), GFP_ATOMIC);
+	struct inode *inode = bh->b_page->mapping->host;
+	bool decrypt = fscrypt_inode_uses_fs_layer_crypto(inode);
+	bool verify = need_fsverity(bh);
+
+	/* Decrypt (with fscrypt) and/or verify (with fsverity) if needed. */
+	if (uptodate && (decrypt || verify)) {
+		struct postprocess_bh_ctx *ctx =
+			kmalloc(sizeof(*ctx), GFP_ATOMIC);
 
 		if (ctx) {
-			INIT_WORK(&ctx->work, decrypt_bh);
 			ctx->bh = bh;
-			fscrypt_enqueue_decrypt_work(&ctx->work);
+			if (decrypt) {
+				INIT_WORK(&ctx->work, decrypt_bh);
+				fscrypt_enqueue_decrypt_work(&ctx->work);
+			} else {
+				INIT_WORK(&ctx->work, verify_bh);
+				fsverity_enqueue_verify_work(&ctx->work);
+			}
 			return;
 		}
 		uptodate = 0;
@@ -2245,6 +2288,11 @@ int block_read_full_folio(struct folio *folio, get_block_t *get_block)
 	int nr, i;
 	int fully_mapped = 1;
 	bool page_error = false;
+	loff_t limit = i_size_read(inode);
+
+	/* This is needed for ext4. */
+	if (IS_ENABLED(CONFIG_FS_VERITY) && IS_VERITY(inode))
+		limit = inode->i_sb->s_maxbytes;
 
 	VM_BUG_ON_FOLIO(folio_test_large(folio), folio);
 
@@ -2253,7 +2301,7 @@ int block_read_full_folio(struct folio *folio, get_block_t *get_block)
 	bbits = block_size_bits(blocksize);
 
 	iblock = (sector_t)folio->index << (PAGE_SHIFT - bbits);
-	lblock = (i_size_read(inode)+blocksize-1) >> bbits;
+	lblock = (limit+blocksize-1) >> bbits;
 	bh = head;
 	nr = 0;
 	i = 0;
diff --git a/fs/cramfs/inode.c b/fs/cramfs/inode.c
index 6dae27d6..6a8e49f9 100644
--- a/fs/cramfs/inode.c
+++ b/fs/cramfs/inode.c
@@ -408,7 +408,7 @@ static int cramfs_physmem_mmap(struct file *file, struct vm_area_struct *vma)
 		 * unpopulated ptes via cramfs_read_folio().
 		 */
 		int i;
-		vma->vm_flags |= VM_MIXEDMAP;
+		vm_flags_set(vma, VM_MIXEDMAP);
 		for (i = 0; i < pages && !ret; i++) {
 			vm_fault_t vmf;
 			unsigned long off = i * PAGE_SIZE;
diff --git a/fs/crypto/bio.c b/fs/crypto/bio.c
index 1b44031..62e1a3d 100644
--- a/fs/crypto/bio.c
+++ b/fs/crypto/bio.c
@@ -30,13 +30,11 @@
  */
 bool fscrypt_decrypt_bio(struct bio *bio)
 {
-	struct bio_vec *bv;
-	struct bvec_iter_all iter_all;
+	struct folio_iter fi;
 
-	bio_for_each_segment_all(bv, bio, iter_all) {
-		struct page *page = bv->bv_page;
-		int err = fscrypt_decrypt_pagecache_blocks(page, bv->bv_len,
-							   bv->bv_offset);
+	bio_for_each_folio_all(fi, bio) {
+		int err = fscrypt_decrypt_pagecache_blocks(fi.folio, fi.length,
+							   fi.offset);
 
 		if (err) {
 			bio->bi_status = errno_to_blk_status(err);
@@ -71,7 +69,7 @@ static int fscrypt_zeroout_range_inline_crypt(const struct inode *inode,
 					pblk << (blockbits - SECTOR_SHIFT);
 		}
 		ret = bio_add_page(bio, ZERO_PAGE(0), bytes_this_page, 0);
-		if (WARN_ON(ret != bytes_this_page)) {
+		if (WARN_ON_ONCE(ret != bytes_this_page)) {
 			err = -EIO;
 			goto out;
 		}
@@ -149,7 +147,7 @@ int fscrypt_zeroout_range(const struct inode *inode, pgoff_t lblk,
 			break;
 	}
 	nr_pages = i;
-	if (WARN_ON(nr_pages <= 0))
+	if (WARN_ON_ONCE(nr_pages <= 0))
 		return -EINVAL;
 
 	/* This always succeeds since __GFP_DIRECT_RECLAIM is set. */
@@ -172,7 +170,7 @@ int fscrypt_zeroout_range(const struct inode *inode, pgoff_t lblk,
 			offset += blocksize;
 			if (offset == PAGE_SIZE || len == 0) {
 				ret = bio_add_page(bio, pages[i++], offset, 0);
-				if (WARN_ON(ret != offset)) {
+				if (WARN_ON_ONCE(ret != offset)) {
 					err = -EIO;
 					goto out;
 				}
diff --git a/fs/crypto/crypto.c b/fs/crypto/crypto.c
index e78be66..6a837e4 100644
--- a/fs/crypto/crypto.c
+++ b/fs/crypto/crypto.c
@@ -237,41 +237,43 @@ EXPORT_SYMBOL(fscrypt_encrypt_block_inplace);
 
 /**
  * fscrypt_decrypt_pagecache_blocks() - Decrypt filesystem blocks in a
- *					pagecache page
- * @page:      The locked pagecache page containing the block(s) to decrypt
+ *					pagecache folio
+ * @folio:     The locked pagecache folio containing the block(s) to decrypt
  * @len:       Total size of the block(s) to decrypt.  Must be a nonzero
  *		multiple of the filesystem's block size.
- * @offs:      Byte offset within @page of the first block to decrypt.  Must be
+ * @offs:      Byte offset within @folio of the first block to decrypt.  Must be
  *		a multiple of the filesystem's block size.
  *
- * The specified block(s) are decrypted in-place within the pagecache page,
- * which must still be locked and not uptodate.  Normally, blocksize ==
- * PAGE_SIZE and the whole page is decrypted at once.
+ * The specified block(s) are decrypted in-place within the pagecache folio,
+ * which must still be locked and not uptodate.
  *
  * This is for use by the filesystem's ->readahead() method.
  *
  * Return: 0 on success; -errno on failure
  */
-int fscrypt_decrypt_pagecache_blocks(struct page *page, unsigned int len,
-				     unsigned int offs)
+int fscrypt_decrypt_pagecache_blocks(struct folio *folio, size_t len,
+				     size_t offs)
 {
-	const struct inode *inode = page->mapping->host;
+	const struct inode *inode = folio->mapping->host;
 	const unsigned int blockbits = inode->i_blkbits;
 	const unsigned int blocksize = 1 << blockbits;
-	u64 lblk_num = ((u64)page->index << (PAGE_SHIFT - blockbits)) +
+	u64 lblk_num = ((u64)folio->index << (PAGE_SHIFT - blockbits)) +
 		       (offs >> blockbits);
-	unsigned int i;
+	size_t i;
 	int err;
 
-	if (WARN_ON_ONCE(!PageLocked(page)))
+	if (WARN_ON_ONCE(!folio_test_locked(folio)))
 		return -EINVAL;
 
 	if (WARN_ON_ONCE(len <= 0 || !IS_ALIGNED(len | offs, blocksize)))
 		return -EINVAL;
 
 	for (i = offs; i < offs + len; i += blocksize, lblk_num++) {
+		struct page *page = folio_page(folio, i >> PAGE_SHIFT);
+
 		err = fscrypt_crypt_block(inode, FS_DECRYPT, lblk_num, page,
-					  page, blocksize, i, GFP_NOFS);
+					  page, blocksize, i & ~PAGE_MASK,
+					  GFP_NOFS);
 		if (err)
 			return err;
 	}
@@ -306,19 +308,24 @@ EXPORT_SYMBOL(fscrypt_decrypt_block_inplace);
 
 /**
  * fscrypt_initialize() - allocate major buffers for fs encryption.
- * @cop_flags:  fscrypt operations flags
+ * @sb: the filesystem superblock
  *
  * We only call this when we start accessing encrypted files, since it
  * results in memory getting allocated that wouldn't otherwise be used.
  *
  * Return: 0 on success; -errno on failure
  */
-int fscrypt_initialize(unsigned int cop_flags)
+int fscrypt_initialize(struct super_block *sb)
 {
 	int err = 0;
+	mempool_t *pool;
+
+	/* pairs with smp_store_release() below */
+	if (likely(smp_load_acquire(&fscrypt_bounce_page_pool)))
+		return 0;
 
 	/* No need to allocate a bounce page pool if this FS won't use it. */
-	if (cop_flags & FS_CFLG_OWN_PAGES)
+	if (sb->s_cop->flags & FS_CFLG_OWN_PAGES)
 		return 0;
 
 	mutex_lock(&fscrypt_init_mutex);
@@ -326,11 +333,11 @@ int fscrypt_initialize(unsigned int cop_flags)
 		goto out_unlock;
 
 	err = -ENOMEM;
-	fscrypt_bounce_page_pool =
-		mempool_create_page_pool(num_prealloc_crypto_pages, 0);
-	if (!fscrypt_bounce_page_pool)
+	pool = mempool_create_page_pool(num_prealloc_crypto_pages, 0);
+	if (!pool)
 		goto out_unlock;
-
+	/* pairs with smp_load_acquire() above */
+	smp_store_release(&fscrypt_bounce_page_pool, pool);
 	err = 0;
 out_unlock:
 	mutex_unlock(&fscrypt_init_mutex);
diff --git a/fs/crypto/fname.c b/fs/crypto/fname.c
index 12bd61d..6eae3f1 100644
--- a/fs/crypto/fname.c
+++ b/fs/crypto/fname.c
@@ -110,7 +110,7 @@ int fscrypt_fname_encrypt(const struct inode *inode, const struct qstr *iname,
 	 * Copy the filename to the output buffer for encrypting in-place and
 	 * pad it with the needed number of NUL bytes.
 	 */
-	if (WARN_ON(olen < iname->len))
+	if (WARN_ON_ONCE(olen < iname->len))
 		return -ENOBUFS;
 	memcpy(out, iname->name, iname->len);
 	memset(out + iname->len, 0, olen - iname->len);
@@ -570,7 +570,7 @@ u64 fscrypt_fname_siphash(const struct inode *dir, const struct qstr *name)
 {
 	const struct fscrypt_info *ci = dir->i_crypt_info;
 
-	WARN_ON(!ci->ci_dirhash_key_initialized);
+	WARN_ON_ONCE(!ci->ci_dirhash_key_initialized);
 
 	return siphash(name->name, name->len, &ci->ci_dirhash_key);
 }
diff --git a/fs/crypto/fscrypt_private.h b/fs/crypto/fscrypt_private.h
index d5f68a0..0d246bf 100644
--- a/fs/crypto/fscrypt_private.h
+++ b/fs/crypto/fscrypt_private.h
@@ -27,6 +27,27 @@
  */
 #define FSCRYPT_MIN_KEY_SIZE	16
 
+/* Maximum size of a standard fscrypt master key */
+#define FSCRYPT_MAX_STANDARD_KEY_SIZE	64
+
+/* Maximum size of a hardware-wrapped fscrypt master key */
+#define FSCRYPT_MAX_HW_WRAPPED_KEY_SIZE	BLK_CRYPTO_MAX_HW_WRAPPED_KEY_SIZE
+
+/*
+ * Maximum size of an fscrypt master key across both key types.
+ * This should just use max(), but max() doesn't work in a struct definition.
+ */
+#define FSCRYPT_MAX_ANY_KEY_SIZE \
+	(FSCRYPT_MAX_HW_WRAPPED_KEY_SIZE > FSCRYPT_MAX_STANDARD_KEY_SIZE ? \
+	 FSCRYPT_MAX_HW_WRAPPED_KEY_SIZE : FSCRYPT_MAX_STANDARD_KEY_SIZE)
+
+/*
+ * FSCRYPT_MAX_KEY_SIZE is defined in the UAPI header, but the addition of
+ * hardware-wrapped keys has made it misleading as it's only for standard keys.
+ * Don't use it in kernel code; use one of the above constants instead.
+ */
+#undef FSCRYPT_MAX_KEY_SIZE
+
 #define FSCRYPT_CONTEXT_V1	1
 #define FSCRYPT_CONTEXT_V2	2
 
@@ -101,7 +122,7 @@ static inline const u8 *fscrypt_context_nonce(const union fscrypt_context *ctx)
 	case FSCRYPT_CONTEXT_V2:
 		return ctx->v2.nonce;
 	}
-	WARN_ON(1);
+	WARN_ON_ONCE(1);
 	return NULL;
 }
 
@@ -264,7 +285,7 @@ typedef enum {
 
 /* crypto.c */
 extern struct kmem_cache *fscrypt_info_cachep;
-int fscrypt_initialize(unsigned int cop_flags);
+int fscrypt_initialize(struct super_block *sb);
 int fscrypt_crypt_block(const struct inode *inode, fscrypt_direction_t rw,
 			u64 lblk_num, struct page *src_page,
 			struct page *dest_page, unsigned int len,
@@ -332,7 +353,8 @@ void fscrypt_destroy_hkdf(struct fscrypt_hkdf *hkdf);
 
 /* inline_crypt.c */
 #ifdef CONFIG_FS_ENCRYPTION_INLINE_CRYPT
-int fscrypt_select_encryption_impl(struct fscrypt_info *ci);
+int fscrypt_select_encryption_impl(struct fscrypt_info *ci,
+				   bool is_hw_wrapped_key);
 
 static inline bool
 fscrypt_using_inline_encryption(const struct fscrypt_info *ci)
@@ -341,12 +363,17 @@ fscrypt_using_inline_encryption(const struct fscrypt_info *ci)
 }
 
 int fscrypt_prepare_inline_crypt_key(struct fscrypt_prepared_key *prep_key,
-				     const u8 *raw_key,
+				     const u8 *raw_key, size_t raw_key_size,
+				     bool is_hw_wrapped,
 				     const struct fscrypt_info *ci);
 
 void fscrypt_destroy_inline_crypt_key(struct super_block *sb,
 				      struct fscrypt_prepared_key *prep_key);
 
+int fscrypt_derive_sw_secret(struct super_block *sb,
+			     const u8 *wrapped_key, size_t wrapped_key_size,
+			     u8 sw_secret[BLK_CRYPTO_SW_SECRET_SIZE]);
+
 /*
  * Check whether the crypto transform or blk-crypto key has been allocated in
  * @prep_key, depending on which encryption implementation the file will use.
@@ -370,7 +397,8 @@ fscrypt_is_key_prepared(struct fscrypt_prepared_key *prep_key,
 
 #else /* CONFIG_FS_ENCRYPTION_INLINE_CRYPT */
 
-static inline int fscrypt_select_encryption_impl(struct fscrypt_info *ci)
+static inline int fscrypt_select_encryption_impl(struct fscrypt_info *ci,
+						 bool is_hw_wrapped_key)
 {
 	return 0;
 }
@@ -383,10 +411,11 @@ fscrypt_using_inline_encryption(const struct fscrypt_info *ci)
 
 static inline int
 fscrypt_prepare_inline_crypt_key(struct fscrypt_prepared_key *prep_key,
-				 const u8 *raw_key,
+				 const u8 *raw_key, size_t raw_key_size,
+				 bool is_hw_wrapped,
 				 const struct fscrypt_info *ci)
 {
-	WARN_ON(1);
+	WARN_ON_ONCE(1);
 	return -EOPNOTSUPP;
 }
 
@@ -396,6 +425,15 @@ fscrypt_destroy_inline_crypt_key(struct super_block *sb,
 {
 }
 
+static inline int
+fscrypt_derive_sw_secret(struct super_block *sb,
+			 const u8 *wrapped_key, size_t wrapped_key_size,
+			 u8 sw_secret[BLK_CRYPTO_SW_SECRET_SIZE])
+{
+	fscrypt_warn(NULL, "kernel doesn't support hardware-wrapped keys");
+	return -EOPNOTSUPP;
+}
+
 static inline bool
 fscrypt_is_key_prepared(struct fscrypt_prepared_key *prep_key,
 			const struct fscrypt_info *ci)
@@ -412,20 +450,38 @@ fscrypt_is_key_prepared(struct fscrypt_prepared_key *prep_key,
 struct fscrypt_master_key_secret {
 
 	/*
-	 * For v2 policy keys: HKDF context keyed by this master key.
-	 * For v1 policy keys: not set (hkdf.hmac_tfm == NULL).
+	 * The KDF with which subkeys of this key can be derived.
+	 *
+	 * For v1 policy keys, this isn't applicable and won't be set.
+	 * Otherwise, this KDF will be keyed by this master key if
+	 * ->is_hw_wrapped=false, or by the "software secret" that hardware
+	 * derived from this master key if ->is_hw_wrapped=true.
 	 */
 	struct fscrypt_hkdf	hkdf;
 
 	/*
+	 * True if this key is a hardware-wrapped key; false if this key is a
+	 * standard key (i.e. a "software key").  For v1 policy keys this will
+	 * always be false, as v1 policy support is a legacy feature which
+	 * doesn't support newer functionality such as hardware-wrapped keys.
+	 */
+	bool			is_hw_wrapped;
+
+	/*
 	 * Size of the raw key in bytes.  This remains set even if ->raw was
 	 * zeroized due to no longer being needed.  I.e. we still remember the
 	 * size of the key even if we don't need to remember the key itself.
 	 */
 	u32			size;
 
-	/* For v1 policy keys: the raw key.  Wiped for v2 policy keys. */
-	u8			raw[FSCRYPT_MAX_KEY_SIZE];
+	/*
+	 * The raw key which userspace provided, when still needed.  This can be
+	 * either a standard key or a hardware-wrapped key, as indicated by
+	 * ->is_hw_wrapped.  In the case of a standard, v2 policy key, there is
+	 * no need to remember the raw key separately from ->hkdf so this field
+	 * will be zeroized as soon as ->hkdf is initialized.
+	 */
+	u8			raw[FSCRYPT_MAX_ANY_KEY_SIZE];
 
 } __randomize_layout;
 
@@ -439,13 +495,7 @@ struct fscrypt_master_key_secret {
 struct fscrypt_master_key {
 
 	/*
-	 * Back-pointer to the super_block of the filesystem to which this
-	 * master key has been added.  Only valid if ->mk_active_refs > 0.
-	 */
-	struct super_block			*mk_sb;
-
-	/*
-	 * Link in ->mk_sb->s_master_keys->key_hashtable.
+	 * Link in ->s_master_keys->key_hashtable.
 	 * Only valid if ->mk_active_refs > 0.
 	 */
 	struct hlist_node			mk_node;
@@ -456,7 +506,7 @@ struct fscrypt_master_key {
 	/*
 	 * Active and structural reference counts.  An active ref guarantees
 	 * that the struct continues to exist, continues to be in the keyring
-	 * ->mk_sb->s_master_keys, and that any embedded subkeys (e.g.
+	 * ->s_master_keys, and that any embedded subkeys (e.g.
 	 * ->mk_direct_keys) that have been prepared continue to exist.
 	 * A structural ref only guarantees that the struct continues to exist.
 	 *
@@ -569,7 +619,8 @@ static inline int master_key_spec_len(const struct fscrypt_key_specifier *spec)
 
 void fscrypt_put_master_key(struct fscrypt_master_key *mk);
 
-void fscrypt_put_master_key_activeref(struct fscrypt_master_key *mk);
+void fscrypt_put_master_key_activeref(struct super_block *sb,
+				      struct fscrypt_master_key *mk);
 
 struct fscrypt_master_key *
 fscrypt_find_master_key(struct super_block *sb,
@@ -578,6 +629,9 @@ fscrypt_find_master_key(struct super_block *sb,
 int fscrypt_get_test_dummy_key_identifier(
 			  u8 key_identifier[FSCRYPT_KEY_IDENTIFIER_SIZE]);
 
+int fscrypt_add_test_dummy_key(struct super_block *sb,
+			       struct fscrypt_key_specifier *key_spec);
+
 int fscrypt_verify_key_added(struct super_block *sb,
 			     const u8 identifier[FSCRYPT_KEY_IDENTIFIER_SIZE]);
 
@@ -656,6 +710,7 @@ bool fscrypt_policies_equal(const union fscrypt_policy *policy1,
 			    const union fscrypt_policy *policy2);
 int fscrypt_policy_to_key_spec(const union fscrypt_policy *policy,
 			       struct fscrypt_key_specifier *key_spec);
+const union fscrypt_policy *fscrypt_get_dummy_policy(struct super_block *sb);
 bool fscrypt_supported_policy(const union fscrypt_policy *policy_u,
 			      const struct inode *inode);
 int fscrypt_policy_from_context(union fscrypt_policy *policy_u,
diff --git a/fs/crypto/hkdf.c b/fs/crypto/hkdf.c
index 7607d18b..7e00781 100644
--- a/fs/crypto/hkdf.c
+++ b/fs/crypto/hkdf.c
@@ -4,7 +4,9 @@
  * Function"), aka RFC 5869.  See also the original paper (Krawczyk 2010):
  * "Cryptographic Extraction and Key Derivation: The HKDF Scheme".
  *
- * This is used to derive keys from the fscrypt master keys.
+ * This is used to derive keys from the fscrypt master keys (or from the
+ * "software secrets" which hardware derives from the fscrypt master keys, in
+ * the case that the fscrypt master keys are hardware-wrapped keys).
  *
  * Copyright 2019 Google LLC
  */
@@ -79,7 +81,7 @@ int fscrypt_init_hkdf(struct fscrypt_hkdf *hkdf, const u8 *master_key,
 		return PTR_ERR(hmac_tfm);
 	}
 
-	if (WARN_ON(crypto_shash_digestsize(hmac_tfm) != sizeof(prk))) {
+	if (WARN_ON_ONCE(crypto_shash_digestsize(hmac_tfm) != sizeof(prk))) {
 		err = -EINVAL;
 		goto err_free_tfm;
 	}
@@ -125,7 +127,7 @@ int fscrypt_hkdf_expand(const struct fscrypt_hkdf *hkdf, u8 context,
 	u8 counter = 1;
 	u8 tmp[HKDF_HASHLEN];
 
-	if (WARN_ON(okmlen > 255 * HKDF_HASHLEN))
+	if (WARN_ON_ONCE(okmlen > 255 * HKDF_HASHLEN))
 		return -EINVAL;
 
 	desc->tfm = hkdf->hmac_tfm;
diff --git a/fs/crypto/hooks.c b/fs/crypto/hooks.c
index 7b8c5a1..9e786ae 100644
--- a/fs/crypto/hooks.c
+++ b/fs/crypto/hooks.c
@@ -111,6 +111,36 @@ int __fscrypt_prepare_lookup(struct inode *dir, struct dentry *dentry,
 }
 EXPORT_SYMBOL_GPL(__fscrypt_prepare_lookup);
 
+/**
+ * fscrypt_prepare_lookup_partial() - prepare lookup without filename setup
+ * @dir: the encrypted directory being searched
+ * @dentry: the dentry being looked up in @dir
+ *
+ * This function should be used by the ->lookup and ->atomic_open methods of
+ * filesystems that handle filename encryption and no-key name encoding
+ * themselves and thus can't use fscrypt_prepare_lookup().  Like
+ * fscrypt_prepare_lookup(), this will try to set up the directory's encryption
+ * key and will set DCACHE_NOKEY_NAME on the dentry if the key is unavailable.
+ * However, this function doesn't set up a struct fscrypt_name for the filename.
+ *
+ * Return: 0 on success; -errno on error.  Note that the encryption key being
+ *	   unavailable is not considered an error.  It is also not an error if
+ *	   the encryption policy is unsupported by this kernel; that is treated
+ *	   like the key being unavailable, so that files can still be deleted.
+ */
+int fscrypt_prepare_lookup_partial(struct inode *dir, struct dentry *dentry)
+{
+	int err = fscrypt_get_encryption_info(dir, true);
+
+	if (!err && !fscrypt_has_encryption_key(dir)) {
+		spin_lock(&dentry->d_lock);
+		dentry->d_flags |= DCACHE_NOKEY_NAME;
+		spin_unlock(&dentry->d_lock);
+	}
+	return err;
+}
+EXPORT_SYMBOL_GPL(fscrypt_prepare_lookup_partial);
+
 int __fscrypt_prepare_readdir(struct inode *dir)
 {
 	return fscrypt_get_encryption_info(dir, true);
@@ -315,7 +345,7 @@ const char *fscrypt_get_symlink(struct inode *inode, const void *caddr,
 	int err;
 
 	/* This is for encrypted symlinks only */
-	if (WARN_ON(!IS_ENCRYPTED(inode)))
+	if (WARN_ON_ONCE(!IS_ENCRYPTED(inode)))
 		return ERR_PTR(-EINVAL);
 
 	/* If the decrypted target is already cached, just return it. */
diff --git a/fs/crypto/inline_crypt.c b/fs/crypto/inline_crypt.c
index 8bfb3ce..64fff38 100644
--- a/fs/crypto/inline_crypt.c
+++ b/fs/crypto/inline_crypt.c
@@ -90,7 +90,8 @@ static void fscrypt_log_blk_crypto_impl(struct fscrypt_mode *mode,
 }
 
 /* Enable inline encryption for this file if supported. */
-int fscrypt_select_encryption_impl(struct fscrypt_info *ci)
+int fscrypt_select_encryption_impl(struct fscrypt_info *ci,
+				   bool is_hw_wrapped_key)
 {
 	const struct inode *inode = ci->ci_inode;
 	struct super_block *sb = inode->i_sb;
@@ -131,6 +132,9 @@ int fscrypt_select_encryption_impl(struct fscrypt_info *ci)
 	crypto_cfg.crypto_mode = ci->ci_mode->blk_crypto_mode;
 	crypto_cfg.data_unit_size = sb->s_blocksize;
 	crypto_cfg.dun_bytes = fscrypt_get_dun_bytes(ci);
+	crypto_cfg.key_type =
+		is_hw_wrapped_key ? BLK_CRYPTO_KEY_TYPE_HW_WRAPPED :
+		BLK_CRYPTO_KEY_TYPE_STANDARD;
 
 	devs = fscrypt_get_devices(sb, &num_devs);
 	if (IS_ERR(devs))
@@ -151,12 +155,15 @@ int fscrypt_select_encryption_impl(struct fscrypt_info *ci)
 }
 
 int fscrypt_prepare_inline_crypt_key(struct fscrypt_prepared_key *prep_key,
-				     const u8 *raw_key,
+				     const u8 *raw_key, size_t raw_key_size,
+				     bool is_hw_wrapped,
 				     const struct fscrypt_info *ci)
 {
 	const struct inode *inode = ci->ci_inode;
 	struct super_block *sb = inode->i_sb;
 	enum blk_crypto_mode_num crypto_mode = ci->ci_mode->blk_crypto_mode;
+	enum blk_crypto_key_type key_type = is_hw_wrapped ?
+		BLK_CRYPTO_KEY_TYPE_HW_WRAPPED : BLK_CRYPTO_KEY_TYPE_STANDARD;
 	struct blk_crypto_key *blk_key;
 	struct block_device **devs;
 	unsigned int num_devs;
@@ -167,8 +174,9 @@ int fscrypt_prepare_inline_crypt_key(struct fscrypt_prepared_key *prep_key,
 	if (!blk_key)
 		return -ENOMEM;
 
-	err = blk_crypto_init_key(blk_key, raw_key, crypto_mode,
-				  fscrypt_get_dun_bytes(ci), sb->s_blocksize);
+	err = blk_crypto_init_key(blk_key, raw_key, raw_key_size, key_type,
+				  crypto_mode, fscrypt_get_dun_bytes(ci),
+				  sb->s_blocksize);
 	if (err) {
 		fscrypt_err(inode, "error %d initializing blk-crypto key", err);
 		goto fail;
@@ -226,6 +234,34 @@ void fscrypt_destroy_inline_crypt_key(struct super_block *sb,
 	kfree_sensitive(blk_key);
 }
 
+/*
+ * Ask the inline encryption hardware to derive the software secret from a
+ * hardware-wrapped key.  Returns -EOPNOTSUPP if hardware-wrapped keys aren't
+ * supported on this filesystem or hardware.
+ */
+int fscrypt_derive_sw_secret(struct super_block *sb,
+			     const u8 *wrapped_key, size_t wrapped_key_size,
+			     u8 sw_secret[BLK_CRYPTO_SW_SECRET_SIZE])
+{
+	int err;
+
+	/* The filesystem must be mounted with -o inlinecrypt. */
+	if (!(sb->s_flags & SB_INLINECRYPT)) {
+		fscrypt_warn(NULL,
+			     "%s: filesystem not mounted with inlinecrypt\n",
+			     sb->s_id);
+		return -EOPNOTSUPP;
+	}
+
+	err = blk_crypto_derive_sw_secret(sb->s_bdev, wrapped_key,
+					  wrapped_key_size, sw_secret);
+	if (err == -EOPNOTSUPP)
+		fscrypt_warn(NULL,
+			     "%s: block device doesn't support hardware-wrapped keys\n",
+			     sb->s_id);
+	return err;
+}
+
 bool __fscrypt_inode_uses_inline_crypto(const struct inode *inode)
 {
 	return inode->i_crypt_info->ci_inlinecrypt;
@@ -261,6 +297,8 @@ static void fscrypt_generate_dun(const struct fscrypt_info *ci, u64 lblk_num,
  * otherwise fscrypt_mergeable_bio() won't work as intended.
  *
  * The encryption context will be freed automatically when the bio is freed.
+ *
+ * This function also handles setting bi_skip_dm_default_key when needed.
  */
 void fscrypt_set_bio_crypt_ctx(struct bio *bio, const struct inode *inode,
 			       u64 first_lblk, gfp_t gfp_mask)
@@ -268,6 +306,9 @@ void fscrypt_set_bio_crypt_ctx(struct bio *bio, const struct inode *inode,
 	const struct fscrypt_info *ci;
 	u64 dun[BLK_CRYPTO_DUN_ARRAY_SIZE];
 
+	if (fscrypt_inode_should_skip_dm_default_key(inode))
+		bio_set_skip_dm_default_key(bio);
+
 	if (!fscrypt_inode_uses_inline_crypto(inode))
 		return;
 	ci = inode->i_crypt_info;
@@ -342,6 +383,9 @@ EXPORT_SYMBOL_GPL(fscrypt_set_bio_crypt_ctx_bh);
  * another way, such as I/O targeting only a single file (and thus a single key)
  * combined with fscrypt_limit_io_blocks() to ensure DUN contiguity.
  *
+ * This function also returns false if the next part of the I/O would need to
+ * have a different value for the bi_skip_dm_default_key flag.
+ *
  * Return: true iff the I/O is mergeable
  */
 bool fscrypt_mergeable_bio(struct bio *bio, const struct inode *inode,
@@ -352,6 +396,9 @@ bool fscrypt_mergeable_bio(struct bio *bio, const struct inode *inode,
 
 	if (!!bc != fscrypt_inode_uses_inline_crypto(inode))
 		return false;
+	if (bio_should_skip_dm_default_key(bio) !=
+	    fscrypt_inode_should_skip_dm_default_key(inode))
+		return false;
 	if (!bc)
 		return true;
 
@@ -385,7 +432,8 @@ bool fscrypt_mergeable_bio_bh(struct bio *bio,
 	u64 next_lblk;
 
 	if (!bh_get_inode_and_lblk_num(next_bh, &inode, &next_lblk))
-		return !bio->bi_crypt_context;
+		return !bio->bi_crypt_context &&
+		       !bio_should_skip_dm_default_key(bio);
 
 	return fscrypt_mergeable_bio(bio, inode, next_lblk);
 }
diff --git a/fs/crypto/keyring.c b/fs/crypto/keyring.c
index 2a24b1f..c11f052 100644
--- a/fs/crypto/keyring.c
+++ b/fs/crypto/keyring.c
@@ -73,16 +73,15 @@ void fscrypt_put_master_key(struct fscrypt_master_key *mk)
 	 * fscrypt_master_key struct itself after an RCU grace period ensures
 	 * that concurrent keyring lookups can no longer find it.
 	 */
-	WARN_ON(refcount_read(&mk->mk_active_refs) != 0);
+	WARN_ON_ONCE(refcount_read(&mk->mk_active_refs) != 0);
 	key_put(mk->mk_users);
 	mk->mk_users = NULL;
 	call_rcu(&mk->mk_rcu_head, fscrypt_free_master_key);
 }
 
-void fscrypt_put_master_key_activeref(struct fscrypt_master_key *mk)
+void fscrypt_put_master_key_activeref(struct super_block *sb,
+				      struct fscrypt_master_key *mk)
 {
-	struct super_block *sb = mk->mk_sb;
-	struct fscrypt_keyring *keyring = sb->s_master_keys;
 	size_t i;
 
 	if (!refcount_dec_and_test(&mk->mk_active_refs))
@@ -93,16 +92,18 @@ void fscrypt_put_master_key_activeref(struct fscrypt_master_key *mk)
 	 * destroying any subkeys embedded in it.
 	 */
 
-	spin_lock(&keyring->lock);
+	if (WARN_ON_ONCE(!sb->s_master_keys))
+		return;
+	spin_lock(&sb->s_master_keys->lock);
 	hlist_del_rcu(&mk->mk_node);
-	spin_unlock(&keyring->lock);
+	spin_unlock(&sb->s_master_keys->lock);
 
 	/*
 	 * ->mk_active_refs == 0 implies that ->mk_secret is not present and
 	 * that ->mk_decrypted_inodes is empty.
 	 */
-	WARN_ON(is_master_key_secret_present(&mk->mk_secret));
-	WARN_ON(!list_empty(&mk->mk_decrypted_inodes));
+	WARN_ON_ONCE(is_master_key_secret_present(&mk->mk_secret));
+	WARN_ON_ONCE(!list_empty(&mk->mk_decrypted_inodes));
 
 	for (i = 0; i <= FSCRYPT_MODE_MAX; i++) {
 		fscrypt_destroy_prepared_key(
@@ -131,11 +132,11 @@ static int fscrypt_user_key_instantiate(struct key *key,
 					struct key_preparsed_payload *prep)
 {
 	/*
-	 * We just charge FSCRYPT_MAX_KEY_SIZE bytes to the user's key quota for
-	 * each key, regardless of the exact key size.  The amount of memory
-	 * actually used is greater than the size of the raw key anyway.
+	 * We just charge FSCRYPT_MAX_STANDARD_KEY_SIZE bytes to the user's key
+	 * quota for each key, regardless of the exact key size.  The amount of
+	 * memory actually used is greater than the size of the raw key anyway.
 	 */
-	return key_payload_reserve(key, FSCRYPT_MAX_KEY_SIZE);
+	return key_payload_reserve(key, FSCRYPT_MAX_STANDARD_KEY_SIZE);
 }
 
 static void fscrypt_user_key_describe(const struct key *key, struct seq_file *m)
@@ -208,14 +209,11 @@ static int allocate_filesystem_keyring(struct super_block *sb)
  * Release all encryption keys that have been added to the filesystem, along
  * with the keyring that contains them.
  *
- * This is called at unmount time.  The filesystem's underlying block device(s)
- * are still available at this time; this is important because after user file
- * accesses have been allowed, this function may need to evict keys from the
- * keyslots of an inline crypto engine, which requires the block device(s).
- *
- * This is also called when the super_block is being freed.  This is needed to
- * avoid a memory leak if mounting fails after the "test_dummy_encryption"
- * option was processed, as in that case the unmount-time call isn't made.
+ * This is called at unmount time, after all potentially-encrypted inodes have
+ * been evicted.  The filesystem's underlying block device(s) are still
+ * available at this time; this is important because after user file accesses
+ * have been allowed, this function may need to evict keys from the keyslots of
+ * an inline crypto engine, which requires the block device(s).
  */
 void fscrypt_destroy_keyring(struct super_block *sb)
 {
@@ -232,18 +230,18 @@ void fscrypt_destroy_keyring(struct super_block *sb)
 
 		hlist_for_each_entry_safe(mk, tmp, bucket, mk_node) {
 			/*
-			 * Since all inodes were already evicted, every key
-			 * remaining in the keyring should have an empty inode
-			 * list, and should only still be in the keyring due to
-			 * the single active ref associated with ->mk_secret.
-			 * There should be no structural refs beyond the one
-			 * associated with the active ref.
+			 * Since all potentially-encrypted inodes were already
+			 * evicted, every key remaining in the keyring should
+			 * have an empty inode list, and should only still be in
+			 * the keyring due to the single active ref associated
+			 * with ->mk_secret.  There should be no structural refs
+			 * beyond the one associated with the active ref.
 			 */
-			WARN_ON(refcount_read(&mk->mk_active_refs) != 1);
-			WARN_ON(refcount_read(&mk->mk_struct_refs) != 1);
-			WARN_ON(!is_master_key_secret_present(&mk->mk_secret));
+			WARN_ON_ONCE(refcount_read(&mk->mk_active_refs) != 1);
+			WARN_ON_ONCE(refcount_read(&mk->mk_struct_refs) != 1);
+			WARN_ON_ONCE(!is_master_key_secret_present(&mk->mk_secret));
 			wipe_master_key_secret(&mk->mk_secret);
-			fscrypt_put_master_key_activeref(mk);
+			fscrypt_put_master_key_activeref(sb, mk);
 		}
 	}
 	kfree_sensitive(keyring);
@@ -424,7 +422,6 @@ static int add_new_master_key(struct super_block *sb,
 	if (!mk)
 		return -ENOMEM;
 
-	mk->mk_sb = sb;
 	init_rwsem(&mk->mk_sem);
 	refcount_set(&mk->mk_struct_refs, 1);
 	mk->mk_spec = *mk_spec;
@@ -537,20 +534,36 @@ static int add_master_key(struct super_block *sb,
 	int err;
 
 	if (key_spec->type == FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER) {
-		err = fscrypt_init_hkdf(&secret->hkdf, secret->raw,
-					secret->size);
+		u8 sw_secret[BLK_CRYPTO_SW_SECRET_SIZE];
+		u8 *kdf_key = secret->raw;
+		unsigned int kdf_key_size = secret->size;
+		u8 keyid_kdf_ctx = HKDF_CONTEXT_KEY_IDENTIFIER;
+
+		/*
+		 * For standard keys, the fscrypt master key is used directly as
+		 * the fscrypt KDF key.  For hardware-wrapped keys, we have to
+		 * pass the master key to the hardware to derive the KDF key,
+		 * which is then only used to derive non-file-contents subkeys.
+		 */
+		if (secret->is_hw_wrapped) {
+			err = fscrypt_derive_sw_secret(sb, secret->raw,
+						       secret->size, sw_secret);
+			if (err)
+				return err;
+			kdf_key = sw_secret;
+			kdf_key_size = sizeof(sw_secret);
+		}
+		err = fscrypt_init_hkdf(&secret->hkdf, kdf_key, kdf_key_size);
+		/*
+		 * Now that the KDF context is initialized, the raw KDF key is
+		 * no longer needed.
+		 */
+		memzero_explicit(kdf_key, kdf_key_size);
 		if (err)
 			return err;
 
-		/*
-		 * Now that the HKDF context is initialized, the raw key is no
-		 * longer needed.
-		 */
-		memzero_explicit(secret->raw, secret->size);
-
 		/* Calculate the key identifier */
-		err = fscrypt_hkdf_expand(&secret->hkdf,
-					  HKDF_CONTEXT_KEY_IDENTIFIER, NULL, 0,
+		err = fscrypt_hkdf_expand(&secret->hkdf, keyid_kdf_ctx, NULL, 0,
 					  key_spec->u.identifier,
 					  FSCRYPT_KEY_IDENTIFIER_SIZE);
 		if (err)
@@ -564,7 +577,7 @@ static int fscrypt_provisioning_key_preparse(struct key_preparsed_payload *prep)
 	const struct fscrypt_provisioning_key_payload *payload = prep->data;
 
 	if (prep->datalen < sizeof(*payload) + FSCRYPT_MIN_KEY_SIZE ||
-	    prep->datalen > sizeof(*payload) + FSCRYPT_MAX_KEY_SIZE)
+	    prep->datalen > sizeof(*payload) + FSCRYPT_MAX_ANY_KEY_SIZE)
 		return -EINVAL;
 
 	if (payload->type != FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR &&
@@ -713,15 +726,30 @@ int fscrypt_ioctl_add_key(struct file *filp, void __user *_uarg)
 		return -EACCES;
 
 	memset(&secret, 0, sizeof(secret));
+
+	if (arg.__flags) {
+		if (arg.__flags & ~__FSCRYPT_ADD_KEY_FLAG_HW_WRAPPED)
+			return -EINVAL;
+		if (arg.key_spec.type != FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER)
+			return -EINVAL;
+		secret.is_hw_wrapped = true;
+	}
+
 	if (arg.key_id) {
 		if (arg.raw_size != 0)
 			return -EINVAL;
 		err = get_keyring_key(arg.key_id, arg.key_spec.type, &secret);
 		if (err)
 			goto out_wipe_secret;
+		err = -EINVAL;
+		if (secret.size > FSCRYPT_MAX_STANDARD_KEY_SIZE &&
+		    !secret.is_hw_wrapped)
+			goto out_wipe_secret;
 	} else {
 		if (arg.raw_size < FSCRYPT_MIN_KEY_SIZE ||
-		    arg.raw_size > FSCRYPT_MAX_KEY_SIZE)
+		    arg.raw_size > (secret.is_hw_wrapped ?
+				    FSCRYPT_MAX_HW_WRAPPED_KEY_SIZE :
+				    FSCRYPT_MAX_STANDARD_KEY_SIZE))
 			return -EINVAL;
 		secret.size = arg.raw_size;
 		err = -EFAULT;
@@ -749,13 +777,13 @@ EXPORT_SYMBOL_GPL(fscrypt_ioctl_add_key);
 static void
 fscrypt_get_test_dummy_secret(struct fscrypt_master_key_secret *secret)
 {
-	static u8 test_key[FSCRYPT_MAX_KEY_SIZE];
+	static u8 test_key[FSCRYPT_MAX_STANDARD_KEY_SIZE];
 
-	get_random_once(test_key, FSCRYPT_MAX_KEY_SIZE);
+	get_random_once(test_key, sizeof(test_key));
 
 	memset(secret, 0, sizeof(*secret));
-	secret->size = FSCRYPT_MAX_KEY_SIZE;
-	memcpy(secret->raw, test_key, FSCRYPT_MAX_KEY_SIZE);
+	secret->size = sizeof(test_key);
+	memcpy(secret->raw, test_key, sizeof(test_key));
 }
 
 int fscrypt_get_test_dummy_key_identifier(
@@ -780,34 +808,26 @@ int fscrypt_get_test_dummy_key_identifier(
 /**
  * fscrypt_add_test_dummy_key() - add the test dummy encryption key
  * @sb: the filesystem instance to add the key to
- * @dummy_policy: the encryption policy for test_dummy_encryption
+ * @key_spec: the key specifier of the test dummy encryption key
  *
- * If needed, add the key for the test_dummy_encryption mount option to the
- * filesystem.  To prevent misuse of this mount option, a per-boot random key is
- * used instead of a hardcoded one.  This makes it so that any encrypted files
- * created using this option won't be accessible after a reboot.
+ * Add the key for the test_dummy_encryption mount option to the filesystem.  To
+ * prevent misuse of this mount option, a per-boot random key is used instead of
+ * a hardcoded one.  This makes it so that any encrypted files created using
+ * this option won't be accessible after a reboot.
  *
  * Return: 0 on success, -errno on failure
  */
 int fscrypt_add_test_dummy_key(struct super_block *sb,
-			       const struct fscrypt_dummy_policy *dummy_policy)
+			       struct fscrypt_key_specifier *key_spec)
 {
-	const union fscrypt_policy *policy = dummy_policy->policy;
-	struct fscrypt_key_specifier key_spec;
 	struct fscrypt_master_key_secret secret;
 	int err;
 
-	if (!policy)
-		return 0;
-	err = fscrypt_policy_to_key_spec(policy, &key_spec);
-	if (err)
-		return err;
 	fscrypt_get_test_dummy_secret(&secret);
-	err = add_master_key(sb, &secret, &key_spec);
+	err = add_master_key(sb, &secret, key_spec);
 	wipe_master_key_secret(&secret);
 	return err;
 }
-EXPORT_SYMBOL_GPL(fscrypt_add_test_dummy_key);
 
 /*
  * Verify that the current user has added a master key with the given identifier
@@ -1068,7 +1088,7 @@ static int do_remove_key(struct file *filp, void __user *_uarg, bool all_users)
 	err = -ENOKEY;
 	if (is_master_key_secret_present(&mk->mk_secret)) {
 		wipe_master_key_secret(&mk->mk_secret);
-		fscrypt_put_master_key_activeref(mk);
+		fscrypt_put_master_key_activeref(sb, mk);
 		err = 0;
 	}
 	inodes_remain = refcount_read(&mk->mk_active_refs) > 0;
diff --git a/fs/crypto/keysetup.c b/fs/crypto/keysetup.c
index f740707..eb39353 100644
--- a/fs/crypto/keysetup.c
+++ b/fs/crypto/keysetup.c
@@ -44,6 +44,21 @@ struct fscrypt_mode fscrypt_modes[] = {
 		.security_strength = 16,
 		.ivsize = 16,
 	},
+	[FSCRYPT_MODE_SM4_XTS] = {
+		.friendly_name = "SM4-XTS",
+		.cipher_str = "xts(sm4)",
+		.keysize = 32,
+		.security_strength = 16,
+		.ivsize = 16,
+		.blk_crypto_mode = BLK_ENCRYPTION_MODE_SM4_XTS,
+	},
+	[FSCRYPT_MODE_SM4_CTS] = {
+		.friendly_name = "SM4-CTS-CBC",
+		.cipher_str = "cts(cbc(sm4))",
+		.keysize = 16,
+		.security_strength = 16,
+		.ivsize = 16,
+	},
 	[FSCRYPT_MODE_ADIANTUM] = {
 		.friendly_name = "Adiantum",
 		.cipher_str = "adiantum(xchacha12,aes)",
@@ -110,7 +125,7 @@ fscrypt_allocate_skcipher(struct fscrypt_mode *mode, const u8 *raw_key,
 		pr_info("fscrypt: %s using implementation \"%s\"\n",
 			mode->friendly_name, crypto_skcipher_driver_name(tfm));
 	}
-	if (WARN_ON(crypto_skcipher_ivsize(tfm) != mode->ivsize)) {
+	if (WARN_ON_ONCE(crypto_skcipher_ivsize(tfm) != mode->ivsize)) {
 		err = -EINVAL;
 		goto err_free_tfm;
 	}
@@ -138,7 +153,9 @@ int fscrypt_prepare_key(struct fscrypt_prepared_key *prep_key,
 	struct crypto_skcipher *tfm;
 
 	if (fscrypt_using_inline_encryption(ci))
-		return fscrypt_prepare_inline_crypt_key(prep_key, raw_key, ci);
+		return fscrypt_prepare_inline_crypt_key(prep_key, raw_key,
+							ci->ci_mode->keysize,
+							false, ci);
 
 	tfm = fscrypt_allocate_skcipher(ci->ci_mode, raw_key, ci->ci_inode);
 	if (IS_ERR(tfm))
@@ -179,14 +196,29 @@ static int setup_per_mode_enc_key(struct fscrypt_info *ci,
 	struct fscrypt_mode *mode = ci->ci_mode;
 	const u8 mode_num = mode - fscrypt_modes;
 	struct fscrypt_prepared_key *prep_key;
-	u8 mode_key[FSCRYPT_MAX_KEY_SIZE];
+	u8 mode_key[FSCRYPT_MAX_STANDARD_KEY_SIZE];
 	u8 hkdf_info[sizeof(mode_num) + sizeof(sb->s_uuid)];
 	unsigned int hkdf_infolen = 0;
+	bool use_hw_wrapped_key = false;
 	int err;
 
-	if (WARN_ON(mode_num > FSCRYPT_MODE_MAX))
+	if (WARN_ON_ONCE(mode_num > FSCRYPT_MODE_MAX))
 		return -EINVAL;
 
+	if (mk->mk_secret.is_hw_wrapped && S_ISREG(inode->i_mode)) {
+		/* Using a hardware-wrapped key for file contents encryption */
+		if (!fscrypt_using_inline_encryption(ci)) {
+			if (sb->s_flags & SB_INLINECRYPT)
+				fscrypt_warn(ci->ci_inode,
+					     "Hardware-wrapped key required, but no suitable inline encryption capabilities are available");
+			else
+				fscrypt_warn(ci->ci_inode,
+					     "Hardware-wrapped keys require inline encryption (-o inlinecrypt)");
+			return -EINVAL;
+		}
+		use_hw_wrapped_key = true;
+	}
+
 	prep_key = &keys[mode_num];
 	if (fscrypt_is_key_prepared(prep_key, ci)) {
 		ci->ci_enc_key = *prep_key;
@@ -198,6 +230,16 @@ static int setup_per_mode_enc_key(struct fscrypt_info *ci,
 	if (fscrypt_is_key_prepared(prep_key, ci))
 		goto done_unlock;
 
+	if (use_hw_wrapped_key) {
+		err = fscrypt_prepare_inline_crypt_key(prep_key,
+						       mk->mk_secret.raw,
+						       mk->mk_secret.size, true,
+						       ci);
+		if (err)
+			goto out_unlock;
+		goto done_unlock;
+	}
+
 	BUILD_BUG_ON(sizeof(mode_num) != 1);
 	BUILD_BUG_ON(sizeof(sb->s_uuid) != 16);
 	BUILD_BUG_ON(sizeof(hkdf_info) != 17);
@@ -267,8 +309,8 @@ int fscrypt_derive_dirhash_key(struct fscrypt_info *ci,
 void fscrypt_hash_inode_number(struct fscrypt_info *ci,
 			       const struct fscrypt_master_key *mk)
 {
-	WARN_ON(ci->ci_inode->i_ino == 0);
-	WARN_ON(!mk->mk_ino_hash_key_initialized);
+	WARN_ON_ONCE(ci->ci_inode->i_ino == 0);
+	WARN_ON_ONCE(!mk->mk_ino_hash_key_initialized);
 
 	ci->ci_hashed_ino = (u32)siphash_1u64(ci->ci_inode->i_ino,
 					      &mk->mk_ino_hash_key);
@@ -320,6 +362,14 @@ static int fscrypt_setup_v2_file_key(struct fscrypt_info *ci,
 {
 	int err;
 
+	if (mk->mk_secret.is_hw_wrapped &&
+	    !(ci->ci_policy.v2.flags & (FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64 |
+					FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32))) {
+		fscrypt_warn(ci->ci_inode,
+			     "Hardware-wrapped keys are only supported with IV_INO_LBLK policies");
+		return -EINVAL;
+	}
+
 	if (ci->ci_policy.v2.flags & FSCRYPT_POLICY_FLAG_DIRECT_KEY) {
 		/*
 		 * DIRECT_KEY: instead of deriving per-file encryption keys, the
@@ -346,7 +396,7 @@ static int fscrypt_setup_v2_file_key(struct fscrypt_info *ci,
 		   FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32) {
 		err = fscrypt_setup_iv_ino_lblk_32_key(ci, mk);
 	} else {
-		u8 derived_key[FSCRYPT_MAX_KEY_SIZE];
+		u8 derived_key[FSCRYPT_MAX_STANDARD_KEY_SIZE];
 
 		err = fscrypt_hkdf_expand(&mk->mk_secret.hkdf,
 					  HKDF_CONTEXT_PER_FILE_ENC_KEY,
@@ -423,23 +473,42 @@ static int setup_file_encryption_key(struct fscrypt_info *ci,
 				     bool need_dirhash_key,
 				     struct fscrypt_master_key **mk_ret)
 {
+	struct super_block *sb = ci->ci_inode->i_sb;
 	struct fscrypt_key_specifier mk_spec;
 	struct fscrypt_master_key *mk;
 	int err;
 
-	err = fscrypt_select_encryption_impl(ci);
-	if (err)
-		return err;
-
 	err = fscrypt_policy_to_key_spec(&ci->ci_policy, &mk_spec);
 	if (err)
 		return err;
 
-	mk = fscrypt_find_master_key(ci->ci_inode->i_sb, &mk_spec);
-	if (!mk) {
+	mk = fscrypt_find_master_key(sb, &mk_spec);
+	if (unlikely(!mk)) {
+		const union fscrypt_policy *dummy_policy =
+			fscrypt_get_dummy_policy(sb);
+
+		/*
+		 * Add the test_dummy_encryption key on-demand.  In principle,
+		 * it should be added at mount time.  Do it here instead so that
+		 * the individual filesystems don't need to worry about adding
+		 * this key at mount time and cleaning up on mount failure.
+		 */
+		if (dummy_policy &&
+		    fscrypt_policies_equal(dummy_policy, &ci->ci_policy)) {
+			err = fscrypt_add_test_dummy_key(sb, &mk_spec);
+			if (err)
+				return err;
+			mk = fscrypt_find_master_key(sb, &mk_spec);
+		}
+	}
+	if (unlikely(!mk)) {
 		if (ci->ci_policy.version != FSCRYPT_POLICY_V1)
 			return -ENOKEY;
 
+		err = fscrypt_select_encryption_impl(ci, false);
+		if (err)
+			return err;
+
 		/*
 		 * As a legacy fallback for v1 policies, search for the key in
 		 * the current task's subscribed keyrings too.  Don't move this
@@ -461,15 +530,27 @@ static int setup_file_encryption_key(struct fscrypt_info *ci,
 		goto out_release_key;
 	}
 
+	err = fscrypt_select_encryption_impl(ci, mk->mk_secret.is_hw_wrapped);
+	if (err)
+		goto out_release_key;
+
 	switch (ci->ci_policy.version) {
 	case FSCRYPT_POLICY_V1:
+		if (WARN_ON(mk->mk_secret.is_hw_wrapped)) {
+			/*
+			 * This should never happen, as adding a v1 policy key
+			 * that is hardware-wrapped isn't allowed.
+			 */
+			err = -EINVAL;
+			goto out_release_key;
+		}
 		err = fscrypt_setup_v1_file_key(ci, mk->mk_secret.raw);
 		break;
 	case FSCRYPT_POLICY_V2:
 		err = fscrypt_setup_v2_file_key(ci, mk, need_dirhash_key);
 		break;
 	default:
-		WARN_ON(1);
+		WARN_ON_ONCE(1);
 		err = -EINVAL;
 		break;
 	}
@@ -509,7 +590,7 @@ static void put_crypt_info(struct fscrypt_info *ci)
 		spin_lock(&mk->mk_decrypted_inodes_lock);
 		list_del(&ci->ci_master_key_link);
 		spin_unlock(&mk->mk_decrypted_inodes_lock);
-		fscrypt_put_master_key_activeref(mk);
+		fscrypt_put_master_key_activeref(ci->ci_inode->i_sb, mk);
 	}
 	memzero_explicit(ci, sizeof(*ci));
 	kmem_cache_free(fscrypt_info_cachep, ci);
@@ -526,7 +607,7 @@ fscrypt_setup_encryption_info(struct inode *inode,
 	struct fscrypt_master_key *mk = NULL;
 	int res;
 
-	res = fscrypt_initialize(inode->i_sb->s_cop->flags);
+	res = fscrypt_initialize(inode->i_sb);
 	if (res)
 		return res;
 
@@ -543,7 +624,7 @@ fscrypt_setup_encryption_info(struct inode *inode,
 		res = PTR_ERR(mode);
 		goto out;
 	}
-	WARN_ON(mode->ivsize > FSCRYPT_MAX_IV_SIZE);
+	WARN_ON_ONCE(mode->ivsize > FSCRYPT_MAX_IV_SIZE);
 	crypt_info->ci_mode = mode;
 
 	res = setup_file_encryption_key(crypt_info, need_dirhash_key, &mk);
diff --git a/fs/crypto/keysetup_v1.c b/fs/crypto/keysetup_v1.c
index 75dabd9..ee82463 100644
--- a/fs/crypto/keysetup_v1.c
+++ b/fs/crypto/keysetup_v1.c
@@ -118,7 +118,8 @@ find_and_lock_process_key(const char *prefix,
 	payload = (const struct fscrypt_key *)ukp->data;
 
 	if (ukp->datalen != sizeof(struct fscrypt_key) ||
-	    payload->size < 1 || payload->size > FSCRYPT_MAX_KEY_SIZE) {
+	    payload->size < 1 ||
+	    payload->size > FSCRYPT_MAX_STANDARD_KEY_SIZE) {
 		fscrypt_warn(NULL,
 			     "key with description '%s' has invalid payload",
 			     key->description);
@@ -149,7 +150,7 @@ struct fscrypt_direct_key {
 	const struct fscrypt_mode	*dk_mode;
 	struct fscrypt_prepared_key	dk_key;
 	u8				dk_descriptor[FSCRYPT_KEY_DESCRIPTOR_SIZE];
-	u8				dk_raw[FSCRYPT_MAX_KEY_SIZE];
+	u8				dk_raw[FSCRYPT_MAX_STANDARD_KEY_SIZE];
 };
 
 static void free_direct_key(struct fscrypt_direct_key *dk)
diff --git a/fs/crypto/policy.c b/fs/crypto/policy.c
index 46757c3..eaec6bd6 100644
--- a/fs/crypto/policy.c
+++ b/fs/crypto/policy.c
@@ -48,19 +48,25 @@ int fscrypt_policy_to_key_spec(const union fscrypt_policy *policy,
 		       FSCRYPT_KEY_IDENTIFIER_SIZE);
 		return 0;
 	default:
-		WARN_ON(1);
+		WARN_ON_ONCE(1);
 		return -EINVAL;
 	}
 }
 
-static const union fscrypt_policy *
-fscrypt_get_dummy_policy(struct super_block *sb)
+const union fscrypt_policy *fscrypt_get_dummy_policy(struct super_block *sb)
 {
 	if (!sb->s_cop->get_dummy_policy)
 		return NULL;
 	return sb->s_cop->get_dummy_policy(sb);
 }
 
+/*
+ * Return %true if the given combination of encryption modes is supported for v1
+ * (and later) encryption policies.
+ *
+ * Do *not* add anything new here, since v1 encryption policies are deprecated.
+ * New combinations of modes should go in fscrypt_valid_enc_modes_v2() only.
+ */
 static bool fscrypt_valid_enc_modes_v1(u32 contents_mode, u32 filenames_mode)
 {
 	if (contents_mode == FSCRYPT_MODE_AES_256_XTS &&
@@ -83,6 +89,11 @@ static bool fscrypt_valid_enc_modes_v2(u32 contents_mode, u32 filenames_mode)
 	if (contents_mode == FSCRYPT_MODE_AES_256_XTS &&
 	    filenames_mode == FSCRYPT_MODE_AES_256_HCTR2)
 		return true;
+
+	if (contents_mode == FSCRYPT_MODE_SM4_XTS &&
+	    filenames_mode == FSCRYPT_MODE_SM4_CTS)
+		return true;
+
 	return fscrypt_valid_enc_modes_v1(contents_mode, filenames_mode);
 }
 
@@ -452,7 +463,7 @@ static int set_encryption_policy(struct inode *inode,
 				     current->comm, current->pid);
 		break;
 	default:
-		WARN_ON(1);
+		WARN_ON_ONCE(1);
 		return -EINVAL;
 	}
 
diff --git a/fs/erofs/Kconfig b/fs/erofs/Kconfig
index 8549037..704fb59 100644
--- a/fs/erofs/Kconfig
+++ b/fs/erofs/Kconfig
@@ -108,3 +108,21 @@
 	  read support.
 
 	  If unsure, say N.
+
+config EROFS_FS_PCPU_KTHREAD
+	bool "EROFS per-cpu decompression kthread workers"
+	depends on EROFS_FS_ZIP
+	help
+	  Saying Y here enables per-CPU kthread workers pool to carry out
+	  async decompression for low latencies on some architectures.
+
+	  If unsure, say N.
+
+config EROFS_FS_PCPU_KTHREAD_HIPRI
+	bool "EROFS high priority per-CPU kthread workers"
+	depends on EROFS_FS_ZIP && EROFS_FS_PCPU_KTHREAD
+	help
+	  This permits EROFS to configure per-CPU kthread workers to run
+	  at higher priority.
+
+	  If unsure, say N.
diff --git a/fs/erofs/data.c b/fs/erofs/data.c
index fe8ac0e..a6cfb2a 100644
--- a/fs/erofs/data.c
+++ b/fs/erofs/data.c
@@ -431,7 +431,7 @@ static int erofs_file_mmap(struct file *file, struct vm_area_struct *vma)
 		return -EINVAL;
 
 	vma->vm_ops = &erofs_dax_vm_ops;
-	vma->vm_flags |= VM_HUGEPAGE;
+	vm_flags_set(vma, VM_HUGEPAGE);
 	return 0;
 }
 #else
diff --git a/fs/erofs/zdata.c b/fs/erofs/zdata.c
index cf48718..bc4971e 100644
--- a/fs/erofs/zdata.c
+++ b/fs/erofs/zdata.c
@@ -8,7 +8,7 @@
 #include "compress.h"
 #include <linux/prefetch.h>
 #include <linux/psi.h>
-
+#include <linux/cpuhotplug.h>
 #include <trace/events/erofs.h>
 
 /*
@@ -196,24 +196,128 @@ typedef tagptr1_t compressed_page_t;
 
 static struct workqueue_struct *z_erofs_workqueue __read_mostly;
 
-void z_erofs_exit_zip_subsystem(void)
+#ifdef CONFIG_EROFS_FS_PCPU_KTHREAD
+static struct kthread_worker __rcu **z_erofs_pcpu_workers;
+
+static void erofs_destroy_percpu_workers(void)
 {
-	destroy_workqueue(z_erofs_workqueue);
-	z_erofs_destroy_pcluster_pool();
+	struct kthread_worker *worker;
+	unsigned int cpu;
+
+	for_each_possible_cpu(cpu) {
+		worker = rcu_dereference_protected(
+					z_erofs_pcpu_workers[cpu], 1);
+		rcu_assign_pointer(z_erofs_pcpu_workers[cpu], NULL);
+		if (worker)
+			kthread_destroy_worker(worker);
+	}
+	kfree(z_erofs_pcpu_workers);
 }
 
-static inline int z_erofs_init_workqueue(void)
+static struct kthread_worker *erofs_init_percpu_worker(int cpu)
 {
-	const unsigned int onlinecpus = num_possible_cpus();
+	struct kthread_worker *worker =
+		kthread_create_worker_on_cpu(cpu, 0, "erofs_worker/%u", cpu);
 
-	/*
-	 * no need to spawn too many threads, limiting threads could minimum
-	 * scheduling overhead, perhaps per-CPU threads should be better?
-	 */
-	z_erofs_workqueue = alloc_workqueue("erofs_unzipd",
-					    WQ_UNBOUND | WQ_HIGHPRI,
-					    onlinecpus + onlinecpus / 4);
-	return z_erofs_workqueue ? 0 : -ENOMEM;
+	if (IS_ERR(worker))
+		return worker;
+	if (IS_ENABLED(CONFIG_EROFS_FS_PCPU_KTHREAD_HIPRI))
+		sched_set_fifo_low(worker->task);
+	else
+		sched_set_normal(worker->task, 0);
+	return worker;
+}
+
+static int erofs_init_percpu_workers(void)
+{
+	struct kthread_worker *worker;
+	unsigned int cpu;
+
+	z_erofs_pcpu_workers = kcalloc(num_possible_cpus(),
+			sizeof(struct kthread_worker *), GFP_ATOMIC);
+	if (!z_erofs_pcpu_workers)
+		return -ENOMEM;
+
+	for_each_online_cpu(cpu) {	/* could miss cpu{off,on}line? */
+		worker = erofs_init_percpu_worker(cpu);
+		if (!IS_ERR(worker))
+			rcu_assign_pointer(z_erofs_pcpu_workers[cpu], worker);
+	}
+	return 0;
+}
+#else
+static inline void erofs_destroy_percpu_workers(void) {}
+static inline int erofs_init_percpu_workers(void) { return 0; }
+#endif
+
+#if defined(CONFIG_HOTPLUG_CPU) && defined(CONFIG_EROFS_FS_PCPU_KTHREAD)
+static DEFINE_SPINLOCK(z_erofs_pcpu_worker_lock);
+static enum cpuhp_state erofs_cpuhp_state;
+
+static int erofs_cpu_online(unsigned int cpu)
+{
+	struct kthread_worker *worker, *old;
+
+	worker = erofs_init_percpu_worker(cpu);
+	if (IS_ERR(worker))
+		return PTR_ERR(worker);
+
+	spin_lock(&z_erofs_pcpu_worker_lock);
+	old = rcu_dereference_protected(z_erofs_pcpu_workers[cpu],
+			lockdep_is_held(&z_erofs_pcpu_worker_lock));
+	if (!old)
+		rcu_assign_pointer(z_erofs_pcpu_workers[cpu], worker);
+	spin_unlock(&z_erofs_pcpu_worker_lock);
+	if (old)
+		kthread_destroy_worker(worker);
+	return 0;
+}
+
+static int erofs_cpu_offline(unsigned int cpu)
+{
+	struct kthread_worker *worker;
+
+	spin_lock(&z_erofs_pcpu_worker_lock);
+	worker = rcu_dereference_protected(z_erofs_pcpu_workers[cpu],
+			lockdep_is_held(&z_erofs_pcpu_worker_lock));
+	rcu_assign_pointer(z_erofs_pcpu_workers[cpu], NULL);
+	spin_unlock(&z_erofs_pcpu_worker_lock);
+
+	synchronize_rcu();
+	if (worker)
+		kthread_destroy_worker(worker);
+	return 0;
+}
+
+static int erofs_cpu_hotplug_init(void)
+{
+	int state;
+
+	state = cpuhp_setup_state_nocalls(CPUHP_AP_ONLINE_DYN,
+			"fs/erofs:online", erofs_cpu_online, erofs_cpu_offline);
+	if (state < 0)
+		return state;
+
+	erofs_cpuhp_state = state;
+	return 0;
+}
+
+static void erofs_cpu_hotplug_destroy(void)
+{
+	if (erofs_cpuhp_state)
+		cpuhp_remove_state_nocalls(erofs_cpuhp_state);
+}
+#else /* !CONFIG_HOTPLUG_CPU || !CONFIG_EROFS_FS_PCPU_KTHREAD */
+static inline int erofs_cpu_hotplug_init(void) { return 0; }
+static inline void erofs_cpu_hotplug_destroy(void) {}
+#endif
+
+void z_erofs_exit_zip_subsystem(void)
+{
+	erofs_cpu_hotplug_destroy();
+	erofs_destroy_percpu_workers();
+	destroy_workqueue(z_erofs_workqueue);
+	z_erofs_destroy_pcluster_pool();
 }
 
 int __init z_erofs_init_zip_subsystem(void)
@@ -221,10 +325,31 @@ int __init z_erofs_init_zip_subsystem(void)
 	int err = z_erofs_create_pcluster_pool();
 
 	if (err)
-		return err;
-	err = z_erofs_init_workqueue();
+		goto out_error_pcluster_pool;
+
+	z_erofs_workqueue = alloc_workqueue("erofs_worker",
+			WQ_UNBOUND | WQ_HIGHPRI, num_possible_cpus());
+	if (!z_erofs_workqueue) {
+		err = -ENOMEM;
+		goto out_error_workqueue_init;
+	}
+
+	err = erofs_init_percpu_workers();
 	if (err)
-		z_erofs_destroy_pcluster_pool();
+		goto out_error_pcpu_worker;
+
+	err = erofs_cpu_hotplug_init();
+	if (err < 0)
+		goto out_error_cpuhp_init;
+	return err;
+
+out_error_cpuhp_init:
+	erofs_destroy_percpu_workers();
+out_error_pcpu_worker:
+	destroy_workqueue(z_erofs_workqueue);
+out_error_workqueue_init:
+	z_erofs_destroy_pcluster_pool();
+out_error_pcluster_pool:
 	return err;
 }
 
@@ -1166,11 +1291,17 @@ static void z_erofs_decompressqueue_work(struct work_struct *work)
 
 	DBG_BUGON(bgq->head == Z_EROFS_PCLUSTER_TAIL_CLOSED);
 	z_erofs_decompress_queue(bgq, &pagepool);
-
 	erofs_release_pages(&pagepool);
 	kvfree(bgq);
 }
 
+#ifdef CONFIG_EROFS_FS_PCPU_KTHREAD
+static void z_erofs_decompressqueue_kthread_work(struct kthread_work *work)
+{
+	z_erofs_decompressqueue_work((struct work_struct *)work);
+}
+#endif
+
 static void z_erofs_decompress_kickoff(struct z_erofs_decompressqueue *io,
 				       bool sync, int bios)
 {
@@ -1185,9 +1316,24 @@ static void z_erofs_decompress_kickoff(struct z_erofs_decompressqueue *io,
 
 	if (atomic_add_return(bios, &io->pending_bios))
 		return;
-	/* Use workqueue and sync decompression for atomic contexts only */
+	/* Use (kthread_)work and sync decompression for atomic contexts only */
 	if (in_atomic() || irqs_disabled()) {
+#ifdef CONFIG_EROFS_FS_PCPU_KTHREAD
+		struct kthread_worker *worker;
+
+		rcu_read_lock();
+		worker = rcu_dereference(
+				z_erofs_pcpu_workers[raw_smp_processor_id()]);
+		if (!worker) {
+			INIT_WORK(&io->u.work, z_erofs_decompressqueue_work);
+			queue_work(z_erofs_workqueue, &io->u.work);
+		} else {
+			kthread_queue_work(worker, &io->u.kthread_work);
+		}
+		rcu_read_unlock();
+#else
 		queue_work(z_erofs_workqueue, &io->u.work);
+#endif
 		/* enable sync decompression for readahead */
 		if (sbi->opt.sync_decompress == EROFS_SYNC_DECOMPRESS_AUTO)
 			sbi->opt.sync_decompress = EROFS_SYNC_DECOMPRESS_FORCE_ON;
@@ -1321,7 +1467,12 @@ jobqueue_init(struct super_block *sb,
 			*fg = true;
 			goto fg_out;
 		}
+#ifdef CONFIG_EROFS_FS_PCPU_KTHREAD
+		kthread_init_work(&q->u.kthread_work,
+				  z_erofs_decompressqueue_kthread_work);
+#else
 		INIT_WORK(&q->u.work, z_erofs_decompressqueue_work);
+#endif
 	} else {
 fg_out:
 		q = fgq;
@@ -1515,7 +1666,7 @@ static void z_erofs_submit_queue(struct z_erofs_decompress_frontend *f,
 
 	/*
 	 * although background is preferred, no one is pending for submission.
-	 * don't issue workqueue for decompression but drop it directly instead.
+	 * don't issue decompression but drop it directly instead.
 	 */
 	if (!*force_fg && !nr_bios) {
 		kvfree(q[JQ_SUBMIT]);
diff --git a/fs/erofs/zdata.h b/fs/erofs/zdata.h
index d98c952..4588a47 100644
--- a/fs/erofs/zdata.h
+++ b/fs/erofs/zdata.h
@@ -6,6 +6,7 @@
 #ifndef __EROFS_FS_ZDATA_H
 #define __EROFS_FS_ZDATA_H
 
+#include <linux/kthread.h>
 #include "internal.h"
 #include "tagptr.h"
 
@@ -108,6 +109,7 @@ struct z_erofs_decompressqueue {
 	union {
 		struct completion done;
 		struct work_struct work;
+		struct kthread_work kthread_work;
 	} u;
 
 	bool eio;
diff --git a/fs/exec.c b/fs/exec.c
index a0b1f03..2d6bca1 100644
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -269,7 +269,7 @@ static int __bprm_mm_init(struct linux_binprm *bprm)
 	BUILD_BUG_ON(VM_STACK_FLAGS & VM_STACK_INCOMPLETE_SETUP);
 	vma->vm_end = STACK_TOP_MAX;
 	vma->vm_start = vma->vm_end - PAGE_SIZE;
-	vma->vm_flags = VM_SOFTDIRTY | VM_STACK_FLAGS | VM_STACK_INCOMPLETE_SETUP;
+	vm_flags_init(vma, VM_SOFTDIRTY | VM_STACK_FLAGS | VM_STACK_INCOMPLETE_SETUP);
 	vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
 
 	err = insert_vm_struct(mm, vma);
@@ -833,7 +833,7 @@ int setup_arg_pages(struct linux_binprm *bprm,
 	}
 
 	/* mprotect_fixup is overkill to remove the temporary stack flags */
-	vma->vm_flags &= ~VM_STACK_INCOMPLETE_SETUP;
+	vm_flags_clear(vma, VM_STACK_INCOMPLETE_SETUP);
 
 	stack_expand = 131072UL; /* randomly 32*4k (or 2*64k) pages */
 	stack_size = vma->vm_end - vma->vm_start;
diff --git a/fs/ext4/file.c b/fs/ext4/file.c
index a7a597c..4517c99 100644
--- a/fs/ext4/file.c
+++ b/fs/ext4/file.c
@@ -801,7 +801,7 @@ static int ext4_file_mmap(struct file *file, struct vm_area_struct *vma)
 	file_accessed(file);
 	if (IS_DAX(file_inode(file))) {
 		vma->vm_ops = &ext4_dax_vm_ops;
-		vma->vm_flags |= VM_HUGEPAGE;
+		vm_flags_set(vma, VM_HUGEPAGE);
 	} else {
 		vma->vm_ops = &ext4_file_vm_ops;
 	}
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 80d5a85..b566f14 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -1136,7 +1136,8 @@ static int ext4_block_write_begin(struct page *page, loff_t pos, unsigned len,
 		for (i = 0; i < nr_wait; i++) {
 			int err2;
 
-			err2 = fscrypt_decrypt_pagecache_blocks(page, blocksize,
+			err2 = fscrypt_decrypt_pagecache_blocks(page_folio(page),
+								blocksize,
 								bh_offset(wait[i]));
 			if (err2) {
 				clear_buffer_uptodate(wait[i]);
@@ -3791,7 +3792,8 @@ static int __ext4_block_zero_page_range(handle_t *handle,
 		if (fscrypt_inode_uses_fs_layer_crypto(inode)) {
 			/* We expect the key to be set. */
 			BUG_ON(!fscrypt_has_encryption_key(inode));
-			err = fscrypt_decrypt_pagecache_blocks(page, blocksize,
+			err = fscrypt_decrypt_pagecache_blocks(page_folio(page),
+							       blocksize,
 							       bh_offset(bh));
 			if (err) {
 				clear_buffer_uptodate(bh);
diff --git a/fs/ext4/readpage.c b/fs/ext4/readpage.c
index 3d21eae..ef456cd 100644
--- a/fs/ext4/readpage.c
+++ b/fs/ext4/readpage.c
@@ -43,6 +43,7 @@
 #include <linux/writeback.h>
 #include <linux/backing-dev.h>
 #include <linux/pagevec.h>
+#include <linux/cleancache.h>
 
 #include "ext4.h"
 
@@ -75,14 +76,10 @@ static void __read_end_io(struct bio *bio)
 	bio_for_each_segment_all(bv, bio, iter_all) {
 		page = bv->bv_page;
 
-		/* PG_error was set if verity failed. */
-		if (bio->bi_status || PageError(page)) {
+		if (bio->bi_status)
 			ClearPageUptodate(page);
-			/* will re-read again later */
-			ClearPageError(page);
-		} else {
+		else
 			SetPageUptodate(page);
-		}
 		unlock_page(page);
 	}
 	if (bio->bi_private)
@@ -215,8 +212,7 @@ static void ext4_set_bio_post_read_ctx(struct bio *bio,
 
 static inline loff_t ext4_readpage_limit(struct inode *inode)
 {
-	if (IS_ENABLED(CONFIG_FS_VERITY) &&
-	    (IS_VERITY(inode) || ext4_verity_in_progress(inode)))
+	if (IS_ENABLED(CONFIG_FS_VERITY) && IS_VERITY(inode))
 		return inode->i_sb->s_maxbytes;
 
 	return i_size_read(inode);
@@ -351,6 +347,11 @@ int ext4_mpage_readpages(struct inode *inode,
 		} else if (fully_mapped) {
 			SetPageMappedToDisk(page);
 		}
+		if (fully_mapped && blocks_per_page == 1 &&
+		    !PageUptodate(page) && cleancache_get_page(page) == 0) {
+			SetPageUptodate(page);
+			goto confused;
+		}
 
 		/*
 		 * This page will go to BIO.  Do we need to send this
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index 760249d..6a2b5bc 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -39,6 +39,7 @@
 #include <linux/log2.h>
 #include <linux/crc16.h>
 #include <linux/dax.h>
+#include <linux/cleancache.h>
 #include <linux/uaccess.h>
 #include <linux/iversion.h>
 #include <linux/unicode.h>
@@ -2637,7 +2638,6 @@ static int ext4_check_test_dummy_encryption(const struct fs_context *fc,
 {
 	const struct ext4_fs_context *ctx = fc->fs_private;
 	const struct ext4_sb_info *sbi = EXT4_SB(sb);
-	int err;
 
 	if (!fscrypt_is_dummy_policy_set(&ctx->dummy_enc_policy))
 		return 0;
@@ -2670,17 +2670,7 @@ static int ext4_check_test_dummy_encryption(const struct fs_context *fc,
 			 "Conflicting test_dummy_encryption options");
 		return -EINVAL;
 	}
-	/*
-	 * fscrypt_add_test_dummy_key() technically changes the super_block, so
-	 * technically it should be delayed until ext4_apply_options() like the
-	 * other changes.  But since we never get here for remounts (see above),
-	 * and this is the last chance to report errors, we do it here.
-	 */
-	err = fscrypt_add_test_dummy_key(sb, &ctx->dummy_enc_policy);
-	if (err)
-		ext4_msg(NULL, KERN_WARNING,
-			 "Error adding test dummy encryption key [%d]", err);
-	return err;
+	return 0;
 }
 
 static void ext4_apply_test_dummy_encryption(struct ext4_fs_context *ctx,
@@ -3077,6 +3067,8 @@ static int ext4_setup_super(struct super_block *sb, struct ext4_super_block *es,
 			EXT4_BLOCKS_PER_GROUP(sb),
 			EXT4_INODES_PER_GROUP(sb),
 			sbi->s_mount_opt, sbi->s_mount_opt2);
+
+	cleancache_init_fs(sb);
 	return err;
 }
 
@@ -5353,11 +5345,6 @@ static int __ext4_fill_super(struct fs_context *fc, struct super_block *sb)
 		}
 	}
 
-	if (ext4_has_feature_verity(sb) && sb->s_blocksize != PAGE_SIZE) {
-		ext4_msg(sb, KERN_ERR, "Unsupported blocksize for fs-verity");
-		goto failed_mount_wq;
-	}
-
 	/*
 	 * Get the # of file system overhead blocks from the
 	 * superblock if present.
diff --git a/fs/ext4/verity.c b/fs/ext4/verity.c
index 30e3b65..e4da170 100644
--- a/fs/ext4/verity.c
+++ b/fs/ext4/verity.c
@@ -381,11 +381,11 @@ static struct page *ext4_read_merkle_tree_page(struct inode *inode,
 }
 
 static int ext4_write_merkle_tree_block(struct inode *inode, const void *buf,
-					u64 index, int log_blocksize)
+					u64 pos, unsigned int size)
 {
-	loff_t pos = ext4_verity_metadata_pos(inode) + (index << log_blocksize);
+	pos += ext4_verity_metadata_pos(inode);
 
-	return pagecache_write(inode, buf, 1 << log_blocksize, pos);
+	return pagecache_write(inode, buf, size, pos);
 }
 
 const struct fsverity_operations ext4_verityops = {
diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c
index 5df04ed..7e0870e 100644
--- a/fs/f2fs/checkpoint.c
+++ b/fs/f2fs/checkpoint.c
@@ -70,7 +70,7 @@ static struct page *__get_meta_page(struct f2fs_sb_info *sbi, pgoff_t index,
 		.old_blkaddr = index,
 		.new_blkaddr = index,
 		.encrypted_page = NULL,
-		.is_por = !is_meta,
+		.is_por = !is_meta ? 1 : 0,
 	};
 	int err;
 
@@ -152,6 +152,11 @@ static bool __is_bitmap_valid(struct f2fs_sb_info *sbi, block_t blkaddr,
 	se = get_seg_entry(sbi, segno);
 
 	exist = f2fs_test_bit(offset, se->cur_valid_map);
+
+	/* skip data, if we already have an error in checkpoint. */
+	if (unlikely(f2fs_cp_error(sbi)))
+		return exist;
+
 	if (exist && type == DATA_GENERIC_ENHANCE_UPDATE) {
 		f2fs_err(sbi, "Inconsistent error blkaddr:%u, sit bitmap:%d",
 			 blkaddr, exist);
@@ -171,6 +176,9 @@ static bool __is_bitmap_valid(struct f2fs_sb_info *sbi, block_t blkaddr,
 bool f2fs_is_valid_blkaddr(struct f2fs_sb_info *sbi,
 					block_t blkaddr, int type)
 {
+	if (time_to_inject(sbi, FAULT_BLKADDR))
+		return false;
+
 	switch (type) {
 	case META_NAT:
 		break;
@@ -199,6 +207,11 @@ bool f2fs_is_valid_blkaddr(struct f2fs_sb_info *sbi,
 	case DATA_GENERIC_ENHANCE_UPDATE:
 		if (unlikely(blkaddr >= MAX_BLKADDR(sbi) ||
 				blkaddr < MAIN_BLKADDR(sbi))) {
+
+			/* Skip to emit an error message. */
+			if (unlikely(f2fs_cp_error(sbi)))
+				return false;
+
 			f2fs_warn(sbi, "access invalid blkaddr:%u",
 				  blkaddr);
 			set_sbi_flag(sbi, SBI_NEED_FSCK);
@@ -234,8 +247,8 @@ int f2fs_ra_meta_pages(struct f2fs_sb_info *sbi, block_t start, int nrpages,
 		.op = REQ_OP_READ,
 		.op_flags = sync ? (REQ_META | REQ_PRIO) : REQ_RAHEAD,
 		.encrypted_page = NULL,
-		.in_list = false,
-		.is_por = (type == META_POR),
+		.in_list = 0,
+		.is_por = (type == META_POR) ? 1 : 0,
 	};
 	struct blk_plug plug;
 	int err;
@@ -509,6 +522,7 @@ static void __add_ino_entry(struct f2fs_sb_info *sbi, nid_t ino,
 	if (!e) {
 		if (!new) {
 			spin_unlock(&im->ino_lock);
+			radix_tree_preload_end();
 			goto retry;
 		}
 		e = new;
@@ -624,7 +638,6 @@ int f2fs_acquire_orphan_inode(struct f2fs_sb_info *sbi)
 
 	if (time_to_inject(sbi, FAULT_ORPHAN)) {
 		spin_unlock(&im->ino_lock);
-		f2fs_show_injection_info(sbi, FAULT_ORPHAN);
 		return -ENOSPC;
 	}
 
@@ -708,32 +721,18 @@ static int recover_orphan_inode(struct f2fs_sb_info *sbi, nid_t ino)
 int f2fs_recover_orphan_inodes(struct f2fs_sb_info *sbi)
 {
 	block_t start_blk, orphan_blocks, i, j;
-	unsigned int s_flags = sbi->sb->s_flags;
 	int err = 0;
-#ifdef CONFIG_QUOTA
-	int quota_enabled;
-#endif
 
 	if (!is_set_ckpt_flags(sbi, CP_ORPHAN_PRESENT_FLAG))
 		return 0;
 
-	if (bdev_read_only(sbi->sb->s_bdev)) {
+	if (f2fs_hw_is_readonly(sbi)) {
 		f2fs_info(sbi, "write access unavailable, skipping orphan cleanup");
 		return 0;
 	}
 
-	if (s_flags & SB_RDONLY) {
+	if (is_sbi_flag_set(sbi, SBI_IS_WRITABLE))
 		f2fs_info(sbi, "orphan cleanup on readonly fs");
-		sbi->sb->s_flags &= ~SB_RDONLY;
-	}
-
-#ifdef CONFIG_QUOTA
-	/*
-	 * Turn on quotas which were not enabled for read-only mounts if
-	 * filesystem has quota feature, so that they are updated correctly.
-	 */
-	quota_enabled = f2fs_enable_quota_files(sbi, s_flags & SB_RDONLY);
-#endif
 
 	start_blk = __start_cp_addr(sbi) + 1 + __cp_payload(sbi);
 	orphan_blocks = __start_sum_addr(sbi) - 1 - __cp_payload(sbi);
@@ -767,13 +766,6 @@ int f2fs_recover_orphan_inodes(struct f2fs_sb_info *sbi)
 out:
 	set_sbi_flag(sbi, SBI_IS_RECOVERED);
 
-#ifdef CONFIG_QUOTA
-	/* Turn quotas off */
-	if (quota_enabled)
-		f2fs_quota_off_umount(sbi->sb);
-#endif
-	sbi->sb->s_flags = s_flags; /* Restore SB_RDONLY status */
-
 	return err;
 }
 
@@ -797,7 +789,7 @@ static void write_orphan_inodes(struct f2fs_sb_info *sbi, block_t start_blk)
 	 */
 	head = &im->ino_list;
 
-	/* loop for each orphan inode entry and write them in Jornal block */
+	/* loop for each orphan inode entry and write them in journal block */
 	list_for_each_entry(orphan, head, list) {
 		if (!page) {
 			page = f2fs_grab_meta_page(sbi, start_blk++);
@@ -984,7 +976,7 @@ int f2fs_get_valid_checkpoint(struct f2fs_sb_info *sbi)
 
 	cp_blk_no = le32_to_cpu(fsb->cp_blkaddr);
 	if (cur_page == cp2)
-		cp_blk_no += 1 << le32_to_cpu(fsb->log_blocks_per_seg);
+		cp_blk_no += BIT(le32_to_cpu(fsb->log_blocks_per_seg));
 
 	for (i = 1; i < cp_blks; i++) {
 		void *sit_bitmap_ptr;
@@ -1127,7 +1119,7 @@ int f2fs_sync_dirty_inodes(struct f2fs_sb_info *sbi, enum inode_type type,
 	} else {
 		/*
 		 * We should submit bio, since it exists several
-		 * wribacking dentry pages in the freeing inode.
+		 * writebacking dentry pages in the freeing inode.
 		 */
 		f2fs_submit_merged_write(sbi, DATA);
 		cond_resched();
@@ -1135,7 +1127,7 @@ int f2fs_sync_dirty_inodes(struct f2fs_sb_info *sbi, enum inode_type type,
 	goto retry;
 }
 
-int f2fs_sync_inode_meta(struct f2fs_sb_info *sbi)
+static int f2fs_sync_inode_meta(struct f2fs_sb_info *sbi)
 {
 	struct list_head *head = &sbi->inode_list[DIRTY_META];
 	struct inode *inode;
@@ -1476,20 +1468,18 @@ static int do_checkpoint(struct f2fs_sb_info *sbi, struct cp_control *cpc)
 	ckpt->elapsed_time = cpu_to_le64(get_mtime(sbi, true));
 	ckpt->free_segment_count = cpu_to_le32(free_segments(sbi));
 	for (i = 0; i < NR_CURSEG_NODE_TYPE; i++) {
-		ckpt->cur_node_segno[i] =
-			cpu_to_le32(curseg_segno(sbi, i + CURSEG_HOT_NODE));
-		ckpt->cur_node_blkoff[i] =
-			cpu_to_le16(curseg_blkoff(sbi, i + CURSEG_HOT_NODE));
-		ckpt->alloc_type[i + CURSEG_HOT_NODE] =
-				curseg_alloc_type(sbi, i + CURSEG_HOT_NODE);
+		struct curseg_info *curseg = CURSEG_I(sbi, i + CURSEG_HOT_NODE);
+
+		ckpt->cur_node_segno[i] = cpu_to_le32(curseg->segno);
+		ckpt->cur_node_blkoff[i] = cpu_to_le16(curseg->next_blkoff);
+		ckpt->alloc_type[i + CURSEG_HOT_NODE] = curseg->alloc_type;
 	}
 	for (i = 0; i < NR_CURSEG_DATA_TYPE; i++) {
-		ckpt->cur_data_segno[i] =
-			cpu_to_le32(curseg_segno(sbi, i + CURSEG_HOT_DATA));
-		ckpt->cur_data_blkoff[i] =
-			cpu_to_le16(curseg_blkoff(sbi, i + CURSEG_HOT_DATA));
-		ckpt->alloc_type[i + CURSEG_HOT_DATA] =
-				curseg_alloc_type(sbi, i + CURSEG_HOT_DATA);
+		struct curseg_info *curseg = CURSEG_I(sbi, i + CURSEG_HOT_DATA);
+
+		ckpt->cur_data_segno[i] = cpu_to_le32(curseg->segno);
+		ckpt->cur_data_blkoff[i] = cpu_to_le16(curseg->next_blkoff);
+		ckpt->alloc_type[i + CURSEG_HOT_DATA] = curseg->alloc_type;
 	}
 
 	/* 2 cp + n data seg summary + orphan inode blocks */
@@ -1905,8 +1895,10 @@ int f2fs_start_ckpt_thread(struct f2fs_sb_info *sbi)
 	cprc->f2fs_issue_ckpt = kthread_run(issue_checkpoint_thread, sbi,
 			"f2fs_ckpt-%u:%u", MAJOR(dev), MINOR(dev));
 	if (IS_ERR(cprc->f2fs_issue_ckpt)) {
+		int err = PTR_ERR(cprc->f2fs_issue_ckpt);
+
 		cprc->f2fs_issue_ckpt = NULL;
-		return -ENOMEM;
+		return err;
 	}
 
 	set_task_ioprio(cprc->f2fs_issue_ckpt, cprc->ckpt_thread_ioprio);
diff --git a/fs/f2fs/compress.c b/fs/f2fs/compress.c
index b160863..10b545a 100644
--- a/fs/f2fs/compress.c
+++ b/fs/f2fs/compress.c
@@ -241,7 +241,7 @@ static int lz4_init_compress_ctx(struct compress_ctx *cc)
 	unsigned int size = LZ4_MEM_COMPRESS;
 
 #ifdef CONFIG_F2FS_FS_LZ4HC
-	if (F2FS_I(cc->inode)->i_compress_flag >> COMPRESS_LEVEL_OFFSET)
+	if (F2FS_I(cc->inode)->i_compress_level)
 		size = LZ4HC_MEM_COMPRESS;
 #endif
 
@@ -264,36 +264,21 @@ static void lz4_destroy_compress_ctx(struct compress_ctx *cc)
 	cc->private = NULL;
 }
 
-#ifdef CONFIG_F2FS_FS_LZ4HC
-static int lz4hc_compress_pages(struct compress_ctx *cc)
-{
-	unsigned char level = F2FS_I(cc->inode)->i_compress_flag >>
-						COMPRESS_LEVEL_OFFSET;
-	int len;
-
-	if (level)
-		len = LZ4_compress_HC(cc->rbuf, cc->cbuf->cdata, cc->rlen,
-					cc->clen, level, cc->private);
-	else
-		len = LZ4_compress_default(cc->rbuf, cc->cbuf->cdata, cc->rlen,
-						cc->clen, cc->private);
-	if (!len)
-		return -EAGAIN;
-
-	cc->clen = len;
-	return 0;
-}
-#endif
-
 static int lz4_compress_pages(struct compress_ctx *cc)
 {
-	int len;
+	int len = -EINVAL;
+	unsigned char level = F2FS_I(cc->inode)->i_compress_level;
 
-#ifdef CONFIG_F2FS_FS_LZ4HC
-	return lz4hc_compress_pages(cc);
-#endif
-	len = LZ4_compress_default(cc->rbuf, cc->cbuf->cdata, cc->rlen,
+	if (!level)
+		len = LZ4_compress_default(cc->rbuf, cc->cbuf->cdata, cc->rlen,
 						cc->clen, cc->private);
+#ifdef CONFIG_F2FS_FS_LZ4HC
+	else
+		len = LZ4_compress_HC(cc->rbuf, cc->cbuf->cdata, cc->rlen,
+					cc->clen, level, cc->private);
+#endif
+	if (len < 0)
+		return len;
 	if (!len)
 		return -EAGAIN;
 
@@ -340,8 +325,7 @@ static int zstd_init_compress_ctx(struct compress_ctx *cc)
 	zstd_cstream *stream;
 	void *workspace;
 	unsigned int workspace_size;
-	unsigned char level = F2FS_I(cc->inode)->i_compress_flag >>
-						COMPRESS_LEVEL_OFFSET;
+	unsigned char level = F2FS_I(cc->inode)->i_compress_level;
 
 	if (!level)
 		level = F2FS_ZSTD_DEFAULT_CLEVEL;
@@ -564,13 +548,10 @@ module_param(num_compress_pages, uint, 0444);
 MODULE_PARM_DESC(num_compress_pages,
 		"Number of intermediate compress pages to preallocate");
 
-int f2fs_init_compress_mempool(void)
+int __init f2fs_init_compress_mempool(void)
 {
 	compress_page_pool = mempool_create_page_pool(num_compress_pages, 0);
-	if (!compress_page_pool)
-		return -ENOMEM;
-
-	return 0;
+	return compress_page_pool ? 0 : -ENOMEM;
 }
 
 void f2fs_destroy_compress_mempool(void)
@@ -675,7 +656,7 @@ static int f2fs_compress_pages(struct compress_ctx *cc)
 
 	cc->cbuf->clen = cpu_to_le32(cc->clen);
 
-	if (fi->i_compress_flag & 1 << COMPRESS_CHKSUM)
+	if (fi->i_compress_flag & BIT(COMPRESS_CHKSUM))
 		chksum = f2fs_crc32(F2FS_I_SB(cc->inode),
 					cc->cbuf->cdata, cc->clen);
 	cc->cbuf->chksum = cpu_to_le32(chksum);
@@ -693,9 +674,7 @@ static int f2fs_compress_pages(struct compress_ctx *cc)
 	vm_unmap_ram(cc->cbuf, cc->nr_cpages);
 	vm_unmap_ram(cc->rbuf, cc->cluster_size);
 
-	for (i = 0; i < cc->nr_cpages; i++) {
-		if (i < new_nr_cpages)
-			continue;
+	for (i = new_nr_cpages; i < cc->nr_cpages; i++) {
 		f2fs_compress_free_page(cc->cpages[i]);
 		cc->cpages[i] = NULL;
 	}
@@ -764,7 +743,7 @@ void f2fs_decompress_cluster(struct decompress_io_ctx *dic, bool in_task)
 		ret = -EFSCORRUPTED;
 
 		/* Avoid f2fs_commit_super in irq context */
-		if (in_task)
+		if (!in_task)
 			f2fs_save_errors(sbi, ERROR_FAIL_DECOMPRESSION);
 		else
 			f2fs_handle_error(sbi, ERROR_FAIL_DECOMPRESSION);
@@ -773,7 +752,7 @@ void f2fs_decompress_cluster(struct decompress_io_ctx *dic, bool in_task)
 
 	ret = cops->decompress_pages(dic);
 
-	if (!ret && (fi->i_compress_flag & 1 << COMPRESS_CHKSUM)) {
+	if (!ret && (fi->i_compress_flag & BIT(COMPRESS_CHKSUM))) {
 		u32 provided = le32_to_cpu(dic->cbuf->chksum);
 		u32 calculated = f2fs_crc32(sbi, dic->cbuf->cdata, dic->clen);
 
@@ -1078,7 +1057,7 @@ static int prepare_compress_overwrite(struct compress_ctx *cc,
 		if (ret)
 			goto out;
 		if (bio)
-			f2fs_submit_bio(sbi, bio, DATA);
+			f2fs_submit_read_bio(sbi, bio, DATA);
 
 		ret = f2fs_init_compress_ctx(cc);
 		if (ret)
@@ -1223,10 +1202,11 @@ static int f2fs_write_compressed_pages(struct compress_ctx *cc,
 		.page = NULL,
 		.encrypted_page = NULL,
 		.compressed_page = NULL,
-		.submitted = false,
+		.submitted = 0,
 		.io_type = io_type,
 		.io_wbc = wbc,
-		.encrypted = fscrypt_inode_uses_fs_layer_crypto(cc->inode),
+		.encrypted = fscrypt_inode_uses_fs_layer_crypto(cc->inode) ?
+									1 : 0,
 	};
 	struct dnode_of_data dn;
 	struct node_info ni;
@@ -1236,7 +1216,7 @@ static int f2fs_write_compressed_pages(struct compress_ctx *cc,
 	loff_t psize;
 	int i, err;
 
-	/* we should bypass data pages to proceed the kworkder jobs */
+	/* we should bypass data pages to proceed the kworker jobs */
 	if (unlikely(f2fs_cp_error(sbi))) {
 		mapping_set_error(cc->rpages[0]->mapping, -EIO);
 		goto out_free;
@@ -1722,50 +1702,27 @@ static void f2fs_put_dic(struct decompress_io_ctx *dic, bool in_task)
 	}
 }
 
-/*
- * Update and unlock the cluster's pagecache pages, and release the reference to
- * the decompress_io_ctx that was being held for I/O completion.
- */
-static void __f2fs_decompress_end_io(struct decompress_io_ctx *dic, bool failed,
-				bool in_task)
-{
-	int i;
-
-	for (i = 0; i < dic->cluster_size; i++) {
-		struct page *rpage = dic->rpages[i];
-
-		if (!rpage)
-			continue;
-
-		/* PG_error was set if verity failed. */
-		if (failed || PageError(rpage)) {
-			ClearPageUptodate(rpage);
-			/* will re-read again later */
-			ClearPageError(rpage);
-		} else {
-			SetPageUptodate(rpage);
-		}
-		unlock_page(rpage);
-	}
-
-	f2fs_put_dic(dic, in_task);
-}
-
 static void f2fs_verify_cluster(struct work_struct *work)
 {
 	struct decompress_io_ctx *dic =
 		container_of(work, struct decompress_io_ctx, verity_work);
 	int i;
 
-	/* Verify the cluster's decompressed pages with fs-verity. */
+	/* Verify, update, and unlock the decompressed pages. */
 	for (i = 0; i < dic->cluster_size; i++) {
 		struct page *rpage = dic->rpages[i];
 
-		if (rpage && !fsverity_verify_page(rpage))
-			SetPageError(rpage);
+		if (!rpage)
+			continue;
+
+		if (fsverity_verify_page(rpage))
+			SetPageUptodate(rpage);
+		else
+			ClearPageUptodate(rpage);
+		unlock_page(rpage);
 	}
 
-	__f2fs_decompress_end_io(dic, false, true);
+	f2fs_put_dic(dic, true);
 }
 
 /*
@@ -1775,6 +1732,8 @@ static void f2fs_verify_cluster(struct work_struct *work)
 void f2fs_decompress_end_io(struct decompress_io_ctx *dic, bool failed,
 				bool in_task)
 {
+	int i;
+
 	if (!failed && dic->need_verity) {
 		/*
 		 * Note that to avoid deadlocks, the verity work can't be done
@@ -1784,9 +1743,28 @@ void f2fs_decompress_end_io(struct decompress_io_ctx *dic, bool failed,
 		 */
 		INIT_WORK(&dic->verity_work, f2fs_verify_cluster);
 		fsverity_enqueue_verify_work(&dic->verity_work);
-	} else {
-		__f2fs_decompress_end_io(dic, failed, in_task);
+		return;
 	}
+
+	/* Update and unlock the cluster's pagecache pages. */
+	for (i = 0; i < dic->cluster_size; i++) {
+		struct page *rpage = dic->rpages[i];
+
+		if (!rpage)
+			continue;
+
+		if (failed)
+			ClearPageUptodate(rpage);
+		else
+			SetPageUptodate(rpage);
+		unlock_page(rpage);
+	}
+
+	/*
+	 * Release the reference to the decompress_io_ctx that was being held
+	 * for I/O completion.
+	 */
+	f2fs_put_dic(dic, in_task);
 }
 
 /*
@@ -1829,6 +1807,7 @@ unsigned int f2fs_cluster_blocks_are_contiguous(struct dnode_of_data *dn)
 const struct address_space_operations f2fs_compress_aops = {
 	.release_folio = f2fs_release_folio,
 	.invalidate_folio = f2fs_invalidate_folio,
+	.migrate_folio	= filemap_migrate_folio,
 };
 
 struct address_space *COMPRESS_MAPPING(struct f2fs_sb_info *sbi)
@@ -1994,9 +1973,7 @@ int f2fs_init_page_array_cache(struct f2fs_sb_info *sbi)
 
 	sbi->page_array_slab = f2fs_kmem_cache_create(slab_name,
 					sbi->page_array_slab_size);
-	if (!sbi->page_array_slab)
-		return -ENOMEM;
-	return 0;
+	return sbi->page_array_slab ? 0 : -ENOMEM;
 }
 
 void f2fs_destroy_page_array_cache(struct f2fs_sb_info *sbi)
@@ -2004,53 +1981,24 @@ void f2fs_destroy_page_array_cache(struct f2fs_sb_info *sbi)
 	kmem_cache_destroy(sbi->page_array_slab);
 }
 
-static int __init f2fs_init_cic_cache(void)
+int __init f2fs_init_compress_cache(void)
 {
 	cic_entry_slab = f2fs_kmem_cache_create("f2fs_cic_entry",
 					sizeof(struct compress_io_ctx));
 	if (!cic_entry_slab)
 		return -ENOMEM;
-	return 0;
-}
-
-static void f2fs_destroy_cic_cache(void)
-{
-	kmem_cache_destroy(cic_entry_slab);
-}
-
-static int __init f2fs_init_dic_cache(void)
-{
 	dic_entry_slab = f2fs_kmem_cache_create("f2fs_dic_entry",
 					sizeof(struct decompress_io_ctx));
 	if (!dic_entry_slab)
-		return -ENOMEM;
-	return 0;
-}
-
-static void f2fs_destroy_dic_cache(void)
-{
-	kmem_cache_destroy(dic_entry_slab);
-}
-
-int __init f2fs_init_compress_cache(void)
-{
-	int err;
-
-	err = f2fs_init_cic_cache();
-	if (err)
-		goto out;
-	err = f2fs_init_dic_cache();
-	if (err)
 		goto free_cic;
 	return 0;
 free_cic:
-	f2fs_destroy_cic_cache();
-out:
+	kmem_cache_destroy(cic_entry_slab);
 	return -ENOMEM;
 }
 
 void f2fs_destroy_compress_cache(void)
 {
-	f2fs_destroy_dic_cache();
-	f2fs_destroy_cic_cache();
+	kmem_cache_destroy(dic_entry_slab);
+	kmem_cache_destroy(cic_entry_slab);
 }
diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
index 36db9aa..8260f4b 100644
--- a/fs/f2fs/data.c
+++ b/fs/f2fs/data.c
@@ -18,6 +18,7 @@
 #include <linux/swap.h>
 #include <linux/prefetch.h>
 #include <linux/uio.h>
+#include <linux/cleancache.h>
 #include <linux/sched/signal.h>
 #include <linux/fiemap.h>
 #include <linux/iomap.h>
@@ -39,10 +40,8 @@ static struct bio_set f2fs_bioset;
 
 int __init f2fs_init_bioset(void)
 {
-	if (bioset_init(&f2fs_bioset, F2FS_BIO_POOL_SIZE,
-					0, BIOSET_NEED_BVECS))
-		return -ENOMEM;
-	return 0;
+	return bioset_init(&f2fs_bioset, F2FS_BIO_POOL_SIZE,
+					0, BIOSET_NEED_BVECS);
 }
 
 void f2fs_destroy_bioset(void)
@@ -95,17 +94,17 @@ static enum count_type __read_io_type(struct page *page)
 /* postprocessing steps for read bios */
 enum bio_post_read_step {
 #ifdef CONFIG_FS_ENCRYPTION
-	STEP_DECRYPT	= 1 << 0,
+	STEP_DECRYPT	= BIT(0),
 #else
 	STEP_DECRYPT	= 0,	/* compile out the decryption-related code */
 #endif
 #ifdef CONFIG_F2FS_FS_COMPRESSION
-	STEP_DECOMPRESS	= 1 << 1,
+	STEP_DECOMPRESS	= BIT(1),
 #else
 	STEP_DECOMPRESS	= 0,	/* compile out the decompression-related code */
 #endif
 #ifdef CONFIG_FS_VERITY
-	STEP_VERITY	= 1 << 2,
+	STEP_VERITY	= BIT(2),
 #else
 	STEP_VERITY	= 0,	/* compile out the verity-related code */
 #endif
@@ -116,43 +115,56 @@ struct bio_post_read_ctx {
 	struct f2fs_sb_info *sbi;
 	struct work_struct work;
 	unsigned int enabled_steps;
+	/*
+	 * decompression_attempted keeps track of whether
+	 * f2fs_end_read_compressed_page() has been called on the pages in the
+	 * bio that belong to a compressed cluster yet.
+	 */
+	bool decompression_attempted;
 	block_t fs_blkaddr;
 };
 
+/*
+ * Update and unlock a bio's pages, and free the bio.
+ *
+ * This marks pages up-to-date only if there was no error in the bio (I/O error,
+ * decryption error, or verity error), as indicated by bio->bi_status.
+ *
+ * "Compressed pages" (pagecache pages backed by a compressed cluster on-disk)
+ * aren't marked up-to-date here, as decompression is done on a per-compression-
+ * cluster basis rather than a per-bio basis.  Instead, we only must do two
+ * things for each compressed page here: call f2fs_end_read_compressed_page()
+ * with failed=true if an error occurred before it would have normally gotten
+ * called (i.e., I/O error or decryption error, but *not* verity error), and
+ * release the bio's reference to the decompress_io_ctx of the page's cluster.
+ */
 static void f2fs_finish_read_bio(struct bio *bio, bool in_task)
 {
 	struct bio_vec *bv;
 	struct bvec_iter_all iter_all;
+	struct bio_post_read_ctx *ctx = bio->bi_private;
 
-	/*
-	 * Update and unlock the bio's pagecache pages, and put the
-	 * decompression context for any compressed pages.
-	 */
 	bio_for_each_segment_all(bv, bio, iter_all) {
 		struct page *page = bv->bv_page;
 
 		if (f2fs_is_compressed_page(page)) {
-			if (bio->bi_status)
+			if (ctx && !ctx->decompression_attempted)
 				f2fs_end_read_compressed_page(page, true, 0,
 							in_task);
 			f2fs_put_page_dic(page, in_task);
 			continue;
 		}
 
-		/* PG_error was set if verity failed. */
-		if (bio->bi_status || PageError(page)) {
+		if (bio->bi_status)
 			ClearPageUptodate(page);
-			/* will re-read again later */
-			ClearPageError(page);
-		} else {
+		else
 			SetPageUptodate(page);
-		}
 		dec_page_count(F2FS_P_SB(page), __read_io_type(page));
 		unlock_page(page);
 	}
 
-	if (bio->bi_private)
-		mempool_free(bio->bi_private, bio_post_read_ctx_pool);
+	if (ctx)
+		mempool_free(ctx, bio_post_read_ctx_pool);
 	bio_put(bio);
 }
 
@@ -185,8 +197,10 @@ static void f2fs_verify_bio(struct work_struct *work)
 			struct page *page = bv->bv_page;
 
 			if (!f2fs_is_compressed_page(page) &&
-			    !fsverity_verify_page(page))
-				SetPageError(page);
+			    !fsverity_verify_page(page)) {
+				bio->bi_status = BLK_STS_IOERR;
+				break;
+			}
 		}
 	} else {
 		fsverity_verify_bio(bio);
@@ -245,6 +259,8 @@ static void f2fs_handle_step_decompress(struct bio_post_read_ctx *ctx,
 		blkaddr++;
 	}
 
+	ctx->decompression_attempted = true;
+
 	/*
 	 * Optimization: if all the bio's pages are compressed, then scheduling
 	 * the per-bio verity work is unnecessary, as verity will be fully
@@ -277,13 +293,11 @@ static void f2fs_read_end_io(struct bio *bio)
 	struct bio_post_read_ctx *ctx;
 	bool intask = in_task();
 
-	iostat_update_and_unbind_ctx(bio, 0);
+	iostat_update_and_unbind_ctx(bio);
 	ctx = bio->bi_private;
 
-	if (time_to_inject(sbi, FAULT_READ_IO)) {
-		f2fs_show_injection_info(sbi, FAULT_READ_IO);
+	if (time_to_inject(sbi, FAULT_READ_IO))
 		bio->bi_status = BLK_STS_IOERR;
-	}
 
 	if (bio->bi_status) {
 		f2fs_finish_read_bio(bio, intask);
@@ -317,13 +331,11 @@ static void f2fs_write_end_io(struct bio *bio)
 	struct bio_vec *bvec;
 	struct bvec_iter_all iter_all;
 
-	iostat_update_and_unbind_ctx(bio, 1);
+	iostat_update_and_unbind_ctx(bio);
 	sbi = bio->bi_private;
 
-	if (time_to_inject(sbi, FAULT_WRITE_IO)) {
-		f2fs_show_injection_info(sbi, FAULT_WRITE_IO);
+	if (time_to_inject(sbi, FAULT_WRITE_IO))
 		bio->bi_status = BLK_STS_IOERR;
-	}
 
 	bio_for_each_segment_all(bvec, bio, iter_all) {
 		struct page *page = bvec->bv_page;
@@ -409,7 +421,7 @@ int f2fs_target_device_index(struct f2fs_sb_info *sbi, block_t blkaddr)
 
 static blk_opf_t f2fs_io_flags(struct f2fs_io_info *fio)
 {
-	unsigned int temp_mask = (1 << NR_TEMP_TYPE) - 1;
+	unsigned int temp_mask = GENMASK(NR_TEMP_TYPE - 1, 0);
 	unsigned int fua_flag, meta_flag, io_flag;
 	blk_opf_t op_flags = 0;
 
@@ -431,9 +443,9 @@ static blk_opf_t f2fs_io_flags(struct f2fs_io_info *fio)
 	 *    5 |    4 |   3 |    2 |    1 |   0 |
 	 * Cold | Warm | Hot | Cold | Warm | Hot |
 	 */
-	if ((1 << fio->temp) & meta_flag)
+	if (BIT(fio->temp) & meta_flag)
 		op_flags |= REQ_META;
-	if ((1 << fio->temp) & fua_flag)
+	if (BIT(fio->temp) & fua_flag)
 		op_flags |= REQ_FUA;
 	return op_flags;
 }
@@ -476,6 +488,8 @@ static void f2fs_set_bio_crypt_ctx(struct bio *bio, const struct inode *inode,
 	 */
 	if (!fio || !fio->encrypted_page)
 		fscrypt_set_bio_crypt_ctx(bio, inode, first_idx, gfp_mask);
+	else if (fscrypt_inode_should_skip_dm_default_key(inode))
+		bio_set_skip_dm_default_key(bio);
 }
 
 static bool f2fs_crypt_mergeable_bio(struct bio *bio, const struct inode *inode,
@@ -487,68 +501,71 @@ static bool f2fs_crypt_mergeable_bio(struct bio *bio, const struct inode *inode,
 	 * read/write raw data without encryption.
 	 */
 	if (fio && fio->encrypted_page)
-		return !bio_has_crypt_ctx(bio);
+		return !bio_has_crypt_ctx(bio) &&
+			(bio_should_skip_dm_default_key(bio) ==
+			 fscrypt_inode_should_skip_dm_default_key(inode));
 
 	return fscrypt_mergeable_bio(bio, inode, next_idx);
 }
 
-static inline void __submit_bio(struct f2fs_sb_info *sbi,
-				struct bio *bio, enum page_type type)
+void f2fs_submit_read_bio(struct f2fs_sb_info *sbi, struct bio *bio,
+				 enum page_type type)
 {
-	if (!is_read_io(bio_op(bio))) {
-		unsigned int start;
-
-		if (type != DATA && type != NODE)
-			goto submit_io;
-
-		if (f2fs_lfs_mode(sbi) && current->plug)
-			blk_finish_plug(current->plug);
-
-		if (!F2FS_IO_ALIGNED(sbi))
-			goto submit_io;
-
-		start = bio->bi_iter.bi_size >> F2FS_BLKSIZE_BITS;
-		start %= F2FS_IO_SIZE(sbi);
-
-		if (start == 0)
-			goto submit_io;
-
-		/* fill dummy pages */
-		for (; start < F2FS_IO_SIZE(sbi); start++) {
-			struct page *page =
-				mempool_alloc(sbi->write_io_dummy,
-					      GFP_NOIO | __GFP_NOFAIL);
-			f2fs_bug_on(sbi, !page);
-
-			lock_page(page);
-
-			zero_user_segment(page, 0, PAGE_SIZE);
-			set_page_private_dummy(page);
-
-			if (bio_add_page(bio, page, PAGE_SIZE, 0) < PAGE_SIZE)
-				f2fs_bug_on(sbi, 1);
-		}
-		/*
-		 * In the NODE case, we lose next block address chain. So, we
-		 * need to do checkpoint in f2fs_sync_file.
-		 */
-		if (type == NODE)
-			set_sbi_flag(sbi, SBI_NEED_CP);
-	}
-submit_io:
-	if (is_read_io(bio_op(bio)))
-		trace_f2fs_submit_read_bio(sbi->sb, type, bio);
-	else
-		trace_f2fs_submit_write_bio(sbi->sb, type, bio);
+	WARN_ON_ONCE(!is_read_io(bio_op(bio)));
+	trace_f2fs_submit_read_bio(sbi->sb, type, bio);
 
 	iostat_update_submit_ctx(bio, type);
 	submit_bio(bio);
 }
 
-void f2fs_submit_bio(struct f2fs_sb_info *sbi,
-				struct bio *bio, enum page_type type)
+static void f2fs_align_write_bio(struct f2fs_sb_info *sbi, struct bio *bio)
 {
-	__submit_bio(sbi, bio, type);
+	unsigned int start =
+		(bio->bi_iter.bi_size >> F2FS_BLKSIZE_BITS) % F2FS_IO_SIZE(sbi);
+
+	if (start == 0)
+		return;
+
+	/* fill dummy pages */
+	for (; start < F2FS_IO_SIZE(sbi); start++) {
+		struct page *page =
+			mempool_alloc(sbi->write_io_dummy,
+				      GFP_NOIO | __GFP_NOFAIL);
+		f2fs_bug_on(sbi, !page);
+
+		lock_page(page);
+
+		zero_user_segment(page, 0, PAGE_SIZE);
+		set_page_private_dummy(page);
+
+		if (bio_add_page(bio, page, PAGE_SIZE, 0) < PAGE_SIZE)
+			f2fs_bug_on(sbi, 1);
+	}
+}
+
+static void f2fs_submit_write_bio(struct f2fs_sb_info *sbi, struct bio *bio,
+				  enum page_type type)
+{
+	WARN_ON_ONCE(is_read_io(bio_op(bio)));
+
+	if (type == DATA || type == NODE) {
+		if (f2fs_lfs_mode(sbi) && current->plug)
+			blk_finish_plug(current->plug);
+
+		if (F2FS_IO_ALIGNED(sbi)) {
+			f2fs_align_write_bio(sbi, bio);
+			/*
+			 * In the NODE case, we lose next block address chain.
+			 * So, we need to do checkpoint in f2fs_sync_file.
+			 */
+			if (type == NODE)
+				set_sbi_flag(sbi, SBI_NEED_CP);
+		}
+	}
+
+	trace_f2fs_submit_write_bio(sbi->sb, type, bio);
+	iostat_update_submit_ctx(bio, type);
+	submit_bio(bio);
 }
 
 static void __submit_merged_bio(struct f2fs_bio_info *io)
@@ -558,12 +575,13 @@ static void __submit_merged_bio(struct f2fs_bio_info *io)
 	if (!io->bio)
 		return;
 
-	if (is_read_io(fio->op))
+	if (is_read_io(fio->op)) {
 		trace_f2fs_prepare_read_bio(io->sbi->sb, fio->type, io->bio);
-	else
+		f2fs_submit_read_bio(io->sbi, io->bio, fio->type);
+	} else {
 		trace_f2fs_prepare_write_bio(io->sbi->sb, fio->type, io->bio);
-
-	__submit_bio(io->sbi, io->bio, fio->type);
+		f2fs_submit_write_bio(io->sbi, io->bio, fio->type);
+	}
 	io->bio = NULL;
 }
 
@@ -735,7 +753,10 @@ int f2fs_submit_page_bio(struct f2fs_io_info *fio)
 	inc_page_count(fio->sbi, is_read_io(fio->op) ?
 			__read_io_type(page) : WB_DATA_TYPE(fio->page));
 
-	__submit_bio(fio->sbi, bio, fio->type);
+	if (is_read_io(bio_op(bio)))
+		f2fs_submit_read_bio(fio->sbi, bio, fio->type);
+	else
+		f2fs_submit_write_bio(fio->sbi, bio, fio->type);
 	return 0;
 }
 
@@ -837,7 +858,7 @@ static int add_ipu_page(struct f2fs_io_info *fio, struct bio **bio,
 
 			/* page can't be merged into bio; submit the bio */
 			del_bio_entry(be);
-			__submit_bio(sbi, *bio, DATA);
+			f2fs_submit_write_bio(sbi, *bio, DATA);
 			break;
 		}
 		f2fs_up_write(&io->bio_list_lock);
@@ -902,7 +923,7 @@ void f2fs_submit_merged_ipu_write(struct f2fs_sb_info *sbi,
 	}
 
 	if (found)
-		__submit_bio(sbi, target, DATA);
+		f2fs_submit_write_bio(sbi, target, DATA);
 	if (bio && *bio) {
 		bio_put(*bio);
 		*bio = NULL;
@@ -982,7 +1003,7 @@ void f2fs_submit_page_write(struct f2fs_io_info *fio)
 		bio_page = fio->page;
 
 	/* set submitted = true as a return value */
-	fio->submitted = true;
+	fio->submitted = 1;
 
 	inc_page_count(sbi, WB_DATA_TYPE(bio_page));
 
@@ -998,7 +1019,7 @@ void f2fs_submit_page_write(struct f2fs_io_info *fio)
 				(fio->type == DATA || fio->type == NODE) &&
 				fio->new_blkaddr & F2FS_IO_SIZE_MASK(sbi)) {
 			dec_page_count(sbi, WB_DATA_TYPE(bio_page));
-			fio->retry = true;
+			fio->retry = 1;
 			goto skip;
 		}
 		io->bio = __bio_alloc(fio, BIO_MAX_VECS);
@@ -1068,6 +1089,7 @@ static struct bio *f2fs_grab_read_bio(struct inode *inode, block_t blkaddr,
 		ctx->sbi = sbi;
 		ctx->enabled_steps = post_read_steps;
 		ctx->fs_blkaddr = blkaddr;
+		ctx->decompression_attempted = false;
 		bio->bi_private = ctx;
 	}
 	iostat_alloc_and_bind_ctx(sbi, bio, ctx);
@@ -1095,10 +1117,9 @@ static int f2fs_submit_page_read(struct inode *inode, struct page *page,
 		bio_put(bio);
 		return -EFAULT;
 	}
-	ClearPageError(page);
 	inc_page_count(sbi, F2FS_RD_DATA);
 	f2fs_update_iostat(sbi, NULL, FS_DATA_READ_IO, F2FS_BLKSIZE);
-	__submit_bio(sbi, bio, DATA);
+	f2fs_submit_read_bio(sbi, bio, DATA);
 	return 0;
 }
 
@@ -1198,34 +1219,21 @@ int f2fs_reserve_block(struct dnode_of_data *dn, pgoff_t index)
 	return err;
 }
 
-int f2fs_get_block(struct dnode_of_data *dn, pgoff_t index)
-{
-	struct extent_info ei = {0, };
-	struct inode *inode = dn->inode;
-
-	if (f2fs_lookup_read_extent_cache(inode, index, &ei)) {
-		dn->data_blkaddr = ei.blk + index - ei.fofs;
-		return 0;
-	}
-
-	return f2fs_reserve_block(dn, index);
-}
-
 struct page *f2fs_get_read_data_page(struct inode *inode, pgoff_t index,
-				     blk_opf_t op_flags, bool for_write)
+				     blk_opf_t op_flags, bool for_write,
+				     pgoff_t *next_pgofs)
 {
 	struct address_space *mapping = inode->i_mapping;
 	struct dnode_of_data dn;
 	struct page *page;
-	struct extent_info ei = {0, };
 	int err;
 
 	page = f2fs_grab_cache_page(mapping, index, for_write);
 	if (!page)
 		return ERR_PTR(-ENOMEM);
 
-	if (f2fs_lookup_read_extent_cache(inode, index, &ei)) {
-		dn.data_blkaddr = ei.blk + index - ei.fofs;
+	if (f2fs_lookup_read_extent_cache_block(inode, index,
+						&dn.data_blkaddr)) {
 		if (!f2fs_is_valid_blkaddr(F2FS_I_SB(inode), dn.data_blkaddr,
 						DATA_GENERIC_ENHANCE_READ)) {
 			err = -EFSCORRUPTED;
@@ -1238,12 +1246,17 @@ struct page *f2fs_get_read_data_page(struct inode *inode, pgoff_t index,
 
 	set_new_dnode(&dn, inode, NULL, NULL, 0);
 	err = f2fs_get_dnode_of_data(&dn, index, LOOKUP_NODE);
-	if (err)
+	if (err) {
+		if (err == -ENOENT && next_pgofs)
+			*next_pgofs = f2fs_get_next_page_offset(&dn, index);
 		goto put_err;
+	}
 	f2fs_put_dnode(&dn);
 
 	if (unlikely(dn.data_blkaddr == NULL_ADDR)) {
 		err = -ENOENT;
+		if (next_pgofs)
+			*next_pgofs = index + 1;
 		goto put_err;
 	}
 	if (dn.data_blkaddr != NEW_ADDR &&
@@ -1287,7 +1300,8 @@ struct page *f2fs_get_read_data_page(struct inode *inode, pgoff_t index,
 	return ERR_PTR(err);
 }
 
-struct page *f2fs_find_data_page(struct inode *inode, pgoff_t index)
+struct page *f2fs_find_data_page(struct inode *inode, pgoff_t index,
+					pgoff_t *next_pgofs)
 {
 	struct address_space *mapping = inode->i_mapping;
 	struct page *page;
@@ -1297,7 +1311,7 @@ struct page *f2fs_find_data_page(struct inode *inode, pgoff_t index)
 		return page;
 	f2fs_put_page(page, 0);
 
-	page = f2fs_get_read_data_page(inode, index, 0, false);
+	page = f2fs_get_read_data_page(inode, index, 0, false, next_pgofs);
 	if (IS_ERR(page))
 		return page;
 
@@ -1323,7 +1337,7 @@ struct page *f2fs_get_lock_data_page(struct inode *inode, pgoff_t index,
 	struct address_space *mapping = inode->i_mapping;
 	struct page *page;
 repeat:
-	page = f2fs_get_read_data_page(inode, index, 0, for_write);
+	page = f2fs_get_read_data_page(inode, index, 0, for_write, NULL);
 	if (IS_ERR(page))
 		return page;
 
@@ -1416,13 +1430,12 @@ static int __allocate_data_block(struct dnode_of_data *dn, int seg_type)
 		return err;
 
 	dn->data_blkaddr = f2fs_data_blkaddr(dn);
-	if (dn->data_blkaddr != NULL_ADDR)
-		goto alloc;
+	if (dn->data_blkaddr == NULL_ADDR) {
+		err = inc_valid_block_count(sbi, dn->inode, &count);
+		if (unlikely(err))
+			return err;
+	}
 
-	if (unlikely((err = inc_valid_block_count(sbi, dn->inode, &count))))
-		return err;
-
-alloc:
 	set_summary(&sum, dn->nid, dn->ofs_in_node, ni.version);
 	old_blkaddr = dn->data_blkaddr;
 	f2fs_allocate_data_block(sbi, NULL, old_blkaddr, &dn->data_blkaddr,
@@ -1436,19 +1449,91 @@ static int __allocate_data_block(struct dnode_of_data *dn, int seg_type)
 	return 0;
 }
 
-void f2fs_do_map_lock(struct f2fs_sb_info *sbi, int flag, bool lock)
+static void f2fs_map_lock(struct f2fs_sb_info *sbi, int flag)
 {
-	if (flag == F2FS_GET_BLOCK_PRE_AIO) {
-		if (lock)
-			f2fs_down_read(&sbi->node_change);
-		else
-			f2fs_up_read(&sbi->node_change);
+	if (flag == F2FS_GET_BLOCK_PRE_AIO)
+		f2fs_down_read(&sbi->node_change);
+	else
+		f2fs_lock_op(sbi);
+}
+
+static void f2fs_map_unlock(struct f2fs_sb_info *sbi, int flag)
+{
+	if (flag == F2FS_GET_BLOCK_PRE_AIO)
+		f2fs_up_read(&sbi->node_change);
+	else
+		f2fs_unlock_op(sbi);
+}
+
+int f2fs_get_block_locked(struct dnode_of_data *dn, pgoff_t index)
+{
+	struct f2fs_sb_info *sbi = F2FS_I_SB(dn->inode);
+	int err = 0;
+
+	f2fs_map_lock(sbi, F2FS_GET_BLOCK_PRE_AIO);
+	if (!f2fs_lookup_read_extent_cache_block(dn->inode, index,
+						&dn->data_blkaddr))
+		err = f2fs_reserve_block(dn, index);
+	f2fs_map_unlock(sbi, F2FS_GET_BLOCK_PRE_AIO);
+
+	return err;
+}
+
+static int f2fs_map_no_dnode(struct inode *inode,
+		struct f2fs_map_blocks *map, struct dnode_of_data *dn,
+		pgoff_t pgoff)
+{
+	struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
+
+	/*
+	 * There is one exceptional case that read_node_page() may return
+	 * -ENOENT due to filesystem has been shutdown or cp_error, return
+	 * -EIO in that case.
+	 */
+	if (map->m_may_create &&
+	    (is_sbi_flag_set(sbi, SBI_IS_SHUTDOWN) || f2fs_cp_error(sbi)))
+		return -EIO;
+
+	if (map->m_next_pgofs)
+		*map->m_next_pgofs = f2fs_get_next_page_offset(dn, pgoff);
+	if (map->m_next_extent)
+		*map->m_next_extent = f2fs_get_next_page_offset(dn, pgoff);
+	return 0;
+}
+
+static bool f2fs_map_blocks_cached(struct inode *inode,
+		struct f2fs_map_blocks *map, int flag)
+{
+	struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
+	unsigned int maxblocks = map->m_len;
+	pgoff_t pgoff = (pgoff_t)map->m_lblk;
+	struct extent_info ei = {};
+
+	if (!f2fs_lookup_read_extent_cache(inode, pgoff, &ei))
+		return false;
+
+	map->m_pblk = ei.blk + pgoff - ei.fofs;
+	map->m_len = min((pgoff_t)maxblocks, ei.fofs + ei.len - pgoff);
+	map->m_flags = F2FS_MAP_MAPPED;
+	if (map->m_next_extent)
+		*map->m_next_extent = pgoff + map->m_len;
+
+	/* for hardware encryption, but to avoid potential issue in future */
+	if (flag == F2FS_GET_BLOCK_DIO)
+		f2fs_wait_on_block_writeback_range(inode,
+					map->m_pblk, map->m_len);
+
+	if (f2fs_allow_multi_device_dio(sbi, flag)) {
+		int bidx = f2fs_target_device_index(sbi, map->m_pblk);
+		struct f2fs_dev_info *dev = &sbi->devs[bidx];
+
+		map->m_bdev = dev->bdev;
+		map->m_pblk -= dev->start_blk;
+		map->m_len = min(map->m_len, dev->end_blk + 1 - map->m_pblk);
 	} else {
-		if (lock)
-			f2fs_lock_op(sbi);
-		else
-			f2fs_unlock_op(sbi);
+		map->m_bdev = inode->i_sb->s_bdev;
 	}
+	return true;
 }
 
 /*
@@ -1456,8 +1541,7 @@ void f2fs_do_map_lock(struct f2fs_sb_info *sbi, int flag, bool lock)
  * maps continuous logical blocks to physical blocks, and return such
  * info via f2fs_map_blocks structure.
  */
-int f2fs_map_blocks(struct inode *inode, struct f2fs_map_blocks *map,
-						int create, int flag)
+int f2fs_map_blocks(struct inode *inode, struct f2fs_map_blocks *map, int flag)
 {
 	unsigned int maxblocks = map->m_len;
 	struct dnode_of_data dn;
@@ -1467,14 +1551,17 @@ int f2fs_map_blocks(struct inode *inode, struct f2fs_map_blocks *map,
 	int err = 0, ofs = 1;
 	unsigned int ofs_in_node, last_ofs_in_node;
 	blkcnt_t prealloc;
-	struct extent_info ei = {0, };
 	block_t blkaddr;
 	unsigned int start_pgofs;
 	int bidx = 0;
+	bool is_hole;
 
 	if (!maxblocks)
 		return 0;
 
+	if (!map->m_may_create && f2fs_map_blocks_cached(inode, map, flag))
+		goto out;
+
 	map->m_bdev = inode->i_sb->s_bdev;
 	map->m_multidev_dio =
 		f2fs_allow_multi_device_dio(F2FS_I_SB(inode), flag);
@@ -1486,42 +1573,9 @@ int f2fs_map_blocks(struct inode *inode, struct f2fs_map_blocks *map,
 	pgofs =	(pgoff_t)map->m_lblk;
 	end = pgofs + maxblocks;
 
-	if (!create && f2fs_lookup_read_extent_cache(inode, pgofs, &ei)) {
-		if (f2fs_lfs_mode(sbi) && flag == F2FS_GET_BLOCK_DIO &&
-							map->m_may_create)
-			goto next_dnode;
-
-		map->m_pblk = ei.blk + pgofs - ei.fofs;
-		map->m_len = min((pgoff_t)maxblocks, ei.fofs + ei.len - pgofs);
-		map->m_flags = F2FS_MAP_MAPPED;
-		if (map->m_next_extent)
-			*map->m_next_extent = pgofs + map->m_len;
-
-		/* for hardware encryption, but to avoid potential issue in future */
-		if (flag == F2FS_GET_BLOCK_DIO)
-			f2fs_wait_on_block_writeback_range(inode,
-						map->m_pblk, map->m_len);
-
-		if (map->m_multidev_dio) {
-			block_t blk_addr = map->m_pblk;
-
-			bidx = f2fs_target_device_index(sbi, map->m_pblk);
-
-			map->m_bdev = FDEV(bidx).bdev;
-			map->m_pblk -= FDEV(bidx).start_blk;
-			map->m_len = min(map->m_len,
-				FDEV(bidx).end_blk + 1 - map->m_pblk);
-
-			if (map->m_may_create)
-				f2fs_update_device_state(sbi, inode->i_ino,
-							blk_addr, map->m_len);
-		}
-		goto out;
-	}
-
 next_dnode:
 	if (map->m_may_create)
-		f2fs_do_map_lock(sbi, flag, true);
+		f2fs_map_lock(sbi, flag);
 
 	/* When reading holes, we need its node page */
 	set_new_dnode(&dn, inode, NULL, NULL, 0);
@@ -1529,29 +1583,8 @@ int f2fs_map_blocks(struct inode *inode, struct f2fs_map_blocks *map,
 	if (err) {
 		if (flag == F2FS_GET_BLOCK_BMAP)
 			map->m_pblk = 0;
-
-		if (err == -ENOENT) {
-			/*
-			 * There is one exceptional case that read_node_page()
-			 * may return -ENOENT due to filesystem has been
-			 * shutdown or cp_error, so force to convert error
-			 * number to EIO for such case.
-			 */
-			if (map->m_may_create &&
-				(is_sbi_flag_set(sbi, SBI_IS_SHUTDOWN) ||
-				f2fs_cp_error(sbi))) {
-				err = -EIO;
-				goto unlock_out;
-			}
-
-			err = 0;
-			if (map->m_next_pgofs)
-				*map->m_next_pgofs =
-					f2fs_get_next_page_offset(&dn, pgofs);
-			if (map->m_next_extent)
-				*map->m_next_extent =
-					f2fs_get_next_page_offset(&dn, pgofs);
-		}
+		if (err == -ENOENT)
+			err = f2fs_map_no_dnode(inode, map, &dn, pgofs);
 		goto unlock_out;
 	}
 
@@ -1562,78 +1595,76 @@ int f2fs_map_blocks(struct inode *inode, struct f2fs_map_blocks *map,
 
 next_block:
 	blkaddr = f2fs_data_blkaddr(&dn);
-
-	if (__is_valid_data_blkaddr(blkaddr) &&
-		!f2fs_is_valid_blkaddr(sbi, blkaddr, DATA_GENERIC_ENHANCE)) {
+	is_hole = !__is_valid_data_blkaddr(blkaddr);
+	if (!is_hole &&
+	    !f2fs_is_valid_blkaddr(sbi, blkaddr, DATA_GENERIC_ENHANCE)) {
 		err = -EFSCORRUPTED;
 		f2fs_handle_error(sbi, ERROR_INVALID_BLKADDR);
 		goto sync_out;
 	}
 
-	if (__is_valid_data_blkaddr(blkaddr)) {
-		/* use out-place-update for driect IO under LFS mode */
-		if (f2fs_lfs_mode(sbi) && flag == F2FS_GET_BLOCK_DIO &&
-							map->m_may_create) {
+	/* use out-place-update for direct IO under LFS mode */
+	if (map->m_may_create &&
+	    (is_hole || (f2fs_lfs_mode(sbi) && flag == F2FS_GET_BLOCK_DIO))) {
+		if (unlikely(f2fs_cp_error(sbi))) {
+			err = -EIO;
+			goto sync_out;
+		}
+
+		switch (flag) {
+		case F2FS_GET_BLOCK_PRE_AIO:
+			if (blkaddr == NULL_ADDR) {
+				prealloc++;
+				last_ofs_in_node = dn.ofs_in_node;
+			}
+			break;
+		case F2FS_GET_BLOCK_PRE_DIO:
+		case F2FS_GET_BLOCK_DIO:
 			err = __allocate_data_block(&dn, map->m_seg_type);
 			if (err)
 				goto sync_out;
-			blkaddr = dn.data_blkaddr;
+			if (flag == F2FS_GET_BLOCK_PRE_DIO)
+				file_need_truncate(inode);
 			set_inode_flag(inode, FI_APPEND_WRITE);
+			break;
+		default:
+			WARN_ON_ONCE(1);
+			err = -EIO;
+			goto sync_out;
 		}
-	} else {
-		if (create) {
-			if (unlikely(f2fs_cp_error(sbi))) {
-				err = -EIO;
-				goto sync_out;
-			}
-			if (flag == F2FS_GET_BLOCK_PRE_AIO) {
-				if (blkaddr == NULL_ADDR) {
-					prealloc++;
-					last_ofs_in_node = dn.ofs_in_node;
-				}
-			} else {
-				WARN_ON(flag != F2FS_GET_BLOCK_PRE_DIO &&
-					flag != F2FS_GET_BLOCK_DIO);
-				err = __allocate_data_block(&dn,
-							map->m_seg_type);
-				if (!err) {
-					if (flag == F2FS_GET_BLOCK_PRE_DIO)
-						file_need_truncate(inode);
-					set_inode_flag(inode, FI_APPEND_WRITE);
-				}
-			}
-			if (err)
-				goto sync_out;
+
+		blkaddr = dn.data_blkaddr;
+		if (is_hole)
 			map->m_flags |= F2FS_MAP_NEW;
-			blkaddr = dn.data_blkaddr;
-		} else {
-			if (f2fs_compressed_file(inode) &&
-					f2fs_sanity_check_cluster(&dn) &&
-					(flag != F2FS_GET_BLOCK_FIEMAP ||
-					IS_ENABLED(CONFIG_F2FS_CHECK_FS))) {
-				err = -EFSCORRUPTED;
-				f2fs_handle_error(sbi,
-						ERROR_CORRUPTED_CLUSTER);
-				goto sync_out;
-			}
-			if (flag == F2FS_GET_BLOCK_BMAP) {
-				map->m_pblk = 0;
-				goto sync_out;
-			}
-			if (flag == F2FS_GET_BLOCK_PRECACHE)
-				goto sync_out;
-			if (flag == F2FS_GET_BLOCK_FIEMAP &&
-						blkaddr == NULL_ADDR) {
+	} else if (is_hole) {
+		if (f2fs_compressed_file(inode) &&
+		    f2fs_sanity_check_cluster(&dn) &&
+		    (flag != F2FS_GET_BLOCK_FIEMAP ||
+		     IS_ENABLED(CONFIG_F2FS_CHECK_FS))) {
+			err = -EFSCORRUPTED;
+			f2fs_handle_error(sbi,
+					ERROR_CORRUPTED_CLUSTER);
+			goto sync_out;
+		}
+
+		switch (flag) {
+		case F2FS_GET_BLOCK_PRECACHE:
+			goto sync_out;
+		case F2FS_GET_BLOCK_BMAP:
+			map->m_pblk = 0;
+			goto sync_out;
+		case F2FS_GET_BLOCK_FIEMAP:
+			if (blkaddr == NULL_ADDR) {
 				if (map->m_next_pgofs)
 					*map->m_next_pgofs = pgofs + 1;
 				goto sync_out;
 			}
-			if (flag != F2FS_GET_BLOCK_FIEMAP) {
-				/* for defragment case */
-				if (map->m_next_pgofs)
-					*map->m_next_pgofs = pgofs + 1;
-				goto sync_out;
-			}
+			break;
+		default:
+			/* for defragment case */
+			if (map->m_next_pgofs)
+				*map->m_next_pgofs = pgofs + 1;
+			goto sync_out;
 		}
 	}
 
@@ -1644,9 +1675,9 @@ int f2fs_map_blocks(struct inode *inode, struct f2fs_map_blocks *map,
 		bidx = f2fs_target_device_index(sbi, blkaddr);
 
 	if (map->m_len == 0) {
-		/* preallocated unwritten block should be mapped for fiemap. */
+		/* reserved delalloc block should be mapped for fiemap. */
 		if (blkaddr == NEW_ADDR)
-			map->m_flags |= F2FS_MAP_UNWRITTEN;
+			map->m_flags |= F2FS_MAP_DELALLOC;
 		map->m_flags |= F2FS_MAP_MAPPED;
 
 		map->m_pblk = blkaddr;
@@ -1705,7 +1736,7 @@ int f2fs_map_blocks(struct inode *inode, struct f2fs_map_blocks *map,
 	f2fs_put_dnode(&dn);
 
 	if (map->m_may_create) {
-		f2fs_do_map_lock(sbi, flag, false);
+		f2fs_map_unlock(sbi, flag);
 		f2fs_balance_fs(sbi, dn.node_changed);
 	}
 	goto next_dnode;
@@ -1751,11 +1782,11 @@ int f2fs_map_blocks(struct inode *inode, struct f2fs_map_blocks *map,
 	f2fs_put_dnode(&dn);
 unlock_out:
 	if (map->m_may_create) {
-		f2fs_do_map_lock(sbi, flag, false);
+		f2fs_map_unlock(sbi, flag);
 		f2fs_balance_fs(sbi, dn.node_changed);
 	}
 out:
-	trace_f2fs_map_blocks(inode, map, create, flag, err);
+	trace_f2fs_map_blocks(inode, map, flag, err);
 	return err;
 }
 
@@ -1777,7 +1808,7 @@ bool f2fs_overwrite_io(struct inode *inode, loff_t pos, size_t len)
 
 	while (map.m_lblk < last_lblk) {
 		map.m_len = last_lblk - map.m_lblk;
-		err = f2fs_map_blocks(inode, &map, 0, F2FS_GET_BLOCK_DEFAULT);
+		err = f2fs_map_blocks(inode, &map, F2FS_GET_BLOCK_DEFAULT);
 		if (err || map.m_len == 0)
 			return false;
 		map.m_lblk += map.m_len;
@@ -1951,7 +1982,7 @@ int f2fs_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
 		map.m_len = cluster_size - count_in_cluster;
 	}
 
-	ret = f2fs_map_blocks(inode, &map, 0, F2FS_GET_BLOCK_FIEMAP);
+	ret = f2fs_map_blocks(inode, &map, F2FS_GET_BLOCK_FIEMAP);
 	if (ret)
 		goto out;
 
@@ -1968,7 +1999,7 @@ int f2fs_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
 
 	compr_appended = false;
 	/* In a case of compressed cluster, append this to the last extent */
-	if (compr_cluster && ((map.m_flags & F2FS_MAP_UNWRITTEN) ||
+	if (compr_cluster && ((map.m_flags & F2FS_MAP_DELALLOC) ||
 			!(map.m_flags & F2FS_MAP_FLAGS))) {
 		compr_appended = true;
 		goto skip_fill;
@@ -2014,7 +2045,7 @@ int f2fs_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
 				compr_cluster = false;
 				size += blks_to_bytes(inode, 1);
 			}
-		} else if (map.m_flags & F2FS_MAP_UNWRITTEN) {
+		} else if (map.m_flags & F2FS_MAP_DELALLOC) {
 			flags = FIEMAP_EXTENT_UNWRITTEN;
 		}
 
@@ -2037,8 +2068,7 @@ int f2fs_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
 
 static inline loff_t f2fs_readpage_limit(struct inode *inode)
 {
-	if (IS_ENABLED(CONFIG_FS_VERITY) &&
-	    (IS_VERITY(inode) || f2fs_verity_in_progress(inode)))
+	if (IS_ENABLED(CONFIG_FS_VERITY) && IS_VERITY(inode))
 		return inode->i_sb->s_maxbytes;
 
 	return i_size_read(inode);
@@ -2084,7 +2114,7 @@ static int f2fs_read_single_page(struct inode *inode, struct page *page,
 	map->m_lblk = block_in_file;
 	map->m_len = last_block - block_in_file;
 
-	ret = f2fs_map_blocks(inode, map, 0, F2FS_GET_BLOCK_DEFAULT);
+	ret = f2fs_map_blocks(inode, map, F2FS_GET_BLOCK_DEFAULT);
 	if (ret)
 		goto out;
 got_it:
@@ -2092,6 +2122,12 @@ static int f2fs_read_single_page(struct inode *inode, struct page *page,
 		block_nr = map->m_pblk + block_in_file - map->m_lblk;
 		SetPageMappedToDisk(page);
 
+		if (!PageUptodate(page) && (!PageSwapCache(page) &&
+					!cleancache_get_page(page))) {
+			SetPageUptodate(page);
+			goto confused;
+		}
+
 		if (!f2fs_is_valid_blkaddr(F2FS_I_SB(inode), block_nr,
 						DATA_GENERIC_ENHANCE_READ)) {
 			ret = -EFSCORRUPTED;
@@ -2121,7 +2157,7 @@ static int f2fs_read_single_page(struct inode *inode, struct page *page,
 				       *last_block_in_bio, block_nr) ||
 		    !f2fs_crypt_mergeable_bio(bio, inode, page->index, NULL))) {
 submit_and_realloc:
-		__submit_bio(F2FS_I_SB(inode), bio, DATA);
+		f2fs_submit_read_bio(F2FS_I_SB(inode), bio, DATA);
 		bio = NULL;
 	}
 	if (bio == NULL) {
@@ -2147,9 +2183,14 @@ static int f2fs_read_single_page(struct inode *inode, struct page *page,
 	inc_page_count(F2FS_I_SB(inode), F2FS_RD_DATA);
 	f2fs_update_iostat(F2FS_I_SB(inode), NULL, FS_DATA_READ_IO,
 							F2FS_BLKSIZE);
-	ClearPageError(page);
 	*last_block_in_bio = block_nr;
 	goto out;
+confused:
+	if (bio) {
+		f2fs_submit_read_bio(F2FS_I_SB(inode), bio, DATA);
+		bio = NULL;
+	}
+	unlock_page(page);
 out:
 	*bio_ret = bio;
 	return ret;
@@ -2168,7 +2209,7 @@ int f2fs_read_multi_pages(struct compress_ctx *cc, struct bio **bio_ret,
 	sector_t last_block_in_file;
 	const unsigned blocksize = blks_to_bytes(inode, 1);
 	struct decompress_io_ctx *dic = NULL;
-	struct extent_info ei = {0, };
+	struct extent_info ei = {};
 	bool from_dnode = true;
 	int i;
 	int ret = 0;
@@ -2213,6 +2254,10 @@ int f2fs_read_multi_pages(struct compress_ctx *cc, struct bio **bio_ret,
 	if (ret)
 		goto out;
 
+	if (unlikely(f2fs_cp_error(sbi))) {
+		ret = -EIO;
+		goto out_put_dnode;
+	}
 	f2fs_bug_on(sbi, dn.data_blkaddr != COMPRESS_ADDR);
 
 skip_reading_dnode:
@@ -2269,7 +2314,7 @@ int f2fs_read_multi_pages(struct compress_ctx *cc, struct bio **bio_ret,
 					*last_block_in_bio, blkaddr) ||
 		    !f2fs_crypt_mergeable_bio(bio, inode, page->index, NULL))) {
 submit_and_realloc:
-			__submit_bio(sbi, bio, DATA);
+			f2fs_submit_read_bio(sbi, bio, DATA);
 			bio = NULL;
 		}
 
@@ -2295,7 +2340,6 @@ int f2fs_read_multi_pages(struct compress_ctx *cc, struct bio **bio_ret,
 
 		inc_page_count(sbi, F2FS_RD_DATA);
 		f2fs_update_iostat(sbi, inode, FS_DATA_READ_IO, F2FS_BLKSIZE);
-		ClearPageError(page);
 		*last_block_in_bio = blkaddr;
 	}
 
@@ -2312,7 +2356,6 @@ int f2fs_read_multi_pages(struct compress_ctx *cc, struct bio **bio_ret,
 	for (i = 0; i < cc->cluster_size; i++) {
 		if (cc->rpages[i]) {
 			ClearPageUptodate(cc->rpages[i]);
-			ClearPageError(cc->rpages[i]);
 			unlock_page(cc->rpages[i]);
 		}
 	}
@@ -2365,7 +2408,7 @@ static int f2fs_mpage_readpages(struct inode *inode,
 
 #ifdef CONFIG_F2FS_FS_COMPRESSION
 		if (f2fs_compressed_file(inode)) {
-			/* there are remained comressed pages, submit them */
+			/* there are remained compressed pages, submit them */
 			if (!f2fs_cluster_can_merge_page(&cc, page->index)) {
 				ret = f2fs_read_multi_pages(&cc, &bio,
 							max_nr_pages,
@@ -2409,7 +2452,6 @@ static int f2fs_mpage_readpages(struct inode *inode,
 #ifdef CONFIG_F2FS_FS_COMPRESSION
 set_error_page:
 #endif
-			SetPageError(page);
 			zero_user_segment(page, 0, PAGE_SIZE);
 			unlock_page(page);
 		}
@@ -2433,7 +2475,7 @@ static int f2fs_mpage_readpages(struct inode *inode,
 #endif
 	}
 	if (bio)
-		__submit_bio(F2FS_I_SB(inode), bio, DATA);
+		f2fs_submit_read_bio(F2FS_I_SB(inode), bio, DATA);
 	return ret;
 }
 
@@ -2519,34 +2561,29 @@ static inline bool check_inplace_update_policy(struct inode *inode,
 				struct f2fs_io_info *fio)
 {
 	struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
-	unsigned int policy = SM_I(sbi)->ipu_policy;
 
-	if (policy & (0x1 << F2FS_IPU_HONOR_OPU_WRITE) &&
-			is_inode_flag_set(inode, FI_OPU_WRITE))
+	if (IS_F2FS_IPU_HONOR_OPU_WRITE(sbi) &&
+	    is_inode_flag_set(inode, FI_OPU_WRITE))
 		return false;
-	if (policy & (0x1 << F2FS_IPU_FORCE))
+	if (IS_F2FS_IPU_FORCE(sbi))
 		return true;
-	if (policy & (0x1 << F2FS_IPU_SSR) && f2fs_need_SSR(sbi))
+	if (IS_F2FS_IPU_SSR(sbi) && f2fs_need_SSR(sbi))
 		return true;
-	if (policy & (0x1 << F2FS_IPU_UTIL) &&
-			utilization(sbi) > SM_I(sbi)->min_ipu_util)
+	if (IS_F2FS_IPU_UTIL(sbi) && utilization(sbi) > SM_I(sbi)->min_ipu_util)
 		return true;
-	if (policy & (0x1 << F2FS_IPU_SSR_UTIL) && f2fs_need_SSR(sbi) &&
-			utilization(sbi) > SM_I(sbi)->min_ipu_util)
+	if (IS_F2FS_IPU_SSR_UTIL(sbi) && f2fs_need_SSR(sbi) &&
+	    utilization(sbi) > SM_I(sbi)->min_ipu_util)
 		return true;
 
 	/*
 	 * IPU for rewrite async pages
 	 */
-	if (policy & (0x1 << F2FS_IPU_ASYNC) &&
-			fio && fio->op == REQ_OP_WRITE &&
-			!(fio->op_flags & REQ_SYNC) &&
-			!IS_ENCRYPTED(inode))
+	if (IS_F2FS_IPU_ASYNC(sbi) && fio && fio->op == REQ_OP_WRITE &&
+	    !(fio->op_flags & REQ_SYNC) && !IS_ENCRYPTED(inode))
 		return true;
 
 	/* this is only set during fdatasync */
-	if (policy & (0x1 << F2FS_IPU_FSYNC) &&
-			is_inode_flag_set(inode, FI_NEED_IPU))
+	if (IS_F2FS_IPU_FSYNC(sbi) && is_inode_flag_set(inode, FI_NEED_IPU))
 		return true;
 
 	if (unlikely(fio && is_sbi_flag_set(sbi, SBI_CP_DISABLED) &&
@@ -2624,7 +2661,6 @@ int f2fs_do_write_data_page(struct f2fs_io_info *fio)
 	struct page *page = fio->page;
 	struct inode *inode = page->mapping->host;
 	struct dnode_of_data dn;
-	struct extent_info ei = {0, };
 	struct node_info ni;
 	bool ipu_force = false;
 	int err = 0;
@@ -2636,9 +2672,8 @@ int f2fs_do_write_data_page(struct f2fs_io_info *fio)
 		set_new_dnode(&dn, inode, NULL, NULL, 0);
 
 	if (need_inplace_update(fio) &&
-	    f2fs_lookup_read_extent_cache(inode, page->index, &ei)) {
-		fio->old_blkaddr = ei.blk + page->index - ei.fofs;
-
+	    f2fs_lookup_read_extent_cache_block(inode, page->index,
+						&fio->old_blkaddr)) {
 		if (!f2fs_is_valid_blkaddr(fio->sbi, fio->old_blkaddr,
 						DATA_GENERIC_ENHANCE)) {
 			f2fs_handle_error(fio->sbi,
@@ -2688,7 +2723,6 @@ int f2fs_do_write_data_page(struct f2fs_io_info *fio)
 			goto out_writepage;
 
 		set_page_writeback(page);
-		ClearPageError(page);
 		f2fs_put_dnode(&dn);
 		if (fio->need_lock == LOCK_REQ)
 			f2fs_unlock_op(fio->sbi);
@@ -2724,7 +2758,6 @@ int f2fs_do_write_data_page(struct f2fs_io_info *fio)
 		goto out_writepage;
 
 	set_page_writeback(page);
-	ClearPageError(page);
 
 	if (fio->compr_blocks && fio->old_blkaddr == COMPRESS_ADDR)
 		f2fs_i_compr_blocks_update(inode, fio->compr_blocks - 1, false);
@@ -2769,10 +2802,10 @@ int f2fs_write_single_data_page(struct page *page, int *submitted,
 		.old_blkaddr = NULL_ADDR,
 		.page = page,
 		.encrypted_page = NULL,
-		.submitted = false,
+		.submitted = 0,
 		.compr_blocks = compr_blocks,
 		.need_lock = LOCK_RETRY,
-		.post_read = f2fs_post_read_required(inode),
+		.post_read = f2fs_post_read_required(inode) ? 1 : 0,
 		.io_type = io_type,
 		.io_wbc = wbc,
 		.bio = bio,
@@ -2781,7 +2814,7 @@ int f2fs_write_single_data_page(struct page *page, int *submitted,
 
 	trace_f2fs_writepage(page, DATA);
 
-	/* we should bypass data pages to proceed the kworkder jobs */
+	/* we should bypass data pages to proceed the kworker jobs */
 	if (unlikely(f2fs_cp_error(sbi))) {
 		mapping_set_error(page->mapping, -EIO);
 		/*
@@ -2895,14 +2928,14 @@ int f2fs_write_single_data_page(struct page *page, int *submitted,
 	}
 
 	if (submitted)
-		*submitted = fio.submitted ? 1 : 0;
+		*submitted = fio.submitted;
 
 	return 0;
 
 redirty_out:
 	redirty_page_for_writepage(wbc, page);
 	/*
-	 * pageout() in MM traslates EAGAIN, so calls handle_write_error()
+	 * pageout() in MM translates EAGAIN, so calls handle_write_error()
 	 * -> mapping_set_error() -> set_bit(AS_EIO, ...).
 	 * file_write_and_wait_range() will see EIO error, which is critical
 	 * to return value of fsync() followed by atomic_write failure to user.
@@ -2936,7 +2969,7 @@ static int f2fs_write_data_page(struct page *page,
 }
 
 /*
- * This function was copied from write_cche_pages from mm/page-writeback.c.
+ * This function was copied from write_cache_pages from mm/page-writeback.c.
  * The major change is making write step of cold data page separately from
  * warm/hot data page.
  */
@@ -3085,11 +3118,9 @@ static int f2fs_write_cache_pages(struct address_space *mapping,
 			}
 
 			if (PageWriteback(page)) {
-				if (wbc->sync_mode != WB_SYNC_NONE)
-					f2fs_wait_on_page_writeback(page,
-							DATA, true, true);
-				else
+				if (wbc->sync_mode == WB_SYNC_NONE)
 					goto continue_unlock;
+				f2fs_wait_on_page_writeback(page, DATA, true, true);
 			}
 
 			if (!clear_page_dirty_for_io(page))
@@ -3313,9 +3344,8 @@ static int prepare_write_begin(struct f2fs_sb_info *sbi,
 	struct dnode_of_data dn;
 	struct page *ipage;
 	bool locked = false;
-	struct extent_info ei = {0, };
+	int flag = F2FS_GET_BLOCK_PRE_AIO;
 	int err = 0;
-	int flag;
 
 	/*
 	 * If a whole page is being written and we already preallocated all the
@@ -3325,14 +3355,13 @@ static int prepare_write_begin(struct f2fs_sb_info *sbi,
 		return 0;
 
 	/* f2fs_lock_op avoids race between write CP and convert_inline_page */
-	if (f2fs_has_inline_data(inode) && pos + len > MAX_INLINE_DATA(inode))
-		flag = F2FS_GET_BLOCK_DEFAULT;
-	else
-		flag = F2FS_GET_BLOCK_PRE_AIO;
-
-	if (f2fs_has_inline_data(inode) ||
-			(pos & PAGE_MASK) >= i_size_read(inode)) {
-		f2fs_do_map_lock(sbi, flag, true);
+	if (f2fs_has_inline_data(inode)) {
+		if (pos + len > MAX_INLINE_DATA(inode))
+			flag = F2FS_GET_BLOCK_DEFAULT;
+		f2fs_map_lock(sbi, flag);
+		locked = true;
+	} else if ((pos & PAGE_MASK) >= i_size_read(inode)) {
+		f2fs_map_lock(sbi, flag);
 		locked = true;
 	}
 
@@ -3352,40 +3381,40 @@ static int prepare_write_begin(struct f2fs_sb_info *sbi,
 			set_inode_flag(inode, FI_DATA_EXIST);
 			if (inode->i_nlink)
 				set_page_private_inline(ipage);
-		} else {
-			err = f2fs_convert_inline_page(&dn, page);
-			if (err)
-				goto out;
-			if (dn.data_blkaddr == NULL_ADDR)
-				err = f2fs_get_block(&dn, index);
+			goto out;
 		}
-	} else if (locked) {
-		err = f2fs_get_block(&dn, index);
-	} else {
-		if (f2fs_lookup_read_extent_cache(inode, index, &ei)) {
-			dn.data_blkaddr = ei.blk + index - ei.fofs;
-		} else {
-			/* hole case */
-			err = f2fs_get_dnode_of_data(&dn, index, LOOKUP_NODE);
-			if (err || dn.data_blkaddr == NULL_ADDR) {
-				f2fs_put_dnode(&dn);
-				f2fs_do_map_lock(sbi, F2FS_GET_BLOCK_PRE_AIO,
-								true);
-				WARN_ON(flag != F2FS_GET_BLOCK_PRE_AIO);
-				locked = true;
-				goto restart;
-			}
-		}
+		err = f2fs_convert_inline_page(&dn, page);
+		if (err || dn.data_blkaddr != NULL_ADDR)
+			goto out;
 	}
 
-	/* convert_inline_page can make node_changed */
-	*blk_addr = dn.data_blkaddr;
-	*node_changed = dn.node_changed;
+	if (!f2fs_lookup_read_extent_cache_block(inode, index,
+						 &dn.data_blkaddr)) {
+		if (locked) {
+			err = f2fs_reserve_block(&dn, index);
+			goto out;
+		}
+
+		/* hole case */
+		err = f2fs_get_dnode_of_data(&dn, index, LOOKUP_NODE);
+		if (!err && dn.data_blkaddr != NULL_ADDR)
+			goto out;
+		f2fs_put_dnode(&dn);
+		f2fs_map_lock(sbi, F2FS_GET_BLOCK_PRE_AIO);
+		WARN_ON(flag != F2FS_GET_BLOCK_PRE_AIO);
+		locked = true;
+		goto restart;
+	}
 out:
+	if (!err) {
+		/* convert_inline_page can make node_changed */
+		*blk_addr = dn.data_blkaddr;
+		*node_changed = dn.node_changed;
+	}
 	f2fs_put_dnode(&dn);
 unlock_out:
 	if (locked)
-		f2fs_do_map_lock(sbi, flag, false);
+		f2fs_map_unlock(sbi, flag);
 	return err;
 }
 
@@ -3394,7 +3423,6 @@ static int __find_data_block(struct inode *inode, pgoff_t index,
 {
 	struct dnode_of_data dn;
 	struct page *ipage;
-	struct extent_info ei = {0, };
 	int err = 0;
 
 	ipage = f2fs_get_node_page(F2FS_I_SB(inode), inode->i_ino);
@@ -3403,9 +3431,8 @@ static int __find_data_block(struct inode *inode, pgoff_t index,
 
 	set_new_dnode(&dn, inode, ipage, ipage, 0);
 
-	if (f2fs_lookup_read_extent_cache(inode, index, &ei)) {
-		dn.data_blkaddr = ei.blk + index - ei.fofs;
-	} else {
+	if (!f2fs_lookup_read_extent_cache_block(inode, index,
+						 &dn.data_blkaddr)) {
 		/* hole case */
 		err = f2fs_get_dnode_of_data(&dn, index, LOOKUP_NODE);
 		if (err) {
@@ -3426,7 +3453,7 @@ static int __reserve_data_block(struct inode *inode, pgoff_t index,
 	struct page *ipage;
 	int err = 0;
 
-	f2fs_do_map_lock(sbi, F2FS_GET_BLOCK_PRE_AIO, true);
+	f2fs_map_lock(sbi, F2FS_GET_BLOCK_PRE_AIO);
 
 	ipage = f2fs_get_node_page(sbi, inode->i_ino);
 	if (IS_ERR(ipage)) {
@@ -3435,20 +3462,22 @@ static int __reserve_data_block(struct inode *inode, pgoff_t index,
 	}
 	set_new_dnode(&dn, inode, ipage, ipage, 0);
 
-	err = f2fs_get_block(&dn, index);
+	if (!f2fs_lookup_read_extent_cache_block(dn.inode, index,
+						&dn.data_blkaddr))
+		err = f2fs_reserve_block(&dn, index);
 
 	*blk_addr = dn.data_blkaddr;
 	*node_changed = dn.node_changed;
 	f2fs_put_dnode(&dn);
 
 unlock_out:
-	f2fs_do_map_lock(sbi, F2FS_GET_BLOCK_PRE_AIO, false);
+	f2fs_map_unlock(sbi, F2FS_GET_BLOCK_PRE_AIO);
 	return err;
 }
 
 static int prepare_atomic_write_begin(struct f2fs_sb_info *sbi,
 			struct page *page, loff_t pos, unsigned int len,
-			block_t *blk_addr, bool *node_changed)
+			block_t *blk_addr, bool *node_changed, bool *use_cow)
 {
 	struct inode *inode = page->mapping->host;
 	struct inode *cow_inode = F2FS_I(inode)->cow_inode;
@@ -3462,10 +3491,15 @@ static int prepare_atomic_write_begin(struct f2fs_sb_info *sbi,
 
 	/* Look for the block in COW inode first */
 	err = __find_data_block(cow_inode, index, blk_addr);
-	if (err)
+	if (err) {
 		return err;
-	else if (*blk_addr != NULL_ADDR)
+	} else if (*blk_addr != NULL_ADDR) {
+		*use_cow = true;
 		return 0;
+	}
+
+	if (is_inode_flag_set(inode, FI_ATOMIC_REPLACE))
+		goto reserve_block;
 
 	/* Look for the block in the original inode */
 	err = __find_data_block(inode, index, &ori_blk_addr);
@@ -3492,6 +3526,7 @@ static int f2fs_write_begin(struct file *file, struct address_space *mapping,
 	struct page *page = NULL;
 	pgoff_t index = ((unsigned long long) pos) >> PAGE_SHIFT;
 	bool need_balance = false;
+	bool use_cow = false;
 	block_t blkaddr = NULL_ADDR;
 	int err = 0;
 
@@ -3551,7 +3586,7 @@ static int f2fs_write_begin(struct file *file, struct address_space *mapping,
 
 	if (f2fs_is_atomic_file(inode))
 		err = prepare_atomic_write_begin(sbi, page, pos, len,
-					&blkaddr, &need_balance);
+					&blkaddr, &need_balance, &use_cow);
 	else
 		err = prepare_write_begin(sbi, page, pos, len,
 					&blkaddr, &need_balance);
@@ -3591,7 +3626,9 @@ static int f2fs_write_begin(struct file *file, struct address_space *mapping,
 			f2fs_handle_error(sbi, ERROR_INVALID_BLKADDR);
 			goto fail;
 		}
-		err = f2fs_submit_page_read(inode, page, blkaddr, 0, true);
+		err = f2fs_submit_page_read(use_cow ?
+				F2FS_I(inode)->cow_inode : inode, page,
+				blkaddr, 0, true);
 		if (err)
 			goto fail;
 
@@ -3684,35 +3721,16 @@ void f2fs_invalidate_folio(struct folio *folio, size_t offset, size_t length)
 			f2fs_remove_dirty_inode(inode);
 		}
 	}
-
-	clear_page_private_gcing(&folio->page);
-
-	if (test_opt(sbi, COMPRESS_CACHE) &&
-			inode->i_ino == F2FS_COMPRESS_INO(sbi))
-		clear_page_private_data(&folio->page);
-
-	folio_detach_private(folio);
+	clear_page_private_all(&folio->page);
 }
 
 bool f2fs_release_folio(struct folio *folio, gfp_t wait)
 {
-	struct f2fs_sb_info *sbi;
-
 	/* If this is dirty folio, keep private data */
 	if (folio_test_dirty(folio))
 		return false;
 
-	sbi = F2FS_M_SB(folio->mapping);
-	if (test_opt(sbi, COMPRESS_CACHE)) {
-		struct inode *inode = folio->mapping->host;
-
-		if (inode->i_ino == F2FS_COMPRESS_INO(sbi))
-			clear_page_private_data(&folio->page);
-	}
-
-	clear_page_private_gcing(&folio->page);
-
-	folio_detach_private(folio);
+	clear_page_private_all(&folio->page);
 	return true;
 }
 
@@ -3791,7 +3809,7 @@ static sector_t f2fs_bmap(struct address_space *mapping, sector_t block)
 		map.m_next_pgofs = NULL;
 		map.m_seg_type = NO_CHECK_TYPE;
 
-		if (!f2fs_map_blocks(inode, &map, 0, F2FS_GET_BLOCK_BMAP))
+		if (!f2fs_map_blocks(inode, &map, F2FS_GET_BLOCK_BMAP))
 			blknr = map.m_pblk;
 	}
 out:
@@ -3899,7 +3917,7 @@ static int check_swap_activate(struct swap_info_struct *sis,
 		map.m_seg_type = NO_CHECK_TYPE;
 		map.m_may_create = false;
 
-		ret = f2fs_map_blocks(inode, &map, 0, F2FS_GET_BLOCK_FIEMAP);
+		ret = f2fs_map_blocks(inode, &map, F2FS_GET_BLOCK_FIEMAP);
 		if (ret)
 			goto out;
 
@@ -4088,9 +4106,7 @@ int f2fs_init_post_read_wq(struct f2fs_sb_info *sbi)
 	sbi->post_read_wq = alloc_workqueue("f2fs_post_read_wq",
 						 WQ_UNBOUND | WQ_HIGHPRI,
 						 num_online_cpus());
-	if (!sbi->post_read_wq)
-		return -ENOMEM;
-	return 0;
+	return sbi->post_read_wq ? 0 : -ENOMEM;
 }
 
 void f2fs_destroy_post_read_wq(struct f2fs_sb_info *sbi)
@@ -4103,9 +4119,7 @@ int __init f2fs_init_bio_entry_cache(void)
 {
 	bio_entry_slab = f2fs_kmem_cache_create("f2fs_bio_entry_slab",
 			sizeof(struct bio_entry));
-	if (!bio_entry_slab)
-		return -ENOMEM;
-	return 0;
+	return bio_entry_slab ? 0 : -ENOMEM;
 }
 
 void f2fs_destroy_bio_entry_cache(void)
@@ -4128,8 +4142,7 @@ static int f2fs_iomap_begin(struct inode *inode, loff_t offset, loff_t length,
 	if (flags & IOMAP_WRITE)
 		map.m_may_create = true;
 
-	err = f2fs_map_blocks(inode, &map, flags & IOMAP_WRITE,
-			      F2FS_GET_BLOCK_DIO);
+	err = f2fs_map_blocks(inode, &map, F2FS_GET_BLOCK_DIO);
 	if (err)
 		return err;
 
diff --git a/fs/f2fs/debug.c b/fs/f2fs/debug.c
index a9baa12..61c35b5 100644
--- a/fs/f2fs/debug.c
+++ b/fs/f2fs/debug.c
@@ -88,6 +88,9 @@ static void update_general_status(struct f2fs_sb_info *sbi)
 	si->hit_largest = atomic64_read(&sbi->read_hit_largest);
 	si->hit_total[EX_READ] += si->hit_largest;
 
+	/* block age extent_cache only */
+	si->allocated_data_blocks = atomic64_read(&sbi->allocated_data_blocks);
+
 	/* validation check of the segment numbers */
 	si->ndirty_node = get_pages(sbi, F2FS_DIRTY_NODES);
 	si->ndirty_dent = get_pages(sbi, F2FS_DIRTY_DENTS);
@@ -315,39 +318,52 @@ static void update_mem_info(struct f2fs_sb_info *sbi)
 
 	si->page_mem = 0;
 	if (sbi->node_inode) {
-		unsigned npages = NODE_MAPPING(sbi)->nrpages;
+		unsigned long npages = NODE_MAPPING(sbi)->nrpages;
 
 		si->page_mem += (unsigned long long)npages << PAGE_SHIFT;
 	}
 	if (sbi->meta_inode) {
-		unsigned npages = META_MAPPING(sbi)->nrpages;
+		unsigned long npages = META_MAPPING(sbi)->nrpages;
 
 		si->page_mem += (unsigned long long)npages << PAGE_SHIFT;
 	}
 #ifdef CONFIG_F2FS_FS_COMPRESSION
 	if (sbi->compress_inode) {
-		unsigned npages = COMPRESS_MAPPING(sbi)->nrpages;
+		unsigned long npages = COMPRESS_MAPPING(sbi)->nrpages;
+
 		si->page_mem += (unsigned long long)npages << PAGE_SHIFT;
 	}
 #endif
 }
 
-static char *s_flag[] = {
-	[SBI_IS_DIRTY]		= " fs_dirty",
-	[SBI_IS_CLOSE]		= " closing",
-	[SBI_NEED_FSCK]		= " need_fsck",
-	[SBI_POR_DOING]		= " recovering",
-	[SBI_NEED_SB_WRITE]	= " sb_dirty",
-	[SBI_NEED_CP]		= " need_cp",
-	[SBI_IS_SHUTDOWN]	= " shutdown",
-	[SBI_IS_RECOVERED]	= " recovered",
-	[SBI_CP_DISABLED]	= " cp_disabled",
-	[SBI_CP_DISABLED_QUICK]	= " cp_disabled_quick",
-	[SBI_QUOTA_NEED_FLUSH]	= " quota_need_flush",
-	[SBI_QUOTA_SKIP_FLUSH]	= " quota_skip_flush",
-	[SBI_QUOTA_NEED_REPAIR]	= " quota_need_repair",
-	[SBI_IS_RESIZEFS]	= " resizefs",
-	[SBI_IS_FREEZING]	= " freezefs",
+static const char *s_flag[MAX_SBI_FLAG] = {
+	[SBI_IS_DIRTY]		= "fs_dirty",
+	[SBI_IS_CLOSE]		= "closing",
+	[SBI_NEED_FSCK]		= "need_fsck",
+	[SBI_POR_DOING]		= "recovering",
+	[SBI_NEED_SB_WRITE]	= "sb_dirty",
+	[SBI_NEED_CP]		= "need_cp",
+	[SBI_IS_SHUTDOWN]	= "shutdown",
+	[SBI_IS_RECOVERED]	= "recovered",
+	[SBI_CP_DISABLED]	= "cp_disabled",
+	[SBI_CP_DISABLED_QUICK]	= "cp_disabled_quick",
+	[SBI_QUOTA_NEED_FLUSH]	= "quota_need_flush",
+	[SBI_QUOTA_SKIP_FLUSH]	= "quota_skip_flush",
+	[SBI_QUOTA_NEED_REPAIR]	= "quota_need_repair",
+	[SBI_IS_RESIZEFS]	= "resizefs",
+	[SBI_IS_FREEZING]	= "freezefs",
+	[SBI_IS_WRITABLE]	= "writable",
+};
+
+static const char *ipu_mode_names[F2FS_IPU_MAX] = {
+	[F2FS_IPU_FORCE]	= "FORCE",
+	[F2FS_IPU_SSR]		= "SSR",
+	[F2FS_IPU_UTIL]		= "UTIL",
+	[F2FS_IPU_SSR_UTIL]	= "SSR_UTIL",
+	[F2FS_IPU_FSYNC]	= "FSYNC",
+	[F2FS_IPU_ASYNC]	= "ASYNC",
+	[F2FS_IPU_NOCACHE]	= "NOCACHE",
+	[F2FS_IPU_HONOR_OPU_WRITE]	= "HONOR_OPU_WRITE",
 };
 
 static int stat_show(struct seq_file *s, void *v)
@@ -358,17 +374,19 @@ static int stat_show(struct seq_file *s, void *v)
 
 	raw_spin_lock_irqsave(&f2fs_stat_lock, flags);
 	list_for_each_entry(si, &f2fs_stat_list, stat_list) {
-		update_general_status(si->sbi);
+		struct f2fs_sb_info *sbi = si->sbi;
+
+		update_general_status(sbi);
 
 		seq_printf(s, "\n=====[ partition info(%pg). #%d, %s, CP: %s]=====\n",
-			si->sbi->sb->s_bdev, i++,
-			f2fs_readonly(si->sbi->sb) ? "RO" : "RW",
-			is_set_ckpt_flags(si->sbi, CP_DISABLED_FLAG) ?
-			"Disabled" : (f2fs_cp_error(si->sbi) ? "Error" : "Good"));
-		if (si->sbi->s_flag) {
+			sbi->sb->s_bdev, i++,
+			f2fs_readonly(sbi->sb) ? "RO" : "RW",
+			is_set_ckpt_flags(sbi, CP_DISABLED_FLAG) ?
+			"Disabled" : (f2fs_cp_error(sbi) ? "Error" : "Good"));
+		if (sbi->s_flag) {
 			seq_puts(s, "[SBI:");
-			for_each_set_bit(j, &si->sbi->s_flag, 32)
-				seq_puts(s, s_flag[j]);
+			for_each_set_bit(j, &sbi->s_flag, MAX_SBI_FLAG)
+				seq_printf(s, " %s", s_flag[j]);
 			seq_puts(s, "]\n");
 		}
 		seq_printf(s, "[SB: 1] [CP: 2] [SIT: %d] [NAT: %d] ",
@@ -379,8 +397,21 @@ static int stat_show(struct seq_file *s, void *v)
 			   si->overp_segs, si->rsvd_segs);
 		seq_printf(s, "Current Time Sec: %llu / Mounted Time Sec: %llu\n\n",
 					ktime_get_boottime_seconds(),
-					SIT_I(si->sbi)->mounted_time);
-		if (test_opt(si->sbi, DISCARD))
+					SIT_I(sbi)->mounted_time);
+
+		seq_puts(s, "Policy:\n");
+		seq_puts(s, "  - IPU: [");
+		if (IS_F2FS_IPU_DISABLE(sbi)) {
+			seq_puts(s, " DISABLE");
+		} else {
+			unsigned long policy = SM_I(sbi)->ipu_policy;
+
+			for_each_set_bit(j, &policy, F2FS_IPU_MAX)
+				seq_printf(s, " %s", ipu_mode_names[j]);
+		}
+		seq_puts(s, " ]\n\n");
+
+		if (test_opt(sbi, DISCARD))
 			seq_printf(s, "Utilization: %u%% (%u valid blocks, %u discard blocks)\n",
 				si->utilization, si->valid_count, si->discard_blks);
 		else
@@ -474,28 +505,28 @@ static int stat_show(struct seq_file *s, void *v)
 				si->meta_count[META_NAT]);
 		seq_printf(s, "  - ssa blocks : %u\n",
 				si->meta_count[META_SSA]);
-		seq_printf(s, "CP merge (Queued: %4d, Issued: %4d, Total: %4d, "
-				"Cur time: %4d(ms), Peak time: %4d(ms))\n",
-				si->nr_queued_ckpt, si->nr_issued_ckpt,
-				si->nr_total_ckpt, si->cur_ckpt_time,
-				si->peak_ckpt_time);
+		seq_puts(s, "CP merge:\n");
+		seq_printf(s, "  - Queued : %4d\n", si->nr_queued_ckpt);
+		seq_printf(s, "  - Issued : %4d\n", si->nr_issued_ckpt);
+		seq_printf(s, "  - Total : %4d\n", si->nr_total_ckpt);
+		seq_printf(s, "  - Cur time : %4d(ms)\n", si->cur_ckpt_time);
+		seq_printf(s, "  - Peak time : %4d(ms)\n", si->peak_ckpt_time);
 		seq_printf(s, "GC calls: %d (BG: %d)\n",
 			   si->call_count, si->bg_gc);
 		seq_printf(s, "  - data segments : %d (%d)\n",
 				si->data_segs, si->bg_data_segs);
 		seq_printf(s, "  - node segments : %d (%d)\n",
 				si->node_segs, si->bg_node_segs);
-		seq_printf(s, "  - Reclaimed segs : Normal (%d), Idle CB (%d), "
-				"Idle Greedy (%d), Idle AT (%d), "
-				"Urgent High (%d), Urgent Mid (%d), "
-				"Urgent Low (%d)\n",
-				si->sbi->gc_reclaimed_segs[GC_NORMAL],
-				si->sbi->gc_reclaimed_segs[GC_IDLE_CB],
-				si->sbi->gc_reclaimed_segs[GC_IDLE_GREEDY],
-				si->sbi->gc_reclaimed_segs[GC_IDLE_AT],
-				si->sbi->gc_reclaimed_segs[GC_URGENT_HIGH],
-				si->sbi->gc_reclaimed_segs[GC_URGENT_MID],
-				si->sbi->gc_reclaimed_segs[GC_URGENT_LOW]);
+		seq_puts(s, "  - Reclaimed segs :\n");
+		seq_printf(s, "    - Normal : %d\n", sbi->gc_reclaimed_segs[GC_NORMAL]);
+		seq_printf(s, "    - Idle CB : %d\n", sbi->gc_reclaimed_segs[GC_IDLE_CB]);
+		seq_printf(s, "    - Idle Greedy : %d\n",
+				sbi->gc_reclaimed_segs[GC_IDLE_GREEDY]);
+		seq_printf(s, "    - Idle AT : %d\n", sbi->gc_reclaimed_segs[GC_IDLE_AT]);
+		seq_printf(s, "    - Urgent High : %d\n",
+				sbi->gc_reclaimed_segs[GC_URGENT_HIGH]);
+		seq_printf(s, "    - Urgent Mid : %d\n", sbi->gc_reclaimed_segs[GC_URGENT_MID]);
+		seq_printf(s, "    - Urgent Low : %d\n", sbi->gc_reclaimed_segs[GC_URGENT_LOW]);
 		seq_printf(s, "Try to move %d blocks (BG: %d)\n", si->tot_blks,
 				si->bg_data_blks + si->bg_node_blks);
 		seq_printf(s, "  - data blocks : %d (%d)\n", si->data_blks,
@@ -516,16 +547,32 @@ static int stat_show(struct seq_file *s, void *v)
 		seq_printf(s, "  - Inner Struct Count: tree: %d(%d), node: %d\n",
 				si->ext_tree[EX_READ], si->zombie_tree[EX_READ],
 				si->ext_node[EX_READ]);
+		seq_puts(s, "\nExtent Cache (Block Age):\n");
+		seq_printf(s, "  - Allocated Data Blocks: %llu\n",
+				si->allocated_data_blocks);
+		seq_printf(s, "  - Hit Count: L1:%llu L2:%llu\n",
+				si->hit_cached[EX_BLOCK_AGE],
+				si->hit_rbtree[EX_BLOCK_AGE]);
+		seq_printf(s, "  - Hit Ratio: %llu%% (%llu / %llu)\n",
+				!si->total_ext[EX_BLOCK_AGE] ? 0 :
+				div64_u64(si->hit_total[EX_BLOCK_AGE] * 100,
+				si->total_ext[EX_BLOCK_AGE]),
+				si->hit_total[EX_BLOCK_AGE],
+				si->total_ext[EX_BLOCK_AGE]);
+		seq_printf(s, "  - Inner Struct Count: tree: %d(%d), node: %d\n",
+				si->ext_tree[EX_BLOCK_AGE],
+				si->zombie_tree[EX_BLOCK_AGE],
+				si->ext_node[EX_BLOCK_AGE]);
 		seq_puts(s, "\nBalancing F2FS Async:\n");
 		seq_printf(s, "  - DIO (R: %4d, W: %4d)\n",
 			   si->nr_dio_read, si->nr_dio_write);
 		seq_printf(s, "  - IO_R (Data: %4d, Node: %4d, Meta: %4d\n",
 			   si->nr_rd_data, si->nr_rd_node, si->nr_rd_meta);
-		seq_printf(s, "  - IO_W (CP: %4d, Data: %4d, Flush: (%4d %4d %4d), "
-			"Discard: (%4d %4d)) cmd: %4d undiscard:%4u\n",
+		seq_printf(s, "  - IO_W (CP: %4d, Data: %4d, Flush: (%4d %4d %4d), ",
 			   si->nr_wb_cp_data, si->nr_wb_data,
 			   si->nr_flushing, si->nr_flushed,
-			   si->flush_list_empty,
+			   si->flush_list_empty);
+		seq_printf(s, "Discard: (%4d %4d)) cmd: %4d undiscard:%4u\n",
 			   si->nr_discarding, si->nr_discarded,
 			   si->nr_discard_cmd, si->undiscard_blks);
 		seq_printf(s, "  - atomic IO: %4d (Max. %4d)\n",
@@ -545,7 +592,7 @@ static int stat_show(struct seq_file *s, void *v)
 			   si->ndirty_imeta);
 		seq_printf(s, "  - fsync mark: %4lld\n",
 			   percpu_counter_sum_positive(
-					&si->sbi->rf_node_block_count));
+					&sbi->rf_node_block_count));
 		seq_printf(s, "  - NATs: %9d/%9d\n  - SITs: %9d/%9d\n",
 			   si->dirty_nats, si->nats, si->dirty_sits, si->sits);
 		seq_printf(s, "  - free_nids: %9d/%9d\n  - alloc_nids: %9d\n",
@@ -572,12 +619,12 @@ static int stat_show(struct seq_file *s, void *v)
 			   si->block_count[LFS], si->segment_count[LFS]);
 
 		/* segment usage info */
-		f2fs_update_sit_info(si->sbi);
+		f2fs_update_sit_info(sbi);
 		seq_printf(s, "\nBDF: %u, avg. vblocks: %u\n",
 			   si->bimodal, si->avg_vblocks);
 
 		/* memory footprint */
-		update_mem_info(si->sbi);
+		update_mem_info(sbi);
 		seq_printf(s, "\nMemory: %llu KB\n",
 			(si->base_mem + si->cache_mem + si->page_mem) >> 10);
 		seq_printf(s, "  - static: %llu KB\n",
@@ -586,6 +633,8 @@ static int stat_show(struct seq_file *s, void *v)
 				si->cache_mem >> 10);
 		seq_printf(s, "  - read extent cache: %llu KB\n",
 				si->ext_mem[EX_READ] >> 10);
+		seq_printf(s, "  - block age extent cache: %llu KB\n",
+				si->ext_mem[EX_BLOCK_AGE] >> 10);
 		seq_printf(s, "  - paged : %llu KB\n",
 				si->page_mem >> 10);
 	}
diff --git a/fs/f2fs/dir.c b/fs/f2fs/dir.c
index 21960a8..887e559 100644
--- a/fs/f2fs/dir.c
+++ b/fs/f2fs/dir.c
@@ -29,7 +29,7 @@ static unsigned long dir_blocks(struct inode *inode)
 static unsigned int dir_buckets(unsigned int level, int dir_level)
 {
 	if (level + dir_level < MAX_DIR_HASH_DEPTH / 2)
-		return 1 << (level + dir_level);
+		return BIT(level + dir_level);
 	else
 		return MAX_DIR_BUCKETS;
 }
@@ -42,39 +42,6 @@ static unsigned int bucket_blocks(unsigned int level)
 		return 4;
 }
 
-static unsigned char f2fs_filetype_table[F2FS_FT_MAX] = {
-	[F2FS_FT_UNKNOWN]	= DT_UNKNOWN,
-	[F2FS_FT_REG_FILE]	= DT_REG,
-	[F2FS_FT_DIR]		= DT_DIR,
-	[F2FS_FT_CHRDEV]	= DT_CHR,
-	[F2FS_FT_BLKDEV]	= DT_BLK,
-	[F2FS_FT_FIFO]		= DT_FIFO,
-	[F2FS_FT_SOCK]		= DT_SOCK,
-	[F2FS_FT_SYMLINK]	= DT_LNK,
-};
-
-static unsigned char f2fs_type_by_mode[S_IFMT >> S_SHIFT] = {
-	[S_IFREG >> S_SHIFT]	= F2FS_FT_REG_FILE,
-	[S_IFDIR >> S_SHIFT]	= F2FS_FT_DIR,
-	[S_IFCHR >> S_SHIFT]	= F2FS_FT_CHRDEV,
-	[S_IFBLK >> S_SHIFT]	= F2FS_FT_BLKDEV,
-	[S_IFIFO >> S_SHIFT]	= F2FS_FT_FIFO,
-	[S_IFSOCK >> S_SHIFT]	= F2FS_FT_SOCK,
-	[S_IFLNK >> S_SHIFT]	= F2FS_FT_SYMLINK,
-};
-
-static void set_de_type(struct f2fs_dir_entry *de, umode_t mode)
-{
-	de->file_type = f2fs_type_by_mode[(mode & S_IFMT) >> S_SHIFT];
-}
-
-unsigned char f2fs_get_de_type(struct f2fs_dir_entry *de)
-{
-	if (de->file_type < F2FS_FT_MAX)
-		return f2fs_filetype_table[de->file_type];
-	return DT_UNKNOWN;
-}
-
 /* If @dir is casefolded, initialize @fname->cf_name from @fname->usr_fname. */
 int f2fs_init_casefolded_name(const struct inode *dir,
 			      struct f2fs_filename *fname)
@@ -340,6 +307,7 @@ static struct f2fs_dir_entry *find_in_level(struct inode *dir,
 	unsigned int bidx, end_block;
 	struct page *dentry_page;
 	struct f2fs_dir_entry *de = NULL;
+	pgoff_t next_pgofs;
 	bool room = false;
 	int max_slots;
 
@@ -350,12 +318,13 @@ static struct f2fs_dir_entry *find_in_level(struct inode *dir,
 			       le32_to_cpu(fname->hash) % nbucket);
 	end_block = bidx + nblock;
 
-	for (; bidx < end_block; bidx++) {
+	while (bidx < end_block) {
 		/* no need to allocate new dentry pages to all the indices */
-		dentry_page = f2fs_find_data_page(dir, bidx);
+		dentry_page = f2fs_find_data_page(dir, bidx, &next_pgofs);
 		if (IS_ERR(dentry_page)) {
 			if (PTR_ERR(dentry_page) == -ENOENT) {
 				room = true;
+				bidx = next_pgofs;
 				continue;
 			} else {
 				*res_page = dentry_page;
@@ -376,6 +345,8 @@ static struct f2fs_dir_entry *find_in_level(struct inode *dir,
 		if (max_slots >= s)
 			room = true;
 		f2fs_put_page(dentry_page, 0);
+
+		bidx++;
 	}
 
 	if (!de && room && F2FS_I(dir)->chash != fname->hash) {
@@ -481,7 +452,7 @@ void f2fs_set_link(struct inode *dir, struct f2fs_dir_entry *de,
 	lock_page(page);
 	f2fs_wait_on_page_writeback(page, type, true, true);
 	de->ino = cpu_to_le32(inode->i_ino);
-	set_de_type(de, inode->i_mode);
+	de->file_type = fs_umode_to_ftype(inode->i_mode);
 	set_page_dirty(page);
 
 	dir->i_mtime = dir->i_ctime = current_time(dir);
@@ -695,7 +666,7 @@ void f2fs_update_dentry(nid_t ino, umode_t mode, struct f2fs_dentry_ptr *d,
 	de->name_len = cpu_to_le16(name->len);
 	memcpy(d->filename[bit_pos], name->name, name->len);
 	de->ino = cpu_to_le32(ino);
-	set_de_type(de, mode);
+	de->file_type = fs_umode_to_ftype(mode);
 	for (i = 0; i < slots; i++) {
 		__set_bit_le(bit_pos + i, (void *)d->bitmap);
 		/* avoid wrong garbage data for readdir */
@@ -728,10 +699,8 @@ int f2fs_add_regular_entry(struct inode *dir, const struct f2fs_filename *fname,
 	}
 
 start:
-	if (time_to_inject(F2FS_I_SB(dir), FAULT_DIR_DEPTH)) {
-		f2fs_show_injection_info(F2FS_I_SB(dir), FAULT_DIR_DEPTH);
+	if (time_to_inject(F2FS_I_SB(dir), FAULT_DIR_DEPTH))
 		return -ENOSPC;
-	}
 
 	if (unlikely(current_depth == MAX_DIR_HASH_DEPTH))
 		return -ENOSPC;
@@ -936,14 +905,10 @@ void f2fs_delete_entry(struct f2fs_dir_entry *dentry, struct page *page,
 		f2fs_clear_page_cache_dirty_tag(page);
 		clear_page_dirty_for_io(page);
 		ClearPageUptodate(page);
-
-		clear_page_private_gcing(page);
+		clear_page_private_all(page);
 
 		inode_dec_dirty_pages(dir);
 		f2fs_remove_dirty_inode(dir);
-
-		detach_page_private(page);
-		set_page_private(page, 0);
 	}
 	f2fs_put_page(page, 1);
 
@@ -956,7 +921,7 @@ void f2fs_delete_entry(struct f2fs_dir_entry *dentry, struct page *page,
 
 bool f2fs_empty_dir(struct inode *dir)
 {
-	unsigned long bidx;
+	unsigned long bidx = 0;
 	struct page *dentry_page;
 	unsigned int bit_pos;
 	struct f2fs_dentry_block *dentry_blk;
@@ -965,13 +930,17 @@ bool f2fs_empty_dir(struct inode *dir)
 	if (f2fs_has_inline_dentry(dir))
 		return f2fs_empty_inline_dir(dir);
 
-	for (bidx = 0; bidx < nblock; bidx++) {
-		dentry_page = f2fs_get_lock_data_page(dir, bidx, false);
+	while (bidx < nblock) {
+		pgoff_t next_pgofs;
+
+		dentry_page = f2fs_find_data_page(dir, bidx, &next_pgofs);
 		if (IS_ERR(dentry_page)) {
-			if (PTR_ERR(dentry_page) == -ENOENT)
+			if (PTR_ERR(dentry_page) == -ENOENT) {
+				bidx = next_pgofs;
 				continue;
-			else
+			} else {
 				return false;
+			}
 		}
 
 		dentry_blk = page_address(dentry_page);
@@ -983,10 +952,12 @@ bool f2fs_empty_dir(struct inode *dir)
 						NR_DENTRY_IN_BLOCK,
 						bit_pos);
 
-		f2fs_put_page(dentry_page, 1);
+		f2fs_put_page(dentry_page, 0);
 
 		if (bit_pos < NR_DENTRY_IN_BLOCK)
 			return false;
+
+		bidx++;
 	}
 	return true;
 }
@@ -1000,7 +971,7 @@ int f2fs_fill_dentries(struct dir_context *ctx, struct f2fs_dentry_ptr *d,
 	struct fscrypt_str de_name = FSTR_INIT(NULL, 0);
 	struct f2fs_sb_info *sbi = F2FS_I_SB(d->inode);
 	struct blk_plug plug;
-	bool readdir_ra = sbi->readdir_ra == 1;
+	bool readdir_ra = sbi->readdir_ra;
 	bool found_valid_dirent = false;
 	int err = 0;
 
@@ -1028,7 +999,7 @@ int f2fs_fill_dentries(struct dir_context *ctx, struct f2fs_dentry_ptr *d,
 			continue;
 		}
 
-		d_type = f2fs_get_de_type(de);
+		d_type = fs_ftype_to_dtype(de->file_type);
 
 		de_name.name = d->filename[bit_pos];
 		de_name.len = le16_to_cpu(de->name_len);
@@ -1104,7 +1075,8 @@ static int f2fs_readdir(struct file *file, struct dir_context *ctx)
 		goto out_free;
 	}
 
-	for (; n < npages; n++, ctx->pos = n * NR_DENTRY_IN_BLOCK) {
+	for (; n < npages; ctx->pos = n * NR_DENTRY_IN_BLOCK) {
+		pgoff_t next_pgofs;
 
 		/* allow readdir() to be interrupted */
 		if (fatal_signal_pending(current)) {
@@ -1118,11 +1090,12 @@ static int f2fs_readdir(struct file *file, struct dir_context *ctx)
 			page_cache_sync_readahead(inode->i_mapping, ra, file, n,
 				min(npages - n, (pgoff_t)MAX_DIR_RA_PAGES));
 
-		dentry_page = f2fs_find_data_page(inode, n);
+		dentry_page = f2fs_find_data_page(inode, n, &next_pgofs);
 		if (IS_ERR(dentry_page)) {
 			err = PTR_ERR(dentry_page);
 			if (err == -ENOENT) {
 				err = 0;
+				n = next_pgofs;
 				continue;
 			} else {
 				goto out_free;
@@ -1141,6 +1114,8 @@ static int f2fs_readdir(struct file *file, struct dir_context *ctx)
 		}
 
 		f2fs_put_page(dentry_page, 0);
+
+		n++;
 	}
 out_free:
 	fscrypt_fname_free_buffer(&fstr);
diff --git a/fs/f2fs/extent_cache.c b/fs/f2fs/extent_cache.c
index 16692c9..0e2d491 100644
--- a/fs/f2fs/extent_cache.c
+++ b/fs/f2fs/extent_cache.c
@@ -6,6 +6,10 @@
  * Copyright (c) 2015 Samsung Electronics
  * Authors: Jaegeuk Kim <jaegeuk@kernel.org>
  *          Chao Yu <chao2.yu@samsung.com>
+ *
+ * block_age-based extent cache added by:
+ * Copyright (c) 2022 xiaomi Co., Ltd.
+ *             http://www.xiaomi.com/
  */
 
 #include <linux/fs.h>
@@ -19,18 +23,26 @@ bool sanity_check_extent_cache(struct inode *inode)
 {
 	struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
 	struct f2fs_inode_info *fi = F2FS_I(inode);
+	struct extent_tree *et = fi->extent_tree[EX_READ];
 	struct extent_info *ei;
 
-	if (!fi->extent_tree[EX_READ])
+	if (!et)
 		return true;
 
-	ei = &fi->extent_tree[EX_READ]->largest;
+	ei = &et->largest;
+	if (!ei->len)
+		return true;
 
-	if (ei->len &&
-		(!f2fs_is_valid_blkaddr(sbi, ei->blk,
-					DATA_GENERIC_ENHANCE) ||
-		!f2fs_is_valid_blkaddr(sbi, ei->blk + ei->len - 1,
-					DATA_GENERIC_ENHANCE))) {
+	/* Let's drop, if checkpoint got corrupted. */
+	if (is_set_ckpt_flags(sbi, CP_ERROR_FLAG)) {
+		ei->len = 0;
+		et->largest_updated = true;
+		return true;
+	}
+
+	if (!f2fs_is_valid_blkaddr(sbi, ei->blk, DATA_GENERIC_ENHANCE) ||
+	    !f2fs_is_valid_blkaddr(sbi, ei->blk + ei->len - 1,
+					DATA_GENERIC_ENHANCE)) {
 		set_sbi_flag(sbi, SBI_NEED_FSCK);
 		f2fs_warn(sbi, "%s: inode (ino=%lx) extent info [%u, %u, %u] is incorrect, run fsck to fix",
 			  __func__, inode->i_ino,
@@ -43,6 +55,7 @@ bool sanity_check_extent_cache(struct inode *inode)
 static void __set_extent_info(struct extent_info *ei,
 				unsigned int fofs, unsigned int len,
 				block_t blk, bool keep_clen,
+				unsigned long age, unsigned long last_blocks,
 				enum extent_type type)
 {
 	ei->fofs = fofs;
@@ -55,6 +68,9 @@ static void __set_extent_info(struct extent_info *ei,
 #ifdef CONFIG_F2FS_FS_COMPRESSION
 		ei->c_len = 0;
 #endif
+	} else if (type == EX_BLOCK_AGE) {
+		ei->age = age;
+		ei->last_blocks = last_blocks;
 	}
 }
 
@@ -72,10 +88,26 @@ static bool __may_read_extent_tree(struct inode *inode)
 	return S_ISREG(inode->i_mode);
 }
 
+static bool __may_age_extent_tree(struct inode *inode)
+{
+	struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
+
+	if (!test_opt(sbi, AGE_EXTENT_CACHE))
+		return false;
+	if (is_inode_flag_set(inode, FI_COMPRESSED_FILE))
+		return false;
+	if (file_is_cold(inode))
+		return false;
+
+	return S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode);
+}
+
 static bool __init_may_extent_tree(struct inode *inode, enum extent_type type)
 {
 	if (type == EX_READ)
 		return __may_read_extent_tree(inode);
+	else if (type == EX_BLOCK_AGE)
+		return __may_age_extent_tree(inode);
 	return false;
 }
 
@@ -115,6 +147,11 @@ static bool __is_extent_mergeable(struct extent_info *back,
 #endif
 		return (back->fofs + back->len == front->fofs &&
 				back->blk + back->len == front->blk);
+	} else if (type == EX_BLOCK_AGE) {
+		return (back->fofs + back->len == front->fofs &&
+			abs(back->age - front->age) <= SAME_AGE_REGION &&
+			abs(back->last_blocks - front->last_blocks) <=
+							SAME_AGE_REGION);
 	}
 	return false;
 }
@@ -131,95 +168,52 @@ static bool __is_front_mergeable(struct extent_info *cur,
 	return __is_extent_mergeable(cur, front, type);
 }
 
-static struct rb_entry *__lookup_rb_tree_fast(struct rb_entry *cached_re,
-							unsigned int ofs)
-{
-	if (cached_re) {
-		if (cached_re->ofs <= ofs &&
-				cached_re->ofs + cached_re->len > ofs) {
-			return cached_re;
-		}
-	}
-	return NULL;
-}
-
-static struct rb_entry *__lookup_rb_tree_slow(struct rb_root_cached *root,
-							unsigned int ofs)
+static struct extent_node *__lookup_extent_node(struct rb_root_cached *root,
+			struct extent_node *cached_en, unsigned int fofs)
 {
 	struct rb_node *node = root->rb_root.rb_node;
-	struct rb_entry *re;
+	struct extent_node *en;
 
+	/* check a cached entry */
+	if (cached_en && cached_en->ei.fofs <= fofs &&
+			cached_en->ei.fofs + cached_en->ei.len > fofs)
+		return cached_en;
+
+	/* check rb_tree */
 	while (node) {
-		re = rb_entry(node, struct rb_entry, rb_node);
+		en = rb_entry(node, struct extent_node, rb_node);
 
-		if (ofs < re->ofs)
+		if (fofs < en->ei.fofs)
 			node = node->rb_left;
-		else if (ofs >= re->ofs + re->len)
+		else if (fofs >= en->ei.fofs + en->ei.len)
 			node = node->rb_right;
 		else
-			return re;
+			return en;
 	}
 	return NULL;
 }
 
-struct rb_entry *f2fs_lookup_rb_tree(struct rb_root_cached *root,
-				struct rb_entry *cached_re, unsigned int ofs)
-{
-	struct rb_entry *re;
-
-	re = __lookup_rb_tree_fast(cached_re, ofs);
-	if (!re)
-		return __lookup_rb_tree_slow(root, ofs);
-
-	return re;
-}
-
-struct rb_node **f2fs_lookup_rb_tree_for_insert(struct f2fs_sb_info *sbi,
-				struct rb_root_cached *root,
-				struct rb_node **parent,
-				unsigned int ofs, bool *leftmost)
-{
-	struct rb_node **p = &root->rb_root.rb_node;
-	struct rb_entry *re;
-
-	while (*p) {
-		*parent = *p;
-		re = rb_entry(*parent, struct rb_entry, rb_node);
-
-		if (ofs < re->ofs) {
-			p = &(*p)->rb_left;
-		} else if (ofs >= re->ofs + re->len) {
-			p = &(*p)->rb_right;
-			*leftmost = false;
-		} else {
-			f2fs_bug_on(sbi, 1);
-		}
-	}
-
-	return p;
-}
-
 /*
- * lookup rb entry in position of @ofs in rb-tree,
+ * lookup rb entry in position of @fofs in rb-tree,
  * if hit, return the entry, otherwise, return NULL
- * @prev_ex: extent before ofs
- * @next_ex: extent after ofs
- * @insert_p: insert point for new extent at ofs
- * in order to simpfy the insertion after.
+ * @prev_ex: extent before fofs
+ * @next_ex: extent after fofs
+ * @insert_p: insert point for new extent at fofs
+ * in order to simplify the insertion after.
  * tree must stay unchanged between lookup and insertion.
  */
-struct rb_entry *f2fs_lookup_rb_tree_ret(struct rb_root_cached *root,
-				struct rb_entry *cached_re,
-				unsigned int ofs,
-				struct rb_entry **prev_entry,
-				struct rb_entry **next_entry,
+static struct extent_node *__lookup_extent_node_ret(struct rb_root_cached *root,
+				struct extent_node *cached_en,
+				unsigned int fofs,
+				struct extent_node **prev_entry,
+				struct extent_node **next_entry,
 				struct rb_node ***insert_p,
 				struct rb_node **insert_parent,
-				bool force, bool *leftmost)
+				bool *leftmost)
 {
 	struct rb_node **pnode = &root->rb_root.rb_node;
 	struct rb_node *parent = NULL, *tmp_node;
-	struct rb_entry *re = cached_re;
+	struct extent_node *en = cached_en;
 
 	*insert_p = NULL;
 	*insert_parent = NULL;
@@ -229,24 +223,20 @@ struct rb_entry *f2fs_lookup_rb_tree_ret(struct rb_root_cached *root,
 	if (RB_EMPTY_ROOT(&root->rb_root))
 		return NULL;
 
-	if (re) {
-		if (re->ofs <= ofs && re->ofs + re->len > ofs)
-			goto lookup_neighbors;
-	}
+	if (en && en->ei.fofs <= fofs && en->ei.fofs + en->ei.len > fofs)
+		goto lookup_neighbors;
 
-	if (leftmost)
-		*leftmost = true;
+	*leftmost = true;
 
 	while (*pnode) {
 		parent = *pnode;
-		re = rb_entry(*pnode, struct rb_entry, rb_node);
+		en = rb_entry(*pnode, struct extent_node, rb_node);
 
-		if (ofs < re->ofs) {
+		if (fofs < en->ei.fofs) {
 			pnode = &(*pnode)->rb_left;
-		} else if (ofs >= re->ofs + re->len) {
+		} else if (fofs >= en->ei.fofs + en->ei.len) {
 			pnode = &(*pnode)->rb_right;
-			if (leftmost)
-				*leftmost = false;
+			*leftmost = false;
 		} else {
 			goto lookup_neighbors;
 		}
@@ -255,60 +245,32 @@ struct rb_entry *f2fs_lookup_rb_tree_ret(struct rb_root_cached *root,
 	*insert_p = pnode;
 	*insert_parent = parent;
 
-	re = rb_entry(parent, struct rb_entry, rb_node);
+	en = rb_entry(parent, struct extent_node, rb_node);
 	tmp_node = parent;
-	if (parent && ofs > re->ofs)
+	if (parent && fofs > en->ei.fofs)
 		tmp_node = rb_next(parent);
-	*next_entry = rb_entry_safe(tmp_node, struct rb_entry, rb_node);
+	*next_entry = rb_entry_safe(tmp_node, struct extent_node, rb_node);
 
 	tmp_node = parent;
-	if (parent && ofs < re->ofs)
+	if (parent && fofs < en->ei.fofs)
 		tmp_node = rb_prev(parent);
-	*prev_entry = rb_entry_safe(tmp_node, struct rb_entry, rb_node);
+	*prev_entry = rb_entry_safe(tmp_node, struct extent_node, rb_node);
 	return NULL;
 
 lookup_neighbors:
-	if (ofs == re->ofs || force) {
+	if (fofs == en->ei.fofs) {
 		/* lookup prev node for merging backward later */
-		tmp_node = rb_prev(&re->rb_node);
-		*prev_entry = rb_entry_safe(tmp_node, struct rb_entry, rb_node);
+		tmp_node = rb_prev(&en->rb_node);
+		*prev_entry = rb_entry_safe(tmp_node,
+					struct extent_node, rb_node);
 	}
-	if (ofs == re->ofs + re->len - 1 || force) {
+	if (fofs == en->ei.fofs + en->ei.len - 1) {
 		/* lookup next node for merging frontward later */
-		tmp_node = rb_next(&re->rb_node);
-		*next_entry = rb_entry_safe(tmp_node, struct rb_entry, rb_node);
+		tmp_node = rb_next(&en->rb_node);
+		*next_entry = rb_entry_safe(tmp_node,
+					struct extent_node, rb_node);
 	}
-	return re;
-}
-
-bool f2fs_check_rb_tree_consistence(struct f2fs_sb_info *sbi,
-				struct rb_root_cached *root)
-{
-#ifdef CONFIG_F2FS_CHECK_FS
-	struct rb_node *cur = rb_first_cached(root), *next;
-	struct rb_entry *cur_re, *next_re;
-
-	if (!cur)
-		return true;
-
-	while (cur) {
-		next = rb_next(cur);
-		if (!next)
-			return true;
-
-		cur_re = rb_entry(cur, struct rb_entry, rb_node);
-		next_re = rb_entry(next, struct rb_entry, rb_node);
-
-		if (cur_re->ofs + cur_re->len > next_re->ofs) {
-			f2fs_info(sbi, "inconsistent rbtree, cur(%u, %u) next(%u, %u)",
-				  cur_re->ofs, cur_re->len,
-				  next_re->ofs, next_re->len);
-			return false;
-		}
-		cur = next;
-	}
-#endif
-	return true;
+	return en;
 }
 
 static struct kmem_cache *extent_tree_slab;
@@ -480,11 +442,22 @@ void f2fs_init_read_extent_tree(struct inode *inode, struct page *ipage)
 		set_inode_flag(inode, FI_NO_EXTENT);
 }
 
+void f2fs_init_age_extent_tree(struct inode *inode)
+{
+	if (!__init_may_extent_tree(inode, EX_BLOCK_AGE))
+		return;
+	__grab_extent_tree(inode, EX_BLOCK_AGE);
+}
+
 void f2fs_init_extent_tree(struct inode *inode)
 {
 	/* initialize read cache */
 	if (__init_may_extent_tree(inode, EX_READ))
 		__grab_extent_tree(inode, EX_READ);
+
+	/* initialize block age cache */
+	if (__init_may_extent_tree(inode, EX_BLOCK_AGE))
+		__grab_extent_tree(inode, EX_BLOCK_AGE);
 }
 
 static bool __lookup_extent_tree(struct inode *inode, pgoff_t pgofs,
@@ -512,8 +485,7 @@ static bool __lookup_extent_tree(struct inode *inode, pgoff_t pgofs,
 		goto out;
 	}
 
-	en = (struct extent_node *)f2fs_lookup_rb_tree(&et->root,
-				(struct rb_entry *)et->cached_en, pgofs);
+	en = __lookup_extent_node(&et->root, et->cached_en, pgofs);
 	if (!en)
 		goto out;
 
@@ -536,6 +508,8 @@ static bool __lookup_extent_tree(struct inode *inode, pgoff_t pgofs,
 
 	if (type == EX_READ)
 		trace_f2fs_lookup_read_extent_tree_end(inode, pgofs, ei);
+	else if (type == EX_BLOCK_AGE)
+		trace_f2fs_lookup_age_extent_tree_end(inode, pgofs, ei);
 	return ret;
 }
 
@@ -585,7 +559,7 @@ static struct extent_node *__insert_extent_tree(struct f2fs_sb_info *sbi,
 				bool leftmost)
 {
 	struct extent_tree_info *eti = &sbi->extent_tree[et->type];
-	struct rb_node **p;
+	struct rb_node **p = &et->root.rb_root.rb_node;
 	struct rb_node *parent = NULL;
 	struct extent_node *en = NULL;
 
@@ -597,8 +571,21 @@ static struct extent_node *__insert_extent_tree(struct f2fs_sb_info *sbi,
 
 	leftmost = true;
 
-	p = f2fs_lookup_rb_tree_for_insert(sbi, &et->root, &parent,
-						ei->fofs, &leftmost);
+	/* look up extent_node in the rb tree */
+	while (*p) {
+		parent = *p;
+		en = rb_entry(parent, struct extent_node, rb_node);
+
+		if (ei->fofs < en->ei.fofs) {
+			p = &(*p)->rb_left;
+		} else if (ei->fofs >= en->ei.fofs + en->ei.len) {
+			p = &(*p)->rb_right;
+			leftmost = false;
+		} else {
+			f2fs_bug_on(sbi, 1);
+		}
+	}
+
 do_insert:
 	en = __attach_extent_node(sbi, et, ei, parent, p, leftmost);
 	if (!en)
@@ -634,6 +621,10 @@ static void __update_extent_tree_range(struct inode *inode,
 	if (type == EX_READ)
 		trace_f2fs_update_read_extent_tree_range(inode, fofs, len,
 						tei->blk, 0);
+	else if (type == EX_BLOCK_AGE)
+		trace_f2fs_update_age_extent_tree_range(inode, fofs, len,
+						tei->age, tei->last_blocks);
+
 	write_lock(&et->lock);
 
 	if (type == EX_READ) {
@@ -653,16 +644,15 @@ static void __update_extent_tree_range(struct inode *inode,
 	}
 
 	/* 1. lookup first extent node in range [fofs, fofs + len - 1] */
-	en = (struct extent_node *)f2fs_lookup_rb_tree_ret(&et->root,
-					(struct rb_entry *)et->cached_en, fofs,
-					(struct rb_entry **)&prev_en,
-					(struct rb_entry **)&next_en,
-					&insert_p, &insert_parent, false,
+	en = __lookup_extent_node_ret(&et->root,
+					et->cached_en, fofs,
+					&prev_en, &next_en,
+					&insert_p, &insert_parent,
 					&leftmost);
 	if (!en)
 		en = next_en;
 
-	/* 2. invlidate all extent nodes in range [fofs, fofs + len - 1] */
+	/* 2. invalidate all extent nodes in range [fofs, fofs + len - 1] */
 	while (en && en->ei.fofs < end) {
 		unsigned int org_end;
 		int parts = 0;	/* # of parts current extent split into */
@@ -686,6 +676,7 @@ static void __update_extent_tree_range(struct inode *inode,
 				__set_extent_info(&ei,
 					end, org_end - end,
 					end - dei.fofs + dei.blk, false,
+					dei.age, dei.last_blocks,
 					type);
 				en1 = __insert_extent_tree(sbi, et, &ei,
 							NULL, NULL, true);
@@ -694,6 +685,7 @@ static void __update_extent_tree_range(struct inode *inode,
 				__set_extent_info(&en->ei,
 					end, en->ei.len - (end - dei.fofs),
 					en->ei.blk + (end - dei.fofs), true,
+					dei.age, dei.last_blocks,
 					type);
 				next_en = en;
 			}
@@ -724,11 +716,15 @@ static void __update_extent_tree_range(struct inode *inode,
 		en = next_en;
 	}
 
+	if (type == EX_BLOCK_AGE)
+		goto update_age_extent_cache;
+
 	/* 3. update extent in read extent cache */
 	BUG_ON(type != EX_READ);
 
 	if (tei->blk) {
-		__set_extent_info(&ei, fofs, len, tei->blk, false, EX_READ);
+		__set_extent_info(&ei, fofs, len, tei->blk, false,
+				  0, 0, EX_READ);
 		if (!__try_merge_extent_node(sbi, et, &ei, prev_en, next_en))
 			__insert_extent_tree(sbi, et, &ei,
 					insert_p, insert_parent, leftmost);
@@ -750,7 +746,17 @@ static void __update_extent_tree_range(struct inode *inode,
 		et->largest_updated = false;
 		updated = true;
 	}
+	goto out_read_extent_cache;
+update_age_extent_cache:
+	if (!tei->last_blocks)
+		goto out_read_extent_cache;
 
+	__set_extent_info(&ei, fofs, len, 0, false,
+			tei->age, tei->last_blocks, EX_BLOCK_AGE);
+	if (!__try_merge_extent_node(sbi, et, &ei, prev_en, next_en))
+		__insert_extent_tree(sbi, et, &ei,
+					insert_p, insert_parent, leftmost);
+out_read_extent_cache:
 	write_unlock(&et->lock);
 
 	if (updated)
@@ -779,16 +785,15 @@ void f2fs_update_read_extent_tree_range_compressed(struct inode *inode,
 
 	write_lock(&et->lock);
 
-	en = (struct extent_node *)f2fs_lookup_rb_tree_ret(&et->root,
-				(struct rb_entry *)et->cached_en, fofs,
-				(struct rb_entry **)&prev_en,
-				(struct rb_entry **)&next_en,
-				&insert_p, &insert_parent, false,
-				&leftmost);
+	en = __lookup_extent_node_ret(&et->root,
+					et->cached_en, fofs,
+					&prev_en, &next_en,
+					&insert_p, &insert_parent,
+					&leftmost);
 	if (en)
 		goto unlock_out;
 
-	__set_extent_info(&ei, fofs, llen, blkaddr, true, EX_READ);
+	__set_extent_info(&ei, fofs, llen, blkaddr, true, 0, 0, EX_READ);
 	ei.c_len = c_len;
 
 	if (!__try_merge_extent_node(sbi, et, &ei, prev_en, next_en))
@@ -799,9 +804,86 @@ void f2fs_update_read_extent_tree_range_compressed(struct inode *inode,
 }
 #endif
 
+static unsigned long long __calculate_block_age(struct f2fs_sb_info *sbi,
+						unsigned long long new,
+						unsigned long long old)
+{
+	unsigned int rem_old, rem_new;
+	unsigned long long res;
+	unsigned int weight = sbi->last_age_weight;
+
+	res = div_u64_rem(new, 100, &rem_new) * (100 - weight)
+		+ div_u64_rem(old, 100, &rem_old) * weight;
+
+	if (rem_new)
+		res += rem_new * (100 - weight) / 100;
+	if (rem_old)
+		res += rem_old * weight / 100;
+
+	return res;
+}
+
+/* This returns a new age and allocated blocks in ei */
+static int __get_new_block_age(struct inode *inode, struct extent_info *ei,
+						block_t blkaddr)
+{
+	struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
+	loff_t f_size = i_size_read(inode);
+	unsigned long long cur_blocks =
+				atomic64_read(&sbi->allocated_data_blocks);
+	struct extent_info tei = *ei;	/* only fofs and len are valid */
+
+	/*
+	 * When I/O is not aligned to a PAGE_SIZE, update will happen to the last
+	 * file block even in seq write. So don't record age for newly last file
+	 * block here.
+	 */
+	if ((f_size >> PAGE_SHIFT) == ei->fofs && f_size & (PAGE_SIZE - 1) &&
+			blkaddr == NEW_ADDR)
+		return -EINVAL;
+
+	if (__lookup_extent_tree(inode, ei->fofs, &tei, EX_BLOCK_AGE)) {
+		unsigned long long cur_age;
+
+		if (cur_blocks >= tei.last_blocks)
+			cur_age = cur_blocks - tei.last_blocks;
+		else
+			/* allocated_data_blocks overflow */
+			cur_age = ULLONG_MAX - tei.last_blocks + cur_blocks;
+
+		if (tei.age)
+			ei->age = __calculate_block_age(sbi, cur_age, tei.age);
+		else
+			ei->age = cur_age;
+		ei->last_blocks = cur_blocks;
+		WARN_ON(ei->age > cur_blocks);
+		return 0;
+	}
+
+	f2fs_bug_on(sbi, blkaddr == NULL_ADDR);
+
+	/* the data block was allocated for the first time */
+	if (blkaddr == NEW_ADDR)
+		goto out;
+
+	if (__is_valid_data_blkaddr(blkaddr) &&
+	    !f2fs_is_valid_blkaddr(sbi, blkaddr, DATA_GENERIC_ENHANCE)) {
+		f2fs_bug_on(sbi, 1);
+		return -EINVAL;
+	}
+out:
+	/*
+	 * init block age with zero, this can happen when the block age extent
+	 * was reclaimed due to memory constraint or system reboot
+	 */
+	ei->age = 0;
+	ei->last_blocks = cur_blocks;
+	return 0;
+}
+
 static void __update_extent_cache(struct dnode_of_data *dn, enum extent_type type)
 {
-	struct extent_info ei;
+	struct extent_info ei = {};
 
 	if (!__may_extent_tree(dn->inode, type))
 		return;
@@ -815,6 +897,9 @@ static void __update_extent_cache(struct dnode_of_data *dn, enum extent_type typ
 			ei.blk = NULL_ADDR;
 		else
 			ei.blk = dn->data_blkaddr;
+	} else if (type == EX_BLOCK_AGE) {
+		if (__get_new_block_age(dn->inode, &ei, dn->data_blkaddr))
+			return;
 	}
 	__update_extent_tree_range(dn->inode, &ei, type);
 }
@@ -904,6 +989,17 @@ bool f2fs_lookup_read_extent_cache(struct inode *inode, pgoff_t pgofs,
 	return __lookup_extent_tree(inode, pgofs, ei, EX_READ);
 }
 
+bool f2fs_lookup_read_extent_cache_block(struct inode *inode, pgoff_t index,
+				block_t *blkaddr)
+{
+	struct extent_info ei = {};
+
+	if (!f2fs_lookup_read_extent_cache(inode, index, &ei))
+		return false;
+	*blkaddr = ei.blk + index - ei.fofs;
+	return true;
+}
+
 void f2fs_update_read_extent_cache(struct dnode_of_data *dn)
 {
 	return __update_extent_cache(dn, EX_READ);
@@ -932,6 +1028,43 @@ unsigned int f2fs_shrink_read_extent_tree(struct f2fs_sb_info *sbi, int nr_shrin
 	return __shrink_extent_tree(sbi, nr_shrink, EX_READ);
 }
 
+/* block age extent cache operations */
+bool f2fs_lookup_age_extent_cache(struct inode *inode, pgoff_t pgofs,
+				struct extent_info *ei)
+{
+	if (!__may_extent_tree(inode, EX_BLOCK_AGE))
+		return false;
+
+	return __lookup_extent_tree(inode, pgofs, ei, EX_BLOCK_AGE);
+}
+
+void f2fs_update_age_extent_cache(struct dnode_of_data *dn)
+{
+	return __update_extent_cache(dn, EX_BLOCK_AGE);
+}
+
+void f2fs_update_age_extent_cache_range(struct dnode_of_data *dn,
+				pgoff_t fofs, unsigned int len)
+{
+	struct extent_info ei = {
+		.fofs = fofs,
+		.len = len,
+	};
+
+	if (!__may_extent_tree(dn->inode, EX_BLOCK_AGE))
+		return;
+
+	__update_extent_tree_range(dn->inode, &ei, EX_BLOCK_AGE);
+}
+
+unsigned int f2fs_shrink_age_extent_tree(struct f2fs_sb_info *sbi, int nr_shrink)
+{
+	if (!test_opt(sbi, AGE_EXTENT_CACHE))
+		return 0;
+
+	return __shrink_extent_tree(sbi, nr_shrink, EX_BLOCK_AGE);
+}
+
 static unsigned int __destroy_extent_node(struct inode *inode,
 					enum extent_type type)
 {
@@ -952,6 +1085,7 @@ static unsigned int __destroy_extent_node(struct inode *inode,
 void f2fs_destroy_extent_node(struct inode *inode)
 {
 	__destroy_extent_node(inode, EX_READ);
+	__destroy_extent_node(inode, EX_BLOCK_AGE);
 }
 
 static void __drop_extent_tree(struct inode *inode, enum extent_type type)
@@ -980,6 +1114,7 @@ static void __drop_extent_tree(struct inode *inode, enum extent_type type)
 void f2fs_drop_extent_tree(struct inode *inode)
 {
 	__drop_extent_tree(inode, EX_READ);
+	__drop_extent_tree(inode, EX_BLOCK_AGE);
 }
 
 static void __destroy_extent_tree(struct inode *inode, enum extent_type type)
@@ -1020,6 +1155,7 @@ static void __destroy_extent_tree(struct inode *inode, enum extent_type type)
 void f2fs_destroy_extent_tree(struct inode *inode)
 {
 	__destroy_extent_tree(inode, EX_READ);
+	__destroy_extent_tree(inode, EX_BLOCK_AGE);
 }
 
 static void __init_extent_tree_info(struct extent_tree_info *eti)
@@ -1037,6 +1173,13 @@ static void __init_extent_tree_info(struct extent_tree_info *eti)
 void f2fs_init_extent_cache_info(struct f2fs_sb_info *sbi)
 {
 	__init_extent_tree_info(&sbi->extent_tree[EX_READ]);
+	__init_extent_tree_info(&sbi->extent_tree[EX_BLOCK_AGE]);
+
+	/* initialize for block age extents */
+	atomic64_set(&sbi->allocated_data_blocks, 0);
+	sbi->hot_data_age_threshold = DEF_HOT_DATA_AGE_THRESHOLD;
+	sbi->warm_data_age_threshold = DEF_WARM_DATA_AGE_THRESHOLD;
+	sbi->last_age_weight = LAST_AGE_WEIGHT;
 }
 
 int __init f2fs_create_extent_cache(void)
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
index 8d7dc76e6..911bea2 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -60,11 +60,12 @@ enum {
 	FAULT_SLAB_ALLOC,
 	FAULT_DQUOT_INIT,
 	FAULT_LOCK_OP,
+	FAULT_BLKADDR,
 	FAULT_MAX,
 };
 
 #ifdef CONFIG_F2FS_FAULT_INJECTION
-#define F2FS_ALL_FAULT_TYPE		((1 << FAULT_MAX) - 1)
+#define F2FS_ALL_FAULT_TYPE		(GENMASK(FAULT_MAX - 1, 0))
 
 struct f2fs_fault_info {
 	atomic_t inject_ops;
@@ -73,7 +74,7 @@ struct f2fs_fault_info {
 };
 
 extern const char *f2fs_fault_name[FAULT_MAX];
-#define IS_FAULT_SET(fi, type) ((fi)->inject_type & (1 << (type)))
+#define IS_FAULT_SET(fi, type) ((fi)->inject_type & BIT(type))
 #endif
 
 /*
@@ -106,6 +107,7 @@ extern const char *f2fs_fault_name[FAULT_MAX];
 #define F2FS_MOUNT_MERGE_CHECKPOINT	0x10000000
 #define	F2FS_MOUNT_GC_MERGE		0x20000000
 #define F2FS_MOUNT_COMPRESS_CACHE	0x40000000
+#define F2FS_MOUNT_AGE_EXTENT_CACHE	0x80000000
 
 #define F2FS_OPTION(sbi)	((sbi)->mount_opt)
 #define clear_opt(sbi, option)	(F2FS_OPTION(sbi).opt &= ~F2FS_MOUNT_##option)
@@ -202,10 +204,6 @@ struct f2fs_mount_info {
 #define __F2FS_HAS_FEATURE(raw_super, mask)				\
 	((raw_super->feature & cpu_to_le32(mask)) != 0)
 #define F2FS_HAS_FEATURE(sbi, mask)	__F2FS_HAS_FEATURE(sbi->raw_super, mask)
-#define F2FS_SET_FEATURE(sbi, mask)					\
-	(sbi->raw_super->feature |= cpu_to_le32(mask))
-#define F2FS_CLEAR_FEATURE(sbi, mask)					\
-	(sbi->raw_super->feature &= ~cpu_to_le32(mask))
 
 /*
  * Default values for user and/or group using reserved blocks
@@ -328,8 +326,12 @@ struct discard_entry {
 	unsigned char discard_map[SIT_VBLOCK_MAP_SIZE];	/* segment discard bitmap */
 };
 
+/* minimum discard granularity, unit: block count */
+#define MIN_DISCARD_GRANULARITY		1
 /* default discard granularity of inner discard thread, unit: block count */
 #define DEFAULT_DISCARD_GRANULARITY		16
+/* default maximum discard granularity of ordered discard, unit: block count */
+#define DEFAULT_MAX_ORDERED_DISCARD_GRANULARITY	16
 
 /* max discard pend list number */
 #define MAX_PLIST_NUM		512
@@ -351,15 +353,7 @@ struct discard_info {
 
 struct discard_cmd {
 	struct rb_node rb_node;		/* rb node located in rb-tree */
-	union {
-		struct {
-			block_t lstart;	/* logical start address */
-			block_t len;	/* length */
-			block_t start;	/* actual start address in dev */
-		};
-		struct discard_info di;	/* discard info */
-
-	};
+	struct discard_info di;		/* discard info */
 	struct list_head list;		/* command list */
 	struct completion wait;		/* compleation */
 	struct block_device *bdev;	/* bdev */
@@ -400,7 +394,6 @@ struct discard_cmd_control {
 	struct list_head wait_list;		/* store on-flushing entries */
 	struct list_head fstrim_list;		/* in-flight discard from fstrim */
 	wait_queue_head_t discard_wait_queue;	/* waiting queue for wake-up */
-	unsigned int discard_wake;		/* to wake up discard thread */
 	struct mutex cmd_lock;
 	unsigned int nr_discards;		/* # of discards in the list */
 	unsigned int max_discards;		/* max. discards to be issued */
@@ -408,7 +401,10 @@ struct discard_cmd_control {
 	unsigned int min_discard_issue_time;	/* min. interval between discard issue */
 	unsigned int mid_discard_issue_time;	/* mid. interval between discard issue */
 	unsigned int max_discard_issue_time;	/* max. interval between discard issue */
+	unsigned int discard_io_aware_gran; /* minimum discard granularity not be aware of I/O */
+	unsigned int discard_urgent_util;	/* utilization which issue discard proactively */
 	unsigned int discard_granularity;	/* discard granularity */
+	unsigned int max_ordered_discard;	/* maximum discard granularity issued by lba order */
 	unsigned int undiscard_blks;		/* # of undiscard blocks */
 	unsigned int next_pos;			/* next discard position */
 	atomic_t issued_discard;		/* # of issued discard */
@@ -416,6 +412,7 @@ struct discard_cmd_control {
 	atomic_t discard_cmd_cnt;		/* # of cached cmd count */
 	struct rb_root_cached root;		/* root of discard rb-tree */
 	bool rbtree_check;			/* config for consistence check */
+	bool discard_wake;			/* to wake up discard thread */
 };
 
 /* for the list of fsync inodes, used only during recovery */
@@ -604,18 +601,25 @@ enum {
 /* number of extent info in extent cache we try to shrink */
 #define READ_EXTENT_CACHE_SHRINK_NUMBER	128
 
+/* number of age extent info in extent cache we try to shrink */
+#define AGE_EXTENT_CACHE_SHRINK_NUMBER	128
+#define LAST_AGE_WEIGHT			30
+#define SAME_AGE_REGION			1024
+
+/*
+ * Define data block with age less than 1GB as hot data
+ * define data block with age less than 10GB but more than 1GB as warm data
+ */
+#define DEF_HOT_DATA_AGE_THRESHOLD	262144
+#define DEF_WARM_DATA_AGE_THRESHOLD	2621440
+
 /* extent cache type */
 enum extent_type {
 	EX_READ,
+	EX_BLOCK_AGE,
 	NR_EXTENT_CACHES,
 };
 
-struct rb_entry {
-	struct rb_node rb_node;		/* rb node located in rb-tree */
-	unsigned int ofs;		/* start offset of the entry */
-	unsigned int len;		/* length of the entry */
-};
-
 struct extent_info {
 	unsigned int fofs;		/* start offset in a file */
 	unsigned int len;		/* length of the extent */
@@ -629,6 +633,13 @@ struct extent_info {
 			unsigned int c_len;
 #endif
 		};
+		/* block age extent_cache */
+		struct {
+			/* block age of the extent */
+			unsigned long long age;
+			/* last total blocks allocated */
+			unsigned long long last_blocks;
+		};
 	};
 };
 
@@ -663,15 +674,13 @@ struct extent_tree_info {
 };
 
 /*
- * This structure is taken from ext4_map_blocks.
- *
- * Note that, however, f2fs uses NEW and MAPPED flags for f2fs_map_blocks().
+ * State of block returned by f2fs_map_blocks.
  */
-#define F2FS_MAP_NEW		(1 << BH_New)
-#define F2FS_MAP_MAPPED		(1 << BH_Mapped)
-#define F2FS_MAP_UNWRITTEN	(1 << BH_Unwritten)
+#define F2FS_MAP_NEW		(1U << 0)
+#define F2FS_MAP_MAPPED		(1U << 1)
+#define F2FS_MAP_DELALLOC	(1U << 2)
 #define F2FS_MAP_FLAGS		(F2FS_MAP_NEW | F2FS_MAP_MAPPED |\
-				F2FS_MAP_UNWRITTEN)
+				F2FS_MAP_DELALLOC)
 
 struct f2fs_map_blocks {
 	struct block_device *m_bdev;	/* for multi-device dio */
@@ -785,6 +794,7 @@ enum {
 	FI_ALIGNED_WRITE,	/* enable aligned write */
 	FI_COW_FILE,		/* indicate COW file */
 	FI_ATOMIC_COMMITTED,	/* indicate atomic commit completed except disk sync */
+	FI_ATOMIC_REPLACE,	/* indicate atomic replace */
 	FI_MAX,			/* max flag, never be used */
 };
 
@@ -833,14 +843,14 @@ struct f2fs_inode_info {
 	kprojid_t i_projid;		/* id for project quota */
 	int i_inline_xattr_size;	/* inline xattr size */
 	struct timespec64 i_crtime;	/* inode creation time */
-	struct timespec64 i_disk_time[4];/* inode disk times */
+	struct timespec64 i_disk_time[3];/* inode disk times */
 
 	/* for file compress */
 	atomic_t i_compr_blocks;		/* # of compressed blocks */
 	unsigned char i_compress_algorithm;	/* algorithm type */
 	unsigned char i_log_cluster_size;	/* log of cluster size */
 	unsigned char i_compress_level;		/* compress level (lz4hc,zstd) */
-	unsigned short i_compress_flag;		/* compress flag */
+	unsigned char i_compress_flag;		/* compress flag */
 	unsigned int i_cluster_size;		/* cluster size */
 
 	unsigned int atomic_write_cnt;
@@ -1039,9 +1049,6 @@ struct f2fs_sm_info {
 	/* a threshold to reclaim prefree segments */
 	unsigned int rec_prefree_segments;
 
-	/* for batched trimming */
-	unsigned int trim_sections;		/* # of sections to trim */
-
 	struct list_head sit_entry_set;	/* sit entry set list */
 
 	unsigned int ipu_policy;	/* in-place-update policy */
@@ -1166,7 +1173,8 @@ enum iostat_type {
 	FS_META_READ_IO,		/* meta read IOs */
 
 	/* other */
-	FS_DISCARD,			/* discard */
+	FS_DISCARD_IO,			/* discard */
+	FS_FLUSH_IO,			/* flush */
 	NR_IO_TYPE,
 };
 
@@ -1183,19 +1191,19 @@ struct f2fs_io_info {
 	struct page *encrypted_page;	/* encrypted page */
 	struct page *compressed_page;	/* compressed page */
 	struct list_head list;		/* serialize IOs */
-	bool submitted;		/* indicate IO submission */
-	int need_lock;		/* indicate we need to lock cp_rwsem */
-	bool in_list;		/* indicate fio is in io_list */
-	bool is_por;		/* indicate IO is from recovery or not */
-	bool retry;		/* need to reallocate block address */
-	int compr_blocks;	/* # of compressed block addresses */
-	bool encrypted;		/* indicate file is encrypted */
-	bool post_read;		/* require post read */
+	unsigned int compr_blocks;	/* # of compressed block addresses */
+	unsigned int need_lock:8;	/* indicate we need to lock cp_rwsem */
+	unsigned int version:8;		/* version of the node */
+	unsigned int submitted:1;	/* indicate IO submission */
+	unsigned int in_list:1;		/* indicate fio is in io_list */
+	unsigned int is_por:1;		/* indicate IO is from recovery or not */
+	unsigned int retry:1;		/* need to reallocate block address */
+	unsigned int encrypted:1;	/* indicate file is encrypted */
+	unsigned int post_read:1;	/* require post read */
 	enum iostat_type io_type;	/* io type */
 	struct writeback_control *io_wbc; /* writeback control */
 	struct bio **bio;		/* bio for ipu */
 	sector_t *last_block;		/* last block number in bio */
-	unsigned char version;		/* version of the node */
 };
 
 struct bio_entry {
@@ -1266,7 +1274,10 @@ struct f2fs_gc_control {
 	unsigned int nr_free_secs;	/* # of free sections to do GC */
 };
 
-/* For s_flag in struct f2fs_sb_info */
+/*
+ * For s_flag in struct f2fs_sb_info
+ * Modification on enum should be synchronized with s_flag array
+ */
 enum {
 	SBI_IS_DIRTY,				/* dirty flag for checkpoint */
 	SBI_IS_CLOSE,				/* specify unmounting */
@@ -1283,6 +1294,8 @@ enum {
 	SBI_QUOTA_NEED_REPAIR,			/* quota file may be corrupted */
 	SBI_IS_RESIZEFS,			/* resizefs is in process */
 	SBI_IS_FREEZING,			/* freezefs is in process */
+	SBI_IS_WRITABLE,			/* remove ro mountoption transiently */
+	MAX_SBI_FLAG,
 };
 
 enum {
@@ -1295,6 +1308,7 @@ enum {
 	MAX_TIME,
 };
 
+/* Note that you need to keep synchronization with this gc_mode_names array */
 enum {
 	GC_NORMAL,
 	GC_IDLE_CB,
@@ -1356,8 +1370,6 @@ enum {
 	MEMORY_MODE_LOW,	/* memory mode for low memry devices */
 };
 
-
-
 static inline int f2fs_test_bit(unsigned int nr, char *addr);
 static inline void f2fs_set_bit(unsigned int nr, char *addr);
 static inline void f2fs_clear_bit(unsigned int nr, char *addr);
@@ -1368,19 +1380,17 @@ static inline void f2fs_clear_bit(unsigned int nr, char *addr);
  * Layout A: lowest bit should be 1
  * | bit0 = 1 | bit1 | bit2 | ... | bit MAX | private data .... |
  * bit 0	PAGE_PRIVATE_NOT_POINTER
- * bit 1	PAGE_PRIVATE_ATOMIC_WRITE
- * bit 2	PAGE_PRIVATE_DUMMY_WRITE
- * bit 3	PAGE_PRIVATE_ONGOING_MIGRATION
- * bit 4	PAGE_PRIVATE_INLINE_INODE
- * bit 5	PAGE_PRIVATE_REF_RESOURCE
- * bit 6-	f2fs private data
+ * bit 1	PAGE_PRIVATE_DUMMY_WRITE
+ * bit 2	PAGE_PRIVATE_ONGOING_MIGRATION
+ * bit 3	PAGE_PRIVATE_INLINE_INODE
+ * bit 4	PAGE_PRIVATE_REF_RESOURCE
+ * bit 5-	f2fs private data
  *
  * Layout B: lowest bit should be 0
  * page.private is a wrapped pointer.
  */
 enum {
 	PAGE_PRIVATE_NOT_POINTER,		/* private contains non-pointer data */
-	PAGE_PRIVATE_ATOMIC_WRITE,		/* data page from atomic write path */
 	PAGE_PRIVATE_DUMMY_WRITE,		/* data page for padding aligned IO */
 	PAGE_PRIVATE_ONGOING_MIGRATION,		/* data page which is on-going migrating */
 	PAGE_PRIVATE_INLINE_INODE,		/* inode page contains inline data */
@@ -1388,90 +1398,6 @@ enum {
 	PAGE_PRIVATE_MAX
 };
 
-#define PAGE_PRIVATE_GET_FUNC(name, flagname) \
-static inline bool page_private_##name(struct page *page) \
-{ \
-	return PagePrivate(page) && \
-		test_bit(PAGE_PRIVATE_NOT_POINTER, &page_private(page)) && \
-		test_bit(PAGE_PRIVATE_##flagname, &page_private(page)); \
-}
-
-#define PAGE_PRIVATE_SET_FUNC(name, flagname) \
-static inline void set_page_private_##name(struct page *page) \
-{ \
-	if (!PagePrivate(page)) { \
-		get_page(page); \
-		SetPagePrivate(page); \
-		set_page_private(page, 0); \
-	} \
-	set_bit(PAGE_PRIVATE_NOT_POINTER, &page_private(page)); \
-	set_bit(PAGE_PRIVATE_##flagname, &page_private(page)); \
-}
-
-#define PAGE_PRIVATE_CLEAR_FUNC(name, flagname) \
-static inline void clear_page_private_##name(struct page *page) \
-{ \
-	clear_bit(PAGE_PRIVATE_##flagname, &page_private(page)); \
-	if (page_private(page) == 1 << PAGE_PRIVATE_NOT_POINTER) { \
-		set_page_private(page, 0); \
-		if (PagePrivate(page)) { \
-			ClearPagePrivate(page); \
-			put_page(page); \
-		}\
-	} \
-}
-
-PAGE_PRIVATE_GET_FUNC(nonpointer, NOT_POINTER);
-PAGE_PRIVATE_GET_FUNC(reference, REF_RESOURCE);
-PAGE_PRIVATE_GET_FUNC(inline, INLINE_INODE);
-PAGE_PRIVATE_GET_FUNC(gcing, ONGOING_MIGRATION);
-PAGE_PRIVATE_GET_FUNC(atomic, ATOMIC_WRITE);
-PAGE_PRIVATE_GET_FUNC(dummy, DUMMY_WRITE);
-
-PAGE_PRIVATE_SET_FUNC(reference, REF_RESOURCE);
-PAGE_PRIVATE_SET_FUNC(inline, INLINE_INODE);
-PAGE_PRIVATE_SET_FUNC(gcing, ONGOING_MIGRATION);
-PAGE_PRIVATE_SET_FUNC(atomic, ATOMIC_WRITE);
-PAGE_PRIVATE_SET_FUNC(dummy, DUMMY_WRITE);
-
-PAGE_PRIVATE_CLEAR_FUNC(reference, REF_RESOURCE);
-PAGE_PRIVATE_CLEAR_FUNC(inline, INLINE_INODE);
-PAGE_PRIVATE_CLEAR_FUNC(gcing, ONGOING_MIGRATION);
-PAGE_PRIVATE_CLEAR_FUNC(atomic, ATOMIC_WRITE);
-PAGE_PRIVATE_CLEAR_FUNC(dummy, DUMMY_WRITE);
-
-static inline unsigned long get_page_private_data(struct page *page)
-{
-	unsigned long data = page_private(page);
-
-	if (!test_bit(PAGE_PRIVATE_NOT_POINTER, &data))
-		return 0;
-	return data >> PAGE_PRIVATE_MAX;
-}
-
-static inline void set_page_private_data(struct page *page, unsigned long data)
-{
-	if (!PagePrivate(page)) {
-		get_page(page);
-		SetPagePrivate(page);
-		set_page_private(page, 0);
-	}
-	set_bit(PAGE_PRIVATE_NOT_POINTER, &page_private(page));
-	page_private(page) |= data << PAGE_PRIVATE_MAX;
-}
-
-static inline void clear_page_private_data(struct page *page)
-{
-	page_private(page) &= (1 << PAGE_PRIVATE_MAX) - 1;
-	if (page_private(page) == 1 << PAGE_PRIVATE_NOT_POINTER) {
-		set_page_private(page, 0);
-		if (PagePrivate(page)) {
-			ClearPagePrivate(page);
-			put_page(page);
-		}
-	}
-}
-
 /* For compression */
 enum compress_algorithm_type {
 	COMPRESS_LZO,
@@ -1597,7 +1523,6 @@ struct f2fs_sb_info {
 
 #ifdef CONFIG_BLK_DEV_ZONED
 	unsigned int blocks_per_blkz;		/* F2FS blocks per zone */
-	unsigned int log_blocks_per_blkz;	/* log2 F2FS blocks per zone */
 #endif
 
 	/* for node-related operations */
@@ -1646,6 +1571,12 @@ struct f2fs_sb_info {
 
 	/* for extent tree cache */
 	struct extent_tree_info extent_tree[NR_EXTENT_CACHES];
+	atomic64_t allocated_data_blocks;	/* for block age extent_cache */
+
+	/* The threshold used for hot and warm data seperation*/
+	unsigned int hot_data_age_threshold;
+	unsigned int warm_data_age_threshold;
+	unsigned int last_age_weight;
 
 	/* basic filesystem units */
 	unsigned int log_sectors_per_block;	/* log2 sectors per block */
@@ -1663,7 +1594,7 @@ struct f2fs_sb_info {
 	unsigned int total_node_count;		/* total node block count */
 	unsigned int total_valid_node_count;	/* valid node block count */
 	int dir_level;				/* directory level */
-	int readdir_ra;				/* readahead inode in readdir */
+	bool readdir_ra;			/* readahead inode in readdir */
 	u64 max_io_bytes;			/* max io bytes to merge IOs */
 
 	block_t user_block_count;		/* # of user blocks */
@@ -1704,8 +1635,9 @@ struct f2fs_sb_info {
 	unsigned int cur_victim_sec;		/* current victim section num */
 	unsigned int gc_mode;			/* current GC state */
 	unsigned int next_victim_seg[2];	/* next segment in victim section */
-	spinlock_t gc_urgent_high_lock;
-	unsigned int gc_urgent_high_remaining;	/* remaining trial count for GC_URGENT_HIGH */
+	spinlock_t gc_remaining_trials_lock;
+	/* remaining trial count for GC_URGENT_* and GC_IDLE_* */
+	unsigned int gc_remaining_trials;
 
 	/* for skip statistic */
 	unsigned long long skipped_gc_rwsem;		/* FG_GC only */
@@ -1830,8 +1762,9 @@ struct f2fs_sb_info {
 #ifdef CONFIG_F2FS_IOSTAT
 	/* For app/fs IO statistics */
 	spinlock_t iostat_lock;
-	unsigned long long rw_iostat[NR_IO_TYPE];
-	unsigned long long prev_rw_iostat[NR_IO_TYPE];
+	unsigned long long iostat_count[NR_IO_TYPE];
+	unsigned long long iostat_bytes[NR_IO_TYPE];
+	unsigned long long prev_iostat_bytes[NR_IO_TYPE];
 	bool iostat_enable;
 	unsigned long iostat_next_period;
 	unsigned int iostat_period_ms;
@@ -1843,12 +1776,10 @@ struct f2fs_sb_info {
 };
 
 #ifdef CONFIG_F2FS_FAULT_INJECTION
-#define f2fs_show_injection_info(sbi, type)					\
-	printk_ratelimited("%sF2FS-fs (%s) : inject %s in %s of %pS\n",	\
-		KERN_INFO, sbi->sb->s_id,				\
-		f2fs_fault_name[type],					\
-		__func__, __builtin_return_address(0))
-static inline bool time_to_inject(struct f2fs_sb_info *sbi, int type)
+#define time_to_inject(sbi, type) __time_to_inject(sbi, type, __func__,	\
+									__builtin_return_address(0))
+static inline bool __time_to_inject(struct f2fs_sb_info *sbi, int type,
+				const char *func, const char *parent_func)
 {
 	struct f2fs_fault_info *ffi = &F2FS_OPTION(sbi).fault_info;
 
@@ -1861,12 +1792,14 @@ static inline bool time_to_inject(struct f2fs_sb_info *sbi, int type)
 	atomic_inc(&ffi->inject_ops);
 	if (atomic_read(&ffi->inject_ops) >= ffi->inject_rate) {
 		atomic_set(&ffi->inject_ops, 0);
+		printk_ratelimited("%sF2FS-fs (%s) : inject %s in %s of %pS\n",
+			KERN_INFO, sbi->sb->s_id, f2fs_fault_name[type],
+			func, parent_func);
 		return true;
 	}
 	return false;
 }
 #else
-#define f2fs_show_injection_info(sbi, type) do { } while (0)
 static inline bool time_to_inject(struct f2fs_sb_info *sbi, int type)
 {
 	return false;
@@ -2199,10 +2132,8 @@ static inline void f2fs_lock_op(struct f2fs_sb_info *sbi)
 
 static inline int f2fs_trylock_op(struct f2fs_sb_info *sbi)
 {
-	if (time_to_inject(sbi, FAULT_LOCK_OP)) {
-		f2fs_show_injection_info(sbi, FAULT_LOCK_OP);
+	if (time_to_inject(sbi, FAULT_LOCK_OP))
 		return 0;
-	}
 	return f2fs_down_read_trylock(&sbi->cp_rwsem);
 }
 
@@ -2290,7 +2221,6 @@ static inline int inc_valid_block_count(struct f2fs_sb_info *sbi,
 		return ret;
 
 	if (time_to_inject(sbi, FAULT_BLOCK)) {
-		f2fs_show_injection_info(sbi, FAULT_BLOCK);
 		release = *count;
 		goto release_quota;
 	}
@@ -2361,6 +2291,80 @@ void f2fs_printk(struct f2fs_sb_info *sbi, const char *fmt, ...);
 #define f2fs_debug(sbi, fmt, ...)					\
 	f2fs_printk(sbi, KERN_DEBUG fmt, ##__VA_ARGS__)
 
+#define PAGE_PRIVATE_GET_FUNC(name, flagname) \
+static inline bool page_private_##name(struct page *page) \
+{ \
+	return PagePrivate(page) && \
+		test_bit(PAGE_PRIVATE_NOT_POINTER, &page_private(page)) && \
+		test_bit(PAGE_PRIVATE_##flagname, &page_private(page)); \
+}
+
+#define PAGE_PRIVATE_SET_FUNC(name, flagname) \
+static inline void set_page_private_##name(struct page *page) \
+{ \
+	if (!PagePrivate(page)) \
+		attach_page_private(page, (void *)0); \
+	set_bit(PAGE_PRIVATE_NOT_POINTER, &page_private(page)); \
+	set_bit(PAGE_PRIVATE_##flagname, &page_private(page)); \
+}
+
+#define PAGE_PRIVATE_CLEAR_FUNC(name, flagname) \
+static inline void clear_page_private_##name(struct page *page) \
+{ \
+	clear_bit(PAGE_PRIVATE_##flagname, &page_private(page)); \
+	if (page_private(page) == BIT(PAGE_PRIVATE_NOT_POINTER)) \
+		detach_page_private(page); \
+}
+
+PAGE_PRIVATE_GET_FUNC(nonpointer, NOT_POINTER);
+PAGE_PRIVATE_GET_FUNC(inline, INLINE_INODE);
+PAGE_PRIVATE_GET_FUNC(gcing, ONGOING_MIGRATION);
+PAGE_PRIVATE_GET_FUNC(dummy, DUMMY_WRITE);
+
+PAGE_PRIVATE_SET_FUNC(reference, REF_RESOURCE);
+PAGE_PRIVATE_SET_FUNC(inline, INLINE_INODE);
+PAGE_PRIVATE_SET_FUNC(gcing, ONGOING_MIGRATION);
+PAGE_PRIVATE_SET_FUNC(dummy, DUMMY_WRITE);
+
+PAGE_PRIVATE_CLEAR_FUNC(reference, REF_RESOURCE);
+PAGE_PRIVATE_CLEAR_FUNC(inline, INLINE_INODE);
+PAGE_PRIVATE_CLEAR_FUNC(gcing, ONGOING_MIGRATION);
+PAGE_PRIVATE_CLEAR_FUNC(dummy, DUMMY_WRITE);
+
+static inline unsigned long get_page_private_data(struct page *page)
+{
+	unsigned long data = page_private(page);
+
+	if (!test_bit(PAGE_PRIVATE_NOT_POINTER, &data))
+		return 0;
+	return data >> PAGE_PRIVATE_MAX;
+}
+
+static inline void set_page_private_data(struct page *page, unsigned long data)
+{
+	if (!PagePrivate(page))
+		attach_page_private(page, (void *)0);
+	set_bit(PAGE_PRIVATE_NOT_POINTER, &page_private(page));
+	page_private(page) |= data << PAGE_PRIVATE_MAX;
+}
+
+static inline void clear_page_private_data(struct page *page)
+{
+	page_private(page) &= GENMASK(PAGE_PRIVATE_MAX - 1, 0);
+	if (page_private(page) == BIT(PAGE_PRIVATE_NOT_POINTER))
+		detach_page_private(page);
+}
+
+static inline void clear_page_private_all(struct page *page)
+{
+	clear_page_private_data(page);
+	clear_page_private_reference(page);
+	clear_page_private_gcing(page);
+	clear_page_private_inline(page);
+
+	f2fs_bug_on(F2FS_P_SB(page), page_private(page));
+}
+
 static inline void dec_valid_block_count(struct f2fs_sb_info *sbi,
 						struct inode *inode,
 						block_t count)
@@ -2570,10 +2574,8 @@ static inline int inc_valid_node_count(struct f2fs_sb_info *sbi,
 			return err;
 	}
 
-	if (time_to_inject(sbi, FAULT_BLOCK)) {
-		f2fs_show_injection_info(sbi, FAULT_BLOCK);
+	if (time_to_inject(sbi, FAULT_BLOCK))
 		goto enospc;
-	}
 
 	spin_lock(&sbi->stat_lock);
 
@@ -2697,11 +2699,8 @@ static inline struct page *f2fs_grab_cache_page(struct address_space *mapping,
 		if (page)
 			return page;
 
-		if (time_to_inject(F2FS_M_SB(mapping), FAULT_PAGE_ALLOC)) {
-			f2fs_show_injection_info(F2FS_M_SB(mapping),
-							FAULT_PAGE_ALLOC);
+		if (time_to_inject(F2FS_M_SB(mapping), FAULT_PAGE_ALLOC))
 			return NULL;
-		}
 	}
 
 	if (!for_write)
@@ -2718,10 +2717,8 @@ static inline struct page *f2fs_pagecache_get_page(
 				struct address_space *mapping, pgoff_t index,
 				int fgp_flags, gfp_t gfp_mask)
 {
-	if (time_to_inject(F2FS_M_SB(mapping), FAULT_PAGE_GET)) {
-		f2fs_show_injection_info(F2FS_M_SB(mapping), FAULT_PAGE_GET);
+	if (time_to_inject(F2FS_M_SB(mapping), FAULT_PAGE_GET))
 		return NULL;
-	}
 
 	return pagecache_get_page(mapping, index, fgp_flags, gfp_mask);
 }
@@ -2771,10 +2768,8 @@ static inline void *f2fs_kmem_cache_alloc(struct kmem_cache *cachep,
 	if (nofail)
 		return f2fs_kmem_cache_alloc_nofail(cachep, flags);
 
-	if (time_to_inject(sbi, FAULT_SLAB_ALLOC)) {
-		f2fs_show_injection_info(sbi, FAULT_SLAB_ALLOC);
+	if (time_to_inject(sbi, FAULT_SLAB_ALLOC))
 		return NULL;
-	}
 
 	return kmem_cache_alloc(cachep, flags);
 }
@@ -2876,7 +2871,7 @@ static inline int f2fs_test_bit(unsigned int nr, char *addr)
 	int mask;
 
 	addr += (nr >> 3);
-	mask = 1 << (7 - (nr & 0x07));
+	mask = BIT(7 - (nr & 0x07));
 	return mask & *addr;
 }
 
@@ -2885,7 +2880,7 @@ static inline void f2fs_set_bit(unsigned int nr, char *addr)
 	int mask;
 
 	addr += (nr >> 3);
-	mask = 1 << (7 - (nr & 0x07));
+	mask = BIT(7 - (nr & 0x07));
 	*addr |= mask;
 }
 
@@ -2894,7 +2889,7 @@ static inline void f2fs_clear_bit(unsigned int nr, char *addr)
 	int mask;
 
 	addr += (nr >> 3);
-	mask = 1 << (7 - (nr & 0x07));
+	mask = BIT(7 - (nr & 0x07));
 	*addr &= ~mask;
 }
 
@@ -2904,7 +2899,7 @@ static inline int f2fs_test_and_set_bit(unsigned int nr, char *addr)
 	int ret;
 
 	addr += (nr >> 3);
-	mask = 1 << (7 - (nr & 0x07));
+	mask = BIT(7 - (nr & 0x07));
 	ret = mask & *addr;
 	*addr |= mask;
 	return ret;
@@ -2916,7 +2911,7 @@ static inline int f2fs_test_and_clear_bit(unsigned int nr, char *addr)
 	int ret;
 
 	addr += (nr >> 3);
-	mask = 1 << (7 - (nr & 0x07));
+	mask = BIT(7 - (nr & 0x07));
 	ret = mask & *addr;
 	*addr &= ~mask;
 	return ret;
@@ -2927,7 +2922,7 @@ static inline void f2fs_change_bit(unsigned int nr, char *addr)
 	int mask;
 
 	addr += (nr >> 3);
-	mask = 1 << (7 - (nr & 0x07));
+	mask = BIT(7 - (nr & 0x07));
 	*addr ^= mask;
 }
 
@@ -3291,9 +3286,6 @@ static inline bool f2fs_is_time_consistent(struct inode *inode)
 		return false;
 	if (!timespec64_equal(F2FS_I(inode)->i_disk_time + 2, &inode->i_mtime))
 		return false;
-	if (!timespec64_equal(F2FS_I(inode)->i_disk_time + 3,
-						&F2FS_I(inode)->i_crtime))
-		return false;
 	return true;
 }
 
@@ -3348,14 +3340,25 @@ static inline bool is_dot_dotdot(const u8 *name, size_t len)
 static inline void *f2fs_kmalloc(struct f2fs_sb_info *sbi,
 					size_t size, gfp_t flags)
 {
-	if (time_to_inject(sbi, FAULT_KMALLOC)) {
-		f2fs_show_injection_info(sbi, FAULT_KMALLOC);
+	if (time_to_inject(sbi, FAULT_KMALLOC))
 		return NULL;
-	}
 
 	return kmalloc(size, flags);
 }
 
+static inline void *f2fs_getname(struct f2fs_sb_info *sbi)
+{
+	if (time_to_inject(sbi, FAULT_KMALLOC))
+		return NULL;
+
+	return __getname();
+}
+
+static inline void f2fs_putname(char *buf)
+{
+	__putname(buf);
+}
+
 static inline void *f2fs_kzalloc(struct f2fs_sb_info *sbi,
 					size_t size, gfp_t flags)
 {
@@ -3365,10 +3368,8 @@ static inline void *f2fs_kzalloc(struct f2fs_sb_info *sbi,
 static inline void *f2fs_kvmalloc(struct f2fs_sb_info *sbi,
 					size_t size, gfp_t flags)
 {
-	if (time_to_inject(sbi, FAULT_KVMALLOC)) {
-		f2fs_show_injection_info(sbi, FAULT_KVMALLOC);
+	if (time_to_inject(sbi, FAULT_KVMALLOC))
 		return NULL;
-	}
 
 	return kvmalloc(size, flags);
 }
@@ -3477,7 +3478,6 @@ int f2fs_get_tmpfile(struct user_namespace *mnt_userns, struct inode *dir,
 /*
  * dir.c
  */
-unsigned char f2fs_get_de_type(struct f2fs_dir_entry *de);
 int f2fs_init_casefolded_name(const struct inode *dir,
 			      struct f2fs_filename *fname);
 int f2fs_setup_filename(struct inode *dir, const struct qstr *iname,
@@ -3726,7 +3726,6 @@ void f2fs_set_dirty_device(struct f2fs_sb_info *sbi, nid_t ino,
 					unsigned int devidx, int type);
 bool f2fs_is_dirty_device(struct f2fs_sb_info *sbi, nid_t ino,
 					unsigned int devidx, int type);
-int f2fs_sync_inode_meta(struct f2fs_sb_info *sbi);
 int f2fs_acquire_orphan_inode(struct f2fs_sb_info *sbi);
 void f2fs_release_orphan_inode(struct f2fs_sb_info *sbi);
 void f2fs_add_orphan_inode(struct inode *inode);
@@ -3755,8 +3754,8 @@ int __init f2fs_init_bioset(void);
 void f2fs_destroy_bioset(void);
 int f2fs_init_bio_entry_cache(void);
 void f2fs_destroy_bio_entry_cache(void);
-void f2fs_submit_bio(struct f2fs_sb_info *sbi,
-				struct bio *bio, enum page_type type);
+void f2fs_submit_read_bio(struct f2fs_sb_info *sbi, struct bio *bio,
+			  enum page_type type);
 int f2fs_init_write_merge_io(struct f2fs_sb_info *sbi);
 void f2fs_submit_merged_write(struct f2fs_sb_info *sbi, enum page_type type);
 void f2fs_submit_merged_write_cond(struct f2fs_sb_info *sbi,
@@ -3775,19 +3774,18 @@ void f2fs_set_data_blkaddr(struct dnode_of_data *dn);
 void f2fs_update_data_blkaddr(struct dnode_of_data *dn, block_t blkaddr);
 int f2fs_reserve_new_blocks(struct dnode_of_data *dn, blkcnt_t count);
 int f2fs_reserve_new_block(struct dnode_of_data *dn);
-int f2fs_get_block(struct dnode_of_data *dn, pgoff_t index);
+int f2fs_get_block_locked(struct dnode_of_data *dn, pgoff_t index);
 int f2fs_reserve_block(struct dnode_of_data *dn, pgoff_t index);
 struct page *f2fs_get_read_data_page(struct inode *inode, pgoff_t index,
-			blk_opf_t op_flags, bool for_write);
-struct page *f2fs_find_data_page(struct inode *inode, pgoff_t index);
+			blk_opf_t op_flags, bool for_write, pgoff_t *next_pgofs);
+struct page *f2fs_find_data_page(struct inode *inode, pgoff_t index,
+							pgoff_t *next_pgofs);
 struct page *f2fs_get_lock_data_page(struct inode *inode, pgoff_t index,
 			bool for_write);
 struct page *f2fs_get_new_data_page(struct inode *inode,
 			struct page *ipage, pgoff_t index, bool new_i_size);
 int f2fs_do_write_data_page(struct f2fs_io_info *fio);
-void f2fs_do_map_lock(struct f2fs_sb_info *sbi, int flag, bool lock);
-int f2fs_map_blocks(struct inode *inode, struct f2fs_map_blocks *map,
-			int create, int flag);
+int f2fs_map_blocks(struct inode *inode, struct f2fs_map_blocks *map, int flag);
 int f2fs_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
 			u64 start, u64 len);
 int f2fs_encrypt_one_page(struct f2fs_io_info *fio);
@@ -3820,6 +3818,10 @@ void f2fs_build_gc_manager(struct f2fs_sb_info *sbi);
 int f2fs_resize_fs(struct f2fs_sb_info *sbi, __u64 block_count);
 int __init f2fs_create_garbage_collection_cache(void);
 void f2fs_destroy_garbage_collection_cache(void);
+/* victim selection function for cleaning and SSR */
+int f2fs_get_victim(struct f2fs_sb_info *sbi, unsigned int *result,
+			int gc_type, int type, char alloc_mode,
+			unsigned long long age);
 
 /*
  * recovery.c
@@ -3849,6 +3851,8 @@ struct f2fs_stat_info {
 	unsigned long long ext_mem[NR_EXTENT_CACHES];
 	/* for read extent cache */
 	unsigned long long hit_largest;
+	/* for block age extent cache */
+	unsigned long long allocated_data_blocks;
 	int ndirty_node, ndirty_dent, ndirty_meta, ndirty_imeta;
 	int ndirty_data, ndirty_qdata;
 	unsigned int ndirty_dirs, ndirty_files, nquota_files, ndirty_all;
@@ -4126,19 +4130,6 @@ void f2fs_leave_shrinker(struct f2fs_sb_info *sbi);
  * extent_cache.c
  */
 bool sanity_check_extent_cache(struct inode *inode);
-struct rb_entry *f2fs_lookup_rb_tree(struct rb_root_cached *root,
-				struct rb_entry *cached_re, unsigned int ofs);
-struct rb_node **f2fs_lookup_rb_tree_for_insert(struct f2fs_sb_info *sbi,
-				struct rb_root_cached *root,
-				struct rb_node **parent,
-				unsigned int ofs, bool *leftmost);
-struct rb_entry *f2fs_lookup_rb_tree_ret(struct rb_root_cached *root,
-		struct rb_entry *cached_re, unsigned int ofs,
-		struct rb_entry **prev_entry, struct rb_entry **next_entry,
-		struct rb_node ***insert_p, struct rb_node **insert_parent,
-		bool force, bool *leftmost);
-bool f2fs_check_rb_tree_consistence(struct f2fs_sb_info *sbi,
-				struct rb_root_cached *root);
 void f2fs_init_extent_tree(struct inode *inode);
 void f2fs_drop_extent_tree(struct inode *inode);
 void f2fs_destroy_extent_node(struct inode *inode);
@@ -4151,12 +4142,24 @@ void f2fs_destroy_extent_cache(void);
 void f2fs_init_read_extent_tree(struct inode *inode, struct page *ipage);
 bool f2fs_lookup_read_extent_cache(struct inode *inode, pgoff_t pgofs,
 			struct extent_info *ei);
+bool f2fs_lookup_read_extent_cache_block(struct inode *inode, pgoff_t index,
+			block_t *blkaddr);
 void f2fs_update_read_extent_cache(struct dnode_of_data *dn);
 void f2fs_update_read_extent_cache_range(struct dnode_of_data *dn,
 			pgoff_t fofs, block_t blkaddr, unsigned int len);
 unsigned int f2fs_shrink_read_extent_tree(struct f2fs_sb_info *sbi,
 			int nr_shrink);
 
+/* block age extent cache ops */
+void f2fs_init_age_extent_tree(struct inode *inode);
+bool f2fs_lookup_age_extent_cache(struct inode *inode, pgoff_t pgofs,
+			struct extent_info *ei);
+void f2fs_update_age_extent_cache(struct dnode_of_data *dn);
+void f2fs_update_age_extent_cache_range(struct dnode_of_data *dn,
+			pgoff_t fofs, unsigned int len);
+unsigned int f2fs_shrink_age_extent_tree(struct f2fs_sb_info *sbi,
+			int nr_shrink);
+
 /*
  * sysfs.c
  */
@@ -4210,7 +4213,7 @@ bool f2fs_compress_write_end(struct inode *inode, void *fsdata,
 int f2fs_truncate_partial_cluster(struct inode *inode, u64 from, bool lock);
 void f2fs_compress_write_end_io(struct bio *bio, struct page *page);
 bool f2fs_is_compress_backend_ready(struct inode *inode);
-int f2fs_init_compress_mempool(void);
+int __init f2fs_init_compress_mempool(void);
 void f2fs_destroy_compress_mempool(void);
 void f2fs_decompress_cluster(struct decompress_io_ctx *dic, bool in_task);
 void f2fs_end_read_compressed_page(struct page *page, bool failed,
@@ -4279,7 +4282,7 @@ static inline struct page *f2fs_compress_control_page(struct page *page)
 	WARN_ON_ONCE(1);
 	return ERR_PTR(-EINVAL);
 }
-static inline int f2fs_init_compress_mempool(void) { return 0; }
+static inline int __init f2fs_init_compress_mempool(void) { return 0; }
 static inline void f2fs_destroy_compress_mempool(void) { }
 static inline void f2fs_decompress_cluster(struct decompress_io_ctx *dic,
 				bool in_task) { }
@@ -4326,15 +4329,14 @@ static inline int set_compress_context(struct inode *inode)
 			F2FS_OPTION(sbi).compress_log_size;
 	F2FS_I(inode)->i_compress_flag =
 			F2FS_OPTION(sbi).compress_chksum ?
-				1 << COMPRESS_CHKSUM : 0;
+				BIT(COMPRESS_CHKSUM) : 0;
 	F2FS_I(inode)->i_cluster_size =
-			1 << F2FS_I(inode)->i_log_cluster_size;
+			BIT(F2FS_I(inode)->i_log_cluster_size);
 	if ((F2FS_I(inode)->i_compress_algorithm == COMPRESS_LZ4 ||
 		F2FS_I(inode)->i_compress_algorithm == COMPRESS_ZSTD) &&
 			F2FS_OPTION(sbi).compress_level)
-		F2FS_I(inode)->i_compress_flag |=
-				F2FS_OPTION(sbi).compress_level <<
-				COMPRESS_LEVEL_OFFSET;
+		F2FS_I(inode)->i_compress_level =
+				F2FS_OPTION(sbi).compress_level;
 	F2FS_I(inode)->i_flags |= F2FS_COMPR_FL;
 	set_inode_flag(inode, FI_COMPRESSED_FILE);
 	stat_inc_compr_inode(inode);
@@ -4363,7 +4365,7 @@ static inline bool f2fs_disable_compressed_file(struct inode *inode)
 }
 
 #define F2FS_FEATURE_FUNCS(name, flagname) \
-static inline int f2fs_sb_has_##name(struct f2fs_sb_info *sbi) \
+static inline bool f2fs_sb_has_##name(struct f2fs_sb_info *sbi) \
 { \
 	return F2FS_HAS_FEATURE(sbi, F2FS_FEATURE_##flagname); \
 }
@@ -4387,7 +4389,7 @@ F2FS_FEATURE_FUNCS(readonly, RO);
 static inline bool f2fs_blkz_is_seq(struct f2fs_sb_info *sbi, int devi,
 				    block_t blkaddr)
 {
-	unsigned int zno = blkaddr >> sbi->log_blocks_per_blkz;
+	unsigned int zno = blkaddr / sbi->blocks_per_blkz;
 
 	return test_bit(zno, FDEV(devi).blkz_seq);
 }
@@ -4540,6 +4542,11 @@ static inline void f2fs_handle_page_eio(struct f2fs_sb_info *sbi, pgoff_t ofs,
 	}
 }
 
+static inline bool f2fs_is_readonly(struct f2fs_sb_info *sbi)
+{
+	return f2fs_sb_has_readonly(sbi) || f2fs_readonly(sbi->sb);
+}
+
 #define EFSBADCRC	EBADMSG		/* Bad CRC detected */
 #define EFSCORRUPTED	EUCLEAN		/* Filesystem is corrupted */
 
diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
index dbad2db..1b7a3de 100644
--- a/fs/f2fs/file.c
+++ b/fs/f2fs/file.c
@@ -113,10 +113,8 @@ static vm_fault_t f2fs_vm_page_mkwrite(struct vm_fault *vmf)
 
 	if (need_alloc) {
 		/* block allocation */
-		f2fs_do_map_lock(sbi, F2FS_GET_BLOCK_PRE_AIO, true);
 		set_new_dnode(&dn, inode, NULL, NULL, 0);
-		err = f2fs_get_block(&dn, page->index);
-		f2fs_do_map_lock(sbi, F2FS_GET_BLOCK_PRE_AIO, false);
+		err = f2fs_get_block_locked(&dn, page->index);
 	}
 
 #ifdef CONFIG_F2FS_FS_COMPRESSION
@@ -305,7 +303,7 @@ static int f2fs_do_sync_file(struct file *file, loff_t start, loff_t end,
 		 * for OPU case, during fsync(), node can be persisted before
 		 * data when lower device doesn't support write barrier, result
 		 * in data corruption after SPO.
-		 * So for strict fsync mode, force to use atomic write sematics
+		 * So for strict fsync mode, force to use atomic write semantics
 		 * to keep write order in between data/node and last node to
 		 * avoid potential data corruption.
 		 */
@@ -571,7 +569,7 @@ void f2fs_truncate_data_blocks_range(struct dnode_of_data *dn, int count)
 	raw_node = F2FS_NODE(dn->node_page);
 	addr = blkaddr_in_node(raw_node) + base + ofs;
 
-	/* Assumption: truncateion starts with cluster */
+	/* Assumption: truncation starts with cluster */
 	for (; count > 0; count--, addr++, dn->ofs_in_node++, cluster_index++) {
 		block_t blkaddr = le32_to_cpu(*addr);
 
@@ -619,6 +617,7 @@ void f2fs_truncate_data_blocks_range(struct dnode_of_data *dn, int count)
 		fofs = f2fs_start_bidx_of_node(ofs_of_node(dn->node_page),
 							dn->inode) + ofs;
 		f2fs_update_read_extent_cache_range(dn, fofs, 0, len);
+		f2fs_update_age_extent_cache_range(dn, fofs, len);
 		dec_valid_block_count(sbi, dn->inode, nr_free);
 	}
 	dn->ofs_in_node = ofs;
@@ -783,10 +782,8 @@ int f2fs_truncate(struct inode *inode)
 
 	trace_f2fs_truncate(inode);
 
-	if (time_to_inject(F2FS_I_SB(inode), FAULT_TRUNCATE)) {
-		f2fs_show_injection_info(F2FS_I_SB(inode), FAULT_TRUNCATE);
+	if (time_to_inject(F2FS_I_SB(inode), FAULT_TRUNCATE))
 		return -EIO;
-	}
 
 	err = f2fs_dquot_initialize(inode);
 	if (err)
@@ -1111,7 +1108,7 @@ int f2fs_truncate_hole(struct inode *inode, pgoff_t pg_start, pgoff_t pg_end)
 	return 0;
 }
 
-static int punch_hole(struct inode *inode, loff_t offset, loff_t len)
+static int f2fs_punch_hole(struct inode *inode, loff_t offset, loff_t len)
 {
 	pgoff_t pg_start, pg_end;
 	loff_t off_start, off_end;
@@ -1497,6 +1494,7 @@ static int f2fs_do_zero_range(struct dnode_of_data *dn, pgoff_t start,
 	}
 
 	f2fs_update_read_extent_cache_range(dn, start, 0, index - start);
+	f2fs_update_age_extent_cache_range(dn, start, index - start);
 
 	return ret;
 }
@@ -1683,7 +1681,7 @@ static int f2fs_insert_range(struct inode *inode, loff_t offset, loff_t len)
 	return ret;
 }
 
-static int expand_inode_data(struct inode *inode, loff_t offset,
+static int f2fs_expand_inode_data(struct inode *inode, loff_t offset,
 					loff_t len, int mode)
 {
 	struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
@@ -1696,7 +1694,7 @@ static int expand_inode_data(struct inode *inode, loff_t offset,
 			.err_gc_skipped = true,
 			.nr_free_secs = 0 };
 	pgoff_t pg_start, pg_end;
-	loff_t new_size = i_size_read(inode);
+	loff_t new_size;
 	loff_t off_end;
 	block_t expanded = 0;
 	int err;
@@ -1744,7 +1742,7 @@ static int expand_inode_data(struct inode *inode, loff_t offset,
 		f2fs_unlock_op(sbi);
 
 		map.m_seg_type = CURSEG_COLD_DATA_PINNED;
-		err = f2fs_map_blocks(inode, &map, 1, F2FS_GET_BLOCK_PRE_DIO);
+		err = f2fs_map_blocks(inode, &map, F2FS_GET_BLOCK_PRE_DIO);
 		file_dont_truncate(inode);
 
 		f2fs_up_write(&sbi->pin_sem);
@@ -1757,7 +1755,7 @@ static int expand_inode_data(struct inode *inode, loff_t offset,
 
 		map.m_len = expanded;
 	} else {
-		err = f2fs_map_blocks(inode, &map, 1, F2FS_GET_BLOCK_PRE_AIO);
+		err = f2fs_map_blocks(inode, &map, F2FS_GET_BLOCK_PRE_AIO);
 		expanded = map.m_len;
 	}
 out_err:
@@ -1808,7 +1806,7 @@ static long f2fs_fallocate(struct file *file, int mode,
 		return -EOPNOTSUPP;
 
 	/*
-	 * Pinned file should not support partial trucation since the block
+	 * Pinned file should not support partial truncation since the block
 	 * can be used by applications.
 	 */
 	if ((f2fs_compressed_file(inode) || f2fs_is_pinned_file(inode)) &&
@@ -1831,7 +1829,7 @@ static long f2fs_fallocate(struct file *file, int mode,
 		if (offset >= inode->i_size)
 			goto out;
 
-		ret = punch_hole(inode, offset, len);
+		ret = f2fs_punch_hole(inode, offset, len);
 	} else if (mode & FALLOC_FL_COLLAPSE_RANGE) {
 		ret = f2fs_collapse_range(inode, offset, len);
 	} else if (mode & FALLOC_FL_ZERO_RANGE) {
@@ -1839,7 +1837,7 @@ static long f2fs_fallocate(struct file *file, int mode,
 	} else if (mode & FALLOC_FL_INSERT_RANGE) {
 		ret = f2fs_insert_range(inode, offset, len);
 	} else {
-		ret = expand_inode_data(inode, offset, len, mode);
+		ret = f2fs_expand_inode_data(inode, offset, len, mode);
 	}
 
 	if (!ret) {
@@ -1858,7 +1856,7 @@ static long f2fs_fallocate(struct file *file, int mode,
 static int f2fs_release_file(struct inode *inode, struct file *filp)
 {
 	/*
-	 * f2fs_relase_file is called at every close calls. So we should
+	 * f2fs_release_file is called at every close calls. So we should
 	 * not drop any inmemory pages by close called by other process.
 	 */
 	if (!(filp->f_mode & FMODE_WRITE) ||
@@ -2042,7 +2040,7 @@ static int f2fs_ioc_getversion(struct file *filp, unsigned long arg)
 	return put_user(inode->i_generation, (int __user *)arg);
 }
 
-static int f2fs_ioc_start_atomic_write(struct file *filp)
+static int f2fs_ioc_start_atomic_write(struct file *filp, bool truncate)
 {
 	struct inode *inode = file_inode(filp);
 	struct user_namespace *mnt_userns = file_mnt_user_ns(filp);
@@ -2124,13 +2122,20 @@ static int f2fs_ioc_start_atomic_write(struct file *filp)
 
 	f2fs_write_inode(inode, NULL);
 
-	isize = i_size_read(inode);
-	fi->original_i_size = isize;
-	f2fs_i_size_write(fi->cow_inode, isize);
-
 	stat_inc_atomic_inode(inode);
 
 	set_inode_flag(inode, FI_ATOMIC_FILE);
+
+	isize = i_size_read(inode);
+	fi->original_i_size = isize;
+	if (truncate) {
+		set_inode_flag(inode, FI_ATOMIC_REPLACE);
+		truncate_inode_pages_final(inode->i_mapping);
+		f2fs_i_size_write(inode, 0);
+		isize = 0;
+	}
+	f2fs_i_size_write(fi->cow_inode, isize);
+
 	f2fs_up_write(&fi->i_gc_rwsem[WRITE]);
 
 	f2fs_update_time(sbi, REQ_TIME);
@@ -2538,7 +2543,7 @@ static int f2fs_ioc_gc_range(struct file *filp, unsigned long arg)
 	return __f2fs_ioc_gc_range(filp, &range);
 }
 
-static int f2fs_ioc_write_checkpoint(struct file *filp, unsigned long arg)
+static int f2fs_ioc_write_checkpoint(struct file *filp)
 {
 	struct inode *inode = file_inode(filp);
 	struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
@@ -2573,7 +2578,7 @@ static int f2fs_defragment_range(struct f2fs_sb_info *sbi,
 	struct f2fs_map_blocks map = { .m_next_extent = NULL,
 					.m_seg_type = NO_CHECK_TYPE,
 					.m_may_create = false };
-	struct extent_info ei = {0, };
+	struct extent_info ei = {};
 	pgoff_t pg_start, pg_end, next_pgofs;
 	unsigned int blk_per_seg = sbi->blocks_per_seg;
 	unsigned int total = 0, sec_num;
@@ -2620,7 +2625,7 @@ static int f2fs_defragment_range(struct f2fs_sb_info *sbi,
 	 */
 	while (map.m_lblk < pg_end) {
 		map.m_len = pg_end - map.m_lblk;
-		err = f2fs_map_blocks(inode, &map, 0, F2FS_GET_BLOCK_DEFAULT);
+		err = f2fs_map_blocks(inode, &map, F2FS_GET_BLOCK_DEFAULT);
 		if (err)
 			goto out;
 
@@ -2667,7 +2672,7 @@ static int f2fs_defragment_range(struct f2fs_sb_info *sbi,
 
 do_map:
 		map.m_len = pg_end - map.m_lblk;
-		err = f2fs_map_blocks(inode, &map, 0, F2FS_GET_BLOCK_DEFAULT);
+		err = f2fs_map_blocks(inode, &map, F2FS_GET_BLOCK_DEFAULT);
 		if (err)
 			goto clear_out;
 
@@ -3242,7 +3247,7 @@ int f2fs_precache_extents(struct inode *inode)
 		map.m_len = end - map.m_lblk;
 
 		f2fs_down_write(&fi->i_gc_rwsem[WRITE]);
-		err = f2fs_map_blocks(inode, &map, 0, F2FS_GET_BLOCK_PRECACHE);
+		err = f2fs_map_blocks(inode, &map, F2FS_GET_BLOCK_PRECACHE);
 		f2fs_up_write(&fi->i_gc_rwsem[WRITE]);
 		if (err)
 			return err;
@@ -3253,7 +3258,7 @@ int f2fs_precache_extents(struct inode *inode)
 	return 0;
 }
 
-static int f2fs_ioc_precache_extents(struct file *filp, unsigned long arg)
+static int f2fs_ioc_precache_extents(struct file *filp)
 {
 	return f2fs_precache_extents(file_inode(filp));
 }
@@ -3964,7 +3969,7 @@ static int f2fs_ioc_set_compress_option(struct file *filp, unsigned long arg)
 
 	F2FS_I(inode)->i_compress_algorithm = option.algorithm;
 	F2FS_I(inode)->i_log_cluster_size = option.log_cluster_size;
-	F2FS_I(inode)->i_cluster_size = 1 << option.log_cluster_size;
+	F2FS_I(inode)->i_cluster_size = BIT(option.log_cluster_size);
 	f2fs_mark_inode_dirty_sync(inode, true);
 
 	if (!f2fs_is_compress_backend_ready(inode))
@@ -4010,7 +4015,7 @@ static int redirty_blocks(struct inode *inode, pgoff_t page_idx, int len)
 	return ret;
 }
 
-static int f2fs_ioc_decompress_file(struct file *filp, unsigned long arg)
+static int f2fs_ioc_decompress_file(struct file *filp)
 {
 	struct inode *inode = file_inode(filp);
 	struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
@@ -4062,8 +4067,11 @@ static int f2fs_ioc_decompress_file(struct file *filp, unsigned long arg)
 		if (ret < 0)
 			break;
 
-		if (get_dirty_pages(inode) >= blk_per_seg)
-			filemap_fdatawrite(inode->i_mapping);
+		if (get_dirty_pages(inode) >= blk_per_seg) {
+			ret = filemap_fdatawrite(inode->i_mapping);
+			if (ret < 0)
+				break;
+		}
 
 		count -= len;
 		page_idx += len;
@@ -4083,7 +4091,7 @@ static int f2fs_ioc_decompress_file(struct file *filp, unsigned long arg)
 	return ret;
 }
 
-static int f2fs_ioc_compress_file(struct file *filp, unsigned long arg)
+static int f2fs_ioc_compress_file(struct file *filp)
 {
 	struct inode *inode = file_inode(filp);
 	struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
@@ -4133,8 +4141,11 @@ static int f2fs_ioc_compress_file(struct file *filp, unsigned long arg)
 		if (ret < 0)
 			break;
 
-		if (get_dirty_pages(inode) >= blk_per_seg)
-			filemap_fdatawrite(inode->i_mapping);
+		if (get_dirty_pages(inode) >= blk_per_seg) {
+			ret = filemap_fdatawrite(inode->i_mapping);
+			if (ret < 0)
+				break;
+		}
 
 		count -= len;
 		page_idx += len;
@@ -4162,7 +4173,9 @@ static long __f2fs_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
 	case FS_IOC_GETVERSION:
 		return f2fs_ioc_getversion(filp, arg);
 	case F2FS_IOC_START_ATOMIC_WRITE:
-		return f2fs_ioc_start_atomic_write(filp);
+		return f2fs_ioc_start_atomic_write(filp, false);
+	case F2FS_IOC_START_ATOMIC_REPLACE:
+		return f2fs_ioc_start_atomic_write(filp, true);
 	case F2FS_IOC_COMMIT_ATOMIC_WRITE:
 		return f2fs_ioc_commit_atomic_write(filp);
 	case F2FS_IOC_ABORT_ATOMIC_WRITE:
@@ -4197,7 +4210,7 @@ static long __f2fs_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
 	case F2FS_IOC_GARBAGE_COLLECT_RANGE:
 		return f2fs_ioc_gc_range(filp, arg);
 	case F2FS_IOC_WRITE_CHECKPOINT:
-		return f2fs_ioc_write_checkpoint(filp, arg);
+		return f2fs_ioc_write_checkpoint(filp);
 	case F2FS_IOC_DEFRAGMENT:
 		return f2fs_ioc_defragment(filp, arg);
 	case F2FS_IOC_MOVE_RANGE:
@@ -4211,7 +4224,7 @@ static long __f2fs_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
 	case F2FS_IOC_SET_PIN_FILE:
 		return f2fs_ioc_set_pin_file(filp, arg);
 	case F2FS_IOC_PRECACHE_EXTENTS:
-		return f2fs_ioc_precache_extents(filp, arg);
+		return f2fs_ioc_precache_extents(filp);
 	case F2FS_IOC_RESIZE_FS:
 		return f2fs_ioc_resize_fs(filp, arg);
 	case FS_IOC_ENABLE_VERITY:
@@ -4237,9 +4250,9 @@ static long __f2fs_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
 	case F2FS_IOC_SET_COMPRESS_OPTION:
 		return f2fs_ioc_set_compress_option(filp, arg);
 	case F2FS_IOC_DECOMPRESS_FILE:
-		return f2fs_ioc_decompress_file(filp, arg);
+		return f2fs_ioc_decompress_file(filp);
 	case F2FS_IOC_COMPRESS_FILE:
-		return f2fs_ioc_compress_file(filp, arg);
+		return f2fs_ioc_compress_file(filp);
 	default:
 		return -ENOTTY;
 	}
@@ -4354,6 +4367,27 @@ static ssize_t f2fs_dio_read_iter(struct kiocb *iocb, struct iov_iter *to)
 	return ret;
 }
 
+static void f2fs_trace_rw_file_path(struct kiocb *iocb, size_t count, int rw)
+{
+	struct inode *inode = file_inode(iocb->ki_filp);
+	char *buf, *path;
+
+	buf = f2fs_getname(F2FS_I_SB(inode));
+	if (!buf)
+		return;
+	path = dentry_path_raw(file_dentry(iocb->ki_filp), buf, PATH_MAX);
+	if (IS_ERR(path))
+		goto free_buf;
+	if (rw == WRITE)
+		trace_f2fs_datawrite_start(inode, iocb->ki_pos, count,
+				current->pid, path, current->comm);
+	else
+		trace_f2fs_dataread_start(inode, iocb->ki_pos, count,
+				current->pid, path, current->comm);
+free_buf:
+	f2fs_putname(buf);
+}
+
 static ssize_t f2fs_file_read_iter(struct kiocb *iocb, struct iov_iter *to)
 {
 	struct inode *inode = file_inode(iocb->ki_filp);
@@ -4363,24 +4397,9 @@ static ssize_t f2fs_file_read_iter(struct kiocb *iocb, struct iov_iter *to)
 	if (!f2fs_is_compress_backend_ready(inode))
 		return -EOPNOTSUPP;
 
-	if (trace_f2fs_dataread_start_enabled()) {
-		char *p = f2fs_kmalloc(F2FS_I_SB(inode), PATH_MAX, GFP_KERNEL);
-		char *path;
+	if (trace_f2fs_dataread_start_enabled())
+		f2fs_trace_rw_file_path(iocb, iov_iter_count(to), READ);
 
-		if (!p)
-			goto skip_read_trace;
-
-		path = dentry_path_raw(file_dentry(iocb->ki_filp), p, PATH_MAX);
-		if (IS_ERR(path)) {
-			kfree(p);
-			goto skip_read_trace;
-		}
-
-		trace_f2fs_dataread_start(inode, pos, iov_iter_count(to),
-					current->pid, path, current->comm);
-		kfree(p);
-	}
-skip_read_trace:
 	if (f2fs_should_use_dio(inode, iocb, to)) {
 		ret = f2fs_dio_read_iter(iocb, to);
 	} else {
@@ -4479,7 +4498,7 @@ static int f2fs_preallocate_blocks(struct kiocb *iocb, struct iov_iter *iter,
 		flag = F2FS_GET_BLOCK_PRE_AIO;
 	}
 
-	ret = f2fs_map_blocks(inode, &map, 1, flag);
+	ret = f2fs_map_blocks(inode, &map, flag);
 	/* -ENOSPC|-EDQUOT are fine to report the number of allocated blocks. */
 	if (ret < 0 && !((ret == -ENOSPC || ret == -EDQUOT) && map.m_len > 0))
 		return ret;
@@ -4526,6 +4545,19 @@ static const struct iomap_dio_ops f2fs_iomap_dio_write_ops = {
 	.end_io = f2fs_dio_write_end_io,
 };
 
+static void f2fs_flush_buffered_write(struct address_space *mapping,
+				      loff_t start_pos, loff_t end_pos)
+{
+	int ret;
+
+	ret = filemap_write_and_wait_range(mapping, start_pos, end_pos);
+	if (ret < 0)
+		return;
+	invalidate_mapping_pages(mapping,
+				 start_pos >> PAGE_SHIFT,
+				 end_pos >> PAGE_SHIFT);
+}
+
 static ssize_t f2fs_dio_write_iter(struct kiocb *iocb, struct iov_iter *from,
 				   bool *may_need_sync)
 {
@@ -4625,14 +4657,9 @@ static ssize_t f2fs_dio_write_iter(struct kiocb *iocb, struct iov_iter *from,
 
 			ret += ret2;
 
-			ret2 = filemap_write_and_wait_range(file->f_mapping,
-							    bufio_start_pos,
-							    bufio_end_pos);
-			if (ret2 < 0)
-				goto out;
-			invalidate_mapping_pages(file->f_mapping,
-						 bufio_start_pos >> PAGE_SHIFT,
-						 bufio_end_pos >> PAGE_SHIFT);
+			f2fs_flush_buffered_write(file->f_mapping,
+						  bufio_start_pos,
+						  bufio_end_pos);
 		}
 	} else {
 		/* iomap_dio_rw() already handled the generic_write_sync(). */
@@ -4686,24 +4713,9 @@ static ssize_t f2fs_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
 	if (preallocated < 0) {
 		ret = preallocated;
 	} else {
-		if (trace_f2fs_datawrite_start_enabled()) {
-			char *p = f2fs_kmalloc(F2FS_I_SB(inode),
-						PATH_MAX, GFP_KERNEL);
-			char *path;
+		if (trace_f2fs_datawrite_start_enabled())
+			f2fs_trace_rw_file_path(iocb, orig_count, WRITE);
 
-			if (!p)
-				goto skip_write_trace;
-			path = dentry_path_raw(file_dentry(iocb->ki_filp),
-								p, PATH_MAX);
-			if (IS_ERR(path)) {
-				kfree(p);
-				goto skip_write_trace;
-			}
-			trace_f2fs_datawrite_start(inode, orig_pos, orig_count,
-					current->pid, path, current->comm);
-			kfree(p);
-		}
-skip_write_trace:
 		/* Do the actual write. */
 		ret = dio ?
 			f2fs_dio_write_iter(iocb, from, &may_need_sync) :
@@ -4730,8 +4742,18 @@ static ssize_t f2fs_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
 	inode_unlock(inode);
 out:
 	trace_f2fs_file_write_iter(inode, orig_pos, orig_count, ret);
+
 	if (ret > 0 && may_need_sync)
 		ret = generic_write_sync(iocb, ret);
+
+	/* If buffered IO was forced, flush and drop the data from
+	 * the page cache to preserve O_DIRECT semantics
+	 */
+	if (ret > 0 && !dio && (iocb->ki_flags & IOCB_DIRECT))
+		f2fs_flush_buffered_write(iocb->ki_filp->f_mapping,
+					  orig_pos,
+					  orig_pos + ret - 1);
+
 	return ret;
 }
 
@@ -4836,6 +4858,7 @@ long f2fs_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
 	case F2FS_IOC32_MOVE_RANGE:
 		return f2fs_compat_ioc_move_range(file, arg);
 	case F2FS_IOC_START_ATOMIC_WRITE:
+	case F2FS_IOC_START_ATOMIC_REPLACE:
 	case F2FS_IOC_COMMIT_ATOMIC_WRITE:
 	case F2FS_IOC_START_VOLATILE_WRITE:
 	case F2FS_IOC_RELEASE_VOLATILE_WRITE:
@@ -4885,6 +4908,7 @@ const struct file_operations f2fs_file_operations = {
 	.llseek		= f2fs_llseek,
 	.read_iter	= f2fs_file_read_iter,
 	.write_iter	= f2fs_file_write_iter,
+	.iopoll		= iocb_bio_iopoll,
 	.open		= f2fs_file_open,
 	.release	= f2fs_release_file,
 	.mmap		= f2fs_file_mmap,
diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c
index 7e497f5..30f78b8 100644
--- a/fs/f2fs/gc.c
+++ b/fs/f2fs/gc.c
@@ -57,7 +57,7 @@ static int gc_thread_func(void *data)
 
 		/* give it a try one time */
 		if (gc_th->gc_wake)
-			gc_th->gc_wake = 0;
+			gc_th->gc_wake = false;
 
 		if (try_to_freeze()) {
 			stat_other_skip_bggc_count(sbi);
@@ -72,11 +72,9 @@ static int gc_thread_func(void *data)
 			continue;
 		}
 
-		if (time_to_inject(sbi, FAULT_CHECKPOINT)) {
-			f2fs_show_injection_info(sbi, FAULT_CHECKPOINT);
+		if (time_to_inject(sbi, FAULT_CHECKPOINT))
 			f2fs_stop_checkpoint(sbi, false,
 					STOP_CP_REASON_FAULT_INJECT);
-		}
 
 		if (!sb_start_write_trylock(sbi->sb)) {
 			stat_other_skip_bggc_count(sbi);
@@ -141,6 +139,10 @@ static int gc_thread_func(void *data)
 			/* don't bother wait_ms by foreground gc */
 			if (!foreground)
 				wait_ms = gc_th->no_gc_sleep_time;
+		} else {
+			/* reset wait_ms to default sleep time */
+			if (wait_ms == gc_th->no_gc_sleep_time)
+				wait_ms = gc_th->min_sleep_time;
 		}
 
 		if (foreground)
@@ -152,14 +154,14 @@ static int gc_thread_func(void *data)
 		/* balancing f2fs's metadata periodically */
 		f2fs_balance_fs_bg(sbi, true);
 next:
-		if (sbi->gc_mode == GC_URGENT_HIGH) {
-			spin_lock(&sbi->gc_urgent_high_lock);
-			if (sbi->gc_urgent_high_remaining) {
-				sbi->gc_urgent_high_remaining--;
-				if (!sbi->gc_urgent_high_remaining)
+		if (sbi->gc_mode != GC_NORMAL) {
+			spin_lock(&sbi->gc_remaining_trials_lock);
+			if (sbi->gc_remaining_trials) {
+				sbi->gc_remaining_trials--;
+				if (!sbi->gc_remaining_trials)
 					sbi->gc_mode = GC_NORMAL;
 			}
-			spin_unlock(&sbi->gc_urgent_high_lock);
+			spin_unlock(&sbi->gc_remaining_trials_lock);
 		}
 		sb_end_write(sbi->sb);
 
@@ -171,20 +173,17 @@ int f2fs_start_gc_thread(struct f2fs_sb_info *sbi)
 {
 	struct f2fs_gc_kthread *gc_th;
 	dev_t dev = sbi->sb->s_bdev->bd_dev;
-	int err = 0;
 
 	gc_th = f2fs_kmalloc(sbi, sizeof(struct f2fs_gc_kthread), GFP_KERNEL);
-	if (!gc_th) {
-		err = -ENOMEM;
-		goto out;
-	}
+	if (!gc_th)
+		return -ENOMEM;
 
 	gc_th->urgent_sleep_time = DEF_GC_THREAD_URGENT_SLEEP_TIME;
 	gc_th->min_sleep_time = DEF_GC_THREAD_MIN_SLEEP_TIME;
 	gc_th->max_sleep_time = DEF_GC_THREAD_MAX_SLEEP_TIME;
 	gc_th->no_gc_sleep_time = DEF_GC_THREAD_NOGC_SLEEP_TIME;
 
-	gc_th->gc_wake = 0;
+	gc_th->gc_wake = false;
 
 	sbi->gc_thread = gc_th;
 	init_waitqueue_head(&sbi->gc_thread->gc_wait_queue_head);
@@ -192,12 +191,14 @@ int f2fs_start_gc_thread(struct f2fs_sb_info *sbi)
 	sbi->gc_thread->f2fs_gc_task = kthread_run(gc_thread_func, sbi,
 			"f2fs_gc-%u:%u", MAJOR(dev), MINOR(dev));
 	if (IS_ERR(gc_th->f2fs_gc_task)) {
-		err = PTR_ERR(gc_th->f2fs_gc_task);
+		int err = PTR_ERR(gc_th->f2fs_gc_task);
+
 		kfree(gc_th);
 		sbi->gc_thread = NULL;
+		return err;
 	}
-out:
-	return err;
+
+	return 0;
 }
 
 void f2fs_stop_gc_thread(struct f2fs_sb_info *sbi)
@@ -740,9 +741,9 @@ static int f2fs_gc_pinned_control(struct inode *inode, int gc_type,
  * When it is called from SSR segment selection, it finds a segment
  * which has minimum valid blocks and removes it from dirty seglist.
  */
-static int get_victim_by_default(struct f2fs_sb_info *sbi,
-			unsigned int *result, int gc_type, int type,
-			char alloc_mode, unsigned long long age)
+int f2fs_get_victim(struct f2fs_sb_info *sbi, unsigned int *result,
+			int gc_type, int type, char alloc_mode,
+			unsigned long long age)
 {
 	struct dirty_seglist_info *dirty_i = DIRTY_I(sbi);
 	struct sit_info *sm = SIT_I(sbi);
@@ -936,10 +937,6 @@ static int get_victim_by_default(struct f2fs_sb_info *sbi,
 	return ret;
 }
 
-static const struct victim_selection default_v_ops = {
-	.get_victim = get_victim_by_default,
-};
-
 static struct inode *find_gc_inode(struct gc_inode_list *gc_list, nid_t ino)
 {
 	struct inode_entry *ie;
@@ -1178,7 +1175,6 @@ static int ra_data_block(struct inode *inode, pgoff_t index)
 	struct address_space *mapping = inode->i_mapping;
 	struct dnode_of_data dn;
 	struct page *page;
-	struct extent_info ei = {0, };
 	struct f2fs_io_info fio = {
 		.sbi = sbi,
 		.ino = inode->i_ino,
@@ -1187,8 +1183,8 @@ static int ra_data_block(struct inode *inode, pgoff_t index)
 		.op = REQ_OP_READ,
 		.op_flags = 0,
 		.encrypted_page = NULL,
-		.in_list = false,
-		.retry = false,
+		.in_list = 0,
+		.retry = 0,
 	};
 	int err;
 
@@ -1196,8 +1192,8 @@ static int ra_data_block(struct inode *inode, pgoff_t index)
 	if (!page)
 		return -ENOMEM;
 
-	if (f2fs_lookup_read_extent_cache(inode, index, &ei)) {
-		dn.data_blkaddr = ei.blk + index - ei.fofs;
+	if (f2fs_lookup_read_extent_cache_block(inode, index,
+						&dn.data_blkaddr)) {
 		if (unlikely(!f2fs_is_valid_blkaddr(sbi, dn.data_blkaddr,
 						DATA_GENERIC_ENHANCE_READ))) {
 			err = -EFSCORRUPTED;
@@ -1276,8 +1272,8 @@ static int move_data_block(struct inode *inode, block_t bidx,
 		.op = REQ_OP_READ,
 		.op_flags = 0,
 		.encrypted_page = NULL,
-		.in_list = false,
-		.retry = false,
+		.in_list = 0,
+		.retry = 0,
 	};
 	struct dnode_of_data dn;
 	struct f2fs_summary sum;
@@ -1393,7 +1389,6 @@ static int move_data_block(struct inode *inode, block_t bidx,
 		dec_page_count(fio.sbi, F2FS_DIRTY_META);
 
 	set_page_writeback(fio.encrypted_page);
-	ClearPageError(page);
 
 	fio.op = REQ_OP_WRITE;
 	fio.op_flags = REQ_SYNC;
@@ -1600,8 +1595,8 @@ static int gc_data_segment(struct f2fs_sb_info *sbi, struct f2fs_summary *sum,
 				continue;
 			}
 
-			data_page = f2fs_get_read_data_page(inode,
-						start_bidx, REQ_RAHEAD, true);
+			data_page = f2fs_get_read_data_page(inode, start_bidx,
+							REQ_RAHEAD, true, NULL);
 			f2fs_up_write(&F2FS_I(inode)->i_gc_rwsem[WRITE]);
 			if (IS_ERR(data_page)) {
 				iput(inode);
@@ -1621,14 +1616,14 @@ static int gc_data_segment(struct f2fs_sb_info *sbi, struct f2fs_summary *sum,
 			int err;
 
 			if (S_ISREG(inode->i_mode)) {
-				if (!f2fs_down_write_trylock(&fi->i_gc_rwsem[READ])) {
+				if (!f2fs_down_write_trylock(&fi->i_gc_rwsem[WRITE])) {
 					sbi->skipped_gc_rwsem++;
 					continue;
 				}
 				if (!f2fs_down_write_trylock(
-						&fi->i_gc_rwsem[WRITE])) {
+						&fi->i_gc_rwsem[READ])) {
 					sbi->skipped_gc_rwsem++;
-					f2fs_up_write(&fi->i_gc_rwsem[READ]);
+					f2fs_up_write(&fi->i_gc_rwsem[WRITE]);
 					continue;
 				}
 				locked = true;
@@ -1651,8 +1646,8 @@ static int gc_data_segment(struct f2fs_sb_info *sbi, struct f2fs_summary *sum,
 				submitted++;
 
 			if (locked) {
-				f2fs_up_write(&fi->i_gc_rwsem[WRITE]);
 				f2fs_up_write(&fi->i_gc_rwsem[READ]);
+				f2fs_up_write(&fi->i_gc_rwsem[WRITE]);
 			}
 
 			stat_inc_data_blk_count(sbi, 1, gc_type);
@@ -1672,8 +1667,7 @@ static int __get_victim(struct f2fs_sb_info *sbi, unsigned int *victim,
 	int ret;
 
 	down_write(&sit_i->sentry_lock);
-	ret = DIRTY_I(sbi)->v_ops->get_victim(sbi, victim, gc_type,
-					      NO_CHECK_TYPE, LFS, 0);
+	ret = f2fs_get_victim(sbi, victim, gc_type, NO_CHECK_TYPE, LFS, 0);
 	up_write(&sit_i->sentry_lock);
 	return ret;
 }
@@ -1835,7 +1829,10 @@ int f2fs_gc(struct f2fs_sb_info *sbi, struct f2fs_gc_control *gc_control)
 		goto stop;
 	}
 
-	if (gc_type == BG_GC && has_not_enough_free_secs(sbi, 0, 0)) {
+	/* Let's run FG_GC, if we don't have enough space. */
+	if (has_not_enough_free_secs(sbi, 0, 0)) {
+		gc_type = FG_GC;
+
 		/*
 		 * For example, if there are many prefree_segments below given
 		 * threshold, we can make them free by checkpoint. Then, we
@@ -1846,8 +1843,6 @@ int f2fs_gc(struct f2fs_sb_info *sbi, struct f2fs_gc_control *gc_control)
 			if (ret)
 				goto stop;
 		}
-		if (has_not_enough_free_secs(sbi, 0, 0))
-			gc_type = FG_GC;
 	}
 
 	/* f2fs_balance_fs doesn't need to do BG_GC in critical path. */
@@ -1874,19 +1869,15 @@ int f2fs_gc(struct f2fs_sb_info *sbi, struct f2fs_gc_control *gc_control)
 	if (seg_freed == f2fs_usable_segs_in_sec(sbi, segno))
 		sec_freed++;
 
-	if (gc_type == FG_GC)
+	if (gc_type == FG_GC) {
 		sbi->cur_victim_sec = NULL_SEGNO;
 
-	if (gc_control->init_gc_type == FG_GC ||
-	    !has_not_enough_free_secs(sbi,
-				(gc_type == FG_GC) ? sec_freed : 0, 0)) {
-		if (gc_type == FG_GC && sec_freed < gc_control->nr_free_secs)
-			goto go_gc_more;
-		goto stop;
-	}
-
-	/* FG_GC stops GC by skip_count */
-	if (gc_type == FG_GC) {
+		if (has_enough_free_secs(sbi, sec_freed, 0)) {
+			if (!gc_control->no_bg_gc &&
+			    sec_freed < gc_control->nr_free_secs)
+				goto go_gc_more;
+			goto stop;
+		}
 		if (sbi->skipped_gc_rwsem)
 			skipped_round++;
 		round++;
@@ -1895,6 +1886,8 @@ int f2fs_gc(struct f2fs_sb_info *sbi, struct f2fs_gc_control *gc_control)
 			ret = f2fs_write_checkpoint(sbi, &cpc);
 			goto stop;
 		}
+	} else if (has_enough_free_secs(sbi, 0, 0)) {
+		goto stop;
 	}
 
 	__get_secs_required(sbi, NULL, &upper_secs, NULL);
@@ -1942,9 +1935,7 @@ int __init f2fs_create_garbage_collection_cache(void)
 {
 	victim_entry_slab = f2fs_kmem_cache_create("f2fs_victim_entry",
 					sizeof(struct victim_entry));
-	if (!victim_entry_slab)
-		return -ENOMEM;
-	return 0;
+	return victim_entry_slab ? 0 : -ENOMEM;
 }
 
 void f2fs_destroy_garbage_collection_cache(void)
@@ -1972,8 +1963,6 @@ static void init_atgc_management(struct f2fs_sb_info *sbi)
 
 void f2fs_build_gc_manager(struct f2fs_sb_info *sbi)
 {
-	DIRTY_I(sbi)->v_ops = &default_v_ops;
-
 	sbi->gc_pin_file_threshold = DEF_GC_FAILED_PINNED_FILES;
 
 	/* give warm/cold data area from slower device */
@@ -2104,8 +2093,8 @@ static void update_fs_metadata(struct f2fs_sb_info *sbi, int secs)
 		FDEV(last_dev).end_blk =
 				(long long)FDEV(last_dev).end_blk + blks;
 #ifdef CONFIG_BLK_DEV_ZONED
-		FDEV(last_dev).nr_blkz = (int)FDEV(last_dev).nr_blkz +
-					(int)(blks >> sbi->log_blocks_per_blkz);
+		FDEV(last_dev).nr_blkz = FDEV(last_dev).nr_blkz +
+					div_u64(blks, sbi->blocks_per_blkz);
 #endif
 	}
 }
diff --git a/fs/f2fs/gc.h b/fs/f2fs/gc.h
index 4735710..28a0094 100644
--- a/fs/f2fs/gc.h
+++ b/fs/f2fs/gc.h
@@ -43,7 +43,7 @@ struct f2fs_gc_kthread {
 	unsigned int no_gc_sleep_time;
 
 	/* for changing gc mode */
-	unsigned int gc_wake;
+	bool gc_wake;
 
 	/* for GC_MERGE mount option */
 	wait_queue_head_t fggc_wq;		/*
diff --git a/fs/f2fs/inline.c b/fs/f2fs/inline.c
index 7e867df..4638fee 100644
--- a/fs/f2fs/inline.c
+++ b/fs/f2fs/inline.c
@@ -174,7 +174,6 @@ int f2fs_convert_inline_page(struct dnode_of_data *dn, struct page *page)
 
 	/* write data page to try to make data consistent */
 	set_page_writeback(page);
-	ClearPageError(page);
 	fio.old_blkaddr = dn->data_blkaddr;
 	set_inode_flag(dn->inode, FI_HOT_DATA);
 	f2fs_outplace_write_data(dn, &fio);
@@ -498,7 +497,7 @@ static int f2fs_add_inline_entries(struct inode *dir, void *inline_dentry)
 		fname.hash = de->hash_code;
 
 		ino = le32_to_cpu(de->ino);
-		fake_mode = f2fs_get_de_type(de) << S_SHIFT;
+		fake_mode = fs_ftype_to_dtype(de->file_type) << S_DT_SHIFT;
 
 		err = f2fs_add_regular_entry(dir, &fname, NULL, ino, fake_mode);
 		if (err)
diff --git a/fs/f2fs/inode.c b/fs/f2fs/inode.c
index aab3b8b..cf4327a 100644
--- a/fs/f2fs/inode.c
+++ b/fs/f2fs/inode.c
@@ -326,7 +326,6 @@ static void init_idisk_time(struct inode *inode)
 	fi->i_disk_time[0] = inode->i_atime;
 	fi->i_disk_time[1] = inode->i_ctime;
 	fi->i_disk_time[2] = inode->i_mtime;
-	fi->i_disk_time[3] = fi->i_crtime;
 }
 
 static int do_read_inode(struct inode *inode)
@@ -444,12 +443,18 @@ static int do_read_inode(struct inode *inode)
 					(fi->i_flags & F2FS_COMPR_FL)) {
 		if (F2FS_FITS_IN_INODE(ri, fi->i_extra_isize,
 					i_log_cluster_size)) {
+			unsigned short compress_flag;
+
 			atomic_set(&fi->i_compr_blocks,
 					le64_to_cpu(ri->i_compr_blocks));
 			fi->i_compress_algorithm = ri->i_compress_algorithm;
 			fi->i_log_cluster_size = ri->i_log_cluster_size;
-			fi->i_compress_flag = le16_to_cpu(ri->i_compress_flag);
-			fi->i_cluster_size = 1 << fi->i_log_cluster_size;
+			compress_flag = le16_to_cpu(ri->i_compress_flag);
+			fi->i_compress_level = compress_flag >>
+						COMPRESS_LEVEL_OFFSET;
+			fi->i_compress_flag = compress_flag &
+					GENMASK(COMPRESS_LEVEL_OFFSET - 1, 0);
+			fi->i_cluster_size = BIT(fi->i_log_cluster_size);
 			set_inode_flag(inode, FI_COMPRESSED_FILE);
 		}
 	}
@@ -458,6 +463,7 @@ static int do_read_inode(struct inode *inode)
 
 	/* Need all the flag bits */
 	f2fs_init_read_extent_tree(inode, node_page);
+	f2fs_init_age_extent_tree(inode);
 
 	if (!sanity_check_inode(inode, node_page)) {
 		f2fs_put_page(node_page, 1);
@@ -675,13 +681,17 @@ void f2fs_update_inode(struct inode *inode, struct page *node_page)
 		if (f2fs_sb_has_compression(F2FS_I_SB(inode)) &&
 			F2FS_FITS_IN_INODE(ri, F2FS_I(inode)->i_extra_isize,
 							i_log_cluster_size)) {
+			unsigned short compress_flag;
+
 			ri->i_compr_blocks =
 				cpu_to_le64(atomic_read(
 					&F2FS_I(inode)->i_compr_blocks));
 			ri->i_compress_algorithm =
 				F2FS_I(inode)->i_compress_algorithm;
-			ri->i_compress_flag =
-				cpu_to_le16(F2FS_I(inode)->i_compress_flag);
+			compress_flag = F2FS_I(inode)->i_compress_flag |
+				F2FS_I(inode)->i_compress_level <<
+						COMPRESS_LEVEL_OFFSET;
+			ri->i_compress_flag = cpu_to_le16(compress_flag);
 			ri->i_log_cluster_size =
 				F2FS_I(inode)->i_log_cluster_size;
 		}
@@ -806,10 +816,8 @@ void f2fs_evict_inode(struct inode *inode)
 	if (F2FS_HAS_BLOCKS(inode))
 		err = f2fs_truncate(inode);
 
-	if (time_to_inject(sbi, FAULT_EVICT_INODE)) {
-		f2fs_show_injection_info(sbi, FAULT_EVICT_INODE);
+	if (time_to_inject(sbi, FAULT_EVICT_INODE))
 		err = -EIO;
-	}
 
 	if (!err) {
 		f2fs_lock_op(sbi);
diff --git a/fs/f2fs/iostat.c b/fs/f2fs/iostat.c
index 02393c9..3d5bfb1 100644
--- a/fs/f2fs/iostat.c
+++ b/fs/f2fs/iostat.c
@@ -14,91 +14,79 @@
 #include "iostat.h"
 #include <trace/events/f2fs.h>
 
-#define NUM_PREALLOC_IOSTAT_CTXS	128
 static struct kmem_cache *bio_iostat_ctx_cache;
 static mempool_t *bio_iostat_ctx_pool;
 
+static inline unsigned long long iostat_get_avg_bytes(struct f2fs_sb_info *sbi,
+	enum iostat_type type)
+{
+	return sbi->iostat_count[type] ? div64_u64(sbi->iostat_bytes[type],
+		sbi->iostat_count[type]) : 0;
+}
+
+#define IOSTAT_INFO_SHOW(name, type)					\
+	seq_printf(seq, "%-23s %-16llu %-16llu %-16llu\n",		\
+			name":", sbi->iostat_bytes[type],		\
+			sbi->iostat_count[type],			\
+			iostat_get_avg_bytes(sbi, type))
+
 int __maybe_unused iostat_info_seq_show(struct seq_file *seq, void *offset)
 {
 	struct super_block *sb = seq->private;
 	struct f2fs_sb_info *sbi = F2FS_SB(sb);
-	time64_t now = ktime_get_real_seconds();
 
 	if (!sbi->iostat_enable)
 		return 0;
 
-	seq_printf(seq, "time:		%-16llu\n", now);
+	seq_printf(seq, "time:		%-16llu\n", ktime_get_real_seconds());
+	seq_printf(seq, "\t\t\t%-16s %-16s %-16s\n",
+				"io_bytes", "count", "avg_bytes");
 
 	/* print app write IOs */
 	seq_puts(seq, "[WRITE]\n");
-	seq_printf(seq, "app buffered data:	%-16llu\n",
-				sbi->rw_iostat[APP_BUFFERED_IO]);
-	seq_printf(seq, "app direct data:	%-16llu\n",
-				sbi->rw_iostat[APP_DIRECT_IO]);
-	seq_printf(seq, "app mapped data:	%-16llu\n",
-				sbi->rw_iostat[APP_MAPPED_IO]);
-	seq_printf(seq, "app buffered cdata:	%-16llu\n",
-				sbi->rw_iostat[APP_BUFFERED_CDATA_IO]);
-	seq_printf(seq, "app mapped cdata:	%-16llu\n",
-				sbi->rw_iostat[APP_MAPPED_CDATA_IO]);
+	IOSTAT_INFO_SHOW("app buffered data", APP_BUFFERED_IO);
+	IOSTAT_INFO_SHOW("app direct data", APP_DIRECT_IO);
+	IOSTAT_INFO_SHOW("app mapped data", APP_MAPPED_IO);
+	IOSTAT_INFO_SHOW("app buffered cdata", APP_BUFFERED_CDATA_IO);
+	IOSTAT_INFO_SHOW("app mapped cdata", APP_MAPPED_CDATA_IO);
 
 	/* print fs write IOs */
-	seq_printf(seq, "fs data:		%-16llu\n",
-				sbi->rw_iostat[FS_DATA_IO]);
-	seq_printf(seq, "fs cdata:		%-16llu\n",
-				sbi->rw_iostat[FS_CDATA_IO]);
-	seq_printf(seq, "fs node:		%-16llu\n",
-				sbi->rw_iostat[FS_NODE_IO]);
-	seq_printf(seq, "fs meta:		%-16llu\n",
-				sbi->rw_iostat[FS_META_IO]);
-	seq_printf(seq, "fs gc data:		%-16llu\n",
-				sbi->rw_iostat[FS_GC_DATA_IO]);
-	seq_printf(seq, "fs gc node:		%-16llu\n",
-				sbi->rw_iostat[FS_GC_NODE_IO]);
-	seq_printf(seq, "fs cp data:		%-16llu\n",
-				sbi->rw_iostat[FS_CP_DATA_IO]);
-	seq_printf(seq, "fs cp node:		%-16llu\n",
-				sbi->rw_iostat[FS_CP_NODE_IO]);
-	seq_printf(seq, "fs cp meta:		%-16llu\n",
-				sbi->rw_iostat[FS_CP_META_IO]);
+	IOSTAT_INFO_SHOW("fs data", FS_DATA_IO);
+	IOSTAT_INFO_SHOW("fs cdata", FS_CDATA_IO);
+	IOSTAT_INFO_SHOW("fs node", FS_NODE_IO);
+	IOSTAT_INFO_SHOW("fs meta", FS_META_IO);
+	IOSTAT_INFO_SHOW("fs gc data", FS_GC_DATA_IO);
+	IOSTAT_INFO_SHOW("fs gc node", FS_GC_NODE_IO);
+	IOSTAT_INFO_SHOW("fs cp data", FS_CP_DATA_IO);
+	IOSTAT_INFO_SHOW("fs cp node", FS_CP_NODE_IO);
+	IOSTAT_INFO_SHOW("fs cp meta", FS_CP_META_IO);
 
 	/* print app read IOs */
 	seq_puts(seq, "[READ]\n");
-	seq_printf(seq, "app buffered data:	%-16llu\n",
-				sbi->rw_iostat[APP_BUFFERED_READ_IO]);
-	seq_printf(seq, "app direct data:	%-16llu\n",
-				sbi->rw_iostat[APP_DIRECT_READ_IO]);
-	seq_printf(seq, "app mapped data:	%-16llu\n",
-				sbi->rw_iostat[APP_MAPPED_READ_IO]);
-	seq_printf(seq, "app buffered cdata:	%-16llu\n",
-				sbi->rw_iostat[APP_BUFFERED_CDATA_READ_IO]);
-	seq_printf(seq, "app mapped cdata:	%-16llu\n",
-				sbi->rw_iostat[APP_MAPPED_CDATA_READ_IO]);
+	IOSTAT_INFO_SHOW("app buffered data", APP_BUFFERED_READ_IO);
+	IOSTAT_INFO_SHOW("app direct data", APP_DIRECT_READ_IO);
+	IOSTAT_INFO_SHOW("app mapped data", APP_MAPPED_READ_IO);
+	IOSTAT_INFO_SHOW("app buffered cdata", APP_BUFFERED_CDATA_READ_IO);
+	IOSTAT_INFO_SHOW("app mapped cdata", APP_MAPPED_CDATA_READ_IO);
 
 	/* print fs read IOs */
-	seq_printf(seq, "fs data:		%-16llu\n",
-				sbi->rw_iostat[FS_DATA_READ_IO]);
-	seq_printf(seq, "fs gc data:		%-16llu\n",
-				sbi->rw_iostat[FS_GDATA_READ_IO]);
-	seq_printf(seq, "fs cdata:		%-16llu\n",
-				sbi->rw_iostat[FS_CDATA_READ_IO]);
-	seq_printf(seq, "fs node:		%-16llu\n",
-				sbi->rw_iostat[FS_NODE_READ_IO]);
-	seq_printf(seq, "fs meta:		%-16llu\n",
-				sbi->rw_iostat[FS_META_READ_IO]);
+	IOSTAT_INFO_SHOW("fs data", FS_DATA_READ_IO);
+	IOSTAT_INFO_SHOW("fs gc data", FS_GDATA_READ_IO);
+	IOSTAT_INFO_SHOW("fs cdata", FS_CDATA_READ_IO);
+	IOSTAT_INFO_SHOW("fs node", FS_NODE_READ_IO);
+	IOSTAT_INFO_SHOW("fs meta", FS_META_READ_IO);
 
 	/* print other IOs */
 	seq_puts(seq, "[OTHER]\n");
-	seq_printf(seq, "fs discard:		%-16llu\n",
-				sbi->rw_iostat[FS_DISCARD]);
+	IOSTAT_INFO_SHOW("fs discard", FS_DISCARD_IO);
+	IOSTAT_INFO_SHOW("fs flush", FS_FLUSH_IO);
 
 	return 0;
 }
 
 static inline void __record_iostat_latency(struct f2fs_sb_info *sbi)
 {
-	int io, idx = 0;
-	unsigned int cnt;
+	int io, idx;
 	struct f2fs_iostat_latency iostat_lat[MAX_IO_TYPE][NR_PAGE_TYPE];
 	struct iostat_lat_info *io_lat = sbi->iostat_io_lat;
 	unsigned long flags;
@@ -106,12 +94,11 @@ static inline void __record_iostat_latency(struct f2fs_sb_info *sbi)
 	spin_lock_irqsave(&sbi->iostat_lat_lock, flags);
 	for (idx = 0; idx < MAX_IO_TYPE; idx++) {
 		for (io = 0; io < NR_PAGE_TYPE; io++) {
-			cnt = io_lat->bio_cnt[idx][io];
 			iostat_lat[idx][io].peak_lat =
 			   jiffies_to_msecs(io_lat->peak_lat[idx][io]);
-			iostat_lat[idx][io].cnt = cnt;
-			iostat_lat[idx][io].avg_lat = cnt ?
-			   jiffies_to_msecs(io_lat->sum_lat[idx][io]) / cnt : 0;
+			iostat_lat[idx][io].cnt = io_lat->bio_cnt[idx][io];
+			iostat_lat[idx][io].avg_lat = iostat_lat[idx][io].cnt ?
+			   jiffies_to_msecs(io_lat->sum_lat[idx][io]) / iostat_lat[idx][io].cnt : 0;
 			io_lat->sum_lat[idx][io] = 0;
 			io_lat->peak_lat[idx][io] = 0;
 			io_lat->bio_cnt[idx][io] = 0;
@@ -141,9 +128,9 @@ static inline void f2fs_record_iostat(struct f2fs_sb_info *sbi)
 				msecs_to_jiffies(sbi->iostat_period_ms);
 
 	for (i = 0; i < NR_IO_TYPE; i++) {
-		iostat_diff[i] = sbi->rw_iostat[i] -
-				sbi->prev_rw_iostat[i];
-		sbi->prev_rw_iostat[i] = sbi->rw_iostat[i];
+		iostat_diff[i] = sbi->iostat_bytes[i] -
+				sbi->prev_iostat_bytes[i];
+		sbi->prev_iostat_bytes[i] = sbi->iostat_bytes[i];
 	}
 	spin_unlock_irqrestore(&sbi->iostat_lock, flags);
 
@@ -159,8 +146,9 @@ void f2fs_reset_iostat(struct f2fs_sb_info *sbi)
 
 	spin_lock_irq(&sbi->iostat_lock);
 	for (i = 0; i < NR_IO_TYPE; i++) {
-		sbi->rw_iostat[i] = 0;
-		sbi->prev_rw_iostat[i] = 0;
+		sbi->iostat_count[i] = 0;
+		sbi->iostat_bytes[i] = 0;
+		sbi->prev_iostat_bytes[i] = 0;
 	}
 	spin_unlock_irq(&sbi->iostat_lock);
 
@@ -169,6 +157,13 @@ void f2fs_reset_iostat(struct f2fs_sb_info *sbi)
 	spin_unlock_irq(&sbi->iostat_lat_lock);
 }
 
+static inline void __f2fs_update_iostat(struct f2fs_sb_info *sbi,
+			enum iostat_type type, unsigned long long io_bytes)
+{
+	sbi->iostat_bytes[type] += io_bytes;
+	sbi->iostat_count[type]++;
+}
+
 void f2fs_update_iostat(struct f2fs_sb_info *sbi, struct inode *inode,
 			enum iostat_type type, unsigned long long io_bytes)
 {
@@ -178,33 +173,33 @@ void f2fs_update_iostat(struct f2fs_sb_info *sbi, struct inode *inode,
 		return;
 
 	spin_lock_irqsave(&sbi->iostat_lock, flags);
-	sbi->rw_iostat[type] += io_bytes;
+	__f2fs_update_iostat(sbi, type, io_bytes);
 
 	if (type == APP_BUFFERED_IO || type == APP_DIRECT_IO)
-		sbi->rw_iostat[APP_WRITE_IO] += io_bytes;
+		__f2fs_update_iostat(sbi, APP_WRITE_IO, io_bytes);
 
 	if (type == APP_BUFFERED_READ_IO || type == APP_DIRECT_READ_IO)
-		sbi->rw_iostat[APP_READ_IO] += io_bytes;
+		__f2fs_update_iostat(sbi, APP_READ_IO, io_bytes);
 
 #ifdef CONFIG_F2FS_FS_COMPRESSION
 	if (inode && f2fs_compressed_file(inode)) {
 		if (type == APP_BUFFERED_IO)
-			sbi->rw_iostat[APP_BUFFERED_CDATA_IO] += io_bytes;
+			__f2fs_update_iostat(sbi, APP_BUFFERED_CDATA_IO, io_bytes);
 
 		if (type == APP_BUFFERED_READ_IO)
-			sbi->rw_iostat[APP_BUFFERED_CDATA_READ_IO] += io_bytes;
+			__f2fs_update_iostat(sbi, APP_BUFFERED_CDATA_READ_IO, io_bytes);
 
 		if (type == APP_MAPPED_READ_IO)
-			sbi->rw_iostat[APP_MAPPED_CDATA_READ_IO] += io_bytes;
+			__f2fs_update_iostat(sbi, APP_MAPPED_CDATA_READ_IO, io_bytes);
 
 		if (type == APP_MAPPED_IO)
-			sbi->rw_iostat[APP_MAPPED_CDATA_IO] += io_bytes;
+			__f2fs_update_iostat(sbi, APP_MAPPED_CDATA_IO, io_bytes);
 
 		if (type == FS_DATA_READ_IO)
-			sbi->rw_iostat[FS_CDATA_READ_IO] += io_bytes;
+			__f2fs_update_iostat(sbi, FS_CDATA_READ_IO, io_bytes);
 
 		if (type == FS_DATA_IO)
-			sbi->rw_iostat[FS_CDATA_IO] += io_bytes;
+			__f2fs_update_iostat(sbi, FS_CDATA_IO, io_bytes);
 	}
 #endif
 
@@ -214,53 +209,48 @@ void f2fs_update_iostat(struct f2fs_sb_info *sbi, struct inode *inode,
 }
 
 static inline void __update_iostat_latency(struct bio_iostat_ctx *iostat_ctx,
-				int rw, bool is_sync)
+				enum iostat_lat_type lat_type)
 {
 	unsigned long ts_diff;
-	unsigned int iotype = iostat_ctx->type;
+	unsigned int page_type = iostat_ctx->type;
 	struct f2fs_sb_info *sbi = iostat_ctx->sbi;
 	struct iostat_lat_info *io_lat = sbi->iostat_io_lat;
-	int idx;
 	unsigned long flags;
 
 	if (!sbi->iostat_enable)
 		return;
 
 	ts_diff = jiffies - iostat_ctx->submit_ts;
-	if (iotype == META_FLUSH) {
-		iotype = META;
-	} else if (iotype >= NR_PAGE_TYPE) {
-		f2fs_warn(sbi, "%s: %d over NR_PAGE_TYPE", __func__, iotype);
+	if (page_type == META_FLUSH) {
+		page_type = META;
+	} else if (page_type >= NR_PAGE_TYPE) {
+		f2fs_warn(sbi, "%s: %d over NR_PAGE_TYPE", __func__, page_type);
 		return;
 	}
 
-	if (rw == 0) {
-		idx = READ_IO;
-	} else {
-		if (is_sync)
-			idx = WRITE_SYNC_IO;
-		else
-			idx = WRITE_ASYNC_IO;
-	}
-
 	spin_lock_irqsave(&sbi->iostat_lat_lock, flags);
-	io_lat->sum_lat[idx][iotype] += ts_diff;
-	io_lat->bio_cnt[idx][iotype]++;
-	if (ts_diff > io_lat->peak_lat[idx][iotype])
-		io_lat->peak_lat[idx][iotype] = ts_diff;
+	io_lat->sum_lat[lat_type][page_type] += ts_diff;
+	io_lat->bio_cnt[lat_type][page_type]++;
+	if (ts_diff > io_lat->peak_lat[lat_type][page_type])
+		io_lat->peak_lat[lat_type][page_type] = ts_diff;
 	spin_unlock_irqrestore(&sbi->iostat_lat_lock, flags);
 }
 
-void iostat_update_and_unbind_ctx(struct bio *bio, int rw)
+void iostat_update_and_unbind_ctx(struct bio *bio)
 {
 	struct bio_iostat_ctx *iostat_ctx = bio->bi_private;
-	bool is_sync = bio->bi_opf & REQ_SYNC;
+	enum iostat_lat_type lat_type;
 
-	if (rw == 0)
-		bio->bi_private = iostat_ctx->post_read_ctx;
-	else
+	if (op_is_write(bio_op(bio))) {
+		lat_type = bio->bi_opf & REQ_SYNC ?
+				WRITE_SYNC_IO : WRITE_ASYNC_IO;
 		bio->bi_private = iostat_ctx->sbi;
-	__update_iostat_latency(iostat_ctx, rw, is_sync);
+	} else {
+		lat_type = READ_IO;
+		bio->bi_private = iostat_ctx->post_read_ctx;
+	}
+
+	__update_iostat_latency(iostat_ctx, lat_type);
 	mempool_free(iostat_ctx, bio_iostat_ctx_pool);
 }
 
diff --git a/fs/f2fs/iostat.h b/fs/f2fs/iostat.h
index 2c048307..eb99d05 100644
--- a/fs/f2fs/iostat.h
+++ b/fs/f2fs/iostat.h
@@ -8,20 +8,21 @@
 
 struct bio_post_read_ctx;
 
-#ifdef CONFIG_F2FS_IOSTAT
-
-#define DEFAULT_IOSTAT_PERIOD_MS	3000
-#define MIN_IOSTAT_PERIOD_MS		100
-/* maximum period of iostat tracing is 1 day */
-#define MAX_IOSTAT_PERIOD_MS		8640000
-
-enum {
-	READ_IO,
+enum iostat_lat_type {
+	READ_IO = 0,
 	WRITE_SYNC_IO,
 	WRITE_ASYNC_IO,
 	MAX_IO_TYPE,
 };
 
+#ifdef CONFIG_F2FS_IOSTAT
+
+#define NUM_PREALLOC_IOSTAT_CTXS	128
+#define DEFAULT_IOSTAT_PERIOD_MS	3000
+#define MIN_IOSTAT_PERIOD_MS		100
+/* maximum period of iostat tracing is 1 day */
+#define MAX_IOSTAT_PERIOD_MS		8640000
+
 struct iostat_lat_info {
 	unsigned long sum_lat[MAX_IO_TYPE][NR_PAGE_TYPE];	/* sum of io latencies */
 	unsigned long peak_lat[MAX_IO_TYPE][NR_PAGE_TYPE];	/* peak io latency */
@@ -57,7 +58,7 @@ static inline struct bio_post_read_ctx *get_post_read_ctx(struct bio *bio)
 	return iostat_ctx->post_read_ctx;
 }
 
-extern void iostat_update_and_unbind_ctx(struct bio *bio, int rw);
+extern void iostat_update_and_unbind_ctx(struct bio *bio);
 extern void iostat_alloc_and_bind_ctx(struct f2fs_sb_info *sbi,
 		struct bio *bio, struct bio_post_read_ctx *ctx);
 extern int f2fs_init_iostat_processing(void);
@@ -67,7 +68,7 @@ extern void f2fs_destroy_iostat(struct f2fs_sb_info *sbi);
 #else
 static inline void f2fs_update_iostat(struct f2fs_sb_info *sbi, struct inode *inode,
 		enum iostat_type type, unsigned long long io_bytes) {}
-static inline void iostat_update_and_unbind_ctx(struct bio *bio, int rw) {}
+static inline void iostat_update_and_unbind_ctx(struct bio *bio) {}
 static inline void iostat_alloc_and_bind_ctx(struct f2fs_sb_info *sbi,
 		struct bio *bio, struct bio_post_read_ctx *ctx) {}
 static inline void iostat_update_submit_ctx(struct bio *bio,
diff --git a/fs/f2fs/namei.c b/fs/f2fs/namei.c
index d879a29..535778c 100644
--- a/fs/f2fs/namei.c
+++ b/fs/f2fs/namei.c
@@ -22,7 +22,7 @@
 #include "acl.h"
 #include <trace/events/f2fs.h>
 
-static inline int is_extension_exist(const unsigned char *s, const char *sub,
+static inline bool is_extension_exist(const unsigned char *s, const char *sub,
 						bool tmp_ext)
 {
 	size_t slen = strlen(s);
@@ -30,19 +30,19 @@ static inline int is_extension_exist(const unsigned char *s, const char *sub,
 	int i;
 
 	if (sublen == 1 && *sub == '*')
-		return 1;
+		return true;
 
 	/*
 	 * filename format of multimedia file should be defined as:
 	 * "filename + '.' + extension + (optional: '.' + temp extension)".
 	 */
 	if (slen < sublen + 2)
-		return 0;
+		return false;
 
 	if (!tmp_ext) {
 		/* file has no temp extension */
 		if (s[slen - sublen - 1] != '.')
-			return 0;
+			return false;
 		return !strncasecmp(s + slen - sublen, sub, sublen);
 	}
 
@@ -50,10 +50,10 @@ static inline int is_extension_exist(const unsigned char *s, const char *sub,
 		if (s[i] != '.')
 			continue;
 		if (!strncasecmp(s + i + 1, sub, sublen))
-			return 1;
+			return true;
 	}
 
-	return 0;
+	return false;
 }
 
 int f2fs_update_extension_list(struct f2fs_sb_info *sbi, const char *name,
@@ -176,6 +176,32 @@ static void set_compress_new_inode(struct f2fs_sb_info *sbi, struct inode *dir,
 	}
 }
 
+/*
+ * Set file's temperature for hot/cold data separation
+ */
+static void set_file_temperature(struct f2fs_sb_info *sbi, struct inode *inode,
+		const unsigned char *name)
+{
+	__u8 (*extlist)[F2FS_EXTENSION_LEN] = sbi->raw_super->extension_list;
+	int i, cold_count, hot_count;
+
+	f2fs_down_read(&sbi->sb_lock);
+	cold_count = le32_to_cpu(sbi->raw_super->extension_count);
+	hot_count = sbi->raw_super->hot_ext_count;
+	for (i = 0; i < cold_count + hot_count; i++)
+		if (is_extension_exist(name, extlist[i], true))
+			break;
+	f2fs_up_read(&sbi->sb_lock);
+
+	if (i == cold_count + hot_count)
+		return;
+
+	if (i < cold_count)
+		file_set_cold(inode);
+	else
+		file_set_hot(inode);
+}
+
 static struct inode *f2fs_new_inode(struct user_namespace *mnt_userns,
 						struct inode *dir, umode_t mode,
 						const char *name)
@@ -274,6 +300,9 @@ static struct inode *f2fs_new_inode(struct user_namespace *mnt_userns,
 	if (test_opt(sbi, INLINE_DATA) && f2fs_may_inline_data(inode))
 		set_inode_flag(inode, FI_INLINE_DATA);
 
+	if (name && !test_opt(sbi, DISABLE_EXT_IDENTIFY))
+		set_file_temperature(sbi, inode, name);
+
 	stat_inc_inline_xattr(inode);
 	stat_inc_inline_inode(inode);
 	stat_inc_inline_dir(inode);
@@ -304,36 +333,6 @@ static struct inode *f2fs_new_inode(struct user_namespace *mnt_userns,
 	return ERR_PTR(err);
 }
 
-/*
- * Set file's temperature for hot/cold data separation
- */
-static inline void set_file_temperature(struct f2fs_sb_info *sbi, struct inode *inode,
-		const unsigned char *name)
-{
-	__u8 (*extlist)[F2FS_EXTENSION_LEN] = sbi->raw_super->extension_list;
-	int i, cold_count, hot_count;
-
-	f2fs_down_read(&sbi->sb_lock);
-
-	cold_count = le32_to_cpu(sbi->raw_super->extension_count);
-	hot_count = sbi->raw_super->hot_ext_count;
-
-	for (i = 0; i < cold_count + hot_count; i++) {
-		if (is_extension_exist(name, extlist[i], true))
-			break;
-	}
-
-	f2fs_up_read(&sbi->sb_lock);
-
-	if (i == cold_count + hot_count)
-		return;
-
-	if (i < cold_count)
-		file_set_cold(inode);
-	else
-		file_set_hot(inode);
-}
-
 static int f2fs_create(struct user_namespace *mnt_userns, struct inode *dir,
 		       struct dentry *dentry, umode_t mode, bool excl)
 {
@@ -355,9 +354,6 @@ static int f2fs_create(struct user_namespace *mnt_userns, struct inode *dir,
 	if (IS_ERR(inode))
 		return PTR_ERR(inode);
 
-	if (!test_opt(sbi, DISABLE_EXT_IDENTIFY))
-		set_file_temperature(sbi, inode, dentry->d_name.name);
-
 	inode->i_op = &f2fs_file_inode_operations;
 	inode->i_fop = &f2fs_file_operations;
 	inode->i_mapping->a_ops = &f2fs_dblock_aops;
@@ -629,6 +625,8 @@ static int f2fs_unlink(struct inode *dir, struct dentry *dentry)
 		goto fail;
 	}
 	f2fs_delete_entry(de, page, dir, inode);
+	f2fs_unlock_op(sbi);
+
 #if IS_ENABLED(CONFIG_UNICODE)
 	/* VFS negative dentries are incompatible with Encoding and
 	 * Case-insensitiveness. Eventually we'll want avoid
@@ -639,8 +637,6 @@ static int f2fs_unlink(struct inode *dir, struct dentry *dentry)
 	if (IS_CASEFOLDED(dir))
 		d_invalidate(dentry);
 #endif
-	f2fs_unlock_op(sbi);
-
 	if (IS_DIRSYNC(dir))
 		f2fs_sync_fs(sbi->sb, 1);
 fail:
@@ -930,9 +926,6 @@ static int f2fs_tmpfile(struct user_namespace *mnt_userns, struct inode *dir,
 static int f2fs_create_whiteout(struct user_namespace *mnt_userns,
 				struct inode *dir, struct inode **whiteout)
 {
-	if (unlikely(f2fs_cp_error(F2FS_I_SB(dir))))
-		return -EIO;
-
 	return __f2fs_tmpfile(mnt_userns, dir, NULL,
 				S_IFCHR | WHITEOUT_MODE, true, whiteout);
 }
@@ -970,7 +963,7 @@ static int f2fs_rename(struct user_namespace *mnt_userns, struct inode *old_dir,
 
 	/*
 	 * If new_inode is null, the below renaming flow will
-	 * add a link in old_dir which can conver inline_dir.
+	 * add a link in old_dir which can convert inline_dir.
 	 * After then, if we failed to get the entry due to other
 	 * reasons like ENOMEM, we had to remove the new entry.
 	 * Instead of adding such the error handling routine, let's
diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c
index 07419c3..19a1fee 100644
--- a/fs/f2fs/node.c
+++ b/fs/f2fs/node.c
@@ -60,7 +60,7 @@ bool f2fs_available_free_memory(struct f2fs_sb_info *sbi, int type)
 	avail_ram = val.totalram - val.totalhigh;
 
 	/*
-	 * give 25%, 25%, 50%, 50%, 50% memory for each components respectively
+	 * give 25%, 25%, 50%, 50%, 25%, 25% memory for each components respectively
 	 */
 	if (type == FREE_NIDS) {
 		mem_size = (nm_i->nid_cnt[FREE_NID] *
@@ -85,14 +85,16 @@ bool f2fs_available_free_memory(struct f2fs_sb_info *sbi, int type)
 						sizeof(struct ino_entry);
 		mem_size >>= PAGE_SHIFT;
 		res = mem_size < ((avail_ram * nm_i->ram_thresh / 100) >> 1);
-	} else if (type == READ_EXTENT_CACHE) {
-		struct extent_tree_info *eti = &sbi->extent_tree[EX_READ];
+	} else if (type == READ_EXTENT_CACHE || type == AGE_EXTENT_CACHE) {
+		enum extent_type etype = type == READ_EXTENT_CACHE ?
+						EX_READ : EX_BLOCK_AGE;
+		struct extent_tree_info *eti = &sbi->extent_tree[etype];
 
 		mem_size = (atomic_read(&eti->total_ext_tree) *
 				sizeof(struct extent_tree) +
 				atomic_read(&eti->total_ext_node) *
 				sizeof(struct extent_node)) >> PAGE_SHIFT;
-		res = mem_size < ((avail_ram * nm_i->ram_thresh / 100) >> 1);
+		res = mem_size < ((avail_ram * nm_i->ram_thresh / 100) >> 2);
 	} else if (type == DISCARD_CACHE) {
 		mem_size = (atomic_read(&dcc->discard_cmd_cnt) *
 				sizeof(struct discard_cmd)) >> PAGE_SHIFT;
@@ -1584,7 +1586,7 @@ static int __write_node_page(struct page *page, bool atomic, bool *submitted,
 		.op_flags = wbc_to_write_flags(wbc),
 		.page = page,
 		.encrypted_page = NULL,
-		.submitted = false,
+		.submitted = 0,
 		.io_type = io_type,
 		.io_wbc = wbc,
 	};
@@ -1648,7 +1650,6 @@ static int __write_node_page(struct page *page, bool atomic, bool *submitted,
 	}
 
 	set_page_writeback(page);
-	ClearPageError(page);
 
 	fio.old_blkaddr = ni.blk_addr;
 	f2fs_do_write_node_page(nid, &fio);
@@ -2077,8 +2078,6 @@ int f2fs_wait_on_node_pages_writeback(struct f2fs_sb_info *sbi,
 		spin_unlock_irqrestore(&sbi->fsync_node_lock, flags);
 
 		f2fs_wait_on_page_writeback(page, NODE, true, false);
-		if (TestClearPageError(page))
-			ret = -EIO;
 
 		put_page(page);
 
@@ -2542,10 +2541,8 @@ bool f2fs_alloc_nid(struct f2fs_sb_info *sbi, nid_t *nid)
 	struct f2fs_nm_info *nm_i = NM_I(sbi);
 	struct free_nid *i = NULL;
 retry:
-	if (time_to_inject(sbi, FAULT_ALLOC_NID)) {
-		f2fs_show_injection_info(sbi, FAULT_ALLOC_NID);
+	if (time_to_inject(sbi, FAULT_ALLOC_NID))
 		return false;
-	}
 
 	spin_lock(&nm_i->nid_list_lock);
 
diff --git a/fs/f2fs/node.h b/fs/f2fs/node.h
index 0aa4870..906fb67a 100644
--- a/fs/f2fs/node.h
+++ b/fs/f2fs/node.h
@@ -93,17 +93,15 @@ static inline void copy_node_info(struct node_info *dst,
 static inline void set_nat_flag(struct nat_entry *ne,
 				unsigned int type, bool set)
 {
-	unsigned char mask = 0x01 << type;
 	if (set)
-		ne->ni.flag |= mask;
+		ne->ni.flag |= BIT(type);
 	else
-		ne->ni.flag &= ~mask;
+		ne->ni.flag &= ~BIT(type);
 }
 
 static inline bool get_nat_flag(struct nat_entry *ne, unsigned int type)
 {
-	unsigned char mask = 0x01 << type;
-	return ne->ni.flag & mask;
+	return ne->ni.flag & BIT(type);
 }
 
 static inline void nat_reset_flag(struct nat_entry *ne)
@@ -147,6 +145,7 @@ enum mem_type {
 	DIRTY_DENTS,	/* indicates dirty dentry pages */
 	INO_ENTRIES,	/* indicates inode entries */
 	READ_EXTENT_CACHE,	/* indicates read extent cache */
+	AGE_EXTENT_CACHE,	/* indicates age extent cache */
 	DISCARD_CACHE,	/* indicates memory of cached discard cmds */
 	COMPRESS_PAGE,	/* indicates memory of cached compressed pages */
 	BASE_CHECK,	/* check kernel status */
@@ -224,7 +223,7 @@ static inline pgoff_t next_nat_addr(struct f2fs_sb_info *sbi,
 	struct f2fs_nm_info *nm_i = NM_I(sbi);
 
 	block_addr -= nm_i->nat_blkaddr;
-	block_addr ^= 1 << sbi->log_blocks_per_seg;
+	block_addr ^= BIT(sbi->log_blocks_per_seg);
 	return block_addr + nm_i->nat_blkaddr;
 }
 
@@ -394,7 +393,7 @@ static inline nid_t get_nid(struct page *p, int off, bool i)
 static inline int is_node(struct page *page, int type)
 {
 	struct f2fs_node *rn = F2FS_NODE(page);
-	return le32_to_cpu(rn->footer.flag) & (1 << type);
+	return le32_to_cpu(rn->footer.flag) & BIT(type);
 }
 
 #define is_cold_node(page)	is_node(page, COLD_BIT_SHIFT)
@@ -407,9 +406,9 @@ static inline void set_cold_node(struct page *page, bool is_dir)
 	unsigned int flag = le32_to_cpu(rn->footer.flag);
 
 	if (is_dir)
-		flag &= ~(0x1 << COLD_BIT_SHIFT);
+		flag &= ~BIT(COLD_BIT_SHIFT);
 	else
-		flag |= (0x1 << COLD_BIT_SHIFT);
+		flag |= BIT(COLD_BIT_SHIFT);
 	rn->footer.flag = cpu_to_le32(flag);
 }
 
@@ -418,9 +417,9 @@ static inline void set_mark(struct page *page, int mark, int type)
 	struct f2fs_node *rn = F2FS_NODE(page);
 	unsigned int flag = le32_to_cpu(rn->footer.flag);
 	if (mark)
-		flag |= (0x1 << type);
+		flag |= BIT(type);
 	else
-		flag &= ~(0x1 << type);
+		flag &= ~BIT(type);
 	rn->footer.flag = cpu_to_le32(flag);
 
 #ifdef CONFIG_F2FS_CHECK_FS
diff --git a/fs/f2fs/recovery.c b/fs/f2fs/recovery.c
index dea95b4..15d944a 100644
--- a/fs/f2fs/recovery.c
+++ b/fs/f2fs/recovery.c
@@ -825,19 +825,9 @@ int f2fs_recover_fsync_data(struct f2fs_sb_info *sbi, bool check_only)
 	unsigned long s_flags = sbi->sb->s_flags;
 	bool need_writecp = false;
 	bool fix_curseg_write_pointer = false;
-#ifdef CONFIG_QUOTA
-	int quota_enabled;
-#endif
 
-	if (s_flags & SB_RDONLY) {
+	if (is_sbi_flag_set(sbi, SBI_IS_WRITABLE))
 		f2fs_info(sbi, "recover fsync data on readonly fs");
-		sbi->sb->s_flags &= ~SB_RDONLY;
-	}
-
-#ifdef CONFIG_QUOTA
-	/* Turn on quotas so that they are updated correctly */
-	quota_enabled = f2fs_enable_quota_files(sbi, s_flags & SB_RDONLY);
-#endif
 
 	INIT_LIST_HEAD(&inode_list);
 	INIT_LIST_HEAD(&tmp_inode_list);
@@ -909,11 +899,6 @@ int f2fs_recover_fsync_data(struct f2fs_sb_info *sbi, bool check_only)
 		}
 	}
 
-#ifdef CONFIG_QUOTA
-	/* Turn quotas off */
-	if (quota_enabled)
-		f2fs_quota_off_umount(sbi->sb);
-#endif
 	sbi->sb->s_flags = s_flags; /* Restore SB_RDONLY status */
 
 	return ret ? ret : err;
@@ -923,9 +908,7 @@ int __init f2fs_create_recovery_cache(void)
 {
 	fsync_entry_slab = f2fs_kmem_cache_create("f2fs_fsync_inode_entry",
 					sizeof(struct fsync_inode_entry));
-	if (!fsync_entry_slab)
-		return -ENOMEM;
-	return 0;
+	return fsync_entry_slab ? 0 : -ENOMEM;
 }
 
 void f2fs_destroy_recovery_cache(void)
diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
index cbbf95b..c1506b4 100644
--- a/fs/f2fs/segment.c
+++ b/fs/f2fs/segment.c
@@ -194,6 +194,7 @@ void f2fs_abort_atomic_write(struct inode *inode, bool clean)
 
 	release_atomic_write_cnt(inode);
 	clear_inode_flag(inode, FI_ATOMIC_COMMITTED);
+	clear_inode_flag(inode, FI_ATOMIC_REPLACE);
 	clear_inode_flag(inode, FI_ATOMIC_FILE);
 	stat_dec_atomic_inode(inode);
 
@@ -216,7 +217,7 @@ static int __replace_atomic_write_block(struct inode *inode, pgoff_t index,
 
 retry:
 	set_new_dnode(&dn, inode, NULL, NULL, 0);
-	err = f2fs_get_dnode_of_data(&dn, index, LOOKUP_NODE_RA);
+	err = f2fs_get_dnode_of_data(&dn, index, ALLOC_NODE);
 	if (err) {
 		if (err == -ENOMEM) {
 			f2fs_io_schedule_timeout(DEFAULT_IO_TIMEOUT);
@@ -270,14 +271,24 @@ static void __complete_revoke_list(struct inode *inode, struct list_head *head,
 					bool revoke)
 {
 	struct revoke_entry *cur, *tmp;
+	pgoff_t start_index = 0;
+	bool truncate = is_inode_flag_set(inode, FI_ATOMIC_REPLACE);
 
 	list_for_each_entry_safe(cur, tmp, head, list) {
-		if (revoke)
+		if (revoke) {
 			__replace_atomic_write_block(inode, cur->index,
 						cur->old_addr, NULL, true);
+		} else if (truncate) {
+			f2fs_truncate_hole(inode, start_index, cur->index);
+			start_index = cur->index + 1;
+		}
+
 		list_del(&cur->list);
 		kmem_cache_free(revoke_entry_slab, cur);
 	}
+
+	if (!revoke && truncate)
+		f2fs_do_truncate_blocks(inode, start_index * PAGE_SIZE, false);
 }
 
 static int __f2fs_commit_atomic_write(struct inode *inode)
@@ -387,10 +398,8 @@ int f2fs_commit_atomic_write(struct inode *inode)
  */
 void f2fs_balance_fs(struct f2fs_sb_info *sbi, bool need)
 {
-	if (time_to_inject(sbi, FAULT_CHECKPOINT)) {
-		f2fs_show_injection_info(sbi, FAULT_CHECKPOINT);
+	if (time_to_inject(sbi, FAULT_CHECKPOINT))
 		f2fs_stop_checkpoint(sbi, false, STOP_CP_REASON_FAULT_INJECT);
-	}
 
 	/* balance_fs_bg is able to be pending */
 	if (need && excess_cached_nats(sbi))
@@ -403,27 +412,28 @@ void f2fs_balance_fs(struct f2fs_sb_info *sbi, bool need)
 	 * We should do GC or end up with checkpoint, if there are so many dirty
 	 * dir/node pages without enough free segments.
 	 */
-	if (has_not_enough_free_secs(sbi, 0, 0)) {
-		if (test_opt(sbi, GC_MERGE) && sbi->gc_thread &&
-					sbi->gc_thread->f2fs_gc_task) {
-			DEFINE_WAIT(wait);
+	if (has_enough_free_secs(sbi, 0, 0))
+		return;
 
-			prepare_to_wait(&sbi->gc_thread->fggc_wq, &wait,
-						TASK_UNINTERRUPTIBLE);
-			wake_up(&sbi->gc_thread->gc_wait_queue_head);
-			io_schedule();
-			finish_wait(&sbi->gc_thread->fggc_wq, &wait);
-		} else {
-			struct f2fs_gc_control gc_control = {
-				.victim_segno = NULL_SEGNO,
-				.init_gc_type = BG_GC,
-				.no_bg_gc = true,
-				.should_migrate_blocks = false,
-				.err_gc_skipped = false,
-				.nr_free_secs = 1 };
-			f2fs_down_write(&sbi->gc_lock);
-			f2fs_gc(sbi, &gc_control);
-		}
+	if (test_opt(sbi, GC_MERGE) && sbi->gc_thread &&
+				sbi->gc_thread->f2fs_gc_task) {
+		DEFINE_WAIT(wait);
+
+		prepare_to_wait(&sbi->gc_thread->fggc_wq, &wait,
+					TASK_UNINTERRUPTIBLE);
+		wake_up(&sbi->gc_thread->gc_wait_queue_head);
+		io_schedule();
+		finish_wait(&sbi->gc_thread->fggc_wq, &wait);
+	} else {
+		struct f2fs_gc_control gc_control = {
+			.victim_segno = NULL_SEGNO,
+			.init_gc_type = BG_GC,
+			.no_bg_gc = true,
+			.should_migrate_blocks = false,
+			.err_gc_skipped = false,
+			.nr_free_secs = 1 };
+		f2fs_down_write(&sbi->gc_lock);
+		f2fs_gc(sbi, &gc_control);
 	}
 }
 
@@ -456,6 +466,11 @@ void f2fs_balance_fs_bg(struct f2fs_sb_info *sbi, bool from_bg)
 		f2fs_shrink_read_extent_tree(sbi,
 				READ_EXTENT_CACHE_SHRINK_NUMBER);
 
+	/* try to shrink age extent cache when there is no enough memory */
+	if (!f2fs_available_free_memory(sbi, AGE_EXTENT_CACHE))
+		f2fs_shrink_age_extent_tree(sbi,
+				AGE_EXTENT_CACHE_SHRINK_NUMBER);
+
 	/* check the # of cached NAT entries */
 	if (!f2fs_available_free_memory(sbi, NAT_ENTRIES))
 		f2fs_try_to_free_nats(sbi, NAT_ENTRY_PER_BLOCK);
@@ -506,6 +521,8 @@ static int __submit_flush_wait(struct f2fs_sb_info *sbi,
 
 	trace_f2fs_issue_flush(bdev, test_opt(sbi, NOBARRIER),
 				test_opt(sbi, FLUSH_MERGE), ret);
+	if (!ret)
+		f2fs_update_iostat(sbi, NULL, FS_FLUSH_IO, 0);
 	return ret;
 }
 
@@ -636,12 +653,11 @@ int f2fs_create_flush_cmd_control(struct f2fs_sb_info *sbi)
 {
 	dev_t dev = sbi->sb->s_bdev->bd_dev;
 	struct flush_cmd_control *fcc;
-	int err = 0;
 
 	if (SM_I(sbi)->fcc_info) {
 		fcc = SM_I(sbi)->fcc_info;
 		if (fcc->f2fs_issue_flush)
-			return err;
+			return 0;
 		goto init_thread;
 	}
 
@@ -654,19 +670,19 @@ int f2fs_create_flush_cmd_control(struct f2fs_sb_info *sbi)
 	init_llist_head(&fcc->issue_list);
 	SM_I(sbi)->fcc_info = fcc;
 	if (!test_opt(sbi, FLUSH_MERGE))
-		return err;
+		return 0;
 
 init_thread:
 	fcc->f2fs_issue_flush = kthread_run(issue_flush_thread, sbi,
 				"f2fs_flush-%u:%u", MAJOR(dev), MINOR(dev));
 	if (IS_ERR(fcc->f2fs_issue_flush)) {
-		err = PTR_ERR(fcc->f2fs_issue_flush);
-		kfree(fcc);
-		SM_I(sbi)->fcc_info = NULL;
+		int err = PTR_ERR(fcc->f2fs_issue_flush);
+
+		fcc->f2fs_issue_flush = NULL;
 		return err;
 	}
 
-	return err;
+	return 0;
 }
 
 void f2fs_destroy_flush_cmd_control(struct f2fs_sb_info *sbi, bool free)
@@ -872,7 +888,7 @@ block_t f2fs_get_unusable_blocks(struct f2fs_sb_info *sbi)
 	}
 	mutex_unlock(&dirty_i->seglist_lock);
 
-	unusable = holes[DATA] > holes[NODE] ? holes[DATA] : holes[NODE];
+	unusable = max(holes[DATA], holes[NODE]);
 	if (unusable > ovp_holes)
 		return unusable - ovp_holes;
 	return 0;
@@ -924,9 +940,9 @@ static struct discard_cmd *__create_discard_cmd(struct f2fs_sb_info *sbi,
 	dc = f2fs_kmem_cache_alloc(discard_cmd_slab, GFP_NOFS, true, NULL);
 	INIT_LIST_HEAD(&dc->list);
 	dc->bdev = bdev;
-	dc->lstart = lstart;
-	dc->start = start;
-	dc->len = len;
+	dc->di.lstart = lstart;
+	dc->di.start = start;
+	dc->di.len = len;
 	dc->ref = 0;
 	dc->state = D_PREP;
 	dc->queued = 0;
@@ -941,20 +957,108 @@ static struct discard_cmd *__create_discard_cmd(struct f2fs_sb_info *sbi,
 	return dc;
 }
 
-static struct discard_cmd *__attach_discard_cmd(struct f2fs_sb_info *sbi,
-				struct block_device *bdev, block_t lstart,
-				block_t start, block_t len,
-				struct rb_node *parent, struct rb_node **p,
-				bool leftmost)
+static bool f2fs_check_discard_tree(struct f2fs_sb_info *sbi)
+{
+#ifdef CONFIG_F2FS_CHECK_FS
+	struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info;
+	struct rb_node *cur = rb_first_cached(&dcc->root), *next;
+	struct discard_cmd *cur_dc, *next_dc;
+
+	while (cur) {
+		next = rb_next(cur);
+		if (!next)
+			return true;
+
+		cur_dc = rb_entry(cur, struct discard_cmd, rb_node);
+		next_dc = rb_entry(next, struct discard_cmd, rb_node);
+
+		if (cur_dc->di.lstart + cur_dc->di.len > next_dc->di.lstart) {
+			f2fs_info(sbi, "broken discard_rbtree, "
+				"cur(%u, %u) next(%u, %u)",
+				cur_dc->di.lstart, cur_dc->di.len,
+				next_dc->di.lstart, next_dc->di.len);
+			return false;
+		}
+		cur = next;
+	}
+#endif
+	return true;
+}
+
+static struct discard_cmd *__lookup_discard_cmd(struct f2fs_sb_info *sbi,
+						block_t blkaddr)
 {
 	struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info;
+	struct rb_node *node = dcc->root.rb_root.rb_node;
 	struct discard_cmd *dc;
 
-	dc = __create_discard_cmd(sbi, bdev, lstart, start, len);
+	while (node) {
+		dc = rb_entry(node, struct discard_cmd, rb_node);
 
-	rb_link_node(&dc->rb_node, parent, p);
-	rb_insert_color_cached(&dc->rb_node, &dcc->root, leftmost);
+		if (blkaddr < dc->di.lstart)
+			node = node->rb_left;
+		else if (blkaddr >= dc->di.lstart + dc->di.len)
+			node = node->rb_right;
+		else
+			return dc;
+	}
+	return NULL;
+}
 
+static struct discard_cmd *__lookup_discard_cmd_ret(struct rb_root_cached *root,
+				block_t blkaddr,
+				struct discard_cmd **prev_entry,
+				struct discard_cmd **next_entry,
+				struct rb_node ***insert_p,
+				struct rb_node **insert_parent)
+{
+	struct rb_node **pnode = &root->rb_root.rb_node;
+	struct rb_node *parent = NULL, *tmp_node;
+	struct discard_cmd *dc;
+
+	*insert_p = NULL;
+	*insert_parent = NULL;
+	*prev_entry = NULL;
+	*next_entry = NULL;
+
+	if (RB_EMPTY_ROOT(&root->rb_root))
+		return NULL;
+
+	while (*pnode) {
+		parent = *pnode;
+		dc = rb_entry(*pnode, struct discard_cmd, rb_node);
+
+		if (blkaddr < dc->di.lstart)
+			pnode = &(*pnode)->rb_left;
+		else if (blkaddr >= dc->di.lstart + dc->di.len)
+			pnode = &(*pnode)->rb_right;
+		else
+			goto lookup_neighbors;
+	}
+
+	*insert_p = pnode;
+	*insert_parent = parent;
+
+	dc = rb_entry(parent, struct discard_cmd, rb_node);
+	tmp_node = parent;
+	if (parent && blkaddr > dc->di.lstart)
+		tmp_node = rb_next(parent);
+	*next_entry = rb_entry_safe(tmp_node, struct discard_cmd, rb_node);
+
+	tmp_node = parent;
+	if (parent && blkaddr < dc->di.lstart)
+		tmp_node = rb_prev(parent);
+	*prev_entry = rb_entry_safe(tmp_node, struct discard_cmd, rb_node);
+	return NULL;
+
+lookup_neighbors:
+	/* lookup prev node for merging backward later */
+	tmp_node = rb_prev(&dc->rb_node);
+	*prev_entry = rb_entry_safe(tmp_node, struct discard_cmd, rb_node);
+
+	/* lookup next node for merging frontward later */
+	tmp_node = rb_next(&dc->rb_node);
+	*next_entry = rb_entry_safe(tmp_node, struct discard_cmd, rb_node);
 	return dc;
 }
 
@@ -966,7 +1070,7 @@ static void __detach_discard_cmd(struct discard_cmd_control *dcc,
 
 	list_del(&dc->list);
 	rb_erase_cached(&dc->rb_node, &dcc->root);
-	dcc->undiscard_blks -= dc->len;
+	dcc->undiscard_blks -= dc->di.len;
 
 	kmem_cache_free(discard_cmd_slab, dc);
 
@@ -979,7 +1083,7 @@ static void __remove_discard_cmd(struct f2fs_sb_info *sbi,
 	struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info;
 	unsigned long flags;
 
-	trace_f2fs_remove_discard(dc->bdev, dc->start, dc->len);
+	trace_f2fs_remove_discard(dc->bdev, dc->di.start, dc->di.len);
 
 	spin_lock_irqsave(&dc->lock, flags);
 	if (dc->bio_ref) {
@@ -997,7 +1101,7 @@ static void __remove_discard_cmd(struct f2fs_sb_info *sbi,
 		printk_ratelimited(
 			"%sF2FS-fs (%s): Issue discard(%u, %u, %u) failed, ret: %d",
 			KERN_INFO, sbi->sb->s_id,
-			dc->lstart, dc->start, dc->len, dc->error);
+			dc->di.lstart, dc->di.start, dc->di.len, dc->error);
 	__detach_discard_cmd(dcc, dc);
 }
 
@@ -1058,7 +1162,7 @@ static void __init_discard_policy(struct f2fs_sb_info *sbi,
 	dpolicy->granularity = granularity;
 
 	dpolicy->max_requests = dcc->max_discard_request;
-	dpolicy->io_aware_gran = MAX_PLIST_NUM;
+	dpolicy->io_aware_gran = dcc->discard_io_aware_gran;
 	dpolicy->timeout = false;
 
 	if (discard_type == DPOLICY_BG) {
@@ -1068,8 +1172,8 @@ static void __init_discard_policy(struct f2fs_sb_info *sbi,
 		dpolicy->io_aware = true;
 		dpolicy->sync = false;
 		dpolicy->ordered = true;
-		if (utilization(sbi) > DEF_DISCARD_URGENT_UTIL) {
-			dpolicy->granularity = 1;
+		if (utilization(sbi) > dcc->discard_urgent_util) {
+			dpolicy->granularity = MIN_DISCARD_GRANULARITY;
 			if (atomic_read(&dcc->discard_cmd_cnt))
 				dpolicy->max_interval =
 					dcc->min_discard_issue_time;
@@ -1084,7 +1188,7 @@ static void __init_discard_policy(struct f2fs_sb_info *sbi,
 	} else if (discard_type == DPOLICY_UMOUNT) {
 		dpolicy->io_aware = false;
 		/* we need to issue all to keep CP_TRIMMED_FLAG */
-		dpolicy->granularity = 1;
+		dpolicy->granularity = MIN_DISCARD_GRANULARITY;
 		dpolicy->timeout = true;
 	}
 }
@@ -1094,9 +1198,8 @@ static void __update_discard_tree_range(struct f2fs_sb_info *sbi,
 				block_t start, block_t len);
 /* this function is copied from blkdev_issue_discard from block/blk-lib.c */
 static int __submit_discard_cmd(struct f2fs_sb_info *sbi,
-						struct discard_policy *dpolicy,
-						struct discard_cmd *dc,
-						unsigned int *issued)
+				struct discard_policy *dpolicy,
+				struct discard_cmd *dc, int *issued)
 {
 	struct block_device *bdev = dc->bdev;
 	unsigned int max_discard_blocks =
@@ -1114,14 +1217,14 @@ static int __submit_discard_cmd(struct f2fs_sb_info *sbi,
 	if (is_sbi_flag_set(sbi, SBI_NEED_FSCK))
 		return 0;
 
-	trace_f2fs_issue_discard(bdev, dc->start, dc->len);
+	trace_f2fs_issue_discard(bdev, dc->di.start, dc->di.len);
 
-	lstart = dc->lstart;
-	start = dc->start;
-	len = dc->len;
+	lstart = dc->di.lstart;
+	start = dc->di.start;
+	len = dc->di.len;
 	total_len = len;
 
-	dc->len = 0;
+	dc->di.len = 0;
 
 	while (total_len && *issued < dpolicy->max_requests && !err) {
 		struct bio *bio = NULL;
@@ -1137,18 +1240,16 @@ static int __submit_discard_cmd(struct f2fs_sb_info *sbi,
 		if (*issued == dpolicy->max_requests)
 			last = true;
 
-		dc->len += len;
+		dc->di.len += len;
 
 		if (time_to_inject(sbi, FAULT_DISCARD)) {
-			f2fs_show_injection_info(sbi, FAULT_DISCARD);
 			err = -EIO;
-			goto submit;
-		}
-		err = __blkdev_issue_discard(bdev,
+		} else {
+			err = __blkdev_issue_discard(bdev,
 					SECTOR_FROM_BLOCK(start),
 					SECTOR_FROM_BLOCK(len),
 					GFP_NOFS, &bio);
-submit:
+		}
 		if (err) {
 			spin_lock_irqsave(&dc->lock, flags);
 			if (dc->state == D_PARTIAL)
@@ -1186,7 +1287,7 @@ static int __submit_discard_cmd(struct f2fs_sb_info *sbi,
 
 		atomic_inc(&dcc->issued_discard);
 
-		f2fs_update_iostat(sbi, NULL, FS_DISCARD, len * F2FS_BLKSIZE);
+		f2fs_update_iostat(sbi, NULL, FS_DISCARD_IO, len * F2FS_BLKSIZE);
 
 		lstart += len;
 		start += len;
@@ -1201,34 +1302,41 @@ static int __submit_discard_cmd(struct f2fs_sb_info *sbi,
 	return err;
 }
 
-static void __insert_discard_tree(struct f2fs_sb_info *sbi,
+static void __insert_discard_cmd(struct f2fs_sb_info *sbi,
 				struct block_device *bdev, block_t lstart,
-				block_t start, block_t len,
-				struct rb_node **insert_p,
-				struct rb_node *insert_parent)
+				block_t start, block_t len)
 {
 	struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info;
-	struct rb_node **p;
+	struct rb_node **p = &dcc->root.rb_root.rb_node;
 	struct rb_node *parent = NULL;
+	struct discard_cmd *dc;
 	bool leftmost = true;
 
-	if (insert_p && insert_parent) {
-		parent = insert_parent;
-		p = insert_p;
-		goto do_insert;
+	/* look up rb tree to find parent node */
+	while (*p) {
+		parent = *p;
+		dc = rb_entry(parent, struct discard_cmd, rb_node);
+
+		if (lstart < dc->di.lstart) {
+			p = &(*p)->rb_left;
+		} else if (lstart >= dc->di.lstart + dc->di.len) {
+			p = &(*p)->rb_right;
+			leftmost = false;
+		} else {
+			f2fs_bug_on(sbi, 1);
+		}
 	}
 
-	p = f2fs_lookup_rb_tree_for_insert(sbi, &dcc->root, &parent,
-							lstart, &leftmost);
-do_insert:
-	__attach_discard_cmd(sbi, bdev, lstart, start, len, parent,
-								p, leftmost);
+	dc = __create_discard_cmd(sbi, bdev, lstart, start, len);
+
+	rb_link_node(&dc->rb_node, parent, p);
+	rb_insert_color_cached(&dc->rb_node, &dcc->root, leftmost);
 }
 
 static void __relocate_discard_cmd(struct discard_cmd_control *dcc,
 						struct discard_cmd *dc)
 {
-	list_move_tail(&dc->list, &dcc->pend_list[plist_idx(dc->len)]);
+	list_move_tail(&dc->list, &dcc->pend_list[plist_idx(dc->di.len)]);
 }
 
 static void __punch_discard_cmd(struct f2fs_sb_info *sbi,
@@ -1238,7 +1346,7 @@ static void __punch_discard_cmd(struct f2fs_sb_info *sbi,
 	struct discard_info di = dc->di;
 	bool modified = false;
 
-	if (dc->state == D_DONE || dc->len == 1) {
+	if (dc->state == D_DONE || dc->di.len == 1) {
 		__remove_discard_cmd(sbi, dc);
 		return;
 	}
@@ -1246,23 +1354,22 @@ static void __punch_discard_cmd(struct f2fs_sb_info *sbi,
 	dcc->undiscard_blks -= di.len;
 
 	if (blkaddr > di.lstart) {
-		dc->len = blkaddr - dc->lstart;
-		dcc->undiscard_blks += dc->len;
+		dc->di.len = blkaddr - dc->di.lstart;
+		dcc->undiscard_blks += dc->di.len;
 		__relocate_discard_cmd(dcc, dc);
 		modified = true;
 	}
 
 	if (blkaddr < di.lstart + di.len - 1) {
 		if (modified) {
-			__insert_discard_tree(sbi, dc->bdev, blkaddr + 1,
+			__insert_discard_cmd(sbi, dc->bdev, blkaddr + 1,
 					di.start + blkaddr + 1 - di.lstart,
-					di.lstart + di.len - 1 - blkaddr,
-					NULL, NULL);
+					di.lstart + di.len - 1 - blkaddr);
 		} else {
-			dc->lstart++;
-			dc->len--;
-			dc->start++;
-			dcc->undiscard_blks += dc->len;
+			dc->di.lstart++;
+			dc->di.len--;
+			dc->di.start++;
+			dcc->undiscard_blks += dc->di.len;
 			__relocate_discard_cmd(dcc, dc);
 		}
 	}
@@ -1281,17 +1388,14 @@ static void __update_discard_tree_range(struct f2fs_sb_info *sbi,
 			SECTOR_TO_BLOCK(bdev_max_discard_sectors(bdev));
 	block_t end = lstart + len;
 
-	dc = (struct discard_cmd *)f2fs_lookup_rb_tree_ret(&dcc->root,
-					NULL, lstart,
-					(struct rb_entry **)&prev_dc,
-					(struct rb_entry **)&next_dc,
-					&insert_p, &insert_parent, true, NULL);
+	dc = __lookup_discard_cmd_ret(&dcc->root, lstart,
+				&prev_dc, &next_dc, &insert_p, &insert_parent);
 	if (dc)
 		prev_dc = dc;
 
 	if (!prev_dc) {
 		di.lstart = lstart;
-		di.len = next_dc ? next_dc->lstart - lstart : len;
+		di.len = next_dc ? next_dc->di.lstart - lstart : len;
 		di.len = min(di.len, len);
 		di.start = start;
 	}
@@ -1302,16 +1406,16 @@ static void __update_discard_tree_range(struct f2fs_sb_info *sbi,
 		struct discard_cmd *tdc = NULL;
 
 		if (prev_dc) {
-			di.lstart = prev_dc->lstart + prev_dc->len;
+			di.lstart = prev_dc->di.lstart + prev_dc->di.len;
 			if (di.lstart < lstart)
 				di.lstart = lstart;
 			if (di.lstart >= end)
 				break;
 
-			if (!next_dc || next_dc->lstart > end)
+			if (!next_dc || next_dc->di.lstart > end)
 				di.len = end - di.lstart;
 			else
-				di.len = next_dc->lstart - di.lstart;
+				di.len = next_dc->di.lstart - di.lstart;
 			di.start = start + di.lstart - lstart;
 		}
 
@@ -1344,10 +1448,9 @@ static void __update_discard_tree_range(struct f2fs_sb_info *sbi,
 			merged = true;
 		}
 
-		if (!merged) {
-			__insert_discard_tree(sbi, bdev, di.lstart, di.start,
-							di.len, NULL, NULL);
-		}
+		if (!merged)
+			__insert_discard_cmd(sbi, bdev,
+						di.lstart, di.start, di.len);
  next:
 		prev_dc = next_dc;
 		if (!prev_dc)
@@ -1358,13 +1461,13 @@ static void __update_discard_tree_range(struct f2fs_sb_info *sbi,
 	}
 }
 
-static int __queue_discard_cmd(struct f2fs_sb_info *sbi,
+static void __queue_discard_cmd(struct f2fs_sb_info *sbi,
 		struct block_device *bdev, block_t blkstart, block_t blklen)
 {
 	block_t lblkstart = blkstart;
 
 	if (!f2fs_bdev_support_discard(bdev))
-		return 0;
+		return;
 
 	trace_f2fs_queue_discard(bdev, blkstart, blklen);
 
@@ -1376,27 +1479,21 @@ static int __queue_discard_cmd(struct f2fs_sb_info *sbi,
 	mutex_lock(&SM_I(sbi)->dcc_info->cmd_lock);
 	__update_discard_tree_range(sbi, bdev, lblkstart, blkstart, blklen);
 	mutex_unlock(&SM_I(sbi)->dcc_info->cmd_lock);
-	return 0;
 }
 
-static unsigned int __issue_discard_cmd_orderly(struct f2fs_sb_info *sbi,
-					struct discard_policy *dpolicy)
+static void __issue_discard_cmd_orderly(struct f2fs_sb_info *sbi,
+		struct discard_policy *dpolicy, int *issued)
 {
 	struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info;
 	struct discard_cmd *prev_dc = NULL, *next_dc = NULL;
 	struct rb_node **insert_p = NULL, *insert_parent = NULL;
 	struct discard_cmd *dc;
 	struct blk_plug plug;
-	unsigned int pos = dcc->next_pos;
-	unsigned int issued = 0;
 	bool io_interrupted = false;
 
 	mutex_lock(&dcc->cmd_lock);
-	dc = (struct discard_cmd *)f2fs_lookup_rb_tree_ret(&dcc->root,
-					NULL, pos,
-					(struct rb_entry **)&prev_dc,
-					(struct rb_entry **)&next_dc,
-					&insert_p, &insert_parent, true, NULL);
+	dc = __lookup_discard_cmd_ret(&dcc->root, dcc->next_pos,
+				&prev_dc, &next_dc, &insert_p, &insert_parent);
 	if (!dc)
 		dc = next_dc;
 
@@ -1414,10 +1511,10 @@ static unsigned int __issue_discard_cmd_orderly(struct f2fs_sb_info *sbi,
 			break;
 		}
 
-		dcc->next_pos = dc->lstart + dc->len;
-		err = __submit_discard_cmd(sbi, dpolicy, dc, &issued);
+		dcc->next_pos = dc->di.lstart + dc->di.len;
+		err = __submit_discard_cmd(sbi, dpolicy, dc, issued);
 
-		if (issued >= dpolicy->max_requests)
+		if (*issued >= dpolicy->max_requests)
 			break;
 next:
 		node = rb_next(&dc->rb_node);
@@ -1433,10 +1530,8 @@ static unsigned int __issue_discard_cmd_orderly(struct f2fs_sb_info *sbi,
 
 	mutex_unlock(&dcc->cmd_lock);
 
-	if (!issued && io_interrupted)
-		issued = -1;
-
-	return issued;
+	if (!(*issued) && io_interrupted)
+		*issued = -1;
 }
 static unsigned int __wait_all_discard_cmd(struct f2fs_sb_info *sbi,
 					struct discard_policy *dpolicy);
@@ -1464,8 +1559,10 @@ static int __issue_discard_cmd(struct f2fs_sb_info *sbi,
 		if (i + 1 < dpolicy->granularity)
 			break;
 
-		if (i + 1 < DEFAULT_DISCARD_GRANULARITY && dpolicy->ordered)
-			return __issue_discard_cmd_orderly(sbi, dpolicy);
+		if (i + 1 < dcc->max_ordered_discard && dpolicy->ordered) {
+			__issue_discard_cmd_orderly(sbi, dpolicy, &issued);
+			return issued;
+		}
 
 		pend_list = &dcc->pend_list[i];
 
@@ -1473,8 +1570,7 @@ static int __issue_discard_cmd(struct f2fs_sb_info *sbi,
 		if (list_empty(pend_list))
 			goto next;
 		if (unlikely(dcc->rbtree_check))
-			f2fs_bug_on(sbi, !f2fs_check_rb_tree_consistence(sbi,
-							&dcc->root));
+			f2fs_bug_on(sbi, !f2fs_check_discard_tree(sbi));
 		blk_start_plug(&plug);
 		list_for_each_entry_safe(dc, tmp, pend_list, list) {
 			f2fs_bug_on(sbi, dc->state != D_PREP);
@@ -1552,7 +1648,7 @@ static unsigned int __wait_one_discard_bio(struct f2fs_sb_info *sbi,
 	dc->ref--;
 	if (!dc->ref) {
 		if (!dc->error)
-			len = dc->len;
+			len = dc->di.len;
 		__remove_discard_cmd(sbi, dc);
 	}
 	mutex_unlock(&dcc->cmd_lock);
@@ -1575,14 +1671,15 @@ static unsigned int __wait_discard_cmd_range(struct f2fs_sb_info *sbi,
 
 	mutex_lock(&dcc->cmd_lock);
 	list_for_each_entry_safe(iter, tmp, wait_list, list) {
-		if (iter->lstart + iter->len <= start || end <= iter->lstart)
+		if (iter->di.lstart + iter->di.len <= start ||
+					end <= iter->di.lstart)
 			continue;
-		if (iter->len < dpolicy->granularity)
+		if (iter->di.len < dpolicy->granularity)
 			continue;
 		if (iter->state == D_DONE && !iter->ref) {
 			wait_for_completion_io(&iter->wait);
 			if (!iter->error)
-				trimmed += iter->len;
+				trimmed += iter->di.len;
 			__remove_discard_cmd(sbi, iter);
 		} else {
 			iter->ref++;
@@ -1610,9 +1707,9 @@ static unsigned int __wait_all_discard_cmd(struct f2fs_sb_info *sbi,
 		return __wait_discard_cmd_range(sbi, dpolicy, 0, UINT_MAX);
 
 	/* wait all */
-	__init_discard_policy(sbi, &dp, DPOLICY_FSTRIM, 1);
+	__init_discard_policy(sbi, &dp, DPOLICY_FSTRIM, MIN_DISCARD_GRANULARITY);
 	discard_blks = __wait_discard_cmd_range(sbi, &dp, 0, UINT_MAX);
-	__init_discard_policy(sbi, &dp, DPOLICY_UMOUNT, 1);
+	__init_discard_policy(sbi, &dp, DPOLICY_UMOUNT, MIN_DISCARD_GRANULARITY);
 	discard_blks += __wait_discard_cmd_range(sbi, &dp, 0, UINT_MAX);
 
 	return discard_blks;
@@ -1626,8 +1723,7 @@ static void f2fs_wait_discard_bio(struct f2fs_sb_info *sbi, block_t blkaddr)
 	bool need_wait = false;
 
 	mutex_lock(&dcc->cmd_lock);
-	dc = (struct discard_cmd *)f2fs_lookup_rb_tree(&dcc->root,
-							NULL, blkaddr);
+	dc = __lookup_discard_cmd(sbi, blkaddr);
 	if (dc) {
 		if (dc->state == D_PREP) {
 			__punch_discard_cmd(sbi, dc, blkaddr);
@@ -1654,13 +1750,23 @@ void f2fs_stop_discard_thread(struct f2fs_sb_info *sbi)
 	}
 }
 
-/* This comes from f2fs_put_super */
+/**
+ * f2fs_issue_discard_timeout() - Issue all discard cmd within UMOUNT_DISCARD_TIMEOUT
+ * @sbi: the f2fs_sb_info data for discard cmd to issue
+ *
+ * When UMOUNT_DISCARD_TIMEOUT is exceeded, all remaining discard commands will be dropped
+ *
+ * Return true if issued all discard cmd or no discard cmd need issue, otherwise return false.
+ */
 bool f2fs_issue_discard_timeout(struct f2fs_sb_info *sbi)
 {
 	struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info;
 	struct discard_policy dpolicy;
 	bool dropped;
 
+	if (!atomic_read(&dcc->discard_cmd_cnt))
+		return true;
+
 	__init_discard_policy(sbi, &dpolicy, DPOLICY_UMOUNT,
 					dcc->discard_granularity);
 	__issue_discard_cmd(sbi, &dpolicy);
@@ -1670,7 +1776,7 @@ bool f2fs_issue_discard_timeout(struct f2fs_sb_info *sbi)
 	__wait_all_discard_cmd(sbi, NULL);
 
 	f2fs_bug_on(sbi, atomic_read(&dcc->discard_cmd_cnt));
-	return dropped;
+	return !dropped;
 }
 
 static int issue_discard_thread(void *data)
@@ -1685,23 +1791,21 @@ static int issue_discard_thread(void *data)
 	set_freezable();
 
 	do {
-		if (sbi->gc_mode == GC_URGENT_HIGH ||
-			!f2fs_available_free_memory(sbi, DISCARD_CACHE))
-			__init_discard_policy(sbi, &dpolicy, DPOLICY_FORCE, 1);
-		else
-			__init_discard_policy(sbi, &dpolicy, DPOLICY_BG,
-						dcc->discard_granularity);
-
-		if (!atomic_read(&dcc->discard_cmd_cnt))
-		       wait_ms = dpolicy.max_interval;
-
 		wait_event_interruptible_timeout(*q,
 				kthread_should_stop() || freezing(current) ||
 				dcc->discard_wake,
 				msecs_to_jiffies(wait_ms));
 
+		if (sbi->gc_mode == GC_URGENT_HIGH ||
+			!f2fs_available_free_memory(sbi, DISCARD_CACHE))
+			__init_discard_policy(sbi, &dpolicy, DPOLICY_FORCE,
+						MIN_DISCARD_GRANULARITY);
+		else
+			__init_discard_policy(sbi, &dpolicy, DPOLICY_BG,
+						dcc->discard_granularity);
+
 		if (dcc->discard_wake)
-			dcc->discard_wake = 0;
+			dcc->discard_wake = false;
 
 		/* clean up pending candidates before going to sleep */
 		if (atomic_read(&dcc->queued_discard))
@@ -1713,12 +1817,11 @@ static int issue_discard_thread(void *data)
 			continue;
 		if (kthread_should_stop())
 			return 0;
-		if (is_sbi_flag_set(sbi, SBI_NEED_FSCK)) {
+		if (is_sbi_flag_set(sbi, SBI_NEED_FSCK) ||
+			!atomic_read(&dcc->discard_cmd_cnt)) {
 			wait_ms = dpolicy.max_interval;
 			continue;
 		}
-		if (!atomic_read(&dcc->discard_cmd_cnt))
-			continue;
 
 		sb_start_intwrite(sbi->sb);
 
@@ -1733,6 +1836,8 @@ static int issue_discard_thread(void *data)
 		} else {
 			wait_ms = dpolicy.max_interval;
 		}
+		if (!atomic_read(&dcc->discard_cmd_cnt))
+			wait_ms = dpolicy.max_interval;
 
 		sb_end_intwrite(sbi->sb);
 
@@ -1747,6 +1852,7 @@ static int __f2fs_issue_discard_zone(struct f2fs_sb_info *sbi,
 	sector_t sector, nr_sects;
 	block_t lblkstart = blkstart;
 	int devi = 0;
+	u64 remainder = 0;
 
 	if (f2fs_is_multi_device(sbi)) {
 		devi = f2fs_target_device_index(sbi, blkstart);
@@ -1762,9 +1868,9 @@ static int __f2fs_issue_discard_zone(struct f2fs_sb_info *sbi,
 	if (f2fs_blkz_is_seq(sbi, devi, blkstart)) {
 		sector = SECTOR_FROM_BLOCK(blkstart);
 		nr_sects = SECTOR_FROM_BLOCK(blklen);
+		div64_u64_rem(sector, bdev_zone_sectors(bdev), &remainder);
 
-		if (sector & (bdev_zone_sectors(bdev) - 1) ||
-				nr_sects != bdev_zone_sectors(bdev)) {
+		if (remainder || nr_sects != bdev_zone_sectors(bdev)) {
 			f2fs_err(sbi, "(%d) %s: Unaligned zone reset attempted (block %x + %x)",
 				 devi, sbi->s_ndevs ? FDEV(devi).path : "",
 				 blkstart, blklen);
@@ -1776,7 +1882,8 @@ static int __f2fs_issue_discard_zone(struct f2fs_sb_info *sbi,
 	}
 
 	/* For conventional zones, use regular discard if supported */
-	return __queue_discard_cmd(sbi, bdev, lblkstart, blklen);
+	__queue_discard_cmd(sbi, bdev, lblkstart, blklen);
+	return 0;
 }
 #endif
 
@@ -1787,7 +1894,8 @@ static int __issue_discard_async(struct f2fs_sb_info *sbi,
 	if (f2fs_sb_has_blkzoned(sbi) && bdev_is_zoned(bdev))
 		return __f2fs_issue_discard_zone(sbi, bdev, blkstart, blklen);
 #endif
-	return __queue_discard_cmd(sbi, bdev, blkstart, blklen);
+	__queue_discard_cmd(sbi, bdev, blkstart, blklen);
+	return 0;
 }
 
 static int f2fs_issue_discard(struct f2fs_sb_info *sbi,
@@ -1967,9 +2075,11 @@ void f2fs_clear_prefree_segments(struct f2fs_sb_info *sbi,
 
 		if (force && start >= cpc->trim_start &&
 					(end - 1) <= cpc->trim_end)
-				continue;
+			continue;
 
-		if (!f2fs_lfs_mode(sbi) || !__is_large_section(sbi)) {
+		/* Should cover 2MB zoned device for zone-based reset */
+		if (!f2fs_sb_has_blkzoned(sbi) &&
+		    (!f2fs_lfs_mode(sbi) || !__is_large_section(sbi))) {
 			f2fs_issue_discard(sbi, START_BLOCK(sbi, start),
 				(end - start) << sbi->log_blocks_per_seg);
 			continue;
@@ -2063,7 +2173,9 @@ static int create_discard_cmd_control(struct f2fs_sb_info *sbi)
 	if (!dcc)
 		return -ENOMEM;
 
+	dcc->discard_io_aware_gran = MAX_PLIST_NUM;
 	dcc->discard_granularity = DEFAULT_DISCARD_GRANULARITY;
+	dcc->max_ordered_discard = DEFAULT_MAX_ORDERED_DISCARD_GRANULARITY;
 	if (F2FS_OPTION(sbi).discard_unit == DISCARD_UNIT_SEGMENT)
 		dcc->discard_granularity = sbi->blocks_per_seg;
 	else if (F2FS_OPTION(sbi).discard_unit == DISCARD_UNIT_SECTION)
@@ -2084,6 +2196,7 @@ static int create_discard_cmd_control(struct f2fs_sb_info *sbi)
 	dcc->min_discard_issue_time = DEF_MIN_DISCARD_ISSUE_TIME;
 	dcc->mid_discard_issue_time = DEF_MID_DISCARD_ISSUE_TIME;
 	dcc->max_discard_issue_time = DEF_MAX_DISCARD_ISSUE_TIME;
+	dcc->discard_urgent_util = DEF_DISCARD_URGENT_UTIL;
 	dcc->undiscard_blks = 0;
 	dcc->next_pos = 0;
 	dcc->root = RB_ROOT_CACHED;
@@ -2114,8 +2227,7 @@ static void destroy_discard_cmd_control(struct f2fs_sb_info *sbi)
 	 * Recovery can cache discard commands, so in error path of
 	 * fill_super(), it needs to give a chance to handle them.
 	 */
-	if (unlikely(atomic_read(&dcc->discard_cmd_cnt)))
-		f2fs_issue_discard_timeout(sbi);
+	f2fs_issue_discard_timeout(sbi);
 
 	kfree(dcc);
 	SM_I(sbi)->dcc_info = NULL;
@@ -2324,17 +2436,13 @@ bool f2fs_is_checkpointed_data(struct f2fs_sb_info *sbi, block_t blkaddr)
 	return is_cp;
 }
 
-/*
- * This function should be resided under the curseg_mutex lock
- */
-static void __add_sum_entry(struct f2fs_sb_info *sbi, int type,
-					struct f2fs_summary *sum)
+static unsigned short f2fs_curseg_valid_blocks(struct f2fs_sb_info *sbi, int type)
 {
 	struct curseg_info *curseg = CURSEG_I(sbi, type);
-	void *addr = curseg->sum_blk;
 
-	addr += curseg->next_blkoff * sizeof(struct f2fs_summary);
-	memcpy(addr, sum, sizeof(struct f2fs_summary));
+	if (sbi->ckpt->alloc_type[type] == SSR)
+		return sbi->blocks_per_seg;
+	return curseg->next_blkoff;
 }
 
 /*
@@ -2346,15 +2454,11 @@ int f2fs_npages_for_summary_flush(struct f2fs_sb_info *sbi, bool for_ra)
 	int i, sum_in_page;
 
 	for (i = CURSEG_HOT_DATA; i <= CURSEG_COLD_DATA; i++) {
-		if (sbi->ckpt->alloc_type[i] == SSR)
-			valid_sum_count += sbi->blocks_per_seg;
-		else {
-			if (for_ra)
-				valid_sum_count += le16_to_cpu(
-					F2FS_CKPT(sbi)->cur_data_blkoff[i]);
-			else
-				valid_sum_count += curseg_blkoff(sbi, i);
-		}
+		if (sbi->ckpt->alloc_type[i] != SSR && for_ra)
+			valid_sum_count +=
+				le16_to_cpu(F2FS_CKPT(sbi)->cur_data_blkoff[i]);
+		else
+			valid_sum_count += f2fs_curseg_valid_blocks(sbi, i);
 	}
 
 	sum_in_page = (PAGE_SIZE - 2 * SUM_JOURNAL_SIZE -
@@ -2625,30 +2729,10 @@ static int __next_free_blkoff(struct f2fs_sb_info *sbi,
 	return __find_rev_next_zero_bit(target_map, sbi->blocks_per_seg, start);
 }
 
-/*
- * If a segment is written by LFS manner, next block offset is just obtained
- * by increasing the current block offset. However, if a segment is written by
- * SSR manner, next block offset obtained by calling __next_free_blkoff
- */
-static void __refresh_next_blkoff(struct f2fs_sb_info *sbi,
-				struct curseg_info *seg)
+static int f2fs_find_next_ssr_block(struct f2fs_sb_info *sbi,
+		struct curseg_info *seg)
 {
-	if (seg->alloc_type == SSR) {
-		seg->next_blkoff =
-			__next_free_blkoff(sbi, seg->segno,
-						seg->next_blkoff + 1);
-	} else {
-		seg->next_blkoff++;
-		if (F2FS_OPTION(sbi).fs_mode == FS_MODE_FRAGMENT_BLK) {
-			/* To allocate block chunks in different sizes, use random number */
-			if (--seg->fragment_remained_chunk <= 0) {
-				seg->fragment_remained_chunk =
-				   prandom_u32_max(sbi->max_fragment_chunk) + 1;
-				seg->next_blkoff +=
-				   prandom_u32_max(sbi->max_fragment_hole) + 1;
-			}
-		}
-	}
+	return __next_free_blkoff(sbi, seg->segno, seg->next_blkoff + 1);
 }
 
 bool f2fs_segment_has_free_slot(struct f2fs_sb_info *sbi, int segno)
@@ -2660,7 +2744,7 @@ bool f2fs_segment_has_free_slot(struct f2fs_sb_info *sbi, int segno)
  * This function always allocates a used segment(from dirty seglist) by SSR
  * manner, so it should recover the existing segment information of valid blocks
  */
-static void change_curseg(struct f2fs_sb_info *sbi, int type, bool flush)
+static void change_curseg(struct f2fs_sb_info *sbi, int type)
 {
 	struct dirty_seglist_info *dirty_i = DIRTY_I(sbi);
 	struct curseg_info *curseg = CURSEG_I(sbi, type);
@@ -2668,9 +2752,7 @@ static void change_curseg(struct f2fs_sb_info *sbi, int type, bool flush)
 	struct f2fs_summary_block *sum_node;
 	struct page *sum_page;
 
-	if (flush)
-		write_sum_page(sbi, curseg->sum_blk,
-					GET_SUM_BLOCK(sbi, curseg->segno));
+	write_sum_page(sbi, curseg->sum_blk, GET_SUM_BLOCK(sbi, curseg->segno));
 
 	__set_test_and_inuse(sbi, new_segno);
 
@@ -2709,7 +2791,7 @@ static void get_atssr_segment(struct f2fs_sb_info *sbi, int type,
 		struct seg_entry *se = get_seg_entry(sbi, curseg->next_segno);
 
 		curseg->seg_type = se->type;
-		change_curseg(sbi, type, true);
+		change_curseg(sbi, type);
 	} else {
 		/* allocate cold segment by default */
 		curseg->seg_type = CURSEG_COLD_DATA;
@@ -2800,7 +2882,6 @@ static int get_ssr_segment(struct f2fs_sb_info *sbi, int type,
 				int alloc_mode, unsigned long long age)
 {
 	struct curseg_info *curseg = CURSEG_I(sbi, type);
-	const struct victim_selection *v_ops = DIRTY_I(sbi)->v_ops;
 	unsigned segno = NULL_SEGNO;
 	unsigned short seg_type = curseg->seg_type;
 	int i, cnt;
@@ -2809,7 +2890,7 @@ static int get_ssr_segment(struct f2fs_sb_info *sbi, int type,
 	sanity_check_seg_type(sbi, seg_type);
 
 	/* f2fs_need_SSR() already forces to do this */
-	if (!v_ops->get_victim(sbi, &segno, BG_GC, seg_type, alloc_mode, age)) {
+	if (!f2fs_get_victim(sbi, &segno, BG_GC, seg_type, alloc_mode, age)) {
 		curseg->next_segno = segno;
 		return 1;
 	}
@@ -2836,7 +2917,7 @@ static int get_ssr_segment(struct f2fs_sb_info *sbi, int type,
 	for (; cnt-- > 0; reversed ? i-- : i++) {
 		if (i == seg_type)
 			continue;
-		if (!v_ops->get_victim(sbi, &segno, BG_GC, i, alloc_mode, age)) {
+		if (!f2fs_get_victim(sbi, &segno, BG_GC, i, alloc_mode, age)) {
 			curseg->next_segno = segno;
 			return 1;
 		}
@@ -2853,31 +2934,20 @@ static int get_ssr_segment(struct f2fs_sb_info *sbi, int type,
 	return 0;
 }
 
-/*
- * flush out current segment and replace it with new segment
- * This function should be returned with success, otherwise BUG
- */
-static void allocate_segment_by_default(struct f2fs_sb_info *sbi,
-						int type, bool force)
+static bool need_new_seg(struct f2fs_sb_info *sbi, int type)
 {
 	struct curseg_info *curseg = CURSEG_I(sbi, type);
 
-	if (force)
-		new_curseg(sbi, type, true);
-	else if (!is_set_ckpt_flags(sbi, CP_CRC_RECOVERY_FLAG) &&
-					curseg->seg_type == CURSEG_WARM_NODE)
-		new_curseg(sbi, type, false);
-	else if (curseg->alloc_type == LFS &&
-			is_next_segment_free(sbi, curseg, type) &&
-			likely(!is_sbi_flag_set(sbi, SBI_CP_DISABLED)))
-		new_curseg(sbi, type, false);
-	else if (f2fs_need_SSR(sbi) &&
-			get_ssr_segment(sbi, type, SSR, 0))
-		change_curseg(sbi, type, true);
-	else
-		new_curseg(sbi, type, false);
-
-	stat_inc_seg_type(sbi, curseg);
+	if (!is_set_ckpt_flags(sbi, CP_CRC_RECOVERY_FLAG) &&
+	    curseg->seg_type == CURSEG_WARM_NODE)
+		return true;
+	if (curseg->alloc_type == LFS &&
+	    is_next_segment_free(sbi, curseg, type) &&
+	    likely(!is_sbi_flag_set(sbi, SBI_CP_DISABLED)))
+		return true;
+	if (!f2fs_need_SSR(sbi) || !get_ssr_segment(sbi, type, SSR, 0))
+		return true;
+	return false;
 }
 
 void f2fs_allocate_segment_for_resize(struct f2fs_sb_info *sbi, int type,
@@ -2895,7 +2965,7 @@ void f2fs_allocate_segment_for_resize(struct f2fs_sb_info *sbi, int type,
 		goto unlock;
 
 	if (f2fs_need_SSR(sbi) && get_ssr_segment(sbi, type, SSR, 0))
-		change_curseg(sbi, type, true);
+		change_curseg(sbi, type);
 	else
 		new_curseg(sbi, type, true);
 
@@ -2919,32 +2989,23 @@ static void __allocate_new_segment(struct f2fs_sb_info *sbi, int type,
 	struct curseg_info *curseg = CURSEG_I(sbi, type);
 	unsigned int old_segno;
 
-	if (!curseg->inited)
-		goto alloc;
-
-	if (force || curseg->next_blkoff ||
-		get_valid_blocks(sbi, curseg->segno, new_sec))
-		goto alloc;
-
-	if (!get_ckpt_valid_blocks(sbi, curseg->segno, new_sec))
+	if (!force && curseg->inited &&
+	    !curseg->next_blkoff &&
+	    !get_valid_blocks(sbi, curseg->segno, new_sec) &&
+	    !get_ckpt_valid_blocks(sbi, curseg->segno, new_sec))
 		return;
-alloc:
-	old_segno = curseg->segno;
-	SIT_I(sbi)->s_ops->allocate_segment(sbi, type, true);
-	locate_dirty_segment(sbi, old_segno);
-}
 
-static void __allocate_new_section(struct f2fs_sb_info *sbi,
-						int type, bool force)
-{
-	__allocate_new_segment(sbi, type, true, force);
+	old_segno = curseg->segno;
+	new_curseg(sbi, type, true);
+	stat_inc_seg_type(sbi, curseg);
+	locate_dirty_segment(sbi, old_segno);
 }
 
 void f2fs_allocate_new_section(struct f2fs_sb_info *sbi, int type, bool force)
 {
 	f2fs_down_read(&SM_I(sbi)->curseg_lock);
 	down_write(&SIT_I(sbi)->sentry_lock);
-	__allocate_new_section(sbi, type, force);
+	__allocate_new_segment(sbi, type, true, force);
 	up_write(&SIT_I(sbi)->sentry_lock);
 	f2fs_up_read(&SM_I(sbi)->curseg_lock);
 }
@@ -2961,10 +3022,6 @@ void f2fs_allocate_new_segments(struct f2fs_sb_info *sbi)
 	f2fs_up_read(&SM_I(sbi)->curseg_lock);
 }
 
-static const struct segment_allocation default_salloc_ops = {
-	.allocate_segment = allocate_segment_by_default,
-};
-
 bool f2fs_exist_trim_candidates(struct f2fs_sb_info *sbi,
 						struct cp_control *cpc)
 {
@@ -3001,24 +3058,20 @@ static unsigned int __issue_discard_cmd_range(struct f2fs_sb_info *sbi,
 
 	mutex_lock(&dcc->cmd_lock);
 	if (unlikely(dcc->rbtree_check))
-		f2fs_bug_on(sbi, !f2fs_check_rb_tree_consistence(sbi,
-							&dcc->root));
+		f2fs_bug_on(sbi, !f2fs_check_discard_tree(sbi));
 
-	dc = (struct discard_cmd *)f2fs_lookup_rb_tree_ret(&dcc->root,
-					NULL, start,
-					(struct rb_entry **)&prev_dc,
-					(struct rb_entry **)&next_dc,
-					&insert_p, &insert_parent, true, NULL);
+	dc = __lookup_discard_cmd_ret(&dcc->root, start,
+				&prev_dc, &next_dc, &insert_p, &insert_parent);
 	if (!dc)
 		dc = next_dc;
 
 	blk_start_plug(&plug);
 
-	while (dc && dc->lstart <= end) {
+	while (dc && dc->di.lstart <= end) {
 		struct rb_node *node;
 		int err = 0;
 
-		if (dc->len < dpolicy->granularity)
+		if (dc->di.len < dpolicy->granularity)
 			goto skip;
 
 		if (dc->state != D_PREP) {
@@ -3029,7 +3082,7 @@ static unsigned int __issue_discard_cmd_range(struct f2fs_sb_info *sbi,
 		err = __submit_discard_cmd(sbi, dpolicy, dc, &issued);
 
 		if (issued >= dpolicy->max_requests) {
-			start = dc->lstart + dc->len;
+			start = dc->di.lstart + dc->di.len;
 
 			if (err)
 				__remove_discard_cmd(sbi, dc);
@@ -3126,13 +3179,6 @@ int f2fs_trim_fs(struct f2fs_sb_info *sbi, struct fstrim_range *range)
 	return err;
 }
 
-static bool __has_curseg_space(struct f2fs_sb_info *sbi,
-					struct curseg_info *curseg)
-{
-	return curseg->next_blkoff < f2fs_usable_blks_in_seg(sbi,
-							curseg->segno);
-}
-
 int f2fs_rw_hint_to_seg_type(enum rw_hint hint)
 {
 	switch (hint) {
@@ -3170,10 +3216,28 @@ static int __get_segment_type_4(struct f2fs_io_info *fio)
 	}
 }
 
+static int __get_age_segment_type(struct inode *inode, pgoff_t pgofs)
+{
+	struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
+	struct extent_info ei = {};
+
+	if (f2fs_lookup_age_extent_cache(inode, pgofs, &ei)) {
+		if (!ei.age)
+			return NO_CHECK_TYPE;
+		if (ei.age <= sbi->hot_data_age_threshold)
+			return CURSEG_HOT_DATA;
+		if (ei.age <= sbi->warm_data_age_threshold)
+			return CURSEG_WARM_DATA;
+		return CURSEG_COLD_DATA;
+	}
+	return NO_CHECK_TYPE;
+}
+
 static int __get_segment_type_6(struct f2fs_io_info *fio)
 {
 	if (fio->type == DATA) {
 		struct inode *inode = fio->page->mapping->host;
+		int type;
 
 		if (is_inode_flag_set(inode, FI_ALIGNED_WRITE))
 			return CURSEG_COLD_DATA_PINNED;
@@ -3188,6 +3252,11 @@ static int __get_segment_type_6(struct f2fs_io_info *fio)
 		}
 		if (file_is_cold(inode) || f2fs_need_compress_data(inode))
 			return CURSEG_COLD_DATA;
+
+		type = __get_age_segment_type(inode, fio->page->index);
+		if (type != NO_CHECK_TYPE)
+			return type;
+
 		if (file_is_hot(inode) ||
 				is_inode_flag_set(inode, FI_HOT_DATA) ||
 				f2fs_is_cow_file(inode))
@@ -3228,6 +3297,19 @@ static int __get_segment_type(struct f2fs_io_info *fio)
 	return type;
 }
 
+static void f2fs_randomize_chunk(struct f2fs_sb_info *sbi,
+		struct curseg_info *seg)
+{
+	/* To allocate block chunks in different sizes, use random number */
+	if (--seg->fragment_remained_chunk > 0)
+		return;
+
+	seg->fragment_remained_chunk =
+		prandom_u32_max(sbi->max_fragment_chunk) + 1;
+	seg->next_blkoff +=
+		prandom_u32_max(sbi->max_fragment_hole) + 1;
+}
+
 void f2fs_allocate_data_block(struct f2fs_sb_info *sbi, struct page *page,
 		block_t old_blkaddr, block_t *new_blkaddr,
 		struct f2fs_summary *sum, int type,
@@ -3238,6 +3320,7 @@ void f2fs_allocate_data_block(struct f2fs_sb_info *sbi, struct page *page,
 	unsigned long long old_mtime;
 	bool from_gc = (type == CURSEG_ALL_DATA_ATGC);
 	struct seg_entry *se = NULL;
+	bool segment_full = false;
 
 	f2fs_down_read(&SM_I(sbi)->curseg_lock);
 
@@ -3256,15 +3339,16 @@ void f2fs_allocate_data_block(struct f2fs_sb_info *sbi, struct page *page,
 
 	f2fs_wait_discard_bio(sbi, *new_blkaddr);
 
-	/*
-	 * __add_sum_entry should be resided under the curseg_mutex
-	 * because, this function updates a summary entry in the
-	 * current summary block.
-	 */
-	__add_sum_entry(sbi, type, sum);
-
-	__refresh_next_blkoff(sbi, curseg);
-
+	curseg->sum_blk->entries[curseg->next_blkoff] = *sum;
+	if (curseg->alloc_type == SSR) {
+		curseg->next_blkoff = f2fs_find_next_ssr_block(sbi, curseg);
+	} else {
+		curseg->next_blkoff++;
+		if (F2FS_OPTION(sbi).fs_mode == FS_MODE_FRAGMENT_BLK)
+			f2fs_randomize_chunk(sbi, curseg);
+	}
+	if (curseg->next_blkoff >= f2fs_usable_blks_in_seg(sbi, curseg->segno))
+		segment_full = true;
 	stat_inc_block_count(sbi, curseg);
 
 	if (from_gc) {
@@ -3283,12 +3367,21 @@ void f2fs_allocate_data_block(struct f2fs_sb_info *sbi, struct page *page,
 	if (GET_SEGNO(sbi, old_blkaddr) != NULL_SEGNO)
 		update_sit_entry(sbi, old_blkaddr, -1);
 
-	if (!__has_curseg_space(sbi, curseg)) {
-		if (from_gc)
+	/*
+	 * If the current segment is full, flush it out and replace it with a
+	 * new segment.
+	 */
+	if (segment_full) {
+		if (from_gc) {
 			get_atssr_segment(sbi, type, se->type,
 						AT_SSR, se->mtime);
-		else
-			sit_i->s_ops->allocate_segment(sbi, type, false);
+		} else {
+			if (need_new_seg(sbi, type))
+				new_curseg(sbi, type, false);
+			else
+				change_curseg(sbi, type);
+			stat_inc_seg_type(sbi, curseg);
+		}
 	}
 	/*
 	 * segment dirty status should be updated after segment allocation,
@@ -3298,6 +3391,9 @@ void f2fs_allocate_data_block(struct f2fs_sb_info *sbi, struct page *page,
 	locate_dirty_segment(sbi, GET_SEGNO(sbi, old_blkaddr));
 	locate_dirty_segment(sbi, GET_SEGNO(sbi, *new_blkaddr));
 
+	if (IS_DATASEG(type))
+		atomic64_inc(&sbi->allocated_data_blocks);
+
 	up_write(&sit_i->sentry_lock);
 
 	if (page && IS_NODESEG(type)) {
@@ -3310,10 +3406,10 @@ void f2fs_allocate_data_block(struct f2fs_sb_info *sbi, struct page *page,
 		struct f2fs_bio_info *io;
 
 		if (F2FS_IO_ALIGNED(sbi))
-			fio->retry = false;
+			fio->retry = 0;
 
 		INIT_LIST_HEAD(&fio->list);
-		fio->in_list = true;
+		fio->in_list = 1;
 		io = sbi->write_io[fio->type] + fio->temp;
 		spin_lock(&io->io_lock);
 		list_add_tail(&fio->list, &io->io_list);
@@ -3394,14 +3490,13 @@ void f2fs_do_write_meta_page(struct f2fs_sb_info *sbi, struct page *page,
 		.new_blkaddr = page->index,
 		.page = page,
 		.encrypted_page = NULL,
-		.in_list = false,
+		.in_list = 0,
 	};
 
 	if (unlikely(page->index >= MAIN_BLKADDR(sbi)))
 		fio.op_flags &= ~REQ_META;
 
 	set_page_writeback(page);
-	ClearPageError(page);
 	f2fs_submit_page_write(&fio);
 
 	stat_inc_meta_count(sbi, page->index);
@@ -3425,6 +3520,8 @@ void f2fs_outplace_write_data(struct dnode_of_data *dn,
 	struct f2fs_summary sum;
 
 	f2fs_bug_on(sbi, dn->data_blkaddr == NULL_ADDR);
+	if (fio->io_type == FS_DATA_IO || fio->io_type == FS_CP_DATA_IO)
+		f2fs_update_age_extent_cache(dn);
 	set_summary(&sum, dn->nid, dn->ofs_in_node, fio->version);
 	do_write_page(&sum, fio);
 	f2fs_update_data_blkaddr(dn, fio->new_blkaddr);
@@ -3464,7 +3561,7 @@ int f2fs_inplace_write_data(struct f2fs_io_info *fio)
 
 	stat_inc_inplace_blocks(fio->sbi);
 
-	if (fio->bio && !(SM_I(sbi)->ipu_policy & (1 << F2FS_IPU_NOCACHE)))
+	if (fio->bio && !IS_F2FS_IPU_NOCACHE(sbi))
 		err = f2fs_merge_page_bio(fio);
 	else
 		err = f2fs_submit_page_bio(fio);
@@ -3549,11 +3646,11 @@ void f2fs_do_replace_block(struct f2fs_sb_info *sbi, struct f2fs_summary *sum,
 	/* change the current segment */
 	if (segno != curseg->segno) {
 		curseg->next_segno = segno;
-		change_curseg(sbi, type, true);
+		change_curseg(sbi, type);
 	}
 
 	curseg->next_blkoff = GET_BLKOFF_FROM_SEG0(sbi, new_blkaddr);
-	__add_sum_entry(sbi, type, sum);
+	curseg->sum_blk->entries[curseg->next_blkoff] = *sum;
 
 	if (!recover_curseg || recover_newaddr) {
 		if (!from_gc)
@@ -3577,7 +3674,7 @@ void f2fs_do_replace_block(struct f2fs_sb_info *sbi, struct f2fs_summary *sum,
 	if (recover_curseg) {
 		if (old_cursegno != curseg->segno) {
 			curseg->next_segno = old_cursegno;
-			change_curseg(sbi, type, true);
+			change_curseg(sbi, type);
 		}
 		curseg->next_blkoff = old_blkoff;
 		curseg->alloc_type = old_alloc_type;
@@ -3611,7 +3708,7 @@ void f2fs_wait_on_page_writeback(struct page *page,
 
 		/* submit cached LFS IO */
 		f2fs_submit_merged_write_cond(sbi, NULL, page, 0, type);
-		/* sbumit cached IPU IO */
+		/* submit cached IPU IO */
 		f2fs_submit_merged_ipu_write(sbi, NULL, page);
 		if (ordered) {
 			wait_on_page_writeback(page);
@@ -3862,15 +3959,8 @@ static void write_compacted_summaries(struct f2fs_sb_info *sbi, block_t blkaddr)
 
 	/* Step 3: write summary entries */
 	for (i = CURSEG_HOT_DATA; i <= CURSEG_COLD_DATA; i++) {
-		unsigned short blkoff;
-
 		seg_i = CURSEG_I(sbi, i);
-		if (sbi->ckpt->alloc_type[i] == SSR)
-			blkoff = sbi->blocks_per_seg;
-		else
-			blkoff = curseg_blkoff(sbi, i);
-
-		for (j = 0; j < blkoff; j++) {
+		for (j = 0; j < f2fs_curseg_valid_blocks(sbi, i); j++) {
 			if (!page) {
 				page = f2fs_grab_meta_page(sbi, blkaddr++);
 				kaddr = (unsigned char *)page_address(page);
@@ -4274,9 +4364,6 @@ static int build_sit_info(struct f2fs_sb_info *sbi)
 		return -ENOMEM;
 #endif
 
-	/* init SIT information */
-	sit_i->s_ops = &default_salloc_ops;
-
 	sit_i->sit_base_addr = le32_to_cpu(raw_super->sit_blkaddr);
 	sit_i->sit_blocks = sit_segs << sbi->log_blocks_per_seg;
 	sit_i->written_valid_blocks = 0;
@@ -4862,9 +4949,8 @@ static int fix_curseg_write_pointer(struct f2fs_sb_info *sbi, int type)
 			    "New zone for curseg[%d] is not yet discarded. "
 			    "Reset the zone: curseg[0x%x,0x%x]",
 			    type, cs->segno, cs->next_blkoff);
-		err = __f2fs_issue_discard_zone(sbi, zbd->bdev,
-				zone_sector >> log_sectors_per_block,
-				zone.len >> log_sectors_per_block);
+		err = __f2fs_issue_discard_zone(sbi, zbd->bdev,	cs_zone_block,
+					zone.len >> log_sectors_per_block);
 		if (err) {
 			f2fs_err(sbi, "Discard zone failed: %s (errno=%d)",
 				 zbd->path, err);
@@ -5049,7 +5135,7 @@ int f2fs_build_segment_manager(struct f2fs_sb_info *sbi)
 		sm_info->rec_prefree_segments = DEF_MAX_RECLAIM_PREFREE_SEGMENTS;
 
 	if (!f2fs_lfs_mode(sbi))
-		sm_info->ipu_policy = 1 << F2FS_IPU_FSYNC;
+		sm_info->ipu_policy = BIT(F2FS_IPU_FSYNC);
 	sm_info->min_ipu_util = DEF_MIN_IPU_UTIL;
 	sm_info->min_fsync_blocks = DEF_MIN_FSYNC_BLOCKS;
 	sm_info->min_seq_blocks = sbi->blocks_per_seg;
@@ -5060,11 +5146,9 @@ int f2fs_build_segment_manager(struct f2fs_sb_info *sbi)
 
 	init_f2fs_rwsem(&sm_info->curseg_lock);
 
-	if (!f2fs_readonly(sbi->sb)) {
-		err = f2fs_create_flush_cmd_control(sbi);
-		if (err)
-			return err;
-	}
+	err = f2fs_create_flush_cmd_control(sbi);
+	if (err)
+		return err;
 
 	err = create_discard_cmd_control(sbi);
 	if (err)
diff --git a/fs/f2fs/segment.h b/fs/f2fs/segment.h
index f3951e8..2ca8fb5 100644
--- a/fs/f2fs/segment.h
+++ b/fs/f2fs/segment.h
@@ -225,10 +225,6 @@ struct sec_entry {
 	unsigned int valid_blocks;	/* # of valid blocks in a section */
 };
 
-struct segment_allocation {
-	void (*allocate_segment)(struct f2fs_sb_info *, int, bool);
-};
-
 #define MAX_SKIP_GC_COUNT			16
 
 struct revoke_entry {
@@ -238,8 +234,6 @@ struct revoke_entry {
 };
 
 struct sit_info {
-	const struct segment_allocation *s_ops;
-
 	block_t sit_base_addr;		/* start block address of SIT area */
 	block_t sit_blocks;		/* # of blocks used by SIT area */
 	block_t written_valid_blocks;	/* # of valid blocks in main area */
@@ -295,7 +289,6 @@ enum dirty_type {
 };
 
 struct dirty_seglist_info {
-	const struct victim_selection *v_ops;	/* victim selction operation */
 	unsigned long *dirty_segmap[NR_DIRTY_TYPE];
 	unsigned long *dirty_secmap;
 	struct mutex seglist_lock;		/* lock for segment bitmaps */
@@ -306,12 +299,6 @@ struct dirty_seglist_info {
 	bool enable_pin_section;		/* enable pinning section */
 };
 
-/* victim selection function for cleaning and SSR */
-struct victim_selection {
-	int (*get_victim)(struct f2fs_sb_info *, unsigned int *,
-					int, int, char, unsigned long long);
-};
-
 /* for active log information */
 struct curseg_info {
 	struct mutex curseg_mutex;		/* lock for consistency */
@@ -656,11 +643,17 @@ static inline bool has_not_enough_free_secs(struct f2fs_sb_info *sbi,
 	return !curseg_space;
 }
 
+static inline bool has_enough_free_secs(struct f2fs_sb_info *sbi,
+					int freed, int needed)
+{
+	return !has_not_enough_free_secs(sbi, freed, needed);
+}
+
 static inline bool f2fs_is_checkpoint_ready(struct f2fs_sb_info *sbi)
 {
 	if (likely(!is_sbi_flag_set(sbi, SBI_CP_DISABLED)))
 		return true;
-	if (likely(!has_not_enough_free_secs(sbi, 0, 0)))
+	if (likely(has_enough_free_secs(sbi, 0, 0)))
 		return true;
 	return false;
 }
@@ -700,6 +693,9 @@ static inline int utilization(struct f2fs_sb_info *sbi)
 
 #define SMALL_VOLUME_SEGMENTS	(16 * 512)	/* 16GB */
 
+#define F2FS_IPU_DISABLE	0
+
+/* Modification on enum should be synchronized with ipu_mode_names array */
 enum {
 	F2FS_IPU_FORCE,
 	F2FS_IPU_SSR,
@@ -709,8 +705,29 @@ enum {
 	F2FS_IPU_ASYNC,
 	F2FS_IPU_NOCACHE,
 	F2FS_IPU_HONOR_OPU_WRITE,
+	F2FS_IPU_MAX,
 };
 
+static inline bool IS_F2FS_IPU_DISABLE(struct f2fs_sb_info *sbi)
+{
+	return SM_I(sbi)->ipu_policy == F2FS_IPU_DISABLE;
+}
+
+#define F2FS_IPU_POLICY(name)					\
+static inline bool IS_##name(struct f2fs_sb_info *sbi)		\
+{								\
+	return SM_I(sbi)->ipu_policy & BIT(name);		\
+}
+
+F2FS_IPU_POLICY(F2FS_IPU_FORCE);
+F2FS_IPU_POLICY(F2FS_IPU_SSR);
+F2FS_IPU_POLICY(F2FS_IPU_UTIL);
+F2FS_IPU_POLICY(F2FS_IPU_SSR_UTIL);
+F2FS_IPU_POLICY(F2FS_IPU_FSYNC);
+F2FS_IPU_POLICY(F2FS_IPU_ASYNC);
+F2FS_IPU_POLICY(F2FS_IPU_NOCACHE);
+F2FS_IPU_POLICY(F2FS_IPU_HONOR_OPU_WRITE);
+
 static inline unsigned int curseg_segno(struct f2fs_sb_info *sbi,
 		int type)
 {
@@ -725,15 +742,10 @@ static inline unsigned char curseg_alloc_type(struct f2fs_sb_info *sbi,
 	return curseg->alloc_type;
 }
 
-static inline unsigned short curseg_blkoff(struct f2fs_sb_info *sbi, int type)
+static inline bool valid_main_segno(struct f2fs_sb_info *sbi,
+		unsigned int segno)
 {
-	struct curseg_info *curseg = CURSEG_I(sbi, type);
-	return curseg->next_blkoff;
-}
-
-static inline void check_seg_range(struct f2fs_sb_info *sbi, unsigned int segno)
-{
-	f2fs_bug_on(sbi, segno > TOTAL_SEGS(sbi) - 1);
+	return segno <= (MAIN_SEGS(sbi) - 1);
 }
 
 static inline void verify_fio_blkaddr(struct f2fs_io_info *fio)
@@ -788,7 +800,7 @@ static inline int check_block_count(struct f2fs_sb_info *sbi,
 
 	/* check segment usage, and check boundary of a given segment number */
 	if (unlikely(GET_SIT_VBLOCKS(raw_sit) > usable_blks_per_seg
-					|| segno > TOTAL_SEGS(sbi) - 1)) {
+					|| !valid_main_segno(sbi, segno))) {
 		f2fs_err(sbi, "Wrong valid blocks %d or segno %u",
 			 GET_SIT_VBLOCKS(raw_sit), segno);
 		set_sbi_flag(sbi, SBI_NEED_FSCK);
@@ -805,7 +817,7 @@ static inline pgoff_t current_sit_addr(struct f2fs_sb_info *sbi,
 	unsigned int offset = SIT_BLOCK_OFFSET(start);
 	block_t blk_addr = sit_i->sit_base_addr + offset;
 
-	check_seg_range(sbi, start);
+	f2fs_bug_on(sbi, !valid_main_segno(sbi, start));
 
 #ifdef CONFIG_F2FS_CHECK_FS
 	if (f2fs_test_bit(offset, sit_i->sit_bitmap) !=
@@ -954,6 +966,6 @@ static inline void wake_up_discard_thread(struct f2fs_sb_info *sbi, bool force)
 	if (!wakeup || !is_idle(sbi, DISCARD_TIME))
 		return;
 wake_up:
-	dcc->discard_wake = 1;
+	dcc->discard_wake = true;
 	wake_up_interruptible_all(&dcc->discard_wait_queue);
 }
diff --git a/fs/f2fs/shrinker.c b/fs/f2fs/shrinker.c
index 33c490e..83d6fb9 100644
--- a/fs/f2fs/shrinker.c
+++ b/fs/f2fs/shrinker.c
@@ -59,6 +59,9 @@ unsigned long f2fs_shrink_count(struct shrinker *shrink,
 		/* count read extent cache entries */
 		count += __count_extent_cache(sbi, EX_READ);
 
+		/* count block age extent cache entries */
+		count += __count_extent_cache(sbi, EX_BLOCK_AGE);
+
 		/* count clean nat cache entries */
 		count += __count_nat_entries(sbi);
 
@@ -102,8 +105,11 @@ unsigned long f2fs_shrink_scan(struct shrinker *shrink,
 
 		sbi->shrinker_run_no = run_no;
 
+		/* shrink extent cache entries */
+		freed += f2fs_shrink_age_extent_tree(sbi, nr >> 2);
+
 		/* shrink read extent cache entries */
-		freed += f2fs_shrink_read_extent_tree(sbi, nr >> 1);
+		freed += f2fs_shrink_read_extent_tree(sbi, nr >> 2);
 
 		/* shrink clean nat cache entries */
 		if (freed < nr)
@@ -134,6 +140,8 @@ void f2fs_join_shrinker(struct f2fs_sb_info *sbi)
 void f2fs_leave_shrinker(struct f2fs_sb_info *sbi)
 {
 	f2fs_shrink_read_extent_tree(sbi, __count_extent_cache(sbi, EX_READ));
+	f2fs_shrink_age_extent_tree(sbi,
+				__count_extent_cache(sbi, EX_BLOCK_AGE));
 
 	spin_lock(&f2fs_list_lock);
 	list_del_init(&sbi->s_list);
diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index b6dad38..fcd22e2 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -28,6 +28,7 @@
 #include <linux/part_stat.h>
 #include <linux/zstd.h>
 #include <linux/lz4.h>
+#include <linux/cleancache.h>
 
 #include "f2fs.h"
 #include "node.h"
@@ -61,6 +62,7 @@ const char *f2fs_fault_name[FAULT_MAX] = {
 	[FAULT_SLAB_ALLOC]	= "slab alloc",
 	[FAULT_DQUOT_INIT]	= "dquot initialize",
 	[FAULT_LOCK_OP]		= "lock_op",
+	[FAULT_BLKADDR]		= "invalid blkaddr",
 };
 
 void f2fs_build_fault_attr(struct f2fs_sb_info *sbi, unsigned int rate,
@@ -110,6 +112,7 @@ enum {
 	Opt_noinline_dentry,
 	Opt_flush_merge,
 	Opt_noflush_merge,
+	Opt_barrier,
 	Opt_nobarrier,
 	Opt_fastboot,
 	Opt_extent_cache,
@@ -161,6 +164,7 @@ enum {
 	Opt_nogc_merge,
 	Opt_discard_unit,
 	Opt_memory_mode,
+	Opt_age_extent_cache,
 	Opt_err,
 };
 
@@ -186,6 +190,7 @@ static match_table_t f2fs_tokens = {
 	{Opt_noinline_dentry, "noinline_dentry"},
 	{Opt_flush_merge, "flush_merge"},
 	{Opt_noflush_merge, "noflush_merge"},
+	{Opt_barrier, "barrier"},
 	{Opt_nobarrier, "nobarrier"},
 	{Opt_fastboot, "fastboot"},
 	{Opt_extent_cache, "extent_cache"},
@@ -238,6 +243,7 @@ static match_table_t f2fs_tokens = {
 	{Opt_nogc_merge, "nogc_merge"},
 	{Opt_discard_unit, "discard_unit=%s"},
 	{Opt_memory_mode, "memory=%s"},
+	{Opt_age_extent_cache, "age_extent_cache"},
 	{Opt_err, NULL},
 };
 
@@ -285,9 +291,7 @@ static int __init f2fs_create_casefold_cache(void)
 {
 	f2fs_cf_name_slab = f2fs_kmem_cache_create("f2fs_casefolded_name",
 							F2FS_NAME_LEN);
-	if (!f2fs_cf_name_slab)
-		return -ENOMEM;
-	return 0;
+	return f2fs_cf_name_slab ? 0 : -ENOMEM;
 }
 
 static void f2fs_destroy_casefold_cache(void)
@@ -537,12 +541,6 @@ static int f2fs_set_test_dummy_encryption(struct super_block *sb,
 				  opt, err);
 		return -EINVAL;
 	}
-	err = fscrypt_add_test_dummy_key(sb, policy);
-	if (err) {
-		f2fs_warn(sbi, "Error adding test dummy encryption key [%d]",
-			  err);
-		return err;
-	}
 	f2fs_warn(sbi, "Test dummy encryption mode enabled");
 	return 0;
 }
@@ -806,6 +804,9 @@ static int parse_options(struct super_block *sb, char *options, bool is_remount)
 		case Opt_nobarrier:
 			set_opt(sbi, NOBARRIER);
 			break;
+		case Opt_barrier:
+			clear_opt(sbi, NOBARRIER);
+			break;
 		case Opt_fastboot:
 			set_opt(sbi, FASTBOOT);
 			break;
@@ -880,8 +881,8 @@ static int parse_options(struct super_block *sb, char *options, bool is_remount)
 			if (args->from && match_int(args, &arg))
 				return -EINVAL;
 			if (arg <= 0 || arg > __ilog2_u32(BIO_MAX_VECS)) {
-				f2fs_warn(sbi, "Not support %d, larger than %d",
-					  1 << arg, BIO_MAX_VECS);
+				f2fs_warn(sbi, "Not support %ld, larger than %d",
+					BIT(arg), BIO_MAX_VECS);
 				return -EINVAL;
 			}
 			F2FS_OPTION(sbi).write_io_size_bits = arg;
@@ -1179,9 +1180,17 @@ static int parse_options(struct super_block *sb, char *options, bool is_remount)
 			kfree(name);
 			break;
 		case Opt_compress_chksum:
+			if (!f2fs_sb_has_compression(sbi)) {
+				f2fs_info(sbi, "Image doesn't support compression");
+				break;
+			}
 			F2FS_OPTION(sbi).compress_chksum = true;
 			break;
 		case Opt_compress_mode:
+			if (!f2fs_sb_has_compression(sbi)) {
+				f2fs_info(sbi, "Image doesn't support compression");
+				break;
+			}
 			name = match_strdup(&args[0]);
 			if (!name)
 				return -ENOMEM;
@@ -1196,6 +1205,10 @@ static int parse_options(struct super_block *sb, char *options, bool is_remount)
 			kfree(name);
 			break;
 		case Opt_compress_cache:
+			if (!f2fs_sb_has_compression(sbi)) {
+				f2fs_info(sbi, "Image doesn't support compression");
+				break;
+			}
 			set_opt(sbi, COMPRESS_CACHE);
 			break;
 #else
@@ -1253,6 +1266,9 @@ static int parse_options(struct super_block *sb, char *options, bool is_remount)
 			}
 			kfree(name);
 			break;
+		case Opt_age_extent_cache:
+			set_opt(sbi, AGE_EXTENT_CACHE);
+			break;
 		default:
 			f2fs_err(sbi, "Unrecognized mount option \"%s\" or missing value",
 				 p);
@@ -1285,19 +1301,18 @@ static int parse_options(struct super_block *sb, char *options, bool is_remount)
 	 * zone alignment optimization. This is optional for host-aware
 	 * devices, but mandatory for host-managed zoned block devices.
 	 */
-#ifndef CONFIG_BLK_DEV_ZONED
 	if (f2fs_sb_has_blkzoned(sbi)) {
-		f2fs_err(sbi, "Zoned block device support is not enabled");
-		return -EINVAL;
-	}
-#endif
-	if (f2fs_sb_has_blkzoned(sbi)) {
+#ifdef CONFIG_BLK_DEV_ZONED
 		if (F2FS_OPTION(sbi).discard_unit !=
 						DISCARD_UNIT_SECTION) {
 			f2fs_info(sbi, "Zoned block device doesn't need small discard, set discard_unit=section by default");
 			F2FS_OPTION(sbi).discard_unit =
 					DISCARD_UNIT_SECTION;
 		}
+#else
+		f2fs_err(sbi, "Zoned block device support is not enabled");
+		return -EINVAL;
+#endif
 	}
 
 #ifdef CONFIG_F2FS_FS_COMPRESSION
@@ -1308,7 +1323,7 @@ static int parse_options(struct super_block *sb, char *options, bool is_remount)
 #endif
 
 	if (F2FS_IO_SIZE_BITS(sbi) && !f2fs_lfs_mode(sbi)) {
-		f2fs_err(sbi, "Should set mode=lfs with %uKB-sized IO",
+		f2fs_err(sbi, "Should set mode=lfs with %luKB-sized IO",
 			 F2FS_IO_SIZE_KB(sbi));
 		return -EINVAL;
 	}
@@ -1338,12 +1353,17 @@ static int parse_options(struct super_block *sb, char *options, bool is_remount)
 	}
 
 	if (test_opt(sbi, DISABLE_CHECKPOINT) && f2fs_lfs_mode(sbi)) {
-		f2fs_err(sbi, "LFS not compatible with checkpoint=disable");
+		f2fs_err(sbi, "LFS is not compatible with checkpoint=disable");
 		return -EINVAL;
 	}
 
 	if (test_opt(sbi, ATGC) && f2fs_lfs_mode(sbi)) {
-		f2fs_err(sbi, "LFS not compatible with ATGC");
+		f2fs_err(sbi, "LFS is not compatible with ATGC");
+		return -EINVAL;
+	}
+
+	if (f2fs_is_readonly(sbi) && test_opt(sbi, FLUSH_MERGE)) {
+		f2fs_err(sbi, "FLUSH_MERGE not compatible with readonly mode");
 		return -EINVAL;
 	}
 
@@ -1358,10 +1378,8 @@ static struct inode *f2fs_alloc_inode(struct super_block *sb)
 {
 	struct f2fs_inode_info *fi;
 
-	if (time_to_inject(F2FS_SB(sb), FAULT_SLAB_ALLOC)) {
-		f2fs_show_injection_info(F2FS_SB(sb), FAULT_SLAB_ALLOC);
+	if (time_to_inject(F2FS_SB(sb), FAULT_SLAB_ALLOC))
 		return NULL;
-	}
 
 	fi = alloc_inode_sb(sb, f2fs_inode_cachep, GFP_F2FS_ZERO);
 	if (!fi)
@@ -1533,7 +1551,7 @@ static void f2fs_put_super(struct super_block *sb)
 {
 	struct f2fs_sb_info *sbi = F2FS_SB(sb);
 	int i;
-	bool dropped;
+	bool done;
 
 	/* unregister procfs/sysfs entries in advance to avoid race case */
 	f2fs_unregister_sysfs(sbi);
@@ -1563,10 +1581,8 @@ static void f2fs_put_super(struct super_block *sb)
 	}
 
 	/* be sure to wait for any on-going discard commands */
-	dropped = f2fs_issue_discard_timeout(sbi);
-
-	if ((f2fs_hw_support_discard(sbi) || f2fs_hw_should_discard(sbi)) &&
-					!sbi->discard_blks && !dropped) {
+	done = f2fs_issue_discard_timeout(sbi);
+	if (f2fs_realtime_discard_enable(sbi) && !sbi->discard_blks && done) {
 		struct cp_control cpc = {
 			.reason = CP_UMOUNT | CP_TRIMMED,
 		};
@@ -1891,15 +1907,24 @@ static int f2fs_show_options(struct seq_file *seq, struct dentry *root)
 
 	if (test_opt(sbi, GC_MERGE))
 		seq_puts(seq, ",gc_merge");
+	else
+		seq_puts(seq, ",nogc_merge");
 
 	if (test_opt(sbi, DISABLE_ROLL_FORWARD))
 		seq_puts(seq, ",disable_roll_forward");
 	if (test_opt(sbi, NORECOVERY))
 		seq_puts(seq, ",norecovery");
-	if (test_opt(sbi, DISCARD))
+	if (test_opt(sbi, DISCARD)) {
 		seq_puts(seq, ",discard");
-	else
+		if (F2FS_OPTION(sbi).discard_unit == DISCARD_UNIT_BLOCK)
+			seq_printf(seq, ",discard_unit=%s", "block");
+		else if (F2FS_OPTION(sbi).discard_unit == DISCARD_UNIT_SEGMENT)
+			seq_printf(seq, ",discard_unit=%s", "segment");
+		else if (F2FS_OPTION(sbi).discard_unit == DISCARD_UNIT_SECTION)
+			seq_printf(seq, ",discard_unit=%s", "section");
+	} else {
 		seq_puts(seq, ",nodiscard");
+	}
 	if (test_opt(sbi, NOHEAP))
 		seq_puts(seq, ",no_heap");
 	else
@@ -1933,16 +1958,22 @@ static int f2fs_show_options(struct seq_file *seq, struct dentry *root)
 		seq_puts(seq, ",inline_dentry");
 	else
 		seq_puts(seq, ",noinline_dentry");
-	if (!f2fs_readonly(sbi->sb) && test_opt(sbi, FLUSH_MERGE))
+	if (test_opt(sbi, FLUSH_MERGE))
 		seq_puts(seq, ",flush_merge");
+	else
+		seq_puts(seq, ",noflush_merge");
 	if (test_opt(sbi, NOBARRIER))
 		seq_puts(seq, ",nobarrier");
+	else
+		seq_puts(seq, ",barrier");
 	if (test_opt(sbi, FASTBOOT))
 		seq_puts(seq, ",fastboot");
 	if (test_opt(sbi, READ_EXTENT_CACHE))
 		seq_puts(seq, ",extent_cache");
 	else
 		seq_puts(seq, ",noextent_cache");
+	if (test_opt(sbi, AGE_EXTENT_CACHE))
+		seq_puts(seq, ",age_extent_cache");
 	if (test_opt(sbi, DATA_FLUSH))
 		seq_puts(seq, ",data_flush");
 
@@ -2017,13 +2048,6 @@ static int f2fs_show_options(struct seq_file *seq, struct dentry *root)
 	if (test_opt(sbi, ATGC))
 		seq_puts(seq, ",atgc");
 
-	if (F2FS_OPTION(sbi).discard_unit == DISCARD_UNIT_BLOCK)
-		seq_printf(seq, ",discard_unit=%s", "block");
-	else if (F2FS_OPTION(sbi).discard_unit == DISCARD_UNIT_SEGMENT)
-		seq_printf(seq, ",discard_unit=%s", "segment");
-	else if (F2FS_OPTION(sbi).discard_unit == DISCARD_UNIT_SECTION)
-		seq_printf(seq, ",discard_unit=%s", "section");
-
 	if (F2FS_OPTION(sbi).memory_mode == MEMORY_MODE_NORMAL)
 		seq_printf(seq, ",memory=%s", "normal");
 	else if (F2FS_OPTION(sbi).memory_mode == MEMORY_MODE_LOW)
@@ -2041,14 +2065,20 @@ static void default_options(struct f2fs_sb_info *sbi)
 		F2FS_OPTION(sbi).active_logs = NR_CURSEG_PERSIST_TYPE;
 
 	F2FS_OPTION(sbi).inline_xattr_size = DEFAULT_INLINE_XATTR_ADDRS;
-	F2FS_OPTION(sbi).alloc_mode = ALLOC_MODE_DEFAULT;
+	if (le32_to_cpu(F2FS_RAW_SUPER(sbi)->segment_count_main) <=
+							SMALL_VOLUME_SEGMENTS)
+		F2FS_OPTION(sbi).alloc_mode = ALLOC_MODE_REUSE;
+	else
+		F2FS_OPTION(sbi).alloc_mode = ALLOC_MODE_DEFAULT;
 	F2FS_OPTION(sbi).fsync_mode = FSYNC_MODE_POSIX;
 	F2FS_OPTION(sbi).s_resuid = make_kuid(&init_user_ns, F2FS_DEF_RESUID);
 	F2FS_OPTION(sbi).s_resgid = make_kgid(&init_user_ns, F2FS_DEF_RESGID);
-	F2FS_OPTION(sbi).compress_algorithm = COMPRESS_LZ4;
-	F2FS_OPTION(sbi).compress_log_size = MIN_COMPRESS_LOG_SIZE;
-	F2FS_OPTION(sbi).compress_ext_cnt = 0;
-	F2FS_OPTION(sbi).compress_mode = COMPR_MODE_FS;
+	if (f2fs_sb_has_compression(sbi)) {
+		F2FS_OPTION(sbi).compress_algorithm = COMPRESS_LZ4;
+		F2FS_OPTION(sbi).compress_log_size = MIN_COMPRESS_LOG_SIZE;
+		F2FS_OPTION(sbi).compress_ext_cnt = 0;
+		F2FS_OPTION(sbi).compress_mode = COMPR_MODE_FS;
+	}
 	F2FS_OPTION(sbi).bggc_mode = BGGC_MODE_ON;
 	F2FS_OPTION(sbi).memory_mode = MEMORY_MODE_NORMAL;
 
@@ -2063,7 +2093,8 @@ static void default_options(struct f2fs_sb_info *sbi)
 	set_opt(sbi, MERGE_CHECKPOINT);
 	F2FS_OPTION(sbi).unusable_cap = 0;
 	sbi->sb->s_flags |= SB_LAZYTIME;
-	set_opt(sbi, FLUSH_MERGE);
+	if (!f2fs_is_readonly(sbi))
+		set_opt(sbi, FLUSH_MERGE);
 	if (f2fs_hw_support_discard(sbi) || f2fs_hw_should_discard(sbi))
 		set_opt(sbi, DISCARD);
 	if (f2fs_sb_has_blkzoned(sbi)) {
@@ -2199,13 +2230,13 @@ static int f2fs_remount(struct super_block *sb, int *flags, char *data)
 	bool need_restart_flush = false, need_stop_flush = false;
 	bool need_restart_discard = false, need_stop_discard = false;
 	bool no_read_extent_cache = !test_opt(sbi, READ_EXTENT_CACHE);
+	bool no_age_extent_cache = !test_opt(sbi, AGE_EXTENT_CACHE);
 	bool enable_checkpoint = !test_opt(sbi, DISABLE_CHECKPOINT);
 	bool no_io_align = !F2FS_IO_ALIGNED(sbi);
 	bool no_atgc = !test_opt(sbi, ATGC);
 	bool no_discard = !test_opt(sbi, DISCARD);
 	bool no_compress_cache = !test_opt(sbi, COMPRESS_CACHE);
 	bool block_unit_discard = f2fs_block_unit_discard(sbi);
-	struct discard_cmd_control *dcc;
 #ifdef CONFIG_QUOTA
 	int i, j;
 #endif
@@ -2280,6 +2311,12 @@ static int f2fs_remount(struct super_block *sb, int *flags, char *data)
 		}
 	}
 #endif
+	if (f2fs_lfs_mode(sbi) && !IS_F2FS_IPU_DISABLE(sbi)) {
+		err = -EINVAL;
+		f2fs_warn(sbi, "LFS is not compatible with IPU");
+		goto restore_opts;
+	}
+
 	/* disallow enable atgc dynamically */
 	if (no_atgc == !!test_opt(sbi, ATGC)) {
 		err = -EINVAL;
@@ -2293,6 +2330,12 @@ static int f2fs_remount(struct super_block *sb, int *flags, char *data)
 		f2fs_warn(sbi, "switch extent_cache option is not allowed");
 		goto restore_opts;
 	}
+	/* disallow enable/disable age extent_cache dynamically */
+	if (no_age_extent_cache == !!test_opt(sbi, AGE_EXTENT_CACHE)) {
+		err = -EINVAL;
+		f2fs_warn(sbi, "switch age_extent_cache option is not allowed");
+		goto restore_opts;
+	}
 
 	if (no_io_align == !!F2FS_IO_ALIGNED(sbi)) {
 		err = -EINVAL;
@@ -2386,10 +2429,8 @@ static int f2fs_remount(struct super_block *sb, int *flags, char *data)
 				goto restore_flush;
 			need_stop_discard = true;
 		} else {
-			dcc = SM_I(sbi)->dcc_info;
 			f2fs_stop_discard_thread(sbi);
-			if (atomic_read(&dcc->discard_cmd_cnt))
-				f2fs_issue_discard_timeout(sbi);
+			f2fs_issue_discard_timeout(sbi);
 			need_restart_discard = true;
 		}
 	}
@@ -2461,6 +2502,54 @@ static int f2fs_remount(struct super_block *sb, int *flags, char *data)
 }
 
 #ifdef CONFIG_QUOTA
+static bool f2fs_need_recovery(struct f2fs_sb_info *sbi)
+{
+	/* need to recovery orphan */
+	if (is_set_ckpt_flags(sbi, CP_ORPHAN_PRESENT_FLAG))
+		return true;
+	/* need to recovery data */
+	if (test_opt(sbi, DISABLE_ROLL_FORWARD))
+		return false;
+	if (test_opt(sbi, NORECOVERY))
+		return false;
+	return !is_set_ckpt_flags(sbi, CP_UMOUNT_FLAG);
+}
+
+static bool f2fs_recover_quota_begin(struct f2fs_sb_info *sbi)
+{
+	bool readonly = f2fs_readonly(sbi->sb);
+
+	if (!f2fs_need_recovery(sbi))
+		return false;
+
+	/* it doesn't need to check f2fs_sb_has_readonly() */
+	if (f2fs_hw_is_readonly(sbi))
+		return false;
+
+	if (readonly) {
+		sbi->sb->s_flags &= ~SB_RDONLY;
+		set_sbi_flag(sbi, SBI_IS_WRITABLE);
+	}
+
+	/*
+	 * Turn on quotas which were not enabled for read-only mounts if
+	 * filesystem has quota feature, so that they are updated correctly.
+	 */
+	return f2fs_enable_quota_files(sbi, readonly);
+}
+
+static void f2fs_recover_quota_end(struct f2fs_sb_info *sbi,
+						bool quota_enabled)
+{
+	if (quota_enabled)
+		f2fs_quota_off_umount(sbi->sb);
+
+	if (is_sbi_flag_set(sbi, SBI_IS_WRITABLE)) {
+		clear_sbi_flag(sbi, SBI_IS_WRITABLE);
+		sbi->sb->s_flags |= SB_RDONLY;
+	}
+}
+
 /* Read data from quotafile */
 static ssize_t f2fs_quota_read(struct super_block *sb, int type, char *data,
 			       size_t len, loff_t off)
@@ -2565,10 +2654,8 @@ static ssize_t f2fs_quota_write(struct super_block *sb, int type,
 
 int f2fs_dquot_initialize(struct inode *inode)
 {
-	if (time_to_inject(F2FS_I_SB(inode), FAULT_DQUOT_INIT)) {
-		f2fs_show_injection_info(F2FS_I_SB(inode), FAULT_DQUOT_INIT);
+	if (time_to_inject(F2FS_I_SB(inode), FAULT_DQUOT_INIT))
 		return -ESRCH;
-	}
 
 	return dquot_initialize(inode);
 }
@@ -3236,7 +3323,7 @@ static inline bool sanity_check_area_boundary(struct f2fs_sb_info *sbi,
 		raw_super->segment_count = cpu_to_le32((main_end_blkaddr -
 				segment0_blkaddr) >> log_blocks_per_seg);
 
-		if (f2fs_readonly(sb) || bdev_read_only(sb->s_bdev)) {
+		if (f2fs_readonly(sb) || f2fs_hw_is_readonly(sbi)) {
 			set_sbi_flag(sbi, SBI_NEED_SB_WRITE);
 			res = "internally";
 		} else {
@@ -3324,7 +3411,7 @@ static int sanity_check_raw_super(struct f2fs_sb_info *sbi,
 	total_sections = le32_to_cpu(raw_super->section_count);
 
 	/* blocks_per_seg should be 512, given the above check */
-	blocks_per_seg = 1 << le32_to_cpu(raw_super->log_blocks_per_seg);
+	blocks_per_seg = BIT(le32_to_cpu(raw_super->log_blocks_per_seg));
 
 	if (segment_count > F2FS_MAX_SEGMENT ||
 				segment_count < F2FS_MIN_SEGMENTS) {
@@ -3593,9 +3680,9 @@ static void init_sb_info(struct f2fs_sb_info *sbi)
 	sbi->log_sectors_per_block =
 		le32_to_cpu(raw_super->log_sectors_per_block);
 	sbi->log_blocksize = le32_to_cpu(raw_super->log_blocksize);
-	sbi->blocksize = 1 << sbi->log_blocksize;
+	sbi->blocksize = BIT(sbi->log_blocksize);
 	sbi->log_blocks_per_seg = le32_to_cpu(raw_super->log_blocks_per_seg);
-	sbi->blocks_per_seg = 1 << sbi->log_blocks_per_seg;
+	sbi->blocks_per_seg = BIT(sbi->log_blocks_per_seg);
 	sbi->segs_per_sec = le32_to_cpu(raw_super->segs_per_sec);
 	sbi->secs_per_zone = le32_to_cpu(raw_super->secs_per_zone);
 	sbi->total_sections = le32_to_cpu(raw_super->section_count);
@@ -3614,7 +3701,7 @@ static void init_sb_info(struct f2fs_sb_info *sbi)
 	sbi->seq_file_ra_mul = MIN_RA_MUL;
 	sbi->max_fragment_chunk = DEF_FRAGMENT_SIZE;
 	sbi->max_fragment_hole = DEF_FRAGMENT_SIZE;
-	spin_lock_init(&sbi->gc_urgent_high_lock);
+	spin_lock_init(&sbi->gc_remaining_trials_lock);
 	atomic64_set(&sbi->current_atomic_write, 0);
 
 	sbi->dir_level = DEF_DIR_LEVEL;
@@ -3720,12 +3807,8 @@ static int init_blkz_info(struct f2fs_sb_info *sbi, int devi)
 				SECTOR_TO_BLOCK(zone_sectors))
 		return -EINVAL;
 	sbi->blocks_per_blkz = SECTOR_TO_BLOCK(zone_sectors);
-	if (sbi->log_blocks_per_blkz && sbi->log_blocks_per_blkz !=
-				__ilog2_u32(sbi->blocks_per_blkz))
-		return -EINVAL;
-	sbi->log_blocks_per_blkz = __ilog2_u32(sbi->blocks_per_blkz);
-	FDEV(devi).nr_blkz = SECTOR_TO_BLOCK(nr_sectors) >>
-					sbi->log_blocks_per_blkz;
+	FDEV(devi).nr_blkz = div_u64(SECTOR_TO_BLOCK(nr_sectors),
+					sbi->blocks_per_blkz);
 	if (nr_sectors & (zone_sectors - 1))
 		FDEV(devi).nr_blkz++;
 
@@ -3812,7 +3895,7 @@ int f2fs_commit_super(struct f2fs_sb_info *sbi, bool recover)
 	int err;
 
 	if ((recover && f2fs_readonly(sbi->sb)) ||
-				bdev_read_only(sbi->sb->s_bdev)) {
+				f2fs_hw_is_readonly(sbi)) {
 		set_sbi_flag(sbi, SBI_NEED_SB_WRITE);
 		return -EROFS;
 	}
@@ -3851,7 +3934,7 @@ void f2fs_handle_stop(struct f2fs_sb_info *sbi, unsigned char reason)
 
 	f2fs_down_write(&sbi->sb_lock);
 
-	if (raw_super->s_stop_reason[reason] < ((1 << BITS_PER_BYTE) - 1))
+	if (raw_super->s_stop_reason[reason] < GENMASK(BITS_PER_BYTE - 1, 0))
 		raw_super->s_stop_reason[reason]++;
 
 	err = f2fs_commit_super(sbi, false);
@@ -4001,7 +4084,7 @@ static int f2fs_scan_devices(struct f2fs_sb_info *sbi)
 			  FDEV(i).start_blk, FDEV(i).end_blk);
 	}
 	f2fs_info(sbi,
-		  "IO Block Size: %8d KB", F2FS_IO_SIZE_KB(sbi));
+		  "IO Block Size: %8ld KB", F2FS_IO_SIZE_KB(sbi));
 	return 0;
 }
 
@@ -4054,18 +4137,17 @@ static int f2fs_setup_casefold(struct f2fs_sb_info *sbi)
 
 static void f2fs_tuning_parameters(struct f2fs_sb_info *sbi)
 {
-	struct f2fs_sm_info *sm_i = SM_I(sbi);
-
 	/* adjust parameters according to the volume size */
-	if (sm_i->main_segments <= SMALL_VOLUME_SEGMENTS) {
-		F2FS_OPTION(sbi).alloc_mode = ALLOC_MODE_REUSE;
+	if (MAIN_SEGS(sbi) <= SMALL_VOLUME_SEGMENTS) {
 		if (f2fs_block_unit_discard(sbi))
-			sm_i->dcc_info->discard_granularity = 1;
-		sm_i->ipu_policy = 1 << F2FS_IPU_FORCE |
-					1 << F2FS_IPU_HONOR_OPU_WRITE;
+			SM_I(sbi)->dcc_info->discard_granularity =
+						MIN_DISCARD_GRANULARITY;
+		if (!f2fs_lfs_mode(sbi))
+			SM_I(sbi)->ipu_policy = BIT(F2FS_IPU_FORCE) |
+						BIT(F2FS_IPU_HONOR_OPU_WRITE);
 	}
 
-	sbi->readdir_ra = 1;
+	sbi->readdir_ra = true;
 }
 
 static int f2fs_fill_super(struct super_block *sb, void *data, int silent)
@@ -4079,6 +4161,9 @@ static int f2fs_fill_super(struct super_block *sb, void *data, int silent)
 	int recovery, i, valid_super_block;
 	struct curseg_info *seg_i;
 	int retry_cnt = 1;
+#ifdef CONFIG_QUOTA
+	bool quota_enabled = false;
+#endif
 
 try_onemore:
 	err = -EINVAL;
@@ -4372,6 +4457,8 @@ static int f2fs_fill_super(struct super_block *sb, void *data, int silent)
 		if (err)
 			f2fs_err(sbi, "Cannot turn on quotas: error %d", err);
 	}
+
+	quota_enabled = f2fs_recover_quota_begin(sbi);
 #endif
 	/* if there are any orphan inodes, free them */
 	err = f2fs_recover_orphan_inodes(sbi);
@@ -4429,6 +4516,10 @@ static int f2fs_fill_super(struct super_block *sb, void *data, int silent)
 		}
 	}
 
+#ifdef CONFIG_QUOTA
+	f2fs_recover_quota_end(sbi, quota_enabled);
+#endif
+
 	/*
 	 * If the f2fs is not readonly and fsync data recovery succeeds,
 	 * check zoned block devices' write pointer consistency.
@@ -4482,6 +4573,8 @@ static int f2fs_fill_super(struct super_block *sb, void *data, int silent)
 	f2fs_update_time(sbi, CP_TIME);
 	f2fs_update_time(sbi, REQ_TIME);
 	clear_sbi_flag(sbi, SBI_CP_DISABLED_QUICK);
+
+	cleancache_init_fs(sb);
 	return 0;
 
 sync_free_meta:
@@ -4626,9 +4719,7 @@ static int __init init_inodecache(void)
 	f2fs_inode_cachep = kmem_cache_create("f2fs_inode_cache",
 			sizeof(struct f2fs_inode_info), 0,
 			SLAB_RECLAIM_ACCOUNT|SLAB_ACCOUNT, NULL);
-	if (!f2fs_inode_cachep)
-		return -ENOMEM;
-	return 0;
+	return f2fs_inode_cachep ? 0 : -ENOMEM;
 }
 
 static void destroy_inodecache(void)
@@ -4693,7 +4784,7 @@ static int __init init_f2fs_fs(void)
 		goto free_iostat;
 	err = f2fs_init_bioset();
 	if (err)
-		goto free_bio_enrty_cache;
+		goto free_bio_entry_cache;
 	err = f2fs_init_compress_mempool();
 	if (err)
 		goto free_bioset;
@@ -4710,7 +4801,7 @@ static int __init init_f2fs_fs(void)
 	f2fs_destroy_compress_mempool();
 free_bioset:
 	f2fs_destroy_bioset();
-free_bio_enrty_cache:
+free_bio_entry_cache:
 	f2fs_destroy_bio_entry_cache();
 free_iostat:
 	f2fs_destroy_iostat_processing();
diff --git a/fs/f2fs/sysfs.c b/fs/f2fs/sysfs.c
index 3d68bfa..8ea0534 100644
--- a/fs/f2fs/sysfs.c
+++ b/fs/f2fs/sysfs.c
@@ -53,9 +53,9 @@ static const char *gc_mode_names[MAX_GC_MODE] = {
 
 struct f2fs_attr {
 	struct attribute attr;
-	ssize_t (*show)(struct f2fs_attr *, struct f2fs_sb_info *, char *);
-	ssize_t (*store)(struct f2fs_attr *, struct f2fs_sb_info *,
-			 const char *, size_t);
+	ssize_t (*show)(struct f2fs_attr *a, struct f2fs_sb_info *sbi, char *buf);
+	ssize_t (*store)(struct f2fs_attr *a, struct f2fs_sb_info *sbi,
+			 const char *buf, size_t len);
 	int struct_type;
 	int offset;
 	int id;
@@ -95,28 +95,28 @@ static unsigned char *__struct_ptr(struct f2fs_sb_info *sbi, int struct_type)
 static ssize_t dirty_segments_show(struct f2fs_attr *a,
 		struct f2fs_sb_info *sbi, char *buf)
 {
-	return sprintf(buf, "%llu\n",
+	return sysfs_emit(buf, "%llu\n",
 			(unsigned long long)(dirty_segments(sbi)));
 }
 
 static ssize_t free_segments_show(struct f2fs_attr *a,
 		struct f2fs_sb_info *sbi, char *buf)
 {
-	return sprintf(buf, "%llu\n",
+	return sysfs_emit(buf, "%llu\n",
 			(unsigned long long)(free_segments(sbi)));
 }
 
 static ssize_t ovp_segments_show(struct f2fs_attr *a,
 		struct f2fs_sb_info *sbi, char *buf)
 {
-	return sprintf(buf, "%llu\n",
+	return sysfs_emit(buf, "%llu\n",
 			(unsigned long long)(overprovision_segments(sbi)));
 }
 
 static ssize_t lifetime_write_kbytes_show(struct f2fs_attr *a,
 		struct f2fs_sb_info *sbi, char *buf)
 {
-	return sprintf(buf, "%llu\n",
+	return sysfs_emit(buf, "%llu\n",
 			(unsigned long long)(sbi->kbytes_written +
 			((f2fs_get_sectors_written(sbi) -
 				sbi->sectors_written_start) >> 1)));
@@ -125,13 +125,13 @@ static ssize_t lifetime_write_kbytes_show(struct f2fs_attr *a,
 static ssize_t sb_status_show(struct f2fs_attr *a,
 		struct f2fs_sb_info *sbi, char *buf)
 {
-	return sprintf(buf, "%lx\n", sbi->s_flag);
+	return sysfs_emit(buf, "%lx\n", sbi->s_flag);
 }
 
 static ssize_t cp_status_show(struct f2fs_attr *a,
 		struct f2fs_sb_info *sbi, char *buf)
 {
-	return sprintf(buf, "%x\n", le32_to_cpu(F2FS_CKPT(sbi)->ckpt_flags));
+	return sysfs_emit(buf, "%x\n", le32_to_cpu(F2FS_CKPT(sbi)->ckpt_flags));
 }
 
 static ssize_t pending_discard_show(struct f2fs_attr *a,
@@ -139,10 +139,16 @@ static ssize_t pending_discard_show(struct f2fs_attr *a,
 {
 	if (!SM_I(sbi)->dcc_info)
 		return -EINVAL;
-	return sprintf(buf, "%llu\n", (unsigned long long)atomic_read(
+	return sysfs_emit(buf, "%llu\n", (unsigned long long)atomic_read(
 				&SM_I(sbi)->dcc_info->discard_cmd_cnt));
 }
 
+static ssize_t gc_mode_show(struct f2fs_attr *a,
+		struct f2fs_sb_info *sbi, char *buf)
+{
+	return sysfs_emit(buf, "%s\n", gc_mode_names[sbi->gc_mode]);
+}
+
 static ssize_t features_show(struct f2fs_attr *a,
 		struct f2fs_sb_info *sbi, char *buf)
 {
@@ -199,7 +205,7 @@ static ssize_t features_show(struct f2fs_attr *a,
 static ssize_t current_reserved_blocks_show(struct f2fs_attr *a,
 					struct f2fs_sb_info *sbi, char *buf)
 {
-	return sprintf(buf, "%u\n", sbi->current_reserved_blocks);
+	return sysfs_emit(buf, "%u\n", sbi->current_reserved_blocks);
 }
 
 static ssize_t unusable_show(struct f2fs_attr *a,
@@ -211,7 +217,7 @@ static ssize_t unusable_show(struct f2fs_attr *a,
 		unusable = sbi->unusable_block_count;
 	else
 		unusable = f2fs_get_unusable_blocks(sbi);
-	return sprintf(buf, "%llu\n", (unsigned long long)unusable);
+	return sysfs_emit(buf, "%llu\n", (unsigned long long)unusable);
 }
 
 static ssize_t encoding_show(struct f2fs_attr *a,
@@ -226,13 +232,13 @@ static ssize_t encoding_show(struct f2fs_attr *a,
 			(sb->s_encoding->version >> 8) & 0xff,
 			sb->s_encoding->version & 0xff);
 #endif
-	return sprintf(buf, "(none)");
+	return sysfs_emit(buf, "(none)\n");
 }
 
 static ssize_t mounted_time_sec_show(struct f2fs_attr *a,
 		struct f2fs_sb_info *sbi, char *buf)
 {
-	return sprintf(buf, "%llu", SIT_I(sbi)->mounted_time);
+	return sysfs_emit(buf, "%llu\n", SIT_I(sbi)->mounted_time);
 }
 
 #ifdef CONFIG_F2FS_STAT_FS
@@ -241,7 +247,7 @@ static ssize_t moved_blocks_foreground_show(struct f2fs_attr *a,
 {
 	struct f2fs_stat_info *si = F2FS_STAT(sbi);
 
-	return sprintf(buf, "%llu\n",
+	return sysfs_emit(buf, "%llu\n",
 		(unsigned long long)(si->tot_blks -
 			(si->bg_data_blks + si->bg_node_blks)));
 }
@@ -251,7 +257,7 @@ static ssize_t moved_blocks_background_show(struct f2fs_attr *a,
 {
 	struct f2fs_stat_info *si = F2FS_STAT(sbi);
 
-	return sprintf(buf, "%llu\n",
+	return sysfs_emit(buf, "%llu\n",
 		(unsigned long long)(si->bg_data_blks + si->bg_node_blks));
 }
 
@@ -262,7 +268,7 @@ static ssize_t avg_vblocks_show(struct f2fs_attr *a,
 
 	si->dirty_count = dirty_segments(sbi);
 	f2fs_update_sit_info(sbi);
-	return sprintf(buf, "%llu\n", (unsigned long long)(si->avg_vblocks));
+	return sysfs_emit(buf, "%llu\n", (unsigned long long)(si->avg_vblocks));
 }
 #endif
 
@@ -306,19 +312,14 @@ static ssize_t f2fs_sbi_show(struct f2fs_attr *a,
 
 	if (!strcmp(a->attr.name, "ckpt_thread_ioprio")) {
 		struct ckpt_req_control *cprc = &sbi->cprc_info;
-		int len = 0;
 		int class = IOPRIO_PRIO_CLASS(cprc->ckpt_thread_ioprio);
 		int data = IOPRIO_PRIO_DATA(cprc->ckpt_thread_ioprio);
 
-		if (class == IOPRIO_CLASS_RT)
-			len += scnprintf(buf + len, PAGE_SIZE - len, "rt,");
-		else if (class == IOPRIO_CLASS_BE)
-			len += scnprintf(buf + len, PAGE_SIZE - len, "be,");
-		else
+		if (class != IOPRIO_CLASS_RT && class != IOPRIO_CLASS_BE)
 			return -EINVAL;
 
-		len += scnprintf(buf + len, PAGE_SIZE - len, "%d\n", data);
-		return len;
+		return sysfs_emit(buf, "%s,%d\n",
+			class == IOPRIO_CLASS_RT ? "rt" : "be", data);
 	}
 
 #ifdef CONFIG_F2FS_FS_COMPRESSION
@@ -332,13 +333,8 @@ static ssize_t f2fs_sbi_show(struct f2fs_attr *a,
 		return sysfs_emit(buf, "%u\n", sbi->compr_new_inode);
 #endif
 
-	if (!strcmp(a->attr.name, "gc_urgent"))
-		return sysfs_emit(buf, "%s\n",
-				gc_mode_names[sbi->gc_mode]);
-
 	if (!strcmp(a->attr.name, "gc_segment_mode"))
-		return sysfs_emit(buf, "%s\n",
-				gc_mode_names[sbi->gc_segment_mode]);
+		return sysfs_emit(buf, "%u\n", sbi->gc_segment_mode);
 
 	if (!strcmp(a->attr.name, "gc_reclaimed_segments")) {
 		return sysfs_emit(buf, "%u\n",
@@ -362,7 +358,7 @@ static ssize_t f2fs_sbi_show(struct f2fs_attr *a,
 
 	ui = (unsigned int *)(ptr + a->offset);
 
-	return sprintf(buf, "%u\n", *ui);
+	return sysfs_emit(buf, "%u\n", *ui);
 }
 
 static ssize_t __sbi_store(struct f2fs_attr *a,
@@ -451,7 +447,7 @@ static ssize_t __sbi_store(struct f2fs_attr *a,
 	if (ret < 0)
 		return ret;
 #ifdef CONFIG_F2FS_FAULT_INJECTION
-	if (a->struct_type == FAULT_INFO_TYPE && t >= (1 << FAULT_MAX))
+	if (a->struct_type == FAULT_INFO_TYPE && t >= BIT(FAULT_MAX))
 		return -EINVAL;
 	if (a->struct_type == FAULT_INFO_RATE && t >= UINT_MAX)
 		return -EINVAL;
@@ -472,6 +468,17 @@ static ssize_t __sbi_store(struct f2fs_attr *a,
 		return count;
 	}
 
+	if (!strcmp(a->attr.name, "discard_io_aware_gran")) {
+		if (t > MAX_PLIST_NUM)
+			return -EINVAL;
+		if (!f2fs_block_unit_discard(sbi))
+			return -EINVAL;
+		if (t == *ui)
+			return count;
+		*ui = t;
+		return count;
+	}
+
 	if (!strcmp(a->attr.name, "discard_granularity")) {
 		if (t == 0 || t > MAX_PLIST_NUM)
 			return -EINVAL;
@@ -483,21 +490,34 @@ static ssize_t __sbi_store(struct f2fs_attr *a,
 		return count;
 	}
 
+	if (!strcmp(a->attr.name, "max_ordered_discard")) {
+		if (t == 0 || t > MAX_PLIST_NUM)
+			return -EINVAL;
+		if (!f2fs_block_unit_discard(sbi))
+			return -EINVAL;
+		*ui = t;
+		return count;
+	}
+
+	if (!strcmp(a->attr.name, "discard_urgent_util")) {
+		if (t > 100)
+			return -EINVAL;
+		*ui = t;
+		return count;
+	}
+
 	if (!strcmp(a->attr.name, "migration_granularity")) {
 		if (t == 0 || t > sbi->segs_per_sec)
 			return -EINVAL;
 	}
 
-	if (!strcmp(a->attr.name, "trim_sections"))
-		return -EINVAL;
-
 	if (!strcmp(a->attr.name, "gc_urgent")) {
 		if (t == 0) {
 			sbi->gc_mode = GC_NORMAL;
 		} else if (t == 1) {
 			sbi->gc_mode = GC_URGENT_HIGH;
 			if (sbi->gc_thread) {
-				sbi->gc_thread->gc_wake = 1;
+				sbi->gc_thread->gc_wake = true;
 				wake_up_interruptible_all(
 					&sbi->gc_thread->gc_wait_queue_head);
 				wake_up_discard_thread(sbi, true);
@@ -507,7 +527,7 @@ static ssize_t __sbi_store(struct f2fs_attr *a,
 		} else if (t == 3) {
 			sbi->gc_mode = GC_URGENT_MID;
 			if (sbi->gc_thread) {
-				sbi->gc_thread->gc_wake = 1;
+				sbi->gc_thread->gc_wake = true;
 				wake_up_interruptible_all(
 					&sbi->gc_thread->gc_wait_queue_head);
 			}
@@ -531,10 +551,10 @@ static ssize_t __sbi_store(struct f2fs_attr *a,
 		return count;
 	}
 
-	if (!strcmp(a->attr.name, "gc_urgent_high_remaining")) {
-		spin_lock(&sbi->gc_urgent_high_lock);
-		sbi->gc_urgent_high_remaining = t;
-		spin_unlock(&sbi->gc_urgent_high_lock);
+	if (!strcmp(a->attr.name, "gc_remaining_trials")) {
+		spin_lock(&sbi->gc_remaining_trials_lock);
+		sbi->gc_remaining_trials = t;
+		spin_unlock(&sbi->gc_remaining_trials_lock);
 
 		return count;
 	}
@@ -573,6 +593,20 @@ static ssize_t __sbi_store(struct f2fs_attr *a,
 		sbi->compr_new_inode = 0;
 		return count;
 	}
+
+	if (!strcmp(a->attr.name, "compress_percent")) {
+		if (t == 0 || t > 100)
+			return -EINVAL;
+		*ui = t;
+		return count;
+	}
+
+	if (!strcmp(a->attr.name, "compress_watermark")) {
+		if (t == 0 || t > 100)
+			return -EINVAL;
+		*ui = t;
+		return count;
+	}
 #endif
 
 	if (!strcmp(a->attr.name, "atgc_candidate_ratio")) {
@@ -649,6 +683,47 @@ static ssize_t __sbi_store(struct f2fs_attr *a,
 		return count;
 	}
 
+	if (!strcmp(a->attr.name, "readdir_ra")) {
+		sbi->readdir_ra = !!t;
+		return count;
+	}
+
+	if (!strcmp(a->attr.name, "hot_data_age_threshold")) {
+		if (t == 0 || t >= sbi->warm_data_age_threshold)
+			return -EINVAL;
+		if (t == *ui)
+			return count;
+		*ui = (unsigned int)t;
+		return count;
+	}
+
+	if (!strcmp(a->attr.name, "warm_data_age_threshold")) {
+		if (t <= sbi->hot_data_age_threshold)
+			return -EINVAL;
+		if (t == *ui)
+			return count;
+		*ui = (unsigned int)t;
+		return count;
+	}
+
+	if (!strcmp(a->attr.name, "last_age_weight")) {
+		if (t > 100)
+			return -EINVAL;
+		if (t == *ui)
+			return count;
+		*ui = (unsigned int)t;
+		return count;
+	}
+
+	if (!strcmp(a->attr.name, "ipu_policy")) {
+		if (t >= BIT(F2FS_IPU_MAX))
+			return -EINVAL;
+		if (t && f2fs_lfs_mode(sbi))
+			return -EINVAL;
+		SM_I(sbi)->ipu_policy = (unsigned int)t;
+		return count;
+	}
+
 	*ui = (unsigned int)t;
 
 	return count;
@@ -721,7 +796,7 @@ static void f2fs_sb_release(struct kobject *kobj)
 static ssize_t f2fs_feature_show(struct f2fs_attr *a,
 		struct f2fs_sb_info *sbi, char *buf)
 {
-	return sprintf(buf, "supported\n");
+	return sysfs_emit(buf, "supported\n");
 }
 
 #define F2FS_FEATURE_RO_ATTR(_name)				\
@@ -734,8 +809,8 @@ static ssize_t f2fs_sb_feature_show(struct f2fs_attr *a,
 		struct f2fs_sb_info *sbi, char *buf)
 {
 	if (F2FS_HAS_FEATURE(sbi, a->id))
-		return sprintf(buf, "supported\n");
-	return sprintf(buf, "unsupported\n");
+		return sysfs_emit(buf, "supported\n");
+	return sysfs_emit(buf, "unsupported\n");
 }
 
 #define F2FS_SB_FEATURE_RO_ATTR(_name, _feat)			\
@@ -788,9 +863,11 @@ F2FS_RW_ATTR(DCC_INFO, discard_cmd_control, max_discard_request, max_discard_req
 F2FS_RW_ATTR(DCC_INFO, discard_cmd_control, min_discard_issue_time, min_discard_issue_time);
 F2FS_RW_ATTR(DCC_INFO, discard_cmd_control, mid_discard_issue_time, mid_discard_issue_time);
 F2FS_RW_ATTR(DCC_INFO, discard_cmd_control, max_discard_issue_time, max_discard_issue_time);
+F2FS_RW_ATTR(DCC_INFO, discard_cmd_control, discard_io_aware_gran, discard_io_aware_gran);
+F2FS_RW_ATTR(DCC_INFO, discard_cmd_control, discard_urgent_util, discard_urgent_util);
 F2FS_RW_ATTR(DCC_INFO, discard_cmd_control, discard_granularity, discard_granularity);
+F2FS_RW_ATTR(DCC_INFO, discard_cmd_control, max_ordered_discard, max_ordered_discard);
 F2FS_RW_ATTR(RESERVED_BLOCKS, f2fs_sb_info, reserved_blocks, reserved_blocks);
-F2FS_RW_ATTR(SM_INFO, f2fs_sm_info, batched_trim_sections, trim_sections);
 F2FS_RW_ATTR(SM_INFO, f2fs_sm_info, ipu_policy, ipu_policy);
 F2FS_RW_ATTR(SM_INFO, f2fs_sm_info, min_ipu_util, min_ipu_util);
 F2FS_RW_ATTR(SM_INFO, f2fs_sm_info, min_fsync_blocks, min_fsync_blocks);
@@ -825,7 +902,7 @@ F2FS_RW_ATTR(FAULT_INFO_TYPE, f2fs_fault_info, inject_type, inject_type);
 #endif
 F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, data_io_flag, data_io_flag);
 F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, node_io_flag, node_io_flag);
-F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, gc_urgent_high_remaining, gc_urgent_high_remaining);
+F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, gc_remaining_trials, gc_remaining_trials);
 F2FS_RW_ATTR(CPRC_INFO, ckpt_req_control, ckpt_thread_ioprio, ckpt_thread_ioprio);
 F2FS_GENERAL_RO_ATTR(dirty_segments);
 F2FS_GENERAL_RO_ATTR(free_segments);
@@ -838,6 +915,7 @@ F2FS_GENERAL_RO_ATTR(encoding);
 F2FS_GENERAL_RO_ATTR(mounted_time_sec);
 F2FS_GENERAL_RO_ATTR(main_blkaddr);
 F2FS_GENERAL_RO_ATTR(pending_discard);
+F2FS_GENERAL_RO_ATTR(gc_mode);
 #ifdef CONFIG_F2FS_STAT_FS
 F2FS_STAT_ATTR(STAT_INFO, f2fs_stat_info, cp_foreground_calls, cp_count);
 F2FS_STAT_ATTR(STAT_INFO, f2fs_stat_info, cp_background_calls, bg_cp_count);
@@ -881,6 +959,8 @@ F2FS_FEATURE_RO_ATTR(compression);
 F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, compr_written_block, compr_written_block);
 F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, compr_saved_block, compr_saved_block);
 F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, compr_new_inode, compr_new_inode);
+F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, compress_percent, compress_percent);
+F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, compress_watermark, compress_watermark);
 #endif
 F2FS_FEATURE_RO_ATTR(pin_file);
 
@@ -902,6 +982,11 @@ F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, peak_atomic_write, peak_atomic_write);
 F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, committed_atomic_block, committed_atomic_block);
 F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, revoked_atomic_block, revoked_atomic_block);
 
+/* For block age extent cache */
+F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, hot_data_age_threshold, hot_data_age_threshold);
+F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, warm_data_age_threshold, warm_data_age_threshold);
+F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, last_age_weight, last_age_weight);
+
 #define ATTR_LIST(name) (&f2fs_attr_##name.attr)
 static struct attribute *f2fs_attrs[] = {
 	ATTR_LIST(gc_urgent_sleep_time),
@@ -917,9 +1002,12 @@ static struct attribute *f2fs_attrs[] = {
 	ATTR_LIST(min_discard_issue_time),
 	ATTR_LIST(mid_discard_issue_time),
 	ATTR_LIST(max_discard_issue_time),
+	ATTR_LIST(discard_io_aware_gran),
+	ATTR_LIST(discard_urgent_util),
 	ATTR_LIST(discard_granularity),
+	ATTR_LIST(max_ordered_discard),
 	ATTR_LIST(pending_discard),
-	ATTR_LIST(batched_trim_sections),
+	ATTR_LIST(gc_mode),
 	ATTR_LIST(ipu_policy),
 	ATTR_LIST(min_ipu_util),
 	ATTR_LIST(min_fsync_blocks),
@@ -952,7 +1040,7 @@ static struct attribute *f2fs_attrs[] = {
 #endif
 	ATTR_LIST(data_io_flag),
 	ATTR_LIST(node_io_flag),
-	ATTR_LIST(gc_urgent_high_remaining),
+	ATTR_LIST(gc_remaining_trials),
 	ATTR_LIST(ckpt_thread_ioprio),
 	ATTR_LIST(dirty_segments),
 	ATTR_LIST(free_segments),
@@ -980,6 +1068,8 @@ static struct attribute *f2fs_attrs[] = {
 	ATTR_LIST(compr_written_block),
 	ATTR_LIST(compr_saved_block),
 	ATTR_LIST(compr_new_inode),
+	ATTR_LIST(compress_percent),
+	ATTR_LIST(compress_watermark),
 #endif
 	/* For ATGC */
 	ATTR_LIST(atgc_candidate_ratio),
@@ -995,6 +1085,9 @@ static struct attribute *f2fs_attrs[] = {
 	ATTR_LIST(peak_atomic_write),
 	ATTR_LIST(committed_atomic_block),
 	ATTR_LIST(revoked_atomic_block),
+	ATTR_LIST(hot_data_age_threshold),
+	ATTR_LIST(warm_data_age_threshold),
+	ATTR_LIST(last_age_weight),
 	NULL,
 };
 ATTRIBUTE_GROUPS(f2fs);
@@ -1082,13 +1175,13 @@ static const struct sysfs_ops f2fs_attr_ops = {
 	.store	= f2fs_attr_store,
 };
 
-static struct kobj_type f2fs_sb_ktype = {
+static const struct kobj_type f2fs_sb_ktype = {
 	.default_groups = f2fs_groups,
 	.sysfs_ops	= &f2fs_attr_ops,
 	.release	= f2fs_sb_release,
 };
 
-static struct kobj_type f2fs_ktype = {
+static const struct kobj_type f2fs_ktype = {
 	.sysfs_ops	= &f2fs_attr_ops,
 };
 
@@ -1096,7 +1189,7 @@ static struct kset f2fs_kset = {
 	.kobj	= {.ktype = &f2fs_ktype},
 };
 
-static struct kobj_type f2fs_feat_ktype = {
+static const struct kobj_type f2fs_feat_ktype = {
 	.default_groups = f2fs_feat_groups,
 	.sysfs_ops	= &f2fs_attr_ops,
 };
@@ -1137,7 +1230,7 @@ static const struct sysfs_ops f2fs_stat_attr_ops = {
 	.store	= f2fs_stat_attr_store,
 };
 
-static struct kobj_type f2fs_stat_ktype = {
+static const struct kobj_type f2fs_stat_ktype = {
 	.default_groups = f2fs_stat_groups,
 	.sysfs_ops	= &f2fs_stat_attr_ops,
 	.release	= f2fs_stat_kobj_release,
@@ -1164,7 +1257,7 @@ static const struct sysfs_ops f2fs_feature_list_attr_ops = {
 	.show	= f2fs_sb_feat_attr_show,
 };
 
-static struct kobj_type f2fs_feature_list_ktype = {
+static const struct kobj_type f2fs_feature_list_ktype = {
 	.default_groups = f2fs_sb_feat_groups,
 	.sysfs_ops	= &f2fs_feature_list_attr_ops,
 	.release	= f2fs_feature_list_kobj_release,
@@ -1243,6 +1336,44 @@ static int __maybe_unused victim_bits_seq_show(struct seq_file *seq,
 	return 0;
 }
 
+static int __maybe_unused discard_plist_seq_show(struct seq_file *seq,
+						void *offset)
+{
+	struct super_block *sb = seq->private;
+	struct f2fs_sb_info *sbi = F2FS_SB(sb);
+	struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info;
+	int i, count;
+
+	seq_puts(seq, "Discard pend list(Show diacrd_cmd count on each entry, .:not exist):\n");
+	if (!f2fs_realtime_discard_enable(sbi))
+		return 0;
+
+	if (dcc) {
+		mutex_lock(&dcc->cmd_lock);
+		for (i = 0; i < MAX_PLIST_NUM; i++) {
+			struct list_head *pend_list;
+			struct discard_cmd *dc, *tmp;
+
+			if (i % 8 == 0)
+				seq_printf(seq, "  %-3d", i);
+			count = 0;
+			pend_list = &dcc->pend_list[i];
+			list_for_each_entry_safe(dc, tmp, pend_list, list)
+				count++;
+			if (count)
+				seq_printf(seq, " %7d", count);
+			else
+				seq_puts(seq, "       .");
+			if (i % 8 == 7)
+				seq_putc(seq, '\n');
+		}
+		seq_putc(seq, '\n');
+		mutex_unlock(&dcc->cmd_lock);
+	}
+
+	return 0;
+}
+
 int __init f2fs_init_sysfs(void)
 {
 	int ret;
@@ -1313,6 +1444,8 @@ int f2fs_register_sysfs(struct f2fs_sb_info *sbi)
 #endif
 		proc_create_single_data("victim_bits", 0444, sbi->s_proc,
 				victim_bits_seq_show, sb);
+		proc_create_single_data("discard_plist_info", 0444, sbi->s_proc,
+				discard_plist_seq_show, sb);
 	}
 	return 0;
 put_feature_list_kobj:
@@ -1329,24 +1462,14 @@ int f2fs_register_sysfs(struct f2fs_sb_info *sbi)
 
 void f2fs_unregister_sysfs(struct f2fs_sb_info *sbi)
 {
-	if (sbi->s_proc) {
-#ifdef CONFIG_F2FS_IOSTAT
-		remove_proc_entry("iostat_info", sbi->s_proc);
-#endif
-		remove_proc_entry("segment_info", sbi->s_proc);
-		remove_proc_entry("segment_bits", sbi->s_proc);
-		remove_proc_entry("victim_bits", sbi->s_proc);
-		remove_proc_entry(sbi->sb->s_id, f2fs_proc_root);
-	}
+	if (sbi->s_proc)
+		remove_proc_subtree(sbi->sb->s_id, f2fs_proc_root);
 
-	kobject_del(&sbi->s_stat_kobj);
 	kobject_put(&sbi->s_stat_kobj);
 	wait_for_completion(&sbi->s_stat_kobj_unregister);
-	kobject_del(&sbi->s_feature_list_kobj);
 	kobject_put(&sbi->s_feature_list_kobj);
 	wait_for_completion(&sbi->s_feature_list_kobj_unregister);
 
-	kobject_del(&sbi->s_kobj);
 	kobject_put(&sbi->s_kobj);
 	wait_for_completion(&sbi->s_kobj_unregister);
 }
diff --git a/fs/f2fs/verity.c b/fs/f2fs/verity.c
index 3f4f329..4fc95f3 100644
--- a/fs/f2fs/verity.c
+++ b/fs/f2fs/verity.c
@@ -276,11 +276,11 @@ static struct page *f2fs_read_merkle_tree_page(struct inode *inode,
 }
 
 static int f2fs_write_merkle_tree_block(struct inode *inode, const void *buf,
-					u64 index, int log_blocksize)
+					u64 pos, unsigned int size)
 {
-	loff_t pos = f2fs_verity_metadata_pos(inode) + (index << log_blocksize);
+	pos += f2fs_verity_metadata_pos(inode);
 
-	return pagecache_write(inode, buf, 1 << log_blocksize, pos);
+	return pagecache_write(inode, buf, size, pos);
 }
 
 const struct fsverity_operations f2fs_verityops = {
diff --git a/fs/fuse/Kconfig b/fs/fuse/Kconfig
index 038ed0b..3a64fa7 100644
--- a/fs/fuse/Kconfig
+++ b/fs/fuse/Kconfig
@@ -52,3 +52,11 @@
 
 	  If you want to allow mounting a Virtio Filesystem with the "dax"
 	  option, answer Y.
+
+config FUSE_BPF
+	bool "Adds BPF to fuse"
+	depends on FUSE_FS
+	depends on BPF
+	help
+	  Extends FUSE by adding BPF to prefilter calls and potentially pass to a
+	  backing file system
diff --git a/fs/fuse/Makefile b/fs/fuse/Makefile
index 0c48b35..096bd78 100644
--- a/fs/fuse/Makefile
+++ b/fs/fuse/Makefile
@@ -8,6 +8,8 @@
 obj-$(CONFIG_VIRTIO_FS) += virtiofs.o
 
 fuse-y := dev.o dir.o file.o inode.o control.o xattr.o acl.o readdir.o ioctl.o
+fuse-y += passthrough.o
 fuse-$(CONFIG_FUSE_DAX) += dax.o
+fuse-$(CONFIG_FUSE_BPF) += backing.o
 
 virtiofs-y := virtio_fs.o
diff --git a/fs/fuse/backing.c b/fs/fuse/backing.c
new file mode 100644
index 0000000..269a4df
--- /dev/null
+++ b/fs/fuse/backing.c
@@ -0,0 +1,2491 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * FUSE-BPF: Filesystem in Userspace with BPF
+ * Copyright (c) 2021 Google LLC
+ */
+
+#include "fuse_i.h"
+
+#include <linux/fdtable.h>
+#include <linux/filter.h>
+#include <linux/fs_stack.h>
+#include <linux/namei.h>
+
+#include "../internal.h"
+
+#define FUSE_BPF_IOCB_MASK (IOCB_APPEND | IOCB_DSYNC | IOCB_HIPRI | IOCB_NOWAIT | IOCB_SYNC)
+
+struct fuse_bpf_aio_req {
+	struct kiocb iocb;
+	refcount_t ref;
+	struct kiocb *iocb_orig;
+};
+
+static struct kmem_cache *fuse_bpf_aio_request_cachep;
+
+static void fuse_stat_to_attr(struct fuse_conn *fc, struct inode *inode,
+		struct kstat *stat, struct fuse_attr *attr);
+
+static void fuse_file_accessed(struct file *dst_file, struct file *src_file)
+{
+	struct inode *dst_inode;
+	struct inode *src_inode;
+
+	if (dst_file->f_flags & O_NOATIME)
+		return;
+
+	dst_inode = file_inode(dst_file);
+	src_inode = file_inode(src_file);
+
+	if ((!timespec64_equal(&dst_inode->i_mtime, &src_inode->i_mtime) ||
+	     !timespec64_equal(&dst_inode->i_ctime, &src_inode->i_ctime))) {
+		dst_inode->i_mtime = src_inode->i_mtime;
+		dst_inode->i_ctime = src_inode->i_ctime;
+	}
+
+	touch_atime(&dst_file->f_path);
+}
+
+int fuse_open_initialize(struct fuse_bpf_args *fa, struct fuse_open_io *foio,
+			 struct inode *inode, struct file *file, bool isdir)
+{
+	foio->foi = (struct fuse_open_in) {
+		.flags = file->f_flags & ~(O_CREAT | O_EXCL | O_NOCTTY),
+	};
+
+	foio->foo = (struct fuse_open_out) {0};
+
+	*fa = (struct fuse_bpf_args) {
+		.nodeid = get_fuse_inode(inode)->nodeid,
+		.opcode = isdir ? FUSE_OPENDIR : FUSE_OPEN,
+		.in_numargs = 1,
+		.out_numargs = 1,
+		.in_args[0] = (struct fuse_bpf_in_arg) {
+			.size = sizeof(foio->foi),
+			.value = &foio->foi,
+		},
+		.out_args[0] = (struct fuse_bpf_arg) {
+			.size = sizeof(foio->foo),
+			.value = &foio->foo,
+		},
+	};
+
+	return 0;
+}
+
+int fuse_open_backing(struct fuse_bpf_args *fa,
+		      struct inode *inode, struct file *file, bool isdir)
+{
+	struct fuse_mount *fm = get_fuse_mount(inode);
+	const struct fuse_open_in *foi = fa->in_args[0].value;
+	struct fuse_file *ff;
+	int retval;
+	int mask;
+	struct fuse_dentry *fd = get_fuse_dentry(file->f_path.dentry);
+	struct file *backing_file;
+
+	ff = fuse_file_alloc(fm);
+	if (!ff)
+		return -ENOMEM;
+	file->private_data = ff;
+
+	switch (foi->flags & O_ACCMODE) {
+	case O_RDONLY:
+		mask = MAY_READ;
+		break;
+
+	case O_WRONLY:
+		mask = MAY_WRITE;
+		break;
+
+	case O_RDWR:
+		mask = MAY_READ | MAY_WRITE;
+		break;
+
+	default:
+		return -EINVAL;
+	}
+
+	retval = inode_permission(&init_user_ns,
+				  get_fuse_inode(inode)->backing_inode, mask);
+	if (retval)
+		return retval;
+
+	backing_file = dentry_open(&fd->backing_path,
+				   foi->flags,
+				   current_cred());
+
+	if (IS_ERR(backing_file)) {
+		fuse_file_free(ff);
+		file->private_data = NULL;
+		return PTR_ERR(backing_file);
+	}
+	ff->backing_file = backing_file;
+
+	return 0;
+}
+
+void *fuse_open_finalize(struct fuse_bpf_args *fa,
+		       struct inode *inode, struct file *file, bool isdir)
+{
+	struct fuse_file *ff = file->private_data;
+	struct fuse_open_out *foo = fa->out_args[0].value;
+
+	if (ff) {
+		ff->fh = foo->fh;
+		ff->nodeid = get_fuse_inode(inode)->nodeid;
+	}
+	return 0;
+}
+
+int fuse_create_open_initialize(
+		struct fuse_bpf_args *fa, struct fuse_create_open_io *fcoio,
+		struct inode *dir, struct dentry *entry,
+		struct file *file, unsigned int flags, umode_t mode)
+{
+	fcoio->fci = (struct fuse_create_in) {
+		.flags = file->f_flags & ~(O_CREAT | O_EXCL | O_NOCTTY),
+		.mode = mode,
+	};
+
+	fcoio->feo = (struct fuse_entry_out) {0};
+	fcoio->foo = (struct fuse_open_out) {0};
+
+	*fa = (struct fuse_bpf_args) {
+		.nodeid = get_node_id(dir),
+		.opcode = FUSE_CREATE,
+		.in_numargs = 2,
+		.out_numargs = 2,
+		.in_args[0] = (struct fuse_bpf_in_arg) {
+			.size = sizeof(fcoio->fci),
+			.value = &fcoio->fci,
+		},
+		.in_args[1] = (struct fuse_bpf_in_arg) {
+			.size = entry->d_name.len + 1,
+			.value = entry->d_name.name,
+		},
+		.out_args[0] = (struct fuse_bpf_arg) {
+			.size = sizeof(fcoio->feo),
+			.value = &fcoio->feo,
+		},
+		.out_args[1] = (struct fuse_bpf_arg) {
+			.size = sizeof(fcoio->foo),
+			.value = &fcoio->foo,
+		},
+	};
+
+	return 0;
+}
+
+static int fuse_open_file_backing(struct inode *inode, struct file *file)
+{
+	struct fuse_mount *fm = get_fuse_mount(inode);
+	struct dentry *entry = file->f_path.dentry;
+	struct fuse_dentry *fuse_dentry = get_fuse_dentry(entry);
+	struct fuse_file *fuse_file;
+	struct file *backing_file;
+
+	fuse_file = fuse_file_alloc(fm);
+	if (!fuse_file)
+		return -ENOMEM;
+	file->private_data = fuse_file;
+
+	backing_file = dentry_open(&fuse_dentry->backing_path, file->f_flags,
+				   current_cred());
+	if (IS_ERR(backing_file)) {
+		fuse_file_free(fuse_file);
+		file->private_data = NULL;
+		return PTR_ERR(backing_file);
+	}
+	fuse_file->backing_file = backing_file;
+
+	return 0;
+}
+
+int fuse_create_open_backing(
+		struct fuse_bpf_args *fa,
+		struct inode *dir, struct dentry *entry,
+		struct file *file, unsigned int flags, umode_t mode)
+{
+	struct fuse_inode *dir_fuse_inode = get_fuse_inode(dir);
+	struct fuse_dentry *dir_fuse_dentry = get_fuse_dentry(entry->d_parent);
+	struct dentry *backing_dentry = NULL;
+	struct inode *inode = NULL;
+	struct dentry *newent;
+	int err = 0;
+	const struct fuse_create_in *fci = fa->in_args[0].value;
+	struct inode *d_inode = entry->d_inode;
+	u64 target_nodeid = 0;
+
+	if (!dir_fuse_inode || !dir_fuse_dentry)
+		return -EIO;
+
+	inode_lock_nested(dir_fuse_inode->backing_inode, I_MUTEX_PARENT);
+	backing_dentry = lookup_one_len(fa->in_args[1].value,
+					dir_fuse_dentry->backing_path.dentry,
+					strlen(fa->in_args[1].value));
+	inode_unlock(dir_fuse_inode->backing_inode);
+
+	if (IS_ERR(backing_dentry))
+		return PTR_ERR(backing_dentry);
+
+	if (d_really_is_positive(backing_dentry)) {
+		err = -EIO;
+		goto out;
+	}
+
+	err = vfs_create(&init_user_ns,  dir_fuse_inode->backing_inode,
+			 backing_dentry, fci->mode, true);
+	if (err)
+		goto out;
+
+	if (get_fuse_dentry(entry)->backing_path.dentry)
+		path_put(&get_fuse_dentry(entry)->backing_path);
+	get_fuse_dentry(entry)->backing_path = (struct path) {
+		.mnt = dir_fuse_dentry->backing_path.mnt,
+		.dentry = backing_dentry,
+	};
+	path_get(&get_fuse_dentry(entry)->backing_path);
+
+	if (d_inode)
+		target_nodeid = get_fuse_inode(d_inode)->nodeid;
+
+	inode = fuse_iget_backing(dir->i_sb, target_nodeid,
+			get_fuse_dentry(entry)->backing_path.dentry->d_inode);
+	if (IS_ERR(inode)) {
+		err = PTR_ERR(inode);
+		goto out;
+	}
+
+	if (get_fuse_inode(inode)->bpf)
+		bpf_prog_put(get_fuse_inode(inode)->bpf);
+	get_fuse_inode(inode)->bpf = dir_fuse_inode->bpf;
+	if (get_fuse_inode(inode)->bpf)
+		bpf_prog_inc(dir_fuse_inode->bpf);
+
+	newent = d_splice_alias(inode, entry);
+	if (IS_ERR(newent)) {
+		err = PTR_ERR(newent);
+		goto out;
+	}
+
+	entry = newent ? newent : entry;
+	err = finish_open(file, entry, fuse_open_file_backing);
+
+out:
+	dput(backing_dentry);
+	return err;
+}
+
+void *fuse_create_open_finalize(
+		struct fuse_bpf_args *fa,
+		struct inode *dir, struct dentry *entry,
+		struct file *file, unsigned int flags, umode_t mode)
+{
+	struct fuse_file *ff = file->private_data;
+	struct fuse_inode *fi = get_fuse_inode(file->f_inode);
+	struct fuse_entry_out *feo = fa->out_args[0].value;
+	struct fuse_open_out *foo = fa->out_args[1].value;
+
+	if (fi)
+		fi->nodeid = feo->nodeid;
+	if (ff)
+		ff->fh = foo->fh;
+	return 0;
+}
+
+int fuse_release_initialize(struct fuse_bpf_args *fa, struct fuse_release_in *fri,
+			    struct inode *inode, struct file *file)
+{
+	struct fuse_file *fuse_file = file->private_data;
+
+	/* Always put backing file whatever bpf/userspace says */
+	fput(fuse_file->backing_file);
+
+	*fri = (struct fuse_release_in) {
+		.fh = ((struct fuse_file *)(file->private_data))->fh,
+	};
+
+	*fa = (struct fuse_bpf_args) {
+		.nodeid = get_fuse_inode(inode)->nodeid,
+		.opcode = FUSE_RELEASE,
+		.in_numargs = 1,
+		.in_args[0].size = sizeof(*fri),
+		.in_args[0].value = fri,
+	};
+
+	return 0;
+}
+
+int fuse_releasedir_initialize(struct fuse_bpf_args *fa,
+			struct fuse_release_in *fri,
+			struct inode *inode, struct file *file)
+{
+	struct fuse_file *fuse_file = file->private_data;
+
+	/* Always put backing file whatever bpf/userspace says */
+	fput(fuse_file->backing_file);
+
+	*fri = (struct fuse_release_in) {
+		.fh = ((struct fuse_file *)(file->private_data))->fh,
+	};
+
+	*fa = (struct fuse_bpf_args) {
+		.nodeid = get_fuse_inode(inode)->nodeid,
+		.opcode = FUSE_RELEASEDIR,
+		.in_numargs = 1,
+		.in_args[0].size = sizeof(*fri),
+		.in_args[0].value = fri,
+	};
+
+	return 0;
+}
+
+int fuse_release_backing(struct fuse_bpf_args *fa,
+			 struct inode *inode, struct file *file)
+{
+	return 0;
+}
+
+void *fuse_release_finalize(struct fuse_bpf_args *fa,
+			    struct inode *inode, struct file *file)
+{
+	fuse_file_free(file->private_data);
+	return NULL;
+}
+
+int fuse_flush_initialize(struct fuse_bpf_args *fa, struct fuse_flush_in *ffi,
+			   struct file *file, fl_owner_t id)
+{
+	struct fuse_file *fuse_file = file->private_data;
+
+	*ffi = (struct fuse_flush_in) {
+		.fh = fuse_file->fh,
+	};
+
+	*fa = (struct fuse_bpf_args) {
+		.nodeid = get_node_id(file->f_inode),
+		.opcode = FUSE_FLUSH,
+		.in_numargs = 1,
+		.in_args[0].size = sizeof(*ffi),
+		.in_args[0].value = ffi,
+		.flags = FUSE_BPF_FORCE,
+	};
+
+	return 0;
+}
+
+int fuse_flush_backing(struct fuse_bpf_args *fa, struct file *file, fl_owner_t id)
+{
+	struct fuse_file *fuse_file = file->private_data;
+	struct file *backing_file = fuse_file->backing_file;
+
+	if (backing_file->f_op->flush)
+		return backing_file->f_op->flush(backing_file, id);
+	return 0;
+}
+
+void *fuse_flush_finalize(struct fuse_bpf_args *fa, struct file *file, fl_owner_t id)
+{
+	return NULL;
+}
+
+int fuse_lseek_initialize(struct fuse_bpf_args *fa, struct fuse_lseek_io *flio,
+			  struct file *file, loff_t offset, int whence)
+{
+	struct fuse_file *fuse_file = file->private_data;
+
+	flio->fli = (struct fuse_lseek_in) {
+		.fh = fuse_file->fh,
+		.offset = offset,
+		.whence = whence,
+	};
+
+	*fa = (struct fuse_bpf_args) {
+		.nodeid = get_node_id(file->f_inode),
+		.opcode = FUSE_LSEEK,
+		.in_numargs = 1,
+		.in_args[0].size = sizeof(flio->fli),
+		.in_args[0].value = &flio->fli,
+		.out_numargs = 1,
+		.out_args[0].size = sizeof(flio->flo),
+		.out_args[0].value = &flio->flo,
+	};
+
+	return 0;
+}
+
+int fuse_lseek_backing(struct fuse_bpf_args *fa, struct file *file, loff_t offset, int whence)
+{
+	const struct fuse_lseek_in *fli = fa->in_args[0].value;
+	struct fuse_lseek_out *flo = fa->out_args[0].value;
+	struct fuse_file *fuse_file = file->private_data;
+	struct file *backing_file = fuse_file->backing_file;
+	loff_t ret;
+
+	/* TODO: Handle changing of the file handle */
+	if (offset == 0) {
+		if (whence == SEEK_CUR) {
+			flo->offset = file->f_pos;
+			return flo->offset;
+		}
+
+		if (whence == SEEK_SET) {
+			flo->offset = vfs_setpos(file, 0, 0);
+			return flo->offset;
+		}
+	}
+
+	inode_lock(file->f_inode);
+	backing_file->f_pos = file->f_pos;
+	ret = vfs_llseek(backing_file, fli->offset, fli->whence);
+	flo->offset = ret;
+	inode_unlock(file->f_inode);
+	return ret;
+}
+
+void *fuse_lseek_finalize(struct fuse_bpf_args *fa, struct file *file, loff_t offset, int whence)
+{
+	struct fuse_lseek_out *flo = fa->out_args[0].value;
+
+	if (!fa->error_in)
+		file->f_pos = flo->offset;
+	return ERR_PTR(flo->offset);
+}
+
+int fuse_copy_file_range_initialize(struct fuse_bpf_args *fa, struct fuse_copy_file_range_io *fcf,
+				   struct file *file_in, loff_t pos_in, struct file *file_out,
+				   loff_t pos_out, size_t len, unsigned int flags)
+{
+	struct fuse_file *fuse_file_in = file_in->private_data;
+	struct fuse_file *fuse_file_out = file_out->private_data;
+
+
+	fcf->fci = (struct fuse_copy_file_range_in) {
+		.fh_in = fuse_file_in->fh,
+		.off_in = pos_in,
+		.nodeid_out = fuse_file_out->nodeid,
+		.fh_out = fuse_file_out->fh,
+		.off_out = pos_out,
+		.len = len,
+		.flags = flags,
+	};
+
+	*fa = (struct fuse_bpf_args) {
+		.nodeid = get_node_id(file_in->f_inode),
+		.opcode = FUSE_COPY_FILE_RANGE,
+		.in_numargs = 1,
+		.in_args[0].size = sizeof(fcf->fci),
+		.in_args[0].value = &fcf->fci,
+		.out_numargs = 1,
+		.out_args[0].size = sizeof(fcf->fwo),
+		.out_args[0].value = &fcf->fwo,
+	};
+
+	return 0;
+}
+
+int fuse_copy_file_range_backing(struct fuse_bpf_args *fa, struct file *file_in, loff_t pos_in,
+				 struct file *file_out, loff_t pos_out, size_t len,
+				 unsigned int flags)
+{
+	const struct fuse_copy_file_range_in *fci = fa->in_args[0].value;
+	struct fuse_file *fuse_file_in = file_in->private_data;
+	struct file *backing_file_in = fuse_file_in->backing_file;
+	struct fuse_file *fuse_file_out = file_out->private_data;
+	struct file *backing_file_out = fuse_file_out->backing_file;
+
+	/* TODO: Handle changing of in/out files */
+	if (backing_file_out)
+		return vfs_copy_file_range(backing_file_in, fci->off_in, backing_file_out,
+					   fci->off_out, fci->len, fci->flags);
+	else
+		return generic_copy_file_range(file_in, pos_in, file_out, pos_out, len,
+					       flags);
+}
+
+void *fuse_copy_file_range_finalize(struct fuse_bpf_args *fa, struct file *file_in, loff_t pos_in,
+				    struct file *file_out, loff_t pos_out, size_t len,
+				    unsigned int flags)
+{
+	return NULL;
+}
+
+int fuse_fsync_initialize(struct fuse_bpf_args *fa, struct fuse_fsync_in *ffi,
+		   struct file *file, loff_t start, loff_t end, int datasync)
+{
+	struct fuse_file *fuse_file = file->private_data;
+
+	*ffi = (struct fuse_fsync_in) {
+		.fh = fuse_file->fh,
+		.fsync_flags = datasync ? FUSE_FSYNC_FDATASYNC : 0,
+	};
+
+	*fa = (struct fuse_bpf_args) {
+		.nodeid = get_fuse_inode(file->f_inode)->nodeid,
+		.opcode = FUSE_FSYNC,
+		.in_numargs = 1,
+		.in_args[0].size = sizeof(*ffi),
+		.in_args[0].value = ffi,
+		.flags = FUSE_BPF_FORCE,
+	};
+
+	return 0;
+}
+
+int fuse_fsync_backing(struct fuse_bpf_args *fa,
+		   struct file *file, loff_t start, loff_t end, int datasync)
+{
+	struct fuse_file *fuse_file = file->private_data;
+	struct file *backing_file = fuse_file->backing_file;
+	const struct fuse_fsync_in *ffi = fa->in_args[0].value;
+	int new_datasync = (ffi->fsync_flags & FUSE_FSYNC_FDATASYNC) ? 1 : 0;
+
+	return vfs_fsync(backing_file, new_datasync);
+}
+
+void *fuse_fsync_finalize(struct fuse_bpf_args *fa,
+		   struct file *file, loff_t start, loff_t end, int datasync)
+{
+	return NULL;
+}
+
+int fuse_dir_fsync_initialize(struct fuse_bpf_args *fa, struct fuse_fsync_in *ffi,
+		   struct file *file, loff_t start, loff_t end, int datasync)
+{
+	struct fuse_file *fuse_file = file->private_data;
+
+	*ffi = (struct fuse_fsync_in) {
+		.fh = fuse_file->fh,
+		.fsync_flags = datasync ? FUSE_FSYNC_FDATASYNC : 0,
+	};
+
+	*fa = (struct fuse_bpf_args) {
+		.nodeid = get_fuse_inode(file->f_inode)->nodeid,
+		.opcode = FUSE_FSYNCDIR,
+		.in_numargs = 1,
+		.in_args[0].size = sizeof(*ffi),
+		.in_args[0].value = ffi,
+		.flags = FUSE_BPF_FORCE,
+	};
+
+	return 0;
+}
+
+int fuse_getxattr_initialize(struct fuse_bpf_args *fa,
+		struct fuse_getxattr_io *fgio,
+		struct dentry *dentry, const char *name, void *value,
+		size_t size)
+{
+	*fgio = (struct fuse_getxattr_io) {
+		.fgi.size = size,
+	};
+
+	*fa = (struct fuse_bpf_args) {
+		.nodeid = get_fuse_inode(dentry->d_inode)->nodeid,
+		.opcode = FUSE_GETXATTR,
+		.in_numargs = 2,
+		.out_numargs = 1,
+		.in_args[0] = (struct fuse_bpf_in_arg) {
+			.size = sizeof(fgio->fgi),
+			.value = &fgio->fgi,
+		},
+		.in_args[1] = (struct fuse_bpf_in_arg) {
+			.size = strlen(name) + 1,
+			.value = name,
+		},
+		.flags = size ? FUSE_BPF_OUT_ARGVAR : 0,
+		.out_args[0].size = size ? size : sizeof(fgio->fgo),
+		.out_args[0].value = size ? value : &fgio->fgo,
+	};
+	return 0;
+}
+
+int fuse_getxattr_backing(struct fuse_bpf_args *fa,
+		struct dentry *dentry, const char *name, void *value,
+		size_t size)
+{
+	ssize_t ret = vfs_getxattr(&init_user_ns,
+				   get_fuse_dentry(dentry)->backing_path.dentry,
+				   fa->in_args[1].value, value, size);
+
+	if (fa->flags & FUSE_BPF_OUT_ARGVAR)
+		fa->out_args[0].size = ret;
+	else
+		((struct fuse_getxattr_out *)fa->out_args[0].value)->size = ret;
+
+	return 0;
+}
+
+void *fuse_getxattr_finalize(struct fuse_bpf_args *fa,
+		struct dentry *dentry, const char *name, void *value,
+		size_t size)
+{
+	struct fuse_getxattr_out *fgo;
+
+	if (fa->flags & FUSE_BPF_OUT_ARGVAR)
+		return ERR_PTR(fa->out_args[0].size);
+
+	fgo = fa->out_args[0].value;
+
+	return ERR_PTR(fgo->size);
+
+}
+
+int fuse_listxattr_initialize(struct fuse_bpf_args *fa,
+			      struct fuse_getxattr_io *fgio,
+			      struct dentry *dentry, char *list, size_t size)
+{
+	*fgio = (struct fuse_getxattr_io){
+		.fgi.size = size,
+	};
+
+	*fa = (struct fuse_bpf_args){
+		.nodeid = get_fuse_inode(dentry->d_inode)->nodeid,
+		.opcode = FUSE_LISTXATTR,
+		.in_numargs = 1,
+		.out_numargs = 1,
+		.in_args[0] =
+			(struct fuse_bpf_in_arg){
+				.size = sizeof(fgio->fgi),
+				.value = &fgio->fgi,
+			},
+		.flags = size ? FUSE_BPF_OUT_ARGVAR : 0,
+		.out_args[0].size = size ? size : sizeof(fgio->fgo),
+		.out_args[0].value = size ? (void *)list : &fgio->fgo,
+	};
+
+	return 0;
+}
+
+int fuse_listxattr_backing(struct fuse_bpf_args *fa, struct dentry *dentry,
+			   char *list, size_t size)
+{
+	ssize_t ret =
+		vfs_listxattr(get_fuse_dentry(dentry)->backing_path.dentry,
+			      list, size);
+
+	if (ret < 0)
+		return ret;
+
+	if (fa->flags & FUSE_BPF_OUT_ARGVAR)
+		fa->out_args[0].size = ret;
+	else
+		((struct fuse_getxattr_out *)fa->out_args[0].value)->size = ret;
+
+	return ret;
+}
+
+void *fuse_listxattr_finalize(struct fuse_bpf_args *fa, struct dentry *dentry,
+			      char *list, size_t size)
+{
+	struct fuse_getxattr_out *fgo;
+
+	if (fa->error_in)
+		return NULL;
+
+	if (fa->flags & FUSE_BPF_OUT_ARGVAR)
+		return ERR_PTR(fa->out_args[0].size);
+
+	fgo = fa->out_args[0].value;
+	return ERR_PTR(fgo->size);
+}
+
+int fuse_setxattr_initialize(struct fuse_bpf_args *fa,
+			     struct fuse_setxattr_in *fsxi,
+			     struct dentry *dentry, const char *name,
+			     const void *value, size_t size, int flags)
+{
+	*fsxi = (struct fuse_setxattr_in) {
+		.size = size,
+		.flags = flags,
+	};
+
+	*fa = (struct fuse_bpf_args) {
+		.nodeid = get_fuse_inode(dentry->d_inode)->nodeid,
+		.opcode = FUSE_SETXATTR,
+		.in_numargs = 3,
+		.in_args[0] = (struct fuse_bpf_in_arg) {
+			.size = sizeof(*fsxi),
+			.value = fsxi,
+		},
+		.in_args[1] = (struct fuse_bpf_in_arg) {
+			.size = strlen(name) + 1,
+			.value = name,
+		},
+		.in_args[2] = (struct fuse_bpf_in_arg) {
+			.size = size,
+			.value = value,
+		},
+	};
+
+	return 0;
+}
+
+int fuse_setxattr_backing(struct fuse_bpf_args *fa, struct dentry *dentry,
+			  const char *name, const void *value, size_t size,
+			  int flags)
+{
+	return vfs_setxattr(&init_user_ns,
+			    get_fuse_dentry(dentry)->backing_path.dentry, name,
+			    value, size, flags);
+}
+
+void *fuse_setxattr_finalize(struct fuse_bpf_args *fa, struct dentry *dentry,
+			     const char *name, const void *value, size_t size,
+			     int flags)
+{
+	return NULL;
+}
+
+int fuse_removexattr_initialize(struct fuse_bpf_args *fa,
+				struct fuse_dummy_io *unused,
+				struct dentry *dentry, const char *name)
+{
+	*fa = (struct fuse_bpf_args) {
+		.nodeid = get_fuse_inode(dentry->d_inode)->nodeid,
+		.opcode = FUSE_REMOVEXATTR,
+		.in_numargs = 1,
+		.in_args[0] = (struct fuse_bpf_in_arg) {
+			.size = strlen(name) + 1,
+			.value = name,
+		},
+	};
+
+	return 0;
+}
+
+int fuse_removexattr_backing(struct fuse_bpf_args *fa,
+			     struct dentry *dentry, const char *name)
+{
+	struct path *backing_path =
+		&get_fuse_dentry(dentry)->backing_path;
+
+	/* TODO account for changes of the name by prefilter */
+	return vfs_removexattr(&init_user_ns, backing_path->dentry, name);
+}
+
+void *fuse_removexattr_finalize(struct fuse_bpf_args *fa,
+				struct dentry *dentry, const char *name)
+{
+	return NULL;
+}
+
+static inline void fuse_bpf_aio_put(struct fuse_bpf_aio_req *aio_req)
+{
+	if (refcount_dec_and_test(&aio_req->ref))
+		kmem_cache_free(fuse_bpf_aio_request_cachep, aio_req);
+}
+
+static void fuse_bpf_aio_cleanup_handler(struct fuse_bpf_aio_req *aio_req)
+{
+	struct kiocb *iocb = &aio_req->iocb;
+	struct kiocb *iocb_orig = aio_req->iocb_orig;
+
+	if (iocb->ki_flags & IOCB_WRITE) {
+		__sb_writers_acquired(file_inode(iocb->ki_filp)->i_sb,
+				      SB_FREEZE_WRITE);
+		file_end_write(iocb->ki_filp);
+		fuse_copyattr(iocb_orig->ki_filp, iocb->ki_filp);
+	}
+	iocb_orig->ki_pos = iocb->ki_pos;
+	fuse_bpf_aio_put(aio_req);
+}
+
+static void fuse_bpf_aio_rw_complete(struct kiocb *iocb, long res)
+{
+	struct fuse_bpf_aio_req *aio_req =
+		container_of(iocb, struct fuse_bpf_aio_req, iocb);
+	struct kiocb *iocb_orig = aio_req->iocb_orig;
+
+	fuse_bpf_aio_cleanup_handler(aio_req);
+	iocb_orig->ki_complete(iocb_orig, res);
+}
+
+
+int fuse_file_read_iter_initialize(
+		struct fuse_bpf_args *fa, struct fuse_file_read_iter_io *fri,
+		struct kiocb *iocb, struct iov_iter *to)
+{
+	struct file *file = iocb->ki_filp;
+	struct fuse_file *ff = file->private_data;
+
+	fri->fri = (struct fuse_read_in) {
+		.fh = ff->fh,
+		.offset = iocb->ki_pos,
+		.size = to->count,
+	};
+
+	fri->frio = (struct fuse_read_iter_out) {
+		.ret = fri->fri.size,
+	};
+
+	/* TODO we can't assume 'to' is a kvec */
+	/* TODO we also can't assume the vector has only one component */
+	*fa = (struct fuse_bpf_args) {
+		.opcode = FUSE_READ,
+		.nodeid = ff->nodeid,
+		.in_numargs = 1,
+		.in_args[0].size = sizeof(fri->fri),
+		.in_args[0].value = &fri->fri,
+		.out_numargs = 1,
+		.out_args[0].size = sizeof(fri->frio),
+		.out_args[0].value = &fri->frio,
+		/*
+		 * TODO Design this properly.
+		 * Possible approach: do not pass buf to bpf
+		 * If going to userland, do a deep copy
+		 * For extra credit, do that to/from the vector, rather than
+		 * making an extra copy in the kernel
+		 */
+	};
+
+	return 0;
+}
+
+int fuse_file_read_iter_backing(struct fuse_bpf_args *fa,
+		struct kiocb *iocb, struct iov_iter *to)
+{
+	struct fuse_read_iter_out *frio = fa->out_args[0].value;
+	struct file *file = iocb->ki_filp;
+	struct fuse_file *ff = file->private_data;
+	ssize_t ret;
+
+	if (!iov_iter_count(to))
+		return 0;
+
+	if ((iocb->ki_flags & IOCB_DIRECT) &&
+	    (!ff->backing_file->f_mapping->a_ops ||
+	     !ff->backing_file->f_mapping->a_ops->direct_IO))
+		return -EINVAL;
+
+	/* TODO This just plain ignores any change to fuse_read_in */
+	if (is_sync_kiocb(iocb)) {
+		ret = vfs_iter_read(ff->backing_file, to, &iocb->ki_pos,
+				iocb_to_rw_flags(iocb->ki_flags, FUSE_BPF_IOCB_MASK));
+	} else {
+		struct fuse_bpf_aio_req *aio_req;
+
+		ret = -ENOMEM;
+		aio_req = kmem_cache_zalloc(fuse_bpf_aio_request_cachep, GFP_KERNEL);
+		if (!aio_req)
+			goto out;
+
+		aio_req->iocb_orig = iocb;
+		kiocb_clone(&aio_req->iocb, iocb, ff->backing_file);
+		aio_req->iocb.ki_complete = fuse_bpf_aio_rw_complete;
+		refcount_set(&aio_req->ref, 2);
+		ret = vfs_iocb_iter_read(ff->backing_file, &aio_req->iocb, to);
+		fuse_bpf_aio_put(aio_req);
+		if (ret != -EIOCBQUEUED)
+			fuse_bpf_aio_cleanup_handler(aio_req);
+	}
+
+	frio->ret = ret;
+
+	/* TODO Need to point value at the buffer for post-modification */
+
+out:
+	fuse_file_accessed(file, ff->backing_file);
+
+	return ret;
+}
+
+void *fuse_file_read_iter_finalize(struct fuse_bpf_args *fa,
+		struct kiocb *iocb, struct iov_iter *to)
+{
+	struct fuse_read_iter_out *frio = fa->out_args[0].value;
+
+	return ERR_PTR(frio->ret);
+}
+
+int fuse_file_write_iter_initialize(
+		struct fuse_bpf_args *fa, struct fuse_file_write_iter_io *fwio,
+		struct kiocb *iocb, struct iov_iter *from)
+{
+	struct file *file = iocb->ki_filp;
+	struct fuse_file *ff = file->private_data;
+
+	*fwio = (struct fuse_file_write_iter_io) {
+		.fwi.fh = ff->fh,
+		.fwi.offset = iocb->ki_pos,
+		.fwi.size = from->count,
+	};
+
+	/* TODO we can't assume 'from' is a kvec */
+	*fa = (struct fuse_bpf_args) {
+		.opcode = FUSE_WRITE,
+		.nodeid = ff->nodeid,
+		.in_numargs = 2,
+		.in_args[0].size = sizeof(fwio->fwi),
+		.in_args[0].value = &fwio->fwi,
+		.in_args[1].size = fwio->fwi.size,
+		.in_args[1].value = iov_iter_is_kvec(from)
+			? from->kvec->iov_base : NULL,
+		.out_numargs = 1,
+		.out_args[0].size = sizeof(fwio->fwio),
+		.out_args[0].value = &fwio->fwio,
+	};
+
+	return 0;
+}
+
+int fuse_file_write_iter_backing(struct fuse_bpf_args *fa,
+		struct kiocb *iocb, struct iov_iter *from)
+{
+	struct file *file = iocb->ki_filp;
+	struct fuse_file *ff = file->private_data;
+	struct fuse_write_iter_out *fwio = fa->out_args[0].value;
+	ssize_t ret;
+
+	if (!iov_iter_count(from))
+		return 0;
+
+	/* TODO This just plain ignores any change to fuse_write_in */
+	/* TODO uint32_t seems smaller than ssize_t.... right? */
+	inode_lock(file_inode(file));
+
+	fuse_copyattr(file, ff->backing_file);
+
+	if (is_sync_kiocb(iocb)) {
+		file_start_write(ff->backing_file);
+		ret = vfs_iter_write(ff->backing_file, from, &iocb->ki_pos,
+					   iocb_to_rw_flags(iocb->ki_flags, FUSE_BPF_IOCB_MASK));
+		file_end_write(ff->backing_file);
+
+		/* Must reflect change in size of backing file to upper file */
+		if (ret > 0)
+			fuse_copyattr(file, ff->backing_file);
+	} else {
+		struct fuse_bpf_aio_req *aio_req;
+
+		ret = -ENOMEM;
+		aio_req = kmem_cache_zalloc(fuse_bpf_aio_request_cachep, GFP_KERNEL);
+		if (!aio_req)
+			goto out;
+
+		file_start_write(ff->backing_file);
+		__sb_writers_release(file_inode(ff->backing_file)->i_sb, SB_FREEZE_WRITE);
+		aio_req->iocb_orig = iocb;
+		kiocb_clone(&aio_req->iocb, iocb, ff->backing_file);
+		aio_req->iocb.ki_complete = fuse_bpf_aio_rw_complete;
+		refcount_set(&aio_req->ref, 2);
+		ret = vfs_iocb_iter_write(ff->backing_file, &aio_req->iocb, from);
+		fuse_bpf_aio_put(aio_req);
+		if (ret != -EIOCBQUEUED)
+			fuse_bpf_aio_cleanup_handler(aio_req);
+	}
+
+out:
+	inode_unlock(file_inode(file));
+	fwio->ret = ret;
+	if (ret < 0)
+		return ret;
+	return 0;
+}
+
+void *fuse_file_write_iter_finalize(struct fuse_bpf_args *fa,
+		struct kiocb *iocb, struct iov_iter *from)
+{
+	struct fuse_write_iter_out *fwio = fa->out_args[0].value;
+
+	return ERR_PTR(fwio->ret);
+}
+
+ssize_t fuse_backing_mmap(struct file *file, struct vm_area_struct *vma)
+{
+	int ret;
+	struct fuse_file *ff = file->private_data;
+	struct inode *fuse_inode = file_inode(file);
+	struct file *backing_file = ff->backing_file;
+	struct inode *backing_inode = file_inode(backing_file);
+
+	if (!backing_file->f_op->mmap)
+		return -ENODEV;
+
+	if (WARN_ON(file != vma->vm_file))
+		return -EIO;
+
+	vma->vm_file = get_file(backing_file);
+
+	ret = call_mmap(vma->vm_file, vma);
+
+	if (ret)
+		fput(backing_file);
+	else
+		fput(file);
+
+	if (file->f_flags & O_NOATIME)
+		return ret;
+
+	if ((!timespec64_equal(&fuse_inode->i_mtime,
+			       &backing_inode->i_mtime) ||
+	     !timespec64_equal(&fuse_inode->i_ctime,
+			       &backing_inode->i_ctime))) {
+		fuse_inode->i_mtime = backing_inode->i_mtime;
+		fuse_inode->i_ctime = backing_inode->i_ctime;
+	}
+	touch_atime(&file->f_path);
+
+	return ret;
+}
+
+int fuse_file_fallocate_initialize(struct fuse_bpf_args *fa,
+		struct fuse_fallocate_in *ffi,
+		struct file *file, int mode, loff_t offset, loff_t length)
+{
+	struct fuse_file *ff = file->private_data;
+
+	*ffi = (struct fuse_fallocate_in) {
+		.fh = ff->fh,
+		.offset = offset,
+		.length = length,
+		.mode = mode
+	};
+
+	*fa = (struct fuse_bpf_args) {
+		.opcode = FUSE_FALLOCATE,
+		.nodeid = ff->nodeid,
+		.in_numargs = 1,
+		.in_args[0].size = sizeof(*ffi),
+		.in_args[0].value = ffi,
+	};
+
+	return 0;
+}
+
+int fuse_file_fallocate_backing(struct fuse_bpf_args *fa,
+		struct file *file, int mode, loff_t offset, loff_t length)
+{
+	const struct fuse_fallocate_in *ffi = fa->in_args[0].value;
+	struct fuse_file *ff = file->private_data;
+
+	return vfs_fallocate(ff->backing_file, ffi->mode, ffi->offset,
+			     ffi->length);
+}
+
+void *fuse_file_fallocate_finalize(struct fuse_bpf_args *fa,
+		struct file *file, int mode, loff_t offset, loff_t length)
+{
+	return NULL;
+}
+
+/*******************************************************************************
+ * Directory operations after here                                             *
+ ******************************************************************************/
+
+int fuse_lookup_initialize(struct fuse_bpf_args *fa, struct fuse_lookup_io *fli,
+	       struct inode *dir, struct dentry *entry, unsigned int flags)
+{
+	*fa = (struct fuse_bpf_args) {
+		.nodeid = get_fuse_inode(dir)->nodeid,
+		.opcode = FUSE_LOOKUP,
+		.in_numargs = 1,
+		.out_numargs = 2,
+		.flags = FUSE_BPF_OUT_ARGVAR,
+		.in_args[0] = (struct fuse_bpf_in_arg) {
+			.size = entry->d_name.len + 1,
+			.value = entry->d_name.name,
+		},
+		.out_args[0] = (struct fuse_bpf_arg) {
+			.size = sizeof(fli->feo),
+			.value = &fli->feo,
+		},
+		.out_args[1] = (struct fuse_bpf_arg) {
+			.size = sizeof(fli->feb.out),
+			.value = &fli->feb.out,
+		},
+	};
+
+	return 0;
+}
+
+int fuse_lookup_backing(struct fuse_bpf_args *fa, struct inode *dir,
+			  struct dentry *entry, unsigned int flags)
+{
+	struct fuse_dentry *fuse_entry = get_fuse_dentry(entry);
+	struct fuse_dentry *dir_fuse_entry = get_fuse_dentry(entry->d_parent);
+	struct dentry *dir_backing_entry = dir_fuse_entry->backing_path.dentry;
+	struct inode *dir_backing_inode = dir_backing_entry->d_inode;
+	struct dentry *backing_entry;
+	struct fuse_entry_out *feo = (void *)fa->out_args[0].value;
+	struct kstat stat;
+	int err;
+
+	/* TODO this will not handle lookups over mount points */
+	inode_lock_nested(dir_backing_inode, I_MUTEX_PARENT);
+	backing_entry = lookup_one_len(entry->d_name.name, dir_backing_entry,
+					strlen(entry->d_name.name));
+	inode_unlock(dir_backing_inode);
+
+	if (IS_ERR(backing_entry))
+		return PTR_ERR(backing_entry);
+
+	fuse_entry->backing_path = (struct path) {
+		.dentry = backing_entry,
+		.mnt = mntget(dir_fuse_entry->backing_path.mnt),
+	};
+
+	if (d_is_negative(backing_entry)) {
+		fa->error_in = -ENOENT;
+		return 0;
+	}
+
+	err = vfs_getattr(&fuse_entry->backing_path, &stat,
+				  STATX_BASIC_STATS, 0);
+	if (err) {
+		path_put_init(&fuse_entry->backing_path);
+		return err;
+	}
+
+	fuse_stat_to_attr(get_fuse_conn(dir),
+			  backing_entry->d_inode, &stat, &feo->attr);
+	return 0;
+}
+
+int fuse_handle_backing(struct fuse_entry_bpf *feb, struct inode **backing_inode,
+			struct path *backing_path)
+{
+	switch (feb->out.backing_action) {
+	case FUSE_ACTION_KEEP:
+		/* backing inode/path are added in fuse_lookup_backing */
+		break;
+
+	case FUSE_ACTION_REMOVE:
+		iput(*backing_inode);
+		*backing_inode = NULL;
+		path_put_init(backing_path);
+		break;
+
+	case FUSE_ACTION_REPLACE: {
+		struct file *backing_file = feb->backing_file;
+
+		if (!backing_file)
+			return -EINVAL;
+		if (IS_ERR(backing_file))
+			return PTR_ERR(backing_file);
+
+		if (backing_inode)
+			iput(*backing_inode);
+		*backing_inode = backing_file->f_inode;
+		ihold(*backing_inode);
+
+		path_put(backing_path);
+		*backing_path = backing_file->f_path;
+		path_get(backing_path);
+		break;
+	}
+
+	default:
+		return -EINVAL;
+	}
+
+	return 0;
+}
+
+int fuse_handle_bpf_prog(struct fuse_entry_bpf *feb, struct inode *parent,
+			 struct bpf_prog **bpf)
+{
+	struct bpf_prog *new_bpf = NULL;
+
+	switch (feb->out.bpf_action) {
+	case FUSE_ACTION_KEEP: {
+		/* Parent isn't presented, but we want to keep
+		 * Don't touch bpf program at all in this case
+		 */
+		if (!parent)
+			return 0;
+
+		new_bpf = get_fuse_inode(parent)->bpf;
+		if (new_bpf)
+			bpf_prog_inc(new_bpf);
+		break;
+	}
+
+	case FUSE_ACTION_REMOVE:
+		break;
+
+	case FUSE_ACTION_REPLACE: {
+		struct file *bpf_file = feb->bpf_file;
+
+		if (!bpf_file)
+			return -EINVAL;
+		if (IS_ERR(bpf_file))
+			return PTR_ERR(bpf_file);
+
+		new_bpf = fuse_get_bpf_prog(bpf_file);
+		if (IS_ERR(new_bpf))
+			return PTR_ERR(new_bpf);
+		break;
+	}
+
+	default:
+		return -EINVAL;
+	}
+
+	/* Cannot change existing program */
+	if (*bpf && new_bpf) {
+		bpf_prog_put(new_bpf);
+		return new_bpf == *bpf ? 0 : -EINVAL;
+	}
+
+	if (*bpf)
+		bpf_prog_put(*bpf);
+
+	*bpf = new_bpf;
+	return 0;
+}
+
+struct dentry *fuse_lookup_finalize(struct fuse_bpf_args *fa, struct inode *dir,
+			   struct dentry *entry, unsigned int flags)
+{
+	struct fuse_dentry *fd;
+	struct dentry *bd;
+	struct inode *inode, *backing_inode;
+	struct inode *d_inode = entry->d_inode;
+	struct fuse_entry_out *feo = fa->out_args[0].value;
+	struct fuse_entry_bpf_out *febo = fa->out_args[1].value;
+	struct fuse_entry_bpf *feb = container_of(febo, struct fuse_entry_bpf, out);
+	int error = -1;
+	u64 target_nodeid = 0;
+	struct dentry *ret;
+
+	fd = get_fuse_dentry(entry);
+	if (!fd) {
+		ret = ERR_PTR(-EIO);
+		goto out;
+	}
+
+	bd = fd->backing_path.dentry;
+	if (!bd) {
+		ret = ERR_PTR(-ENOENT);
+		goto out;
+	}
+
+	backing_inode = bd->d_inode;
+	if (!backing_inode) {
+		ret = 0;
+		goto out;
+	}
+
+	if (d_inode)
+		target_nodeid = get_fuse_inode(d_inode)->nodeid;
+
+	inode = fuse_iget_backing(dir->i_sb, target_nodeid, backing_inode);
+
+	if (IS_ERR(inode)) {
+		ret = ERR_PTR(PTR_ERR(inode));
+		goto out;
+	}
+
+	error = fuse_handle_bpf_prog(feb, dir, &get_fuse_inode(inode)->bpf);
+	if (error) {
+		ret = ERR_PTR(error);
+		goto out;
+	}
+
+	error = fuse_handle_backing(feb, &get_fuse_inode(inode)->backing_inode, &fd->backing_path);
+	if (error) {
+		ret = ERR_PTR(error);
+		goto out;
+	}
+
+	get_fuse_inode(inode)->nodeid = feo->nodeid;
+
+	ret = d_splice_alias(inode, entry);
+out:
+	if (feb->backing_file)
+		fput(feb->backing_file);
+	return ret;
+}
+
+int fuse_revalidate_backing(struct dentry *entry, unsigned int flags)
+{
+	struct fuse_dentry *fuse_dentry = get_fuse_dentry(entry);
+	struct dentry *backing_entry = fuse_dentry->backing_path.dentry;
+
+	spin_lock(&backing_entry->d_lock);
+	if (d_unhashed(backing_entry)) {
+		spin_unlock(&backing_entry->d_lock);
+			return 0;
+	}
+	spin_unlock(&backing_entry->d_lock);
+
+	if (unlikely(backing_entry->d_flags & DCACHE_OP_REVALIDATE))
+		return backing_entry->d_op->d_revalidate(backing_entry, flags);
+	return 1;
+}
+
+int fuse_canonical_path_initialize(struct fuse_bpf_args *fa,
+				   struct fuse_dummy_io *fdi,
+				   const struct path *path,
+				   struct path *canonical_path)
+{
+	fa->opcode = FUSE_CANONICAL_PATH;
+	return 0;
+}
+
+int fuse_canonical_path_backing(struct fuse_bpf_args *fa, const struct path *path,
+				struct path *canonical_path)
+{
+	get_fuse_backing_path(path->dentry, canonical_path);
+	return 0;
+}
+
+void *fuse_canonical_path_finalize(struct fuse_bpf_args *fa,
+				   const struct path *path,
+				   struct path *canonical_path)
+{
+	return NULL;
+}
+
+int fuse_mknod_initialize(
+		struct fuse_bpf_args *fa, struct fuse_mknod_in *fmi,
+		struct inode *dir, struct dentry *entry, umode_t mode, dev_t rdev)
+{
+	*fmi = (struct fuse_mknod_in) {
+		.mode = mode,
+		.rdev = new_encode_dev(rdev),
+		.umask = current_umask(),
+	};
+	*fa = (struct fuse_bpf_args) {
+		.nodeid = get_node_id(dir),
+		.opcode = FUSE_MKNOD,
+		.in_numargs = 2,
+		.in_args[0] = (struct fuse_bpf_in_arg) {
+			.size = sizeof(*fmi),
+			.value = fmi,
+		},
+		.in_args[1] = (struct fuse_bpf_in_arg) {
+			.size = entry->d_name.len + 1,
+			.value = entry->d_name.name,
+		},
+	};
+
+	return 0;
+}
+
+int fuse_mknod_backing(
+		struct fuse_bpf_args *fa,
+		struct inode *dir, struct dentry *entry, umode_t mode, dev_t rdev)
+{
+	int err = 0;
+	const struct fuse_mknod_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 path backing_path = {};
+	struct inode *inode = NULL;
+
+	//TODO Actually deal with changing the backing entry in mknod
+	get_fuse_backing_path(entry, &backing_path);
+	if (!backing_path.dentry)
+		return -EBADF;
+
+	inode_lock_nested(backing_inode, I_MUTEX_PARENT);
+	mode = fmi->mode;
+	if (!IS_POSIXACL(backing_inode))
+		mode &= ~fmi->umask;
+	err = vfs_mknod(&init_user_ns, backing_inode, backing_path.dentry,
+			mode, new_decode_dev(fmi->rdev));
+	inode_unlock(backing_inode);
+	if (err)
+		goto out;
+	if (d_really_is_negative(backing_path.dentry) ||
+		unlikely(d_unhashed(backing_path.dentry))) {
+		err = -EINVAL;
+		/**
+		 * TODO: overlayfs responds to this situation with a
+		 * lookupOneLen. Should we do that too?
+		 */
+		goto out;
+	}
+	inode = fuse_iget_backing(dir->i_sb, fuse_inode->nodeid, backing_inode);
+	if (IS_ERR(inode)) {
+		err = PTR_ERR(inode);
+		goto out;
+	}
+	d_instantiate(entry, inode);
+out:
+	path_put(&backing_path);
+	return err;
+}
+
+void *fuse_mknod_finalize(
+		struct fuse_bpf_args *fa,
+		struct inode *dir, struct dentry *entry, umode_t mode, dev_t rdev)
+{
+	return NULL;
+}
+
+int fuse_mkdir_initialize(
+		struct fuse_bpf_args *fa, struct fuse_mkdir_in *fmi,
+		struct inode *dir, struct dentry *entry, umode_t mode)
+{
+	*fmi = (struct fuse_mkdir_in) {
+		.mode = mode,
+		.umask = current_umask(),
+	};
+	*fa = (struct fuse_bpf_args) {
+		.nodeid = get_node_id(dir),
+		.opcode = FUSE_MKDIR,
+		.in_numargs = 2,
+		.in_args[0] = (struct fuse_bpf_in_arg) {
+			.size = sizeof(*fmi),
+			.value = fmi,
+		},
+		.in_args[1] = (struct fuse_bpf_in_arg) {
+			.size = entry->d_name.len + 1,
+			.value = entry->d_name.name,
+		},
+	};
+
+	return 0;
+}
+
+int fuse_mkdir_backing(
+		struct fuse_bpf_args *fa,
+		struct inode *dir, 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 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);
+	mode = fmi->mode;
+	if (!IS_POSIXACL(backing_inode))
+		mode &= ~fmi->umask;
+	err = vfs_mkdir(&init_user_ns, 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);
+		if (IS_ERR(d)) {
+			err = PTR_ERR(d);
+			goto out;
+		}
+		dput(backing_path.dentry);
+		backing_path.dentry = d;
+	}
+	inode = fuse_iget_backing(dir->i_sb, fuse_inode->nodeid, backing_inode);
+	if (IS_ERR(inode)) {
+		err = PTR_ERR(inode);
+		goto out;
+	}
+	d_instantiate(entry, inode);
+out:
+	inode_unlock(backing_inode);
+	path_put(&backing_path);
+	return err;
+}
+
+void *fuse_mkdir_finalize(
+		struct fuse_bpf_args *fa,
+		struct inode *dir, struct dentry *entry, umode_t mode)
+{
+	return NULL;
+}
+
+int fuse_rmdir_initialize(
+		struct fuse_bpf_args *fa, struct fuse_dummy_io *dummy,
+		struct inode *dir, struct dentry *entry)
+{
+	*fa = (struct fuse_bpf_args) {
+		.nodeid = get_node_id(dir),
+		.opcode = FUSE_RMDIR,
+		.in_numargs = 1,
+		.in_args[0] = (struct fuse_bpf_in_arg) {
+			.size = entry->d_name.len + 1,
+			.value = entry->d_name.name,
+		},
+	};
+
+	return 0;
+}
+
+int fuse_rmdir_backing(
+		struct fuse_bpf_args *fa,
+		struct inode *dir, struct dentry *entry)
+{
+	int err = 0;
+	struct path backing_path = {};
+	struct dentry *backing_parent_dentry;
+	struct inode *backing_inode;
+
+	/* TODO Actually deal with changing the backing entry in rmdir */
+	get_fuse_backing_path(entry, &backing_path);
+	if (!backing_path.dentry)
+		return -EBADF;
+
+	/* TODO Not sure if we should reverify like overlayfs, or get inode from d_parent */
+	backing_parent_dentry = dget_parent(backing_path.dentry);
+	backing_inode = d_inode(backing_parent_dentry);
+
+	inode_lock_nested(backing_inode, I_MUTEX_PARENT);
+	err = vfs_rmdir(&init_user_ns, backing_inode, backing_path.dentry);
+	inode_unlock(backing_inode);
+
+	dput(backing_parent_dentry);
+	if (!err)
+		d_drop(entry);
+	path_put(&backing_path);
+	return err;
+}
+
+void *fuse_rmdir_finalize(
+		struct fuse_bpf_args *fa,
+		struct inode *dir, struct dentry *entry)
+{
+	return NULL;
+}
+
+static int fuse_rename_backing_common(
+			 struct inode *olddir, struct dentry *oldent,
+			 struct inode *newdir, struct dentry *newent,
+			 unsigned int flags)
+{
+	int err = 0;
+	struct path old_backing_path;
+	struct path new_backing_path;
+	struct dentry *old_backing_dir_dentry;
+	struct dentry *old_backing_dentry;
+	struct dentry *new_backing_dir_dentry;
+	struct dentry *new_backing_dentry;
+	struct dentry *trap = NULL;
+	struct inode *target_inode;
+	struct renamedata rd;
+
+	//TODO Actually deal with changing anything that isn't a flag
+	get_fuse_backing_path(oldent, &old_backing_path);
+	if (!old_backing_path.dentry)
+		return -EBADF;
+	get_fuse_backing_path(newent, &new_backing_path);
+	if (!new_backing_path.dentry) {
+		/*
+		 * TODO A file being moved from a backing path to another
+		 * backing path which is not yet instrumented with FUSE-BPF.
+		 * This may be slow and should be substituted with something
+		 * more clever.
+		 */
+		err = -EXDEV;
+		goto put_old_path;
+	}
+	if (new_backing_path.mnt != old_backing_path.mnt) {
+		err = -EXDEV;
+		goto put_new_path;
+	}
+	old_backing_dentry = old_backing_path.dentry;
+	new_backing_dentry = new_backing_path.dentry;
+	old_backing_dir_dentry = dget_parent(old_backing_dentry);
+	new_backing_dir_dentry = dget_parent(new_backing_dentry);
+	target_inode = d_inode(newent);
+
+	trap = lock_rename(old_backing_dir_dentry, new_backing_dir_dentry);
+	if (trap == old_backing_dentry) {
+		err = -EINVAL;
+		goto put_parents;
+	}
+	if (trap == new_backing_dentry) {
+		err = -ENOTEMPTY;
+		goto put_parents;
+	}
+	rd = (struct renamedata) {
+		.old_mnt_userns = &init_user_ns,
+		.old_dir = d_inode(old_backing_dir_dentry),
+		.old_dentry = old_backing_dentry,
+		.new_mnt_userns = &init_user_ns,
+		.new_dir = d_inode(new_backing_dir_dentry),
+		.new_dentry = new_backing_dentry,
+		.flags = flags,
+	};
+	err = vfs_rename(&rd);
+	if (err)
+		goto unlock;
+	if (target_inode)
+		fsstack_copy_attr_all(target_inode,
+				get_fuse_inode(target_inode)->backing_inode);
+	fsstack_copy_attr_all(d_inode(oldent), d_inode(old_backing_dentry));
+unlock:
+	unlock_rename(old_backing_dir_dentry, new_backing_dir_dentry);
+put_parents:
+	dput(new_backing_dir_dentry);
+	dput(old_backing_dir_dentry);
+put_new_path:
+	path_put(&new_backing_path);
+put_old_path:
+	path_put(&old_backing_path);
+	return err;
+}
+
+int fuse_rename2_initialize(struct fuse_bpf_args *fa, struct fuse_rename2_in *fri,
+			    struct inode *olddir, struct dentry *oldent,
+			    struct inode *newdir, struct dentry *newent,
+			    unsigned int flags)
+{
+	*fri = (struct fuse_rename2_in) {
+		.newdir = get_node_id(newdir),
+		.flags = flags,
+	};
+	*fa = (struct fuse_bpf_args) {
+		.nodeid = get_node_id(olddir),
+		.opcode = FUSE_RENAME2,
+		.in_numargs = 3,
+		.in_args[0] = (struct fuse_bpf_in_arg) {
+			.size = sizeof(*fri),
+			.value = fri,
+		},
+		.in_args[1] = (struct fuse_bpf_in_arg) {
+			.size = oldent->d_name.len + 1,
+			.value = oldent->d_name.name,
+		},
+		.in_args[2] = (struct fuse_bpf_in_arg) {
+			.size = newent->d_name.len + 1,
+			.value = newent->d_name.name,
+		},
+	};
+
+	return 0;
+}
+
+int fuse_rename2_backing(struct fuse_bpf_args *fa,
+			 struct inode *olddir, struct dentry *oldent,
+			 struct inode *newdir, struct dentry *newent,
+			 unsigned int flags)
+{
+	const struct fuse_rename2_in *fri = fa->in_args[0].value;
+
+	/* TODO: deal with changing dirs/ents */
+	return fuse_rename_backing_common(olddir, oldent, newdir, newent, fri->flags);
+}
+
+void *fuse_rename2_finalize(struct fuse_bpf_args *fa,
+			    struct inode *olddir, struct dentry *oldent,
+			    struct inode *newdir, struct dentry *newent,
+			    unsigned int flags)
+{
+	return NULL;
+}
+
+int fuse_rename_initialize(struct fuse_bpf_args *fa, struct fuse_rename_in *fri,
+			   struct inode *olddir, struct dentry *oldent,
+			   struct inode *newdir, struct dentry *newent)
+{
+	*fri = (struct fuse_rename_in) {
+		.newdir = get_node_id(newdir),
+	};
+	*fa = (struct fuse_bpf_args) {
+		.nodeid = get_node_id(olddir),
+		.opcode = FUSE_RENAME,
+		.in_numargs = 3,
+		.in_args[0] = (struct fuse_bpf_in_arg) {
+			.size = sizeof(*fri),
+			.value = fri,
+		},
+		.in_args[1] = (struct fuse_bpf_in_arg) {
+			.size = oldent->d_name.len + 1,
+			.value = oldent->d_name.name,
+		},
+		.in_args[2] = (struct fuse_bpf_in_arg) {
+			.size = newent->d_name.len + 1,
+			.value = newent->d_name.name,
+		},
+	};
+
+	return 0;
+}
+
+int fuse_rename_backing(struct fuse_bpf_args *fa,
+			struct inode *olddir, struct dentry *oldent,
+			struct inode *newdir, struct dentry *newent)
+{
+	/* TODO: deal with changing dirs/ents */
+	return fuse_rename_backing_common(olddir, oldent, newdir, newent, 0);
+}
+
+void *fuse_rename_finalize(struct fuse_bpf_args *fa,
+			   struct inode *olddir, struct dentry *oldent,
+			   struct inode *newdir, struct dentry *newent)
+{
+	return NULL;
+}
+
+int fuse_unlink_initialize(
+		struct fuse_bpf_args *fa, struct fuse_dummy_io *dummy,
+		struct inode *dir, struct dentry *entry)
+{
+	*fa = (struct fuse_bpf_args) {
+		.nodeid = get_node_id(dir),
+		.opcode = FUSE_UNLINK,
+		.in_numargs = 1,
+		.in_args[0] = (struct fuse_bpf_in_arg) {
+			.size = entry->d_name.len + 1,
+			.value = entry->d_name.name,
+		},
+	};
+
+	return 0;
+}
+
+int fuse_unlink_backing(
+		struct fuse_bpf_args *fa,
+		struct inode *dir, struct dentry *entry)
+{
+	int err = 0;
+	struct path backing_path = {};
+	struct dentry *backing_parent_dentry;
+	struct inode *backing_inode;
+
+	/* TODO Actually deal with changing the backing entry in unlink */
+	get_fuse_backing_path(entry, &backing_path);
+	if (!backing_path.dentry)
+		return -EBADF;
+
+	/* TODO Not sure if we should reverify like overlayfs, or get inode from d_parent */
+	backing_parent_dentry = dget_parent(backing_path.dentry);
+	backing_inode = d_inode(backing_parent_dentry);
+
+	inode_lock_nested(backing_inode, I_MUTEX_PARENT);
+	err = vfs_unlink(&init_user_ns, backing_inode, backing_path.dentry, NULL);
+	inode_unlock(backing_inode);
+
+	dput(backing_parent_dentry);
+	if (!err)
+		d_drop(entry);
+	path_put(&backing_path);
+	return err;
+}
+
+void *fuse_unlink_finalize(
+		struct fuse_bpf_args *fa,
+		struct inode *dir, struct dentry *entry)
+{
+	return NULL;
+}
+
+int fuse_link_initialize(struct fuse_bpf_args *fa, struct fuse_link_in *fli,
+			 struct dentry *entry, struct inode *dir,
+			 struct dentry *newent)
+{
+	struct inode *src_inode = entry->d_inode;
+
+	*fli = (struct fuse_link_in){
+		.oldnodeid = get_node_id(src_inode),
+	};
+
+	fa->opcode = FUSE_LINK;
+	fa->in_numargs = 2;
+	fa->in_args[0].size = sizeof(*fli);
+	fa->in_args[0].value = fli;
+	fa->in_args[1].size = newent->d_name.len + 1;
+	fa->in_args[1].value = newent->d_name.name;
+
+	return 0;
+}
+
+int fuse_link_backing(struct fuse_bpf_args *fa, struct dentry *entry,
+		      struct inode *dir, struct dentry *newent)
+{
+	int err = 0;
+	struct path backing_old_path = {};
+	struct path backing_new_path = {};
+	struct dentry *backing_dir_dentry;
+	struct inode *fuse_new_inode = NULL;
+	struct fuse_inode *fuse_dir_inode = get_fuse_inode(dir);
+	struct inode *backing_dir_inode = fuse_dir_inode->backing_inode;
+
+	get_fuse_backing_path(entry, &backing_old_path);
+	if (!backing_old_path.dentry)
+		return -EBADF;
+
+	get_fuse_backing_path(newent, &backing_new_path);
+	if (!backing_new_path.dentry) {
+		err = -EBADF;
+		goto err_dst_path;
+	}
+
+	backing_dir_dentry = dget_parent(backing_new_path.dentry);
+	backing_dir_inode = d_inode(backing_dir_dentry);
+
+	inode_lock_nested(backing_dir_inode, I_MUTEX_PARENT);
+	err = vfs_link(backing_old_path.dentry,  &init_user_ns,
+		       backing_dir_inode, backing_new_path.dentry, NULL);
+	inode_unlock(backing_dir_inode);
+	if (err)
+		goto out;
+
+	if (d_really_is_negative(backing_new_path.dentry) ||
+	    unlikely(d_unhashed(backing_new_path.dentry))) {
+		err = -EINVAL;
+		/**
+		 * TODO: overlayfs responds to this situation with a
+		 * lookupOneLen. Should we do that too?
+		 */
+		goto out;
+	}
+
+	fuse_new_inode = fuse_iget_backing(dir->i_sb, fuse_dir_inode->nodeid, backing_dir_inode);
+	if (IS_ERR(fuse_new_inode)) {
+		err = PTR_ERR(fuse_new_inode);
+		goto out;
+	}
+	d_instantiate(newent, fuse_new_inode);
+
+out:
+	dput(backing_dir_dentry);
+	path_put(&backing_new_path);
+err_dst_path:
+	path_put(&backing_old_path);
+	return err;
+}
+
+void *fuse_link_finalize(struct fuse_bpf_args *fa, struct dentry *entry,
+			 struct inode *dir, struct dentry *newent)
+{
+	return NULL;
+}
+
+int fuse_getattr_initialize(struct fuse_bpf_args *fa, struct fuse_getattr_io *fgio,
+			const struct dentry *entry, struct kstat *stat,
+			u32 request_mask, unsigned int flags)
+{
+	fgio->fgi = (struct fuse_getattr_in) {
+		.getattr_flags = flags,
+		.fh = -1, /* TODO is this OK? */
+	};
+
+	fgio->fao = (struct fuse_attr_out) {0};
+
+	*fa = (struct fuse_bpf_args) {
+		.nodeid = get_node_id(entry->d_inode),
+		.opcode = FUSE_GETATTR,
+		.in_numargs = 1,
+		.out_numargs = 1,
+		.in_args[0] = (struct fuse_bpf_in_arg) {
+			.size = sizeof(fgio->fgi),
+			.value = &fgio->fgi,
+		},
+		.out_args[0] = (struct fuse_bpf_arg) {
+			.size = sizeof(fgio->fao),
+			.value = &fgio->fao,
+		},
+	};
+
+	return 0;
+}
+
+static void fuse_stat_to_attr(struct fuse_conn *fc, struct inode *inode,
+		struct kstat *stat, struct fuse_attr *attr)
+{
+	unsigned int blkbits;
+
+	/* see the comment in fuse_change_attributes() */
+	if (fc->writeback_cache && S_ISREG(inode->i_mode)) {
+		stat->size = i_size_read(inode);
+		stat->mtime.tv_sec = inode->i_mtime.tv_sec;
+		stat->mtime.tv_nsec = inode->i_mtime.tv_nsec;
+		stat->ctime.tv_sec = inode->i_ctime.tv_sec;
+		stat->ctime.tv_nsec = inode->i_ctime.tv_nsec;
+	}
+
+	attr->ino = stat->ino;
+	attr->mode = (inode->i_mode & S_IFMT) | (stat->mode & 07777);
+	attr->nlink = stat->nlink;
+	attr->uid = from_kuid(fc->user_ns, stat->uid);
+	attr->gid = from_kgid(fc->user_ns, stat->gid);
+	attr->atime = stat->atime.tv_sec;
+	attr->atimensec = stat->atime.tv_nsec;
+	attr->mtime = stat->mtime.tv_sec;
+	attr->mtimensec = stat->mtime.tv_nsec;
+	attr->ctime = stat->ctime.tv_sec;
+	attr->ctimensec = stat->ctime.tv_nsec;
+	attr->size = stat->size;
+	attr->blocks = stat->blocks;
+
+	if (stat->blksize != 0)
+		blkbits = ilog2(stat->blksize);
+	else
+		blkbits = inode->i_sb->s_blocksize_bits;
+
+	attr->blksize = 1 << blkbits;
+}
+
+int fuse_getattr_backing(struct fuse_bpf_args *fa,
+		const struct dentry *entry, struct kstat *stat,
+			u32 request_mask, unsigned int flags)
+{
+	struct path *backing_path =
+		&get_fuse_dentry(entry)->backing_path;
+	struct inode *backing_inode = backing_path->dentry->d_inode;
+	struct fuse_attr_out *fao = fa->out_args[0].value;
+	struct kstat tmp;
+	int err;
+
+	if (!stat)
+		stat = &tmp;
+
+	err = vfs_getattr(backing_path, stat, request_mask, flags);
+
+	if (!err)
+		fuse_stat_to_attr(get_fuse_conn(entry->d_inode),
+				  backing_inode, stat, &fao->attr);
+
+	return err;
+}
+
+void *fuse_getattr_finalize(struct fuse_bpf_args *fa,
+			const struct dentry *entry, struct kstat *stat,
+			u32 request_mask, unsigned int flags)
+{
+	struct fuse_attr_out *outarg = fa->out_args[0].value;
+	struct inode *inode = entry->d_inode;
+	u64 attr_version = fuse_get_attr_version(get_fuse_mount(inode)->fc);
+	int err = 0;
+
+	/* TODO: Ensure this doesn't happen if we had an error getting attrs in
+	 * backing.
+	 */
+	err = finalize_attr(inode, outarg, attr_version, stat);
+	return ERR_PTR(err);
+}
+
+static void fattr_to_iattr(struct fuse_conn *fc,
+			   const struct fuse_setattr_in *arg,
+			   struct iattr *iattr)
+{
+	unsigned int fvalid = arg->valid;
+
+	if (fvalid & FATTR_MODE)
+		iattr->ia_valid |= ATTR_MODE, iattr->ia_mode = arg->mode;
+	if (fvalid & FATTR_UID) {
+		iattr->ia_valid |= ATTR_UID;
+		iattr->ia_uid = make_kuid(fc->user_ns, arg->uid);
+	}
+	if (fvalid & FATTR_GID) {
+		iattr->ia_valid |= ATTR_GID;
+		iattr->ia_gid = make_kgid(fc->user_ns, arg->gid);
+	}
+	if (fvalid & FATTR_SIZE)
+		iattr->ia_valid |= ATTR_SIZE,  iattr->ia_size = arg->size;
+	if (fvalid & FATTR_ATIME) {
+		iattr->ia_valid |= ATTR_ATIME;
+		iattr->ia_atime.tv_sec = arg->atime;
+		iattr->ia_atime.tv_nsec = arg->atimensec;
+		if (!(fvalid & FATTR_ATIME_NOW))
+			iattr->ia_valid |= ATTR_ATIME_SET;
+	}
+	if (fvalid & FATTR_MTIME) {
+		iattr->ia_valid |= ATTR_MTIME;
+		iattr->ia_mtime.tv_sec = arg->mtime;
+		iattr->ia_mtime.tv_nsec = arg->mtimensec;
+		if (!(fvalid & FATTR_MTIME_NOW))
+			iattr->ia_valid |= ATTR_MTIME_SET;
+	}
+	if (fvalid & FATTR_CTIME) {
+		iattr->ia_valid |= ATTR_CTIME;
+		iattr->ia_ctime.tv_sec = arg->ctime;
+		iattr->ia_ctime.tv_nsec = arg->ctimensec;
+	}
+}
+
+int fuse_setattr_initialize(struct fuse_bpf_args *fa, struct fuse_setattr_io *fsio,
+		struct dentry *dentry, struct iattr *attr, struct file *file)
+{
+	struct fuse_conn *fc = get_fuse_conn(dentry->d_inode);
+
+	*fsio = (struct fuse_setattr_io) {0};
+	iattr_to_fattr(fc, attr, &fsio->fsi, true);
+
+	*fa = (struct fuse_bpf_args) {
+		.opcode = FUSE_SETATTR,
+		.nodeid = get_node_id(dentry->d_inode),
+		.in_numargs = 1,
+		.in_args[0].size = sizeof(fsio->fsi),
+		.in_args[0].value = &fsio->fsi,
+		.out_numargs = 1,
+		.out_args[0].size = sizeof(fsio->fao),
+		.out_args[0].value = &fsio->fao,
+	};
+
+	return 0;
+}
+
+int fuse_setattr_backing(struct fuse_bpf_args *fa,
+		struct dentry *dentry, struct iattr *attr, struct file *file)
+{
+	struct fuse_conn *fc = get_fuse_conn(dentry->d_inode);
+	const struct fuse_setattr_in *fsi = fa->in_args[0].value;
+	struct iattr new_attr = {0};
+	struct path *backing_path = &get_fuse_dentry(dentry)->backing_path;
+	int res;
+
+	fattr_to_iattr(fc, fsi, &new_attr);
+	/* TODO: Some info doesn't get saved by the attr->fattr->attr transition
+	 * When we actually allow the bpf to change these, we may have to consider
+	 * the extra flags more, or pass more info into the bpf. Until then we can
+	 * keep everything except for ATTR_FILE, since we'd need a file on the
+	 * lower fs. For what it's worth, neither f2fs nor ext4 make use of that
+	 * even if it is present.
+	 */
+	new_attr.ia_valid = attr->ia_valid & ~ATTR_FILE;
+	inode_lock(d_inode(backing_path->dentry));
+	res = notify_change(&init_user_ns, backing_path->dentry, &new_attr,
+			    NULL);
+	inode_unlock(d_inode(backing_path->dentry));
+
+	if (res == 0 && (new_attr.ia_valid & ATTR_SIZE))
+		i_size_write(dentry->d_inode, new_attr.ia_size);
+	return res;
+}
+
+void *fuse_setattr_finalize(struct fuse_bpf_args *fa,
+		struct dentry *dentry, struct iattr *attr, struct file *file)
+{
+	return NULL;
+}
+
+int fuse_statfs_initialize(
+		struct fuse_bpf_args *fa, struct fuse_statfs_out *fso,
+		struct dentry *dentry, struct kstatfs *buf)
+{
+	*fso = (struct fuse_statfs_out) {0};
+	*fa = (struct fuse_bpf_args) {
+		.nodeid = get_node_id(d_inode(dentry)),
+		.opcode = FUSE_STATFS,
+		.out_numargs = 1,
+		.out_numargs = 1,
+		.out_args[0].size = sizeof(fso),
+		.out_args[0].value = fso,
+	};
+
+	return 0;
+}
+
+int fuse_statfs_backing(
+		struct fuse_bpf_args *fa,
+		struct dentry *dentry, struct kstatfs *buf)
+{
+	int err = 0;
+	struct path backing_path;
+	struct fuse_statfs_out *fso = fa->out_args[0].value;
+
+	get_fuse_backing_path(dentry, &backing_path);
+	if (!backing_path.dentry)
+		return -EBADF;
+	err = vfs_statfs(&backing_path, buf);
+	path_put(&backing_path);
+	buf->f_type = FUSE_SUPER_MAGIC;
+
+	//TODO Provide postfilter opportunity to modify
+	if (!err)
+		convert_statfs_to_fuse(&fso->st, buf);
+
+	return err;
+}
+
+void *fuse_statfs_finalize(
+		struct fuse_bpf_args *fa,
+		struct dentry *dentry, struct kstatfs *buf)
+{
+	struct fuse_statfs_out *fso = fa->out_args[0].value;
+
+	if (!fa->error_in)
+		convert_fuse_statfs(buf, &fso->st);
+	return NULL;
+}
+
+int fuse_get_link_initialize(struct fuse_bpf_args *fa, struct fuse_dummy_io *unused,
+		struct inode *inode, struct dentry *dentry,
+		struct delayed_call *callback, const char **out)
+{
+	/*
+	 * TODO
+	 * If we want to handle changing these things, we'll need to copy
+	 * the lower fs's data into our own buffer, and provide our own callback
+	 * to free that buffer.
+	 *
+	 * Pre could change the name we're looking at
+	 * postfilter can change the name we return
+	 *
+	 * We ought to only make that buffer if it's been requested, so leaving
+	 * this unimplemented for the moment
+	 */
+	*fa = (struct fuse_bpf_args) {
+		.opcode = FUSE_READLINK,
+		.nodeid = get_node_id(inode),
+		.in_numargs = 1,
+		.in_args[0] = (struct fuse_bpf_in_arg) {
+			.size = dentry->d_name.len + 1,
+			.value = dentry->d_name.name,
+		},
+		/*
+		 * .out_argvar = 1,
+		 * .out_numargs = 1,
+		 * .out_args[0].size = ,
+		 * .out_args[0].value = ,
+		 */
+	};
+
+	return 0;
+}
+
+int fuse_get_link_backing(struct fuse_bpf_args *fa,
+		struct inode *inode, struct dentry *dentry,
+		struct delayed_call *callback, const char **out)
+{
+	struct path backing_path;
+
+	if (!dentry) {
+		*out = ERR_PTR(-ECHILD);
+		return PTR_ERR(*out);
+	}
+
+	get_fuse_backing_path(dentry, &backing_path);
+	if (!backing_path.dentry) {
+		*out = ERR_PTR(-ECHILD);
+		return PTR_ERR(*out);
+	}
+
+	/*
+	 * TODO: If we want to do our own thing, copy the data and then call the
+	 * callback
+	 */
+	*out = vfs_get_link(backing_path.dentry, callback);
+
+	path_put(&backing_path);
+	return 0;
+}
+
+void *fuse_get_link_finalize(struct fuse_bpf_args *fa,
+		struct inode *inode, struct dentry *dentry,
+		struct delayed_call *callback,  const char **out)
+{
+	return NULL;
+}
+
+int fuse_symlink_initialize(
+		struct fuse_bpf_args *fa, struct fuse_dummy_io *unused,
+		struct inode *dir, struct dentry *entry, const char *link, int len)
+{
+	*fa = (struct fuse_bpf_args) {
+		.nodeid = get_node_id(dir),
+		.opcode = FUSE_SYMLINK,
+		.in_numargs = 2,
+		.in_args[0] = (struct fuse_bpf_in_arg) {
+			.size = entry->d_name.len + 1,
+			.value = entry->d_name.name,
+		},
+		.in_args[1] = (struct fuse_bpf_in_arg) {
+			.size = len,
+			.value = link,
+		},
+	};
+
+	return 0;
+}
+
+int fuse_symlink_backing(
+		struct fuse_bpf_args *fa,
+		struct inode *dir, struct dentry *entry, const char *link, int len)
+{
+	int err = 0;
+	struct fuse_inode *fuse_inode = get_fuse_inode(dir);
+	struct inode *backing_inode = fuse_inode->backing_inode;
+	struct path backing_path = {};
+	struct inode *inode = NULL;
+
+	//TODO Actually deal with changing the backing entry in symlink
+	get_fuse_backing_path(entry, &backing_path);
+	if (!backing_path.dentry)
+		return -EBADF;
+
+	inode_lock_nested(backing_inode, I_MUTEX_PARENT);
+	err = vfs_symlink(&init_user_ns, backing_inode, backing_path.dentry,
+			  link);
+	inode_unlock(backing_inode);
+	if (err)
+		goto out;
+	if (d_really_is_negative(backing_path.dentry) ||
+		unlikely(d_unhashed(backing_path.dentry))) {
+		err = -EINVAL;
+		/**
+		 * TODO: overlayfs responds to this situation with a
+		 * lookupOneLen. Should we do that too?
+		 */
+		goto out;
+	}
+	inode = fuse_iget_backing(dir->i_sb, fuse_inode->nodeid, backing_inode);
+	if (IS_ERR(inode)) {
+		err = PTR_ERR(inode);
+		goto out;
+	}
+	d_instantiate(entry, inode);
+out:
+	path_put(&backing_path);
+	return err;
+}
+
+void *fuse_symlink_finalize(
+		struct fuse_bpf_args *fa,
+		struct inode *dir, struct dentry *entry, const char *link, int len)
+{
+	return NULL;
+}
+
+int fuse_readdir_initialize(struct fuse_bpf_args *fa, struct fuse_read_io *frio,
+			    struct file *file, struct dir_context *ctx,
+			    bool *force_again, bool *allow_force, bool is_continued)
+{
+	struct fuse_file *ff = file->private_data;
+	u8 *page = (u8 *)__get_free_page(GFP_KERNEL);
+
+	if (!page)
+		return -ENOMEM;
+
+	*fa = (struct fuse_bpf_args) {
+		.nodeid = ff->nodeid,
+		.opcode = FUSE_READDIR,
+		.in_numargs = 1,
+		.flags = FUSE_BPF_OUT_ARGVAR,
+		.out_numargs = 2,
+		.in_args[0] = (struct fuse_bpf_in_arg) {
+			.size = sizeof(frio->fri),
+			.value = &frio->fri,
+		},
+		.out_args[0] = (struct fuse_bpf_arg) {
+			.size = sizeof(frio->fro),
+			.value = &frio->fro,
+		},
+		.out_args[1] = (struct fuse_bpf_arg) {
+			.size = PAGE_SIZE,
+			.value = page,
+		},
+	};
+
+	frio->fri = (struct fuse_read_in) {
+		.fh = ff->fh,
+		.offset = ctx->pos,
+		.size = PAGE_SIZE,
+	};
+	frio->fro = (struct fuse_read_out) {
+		.again = 0,
+		.offset = 0,
+	};
+	*force_again = false;
+	*allow_force = true;
+	return 0;
+}
+
+struct extfuse_ctx {
+	struct dir_context ctx;
+	u8 *addr;
+	size_t offset;
+};
+
+static bool filldir(struct dir_context *ctx, const char *name, int namelen,
+				   loff_t offset, u64 ino, unsigned int d_type)
+{
+	struct extfuse_ctx *ec = container_of(ctx, struct extfuse_ctx, ctx);
+	struct fuse_dirent *fd = (struct fuse_dirent *) (ec->addr + ec->offset);
+
+	if (ec->offset + sizeof(struct fuse_dirent) + namelen > PAGE_SIZE)
+		return false;
+
+	*fd = (struct fuse_dirent) {
+		.ino = ino,
+		.off = offset,
+		.namelen = namelen,
+		.type = d_type,
+	};
+
+	memcpy(fd->name, name, namelen);
+	ec->offset += FUSE_DIRENT_SIZE(fd);
+
+	return true;
+}
+
+static int parse_dirfile(char *buf, size_t nbytes, struct dir_context *ctx)
+{
+	while (nbytes >= FUSE_NAME_OFFSET) {
+		struct fuse_dirent *dirent = (struct fuse_dirent *) buf;
+		size_t reclen = FUSE_DIRENT_SIZE(dirent);
+
+		if (!dirent->namelen || dirent->namelen > FUSE_NAME_MAX)
+			return -EIO;
+		if (reclen > nbytes)
+			break;
+		if (memchr(dirent->name, '/', dirent->namelen) != NULL)
+			return -EIO;
+
+		ctx->pos = dirent->off;
+		if (!dir_emit(ctx, dirent->name, dirent->namelen, dirent->ino,
+				dirent->type))
+			break;
+
+		buf += reclen;
+		nbytes -= reclen;
+	}
+
+	return 0;
+}
+
+
+int fuse_readdir_backing(struct fuse_bpf_args *fa,
+			 struct file *file, struct dir_context *ctx,
+			 bool *force_again, bool *allow_force, bool is_continued)
+{
+	struct fuse_file *ff = file->private_data;
+	struct file *backing_dir = ff->backing_file;
+	struct fuse_read_out *fro = fa->out_args[0].value;
+	struct extfuse_ctx ec;
+	int err;
+
+	ec = (struct extfuse_ctx) {
+		.ctx.actor = filldir,
+		.ctx.pos = ctx->pos,
+		.addr = fa->out_args[1].value,
+	};
+
+	if (!ec.addr)
+		return -ENOMEM;
+
+	if (!is_continued)
+		backing_dir->f_pos = file->f_pos;
+
+	err = iterate_dir(backing_dir, &ec.ctx);
+	if (ec.offset == 0)
+		*allow_force = false;
+	fa->out_args[1].size = ec.offset;
+
+	fro->offset = ec.ctx.pos;
+	fro->again = false;
+	return err;
+}
+
+void *fuse_readdir_finalize(struct fuse_bpf_args *fa,
+			    struct file *file, struct dir_context *ctx,
+			    bool *force_again, bool *allow_force, bool is_continued)
+{
+	struct fuse_read_out *fro = fa->out_args[0].value;
+	struct fuse_file *ff = file->private_data;
+	struct file *backing_dir = ff->backing_file;
+	int err = 0;
+
+	err = parse_dirfile(fa->out_args[1].value, fa->out_args[1].size, ctx);
+	*force_again = !!fro->again;
+	if (*force_again && !*allow_force)
+		err = -EINVAL;
+
+	ctx->pos = fro->offset;
+	backing_dir->f_pos = fro->offset;
+
+	free_page((unsigned long) fa->out_args[1].value);
+	return ERR_PTR(err);
+}
+
+int fuse_access_initialize(struct fuse_bpf_args *fa, struct fuse_access_in *fai,
+			    struct inode *inode, int mask)
+{
+	*fai = (struct fuse_access_in) {
+		.mask = mask,
+	};
+
+	*fa = (struct fuse_bpf_args) {
+		.opcode = FUSE_ACCESS,
+		.nodeid = get_node_id(inode),
+		.in_numargs = 1,
+		.in_args[0].size = sizeof(*fai),
+		.in_args[0].value = fai,
+	};
+
+	return 0;
+}
+
+int fuse_access_backing(struct fuse_bpf_args *fa, struct inode *inode, int mask)
+{
+	struct fuse_inode *fi = get_fuse_inode(inode);
+	const struct fuse_access_in *fai = fa->in_args[0].value;
+
+	return inode_permission(&init_user_ns, fi->backing_inode, fai->mask);
+}
+
+void *fuse_access_finalize(struct fuse_bpf_args *fa, struct inode *inode, int mask)
+{
+	return NULL;
+}
+
+int __init fuse_bpf_init(void)
+{
+	fuse_bpf_aio_request_cachep = kmem_cache_create("fuse_bpf_aio_req",
+						   sizeof(struct fuse_bpf_aio_req),
+						   0, SLAB_HWCACHE_ALIGN, NULL);
+	if (!fuse_bpf_aio_request_cachep)
+		return -ENOMEM;
+
+	return 0;
+}
+
+void __exit fuse_bpf_cleanup(void)
+{
+	kmem_cache_destroy(fuse_bpf_aio_request_cachep);
+}
+
+ssize_t fuse_bpf_simple_request(struct fuse_mount *fm, struct fuse_bpf_args *bpf_args)
+{
+	int i;
+	ssize_t res;
+	struct fuse_args args = {
+		.nodeid = bpf_args->nodeid,
+		.opcode = bpf_args->opcode,
+		.error_in = bpf_args->error_in,
+		.in_numargs = bpf_args->in_numargs,
+		.out_numargs = bpf_args->out_numargs,
+		.force = !!(bpf_args->flags & FUSE_BPF_FORCE),
+		.out_argvar = !!(bpf_args->flags & FUSE_BPF_OUT_ARGVAR),
+	};
+
+	for (i = 0; i < args.in_numargs; ++i)
+		args.in_args[i] = (struct fuse_in_arg) {
+			.size = bpf_args->in_args[i].size,
+			.value = bpf_args->in_args[i].value,
+		};
+	for (i = 0; i < args.out_numargs; ++i)
+		args.out_args[i] = (struct fuse_arg) {
+			.size = bpf_args->out_args[i].size,
+			.value = bpf_args->out_args[i].value,
+		};
+
+	res = fuse_simple_request(fm, &args);
+
+	*bpf_args = (struct fuse_bpf_args) {
+		.nodeid = args.nodeid,
+		.opcode = args.opcode,
+		.error_in = args.error_in,
+		.in_numargs = args.in_numargs,
+		.out_numargs = args.out_numargs,
+	};
+	if (args.force)
+		bpf_args->flags |= FUSE_BPF_FORCE;
+	if (args.out_argvar)
+		bpf_args->flags |= FUSE_BPF_OUT_ARGVAR;
+	for (i = 0; i < args.in_numargs; ++i)
+		bpf_args->in_args[i] = (struct fuse_bpf_in_arg) {
+			.size = args.in_args[i].size,
+			.value = args.in_args[i].value,
+		};
+	for (i = 0; i < args.out_numargs; ++i)
+		bpf_args->out_args[i] = (struct fuse_bpf_arg) {
+			.size = args.out_args[i].size,
+			.value = args.out_args[i].value,
+		};
+	return res;
+}
diff --git a/fs/fuse/control.c b/fs/fuse/control.c
index 247ef4f..6855524 100644
--- a/fs/fuse/control.c
+++ b/fs/fuse/control.c
@@ -378,7 +378,7 @@ int __init fuse_ctl_init(void)
 	return register_filesystem(&fuse_ctl_fs_type);
 }
 
-void __exit fuse_ctl_cleanup(void)
+void fuse_ctl_cleanup(void)
 {
 	unregister_filesystem(&fuse_ctl_fs_type);
 }
diff --git a/fs/fuse/dax.c b/fs/fuse/dax.c
index e23e802..8e74f27 100644
--- a/fs/fuse/dax.c
+++ b/fs/fuse/dax.c
@@ -860,7 +860,7 @@ int fuse_dax_mmap(struct file *file, struct vm_area_struct *vma)
 {
 	file_accessed(file);
 	vma->vm_ops = &fuse_dax_vm_ops;
-	vma->vm_flags |= VM_MIXEDMAP | VM_HUGEPAGE;
+	vm_flags_set(vma, VM_MIXEDMAP | VM_HUGEPAGE);
 	return 0;
 }
 
diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c
index b4a6e0a..90c8fd9 100644
--- a/fs/fuse/dev.c
+++ b/fs/fuse/dev.c
@@ -14,6 +14,7 @@
 #include <linux/sched/signal.h>
 #include <linux/uio.h>
 #include <linux/miscdevice.h>
+#include <linux/namei.h>
 #include <linux/pagemap.h>
 #include <linux/file.h>
 #include <linux/slab.h>
@@ -207,10 +208,13 @@ static unsigned int fuse_req_hash(u64 unique)
 /**
  * A new request is available, wake fiq->waitq
  */
-static void fuse_dev_wake_and_unlock(struct fuse_iqueue *fiq)
+static void fuse_dev_wake_and_unlock(struct fuse_iqueue *fiq, bool sync)
 __releases(fiq->lock)
 {
-	wake_up(&fiq->waitq);
+	if (sync)
+		wake_up_sync(&fiq->waitq);
+	else
+		wake_up(&fiq->waitq);
 	kill_fasync(&fiq->fasync, SIGIO, POLL_IN);
 	spin_unlock(&fiq->lock);
 }
@@ -223,14 +227,14 @@ const struct fuse_iqueue_ops fuse_dev_fiq_ops = {
 EXPORT_SYMBOL_GPL(fuse_dev_fiq_ops);
 
 static void queue_request_and_unlock(struct fuse_iqueue *fiq,
-				     struct fuse_req *req)
+				     struct fuse_req *req, bool sync)
 __releases(fiq->lock)
 {
 	req->in.h.len = sizeof(struct fuse_in_header) +
 		fuse_len_args(req->args->in_numargs,
 			      (struct fuse_arg *) req->args->in_args);
 	list_add_tail(&req->list, &fiq->pending);
-	fiq->ops->wake_pending_and_unlock(fiq);
+	fiq->ops->wake_pending_and_unlock(fiq, sync);
 }
 
 void fuse_queue_forget(struct fuse_conn *fc, struct fuse_forget_link *forget,
@@ -238,6 +242,11 @@ void fuse_queue_forget(struct fuse_conn *fc, struct fuse_forget_link *forget,
 {
 	struct fuse_iqueue *fiq = &fc->iq;
 
+	if (nodeid == 0) {
+		kfree(forget);
+		return;
+	}
+
 	forget->forget_one.nodeid = nodeid;
 	forget->forget_one.nlookup = nlookup;
 
@@ -245,7 +254,7 @@ void fuse_queue_forget(struct fuse_conn *fc, struct fuse_forget_link *forget,
 	if (fiq->connected) {
 		fiq->forget_list_tail->next = forget;
 		fiq->forget_list_tail = forget;
-		fiq->ops->wake_forget_and_unlock(fiq);
+		fiq->ops->wake_forget_and_unlock(fiq, false);
 	} else {
 		kfree(forget);
 		spin_unlock(&fiq->lock);
@@ -265,7 +274,7 @@ static void flush_bg_queue(struct fuse_conn *fc)
 		fc->active_background++;
 		spin_lock(&fiq->lock);
 		req->in.h.unique = fuse_get_unique(fiq);
-		queue_request_and_unlock(fiq, req);
+		queue_request_and_unlock(fiq, req, false);
 	}
 }
 
@@ -354,7 +363,7 @@ static int queue_interrupt(struct fuse_req *req)
 			spin_unlock(&fiq->lock);
 			return 0;
 		}
-		fiq->ops->wake_interrupt_and_unlock(fiq);
+		fiq->ops->wake_interrupt_and_unlock(fiq, false);
 	} else {
 		spin_unlock(&fiq->lock);
 	}
@@ -421,7 +430,7 @@ static void __fuse_request_send(struct fuse_req *req)
 		/* acquire extra reference, since request is still needed
 		   after fuse_request_end() */
 		__fuse_get_request(req);
-		queue_request_and_unlock(fiq, req);
+		queue_request_and_unlock(fiq, req, true);
 
 		request_wait_answer(req);
 		/* Pairs with smp_wmb() in fuse_request_end() */
@@ -475,6 +484,7 @@ static void fuse_args_to_req(struct fuse_req *req, struct fuse_args *args)
 {
 	req->in.h.opcode = args->opcode;
 	req->in.h.nodeid = args->nodeid;
+	req->in.h.padding = args->error_in;
 	req->args = args;
 	if (args->end)
 		__set_bit(FR_ASYNC, &req->flags);
@@ -592,7 +602,7 @@ static int fuse_simple_notify_reply(struct fuse_mount *fm,
 
 	spin_lock(&fiq->lock);
 	if (fiq->connected) {
-		queue_request_and_unlock(fiq, req);
+		queue_request_and_unlock(fiq, req, false);
 	} else {
 		err = -ENODEV;
 		spin_unlock(&fiq->lock);
@@ -1922,6 +1932,27 @@ static ssize_t fuse_dev_do_write(struct fuse_dev *fud,
 		err = copy_out_args(cs, req->args, nbytes);
 	fuse_copy_finish(cs);
 
+	if (!err && req->in.h.opcode == FUSE_CANONICAL_PATH && !oh.error) {
+		char *path = (char *)req->args->out_args[0].value;
+
+		path[req->args->out_args[0].size - 1] = 0;
+		req->out.h.error =
+			kern_path(path, 0, req->args->canonical_path);
+	}
+
+	if (!err && (req->in.h.opcode == FUSE_LOOKUP ||
+		     req->in.h.opcode == (FUSE_LOOKUP | FUSE_POSTFILTER)) &&
+		req->args->out_args[1].size == sizeof(struct fuse_entry_bpf_out)) {
+		struct fuse_entry_bpf_out *febo = (struct fuse_entry_bpf_out *)
+				req->args->out_args[1].value;
+		struct fuse_entry_bpf *feb = container_of(febo, struct fuse_entry_bpf, out);
+
+		if (febo->backing_action == FUSE_ACTION_REPLACE)
+			feb->backing_file = fget(febo->backing_fd);
+		if (febo->bpf_action == FUSE_ACTION_REPLACE)
+			feb->bpf_file = fget(febo->bpf_fd);
+	}
+
 	spin_lock(&fpq->lock);
 	clear_bit(FR_LOCKED, &req->flags);
 	if (!fpq->connected)
@@ -2268,7 +2299,8 @@ static long fuse_dev_ioctl(struct file *file, unsigned int cmd,
 				 * uses the same ioctl handler.
 				 */
 				if (old->f_op == file->f_op &&
-				    old->f_cred->user_ns == file->f_cred->user_ns)
+				    old->f_cred->user_ns ==
+					    file->f_cred->user_ns)
 					fud = fuse_get_dev(old);
 
 				if (fud) {
@@ -2280,6 +2312,15 @@ static long fuse_dev_ioctl(struct file *file, unsigned int cmd,
 			}
 		}
 		break;
+	case FUSE_DEV_IOC_PASSTHROUGH_OPEN:
+		res = -EFAULT;
+		if (!get_user(oldfd, (__u32 __user *)arg)) {
+			res = -EINVAL;
+			fud = fuse_get_dev(file);
+			if (fud)
+				res = fuse_passthrough_open(fud, oldfd);
+		}
+		break;
 	default:
 		res = -ENOTTY;
 		break;
diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c
index 904673a4..dd184a3 100644
--- a/fs/fuse/dir.c
+++ b/fs/fuse/dir.c
@@ -8,8 +8,10 @@
 
 #include "fuse_i.h"
 
+#include <linux/fdtable.h>
 #include <linux/pagemap.h>
 #include <linux/file.h>
+#include <linux/filter.h>
 #include <linux/fs_context.h>
 #include <linux/moduleparam.h>
 #include <linux/sched.h>
@@ -27,6 +29,8 @@ module_param(allow_sys_admin_access, bool, 0644);
 MODULE_PARM_DESC(allow_sys_admin_access,
 		 "Allow users with CAP_SYS_ADMIN in initial userns to bypass allow_other access check");
 
+#include "../internal.h"
+
 static void fuse_advise_use_readdirplus(struct inode *dir)
 {
 	struct fuse_inode *fi = get_fuse_inode(dir);
@@ -34,7 +38,7 @@ static void fuse_advise_use_readdirplus(struct inode *dir)
 	set_bit(FUSE_I_ADVISE_RDPLUS, &fi->state);
 }
 
-#if BITS_PER_LONG >= 64
+#if BITS_PER_LONG >= 64 && !defined(CONFIG_FUSE_BPF)
 static inline void __fuse_dentry_settime(struct dentry *entry, u64 time)
 {
 	entry->d_fsdata = (void *) time;
@@ -46,19 +50,15 @@ static inline u64 fuse_dentry_time(const struct dentry *entry)
 }
 
 #else
-union fuse_dentry {
-	u64 time;
-	struct rcu_head rcu;
-};
 
 static inline void __fuse_dentry_settime(struct dentry *dentry, u64 time)
 {
-	((union fuse_dentry *) dentry->d_fsdata)->time = time;
+	((struct fuse_dentry *) dentry->d_fsdata)->time = time;
 }
 
 static inline u64 fuse_dentry_time(const struct dentry *entry)
 {
-	return ((union fuse_dentry *) entry->d_fsdata)->time;
+	return ((struct fuse_dentry *) entry->d_fsdata)->time;
 }
 #endif
 
@@ -83,26 +83,16 @@ static void fuse_dentry_settime(struct dentry *dentry, u64 time)
 	__fuse_dentry_settime(dentry, time);
 }
 
-/*
- * FUSE caches dentries and attributes with separate timeout.  The
- * time in jiffies until the dentry/attributes are valid is stored in
- * dentry->d_fsdata and fuse_inode->i_time respectively.
- */
-
-/*
- * Calculate the time in jiffies until a dentry/attributes are valid
- */
-static u64 time_to_jiffies(u64 sec, u32 nsec)
+void fuse_init_dentry_root(struct dentry *root, struct file *backing_dir)
 {
-	if (sec || nsec) {
-		struct timespec64 ts = {
-			sec,
-			min_t(u32, nsec, NSEC_PER_SEC - 1)
-		};
+#ifdef CONFIG_FUSE_BPF
+	struct fuse_dentry *fuse_dentry = root->d_fsdata;
 
-		return get_jiffies_64() + timespec64_to_jiffies(&ts);
-	} else
-		return 0;
+	if (backing_dir) {
+		fuse_dentry->backing_path = backing_dir->f_path;
+		path_get(&fuse_dentry->backing_path);
+	}
+#endif
 }
 
 /*
@@ -115,11 +105,6 @@ void fuse_change_entry_timeout(struct dentry *entry, struct fuse_entry_out *o)
 		time_to_jiffies(o->entry_valid, o->entry_valid_nsec));
 }
 
-static u64 attr_timeout(struct fuse_attr_out *o)
-{
-	return time_to_jiffies(o->attr_valid, o->attr_valid_nsec);
-}
-
 u64 entry_attr_timeout(struct fuse_entry_out *o)
 {
 	return time_to_jiffies(o->attr_valid, o->attr_valid_nsec);
@@ -180,7 +165,8 @@ static void fuse_invalidate_entry(struct dentry *entry)
 
 static void fuse_lookup_init(struct fuse_conn *fc, struct fuse_args *args,
 			     u64 nodeid, const struct qstr *name,
-			     struct fuse_entry_out *outarg)
+			     struct fuse_entry_out *outarg,
+			     struct fuse_entry_bpf_out *bpf_outarg)
 {
 	memset(outarg, 0, sizeof(struct fuse_entry_out));
 	args->opcode = FUSE_LOOKUP;
@@ -188,11 +174,57 @@ static void fuse_lookup_init(struct fuse_conn *fc, struct fuse_args *args,
 	args->in_numargs = 1;
 	args->in_args[0].size = name->len + 1;
 	args->in_args[0].value = name->name;
-	args->out_numargs = 1;
+	args->out_argvar = true;
+	args->out_numargs = 2;
 	args->out_args[0].size = sizeof(struct fuse_entry_out);
 	args->out_args[0].value = outarg;
+	args->out_args[1].size = sizeof(struct fuse_entry_bpf_out);
+	args->out_args[1].value = bpf_outarg;
 }
 
+#ifdef CONFIG_FUSE_BPF
+static bool backing_data_changed(struct fuse_inode *fi, struct dentry *entry,
+				 struct fuse_entry_bpf *bpf_arg)
+{
+	struct path new_backing_path;
+	struct inode *new_backing_inode;
+	struct bpf_prog *bpf = NULL;
+	int err;
+	bool ret = true;
+
+	if (!entry) {
+		ret = false;
+		goto put_backing_file;
+	}
+
+	get_fuse_backing_path(entry, &new_backing_path);
+	new_backing_inode = fi->backing_inode;
+	ihold(new_backing_inode);
+
+	err = fuse_handle_backing(bpf_arg, &new_backing_inode, &new_backing_path);
+
+	if (err)
+		goto put_inode;
+
+	err = fuse_handle_bpf_prog(bpf_arg, entry->d_parent->d_inode, &bpf);
+	if (err)
+		goto put_bpf;
+
+	ret = (bpf != fi->bpf || fi->backing_inode != new_backing_inode ||
+			!path_equal(&get_fuse_dentry(entry)->backing_path, &new_backing_path));
+put_bpf:
+	if (bpf)
+		bpf_prog_put(bpf);
+put_inode:
+	iput(new_backing_inode);
+	path_put(&new_backing_path);
+put_backing_file:
+	if (bpf_arg->backing_file)
+		fput(bpf_arg->backing_file);
+	return ret;
+}
+#endif
+
 /*
  * Check whether the dentry is still valid
  *
@@ -213,9 +245,23 @@ static int fuse_dentry_revalidate(struct dentry *entry, unsigned int flags)
 	inode = d_inode_rcu(entry);
 	if (inode && fuse_is_bad(inode))
 		goto invalid;
-	else if (time_before64(fuse_dentry_time(entry), get_jiffies_64()) ||
+
+#ifdef CONFIG_FUSE_BPF
+	/* TODO: Do we need bpf support for revalidate?
+	 * If the lower filesystem says the entry is invalid, FUSE probably shouldn't
+	 * try to fix that without going through the normal lookup path...
+	 */
+	if (get_fuse_dentry(entry)->backing_path.dentry) {
+		ret = fuse_revalidate_backing(entry, flags);
+		if (ret <= 0) {
+			goto out;
+		}
+	}
+#endif
+	if (time_before64(fuse_dentry_time(entry), get_jiffies_64()) ||
 		 (flags & (LOOKUP_EXCL | LOOKUP_REVAL | LOOKUP_RENAME_TARGET))) {
 		struct fuse_entry_out outarg;
+		struct fuse_entry_bpf bpf_arg;
 		FUSE_ARGS(args);
 		struct fuse_forget_link *forget;
 		u64 attr_version;
@@ -227,27 +273,44 @@ static int fuse_dentry_revalidate(struct dentry *entry, unsigned int flags)
 		ret = -ECHILD;
 		if (flags & LOOKUP_RCU)
 			goto out;
-
 		fm = get_fuse_mount(inode);
 
+		parent = dget_parent(entry);
+
+#ifdef CONFIG_FUSE_BPF
+		/* TODO: Once we're handling timeouts for backing inodes, do a
+		 * bpf based lookup_revalidate here.
+		 */
+		if (get_fuse_inode(parent->d_inode)->backing_inode) {
+			dput(parent);
+			ret = 1;
+			goto out;
+		}
+#endif
 		forget = fuse_alloc_forget();
 		ret = -ENOMEM;
-		if (!forget)
+		if (!forget) {
+			dput(parent);
 			goto out;
+		}
 
 		attr_version = fuse_get_attr_version(fm->fc);
 
-		parent = dget_parent(entry);
 		fuse_lookup_init(fm->fc, &args, get_node_id(d_inode(parent)),
-				 &entry->d_name, &outarg);
+				 &entry->d_name, &outarg, &bpf_arg.out);
 		ret = fuse_simple_request(fm, &args);
 		dput(parent);
+
 		/* Zero nodeid is same as -ENOENT */
 		if (!ret && !outarg.nodeid)
 			ret = -ENOENT;
-		if (!ret) {
+		if (!ret || ret == sizeof(bpf_arg.out)) {
 			fi = get_fuse_inode(inode);
 			if (outarg.nodeid != get_node_id(inode) ||
+#ifdef CONFIG_FUSE_BPF
+			    (ret == sizeof(bpf_arg.out) &&
+					    backing_data_changed(fi, entry, &bpf_arg)) ||
+#endif
 			    (bool) IS_AUTOMOUNT(inode) != (bool) (outarg.attr.flags & FUSE_ATTR_SUBMOUNT)) {
 				fuse_queue_forget(fm->fc, forget,
 						  outarg.nodeid, 1);
@@ -289,17 +352,20 @@ static int fuse_dentry_revalidate(struct dentry *entry, unsigned int flags)
 	goto out;
 }
 
-#if BITS_PER_LONG < 64
+#if BITS_PER_LONG < 64 || defined(CONFIG_FUSE_BPF)
 static int fuse_dentry_init(struct dentry *dentry)
 {
-	dentry->d_fsdata = kzalloc(sizeof(union fuse_dentry),
+	dentry->d_fsdata = kzalloc(sizeof(struct fuse_dentry),
 				   GFP_KERNEL_ACCOUNT | __GFP_RECLAIMABLE);
 
 	return dentry->d_fsdata ? 0 : -ENOMEM;
 }
 static void fuse_dentry_release(struct dentry *dentry)
 {
-	union fuse_dentry *fd = dentry->d_fsdata;
+	struct fuse_dentry *fd = dentry->d_fsdata;
+
+	if (fd && fd->backing_path.dentry)
+		path_put(&fd->backing_path);
 
 	kfree_rcu(fd, rcu);
 }
@@ -337,18 +403,73 @@ static struct vfsmount *fuse_dentry_automount(struct path *path)
 	return mnt;
 }
 
+/*
+ * Get the canonical path. Since we must translate to a path, this must be done
+ * in the context of the userspace daemon, however, the userspace daemon cannot
+ * look up paths on its own. Instead, we handle the lookup as a special case
+ * inside of the write request.
+ */
+static int fuse_dentry_canonical_path(const struct path *path,
+				       struct path *canonical_path)
+{
+	struct inode *inode = d_inode(path->dentry);
+	//struct fuse_conn *fc = get_fuse_conn(inode);
+	struct fuse_mount *fm = get_fuse_mount_super(path->mnt->mnt_sb);
+	FUSE_ARGS(args);
+	char *path_name;
+	int err;
+
+#ifdef CONFIG_FUSE_BPF
+	struct fuse_err_ret fer;
+
+	fer = fuse_bpf_backing(inode, struct fuse_dummy_io,
+			       fuse_canonical_path_initialize,
+			       fuse_canonical_path_backing,
+			       fuse_canonical_path_finalize, path,
+			       canonical_path);
+	if (fer.ret)
+		return PTR_ERR(fer.result);
+#endif
+
+	path_name = (char *)get_zeroed_page(GFP_KERNEL);
+	if (!path_name)
+		return -ENOMEM;
+
+	args.opcode = FUSE_CANONICAL_PATH;
+	args.nodeid = get_node_id(inode);
+	args.in_numargs = 0;
+	args.out_numargs = 1;
+	args.out_args[0].size = PATH_MAX;
+	args.out_args[0].value = path_name;
+	args.canonical_path = canonical_path;
+	args.out_argvar = 1;
+
+	err = fuse_simple_request(fm, &args);
+	free_page((unsigned long)path_name);
+	if (err > 0)
+		return 0;
+	if (err < 0)
+		return err;
+
+	canonical_path->dentry = path->dentry;
+	canonical_path->mnt = path->mnt;
+	path_get(canonical_path);
+	return 0;
+}
+
 const struct dentry_operations fuse_dentry_operations = {
 	.d_revalidate	= fuse_dentry_revalidate,
 	.d_delete	= fuse_dentry_delete,
-#if BITS_PER_LONG < 64
+#if BITS_PER_LONG < 64 || defined(CONFIG_FUSE_BPF)
 	.d_init		= fuse_dentry_init,
 	.d_release	= fuse_dentry_release,
 #endif
 	.d_automount	= fuse_dentry_automount,
+	.d_canonical_path = fuse_dentry_canonical_path,
 };
 
 const struct dentry_operations fuse_root_dentry_operations = {
-#if BITS_PER_LONG < 64
+#if BITS_PER_LONG < 64 || defined(CONFIG_FUSE_BPF)
 	.d_init		= fuse_dentry_init,
 	.d_release	= fuse_dentry_release,
 #endif
@@ -367,10 +488,13 @@ bool fuse_invalid_attr(struct fuse_attr *attr)
 }
 
 int fuse_lookup_name(struct super_block *sb, u64 nodeid, const struct qstr *name,
-		     struct fuse_entry_out *outarg, struct inode **inode)
+		     struct fuse_entry_out *outarg,
+		     struct dentry *entry,
+		     struct inode **inode)
 {
 	struct fuse_mount *fm = get_fuse_mount_super(sb);
 	FUSE_ARGS(args);
+	struct fuse_entry_bpf bpf_arg = {0};
 	struct fuse_forget_link *forget;
 	u64 attr_version;
 	int err;
@@ -388,23 +512,66 @@ int fuse_lookup_name(struct super_block *sb, u64 nodeid, const struct qstr *name
 
 	attr_version = fuse_get_attr_version(fm->fc);
 
-	fuse_lookup_init(fm->fc, &args, nodeid, name, outarg);
+	fuse_lookup_init(fm->fc, &args, nodeid, name, outarg, &bpf_arg.out);
 	err = fuse_simple_request(fm, &args);
-	/* Zero nodeid is same as -ENOENT, but with valid timeout */
-	if (err || !outarg->nodeid)
-		goto out_put_forget;
 
-	err = -EIO;
-	if (!outarg->nodeid)
-		goto out_put_forget;
-	if (fuse_invalid_attr(&outarg->attr))
-		goto out_put_forget;
+#ifdef CONFIG_FUSE_BPF
+	if (err == sizeof(bpf_arg.out)) {
+		/* TODO Make sure this handles invalid handles */
+		struct file *backing_file;
+		struct inode *backing_inode;
 
-	*inode = fuse_iget(sb, outarg->nodeid, outarg->generation,
-			   &outarg->attr, entry_attr_timeout(outarg),
-			   attr_version);
+		err = -ENOENT;
+		if (!entry)
+			goto out_queue_forget;
+
+		err = -EINVAL;
+		backing_file = bpf_arg.backing_file;
+		if (!backing_file)
+			goto out_queue_forget;
+
+		if (IS_ERR(backing_file)) {
+			err = PTR_ERR(backing_file);
+			goto out_queue_forget;
+		}
+
+		backing_inode = backing_file->f_inode;
+		*inode = fuse_iget_backing(sb, outarg->nodeid, backing_inode);
+		if (!*inode)
+			goto out;
+
+		err = fuse_handle_backing(&bpf_arg,
+				&get_fuse_inode(*inode)->backing_inode,
+				&get_fuse_dentry(entry)->backing_path);
+		if (err)
+			goto out;
+
+		err = fuse_handle_bpf_prog(&bpf_arg, NULL, &get_fuse_inode(*inode)->bpf);
+		if (err)
+			goto out;
+	} else
+#endif
+	{
+		/* Zero nodeid is same as -ENOENT, but with valid timeout */
+		if (err || !outarg->nodeid)
+			goto out_put_forget;
+
+		err = -EIO;
+		if (!outarg->nodeid)
+			goto out_put_forget;
+		if (fuse_invalid_attr(&outarg->attr))
+			goto out_put_forget;
+
+		*inode = fuse_iget(sb, outarg->nodeid, outarg->generation,
+				   &outarg->attr, entry_attr_timeout(outarg),
+				   attr_version);
+	}
+
 	err = -ENOMEM;
-	if (!*inode) {
+#ifdef CONFIG_FUSE_BPF
+out_queue_forget:
+#endif
+	if (!*inode && outarg->nodeid) {
 		fuse_queue_forget(fm->fc, forget, outarg->nodeid, 1);
 		goto out;
 	}
@@ -413,6 +580,8 @@ int fuse_lookup_name(struct super_block *sb, u64 nodeid, const struct qstr *name
  out_put_forget:
 	kfree(forget);
  out:
+	if (bpf_arg.backing_file)
+		fput(bpf_arg.backing_file);
 	return err;
 }
 
@@ -426,12 +595,23 @@ static struct dentry *fuse_lookup(struct inode *dir, struct dentry *entry,
 	bool outarg_valid = true;
 	bool locked;
 
+#ifdef CONFIG_FUSE_BPF
+	struct fuse_err_ret fer;
+
+	fer = fuse_bpf_backing(dir, struct fuse_lookup_io,
+			       fuse_lookup_initialize, fuse_lookup_backing,
+			       fuse_lookup_finalize,
+			       dir, entry, flags);
+	if (fer.ret)
+		return fer.result;
+#endif
+
 	if (fuse_is_bad(dir))
 		return ERR_PTR(-EIO);
 
 	locked = fuse_lock_inode(dir);
 	err = fuse_lookup_name(dir->i_sb, get_node_id(dir), &entry->d_name,
-			       &outarg, &inode);
+			       &outarg, entry, &inode);
 	fuse_unlock_inode(dir, locked);
 	if (err == -ENOENT) {
 		outarg_valid = false;
@@ -533,6 +713,7 @@ static int fuse_create_open(struct inode *dir, struct dentry *entry,
 {
 	int err;
 	struct inode *inode;
+	struct fuse_conn *fc = get_fuse_conn(dir);
 	struct fuse_mount *fm = get_fuse_mount(dir);
 	FUSE_ARGS(args);
 	struct fuse_forget_link *forget;
@@ -548,6 +729,20 @@ static int fuse_create_open(struct inode *dir, struct dentry *entry,
 	/* Userspace expects S_IFREG in create mode */
 	BUG_ON((mode & S_IFMT) != S_IFREG);
 
+#ifdef CONFIG_FUSE_BPF
+	{
+		struct fuse_err_ret fer;
+
+		fer = fuse_bpf_backing(dir, struct fuse_create_open_io,
+				       fuse_create_open_initialize,
+				       fuse_create_open_backing,
+				       fuse_create_open_finalize,
+				       dir, entry, file, flags, mode);
+		if (fer.ret)
+			return PTR_ERR(fer.result);
+	}
+#endif
+
 	forget = fuse_alloc_forget();
 	err = -ENOMEM;
 	if (!forget)
@@ -610,6 +805,7 @@ static int fuse_create_open(struct inode *dir, struct dentry *entry,
 	ff->fh = outopen.fh;
 	ff->nodeid = outentry.nodeid;
 	ff->open_flags = outopen.open_flags;
+	fuse_passthrough_setup(fc, ff, &outopen);
 	inode = fuse_iget(dir->i_sb, outentry.nodeid, outentry.generation,
 			  &outentry.attr, entry_attr_timeout(&outentry), 0);
 	if (!inode) {
@@ -780,6 +976,17 @@ static int fuse_mknod(struct user_namespace *mnt_userns, struct inode *dir,
 	struct fuse_mount *fm = get_fuse_mount(dir);
 	FUSE_ARGS(args);
 
+#ifdef CONFIG_FUSE_BPF
+	struct fuse_err_ret fer;
+
+	fer = fuse_bpf_backing(dir, struct fuse_mknod_in,
+			fuse_mknod_initialize, fuse_mknod_backing,
+			fuse_mknod_finalize,
+			dir, entry, mode, rdev);
+	if (fer.ret)
+		return PTR_ERR(fer.result);
+#endif
+
 	if (!fm->fc->dont_mask)
 		mode &= ~current_umask();
 
@@ -826,6 +1033,17 @@ static int fuse_mkdir(struct user_namespace *mnt_userns, struct inode *dir,
 	struct fuse_mount *fm = get_fuse_mount(dir);
 	FUSE_ARGS(args);
 
+#ifdef CONFIG_FUSE_BPF
+	struct fuse_err_ret fer;
+
+	fer = fuse_bpf_backing(dir, struct fuse_mkdir_in,
+			fuse_mkdir_initialize, fuse_mkdir_backing,
+			fuse_mkdir_finalize,
+			dir, entry, mode);
+	if (fer.ret)
+		return PTR_ERR(fer.result);
+#endif
+
 	if (!fm->fc->dont_mask)
 		mode &= ~current_umask();
 
@@ -848,6 +1066,17 @@ static int fuse_symlink(struct user_namespace *mnt_userns, struct inode *dir,
 	unsigned len = strlen(link) + 1;
 	FUSE_ARGS(args);
 
+#ifdef CONFIG_FUSE_BPF
+	struct fuse_err_ret fer;
+
+	fer = fuse_bpf_backing(dir, struct fuse_dummy_io,
+			fuse_symlink_initialize, fuse_symlink_backing,
+			fuse_symlink_finalize,
+			dir, entry, link, len);
+	if (fer.ret)
+		return PTR_ERR(fer.result);
+#endif
+
 	args.opcode = FUSE_SYMLINK;
 	args.in_numargs = 2;
 	args.in_args[0].size = entry->d_name.len + 1;
@@ -911,6 +1140,20 @@ static int fuse_unlink(struct inode *dir, struct dentry *entry)
 	if (fuse_is_bad(dir))
 		return -EIO;
 
+#ifdef CONFIG_FUSE_BPF
+	{
+		struct fuse_err_ret fer;
+
+		fer = fuse_bpf_backing(dir, struct fuse_dummy_io,
+					fuse_unlink_initialize,
+					fuse_unlink_backing,
+					fuse_unlink_finalize,
+					dir, entry);
+		if (fer.ret)
+			return PTR_ERR(fer.result);
+	}
+#endif
+
 	args.opcode = FUSE_UNLINK;
 	args.nodeid = get_node_id(dir);
 	args.in_numargs = 1;
@@ -934,6 +1177,20 @@ static int fuse_rmdir(struct inode *dir, struct dentry *entry)
 	if (fuse_is_bad(dir))
 		return -EIO;
 
+#ifdef CONFIG_FUSE_BPF
+	{
+		struct fuse_err_ret fer;
+
+		fer = fuse_bpf_backing(dir, struct fuse_dummy_io,
+					fuse_rmdir_initialize,
+					fuse_rmdir_backing,
+					fuse_rmdir_finalize,
+					dir, entry);
+		if (fer.ret)
+			return PTR_ERR(fer.result);
+	}
+#endif
+
 	args.opcode = FUSE_RMDIR;
 	args.nodeid = get_node_id(dir);
 	args.in_numargs = 1;
@@ -1012,6 +1269,18 @@ static int fuse_rename2(struct user_namespace *mnt_userns, struct inode *olddir,
 		return -EINVAL;
 
 	if (flags) {
+#ifdef CONFIG_FUSE_BPF
+		struct fuse_err_ret fer;
+
+		fer = fuse_bpf_backing(olddir, struct fuse_rename2_in,
+						fuse_rename2_initialize, fuse_rename2_backing,
+						fuse_rename2_finalize,
+						olddir, oldent, newdir, newent, flags);
+		if (fer.ret)
+			return PTR_ERR(fer.result);
+#endif
+
+		/* TODO: how should this go with bpfs involved? */
 		if (fc->no_rename2 || fc->minor < 23)
 			return -EINVAL;
 
@@ -1023,6 +1292,17 @@ static int fuse_rename2(struct user_namespace *mnt_userns, struct inode *olddir,
 			err = -EINVAL;
 		}
 	} else {
+#ifdef CONFIG_FUSE_BPF
+		struct fuse_err_ret fer;
+
+		fer = fuse_bpf_backing(olddir, struct fuse_rename_in,
+						fuse_rename_initialize, fuse_rename_backing,
+						fuse_rename_finalize,
+						olddir, oldent, newdir, newent);
+		if (fer.ret)
+			return PTR_ERR(fer.result);
+#endif
+
 		err = fuse_rename_common(olddir, oldent, newdir, newent, 0,
 					 FUSE_RENAME,
 					 sizeof(struct fuse_rename_in));
@@ -1040,6 +1320,16 @@ static int fuse_link(struct dentry *entry, struct inode *newdir,
 	struct fuse_mount *fm = get_fuse_mount(inode);
 	FUSE_ARGS(args);
 
+#ifdef CONFIG_FUSE_BPF
+	struct fuse_err_ret fer;
+
+	fer = fuse_bpf_backing(inode, struct fuse_link_in, fuse_link_initialize,
+			       fuse_link_backing, fuse_link_finalize, entry,
+			       newdir, newent);
+	if (fer.ret)
+		return PTR_ERR(fer.result);
+#endif
+
 	memset(&inarg, 0, sizeof(inarg));
 	inarg.oldnodeid = get_node_id(inode);
 	args.opcode = FUSE_LINK;
@@ -1057,7 +1347,7 @@ static int fuse_link(struct dentry *entry, struct inode *newdir,
 	return err;
 }
 
-static void fuse_fillattr(struct inode *inode, struct fuse_attr *attr,
+void fuse_fillattr(struct inode *inode, struct fuse_attr *attr,
 			  struct kstat *stat)
 {
 	unsigned int blkbits;
@@ -1117,23 +1407,13 @@ static int fuse_do_getattr(struct inode *inode, struct kstat *stat,
 	args.out_args[0].size = sizeof(outarg);
 	args.out_args[0].value = &outarg;
 	err = fuse_simple_request(fm, &args);
-	if (!err) {
-		if (fuse_invalid_attr(&outarg.attr) ||
-		    inode_wrong_type(inode, outarg.attr.mode)) {
-			fuse_make_bad(inode);
-			err = -EIO;
-		} else {
-			fuse_change_attributes(inode, &outarg.attr,
-					       attr_timeout(&outarg),
-					       attr_version);
-			if (stat)
-				fuse_fillattr(inode, &outarg.attr, stat);
-		}
-	}
+	if (!err)
+		err = finalize_attr(inode, &outarg, attr_version, stat);
 	return err;
 }
 
 static int fuse_update_get_attr(struct inode *inode, struct file *file,
+				const struct path *path,
 				struct kstat *stat, u32 request_mask,
 				unsigned int flags)
 {
@@ -1143,6 +1423,17 @@ static int fuse_update_get_attr(struct inode *inode, struct file *file,
 	u32 inval_mask = READ_ONCE(fi->inval_mask);
 	u32 cache_mask = fuse_get_cache_mask(inode);
 
+#ifdef CONFIG_FUSE_BPF
+	struct fuse_err_ret fer;
+
+	fer = fuse_bpf_backing(inode, struct fuse_getattr_io,
+			       fuse_getattr_initialize,	fuse_getattr_backing,
+			       fuse_getattr_finalize,
+			       path->dentry, stat, request_mask, flags);
+	if (fer.ret)
+		return PTR_ERR(fer.result);
+#endif
+
 	if (flags & AT_STATX_FORCE_SYNC)
 		sync = true;
 	else if (flags & AT_STATX_DONT_SYNC)
@@ -1166,7 +1457,9 @@ static int fuse_update_get_attr(struct inode *inode, struct file *file,
 
 int fuse_update_attributes(struct inode *inode, struct file *file, u32 mask)
 {
-	return fuse_update_get_attr(inode, file, NULL, mask, 0);
+	/* Do *not* need to get atime for internal purposes */
+	return fuse_update_get_attr(inode, file, &file->f_path, NULL,
+				    mask & ~STATX_ATIME, 0);
 }
 
 int fuse_reverse_inval_entry(struct fuse_conn *fc, u64 parent_nodeid,
@@ -1277,6 +1570,16 @@ static int fuse_access(struct inode *inode, int mask)
 	struct fuse_access_in inarg;
 	int err;
 
+#ifdef CONFIG_FUSE_BPF
+	struct fuse_err_ret fer;
+
+	fer = fuse_bpf_backing(inode, struct fuse_access_in,
+			       fuse_access_initialize, fuse_access_backing,
+			       fuse_access_finalize, inode, mask);
+	if (fer.ret)
+		return PTR_ERR(fer.result);
+#endif
+
 	BUG_ON(mask & MAY_NOT_BLOCK);
 
 	if (fm->fc->no_access)
@@ -1325,6 +1628,10 @@ static int fuse_permission(struct user_namespace *mnt_userns,
 	struct fuse_conn *fc = get_fuse_conn(inode);
 	bool refreshed = false;
 	int err = 0;
+	struct fuse_inode *fi = get_fuse_inode(inode);
+#ifdef CONFIG_FUSE_BPF
+	struct fuse_err_ret fer;
+#endif
 
 	if (fuse_is_bad(inode))
 		return -EIO;
@@ -1332,12 +1639,19 @@ static int fuse_permission(struct user_namespace *mnt_userns,
 	if (!fuse_allow_current_process(fc))
 		return -EACCES;
 
+#ifdef CONFIG_FUSE_BPF
+	fer = fuse_bpf_backing(inode, struct fuse_access_in,
+			       fuse_access_initialize, fuse_access_backing,
+			       fuse_access_finalize, inode, mask);
+	if (fer.ret)
+		return PTR_ERR(fer.result);
+#endif
+
 	/*
 	 * If attributes are needed, refresh them before proceeding
 	 */
 	if (fc->default_permissions ||
 	    ((mask & MAY_EXEC) && S_ISREG(inode->i_mode))) {
-		struct fuse_inode *fi = get_fuse_inode(inode);
 		u32 perm_mask = STATX_MODE | STATX_UID | STATX_GID;
 
 		if (perm_mask & READ_ONCE(fi->inval_mask) ||
@@ -1428,6 +1742,21 @@ static const char *fuse_get_link(struct dentry *dentry, struct inode *inode,
 	if (fuse_is_bad(inode))
 		goto out_err;
 
+#ifdef CONFIG_FUSE_BPF
+	{
+		struct fuse_err_ret fer;
+		const char *out = NULL;
+
+		fer = fuse_bpf_backing(inode, struct fuse_dummy_io,
+				       fuse_get_link_initialize,
+				       fuse_get_link_backing,
+				       fuse_get_link_finalize,
+				       inode, dentry, callback, &out);
+		if (fer.ret)
+			return fer.result ?: out;
+	}
+#endif
+
 	if (fc->cache_symlinks)
 		return page_get_link(dentry, inode, callback);
 
@@ -1461,8 +1790,18 @@ static int fuse_dir_open(struct inode *inode, struct file *file)
 
 static int fuse_dir_release(struct inode *inode, struct file *file)
 {
-	fuse_release_common(file, true);
+#ifdef CONFIG_FUSE_BPF
+	struct fuse_err_ret fer;
 
+	fer = fuse_bpf_backing(inode, struct fuse_release_in,
+		       fuse_releasedir_initialize, fuse_release_backing,
+		       fuse_release_finalize,
+		       inode, file);
+	if (fer.ret)
+		return PTR_ERR(fer.result);
+#endif
+
+	fuse_release_common(file, true);
 	return 0;
 }
 
@@ -1476,6 +1815,19 @@ static int fuse_dir_fsync(struct file *file, loff_t start, loff_t end,
 	if (fuse_is_bad(inode))
 		return -EIO;
 
+#ifdef CONFIG_FUSE_BPF
+	{
+		struct fuse_err_ret fer;
+
+		fer = fuse_bpf_backing(inode, struct fuse_fsync_in,
+				fuse_dir_fsync_initialize, fuse_fsync_backing,
+				fuse_fsync_finalize,
+				file, start, end, datasync);
+		if (fer.ret)
+			return PTR_ERR(fer.result);
+	}
+#endif
+
 	if (fc->no_fsyncdir)
 		return 0;
 
@@ -1514,58 +1866,6 @@ static long fuse_dir_compat_ioctl(struct file *file, unsigned int cmd,
 				 FUSE_IOCTL_COMPAT | FUSE_IOCTL_DIR);
 }
 
-static bool update_mtime(unsigned ivalid, bool trust_local_mtime)
-{
-	/* Always update if mtime is explicitly set  */
-	if (ivalid & ATTR_MTIME_SET)
-		return true;
-
-	/* Or if kernel i_mtime is the official one */
-	if (trust_local_mtime)
-		return true;
-
-	/* If it's an open(O_TRUNC) or an ftruncate(), don't update */
-	if ((ivalid & ATTR_SIZE) && (ivalid & (ATTR_OPEN | ATTR_FILE)))
-		return false;
-
-	/* In all other cases update */
-	return true;
-}
-
-static void iattr_to_fattr(struct fuse_conn *fc, struct iattr *iattr,
-			   struct fuse_setattr_in *arg, bool trust_local_cmtime)
-{
-	unsigned ivalid = iattr->ia_valid;
-
-	if (ivalid & ATTR_MODE)
-		arg->valid |= FATTR_MODE,   arg->mode = iattr->ia_mode;
-	if (ivalid & ATTR_UID)
-		arg->valid |= FATTR_UID,    arg->uid = from_kuid(fc->user_ns, iattr->ia_uid);
-	if (ivalid & ATTR_GID)
-		arg->valid |= FATTR_GID,    arg->gid = from_kgid(fc->user_ns, iattr->ia_gid);
-	if (ivalid & ATTR_SIZE)
-		arg->valid |= FATTR_SIZE,   arg->size = iattr->ia_size;
-	if (ivalid & ATTR_ATIME) {
-		arg->valid |= FATTR_ATIME;
-		arg->atime = iattr->ia_atime.tv_sec;
-		arg->atimensec = iattr->ia_atime.tv_nsec;
-		if (!(ivalid & ATTR_ATIME_SET))
-			arg->valid |= FATTR_ATIME_NOW;
-	}
-	if ((ivalid & ATTR_MTIME) && update_mtime(ivalid, trust_local_cmtime)) {
-		arg->valid |= FATTR_MTIME;
-		arg->mtime = iattr->ia_mtime.tv_sec;
-		arg->mtimensec = iattr->ia_mtime.tv_nsec;
-		if (!(ivalid & ATTR_MTIME_SET) && !trust_local_cmtime)
-			arg->valid |= FATTR_MTIME_NOW;
-	}
-	if ((ivalid & ATTR_CTIME) && trust_local_cmtime) {
-		arg->valid |= FATTR_CTIME;
-		arg->ctime = iattr->ia_ctime.tv_sec;
-		arg->ctimensec = iattr->ia_ctime.tv_nsec;
-	}
-}
-
 /*
  * Prevent concurrent writepages on inode
  *
@@ -1680,6 +1980,16 @@ int fuse_do_setattr(struct dentry *dentry, struct iattr *attr,
 	bool trust_local_cmtime = is_wb;
 	bool fault_blocked = false;
 
+#ifdef CONFIG_FUSE_BPF
+	struct fuse_err_ret fer;
+
+	fer = fuse_bpf_backing(inode, struct fuse_setattr_io,
+			       fuse_setattr_initialize, fuse_setattr_backing,
+			       fuse_setattr_finalize, dentry, attr, file);
+	if (fer.ret)
+		return PTR_ERR(fer.result);
+#endif
+
 	if (!fc->default_permissions)
 		attr->ia_valid |= ATTR_FORCE;
 
@@ -1855,11 +2165,22 @@ static int fuse_setattr(struct user_namespace *mnt_userns, struct dentry *entry,
 		 * This should be done on write(), truncate() and chown().
 		 */
 		if (!fc->handle_killpriv && !fc->handle_killpriv_v2) {
+#ifdef CONFIG_FUSE_BPF
+			struct fuse_err_ret fer;
+
 			/*
 			 * ia_mode calculation may have used stale i_mode.
 			 * Refresh and recalculate.
 			 */
-			ret = fuse_do_getattr(inode, NULL, file);
+			fer = fuse_bpf_backing(inode, struct fuse_getattr_io,
+					       fuse_getattr_initialize,	fuse_getattr_backing,
+					       fuse_getattr_finalize,
+					       entry, NULL, 0, 0);
+			if (fer.ret)
+				ret = PTR_ERR(fer.result);
+			else
+#endif
+				ret = fuse_do_getattr(inode, NULL, file);
 			if (ret)
 				return ret;
 
@@ -1916,7 +2237,8 @@ static int fuse_getattr(struct user_namespace *mnt_userns,
 		return -EACCES;
 	}
 
-	return fuse_update_get_attr(inode, NULL, stat, request_mask, flags);
+	return fuse_update_get_attr(inode, NULL, path, stat, request_mask,
+				    flags);
 }
 
 static const struct inode_operations fuse_dir_inode_operations = {
diff --git a/fs/fuse/file.c b/fs/fuse/file.c
index c996c0e..d37f90b 100644
--- a/fs/fuse/file.c
+++ b/fs/fuse/file.c
@@ -8,6 +8,7 @@
 
 #include "fuse_i.h"
 
+#include <linux/filter.h>
 #include <linux/pagemap.h>
 #include <linux/slab.h>
 #include <linux/kernel.h>
@@ -146,7 +147,7 @@ struct fuse_file *fuse_file_open(struct fuse_mount *fm, u64 nodeid,
 		if (!err) {
 			ff->fh = outarg.fh;
 			ff->open_flags = outarg.open_flags;
-
+			fuse_passthrough_setup(fc, ff, &outarg);
 		} else if (err != -ENOSYS) {
 			fuse_file_free(ff);
 			return ERR_PTR(err);
@@ -235,6 +236,20 @@ int fuse_open_common(struct inode *inode, struct file *file, bool isdir)
 	if (err)
 		return err;
 
+#ifdef CONFIG_FUSE_BPF
+	{
+		struct fuse_err_ret fer;
+
+		fer = fuse_bpf_backing(inode, struct fuse_open_io,
+				       fuse_open_initialize,
+				       fuse_open_backing,
+				       fuse_open_finalize,
+				       inode, file, isdir);
+		if (fer.ret)
+			return PTR_ERR(fer.result);
+	}
+#endif
+
 	if (is_wb_truncate || dax_truncate)
 		inode_lock(inode);
 
@@ -308,6 +323,8 @@ void fuse_file_release(struct inode *inode, struct fuse_file *ff,
 	struct fuse_release_args *ra = ff->release_args;
 	int opcode = isdir ? FUSE_RELEASEDIR : FUSE_RELEASE;
 
+	fuse_passthrough_release(&ff->passthrough);
+
 	fuse_prepare_release(fi, ff, open_flags, opcode);
 
 	if (ff->flock) {
@@ -344,6 +361,17 @@ static int fuse_release(struct inode *inode, struct file *file)
 {
 	struct fuse_conn *fc = get_fuse_conn(inode);
 
+#ifdef CONFIG_FUSE_BPF
+	struct fuse_err_ret fer;
+
+	fer = fuse_bpf_backing(inode, struct fuse_release_in,
+		       fuse_release_initialize, fuse_release_backing,
+		       fuse_release_finalize,
+		       inode, file);
+	if (fer.ret)
+		return PTR_ERR(fer.result);
+#endif
+
 	/*
 	 * Dirty pages might remain despite write_inode_now() call from
 	 * fuse_flush() due to writes racing with the close.
@@ -486,6 +514,17 @@ static int fuse_flush(struct file *file, fl_owner_t id)
 	FUSE_ARGS(args);
 	int err;
 
+#ifdef CONFIG_FUSE_BPF
+	struct fuse_err_ret fer;
+
+	fer = fuse_bpf_backing(file->f_inode, struct fuse_flush_in,
+			       fuse_flush_initialize, fuse_flush_backing,
+			       fuse_flush_finalize,
+			       file, id);
+	if (fer.ret)
+		return PTR_ERR(fer.result);
+#endif
+
 	if (fuse_is_bad(inode))
 		return -EIO;
 
@@ -561,6 +600,17 @@ static int fuse_fsync(struct file *file, loff_t start, loff_t end,
 	struct fuse_conn *fc = get_fuse_conn(inode);
 	int err;
 
+#ifdef CONFIG_FUSE_BPF
+	struct fuse_err_ret fer;
+
+	fer = fuse_bpf_backing(inode, struct fuse_fsync_in,
+			       fuse_fsync_initialize, fuse_fsync_backing,
+			       fuse_fsync_finalize,
+			       file, start, end, datasync);
+	if (fer.ret)
+		return PTR_ERR(fer.result);
+#endif
+
 	if (fuse_is_bad(inode))
 		return -EIO;
 
@@ -1598,7 +1648,23 @@ static ssize_t fuse_file_read_iter(struct kiocb *iocb, struct iov_iter *to)
 	if (FUSE_IS_DAX(inode))
 		return fuse_dax_read_iter(iocb, to);
 
-	if (!(ff->open_flags & FOPEN_DIRECT_IO))
+#ifdef CONFIG_FUSE_BPF
+	{
+		struct fuse_err_ret fer;
+
+		fer = fuse_bpf_backing(inode, struct fuse_file_read_iter_io,
+				       fuse_file_read_iter_initialize,
+				       fuse_file_read_iter_backing,
+				       fuse_file_read_iter_finalize,
+				       iocb, to);
+		if (fer.ret)
+			return PTR_ERR(fer.result);
+	}
+#endif
+
+	if (ff->passthrough.filp)
+		return fuse_passthrough_read_iter(iocb, to);
+	else if (!(ff->open_flags & FOPEN_DIRECT_IO))
 		return fuse_cache_read_iter(iocb, to);
 	else
 		return fuse_direct_read_iter(iocb, to);
@@ -1616,7 +1682,23 @@ static ssize_t fuse_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
 	if (FUSE_IS_DAX(inode))
 		return fuse_dax_write_iter(iocb, from);
 
-	if (!(ff->open_flags & FOPEN_DIRECT_IO))
+#ifdef CONFIG_FUSE_BPF
+	{
+		struct fuse_err_ret fer;
+
+		fer = fuse_bpf_backing(inode, struct fuse_file_write_iter_io,
+				       fuse_file_write_iter_initialize,
+				       fuse_file_write_iter_backing,
+				       fuse_file_write_iter_finalize,
+				       iocb, from);
+		if (fer.ret)
+			return PTR_ERR(fer.result);
+	}
+#endif
+
+	if (ff->passthrough.filp)
+		return fuse_passthrough_write_iter(iocb, from);
+	else if (!(ff->open_flags & FOPEN_DIRECT_IO))
 		return fuse_cache_write_iter(iocb, from);
 	else
 		return fuse_direct_write_iter(iocb, from);
@@ -1862,6 +1944,19 @@ int fuse_write_inode(struct inode *inode, struct writeback_control *wbc)
 	struct fuse_file *ff;
 	int err;
 
+	/**
+	 * TODO - fully understand why this is necessary
+	 *
+	 * With fuse-bpf, fsstress fails if rename is enabled without this
+	 *
+	 * We are getting writes here on directory inodes, which do not have an
+	 * initialized file list so crash.
+	 *
+	 * The question is why we are getting those writes
+	 */
+	if (!S_ISREG(inode->i_mode))
+		return 0;
+
 	/*
 	 * Inode is always written before the last reference is dropped and
 	 * hence this should not be reached from reclaim.
@@ -2433,6 +2528,15 @@ static int fuse_file_mmap(struct file *file, struct vm_area_struct *vma)
 	if (FUSE_IS_DAX(file_inode(file)))
 		return fuse_dax_mmap(file, vma);
 
+#ifdef CONFIG_FUSE_BPF
+	/* TODO - this is simply passthrough, not a proper BPF filter */
+	if (ff->backing_file)
+		return fuse_backing_mmap(file, vma);
+#endif
+
+	if (ff->passthrough.filp)
+		return fuse_passthrough_mmap(file, vma);
+
 	if (ff->open_flags & FOPEN_DIRECT_IO) {
 		/* Can't provide the coherency needed for MAP_SHARED */
 		if (vma->vm_flags & VM_MAYSHARE)
@@ -2678,6 +2782,17 @@ static loff_t fuse_file_llseek(struct file *file, loff_t offset, int whence)
 {
 	loff_t retval;
 	struct inode *inode = file_inode(file);
+#ifdef CONFIG_FUSE_BPF
+	struct fuse_err_ret fer;
+
+	fer = fuse_bpf_backing(inode, struct fuse_lseek_io,
+			       fuse_lseek_initialize,
+			       fuse_lseek_backing,
+			       fuse_lseek_finalize,
+			       file, offset, whence);
+	if (fer.ret)
+		return PTR_ERR(fer.result);
+#endif
 
 	switch (whence) {
 	case SEEK_SET:
@@ -2967,6 +3082,18 @@ static long fuse_file_fallocate(struct file *file, int mode, loff_t offset,
 		(!(mode & FALLOC_FL_KEEP_SIZE) ||
 		 (mode & (FALLOC_FL_PUNCH_HOLE | FALLOC_FL_ZERO_RANGE)));
 
+#ifdef CONFIG_FUSE_BPF
+	struct fuse_err_ret fer;
+
+	fer = fuse_bpf_backing(inode, struct fuse_fallocate_in,
+			       fuse_file_fallocate_initialize,
+			       fuse_file_fallocate_backing,
+			       fuse_file_fallocate_finalize,
+			       file, mode, offset, length);
+	if (fer.ret)
+		return PTR_ERR(fer.result);
+#endif
+
 	if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE |
 		     FALLOC_FL_ZERO_RANGE))
 		return -EOPNOTSUPP;
@@ -3070,6 +3197,18 @@ static ssize_t __fuse_copy_file_range(struct file *file_in, loff_t pos_in,
 	bool is_unstable = (!fc->writeback_cache) &&
 			   ((pos_out + len) > inode_out->i_size);
 
+#ifdef CONFIG_FUSE_BPF
+	struct fuse_err_ret fer;
+
+	fer = fuse_bpf_backing(file_in->f_inode, struct fuse_copy_file_range_io,
+			       fuse_copy_file_range_initialize,
+			       fuse_copy_file_range_backing,
+			       fuse_copy_file_range_finalize,
+			       file_in, pos_in, file_out, pos_out, len, flags);
+	if (fer.ret)
+		return PTR_ERR(fer.result);
+#endif
+
 	if (fc->no_copy_file_range)
 		return -EOPNOTSUPP;
 
diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h
index 98a9cf5..a659c89 100644
--- a/fs/fuse/fuse_i.h
+++ b/fs/fuse/fuse_i.h
@@ -13,6 +13,9 @@
 # define pr_fmt(fmt) "fuse: " fmt
 #endif
 
+#include <linux/android_fuse.h>
+#include <linux/filter.h>
+#include <linux/pagemap.h>
 #include <linux/fuse.h>
 #include <linux/fs.h>
 #include <linux/mount.h>
@@ -31,6 +34,9 @@
 #include <linux/pid_namespace.h>
 #include <linux/refcount.h>
 #include <linux/user_namespace.h>
+#include <linux/statfs.h>
+
+#define FUSE_SUPER_MAGIC 0x65735546
 
 /** Default max number of pages that can be used in a single read request */
 #define FUSE_DEFAULT_MAX_PAGES_PER_REQ 32
@@ -63,11 +69,57 @@ struct fuse_forget_link {
 	struct fuse_forget_link *next;
 };
 
+/** FUSE specific dentry data */
+#if BITS_PER_LONG < 64 || defined(CONFIG_FUSE_BPF)
+struct fuse_dentry {
+	union {
+		u64 time;
+		struct rcu_head rcu;
+	};
+	struct path backing_path;
+};
+
+static inline struct fuse_dentry *get_fuse_dentry(const struct dentry *entry)
+{
+	return entry->d_fsdata;
+}
+#endif
+
+#ifdef CONFIG_FUSE_BPF
+static inline void get_fuse_backing_path(const struct dentry *d,
+					  struct path *path)
+{
+	struct fuse_dentry *di = get_fuse_dentry(d);
+
+	if (!di) {
+		*path = (struct path) {};
+		return;
+	}
+
+	*path = di->backing_path;
+	path_get(path);
+}
+#endif
+
 /** FUSE inode */
 struct fuse_inode {
 	/** Inode data */
 	struct inode inode;
 
+#ifdef CONFIG_FUSE_BPF
+	/**
+	 * Backing inode, if this inode is from a backing file system.
+	 * If this is set, nodeid is 0.
+	 */
+	struct inode *backing_inode;
+
+	/**
+	 * bpf_prog, run on all operations to determine whether to pass through
+	 * or handle in place
+	 */
+	struct bpf_prog *bpf;
+#endif
+
 	/** Unique ID, which identifies the inode between userspace
 	 * and kernel */
 	u64 nodeid;
@@ -173,6 +225,17 @@ struct fuse_conn;
 struct fuse_mount;
 struct fuse_release_args;
 
+/**
+ * Reference to lower filesystem file for read/write operations handled in
+ * passthrough mode.
+ * This struct also tracks the credentials to be used for handling read/write
+ * operations.
+ */
+struct fuse_passthrough {
+	struct file *filp;
+	struct cred *cred;
+};
+
 /** FUSE specific file data */
 struct fuse_file {
 	/** Fuse connection for this file */
@@ -218,6 +281,17 @@ struct fuse_file {
 
 	} readdir;
 
+	/** Container for data related to the passthrough functionality */
+	struct fuse_passthrough passthrough;
+
+#ifdef CONFIG_FUSE_BPF
+	/**
+	 * TODO: Reconcile with passthrough file
+	 * backing file when in bpf mode
+	 */
+	struct file *backing_file;
+#endif
+
 	/** RB node to be linked on fuse_conn->polled_files */
 	struct rb_node polled_node;
 
@@ -249,6 +323,7 @@ struct fuse_page_desc {
 struct fuse_args {
 	uint64_t nodeid;
 	uint32_t opcode;
+	uint32_t error_in;
 	unsigned short in_numargs;
 	unsigned short out_numargs;
 	bool force:1;
@@ -261,9 +336,12 @@ struct fuse_args {
 	bool page_zeroing:1;
 	bool page_replace:1;
 	bool may_block:1;
-	struct fuse_in_arg in_args[3];
-	struct fuse_arg out_args[2];
+	struct fuse_in_arg in_args[FUSE_MAX_IN_ARGS];
+	struct fuse_arg out_args[FUSE_MAX_OUT_ARGS];
 	void (*end)(struct fuse_mount *fm, struct fuse_args *args, int error);
+
+	/* Path used for completing d_canonical_path */
+	struct path *canonical_path;
 };
 
 struct fuse_args_pages {
@@ -367,10 +445,8 @@ struct fuse_req {
 	/** Used to wake up the task waiting for completion of request*/
 	wait_queue_head_t waitq;
 
-#if IS_ENABLED(CONFIG_VIRTIO_FS)
 	/** virtio-fs's physically contiguous buffer for in and out args */
 	void *argbuf;
-#endif
 
 	/** fuse_mount this request belongs to */
 	struct fuse_mount *fm;
@@ -390,19 +466,19 @@ struct fuse_iqueue_ops {
 	/**
 	 * Signal that a forget has been queued
 	 */
-	void (*wake_forget_and_unlock)(struct fuse_iqueue *fiq)
+	void (*wake_forget_and_unlock)(struct fuse_iqueue *fiq, bool sync)
 		__releases(fiq->lock);
 
 	/**
 	 * Signal that an INTERRUPT request has been queued
 	 */
-	void (*wake_interrupt_and_unlock)(struct fuse_iqueue *fiq)
+	void (*wake_interrupt_and_unlock)(struct fuse_iqueue *fiq, bool sync)
 		__releases(fiq->lock);
 
 	/**
 	 * Signal that a request has been queued
 	 */
-	void (*wake_pending_and_unlock)(struct fuse_iqueue *fiq)
+	void (*wake_pending_and_unlock)(struct fuse_iqueue *fiq, bool sync)
 		__releases(fiq->lock);
 
 	/**
@@ -511,9 +587,12 @@ struct fuse_fs_context {
 	bool no_force_umount:1;
 	bool legacy_opts_show:1;
 	enum fuse_dax_mode dax_mode;
+	bool no_daemon:1;
 	unsigned int max_read;
 	unsigned int blksize;
 	const char *subtype;
+	struct bpf_prog *root_bpf;
+	struct file *root_dir;
 
 	/* DAX device, may be NULL */
 	struct dax_device *dax_dev;
@@ -775,6 +854,9 @@ struct fuse_conn {
 	/* Auto-mount submounts announced by the server */
 	unsigned int auto_submounts:1;
 
+	/** Passthrough mode for read/write IO */
+	unsigned int passthrough:1;
+
 	/* Propagate syncfs() to server */
 	unsigned int sync_fs:1;
 
@@ -787,6 +869,9 @@ struct fuse_conn {
 	/* Is tmpfile not implemented by fs? */
 	unsigned int no_tmpfile:1;
 
+	/** BPF Only, no Daemon running */
+	unsigned int no_daemon:1;
+
 	/** The number of requests waiting for completion */
 	atomic_t num_waiting;
 
@@ -836,6 +921,12 @@ struct fuse_conn {
 
 	/* New writepages go into this bucket */
 	struct fuse_sync_bucket __rcu *curr_bucket;
+
+	/** IDR for passthrough requests */
+	struct idr passthrough_req;
+
+	/** Protects passthrough_req */
+	spinlock_t passthrough_req_lock;
 };
 
 /*
@@ -955,14 +1046,18 @@ extern const struct dentry_operations fuse_dentry_operations;
 extern const struct dentry_operations fuse_root_dentry_operations;
 
 /**
- * Get a filled in inode
+ * Get a filled-in inode
  */
+struct inode *fuse_iget_backing(struct super_block *sb,
+				u64 nodeid,
+				struct inode *backing_inode);
 struct inode *fuse_iget(struct super_block *sb, u64 nodeid,
 			int generation, struct fuse_attr *attr,
 			u64 attr_valid, u64 attr_version);
 
 int fuse_lookup_name(struct super_block *sb, u64 nodeid, const struct qstr *name,
-		     struct fuse_entry_out *outarg, struct inode **inode);
+		     struct fuse_entry_out *outarg,
+		     struct dentry *entry, struct inode **inode);
 
 /**
  * Send FORGET command
@@ -999,7 +1094,6 @@ struct fuse_io_args {
 void fuse_read_args_fill(struct fuse_io_args *ia, struct file *file, loff_t pos,
 			 size_t count, int opcode);
 
-
 /**
  * Send OPEN or OPENDIR request
  */
@@ -1071,7 +1165,7 @@ int fuse_dev_init(void);
 void fuse_dev_cleanup(void);
 
 int fuse_ctl_init(void);
-void __exit fuse_ctl_cleanup(void);
+void fuse_ctl_cleanup(void);
 
 /**
  * Simple request sending that does request allocation and freeing
@@ -1107,6 +1201,7 @@ void fuse_invalidate_entry_cache(struct dentry *entry);
 void fuse_invalidate_atime(struct inode *inode);
 
 u64 entry_attr_timeout(struct fuse_entry_out *o);
+void fuse_init_dentry_root(struct dentry *root, struct file *backing_dir);
 void fuse_change_entry_timeout(struct dentry *entry, struct fuse_entry_out *o);
 
 /**
@@ -1319,4 +1414,657 @@ struct fuse_file *fuse_file_open(struct fuse_mount *fm, u64 nodeid,
 void fuse_file_release(struct inode *inode, struct fuse_file *ff,
 		       unsigned int open_flags, fl_owner_t id, bool isdir);
 
+/* passthrough.c */
+void fuse_copyattr(struct file *dst_file, struct file *src_file);
+int fuse_passthrough_open(struct fuse_dev *fud, u32 lower_fd);
+int fuse_passthrough_setup(struct fuse_conn *fc, struct fuse_file *ff,
+			   struct fuse_open_out *openarg);
+void fuse_passthrough_release(struct fuse_passthrough *passthrough);
+ssize_t fuse_passthrough_read_iter(struct kiocb *iocb, struct iov_iter *to);
+ssize_t fuse_passthrough_write_iter(struct kiocb *iocb, struct iov_iter *from);
+ssize_t fuse_passthrough_mmap(struct file *file, struct vm_area_struct *vma);
+
+/* backing.c */
+
+/*
+ * Dummy io passed to fuse_bpf_backing when io operation needs no scratch space
+ */
+struct fuse_dummy_io {
+	int unused;
+};
+
+struct fuse_open_io {
+	struct fuse_open_in foi;
+	struct fuse_open_out foo;
+};
+
+int fuse_open_initialize(struct fuse_bpf_args *fa, struct fuse_open_io *foi,
+			 struct inode *inode, struct file *file, bool isdir);
+int fuse_open_backing(struct fuse_bpf_args *fa,
+		      struct inode *inode, struct file *file, bool isdir);
+void *fuse_open_finalize(struct fuse_bpf_args *fa,
+		       struct inode *inode, struct file *file, bool isdir);
+
+struct fuse_create_open_io {
+	struct fuse_create_in fci;
+	struct fuse_entry_out feo;
+	struct fuse_open_out foo;
+};
+
+int fuse_create_open_initialize(
+		struct fuse_bpf_args *fa, struct fuse_create_open_io *fcoi,
+		struct inode *dir, struct dentry *entry,
+		struct file *file, unsigned int flags, umode_t mode);
+int fuse_create_open_backing(
+		struct fuse_bpf_args *fa,
+		struct inode *dir, struct dentry *entry,
+		struct file *file, unsigned int flags, umode_t mode);
+void *fuse_create_open_finalize(
+		struct fuse_bpf_args *fa,
+		struct inode *dir, struct dentry *entry,
+		struct file *file, unsigned int flags, umode_t mode);
+
+int fuse_mknod_initialize(
+		struct fuse_bpf_args *fa, struct fuse_mknod_in *fmi,
+		struct inode *dir, struct dentry *entry, umode_t mode, dev_t rdev);
+int fuse_mknod_backing(
+		struct fuse_bpf_args *fa,
+		struct inode *dir, struct dentry *entry, umode_t mode, dev_t rdev);
+void *fuse_mknod_finalize(
+		struct fuse_bpf_args *fa,
+		struct inode *dir, struct dentry *entry, umode_t mode, dev_t rdev);
+
+int fuse_mkdir_initialize(
+		struct fuse_bpf_args *fa, struct fuse_mkdir_in *fmi,
+		struct inode *dir, struct dentry *entry, umode_t mode);
+int fuse_mkdir_backing(
+		struct fuse_bpf_args *fa,
+		struct inode *dir, struct dentry *entry, umode_t mode);
+void *fuse_mkdir_finalize(
+		struct fuse_bpf_args *fa,
+		struct inode *dir, struct dentry *entry, umode_t mode);
+
+int fuse_rmdir_initialize(
+		struct fuse_bpf_args *fa, struct fuse_dummy_io *fmi,
+		struct inode *dir, struct dentry *entry);
+int fuse_rmdir_backing(
+		struct fuse_bpf_args *fa,
+		struct inode *dir, struct dentry *entry);
+void *fuse_rmdir_finalize(
+		struct fuse_bpf_args *fa,
+		struct inode *dir, struct dentry *entry);
+
+int fuse_rename2_initialize(struct fuse_bpf_args *fa, struct fuse_rename2_in *fri,
+			    struct inode *olddir, struct dentry *oldent,
+			    struct inode *newdir, struct dentry *newent,
+			    unsigned int flags);
+int fuse_rename2_backing(struct fuse_bpf_args *fa,
+			 struct inode *olddir, struct dentry *oldent,
+			 struct inode *newdir, struct dentry *newent,
+			 unsigned int flags);
+void *fuse_rename2_finalize(struct fuse_bpf_args *fa,
+			    struct inode *olddir, struct dentry *oldent,
+			    struct inode *newdir, struct dentry *newent,
+			    unsigned int flags);
+
+int fuse_rename_initialize(struct fuse_bpf_args *fa, struct fuse_rename_in *fri,
+			   struct inode *olddir, struct dentry *oldent,
+			   struct inode *newdir, struct dentry *newent);
+int fuse_rename_backing(struct fuse_bpf_args *fa,
+			struct inode *olddir, struct dentry *oldent,
+			struct inode *newdir, struct dentry *newent);
+void *fuse_rename_finalize(struct fuse_bpf_args *fa,
+			   struct inode *olddir, struct dentry *oldent,
+			   struct inode *newdir, struct dentry *newent);
+
+int fuse_unlink_initialize(
+		struct fuse_bpf_args *fa, struct fuse_dummy_io *fmi,
+		struct inode *dir, struct dentry *entry);
+int fuse_unlink_backing(
+		struct fuse_bpf_args *fa,
+		struct inode *dir, struct dentry *entry);
+void *fuse_unlink_finalize(
+		struct fuse_bpf_args *fa,
+		struct inode *dir, struct dentry *entry);
+
+int fuse_link_initialize(struct fuse_bpf_args *fa, struct fuse_link_in *fli,
+			  struct dentry *entry, struct inode *dir,
+			  struct dentry *newent);
+int fuse_link_backing(struct fuse_bpf_args *fa, struct dentry *entry,
+		      struct inode *dir, struct dentry *newent);
+void *fuse_link_finalize(struct fuse_bpf_args *fa, struct dentry *entry,
+			 struct inode *dir, struct dentry *newent);
+
+int fuse_release_initialize(struct fuse_bpf_args *fa, struct fuse_release_in *fri,
+			    struct inode *inode, struct file *file);
+int fuse_releasedir_initialize(struct fuse_bpf_args *fa,
+			struct fuse_release_in *fri,
+			struct inode *inode, struct file *file);
+int fuse_release_backing(struct fuse_bpf_args *fa,
+			 struct inode *inode, struct file *file);
+void *fuse_release_finalize(struct fuse_bpf_args *fa,
+			    struct inode *inode, struct file *file);
+
+int fuse_flush_initialize(struct fuse_bpf_args *fa, struct fuse_flush_in *ffi,
+			  struct file *file, fl_owner_t id);
+int fuse_flush_backing(struct fuse_bpf_args *fa, struct file *file, fl_owner_t id);
+void *fuse_flush_finalize(struct fuse_bpf_args *fa,
+			  struct file *file, fl_owner_t id);
+
+struct fuse_lseek_io {
+	struct fuse_lseek_in fli;
+	struct fuse_lseek_out flo;
+};
+
+int fuse_lseek_initialize(struct fuse_bpf_args *fa, struct fuse_lseek_io *fli,
+			  struct file *file, loff_t offset, int whence);
+int fuse_lseek_backing(struct fuse_bpf_args *fa, struct file *file, loff_t offset, int whence);
+void *fuse_lseek_finalize(struct fuse_bpf_args *fa, struct file *file, loff_t offset, int whence);
+
+struct fuse_copy_file_range_io {
+	struct fuse_copy_file_range_in fci;
+	struct fuse_write_out fwo;
+};
+
+int fuse_copy_file_range_initialize(struct fuse_bpf_args *fa,
+				   struct fuse_copy_file_range_io *fcf,
+				   struct file *file_in, loff_t pos_in,
+				   struct file *file_out, loff_t pos_out,
+				   size_t len, unsigned int flags);
+int fuse_copy_file_range_backing(struct fuse_bpf_args *fa,
+				 struct file *file_in, loff_t pos_in,
+				 struct file *file_out, loff_t pos_out,
+				 size_t len, unsigned int flags);
+void *fuse_copy_file_range_finalize(struct fuse_bpf_args *fa,
+				    struct file *file_in, loff_t pos_in,
+				    struct file *file_out, loff_t pos_out,
+				    size_t len, unsigned int flags);
+
+int fuse_fsync_initialize(struct fuse_bpf_args *fa, struct fuse_fsync_in *ffi,
+		   struct file *file, loff_t start, loff_t end, int datasync);
+int fuse_fsync_backing(struct fuse_bpf_args *fa,
+		   struct file *file, loff_t start, loff_t end, int datasync);
+void *fuse_fsync_finalize(struct fuse_bpf_args *fa,
+		   struct file *file, loff_t start, loff_t end, int datasync);
+int fuse_dir_fsync_initialize(struct fuse_bpf_args *fa, struct fuse_fsync_in *ffi,
+		   struct file *file, loff_t start, loff_t end, int datasync);
+
+struct fuse_getxattr_io {
+	struct fuse_getxattr_in fgi;
+	struct fuse_getxattr_out fgo;
+};
+
+int fuse_getxattr_initialize(
+		struct fuse_bpf_args *fa, struct fuse_getxattr_io *fgio,
+		struct dentry *dentry, const char *name, void *value,
+		size_t size);
+int fuse_getxattr_backing(
+		struct fuse_bpf_args *fa,
+		struct dentry *dentry, const char *name, void *value,
+		size_t size);
+void *fuse_getxattr_finalize(
+		struct fuse_bpf_args *fa,
+		struct dentry *dentry, const char *name, void *value,
+		size_t size);
+
+int fuse_listxattr_initialize(struct fuse_bpf_args *fa,
+			       struct fuse_getxattr_io *fgio,
+			       struct dentry *dentry, char *list, size_t size);
+int fuse_listxattr_backing(struct fuse_bpf_args *fa, struct dentry *dentry,
+			   char *list, size_t size);
+void *fuse_listxattr_finalize(struct fuse_bpf_args *fa, struct dentry *dentry,
+			      char *list, size_t size);
+
+int fuse_setxattr_initialize(struct fuse_bpf_args *fa,
+			     struct fuse_setxattr_in *fsxi,
+			     struct dentry *dentry, const char *name,
+			     const void *value, size_t size, int flags);
+int fuse_setxattr_backing(struct fuse_bpf_args *fa, struct dentry *dentry,
+			  const char *name, const void *value, size_t size,
+			  int flags);
+void *fuse_setxattr_finalize(struct fuse_bpf_args *fa, struct dentry *dentry,
+			     const char *name, const void *value, size_t size,
+			     int flags);
+
+int fuse_removexattr_initialize(struct fuse_bpf_args *fa,
+				struct fuse_dummy_io *unused,
+				struct dentry *dentry, const char *name);
+int fuse_removexattr_backing(struct fuse_bpf_args *fa,
+			     struct dentry *dentry, const char *name);
+void *fuse_removexattr_finalize(struct fuse_bpf_args *fa,
+				struct dentry *dentry, const char *name);
+
+struct fuse_read_iter_out {
+	uint64_t ret;
+};
+struct fuse_file_read_iter_io {
+	struct fuse_read_in fri;
+	struct fuse_read_iter_out frio;
+};
+
+int fuse_file_read_iter_initialize(
+		struct fuse_bpf_args *fa, struct fuse_file_read_iter_io *fri,
+		struct kiocb *iocb, struct iov_iter *to);
+int fuse_file_read_iter_backing(struct fuse_bpf_args *fa,
+		struct kiocb *iocb, struct iov_iter *to);
+void *fuse_file_read_iter_finalize(struct fuse_bpf_args *fa,
+		struct kiocb *iocb, struct iov_iter *to);
+
+struct fuse_write_iter_out {
+	uint64_t ret;
+};
+struct fuse_file_write_iter_io {
+	struct fuse_write_in fwi;
+	struct fuse_write_out fwo;
+	struct fuse_write_iter_out fwio;
+};
+
+int fuse_file_write_iter_initialize(
+		struct fuse_bpf_args *fa, struct fuse_file_write_iter_io *fwio,
+		struct kiocb *iocb, struct iov_iter *from);
+int fuse_file_write_iter_backing(struct fuse_bpf_args *fa,
+		struct kiocb *iocb, struct iov_iter *from);
+void *fuse_file_write_iter_finalize(struct fuse_bpf_args *fa,
+		struct kiocb *iocb, struct iov_iter *from);
+
+ssize_t fuse_backing_mmap(struct file *file, struct vm_area_struct *vma);
+
+int fuse_file_fallocate_initialize(struct fuse_bpf_args *fa,
+		struct fuse_fallocate_in *ffi,
+		struct file *file, int mode, loff_t offset, loff_t length);
+int fuse_file_fallocate_backing(struct fuse_bpf_args *fa,
+		struct file *file, int mode, loff_t offset, loff_t length);
+void *fuse_file_fallocate_finalize(struct fuse_bpf_args *fa,
+		struct file *file, int mode, loff_t offset, loff_t length);
+
+struct fuse_lookup_io {
+	struct fuse_entry_out feo;
+	struct fuse_entry_bpf feb;
+};
+
+int fuse_handle_backing(struct fuse_entry_bpf *feb, struct inode **backing_inode,
+			struct path *backing_path);
+int fuse_handle_bpf_prog(struct fuse_entry_bpf *feb, struct inode *parent,
+			 struct bpf_prog **bpf);
+
+int fuse_lookup_initialize(struct fuse_bpf_args *fa, struct fuse_lookup_io *feo,
+	       struct inode *dir, struct dentry *entry, unsigned int flags);
+int fuse_lookup_backing(struct fuse_bpf_args *fa, struct inode *dir,
+			  struct dentry *entry, unsigned int flags);
+struct dentry *fuse_lookup_finalize(struct fuse_bpf_args *fa, struct inode *dir,
+			   struct dentry *entry, unsigned int flags);
+int fuse_revalidate_backing(struct dentry *entry, unsigned int flags);
+
+int fuse_canonical_path_initialize(struct fuse_bpf_args *fa,
+				   struct fuse_dummy_io *fdi,
+				   const struct path *path,
+				   struct path *canonical_path);
+int fuse_canonical_path_backing(struct fuse_bpf_args *fa, const struct path *path,
+				struct path *canonical_path);
+void *fuse_canonical_path_finalize(struct fuse_bpf_args *fa,
+				   const struct path *path,
+				   struct path *canonical_path);
+
+struct fuse_getattr_io {
+	struct fuse_getattr_in fgi;
+	struct fuse_attr_out fao;
+};
+int fuse_getattr_initialize(struct fuse_bpf_args *fa, struct fuse_getattr_io *fgio,
+			const struct dentry *entry, struct kstat *stat,
+			u32 request_mask, unsigned int flags);
+int fuse_getattr_backing(struct fuse_bpf_args *fa,
+			const struct dentry *entry, struct kstat *stat,
+			u32 request_mask, unsigned int flags);
+void *fuse_getattr_finalize(struct fuse_bpf_args *fa,
+			const struct dentry *entry, struct kstat *stat,
+			u32 request_mask, unsigned int flags);
+
+struct fuse_setattr_io {
+	struct fuse_setattr_in fsi;
+	struct fuse_attr_out fao;
+};
+
+int fuse_setattr_initialize(struct fuse_bpf_args *fa, struct fuse_setattr_io *fsi,
+		struct dentry *dentry, struct iattr *attr, struct file *file);
+int fuse_setattr_backing(struct fuse_bpf_args *fa,
+		struct dentry *dentry, struct iattr *attr, struct file *file);
+void *fuse_setattr_finalize(struct fuse_bpf_args *fa,
+		struct dentry *dentry, struct iattr *attr, struct file *file);
+
+int fuse_statfs_initialize(struct fuse_bpf_args *fa, struct fuse_statfs_out *fso,
+		struct dentry *dentry, struct kstatfs *buf);
+int fuse_statfs_backing(struct fuse_bpf_args *fa,
+		struct dentry *dentry, struct kstatfs *buf);
+void *fuse_statfs_finalize(struct fuse_bpf_args *fa,
+		struct dentry *dentry, struct kstatfs *buf);
+
+int fuse_get_link_initialize(struct fuse_bpf_args *fa, struct fuse_dummy_io *dummy,
+		struct inode *inode, struct dentry *dentry,
+		struct delayed_call *callback, const char **out);
+int fuse_get_link_backing(struct fuse_bpf_args *fa,
+		struct inode *inode, struct dentry *dentry,
+		struct delayed_call *callback, const char **out);
+void *fuse_get_link_finalize(struct fuse_bpf_args *fa,
+		struct inode *inode, struct dentry *dentry,
+		struct delayed_call *callback, const char **out);
+
+int fuse_symlink_initialize(
+		struct fuse_bpf_args *fa, struct fuse_dummy_io *unused,
+		struct inode *dir, struct dentry *entry, const char *link, int len);
+int fuse_symlink_backing(
+		struct fuse_bpf_args *fa,
+		struct inode *dir, struct dentry *entry, const char *link, int len);
+void *fuse_symlink_finalize(
+		struct fuse_bpf_args *fa,
+		struct inode *dir, struct dentry *entry, const char *link, int len);
+
+struct fuse_read_io {
+	struct fuse_read_in fri;
+	struct fuse_read_out fro;
+};
+
+int fuse_readdir_initialize(struct fuse_bpf_args *fa, struct fuse_read_io *frio,
+			    struct file *file, struct dir_context *ctx,
+			    bool *force_again, bool *allow_force, bool is_continued);
+int fuse_readdir_backing(struct fuse_bpf_args *fa,
+			 struct file *file, struct dir_context *ctx,
+			 bool *force_again, bool *allow_force, bool is_continued);
+void *fuse_readdir_finalize(struct fuse_bpf_args *fa,
+			    struct file *file, struct dir_context *ctx,
+			    bool *force_again, bool *allow_force, bool is_continued);
+
+int fuse_access_initialize(struct fuse_bpf_args *fa, struct fuse_access_in *fai,
+			   struct inode *inode, int mask);
+int fuse_access_backing(struct fuse_bpf_args *fa, struct inode *inode, int mask);
+void *fuse_access_finalize(struct fuse_bpf_args *fa, struct inode *inode, int mask);
+
+/*
+ * FUSE caches dentries and attributes with separate timeout.  The
+ * time in jiffies until the dentry/attributes are valid is stored in
+ * dentry->d_fsdata and fuse_inode->i_time respectively.
+ */
+
+/*
+ * Calculate the time in jiffies until a dentry/attributes are valid
+ */
+static inline u64 time_to_jiffies(u64 sec, u32 nsec)
+{
+	if (sec || nsec) {
+		struct timespec64 ts = {
+			sec,
+			min_t(u32, nsec, NSEC_PER_SEC - 1)
+		};
+
+		return get_jiffies_64() + timespec64_to_jiffies(&ts);
+	} else
+		return 0;
+}
+
+static inline u64 attr_timeout(struct fuse_attr_out *o)
+{
+	return time_to_jiffies(o->attr_valid, o->attr_valid_nsec);
+}
+
+static inline bool update_mtime(unsigned int ivalid, bool trust_local_mtime)
+{
+	/* Always update if mtime is explicitly set  */
+	if (ivalid & ATTR_MTIME_SET)
+		return true;
+
+	/* Or if kernel i_mtime is the official one */
+	if (trust_local_mtime)
+		return true;
+
+	/* If it's an open(O_TRUNC) or an ftruncate(), don't update */
+	if ((ivalid & ATTR_SIZE) && (ivalid & (ATTR_OPEN | ATTR_FILE)))
+		return false;
+
+	/* In all other cases update */
+	return true;
+}
+
+void fuse_fillattr(struct inode *inode, struct fuse_attr *attr,
+			  struct kstat *stat);
+
+static inline void iattr_to_fattr(struct fuse_conn *fc, struct iattr *iattr,
+			   struct fuse_setattr_in *arg, bool trust_local_cmtime)
+{
+	unsigned int ivalid = iattr->ia_valid;
+
+	if (ivalid & ATTR_MODE)
+		arg->valid |= FATTR_MODE,   arg->mode = iattr->ia_mode;
+	if (ivalid & ATTR_UID)
+		arg->valid |= FATTR_UID,    arg->uid = from_kuid(fc->user_ns, iattr->ia_uid);
+	if (ivalid & ATTR_GID)
+		arg->valid |= FATTR_GID,    arg->gid = from_kgid(fc->user_ns, iattr->ia_gid);
+	if (ivalid & ATTR_SIZE)
+		arg->valid |= FATTR_SIZE,   arg->size = iattr->ia_size;
+	if (ivalid & ATTR_ATIME) {
+		arg->valid |= FATTR_ATIME;
+		arg->atime = iattr->ia_atime.tv_sec;
+		arg->atimensec = iattr->ia_atime.tv_nsec;
+		if (!(ivalid & ATTR_ATIME_SET))
+			arg->valid |= FATTR_ATIME_NOW;
+	}
+	if ((ivalid & ATTR_MTIME) && update_mtime(ivalid, trust_local_cmtime)) {
+		arg->valid |= FATTR_MTIME;
+		arg->mtime = iattr->ia_mtime.tv_sec;
+		arg->mtimensec = iattr->ia_mtime.tv_nsec;
+		if (!(ivalid & ATTR_MTIME_SET) && !trust_local_cmtime)
+			arg->valid |= FATTR_MTIME_NOW;
+	}
+	if ((ivalid & ATTR_CTIME) && trust_local_cmtime) {
+		arg->valid |= FATTR_CTIME;
+		arg->ctime = iattr->ia_ctime.tv_sec;
+		arg->ctimensec = iattr->ia_ctime.tv_nsec;
+	}
+}
+
+static inline int finalize_attr(struct inode *inode, struct fuse_attr_out *outarg,
+				u64 attr_version, struct kstat *stat)
+{
+	int err = 0;
+
+	if (fuse_invalid_attr(&outarg->attr) ||
+	    ((inode->i_mode ^ outarg->attr.mode) & S_IFMT)) {
+		fuse_make_bad(inode);
+		err = -EIO;
+	} else {
+		fuse_change_attributes(inode, &outarg->attr,
+				       attr_timeout(outarg),
+				       attr_version);
+		if (stat)
+			fuse_fillattr(inode, &outarg->attr, stat);
+	}
+	return err;
+}
+
+static inline void convert_statfs_to_fuse(struct fuse_kstatfs *attr, struct kstatfs *stbuf)
+{
+	attr->bsize   = stbuf->f_bsize;
+	attr->frsize  = stbuf->f_frsize;
+	attr->blocks  = stbuf->f_blocks;
+	attr->bfree   = stbuf->f_bfree;
+	attr->bavail  = stbuf->f_bavail;
+	attr->files   = stbuf->f_files;
+	attr->ffree   = stbuf->f_ffree;
+	attr->namelen = stbuf->f_namelen;
+	/* fsid is left zero */
+}
+
+static inline void convert_fuse_statfs(struct kstatfs *stbuf, struct fuse_kstatfs *attr)
+{
+	stbuf->f_type    = FUSE_SUPER_MAGIC;
+	stbuf->f_bsize   = attr->bsize;
+	stbuf->f_frsize  = attr->frsize;
+	stbuf->f_blocks  = attr->blocks;
+	stbuf->f_bfree   = attr->bfree;
+	stbuf->f_bavail  = attr->bavail;
+	stbuf->f_files   = attr->files;
+	stbuf->f_ffree   = attr->ffree;
+	stbuf->f_namelen = attr->namelen;
+	/* fsid is left zero */
+}
+
+#ifdef CONFIG_FUSE_BPF
+struct fuse_err_ret {
+	void *result;
+	bool ret;
+};
+
+int __init fuse_bpf_init(void);
+void __exit fuse_bpf_cleanup(void);
+
+ssize_t fuse_bpf_simple_request(struct fuse_mount *fm, struct fuse_bpf_args *args);
+
+static inline int fuse_bpf_run(struct bpf_prog *prog, struct fuse_bpf_args *fba)
+{
+	int ret;
+
+	migrate_disable();
+	ret = bpf_prog_run(prog, fba);
+	migrate_enable();
+	return ret;
+}
+
+/*
+ * expression statement to wrap the backing filter logic
+ * struct inode *inode: inode with bpf and backing inode
+ * typedef io: (typically complex) type whose components fuse_args can point to.
+ *	An instance of this type is created locally and passed to initialize
+ * void initialize(struct fuse_bpf_args *fa, io *in_out, args...): function that sets
+ *	up fa and io based on args
+ * int backing(struct fuse_bpf_args *fa, args...): function that actually performs
+ *	the backing io operation
+ * void *finalize(struct fuse_bpf_args *, args...): function that performs any final
+ *	work needed to commit the backing io
+ */
+#define fuse_bpf_backing(inode, io, initialize, backing, finalize,	\
+			 args...)					\
+({									\
+	struct fuse_err_ret fer = {0};					\
+	int ext_flags;							\
+	struct fuse_inode *fuse_inode = get_fuse_inode(inode);		\
+	struct fuse_mount *fm = get_fuse_mount(inode);			\
+	io feo = {0};							\
+	struct fuse_bpf_args fa = {0}, fa_backup = {0};			\
+	bool locked;							\
+	ssize_t res;							\
+	void *err;							\
+	int i;								\
+	bool initialized = false;					\
+									\
+	do {								\
+		if (!fuse_inode || !fuse_inode->backing_inode)		\
+			break;						\
+									\
+		err = ERR_PTR(initialize(&fa, &feo, args));		\
+		if (err) {						\
+			fer = (struct fuse_err_ret) {			\
+				err,					\
+				true,					\
+			};						\
+			break;						\
+		}							\
+		initialized = true;					\
+									\
+		fa_backup = fa;						\
+		fa.opcode |= FUSE_PREFILTER;				\
+		for (i = 0; i < fa.in_numargs; ++i)			\
+			fa.out_args[i] = (struct fuse_bpf_arg) {	\
+				.size = fa.in_args[i].size,		\
+				.value = (void *)fa.in_args[i].value,	\
+			};						\
+		fa.out_numargs = fa.in_numargs;				\
+									\
+		ext_flags = fuse_inode->bpf ?				\
+			fuse_bpf_run(fuse_inode->bpf, &fa) :		\
+			FUSE_BPF_BACKING;				\
+		if (ext_flags < 0) {					\
+			fer = (struct fuse_err_ret) {			\
+				ERR_PTR(ext_flags),			\
+				true,					\
+			};						\
+			break;						\
+		}							\
+									\
+		if (ext_flags & FUSE_BPF_USER_FILTER) {			\
+			locked = fuse_lock_inode(inode);		\
+			res = fuse_bpf_simple_request(fm, &fa);		\
+			fuse_unlock_inode(inode, locked);		\
+			if (res < 0) {					\
+				fer = (struct fuse_err_ret) {		\
+					ERR_PTR(res),			\
+					true,				\
+				};					\
+				break;					\
+			}						\
+		}							\
+									\
+		if (!(ext_flags & FUSE_BPF_BACKING))			\
+			break;						\
+									\
+		fa.opcode &= ~FUSE_PREFILTER;				\
+		for (i = 0; i < fa.in_numargs; ++i)			\
+			fa.in_args[i] = (struct fuse_bpf_in_arg) {	\
+				.size = fa.out_args[i].size,		\
+				.value = fa.out_args[i].value,		\
+			};						\
+		for (i = 0; i < fa_backup.out_numargs; ++i)		\
+			fa.out_args[i] = (struct fuse_bpf_arg) {	\
+				.size = fa_backup.out_args[i].size,	\
+				.value = fa_backup.out_args[i].value,	\
+			};						\
+		fa.out_numargs = fa_backup.out_numargs;			\
+									\
+		fer = (struct fuse_err_ret) {				\
+			ERR_PTR(backing(&fa, args)),			\
+			true,						\
+		};							\
+		if (IS_ERR(fer.result))					\
+			fa.error_in = PTR_ERR(fer.result);		\
+		if (!(ext_flags & FUSE_BPF_POST_FILTER))		\
+			break;						\
+									\
+		fa.opcode |= FUSE_POSTFILTER;				\
+		for (i = 0; i < fa.out_numargs; ++i)			\
+			fa.in_args[fa.in_numargs++] =			\
+				(struct fuse_bpf_in_arg) {		\
+					.size = fa.out_args[i].size,	\
+					.value = fa.out_args[i].value,	\
+				};					\
+		ext_flags = fuse_bpf_run(fuse_inode->bpf, &fa);		\
+		if (ext_flags < 0) {					\
+			fer = (struct fuse_err_ret) {			\
+				ERR_PTR(ext_flags),			\
+				true,					\
+			};						\
+			break;						\
+		}							\
+		if (!(ext_flags & FUSE_BPF_USER_FILTER))		\
+			break;						\
+									\
+		fa.out_args[0].size = fa_backup.out_args[0].size;	\
+		fa.out_args[1].size = fa_backup.out_args[1].size;	\
+		fa.out_numargs = fa_backup.out_numargs;			\
+		locked = fuse_lock_inode(inode);			\
+		res = fuse_bpf_simple_request(fm, &fa);			\
+		fuse_unlock_inode(inode, locked);			\
+		if (res < 0) {						\
+			fer.result = ERR_PTR(res);			\
+			break;						\
+		}							\
+	} while (false);						\
+									\
+	if (initialized && fer.ret) {					\
+		err = finalize(&fa, args);				\
+		if (err)						\
+			fer.result = err;				\
+	}								\
+									\
+	fer;								\
+})
+
+#endif /* CONFIG_FUSE_BPF */
+
 #endif /* _FS_FUSE_I_H */
diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c
index 6b3beda..1f593230 100644
--- a/fs/fuse/inode.c
+++ b/fs/fuse/inode.c
@@ -78,6 +78,10 @@ static struct inode *fuse_alloc_inode(struct super_block *sb)
 
 	fi->i_time = 0;
 	fi->inval_mask = 0;
+#ifdef CONFIG_FUSE_BPF
+	fi->backing_inode = NULL;
+	fi->bpf = NULL;
+#endif
 	fi->nodeid = 0;
 	fi->nlookup = 0;
 	fi->attr_version = 0;
@@ -120,6 +124,12 @@ static void fuse_evict_inode(struct inode *inode)
 	/* Will write inode on close/munmap and in all other dirtiers */
 	WARN_ON(inode->i_state & I_DIRTY_INODE);
 
+#ifdef CONFIG_FUSE_BPF
+	iput(fi->backing_inode);
+	if (fi->bpf)
+		bpf_prog_put(fi->bpf);
+	fi->bpf = NULL;
+#endif
 	truncate_inode_pages_final(&inode->i_data);
 	clear_inode(inode);
 	if (inode->i_sb->s_flags & SB_ACTIVE) {
@@ -162,6 +172,28 @@ static ino_t fuse_squash_ino(u64 ino64)
 	return ino;
 }
 
+static void fuse_fill_attr_from_inode(struct fuse_attr *attr,
+				      const struct inode *inode)
+{
+	*attr = (struct fuse_attr){
+		.ino		= inode->i_ino,
+		.size		= inode->i_size,
+		.blocks		= inode->i_blocks,
+		.atime		= inode->i_atime.tv_sec,
+		.mtime		= inode->i_mtime.tv_sec,
+		.ctime		= inode->i_ctime.tv_sec,
+		.atimensec	= inode->i_atime.tv_nsec,
+		.mtimensec	= inode->i_mtime.tv_nsec,
+		.ctimensec	= inode->i_ctime.tv_nsec,
+		.mode		= inode->i_mode,
+		.nlink		= inode->i_nlink,
+		.uid		= inode->i_uid.val,
+		.gid		= inode->i_gid.val,
+		.rdev		= inode->i_rdev,
+		.blksize	= 1u << inode->i_blkbits,
+	};
+}
+
 void fuse_change_attributes_common(struct inode *inode, struct fuse_attr *attr,
 				   u64 attr_valid, u32 cache_mask)
 {
@@ -329,28 +361,104 @@ static void fuse_init_inode(struct inode *inode, struct fuse_attr *attr)
 	else if (S_ISCHR(inode->i_mode) || S_ISBLK(inode->i_mode) ||
 		 S_ISFIFO(inode->i_mode) || S_ISSOCK(inode->i_mode)) {
 		fuse_init_common(inode);
-		init_special_inode(inode, inode->i_mode,
-				   new_decode_dev(attr->rdev));
+		init_special_inode(inode, inode->i_mode, attr->rdev);
 	} else
 		BUG();
 }
 
+struct fuse_inode_identifier {
+	u64 nodeid;
+	struct inode *backing_inode;
+};
+
 static int fuse_inode_eq(struct inode *inode, void *_nodeidp)
 {
-	u64 nodeid = *(u64 *) _nodeidp;
-	if (get_node_id(inode) == nodeid)
-		return 1;
-	else
-		return 0;
+	struct fuse_inode_identifier *fii =
+		(struct fuse_inode_identifier *) _nodeidp;
+	struct fuse_inode *fi = get_fuse_inode(inode);
+
+	return fii->nodeid == fi->nodeid;
+}
+
+static int fuse_inode_backing_eq(struct inode *inode, void *_nodeidp)
+{
+	struct fuse_inode_identifier *fii =
+		(struct fuse_inode_identifier *) _nodeidp;
+	struct fuse_inode *fi = get_fuse_inode(inode);
+
+	return fii->nodeid == fi->nodeid
+#ifdef CONFIG_FUSE_BPF
+		&& fii->backing_inode == fi->backing_inode
+#endif
+		;
 }
 
 static int fuse_inode_set(struct inode *inode, void *_nodeidp)
 {
-	u64 nodeid = *(u64 *) _nodeidp;
-	get_fuse_inode(inode)->nodeid = nodeid;
+	struct fuse_inode_identifier *fii =
+		(struct fuse_inode_identifier *) _nodeidp;
+	struct fuse_inode *fi = get_fuse_inode(inode);
+
+	fi->nodeid = fii->nodeid;
+
 	return 0;
 }
 
+static int fuse_inode_backing_set(struct inode *inode, void *_nodeidp)
+{
+	struct fuse_inode_identifier *fii =
+		(struct fuse_inode_identifier *) _nodeidp;
+	struct fuse_inode *fi = get_fuse_inode(inode);
+
+	fi->nodeid = fii->nodeid;
+#ifdef CONFIG_FUSE_BPF
+	fi->backing_inode = fii->backing_inode;
+	if (fi->backing_inode)
+		ihold(fi->backing_inode);
+#endif
+
+	return 0;
+}
+
+struct inode *fuse_iget_backing(struct super_block *sb, u64 nodeid,
+				struct inode *backing_inode)
+{
+	struct inode *inode;
+	struct fuse_inode *fi;
+	struct fuse_conn *fc = get_fuse_conn_super(sb);
+	struct fuse_inode_identifier fii = {
+		.nodeid = nodeid,
+		.backing_inode = backing_inode,
+	};
+	struct fuse_attr attr;
+	unsigned long hash = (unsigned long) backing_inode;
+
+	if (nodeid)
+		hash = nodeid;
+
+	fuse_fill_attr_from_inode(&attr, backing_inode);
+	inode = iget5_locked(sb, hash, fuse_inode_backing_eq,
+			     fuse_inode_backing_set, &fii);
+	if (!inode)
+		return NULL;
+
+	if ((inode->i_state & I_NEW)) {
+		inode->i_flags |= S_NOATIME;
+		if (!fc->writeback_cache)
+			inode->i_flags |= S_NOCMTIME;
+		fuse_init_common(inode);
+		unlock_new_inode(inode);
+	}
+
+	fi = get_fuse_inode(inode);
+	fuse_init_inode(inode, &attr);
+	spin_lock(&fi->lock);
+	fi->nlookup++;
+	spin_unlock(&fi->lock);
+
+	return inode;
+}
+
 struct inode *fuse_iget(struct super_block *sb, u64 nodeid,
 			int generation, struct fuse_attr *attr,
 			u64 attr_valid, u64 attr_version)
@@ -358,6 +466,9 @@ struct inode *fuse_iget(struct super_block *sb, u64 nodeid,
 	struct inode *inode;
 	struct fuse_inode *fi;
 	struct fuse_conn *fc = get_fuse_conn_super(sb);
+	struct fuse_inode_identifier fii = {
+		.nodeid = nodeid,
+	};
 
 	/*
 	 * Auto mount points get their node id from the submount root, which is
@@ -379,7 +490,7 @@ struct inode *fuse_iget(struct super_block *sb, u64 nodeid,
 	}
 
 retry:
-	inode = iget5_locked(sb, nodeid, fuse_inode_eq, fuse_inode_set, &nodeid);
+	inode = iget5_locked(sb, nodeid, fuse_inode_eq, fuse_inode_set, &fii);
 	if (!inode)
 		return NULL;
 
@@ -411,13 +522,16 @@ struct inode *fuse_ilookup(struct fuse_conn *fc, u64 nodeid,
 {
 	struct fuse_mount *fm_iter;
 	struct inode *inode;
+	struct fuse_inode_identifier fii = {
+		.nodeid = nodeid,
+	};
 
 	WARN_ON(!rwsem_is_locked(&fc->killsb));
 	list_for_each_entry(fm_iter, &fc->mounts, fc_entry) {
 		if (!fm_iter->sb)
 			continue;
 
-		inode = ilookup5(fm_iter->sb, nodeid, fuse_inode_eq, &nodeid);
+		inode = ilookup5(fm_iter->sb, nodeid, fuse_inode_eq, &fii);
 		if (inode) {
 			if (fm)
 				*fm = fm_iter;
@@ -504,20 +618,6 @@ static void fuse_send_destroy(struct fuse_mount *fm)
 	}
 }
 
-static void convert_fuse_statfs(struct kstatfs *stbuf, struct fuse_kstatfs *attr)
-{
-	stbuf->f_type    = FUSE_SUPER_MAGIC;
-	stbuf->f_bsize   = attr->bsize;
-	stbuf->f_frsize  = attr->frsize;
-	stbuf->f_blocks  = attr->blocks;
-	stbuf->f_bfree   = attr->bfree;
-	stbuf->f_bavail  = attr->bavail;
-	stbuf->f_files   = attr->files;
-	stbuf->f_ffree   = attr->ffree;
-	stbuf->f_namelen = attr->namelen;
-	/* fsid is left zero */
-}
-
 static int fuse_statfs(struct dentry *dentry, struct kstatfs *buf)
 {
 	struct super_block *sb = dentry->d_sb;
@@ -525,12 +625,24 @@ static int fuse_statfs(struct dentry *dentry, struct kstatfs *buf)
 	FUSE_ARGS(args);
 	struct fuse_statfs_out outarg;
 	int err;
+#ifdef CONFIG_FUSE_BPF
+	struct fuse_err_ret fer;
+#endif
 
 	if (!fuse_allow_current_process(fm->fc)) {
 		buf->f_type = FUSE_SUPER_MAGIC;
 		return 0;
 	}
 
+#ifdef CONFIG_FUSE_BPF
+	fer = fuse_bpf_backing(dentry->d_inode, struct fuse_statfs_out,
+			       fuse_statfs_initialize, fuse_statfs_backing,
+			       fuse_statfs_finalize,
+			       dentry, buf);
+	if (fer.ret)
+		return PTR_ERR(fer.result);
+#endif
+
 	memset(&outarg, 0, sizeof(outarg));
 	args.in_numargs = 0;
 	args.opcode = FUSE_STATFS;
@@ -647,6 +759,9 @@ enum {
 	OPT_ALLOW_OTHER,
 	OPT_MAX_READ,
 	OPT_BLKSIZE,
+	OPT_ROOT_BPF,
+	OPT_ROOT_DIR,
+	OPT_NO_DAEMON,
 	OPT_ERR
 };
 
@@ -661,6 +776,9 @@ static const struct fs_parameter_spec fuse_fs_parameters[] = {
 	fsparam_u32	("max_read",		OPT_MAX_READ),
 	fsparam_u32	("blksize",		OPT_BLKSIZE),
 	fsparam_string	("subtype",		OPT_SUBTYPE),
+	fsparam_u32	("root_bpf",		OPT_ROOT_BPF),
+	fsparam_u32	("root_dir",		OPT_ROOT_DIR),
+	fsparam_flag	("no_daemon",		OPT_NO_DAEMON),
 	{}
 };
 
@@ -744,6 +862,26 @@ static int fuse_parse_param(struct fs_context *fsc, struct fs_parameter *param)
 		ctx->blksize = result.uint_32;
 		break;
 
+	case OPT_ROOT_BPF:
+		ctx->root_bpf = bpf_prog_get_type_dev(result.uint_32,
+						BPF_PROG_TYPE_FUSE, false);
+		if (IS_ERR(ctx->root_bpf)) {
+			ctx->root_bpf = NULL;
+			return invalfc(fsc, "Unable to open bpf program");
+		}
+		break;
+
+	case OPT_ROOT_DIR:
+		ctx->root_dir = fget(result.uint_32);
+		if (!ctx->root_dir)
+			return invalfc(fsc, "Unable to open root directory");
+		break;
+
+	case OPT_NO_DAEMON:
+		ctx->no_daemon = true;
+		ctx->fd_present = true;
+		break;
+
 	default:
 		return -EINVAL;
 	}
@@ -756,6 +894,10 @@ static void fuse_free_fsc(struct fs_context *fsc)
 	struct fuse_fs_context *ctx = fsc->fs_private;
 
 	if (ctx) {
+		if (ctx->root_dir)
+			fput(ctx->root_dir);
+		if (ctx->root_bpf)
+			bpf_prog_put(ctx->root_bpf);
 		kfree(ctx->subtype);
 		kfree(ctx);
 	}
@@ -825,6 +967,7 @@ void fuse_conn_init(struct fuse_conn *fc, struct fuse_mount *fm,
 	memset(fc, 0, sizeof(*fc));
 	spin_lock_init(&fc->lock);
 	spin_lock_init(&fc->bg_lock);
+	spin_lock_init(&fc->passthrough_req_lock);
 	init_rwsem(&fc->killsb);
 	refcount_set(&fc->count, 1);
 	atomic_set(&fc->dev_count, 1);
@@ -833,6 +976,7 @@ void fuse_conn_init(struct fuse_conn *fc, struct fuse_mount *fm,
 	INIT_LIST_HEAD(&fc->bg_queue);
 	INIT_LIST_HEAD(&fc->entry);
 	INIT_LIST_HEAD(&fc->devices);
+	idr_init(&fc->passthrough_req);
 	atomic_set(&fc->num_waiting, 0);
 	fc->max_background = FUSE_DEFAULT_MAX_BACKGROUND;
 	fc->congestion_threshold = FUSE_DEFAULT_CONGESTION_THRESHOLD;
@@ -883,15 +1027,34 @@ struct fuse_conn *fuse_conn_get(struct fuse_conn *fc)
 }
 EXPORT_SYMBOL_GPL(fuse_conn_get);
 
-static struct inode *fuse_get_root_inode(struct super_block *sb, unsigned mode)
+static struct inode *fuse_get_root_inode(struct super_block *sb,
+					 unsigned int mode,
+					 struct bpf_prog *root_bpf,
+					 struct file *backing_fd)
 {
 	struct fuse_attr attr;
-	memset(&attr, 0, sizeof(attr));
+	struct inode *inode;
 
+	memset(&attr, 0, sizeof(attr));
 	attr.mode = mode;
 	attr.ino = FUSE_ROOT_ID;
 	attr.nlink = 1;
-	return fuse_iget(sb, 1, 0, &attr, 0, 0);
+	inode = fuse_iget(sb, 1, 0, &attr, 0, 0);
+	if (!inode)
+		return NULL;
+
+#ifdef CONFIG_FUSE_BPF
+	get_fuse_inode(inode)->bpf = root_bpf;
+	if (root_bpf)
+		bpf_prog_inc(root_bpf);
+
+	if (backing_fd) {
+		get_fuse_inode(inode)->backing_inode = backing_fd->f_inode;
+		ihold(backing_fd->f_inode);
+	}
+#endif
+
+	return inode;
 }
 
 struct fuse_inode_handle {
@@ -906,11 +1069,14 @@ static struct dentry *fuse_get_dentry(struct super_block *sb,
 	struct inode *inode;
 	struct dentry *entry;
 	int err = -ESTALE;
+	struct fuse_inode_identifier fii = {
+		.nodeid = handle->nodeid,
+	};
 
 	if (handle->nodeid == 0)
 		goto out_err;
 
-	inode = ilookup5(sb, handle->nodeid, fuse_inode_eq, &handle->nodeid);
+	inode = ilookup5(sb, handle->nodeid, fuse_inode_eq, &fii);
 	if (!inode) {
 		struct fuse_entry_out outarg;
 		const struct qstr name = QSTR_INIT(".", 1);
@@ -919,7 +1085,7 @@ static struct dentry *fuse_get_dentry(struct super_block *sb,
 			goto out_err;
 
 		err = fuse_lookup_name(sb, handle->nodeid, &name, &outarg,
-				       &inode);
+				       NULL, &inode);
 		if (err && err != -ENOENT)
 			goto out_err;
 		if (err || !inode) {
@@ -1013,13 +1179,14 @@ static struct dentry *fuse_get_parent(struct dentry *child)
 	struct inode *inode;
 	struct dentry *parent;
 	struct fuse_entry_out outarg;
+	const struct qstr name = QSTR_INIT("..", 2);
 	int err;
 
 	if (!fc->export_support)
 		return ERR_PTR(-ESTALE);
 
 	err = fuse_lookup_name(child_inode->i_sb, get_node_id(child_inode),
-			       &dotdot_name, &outarg, &inode);
+			       &name, &outarg, NULL, &inode);
 	if (err) {
 		if (err == -ENOENT)
 			return ERR_PTR(-ESTALE);
@@ -1197,6 +1364,12 @@ static void process_init_reply(struct fuse_mount *fm, struct fuse_args *args,
 				fc->handle_killpriv_v2 = 1;
 				fm->sb->s_flags |= SB_NOSEC;
 			}
+			if (flags & FUSE_PASSTHROUGH) {
+				fc->passthrough = 1;
+				/* Prevent further stacking */
+				fm->sb->s_stack_depth =
+					FILESYSTEM_MAX_STACK_DEPTH;
+			}
 			if (flags & FUSE_SETXATTR_EXT)
 				fc->setxattr_ext = 1;
 			if (flags & FUSE_SECURITY_CTX)
@@ -1256,6 +1429,8 @@ void fuse_send_init(struct fuse_mount *fm)
 	if (fm->fc->auto_submounts)
 		flags |= FUSE_SUBMOUNTS;
 
+	flags |= FUSE_PASSTHROUGH;
+
 	ia->in.flags = flags;
 	ia->in.flags2 = flags >> 32;
 
@@ -1274,14 +1449,26 @@ void fuse_send_init(struct fuse_mount *fm)
 	ia->args.nocreds = true;
 	ia->args.end = process_init_reply;
 
-	if (fuse_simple_background(fm, &ia->args, GFP_KERNEL) != 0)
+	if (unlikely(fm->fc->no_daemon) || fuse_simple_background(fm, &ia->args, GFP_KERNEL) != 0)
 		process_init_reply(fm, &ia->args, -ENOTCONN);
 }
 EXPORT_SYMBOL_GPL(fuse_send_init);
 
+static int free_fuse_passthrough(int id, void *p, void *data)
+{
+	struct fuse_passthrough *passthrough = (struct fuse_passthrough *)p;
+
+	fuse_passthrough_release(passthrough);
+	kfree(p);
+
+	return 0;
+}
+
 void fuse_free_conn(struct fuse_conn *fc)
 {
 	WARN_ON(!list_empty(&fc->devices));
+	idr_for_each(&fc->passthrough_req, free_fuse_passthrough, NULL);
+	idr_destroy(&fc->passthrough_req);
 	kfree_rcu(fc, rcu);
 }
 EXPORT_SYMBOL_GPL(fuse_free_conn);
@@ -1386,28 +1573,6 @@ void fuse_dev_free(struct fuse_dev *fud)
 }
 EXPORT_SYMBOL_GPL(fuse_dev_free);
 
-static void fuse_fill_attr_from_inode(struct fuse_attr *attr,
-				      const struct fuse_inode *fi)
-{
-	*attr = (struct fuse_attr){
-		.ino		= fi->inode.i_ino,
-		.size		= fi->inode.i_size,
-		.blocks		= fi->inode.i_blocks,
-		.atime		= fi->inode.i_atime.tv_sec,
-		.mtime		= fi->inode.i_mtime.tv_sec,
-		.ctime		= fi->inode.i_ctime.tv_sec,
-		.atimensec	= fi->inode.i_atime.tv_nsec,
-		.mtimensec	= fi->inode.i_mtime.tv_nsec,
-		.ctimensec	= fi->inode.i_ctime.tv_nsec,
-		.mode		= fi->inode.i_mode,
-		.nlink		= fi->inode.i_nlink,
-		.uid		= fi->inode.i_uid.val,
-		.gid		= fi->inode.i_gid.val,
-		.rdev		= fi->inode.i_rdev,
-		.blksize	= 1u << fi->inode.i_blkbits,
-	};
-}
-
 static void fuse_sb_defaults(struct super_block *sb)
 {
 	sb->s_magic = FUSE_SUPER_MAGIC;
@@ -1451,7 +1616,7 @@ static int fuse_fill_super_submount(struct super_block *sb,
 	if (parent_sb->s_subtype && !sb->s_subtype)
 		return -ENOMEM;
 
-	fuse_fill_attr_from_inode(&root_attr, parent_fi);
+	fuse_fill_attr_from_inode(&root_attr, &parent_fi->inode);
 	root = fuse_iget(sb, parent_fi->nodeid, 0, &root_attr, 0, 0);
 	/*
 	 * This inode is just a duplicate, so it is not looked up and
@@ -1578,13 +1743,16 @@ int fuse_fill_super_common(struct super_block *sb, struct fuse_fs_context *ctx)
 	fc->destroy = ctx->destroy;
 	fc->no_control = ctx->no_control;
 	fc->no_force_umount = ctx->no_force_umount;
+	fc->no_daemon = ctx->no_daemon;
 
 	err = -ENOMEM;
-	root = fuse_get_root_inode(sb, ctx->rootmode);
+	root = fuse_get_root_inode(sb, ctx->rootmode, ctx->root_bpf,
+				   ctx->root_dir);
 	sb->s_d_op = &fuse_root_dentry_operations;
 	root_dentry = d_make_root(root);
 	if (!root_dentry)
 		goto err_dev_free;
+	fuse_init_dentry_root(root_dentry, ctx->root_dir);
 	/* Root dentry doesn't have .d_revalidate */
 	sb->s_d_op = &fuse_dentry_operations;
 
@@ -1623,18 +1791,20 @@ static int fuse_fill_super(struct super_block *sb, struct fs_context *fsc)
 	struct fuse_fs_context *ctx = fsc->fs_private;
 	int err;
 
-	if (!ctx->file || !ctx->rootmode_present ||
-	    !ctx->user_id_present || !ctx->group_id_present)
-		return -EINVAL;
+	if (!ctx->no_daemon) {
+		if (!ctx->file || !ctx->rootmode_present ||
+		    !ctx->user_id_present || !ctx->group_id_present)
+			return -EINVAL;
 
-	/*
-	 * Require mount to happen from the same user namespace which
-	 * opened /dev/fuse to prevent potential attacks.
-	 */
-	if ((ctx->file->f_op != &fuse_dev_operations) ||
-	    (ctx->file->f_cred->user_ns != sb->s_user_ns))
-		return -EINVAL;
-	ctx->fudptr = &ctx->file->private_data;
+		/*
+		 * Require mount to happen from the same user namespace which
+		 * opened /dev/fuse to prevent potential attacks.
+		 */
+		if ((ctx->file->f_op != &fuse_dev_operations) ||
+		    (ctx->file->f_cred->user_ns != sb->s_user_ns))
+			return -EINVAL;
+		ctx->fudptr = &ctx->file->private_data;
+	}
 
 	err = fuse_fill_super_common(sb, ctx);
 	if (err)
@@ -1915,6 +2085,57 @@ static void fuse_fs_cleanup(void)
 
 static struct kobject *fuse_kobj;
 
+static ssize_t fuse_bpf_show(struct kobject *kobj,
+				       struct kobj_attribute *attr, char *buff)
+{
+	return sysfs_emit(buff, "supported\n");
+}
+
+static struct kobj_attribute fuse_bpf_attr =
+		__ATTR_RO(fuse_bpf);
+
+static struct attribute *bpf_features[] = {
+	&fuse_bpf_attr.attr,
+	NULL,
+};
+
+static const struct attribute_group bpf_features_group = {
+	.name = "features",
+	.attrs = bpf_features,
+};
+
+/*
+ * TODO Remove this once fuse-bpf is upstreamed
+ *
+ * bpf_prog_type_fuse exports the bpf_prog_type_fuse 'constant', which cannot be
+ * constant until the code is upstreamed
+ */
+static ssize_t bpf_prog_type_fuse_show(struct kobject *kobj,
+				       struct kobj_attribute *attr, char *buff)
+{
+	return sysfs_emit(buff, "%d\n", BPF_PROG_TYPE_FUSE);
+}
+
+static struct kobj_attribute bpf_prog_type_fuse_attr =
+		__ATTR_RO(bpf_prog_type_fuse);
+
+static struct attribute *bpf_attributes[] = {
+	&bpf_prog_type_fuse_attr.attr,
+	NULL,
+};
+
+static const struct attribute_group bpf_attr_group = {
+	.attrs = bpf_attributes,
+};
+
+static const struct attribute_group *attribute_groups[] = {
+	&bpf_features_group,
+	&bpf_attr_group,
+	NULL
+};
+
+/* TODO remove to here */
+
 static int fuse_sysfs_init(void)
 {
 	int err;
@@ -1929,8 +2150,15 @@ static int fuse_sysfs_init(void)
 	if (err)
 		goto out_fuse_unregister;
 
+	/* TODO Remove when BPF_PROG_TYPE_FUSE is upstreamed */
+	err = sysfs_create_groups(fuse_kobj, attribute_groups);
+	if (err)
+		goto out_fuse_remove_mount_point;
+
 	return 0;
 
+ out_fuse_remove_mount_point:
+	sysfs_remove_mount_point(fuse_kobj, "connections");
  out_fuse_unregister:
 	kobject_put(fuse_kobj);
  out_err:
@@ -1939,6 +2167,7 @@ static int fuse_sysfs_init(void)
 
 static void fuse_sysfs_cleanup(void)
 {
+	sysfs_remove_groups(fuse_kobj, attribute_groups);
 	sysfs_remove_mount_point(fuse_kobj, "connections");
 	kobject_put(fuse_kobj);
 }
@@ -1967,11 +2196,21 @@ static int __init fuse_init(void)
 	if (res)
 		goto err_sysfs_cleanup;
 
+#ifdef CONFIG_FUSE_BPF
+	res = fuse_bpf_init();
+	if (res)
+		goto err_ctl_cleanup;
+#endif
+
 	sanitize_global_limit(&max_user_bgreq);
 	sanitize_global_limit(&max_user_congthresh);
 
 	return 0;
 
+#ifdef CONFIG_FUSE_BPF
+ err_ctl_cleanup:
+	fuse_ctl_cleanup();
+#endif
  err_sysfs_cleanup:
 	fuse_sysfs_cleanup();
  err_dev_cleanup:
@@ -1989,6 +2228,9 @@ static void __exit fuse_exit(void)
 	fuse_ctl_cleanup();
 	fuse_sysfs_cleanup();
 	fuse_fs_cleanup();
+#ifdef CONFIG_FUSE_BPF
+	fuse_bpf_cleanup();
+#endif
 	fuse_dev_cleanup();
 }
 
diff --git a/fs/fuse/passthrough.c b/fs/fuse/passthrough.c
new file mode 100644
index 0000000..c0ae306
--- /dev/null
+++ b/fs/fuse/passthrough.c
@@ -0,0 +1,294 @@
+// SPDX-License-Identifier: GPL-2.0
+
+#include "fuse_i.h"
+
+#include <linux/file.h>
+#include <linux/fuse.h>
+#include <linux/idr.h>
+#include <linux/uio.h>
+
+#define PASSTHROUGH_IOCB_MASK                                                  \
+	(IOCB_APPEND | IOCB_DSYNC | IOCB_HIPRI | IOCB_NOWAIT | IOCB_SYNC)
+
+struct fuse_aio_req {
+	struct kiocb iocb;
+	struct kiocb *iocb_fuse;
+};
+
+static void fuse_file_accessed(struct file *dst_file, struct file *src_file)
+{
+	struct inode *dst_inode;
+	struct inode *src_inode;
+
+	if (dst_file->f_flags & O_NOATIME)
+		return;
+
+	dst_inode = file_inode(dst_file);
+	src_inode = file_inode(src_file);
+
+	if ((!timespec64_equal(&dst_inode->i_mtime, &src_inode->i_mtime) ||
+	     !timespec64_equal(&dst_inode->i_ctime, &src_inode->i_ctime))) {
+		dst_inode->i_mtime = src_inode->i_mtime;
+		dst_inode->i_ctime = src_inode->i_ctime;
+	}
+
+	touch_atime(&dst_file->f_path);
+}
+
+void fuse_copyattr(struct file *dst_file, struct file *src_file)
+{
+	struct inode *dst = file_inode(dst_file);
+	struct inode *src = file_inode(src_file);
+
+	dst->i_atime = src->i_atime;
+	dst->i_mtime = src->i_mtime;
+	dst->i_ctime = src->i_ctime;
+	i_size_write(dst, i_size_read(src));
+}
+
+static void fuse_aio_cleanup_handler(struct fuse_aio_req *aio_req)
+{
+	struct kiocb *iocb = &aio_req->iocb;
+	struct kiocb *iocb_fuse = aio_req->iocb_fuse;
+
+	if (iocb->ki_flags & IOCB_WRITE) {
+		__sb_writers_acquired(file_inode(iocb->ki_filp)->i_sb,
+				      SB_FREEZE_WRITE);
+		file_end_write(iocb->ki_filp);
+		fuse_copyattr(iocb_fuse->ki_filp, iocb->ki_filp);
+	}
+
+	iocb_fuse->ki_pos = iocb->ki_pos;
+	kfree(aio_req);
+}
+
+static void fuse_aio_rw_complete(struct kiocb *iocb, long res)
+{
+	struct fuse_aio_req *aio_req =
+		container_of(iocb, struct fuse_aio_req, iocb);
+	struct kiocb *iocb_fuse = aio_req->iocb_fuse;
+
+	fuse_aio_cleanup_handler(aio_req);
+	iocb_fuse->ki_complete(iocb_fuse, res);
+}
+
+ssize_t fuse_passthrough_read_iter(struct kiocb *iocb_fuse,
+				   struct iov_iter *iter)
+{
+	ssize_t ret;
+	const struct cred *old_cred;
+	struct file *fuse_filp = iocb_fuse->ki_filp;
+	struct fuse_file *ff = fuse_filp->private_data;
+	struct file *passthrough_filp = ff->passthrough.filp;
+
+	if (!iov_iter_count(iter))
+		return 0;
+
+	old_cred = override_creds(ff->passthrough.cred);
+	if (is_sync_kiocb(iocb_fuse)) {
+		ret = vfs_iter_read(passthrough_filp, iter, &iocb_fuse->ki_pos,
+				    iocb_to_rw_flags(iocb_fuse->ki_flags,
+						     PASSTHROUGH_IOCB_MASK));
+	} else {
+		struct fuse_aio_req *aio_req;
+
+		aio_req = kmalloc(sizeof(struct fuse_aio_req), GFP_KERNEL);
+		if (!aio_req) {
+			ret = -ENOMEM;
+			goto out;
+		}
+
+		aio_req->iocb_fuse = iocb_fuse;
+		kiocb_clone(&aio_req->iocb, iocb_fuse, passthrough_filp);
+		aio_req->iocb.ki_complete = fuse_aio_rw_complete;
+		ret = call_read_iter(passthrough_filp, &aio_req->iocb, iter);
+		if (ret != -EIOCBQUEUED)
+			fuse_aio_cleanup_handler(aio_req);
+	}
+out:
+	revert_creds(old_cred);
+
+	fuse_file_accessed(fuse_filp, passthrough_filp);
+
+	return ret;
+}
+
+ssize_t fuse_passthrough_write_iter(struct kiocb *iocb_fuse,
+				    struct iov_iter *iter)
+{
+	ssize_t ret;
+	const struct cred *old_cred;
+	struct file *fuse_filp = iocb_fuse->ki_filp;
+	struct fuse_file *ff = fuse_filp->private_data;
+	struct inode *fuse_inode = file_inode(fuse_filp);
+	struct file *passthrough_filp = ff->passthrough.filp;
+	struct inode *passthrough_inode = file_inode(passthrough_filp);
+
+	if (!iov_iter_count(iter))
+		return 0;
+
+	inode_lock(fuse_inode);
+
+	fuse_copyattr(fuse_filp, passthrough_filp);
+
+	old_cred = override_creds(ff->passthrough.cred);
+	if (is_sync_kiocb(iocb_fuse)) {
+		file_start_write(passthrough_filp);
+		ret = vfs_iter_write(passthrough_filp, iter, &iocb_fuse->ki_pos,
+				     iocb_to_rw_flags(iocb_fuse->ki_flags,
+						      PASSTHROUGH_IOCB_MASK));
+		file_end_write(passthrough_filp);
+		if (ret > 0)
+			fuse_copyattr(fuse_filp, passthrough_filp);
+	} else {
+		struct fuse_aio_req *aio_req;
+
+		aio_req = kmalloc(sizeof(struct fuse_aio_req), GFP_KERNEL);
+		if (!aio_req) {
+			ret = -ENOMEM;
+			goto out;
+		}
+
+		file_start_write(passthrough_filp);
+		__sb_writers_release(passthrough_inode->i_sb, SB_FREEZE_WRITE);
+
+		aio_req->iocb_fuse = iocb_fuse;
+		kiocb_clone(&aio_req->iocb, iocb_fuse, passthrough_filp);
+		aio_req->iocb.ki_complete = fuse_aio_rw_complete;
+		ret = call_write_iter(passthrough_filp, &aio_req->iocb, iter);
+		if (ret != -EIOCBQUEUED)
+			fuse_aio_cleanup_handler(aio_req);
+	}
+out:
+	revert_creds(old_cred);
+	inode_unlock(fuse_inode);
+
+	return ret;
+}
+
+ssize_t fuse_passthrough_mmap(struct file *file, struct vm_area_struct *vma)
+{
+	int ret;
+	const struct cred *old_cred;
+	struct fuse_file *ff = file->private_data;
+	struct file *passthrough_filp = ff->passthrough.filp;
+
+	if (!passthrough_filp->f_op->mmap)
+		return -ENODEV;
+
+	if (WARN_ON(file != vma->vm_file))
+		return -EIO;
+
+	vma->vm_file = get_file(passthrough_filp);
+
+	old_cred = override_creds(ff->passthrough.cred);
+	ret = call_mmap(vma->vm_file, vma);
+	revert_creds(old_cred);
+
+	if (ret)
+		fput(passthrough_filp);
+	else
+		fput(file);
+
+	fuse_file_accessed(file, passthrough_filp);
+
+	return ret;
+}
+
+int fuse_passthrough_open(struct fuse_dev *fud, u32 lower_fd)
+{
+	int res;
+	struct file *passthrough_filp;
+	struct fuse_conn *fc = fud->fc;
+	struct inode *passthrough_inode;
+	struct super_block *passthrough_sb;
+	struct fuse_passthrough *passthrough;
+
+	if (!fc->passthrough)
+		return -EPERM;
+
+	passthrough_filp = fget(lower_fd);
+	if (!passthrough_filp) {
+		pr_err("FUSE: invalid file descriptor for passthrough.\n");
+		return -EBADF;
+	}
+
+	if (!passthrough_filp->f_op->read_iter ||
+	    !passthrough_filp->f_op->write_iter) {
+		pr_err("FUSE: passthrough file misses file operations.\n");
+		res = -EBADF;
+		goto err_free_file;
+	}
+
+	passthrough_inode = file_inode(passthrough_filp);
+	passthrough_sb = passthrough_inode->i_sb;
+	if (passthrough_sb->s_stack_depth >= FILESYSTEM_MAX_STACK_DEPTH) {
+		pr_err("FUSE: fs stacking depth exceeded for passthrough\n");
+		res = -EINVAL;
+		goto err_free_file;
+	}
+
+	passthrough = kmalloc(sizeof(struct fuse_passthrough), GFP_KERNEL);
+	if (!passthrough) {
+		res = -ENOMEM;
+		goto err_free_file;
+	}
+
+	passthrough->filp = passthrough_filp;
+	passthrough->cred = prepare_creds();
+
+	idr_preload(GFP_KERNEL);
+	spin_lock(&fc->passthrough_req_lock);
+	res = idr_alloc(&fc->passthrough_req, passthrough, 1, 0, GFP_ATOMIC);
+	spin_unlock(&fc->passthrough_req_lock);
+	idr_preload_end();
+
+	if (res > 0)
+		return res;
+
+	fuse_passthrough_release(passthrough);
+	kfree(passthrough);
+
+err_free_file:
+	fput(passthrough_filp);
+
+	return res;
+}
+
+int fuse_passthrough_setup(struct fuse_conn *fc, struct fuse_file *ff,
+			   struct fuse_open_out *openarg)
+{
+	struct fuse_passthrough *passthrough;
+	int passthrough_fh = openarg->passthrough_fh;
+
+	if (!fc->passthrough)
+		return -EPERM;
+
+	/* Default case, passthrough is not requested */
+	if (passthrough_fh <= 0)
+		return -EINVAL;
+
+	spin_lock(&fc->passthrough_req_lock);
+	passthrough = idr_remove(&fc->passthrough_req, passthrough_fh);
+	spin_unlock(&fc->passthrough_req_lock);
+
+	if (!passthrough)
+		return -EINVAL;
+
+	ff->passthrough = *passthrough;
+	kfree(passthrough);
+
+	return 0;
+}
+
+void fuse_passthrough_release(struct fuse_passthrough *passthrough)
+{
+	if (passthrough->filp) {
+		fput(passthrough->filp);
+		passthrough->filp = NULL;
+	}
+	if (passthrough->cred) {
+		put_cred(passthrough->cred);
+		passthrough->cred = NULL;
+	}
+}
diff --git a/fs/fuse/readdir.c b/fs/fuse/readdir.c
index e8deaac..4d97cdd 100644
--- a/fs/fuse/readdir.c
+++ b/fs/fuse/readdir.c
@@ -20,6 +20,8 @@ static bool fuse_use_readdirplus(struct inode *dir, struct dir_context *ctx)
 
 	if (!fc->do_readdirplus)
 		return false;
+	if (fi->nodeid == 0)
+		return false;
 	if (!fc->readdirplus_auto)
 		return true;
 	if (test_and_clear_bit(FUSE_I_ADVISE_RDPLUS, &fi->state))
@@ -579,6 +581,26 @@ int fuse_readdir(struct file *file, struct dir_context *ctx)
 	struct inode *inode = file_inode(file);
 	int err;
 
+#ifdef CONFIG_FUSE_BPF
+	struct fuse_err_ret fer;
+	bool allow_force;
+	bool force_again = false;
+	bool is_continued = false;
+
+again:
+	fer = fuse_bpf_backing(inode, struct fuse_read_io,
+			       fuse_readdir_initialize, fuse_readdir_backing,
+			       fuse_readdir_finalize,
+			       file, ctx, &force_again, &allow_force, is_continued);
+	if (force_again && !IS_ERR(fer.result)) {
+		is_continued = true;
+		goto again;
+	}
+
+	if (fer.ret)
+		return PTR_ERR(fer.result);
+#endif
+
 	if (fuse_is_bad(inode))
 		return -EIO;
 
diff --git a/fs/fuse/virtio_fs.c b/fs/fuse/virtio_fs.c
index 4d8d4f1..23a42d8 100644
--- a/fs/fuse/virtio_fs.c
+++ b/fs/fuse/virtio_fs.c
@@ -970,7 +970,7 @@ static struct virtio_driver virtio_fs_driver = {
 #endif
 };
 
-static void virtio_fs_wake_forget_and_unlock(struct fuse_iqueue *fiq)
+static void virtio_fs_wake_forget_and_unlock(struct fuse_iqueue *fiq, bool sync)
 __releases(fiq->lock)
 {
 	struct fuse_forget_link *link;
@@ -1005,7 +1005,8 @@ __releases(fiq->lock)
 	kfree(link);
 }
 
-static void virtio_fs_wake_interrupt_and_unlock(struct fuse_iqueue *fiq)
+static void virtio_fs_wake_interrupt_and_unlock(struct fuse_iqueue *fiq,
+						bool sync)
 __releases(fiq->lock)
 {
 	/*
@@ -1220,7 +1221,8 @@ static int virtio_fs_enqueue_req(struct virtio_fs_vq *fsvq,
 	return ret;
 }
 
-static void virtio_fs_wake_pending_and_unlock(struct fuse_iqueue *fiq)
+static void virtio_fs_wake_pending_and_unlock(struct fuse_iqueue *fiq,
+					      bool sync)
 __releases(fiq->lock)
 {
 	unsigned int queue_id = VQ_REQUEST; /* TODO multiqueue */
diff --git a/fs/fuse/xattr.c b/fs/fuse/xattr.c
index 0d3e717..3029d1e 100644
--- a/fs/fuse/xattr.c
+++ b/fs/fuse/xattr.c
@@ -115,6 +115,17 @@ ssize_t fuse_listxattr(struct dentry *entry, char *list, size_t size)
 	struct fuse_getxattr_out outarg;
 	ssize_t ret;
 
+#ifdef CONFIG_FUSE_BPF
+	struct fuse_err_ret fer;
+
+	fer = fuse_bpf_backing(inode, struct fuse_getxattr_io,
+			       fuse_listxattr_initialize,
+			       fuse_listxattr_backing, fuse_listxattr_finalize,
+			       entry, list, size);
+	if (fer.ret)
+		return PTR_ERR(fer.result);
+#endif
+
 	if (fuse_is_bad(inode))
 		return -EIO;
 
@@ -182,6 +193,17 @@ static int fuse_xattr_get(const struct xattr_handler *handler,
 			 struct dentry *dentry, struct inode *inode,
 			 const char *name, void *value, size_t size)
 {
+#ifdef CONFIG_FUSE_BPF
+	struct fuse_err_ret fer;
+
+	fer = fuse_bpf_backing(inode, struct fuse_getxattr_io,
+			       fuse_getxattr_initialize, fuse_getxattr_backing,
+			       fuse_getxattr_finalize,
+			       dentry, name, value, size);
+	if (fer.ret)
+		return PTR_ERR(fer.result);
+#endif
+
 	if (fuse_is_bad(inode))
 		return -EIO;
 
@@ -194,6 +216,24 @@ static int fuse_xattr_set(const struct xattr_handler *handler,
 			  const char *name, const void *value, size_t size,
 			  int flags)
 {
+#ifdef CONFIG_FUSE_BPF
+	struct fuse_err_ret fer;
+
+	if (value)
+		fer = fuse_bpf_backing(inode, struct fuse_setxattr_in,
+			       fuse_setxattr_initialize, fuse_setxattr_backing,
+			       fuse_setxattr_finalize, dentry, name, value,
+			       size, flags);
+	else
+		fer = fuse_bpf_backing(inode, struct fuse_dummy_io,
+				       fuse_removexattr_initialize,
+				       fuse_removexattr_backing,
+				       fuse_removexattr_finalize,
+				       dentry, name);
+	if (fer.ret)
+		return PTR_ERR(fer.result);
+#endif
+
 	if (fuse_is_bad(inode))
 		return -EIO;
 
diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
index 8eea709..9692de5 100644
--- a/fs/hugetlbfs/inode.c
+++ b/fs/hugetlbfs/inode.c
@@ -132,7 +132,7 @@ static int hugetlbfs_file_mmap(struct file *file, struct vm_area_struct *vma)
 	 * way when do_mmap unwinds (may be important on powerpc
 	 * and ia64).
 	 */
-	vma->vm_flags |= VM_HUGETLB | VM_DONTEXPAND;
+	vm_flags_set(vma, VM_HUGETLB | VM_DONTEXPAND);
 	vma->vm_ops = &hugetlb_vm_ops;
 
 	ret = seal_check_future_write(info->seals, vma);
@@ -813,7 +813,7 @@ static long hugetlbfs_fallocate(struct file *file, int mode, loff_t offset,
 	 * as input to create an allocation policy.
 	 */
 	vma_init(&pseudo_vma, mm);
-	pseudo_vma.vm_flags = (VM_HUGETLB | VM_MAYSHARE | VM_SHARED);
+	vm_flags_init(&pseudo_vma, VM_HUGETLB | VM_MAYSHARE | VM_SHARED);
 	pseudo_vma.vm_file = file;
 
 	for (index = start; index < end; index++) {
diff --git a/fs/incfs/Kconfig b/fs/incfs/Kconfig
new file mode 100644
index 0000000..5f15000
--- /dev/null
+++ b/fs/incfs/Kconfig
@@ -0,0 +1,13 @@
+config INCREMENTAL_FS
+	tristate "Incremental file system support"
+	depends on BLOCK
+	select DECOMPRESS_LZ4
+	select DECOMPRESS_ZSTD
+	select CRYPTO_SHA256
+	help
+	  Incremental FS is a read-only virtual file system that facilitates execution
+	  of programs while their binaries are still being lazily downloaded over the
+	  network, USB or pigeon post.
+
+	  To compile this file system support as a module, choose M here: the
+	  module will be called incrementalfs.
diff --git a/fs/incfs/Makefile b/fs/incfs/Makefile
new file mode 100644
index 0000000..05795d1
--- /dev/null
+++ b/fs/incfs/Makefile
@@ -0,0 +1,13 @@
+# SPDX-License-Identifier: GPL-2.0
+obj-$(CONFIG_INCREMENTAL_FS)	+= incrementalfs.o
+
+incrementalfs-y := \
+	data_mgmt.o \
+	format.o \
+	integrity.o \
+	main.o \
+	pseudo_files.o \
+	sysfs.o \
+	vfs.o
+
+incrementalfs-$(CONFIG_FS_VERITY) += verity.o
diff --git a/fs/incfs/data_mgmt.c b/fs/incfs/data_mgmt.c
new file mode 100644
index 0000000..09959fa
--- /dev/null
+++ b/fs/incfs/data_mgmt.c
@@ -0,0 +1,1889 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright 2019 Google LLC
+ */
+#include <linux/crc32.h>
+#include <linux/file.h>
+#include <linux/fsverity.h>
+#include <linux/gfp.h>
+#include <linux/kobject.h>
+#include <linux/ktime.h>
+#include <linux/lz4.h>
+#include <linux/mm.h>
+#include <linux/namei.h>
+#include <linux/pagemap.h>
+#include <linux/slab.h>
+#include <linux/types.h>
+#include <linux/workqueue.h>
+
+#include "data_mgmt.h"
+#include "format.h"
+#include "integrity.h"
+#include "sysfs.h"
+#include "verity.h"
+
+static int incfs_scan_metadata_chain(struct data_file *df);
+
+static void log_wake_up_all(struct work_struct *work)
+{
+	struct delayed_work *dw = container_of(work, struct delayed_work, work);
+	struct read_log *rl = container_of(dw, struct read_log, ml_wakeup_work);
+	wake_up_all(&rl->ml_notif_wq);
+}
+
+static void zstd_free_workspace(struct work_struct *work)
+{
+	struct delayed_work *dw = container_of(work, struct delayed_work, work);
+	struct mount_info *mi =
+		container_of(dw, struct mount_info, mi_zstd_cleanup_work);
+
+	mutex_lock(&mi->mi_zstd_workspace_mutex);
+	kvfree(mi->mi_zstd_workspace);
+	mi->mi_zstd_workspace = NULL;
+	mi->mi_zstd_stream = NULL;
+	mutex_unlock(&mi->mi_zstd_workspace_mutex);
+}
+
+struct mount_info *incfs_alloc_mount_info(struct super_block *sb,
+					  struct mount_options *options,
+					  struct path *backing_dir_path)
+{
+	struct mount_info *mi = NULL;
+	int error = 0;
+	struct incfs_sysfs_node *node;
+
+	mi = kzalloc(sizeof(*mi), GFP_NOFS);
+	if (!mi)
+		return ERR_PTR(-ENOMEM);
+
+	mi->mi_sb = sb;
+	mi->mi_backing_dir_path = *backing_dir_path;
+	mi->mi_owner = get_current_cred();
+	path_get(&mi->mi_backing_dir_path);
+	mutex_init(&mi->mi_dir_struct_mutex);
+	init_waitqueue_head(&mi->mi_pending_reads_notif_wq);
+	init_waitqueue_head(&mi->mi_log.ml_notif_wq);
+	init_waitqueue_head(&mi->mi_blocks_written_notif_wq);
+	atomic_set(&mi->mi_blocks_written, 0);
+	INIT_DELAYED_WORK(&mi->mi_log.ml_wakeup_work, log_wake_up_all);
+	spin_lock_init(&mi->mi_log.rl_lock);
+	spin_lock_init(&mi->pending_read_lock);
+	INIT_LIST_HEAD(&mi->mi_reads_list_head);
+	spin_lock_init(&mi->mi_per_uid_read_timeouts_lock);
+	mutex_init(&mi->mi_zstd_workspace_mutex);
+	INIT_DELAYED_WORK(&mi->mi_zstd_cleanup_work, zstd_free_workspace);
+	mutex_init(&mi->mi_le_mutex);
+
+	node = incfs_add_sysfs_node(options->sysfs_name, mi);
+	if (IS_ERR(node)) {
+		error = PTR_ERR(node);
+		goto err;
+	}
+	mi->mi_sysfs_node = node;
+
+	error = incfs_realloc_mount_info(mi, options);
+	if (error)
+		goto err;
+
+	return mi;
+
+err:
+	incfs_free_mount_info(mi);
+	return ERR_PTR(error);
+}
+
+int incfs_realloc_mount_info(struct mount_info *mi,
+			     struct mount_options *options)
+{
+	void *new_buffer = NULL;
+	void *old_buffer;
+	size_t new_buffer_size = 0;
+
+	if (options->read_log_pages != mi->mi_options.read_log_pages) {
+		struct read_log_state log_state;
+		/*
+		 * Even though having two buffers allocated at once isn't
+		 * usually good, allocating a multipage buffer under a spinlock
+		 * is even worse, so let's optimize for the shorter lock
+		 * duration. It's not end of the world if we fail to increase
+		 * the buffer size anyway.
+		 */
+		if (options->read_log_pages > 0) {
+			new_buffer_size = PAGE_SIZE * options->read_log_pages;
+			new_buffer = kzalloc(new_buffer_size, GFP_NOFS);
+			if (!new_buffer)
+				return -ENOMEM;
+		}
+
+		spin_lock(&mi->mi_log.rl_lock);
+		old_buffer = mi->mi_log.rl_ring_buf;
+		mi->mi_log.rl_ring_buf = new_buffer;
+		mi->mi_log.rl_size = new_buffer_size;
+		log_state = (struct read_log_state){
+			.generation_id = mi->mi_log.rl_head.generation_id + 1,
+		};
+		mi->mi_log.rl_head = log_state;
+		mi->mi_log.rl_tail = log_state;
+		spin_unlock(&mi->mi_log.rl_lock);
+
+		kfree(old_buffer);
+	}
+
+	if (options->sysfs_name && !mi->mi_sysfs_node)
+		mi->mi_sysfs_node = incfs_add_sysfs_node(options->sysfs_name,
+							 mi);
+	else if (!options->sysfs_name && mi->mi_sysfs_node) {
+		incfs_free_sysfs_node(mi->mi_sysfs_node);
+		mi->mi_sysfs_node = NULL;
+	} else if (options->sysfs_name &&
+		strcmp(options->sysfs_name,
+		       kobject_name(&mi->mi_sysfs_node->isn_sysfs_node))) {
+		incfs_free_sysfs_node(mi->mi_sysfs_node);
+		mi->mi_sysfs_node = incfs_add_sysfs_node(options->sysfs_name,
+							 mi);
+	}
+
+	if (IS_ERR(mi->mi_sysfs_node)) {
+		int err = PTR_ERR(mi->mi_sysfs_node);
+
+		mi->mi_sysfs_node = NULL;
+		return err;
+	}
+
+	mi->mi_options = *options;
+	return 0;
+}
+
+void incfs_free_mount_info(struct mount_info *mi)
+{
+	int i;
+	if (!mi)
+		return;
+
+	flush_delayed_work(&mi->mi_log.ml_wakeup_work);
+	flush_delayed_work(&mi->mi_zstd_cleanup_work);
+
+	dput(mi->mi_index_dir);
+	dput(mi->mi_incomplete_dir);
+	path_put(&mi->mi_backing_dir_path);
+	mutex_destroy(&mi->mi_dir_struct_mutex);
+	mutex_destroy(&mi->mi_zstd_workspace_mutex);
+	put_cred(mi->mi_owner);
+	kfree(mi->mi_log.rl_ring_buf);
+	for (i = 0; i < ARRAY_SIZE(mi->pseudo_file_xattr); ++i)
+		kfree(mi->pseudo_file_xattr[i].data);
+	kfree(mi->mi_per_uid_read_timeouts);
+	incfs_free_sysfs_node(mi->mi_sysfs_node);
+	kfree(mi);
+}
+
+static void data_file_segment_init(struct data_file_segment *segment)
+{
+	init_waitqueue_head(&segment->new_data_arrival_wq);
+	init_rwsem(&segment->rwsem);
+	INIT_LIST_HEAD(&segment->reads_list_head);
+}
+
+char *file_id_to_str(incfs_uuid_t id)
+{
+	char *result = kmalloc(1 + sizeof(id.bytes) * 2, GFP_NOFS);
+	char *end;
+
+	if (!result)
+		return NULL;
+
+	end = bin2hex(result, id.bytes, sizeof(id.bytes));
+	*end = 0;
+	return result;
+}
+
+struct dentry *incfs_lookup_dentry(struct dentry *parent, const char *name)
+{
+	struct inode *inode;
+	struct dentry *result = NULL;
+
+	if (!parent)
+		return ERR_PTR(-EFAULT);
+
+	inode = d_inode(parent);
+	inode_lock_nested(inode, I_MUTEX_PARENT);
+	result = lookup_one_len(name, parent, strlen(name));
+	inode_unlock(inode);
+
+	if (IS_ERR(result))
+		pr_warn("%s err:%ld\n", __func__, PTR_ERR(result));
+
+	return result;
+}
+
+static struct data_file *handle_mapped_file(struct mount_info *mi,
+					    struct data_file *df)
+{
+	char *file_id_str;
+	struct dentry *index_file_dentry;
+	struct path path;
+	struct file *bf;
+	struct data_file *result = NULL;
+	const struct cred *old_cred;
+
+	file_id_str = file_id_to_str(df->df_id);
+	if (!file_id_str)
+		return ERR_PTR(-ENOENT);
+
+	index_file_dentry = incfs_lookup_dentry(mi->mi_index_dir,
+						file_id_str);
+	kfree(file_id_str);
+	if (!index_file_dentry)
+		return ERR_PTR(-ENOENT);
+	if (IS_ERR(index_file_dentry))
+		return ERR_CAST(index_file_dentry);
+	if (!d_really_is_positive(index_file_dentry)) {
+		result = ERR_PTR(-ENOENT);
+		goto out;
+	}
+
+	path = (struct path) {
+		.mnt = mi->mi_backing_dir_path.mnt,
+		.dentry = index_file_dentry
+	};
+
+	old_cred = override_creds(mi->mi_owner);
+	bf = dentry_open(&path, O_RDWR | O_NOATIME | O_LARGEFILE,
+			 current_cred());
+	revert_creds(old_cred);
+
+	if (IS_ERR(bf)) {
+		result = ERR_CAST(bf);
+		goto out;
+	}
+
+	result = incfs_open_data_file(mi, bf);
+	fput(bf);
+	if (IS_ERR(result))
+		goto out;
+
+	result->df_mapped_offset = df->df_metadata_off;
+
+out:
+	dput(index_file_dentry);
+	return result;
+}
+
+struct data_file *incfs_open_data_file(struct mount_info *mi, struct file *bf)
+{
+	struct data_file *df = NULL;
+	struct backing_file_context *bfc = NULL;
+	int md_records;
+	u64 size;
+	int error = 0;
+	int i;
+
+	if (!bf || !mi)
+		return ERR_PTR(-EFAULT);
+
+	if (!S_ISREG(bf->f_inode->i_mode))
+		return ERR_PTR(-EBADF);
+
+	bfc = incfs_alloc_bfc(mi, bf);
+	if (IS_ERR(bfc))
+		return ERR_CAST(bfc);
+
+	df = kzalloc(sizeof(*df), GFP_NOFS);
+	if (!df) {
+		error = -ENOMEM;
+		goto out;
+	}
+
+	mutex_init(&df->df_enable_verity);
+
+	df->df_backing_file_context = bfc;
+	df->df_mount_info = mi;
+	for (i = 0; i < ARRAY_SIZE(df->df_segments); i++)
+		data_file_segment_init(&df->df_segments[i]);
+
+	error = incfs_read_file_header(bfc, &df->df_metadata_off, &df->df_id,
+				       &size, &df->df_header_flags);
+
+	if (error)
+		goto out;
+
+	df->df_size = size;
+	if (size > 0)
+		df->df_data_block_count = get_blocks_count_for_size(size);
+
+	if (df->df_header_flags & INCFS_FILE_MAPPED) {
+		struct data_file *mapped_df = handle_mapped_file(mi, df);
+
+		incfs_free_data_file(df);
+		return mapped_df;
+	}
+
+	md_records = incfs_scan_metadata_chain(df);
+	if (md_records < 0)
+		error = md_records;
+
+out:
+	if (error) {
+		incfs_free_bfc(bfc);
+		if (df)
+			df->df_backing_file_context = NULL;
+		incfs_free_data_file(df);
+		return ERR_PTR(error);
+	}
+	return df;
+}
+
+void incfs_free_data_file(struct data_file *df)
+{
+	u32 data_blocks_written, hash_blocks_written;
+
+	if (!df)
+		return;
+
+	data_blocks_written = atomic_read(&df->df_data_blocks_written);
+	hash_blocks_written = atomic_read(&df->df_hash_blocks_written);
+
+	if (data_blocks_written != df->df_initial_data_blocks_written ||
+	    hash_blocks_written != df->df_initial_hash_blocks_written) {
+		struct backing_file_context *bfc = df->df_backing_file_context;
+		int error = -1;
+
+		if (bfc && !mutex_lock_interruptible(&bfc->bc_mutex)) {
+			error = incfs_write_status_to_backing_file(
+						df->df_backing_file_context,
+						df->df_status_offset,
+						data_blocks_written,
+						hash_blocks_written);
+			mutex_unlock(&bfc->bc_mutex);
+		}
+
+		if (error)
+			/* Nothing can be done, just warn */
+			pr_warn("incfs: failed to write status to backing file\n");
+	}
+
+	incfs_free_mtree(df->df_hash_tree);
+	incfs_free_bfc(df->df_backing_file_context);
+	kfree(df->df_signature);
+	kfree(df->df_verity_file_digest.data);
+	kfree(df->df_verity_signature);
+	mutex_destroy(&df->df_enable_verity);
+	kfree(df);
+}
+
+int make_inode_ready_for_data_ops(struct mount_info *mi,
+				struct inode *inode,
+				struct file *backing_file)
+{
+	struct inode_info *node = get_incfs_node(inode);
+	struct data_file *df = NULL;
+	int err = 0;
+
+	inode_lock(inode);
+	if (S_ISREG(inode->i_mode)) {
+		if (!node->n_file) {
+			df = incfs_open_data_file(mi, backing_file);
+
+			if (IS_ERR(df))
+				err = PTR_ERR(df);
+			else
+				node->n_file = df;
+		}
+	} else
+		err = -EBADF;
+	inode_unlock(inode);
+	return err;
+}
+
+struct dir_file *incfs_open_dir_file(struct mount_info *mi, struct file *bf)
+{
+	struct dir_file *dir = NULL;
+
+	if (!S_ISDIR(bf->f_inode->i_mode))
+		return ERR_PTR(-EBADF);
+
+	dir = kzalloc(sizeof(*dir), GFP_NOFS);
+	if (!dir)
+		return ERR_PTR(-ENOMEM);
+
+	dir->backing_dir = get_file(bf);
+	dir->mount_info = mi;
+	return dir;
+}
+
+void incfs_free_dir_file(struct dir_file *dir)
+{
+	if (!dir)
+		return;
+	if (dir->backing_dir)
+		fput(dir->backing_dir);
+	kfree(dir);
+}
+
+static ssize_t zstd_decompress_safe(struct mount_info *mi,
+				    struct mem_range src, struct mem_range dst)
+{
+	ssize_t result;
+	ZSTD_inBuffer inbuf = {.src = src.data,	.size = src.len};
+	ZSTD_outBuffer outbuf = {.dst = dst.data, .size = dst.len};
+
+	result = mutex_lock_interruptible(&mi->mi_zstd_workspace_mutex);
+	if (result)
+		return result;
+
+	if (!mi->mi_zstd_stream) {
+		unsigned int workspace_size = zstd_dstream_workspace_bound(
+						INCFS_DATA_FILE_BLOCK_SIZE);
+		void *workspace = kvmalloc(workspace_size, GFP_NOFS);
+		ZSTD_DStream *stream;
+
+		if (!workspace) {
+			result = -ENOMEM;
+			goto out;
+		}
+
+		stream = zstd_init_dstream(INCFS_DATA_FILE_BLOCK_SIZE, workspace,
+				  workspace_size);
+		if (!stream) {
+			kvfree(workspace);
+			result = -EIO;
+			goto out;
+		}
+
+		mi->mi_zstd_workspace = workspace;
+		mi->mi_zstd_stream = stream;
+	}
+
+	result = zstd_decompress_stream(mi->mi_zstd_stream, &outbuf, &inbuf) ?
+		-EBADMSG : outbuf.pos;
+
+	mod_delayed_work(system_wq, &mi->mi_zstd_cleanup_work,
+			 msecs_to_jiffies(5000));
+
+out:
+	mutex_unlock(&mi->mi_zstd_workspace_mutex);
+	return result;
+}
+
+static ssize_t decompress(struct mount_info *mi,
+			  struct mem_range src, struct mem_range dst, int alg)
+{
+	int result;
+
+	switch (alg) {
+	case INCFS_BLOCK_COMPRESSED_LZ4:
+		result = LZ4_decompress_safe(src.data, dst.data, src.len,
+					     dst.len);
+		if (result < 0)
+			return -EBADMSG;
+		return result;
+
+	case INCFS_BLOCK_COMPRESSED_ZSTD:
+		return zstd_decompress_safe(mi, src, dst);
+
+	default:
+		WARN_ON(true);
+		return -EOPNOTSUPP;
+	}
+}
+
+static void log_read_one_record(struct read_log *rl, struct read_log_state *rs)
+{
+	union log_record *record =
+		(union log_record *)((u8 *)rl->rl_ring_buf + rs->next_offset);
+	size_t record_size;
+
+	switch (record->full_record.type) {
+	case FULL:
+		rs->base_record = record->full_record;
+		record_size = sizeof(record->full_record);
+		break;
+
+	case SAME_FILE:
+		rs->base_record.block_index =
+			record->same_file.block_index;
+		rs->base_record.absolute_ts_us +=
+			record->same_file.relative_ts_us;
+		rs->base_record.uid = record->same_file.uid;
+		record_size = sizeof(record->same_file);
+		break;
+
+	case SAME_FILE_CLOSE_BLOCK:
+		rs->base_record.block_index +=
+			record->same_file_close_block.block_index_delta;
+		rs->base_record.absolute_ts_us +=
+			record->same_file_close_block.relative_ts_us;
+		record_size = sizeof(record->same_file_close_block);
+		break;
+
+	case SAME_FILE_CLOSE_BLOCK_SHORT:
+		rs->base_record.block_index +=
+			record->same_file_close_block_short.block_index_delta;
+		rs->base_record.absolute_ts_us +=
+		   record->same_file_close_block_short.relative_ts_tens_us * 10;
+		record_size = sizeof(record->same_file_close_block_short);
+		break;
+
+	case SAME_FILE_NEXT_BLOCK:
+		++rs->base_record.block_index;
+		rs->base_record.absolute_ts_us +=
+			record->same_file_next_block.relative_ts_us;
+		record_size = sizeof(record->same_file_next_block);
+		break;
+
+	case SAME_FILE_NEXT_BLOCK_SHORT:
+		++rs->base_record.block_index;
+		rs->base_record.absolute_ts_us +=
+		    record->same_file_next_block_short.relative_ts_tens_us * 10;
+		record_size = sizeof(record->same_file_next_block_short);
+		break;
+	}
+
+	rs->next_offset += record_size;
+	if (rs->next_offset > rl->rl_size - sizeof(*record)) {
+		rs->next_offset = 0;
+		++rs->current_pass_no;
+	}
+	++rs->current_record_no;
+}
+
+static void log_block_read(struct mount_info *mi, incfs_uuid_t *id,
+			   int block_index)
+{
+	struct read_log *log = &mi->mi_log;
+	struct read_log_state *head, *tail;
+	s64 now_us;
+	s64 relative_us;
+	union log_record record;
+	size_t record_size;
+	uid_t uid = current_uid().val;
+	int block_delta;
+	bool same_file, same_uid;
+	bool next_block, close_block, very_close_block;
+	bool close_time, very_close_time, very_very_close_time;
+
+	/*
+	 * This may read the old value, but it's OK to delay the logging start
+	 * right after the configuration update.
+	 */
+	if (READ_ONCE(log->rl_size) == 0)
+		return;
+
+	now_us = ktime_to_us(ktime_get());
+
+	spin_lock(&log->rl_lock);
+	if (log->rl_size == 0) {
+		spin_unlock(&log->rl_lock);
+		return;
+	}
+
+	head = &log->rl_head;
+	tail = &log->rl_tail;
+	relative_us = now_us - head->base_record.absolute_ts_us;
+
+	same_file = !memcmp(id, &head->base_record.file_id,
+			    sizeof(incfs_uuid_t));
+	same_uid = uid == head->base_record.uid;
+
+	block_delta = block_index - head->base_record.block_index;
+	next_block = block_delta == 1;
+	very_close_block = block_delta >= S8_MIN && block_delta <= S8_MAX;
+	close_block = block_delta >= S16_MIN && block_delta <= S16_MAX;
+
+	very_very_close_time = relative_us < (1 << 5) * 10;
+	very_close_time = relative_us < (1 << 13);
+	close_time = relative_us < (1 << 16);
+
+	if (same_file && same_uid && next_block && very_very_close_time) {
+		record.same_file_next_block_short =
+			(struct same_file_next_block_short){
+				.type = SAME_FILE_NEXT_BLOCK_SHORT,
+				.relative_ts_tens_us = div_s64(relative_us, 10),
+			};
+		record_size = sizeof(struct same_file_next_block_short);
+	} else if (same_file && same_uid && next_block && very_close_time) {
+		record.same_file_next_block = (struct same_file_next_block){
+			.type = SAME_FILE_NEXT_BLOCK,
+			.relative_ts_us = relative_us,
+		};
+		record_size = sizeof(struct same_file_next_block);
+	} else if (same_file && same_uid && very_close_block &&
+		   very_very_close_time) {
+		record.same_file_close_block_short =
+			(struct same_file_close_block_short){
+				.type = SAME_FILE_CLOSE_BLOCK_SHORT,
+				.relative_ts_tens_us = div_s64(relative_us, 10),
+				.block_index_delta = block_delta,
+			};
+		record_size = sizeof(struct same_file_close_block_short);
+	} else if (same_file && same_uid && close_block && very_close_time) {
+		record.same_file_close_block = (struct same_file_close_block){
+				.type = SAME_FILE_CLOSE_BLOCK,
+				.relative_ts_us = relative_us,
+				.block_index_delta = block_delta,
+			};
+		record_size = sizeof(struct same_file_close_block);
+	} else if (same_file && close_time) {
+		record.same_file = (struct same_file){
+			.type = SAME_FILE,
+			.block_index = block_index,
+			.relative_ts_us = relative_us,
+			.uid = uid,
+		};
+		record_size = sizeof(struct same_file);
+	} else {
+		record.full_record = (struct full_record){
+			.type = FULL,
+			.block_index = block_index,
+			.file_id = *id,
+			.absolute_ts_us = now_us,
+			.uid = uid,
+		};
+		head->base_record.file_id = *id;
+		record_size = sizeof(struct full_record);
+	}
+
+	head->base_record.block_index = block_index;
+	head->base_record.absolute_ts_us = now_us;
+
+	/* Advance tail beyond area we are going to overwrite */
+	while (tail->current_pass_no < head->current_pass_no &&
+	       tail->next_offset < head->next_offset + record_size)
+		log_read_one_record(log, tail);
+
+	memcpy(((u8 *)log->rl_ring_buf) + head->next_offset, &record,
+	       record_size);
+	head->next_offset += record_size;
+	if (head->next_offset > log->rl_size - sizeof(record)) {
+		head->next_offset = 0;
+		++head->current_pass_no;
+	}
+	++head->current_record_no;
+
+	spin_unlock(&log->rl_lock);
+	schedule_delayed_work(&log->ml_wakeup_work, msecs_to_jiffies(16));
+}
+
+static int validate_hash_tree(struct backing_file_context *bfc, struct file *f,
+			      int block_index, struct mem_range data, u8 *buf)
+{
+	struct data_file *df = get_incfs_data_file(f);
+	u8 stored_digest[INCFS_MAX_HASH_SIZE] = {};
+	u8 calculated_digest[INCFS_MAX_HASH_SIZE] = {};
+	struct mtree *tree = NULL;
+	struct incfs_df_signature *sig = NULL;
+	int digest_size;
+	int hash_block_index = block_index;
+	int lvl;
+	int res;
+	loff_t hash_block_offset[INCFS_MAX_MTREE_LEVELS];
+	size_t hash_offset_in_block[INCFS_MAX_MTREE_LEVELS];
+	int hash_per_block;
+	pgoff_t file_pages;
+
+	/*
+	 * Memory barrier to make sure tree is fully present if added via enable
+	 * verity
+	 */
+	tree = smp_load_acquire(&df->df_hash_tree);
+	sig = df->df_signature;
+	if (!tree || !sig)
+		return 0;
+
+	digest_size = tree->alg->digest_size;
+	hash_per_block = INCFS_DATA_FILE_BLOCK_SIZE / digest_size;
+	for (lvl = 0; lvl < tree->depth; lvl++) {
+		loff_t lvl_off = tree->hash_level_suboffset[lvl];
+
+		hash_block_offset[lvl] =
+			lvl_off + round_down(hash_block_index * digest_size,
+					     INCFS_DATA_FILE_BLOCK_SIZE);
+		hash_offset_in_block[lvl] = hash_block_index * digest_size %
+					    INCFS_DATA_FILE_BLOCK_SIZE;
+		hash_block_index /= hash_per_block;
+	}
+
+	memcpy(stored_digest, tree->root_hash, digest_size);
+
+	file_pages = DIV_ROUND_UP(df->df_size, INCFS_DATA_FILE_BLOCK_SIZE);
+	for (lvl = tree->depth - 1; lvl >= 0; lvl--) {
+		pgoff_t hash_page =
+			file_pages +
+			hash_block_offset[lvl] / INCFS_DATA_FILE_BLOCK_SIZE;
+		struct page *page = find_get_page_flags(
+			f->f_inode->i_mapping, hash_page, FGP_ACCESSED);
+
+		if (page && PageChecked(page)) {
+			u8 *addr = kmap_atomic(page);
+
+			memcpy(stored_digest, addr + hash_offset_in_block[lvl],
+			       digest_size);
+
+			kunmap_atomic(addr);
+			put_page(page);
+			continue;
+		}
+
+		if (page)
+			put_page(page);
+
+		res = incfs_kread(bfc, buf, INCFS_DATA_FILE_BLOCK_SIZE,
+				  hash_block_offset[lvl] + sig->hash_offset);
+		if (res < 0)
+			return res;
+		if (res != INCFS_DATA_FILE_BLOCK_SIZE)
+			return -EIO;
+		res = incfs_calc_digest(tree->alg,
+					range(buf, INCFS_DATA_FILE_BLOCK_SIZE),
+					range(calculated_digest, digest_size));
+		if (res)
+			return res;
+
+		if (memcmp(stored_digest, calculated_digest, digest_size)) {
+			int i;
+			bool zero = true;
+
+			pr_warn("incfs: Hash mismatch lvl:%d blk:%d\n",
+				lvl, block_index);
+			for (i = 0; i < digest_size; i++)
+				if (stored_digest[i]) {
+					zero = false;
+					break;
+				}
+
+			if (zero)
+				pr_debug("Note saved_digest all zero - did you forget to load the hashes?\n");
+			return -EBADMSG;
+		}
+
+		memcpy(stored_digest, buf + hash_offset_in_block[lvl],
+		       digest_size);
+
+		page = grab_cache_page(f->f_inode->i_mapping, hash_page);
+		if (page) {
+			u8 *addr = kmap_atomic(page);
+
+			memcpy(addr, buf, INCFS_DATA_FILE_BLOCK_SIZE);
+			kunmap_atomic(addr);
+			SetPageChecked(page);
+			SetPageUptodate(page);
+			unlock_page(page);
+			put_page(page);
+		}
+	}
+
+	res = incfs_calc_digest(tree->alg, data,
+				range(calculated_digest, digest_size));
+	if (res)
+		return res;
+
+	if (memcmp(stored_digest, calculated_digest, digest_size)) {
+		pr_debug("Leaf hash mismatch blk:%d\n", block_index);
+		return -EBADMSG;
+	}
+
+	return 0;
+}
+
+static struct data_file_segment *get_file_segment(struct data_file *df,
+						  int block_index)
+{
+	int seg_idx = block_index % ARRAY_SIZE(df->df_segments);
+
+	return &df->df_segments[seg_idx];
+}
+
+static bool is_data_block_present(struct data_file_block *block)
+{
+	return (block->db_backing_file_data_offset != 0) &&
+	       (block->db_stored_size != 0);
+}
+
+static void convert_data_file_block(struct incfs_blockmap_entry *bme,
+				    struct data_file_block *res_block)
+{
+	u16 flags = le16_to_cpu(bme->me_flags);
+
+	res_block->db_backing_file_data_offset =
+		le16_to_cpu(bme->me_data_offset_hi);
+	res_block->db_backing_file_data_offset <<= 32;
+	res_block->db_backing_file_data_offset |=
+		le32_to_cpu(bme->me_data_offset_lo);
+	res_block->db_stored_size = le16_to_cpu(bme->me_data_size);
+	res_block->db_comp_alg = flags & INCFS_BLOCK_COMPRESSED_MASK;
+}
+
+static int get_data_file_block(struct data_file *df, int index,
+			       struct data_file_block *res_block)
+{
+	struct incfs_blockmap_entry bme = {};
+	struct backing_file_context *bfc = NULL;
+	loff_t blockmap_off = 0;
+	int error = 0;
+
+	if (!df || !res_block)
+		return -EFAULT;
+
+	blockmap_off = df->df_blockmap_off;
+	bfc = df->df_backing_file_context;
+
+	if (index < 0 || blockmap_off == 0)
+		return -EINVAL;
+
+	error = incfs_read_blockmap_entry(bfc, index, blockmap_off, &bme);
+	if (error)
+		return error;
+
+	convert_data_file_block(&bme, res_block);
+	return 0;
+}
+
+static int check_room_for_one_range(u32 size, u32 size_out)
+{
+	if (size_out + sizeof(struct incfs_filled_range) > size)
+		return -ERANGE;
+	return 0;
+}
+
+static int copy_one_range(struct incfs_filled_range *range, void __user *buffer,
+			  u32 size, u32 *size_out)
+{
+	int error = check_room_for_one_range(size, *size_out);
+	if (error)
+		return error;
+
+	if (copy_to_user(((char __user *)buffer) + *size_out, range,
+				sizeof(*range)))
+		return -EFAULT;
+
+	*size_out += sizeof(*range);
+	return 0;
+}
+
+#define READ_BLOCKMAP_ENTRIES 512
+int incfs_get_filled_blocks(struct data_file *df,
+			    struct incfs_file_data *fd,
+			    struct incfs_get_filled_blocks_args *arg)
+{
+	int error = 0;
+	bool in_range = false;
+	struct incfs_filled_range range;
+	void __user *buffer = u64_to_user_ptr(arg->range_buffer);
+	u32 size = arg->range_buffer_size;
+	u32 end_index =
+		arg->end_index ? arg->end_index : df->df_total_block_count;
+	u32 *size_out = &arg->range_buffer_size_out;
+	int i = READ_BLOCKMAP_ENTRIES - 1;
+	int entries_read = 0;
+	struct incfs_blockmap_entry *bme;
+	int data_blocks_filled = 0;
+	int hash_blocks_filled = 0;
+
+	*size_out = 0;
+	if (end_index > df->df_total_block_count)
+		end_index = df->df_total_block_count;
+	arg->total_blocks_out = df->df_total_block_count;
+	arg->data_blocks_out = df->df_data_block_count;
+
+	if (atomic_read(&df->df_data_blocks_written) ==
+	    df->df_data_block_count) {
+		pr_debug("File marked full, fast get_filled_blocks");
+		if (arg->start_index > end_index) {
+			arg->index_out = arg->start_index;
+			return 0;
+		}
+		arg->index_out = arg->start_index;
+
+		error = check_room_for_one_range(size, *size_out);
+		if (error)
+			return error;
+
+		range = (struct incfs_filled_range){
+			.begin = arg->start_index,
+			.end = end_index,
+		};
+
+		error = copy_one_range(&range, buffer, size, size_out);
+		if (error)
+			return error;
+		arg->index_out = end_index;
+		return 0;
+	}
+
+	bme = kzalloc(sizeof(*bme) * READ_BLOCKMAP_ENTRIES,
+		      GFP_NOFS | __GFP_COMP);
+	if (!bme)
+		return -ENOMEM;
+
+	for (arg->index_out = arg->start_index; arg->index_out < end_index;
+	     ++arg->index_out) {
+		struct data_file_block dfb;
+
+		if (++i == READ_BLOCKMAP_ENTRIES) {
+			entries_read = incfs_read_blockmap_entries(
+				df->df_backing_file_context, bme,
+				arg->index_out, READ_BLOCKMAP_ENTRIES,
+				df->df_blockmap_off);
+			if (entries_read < 0) {
+				error = entries_read;
+				break;
+			}
+
+			i = 0;
+		}
+
+		if (i >= entries_read) {
+			error = -EIO;
+			break;
+		}
+
+		convert_data_file_block(bme + i, &dfb);
+
+		if (is_data_block_present(&dfb)) {
+			if (arg->index_out >= df->df_data_block_count)
+				++hash_blocks_filled;
+			else
+				++data_blocks_filled;
+		}
+
+		if (is_data_block_present(&dfb) == in_range)
+			continue;
+
+		if (!in_range) {
+			error = check_room_for_one_range(size, *size_out);
+			if (error)
+				break;
+			in_range = true;
+			range.begin = arg->index_out;
+		} else {
+			range.end = arg->index_out;
+			error = copy_one_range(&range, buffer, size, size_out);
+			if (error) {
+				/* there will be another try out of the loop,
+				 * it will reset the index_out if it fails too
+				 */
+				break;
+			}
+			in_range = false;
+		}
+	}
+
+	if (in_range) {
+		range.end = arg->index_out;
+		error = copy_one_range(&range, buffer, size, size_out);
+		if (error)
+			arg->index_out = range.begin;
+	}
+
+	if (arg->start_index == 0) {
+		fd->fd_get_block_pos = 0;
+		fd->fd_filled_data_blocks = 0;
+		fd->fd_filled_hash_blocks = 0;
+	}
+
+	if (arg->start_index == fd->fd_get_block_pos) {
+		fd->fd_get_block_pos = arg->index_out + 1;
+		fd->fd_filled_data_blocks += data_blocks_filled;
+		fd->fd_filled_hash_blocks += hash_blocks_filled;
+	}
+
+	if (fd->fd_get_block_pos == df->df_total_block_count + 1) {
+		if (fd->fd_filled_data_blocks >
+		   atomic_read(&df->df_data_blocks_written))
+			atomic_set(&df->df_data_blocks_written,
+				   fd->fd_filled_data_blocks);
+
+		if (fd->fd_filled_hash_blocks >
+		   atomic_read(&df->df_hash_blocks_written))
+			atomic_set(&df->df_hash_blocks_written,
+				   fd->fd_filled_hash_blocks);
+	}
+
+	kfree(bme);
+	return error;
+}
+
+static bool is_read_done(struct pending_read *read)
+{
+	return atomic_read_acquire(&read->done) != 0;
+}
+
+static void set_read_done(struct pending_read *read)
+{
+	atomic_set_release(&read->done, 1);
+}
+
+/*
+ * Notifies a given data file about pending read from a given block.
+ * Returns a new pending read entry.
+ */
+static struct pending_read *add_pending_read(struct data_file *df,
+					     int block_index)
+{
+	struct pending_read *result = NULL;
+	struct data_file_segment *segment = NULL;
+	struct mount_info *mi = NULL;
+
+	segment = get_file_segment(df, block_index);
+	mi = df->df_mount_info;
+
+	result = kzalloc(sizeof(*result), GFP_NOFS);
+	if (!result)
+		return NULL;
+
+	result->file_id = df->df_id;
+	result->block_index = block_index;
+	result->timestamp_us = ktime_to_us(ktime_get());
+	result->uid = current_uid().val;
+
+	spin_lock(&mi->pending_read_lock);
+
+	result->serial_number = ++mi->mi_last_pending_read_number;
+	mi->mi_pending_reads_count++;
+
+	list_add_rcu(&result->mi_reads_list, &mi->mi_reads_list_head);
+	list_add_rcu(&result->segment_reads_list, &segment->reads_list_head);
+
+	spin_unlock(&mi->pending_read_lock);
+
+	wake_up_all(&mi->mi_pending_reads_notif_wq);
+	return result;
+}
+
+static void free_pending_read_entry(struct rcu_head *entry)
+{
+	struct pending_read *read;
+
+	read = container_of(entry, struct pending_read, rcu);
+
+	kfree(read);
+}
+
+/* Notifies a given data file that pending read is completed. */
+static void remove_pending_read(struct data_file *df, struct pending_read *read)
+{
+	struct mount_info *mi = NULL;
+
+	if (!df || !read) {
+		WARN_ON(!df);
+		WARN_ON(!read);
+		return;
+	}
+
+	mi = df->df_mount_info;
+
+	spin_lock(&mi->pending_read_lock);
+
+	list_del_rcu(&read->mi_reads_list);
+	list_del_rcu(&read->segment_reads_list);
+
+	mi->mi_pending_reads_count--;
+
+	spin_unlock(&mi->pending_read_lock);
+
+	/* Don't free. Wait for readers */
+	call_rcu(&read->rcu, free_pending_read_entry);
+}
+
+static void notify_pending_reads(struct mount_info *mi,
+		struct data_file_segment *segment,
+		int index)
+{
+	struct pending_read *entry = NULL;
+
+	/* Notify pending reads waiting for this block. */
+	rcu_read_lock();
+	list_for_each_entry_rcu(entry, &segment->reads_list_head,
+						segment_reads_list) {
+		if (entry->block_index == index)
+			set_read_done(entry);
+	}
+	rcu_read_unlock();
+	wake_up_all(&segment->new_data_arrival_wq);
+
+	atomic_inc(&mi->mi_blocks_written);
+	wake_up_all(&mi->mi_blocks_written_notif_wq);
+}
+
+static int wait_for_data_block(struct data_file *df, int block_index,
+			       struct data_file_block *res_block,
+			       struct incfs_read_data_file_timeouts *timeouts,
+			       unsigned int *delayed_min_us)
+{
+	struct data_file_block block = {};
+	struct data_file_segment *segment = NULL;
+	struct pending_read *read = NULL;
+	struct mount_info *mi = NULL;
+	int error;
+	int wait_res = 0;
+	unsigned int delayed_pending_us = 0;
+	bool delayed_pending = false;
+
+	if (!df || !res_block)
+		return -EFAULT;
+
+	if (block_index < 0 || block_index >= df->df_data_block_count)
+		return -EINVAL;
+
+	if (df->df_blockmap_off <= 0 || !df->df_mount_info)
+		return -ENODATA;
+
+	mi = df->df_mount_info;
+	segment = get_file_segment(df, block_index);
+
+	error = down_read_killable(&segment->rwsem);
+	if (error)
+		return error;
+
+	/* Look up the given block */
+	error = get_data_file_block(df, block_index, &block);
+
+	up_read(&segment->rwsem);
+
+	if (error)
+		return error;
+
+	/* If the block was found, just return it. No need to wait. */
+	if (is_data_block_present(&block)) {
+		*res_block = block;
+		if (timeouts && timeouts->min_time_us) {
+			*delayed_min_us = timeouts->min_time_us;
+			goto out;
+		}
+		return 0;
+	} else {
+		/* If it's not found, create a pending read */
+		if (timeouts && timeouts->max_pending_time_us) {
+			read = add_pending_read(df, block_index);
+			if (!read)
+				return -ENOMEM;
+		} else {
+			log_block_read(mi, &df->df_id, block_index);
+			return -ETIME;
+		}
+	}
+
+	/* Rest of function only applies if timeouts != NULL */
+	if (!timeouts) {
+		pr_warn("incfs: timeouts unexpectedly NULL\n");
+		return -EFSCORRUPTED;
+	}
+
+	/* Wait for notifications about block's arrival */
+	wait_res =
+		wait_event_interruptible_timeout(segment->new_data_arrival_wq,
+			(is_read_done(read)),
+			usecs_to_jiffies(timeouts->max_pending_time_us));
+
+	/* Woke up, the pending read is no longer needed. */
+	remove_pending_read(df, read);
+
+	if (wait_res == 0) {
+		/* Wait has timed out */
+		log_block_read(mi, &df->df_id, block_index);
+		return -ETIME;
+	}
+	if (wait_res < 0) {
+		/*
+		 * Only ERESTARTSYS is really expected here when a signal
+		 * comes while we wait.
+		 */
+		return wait_res;
+	}
+
+	delayed_pending = true;
+	delayed_pending_us = timeouts->max_pending_time_us -
+				jiffies_to_usecs(wait_res);
+	if (timeouts->min_pending_time_us > delayed_pending_us)
+		*delayed_min_us = timeouts->min_pending_time_us -
+					     delayed_pending_us;
+
+	error = down_read_killable(&segment->rwsem);
+	if (error)
+		return error;
+
+	/*
+	 * Re-read blocks info now, it has just arrived and
+	 * should be available.
+	 */
+	error = get_data_file_block(df, block_index, &block);
+	if (!error) {
+		if (is_data_block_present(&block))
+			*res_block = block;
+		else {
+			/*
+			 * Somehow wait finished successfully but block still
+			 * can't be found. It's not normal.
+			 */
+			pr_warn("incfs: Wait succeeded but block not found.\n");
+			error = -ENODATA;
+		}
+	}
+	up_read(&segment->rwsem);
+
+out:
+	if (error)
+		return error;
+
+	if (delayed_pending) {
+		mi->mi_reads_delayed_pending++;
+		mi->mi_reads_delayed_pending_us +=
+			delayed_pending_us;
+	}
+
+	if (delayed_min_us && *delayed_min_us) {
+		mi->mi_reads_delayed_min++;
+		mi->mi_reads_delayed_min_us += *delayed_min_us;
+	}
+
+	return 0;
+}
+
+static int incfs_update_sysfs_error(struct file *file, int index, int result,
+				struct mount_info *mi, struct data_file *df)
+{
+	int error;
+
+	if (result >= 0)
+		return 0;
+
+	error = mutex_lock_interruptible(&mi->mi_le_mutex);
+	if (error)
+		return error;
+
+	mi->mi_le_file_id = df->df_id;
+	mi->mi_le_time_us = ktime_to_us(ktime_get());
+	mi->mi_le_page = index;
+	mi->mi_le_errno = result;
+	mi->mi_le_uid = current_uid().val;
+	mutex_unlock(&mi->mi_le_mutex);
+
+	return 0;
+}
+
+ssize_t incfs_read_data_file_block(struct mem_range dst, struct file *f,
+			int index, struct mem_range tmp,
+			struct incfs_read_data_file_timeouts *timeouts,
+			unsigned int *delayed_min_us)
+{
+	loff_t pos;
+	ssize_t result;
+	size_t bytes_to_read;
+	struct mount_info *mi = NULL;
+	struct backing_file_context *bfc = NULL;
+	struct data_file_block block = {};
+	struct data_file *df = get_incfs_data_file(f);
+
+	if (!dst.data || !df || !tmp.data)
+		return -EFAULT;
+
+	if (tmp.len < 2 * INCFS_DATA_FILE_BLOCK_SIZE)
+		return -ERANGE;
+
+	mi = df->df_mount_info;
+	bfc = df->df_backing_file_context;
+
+	result = wait_for_data_block(df, index, &block, timeouts,
+				     delayed_min_us);
+	if (result < 0)
+		goto out;
+
+	pos = block.db_backing_file_data_offset;
+	if (block.db_comp_alg == COMPRESSION_NONE) {
+		bytes_to_read = min(dst.len, block.db_stored_size);
+		result = incfs_kread(bfc, dst.data, bytes_to_read, pos);
+
+		/* Some data was read, but not enough */
+		if (result >= 0 && result != bytes_to_read)
+			result = -EIO;
+	} else {
+		bytes_to_read = min(tmp.len, block.db_stored_size);
+		result = incfs_kread(bfc, tmp.data, bytes_to_read, pos);
+		if (result == bytes_to_read) {
+			result =
+				decompress(mi, range(tmp.data, bytes_to_read),
+					   dst, block.db_comp_alg);
+			if (result < 0) {
+				const char *name =
+				    bfc->bc_file->f_path.dentry->d_name.name;
+
+				pr_warn_once("incfs: Decompression error. %s",
+					     name);
+			}
+		} else if (result >= 0) {
+			/* Some data was read, but not enough */
+			result = -EIO;
+		}
+	}
+
+	if (result > 0) {
+		int err = validate_hash_tree(bfc, f, index, dst, tmp.data);
+
+		if (err < 0)
+			result = err;
+	}
+
+	if (result >= 0)
+		log_block_read(mi, &df->df_id, index);
+
+out:
+	if (result == -ETIME)
+		mi->mi_reads_failed_timed_out++;
+	else if (result == -EBADMSG)
+		mi->mi_reads_failed_hash_verification++;
+	else if (result < 0)
+		mi->mi_reads_failed_other++;
+
+	incfs_update_sysfs_error(f, index, result, mi, df);
+
+	return result;
+}
+
+ssize_t incfs_read_merkle_tree_blocks(struct mem_range dst,
+				      struct data_file *df, size_t offset)
+{
+	struct backing_file_context *bfc = NULL;
+	struct incfs_df_signature *sig = NULL;
+	size_t to_read = dst.len;
+
+	if (!dst.data || !df)
+		return -EFAULT;
+
+	sig = df->df_signature;
+	bfc = df->df_backing_file_context;
+
+	if (offset > sig->hash_size)
+		return -ERANGE;
+
+	if (offset + to_read > sig->hash_size)
+		to_read = sig->hash_size - offset;
+
+	return incfs_kread(bfc, dst.data, to_read, sig->hash_offset + offset);
+}
+
+int incfs_process_new_data_block(struct data_file *df,
+				 struct incfs_fill_block *block, u8 *data,
+				 bool *complete)
+{
+	struct mount_info *mi = NULL;
+	struct backing_file_context *bfc = NULL;
+	struct data_file_segment *segment = NULL;
+	struct data_file_block existing_block = {};
+	u16 flags = 0;
+	int error = 0;
+
+	if (!df || !block)
+		return -EFAULT;
+
+	bfc = df->df_backing_file_context;
+	mi = df->df_mount_info;
+
+	if (block->block_index >= df->df_data_block_count)
+		return -ERANGE;
+
+	segment = get_file_segment(df, block->block_index);
+	if (!segment)
+		return -EFAULT;
+
+	if (block->compression == COMPRESSION_LZ4)
+		flags |= INCFS_BLOCK_COMPRESSED_LZ4;
+	else if (block->compression == COMPRESSION_ZSTD)
+		flags |= INCFS_BLOCK_COMPRESSED_ZSTD;
+	else if (block->compression)
+		return -EINVAL;
+
+	error = down_read_killable(&segment->rwsem);
+	if (error)
+		return error;
+
+	error = get_data_file_block(df, block->block_index, &existing_block);
+
+	up_read(&segment->rwsem);
+
+	if (error)
+		return error;
+	if (is_data_block_present(&existing_block))
+		/* Block is already present, nothing to do here */
+		return 0;
+
+	error = down_write_killable(&segment->rwsem);
+	if (error)
+		return error;
+
+	/* Recheck inside write lock */
+	error = get_data_file_block(df, block->block_index, &existing_block);
+	if (error)
+		goto out_up_write;
+
+	if (is_data_block_present(&existing_block))
+		goto out_up_write;
+
+	error = mutex_lock_interruptible(&bfc->bc_mutex);
+	if (error)
+		goto out_up_write;
+
+	error = incfs_write_data_block_to_backing_file(bfc,
+			range(data, block->data_len), block->block_index,
+			df->df_blockmap_off, flags);
+	if (error)
+		goto out_mutex_unlock;
+
+	if (atomic_inc_return(&df->df_data_blocks_written)
+			>= df->df_data_block_count)
+		*complete = true;
+
+out_mutex_unlock:
+	mutex_unlock(&bfc->bc_mutex);
+	if (!error)
+		notify_pending_reads(mi, segment, block->block_index);
+
+out_up_write:
+	up_write(&segment->rwsem);
+
+	if (error)
+		pr_debug("%d error: %d\n", block->block_index, error);
+	return error;
+}
+
+int incfs_read_file_signature(struct data_file *df, struct mem_range dst)
+{
+	struct backing_file_context *bfc = df->df_backing_file_context;
+	struct incfs_df_signature *sig;
+	int read_res = 0;
+
+	if (!dst.data)
+		return -EFAULT;
+
+	sig = df->df_signature;
+	if (!sig)
+		return 0;
+
+	if (dst.len < sig->sig_size)
+		return -E2BIG;
+
+	read_res = incfs_kread(bfc, dst.data, sig->sig_size, sig->sig_offset);
+
+	if (read_res < 0)
+		return read_res;
+
+	if (read_res != sig->sig_size)
+		return -EIO;
+
+	return read_res;
+}
+
+int incfs_process_new_hash_block(struct data_file *df,
+				 struct incfs_fill_block *block, u8 *data)
+{
+	struct backing_file_context *bfc = NULL;
+	struct mount_info *mi = NULL;
+	struct mtree *hash_tree = NULL;
+	struct incfs_df_signature *sig = NULL;
+	loff_t hash_area_base = 0;
+	loff_t hash_area_size = 0;
+	int error = 0;
+
+	if (!df || !block)
+		return -EFAULT;
+
+	if (!(block->flags & INCFS_BLOCK_FLAGS_HASH))
+		return -EINVAL;
+
+	bfc = df->df_backing_file_context;
+	mi = df->df_mount_info;
+
+	if (!df)
+		return -ENOENT;
+
+	hash_tree = df->df_hash_tree;
+	sig = df->df_signature;
+	if (!hash_tree || !sig || sig->hash_offset == 0)
+		return -ENOTSUPP;
+
+	hash_area_base = sig->hash_offset;
+	hash_area_size = sig->hash_size;
+	if (hash_area_size < block->block_index * INCFS_DATA_FILE_BLOCK_SIZE
+				+ block->data_len) {
+		/* Hash block goes beyond dedicated hash area of this file. */
+		return -ERANGE;
+	}
+
+	error = mutex_lock_interruptible(&bfc->bc_mutex);
+	if (!error) {
+		error = incfs_write_hash_block_to_backing_file(
+			bfc, range(data, block->data_len), block->block_index,
+			hash_area_base, df->df_blockmap_off, df->df_size);
+		mutex_unlock(&bfc->bc_mutex);
+	}
+	if (!error)
+		atomic_inc(&df->df_hash_blocks_written);
+
+	return error;
+}
+
+static int process_blockmap_md(struct incfs_blockmap *bm,
+			       struct metadata_handler *handler)
+{
+	struct data_file *df = handler->context;
+	int error = 0;
+	loff_t base_off = le64_to_cpu(bm->m_base_offset);
+	u32 block_count = le32_to_cpu(bm->m_block_count);
+
+	if (!df)
+		return -EFAULT;
+
+	if (df->df_data_block_count > block_count)
+		return -EBADMSG;
+
+	df->df_total_block_count = block_count;
+	df->df_blockmap_off = base_off;
+	return error;
+}
+
+static int process_file_signature_md(struct incfs_file_signature *sg,
+				struct metadata_handler *handler)
+{
+	struct data_file *df = handler->context;
+	struct mtree *hash_tree = NULL;
+	int error = 0;
+	struct incfs_df_signature *signature =
+		kzalloc(sizeof(*signature), GFP_NOFS);
+	void *buf = NULL;
+	ssize_t read;
+
+	if (!signature)
+		return -ENOMEM;
+
+	if (!df || !df->df_backing_file_context ||
+	    !df->df_backing_file_context->bc_file) {
+		error = -ENOENT;
+		goto out;
+	}
+
+	signature->hash_offset = le64_to_cpu(sg->sg_hash_tree_offset);
+	signature->hash_size = le32_to_cpu(sg->sg_hash_tree_size);
+	signature->sig_offset = le64_to_cpu(sg->sg_sig_offset);
+	signature->sig_size = le32_to_cpu(sg->sg_sig_size);
+
+	buf = kzalloc(signature->sig_size, GFP_NOFS);
+	if (!buf) {
+		error = -ENOMEM;
+		goto out;
+	}
+
+	read = incfs_kread(df->df_backing_file_context, buf,
+			   signature->sig_size, signature->sig_offset);
+	if (read < 0) {
+		error = read;
+		goto out;
+	}
+
+	if (read != signature->sig_size) {
+		error = -EINVAL;
+		goto out;
+	}
+
+	hash_tree = incfs_alloc_mtree(range(buf, signature->sig_size),
+				      df->df_data_block_count);
+	if (IS_ERR(hash_tree)) {
+		error = PTR_ERR(hash_tree);
+		hash_tree = NULL;
+		goto out;
+	}
+	if (hash_tree->hash_tree_area_size != signature->hash_size) {
+		error = -EINVAL;
+		goto out;
+	}
+	if (signature->hash_size > 0 &&
+	    handler->md_record_offset <= signature->hash_offset) {
+		error = -EINVAL;
+		goto out;
+	}
+	if (handler->md_record_offset <= signature->sig_offset) {
+		error = -EINVAL;
+		goto out;
+	}
+	df->df_hash_tree = hash_tree;
+	hash_tree = NULL;
+	df->df_signature = signature;
+	signature = NULL;
+out:
+	incfs_free_mtree(hash_tree);
+	kfree(signature);
+	kfree(buf);
+
+	return error;
+}
+
+static int process_status_md(struct incfs_status *is,
+			     struct metadata_handler *handler)
+{
+	struct data_file *df = handler->context;
+
+	df->df_initial_data_blocks_written =
+		le32_to_cpu(is->is_data_blocks_written);
+	atomic_set(&df->df_data_blocks_written,
+		   df->df_initial_data_blocks_written);
+
+	df->df_initial_hash_blocks_written =
+		le32_to_cpu(is->is_hash_blocks_written);
+	atomic_set(&df->df_hash_blocks_written,
+		   df->df_initial_hash_blocks_written);
+
+	df->df_status_offset = handler->md_record_offset;
+	return 0;
+}
+
+static int process_file_verity_signature_md(
+		struct incfs_file_verity_signature *vs,
+		struct metadata_handler *handler)
+{
+	struct data_file *df = handler->context;
+	struct incfs_df_verity_signature *verity_signature;
+
+	if (!df)
+		return -EFAULT;
+
+	verity_signature = kzalloc(sizeof(*verity_signature), GFP_NOFS);
+	if (!verity_signature)
+		return -ENOMEM;
+
+	verity_signature->offset = le64_to_cpu(vs->vs_offset);
+	verity_signature->size = le32_to_cpu(vs->vs_size);
+	if (verity_signature->size > FS_VERITY_MAX_SIGNATURE_SIZE) {
+		kfree(verity_signature);
+		return -EFAULT;
+	}
+
+	df->df_verity_signature = verity_signature;
+	return 0;
+}
+
+static int incfs_scan_metadata_chain(struct data_file *df)
+{
+	struct metadata_handler *handler = NULL;
+	int result = 0;
+	int records_count = 0;
+	int error = 0;
+	struct backing_file_context *bfc = NULL;
+	int nondata_block_count;
+
+	if (!df || !df->df_backing_file_context)
+		return -EFAULT;
+
+	bfc = df->df_backing_file_context;
+
+	handler = kzalloc(sizeof(*handler), GFP_NOFS);
+	if (!handler)
+		return -ENOMEM;
+
+	handler->md_record_offset = df->df_metadata_off;
+	handler->context = df;
+	handler->handle_blockmap = process_blockmap_md;
+	handler->handle_signature = process_file_signature_md;
+	handler->handle_status = process_status_md;
+	handler->handle_verity_signature = process_file_verity_signature_md;
+
+	while (handler->md_record_offset > 0) {
+		error = incfs_read_next_metadata_record(bfc, handler);
+		if (error) {
+			pr_warn("incfs: Error during reading incfs-metadata record. Offset: %lld Record #%d Error code: %d\n",
+				handler->md_record_offset, records_count + 1,
+				-error);
+			break;
+		}
+		records_count++;
+	}
+	if (error) {
+		pr_warn("incfs: Error %d after reading %d incfs-metadata records.\n",
+			 -error, records_count);
+		result = error;
+	} else
+		result = records_count;
+
+	nondata_block_count = df->df_total_block_count -
+		df->df_data_block_count;
+	if (df->df_hash_tree) {
+		int hash_block_count = get_blocks_count_for_size(
+			df->df_hash_tree->hash_tree_area_size);
+
+		/*
+		 * Files that were created with a hash tree have the hash tree
+		 * included in the block map, i.e. nondata_block_count ==
+		 * hash_block_count.  Files whose hash tree was added by
+		 * FS_IOC_ENABLE_VERITY will still have the original block
+		 * count, i.e. nondata_block_count == 0.
+		 */
+		if (nondata_block_count != hash_block_count &&
+		    nondata_block_count != 0)
+			result = -EINVAL;
+	} else if (nondata_block_count != 0) {
+		result = -EINVAL;
+	}
+
+	kfree(handler);
+	return result;
+}
+
+/*
+ * Quickly checks if there are pending reads with a serial number larger
+ * than a given one.
+ */
+bool incfs_fresh_pending_reads_exist(struct mount_info *mi, int last_number)
+{
+	bool result = false;
+
+	spin_lock(&mi->pending_read_lock);
+	result = (mi->mi_last_pending_read_number > last_number) &&
+		(mi->mi_pending_reads_count > 0);
+	spin_unlock(&mi->pending_read_lock);
+	return result;
+}
+
+int incfs_collect_pending_reads(struct mount_info *mi, int sn_lowerbound,
+				struct incfs_pending_read_info *reads,
+				struct incfs_pending_read_info2 *reads2,
+				int reads_size, int *new_max_sn)
+{
+	int reported_reads = 0;
+	struct pending_read *entry = NULL;
+
+	if (!mi)
+		return -EFAULT;
+
+	if (reads_size <= 0)
+		return 0;
+
+	if (!incfs_fresh_pending_reads_exist(mi, sn_lowerbound))
+		return 0;
+
+	rcu_read_lock();
+
+	list_for_each_entry_rcu(entry, &mi->mi_reads_list_head, mi_reads_list) {
+		if (entry->serial_number <= sn_lowerbound)
+			continue;
+
+		if (reads) {
+			reads[reported_reads].file_id = entry->file_id;
+			reads[reported_reads].block_index = entry->block_index;
+			reads[reported_reads].serial_number =
+				entry->serial_number;
+			reads[reported_reads].timestamp_us =
+				entry->timestamp_us;
+		}
+
+		if (reads2) {
+			reads2[reported_reads].file_id = entry->file_id;
+			reads2[reported_reads].block_index = entry->block_index;
+			reads2[reported_reads].serial_number =
+				entry->serial_number;
+			reads2[reported_reads].timestamp_us =
+				entry->timestamp_us;
+			reads2[reported_reads].uid = entry->uid;
+		}
+
+		if (entry->serial_number > *new_max_sn)
+			*new_max_sn = entry->serial_number;
+
+		reported_reads++;
+		if (reported_reads >= reads_size)
+			break;
+	}
+
+	rcu_read_unlock();
+
+	return reported_reads;
+}
+
+struct read_log_state incfs_get_log_state(struct mount_info *mi)
+{
+	struct read_log *log = &mi->mi_log;
+	struct read_log_state result;
+
+	spin_lock(&log->rl_lock);
+	result = log->rl_head;
+	spin_unlock(&log->rl_lock);
+	return result;
+}
+
+int incfs_get_uncollected_logs_count(struct mount_info *mi,
+				     const struct read_log_state *state)
+{
+	struct read_log *log = &mi->mi_log;
+	u32 generation;
+	u64 head_no, tail_no;
+
+	spin_lock(&log->rl_lock);
+	tail_no = log->rl_tail.current_record_no;
+	head_no = log->rl_head.current_record_no;
+	generation = log->rl_head.generation_id;
+	spin_unlock(&log->rl_lock);
+
+	if (generation != state->generation_id)
+		return head_no - tail_no;
+	else
+		return head_no - max_t(u64, tail_no, state->current_record_no);
+}
+
+int incfs_collect_logged_reads(struct mount_info *mi,
+			       struct read_log_state *state,
+			       struct incfs_pending_read_info *reads,
+			       struct incfs_pending_read_info2 *reads2,
+			       int reads_size)
+{
+	int dst_idx;
+	struct read_log *log = &mi->mi_log;
+	struct read_log_state *head, *tail;
+
+	spin_lock(&log->rl_lock);
+	head = &log->rl_head;
+	tail = &log->rl_tail;
+
+	if (state->generation_id != head->generation_id) {
+		pr_debug("read ptr is wrong generation: %u/%u",
+			 state->generation_id, head->generation_id);
+
+		*state = (struct read_log_state){
+			.generation_id = head->generation_id,
+		};
+	}
+
+	if (state->current_record_no < tail->current_record_no) {
+		pr_debug("read ptr is behind, moving: %u/%u -> %u/%u\n",
+			 (u32)state->next_offset,
+			 (u32)state->current_pass_no,
+			 (u32)tail->next_offset, (u32)tail->current_pass_no);
+
+		*state = *tail;
+	}
+
+	for (dst_idx = 0; dst_idx < reads_size; dst_idx++) {
+		if (state->current_record_no == head->current_record_no)
+			break;
+
+		log_read_one_record(log, state);
+
+		if (reads)
+			reads[dst_idx] = (struct incfs_pending_read_info) {
+				.file_id = state->base_record.file_id,
+				.block_index = state->base_record.block_index,
+				.serial_number = state->current_record_no,
+				.timestamp_us =
+					state->base_record.absolute_ts_us,
+			};
+
+		if (reads2)
+			reads2[dst_idx] = (struct incfs_pending_read_info2) {
+				.file_id = state->base_record.file_id,
+				.block_index = state->base_record.block_index,
+				.serial_number = state->current_record_no,
+				.timestamp_us =
+					state->base_record.absolute_ts_us,
+				.uid = state->base_record.uid,
+			};
+	}
+
+	spin_unlock(&log->rl_lock);
+	return dst_idx;
+}
+
diff --git a/fs/incfs/data_mgmt.h b/fs/incfs/data_mgmt.h
new file mode 100644
index 0000000..8bd5c2f
--- /dev/null
+++ b/fs/incfs/data_mgmt.h
@@ -0,0 +1,551 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright 2019 Google LLC
+ */
+#ifndef _INCFS_DATA_MGMT_H
+#define _INCFS_DATA_MGMT_H
+
+#include <linux/cred.h>
+#include <linux/fs.h>
+#include <linux/types.h>
+#include <linux/mutex.h>
+#include <linux/spinlock.h>
+#include <linux/rcupdate.h>
+#include <linux/completion.h>
+#include <linux/wait.h>
+#include <linux/zstd.h>
+#include <crypto/hash.h>
+#include <linux/rwsem.h>
+
+#include <uapi/linux/incrementalfs.h>
+
+#include "internal.h"
+#include "pseudo_files.h"
+
+#define SEGMENTS_PER_FILE 3
+
+enum LOG_RECORD_TYPE {
+	FULL,
+	SAME_FILE,
+	SAME_FILE_CLOSE_BLOCK,
+	SAME_FILE_CLOSE_BLOCK_SHORT,
+	SAME_FILE_NEXT_BLOCK,
+	SAME_FILE_NEXT_BLOCK_SHORT,
+};
+
+struct full_record {
+	enum LOG_RECORD_TYPE type : 3; /* FULL */
+	u32 block_index : 29;
+	incfs_uuid_t file_id;
+	u64 absolute_ts_us;
+	uid_t uid;
+} __packed; /* 32 bytes */
+
+struct same_file {
+	enum LOG_RECORD_TYPE type : 3; /* SAME_FILE */
+	u32 block_index : 29;
+	uid_t uid;
+	u16 relative_ts_us; /* max 2^16 us ~= 64 ms */
+} __packed; /* 10 bytes */
+
+struct same_file_close_block {
+	enum LOG_RECORD_TYPE type : 3; /* SAME_FILE_CLOSE_BLOCK */
+	u16 relative_ts_us : 13; /* max 2^13 us ~= 8 ms */
+	s16 block_index_delta;
+} __packed; /* 4 bytes */
+
+struct same_file_close_block_short {
+	enum LOG_RECORD_TYPE type : 3; /* SAME_FILE_CLOSE_BLOCK_SHORT */
+	u8 relative_ts_tens_us : 5; /* max 2^5*10 us ~= 320 us */
+	s8 block_index_delta;
+} __packed; /* 2 bytes */
+
+struct same_file_next_block {
+	enum LOG_RECORD_TYPE type : 3; /* SAME_FILE_NEXT_BLOCK */
+	u16 relative_ts_us : 13; /* max 2^13 us ~= 8 ms */
+} __packed; /* 2 bytes */
+
+struct same_file_next_block_short {
+	enum LOG_RECORD_TYPE type : 3; /* SAME_FILE_NEXT_BLOCK_SHORT */
+	u8 relative_ts_tens_us : 5; /* max 2^5*10 us ~= 320 us */
+} __packed; /* 1 byte */
+
+union log_record {
+	struct full_record full_record;
+	struct same_file same_file;
+	struct same_file_close_block same_file_close_block;
+	struct same_file_close_block_short same_file_close_block_short;
+	struct same_file_next_block same_file_next_block;
+	struct same_file_next_block_short same_file_next_block_short;
+};
+
+struct read_log_state {
+	/* Log buffer generation id, incremented on configuration changes */
+	u32 generation_id;
+
+	/* Offset in rl_ring_buf to write into. */
+	u32 next_offset;
+
+	/* Current number of writer passes over rl_ring_buf */
+	u32 current_pass_no;
+
+	/* Current full_record to diff against */
+	struct full_record base_record;
+
+	/* Current record number counting from configuration change */
+	u64 current_record_no;
+};
+
+/* A ring buffer to save records about data blocks which were recently read. */
+struct read_log {
+	void *rl_ring_buf;
+
+	int rl_size;
+
+	struct read_log_state rl_head;
+
+	struct read_log_state rl_tail;
+
+	/* A lock to protect the above fields */
+	spinlock_t rl_lock;
+
+	/* A queue of waiters who want to be notified about reads */
+	wait_queue_head_t ml_notif_wq;
+
+	/* A work item to wake up those waiters without slowing down readers */
+	struct delayed_work ml_wakeup_work;
+};
+
+struct mount_options {
+	unsigned int read_timeout_ms;
+	unsigned int readahead_pages;
+	unsigned int read_log_pages;
+	unsigned int read_log_wakeup_count;
+	bool report_uid;
+	char *sysfs_name;
+};
+
+struct mount_info {
+	struct super_block *mi_sb;
+
+	struct path mi_backing_dir_path;
+
+	struct dentry *mi_index_dir;
+	/* For stacking mounts, if true, this indicates if the index dir needs
+	 * to be freed for this SB otherwise it was created by lower level SB */
+	bool mi_index_free;
+
+	struct dentry *mi_incomplete_dir;
+	/* For stacking mounts, if true, this indicates if the incomplete dir
+	 * needs to be freed for this SB. Similar to mi_index_free */
+	bool mi_incomplete_free;
+
+	const struct cred *mi_owner;
+
+	struct mount_options mi_options;
+
+	/* This mutex is to be taken before create, rename, delete */
+	struct mutex mi_dir_struct_mutex;
+
+	/*
+	 * A queue of waiters who want to be notified about new pending reads.
+	 */
+	wait_queue_head_t mi_pending_reads_notif_wq;
+
+	/*
+	 * Protects - RCU safe:
+	 *  - reads_list_head
+	 *  - mi_pending_reads_count
+	 *  - mi_last_pending_read_number
+	 *  - data_file_segment.reads_list_head
+	 */
+	spinlock_t pending_read_lock;
+
+	/* List of active pending_read objects */
+	struct list_head mi_reads_list_head;
+
+	/* Total number of items in reads_list_head */
+	int mi_pending_reads_count;
+
+	/*
+	 * Last serial number that was assigned to a pending read.
+	 * 0 means no pending reads have been seen yet.
+	 */
+	int mi_last_pending_read_number;
+
+	/* Temporary buffer for read logger. */
+	struct read_log mi_log;
+
+	/* SELinux needs special xattrs on our pseudo files */
+	struct mem_range pseudo_file_xattr[PSEUDO_FILE_COUNT];
+
+	/* A queue of waiters who want to be notified about blocks_written */
+	wait_queue_head_t mi_blocks_written_notif_wq;
+
+	/* Number of blocks written since mount */
+	atomic_t mi_blocks_written;
+
+	/* Per UID read timeouts */
+	spinlock_t mi_per_uid_read_timeouts_lock;
+	struct incfs_per_uid_read_timeouts *mi_per_uid_read_timeouts;
+	int mi_per_uid_read_timeouts_size;
+
+	/* zstd workspace */
+	struct mutex mi_zstd_workspace_mutex;
+	void *mi_zstd_workspace;
+	ZSTD_DStream *mi_zstd_stream;
+	struct delayed_work mi_zstd_cleanup_work;
+
+	/* sysfs node */
+	struct incfs_sysfs_node *mi_sysfs_node;
+
+	/* Last error information */
+	struct mutex	mi_le_mutex;
+	incfs_uuid_t	mi_le_file_id;
+	u64		mi_le_time_us;
+	u32		mi_le_page;
+	u32		mi_le_errno;
+	uid_t		mi_le_uid;
+
+	/* Number of reads timed out */
+	u32 mi_reads_failed_timed_out;
+
+	/* Number of reads failed because hash verification failed */
+	u32 mi_reads_failed_hash_verification;
+
+	/* Number of reads failed for another reason */
+	u32 mi_reads_failed_other;
+
+	/* Number of reads delayed because page had to be fetched */
+	u32 mi_reads_delayed_pending;
+
+	/* Total time waiting for pages to be fetched */
+	u64 mi_reads_delayed_pending_us;
+
+	/*
+	 * Number of reads delayed because of per-uid min_time_us or
+	 * min_pending_time_us settings
+	 */
+	u32 mi_reads_delayed_min;
+
+	/* Total time waiting because of per-uid min_time_us or
+	 * min_pending_time_us settings.
+	 *
+	 * Note that if a read is initially delayed because we have to wait for
+	 * the page, then further delayed because of min_pending_time_us
+	 * setting, this counter gets incremented by only the further delay
+	 * time.
+	 */
+	u64 mi_reads_delayed_min_us;
+};
+
+struct data_file_block {
+	loff_t db_backing_file_data_offset;
+
+	size_t db_stored_size;
+
+	enum incfs_compression_alg db_comp_alg;
+};
+
+struct pending_read {
+	incfs_uuid_t file_id;
+
+	s64 timestamp_us;
+
+	atomic_t done;
+
+	int block_index;
+
+	int serial_number;
+
+	uid_t uid;
+
+	struct list_head mi_reads_list;
+
+	struct list_head segment_reads_list;
+
+	struct rcu_head rcu;
+};
+
+struct data_file_segment {
+	wait_queue_head_t new_data_arrival_wq;
+
+	/* Protects reads and writes from the blockmap */
+	struct rw_semaphore rwsem;
+
+	/* List of active pending_read objects belonging to this segment */
+	/* Protected by mount_info.pending_reads_mutex */
+	struct list_head reads_list_head;
+};
+
+/*
+ * Extra info associated with a file. Just a few bytes set by a user.
+ */
+struct file_attr {
+	loff_t fa_value_offset;
+
+	size_t fa_value_size;
+
+	u32 fa_crc;
+};
+
+
+struct data_file {
+	struct backing_file_context *df_backing_file_context;
+
+	struct mount_info *df_mount_info;
+
+	incfs_uuid_t df_id;
+
+	/*
+	 * Array of segments used to reduce lock contention for the file.
+	 * Segment is chosen for a block depends on the block's index.
+	 */
+	struct data_file_segment df_segments[SEGMENTS_PER_FILE];
+
+	/* Base offset of the first metadata record. */
+	loff_t df_metadata_off;
+
+	/* Base offset of the block map. */
+	loff_t df_blockmap_off;
+
+	/* File size in bytes */
+	loff_t df_size;
+
+	/* File header flags */
+	u32 df_header_flags;
+
+	/* File size in DATA_FILE_BLOCK_SIZE blocks */
+	int df_data_block_count;
+
+	/* Total number of blocks, data + hash */
+	int df_total_block_count;
+
+	/* For mapped files, the offset into the actual file */
+	loff_t df_mapped_offset;
+
+	/* Number of data blocks written to file */
+	atomic_t df_data_blocks_written;
+
+	/* Number of data blocks in the status block */
+	u32 df_initial_data_blocks_written;
+
+	/* Number of hash blocks written to file */
+	atomic_t df_hash_blocks_written;
+
+	/* Number of hash blocks in the status block */
+	u32 df_initial_hash_blocks_written;
+
+	/* Offset to status metadata header */
+	loff_t df_status_offset;
+
+	/*
+	 * Mutex acquired while enabling verity. Note that df_hash_tree is set
+	 * by enable verity.
+	 *
+	 * The backing file mutex bc_mutex  may be taken while this mutex is
+	 * held.
+	 */
+	struct mutex df_enable_verity;
+
+	/*
+	 * Set either at construction time or during enabling verity. In the
+	 * latter case, set via smp_store_release, so use smp_load_acquire to
+	 * read it.
+	 */
+	struct mtree *df_hash_tree;
+
+	/* Guaranteed set if df_hash_tree is set. */
+	struct incfs_df_signature *df_signature;
+
+	/*
+	 * The verity file digest, set when verity is enabled and the file has
+	 * been opened
+	 */
+	struct mem_range df_verity_file_digest;
+
+	struct incfs_df_verity_signature *df_verity_signature;
+};
+
+struct dir_file {
+	struct mount_info *mount_info;
+
+	struct file *backing_dir;
+};
+
+struct inode_info {
+	struct mount_info *n_mount_info; /* A mount, this file belongs to */
+
+	struct inode *n_backing_inode;
+
+	struct data_file *n_file;
+
+	struct inode n_vfs_inode;
+};
+
+struct dentry_info {
+	struct path backing_path;
+};
+
+enum FILL_PERMISSION {
+	CANT_FILL = 0,
+	CAN_FILL = 1,
+};
+
+struct incfs_file_data {
+	/* Does this file handle have INCFS_IOC_FILL_BLOCKS permission */
+	enum FILL_PERMISSION fd_fill_permission;
+
+	/* If INCFS_IOC_GET_FILLED_BLOCKS has been called, where are we */
+	int fd_get_block_pos;
+
+	/* And how many filled blocks are there up to that point */
+	int fd_filled_data_blocks;
+	int fd_filled_hash_blocks;
+};
+
+struct mount_info *incfs_alloc_mount_info(struct super_block *sb,
+					  struct mount_options *options,
+					  struct path *backing_dir_path);
+
+int incfs_realloc_mount_info(struct mount_info *mi,
+			     struct mount_options *options);
+
+void incfs_free_mount_info(struct mount_info *mi);
+
+char *file_id_to_str(incfs_uuid_t id);
+struct dentry *incfs_lookup_dentry(struct dentry *parent, const char *name);
+struct data_file *incfs_open_data_file(struct mount_info *mi, struct file *bf);
+void incfs_free_data_file(struct data_file *df);
+
+struct dir_file *incfs_open_dir_file(struct mount_info *mi, struct file *bf);
+void incfs_free_dir_file(struct dir_file *dir);
+
+struct incfs_read_data_file_timeouts {
+	u32 min_time_us;
+	u32 min_pending_time_us;
+	u32 max_pending_time_us;
+};
+
+ssize_t incfs_read_data_file_block(struct mem_range dst, struct file *f,
+			int index, struct mem_range tmp,
+			struct incfs_read_data_file_timeouts *timeouts,
+			unsigned int *delayed_min_us);
+
+ssize_t incfs_read_merkle_tree_blocks(struct mem_range dst,
+				      struct data_file *df, size_t offset);
+
+int incfs_get_filled_blocks(struct data_file *df,
+			    struct incfs_file_data *fd,
+			    struct incfs_get_filled_blocks_args *arg);
+
+int incfs_read_file_signature(struct data_file *df, struct mem_range dst);
+
+int incfs_process_new_data_block(struct data_file *df,
+				 struct incfs_fill_block *block, u8 *data,
+				 bool *complete);
+
+int incfs_process_new_hash_block(struct data_file *df,
+				 struct incfs_fill_block *block, u8 *data);
+
+bool incfs_fresh_pending_reads_exist(struct mount_info *mi, int last_number);
+
+/*
+ * Collects pending reads and saves them into the array (reads/reads_size).
+ * Only reads with serial_number > sn_lowerbound are reported.
+ * Returns how many reads were saved into the array.
+ */
+int incfs_collect_pending_reads(struct mount_info *mi, int sn_lowerbound,
+				struct incfs_pending_read_info *reads,
+				struct incfs_pending_read_info2 *reads2,
+				int reads_size, int *new_max_sn);
+
+int incfs_collect_logged_reads(struct mount_info *mi,
+			       struct read_log_state *start_state,
+			       struct incfs_pending_read_info *reads,
+			       struct incfs_pending_read_info2 *reads2,
+			       int reads_size);
+struct read_log_state incfs_get_log_state(struct mount_info *mi);
+int incfs_get_uncollected_logs_count(struct mount_info *mi,
+				     const struct read_log_state *state);
+
+static inline struct inode_info *get_incfs_node(struct inode *inode)
+{
+	if (!inode)
+		return NULL;
+
+	if (inode->i_sb->s_magic != INCFS_MAGIC_NUMBER) {
+		/* This inode doesn't belong to us. */
+		pr_warn_once("incfs: %s on an alien inode.", __func__);
+		return NULL;
+	}
+
+	return container_of(inode, struct inode_info, n_vfs_inode);
+}
+
+static inline struct data_file *get_incfs_data_file(struct file *f)
+{
+	struct inode_info *node = NULL;
+
+	if (!f)
+		return NULL;
+
+	if (!S_ISREG(f->f_inode->i_mode))
+		return NULL;
+
+	node = get_incfs_node(f->f_inode);
+	if (!node)
+		return NULL;
+
+	return node->n_file;
+}
+
+static inline struct dir_file *get_incfs_dir_file(struct file *f)
+{
+	if (!f)
+		return NULL;
+
+	if (!S_ISDIR(f->f_inode->i_mode))
+		return NULL;
+
+	return (struct dir_file *)f->private_data;
+}
+
+/*
+ * Make sure that inode_info.n_file is initialized and inode can be used
+ * for reading and writing data from/to the backing file.
+ */
+int make_inode_ready_for_data_ops(struct mount_info *mi,
+				struct inode *inode,
+				struct file *backing_file);
+
+static inline struct dentry_info *get_incfs_dentry(const struct dentry *d)
+{
+	if (!d)
+		return NULL;
+
+	return (struct dentry_info *)d->d_fsdata;
+}
+
+static inline void get_incfs_backing_path(const struct dentry *d,
+					  struct path *path)
+{
+	struct dentry_info *di = get_incfs_dentry(d);
+
+	if (!di) {
+		*path = (struct path) {};
+		return;
+	}
+
+	*path = di->backing_path;
+	path_get(path);
+}
+
+static inline int get_blocks_count_for_size(u64 size)
+{
+	if (size == 0)
+		return 0;
+	return 1 + (size - 1) / INCFS_DATA_FILE_BLOCK_SIZE;
+}
+
+#endif /* _INCFS_DATA_MGMT_H */
diff --git a/fs/incfs/format.c b/fs/incfs/format.c
new file mode 100644
index 0000000..6ffcf33
--- /dev/null
+++ b/fs/incfs/format.c
@@ -0,0 +1,752 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright 2018 Google LLC
+ */
+#include <linux/fs.h>
+#include <linux/file.h>
+#include <linux/types.h>
+#include <linux/mutex.h>
+#include <linux/mm.h>
+#include <linux/falloc.h>
+#include <linux/slab.h>
+#include <linux/crc32.h>
+#include <linux/kernel.h>
+
+#include "format.h"
+#include "data_mgmt.h"
+
+struct backing_file_context *incfs_alloc_bfc(struct mount_info *mi,
+					     struct file *backing_file)
+{
+	struct backing_file_context *result = NULL;
+
+	result = kzalloc(sizeof(*result), GFP_NOFS);
+	if (!result)
+		return ERR_PTR(-ENOMEM);
+
+	result->bc_file = get_file(backing_file);
+	result->bc_cred = mi->mi_owner;
+	mutex_init(&result->bc_mutex);
+	return result;
+}
+
+void incfs_free_bfc(struct backing_file_context *bfc)
+{
+	if (!bfc)
+		return;
+
+	if (bfc->bc_file)
+		fput(bfc->bc_file);
+
+	mutex_destroy(&bfc->bc_mutex);
+	kfree(bfc);
+}
+
+static loff_t incfs_get_end_offset(struct file *f)
+{
+	/*
+	 * This function assumes that file size and the end-offset
+	 * are the same. This is not always true.
+	 */
+	return i_size_read(file_inode(f));
+}
+
+/*
+ * Truncate the tail of the file to the given length.
+ * Used to rollback partially successful multistep writes.
+ */
+static int truncate_backing_file(struct backing_file_context *bfc,
+				loff_t new_end)
+{
+	struct inode *inode = NULL;
+	struct dentry *dentry = NULL;
+	loff_t old_end = 0;
+	struct iattr attr;
+	int result = 0;
+
+	if (!bfc)
+		return -EFAULT;
+
+	LOCK_REQUIRED(bfc->bc_mutex);
+
+	if (!bfc->bc_file)
+		return -EFAULT;
+
+	old_end = incfs_get_end_offset(bfc->bc_file);
+	if (old_end == new_end)
+		return 0;
+	if (old_end < new_end)
+		return -EINVAL;
+
+	inode = bfc->bc_file->f_inode;
+	dentry = bfc->bc_file->f_path.dentry;
+
+	attr.ia_size = new_end;
+	attr.ia_valid = ATTR_SIZE;
+
+	inode_lock(inode);
+	result = notify_change(&init_user_ns, dentry, &attr, NULL);
+	inode_unlock(inode);
+
+	return result;
+}
+
+static int write_to_bf(struct backing_file_context *bfc, const void *buf,
+			size_t count, loff_t pos)
+{
+	ssize_t res = incfs_kwrite(bfc, buf, count, pos);
+
+	if (res < 0)
+		return res;
+	if (res != count)
+		return -EIO;
+	return 0;
+}
+
+static int append_zeros_no_fallocate(struct backing_file_context *bfc,
+				     size_t file_size, size_t len)
+{
+	u8 buffer[256] = {};
+	size_t i;
+
+	for (i = 0; i < len; i += sizeof(buffer)) {
+		int to_write = len - i > sizeof(buffer)
+			? sizeof(buffer) : len - i;
+		int err = write_to_bf(bfc, buffer, to_write, file_size + i);
+
+		if (err)
+			return err;
+	}
+
+	return 0;
+}
+
+/* Append a given number of zero bytes to the end of the backing file. */
+static int append_zeros(struct backing_file_context *bfc, size_t len)
+{
+	loff_t file_size = 0;
+	loff_t new_last_byte_offset = 0;
+	int result;
+
+	if (!bfc)
+		return -EFAULT;
+
+	if (len == 0)
+		return 0;
+
+	LOCK_REQUIRED(bfc->bc_mutex);
+
+	/*
+	 * Allocate only one byte at the new desired end of the file.
+	 * It will increase file size and create a zeroed area of
+	 * a given size.
+	 */
+	file_size = incfs_get_end_offset(bfc->bc_file);
+	new_last_byte_offset = file_size + len - 1;
+	result = vfs_fallocate(bfc->bc_file, 0, new_last_byte_offset, 1);
+	if (result != -EOPNOTSUPP)
+		return result;
+
+	return append_zeros_no_fallocate(bfc, file_size, len);
+}
+
+/*
+ * Append a given metadata record to the backing file and update a previous
+ * record to add the new record the the metadata list.
+ */
+static int append_md_to_backing_file(struct backing_file_context *bfc,
+			      struct incfs_md_header *record)
+{
+	int result = 0;
+	loff_t record_offset;
+	loff_t file_pos;
+	__le64 new_md_offset;
+	size_t record_size;
+
+	if (!bfc || !record)
+		return -EFAULT;
+
+	if (bfc->bc_last_md_record_offset < 0)
+		return -EINVAL;
+
+	LOCK_REQUIRED(bfc->bc_mutex);
+
+	record_size = le16_to_cpu(record->h_record_size);
+	file_pos = incfs_get_end_offset(bfc->bc_file);
+	record->h_next_md_offset = 0;
+
+	/* Write the metadata record to the end of the backing file */
+	record_offset = file_pos;
+	new_md_offset = cpu_to_le64(record_offset);
+	result = write_to_bf(bfc, record, record_size, file_pos);
+	if (result)
+		return result;
+
+	/* Update next metadata offset in a previous record or a superblock. */
+	if (bfc->bc_last_md_record_offset) {
+		/*
+		 * Find a place in the previous md record where new record's
+		 * offset needs to be saved.
+		 */
+		file_pos = bfc->bc_last_md_record_offset +
+			offsetof(struct incfs_md_header, h_next_md_offset);
+	} else {
+		/*
+		 * No metadata yet, file a place to update in the
+		 * file_header.
+		 */
+		file_pos = offsetof(struct incfs_file_header,
+				    fh_first_md_offset);
+	}
+	result = write_to_bf(bfc, &new_md_offset, sizeof(new_md_offset),
+			     file_pos);
+	if (result)
+		return result;
+
+	bfc->bc_last_md_record_offset = record_offset;
+	return result;
+}
+
+/*
+ * Reserve 0-filled space for the blockmap body, and append
+ * incfs_blockmap metadata record pointing to it.
+ */
+int incfs_write_blockmap_to_backing_file(struct backing_file_context *bfc,
+					 u32 block_count)
+{
+	struct incfs_blockmap blockmap = {};
+	int result = 0;
+	loff_t file_end = 0;
+	size_t map_size = block_count * sizeof(struct incfs_blockmap_entry);
+
+	if (!bfc)
+		return -EFAULT;
+
+	blockmap.m_header.h_md_entry_type = INCFS_MD_BLOCK_MAP;
+	blockmap.m_header.h_record_size = cpu_to_le16(sizeof(blockmap));
+	blockmap.m_header.h_next_md_offset = cpu_to_le64(0);
+	blockmap.m_block_count = cpu_to_le32(block_count);
+
+	LOCK_REQUIRED(bfc->bc_mutex);
+
+	/* Reserve 0-filled space for the blockmap body in the backing file. */
+	file_end = incfs_get_end_offset(bfc->bc_file);
+	result = append_zeros(bfc, map_size);
+	if (result)
+		return result;
+
+	/* Write blockmap metadata record pointing to the body written above. */
+	blockmap.m_base_offset = cpu_to_le64(file_end);
+	result = append_md_to_backing_file(bfc, &blockmap.m_header);
+	if (result)
+		/* Error, rollback file changes */
+		truncate_backing_file(bfc, file_end);
+
+	return result;
+}
+
+int incfs_write_signature_to_backing_file(struct backing_file_context *bfc,
+					struct mem_range sig, u32 tree_size,
+					loff_t *tree_offset, loff_t *sig_offset)
+{
+	struct incfs_file_signature sg = {};
+	int result = 0;
+	loff_t rollback_pos = 0;
+	loff_t tree_area_pos = 0;
+	size_t alignment = 0;
+
+	if (!bfc)
+		return -EFAULT;
+
+	LOCK_REQUIRED(bfc->bc_mutex);
+
+	rollback_pos = incfs_get_end_offset(bfc->bc_file);
+
+	sg.sg_header.h_md_entry_type = INCFS_MD_SIGNATURE;
+	sg.sg_header.h_record_size = cpu_to_le16(sizeof(sg));
+	sg.sg_header.h_next_md_offset = cpu_to_le64(0);
+	if (sig.data != NULL && sig.len > 0) {
+		sg.sg_sig_size = cpu_to_le32(sig.len);
+		sg.sg_sig_offset = cpu_to_le64(rollback_pos);
+
+		result = write_to_bf(bfc, sig.data, sig.len, rollback_pos);
+		if (result)
+			goto err;
+	}
+
+	tree_area_pos = incfs_get_end_offset(bfc->bc_file);
+	if (tree_size > 0) {
+		if (tree_size > 5 * INCFS_DATA_FILE_BLOCK_SIZE) {
+			/*
+			 * If hash tree is big enough, it makes sense to
+			 * align in the backing file for faster access.
+			 */
+			loff_t offset = round_up(tree_area_pos, PAGE_SIZE);
+
+			alignment = offset - tree_area_pos;
+			tree_area_pos = offset;
+		}
+
+		/*
+		 * If root hash is not the only hash in the tree.
+		 * reserve 0-filled space for the tree.
+		 */
+		result = append_zeros(bfc, tree_size + alignment);
+		if (result)
+			goto err;
+
+		sg.sg_hash_tree_size = cpu_to_le32(tree_size);
+		sg.sg_hash_tree_offset = cpu_to_le64(tree_area_pos);
+	}
+
+	/* Write a hash tree metadata record pointing to the hash tree above. */
+	result = append_md_to_backing_file(bfc, &sg.sg_header);
+err:
+	if (result)
+		/* Error, rollback file changes */
+		truncate_backing_file(bfc, rollback_pos);
+	else {
+		if (tree_offset)
+			*tree_offset = tree_area_pos;
+		if (sig_offset)
+			*sig_offset = rollback_pos;
+	}
+
+	return result;
+}
+
+static int write_new_status_to_backing_file(struct backing_file_context *bfc,
+				       u32 data_blocks_written,
+				       u32 hash_blocks_written)
+{
+	int result;
+	loff_t rollback_pos;
+	struct incfs_status is = {
+		.is_header = {
+			.h_md_entry_type = INCFS_MD_STATUS,
+			.h_record_size = cpu_to_le16(sizeof(is)),
+		},
+		.is_data_blocks_written = cpu_to_le32(data_blocks_written),
+		.is_hash_blocks_written = cpu_to_le32(hash_blocks_written),
+	};
+
+	LOCK_REQUIRED(bfc->bc_mutex);
+	rollback_pos = incfs_get_end_offset(bfc->bc_file);
+	result = append_md_to_backing_file(bfc, &is.is_header);
+	if (result)
+		truncate_backing_file(bfc, rollback_pos);
+
+	return result;
+}
+
+int incfs_write_status_to_backing_file(struct backing_file_context *bfc,
+				       loff_t status_offset,
+				       u32 data_blocks_written,
+				       u32 hash_blocks_written)
+{
+	struct incfs_status is;
+	int result;
+
+	if (!bfc)
+		return -EFAULT;
+
+	if (status_offset == 0)
+		return write_new_status_to_backing_file(bfc,
+				data_blocks_written, hash_blocks_written);
+
+	result = incfs_kread(bfc, &is, sizeof(is), status_offset);
+	if (result != sizeof(is))
+		return -EIO;
+
+	is.is_data_blocks_written = cpu_to_le32(data_blocks_written);
+	is.is_hash_blocks_written = cpu_to_le32(hash_blocks_written);
+	result = incfs_kwrite(bfc, &is, sizeof(is), status_offset);
+	if (result != sizeof(is))
+		return -EIO;
+
+	return 0;
+}
+
+int incfs_write_verity_signature_to_backing_file(
+		struct backing_file_context *bfc, struct mem_range signature,
+		loff_t *offset)
+{
+	struct incfs_file_verity_signature vs = {};
+	int result;
+	loff_t pos;
+
+	/* No verity signature section is equivalent to an empty section */
+	if (signature.data == NULL || signature.len == 0)
+		return 0;
+
+	pos = incfs_get_end_offset(bfc->bc_file);
+
+	vs = (struct incfs_file_verity_signature) {
+		.vs_header = (struct incfs_md_header) {
+			.h_md_entry_type = INCFS_MD_VERITY_SIGNATURE,
+			.h_record_size = cpu_to_le16(sizeof(vs)),
+			.h_next_md_offset = cpu_to_le64(0),
+		},
+		.vs_size = cpu_to_le32(signature.len),
+		.vs_offset = cpu_to_le64(pos),
+	};
+
+	result = write_to_bf(bfc, signature.data, signature.len, pos);
+	if (result)
+		goto err;
+
+	result = append_md_to_backing_file(bfc, &vs.vs_header);
+	if (result)
+		goto err;
+
+	*offset = pos;
+err:
+	if (result)
+		/* Error, rollback file changes */
+		truncate_backing_file(bfc, pos);
+	return result;
+}
+
+/*
+ * Write a backing file header
+ * It should always be called only on empty file.
+ * fh.fh_first_md_offset is 0 for now, but will be updated
+ * once first metadata record is added.
+ */
+int incfs_write_fh_to_backing_file(struct backing_file_context *bfc,
+				   incfs_uuid_t *uuid, u64 file_size)
+{
+	struct incfs_file_header fh = {};
+	loff_t file_pos = 0;
+
+	if (!bfc)
+		return -EFAULT;
+
+	fh.fh_magic = cpu_to_le64(INCFS_MAGIC_NUMBER);
+	fh.fh_version = cpu_to_le64(INCFS_FORMAT_CURRENT_VER);
+	fh.fh_header_size = cpu_to_le16(sizeof(fh));
+	fh.fh_first_md_offset = cpu_to_le64(0);
+	fh.fh_data_block_size = cpu_to_le16(INCFS_DATA_FILE_BLOCK_SIZE);
+
+	fh.fh_file_size = cpu_to_le64(file_size);
+	fh.fh_uuid = *uuid;
+
+	LOCK_REQUIRED(bfc->bc_mutex);
+
+	file_pos = incfs_get_end_offset(bfc->bc_file);
+	if (file_pos != 0)
+		return -EEXIST;
+
+	return write_to_bf(bfc, &fh, sizeof(fh), file_pos);
+}
+
+/*
+ * Write a backing file header for a mapping file
+ * It should always be called only on empty file.
+ */
+int incfs_write_mapping_fh_to_backing_file(struct backing_file_context *bfc,
+				incfs_uuid_t *uuid, u64 file_size, u64 offset)
+{
+	struct incfs_file_header fh = {};
+	loff_t file_pos = 0;
+
+	if (!bfc)
+		return -EFAULT;
+
+	fh.fh_magic = cpu_to_le64(INCFS_MAGIC_NUMBER);
+	fh.fh_version = cpu_to_le64(INCFS_FORMAT_CURRENT_VER);
+	fh.fh_header_size = cpu_to_le16(sizeof(fh));
+	fh.fh_original_offset = cpu_to_le64(offset);
+	fh.fh_data_block_size = cpu_to_le16(INCFS_DATA_FILE_BLOCK_SIZE);
+
+	fh.fh_mapped_file_size = cpu_to_le64(file_size);
+	fh.fh_original_uuid = *uuid;
+	fh.fh_flags = cpu_to_le32(INCFS_FILE_MAPPED);
+
+	LOCK_REQUIRED(bfc->bc_mutex);
+
+	file_pos = incfs_get_end_offset(bfc->bc_file);
+	if (file_pos != 0)
+		return -EEXIST;
+
+	return write_to_bf(bfc, &fh, sizeof(fh), file_pos);
+}
+
+/* Write a given data block and update file's blockmap to point it. */
+int incfs_write_data_block_to_backing_file(struct backing_file_context *bfc,
+				     struct mem_range block, int block_index,
+				     loff_t bm_base_off, u16 flags)
+{
+	struct incfs_blockmap_entry bm_entry = {};
+	int result = 0;
+	loff_t data_offset = 0;
+	loff_t bm_entry_off =
+		bm_base_off + sizeof(struct incfs_blockmap_entry) * block_index;
+
+	if (!bfc)
+		return -EFAULT;
+
+	if (block.len >= (1 << 16) || block_index < 0)
+		return -EINVAL;
+
+	LOCK_REQUIRED(bfc->bc_mutex);
+
+	data_offset = incfs_get_end_offset(bfc->bc_file);
+	if (data_offset <= bm_entry_off) {
+		/* Blockmap entry is beyond the file's end. It is not normal. */
+		return -EINVAL;
+	}
+
+	/* Write the block data at the end of the backing file. */
+	result = write_to_bf(bfc, block.data, block.len, data_offset);
+	if (result)
+		return result;
+
+	/* Update the blockmap to point to the newly written data. */
+	bm_entry.me_data_offset_lo = cpu_to_le32((u32)data_offset);
+	bm_entry.me_data_offset_hi = cpu_to_le16((u16)(data_offset >> 32));
+	bm_entry.me_data_size = cpu_to_le16((u16)block.len);
+	bm_entry.me_flags = cpu_to_le16(flags);
+
+	return write_to_bf(bfc, &bm_entry, sizeof(bm_entry),
+				bm_entry_off);
+}
+
+int incfs_write_hash_block_to_backing_file(struct backing_file_context *bfc,
+					   struct mem_range block,
+					   int block_index,
+					   loff_t hash_area_off,
+					   loff_t bm_base_off,
+					   loff_t file_size)
+{
+	struct incfs_blockmap_entry bm_entry = {};
+	int result;
+	loff_t data_offset = 0;
+	loff_t file_end = 0;
+	loff_t bm_entry_off =
+		bm_base_off +
+		sizeof(struct incfs_blockmap_entry) *
+			(block_index + get_blocks_count_for_size(file_size));
+
+	if (!bfc)
+		return -EFAULT;
+
+	LOCK_REQUIRED(bfc->bc_mutex);
+
+	data_offset = hash_area_off + block_index * INCFS_DATA_FILE_BLOCK_SIZE;
+	file_end = incfs_get_end_offset(bfc->bc_file);
+	if (data_offset + block.len > file_end) {
+		/* Block is located beyond the file's end. It is not normal. */
+		return -EINVAL;
+	}
+
+	result = write_to_bf(bfc, block.data, block.len, data_offset);
+	if (result)
+		return result;
+
+	bm_entry.me_data_offset_lo = cpu_to_le32((u32)data_offset);
+	bm_entry.me_data_offset_hi = cpu_to_le16((u16)(data_offset >> 32));
+	bm_entry.me_data_size = cpu_to_le16(INCFS_DATA_FILE_BLOCK_SIZE);
+
+	return write_to_bf(bfc, &bm_entry, sizeof(bm_entry), bm_entry_off);
+}
+
+int incfs_read_blockmap_entry(struct backing_file_context *bfc, int block_index,
+			loff_t bm_base_off,
+			struct incfs_blockmap_entry *bm_entry)
+{
+	int error = incfs_read_blockmap_entries(bfc, bm_entry, block_index, 1,
+						bm_base_off);
+
+	if (error < 0)
+		return error;
+
+	if (error == 0)
+		return -EIO;
+
+	if (error != 1)
+		return -EFAULT;
+
+	return 0;
+}
+
+int incfs_read_blockmap_entries(struct backing_file_context *bfc,
+		struct incfs_blockmap_entry *entries,
+		int start_index, int blocks_number,
+		loff_t bm_base_off)
+{
+	loff_t bm_entry_off =
+		bm_base_off + sizeof(struct incfs_blockmap_entry) * start_index;
+	const size_t bytes_to_read = sizeof(struct incfs_blockmap_entry)
+					* blocks_number;
+	int result = 0;
+
+	if (!bfc || !entries)
+		return -EFAULT;
+
+	if (start_index < 0 || bm_base_off <= 0)
+		return -ENODATA;
+
+	result = incfs_kread(bfc, entries, bytes_to_read, bm_entry_off);
+	if (result < 0)
+		return result;
+	return result / sizeof(*entries);
+}
+
+int incfs_read_file_header(struct backing_file_context *bfc,
+			   loff_t *first_md_off, incfs_uuid_t *uuid,
+			   u64 *file_size, u32 *flags)
+{
+	ssize_t bytes_read = 0;
+	struct incfs_file_header fh = {};
+
+	if (!bfc || !first_md_off)
+		return -EFAULT;
+
+	bytes_read = incfs_kread(bfc, &fh, sizeof(fh), 0);
+	if (bytes_read < 0)
+		return bytes_read;
+
+	if (bytes_read < sizeof(fh))
+		return -EBADMSG;
+
+	if (le64_to_cpu(fh.fh_magic) != INCFS_MAGIC_NUMBER)
+		return -EILSEQ;
+
+	if (le64_to_cpu(fh.fh_version) > INCFS_FORMAT_CURRENT_VER)
+		return -EILSEQ;
+
+	if (le16_to_cpu(fh.fh_data_block_size) != INCFS_DATA_FILE_BLOCK_SIZE)
+		return -EILSEQ;
+
+	if (le16_to_cpu(fh.fh_header_size) != sizeof(fh))
+		return -EILSEQ;
+
+	if (first_md_off)
+		*first_md_off = le64_to_cpu(fh.fh_first_md_offset);
+	if (uuid)
+		*uuid = fh.fh_uuid;
+	if (file_size)
+		*file_size = le64_to_cpu(fh.fh_file_size);
+	if (flags)
+		*flags = le32_to_cpu(fh.fh_flags);
+	return 0;
+}
+
+/*
+ * Read through metadata records from the backing file one by one
+ * and call provided metadata handlers.
+ */
+int incfs_read_next_metadata_record(struct backing_file_context *bfc,
+			      struct metadata_handler *handler)
+{
+	const ssize_t max_md_size = INCFS_MAX_METADATA_RECORD_SIZE;
+	ssize_t bytes_read = 0;
+	size_t md_record_size = 0;
+	loff_t next_record = 0;
+	int res = 0;
+	struct incfs_md_header *md_hdr = NULL;
+
+	if (!bfc || !handler)
+		return -EFAULT;
+
+	if (handler->md_record_offset == 0)
+		return -EPERM;
+
+	memset(&handler->md_buffer, 0, max_md_size);
+	bytes_read = incfs_kread(bfc, &handler->md_buffer, max_md_size,
+				 handler->md_record_offset);
+	if (bytes_read < 0)
+		return bytes_read;
+	if (bytes_read < sizeof(*md_hdr))
+		return -EBADMSG;
+
+	md_hdr = &handler->md_buffer.md_header;
+	next_record = le64_to_cpu(md_hdr->h_next_md_offset);
+	md_record_size = le16_to_cpu(md_hdr->h_record_size);
+
+	if (md_record_size > max_md_size) {
+		pr_warn("incfs: The record is too large. Size: %zu",
+				md_record_size);
+		return -EBADMSG;
+	}
+
+	if (bytes_read < md_record_size) {
+		pr_warn("incfs: The record hasn't been fully read.");
+		return -EBADMSG;
+	}
+
+	if (next_record <= handler->md_record_offset && next_record != 0) {
+		pr_warn("incfs: Next record (%lld) points back in file.",
+			next_record);
+		return -EBADMSG;
+	}
+
+	switch (md_hdr->h_md_entry_type) {
+	case INCFS_MD_NONE:
+		break;
+	case INCFS_MD_BLOCK_MAP:
+		if (handler->handle_blockmap)
+			res = handler->handle_blockmap(
+				&handler->md_buffer.blockmap, handler);
+		break;
+	case INCFS_MD_FILE_ATTR:
+		/*
+		 * File attrs no longer supported, ignore section for
+		 * compatibility
+		 */
+		break;
+	case INCFS_MD_SIGNATURE:
+		if (handler->handle_signature)
+			res = handler->handle_signature(
+				&handler->md_buffer.signature, handler);
+		break;
+	case INCFS_MD_STATUS:
+		if (handler->handle_status)
+			res = handler->handle_status(
+				&handler->md_buffer.status, handler);
+		break;
+	case INCFS_MD_VERITY_SIGNATURE:
+		if (handler->handle_verity_signature)
+			res = handler->handle_verity_signature(
+				&handler->md_buffer.verity_signature, handler);
+		break;
+	default:
+		res = -ENOTSUPP;
+		break;
+	}
+
+	if (!res) {
+		if (next_record == 0) {
+			/*
+			 * Zero offset for the next record means that the last
+			 * metadata record has just been processed.
+			 */
+			bfc->bc_last_md_record_offset =
+				handler->md_record_offset;
+		}
+		handler->md_prev_record_offset = handler->md_record_offset;
+		handler->md_record_offset = next_record;
+	}
+	return res;
+}
+
+ssize_t incfs_kread(struct backing_file_context *bfc, void *buf, size_t size,
+		    loff_t pos)
+{
+	const struct cred *old_cred = override_creds(bfc->bc_cred);
+	int ret = kernel_read(bfc->bc_file, buf, size, &pos);
+
+	revert_creds(old_cred);
+	return ret;
+}
+
+ssize_t incfs_kwrite(struct backing_file_context *bfc, const void *buf,
+		     size_t size, loff_t pos)
+{
+	const struct cred *old_cred = override_creds(bfc->bc_cred);
+	int ret = kernel_write(bfc->bc_file, buf, size, &pos);
+
+	revert_creds(old_cred);
+	return ret;
+}
diff --git a/fs/incfs/format.h b/fs/incfs/format.h
new file mode 100644
index 0000000..14e475b
--- /dev/null
+++ b/fs/incfs/format.h
@@ -0,0 +1,407 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright 2018 Google LLC
+ */
+
+/*
+ * Overview
+ * --------
+ * The backbone of the incremental-fs ondisk format is an append only linked
+ * list of metadata blocks. Each metadata block contains an offset of the next
+ * one. These blocks describe files and directories on the
+ * file system. They also represent actions of adding and removing file names
+ * (hard links).
+ *
+ * Every time incremental-fs instance is mounted, it reads through this list
+ * to recreate filesystem's state in memory. An offset of the first record in
+ * the metadata list is stored in the superblock at the beginning of the backing
+ * file.
+ *
+ * Most of the backing file is taken by data areas and blockmaps.
+ * Since data blocks can be compressed and have different sizes,
+ * single per-file data area can't be pre-allocated. That's why blockmaps are
+ * needed in order to find a location and size of each data block in
+ * the backing file. Each time a file is created, a corresponding block map is
+ * allocated to store future offsets of data blocks.
+ *
+ * Whenever a data block is given by data loader to incremental-fs:
+ *   - A data area with the given block is appended to the end of
+ *     the backing file.
+ *   - A record in the blockmap for the given block index is updated to reflect
+ *     its location, size, and compression algorithm.
+
+ * Metadata records
+ * ----------------
+ * incfs_blockmap - metadata record that specifies size and location
+ *                           of a blockmap area for a given file. This area
+ *                           contains an array of incfs_blockmap_entry-s.
+ * incfs_file_signature - metadata record that specifies where file signature
+ *                           and its hash tree can be found in the backing file.
+ *
+ * incfs_file_attr - metadata record that specifies where additional file
+ *		        attributes blob can be found.
+ *
+ * Metadata header
+ * ---------------
+ * incfs_md_header - header of a metadata record. It's always a part
+ *                   of other structures and served purpose of metadata
+ *                   bookkeeping.
+ *
+ *              +-----------------------------------------------+       ^
+ *              |            incfs_md_header                    |       |
+ *              | 1. type of body(BLOCKMAP, FILE_ATTR..)        |       |
+ *              | 2. size of the whole record header + body     |       |
+ *              | 3. CRC the whole record header + body         |       |
+ *              | 4. offset of the previous md record           |]------+
+ *              | 5. offset of the next md record (md link)     |]---+
+ *              +-----------------------------------------------+    |
+ *              |  Metadata record body with useful data        |    |
+ *              +-----------------------------------------------+    |
+ *                                                                   +--->
+ *
+ * Other ondisk structures
+ * -----------------------
+ * incfs_super_block - backing file header
+ * incfs_blockmap_entry - a record in a blockmap area that describes size
+ *                       and location of a data block.
+ * Data blocks dont have any particular structure, they are written to the
+ * backing file in a raw form as they come from a data loader.
+ *
+ * Backing file layout
+ * -------------------
+ *
+ *
+ *              +-------------------------------------------+
+ *              |            incfs_file_header              |]---+
+ *              +-------------------------------------------+    |
+ *              |                 metadata                  |<---+
+ *              |           incfs_file_signature            |]---+
+ *              +-------------------------------------------+    |
+ *                        .........................              |
+ *              +-------------------------------------------+    |   metadata
+ *     +------->|               blockmap area               |    |  list links
+ *     |        |          [incfs_blockmap_entry]           |    |
+ *     |        |          [incfs_blockmap_entry]           |    |
+ *     |        |          [incfs_blockmap_entry]           |    |
+ *     |    +--[|          [incfs_blockmap_entry]           |    |
+ *     |    |   |          [incfs_blockmap_entry]           |    |
+ *     |    |   |          [incfs_blockmap_entry]           |    |
+ *     |    |   +-------------------------------------------+    |
+ *     |    |             .........................              |
+ *     |    |   +-------------------------------------------+    |
+ *     |    |   |                 metadata                  |<---+
+ *     +----|--[|               incfs_blockmap              |]---+
+ *          |   +-------------------------------------------+    |
+ *          |             .........................              |
+ *          |   +-------------------------------------------+    |
+ *          +-->|                 data block                |    |
+ *              +-------------------------------------------+    |
+ *                        .........................              |
+ *              +-------------------------------------------+    |
+ *              |                 metadata                  |<---+
+ *              |              incfs_file_attr              |
+ *              +-------------------------------------------+
+ */
+#ifndef _INCFS_FORMAT_H
+#define _INCFS_FORMAT_H
+#include <linux/types.h>
+#include <linux/kernel.h>
+#include <uapi/linux/incrementalfs.h>
+
+#include "internal.h"
+
+#define INCFS_MAX_NAME_LEN 255
+#define INCFS_FORMAT_V1 1
+#define INCFS_FORMAT_CURRENT_VER INCFS_FORMAT_V1
+
+enum incfs_metadata_type {
+	INCFS_MD_NONE = 0,
+	INCFS_MD_BLOCK_MAP = 1,
+	INCFS_MD_FILE_ATTR = 2,
+	INCFS_MD_SIGNATURE = 3,
+	INCFS_MD_STATUS = 4,
+	INCFS_MD_VERITY_SIGNATURE = 5,
+};
+
+enum incfs_file_header_flags {
+	INCFS_FILE_MAPPED = 1 << 1,
+};
+
+/* Header included at the beginning of all metadata records on the disk. */
+struct incfs_md_header {
+	__u8 h_md_entry_type;
+
+	/*
+	 * Size of the metadata record.
+	 * (e.g. inode, dir entry etc) not just this struct.
+	 */
+	__le16 h_record_size;
+
+	/*
+	 * Was: CRC32 of the metadata record.
+	 * (e.g. inode, dir entry etc) not just this struct.
+	 */
+	__le32 h_unused1;
+
+	/* Offset of the next metadata entry if any */
+	__le64 h_next_md_offset;
+
+	/* Was: Offset of the previous metadata entry if any */
+	__le64 h_unused2;
+
+} __packed;
+
+/* Backing file header */
+struct incfs_file_header {
+	/* Magic number: INCFS_MAGIC_NUMBER */
+	__le64 fh_magic;
+
+	/* Format version: INCFS_FORMAT_CURRENT_VER */
+	__le64 fh_version;
+
+	/* sizeof(incfs_file_header) */
+	__le16 fh_header_size;
+
+	/* INCFS_DATA_FILE_BLOCK_SIZE */
+	__le16 fh_data_block_size;
+
+	/* File flags, from incfs_file_header_flags */
+	__le32 fh_flags;
+
+	union {
+		/* Standard incfs file */
+		struct {
+			/* Offset of the first metadata record */
+			__le64 fh_first_md_offset;
+
+			/* Full size of the file's content */
+			__le64 fh_file_size;
+
+			/* File uuid */
+			incfs_uuid_t fh_uuid;
+		};
+
+		/* Mapped file - INCFS_FILE_MAPPED set in fh_flags */
+		struct {
+			/* Offset in original file */
+			__le64 fh_original_offset;
+
+			/* Full size of the file's content */
+			__le64 fh_mapped_file_size;
+
+			/* Original file's uuid */
+			incfs_uuid_t fh_original_uuid;
+		};
+	};
+} __packed;
+
+enum incfs_block_map_entry_flags {
+	INCFS_BLOCK_COMPRESSED_LZ4 = 1,
+	INCFS_BLOCK_COMPRESSED_ZSTD = 2,
+
+	/* Reserve 3 bits for compression alg */
+	INCFS_BLOCK_COMPRESSED_MASK = 7,
+};
+
+/* Block map entry pointing to an actual location of the data block. */
+struct incfs_blockmap_entry {
+	/* Offset of the actual data block. Lower 32 bits */
+	__le32 me_data_offset_lo;
+
+	/* Offset of the actual data block. Higher 16 bits */
+	__le16 me_data_offset_hi;
+
+	/* How many bytes the data actually occupies in the backing file */
+	__le16 me_data_size;
+
+	/* Block flags from incfs_block_map_entry_flags */
+	__le16 me_flags;
+} __packed;
+
+/* Metadata record for locations of file blocks. Type = INCFS_MD_BLOCK_MAP */
+struct incfs_blockmap {
+	struct incfs_md_header m_header;
+
+	/* Base offset of the array of incfs_blockmap_entry */
+	__le64 m_base_offset;
+
+	/* Size of the map entry array in blocks */
+	__le32 m_block_count;
+} __packed;
+
+/*
+ * Metadata record for file signature. Type = INCFS_MD_SIGNATURE
+ *
+ * The signature stored here is the APK V4 signature data blob. See the
+ * definition of incfs_new_file_args::signature_info for an explanation of this
+ * blob. Specifically, it contains the root hash, but it does *not* contain
+ * anything that the kernel treats as a signature.
+ *
+ * When FS_IOC_ENABLE_VERITY is called on a file without this record, an APK V4
+ * signature blob and a hash tree are added to the file, and then this metadata
+ * record is created to record their locations.
+ */
+struct incfs_file_signature {
+	struct incfs_md_header sg_header;
+
+	__le32 sg_sig_size; /* The size of the signature. */
+
+	__le64 sg_sig_offset; /* Signature's offset in the backing file */
+
+	__le32 sg_hash_tree_size; /* The size of the hash tree. */
+
+	__le64 sg_hash_tree_offset; /* Hash tree offset in the backing file */
+} __packed;
+
+/* In memory version of above */
+struct incfs_df_signature {
+	u32 sig_size;
+	u64 sig_offset;
+	u32 hash_size;
+	u64 hash_offset;
+};
+
+struct incfs_status {
+	struct incfs_md_header is_header;
+
+	__le32 is_data_blocks_written; /* Number of data blocks written */
+
+	__le32 is_hash_blocks_written; /* Number of hash blocks written */
+
+	__le32 is_dummy[6]; /* Spare fields */
+} __packed;
+
+/*
+ * Metadata record for verity signature. Type = INCFS_MD_VERITY_SIGNATURE
+ *
+ * This record will only exist for verity-enabled files with signatures. Verity
+ * enabled files without signatures do not have this record. This signature is
+ * checked by fs-verity identically to any other fs-verity signature.
+ */
+struct incfs_file_verity_signature {
+	struct incfs_md_header vs_header;
+
+	 /* The size of the signature */
+	__le32 vs_size;
+
+	 /* Signature's offset in the backing file */
+	__le64 vs_offset;
+} __packed;
+
+/* In memory version of above */
+struct incfs_df_verity_signature {
+	u32 size;
+	u64 offset;
+};
+
+/* State of the backing file. */
+struct backing_file_context {
+	/* Protects writes to bc_file */
+	struct mutex bc_mutex;
+
+	/* File object to read data from */
+	struct file *bc_file;
+
+	/*
+	 * Offset of the last known metadata record in the backing file.
+	 * 0 means there are no metadata records.
+	 */
+	loff_t bc_last_md_record_offset;
+
+	/*
+	 * Credentials to set before reads/writes
+	 * Note that this is a pointer to the mount_info mi_owner field so
+	 * there is no need to get/put the creds
+	 */
+	const struct cred *bc_cred;
+};
+
+struct metadata_handler {
+	loff_t md_record_offset;
+	loff_t md_prev_record_offset;
+	void *context;
+
+	union {
+		struct incfs_md_header md_header;
+		struct incfs_blockmap blockmap;
+		struct incfs_file_signature signature;
+		struct incfs_status status;
+		struct incfs_file_verity_signature verity_signature;
+	} md_buffer;
+
+	int (*handle_blockmap)(struct incfs_blockmap *bm,
+			       struct metadata_handler *handler);
+	int (*handle_signature)(struct incfs_file_signature *sig,
+				 struct metadata_handler *handler);
+	int (*handle_status)(struct incfs_status *sig,
+				 struct metadata_handler *handler);
+	int (*handle_verity_signature)(struct incfs_file_verity_signature *s,
+					struct metadata_handler *handler);
+};
+#define INCFS_MAX_METADATA_RECORD_SIZE \
+	sizeof_field(struct metadata_handler, md_buffer)
+
+/* Backing file context management */
+struct mount_info;
+struct backing_file_context *incfs_alloc_bfc(struct mount_info *mi,
+					     struct file *backing_file);
+
+void incfs_free_bfc(struct backing_file_context *bfc);
+
+/* Writing stuff */
+int incfs_write_blockmap_to_backing_file(struct backing_file_context *bfc,
+					 u32 block_count);
+
+int incfs_write_fh_to_backing_file(struct backing_file_context *bfc,
+				   incfs_uuid_t *uuid, u64 file_size);
+
+int incfs_write_mapping_fh_to_backing_file(struct backing_file_context *bfc,
+				incfs_uuid_t *uuid, u64 file_size, u64 offset);
+
+int incfs_write_data_block_to_backing_file(struct backing_file_context *bfc,
+					   struct mem_range block,
+					   int block_index, loff_t bm_base_off,
+					   u16 flags);
+
+int incfs_write_hash_block_to_backing_file(struct backing_file_context *bfc,
+					   struct mem_range block,
+					   int block_index,
+					   loff_t hash_area_off,
+					   loff_t bm_base_off,
+					   loff_t file_size);
+
+int incfs_write_signature_to_backing_file(struct backing_file_context *bfc,
+				struct mem_range sig, u32 tree_size,
+				loff_t *tree_offset, loff_t *sig_offset);
+
+int incfs_write_status_to_backing_file(struct backing_file_context *bfc,
+				       loff_t status_offset,
+				       u32 data_blocks_written,
+				       u32 hash_blocks_written);
+int incfs_write_verity_signature_to_backing_file(
+		struct backing_file_context *bfc, struct mem_range signature,
+		loff_t *offset);
+
+/* Reading stuff */
+int incfs_read_file_header(struct backing_file_context *bfc,
+			   loff_t *first_md_off, incfs_uuid_t *uuid,
+			   u64 *file_size, u32 *flags);
+
+int incfs_read_blockmap_entry(struct backing_file_context *bfc, int block_index,
+			      loff_t bm_base_off,
+			      struct incfs_blockmap_entry *bm_entry);
+
+int incfs_read_blockmap_entries(struct backing_file_context *bfc,
+		struct incfs_blockmap_entry *entries,
+		int start_index, int blocks_number,
+		loff_t bm_base_off);
+
+int incfs_read_next_metadata_record(struct backing_file_context *bfc,
+				    struct metadata_handler *handler);
+
+ssize_t incfs_kread(struct backing_file_context *bfc, void *buf, size_t size,
+		    loff_t pos);
+ssize_t incfs_kwrite(struct backing_file_context *bfc, const void *buf,
+		     size_t size, loff_t pos);
+
+#endif /* _INCFS_FORMAT_H */
diff --git a/fs/incfs/integrity.c b/fs/incfs/integrity.c
new file mode 100644
index 0000000..93e7643
--- /dev/null
+++ b/fs/incfs/integrity.c
@@ -0,0 +1,235 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright 2019 Google LLC
+ */
+#include <crypto/sha2.h>
+#include <crypto/hash.h>
+#include <linux/err.h>
+#include <linux/version.h>
+
+#include "integrity.h"
+
+struct incfs_hash_alg *incfs_get_hash_alg(enum incfs_hash_tree_algorithm id)
+{
+	static struct incfs_hash_alg sha256 = {
+		.name = "sha256",
+		.digest_size = SHA256_DIGEST_SIZE,
+		.id = INCFS_HASH_TREE_SHA256
+	};
+	struct incfs_hash_alg *result = NULL;
+	struct crypto_shash *shash;
+
+	if (id == INCFS_HASH_TREE_SHA256) {
+		BUILD_BUG_ON(INCFS_MAX_HASH_SIZE < SHA256_DIGEST_SIZE);
+		result = &sha256;
+	}
+
+	if (result == NULL)
+		return ERR_PTR(-ENOENT);
+
+	/* pairs with cmpxchg_release() below */
+	shash = smp_load_acquire(&result->shash);
+	if (shash)
+		return result;
+
+	shash = crypto_alloc_shash(result->name, 0, 0);
+	if (IS_ERR(shash)) {
+		int err = PTR_ERR(shash);
+
+		pr_err("Can't allocate hash alg %s, error code:%d",
+			result->name, err);
+		return ERR_PTR(err);
+	}
+
+	/* pairs with smp_load_acquire() above */
+	if (cmpxchg_release(&result->shash, NULL, shash) != NULL)
+		crypto_free_shash(shash);
+
+	return result;
+}
+
+struct signature_info {
+	u32 version;
+	enum incfs_hash_tree_algorithm hash_algorithm;
+	u8 log2_blocksize;
+	struct mem_range salt;
+	struct mem_range root_hash;
+};
+
+static bool read_u32(u8 **p, u8 *top, u32 *result)
+{
+	if (*p + sizeof(u32) > top)
+		return false;
+
+	*result = le32_to_cpu(*(__le32 *)*p);
+	*p += sizeof(u32);
+	return true;
+}
+
+static bool read_u8(u8 **p, u8 *top, u8 *result)
+{
+	if (*p + sizeof(u8) > top)
+		return false;
+
+	*result = *(u8 *)*p;
+	*p += sizeof(u8);
+	return true;
+}
+
+static bool read_mem_range(u8 **p, u8 *top, struct mem_range *range)
+{
+	u32 len;
+
+	if (!read_u32(p, top, &len) || *p + len > top)
+		return false;
+
+	range->len = len;
+	range->data = *p;
+	*p += len;
+	return true;
+}
+
+static int incfs_parse_signature(struct mem_range signature,
+				 struct signature_info *si)
+{
+	u8 *p = signature.data;
+	u8 *top = signature.data + signature.len;
+	u32 hash_section_size;
+
+	if (signature.len > INCFS_MAX_SIGNATURE_SIZE)
+		return -EINVAL;
+
+	if (!read_u32(&p, top, &si->version) ||
+	    si->version != INCFS_SIGNATURE_VERSION)
+		return -EINVAL;
+
+	if (!read_u32(&p, top, &hash_section_size) ||
+	    p + hash_section_size > top)
+		return -EINVAL;
+	top = p + hash_section_size;
+
+	if (!read_u32(&p, top, &si->hash_algorithm) ||
+	    si->hash_algorithm != INCFS_HASH_TREE_SHA256)
+		return -EINVAL;
+
+	if (!read_u8(&p, top, &si->log2_blocksize) || si->log2_blocksize != 12)
+		return -EINVAL;
+
+	if (!read_mem_range(&p, top, &si->salt))
+		return -EINVAL;
+
+	if (!read_mem_range(&p, top, &si->root_hash))
+		return -EINVAL;
+
+	if (p != top)
+		return -EINVAL;
+
+	return 0;
+}
+
+struct mtree *incfs_alloc_mtree(struct mem_range signature,
+				int data_block_count)
+{
+	int error;
+	struct signature_info si;
+	struct mtree *result = NULL;
+	struct incfs_hash_alg *hash_alg = NULL;
+	int hash_per_block;
+	int lvl;
+	int total_blocks = 0;
+	int blocks_in_level[INCFS_MAX_MTREE_LEVELS];
+	int blocks = data_block_count;
+
+	if (data_block_count <= 0)
+		return ERR_PTR(-EINVAL);
+
+	error = incfs_parse_signature(signature, &si);
+	if (error)
+		return ERR_PTR(error);
+
+	hash_alg = incfs_get_hash_alg(si.hash_algorithm);
+	if (IS_ERR(hash_alg))
+		return ERR_PTR(PTR_ERR(hash_alg));
+
+	if (si.root_hash.len < hash_alg->digest_size)
+		return ERR_PTR(-EINVAL);
+
+	result = kzalloc(sizeof(*result), GFP_NOFS);
+	if (!result)
+		return ERR_PTR(-ENOMEM);
+
+	result->alg = hash_alg;
+	hash_per_block = INCFS_DATA_FILE_BLOCK_SIZE / result->alg->digest_size;
+
+	/* Calculating tree geometry. */
+	/* First pass: calculate how many blocks in each tree level. */
+	for (lvl = 0; blocks > 1; lvl++) {
+		if (lvl >= INCFS_MAX_MTREE_LEVELS) {
+			pr_err("incfs: too much data in mtree");
+			goto err;
+		}
+
+		blocks = (blocks + hash_per_block - 1) / hash_per_block;
+		blocks_in_level[lvl] = blocks;
+		total_blocks += blocks;
+	}
+	result->depth = lvl;
+	result->hash_tree_area_size = total_blocks * INCFS_DATA_FILE_BLOCK_SIZE;
+	if (result->hash_tree_area_size > INCFS_MAX_HASH_AREA_SIZE)
+		goto err;
+
+	blocks = 0;
+	/* Second pass: calculate offset of each level. 0th level goes last. */
+	for (lvl = 0; lvl < result->depth; lvl++) {
+		u32 suboffset;
+
+		blocks += blocks_in_level[lvl];
+		suboffset = (total_blocks - blocks)
+					* INCFS_DATA_FILE_BLOCK_SIZE;
+
+		result->hash_level_suboffset[lvl] = suboffset;
+	}
+
+	/* Root hash is stored separately from the rest of the tree. */
+	memcpy(result->root_hash, si.root_hash.data, hash_alg->digest_size);
+	return result;
+
+err:
+	kfree(result);
+	return ERR_PTR(-E2BIG);
+}
+
+void incfs_free_mtree(struct mtree *tree)
+{
+	kfree(tree);
+}
+
+int incfs_calc_digest(struct incfs_hash_alg *alg, struct mem_range data,
+			struct mem_range digest)
+{
+	SHASH_DESC_ON_STACK(desc, alg->shash);
+
+	if (!alg || !alg->shash || !data.data || !digest.data)
+		return -EFAULT;
+
+	if (alg->digest_size > digest.len)
+		return -EINVAL;
+
+	desc->tfm = alg->shash;
+
+	if (data.len < INCFS_DATA_FILE_BLOCK_SIZE) {
+		int err;
+		void *buf = kzalloc(INCFS_DATA_FILE_BLOCK_SIZE, GFP_NOFS);
+
+		if (!buf)
+			return -ENOMEM;
+
+		memcpy(buf, data.data, data.len);
+		err = crypto_shash_digest(desc, buf, INCFS_DATA_FILE_BLOCK_SIZE,
+					  digest.data);
+		kfree(buf);
+		return err;
+	}
+	return crypto_shash_digest(desc, data.data, data.len, digest.data);
+}
+
diff --git a/fs/incfs/integrity.h b/fs/incfs/integrity.h
new file mode 100644
index 0000000..cf79b64
--- /dev/null
+++ b/fs/incfs/integrity.h
@@ -0,0 +1,56 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright 2019 Google LLC
+ */
+#ifndef _INCFS_INTEGRITY_H
+#define _INCFS_INTEGRITY_H
+#include <linux/types.h>
+#include <linux/kernel.h>
+#include <crypto/hash.h>
+
+#include <uapi/linux/incrementalfs.h>
+
+#include "internal.h"
+
+#define INCFS_MAX_MTREE_LEVELS 8
+#define INCFS_MAX_HASH_AREA_SIZE (1280 * 1024 * 1024)
+
+struct incfs_hash_alg {
+	const char *name;
+	int digest_size;
+	enum incfs_hash_tree_algorithm id;
+
+	struct crypto_shash *shash;
+};
+
+/* Merkle tree structure. */
+struct mtree {
+	struct incfs_hash_alg *alg;
+
+	u8 root_hash[INCFS_MAX_HASH_SIZE];
+
+	/* Offset of each hash level in the hash area. */
+	u32 hash_level_suboffset[INCFS_MAX_MTREE_LEVELS];
+
+	u32 hash_tree_area_size;
+
+	/* Number of levels in hash_level_suboffset */
+	int depth;
+};
+
+struct incfs_hash_alg *incfs_get_hash_alg(enum incfs_hash_tree_algorithm id);
+
+struct mtree *incfs_alloc_mtree(struct mem_range signature,
+				int data_block_count);
+
+void incfs_free_mtree(struct mtree *tree);
+
+size_t incfs_get_mtree_depth(enum incfs_hash_tree_algorithm alg, loff_t size);
+
+size_t incfs_get_mtree_hash_count(enum incfs_hash_tree_algorithm alg,
+					loff_t size);
+
+int incfs_calc_digest(struct incfs_hash_alg *alg, struct mem_range data,
+			struct mem_range digest);
+
+#endif /* _INCFS_INTEGRITY_H */
diff --git a/fs/incfs/internal.h b/fs/incfs/internal.h
new file mode 100644
index 0000000..c2df8bf
--- /dev/null
+++ b/fs/incfs/internal.h
@@ -0,0 +1,23 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright 2018 Google LLC
+ */
+#ifndef _INCFS_INTERNAL_H
+#define _INCFS_INTERNAL_H
+#include <linux/types.h>
+
+struct mem_range {
+	u8 *data;
+	size_t len;
+};
+
+static inline struct mem_range range(u8 *data, size_t len)
+{
+	return (struct mem_range){ .data = data, .len = len };
+}
+
+#define LOCK_REQUIRED(lock)  WARN_ON_ONCE(!mutex_is_locked(&lock))
+
+#define EFSCORRUPTED EUCLEAN
+
+#endif /* _INCFS_INTERNAL_H */
diff --git a/fs/incfs/main.c b/fs/incfs/main.c
new file mode 100644
index 0000000..23347ac
--- /dev/null
+++ b/fs/incfs/main.c
@@ -0,0 +1,48 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright 2018 Google LLC
+ */
+#include <linux/fs.h>
+#include <linux/init.h>
+#include <linux/module.h>
+
+#include <uapi/linux/incrementalfs.h>
+
+#include "sysfs.h"
+#include "vfs.h"
+
+static struct file_system_type incfs_fs_type = {
+	.owner = THIS_MODULE,
+	.name = INCFS_NAME,
+	.mount = incfs_mount_fs,
+	.kill_sb = incfs_kill_sb,
+	.fs_flags = 0
+};
+
+static int __init init_incfs_module(void)
+{
+	int err = 0;
+
+	err = incfs_init_sysfs();
+	if (err)
+		return err;
+
+	err = register_filesystem(&incfs_fs_type);
+	if (err)
+		incfs_cleanup_sysfs();
+
+	return err;
+}
+
+static void __exit cleanup_incfs_module(void)
+{
+	incfs_cleanup_sysfs();
+	unregister_filesystem(&incfs_fs_type);
+}
+
+module_init(init_incfs_module);
+module_exit(cleanup_incfs_module);
+
+MODULE_LICENSE("GPL v2");
+MODULE_AUTHOR("Eugene Zemtsov <ezemtsov@google.com>");
+MODULE_DESCRIPTION("Incremental File System");
diff --git a/fs/incfs/pseudo_files.c b/fs/incfs/pseudo_files.c
new file mode 100644
index 0000000..57c3353
--- /dev/null
+++ b/fs/incfs/pseudo_files.c
@@ -0,0 +1,1393 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright 2020 Google LLC
+ */
+
+#include <linux/file.h>
+#include <linux/fs.h>
+#include <linux/fsnotify.h>
+#include <linux/namei.h>
+#include <linux/poll.h>
+#include <linux/syscalls.h>
+#include <linux/fdtable.h>
+
+#include <uapi/linux/incrementalfs.h>
+
+#include "pseudo_files.h"
+
+#include "data_mgmt.h"
+#include "format.h"
+#include "integrity.h"
+#include "vfs.h"
+
+#define READ_WRITE_FILE_MODE 0666
+
+static bool is_pseudo_filename(struct mem_range name);
+
+/*******************************************************************************
+ * .pending_reads pseudo file definition
+ ******************************************************************************/
+#define INCFS_PENDING_READS_INODE 2
+static const char pending_reads_file_name[] = INCFS_PENDING_READS_FILENAME;
+
+/* State of an open .pending_reads file, unique for each file descriptor. */
+struct pending_reads_state {
+	/* A serial number of the last pending read obtained from this file. */
+	int last_pending_read_sn;
+};
+
+static ssize_t pending_reads_read(struct file *f, char __user *buf, size_t len,
+			    loff_t *ppos)
+{
+	struct pending_reads_state *pr_state = f->private_data;
+	struct mount_info *mi = get_mount_info(file_superblock(f));
+	bool report_uid;
+	unsigned long page = 0;
+	struct incfs_pending_read_info *reads_buf = NULL;
+	struct incfs_pending_read_info2 *reads_buf2 = NULL;
+	size_t record_size;
+	size_t reads_to_collect;
+	int last_known_read_sn = READ_ONCE(pr_state->last_pending_read_sn);
+	int new_max_sn = last_known_read_sn;
+	int reads_collected = 0;
+	ssize_t result = 0;
+
+	if (!mi)
+		return -EFAULT;
+
+	report_uid = mi->mi_options.report_uid;
+	record_size = report_uid ? sizeof(*reads_buf2) : sizeof(*reads_buf);
+	reads_to_collect = len / record_size;
+
+	if (!incfs_fresh_pending_reads_exist(mi, last_known_read_sn))
+		return 0;
+
+	page = get_zeroed_page(GFP_NOFS);
+	if (!page)
+		return -ENOMEM;
+
+	if (report_uid)
+		reads_buf2 = (struct incfs_pending_read_info2 *) page;
+	else
+		reads_buf = (struct incfs_pending_read_info *) page;
+
+	reads_to_collect =
+		min_t(size_t, PAGE_SIZE / record_size, reads_to_collect);
+
+	reads_collected = incfs_collect_pending_reads(mi, last_known_read_sn,
+				reads_buf, reads_buf2, reads_to_collect,
+				&new_max_sn);
+
+	if (reads_collected < 0) {
+		result = reads_collected;
+		goto out;
+	}
+
+	/*
+	 * Just to make sure that we don't accidentally copy more data
+	 * to reads buffer than userspace can handle.
+	 */
+	reads_collected = min_t(size_t, reads_collected, reads_to_collect);
+	result = reads_collected * record_size;
+
+	/* Copy reads info to the userspace buffer */
+	if (copy_to_user(buf, (void *)page, result)) {
+		result = -EFAULT;
+		goto out;
+	}
+
+	WRITE_ONCE(pr_state->last_pending_read_sn, new_max_sn);
+	*ppos = 0;
+
+out:
+	free_page(page);
+	return result;
+}
+
+static __poll_t pending_reads_poll(struct file *file, poll_table *wait)
+{
+	struct pending_reads_state *state = file->private_data;
+	struct mount_info *mi = get_mount_info(file_superblock(file));
+	__poll_t ret = 0;
+
+	poll_wait(file, &mi->mi_pending_reads_notif_wq, wait);
+	if (incfs_fresh_pending_reads_exist(mi,
+					    state->last_pending_read_sn))
+		ret = EPOLLIN | EPOLLRDNORM;
+
+	return ret;
+}
+
+static int pending_reads_open(struct inode *inode, struct file *file)
+{
+	struct pending_reads_state *state = NULL;
+
+	state = kzalloc(sizeof(*state), GFP_NOFS);
+	if (!state)
+		return -ENOMEM;
+
+	file->private_data = state;
+	return 0;
+}
+
+static int pending_reads_release(struct inode *inode, struct file *file)
+{
+	kfree(file->private_data);
+	return 0;
+}
+
+static long ioctl_permit_fill(struct file *f, void __user *arg)
+{
+	struct incfs_permit_fill __user *usr_permit_fill = arg;
+	struct incfs_permit_fill permit_fill;
+	long error = 0;
+	struct file *file = NULL;
+	struct incfs_file_data *fd;
+
+	if (copy_from_user(&permit_fill, usr_permit_fill, sizeof(permit_fill)))
+		return -EFAULT;
+
+	file = fget(permit_fill.file_descriptor);
+	if (IS_ERR_OR_NULL(file)) {
+		if (!file)
+			return -ENOENT;
+
+		return PTR_ERR(file);
+	}
+
+	if (file->f_op != &incfs_file_ops) {
+		error = -EPERM;
+		goto out;
+	}
+
+	if (file->f_inode->i_sb != f->f_inode->i_sb) {
+		error = -EPERM;
+		goto out;
+	}
+
+	fd = file->private_data;
+
+	switch (fd->fd_fill_permission) {
+	case CANT_FILL:
+		fd->fd_fill_permission = CAN_FILL;
+		break;
+
+	case CAN_FILL:
+		pr_debug("CAN_FILL already set");
+		break;
+
+	default:
+		pr_warn("Invalid file private data");
+		error = -EFAULT;
+		goto out;
+	}
+
+out:
+	fput(file);
+	return error;
+}
+
+static int chmod(struct dentry *dentry, umode_t mode)
+{
+	struct inode *inode = dentry->d_inode;
+	struct inode *delegated_inode = NULL;
+	struct iattr newattrs;
+	int error;
+
+retry_deleg:
+	inode_lock(inode);
+	newattrs.ia_mode = (mode & S_IALLUGO) | (inode->i_mode & ~S_IALLUGO);
+	newattrs.ia_valid = ATTR_MODE | ATTR_CTIME;
+	error = notify_change(&init_user_ns, dentry, &newattrs, &delegated_inode);
+	inode_unlock(inode);
+	if (delegated_inode) {
+		error = break_deleg_wait(&delegated_inode);
+		if (!error)
+			goto retry_deleg;
+	}
+	return error;
+}
+
+static bool incfs_equal_ranges(struct mem_range lhs, struct mem_range rhs)
+{
+	if (lhs.len != rhs.len)
+		return false;
+	return memcmp(lhs.data, rhs.data, lhs.len) == 0;
+}
+
+static int validate_name(char *file_name)
+{
+	struct mem_range name = range(file_name, strlen(file_name));
+	int i = 0;
+
+	if (name.len > INCFS_MAX_NAME_LEN)
+		return -ENAMETOOLONG;
+
+	if (is_pseudo_filename(name))
+		return -EINVAL;
+
+	for (i = 0; i < name.len; i++)
+		if (name.data[i] == '/')
+			return -EINVAL;
+
+	return 0;
+}
+
+static int dir_relative_path_resolve(
+			struct mount_info *mi,
+			const char __user *relative_path,
+			struct path *result_path,
+			struct path *base_path)
+{
+	int dir_fd = get_unused_fd_flags(0);
+	struct file *dir_f = NULL;
+	int error = 0;
+
+	if (!base_path)
+		base_path = &mi->mi_backing_dir_path;
+
+	if (dir_fd < 0)
+		return dir_fd;
+
+	dir_f = dentry_open(base_path, O_RDONLY | O_NOATIME, current_cred());
+
+	if (IS_ERR(dir_f)) {
+		error = PTR_ERR(dir_f);
+		goto out;
+	}
+	fd_install(dir_fd, dir_f);
+
+	if (!relative_path) {
+		/* No relative path given, just return the base dir. */
+		*result_path = *base_path;
+		path_get(result_path);
+		goto out;
+	}
+
+	error = user_path_at_empty(dir_fd, relative_path,
+		LOOKUP_FOLLOW | LOOKUP_DIRECTORY, result_path, NULL);
+
+out:
+	close_fd(dir_fd);
+	if (error)
+		pr_debug("Error: %d\n", error);
+	return error;
+}
+
+static struct mem_range incfs_copy_signature_info_from_user(u8 __user *original,
+							    u64 size)
+{
+	u8 *result;
+
+	if (!original)
+		return range(NULL, 0);
+
+	if (size > INCFS_MAX_SIGNATURE_SIZE)
+		return range(ERR_PTR(-EFAULT), 0);
+
+	result = kzalloc(size, GFP_NOFS | __GFP_COMP);
+	if (!result)
+		return range(ERR_PTR(-ENOMEM), 0);
+
+	if (copy_from_user(result, original, size)) {
+		kfree(result);
+		return range(ERR_PTR(-EFAULT), 0);
+	}
+
+	return range(result, size);
+}
+
+static int init_new_file(struct mount_info *mi, struct dentry *dentry,
+			 incfs_uuid_t *uuid, u64 size, struct mem_range attr,
+			 u8 __user *user_signature_info, u64 signature_size)
+{
+	struct path path = {};
+	struct file *new_file;
+	int error = 0;
+	struct backing_file_context *bfc = NULL;
+	u32 block_count;
+	struct mem_range raw_signature = { NULL };
+	struct mtree *hash_tree = NULL;
+
+	if (!mi || !dentry || !uuid)
+		return -EFAULT;
+
+	/* Resize newly created file to its true size. */
+	path = (struct path) {
+		.mnt = mi->mi_backing_dir_path.mnt,
+		.dentry = dentry
+	};
+
+	new_file = dentry_open(&path, O_RDWR | O_NOATIME | O_LARGEFILE,
+			       current_cred());
+
+	if (IS_ERR(new_file)) {
+		error = PTR_ERR(new_file);
+		goto out;
+	}
+
+	bfc = incfs_alloc_bfc(mi, new_file);
+	fput(new_file);
+	if (IS_ERR(bfc)) {
+		error = PTR_ERR(bfc);
+		bfc = NULL;
+		goto out;
+	}
+
+	mutex_lock(&bfc->bc_mutex);
+	error = incfs_write_fh_to_backing_file(bfc, uuid, size);
+	if (error)
+		goto out;
+
+	block_count = (u32)get_blocks_count_for_size(size);
+
+	if (user_signature_info) {
+		raw_signature = incfs_copy_signature_info_from_user(
+			user_signature_info, signature_size);
+
+		if (IS_ERR(raw_signature.data)) {
+			error = PTR_ERR(raw_signature.data);
+			raw_signature.data = NULL;
+			goto out;
+		}
+
+		hash_tree = incfs_alloc_mtree(raw_signature, block_count);
+		if (IS_ERR(hash_tree)) {
+			error = PTR_ERR(hash_tree);
+			hash_tree = NULL;
+			goto out;
+		}
+
+		error = incfs_write_signature_to_backing_file(bfc,
+				raw_signature, hash_tree->hash_tree_area_size,
+				NULL, NULL);
+		if (error)
+			goto out;
+
+		block_count += get_blocks_count_for_size(
+			hash_tree->hash_tree_area_size);
+	}
+
+	if (block_count)
+		error = incfs_write_blockmap_to_backing_file(bfc, block_count);
+
+	if (error)
+		goto out;
+
+out:
+	if (bfc) {
+		mutex_unlock(&bfc->bc_mutex);
+		incfs_free_bfc(bfc);
+	}
+	incfs_free_mtree(hash_tree);
+	kfree(raw_signature.data);
+
+	if (error)
+		pr_debug("incfs: %s error: %d\n", __func__, error);
+	return error;
+}
+
+static void notify_create(struct file *pending_reads_file,
+			  const char  __user *dir_name, const char *file_name,
+			  const char *file_id_str, bool incomplete_file)
+{
+	struct mount_info *mi =
+		get_mount_info(file_superblock(pending_reads_file));
+	struct path base_path = {
+		.mnt = pending_reads_file->f_path.mnt,
+		.dentry = pending_reads_file->f_path.dentry->d_parent,
+	};
+	struct path dir_path = {};
+	struct dentry *file = NULL;
+	struct dentry *dir = NULL;
+	int error;
+
+	error = dir_relative_path_resolve(mi, dir_name, &dir_path, &base_path);
+	if (error)
+		goto out;
+
+	file = incfs_lookup_dentry(dir_path.dentry, file_name);
+	if (IS_ERR(file)) {
+		error = PTR_ERR(file);
+		file = NULL;
+		goto out;
+	}
+
+	fsnotify_create(d_inode(dir_path.dentry), file);
+
+	if (file_id_str) {
+		dir = incfs_lookup_dentry(base_path.dentry, INCFS_INDEX_NAME);
+		if (IS_ERR(dir)) {
+			error = PTR_ERR(dir);
+			dir = NULL;
+			goto out;
+		}
+
+		dput(file);
+		file = incfs_lookup_dentry(dir, file_id_str);
+		if (IS_ERR(file)) {
+			error = PTR_ERR(file);
+			file = NULL;
+			goto out;
+		}
+
+		fsnotify_create(d_inode(dir), file);
+
+		if (incomplete_file) {
+			dput(dir);
+			dir = incfs_lookup_dentry(base_path.dentry,
+						  INCFS_INCOMPLETE_NAME);
+			if (IS_ERR(dir)) {
+				error = PTR_ERR(dir);
+				dir = NULL;
+				goto out;
+			}
+
+			dput(file);
+			file = incfs_lookup_dentry(dir, file_id_str);
+			if (IS_ERR(file)) {
+				error = PTR_ERR(file);
+				file = NULL;
+				goto out;
+			}
+
+			fsnotify_create(d_inode(dir), file);
+		}
+	}
+out:
+	if (error)
+		pr_warn("%s failed with error %d\n", __func__, error);
+
+	dput(dir);
+	dput(file);
+	path_put(&dir_path);
+}
+
+static long ioctl_create_file(struct file *file,
+			struct incfs_new_file_args __user *usr_args)
+{
+	struct mount_info *mi = get_mount_info(file_superblock(file));
+	struct incfs_new_file_args args;
+	char *file_id_str = NULL;
+	struct dentry *index_file_dentry = NULL;
+	struct dentry *named_file_dentry = NULL;
+	struct dentry *incomplete_file_dentry = NULL;
+	struct path parent_dir_path = {};
+	struct inode *index_dir_inode = NULL;
+	__le64 size_attr_value = 0;
+	char *file_name = NULL;
+	char *attr_value = NULL;
+	int error = 0;
+	bool locked = false;
+	bool index_linked = false;
+	bool name_linked = false;
+	bool incomplete_linked = false;
+
+	if (!mi || !mi->mi_index_dir || !mi->mi_incomplete_dir) {
+		error = -EFAULT;
+		goto out;
+	}
+
+	if (copy_from_user(&args, usr_args, sizeof(args)) > 0) {
+		error = -EFAULT;
+		goto out;
+	}
+
+	file_name = strndup_user(u64_to_user_ptr(args.file_name), PATH_MAX);
+	if (IS_ERR(file_name)) {
+		error = PTR_ERR(file_name);
+		file_name = NULL;
+		goto out;
+	}
+
+	error = validate_name(file_name);
+	if (error)
+		goto out;
+
+	file_id_str = file_id_to_str(args.file_id);
+	if (!file_id_str) {
+		error = -ENOMEM;
+		goto out;
+	}
+
+	error = mutex_lock_interruptible(&mi->mi_dir_struct_mutex);
+	if (error)
+		goto out;
+	locked = true;
+
+	/* Find a directory to put the file into. */
+	error = dir_relative_path_resolve(mi,
+			u64_to_user_ptr(args.directory_path),
+			&parent_dir_path, NULL);
+	if (error)
+		goto out;
+
+	if (parent_dir_path.dentry == mi->mi_index_dir) {
+		/* Can't create a file directly inside .index */
+		error = -EBUSY;
+		goto out;
+	}
+
+	if (parent_dir_path.dentry == mi->mi_incomplete_dir) {
+		/* Can't create a file directly inside .incomplete */
+		error = -EBUSY;
+		goto out;
+	}
+
+	/* Look up a dentry in the parent dir. It should be negative. */
+	named_file_dentry = incfs_lookup_dentry(parent_dir_path.dentry,
+					file_name);
+	if (!named_file_dentry) {
+		error = -EFAULT;
+		goto out;
+	}
+	if (IS_ERR(named_file_dentry)) {
+		error = PTR_ERR(named_file_dentry);
+		named_file_dentry = NULL;
+		goto out;
+	}
+	if (d_really_is_positive(named_file_dentry)) {
+		/* File with this path already exists. */
+		error = -EEXIST;
+		goto out;
+	}
+
+	/* Look up a dentry in the incomplete dir. It should be negative. */
+	incomplete_file_dentry = incfs_lookup_dentry(mi->mi_incomplete_dir,
+					file_id_str);
+	if (!incomplete_file_dentry) {
+		error = -EFAULT;
+		goto out;
+	}
+	if (IS_ERR(incomplete_file_dentry)) {
+		error = PTR_ERR(incomplete_file_dentry);
+		incomplete_file_dentry = NULL;
+		goto out;
+	}
+	if (d_really_is_positive(incomplete_file_dentry)) {
+		/* File with this path already exists. */
+		error = -EEXIST;
+		goto out;
+	}
+
+	/* Look up a dentry in the .index dir. It should be negative. */
+	index_file_dentry = incfs_lookup_dentry(mi->mi_index_dir, file_id_str);
+	if (!index_file_dentry) {
+		error = -EFAULT;
+		goto out;
+	}
+	if (IS_ERR(index_file_dentry)) {
+		error = PTR_ERR(index_file_dentry);
+		index_file_dentry = NULL;
+		goto out;
+	}
+	if (d_really_is_positive(index_file_dentry)) {
+		/* File with this ID already exists in index. */
+		error = -EEXIST;
+		goto out;
+	}
+
+	/* Creating a file in the .index dir. */
+	index_dir_inode = d_inode(mi->mi_index_dir);
+	inode_lock_nested(index_dir_inode, I_MUTEX_PARENT);
+	error = vfs_create(&init_user_ns, index_dir_inode, index_file_dentry,
+			   args.mode | 0222, true);
+	inode_unlock(index_dir_inode);
+
+	if (error)
+		goto out;
+	if (!d_really_is_positive(index_file_dentry)) {
+		error = -EINVAL;
+		goto out;
+	}
+
+	error = chmod(index_file_dentry, args.mode | 0222);
+	if (error) {
+		pr_debug("incfs: chmod err: %d\n", error);
+		goto out;
+	}
+
+	/* Save the file's ID as an xattr for easy fetching in future. */
+	error = vfs_setxattr(&init_user_ns, index_file_dentry, INCFS_XATTR_ID_NAME,
+		file_id_str, strlen(file_id_str), XATTR_CREATE);
+	if (error) {
+		pr_debug("incfs: vfs_setxattr err:%d\n", error);
+		goto out;
+	}
+
+	/* Save the file's size as an xattr for easy fetching in future. */
+	size_attr_value = cpu_to_le64(args.size);
+	error = vfs_setxattr(&init_user_ns, index_file_dentry, INCFS_XATTR_SIZE_NAME,
+		(char *)&size_attr_value, sizeof(size_attr_value),
+		XATTR_CREATE);
+	if (error) {
+		pr_debug("incfs: vfs_setxattr err:%d\n", error);
+		goto out;
+	}
+
+	/* Save the file's attribute as an xattr */
+	if (args.file_attr_len && args.file_attr) {
+		if (args.file_attr_len > INCFS_MAX_FILE_ATTR_SIZE) {
+			error = -E2BIG;
+			goto out;
+		}
+
+		attr_value = kmalloc(args.file_attr_len, GFP_NOFS);
+		if (!attr_value) {
+			error = -ENOMEM;
+			goto out;
+		}
+
+		if (copy_from_user(attr_value,
+				u64_to_user_ptr(args.file_attr),
+				args.file_attr_len) > 0) {
+			error = -EFAULT;
+			goto out;
+		}
+
+		error = vfs_setxattr(&init_user_ns, index_file_dentry,
+				INCFS_XATTR_METADATA_NAME,
+				attr_value, args.file_attr_len,
+				XATTR_CREATE);
+
+		if (error)
+			goto out;
+	}
+
+	/* Initializing a newly created file. */
+	error = init_new_file(mi, index_file_dentry, &args.file_id, args.size,
+			      range(attr_value, args.file_attr_len),
+			      u64_to_user_ptr(args.signature_info),
+			      args.signature_size);
+	if (error)
+		goto out;
+	index_linked = true;
+
+	/* Linking a file with its real name from the requested dir. */
+	error = incfs_link(index_file_dentry, named_file_dentry);
+	if (error)
+		goto out;
+	name_linked = true;
+
+	if (args.size) {
+		/* Linking a file with its incomplete entry */
+		error = incfs_link(index_file_dentry, incomplete_file_dentry);
+		if (error)
+			goto out;
+		incomplete_linked = true;
+	}
+
+	notify_create(file, u64_to_user_ptr(args.directory_path), file_name,
+		      file_id_str, args.size != 0);
+
+out:
+	if (error) {
+		pr_debug("incfs: %s err:%d\n", __func__, error);
+		if (index_linked)
+			incfs_unlink(index_file_dentry);
+		if (name_linked)
+			incfs_unlink(named_file_dentry);
+		if (incomplete_linked)
+			incfs_unlink(incomplete_file_dentry);
+	}
+
+	kfree(file_id_str);
+	kfree(file_name);
+	kfree(attr_value);
+	dput(named_file_dentry);
+	dput(index_file_dentry);
+	dput(incomplete_file_dentry);
+	path_put(&parent_dir_path);
+	if (locked)
+		mutex_unlock(&mi->mi_dir_struct_mutex);
+
+	return error;
+}
+
+static int init_new_mapped_file(struct mount_info *mi, struct dentry *dentry,
+			 incfs_uuid_t *uuid, u64 size, u64 offset)
+{
+	struct path path = {};
+	struct file *new_file;
+	int error = 0;
+	struct backing_file_context *bfc = NULL;
+
+	if (!mi || !dentry || !uuid)
+		return -EFAULT;
+
+	/* Resize newly created file to its true size. */
+	path = (struct path) {
+		.mnt = mi->mi_backing_dir_path.mnt,
+		.dentry = dentry
+	};
+	new_file = dentry_open(&path, O_RDWR | O_NOATIME | O_LARGEFILE,
+			       current_cred());
+
+	if (IS_ERR(new_file)) {
+		error = PTR_ERR(new_file);
+		goto out;
+	}
+
+	bfc = incfs_alloc_bfc(mi, new_file);
+	fput(new_file);
+	if (IS_ERR(bfc)) {
+		error = PTR_ERR(bfc);
+		bfc = NULL;
+		goto out;
+	}
+
+	mutex_lock(&bfc->bc_mutex);
+	error = incfs_write_mapping_fh_to_backing_file(bfc, uuid, size, offset);
+	if (error)
+		goto out;
+
+out:
+	if (bfc) {
+		mutex_unlock(&bfc->bc_mutex);
+		incfs_free_bfc(bfc);
+	}
+
+	if (error)
+		pr_debug("incfs: %s error: %d\n", __func__, error);
+	return error;
+}
+
+static long ioctl_create_mapped_file(struct file *file, void __user *arg)
+{
+	struct mount_info *mi = get_mount_info(file_superblock(file));
+	struct incfs_create_mapped_file_args __user *args_usr_ptr = arg;
+	struct incfs_create_mapped_file_args args = {};
+	char *file_name;
+	int error = 0;
+	struct path parent_dir_path = {};
+	char *source_file_name = NULL;
+	struct dentry *source_file_dentry = NULL;
+	u64 source_file_size;
+	struct dentry *file_dentry = NULL;
+	struct inode *parent_inode;
+	__le64 size_attr_value;
+
+	if (copy_from_user(&args, args_usr_ptr, sizeof(args)) > 0)
+		return -EINVAL;
+
+	file_name = strndup_user(u64_to_user_ptr(args.file_name), PATH_MAX);
+	if (IS_ERR(file_name)) {
+		error = PTR_ERR(file_name);
+		file_name = NULL;
+		goto out;
+	}
+
+	error = validate_name(file_name);
+	if (error)
+		goto out;
+
+	if (args.source_offset % INCFS_DATA_FILE_BLOCK_SIZE) {
+		error = -EINVAL;
+		goto out;
+	}
+
+	/* Validate file mapping is in range */
+	source_file_name = file_id_to_str(args.source_file_id);
+	if (!source_file_name) {
+		pr_warn("Failed to alloc source_file_name\n");
+		error = -ENOMEM;
+		goto out;
+	}
+
+	source_file_dentry = incfs_lookup_dentry(mi->mi_index_dir,
+						       source_file_name);
+	if (!source_file_dentry) {
+		pr_warn("Source file does not exist\n");
+		error = -EINVAL;
+		goto out;
+	}
+	if (IS_ERR(source_file_dentry)) {
+		pr_warn("Error opening source file\n");
+		error = PTR_ERR(source_file_dentry);
+		source_file_dentry = NULL;
+		goto out;
+	}
+	if (!d_really_is_positive(source_file_dentry)) {
+		pr_warn("Source file dentry negative\n");
+		error = -EINVAL;
+		goto out;
+	}
+
+	error = vfs_getxattr(&init_user_ns, source_file_dentry, INCFS_XATTR_SIZE_NAME,
+			     (char *)&size_attr_value, sizeof(size_attr_value));
+	if (error < 0)
+		goto out;
+
+	if (error != sizeof(size_attr_value)) {
+		pr_warn("Mapped file has no size attr\n");
+		error = -EINVAL;
+		goto out;
+	}
+
+	source_file_size = le64_to_cpu(size_attr_value);
+	if (args.source_offset + args.size > source_file_size) {
+		pr_warn("Mapped file out of range\n");
+		error = -EINVAL;
+		goto out;
+	}
+
+	/* Find a directory to put the file into. */
+	error = dir_relative_path_resolve(mi,
+			u64_to_user_ptr(args.directory_path),
+			&parent_dir_path, NULL);
+	if (error)
+		goto out;
+
+	if (parent_dir_path.dentry == mi->mi_index_dir) {
+		/* Can't create a file directly inside .index */
+		error = -EBUSY;
+		goto out;
+	}
+
+	/* Look up a dentry in the parent dir. It should be negative. */
+	file_dentry = incfs_lookup_dentry(parent_dir_path.dentry,
+					file_name);
+	if (!file_dentry) {
+		error = -EFAULT;
+		goto out;
+	}
+	if (IS_ERR(file_dentry)) {
+		error = PTR_ERR(file_dentry);
+		file_dentry = NULL;
+		goto out;
+	}
+	if (d_really_is_positive(file_dentry)) {
+		error = -EEXIST;
+		goto out;
+	}
+
+	parent_inode = d_inode(parent_dir_path.dentry);
+	inode_lock_nested(parent_inode, I_MUTEX_PARENT);
+	error = vfs_create(&init_user_ns, parent_inode, file_dentry,
+			   args.mode | 0222, true);
+	inode_unlock(parent_inode);
+	if (error)
+		goto out;
+
+	error = chmod(file_dentry, args.mode | 0222);
+	if (error) {
+		pr_debug("incfs: chmod err: %d\n", error);
+		goto delete_file;
+	}
+
+	/* Save the file's size as an xattr for easy fetching in future. */
+	size_attr_value = cpu_to_le64(args.size);
+	error = vfs_setxattr(&init_user_ns, file_dentry, INCFS_XATTR_SIZE_NAME,
+		(char *)&size_attr_value, sizeof(size_attr_value),
+		XATTR_CREATE);
+	if (error) {
+		pr_debug("incfs: vfs_setxattr err:%d\n", error);
+		goto delete_file;
+	}
+
+	error = init_new_mapped_file(mi, file_dentry, &args.source_file_id,
+			args.size, args.source_offset);
+	if (error)
+		goto delete_file;
+
+	notify_create(file, u64_to_user_ptr(args.directory_path), file_name,
+		      NULL, false);
+
+	goto out;
+
+delete_file:
+	incfs_unlink(file_dentry);
+
+out:
+	dput(file_dentry);
+	dput(source_file_dentry);
+	path_put(&parent_dir_path);
+	kfree(file_name);
+	kfree(source_file_name);
+	return error;
+}
+
+static long ioctl_get_read_timeouts(struct mount_info *mi, void __user *arg)
+{
+	struct incfs_get_read_timeouts_args __user *args_usr_ptr = arg;
+	struct incfs_get_read_timeouts_args args = {};
+	int error = 0;
+	struct incfs_per_uid_read_timeouts *buffer;
+	int size;
+
+	if (copy_from_user(&args, args_usr_ptr, sizeof(args)))
+		return -EINVAL;
+
+	if (args.timeouts_array_size_out > INCFS_DATA_FILE_BLOCK_SIZE)
+		return -EINVAL;
+
+	buffer = kzalloc(args.timeouts_array_size_out, GFP_NOFS);
+	if (!buffer)
+		return -ENOMEM;
+
+	spin_lock(&mi->mi_per_uid_read_timeouts_lock);
+	size = mi->mi_per_uid_read_timeouts_size;
+	if (args.timeouts_array_size < size)
+		error = -E2BIG;
+	else if (size)
+		memcpy(buffer, mi->mi_per_uid_read_timeouts, size);
+	spin_unlock(&mi->mi_per_uid_read_timeouts_lock);
+
+	args.timeouts_array_size_out = size;
+	if (!error && size)
+		if (copy_to_user(u64_to_user_ptr(args.timeouts_array), buffer,
+				 size))
+			error = -EFAULT;
+
+	if (!error || error == -E2BIG)
+		if (copy_to_user(args_usr_ptr, &args, sizeof(args)) > 0)
+			error = -EFAULT;
+
+	kfree(buffer);
+	return error;
+}
+
+static long ioctl_set_read_timeouts(struct mount_info *mi, void __user *arg)
+{
+	struct incfs_set_read_timeouts_args __user *args_usr_ptr = arg;
+	struct incfs_set_read_timeouts_args args = {};
+	int error = 0;
+	int size;
+	struct incfs_per_uid_read_timeouts *buffer = NULL, *tmp;
+	int i;
+
+	if (copy_from_user(&args, args_usr_ptr, sizeof(args)))
+		return -EINVAL;
+
+	size = args.timeouts_array_size;
+	if (size) {
+		if (size > INCFS_DATA_FILE_BLOCK_SIZE ||
+		    size % sizeof(*buffer) != 0)
+			return -EINVAL;
+
+		buffer = kzalloc(size, GFP_NOFS);
+		if (!buffer)
+			return -ENOMEM;
+
+		if (copy_from_user(buffer, u64_to_user_ptr(args.timeouts_array),
+				   size)) {
+			error = -EINVAL;
+			goto out;
+		}
+
+		for (i = 0; i < size / sizeof(*buffer); ++i) {
+			struct incfs_per_uid_read_timeouts *t = &buffer[i];
+
+			if (t->min_pending_time_us > t->max_pending_time_us) {
+				error = -EINVAL;
+				goto out;
+			}
+		}
+	}
+
+	spin_lock(&mi->mi_per_uid_read_timeouts_lock);
+	mi->mi_per_uid_read_timeouts_size = size;
+	tmp = mi->mi_per_uid_read_timeouts;
+	mi->mi_per_uid_read_timeouts = buffer;
+	buffer = tmp;
+	spin_unlock(&mi->mi_per_uid_read_timeouts_lock);
+
+out:
+	kfree(buffer);
+	return error;
+}
+
+static long ioctl_get_last_read_error(struct mount_info *mi, void __user *arg)
+{
+	struct incfs_get_last_read_error_args __user *args_usr_ptr = arg;
+	struct incfs_get_last_read_error_args args = {};
+	int error;
+
+	error = mutex_lock_interruptible(&mi->mi_le_mutex);
+	if (error)
+		return error;
+
+	args.file_id_out = mi->mi_le_file_id;
+	args.time_us_out = mi->mi_le_time_us;
+	args.page_out = mi->mi_le_page;
+	args.errno_out = mi->mi_le_errno;
+	args.uid_out = mi->mi_le_uid;
+
+	mutex_unlock(&mi->mi_le_mutex);
+	if (copy_to_user(args_usr_ptr, &args, sizeof(args)) > 0)
+		error = -EFAULT;
+
+	return error;
+}
+
+static long pending_reads_dispatch_ioctl(struct file *f, unsigned int req,
+					unsigned long arg)
+{
+	struct mount_info *mi = get_mount_info(file_superblock(f));
+
+	switch (req) {
+	case INCFS_IOC_CREATE_FILE:
+		return ioctl_create_file(f, (void __user *)arg);
+	case INCFS_IOC_PERMIT_FILL:
+		return ioctl_permit_fill(f, (void __user *)arg);
+	case INCFS_IOC_CREATE_MAPPED_FILE:
+		return ioctl_create_mapped_file(f, (void __user *)arg);
+	case INCFS_IOC_GET_READ_TIMEOUTS:
+		return ioctl_get_read_timeouts(mi, (void __user *)arg);
+	case INCFS_IOC_SET_READ_TIMEOUTS:
+		return ioctl_set_read_timeouts(mi, (void __user *)arg);
+	case INCFS_IOC_GET_LAST_READ_ERROR:
+		return ioctl_get_last_read_error(mi, (void __user *)arg);
+	default:
+		return -EINVAL;
+	}
+}
+
+static const struct file_operations incfs_pending_reads_file_ops = {
+	.read = pending_reads_read,
+	.poll = pending_reads_poll,
+	.open = pending_reads_open,
+	.release = pending_reads_release,
+	.llseek = noop_llseek,
+	.unlocked_ioctl = pending_reads_dispatch_ioctl,
+	.compat_ioctl = pending_reads_dispatch_ioctl
+};
+
+/*******************************************************************************
+ * .log pseudo file definition
+ ******************************************************************************/
+#define INCFS_LOG_INODE 3
+static const char log_file_name[] = INCFS_LOG_FILENAME;
+
+/* State of an open .log file, unique for each file descriptor. */
+struct log_file_state {
+	struct read_log_state state;
+};
+
+static ssize_t log_read(struct file *f, char __user *buf, size_t len,
+			loff_t *ppos)
+{
+	struct log_file_state *log_state = f->private_data;
+	struct mount_info *mi = get_mount_info(file_superblock(f));
+	int total_reads_collected = 0;
+	int rl_size;
+	ssize_t result = 0;
+	bool report_uid;
+	unsigned long page = 0;
+	struct incfs_pending_read_info *reads_buf = NULL;
+	struct incfs_pending_read_info2 *reads_buf2 = NULL;
+	size_t record_size;
+	ssize_t reads_to_collect;
+	ssize_t reads_per_page;
+
+	if (!mi)
+		return -EFAULT;
+
+	report_uid = mi->mi_options.report_uid;
+	record_size = report_uid ? sizeof(*reads_buf2) : sizeof(*reads_buf);
+	reads_to_collect = len / record_size;
+	reads_per_page = PAGE_SIZE / record_size;
+
+	rl_size = READ_ONCE(mi->mi_log.rl_size);
+	if (rl_size == 0)
+		return 0;
+
+	page = __get_free_page(GFP_NOFS);
+	if (!page)
+		return -ENOMEM;
+
+	if (report_uid)
+		reads_buf2 = (struct incfs_pending_read_info2 *)page;
+	else
+		reads_buf = (struct incfs_pending_read_info *)page;
+
+	reads_to_collect = min_t(ssize_t, rl_size, reads_to_collect);
+	while (reads_to_collect > 0) {
+		struct read_log_state next_state;
+		int reads_collected;
+
+		memcpy(&next_state, &log_state->state, sizeof(next_state));
+		reads_collected = incfs_collect_logged_reads(
+			mi, &next_state, reads_buf, reads_buf2,
+			min_t(ssize_t, reads_to_collect, reads_per_page));
+		if (reads_collected <= 0) {
+			result = total_reads_collected ?
+				       total_reads_collected * record_size :
+				       reads_collected;
+			goto out;
+		}
+		if (copy_to_user(buf, (void *)page,
+				 reads_collected * record_size)) {
+			result = total_reads_collected ?
+				       total_reads_collected * record_size :
+				       -EFAULT;
+			goto out;
+		}
+
+		memcpy(&log_state->state, &next_state, sizeof(next_state));
+		total_reads_collected += reads_collected;
+		buf += reads_collected * record_size;
+		reads_to_collect -= reads_collected;
+	}
+
+	result = total_reads_collected * record_size;
+	*ppos = 0;
+out:
+	free_page(page);
+	return result;
+}
+
+static __poll_t log_poll(struct file *file, poll_table *wait)
+{
+	struct log_file_state *log_state = file->private_data;
+	struct mount_info *mi = get_mount_info(file_superblock(file));
+	int count;
+	__poll_t ret = 0;
+
+	poll_wait(file, &mi->mi_log.ml_notif_wq, wait);
+	count = incfs_get_uncollected_logs_count(mi, &log_state->state);
+	if (count >= mi->mi_options.read_log_wakeup_count)
+		ret = EPOLLIN | EPOLLRDNORM;
+
+	return ret;
+}
+
+static int log_open(struct inode *inode, struct file *file)
+{
+	struct log_file_state *log_state = NULL;
+	struct mount_info *mi = get_mount_info(file_superblock(file));
+
+	log_state = kzalloc(sizeof(*log_state), GFP_NOFS);
+	if (!log_state)
+		return -ENOMEM;
+
+	log_state->state = incfs_get_log_state(mi);
+	file->private_data = log_state;
+	return 0;
+}
+
+static int log_release(struct inode *inode, struct file *file)
+{
+	kfree(file->private_data);
+	return 0;
+}
+
+static const struct file_operations incfs_log_file_ops = {
+	.read = log_read,
+	.poll = log_poll,
+	.open = log_open,
+	.release = log_release,
+	.llseek = noop_llseek,
+};
+
+/*******************************************************************************
+ * .blocks_written pseudo file definition
+ ******************************************************************************/
+#define INCFS_BLOCKS_WRITTEN_INODE 4
+static const char blocks_written_file_name[] = INCFS_BLOCKS_WRITTEN_FILENAME;
+
+/* State of an open .blocks_written file, unique for each file descriptor. */
+struct blocks_written_file_state {
+	unsigned long blocks_written;
+};
+
+static ssize_t blocks_written_read(struct file *f, char __user *buf, size_t len,
+			loff_t *ppos)
+{
+	struct mount_info *mi = get_mount_info(file_superblock(f));
+	struct blocks_written_file_state *state = f->private_data;
+	unsigned long blocks_written;
+	char string[21];
+	int result = 0;
+
+	if (!mi)
+		return -EFAULT;
+
+	blocks_written = atomic_read(&mi->mi_blocks_written);
+	if (state->blocks_written == blocks_written)
+		return 0;
+
+	result = snprintf(string, sizeof(string), "%lu", blocks_written);
+	if (result > len)
+		result = len;
+	if (copy_to_user(buf, string, result))
+		return -EFAULT;
+
+	state->blocks_written = blocks_written;
+	return result;
+}
+
+static __poll_t blocks_written_poll(struct file *f, poll_table *wait)
+{
+	struct mount_info *mi = get_mount_info(file_superblock(f));
+	struct blocks_written_file_state *state = f->private_data;
+	unsigned long blocks_written;
+
+	if (!mi)
+		return 0;
+
+	poll_wait(f, &mi->mi_blocks_written_notif_wq, wait);
+	blocks_written = atomic_read(&mi->mi_blocks_written);
+	if (state->blocks_written == blocks_written)
+		return 0;
+
+	return EPOLLIN | EPOLLRDNORM;
+}
+
+static int blocks_written_open(struct inode *inode, struct file *file)
+{
+	struct blocks_written_file_state *state =
+		kzalloc(sizeof(*state), GFP_NOFS);
+
+	if (!state)
+		return -ENOMEM;
+
+	state->blocks_written = -1;
+	file->private_data = state;
+	return 0;
+}
+
+static int blocks_written_release(struct inode *inode, struct file *file)
+{
+	kfree(file->private_data);
+	return 0;
+}
+
+static const struct file_operations incfs_blocks_written_file_ops = {
+	.read = blocks_written_read,
+	.poll = blocks_written_poll,
+	.open = blocks_written_open,
+	.release = blocks_written_release,
+	.llseek = noop_llseek,
+};
+
+/*******************************************************************************
+ * Generic inode lookup functionality
+ ******************************************************************************/
+
+const struct mem_range incfs_pseudo_file_names[] = {
+	{ .data = (u8 *)pending_reads_file_name,
+	  .len = ARRAY_SIZE(pending_reads_file_name) - 1 },
+	{ .data = (u8 *)log_file_name, .len = ARRAY_SIZE(log_file_name) - 1 },
+	{ .data = (u8 *)blocks_written_file_name,
+	  .len = ARRAY_SIZE(blocks_written_file_name) - 1 }
+};
+
+const unsigned long incfs_pseudo_file_inodes[] = { INCFS_PENDING_READS_INODE,
+						   INCFS_LOG_INODE,
+						   INCFS_BLOCKS_WRITTEN_INODE };
+
+static const struct file_operations *const pseudo_file_operations[] = {
+	&incfs_pending_reads_file_ops, &incfs_log_file_ops,
+	&incfs_blocks_written_file_ops
+};
+
+static bool is_pseudo_filename(struct mem_range name)
+{
+	int i = 0;
+
+	for (; i < ARRAY_SIZE(incfs_pseudo_file_names); ++i)
+		if (incfs_equal_ranges(incfs_pseudo_file_names[i], name))
+			return true;
+	return false;
+}
+
+static bool get_pseudo_inode(int ino, struct inode *inode)
+{
+	int i = 0;
+
+	for (; i < ARRAY_SIZE(incfs_pseudo_file_inodes); ++i)
+		if (ino == incfs_pseudo_file_inodes[i])
+			break;
+	if (i == ARRAY_SIZE(incfs_pseudo_file_inodes))
+		return false;
+
+	inode->i_ctime = (struct timespec64){};
+	inode->i_mtime = inode->i_ctime;
+	inode->i_atime = inode->i_ctime;
+	inode->i_size = 0;
+	inode->i_ino = ino;
+	inode->i_private = NULL;
+	inode_init_owner(&init_user_ns, inode, NULL, S_IFREG | READ_WRITE_FILE_MODE);
+	inode->i_op = &incfs_file_inode_ops;
+	inode->i_fop = pseudo_file_operations[i];
+	return true;
+}
+
+struct inode_search {
+	unsigned long ino;
+};
+
+static int inode_test(struct inode *inode, void *opaque)
+{
+	struct inode_search *search = opaque;
+
+	return inode->i_ino == search->ino;
+}
+
+static int inode_set(struct inode *inode, void *opaque)
+{
+	struct inode_search *search = opaque;
+
+	if (get_pseudo_inode(search->ino, inode))
+		return 0;
+
+	/* Unknown inode requested. */
+	return -EINVAL;
+}
+
+static struct inode *fetch_inode(struct super_block *sb, unsigned long ino)
+{
+	struct inode_search search = {
+		.ino = ino
+	};
+	struct inode *inode = iget5_locked(sb, search.ino, inode_test,
+				inode_set, &search);
+
+	if (!inode)
+		return ERR_PTR(-ENOMEM);
+
+	if (inode->i_state & I_NEW)
+		unlock_new_inode(inode);
+
+	return inode;
+}
+
+int dir_lookup_pseudo_files(struct super_block *sb, struct dentry *dentry)
+{
+	struct mem_range name_range =
+			range((u8 *)dentry->d_name.name, dentry->d_name.len);
+	unsigned long ino;
+	struct inode *inode;
+	int i = 0;
+
+	for (; i < ARRAY_SIZE(incfs_pseudo_file_names); ++i)
+		if (incfs_equal_ranges(incfs_pseudo_file_names[i], name_range))
+			break;
+	if (i == ARRAY_SIZE(incfs_pseudo_file_names))
+		return -ENOENT;
+
+	ino = incfs_pseudo_file_inodes[i];
+
+	inode = fetch_inode(sb, ino);
+	if (IS_ERR(inode))
+		return PTR_ERR(inode);
+
+	d_add(dentry, inode);
+	return 0;
+}
+
+int emit_pseudo_files(struct dir_context *ctx)
+{
+	loff_t i = ctx->pos;
+
+	for (; i < ARRAY_SIZE(incfs_pseudo_file_names); ++i) {
+		if (!dir_emit(ctx, incfs_pseudo_file_names[i].data,
+			      incfs_pseudo_file_names[i].len,
+			      incfs_pseudo_file_inodes[i], DT_REG))
+			return -EINVAL;
+
+		ctx->pos++;
+	}
+	return 0;
+}
diff --git a/fs/incfs/pseudo_files.h b/fs/incfs/pseudo_files.h
new file mode 100644
index 0000000..1887218
--- /dev/null
+++ b/fs/incfs/pseudo_files.h
@@ -0,0 +1,20 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright 2020 Google LLC
+ */
+
+#ifndef _INCFS_PSEUDO_FILES_H
+#define _INCFS_PSEUDO_FILES_H
+
+#include "internal.h"
+
+#define PSEUDO_FILE_COUNT 3
+#define INCFS_START_INO_RANGE 10
+
+extern const struct mem_range incfs_pseudo_file_names[PSEUDO_FILE_COUNT];
+extern const unsigned long incfs_pseudo_file_inodes[PSEUDO_FILE_COUNT];
+
+int dir_lookup_pseudo_files(struct super_block *sb, struct dentry *dentry);
+int emit_pseudo_files(struct dir_context *ctx);
+
+#endif
diff --git a/fs/incfs/sysfs.c b/fs/incfs/sysfs.c
new file mode 100644
index 0000000..ba91c07
--- /dev/null
+++ b/fs/incfs/sysfs.c
@@ -0,0 +1,205 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright 2021 Google LLC
+ */
+#include <linux/fs.h>
+#include <linux/kobject.h>
+
+#include <uapi/linux/incrementalfs.h>
+
+#include "sysfs.h"
+#include "data_mgmt.h"
+#include "vfs.h"
+
+/******************************************************************************
+ * Define sys/fs/incrementalfs & sys/fs/incrementalfs/features
+ *****************************************************************************/
+#define INCFS_NODE_FEATURES "features"
+#define INCFS_NODE_INSTANCES "instances"
+
+static struct kobject *sysfs_root;
+static struct kobject *features_node;
+static struct kobject *instances_node;
+
+#define DECLARE_FEATURE_FLAG(name)					\
+	static ssize_t name##_show(struct kobject *kobj,		\
+			 struct kobj_attribute *attr, char *buff)	\
+{									\
+	return sysfs_emit(buff, "supported\n");				\
+}									\
+									\
+static struct kobj_attribute name##_attr = __ATTR_RO(name)
+
+DECLARE_FEATURE_FLAG(corefs);
+DECLARE_FEATURE_FLAG(zstd);
+DECLARE_FEATURE_FLAG(v2);
+DECLARE_FEATURE_FLAG(bugfix_throttling);
+DECLARE_FEATURE_FLAG(bugfix_inode_eviction);
+
+static struct attribute *attributes[] = {
+	&corefs_attr.attr,
+	&zstd_attr.attr,
+	&v2_attr.attr,
+	&bugfix_throttling_attr.attr,
+	&bugfix_inode_eviction_attr.attr,
+	NULL,
+};
+
+static const struct attribute_group attr_group = {
+	.attrs = attributes,
+};
+
+int __init incfs_init_sysfs(void)
+{
+	int res = -ENOMEM;
+
+	sysfs_root = kobject_create_and_add(INCFS_NAME, fs_kobj);
+	if (!sysfs_root)
+		return -ENOMEM;
+
+	instances_node = kobject_create_and_add(INCFS_NODE_INSTANCES,
+						sysfs_root);
+	if (!instances_node)
+		goto err_put_root;
+
+	features_node = kobject_create_and_add(INCFS_NODE_FEATURES,
+						sysfs_root);
+	if (!features_node)
+		goto err_put_instances;
+
+	res = sysfs_create_group(features_node, &attr_group);
+	if (res)
+		goto err_put_features;
+
+	return 0;
+
+err_put_features:
+	kobject_put(features_node);
+err_put_instances:
+	kobject_put(instances_node);
+err_put_root:
+	kobject_put(sysfs_root);
+
+	return res;
+}
+
+void incfs_cleanup_sysfs(void)
+{
+	if (features_node) {
+		sysfs_remove_group(features_node, &attr_group);
+		kobject_put(features_node);
+	}
+
+	kobject_put(instances_node);
+	kobject_put(sysfs_root);
+}
+
+/******************************************************************************
+ * Define sys/fs/incrementalfs/instances/<name>/
+ *****************************************************************************/
+#define __DECLARE_STATUS_FLAG(name)					\
+static ssize_t name##_show(struct kobject *kobj,			\
+			 struct kobj_attribute *attr, char *buff)	\
+{									\
+	struct incfs_sysfs_node *node = container_of(kobj,		\
+			struct incfs_sysfs_node, isn_sysfs_node);	\
+									\
+	return sysfs_emit(buff, "%d\n", node->isn_mi->mi_##name);	\
+}									\
+									\
+static struct kobj_attribute name##_attr = __ATTR_RO(name)
+
+#define __DECLARE_STATUS_FLAG64(name)					\
+static ssize_t name##_show(struct kobject *kobj,			\
+			 struct kobj_attribute *attr, char *buff)	\
+{									\
+	struct incfs_sysfs_node *node = container_of(kobj,		\
+			struct incfs_sysfs_node, isn_sysfs_node);	\
+									\
+	return sysfs_emit(buff, "%lld\n", node->isn_mi->mi_##name);	\
+}									\
+									\
+static struct kobj_attribute name##_attr = __ATTR_RO(name)
+
+__DECLARE_STATUS_FLAG(reads_failed_timed_out);
+__DECLARE_STATUS_FLAG(reads_failed_hash_verification);
+__DECLARE_STATUS_FLAG(reads_failed_other);
+__DECLARE_STATUS_FLAG(reads_delayed_pending);
+__DECLARE_STATUS_FLAG64(reads_delayed_pending_us);
+__DECLARE_STATUS_FLAG(reads_delayed_min);
+__DECLARE_STATUS_FLAG64(reads_delayed_min_us);
+
+static struct attribute *mount_attributes[] = {
+	&reads_failed_timed_out_attr.attr,
+	&reads_failed_hash_verification_attr.attr,
+	&reads_failed_other_attr.attr,
+	&reads_delayed_pending_attr.attr,
+	&reads_delayed_pending_us_attr.attr,
+	&reads_delayed_min_attr.attr,
+	&reads_delayed_min_us_attr.attr,
+	NULL,
+};
+
+static void incfs_sysfs_release(struct kobject *kobj)
+{
+	struct incfs_sysfs_node *node = container_of(kobj,
+				struct incfs_sysfs_node, isn_sysfs_node);
+
+	complete(&node->isn_completion);
+}
+
+static const struct attribute_group mount_attr_group = {
+	.attrs = mount_attributes,
+};
+
+static struct kobj_type incfs_kobj_node_ktype = {
+	.sysfs_ops	= &kobj_sysfs_ops,
+	.release	= &incfs_sysfs_release,
+};
+
+struct incfs_sysfs_node *incfs_add_sysfs_node(const char *name,
+					      struct mount_info *mi)
+{
+	struct incfs_sysfs_node *node = NULL;
+	int error;
+
+	if (!name)
+		return NULL;
+
+	node = kzalloc(sizeof(*node), GFP_NOFS);
+	if (!node)
+		return ERR_PTR(-ENOMEM);
+
+	node->isn_mi = mi;
+
+	init_completion(&node->isn_completion);
+	kobject_init(&node->isn_sysfs_node, &incfs_kobj_node_ktype);
+	error = kobject_add(&node->isn_sysfs_node, instances_node, "%s", name);
+	if (error)
+		goto err;
+
+	error = sysfs_create_group(&node->isn_sysfs_node, &mount_attr_group);
+	if (error)
+		goto err;
+
+	return node;
+
+err:
+	/*
+	 * Note kobject_put always calls release, so incfs_sysfs_release will
+	 * free node
+	 */
+	kobject_put(&node->isn_sysfs_node);
+	return ERR_PTR(error);
+}
+
+void incfs_free_sysfs_node(struct incfs_sysfs_node *node)
+{
+	if (!node)
+		return;
+
+	sysfs_remove_group(&node->isn_sysfs_node, &mount_attr_group);
+	kobject_put(&node->isn_sysfs_node);
+	wait_for_completion_interruptible(&node->isn_completion);
+	kfree(node);
+}
diff --git a/fs/incfs/sysfs.h b/fs/incfs/sysfs.h
new file mode 100644
index 0000000..65bf554
--- /dev/null
+++ b/fs/incfs/sysfs.h
@@ -0,0 +1,22 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright 2021 Google LLC
+ */
+#ifndef _INCFS_SYSFS_H
+#define _INCFS_SYSFS_H
+
+struct incfs_sysfs_node {
+	struct kobject isn_sysfs_node;
+
+	struct completion isn_completion;
+
+	struct mount_info *isn_mi;
+};
+
+int incfs_init_sysfs(void);
+void incfs_cleanup_sysfs(void);
+struct incfs_sysfs_node *incfs_add_sysfs_node(const char *name,
+					      struct mount_info *mi);
+void incfs_free_sysfs_node(struct incfs_sysfs_node *node);
+
+#endif
diff --git a/fs/incfs/verity.c b/fs/incfs/verity.c
new file mode 100644
index 0000000..562a8e77
--- /dev/null
+++ b/fs/incfs/verity.c
@@ -0,0 +1,851 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright 2020 Google LLC
+ */
+
+/*
+ * fs-verity integration into incfs
+ *
+ * Since incfs has its own merkle tree implementation, most of fs-verity code
+ * is not needed. The key part that is needed is the signature check, since
+ * that is based on the private /proc/sys/fs/verity/require_signatures value
+ * and a private keyring. Thus the first change is to modify verity code to
+ * export a version of fsverity_verify_signature.
+ *
+ * fs-verity integration then consists of the following modifications:
+ *
+ * 1. Add the (optional) verity signature to the incfs file format
+ * 2. Add a pointer to the digest of the fs-verity descriptor struct to the
+ *    data_file struct that incfs attaches to each file inode.
+ * 3. Add the following ioclts:
+ *  - FS_IOC_ENABLE_VERITY
+ *  - FS_IOC_GETFLAGS
+ *  - FS_IOC_MEASURE_VERITY
+ * 4. When FS_IOC_ENABLE_VERITY is called on a non-verity file, the
+ *    fs-verity descriptor struct is populated and digested. If it passes the
+ *    signature check or the signature is NULL and
+ *    fs.verity.require_signatures=0, then the S_VERITY flag is set and the
+ *    xattr incfs.verity is set. If the signature is non-NULL, an
+ *    INCFS_MD_VERITY_SIGNATURE is added to the backing file containing the
+ *    signature.
+ * 5. When a file with an incfs.verity xattr's inode is initialized, the
+ *    inode’s S_VERITY flag is set.
+ * 6. When a file with the S_VERITY flag set on its inode is opened, the
+ *    data_file is checked for its verity digest. If the file doesn’t have a
+ *    digest, the file’s digest is calculated as above, checked, and set, or the
+ *    open is denied if it is not valid.
+ * 7. FS_IOC_GETFLAGS simply returns the value of the S_VERITY flag
+ * 8. FS_IOC_MEASURE_VERITY simply returns the cached digest
+ * 9. The final complication is that if FS_IOC_ENABLE_VERITY is called on a file
+ *    which doesn’t have a merkle tree, the merkle tree is calculated before the
+ *    rest of the process is completed.
+ */
+
+#include <crypto/hash.h>
+#include <crypto/sha2.h>
+#include <linux/fsverity.h>
+#include <linux/mount.h>
+
+#include "verity.h"
+
+#include "data_mgmt.h"
+#include "format.h"
+#include "integrity.h"
+#include "vfs.h"
+
+#define FS_VERITY_MAX_SIGNATURE_SIZE	16128
+
+static int incfs_get_root_hash(struct file *filp, u8 *root_hash)
+{
+	struct data_file *df = get_incfs_data_file(filp);
+
+	if (!df)
+		return -EINVAL;
+
+	memcpy(root_hash, df->df_hash_tree->root_hash,
+	       df->df_hash_tree->alg->digest_size);
+
+	return 0;
+}
+
+static int incfs_end_enable_verity(struct file *filp, u8 *sig, size_t sig_size)
+{
+	struct inode *inode = file_inode(filp);
+	struct mem_range signature = {
+		.data = sig,
+		.len = sig_size,
+	};
+	struct data_file *df = get_incfs_data_file(filp);
+	struct backing_file_context *bfc;
+	int error;
+	struct incfs_df_verity_signature *vs = NULL;
+	loff_t offset;
+
+	if (!df || !df->df_backing_file_context)
+		return -EFSCORRUPTED;
+
+	if (sig) {
+		vs = kzalloc(sizeof(*vs), GFP_NOFS);
+		if (!vs)
+			return -ENOMEM;
+	}
+
+	bfc = df->df_backing_file_context;
+	error = mutex_lock_interruptible(&bfc->bc_mutex);
+	if (error)
+		goto out;
+
+	error = incfs_write_verity_signature_to_backing_file(bfc, signature,
+							     &offset);
+	mutex_unlock(&bfc->bc_mutex);
+	if (error)
+		goto out;
+
+	/*
+	 * Set verity xattr so we can set S_VERITY without opening backing file
+	 */
+	error = vfs_setxattr(&init_user_ns, bfc->bc_file->f_path.dentry,
+			     INCFS_XATTR_VERITY_NAME, NULL, 0, XATTR_CREATE);
+	if (error) {
+		pr_warn("incfs: error setting verity xattr: %d\n", error);
+		goto out;
+	}
+
+	if (sig) {
+		*vs = (struct incfs_df_verity_signature) {
+			.size = signature.len,
+			.offset = offset,
+		};
+
+		df->df_verity_signature = vs;
+		vs = NULL;
+	}
+
+	inode_set_flags(inode, S_VERITY, S_VERITY);
+
+out:
+	kfree(vs);
+	return error;
+}
+
+static int incfs_compute_file_digest(struct incfs_hash_alg *alg,
+				struct fsverity_descriptor *desc,
+				u8 *digest)
+{
+	SHASH_DESC_ON_STACK(d, alg->shash);
+
+	d->tfm = alg->shash;
+	return crypto_shash_digest(d, (u8 *)desc, sizeof(*desc), digest);
+}
+
+static enum incfs_hash_tree_algorithm incfs_convert_fsverity_hash_alg(
+								int hash_alg)
+{
+	switch (hash_alg) {
+	case FS_VERITY_HASH_ALG_SHA256:
+		return INCFS_HASH_TREE_SHA256;
+	default:
+		return -EINVAL;
+	}
+}
+
+static struct mem_range incfs_get_verity_digest(struct inode *inode)
+{
+	struct inode_info *node = get_incfs_node(inode);
+	struct data_file *df;
+	struct mem_range verity_file_digest;
+
+	if (!node) {
+		pr_warn("Invalid inode\n");
+		return range(NULL, 0);
+	}
+
+	df = node->n_file;
+
+	/*
+	 * Pairs with the cmpxchg_release() in incfs_set_verity_digest().
+	 * I.e., another task may publish ->df_verity_file_digest concurrently,
+	 * executing a RELEASE barrier.  We need to use smp_load_acquire() here
+	 * to safely ACQUIRE the memory the other task published.
+	 */
+	verity_file_digest.data = smp_load_acquire(
+					&df->df_verity_file_digest.data);
+	verity_file_digest.len = df->df_verity_file_digest.len;
+	return verity_file_digest;
+}
+
+static void incfs_set_verity_digest(struct inode *inode,
+				     struct mem_range verity_file_digest)
+{
+	struct inode_info *node = get_incfs_node(inode);
+	struct data_file *df;
+
+	if (!node) {
+		pr_warn("Invalid inode\n");
+		kfree(verity_file_digest.data);
+		return;
+	}
+
+	df = node->n_file;
+	df->df_verity_file_digest.len = verity_file_digest.len;
+
+	/*
+	 * Multiple tasks may race to set ->df_verity_file_digest.data, so use
+	 * cmpxchg_release().  This pairs with the smp_load_acquire() in
+	 * incfs_get_verity_digest().  I.e., here we publish
+	 * ->df_verity_file_digest.data, with a RELEASE barrier so that other
+	 * tasks can ACQUIRE it.
+	 */
+	if (cmpxchg_release(&df->df_verity_file_digest.data, NULL,
+			    verity_file_digest.data) != NULL)
+		/* Lost the race, so free the file_digest we allocated. */
+		kfree(verity_file_digest.data);
+}
+
+/*
+ * Calculate the digest of the fsverity_descriptor. The signature (if present)
+ * is also checked.
+ */
+static struct mem_range incfs_calc_verity_digest_from_desc(
+					const struct inode *inode,
+					struct fsverity_descriptor *desc,
+					u8 *signature, size_t sig_size)
+{
+	enum incfs_hash_tree_algorithm incfs_hash_alg;
+	struct mem_range verity_file_digest;
+	int err;
+	struct incfs_hash_alg *hash_alg;
+
+	incfs_hash_alg = incfs_convert_fsverity_hash_alg(desc->hash_algorithm);
+	if (incfs_hash_alg < 0)
+		return range(ERR_PTR(incfs_hash_alg), 0);
+
+	hash_alg = incfs_get_hash_alg(incfs_hash_alg);
+	if (IS_ERR(hash_alg))
+		return range((u8 *)hash_alg, 0);
+
+	verity_file_digest = range(kzalloc(hash_alg->digest_size, GFP_KERNEL),
+				   hash_alg->digest_size);
+	if (!verity_file_digest.data)
+		return range(ERR_PTR(-ENOMEM), 0);
+
+	err = incfs_compute_file_digest(hash_alg, desc,
+					verity_file_digest.data);
+	if (err) {
+		pr_err("Error %d computing file digest", err);
+		goto out;
+	}
+	pr_debug("Computed file digest: %s:%*phN\n",
+		 hash_alg->name, (int) verity_file_digest.len,
+		 verity_file_digest.data);
+
+	err = __fsverity_verify_signature(inode, signature, sig_size,
+					  verity_file_digest.data,
+					  desc->hash_algorithm);
+out:
+	if (err) {
+		kfree(verity_file_digest.data);
+		verity_file_digest = range(ERR_PTR(err), 0);
+	}
+	return verity_file_digest;
+}
+
+static struct fsverity_descriptor *incfs_get_fsverity_descriptor(
+					struct file *filp, int hash_algorithm)
+{
+	struct inode *inode = file_inode(filp);
+	struct fsverity_descriptor *desc = kzalloc(sizeof(*desc), GFP_KERNEL);
+	int err;
+
+	if (!desc)
+		return ERR_PTR(-ENOMEM);
+
+	*desc = (struct fsverity_descriptor) {
+		.version = 1,
+		.hash_algorithm = hash_algorithm,
+		.log_blocksize = ilog2(INCFS_DATA_FILE_BLOCK_SIZE),
+		.data_size = cpu_to_le64(inode->i_size),
+	};
+
+	err = incfs_get_root_hash(filp, desc->root_hash);
+	if (err) {
+		kfree(desc);
+		return ERR_PTR(err);
+	}
+
+	return desc;
+}
+
+static struct mem_range incfs_calc_verity_digest(
+					struct inode *inode, struct file *filp,
+					u8 *signature, size_t signature_size,
+					int hash_algorithm)
+{
+	struct fsverity_descriptor *desc = incfs_get_fsverity_descriptor(filp,
+							hash_algorithm);
+	struct mem_range verity_file_digest;
+
+	if (IS_ERR(desc))
+		return range((u8 *)desc, 0);
+	verity_file_digest = incfs_calc_verity_digest_from_desc(inode, desc,
+						signature, signature_size);
+	kfree(desc);
+	return verity_file_digest;
+}
+
+static int incfs_build_merkle_tree(struct file *f, struct data_file *df,
+			     struct backing_file_context *bfc,
+			     struct mtree *hash_tree, loff_t hash_offset,
+			     struct incfs_hash_alg *alg, struct mem_range hash)
+{
+	int error = 0;
+	int limit, lvl, i, result;
+	struct mem_range buf = {.len = INCFS_DATA_FILE_BLOCK_SIZE};
+	struct mem_range tmp = {.len = 2 * INCFS_DATA_FILE_BLOCK_SIZE};
+
+	buf.data = (u8 *)__get_free_pages(GFP_NOFS, get_order(buf.len));
+	tmp.data = (u8 *)__get_free_pages(GFP_NOFS, get_order(tmp.len));
+	if (!buf.data || !tmp.data) {
+		error = -ENOMEM;
+		goto out;
+	}
+
+	/*
+	 * lvl - 1 is the level we are reading, lvl the level we are writing
+	 * lvl == -1 means actual blocks
+	 * lvl == hash_tree->depth means root hash
+	 */
+	limit = df->df_data_block_count;
+	for (lvl = 0; lvl <= hash_tree->depth; lvl++) {
+		for (i = 0; i < limit; ++i) {
+			loff_t hash_level_offset;
+			struct mem_range partial_buf = buf;
+
+			if (lvl == 0)
+				result = incfs_read_data_file_block(partial_buf,
+						f, i, tmp, NULL, NULL);
+			else {
+				hash_level_offset = hash_offset +
+				       hash_tree->hash_level_suboffset[lvl - 1];
+
+				result = incfs_kread(bfc, partial_buf.data,
+						partial_buf.len,
+						hash_level_offset + i *
+						INCFS_DATA_FILE_BLOCK_SIZE);
+			}
+
+			if (result < 0) {
+				error = result;
+				goto out;
+			}
+
+			partial_buf.len = result;
+			error = incfs_calc_digest(alg, partial_buf, hash);
+			if (error)
+				goto out;
+
+			/*
+			 * last level - only one hash to take and it is stored
+			 * in the incfs signature record
+			 */
+			if (lvl == hash_tree->depth)
+				break;
+
+			hash_level_offset = hash_offset +
+				hash_tree->hash_level_suboffset[lvl];
+
+			result = incfs_kwrite(bfc, hash.data, hash.len,
+					hash_level_offset + hash.len * i);
+
+			if (result < 0) {
+				error = result;
+				goto out;
+			}
+
+			if (result != hash.len) {
+				error = -EIO;
+				goto out;
+			}
+		}
+		limit = DIV_ROUND_UP(limit,
+				     INCFS_DATA_FILE_BLOCK_SIZE / hash.len);
+	}
+
+out:
+	free_pages((unsigned long)tmp.data, get_order(tmp.len));
+	free_pages((unsigned long)buf.data, get_order(buf.len));
+	return error;
+}
+
+/*
+ * incfs files have a signature record that is separate from the
+ * verity_signature record. The signature record does not actually contain a
+ * signature, rather it contains the size/offset of the hash tree, and a binary
+ * blob which contains the root hash and potentially a signature.
+ *
+ * If the file was created with a signature record, then this function simply
+ * returns.
+ *
+ * Otherwise it will create a signature record with a minimal binary blob as
+ * defined by the structure below, create space for the hash tree and then
+ * populate it using incfs_build_merkle_tree
+ */
+static int incfs_add_signature_record(struct file *f)
+{
+	/* See incfs_parse_signature */
+	struct {
+		__le32 version;
+		__le32 size_of_hash_info_section;
+		struct {
+			__le32 hash_algorithm;
+			u8 log2_blocksize;
+			__le32 salt_size;
+			u8 salt[0];
+			__le32 hash_size;
+			u8 root_hash[32];
+		} __packed hash_section;
+		__le32 size_of_signing_info_section;
+		u8 signing_info_section[0];
+	} __packed sig = {
+		.version = cpu_to_le32(INCFS_SIGNATURE_VERSION),
+		.size_of_hash_info_section =
+			cpu_to_le32(sizeof(sig.hash_section)),
+		.hash_section = {
+			.hash_algorithm = cpu_to_le32(INCFS_HASH_TREE_SHA256),
+			.log2_blocksize = ilog2(INCFS_DATA_FILE_BLOCK_SIZE),
+			.hash_size = cpu_to_le32(SHA256_DIGEST_SIZE),
+		},
+	};
+
+	struct data_file *df = get_incfs_data_file(f);
+	struct mtree *hash_tree = NULL;
+	struct backing_file_context *bfc;
+	int error;
+	loff_t hash_offset, sig_offset;
+	struct incfs_hash_alg *alg = incfs_get_hash_alg(INCFS_HASH_TREE_SHA256);
+	u8 hash_buf[INCFS_MAX_HASH_SIZE];
+	int hash_size = alg->digest_size;
+	struct mem_range hash = range(hash_buf, hash_size);
+	int result;
+	struct incfs_df_signature *signature = NULL;
+
+	if (!df)
+		return -EINVAL;
+
+	if (df->df_header_flags & INCFS_FILE_MAPPED)
+		return -EINVAL;
+
+	/* Already signed? */
+	if (df->df_signature && df->df_hash_tree)
+		return 0;
+
+	if (df->df_signature || df->df_hash_tree)
+		return -EFSCORRUPTED;
+
+	/* Add signature metadata record to file */
+	hash_tree = incfs_alloc_mtree(range((u8 *)&sig, sizeof(sig)),
+				      df->df_data_block_count);
+	if (IS_ERR(hash_tree))
+		return PTR_ERR(hash_tree);
+
+	bfc = df->df_backing_file_context;
+	if (!bfc) {
+		error = -EFSCORRUPTED;
+		goto out;
+	}
+
+	error = mutex_lock_interruptible(&bfc->bc_mutex);
+	if (error)
+		goto out;
+
+	error = incfs_write_signature_to_backing_file(bfc,
+				range((u8 *)&sig, sizeof(sig)),
+				hash_tree->hash_tree_area_size,
+				&hash_offset, &sig_offset);
+	mutex_unlock(&bfc->bc_mutex);
+	if (error)
+		goto out;
+
+	/* Populate merkle tree */
+	error = incfs_build_merkle_tree(f, df, bfc, hash_tree, hash_offset, alg,
+				  hash);
+	if (error)
+		goto out;
+
+	/* Update signature metadata record */
+	memcpy(sig.hash_section.root_hash, hash.data, alg->digest_size);
+	result = incfs_kwrite(bfc, &sig, sizeof(sig), sig_offset);
+	if (result < 0) {
+		error = result;
+		goto out;
+	}
+
+	if (result != sizeof(sig)) {
+		error = -EIO;
+		goto out;
+	}
+
+	/* Update in-memory records */
+	memcpy(hash_tree->root_hash, hash.data, alg->digest_size);
+	signature = kzalloc(sizeof(*signature), GFP_NOFS);
+	if (!signature) {
+		error = -ENOMEM;
+		goto out;
+	}
+	*signature = (struct incfs_df_signature) {
+		.hash_offset = hash_offset,
+		.hash_size = hash_tree->hash_tree_area_size,
+		.sig_offset = sig_offset,
+		.sig_size = sizeof(sig),
+	};
+	df->df_signature = signature;
+	signature = NULL;
+
+	/*
+	 * Use memory barrier to prevent readpage seeing the hash tree until
+	 * it's fully there
+	 */
+	smp_store_release(&df->df_hash_tree, hash_tree);
+	hash_tree = NULL;
+
+out:
+	kfree(signature);
+	kfree(hash_tree);
+	return error;
+}
+
+static int incfs_enable_verity(struct file *filp,
+			 const struct fsverity_enable_arg *arg)
+{
+	struct inode *inode = file_inode(filp);
+	struct data_file *df = get_incfs_data_file(filp);
+	u8 *signature = NULL;
+	struct mem_range verity_file_digest = range(NULL, 0);
+	int err;
+
+	if (!df)
+		return -EFSCORRUPTED;
+
+	err = mutex_lock_interruptible(&df->df_enable_verity);
+	if (err)
+		return err;
+
+	if (IS_VERITY(inode)) {
+		err = -EEXIST;
+		goto out;
+	}
+
+	err = incfs_add_signature_record(filp);
+	if (err)
+		goto out;
+
+	/* Get the signature if the user provided one */
+	if (arg->sig_size) {
+		signature = memdup_user(u64_to_user_ptr(arg->sig_ptr),
+					arg->sig_size);
+		if (IS_ERR(signature)) {
+			err = PTR_ERR(signature);
+			signature = NULL;
+			goto out;
+		}
+	}
+
+	verity_file_digest = incfs_calc_verity_digest(inode, filp, signature,
+					arg->sig_size, arg->hash_algorithm);
+	if (IS_ERR(verity_file_digest.data)) {
+		err = PTR_ERR(verity_file_digest.data);
+		verity_file_digest.data = NULL;
+		goto out;
+	}
+
+	err = incfs_end_enable_verity(filp, signature, arg->sig_size);
+	if (err)
+		goto out;
+
+	/* Successfully enabled verity */
+	incfs_set_verity_digest(inode, verity_file_digest);
+	verity_file_digest.data = NULL;
+out:
+	mutex_unlock(&df->df_enable_verity);
+	kfree(signature);
+	kfree(verity_file_digest.data);
+	if (err)
+		pr_err("%s failed with err %d\n", __func__, err);
+	return err;
+}
+
+int incfs_ioctl_enable_verity(struct file *filp, const void __user *uarg)
+{
+	struct inode *inode = file_inode(filp);
+	struct fsverity_enable_arg arg;
+
+	if (copy_from_user(&arg, uarg, sizeof(arg)))
+		return -EFAULT;
+
+	if (arg.version != 1)
+		return -EINVAL;
+
+	if (arg.__reserved1 ||
+	    memchr_inv(arg.__reserved2, 0, sizeof(arg.__reserved2)))
+		return -EINVAL;
+
+	if (arg.hash_algorithm != FS_VERITY_HASH_ALG_SHA256)
+		return -EINVAL;
+
+	if (arg.block_size != PAGE_SIZE)
+		return -EINVAL;
+
+	if (arg.salt_size)
+		return -EINVAL;
+
+	if (arg.sig_size > FS_VERITY_MAX_SIGNATURE_SIZE)
+		return -EMSGSIZE;
+
+	if (S_ISDIR(inode->i_mode))
+		return -EISDIR;
+
+	if (!S_ISREG(inode->i_mode))
+		return -EINVAL;
+
+	return incfs_enable_verity(filp, &arg);
+}
+
+static u8 *incfs_get_verity_signature(struct file *filp, size_t *sig_size)
+{
+	struct data_file *df = get_incfs_data_file(filp);
+	struct incfs_df_verity_signature *vs;
+	u8 *signature;
+	int res;
+
+	if (!df || !df->df_backing_file_context)
+		return ERR_PTR(-EFSCORRUPTED);
+
+	vs = df->df_verity_signature;
+	if (!vs) {
+		*sig_size = 0;
+		return NULL;
+	}
+
+	if (!vs->size) {
+		*sig_size = 0;
+		return ERR_PTR(-EFSCORRUPTED);
+	}
+
+	signature = kzalloc(vs->size, GFP_KERNEL);
+	if (!signature)
+		return ERR_PTR(-ENOMEM);
+
+	res = incfs_kread(df->df_backing_file_context,
+			  signature, vs->size, vs->offset);
+
+	if (res < 0)
+		goto err_out;
+
+	if (res != vs->size) {
+		res = -EINVAL;
+		goto err_out;
+	}
+
+	*sig_size = vs->size;
+	return signature;
+
+err_out:
+	kfree(signature);
+	return ERR_PTR(res);
+}
+
+/* Ensure data_file->df_verity_file_digest is populated */
+static int ensure_verity_info(struct inode *inode, struct file *filp)
+{
+	struct mem_range verity_file_digest;
+	u8 *signature = NULL;
+	size_t sig_size;
+	int err = 0;
+
+	/* See if this file's verity file digest is already cached */
+	verity_file_digest = incfs_get_verity_digest(inode);
+	if (verity_file_digest.data)
+		return 0;
+
+	signature = incfs_get_verity_signature(filp, &sig_size);
+	if (IS_ERR(signature))
+		return PTR_ERR(signature);
+
+	verity_file_digest = incfs_calc_verity_digest(inode, filp, signature,
+						     sig_size,
+						     FS_VERITY_HASH_ALG_SHA256);
+	if (IS_ERR(verity_file_digest.data)) {
+		err = PTR_ERR(verity_file_digest.data);
+		goto out;
+	}
+
+	incfs_set_verity_digest(inode, verity_file_digest);
+
+out:
+	kfree(signature);
+	return err;
+}
+
+/**
+ * incfs_fsverity_file_open() - prepare to open a file that may be
+ * verity-enabled
+ * @inode: the inode being opened
+ * @filp: the struct file being set up
+ *
+ * When opening a verity file, set up data_file->df_verity_file_digest if not
+ * already done. Note that incfs does not allow opening for writing, so there is
+ * no need for that check.
+ *
+ * Return: 0 on success, -errno on failure
+ */
+int incfs_fsverity_file_open(struct inode *inode, struct file *filp)
+{
+	if (IS_VERITY(inode))
+		return ensure_verity_info(inode, filp);
+
+	return 0;
+}
+
+int incfs_ioctl_measure_verity(struct file *filp, void __user *_uarg)
+{
+	struct inode *inode = file_inode(filp);
+	struct mem_range verity_file_digest = incfs_get_verity_digest(inode);
+	struct fsverity_digest __user *uarg = _uarg;
+	struct fsverity_digest arg;
+
+	if (!verity_file_digest.data || !verity_file_digest.len)
+		return -ENODATA; /* not a verity file */
+
+	/*
+	 * The user specifies the digest_size their buffer has space for; we can
+	 * return the digest if it fits in the available space.  We write back
+	 * the actual size, which may be shorter than the user-specified size.
+	 */
+
+	if (get_user(arg.digest_size, &uarg->digest_size))
+		return -EFAULT;
+	if (arg.digest_size < verity_file_digest.len)
+		return -EOVERFLOW;
+
+	memset(&arg, 0, sizeof(arg));
+	arg.digest_algorithm = FS_VERITY_HASH_ALG_SHA256;
+	arg.digest_size = verity_file_digest.len;
+
+	if (copy_to_user(uarg, &arg, sizeof(arg)))
+		return -EFAULT;
+
+	if (copy_to_user(uarg->digest, verity_file_digest.data,
+			 verity_file_digest.len))
+		return -EFAULT;
+
+	return 0;
+}
+
+static int incfs_read_merkle_tree(struct file *filp, void __user *buf,
+				  u64 start_offset, int length)
+{
+	struct mem_range tmp_buf;
+	size_t offset;
+	int retval = 0;
+	int err = 0;
+	struct data_file *df = get_incfs_data_file(filp);
+
+	if (!df)
+		return -EINVAL;
+
+	tmp_buf = (struct mem_range) {
+		.data = kzalloc(INCFS_DATA_FILE_BLOCK_SIZE, GFP_NOFS),
+		.len = INCFS_DATA_FILE_BLOCK_SIZE,
+	};
+	if (!tmp_buf.data)
+		return -ENOMEM;
+
+	for (offset = start_offset; offset < start_offset + length;
+	     offset += tmp_buf.len) {
+		err = incfs_read_merkle_tree_blocks(tmp_buf, df, offset);
+
+		if (err < 0)
+			break;
+
+		if (err != tmp_buf.len)
+			break;
+
+		if (copy_to_user(buf, tmp_buf.data, tmp_buf.len))
+			break;
+
+		buf += tmp_buf.len;
+		retval += tmp_buf.len;
+	}
+
+	kfree(tmp_buf.data);
+	return retval ? retval : err;
+}
+
+static int incfs_read_descriptor(struct file *filp,
+				 void __user *buf, u64 offset, int length)
+{
+	int err;
+	struct fsverity_descriptor *desc = incfs_get_fsverity_descriptor(filp,
+						FS_VERITY_HASH_ALG_SHA256);
+
+	if (IS_ERR(desc))
+		return PTR_ERR(desc);
+	length = min_t(u64, length, sizeof(*desc));
+	err = copy_to_user(buf, desc, length);
+	kfree(desc);
+	return err ? err : length;
+}
+
+static int incfs_read_signature(struct file *filp,
+				void __user *buf, u64 offset, int length)
+{
+	size_t sig_size;
+	static u8 *signature;
+	int err;
+
+	signature = incfs_get_verity_signature(filp, &sig_size);
+	if (IS_ERR(signature))
+		return PTR_ERR(signature);
+
+	if (!signature)
+		return -ENODATA;
+
+	length = min_t(u64, length, sig_size);
+	err = copy_to_user(buf, signature, length);
+	kfree(signature);
+	return err ? err : length;
+}
+
+int incfs_ioctl_read_verity_metadata(struct file *filp,
+				     const void __user *uarg)
+{
+	struct fsverity_read_metadata_arg arg;
+	int length;
+	void __user *buf;
+
+	if (copy_from_user(&arg, uarg, sizeof(arg)))
+		return -EFAULT;
+
+	if (arg.__reserved)
+		return -EINVAL;
+
+	/* offset + length must not overflow. */
+	if (arg.offset + arg.length < arg.offset)
+		return -EINVAL;
+
+	/* Ensure that the return value will fit in INT_MAX. */
+	length = min_t(u64, arg.length, INT_MAX);
+
+	buf = u64_to_user_ptr(arg.buf_ptr);
+
+	switch (arg.metadata_type) {
+	case FS_VERITY_METADATA_TYPE_MERKLE_TREE:
+		return incfs_read_merkle_tree(filp, buf, arg.offset, length);
+	case FS_VERITY_METADATA_TYPE_DESCRIPTOR:
+		return incfs_read_descriptor(filp, buf, arg.offset, length);
+	case FS_VERITY_METADATA_TYPE_SIGNATURE:
+		return incfs_read_signature(filp, buf, arg.offset, length);
+	default:
+		return -EINVAL;
+	}
+}
diff --git a/fs/incfs/verity.h b/fs/incfs/verity.h
new file mode 100644
index 0000000..8fcdbc8
--- /dev/null
+++ b/fs/incfs/verity.h
@@ -0,0 +1,49 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright 2020 Google LLC
+ */
+
+#ifndef _INCFS_VERITY_H
+#define _INCFS_VERITY_H
+
+/* Arbitrary limit to bound the kmalloc() size.  Can be changed. */
+#define FS_VERITY_MAX_SIGNATURE_SIZE	16128
+
+#ifdef CONFIG_FS_VERITY
+
+int incfs_ioctl_enable_verity(struct file *filp, const void __user *uarg);
+int incfs_ioctl_measure_verity(struct file *filp, void __user *_uarg);
+
+int incfs_fsverity_file_open(struct inode *inode, struct file *filp);
+int incfs_ioctl_read_verity_metadata(struct file *filp,
+				     const void __user *uarg);
+
+#else /* !CONFIG_FS_VERITY */
+
+static inline int incfs_ioctl_enable_verity(struct file *filp,
+					    const void __user *uarg)
+{
+	return -EOPNOTSUPP;
+}
+
+static inline int incfs_ioctl_measure_verity(struct file *filp,
+					     void __user *_uarg)
+{
+	return -EOPNOTSUPP;
+}
+
+static inline int incfs_fsverity_file_open(struct inode *inode,
+					   struct file *filp)
+{
+	return -EOPNOTSUPP;
+}
+
+static inline int incfs_ioctl_read_verity_metadata(struct file *filp,
+						const void __user *uarg)
+{
+	return -EOPNOTSUPP;
+}
+
+#endif /* !CONFIG_FS_VERITY */
+
+#endif
diff --git a/fs/incfs/vfs.c b/fs/incfs/vfs.c
new file mode 100644
index 0000000..0c80779e
--- /dev/null
+++ b/fs/incfs/vfs.c
@@ -0,0 +1,1993 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright 2018 Google LLC
+ */
+
+#include <linux/blkdev.h>
+#include <linux/compat.h>
+#include <linux/delay.h>
+#include <linux/file.h>
+#include <linux/fs.h>
+#include <linux/fs_stack.h>
+#include <linux/fsnotify.h>
+#include <linux/fsverity.h>
+#include <linux/mmap_lock.h>
+#include <linux/namei.h>
+#include <linux/pagemap.h>
+#include <linux/parser.h>
+#include <linux/seq_file.h>
+#include <linux/backing-dev-defs.h>
+
+#include <uapi/linux/incrementalfs.h>
+
+#include "vfs.h"
+
+#include "data_mgmt.h"
+#include "format.h"
+#include "internal.h"
+#include "pseudo_files.h"
+#include "sysfs.h"
+#include "verity.h"
+
+static int incfs_remount_fs(struct super_block *sb, int *flags, char *data);
+
+static int dentry_revalidate(struct dentry *dentry, unsigned int flags);
+static void dentry_release(struct dentry *d);
+
+static int iterate_incfs_dir(struct file *file, struct dir_context *ctx);
+static struct dentry *dir_lookup(struct inode *dir_inode,
+		struct dentry *dentry, unsigned int flags);
+static int dir_mkdir(struct user_namespace *ns, struct inode *dir,
+		     struct dentry *dentry, umode_t mode);
+static int dir_unlink(struct inode *dir, struct dentry *dentry);
+static int dir_link(struct dentry *old_dentry, struct inode *dir,
+			 struct dentry *new_dentry);
+static int dir_rmdir(struct inode *dir, struct dentry *dentry);
+static int dir_rename(struct inode *old_dir, struct dentry *old_dentry,
+		struct inode *new_dir, struct dentry *new_dentry,
+		unsigned int flags);
+
+static int file_open(struct inode *inode, struct file *file);
+static int file_release(struct inode *inode, struct file *file);
+static int read_folio(struct file *f, struct folio *folio);
+static long dispatch_ioctl(struct file *f, unsigned int req, unsigned long arg);
+
+#ifdef CONFIG_COMPAT
+static long incfs_compat_ioctl(struct file *file, unsigned int cmd,
+			 unsigned long arg);
+#endif
+
+static struct inode *alloc_inode(struct super_block *sb);
+static void free_inode(struct inode *inode);
+static void evict_inode(struct inode *inode);
+
+static int incfs_setattr(struct user_namespace *ns, struct dentry *dentry,
+			 struct iattr *ia);
+static int incfs_getattr(struct user_namespace *ns, const struct path *path,
+			 struct kstat *stat, u32 request_mask,
+			 unsigned int query_flags);
+static ssize_t incfs_getxattr(struct dentry *d, const char *name,
+			void *value, size_t size);
+static ssize_t incfs_setxattr(struct user_namespace *ns, struct dentry *d,
+			      const char *name, void *value, size_t size,
+			      int flags);
+static ssize_t incfs_listxattr(struct dentry *d, char *list, size_t size);
+
+static int show_options(struct seq_file *, struct dentry *);
+
+static const struct super_operations incfs_super_ops = {
+	.statfs = simple_statfs,
+	.remount_fs = incfs_remount_fs,
+	.alloc_inode	= alloc_inode,
+	.destroy_inode	= free_inode,
+	.evict_inode = evict_inode,
+	.show_options = show_options
+};
+
+static int dir_rename_wrap(struct user_namespace *ns, struct inode *old_dir,
+			   struct dentry *old_dentry, struct inode *new_dir,
+			   struct dentry *new_dentry, unsigned int flags)
+{
+	return dir_rename(old_dir, old_dentry, new_dir, new_dentry, flags);
+}
+
+static const struct inode_operations incfs_dir_inode_ops = {
+	.lookup = dir_lookup,
+	.mkdir = dir_mkdir,
+	.rename = dir_rename_wrap,
+	.unlink = dir_unlink,
+	.link = dir_link,
+	.rmdir = dir_rmdir,
+	.setattr = incfs_setattr,
+};
+
+static const struct file_operations incfs_dir_fops = {
+	.llseek = generic_file_llseek,
+	.read = generic_read_dir,
+	.iterate = iterate_incfs_dir,
+	.open = file_open,
+	.release = file_release,
+};
+
+static const struct dentry_operations incfs_dentry_ops = {
+	.d_revalidate = dentry_revalidate,
+	.d_release = dentry_release
+};
+
+static const struct address_space_operations incfs_address_space_ops = {
+	.read_folio = read_folio,
+	/* .readpages = readpages */
+};
+
+static vm_fault_t incfs_fault(struct vm_fault *vmf)
+{
+	vmf->flags &= ~FAULT_FLAG_ALLOW_RETRY;
+	return filemap_fault(vmf);
+}
+
+static const struct vm_operations_struct incfs_file_vm_ops = {
+	.fault		= incfs_fault,
+	.map_pages	= filemap_map_pages,
+	.page_mkwrite	= filemap_page_mkwrite,
+};
+
+/* This is used for a general mmap of a disk file */
+
+static int incfs_file_mmap(struct file *file, struct vm_area_struct *vma)
+{
+	struct address_space *mapping = file->f_mapping;
+
+	if (!mapping->a_ops->read_folio)
+		return -ENOEXEC;
+	file_accessed(file);
+	vma->vm_ops = &incfs_file_vm_ops;
+	return 0;
+}
+
+const struct file_operations incfs_file_ops = {
+	.open = file_open,
+	.release = file_release,
+	.read_iter = generic_file_read_iter,
+	.mmap = incfs_file_mmap,
+	.splice_read = generic_file_splice_read,
+	.llseek = generic_file_llseek,
+	.unlocked_ioctl = dispatch_ioctl,
+#ifdef CONFIG_COMPAT
+	.compat_ioctl = incfs_compat_ioctl,
+#endif
+};
+
+const struct inode_operations incfs_file_inode_ops = {
+	.setattr = incfs_setattr,
+	.getattr = incfs_getattr,
+	.listxattr = incfs_listxattr
+};
+
+static int incfs_handler_getxattr(const struct xattr_handler *xh,
+				  struct dentry *d, struct inode *inode,
+				  const char *name, void *buffer, size_t size)
+{
+	return incfs_getxattr(d, name, buffer, size);
+}
+
+static int incfs_handler_setxattr(const struct xattr_handler *xh,
+				  struct user_namespace *ns,
+				  struct dentry *d, struct inode *inode,
+				  const char *name, const void *buffer,
+				  size_t size, int flags)
+{
+	return incfs_setxattr(ns, d, name, (void *)buffer, size, flags);
+}
+
+static const struct xattr_handler incfs_xattr_handler = {
+	.prefix = "",	/* AKA all attributes */
+	.get = incfs_handler_getxattr,
+	.set = incfs_handler_setxattr,
+};
+
+static const struct xattr_handler *incfs_xattr_ops[] = {
+	&incfs_xattr_handler,
+	NULL,
+};
+
+struct inode_search {
+	unsigned long ino;
+
+	struct dentry *backing_dentry;
+
+	size_t size;
+
+	bool verity;
+};
+
+enum parse_parameter {
+	Opt_read_timeout,
+	Opt_readahead_pages,
+	Opt_rlog_pages,
+	Opt_rlog_wakeup_cnt,
+	Opt_report_uid,
+	Opt_sysfs_name,
+	Opt_err
+};
+
+static const match_table_t option_tokens = {
+	{ Opt_read_timeout, "read_timeout_ms=%u" },
+	{ Opt_readahead_pages, "readahead=%u" },
+	{ Opt_rlog_pages, "rlog_pages=%u" },
+	{ Opt_rlog_wakeup_cnt, "rlog_wakeup_cnt=%u" },
+	{ Opt_report_uid, "report_uid" },
+	{ Opt_sysfs_name, "sysfs_name=%s" },
+	{ Opt_err, NULL }
+};
+
+static void free_options(struct mount_options *opts)
+{
+	kfree(opts->sysfs_name);
+	opts->sysfs_name = NULL;
+}
+
+static int parse_options(struct mount_options *opts, char *str)
+{
+	substring_t args[MAX_OPT_ARGS];
+	int value;
+	char *position;
+
+	if (opts == NULL)
+		return -EFAULT;
+
+	*opts = (struct mount_options) {
+		.read_timeout_ms = 1000, /* Default: 1s */
+		.readahead_pages = 10,
+		.read_log_pages = 2,
+		.read_log_wakeup_count = 10,
+	};
+
+	if (str == NULL || *str == 0)
+		return 0;
+
+	while ((position = strsep(&str, ",")) != NULL) {
+		int token;
+
+		if (!*position)
+			continue;
+
+		token = match_token(position, option_tokens, args);
+
+		switch (token) {
+		case Opt_read_timeout:
+			if (match_int(&args[0], &value))
+				return -EINVAL;
+			if (value > 3600000)
+				return -EINVAL;
+			opts->read_timeout_ms = value;
+			break;
+		case Opt_readahead_pages:
+			if (match_int(&args[0], &value))
+				return -EINVAL;
+			opts->readahead_pages = value;
+			break;
+		case Opt_rlog_pages:
+			if (match_int(&args[0], &value))
+				return -EINVAL;
+			opts->read_log_pages = value;
+			break;
+		case Opt_rlog_wakeup_cnt:
+			if (match_int(&args[0], &value))
+				return -EINVAL;
+			opts->read_log_wakeup_count = value;
+			break;
+		case Opt_report_uid:
+			opts->report_uid = true;
+			break;
+		case Opt_sysfs_name:
+			opts->sysfs_name = match_strdup(&args[0]);
+			break;
+		default:
+			free_options(opts);
+			return -EINVAL;
+		}
+	}
+
+	return 0;
+}
+
+/* Read file size from the attribute. Quicker than reading the header */
+static u64 read_size_attr(struct dentry *backing_dentry)
+{
+	__le64 attr_value;
+	ssize_t bytes_read;
+
+	bytes_read = vfs_getxattr(&init_user_ns, backing_dentry, INCFS_XATTR_SIZE_NAME,
+			(char *)&attr_value, sizeof(attr_value));
+
+	if (bytes_read != sizeof(attr_value))
+		return 0;
+
+	return le64_to_cpu(attr_value);
+}
+
+/* Read verity flag from the attribute. Quicker than reading the header */
+static bool read_verity_attr(struct dentry *backing_dentry)
+{
+	return vfs_getxattr(&init_user_ns, backing_dentry, INCFS_XATTR_VERITY_NAME, NULL, 0)
+		>= 0;
+}
+
+static int inode_test(struct inode *inode, void *opaque)
+{
+	struct inode_search *search = opaque;
+	struct inode_info *node = get_incfs_node(inode);
+	struct inode *backing_inode = d_inode(search->backing_dentry);
+
+	if (!node)
+		return 0;
+
+	return node->n_backing_inode == backing_inode &&
+		inode->i_ino == search->ino;
+}
+
+static int inode_set(struct inode *inode, void *opaque)
+{
+	struct inode_search *search = opaque;
+	struct inode_info *node = get_incfs_node(inode);
+	struct dentry *backing_dentry = search->backing_dentry;
+	struct inode *backing_inode = d_inode(backing_dentry);
+
+	fsstack_copy_attr_all(inode, backing_inode);
+	if (S_ISREG(inode->i_mode)) {
+		u64 size = search->size;
+
+		inode->i_size = size;
+		inode->i_blocks = get_blocks_count_for_size(size);
+		inode->i_mapping->a_ops = &incfs_address_space_ops;
+		inode->i_op = &incfs_file_inode_ops;
+		inode->i_fop = &incfs_file_ops;
+		inode->i_mode &= ~0222;
+		if (search->verity)
+			inode_set_flags(inode, S_VERITY, S_VERITY);
+	} else if (S_ISDIR(inode->i_mode)) {
+		inode->i_size = 0;
+		inode->i_blocks = 1;
+		inode->i_mapping->a_ops = &incfs_address_space_ops;
+		inode->i_op = &incfs_dir_inode_ops;
+		inode->i_fop = &incfs_dir_fops;
+	} else {
+		pr_warn_once("incfs: Unexpected inode type\n");
+		return -EBADF;
+	}
+
+	ihold(backing_inode);
+	node->n_backing_inode = backing_inode;
+	node->n_mount_info = get_mount_info(inode->i_sb);
+	inode->i_ctime = backing_inode->i_ctime;
+	inode->i_mtime = backing_inode->i_mtime;
+	inode->i_atime = backing_inode->i_atime;
+	inode->i_ino = backing_inode->i_ino;
+	if (backing_inode->i_ino < INCFS_START_INO_RANGE) {
+		pr_warn("incfs: ino conflict with backing FS %ld\n",
+			backing_inode->i_ino);
+	}
+
+	return 0;
+}
+
+static struct inode *fetch_regular_inode(struct super_block *sb,
+					struct dentry *backing_dentry)
+{
+	struct inode *backing_inode = d_inode(backing_dentry);
+	struct inode_search search = {
+		.ino = backing_inode->i_ino,
+		.backing_dentry = backing_dentry,
+		.size = read_size_attr(backing_dentry),
+		.verity = read_verity_attr(backing_dentry),
+	};
+	struct inode *inode = iget5_locked(sb, search.ino, inode_test,
+				inode_set, &search);
+
+	if (!inode)
+		return ERR_PTR(-ENOMEM);
+
+	if (inode->i_state & I_NEW)
+		unlock_new_inode(inode);
+
+	return inode;
+}
+
+static int iterate_incfs_dir(struct file *file, struct dir_context *ctx)
+{
+	struct dir_file *dir = get_incfs_dir_file(file);
+	int error = 0;
+	struct mount_info *mi = get_mount_info(file_superblock(file));
+	bool root;
+
+	if (!dir) {
+		error = -EBADF;
+		goto out;
+	}
+
+	root = dir->backing_dir->f_inode
+			== d_inode(mi->mi_backing_dir_path.dentry);
+
+	if (root) {
+		error = emit_pseudo_files(ctx);
+		if (error)
+			goto out;
+	}
+
+	ctx->pos -= PSEUDO_FILE_COUNT;
+	error = iterate_dir(dir->backing_dir, ctx);
+	ctx->pos += PSEUDO_FILE_COUNT;
+	file->f_pos = dir->backing_dir->f_pos;
+out:
+	if (error)
+		pr_warn("incfs: %s %s %d\n", __func__,
+			file->f_path.dentry->d_name.name, error);
+	return error;
+}
+
+static int incfs_init_dentry(struct dentry *dentry, struct path *path)
+{
+	struct dentry_info *d_info = NULL;
+
+	if (!dentry || !path)
+		return -EFAULT;
+
+	d_info = kzalloc(sizeof(*d_info), GFP_NOFS);
+	if (!d_info)
+		return -ENOMEM;
+
+	d_info->backing_path = *path;
+	path_get(path);
+
+	dentry->d_fsdata = d_info;
+	return 0;
+}
+
+static struct dentry *open_or_create_special_dir(struct dentry *backing_dir,
+						 const char *name,
+						 bool *created)
+{
+	struct dentry *index_dentry;
+	struct inode *backing_inode = d_inode(backing_dir);
+	int err = 0;
+
+	index_dentry = incfs_lookup_dentry(backing_dir, name);
+	if (!index_dentry) {
+		return ERR_PTR(-EINVAL);
+	} else if (IS_ERR(index_dentry)) {
+		return index_dentry;
+	} else if (d_really_is_positive(index_dentry)) {
+		/* Index already exists. */
+		*created = false;
+		return index_dentry;
+	}
+
+	/* Index needs to be created. */
+	inode_lock_nested(backing_inode, I_MUTEX_PARENT);
+	err = vfs_mkdir(&init_user_ns, backing_inode, index_dentry, 0777);
+	inode_unlock(backing_inode);
+
+	if (err) {
+		dput(index_dentry);
+		return ERR_PTR(err);
+	}
+
+	if (!d_really_is_positive(index_dentry) ||
+		unlikely(d_unhashed(index_dentry))) {
+		dput(index_dentry);
+		return ERR_PTR(-EINVAL);
+	}
+
+	*created = true;
+	return index_dentry;
+}
+
+static int read_single_page_timeouts(struct data_file *df, struct file *f,
+				     int block_index, struct mem_range range,
+				     struct mem_range tmp,
+				     unsigned int *delayed_min_us)
+{
+	struct mount_info *mi = df->df_mount_info;
+	struct incfs_read_data_file_timeouts timeouts = {
+		.max_pending_time_us = U32_MAX,
+	};
+	int uid = current_uid().val;
+	int i;
+
+	spin_lock(&mi->mi_per_uid_read_timeouts_lock);
+	for (i = 0; i < mi->mi_per_uid_read_timeouts_size /
+		sizeof(*mi->mi_per_uid_read_timeouts); ++i) {
+		struct incfs_per_uid_read_timeouts *t =
+			&mi->mi_per_uid_read_timeouts[i];
+
+		if(t->uid == uid) {
+			timeouts.min_time_us = t->min_time_us;
+			timeouts.min_pending_time_us = t->min_pending_time_us;
+			timeouts.max_pending_time_us = t->max_pending_time_us;
+			break;
+		}
+	}
+	spin_unlock(&mi->mi_per_uid_read_timeouts_lock);
+	if (timeouts.max_pending_time_us == U32_MAX) {
+		u64 read_timeout_us = (u64)mi->mi_options.read_timeout_ms *
+					1000;
+
+		timeouts.max_pending_time_us = read_timeout_us <= U32_MAX ?
+					       read_timeout_us : U32_MAX;
+	}
+
+	return incfs_read_data_file_block(range, f, block_index, tmp,
+					  &timeouts, delayed_min_us);
+}
+
+static int usleep_interruptible(u32 us)
+{
+	/* See:
+	 * https://www.kernel.org/doc/Documentation/timers/timers-howto.txt
+	 * for explanation
+	 */
+	if (us < 10) {
+		udelay(us);
+		return 0;
+	} else if (us < 20000) {
+		usleep_range(us, us + us / 10);
+		return 0;
+	} else
+		return msleep_interruptible(us / 1000);
+}
+
+static int read_folio(struct file *f, struct folio *folio)
+{
+	struct page *page = &folio->page;
+	loff_t offset = 0;
+	loff_t size = 0;
+	ssize_t bytes_to_read = 0;
+	ssize_t read_result = 0;
+	struct data_file *df = get_incfs_data_file(f);
+	int result = 0;
+	void *page_start;
+	int block_index;
+	unsigned int delayed_min_us = 0;
+
+	if (!df) {
+		SetPageError(page);
+		unlock_page(page);
+		return -EBADF;
+	}
+
+	page_start = kmap(page);
+	offset = page_offset(page);
+	block_index = (offset + df->df_mapped_offset) /
+		INCFS_DATA_FILE_BLOCK_SIZE;
+	size = df->df_size;
+
+	if (offset < size) {
+		struct mem_range tmp = {
+			.len = 2 * INCFS_DATA_FILE_BLOCK_SIZE
+		};
+		tmp.data = (u8 *)__get_free_pages(GFP_NOFS, get_order(tmp.len));
+		if (!tmp.data) {
+			read_result = -ENOMEM;
+			goto err;
+		}
+		bytes_to_read = min_t(loff_t, size - offset, PAGE_SIZE);
+
+		read_result = read_single_page_timeouts(df, f, block_index,
+					range(page_start, bytes_to_read), tmp,
+					&delayed_min_us);
+
+		free_pages((unsigned long)tmp.data, get_order(tmp.len));
+	} else {
+		bytes_to_read = 0;
+		read_result = 0;
+	}
+
+err:
+	if (read_result < 0)
+		result = read_result;
+	else if (read_result < PAGE_SIZE)
+		zero_user(page, read_result, PAGE_SIZE - read_result);
+
+	if (result == 0)
+		SetPageUptodate(page);
+	else
+		SetPageError(page);
+
+	flush_dcache_page(page);
+	kunmap(page);
+	unlock_page(page);
+	if (delayed_min_us)
+		usleep_interruptible(delayed_min_us);
+	return result;
+}
+
+int incfs_link(struct dentry *what, struct dentry *where)
+{
+	struct dentry *parent_dentry = dget_parent(where);
+	struct inode *pinode = d_inode(parent_dentry);
+	int error = 0;
+
+	inode_lock_nested(pinode, I_MUTEX_PARENT);
+	error = vfs_link(what, &init_user_ns, pinode, where, NULL);
+	inode_unlock(pinode);
+
+	dput(parent_dentry);
+	return error;
+}
+
+int incfs_unlink(struct dentry *dentry)
+{
+	struct dentry *parent_dentry = dget_parent(dentry);
+	struct inode *pinode = d_inode(parent_dentry);
+	int error = 0;
+
+	inode_lock_nested(pinode, I_MUTEX_PARENT);
+	error = vfs_unlink(&init_user_ns, pinode, dentry, NULL);
+	inode_unlock(pinode);
+
+	dput(parent_dentry);
+	return error;
+}
+
+static int incfs_rmdir(struct dentry *dentry)
+{
+	struct dentry *parent_dentry = dget_parent(dentry);
+	struct inode *pinode = d_inode(parent_dentry);
+	int error = 0;
+
+	inode_lock_nested(pinode, I_MUTEX_PARENT);
+	error = vfs_rmdir(&init_user_ns, pinode, dentry);
+	inode_unlock(pinode);
+
+	dput(parent_dentry);
+	return error;
+}
+
+static void notify_unlink(struct dentry *dentry, const char *file_id_str,
+			  const char *special_directory)
+{
+	struct dentry *root = dentry;
+	struct dentry *file = NULL;
+	struct dentry *dir = NULL;
+	int error = 0;
+	bool take_lock = root->d_parent != root->d_parent->d_parent;
+
+	while (root != root->d_parent)
+		root = root->d_parent;
+
+	if (take_lock)
+		dir = incfs_lookup_dentry(root, special_directory);
+	else
+		dir = lookup_one_len(special_directory, root,
+				     strlen(special_directory));
+
+	if (IS_ERR(dir)) {
+		error = PTR_ERR(dir);
+		goto out;
+	}
+	if (d_is_negative(dir)) {
+		error = -ENOENT;
+		goto out;
+	}
+
+	file = incfs_lookup_dentry(dir, file_id_str);
+	if (IS_ERR(file)) {
+		error = PTR_ERR(file);
+		goto out;
+	}
+	if (d_is_negative(file)) {
+		error = -ENOENT;
+		goto out;
+	}
+
+	fsnotify_unlink(d_inode(dir), file);
+	d_delete(file);
+
+out:
+	if (error)
+		pr_warn("%s failed with error %d\n", __func__, error);
+
+	dput(dir);
+	dput(file);
+}
+
+static void handle_file_completed(struct file *f, struct data_file *df)
+{
+	struct backing_file_context *bfc;
+	struct mount_info *mi = df->df_mount_info;
+	char *file_id_str = NULL;
+	struct dentry *incomplete_file_dentry = NULL;
+	const struct cred *old_cred = override_creds(mi->mi_owner);
+	int error;
+
+	/* Truncate file to remove any preallocated space */
+	bfc = df->df_backing_file_context;
+	if (bfc) {
+		struct file *f = bfc->bc_file;
+
+		if (f) {
+			loff_t size = i_size_read(file_inode(f));
+
+			error = vfs_truncate(&f->f_path, size);
+			if (error)
+				/* No useful action on failure */
+				pr_warn("incfs: Failed to truncate complete file: %d\n",
+					error);
+		}
+	}
+
+	/* This is best effort - there is no useful action to take on failure */
+	file_id_str = file_id_to_str(df->df_id);
+	if (!file_id_str)
+		goto out;
+
+	incomplete_file_dentry = incfs_lookup_dentry(
+					df->df_mount_info->mi_incomplete_dir,
+					file_id_str);
+	if (!incomplete_file_dentry || IS_ERR(incomplete_file_dentry)) {
+		incomplete_file_dentry = NULL;
+		goto out;
+	}
+
+	if (!d_really_is_positive(incomplete_file_dentry))
+		goto out;
+
+	vfs_fsync(df->df_backing_file_context->bc_file, 0);
+	error = incfs_unlink(incomplete_file_dentry);
+	if (error) {
+		pr_warn("incfs: Deleting incomplete file failed: %d\n", error);
+		goto out;
+	}
+
+	notify_unlink(f->f_path.dentry, file_id_str, INCFS_INCOMPLETE_NAME);
+
+out:
+	dput(incomplete_file_dentry);
+	kfree(file_id_str);
+	revert_creds(old_cred);
+}
+
+static long ioctl_fill_blocks(struct file *f, void __user *arg)
+{
+	struct incfs_fill_blocks __user *usr_fill_blocks = arg;
+	struct incfs_fill_blocks fill_blocks;
+	struct incfs_fill_block __user *usr_fill_block_array;
+	struct data_file *df = get_incfs_data_file(f);
+	struct incfs_file_data *fd = f->private_data;
+	const ssize_t data_buf_size = 2 * INCFS_DATA_FILE_BLOCK_SIZE;
+	u8 *data_buf = NULL;
+	ssize_t error = 0;
+	int i = 0;
+	bool complete = false;
+
+	if (!df)
+		return -EBADF;
+
+	if (!fd || fd->fd_fill_permission != CAN_FILL)
+		return -EPERM;
+
+	if (copy_from_user(&fill_blocks, usr_fill_blocks, sizeof(fill_blocks)))
+		return -EFAULT;
+
+	usr_fill_block_array = u64_to_user_ptr(fill_blocks.fill_blocks);
+	data_buf = (u8 *)__get_free_pages(GFP_NOFS | __GFP_COMP,
+					  get_order(data_buf_size));
+	if (!data_buf)
+		return -ENOMEM;
+
+	for (i = 0; i < fill_blocks.count; i++) {
+		struct incfs_fill_block fill_block = {};
+
+		if (copy_from_user(&fill_block, &usr_fill_block_array[i],
+				   sizeof(fill_block)) > 0) {
+			error = -EFAULT;
+			break;
+		}
+
+		if (fill_block.data_len > data_buf_size) {
+			error = -E2BIG;
+			break;
+		}
+
+		if (copy_from_user(data_buf, u64_to_user_ptr(fill_block.data),
+				   fill_block.data_len) > 0) {
+			error = -EFAULT;
+			break;
+		}
+		fill_block.data = 0; /* To make sure nobody uses it. */
+		if (fill_block.flags & INCFS_BLOCK_FLAGS_HASH) {
+			error = incfs_process_new_hash_block(df, &fill_block,
+							     data_buf);
+		} else {
+			error = incfs_process_new_data_block(df, &fill_block,
+							data_buf, &complete);
+		}
+		if (error)
+			break;
+	}
+
+	if (data_buf)
+		free_pages((unsigned long)data_buf, get_order(data_buf_size));
+
+	if (complete)
+		handle_file_completed(f, df);
+
+	/*
+	 * Only report the error if no records were processed, otherwise
+	 * just return how many were processed successfully.
+	 */
+	if (i == 0)
+		return error;
+
+	return i;
+}
+
+static long ioctl_read_file_signature(struct file *f, void __user *arg)
+{
+	struct incfs_get_file_sig_args __user *args_usr_ptr = arg;
+	struct incfs_get_file_sig_args args = {};
+	u8 *sig_buffer = NULL;
+	size_t sig_buf_size = 0;
+	int error = 0;
+	int read_result = 0;
+	struct data_file *df = get_incfs_data_file(f);
+
+	if (!df)
+		return -EINVAL;
+
+	if (copy_from_user(&args, args_usr_ptr, sizeof(args)) > 0)
+		return -EINVAL;
+
+	sig_buf_size = args.file_signature_buf_size;
+	if (sig_buf_size > INCFS_MAX_SIGNATURE_SIZE)
+		return -E2BIG;
+
+	sig_buffer = kzalloc(sig_buf_size, GFP_NOFS | __GFP_COMP);
+	if (!sig_buffer)
+		return -ENOMEM;
+
+	read_result = incfs_read_file_signature(df,
+			range(sig_buffer, sig_buf_size));
+
+	if (read_result < 0) {
+		error = read_result;
+		goto out;
+	}
+
+	if (copy_to_user(u64_to_user_ptr(args.file_signature), sig_buffer,
+			read_result)) {
+		error = -EFAULT;
+		goto out;
+	}
+
+	args.file_signature_len_out = read_result;
+	if (copy_to_user(args_usr_ptr, &args, sizeof(args)))
+		error = -EFAULT;
+
+out:
+	kfree(sig_buffer);
+
+	return error;
+}
+
+static long ioctl_get_filled_blocks(struct file *f, void __user *arg)
+{
+	struct incfs_get_filled_blocks_args __user *args_usr_ptr = arg;
+	struct incfs_get_filled_blocks_args args = {};
+	struct data_file *df = get_incfs_data_file(f);
+	struct incfs_file_data *fd = f->private_data;
+	int error;
+
+	if (!df || !fd)
+		return -EINVAL;
+
+	if (fd->fd_fill_permission != CAN_FILL)
+		return -EPERM;
+
+	if (copy_from_user(&args, args_usr_ptr, sizeof(args)) > 0)
+		return -EINVAL;
+
+	error = incfs_get_filled_blocks(df, fd, &args);
+
+	if (copy_to_user(args_usr_ptr, &args, sizeof(args)))
+		return -EFAULT;
+
+	return error;
+}
+
+static long ioctl_get_block_count(struct file *f, void __user *arg)
+{
+	struct incfs_get_block_count_args __user *args_usr_ptr = arg;
+	struct incfs_get_block_count_args args = {};
+	struct data_file *df = get_incfs_data_file(f);
+
+	if (!df)
+		return -EINVAL;
+
+	args.total_data_blocks_out = df->df_data_block_count;
+	args.filled_data_blocks_out = atomic_read(&df->df_data_blocks_written);
+	args.total_hash_blocks_out = df->df_total_block_count -
+		df->df_data_block_count;
+	args.filled_hash_blocks_out = atomic_read(&df->df_hash_blocks_written);
+
+	if (copy_to_user(args_usr_ptr, &args, sizeof(args)))
+		return -EFAULT;
+
+	return 0;
+}
+
+static int incfs_ioctl_get_flags(struct file *f, void __user *arg)
+{
+	u32 flags = IS_VERITY(file_inode(f)) ? FS_VERITY_FL : 0;
+
+	return put_user(flags, (int __user *) arg);
+}
+
+static long dispatch_ioctl(struct file *f, unsigned int req, unsigned long arg)
+{
+	switch (req) {
+	case INCFS_IOC_FILL_BLOCKS:
+		return ioctl_fill_blocks(f, (void __user *)arg);
+	case INCFS_IOC_READ_FILE_SIGNATURE:
+		return ioctl_read_file_signature(f, (void __user *)arg);
+	case INCFS_IOC_GET_FILLED_BLOCKS:
+		return ioctl_get_filled_blocks(f, (void __user *)arg);
+	case INCFS_IOC_GET_BLOCK_COUNT:
+		return ioctl_get_block_count(f, (void __user *)arg);
+	case FS_IOC_ENABLE_VERITY:
+		return incfs_ioctl_enable_verity(f, (const void __user *)arg);
+	case FS_IOC_GETFLAGS:
+		return incfs_ioctl_get_flags(f, (void __user *) arg);
+	case FS_IOC_MEASURE_VERITY:
+		return incfs_ioctl_measure_verity(f, (void __user *)arg);
+	case FS_IOC_READ_VERITY_METADATA:
+		return incfs_ioctl_read_verity_metadata(f, (void __user *)arg);
+	default:
+		return -EINVAL;
+	}
+}
+
+#ifdef CONFIG_COMPAT
+static long incfs_compat_ioctl(struct file *file, unsigned int cmd,
+			       unsigned long arg)
+{
+	switch (cmd) {
+	case FS_IOC32_GETFLAGS:
+		cmd = FS_IOC_GETFLAGS;
+		break;
+	case INCFS_IOC_FILL_BLOCKS:
+	case INCFS_IOC_READ_FILE_SIGNATURE:
+	case INCFS_IOC_GET_FILLED_BLOCKS:
+	case INCFS_IOC_GET_BLOCK_COUNT:
+	case FS_IOC_ENABLE_VERITY:
+	case FS_IOC_MEASURE_VERITY:
+	case FS_IOC_READ_VERITY_METADATA:
+		break;
+	default:
+		return -ENOIOCTLCMD;
+	}
+	return dispatch_ioctl(file, cmd, (unsigned long) compat_ptr(arg));
+}
+#endif
+
+static struct dentry *dir_lookup(struct inode *dir_inode, struct dentry *dentry,
+				 unsigned int flags)
+{
+	struct mount_info *mi = get_mount_info(dir_inode->i_sb);
+	struct dentry *dir_dentry = NULL;
+	struct dentry *backing_dentry = NULL;
+	struct path dir_backing_path = {};
+	struct inode_info *dir_info = get_incfs_node(dir_inode);
+	int err = 0;
+
+	if (!mi || !dir_info || !dir_info->n_backing_inode)
+		return ERR_PTR(-EBADF);
+
+	if (d_inode(mi->mi_backing_dir_path.dentry) ==
+		dir_info->n_backing_inode) {
+		/* We do lookup in the FS root. Show pseudo files. */
+		err = dir_lookup_pseudo_files(dir_inode->i_sb, dentry);
+		if (err != -ENOENT)
+			goto out;
+		err = 0;
+	}
+
+	dir_dentry = dget_parent(dentry);
+	get_incfs_backing_path(dir_dentry, &dir_backing_path);
+	backing_dentry = incfs_lookup_dentry(dir_backing_path.dentry,
+						dentry->d_name.name);
+
+	if (!backing_dentry || IS_ERR(backing_dentry)) {
+		err = IS_ERR(backing_dentry)
+			? PTR_ERR(backing_dentry)
+			: -EFAULT;
+		backing_dentry = NULL;
+		goto out;
+	} else {
+		struct inode *inode = NULL;
+		struct path backing_path = {
+			.mnt = dir_backing_path.mnt,
+			.dentry = backing_dentry
+		};
+
+		err = incfs_init_dentry(dentry, &backing_path);
+		if (err)
+			goto out;
+
+		if (!d_really_is_positive(backing_dentry)) {
+			/*
+			 * No such entry found in the backing dir.
+			 * Create a negative entry.
+			 */
+			d_add(dentry, NULL);
+			err = 0;
+			goto out;
+		}
+
+		if (d_inode(backing_dentry)->i_sb !=
+				dir_info->n_backing_inode->i_sb) {
+			/*
+			 * Somehow after the path lookup we ended up in a
+			 * different fs mount. If we keep going it's going
+			 * to end badly.
+			 */
+			err = -EXDEV;
+			goto out;
+		}
+
+		inode = fetch_regular_inode(dir_inode->i_sb, backing_dentry);
+		if (IS_ERR(inode)) {
+			err = PTR_ERR(inode);
+			goto out;
+		}
+
+		d_add(dentry, inode);
+	}
+
+out:
+	dput(dir_dentry);
+	dput(backing_dentry);
+	path_put(&dir_backing_path);
+	if (err)
+		pr_debug("incfs: %s %s %d\n", __func__,
+			 dentry->d_name.name, err);
+	return ERR_PTR(err);
+}
+
+static int dir_mkdir(struct user_namespace *ns, struct inode *dir, struct dentry *dentry, umode_t mode)
+{
+	struct mount_info *mi = get_mount_info(dir->i_sb);
+	struct inode_info *dir_node = get_incfs_node(dir);
+	struct dentry *backing_dentry = NULL;
+	struct path backing_path = {};
+	int err = 0;
+
+
+	if (!mi || !dir_node || !dir_node->n_backing_inode)
+		return -EBADF;
+
+	err = mutex_lock_interruptible(&mi->mi_dir_struct_mutex);
+	if (err)
+		return err;
+
+	get_incfs_backing_path(dentry, &backing_path);
+	backing_dentry = backing_path.dentry;
+
+	if (!backing_dentry) {
+		err = -EBADF;
+		goto path_err;
+	}
+
+	if (backing_dentry->d_parent == mi->mi_index_dir) {
+		/* Can't create a subdir inside .index */
+		err = -EBUSY;
+		goto out;
+	}
+
+	if (backing_dentry->d_parent == mi->mi_incomplete_dir) {
+		/* Can't create a subdir inside .incomplete */
+		err = -EBUSY;
+		goto out;
+	}
+	inode_lock_nested(dir_node->n_backing_inode, I_MUTEX_PARENT);
+	err = vfs_mkdir(ns, dir_node->n_backing_inode, backing_dentry, mode | 0222);
+	inode_unlock(dir_node->n_backing_inode);
+	if (!err) {
+		struct inode *inode = NULL;
+
+		if (d_really_is_negative(backing_dentry) ||
+			unlikely(d_unhashed(backing_dentry))) {
+			err = -EINVAL;
+			goto out;
+		}
+
+		inode = fetch_regular_inode(dir->i_sb, backing_dentry);
+		if (IS_ERR(inode)) {
+			err = PTR_ERR(inode);
+			goto out;
+		}
+		d_instantiate(dentry, inode);
+	}
+
+out:
+	if (d_really_is_negative(dentry))
+		d_drop(dentry);
+	path_put(&backing_path);
+
+path_err:
+	mutex_unlock(&mi->mi_dir_struct_mutex);
+	if (err)
+		pr_debug("incfs: %s err:%d\n", __func__, err);
+	return err;
+}
+
+/*
+ * Delete file referenced by backing_dentry and if appropriate its hardlink
+ * from .index and .incomplete
+ */
+static int file_delete(struct mount_info *mi, struct dentry *dentry,
+			struct dentry *backing_dentry, int nlink)
+{
+	struct dentry *index_file_dentry = NULL;
+	struct dentry *incomplete_file_dentry = NULL;
+	/* 2 chars per byte of file ID + 1 char for \0 */
+	char file_id_str[2 * sizeof(incfs_uuid_t) + 1] = {0};
+	ssize_t uuid_size = 0;
+	int error = 0;
+
+	WARN_ON(!mutex_is_locked(&mi->mi_dir_struct_mutex));
+
+	if (nlink > 3)
+		goto just_unlink;
+
+	uuid_size = vfs_getxattr(&init_user_ns, backing_dentry, INCFS_XATTR_ID_NAME,
+			file_id_str, 2 * sizeof(incfs_uuid_t));
+	if (uuid_size < 0) {
+		error = uuid_size;
+		goto out;
+	}
+
+	if (uuid_size != 2 * sizeof(incfs_uuid_t)) {
+		error = -EBADMSG;
+		goto out;
+	}
+
+	index_file_dentry = incfs_lookup_dentry(mi->mi_index_dir, file_id_str);
+	if (IS_ERR(index_file_dentry)) {
+		error = PTR_ERR(index_file_dentry);
+		index_file_dentry = NULL;
+		goto out;
+	}
+
+	if (d_really_is_positive(index_file_dentry) && nlink > 0)
+		nlink--;
+
+	if (nlink > 2)
+		goto just_unlink;
+
+	incomplete_file_dentry = incfs_lookup_dentry(mi->mi_incomplete_dir,
+						     file_id_str);
+	if (IS_ERR(incomplete_file_dentry)) {
+		error = PTR_ERR(incomplete_file_dentry);
+		incomplete_file_dentry = NULL;
+		goto out;
+	}
+
+	if (d_really_is_positive(incomplete_file_dentry) && nlink > 0)
+		nlink--;
+
+	if (nlink > 1)
+		goto just_unlink;
+
+	if (d_really_is_positive(index_file_dentry)) {
+		error = incfs_unlink(index_file_dentry);
+		if (error)
+			goto out;
+		notify_unlink(dentry, file_id_str, INCFS_INDEX_NAME);
+	}
+
+	if (d_really_is_positive(incomplete_file_dentry)) {
+		error = incfs_unlink(incomplete_file_dentry);
+		if (error)
+			goto out;
+		notify_unlink(dentry, file_id_str, INCFS_INCOMPLETE_NAME);
+	}
+
+just_unlink:
+	error = incfs_unlink(backing_dentry);
+
+out:
+	dput(index_file_dentry);
+	dput(incomplete_file_dentry);
+	if (error)
+		pr_debug("incfs: delete_file_from_index err:%d\n", error);
+	return error;
+}
+
+static int dir_unlink(struct inode *dir, struct dentry *dentry)
+{
+	struct mount_info *mi = get_mount_info(dir->i_sb);
+	struct path backing_path = {};
+	struct kstat stat;
+	int err = 0;
+
+	if (!mi)
+		return -EBADF;
+
+	err = mutex_lock_interruptible(&mi->mi_dir_struct_mutex);
+	if (err)
+		return err;
+
+	get_incfs_backing_path(dentry, &backing_path);
+	if (!backing_path.dentry) {
+		err = -EBADF;
+		goto path_err;
+	}
+
+	if (backing_path.dentry->d_parent == mi->mi_index_dir) {
+		/* Direct unlink from .index are not allowed. */
+		err = -EBUSY;
+		goto out;
+	}
+
+	if (backing_path.dentry->d_parent == mi->mi_incomplete_dir) {
+		/* Direct unlink from .incomplete are not allowed. */
+		err = -EBUSY;
+		goto out;
+	}
+
+	err = vfs_getattr(&backing_path, &stat, STATX_NLINK,
+			  AT_STATX_SYNC_AS_STAT);
+	if (err)
+		goto out;
+
+	err = file_delete(mi, dentry, backing_path.dentry, stat.nlink);
+
+	d_drop(dentry);
+out:
+	path_put(&backing_path);
+path_err:
+	if (err)
+		pr_debug("incfs: %s err:%d\n", __func__, err);
+	mutex_unlock(&mi->mi_dir_struct_mutex);
+	return err;
+}
+
+static int dir_link(struct dentry *old_dentry, struct inode *dir,
+			 struct dentry *new_dentry)
+{
+	struct mount_info *mi = get_mount_info(dir->i_sb);
+	struct path backing_old_path = {};
+	struct path backing_new_path = {};
+	int error = 0;
+
+	if (!mi)
+		return -EBADF;
+
+	error = mutex_lock_interruptible(&mi->mi_dir_struct_mutex);
+	if (error)
+		return error;
+
+	get_incfs_backing_path(old_dentry, &backing_old_path);
+	get_incfs_backing_path(new_dentry, &backing_new_path);
+
+	if (backing_new_path.dentry->d_parent == mi->mi_index_dir) {
+		/* Can't link to .index */
+		error = -EBUSY;
+		goto out;
+	}
+
+	if (backing_new_path.dentry->d_parent == mi->mi_incomplete_dir) {
+		/* Can't link to .incomplete */
+		error = -EBUSY;
+		goto out;
+	}
+
+	error = incfs_link(backing_old_path.dentry, backing_new_path.dentry);
+	if (!error) {
+		struct inode *inode = NULL;
+		struct dentry *bdentry = backing_new_path.dentry;
+
+		if (d_really_is_negative(bdentry)) {
+			error = -EINVAL;
+			goto out;
+		}
+
+		inode = fetch_regular_inode(dir->i_sb, bdentry);
+		if (IS_ERR(inode)) {
+			error = PTR_ERR(inode);
+			goto out;
+		}
+		d_instantiate(new_dentry, inode);
+	}
+
+out:
+	path_put(&backing_old_path);
+	path_put(&backing_new_path);
+	if (error)
+		pr_debug("incfs: %s err:%d\n", __func__, error);
+	mutex_unlock(&mi->mi_dir_struct_mutex);
+	return error;
+}
+
+static int dir_rmdir(struct inode *dir, struct dentry *dentry)
+{
+	struct mount_info *mi = get_mount_info(dir->i_sb);
+	struct path backing_path = {};
+	int err = 0;
+
+	if (!mi)
+		return -EBADF;
+
+	err = mutex_lock_interruptible(&mi->mi_dir_struct_mutex);
+	if (err)
+		return err;
+
+	get_incfs_backing_path(dentry, &backing_path);
+	if (!backing_path.dentry) {
+		err = -EBADF;
+		goto path_err;
+	}
+
+	if (backing_path.dentry == mi->mi_index_dir) {
+		/* Can't delete .index */
+		err = -EBUSY;
+		goto out;
+	}
+
+	if (backing_path.dentry == mi->mi_incomplete_dir) {
+		/* Can't delete .incomplete */
+		err = -EBUSY;
+		goto out;
+	}
+
+	err = incfs_rmdir(backing_path.dentry);
+	if (!err)
+		d_drop(dentry);
+out:
+	path_put(&backing_path);
+
+path_err:
+	if (err)
+		pr_debug("incfs: %s err:%d\n", __func__, err);
+	mutex_unlock(&mi->mi_dir_struct_mutex);
+	return err;
+}
+
+static int dir_rename(struct inode *old_dir, struct dentry *old_dentry,
+		struct inode *new_dir, struct dentry *new_dentry,
+		unsigned int flags)
+{
+	struct mount_info *mi = get_mount_info(old_dir->i_sb);
+	struct dentry *backing_old_dentry;
+	struct dentry *backing_new_dentry;
+	struct dentry *backing_old_dir_dentry;
+	struct dentry *backing_new_dir_dentry;
+	struct inode *target_inode;
+	struct dentry *trap;
+	struct renamedata rd = {};
+	int error = 0;
+
+	error = mutex_lock_interruptible(&mi->mi_dir_struct_mutex);
+	if (error)
+		return error;
+
+	backing_old_dentry = get_incfs_dentry(old_dentry)->backing_path.dentry;
+
+	if (!backing_old_dentry || backing_old_dentry == mi->mi_index_dir ||
+	    backing_old_dentry == mi->mi_incomplete_dir) {
+		/* Renaming .index or .incomplete not allowed */
+		error = -EBUSY;
+		goto exit;
+	}
+
+	backing_new_dentry = get_incfs_dentry(new_dentry)->backing_path.dentry;
+	dget(backing_old_dentry);
+	dget(backing_new_dentry);
+
+	backing_old_dir_dentry = dget_parent(backing_old_dentry);
+	backing_new_dir_dentry = dget_parent(backing_new_dentry);
+	target_inode = d_inode(new_dentry);
+
+	if (backing_old_dir_dentry == mi->mi_index_dir ||
+	    backing_old_dir_dentry == mi->mi_incomplete_dir) {
+		/* Direct moves from .index or .incomplete are not allowed. */
+		error = -EBUSY;
+		goto out;
+	}
+
+	trap = lock_rename(backing_old_dir_dentry, backing_new_dir_dentry);
+
+	if (trap == backing_old_dentry) {
+		error = -EINVAL;
+		goto unlock_out;
+	}
+	if (trap == backing_new_dentry) {
+		error = -ENOTEMPTY;
+		goto unlock_out;
+	}
+
+	rd.old_dir	= d_inode(backing_old_dir_dentry);
+	rd.old_dentry	= backing_old_dentry;
+	rd.new_dir	= d_inode(backing_new_dir_dentry);
+	rd.new_dentry	= backing_new_dentry;
+	rd.flags	= flags;
+	rd.old_mnt_userns = &init_user_ns;
+	rd.new_mnt_userns = &init_user_ns;
+	rd.delegated_inode = NULL;
+
+	error = vfs_rename(&rd);
+	if (error)
+		goto unlock_out;
+	if (target_inode)
+		fsstack_copy_attr_all(target_inode,
+			get_incfs_node(target_inode)->n_backing_inode);
+	fsstack_copy_attr_all(new_dir, d_inode(backing_new_dir_dentry));
+	if (new_dir != old_dir)
+		fsstack_copy_attr_all(old_dir, d_inode(backing_old_dir_dentry));
+
+unlock_out:
+	unlock_rename(backing_old_dir_dentry, backing_new_dir_dentry);
+
+out:
+	dput(backing_new_dir_dentry);
+	dput(backing_old_dir_dentry);
+	dput(backing_new_dentry);
+	dput(backing_old_dentry);
+
+exit:
+	mutex_unlock(&mi->mi_dir_struct_mutex);
+	if (error)
+		pr_debug("incfs: %s err:%d\n", __func__, error);
+	return error;
+}
+
+
+static int file_open(struct inode *inode, struct file *file)
+{
+	struct mount_info *mi = get_mount_info(inode->i_sb);
+	struct file *backing_file = NULL;
+	struct path backing_path = {};
+	int err = 0;
+	int flags = O_NOATIME | O_LARGEFILE |
+		(S_ISDIR(inode->i_mode) ? O_RDONLY : O_RDWR);
+	const struct cred *old_cred;
+
+	WARN_ON(file->private_data);
+
+	if (!mi)
+		return -EBADF;
+
+	get_incfs_backing_path(file->f_path.dentry, &backing_path);
+	if (!backing_path.dentry)
+		return -EBADF;
+
+	old_cred = override_creds(mi->mi_owner);
+	backing_file = dentry_open(&backing_path, flags, current_cred());
+	revert_creds(old_cred);
+	path_put(&backing_path);
+
+	if (IS_ERR(backing_file)) {
+		err = PTR_ERR(backing_file);
+		backing_file = NULL;
+		goto out;
+	}
+
+	if (S_ISREG(inode->i_mode)) {
+		struct incfs_file_data *fd = kzalloc(sizeof(*fd), GFP_NOFS);
+
+		if (!fd) {
+			err = -ENOMEM;
+			goto out;
+		}
+
+		*fd = (struct incfs_file_data) {
+			.fd_fill_permission = CANT_FILL,
+		};
+		file->private_data = fd;
+
+		err = make_inode_ready_for_data_ops(mi, inode, backing_file);
+		if (err)
+			goto out;
+
+		err = incfs_fsverity_file_open(inode, file);
+		if (err)
+			goto out;
+	} else if (S_ISDIR(inode->i_mode)) {
+		struct dir_file *dir = NULL;
+
+		dir = incfs_open_dir_file(mi, backing_file);
+		if (IS_ERR(dir))
+			err = PTR_ERR(dir);
+		else
+			file->private_data = dir;
+	} else
+		err = -EBADF;
+
+out:
+	if (err) {
+		pr_debug("name:%s err: %d\n",
+			 file->f_path.dentry->d_name.name, err);
+		if (S_ISREG(inode->i_mode))
+			kfree(file->private_data);
+		else if (S_ISDIR(inode->i_mode))
+			incfs_free_dir_file(file->private_data);
+
+		file->private_data = NULL;
+	}
+
+	if (backing_file)
+		fput(backing_file);
+	return err;
+}
+
+static int file_release(struct inode *inode, struct file *file)
+{
+	if (S_ISREG(inode->i_mode)) {
+		kfree(file->private_data);
+		file->private_data = NULL;
+	} else if (S_ISDIR(inode->i_mode)) {
+		struct dir_file *dir = get_incfs_dir_file(file);
+
+		incfs_free_dir_file(dir);
+	}
+
+	return 0;
+}
+
+static int dentry_revalidate(struct dentry *d, unsigned int flags)
+{
+	struct path backing_path = {};
+	struct inode_info *info = get_incfs_node(d_inode(d));
+	struct inode *binode = (info == NULL) ? NULL : info->n_backing_inode;
+	struct dentry *backing_dentry = NULL;
+	int result = 0;
+
+	if (flags & LOOKUP_RCU)
+		return -ECHILD;
+
+	get_incfs_backing_path(d, &backing_path);
+	backing_dentry = backing_path.dentry;
+	if (!backing_dentry)
+		goto out;
+
+	if (d_inode(backing_dentry) != binode) {
+		/*
+		 * Backing inodes obtained via dentry and inode don't match.
+		 * It indicates that most likely backing dir has changed
+		 * directly bypassing Incremental FS interface.
+		 */
+		goto out;
+	}
+
+	if (backing_dentry->d_flags & DCACHE_OP_REVALIDATE) {
+		result = backing_dentry->d_op->d_revalidate(backing_dentry,
+				flags);
+	} else
+		result = 1;
+
+out:
+	path_put(&backing_path);
+	return result;
+}
+
+static void dentry_release(struct dentry *d)
+{
+	struct dentry_info *di = get_incfs_dentry(d);
+
+	if (di)
+		path_put(&di->backing_path);
+	kfree(d->d_fsdata);
+	d->d_fsdata = NULL;
+}
+
+static struct inode *alloc_inode(struct super_block *sb)
+{
+	struct inode_info *node = kzalloc(sizeof(*node), GFP_NOFS);
+
+	/* TODO: add a slab-based cache here. */
+	if (!node)
+		return NULL;
+	inode_init_once(&node->n_vfs_inode);
+	return &node->n_vfs_inode;
+}
+
+static void free_inode(struct inode *inode)
+{
+	struct inode_info *node = get_incfs_node(inode);
+
+	kfree(node);
+}
+
+static void evict_inode(struct inode *inode)
+{
+	struct inode_info *node = get_incfs_node(inode);
+
+	if (node) {
+		if (node->n_backing_inode) {
+			iput(node->n_backing_inode);
+			node->n_backing_inode = NULL;
+		}
+		if (node->n_file) {
+			incfs_free_data_file(node->n_file);
+			node->n_file = NULL;
+		}
+	}
+
+	truncate_inode_pages(&inode->i_data, 0);
+	clear_inode(inode);
+}
+
+static int incfs_setattr(struct user_namespace *ns, struct dentry *dentry,
+			 struct iattr *ia)
+{
+	struct dentry_info *di = get_incfs_dentry(dentry);
+	struct dentry *backing_dentry;
+	struct inode *backing_inode;
+	int error;
+
+	if (ia->ia_valid & ATTR_SIZE)
+		return -EINVAL;
+
+	if ((ia->ia_valid & (ATTR_KILL_SUID|ATTR_KILL_SGID)) &&
+	    (ia->ia_valid & ATTR_MODE))
+		return -EINVAL;
+
+	if (!di)
+		return -EINVAL;
+	backing_dentry = di->backing_path.dentry;
+	if (!backing_dentry)
+		return -EINVAL;
+
+	backing_inode = d_inode(backing_dentry);
+
+	/* incfs files are readonly, but the backing files must be writeable */
+	if (S_ISREG(backing_inode->i_mode)) {
+		if ((ia->ia_valid & ATTR_MODE) && (ia->ia_mode & 0222))
+			return -EINVAL;
+
+		ia->ia_mode |= 0222;
+	}
+
+	inode_lock(d_inode(backing_dentry));
+	error = notify_change(ns, backing_dentry, ia, NULL);
+	inode_unlock(d_inode(backing_dentry));
+
+	if (error)
+		return error;
+
+	if (S_ISREG(backing_inode->i_mode))
+		ia->ia_mode &= ~0222;
+
+	return simple_setattr(ns, dentry, ia);
+}
+
+
+static int incfs_getattr(struct user_namespace *ns, const struct path *path,
+			 struct kstat *stat, u32 request_mask,
+			 unsigned int query_flags)
+{
+	struct inode *inode = d_inode(path->dentry);
+
+	generic_fillattr(ns, inode, stat);
+
+	if (inode->i_ino < INCFS_START_INO_RANGE)
+		return 0;
+
+	stat->attributes &= ~STATX_ATTR_VERITY;
+	if (IS_VERITY(inode))
+		stat->attributes |= STATX_ATTR_VERITY;
+	stat->attributes_mask |= STATX_ATTR_VERITY;
+
+	if (request_mask & STATX_BLOCKS) {
+		struct kstat backing_kstat;
+		struct dentry_info *di = get_incfs_dentry(path->dentry);
+		int error = 0;
+		struct path *backing_path;
+
+		if (!di)
+			return -EFSCORRUPTED;
+		backing_path = &di->backing_path;
+		error = vfs_getattr(backing_path, &backing_kstat, STATX_BLOCKS,
+				    AT_STATX_SYNC_AS_STAT);
+		if (error)
+			return error;
+
+		stat->blocks = backing_kstat.blocks;
+	}
+
+	return 0;
+}
+
+static ssize_t incfs_getxattr(struct dentry *d, const char *name,
+			void *value, size_t size)
+{
+	struct dentry_info *di = get_incfs_dentry(d);
+	struct mount_info *mi = get_mount_info(d->d_sb);
+	char *stored_value;
+	size_t stored_size;
+	int i;
+
+	if (di && di->backing_path.dentry)
+		return vfs_getxattr(&init_user_ns, di->backing_path.dentry, name, value, size);
+
+	if (strcmp(name, "security.selinux"))
+		return -ENODATA;
+
+	for (i = 0; i < PSEUDO_FILE_COUNT; ++i)
+		if (!strcmp(d->d_iname, incfs_pseudo_file_names[i].data))
+			break;
+	if (i == PSEUDO_FILE_COUNT)
+		return -ENODATA;
+
+	stored_value = mi->pseudo_file_xattr[i].data;
+	stored_size = mi->pseudo_file_xattr[i].len;
+	if (!stored_value)
+		return -ENODATA;
+
+	if (stored_size > size)
+		return -E2BIG;
+
+	memcpy(value, stored_value, stored_size);
+	return stored_size;
+}
+
+
+static ssize_t incfs_setxattr(struct user_namespace *ns, struct dentry *d,
+			      const char *name, void *value, size_t size,
+			      int flags)
+{
+	struct dentry_info *di = get_incfs_dentry(d);
+	struct mount_info *mi = get_mount_info(d->d_sb);
+	u8 **stored_value;
+	size_t *stored_size;
+	int i;
+
+	if (di && di->backing_path.dentry)
+		return vfs_setxattr(ns, di->backing_path.dentry, name, value,
+				    size, flags);
+
+	if (strcmp(name, "security.selinux"))
+		return -ENODATA;
+
+	if (size > INCFS_MAX_FILE_ATTR_SIZE)
+		return -E2BIG;
+
+	for (i = 0; i < PSEUDO_FILE_COUNT; ++i)
+		if (!strcmp(d->d_iname, incfs_pseudo_file_names[i].data))
+			break;
+	if (i == PSEUDO_FILE_COUNT)
+		return -ENODATA;
+
+	stored_value = &mi->pseudo_file_xattr[i].data;
+	stored_size = &mi->pseudo_file_xattr[i].len;
+	kfree (*stored_value);
+	*stored_value = kzalloc(size, GFP_NOFS);
+	if (!*stored_value)
+		return -ENOMEM;
+
+	memcpy(*stored_value, value, size);
+	*stored_size = size;
+	return 0;
+}
+
+static ssize_t incfs_listxattr(struct dentry *d, char *list, size_t size)
+{
+	struct dentry_info *di = get_incfs_dentry(d);
+
+	if (!di || !di->backing_path.dentry)
+		return -ENODATA;
+
+	return vfs_listxattr(di->backing_path.dentry, list, size);
+}
+
+struct dentry *incfs_mount_fs(struct file_system_type *type, int flags,
+			      const char *dev_name, void *data)
+{
+	struct mount_options options = {};
+	struct mount_info *mi = NULL;
+	struct path backing_dir_path = {};
+	struct dentry *index_dir = NULL;
+	struct dentry *incomplete_dir = NULL;
+	struct super_block *src_fs_sb = NULL;
+	struct inode *root_inode = NULL;
+	struct super_block *sb = sget(type, NULL, set_anon_super, flags, NULL);
+	bool dir_created = false;
+	int error = 0;
+
+	if (IS_ERR(sb))
+		return ERR_CAST(sb);
+
+	sb->s_op = &incfs_super_ops;
+	sb->s_d_op = &incfs_dentry_ops;
+	sb->s_flags |= S_NOATIME;
+	sb->s_magic = INCFS_MAGIC_NUMBER;
+	sb->s_time_gran = 1;
+	sb->s_blocksize = INCFS_DATA_FILE_BLOCK_SIZE;
+	sb->s_blocksize_bits = blksize_bits(sb->s_blocksize);
+	sb->s_xattr = incfs_xattr_ops;
+
+	BUILD_BUG_ON(PAGE_SIZE != INCFS_DATA_FILE_BLOCK_SIZE);
+
+	if (!dev_name) {
+		pr_err("incfs: Backing dir is not set, filesystem can't be mounted.\n");
+		error = -ENOENT;
+		goto err_deactivate;
+	}
+
+	error = parse_options(&options, (char *)data);
+	if (error != 0) {
+		pr_err("incfs: Options parsing error. %d\n", error);
+		goto err_deactivate;
+	}
+
+	sb->s_bdi->ra_pages = options.readahead_pages;
+	if (!dev_name) {
+		pr_err("incfs: Backing dir is not set, filesystem can't be mounted.\n");
+		error = -ENOENT;
+		goto err_free_opts;
+	}
+
+	error = kern_path(dev_name, LOOKUP_FOLLOW | LOOKUP_DIRECTORY,
+			&backing_dir_path);
+	if (error || backing_dir_path.dentry == NULL ||
+		!d_really_is_positive(backing_dir_path.dentry)) {
+		pr_err("incfs: Error accessing: %s.\n",
+			dev_name);
+		goto err_free_opts;
+	}
+	src_fs_sb = backing_dir_path.dentry->d_sb;
+	sb->s_maxbytes = src_fs_sb->s_maxbytes;
+	sb->s_stack_depth = src_fs_sb->s_stack_depth + 1;
+
+	if (sb->s_stack_depth > FILESYSTEM_MAX_STACK_DEPTH) {
+		error = -EINVAL;
+		goto err_put_path;
+	}
+
+	mi = incfs_alloc_mount_info(sb, &options, &backing_dir_path);
+	if (IS_ERR_OR_NULL(mi)) {
+		error = PTR_ERR(mi);
+		pr_err("incfs: Error allocating mount info. %d\n", error);
+		goto err_put_path;
+	}
+
+	sb->s_fs_info = mi;
+	mi->mi_backing_dir_path = backing_dir_path;
+	index_dir = open_or_create_special_dir(backing_dir_path.dentry,
+					       INCFS_INDEX_NAME, &dir_created);
+	if (IS_ERR_OR_NULL(index_dir)) {
+		error = PTR_ERR(index_dir);
+		pr_err("incfs: Can't find or create .index dir in %s\n",
+			dev_name);
+		/* No need to null index_dir since we don't put it */
+		goto err_put_path;
+	}
+
+	mi->mi_index_dir = index_dir;
+	mi->mi_index_free = dir_created;
+
+	incomplete_dir = open_or_create_special_dir(backing_dir_path.dentry,
+						    INCFS_INCOMPLETE_NAME,
+						    &dir_created);
+	if (IS_ERR_OR_NULL(incomplete_dir)) {
+		error = PTR_ERR(incomplete_dir);
+		pr_err("incfs: Can't find or create .incomplete dir in %s\n",
+			dev_name);
+		/* No need to null incomplete_dir since we don't put it */
+		goto err_put_path;
+	}
+	mi->mi_incomplete_dir = incomplete_dir;
+	mi->mi_incomplete_free = dir_created;
+
+	root_inode = fetch_regular_inode(sb, backing_dir_path.dentry);
+	if (IS_ERR(root_inode)) {
+		error = PTR_ERR(root_inode);
+		goto err_put_path;
+	}
+
+	sb->s_root = d_make_root(root_inode);
+	if (!sb->s_root) {
+		error = -ENOMEM;
+		goto err_put_path;
+	}
+	error = incfs_init_dentry(sb->s_root, &backing_dir_path);
+	if (error)
+		goto err_put_path;
+
+	path_put(&backing_dir_path);
+	sb->s_flags |= SB_ACTIVE;
+
+	pr_debug("incfs: mount\n");
+	return dget(sb->s_root);
+
+err_put_path:
+	path_put(&backing_dir_path);
+err_free_opts:
+	free_options(&options);
+err_deactivate:
+	deactivate_locked_super(sb);
+	pr_err("incfs: mount failed %d\n", error);
+	return ERR_PTR(error);
+}
+
+static int incfs_remount_fs(struct super_block *sb, int *flags, char *data)
+{
+	struct mount_options options;
+	struct mount_info *mi = get_mount_info(sb);
+	int err = 0;
+
+	sync_filesystem(sb);
+	err = parse_options(&options, (char *)data);
+	if (err)
+		return err;
+
+	if (options.report_uid != mi->mi_options.report_uid) {
+		pr_err("incfs: Can't change report_uid mount option on remount\n");
+		err = -EOPNOTSUPP;
+		goto out;
+	}
+
+	err = incfs_realloc_mount_info(mi, &options);
+	if (err)
+		goto out;
+
+	pr_debug("incfs: remount\n");
+
+out:
+	free_options(&options);
+	return err;
+}
+
+void incfs_kill_sb(struct super_block *sb)
+{
+	struct mount_info *mi = sb->s_fs_info;
+	struct inode *dinode = NULL;
+
+	pr_debug("incfs: unmount\n");
+
+	/*
+	 * We must kill the super before freeing mi, since killing the super
+	 * triggers inode eviction, which triggers the final update of the
+	 * backing file, which uses certain information for mi
+	 */
+	kill_anon_super(sb);
+
+	if (mi) {
+		if (mi->mi_backing_dir_path.dentry)
+			dinode = d_inode(mi->mi_backing_dir_path.dentry);
+
+		if (dinode) {
+			if (mi->mi_index_dir && mi->mi_index_free)
+				vfs_rmdir(&init_user_ns, dinode,
+					  mi->mi_index_dir);
+
+			if (mi->mi_incomplete_dir && mi->mi_incomplete_free)
+				vfs_rmdir(&init_user_ns, dinode,
+					  mi->mi_incomplete_dir);
+		}
+
+		incfs_free_mount_info(mi);
+		sb->s_fs_info = NULL;
+	}
+}
+
+static int show_options(struct seq_file *m, struct dentry *root)
+{
+	struct mount_info *mi = get_mount_info(root->d_sb);
+
+	seq_printf(m, ",read_timeout_ms=%u", mi->mi_options.read_timeout_ms);
+	seq_printf(m, ",readahead=%u", mi->mi_options.readahead_pages);
+	if (mi->mi_options.read_log_pages != 0) {
+		seq_printf(m, ",rlog_pages=%u", mi->mi_options.read_log_pages);
+		seq_printf(m, ",rlog_wakeup_cnt=%u",
+			   mi->mi_options.read_log_wakeup_count);
+	}
+	if (mi->mi_options.report_uid)
+		seq_puts(m, ",report_uid");
+
+	if (mi->mi_sysfs_node)
+		seq_printf(m, ",sysfs_name=%s",
+			   kobject_name(&mi->mi_sysfs_node->isn_sysfs_node));
+	return 0;
+}
diff --git a/fs/incfs/vfs.h b/fs/incfs/vfs.h
new file mode 100644
index 0000000..79fdf24
--- /dev/null
+++ b/fs/incfs/vfs.h
@@ -0,0 +1,33 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright 2018 Google LLC
+ */
+
+#ifndef _INCFS_VFS_H
+#define _INCFS_VFS_H
+
+extern const struct file_operations incfs_file_ops;
+extern const struct inode_operations incfs_file_inode_ops;
+
+void incfs_kill_sb(struct super_block *sb);
+struct dentry *incfs_mount_fs(struct file_system_type *type, int flags,
+			      const char *dev_name, void *data);
+int incfs_link(struct dentry *what, struct dentry *where);
+int incfs_unlink(struct dentry *dentry);
+
+static inline struct mount_info *get_mount_info(struct super_block *sb)
+{
+	struct mount_info *result = sb->s_fs_info;
+
+	WARN_ON(!result);
+	return result;
+}
+
+static inline struct super_block *file_superblock(struct file *f)
+{
+	struct inode *inode = file_inode(f);
+
+	return inode->i_sb;
+}
+
+#endif
diff --git a/fs/mpage.c b/fs/mpage.c
index 0f8ae95..f24c3f1 100644
--- a/fs/mpage.c
+++ b/fs/mpage.c
@@ -29,6 +29,7 @@
 #include <linux/writeback.h>
 #include <linux/backing-dev.h>
 #include <linux/pagevec.h>
+#include <linux/cleancache.h>
 #include "internal.h"
 
 /*
@@ -261,6 +262,12 @@ static struct bio *do_mpage_readpage(struct mpage_readpage_args *args)
 		folio_set_mappedtodisk(folio);
 	}
 
+	if (fully_mapped && blocks_per_page == 1 && !folio_test_uptodate(folio) &&
+	    cleancache_get_page(&folio->page) == 0) {
+		folio_mark_uptodate(folio);
+		goto confused;
+	}
+
 	/*
 	 * This folio will go to BIO.  Do we need to send this BIO off first?
 	 */
diff --git a/fs/notify/inotify/inotify_user.c b/fs/notify/inotify/inotify_user.c
index 1c4bfda..cc9bde8 100644
--- a/fs/notify/inotify/inotify_user.c
+++ b/fs/notify/inotify/inotify_user.c
@@ -733,6 +733,8 @@ SYSCALL_DEFINE3(inotify_add_watch, int, fd, const char __user *, pathname,
 	struct fsnotify_group *group;
 	struct inode *inode;
 	struct path path;
+	struct path alteredpath;
+	struct path *canonical_path = &path;
 	struct fd f;
 	int ret;
 	unsigned flags = 0;
@@ -779,13 +781,27 @@ SYSCALL_DEFINE3(inotify_add_watch, int, fd, const char __user *, pathname,
 	if (ret)
 		goto fput_and_out;
 
+	/* support stacked filesystems */
+	if (path.dentry && path.dentry->d_op) {
+		if (path.dentry->d_op->d_canonical_path) {
+			ret = path.dentry->d_op->d_canonical_path(&path,
+							    &alteredpath);
+			if (ret)
+				goto path_put_and_out;
+
+			canonical_path = &alteredpath;
+			path_put(&path);
+		}
+	}
+
 	/* inode held in place by reference to path; group by fget on fd */
-	inode = path.dentry->d_inode;
+	inode = canonical_path->dentry->d_inode;
 	group = f.file->private_data;
 
 	/* create/update an inode mark */
 	ret = inotify_update_watch(group, inode, mask);
-	path_put(&path);
+path_put_and_out:
+	path_put(canonical_path);
 fput_and_out:
 	fdput(f);
 	return ret;
diff --git a/fs/ntfs3/ntfs_fs.h b/fs/ntfs3/ntfs_fs.h
index c5c022f..e12ffa1c 100644
--- a/fs/ntfs3/ntfs_fs.h
+++ b/fs/ntfs3/ntfs_fs.h
@@ -11,6 +11,7 @@
 
 #include <linux/blkdev.h>
 #include <linux/buffer_head.h>
+#include <linux/cleancache.h>
 #include <linux/fs.h>
 #include <linux/highmem.h>
 #include <linux/kernel.h>
diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c
index 988d1c0..6087e82 100644
--- a/fs/ocfs2/super.c
+++ b/fs/ocfs2/super.c
@@ -25,6 +25,7 @@
 #include <linux/mount.h>
 #include <linux/seq_file.h>
 #include <linux/quotaops.h>
+#include <linux/cleancache.h>
 #include <linux/signal.h>
 
 #define CREATE_TRACE_POINTS
@@ -2276,6 +2277,7 @@ static int ocfs2_initialize_super(struct super_block *sb,
 		mlog_errno(status);
 		goto out_system_inodes;
 	}
+	cleancache_init_shared_fs(sb);
 
 	osb->ocfs2_wq = alloc_ordered_workqueue("ocfs2_wq", WQ_MEM_RECLAIM);
 	if (!osb->ocfs2_wq) {
diff --git a/fs/open.c b/fs/open.c
index 9541430..6e1ca0b 100644
--- a/fs/open.c
+++ b/fs/open.c
@@ -35,6 +35,7 @@
 #include <linux/mnt_idmapping.h>
 
 #include "internal.h"
+#include <trace/hooks/syscall_check.h>
 
 int do_truncate(struct user_namespace *mnt_userns, struct dentry *dentry,
 		loff_t length, unsigned int time_attrs, struct file *filp)
@@ -865,6 +866,7 @@ static int do_dentry_open(struct file *f,
 		error = -ENODEV;
 		goto cleanup_all;
 	}
+	trace_android_vh_check_file_open(f);
 
 	error = security_file_open(f);
 	if (error)
@@ -1287,6 +1289,27 @@ struct file *filp_open(const char *filename, int flags, umode_t mode)
 }
 EXPORT_SYMBOL(filp_open);
 
+
+/* ANDROID: Allow drivers to open only block files from kernel mode */
+struct file *filp_open_block(const char *filename, int flags, umode_t mode)
+{
+	struct file *file;
+
+	file = filp_open(filename, flags, mode);
+	if (IS_ERR(file))
+		goto err_out;
+
+	/* Drivers should only be allowed to open block devices */
+	if (!S_ISBLK(file->f_mapping->host->i_mode)) {
+		filp_close(file, NULL);
+		file = ERR_PTR(-ENOTBLK);
+	}
+
+err_out:
+	return file;
+}
+EXPORT_SYMBOL_GPL(filp_open_block);
+
 struct file *file_open_root(const struct path *root,
 			    const char *filename, int flags, umode_t mode)
 {
diff --git a/fs/orangefs/file.c b/fs/orangefs/file.c
index 732661a..71442cc 100644
--- a/fs/orangefs/file.c
+++ b/fs/orangefs/file.c
@@ -390,8 +390,7 @@ static int orangefs_file_mmap(struct file *file, struct vm_area_struct *vma)
 		     "orangefs_file_mmap: called on %pD\n", file);
 
 	/* set the sequential readahead hint */
-	vma->vm_flags |= VM_SEQ_READ;
-	vma->vm_flags &= ~VM_RAND_READ;
+	vm_flags_mod(vma, VM_SEQ_READ, VM_RAND_READ);
 
 	file_accessed(file);
 	vma->vm_ops = &orangefs_file_vm_ops;
diff --git a/fs/overlayfs/copy_up.c b/fs/overlayfs/copy_up.c
index 91a95bf..358e1d8 100644
--- a/fs/overlayfs/copy_up.c
+++ b/fs/overlayfs/copy_up.c
@@ -1059,7 +1059,7 @@ static int ovl_copy_up_flags(struct dentry *dentry, int flags)
 		dput(parent);
 		dput(next);
 	}
-	revert_creds(old_cred);
+	ovl_revert_creds(dentry->d_sb, old_cred);
 
 	return err;
 }
diff --git a/fs/overlayfs/dir.c b/fs/overlayfs/dir.c
index c3032ce..71c9b4d 100644
--- a/fs/overlayfs/dir.c
+++ b/fs/overlayfs/dir.c
@@ -572,7 +572,7 @@ static int ovl_create_or_link(struct dentry *dentry, struct inode *inode,
 			      struct ovl_cattr *attr, bool origin)
 {
 	int err;
-	const struct cred *old_cred;
+	const struct cred *old_cred, *hold_cred = NULL;
 	struct cred *override_cred;
 	struct dentry *parent = dentry->d_parent;
 
@@ -613,13 +613,14 @@ static int ovl_create_or_link(struct dentry *dentry, struct inode *inode,
 		override_cred->fsuid = inode->i_uid;
 		override_cred->fsgid = inode->i_gid;
 		err = security_dentry_create_files_as(dentry,
-				attr->mode, &dentry->d_name, old_cred,
+				attr->mode, &dentry->d_name,
+				old_cred ? old_cred : current_cred(),
 				override_cred);
 		if (err) {
 			put_cred(override_cred);
 			goto out_revert_creds;
 		}
-		put_cred(override_creds(override_cred));
+		hold_cred = override_creds(override_cred);
 		put_cred(override_cred);
 	}
 
@@ -629,7 +630,9 @@ static int ovl_create_or_link(struct dentry *dentry, struct inode *inode,
 		err = ovl_create_over_whiteout(dentry, inode, attr);
 
 out_revert_creds:
-	revert_creds(old_cred);
+	ovl_revert_creds(dentry->d_sb, old_cred ?: hold_cred);
+	if (old_cred && hold_cred)
+		put_cred(hold_cred);
 	return err;
 }
 
@@ -706,7 +709,7 @@ static int ovl_set_link_redirect(struct dentry *dentry)
 
 	old_cred = ovl_override_creds(dentry->d_sb);
 	err = ovl_set_redirect(dentry, false);
-	revert_creds(old_cred);
+	ovl_revert_creds(dentry->d_sb, old_cred);
 
 	return err;
 }
@@ -925,7 +928,7 @@ static int ovl_do_remove(struct dentry *dentry, bool is_dir)
 		err = ovl_remove_upper(dentry, is_dir, &list);
 	else
 		err = ovl_remove_and_whiteout(dentry, &list);
-	revert_creds(old_cred);
+	ovl_revert_creds(dentry->d_sb, old_cred);
 	if (!err) {
 		if (is_dir)
 			clear_nlink(dentry->d_inode);
@@ -1300,7 +1303,7 @@ static int ovl_rename(struct user_namespace *mnt_userns, struct inode *olddir,
 out_unlock:
 	unlock_rename(new_upperdir, old_upperdir);
 out_revert_creds:
-	revert_creds(old_cred);
+	ovl_revert_creds(old->d_sb, old_cred);
 	if (update_nlink)
 		ovl_nlink_end(new);
 out_drop_write:
diff --git a/fs/overlayfs/file.c b/fs/overlayfs/file.c
index 6011f95..f2ebae6 100644
--- a/fs/overlayfs/file.c
+++ b/fs/overlayfs/file.c
@@ -15,6 +15,8 @@
 #include <linux/fs.h>
 #include "overlayfs.h"
 
+#define OVL_IOCB_MASK (IOCB_DSYNC | IOCB_HIPRI | IOCB_NOWAIT | IOCB_SYNC)
+
 struct ovl_aio_req {
 	struct kiocb iocb;
 	refcount_t ref;
@@ -58,13 +60,14 @@ static struct file *ovl_open_realfile(const struct file *file,
 	if (err) {
 		realfile = ERR_PTR(err);
 	} else {
-		if (!inode_owner_or_capable(real_mnt_userns, realinode))
+		if (old_cred && !inode_owner_or_capable(real_mnt_userns,
+							realinode))
 			flags &= ~O_NOATIME;
 
 		realfile = open_with_fake_path(&file->f_path, flags, realinode,
 					       current_cred());
 	}
-	revert_creds(old_cred);
+	ovl_revert_creds(inode->i_sb, old_cred);
 
 	pr_debug("open(%p[%pD2/%c], 0%o) -> (%p, 0%o)\n",
 		 file, file, ovl_whatisit(inode, realinode), file->f_flags,
@@ -209,7 +212,7 @@ static loff_t ovl_llseek(struct file *file, loff_t offset, int whence)
 
 	old_cred = ovl_override_creds(inode->i_sb);
 	ret = vfs_llseek(real.file, offset, whence);
-	revert_creds(old_cred);
+	ovl_revert_creds(inode->i_sb, old_cred);
 
 	file->f_pos = real.file->f_pos;
 	ovl_inode_unlock(inode);
@@ -241,22 +244,6 @@ static void ovl_file_accessed(struct file *file)
 	touch_atime(&file->f_path);
 }
 
-static rwf_t ovl_iocb_to_rwf(int ifl)
-{
-	rwf_t flags = 0;
-
-	if (ifl & IOCB_NOWAIT)
-		flags |= RWF_NOWAIT;
-	if (ifl & IOCB_HIPRI)
-		flags |= RWF_HIPRI;
-	if (ifl & IOCB_DSYNC)
-		flags |= RWF_DSYNC;
-	if (ifl & IOCB_SYNC)
-		flags |= RWF_SYNC;
-
-	return flags;
-}
-
 static inline void ovl_aio_put(struct ovl_aio_req *aio_req)
 {
 	if (refcount_dec_and_test(&aio_req->ref)) {
@@ -316,7 +303,8 @@ static ssize_t ovl_read_iter(struct kiocb *iocb, struct iov_iter *iter)
 	old_cred = ovl_override_creds(file_inode(file)->i_sb);
 	if (is_sync_kiocb(iocb)) {
 		ret = vfs_iter_read(real.file, iter, &iocb->ki_pos,
-				    ovl_iocb_to_rwf(iocb->ki_flags));
+				    iocb_to_rw_flags(iocb->ki_flags,
+						     OVL_IOCB_MASK));
 	} else {
 		struct ovl_aio_req *aio_req;
 
@@ -337,7 +325,7 @@ static ssize_t ovl_read_iter(struct kiocb *iocb, struct iov_iter *iter)
 			ovl_aio_cleanup_handler(aio_req);
 	}
 out:
-	revert_creds(old_cred);
+	ovl_revert_creds(file_inode(file)->i_sb, old_cred);
 	ovl_file_accessed(file);
 out_fdput:
 	fdput(real);
@@ -380,7 +368,7 @@ static ssize_t ovl_write_iter(struct kiocb *iocb, struct iov_iter *iter)
 	if (is_sync_kiocb(iocb)) {
 		file_start_write(real.file);
 		ret = vfs_iter_write(real.file, iter, &iocb->ki_pos,
-				     ovl_iocb_to_rwf(ifl));
+				     iocb_to_rw_flags(ifl, OVL_IOCB_MASK));
 		file_end_write(real.file);
 		/* Update size */
 		ovl_copyattr(inode);
@@ -409,7 +397,7 @@ static ssize_t ovl_write_iter(struct kiocb *iocb, struct iov_iter *iter)
 			ovl_aio_cleanup_handler(aio_req);
 	}
 out:
-	revert_creds(old_cred);
+	ovl_revert_creds(file_inode(file)->i_sb, old_cred);
 out_fdput:
 	fdput(real);
 
@@ -454,7 +442,7 @@ static ssize_t ovl_splice_write(struct pipe_inode_info *pipe, struct file *out,
 	file_end_write(real.file);
 	/* Update size */
 	ovl_copyattr(inode);
-	revert_creds(old_cred);
+	ovl_revert_creds(inode->i_sb, old_cred);
 	fdput(real);
 
 out_unlock:
@@ -481,7 +469,7 @@ static int ovl_fsync(struct file *file, loff_t start, loff_t end, int datasync)
 	if (file_inode(real.file) == ovl_inode_upper(file_inode(file))) {
 		old_cred = ovl_override_creds(file_inode(file)->i_sb);
 		ret = vfs_fsync_range(real.file, start, end, datasync);
-		revert_creds(old_cred);
+		ovl_revert_creds(file_inode(file)->i_sb, old_cred);
 	}
 
 	fdput(real);
@@ -505,7 +493,7 @@ static int ovl_mmap(struct file *file, struct vm_area_struct *vma)
 
 	old_cred = ovl_override_creds(file_inode(file)->i_sb);
 	ret = call_mmap(vma->vm_file, vma);
-	revert_creds(old_cred);
+	ovl_revert_creds(file_inode(file)->i_sb, old_cred);
 	ovl_file_accessed(file);
 
 	return ret;
@@ -531,7 +519,7 @@ static long ovl_fallocate(struct file *file, int mode, loff_t offset, loff_t len
 
 	old_cred = ovl_override_creds(file_inode(file)->i_sb);
 	ret = vfs_fallocate(real.file, mode, offset, len);
-	revert_creds(old_cred);
+	ovl_revert_creds(file_inode(file)->i_sb, old_cred);
 
 	/* Update size */
 	ovl_copyattr(inode);
@@ -556,7 +544,7 @@ static int ovl_fadvise(struct file *file, loff_t offset, loff_t len, int advice)
 
 	old_cred = ovl_override_creds(file_inode(file)->i_sb);
 	ret = vfs_fadvise(real.file, offset, len, advice);
-	revert_creds(old_cred);
+	ovl_revert_creds(file_inode(file)->i_sb, old_cred);
 
 	fdput(real);
 
@@ -615,7 +603,7 @@ static loff_t ovl_copyfile(struct file *file_in, loff_t pos_in,
 						flags);
 		break;
 	}
-	revert_creds(old_cred);
+	ovl_revert_creds(file_inode(file_out)->i_sb, old_cred);
 
 	/* Update size */
 	ovl_copyattr(inode_out);
@@ -677,7 +665,7 @@ static int ovl_flush(struct file *file, fl_owner_t id)
 	if (real.file->f_op->flush) {
 		old_cred = ovl_override_creds(file_inode(file)->i_sb);
 		err = real.file->f_op->flush(real.file, id);
-		revert_creds(old_cred);
+		ovl_revert_creds(file_inode(file)->i_sb, old_cred);
 	}
 	fdput(real);
 
diff --git a/fs/overlayfs/inode.c b/fs/overlayfs/inode.c
index 9e61511..36d5b04 100644
--- a/fs/overlayfs/inode.c
+++ b/fs/overlayfs/inode.c
@@ -79,7 +79,7 @@ int ovl_setattr(struct user_namespace *mnt_userns, struct dentry *dentry,
 		inode_lock(upperdentry->d_inode);
 		old_cred = ovl_override_creds(dentry->d_sb);
 		err = ovl_do_notify_change(ofs, upperdentry, attr);
-		revert_creds(old_cred);
+		ovl_revert_creds(dentry->d_sb, old_cred);
 		if (!err)
 			ovl_copyattr(dentry->d_inode);
 		inode_unlock(upperdentry->d_inode);
@@ -271,7 +271,7 @@ int ovl_getattr(struct user_namespace *mnt_userns, const struct path *path,
 		stat->nlink = dentry->d_inode->i_nlink;
 
 out:
-	revert_creds(old_cred);
+	ovl_revert_creds(dentry->d_sb, old_cred);
 
 	return err;
 }
@@ -286,8 +286,8 @@ int ovl_permission(struct user_namespace *mnt_userns,
 	int err;
 
 	/* Careful in RCU walk mode */
-	ovl_i_path_real(inode, &realpath);
-	if (!realpath.dentry) {
+	realinode = ovl_i_path_real(inode, &realpath);
+	if (!realinode) {
 		WARN_ON(!(mask & MAY_NOT_BLOCK));
 		return -ECHILD;
 	}
@@ -300,7 +300,6 @@ int ovl_permission(struct user_namespace *mnt_userns,
 	if (err)
 		return err;
 
-	realinode = d_inode(realpath.dentry);
 	old_cred = ovl_override_creds(inode->i_sb);
 	if (!upperinode &&
 	    !special_file(realinode->i_mode) && mask & MAY_WRITE) {
@@ -309,7 +308,7 @@ int ovl_permission(struct user_namespace *mnt_userns,
 		mask |= MAY_READ;
 	}
 	err = inode_permission(mnt_user_ns(realpath.mnt), realinode, mask);
-	revert_creds(old_cred);
+	ovl_revert_creds(inode->i_sb, old_cred);
 
 	return err;
 }
@@ -326,7 +325,7 @@ static const char *ovl_get_link(struct dentry *dentry,
 
 	old_cred = ovl_override_creds(dentry->d_sb);
 	p = vfs_get_link(ovl_dentry_real(dentry), done);
-	revert_creds(old_cred);
+	ovl_revert_creds(dentry->d_sb, old_cred);
 	return p;
 }
 
@@ -360,7 +359,7 @@ int ovl_xattr_set(struct dentry *dentry, struct inode *inode, const char *name,
 		ovl_path_lower(dentry, &realpath);
 		old_cred = ovl_override_creds(dentry->d_sb);
 		err = vfs_getxattr(mnt_user_ns(realpath.mnt), realdentry, name, NULL, 0);
-		revert_creds(old_cred);
+		ovl_revert_creds(dentry->d_sb, old_cred);
 		if (err < 0)
 			goto out_drop_write;
 	}
@@ -381,7 +380,7 @@ int ovl_xattr_set(struct dentry *dentry, struct inode *inode, const char *name,
 		WARN_ON(flags != XATTR_REPLACE);
 		err = ovl_do_removexattr(ofs, realdentry, name);
 	}
-	revert_creds(old_cred);
+	ovl_revert_creds(dentry->d_sb, old_cred);
 
 	/* copy c/mtime */
 	ovl_copyattr(inode);
@@ -402,7 +401,7 @@ int ovl_xattr_get(struct dentry *dentry, struct inode *inode, const char *name,
 	ovl_i_path_real(inode, &realpath);
 	old_cred = ovl_override_creds(dentry->d_sb);
 	res = vfs_getxattr(mnt_user_ns(realpath.mnt), realpath.dentry, name, value, size);
-	revert_creds(old_cred);
+	ovl_revert_creds(dentry->d_sb, old_cred);
 	return res;
 }
 
@@ -430,7 +429,7 @@ ssize_t ovl_listxattr(struct dentry *dentry, char *list, size_t size)
 
 	old_cred = ovl_override_creds(dentry->d_sb);
 	res = vfs_listxattr(realdentry, list, size);
-	revert_creds(old_cred);
+	ovl_revert_creds(dentry->d_sb, old_cred);
 	if (res <= 0 || size == 0)
 		return res;
 
@@ -497,20 +496,20 @@ static void ovl_idmap_posix_acl(struct inode *realinode,
  */
 struct posix_acl *ovl_get_acl(struct inode *inode, int type, bool rcu)
 {
-	struct inode *realinode = ovl_inode_real(inode);
+	struct inode *realinode;
 	struct posix_acl *acl, *clone;
 	struct path realpath;
 
-	if (!IS_POSIXACL(realinode))
-		return NULL;
-
 	/* Careful in RCU walk mode */
-	ovl_i_path_real(inode, &realpath);
-	if (!realpath.dentry) {
+	realinode = ovl_i_path_real(inode, &realpath);
+	if (!realinode) {
 		WARN_ON(!rcu);
 		return ERR_PTR(-ECHILD);
 	}
 
+	if (!IS_POSIXACL(realinode))
+		return NULL;
+
 	if (rcu) {
 		acl = get_cached_acl_rcu(realinode, type);
 	} else {
@@ -518,7 +517,7 @@ struct posix_acl *ovl_get_acl(struct inode *inode, int type, bool rcu)
 
 		old_cred = ovl_override_creds(inode->i_sb);
 		acl = get_acl(realinode, type);
-		revert_creds(old_cred);
+		ovl_revert_creds(inode->i_sb, old_cred);
 	}
 	/*
 	 * If there are no POSIX ACLs, or we encountered an error,
@@ -578,7 +577,7 @@ static int ovl_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
 
 	old_cred = ovl_override_creds(inode->i_sb);
 	err = realinode->i_op->fiemap(realinode, fieinfo, start, len);
-	revert_creds(old_cred);
+	ovl_revert_creds(inode->i_sb, old_cred);
 
 	return err;
 }
@@ -649,7 +648,7 @@ int ovl_fileattr_set(struct user_namespace *mnt_userns,
 		err = ovl_set_protattr(inode, upperpath.dentry, fa);
 		if (!err)
 			err = ovl_real_fileattr_set(&upperpath, fa);
-		revert_creds(old_cred);
+		ovl_revert_creds(inode->i_sb, old_cred);
 
 		/*
 		 * Merge real inode flags with inode flags read from
@@ -711,7 +710,7 @@ int ovl_fileattr_get(struct dentry *dentry, struct fileattr *fa)
 	old_cred = ovl_override_creds(inode->i_sb);
 	err = ovl_real_fileattr_get(&realpath, fa);
 	ovl_fileattr_prot_flags(inode, fa);
-	revert_creds(old_cred);
+	ovl_revert_creds(inode->i_sb, old_cred);
 
 	return err;
 }
diff --git a/fs/overlayfs/namei.c b/fs/overlayfs/namei.c
index 0fd1d5f..28bb2a3 100644
--- a/fs/overlayfs/namei.c
+++ b/fs/overlayfs/namei.c
@@ -1119,7 +1119,7 @@ struct dentry *ovl_lookup(struct inode *dir, struct dentry *dentry,
 	ovl_dentry_update_reval(dentry, upperdentry,
 			DCACHE_OP_REVALIDATE | DCACHE_OP_WEAK_REVALIDATE);
 
-	revert_creds(old_cred);
+	ovl_revert_creds(dentry->d_sb, old_cred);
 	if (origin_path) {
 		dput(origin_path->dentry);
 		kfree(origin_path);
@@ -1146,7 +1146,7 @@ struct dentry *ovl_lookup(struct inode *dir, struct dentry *dentry,
 	kfree(upperredirect);
 out:
 	kfree(d.redirect);
-	revert_creds(old_cred);
+	ovl_revert_creds(dentry->d_sb, old_cred);
 	return ERR_PTR(err);
 }
 
@@ -1198,7 +1198,7 @@ bool ovl_lower_positive(struct dentry *dentry)
 			dput(this);
 		}
 	}
-	revert_creds(old_cred);
+	ovl_revert_creds(dentry->d_sb, old_cred);
 
 	return positive;
 }
diff --git a/fs/overlayfs/overlayfs.h b/fs/overlayfs/overlayfs.h
index e74a610..86e17dd 100644
--- a/fs/overlayfs/overlayfs.h
+++ b/fs/overlayfs/overlayfs.h
@@ -354,6 +354,7 @@ int ovl_want_write(struct dentry *dentry);
 void ovl_drop_write(struct dentry *dentry);
 struct dentry *ovl_workdir(struct dentry *dentry);
 const struct cred *ovl_override_creds(struct super_block *sb);
+void ovl_revert_creds(struct super_block *sb, const struct cred *oldcred);
 int ovl_can_decode_fh(struct super_block *sb);
 struct dentry *ovl_indexdir(struct super_block *sb);
 bool ovl_index_all(struct super_block *sb);
@@ -367,7 +368,7 @@ enum ovl_path_type ovl_path_type(struct dentry *dentry);
 void ovl_path_upper(struct dentry *dentry, struct path *path);
 void ovl_path_lower(struct dentry *dentry, struct path *path);
 void ovl_path_lowerdata(struct dentry *dentry, struct path *path);
-void ovl_i_path_real(struct inode *inode, struct path *path);
+struct inode *ovl_i_path_real(struct inode *inode, struct path *path);
 enum ovl_path_type ovl_path_real(struct dentry *dentry, struct path *path);
 enum ovl_path_type ovl_path_realdata(struct dentry *dentry, struct path *path);
 struct dentry *ovl_dentry_upper(struct dentry *dentry);
diff --git a/fs/overlayfs/ovl_entry.h b/fs/overlayfs/ovl_entry.h
index e1af8f6..17c13f7 100644
--- a/fs/overlayfs/ovl_entry.h
+++ b/fs/overlayfs/ovl_entry.h
@@ -20,6 +20,7 @@ struct ovl_config {
 	bool metacopy;
 	bool userxattr;
 	bool ovl_volatile;
+	bool override_creds;
 };
 
 struct ovl_sb {
diff --git a/fs/overlayfs/readdir.c b/fs/overlayfs/readdir.c
index 2b21064..aad7a62 100644
--- a/fs/overlayfs/readdir.c
+++ b/fs/overlayfs/readdir.c
@@ -286,7 +286,7 @@ static int ovl_check_whiteouts(const struct path *path, struct ovl_readdir_data
 		}
 		inode_unlock(dir->d_inode);
 	}
-	revert_creds(old_cred);
+	ovl_revert_creds(rdd->dentry->d_sb, old_cred);
 
 	return err;
 }
@@ -789,7 +789,7 @@ static int ovl_iterate(struct file *file, struct dir_context *ctx)
 	}
 	err = 0;
 out:
-	revert_creds(old_cred);
+	ovl_revert_creds(dentry->d_sb, old_cred);
 	return err;
 }
 
@@ -841,7 +841,7 @@ static struct file *ovl_dir_open_realfile(const struct file *file,
 
 	old_cred = ovl_override_creds(file_inode(file)->i_sb);
 	res = ovl_path_open(realpath, O_RDONLY | (file->f_flags & O_LARGEFILE));
-	revert_creds(old_cred);
+	ovl_revert_creds(file_inode(file)->i_sb, old_cred);
 
 	return res;
 }
@@ -967,7 +967,7 @@ int ovl_check_empty_dir(struct dentry *dentry, struct list_head *list)
 
 	old_cred = ovl_override_creds(dentry->d_sb);
 	err = ovl_dir_read_merged(dentry, list, &root);
-	revert_creds(old_cred);
+	ovl_revert_creds(dentry->d_sb, old_cred);
 	if (err)
 		return err;
 
diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c
index 3d14a3f..416a665 100644
--- a/fs/overlayfs/super.c
+++ b/fs/overlayfs/super.c
@@ -54,6 +54,11 @@ module_param_named(xino_auto, ovl_xino_auto_def, bool, 0644);
 MODULE_PARM_DESC(xino_auto,
 		 "Auto enable xino feature");
 
+static bool __read_mostly ovl_override_creds_def = true;
+module_param_named(override_creds, ovl_override_creds_def, bool, 0644);
+MODULE_PARM_DESC(ovl_override_creds_def,
+		 "Use mounter's credentials for accesses");
+
 static void ovl_entry_stack_free(struct ovl_entry *oe)
 {
 	unsigned int i;
@@ -391,6 +396,9 @@ static int ovl_show_options(struct seq_file *m, struct dentry *dentry)
 		seq_puts(m, ",volatile");
 	if (ofs->config.userxattr)
 		seq_puts(m, ",userxattr");
+	if (ofs->config.override_creds != ovl_override_creds_def)
+		seq_show_option(m, "override_creds",
+				ofs->config.override_creds ? "on" : "off");
 	return 0;
 }
 
@@ -446,6 +454,8 @@ enum {
 	OPT_METACOPY_ON,
 	OPT_METACOPY_OFF,
 	OPT_VOLATILE,
+	OPT_OVERRIDE_CREDS_ON,
+	OPT_OVERRIDE_CREDS_OFF,
 	OPT_ERR,
 };
 
@@ -468,6 +478,8 @@ static const match_table_t ovl_tokens = {
 	{OPT_METACOPY_ON,		"metacopy=on"},
 	{OPT_METACOPY_OFF,		"metacopy=off"},
 	{OPT_VOLATILE,			"volatile"},
+	{OPT_OVERRIDE_CREDS_ON,		"override_creds=on"},
+	{OPT_OVERRIDE_CREDS_OFF,	"override_creds=off"},
 	{OPT_ERR,			NULL}
 };
 
@@ -527,6 +539,7 @@ static int ovl_parse_opt(char *opt, struct ovl_config *config)
 	config->redirect_mode = kstrdup(ovl_redirect_mode_def(), GFP_KERNEL);
 	if (!config->redirect_mode)
 		return -ENOMEM;
+	config->override_creds = ovl_override_creds_def;
 
 	while ((p = ovl_next_opt(&opt)) != NULL) {
 		int token;
@@ -628,6 +641,14 @@ static int ovl_parse_opt(char *opt, struct ovl_config *config)
 			config->userxattr = true;
 			break;
 
+		case OPT_OVERRIDE_CREDS_ON:
+			config->override_creds = true;
+			break;
+
+		case OPT_OVERRIDE_CREDS_OFF:
+			config->override_creds = false;
+			break;
+
 		default:
 			pr_err("unrecognized mount option \"%s\" or missing value\n",
 					p);
@@ -2166,7 +2187,6 @@ static int ovl_fill_super(struct super_block *sb, void *data, int silent)
 	kfree(splitlower);
 
 	sb->s_root = root_dentry;
-
 	return 0;
 
 out_free_oe:
diff --git a/fs/overlayfs/util.c b/fs/overlayfs/util.c
index 81a57a8..4089ccc 100644
--- a/fs/overlayfs/util.c
+++ b/fs/overlayfs/util.c
@@ -38,9 +38,18 @@ const struct cred *ovl_override_creds(struct super_block *sb)
 {
 	struct ovl_fs *ofs = sb->s_fs_info;
 
+	if (!ofs->config.override_creds)
+		return NULL;
 	return override_creds(ofs->creator_cred);
 }
 
+void ovl_revert_creds(struct super_block *sb, const struct cred *old_cred)
+{
+	if (old_cred)
+		revert_creds(old_cred);
+}
+
+
 /*
  * Check if underlying fs supports file handles and try to determine encoding
  * type, in order to deduce maximum inode number used by fs.
@@ -250,7 +259,7 @@ struct dentry *ovl_i_dentry_upper(struct inode *inode)
 	return ovl_upperdentry_dereference(OVL_I(inode));
 }
 
-void ovl_i_path_real(struct inode *inode, struct path *path)
+struct inode *ovl_i_path_real(struct inode *inode, struct path *path)
 {
 	path->dentry = ovl_i_dentry_upper(inode);
 	if (!path->dentry) {
@@ -259,6 +268,8 @@ void ovl_i_path_real(struct inode *inode, struct path *path)
 	} else {
 		path->mnt = ovl_upper_mnt(OVL_FS(inode->i_sb));
 	}
+
+	return  path->dentry ? d_inode(path->dentry) : NULL;
 }
 
 struct inode *ovl_inode_upper(struct inode *inode)
@@ -927,7 +938,7 @@ int ovl_nlink_start(struct dentry *dentry)
 	 * value relative to the upper inode nlink in an upper inode xattr.
 	 */
 	err = ovl_set_nlink_upper(dentry);
-	revert_creds(old_cred);
+	ovl_revert_creds(dentry->d_sb, old_cred);
 
 out:
 	if (err)
@@ -945,7 +956,7 @@ void ovl_nlink_end(struct dentry *dentry)
 
 		old_cred = ovl_override_creds(dentry->d_sb);
 		ovl_cleanup_index(dentry);
-		revert_creds(old_cred);
+		ovl_revert_creds(dentry->d_sb, old_cred);
 	}
 
 	ovl_inode_unlock(inode);
@@ -1105,8 +1116,7 @@ void ovl_copyattr(struct inode *inode)
 	struct inode *realinode;
 	struct user_namespace *real_mnt_userns;
 
-	ovl_i_path_real(inode, &realpath);
-	realinode = d_inode(realpath.dentry);
+	realinode = ovl_i_path_real(inode, &realpath);
 	real_mnt_userns = mnt_user_ns(realpath.mnt);
 
 	inode->i_uid = i_uid_into_mnt(real_mnt_userns, realinode);
diff --git a/fs/proc/base.c b/fs/proc/base.c
index 9e479d7..f7c6474 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -96,6 +96,7 @@
 #include <linux/time_namespace.h>
 #include <linux/resctrl.h>
 #include <linux/cn_proc.h>
+#include <linux/cpufreq_times.h>
 #include <trace/events/oom.h>
 #include "internal.h"
 #include "fd.h"
@@ -3336,6 +3337,9 @@ static const struct pid_entry tgid_base_stuff[] = {
 #ifdef CONFIG_LIVEPATCH
 	ONE("patch_state",  S_IRUSR, proc_pid_patch_state),
 #endif
+#ifdef CONFIG_CPU_FREQ_TIMES
+	ONE("time_in_state", 0444, proc_time_in_state_show),
+#endif
 #ifdef CONFIG_STACKLEAK_METRICS
 	ONE("stack_depth", S_IRUGO, proc_stack_depth),
 #endif
@@ -3687,6 +3691,9 @@ static const struct pid_entry tid_base_stuff[] = {
 	ONE("ksm_merging_pages",  S_IRUSR, proc_pid_ksm_merging_pages),
 	ONE("ksm_stat",  S_IRUSR, proc_pid_ksm_stat),
 #endif
+#ifdef CONFIG_CPU_FREQ_TIMES
+	ONE("time_in_state", 0444, proc_time_in_state_show),
+#endif
 };
 
 static int proc_tid_base_readdir(struct file *file, struct dir_context *ctx)
diff --git a/fs/proc/meminfo.c b/fs/proc/meminfo.c
index 4409601..24a133e 100644
--- a/fs/proc/meminfo.c
+++ b/fs/proc/meminfo.c
@@ -16,8 +16,10 @@
 #ifdef CONFIG_CMA
 #include <linux/cma.h>
 #endif
+#include <trace/hooks/mm.h>
 #include <asm/page.h>
 #include "internal.h"
+#include <trace/hooks/mm.h>
 
 void __attribute__((weak)) arch_report_meminfo(struct seq_file *m)
 {
@@ -45,6 +47,7 @@ static int meminfo_proc_show(struct seq_file *m, void *v)
 
 	cached = global_node_page_state(NR_FILE_PAGES) -
 			total_swapcache_pages() - i.bufferram;
+	trace_android_vh_meminfo_cache_adjust(&cached);
 	if (cached < 0)
 		cached = 0;
 
@@ -154,6 +157,7 @@ static int meminfo_proc_show(struct seq_file *m, void *v)
 	show_val_kb(m, "CmaFree:        ",
 		    global_zone_page_state(NR_FREE_CMA_PAGES));
 #endif
+	trace_android_vh_meminfo_proc_show(m);
 
 	hugetlb_report_meminfo(m);
 
diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
index a954305..a235416 100644
--- a/fs/proc/task_mmu.c
+++ b/fs/proc/task_mmu.c
@@ -19,6 +19,7 @@
 #include <linux/shmem_fs.h>
 #include <linux/uaccess.h>
 #include <linux/pkeys.h>
+#include <trace/hooks/mm.h>
 
 #include <asm/elf.h>
 #include <asm/tlb.h>
@@ -403,6 +404,9 @@ struct mem_size_stats {
 	unsigned long shmem_thp;
 	unsigned long file_thp;
 	unsigned long swap;
+	unsigned long writeback;
+	unsigned long same;
+	unsigned long huge;
 	unsigned long shared_hugetlb;
 	unsigned long private_hugetlb;
 	u64 pss;
@@ -552,6 +556,9 @@ static void smaps_pte_entry(pte_t *pte, unsigned long addr,
 			} else {
 				mss->swap_pss += (u64)PAGE_SIZE << PSS_SHIFT;
 			}
+			trace_android_vh_smaps_pte_entry(swpent,
+					&mss->writeback,
+					&mss->same, &mss->huge);
 		} else if (is_pfn_swap_entry(swpent)) {
 			if (is_migration_entry(swpent))
 				migration = true;
@@ -844,6 +851,7 @@ static void __show_smap(struct seq_file *m, const struct mem_size_stats *mss,
 	SEQ_PUT_DEC(" kB\nLocked:         ",
 					mss->pss_locked >> PSS_SHIFT);
 	seq_puts(m, " kB\n");
+	trace_android_vh_show_smap(m, mss->writeback, mss->same, mss->huge);
 }
 
 static int show_smap(struct seq_file *m, void *v)
@@ -1292,7 +1300,7 @@ static ssize_t clear_refs_write(struct file *file, const char __user *buf,
 			mas_for_each(&mas, vma, ULONG_MAX) {
 				if (!(vma->vm_flags & VM_SOFTDIRTY))
 					continue;
-				vma->vm_flags &= ~VM_SOFTDIRTY;
+				vm_flags_clear(vma, VM_SOFTDIRTY);
 				vma_set_page_prot(vma);
 			}
 
diff --git a/fs/proc/vmcore.c b/fs/proc/vmcore.c
index 5aa527c..43e211d 100644
--- a/fs/proc/vmcore.c
+++ b/fs/proc/vmcore.c
@@ -582,8 +582,7 @@ static int mmap_vmcore(struct file *file, struct vm_area_struct *vma)
 	if (vma->vm_flags & (VM_WRITE | VM_EXEC))
 		return -EPERM;
 
-	vma->vm_flags &= ~(VM_MAYWRITE | VM_MAYEXEC);
-	vma->vm_flags |= VM_MIXEDMAP;
+	vm_flags_mod(vma, VM_MIXEDMAP, VM_MAYWRITE | VM_MAYEXEC);
 	vma->vm_ops = &vmcore_mmap_ops;
 
 	len = 0;
diff --git a/fs/pstore/ram.c b/fs/pstore/ram.c
index f3fa362..80bfa26 100644
--- a/fs/pstore/ram.c
+++ b/fs/pstore/ram.c
@@ -21,6 +21,7 @@
 #include <linux/pstore_ram.h>
 #include <linux/of.h>
 #include <linux/of_address.h>
+#include <linux/of_reserved_mem.h>
 #include "internal.h"
 
 #define RAMOOPS_KERNMSG_HDR "===="
@@ -633,6 +634,7 @@ static int ramoops_parse_dt(struct platform_device *pdev,
 {
 	struct device_node *of_node = pdev->dev.of_node;
 	struct device_node *parent_node;
+	struct reserved_mem *rmem;
 	struct resource *res;
 	u32 value;
 	int ret;
@@ -641,13 +643,20 @@ static int ramoops_parse_dt(struct platform_device *pdev,
 
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	if (!res) {
-		dev_err(&pdev->dev,
-			"failed to locate DT /reserved-memory resource\n");
-		return -EINVAL;
+		rmem = of_reserved_mem_lookup(of_node);
+		if (rmem) {
+			pdata->mem_size = rmem->size;
+			pdata->mem_address = rmem->base;
+		} else {
+			dev_err(&pdev->dev,
+				"failed to locate DT /reserved-memory resource\n");
+			return -EINVAL;
+		}
+	} else {
+		pdata->mem_size = resource_size(res);
+		pdata->mem_address = res->start;
 	}
 
-	pdata->mem_size = resource_size(res);
-	pdata->mem_address = res->start;
 	/*
 	 * Setting "unbuffered" is deprecated and will be ignored if
 	 * "mem_type" is also specified.
diff --git a/fs/select.c b/fs/select.c
index 0ee55af..794e2a9 100644
--- a/fs/select.c
+++ b/fs/select.c
@@ -476,6 +476,7 @@ static inline void wait_key_set(poll_table *wait, unsigned long in,
 		wait->_key |= POLLOUT_SET;
 }
 
+noinline_for_stack
 static int do_select(int n, fd_set_bits *fds, struct timespec64 *end_time)
 {
 	ktime_t expire, *to = NULL;
diff --git a/fs/super.c b/fs/super.c
index 7c140ee..25345c1 100644
--- a/fs/super.c
+++ b/fs/super.c
@@ -31,6 +31,7 @@
 #include <linux/mutex.h>
 #include <linux/backing-dev.h>
 #include <linux/rculist_bl.h>
+#include <linux/cleancache.h>
 #include <linux/fscrypt.h>
 #include <linux/fsnotify.h>
 #include <linux/lockdep.h>
@@ -259,6 +260,7 @@ static struct super_block *alloc_super(struct file_system_type *type, int flags,
 	s->s_time_gran = 1000000000;
 	s->s_time_min = TIME64_MIN;
 	s->s_time_max = TIME64_MAX;
+	s->cleancache_poolid = CLEANCACHE_NO_POOL;
 
 	s->s_shrink.seeks = DEFAULT_SEEKS;
 	s->s_shrink.scan_objects = super_cache_scan;
@@ -291,7 +293,6 @@ static void __put_super(struct super_block *s)
 		WARN_ON(s->s_inode_lru.node);
 		WARN_ON(!list_empty(&s->s_mounts));
 		security_sb_free(s);
-		fscrypt_destroy_keyring(s);
 		put_user_ns(s->s_user_ns);
 		kfree(s->s_subtype);
 		call_rcu(&s->rcu, destroy_super_rcu);
@@ -328,6 +329,7 @@ void deactivate_locked_super(struct super_block *s)
 {
 	struct file_system_type *fs = s->s_type;
 	if (atomic_dec_and_test(&s->s_active)) {
+		cleancache_invalidate_fs(s);
 		unregister_shrinker(&s->s_shrink);
 		fs->kill_sb(s);
 
diff --git a/fs/sync.c b/fs/sync.c
index dc725914..df95543 100644
--- a/fs/sync.c
+++ b/fs/sync.c
@@ -10,7 +10,7 @@
 #include <linux/slab.h>
 #include <linux/export.h>
 #include <linux/namei.h>
-#include <linux/sched.h>
+#include <linux/sched/xacct.h>
 #include <linux/writeback.h>
 #include <linux/syscalls.h>
 #include <linux/linkage.h>
@@ -211,6 +211,7 @@ static int do_fsync(unsigned int fd, int datasync)
 	if (f.file) {
 		ret = vfs_fsync(f.file, datasync);
 		fdput(f);
+		inc_syscfs(current);
 	}
 	return ret;
 }
diff --git a/fs/userfaultfd.c b/fs/userfaultfd.c
index 154c103..65bf926 100644
--- a/fs/userfaultfd.c
+++ b/fs/userfaultfd.c
@@ -113,7 +113,7 @@ static void userfaultfd_set_vm_flags(struct vm_area_struct *vma,
 {
 	const bool uffd_wp_changed = (vma->vm_flags ^ flags) & VM_UFFD_WP;
 
-	vma->vm_flags = flags;
+	vm_flags_reset(vma, flags);
 	/*
 	 * For shared mappings, we want to enable writenotify while
 	 * userfaultfd-wp is enabled (see vma_wants_writenotify()). We'll simply
@@ -817,31 +817,26 @@ static bool has_unmap_ctx(struct userfaultfd_ctx *ctx, struct list_head *unmaps,
 	return false;
 }
 
-int userfaultfd_unmap_prep(struct mm_struct *mm, unsigned long start,
+int userfaultfd_unmap_prep(struct vm_area_struct *vma, unsigned long start,
 			   unsigned long end, struct list_head *unmaps)
 {
-	VMA_ITERATOR(vmi, mm, start);
-	struct vm_area_struct *vma;
+	struct userfaultfd_unmap_ctx *unmap_ctx;
+	struct userfaultfd_ctx *ctx = vma->vm_userfaultfd_ctx.ctx;
 
-	for_each_vma_range(vmi, vma, end) {
-		struct userfaultfd_unmap_ctx *unmap_ctx;
-		struct userfaultfd_ctx *ctx = vma->vm_userfaultfd_ctx.ctx;
+	if (!ctx || !(ctx->features & UFFD_FEATURE_EVENT_UNMAP) ||
+	    has_unmap_ctx(ctx, unmaps, start, end))
+		return 0;
 
-		if (!ctx || !(ctx->features & UFFD_FEATURE_EVENT_UNMAP) ||
-		    has_unmap_ctx(ctx, unmaps, start, end))
-			continue;
+	unmap_ctx = kzalloc(sizeof(*unmap_ctx), GFP_KERNEL);
+	if (!unmap_ctx)
+		return -ENOMEM;
 
-		unmap_ctx = kzalloc(sizeof(*unmap_ctx), GFP_KERNEL);
-		if (!unmap_ctx)
-			return -ENOMEM;
-
-		userfaultfd_ctx_get(ctx);
-		atomic_inc(&ctx->mmap_changing);
-		unmap_ctx->ctx = ctx;
-		unmap_ctx->start = start;
-		unmap_ctx->end = end;
-		list_add_tail(&unmap_ctx->list, unmaps);
-	}
+	userfaultfd_ctx_get(ctx);
+	atomic_inc(&ctx->mmap_changing);
+	unmap_ctx->ctx = ctx;
+	unmap_ctx->start = start;
+	unmap_ctx->end = end;
+	list_add_tail(&unmap_ctx->list, unmaps);
 
 	return 0;
 }
diff --git a/fs/verity/Kconfig b/fs/verity/Kconfig
index aad1f1d..a7ffd71 100644
--- a/fs/verity/Kconfig
+++ b/fs/verity/Kconfig
@@ -34,14 +34,6 @@
 
 	  If unsure, say N.
 
-config FS_VERITY_DEBUG
-	bool "FS Verity debugging"
-	depends on FS_VERITY
-	help
-	  Enable debugging messages related to fs-verity by default.
-
-	  Say N unless you are an fs-verity developer.
-
 config FS_VERITY_BUILTIN_SIGNATURES
 	bool "FS Verity builtin signature support"
 	depends on FS_VERITY
diff --git a/fs/verity/enable.c b/fs/verity/enable.c
index 400c264..3018f6d 100644
--- a/fs/verity/enable.c
+++ b/fs/verity/enable.c
@@ -7,138 +7,52 @@
 
 #include "fsverity_private.h"
 
-#include <crypto/hash.h>
-#include <linux/backing-dev.h>
 #include <linux/mount.h>
 #include <linux/pagemap.h>
 #include <linux/sched/signal.h>
 #include <linux/uaccess.h>
 
-/*
- * Read a file data page for Merkle tree construction.  Do aggressive readahead,
- * since we're sequentially reading the entire file.
- */
-static struct page *read_file_data_page(struct file *file, pgoff_t index,
-					struct file_ra_state *ra,
-					unsigned long remaining_pages)
-{
-	DEFINE_READAHEAD(ractl, file, ra, file->f_mapping, index);
-	struct folio *folio;
+struct block_buffer {
+	u32 filled;
+	u8 *data;
+};
 
-	folio = __filemap_get_folio(ractl.mapping, index, FGP_ACCESSED, 0);
-	if (!folio || !folio_test_uptodate(folio)) {
-		if (folio)
-			folio_put(folio);
-		else
-			page_cache_sync_ra(&ractl, remaining_pages);
-		folio = read_cache_folio(ractl.mapping, index, NULL, file);
-		if (IS_ERR(folio))
-			return &folio->page;
-	}
-	if (folio_test_readahead(folio))
-		page_cache_async_ra(&ractl, folio, remaining_pages);
-	return folio_file_page(folio, index);
-}
-
-static int build_merkle_tree_level(struct file *filp, unsigned int level,
-				   u64 num_blocks_to_hash,
-				   const struct merkle_tree_params *params,
-				   u8 *pending_hashes,
-				   struct ahash_request *req)
+/* Hash a block, writing the result to the next level's pending block buffer. */
+static int hash_one_block(struct inode *inode,
+			  const struct merkle_tree_params *params,
+			  struct ahash_request *req, struct block_buffer *cur)
 {
-	struct inode *inode = file_inode(filp);
-	const struct fsverity_operations *vops = inode->i_sb->s_vop;
-	struct file_ra_state ra = { 0 };
-	unsigned int pending_size = 0;
-	u64 dst_block_num;
-	u64 i;
+	struct block_buffer *next = cur + 1;
 	int err;
 
-	if (WARN_ON(params->block_size != PAGE_SIZE)) /* checked earlier too */
-		return -EINVAL;
+	/* Zero-pad the block if it's shorter than the block size. */
+	memset(&cur->data[cur->filled], 0, params->block_size - cur->filled);
 
-	if (level < params->num_levels) {
-		dst_block_num = params->level_start[level];
-	} else {
-		if (WARN_ON(num_blocks_to_hash != 1))
-			return -EINVAL;
-		dst_block_num = 0; /* unused */
-	}
-
-	file_ra_state_init(&ra, filp->f_mapping);
-
-	for (i = 0; i < num_blocks_to_hash; i++) {
-		struct page *src_page;
-
-		if ((pgoff_t)i % 10000 == 0 || i + 1 == num_blocks_to_hash)
-			pr_debug("Hashing block %llu of %llu for level %u\n",
-				 i + 1, num_blocks_to_hash, level);
-
-		if (level == 0) {
-			/* Leaf: hashing a data block */
-			src_page = read_file_data_page(filp, i, &ra,
-						       num_blocks_to_hash - i);
-			if (IS_ERR(src_page)) {
-				err = PTR_ERR(src_page);
-				fsverity_err(inode,
-					     "Error %d reading data page %llu",
-					     err, i);
-				return err;
-			}
-		} else {
-			unsigned long num_ra_pages =
-				min_t(unsigned long, num_blocks_to_hash - i,
-				      inode->i_sb->s_bdi->io_pages);
-
-			/* Non-leaf: hashing hash block from level below */
-			src_page = vops->read_merkle_tree_page(inode,
-					params->level_start[level - 1] + i,
-					num_ra_pages);
-			if (IS_ERR(src_page)) {
-				err = PTR_ERR(src_page);
-				fsverity_err(inode,
-					     "Error %d reading Merkle tree page %llu",
-					     err, params->level_start[level - 1] + i);
-				return err;
-			}
-		}
-
-		err = fsverity_hash_page(params, inode, req, src_page,
-					 &pending_hashes[pending_size]);
-		put_page(src_page);
-		if (err)
-			return err;
-		pending_size += params->digest_size;
-
-		if (level == params->num_levels) /* Root hash? */
-			return 0;
-
-		if (pending_size + params->digest_size > params->block_size ||
-		    i + 1 == num_blocks_to_hash) {
-			/* Flush the pending hash block */
-			memset(&pending_hashes[pending_size], 0,
-			       params->block_size - pending_size);
-			err = vops->write_merkle_tree_block(inode,
-					pending_hashes,
-					dst_block_num,
-					params->log_blocksize);
-			if (err) {
-				fsverity_err(inode,
-					     "Error %d writing Merkle tree block %llu",
-					     err, dst_block_num);
-				return err;
-			}
-			dst_block_num++;
-			pending_size = 0;
-		}
-
-		if (fatal_signal_pending(current))
-			return -EINTR;
-		cond_resched();
-	}
+	err = fsverity_hash_block(params, inode, req, virt_to_page(cur->data),
+				  offset_in_page(cur->data),
+				  &next->data[next->filled]);
+	if (err)
+		return err;
+	next->filled += params->digest_size;
+	cur->filled = 0;
 	return 0;
 }
 
+static int write_merkle_tree_block(struct inode *inode, const u8 *buf,
+				   unsigned long index,
+				   const struct merkle_tree_params *params)
+{
+	u64 pos = (u64)index << params->log_blocksize;
+	int err;
+
+	err = inode->i_sb->s_vop->write_merkle_tree_block(inode, buf, pos,
+							  params->block_size);
+	if (err)
+		fsverity_err(inode, "Error %d writing Merkle tree block %lu",
+			     err, index);
+	return err;
+}
+
 /*
  * Build the Merkle tree for the given file using the given parameters, and
  * return the root hash in @root_hash.
@@ -152,13 +66,17 @@ static int build_merkle_tree(struct file *filp,
 			     u8 *root_hash)
 {
 	struct inode *inode = file_inode(filp);
-	u8 *pending_hashes;
+	const u64 data_size = inode->i_size;
+	const int num_levels = params->num_levels;
 	struct ahash_request *req;
-	u64 blocks;
-	unsigned int level;
-	int err = -ENOMEM;
+	struct block_buffer _buffers[1 + FS_VERITY_MAX_LEVELS + 1] = {};
+	struct block_buffer *buffers = &_buffers[1];
+	unsigned long level_offset[FS_VERITY_MAX_LEVELS];
+	int level;
+	u64 offset;
+	int err;
 
-	if (inode->i_size == 0) {
+	if (data_size == 0) {
 		/* Empty file is a special case; root hash is all 0's */
 		memset(root_hash, 0, params->digest_size);
 		return 0;
@@ -167,29 +85,95 @@ static int build_merkle_tree(struct file *filp,
 	/* This allocation never fails, since it's mempool-backed. */
 	req = fsverity_alloc_hash_request(params->hash_alg, GFP_KERNEL);
 
-	pending_hashes = kmalloc(params->block_size, GFP_KERNEL);
-	if (!pending_hashes)
-		goto out;
-
 	/*
-	 * Build each level of the Merkle tree, starting at the leaf level
-	 * (level 0) and ascending to the root node (level 'num_levels - 1').
-	 * Then at the end (level 'num_levels'), calculate the root hash.
+	 * Allocate the block buffers.  Buffer "-1" is for data blocks.
+	 * Buffers 0 <= level < num_levels are for the actual tree levels.
+	 * Buffer 'num_levels' is for the root hash.
 	 */
-	blocks = ((u64)inode->i_size + params->block_size - 1) >>
-		 params->log_blocksize;
-	for (level = 0; level <= params->num_levels; level++) {
-		err = build_merkle_tree_level(filp, level, blocks, params,
-					      pending_hashes, req);
+	for (level = -1; level < num_levels; level++) {
+		buffers[level].data = kzalloc(params->block_size, GFP_KERNEL);
+		if (!buffers[level].data) {
+			err = -ENOMEM;
+			goto out;
+		}
+	}
+	buffers[num_levels].data = root_hash;
+
+	BUILD_BUG_ON(sizeof(level_offset) != sizeof(params->level_start));
+	memcpy(level_offset, params->level_start, sizeof(level_offset));
+
+	/* Hash each data block, also hashing the tree blocks as they fill up */
+	for (offset = 0; offset < data_size; offset += params->block_size) {
+		ssize_t bytes_read;
+		loff_t pos = offset;
+
+		buffers[-1].filled = min_t(u64, params->block_size,
+					   data_size - offset);
+		bytes_read = __kernel_read(filp, buffers[-1].data,
+					   buffers[-1].filled, &pos);
+		if (bytes_read < 0) {
+			err = bytes_read;
+			fsverity_err(inode, "Error %d reading file data", err);
+			goto out;
+		}
+		if (bytes_read != buffers[-1].filled) {
+			err = -EINVAL;
+			fsverity_err(inode, "Short read of file data");
+			goto out;
+		}
+		err = hash_one_block(inode, params, req, &buffers[-1]);
 		if (err)
 			goto out;
-		blocks = (blocks + params->hashes_per_block - 1) >>
-			 params->log_arity;
+		for (level = 0; level < num_levels; level++) {
+			if (buffers[level].filled + params->digest_size <=
+			    params->block_size) {
+				/* Next block at @level isn't full yet */
+				break;
+			}
+			/* Next block at @level is full */
+
+			err = hash_one_block(inode, params, req,
+					     &buffers[level]);
+			if (err)
+				goto out;
+			err = write_merkle_tree_block(inode,
+						      buffers[level].data,
+						      level_offset[level],
+						      params);
+			if (err)
+				goto out;
+			level_offset[level]++;
+		}
+		if (fatal_signal_pending(current)) {
+			err = -EINTR;
+			goto out;
+		}
+		cond_resched();
 	}
-	memcpy(root_hash, pending_hashes, params->digest_size);
+	/* Finish all nonempty pending tree blocks. */
+	for (level = 0; level < num_levels; level++) {
+		if (buffers[level].filled != 0) {
+			err = hash_one_block(inode, params, req,
+					     &buffers[level]);
+			if (err)
+				goto out;
+			err = write_merkle_tree_block(inode,
+						      buffers[level].data,
+						      level_offset[level],
+						      params);
+			if (err)
+				goto out;
+		}
+	}
+	/* The root hash was filled by the last call to hash_one_block(). */
+	if (WARN_ON(buffers[num_levels].filled != params->digest_size)) {
+		err = -EINVAL;
+		goto out;
+	}
 	err = 0;
 out:
-	kfree(pending_hashes);
+	for (level = -1; level < num_levels; level++)
+		kfree(buffers[level].data);
 	fsverity_free_hash_request(params->hash_alg, req);
 	return err;
 }
@@ -263,15 +247,12 @@ static int enable_verity(struct file *filp,
 	 * ->begin_enable_verity() and ->end_enable_verity() using the inode
 	 * lock and only allow one process to be here at a time on a given file.
 	 */
-	pr_debug("Building Merkle tree...\n");
 	BUILD_BUG_ON(sizeof(desc->root_hash) < FS_VERITY_MAX_DIGEST_SIZE);
 	err = build_merkle_tree(filp, &params, desc->root_hash);
 	if (err) {
 		fsverity_err(inode, "Error %d building Merkle tree", err);
 		goto rollback;
 	}
-	pr_debug("Done building Merkle tree.  Root hash is %s:%*phN\n",
-		 params.hash_alg->name, params.digest_size, desc->root_hash);
 
 	/*
 	 * Create the fsverity_info.  Don't bother trying to save work by
@@ -286,10 +267,6 @@ static int enable_verity(struct file *filp,
 		goto rollback;
 	}
 
-	if (arg->sig_size)
-		pr_debug("Storing a %u-byte PKCS#7 signature alongside the file\n",
-			 arg->sig_size);
-
 	/*
 	 * Tell the filesystem to finish enabling verity on the file.
 	 * Serialized with ->begin_enable_verity() by the inode lock.
@@ -352,7 +329,7 @@ int fsverity_ioctl_enable(struct file *filp, const void __user *uarg)
 	    memchr_inv(arg.__reserved2, 0, sizeof(arg.__reserved2)))
 		return -EINVAL;
 
-	if (arg.block_size != PAGE_SIZE)
+	if (!is_power_of_2(arg.block_size))
 		return -EINVAL;
 
 	if (arg.salt_size > sizeof_field(struct fsverity_descriptor, salt))
diff --git a/fs/verity/fsverity_private.h b/fs/verity/fsverity_private.h
index dbe1ce5..d34dcc0 100644
--- a/fs/verity/fsverity_private.h
+++ b/fs/verity/fsverity_private.h
@@ -8,10 +8,6 @@
 #ifndef _FSVERITY_PRIVATE_H
 #define _FSVERITY_PRIVATE_H
 
-#ifdef CONFIG_FS_VERITY_DEBUG
-#define DEBUG
-#endif
-
 #define pr_fmt(fmt) "fs-verity: " fmt
 
 #include <linux/fsverity.h>
@@ -32,6 +28,11 @@ struct fsverity_hash_alg {
 	unsigned int digest_size; /* digest size in bytes, e.g. 32 for SHA-256 */
 	unsigned int block_size;  /* block size in bytes, e.g. 64 for SHA-256 */
 	mempool_t req_pool;	  /* mempool with a preallocated hash request */
+	/*
+	 * The HASH_ALGO_* constant for this algorithm.  This is different from
+	 * FS_VERITY_HASH_ALG_*, which uses a different numbering scheme.
+	 */
+	enum hash_algo algo_id;
 };
 
 /* Merkle tree parameters: hash algorithm, initial hash state, and topology */
@@ -41,17 +42,20 @@ struct merkle_tree_params {
 	unsigned int digest_size;	/* same as hash_alg->digest_size */
 	unsigned int block_size;	/* size of data and tree blocks */
 	unsigned int hashes_per_block;	/* number of hashes per tree block */
-	unsigned int log_blocksize;	/* log2(block_size) */
-	unsigned int log_arity;		/* log2(hashes_per_block) */
+	unsigned int blocks_per_page;	/* PAGE_SIZE / block_size */
+	u8 log_digestsize;		/* log2(digest_size) */
+	u8 log_blocksize;		/* log2(block_size) */
+	u8 log_arity;			/* log2(hashes_per_block) */
+	u8 log_blocks_per_page;		/* log2(blocks_per_page) */
 	unsigned int num_levels;	/* number of levels in Merkle tree */
 	u64 tree_size;			/* Merkle tree size in bytes */
-	unsigned long level0_blocks;	/* number of blocks in tree level 0 */
+	unsigned long tree_pages;	/* Merkle tree size in pages */
 
 	/*
 	 * Starting block index for each tree level, ordered from leaf level (0)
 	 * to root level ('num_levels - 1')
 	 */
-	u64 level_start[FS_VERITY_MAX_LEVELS];
+	unsigned long level_start[FS_VERITY_MAX_LEVELS];
 };
 
 /*
@@ -68,9 +72,10 @@ struct fsverity_info {
 	u8 root_hash[FS_VERITY_MAX_DIGEST_SIZE];
 	u8 file_digest[FS_VERITY_MAX_DIGEST_SIZE];
 	const struct inode *inode;
+	unsigned long *hash_block_verified;
+	spinlock_t hash_page_init_lock;
 };
 
-
 #define FS_VERITY_MAX_SIGNATURE_SIZE	(FS_VERITY_MAX_DESCRIPTOR_SIZE - \
 					 sizeof(struct fsverity_descriptor))
 
@@ -86,9 +91,9 @@ void fsverity_free_hash_request(struct fsverity_hash_alg *alg,
 				struct ahash_request *req);
 const u8 *fsverity_prepare_hash_state(struct fsverity_hash_alg *alg,
 				      const u8 *salt, size_t salt_size);
-int fsverity_hash_page(const struct merkle_tree_params *params,
-		       const struct inode *inode,
-		       struct ahash_request *req, struct page *page, u8 *out);
+int fsverity_hash_block(const struct merkle_tree_params *params,
+			const struct inode *inode, struct ahash_request *req,
+			struct page *page, unsigned int offset, u8 *out);
 int fsverity_hash_buffer(struct fsverity_hash_alg *alg,
 			 const void *data, size_t size, u8 *out);
 void __init fsverity_check_hash_algs(void);
diff --git a/fs/verity/hash_algs.c b/fs/verity/hash_algs.c
index 71d0fcc..13fcf31 100644
--- a/fs/verity/hash_algs.c
+++ b/fs/verity/hash_algs.c
@@ -16,11 +16,13 @@ struct fsverity_hash_alg fsverity_hash_algs[] = {
 		.name = "sha256",
 		.digest_size = SHA256_DIGEST_SIZE,
 		.block_size = SHA256_BLOCK_SIZE,
+		.algo_id = HASH_ALGO_SHA256,
 	},
 	[FS_VERITY_HASH_ALG_SHA512] = {
 		.name = "sha512",
 		.digest_size = SHA512_DIGEST_SIZE,
 		.block_size = SHA512_BLOCK_SIZE,
+		.algo_id = HASH_ALGO_SHA512,
 	},
 };
 
@@ -218,35 +220,33 @@ const u8 *fsverity_prepare_hash_state(struct fsverity_hash_alg *alg,
 }
 
 /**
- * fsverity_hash_page() - hash a single data or hash page
+ * fsverity_hash_block() - hash a single data or hash block
  * @params: the Merkle tree's parameters
  * @inode: inode for which the hashing is being done
  * @req: preallocated hash request
- * @page: the page to hash
+ * @page: the page containing the block to hash
+ * @offset: the offset of the block within @page
  * @out: output digest, size 'params->digest_size' bytes
  *
- * Hash a single data or hash block, assuming block_size == PAGE_SIZE.
- * The hash is salted if a salt is specified in the Merkle tree parameters.
+ * Hash a single data or hash block.  The hash is salted if a salt is specified
+ * in the Merkle tree parameters.
  *
  * Return: 0 on success, -errno on failure
  */
-int fsverity_hash_page(const struct merkle_tree_params *params,
-		       const struct inode *inode,
-		       struct ahash_request *req, struct page *page, u8 *out)
+int fsverity_hash_block(const struct merkle_tree_params *params,
+			const struct inode *inode, struct ahash_request *req,
+			struct page *page, unsigned int offset, u8 *out)
 {
 	struct scatterlist sg;
 	DECLARE_CRYPTO_WAIT(wait);
 	int err;
 
-	if (WARN_ON(params->block_size != PAGE_SIZE))
-		return -EINVAL;
-
 	sg_init_table(&sg, 1);
-	sg_set_page(&sg, page, PAGE_SIZE, 0);
+	sg_set_page(&sg, page, params->block_size, offset);
 	ahash_request_set_callback(req, CRYPTO_TFM_REQ_MAY_SLEEP |
 					CRYPTO_TFM_REQ_MAY_BACKLOG,
 				   crypto_req_done, &wait);
-	ahash_request_set_crypt(req, &sg, out, PAGE_SIZE);
+	ahash_request_set_crypt(req, &sg, out, params->block_size);
 
 	if (params->hashstate) {
 		err = crypto_ahash_import(req, params->hashstate);
@@ -262,7 +262,7 @@ int fsverity_hash_page(const struct merkle_tree_params *params,
 
 	err = crypto_wait_req(err, &wait);
 	if (err)
-		fsverity_err(inode, "Error %d computing page hash", err);
+		fsverity_err(inode, "Error %d computing block hash", err);
 	return err;
 }
 
@@ -324,5 +324,9 @@ void __init fsverity_check_hash_algs(void)
 		 */
 		BUG_ON(!is_power_of_2(alg->digest_size));
 		BUG_ON(!is_power_of_2(alg->block_size));
+
+		/* Verify that there is a valid mapping to HASH_ALGO_*. */
+		BUG_ON(alg->algo_id == 0);
+		BUG_ON(alg->digest_size != hash_digest_size[alg->algo_id]);
 	}
 }
diff --git a/fs/verity/init.c b/fs/verity/init.c
index c98b701..0239051 100644
--- a/fs/verity/init.c
+++ b/fs/verity/init.c
@@ -49,7 +49,6 @@ static int __init fsverity_init(void)
 	if (err)
 		goto err_exit_workqueue;
 
-	pr_debug("Initialized fs-verity\n");
 	return 0;
 
 err_exit_workqueue:
diff --git a/fs/verity/measure.c b/fs/verity/measure.c
index e99c003..5c79ea1 100644
--- a/fs/verity/measure.c
+++ b/fs/verity/measure.c
@@ -65,8 +65,7 @@ EXPORT_SYMBOL_GPL(fsverity_ioctl_measure);
  * @alg: (out) pointer to the hash algorithm enumeration
  *
  * Return the file hash algorithm and digest of an fsverity protected file.
- * Assumption: before calling fsverity_get_digest(), the file must have been
- * opened.
+ * Assumption: before calling this, the file must have been opened.
  *
  * Return: 0 on success, -errno on failure
  */
@@ -76,27 +75,13 @@ int fsverity_get_digest(struct inode *inode,
 {
 	const struct fsverity_info *vi;
 	const struct fsverity_hash_alg *hash_alg;
-	int i;
 
 	vi = fsverity_get_info(inode);
 	if (!vi)
 		return -ENODATA; /* not a verity file */
 
 	hash_alg = vi->tree_params.hash_alg;
-	memset(digest, 0, FS_VERITY_MAX_DIGEST_SIZE);
-
-	/* convert the verity hash algorithm name to a hash_algo_name enum */
-	i = match_string(hash_algo_name, HASH_ALGO__LAST, hash_alg->name);
-	if (i < 0)
-		return -EINVAL;
-	*alg = i;
-
-	if (WARN_ON_ONCE(hash_alg->digest_size != hash_digest_size[*alg]))
-		return -EINVAL;
 	memcpy(digest, vi->file_digest, hash_alg->digest_size);
-
-	pr_debug("file digest %s:%*phN\n", hash_algo_name[*alg],
-		 hash_digest_size[*alg], digest);
-
+	*alg = hash_alg->algo_id;
 	return 0;
 }
diff --git a/fs/verity/open.c b/fs/verity/open.c
index 81ff944..9366b44 100644
--- a/fs/verity/open.c
+++ b/fs/verity/open.c
@@ -7,6 +7,7 @@
 
 #include "fsverity_private.h"
 
+#include <linux/mm.h>
 #include <linux/slab.h>
 
 static struct kmem_cache *fsverity_info_cachep;
@@ -34,6 +35,7 @@ int fsverity_init_merkle_tree_params(struct merkle_tree_params *params,
 	struct fsverity_hash_alg *hash_alg;
 	int err;
 	u64 blocks;
+	u64 blocks_in_level[FS_VERITY_MAX_LEVELS];
 	u64 offset;
 	int level;
 
@@ -54,7 +56,23 @@ int fsverity_init_merkle_tree_params(struct merkle_tree_params *params,
 		goto out_err;
 	}
 
-	if (log_blocksize != PAGE_SHIFT) {
+	/*
+	 * fs/verity/ directly assumes that the Merkle tree block size is a
+	 * power of 2 less than or equal to PAGE_SIZE.  Another restriction
+	 * arises from the interaction between fs/verity/ and the filesystems
+	 * themselves: filesystems expect to be able to verify a single
+	 * filesystem block of data at a time.  Therefore, the Merkle tree block
+	 * size must also be less than or equal to the filesystem block size.
+	 *
+	 * The above are the only hard limitations, so in theory the Merkle tree
+	 * block size could be as small as twice the digest size.  However,
+	 * that's not useful, and it would result in some unusually deep and
+	 * large Merkle trees.  So we currently require that the Merkle tree
+	 * block size be at least 1024 bytes.  That's small enough to test the
+	 * sub-page block case on systems with 4K pages, but not too small.
+	 */
+	if (log_blocksize < 10 || log_blocksize > PAGE_SHIFT ||
+	    log_blocksize > inode->i_blkbits) {
 		fsverity_warn(inode, "Unsupported log_blocksize: %u",
 			      log_blocksize);
 		err = -EINVAL;
@@ -62,6 +80,8 @@ int fsverity_init_merkle_tree_params(struct merkle_tree_params *params,
 	}
 	params->log_blocksize = log_blocksize;
 	params->block_size = 1 << log_blocksize;
+	params->log_blocks_per_page = PAGE_SHIFT - log_blocksize;
+	params->blocks_per_page = 1 << params->log_blocks_per_page;
 
 	if (WARN_ON(!is_power_of_2(params->digest_size))) {
 		err = -EINVAL;
@@ -74,13 +94,10 @@ int fsverity_init_merkle_tree_params(struct merkle_tree_params *params,
 		err = -EINVAL;
 		goto out_err;
 	}
-	params->log_arity = params->log_blocksize - ilog2(params->digest_size);
+	params->log_digestsize = ilog2(params->digest_size);
+	params->log_arity = log_blocksize - params->log_digestsize;
 	params->hashes_per_block = 1 << params->log_arity;
 
-	pr_debug("Merkle tree uses %s with %u-byte blocks (%u hashes/block), salt=%*phN\n",
-		 hash_alg->name, params->block_size, params->hashes_per_block,
-		 (int)salt_size, salt);
-
 	/*
 	 * Compute the number of levels in the Merkle tree and create a map from
 	 * level to the starting block of that level.  Level 'num_levels - 1' is
@@ -90,31 +107,45 @@ int fsverity_init_merkle_tree_params(struct merkle_tree_params *params,
 
 	/* Compute number of levels and the number of blocks in each level */
 	blocks = ((u64)inode->i_size + params->block_size - 1) >> log_blocksize;
-	pr_debug("Data is %lld bytes (%llu blocks)\n", inode->i_size, blocks);
 	while (blocks > 1) {
 		if (params->num_levels >= FS_VERITY_MAX_LEVELS) {
 			fsverity_err(inode, "Too many levels in Merkle tree");
-			err = -EINVAL;
+			err = -EFBIG;
 			goto out_err;
 		}
 		blocks = (blocks + params->hashes_per_block - 1) >>
 			 params->log_arity;
-		/* temporarily using level_start[] to store blocks in level */
-		params->level_start[params->num_levels++] = blocks;
+		blocks_in_level[params->num_levels++] = blocks;
 	}
-	params->level0_blocks = params->level_start[0];
 
 	/* Compute the starting block of each level */
 	offset = 0;
 	for (level = (int)params->num_levels - 1; level >= 0; level--) {
-		blocks = params->level_start[level];
 		params->level_start[level] = offset;
-		pr_debug("Level %d is %llu blocks starting at index %llu\n",
-			 level, blocks, offset);
-		offset += blocks;
+		offset += blocks_in_level[level];
+	}
+
+	/*
+	 * With block_size != PAGE_SIZE, an in-memory bitmap will need to be
+	 * allocated to track the "verified" status of hash blocks.  Don't allow
+	 * this bitmap to get too large.  For now, limit it to 1 MiB, which
+	 * limits the file size to about 4.4 TB with SHA-256 and 4K blocks.
+	 *
+	 * Together with the fact that the data, and thus also the Merkle tree,
+	 * cannot have more than ULONG_MAX pages, this implies that hash block
+	 * indices can always fit in an 'unsigned long'.  But to be safe, we
+	 * explicitly check for that too.  Note, this is only for hash block
+	 * indices; data block indices might not fit in an 'unsigned long'.
+	 */
+	if ((params->block_size != PAGE_SIZE && offset > 1 << 23) ||
+	    offset > ULONG_MAX) {
+		fsverity_err(inode, "Too many blocks in Merkle tree");
+		err = -EFBIG;
+		goto out_err;
 	}
 
 	params->tree_size = offset << log_blocksize;
+	params->tree_pages = PAGE_ALIGN(params->tree_size) >> PAGE_SHIFT;
 	return 0;
 
 out_err:
@@ -165,7 +196,7 @@ struct fsverity_info *fsverity_create_info(const struct inode *inode,
 		fsverity_err(inode,
 			     "Error %d initializing Merkle tree parameters",
 			     err);
-		goto out;
+		goto fail;
 	}
 
 	memcpy(vi->root_hash, desc->root_hash, vi->tree_params.digest_size);
@@ -174,20 +205,48 @@ struct fsverity_info *fsverity_create_info(const struct inode *inode,
 				  vi->file_digest);
 	if (err) {
 		fsverity_err(inode, "Error %d computing file digest", err);
-		goto out;
+		goto fail;
 	}
-	pr_debug("Computed file digest: %s:%*phN\n",
-		 vi->tree_params.hash_alg->name,
-		 vi->tree_params.digest_size, vi->file_digest);
 
 	err = fsverity_verify_signature(vi, desc->signature,
 					le32_to_cpu(desc->sig_size));
-out:
-	if (err) {
-		fsverity_free_info(vi);
-		vi = ERR_PTR(err);
+	if (err)
+		goto fail;
+
+	if (vi->tree_params.block_size != PAGE_SIZE) {
+		/*
+		 * When the Merkle tree block size and page size differ, we use
+		 * a bitmap to keep track of which hash blocks have been
+		 * verified.  This bitmap must contain one bit per hash block,
+		 * including alignment to a page boundary at the end.
+		 *
+		 * Eventually, to support extremely large files in an efficient
+		 * way, it might be necessary to make pages of this bitmap
+		 * reclaimable.  But for now, simply allocating the whole bitmap
+		 * is a simple solution that works well on the files on which
+		 * fsverity is realistically used.  E.g., with SHA-256 and 4K
+		 * blocks, a 100MB file only needs a 24-byte bitmap, and the
+		 * bitmap for any file under 17GB fits in a 4K page.
+		 */
+		unsigned long num_bits =
+			vi->tree_params.tree_pages <<
+			vi->tree_params.log_blocks_per_page;
+
+		vi->hash_block_verified = kvcalloc(BITS_TO_LONGS(num_bits),
+						   sizeof(unsigned long),
+						   GFP_KERNEL);
+		if (!vi->hash_block_verified) {
+			err = -ENOMEM;
+			goto fail;
+		}
+		spin_lock_init(&vi->hash_page_init_lock);
 	}
+
 	return vi;
+
+fail:
+	fsverity_free_info(vi);
+	return ERR_PTR(err);
 }
 
 void fsverity_set_info(struct inode *inode, struct fsverity_info *vi)
@@ -214,6 +273,7 @@ void fsverity_free_info(struct fsverity_info *vi)
 	if (!vi)
 		return;
 	kfree(vi->tree_params.hashstate);
+	kvfree(vi->hash_block_verified);
 	kmem_cache_free(fsverity_info_cachep, vi);
 }
 
@@ -325,67 +385,28 @@ static int ensure_verity_info(struct inode *inode)
 	return err;
 }
 
-/**
- * fsverity_file_open() - prepare to open a verity file
- * @inode: the inode being opened
- * @filp: the struct file being set up
- *
- * When opening a verity file, deny the open if it is for writing.  Otherwise,
- * set up the inode's ->i_verity_info if not already done.
- *
- * When combined with fscrypt, this must be called after fscrypt_file_open().
- * Otherwise, we won't have the key set up to decrypt the verity metadata.
- *
- * Return: 0 on success, -errno on failure
- */
-int fsverity_file_open(struct inode *inode, struct file *filp)
+int __fsverity_file_open(struct inode *inode, struct file *filp)
 {
-	if (!IS_VERITY(inode))
-		return 0;
-
-	if (filp->f_mode & FMODE_WRITE) {
-		pr_debug("Denying opening verity file (ino %lu) for write\n",
-			 inode->i_ino);
+	if (filp->f_mode & FMODE_WRITE)
 		return -EPERM;
-	}
-
 	return ensure_verity_info(inode);
 }
-EXPORT_SYMBOL_GPL(fsverity_file_open);
+EXPORT_SYMBOL_GPL(__fsverity_file_open);
 
-/**
- * fsverity_prepare_setattr() - prepare to change a verity inode's attributes
- * @dentry: dentry through which the inode is being changed
- * @attr: attributes to change
- *
- * Verity files are immutable, so deny truncates.  This isn't covered by the
- * open-time check because sys_truncate() takes a path, not a file descriptor.
- *
- * Return: 0 on success, -errno on failure
- */
-int fsverity_prepare_setattr(struct dentry *dentry, struct iattr *attr)
+int __fsverity_prepare_setattr(struct dentry *dentry, struct iattr *attr)
 {
-	if (IS_VERITY(d_inode(dentry)) && (attr->ia_valid & ATTR_SIZE)) {
-		pr_debug("Denying truncate of verity file (ino %lu)\n",
-			 d_inode(dentry)->i_ino);
+	if (attr->ia_valid & ATTR_SIZE)
 		return -EPERM;
-	}
 	return 0;
 }
-EXPORT_SYMBOL_GPL(fsverity_prepare_setattr);
+EXPORT_SYMBOL_GPL(__fsverity_prepare_setattr);
 
-/**
- * fsverity_cleanup_inode() - free the inode's verity info, if present
- * @inode: an inode being evicted
- *
- * Filesystems must call this on inode eviction to free ->i_verity_info.
- */
-void fsverity_cleanup_inode(struct inode *inode)
+void __fsverity_cleanup_inode(struct inode *inode)
 {
 	fsverity_free_info(inode->i_verity_info);
 	inode->i_verity_info = NULL;
 }
-EXPORT_SYMBOL_GPL(fsverity_cleanup_inode);
+EXPORT_SYMBOL_GPL(__fsverity_cleanup_inode);
 
 int __init fsverity_init_info_cache(void)
 {
diff --git a/fs/verity/signature.c b/fs/verity/signature.c
index 143a530..24fa6f4 100644
--- a/fs/verity/signature.c
+++ b/fs/verity/signature.c
@@ -40,11 +40,38 @@ static struct key *fsverity_keyring;
 int fsverity_verify_signature(const struct fsverity_info *vi,
 			      const u8 *signature, size_t sig_size)
 {
-	const struct inode *inode = vi->inode;
-	const struct fsverity_hash_alg *hash_alg = vi->tree_params.hash_alg;
+	unsigned int digest_algorithm =
+		vi->tree_params.hash_alg - fsverity_hash_algs;
+
+	return __fsverity_verify_signature(vi->inode, signature, sig_size,
+					   vi->file_digest, digest_algorithm);
+}
+
+/**
+ * __fsverity_verify_signature() - check a verity file's signature
+ * @inode: the file's inode
+ * @signature: the file's signature
+ * @sig_size: size of @signature. Can be 0 if there is no signature
+ * @file_digest: the file's digest
+ * @digest_algorithm: the digest algorithm used
+ *
+ * Takes the file's digest and optional signature and verifies the signature
+ * against the digest and the fs-verity keyring if appropriate
+ *
+ * Return: 0 on success (signature valid or not required); -errno on failure
+ */
+int __fsverity_verify_signature(const struct inode *inode, const u8 *signature,
+				size_t sig_size, const u8 *file_digest,
+				unsigned int digest_algorithm)
+{
 	struct fsverity_formatted_digest *d;
+	struct fsverity_hash_alg *hash_alg = fsverity_get_hash_alg(inode,
+							digest_algorithm);
 	int err;
 
+	if (IS_ERR(hash_alg))
+		return PTR_ERR(hash_alg);
+
 	if (sig_size == 0) {
 		if (fsverity_require_signatures) {
 			fsverity_err(inode,
@@ -60,7 +87,7 @@ int fsverity_verify_signature(const struct fsverity_info *vi,
 	memcpy(d->magic, "FSVerity", 8);
 	d->digest_algorithm = cpu_to_le16(hash_alg - fsverity_hash_algs);
 	d->digest_size = cpu_to_le16(hash_alg->digest_size);
-	memcpy(d->digest, vi->file_digest, hash_alg->digest_size);
+	memcpy(d->digest, file_digest, hash_alg->digest_size);
 
 	err = verify_pkcs7_signature(d, sizeof(*d) + hash_alg->digest_size,
 				     signature, sig_size, fsverity_keyring,
@@ -82,10 +109,9 @@ int fsverity_verify_signature(const struct fsverity_info *vi,
 		return err;
 	}
 
-	pr_debug("Valid signature for file digest %s:%*phN\n",
-		 hash_alg->name, hash_alg->digest_size, vi->file_digest);
 	return 0;
 }
+EXPORT_SYMBOL_GPL(__fsverity_verify_signature);
 
 #ifdef CONFIG_SYSCTL
 static struct ctl_table_header *fsverity_sysctl_header;
diff --git a/fs/verity/verify.c b/fs/verity/verify.c
index e23d382..e250822 100644
--- a/fs/verity/verify.c
+++ b/fs/verity/verify.c
@@ -9,39 +9,12 @@
 
 #include <crypto/hash.h>
 #include <linux/bio.h>
-#include <linux/ratelimit.h>
 
 static struct workqueue_struct *fsverity_read_workqueue;
 
-/**
- * hash_at_level() - compute the location of the block's hash at the given level
- *
- * @params:	(in) the Merkle tree parameters
- * @dindex:	(in) the index of the data block being verified
- * @level:	(in) the level of hash we want (0 is leaf level)
- * @hindex:	(out) the index of the hash block containing the wanted hash
- * @hoffset:	(out) the byte offset to the wanted hash within the hash block
- */
-static void hash_at_level(const struct merkle_tree_params *params,
-			  pgoff_t dindex, unsigned int level, pgoff_t *hindex,
-			  unsigned int *hoffset)
-{
-	pgoff_t position;
-
-	/* Offset of the hash within the level's region, in hashes */
-	position = dindex >> (level * params->log_arity);
-
-	/* Index of the hash block in the tree overall */
-	*hindex = params->level_start[level] + (position >> params->log_arity);
-
-	/* Offset of the wanted hash (in bytes) within the hash block */
-	*hoffset = (position & ((1 << params->log_arity) - 1)) <<
-		   (params->log_blocksize - params->log_arity);
-}
-
 static inline int cmp_hashes(const struct fsverity_info *vi,
 			     const u8 *want_hash, const u8 *real_hash,
-			     pgoff_t index, int level)
+			     u64 data_pos, int level)
 {
 	const unsigned int hsize = vi->tree_params.digest_size;
 
@@ -49,160 +22,312 @@ static inline int cmp_hashes(const struct fsverity_info *vi,
 		return 0;
 
 	fsverity_err(vi->inode,
-		     "FILE CORRUPTED! index=%lu, level=%d, want_hash=%s:%*phN, real_hash=%s:%*phN",
-		     index, level,
+		     "FILE CORRUPTED! pos=%llu, level=%d, want_hash=%s:%*phN, real_hash=%s:%*phN",
+		     data_pos, level,
 		     vi->tree_params.hash_alg->name, hsize, want_hash,
 		     vi->tree_params.hash_alg->name, hsize, real_hash);
 	return -EBADMSG;
 }
 
+static bool data_is_zeroed(struct inode *inode, struct page *page,
+			   unsigned int len, unsigned int offset)
+{
+	void *virt = kmap_local_page(page);
+
+	if (memchr_inv(virt + offset, 0, len)) {
+		kunmap_local(virt);
+		fsverity_err(inode,
+			     "FILE CORRUPTED!  Data past EOF is not zeroed");
+		return false;
+	}
+	kunmap_local(virt);
+	return true;
+}
+
 /*
- * Verify a single data page against the file's Merkle tree.
+ * Returns true if the hash block with index @hblock_idx in the tree, located in
+ * @hpage, has already been verified.
+ */
+static bool is_hash_block_verified(struct fsverity_info *vi, struct page *hpage,
+				   unsigned long hblock_idx)
+{
+	bool verified;
+	unsigned int blocks_per_page;
+	unsigned int i;
+
+	/*
+	 * When the Merkle tree block size and page size are the same, then the
+	 * ->hash_block_verified bitmap isn't allocated, and we use PG_checked
+	 * to directly indicate whether the page's block has been verified.
+	 *
+	 * Using PG_checked also guarantees that we re-verify hash pages that
+	 * get evicted and re-instantiated from the backing storage, as new
+	 * pages always start out with PG_checked cleared.
+	 */
+	if (!vi->hash_block_verified)
+		return PageChecked(hpage);
+
+	/*
+	 * When the Merkle tree block size and page size differ, we use a bitmap
+	 * to indicate whether each hash block has been verified.
+	 *
+	 * However, we still need to ensure that hash pages that get evicted and
+	 * re-instantiated from the backing storage are re-verified.  To do
+	 * this, we use PG_checked again, but now it doesn't really mean
+	 * "checked".  Instead, now it just serves as an indicator for whether
+	 * the hash page is newly instantiated or not.
+	 *
+	 * The first thread that sees PG_checked=0 must clear the corresponding
+	 * bitmap bits, then set PG_checked=1.  This requires a spinlock.  To
+	 * avoid having to take this spinlock in the common case of
+	 * PG_checked=1, we start with an opportunistic lockless read.
+	 */
+	if (PageChecked(hpage)) {
+		/*
+		 * A read memory barrier is needed here to give ACQUIRE
+		 * semantics to the above PageChecked() test.
+		 */
+		smp_rmb();
+		return test_bit(hblock_idx, vi->hash_block_verified);
+	}
+	spin_lock(&vi->hash_page_init_lock);
+	if (PageChecked(hpage)) {
+		verified = test_bit(hblock_idx, vi->hash_block_verified);
+	} else {
+		blocks_per_page = vi->tree_params.blocks_per_page;
+		hblock_idx = round_down(hblock_idx, blocks_per_page);
+		for (i = 0; i < blocks_per_page; i++)
+			clear_bit(hblock_idx + i, vi->hash_block_verified);
+		/*
+		 * A write memory barrier is needed here to give RELEASE
+		 * semantics to the below SetPageChecked() operation.
+		 */
+		smp_wmb();
+		SetPageChecked(hpage);
+		verified = false;
+	}
+	spin_unlock(&vi->hash_page_init_lock);
+	return verified;
+}
+
+/*
+ * Verify a single data block against the file's Merkle tree.
  *
  * In principle, we need to verify the entire path to the root node.  However,
- * for efficiency the filesystem may cache the hash pages.  Therefore we need
- * only ascend the tree until an already-verified page is seen, as indicated by
- * the PageChecked bit being set; then verify the path to that page.
+ * for efficiency the filesystem may cache the hash blocks.  Therefore we need
+ * only ascend the tree until an already-verified hash block is seen, and then
+ * verify the path to that block.
  *
- * This code currently only supports the case where the verity block size is
- * equal to PAGE_SIZE.  Doing otherwise would be possible but tricky, since we
- * wouldn't be able to use the PageChecked bit.
- *
- * Note that multiple processes may race to verify a hash page and mark it
- * Checked, but it doesn't matter; the result will be the same either way.
- *
- * Return: true if the page is valid, else false.
+ * Return: %true if the data block is valid, else %false.
  */
-static bool verify_page(struct inode *inode, const struct fsverity_info *vi,
-			struct ahash_request *req, struct page *data_page,
-			unsigned long level0_ra_pages)
+static bool
+verify_data_block(struct inode *inode, struct fsverity_info *vi,
+		  struct ahash_request *req, struct page *data_page,
+		  u64 data_pos, unsigned int dblock_offset_in_page,
+		  unsigned long max_ra_pages)
 {
 	const struct merkle_tree_params *params = &vi->tree_params;
 	const unsigned int hsize = params->digest_size;
-	const pgoff_t index = data_page->index;
 	int level;
 	u8 _want_hash[FS_VERITY_MAX_DIGEST_SIZE];
 	const u8 *want_hash;
 	u8 real_hash[FS_VERITY_MAX_DIGEST_SIZE];
-	struct page *hpages[FS_VERITY_MAX_LEVELS];
-	unsigned int hoffsets[FS_VERITY_MAX_LEVELS];
+	/* The hash blocks that are traversed, indexed by level */
+	struct {
+		/* Page containing the hash block */
+		struct page *page;
+		/* Index of the hash block in the tree overall */
+		unsigned long index;
+		/* Byte offset of the hash block within @page */
+		unsigned int offset_in_page;
+		/* Byte offset of the wanted hash within @page */
+		unsigned int hoffset;
+	} hblocks[FS_VERITY_MAX_LEVELS];
+	/*
+	 * The index of the previous level's block within that level; also the
+	 * index of that block's hash within the current level.
+	 */
+	u64 hidx = data_pos >> params->log_blocksize;
 	int err;
 
-	if (WARN_ON_ONCE(!PageLocked(data_page) || PageUptodate(data_page)))
-		return false;
-
-	pr_debug_ratelimited("Verifying data page %lu...\n", index);
+	if (unlikely(data_pos >= inode->i_size)) {
+		/*
+		 * This can happen in the data page spanning EOF when the Merkle
+		 * tree block size is less than the page size.  The Merkle tree
+		 * doesn't cover data blocks fully past EOF.  But the entire
+		 * page spanning EOF can be visible to userspace via a mmap, and
+		 * any part past EOF should be all zeroes.  Therefore, we need
+		 * to verify that any data blocks fully past EOF are all zeroes.
+		 */
+		return data_is_zeroed(inode, data_page, params->block_size,
+				      dblock_offset_in_page);
+	}
 
 	/*
-	 * Starting at the leaf level, ascend the tree saving hash pages along
-	 * the way until we find a verified hash page, indicated by PageChecked;
-	 * or until we reach the root.
+	 * Starting at the leaf level, ascend the tree saving hash blocks along
+	 * the way until we find a hash block that has already been verified, or
+	 * until we reach the root.
 	 */
 	for (level = 0; level < params->num_levels; level++) {
-		pgoff_t hindex;
+		unsigned long next_hidx;
+		unsigned long hblock_idx;
+		pgoff_t hpage_idx;
+		unsigned int hblock_offset_in_page;
 		unsigned int hoffset;
 		struct page *hpage;
 
-		hash_at_level(params, index, level, &hindex, &hoffset);
+		/*
+		 * The index of the block in the current level; also the index
+		 * of that block's hash within the next level.
+		 */
+		next_hidx = hidx >> params->log_arity;
 
-		pr_debug_ratelimited("Level %d: hindex=%lu, hoffset=%u\n",
-				     level, hindex, hoffset);
+		/* Index of the hash block in the tree overall */
+		hblock_idx = params->level_start[level] + next_hidx;
 
-		hpage = inode->i_sb->s_vop->read_merkle_tree_page(inode, hindex,
-				level == 0 ? level0_ra_pages : 0);
+		/* Index of the hash page in the tree overall */
+		hpage_idx = hblock_idx >> params->log_blocks_per_page;
+
+		/* Byte offset of the hash block within the page */
+		hblock_offset_in_page =
+			(hblock_idx << params->log_blocksize) & ~PAGE_MASK;
+
+		/* Byte offset of the hash within the page */
+		hoffset = hblock_offset_in_page +
+			  ((hidx << params->log_digestsize) &
+			   (params->block_size - 1));
+
+		hpage = inode->i_sb->s_vop->read_merkle_tree_page(inode,
+				hpage_idx, level == 0 ? min(max_ra_pages,
+					params->tree_pages - hpage_idx) : 0);
 		if (IS_ERR(hpage)) {
 			err = PTR_ERR(hpage);
 			fsverity_err(inode,
 				     "Error %d reading Merkle tree page %lu",
-				     err, hindex);
+				     err, hpage_idx);
 			goto out;
 		}
-
-		if (PageChecked(hpage)) {
+		if (is_hash_block_verified(vi, hpage, hblock_idx)) {
 			memcpy_from_page(_want_hash, hpage, hoffset, hsize);
 			want_hash = _want_hash;
 			put_page(hpage);
-			pr_debug_ratelimited("Hash page already checked, want %s:%*phN\n",
-					     params->hash_alg->name,
-					     hsize, want_hash);
 			goto descend;
 		}
-		pr_debug_ratelimited("Hash page not yet checked\n");
-		hpages[level] = hpage;
-		hoffsets[level] = hoffset;
+		hblocks[level].page = hpage;
+		hblocks[level].index = hblock_idx;
+		hblocks[level].offset_in_page = hblock_offset_in_page;
+		hblocks[level].hoffset = hoffset;
+		hidx = next_hidx;
 	}
 
 	want_hash = vi->root_hash;
-	pr_debug("Want root hash: %s:%*phN\n",
-		 params->hash_alg->name, hsize, want_hash);
 descend:
-	/* Descend the tree verifying hash pages */
+	/* Descend the tree verifying hash blocks. */
 	for (; level > 0; level--) {
-		struct page *hpage = hpages[level - 1];
-		unsigned int hoffset = hoffsets[level - 1];
+		struct page *hpage = hblocks[level - 1].page;
+		unsigned long hblock_idx = hblocks[level - 1].index;
+		unsigned int hblock_offset_in_page =
+			hblocks[level - 1].offset_in_page;
+		unsigned int hoffset = hblocks[level - 1].hoffset;
 
-		err = fsverity_hash_page(params, inode, req, hpage, real_hash);
+		err = fsverity_hash_block(params, inode, req, hpage,
+					  hblock_offset_in_page, real_hash);
 		if (err)
 			goto out;
-		err = cmp_hashes(vi, want_hash, real_hash, index, level - 1);
+		err = cmp_hashes(vi, want_hash, real_hash, data_pos, level - 1);
 		if (err)
 			goto out;
-		SetPageChecked(hpage);
+		/*
+		 * Mark the hash block as verified.  This must be atomic and
+		 * idempotent, as the same hash block might be verified by
+		 * multiple threads concurrently.
+		 */
+		if (vi->hash_block_verified)
+			set_bit(hblock_idx, vi->hash_block_verified);
+		else
+			SetPageChecked(hpage);
 		memcpy_from_page(_want_hash, hpage, hoffset, hsize);
 		want_hash = _want_hash;
 		put_page(hpage);
-		pr_debug("Verified hash page at level %d, now want %s:%*phN\n",
-			 level - 1, params->hash_alg->name, hsize, want_hash);
 	}
 
-	/* Finally, verify the data page */
-	err = fsverity_hash_page(params, inode, req, data_page, real_hash);
+	/* Finally, verify the data block. */
+	err = fsverity_hash_block(params, inode, req, data_page,
+				  dblock_offset_in_page, real_hash);
 	if (err)
 		goto out;
-	err = cmp_hashes(vi, want_hash, real_hash, index, -1);
+	err = cmp_hashes(vi, want_hash, real_hash, data_pos, -1);
 out:
 	for (; level > 0; level--)
-		put_page(hpages[level - 1]);
+		put_page(hblocks[level - 1].page);
 
 	return err == 0;
 }
 
-/**
- * fsverity_verify_page() - verify a data page
- * @page: the page to verity
- *
- * Verify a page that has just been read from a verity file.  The page must be a
- * pagecache page that is still locked and not yet uptodate.
- *
- * Return: true if the page is valid, else false.
- */
-bool fsverity_verify_page(struct page *page)
+static bool
+verify_data_blocks(struct inode *inode, struct fsverity_info *vi,
+		   struct ahash_request *req, struct folio *data_folio,
+		   size_t len, size_t offset, unsigned long max_ra_pages)
 {
-	struct inode *inode = page->mapping->host;
-	const struct fsverity_info *vi = inode->i_verity_info;
+	const unsigned int block_size = vi->tree_params.block_size;
+	u64 pos = (u64)data_folio->index << PAGE_SHIFT;
+
+	if (WARN_ON_ONCE(len <= 0 || !IS_ALIGNED(len | offset, block_size)))
+		return false;
+	if (WARN_ON_ONCE(!folio_test_locked(data_folio) ||
+			 folio_test_uptodate(data_folio)))
+		return false;
+	do {
+		struct page *data_page =
+			folio_page(data_folio, offset >> PAGE_SHIFT);
+
+		if (!verify_data_block(inode, vi, req, data_page, pos + offset,
+				       offset & ~PAGE_MASK, max_ra_pages))
+			return false;
+		offset += block_size;
+		len -= block_size;
+	} while (len);
+	return true;
+}
+
+/**
+ * fsverity_verify_blocks() - verify data in a folio
+ * @folio: the folio containing the data to verify
+ * @len: the length of the data to verify in the folio
+ * @offset: the offset of the data to verify in the folio
+ *
+ * Verify data that has just been read from a verity file.  The data must be
+ * located in a pagecache folio that is still locked and not yet uptodate.  The
+ * length and offset of the data must be Merkle tree block size aligned.
+ *
+ * Return: %true if the data is valid, else %false.
+ */
+bool fsverity_verify_blocks(struct folio *folio, size_t len, size_t offset)
+{
+	struct inode *inode = folio->mapping->host;
+	struct fsverity_info *vi = inode->i_verity_info;
 	struct ahash_request *req;
 	bool valid;
 
 	/* This allocation never fails, since it's mempool-backed. */
 	req = fsverity_alloc_hash_request(vi->tree_params.hash_alg, GFP_NOFS);
 
-	valid = verify_page(inode, vi, req, page, 0);
+	valid = verify_data_blocks(inode, vi, req, folio, len, offset, 0);
 
 	fsverity_free_hash_request(vi->tree_params.hash_alg, req);
 
 	return valid;
 }
-EXPORT_SYMBOL_GPL(fsverity_verify_page);
+EXPORT_SYMBOL_GPL(fsverity_verify_blocks);
 
 #ifdef CONFIG_BLOCK
 /**
  * fsverity_verify_bio() - verify a 'read' bio that has just completed
  * @bio: the bio to verify
  *
- * Verify a set of pages that have just been read from a verity file.  The pages
- * must be pagecache pages that are still locked and not yet uptodate.  Pages
- * that fail verification are set to the Error state.  Verification is skipped
- * for pages already in the Error state, e.g. due to fscrypt decryption failure.
+ * Verify the bio's data against the file's Merkle tree.  All bio data segments
+ * must be aligned to the file's Merkle tree block size.  If any data fails
+ * verification, then bio->bi_status is set to an error status.
  *
  * This is a helper function for use by the ->readahead() method of filesystems
  * that issue bios to read data directly into the page cache.  Filesystems that
@@ -213,15 +338,13 @@ EXPORT_SYMBOL_GPL(fsverity_verify_page);
 void fsverity_verify_bio(struct bio *bio)
 {
 	struct inode *inode = bio_first_page_all(bio)->mapping->host;
-	const struct fsverity_info *vi = inode->i_verity_info;
-	const struct merkle_tree_params *params = &vi->tree_params;
+	struct fsverity_info *vi = inode->i_verity_info;
 	struct ahash_request *req;
-	struct bio_vec *bv;
-	struct bvec_iter_all iter_all;
+	struct folio_iter fi;
 	unsigned long max_ra_pages = 0;
 
 	/* This allocation never fails, since it's mempool-backed. */
-	req = fsverity_alloc_hash_request(params->hash_alg, GFP_NOFS);
+	req = fsverity_alloc_hash_request(vi->tree_params.hash_alg, GFP_NOFS);
 
 	if (bio->bi_opf & REQ_RAHEAD) {
 		/*
@@ -233,23 +356,18 @@ void fsverity_verify_bio(struct bio *bio)
 		 * This improves sequential read performance, as it greatly
 		 * reduces the number of I/O requests made to the Merkle tree.
 		 */
-		bio_for_each_segment_all(bv, bio, iter_all)
-			max_ra_pages++;
-		max_ra_pages /= 4;
+		max_ra_pages = bio->bi_iter.bi_size >> (PAGE_SHIFT + 2);
 	}
 
-	bio_for_each_segment_all(bv, bio, iter_all) {
-		struct page *page = bv->bv_page;
-		unsigned long level0_index = page->index >> params->log_arity;
-		unsigned long level0_ra_pages =
-			min(max_ra_pages, params->level0_blocks - level0_index);
-
-		if (!PageError(page) &&
-		    !verify_page(inode, vi, req, page, level0_ra_pages))
-			SetPageError(page);
+	bio_for_each_folio_all(fi, bio) {
+		if (!verify_data_blocks(inode, vi, req, fi.folio, fi.length,
+					fi.offset, max_ra_pages)) {
+			bio->bi_status = BLK_STS_IOERR;
+			break;
+		}
 	}
 
-	fsverity_free_hash_request(params->hash_alg, req);
+	fsverity_free_hash_request(vi->tree_params.hash_alg, req);
 }
 EXPORT_SYMBOL_GPL(fsverity_verify_bio);
 #endif /* CONFIG_BLOCK */
diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c
index e462d39..cbd6d85 100644
--- a/fs/xfs/xfs_file.c
+++ b/fs/xfs/xfs_file.c
@@ -1429,7 +1429,7 @@ xfs_file_mmap(
 	file_accessed(file);
 	vma->vm_ops = &xfs_file_vm_ops;
 	if (IS_DAX(inode))
-		vma->vm_flags |= VM_HUGEPAGE;
+		vm_flags_set(vma, VM_HUGEPAGE);
 	return 0;
 }
 
diff --git a/include/asm-generic/io.h b/include/asm-generic/io.h
index cde032f..d78c305 100644
--- a/include/asm-generic/io.h
+++ b/include/asm-generic/io.h
@@ -80,24 +80,24 @@ DECLARE_TRACEPOINT(rwmmio_read);
 DECLARE_TRACEPOINT(rwmmio_post_read);
 
 void log_write_mmio(u64 val, u8 width, volatile void __iomem *addr,
-		    unsigned long caller_addr);
+		    unsigned long caller_addr, unsigned long caller_addr0);
 void log_post_write_mmio(u64 val, u8 width, volatile void __iomem *addr,
-			 unsigned long caller_addr);
+			 unsigned long caller_addr, unsigned long caller_addr0);
 void log_read_mmio(u8 width, const volatile void __iomem *addr,
-		   unsigned long caller_addr);
+		   unsigned long caller_addr, unsigned long caller_addr0);
 void log_post_read_mmio(u64 val, u8 width, const volatile void __iomem *addr,
-			unsigned long caller_addr);
+			unsigned long caller_addr, unsigned long caller_addr0);
 
 #else
 
 static inline void log_write_mmio(u64 val, u8 width, volatile void __iomem *addr,
-				  unsigned long caller_addr) {}
+				  unsigned long caller_addr, unsigned long caller_addr0) {}
 static inline void log_post_write_mmio(u64 val, u8 width, volatile void __iomem *addr,
-				       unsigned long caller_addr) {}
+				       unsigned long caller_addr, unsigned long caller_addr0) {}
 static inline void log_read_mmio(u8 width, const volatile void __iomem *addr,
-				 unsigned long caller_addr) {}
+				 unsigned long caller_addr, unsigned long caller_addr0) {}
 static inline void log_post_read_mmio(u64 val, u8 width, const volatile void __iomem *addr,
-				      unsigned long caller_addr) {}
+				      unsigned long caller_addr, unsigned long caller_addr0) {}
 
 #endif /* CONFIG_TRACE_MMIO_ACCESS */
 
@@ -188,11 +188,11 @@ static inline u8 readb(const volatile void __iomem *addr)
 {
 	u8 val;
 
-	log_read_mmio(8, addr, _THIS_IP_);
+	log_read_mmio(8, addr, _THIS_IP_, _RET_IP_);
 	__io_br();
 	val = __raw_readb(addr);
 	__io_ar(val);
-	log_post_read_mmio(val, 8, addr, _THIS_IP_);
+	log_post_read_mmio(val, 8, addr, _THIS_IP_, _RET_IP_);
 	return val;
 }
 #endif
@@ -203,11 +203,11 @@ static inline u16 readw(const volatile void __iomem *addr)
 {
 	u16 val;
 
-	log_read_mmio(16, addr, _THIS_IP_);
+	log_read_mmio(16, addr, _THIS_IP_, _RET_IP_);
 	__io_br();
 	val = __le16_to_cpu((__le16 __force)__raw_readw(addr));
 	__io_ar(val);
-	log_post_read_mmio(val, 16, addr, _THIS_IP_);
+	log_post_read_mmio(val, 16, addr, _THIS_IP_, _RET_IP_);
 	return val;
 }
 #endif
@@ -218,11 +218,11 @@ static inline u32 readl(const volatile void __iomem *addr)
 {
 	u32 val;
 
-	log_read_mmio(32, addr, _THIS_IP_);
+	log_read_mmio(32, addr, _THIS_IP_, _RET_IP_);
 	__io_br();
 	val = __le32_to_cpu((__le32 __force)__raw_readl(addr));
 	__io_ar(val);
-	log_post_read_mmio(val, 32, addr, _THIS_IP_);
+	log_post_read_mmio(val, 32, addr, _THIS_IP_, _RET_IP_);
 	return val;
 }
 #endif
@@ -234,11 +234,11 @@ static inline u64 readq(const volatile void __iomem *addr)
 {
 	u64 val;
 
-	log_read_mmio(64, addr, _THIS_IP_);
+	log_read_mmio(64, addr, _THIS_IP_, _RET_IP_);
 	__io_br();
 	val = __le64_to_cpu((__le64 __force)__raw_readq(addr));
 	__io_ar(val);
-	log_post_read_mmio(val, 64, addr, _THIS_IP_);
+	log_post_read_mmio(val, 64, addr, _THIS_IP_, _RET_IP_);
 	return val;
 }
 #endif
@@ -248,11 +248,11 @@ static inline u64 readq(const volatile void __iomem *addr)
 #define writeb writeb
 static inline void writeb(u8 value, volatile void __iomem *addr)
 {
-	log_write_mmio(value, 8, addr, _THIS_IP_);
+	log_write_mmio(value, 8, addr, _THIS_IP_, _RET_IP_);
 	__io_bw();
 	__raw_writeb(value, addr);
 	__io_aw();
-	log_post_write_mmio(value, 8, addr, _THIS_IP_);
+	log_post_write_mmio(value, 8, addr, _THIS_IP_, _RET_IP_);
 }
 #endif
 
@@ -260,11 +260,11 @@ static inline void writeb(u8 value, volatile void __iomem *addr)
 #define writew writew
 static inline void writew(u16 value, volatile void __iomem *addr)
 {
-	log_write_mmio(value, 16, addr, _THIS_IP_);
+	log_write_mmio(value, 16, addr, _THIS_IP_, _RET_IP_);
 	__io_bw();
 	__raw_writew((u16 __force)cpu_to_le16(value), addr);
 	__io_aw();
-	log_post_write_mmio(value, 16, addr, _THIS_IP_);
+	log_post_write_mmio(value, 16, addr, _THIS_IP_, _RET_IP_);
 }
 #endif
 
@@ -272,11 +272,11 @@ static inline void writew(u16 value, volatile void __iomem *addr)
 #define writel writel
 static inline void writel(u32 value, volatile void __iomem *addr)
 {
-	log_write_mmio(value, 32, addr, _THIS_IP_);
+	log_write_mmio(value, 32, addr, _THIS_IP_, _RET_IP_);
 	__io_bw();
 	__raw_writel((u32 __force)__cpu_to_le32(value), addr);
 	__io_aw();
-	log_post_write_mmio(value, 32, addr, _THIS_IP_);
+	log_post_write_mmio(value, 32, addr, _THIS_IP_, _RET_IP_);
 }
 #endif
 
@@ -285,11 +285,11 @@ static inline void writel(u32 value, volatile void __iomem *addr)
 #define writeq writeq
 static inline void writeq(u64 value, volatile void __iomem *addr)
 {
-	log_write_mmio(value, 64, addr, _THIS_IP_);
+	log_write_mmio(value, 64, addr, _THIS_IP_, _RET_IP_);
 	__io_bw();
 	__raw_writeq((u64 __force)__cpu_to_le64(value), addr);
 	__io_aw();
-	log_post_write_mmio(value, 64, addr, _THIS_IP_);
+	log_post_write_mmio(value, 64, addr, _THIS_IP_, _RET_IP_);
 }
 #endif
 #endif /* CONFIG_64BIT */
@@ -305,9 +305,9 @@ static inline u8 readb_relaxed(const volatile void __iomem *addr)
 {
 	u8 val;
 
-	log_read_mmio(8, addr, _THIS_IP_);
+	log_read_mmio(8, addr, _THIS_IP_, _RET_IP_);
 	val = __raw_readb(addr);
-	log_post_read_mmio(val, 8, addr, _THIS_IP_);
+	log_post_read_mmio(val, 8, addr, _THIS_IP_, _RET_IP_);
 	return val;
 }
 #endif
@@ -318,9 +318,9 @@ static inline u16 readw_relaxed(const volatile void __iomem *addr)
 {
 	u16 val;
 
-	log_read_mmio(16, addr, _THIS_IP_);
+	log_read_mmio(16, addr, _THIS_IP_, _RET_IP_);
 	val = __le16_to_cpu(__raw_readw(addr));
-	log_post_read_mmio(val, 16, addr, _THIS_IP_);
+	log_post_read_mmio(val, 16, addr, _THIS_IP_, _RET_IP_);
 	return val;
 }
 #endif
@@ -331,9 +331,9 @@ static inline u32 readl_relaxed(const volatile void __iomem *addr)
 {
 	u32 val;
 
-	log_read_mmio(32, addr, _THIS_IP_);
+	log_read_mmio(32, addr, _THIS_IP_, _RET_IP_);
 	val = __le32_to_cpu(__raw_readl(addr));
-	log_post_read_mmio(val, 32, addr, _THIS_IP_);
+	log_post_read_mmio(val, 32, addr, _THIS_IP_, _RET_IP_);
 	return val;
 }
 #endif
@@ -344,9 +344,9 @@ static inline u64 readq_relaxed(const volatile void __iomem *addr)
 {
 	u64 val;
 
-	log_read_mmio(64, addr, _THIS_IP_);
+	log_read_mmio(64, addr, _THIS_IP_, _RET_IP_);
 	val = __le64_to_cpu(__raw_readq(addr));
-	log_post_read_mmio(val, 64, addr, _THIS_IP_);
+	log_post_read_mmio(val, 64, addr, _THIS_IP_, _RET_IP_);
 	return val;
 }
 #endif
@@ -355,9 +355,9 @@ static inline u64 readq_relaxed(const volatile void __iomem *addr)
 #define writeb_relaxed writeb_relaxed
 static inline void writeb_relaxed(u8 value, volatile void __iomem *addr)
 {
-	log_write_mmio(value, 8, addr, _THIS_IP_);
+	log_write_mmio(value, 8, addr, _THIS_IP_, _RET_IP_);
 	__raw_writeb(value, addr);
-	log_post_write_mmio(value, 8, addr, _THIS_IP_);
+	log_post_write_mmio(value, 8, addr, _THIS_IP_, _RET_IP_);
 }
 #endif
 
@@ -365,9 +365,9 @@ static inline void writeb_relaxed(u8 value, volatile void __iomem *addr)
 #define writew_relaxed writew_relaxed
 static inline void writew_relaxed(u16 value, volatile void __iomem *addr)
 {
-	log_write_mmio(value, 16, addr, _THIS_IP_);
+	log_write_mmio(value, 16, addr, _THIS_IP_, _RET_IP_);
 	__raw_writew(cpu_to_le16(value), addr);
-	log_post_write_mmio(value, 16, addr, _THIS_IP_);
+	log_post_write_mmio(value, 16, addr, _THIS_IP_, _RET_IP_);
 }
 #endif
 
@@ -375,9 +375,9 @@ static inline void writew_relaxed(u16 value, volatile void __iomem *addr)
 #define writel_relaxed writel_relaxed
 static inline void writel_relaxed(u32 value, volatile void __iomem *addr)
 {
-	log_write_mmio(value, 32, addr, _THIS_IP_);
+	log_write_mmio(value, 32, addr, _THIS_IP_, _RET_IP_);
 	__raw_writel(__cpu_to_le32(value), addr);
-	log_post_write_mmio(value, 32, addr, _THIS_IP_);
+	log_post_write_mmio(value, 32, addr, _THIS_IP_, _RET_IP_);
 }
 #endif
 
@@ -385,9 +385,9 @@ static inline void writel_relaxed(u32 value, volatile void __iomem *addr)
 #define writeq_relaxed writeq_relaxed
 static inline void writeq_relaxed(u64 value, volatile void __iomem *addr)
 {
-	log_write_mmio(value, 64, addr, _THIS_IP_);
+	log_write_mmio(value, 64, addr, _THIS_IP_, _RET_IP_);
 	__raw_writeq(__cpu_to_le64(value), addr);
-	log_post_write_mmio(value, 64, addr, _THIS_IP_);
+	log_post_write_mmio(value, 64, addr, _THIS_IP_, _RET_IP_);
 }
 #endif
 
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
index 7ad6f51..df00ebe 100644
--- a/include/asm-generic/vmlinux.lds.h
+++ b/include/asm-generic/vmlinux.lds.h
@@ -1032,14 +1032,19 @@
  * keep any .init_array.* sections.
  * https://bugs.llvm.org/show_bug.cgi?id=46478
  */
+#ifdef CONFIG_UNWIND_TABLES
+#define DISCARD_EH_FRAME
+#else
+#define DISCARD_EH_FRAME	*(.eh_frame)
+#endif
 #if defined(CONFIG_GCOV_KERNEL) || defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KCSAN)
 # ifdef CONFIG_CONSTRUCTORS
 #  define SANITIZER_DISCARDS						\
-	*(.eh_frame)
+	DISCARD_EH_FRAME
 # else
 #  define SANITIZER_DISCARDS						\
 	*(.init_array) *(.init_array.*)					\
-	*(.eh_frame)
+	DISCARD_EH_FRAME
 # endif
 #else
 # define SANITIZER_DISCARDS
diff --git a/include/drm/drm_mode_object.h b/include/drm/drm_mode_object.h
index 912f1e4..08d7a7f 100644
--- a/include/drm/drm_mode_object.h
+++ b/include/drm/drm_mode_object.h
@@ -60,7 +60,7 @@ struct drm_mode_object {
 	void (*free_cb)(struct kref *kref);
 };
 
-#define DRM_OBJECT_MAX_PROPERTY 24
+#define DRM_OBJECT_MAX_PROPERTY 64
 /**
  * struct drm_object_properties - property tracking for &drm_mode_object
  */
diff --git a/include/kvm/arm_psci.h b/include/kvm/arm_psci.h
index 6e55b92..8170930 100644
--- a/include/kvm/arm_psci.h
+++ b/include/kvm/arm_psci.h
@@ -36,6 +36,35 @@ static inline int kvm_psci_version(struct kvm_vcpu *vcpu)
 	return KVM_ARM_PSCI_0_1;
 }
 
+/* Narrow the PSCI register arguments (r1 to r3) to 32 bits. */
+static inline void kvm_psci_narrow_to_32bit(struct kvm_vcpu *vcpu)
+{
+	int i;
+
+	/*
+	 * Zero the input registers' upper 32 bits. They will be fully
+	 * zeroed on exit, so we're fine changing them in place.
+	 */
+	for (i = 1; i < 4; i++)
+		vcpu_set_reg(vcpu, i, lower_32_bits(vcpu_get_reg(vcpu, i)));
+}
+
+static inline bool kvm_psci_valid_affinity(struct kvm_vcpu *vcpu,
+					   unsigned long affinity)
+{
+	return !(affinity & ~MPIDR_HWID_BITMASK);
+}
+
+
+#define AFFINITY_MASK(level)	~((0x1UL << ((level) * MPIDR_LEVEL_BITS)) - 1)
+
+static inline unsigned long psci_affinity_mask(unsigned long affinity_level)
+{
+	if (affinity_level <= 3)
+		return MPIDR_HWID_BITMASK & AFFINITY_MASK(affinity_level);
+
+	return 0;
+}
 
 int kvm_psci_call(struct kvm_vcpu *vcpu);
 
diff --git a/include/kvm/arm_vgic.h b/include/kvm/arm_vgic.h
index 4df9e73..ffeffbc 100644
--- a/include/kvm/arm_vgic.h
+++ b/include/kvm/arm_vgic.h
@@ -384,8 +384,7 @@ bool kvm_vgic_map_is_active(struct kvm_vcpu *vcpu, unsigned int vintid);
 int kvm_vgic_vcpu_pending_irq(struct kvm_vcpu *vcpu);
 
 void kvm_vgic_load(struct kvm_vcpu *vcpu);
-void kvm_vgic_put(struct kvm_vcpu *vcpu);
-void kvm_vgic_vmcr_sync(struct kvm_vcpu *vcpu);
+void kvm_vgic_put(struct kvm_vcpu *vcpu, bool blocking);
 
 #define irqchip_in_kernel(k)	(!!((k)->arch.vgic.in_kernel))
 #define vgic_initialized(k)	((k)->arch.vgic.initialized)
diff --git a/include/linux/amba/bus.h b/include/linux/amba/bus.h
index 5001e14..9a3bcfa 100644
--- a/include/linux/amba/bus.h
+++ b/include/linux/amba/bus.h
@@ -17,6 +17,7 @@
 #include <linux/err.h>
 #include <linux/resource.h>
 #include <linux/regulator/consumer.h>
+#include <linux/android_kabi.h>
 
 #define AMBA_NR_IRQS	9
 #define AMBA_CID	0xb105f00d
@@ -76,6 +77,8 @@ struct amba_device {
 	 * frees it.  Use driver_set_override() to set or clear it.
 	 */
 	const char		*driver_override;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct amba_driver {
@@ -92,6 +95,8 @@ struct amba_driver {
 	 * to setup and manage their own I/O address space.
 	 */
 	bool driver_managed_dma;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /*
diff --git a/include/linux/android_kabi.h b/include/linux/android_kabi.h
new file mode 100644
index 0000000..f6dd7f0
--- /dev/null
+++ b/include/linux/android_kabi.h
@@ -0,0 +1,117 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * android_kabi.h - Android kernel abi abstraction header
+ *
+ * Copyright (C) 2020 Google, Inc.
+ *
+ * Heavily influenced by rh_kabi.h which came from the RHEL/CENTOS kernel and
+ * was:
+ *	Copyright (c) 2014 Don Zickus
+ *	Copyright (c) 2015-2018 Jiri Benc
+ *	Copyright (c) 2015 Sabrina Dubroca, Hannes Frederic Sowa
+ *	Copyright (c) 2016-2018 Prarit Bhargava
+ *	Copyright (c) 2017 Paolo Abeni, Larry Woodman
+ *
+ * These macros are to be used to try to help alleviate future kernel abi
+ * changes that will occur as LTS and other kernel patches are merged into the
+ * tree during a period in which the kernel abi is wishing to not be disturbed.
+ *
+ * There are two times these macros should be used:
+ *  - Before the kernel abi is "frozen"
+ *    Padding can be added to various kernel structures that have in the past
+ *    been known to change over time.  That will give "room" in the structure
+ *    that can then be used when fields are added so that the structure size
+ *    will not change.
+ *
+ *  - After the kernel abi is "frozen"
+ *    If a structure's field is changed to a type that is identical in size to
+ *    the previous type, it can be changed with a union macro
+ *    If a field is added to a structure, the padding fields can be used to add
+ *    the new field in a "safe" way.
+ */
+#ifndef _ANDROID_KABI_H
+#define _ANDROID_KABI_H
+
+#include <linux/compiler.h>
+
+/*
+ * Worker macros, don't use these, use the ones without a leading '_'
+ */
+
+#define __ANDROID_KABI_CHECK_SIZE_ALIGN(_orig, _new)				\
+	union {									\
+		_Static_assert(sizeof(struct{_new;}) <= sizeof(struct{_orig;}),	\
+			       __FILE__ ":" __stringify(__LINE__) ": "		\
+			       __stringify(_new)				\
+			       " is larger than "				\
+			       __stringify(_orig) );				\
+		_Static_assert(__alignof__(struct{_new;}) <= __alignof__(struct{_orig;}),	\
+			       __FILE__ ":" __stringify(__LINE__) ": "		\
+			       __stringify(_orig)				\
+			       " is not aligned the same as "			\
+			       __stringify(_new) );				\
+	}
+
+#ifdef __GENKSYMS__
+
+#define _ANDROID_KABI_REPLACE(_orig, _new)		_orig
+
+#else
+
+#define _ANDROID_KABI_REPLACE(_orig, _new)			\
+	union {							\
+		_new;						\
+		struct {					\
+			_orig;					\
+		};						\
+		__ANDROID_KABI_CHECK_SIZE_ALIGN(_orig, _new);	\
+	}
+
+#endif /* __GENKSYMS__ */
+
+#define _ANDROID_KABI_RESERVE(n)		u64 android_kabi_reserved##n
+
+
+/*
+ * Macros to use _before_ the ABI is frozen
+ */
+
+/*
+ * ANDROID_KABI_RESERVE
+ *   Reserve some "padding" in a structure for potential future use.
+ *   This normally placed at the end of a structure.
+ *   number: the "number" of the padding variable in the structure.  Start with
+ *   1 and go up.
+ */
+#ifdef CONFIG_ANDROID_KABI_RESERVE
+#define ANDROID_KABI_RESERVE(number)	_ANDROID_KABI_RESERVE(number)
+#else
+#define ANDROID_KABI_RESERVE(number)
+#endif
+
+
+/*
+ * Macros to use _after_ the ABI is frozen
+ */
+
+/*
+ * ANDROID_KABI_USE(number, _new)
+ *   Use a previous padding entry that was defined with ANDROID_KABI_RESERVE
+ *   number: the previous "number" of the padding variable
+ *   _new: the variable to use now instead of the padding variable
+ */
+#define ANDROID_KABI_USE(number, _new)		\
+	_ANDROID_KABI_REPLACE(_ANDROID_KABI_RESERVE(number), _new)
+
+/*
+ * ANDROID_KABI_USE2(number, _new1, _new2)
+ *   Use a previous padding entry that was defined with ANDROID_KABI_RESERVE for
+ *   two new variables that fit into 64 bits.  This is good for when you do not
+ *   want to "burn" a 64bit padding variable for a smaller variable size if not
+ *   needed.
+ */
+#define ANDROID_KABI_USE2(number, _new1, _new2)			\
+	_ANDROID_KABI_REPLACE(_ANDROID_KABI_RESERVE(number), struct{ _new1; _new2; })
+
+
+#endif /* _ANDROID_KABI_H */
diff --git a/include/linux/android_vendor.h b/include/linux/android_vendor.h
new file mode 100644
index 0000000..03f8624
--- /dev/null
+++ b/include/linux/android_vendor.h
@@ -0,0 +1,88 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * android_vendor.h - Android vendor data
+ *
+ * Copyright 2020 Google LLC
+ *
+ * These macros are to be used to reserve space in kernel data structures
+ * for use by vendor modules.
+ *
+ * These macros should be used before the kernel abi is "frozen".
+ * Fields can be added to various kernel structures that need space
+ * for functionality implemented in vendor modules. The use of
+ * these fields is vendor specific.
+ */
+#ifndef _ANDROID_VENDOR_H
+#define _ANDROID_VENDOR_H
+
+#include "android_kabi.h"
+
+#define _ANDROID_BACKPORT_RESERVED(n)	u64 android_backport_reserved##n
+
+/*
+ * ANDROID_VENDOR_DATA
+ *   Reserve some "padding" in a structure for potential future use.
+ *   This normally placed at the end of a structure.
+ *   number: the "number" of the padding variable in the structure.  Start with
+ *   1 and go up.
+ *
+ * ANDROID_VENDOR_DATA_ARRAY
+ *   Same as ANDROID_VENDOR_DATA but allocates an array of u64 with
+ *   the specified size
+ *
+ * ANDROID_BACKPORT_RESERVED
+ *   Reserve some "padding" in a structure for potential future use while
+ *   backporting upstream changes. This normally placed at the end of a
+ *   structure.
+ *   number: the "number" of the padding variable in the structure.  Start with
+ *   1 and go up.
+ */
+#ifdef CONFIG_ANDROID_VENDOR_OEM_DATA
+#define ANDROID_VENDOR_DATA(n)		u64 android_vendor_data##n
+#define ANDROID_VENDOR_DATA_ARRAY(n, s)	u64 android_vendor_data##n[s]
+
+#define ANDROID_OEM_DATA(n)		u64 android_oem_data##n
+#define ANDROID_OEM_DATA_ARRAY(n, s)	u64 android_oem_data##n[s]
+#define ANDROID_BACKPORT_RESERVED(n)	_ANDROID_BACKPORT_RESERVED(n)
+
+#define android_init_vendor_data(p, n) \
+	memset(&p->android_vendor_data##n, 0, sizeof(p->android_vendor_data##n))
+#define android_init_oem_data(p, n) \
+	memset(&p->android_oem_data##n, 0, sizeof(p->android_oem_data##n))
+#else
+#define ANDROID_VENDOR_DATA(n)
+#define ANDROID_VENDOR_DATA_ARRAY(n, s)
+#define ANDROID_OEM_DATA(n)
+#define ANDROID_OEM_DATA_ARRAY(n, s)
+#define ANDROID_BACKPORT_RESERVED(n)
+
+#define android_init_vendor_data(p, n)
+#define android_init_oem_data(p, n)
+#endif
+
+
+/*
+ * Macros to use _after_ the ABI is frozen
+ */
+
+/*
+ * ANDROID_BACKPORT_RESERVED_USE(number, _new)
+ *   Use a previous padding entry that was defined with
+ *   ANDROID_BACKPORT_RESERVED
+ *   number: the previous "number" of the padding variable
+ *   _new: the variable to use now instead of the padding variable
+ */
+#define ANDROID_BACKPORT_RESERVED_USE(number, _new)		\
+	_ANDROID_KABI_REPLACE(_ANDROID_BACKPORT_RESERVED(number), _new)
+
+/*
+ * ANDROID_BACKPORT_RESERVED_USE2(number, _new1, _new2)
+ *   Use a previous padding entry that was defined with
+ *   ANDROID_BACKPORT_RESERVED for two new variables that fit into 64 bits.
+ *   This is good for when you do not want to "burn" a 64bit padding variable
+ *   for a smaller variable size if not needed.
+ */
+#define ANDROID_BACKPORT_RESERVED_USE2(number, _new1, _new2)			\
+	_ANDROID_KABI_REPLACE(_ANDROID_BACKPORT_RESERVED(number), struct{ _new1; _new2; })
+
+#endif /* _ANDROID_VENDOR_H */
diff --git a/include/linux/arch_topology.h b/include/linux/arch_topology.h
index a07b510..2fdd447 100644
--- a/include/linux/arch_topology.h
+++ b/include/linux/arch_topology.h
@@ -7,6 +7,7 @@
 
 #include <linux/types.h>
 #include <linux/percpu.h>
+#include <linux/android_vendor.h>
 
 void topology_normalize_cpu_scale(void);
 int topology_update_cpu_topology(void);
@@ -72,6 +73,8 @@ struct cpu_topology {
 	cpumask_t core_sibling;
 	cpumask_t cluster_sibling;
 	cpumask_t llc_sibling;
+
+	ANDROID_VENDOR_DATA_ARRAY(1, 1);
 };
 
 #ifdef CONFIG_GENERIC_ARCH_TOPOLOGY
@@ -93,5 +96,6 @@ void remove_cpu_topology(unsigned int cpuid);
 void reset_cpu_topology(void);
 int parse_acpi_topology(void);
 #endif
+extern bool topology_update_done;
 
 #endif /* _LINUX_ARCH_TOPOLOGY_H_ */
diff --git a/include/linux/arm-smccc.h b/include/linux/arm-smccc.h
index f196c19..b23906d 100644
--- a/include/linux/arm-smccc.h
+++ b/include/linux/arm-smccc.h
@@ -112,6 +112,14 @@
 /* KVM "vendor specific" services */
 #define ARM_SMCCC_KVM_FUNC_FEATURES		0
 #define ARM_SMCCC_KVM_FUNC_PTP			1
+#define ARM_SMCCC_KVM_FUNC_HYP_MEMINFO		2
+#define ARM_SMCCC_KVM_FUNC_MEM_SHARE		3
+#define ARM_SMCCC_KVM_FUNC_MEM_UNSHARE		4
+#define ARM_SMCCC_KVM_FUNC_MMIO_GUARD_INFO	5
+#define ARM_SMCCC_KVM_FUNC_MMIO_GUARD_ENROLL	6
+#define ARM_SMCCC_KVM_FUNC_MMIO_GUARD_MAP	7
+#define ARM_SMCCC_KVM_FUNC_MMIO_GUARD_UNMAP	8
+#define ARM_SMCCC_KVM_FUNC_MEM_RELINQUISH	9
 #define ARM_SMCCC_KVM_FUNC_FEATURES_2		127
 #define ARM_SMCCC_KVM_NUM_FUNCS			128
 
@@ -134,10 +142,58 @@
 			   ARM_SMCCC_OWNER_VENDOR_HYP,			\
 			   ARM_SMCCC_KVM_FUNC_PTP)
 
+#define ARM_SMCCC_VENDOR_HYP_KVM_HYP_MEMINFO_FUNC_ID			\
+	ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL,				\
+			   ARM_SMCCC_SMC_64,				\
+			   ARM_SMCCC_OWNER_VENDOR_HYP,			\
+			   ARM_SMCCC_KVM_FUNC_HYP_MEMINFO)
+
+#define ARM_SMCCC_VENDOR_HYP_KVM_MEM_SHARE_FUNC_ID			\
+	ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL,				\
+			   ARM_SMCCC_SMC_64,				\
+			   ARM_SMCCC_OWNER_VENDOR_HYP,			\
+			   ARM_SMCCC_KVM_FUNC_MEM_SHARE)
+
+#define ARM_SMCCC_VENDOR_HYP_KVM_MEM_UNSHARE_FUNC_ID			\
+	ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL,				\
+			   ARM_SMCCC_SMC_64,				\
+			   ARM_SMCCC_OWNER_VENDOR_HYP,			\
+			   ARM_SMCCC_KVM_FUNC_MEM_UNSHARE)
+
+#define ARM_SMCCC_VENDOR_HYP_KVM_MEM_RELINQUISH_FUNC_ID			\
+	ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL,				\
+			   ARM_SMCCC_SMC_64,				\
+			   ARM_SMCCC_OWNER_VENDOR_HYP,			\
+			   ARM_SMCCC_KVM_FUNC_MEM_RELINQUISH)
+
 /* ptp_kvm counter type ID */
 #define KVM_PTP_VIRT_COUNTER			0
 #define KVM_PTP_PHYS_COUNTER			1
 
+#define ARM_SMCCC_VENDOR_HYP_KVM_MMIO_GUARD_INFO_FUNC_ID		\
+	ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL,				\
+			   ARM_SMCCC_SMC_64,				\
+			   ARM_SMCCC_OWNER_VENDOR_HYP,			\
+			   ARM_SMCCC_KVM_FUNC_MMIO_GUARD_INFO)
+
+#define ARM_SMCCC_VENDOR_HYP_KVM_MMIO_GUARD_ENROLL_FUNC_ID		\
+	ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL,				\
+			   ARM_SMCCC_SMC_64,				\
+			   ARM_SMCCC_OWNER_VENDOR_HYP,			\
+			   ARM_SMCCC_KVM_FUNC_MMIO_GUARD_ENROLL)
+
+#define ARM_SMCCC_VENDOR_HYP_KVM_MMIO_GUARD_MAP_FUNC_ID			\
+	ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL,				\
+			   ARM_SMCCC_SMC_64,				\
+			   ARM_SMCCC_OWNER_VENDOR_HYP,			\
+			   ARM_SMCCC_KVM_FUNC_MMIO_GUARD_MAP)
+
+#define ARM_SMCCC_VENDOR_HYP_KVM_MMIO_GUARD_UNMAP_FUNC_ID		\
+	ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL,				\
+			   ARM_SMCCC_SMC_64,				\
+			   ARM_SMCCC_OWNER_VENDOR_HYP,			\
+			   ARM_SMCCC_KVM_FUNC_MMIO_GUARD_UNMAP)
+
 /* Paravirtualised time calls (defined by ARM DEN0057A) */
 #define ARM_SMCCC_HV_PV_TIME_FEATURES				\
 	ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL,			\
@@ -227,24 +283,6 @@ void __init arm_smccc_version_init(u32 version, enum arm_smccc_conduit conduit);
 extern u64 smccc_has_sve_hint;
 
 /**
- * arm_smccc_get_soc_id_version()
- *
- * Returns the SOC ID version.
- *
- * When ARM_SMCCC_ARCH_SOC_ID is not present, returns SMCCC_RET_NOT_SUPPORTED.
- */
-s32 arm_smccc_get_soc_id_version(void);
-
-/**
- * arm_smccc_get_soc_id_revision()
- *
- * Returns the SOC ID revision.
- *
- * When ARM_SMCCC_ARCH_SOC_ID is not present, returns SMCCC_RET_NOT_SUPPORTED.
- */
-s32 arm_smccc_get_soc_id_revision(void);
-
-/**
  * struct arm_smccc_res - Result from SMC/HVC call
  * @a0-a3 result values from registers 0 to 3
  */
diff --git a/include/linux/arm_ffa.h b/include/linux/arm_ffa.h
index c617b17..cc060da 100644
--- a/include/linux/arm_ffa.h
+++ b/include/linux/arm_ffa.h
@@ -11,6 +11,97 @@
 #include <linux/types.h>
 #include <linux/uuid.h>
 
+#define FFA_SMC(calling_convention, func_num)				\
+	ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL, (calling_convention),	\
+			   ARM_SMCCC_OWNER_STANDARD, (func_num))
+
+#define FFA_SMC_32(func_num)	FFA_SMC(ARM_SMCCC_SMC_32, (func_num))
+#define FFA_SMC_64(func_num)	FFA_SMC(ARM_SMCCC_SMC_64, (func_num))
+
+#define FFA_ERROR			FFA_SMC_32(0x60)
+#define FFA_SUCCESS			FFA_SMC_32(0x61)
+#define FFA_INTERRUPT			FFA_SMC_32(0x62)
+#define FFA_VERSION			FFA_SMC_32(0x63)
+#define FFA_FEATURES			FFA_SMC_32(0x64)
+#define FFA_RX_RELEASE			FFA_SMC_32(0x65)
+#define FFA_RXTX_MAP			FFA_SMC_32(0x66)
+#define FFA_FN64_RXTX_MAP		FFA_SMC_64(0x66)
+#define FFA_RXTX_UNMAP			FFA_SMC_32(0x67)
+#define FFA_PARTITION_INFO_GET		FFA_SMC_32(0x68)
+#define FFA_ID_GET			FFA_SMC_32(0x69)
+#define FFA_MSG_POLL			FFA_SMC_32(0x6A)
+#define FFA_MSG_WAIT			FFA_SMC_32(0x6B)
+#define FFA_YIELD			FFA_SMC_32(0x6C)
+#define FFA_RUN				FFA_SMC_32(0x6D)
+#define FFA_MSG_SEND			FFA_SMC_32(0x6E)
+#define FFA_MSG_SEND_DIRECT_REQ		FFA_SMC_32(0x6F)
+#define FFA_FN64_MSG_SEND_DIRECT_REQ	FFA_SMC_64(0x6F)
+#define FFA_MSG_SEND_DIRECT_RESP	FFA_SMC_32(0x70)
+#define FFA_FN64_MSG_SEND_DIRECT_RESP	FFA_SMC_64(0x70)
+#define FFA_MEM_DONATE			FFA_SMC_32(0x71)
+#define FFA_FN64_MEM_DONATE		FFA_SMC_64(0x71)
+#define FFA_MEM_LEND			FFA_SMC_32(0x72)
+#define FFA_FN64_MEM_LEND		FFA_SMC_64(0x72)
+#define FFA_MEM_SHARE			FFA_SMC_32(0x73)
+#define FFA_FN64_MEM_SHARE		FFA_SMC_64(0x73)
+#define FFA_MEM_RETRIEVE_REQ		FFA_SMC_32(0x74)
+#define FFA_FN64_MEM_RETRIEVE_REQ	FFA_SMC_64(0x74)
+#define FFA_MEM_RETRIEVE_RESP		FFA_SMC_32(0x75)
+#define FFA_MEM_RELINQUISH		FFA_SMC_32(0x76)
+#define FFA_MEM_RECLAIM			FFA_SMC_32(0x77)
+#define FFA_MEM_OP_PAUSE		FFA_SMC_32(0x78)
+#define FFA_MEM_OP_RESUME		FFA_SMC_32(0x79)
+#define FFA_MEM_FRAG_RX			FFA_SMC_32(0x7A)
+#define FFA_MEM_FRAG_TX			FFA_SMC_32(0x7B)
+#define FFA_NORMAL_WORLD_RESUME		FFA_SMC_32(0x7C)
+
+/*
+ * For some calls it is necessary to use SMC64 to pass or return 64-bit values.
+ * For such calls FFA_FN_NATIVE(name) will choose the appropriate
+ * (native-width) function ID.
+ */
+#ifdef CONFIG_64BIT
+#define FFA_FN_NATIVE(name)	FFA_FN64_##name
+#else
+#define FFA_FN_NATIVE(name)	FFA_##name
+#endif
+
+/* FFA error codes. */
+#define FFA_RET_SUCCESS            (0)
+#define FFA_RET_NOT_SUPPORTED      (-1)
+#define FFA_RET_INVALID_PARAMETERS (-2)
+#define FFA_RET_NO_MEMORY          (-3)
+#define FFA_RET_BUSY               (-4)
+#define FFA_RET_INTERRUPTED        (-5)
+#define FFA_RET_DENIED             (-6)
+#define FFA_RET_RETRY              (-7)
+#define FFA_RET_ABORTED            (-8)
+
+/* FFA version encoding */
+#define FFA_MAJOR_VERSION_MASK	GENMASK(30, 16)
+#define FFA_MINOR_VERSION_MASK	GENMASK(15, 0)
+#define FFA_MAJOR_VERSION(x)	((u16)(FIELD_GET(FFA_MAJOR_VERSION_MASK, (x))))
+#define FFA_MINOR_VERSION(x)	((u16)(FIELD_GET(FFA_MINOR_VERSION_MASK, (x))))
+#define FFA_PACK_VERSION_INFO(major, minor)			\
+	(FIELD_PREP(FFA_MAJOR_VERSION_MASK, (major)) |		\
+	 FIELD_PREP(FFA_MINOR_VERSION_MASK, (minor)))
+#define FFA_VERSION_1_0		FFA_PACK_VERSION_INFO(1, 0)
+
+/**
+ * FF-A specification mentions explicitly about '4K pages'. This should
+ * not be confused with the kernel PAGE_SIZE, which is the translation
+ * granule kernel is configured and may be one among 4K, 16K and 64K.
+ */
+#define FFA_PAGE_SIZE		SZ_4K
+
+/*
+ * Minimum buffer size/alignment encodings returned by an FFA_FEATURES
+ * query for FFA_RXTX_MAP.
+ */
+#define FFA_FEAT_RXTX_MIN_SZ_4K		0
+#define FFA_FEAT_RXTX_MIN_SZ_64K	1
+#define FFA_FEAT_RXTX_MIN_SZ_16K	2
+
 /* FFA Bus/Device/Driver related */
 struct ffa_device {
 	u32 id;
@@ -162,11 +253,11 @@ struct ffa_mem_region_attributes {
 	 */
 #define FFA_MEM_RETRIEVE_SELF_BORROWER	BIT(0)
 	u8 flag;
-	u32 composite_off;
 	/*
 	 * Offset in bytes from the start of the outer `ffa_memory_region` to
 	 * an `struct ffa_mem_region_addr_range`.
 	 */
+	u32 composite_off;
 	u64 reserved;
 };
 
diff --git a/include/linux/backing-dev-defs.h b/include/linux/backing-dev-defs.h
index ae12696..050a22e 100644
--- a/include/linux/backing-dev-defs.h
+++ b/include/linux/backing-dev-defs.h
@@ -13,6 +13,7 @@
 #include <linux/workqueue.h>
 #include <linux/kref.h>
 #include <linux/refcount.h>
+#include <linux/android_kabi.h>
 
 struct page;
 struct device;
@@ -160,6 +161,9 @@ struct bdi_writeback {
 		struct rcu_head rcu;
 	};
 #endif
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 struct backing_dev_info {
@@ -198,6 +202,9 @@ struct backing_dev_info {
 #ifdef CONFIG_DEBUG_FS
 	struct dentry *debug_dir;
 #endif
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 struct wb_lock_cookie {
diff --git a/include/linux/balloon_compaction.h b/include/linux/balloon_compaction.h
index 5ca2d56..318cfe8 100644
--- a/include/linux/balloon_compaction.h
+++ b/include/linux/balloon_compaction.h
@@ -43,6 +43,7 @@
 #include <linux/err.h>
 #include <linux/fs.h>
 #include <linux/list.h>
+#include <linux/mem_relinquish.h>
 
 /*
  * Balloon device information descriptor.
@@ -95,6 +96,7 @@ static inline void balloon_page_insert(struct balloon_dev_info *balloon,
 	__SetPageMovable(page, &balloon_mops);
 	set_page_private(page, (unsigned long)balloon);
 	list_add(&page->lru, &balloon->pages);
+	page_relinquish(page);
 }
 
 /*
@@ -139,6 +141,7 @@ static inline void balloon_page_insert(struct balloon_dev_info *balloon,
 {
 	__SetPageOffline(page);
 	list_add(&page->lru, &balloon->pages);
+	page_relinquish(page);
 }
 
 static inline void balloon_page_delete(struct page *page)
diff --git a/include/linux/blk-crypto-profile.h b/include/linux/blk-crypto-profile.h
index e6802b6..8b30d04 100644
--- a/include/linux/blk-crypto-profile.h
+++ b/include/linux/blk-crypto-profile.h
@@ -57,6 +57,20 @@ struct blk_crypto_ll_ops {
 	int (*keyslot_evict)(struct blk_crypto_profile *profile,
 			     const struct blk_crypto_key *key,
 			     unsigned int slot);
+
+	/**
+	 * @derive_sw_secret: Derive the software secret from a hardware-wrapped
+	 *		      key in ephemerally-wrapped form.
+	 *
+	 * This only needs to be implemented if BLK_CRYPTO_KEY_TYPE_HW_WRAPPED
+	 * is supported.
+	 *
+	 * Must return 0 on success, -EBADMSG if the key is invalid, or another
+	 * -errno code on other errors.
+	 */
+	int (*derive_sw_secret)(struct blk_crypto_profile *profile,
+				const u8 *eph_key, size_t eph_key_size,
+				u8 sw_secret[BLK_CRYPTO_SW_SECRET_SIZE]);
 };
 
 /**
@@ -85,6 +99,12 @@ struct blk_crypto_profile {
 	unsigned int max_dun_bytes_supported;
 
 	/**
+	 * @key_types_supported: A bitmask of the supported key types:
+	 * BLK_CRYPTO_KEY_TYPE_STANDARD and/or BLK_CRYPTO_KEY_TYPE_HW_WRAPPED.
+	 */
+	unsigned int key_types_supported;
+
+	/**
 	 * @modes_supported: Array of bitmasks that specifies whether each
 	 * combination of crypto mode and data unit size is supported.
 	 * Specifically, the i'th bit of modes_supported[crypto_mode] is set if
diff --git a/include/linux/blk-crypto.h b/include/linux/blk-crypto.h
index ad17eaa..ada8307 100644
--- a/include/linux/blk-crypto.h
+++ b/include/linux/blk-crypto.h
@@ -13,10 +13,62 @@ enum blk_crypto_mode_num {
 	BLK_ENCRYPTION_MODE_AES_256_XTS,
 	BLK_ENCRYPTION_MODE_AES_128_CBC_ESSIV,
 	BLK_ENCRYPTION_MODE_ADIANTUM,
+	BLK_ENCRYPTION_MODE_SM4_XTS,
 	BLK_ENCRYPTION_MODE_MAX,
 };
 
-#define BLK_CRYPTO_MAX_KEY_SIZE		64
+/*
+ * Supported types of keys.  Must be bitflags due to their use in
+ * blk_crypto_profile::key_types_supported.
+ */
+enum blk_crypto_key_type {
+	/*
+	 * Standard keys (i.e. "software keys").  These keys are simply kept in
+	 * raw, plaintext form in kernel memory.
+	 */
+	BLK_CRYPTO_KEY_TYPE_STANDARD = 1 << 0,
+
+	/*
+	 * Hardware-wrapped keys.  These keys are only present in kernel memory
+	 * in ephemerally-wrapped form, and they can only be unwrapped by
+	 * dedicated hardware.  For details, see the "Hardware-wrapped keys"
+	 * section of Documentation/block/inline-encryption.rst.
+	 */
+	BLK_CRYPTO_KEY_TYPE_HW_WRAPPED = 1 << 1,
+};
+
+/*
+ * Currently the maximum standard key size is 64 bytes, as that is the key size
+ * of BLK_ENCRYPTION_MODE_AES_256_XTS which takes the longest key.
+ *
+ * The maximum hardware-wrapped key size depends on the hardware's key wrapping
+ * algorithm, which is a hardware implementation detail, so it isn't precisely
+ * specified.  But currently 128 bytes is plenty in practice.  Implementations
+ * are recommended to wrap a 32-byte key for the hardware KDF with AES-256-GCM,
+ * which should result in a size closer to 64 bytes than 128.
+ *
+ * Both of these values can trivially be increased if ever needed.
+ */
+#define BLK_CRYPTO_MAX_STANDARD_KEY_SIZE	64
+#define BLK_CRYPTO_MAX_HW_WRAPPED_KEY_SIZE	128
+
+/* This should use max(), but max() doesn't work in a struct definition. */
+#define BLK_CRYPTO_MAX_ANY_KEY_SIZE \
+	(BLK_CRYPTO_MAX_HW_WRAPPED_KEY_SIZE > \
+	 BLK_CRYPTO_MAX_STANDARD_KEY_SIZE ? \
+	 BLK_CRYPTO_MAX_HW_WRAPPED_KEY_SIZE : BLK_CRYPTO_MAX_STANDARD_KEY_SIZE)
+
+/*
+ * Size of the "software secret" which can be derived from a hardware-wrapped
+ * key.  This is currently always 32 bytes.  Note, the choice of 32 bytes
+ * assumes that the software secret is only used directly for algorithms that
+ * don't require more than a 256-bit key to get the desired security strength.
+ * If it were to be used e.g. directly as an AES-256-XTS key, then this would
+ * need to be increased (which is possible if hardware supports it, but care
+ * would need to be taken to avoid breaking users who need exactly 32 bytes).
+ */
+#define BLK_CRYPTO_SW_SECRET_SIZE	32
+
 /**
  * struct blk_crypto_config - an inline encryption key's crypto configuration
  * @crypto_mode: encryption algorithm this key is for
@@ -25,20 +77,23 @@ enum blk_crypto_mode_num {
  *	ciphertext.  This is always a power of 2.  It might be e.g. the
  *	filesystem block size or the disk sector size.
  * @dun_bytes: the maximum number of bytes of DUN used when using this key
+ * @key_type: the type of this key -- either standard or hardware-wrapped
  */
 struct blk_crypto_config {
 	enum blk_crypto_mode_num crypto_mode;
 	unsigned int data_unit_size;
 	unsigned int dun_bytes;
+	enum blk_crypto_key_type key_type;
 };
 
 /**
  * struct blk_crypto_key - an inline encryption key
- * @crypto_cfg: the crypto configuration (like crypto_mode, key size) for this
- *		key
+ * @crypto_cfg: the crypto mode, data unit size, key type, and other
+ *		characteristics of this key and how it will be used
  * @data_unit_size_bits: log2 of data_unit_size
- * @size: size of this key in bytes (determined by @crypto_cfg.crypto_mode)
- * @raw: the raw bytes of this key.  Only the first @size bytes are used.
+ * @size: size of this key in bytes.  The size of a standard key is fixed for a
+ *	  given crypto mode, but the size of a hardware-wrapped key can vary.
+ * @raw: the bytes of this key.  Only the first @size bytes are significant.
  *
  * A blk_crypto_key is immutable once created, and many bios can reference it at
  * the same time.  It must not be freed until all bios using it have completed
@@ -48,7 +103,7 @@ struct blk_crypto_key {
 	struct blk_crypto_config crypto_cfg;
 	unsigned int data_unit_size_bits;
 	unsigned int size;
-	u8 raw[BLK_CRYPTO_MAX_KEY_SIZE];
+	u8 raw[BLK_CRYPTO_MAX_ANY_KEY_SIZE];
 };
 
 #define BLK_CRYPTO_MAX_IV_SIZE		32
@@ -86,7 +141,9 @@ bool bio_crypt_dun_is_contiguous(const struct bio_crypt_ctx *bc,
 				 unsigned int bytes,
 				 const u64 next_dun[BLK_CRYPTO_DUN_ARRAY_SIZE]);
 
-int blk_crypto_init_key(struct blk_crypto_key *blk_key, const u8 *raw_key,
+int blk_crypto_init_key(struct blk_crypto_key *blk_key,
+			const u8 *raw_key, size_t raw_key_size,
+			enum blk_crypto_key_type key_type,
 			enum blk_crypto_mode_num crypto_mode,
 			unsigned int dun_bytes,
 			unsigned int data_unit_size);
@@ -102,6 +159,10 @@ bool blk_crypto_config_supported_natively(struct block_device *bdev,
 bool blk_crypto_config_supported(struct block_device *bdev,
 				 const struct blk_crypto_config *cfg);
 
+int blk_crypto_derive_sw_secret(struct block_device *bdev,
+				const u8 *eph_key, size_t eph_key_size,
+				u8 sw_secret[BLK_CRYPTO_SW_SECRET_SIZE]);
+
 #else /* CONFIG_BLK_INLINE_ENCRYPTION */
 
 static inline bool bio_has_crypt_ctx(struct bio *bio)
@@ -111,6 +172,9 @@ static inline bool bio_has_crypt_ctx(struct bio *bio)
 
 #endif /* CONFIG_BLK_INLINE_ENCRYPTION */
 
+static inline void bio_clone_skip_dm_default_key(struct bio *dst,
+						 const struct bio *src);
+
 int __bio_crypt_clone(struct bio *dst, struct bio *src, gfp_t gfp_mask);
 /**
  * bio_crypt_clone - clone bio encryption context
@@ -126,9 +190,42 @@ int __bio_crypt_clone(struct bio *dst, struct bio *src, gfp_t gfp_mask);
 static inline int bio_crypt_clone(struct bio *dst, struct bio *src,
 				  gfp_t gfp_mask)
 {
+	bio_clone_skip_dm_default_key(dst, src);
 	if (bio_has_crypt_ctx(src))
 		return __bio_crypt_clone(dst, src, gfp_mask);
 	return 0;
 }
 
+#if IS_ENABLED(CONFIG_DM_DEFAULT_KEY)
+static inline void bio_set_skip_dm_default_key(struct bio *bio)
+{
+	bio->bi_skip_dm_default_key = true;
+}
+
+static inline bool bio_should_skip_dm_default_key(const struct bio *bio)
+{
+	return bio->bi_skip_dm_default_key;
+}
+
+static inline void bio_clone_skip_dm_default_key(struct bio *dst,
+						 const struct bio *src)
+{
+	dst->bi_skip_dm_default_key = src->bi_skip_dm_default_key;
+}
+#else /* CONFIG_DM_DEFAULT_KEY */
+static inline void bio_set_skip_dm_default_key(struct bio *bio)
+{
+}
+
+static inline bool bio_should_skip_dm_default_key(const struct bio *bio)
+{
+	return false;
+}
+
+static inline void bio_clone_skip_dm_default_key(struct bio *dst,
+						 const struct bio *src)
+{
+}
+#endif /* !CONFIG_DM_DEFAULT_KEY */
+
 #endif /* __LINUX_BLK_CRYPTO_H */
diff --git a/include/linux/blk-mq.h b/include/linux/blk-mq.h
index a9764cb..151578e 100644
--- a/include/linux/blk-mq.h
+++ b/include/linux/blk-mq.h
@@ -7,6 +7,7 @@
 #include <linux/lockdep.h>
 #include <linux/scatterlist.h>
 #include <linux/prefetch.h>
+#include <linux/android_kabi.h>
 
 struct blk_mq_tags;
 struct blk_flush_queue;
@@ -173,23 +174,19 @@ struct request {
 
 
 	/*
-	 * Three pointers are available for the IO schedulers, if they need
-	 * more they have to dynamically allocate it.  Flush requests are
-	 * never put on the IO scheduler. So let the flush fields share
-	 * space with the elevator data.
+	 * Three pointers are available for IO schedulers. If they need
+	 * more private data they have to allocate it dynamically.
 	 */
-	union {
-		struct {
-			struct io_cq		*icq;
-			void			*priv[2];
-		} elv;
+	struct {
+		struct io_cq		*icq;
+		void			*priv[2];
+	} elv;
 
-		struct {
-			unsigned int		seq;
-			struct list_head	list;
-			rq_end_io_fn		*saved_end_io;
-		} flush;
-	};
+	struct {
+		unsigned int		seq;
+		struct list_head	list;
+		rq_end_io_fn		*saved_end_io;
+	} flush;
 
 	union {
 		struct __call_single_data csd;
@@ -201,6 +198,8 @@ struct request {
 	 */
 	rq_end_io_fn *end_io;
 	void *end_io_data;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 static inline enum req_op req_op(const struct request *req)
@@ -444,6 +443,8 @@ struct blk_mq_hw_ctx {
 	 * q->unused_hctx_list.
 	 */
 	struct list_head	hctx_list;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -527,6 +528,8 @@ struct blk_mq_tag_set {
 
 	struct mutex		tag_list_lock;
 	struct list_head	tag_list;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -657,6 +660,8 @@ struct blk_mq_ops {
 	 */
 	void (*show_rq)(struct seq_file *m, struct request *rq);
 #endif
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 enum {
diff --git a/include/linux/blk_types.h b/include/linux/blk_types.h
index e0b0980..c3e7a4a 100644
--- a/include/linux/blk_types.h
+++ b/include/linux/blk_types.h
@@ -10,6 +10,7 @@
 #include <linux/bvec.h>
 #include <linux/device.h>
 #include <linux/ktime.h>
+#include <linux/android_kabi.h>
 
 struct bio_set;
 struct bio;
@@ -281,6 +282,9 @@ struct bio {
 
 #ifdef CONFIG_BLK_INLINE_ENCRYPTION
 	struct bio_crypt_ctx	*bi_crypt_context;
+#if IS_ENABLED(CONFIG_DM_DEFAULT_KEY)
+	bool			bi_skip_dm_default_key;
+#endif
 #endif
 
 	union {
@@ -303,6 +307,10 @@ struct bio {
 
 	struct bio_set		*bi_pool;
 
+	ANDROID_OEM_DATA(1);
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+
 	/*
 	 * We can inline a number of vecs at the end of the bio, to avoid
 	 * double allocations for a small number of bio_vecs. This member
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index 891f8cb..edefcb4 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -25,6 +25,7 @@
 #include <linux/srcu.h>
 #include <linux/uuid.h>
 #include <linux/xarray.h>
+#include <linux/android_kabi.h>
 
 struct module;
 struct request_queue;
@@ -117,6 +118,9 @@ struct blk_integrity {
 	unsigned char				tuple_size;
 	unsigned char				interval_exp;
 	unsigned char				tag_size;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 struct gendisk {
@@ -202,6 +206,11 @@ struct gendisk {
 	 * devices that do not have multiple independent access ranges.
 	 */
 	struct blk_independent_access_ranges *ia_ranges;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 static inline bool disk_live(struct gendisk *disk)
@@ -318,6 +327,9 @@ struct queue_limits {
 	 * due to possible offsets.
 	 */
 	unsigned int		dma_alignment;
+
+	ANDROID_OEM_DATA(1);
+	ANDROID_KABI_RESERVE(1);
 };
 
 typedef int (*report_zones_cb)(struct blk_zone *zone, unsigned int idx,
@@ -544,6 +556,12 @@ struct request_queue {
 	struct mutex		debugfs_mutex;
 
 	bool			mq_sysfs_init_done;
+	ANDROID_OEM_DATA(1);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 
 	/**
 	 * @srcu: Sleepable RCU. Use as lock when type of the request queue
@@ -1426,6 +1444,9 @@ struct block_device_operations {
 	 * driver.
 	 */
 	int (*alternative_gpt_sector)(struct gendisk *disk, sector_t *sector);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 #ifdef CONFIG_COMPAT
diff --git a/include/linux/bpf.h b/include/linux/bpf.h
index 942f9ac..590ee37 100644
--- a/include/linux/bpf.h
+++ b/include/linux/bpf.h
@@ -28,6 +28,7 @@
 #include <linux/btf.h>
 #include <linux/rcupdate_trace.h>
 #include <linux/static_call.h>
+#include <linux/android_kabi.h>
 
 struct bpf_verifier_env;
 struct bpf_verifier_log;
@@ -162,6 +163,9 @@ struct bpf_map_ops {
 
 	/* bpf_iter info used to open a seq_file */
 	const struct bpf_iter_seq_info *iter_seq_info;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 enum {
@@ -372,6 +376,8 @@ struct bpf_map_dev_ops {
 	int (*map_update_elem)(struct bpf_offloaded_map *map,
 			       void *key, void *value, u64 flags);
 	int (*map_delete_elem)(struct bpf_offloaded_map *map, void *key);
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct bpf_offloaded_map {
@@ -738,6 +744,7 @@ struct bpf_verifier_ops {
 				 const struct btf_type *t, int off, int size,
 				 enum bpf_access_type atype,
 				 u32 *next_btf_id, enum bpf_type_flag *flag);
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct bpf_prog_offload_ops {
@@ -753,6 +760,7 @@ struct bpf_prog_offload_ops {
 	int (*prepare)(struct bpf_prog *prog);
 	int (*translate)(struct bpf_prog *prog);
 	void (*destroy)(struct bpf_prog *prog);
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct bpf_prog_offload {
@@ -765,6 +773,7 @@ struct bpf_prog_offload {
 	bool			opt_failed;
 	void			*jited_image;
 	u32			jited_len;
+	ANDROID_KABI_RESERVE(1);
 };
 
 enum bpf_cgroup_storage_type {
@@ -935,6 +944,7 @@ struct bpf_trampoline {
 	struct bpf_tramp_image *cur_image;
 	u64 selector;
 	struct module *mod;
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct bpf_attach_target_info {
@@ -965,6 +975,7 @@ struct bpf_dispatcher {
 	struct static_call_key *sc_key;
 	void *sc_tramp;
 #endif
+	ANDROID_KABI_RESERVE(1);
 };
 
 static __always_inline __nocfi unsigned int bpf_dispatcher_nop_func(
@@ -1217,6 +1228,7 @@ struct bpf_prog_aux {
 		struct work_struct work;
 		struct rcu_head	rcu;
 	};
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct bpf_prog {
@@ -1246,6 +1258,7 @@ struct bpf_prog {
 					    const struct bpf_insn *insn);
 	struct bpf_prog_aux	*aux;		/* Auxiliary fields */
 	struct sock_fprog_kern	*orig_prog;	/* Original BPF program */
+	ANDROID_KABI_RESERVE(1);
 	/* Instructions for interpreter */
 	union {
 		DECLARE_FLEX_ARRAY(struct sock_filter, insns);
@@ -1279,6 +1292,7 @@ struct bpf_link_ops {
 	void (*show_fdinfo)(const struct bpf_link *link, struct seq_file *seq);
 	int (*fill_link_info)(const struct bpf_link *link,
 			      struct bpf_link_info *info);
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct bpf_tramp_link {
@@ -1326,6 +1340,7 @@ struct bpf_struct_ops {
 	struct btf_func_model func_models[BPF_STRUCT_OPS_MAX_NR_MEMBERS];
 	u32 type_id;
 	u32 value_id;
+	ANDROID_KABI_RESERVE(1);
 };
 
 #if defined(CONFIG_BPF_JIT) && defined(CONFIG_BPF_SYSCALL)
diff --git a/include/linux/bpf_types.h b/include/linux/bpf_types.h
index 2c6a4f25..1c61204 100644
--- a/include/linux/bpf_types.h
+++ b/include/linux/bpf_types.h
@@ -79,6 +79,9 @@ BPF_PROG_TYPE(BPF_PROG_TYPE_LSM, lsm,
 #endif
 BPF_PROG_TYPE(BPF_PROG_TYPE_SYSCALL, bpf_syscall,
 	      void *, void *)
+#ifdef CONFIG_FUSE_BPF
+BPF_PROG_TYPE(BPF_PROG_TYPE_FUSE, fuse, struct fuse_bpf_args, struct fuse_bpf_args)
+#endif
 
 BPF_MAP_TYPE(BPF_MAP_TYPE_ARRAY, array_map_ops)
 BPF_MAP_TYPE(BPF_MAP_TYPE_PERCPU_ARRAY, percpu_array_map_ops)
diff --git a/include/linux/bpf_verifier.h b/include/linux/bpf_verifier.h
index 0eb8f03..7412efd 100644
--- a/include/linux/bpf_verifier.h
+++ b/include/linux/bpf_verifier.h
@@ -8,6 +8,7 @@
 #include <linux/btf.h> /* for struct btf and btf_id() */
 #include <linux/filter.h> /* for MAX_BPF_STACK */
 #include <linux/tnum.h>
+#include <linux/android_kabi.h>
 
 /* Maximum variable offset umax_value permitted when resolving memory accesses.
  * In practice this is far bigger than any realistic pointer offset; this limit
@@ -483,6 +484,8 @@ struct bpf_subprog_info {
 	bool tail_call_reachable;
 	bool has_ld_abs;
 	bool is_async_cb;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /* single container for all structs
@@ -553,6 +556,9 @@ struct bpf_verifier_env {
 	u32 prev_log_len, prev_insn_print_len;
 	/* buffer used in reg_type_str() to generate reg_type string */
 	char type_str_buf[TYPE_STR_BUF_LEN];
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 __printf(2, 0) void bpf_verifier_vlog(struct bpf_verifier_log *log,
diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h
index 2b7d077..1c17ce2 100644
--- a/include/linux/cgroup.h
+++ b/include/linux/cgroup.h
@@ -24,6 +24,7 @@
 #include <linux/user_namespace.h>
 #include <linux/refcount.h>
 #include <linux/kernel_stat.h>
+#include <linux/android_kabi.h>
 
 #include <linux/cgroup-defs.h>
 
@@ -66,6 +67,8 @@ struct css_task_iter {
 	struct css_set			*cur_dcset;
 	struct task_struct		*cur_task;
 	struct list_head		iters_node;	/* css_set->task_iters */
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 extern struct file_system_type cgroup_fs_type;
diff --git a/include/linux/cleancache.h b/include/linux/cleancache.h
new file mode 100644
index 0000000..5f5730c
--- /dev/null
+++ b/include/linux/cleancache.h
@@ -0,0 +1,124 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _LINUX_CLEANCACHE_H
+#define _LINUX_CLEANCACHE_H
+
+#include <linux/fs.h>
+#include <linux/exportfs.h>
+#include <linux/mm.h>
+
+#define CLEANCACHE_NO_POOL		-1
+#define CLEANCACHE_NO_BACKEND		-2
+#define CLEANCACHE_NO_BACKEND_SHARED	-3
+
+#define CLEANCACHE_KEY_MAX 6
+
+/*
+ * cleancache requires every file with a page in cleancache to have a
+ * unique key unless/until the file is removed/truncated.  For some
+ * filesystems, the inode number is unique, but for "modern" filesystems
+ * an exportable filehandle is required (see exportfs.h)
+ */
+struct cleancache_filekey {
+	union {
+		ino_t ino;
+		__u32 fh[CLEANCACHE_KEY_MAX];
+		u32 key[CLEANCACHE_KEY_MAX];
+	} u;
+};
+
+struct cleancache_ops {
+	int (*init_fs)(size_t);
+	int (*init_shared_fs)(uuid_t *uuid, size_t);
+	int (*get_page)(int, struct cleancache_filekey,
+			pgoff_t, struct page *);
+	void (*put_page)(int, struct cleancache_filekey,
+			pgoff_t, struct page *);
+	void (*invalidate_page)(int, struct cleancache_filekey, pgoff_t);
+	void (*invalidate_inode)(int, struct cleancache_filekey);
+	void (*invalidate_fs)(int);
+};
+
+extern int cleancache_register_ops(const struct cleancache_ops *ops);
+extern void __cleancache_init_fs(struct super_block *);
+extern void __cleancache_init_shared_fs(struct super_block *);
+extern int  __cleancache_get_page(struct page *);
+extern void __cleancache_put_page(struct page *);
+extern void __cleancache_invalidate_page(struct address_space *, struct page *);
+extern void __cleancache_invalidate_inode(struct address_space *);
+extern void __cleancache_invalidate_fs(struct super_block *);
+
+#ifdef CONFIG_CLEANCACHE
+#define cleancache_enabled (1)
+static inline bool cleancache_fs_enabled_mapping(struct address_space *mapping)
+{
+	return mapping->host->i_sb->cleancache_poolid >= 0;
+}
+static inline bool cleancache_fs_enabled(struct page *page)
+{
+	return cleancache_fs_enabled_mapping(page->mapping);
+}
+#else
+#define cleancache_enabled (0)
+#define cleancache_fs_enabled(_page) (0)
+#define cleancache_fs_enabled_mapping(_page) (0)
+#endif
+
+/*
+ * The shim layer provided by these inline functions allows the compiler
+ * to reduce all cleancache hooks to nothingness if CONFIG_CLEANCACHE
+ * is disabled, to a single global variable check if CONFIG_CLEANCACHE
+ * is enabled but no cleancache "backend" has dynamically enabled it,
+ * and, for the most frequent cleancache ops, to a single global variable
+ * check plus a superblock element comparison if CONFIG_CLEANCACHE is enabled
+ * and a cleancache backend has dynamically enabled cleancache, but the
+ * filesystem referenced by that cleancache op has not enabled cleancache.
+ * As a result, CONFIG_CLEANCACHE can be enabled by default with essentially
+ * no measurable performance impact.
+ */
+
+static inline void cleancache_init_fs(struct super_block *sb)
+{
+	if (cleancache_enabled)
+		__cleancache_init_fs(sb);
+}
+
+static inline void cleancache_init_shared_fs(struct super_block *sb)
+{
+	if (cleancache_enabled)
+		__cleancache_init_shared_fs(sb);
+}
+
+static inline int cleancache_get_page(struct page *page)
+{
+	if (cleancache_enabled && cleancache_fs_enabled(page))
+		return __cleancache_get_page(page);
+	return -1;
+}
+
+static inline void cleancache_put_page(struct page *page)
+{
+	if (cleancache_enabled && cleancache_fs_enabled(page))
+		__cleancache_put_page(page);
+}
+
+static inline void cleancache_invalidate_page(struct address_space *mapping,
+					struct page *page)
+{
+	/* careful... page->mapping is NULL sometimes when this is called */
+	if (cleancache_enabled && cleancache_fs_enabled_mapping(mapping))
+		__cleancache_invalidate_page(mapping, page);
+}
+
+static inline void cleancache_invalidate_inode(struct address_space *mapping)
+{
+	if (cleancache_enabled && cleancache_fs_enabled_mapping(mapping))
+		__cleancache_invalidate_inode(mapping);
+}
+
+static inline void cleancache_invalidate_fs(struct super_block *sb)
+{
+	if (cleancache_enabled)
+		__cleancache_invalidate_fs(sb);
+}
+
+#endif /* _LINUX_CLEANCACHE_H */
diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h
index 267cd06..e989ab7 100644
--- a/include/linux/clk-provider.h
+++ b/include/linux/clk-provider.h
@@ -32,6 +32,7 @@
 #define CLK_OPS_PARENT_ENABLE	BIT(12)
 /* duty cycle call may be forwarded to the parent clock */
 #define CLK_DUTY_CYCLE_PARENT	BIT(13)
+#define CLK_DONT_HOLD_STATE	BIT(14) /* Don't hold state */
 
 struct clk;
 struct clk_hw;
@@ -217,6 +218,13 @@ struct clk_duty {
  *		directory is provided as an argument.  Called with
  *		prepare_lock held.  Returns 0 on success, -EERROR otherwise.
  *
+ * @pre_rate_change: Optional callback for a clock to fulfill its rate
+ *		change requirements before any rate change has occurred in
+ *		its clock tree. Returns 0 on success, -EERROR otherwise.
+ *
+ * @post_rate_change: Optional callback for a clock to clean up any
+ *		requirements that were needed while the clock and its tree
+ *		was changing states. Returns 0 on success, -EERROR otherwise.
  *
  * The clk_enable/clk_disable and clk_prepare/clk_unprepare pairs allow
  * implementations to split any work between atomic (enable) and sleepable
@@ -264,6 +272,12 @@ struct clk_ops {
 	int		(*init)(struct clk_hw *hw);
 	void		(*terminate)(struct clk_hw *hw);
 	void		(*debug_init)(struct clk_hw *hw, struct dentry *dentry);
+	int		(*pre_rate_change)(struct clk_hw *hw,
+					   unsigned long rate,
+					   unsigned long new_rate);
+	int		(*post_rate_change)(struct clk_hw *hw,
+					    unsigned long old_rate,
+					    unsigned long rate);
 };
 
 /**
@@ -1272,6 +1286,7 @@ int __must_check of_clk_hw_register(struct device_node *node, struct clk_hw *hw)
 void clk_unregister(struct clk *clk);
 
 void clk_hw_unregister(struct clk_hw *hw);
+void clk_sync_state(struct device *dev);
 
 /* helper functions */
 const char *__clk_get_name(const struct clk *clk);
diff --git a/include/linux/compaction.h b/include/linux/compaction.h
index 52a9ff6..fb8a8f3 100644
--- a/include/linux/compaction.h
+++ b/include/linux/compaction.h
@@ -180,6 +180,8 @@ bool compaction_zonelist_suitable(struct alloc_context *ac, int order,
 extern void kcompactd_run(int nid);
 extern void kcompactd_stop(int nid);
 extern void wakeup_kcompactd(pg_data_t *pgdat, int order, int highest_zoneidx);
+extern unsigned long isolate_and_split_free_page(struct page *page,
+				struct list_head *list);
 
 #else
 static inline void reset_isolation_suitable(pg_data_t *pgdat)
@@ -224,6 +226,12 @@ static inline void wakeup_kcompactd(pg_data_t *pgdat,
 {
 }
 
+static inline unsigned long isolate_and_split_free_page(struct page *page,
+				struct list_head *list)
+{
+	return 0;
+}
+
 #endif /* CONFIG_COMPACTION */
 
 struct node;
diff --git a/include/linux/compiler.h b/include/linux/compiler.h
index 973a1bf..947a60b 100644
--- a/include/linux/compiler.h
+++ b/include/linux/compiler.h
@@ -236,6 +236,7 @@ static inline void *offset_to_ptr(const int *off)
  * bool and also pointer types.
  */
 #define is_signed_type(type) (((type)(-1)) < (__force type)1)
+#define is_unsigned_type(type) (!is_signed_type(type))
 
 /*
  * This is needed in functions which generate the stack canary, see
diff --git a/include/linux/coresight.h b/include/linux/coresight.h
index 1554021..6f54701 100644
--- a/include/linux/coresight.h
+++ b/include/linux/coresight.h
@@ -10,6 +10,7 @@
 #include <linux/io.h>
 #include <linux/perf_event.h>
 #include <linux/sched.h>
+#include <linux/android_kabi.h>
 
 /* Peripheral id registers (0xFD0-0xFEC) */
 #define CORESIGHT_PERIPHIDR4	0xfd0
@@ -159,6 +160,7 @@ struct coresight_desc {
 	const struct attribute_group **groups;
 	const char *name;
 	struct csdev_access access;
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -176,6 +178,7 @@ struct coresight_connection {
 	struct fwnode_handle *child_fwnode;
 	struct coresight_device *child_dev;
 	struct coresight_sysfs_link *link;
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -245,6 +248,8 @@ struct coresight_device {
 	struct list_head config_csdev_list;
 	spinlock_t cscfg_csdev_lock;
 	void *active_cscfg_ctxt;
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 /*
@@ -296,6 +301,7 @@ struct coresight_ops_sink {
 	unsigned long (*update_buffer)(struct coresight_device *csdev,
 			      struct perf_output_handle *handle,
 			      void *sink_config);
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -326,6 +332,7 @@ struct coresight_ops_source {
 		      struct perf_event *event,  u32 mode);
 	void (*disable)(struct coresight_device *csdev,
 			struct perf_event *event);
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -359,6 +366,7 @@ struct coresight_ops {
 	const struct coresight_ops_source *source_ops;
 	const struct coresight_ops_helper *helper_ops;
 	const struct coresight_ops_ect *ect_ops;
+	ANDROID_KABI_RESERVE(1);
 };
 
 #if IS_ENABLED(CONFIG_CORESIGHT)
diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h
index d5595d5..e74037b 100644
--- a/include/linux/cpufreq.h
+++ b/include/linux/cpufreq.h
@@ -1191,14 +1191,6 @@ static inline int of_perf_domain_get_sharing_cpumask(int pcpu, const char *list_
 }
 #endif
 
-#if defined(CONFIG_ENERGY_MODEL) && defined(CONFIG_CPU_FREQ_GOV_SCHEDUTIL)
-void sched_cpufreq_governor_change(struct cpufreq_policy *policy,
-			struct cpufreq_governor *old_gov);
-#else
-static inline void sched_cpufreq_governor_change(struct cpufreq_policy *policy,
-			struct cpufreq_governor *old_gov) { }
-#endif
-
 extern unsigned int arch_freq_get_on_cpu(int cpu);
 
 #ifndef arch_set_freq_scale
diff --git a/include/linux/cpufreq_times.h b/include/linux/cpufreq_times.h
new file mode 100644
index 0000000..38272a5
--- /dev/null
+++ b/include/linux/cpufreq_times.h
@@ -0,0 +1,42 @@
+/* drivers/cpufreq/cpufreq_times.c
+ *
+ * Copyright (C) 2018 Google, Inc.
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#ifndef _LINUX_CPUFREQ_TIMES_H
+#define _LINUX_CPUFREQ_TIMES_H
+
+#include <linux/cpufreq.h>
+#include <linux/pid.h>
+
+#ifdef CONFIG_CPU_FREQ_TIMES
+void cpufreq_task_times_init(struct task_struct *p);
+void cpufreq_task_times_alloc(struct task_struct *p);
+void cpufreq_task_times_exit(struct task_struct *p);
+int proc_time_in_state_show(struct seq_file *m, struct pid_namespace *ns,
+			    struct pid *pid, struct task_struct *p);
+void cpufreq_acct_update_power(struct task_struct *p, u64 cputime);
+void cpufreq_times_create_policy(struct cpufreq_policy *policy);
+void cpufreq_times_record_transition(struct cpufreq_policy *policy,
+                                     unsigned int new_freq);
+#else
+static inline void cpufreq_task_times_init(struct task_struct *p) {}
+static inline void cpufreq_task_times_alloc(struct task_struct *p) {}
+static inline void cpufreq_task_times_exit(struct task_struct *p) {}
+static inline void cpufreq_acct_update_power(struct task_struct *p,
+					     u64 cputime) {}
+static inline void cpufreq_times_create_policy(struct cpufreq_policy *policy) {}
+static inline void cpufreq_times_record_transition(
+	struct cpufreq_policy *policy, unsigned int new_freq) {}
+#endif /* CONFIG_CPU_FREQ_TIMES */
+#endif /* _LINUX_CPUFREQ_TIMES_H */
diff --git a/include/linux/cpuhotplug.h b/include/linux/cpuhotplug.h
index 2be2091..310ecf1 100644
--- a/include/linux/cpuhotplug.h
+++ b/include/linux/cpuhotplug.h
@@ -255,6 +255,10 @@ enum cpuhp_state {
 	CPUHP_AP_X86_HPET_ONLINE,
 	CPUHP_AP_X86_KVM_CLK_ONLINE,
 	CPUHP_AP_ACTIVE,
+	CPUHP_ANDROID_RESERVED_1,
+	CPUHP_ANDROID_RESERVED_2,
+	CPUHP_ANDROID_RESERVED_3,
+	CPUHP_ANDROID_RESERVED_4,
 	CPUHP_ONLINE,
 };
 
diff --git a/include/linux/cpuidle.h b/include/linux/cpuidle.h
index fce4762..1035cb4 100644
--- a/include/linux/cpuidle.h
+++ b/include/linux/cpuidle.h
@@ -14,6 +14,7 @@
 #include <linux/percpu.h>
 #include <linux/list.h>
 #include <linux/hrtimer.h>
+#include <linux/android_kabi.h>
 
 #define CPUIDLE_STATE_MAX	10
 #define CPUIDLE_NAME_LEN	16
@@ -110,6 +111,8 @@ struct cpuidle_device {
 	cpumask_t		coupled_cpus;
 	struct cpuidle_coupled	*coupled;
 #endif
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 DECLARE_PER_CPU(struct cpuidle_device *, cpuidle_devices);
@@ -135,6 +138,8 @@ struct cpuidle_driver {
 
 	/* preferred governor to switch at register time */
 	const char		*governor;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 #ifdef CONFIG_CPU_IDLE
diff --git a/include/linux/cpuset.h b/include/linux/cpuset.h
index d58e047..92b0a92 100644
--- a/include/linux/cpuset.h
+++ b/include/linux/cpuset.h
@@ -71,8 +71,6 @@ extern void cpuset_init_smp(void);
 extern void cpuset_force_rebuild(void);
 extern void cpuset_update_active_cpus(void);
 extern void cpuset_wait_for_hotplug(void);
-extern void cpuset_read_lock(void);
-extern void cpuset_read_unlock(void);
 extern void cpuset_cpus_allowed(struct task_struct *p, struct cpumask *mask);
 extern bool cpuset_cpus_allowed_fallback(struct task_struct *p);
 extern nodemask_t cpuset_mems_allowed(struct task_struct *p);
@@ -196,9 +194,6 @@ static inline void cpuset_update_active_cpus(void)
 
 static inline void cpuset_wait_for_hotplug(void) { }
 
-static inline void cpuset_read_lock(void) { }
-static inline void cpuset_read_unlock(void) { }
-
 static inline void cpuset_cpus_allowed(struct task_struct *p,
 				       struct cpumask *mask)
 {
diff --git a/include/linux/dcache.h b/include/linux/dcache.h
index 6b351e0..854e52c 100644
--- a/include/linux/dcache.h
+++ b/include/linux/dcache.h
@@ -14,6 +14,7 @@
 #include <linux/lockref.h>
 #include <linux/stringhash.h>
 #include <linux/wait.h>
+#include <linux/android_kabi.h>
 
 struct path;
 struct file;
@@ -111,6 +112,9 @@ struct dentry {
 		struct hlist_bl_node d_in_lookup_hash;	/* only for in-lookup ones */
 	 	struct rcu_head d_rcu;
 	} d_u;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 } __randomize_layout;
 
 /*
@@ -140,6 +144,11 @@ struct dentry_operations {
 	struct vfsmount *(*d_automount)(struct path *);
 	int (*d_manage)(const struct path *, bool);
 	struct dentry *(*d_real)(struct dentry *, const struct inode *);
+	int (*d_canonical_path)(const struct path *, struct path *);
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 } ____cacheline_aligned;
 
 /*
diff --git a/include/linux/device-mapper.h b/include/linux/device-mapper.h
index 201dd1a..13f4936 100644
--- a/include/linux/device-mapper.h
+++ b/include/linux/device-mapper.h
@@ -13,6 +13,7 @@
 #include <linux/dm-ioctl.h>
 #include <linux/math64.h>
 #include <linux/ratelimit.h>
+#include <linux/android_kabi.h>
 
 struct dm_dev;
 struct dm_target;
@@ -211,6 +212,9 @@ struct target_type {
 	dm_dax_zero_page_range_fn dax_zero_page_range;
 	dm_dax_recovery_write_fn dax_recovery_write;
 
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+
 	/* For internal device-mapper use. */
 	struct list_head list;
 };
@@ -379,6 +383,9 @@ struct dm_target {
 	 * bio_set_dev(). NOTE: ideally a target should _not_ need this.
 	 */
 	bool needs_bio_set_dev:1;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 void *dm_per_bio_data(struct bio *bio, size_t data_size);
diff --git a/include/linux/device.h b/include/linux/device.h
index 7cf2433..34692d2 100644
--- a/include/linux/device.h
+++ b/include/linux/device.h
@@ -30,6 +30,7 @@
 #include <linux/device/bus.h>
 #include <linux/device/class.h>
 #include <linux/device/driver.h>
+#include <linux/android_kabi.h>
 #include <asm/device.h>
 
 struct device;
@@ -651,6 +652,14 @@ struct device {
 #ifdef CONFIG_DMA_OPS_BYPASS
 	bool			dma_ops_bypass : 1;
 #endif
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
+	ANDROID_KABI_RESERVE(5);
+	ANDROID_KABI_RESERVE(6);
+	ANDROID_KABI_RESERVE(7);
+	ANDROID_KABI_RESERVE(8);
 };
 
 /**
@@ -679,6 +688,8 @@ struct device_link {
 	struct kref kref;
 	struct work_struct rm_work;
 	bool supplier_preactivated; /* Owned by consumer probe. */
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 static inline struct device *kobj_to_dev(struct kobject *kobj)
diff --git a/include/linux/device/bus.h b/include/linux/device/bus.h
index d8b29cc..6cf173c 100644
--- a/include/linux/device/bus.h
+++ b/include/linux/device/bus.h
@@ -115,6 +115,11 @@ struct bus_type {
 	struct lock_class_key lock_key;
 
 	bool need_parent_lock;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 extern int __must_check bus_register(struct bus_type *bus);
diff --git a/include/linux/device/class.h b/include/linux/device/class.h
index e61ec55..3d6a2b8 100644
--- a/include/linux/device/class.h
+++ b/include/linux/device/class.h
@@ -18,6 +18,7 @@
 #include <linux/klist.h>
 #include <linux/pm.h>
 #include <linux/device/bus.h>
+#include <linux/android_kabi.h>
 
 struct device;
 struct fwnode_handle;
@@ -75,6 +76,11 @@ struct class {
 	const struct dev_pm_ops *pm;
 
 	struct subsys_private *p;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 struct class_dev_iter {
diff --git a/include/linux/device/driver.h b/include/linux/device/driver.h
index 2114d65..d2a71e2 100644
--- a/include/linux/device/driver.h
+++ b/include/linux/device/driver.h
@@ -119,6 +119,11 @@ struct device_driver {
 	void (*coredump) (struct device *dev);
 
 	struct driver_private *p;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 
diff --git a/include/linux/dma-buf.h b/include/linux/dma-buf.h
index 7173179..5efb9b9 100644
--- a/include/linux/dma-buf.h
+++ b/include/linux/dma-buf.h
@@ -22,6 +22,7 @@
 #include <linux/fs.h>
 #include <linux/dma-fence.h>
 #include <linux/wait.h>
+#include <linux/android_kabi.h>
 
 struct device;
 struct dma_buf;
@@ -230,6 +231,41 @@ struct dma_buf_ops {
 	int (*begin_cpu_access)(struct dma_buf *, enum dma_data_direction);
 
 	/**
+	 * @begin_cpu_access_partial:
+	 *
+	 * This is called from dma_buf_begin_cpu_access_partial() and allows the
+	 * exporter to ensure that the memory specified in the range is
+	 * available for cpu access - the exporter might need to allocate or
+	 * swap-in and pin the backing storage.
+	 * The exporter also needs to ensure that cpu access is
+	 * coherent for the access direction. The direction can be used by the
+	 * exporter to optimize the cache flushing, i.e. access with a different
+	 * direction (read instead of write) might return stale or even bogus
+	 * data (e.g. when the exporter needs to copy the data to temporary
+	 * storage).
+	 *
+	 * This callback is optional.
+	 *
+	 * FIXME: This is both called through the DMA_BUF_IOCTL_SYNC command
+	 * from userspace (where storage shouldn't be pinned to avoid handing
+	 * de-factor mlock rights to userspace) and for the kernel-internal
+	 * users of the various kmap interfaces, where the backing storage must
+	 * be pinned to guarantee that the atomic kmap calls can succeed. Since
+	 * there's no in-kernel users of the kmap interfaces yet this isn't a
+	 * real problem.
+	 *
+	 * Returns:
+	 *
+	 * 0 on success or a negative error code on failure. This can for
+	 * example fail when the backing storage can't be allocated. Can also
+	 * return -ERESTARTSYS or -EINTR when the call has been interrupted and
+	 * needs to be restarted.
+	 */
+	int (*begin_cpu_access_partial)(struct dma_buf *dmabuf,
+					enum dma_data_direction,
+					unsigned int offset, unsigned int len);
+
+	/**
 	 * @end_cpu_access:
 	 *
 	 * This is called from dma_buf_end_cpu_access() when the importer is
@@ -247,6 +283,28 @@ struct dma_buf_ops {
 	int (*end_cpu_access)(struct dma_buf *, enum dma_data_direction);
 
 	/**
+	 * @end_cpu_access_partial:
+	 *
+	 * This is called from dma_buf_end_cpu_access_partial() when the
+	 * importer is done accessing the CPU. The exporter can use to limit
+	 * cache flushing to only the range specefied and to unpin any
+	 * resources pinned in @begin_cpu_access_umapped.
+	 * The result of any dma_buf kmap calls after end_cpu_access_partial is
+	 * undefined.
+	 *
+	 * This callback is optional.
+	 *
+	 * Returns:
+	 *
+	 * 0 on success or a negative error code on failure. Can return
+	 * -ERESTARTSYS or -EINTR when the call has been interrupted and needs
+	 * to be restarted.
+	 */
+	int (*end_cpu_access_partial)(struct dma_buf *dmabuf,
+				      enum dma_data_direction,
+				      unsigned int offset, unsigned int len);
+
+	/**
 	 * @mmap:
 	 *
 	 * This callback is used by the dma_buf_mmap() function
@@ -285,6 +343,23 @@ struct dma_buf_ops {
 
 	int (*vmap)(struct dma_buf *dmabuf, struct iosys_map *map);
 	void (*vunmap)(struct dma_buf *dmabuf, struct iosys_map *map);
+
+	/**
+	 * @get_flags:
+	 *
+	 * This is called by dma_buf_get_flags and is used to get the buffer's
+	 * flags.
+	 * This callback is optional.
+	 *
+	 * Returns:
+	 *
+	 * 0 on success or a negative error code on failure. On success flags
+	 * will be populated with the buffer's flags.
+	 */
+	int (*get_flags)(struct dma_buf *dmabuf, unsigned long *flags);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 /**
@@ -455,6 +530,9 @@ struct dma_buf {
 		struct dma_buf *dmabuf;
 	} *sysfs_entry;
 #endif
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 /**
@@ -490,6 +568,7 @@ struct dma_buf_attach_ops {
 	 * point to the new location of the DMA-buf.
 	 */
 	void (*move_notify)(struct dma_buf_attachment *attach);
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -504,6 +583,8 @@ struct dma_buf_attach_ops {
  * @importer_ops: importer operations for this attachment, if provided
  * dma_buf_map/unmap_attachment() must be called with the dma_resv lock held.
  * @importer_priv: importer specific attachment data.
+ * @dma_map_attrs: DMA attributes to be used when the exporter maps the buffer
+ * through dma_buf_map_attachment.
  *
  * This structure holds the attachment information between the dma_buf buffer
  * and its user device(s). The list contains one attachment struct per device
@@ -524,6 +605,10 @@ struct dma_buf_attachment {
 	const struct dma_buf_attach_ops *importer_ops;
 	void *importer_priv;
 	void *priv;
+	unsigned long dma_map_attrs;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 /**
@@ -547,6 +632,9 @@ struct dma_buf_export_info {
 	int flags;
 	struct dma_resv *resv;
 	void *priv;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 /**
@@ -601,6 +689,9 @@ dma_buf_attachment_is_dynamic(struct dma_buf_attachment *attach)
 	return !!attach->importer_ops;
 }
 
+int is_dma_buf_file(struct file *file);
+int dma_buf_get_each(int (*callback)(const struct dma_buf *dmabuf,
+		     void *private), void *private);
 struct dma_buf_attachment *dma_buf_attach(struct dma_buf *dmabuf,
 					  struct device *dev);
 struct dma_buf_attachment *
@@ -625,11 +716,19 @@ void dma_buf_unmap_attachment(struct dma_buf_attachment *, struct sg_table *,
 void dma_buf_move_notify(struct dma_buf *dma_buf);
 int dma_buf_begin_cpu_access(struct dma_buf *dma_buf,
 			     enum dma_data_direction dir);
+int dma_buf_begin_cpu_access_partial(struct dma_buf *dma_buf,
+				     enum dma_data_direction dir,
+				     unsigned int offset, unsigned int len);
 int dma_buf_end_cpu_access(struct dma_buf *dma_buf,
 			   enum dma_data_direction dir);
+int dma_buf_end_cpu_access_partial(struct dma_buf *dma_buf,
+				     enum dma_data_direction dir,
+				     unsigned int offset, unsigned int len);
 
 int dma_buf_mmap(struct dma_buf *, struct vm_area_struct *,
 		 unsigned long);
 int dma_buf_vmap(struct dma_buf *dmabuf, struct iosys_map *map);
 void dma_buf_vunmap(struct dma_buf *dmabuf, struct iosys_map *map);
+long dma_buf_set_name(struct dma_buf *dmabuf, const char *name);
+int dma_buf_get_flags(struct dma_buf *dmabuf, unsigned long *flags);
 #endif /* __DMA_BUF_H__ */
diff --git a/include/linux/dma-direct.h b/include/linux/dma-direct.h
index 18aade1..80f0dba 100644
--- a/include/linux/dma-direct.h
+++ b/include/linux/dma-direct.h
@@ -24,6 +24,33 @@ struct bus_dma_region {
 	u64		offset;
 };
 
+static inline bool zone_dma32_is_empty(int node)
+{
+#ifdef CONFIG_ZONE_DMA32
+	pg_data_t *pgdat = NODE_DATA(node);
+
+	return zone_is_empty(&pgdat->node_zones[ZONE_DMA32]);
+#else
+	return true;
+#endif
+}
+
+static inline bool zone_dma32_are_empty(void)
+{
+#ifdef CONFIG_NUMA
+	int node;
+
+	for_each_node(node)
+		if (!zone_dma32_is_empty(node))
+			return false;
+#else
+	if (!zone_dma32_is_empty(numa_node_id()))
+		return false;
+#endif
+
+	return true;
+}
+
 static inline dma_addr_t translate_phys_to_dma(struct device *dev,
 		phys_addr_t paddr)
 {
diff --git a/include/linux/dma-heap.h b/include/linux/dma-heap.h
index 0c05561..a1a190e 100644
--- a/include/linux/dma-heap.h
+++ b/include/linux/dma-heap.h
@@ -17,6 +17,7 @@ struct dma_heap;
 /**
  * struct dma_heap_ops - ops to operate on a given heap
  * @allocate:		allocate dmabuf and return struct dma_buf ptr
+ * @get_pool_size:	if heap maintains memory pools, get pool size in bytes
  *
  * allocate returns dmabuf on success, ERR_PTR(-errno) on error.
  */
@@ -25,6 +26,7 @@ struct dma_heap_ops {
 				    unsigned long len,
 				    unsigned long fd_flags,
 				    unsigned long heap_flags);
+	long (*get_pool_size)(struct dma_heap *heap);
 };
 
 /**
@@ -51,6 +53,15 @@ struct dma_heap_export_info {
 void *dma_heap_get_drvdata(struct dma_heap *heap);
 
 /**
+ * dma_heap_get_dev() - get device struct for the heap
+ * @heap: DMA-Heap to retrieve device struct from
+ *
+ * Returns:
+ * The device struct for the heap.
+ */
+struct device *dma_heap_get_dev(struct dma_heap *heap);
+
+/**
  * dma_heap_get_name() - get heap name
  * @heap: DMA-Heap to retrieve private data for
  *
@@ -65,4 +76,49 @@ const char *dma_heap_get_name(struct dma_heap *heap);
  */
 struct dma_heap *dma_heap_add(const struct dma_heap_export_info *exp_info);
 
+/**
+ * dma_heap_put - drops a reference to a dmabuf heaps, potentially freeing it
+ * @heap:		heap pointer
+ */
+void dma_heap_put(struct dma_heap *heap);
+
+/**
+ * dma_heap_find - Returns the registered dma_heap with the specified name
+ * @name: Name of the heap to find
+ *
+ * NOTE: dma_heaps returned from this function MUST be released
+ * using dma_heap_put() when the user is done.
+ */
+struct dma_heap *dma_heap_find(const char *name);
+
+/**
+ * dma_heap_buffer_alloc - Allocate dma-buf from a dma_heap
+ * @heap:	dma_heap to allocate from
+ * @len:	size to allocate
+ * @fd_flags:	flags to set on returned dma-buf fd
+ * @heap_flags:	flags to pass to the dma heap
+ *
+ * This is for internal dma-buf allocations only.
+ */
+struct dma_buf *dma_heap_buffer_alloc(struct dma_heap *heap, size_t len,
+				      unsigned int fd_flags,
+				      unsigned int heap_flags);
+
+/** dma_heap_buffer_free - Free dma_buf allocated by dma_heap_buffer_alloc
+ * @dma_buf:	dma_buf to free
+ *
+ * This is really only a simple wrapper to dma_buf_put()
+ */
+void dma_heap_buffer_free(struct dma_buf *);
+
+/**
+ * dma_heap_bufferfd_alloc - Allocate dma-buf fd from a dma_heap
+ * @heap:	dma_heap to allocate from
+ * @len:	size to allocate
+ * @fd_flags:	flags to set on returned dma-buf fd
+ * @heap_flags:	flags to pass to the dma heap
+ */
+int dma_heap_bufferfd_alloc(struct dma_heap *heap, size_t len,
+			    unsigned int fd_flags,
+			    unsigned int heap_flags);
 #endif /* _DMA_HEAPS_H */
diff --git a/include/linux/dma-map-ops.h b/include/linux/dma-map-ops.h
index d678afe..80ccaaf 100644
--- a/include/linux/dma-map-ops.h
+++ b/include/linux/dma-map-ops.h
@@ -8,6 +8,7 @@
 
 #include <linux/dma-mapping.h>
 #include <linux/pgtable.h>
+#include <linux/android_kabi.h>
 
 struct cma;
 
@@ -81,6 +82,11 @@ struct dma_map_ops {
 	size_t (*max_mapping_size)(struct device *dev);
 	size_t (*opt_mapping_size)(void);
 	unsigned long (*get_merge_boundary)(struct device *dev);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 #ifdef CONFIG_DMA_OPS
@@ -291,6 +297,14 @@ void arch_dma_free(struct device *dev, size_t size, void *cpu_addr,
 #define pgprot_dmacoherent(prot)	pgprot_noncached(prot)
 #endif
 
+/*
+ * If there is no system cache pgprot, then fallback to dmacoherent
+ * pgprot, as the expectation is that the device is not coherent.
+ */
+#ifndef pgprot_syscached
+#define pgprot_syscached(prot)		pgprot_dmacoherent(prot)
+#endif
+
 pgprot_t dma_pgprot(struct device *dev, pgprot_t prot, unsigned long attrs);
 #else
 static inline pgprot_t dma_pgprot(struct device *dev, pgprot_t prot,
diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h
index 0ee20b7..7a94663 100644
--- a/include/linux/dma-mapping.h
+++ b/include/linux/dma-mapping.h
@@ -62,6 +62,23 @@
 #define DMA_ATTR_PRIVILEGED		(1UL << 9)
 
 /*
+ * DMA_ATTR_SYS_CACHE: used to indicate that the buffer should be mapped with
+ * the correct memory attributes so that it can be cached in the system or last
+ * level cache. This is useful for buffers that are being mapped for devices
+ * that are non-coherent, but can use the system cache.
+ */
+#define DMA_ATTR_SYS_CACHE		(1UL << 10)
+
+/*
+ * DMA_ATTR_SYS_CACHE_NWA: used to indicate that the buffer should be mapped
+ * with the correct memory attributes so that it can be cached in the system or
+ * last level cache, with a no write allocate cache policy. This is useful for
+ * buffers that are being mapped for devices that are non-coherent, but can use
+ * the system cache.
+ */
+#define DMA_ATTR_SYS_CACHE_NWA	(1UL << 11)
+
+/*
  * A dma_addr_t can hold any valid DMA or bus address for the platform.  It can
  * be given to a device to use as a DMA source or target.  It is specific to a
  * given device and there may be a translation between the CPU physical address
diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h
index c923f4e..e0555955 100644
--- a/include/linux/dmaengine.h
+++ b/include/linux/dmaengine.h
@@ -12,6 +12,7 @@
 #include <linux/scatterlist.h>
 #include <linux/bitmap.h>
 #include <linux/types.h>
+#include <linux/android_kabi.h>
 #include <asm/page.h>
 
 /**
@@ -617,6 +618,11 @@ struct dma_async_tx_descriptor {
 	struct dma_async_tx_descriptor *parent;
 	spinlock_t lock;
 #endif
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 #ifdef CONFIG_DMA_ENGINE
diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h
index 99dc7bf..da76678 100644
--- a/include/linux/ethtool.h
+++ b/include/linux/ethtool.h
@@ -16,6 +16,7 @@
 #include <linux/bitmap.h>
 #include <linux/compat.h>
 #include <linux/netlink.h>
+#include <linux/android_kabi.h>
 #include <uapi/linux/ethtool.h>
 
 struct compat_ethtool_rx_flow_spec {
@@ -760,6 +761,11 @@ struct ethtool_ops {
 	int	(*set_module_power_mode)(struct net_device *dev,
 					 const struct ethtool_module_power_mode_params *params,
 					 struct netlink_ext_ack *extack);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 int ethtool_check_ops(const struct ethtool_ops *ops);
diff --git a/include/linux/export.h b/include/linux/export.h
index 3f31ced..b674ca6 100644
--- a/include/linux/export.h
+++ b/include/linux/export.h
@@ -106,7 +106,7 @@ struct kernel_symbol {
  */
 #define __EXPORT_SYMBOL(sym, sec, ns)
 
-#elif defined(CONFIG_TRIM_UNUSED_KSYMS)
+#elif defined(CONFIG_TRIM_UNUSED_KSYMS) && !defined(MODULE)
 
 #include <generated/autoksyms.h>
 
diff --git a/include/linux/f2fs_fs.h b/include/linux/f2fs_fs.h
index ee0d75d..1d64025 100644
--- a/include/linux/f2fs_fs.h
+++ b/include/linux/f2fs_fs.h
@@ -40,9 +40,8 @@
 
 #define F2FS_ENC_UTF8_12_1	1
 
-#define F2FS_IO_SIZE(sbi)	(1 << F2FS_OPTION(sbi).write_io_size_bits) /* Blocks */
-#define F2FS_IO_SIZE_KB(sbi)	(1 << (F2FS_OPTION(sbi).write_io_size_bits + 2)) /* KB */
-#define F2FS_IO_SIZE_BYTES(sbi)	(1 << (F2FS_OPTION(sbi).write_io_size_bits + 12)) /* B */
+#define F2FS_IO_SIZE(sbi)	BIT(F2FS_OPTION(sbi).write_io_size_bits) /* Blocks */
+#define F2FS_IO_SIZE_KB(sbi)	BIT(F2FS_OPTION(sbi).write_io_size_bits + 2) /* KB */
 #define F2FS_IO_SIZE_BITS(sbi)	(F2FS_OPTION(sbi).write_io_size_bits) /* power of 2 */
 #define F2FS_IO_SIZE_MASK(sbi)	(F2FS_IO_SIZE(sbi) - 1)
 #define F2FS_IO_ALIGNED(sbi)	(F2FS_IO_SIZE(sbi) > 1)
@@ -315,7 +314,7 @@ struct f2fs_inode {
 			__u8 i_log_cluster_size;	/* log of cluster size */
 			__le16 i_compress_flag;		/* compress flag */
 						/* 0 bit: chksum flag
-						 * [10,15] bits: compress level
+						 * [8,15] bits: compress level
 						 */
 			__le32 i_extra_end[0];	/* for attribute size calculation */
 		} __packed;
@@ -340,7 +339,7 @@ enum {
 	OFFSET_BIT_SHIFT
 };
 
-#define OFFSET_BIT_MASK		(0x07)	/* (0x01 << OFFSET_BIT_SHIFT) - 1 */
+#define OFFSET_BIT_MASK		GENMASK(OFFSET_BIT_SHIFT - 1, 0)
 
 struct node_footer {
 	__le32 nid;		/* node id */
@@ -545,7 +544,7 @@ typedef __le32	f2fs_hash_t;
 #define MAX_DIR_HASH_DEPTH	63
 
 /* MAX buckets in one level of dir */
-#define MAX_DIR_BUCKETS		(1 << ((MAX_DIR_HASH_DEPTH / 2) - 1))
+#define MAX_DIR_BUCKETS		BIT((MAX_DIR_HASH_DEPTH / 2) - 1)
 
 /*
  * space utilization of regular dentry and inline dentry (w/o extra reservation)
@@ -585,21 +584,6 @@ struct f2fs_dentry_block {
 	__u8 filename[NR_DENTRY_IN_BLOCK][F2FS_SLOT_LEN];
 } __packed;
 
-/* file types used in inode_info->flags */
-enum {
-	F2FS_FT_UNKNOWN,
-	F2FS_FT_REG_FILE,
-	F2FS_FT_DIR,
-	F2FS_FT_CHRDEV,
-	F2FS_FT_BLKDEV,
-	F2FS_FT_FIFO,
-	F2FS_FT_SOCK,
-	F2FS_FT_SYMLINK,
-	F2FS_FT_MAX
-};
-
-#define S_SHIFT 12
-
 #define	F2FS_DEF_PROJID		0	/* default project ID */
 
 #endif  /* _LINUX_F2FS_FS_H */
diff --git a/include/linux/fips.h b/include/linux/fips.h
index c6961e9..83f5d6f 100644
--- a/include/linux/fips.h
+++ b/include/linux/fips.h
@@ -2,7 +2,15 @@
 #ifndef _FIPS_H
 #define _FIPS_H
 
-#ifdef CONFIG_CRYPTO_FIPS
+#ifdef BUILD_FIPS140_KO
+/*
+ * In fips140.ko, enable the behavior that the upstream fips_enabled flag
+ * controls, such as the XTS weak key check.
+ */
+#define fips_enabled 1
+#define CONFIG_CRYPTO_FIPS 1
+
+#elif defined(CONFIG_CRYPTO_FIPS)
 extern int fips_enabled;
 extern struct atomic_notifier_head fips_fail_notif_chain;
 
diff --git a/include/linux/fs.h b/include/linux/fs.h
index a2b5592..19f00c0 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -166,6 +166,8 @@ typedef int (dio_iodone_t)(struct kiocb *iocb, loff_t offset,
 /* File supports DIRECT IO */
 #define	FMODE_CAN_ODIRECT	((__force fmode_t)0x400000)
 
+#define	FMODE_NOREUSE		((__force fmode_t)0x800000)
+
 /* File was opened by fanotify and shouldn't generate fanotify events */
 #define FMODE_NONOTIFY		((__force fmode_t)0x4000000)
 
@@ -975,6 +977,9 @@ struct file {
 	struct address_space	*f_mapping;
 	errseq_t		f_wb_err;
 	errseq_t		f_sb_err; /* for syncfs */
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 } __randomize_layout
   __attribute__((aligned(4)));	/* lest something weird decides that 2 is OK */
 
@@ -1535,6 +1540,11 @@ struct super_block {
 
 	const struct dentry_operations *s_d_op; /* default d_op for dentries */
 
+	/*
+	 * Saved pool identifier for cleancache (-1 means none)
+	 */
+	int cleancache_poolid;
+
 	struct shrinker s_shrink;	/* per-sb shrinker handle */
 
 	/* Number of inodes with nlink == 0 but still referenced */
@@ -2769,6 +2779,7 @@ extern long do_sys_open(int dfd, const char __user *filename, int flags,
 			umode_t mode);
 extern struct file *file_open_name(struct filename *, int, umode_t);
 extern struct file *filp_open(const char *, int, umode_t);
+extern struct file *filp_open_block(const char *, int, umode_t);
 extern struct file *file_open_root(const struct path *,
 				   const char *, int, umode_t);
 static inline struct file *file_open_root_mnt(struct vfsmount *mnt,
@@ -3448,6 +3459,11 @@ static inline int kiocb_set_rw_flags(struct kiocb *ki, rwf_t flags)
 	return 0;
 }
 
+static inline rwf_t iocb_to_rw_flags(int ifl, int iocb_mask)
+{
+	return ifl & iocb_mask;
+}
+
 static inline ino_t parent_ino(struct dentry *dentry)
 {
 	ino_t res;
diff --git a/include/linux/fscrypt.h b/include/linux/fscrypt.h
index 4f5f8a6..e54062d 100644
--- a/include/linux/fscrypt.h
+++ b/include/linux/fscrypt.h
@@ -17,6 +17,7 @@
 #include <linux/mm.h>
 #include <linux/slab.h>
 #include <uapi/linux/fscrypt.h>
+#include <linux/android_kabi.h>
 
 /*
  * The lengths of all file contents blocks must be divisible by this value.
@@ -176,6 +177,13 @@ struct fscrypt_operations {
 	 */
 	struct block_device **(*get_devices)(struct super_block *sb,
 					     unsigned int *num_devs);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
+
+	ANDROID_OEM_DATA_ARRAY(1, 4);
 };
 
 static inline struct fscrypt_info *fscrypt_get_info(const struct inode *inode)
@@ -257,8 +265,8 @@ int fscrypt_encrypt_block_inplace(const struct inode *inode, struct page *page,
 				  unsigned int len, unsigned int offs,
 				  u64 lblk_num, gfp_t gfp_flags);
 
-int fscrypt_decrypt_pagecache_blocks(struct page *page, unsigned int len,
-				     unsigned int offs);
+int fscrypt_decrypt_pagecache_blocks(struct folio *folio, size_t len,
+				     size_t offs);
 int fscrypt_decrypt_block_inplace(const struct inode *inode, struct page *page,
 				  unsigned int len, unsigned int offs,
 				  u64 lblk_num);
@@ -309,8 +317,6 @@ fscrypt_free_dummy_policy(struct fscrypt_dummy_policy *dummy_policy)
 /* keyring.c */
 void fscrypt_destroy_keyring(struct super_block *sb);
 int fscrypt_ioctl_add_key(struct file *filp, void __user *arg);
-int fscrypt_add_test_dummy_key(struct super_block *sb,
-			       const struct fscrypt_dummy_policy *dummy_policy);
 int fscrypt_ioctl_remove_key(struct file *filp, void __user *arg);
 int fscrypt_ioctl_remove_key_all_users(struct file *filp, void __user *arg);
 int fscrypt_ioctl_get_key_status(struct file *filp, void __user *arg);
@@ -361,6 +367,7 @@ int __fscrypt_prepare_rename(struct inode *old_dir, struct dentry *old_dentry,
 			     unsigned int flags);
 int __fscrypt_prepare_lookup(struct inode *dir, struct dentry *dentry,
 			     struct fscrypt_name *fname);
+int fscrypt_prepare_lookup_partial(struct inode *dir, struct dentry *dentry);
 int __fscrypt_prepare_readdir(struct inode *dir);
 int __fscrypt_prepare_setattr(struct dentry *dentry, struct iattr *attr);
 int fscrypt_prepare_setflags(struct inode *inode,
@@ -422,9 +429,8 @@ static inline int fscrypt_encrypt_block_inplace(const struct inode *inode,
 	return -EOPNOTSUPP;
 }
 
-static inline int fscrypt_decrypt_pagecache_blocks(struct page *page,
-						   unsigned int len,
-						   unsigned int offs)
+static inline int fscrypt_decrypt_pagecache_blocks(struct folio *folio,
+						   size_t len, size_t offs)
 {
 	return -EOPNOTSUPP;
 }
@@ -530,13 +536,6 @@ static inline int fscrypt_ioctl_add_key(struct file *filp, void __user *arg)
 	return -EOPNOTSUPP;
 }
 
-static inline int
-fscrypt_add_test_dummy_key(struct super_block *sb,
-			   const struct fscrypt_dummy_policy *dummy_policy)
-{
-	return 0;
-}
-
 static inline int fscrypt_ioctl_remove_key(struct file *filp, void __user *arg)
 {
 	return -EOPNOTSUPP;
@@ -683,6 +682,12 @@ static inline int __fscrypt_prepare_lookup(struct inode *dir,
 	return -EOPNOTSUPP;
 }
 
+static inline int fscrypt_prepare_lookup_partial(struct inode *dir,
+						 struct dentry *dentry)
+{
+	return -EOPNOTSUPP;
+}
+
 static inline int __fscrypt_prepare_readdir(struct inode *dir)
 {
 	return -EOPNOTSUPP;
@@ -809,6 +814,20 @@ static inline u64 fscrypt_limit_io_blocks(const struct inode *inode, u64 lblk,
 }
 #endif /* !CONFIG_FS_ENCRYPTION_INLINE_CRYPT */
 
+#if IS_ENABLED(CONFIG_FS_ENCRYPTION) && IS_ENABLED(CONFIG_DM_DEFAULT_KEY)
+static inline bool
+fscrypt_inode_should_skip_dm_default_key(const struct inode *inode)
+{
+	return IS_ENCRYPTED(inode) && S_ISREG(inode->i_mode);
+}
+#else
+static inline bool
+fscrypt_inode_should_skip_dm_default_key(const struct inode *inode)
+{
+	return false;
+}
+#endif
+
 /**
  * fscrypt_inode_uses_inline_crypto() - test whether an inode uses inline
  *					encryption
diff --git a/include/linux/fsnotify.h b/include/linux/fsnotify.h
index bb8467c..102913f 100644
--- a/include/linux/fsnotify.h
+++ b/include/linux/fsnotify.h
@@ -96,6 +96,29 @@ static inline int fsnotify_file(struct file *file, __u32 mask)
 	if (file->f_mode & FMODE_NONOTIFY)
 		return 0;
 
+	/*
+	 * Open calls notify early on, so lower file system must be notified
+	 */
+	if (mask & FS_OPEN) {
+		if (path->dentry->d_op &&
+		    path->dentry->d_op->d_canonical_path) {
+			struct path lower_path;
+			int ret;
+
+			ret = path->dentry->d_op->d_canonical_path(path,
+								   &lower_path);
+			if (ret)
+				return ret;
+
+			ret = fsnotify_parent(lower_path.dentry, mask,
+					      &lower_path, FSNOTIFY_EVENT_PATH);
+			path_put(&lower_path);
+
+			if (ret)
+				return ret;
+		}
+	}
+
 	return fsnotify_parent(path->dentry, mask, path, FSNOTIFY_EVENT_PATH);
 }
 
diff --git a/include/linux/fsverity.h b/include/linux/fsverity.h
index 40f14e5..d063713 100644
--- a/include/linux/fsverity.h
+++ b/include/linux/fsverity.h
@@ -12,6 +12,7 @@
 #define _LINUX_FSVERITY_H
 
 #include <linux/fs.h>
+#include <linux/mm.h>
 #include <crypto/hash_info.h>
 #include <crypto/sha2.h>
 #include <uapi/linux/fsverity.h>
@@ -93,8 +94,7 @@ struct fsverity_operations {
 	 *		  isn't already cached.  Implementations may ignore this
 	 *		  argument; it's only a performance optimization.
 	 *
-	 * This can be called at any time on an open verity file, as well as
-	 * between ->begin_enable_verity() and ->end_enable_verity().  It may be
+	 * This can be called at any time on an open verity file.  It may be
 	 * called by multiple processes concurrently, even with the same page.
 	 *
 	 * Note that this must retrieve a *page*, not necessarily a *block*.
@@ -109,9 +109,9 @@ struct fsverity_operations {
 	 * Write a Merkle tree block to the given inode.
 	 *
 	 * @inode: the inode for which the Merkle tree is being built
-	 * @buf: block to write
-	 * @index: 0-based index of the block within the Merkle tree
-	 * @log_blocksize: log base 2 of the Merkle tree block size
+	 * @buf: the Merkle tree block to write
+	 * @pos: the position of the block in the Merkle tree (in bytes)
+	 * @size: the Merkle tree block size (in bytes)
 	 *
 	 * This is only called between ->begin_enable_verity() and
 	 * ->end_enable_verity().
@@ -119,7 +119,7 @@ struct fsverity_operations {
 	 * Return: 0 on success, -errno on failure
 	 */
 	int (*write_merkle_tree_block)(struct inode *inode, const void *buf,
-				       u64 index, int log_blocksize);
+				       u64 pos, unsigned int size);
 };
 
 #ifdef CONFIG_FS_VERITY
@@ -148,9 +148,21 @@ int fsverity_get_digest(struct inode *inode,
 
 /* open.c */
 
-int fsverity_file_open(struct inode *inode, struct file *filp);
-int fsverity_prepare_setattr(struct dentry *dentry, struct iattr *attr);
-void fsverity_cleanup_inode(struct inode *inode);
+int __fsverity_file_open(struct inode *inode, struct file *filp);
+int __fsverity_prepare_setattr(struct dentry *dentry, struct iattr *attr);
+void __fsverity_cleanup_inode(struct inode *inode);
+
+/**
+ * fsverity_cleanup_inode() - free the inode's verity info, if present
+ * @inode: an inode being evicted
+ *
+ * Filesystems must call this on inode eviction to free ->i_verity_info.
+ */
+static inline void fsverity_cleanup_inode(struct inode *inode)
+{
+	if (inode->i_verity_info)
+		__fsverity_cleanup_inode(inode);
+}
 
 /* read_metadata.c */
 
@@ -158,7 +170,7 @@ int fsverity_ioctl_read_metadata(struct file *filp, const void __user *uarg);
 
 /* verify.c */
 
-bool fsverity_verify_page(struct page *page);
+bool fsverity_verify_blocks(struct folio *folio, size_t len, size_t offset);
 void fsverity_verify_bio(struct bio *bio);
 void fsverity_enqueue_verify_work(struct work_struct *work);
 
@@ -193,15 +205,15 @@ static inline int fsverity_get_digest(struct inode *inode,
 
 /* open.c */
 
-static inline int fsverity_file_open(struct inode *inode, struct file *filp)
+static inline int __fsverity_file_open(struct inode *inode, struct file *filp)
 {
-	return IS_VERITY(inode) ? -EOPNOTSUPP : 0;
+	return -EOPNOTSUPP;
 }
 
-static inline int fsverity_prepare_setattr(struct dentry *dentry,
-					   struct iattr *attr)
+static inline int __fsverity_prepare_setattr(struct dentry *dentry,
+					     struct iattr *attr)
 {
-	return IS_VERITY(d_inode(dentry)) ? -EOPNOTSUPP : 0;
+	return -EOPNOTSUPP;
 }
 
 static inline void fsverity_cleanup_inode(struct inode *inode)
@@ -218,7 +230,8 @@ static inline int fsverity_ioctl_read_metadata(struct file *filp,
 
 /* verify.c */
 
-static inline bool fsverity_verify_page(struct page *page)
+static inline bool fsverity_verify_blocks(struct folio *folio, size_t len,
+					  size_t offset)
 {
 	WARN_ON(1);
 	return false;
@@ -236,6 +249,16 @@ static inline void fsverity_enqueue_verify_work(struct work_struct *work)
 
 #endif	/* !CONFIG_FS_VERITY */
 
+static inline bool fsverity_verify_folio(struct folio *folio)
+{
+	return fsverity_verify_blocks(folio, folio_size(folio), 0);
+}
+
+static inline bool fsverity_verify_page(struct page *page)
+{
+	return fsverity_verify_blocks(page_folio(page), PAGE_SIZE, 0);
+}
+
 /**
  * fsverity_active() - do reads from the inode need to go through fs-verity?
  * @inode: inode to check
@@ -254,4 +277,56 @@ static inline bool fsverity_active(const struct inode *inode)
 	return fsverity_get_info(inode) != NULL;
 }
 
+#ifdef CONFIG_FS_VERITY_BUILTIN_SIGNATURES
+int __fsverity_verify_signature(const struct inode *inode, const u8 *signature,
+				size_t sig_size, const u8 *file_digest,
+				unsigned int digest_algorithm);
+#else /* !CONFIG_FS_VERITY_BUILTIN_SIGNATURES */
+static inline int __fsverity_verify_signature(const struct inode *inode,
+				const u8 *signature, size_t sig_size,
+				const u8 *file_digest,
+				unsigned int digest_algorithm)
+{
+	return 0;
+}
+#endif /* !CONFIG_FS_VERITY_BUILTIN_SIGNATURES */
+
+/**
+ * fsverity_file_open() - prepare to open a verity file
+ * @inode: the inode being opened
+ * @filp: the struct file being set up
+ *
+ * When opening a verity file, deny the open if it is for writing.  Otherwise,
+ * set up the inode's ->i_verity_info if not already done.
+ *
+ * When combined with fscrypt, this must be called after fscrypt_file_open().
+ * Otherwise, we won't have the key set up to decrypt the verity metadata.
+ *
+ * Return: 0 on success, -errno on failure
+ */
+static inline int fsverity_file_open(struct inode *inode, struct file *filp)
+{
+	if (IS_VERITY(inode))
+		return __fsverity_file_open(inode, filp);
+	return 0;
+}
+
+/**
+ * fsverity_prepare_setattr() - prepare to change a verity inode's attributes
+ * @dentry: dentry through which the inode is being changed
+ * @attr: attributes to change
+ *
+ * Verity files are immutable, so deny truncates.  This isn't covered by the
+ * open-time check because sys_truncate() takes a path, not a file descriptor.
+ *
+ * Return: 0 on success, -errno on failure
+ */
+static inline int fsverity_prepare_setattr(struct dentry *dentry,
+					   struct iattr *attr)
+{
+	if (IS_VERITY(d_inode(dentry)))
+		return __fsverity_prepare_setattr(dentry, attr);
+	return 0;
+}
+
 #endif	/* _LINUX_FSVERITY_H */
diff --git a/include/linux/fwnode.h b/include/linux/fwnode.h
index 5700451..12d56be 100644
--- a/include/linux/fwnode.h
+++ b/include/linux/fwnode.h
@@ -13,6 +13,7 @@
 #include <linux/list.h>
 #include <linux/bits.h>
 #include <linux/err.h>
+#include <linux/android_kabi.h>
 
 struct fwnode_operations;
 struct device;
@@ -45,6 +46,7 @@ struct fwnode_handle {
 	struct list_head suppliers;
 	struct list_head consumers;
 	u8 flags;
+	ANDROID_KABI_RESERVE(1);
 };
 
 /*
@@ -60,6 +62,9 @@ struct fwnode_link {
 	struct fwnode_handle *consumer;
 	struct list_head c_hook;
 	u8 flags;
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
 };
 
 /**
diff --git a/include/linux/gfp.h b/include/linux/gfp.h
index 65a7877..e652b9b 100644
--- a/include/linux/gfp.h
+++ b/include/linux/gfp.h
@@ -19,9 +19,6 @@ static inline int gfp_migratetype(const gfp_t gfp_flags)
 	BUILD_BUG_ON((1UL << GFP_MOVABLE_SHIFT) != ___GFP_MOVABLE);
 	BUILD_BUG_ON((___GFP_MOVABLE >> GFP_MOVABLE_SHIFT) != MIGRATE_MOVABLE);
 	BUILD_BUG_ON((___GFP_RECLAIMABLE >> GFP_MOVABLE_SHIFT) != MIGRATE_RECLAIMABLE);
-	BUILD_BUG_ON(((___GFP_MOVABLE | ___GFP_RECLAIMABLE) >>
-		      GFP_MOVABLE_SHIFT) != MIGRATE_HIGHATOMIC);
-
 	if (unlikely(page_group_by_mobility_disabled))
 		return MIGRATE_UNMOVABLE;
 
@@ -126,7 +123,7 @@ static inline bool gfpflags_allow_blocking(const gfp_t gfp_flags)
 	| 1 << (___GFP_MOVABLE | ___GFP_DMA32 | ___GFP_DMA | ___GFP_HIGHMEM)  \
 )
 
-static inline enum zone_type gfp_zone(gfp_t flags)
+static inline enum zone_type __gfp_zone(gfp_t flags)
 {
 	enum zone_type z;
 	int bit = (__force int) (flags & GFP_ZONEMASK);
@@ -137,6 +134,8 @@ static inline enum zone_type gfp_zone(gfp_t flags)
 	return z;
 }
 
+enum zone_type gfp_zone(gfp_t flags);
+
 /*
  * There is only one page-allocator function, and two main namespaces to
  * it. The alloc_page*() variants return 'struct page *' and as such
diff --git a/include/linux/gfp_types.h b/include/linux/gfp_types.h
index d88c46c..872d1d5 100644
--- a/include/linux/gfp_types.h
+++ b/include/linux/gfp_types.h
@@ -55,10 +55,19 @@ typedef unsigned int __bitwise gfp_t;
 #define ___GFP_SKIP_KASAN_UNPOISON	0
 #define ___GFP_SKIP_KASAN_POISON	0
 #endif
-#ifdef CONFIG_LOCKDEP
-#define ___GFP_NOLOCKDEP	0x8000000u
+#ifdef CONFIG_CMA
+#define ___GFP_CMA			0x8000000u
 #else
-#define ___GFP_NOLOCKDEP	0
+#define ___GFP_CMA			0
+#endif
+#ifdef CONFIG_LOCKDEP
+#ifdef CONFIG_CMA
+#define ___GFP_NOLOCKDEP		0x10000000u
+#else
+#define ___GFP_NOLOCKDEP		0x8000000u
+#endif
+#else
+#define ___GFP_NOLOCKDEP		0
 #endif
 /* If the above are modified, __GFP_BITS_SHIFT may need updating */
 
@@ -73,6 +82,7 @@ typedef unsigned int __bitwise gfp_t;
 #define __GFP_HIGHMEM	((__force gfp_t)___GFP_HIGHMEM)
 #define __GFP_DMA32	((__force gfp_t)___GFP_DMA32)
 #define __GFP_MOVABLE	((__force gfp_t)___GFP_MOVABLE)  /* ZONE_MOVABLE allowed */
+#define __GFP_CMA	((__force gfp_t)___GFP_CMA)
 #define GFP_ZONEMASK	(__GFP_DMA|__GFP_HIGHMEM|__GFP_DMA32|__GFP_MOVABLE)
 
 /**
@@ -256,7 +266,7 @@ typedef unsigned int __bitwise gfp_t;
 #define __GFP_NOLOCKDEP ((__force gfp_t)___GFP_NOLOCKDEP)
 
 /* Room for N __GFP_FOO bits */
-#define __GFP_BITS_SHIFT (27 + IS_ENABLED(CONFIG_LOCKDEP))
+#define __GFP_BITS_SHIFT (27 + IS_ENABLED(CONFIG_LOCKDEP) + IS_ENABLED(CONFIG_CMA))
 #define __GFP_BITS_MASK ((__force gfp_t)((1 << __GFP_BITS_SHIFT) - 1))
 
 /**
diff --git a/include/linux/gpio/driver.h b/include/linux/gpio/driver.h
index 78bcb16..753983d 100644
--- a/include/linux/gpio/driver.h
+++ b/include/linux/gpio/driver.h
@@ -11,6 +11,7 @@
 #include <linux/pinctrl/pinconf-generic.h>
 #include <linux/property.h>
 #include <linux/types.h>
+#include <linux/android_kabi.h>
 
 #include <asm/msi.h>
 
@@ -315,6 +316,9 @@ struct gpio_irq_chip {
 	 * Store old irq_chip irq_mask callback
 	 */
 	void		(*irq_mask)(struct irq_data *data);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 /**
@@ -546,6 +550,9 @@ struct gpio_chip {
 				       struct device_node *np);
 
 #endif /* CONFIG_OF_GPIO */
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 extern const char *gpiochip_is_requested(struct gpio_chip *gc,
diff --git a/include/linux/gunyah.h b/include/linux/gunyah.h
new file mode 100644
index 0000000..1f16855
--- /dev/null
+++ b/include/linux/gunyah.h
@@ -0,0 +1,207 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+#ifndef _LINUX_GUNYAH_H
+#define _LINUX_GUNYAH_H
+
+#include <linux/bitfield.h>
+#include <linux/errno.h>
+#include <linux/interrupt.h>
+#include <linux/limits.h>
+#include <linux/mailbox_controller.h>
+#include <linux/mailbox_client.h>
+#include <linux/types.h>
+
+/* Matches resource manager's resource types for VM_GET_HYP_RESOURCES RPC */
+enum gh_resource_type {
+	GH_RESOURCE_TYPE_BELL_TX	= 0,
+	GH_RESOURCE_TYPE_BELL_RX	= 1,
+	GH_RESOURCE_TYPE_MSGQ_TX	= 2,
+	GH_RESOURCE_TYPE_MSGQ_RX	= 3,
+	GH_RESOURCE_TYPE_VCPU		= 4,
+};
+
+struct gh_resource {
+	enum gh_resource_type type;
+	u64 capid;
+	unsigned int irq;
+
+	struct list_head list;
+	u32 rm_label;
+};
+
+/**
+ * Gunyah Message Queues
+ */
+
+#define GH_MSGQ_MAX_MSG_SIZE		240
+
+struct gh_msgq_tx_data {
+	size_t length;
+	bool push;
+	char data[];
+};
+
+struct gh_msgq_rx_data {
+	size_t length;
+	char data[GH_MSGQ_MAX_MSG_SIZE];
+};
+
+struct gh_msgq {
+	struct gh_resource *tx_ghrsc;
+	struct gh_resource *rx_ghrsc;
+
+	/* msgq private */
+	int last_ret; /* Linux error, not GH_STATUS_* */
+	struct mbox_chan mbox_chan;
+	struct mbox_controller mbox;
+	struct tasklet_struct txdone_tasklet;
+};
+
+
+int gh_msgq_init(struct device *parent, struct gh_msgq *msgq, struct mbox_client *cl,
+		     struct gh_resource *tx_ghrsc, struct gh_resource *rx_ghrsc);
+void gh_msgq_remove(struct gh_msgq *msgq);
+
+static inline struct mbox_chan *gh_msgq_chan(struct gh_msgq *msgq)
+{
+	return &msgq->mbox.chans[0];
+}
+
+/******************************************************************************/
+/* Common arch-independent definitions for Gunyah hypercalls                  */
+
+#define GH_CAPID_INVAL	U64_MAX
+#define GH_VMID_ROOT_VM	0xff
+
+enum gh_error {
+	GH_ERROR_OK			= 0,
+	GH_ERROR_UNIMPLEMENTED		= -1,
+	GH_ERROR_RETRY			= -2,
+
+	GH_ERROR_ARG_INVAL		= 1,
+	GH_ERROR_ARG_SIZE		= 2,
+	GH_ERROR_ARG_ALIGN		= 3,
+
+	GH_ERROR_NOMEM			= 10,
+
+	GH_ERROR_ADDR_OVFL		= 20,
+	GH_ERROR_ADDR_UNFL		= 21,
+	GH_ERROR_ADDR_INVAL		= 22,
+
+	GH_ERROR_DENIED			= 30,
+	GH_ERROR_BUSY			= 31,
+	GH_ERROR_IDLE			= 32,
+
+	GH_ERROR_IRQ_BOUND		= 40,
+	GH_ERROR_IRQ_UNBOUND		= 41,
+
+	GH_ERROR_CSPACE_CAP_NULL	= 50,
+	GH_ERROR_CSPACE_CAP_REVOKED	= 51,
+	GH_ERROR_CSPACE_WRONG_OBJ_TYPE	= 52,
+	GH_ERROR_CSPACE_INSUF_RIGHTS	= 53,
+	GH_ERROR_CSPACE_FULL		= 54,
+
+	GH_ERROR_MSGQUEUE_EMPTY		= 60,
+	GH_ERROR_MSGQUEUE_FULL		= 61,
+};
+
+/**
+ * gh_error_remap() - Remap Gunyah hypervisor errors into a Linux error code
+ * @gh_error: Gunyah hypercall return value
+ */
+static inline int gh_error_remap(enum gh_error gh_error)
+{
+	switch (gh_error) {
+	case GH_ERROR_OK:
+		return 0;
+	case GH_ERROR_NOMEM:
+		return -ENOMEM;
+	case GH_ERROR_DENIED:
+	case GH_ERROR_CSPACE_CAP_NULL:
+	case GH_ERROR_CSPACE_CAP_REVOKED:
+	case GH_ERROR_CSPACE_WRONG_OBJ_TYPE:
+	case GH_ERROR_CSPACE_INSUF_RIGHTS:
+	case GH_ERROR_CSPACE_FULL:
+		return -EACCES;
+	case GH_ERROR_BUSY:
+	case GH_ERROR_IDLE:
+		return -EBUSY;
+	case GH_ERROR_IRQ_BOUND:
+	case GH_ERROR_IRQ_UNBOUND:
+	case GH_ERROR_MSGQUEUE_FULL:
+	case GH_ERROR_MSGQUEUE_EMPTY:
+		return -EIO;
+	case GH_ERROR_UNIMPLEMENTED:
+	case GH_ERROR_RETRY:
+		return -EOPNOTSUPP;
+	default:
+		return -EINVAL;
+	}
+}
+
+enum gh_api_feature {
+	GH_FEATURE_DOORBELL 	= 1,
+	GH_FEATURE_MSGQUEUE 	= 2,
+	GH_FEATURE_VCPU 	= 5,
+	GH_FEATURE_MEMEXTENT 	= 6,
+};
+
+bool arch_is_gh_guest(void);
+
+#define GH_API_V1			1
+
+/* Other bits reserved for future use and will be zero */
+#define GH_API_INFO_API_VERSION_MASK	GENMASK_ULL(13, 0)
+#define GH_API_INFO_BIG_ENDIAN		BIT_ULL(14)
+#define GH_API_INFO_IS_64BIT		BIT_ULL(15)
+#define GH_API_INFO_VARIANT_MASK	GENMASK_ULL(63, 56)
+
+struct gh_hypercall_hyp_identify_resp {
+	u64 api_info;
+	u64 flags[3];
+};
+
+static inline u16 gh_api_version(const struct gh_hypercall_hyp_identify_resp *gh_api)
+{
+	return FIELD_GET(GH_API_INFO_API_VERSION_MASK, gh_api->api_info);
+}
+
+void gh_hypercall_hyp_identify(struct gh_hypercall_hyp_identify_resp *hyp_identity);
+
+enum gh_error gh_hypercall_bell_send(u64 capid, u64 new_flags, u64 *old_flags);
+enum gh_error gh_hypercall_bell_set_mask(u64 capid, u64 enable_mask, u64 ack_mask);
+
+#define GH_HYPERCALL_MSGQ_TX_FLAGS_PUSH		BIT(0)
+
+enum gh_error gh_hypercall_msgq_send(u64 capid, size_t size, void *buff, u64 tx_flags, bool *ready);
+enum gh_error gh_hypercall_msgq_recv(u64 capid, void *buff, size_t size, size_t *recv_size,
+					bool *ready);
+
+struct gh_hypercall_vcpu_run_resp {
+	union {
+		enum {
+			/* VCPU is ready to run */
+			GH_VCPU_STATE_READY		= 0,
+			/* VCPU is sleeping until an interrupt arrives */
+			GH_VCPU_STATE_EXPECTS_WAKEUP	= 1,
+			/* VCPU is powered off */
+			GH_VCPU_STATE_POWERED_OFF	= 2,
+			/* VCPU is blocked in EL2 for unspecified reason */
+			GH_VCPU_STATE_BLOCKED		= 3,
+			/* VCPU has returned for MMIO READ */
+			GH_VCPU_ADDRSPACE_VMMIO_READ	= 4,
+			/* VCPU has returned for MMIO WRITE */
+			GH_VCPU_ADDRSPACE_VMMIO_WRITE	= 5,
+		} state;
+		u64 sized_state;
+	};
+	u64 state_data[3];
+};
+
+enum gh_error gh_hypercall_vcpu_run(u64 capid, u64 *resume_data,
+					struct gh_hypercall_vcpu_run_resp *resp);
+
+#endif
diff --git a/include/linux/gunyah_rsc_mgr.h b/include/linux/gunyah_rsc_mgr.h
new file mode 100644
index 0000000..bc55be6
--- /dev/null
+++ b/include/linux/gunyah_rsc_mgr.h
@@ -0,0 +1,181 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+#ifndef _GUNYAH_RSC_MGR_H
+#define _GUNYAH_RSC_MGR_H
+
+#include <linux/android_vendor.h>
+#include <linux/list.h>
+#include <linux/notifier.h>
+#include <linux/gunyah.h>
+
+#define GH_VMID_INVAL		U16_MAX
+#define GH_MEM_HANDLE_INVAL	U32_MAX
+
+struct gh_rm;
+int gh_rm_call(void *rm, u32 message_id, const void *req_buf, size_t req_buf_size,
+		void **resp_buf, size_t *resp_buf_size);
+int gh_rm_notifier_register(void *rm, struct notifier_block *nb);
+int gh_rm_notifier_unregister(void *rm, struct notifier_block *nb);
+struct device *gh_rm_get(struct gh_rm *rm);
+void gh_rm_put(struct gh_rm *rm);
+
+struct gh_rm_vm_exited_payload {
+	__le16 vmid;
+	__le16 exit_type;
+	__le32 exit_reason_size;
+	u8 exit_reason[];
+} __packed;
+
+#define GH_RM_NOTIFICATION_VM_EXITED		 0x56100001
+
+enum gh_rm_vm_status {
+	GH_RM_VM_STATUS_NO_STATE	= 0,
+	GH_RM_VM_STATUS_INIT		= 1,
+	GH_RM_VM_STATUS_READY		= 2,
+	GH_RM_VM_STATUS_RUNNING		= 3,
+	GH_RM_VM_STATUS_PAUSED		= 4,
+	GH_RM_VM_STATUS_LOAD		= 5,
+	GH_RM_VM_STATUS_AUTH		= 6,
+	GH_RM_VM_STATUS_INIT_FAILED	= 8,
+	GH_RM_VM_STATUS_EXITED		= 9,
+	GH_RM_VM_STATUS_RESETTING	= 10,
+	GH_RM_VM_STATUS_RESET		= 11,
+};
+
+struct gh_rm_vm_status_payload {
+	__le16 vmid;
+	u16 reserved;
+	u8 vm_status;
+	u8 os_status;
+	__le16 app_status;
+} __packed;
+
+#define GH_RM_NOTIFICATION_VM_STATUS		 0x56100008
+
+#define GH_RM_ACL_X		BIT(0)
+#define GH_RM_ACL_W		BIT(1)
+#define GH_RM_ACL_R		BIT(2)
+
+struct gh_rm_mem_acl_entry {
+	__le16 vmid;
+	u8 perms;
+	u8 reserved;
+} __packed;
+
+struct gh_rm_mem_entry {
+	__le64 phys_addr;
+	__le64 size;
+} __packed;
+
+enum gh_rm_mem_type {
+	GH_RM_MEM_TYPE_NORMAL	= 0,
+	GH_RM_MEM_TYPE_IO	= 1,
+};
+
+/*
+ * struct gh_rm_mem_parcel - Info about memory to be lent/shared/donated/reclaimed
+ * @mem_type: The type of memory: normal (DDR) or IO
+ * @label: An client-specified identifier which can be used by the other VMs to identify the purpose
+ *         of the memory parcel.
+ * @n_acl_entries: Count of the number of entries in the @acl_entries array.
+ * @acl_entries: An array of access control entries. Each entry specifies a VM and what access
+ *               is allowed for the memory parcel.
+ * @n_mem_entries: Count of the number of entries in the @mem_entries array.
+ * @mem_entries: An array of regions to be associated with the memory parcel. Addresses should be
+ *               (intermediate) physical addresses from Linux's perspective.
+ * @mem_handle: On success, filled with memory handle that RM allocates for this memory parcel
+ */
+struct gh_rm_mem_parcel {
+	enum gh_rm_mem_type mem_type;
+	u32 label;
+	size_t n_acl_entries;
+	struct gh_rm_mem_acl_entry *acl_entries;
+	size_t n_mem_entries;
+	struct gh_rm_mem_entry *mem_entries;
+	u32 mem_handle;
+
+	ANDROID_BACKPORT_RESERVED(1);
+	ANDROID_BACKPORT_RESERVED(2);
+	ANDROID_BACKPORT_RESERVED(3);
+	ANDROID_BACKPORT_RESERVED(4);
+	ANDROID_BACKPORT_RESERVED(5);
+	ANDROID_BACKPORT_RESERVED(6);
+	ANDROID_BACKPORT_RESERVED(7);
+	ANDROID_BACKPORT_RESERVED(8);
+};
+
+/* RPC Calls */
+int gh_rm_mem_lend(struct gh_rm *rm, struct gh_rm_mem_parcel *parcel);
+int gh_rm_mem_share(struct gh_rm *rm, struct gh_rm_mem_parcel *parcel);
+int gh_rm_mem_reclaim(struct gh_rm *rm, struct gh_rm_mem_parcel *parcel);
+
+int gh_rm_alloc_vmid(struct gh_rm *rm, u16 vmid);
+int gh_rm_dealloc_vmid(struct gh_rm *rm, u16 vmid);
+int gh_rm_vm_reset(struct gh_rm *rm, u16 vmid);
+int gh_rm_vm_start(struct gh_rm *rm, u16 vmid);
+int gh_rm_vm_stop(struct gh_rm *rm, u16 vmid);
+int gh_rm_vm_set_firmware_mem(struct gh_rm *rm, u16 vmid, struct gh_rm_mem_parcel *parcel,
+				u64 fw_offset, u64 fw_size);
+
+enum gh_rm_vm_auth_mechanism {
+	GH_RM_VM_AUTH_NONE		= 0,
+	GH_RM_VM_AUTH_QCOM_PIL_ELF	= 1,
+	GH_RM_VM_AUTH_QCOM_ANDROID_PVM	= 2,
+};
+
+int gh_rm_vm_configure(struct gh_rm *rm, u16 vmid, enum gh_rm_vm_auth_mechanism auth_mechanism,
+			u32 mem_handle, u64 image_offset, u64 image_size,
+			u64 dtb_offset, u64 dtb_size);
+int gh_rm_vm_init(struct gh_rm *rm, u16 vmid);
+
+struct gh_rm_hyp_resource {
+	u8 type;
+	u8 reserved;
+	__le16 partner_vmid;
+	__le32 resource_handle;
+	__le32 resource_label;
+	__le64 cap_id;
+	__le32 virq_handle;
+	__le32 virq;
+	__le64 base;
+	__le64 size;
+} __packed;
+
+struct gh_rm_hyp_resources {
+	__le32 n_entries;
+	struct gh_rm_hyp_resource entries[];
+} __packed;
+
+int gh_rm_get_hyp_resources(struct gh_rm *rm, u16 vmid,
+				struct gh_rm_hyp_resources **resources);
+int gh_rm_get_vmid(struct gh_rm *rm, u16 *vmid);
+
+struct gh_resource *gh_rm_alloc_resource(struct gh_rm *rm, struct gh_rm_hyp_resource *hyp_resource);
+void gh_rm_free_resource(struct gh_resource *ghrsc);
+
+struct gh_rm_platform_ops {
+	int (*pre_mem_share)(void *rm, struct gh_rm_mem_parcel *mem_parcel);
+	int (*post_mem_reclaim)(void *rm, struct gh_rm_mem_parcel *mem_parcel);
+
+	ANDROID_BACKPORT_RESERVED(1);
+	ANDROID_BACKPORT_RESERVED(2);
+	ANDROID_BACKPORT_RESERVED(3);
+	ANDROID_BACKPORT_RESERVED(4);
+};
+
+#if IS_ENABLED(CONFIG_GUNYAH_PLATFORM_HOOKS)
+int gh_rm_register_platform_ops(const struct gh_rm_platform_ops *platform_ops);
+void gh_rm_unregister_platform_ops(const struct gh_rm_platform_ops *platform_ops);
+int devm_gh_rm_register_platform_ops(struct device *dev, const struct gh_rm_platform_ops *ops);
+#else
+static inline int gh_rm_register_platform_ops(const struct gh_rm_platform_ops *platform_ops)
+	{ return 0; }
+static inline void gh_rm_unregister_platform_ops(const struct gh_rm_platform_ops *platform_ops) { }
+static inline int devm_gh_rm_register_platform_ops(struct device *dev,
+	const struct gh_rm_platform_ops *ops) { return 0; }
+#endif
+
+#endif
diff --git a/include/linux/gunyah_vm_mgr.h b/include/linux/gunyah_vm_mgr.h
new file mode 100644
index 0000000..527e946
--- /dev/null
+++ b/include/linux/gunyah_vm_mgr.h
@@ -0,0 +1,153 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+#ifndef _GUNYAH_VM_MGR_H
+#define _GUNYAH_VM_MGR_H
+
+#include <linux/compiler_types.h>
+#include <linux/gunyah.h>
+#include <linux/gunyah_rsc_mgr.h>
+#include <linux/list.h>
+#include <linux/mod_devicetable.h>
+#include <linux/notifier.h>
+
+#include <uapi/linux/gunyah.h>
+
+struct gh_vm;
+
+int __must_check gh_vm_get(struct gh_vm *ghvm);
+void gh_vm_put(struct gh_vm *ghvm);
+
+struct gh_vm_function_instance;
+/**
+ * struct gh_vm_function - Represents a function type
+ * @type: value from &enum gh_fn_type
+ * @name: friendly name for debug purposes
+ * @mod: owner of the function type
+ * @bind: Called when a new function of this type has been allocated.
+ * @unbind: Called when the function instance is being destroyed.
+ * @compare: Compare function instance @f's argument to the provided arg.
+ *           Return true if they are equivalent. Used on GH_VM_REMOVE_FUNCTION.
+ */
+struct gh_vm_function {
+	u32 type;
+	const char *name;
+	struct module *mod;
+	long (*bind)(struct gh_vm_function_instance *f);
+	void (*unbind)(struct gh_vm_function_instance *f);
+	bool (*compare)(const struct gh_vm_function_instance *f, const void *arg, size_t size);
+};
+
+/**
+ * struct gh_vm_function_instance - Represents one function instance
+ * @arg_size: size of user argument
+ * @argp: pointer to user argument
+ * @ghvm: Pointer to VM instance
+ * @rm: Pointer to resource manager for the VM instance
+ * @fn: The ops for the function
+ * @data: Private data for function
+ * @vm_list: for gh_vm's functions list
+ * @fn_list: for gh_vm_function's instances list
+ */
+struct gh_vm_function_instance {
+	size_t arg_size;
+	void *argp;
+	struct gh_vm *ghvm;
+	struct gh_rm *rm;
+	struct gh_vm_function *fn;
+	void *data;
+	struct list_head vm_list;
+};
+
+int gh_vm_function_register(struct gh_vm_function *f);
+void gh_vm_function_unregister(struct gh_vm_function *f);
+
+/* Since the function identifiers were setup in a uapi header as an
+ * enum and we do no want to change that, the user must supply the expanded
+ * constant as well and the compiler checks they are the same.
+ * See also MODULE_ALIAS_RDMA_NETLINK.
+ */
+#define MODULE_ALIAS_GH_VM_FUNCTION(_type, _idx)			\
+	static inline void __maybe_unused __chk##_idx(void)		\
+	{								\
+		BUILD_BUG_ON(_type != _idx);				\
+	}								\
+	MODULE_ALIAS("ghfunc:" __stringify(_idx))
+
+#define DECLARE_GH_VM_FUNCTION(_name, _type, _bind, _unbind, _compare)	\
+	static struct gh_vm_function _name = {				\
+		.type = _type,						\
+		.name = __stringify(_name),				\
+		.mod = THIS_MODULE,					\
+		.bind = _bind,						\
+		.unbind = _unbind,					\
+		.compare = _compare,					\
+	}
+
+#define module_gh_vm_function(__gf)					\
+	module_driver(__gf, gh_vm_function_register, gh_vm_function_unregister)
+
+#define DECLARE_GH_VM_FUNCTION_INIT(_name, _type, _idx, _bind, _unbind, _compare)	\
+	DECLARE_GH_VM_FUNCTION(_name, _type, _bind, _unbind, _compare);			\
+	module_gh_vm_function(_name);							\
+	MODULE_ALIAS_GH_VM_FUNCTION(_type, _idx)
+
+/**
+ * struct gh_vm_resource_ticket - Represents a ticket to reserve exclusive access to VM resource(s)
+ * @vm_list: for @gh_vm->resource_tickets
+ * @resources: List of resource(s) associated with this ticket(members are from @gh_resource->list)
+ * @resource_type: Type of resource this ticket reserves
+ * @label: Label of the resource from resource manager this ticket reserves.
+ * @owner: owner of the ticket
+ * @populate: callback provided by the ticket owner and called when a resource is found that
+ *            matches @resource_type and @label. Note that this callback could be called
+ *            multiple times if userspace created mutliple resources with the same type/label.
+ *            This callback may also have significant delay after gh_vm_add_resource_ticket()
+ *            since gh_vm_add_resource_ticket() could be called before the VM starts.
+ * @unpopulate: callback provided by the ticket owner and called when the ticket owner should no
+ *              no longer use the resource provided in the argument. When unpopulate() returns,
+ *              the ticket owner should not be able to use the resource any more as the resource
+ *              might being freed.
+ */
+struct gh_vm_resource_ticket {
+	struct list_head vm_list;
+	struct list_head resources;
+	enum gh_resource_type resource_type;
+	u32 label;
+
+	struct module *owner;
+	bool (*populate)(struct gh_vm_resource_ticket *ticket, struct gh_resource *ghrsc);
+	void (*unpopulate)(struct gh_vm_resource_ticket *ticket, struct gh_resource *ghrsc);
+};
+
+int gh_vm_add_resource_ticket(struct gh_vm *ghvm, struct gh_vm_resource_ticket *ticket);
+void gh_vm_remove_resource_ticket(struct gh_vm *ghvm, struct gh_vm_resource_ticket *ticket);
+
+/*
+ * gh_vm_io_handler contains the info about an io device and its associated
+ * addr and the ops associated with the io device.
+ */
+struct gh_vm_io_handler {
+	struct rb_node node;
+	u64 addr;
+
+	bool datamatch;
+	u8 len;
+	u64 data;
+	struct gh_vm_io_handler_ops *ops;
+};
+
+/*
+ * gh_vm_io_handler_ops contains function pointers associated with an iodevice.
+ */
+struct gh_vm_io_handler_ops {
+	int (*read)(struct gh_vm_io_handler *io_dev, u64 addr, u32 len, u64 data);
+	int (*write)(struct gh_vm_io_handler *io_dev, u64 addr, u32 len, u64 data);
+};
+
+int gh_vm_add_io_handler(struct gh_vm *ghvm, struct gh_vm_io_handler *io_dev);
+void gh_vm_remove_io_handler(struct gh_vm *ghvm, struct gh_vm_io_handler *io_dev);
+
+#endif
diff --git a/include/linux/hid.h b/include/linux/hid.h
index 0a1ccc6..9e23ae6 100644
--- a/include/linux/hid.h
+++ b/include/linux/hid.h
@@ -26,6 +26,7 @@
 #include <linux/mutex.h>
 #include <linux/power_supply.h>
 #include <uapi/linux/hid.h>
+#include <linux/android_kabi.h>
 
 /*
  * We parse each description item into this structure. Short items data
@@ -155,6 +156,7 @@ struct hid_item {
 #define HID_UP_DIGITIZER	0x000d0000
 #define HID_UP_PID		0x000f0000
 #define HID_UP_BATTERY		0x00850000
+#define HID_UP_CAMERA 		0x00900000
 #define HID_UP_HPVENDOR         0xff7f0000
 #define HID_UP_HPVENDOR2        0xff010000
 #define HID_UP_MSVENDOR		0xff000000
@@ -511,6 +513,7 @@ struct hid_report {
 	/* tool related state */
 	bool tool_active;				/* whether the current tool is active */
 	unsigned int tool;				/* BTN_TOOL_* */
+	ANDROID_KABI_RESERVE(1);
 };
 
 #define HID_MAX_IDS 256
@@ -555,6 +558,7 @@ struct hid_input {
 	bool registered;
 	struct list_head reports;	/* the list of reports */
 	unsigned int application;	/* application usage for this input */
+	ANDROID_KABI_RESERVE(1);
 };
 
 enum hid_type {
@@ -652,6 +656,9 @@ struct hid_device {							/* device report descriptor */
 	wait_queue_head_t debug_wait;
 
 	unsigned int id;						/* system unique id */
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 #define to_hid_device(pdev) \
@@ -684,6 +691,7 @@ struct hid_parser {
 	unsigned int          collection_stack_size;
 	struct hid_device    *device;
 	unsigned int          scan_flags;
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct hid_class_descriptor {
@@ -805,6 +813,9 @@ struct hid_driver {
 	int (*resume)(struct hid_device *hdev);
 	int (*reset_resume)(struct hid_device *hdev);
 #endif
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
 /* private: */
 	struct device_driver driver;
 };
@@ -827,7 +838,6 @@ struct hid_driver {
  * @output_report: send output report to device
  * @idle: send idle request to device
  * @may_wakeup: return if device may act as a wakeup source during system-suspend
- * @max_buffer_size: over-ride maximum data buffer size (default: HID_MAX_BUFFER_SIZE)
  */
 struct hid_ll_driver {
 	int (*start)(struct hid_device *hdev);
@@ -853,8 +863,8 @@ struct hid_ll_driver {
 
 	int (*idle)(struct hid_device *hdev, int report, int idle, int reqtype);
 	bool (*may_wakeup)(struct hid_device *hdev);
-
-	unsigned int max_buffer_size;
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 extern struct hid_ll_driver i2c_hid_ll_driver;
diff --git a/include/linux/highmem.h b/include/linux/highmem.h
index e9912da..94b50dc 100644
--- a/include/linux/highmem.h
+++ b/include/linux/highmem.h
@@ -227,7 +227,7 @@ static inline struct page *
 alloc_zeroed_user_highpage_movable(struct vm_area_struct *vma,
 				   unsigned long vaddr)
 {
-	struct page *page = alloc_page_vma(GFP_HIGHUSER_MOVABLE, vma, vaddr);
+	struct page *page = alloc_page_vma(GFP_HIGHUSER_MOVABLE | __GFP_CMA, vma, vaddr);
 
 	if (page)
 		clear_user_highpage(page, vaddr);
diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h
index 0ee1401..f5d4392 100644
--- a/include/linux/hrtimer.h
+++ b/include/linux/hrtimer.h
@@ -20,6 +20,7 @@
 #include <linux/seqlock.h>
 #include <linux/timer.h>
 #include <linux/timerqueue.h>
+#include <linux/android_kabi.h>
 
 struct hrtimer_clock_base;
 struct hrtimer_cpu_base;
@@ -124,6 +125,8 @@ struct hrtimer {
 	u8				is_rel;
 	u8				is_soft;
 	u8				is_hard;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
diff --git a/include/linux/input.h b/include/linux/input.h
index 49790c1..93ea60f 100644
--- a/include/linux/input.h
+++ b/include/linux/input.h
@@ -7,6 +7,7 @@
 
 #include <linux/time.h>
 #include <linux/list.h>
+#include <linux/android_kabi.h>
 #include <uapi/linux/input.h>
 /* Implementation details, userspace should not care about these */
 #define ABS_MT_FIRST		ABS_MT_TOUCH_MAJOR
@@ -209,6 +210,11 @@ struct input_dev {
 	ktime_t timestamp[INPUT_CLK_MAX];
 
 	bool inhibited;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 #define to_input_dev(d) container_of(d, struct input_dev, dev)
 
@@ -328,6 +334,8 @@ struct input_handler {
 
 	struct list_head	h_list;
 	struct list_head	node;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -354,6 +362,8 @@ struct input_handle {
 
 	struct list_head	d_node;
 	struct list_head	h_node;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct input_dev __must_check *input_allocate_device(void);
@@ -562,6 +572,9 @@ struct ff_device {
 
 	int max_effects;
 	struct ff_effect *effects;
+
+	ANDROID_KABI_RESERVE(1);
+
 	struct file *effect_owners[];
 };
 
diff --git a/include/linux/intel-svm.h b/include/linux/intel-svm.h
index 207ef06..f9a0d44 100644
--- a/include/linux/intel-svm.h
+++ b/include/linux/intel-svm.h
@@ -13,17 +13,4 @@
 #define PRQ_RING_MASK	((0x1000 << PRQ_ORDER) - 0x20)
 #define PRQ_DEPTH	((0x1000 << PRQ_ORDER) >> 5)
 
-/*
- * The SVM_FLAG_SUPERVISOR_MODE flag requests a PASID which can be used only
- * for access to kernel addresses. No IOTLB flushes are automatically done
- * for kernel mappings; it is valid only for access to the kernel's static
- * 1:1 mapping of physical memory — not to vmalloc or even module mappings.
- * A future API addition may permit the use of such ranges, by means of an
- * explicit IOTLB flush call (akin to the DMA API's unmap method).
- *
- * It is unlikely that we will ever hook into flush_tlb_kernel_range() to
- * do such IOTLB flushes automatically.
- */
-#define SVM_FLAG_SUPERVISOR_MODE	BIT(0)
-
 #endif /* __INTEL_SVM_H__ */
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
index a92bce4..7d09eb9 100644
--- a/include/linux/interrupt.h
+++ b/include/linux/interrupt.h
@@ -527,6 +527,17 @@ DECLARE_STATIC_KEY_FALSE(force_irqthreads_key);
 #define set_softirq_pending(x)	(__this_cpu_write(local_softirq_pending_ref, (x)))
 #define or_softirq_pending(x)	(__this_cpu_or(local_softirq_pending_ref, (x)))
 
+/**
+ * __cpu_softirq_pending() - Checks to see if softirq is pending on a cpu
+ *
+ * This helper is inherently racy, as we're accessing per-cpu data w/o locks.
+ * But peeking at the flag can still be useful when deciding where to place a
+ * task.
+ */
+static inline u32 __cpu_softirq_pending(int cpu)
+{
+	return (u32)per_cpu(local_softirq_pending_ref, cpu);
+}
 #endif /* local_softirq_pending */
 
 /* Some architectures might implement lazy enabling/disabling of
@@ -571,6 +582,11 @@ enum
  * _ IRQ_POLL: irq_poll_cpu_dead() migrates the queue
  */
 #define SOFTIRQ_HOTPLUG_SAFE_MASK (BIT(RCU_SOFTIRQ) | BIT(IRQ_POLL_SOFTIRQ))
+/* Softirq's where the handling might be long: */
+#define LONG_SOFTIRQ_MASK (BIT(NET_TX_SOFTIRQ)    | \
+			   BIT(NET_RX_SOFTIRQ)    | \
+			   BIT(BLOCK_SOFTIRQ)     | \
+			   BIT(IRQ_POLL_SOFTIRQ))
 
 /* map softirq index to softirq name. update 'softirq_to_name' in
  * kernel/softirq.c when adding a new softirq.
@@ -607,6 +623,10 @@ extern void raise_softirq(unsigned int nr);
 
 DECLARE_PER_CPU(struct task_struct *, ksoftirqd);
 
+#ifdef CONFIG_RT_SOFTIRQ_AWARE_SCHED
+DECLARE_PER_CPU(u32, active_softirqs);
+#endif
+
 static inline struct task_struct *this_cpu_ksoftirqd(void)
 {
 	return this_cpu_read(ksoftirqd);
diff --git a/include/linux/io.h b/include/linux/io.h
index 308f4f0..f63b096 100644
--- a/include/linux/io.h
+++ b/include/linux/io.h
@@ -21,6 +21,8 @@ void __ioread32_copy(void *to, const void __iomem *from, size_t count);
 void __iowrite64_copy(void __iomem *to, const void *from, size_t count);
 
 #ifdef CONFIG_MMU
+void ioremap_phys_range_hook(phys_addr_t phys_addr, size_t size, pgprot_t prot);
+void iounmap_phys_range_hook(phys_addr_t phys_addr, size_t size);
 int ioremap_page_range(unsigned long addr, unsigned long end,
 		       phys_addr_t phys_addr, pgprot_t prot);
 #else
diff --git a/include/linux/iomap.h b/include/linux/iomap.h
index 238a030..db3d725 100644
--- a/include/linux/iomap.h
+++ b/include/linux/iomap.h
@@ -9,6 +9,7 @@
 #include <linux/types.h>
 #include <linux/mm_types.h>
 #include <linux/blkdev.h>
+#include <linux/android_kabi.h>
 
 struct address_space;
 struct fiemap_extent_info;
@@ -89,6 +90,8 @@ struct iomap {
 	void			*inline_data;
 	void			*private; /* filesystem private */
 	const struct iomap_page_ops *page_ops;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 static inline sector_t iomap_sector(const struct iomap *iomap, loff_t pos)
@@ -165,6 +168,9 @@ struct iomap_ops {
 	 */
 	int (*iomap_end)(struct inode *inode, loff_t pos, loff_t length,
 			ssize_t written, unsigned flags, struct iomap *iomap);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 /**
diff --git a/include/linux/iommu.h b/include/linux/iommu.h
index 3c9da1f..9ff1310 100644
--- a/include/linux/iommu.h
+++ b/include/linux/iommu.h
@@ -31,6 +31,18 @@
  * if the IOMMU page table format is equivalent.
  */
 #define IOMMU_PRIV	(1 << 5)
+/*
+ * Allow caching in a transparent outer level of cache, also known as
+ * the last-level or system cache, with a read/write allocation policy.
+ * Does not depend on IOMMU_CACHE. Incompatible with IOMMU_SYS_CACHE_NWA.
+ */
+#define IOMMU_SYS_CACHE	(1 << 6)
+/*
+ * Allow caching in a transparent outer level of cache, also known as
+ * the last-level or system cache, with a read allocation policy.
+ * Does not depend on IOMMU_CACHE. Incompatible with IOMMU_SYS_CACHE.
+ */
+#define IOMMU_SYS_CACHE_NWA (1 << 7)
 
 struct iommu_ops;
 struct iommu_group;
@@ -64,6 +76,8 @@ struct iommu_domain_geometry {
 #define __IOMMU_DOMAIN_PT	(1U << 2)  /* Domain is identity mapped   */
 #define __IOMMU_DOMAIN_DMA_FQ	(1U << 3)  /* DMA-API uses flush queue    */
 
+#define __IOMMU_DOMAIN_SVA	(1U << 4)  /* Shared process address space */
+
 /*
  * This are the possible domain-types
  *
@@ -77,6 +91,8 @@ struct iommu_domain_geometry {
  *				  certain optimizations for these domains
  *	IOMMU_DOMAIN_DMA_FQ	- As above, but definitely using batched TLB
  *				  invalidation.
+ *	IOMMU_DOMAIN_SVA	- DMA addresses are shared process addresses
+ *				  represented by mm_struct's.
  */
 #define IOMMU_DOMAIN_BLOCKED	(0U)
 #define IOMMU_DOMAIN_IDENTITY	(__IOMMU_DOMAIN_PT)
@@ -86,15 +102,27 @@ struct iommu_domain_geometry {
 #define IOMMU_DOMAIN_DMA_FQ	(__IOMMU_DOMAIN_PAGING |	\
 				 __IOMMU_DOMAIN_DMA_API |	\
 				 __IOMMU_DOMAIN_DMA_FQ)
+#define IOMMU_DOMAIN_SVA	(__IOMMU_DOMAIN_SVA)
 
 struct iommu_domain {
 	unsigned type;
 	const struct iommu_domain_ops *ops;
 	unsigned long pgsize_bitmap;	/* Bitmap of page sizes in use */
-	iommu_fault_handler_t handler;
-	void *handler_token;
 	struct iommu_domain_geometry geometry;
 	struct iommu_dma_cookie *iova_cookie;
+	enum iommu_page_response_code (*iopf_handler)(struct iommu_fault *fault,
+						      void *data);
+	void *fault_data;
+	union {
+		struct {
+			iommu_fault_handler_t handler;
+			void *handler_token;
+		};
+		struct {	/* IOMMU_DOMAIN_SVA */
+			struct mm_struct *mm;
+			int users;
+		};
+	};
 };
 
 static inline bool iommu_is_dma_domain(struct iommu_domain *domain)
@@ -214,15 +242,15 @@ struct iommu_iotlb_gather {
  *                      driver init to device driver init (default no)
  * @dev_enable/disable_feat: per device entries to enable/disable
  *                               iommu specific features.
- * @sva_bind: Bind process address space to device
- * @sva_unbind: Unbind process address space from device
- * @sva_get_pasid: Get PASID associated to a SVA handle
  * @page_response: handle page request response
  * @def_domain_type: device default domain type, return value:
  *		- IOMMU_DOMAIN_IDENTITY: must use an identity domain
  *		- IOMMU_DOMAIN_DMA: must use a dma domain
  *		- 0: use the default setting
  * @default_domain_ops: the default ops for domains
+ * @remove_dev_pasid: Remove any translation configurations of a specific
+ *                    pasid, so that any DMA transactions with this pasid
+ *                    will be blocked by the hardware.
  * @pgsize_bitmap: bitmap of all possible supported page sizes
  * @owner: Driver module providing these ops
  */
@@ -247,16 +275,12 @@ struct iommu_ops {
 	int (*dev_enable_feat)(struct device *dev, enum iommu_dev_features f);
 	int (*dev_disable_feat)(struct device *dev, enum iommu_dev_features f);
 
-	struct iommu_sva *(*sva_bind)(struct device *dev, struct mm_struct *mm,
-				      void *drvdata);
-	void (*sva_unbind)(struct iommu_sva *handle);
-	u32 (*sva_get_pasid)(struct iommu_sva *handle);
-
 	int (*page_response)(struct device *dev,
 			     struct iommu_fault_event *evt,
 			     struct iommu_page_response *msg);
 
 	int (*def_domain_type)(struct device *dev);
+	void (*remove_dev_pasid)(struct device *dev, ioasid_t pasid);
 
 	const struct iommu_domain_ops *default_domain_ops;
 	unsigned long pgsize_bitmap;
@@ -267,6 +291,7 @@ struct iommu_ops {
  * struct iommu_domain_ops - domain specific operations
  * @attach_dev: attach an iommu domain to a device
  * @detach_dev: detach an iommu domain from a device
+ * @set_dev_pasid: set an iommu domain to a pasid of device
  * @map: map a physically contiguous memory region to an iommu domain
  * @map_pages: map a physically contiguous set of pages of the same size to
  *             an iommu domain.
@@ -287,6 +312,8 @@ struct iommu_ops {
 struct iommu_domain_ops {
 	int (*attach_dev)(struct iommu_domain *domain, struct device *dev);
 	void (*detach_dev)(struct iommu_domain *domain, struct device *dev);
+	int (*set_dev_pasid)(struct iommu_domain *domain, struct device *dev,
+			     ioasid_t pasid);
 
 	int (*map)(struct iommu_domain *domain, unsigned long iova,
 		   phys_addr_t paddr, size_t size, int prot, gfp_t gfp);
@@ -322,12 +349,14 @@ struct iommu_domain_ops {
  * @list: Used by the iommu-core to keep a list of registered iommus
  * @ops: iommu-ops for talking to this iommu
  * @dev: struct device for sysfs handling
+ * @max_pasids: number of supported PASIDs
  */
 struct iommu_device {
 	struct list_head list;
 	const struct iommu_ops *ops;
 	struct fwnode_handle *fwnode;
 	struct device *dev;
+	u32 max_pasids;
 };
 
 /**
@@ -366,6 +395,7 @@ struct iommu_fault_param {
  * @fwspec:	 IOMMU fwspec data
  * @iommu_dev:	 IOMMU device this device is linked to
  * @priv:	 IOMMU Driver private data
+ * @max_pasids:  number of PASIDs this device can consume
  *
  * TODO: migrate other per device data pointers under iommu_dev_data, e.g.
  *	struct iommu_group	*iommu_group;
@@ -377,6 +407,7 @@ struct dev_iommu {
 	struct iommu_fwspec		*fwspec;
 	struct iommu_device		*iommu_dev;
 	void				*priv;
+	u32				max_pasids;
 };
 
 int iommu_device_register(struct iommu_device *iommu,
@@ -622,6 +653,7 @@ struct iommu_fwspec {
  */
 struct iommu_sva {
 	struct device			*dev;
+	struct iommu_domain		*domain;
 };
 
 int iommu_fwspec_init(struct device *dev, struct fwnode_handle *iommu_fwnode,
@@ -663,12 +695,6 @@ void iommu_release_device(struct device *dev);
 int iommu_dev_enable_feature(struct device *dev, enum iommu_dev_features f);
 int iommu_dev_disable_feature(struct device *dev, enum iommu_dev_features f);
 
-struct iommu_sva *iommu_sva_bind_device(struct device *dev,
-					struct mm_struct *mm,
-					void *drvdata);
-void iommu_sva_unbind_device(struct iommu_sva *handle);
-u32 iommu_sva_get_pasid(struct iommu_sva *handle);
-
 int iommu_device_use_default_domain(struct device *dev);
 void iommu_device_unuse_default_domain(struct device *dev);
 
@@ -676,6 +702,15 @@ int iommu_group_claim_dma_owner(struct iommu_group *group, void *owner);
 void iommu_group_release_dma_owner(struct iommu_group *group);
 bool iommu_group_dma_owner_claimed(struct iommu_group *group);
 
+struct iommu_domain *iommu_sva_domain_alloc(struct device *dev,
+					    struct mm_struct *mm);
+int iommu_attach_device_pasid(struct iommu_domain *domain,
+			      struct device *dev, ioasid_t pasid);
+void iommu_detach_device_pasid(struct iommu_domain *domain,
+			       struct device *dev, ioasid_t pasid);
+struct iommu_domain *
+iommu_get_domain_for_dev_pasid(struct device *dev, ioasid_t pasid,
+			       unsigned int type);
 #else /* CONFIG_IOMMU_API */
 
 struct iommu_ops {};
@@ -995,21 +1030,6 @@ iommu_dev_disable_feature(struct device *dev, enum iommu_dev_features feat)
 	return -ENODEV;
 }
 
-static inline struct iommu_sva *
-iommu_sva_bind_device(struct device *dev, struct mm_struct *mm, void *drvdata)
-{
-	return NULL;
-}
-
-static inline void iommu_sva_unbind_device(struct iommu_sva *handle)
-{
-}
-
-static inline u32 iommu_sva_get_pasid(struct iommu_sva *handle)
-{
-	return IOMMU_PASID_INVALID;
-}
-
 static inline struct iommu_fwspec *dev_iommu_fwspec_get(struct device *dev)
 {
 	return NULL;
@@ -1038,6 +1058,30 @@ static inline bool iommu_group_dma_owner_claimed(struct iommu_group *group)
 {
 	return false;
 }
+
+static inline struct iommu_domain *
+iommu_sva_domain_alloc(struct device *dev, struct mm_struct *mm)
+{
+	return NULL;
+}
+
+static inline int iommu_attach_device_pasid(struct iommu_domain *domain,
+					    struct device *dev, ioasid_t pasid)
+{
+	return -ENODEV;
+}
+
+static inline void iommu_detach_device_pasid(struct iommu_domain *domain,
+					     struct device *dev, ioasid_t pasid)
+{
+}
+
+static inline struct iommu_domain *
+iommu_get_domain_for_dev_pasid(struct device *dev, ioasid_t pasid,
+			       unsigned int type)
+{
+	return NULL;
+}
 #endif /* CONFIG_IOMMU_API */
 
 /**
@@ -1099,4 +1143,26 @@ static inline void iommu_dma_compose_msi_msg(struct msi_desc *desc, struct msi_m
 
 #endif	/* CONFIG_IOMMU_DMA */
 
+#ifdef CONFIG_IOMMU_SVA
+struct iommu_sva *iommu_sva_bind_device(struct device *dev,
+					struct mm_struct *mm);
+void iommu_sva_unbind_device(struct iommu_sva *handle);
+u32 iommu_sva_get_pasid(struct iommu_sva *handle);
+#else
+static inline struct iommu_sva *
+iommu_sva_bind_device(struct device *dev, struct mm_struct *mm)
+{
+	return NULL;
+}
+
+static inline void iommu_sva_unbind_device(struct iommu_sva *handle)
+{
+}
+
+static inline u32 iommu_sva_get_pasid(struct iommu_sva *handle)
+{
+	return IOMMU_PASID_INVALID;
+}
+#endif /* CONFIG_IOMMU_SVA */
+
 #endif /* __LINUX_IOMMU_H */
diff --git a/include/linux/ioport.h b/include/linux/ioport.h
index 27642ca..341bc839 100644
--- a/include/linux/ioport.h
+++ b/include/linux/ioport.h
@@ -14,6 +14,7 @@
 #include <linux/compiler.h>
 #include <linux/minmax.h>
 #include <linux/types.h>
+#include <linux/android_kabi.h>
 /*
  * Resources are tree-like, allowing
  * nesting etc..
@@ -25,6 +26,11 @@ struct resource {
 	unsigned long flags;
 	unsigned long desc;
 	struct resource *parent, *sibling, *child;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 /*
diff --git a/include/linux/iova.h b/include/linux/iova.h
index 83c00fa..54fb81b 100644
--- a/include/linux/iova.h
+++ b/include/linux/iova.h
@@ -13,6 +13,7 @@
 #include <linux/kernel.h>
 #include <linux/rbtree.h>
 #include <linux/dma-mapping.h>
+#include <linux/android_vendor.h>
 
 /* iova structure */
 struct iova {
@@ -38,6 +39,8 @@ struct iova_domain {
 
 	struct iova_rcache	*rcaches;
 	struct hlist_node	cpuhp_dead;
+
+	ANDROID_VENDOR_DATA(1);
 };
 
 static inline unsigned long iova_size(struct iova *iova)
diff --git a/include/linux/ipv6.h b/include/linux/ipv6.h
index 37dfdcf..2414f02 100644
--- a/include/linux/ipv6.h
+++ b/include/linux/ipv6.h
@@ -3,6 +3,7 @@
 #define _IPV6_H
 
 #include <uapi/linux/ipv6.h>
+#include <linux/android_kabi.h>
 
 #define ipv6_optlen(p)  (((p)->hdrlen+1) << 3)
 #define ipv6_authlen(p) (((p)->hdrlen+2) << 2)
@@ -43,6 +44,7 @@ struct ipv6_devconf {
 	__s32		accept_ra_rt_info_max_plen;
 #endif
 #endif
+	__s32		accept_ra_rt_table;
 	__s32		proxy_ndp;
 	__s32		accept_source_route;
 	__s32		accept_ra_from_local;
@@ -83,6 +85,11 @@ struct ipv6_devconf {
 	__u8		ndisc_evict_nocarrier;
 
 	struct ctl_table_header *sysctl_header;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 struct ipv6_params {
diff --git a/include/linux/irqchip/arm-gic-v3.h b/include/linux/irqchip/arm-gic-v3.h
index 7286913..d4a40c7 100644
--- a/include/linux/irqchip/arm-gic-v3.h
+++ b/include/linux/irqchip/arm-gic-v3.h
@@ -641,6 +641,20 @@ int its_init(struct fwnode_handle *handle, struct rdists *rdists,
 	     struct irq_domain *domain);
 int mbi_init(struct fwnode_handle *fwnode, struct irq_domain *parent);
 
+struct gic_chip_data_v3 {
+	struct fwnode_handle	*fwnode;
+	void __iomem		*dist_base;
+	struct redist_region	*redist_regions;
+	struct rdists		rdists;
+	struct irq_domain	*domain;
+	u64			redist_stride;
+	u32			nr_redist_regions;
+	u64			flags;
+	bool			has_rss;
+	unsigned int		ppi_nr;
+	struct partition_desc	**ppi_descs;
+};
+
 static inline bool gic_enable_sre(void)
 {
 	u32 val;
@@ -655,6 +669,12 @@ static inline bool gic_enable_sre(void)
 
 	return !!(val & ICC_SRE_EL1_SRE);
 }
+void gic_v3_dist_init(void);
+void gic_v3_cpu_init(void);
+void gic_v3_dist_wait_for_rwp(void);
+void gic_v3_resume(void);
+
+void gic_v3_resume(void);
 
 #endif
 
diff --git a/include/linux/irqdesc.h b/include/linux/irqdesc.h
index 844a8e3..e4b51ed 100644
--- a/include/linux/irqdesc.h
+++ b/include/linux/irqdesc.h
@@ -5,6 +5,7 @@
 #include <linux/rcupdate.h>
 #include <linux/kobject.h>
 #include <linux/mutex.h>
+#include <linux/android_vendor.h>
 
 /*
  * Core internal functions to deal with irq descriptors
@@ -102,6 +103,7 @@ struct irq_desc {
 	int			parent_irq;
 	struct module		*owner;
 	const char		*name;
+	ANDROID_VENDOR_DATA(1);
 } ____cacheline_internodealigned_in_smp;
 
 #ifdef CONFIG_SPARSE_IRQ
diff --git a/include/linux/irqdomain.h b/include/linux/irqdomain.h
index 00d577f..61492a5 100644
--- a/include/linux/irqdomain.h
+++ b/include/linux/irqdomain.h
@@ -35,6 +35,7 @@
 #include <linux/of.h>
 #include <linux/mutex.h>
 #include <linux/radix-tree.h>
+#include <linux/android_kabi.h>
 
 struct device_node;
 struct fwnode_handle;
@@ -178,6 +179,11 @@ struct irq_domain {
 	struct irq_domain *parent;
 #endif
 
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
+
 	/* reverse map data. The linear map gets appended to the irq_domain */
 	irq_hw_number_t hwirq_max;
 	unsigned int revmap_size;
diff --git a/include/linux/jump_label.h b/include/linux/jump_label.h
index 570831ca..27c9ce3 100644
--- a/include/linux/jump_label.h
+++ b/include/linux/jump_label.h
@@ -108,7 +108,7 @@ struct static_key {
 
 #endif /* __ASSEMBLY__ */
 
-#ifdef CONFIG_JUMP_LABEL
+#if defined(CONFIG_JUMP_LABEL) && !defined(BUILD_FIPS140_KO)
 #include <asm/jump_label.h>
 
 #ifndef __ASSEMBLY__
@@ -195,7 +195,30 @@ enum jump_label_type {
 
 struct module;
 
-#ifdef CONFIG_JUMP_LABEL
+#ifdef BUILD_FIPS140_KO
+
+#include <linux/atomic.h>
+
+static inline int static_key_count(struct static_key *key)
+{
+	return arch_atomic_read(&key->enabled);
+}
+
+static __always_inline bool static_key_false(struct static_key *key)
+{
+	if (unlikely(static_key_count(key) > 0))
+		return true;
+	return false;
+}
+
+static __always_inline bool static_key_true(struct static_key *key)
+{
+	if (likely(static_key_count(key) > 0))
+		return true;
+	return false;
+}
+
+#elif defined(CONFIG_JUMP_LABEL)
 
 #define JUMP_TYPE_FALSE		0UL
 #define JUMP_TYPE_TRUE		1UL
@@ -408,7 +431,7 @@ extern bool ____wrong_branch_error(void);
 	static_key_count((struct static_key *)x) > 0;				\
 })
 
-#ifdef CONFIG_JUMP_LABEL
+#if defined(CONFIG_JUMP_LABEL) && !defined(BUILD_FIPS140_KO)
 
 /*
  * Combine the right initial value (type) with the right branch order
diff --git a/include/linux/kasan.h b/include/linux/kasan.h
index d811b3d7..6293091 100644
--- a/include/linux/kasan.h
+++ b/include/linux/kasan.h
@@ -120,12 +120,13 @@ static __always_inline void kasan_poison_pages(struct page *page,
 		__kasan_poison_pages(page, order, init);
 }
 
-void __kasan_unpoison_pages(struct page *page, unsigned int order, bool init);
-static __always_inline void kasan_unpoison_pages(struct page *page,
+bool __kasan_unpoison_pages(struct page *page, unsigned int order, bool init);
+static __always_inline bool kasan_unpoison_pages(struct page *page,
 						 unsigned int order, bool init)
 {
 	if (kasan_enabled())
-		__kasan_unpoison_pages(page, order, init);
+		return __kasan_unpoison_pages(page, order, init);
+	return false;
 }
 
 void __kasan_cache_create_kmalloc(struct kmem_cache *cache);
@@ -249,8 +250,11 @@ static __always_inline bool kasan_check_byte(const void *addr)
 static inline void kasan_unpoison_range(const void *address, size_t size) {}
 static inline void kasan_poison_pages(struct page *page, unsigned int order,
 				      bool init) {}
-static inline void kasan_unpoison_pages(struct page *page, unsigned int order,
-					bool init) {}
+static inline bool kasan_unpoison_pages(struct page *page, unsigned int order,
+					bool init)
+{
+	return false;
+}
 static inline void kasan_cache_create_kmalloc(struct kmem_cache *cache) {}
 static inline void kasan_poison_slab(struct slab *slab) {}
 static inline void kasan_unpoison_object_data(struct kmem_cache *cache,
diff --git a/include/linux/kernfs.h b/include/linux/kernfs.h
index 73f5c12..87feb99 100644
--- a/include/linux/kernfs.h
+++ b/include/linux/kernfs.h
@@ -19,6 +19,7 @@
 #include <linux/wait.h>
 #include <linux/rwsem.h>
 #include <linux/cache.h>
+#include <linux/android_kabi.h>
 
 struct file;
 struct dentry;
@@ -223,6 +224,8 @@ struct kernfs_node {
 	unsigned short		flags;
 	umode_t			mode;
 	struct kernfs_iattrs	*iattr;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /*
@@ -242,6 +245,11 @@ struct kernfs_syscall_ops {
 		      const char *new_name);
 	int (*show_path)(struct seq_file *sf, struct kernfs_node *kn,
 			 struct kernfs_root *root);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 struct kernfs_node *kernfs_root_to_node(struct kernfs_root *root);
@@ -264,6 +272,8 @@ struct kernfs_open_file {
 	bool			mmapped:1;
 	bool			released:1;
 	const struct vm_operations_struct *vm_ops;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct kernfs_ops {
@@ -316,6 +326,9 @@ struct kernfs_ops {
 			 struct poll_table_struct *pt);
 
 	int (*mmap)(struct kernfs_open_file *of, struct vm_area_struct *vma);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 /*
diff --git a/include/linux/key-type.h b/include/linux/key-type.h
index 7d985a1..106f8d0 100644
--- a/include/linux/key-type.h
+++ b/include/linux/key-type.h
@@ -10,6 +10,7 @@
 
 #include <linux/key.h>
 #include <linux/errno.h>
+#include <linux/android_kabi.h>
 
 #ifdef CONFIG_KEYS
 
@@ -156,6 +157,9 @@ struct key_type {
 	int (*asym_verify_signature)(struct kernel_pkey_params *params,
 				     const void *in, const void *in2);
 
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+
 	/* internal fields */
 	struct list_head	link;		/* link in types list */
 	struct lock_class_key	lock_class;	/* key->sem lock class */
diff --git a/include/linux/kobject.h b/include/linux/kobject.h
index 592f978..9ebabad 100644
--- a/include/linux/kobject.h
+++ b/include/linux/kobject.h
@@ -27,6 +27,7 @@
 #include <linux/atomic.h>
 #include <linux/workqueue.h>
 #include <linux/uidgid.h>
+#include <linux/android_kabi.h>
 
 #define UEVENT_HELPER_PATH_LEN		256
 #define UEVENT_NUM_ENVP			64	/* number of env pointers */
@@ -77,6 +78,11 @@ struct kobject {
 	unsigned int state_add_uevent_sent:1;
 	unsigned int state_remove_uevent_sent:1;
 	unsigned int uevent_suppress:1;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 extern __printf(2, 3)
@@ -124,6 +130,11 @@ struct kobj_type {
 	const struct kobj_ns_type_operations *(*child_ns_type)(struct kobject *kobj);
 	const void *(*namespace)(struct kobject *kobj);
 	void (*get_ownership)(struct kobject *kobj, kuid_t *uid, kgid_t *gid);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 struct kobj_uevent_env {
@@ -174,6 +185,11 @@ struct kset {
 	spinlock_t list_lock;
 	struct kobject kobj;
 	const struct kset_uevent_ops *uevent_ops;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 } __randomize_layout;
 
 extern void kset_init(struct kset *kset);
diff --git a/include/linux/mailbox_client.h b/include/linux/mailbox_client.h
index 65229a4..7346949 100644
--- a/include/linux/mailbox_client.h
+++ b/include/linux/mailbox_client.h
@@ -37,6 +37,7 @@ struct mbox_client {
 	void (*tx_done)(struct mbox_client *cl, void *mssg, int r);
 };
 
+int mbox_bind_client(struct mbox_chan *chan, struct mbox_client *cl);
 struct mbox_chan *mbox_request_channel_byname(struct mbox_client *cl,
 					      const char *name);
 struct mbox_chan *mbox_request_channel(struct mbox_client *cl, int index);
diff --git a/include/linux/maple_tree.h b/include/linux/maple_tree.h
index e594db5..0ff8ce8 100644
--- a/include/linux/maple_tree.h
+++ b/include/linux/maple_tree.h
@@ -455,7 +455,9 @@ void *mas_erase(struct ma_state *mas);
 int mas_store_gfp(struct ma_state *mas, void *entry, gfp_t gfp);
 void mas_store_prealloc(struct ma_state *mas, void *entry);
 void *mas_find(struct ma_state *mas, unsigned long max);
+void *mas_find_range(struct ma_state *mas, unsigned long max);
 void *mas_find_rev(struct ma_state *mas, unsigned long min);
+void *mas_find_range_rev(struct ma_state *mas, unsigned long max);
 int mas_preallocate(struct ma_state *mas, void *entry, gfp_t gfp);
 bool mas_is_err(struct ma_state *mas);
 
@@ -466,7 +468,9 @@ void mas_destroy(struct ma_state *mas);
 int mas_expected_entries(struct ma_state *mas, unsigned long nr_entries);
 
 void *mas_prev(struct ma_state *mas, unsigned long min);
+void *mas_prev_range(struct ma_state *mas, unsigned long max);
 void *mas_next(struct ma_state *mas, unsigned long max);
+void *mas_next_range(struct ma_state *mas, unsigned long max);
 
 int mas_empty_area(struct ma_state *mas, unsigned long min, unsigned long max,
 		   unsigned long size);
@@ -522,7 +526,6 @@ static inline void mas_reset(struct ma_state *mas)
 #define mas_for_each(__mas, __entry, __max) \
 	while (((__entry) = mas_find((__mas), (__max))) != NULL)
 
-
 /**
  * mas_set_range() - Set up Maple Tree operation state for a different index.
  * @mas: Maple Tree operation state.
diff --git a/include/linux/mem_relinquish.h b/include/linux/mem_relinquish.h
new file mode 100644
index 0000000..b906c41
--- /dev/null
+++ b/include/linux/mem_relinquish.h
@@ -0,0 +1,21 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (C) 2022 Google LLC
+ * Author: Keir Fraser <keirf@google.com>
+ */
+
+#ifndef __MEM_RELINQUISH_H__
+#define __MEM_RELINQUISH_H__
+
+#ifdef CONFIG_MEMORY_RELINQUISH
+
+#include <asm/mem_relinquish.h>
+
+#else	/* !CONFIG_MEMORY_RELINQUISH */
+
+static inline bool kvm_has_memrelinquish_services(void) { return false; }
+static inline void page_relinquish(struct page *page) { }
+
+#endif	/* CONFIG_MEMORY_RELINQUISH */
+
+#endif	/* __MEM_RELINQUISH_H__ */
diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h
index e039763..bfdf81d 100644
--- a/include/linux/memcontrol.h
+++ b/include/linux/memcontrol.h
@@ -325,6 +325,8 @@ struct mem_cgroup {
 	struct lru_gen_mm_list mm_list;
 #endif
 
+	ANDROID_OEM_DATA_ARRAY(1, 2);
+
 	struct mem_cgroup_per_node *nodeinfo[];
 };
 
@@ -790,6 +792,11 @@ static inline void obj_cgroup_put(struct obj_cgroup *objcg)
 	percpu_ref_put(&objcg->refcnt);
 }
 
+static inline bool mem_cgroup_tryget(struct mem_cgroup *memcg)
+{
+	return !memcg || css_tryget(&memcg->css);
+}
+
 static inline void mem_cgroup_put(struct mem_cgroup *memcg)
 {
 	if (memcg)
@@ -1290,6 +1297,11 @@ static inline void obj_cgroup_put(struct obj_cgroup *objcg)
 {
 }
 
+static inline bool mem_cgroup_tryget(struct mem_cgroup *memcg)
+{
+	return true;
+}
+
 static inline void mem_cgroup_put(struct mem_cgroup *memcg)
 {
 }
diff --git a/include/linux/mm.h b/include/linux/mm.h
index e5e8acf..ab2f339 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -28,7 +28,9 @@
 #include <linux/sched.h>
 #include <linux/pgtable.h>
 #include <linux/kasan.h>
+#include <linux/page_pinner.h>
 #include <linux/memremap.h>
+#include <linux/android_kabi.h>
 
 struct mempolicy;
 struct anon_vma;
@@ -255,6 +257,8 @@ void setup_initial_init_mm(void *start_code, void *end_code,
 struct vm_area_struct *vm_area_alloc(struct mm_struct *);
 struct vm_area_struct *vm_area_dup(struct vm_area_struct *);
 void vm_area_free(struct vm_area_struct *);
+/* Use only if VMA has no other users */
+void __vm_area_free(struct vm_area_struct *vma);
 
 #ifndef CONFIG_MMU
 extern struct rb_root nommu_region_tree;
@@ -421,8 +425,8 @@ extern unsigned int kobjsize(const void *objp);
 /* This mask defines which mm->def_flags a process can inherit its parent */
 #define VM_INIT_DEF_MASK	VM_NOHUGEPAGE
 
-/* This mask is used to clear all the VMA flags used by mlock */
-#define VM_LOCKED_CLEAR_MASK	(~(VM_LOCKED | VM_LOCKONFAULT))
+/* This mask represents all the VMA flag bits used by mlock */
+#define VM_LOCKED_MASK	(VM_LOCKED | VM_LOCKONFAULT)
 
 /* Arch-specific flags to clear when updating VM flags on protection change */
 #ifndef VM_ARCH_CLEAR
@@ -472,7 +476,8 @@ static inline bool fault_flag_allow_retry_first(enum fault_flag flags)
 	{ FAULT_FLAG_USER,		"USER" }, \
 	{ FAULT_FLAG_REMOTE,		"REMOTE" }, \
 	{ FAULT_FLAG_INSTRUCTION,	"INSTRUCTION" }, \
-	{ FAULT_FLAG_INTERRUPTIBLE,	"INTERRUPTIBLE" }
+	{ FAULT_FLAG_INTERRUPTIBLE,	"INTERRUPTIBLE" }, \
+	{ FAULT_FLAG_VMA_LOCK,		"VMA_LOCK" }
 
 /*
  * vm_fault is filled by the pagefault handler and passed to the vma's
@@ -615,8 +620,124 @@ struct vm_operations_struct {
 	 */
 	struct page *(*find_special_page)(struct vm_area_struct *vma,
 					  unsigned long addr);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
+#ifdef CONFIG_PER_VMA_LOCK
+/*
+ * Try to read-lock a vma. The function is allowed to occasionally yield false
+ * locked result to avoid performance overhead, in which case we fall back to
+ * using mmap_lock. The function should never yield false unlocked result.
+ */
+static inline bool vma_start_read(struct vm_area_struct *vma)
+{
+	/* Check before locking. A race might cause false locked result. */
+	if (vma->vm_lock_seq == READ_ONCE(vma->vm_mm->mm_lock_seq))
+		return false;
+
+	if (unlikely(down_read_trylock(&vma->vm_lock->lock) == 0))
+		return false;
+
+	/*
+	 * Overflow might produce false locked result.
+	 * False unlocked result is impossible because we modify and check
+	 * vma->vm_lock_seq under vma->vm_lock protection and mm->mm_lock_seq
+	 * modification invalidates all existing locks.
+	 */
+	if (unlikely(vma->vm_lock_seq == READ_ONCE(vma->vm_mm->mm_lock_seq))) {
+		up_read(&vma->vm_lock->lock);
+		return false;
+	}
+	return true;
+}
+
+static inline void vma_end_read(struct vm_area_struct *vma)
+{
+	rcu_read_lock(); /* keeps vma alive till the end of up_read */
+	up_read(&vma->vm_lock->lock);
+	rcu_read_unlock();
+}
+
+static bool __is_vma_write_locked(struct vm_area_struct *vma, int *mm_lock_seq)
+{
+	mmap_assert_write_locked(vma->vm_mm);
+
+	/*
+	 * current task is holding mmap_write_lock, both vma->vm_lock_seq and
+	 * mm->mm_lock_seq can't be concurrently modified.
+	 */
+	*mm_lock_seq = READ_ONCE(vma->vm_mm->mm_lock_seq);
+	return (vma->vm_lock_seq == *mm_lock_seq);
+}
+
+static inline void vma_start_write(struct vm_area_struct *vma)
+{
+	int mm_lock_seq;
+
+	if (__is_vma_write_locked(vma, &mm_lock_seq))
+		return;
+
+	down_write(&vma->vm_lock->lock);
+	vma->vm_lock_seq = mm_lock_seq;
+	up_write(&vma->vm_lock->lock);
+}
+
+static inline bool vma_try_start_write(struct vm_area_struct *vma)
+{
+	int mm_lock_seq;
+
+	if (__is_vma_write_locked(vma, &mm_lock_seq))
+		return true;
+
+	if (!down_write_trylock(&vma->vm_lock->lock))
+		return false;
+
+	vma->vm_lock_seq = mm_lock_seq;
+	up_write(&vma->vm_lock->lock);
+	return true;
+}
+
+static inline void vma_assert_write_locked(struct vm_area_struct *vma)
+{
+	int mm_lock_seq;
+
+	VM_BUG_ON_VMA(!__is_vma_write_locked(vma, &mm_lock_seq), vma);
+}
+
+static inline void vma_mark_detached(struct vm_area_struct *vma, bool detached)
+{
+	/* When detaching vma should be write-locked */
+	if (detached)
+		vma_assert_write_locked(vma);
+	vma->detached = detached;
+}
+
+struct vm_area_struct *lock_vma_under_rcu(struct mm_struct *mm,
+					  unsigned long address);
+
+#else /* CONFIG_PER_VMA_LOCK */
+
+static inline void vma_init_lock(struct vm_area_struct *vma) {}
+static inline bool vma_start_read(struct vm_area_struct *vma)
+		{ return false; }
+static inline void vma_end_read(struct vm_area_struct *vma) {}
+static inline void vma_start_write(struct vm_area_struct *vma) {}
+static inline bool vma_try_start_write(struct vm_area_struct *vma)
+		{ return true; }
+static inline void vma_assert_write_locked(struct vm_area_struct *vma) {}
+static inline void vma_mark_detached(struct vm_area_struct *vma,
+				     bool detached) {}
+
+#endif /* CONFIG_PER_VMA_LOCK */
+
+/*
+ * WARNING: vma_init does not initialize vma->vm_lock.
+ * Use vm_area_alloc()/vm_area_free() if vma needs locking.
+ */
 static inline void vma_init(struct vm_area_struct *vma, struct mm_struct *mm)
 {
 	static const struct vm_operations_struct dummy_vm_ops = {};
@@ -625,6 +746,64 @@ static inline void vma_init(struct vm_area_struct *vma, struct mm_struct *mm)
 	vma->vm_mm = mm;
 	vma->vm_ops = &dummy_vm_ops;
 	INIT_LIST_HEAD(&vma->anon_vma_chain);
+	vma_mark_detached(vma, false);
+}
+
+/* Use when VMA is not part of the VMA tree and needs no locking */
+static inline void vm_flags_init(struct vm_area_struct *vma,
+				 vm_flags_t flags)
+{
+	ACCESS_PRIVATE(vma, __vm_flags) = flags;
+}
+
+/* Use when VMA is part of the VMA tree and modifications need coordination */
+static inline void vm_flags_reset(struct vm_area_struct *vma,
+				  vm_flags_t flags)
+{
+	vma_start_write(vma);
+	vm_flags_init(vma, flags);
+}
+
+static inline void vm_flags_reset_once(struct vm_area_struct *vma,
+				       vm_flags_t flags)
+{
+	vma_start_write(vma);
+	WRITE_ONCE(ACCESS_PRIVATE(vma, __vm_flags), flags);
+}
+
+static inline void vm_flags_set(struct vm_area_struct *vma,
+				vm_flags_t flags)
+{
+	vma_start_write(vma);
+	ACCESS_PRIVATE(vma, __vm_flags) |= flags;
+}
+
+static inline void vm_flags_clear(struct vm_area_struct *vma,
+				  vm_flags_t flags)
+{
+	vma_start_write(vma);
+	ACCESS_PRIVATE(vma, __vm_flags) &= ~flags;
+}
+
+/*
+ * Use only if VMA is not part of the VMA tree or has no other users and
+ * therefore needs no locking.
+ */
+static inline void __vm_flags_mod(struct vm_area_struct *vma,
+				  vm_flags_t set, vm_flags_t clear)
+{
+	vm_flags_init(vma, (vma->vm_flags | set) & ~clear);
+}
+
+/*
+ * Use only when the order of set/clear operations is unimportant, otherwise
+ * use vm_flags_{set|clear} explicitly.
+ */
+static inline void vm_flags_mod(struct vm_area_struct *vma,
+				vm_flags_t set, vm_flags_t clear)
+{
+	vma_start_write(vma);
+	__vm_flags_mod(vma, set, clear);
 }
 
 static inline void vma_set_anonymous(struct vm_area_struct *vma)
@@ -760,8 +939,13 @@ static inline unsigned int folio_order(struct folio *folio)
  */
 static inline int put_page_testzero(struct page *page)
 {
+	int ret;
+
 	VM_BUG_ON_PAGE(page_ref_count(page) == 0, page);
-	return page_ref_dec_and_test(page);
+	ret = page_ref_dec_and_test(page);
+	page_pinner_put_page(page);
+
+	return ret;
 }
 
 static inline int folio_put_testzero(struct folio *folio)
@@ -1898,7 +2082,8 @@ void zap_page_range_single(struct vm_area_struct *vma, unsigned long address,
 			   unsigned long size, struct zap_details *details);
 void unmap_vmas(struct mmu_gather *tlb, struct maple_tree *mt,
 		struct vm_area_struct *start_vma, unsigned long start,
-		unsigned long end);
+		unsigned long end, unsigned long start_t,
+		unsigned long end_t, bool mm_wr_locked);
 
 struct mmu_notifier_range;
 
@@ -3443,6 +3628,7 @@ unsigned long wp_shared_mapping_range(struct address_space *mapping,
 #endif
 
 extern int sysctl_nr_trim_pages;
+extern int reclaim_shmem_address_space(struct address_space *mapping);
 
 #ifdef CONFIG_PRINTK
 void mem_dump_obj(void *object);
@@ -3476,7 +3662,7 @@ static inline int seal_check_future_write(int seals, struct vm_area_struct *vma)
 		 * VM_MAYWRITE as we still want them to be COW-writable.
 		 */
 		if (vma->vm_flags & VM_SHARED)
-			vma->vm_flags &= ~(VM_MAYWRITE);
+			vm_flags_clear(vma, VM_MAYWRITE);
 	}
 
 	return 0;
diff --git a/include/linux/mm_inline.h b/include/linux/mm_inline.h
index e8ed225..5567f48 100644
--- a/include/linux/mm_inline.h
+++ b/include/linux/mm_inline.h
@@ -178,7 +178,7 @@ static inline void lru_gen_update_size(struct lruvec *lruvec, struct folio *foli
 	int zone = folio_zonenum(folio);
 	int delta = folio_nr_pages(folio);
 	enum lru_list lru = type * LRU_INACTIVE_FILE;
-	struct lru_gen_struct *lrugen = &lruvec->lrugen;
+	struct lru_gen_folio *lrugen = &lruvec->lrugen;
 
 	VM_WARN_ON_ONCE(old_gen != -1 && old_gen >= MAX_NR_GENS);
 	VM_WARN_ON_ONCE(new_gen != -1 && new_gen >= MAX_NR_GENS);
@@ -224,7 +224,7 @@ static inline bool lru_gen_add_folio(struct lruvec *lruvec, struct folio *folio,
 	int gen = folio_lru_gen(folio);
 	int type = folio_is_file_lru(folio);
 	int zone = folio_zonenum(folio);
-	struct lru_gen_struct *lrugen = &lruvec->lrugen;
+	struct lru_gen_folio *lrugen = &lruvec->lrugen;
 
 	VM_WARN_ON_ONCE_FOLIO(gen != -1, folio);
 
@@ -256,9 +256,9 @@ static inline bool lru_gen_add_folio(struct lruvec *lruvec, struct folio *folio,
 	lru_gen_update_size(lruvec, folio, -1, gen);
 	/* for folio_rotate_reclaimable() */
 	if (reclaiming)
-		list_add_tail(&folio->lru, &lrugen->lists[gen][type][zone]);
+		list_add_tail(&folio->lru, &lrugen->folios[gen][type][zone]);
 	else
-		list_add(&folio->lru, &lrugen->lists[gen][type][zone]);
+		list_add(&folio->lru, &lrugen->folios[gen][type][zone]);
 
 	return true;
 }
@@ -578,4 +578,15 @@ pte_install_uffd_wp_if_needed(struct vm_area_struct *vma, unsigned long addr,
 #endif
 }
 
+static inline bool vma_has_recency(struct vm_area_struct *vma)
+{
+	if (vma->vm_flags & (VM_SEQ_READ | VM_RAND_READ))
+		return false;
+
+	if (vma->vm_file && (vma->vm_file->f_mode & FMODE_NOREUSE))
+		return false;
+
+	return true;
+}
+
 #endif
diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
index 247aedb..248151a 100644
--- a/include/linux/mm_types.h
+++ b/include/linux/mm_types.h
@@ -18,6 +18,7 @@
 #include <linux/page-flags-layout.h>
 #include <linux/workqueue.h>
 #include <linux/seqlock.h>
+#include <linux/android_kabi.h>
 
 #include <asm/mmu.h>
 
@@ -435,6 +436,10 @@ struct anon_vma_name {
 	char name[];
 };
 
+struct vma_lock {
+	struct rw_semaphore lock;
+};
+
 /*
  * This struct describes a virtual memory area. There is one of these
  * per VM-area/task. A VM area is any part of the process virtual memory
@@ -444,9 +449,16 @@ struct anon_vma_name {
 struct vm_area_struct {
 	/* The first cache line has the info for VMA tree walking. */
 
-	unsigned long vm_start;		/* Our start address within vm_mm. */
-	unsigned long vm_end;		/* The first byte after our end address
-					   within vm_mm. */
+	union {
+		struct {
+			/* VMA covers [vm_start; vm_end) addresses within mm */
+			unsigned long vm_start;
+			unsigned long vm_end;
+		};
+#ifdef CONFIG_PER_VMA_LOCK
+		struct rcu_head vm_rcu;	/* Used for deferred freeing. */
+#endif
+	};
 
 	struct mm_struct *vm_mm;	/* The address space we belong to. */
 
@@ -455,7 +467,23 @@ struct vm_area_struct {
 	 * See vmf_insert_mixed_prot() for discussion.
 	 */
 	pgprot_t vm_page_prot;
-	unsigned long vm_flags;		/* Flags, see mm.h. */
+
+	/*
+	 * Flags, see mm.h.
+	 * To modify use vm_flags_{init|reset|set|clear|mod} functions.
+	 */
+	union {
+		const vm_flags_t vm_flags;
+		vm_flags_t __private __vm_flags;
+	};
+
+#ifdef CONFIG_PER_VMA_LOCK
+	int vm_lock_seq;
+	struct vma_lock *vm_lock;
+
+	/* Flag to indicate areas detached from the mm->mm_mt tree */
+	bool detached;
+#endif
 
 	/*
 	 * For areas with an address space and backing store,
@@ -506,6 +534,11 @@ struct vm_area_struct {
 	struct mempolicy *vm_policy;	/* NUMA policy for the VMA */
 #endif
 	struct vm_userfaultfd_ctx vm_userfaultfd_ctx;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 } __randomize_layout;
 
 struct kioctx_table;
@@ -584,6 +617,9 @@ struct mm_struct {
 					  * init_mm.mmlist, and are protected
 					  * by mmlist_lock
 					  */
+#ifdef CONFIG_PER_VMA_LOCK
+		int mm_lock_seq;
+#endif
 
 
 		unsigned long hiwater_rss; /* High-watermark of RSS usage */
@@ -716,6 +752,8 @@ struct mm_struct {
 #endif
 		} lru_gen;
 #endif /* CONFIG_LRU_GEN */
+
+		ANDROID_KABI_RESERVE(1);
 	} __randomize_layout;
 
 	/*
@@ -963,6 +1001,7 @@ typedef struct {
  *                      mapped R/O.
  * @FAULT_FLAG_ORIG_PTE_VALID: whether the fault has vmf->orig_pte cached.
  *                        We should only access orig_pte if this flag set.
+ * @FAULT_FLAG_VMA_LOCK: The fault is handled under VMA lock.
  *
  * About @FAULT_FLAG_ALLOW_RETRY and @FAULT_FLAG_TRIED: we can specify
  * whether we would allow page faults to retry by specifying these two
@@ -1000,6 +1039,7 @@ enum fault_flag {
 	FAULT_FLAG_INTERRUPTIBLE =	1 << 9,
 	FAULT_FLAG_UNSHARE =		1 << 10,
 	FAULT_FLAG_ORIG_PTE_VALID =	1 << 11,
+	FAULT_FLAG_VMA_LOCK =		1 << 12,
 };
 
 typedef unsigned int __bitwise zap_flags_t;
diff --git a/include/linux/mmap_lock.h b/include/linux/mmap_lock.h
index 96e113e..aab8f1b 100644
--- a/include/linux/mmap_lock.h
+++ b/include/linux/mmap_lock.h
@@ -60,6 +60,29 @@ static inline void __mmap_lock_trace_released(struct mm_struct *mm, bool write)
 
 #endif /* CONFIG_TRACING */
 
+static inline void mmap_assert_locked(struct mm_struct *mm)
+{
+	lockdep_assert_held(&mm->mmap_lock);
+	VM_BUG_ON_MM(!rwsem_is_locked(&mm->mmap_lock), mm);
+}
+
+static inline void mmap_assert_write_locked(struct mm_struct *mm)
+{
+	lockdep_assert_held_write(&mm->mmap_lock);
+	VM_BUG_ON_MM(!rwsem_is_locked(&mm->mmap_lock), mm);
+}
+
+#ifdef CONFIG_PER_VMA_LOCK
+static inline void vma_end_write_all(struct mm_struct *mm)
+{
+	mmap_assert_write_locked(mm);
+	/* No races during update due to exclusive mmap_lock being held */
+	WRITE_ONCE(mm->mm_lock_seq, mm->mm_lock_seq + 1);
+}
+#else
+static inline void vma_end_write_all(struct mm_struct *mm) {}
+#endif
+
 static inline void mmap_init_lock(struct mm_struct *mm)
 {
 	init_rwsem(&mm->mmap_lock);
@@ -102,12 +125,14 @@ static inline bool mmap_write_trylock(struct mm_struct *mm)
 static inline void mmap_write_unlock(struct mm_struct *mm)
 {
 	__mmap_lock_trace_released(mm, true);
+	vma_end_write_all(mm);
 	up_write(&mm->mmap_lock);
 }
 
 static inline void mmap_write_downgrade(struct mm_struct *mm)
 {
 	__mmap_lock_trace_acquire_returned(mm, false, true);
+	vma_end_write_all(mm);
 	downgrade_write(&mm->mmap_lock);
 }
 
@@ -150,18 +175,6 @@ static inline void mmap_read_unlock_non_owner(struct mm_struct *mm)
 	up_read_non_owner(&mm->mmap_lock);
 }
 
-static inline void mmap_assert_locked(struct mm_struct *mm)
-{
-	lockdep_assert_held(&mm->mmap_lock);
-	VM_BUG_ON_MM(!rwsem_is_locked(&mm->mmap_lock), mm);
-}
-
-static inline void mmap_assert_write_locked(struct mm_struct *mm)
-{
-	lockdep_assert_held_write(&mm->mmap_lock);
-	VM_BUG_ON_MM(!rwsem_is_locked(&mm->mmap_lock), mm);
-}
-
 static inline int mmap_lock_is_contended(struct mm_struct *mm)
 {
 	return rwsem_is_contended(&mm->mmap_lock);
diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h
index c726ea7..9980dcc 100644
--- a/include/linux/mmc/card.h
+++ b/include/linux/mmc/card.h
@@ -9,6 +9,7 @@
 
 #include <linux/device.h>
 #include <linux/mod_devicetable.h>
+#include <linux/android_kabi.h>
 
 struct mmc_cid {
 	unsigned int		manfid;
@@ -259,6 +260,8 @@ struct mmc_part {
 #define MMC_BLK_DATA_AREA_BOOT	(1<<1)
 #define MMC_BLK_DATA_AREA_GP	(1<<2)
 #define MMC_BLK_DATA_AREA_RPMB	(1<<3)
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /*
@@ -338,6 +341,9 @@ struct mmc_card {
 	unsigned int    nr_parts;
 
 	struct workqueue_struct *complete_wq;	/* Private workqueue */
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 static inline bool mmc_large_sector(struct mmc_card *card)
diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h
index 8fdd3cf..add578b 100644
--- a/include/linux/mmc/host.h
+++ b/include/linux/mmc/host.h
@@ -16,6 +16,7 @@
 #include <linux/mmc/pm.h>
 #include <linux/dma-direction.h>
 #include <linux/blk-crypto-profile.h>
+#include <linux/android_kabi.h>
 
 struct mmc_ios {
 	unsigned int	clock;			/* clock rate */
@@ -212,6 +213,9 @@ struct mmc_host_ops {
 
 	/* Initialize an SD express card, mandatory for MMC_CAP2_SD_EXP. */
 	int	(*init_sd_express)(struct mmc_host *host, struct mmc_ios *ios);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 struct mmc_cqe_ops {
@@ -256,6 +260,9 @@ struct mmc_cqe_ops {
 	 * will have zero data bytes transferred.
 	 */
 	void	(*cqe_recovery_finish)(struct mmc_host *host);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 struct mmc_async_req {
@@ -521,6 +528,10 @@ struct mmc_host {
 	bool			hsq_enabled;
 
 	u32			err_stats[MMC_ERR_MAX];
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+
 	unsigned long		private[] ____cacheline_aligned;
 };
 
diff --git a/include/linux/mmu_notifier.h b/include/linux/mmu_notifier.h
index d6c06e1..ed24db8 100644
--- a/include/linux/mmu_notifier.h
+++ b/include/linux/mmu_notifier.h
@@ -8,6 +8,7 @@
 #include <linux/mmap_lock.h>
 #include <linux/srcu.h>
 #include <linux/interval_tree.h>
+#include <linux/android_kabi.h>
 
 struct mmu_notifier_subscriptions;
 struct mmu_notifier;
@@ -221,6 +222,11 @@ struct mmu_notifier_ops {
 	 */
 	struct mmu_notifier *(*alloc_notifier)(struct mm_struct *mm);
 	void (*free_notifier)(struct mmu_notifier *subscription);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 /*
@@ -240,6 +246,9 @@ struct mmu_notifier {
 	struct mm_struct *mm;
 	struct rcu_head rcu;
 	unsigned int users;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 /**
diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
index 5f74891..6f23778 100644
--- a/include/linux/mmzone.h
+++ b/include/linux/mmzone.h
@@ -7,6 +7,7 @@
 
 #include <linux/spinlock.h>
 #include <linux/list.h>
+#include <linux/list_nulls.h>
 #include <linux/wait.h>
 #include <linux/bitops.h>
 #include <linux/cache.h>
@@ -21,6 +22,7 @@
 #include <linux/mm_types.h>
 #include <linux/page-flags.h>
 #include <linux/local_lock.h>
+#include <linux/android_kabi.h>
 #include <asm/page.h>
 
 /* Free memory management - zoned buddy allocator.  */
@@ -39,12 +41,12 @@
  */
 #define PAGE_ALLOC_COSTLY_ORDER 3
 
+#define MAX_KSWAPD_THREADS 16
+
 enum migratetype {
 	MIGRATE_UNMOVABLE,
 	MIGRATE_MOVABLE,
 	MIGRATE_RECLAIMABLE,
-	MIGRATE_PCPTYPES,	/* the number of types on the pcp lists */
-	MIGRATE_HIGHATOMIC = MIGRATE_PCPTYPES,
 #ifdef CONFIG_CMA
 	/*
 	 * MIGRATE_CMA migration type is designed to mimic the way
@@ -58,6 +60,8 @@ enum migratetype {
 	 */
 	MIGRATE_CMA,
 #endif
+	MIGRATE_PCPTYPES, /* the number of types on the pcp lists */
+	MIGRATE_HIGHATOMIC = MIGRATE_PCPTYPES,
 #ifdef CONFIG_MEMORY_ISOLATION
 	MIGRATE_ISOLATE,	/* can't allocate from here */
 #endif
@@ -70,9 +74,11 @@ extern const char * const migratetype_names[MIGRATE_TYPES];
 #ifdef CONFIG_CMA
 #  define is_migrate_cma(migratetype) unlikely((migratetype) == MIGRATE_CMA)
 #  define is_migrate_cma_page(_page) (get_pageblock_migratetype(_page) == MIGRATE_CMA)
+#  define get_cma_migrate_type() MIGRATE_CMA
 #else
 #  define is_migrate_cma(migratetype) false
 #  define is_migrate_cma_page(_page) false
+#  define get_cma_migrate_type() MIGRATE_MOVABLE
 #endif
 
 static inline bool is_migrate_movable(int mt)
@@ -88,7 +94,7 @@ static inline bool is_migrate_movable(int mt)
  */
 static inline bool migratetype_is_mergeable(int mt)
 {
-	return mt < MIGRATE_PCPTYPES;
+	return mt <= MIGRATE_RECLAIMABLE;
 }
 
 #define for_each_migratetype_order(order, type) \
@@ -148,9 +154,7 @@ enum zone_stat_item {
 	NR_MLOCK,		/* mlock()ed pages found and moved off LRU */
 	/* Second 128 byte cacheline */
 	NR_BOUNCE,
-#if IS_ENABLED(CONFIG_ZSMALLOC)
 	NR_ZSPAGES,		/* allocated in zsmalloc */
-#endif
 	NR_FREE_CMA_PAGES,
 	NR_VM_ZONE_STAT_ITEMS };
 
@@ -312,7 +316,7 @@ enum lruvec_flags {
  * They form a sliding window of a variable size [MIN_NR_GENS, MAX_NR_GENS]. An
  * offset within MAX_NR_GENS, i.e., gen, indexes the LRU list of the
  * corresponding generation. The gen counter in folio->flags stores gen+1 while
- * a page is on one of lrugen->lists[]. Otherwise it stores 0.
+ * a page is on one of lrugen->folios[]. Otherwise it stores 0.
  *
  * A page is added to the youngest generation on faulting. The aging needs to
  * check the accessed bit at least twice before handing this page over to the
@@ -324,8 +328,8 @@ enum lruvec_flags {
  * rest of generations, if they exist, are considered inactive. See
  * lru_gen_is_active().
  *
- * PG_active is always cleared while a page is on one of lrugen->lists[] so that
- * the aging needs not to worry about it. And it's set again when a page
+ * PG_active is always cleared while a page is on one of lrugen->folios[] so
+ * that the aging needs not to worry about it. And it's set again when a page
  * considered active is isolated for non-reclaiming purposes, e.g., migration.
  * See lru_gen_add_folio() and lru_gen_del_folio().
  *
@@ -404,7 +408,7 @@ enum {
  * The number of pages in each generation is eventually consistent and therefore
  * can be transiently negative when reset_batch_size() is pending.
  */
-struct lru_gen_struct {
+struct lru_gen_folio {
 	/* the aging increments the youngest generation number */
 	unsigned long max_seq;
 	/* the eviction increments the oldest generation numbers */
@@ -412,7 +416,7 @@ struct lru_gen_struct {
 	/* the birth time of each generation in jiffies */
 	unsigned long timestamps[MAX_NR_GENS];
 	/* the multi-gen LRU lists, lazily sorted on eviction */
-	struct list_head lists[MAX_NR_GENS][ANON_AND_FILE][MAX_NR_ZONES];
+	struct list_head folios[MAX_NR_GENS][ANON_AND_FILE][MAX_NR_ZONES];
 	/* the multi-gen LRU sizes, eventually consistent */
 	long nr_pages[MAX_NR_GENS][ANON_AND_FILE][MAX_NR_ZONES];
 	/* the exponential moving average of refaulted */
@@ -426,6 +430,17 @@ struct lru_gen_struct {
 	atomic_long_t refaulted[NR_HIST_GENS][ANON_AND_FILE][MAX_NR_TIERS];
 	/* whether the multi-gen LRU is enabled */
 	bool enabled;
+#ifdef CONFIG_MEMCG
+	/* the memcg generation this lru_gen_folio belongs to */
+	u8 gen;
+	/* the list segment this lru_gen_folio belongs to */
+	u8 seg;
+	/* per-node lru_gen_folio list for global reclaim */
+	struct hlist_nulls_node list;
+#endif
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 enum {
@@ -444,24 +459,22 @@ enum {
 struct lru_gen_mm_state {
 	/* set to max_seq after each iteration */
 	unsigned long seq;
-	/* where the current iteration continues (inclusive) */
+	/* where the current iteration continues after */
 	struct list_head *head;
-	/* where the last iteration ended (exclusive) */
+	/* where the last iteration ended before */
 	struct list_head *tail;
-	/* to wait for the last page table walker to finish */
-	struct wait_queue_head wait;
 	/* Bloom filters flip after each iteration */
 	unsigned long *filters[NR_BLOOM_FILTERS];
 	/* the mm stats for debugging */
 	unsigned long stats[NR_HIST_GENS][NR_MM_STATS];
-	/* the number of concurrent page table walkers */
-	int nr_walkers;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct lru_gen_mm_walk {
 	/* the lruvec under reclaim */
 	struct lruvec *lruvec;
-	/* unstable max_seq from lru_gen_struct */
+	/* unstable max_seq from lru_gen_folio */
 	unsigned long max_seq;
 	/* the next address within an mm to scan */
 	unsigned long next_addr;
@@ -473,18 +486,99 @@ struct lru_gen_mm_walk {
 	int batched;
 	bool can_swap;
 	bool force_scan;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 void lru_gen_init_lruvec(struct lruvec *lruvec);
 void lru_gen_look_around(struct page_vma_mapped_walk *pvmw);
 
 #ifdef CONFIG_MEMCG
+
+/*
+ * For each node, memcgs are divided into two generations: the old and the
+ * young. For each generation, memcgs are randomly sharded into multiple bins
+ * to improve scalability. For each bin, the hlist_nulls is virtually divided
+ * into three segments: the head, the tail and the default.
+ *
+ * An onlining memcg is added to the tail of a random bin in the old generation.
+ * The eviction starts at the head of a random bin in the old generation. The
+ * per-node memcg generation counter, whose reminder (mod MEMCG_NR_GENS) indexes
+ * the old generation, is incremented when all its bins become empty.
+ *
+ * There are four operations:
+ * 1. MEMCG_LRU_HEAD, which moves an memcg to the head of a random bin in its
+ *    current generation (old or young) and updates its "seg" to "head";
+ * 2. MEMCG_LRU_TAIL, which moves an memcg to the tail of a random bin in its
+ *    current generation (old or young) and updates its "seg" to "tail";
+ * 3. MEMCG_LRU_OLD, which moves an memcg to the head of a random bin in the old
+ *    generation, updates its "gen" to "old" and resets its "seg" to "default";
+ * 4. MEMCG_LRU_YOUNG, which moves an memcg to the tail of a random bin in the
+ *    young generation, updates its "gen" to "young" and resets its "seg" to
+ *    "default".
+ *
+ * The events that trigger the above operations are:
+ * 1. Exceeding the soft limit, which triggers MEMCG_LRU_HEAD;
+ * 2. The first attempt to reclaim an memcg below low, which triggers
+ *    MEMCG_LRU_TAIL;
+ * 3. The first attempt to reclaim an memcg below reclaimable size threshold,
+ *    which triggers MEMCG_LRU_TAIL;
+ * 4. The second attempt to reclaim an memcg below reclaimable size threshold,
+ *    which triggers MEMCG_LRU_YOUNG;
+ * 5. Attempting to reclaim an memcg below min, which triggers MEMCG_LRU_YOUNG;
+ * 6. Finishing the aging on the eviction path, which triggers MEMCG_LRU_YOUNG;
+ * 7. Offlining an memcg, which triggers MEMCG_LRU_OLD.
+ *
+ * Note that memcg LRU only applies to global reclaim, and the round-robin
+ * incrementing of their max_seq counters ensures the eventual fairness to all
+ * eligible memcgs. For memcg reclaim, it still relies on mem_cgroup_iter().
+ */
+#define MEMCG_NR_GENS	2
+#define MEMCG_NR_BINS	8
+
+struct lru_gen_memcg {
+	/* the per-node memcg generation counter */
+	unsigned long seq;
+	/* each memcg has one lru_gen_folio per node */
+	unsigned long nr_memcgs[MEMCG_NR_GENS];
+	/* per-node lru_gen_folio list for global reclaim */
+	struct hlist_nulls_head	fifo[MEMCG_NR_GENS][MEMCG_NR_BINS];
+	/* protects the above */
+	spinlock_t lock;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+};
+
+void lru_gen_init_pgdat(struct pglist_data *pgdat);
+
 void lru_gen_init_memcg(struct mem_cgroup *memcg);
 void lru_gen_exit_memcg(struct mem_cgroup *memcg);
-#endif
+void lru_gen_online_memcg(struct mem_cgroup *memcg);
+void lru_gen_offline_memcg(struct mem_cgroup *memcg);
+void lru_gen_release_memcg(struct mem_cgroup *memcg);
+void lru_gen_soft_reclaim(struct lruvec *lruvec);
+
+#else /* !CONFIG_MEMCG */
+
+#define MEMCG_NR_GENS	1
+
+struct lru_gen_memcg {
+};
+
+static inline void lru_gen_init_pgdat(struct pglist_data *pgdat)
+{
+}
+
+#endif /* CONFIG_MEMCG */
 
 #else /* !CONFIG_LRU_GEN */
 
+static inline void lru_gen_init_pgdat(struct pglist_data *pgdat)
+{
+}
+
 static inline void lru_gen_init_lruvec(struct lruvec *lruvec)
 {
 }
@@ -494,6 +588,7 @@ static inline void lru_gen_look_around(struct page_vma_mapped_walk *pvmw)
 }
 
 #ifdef CONFIG_MEMCG
+
 static inline void lru_gen_init_memcg(struct mem_cgroup *memcg)
 {
 }
@@ -501,7 +596,24 @@ static inline void lru_gen_init_memcg(struct mem_cgroup *memcg)
 static inline void lru_gen_exit_memcg(struct mem_cgroup *memcg)
 {
 }
-#endif
+
+static inline void lru_gen_online_memcg(struct mem_cgroup *memcg)
+{
+}
+
+static inline void lru_gen_offline_memcg(struct mem_cgroup *memcg)
+{
+}
+
+static inline void lru_gen_release_memcg(struct mem_cgroup *memcg)
+{
+}
+
+static inline void lru_gen_soft_reclaim(struct lruvec *lruvec)
+{
+}
+
+#endif /* CONFIG_MEMCG */
 
 #endif /* CONFIG_LRU_GEN */
 
@@ -524,13 +636,16 @@ struct lruvec {
 	unsigned long			flags;
 #ifdef CONFIG_LRU_GEN
 	/* evictable pages divided into generations */
-	struct lru_gen_struct		lrugen;
+	struct lru_gen_folio		lrugen;
 	/* to concurrently iterate lru_gen_mm_list */
 	struct lru_gen_mm_state		mm_state;
 #endif
 #ifdef CONFIG_MEMCG
 	struct pglist_data *pgdat;
 #endif
+	ANDROID_VENDOR_DATA(1);
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 /* Isolate unmapped pages */
@@ -870,6 +985,11 @@ struct zone {
 	/* Zone statistics */
 	atomic_long_t		vm_stat[NR_VM_ZONE_STAT_ITEMS];
 	atomic_long_t		vm_numa_event[NR_VM_NUMA_EVENT_ITEMS];
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 } ____cacheline_internodealigned_in_smp;
 
 enum pgdat_flags {
@@ -1149,11 +1269,13 @@ typedef struct pglist_data {
 	struct mutex kswapd_lock;
 #endif
 	struct task_struct *kswapd;	/* Protected by kswapd_lock */
+	struct task_struct *mkswapd[MAX_KSWAPD_THREADS];
 	int kswapd_order;
 	enum zone_type kswapd_highest_zoneidx;
 
 	int kswapd_failures;		/* Number of 'reclaimed == 0' runs */
 
+	ANDROID_OEM_DATA(1);
 #ifdef CONFIG_COMPACTION
 	int kcompactd_max_order;
 	enum zone_type kcompactd_highest_zoneidx;
@@ -1219,6 +1341,8 @@ typedef struct pglist_data {
 #ifdef CONFIG_LRU_GEN
 	/* kswap mm walk data */
 	struct lru_gen_mm_walk	mm_walk;
+	/* lru_gen_folio list */
+	struct lru_gen_memcg memcg_lru;
 #endif
 
 	CACHELINE_PADDING(_pad2_);
@@ -1409,6 +1533,7 @@ static inline struct pglist_data *NODE_DATA(int nid)
 extern struct pglist_data *first_online_pgdat(void);
 extern struct pglist_data *next_online_pgdat(struct pglist_data *pgdat);
 extern struct zone *next_zone(struct zone *zone);
+extern int isolate_anon_lru_page(struct page *page);
 
 /**
  * for_each_online_pgdat - helper macro to iterate over all online nodes
diff --git a/include/linux/module.h b/include/linux/module.h
index ec61fb5..fee1cf4 100644
--- a/include/linux/module.h
+++ b/include/linux/module.h
@@ -27,6 +27,7 @@
 #include <linux/tracepoint-defs.h>
 #include <linux/srcu.h>
 #include <linux/static_call_types.h>
+#include <linux/android_kabi.h>
 
 #include <linux/percpu.h>
 #include <asm/module.h>
@@ -379,6 +380,7 @@ struct module {
 	struct module_attribute *modinfo_attrs;
 	const char *version;
 	const char *srcversion;
+	const char *scmversion;
 	struct kobject *holders_dir;
 
 	/* Exported symbols */
@@ -404,10 +406,12 @@ struct module {
 	const s32 *gpl_crcs;
 	bool using_gplonly_symbols;
 
-#ifdef CONFIG_MODULE_SIG
-	/* Signature was verified. */
+	/*
+	 * Signature was verified. Unconditionally compiled in Android to
+	 * preserve ABI compatibility between kernels without module
+	 * signing enabled and signed modules.
+	 */
 	bool sig_ok;
-#endif
 
 	bool async_probe_requested;
 
@@ -546,6 +550,10 @@ struct module {
 	struct error_injection_entry *ei_funcs;
 	unsigned int num_ei_funcs;
 #endif
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 } ____cacheline_aligned __randomize_layout;
 #ifndef MODULE_ARCH_INIT
 #define MODULE_ARCH_INIT {}
diff --git a/include/linux/mount.h b/include/linux/mount.h
index 55a4aba..23baecab 100644
--- a/include/linux/mount.h
+++ b/include/linux/mount.h
@@ -11,6 +11,7 @@
 #define _LINUX_MOUNT_H
 
 #include <linux/types.h>
+#include <linux/android_kabi.h>
 #include <asm/barrier.h>
 
 struct super_block;
@@ -71,6 +72,11 @@ struct vfsmount {
 	struct super_block *mnt_sb;	/* pointer to superblock */
 	int mnt_flags;
 	struct user_namespace *mnt_userns;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 } __randomize_layout;
 
 static inline struct user_namespace *mnt_user_ns(const struct vfsmount *mnt)
diff --git a/include/linux/mutex.h b/include/linux/mutex.h
index 8f226d4..35d7b14 100644
--- a/include/linux/mutex.h
+++ b/include/linux/mutex.h
@@ -19,6 +19,7 @@
 #include <asm/processor.h>
 #include <linux/osq_lock.h>
 #include <linux/debug_locks.h>
+#include <linux/android_vendor.h>
 
 #ifdef CONFIG_DEBUG_LOCK_ALLOC
 # define __DEP_MAP_MUTEX_INITIALIZER(lockname)			\
@@ -73,6 +74,7 @@ struct mutex {
 #ifdef CONFIG_DEBUG_LOCK_ALLOC
 	struct lockdep_map	dep_map;
 #endif
+	ANDROID_OEM_DATA_ARRAY(1, 2);
 };
 
 #ifdef CONFIG_DEBUG_MUTEXES
diff --git a/include/linux/net.h b/include/linux/net.h
index 18d942b..e08f23d 100644
--- a/include/linux/net.h
+++ b/include/linux/net.h
@@ -23,6 +23,7 @@
 #include <linux/fs.h>
 #include <linux/mm.h>
 #include <linux/sockptr.h>
+#include <linux/android_kabi.h>
 
 #include <uapi/linux/net.h>
 
@@ -224,6 +225,11 @@ struct proto_ops {
 	int		(*sendmsg_locked)(struct sock *sk, struct msghdr *msg,
 					  size_t size);
 	int		(*set_rcvlowat)(struct sock *sk, int val);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 #define DECLARE_SOCKADDR(type, dst, src)	\
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index d5eb3ab..345a186 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -51,6 +51,7 @@
 #include <linux/rbtree.h>
 #include <net/net_trackers.h>
 #include <net/net_debug.h>
+#include <linux/android_kabi.h>
 
 struct netpoll_info;
 struct device;
@@ -311,6 +312,9 @@ struct header_ops {
 				const unsigned char *haddr);
 	bool	(*validate)(const char *ll_header, unsigned int len);
 	__be16	(*parse_protocol)(const struct sk_buff *skb);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 /* These flag bits are private to the generic network queueing
@@ -368,6 +372,11 @@ struct napi_struct {
 	struct hlist_node	napi_hash_node;
 	unsigned int		napi_id;
 	struct task_struct	*thread;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 enum {
@@ -643,6 +652,11 @@ struct netdev_queue {
 #ifdef CONFIG_BQL
 	struct dql		dql;
 #endif
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 } ____cacheline_aligned_in_smp;
 
 extern int sysctl_fb_tunnels_only_for_init_net;
@@ -785,6 +799,11 @@ struct netdev_rx_queue {
 #ifdef CONFIG_XDP_SOCKETS
 	struct xsk_buff_pool            *pool;
 #endif
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 } ____cacheline_aligned_in_smp;
 
 /*
@@ -1045,6 +1064,11 @@ struct xfrmdev_ops {
 	bool	(*xdo_dev_offload_ok) (struct sk_buff *skb,
 				       struct xfrm_state *x);
 	void	(*xdo_dev_state_advance_esn) (struct xfrm_state *x);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 #endif
 
@@ -1621,6 +1645,15 @@ struct net_device_ops {
 	ktime_t			(*ndo_get_tstamp)(struct net_device *dev,
 						  const struct skb_shared_hwtstamps *hwtstamps,
 						  bool cycles);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
+	ANDROID_KABI_RESERVE(5);
+	ANDROID_KABI_RESERVE(6);
+	ANDROID_KABI_RESERVE(7);
+	ANDROID_KABI_RESERVE(8);
 };
 
 /**
@@ -2088,7 +2121,11 @@ struct net_device {
 	atomic_t		carrier_up_count;
 	atomic_t		carrier_down_count;
 
-#ifdef CONFIG_WIRELESS_EXT
+	/* Android KMI hack to allow vendors to have their own wifi changes in modules */
+#ifdef __GENKSYMS__
+	void			*wireless_handlers;
+	void			*wireless_data;
+#else
 	const struct iw_handler_def *wireless_handlers;
 	struct iw_public_data	*wireless_data;
 #endif
@@ -2168,9 +2205,13 @@ struct net_device {
 #if IS_ENABLED(CONFIG_AX25)
 	void			*ax25_ptr;
 #endif
-#if IS_ENABLED(CONFIG_CFG80211)
+	/* Android KMI hack to allow vendors to have their own wifi changes in modules */
+#ifdef __GENKSYMS__
+	void			*ieee80211_ptr;
+#else
 	struct wireless_dev	*ieee80211_ptr;
 #endif
+
 #if IS_ENABLED(CONFIG_IEEE802154) || IS_ENABLED(CONFIG_6LOWPAN)
 	struct wpan_dev		*ieee802154_ptr;
 #endif
@@ -2361,6 +2402,15 @@ struct net_device {
 	netdevice_tracker	watchdog_dev_tracker;
 	netdevice_tracker	dev_registered_tracker;
 	struct rtnl_hw_stats64	*offload_xstats_l3;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
+	ANDROID_KABI_RESERVE(5);
+	ANDROID_KABI_RESERVE(6);
+	ANDROID_KABI_RESERVE(7);
+	ANDROID_KABI_RESERVE(8);
 };
 #define to_net_dev(d) container_of(d, struct net_device, dev)
 
@@ -2644,6 +2694,11 @@ struct packet_type {
 	struct net		*af_packet_net;
 	void			*af_packet_priv;
 	struct list_head	list;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 struct offload_callbacks {
diff --git a/include/linux/netfilter.h b/include/linux/netfilter.h
index bef8db9..445494c5 100644
--- a/include/linux/netfilter.h
+++ b/include/linux/netfilter.h
@@ -14,6 +14,7 @@
 #include <linux/netfilter_defs.h>
 #include <linux/netdevice.h>
 #include <linux/sockptr.h>
+#include <linux/android_kabi.h>
 #include <net/net_namespace.h>
 
 static inline int NF_DROP_GETERR(int verdict)
@@ -177,6 +178,8 @@ struct nf_sockopt_ops {
 	int (*get)(struct sock *sk, int optval, void __user *user, int *len);
 	/* Use the module struct to lock set/get code in place */
 	struct module *owner;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /* Function to register/unregister hook points. */
@@ -375,6 +378,8 @@ struct nf_nat_hook {
 				  enum nf_nat_manip_type mtype,
 				  enum ip_conntrack_dir dir);
 	void (*remove_nat_bysrc)(struct nf_conn *ct);
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 extern const struct nf_nat_hook __rcu *nf_nat_hook;
@@ -459,6 +464,8 @@ struct nf_ct_hook {
 	bool (*get_tuple_skb)(struct nf_conntrack_tuple *,
 			      const struct sk_buff *);
 	void (*attach)(struct sk_buff *nskb, const struct sk_buff *skb);
+
+	ANDROID_KABI_RESERVE(1);
 };
 extern const struct nf_ct_hook __rcu *nf_ct_hook;
 
@@ -474,6 +481,8 @@ struct nfnl_ct_hook {
 			     u32 portid, u32 report);
 	void (*seq_adjust)(struct sk_buff *skb, struct nf_conn *ct,
 			   enum ip_conntrack_info ctinfo, s32 off);
+
+	ANDROID_KABI_RESERVE(1);
 };
 extern const struct nfnl_ct_hook __rcu *nfnl_ct_hook;
 
diff --git a/include/linux/netfilter/ipset/ip_set.h b/include/linux/netfilter/ipset/ip_set.h
index 72f5ebc..99de4d5 100644
--- a/include/linux/netfilter/ipset/ip_set.h
+++ b/include/linux/netfilter/ipset/ip_set.h
@@ -14,6 +14,7 @@
 #include <linux/netfilter/x_tables.h>
 #include <linux/stringify.h>
 #include <linux/vmalloc.h>
+#include <linux/android_kabi.h>
 #include <net/netlink.h>
 #include <uapi/linux/netfilter/ipset/ip_set.h>
 
@@ -188,6 +189,8 @@ struct ip_set_type_variant {
 	bool (*same_set)(const struct ip_set *a, const struct ip_set *b);
 	/* Region-locking is used */
 	bool region_lock;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct ip_set_region {
@@ -234,6 +237,8 @@ struct ip_set_type {
 
 	/* Set this to THIS_MODULE if you are a module, otherwise NULL */
 	struct module *me;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /* register and unregister set type */
@@ -276,6 +281,8 @@ struct ip_set {
 	size_t offset[IPSET_EXT_ID_MAX];
 	/* The type specific data */
 	void *data;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 static inline void
diff --git a/include/linux/netfilter/nfnetlink.h b/include/linux/netfilter/nfnetlink.h
index e9a9ab3..82cb392 100644
--- a/include/linux/netfilter/nfnetlink.h
+++ b/include/linux/netfilter/nfnetlink.h
@@ -4,6 +4,7 @@
 
 #include <linux/netlink.h>
 #include <linux/capability.h>
+#include <linux/android_kabi.h>
 #include <net/netlink.h>
 #include <uapi/linux/netfilter/nfnetlink.h>
 
@@ -28,6 +29,8 @@ struct nfnl_callback {
 	const struct nla_policy	*policy;
 	enum nfnl_callback_type	type;
 	__u16			attr_count;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 enum nfnl_abort_action {
@@ -46,6 +49,8 @@ struct nfnetlink_subsystem {
 	int (*abort)(struct net *net, struct sk_buff *skb,
 		     enum nfnl_abort_action action);
 	bool (*valid_genid)(struct net *net, u32 genid);
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 int nfnetlink_subsys_register(const struct nfnetlink_subsystem *n);
diff --git a/include/linux/netfilter/xt_quota2.h b/include/linux/netfilter/xt_quota2.h
new file mode 100644
index 0000000..a391871
--- /dev/null
+++ b/include/linux/netfilter/xt_quota2.h
@@ -0,0 +1,26 @@
+#ifndef _XT_QUOTA_H
+#define _XT_QUOTA_H
+#include <linux/types.h>
+
+enum xt_quota_flags {
+	XT_QUOTA_INVERT    = 1 << 0,
+	XT_QUOTA_GROW      = 1 << 1,
+	XT_QUOTA_PACKET    = 1 << 2,
+	XT_QUOTA_NO_CHANGE = 1 << 3,
+	XT_QUOTA_MASK      = 0x0F,
+};
+
+struct xt_quota_counter;
+
+struct xt_quota_mtinfo2 {
+	char name[15];
+	u_int8_t flags;
+
+	/* Comparison-invariant */
+	aligned_u64 quota;
+
+	/* Used internally by the kernel */
+	struct xt_quota_counter *master __attribute__((aligned(8)));
+};
+
+#endif /* _XT_QUOTA_H */
diff --git a/include/linux/netfilter_ipv6.h b/include/linux/netfilter_ipv6.h
index 48314ad..c3d17fe 100644
--- a/include/linux/netfilter_ipv6.h
+++ b/include/linux/netfilter_ipv6.h
@@ -7,6 +7,7 @@
 #ifndef __LINUX_IP6_NETFILTER_H
 #define __LINUX_IP6_NETFILTER_H
 
+#include <linux/android_kabi.h>
 #include <uapi/linux/netfilter_ipv6.h>
 #include <net/tcp.h>
 
@@ -65,6 +66,8 @@ struct nf_ipv6_ops {
 					 const struct nf_bridge_frag_data *data,
 					 struct sk_buff *));
 #endif
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 #ifdef CONFIG_NETFILTER
diff --git a/include/linux/of_fdt.h b/include/linux/of_fdt.h
index d69ad5b..991e4c1 100644
--- a/include/linux/of_fdt.h
+++ b/include/linux/of_fdt.h
@@ -58,6 +58,27 @@ extern int of_flat_dt_is_compatible(unsigned long node, const char *name);
 extern unsigned long of_get_flat_dt_root(void);
 extern uint32_t of_get_flat_dt_phandle(unsigned long node);
 
+/*
+ * early_init_dt_scan_chosen - scan the device tree for ramdisk and bootargs
+ *
+ * The boot arguments will be placed into the memory pointed to by @data.
+ * That memory should be COMMAND_LINE_SIZE big and initialized to be a valid
+ * (possibly empty) string.  Logic for what will be in @data after this
+ * function finishes:
+ *
+ * - CONFIG_CMDLINE_FORCE=true
+ *     CONFIG_CMDLINE
+ * - CONFIG_CMDLINE_EXTEND=true, @data is non-empty string
+ *     @data + dt bootargs (even if dt bootargs are empty)
+ * - CONFIG_CMDLINE_EXTEND=true, @data is empty string
+ *     CONFIG_CMDLINE + dt bootargs (even if dt bootargs are empty)
+ * - CMDLINE_FROM_BOOTLOADER=true, dt bootargs=non-empty:
+ *     dt bootargs
+ * - CMDLINE_FROM_BOOTLOADER=true, dt bootargs=empty, @data is non-empty string
+ *     @data is left unchanged
+ * - CMDLINE_FROM_BOOTLOADER=true, dt bootargs=empty, @data is empty string
+ *     CONFIG_CMDLINE (or "" if that's not defined)
+ */
 extern int early_init_dt_scan_chosen(char *cmdline);
 extern int early_init_dt_scan_memory(void);
 extern void early_init_dt_check_for_usable_mem_range(void);
diff --git a/include/linux/overflow.h b/include/linux/overflow.h
index 1d3be1a..0e33b5c 100644
--- a/include/linux/overflow.h
+++ b/include/linux/overflow.h
@@ -128,6 +128,53 @@ static inline bool __must_check __must_check_overflow(bool overflow)
 	(*_d >> _to_shift) != _a);					\
 }))
 
+#define __overflows_type_constexpr(x, T) (			\
+	is_unsigned_type(typeof(x)) ?				\
+		(x) > type_max(typeof(T)) :			\
+	is_unsigned_type(typeof(T)) ?				\
+		(x) < 0 || (x) > type_max(typeof(T)) :		\
+	(x) < type_min(typeof(T)) || (x) > type_max(typeof(T)))
+
+#define __overflows_type(x, T)		({	\
+	typeof(T) v = 0;			\
+	check_add_overflow((x), v, &v);		\
+})
+
+/**
+ * overflows_type - helper for checking the overflows between value, variables,
+ *		    or data type
+ *
+ * @n: source constant value or variable to be checked
+ * @T: destination variable or data type proposed to store @x
+ *
+ * Compares the @x expression for whether or not it can safely fit in
+ * the storage of the type in @T. @x and @T can have different types.
+ * If @x is a constant expression, this will also resolve to a constant
+ * expression.
+ *
+ * Returns: true if overflow can occur, false otherwise.
+ */
+#define overflows_type(n, T)					\
+	__builtin_choose_expr(__is_constexpr(n),		\
+			      __overflows_type_constexpr(n, T),	\
+			      __overflows_type(n, T))
+
+/**
+ * castable_to_type - like __same_type(), but also allows for casted literals
+ *
+ * @n: variable or constant value
+ * @T: variable or data type
+ *
+ * Unlike the __same_type() macro, this allows a constant value as the
+ * first argument. If this value would not overflow into an assignment
+ * of the second argument's type, it returns true. Otherwise, this falls
+ * back to __same_type().
+ */
+#define castable_to_type(n, T)						\
+	__builtin_choose_expr(__is_constexpr(n),			\
+			      !__overflows_type_constexpr(n, T),	\
+			      __same_type(n, T))
+
 /**
  * size_mul() - Calculate size_t multiplication with saturation at SIZE_MAX
  * @factor1: first factor
diff --git a/include/linux/page_ext.h b/include/linux/page_ext.h
index 22be458..6136338 100644
--- a/include/linux/page_ext.h
+++ b/include/linux/page_ext.h
@@ -19,6 +19,10 @@ struct page_ext_operations {
 enum page_ext_flags {
 	PAGE_EXT_OWNER,
 	PAGE_EXT_OWNER_ALLOCATED,
+#if defined(CONFIG_PAGE_PINNER)
+	/* page migration failed */
+	PAGE_EXT_PINNER_MIGRATION_FAILED,
+#endif
 #if defined(CONFIG_PAGE_IDLE_FLAG) && !defined(CONFIG_64BIT)
 	PAGE_EXT_YOUNG,
 	PAGE_EXT_IDLE,
diff --git a/include/linux/page_owner.h b/include/linux/page_owner.h
index 119a0c9..f45c808 100644
--- a/include/linux/page_owner.h
+++ b/include/linux/page_owner.h
@@ -8,6 +8,8 @@
 extern struct static_key_false page_owner_inited;
 extern struct page_ext_operations page_owner_ops;
 
+extern depot_stack_handle_t get_page_owner_handle(struct page_ext *page_ext,
+					unsigned long pfn);
 extern void __reset_page_owner(struct page *page, unsigned short order);
 extern void __set_page_owner(struct page *page,
 			unsigned short order, gfp_t gfp_mask);
diff --git a/include/linux/page_pinner.h b/include/linux/page_pinner.h
new file mode 100644
index 0000000..d87706c
--- /dev/null
+++ b/include/linux/page_pinner.h
@@ -0,0 +1,48 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __LINUX_PAGE_PINNER_H
+#define __LINUX_PAGE_PINNER_H
+
+#include <linux/jump_label.h>
+
+#ifdef CONFIG_PAGE_PINNER
+extern struct static_key_false page_pinner_inited;
+extern struct static_key_true failure_tracking;
+extern struct page_ext_operations page_pinner_ops;
+
+extern void __free_page_pinner(struct page *page, unsigned int order);
+void __page_pinner_failure_detect(struct page *page);
+void __page_pinner_put_page(struct page *page);
+
+static inline void free_page_pinner(struct page *page, unsigned int order)
+{
+	if (static_branch_unlikely(&page_pinner_inited))
+		__free_page_pinner(page, order);
+}
+
+static inline void page_pinner_put_page(struct page *page)
+{
+	if (!static_branch_unlikely(&page_pinner_inited))
+		return;
+
+	__page_pinner_put_page(page);
+}
+
+static inline void page_pinner_failure_detect(struct page *page)
+{
+	if (!static_branch_unlikely(&page_pinner_inited))
+		return;
+
+	__page_pinner_failure_detect(page);
+}
+#else
+static inline void free_page_pinner(struct page *page, unsigned int order)
+{
+}
+static inline void page_pinner_put_page(struct page *page)
+{
+}
+static inline void page_pinner_failure_detect(struct page *page)
+{
+}
+#endif /* CONFIG_PAGE_PINNER */
+#endif /* __LINUX_PAGE_PINNER_H */
diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h
index bbccb40..df232c0 100644
--- a/include/linux/pagemap.h
+++ b/include/linux/pagemap.h
@@ -485,11 +485,13 @@ static inline struct page *page_cache_alloc(struct address_space *x)
 	return __page_cache_alloc(mapping_gfp_mask(x));
 }
 
-static inline gfp_t readahead_gfp_mask(struct address_space *x)
+static inline gfp_t __readahead_gfp_mask(struct address_space *x)
 {
 	return mapping_gfp_mask(x) | __GFP_NORETRY | __GFP_NOWARN;
 }
 
+gfp_t readahead_gfp_mask(struct address_space *x);
+
 typedef int filler_t(struct file *, struct folio *);
 
 pgoff_t page_cache_next_miss(struct address_space *mapping,
diff --git a/include/linux/pci.h b/include/linux/pci.h
index d206951..13eb3f9 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -41,6 +41,7 @@
 #include <uapi/linux/pci.h>
 
 #include <linux/pci_ids.h>
+#include <linux/android_kabi.h>
 
 #define PCI_STATUS_ERROR_BITS (PCI_STATUS_DETECTED_PARITY  | \
 			       PCI_STATUS_SIG_SYSTEM_ERROR | \
@@ -523,6 +524,11 @@ struct pci_dev {
 
 	/* These methods index pci_reset_fn_methods[] */
 	u8 reset_methods[PCI_NUM_RESET_METHODS]; /* In priority order */
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 static inline struct pci_dev *pci_physfn(struct pci_dev *dev)
@@ -587,6 +593,10 @@ struct pci_host_bridge {
 			resource_size_t start,
 			resource_size_t size,
 			resource_size_t align);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+
 	unsigned long	private[] ____cacheline_aligned;
 };
 
@@ -671,6 +681,11 @@ struct pci_bus {
 	struct bin_attribute	*legacy_mem;	/* Legacy mem */
 	unsigned int		is_added:1;
 	unsigned int		unsafe_warn:1;	/* warned about RW1C config write */
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 #define to_pci_bus(n)	container_of(n, struct pci_bus, dev)
@@ -769,6 +784,8 @@ struct pci_ops {
 	void __iomem *(*map_bus)(struct pci_bus *bus, unsigned int devfn, int where);
 	int (*read)(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 *val);
 	int (*write)(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 val);
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /*
@@ -844,6 +861,8 @@ struct pci_error_handlers {
 
 	/* Device driver may resume normal operations */
 	void (*resume)(struct pci_dev *dev);
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 
@@ -923,6 +942,11 @@ struct pci_driver {
 	struct device_driver	driver;
 	struct pci_dynids	dynids;
 	bool driver_managed_dma;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 static inline struct pci_driver *to_pci_driver(struct device_driver *drv)
diff --git a/include/linux/percpu-rwsem.h b/include/linux/percpu-rwsem.h
index 36b942b..ebd81e0 100644
--- a/include/linux/percpu-rwsem.h
+++ b/include/linux/percpu-rwsem.h
@@ -9,6 +9,9 @@
 #include <linux/rcu_sync.h>
 #include <linux/lockdep.h>
 
+void _trace_android_vh_record_pcpu_rwsem_starttime(
+		struct task_struct *tsk, unsigned long settime);
+
 struct percpu_rw_semaphore {
 	struct rcu_sync		rss;
 	unsigned int __percpu	*read_count;
@@ -68,6 +71,7 @@ static inline void percpu_down_read(struct percpu_rw_semaphore *sem)
 	 * bleeding the critical section out.
 	 */
 	preempt_enable();
+	_trace_android_vh_record_pcpu_rwsem_starttime(current, jiffies);
 }
 
 static inline bool percpu_down_read_trylock(struct percpu_rw_semaphore *sem)
@@ -88,8 +92,10 @@ static inline bool percpu_down_read_trylock(struct percpu_rw_semaphore *sem)
 	 * bleeding the critical section out.
 	 */
 
-	if (ret)
+	if (ret) {
+		_trace_android_vh_record_pcpu_rwsem_starttime(current, jiffies);
 		rwsem_acquire_read(&sem->dep_map, 0, 1, _RET_IP_);
+	}
 
 	return ret;
 }
@@ -118,6 +124,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_starttime(current, 0);
 	preempt_enable();
 }
 
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
index 0031f7b..13c606a 100644
--- a/include/linux/perf_event.h
+++ b/include/linux/perf_event.h
@@ -1298,22 +1298,40 @@ extern void perf_event_bpf_event(struct bpf_prog *prog,
 
 #ifdef CONFIG_GUEST_PERF_EVENTS
 extern struct perf_guest_info_callbacks __rcu *perf_guest_cbs;
-
-DECLARE_STATIC_CALL(__perf_guest_state, *perf_guest_cbs->state);
-DECLARE_STATIC_CALL(__perf_guest_get_ip, *perf_guest_cbs->get_ip);
-DECLARE_STATIC_CALL(__perf_guest_handle_intel_pt_intr, *perf_guest_cbs->handle_intel_pt_intr);
-
+static inline struct perf_guest_info_callbacks *perf_get_guest_cbs(void)
+{
+	/*
+	 * Callbacks are RCU-protected and must be READ_ONCE to avoid reloading
+	 * the callbacks between a !NULL check and dereferences, to ensure
+	 * pending stores/changes to the callback pointers are visible before a
+	 * non-NULL perf_guest_cbs is visible to readers, and to prevent a
+	 * module from unloading callbacks while readers are active.
+	 */
+	return rcu_dereference(perf_guest_cbs);
+}
 static inline unsigned int perf_guest_state(void)
 {
-	return static_call(__perf_guest_state)();
+	struct perf_guest_info_callbacks *guest_cbs = perf_get_guest_cbs();
+
+	return guest_cbs ? guest_cbs->state() : 0;
 }
 static inline unsigned long perf_guest_get_ip(void)
 {
-	return static_call(__perf_guest_get_ip)();
+	struct perf_guest_info_callbacks *guest_cbs = perf_get_guest_cbs();
+
+	/*
+	 * Arbitrarily return '0' in the unlikely scenario that the callbacks
+	 * are unregistered between checking guest state and getting the IP.
+	 */
+	return guest_cbs ? guest_cbs->get_ip() : 0;
 }
 static inline unsigned int perf_guest_handle_intel_pt_intr(void)
 {
-	return static_call(__perf_guest_handle_intel_pt_intr)();
+	struct perf_guest_info_callbacks *guest_cbs = perf_get_guest_cbs();
+
+	if (guest_cbs && guest_cbs->handle_intel_pt_intr)
+		return guest_cbs->handle_intel_pt_intr();
+	return 0;
 }
 extern void perf_register_guest_info_callbacks(struct perf_guest_info_callbacks *cbs);
 extern void perf_unregister_guest_info_callbacks(struct perf_guest_info_callbacks *cbs);
diff --git a/include/linux/pgtable.h b/include/linux/pgtable.h
index 5f0d7d0..bdb7afc 100644
--- a/include/linux/pgtable.h
+++ b/include/linux/pgtable.h
@@ -1209,7 +1209,8 @@ static inline int track_pfn_copy(struct vm_area_struct *vma)
  * can be for the entire vma (in which case pfn, size are zero).
  */
 static inline void untrack_pfn(struct vm_area_struct *vma,
-			       unsigned long pfn, unsigned long size)
+			       unsigned long pfn, unsigned long size,
+			       bool mm_wr_locked)
 {
 }
 
@@ -1227,7 +1228,7 @@ extern void track_pfn_insert(struct vm_area_struct *vma, pgprot_t *prot,
 			     pfn_t pfn);
 extern int track_pfn_copy(struct vm_area_struct *vma);
 extern void untrack_pfn(struct vm_area_struct *vma, unsigned long pfn,
-			unsigned long size);
+			unsigned long size, bool mm_wr_locked);
 extern void untrack_pfn_moved(struct vm_area_struct *vma);
 #endif
 
diff --git a/include/linux/phy.h b/include/linux/phy.h
index ddf6619..7b1a308 100644
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -27,6 +27,7 @@
 #include <linux/irqreturn.h>
 #include <linux/iopoll.h>
 #include <linux/refcount.h>
+#include <linux/android_kabi.h>
 
 #include <linux/atomic.h>
 
@@ -730,6 +731,11 @@ struct phy_device {
 	/* MACsec management functions */
 	const struct macsec_ops *macsec_ops;
 #endif
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 static inline struct phy_device *to_phy_device(const struct device *dev)
@@ -972,6 +978,9 @@ struct phy_driver {
 	int (*get_sqi)(struct phy_device *dev);
 	/** @get_sqi_max: Get the maximum signal quality indication */
 	int (*get_sqi_max)(struct phy_device *dev);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 #define to_phy_driver(d) container_of(to_mdio_common_driver(d),		\
 				      struct phy_driver, mdiodrv)
diff --git a/include/linux/platform_device.h b/include/linux/platform_device.h
index b845fd8..6f5f704 100644
--- a/include/linux/platform_device.h
+++ b/include/linux/platform_device.h
@@ -11,6 +11,7 @@
 #define _PLATFORM_DEVICE_H_
 
 #include <linux/device.h>
+#include <linux/android_kabi.h>
 
 #define PLATFORM_DEVID_NONE	(-1)
 #define PLATFORM_DEVID_AUTO	(-2)
@@ -42,6 +43,9 @@ struct platform_device {
 
 	/* arch specific additions */
 	struct pdev_archdata	archdata;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 #define platform_get_device_id(pdev)	((pdev)->id_entry)
@@ -104,6 +108,8 @@ struct platform_device_info {
 		u64 dma_mask;
 
 		const struct property_entry *properties;
+
+		ANDROID_KABI_RESERVE(1);
 };
 extern struct platform_device *platform_device_register_full(
 		const struct platform_device_info *pdevinfo);
@@ -233,6 +239,8 @@ struct platform_driver {
 	 * to setup and manage their own I/O address space.
 	 */
 	bool driver_managed_dma;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 #define to_platform_driver(drv)	(container_of((drv), struct platform_driver, \
diff --git a/include/linux/pm.h b/include/linux/pm.h
index 93cd34f..e72fde2 100644
--- a/include/linux/pm.h
+++ b/include/linux/pm.h
@@ -16,6 +16,7 @@
 #include <linux/timer.h>
 #include <linux/hrtimer.h>
 #include <linux/completion.h>
+#include <linux/android_kabi.h>
 
 /*
  * Callbacks for platform drivers to implement.
@@ -307,6 +308,8 @@ struct dev_pm_ops {
 	int (*runtime_suspend)(struct device *dev);
 	int (*runtime_resume)(struct device *dev);
 	int (*runtime_idle)(struct device *dev);
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 #define SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
@@ -692,6 +695,9 @@ struct dev_pm_info {
 	struct pm_subsys_data	*subsys_data;  /* Owned by the subsystem. */
 	void (*set_latency_tolerance)(struct device *, s32);
 	struct dev_pm_qos	*qos;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 extern int dev_pm_get_subsys_data(struct device *dev);
@@ -718,6 +724,8 @@ struct dev_pm_domain {
 	int (*activate)(struct device *dev);
 	void (*sync)(struct device *dev);
 	void (*dismiss)(struct device *dev);
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /*
diff --git a/include/linux/pm_qos.h b/include/linux/pm_qos.h
index 4a69d4a..d2551d1 100644
--- a/include/linux/pm_qos.h
+++ b/include/linux/pm_qos.h
@@ -93,6 +93,7 @@ struct freq_qos_request {
 	enum freq_qos_req_type type;
 	struct plist_node pnode;
 	struct freq_constraints *qos;
+	ANDROID_OEM_DATA(1);
 };
 
 
diff --git a/include/linux/poll.h b/include/linux/poll.h
index a9e0e1c..d1ea4f3 100644
--- a/include/linux/poll.h
+++ b/include/linux/poll.h
@@ -14,11 +14,7 @@
 
 /* ~832 bytes of stack space used max in sys_select/sys_poll before allocating
    additional memory. */
-#ifdef __clang__
-#define MAX_STACK_ALLOC 768
-#else
 #define MAX_STACK_ALLOC 832
-#endif
 #define FRONTEND_STACK_ALLOC	256
 #define SELECT_STACK_ALLOC	FRONTEND_STACK_ALLOC
 #define POLL_STACK_ALLOC	FRONTEND_STACK_ALLOC
diff --git a/include/linux/power_supply.h b/include/linux/power_supply.h
index aa2c4a7..7dd8176 100644
--- a/include/linux/power_supply.h
+++ b/include/linux/power_supply.h
@@ -17,6 +17,7 @@
 #include <linux/leds.h>
 #include <linux/spinlock.h>
 #include <linux/notifier.h>
+#include <linux/android_kabi.h>
 
 /*
  * All voltages, currents, charges, energies, time and temperatures in uV,
@@ -50,6 +51,12 @@ enum {
 	POWER_SUPPLY_CHARGE_TYPE_CUSTOM,	/* use CHARGE_CONTROL_* props */
 	POWER_SUPPLY_CHARGE_TYPE_LONGLIFE,	/* slow speed, longer life */
 	POWER_SUPPLY_CHARGE_TYPE_BYPASS,	/* bypassing the charger */
+
+	/*
+	 * force to 50 to minimize the chances of userspace binary
+	 * incompatibility on newer upstream kernels
+	 */
+	POWER_SUPPLY_CHARGE_TYPE_TAPER_EXT = 50,	/* charging in CV phase */
 };
 
 enum {
@@ -236,6 +243,8 @@ struct power_supply_config {
 
 	char **supplied_to;
 	size_t num_supplicants;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /* Description of power supply */
@@ -277,6 +286,8 @@ struct power_supply_desc {
 	bool no_thermal;
 	/* For APM emulation, think legacy userspace. */
 	int use_for_apm;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct power_supply {
@@ -318,6 +329,8 @@ struct power_supply {
 	struct led_trigger *charging_blink_full_solid_trig;
 	char *charging_blink_full_solid_trig_name;
 #endif
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /*
@@ -337,6 +350,7 @@ struct power_supply_info {
 	int energy_full_design;
 	int energy_empty_design;
 	int use_for_apm;
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct power_supply_battery_ocv_table {
@@ -764,6 +778,7 @@ struct power_supply_battery_info {
 	int vbat2ri_charging_size;
 	int bti_resistance_ohm;
 	int bti_resistance_tolerance;
+	ANDROID_KABI_RESERVE(1);
 };
 
 extern struct atomic_notifier_head power_supply_notifier;
@@ -780,12 +795,22 @@ static inline struct power_supply *power_supply_get_by_name(const char *name)
 #ifdef CONFIG_OF
 extern struct power_supply *power_supply_get_by_phandle(struct device_node *np,
 							const char *property);
+extern int power_supply_get_by_phandle_array(struct device_node *np,
+					     const char *property,
+					     struct power_supply **psy,
+					     ssize_t size);
 extern struct power_supply *devm_power_supply_get_by_phandle(
 				    struct device *dev, const char *property);
 #else /* !CONFIG_OF */
 static inline struct power_supply *
 power_supply_get_by_phandle(struct device_node *np, const char *property)
 { return NULL; }
+static inline int
+power_supply_get_by_phandle_array(struct device_node *np,
+				  const char *property,
+				  struct power_supply **psy,
+				  int size)
+{ return 0; }
 static inline struct power_supply *
 devm_power_supply_get_by_phandle(struct device *dev, const char *property)
 { return NULL; }
diff --git a/include/linux/profile.h b/include/linux/profile.h
index 11db1ec..7525886 100644
--- a/include/linux/profile.h
+++ b/include/linux/profile.h
@@ -31,6 +31,11 @@ static inline int create_proc_profile(void)
 }
 #endif
 
+enum profile_type {
+	PROFILE_TASK_EXIT,
+	PROFILE_MUNMAP
+};
+
 #ifdef CONFIG_PROFILING
 
 extern int prof_on __read_mostly;
@@ -61,6 +66,15 @@ static inline void profile_hit(int type, void *ip)
 struct task_struct;
 struct mm_struct;
 
+/* task is in do_exit() */
+void profile_task_exit(struct task_struct * task);
+
+/* sys_munmap */
+void profile_munmap(unsigned long addr);
+
+int profile_event_register(enum profile_type, struct notifier_block * n);
+int profile_event_unregister(enum profile_type, struct notifier_block * n);
+
 #else
 
 #define prof_on 0
@@ -85,6 +99,18 @@ static inline void profile_hit(int type, void *ip)
 	return;
 }
 
+static inline int profile_event_register(enum profile_type t, struct notifier_block * n)
+{
+	return -ENOSYS;
+}
+
+static inline int profile_event_unregister(enum profile_type t, struct notifier_block * n)
+{
+	return -ENOSYS;
+}
+
+#define profile_task_exit(a) do { } while (0)
+#define profile_munmap(a) do { } while (0)
 
 #endif /* CONFIG_PROFILING */
 
diff --git a/include/linux/pwm.h b/include/linux/pwm.h
index 4de0916..2e2599f 100644
--- a/include/linux/pwm.h
+++ b/include/linux/pwm.h
@@ -5,6 +5,7 @@
 #include <linux/err.h>
 #include <linux/mutex.h>
 #include <linux/of.h>
+#include <linux/android_kabi.h>
 
 struct pwm_chip;
 
@@ -87,6 +88,8 @@ struct pwm_device {
 	struct pwm_args args;
 	struct pwm_state state;
 	struct pwm_state last;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -279,6 +282,7 @@ struct pwm_ops {
 	int (*get_state)(struct pwm_chip *chip, struct pwm_device *pwm,
 			 struct pwm_state *state);
 	struct module *owner;
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -305,6 +309,8 @@ struct pwm_chip {
 	/* only used internally by the PWM framework */
 	struct list_head list;
 	struct pwm_device *pwms;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 #if IS_ENABLED(CONFIG_PWM)
diff --git a/include/linux/qcom_scm.h b/include/linux/qcom_scm.h
index f833564..77f7b58 100644
--- a/include/linux/qcom_scm.h
+++ b/include/linux/qcom_scm.h
@@ -96,7 +96,7 @@ extern int qcom_scm_mem_protect_video_var(u32 cp_start, u32 cp_size,
 					  u32 cp_nonpixel_start,
 					  u32 cp_nonpixel_size);
 extern int qcom_scm_assign_mem(phys_addr_t mem_addr, size_t mem_sz,
-			       unsigned int *src,
+			       u64 *src,
 			       const struct qcom_scm_vmperm *newvm,
 			       unsigned int dest_cnt);
 
diff --git a/include/linux/quota.h b/include/linux/quota.h
index fd692b4..a4dd890 100644
--- a/include/linux/quota.h
+++ b/include/linux/quota.h
@@ -316,6 +316,9 @@ struct quota_format_ops {
 	int (*commit_dqblk)(struct dquot *dquot);	/* Write structure for one user */
 	int (*release_dqblk)(struct dquot *dquot);	/* Called when last reference to dquot is being dropped */
 	int (*get_next_id)(struct super_block *sb, struct kqid *qid);	/* Get next ID with existing structure in the quota file */
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 /* Operations working with dquots */
@@ -335,6 +338,9 @@ struct dquot_operations {
 	int (*get_inode_usage) (struct inode *, qsize_t *);
 	/* Get next ID with active quota structure */
 	int (*get_next_id) (struct super_block *sb, struct kqid *qid);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 struct path;
@@ -438,6 +444,9 @@ struct quotactl_ops {
 	int (*set_dqblk)(struct super_block *, struct kqid, struct qc_dqblk *);
 	int (*get_state)(struct super_block *, struct qc_state *);
 	int (*rm_xquota)(struct super_block *, unsigned int);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 struct quota_format_type {
diff --git a/include/linux/regmap.h b/include/linux/regmap.h
index ca3434d..dadc82c 100644
--- a/include/linux/regmap.h
+++ b/include/linux/regmap.h
@@ -19,6 +19,7 @@
 #include <linux/lockdep.h>
 #include <linux/iopoll.h>
 #include <linux/fwnode.h>
+#include <linux/android_kabi.h>
 
 struct module;
 struct clk;
@@ -437,6 +438,8 @@ struct regmap_config {
 	unsigned int hwlock_mode;
 
 	bool can_sleep;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -474,6 +477,8 @@ struct regmap_range_cfg {
 	/* Data window (per each page) */
 	unsigned int window_start;
 	unsigned int window_len;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct regmap_async;
@@ -560,6 +565,8 @@ struct regmap_bus {
 	size_t max_raw_read;
 	size_t max_raw_write;
 	bool free_on_exit;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /*
diff --git a/include/linux/regulator/driver.h b/include/linux/regulator/driver.h
index d3b4a3d..2859125 100644
--- a/include/linux/regulator/driver.h
+++ b/include/linux/regulator/driver.h
@@ -17,6 +17,7 @@
 #include <linux/notifier.h>
 #include <linux/regulator/consumer.h>
 #include <linux/ww_mutex.h>
+#include <linux/android_kabi.h>
 
 struct gpio_desc;
 struct regmap;
@@ -241,6 +242,8 @@ struct regulator_ops {
 	int (*resume)(struct regulator_dev *rdev);
 
 	int (*set_pull_down) (struct regulator_dev *);
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /*
@@ -431,6 +434,8 @@ struct regulator_desc {
 	unsigned int poll_enabled_time;
 
 	unsigned int (*of_map_mode)(unsigned int mode);
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -650,6 +655,8 @@ struct regulator_dev {
 	int cached_err;
 	bool use_cached_err;
 	spinlock_t err_lock;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /*
diff --git a/include/linux/ring_buffer.h b/include/linux/ring_buffer.h
index 3c7d295..b93a349d 100644
--- a/include/linux/ring_buffer.h
+++ b/include/linux/ring_buffer.h
@@ -3,8 +3,11 @@
 #define _LINUX_RING_BUFFER_H
 
 #include <linux/mm.h>
-#include <linux/seq_file.h>
 #include <linux/poll.h>
+#include <linux/ring_buffer_ext.h>
+#include <linux/seq_file.h>
+
+#include <asm/local.h>
 
 struct trace_buffer;
 struct ring_buffer_iter;
@@ -18,6 +21,8 @@ struct ring_buffer_event {
 	u32		array[];
 };
 
+#define RB_EVNT_HDR_SIZE (offsetof(struct ring_buffer_event, array))
+
 /**
  * enum ring_buffer_type - internal ring buffer types
  *
@@ -59,11 +64,49 @@ enum ring_buffer_type {
 	RINGBUF_TYPE_TIME_STAMP,
 };
 
+#define TS_SHIFT        27
+#define TS_MASK         ((1ULL << TS_SHIFT) - 1)
+#define TS_DELTA_TEST   (~TS_MASK)
+
+/*
+ * We need to fit the time_stamp delta into 27 bits.
+ */
+static inline int test_time_stamp(u64 delta)
+{
+	if (delta & TS_DELTA_TEST)
+		return 1;
+	return 0;
+}
+
 unsigned ring_buffer_event_length(struct ring_buffer_event *event);
 void *ring_buffer_event_data(struct ring_buffer_event *event);
 u64 ring_buffer_event_time_stamp(struct trace_buffer *buffer,
 				 struct ring_buffer_event *event);
 
+#define BUF_PAGE_HDR_SIZE offsetof(struct buffer_data_page, data)
+
+#define BUF_PAGE_SIZE (PAGE_SIZE - BUF_PAGE_HDR_SIZE)
+
+#define RB_ALIGNMENT		4U
+#define RB_MAX_SMALL_DATA	(RB_ALIGNMENT * RINGBUF_TYPE_DATA_TYPE_LEN_MAX)
+#define RB_EVNT_MIN_SIZE	8U	/* two 32bit words */
+
+#ifndef CONFIG_HAVE_64BIT_ALIGNED_ACCESS
+# define RB_FORCE_8BYTE_ALIGNMENT	0
+# define RB_ARCH_ALIGNMENT		RB_ALIGNMENT
+#else
+# define RB_FORCE_8BYTE_ALIGNMENT	1
+# define RB_ARCH_ALIGNMENT		8U
+#endif
+
+#define RB_ALIGN_DATA		__aligned(RB_ARCH_ALIGNMENT)
+
+struct buffer_data_page {
+	u64		 time_stamp;	/* page time stamp */
+	local_t		 commit;	/* write committed index */
+	unsigned char	 data[] RB_ALIGN_DATA;	/* data of buffer page */
+};
+
 /*
  * ring_buffer_discard_commit will remove an event that has not
  *   been committed yet. If this is used, then ring_buffer_unlock_commit
@@ -98,6 +141,14 @@ __ring_buffer_alloc(unsigned long size, unsigned flags, struct lock_class_key *k
 	__ring_buffer_alloc((size), (flags), &__key);	\
 })
 
+struct ring_buffer_ext_cb {
+	int (*update_footers)(int cpu);
+	int (*swap_reader)(int cpu);
+};
+
+struct trace_buffer *
+ring_buffer_alloc_ext(unsigned long size, struct ring_buffer_ext_cb *cb);
+
 int ring_buffer_wait(struct trace_buffer *buffer, int cpu, int full);
 __poll_t ring_buffer_poll_wait(struct trace_buffer *buffer, int cpu,
 			  struct file *filp, poll_table *poll_table, int full);
@@ -212,4 +263,8 @@ int trace_rb_cpu_prepare(unsigned int cpu, struct hlist_node *node);
 #define trace_rb_cpu_prepare	NULL
 #endif
 
+size_t trace_buffer_pack_size(struct trace_buffer *trace_buffer);
+int trace_buffer_pack(struct trace_buffer *trace_buffer, struct trace_buffer_pack *pack);
+int ring_buffer_poke(struct trace_buffer *buffer, int cpu);
+
 #endif /* _LINUX_RING_BUFFER_H */
diff --git a/include/linux/ring_buffer_ext.h b/include/linux/ring_buffer_ext.h
new file mode 100644
index 0000000..7d86b8c
--- /dev/null
+++ b/include/linux/ring_buffer_ext.h
@@ -0,0 +1,79 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _LINUX_RING_BUFFER_EXT_H
+#define _LINUX_RING_BUFFER_EXT_H
+#include <linux/mm.h>
+#include <linux/types.h>
+
+struct rb_ext_stats {
+	u64		entries;
+	unsigned long	pages_touched;
+	unsigned long	overrun;
+};
+
+#define RB_PAGE_FT_HEAD		(1 << 0)
+#define RB_PAGE_FT_READER	(1 << 1)
+#define RB_PAGE_FT_COMMIT	(1 << 2)
+
+/*
+ * The pages where the events are stored are the only shared elements between
+ * the reader and the external writer. They are convenient to enable
+ * communication from the writer to the reader. The data will be used by the
+ * reader to update its view on the ring buffer.
+ */
+struct rb_ext_page_footer {
+	atomic_t		writer_status;
+	atomic_t		reader_status;
+	struct rb_ext_stats	stats;
+};
+
+static inline struct rb_ext_page_footer *rb_ext_page_get_footer(void *page)
+{
+	struct rb_ext_page_footer *footer;
+	unsigned long page_va = (unsigned long)page;
+
+	page_va	= ALIGN_DOWN(page_va, PAGE_SIZE);
+
+	return (struct rb_ext_page_footer *)(page_va + PAGE_SIZE -
+					     sizeof(*footer));
+}
+
+#define BUF_EXT_PAGE_SIZE (BUF_PAGE_SIZE - sizeof(struct rb_ext_page_footer))
+
+/*
+ * An external writer can't rely on the internal struct ring_buffer_per_cpu.
+ * Instead, allow to pack the relevant information into struct
+ * ring_buffer_pack which can be sent to the writer. The latter can then create
+ * its own view on the ring buffer.
+ */
+struct ring_buffer_pack {
+	int		cpu;
+	unsigned long	reader_page_va;
+	unsigned long	nr_pages;
+	unsigned long	page_va[];
+};
+
+struct trace_buffer_pack {
+	int			nr_cpus;
+	unsigned long		total_pages;
+	char			__data[];	/* contains ring_buffer_pack */
+};
+
+static inline
+struct ring_buffer_pack *__next_ring_buffer_pack(struct ring_buffer_pack *rb_pack)
+{
+	size_t len;
+
+	len = offsetof(struct ring_buffer_pack, page_va) +
+		       sizeof(unsigned long) * rb_pack->nr_pages;
+
+	return (struct ring_buffer_pack *)((void *)rb_pack + len);
+}
+
+/*
+ * Accessor for ring_buffer_pack's within trace_buffer_pack
+ */
+#define for_each_ring_buffer_pack(rb_pack, cpu, trace_pack)		\
+	for (rb_pack = (struct ring_buffer_pack *)&trace_pack->__data[0], cpu = 0;	\
+	     cpu < trace_pack->nr_cpus;					\
+	     cpu++, rb_pack = __next_ring_buffer_pack(rb_pack))
+#endif
diff --git a/include/linux/rtc.h b/include/linux/rtc.h
index 1fd9c6a..5554814 100644
--- a/include/linux/rtc.h
+++ b/include/linux/rtc.h
@@ -16,6 +16,7 @@
 #include <linux/types.h>
 #include <linux/interrupt.h>
 #include <linux/nvmem-provider.h>
+#include <linux/android_kabi.h>
 #include <uapi/linux/rtc.h>
 
 extern int rtc_month_days(unsigned int month, unsigned int year);
@@ -68,6 +69,8 @@ struct rtc_class_ops {
 	int (*set_offset)(struct device *, long offset);
 	int (*param_get)(struct device *, struct rtc_param *param);
 	int (*param_set)(struct device *, struct rtc_param *param);
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct rtc_device;
@@ -160,6 +163,8 @@ struct rtc_device {
 	unsigned int uie_task_active:1;
 	unsigned int uie_timer_active:1;
 #endif
+
+	ANDROID_KABI_RESERVE(1);
 };
 #define to_rtc_device(d) container_of(d, struct rtc_device, dev)
 
diff --git a/include/linux/rwsem.h b/include/linux/rwsem.h
index efa5c32..59f1674 100644
--- a/include/linux/rwsem.h
+++ b/include/linux/rwsem.h
@@ -31,6 +31,7 @@
 #ifdef CONFIG_RWSEM_SPIN_ON_OWNER
 #include <linux/osq_lock.h>
 #endif
+#include <linux/android_vendor.h>
 
 /*
  * For an uncontended rwsem, count and owner are the only fields a task
@@ -63,6 +64,8 @@ struct rw_semaphore {
 #ifdef CONFIG_DEBUG_LOCK_ALLOC
 	struct lockdep_map	dep_map;
 #endif
+	ANDROID_VENDOR_DATA(1);
+	ANDROID_OEM_DATA_ARRAY(1, 2);
 };
 
 /* In all implementations count != 0 means locked */
diff --git a/include/linux/sched.h b/include/linux/sched.h
index ffb6eb5..19a43aa 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -36,7 +36,9 @@
 #include <linux/seqlock.h>
 #include <linux/kcsan.h>
 #include <linux/rv.h>
+#include <linux/android_vendor.h>
 #include <asm/kmap_size.h>
+#include <linux/android_kabi.h>
 
 /* task_struct member predeclarations (sorted alphabetically): */
 struct audit_context;
@@ -311,6 +313,8 @@ extern int __must_check io_schedule_prepare(void);
 extern void io_schedule_finish(int token);
 extern long io_schedule_timeout(long timeout);
 extern void io_schedule(void);
+extern struct task_struct *pick_migrate_task(struct rq *rq);
+extern int select_fallback_rq(int cpu, struct task_struct *p);
 
 /**
  * struct prev_cputime - snapshot of system and user cputime
@@ -578,6 +582,11 @@ struct sched_entity {
 	 */
 	struct sched_avg		avg;
 #endif
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 struct sched_rt_entity {
@@ -596,6 +605,11 @@ struct sched_rt_entity {
 	/* rq "owned" by this entity/group: */
 	struct rt_rq			*my_q;
 #endif
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 } __randomize_layout;
 
 struct sched_dl_entity {
@@ -1023,6 +1037,10 @@ struct task_struct {
 	u64				stimescaled;
 #endif
 	u64				gtime;
+#ifdef CONFIG_CPU_FREQ_TIMES
+	u64				*time_in_state;
+	unsigned int			max_state;
+#endif
 	struct prev_cputime		prev_cputime;
 #ifdef CONFIG_VIRT_CPU_ACCOUNTING_GEN
 	struct vtime			vtime;
@@ -1135,6 +1153,7 @@ struct task_struct {
 	raw_spinlock_t			pi_lock;
 
 	struct wake_q_node		wake_q;
+	int				wake_q_count;
 
 #ifdef CONFIG_RT_MUTEXES
 	/* PI waiters blocked on a rt_mutex held by this task: */
@@ -1500,6 +1519,8 @@ struct task_struct {
 	struct callback_head		mce_kill_me;
 	int				mce_count;
 #endif
+	ANDROID_VENDOR_DATA_ARRAY(1, 64);
+	ANDROID_OEM_DATA_ARRAY(1, 6);
 
 #ifdef CONFIG_KRETPROBES
 	struct llist_head               kretprobe_instances;
@@ -1527,6 +1548,14 @@ struct task_struct {
 	 */
 	union rv_task_monitor		rv[RV_PER_TASK_MONITORS];
 #endif
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
+	ANDROID_KABI_RESERVE(5);
+	ANDROID_KABI_RESERVE(6);
+	ANDROID_KABI_RESERVE(7);
+	ANDROID_KABI_RESERVE(8);
 
 	/*
 	 * New fields for task_struct should be added above here, so that
diff --git a/include/linux/sched/signal.h b/include/linux/sched/signal.h
index 2009926..f3461a4 100644
--- a/include/linux/sched/signal.h
+++ b/include/linux/sched/signal.h
@@ -12,6 +12,7 @@
 #include <linux/posix-timers.h>
 #include <linux/mm_types.h>
 #include <asm/ptrace.h>
+#include <linux/android_kabi.h>
 
 /*
  * Types defining task->signal and task->sighand and APIs using them:
@@ -245,6 +246,11 @@ struct signal_struct {
 						 * and may have inconsistent
 						 * permissions.
 						 */
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 } __randomize_layout;
 
 /*
diff --git a/include/linux/sched/topology.h b/include/linux/sched/topology.h
index 816df6c..d51e264 100644
--- a/include/linux/sched/topology.h
+++ b/include/linux/sched/topology.h
@@ -3,6 +3,8 @@
 #define _LINUX_SCHED_TOPOLOGY_H
 
 #include <linux/topology.h>
+#include <linux/android_kabi.h>
+#include <linux/android_vendor.h>
 
 #include <linux/sched/idle.h>
 
@@ -82,6 +84,8 @@ struct sched_domain_shared {
 	atomic_t	nr_busy_cpus;
 	int		has_idle_cores;
 	int		nr_idle_scan;
+
+	ANDROID_VENDOR_DATA(1);
 };
 
 struct sched_domain {
@@ -152,6 +156,10 @@ struct sched_domain {
 	struct sched_domain_shared *shared;
 
 	unsigned int span_weight;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+
 	/*
 	 * Span of all CPUs in this domain.
 	 *
diff --git a/include/linux/sched/user.h b/include/linux/sched/user.h
index f054d03..ff04b76 100644
--- a/include/linux/sched/user.h
+++ b/include/linux/sched/user.h
@@ -7,6 +7,7 @@
 #include <linux/percpu_counter.h>
 #include <linux/refcount.h>
 #include <linux/ratelimit.h>
+#include <linux/android_kabi.h>
 
 /*
  * Some day this will be a full-fledged user tracking system..
@@ -34,6 +35,10 @@ struct user_struct {
 
 	/* Miscellaneous per-user rate limit */
 	struct ratelimit_state ratelimit;
+	ANDROID_OEM_DATA_ARRAY(1, 2);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 extern int uids_sysfs_init(void);
diff --git a/include/linux/sched/wake_q.h b/include/linux/sched/wake_q.h
index 06cd8fb..9a1394f 100644
--- a/include/linux/sched/wake_q.h
+++ b/include/linux/sched/wake_q.h
@@ -38,6 +38,7 @@
 struct wake_q_head {
 	struct wake_q_node *first;
 	struct wake_q_node **lastp;
+	int count;
 };
 
 #define WAKE_Q_TAIL ((struct wake_q_node *) 0x01)
@@ -52,6 +53,7 @@ static inline void wake_q_init(struct wake_q_head *head)
 {
 	head->first = WAKE_Q_TAIL;
 	head->lastp = &head->first;
+	head->count = 0;
 }
 
 static inline bool wake_q_empty(struct wake_q_head *head)
diff --git a/include/linux/sched/xacct.h b/include/linux/sched/xacct.h
index c078f0a..9544c9d 100644
--- a/include/linux/sched/xacct.h
+++ b/include/linux/sched/xacct.h
@@ -28,6 +28,11 @@ static inline void inc_syscw(struct task_struct *tsk)
 {
 	tsk->ioac.syscw++;
 }
+
+static inline void inc_syscfs(struct task_struct *tsk)
+{
+	tsk->ioac.syscfs++;
+}
 #else
 static inline void add_rchar(struct task_struct *tsk, ssize_t amt)
 {
@@ -44,6 +49,10 @@ static inline void inc_syscr(struct task_struct *tsk)
 static inline void inc_syscw(struct task_struct *tsk)
 {
 }
+
+static inline void inc_syscfs(struct task_struct *tsk)
+{
+}
 #endif
 
 #endif /* _LINUX_SCHED_XACCT_H */
diff --git a/include/linux/scmi_protocol.h b/include/linux/scmi_protocol.h
index 4f765bc..a21d111 100644
--- a/include/linux/scmi_protocol.h
+++ b/include/linux/scmi_protocol.h
@@ -12,6 +12,7 @@
 #include <linux/device.h>
 #include <linux/notifier.h>
 #include <linux/types.h>
+#include <linux/android_kabi.h>
 
 #define SCMI_MAX_STR_SIZE		64
 #define SCMI_SHORT_NAME_MAX_SIZE	16
@@ -95,6 +96,8 @@ struct scmi_clk_proto_ops {
 	int (*enable_atomic)(const struct scmi_protocol_handle *ph, u32 clk_id);
 	int (*disable_atomic)(const struct scmi_protocol_handle *ph,
 			      u32 clk_id);
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -142,6 +145,8 @@ struct scmi_perf_proto_ops {
 	bool (*fast_switch_possible)(const struct scmi_protocol_handle *ph,
 				     struct device *dev);
 	enum scmi_power_scale (*power_scale_get)(const struct scmi_protocol_handle *ph);
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -168,6 +173,8 @@ struct scmi_power_proto_ops {
 			 u32 state);
 	int (*state_get)(const struct scmi_protocol_handle *ph, u32 domain,
 			 u32 *state);
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -344,6 +351,8 @@ struct scmi_sensor_info {
 	unsigned int resolution;
 	int exponent;
 	struct scmi_range_attrs scalar_attrs;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /*
@@ -479,6 +488,8 @@ struct scmi_sensor_proto_ops {
 			  u32 sensor_id, u32 *sensor_config);
 	int (*config_set)(const struct scmi_protocol_handle *ph,
 			  u32 sensor_id, u32 sensor_config);
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -500,6 +511,8 @@ struct scmi_reset_proto_ops {
 	int (*reset)(const struct scmi_protocol_handle *ph, u32 domain);
 	int (*assert)(const struct scmi_protocol_handle *ph, u32 domain);
 	int (*deassert)(const struct scmi_protocol_handle *ph, u32 domain);
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 enum scmi_voltage_level_mode {
@@ -771,6 +784,8 @@ struct scmi_handle {
 				    unsigned int *atomic_threshold);
 
 	const struct scmi_notify_ops *notify_ops;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 enum scmi_std_protocol {
@@ -800,6 +815,8 @@ struct scmi_device {
 	const char *name;
 	struct device dev;
 	struct scmi_handle *handle;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 #define to_scmi_dev(d) container_of(d, struct scmi_device, dev)
diff --git a/include/linux/scs.h b/include/linux/scs.h
index 18122d9..4ab5bdc 100644
--- a/include/linux/scs.h
+++ b/include/linux/scs.h
@@ -53,6 +53,22 @@ static inline bool task_scs_end_corrupted(struct task_struct *tsk)
 	return sz >= SCS_SIZE - 1 || READ_ONCE_NOCHECK(*magic) != SCS_END_MAGIC;
 }
 
+DECLARE_STATIC_KEY_FALSE(dynamic_scs_enabled);
+
+static inline bool scs_is_dynamic(void)
+{
+	if (!IS_ENABLED(CONFIG_DYNAMIC_SCS))
+		return false;
+	return static_branch_likely(&dynamic_scs_enabled);
+}
+
+static inline bool scs_is_enabled(void)
+{
+	if (!IS_ENABLED(CONFIG_DYNAMIC_SCS))
+		return true;
+	return scs_is_dynamic();
+}
+
 #else /* CONFIG_SHADOW_CALL_STACK */
 
 static inline void *scs_alloc(int node) { return NULL; }
@@ -62,6 +78,8 @@ static inline void scs_task_reset(struct task_struct *tsk) {}
 static inline int scs_prepare(struct task_struct *tsk, int node) { return 0; }
 static inline void scs_release(struct task_struct *tsk) {}
 static inline bool task_scs_end_corrupted(struct task_struct *tsk) { return false; }
+static inline bool scs_is_enabled(void) { return false; }
+static inline bool scs_is_dynamic(void) { return false; }
 
 #endif /* CONFIG_SHADOW_CALL_STACK */
 
diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h
index d657f2a..4a28aa5 100644
--- a/include/linux/serial_core.h
+++ b/include/linux/serial_core.h
@@ -17,6 +17,7 @@
 #include <linux/tty.h>
 #include <linux/mutex.h>
 #include <linux/sysrq.h>
+#include <linux/android_kabi.h>
 #include <uapi/linux/serial_core.h>
 
 #ifdef CONFIG_SERIAL_CORE_CONSOLE
@@ -402,6 +403,9 @@ struct uart_ops {
 	void		(*poll_put_char)(struct uart_port *, unsigned char);
 	int		(*poll_get_char)(struct uart_port *);
 #endif
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 #define NO_POLL_CHAR		0x00ff0000
@@ -581,6 +585,9 @@ struct uart_port {
 	struct gpio_desc	*rs485_term_gpio;	/* enable RS485 bus termination */
 	struct serial_iso7816   iso7816;
 	void			*private_data;		/* generic platform data pointer */
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 static inline int serial_port_in(struct uart_port *up, int offset)
@@ -660,6 +667,8 @@ struct uart_driver {
 	 */
 	struct uart_state	*state;
 	struct tty_driver	*tty_driver;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 void uart_write_wakeup(struct uart_port *port);
diff --git a/include/linux/serio.h b/include/linux/serio.h
index 6c27d41..25d638f5 100644
--- a/include/linux/serio.h
+++ b/include/linux/serio.h
@@ -13,6 +13,7 @@
 #include <linux/mutex.h>
 #include <linux/device.h>
 #include <linux/mod_devicetable.h>
+#include <linux/android_kabi.h>
 #include <uapi/linux/serio.h>
 
 extern struct bus_type serio_bus;
@@ -61,6 +62,8 @@ struct serio {
 	 * may get indigestion when exposed to concurrent access (i8042).
 	 */
 	struct mutex *ps2_cmd_mutex;
+
+	ANDROID_KABI_RESERVE(1);
 };
 #define to_serio_port(d)	container_of(d, struct serio, dev)
 
@@ -79,6 +82,8 @@ struct serio_driver {
 	void (*cleanup)(struct serio *);
 
 	struct device_driver driver;
+
+	ANDROID_KABI_RESERVE(1);
 };
 #define to_serio_driver(d)	container_of(d, struct serio_driver, driver)
 
diff --git a/include/linux/set_memory.h b/include/linux/set_memory.h
index 369769c..68c9116 100644
--- a/include/linux/set_memory.h
+++ b/include/linux/set_memory.h
@@ -56,6 +56,8 @@ static inline int clear_mce_nospec(unsigned long pfn)
 }
 #endif
 
+int set_direct_map_range_uncached(unsigned long addr, unsigned long numpages);
+
 #ifndef CONFIG_ARCH_HAS_MEM_ENCRYPT
 static inline int set_memory_encrypted(unsigned long addr, int numpages)
 {
diff --git a/include/linux/shmem_fs.h b/include/linux/shmem_fs.h
index d500ea9..e830494 100644
--- a/include/linux/shmem_fs.h
+++ b/include/linux/shmem_fs.h
@@ -9,6 +9,7 @@
 #include <linux/percpu_counter.h>
 #include <linux/xattr.h>
 #include <linux/fs_parser.h>
+#include <linux/android_vendor.h>
 
 /* inode in-kernel data */
 
@@ -27,6 +28,8 @@ struct shmem_inode_info {
 	struct timespec64	i_crtime;	/* file creation time */
 	unsigned int		fsflags;	/* flags for FS_IOC_[SG]ETFLAGS */
 	struct inode		vfs_inode;
+
+	ANDROID_VENDOR_DATA(1);
 };
 
 #define SHMEM_FL_USER_VISIBLE		FS_FL_USER_VISIBLE
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index cc5ed2c..ee0a043 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -44,6 +44,8 @@
 #endif
 #include <net/net_debug.h>
 #include <net/dropreason.h>
+#include <linux/android_kabi.h>
+#include <linux/android_vendor.h>
 
 /**
  * DOC: skb checksums
@@ -593,6 +595,8 @@ struct skb_shared_info {
 	 * remains valid until skb destructor */
 	void *		destructor_arg;
 
+	ANDROID_OEM_DATA_ARRAY(1, 3);
+
 	/* must be last field, see pskb_expand_head() */
 	skb_frag_t	frags[MAX_SKB_FRAGS];
 };
@@ -1036,6 +1040,9 @@ struct sk_buff {
 	u64			kcov_handle;
 #endif
 
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+
 	); /* end headers group */
 
 	/* These elements must be at the end, see alloc_skb() for details.  */
diff --git a/include/linux/slab.h b/include/linux/slab.h
index 45efc6c..8477d8e 100644
--- a/include/linux/slab.h
+++ b/include/linux/slab.h
@@ -637,7 +637,7 @@ static inline __alloc_size(1, 2) void *kcalloc(size_t n, size_t size, gfp_t flag
 }
 
 void *__kmalloc_node_track_caller(size_t size, gfp_t flags, int node,
-				  unsigned long caller) __alloc_size(1);
+				  unsigned long caller);
 #define kmalloc_node_track_caller(size, flags, node) \
 	__kmalloc_node_track_caller(size, flags, node, \
 				    _RET_IP_)
diff --git a/include/linux/qcom-geni-se.h b/include/linux/soc/qcom/geni-se.h
similarity index 90%
rename from include/linux/qcom-geni-se.h
rename to include/linux/soc/qcom/geni-se.h
index f567278..5ea5351 100644
--- a/include/linux/qcom-geni-se.h
+++ b/include/linux/soc/qcom/geni-se.h
@@ -242,12 +242,22 @@ struct geni_se {
 /* SE_HW_PARAM_0 fields */
 #define TX_FIFO_WIDTH_MSK		GENMASK(29, 24)
 #define TX_FIFO_WIDTH_SHFT		24
+/*
+ * For QUP HW Version >= 3.10 Tx fifo depth support is increased
+ * to 256bytes and corresponding bits are 16 to 23
+ */
+#define TX_FIFO_DEPTH_MSK_256_BYTES	GENMASK(23, 16)
 #define TX_FIFO_DEPTH_MSK		GENMASK(21, 16)
 #define TX_FIFO_DEPTH_SHFT		16
 
 /* SE_HW_PARAM_1 fields */
 #define RX_FIFO_WIDTH_MSK		GENMASK(29, 24)
 #define RX_FIFO_WIDTH_SHFT		24
+/*
+ * For QUP HW Version >= 3.10 Rx fifo depth support is increased
+ * to 256bytes and corresponding bits are 16 to 23
+ */
+#define RX_FIFO_DEPTH_MSK_256_BYTES	GENMASK(23, 16)
 #define RX_FIFO_DEPTH_MSK		GENMASK(21, 16)
 #define RX_FIFO_DEPTH_SHFT		16
 
@@ -388,7 +398,8 @@ static inline void geni_se_abort_s_cmd(struct geni_se *se)
 
 /**
  * geni_se_get_tx_fifo_depth() - Get the TX fifo depth of the serial engine
- * @se:	Pointer to the concerned serial engine.
+ * based on QUP HW version
+ * @se: Pointer to the concerned serial engine.
  *
  * This function is used to get the depth i.e. number of elements in the
  * TX fifo of the serial engine.
@@ -397,11 +408,20 @@ static inline void geni_se_abort_s_cmd(struct geni_se *se)
  */
 static inline u32 geni_se_get_tx_fifo_depth(struct geni_se *se)
 {
-	u32 val;
+	u32 val, hw_version, hw_major, hw_minor, tx_fifo_depth_mask;
+
+	hw_version = geni_se_get_qup_hw_version(se);
+	hw_major = GENI_SE_VERSION_MAJOR(hw_version);
+	hw_minor = GENI_SE_VERSION_MINOR(hw_version);
+
+	if ((hw_major == 3 && hw_minor >= 10) || hw_major > 3)
+		tx_fifo_depth_mask = TX_FIFO_DEPTH_MSK_256_BYTES;
+	else
+		tx_fifo_depth_mask = TX_FIFO_DEPTH_MSK;
 
 	val = readl_relaxed(se->base + SE_HW_PARAM_0);
 
-	return (val & TX_FIFO_DEPTH_MSK) >> TX_FIFO_DEPTH_SHFT;
+	return (val & tx_fifo_depth_mask) >> TX_FIFO_DEPTH_SHFT;
 }
 
 /**
@@ -424,7 +444,8 @@ static inline u32 geni_se_get_tx_fifo_width(struct geni_se *se)
 
 /**
  * geni_se_get_rx_fifo_depth() - Get the RX fifo depth of the serial engine
- * @se:	Pointer to the concerned serial engine.
+ * based on QUP HW version
+ * @se: Pointer to the concerned serial engine.
  *
  * This function is used to get the depth i.e. number of elements in the
  * RX fifo of the serial engine.
@@ -433,11 +454,20 @@ static inline u32 geni_se_get_tx_fifo_width(struct geni_se *se)
  */
 static inline u32 geni_se_get_rx_fifo_depth(struct geni_se *se)
 {
-	u32 val;
+	u32 val, hw_version, hw_major, hw_minor, rx_fifo_depth_mask;
+
+	hw_version = geni_se_get_qup_hw_version(se);
+	hw_major = GENI_SE_VERSION_MAJOR(hw_version);
+	hw_minor = GENI_SE_VERSION_MINOR(hw_version);
+
+	if ((hw_major == 3 && hw_minor >= 10) || hw_major > 3)
+		rx_fifo_depth_mask = RX_FIFO_DEPTH_MSK_256_BYTES;
+	else
+		rx_fifo_depth_mask = RX_FIFO_DEPTH_MSK;
 
 	val = readl_relaxed(se->base + SE_HW_PARAM_1);
 
-	return (val & RX_FIFO_DEPTH_MSK) >> RX_FIFO_DEPTH_SHFT;
+	return (val & rx_fifo_depth_mask) >> RX_FIFO_DEPTH_SHFT;
 }
 
 void geni_se_init(struct geni_se *se, u32 rx_wm, u32 rx_rfr);
diff --git a/include/linux/spi/spi.h b/include/linux/spi/spi.h
index fbf8c0d..d479c41 100644
--- a/include/linux/spi/spi.h
+++ b/include/linux/spi/spi.h
@@ -14,6 +14,7 @@
 #include <linux/completion.h>
 #include <linux/scatterlist.h>
 #include <linux/gpio/consumer.h>
+#include <linux/android_kabi.h>
 
 #include <uapi/linux/spi/spi.h>
 #include <linux/acpi.h>
@@ -209,6 +210,9 @@ struct spi_device {
 	/* The statistics */
 	struct spi_statistics __percpu	*pcpu_statistics;
 
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+
 	/*
 	 * likely need more hooks for more protocol options affecting how
 	 * the controller talks to each chip, like:
@@ -296,6 +300,8 @@ struct spi_driver {
 	void			(*remove)(struct spi_device *spi);
 	void			(*shutdown)(struct spi_device *spi);
 	struct device_driver	driver;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 static inline struct spi_driver *to_spi_driver(struct device_driver *drv)
@@ -696,6 +702,9 @@ struct spi_controller {
 	/* Flag for enabling opportunistic skipping of the queue in spi_sync */
 	bool			queue_empty;
 	bool			must_async;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 static inline void *spi_controller_get_devdata(struct spi_controller *ctlr)
@@ -989,6 +998,8 @@ struct spi_transfer {
 
 #define SPI_TRANS_FAIL_NO_START	BIT(0)
 	u16		error;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -1059,6 +1070,8 @@ struct spi_message {
 
 	/* spi_prepare_message() was called for this message */
 	bool			prepared;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 static inline void spi_message_init_no_memset(struct spi_message *m)
@@ -1472,6 +1485,8 @@ struct spi_board_info {
 	 */
 	u32		mode;
 
+	ANDROID_KABI_RESERVE(1);
+
 	/* ... may need additional spi_device chip config data here.
 	 * avoid stuff protocol drivers can set; but include stuff
 	 * needed to behave without being bound to a driver:
diff --git a/include/linux/spmi.h b/include/linux/spmi.h
index eac1956..0c0c842 100644
--- a/include/linux/spmi.h
+++ b/include/linux/spmi.h
@@ -7,6 +7,7 @@
 #include <linux/types.h>
 #include <linux/device.h>
 #include <linux/mod_devicetable.h>
+#include <linux/android_kabi.h>
 
 /* Maximum slave identifier */
 #define SPMI_MAX_SLAVE_ID		16
@@ -85,6 +86,7 @@ struct spmi_controller {
 			    u8 sid, u16 addr, u8 *buf, size_t len);
 	int	(*write_cmd)(struct spmi_controller *ctrl, u8 opcode,
 			     u8 sid, u16 addr, const u8 *buf, size_t len);
+	ANDROID_KABI_RESERVE(1);
 };
 
 static inline struct spmi_controller *to_spmi_controller(struct device *d)
@@ -139,6 +141,7 @@ struct spmi_driver {
 	int	(*probe)(struct spmi_device *sdev);
 	void	(*remove)(struct spmi_device *sdev);
 	void	(*shutdown)(struct spmi_device *sdev);
+	ANDROID_KABI_RESERVE(1);
 };
 
 static inline struct spmi_driver *to_spmi_driver(struct device_driver *d)
diff --git a/include/linux/suspend.h b/include/linux/suspend.h
index cfe19a0..8ed08c8 100644
--- a/include/linux/suspend.h
+++ b/include/linux/suspend.h
@@ -8,6 +8,7 @@
 #include <linux/pm.h>
 #include <linux/mm.h>
 #include <linux/freezer.h>
+#include <linux/android_kabi.h>
 #include <asm/errno.h>
 
 #ifdef CONFIG_VT
@@ -185,6 +186,8 @@ struct platform_suspend_ops {
 	bool (*suspend_again)(void);
 	void (*end)(void);
 	void (*recover)(void);
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct platform_s2idle_ops {
@@ -196,6 +199,8 @@ struct platform_s2idle_ops {
 	void (*restore_early)(void);
 	void (*restore)(void);
 	void (*end)(void);
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 #ifdef CONFIG_SUSPEND
@@ -427,6 +432,8 @@ struct platform_hibernation_ops {
 	int (*pre_restore)(void);
 	void (*restore_cleanup)(void);
 	void (*recover)(void);
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 #ifdef CONFIG_HIBERNATION
@@ -510,6 +517,7 @@ extern bool pm_get_wakeup_count(unsigned int *count, bool block);
 extern bool pm_save_wakeup_count(unsigned int count);
 extern void pm_wakep_autosleep_enabled(bool set);
 extern void pm_print_active_wakeup_sources(void);
+extern void pm_get_active_wakeup_sources(char *pending_sources, size_t max);
 
 extern unsigned int lock_system_sleep(void);
 extern void unlock_system_sleep(unsigned int);
diff --git a/include/linux/swap.h b/include/linux/swap.h
index a18cf4b..6d17e7b 100644
--- a/include/linux/swap.h
+++ b/include/linux/swap.h
@@ -34,6 +34,8 @@ struct pagevec;
 				 SWAP_FLAG_DISCARD_PAGES)
 #define SWAP_BATCH 64
 
+int kswapd (void *p);
+
 static inline int current_is_kswapd(void)
 {
 	return current->flags & PF_KSWAPD;
@@ -318,6 +320,7 @@ struct swap_info_struct {
 					 */
 	struct work_struct discard_work; /* discard worker */
 	struct swap_cluster_list discard_clusters; /* discard clusters list */
+	ANDROID_VENDOR_DATA(1);
 	struct plist_node avail_lists[]; /*
 					   * entries in swap_avail_heads, one
 					   * entry per node.
@@ -515,6 +518,7 @@ extern int init_swap_address_space(unsigned int type, unsigned long nr_pages);
 extern void exit_swap_address_space(unsigned int type);
 extern struct swap_info_struct *get_swap_device(swp_entry_t entry);
 sector_t swap_page_sector(struct page *page);
+extern sector_t alloc_swapdev_block(int swap);
 
 static inline void put_swap_device(struct swap_info_struct *si)
 {
diff --git a/include/linux/swap_slots.h b/include/linux/swap_slots.h
index 15adfb8..7c57bc9 100644
--- a/include/linux/swap_slots.h
+++ b/include/linux/swap_slots.h
@@ -19,6 +19,7 @@ struct swap_slots_cache {
 	spinlock_t	free_lock;  /* protects slots_ret, n_ret */
 	swp_entry_t	*slots_ret;
 	int		n_ret;
+	ANDROID_VENDOR_DATA(1);
 };
 
 void disable_swap_slots_cache_lock(void);
diff --git a/include/linux/task_io_accounting.h b/include/linux/task_io_accounting.h
index 6f6acce..bb26108 100644
--- a/include/linux/task_io_accounting.h
+++ b/include/linux/task_io_accounting.h
@@ -19,6 +19,8 @@ struct task_io_accounting {
 	u64 syscr;
 	/* # of write syscalls */
 	u64 syscw;
+	/* # of fsync syscalls */
+	u64 syscfs;
 #endif /* CONFIG_TASK_XACCT */
 
 #ifdef CONFIG_TASK_IO_ACCOUNTING
diff --git a/include/linux/task_io_accounting_ops.h b/include/linux/task_io_accounting_ops.h
index bb5498b..733ab62 100644
--- a/include/linux/task_io_accounting_ops.h
+++ b/include/linux/task_io_accounting_ops.h
@@ -97,6 +97,7 @@ static inline void task_chr_io_accounting_add(struct task_io_accounting *dst,
 	dst->wchar += src->wchar;
 	dst->syscr += src->syscr;
 	dst->syscw += src->syscw;
+	dst->syscfs += src->syscfs;
 }
 #else
 static inline void task_chr_io_accounting_add(struct task_io_accounting *dst,
diff --git a/include/linux/tcp.h b/include/linux/tcp.h
index 41b1da6..c093123 100644
--- a/include/linux/tcp.h
+++ b/include/linux/tcp.h
@@ -16,6 +16,7 @@
 
 #include <linux/skbuff.h>
 #include <linux/win_minmax.h>
+#include <linux/android_kabi.h>
 #include <net/sock.h>
 #include <net/inet_connection_sock.h>
 #include <net/inet_timewait_sock.h>
@@ -449,6 +450,8 @@ struct tcp_sock {
 	 */
 	struct request_sock __rcu *fastopen_rsk;
 	struct saved_syn *saved_syn;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 enum tsq_enum {
diff --git a/include/linux/thermal.h b/include/linux/thermal.h
index 5e09360..c0ccfb6 100644
--- a/include/linux/thermal.h
+++ b/include/linux/thermal.h
@@ -15,6 +15,7 @@
 #include <linux/device.h>
 #include <linux/sysfs.h>
 #include <linux/workqueue.h>
+#include <linux/android_kabi.h>
 #include <uapi/linux/thermal.h>
 
 /* invalid cooling state */
@@ -74,6 +75,8 @@ struct thermal_zone_device_ops {
 			  enum thermal_trend *);
 	void (*hot)(struct thermal_zone_device *);
 	void (*critical)(struct thermal_zone_device *);
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -95,6 +98,8 @@ struct thermal_cooling_device_ops {
 	int (*get_requested_power)(struct thermal_cooling_device *, u32 *);
 	int (*state2power)(struct thermal_cooling_device *, unsigned long, u32 *);
 	int (*power2state)(struct thermal_cooling_device *, u32, unsigned long *);
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct thermal_cooling_device {
@@ -110,6 +115,8 @@ struct thermal_cooling_device {
 	struct mutex lock; /* protect thermal_instances list */
 	struct list_head thermal_instances;
 	struct list_head node;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -185,6 +192,8 @@ struct thermal_zone_device {
 	struct list_head node;
 	struct delayed_work poll_queue;
 	enum thermal_notify_event notify_event;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -205,6 +214,8 @@ struct thermal_governor {
 	void (*unbind_from_tz)(struct thermal_zone_device *tz);
 	int (*throttle)(struct thermal_zone_device *tz, int trip);
 	struct list_head	governor_list;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /* Structure that holds binding parameters for a zone */
@@ -240,6 +251,8 @@ struct thermal_bind_params {
 	unsigned long *binding_limits;
 	int (*match) (struct thermal_zone_device *tz,
 			struct thermal_cooling_device *cdev);
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /* Structure to define Thermal Zone parameters */
@@ -293,6 +306,8 @@ struct thermal_zone_params {
 	 * 		Used by thermal zone drivers (default 0).
 	 */
 	int offset;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /* Function declarations */
diff --git a/include/linux/timekeeping.h b/include/linux/timekeeping.h
index fe1e467..01308f5 100644
--- a/include/linux/timekeeping.h
+++ b/include/linux/timekeeping.h
@@ -240,17 +240,23 @@ struct ktime_timestamps {
  *				 counter value
  * @cycles:	Clocksource counter value to produce the system times
  * @real:	Realtime system time
+ * @boot:	Boot time
  * @raw:	Monotonic raw system time
  * @clock_was_set_seq:	The sequence number of clock was set events
  * @cs_was_changed_seq:	The sequence number of clocksource change events
+ * @mono_shift:	The monotonic clock slope shift
+ * @mono_mult:	The monotonic clock slope mult
  */
 struct system_time_snapshot {
 	u64			cycles;
 	ktime_t			real;
+	ktime_t			boot;
 	ktime_t			raw;
 	enum clocksource_ids	cs_id;
 	unsigned int		clock_was_set_seq;
 	u8			cs_was_changed_seq;
+	u32			mono_shift;
+	u32			mono_mult;
 };
 
 /**
diff --git a/include/linux/timer.h b/include/linux/timer.h
index 648f001..c23b7d6 100644
--- a/include/linux/timer.h
+++ b/include/linux/timer.h
@@ -7,6 +7,7 @@
 #include <linux/stddef.h>
 #include <linux/debugobjects.h>
 #include <linux/stringify.h>
+#include <linux/android_kabi.h>
 
 struct timer_list {
 	/*
@@ -21,6 +22,9 @@ struct timer_list {
 #ifdef CONFIG_LOCKDEP
 	struct lockdep_map	lockdep_map;
 #endif
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 #ifdef CONFIG_LOCKDEP
diff --git a/include/linux/tty.h b/include/linux/tty.h
index 730c330..4110fc53 100644
--- a/include/linux/tty.h
+++ b/include/linux/tty.h
@@ -15,6 +15,7 @@
 #include <uapi/linux/tty.h>
 #include <linux/rwsem.h>
 #include <linux/llist.h>
+#include <linux/android_kabi.h>
 
 
 /*
@@ -248,6 +249,9 @@ struct tty_struct {
 	int write_cnt;
 	struct work_struct SAK_work;
 	struct tty_port *port;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 } __randomize_layout;
 
 /* Each of a tty's open files has private_data pointing to tty_file_private */
diff --git a/include/linux/tty_driver.h b/include/linux/tty_driver.h
index e000341..cf6a8ba 100644
--- a/include/linux/tty_driver.h
+++ b/include/linux/tty_driver.h
@@ -10,6 +10,7 @@
 #include <linux/uaccess.h>
 #include <linux/termios.h>
 #include <linux/seq_file.h>
+#include <linux/android_kabi.h>
 
 struct tty_struct;
 struct tty_driver;
@@ -392,6 +393,9 @@ struct tty_operations {
 	void (*poll_put_char)(struct tty_driver *driver, int line, char ch);
 #endif
 	int (*proc_show)(struct seq_file *m, void *driver);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 } __randomize_layout;
 
 /**
@@ -462,6 +466,9 @@ struct tty_driver {
 
 	const struct tty_operations *ops;
 	struct list_head tty_drivers;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 } __randomize_layout;
 
 extern struct list_head tty_drivers;
diff --git a/include/linux/tty_ldisc.h b/include/linux/tty_ldisc.h
index dcb61ec..476993f 100644
--- a/include/linux/tty_ldisc.h
+++ b/include/linux/tty_ldisc.h
@@ -10,6 +10,7 @@ struct tty_struct;
 #include <linux/list.h>
 #include <linux/lockdep.h>
 #include <linux/seq_file.h>
+#include <linux/android_kabi.h>
 
 /*
  * the semaphore definition
@@ -245,6 +246,9 @@ struct tty_ldisc_ops {
 				 const unsigned char *fp, unsigned int count);
 
 	struct  module *owner;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 struct tty_ldisc {
diff --git a/include/linux/tty_port.h b/include/linux/tty_port.h
index fa3c3bd..eb50294 100644
--- a/include/linux/tty_port.h
+++ b/include/linux/tty_port.h
@@ -7,6 +7,7 @@
 #include <linux/mutex.h>
 #include <linux/tty_buffer.h>
 #include <linux/wait.h>
+#include <linux/android_kabi.h>
 
 struct attribute_group;
 struct tty_driver;
@@ -36,6 +37,8 @@ struct tty_port_operations {
 	void (*shutdown)(struct tty_port *port);
 	int (*activate)(struct tty_port *port, struct tty_struct *tty);
 	void (*destruct)(struct tty_port *port);
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct tty_port_client_operations {
@@ -120,6 +123,8 @@ struct tty_port {
 	int			drain_delay;
 	struct kref		kref;
 	void			*client_data;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /* tty_port::iflags bits -- use atomic bit ops */
diff --git a/include/linux/uio_driver.h b/include/linux/uio_driver.h
index 47c5962..7f4e6c7 100644
--- a/include/linux/uio_driver.h
+++ b/include/linux/uio_driver.h
@@ -16,6 +16,7 @@
 #include <linux/device.h>
 #include <linux/fs.h>
 #include <linux/interrupt.h>
+#include <linux/android_kabi.h>
 
 struct module;
 struct uio_map;
@@ -77,6 +78,8 @@ struct uio_device {
 	struct mutex		info_lock;
 	struct kobject          *map_dir;
 	struct kobject          *portio_dir;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -109,6 +112,7 @@ struct uio_info {
 	int (*open)(struct uio_info *info, struct inode *inode);
 	int (*release)(struct uio_info *info, struct inode *inode);
 	int (*irqcontrol)(struct uio_info *info, s32 irq_on);
+	ANDROID_KABI_RESERVE(1);
 };
 
 extern int __must_check
diff --git a/include/linux/usb.h b/include/linux/usb.h
index 3ce7b05..b282e25 100644
--- a/include/linux/usb.h
+++ b/include/linux/usb.h
@@ -22,6 +22,7 @@
 #include <linux/sched.h>	/* for current && schedule_timeout */
 #include <linux/mutex.h>	/* for struct mutex */
 #include <linux/pm_runtime.h>	/* for runtime PM */
+#include <linux/android_kabi.h>
 
 struct usb_device;
 struct usb_driver;
@@ -257,6 +258,11 @@ struct usb_interface {
 	struct device dev;		/* interface specific device info */
 	struct device *usb_dev;
 	struct work_struct reset_ws;	/* for resets in atomic context */
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 #define	to_usb_interface(d) container_of(d, struct usb_interface, dev)
 
@@ -407,6 +413,11 @@ struct usb_host_bos {
 	struct usb_ssp_cap_descriptor	*ssp_cap;
 	struct usb_ss_container_id_descriptor	*ss_id;
 	struct usb_ptm_cap_descriptor	*ptm_cap;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 int __usb_get_extra_descriptor(char *buffer, unsigned size,
@@ -470,6 +481,11 @@ struct usb_bus {
 	struct mon_bus *mon_bus;	/* non-null when associated */
 	int monitored;			/* non-zero when monitored */
 #endif
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 struct usb_dev_state;
@@ -713,6 +729,11 @@ struct usb_device {
 
 	u16 hub_delay;
 	unsigned use_generic_driver:1;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 #define	to_usb_device(d) container_of(d, struct usb_device, dev)
 
@@ -1217,6 +1238,11 @@ struct usb_driver {
 	unsigned int supports_autosuspend:1;
 	unsigned int disable_hub_initiated_lpm:1;
 	unsigned int soft_unbind:1;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 #define	to_usb_driver(d) container_of(d, struct usb_driver, drvwrap.driver)
 
@@ -1600,6 +1626,12 @@ struct urb {
 	int error_count;		/* (return) number of ISO errors */
 	void *context;			/* (in) context for completion */
 	usb_complete_t complete;	/* (in) completion routine */
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
+
 	struct usb_iso_packet_descriptor iso_frame_desc[];
 					/* (in) ISO ONLY */
 };
diff --git a/include/linux/usb/composite.h b/include/linux/usb/composite.h
index 43ac3fa..814f6579 100644
--- a/include/linux/usb/composite.h
+++ b/include/linux/usb/composite.h
@@ -578,6 +578,7 @@ struct usb_function_instance {
 	struct config_group group;
 	struct list_head cfs_list;
 	struct usb_function_driver *fd;
+	struct usb_function *f;
 	int (*set_inst_name)(struct usb_function_instance *inst,
 			      const char *name);
 	void (*free_func_inst)(struct usb_function_instance *inst);
diff --git a/include/linux/usb/f_accessory.h b/include/linux/usb/f_accessory.h
new file mode 100644
index 0000000..ebe3c4d
--- /dev/null
+++ b/include/linux/usb/f_accessory.h
@@ -0,0 +1,23 @@
+/*
+ * Gadget Function Driver for Android USB accessories
+ *
+ * Copyright (C) 2011 Google, Inc.
+ * Author: Mike Lockwood <lockwood@android.com>
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#ifndef __LINUX_USB_F_ACCESSORY_H
+#define __LINUX_USB_F_ACCESSORY_H
+
+#include <uapi/linux/usb/f_accessory.h>
+
+#endif /* __LINUX_USB_F_ACCESSORY_H */
diff --git a/include/linux/usb/gadget.h b/include/linux/usb/gadget.h
index dc3092c..a10c1a9 100644
--- a/include/linux/usb/gadget.h
+++ b/include/linux/usb/gadget.h
@@ -120,6 +120,8 @@ struct usb_request {
 
 	int			status;
 	unsigned		actual;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /*-------------------------------------------------------------------------*/
@@ -150,6 +152,8 @@ struct usb_ep_ops {
 
 	int (*fifo_status) (struct usb_ep *ep);
 	void (*fifo_flush) (struct usb_ep *ep);
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -238,6 +242,8 @@ struct usb_ep {
 	u8			address;
 	const struct usb_endpoint_descriptor	*desc;
 	const struct usb_ss_ep_comp_descriptor	*comp_desc;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /*-------------------------------------------------------------------------*/
@@ -328,6 +334,11 @@ struct usb_gadget_ops {
 			struct usb_endpoint_descriptor *,
 			struct usb_ss_ep_comp_descriptor *);
 	int	(*check_config)(struct usb_gadget *gadget);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 /**
diff --git a/include/linux/usb/hcd.h b/include/linux/usb/hcd.h
index 5a89928..3269c0e 100644
--- a/include/linux/usb/hcd.h
+++ b/include/linux/usb/hcd.h
@@ -11,6 +11,7 @@
 #include <linux/rwsem.h>
 #include <linux/interrupt.h>
 #include <linux/idr.h>
+#include <linux/android_kabi.h>
 
 #define MAX_TOPO_LEVEL		6
 
@@ -214,6 +215,11 @@ struct usb_hcd {
 	 * (ohci 32, uhci 1024, ehci 256/512/1024).
 	 */
 
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
+
 	/* The HC driver's private data is stored at the end of
 	 * this structure.
 	 */
@@ -402,6 +408,11 @@ struct hc_driver {
 #define EHSET_TEST_SINGLE_STEP_SET_FEATURE 0x06
 	int	(*submit_single_step_set_feature)(struct usb_hcd *,
 			struct urb *, int);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 static inline int hcd_giveback_urb_in_bh(struct usb_hcd *hcd)
@@ -565,6 +576,11 @@ struct usb_tt {
 	spinlock_t		lock;
 	struct list_head	clear_list;	/* of usb_tt_clear */
 	struct work_struct	clear_work;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 struct usb_tt_clear {
diff --git a/include/linux/usb/otg.h b/include/linux/usb/otg.h
index 6475f88..9a1b417 100644
--- a/include/linux/usb/otg.h
+++ b/include/linux/usb/otg.h
@@ -12,6 +12,7 @@
 
 #include <linux/phy/phy.h>
 #include <linux/usb/phy.h>
+#include <linux/android_kabi.h>
 
 struct usb_otg {
 	u8			default_a;
@@ -40,6 +41,7 @@ struct usb_otg {
 	/* start or continue HNP role switch */
 	int	(*start_hnp)(struct usb_otg *otg);
 
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
diff --git a/include/linux/usb/phy.h b/include/linux/usb/phy.h
index e4de6bc..e98e1ed 100644
--- a/include/linux/usb/phy.h
+++ b/include/linux/usb/phy.h
@@ -13,6 +13,7 @@
 #include <linux/extcon.h>
 #include <linux/notifier.h>
 #include <linux/usb.h>
+#include <linux/android_kabi.h>
 #include <uapi/linux/usb/charger.h>
 
 enum usb_phy_interface {
@@ -155,6 +156,18 @@ struct usb_phy {
 	 * manually detect the charger type.
 	 */
 	enum usb_charger_type (*charger_detect)(struct usb_phy *x);
+
+	/*
+	 * Reserved slot 0 here is seserved for a notify_port_status callback addition that narrowly
+	 * missed the ABI freeze deadline due to upstream review disussions.  See
+	 * https://lore.kernel.org/linux-usb/20230607062500.24669-1-stanley_chang@realtek.com/
+	 * for details.  All other slots are for "normal" future ABI breaks in LTS updates
+	 */
+	ANDROID_KABI_RESERVE(0);
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 /* for board-specific init logic */
diff --git a/include/linux/usb/tcpci.h b/include/linux/usb/tcpci.h
index 1765745..85e95a3 100644
--- a/include/linux/usb/tcpci.h
+++ b/include/linux/usb/tcpci.h
@@ -188,6 +188,12 @@ struct tcpci;
  *		Optional; The USB Communications Capable bit indicates if port
  *		partner is capable of communication over the USB data lines
  *		(e.g. D+/- or SS Tx/Rx). Called to notify the status of the bit.
+ * @check_contaminant:
+ *		Optional; The callback is invoked when chiplevel drivers indicated
+ *		that the USB port needs to be checked for contaminant presence.
+ *		Chip level drivers are expected to check for contaminant and call
+ *		tcpm_clean_port when the port is clean to put the port back into
+ *		toggling state.
  */
 struct tcpci_data {
 	struct regmap *regmap;
@@ -204,6 +210,7 @@ struct tcpci_data {
 	void (*frs_sourcing_vbus)(struct tcpci *tcpci, struct tcpci_data *data);
 	void (*set_partner_usb_comm_capable)(struct tcpci *tcpci, struct tcpci_data *data,
 					     bool capable);
+	void (*check_contaminant)(struct tcpci *tcpci, struct tcpci_data *data);
 };
 
 struct tcpci *tcpci_register_port(struct device *dev, struct tcpci_data *data);
diff --git a/include/linux/usb/tcpm.h b/include/linux/usb/tcpm.h
index bffc8d3..ab7ca87 100644
--- a/include/linux/usb/tcpm.h
+++ b/include/linux/usb/tcpm.h
@@ -114,6 +114,11 @@ enum tcpm_transmit_type {
  *              Optional; The USB Communications Capable bit indicates if port
  *              partner is capable of communication over the USB data lines
  *              (e.g. D+/- or SS Tx/Rx). Called to notify the status of the bit.
+ * @check_contaminant:
+ *		Optional; The callback is called when CC pins report open status
+ *		at the end of the deboumce period or when the port is still
+ *		toggling. Chip level drivers are expected to check for contaminant
+ *		and call tcpm_clean_port when the port is clean.
  */
 struct tcpc_dev {
 	struct fwnode_handle *fwnode;
@@ -148,6 +153,7 @@ struct tcpc_dev {
 						 bool pps_active, u32 requested_vbus_voltage);
 	bool (*is_vbus_vsafe0v)(struct tcpc_dev *dev);
 	void (*set_partner_usb_comm_capable)(struct tcpc_dev *dev, bool enable);
+	void (*check_contaminant)(struct tcpc_dev *dev);
 };
 
 struct tcpm_port;
@@ -165,5 +171,7 @@ void tcpm_pd_transmit_complete(struct tcpm_port *port,
 			       enum tcpm_transmit_status status);
 void tcpm_pd_hard_reset(struct tcpm_port *port);
 void tcpm_tcpc_reset(struct tcpm_port *port);
+void tcpm_port_clean(struct tcpm_port *port);
+bool tcpm_port_is_toggling(struct tcpm_port *port);
 
 #endif /* __LINUX_USB_TCPM_H */
diff --git a/include/linux/usb/typec.h b/include/linux/usb/typec.h
index 7751bed..8950cc9 100644
--- a/include/linux/usb/typec.h
+++ b/include/linux/usb/typec.h
@@ -4,6 +4,7 @@
 #define __LINUX_USB_TYPEC_H
 
 #include <linux/types.h>
+#include <linux/android_kabi.h>
 
 /* USB Type-C Specification releases */
 #define USB_TYPEC_REV_1_0	0x100 /* 1.0 */
@@ -237,6 +238,9 @@ struct typec_operations {
 			     enum typec_port_type type);
 	struct usb_power_delivery **(*pd_get)(struct typec_port *port);
 	int (*pd_set)(struct typec_port *port, struct usb_power_delivery *pd);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 enum usb_pd_svdm_ver {
@@ -277,6 +281,9 @@ struct typec_capability {
 	struct usb_power_delivery *pd;
 
 	const struct typec_operations	*ops;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 /* Specific to try_role(). Indicates the user want's to clear the preference. */
diff --git a/include/linux/usb/typec_altmode.h b/include/linux/usb/typec_altmode.h
index 350d490..43f8424 100644
--- a/include/linux/usb/typec_altmode.h
+++ b/include/linux/usb/typec_altmode.h
@@ -30,6 +30,7 @@ struct typec_altmode {
 
 	char				*desc;
 	const struct typec_altmode_ops	*ops;
+	ANDROID_KABI_RESERVE(1);
 };
 
 #define to_typec_altmode(d) container_of(d, struct typec_altmode, dev)
@@ -63,6 +64,7 @@ struct typec_altmode_ops {
 	int (*notify)(struct typec_altmode *altmode, unsigned long conf,
 		      void *data);
 	int (*activate)(struct typec_altmode *altmode, int activate);
+	ANDROID_KABI_RESERVE(1);
 };
 
 int typec_altmode_enter(struct typec_altmode *altmode, u32 *vdo);
diff --git a/include/linux/usb/usbnet.h b/include/linux/usb/usbnet.h
index 9f08a58..e0a2cdd 100644
--- a/include/linux/usb/usbnet.h
+++ b/include/linux/usb/usbnet.h
@@ -14,6 +14,7 @@
 #include <linux/skbuff.h>
 #include <linux/types.h>
 #include <linux/usb.h>
+#include <linux/android_kabi.h>
 
 /* interface from usbnet core to each USB networking link we handle */
 struct usbnet {
@@ -76,6 +77,11 @@ struct usbnet {
 #		define EVENT_LINK_CHANGE	11
 #		define EVENT_SET_RX_MODE	12
 #		define EVENT_NO_IP_ALIGN	13
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 static inline struct usb_driver *driver_of(struct usb_interface *intf)
@@ -165,6 +171,9 @@ struct driver_info {
 	int		out;		/* tx endpoint */
 
 	unsigned long	data;		/* Misc driver specific data */
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 /* Minidrivers are just drivers using the "usbnet" core as a powerful
diff --git a/include/linux/user_namespace.h b/include/linux/user_namespace.h
index 45f09be..2185558 100644
--- a/include/linux/user_namespace.h
+++ b/include/linux/user_namespace.h
@@ -10,6 +10,7 @@
 #include <linux/rwsem.h>
 #include <linux/sysctl.h>
 #include <linux/err.h>
+#include <linux/android_kabi.h>
 
 #define UID_GID_MAP_MAX_BASE_EXTENTS 5
 #define UID_GID_MAP_MAX_EXTENTS 340
@@ -102,6 +103,9 @@ struct user_namespace {
 	struct ucounts		*ucounts;
 	long ucount_max[UCOUNT_COUNTS];
 	long rlimit_max[UCOUNT_RLIMIT_COUNTS];
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 } __randomize_layout;
 
 struct ucounts {
diff --git a/include/linux/userfaultfd_k.h b/include/linux/userfaultfd_k.h
index 9df0b9a..8c32d18 100644
--- a/include/linux/userfaultfd_k.h
+++ b/include/linux/userfaultfd_k.h
@@ -175,8 +175,8 @@ extern bool userfaultfd_remove(struct vm_area_struct *vma,
 			       unsigned long start,
 			       unsigned long end);
 
-extern int userfaultfd_unmap_prep(struct mm_struct *mm, unsigned long start,
-				  unsigned long end, struct list_head *uf);
+extern int userfaultfd_unmap_prep(struct vm_area_struct *vma,
+		unsigned long start, unsigned long end, struct list_head *uf);
 extern void userfaultfd_unmap_complete(struct mm_struct *mm,
 				       struct list_head *uf);
 
@@ -257,7 +257,7 @@ static inline bool userfaultfd_remove(struct vm_area_struct *vma,
 	return true;
 }
 
-static inline int userfaultfd_unmap_prep(struct mm_struct *mm,
+static inline int userfaultfd_unmap_prep(struct vm_area_struct *vma,
 					 unsigned long start, unsigned long end,
 					 struct list_head *uf)
 {
diff --git a/include/linux/virtio.h b/include/linux/virtio.h
index dcab9c7..34e93634 100644
--- a/include/linux/virtio.h
+++ b/include/linux/virtio.h
@@ -96,6 +96,8 @@ dma_addr_t virtqueue_get_used_addr(struct virtqueue *vq);
 int virtqueue_resize(struct virtqueue *vq, u32 num,
 		     void (*recycle)(struct virtqueue *vq, void *buf));
 
+void virtqueue_disable_dma_api_for_buffers(struct virtqueue *vq);
+
 /**
  * struct virtio_device - representation of a device using virtio
  * @index: unique position on the virtio bus
diff --git a/include/linux/virtio_vsock.h b/include/linux/virtio_vsock.h
index 35d7eed..de584a7 100644
--- a/include/linux/virtio_vsock.h
+++ b/include/linux/virtio_vsock.h
@@ -9,7 +9,8 @@
 
 #define VIRTIO_VSOCK_DEFAULT_RX_BUF_SIZE	(1024 * 4)
 #define VIRTIO_VSOCK_MAX_BUF_SIZE		0xFFFFFFFFUL
-#define VIRTIO_VSOCK_MAX_PKT_BUF_SIZE		(1024 * 64)
+#define VIRTIO_VSOCK_MAX_PKT_BUF_SIZE		virtio_transport_max_vsock_pkt_buf_size
+extern uint virtio_transport_max_vsock_pkt_buf_size;
 
 enum {
 	VSOCK_VQ_RX     = 0, /* for host to guest data */
diff --git a/include/linux/vm_event_item.h b/include/linux/vm_event_item.h
index 3518dba..2394461 100644
--- a/include/linux/vm_event_item.h
+++ b/include/linux/vm_event_item.h
@@ -147,6 +147,12 @@ enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT,
 		DIRECT_MAP_LEVEL2_SPLIT,
 		DIRECT_MAP_LEVEL3_SPLIT,
 #endif
+#ifdef CONFIG_PER_VMA_LOCK_STATS
+		VMA_LOCK_SUCCESS,
+		VMA_LOCK_ABORT,
+		VMA_LOCK_RETRY,
+		VMA_LOCK_MISS,
+#endif
 		NR_VM_EVENT_ITEMS
 };
 
diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h
index 19cf5b6..fed855b 100644
--- a/include/linux/vmstat.h
+++ b/include/linux/vmstat.h
@@ -125,6 +125,12 @@ static inline void vm_events_fold_cpu(int cpu)
 #define count_vm_tlb_events(x, y) do { (void)(y); } while (0)
 #endif
 
+#ifdef CONFIG_PER_VMA_LOCK_STATS
+#define count_vm_vma_lock_event(x) count_vm_event(x)
+#else
+#define count_vm_vma_lock_event(x) do {} while (0)
+#endif
+
 #define __count_zid_vm_events(item, zid, delta) \
 	__count_vm_events(item##_NORMAL - ZONE_NORMAL + zid, delta)
 
diff --git a/include/linux/wait.h b/include/linux/wait.h
index a0307b5..40dbc01 100644
--- a/include/linux/wait.h
+++ b/include/linux/wait.h
@@ -229,6 +229,7 @@ void __wake_up_pollfree(struct wait_queue_head *wq_head);
 #define wake_up_interruptible_nr(x, nr)	__wake_up(x, TASK_INTERRUPTIBLE, nr, NULL)
 #define wake_up_interruptible_all(x)	__wake_up(x, TASK_INTERRUPTIBLE, 0, NULL)
 #define wake_up_interruptible_sync(x)	__wake_up_sync((x), TASK_INTERRUPTIBLE)
+#define wake_up_sync(x)			__wake_up_sync((x), TASK_NORMAL)
 
 /*
  * Wakeup macros to be used to report events to the targets.
diff --git a/include/linux/wakeup_reason.h b/include/linux/wakeup_reason.h
new file mode 100644
index 0000000..54f5caa
--- /dev/null
+++ b/include/linux/wakeup_reason.h
@@ -0,0 +1,37 @@
+/*
+ * include/linux/wakeup_reason.h
+ *
+ * Logs the reason which caused the kernel to resume
+ * from the suspend mode.
+ *
+ * Copyright (C) 2014 Google, Inc.
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#ifndef _LINUX_WAKEUP_REASON_H
+#define _LINUX_WAKEUP_REASON_H
+
+#define MAX_SUSPEND_ABORT_LEN 256
+
+#ifdef CONFIG_SUSPEND
+void log_irq_wakeup_reason(int irq);
+void log_threaded_irq_wakeup_reason(int irq, int parent_irq);
+void log_suspend_abort_reason(const char *fmt, ...);
+void log_abnormal_wakeup_reason(const char *fmt, ...);
+void clear_wakeup_reasons(void);
+#else
+static inline void log_irq_wakeup_reason(int irq) { }
+static inline void log_threaded_irq_wakeup_reason(int irq, int parent_irq) { }
+static inline void log_suspend_abort_reason(const char *fmt, ...) { }
+static inline void log_abnormal_wakeup_reason(const char *fmt, ...) { }
+static inline void clear_wakeup_reasons(void) { }
+#endif
+
+#endif /* _LINUX_WAKEUP_REASON_H */
diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h
index a0143dd..449fabe 100644
--- a/include/linux/workqueue.h
+++ b/include/linux/workqueue.h
@@ -14,6 +14,7 @@
 #include <linux/atomic.h>
 #include <linux/cpumask.h>
 #include <linux/rcupdate.h>
+#include <linux/android_kabi.h>
 
 struct workqueue_struct;
 
@@ -101,6 +102,8 @@ struct work_struct {
 #ifdef CONFIG_LOCKDEP
 	struct lockdep_map lockdep_map;
 #endif
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 #define WORK_DATA_INIT()	ATOMIC_LONG_INIT((unsigned long)WORK_STRUCT_NO_POOL)
@@ -114,6 +117,9 @@ struct delayed_work {
 	/* target workqueue and CPU ->timer uses to queue ->work */
 	struct workqueue_struct *wq;
 	int cpu;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 struct rcu_work {
diff --git a/include/media/v4l2-ctrls.h b/include/media/v4l2-ctrls.h
index e59d9a2..65080d6 100644
--- a/include/media/v4l2-ctrls.h
+++ b/include/media/v4l2-ctrls.h
@@ -11,6 +11,7 @@
 #include <linux/list.h>
 #include <linux/mutex.h>
 #include <linux/videodev2.h>
+#include <linux/android_kabi.h>
 #include <media/media-request.h>
 
 /* forward references */
@@ -83,6 +84,9 @@ union v4l2_ctrl_ptr {
 	struct v4l2_area *p_area;
 	void *p;
 	const void *p_const;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 /**
@@ -115,6 +119,8 @@ struct v4l2_ctrl_ops {
 	int (*g_volatile_ctrl)(struct v4l2_ctrl *ctrl);
 	int (*try_ctrl)(struct v4l2_ctrl *ctrl);
 	int (*s_ctrl)(struct v4l2_ctrl *ctrl);
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -134,6 +140,8 @@ struct v4l2_ctrl_type_ops {
 		     union v4l2_ctrl_ptr ptr);
 	void (*log)(const struct v4l2_ctrl *ctrl);
 	int (*validate)(const struct v4l2_ctrl *ctrl, union v4l2_ctrl_ptr ptr);
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -298,6 +306,8 @@ struct v4l2_ctrl {
 	union v4l2_ctrl_ptr p_def;
 	union v4l2_ctrl_ptr p_new;
 	union v4l2_ctrl_ptr p_cur;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -350,6 +360,8 @@ struct v4l2_ctrl_ref {
 	u32 p_req_array_alloc_elems;
 	u32 p_req_elems;
 	union v4l2_ctrl_ptr p_req;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -400,6 +412,8 @@ struct v4l2_ctrl_handler {
 	struct list_head requests;
 	struct list_head requests_queued;
 	struct media_request_object req_obj;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -451,6 +465,8 @@ struct v4l2_ctrl_config {
 	const char * const *qmenu;
 	const s64 *qmenu_int;
 	unsigned int is_private:1;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
diff --git a/include/media/v4l2-dev.h b/include/media/v4l2-dev.h
index e0a1350..f7eff13 100644
--- a/include/media/v4l2-dev.h
+++ b/include/media/v4l2-dev.h
@@ -16,6 +16,7 @@
 #include <linux/cdev.h>
 #include <linux/mutex.h>
 #include <linux/videodev2.h>
+#include <linux/android_kabi.h>
 
 #include <media/media-entity.h>
 
@@ -211,6 +212,8 @@ struct v4l2_file_operations {
 	int (*mmap) (struct file *, struct vm_area_struct *);
 	int (*open) (struct file *);
 	int (*release) (struct file *);
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /*
@@ -306,6 +309,9 @@ struct video_device {
 	DECLARE_BITMAP(valid_ioctls, BASE_VIDIOC_PRIVATE);
 
 	struct mutex *lock;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 /**
diff --git a/include/media/videobuf2-core.h b/include/media/videobuf2-core.h
index 3253bd2..b64bb64 100644
--- a/include/media/videobuf2-core.h
+++ b/include/media/videobuf2-core.h
@@ -20,7 +20,7 @@
 #include <media/media-request.h>
 #include <media/frame_vector.h>
 
-#define VB2_MAX_FRAME	(32)
+#define VB2_MAX_FRAME	(64)
 #define VB2_MAX_PLANES	(8)
 
 /**
diff --git a/include/media/videobuf2-v4l2.h b/include/media/videobuf2-v4l2.h
index 5a84588..5f8b012 100644
--- a/include/media/videobuf2-v4l2.h
+++ b/include/media/videobuf2-v4l2.h
@@ -13,6 +13,7 @@
 #define _MEDIA_VIDEOBUF2_V4L2_H
 
 #include <linux/videodev2.h>
+#include <linux/android_kabi.h>
 #include <media/videobuf2-core.h>
 
 #if VB2_MAX_FRAME != VIDEO_MAX_FRAME
@@ -51,6 +52,8 @@ struct vb2_v4l2_buffer {
 	__s32			request_fd;
 	bool			is_held;
 	struct vb2_plane	planes[VB2_MAX_PLANES];
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /* VB2 V4L2 flags as set in vb2_queue.subsystem_flags */
diff --git a/include/net/TEST_MAPPING b/include/net/TEST_MAPPING
new file mode 100644
index 0000000..1eb8d43
--- /dev/null
+++ b/include/net/TEST_MAPPING
@@ -0,0 +1,12 @@
+{
+  "presubmit": [
+    {
+      "name": "CtsNetTestCases",
+      "options": [
+        {
+          "exclude-annotation": "com.android.testutils.SkipPresubmit"
+        }
+      ]
+    }
+  ]
+}
diff --git a/include/net/addrconf.h b/include/net/addrconf.h
index c04f359..7ae7175 100644
--- a/include/net/addrconf.h
+++ b/include/net/addrconf.h
@@ -271,6 +271,18 @@ static inline bool ipv6_is_mld(struct sk_buff *skb, int nexthdr, int offset)
 void addrconf_prefix_rcv(struct net_device *dev,
 			 u8 *opt, int len, bool sllao);
 
+/* Determines into what table to put autoconf PIO/RIO/default routes
+ * learned on this device.
+ *
+ * - If 0, use the same table for every device. This puts routes into
+ *   one of RT_TABLE_{PREFIX,INFO,DFLT} depending on the type of route
+ *   (but note that these three are currently all equal to
+ *   RT6_TABLE_MAIN).
+ * - If > 0, use the specified table.
+ * - If < 0, put routes into table dev->ifindex + (-rt_table).
+ */
+u32 addrconf_rt_table(const struct net_device *dev, u32 default_table);
+
 /*
  *	anycast prototypes (anycast.c)
  */
diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h
index 84c5ce5..755b1a8 100644
--- a/include/net/bluetooth/hci_core.h
+++ b/include/net/bluetooth/hci_core.h
@@ -28,6 +28,7 @@
 #include <linux/idr.h>
 #include <linux/leds.h>
 #include <linux/rculist.h>
+#include <linux/android_kabi.h>
 
 #include <net/bluetooth/hci.h>
 #include <net/bluetooth/hci_sync.h>
@@ -666,6 +667,11 @@ struct hci_dev {
 	int (*get_codec_config_data)(struct hci_dev *hdev, __u8 type,
 				     struct bt_codec *codec, __u8 *vnd_len,
 				     __u8 **vnd_data);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 #define HCI_PHY_HANDLE(handle)	(handle & 0xff)
@@ -772,6 +778,11 @@ struct hci_conn {
 	void (*disconn_cfm_cb)	(struct hci_conn *conn, u8 reason);
 
 	void (*cleanup)(struct hci_conn *conn);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 struct hci_chan {
@@ -782,6 +793,8 @@ struct hci_chan {
 	unsigned int	sent;
 	__u8		state;
 	bool		amp;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct hci_conn_params {
@@ -809,6 +822,8 @@ struct hci_conn_params {
 	bool explicit_connect;
 	hci_conn_flags_t flags;
 	u8  privacy_mode;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 extern struct list_head hci_dev_list;
@@ -1767,6 +1782,8 @@ struct hci_cb {
 								__u8 encrypt);
 	void (*key_change_cfm)	(struct hci_conn *conn, __u8 status);
 	void (*role_switch_cfm)	(struct hci_conn *conn, __u8 status, __u8 role);
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 static inline void hci_connect_cfm(struct hci_conn *conn, __u8 status)
@@ -1985,6 +2002,8 @@ struct hci_mgmt_chan {
 	size_t handler_count;
 	const struct hci_mgmt_handler *handlers;
 	void (*hdev_init) (struct sock *sk, struct hci_dev *hdev);
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 int hci_mgmt_chan_register(struct hci_mgmt_chan *c);
diff --git a/include/net/bluetooth/l2cap.h b/include/net/bluetooth/l2cap.h
index 2f766e3..2145350 100644
--- a/include/net/bluetooth/l2cap.h
+++ b/include/net/bluetooth/l2cap.h
@@ -29,6 +29,7 @@
 
 #include <asm/unaligned.h>
 #include <linux/atomic.h>
+#include <linux/android_kabi.h>
 
 /* L2CAP defaults */
 #define L2CAP_DEFAULT_MTU		672
@@ -645,6 +646,9 @@ struct l2cap_chan {
 	void			*data;
 	const struct l2cap_ops	*ops;
 	struct mutex		lock;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 struct l2cap_ops {
@@ -669,6 +673,9 @@ struct l2cap_ops {
 					       unsigned long len, int nb);
 	int			(*filter) (struct l2cap_chan * chan,
 					   struct sk_buff *skb);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 struct l2cap_conn {
@@ -704,6 +711,9 @@ struct l2cap_conn {
 	struct mutex		chan_lock;
 	struct kref		ref;
 	struct list_head	users;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 struct l2cap_user {
diff --git a/include/net/bluetooth/rfcomm.h b/include/net/bluetooth/rfcomm.h
index 99d2687..d8f4e83 100644
--- a/include/net/bluetooth/rfcomm.h
+++ b/include/net/bluetooth/rfcomm.h
@@ -22,6 +22,7 @@
 */
 
 #include <linux/refcount.h>
+#include <linux/android_kabi.h>
 
 #ifndef __RFCOMM_H
 #define __RFCOMM_H
@@ -164,6 +165,8 @@ struct rfcomm_session {
 	uint   mtu;
 
 	struct list_head dlcs;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct rfcomm_dlc {
@@ -197,6 +200,9 @@ struct rfcomm_dlc {
 	void (*data_ready)(struct rfcomm_dlc *d, struct sk_buff *skb);
 	void (*state_change)(struct rfcomm_dlc *d, int err);
 	void (*modem_status)(struct rfcomm_dlc *d, u8 v24_sig);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 /* DLC and session flags */
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index e09ff87..006bc4e 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -23,6 +23,7 @@
 #include <linux/ieee80211.h>
 #include <linux/net.h>
 #include <linux/rfkill.h>
+#include <linux/android_kabi.h>
 #include <net/regulatory.h>
 
 /**
@@ -1140,6 +1141,8 @@ struct cfg80211_crypto_settings {
 	const u8 *sae_pwd;
 	u8 sae_pwd_len;
 	enum nl80211_sae_pwe_mechanism sae_pwe;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -1226,6 +1229,8 @@ struct cfg80211_beacon_data {
 	size_t civicloc_len;
 	struct cfg80211_he_bss_color he_bss_color;
 	bool he_bss_color_valid;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct mac_address {
@@ -1322,6 +1327,9 @@ struct cfg80211_unsol_bcast_probe_resp {
  * @fils_discovery: FILS discovery transmission parameters
  * @unsol_bcast_probe_resp: Unsolicited broadcast probe response parameters
  * @mbssid_config: AP settings for multiple bssid
+ * @punct_bitmap: Preamble puncturing bitmap. Each bit represents
+ *	a 20 MHz channel, lowest bit corresponding to the lowest channel.
+ *	Bit set to 1 indicates that the channel is punctured.
  */
 struct cfg80211_ap_settings {
 	struct cfg80211_chan_def chandef;
@@ -1356,6 +1364,9 @@ struct cfg80211_ap_settings {
 	struct cfg80211_fils_discovery fils_discovery;
 	struct cfg80211_unsol_bcast_probe_resp unsol_bcast_probe_resp;
 	struct cfg80211_mbssid_config mbssid_config;
+	u16 punct_bitmap;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -1373,6 +1384,9 @@ struct cfg80211_ap_settings {
  * @radar_required: whether radar detection is required on the new channel
  * @block_tx: whether transmissions should be blocked while changing
  * @count: number of beacons until switch
+ * @punct_bitmap: Preamble puncturing bitmap. Each bit represents
+ *	a 20 MHz channel, lowest bit corresponding to the lowest channel.
+ *	Bit set to 1 indicates that the channel is punctured.
  */
 struct cfg80211_csa_settings {
 	struct cfg80211_chan_def chandef;
@@ -1385,6 +1399,9 @@ struct cfg80211_csa_settings {
 	bool radar_required;
 	bool block_tx;
 	u8 count;
+	u16 punct_bitmap;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -1508,6 +1525,8 @@ struct link_station_parameters {
 	const struct ieee80211_he_6ghz_capa *he_6ghz_capa;
 	const struct ieee80211_eht_cap_elem *eht_capa;
 	u8 eht_capa_len;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -1882,6 +1901,24 @@ struct cfg80211_tid_stats {
  *	received packet with an FCS error matches the peer MAC address.
  * @airtime_link_metric: mesh airtime link metric.
  * @connected_to_as: true if mesh STA has a path to authentication server
+ * @mlo_params_valid: Indicates @assoc_link_id and @mld_addr fields are filled
+ *	by driver. Drivers use this only in cfg80211_new_sta() calls when AP
+ *	MLD's MLME/SME is offload to driver. Drivers won't fill this
+ *	information in cfg80211_del_sta_sinfo(), get_station() and
+ *	dump_station() callbacks.
+ * @assoc_link_id: Indicates MLO link ID of the AP, with which the station
+ *	completed (re)association. This information filled for both MLO
+ *	and non-MLO STA connections when the AP affiliated with an MLD.
+ * @mld_addr: For MLO STA connection, filled with MLD address of the station.
+ *	For non-MLO STA connection, filled with all zeros.
+ * @assoc_resp_ies: IEs from (Re)Association Response.
+ *	This is used only when in AP mode with drivers that do not use user
+ *	space MLME/SME implementation. The information is provided only for the
+ *	cfg80211_new_sta() calls to notify user space of the IEs. Drivers won't
+ *	fill this information in cfg80211_del_sta_sinfo(), get_station() and
+ *	dump_station() callbacks. User space needs this information to determine
+ *	the accepted and rejected affiliated links of the connected station.
+ * @assoc_resp_ies_len: Length of @assoc_resp_ies buffer in octets.
  */
 struct station_info {
 	u64 filled;
@@ -1941,6 +1978,14 @@ struct station_info {
 	u32 airtime_link_metric;
 
 	u8 connected_to_as;
+
+	bool mlo_params_valid;
+	u8 assoc_link_id;
+	u8 mld_addr[ETH_ALEN] __aligned(2);
+	const u8 *assoc_resp_ies;
+	size_t assoc_resp_ies_len;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -2105,6 +2150,7 @@ struct mpath_info {
  *
  * Used to change BSS parameters (mainly for AP mode).
  *
+ * @link_id: link_id or -1 for non-MLD
  * @use_cts_prot: Whether to use CTS protection
  *	(0 = no, 1 = yes, -1 = do not change)
  * @use_short_preamble: Whether the use of short preambles is allowed
@@ -2122,6 +2168,7 @@ struct mpath_info {
  * @p2p_opp_ps: P2P opportunistic PS (-1 = no change)
  */
 struct bss_parameters {
+	int link_id;
 	int use_cts_prot;
 	int use_short_preamble;
 	int use_short_slot_time;
@@ -2246,6 +2293,8 @@ struct mesh_config {
 	u16 dot11MeshAwakeWindowDuration;
 	u32 plink_timeout;
 	bool dot11MeshNolearn;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -2295,6 +2344,8 @@ struct mesh_setup {
 	struct cfg80211_bitrate_mask beacon_rate;
 	bool userspace_handles_dfs;
 	bool control_port_over_nl80211;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -2458,6 +2509,8 @@ struct cfg80211_scan_request {
 	u32 n_6ghz_params;
 	struct cfg80211_scan_6ghz_params *scan_6ghz_params;
 
+	ANDROID_KABI_RESERVE(1);
+
 	/* keep last */
 	struct ieee80211_channel *channels[];
 };
@@ -2604,6 +2657,8 @@ struct cfg80211_sched_scan_request {
 	bool nl_owner_dead;
 	struct list_head list;
 
+	ANDROID_KABI_RESERVE(1);
+
 	/* keep last */
 	struct ieee80211_channel *channels[];
 };
@@ -2727,6 +2782,8 @@ struct cfg80211_bss {
 	u8 bssid_index;
 	u8 max_bssid_indicator;
 
+	ANDROID_KABI_RESERVE(1);
+
 	u8 priv[] __aligned(sizeof(void *));
 };
 
@@ -2893,6 +2950,8 @@ struct cfg80211_assoc_request {
 	struct cfg80211_assoc_link links[IEEE80211_MLD_MAX_NUM_LINKS];
 	const u8 *ap_mld_addr;
 	s8 link_id;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -2991,6 +3050,8 @@ struct cfg80211_ibss_params {
 	struct ieee80211_ht_cap ht_capa_mask;
 	struct key_params *wep_keys;
 	int wep_tx_key;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -3105,6 +3166,8 @@ struct cfg80211_connect_params {
 	size_t fils_erp_rrk_len;
 	bool want_1x;
 	struct ieee80211_edmg edmg;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -3566,6 +3629,8 @@ struct cfg80211_nan_func {
 	u8 num_rx_filters;
 	u8 instance_id;
 	u64 cookie;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -3604,6 +3669,17 @@ struct cfg80211_pmk_conf {
  *	the real status code for failures. Used only for the authentication
  *	response command interface (user space to driver).
  * @pmkid: The identifier to refer a PMKSA.
+ * @mld_addr: MLD address of the peer. Used by the authentication request event
+ *	interface. Driver indicates this to enable MLO during the authentication
+ *	offload to user space. Driver shall look at %NL80211_ATTR_MLO_SUPPORT
+ *	flag capability in NL80211_CMD_CONNECT to know whether the user space
+ *	supports enabling MLO during the authentication offload.
+ *	User space should use the address of the interface (on which the
+ *	authentication request event reported) as self MLD address. User space
+ *	and driver should use MLD addresses in RA, TA and BSSID fields of
+ *	authentication frames sent or received via cfg80211. The driver
+ *	translates the MLD addresses to/from link addresses based on the link
+ *	chosen for the authentication.
  */
 struct cfg80211_external_auth_params {
 	enum nl80211_external_auth_action action;
@@ -3612,6 +3688,7 @@ struct cfg80211_external_auth_params {
 	unsigned int key_mgmt_suite;
 	u16 status;
 	const u8 *pmkid;
+	u8 mld_addr[ETH_ALEN] __aligned(2);
 };
 
 /**
@@ -3726,6 +3803,8 @@ struct cfg80211_pmsr_ftm_result {
 	    dist_avg_valid:1,
 	    dist_variance_valid:1,
 	    dist_spread_valid:1;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -3866,12 +3945,22 @@ struct cfg80211_pmsr_request {
  *	the IEs of the remote peer in the event from the host driver and
  *	the constructed IEs by the user space in the request interface.
  * @ie_len: Length of IEs in octets.
+ * @assoc_link_id: MLO link ID of the AP, with which (re)association requested
+ *	by peer. This will be filled by driver for both MLO and non-MLO station
+ *	connections when the AP affiliated with an MLD. For non-MLD AP mode, it
+ *	will be -1. Used only with OWE update event (driver to user space).
+ * @peer_mld_addr: For MLO connection, MLD address of the peer. For non-MLO
+ *	connection, it will be all zeros. This is applicable only when
+ *	@assoc_link_id is not -1, i.e., the AP affiliated with an MLD. Used only
+ *	with OWE update event (driver to user space).
  */
 struct cfg80211_update_owe_info {
 	u8 peer[ETH_ALEN] __aligned(2);
 	u16 status;
 	const u8 *ie;
 	size_t ie_len;
+	int assoc_link_id;
+	u8 peer_mld_addr[ETH_ALEN] __aligned(2);
 };
 
 /**
@@ -4633,6 +4722,11 @@ struct cfg80211_ops {
 				    struct link_station_parameters *params);
 	int	(*del_link_station)(struct wiphy *wiphy, struct net_device *dev,
 				    struct link_station_del_parameters *params);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 /*
@@ -4688,6 +4782,7 @@ struct cfg80211_ops {
  *	in order to not have them reachable in normal drivers, until we have
  *	complete feature/interface combinations/etc. advertisement. No driver
  *	should set this flag for now.
+ * @WIPHY_FLAG_SUPPORTS_EXT_KCK_32: The device supports 32-byte KCK keys.
  */
 enum wiphy_flags {
 	WIPHY_FLAG_SUPPORTS_EXT_KEK_KCK		= BIT(0),
@@ -4700,7 +4795,7 @@ enum wiphy_flags {
 	WIPHY_FLAG_CONTROL_PORT_PROTOCOL	= BIT(7),
 	WIPHY_FLAG_IBSS_RSN			= BIT(8),
 	WIPHY_FLAG_MESH_AUTH			= BIT(10),
-	/* use hole at 11 */
+	WIPHY_FLAG_SUPPORTS_EXT_KCK_32          = BIT(11),
 	/* use hole at 12 */
 	WIPHY_FLAG_SUPPORTS_FW_ROAM		= BIT(13),
 	WIPHY_FLAG_AP_UAPSD			= BIT(14),
@@ -5000,6 +5095,8 @@ struct wiphy_vendor_command {
 		      unsigned long *storage);
 	const struct nla_policy *policy;
 	unsigned int maxattr;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -5445,6 +5542,8 @@ struct wiphy {
 	u8 ema_max_profile_periodicity;
 	u16 max_num_akm_suites;
 
+	ANDROID_KABI_RESERVE(1);
+
 	char priv[] __aligned(NETDEV_ALIGN);
 };
 
@@ -5838,6 +5937,9 @@ struct wireless_dev {
 		};
 	} links[IEEE80211_MLD_MAX_NUM_LINKS];
 	u16 valid_links;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 static inline const u8 *wdev_address(struct wireless_dev *wdev)
@@ -6933,6 +7035,8 @@ void cfg80211_auth_timeout(struct net_device *dev, const u8 *addr);
  * @ap_mld_addr: AP MLD address (in case of MLO)
  * @links: per-link information indexed by link ID, use links[0] for
  *	non-MLO connections
+ * @links.status: Set this (along with a BSS pointer) for links that
+ *	were rejected by the AP.
  */
 struct cfg80211_rx_assoc_resp {
 	const u8 *buf;
@@ -6944,6 +7048,7 @@ struct cfg80211_rx_assoc_resp {
 	struct {
 		const u8 *addr;
 		struct cfg80211_bss *bss;
+		u16 status;
 	} links[IEEE80211_MLD_MAX_NUM_LINKS];
 };
 
@@ -7454,6 +7559,9 @@ struct cfg80211_fils_resp_params {
  *	if the bss is expired during the connection, esp. for those drivers
  *	implementing connect op. Only one parameter among @bssid and @bss needs
  *	to be specified.
+ * @links.status: per-link status code, to report a status code that's not
+ *	%WLAN_STATUS_SUCCESS for a given link, it must also be in the
+ *	@valid_links bitmap and may have a BSS pointer (which is then released)
  */
 struct cfg80211_connect_resp_params {
 	int status;
@@ -7470,6 +7578,7 @@ struct cfg80211_connect_resp_params {
 		const u8 *addr;
 		const u8 *bssid;
 		struct cfg80211_bss *bss;
+		u16 status;
 	} links[IEEE80211_MLD_MAX_NUM_LINKS];
 };
 
@@ -7674,6 +7783,8 @@ void cfg80211_roamed(struct net_device *dev, struct cfg80211_roam_info *info,
  *
  * @dev: network device
  * @bssid: the BSSID of the AP
+ * @td_bitmap: transition disable policy
+ * @td_bitmap_len: Length of transition disable policy
  * @gfp: allocation flags
  *
  * This function should be called by a driver that supports 4 way handshake
@@ -7684,7 +7795,7 @@ void cfg80211_roamed(struct net_device *dev, struct cfg80211_roam_info *info,
  * indicate the 802.11 association.
  */
 void cfg80211_port_authorized(struct net_device *dev, const u8 *bssid,
-			      gfp_t gfp);
+			      const u8* td_bitmap, u8 td_bitmap_len, gfp_t gfp);
 
 /**
  * cfg80211_disconnected - notify cfg80211 that connection was dropped
@@ -8003,6 +8114,7 @@ void cfg80211_control_port_tx_status(struct wireless_dev *wdev, u64 cookie,
  *	responsible for any cleanup.  The caller must also ensure that
  *	skb->protocol is set appropriately.
  * @unencrypted: Whether the frame was received unencrypted
+ * @link_id: the link the frame was received on, -1 if not applicable or unknown
  *
  * This function is used to inform userspace about a received control port
  * frame.  It should only be used if userspace indicated it wants to receive
@@ -8013,8 +8125,8 @@ void cfg80211_control_port_tx_status(struct wireless_dev *wdev, u64 cookie,
  *
  * Return: %true if the frame was passed to userspace
  */
-bool cfg80211_rx_control_port(struct net_device *dev,
-			      struct sk_buff *skb, bool unencrypted);
+bool cfg80211_rx_control_port(struct net_device *dev, struct sk_buff *skb,
+			      bool unencrypted, int link_id);
 
 /**
  * cfg80211_cqm_rssi_notify - connection quality monitoring rssi event
@@ -8269,13 +8381,14 @@ bool cfg80211_reg_can_beacon_relax(struct wiphy *wiphy,
  * @dev: the device which switched channels
  * @chandef: the new channel definition
  * @link_id: the link ID for MLO, must be 0 for non-MLO
+ * @punct_bitmap: the new puncturing bitmap
  *
  * Caller must acquire wdev_lock, therefore must only be called from sleepable
  * driver context!
  */
 void cfg80211_ch_switch_notify(struct net_device *dev,
 			       struct cfg80211_chan_def *chandef,
-			       unsigned int link_id);
+			       unsigned int link_id, u16 punct_bitmap);
 
 /*
  * cfg80211_ch_switch_started_notify - notify channel switch start
@@ -8284,6 +8397,7 @@ void cfg80211_ch_switch_notify(struct net_device *dev,
  * @link_id: the link ID for MLO, must be 0 for non-MLO
  * @count: the number of TBTTs until the channel switch happens
  * @quiet: whether or not immediate quiet was requested by the AP
+ * @punct_bitmap: the future puncturing bitmap
  *
  * Inform the userspace about the channel switch that has just
  * started, so that it can take appropriate actions (eg. starting
@@ -8292,7 +8406,7 @@ void cfg80211_ch_switch_notify(struct net_device *dev,
 void cfg80211_ch_switch_started_notify(struct net_device *dev,
 				       struct cfg80211_chan_def *chandef,
 				       unsigned int link_id, u8 count,
-				       bool quiet);
+				       bool quiet, u16 punct_bitmap);
 
 /**
  * ieee80211_operating_class_to_band - convert operating class to band
@@ -8396,9 +8510,7 @@ int cfg80211_register_netdevice(struct net_device *dev);
  */
 static inline void cfg80211_unregister_netdevice(struct net_device *dev)
 {
-#if IS_ENABLED(CONFIG_CFG80211)
 	cfg80211_unregister_wdev(dev->ieee80211_ptr);
-#endif
 }
 
 /**
@@ -8903,4 +9015,16 @@ static inline int cfg80211_color_change_notify(struct net_device *dev)
 					 0, 0);
 }
 
+/**
+ * cfg80211_valid_disable_subchannel_bitmap - validate puncturing bitmap
+ * @bitmap: bitmap to be validated
+ * @chandef: channel definition
+ *
+ * Validate the puncturing bitmap.
+ *
+ * Return: %true if the bitmap is valid. %false otherwise.
+ */
+bool cfg80211_valid_disable_subchannel_bitmap(u16 *bitmap,
+					      const struct cfg80211_chan_def *chandef);
+
 #endif /* __NET_CFG80211_H */
diff --git a/include/net/genetlink.h b/include/net/genetlink.h
index 9f97f73..6fe3ab5a 100644
--- a/include/net/genetlink.h
+++ b/include/net/genetlink.h
@@ -3,6 +3,7 @@
 #define __NET_GENERIC_NETLINK_H
 
 #include <linux/genetlink.h>
+#include <linux/android_kabi.h>
 #include <net/netlink.h>
 #include <net/net_namespace.h>
 
@@ -81,6 +82,8 @@ struct genl_family {
 	const struct genl_small_ops *small_ops;
 	const struct genl_multicast_group *mcgrps;
 	struct module		*module;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -179,6 +182,8 @@ struct genl_ops {
 	u8			internal_flags;
 	u8			flags;
 	u8			validate;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
diff --git a/include/net/inet_connection_sock.h b/include/net/inet_connection_sock.h
index c2b15f7..3f00734 100644
--- a/include/net/inet_connection_sock.h
+++ b/include/net/inet_connection_sock.h
@@ -17,6 +17,7 @@
 #include <linux/poll.h>
 #include <linux/kernel.h>
 #include <linux/sockptr.h>
+#include <linux/android_kabi.h>
 
 #include <net/inet_sock.h>
 #include <net/request_sock.h>
@@ -52,6 +53,8 @@ struct inet_connection_sock_af_ops {
 				  char __user *optval, int __user *optlen);
 	void	    (*addr2sockaddr)(struct sock *sk, struct sockaddr *);
 	void	    (*mtu_reduced)(struct sock *sk);
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /** inet_connection_sock - INET connection oriented sock
@@ -135,6 +138,8 @@ struct inet_connection_sock {
 	u32			  icsk_probes_tstamp;
 	u32			  icsk_user_timeout;
 
+	ANDROID_KABI_RESERVE(1);
+
 	u64			  icsk_ca_priv[104 / sizeof(u64)];
 #define ICSK_CA_PRIV_SIZE	  sizeof_field(struct inet_connection_sock, icsk_ca_priv)
 };
diff --git a/include/net/inet_sock.h b/include/net/inet_sock.h
index 5185711..e703114 100644
--- a/include/net/inet_sock.h
+++ b/include/net/inet_sock.h
@@ -17,6 +17,7 @@
 #include <linux/types.h>
 #include <linux/jhash.h>
 #include <linux/netdevice.h>
+#include <linux/android_kabi.h>
 
 #include <net/flow.h>
 #include <net/sock.h>
@@ -253,6 +254,9 @@ struct inet_sock {
 		__u16 lo;
 		__u16 hi;
 	}			local_port_range;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 #define IPCORK_OPT	1	/* ip-options has been held in ipcork.opt */
diff --git a/include/net/ip.h b/include/net/ip.h
index acec504..6032dc1 100644
--- a/include/net/ip.h
+++ b/include/net/ip.h
@@ -25,6 +25,7 @@
 #include <linux/jhash.h>
 #include <linux/sockptr.h>
 #include <linux/static_key.h>
+#include <linux/android_kabi.h>
 
 #include <net/inet_sock.h>
 #include <net/route.h>
@@ -81,6 +82,7 @@ struct ipcm_cookie {
 	__s16			tos;
 	char			priority;
 	__u16			gso_size;
+	ANDROID_KABI_RESERVE(1);
 };
 
 static inline void ipcm_init(struct ipcm_cookie *ipcm)
diff --git a/include/net/ip6_fib.h b/include/net/ip6_fib.h
index 6268963..e965190 100644
--- a/include/net/ip6_fib.h
+++ b/include/net/ip6_fib.h
@@ -13,6 +13,7 @@
 #include <linux/rtnetlink.h>
 #include <linux/spinlock.h>
 #include <linux/notifier.h>
+#include <linux/android_kabi.h>
 #include <net/dst.h>
 #include <net/flow.h>
 #include <net/ip_fib.h>
@@ -68,6 +69,8 @@ struct fib6_config {
 	struct nlattr	*fc_encap;
 	u16		fc_encap_type;
 	bool		fc_is_fdb;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct fib6_node {
@@ -84,6 +87,8 @@ struct fib6_node {
 	int			fn_sernum;
 	struct fib6_info __rcu	*rr_ptr;
 	struct rcu_head		rcu;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct fib6_gc_args {
@@ -203,6 +208,9 @@ struct fib6_info {
 
 	struct rcu_head			rcu;
 	struct nexthop			*nh;
+
+	ANDROID_KABI_RESERVE(1);
+
 	struct fib6_nh			fib6_nh[];
 };
 
@@ -222,6 +230,8 @@ struct rt6_info {
 
 	/* more non-fragment space at head required */
 	unsigned short			rt6i_nfheader_len;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct fib6_result {
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 72b739d..a42d94e 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -19,6 +19,7 @@
 #include <linux/skbuff.h>
 #include <linux/ieee80211.h>
 #include <linux/lockdep.h>
+#include <linux/android_kabi.h>
 #include <net/cfg80211.h>
 #include <net/codel.h>
 #include <net/ieee80211_radiotap.h>
@@ -725,6 +726,8 @@ struct ieee80211_bss_conf {
 
 	bool color_change_active;
 	u8 color_change_color;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -1153,6 +1156,9 @@ struct ieee80211_tx_info {
 			void *rate_driver_data[
 				IEEE80211_TX_INFO_RATE_DRIVER_DATA_SIZE / sizeof(void *)];
 		};
+
+		ANDROID_KABI_RESERVE(1);
+
 		void *driver_data[
 			IEEE80211_TX_INFO_DRIVER_DATA_SIZE / sizeof(void *)];
 	};
@@ -1673,6 +1679,8 @@ struct ieee80211_conf {
 	struct cfg80211_chan_def chandef;
 	bool radar_enabled;
 	enum ieee80211_smps_mode smps_mode;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -1857,6 +1865,8 @@ struct ieee80211_vif {
 
 	struct ieee80211_vif *mbssid_tx_vif;
 
+	ANDROID_KABI_RESERVE(1);
+
 	/* must be last */
 	u8 drv_priv[] __aligned(sizeof(void *));
 };
@@ -2287,6 +2297,8 @@ struct ieee80211_sta {
 	struct ieee80211_link_sta deflink;
 	struct ieee80211_link_sta __rcu *link[IEEE80211_MLD_MAX_NUM_LINKS];
 
+	ANDROID_KABI_RESERVE(1);
+
 	/* must be last */
 	u8 drv_priv[] __aligned(sizeof(void *));
 };
@@ -2822,6 +2834,8 @@ struct ieee80211_hw {
 	u32 max_mtu;
 	const s8 *tx_power_levels;
 	u8 max_txpwr_levels_idx;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 static inline bool _ieee80211_hw_check(struct ieee80211_hw *hw,
@@ -4515,6 +4529,11 @@ struct ieee80211_ops {
 				struct ieee80211_vif *vif,
 				struct ieee80211_sta *sta,
 				u16 old_links, u16 new_links);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 /**
@@ -6614,6 +6633,11 @@ struct rate_control_ops {
 				struct dentry *dir);
 
 	u32 (*get_expected_throughput)(void *priv_sta);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 static inline int rate_supported(struct ieee80211_sta *sta,
diff --git a/include/net/neighbour.h b/include/net/neighbour.h
index 794e459..dba7b08 100644
--- a/include/net/neighbour.h
+++ b/include/net/neighbour.h
@@ -28,6 +28,7 @@
 #include <linux/err.h>
 #include <linux/sysctl.h>
 #include <linux/workqueue.h>
+#include <linux/android_kabi.h>
 #include <net/rtnetlink.h>
 
 /*
@@ -86,6 +87,8 @@ struct neigh_parms {
 	u32	qlen;
 	int	data[NEIGH_VAR_DATA_MAX];
 	DECLARE_BITMAP(data_state, NEIGH_VAR_DATA_MAX);
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 static inline void neigh_var_set(struct neigh_parms *p, int index, int val)
@@ -162,6 +165,9 @@ struct neighbour {
 	struct rcu_head		rcu;
 	struct net_device	*dev;
 	netdevice_tracker	dev_tracker;
+
+	ANDROID_KABI_RESERVE(1);
+
 	u8			primary_key[0];
 } __randomize_layout;
 
@@ -234,6 +240,8 @@ struct neigh_table {
 	struct neigh_statistics	__percpu *stats;
 	struct neigh_hash_table __rcu *nht;
 	struct pneigh_entry	**phash_buckets;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 enum {
diff --git a/include/net/netfilter/nf_conntrack.h b/include/net/netfilter/nf_conntrack.h
index 6a2019a..ca124b1 100644
--- a/include/net/netfilter/nf_conntrack.h
+++ b/include/net/netfilter/nf_conntrack.h
@@ -15,6 +15,8 @@
 
 #include <linux/bitops.h>
 #include <linux/compiler.h>
+#include <linux/android_vendor.h>
+#include <linux/android_kabi.h>
 
 #include <linux/netfilter/nf_conntrack_common.h>
 #include <linux/netfilter/nf_conntrack_tcp.h>
@@ -123,6 +125,10 @@ struct nf_conn {
 
 	/* Storage reserved for other modules, must be the last member */
 	union nf_conntrack_proto proto;
+
+	ANDROID_OEM_DATA(1);
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 static inline struct nf_conn *
diff --git a/include/net/netns/can.h b/include/net/netns/can.h
index 48b79f7..9acda99 100644
--- a/include/net/netns/can.h
+++ b/include/net/netns/can.h
@@ -8,6 +8,7 @@
 
 #include <linux/spinlock.h>
 #include <linux/timer.h>
+#include <linux/android_kabi.h>
 
 struct can_dev_rcv_lists;
 struct can_pkg_stats;
@@ -36,6 +37,8 @@ struct netns_can {
 
 	/* CAN GW per-net gateway jobs */
 	struct hlist_head cgw_list;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 #endif /* __NETNS_CAN_H__ */
diff --git a/include/net/netns/ipv4.h b/include/net/netns/ipv4.h
index 1b80046..408c70a 100644
--- a/include/net/netns/ipv4.h
+++ b/include/net/netns/ipv4.h
@@ -11,6 +11,7 @@
 #include <linux/rcupdate.h>
 #include <linux/seqlock.h>
 #include <linux/siphash.h>
+#include <linux/android_kabi.h>
 
 struct ctl_table_header;
 struct ipv4_devconf;
@@ -229,5 +230,7 @@ struct netns_ipv4 {
 
 	atomic_t	rt_genid;
 	siphash_key_t	ip_id_key;
+
+	ANDROID_KABI_RESERVE(1);
 };
 #endif
diff --git a/include/net/netns/ipv6.h b/include/net/netns/ipv6.h
index f6e6a3a..3764ac0 100644
--- a/include/net/netns/ipv6.h
+++ b/include/net/netns/ipv6.h
@@ -7,6 +7,7 @@
 
 #ifndef __NETNS_IPV6_H__
 #define __NETNS_IPV6_H__
+#include <linux/android_kabi.h>
 #include <net/dst_ops.h>
 #include <uapi/linux/icmpv6.h>
 
@@ -55,6 +56,7 @@ struct netns_sysctl_ipv6 {
 	u64 ioam6_id_wide;
 	int skip_notify_on_dev_down;
 	u8 fib_notify_on_flag_change;
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct netns_ipv6 {
@@ -118,6 +120,8 @@ struct netns_ipv6 {
 		u32		seq;
 	} ip6addrlbl_table;
 	struct ioam6_pernet_data *ioam6_data;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 #if IS_ENABLED(CONFIG_NF_DEFRAG_IPV6)
diff --git a/include/net/netns/netfilter.h b/include/net/netns/netfilter.h
index 02bbdc5..3b7eb0c 100644
--- a/include/net/netns/netfilter.h
+++ b/include/net/netns/netfilter.h
@@ -3,6 +3,7 @@
 #define __NETNS_NETFILTER_H
 
 #include <linux/netfilter_defs.h>
+#include <linux/android_kabi.h>
 
 struct proc_dir_entry;
 struct nf_logger;
@@ -30,5 +31,7 @@ struct netns_nf {
 #if IS_ENABLED(CONFIG_NF_DEFRAG_IPV6)
 	unsigned int defrag_ipv6_users;
 #endif
+
+	ANDROID_KABI_RESERVE(1);
 };
 #endif
diff --git a/include/net/netns/nftables.h b/include/net/netns/nftables.h
index 8c77832..26930d6 100644
--- a/include/net/netns/nftables.h
+++ b/include/net/netns/nftables.h
@@ -3,9 +3,11 @@
 #define _NETNS_NFTABLES_H_
 
 #include <linux/list.h>
+#include <linux/android_kabi.h>
 
 struct netns_nftables {
 	u8			gencursor;
+	ANDROID_KABI_RESERVE(1);
 };
 
 #endif
diff --git a/include/net/netns/xfrm.h b/include/net/netns/xfrm.h
index bd7c3be..c8dcbf3 100644
--- a/include/net/netns/xfrm.h
+++ b/include/net/netns/xfrm.h
@@ -7,6 +7,7 @@
 #include <linux/workqueue.h>
 #include <linux/rhashtable-types.h>
 #include <linux/xfrm.h>
+#include <linux/android_kabi.h>
 #include <net/dst_ops.h>
 
 struct ctl_table_header;
@@ -82,6 +83,8 @@ struct netns_xfrm {
 
 	spinlock_t xfrm_policy_lock;
 	struct mutex xfrm_cfg_mutex;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 #endif
diff --git a/include/net/page_pool.h b/include/net/page_pool.h
index ad0bafc..4a57ff3 100644
--- a/include/net/page_pool.h
+++ b/include/net/page_pool.h
@@ -33,6 +33,7 @@
 #include <linux/mm.h> /* Needed by ptr_ring */
 #include <linux/ptr_ring.h>
 #include <linux/dma-direction.h>
+#include <linux/android_kabi.h>
 
 #define PP_FLAG_DMA_MAP		BIT(0) /* Should page_pool do the DMA
 					* map/unmap
@@ -207,6 +208,8 @@ struct page_pool {
 	refcount_t user_cnt;
 
 	u64 destroy_cnt;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct page *page_pool_alloc_pages(struct page_pool *pool, gfp_t gfp);
diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h
index b3e3128..7d13f90 100644
--- a/include/net/sch_generic.h
+++ b/include/net/sch_generic.h
@@ -16,6 +16,7 @@
 #include <linux/rwsem.h>
 #include <linux/atomic.h>
 #include <linux/hashtable.h>
+#include <linux/android_kabi.h>
 #include <net/gen_stats.h>
 #include <net/rtnetlink.h>
 #include <net/flow_offload.h>
@@ -126,6 +127,9 @@ struct Qdisc {
 
 	struct rcu_head		rcu;
 	netdevice_tracker	dev_tracker;
+
+	ANDROID_KABI_RESERVE(1);
+
 	/* private data */
 	long privdata[] ____cacheline_aligned;
 };
@@ -277,6 +281,8 @@ struct Qdisc_class_ops {
 					struct sk_buff *skb, struct tcmsg*);
 	int			(*dump_stats)(struct Qdisc *, unsigned long,
 					struct gnet_dump *);
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /* Qdisc_class_ops flag values */
@@ -322,6 +328,8 @@ struct Qdisc_ops {
 	u32			(*egress_block_get)(struct Qdisc *sch);
 
 	struct module		*owner;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 
diff --git a/include/net/sock.h b/include/net/sock.h
index 2f35b82..8971ae8 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -69,6 +69,8 @@
 #include <linux/net_tstamp.h>
 #include <net/l3mdev.h>
 #include <uapi/linux/socket.h>
+#include <linux/android_vendor.h>
+#include <linux/android_kabi.h>
 
 /*
  * This structure really needs to be cleaned up.
@@ -541,6 +543,16 @@ struct sock {
 	struct rcu_head		sk_rcu;
 	netns_tracker		ns_tracker;
 	struct hlist_node	sk_bind2_node;
+
+	ANDROID_OEM_DATA(1);
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
+	ANDROID_KABI_RESERVE(5);
+	ANDROID_KABI_RESERVE(6);
+	ANDROID_KABI_RESERVE(7);
+	ANDROID_KABI_RESERVE(8);
 };
 
 enum sk_pacing {
diff --git a/include/net/tls.h b/include/net/tls.h
index c36bf4c..1196d72 100644
--- a/include/net/tls.h
+++ b/include/net/tls.h
@@ -42,6 +42,7 @@
 #include <linux/mutex.h>
 #include <linux/netdevice.h>
 #include <linux/rcupdate.h>
+#include <linux/android_kabi.h>
 
 #include <net/net_namespace.h>
 #include <net/tcp.h>
@@ -116,6 +117,8 @@ struct tls_sw_context_tx {
 #define BIT_TX_SCHEDULED	0
 #define BIT_TX_CLOSING		1
 	unsigned long tx_bitmask;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct tls_strparser {
@@ -151,6 +154,8 @@ struct tls_sw_context_rx {
 	spinlock_t decrypt_compl_lock;
 	struct sk_buff_head async_hold;
 	struct wait_queue_head wq;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct tls_record_info {
@@ -295,6 +300,12 @@ struct tlsdev_ops {
 	int (*tls_dev_resync)(struct net_device *netdev,
 			      struct sock *sk, u32 seq, u8 *rcd_sn,
 			      enum tls_offload_ctx_dir direction);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
+
 };
 
 enum tls_offload_sync_type {
diff --git a/include/net/xfrm.h b/include/net/xfrm.h
index 9ec6f2e..ed6b83c 100644
--- a/include/net/xfrm.h
+++ b/include/net/xfrm.h
@@ -1598,9 +1598,7 @@ int xfrm_trans_queue(struct sk_buff *skb,
 int xfrm_output_resume(struct sock *sk, struct sk_buff *skb, int err);
 int xfrm_output(struct sock *sk, struct sk_buff *skb);
 
-#if IS_ENABLED(CONFIG_NET_PKTGEN)
 int pktgen_xfrm_outer_mode_output(struct xfrm_state *x, struct sk_buff *skb);
-#endif
 
 void xfrm_local_error(struct sk_buff *skb, int mtu);
 int xfrm4_extract_input(struct xfrm_state *x, struct sk_buff *skb);
diff --git a/include/scsi/libiscsi.h b/include/scsi/libiscsi.h
index 7fb3cb7..e39fb07 100644
--- a/include/scsi/libiscsi.h
+++ b/include/scsi/libiscsi.h
@@ -393,7 +393,7 @@ extern int iscsi_eh_recover_target(struct scsi_cmnd *sc);
 extern int iscsi_eh_session_reset(struct scsi_cmnd *sc);
 extern int iscsi_eh_device_reset(struct scsi_cmnd *sc);
 extern int iscsi_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *sc);
-extern enum blk_eh_timer_return iscsi_eh_cmd_timed_out(struct scsi_cmnd *sc);
+extern enum scsi_timeout_action iscsi_eh_cmd_timed_out(struct scsi_cmnd *sc);
 
 /*
  * iSCSI host helpers.
diff --git a/include/scsi/scsi_cmnd.h b/include/scsi/scsi_cmnd.h
index 7d3622d..ce930d1 100644
--- a/include/scsi/scsi_cmnd.h
+++ b/include/scsi/scsi_cmnd.h
@@ -10,6 +10,7 @@
 #include <linux/timer.h>
 #include <linux/scatterlist.h>
 #include <scsi/scsi_device.h>
+#include <linux/android_kabi.h>
 
 struct Scsi_Host;
 
@@ -52,8 +53,9 @@ struct scsi_pointer {
 #define SCMD_TAGGED		(1 << 0)
 #define SCMD_INITIALIZED	(1 << 1)
 #define SCMD_LAST		(1 << 2)
+#define SCMD_FAIL_IF_RECOVERING	(1 << 4)
 /* flags preserved across unprep / reprep */
-#define SCMD_PRESERVED_FLAGS	(SCMD_INITIALIZED)
+#define SCMD_PRESERVED_FLAGS	(SCMD_INITIALIZED | SCMD_FAIL_IF_RECOVERING)
 
 /* for scmd->state */
 #define SCMD_STATE_COMPLETE	0
@@ -135,6 +137,11 @@ struct scsi_cmnd {
 					 * to be at an address < 16Mb). */
 
 	int result;		/* Status code from lower level driver */
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 /* Variant of blk_mq_rq_from_pdu() that verifies the type of its argument. */
diff --git a/include/scsi/scsi_device.h b/include/scsi/scsi_device.h
index 006858e..26c2ac1 100644
--- a/include/scsi/scsi_device.h
+++ b/include/scsi/scsi_device.h
@@ -9,6 +9,7 @@
 #include <scsi/scsi.h>
 #include <linux/atomic.h>
 #include <linux/sbitmap.h>
+#include <linux/android_kabi.h>
 
 struct bsg_device;
 struct device;
@@ -255,6 +256,12 @@ struct scsi_device {
 	struct mutex		state_mutex;
 	enum scsi_device_state sdev_state;
 	struct task_struct	*quiesced_by;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
+
 	unsigned long		sdev_data[];
 } __attribute__((aligned(sizeof(unsigned long))));
 
@@ -457,29 +464,22 @@ extern const char *scsi_device_state_name(enum scsi_device_state);
 extern int scsi_is_sdev_device(const struct device *);
 extern int scsi_is_target_device(const struct device *);
 extern void scsi_sanitize_inquiry_string(unsigned char *s, int len);
-extern int __scsi_execute(struct scsi_device *sdev, const unsigned char *cmd,
-			int data_direction, void *buffer, unsigned bufflen,
-			unsigned char *sense, struct scsi_sense_hdr *sshdr,
-			int timeout, int retries, blk_opf_t flags,
-			req_flags_t rq_flags, int *resid);
-/* Make sure any sense buffer is the correct size. */
-#define scsi_execute(sdev, cmd, data_direction, buffer, bufflen, sense,	\
-		     sshdr, timeout, retries, flags, rq_flags, resid)	\
-({									\
-	BUILD_BUG_ON((sense) != NULL &&					\
-		     sizeof(sense) != SCSI_SENSE_BUFFERSIZE);		\
-	__scsi_execute(sdev, cmd, data_direction, buffer, bufflen,	\
-		       sense, sshdr, timeout, retries, flags, rq_flags,	\
-		       resid);						\
-})
-static inline int scsi_execute_req(struct scsi_device *sdev,
-	const unsigned char *cmd, int data_direction, void *buffer,
-	unsigned bufflen, struct scsi_sense_hdr *sshdr, int timeout,
-	int retries, int *resid)
-{
-	return scsi_execute(sdev, cmd, data_direction, buffer,
-		bufflen, NULL, sshdr, timeout, retries,  0, 0, resid);
-}
+
+/* Optional arguments to scsi_execute_cmd */
+struct scsi_exec_args {
+	unsigned char *sense;		/* sense buffer */
+	unsigned int sense_len;		/* sense buffer len */
+	struct scsi_sense_hdr *sshdr;	/* decoded sense header */
+	blk_mq_req_flags_t req_flags;	/* BLK_MQ_REQ flags */
+	int scmd_flags;			/* SCMD flags */
+	int *resid;			/* residual length */
+};
+
+int scsi_execute_cmd(struct scsi_device *sdev, const unsigned char *cmd,
+		     blk_opf_t opf, void *buffer, unsigned int bufflen,
+		     int timeout, int retries,
+		     const struct scsi_exec_args *args);
+
 extern void sdev_disable_disk_events(struct scsi_device *sdev);
 extern void sdev_enable_disk_events(struct scsi_device *sdev);
 extern int scsi_vpd_lun_id(struct scsi_device *, char *, size_t);
diff --git a/include/scsi/scsi_host.h b/include/scsi/scsi_host.h
index fcf25f1..884ee41 100644
--- a/include/scsi/scsi_host.h
+++ b/include/scsi/scsi_host.h
@@ -10,6 +10,7 @@
 #include <linux/seq_file.h>
 #include <linux/blk-mq.h>
 #include <scsi/scsi.h>
+#include <linux/android_kabi.h>
 
 struct block_device;
 struct completion;
@@ -27,6 +28,18 @@ struct scsi_transport_template;
 #define MODE_INITIATOR 0x01
 #define MODE_TARGET 0x02
 
+/**
+ * enum scsi_timeout_action - How to handle a command that timed out.
+ * @SCSI_EH_DONE: The command has already been completed.
+ * @SCSI_EH_RESET_TIMER: Reset the timer and continue waiting for completion.
+ * @SCSI_EH_NOT_HANDLED: The command has not yet finished. Abort the command.
+ */
+enum scsi_timeout_action {
+	SCSI_EH_DONE,
+	SCSI_EH_RESET_TIMER,
+	SCSI_EH_NOT_HANDLED,
+};
+
 struct scsi_host_template {
 	/*
 	 * Put fields referenced in IO submission path together in
@@ -331,7 +344,7 @@ struct scsi_host_template {
 	 *
 	 * Status: OPTIONAL
 	 */
-	enum blk_eh_timer_return (*eh_timed_out)(struct scsi_cmnd *);
+	enum scsi_timeout_action (*eh_timed_out)(struct scsi_cmnd *);
 	/*
 	 * Optional routine that allows the transport to decide if a cmd
 	 * is retryable. Return true if the transport is in a state the
@@ -494,6 +507,11 @@ struct scsi_host_template {
 
 	/* Delay for runtime autosuspend */
 	int rpm_autosuspend_delay;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 /*
@@ -704,6 +722,8 @@ struct Scsi_Host {
 	 */
 	struct device *dma_dev;
 
+	ANDROID_KABI_RESERVE(1);
+
 	/*
 	 * We should ensure that this is aligned, both for better performance
 	 * and also because some compilers (m68k) don't automatically force
diff --git a/include/scsi/scsi_transport_fc.h b/include/scsi/scsi_transport_fc.h
index e80a7c5..3dcda19 100644
--- a/include/scsi/scsi_transport_fc.h
+++ b/include/scsi/scsi_transport_fc.h
@@ -862,7 +862,7 @@ struct fc_vport *fc_vport_create(struct Scsi_Host *shost, int channel,
 int fc_vport_terminate(struct fc_vport *vport);
 int fc_block_rport(struct fc_rport *rport);
 int fc_block_scsi_eh(struct scsi_cmnd *cmnd);
-enum blk_eh_timer_return fc_eh_timed_out(struct scsi_cmnd *scmd);
+enum scsi_timeout_action fc_eh_timed_out(struct scsi_cmnd *scmd);
 bool fc_eh_should_retry_cmd(struct scsi_cmnd *scmd);
 
 static inline struct Scsi_Host *fc_bsg_to_shost(struct bsg_job *job)
diff --git a/include/scsi/scsi_transport_srp.h b/include/scsi/scsi_transport_srp.h
index d22df125..dfc78aa 100644
--- a/include/scsi/scsi_transport_srp.h
+++ b/include/scsi/scsi_transport_srp.h
@@ -118,7 +118,7 @@ extern int srp_reconnect_rport(struct srp_rport *rport);
 extern void srp_start_tl_fail_timers(struct srp_rport *rport);
 extern void srp_remove_host(struct Scsi_Host *);
 extern void srp_stop_rport_timers(struct srp_rport *rport);
-enum blk_eh_timer_return srp_timed_out(struct scsi_cmnd *scmd);
+enum scsi_timeout_action srp_timed_out(struct scsi_cmnd *scmd);
 
 /**
  * srp_chkready() - evaluate the transport layer state before I/O
diff --git a/include/sound/compress_driver.h b/include/sound/compress_driver.h
index d91289c..77d027f 100644
--- a/include/sound/compress_driver.h
+++ b/include/sound/compress_driver.h
@@ -12,6 +12,7 @@
 
 #include <linux/types.h>
 #include <linux/sched.h>
+#include <linux/android_kabi.h>
 #include <sound/core.h>
 #include <sound/compress_offload.h>
 #include <sound/asound.h>
@@ -54,6 +55,8 @@ struct snd_compr_runtime {
 	dma_addr_t dma_addr;
 	size_t dma_bytes;
 	struct snd_dma_buffer *dma_buffer_p;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -84,6 +87,8 @@ struct snd_compr_stream {
 	bool pause_in_draining;
 	void *private_data;
 	struct snd_dma_buffer dma_buffer;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -132,6 +137,8 @@ struct snd_compr_ops {
 			struct snd_compr_caps *caps);
 	int (*get_codec_caps) (struct snd_compr_stream *stream,
 			struct snd_compr_codec_caps *codec);
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -162,6 +169,7 @@ struct snd_compr {
 	struct snd_info_entry *proc_root;
 	struct snd_info_entry *proc_info_entry;
 #endif
+	ANDROID_KABI_RESERVE(1);
 };
 
 /* compress device register APIs */
diff --git a/include/sound/core.h b/include/sound/core.h
index 4365c35..0ddf410f 100644
--- a/include/sound/core.h
+++ b/include/sound/core.h
@@ -15,6 +15,7 @@
 #include <linux/stringify.h>
 #include <linux/printk.h>
 #include <linux/xarray.h>
+#include <linux/android_kabi.h>
 
 /* number of supported soundcards */
 #ifdef CONFIG_SND_DYNAMIC_MINORS
@@ -62,6 +63,8 @@ struct snd_device_ops {
 	int (*dev_free)(struct snd_device *dev);
 	int (*dev_register)(struct snd_device *dev);
 	int (*dev_disconnect)(struct snd_device *dev);
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct snd_device {
@@ -71,6 +74,8 @@ struct snd_device {
 	enum snd_device_type type;	/* device type */
 	void *device_data;		/* device structure */
 	const struct snd_device_ops *ops;	/* operations */
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 #define snd_device(n) list_entry(n, struct snd_device, list)
@@ -145,6 +150,9 @@ struct snd_card {
 	struct snd_mixer_oss *mixer_oss;
 	int mixer_oss_change_count;
 #endif
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 #define dev_to_snd_card(p)	container_of(p, struct snd_card, card_dev)
@@ -220,6 +228,8 @@ struct snd_minor {
 	void *private_data;		/* private data for f_ops->open */
 	struct device *dev;		/* device for sysfs */
 	struct snd_card *card_ptr;	/* assigned card instance */
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /* return a device pointer linked to each sound device as a parent */
diff --git a/include/sound/hwdep.h b/include/sound/hwdep.h
index 8d6cdb2..d99a530 100644
--- a/include/sound/hwdep.h
+++ b/include/sound/hwdep.h
@@ -9,6 +9,7 @@
 
 #include <sound/asound.h>
 #include <linux/poll.h>
+#include <linux/android_kabi.h>
 
 struct snd_hwdep;
 
@@ -34,6 +35,8 @@ struct snd_hwdep_ops {
 			  struct snd_hwdep_dsp_status *status);
 	int (*dsp_load)(struct snd_hwdep *hw,
 			struct snd_hwdep_dsp_image *image);
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct snd_hwdep {
@@ -59,6 +62,8 @@ struct snd_hwdep {
 	int used;			/* reference counter */
 	unsigned int dsp_loaded;	/* bit fields of loaded dsp indices */
 	unsigned int exclusive:1;	/* exclusive access mode */
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 extern int snd_hwdep_new(struct snd_card *card, char *id, int device,
diff --git a/include/sound/info.h b/include/sound/info.h
index 7c13bf5..25af5d8 100644
--- a/include/sound/info.h
+++ b/include/sound/info.h
@@ -9,6 +9,7 @@
 
 #include <linux/poll.h>
 #include <linux/seq_file.h>
+#include <linux/android_kabi.h>
 #include <sound/core.h>
 
 /* buffer for information */
@@ -55,6 +56,8 @@ struct snd_info_entry_ops {
 	int (*mmap)(struct snd_info_entry *entry, void *file_private_data,
 		    struct inode *inode, struct file *file,
 		    struct vm_area_struct *vma);
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct snd_info_entry {
@@ -74,6 +77,8 @@ struct snd_info_entry {
 	struct mutex access;
 	struct list_head children;
 	struct list_head list;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 #if defined(CONFIG_SND_OSSEMUL) && defined(CONFIG_SND_PROC_FS)
diff --git a/include/sound/jack.h b/include/sound/jack.h
index 1ed90e2..4c91b37 100644
--- a/include/sound/jack.h
+++ b/include/sound/jack.h
@@ -9,6 +9,7 @@
  */
 
 #include <sound/core.h>
+#include <linux/android_kabi.h>
 
 struct input_dev;
 
@@ -71,6 +72,8 @@ struct snd_jack {
 	int hw_status_cache;
 	void *private_data;
 	void (*private_free)(struct snd_jack *);
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 #ifdef CONFIG_SND_JACK
diff --git a/include/sound/pcm.h b/include/sound/pcm.h
index 27040b4..f9c6ad3 100644
--- a/include/sound/pcm.h
+++ b/include/sound/pcm.h
@@ -16,6 +16,7 @@
 #include <linux/bitops.h>
 #include <linux/pm_qos.h>
 #include <linux/refcount.h>
+#include <linux/android_kabi.h>
 
 #define snd_pcm_substream_chip(substream) ((substream)->private_data)
 #define snd_pcm_chip(pcm) ((pcm)->private_data)
@@ -77,6 +78,7 @@ struct snd_pcm_ops {
 			     unsigned long offset);
 	int (*mmap)(struct snd_pcm_substream *substream, struct vm_area_struct *vma);
 	int (*ack)(struct snd_pcm_substream *substream);
+	ANDROID_KABI_RESERVE(1);
 };
 
 /*
@@ -435,6 +437,8 @@ struct snd_pcm_runtime {
 	/* -- OSS things -- */
 	struct snd_pcm_oss_runtime oss;
 #endif
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
 };
 
 struct snd_pcm_group {		/* keep linked substreams */
@@ -487,6 +491,7 @@ struct snd_pcm_substream {
 	/* misc flags */
 	unsigned int hw_opened: 1;
 	unsigned int managed_buffer_alloc:1;
+	ANDROID_KABI_RESERVE(1);
 };
 
 #define SUBSTREAM_BUSY(substream) ((substream)->ref_count > 0)
@@ -511,6 +516,7 @@ struct snd_pcm_str {
 #endif
 	struct snd_kcontrol *chmap_kctl; /* channel-mapping controls */
 	struct device dev;
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct snd_pcm {
@@ -533,6 +539,7 @@ struct snd_pcm {
 #if IS_ENABLED(CONFIG_SND_PCM_OSS)
 	struct snd_pcm_oss oss;
 #endif
+	ANDROID_KABI_RESERVE(1);
 };
 
 /*
diff --git a/include/sound/soc.h b/include/sound/soc.h
index 37bbfc8..bdb95cf 100644
--- a/include/sound/soc.h
+++ b/include/sound/soc.h
@@ -19,6 +19,7 @@
 #include <linux/kernel.h>
 #include <linux/regmap.h>
 #include <linux/log2.h>
+#include <linux/android_kabi.h>
 #include <sound/core.h>
 #include <sound/pcm.h>
 #include <sound/compress_driver.h>
@@ -253,6 +254,14 @@
 	.get = xhandler_get, .put = xhandler_put, \
 	.private_value = SOC_DOUBLE_R_VALUE(reg_left, reg_right, xshift, \
 					    xmax, xinvert) }
+#define SOC_SINGLE_MULTI_EXT(xname, xreg, xshift, xmax, xinvert, xcount,\
+	xhandler_get, xhandler_put) \
+{	.iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
+	.info = snd_soc_info_multi_ext, \
+	.get = xhandler_get, .put = xhandler_put, \
+	.private_value = (unsigned long)&(struct soc_multi_mixer_control) \
+		{.reg = xreg, .shift = xshift, .rshift = xshift, .max = xmax, \
+		.count = xcount, .platform_max = xmax, .invert = xinvert} }
 #define SOC_SINGLE_EXT_TLV(xname, xreg, xshift, xmax, xinvert,\
 	 xhandler_get, xhandler_put, tlv_array) \
 {	.iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
@@ -606,6 +615,8 @@ int snd_soc_get_strobe(struct snd_kcontrol *kcontrol,
 	struct snd_ctl_elem_value *ucontrol);
 int snd_soc_put_strobe(struct snd_kcontrol *kcontrol,
 	struct snd_ctl_elem_value *ucontrol);
+int snd_soc_info_multi_ext(struct snd_kcontrol *kcontrol,
+	struct snd_ctl_elem_info *uinfo);
 
 /* SoC PCM stream information */
 struct snd_soc_pcm_stream {
@@ -752,6 +763,8 @@ struct snd_soc_dai_link {
 #ifdef CONFIG_SND_SOC_TOPOLOGY
 	struct snd_soc_dobj dobj; /* For topology */
 #endif
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 static inline struct snd_soc_dai_link_component*
@@ -1020,6 +1033,11 @@ struct snd_soc_card {
 	unsigned int component_chaining:1;
 
 	void *drvdata;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 #define for_each_card_prelinks(card, i, link)				\
 	for ((i) = 0;							\
@@ -1100,6 +1118,9 @@ struct snd_soc_pcm_runtime {
 	unsigned int fe_compr:1; /* for Dynamic PCM */
 
 	int num_components;
+
+	ANDROID_KABI_RESERVE(1);
+
 	struct snd_soc_component *components[]; /* CPU/Codec/Platform */
 };
 /* see soc_new_pcm_runtime()  */
@@ -1139,6 +1160,8 @@ struct soc_mixer_control {
 #ifdef CONFIG_SND_SOC_TOPOLOGY
 	struct snd_soc_dobj dobj;
 #endif
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct soc_bytes {
@@ -1165,6 +1188,11 @@ struct soc_mreg_control {
 	unsigned int regbase, regcount, nbits, invert;
 };
 
+struct soc_multi_mixer_control {
+	int min, max, platform_max, count;
+	unsigned int reg, rreg, shift, rshift, invert;
+};
+
 /* enumerated kcontrol */
 struct soc_enum {
 	int reg;
@@ -1178,6 +1206,8 @@ struct soc_enum {
 #ifdef CONFIG_SND_SOC_TOPOLOGY
 	struct snd_soc_dobj dobj;
 #endif
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 static inline bool snd_soc_volsw_is_stereo(struct soc_mixer_control *mc)
diff --git a/include/sound/timer.h b/include/sound/timer.h
index 760e132..b7695e4 100644
--- a/include/sound/timer.h
+++ b/include/sound/timer.h
@@ -10,6 +10,7 @@
 
 #include <sound/asound.h>
 #include <linux/interrupt.h>
+#include <linux/android_kabi.h>
 
 #define snd_timer_chip(timer) ((timer)->private_data)
 
@@ -52,6 +53,8 @@ struct snd_timer_hardware {
 	int (*stop) (struct snd_timer * timer);
 	int (*set_period) (struct snd_timer * timer, unsigned long period_num, unsigned long period_den);
 	int (*precise_resolution) (struct snd_timer * timer, unsigned long *num, unsigned long *den);
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct snd_timer {
@@ -77,6 +80,8 @@ struct snd_timer {
 	struct work_struct task_work;
 	int max_instances;	/* upper limit of timer instances */
 	int num_instances;	/* current number of timer instances */
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct snd_timer_instance {
@@ -106,6 +111,8 @@ struct snd_timer_instance {
 	struct list_head slave_list_head;
 	struct list_head slave_active_head;
 	struct snd_timer_instance *master;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /*
diff --git a/include/trace/events/f2fs.h b/include/trace/events/f2fs.h
index 5f58684..99cbc59 100644
--- a/include/trace/events/f2fs.h
+++ b/include/trace/events/f2fs.h
@@ -49,6 +49,7 @@ TRACE_DEFINE_ENUM(CP_TRIMMED);
 TRACE_DEFINE_ENUM(CP_PAUSE);
 TRACE_DEFINE_ENUM(CP_RESIZE);
 TRACE_DEFINE_ENUM(EX_READ);
+TRACE_DEFINE_ENUM(EX_BLOCK_AGE);
 
 #define show_block_type(type)						\
 	__print_symbolic(type,						\
@@ -155,6 +156,11 @@ TRACE_DEFINE_ENUM(EX_READ);
 		{ COMPRESS_ZSTD,	"ZSTD" },			\
 		{ COMPRESS_LZORLE,	"LZO-RLE" })
 
+#define show_extent_type(type)						\
+	__print_symbolic(type,						\
+		{ EX_READ,	"Read" },				\
+		{ EX_BLOCK_AGE,	"Block Age" })
+
 struct f2fs_sb_info;
 struct f2fs_io_info;
 struct extent_info;
@@ -563,10 +569,10 @@ TRACE_EVENT(f2fs_file_write_iter,
 );
 
 TRACE_EVENT(f2fs_map_blocks,
-	TP_PROTO(struct inode *inode, struct f2fs_map_blocks *map,
-				int create, int flag, int ret),
+	TP_PROTO(struct inode *inode, struct f2fs_map_blocks *map, int flag,
+		 int ret),
 
-	TP_ARGS(inode, map, create, flag, ret),
+	TP_ARGS(inode, map, flag, ret),
 
 	TP_STRUCT__entry(
 		__field(dev_t,	dev)
@@ -578,7 +584,6 @@ TRACE_EVENT(f2fs_map_blocks,
 		__field(int,	m_seg_type)
 		__field(bool,	m_may_create)
 		__field(bool,	m_multidev_dio)
-		__field(int,	create)
 		__field(int,	flag)
 		__field(int,	ret)
 	),
@@ -593,7 +598,6 @@ TRACE_EVENT(f2fs_map_blocks,
 		__entry->m_seg_type	= map->m_seg_type;
 		__entry->m_may_create	= map->m_may_create;
 		__entry->m_multidev_dio	= map->m_multidev_dio;
-		__entry->create		= create;
 		__entry->flag		= flag;
 		__entry->ret		= ret;
 	),
@@ -601,7 +605,7 @@ TRACE_EVENT(f2fs_map_blocks,
 	TP_printk("dev = (%d,%d), ino = %lu, file offset = %llu, "
 		"start blkaddr = 0x%llx, len = 0x%llx, flags = %u, "
 		"seg_type = %d, may_create = %d, multidevice = %d, "
-		"create = %d, flag = %d, err = %d",
+		"flag = %d, err = %d",
 		show_dev_ino(__entry),
 		(unsigned long long)__entry->m_lblk,
 		(unsigned long long)__entry->m_pblk,
@@ -610,7 +614,6 @@ TRACE_EVENT(f2fs_map_blocks,
 		__entry->m_seg_type,
 		__entry->m_may_create,
 		__entry->m_multidev_dio,
-		__entry->create,
 		__entry->flag,
 		__entry->ret)
 );
@@ -1442,7 +1445,7 @@ TRACE_EVENT(f2fs_readpages,
 
 TRACE_EVENT(f2fs_write_checkpoint,
 
-	TP_PROTO(struct super_block *sb, int reason, char *msg),
+	TP_PROTO(struct super_block *sb, int reason, const char *msg),
 
 	TP_ARGS(sb, reason, msg),
 
@@ -1581,7 +1584,7 @@ TRACE_EVENT(f2fs_lookup_extent_tree_start,
 	TP_printk("dev = (%d,%d), ino = %lu, pgofs = %u, type = %s",
 		show_dev_ino(__entry),
 		__entry->pgofs,
-		__entry->type == EX_READ ? "Read" : "N/A")
+		show_extent_type(__entry->type))
 );
 
 TRACE_EVENT_CONDITION(f2fs_lookup_read_extent_tree_end,
@@ -1620,6 +1623,45 @@ TRACE_EVENT_CONDITION(f2fs_lookup_read_extent_tree_end,
 		__entry->blk)
 );
 
+TRACE_EVENT_CONDITION(f2fs_lookup_age_extent_tree_end,
+
+	TP_PROTO(struct inode *inode, unsigned int pgofs,
+						struct extent_info *ei),
+
+	TP_ARGS(inode, pgofs, ei),
+
+	TP_CONDITION(ei),
+
+	TP_STRUCT__entry(
+		__field(dev_t,	dev)
+		__field(ino_t,	ino)
+		__field(unsigned int, pgofs)
+		__field(unsigned int, fofs)
+		__field(unsigned int, len)
+		__field(unsigned long long, age)
+		__field(unsigned long long, blocks)
+	),
+
+	TP_fast_assign(
+		__entry->dev = inode->i_sb->s_dev;
+		__entry->ino = inode->i_ino;
+		__entry->pgofs = pgofs;
+		__entry->fofs = ei->fofs;
+		__entry->len = ei->len;
+		__entry->age = ei->age;
+		__entry->blocks = ei->last_blocks;
+	),
+
+	TP_printk("dev = (%d,%d), ino = %lu, pgofs = %u, "
+		"age_ext_info(fofs: %u, len: %u, age: %llu, blocks: %llu)",
+		show_dev_ino(__entry),
+		__entry->pgofs,
+		__entry->fofs,
+		__entry->len,
+		__entry->age,
+		__entry->blocks)
+);
+
 TRACE_EVENT(f2fs_update_read_extent_tree_range,
 
 	TP_PROTO(struct inode *inode, unsigned int pgofs, unsigned int len,
@@ -1655,6 +1697,41 @@ TRACE_EVENT(f2fs_update_read_extent_tree_range,
 		__entry->c_len)
 );
 
+TRACE_EVENT(f2fs_update_age_extent_tree_range,
+
+	TP_PROTO(struct inode *inode, unsigned int pgofs, unsigned int len,
+					unsigned long long age,
+					unsigned long long last_blks),
+
+	TP_ARGS(inode, pgofs, len, age, last_blks),
+
+	TP_STRUCT__entry(
+		__field(dev_t,	dev)
+		__field(ino_t,	ino)
+		__field(unsigned int, pgofs)
+		__field(unsigned int, len)
+		__field(unsigned long long, age)
+		__field(unsigned long long, blocks)
+	),
+
+	TP_fast_assign(
+		__entry->dev = inode->i_sb->s_dev;
+		__entry->ino = inode->i_ino;
+		__entry->pgofs = pgofs;
+		__entry->len = len;
+		__entry->age = age;
+		__entry->blocks = last_blks;
+	),
+
+	TP_printk("dev = (%d,%d), ino = %lu, pgofs = %u, "
+				"len = %u, age = %llu, blocks = %llu",
+		show_dev_ino(__entry),
+		__entry->pgofs,
+		__entry->len,
+		__entry->age,
+		__entry->blocks)
+);
+
 TRACE_EVENT(f2fs_shrink_extent_tree,
 
 	TP_PROTO(struct f2fs_sb_info *sbi, unsigned int node_cnt,
@@ -1680,7 +1757,7 @@ TRACE_EVENT(f2fs_shrink_extent_tree,
 		show_dev(__entry->dev),
 		__entry->node_cnt,
 		__entry->tree_cnt,
-		__entry->type == EX_READ ? "Read" : "N/A")
+		show_extent_type(__entry->type))
 );
 
 TRACE_EVENT(f2fs_destroy_extent_tree,
@@ -1707,7 +1784,7 @@ TRACE_EVENT(f2fs_destroy_extent_tree,
 	TP_printk("dev = (%d,%d), ino = %lu, destroyed: node_cnt = %u, type = %s",
 		show_dev_ino(__entry),
 		__entry->node_cnt,
-		__entry->type == EX_READ ? "Read" : "N/A")
+		show_extent_type(__entry->type))
 );
 
 DECLARE_EVENT_CLASS(f2fs_sync_dirty_inodes,
@@ -1932,7 +2009,7 @@ TRACE_EVENT(f2fs_iostat,
 		__entry->fs_cdrio	= iostat[FS_CDATA_READ_IO];
 		__entry->fs_nrio	= iostat[FS_NODE_READ_IO];
 		__entry->fs_mrio	= iostat[FS_META_READ_IO];
-		__entry->fs_discard	= iostat[FS_DISCARD];
+		__entry->fs_discard	= iostat[FS_DISCARD_IO];
 	),
 
 	TP_printk("dev = (%d,%d), "
@@ -2005,33 +2082,33 @@ TRACE_EVENT(f2fs_iostat_latency,
 
 	TP_fast_assign(
 		__entry->dev		= sbi->sb->s_dev;
-		__entry->d_rd_peak	= iostat_lat[0][DATA].peak_lat;
-		__entry->d_rd_avg	= iostat_lat[0][DATA].avg_lat;
-		__entry->d_rd_cnt	= iostat_lat[0][DATA].cnt;
-		__entry->n_rd_peak	= iostat_lat[0][NODE].peak_lat;
-		__entry->n_rd_avg	= iostat_lat[0][NODE].avg_lat;
-		__entry->n_rd_cnt	= iostat_lat[0][NODE].cnt;
-		__entry->m_rd_peak	= iostat_lat[0][META].peak_lat;
-		__entry->m_rd_avg	= iostat_lat[0][META].avg_lat;
-		__entry->m_rd_cnt	= iostat_lat[0][META].cnt;
-		__entry->d_wr_s_peak	= iostat_lat[1][DATA].peak_lat;
-		__entry->d_wr_s_avg	= iostat_lat[1][DATA].avg_lat;
-		__entry->d_wr_s_cnt	= iostat_lat[1][DATA].cnt;
-		__entry->n_wr_s_peak	= iostat_lat[1][NODE].peak_lat;
-		__entry->n_wr_s_avg	= iostat_lat[1][NODE].avg_lat;
-		__entry->n_wr_s_cnt	= iostat_lat[1][NODE].cnt;
-		__entry->m_wr_s_peak	= iostat_lat[1][META].peak_lat;
-		__entry->m_wr_s_avg	= iostat_lat[1][META].avg_lat;
-		__entry->m_wr_s_cnt	= iostat_lat[1][META].cnt;
-		__entry->d_wr_as_peak	= iostat_lat[2][DATA].peak_lat;
-		__entry->d_wr_as_avg	= iostat_lat[2][DATA].avg_lat;
-		__entry->d_wr_as_cnt	= iostat_lat[2][DATA].cnt;
-		__entry->n_wr_as_peak	= iostat_lat[2][NODE].peak_lat;
-		__entry->n_wr_as_avg	= iostat_lat[2][NODE].avg_lat;
-		__entry->n_wr_as_cnt	= iostat_lat[2][NODE].cnt;
-		__entry->m_wr_as_peak	= iostat_lat[2][META].peak_lat;
-		__entry->m_wr_as_avg	= iostat_lat[2][META].avg_lat;
-		__entry->m_wr_as_cnt	= iostat_lat[2][META].cnt;
+		__entry->d_rd_peak	= iostat_lat[READ_IO][DATA].peak_lat;
+		__entry->d_rd_avg	= iostat_lat[READ_IO][DATA].avg_lat;
+		__entry->d_rd_cnt	= iostat_lat[READ_IO][DATA].cnt;
+		__entry->n_rd_peak	= iostat_lat[READ_IO][NODE].peak_lat;
+		__entry->n_rd_avg	= iostat_lat[READ_IO][NODE].avg_lat;
+		__entry->n_rd_cnt	= iostat_lat[READ_IO][NODE].cnt;
+		__entry->m_rd_peak	= iostat_lat[READ_IO][META].peak_lat;
+		__entry->m_rd_avg	= iostat_lat[READ_IO][META].avg_lat;
+		__entry->m_rd_cnt	= iostat_lat[READ_IO][META].cnt;
+		__entry->d_wr_s_peak	= iostat_lat[WRITE_SYNC_IO][DATA].peak_lat;
+		__entry->d_wr_s_avg	= iostat_lat[WRITE_SYNC_IO][DATA].avg_lat;
+		__entry->d_wr_s_cnt	= iostat_lat[WRITE_SYNC_IO][DATA].cnt;
+		__entry->n_wr_s_peak	= iostat_lat[WRITE_SYNC_IO][NODE].peak_lat;
+		__entry->n_wr_s_avg	= iostat_lat[WRITE_SYNC_IO][NODE].avg_lat;
+		__entry->n_wr_s_cnt	= iostat_lat[WRITE_SYNC_IO][NODE].cnt;
+		__entry->m_wr_s_peak	= iostat_lat[WRITE_SYNC_IO][META].peak_lat;
+		__entry->m_wr_s_avg	= iostat_lat[WRITE_SYNC_IO][META].avg_lat;
+		__entry->m_wr_s_cnt	= iostat_lat[WRITE_SYNC_IO][META].cnt;
+		__entry->d_wr_as_peak	= iostat_lat[WRITE_ASYNC_IO][DATA].peak_lat;
+		__entry->d_wr_as_avg	= iostat_lat[WRITE_ASYNC_IO][DATA].avg_lat;
+		__entry->d_wr_as_cnt	= iostat_lat[WRITE_ASYNC_IO][DATA].cnt;
+		__entry->n_wr_as_peak	= iostat_lat[WRITE_ASYNC_IO][NODE].peak_lat;
+		__entry->n_wr_as_avg	= iostat_lat[WRITE_ASYNC_IO][NODE].avg_lat;
+		__entry->n_wr_as_cnt	= iostat_lat[WRITE_ASYNC_IO][NODE].cnt;
+		__entry->m_wr_as_peak	= iostat_lat[WRITE_ASYNC_IO][META].peak_lat;
+		__entry->m_wr_as_avg	= iostat_lat[WRITE_ASYNC_IO][META].avg_lat;
+		__entry->m_wr_as_cnt	= iostat_lat[WRITE_ASYNC_IO][META].cnt;
 	),
 
 	TP_printk("dev = (%d,%d), "
diff --git a/include/trace/events/irq.h b/include/trace/events/irq.h
index eeceafa..da85851 100644
--- a/include/trace/events/irq.h
+++ b/include/trace/events/irq.h
@@ -160,6 +160,49 @@ DEFINE_EVENT(softirq, softirq_raise,
 	TP_ARGS(vec_nr)
 );
 
+DECLARE_EVENT_CLASS(tasklet,
+
+	TP_PROTO(void *func),
+
+	TP_ARGS(func),
+
+	TP_STRUCT__entry(
+		__field(	void *,	func)
+	),
+
+	TP_fast_assign(
+		__entry->func = func;
+	),
+
+	TP_printk("function=%ps", __entry->func)
+);
+
+/**
+ * tasklet_entry - called immediately before the tasklet is run
+ * @func:  tasklet callback or function being run
+ *
+ * Used to find individual tasklet execution time
+ */
+DEFINE_EVENT(tasklet, tasklet_entry,
+
+	TP_PROTO(void *func),
+
+	TP_ARGS(func)
+);
+
+/**
+ * tasklet_exit - called immediately after the tasklet is run
+ * @func:  tasklet callback or function being run
+ *
+ * Used to find individual tasklet execution time
+ */
+DEFINE_EVENT(tasklet, tasklet_exit,
+
+	TP_PROTO(void *func),
+
+	TP_ARGS(func)
+);
+
 #endif /*  _TRACE_IRQ_H */
 
 /* This part must be outside protection */
diff --git a/include/trace/events/rwmmio.h b/include/trace/events/rwmmio.h
index de41159..a43e5dd 100644
--- a/include/trace/events/rwmmio.h
+++ b/include/trace/events/rwmmio.h
@@ -12,12 +12,14 @@
 
 DECLARE_EVENT_CLASS(rwmmio_rw_template,
 
-	TP_PROTO(unsigned long caller, u64 val, u8 width, volatile void __iomem *addr),
+	TP_PROTO(unsigned long caller, unsigned long caller0, u64 val, u8 width,
+		 volatile void __iomem *addr),
 
-	TP_ARGS(caller, val, width, addr),
+	TP_ARGS(caller, caller0, val, width, addr),
 
 	TP_STRUCT__entry(
 		__field(unsigned long, caller)
+		__field(unsigned long, caller0)
 		__field(unsigned long, addr)
 		__field(u64, val)
 		__field(u8, width)
@@ -25,56 +27,64 @@ DECLARE_EVENT_CLASS(rwmmio_rw_template,
 
 	TP_fast_assign(
 		__entry->caller = caller;
+		__entry->caller0 = caller0;
 		__entry->val = val;
 		__entry->addr = (unsigned long)addr;
 		__entry->width = width;
 	),
 
-	TP_printk("%pS width=%d val=%#llx addr=%#lx",
-		(void *)__entry->caller, __entry->width,
+	TP_printk("%pS -> %pS width=%d val=%#llx addr=%#lx",
+		(void *)__entry->caller0, (void *)__entry->caller, __entry->width,
 		__entry->val, __entry->addr)
 );
 
 DEFINE_EVENT(rwmmio_rw_template, rwmmio_write,
-	TP_PROTO(unsigned long caller, u64 val, u8 width, volatile void __iomem *addr),
-	TP_ARGS(caller, val, width, addr)
+	TP_PROTO(unsigned long caller, unsigned long caller0, u64 val, u8 width,
+		 volatile void __iomem *addr),
+	TP_ARGS(caller, caller0, val, width, addr)
 );
 
 DEFINE_EVENT(rwmmio_rw_template, rwmmio_post_write,
-	TP_PROTO(unsigned long caller, u64 val, u8 width, volatile void __iomem *addr),
-	TP_ARGS(caller, val, width, addr)
+	TP_PROTO(unsigned long caller, unsigned long caller0, u64 val, u8 width,
+		 volatile void __iomem *addr),
+	TP_ARGS(caller, caller0, val, width, addr)
 );
 
 TRACE_EVENT(rwmmio_read,
 
-	TP_PROTO(unsigned long caller, u8 width, const volatile void __iomem *addr),
+	TP_PROTO(unsigned long caller, unsigned long caller0, u8 width,
+		 const volatile void __iomem *addr),
 
-	TP_ARGS(caller, width, addr),
+	TP_ARGS(caller, caller0, width, addr),
 
 	TP_STRUCT__entry(
 		__field(unsigned long, caller)
+		__field(unsigned long, caller0)
 		__field(unsigned long, addr)
 		__field(u8, width)
 	),
 
 	TP_fast_assign(
 		__entry->caller = caller;
+		__entry->caller0 = caller0;
 		__entry->addr = (unsigned long)addr;
 		__entry->width = width;
 	),
 
-	TP_printk("%pS width=%d addr=%#lx",
-		 (void *)__entry->caller, __entry->width, __entry->addr)
+	TP_printk("%pS -> %pS width=%d addr=%#lx",
+		 (void *)__entry->caller0, (void *)__entry->caller, __entry->width, __entry->addr)
 );
 
 TRACE_EVENT(rwmmio_post_read,
 
-	TP_PROTO(unsigned long caller, u64 val, u8 width, const volatile void __iomem *addr),
+	TP_PROTO(unsigned long caller, unsigned long caller0, u64 val, u8 width,
+		 const volatile void __iomem *addr),
 
-	TP_ARGS(caller, val, width, addr),
+	TP_ARGS(caller, caller0, val, width, addr),
 
 	TP_STRUCT__entry(
 		__field(unsigned long, caller)
+		__field(unsigned long, caller0)
 		__field(unsigned long, addr)
 		__field(u64, val)
 		__field(u8, width)
@@ -82,13 +92,14 @@ TRACE_EVENT(rwmmio_post_read,
 
 	TP_fast_assign(
 		__entry->caller = caller;
+		__entry->caller0 = caller0;
 		__entry->val = val;
 		__entry->addr = (unsigned long)addr;
 		__entry->width = width;
 	),
 
-	TP_printk("%pS width=%d val=%#llx addr=%#lx",
-		 (void *)__entry->caller, __entry->width,
+	TP_printk("%pS -> %pS width=%d val=%#llx addr=%#lx",
+		 (void *)__entry->caller0, (void *)__entry->caller, __entry->width,
 		 __entry->val, __entry->addr)
 );
 
diff --git a/include/trace/events/sched.h b/include/trace/events/sched.h
index fbb99a6..cd969a6 100644
--- a/include/trace/events/sched.h
+++ b/include/trace/events/sched.h
@@ -488,6 +488,30 @@ DEFINE_EVENT_SCHEDSTAT(sched_stat_template, sched_stat_blocked,
 	     TP_ARGS(tsk, delay));
 
 /*
+ * Tracepoint for recording the cause of uninterruptible sleep.
+ */
+TRACE_EVENT(sched_blocked_reason,
+
+	TP_PROTO(struct task_struct *tsk),
+
+	TP_ARGS(tsk),
+
+	TP_STRUCT__entry(
+		__field( pid_t,	pid	)
+		__field( void*, caller	)
+		__field( bool, io_wait	)
+	),
+
+	TP_fast_assign(
+		__entry->pid	= tsk->pid;
+		__entry->caller = (void *)__get_wchan(tsk);
+		__entry->io_wait = tsk->in_iowait;
+	),
+
+	TP_printk("pid=%d iowait=%d caller=%pS", __entry->pid, __entry->io_wait, __entry->caller)
+);
+
+/*
  * Tracepoint for accounting runtime (time the task is executing
  * on a CPU).
  */
diff --git a/include/trace/events/ufs.h b/include/trace/events/ufs.h
index 599739e..992517ac 100644
--- a/include/trace/events/ufs.h
+++ b/include/trace/events/ufs.h
@@ -268,20 +268,21 @@ DEFINE_EVENT(ufshcd_template, ufshcd_wl_runtime_resume,
 
 TRACE_EVENT(ufshcd_command,
 	TP_PROTO(const char *dev_name, enum ufs_trace_str_t str_t,
-		 unsigned int tag, u32 doorbell, int transfer_len, u32 intr,
-		 u64 lba, u8 opcode, u8 group_id),
+		 unsigned int tag, u32 doorbell, u32 hwq_id, int transfer_len,
+		 u32 intr, u64 lba, u8 opcode, u8 group_id),
 
-	TP_ARGS(dev_name, str_t, tag, doorbell, transfer_len,
-				intr, lba, opcode, group_id),
+	TP_ARGS(dev_name, str_t, tag, doorbell, hwq_id, transfer_len,
+			intr, lba, opcode, group_id),
 
 	TP_STRUCT__entry(
 		__string(dev_name, dev_name)
 		__field(enum ufs_trace_str_t, str_t)
 		__field(unsigned int, tag)
 		__field(u32, doorbell)
-		__field(int, transfer_len)
+		__field(u32, hwq_id)
 		__field(u32, intr)
 		__field(u64, lba)
+		__field(int, transfer_len)
 		__field(u8, opcode)
 		__field(u8, group_id)
 	),
@@ -291,19 +292,20 @@ TRACE_EVENT(ufshcd_command,
 		__entry->str_t = str_t;
 		__entry->tag = tag;
 		__entry->doorbell = doorbell;
-		__entry->transfer_len = transfer_len;
+		__entry->hwq_id = hwq_id;
 		__entry->intr = intr;
 		__entry->lba = lba;
+		__entry->transfer_len = transfer_len;
 		__entry->opcode = opcode;
 		__entry->group_id = group_id;
 	),
 
 	TP_printk(
-		"%s: %s: tag: %u, DB: 0x%x, size: %d, IS: %u, LBA: %llu, opcode: 0x%x (%s), group_id: 0x%x",
+		"%s: %s: tag: %u, DB: 0x%x, size: %d, IS: %u, LBA: %llu, opcode: 0x%x (%s), group_id: 0x%x, hwq_id: %d",
 		show_ufs_cmd_trace_str(__entry->str_t), __get_str(dev_name),
-		__entry->tag, __entry->doorbell, __entry->transfer_len,
-		__entry->intr, __entry->lba, (u32)__entry->opcode,
-		str_opcode(__entry->opcode), (u32)__entry->group_id
+		__entry->tag, __entry->doorbell, __entry->transfer_len, __entry->intr,
+		__entry->lba, (u32)__entry->opcode, str_opcode(__entry->opcode),
+		(u32)__entry->group_id, __entry->hwq_id
 	)
 );
 
diff --git a/include/trace/hooks/audio_usboffload.h b/include/trace/hooks/audio_usboffload.h
new file mode 100644
index 0000000..e957fb1
--- /dev/null
+++ b/include/trace/hooks/audio_usboffload.h
@@ -0,0 +1,25 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM audio_usboffload
+
+#define TRACE_INCLUDE_PATH trace/hooks
+
+#if !defined(_TRACE_HOOK_AUDIO_USBOFFLOAD_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_AUDIO_USBOFFLOAD_H
+
+#include <trace/hooks/vendor_hooks.h>
+
+struct usb_interface;
+struct snd_usb_audio;
+
+DECLARE_HOOK(android_vh_audio_usb_offload_connect,
+	TP_PROTO(struct usb_interface *intf, struct snd_usb_audio *chip),
+	TP_ARGS(intf, chip));
+
+DECLARE_RESTRICTED_HOOK(android_rvh_audio_usb_offload_disconnect,
+	TP_PROTO(struct usb_interface *intf),
+	TP_ARGS(intf), 1);
+
+#endif /* _TRACE_HOOK_AUDIO_USBOFFLOAD_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/avc.h b/include/trace/hooks/avc.h
new file mode 100644
index 0000000..5100dde
--- /dev/null
+++ b/include/trace/hooks/avc.h
@@ -0,0 +1,32 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM avc
+
+#define TRACE_INCLUDE_PATH trace/hooks
+#if !defined(_TRACE_HOOK_AVC_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_AVC_H
+#include <trace/hooks/vendor_hooks.h>
+/*
+ * Following tracepoints are not exported in tracefs and provide a
+ * mechanism for vendor modules to hook and extend functionality
+ */
+struct avc_node;
+DECLARE_RESTRICTED_HOOK(android_rvh_selinux_avc_insert,
+	TP_PROTO(const struct avc_node *node),
+	TP_ARGS(node), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_selinux_avc_node_delete,
+	TP_PROTO(const struct avc_node *node),
+	TP_ARGS(node), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_selinux_avc_node_replace,
+	TP_PROTO(const struct avc_node *old, const struct avc_node *new),
+	TP_ARGS(old, new), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_selinux_avc_lookup,
+	TP_PROTO(const struct avc_node *node, u32 ssid, u32 tsid, u16 tclass),
+	TP_ARGS(node, ssid, tsid, tclass), 1);
+
+#endif /* _TRACE_HOOK_AVC_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/binder.h b/include/trace/hooks/binder.h
new file mode 100644
index 0000000..991e9b1
--- /dev/null
+++ b/include/trace/hooks/binder.h
@@ -0,0 +1,99 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM binder
+#undef TRACE_INCLUDE_PATH
+#define TRACE_INCLUDE_PATH trace/hooks
+#if !defined(_TRACE_HOOK_BINDER_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_BINDER_H
+#include <trace/hooks/vendor_hooks.h>
+/*
+ * Following tracepoints are not exported in tracefs and provide a
+ * mechanism for vendor modules to hook and extend functionality
+ */
+struct binder_transaction;
+struct task_struct;
+DECLARE_HOOK(android_vh_binder_transaction_init,
+	TP_PROTO(struct binder_transaction *t),
+	TP_ARGS(t));
+DECLARE_HOOK(android_vh_binder_priority_skip,
+	TP_PROTO(struct task_struct *task, bool *skip),
+	TP_ARGS(task, skip));
+DECLARE_HOOK(android_vh_binder_set_priority,
+	TP_PROTO(struct binder_transaction *t, struct task_struct *task),
+	TP_ARGS(t, task));
+DECLARE_HOOK(android_vh_binder_restore_priority,
+	TP_PROTO(struct binder_transaction *t, struct task_struct *task),
+	TP_ARGS(t, task));
+struct binder_proc;
+struct binder_thread;
+DECLARE_HOOK(android_vh_binder_wakeup_ilocked,
+	TP_PROTO(struct task_struct *task, bool sync, struct binder_proc *proc),
+	TP_ARGS(task, sync, proc));
+DECLARE_HOOK(android_vh_binder_wait_for_work,
+	TP_PROTO(bool do_proc_work, struct binder_thread *tsk, struct binder_proc *proc),
+	TP_ARGS(do_proc_work, tsk, proc));
+DECLARE_HOOK(android_vh_sync_txn_recvd,
+	TP_PROTO(struct task_struct *tsk, struct task_struct *from),
+	TP_ARGS(tsk, from));
+DECLARE_HOOK(android_vh_binder_proc_transaction_finish,
+	TP_PROTO(struct binder_proc *proc, struct binder_transaction *t,
+		struct task_struct *binder_th_task, bool pending_async, bool sync),
+	TP_ARGS(proc, t, binder_th_task, pending_async, sync));
+DECLARE_HOOK(android_vh_binder_looper_state_registered,
+	TP_PROTO(struct binder_thread *thread, struct binder_proc *proc),
+	TP_ARGS(thread, proc));
+DECLARE_HOOK(android_vh_binder_thread_read,
+	TP_PROTO(struct list_head **list, struct binder_proc *proc,
+		struct binder_thread *thread),
+	TP_ARGS(list, proc, thread));
+DECLARE_HOOK(android_vh_binder_free_proc,
+	TP_PROTO(struct binder_proc *proc),
+	TP_ARGS(proc));
+DECLARE_HOOK(android_vh_binder_thread_release,
+	TP_PROTO(struct binder_proc *proc, struct binder_thread *thread),
+	TP_ARGS(proc, thread));
+DECLARE_HOOK(android_vh_binder_read_done,
+	TP_PROTO(struct binder_proc *proc, struct binder_thread *thread),
+	TP_ARGS(proc, thread));
+DECLARE_HOOK(android_vh_binder_has_work_ilocked,
+	TP_PROTO(struct binder_thread *thread, bool do_proc_work, int *ret),
+	TP_ARGS(thread, do_proc_work, ret));
+DECLARE_HOOK(android_vh_binder_preset,
+	TP_PROTO(struct hlist_head *hhead, struct mutex *lock),
+	TP_ARGS(hhead, lock));
+DECLARE_HOOK(android_vh_binder_proc_transaction_entry,
+	TP_PROTO(struct binder_proc *proc, struct binder_transaction *t,
+	struct binder_thread **thread, int node_debug_id, bool pending_async,
+	bool sync, bool *skip),
+	TP_ARGS(proc, t, thread, node_debug_id, pending_async, sync, skip));
+DECLARE_HOOK(android_vh_binder_select_worklist_ilocked,
+	TP_PROTO(struct list_head **list, struct binder_thread *thread, struct binder_proc *proc,
+	int wait_for_proc_work),
+	TP_ARGS(list, thread, proc, wait_for_proc_work));
+DECLARE_HOOK(android_vh_binder_alloc_new_buf_locked,
+	TP_PROTO(size_t size, size_t *free_async_space, int is_async),
+	TP_ARGS(size, free_async_space, is_async));
+struct binder_transaction_data;
+DECLARE_HOOK(android_vh_binder_reply,
+	TP_PROTO(struct binder_proc *target_proc, struct binder_proc *proc,
+		struct binder_thread *thread, struct binder_transaction_data *tr),
+	TP_ARGS(target_proc, proc, thread, tr));
+DECLARE_HOOK(android_vh_binder_trans,
+	TP_PROTO(struct binder_proc *target_proc, struct binder_proc *proc,
+		struct binder_thread *thread, struct binder_transaction_data *tr),
+	TP_ARGS(target_proc, proc, thread, tr));
+DECLARE_HOOK(android_vh_binder_proc_transaction,
+	TP_PROTO(struct task_struct *caller_task, struct task_struct *binder_proc_task,
+		struct task_struct *binder_th_task, int node_debug_id,
+		unsigned int code, bool pending_async),
+	TP_ARGS(caller_task, binder_proc_task, binder_th_task, node_debug_id, code, pending_async));
+DECLARE_HOOK(android_vh_binder_new_ref,
+	TP_PROTO(struct task_struct *proc, uint32_t ref_desc, int node_debug_id),
+	TP_ARGS(proc, ref_desc, node_debug_id));
+DECLARE_HOOK(android_vh_binder_del_ref,
+	TP_PROTO(struct task_struct *proc, uint32_t ref_desc),
+	TP_ARGS(proc, ref_desc));
+
+#endif /* _TRACE_HOOK_BINDER_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/bl_hib.h b/include/trace/hooks/bl_hib.h
new file mode 100644
index 0000000..7a5dd31
--- /dev/null
+++ b/include/trace/hooks/bl_hib.h
@@ -0,0 +1,44 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM bl_hib
+
+#define TRACE_INCLUDE_PATH trace/hooks
+
+#if !defined(_TRACE_HOOK_BL_HIB_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_BL_HIB_H
+
+#include <trace/hooks/vendor_hooks.h>
+
+struct block_device;
+
+DECLARE_HOOK(android_vh_check_hibernation_swap,
+	TP_PROTO(struct block_device *resume_block, bool *hib_swap),
+	TP_ARGS(resume_block, hib_swap));
+
+DECLARE_HOOK(android_vh_save_cpu_resume,
+	TP_PROTO(u64 *addr, u64 phys_addr),
+	TP_ARGS(addr, phys_addr));
+
+DECLARE_HOOK(android_vh_save_hib_resume_bdev,
+	TP_PROTO(struct block_device *hib_resume_bdev),
+	TP_ARGS(hib_resume_bdev));
+
+DECLARE_HOOK(android_vh_encrypt_page,
+	TP_PROTO(void *buf),
+	TP_ARGS(buf));
+
+DECLARE_HOOK(android_vh_init_aes_encrypt,
+	TP_PROTO(void *unused),
+	TP_ARGS(unused));
+
+DECLARE_HOOK(android_vh_skip_swap_map_write,
+	TP_PROTO(bool *skip),
+	TP_ARGS(skip));
+
+DECLARE_HOOK(android_vh_post_image_save,
+	TP_PROTO(unsigned short root_swap),
+	TP_ARGS(root_swap));
+
+#endif /* _TRACE_HOOK_BL_HIB_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/bug.h b/include/trace/hooks/bug.h
new file mode 100644
index 0000000..bbae73f
--- /dev/null
+++ b/include/trace/hooks/bug.h
@@ -0,0 +1,16 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM bug
+#define TRACE_INCLUDE_PATH trace/hooks
+
+#if !defined(_TRACE_HOOK_BUG_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_BUG_H
+#include <trace/hooks/vendor_hooks.h>
+
+DECLARE_RESTRICTED_HOOK(android_rvh_report_bug,
+	TP_PROTO(const char *file, unsigned int line, unsigned long bugaddr),
+	TP_ARGS(file, line, bugaddr), 1);
+
+#endif /* _TRACE_HOOK_BUG_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/cgroup.h b/include/trace/hooks/cgroup.h
new file mode 100644
index 0000000..15582cc
--- /dev/null
+++ b/include/trace/hooks/cgroup.h
@@ -0,0 +1,44 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM cgroup
+#undef TRACE_INCLUDE_PATH
+#define TRACE_INCLUDE_PATH trace/hooks
+#if !defined(_TRACE_HOOK_CGROUP_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_CGROUP_H
+#include <trace/hooks/vendor_hooks.h>
+
+struct task_struct;
+DECLARE_HOOK(android_vh_cgroup_set_task,
+	TP_PROTO(int ret, struct task_struct *task),
+	TP_ARGS(ret, task));
+
+DECLARE_RESTRICTED_HOOK(android_rvh_refrigerator,
+	TP_PROTO(bool f),
+	TP_ARGS(f), 1);
+
+struct cgroup_subsys;
+struct cgroup_taskset;
+DECLARE_HOOK(android_vh_cgroup_attach,
+	TP_PROTO(struct cgroup_subsys *ss, struct cgroup_taskset *tset),
+	TP_ARGS(ss, tset))
+DECLARE_RESTRICTED_HOOK(android_rvh_cgroup_force_kthread_migration,
+	TP_PROTO(struct task_struct *tsk, struct cgroup *dst_cgrp, bool *force_migration),
+	TP_ARGS(tsk, dst_cgrp, force_migration), 1);
+
+struct cgroup_taskset;
+struct cgroup_subsys;
+
+DECLARE_RESTRICTED_HOOK(android_rvh_cpuset_fork,
+	TP_PROTO(struct task_struct *p, bool *inherit_cpus),
+	TP_ARGS(p, inherit_cpus), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_cpu_cgroup_attach,
+	TP_PROTO(struct cgroup_taskset *tset),
+	TP_ARGS(tset), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_cpu_cgroup_online,
+	TP_PROTO(struct cgroup_subsys_state *css),
+	TP_ARGS(css), 1);
+#endif
+
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/cpufreq.h b/include/trace/hooks/cpufreq.h
new file mode 100644
index 0000000..a18ddba
--- /dev/null
+++ b/include/trace/hooks/cpufreq.h
@@ -0,0 +1,48 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM cpufreq
+
+#define TRACE_INCLUDE_PATH trace/hooks
+
+#if !defined(_TRACE_HOOK_CPUFREQ_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_CPUFREQ_H
+
+#include <trace/hooks/vendor_hooks.h>
+
+struct cpufreq_policy;
+
+DECLARE_RESTRICTED_HOOK(android_rvh_show_max_freq,
+	TP_PROTO(struct cpufreq_policy *policy, unsigned int *max_freq),
+	TP_ARGS(policy, max_freq), 1);
+
+DECLARE_HOOK(android_vh_freq_table_limits,
+	TP_PROTO(struct cpufreq_policy *policy, unsigned int min_freq,
+		 unsigned int max_freq),
+	TP_ARGS(policy, min_freq, max_freq));
+
+DECLARE_HOOK(android_vh_cpufreq_acct_update_power,
+	TP_PROTO(u64 cputime, struct task_struct *p, unsigned int state),
+	TP_ARGS(cputime, p, state));
+
+DECLARE_RESTRICTED_HOOK(android_rvh_cpufreq_transition,
+	TP_PROTO(struct cpufreq_policy *policy),
+	TP_ARGS(policy), 1);
+
+DECLARE_HOOK(android_vh_cpufreq_resolve_freq,
+	TP_PROTO(struct cpufreq_policy *policy, unsigned int *target_freq,
+		unsigned int old_target_freq),
+	TP_ARGS(policy, target_freq, old_target_freq));
+
+DECLARE_HOOK(android_vh_cpufreq_fast_switch,
+	TP_PROTO(struct cpufreq_policy *policy, unsigned int *target_freq,
+		unsigned int old_target_freq),
+	TP_ARGS(policy, target_freq, old_target_freq));
+
+DECLARE_HOOK(android_vh_cpufreq_target,
+	TP_PROTO(struct cpufreq_policy *policy, unsigned int *target_freq,
+		unsigned int old_target_freq),
+	TP_ARGS(policy, target_freq, old_target_freq));
+
+#endif /* _TRACE_HOOK_CPUFREQ_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/cpuidle.h b/include/trace/hooks/cpuidle.h
new file mode 100644
index 0000000..b1ee27e
--- /dev/null
+++ b/include/trace/hooks/cpuidle.h
@@ -0,0 +1,24 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM cpuidle
+
+#define TRACE_INCLUDE_PATH trace/hooks
+
+#if !defined(_TRACE_HOOK_CPUIDLE_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_CPUIDLE_H
+
+#include <trace/hooks/vendor_hooks.h>
+
+struct cpuidle_device;
+
+DECLARE_HOOK(android_vh_cpu_idle_enter,
+	TP_PROTO(int *state, struct cpuidle_device *dev),
+	TP_ARGS(state, dev))
+DECLARE_HOOK(android_vh_cpu_idle_exit,
+	TP_PROTO(int state, struct cpuidle_device *dev),
+	TP_ARGS(state, dev))
+
+#endif /* _TRACE_HOOK_CPUIDLE_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
+
diff --git a/include/trace/hooks/cpuidle_psci.h b/include/trace/hooks/cpuidle_psci.h
new file mode 100644
index 0000000..eef0032
--- /dev/null
+++ b/include/trace/hooks/cpuidle_psci.h
@@ -0,0 +1,24 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM cpuidle_psci
+#define TRACE_INCLUDE_PATH trace/hooks
+#if !defined(_TRACE_HOOK_CPUIDLE_PSCI_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_CPUIDLE_PSCI_H
+#include <trace/hooks/vendor_hooks.h>
+/*
+ * Following tracepoints are not exported in tracefs and provide a
+ * mechanism for vendor modules to hook and extend functionality
+ */
+
+struct cpuidle_device;
+DECLARE_HOOK(android_vh_cpuidle_psci_enter,
+	TP_PROTO(struct cpuidle_device *dev, bool s2idle),
+	TP_ARGS(dev, s2idle));
+
+DECLARE_HOOK(android_vh_cpuidle_psci_exit,
+	TP_PROTO(struct cpuidle_device *dev, bool s2idle),
+	TP_ARGS(dev, s2idle));
+
+#endif /* _TRACE_HOOK_CPUIDLE_PSCI_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/creds.h b/include/trace/hooks/creds.h
new file mode 100644
index 0000000..69a6808
--- /dev/null
+++ b/include/trace/hooks/creds.h
@@ -0,0 +1,33 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM creds
+
+#define TRACE_INCLUDE_PATH trace/hooks
+#if !defined(_TRACE_HOOK_CREDS_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_CREDS_H
+#include <trace/hooks/vendor_hooks.h>
+/*
+ * Following tracepoints are not exported in tracefs and provide a
+ * mechanism for vendor modules to hook and extend functionality
+ */
+struct cred;
+struct task_struct;
+DECLARE_RESTRICTED_HOOK(android_rvh_commit_creds,
+	TP_PROTO(const struct task_struct *task, const struct cred *new),
+	TP_ARGS(task, new), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_exit_creds,
+	TP_PROTO(const struct task_struct *task, const struct cred *cred),
+	TP_ARGS(task, cred), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_override_creds,
+	TP_PROTO(const struct task_struct *task, const struct cred *new),
+	TP_ARGS(task, new), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_revert_creds,
+	TP_PROTO(const struct task_struct *task, const struct cred *old),
+	TP_ARGS(task, old), 1);
+
+#endif /* _TRACE_HOOK_CREDS_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/debug.h b/include/trace/hooks/debug.h
new file mode 100644
index 0000000..5a20141
--- /dev/null
+++ b/include/trace/hooks/debug.h
@@ -0,0 +1,20 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM debug
+
+#define TRACE_INCLUDE_PATH trace/hooks
+
+#if !defined(_TRACE_HOOK_DEBUG_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_DEBUG_H
+
+#include <trace/hooks/vendor_hooks.h>
+
+struct pt_regs;
+
+DECLARE_HOOK(android_vh_ipi_stop,
+	TP_PROTO(struct pt_regs *regs),
+	TP_ARGS(regs))
+
+#endif /* _TRACE_HOOK_DEBUG_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/dmabuf.h b/include/trace/hooks/dmabuf.h
new file mode 100644
index 0000000..85688eb
--- /dev/null
+++ b/include/trace/hooks/dmabuf.h
@@ -0,0 +1,21 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM dmabuf
+
+#define TRACE_INCLUDE_PATH trace/hooks
+
+#if !defined(_TRACE_HOOK_DMA_BUF_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_DMA_BUF_H
+
+struct dma_buf;
+
+#include <trace/hooks/vendor_hooks.h>
+
+DECLARE_HOOK(android_vh_ignore_dmabuf_vmap_bounds,
+	     TP_PROTO(struct dma_buf *dma_buf, bool *ignore_bounds),
+	     TP_ARGS(dma_buf, ignore_bounds));
+
+#endif /* _TRACE_HOOK_DMA_BUF_H */
+
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/dtask.h b/include/trace/hooks/dtask.h
new file mode 100644
index 0000000..cbf3dfd
--- /dev/null
+++ b/include/trace/hooks/dtask.h
@@ -0,0 +1,98 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM dtask
+#define TRACE_INCLUDE_PATH trace/hooks
+
+#if !defined(_TRACE_HOOK_DTASK_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_DTASK_H
+#include <trace/hooks/vendor_hooks.h>
+/*
+ * Following tracepoints are not exported in tracefs and provide a
+ * mechanism for vendor modules to hook and extend functionality
+ */
+
+struct mutex;
+struct rt_mutex_base;
+struct rw_semaphore;
+struct task_struct;
+
+DECLARE_HOOK(android_vh_mutex_wait_start,
+	TP_PROTO(struct mutex *lock),
+	TP_ARGS(lock));
+DECLARE_HOOK(android_vh_mutex_wait_finish,
+	TP_PROTO(struct mutex *lock),
+	TP_ARGS(lock));
+DECLARE_HOOK(android_vh_mutex_opt_spin_start,
+	TP_PROTO(struct mutex *lock, bool *time_out, int *cnt),
+	TP_ARGS(lock, time_out, cnt));
+DECLARE_HOOK(android_vh_mutex_opt_spin_finish,
+	TP_PROTO(struct mutex *lock, bool taken),
+	TP_ARGS(lock, taken));
+DECLARE_HOOK(android_vh_mutex_can_spin_on_owner,
+	TP_PROTO(struct mutex *lock, int *retval),
+	TP_ARGS(lock, retval));
+DECLARE_HOOK(android_vh_mutex_init,
+	TP_PROTO(struct mutex *lock),
+	TP_ARGS(lock));
+
+DECLARE_HOOK(android_vh_rtmutex_wait_start,
+	TP_PROTO(struct rt_mutex_base *lock),
+	TP_ARGS(lock));
+DECLARE_HOOK(android_vh_rtmutex_wait_finish,
+	TP_PROTO(struct rt_mutex_base *lock),
+	TP_ARGS(lock));
+
+DECLARE_HOOK(android_vh_rwsem_read_wait_start,
+	TP_PROTO(struct rw_semaphore *sem),
+	TP_ARGS(sem));
+DECLARE_HOOK(android_vh_rwsem_read_wait_finish,
+	TP_PROTO(struct rw_semaphore *sem),
+	TP_ARGS(sem));
+DECLARE_HOOK(android_vh_rwsem_write_wait_start,
+	TP_PROTO(struct rw_semaphore *sem),
+	TP_ARGS(sem));
+DECLARE_HOOK(android_vh_rwsem_write_wait_finish,
+	TP_PROTO(struct rw_semaphore *sem),
+	TP_ARGS(sem));
+DECLARE_HOOK(android_vh_rwsem_opt_spin_start,
+	TP_PROTO(struct rw_semaphore *sem, bool *time_out, int *cnt, bool chk_only),
+	TP_ARGS(sem, time_out, cnt, chk_only));
+DECLARE_HOOK(android_vh_rwsem_opt_spin_finish,
+	TP_PROTO(struct rw_semaphore *sem, bool taken),
+	TP_ARGS(sem, taken));
+DECLARE_HOOK(android_vh_rwsem_can_spin_on_owner,
+	TP_PROTO(struct rw_semaphore *sem, bool *ret),
+	TP_ARGS(sem, ret));
+
+DECLARE_HOOK(android_vh_sched_show_task,
+	TP_PROTO(struct task_struct *task),
+	TP_ARGS(task));
+
+DECLARE_HOOK(android_vh_record_mutex_lock_starttime,
+	TP_PROTO(struct task_struct *tsk, unsigned long settime_jiffies),
+	TP_ARGS(tsk, settime_jiffies));
+DECLARE_HOOK(android_vh_record_rtmutex_lock_starttime,
+	TP_PROTO(struct task_struct *tsk, unsigned long settime_jiffies),
+	TP_ARGS(tsk, settime_jiffies));
+DECLARE_HOOK(android_vh_record_rwsem_lock_starttime,
+	TP_PROTO(struct task_struct *tsk, unsigned long settime_jiffies),
+	TP_ARGS(tsk, settime_jiffies));
+DECLARE_HOOK(android_vh_record_pcpu_rwsem_starttime,
+	TP_PROTO(struct task_struct *tsk, unsigned long settime_jiffies),
+	TP_ARGS(tsk, settime_jiffies));
+
+struct mutex_waiter;
+DECLARE_HOOK(android_vh_alter_mutex_list_add,
+	TP_PROTO(struct mutex *lock,
+		struct mutex_waiter *waiter,
+		struct list_head *list,
+		bool *already_on_list),
+	TP_ARGS(lock, waiter, list, already_on_list));
+DECLARE_HOOK(android_vh_mutex_unlock_slowpath,
+	TP_PROTO(struct mutex *lock),
+	TP_ARGS(lock));
+
+#endif /* _TRACE_HOOK_DTASK_H */
+
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/epoch.h b/include/trace/hooks/epoch.h
new file mode 100644
index 0000000..ccee2d8
--- /dev/null
+++ b/include/trace/hooks/epoch.h
@@ -0,0 +1,22 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM epoch
+
+#define TRACE_INCLUDE_PATH trace/hooks
+
+#if !defined(_TRACE_HOOK_EPOCH_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_EPOCH_H
+
+#include <trace/hooks/vendor_hooks.h>
+
+DECLARE_HOOK(android_vh_show_suspend_epoch_val,
+	TP_PROTO(u64 suspend_ns, u64 suspend_cycles),
+	TP_ARGS(suspend_ns, suspend_cycles));
+
+DECLARE_HOOK(android_vh_show_resume_epoch_val,
+	TP_PROTO(u64 resume_cycles),
+	TP_ARGS(resume_cycles));
+
+#endif /* _TRACE_HOOK_EPOCH_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/fault.h b/include/trace/hooks/fault.h
new file mode 100644
index 0000000..d3e26ea
--- /dev/null
+++ b/include/trace/hooks/fault.h
@@ -0,0 +1,26 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM fault
+#define TRACE_INCLUDE_PATH trace/hooks
+
+#if !defined(_TRACE_HOOK_FAULT_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_FAULT_H
+#include <trace/hooks/vendor_hooks.h>
+
+struct pt_regs;
+DECLARE_RESTRICTED_HOOK(android_rvh_die_kernel_fault,
+	TP_PROTO(const char *msg, unsigned long addr, unsigned long esr, struct pt_regs *regs),
+	TP_ARGS(msg, addr, esr, regs), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_do_sea,
+	TP_PROTO(unsigned long addr, unsigned long esr, struct pt_regs *regs),
+	TP_ARGS(addr, esr, regs), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_do_sp_pc_abort,
+	TP_PROTO(unsigned long addr, unsigned long esr, struct pt_regs *regs),
+	TP_ARGS(addr, esr, regs),
+	TP_CONDITION(!user_mode(regs)));
+
+#endif /* _TRACE_HOOK_FAULT_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/fips140.h b/include/trace/hooks/fips140.h
new file mode 100644
index 0000000..fd4a42c
--- /dev/null
+++ b/include/trace/hooks/fips140.h
@@ -0,0 +1,50 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM fips140
+#define TRACE_INCLUDE_PATH trace/hooks
+
+#if !defined(_TRACE_HOOK_FIPS140_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_FIPS140_H
+#include <trace/hooks/vendor_hooks.h>
+
+struct crypto_aes_ctx;
+
+/*
+ * These hooks exist only for the benefit of the FIPS140 crypto module, which
+ * uses them to swap out the underlying implementation with one that is integrity
+ * checked as per FIPS 140 requirements. No other uses are allowed or
+ * supported.
+ */
+
+DECLARE_HOOK(android_vh_sha256,
+	     TP_PROTO(const u8 *data,
+		      unsigned int len,
+		      u8 *out,
+		      int *hook_inuse),
+	     TP_ARGS(data, len, out, hook_inuse));
+
+DECLARE_HOOK(android_vh_aes_expandkey,
+	     TP_PROTO(struct crypto_aes_ctx *ctx,
+		      const u8 *in_key,
+		      unsigned int key_len,
+		      int *err),
+	     TP_ARGS(ctx, in_key, key_len, err));
+
+DECLARE_HOOK(android_vh_aes_encrypt,
+	     TP_PROTO(const struct crypto_aes_ctx *ctx,
+		      u8 *out,
+		      const u8 *in,
+		      int *hook_inuse),
+	     TP_ARGS(ctx, out, in, hook_inuse));
+
+DECLARE_HOOK(android_vh_aes_decrypt,
+	     TP_PROTO(const struct crypto_aes_ctx *ctx,
+		      u8 *out,
+		      const u8 *in,
+		      int *hook_inuse),
+	     TP_ARGS(ctx, out, in, hook_inuse));
+
+#endif /* _TRACE_HOOK_FIPS140_H */
+
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/fpsimd.h b/include/trace/hooks/fpsimd.h
new file mode 100644
index 0000000..1033718
--- /dev/null
+++ b/include/trace/hooks/fpsimd.h
@@ -0,0 +1,20 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM fpsimd
+
+#define TRACE_INCLUDE_PATH trace/hooks
+
+#if !defined(_TRACE_HOOK_FPSIMD_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_FPSIMD_H
+
+#include <trace/hooks/vendor_hooks.h>
+
+struct task_struct;
+
+DECLARE_HOOK(android_vh_is_fpsimd_save,
+	TP_PROTO(struct task_struct *prev, struct task_struct *next),
+	TP_ARGS(prev, next))
+
+#endif /* _TRACE_HOOK_FPSIMD_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/ftrace_dump.h b/include/trace/hooks/ftrace_dump.h
new file mode 100644
index 0000000..3d0b980
--- /dev/null
+++ b/include/trace/hooks/ftrace_dump.h
@@ -0,0 +1,36 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM ftrace_dump
+
+#define TRACE_INCLUDE_PATH trace/hooks
+
+#if !defined(_TRACE_HOOK_FTRACE_DUMP_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_FTRACE_DUMP_H
+
+#include <trace/hooks/vendor_hooks.h>
+
+struct trace_seq;
+
+DECLARE_HOOK(android_vh_ftrace_oops_enter,
+	TP_PROTO(bool *ftrace_check),
+	TP_ARGS(ftrace_check));
+
+DECLARE_HOOK(android_vh_ftrace_oops_exit,
+	TP_PROTO(bool *ftrace_check),
+	TP_ARGS(ftrace_check));
+
+DECLARE_HOOK(android_vh_ftrace_size_check,
+	TP_PROTO(unsigned long size, bool *ftrace_check),
+	TP_ARGS(size, ftrace_check));
+
+DECLARE_HOOK(android_vh_ftrace_format_check,
+	TP_PROTO(bool *ftrace_check),
+	TP_ARGS(ftrace_check));
+
+DECLARE_HOOK(android_vh_ftrace_dump_buffer,
+	TP_PROTO(struct trace_seq *trace_buf, bool *dump_printk),
+	TP_ARGS(trace_buf, dump_printk));
+
+#endif /* _TRACE_HOOK_FTRACE_DUMP_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/futex.h b/include/trace/hooks/futex.h
new file mode 100644
index 0000000..a23b4c8
--- /dev/null
+++ b/include/trace/hooks/futex.h
@@ -0,0 +1,49 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM futex
+#undef TRACE_INCLUDE_PATH
+#define TRACE_INCLUDE_PATH trace/hooks
+#if !defined(_TRACE_HOOK_FUTEX_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_FUTEX_H
+#include <linux/tracepoint.h>
+#include <trace/hooks/vendor_hooks.h>
+#include <linux/plist.h>
+/*
+ * Following tracepoints are not exported in tracefs and provide a
+ * mechanism for vendor modules to hook and extend functionality
+ */
+DECLARE_HOOK(android_vh_alter_futex_plist_add,
+	TP_PROTO(struct plist_node *node,
+		 struct plist_head *head,
+		 bool *already_on_hb),
+	TP_ARGS(node, head, already_on_hb));
+DECLARE_HOOK(android_vh_futex_sleep_start,
+	TP_PROTO(struct task_struct *p),
+	TP_ARGS(p));
+DECLARE_HOOK(android_vh_do_futex,
+	TP_PROTO(int cmd,
+		 unsigned int *flags,
+		 u32 __user *uaddr2),
+	TP_ARGS(cmd, flags, uaddr2));
+DECLARE_HOOK(android_vh_futex_wait_start,
+	TP_PROTO(unsigned int flags,
+		 u32 bitset),
+	TP_ARGS(flags, bitset));
+DECLARE_HOOK(android_vh_futex_wait_end,
+	TP_PROTO(unsigned int flags,
+		 u32 bitset),
+	TP_ARGS(flags, bitset));
+DECLARE_HOOK(android_vh_futex_wake_traverse_plist,
+	TP_PROTO(struct plist_head *chain, int *target_nr,
+		 union futex_key key, u32 bitset),
+	TP_ARGS(chain, target_nr, key, bitset));
+DECLARE_HOOK(android_vh_futex_wake_this,
+	TP_PROTO(int ret, int nr_wake, int target_nr,
+		 struct task_struct *p),
+	TP_ARGS(ret, nr_wake, target_nr, p));
+DECLARE_HOOK(android_vh_futex_wake_up_q_finish,
+	TP_PROTO(int nr_wake, int target_nr),
+	TP_ARGS(nr_wake, target_nr));
+#endif /* _TRACE_HOOK_FUTEX_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/gic.h b/include/trace/hooks/gic.h
new file mode 100644
index 0000000..7662eeb
--- /dev/null
+++ b/include/trace/hooks/gic.h
@@ -0,0 +1,26 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM gic
+
+#define TRACE_INCLUDE_PATH trace/hooks
+
+#if !defined(_TRACE_HOOK_GIC_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_GIC_H
+
+#include <trace/hooks/vendor_hooks.h>
+
+struct gic_chip_data_v3;
+struct irq_data;
+
+DECLARE_HOOK(android_vh_gic_resume,
+       TP_PROTO(struct gic_chip_data_v3 *gd),
+       TP_ARGS(gd));
+
+DECLARE_HOOK(android_vh_gic_set_affinity,
+	TP_PROTO(struct irq_data *d, const struct cpumask *mask_val,
+		 bool force, u8 *gic_cpu_map, void __iomem *reg),
+	TP_ARGS(d, mask_val, force, gic_cpu_map, reg));
+
+#endif /* _TRACE_HOOK_GIC_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/gic_v3.h b/include/trace/hooks/gic_v3.h
new file mode 100644
index 0000000..8bafe0a
--- /dev/null
+++ b/include/trace/hooks/gic_v3.h
@@ -0,0 +1,33 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM gic_v3
+#define TRACE_INCLUDE_PATH trace/hooks
+
+#if !defined(_TRACE_HOOK_GIC_V3_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_GIC_V3_H
+
+#include <trace/hooks/vendor_hooks.h>
+
+/*
+ * Following tracepoints are not exported in tracefs and provide a
+ * mechanism for vendor modules to hook and extend functionality
+ */
+struct irq_data;
+struct cpumask;
+struct gic_chip_data_v3;
+DECLARE_HOOK(android_vh_gic_v3_affinity_init,
+	TP_PROTO(int irq, u32 offset, u64 *affinity),
+	TP_ARGS(irq, offset, affinity));
+DECLARE_RESTRICTED_HOOK(android_rvh_gic_v3_set_affinity,
+	TP_PROTO(struct irq_data *d, const struct cpumask *mask_val,
+		 u64 *affinity, bool force, void __iomem *base,
+		 void __iomem *rbase, u64 redist_stride),
+	TP_ARGS(d, mask_val, affinity, force, base, rbase, redist_stride),
+	1);
+DECLARE_HOOK(android_vh_gic_v3_suspend,
+	TP_PROTO(struct gic_chip_data_v3 *gd),
+	TP_ARGS(gd));
+
+#endif /* _TRACE_HOOK_GIC_V3_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/hung_task.h b/include/trace/hooks/hung_task.h
new file mode 100644
index 0000000..cdbf59e
--- /dev/null
+++ b/include/trace/hooks/hung_task.h
@@ -0,0 +1,23 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM hung_task
+
+#define TRACE_INCLUDE_PATH trace/hooks
+
+#if !defined(_TRACE_HOOK_HUNG_TASK_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_HUNG_TASK_H
+
+#include <trace/hooks/vendor_hooks.h>
+
+DECLARE_HOOK(android_vh_check_uninterrupt_tasks,
+	TP_PROTO(struct task_struct *t, unsigned long timeout,
+		bool *need_check),
+	TP_ARGS(t, timeout, need_check));
+
+DECLARE_HOOK(android_vh_check_uninterrupt_tasks_done,
+	TP_PROTO(void *unused),
+	TP_ARGS(unused));
+
+#endif /* _TRACE_HOOK_HUNG_TASK_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/iommu.h b/include/trace/hooks/iommu.h
new file mode 100644
index 0000000..d36446f
--- /dev/null
+++ b/include/trace/hooks/iommu.h
@@ -0,0 +1,46 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM iommu
+
+#define TRACE_INCLUDE_PATH trace/hooks
+
+#if !defined(_TRACE_HOOK_IOMMU_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_IOMMU_H
+
+#include <trace/hooks/vendor_hooks.h>
+
+DECLARE_RESTRICTED_HOOK(android_rvh_iommu_setup_dma_ops,
+	TP_PROTO(struct device *dev, u64 dma_base, u64 dma_limit),
+	TP_ARGS(dev, dma_base, dma_limit), 1);
+
+struct iova_domain;
+struct iova;
+
+DECLARE_RESTRICTED_HOOK(android_rvh_iommu_alloc_insert_iova,
+	TP_PROTO(struct iova_domain *iovad, unsigned long size,
+		unsigned long limit_pfn, struct iova *new_iova,
+		bool size_aligned, int *ret),
+	TP_ARGS(iovad, size, limit_pfn, new_iova, size_aligned, ret),
+	1);
+
+DECLARE_HOOK(android_vh_iommu_iovad_alloc_iova,
+	TP_PROTO(struct device *dev, struct iova_domain *iovad, dma_addr_t iova, size_t size),
+	TP_ARGS(dev, iovad, iova, size));
+
+DECLARE_HOOK(android_vh_iommu_iovad_free_iova,
+	TP_PROTO(struct iova_domain *iovad, dma_addr_t iova, size_t size),
+	TP_ARGS(iovad, iova, size));
+
+DECLARE_RESTRICTED_HOOK(android_rvh_iommu_iovad_init_alloc_algo,
+	TP_PROTO(struct device *dev, struct iova_domain *iovad),
+	TP_ARGS(dev, iovad), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_iommu_limit_align_shift,
+	TP_PROTO(struct iova_domain *iovad, unsigned long size,
+		unsigned long *shift),
+	TP_ARGS(iovad, size, shift), 1);
+
+#endif /* _TRACE_HOOK_IOMMU_H */
+
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/mm.h b/include/trace/hooks/mm.h
new file mode 100644
index 0000000..fb0bc38
--- /dev/null
+++ b/include/trace/hooks/mm.h
@@ -0,0 +1,129 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM mm
+
+#define TRACE_INCLUDE_PATH trace/hooks
+
+#if !defined(_TRACE_HOOK_MM_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_MM_H
+
+#include <trace/hooks/vendor_hooks.h>
+
+struct shmem_inode_info;
+struct folio;
+
+DECLARE_RESTRICTED_HOOK(android_rvh_shmem_get_folio,
+			TP_PROTO(struct shmem_inode_info *info, struct folio **folio),
+			TP_ARGS(info, folio), 2);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_set_gfp_zone_flags,
+			TP_PROTO(unsigned int *flags),	/* gfp_t *flags */
+			TP_ARGS(flags), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_set_readahead_gfp_mask,
+			TP_PROTO(unsigned int *flags),	/* gfp_t *flags */
+			TP_ARGS(flags), 1);
+DECLARE_HOOK(android_vh_dm_bufio_shrink_scan_bypass,
+	TP_PROTO(unsigned long dm_bufio_current_allocated, bool *bypass),
+	TP_ARGS(dm_bufio_current_allocated, bypass));
+DECLARE_HOOK(android_vh_cleanup_old_buffers_bypass,
+	TP_PROTO(unsigned long dm_bufio_current_allocated,
+		unsigned long *max_age_hz,
+		bool *bypass),
+	TP_ARGS(dm_bufio_current_allocated, max_age_hz, bypass));
+DECLARE_HOOK(android_vh_mmap_region,
+	TP_PROTO(struct vm_area_struct *vma, unsigned long addr),
+	TP_ARGS(vma, addr));
+DECLARE_HOOK(android_vh_try_to_unmap_one,
+	TP_PROTO(struct folio *folio, struct vm_area_struct *vma,
+		unsigned long addr, void *arg, bool ret),
+	TP_ARGS(folio, vma, addr, arg, ret));
+DECLARE_HOOK(android_vh_get_page_wmark,
+	TP_PROTO(unsigned int alloc_flags, unsigned long *page_wmark),
+	TP_ARGS(alloc_flags, page_wmark));
+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_meminfo_proc_show,
+	TP_PROTO(struct seq_file *m),
+	TP_ARGS(m));
+DECLARE_HOOK(android_vh_exit_mm,
+	TP_PROTO(struct mm_struct *mm),
+	TP_ARGS(mm));
+DECLARE_HOOK(android_vh_show_mem,
+	TP_PROTO(unsigned int filter, nodemask_t *nodemask),
+	TP_ARGS(filter, nodemask));
+DECLARE_HOOK(android_vh_alloc_pages_slowpath,
+	TP_PROTO(gfp_t gfp_mask, unsigned int order, unsigned long delta),
+	TP_ARGS(gfp_mask, order, delta));
+DECLARE_HOOK(android_vh_print_slabinfo_header,
+	TP_PROTO(struct seq_file *m),
+	TP_ARGS(m));
+struct slabinfo;
+DECLARE_HOOK(android_vh_cache_show,
+	TP_PROTO(struct seq_file *m, struct slabinfo *sinfo, struct kmem_cache *s),
+	TP_ARGS(m, sinfo, s));
+DECLARE_HOOK(android_vh_alloc_pages_reclaim_bypass,
+    TP_PROTO(gfp_t gfp_mask, int order, int alloc_flags,
+	int migratetype, struct page **page),
+	TP_ARGS(gfp_mask, order, alloc_flags, migratetype, page));
+DECLARE_HOOK(android_vh_alloc_pages_failure_bypass,
+	TP_PROTO(gfp_t gfp_mask, int order, int alloc_flags,
+	int migratetype, struct page **page),
+	TP_ARGS(gfp_mask, order, alloc_flags, migratetype, page));
+DECLARE_HOOK(android_vh_madvise_pageout_swap_entry,
+	TP_PROTO(swp_entry_t entry, int swapcount),
+	TP_ARGS(entry, swapcount));
+DECLARE_HOOK(android_vh_madvise_swapin_walk_pmd_entry,
+	TP_PROTO(swp_entry_t entry),
+	TP_ARGS(entry));
+DECLARE_HOOK(android_vh_process_madvise_end,
+	TP_PROTO(int behavior, ssize_t *ret),
+	TP_ARGS(behavior, ret));
+DECLARE_HOOK(android_vh_smaps_pte_entry,
+	TP_PROTO(swp_entry_t entry, unsigned long *writeback,
+		unsigned long *same, unsigned long *huge),
+	TP_ARGS(entry, writeback, same, huge));
+DECLARE_HOOK(android_vh_show_smap,
+	TP_PROTO(struct seq_file *m, unsigned long writeback,
+		unsigned long same, unsigned long huge),
+	TP_ARGS(m, writeback, same, huge));
+DECLARE_HOOK(android_vh_meminfo_cache_adjust,
+	TP_PROTO(unsigned long *cached),
+	TP_ARGS(cached));
+DECLARE_HOOK(android_vh_si_mem_available_adjust,
+	TP_PROTO(unsigned long *available),
+	TP_ARGS(available));
+DECLARE_HOOK(android_vh_si_meminfo_adjust,
+	TP_PROTO(unsigned long *totalram, unsigned long *freeram),
+	TP_ARGS(totalram, freeram));
+DECLARE_RESTRICTED_HOOK(android_rvh_ctl_dirty_rate,
+	TP_PROTO(void *unused),
+	TP_ARGS(unused), 1);
+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));
+
+struct mem_cgroup;
+DECLARE_HOOK(android_vh_mem_cgroup_alloc,
+	TP_PROTO(struct mem_cgroup *memcg),
+	TP_ARGS(memcg));
+DECLARE_HOOK(android_vh_mem_cgroup_free,
+	TP_PROTO(struct mem_cgroup *memcg),
+	TP_ARGS(memcg));
+DECLARE_HOOK(android_vh_mem_cgroup_id_remove,
+	TP_PROTO(struct mem_cgroup *memcg),
+	TP_ARGS(memcg));
+struct cgroup_subsys_state;
+DECLARE_HOOK(android_vh_mem_cgroup_css_online,
+	TP_PROTO(struct cgroup_subsys_state *css, struct mem_cgroup *memcg),
+	TP_ARGS(css, memcg));
+DECLARE_HOOK(android_vh_mem_cgroup_css_offline,
+	TP_PROTO(struct cgroup_subsys_state *css, struct mem_cgroup *memcg),
+	TP_ARGS(css, memcg));
+
+#endif /* _TRACE_HOOK_MM_H */
+
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/mmc.h b/include/trace/hooks/mmc.h
new file mode 100644
index 0000000..3654c2a
--- /dev/null
+++ b/include/trace/hooks/mmc.h
@@ -0,0 +1,25 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM mmc
+#undef TRACE_INCLUDE_PATH
+#define TRACE_INCLUDE_PATH trace/hooks
+#if !defined(_TRACE_HOOK_MMC_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_MMC_H
+#include <trace/hooks/vendor_hooks.h>
+struct mmc_host;
+
+/*
+ * Following tracepoints are not exported in tracefs and provide a
+ * mechanism for vendor modules to hook and extend functionality
+ */
+DECLARE_RESTRICTED_HOOK(android_rvh_mmc_suspend,
+	TP_PROTO(struct mmc_host *host),
+	TP_ARGS(host), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_mmc_resume,
+	TP_PROTO(struct mmc_host *host, bool *resume_success),
+	TP_ARGS(host, resume_success), 1);
+
+#endif /* _TRACE_HOOK_MMC_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/module.h b/include/trace/hooks/module.h
new file mode 100644
index 0000000..780e767
--- /dev/null
+++ b/include/trace/hooks/module.h
@@ -0,0 +1,32 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM module
+
+#define TRACE_INCLUDE_PATH trace/hooks
+#if !defined(_TRACE_HOOK_MODULE_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_MODULE_H
+#include <trace/hooks/vendor_hooks.h>
+/*
+ * Following tracepoints are not exported in tracefs and provide a
+ * mechanism for vendor modules to hook and extend functionality
+ */
+struct module;
+DECLARE_RESTRICTED_HOOK(android_rvh_set_module_permit_before_init,
+	TP_PROTO(const struct module *mod),
+	TP_ARGS(mod), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_set_module_permit_after_init,
+	TP_PROTO(const struct module *mod),
+	TP_ARGS(mod), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_set_module_core_rw_nx,
+	TP_PROTO(const struct module *mod),
+	TP_ARGS(mod), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_set_module_init_rw_nx,
+	TP_PROTO(const struct module *mod),
+	TP_ARGS(mod), 1);
+
+#endif /* _TRACE_HOOK_MODULE_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/mpam.h b/include/trace/hooks/mpam.h
new file mode 100644
index 0000000..50f5a68
--- /dev/null
+++ b/include/trace/hooks/mpam.h
@@ -0,0 +1,20 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM mpam
+#undef TRACE_INCLUDE_PATH
+#define TRACE_INCLUDE_PATH trace/hooks
+#if !defined(_TRACE_HOOK_MPAM_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_MPAM_H
+#include <trace/hooks/vendor_hooks.h>
+/*
+ * Following tracepoints are not exported in tracefs and provide a
+ * mechanism for vendor modules to hook and extend functionality
+ */
+struct task_struct;
+DECLARE_HOOK(android_vh_mpam_set,
+	TP_PROTO(struct task_struct *prev, struct task_struct *next),
+	TP_ARGS(prev, next));
+
+#endif /* _TRACE_HOOK_MPAM_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/net.h b/include/trace/hooks/net.h
new file mode 100644
index 0000000..50988f6
--- /dev/null
+++ b/include/trace/hooks/net.h
@@ -0,0 +1,32 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM net
+#define TRACE_INCLUDE_PATH trace/hooks
+
+#if !defined(_TRACE_HOOK_NET_VH_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_NET_VH_H
+#include <trace/hooks/vendor_hooks.h>
+
+struct packet_type;
+struct list_head;
+DECLARE_HOOK(android_vh_ptype_head,
+	TP_PROTO(const struct packet_type *pt, struct list_head *vendor_pt),
+	TP_ARGS(pt, vendor_pt));
+
+struct nf_conn;
+struct sock;
+DECLARE_RESTRICTED_HOOK(android_rvh_nf_conn_alloc,
+	TP_PROTO(struct nf_conn *nf_conn), TP_ARGS(nf_conn), 1);
+DECLARE_RESTRICTED_HOOK(android_rvh_nf_conn_free,
+	TP_PROTO(struct nf_conn *nf_conn), TP_ARGS(nf_conn), 1);
+DECLARE_RESTRICTED_HOOK(android_rvh_sk_alloc,
+	TP_PROTO(struct sock *sock), TP_ARGS(sock), 1);
+DECLARE_RESTRICTED_HOOK(android_rvh_sk_free,
+	TP_PROTO(struct sock *sock), TP_ARGS(sock), 1);
+
+/* macro versions of hooks are no longer required */
+
+#endif /* _TRACE_HOOK_NET_VH_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/pm_domain.h b/include/trace/hooks/pm_domain.h
new file mode 100644
index 0000000..2a530d1
--- /dev/null
+++ b/include/trace/hooks/pm_domain.h
@@ -0,0 +1,20 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM pm_domain
+
+#define TRACE_INCLUDE_PATH trace/hooks
+
+#if !defined(_TRACE_HOOK_PM_DOMAIN_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_PM_DOMAIN_H
+
+#include <trace/hooks/vendor_hooks.h>
+
+struct generic_pm_domain;
+DECLARE_HOOK(android_vh_allow_domain_state,
+	TP_PROTO(struct generic_pm_domain *genpd, uint32_t idx, bool *allow),
+	TP_ARGS(genpd, idx, allow))
+
+#endif /* _TRACE_HOOK_PM_DOMAIN_H */
+
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/power.h b/include/trace/hooks/power.h
new file mode 100644
index 0000000..e845d0e
--- /dev/null
+++ b/include/trace/hooks/power.h
@@ -0,0 +1,38 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM power
+#define TRACE_INCLUDE_PATH trace/hooks
+
+#if !defined(_TRACE_HOOK_POWER_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_POWER_H
+#include <trace/hooks/vendor_hooks.h>
+
+struct task_struct;
+DECLARE_HOOK(android_vh_try_to_freeze_todo,
+	TP_PROTO(unsigned int todo, unsigned int elapsed_msecs, bool wq_busy),
+	TP_ARGS(todo, elapsed_msecs, wq_busy));
+
+DECLARE_HOOK(android_vh_try_to_freeze_todo_unfrozen,
+	TP_PROTO(struct task_struct *p),
+	TP_ARGS(p));
+
+enum freq_qos_req_type;
+struct freq_qos_request;
+struct freq_constraints;
+
+DECLARE_HOOK(android_vh_freq_qos_add_request,
+	TP_PROTO(struct freq_constraints *qos, struct freq_qos_request *req,
+		enum freq_qos_req_type type, int value, int ret),
+	TP_ARGS(qos, req, type, value, ret));
+
+DECLARE_HOOK(android_vh_freq_qos_update_request,
+		TP_PROTO(struct freq_qos_request *req, int value),
+		TP_ARGS(req, value));
+
+DECLARE_HOOK(android_vh_freq_qos_remove_request,
+		TP_PROTO(struct freq_qos_request *req),
+		TP_ARGS(req));
+
+#endif /* _TRACE_HOOK_POWER_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/preemptirq.h b/include/trace/hooks/preemptirq.h
new file mode 100644
index 0000000..52308c8
--- /dev/null
+++ b/include/trace/hooks/preemptirq.h
@@ -0,0 +1,31 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM preemptirq
+
+#undef TRACE_INCLUDE_PATH
+#define TRACE_INCLUDE_PATH trace/hooks
+
+#if !defined(_TRACE_HOOK_PREEMPTIRQ_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_PREEMPTIRQ_H
+
+#include <trace/hooks/vendor_hooks.h>
+
+DECLARE_RESTRICTED_HOOK(android_rvh_preempt_disable,
+	TP_PROTO(unsigned long ip, unsigned long parent_ip),
+	TP_ARGS(ip, parent_ip), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_preempt_enable,
+	TP_PROTO(unsigned long ip, unsigned long parent_ip),
+	TP_ARGS(ip, parent_ip), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_irqs_disable,
+	TP_PROTO(unsigned long ip, unsigned long parent_ip),
+	TP_ARGS(ip, parent_ip), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_irqs_enable,
+	TP_PROTO(unsigned long ip, unsigned long parent_ip),
+	TP_ARGS(ip, parent_ip), 1);
+
+#endif /* _TRACE_HOOK_PREEMPTIRQ_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/printk.h b/include/trace/hooks/printk.h
new file mode 100644
index 0000000..2598490
--- /dev/null
+++ b/include/trace/hooks/printk.h
@@ -0,0 +1,18 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM printk
+
+#define TRACE_INCLUDE_PATH trace/hooks
+
+#if !defined(_TRACE_HOOK_PRINTK_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_PRINTK_H
+
+#include <trace/hooks/vendor_hooks.h>
+
+DECLARE_HOOK(android_vh_printk_hotplug,
+	TP_PROTO(int *flag),
+	TP_ARGS(flag));
+
+#endif /* _TRACE_HOOK_PRINTK_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/psci.h b/include/trace/hooks/psci.h
new file mode 100644
index 0000000..97d0fb1
--- /dev/null
+++ b/include/trace/hooks/psci.h
@@ -0,0 +1,25 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM psci
+#undef TRACE_INCLUDE_PATH
+
+#define TRACE_INCLUDE_PATH trace/hooks
+
+#if !defined(_TRACE_HOOK_PSCI_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_PSCI_H
+
+#include <trace/hooks/vendor_hooks.h>
+
+DECLARE_RESTRICTED_HOOK(android_rvh_psci_tos_resident_on,
+	TP_PROTO(int cpu, bool *resident),
+	TP_ARGS(cpu, resident), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_psci_cpu_suspend,
+	TP_PROTO(u32 state, bool *deny),
+	TP_ARGS(state, deny), 1);
+
+/* macro versions of hooks are no longer required */
+
+#endif /* _TRACE_HOOK_PSCI_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/psi.h b/include/trace/hooks/psi.h
new file mode 100644
index 0000000..91a0086
--- /dev/null
+++ b/include/trace/hooks/psi.h
@@ -0,0 +1,25 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM psi
+
+#define TRACE_INCLUDE_PATH trace/hooks
+
+#if !defined(_TRACE_HOOK_PSI_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_PSI_H
+
+#include <trace/hooks/vendor_hooks.h>
+
+struct psi_trigger;
+struct psi_group;
+DECLARE_HOOK(android_vh_psi_event,
+	TP_PROTO(struct psi_trigger *t),
+	TP_ARGS(t));
+
+DECLARE_HOOK(android_vh_psi_group,
+	TP_PROTO(struct psi_group *group),
+	TP_ARGS(group));
+
+#endif /* _TRACE_HOOK_PSI_H */
+
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/remoteproc.h b/include/trace/hooks/remoteproc.h
new file mode 100644
index 0000000..55fae70
--- /dev/null
+++ b/include/trace/hooks/remoteproc.h
@@ -0,0 +1,26 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM remoteproc
+
+#define TRACE_INCLUDE_PATH trace/hooks
+
+#if !defined(_TRACE_HOOK_RPROC_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_RPROC_H
+
+#include <trace/hooks/vendor_hooks.h>
+
+struct rproc;
+
+/* When recovery succeeds */
+DECLARE_HOOK(android_vh_rproc_recovery,
+	TP_PROTO(struct rproc *rproc),
+	TP_ARGS(rproc));
+
+/* When recovery mode is enabled or disabled by sysfs */
+DECLARE_HOOK(android_vh_rproc_recovery_set,
+	TP_PROTO(struct rproc *rproc),
+	TP_ARGS(rproc));
+
+#endif /* _TRACE_HOOK_RPROC_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/rwsem.h b/include/trace/hooks/rwsem.h
new file mode 100644
index 0000000..a2fb006
--- /dev/null
+++ b/include/trace/hooks/rwsem.h
@@ -0,0 +1,33 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM rwsem
+#define TRACE_INCLUDE_PATH trace/hooks
+#if !defined(_TRACE_HOOK_RWSEM_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_RWSEM_H
+#include <trace/hooks/vendor_hooks.h>
+/*
+ * Following tracepoints are not exported in tracefs and provide a
+ * mechanism for vendor modules to hook and extend functionality
+ */
+struct rw_semaphore;
+struct rwsem_waiter;
+DECLARE_HOOK(android_vh_rwsem_init,
+	TP_PROTO(struct rw_semaphore *sem),
+	TP_ARGS(sem));
+DECLARE_HOOK(android_vh_rwsem_wake,
+	TP_PROTO(struct rw_semaphore *sem),
+	TP_ARGS(sem));
+DECLARE_HOOK(android_vh_rwsem_write_finished,
+	TP_PROTO(struct rw_semaphore *sem),
+	TP_ARGS(sem));
+DECLARE_HOOK(android_vh_alter_rwsem_list_add,
+	TP_PROTO(struct rwsem_waiter *waiter,
+		 struct rw_semaphore *sem,
+		 bool *already_on_list),
+	TP_ARGS(waiter, sem, already_on_list));
+DECLARE_HOOK(android_vh_rwsem_wake_finish,
+	TP_PROTO(struct rw_semaphore *sem),
+	TP_ARGS(sem));
+#endif /* _TRACE_HOOK_RWSEM_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/sched.h b/include/trace/hooks/sched.h
new file mode 100644
index 0000000..7b5ab10
--- /dev/null
+++ b/include/trace/hooks/sched.h
@@ -0,0 +1,388 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM sched
+#define TRACE_INCLUDE_PATH trace/hooks
+#if !defined(_TRACE_HOOK_SCHED_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_SCHED_H
+#include <trace/hooks/vendor_hooks.h>
+/*
+ * Following tracepoints are not exported in tracefs and provide a
+ * mechanism for vendor modules to hook and extend functionality
+ */
+struct task_struct;
+DECLARE_RESTRICTED_HOOK(android_rvh_select_task_rq_fair,
+	TP_PROTO(struct task_struct *p, int prev_cpu, int sd_flag, int wake_flags, int *new_cpu),
+	TP_ARGS(p, prev_cpu, sd_flag, wake_flags, new_cpu), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_select_task_rq_rt,
+	TP_PROTO(struct task_struct *p, int prev_cpu, int sd_flag, int wake_flags, int *new_cpu),
+	TP_ARGS(p, prev_cpu, sd_flag, wake_flags, new_cpu), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_select_fallback_rq,
+	TP_PROTO(int cpu, struct task_struct *p, int *new_cpu),
+	TP_ARGS(cpu, p, new_cpu), 1);
+
+struct rq;
+DECLARE_HOOK(android_vh_scheduler_tick,
+	TP_PROTO(struct rq *rq),
+	TP_ARGS(rq));
+
+DECLARE_RESTRICTED_HOOK(android_rvh_enqueue_task,
+	TP_PROTO(struct rq *rq, struct task_struct *p, int flags),
+	TP_ARGS(rq, p, flags), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_dequeue_task,
+	TP_PROTO(struct rq *rq, struct task_struct *p, int flags),
+	TP_ARGS(rq, p, flags), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_can_migrate_task,
+	TP_PROTO(struct task_struct *p, int dst_cpu, int *can_migrate),
+	TP_ARGS(p, dst_cpu, can_migrate), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_find_lowest_rq,
+	TP_PROTO(struct task_struct *p, struct cpumask *local_cpu_mask,
+			int ret, int *lowest_cpu),
+	TP_ARGS(p, local_cpu_mask, ret, lowest_cpu), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_prepare_prio_fork,
+	TP_PROTO(struct task_struct *p),
+	TP_ARGS(p), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_finish_prio_fork,
+	TP_PROTO(struct task_struct *p),
+	TP_ARGS(p), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_rtmutex_prepare_setprio,
+	TP_PROTO(struct task_struct *p, struct task_struct *pi_task),
+	TP_ARGS(p, pi_task), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_rto_next_cpu,
+	TP_PROTO(int rto_cpu, struct cpumask *rto_mask, int *cpu),
+	TP_ARGS(rto_cpu, rto_mask, cpu), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_is_cpu_allowed,
+	TP_PROTO(struct task_struct *p, int cpu, bool *allowed),
+	TP_ARGS(p, cpu, allowed), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_get_nohz_timer_target,
+	TP_PROTO(int *cpu, bool *done),
+	TP_ARGS(cpu, done), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_set_user_nice,
+	TP_PROTO(struct task_struct *p, long *nice, bool *allowed),
+	TP_ARGS(p, nice, allowed), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_setscheduler,
+	TP_PROTO(struct task_struct *p),
+	TP_ARGS(p), 1);
+
+struct sched_group;
+DECLARE_RESTRICTED_HOOK(android_rvh_find_busiest_group,
+	TP_PROTO(struct sched_group *busiest, struct rq *dst_rq, int *out_balance),
+		TP_ARGS(busiest, dst_rq, out_balance), 1);
+
+DECLARE_HOOK(android_vh_dump_throttled_rt_tasks,
+	TP_PROTO(int cpu, u64 clock, ktime_t rt_period, u64 rt_runtime,
+			s64 rt_period_timer_expires),
+	TP_ARGS(cpu, clock, rt_period, rt_runtime, rt_period_timer_expires));
+
+DECLARE_HOOK(android_vh_jiffies_update,
+	TP_PROTO(void *unused),
+	TP_ARGS(unused));
+
+struct rq_flags;
+DECLARE_RESTRICTED_HOOK(android_rvh_sched_newidle_balance,
+	TP_PROTO(struct rq *this_rq, struct rq_flags *rf,
+		 int *pulled_task, int *done),
+	TP_ARGS(this_rq, rf, pulled_task, done), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_sched_nohz_balancer_kick,
+	TP_PROTO(struct rq *rq, unsigned int *flags, int *done),
+	TP_ARGS(rq, flags, done), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_sched_rebalance_domains,
+	TP_PROTO(struct rq *rq, int *continue_balancing),
+	TP_ARGS(rq, continue_balancing), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_find_busiest_queue,
+	TP_PROTO(int dst_cpu, struct sched_group *group,
+		 struct cpumask *env_cpus, struct rq **busiest,
+		 int *done),
+	TP_ARGS(dst_cpu, group, env_cpus, busiest, done), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_migrate_queued_task,
+	TP_PROTO(struct rq *rq, struct rq_flags *rf,
+		 struct task_struct *p, int new_cpu,
+		 int *detached),
+	TP_ARGS(rq, rf, p, new_cpu, detached), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_cpu_overutilized,
+	TP_PROTO(int cpu, int *overutilized),
+	TP_ARGS(cpu, overutilized), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_sched_setaffinity,
+	TP_PROTO(struct task_struct *p, const struct cpumask *in_mask, int *retval),
+	TP_ARGS(p, in_mask, retval), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_sched_getaffinity,
+	TP_PROTO(struct task_struct *p, struct cpumask *in_mask),
+	TP_ARGS(p, in_mask), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_set_task_cpu,
+	TP_PROTO(struct task_struct *p, unsigned int new_cpu),
+	TP_ARGS(p, new_cpu), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_try_to_wake_up,
+	TP_PROTO(struct task_struct *p),
+	TP_ARGS(p), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_try_to_wake_up_success,
+	TP_PROTO(struct task_struct *p),
+	TP_ARGS(p), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_sched_fork,
+	TP_PROTO(struct task_struct *p),
+	TP_ARGS(p), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_wake_up_new_task,
+	TP_PROTO(struct task_struct *p),
+	TP_ARGS(p), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_new_task_stats,
+	TP_PROTO(struct task_struct *p),
+	TP_ARGS(p), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_flush_task,
+	TP_PROTO(struct task_struct *prev),
+	TP_ARGS(prev), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_tick_entry,
+	TP_PROTO(struct rq *rq),
+	TP_ARGS(rq), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_schedule,
+	TP_PROTO(unsigned int sched_mode, struct task_struct *prev,
+		struct task_struct *next, struct rq *rq),
+	TP_ARGS(sched_mode, prev, next, rq), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_sched_cpu_starting,
+	TP_PROTO(int cpu),
+	TP_ARGS(cpu), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_sched_cpu_dying,
+	TP_PROTO(int cpu),
+	TP_ARGS(cpu), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_account_irq,
+	TP_PROTO(struct task_struct *curr, int cpu, s64 delta, bool start),
+	TP_ARGS(curr, cpu, delta, start), 1);
+
+struct sched_entity;
+DECLARE_RESTRICTED_HOOK(android_rvh_place_entity,
+	TP_PROTO(struct cfs_rq *cfs_rq, struct sched_entity *se, int initial, u64 *vruntime),
+	TP_ARGS(cfs_rq, se, initial, vruntime), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_build_perf_domains,
+	TP_PROTO(bool *eas_check),
+	TP_ARGS(eas_check), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_update_cpu_capacity,
+	TP_PROTO(int cpu, unsigned long *capacity),
+	TP_ARGS(cpu, capacity), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_update_misfit_status,
+	TP_PROTO(struct task_struct *p, struct rq *rq, bool *need_update),
+	TP_ARGS(p, rq, need_update), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_sched_fork_init,
+	TP_PROTO(struct task_struct *p),
+	TP_ARGS(p), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_ttwu_cond,
+	TP_PROTO(int cpu, bool *cond),
+	TP_ARGS(cpu, cond), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_schedule_bug,
+	TP_PROTO(void *unused),
+	TP_ARGS(unused), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_sched_exec,
+	TP_PROTO(bool *cond),
+	TP_ARGS(cond), 1);
+
+DECLARE_HOOK(android_vh_build_sched_domains,
+	TP_PROTO(bool has_asym),
+	TP_ARGS(has_asym));
+
+DECLARE_RESTRICTED_HOOK(android_rvh_check_preempt_tick,
+	TP_PROTO(struct task_struct *p, unsigned long *ideal_runtime, bool *skip_preempt,
+			unsigned long delta_exec, struct cfs_rq *cfs_rq, struct sched_entity *curr,
+			unsigned int granularity),
+	TP_ARGS(p, ideal_runtime, skip_preempt, delta_exec, cfs_rq, curr, granularity), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_check_preempt_wakeup_ignore,
+	TP_PROTO(struct task_struct *p, bool *ignore),
+	TP_ARGS(p, ignore), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_replace_next_task_fair,
+	TP_PROTO(struct rq *rq, struct task_struct **p, struct sched_entity **se, bool *repick,
+			bool simple, struct task_struct *prev),
+	TP_ARGS(rq, p, se, repick, simple, prev), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_sched_balance_rt,
+	TP_PROTO(struct rq *rq, struct task_struct *p, int *done),
+	TP_ARGS(rq, p, done), 1);
+
+struct cfs_rq;
+DECLARE_RESTRICTED_HOOK(android_rvh_pick_next_entity,
+	TP_PROTO(struct cfs_rq *cfs_rq, struct sched_entity *curr,
+		 struct sched_entity **se),
+	TP_ARGS(cfs_rq, curr, se), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_check_preempt_wakeup,
+	TP_PROTO(struct rq *rq, struct task_struct *p, bool *preempt, bool *nopreempt,
+			int wake_flags, struct sched_entity *se, struct sched_entity *pse,
+			int next_buddy_marked, unsigned int granularity),
+	TP_ARGS(rq, p, preempt, nopreempt, wake_flags, se, pse, next_buddy_marked,
+			granularity), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_set_cpus_allowed_by_task,
+	TP_PROTO(const struct cpumask *cpu_valid_mask, const struct cpumask *new_mask,
+		 struct task_struct *p, unsigned int *dest_cpu),
+	TP_ARGS(cpu_valid_mask, new_mask, p, dest_cpu), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_do_sched_yield,
+	TP_PROTO(struct rq *rq),
+	TP_ARGS(rq), 1);
+
+DECLARE_HOOK(android_vh_free_task,
+	TP_PROTO(struct task_struct *p),
+	TP_ARGS(p));
+
+DECLARE_HOOK(android_vh_irqtime_account_process_tick,
+	TP_PROTO(struct task_struct *p, struct rq *rq, int user_tick, int ticks),
+	TP_ARGS(p, rq, user_tick, ticks));
+
+enum uclamp_id;
+struct uclamp_se;
+DECLARE_RESTRICTED_HOOK(android_rvh_uclamp_eff_get,
+	TP_PROTO(struct task_struct *p, enum uclamp_id clamp_id,
+		 struct uclamp_se *uclamp_max, struct uclamp_se *uclamp_eff, int *ret),
+	TP_ARGS(p, clamp_id, uclamp_max, uclamp_eff, ret), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_after_enqueue_task,
+	TP_PROTO(struct rq *rq, struct task_struct *p, int flags),
+	TP_ARGS(rq, p, flags), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_after_dequeue_task,
+	TP_PROTO(struct rq *rq, struct task_struct *p, int flags),
+	TP_ARGS(rq, p, flags), 1);
+
+struct cfs_rq;
+struct sched_entity;
+struct rq_flags;
+DECLARE_RESTRICTED_HOOK(android_rvh_enqueue_entity,
+	TP_PROTO(struct cfs_rq *cfs, struct sched_entity *se),
+	TP_ARGS(cfs, se), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_dequeue_entity,
+	TP_PROTO(struct cfs_rq *cfs, struct sched_entity *se),
+	TP_ARGS(cfs, se), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_entity_tick,
+	TP_PROTO(struct cfs_rq *cfs_rq, struct sched_entity *se),
+	TP_ARGS(cfs_rq, se), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_enqueue_task_fair,
+	TP_PROTO(struct rq *rq, struct task_struct *p, int flags),
+	TP_ARGS(rq, p, flags), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_dequeue_task_fair,
+	TP_PROTO(struct rq *rq, struct task_struct *p, int flags),
+	TP_ARGS(rq, p, flags), 1);
+
+DECLARE_HOOK(android_vh_sched_stat_runtime_rt,
+	TP_PROTO(struct task_struct *tsk, u64 delta),
+	TP_ARGS(tsk, delta));
+
+DECLARE_RESTRICTED_HOOK(android_rvh_util_est_update,
+	TP_PROTO(struct cfs_rq *cfs_rq, struct task_struct *p, bool task_sleep, int *ret),
+	TP_ARGS(cfs_rq, p, task_sleep, ret), 1);
+
+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_update_topology_flags_workfn,
+	TP_PROTO(void *unused),
+	TP_ARGS(unused));
+
+DECLARE_RESTRICTED_HOOK(android_rvh_update_thermal_stats,
+		TP_PROTO(int cpu),
+		TP_ARGS(cpu), 1);
+
+DECLARE_HOOK(android_vh_do_wake_up_sync,
+	TP_PROTO(struct wait_queue_head *wq_head, int *done, struct sock *sk),
+	TP_ARGS(wq_head, done, sk));
+
+DECLARE_HOOK(android_vh_set_wake_flags,
+	TP_PROTO(int *wake_flags, unsigned int *mode),
+	TP_ARGS(wake_flags, mode));
+
+DECLARE_RESTRICTED_HOOK(android_rvh_find_new_ilb,
+	TP_PROTO(struct cpumask *nohz_idle_cpus_mask, int *ilb),
+	TP_ARGS(nohz_idle_cpus_mask, ilb), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_find_energy_efficient_cpu,
+	TP_PROTO(struct task_struct *p, int prev_cpu, int sync, int *new_cpu),
+	TP_ARGS(p, prev_cpu, sync, new_cpu), 1);
+
+DECLARE_HOOK(android_vh_sched_pelt_multiplier,
+	TP_PROTO(unsigned int old, unsigned int cur, int *ret),
+	TP_ARGS(old, cur, ret));
+
+struct cpufreq_policy;
+DECLARE_HOOK(android_vh_map_util_freq,
+	TP_PROTO(unsigned long util, unsigned long freq,
+		unsigned long cap, unsigned long *next_freq, struct cpufreq_policy *policy,
+		bool *need_freq_update),
+	TP_ARGS(util, freq, cap, next_freq, policy, need_freq_update));
+
+DECLARE_RESTRICTED_HOOK(android_rvh_set_cpus_allowed_comm,
+	TP_PROTO(struct task_struct *p, const struct cpumask *new_mask),
+	TP_ARGS(p, new_mask), 1);
+
+DECLARE_HOOK(android_vh_sched_setaffinity_early,
+	TP_PROTO(struct task_struct *p, const struct cpumask *new_mask, bool *retval),
+	TP_ARGS(p, new_mask, retval));
+
+DECLARE_HOOK(android_vh_account_process_tick_gran,
+	TP_PROTO(int user_tick, int *ticks),
+	TP_ARGS(user_tick, ticks));
+
+DECLARE_HOOK(android_vh_account_task_time,
+	TP_PROTO(struct task_struct *p, struct rq *rq, int user_tick, int ticks),
+	TP_ARGS(p, rq, user_tick, ticks));
+
+DECLARE_HOOK(android_vh_dup_task_struct,
+	TP_PROTO(struct task_struct *tsk, struct task_struct *orig),
+	TP_ARGS(tsk, orig));
+
+DECLARE_RESTRICTED_HOOK(android_rvh_post_init_entity_util_avg,
+	TP_PROTO(struct sched_entity *se),
+	TP_ARGS(se), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_effective_cpu_util,
+	TP_PROTO(int cpu, unsigned long util_cfs, unsigned long max, int type,
+		 struct task_struct *p, unsigned long *new_util),
+	TP_ARGS(cpu, util_cfs, max, type, p, new_util), 1);
+
+DECLARE_HOOK(android_vh_mmput,
+	TP_PROTO(struct mm_struct *mm),
+	TP_ARGS(mm));
+
+/* macro versions of hooks are no longer required */
+
+#endif /* _TRACE_HOOK_SCHED_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/selinux.h b/include/trace/hooks/selinux.h
new file mode 100644
index 0000000..0b65631b
--- /dev/null
+++ b/include/trace/hooks/selinux.h
@@ -0,0 +1,20 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM selinux
+
+#define TRACE_INCLUDE_PATH trace/hooks
+#if !defined(_TRACE_HOOK_SELINUX_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_SELINUX_H
+#include <trace/hooks/vendor_hooks.h>
+/*
+ * Following tracepoints are not exported in tracefs and provide a
+ * mechanism for vendor modules to hook and extend functionality
+ */
+struct selinux_state;
+DECLARE_RESTRICTED_HOOK(android_rvh_selinux_is_initialized,
+	TP_PROTO(const struct selinux_state *state),
+	TP_ARGS(state), 1);
+
+#endif /* _TRACE_HOOK_SELINUX_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/signal.h b/include/trace/hooks/signal.h
new file mode 100644
index 0000000..4e61006
--- /dev/null
+++ b/include/trace/hooks/signal.h
@@ -0,0 +1,19 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM signal
+#undef TRACE_INCLUDE_PATH
+#define TRACE_INCLUDE_PATH trace/hooks
+#if !defined(_TRACE_HOOK_SIGNAL_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_SIGNAL_H
+#include <trace/hooks/vendor_hooks.h>
+
+struct task_struct;
+DECLARE_HOOK(android_vh_do_send_sig_info,
+	TP_PROTO(int sig, struct task_struct *killer, struct task_struct *dst),
+	TP_ARGS(sig, killer, dst));
+DECLARE_HOOK(android_vh_exit_signal,
+	TP_PROTO(struct task_struct *task),
+	TP_ARGS(task));
+#endif /* _TRACE_HOOK_SIGNAL_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/softlockup.h b/include/trace/hooks/softlockup.h
new file mode 100644
index 0000000..eb28553
--- /dev/null
+++ b/include/trace/hooks/softlockup.h
@@ -0,0 +1,17 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM softlockup
+#define TRACE_INCLUDE_PATH trace/hooks
+
+#if !defined(_TRACE_HOOK_SOFTLOCKUP_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_SOFTLOCKUP_H
+#include <trace/hooks/vendor_hooks.h>
+
+struct pt_regs;
+DECLARE_HOOK(android_vh_watchdog_timer_softlockup,
+	TP_PROTO(int duration, struct pt_regs *regs, bool is_panic),
+	TP_ARGS(duration, regs, is_panic));
+
+#endif /* _TRACE_HOOK_SOFTLOCKUP_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/sys.h b/include/trace/hooks/sys.h
new file mode 100644
index 0000000..e2d5d6d
--- /dev/null
+++ b/include/trace/hooks/sys.h
@@ -0,0 +1,16 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM sys
+#undef TRACE_INCLUDE_PATH
+#define TRACE_INCLUDE_PATH trace/hooks
+#if !defined(_TRACE_HOOK_SYS_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_SYS_H
+#include <trace/hooks/vendor_hooks.h>
+
+struct task_struct;
+DECLARE_HOOK(android_vh_syscall_prctl_finished,
+	TP_PROTO(int option, struct task_struct *task),
+	TP_ARGS(option, task));
+#endif
+
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/syscall_check.h b/include/trace/hooks/syscall_check.h
new file mode 100644
index 0000000..56d8267
--- /dev/null
+++ b/include/trace/hooks/syscall_check.h
@@ -0,0 +1,30 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM syscall_check
+
+#define TRACE_INCLUDE_PATH trace/hooks
+#if !defined(_TRACE_HOOK_SYSCALL_CHECK_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_SYSCALL_CHECK_H
+#include <trace/hooks/vendor_hooks.h>
+/*
+ * Following tracepoints are not exported in tracefs and provide a
+ * mechanism for vendor modules to hook and extend functionality
+ */
+struct file;
+union bpf_attr;
+DECLARE_HOOK(android_vh_check_mmap_file,
+	TP_PROTO(const struct file *file, unsigned long prot,
+		unsigned long flag, unsigned long ret),
+	TP_ARGS(file, prot, flag, ret));
+
+DECLARE_HOOK(android_vh_check_file_open,
+	TP_PROTO(const struct file *file),
+	TP_ARGS(file));
+
+DECLARE_HOOK(android_vh_check_bpf_syscall,
+	TP_PROTO(int cmd, const union bpf_attr *attr, unsigned int size),
+	TP_ARGS(cmd, attr, size));
+
+#endif /* _TRACE_HOOK_SYSCALL_CHECK_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/sysrqcrash.h b/include/trace/hooks/sysrqcrash.h
new file mode 100644
index 0000000..92e7bc7
--- /dev/null
+++ b/include/trace/hooks/sysrqcrash.h
@@ -0,0 +1,19 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM sysrqcrash
+#define TRACE_INCLUDE_PATH trace/hooks
+
+#if !defined(_TRACE_HOOK_SYSRQCRASH_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_SYSRQCRASH_H
+#include <trace/hooks/vendor_hooks.h>
+/*
+ * Following tracepoints are not exported in tracefs and provide a
+ * mechanism for vendor modules to hook and extend functionality
+ */
+DECLARE_HOOK(android_vh_sysrq_crash,
+	TP_PROTO(void *data),
+	TP_ARGS(data));
+
+#endif /* _TRACE_HOOK_SYSRQCRASH_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/thermal.h b/include/trace/hooks/thermal.h
new file mode 100644
index 0000000..dd42f1d
--- /dev/null
+++ b/include/trace/hooks/thermal.h
@@ -0,0 +1,54 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM thermal
+
+#define TRACE_INCLUDE_PATH trace/hooks
+
+#if !defined(_TRACE_HOOK_THERMAL_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_THERMAL_H
+
+#include <trace/hooks/vendor_hooks.h>
+
+DECLARE_HOOK(android_vh_enable_thermal_genl_check,
+	TP_PROTO(int event, int tz_id, int *enable_thermal_genl),
+	TP_ARGS(event, tz_id, enable_thermal_genl));
+
+struct thermal_zone_device;
+DECLARE_HOOK(android_vh_thermal_pm_notify_suspend,
+	     TP_PROTO(struct thermal_zone_device *tz, int *irq_wakeable),
+	     TP_ARGS(tz, irq_wakeable));
+
+struct thermal_cooling_device;
+DECLARE_HOOK(android_vh_disable_thermal_cooling_stats,
+	TP_PROTO(struct thermal_cooling_device *cdev, bool *disable_stats),
+	TP_ARGS(cdev, disable_stats));
+
+struct cpufreq_policy;
+DECLARE_HOOK(android_vh_modify_thermal_request_freq,
+	TP_PROTO(struct cpufreq_policy *policy, unsigned long *request_freq),
+	TP_ARGS(policy, request_freq));
+
+DECLARE_HOOK(android_vh_modify_thermal_target_freq,
+	TP_PROTO(struct cpufreq_policy *policy, unsigned int *target_freq),
+	TP_ARGS(policy, target_freq));
+
+DECLARE_HOOK(android_vh_thermal_register,
+	TP_PROTO(struct cpufreq_policy *policy),
+	TP_ARGS(policy));
+
+DECLARE_HOOK(android_vh_thermal_unregister,
+	TP_PROTO(struct cpufreq_policy *policy),
+	TP_ARGS(policy));
+
+DECLARE_HOOK(android_vh_get_thermal_zone_device,
+	TP_PROTO(struct thermal_zone_device *tz),
+	TP_ARGS(tz));
+
+DECLARE_HOOK(android_vh_thermal_power_cap,
+	TP_PROTO(u32 *power_range),
+	TP_ARGS(power_range));
+
+#endif /* _TRACE_HOOK_THERMAL_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
+
diff --git a/include/trace/hooks/timer.h b/include/trace/hooks/timer.h
new file mode 100644
index 0000000..67ef865
--- /dev/null
+++ b/include/trace/hooks/timer.h
@@ -0,0 +1,18 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM timer
+
+#define TRACE_INCLUDE_PATH trace/hooks
+
+#if !defined(_TRACE_HOOK_TIMER_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_TIMER_H
+
+#include <trace/hooks/vendor_hooks.h>
+
+DECLARE_HOOK(android_vh_timer_calc_index,
+	TP_PROTO(unsigned int lvl, unsigned long *expires),
+	TP_ARGS(lvl, expires));
+
+#endif /* _TRACE_HOOK_TIMER_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/topology.h b/include/trace/hooks/topology.h
new file mode 100644
index 0000000..d2673d4
--- /dev/null
+++ b/include/trace/hooks/topology.h
@@ -0,0 +1,29 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM topology
+
+#define TRACE_INCLUDE_PATH trace/hooks
+
+#if !defined(_TRACE_HOOK_TOPOLOGY_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_TOPOLOGY_H
+
+#include <trace/hooks/vendor_hooks.h>
+
+struct cpumask;
+
+#if defined(CONFIG_TRACEPOINTS) && defined(CONFIG_ANDROID_VENDOR_HOOKS)
+
+DECLARE_HOOK(android_vh_arch_set_freq_scale,
+	TP_PROTO(const struct cpumask *cpus, unsigned long freq, unsigned long max,
+		unsigned long *scale),
+	TP_ARGS(cpus, freq, max, scale));
+
+#else
+
+#define trace_android_vh_arch_set_freq_scale(cpus, freq, max, scale)
+
+#endif
+
+#endif /* _TRACE_HOOK_TOPOLOGY_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/traps.h b/include/trace/hooks/traps.h
new file mode 100644
index 0000000..a11a1d3
--- /dev/null
+++ b/include/trace/hooks/traps.h
@@ -0,0 +1,35 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM traps
+#define TRACE_INCLUDE_PATH trace/hooks
+
+#if !defined(_TRACE_HOOK_TRAPS_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_TRAPS_H
+#include <trace/hooks/vendor_hooks.h>
+
+struct pt_regs;
+
+DECLARE_RESTRICTED_HOOK(android_rvh_do_undefinstr,
+	TP_PROTO(struct pt_regs *regs, unsigned long esr),
+	TP_ARGS(regs, esr),
+	TP_CONDITION(!user_mode(regs)));
+
+DECLARE_RESTRICTED_HOOK(android_rvh_do_el1_bti,
+	TP_PROTO(struct pt_regs *regs, unsigned long esr),
+	TP_ARGS(regs, esr), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_do_el1_fpac,
+	TP_PROTO(struct pt_regs *regs, unsigned long esr),
+	TP_ARGS(regs, esr), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_panic_unhandled,
+	TP_PROTO(struct pt_regs *regs, const char *vector, unsigned long esr),
+	TP_ARGS(regs, vector, esr), 1);
+
+DECLARE_RESTRICTED_HOOK(android_rvh_arm64_serror_panic,
+	TP_PROTO(struct pt_regs *regs, unsigned long esr),
+	TP_ARGS(regs, esr), 1);
+
+#endif /* _TRACE_HOOK_TRAPS_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/typec.h b/include/trace/hooks/typec.h
new file mode 100644
index 0000000..e1b5c8b
--- /dev/null
+++ b/include/trace/hooks/typec.h
@@ -0,0 +1,59 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM typec
+#define TRACE_INCLUDE_PATH trace/hooks
+#if !defined(_TRACE_HOOK_TYPEC_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_TYPEC_H
+#include <trace/hooks/vendor_hooks.h>
+/*
+ * Following tracepoints are not exported in tracefs and provide a
+ * mechanism for vendor modules to hook and extend functionality
+ */
+struct tcpci;
+struct tcpci_data;
+struct tcpm_port;
+
+#ifndef TYPEC_TIMER
+#define TYPEC_TIMER
+enum typec_timer {
+	SINK_WAIT_CAP,
+	SOURCE_OFF,
+	CC_DEBOUNCE,
+	SINK_DISCOVERY_BC12,
+};
+#endif
+
+DECLARE_HOOK(android_vh_typec_tcpci_override_toggling,
+	TP_PROTO(struct tcpci *tcpci, struct tcpci_data *data, int *override_toggling),
+	TP_ARGS(tcpci, data, override_toggling));
+
+/*
+ * This hook is for addressing hardware anomalies where TCPC_POWER_STATUS_VBUS_PRES bit can return 0
+ * even before falling below sSinkDisconnect threshold.
+ * Handler has to set bypass to override the value that would otherwise be returned by this
+ * function.
+ * Handler can set vbus or clear vbus to indicate vbus present or absent
+ */
+DECLARE_RESTRICTED_HOOK(android_rvh_typec_tcpci_get_vbus,
+	TP_PROTO(struct tcpci *tcpci, struct tcpci_data *data, int *vbus, int *bypass),
+	TP_ARGS(tcpci, data, vbus, bypass), 1);
+
+DECLARE_HOOK(android_vh_typec_tcpm_get_timer,
+	TP_PROTO(const char *state, enum typec_timer timer, unsigned int *msecs),
+	TP_ARGS(state, timer, msecs));
+
+DECLARE_HOOK(android_vh_typec_store_partner_src_caps,
+	TP_PROTO(unsigned int *nr_source_caps, u32 (*source_caps)[]),
+	TP_ARGS(nr_source_caps, source_caps));
+
+DECLARE_HOOK(android_vh_typec_tcpm_modify_src_caps,
+	TP_PROTO(unsigned int *nr_src_pdo, u32 (*src_pdo)[], bool *modified),
+	TP_ARGS(nr_src_pdo, src_pdo, modified));
+
+DECLARE_HOOK(android_vh_typec_tcpm_log,
+	TP_PROTO(const char *log, bool *bypass),
+	TP_ARGS(log, bypass));
+
+#endif /* _TRACE_HOOK_UFSHCD_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/ufshcd.h b/include/trace/hooks/ufshcd.h
new file mode 100644
index 0000000..6476710
--- /dev/null
+++ b/include/trace/hooks/ufshcd.h
@@ -0,0 +1,71 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM ufshcd
+#define TRACE_INCLUDE_PATH trace/hooks
+#if !defined(_TRACE_HOOK_UFSHCD_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_UFSHCD_H
+#include <trace/hooks/vendor_hooks.h>
+/*
+ * Following tracepoints are not exported in tracefs and provide a
+ * mechanism for vendor modules to hook and extend functionality
+ */
+struct ufs_hba;
+struct request;
+struct ufshcd_lrb;
+struct scsi_device;
+
+DECLARE_HOOK(android_vh_ufs_fill_prdt,
+	TP_PROTO(struct ufs_hba *hba, struct ufshcd_lrb *lrbp,
+		 unsigned int segments, int *err),
+	TP_ARGS(hba, lrbp, segments, err));
+
+DECLARE_HOOK(android_vh_ufs_prepare_command,
+	TP_PROTO(struct ufs_hba *hba, struct request *rq,
+		 struct ufshcd_lrb *lrbp, int *err),
+	TP_ARGS(hba, rq, lrbp, err));
+
+DECLARE_HOOK(android_vh_ufs_update_sysfs,
+	TP_PROTO(struct ufs_hba *hba),
+	TP_ARGS(hba));
+
+DECLARE_HOOK(android_vh_ufs_send_command,
+	TP_PROTO(struct ufs_hba *hba, struct ufshcd_lrb *lrbp),
+	TP_ARGS(hba, lrbp));
+
+DECLARE_HOOK(android_vh_ufs_compl_command,
+	TP_PROTO(struct ufs_hba *hba, struct ufshcd_lrb *lrbp),
+	TP_ARGS(hba, lrbp));
+
+struct uic_command;
+DECLARE_HOOK(android_vh_ufs_send_uic_command,
+	TP_PROTO(struct ufs_hba *hba, const struct uic_command *ucmd,
+		 int str_t),
+	TP_ARGS(hba, ucmd, str_t));
+
+DECLARE_HOOK(android_vh_ufs_send_tm_command,
+	TP_PROTO(struct ufs_hba *hba, int tag, int str_t),
+	TP_ARGS(hba, tag, str_t));
+
+DECLARE_HOOK(android_vh_ufs_check_int_errors,
+	TP_PROTO(struct ufs_hba *hba, bool queue_eh_work),
+	TP_ARGS(hba, queue_eh_work));
+
+DECLARE_HOOK(android_vh_ufs_update_sdev,
+	TP_PROTO(struct scsi_device *sdev),
+	TP_ARGS(sdev));
+
+DECLARE_HOOK(android_vh_ufs_clock_scaling,
+		TP_PROTO(struct ufs_hba *hba, bool *force_out, bool *force_scaling, bool *scale_up),
+		TP_ARGS(hba, force_out, force_scaling, scale_up));
+
+DECLARE_HOOK(android_vh_ufs_use_mcq_hooks,
+		TP_PROTO(struct ufs_hba *hba, bool *use_mcq),
+		TP_ARGS(hba, use_mcq));
+
+struct scsi_cmnd;
+DECLARE_HOOK(android_vh_ufs_mcq_abort,
+	TP_PROTO(struct ufs_hba *hba, struct scsi_cmnd *cmd, int *ret),
+	TP_ARGS(hba, cmd, ret));
+#endif /* _TRACE_HOOK_UFSHCD_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/user.h b/include/trace/hooks/user.h
new file mode 100644
index 0000000..773eed2
--- /dev/null
+++ b/include/trace/hooks/user.h
@@ -0,0 +1,22 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM user
+#undef TRACE_INCLUDE_PATH
+#define TRACE_INCLUDE_PATH trace/hooks
+#if !defined(_TRACE_HOOK_USER_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_USER_H
+#include <trace/hooks/vendor_hooks.h>
+
+struct user_struct;
+DECLARE_HOOK(android_vh_alloc_uid,
+	TP_PROTO(struct user_struct *user),
+	TP_ARGS(user));
+
+DECLARE_HOOK(android_vh_free_user,
+	TP_PROTO(struct user_struct *up),
+	TP_ARGS(up));
+
+#endif /* _TRACE_HOOK_USER_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
+
diff --git a/include/trace/hooks/vendor_hooks.h b/include/trace/hooks/vendor_hooks.h
new file mode 100644
index 0000000..48ee67a
--- /dev/null
+++ b/include/trace/hooks/vendor_hooks.h
@@ -0,0 +1,122 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+
+/*
+ * Note: we intentionally omit include file ifdef protection
+ *  This is due to the way trace events work. If a file includes two
+ *  trace event headers under one "CREATE_TRACE_POINTS" the first include
+ *  will override the DECLARE_RESTRICTED_HOOK and break the second include.
+ */
+
+#ifndef __GENKSYMS__
+#include <linux/tracepoint.h>
+#endif
+
+#if defined(CONFIG_TRACEPOINTS) && defined(CONFIG_ANDROID_VENDOR_HOOKS)
+
+#define DECLARE_HOOK DECLARE_TRACE
+
+int android_rvh_probe_register(struct tracepoint *tp, void *probe, void *data);
+
+#ifdef TRACE_HEADER_MULTI_READ
+
+#define DEFINE_HOOK_FN(_name, _reg, _unreg, proto, args)		\
+	static const char __tpstrtab_##_name[]				\
+	__section("__tracepoints_strings") = #_name;			\
+	extern struct static_call_key STATIC_CALL_KEY(tp_func_##_name);	\
+	int __traceiter_##_name(void *__data, proto);			\
+	struct tracepoint __tracepoint_##_name	__used			\
+	__section("__tracepoints") = {					\
+		.name = __tpstrtab_##_name,				\
+		.key = STATIC_KEY_INIT_FALSE,				\
+		.static_call_key = &STATIC_CALL_KEY(tp_func_##_name),	\
+		.static_call_tramp = STATIC_CALL_TRAMP_ADDR(tp_func_##_name), \
+		.iterator = &__traceiter_##_name,			\
+		.regfunc = _reg,					\
+		.unregfunc = _unreg,					\
+		.funcs = NULL };					\
+	__TRACEPOINT_ENTRY(_name);					\
+	int __traceiter_##_name(void *__data, proto)			\
+	{								\
+		struct tracepoint_func *it_func_ptr;			\
+		void *it_func;						\
+									\
+		it_func_ptr = (&__tracepoint_##_name)->funcs;		\
+		it_func = (it_func_ptr)->func;				\
+		do {							\
+			__data = (it_func_ptr)->data;			\
+			((void(*)(void *, proto))(it_func))(__data, args); \
+			it_func = READ_ONCE((++it_func_ptr)->func);	\
+		} while (it_func);					\
+		return 0;						\
+	}								\
+	DEFINE_STATIC_CALL(tp_func_##_name, __traceiter_##_name);
+
+#undef DECLARE_RESTRICTED_HOOK
+#define DECLARE_RESTRICTED_HOOK(name, proto, args, cond) \
+	DEFINE_HOOK_FN(name, NULL, NULL, PARAMS(proto), PARAMS(args))
+
+/* prevent additional recursion */
+#undef TRACE_HEADER_MULTI_READ
+#else /* TRACE_HEADER_MULTI_READ */
+
+#ifdef CONFIG_HAVE_STATIC_CALL
+#define __DO_RESTRICTED_HOOK_CALL(name, args)					\
+	do {								\
+		struct tracepoint_func *it_func_ptr;			\
+		void *__data;						\
+		it_func_ptr = (&__tracepoint_##name)->funcs;		\
+		if (it_func_ptr) {					\
+			__data = (it_func_ptr)->data;			\
+			static_call(tp_func_##name)(__data, args);	\
+		}							\
+	} while (0)
+#else
+#define __DO_RESTRICTED_HOOK_CALL(name, args)	__traceiter_##name(NULL, args)
+#endif
+
+#define DO_RESTRICTED_HOOK(name, args, cond)					\
+	do {								\
+		if (!(cond))						\
+			return;						\
+									\
+		__DO_RESTRICTED_HOOK_CALL(name, TP_ARGS(args));		\
+	} while (0)
+
+#define __DECLARE_RESTRICTED_HOOK(name, proto, args, cond, data_proto)	\
+	extern int __traceiter_##name(data_proto);			\
+	DECLARE_STATIC_CALL(tp_func_##name, __traceiter_##name);	\
+	extern struct tracepoint __tracepoint_##name;			\
+	static inline void trace_##name(proto)				\
+	{								\
+		if (static_key_false(&__tracepoint_##name.key))		\
+			DO_RESTRICTED_HOOK(name,			\
+					   TP_ARGS(args),		\
+					   TP_CONDITION(cond));		\
+	}								\
+	static inline bool						\
+	trace_##name##_enabled(void)					\
+	{								\
+		return static_key_false(&__tracepoint_##name.key);	\
+	}								\
+	static inline int						\
+	register_trace_##name(void (*probe)(data_proto), void *data) 	\
+	{								\
+		return android_rvh_probe_register(&__tracepoint_##name,	\
+						  (void *)probe, data);	\
+	}								\
+	/* vendor hooks cannot be unregistered */			\
+
+#undef DECLARE_RESTRICTED_HOOK
+#define DECLARE_RESTRICTED_HOOK(name, proto, args, cond)		\
+	__DECLARE_RESTRICTED_HOOK(name, PARAMS(proto), PARAMS(args),	\
+			cond,						\
+			PARAMS(void *__data, proto))
+
+#endif /* TRACE_HEADER_MULTI_READ */
+
+#else /* !CONFIG_TRACEPOINTS || !CONFIG_ANDROID_VENDOR_HOOKS */
+/* suppress trace hooks */
+#define DECLARE_HOOK DECLARE_EVENT_NOP
+#define DECLARE_RESTRICTED_HOOK(name, proto, args, cond)		\
+	DECLARE_EVENT_NOP(name, PARAMS(proto), PARAMS(args))
+#endif
diff --git a/include/trace/hooks/vmscan.h b/include/trace/hooks/vmscan.h
new file mode 100644
index 0000000..0896b11
--- /dev/null
+++ b/include/trace/hooks/vmscan.h
@@ -0,0 +1,41 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM vmscan
+
+#define TRACE_INCLUDE_PATH trace/hooks
+
+#if !defined(_TRACE_HOOK_VMSCAN_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_VMSCAN_H
+
+#include <trace/hooks/vendor_hooks.h>
+
+DECLARE_RESTRICTED_HOOK(android_rvh_set_balance_anon_file_reclaim,
+			TP_PROTO(bool *balance_anon_file_reclaim),
+			TP_ARGS(balance_anon_file_reclaim), 1);
+DECLARE_HOOK(android_vh_kswapd_per_node,
+	TP_PROTO(int nid, bool *skip, bool run),
+	TP_ARGS(nid, skip, run));
+DECLARE_HOOK(android_vh_shrink_slab_bypass,
+	TP_PROTO(gfp_t gfp_mask, int nid, struct mem_cgroup *memcg, int priority, bool *bypass),
+	TP_ARGS(gfp_mask, nid, memcg, priority, bypass));
+DECLARE_HOOK(android_vh_do_shrink_slab,
+	TP_PROTO(struct shrinker *shrinker, long *freeable),
+	TP_ARGS(shrinker, freeable));
+DECLARE_HOOK(android_vh_shrink_node_memcgs,
+	TP_PROTO(struct mem_cgroup *memcg, bool *skip),
+	TP_ARGS(memcg, skip));
+DECLARE_HOOK(android_vh_modify_scan_control,
+	TP_PROTO(u64 *ext, unsigned long *nr_to_reclaim,
+	struct mem_cgroup *target_mem_cgroup,
+	bool *file_is_tiny, bool *may_writepage),
+	TP_ARGS(ext, nr_to_reclaim, target_mem_cgroup, file_is_tiny, may_writepage));
+DECLARE_HOOK(android_vh_should_continue_reclaim,
+	TP_PROTO(u64 *ext, unsigned long *nr_to_reclaim,
+	unsigned long *nr_reclaimed, bool *continue_reclaim),
+	TP_ARGS(ext, nr_to_reclaim, nr_reclaimed, continue_reclaim));
+DECLARE_HOOK(android_vh_file_is_tiny_bypass,
+	TP_PROTO(bool file_is_tiny, bool *bypass),
+	TP_ARGS(file_is_tiny, bypass));
+#endif /* _TRACE_HOOK_VMSCAN_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/trace/hooks/wqlockup.h b/include/trace/hooks/wqlockup.h
new file mode 100644
index 0000000..92e01ab
--- /dev/null
+++ b/include/trace/hooks/wqlockup.h
@@ -0,0 +1,19 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM wqlockup
+#define TRACE_INCLUDE_PATH trace/hooks
+
+#if !defined(_TRACE_HOOK_WQLOCKUP_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_HOOK_WQLOCKUP_H
+#include <trace/hooks/vendor_hooks.h>
+/*
+ * Following tracepoints are not exported in tracefs and provide a
+ * mechanism for vendor modules to hook and extend functionality
+ */
+DECLARE_HOOK(android_vh_wq_lockup_pool,
+	TP_PROTO(int cpu, unsigned long pool_ts),
+	TP_ARGS(cpu, pool_ts));
+
+#endif /* _TRACE_HOOK_WQLOCKUP_H */
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/uapi/linux/android/binder.h b/include/uapi/linux/android/binder.h
index e72e4de..7fa36a8 100644
--- a/include/uapi/linux/android/binder.h
+++ b/include/uapi/linux/android/binder.h
@@ -38,11 +38,59 @@ enum {
 	BINDER_TYPE_PTR		= B_PACK_CHARS('p', 't', '*', B_TYPE_LARGE),
 };
 
-enum {
+/**
+ * enum flat_binder_object_shifts: shift values for flat_binder_object_flags
+ * @FLAT_BINDER_FLAG_SCHED_POLICY_SHIFT: shift for getting scheduler policy.
+ *
+ */
+enum flat_binder_object_shifts {
+	FLAT_BINDER_FLAG_SCHED_POLICY_SHIFT = 9,
+};
+
+/**
+ * enum flat_binder_object_flags - flags for use in flat_binder_object.flags
+ */
+enum flat_binder_object_flags {
+	/**
+	 * @FLAT_BINDER_FLAG_PRIORITY_MASK: bit-mask for min scheduler priority
+	 *
+	 * These bits can be used to set the minimum scheduler priority
+	 * at which transactions into this node should run. Valid values
+	 * in these bits depend on the scheduler policy encoded in
+	 * @FLAT_BINDER_FLAG_SCHED_POLICY_MASK.
+	 *
+	 * For SCHED_NORMAL/SCHED_BATCH, the valid range is between [-20..19]
+	 * For SCHED_FIFO/SCHED_RR, the value can run between [1..99]
+	 */
 	FLAT_BINDER_FLAG_PRIORITY_MASK = 0xff,
+	/**
+	 * @FLAT_BINDER_FLAG_ACCEPTS_FDS: whether the node accepts fds.
+	 */
 	FLAT_BINDER_FLAG_ACCEPTS_FDS = 0x100,
 
 	/**
+	 * @FLAT_BINDER_FLAG_SCHED_POLICY_MASK: bit-mask for scheduling policy
+	 *
+	 * These two bits can be used to set the min scheduling policy at which
+	 * transactions on this node should run. These match the UAPI
+	 * scheduler policy values, eg:
+	 * 00b: SCHED_NORMAL
+	 * 01b: SCHED_FIFO
+	 * 10b: SCHED_RR
+	 * 11b: SCHED_BATCH
+	 */
+	FLAT_BINDER_FLAG_SCHED_POLICY_MASK =
+		3U << FLAT_BINDER_FLAG_SCHED_POLICY_SHIFT,
+
+	/**
+	 * @FLAT_BINDER_FLAG_INHERIT_RT: whether the node inherits RT policy
+	 *
+	 * Only when set, calls into this node will inherit a real-time
+	 * scheduling policy from the caller (for synchronous transactions).
+	 */
+	FLAT_BINDER_FLAG_INHERIT_RT = 0x800,
+
+	/**
 	 * @FLAT_BINDER_FLAG_TXN_SECURITY_CTX: request security contexts
 	 *
 	 * Only when set, causes senders to include their security
diff --git a/include/uapi/linux/android_fuse.h b/include/uapi/linux/android_fuse.h
new file mode 100644
index 0000000..221e30e
--- /dev/null
+++ b/include/uapi/linux/android_fuse.h
@@ -0,0 +1,97 @@
+/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause WITH Linux-syscall-note */
+/* Copyright (c) 2022 Google LLC */
+
+#ifndef _LINUX_ANDROID_FUSE_H
+#define _LINUX_ANDROID_FUSE_H
+
+#ifdef __KERNEL__
+#include <linux/types.h>
+#else
+#include <stdint.h>
+#endif
+
+#define FUSE_ACTION_KEEP	0
+#define FUSE_ACTION_REMOVE	1
+#define FUSE_ACTION_REPLACE	2
+
+struct fuse_entry_bpf_out {
+	uint64_t	backing_action;
+	uint64_t	backing_fd;
+	uint64_t	bpf_action;
+	uint64_t	bpf_fd;
+};
+
+struct fuse_entry_bpf {
+	struct fuse_entry_bpf_out out;
+	struct file *backing_file;
+	struct file *bpf_file;
+};
+
+struct fuse_read_out {
+	uint64_t	offset;
+	uint32_t	again;
+	uint32_t	padding;
+};
+
+struct fuse_in_postfilter_header {
+	uint32_t	len;
+	uint32_t	opcode;
+	uint64_t	unique;
+	uint64_t	nodeid;
+	uint32_t	uid;
+	uint32_t	gid;
+	uint32_t	pid;
+	uint32_t	error_in;
+};
+
+/*
+ * Fuse BPF Args
+ *
+ * Used to communicate with bpf programs to allow checking or altering certain values.
+ * The end_offset allows the bpf verifier to check boundaries statically. This reflects
+ * the ends of the buffer. size shows the length that was actually used.
+ *
+ */
+
+/** One input argument of a request */
+struct fuse_bpf_in_arg {
+	uint32_t size;
+	const void *value;
+	const void *end_offset;
+};
+
+/** One output argument of a request */
+struct fuse_bpf_arg {
+	uint32_t size;
+	void *value;
+	void *end_offset;
+};
+
+#define FUSE_MAX_IN_ARGS 5
+#define FUSE_MAX_OUT_ARGS 3
+
+#define FUSE_BPF_FORCE (1 << 0)
+#define FUSE_BPF_OUT_ARGVAR (1 << 6)
+
+struct fuse_bpf_args {
+	uint64_t nodeid;
+	uint32_t opcode;
+	uint32_t error_in;
+	uint32_t in_numargs;
+	uint32_t out_numargs;
+	uint32_t flags;
+	struct fuse_bpf_in_arg in_args[FUSE_MAX_IN_ARGS];
+	struct fuse_bpf_arg out_args[FUSE_MAX_OUT_ARGS];
+};
+
+#define FUSE_BPF_USER_FILTER	1
+#define FUSE_BPF_BACKING	2
+#define FUSE_BPF_POST_FILTER	4
+
+#define FUSE_OPCODE_FILTER	0x0ffff
+#define FUSE_PREFILTER		0x10000
+#define FUSE_POSTFILTER		0x20000
+
+struct bpf_prog *fuse_get_bpf_prog(struct file *file);
+
+#endif  /* _LINUX_ANDROID_FUSE_H */
diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h
index 51b9aa6..a8b5bf3 100644
--- a/include/uapi/linux/bpf.h
+++ b/include/uapi/linux/bpf.h
@@ -978,6 +978,16 @@ enum bpf_prog_type {
 	BPF_PROG_TYPE_LSM,
 	BPF_PROG_TYPE_SK_LOOKUP,
 	BPF_PROG_TYPE_SYSCALL, /* a program that can execute syscalls */
+
+	/*
+	 * Until fuse-bpf is upstreamed, this value must be at the end to allow for
+	 * other recently-added upstreamed values to be correct.
+	 * This works because no one should use this value directly, rather they must
+	 * read the value from /sys/fs/fuse/bpf_prog_type_fuse
+	 * Please maintain this value at the end of the list until fuse-bpf is
+	 * upstreamed.
+	 */
+	BPF_PROG_TYPE_FUSE,
 };
 
 enum bpf_attach_type {
diff --git a/include/uapi/linux/dm-user.h b/include/uapi/linux/dm-user.h
new file mode 100644
index 0000000..6d8f535b
--- /dev/null
+++ b/include/uapi/linux/dm-user.h
@@ -0,0 +1,68 @@
+/* SPDX-License-Identifier: LGPL-2.0+ WITH Linux-syscall-note */
+/*
+ * Copyright (C) 2020 Google, Inc
+ * Copyright (C) 2020 Palmer Dabbelt <palmerdabbelt@google.com>
+ */
+
+#ifndef _LINUX_DM_USER_H
+#define _LINUX_DM_USER_H
+
+#include <linux/types.h>
+
+/*
+ * dm-user proxies device mapper ops between the kernel and userspace.  It's
+ * essentially just an RPC mechanism: all kernel calls create a request,
+ * userspace handles that with a response.  Userspace obtains requests via
+ * read() and provides responses via write().
+ *
+ * See Documentation/block/dm-user.rst for more information.
+ */
+
+#define DM_USER_REQ_MAP_READ 0
+#define DM_USER_REQ_MAP_WRITE 1
+#define DM_USER_REQ_MAP_FLUSH 2
+#define DM_USER_REQ_MAP_DISCARD 3
+#define DM_USER_REQ_MAP_SECURE_ERASE 4
+#define DM_USER_REQ_MAP_WRITE_SAME 5
+#define DM_USER_REQ_MAP_WRITE_ZEROES 6
+#define DM_USER_REQ_MAP_ZONE_OPEN 7
+#define DM_USER_REQ_MAP_ZONE_CLOSE 8
+#define DM_USER_REQ_MAP_ZONE_FINISH 9
+#define DM_USER_REQ_MAP_ZONE_APPEND 10
+#define DM_USER_REQ_MAP_ZONE_RESET 11
+#define DM_USER_REQ_MAP_ZONE_RESET_ALL 12
+
+#define DM_USER_REQ_MAP_FLAG_FAILFAST_DEV 0x00001
+#define DM_USER_REQ_MAP_FLAG_FAILFAST_TRANSPORT 0x00002
+#define DM_USER_REQ_MAP_FLAG_FAILFAST_DRIVER 0x00004
+#define DM_USER_REQ_MAP_FLAG_SYNC 0x00008
+#define DM_USER_REQ_MAP_FLAG_META 0x00010
+#define DM_USER_REQ_MAP_FLAG_PRIO 0x00020
+#define DM_USER_REQ_MAP_FLAG_NOMERGE 0x00040
+#define DM_USER_REQ_MAP_FLAG_IDLE 0x00080
+#define DM_USER_REQ_MAP_FLAG_INTEGRITY 0x00100
+#define DM_USER_REQ_MAP_FLAG_FUA 0x00200
+#define DM_USER_REQ_MAP_FLAG_PREFLUSH 0x00400
+#define DM_USER_REQ_MAP_FLAG_RAHEAD 0x00800
+#define DM_USER_REQ_MAP_FLAG_BACKGROUND 0x01000
+#define DM_USER_REQ_MAP_FLAG_NOWAIT 0x02000
+#define DM_USER_REQ_MAP_FLAG_CGROUP_PUNT 0x04000
+#define DM_USER_REQ_MAP_FLAG_NOUNMAP 0x08000
+#define DM_USER_REQ_MAP_FLAG_HIPRI 0x10000
+#define DM_USER_REQ_MAP_FLAG_DRV 0x20000
+#define DM_USER_REQ_MAP_FLAG_SWAP 0x40000
+
+#define DM_USER_RESP_SUCCESS 0
+#define DM_USER_RESP_ERROR 1
+#define DM_USER_RESP_UNSUPPORTED 2
+
+struct dm_user_message {
+	__u64 seq;
+	__u64 type;
+	__u64 flags;
+	__u64 sector;
+	__u64 len;
+	__u8 buf[];
+};
+
+#endif
diff --git a/include/uapi/linux/f2fs.h b/include/uapi/linux/f2fs.h
index 3121d12..955d440 100644
--- a/include/uapi/linux/f2fs.h
+++ b/include/uapi/linux/f2fs.h
@@ -42,6 +42,7 @@
 						struct f2fs_comp_option)
 #define F2FS_IOC_DECOMPRESS_FILE	_IO(F2FS_IOCTL_MAGIC, 23)
 #define F2FS_IOC_COMPRESS_FILE		_IO(F2FS_IOCTL_MAGIC, 24)
+#define F2FS_IOC_START_ATOMIC_REPLACE	_IO(F2FS_IOCTL_MAGIC, 25)
 
 /*
  * should be same as XFS_IOC_GOINGDOWN.
diff --git a/include/uapi/linux/fscrypt.h b/include/uapi/linux/fscrypt.h
index a756b29..024def3 100644
--- a/include/uapi/linux/fscrypt.h
+++ b/include/uapi/linux/fscrypt.h
@@ -26,6 +26,8 @@
 #define FSCRYPT_MODE_AES_256_CTS		4
 #define FSCRYPT_MODE_AES_128_CBC		5
 #define FSCRYPT_MODE_AES_128_CTS		6
+#define FSCRYPT_MODE_SM4_XTS			7
+#define FSCRYPT_MODE_SM4_CTS			8
 #define FSCRYPT_MODE_ADIANTUM			9
 #define FSCRYPT_MODE_AES_256_HCTR2		10
 /* If adding a mode number > 10, update FSCRYPT_MODE_MAX in fscrypt_private.h */
@@ -125,7 +127,10 @@ struct fscrypt_add_key_arg {
 	struct fscrypt_key_specifier key_spec;
 	__u32 raw_size;
 	__u32 key_id;
-	__u32 __reserved[8];
+	__u32 __reserved[7];
+	/* N.B.: "temporary" flag, not reserved upstream */
+#define __FSCRYPT_ADD_KEY_FLAG_HW_WRAPPED		0x00000001
+	__u32 __flags;
 	__u8 raw[];
 };
 
@@ -185,8 +190,6 @@ struct fscrypt_get_key_status_arg {
 #define FS_ENCRYPTION_MODE_AES_256_CTS	FSCRYPT_MODE_AES_256_CTS
 #define FS_ENCRYPTION_MODE_AES_128_CBC	FSCRYPT_MODE_AES_128_CBC
 #define FS_ENCRYPTION_MODE_AES_128_CTS	FSCRYPT_MODE_AES_128_CTS
-#define FS_ENCRYPTION_MODE_SPECK128_256_XTS	7	/* removed */
-#define FS_ENCRYPTION_MODE_SPECK128_256_CTS	8	/* removed */
 #define FS_ENCRYPTION_MODE_ADIANTUM	FSCRYPT_MODE_ADIANTUM
 #define FS_KEY_DESC_PREFIX		FSCRYPT_KEY_DESC_PREFIX
 #define FS_KEY_DESC_PREFIX_SIZE		FSCRYPT_KEY_DESC_PREFIX_SIZE
diff --git a/include/uapi/linux/fuse.h b/include/uapi/linux/fuse.h
index 76ee8f9..9b691de 100644
--- a/include/uapi/linux/fuse.h
+++ b/include/uapi/linux/fuse.h
@@ -393,6 +393,18 @@ struct fuse_file_lock {
 #define FUSE_SECURITY_CTX	(1ULL << 32)
 #define FUSE_HAS_INODE_DAX	(1ULL << 33)
 
+/*
+ * For FUSE < 7.36 FUSE_PASSTHROUGH has value (1 << 31).
+ * This condition check is not really required, but would prevent having a
+ * broken commit in the tree.
+ */
+#if FUSE_KERNEL_VERSION > 7 ||                                                 \
+	(FUSE_KERNEL_VERSION == 7 && FUSE_KERNEL_MINOR_VERSION >= 36)
+#define FUSE_PASSTHROUGH (1ULL << 63)
+#else
+#define FUSE_PASSTHROUGH (1 << 31)
+#endif
+
 /**
  * CUSE INIT request/reply flags
  *
@@ -541,6 +553,7 @@ enum fuse_opcode {
 	FUSE_REMOVEMAPPING	= 49,
 	FUSE_SYNCFS		= 50,
 	FUSE_TMPFILE		= 51,
+	FUSE_CANONICAL_PATH	= 2016,
 
 	/* CUSE specific operations */
 	CUSE_INIT		= 4096,
@@ -667,7 +680,7 @@ struct fuse_create_in {
 struct fuse_open_out {
 	uint64_t	fh;
 	uint32_t	open_flags;
-	uint32_t	padding;
+	uint32_t	passthrough_fh;
 };
 
 struct fuse_release_in {
@@ -957,6 +970,9 @@ struct fuse_notify_retrieve_in {
 /* Device ioctls: */
 #define FUSE_DEV_IOC_MAGIC		229
 #define FUSE_DEV_IOC_CLONE		_IOR(FUSE_DEV_IOC_MAGIC, 0, uint32_t)
+/* 127 is reserved for the V1 interface implementation in Android (deprecated) */
+/* 126 is reserved for the V2 interface implementation in Android */
+#define FUSE_DEV_IOC_PASSTHROUGH_OPEN	_IOW(FUSE_DEV_IOC_MAGIC, 126, uint32_t)
 
 struct fuse_lseek_in {
 	uint64_t	fh;
diff --git a/include/uapi/linux/gunyah.h b/include/uapi/linux/gunyah.h
new file mode 100644
index 0000000..a1919c7
--- /dev/null
+++ b/include/uapi/linux/gunyah.h
@@ -0,0 +1,311 @@
+/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
+/*
+ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+#ifndef _UAPI_LINUX_GUNYAH_H
+#define _UAPI_LINUX_GUNYAH_H
+
+/*
+ * Userspace interface for /dev/gunyah - gunyah based virtual machine
+ */
+
+#include <linux/types.h>
+#include <linux/ioctl.h>
+
+#define GH_IOCTL_TYPE			'G'
+
+/*
+ * ioctls for /dev/gunyah fds:
+ */
+#define GH_CREATE_VM			_IO(GH_IOCTL_TYPE, 0x0) /* Returns a Gunyah VM fd */
+
+/*
+ * ioctls for VM fds
+ */
+
+/**
+ * enum gh_mem_flags - Possible flags on &struct gh_userspace_memory_region
+ * @GH_MEM_ALLOW_READ: Allow guest to read the memory
+ * @GH_MEM_ALLOW_WRITE: Allow guest to write to the memory
+ * @GH_MEM_ALLOW_EXEC: Allow guest to execute instructions in the memory
+ */
+enum gh_mem_flags {
+	GH_MEM_ALLOW_READ	= 1UL << 0,
+	GH_MEM_ALLOW_WRITE	= 1UL << 1,
+	GH_MEM_ALLOW_EXEC	= 1UL << 2,
+};
+
+/**
+ * struct gh_userspace_memory_region - Userspace memory descripion for GH_VM_SET_USER_MEM_REGION
+ * @label: Identifer to the region which is unique to the VM.
+ * @flags: Flags for memory parcel behavior. See &enum gh_mem_flags.
+ * @guest_phys_addr: Location of the memory region in guest's memory space (page-aligned)
+ * @memory_size: Size of the region (page-aligned)
+ * @userspace_addr: Location of the memory region in caller (userspace)'s memory
+ *
+ * See Documentation/virt/gunyah/vm-manager.rst for further details.
+ */
+struct gh_userspace_memory_region {
+	__u32 label;
+	__u32 flags;
+	__u64 guest_phys_addr;
+	__u64 memory_size;
+	__u64 userspace_addr;
+};
+
+#define GH_VM_SET_USER_MEM_REGION	_IOW(GH_IOCTL_TYPE, 0x1, \
+						struct gh_userspace_memory_region)
+
+/**
+ * struct gh_vm_dtb_config - Set the location of the VM's devicetree blob
+ * @guest_phys_addr: Address of the VM's devicetree in guest memory.
+ * @size: Maximum size of the devicetree including space for overlays.
+ *        Resource manager applies an overlay to the DTB and dtb_size should
+ *        include room for the overlay. A page of memory is typicaly plenty.
+ */
+struct gh_vm_dtb_config {
+	__u64 guest_phys_addr;
+	__u64 size;
+};
+#define GH_VM_SET_DTB_CONFIG	_IOW(GH_IOCTL_TYPE, 0x2, struct gh_vm_dtb_config)
+
+#define GH_VM_START		_IO(GH_IOCTL_TYPE, 0x3)
+
+/**
+ * enum gh_fn_type - Valid types of Gunyah VM functions
+ * @GH_FN_VCPU: create a vCPU instance to control a vCPU
+ *              &struct gh_fn_desc.arg is a pointer to &struct gh_fn_vcpu_arg
+ *              Return: file descriptor to manipulate the vcpu.
+ * @GH_FN_IRQFD: register eventfd to assert a Gunyah doorbell
+ *               &struct gh_fn_desc.arg is a pointer to &struct gh_fn_irqfd_arg
+ * @GH_FN_IOEVENTFD: register ioeventfd to trigger when VM faults on parameter
+ *                   &struct gh_fn_desc.arg is a pointer to &struct gh_fn_ioeventfd_arg
+ */
+enum gh_fn_type {
+	GH_FN_VCPU = 1,
+	GH_FN_IRQFD,
+	GH_FN_IOEVENTFD,
+};
+
+#define GH_FN_MAX_ARG_SIZE		256
+
+/**
+ * struct gh_fn_vcpu_arg - Arguments to create a vCPU.
+ * @id: vcpu id
+ *
+ * Create this function with &GH_VM_ADD_FUNCTION using type &GH_FN_VCPU.
+ *
+ * The vcpu type will register with the VM Manager to expect to control
+ * vCPU number `vcpu_id`. It returns a file descriptor allowing interaction with
+ * the vCPU. See the Gunyah vCPU API description sections for interacting with
+ * the Gunyah vCPU file descriptors.
+ */
+struct gh_fn_vcpu_arg {
+	__u32 id;
+};
+
+/**
+ * enum gh_irqfd_flags - flags for use in gh_fn_irqfd_arg
+ * @GH_IRQFD_FLAGS_LEVEL: make the interrupt operate like a level triggered
+ *                        interrupt on guest side. Triggering IRQFD before
+ *                        guest handles the interrupt causes interrupt to
+ *                        stay asserted.
+ */
+enum gh_irqfd_flags {
+	GH_IRQFD_FLAGS_LEVEL		= 1UL << 0,
+};
+
+/**
+ * struct gh_fn_irqfd_arg - Arguments to create an irqfd function.
+ *
+ * Create this function with &GH_VM_ADD_FUNCTION using type &GH_FN_IRQFD.
+ *
+ * Allows setting an eventfd to directly trigger a guest interrupt.
+ * irqfd.fd specifies the file descriptor to use as the eventfd.
+ * irqfd.label corresponds to the doorbell label used in the guest VM's devicetree.
+ *
+ * @fd: an eventfd which when written to will raise a doorbell
+ * @label: Label of the doorbell created on the guest VM
+ * @flags: see &enum gh_irqfd_flags
+ * @padding: padding bytes
+ */
+struct gh_fn_irqfd_arg {
+	__u32 fd;
+	__u32 label;
+	__u32 flags;
+	__u32 padding;
+};
+
+/**
+ * enum gh_ioeventfd_flags - flags for use in gh_fn_ioeventfd_arg
+ * @GH_IOEVENTFD_FLAGS_DATAMATCH: the event will be signaled only if the
+ *                                written value to the registered address is
+ *                                equal to &struct gh_fn_ioeventfd_arg.datamatch
+ */
+enum gh_ioeventfd_flags {
+	GH_IOEVENTFD_FLAGS_DATAMATCH	= 1UL << 0,
+};
+
+/**
+ * struct gh_fn_ioeventfd_arg - Arguments to create an ioeventfd function
+ * @datamatch: data used when GH_IOEVENTFD_DATAMATCH is set
+ * @addr: Address in guest memory
+ * @len: Length of access
+ * @fd: When ioeventfd is matched, this eventfd is written
+ * @flags: See &enum gh_ioeventfd_flags
+ * @padding: padding bytes
+ *
+ * Create this function with &GH_VM_ADD_FUNCTION using type &GH_FN_IOEVENTFD.
+ *
+ * Attaches an ioeventfd to a legal mmio address within the guest. A guest write
+ * in the registered address will signal the provided event instead of triggering
+ * an exit on the GH_VCPU_RUN ioctl.
+ */
+struct gh_fn_ioeventfd_arg {
+	__u64 datamatch;
+	__u64 addr;        /* legal mmio address */
+	__u32 len;         /* 1, 2, 4, or 8 bytes; or 0 to ignore length */
+	__s32 fd;
+	__u32 flags;
+	__u32 padding;
+};
+
+/**
+ * struct gh_fn_desc - Arguments to create a VM function
+ * @type: Type of the function. See &enum gh_fn_type.
+ * @arg_size: Size of argument to pass to the function. arg_size <= GH_FN_MAX_ARG_SIZE
+ * @arg: Pointer to argument given to the function. See &enum gh_fn_type for expected
+ *       arguments for a function type.
+ */
+struct gh_fn_desc {
+	__u32 type;
+	__u32 arg_size;
+	__u64 arg;
+};
+
+#define GH_VM_ADD_FUNCTION	_IOW(GH_IOCTL_TYPE, 0x4, struct gh_fn_desc)
+#define GH_VM_REMOVE_FUNCTION	_IOW(GH_IOCTL_TYPE, 0x7, struct gh_fn_desc)
+
+/*
+ * ioctls for vCPU fds
+ */
+
+/**
+ * enum gh_vm_status - Stores status reason why VM is not runnable (exited).
+ * @GH_VM_STATUS_LOAD_FAILED: VM didn't start because it couldn't be loaded.
+ * @GH_VM_STATUS_EXITED: VM requested shutdown/reboot.
+ *                       Use &struct gh_vm_exit_info.reason for further details.
+ * @GH_VM_STATUS_CRASHED: VM state is unknown and has crashed.
+ */
+enum gh_vm_status {
+	GH_VM_STATUS_LOAD_FAILED	= 1,
+	GH_VM_STATUS_EXITED		= 2,
+	GH_VM_STATUS_CRASHED		= 3,
+};
+
+/*
+ * Gunyah presently sends max 4 bytes of exit_reason.
+ * If that changes, this macro can be safely increased without breaking
+ * userspace so long as struct gh_vcpu_run < PAGE_SIZE.
+ */
+#define GH_VM_MAX_EXIT_REASON_SIZE	8u
+
+/**
+ * struct gh_vm_exit_info - Reason for VM exit as reported by Gunyah
+ * See Gunyah documentation for values.
+ * @type: Describes how VM exited
+ * @padding: padding bytes
+ * @reason_size: Number of bytes valid for `reason`
+ * @reason: See Gunyah documentation for interpretation. Note: these values are
+ *          not interpreted by Linux and need to be converted from little-endian
+ *          as applicable.
+ */
+struct gh_vm_exit_info {
+	__u16 type;
+	__u16 padding;
+	__u32 reason_size;
+	__u8 reason[GH_VM_MAX_EXIT_REASON_SIZE];
+};
+
+/**
+ * enum gh_vcpu_exit - Stores reason why &GH_VCPU_RUN ioctl recently exited with status 0
+ * @GH_VCPU_EXIT_UNKNOWN: Not used, status != 0
+ * @GH_VCPU_EXIT_MMIO: vCPU performed a read or write that could not be handled
+ *                     by hypervisor or Linux. Use @struct gh_vcpu_run.mmio for
+ *                     details of the read/write.
+ * @GH_VCPU_EXIT_STATUS: vCPU not able to run because the VM has exited.
+ *                       Use @struct gh_vcpu_run.status for why VM has exited.
+ */
+enum gh_vcpu_exit {
+	GH_VCPU_EXIT_UNKNOWN,
+	GH_VCPU_EXIT_MMIO,
+	GH_VCPU_EXIT_STATUS,
+};
+
+/**
+ * struct gh_vcpu_run - Application code obtains a pointer to the gh_vcpu_run
+ *                      structure by mmap()ing a vcpu fd.
+ * @immediate_exit: polled when scheduling the vcpu. If set, immediately returns -EINTR.
+ * @padding: padding bytes
+ * @exit_reason: Set when GH_VCPU_RUN returns successfully and gives reason why
+ *               GH_VCPU_RUN has stopped running the vCPU. See &enum gh_vcpu_exit.
+ * @mmio: Used when exit_reason == GH_VCPU_EXIT_MMIO
+ *        The guest has faulted on an memory-mapped I/O instruction that
+ *        couldn't be satisfied by gunyah.
+ * @mmio.phys_addr: Address guest tried to access
+ * @mmio.data: the value that was written if `is_write == 1`. Filled by
+ *        user for reads (`is_write == 0`).
+ * @mmio.len: Length of write. Only the first `len` bytes of `data`
+ *       are considered by Gunyah.
+ * @mmio.is_write: 1 if VM tried to perform a write, 0 for a read
+ * @status: Used when exit_reason == GH_VCPU_EXIT_STATUS.
+ *          The guest VM is no longer runnable. This struct informs why.
+ * @status.status: See &enum gh_vm_status for possible values
+ * @status.exit_info: Used when status == GH_VM_STATUS_EXITED
+ */
+struct gh_vcpu_run {
+	/* in */
+	__u8 immediate_exit;
+	__u8 padding[7];
+
+	/* out */
+	__u32 exit_reason;
+
+	union {
+		struct {
+			__u64 phys_addr;
+			__u8  data[8];
+			__u32 len;
+			__u8  is_write;
+		} mmio;
+
+		struct {
+			enum gh_vm_status status;
+			struct gh_vm_exit_info exit_info;
+		} status;
+	};
+};
+
+#define GH_VCPU_RUN		_IO(GH_IOCTL_TYPE, 0x5)
+#define GH_VCPU_MMAP_SIZE	_IO(GH_IOCTL_TYPE, 0x6)
+
+/**
+ * ANDROID: android14-6.1 unfortunately contains UAPI that won't be carried
+ * in kernel.org. Expose orthogonal ioctls that will never conflict with
+ * kernel.org for these UAPIs. See b/268234781.
+ */
+#define GH_ANDROID_IOCTL_TYPE		'A'
+
+#define GH_VM_ANDROID_LEND_USER_MEM	_IOW(GH_ANDROID_IOCTL_TYPE, 0x11, \
+						struct gh_userspace_memory_region)
+
+struct gh_vm_firmware_config {
+	__u64 guest_phys_addr;
+	__u64 size;
+};
+
+#define GH_VM_ANDROID_SET_FW_CONFIG	_IOW(GH_ANDROID_IOCTL_TYPE, 0x12, \
+						struct gh_vm_firmware_config)
+
+#endif
diff --git a/include/uapi/linux/icmp.h b/include/uapi/linux/icmp.h
index 163c099..d3242d5 100644
--- a/include/uapi/linux/icmp.h
+++ b/include/uapi/linux/icmp.h
@@ -97,7 +97,11 @@ struct icmphdr {
 	} echo;
 	__be32	gateway;
 	struct {
+#ifdef __BIONIC__
+		__be16	__linux_unused;
+#else
 		__be16	__unused;
+#endif
 		__be16	mtu;
 	} frag;
 	__u8	reserved[4];
diff --git a/include/uapi/linux/incrementalfs.h b/include/uapi/linux/incrementalfs.h
new file mode 100644
index 0000000..f8338af
--- /dev/null
+++ b/include/uapi/linux/incrementalfs.h
@@ -0,0 +1,590 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
+/*
+ * Userspace interface for Incremental FS.
+ *
+ * Incremental FS is special-purpose Linux virtual file system that allows
+ * execution of a program while its binary and resource files are still being
+ * lazily downloaded over the network, USB etc.
+ *
+ * Copyright 2019 Google LLC
+ */
+#ifndef _UAPI_LINUX_INCREMENTALFS_H
+#define _UAPI_LINUX_INCREMENTALFS_H
+
+#include <linux/limits.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/xattr.h>
+
+/* ===== constants ===== */
+#define INCFS_NAME "incremental-fs"
+
+/*
+ * Magic number used in file header and in memory superblock
+ * Note that it is a 5 byte unsigned long. Thus on 32 bit kernels, it is
+ * truncated to a 4 byte number
+ */
+#define INCFS_MAGIC_NUMBER (0x5346434e49ul & ULONG_MAX)
+
+#define INCFS_DATA_FILE_BLOCK_SIZE 4096
+#define INCFS_HEADER_VER 1
+
+/* TODO: This value is assumed in incfs_copy_signature_info_from_user to be the
+ * actual signature length. Set back to 64 when fixed.
+ */
+#define INCFS_MAX_HASH_SIZE 32
+#define INCFS_MAX_FILE_ATTR_SIZE 512
+
+#define INCFS_INDEX_NAME ".index"
+#define INCFS_INCOMPLETE_NAME ".incomplete"
+#define INCFS_PENDING_READS_FILENAME ".pending_reads"
+#define INCFS_LOG_FILENAME ".log"
+#define INCFS_BLOCKS_WRITTEN_FILENAME ".blocks_written"
+#define INCFS_XATTR_ID_NAME (XATTR_USER_PREFIX "incfs.id")
+#define INCFS_XATTR_SIZE_NAME (XATTR_USER_PREFIX "incfs.size")
+#define INCFS_XATTR_METADATA_NAME (XATTR_USER_PREFIX "incfs.metadata")
+#define INCFS_XATTR_VERITY_NAME (XATTR_USER_PREFIX "incfs.verity")
+
+#define INCFS_MAX_SIGNATURE_SIZE 8096
+#define INCFS_SIGNATURE_VERSION 2
+#define INCFS_SIGNATURE_SECTIONS 2
+
+#define INCFS_IOCTL_BASE_CODE 'g'
+
+/* ===== ioctl requests on the command dir ===== */
+
+/*
+ * Create a new file
+ * May only be called on .pending_reads file
+ */
+#define INCFS_IOC_CREATE_FILE \
+	_IOWR(INCFS_IOCTL_BASE_CODE, 30, struct incfs_new_file_args)
+
+/* Read file signature */
+#define INCFS_IOC_READ_FILE_SIGNATURE                                          \
+	_IOR(INCFS_IOCTL_BASE_CODE, 31, struct incfs_get_file_sig_args)
+
+/*
+ * Fill in one or more data block. This may only be called on a handle
+ * passed as a parameter to INCFS_IOC_PERMIT_FILLING
+ *
+ * Returns number of blocks filled in, or error if none were
+ */
+#define INCFS_IOC_FILL_BLOCKS                                                  \
+	_IOR(INCFS_IOCTL_BASE_CODE, 32, struct incfs_fill_blocks)
+
+/*
+ * Permit INCFS_IOC_FILL_BLOCKS on the given file descriptor
+ * May only be called on .pending_reads file
+ *
+ * Returns 0 on success or error
+ */
+#define INCFS_IOC_PERMIT_FILL                                                  \
+	_IOW(INCFS_IOCTL_BASE_CODE, 33, struct incfs_permit_fill)
+
+/*
+ * Fills buffer with ranges of populated blocks
+ *
+ * Returns 0 if all ranges written
+ *	   error otherwise
+ *
+ *	   Either way, range_buffer_size_out is set to the number
+ *	   of bytes written. Should be set to 0 by caller. The ranges
+ *	   filled are valid, but if an error was returned there might
+ *	   be more ranges to come.
+ *
+ *	   Ranges are ranges of filled blocks:
+ *
+ *	   1 2 7 9
+ *
+ *	   means blocks 1, 2, 7, 8, 9 are filled, 0, 3, 4, 5, 6 and 10 on
+ *	   are not
+ *
+ *	   If hashing is enabled for the file, the hash blocks are simply
+ *	   treated as though they immediately followed the data blocks.
+ */
+#define INCFS_IOC_GET_FILLED_BLOCKS                                            \
+	_IOR(INCFS_IOCTL_BASE_CODE, 34, struct incfs_get_filled_blocks_args)
+
+/*
+ * Creates a new mapped file
+ * May only be called on .pending_reads file
+ */
+#define INCFS_IOC_CREATE_MAPPED_FILE \
+	_IOWR(INCFS_IOCTL_BASE_CODE, 35, struct incfs_create_mapped_file_args)
+
+/*
+ * Get number of blocks, total and filled
+ * May only be called on .pending_reads file
+ */
+#define INCFS_IOC_GET_BLOCK_COUNT \
+	_IOR(INCFS_IOCTL_BASE_CODE, 36, struct incfs_get_block_count_args)
+
+/*
+ * Get per UID read timeouts
+ * May only be called on .pending_reads file
+ */
+#define INCFS_IOC_GET_READ_TIMEOUTS \
+	_IOR(INCFS_IOCTL_BASE_CODE, 37, struct incfs_get_read_timeouts_args)
+
+/*
+ * Set per UID read timeouts
+ * May only be called on .pending_reads file
+ */
+#define INCFS_IOC_SET_READ_TIMEOUTS \
+	_IOW(INCFS_IOCTL_BASE_CODE, 38, struct incfs_set_read_timeouts_args)
+
+/*
+ * Get last read error
+ * May only be called on .pending_reads file
+ */
+#define INCFS_IOC_GET_LAST_READ_ERROR \
+	_IOW(INCFS_IOCTL_BASE_CODE, 39, struct incfs_get_last_read_error_args)
+
+/* ===== sysfs feature flags ===== */
+/*
+ * Each flag is represented by a file in /sys/fs/incremental-fs/features
+ * If the file exists the feature is supported
+ * Also the file contents will be the line "supported"
+ */
+
+/*
+ * Basic flag stating that the core incfs file system is available
+ */
+#define INCFS_FEATURE_FLAG_COREFS "corefs"
+
+/*
+ * zstd compression support
+ */
+#define INCFS_FEATURE_FLAG_ZSTD "zstd"
+
+/*
+ * v2 feature set support. Covers:
+ *   INCFS_IOC_CREATE_MAPPED_FILE
+ *   INCFS_IOC_GET_BLOCK_COUNT
+ *   INCFS_IOC_GET_READ_TIMEOUTS/INCFS_IOC_SET_READ_TIMEOUTS
+ *   .blocks_written status file
+ *   .incomplete folder
+ *   report_uid mount option
+ */
+#define INCFS_FEATURE_FLAG_V2 "v2"
+
+enum incfs_compression_alg {
+	COMPRESSION_NONE = 0,
+	COMPRESSION_LZ4 = 1,
+	COMPRESSION_ZSTD = 2,
+};
+
+enum incfs_block_flags {
+	INCFS_BLOCK_FLAGS_NONE = 0,
+	INCFS_BLOCK_FLAGS_HASH = 1,
+};
+
+typedef struct {
+	__u8 bytes[16];
+} incfs_uuid_t __attribute__((aligned (8)));
+
+/*
+ * Description of a pending read. A pending read - a read call by
+ * a userspace program for which the filesystem currently doesn't have data.
+ *
+ * Reads from .pending_reads and .log return an array of these structure
+ */
+struct incfs_pending_read_info {
+	/* Id of a file that is being read from. */
+	incfs_uuid_t file_id;
+
+	/* A number of microseconds since system boot to the read. */
+	__aligned_u64 timestamp_us;
+
+	/* Index of a file block that is being read. */
+	__u32 block_index;
+
+	/* A serial number of this pending read. */
+	__u32 serial_number;
+};
+
+/*
+ * Description of a pending read. A pending read - a read call by
+ * a userspace program for which the filesystem currently doesn't have data.
+ *
+ * This version of incfs_pending_read_info is used whenever the file system is
+ * mounted with the report_uid flag
+ */
+struct incfs_pending_read_info2 {
+	/* Id of a file that is being read from. */
+	incfs_uuid_t file_id;
+
+	/* A number of microseconds since system boot to the read. */
+	__aligned_u64 timestamp_us;
+
+	/* Index of a file block that is being read. */
+	__u32 block_index;
+
+	/* A serial number of this pending read. */
+	__u32 serial_number;
+
+	/* The UID of the reading process */
+	__u32 uid;
+
+	__u32 reserved;
+};
+
+/*
+ * Description of a data or hash block to add to a data file.
+ */
+struct incfs_fill_block {
+	/* Index of a data block. */
+	__u32 block_index;
+
+	/* Length of data */
+	__u32 data_len;
+
+	/*
+	 * A pointer to an actual data for the block.
+	 *
+	 * Equivalent to: __u8 *data;
+	 */
+	__aligned_u64 data;
+
+	/*
+	 * Compression algorithm used to compress the data block.
+	 * Values from enum incfs_compression_alg.
+	 */
+	__u8 compression;
+
+	/* Values from enum incfs_block_flags */
+	__u8 flags;
+
+	__u16 reserved1;
+
+	__u32 reserved2;
+
+	__aligned_u64 reserved3;
+};
+
+/*
+ * Description of a number of blocks to add to a data file
+ *
+ * Argument for INCFS_IOC_FILL_BLOCKS
+ */
+struct incfs_fill_blocks {
+	/* Number of blocks */
+	__u64 count;
+
+	/* A pointer to an array of incfs_fill_block structs */
+	__aligned_u64 fill_blocks;
+};
+
+/*
+ * Permit INCFS_IOC_FILL_BLOCKS on the given file descriptor
+ * May only be called on .pending_reads file
+ *
+ * Argument for INCFS_IOC_PERMIT_FILL
+ */
+struct incfs_permit_fill {
+	/* File to permit fills on */
+	__u32 file_descriptor;
+};
+
+enum incfs_hash_tree_algorithm {
+	INCFS_HASH_TREE_NONE = 0,
+	INCFS_HASH_TREE_SHA256 = 1
+};
+
+/*
+ * Create a new file or directory.
+ */
+struct incfs_new_file_args {
+	/* Id of a file to create. */
+	incfs_uuid_t file_id;
+
+	/*
+	 * Total size of the new file. Ignored if S_ISDIR(mode).
+	 */
+	__aligned_u64 size;
+
+	/*
+	 * File mode. Permissions and dir flag.
+	 */
+	__u16 mode;
+
+	__u16 reserved1;
+
+	__u32 reserved2;
+
+	/*
+	 * A pointer to a null-terminated relative path to the file's parent
+	 * dir.
+	 * Max length: PATH_MAX
+	 *
+	 * Equivalent to: char *directory_path;
+	 */
+	__aligned_u64 directory_path;
+
+	/*
+	 * A pointer to a null-terminated file's name.
+	 * Max length: PATH_MAX
+	 *
+	 * Equivalent to: char *file_name;
+	 */
+	__aligned_u64 file_name;
+
+	/*
+	 * A pointer to a file attribute to be set on creation.
+	 *
+	 * Equivalent to: u8 *file_attr;
+	 */
+	__aligned_u64 file_attr;
+
+	/*
+	 * Length of the data buffer specfied by file_attr.
+	 * Max value: INCFS_MAX_FILE_ATTR_SIZE
+	 */
+	__u32 file_attr_len;
+
+	__u32 reserved4;
+
+	/*
+	 * Points to an APK V4 Signature data blob
+	 * Signature must have two sections
+	 * Format is:
+	 *	u32 version
+	 *	u32 size_of_hash_info_section
+	 *	u8 hash_info_section[]
+	 *	u32 size_of_signing_info_section
+	 *	u8 signing_info_section[]
+	 *
+	 * Note that incfs does not care about what is in signing_info_section
+	 *
+	 * hash_info_section has following format:
+	 *	u32 hash_algorithm; // Must be SHA256 == 1
+	 *	u8 log2_blocksize;  // Must be 12 for 4096 byte blocks
+	 *	u32 salt_size;
+	 *	u8 salt[];
+	 *	u32 hash_size;
+	 *	u8 root_hash[];
+	 */
+	__aligned_u64 signature_info;
+
+	/* Size of signature_info */
+	__aligned_u64 signature_size;
+
+	__aligned_u64 reserved6;
+};
+
+/*
+ * Request a digital signature blob for a given file.
+ * Argument for INCFS_IOC_READ_FILE_SIGNATURE ioctl
+ */
+struct incfs_get_file_sig_args {
+	/*
+	 * A pointer to the data buffer to save an signature blob to.
+	 *
+	 * Equivalent to: u8 *file_signature;
+	 */
+	__aligned_u64 file_signature;
+
+	/* Size of the buffer at file_signature. */
+	__u32 file_signature_buf_size;
+
+	/*
+	 * Number of bytes save file_signature buffer.
+	 * It is set after ioctl done.
+	 */
+	__u32 file_signature_len_out;
+};
+
+struct incfs_filled_range {
+	__u32 begin;
+	__u32 end;
+};
+
+/*
+ * Request ranges of filled blocks
+ * Argument for INCFS_IOC_GET_FILLED_BLOCKS
+ */
+struct incfs_get_filled_blocks_args {
+	/*
+	 * A buffer to populate with ranges of filled blocks
+	 *
+	 * Equivalent to struct incfs_filled_ranges *range_buffer
+	 */
+	__aligned_u64 range_buffer;
+
+	/* Size of range_buffer */
+	__u32 range_buffer_size;
+
+	/* Start index to read from */
+	__u32 start_index;
+
+	/*
+	 * End index to read to. 0 means read to end. This is a range,
+	 * so incfs will read from start_index to end_index - 1
+	 */
+	__u32 end_index;
+
+	/* Actual number of blocks in file */
+	__u32 total_blocks_out;
+
+	/* The  number of data blocks in file */
+	__u32 data_blocks_out;
+
+	/* Number of bytes written to range buffer */
+	__u32 range_buffer_size_out;
+
+	/* Sector scanned up to, if the call was interrupted */
+	__u32 index_out;
+};
+
+/*
+ * Create a new mapped file
+ * Argument for INCFS_IOC_CREATE_MAPPED_FILE
+ */
+struct incfs_create_mapped_file_args {
+	/*
+	 * Total size of the new file.
+	 */
+	__aligned_u64 size;
+
+	/*
+	 * File mode. Permissions and dir flag.
+	 */
+	__u16 mode;
+
+	__u16 reserved1;
+
+	__u32 reserved2;
+
+	/*
+	 * A pointer to a null-terminated relative path to the incfs mount
+	 * point
+	 * Max length: PATH_MAX
+	 *
+	 * Equivalent to: char *directory_path;
+	 */
+	__aligned_u64 directory_path;
+
+	/*
+	 * A pointer to a null-terminated file name.
+	 * Max length: PATH_MAX
+	 *
+	 * Equivalent to: char *file_name;
+	 */
+	__aligned_u64 file_name;
+
+	/* Id of source file to map. */
+	incfs_uuid_t source_file_id;
+
+	/*
+	 * Offset in source file to start mapping. Must be a multiple of
+	 * INCFS_DATA_FILE_BLOCK_SIZE
+	 */
+	__aligned_u64 source_offset;
+};
+
+/*
+ * Get information about the blocks in this file
+ * Argument for INCFS_IOC_GET_BLOCK_COUNT
+ */
+struct incfs_get_block_count_args {
+	/* Total number of data blocks in the file */
+	__u32 total_data_blocks_out;
+
+	/* Number of filled data blocks in the file */
+	__u32 filled_data_blocks_out;
+
+	/* Total number of hash blocks in the file */
+	__u32 total_hash_blocks_out;
+
+	/* Number of filled hash blocks in the file */
+	__u32 filled_hash_blocks_out;
+};
+
+/* Description of timeouts for one UID */
+struct incfs_per_uid_read_timeouts {
+	/* UID to apply these timeouts to */
+	__u32 uid;
+
+	/*
+	 * Min time in microseconds to read any block. Note that this doesn't
+	 * apply to reads which are satisfied from the page cache.
+	 */
+	__u32 min_time_us;
+
+	/*
+	 * Min time in microseconds to satisfy a pending read. Any pending read
+	 * which is filled before this time will be delayed so that the total
+	 * read time >= this value.
+	 */
+	__u32 min_pending_time_us;
+
+	/*
+	 * Max time in microseconds to satisfy a pending read before the read
+	 * times out. If set to U32_MAX, defaults to mount options
+	 * read_timeout_ms * 1000. Must be >= min_pending_time_us
+	 */
+	__u32 max_pending_time_us;
+};
+
+/*
+ * Get the read timeouts array
+ * Argument for INCFS_IOC_GET_READ_TIMEOUTS
+ */
+struct incfs_get_read_timeouts_args {
+	/*
+	 * A pointer to a buffer to fill with the current timeouts
+	 *
+	 * Equivalent to struct incfs_per_uid_read_timeouts *
+	 */
+	__aligned_u64 timeouts_array;
+
+	/* Size of above buffer in bytes */
+	__u32 timeouts_array_size;
+
+	/* Size used in bytes, or size needed if -ENOMEM returned */
+	__u32 timeouts_array_size_out;
+};
+
+/*
+ * Set the read timeouts array
+ * Arguments for INCFS_IOC_SET_READ_TIMEOUTS
+ */
+struct incfs_set_read_timeouts_args {
+	/*
+	 * A pointer to an array containing the new timeouts
+	 * This will replace any existing timeouts
+	 *
+	 * Equivalent to struct incfs_per_uid_read_timeouts *
+	 */
+	__aligned_u64 timeouts_array;
+
+	/* Size of above array in bytes. Must be < 256 */
+	__u32 timeouts_array_size;
+};
+
+/*
+ * Get last read error struct
+ * Arguments for INCFS_IOC_GET_LAST_READ_ERROR
+ */
+struct incfs_get_last_read_error_args {
+	/* File id of last file that had a read error */
+	incfs_uuid_t	file_id_out;
+
+	/* Time of last read error, in us, from CLOCK_MONOTONIC */
+	__u64	time_us_out;
+
+	/* Index of page that was being read at last read error */
+	__u32	page_out;
+
+	/* errno of last read error */
+	__u32	errno_out;
+
+	/* uid of last read error */
+	__u32	uid_out;
+
+	__u32	reserved1;
+	__u64	reserved2;
+};
+
+#endif /* _UAPI_LINUX_INCREMENTALFS_H */
diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h
index 0d5d441..1c9279f 100644
--- a/include/uapi/linux/kvm.h
+++ b/include/uapi/linux/kvm.h
@@ -911,6 +911,12 @@ struct kvm_ppc_resize_hpt {
 #define KVM_VM_TYPE_ARM_IPA_SIZE_MASK	0xffULL
 #define KVM_VM_TYPE_ARM_IPA_SIZE(x)		\
 	((x) & KVM_VM_TYPE_ARM_IPA_SIZE_MASK)
+
+#define KVM_VM_TYPE_ARM_PROTECTED	(1UL << 31)
+
+#define KVM_VM_TYPE_MASK	(KVM_VM_TYPE_ARM_IPA_SIZE_MASK | \
+				 KVM_VM_TYPE_ARM_PROTECTED)
+
 /*
  * ioctls for /dev/kvm fds:
  */
@@ -1178,6 +1184,7 @@ struct kvm_ppc_resize_hpt {
 #define KVM_CAP_S390_ZPCI_OP 221
 #define KVM_CAP_S390_CPU_TOPOLOGY 222
 #define KVM_CAP_DIRTY_LOG_RING_ACQ_REL 223
+#define KVM_CAP_ARM_PROTECTED_VM 0xffbadab1
 
 #ifdef KVM_CAP_IRQ_ROUTING
 
diff --git a/include/uapi/linux/netfilter/xt_IDLETIMER.h b/include/uapi/linux/netfilter/xt_IDLETIMER.h
index 7bfb31a..104ac32 100644
--- a/include/uapi/linux/netfilter/xt_IDLETIMER.h
+++ b/include/uapi/linux/netfilter/xt_IDLETIMER.h
@@ -33,7 +33,7 @@ struct idletimer_tg_info_v1 {
 
 	char label[MAX_IDLETIMER_LABEL_SIZE];
 
-	__u8 send_nl_msg;   /* unused: for compatibility with Android */
+	__u8 send_nl_msg;
 	__u8 timer_type;
 
 	/* for kernel module internal use only */
diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h
index c32e761..8fc5fc92 100644
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -1166,6 +1166,23 @@
  *	%NL80211_ATTR_STATUS_CODE attribute in %NL80211_CMD_EXTERNAL_AUTH
  *	command interface.
  *
+ *	Host driver sends MLD address of the AP with %NL80211_ATTR_MLD_ADDR in
+ *	%NL80211_CMD_EXTERNAL_AUTH event to indicate user space to enable MLO
+ *	during the authentication offload in STA mode while connecting to MLD
+ *	APs. Host driver should check %NL80211_ATTR_MLO_SUPPORT flag capability
+ *	in %NL80211_CMD_CONNECT to know whether the user space supports enabling
+ *	MLO during the authentication offload or not.
+ *	User space should enable MLO during the authentication only when it
+ *	receives the AP MLD address in authentication offload request. User
+ *	space shouldn't enable MLO when the authentication offload request
+ *	doesn't indicate the AP MLD address even if the AP is MLO capable.
+ *	User space should use %NL80211_ATTR_MLD_ADDR as peer's MLD address and
+ *	interface address identified by %NL80211_ATTR_IFINDEX as self MLD
+ *	address. User space and host driver to use MLD addresses in RA, TA and
+ *	BSSID fields of the frames between them, and host driver translates the
+ *	MLD addresses to/from link addresses based on the link chosen for the
+ *	authentication.
+ *
  *	Host driver reports this status on an authentication failure to the
  *	user space through the connect result as the user space would have
  *	initiated the connection through the connect request.
@@ -1531,6 +1548,16 @@ enum nl80211_commands {
 	NL80211_CMD_ADD_LINK_STA,
 	NL80211_CMD_MODIFY_LINK_STA,
 	NL80211_CMD_REMOVE_LINK_STA,
+	NL80211_CMD_ANDROID_KABI_RESERVED_1,
+	NL80211_CMD_ANDROID_KABI_RESERVED_2,
+	NL80211_CMD_ANDROID_KABI_RESERVED_3,
+	NL80211_CMD_ANDROID_KABI_RESERVED_4,
+	NL80211_CMD_ANDROID_KABI_RESERVED_5,
+	NL80211_CMD_ANDROID_KABI_RESERVED_6,
+	NL80211_CMD_ANDROID_KABI_RESERVED_7,
+	NL80211_CMD_ANDROID_KABI_RESERVED_8,
+	NL80211_CMD_ANDROID_KABI_RESERVED_9,
+	NL80211_CMD_ANDROID_KABI_RESERVED_10,
 
 	/* add new commands above here */
 
@@ -2749,9 +2776,20 @@ enum nl80211_commands {
  *	When used with %NL80211_CMD_FRAME_TX_STATUS, indicates the ack RX
  *	timestamp. When used with %NL80211_CMD_FRAME RX notification, indicates
  *	the incoming frame RX timestamp.
+ * @NL80211_ATTR_TD_BITMAP: Transition Disable bitmap, for subsequent
+ *	(re)associations.
+ *
+ * @NL80211_ATTR_PUNCT_BITMAP: (u32) Preamble puncturing bitmap, lowest
+ *	bit corresponds to the lowest 20 MHz channel. Each bit set to 1
+ *	indicates that the sub-channel is punctured. Higher 16 bits are
+ *	reserved.
+ *
  * @NUM_NL80211_ATTR: total number of nl80211_attrs available
  * @NL80211_ATTR_MAX: highest attribute number currently defined
  * @__NL80211_ATTR_AFTER_LAST: internal use
+ * @__NL80211_ATTR_MAX_IMPLEMENTED: Internal use only, assign it with new max
+ *	implemented attribute if NL80211_ATTR_ANDROID_KABI_RESERVED_* attributes
+ *	enabled while backporting upstream UAPI changes.
  */
 enum nl80211_attrs {
 /* don't change the order or add anything between, this is ABI! */
@@ -3276,9 +3314,39 @@ enum nl80211_attrs {
 
 	NL80211_ATTR_TX_HW_TIMESTAMP,
 	NL80211_ATTR_RX_HW_TIMESTAMP,
+	NL80211_ATTR_TD_BITMAP,
+
+	NL80211_ATTR_PUNCT_BITMAP,
+
+	NL80211_ATTR_ANDROID_KABI_RESERVED_1,
+	NL80211_ATTR_ANDROID_KABI_RESERVED_2,
+	NL80211_ATTR_ANDROID_KABI_RESERVED_3,
+	NL80211_ATTR_ANDROID_KABI_RESERVED_4,
+	NL80211_ATTR_ANDROID_KABI_RESERVED_5,
+	NL80211_ATTR_ANDROID_KABI_RESERVED_6,
+	NL80211_ATTR_ANDROID_KABI_RESERVED_7,
+	NL80211_ATTR_ANDROID_KABI_RESERVED_8,
+	NL80211_ATTR_ANDROID_KABI_RESERVED_9,
+	NL80211_ATTR_ANDROID_KABI_RESERVED_10,
+	NL80211_ATTR_ANDROID_KABI_RESERVED_11,
+	NL80211_ATTR_ANDROID_KABI_RESERVED_12,
+	NL80211_ATTR_ANDROID_KABI_RESERVED_13,
+	NL80211_ATTR_ANDROID_KABI_RESERVED_14,
+	NL80211_ATTR_ANDROID_KABI_RESERVED_15,
+	NL80211_ATTR_ANDROID_KABI_RESERVED_16,
+	NL80211_ATTR_ANDROID_KABI_RESERVED_17,
+	NL80211_ATTR_ANDROID_KABI_RESERVED_18,
+	NL80211_ATTR_ANDROID_KABI_RESERVED_19,
+	NL80211_ATTR_ANDROID_KABI_RESERVED_20,
+	NL80211_ATTR_ANDROID_KABI_RESERVED_21,
+	NL80211_ATTR_ANDROID_KABI_RESERVED_22,
+	NL80211_ATTR_ANDROID_KABI_RESERVED_23,
+	NL80211_ATTR_ANDROID_KABI_RESERVED_24,
+	NL80211_ATTR_ANDROID_KABI_RESERVED_25,
 
 	/* add attributes here, update the policy in nl80211.c */
 
+	__NL80211_ATTR_MAX_IMPLEMENTED = NL80211_ATTR_PUNCT_BITMAP,
 	__NL80211_ATTR_AFTER_LAST,
 	NUM_NL80211_ATTR = __NL80211_ATTR_AFTER_LAST,
 	NL80211_ATTR_MAX = __NL80211_ATTR_AFTER_LAST - 1
@@ -3793,6 +3861,11 @@ enum nl80211_sta_info {
 	NL80211_STA_INFO_AIRTIME_LINK_METRIC,
 	NL80211_STA_INFO_ASSOC_AT_BOOTTIME,
 	NL80211_STA_INFO_CONNECTED_TO_AS,
+	NL80211_STA_INFO_ANDROID_KABI_RESERVED_1,
+	NL80211_STA_INFO_ANDROID_KABI_RESERVED_2,
+	NL80211_STA_INFO_ANDROID_KABI_RESERVED_3,
+	NL80211_STA_INFO_ANDROID_KABI_RESERVED_4,
+	NL80211_STA_INFO_ANDROID_KABI_RESERVED_5,
 
 	/* keep last */
 	__NL80211_STA_INFO_AFTER_LAST,
@@ -3968,6 +4041,11 @@ enum nl80211_band_iftype_attr {
 	NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PHY,
 	NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MCS_SET,
 	NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PPE,
+	NL80211_BAND_IFTYPE_ATTR_ANDROID_KABI_RESERVED_1,
+	NL80211_BAND_IFTYPE_ATTR_ANDROID_KABI_RESERVED_2,
+	NL80211_BAND_IFTYPE_ATTR_ANDROID_KABI_RESERVED_3,
+	NL80211_BAND_IFTYPE_ATTR_ANDROID_KABI_RESERVED_4,
+	NL80211_BAND_IFTYPE_ATTR_ANDROID_KABI_RESERVED_5,
 
 	/* keep last */
 	__NL80211_BAND_IFTYPE_ATTR_AFTER_LAST,
@@ -4016,6 +4094,11 @@ enum nl80211_band_attr {
 
 	NL80211_BAND_ATTR_EDMG_CHANNELS,
 	NL80211_BAND_ATTR_EDMG_BW_CONFIG,
+	NL80211_BAND_ATTR_ANDROID_KABI_RESERVED_1,
+	NL80211_BAND_ATTR_ANDROID_KABI_RESERVED_2,
+	NL80211_BAND_ATTR_ANDROID_KABI_RESERVED_3,
+	NL80211_BAND_ATTR_ANDROID_KABI_RESERVED_4,
+	NL80211_BAND_ATTR_ANDROID_KABI_RESERVED_5,
 
 	/* keep last */
 	__NL80211_BAND_ATTR_AFTER_LAST,
@@ -4906,6 +4989,11 @@ enum nl80211_bss_scan_width {
 	NL80211_BSS_CHAN_WIDTH_5,
 	NL80211_BSS_CHAN_WIDTH_1,
 	NL80211_BSS_CHAN_WIDTH_2,
+	NL80211_BSS_CHAN_WIDTH_ANDROID_KABI_RESERVED_1,
+	NL80211_BSS_CHAN_WIDTH_ANDROID_KABI_RESERVED_2,
+	NL80211_BSS_CHAN_WIDTH_ANDROID_KABI_RESERVED_3,
+	NL80211_BSS_CHAN_WIDTH_ANDROID_KABI_RESERVED_4,
+	NL80211_BSS_CHAN_WIDTH_ANDROID_KABI_RESERVED_5,
 };
 
 /**
@@ -4987,6 +5075,9 @@ enum nl80211_bss {
 	NL80211_BSS_FREQUENCY_OFFSET,
 	NL80211_BSS_MLO_LINK_ID,
 	NL80211_BSS_MLD_ADDR,
+	NL80211_BSS_ANDROID_KABI_RESERVED_1,
+	NL80211_BSS_ANDROID_KABI_RESERVED_2,
+	NL80211_BSS_ANDROID_KABI_RESERVED_3,
 
 	/* keep last */
 	__NL80211_BSS_AFTER_LAST,
@@ -5156,6 +5247,9 @@ enum nl80211_key_attributes {
  * @NL80211_TXRATE_HE_LTF: configure HE LTF, 1XLTF, 2XLTF and 4XLTF.
  * @__NL80211_TXRATE_AFTER_LAST: internal
  * @NL80211_TXRATE_MAX: highest TX rate attribute
+ * @__NL80211_TXRATE_MAX_IMPLEMENTED: Internal use only, assign it with new max
+ *	implemented attribute if NL80211_TXRATE_ANDROID_KABI_RESERVED_*
+ *	attributes enabled while backporting upstream UAPI changes.
  */
 enum nl80211_tx_rate_attributes {
 	__NL80211_TXRATE_INVALID,
@@ -5166,8 +5260,14 @@ enum nl80211_tx_rate_attributes {
 	NL80211_TXRATE_HE,
 	NL80211_TXRATE_HE_GI,
 	NL80211_TXRATE_HE_LTF,
+	NL80211_TXRATE_ANDROID_KABI_RESERVED_1,
+	NL80211_TXRATE_ANDROID_KABI_RESERVED_2,
+	NL80211_TXRATE_ANDROID_KABI_RESERVED_3,
+	NL80211_TXRATE_ANDROID_KABI_RESERVED_4,
+	NL80211_TXRATE_ANDROID_KABI_RESERVED_5,
 
 	/* keep last */
+	__NL80211_TXRATE_MAX_IMPLEMENTED = NL80211_TXRATE_HE_LTF,
 	__NL80211_TXRATE_AFTER_LAST,
 	NL80211_TXRATE_MAX = __NL80211_TXRATE_AFTER_LAST - 1
 };
@@ -5262,6 +5362,9 @@ enum nl80211_ps_state {
  *	RSSI threshold event.
  * @__NL80211_ATTR_CQM_AFTER_LAST: internal
  * @NL80211_ATTR_CQM_MAX: highest key attribute
+ * @__NL80211_ATTR_CQM_MAX_IMPLEMENTED: Internal use only, assign it with new
+ *	max implemented attribute if NL80211_ATTR_CQM_ANDROID_KABI_RESERVED_*
+ *	attributes enabled while backporting upstream UAPI changes.
  */
 enum nl80211_attr_cqm {
 	__NL80211_ATTR_CQM_INVALID,
@@ -5274,8 +5377,14 @@ enum nl80211_attr_cqm {
 	NL80211_ATTR_CQM_TXE_INTVL,
 	NL80211_ATTR_CQM_BEACON_LOSS_EVENT,
 	NL80211_ATTR_CQM_RSSI_LEVEL,
+	NL80211_ATTR_CQM_ANDROID_KABI_RESERVED_1,
+	NL80211_ATTR_CQM_ANDROID_KABI_RESERVED_2,
+	NL80211_ATTR_CQM_ANDROID_KABI_RESERVED_3,
+	NL80211_ATTR_CQM_ANDROID_KABI_RESERVED_4,
+	NL80211_ATTR_CQM_ANDROID_KABI_RESERVED_5,
 
 	/* keep last */
+	__NL80211_ATTR_CQM_MAX_IMPLEMENTED = NL80211_ATTR_CQM_RSSI_LEVEL,
 	__NL80211_ATTR_CQM_AFTER_LAST,
 	NL80211_ATTR_CQM_MAX = __NL80211_ATTR_CQM_AFTER_LAST - 1
 };
@@ -5292,6 +5401,9 @@ enum nl80211_cqm_rssi_threshold_event {
 	NL80211_CQM_RSSI_THRESHOLD_EVENT_LOW,
 	NL80211_CQM_RSSI_THRESHOLD_EVENT_HIGH,
 	NL80211_CQM_RSSI_BEACON_LOSS_EVENT,
+	NL80211_CQM_RSSI_ANDROID_KABI_RESERVED_1,
+	NL80211_CQM_RSSI_ANDROID_KABI_RESERVED_2,
+	NL80211_CQM_RSSI_ANDROID_KABI_RESERVED_3,
 };
 
 
@@ -5371,6 +5483,10 @@ enum nl80211_tx_rate_setting {
  *	with the parameters passed through %NL80211_ATTR_TX_RATES.
  *	configuration is applied to the data frame for the tid to that connected
  *	station.
+ * @__NL80211_TID_CONFIG_ATTR_MAX_IMPLEMENTED: Internal use only, assign it with
+ *	new max implemented attribute if
+ *	NL80211_TID_CONFIG_ATTR_ANDROID_KABI_RESERVED_* attributes enabled while
+ *	backporting upstream UAPI changes.
  */
 enum nl80211_tid_config_attr {
 	__NL80211_TID_CONFIG_ATTR_INVALID,
@@ -5387,8 +5503,14 @@ enum nl80211_tid_config_attr {
 	NL80211_TID_CONFIG_ATTR_AMSDU_CTRL,
 	NL80211_TID_CONFIG_ATTR_TX_RATE_TYPE,
 	NL80211_TID_CONFIG_ATTR_TX_RATE,
+	NL80211_TID_CONFIG_ATTR_ANDROID_KABI_RESERVED_1,
+	NL80211_TID_CONFIG_ATTR_ANDROID_KABI_RESERVED_2,
+	NL80211_TID_CONFIG_ATTR_ANDROID_KABI_RESERVED_3,
+	NL80211_TID_CONFIG_ATTR_ANDROID_KABI_RESERVED_4,
+	NL80211_TID_CONFIG_ATTR_ANDROID_KABI_RESERVED_5,
 
 	/* keep last */
+	__NL80211_TID_CONFIG_ATTR_MAX_IMPLEMENTED = NL80211_TID_CONFIG_ATTR_TX_RATE,
 	__NL80211_TID_CONFIG_ATTR_AFTER_LAST,
 	NL80211_TID_CONFIG_ATTR_MAX = __NL80211_TID_CONFIG_ATTR_AFTER_LAST - 1
 };
@@ -5742,6 +5864,9 @@ enum nl80211_iface_limit_attrs {
 	NL80211_IFACE_LIMIT_UNSPEC,
 	NL80211_IFACE_LIMIT_MAX,
 	NL80211_IFACE_LIMIT_TYPES,
+	NL80211_IFACE_LIMIT_ANDROID_KABI_RESERVED_1,
+	NL80211_IFACE_LIMIT_ANDROID_KABI_RESERVED_2,
+	NL80211_IFACE_LIMIT_ANDROID_KABI_RESERVED_3,
 
 	/* keep last */
 	NUM_NL80211_IFACE_LIMIT,
@@ -5806,6 +5931,11 @@ enum nl80211_if_combination_attrs {
 	NL80211_IFACE_COMB_RADAR_DETECT_WIDTHS,
 	NL80211_IFACE_COMB_RADAR_DETECT_REGIONS,
 	NL80211_IFACE_COMB_BI_MIN_GCD,
+	NL80211_IFACE_COMB_ANDROID_KABI_RESERVED_1,
+	NL80211_IFACE_COMB_ANDROID_KABI_RESERVED_2,
+	NL80211_IFACE_COMB_ANDROID_KABI_RESERVED_3,
+	NL80211_IFACE_COMB_ANDROID_KABI_RESERVED_4,
+	NL80211_IFACE_COMB_ANDROID_KABI_RESERVED_5,
 
 	/* keep last */
 	NUM_NL80211_IFACE_COMB,
@@ -5866,6 +5996,7 @@ enum plink_actions {
 #define NL80211_KEK_LEN			16
 #define NL80211_KCK_EXT_LEN		24
 #define NL80211_KEK_EXT_LEN		32
+#define NL80211_KCK_EXT_LEN_32		32
 #define NL80211_REPLAY_CTR_LEN		8
 
 /**
@@ -5972,6 +6103,9 @@ enum nl80211_tdls_operation {
  */
 enum nl80211_ap_sme_features {
 	NL80211_AP_SME_SA_QUERY_OFFLOAD		= 1 << 0,
+	NL80211_AP_SME_ANDROID_KABI_RESERVED_1	= 1 << 1,
+	NL80211_AP_SME_ANDROID_KABI_RESERVED_2	= 1 << 2,
+	NL80211_AP_SME_ANDROID_KABI_RESERVED_3	= 1 << 3,
 };
 
 /**
@@ -6291,6 +6425,15 @@ enum nl80211_feature_flags {
  *	might apply, e.g. no scans in progress, no offchannel operations
  *	in progress, and no active connections.
  *
+ * @NL80211_EXT_FEATURE_PUNCT: Driver supports preamble puncturing in AP mode.
+ *
+ * @NL80211_EXT_FEATURE_SECURE_NAN: Device supports NAN Pairing which enables
+ *	authentication, data encryption and message integrity.
+ *
+ * @NL80211_EXT_FEATURE_AUTH_AND_DEAUTH_RANDOM_TA: Device supports randomized TA
+ *	in authentication and deauthentication frames sent to unassociated peer
+ *	using @NL80211_CMD_FRAME.
+ *
  * @NUM_NL80211_EXT_FEATURES: number of extended features.
  * @MAX_NL80211_EXT_FEATURES: highest extended feature index.
  */
@@ -6359,6 +6502,24 @@ enum nl80211_ext_feature_index {
 	NL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD,
 	NL80211_EXT_FEATURE_RADAR_BACKGROUND,
 	NL80211_EXT_FEATURE_POWERED_ADDR_CHANGE,
+	NL80211_EXT_FEATURE_PUNCT,
+	NL80211_EXT_FEATURE_SECURE_NAN,
+	NL80211_EXT_FEATURE_AUTH_AND_DEAUTH_RANDOM_TA,
+	NL80211_EXT_FEATURE_ANDROID_KABI_RESERVED_1,
+	NL80211_EXT_FEATURE_ANDROID_KABI_RESERVED_2,
+	NL80211_EXT_FEATURE_ANDROID_KABI_RESERVED_3,
+	NL80211_EXT_FEATURE_ANDROID_KABI_RESERVED_4,
+	NL80211_EXT_FEATURE_ANDROID_KABI_RESERVED_5,
+	NL80211_EXT_FEATURE_ANDROID_KABI_RESERVED_6,
+	NL80211_EXT_FEATURE_ANDROID_KABI_RESERVED_7,
+	NL80211_EXT_FEATURE_ANDROID_KABI_RESERVED_8,
+	NL80211_EXT_FEATURE_ANDROID_KABI_RESERVED_9,
+	NL80211_EXT_FEATURE_ANDROID_KABI_RESERVED_10,
+	NL80211_EXT_FEATURE_ANDROID_KABI_RESERVED_11,
+	NL80211_EXT_FEATURE_ANDROID_KABI_RESERVED_12,
+	NL80211_EXT_FEATURE_ANDROID_KABI_RESERVED_13,
+	NL80211_EXT_FEATURE_ANDROID_KABI_RESERVED_14,
+	NL80211_EXT_FEATURE_ANDROID_KABI_RESERVED_15,
 
 	/* add new features before the definition below */
 	NUM_NL80211_EXT_FEATURES,
@@ -6492,6 +6653,11 @@ enum nl80211_scan_flags {
 	NL80211_SCAN_FLAG_MIN_PREQ_CONTENT			= 1<<12,
 	NL80211_SCAN_FLAG_FREQ_KHZ				= 1<<13,
 	NL80211_SCAN_FLAG_COLOCATED_6GHZ			= 1<<14,
+	NL80211_SCAN_FLAG_ANDROID_KABI_RESERVED_1		= 1<<15,
+	NL80211_SCAN_FLAG_ANDROID_KABI_RESERVED_2		= 1<<16,
+	NL80211_SCAN_FLAG_ANDROID_KABI_RESERVED_3		= 1<<17,
+	NL80211_SCAN_FLAG_ANDROID_KABI_RESERVED_4		= 1<<18,
+	NL80211_SCAN_FLAG_ANDROID_KABI_RESERVED_5		= 1<<19,
 };
 
 /**
@@ -6663,6 +6829,9 @@ enum nl80211_tdls_peer_capability {
 	NL80211_TDLS_PEER_VHT = 1<<1,
 	NL80211_TDLS_PEER_WMM = 1<<2,
 	NL80211_TDLS_PEER_HE = 1<<3,
+	NL80211_TDLS_PEER_ANDROID_KABI_RESERVED_1 = 1<<4,
+	NL80211_TDLS_PEER_ANDROID_KABI_RESERVED_2 = 1<<5,
+	NL80211_TDLS_PEER_ANDROID_KABI_RESERVED_3 = 1<<6,
 };
 
 /**
@@ -7718,6 +7887,9 @@ enum nl80211_mbssid_config_attributes {
 enum nl80211_ap_settings_flags {
 	NL80211_AP_SETTINGS_EXTERNAL_AUTH_SUPPORT	= 1 << 0,
 	NL80211_AP_SETTINGS_SA_QUERY_OFFLOAD_SUPPORT	= 1 << 1,
+	NL80211_AP_SETTINGS_ANDROID_KABI_RESERVED_1	= 1 << 2,
+	NL80211_AP_SETTINGS_ANDROID_KABI_RESERVED_2	= 1 << 3,
+	NL80211_AP_SETTINGS_ANDROID_KABI_RESERVED_3	= 1 << 4,
 };
 
 #endif /* __LINUX_NL80211_H */
diff --git a/include/uapi/linux/usb/f_accessory.h b/include/uapi/linux/usb/f_accessory.h
new file mode 100644
index 0000000..0baeb7d
--- /dev/null
+++ b/include/uapi/linux/usb/f_accessory.h
@@ -0,0 +1,146 @@
+/*
+ * Gadget Function Driver for Android USB accessories
+ *
+ * Copyright (C) 2011 Google, Inc.
+ * Author: Mike Lockwood <lockwood@android.com>
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#ifndef _UAPI_LINUX_USB_F_ACCESSORY_H
+#define _UAPI_LINUX_USB_F_ACCESSORY_H
+
+/* Use Google Vendor ID when in accessory mode */
+#define USB_ACCESSORY_VENDOR_ID 0x18D1
+
+
+/* Product ID to use when in accessory mode */
+#define USB_ACCESSORY_PRODUCT_ID 0x2D00
+
+/* Product ID to use when in accessory mode and adb is enabled */
+#define USB_ACCESSORY_ADB_PRODUCT_ID 0x2D01
+
+/* Indexes for strings sent by the host via ACCESSORY_SEND_STRING */
+#define ACCESSORY_STRING_MANUFACTURER   0
+#define ACCESSORY_STRING_MODEL          1
+#define ACCESSORY_STRING_DESCRIPTION    2
+#define ACCESSORY_STRING_VERSION        3
+#define ACCESSORY_STRING_URI            4
+#define ACCESSORY_STRING_SERIAL         5
+
+/* Control request for retrieving device's protocol version
+ *
+ *	requestType:    USB_DIR_IN | USB_TYPE_VENDOR
+ *	request:        ACCESSORY_GET_PROTOCOL
+ *	value:          0
+ *	index:          0
+ *	data            version number (16 bits little endian)
+ *                     1 for original accessory support
+ *                     2 adds HID and device to host audio support
+ */
+#define ACCESSORY_GET_PROTOCOL  51
+
+/* Control request for host to send a string to the device
+ *
+ *	requestType:    USB_DIR_OUT | USB_TYPE_VENDOR
+ *	request:        ACCESSORY_SEND_STRING
+ *	value:          0
+ *	index:          string ID
+ *	data            zero terminated UTF8 string
+ *
+ *  The device can later retrieve these strings via the
+ *  ACCESSORY_GET_STRING_* ioctls
+ */
+#define ACCESSORY_SEND_STRING   52
+
+/* Control request for starting device in accessory mode.
+ * The host sends this after setting all its strings to the device.
+ *
+ *	requestType:    USB_DIR_OUT | USB_TYPE_VENDOR
+ *	request:        ACCESSORY_START
+ *	value:          0
+ *	index:          0
+ *	data            none
+ */
+#define ACCESSORY_START         53
+
+/* Control request for registering a HID device.
+ * Upon registering, a unique ID is sent by the accessory in the
+ * value parameter. This ID will be used for future commands for
+ * the device
+ *
+ *	requestType:    USB_DIR_OUT | USB_TYPE_VENDOR
+ *	request:        ACCESSORY_REGISTER_HID_DEVICE
+ *	value:          Accessory assigned ID for the HID device
+ *	index:          total length of the HID report descriptor
+ *	data            none
+ */
+#define ACCESSORY_REGISTER_HID         54
+
+/* Control request for unregistering a HID device.
+ *
+ *	requestType:    USB_DIR_OUT | USB_TYPE_VENDOR
+ *	request:        ACCESSORY_REGISTER_HID
+ *	value:          Accessory assigned ID for the HID device
+ *	index:          0
+ *	data            none
+ */
+#define ACCESSORY_UNREGISTER_HID         55
+
+/* Control request for sending the HID report descriptor.
+ * If the HID descriptor is longer than the endpoint zero max packet size,
+ * the descriptor will be sent in multiple ACCESSORY_SET_HID_REPORT_DESC
+ * commands. The data for the descriptor must be sent sequentially
+ * if multiple packets are needed.
+ *
+ *	requestType:    USB_DIR_OUT | USB_TYPE_VENDOR
+ *	request:        ACCESSORY_SET_HID_REPORT_DESC
+ *	value:          Accessory assigned ID for the HID device
+ *	index:          offset of data in descriptor
+ *                      (needed when HID descriptor is too big for one packet)
+ *	data            the HID report descriptor
+ */
+#define ACCESSORY_SET_HID_REPORT_DESC         56
+
+/* Control request for sending HID events.
+ *
+ *	requestType:    USB_DIR_OUT | USB_TYPE_VENDOR
+ *	request:        ACCESSORY_SEND_HID_EVENT
+ *	value:          Accessory assigned ID for the HID device
+ *	index:          0
+ *	data            the HID report for the event
+ */
+#define ACCESSORY_SEND_HID_EVENT         57
+
+/* Control request for setting the audio mode.
+ *
+ *	requestType:	USB_DIR_OUT | USB_TYPE_VENDOR
+ *	request:        ACCESSORY_SET_AUDIO_MODE
+ *	value:          0 - no audio
+ *                     1 - device to host, 44100 16-bit stereo PCM
+ *	index:          0
+ *	data            none
+ */
+#define ACCESSORY_SET_AUDIO_MODE         58
+
+/* ioctls for retrieving strings set by the host */
+#define ACCESSORY_GET_STRING_MANUFACTURER   _IOW('M', 1, char[256])
+#define ACCESSORY_GET_STRING_MODEL          _IOW('M', 2, char[256])
+#define ACCESSORY_GET_STRING_DESCRIPTION    _IOW('M', 3, char[256])
+#define ACCESSORY_GET_STRING_VERSION        _IOW('M', 4, char[256])
+#define ACCESSORY_GET_STRING_URI            _IOW('M', 5, char[256])
+#define ACCESSORY_GET_STRING_SERIAL         _IOW('M', 6, char[256])
+/* returns 1 if there is a start request pending */
+#define ACCESSORY_IS_START_REQUESTED        _IO('M', 7)
+/* returns audio mode (set via the ACCESSORY_SET_AUDIO_MODE control request) */
+#define ACCESSORY_GET_AUDIO_MODE            _IO('M', 8)
+
+#endif /* _UAPI_LINUX_USB_F_ACCESSORY_H */
diff --git a/include/uapi/linux/usb/g_uvc.h b/include/uapi/linux/usb/g_uvc.h
index 652f169..8d7824d 100644
--- a/include/uapi/linux/usb/g_uvc.h
+++ b/include/uapi/linux/usb/g_uvc.h
@@ -21,6 +21,9 @@
 #define UVC_EVENT_DATA			(V4L2_EVENT_PRIVATE_START + 5)
 #define UVC_EVENT_LAST			(V4L2_EVENT_PRIVATE_START + 5)
 
+#define UVC_STRING_CONTROL_IDX			0
+#define UVC_STRING_STREAMING_IDX		1
+
 struct uvc_request_data {
 	__s32 length;
 	__u8 data[60];
diff --git a/include/uapi/linux/usb/video.h b/include/uapi/linux/usb/video.h
index c58854f..2ff0e8a 100644
--- a/include/uapi/linux/usb/video.h
+++ b/include/uapi/linux/usb/video.h
@@ -496,7 +496,7 @@ struct uvc_format_uncompressed {
 	__u8  bDefaultFrameIndex;
 	__u8  bAspectRatioX;
 	__u8  bAspectRatioY;
-	__u8  bmInterfaceFlags;
+	__u8  bmInterlaceFlags;
 	__u8  bCopyProtect;
 } __attribute__((__packed__));
 
@@ -552,7 +552,7 @@ struct uvc_format_mjpeg {
 	__u8  bDefaultFrameIndex;
 	__u8  bAspectRatioX;
 	__u8  bAspectRatioY;
-	__u8  bmInterfaceFlags;
+	__u8  bmInterlaceFlags;
 	__u8  bCopyProtect;
 } __attribute__((__packed__));
 
diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
index 29da1f4..d67a7ff 100644
--- a/include/uapi/linux/videodev2.h
+++ b/include/uapi/linux/videodev2.h
@@ -70,7 +70,7 @@
  * Common stuff for both V4L1 and V4L2
  * Moved from videodev.h
  */
-#define VIDEO_MAX_FRAME               32
+#define VIDEO_MAX_FRAME               64
 #define VIDEO_MAX_PLANES               8
 
 /*
@@ -654,6 +654,8 @@ struct v4l2_pix_format {
 #define V4L2_PIX_FMT_NV12_16L16 v4l2_fourcc('H', 'M', '1', '2') /* 12  Y/CbCr 4:2:0 16x16 tiles */
 #define V4L2_PIX_FMT_NV12_32L32 v4l2_fourcc('S', 'T', '1', '2') /* 12  Y/CbCr 4:2:0 32x32 tiles */
 #define V4L2_PIX_FMT_P010_4L4 v4l2_fourcc('T', '0', '1', '0') /* 12  Y/CbCr 4:2:0 10-bit 4x4 macroblocks */
+#define V4L2_PIX_FMT_NV12_8L128       v4l2_fourcc('A', 'T', '1', '2') /* Y/CbCr 4:2:0 8x128 tiles */
+#define V4L2_PIX_FMT_NV12_10BE_8L128  v4l2_fourcc_be('A', 'X', '1', '2') /* Y/CbCr 4:2:0 10-bit 8x128 tiles */
 
 /* Tiled YUV formats, non contiguous planes */
 #define V4L2_PIX_FMT_NV12MT  v4l2_fourcc('T', 'M', '1', '2') /* 12  Y/CbCr 4:2:0 64x32 tiles */
@@ -737,6 +739,9 @@ struct v4l2_pix_format {
 #define V4L2_PIX_FMT_FWHT_STATELESS     v4l2_fourcc('S', 'F', 'W', 'H') /* Stateless FWHT (vicodec) */
 #define V4L2_PIX_FMT_H264_SLICE v4l2_fourcc('S', '2', '6', '4') /* H264 parsed slices */
 #define V4L2_PIX_FMT_HEVC_SLICE v4l2_fourcc('S', '2', '6', '5') /* HEVC parsed slices */
+#define V4L2_PIX_FMT_SPK      v4l2_fourcc('S', 'P', 'K', '0') /* Sorenson Spark */
+#define V4L2_PIX_FMT_RV30     v4l2_fourcc('R', 'V', '3', '0') /* RealVideo 8 */
+#define V4L2_PIX_FMT_RV40     v4l2_fourcc('R', 'V', '4', '0') /* RealVideo 9 & 10 */
 
 /*  Vendor-specific formats   */
 #define V4L2_PIX_FMT_CPIA1    v4l2_fourcc('C', 'P', 'I', 'A') /* cpia1 YUV */
diff --git a/include/uapi/scsi/scsi_bsg_ufs.h b/include/uapi/scsi/scsi_bsg_ufs.h
index d55f217..5e4891f 100644
--- a/include/uapi/scsi/scsi_bsg_ufs.h
+++ b/include/uapi/scsi/scsi_bsg_ufs.h
@@ -14,10 +14,27 @@
  */
 
 #define UFS_CDB_SIZE	16
-#define UPIU_TRANSACTION_UIC_CMD 0x1F
 /* uic commands are 4DW long, per UFSHCI V2.1 paragraph 5.6.1 */
 #define UIC_CMD_SIZE (sizeof(__u32) * 4)
 
+enum ufs_bsg_msg_code {
+	UPIU_TRANSACTION_UIC_CMD = 0x1F,
+	UPIU_TRANSACTION_ARPMB_CMD,
+};
+
+/* UFS RPMB Request Message Types */
+enum ufs_rpmb_op_type {
+	UFS_RPMB_WRITE_KEY		= 0x01,
+	UFS_RPMB_READ_CNT		= 0x02,
+	UFS_RPMB_WRITE			= 0x03,
+	UFS_RPMB_READ			= 0x04,
+	UFS_RPMB_READ_RESP		= 0x05,
+	UFS_RPMB_SEC_CONF_WRITE		= 0x06,
+	UFS_RPMB_SEC_CONF_READ		= 0x07,
+	UFS_RPMB_PURGE_ENABLE		= 0x08,
+	UFS_RPMB_PURGE_STATUS_READ	= 0x09,
+};
+
 /**
  * struct utp_upiu_header - UPIU header structure
  * @dword_0: UPIU header DW-0
@@ -79,6 +96,23 @@ struct utp_upiu_req {
 	};
 };
 
+struct ufs_arpmb_meta {
+	__u16	req_resp_type;
+	__u8	nonce[16];
+	__u32	write_counter;
+	__u16	addr_lun;
+	__u16	block_count;
+	__u16	result;
+} __attribute__((__packed__));
+
+struct ufs_ehs {
+	__u8	length;
+	__u8	ehs_type;
+	__u16	ehssub_type;
+	struct ufs_arpmb_meta meta;
+	__u8	mac_key[32];
+} __attribute__((__packed__));
+
 /* request (CDB) structure of the sg_io_v4 */
 struct ufs_bsg_request {
 	__u32 msgcode;
@@ -102,4 +136,14 @@ struct ufs_bsg_reply {
 
 	struct utp_upiu_req upiu_rsp;
 };
+
+struct ufs_rpmb_request {
+	struct ufs_bsg_request bsg_request;
+	struct ufs_ehs ehs_req;
+};
+
+struct ufs_rpmb_reply {
+	struct ufs_bsg_reply bsg_reply;
+	struct ufs_ehs ehs_rsp;
+};
 #endif /* UFS_BSG_H */
diff --git a/include/ufs/ufs.h b/include/ufs/ufs.h
index 1bba3fe..29b91ad 100644
--- a/include/ufs/ufs.h
+++ b/include/ufs/ufs.h
@@ -13,6 +13,8 @@
 
 #include <linux/mutex.h>
 #include <linux/types.h>
+#include <linux/android_kabi.h>
+#include <linux/android_vendor.h>
 #include <uapi/scsi/scsi_bsg_ufs.h>
 
 #define GENERAL_UPIU_REQUEST_SIZE (sizeof(struct utp_upiu_req))
@@ -38,7 +40,6 @@
 #define UFS_UPIU_MAX_UNIT_NUM_ID	0x7F
 #define UFS_MAX_LUNS		(SCSI_W_LUN_BASE + UFS_UPIU_MAX_UNIT_NUM_ID)
 #define UFS_UPIU_WLUN_ID	(1 << 7)
-#define UFS_RPMB_UNIT		0xC4
 
 /* WriteBooster buffer is available only for the logical unit from 0 to 7 */
 #define UFS_UPIU_MAX_WB_LUN_ID	8
@@ -49,6 +50,11 @@
  */
 #define UFS_WB_EXCEED_LIFETIME		0x0B
 
+/*
+ * In UFS Spec, the Extra Header Segment (EHS) starts from byte 32 in UPIU request/response packet
+ */
+#define EHS_OFFSET_IN_RESPONSE 32
+
 /* Well known logical unit id in LUN field of UPIU */
 enum {
 	UFS_UPIU_REPORT_LUNS_WLUN	= 0x81,
@@ -165,6 +171,7 @@ enum attr_idn {
 	QUERY_ATTR_IDN_AVAIL_WB_BUFF_SIZE       = 0x1D,
 	QUERY_ATTR_IDN_WB_BUFF_LIFE_TIME_EST    = 0x1E,
 	QUERY_ATTR_IDN_CURR_WB_BUFF_SIZE        = 0x1F,
+	QUERY_ATTR_IDN_EXT_IID_EN		= 0x2A,
 };
 
 /* Descriptor idn for Query requests */
@@ -212,6 +219,28 @@ enum unit_desc_param {
 	UNIT_DESC_PARAM_WB_BUF_ALLOC_UNITS	= 0x29,
 };
 
+/* RPMB Unit descriptor parameters offsets in bytes*/
+enum rpmb_unit_desc_param {
+	RPMB_UNIT_DESC_PARAM_LEN		= 0x0,
+	RPMB_UNIT_DESC_PARAM_TYPE		= 0x1,
+	RPMB_UNIT_DESC_PARAM_UNIT_INDEX		= 0x2,
+	RPMB_UNIT_DESC_PARAM_LU_ENABLE		= 0x3,
+	RPMB_UNIT_DESC_PARAM_BOOT_LUN_ID	= 0x4,
+	RPMB_UNIT_DESC_PARAM_LU_WR_PROTECT	= 0x5,
+	RPMB_UNIT_DESC_PARAM_LU_Q_DEPTH		= 0x6,
+	RPMB_UNIT_DESC_PARAM_PSA_SENSITIVE	= 0x7,
+	RPMB_UNIT_DESC_PARAM_MEM_TYPE		= 0x8,
+	RPMB_UNIT_DESC_PARAM_REGION_EN		= 0x9,
+	RPMB_UNIT_DESC_PARAM_LOGICAL_BLK_SIZE	= 0xA,
+	RPMB_UNIT_DESC_PARAM_LOGICAL_BLK_COUNT	= 0xB,
+	RPMB_UNIT_DESC_PARAM_REGION0_SIZE	= 0x13,
+	RPMB_UNIT_DESC_PARAM_REGION1_SIZE	= 0x14,
+	RPMB_UNIT_DESC_PARAM_REGION2_SIZE	= 0x15,
+	RPMB_UNIT_DESC_PARAM_REGION3_SIZE	= 0x16,
+	RPMB_UNIT_DESC_PARAM_PROVISIONING_TYPE	= 0x17,
+	RPMB_UNIT_DESC_PARAM_PHY_MEM_RSRC_CNT	= 0x18,
+};
+
 /* Device descriptor parameters offsets in bytes*/
 enum device_desc_param {
 	DEVICE_DESC_PARAM_LEN			= 0x0,
@@ -352,6 +381,7 @@ enum {
 	UFS_DEV_EXT_TEMP_NOTIF		= BIT(6),
 	UFS_DEV_HPB_SUPPORT		= BIT(7),
 	UFS_DEV_WRITE_BOOSTER_SUP	= BIT(8),
+	UFS_DEV_EXT_IID_SUP		= BIT(16),
 };
 #define UFS_DEV_HPB_SUPPORT_VERSION		0x310
 
@@ -589,6 +619,8 @@ struct ufs_dev_info {
 	u8	*model;
 	u16	wspecversion;
 	u32	clk_gating_wait_us;
+	/* Stores the depth of queue in UFS device */
+	u8	bqueuedepth;
 
 	/* UFS HPB related flag */
 	bool	hpb_enabled;
@@ -601,6 +633,14 @@ struct ufs_dev_info {
 
 	bool	b_rpm_dev_flush_capable;
 	u8	b_presrv_uspc_en;
+
+	bool    b_advanced_rpmb_en;
+
+	/* UFS EXT_IID Enable */
+	bool	b_ext_iid_en;
+
+	ANDROID_OEM_DATA(1);
+	ANDROID_KABI_RESERVE(1);
 };
 
 /*
diff --git a/include/ufs/ufshcd.h b/include/ufs/ufshcd.h
index b54f228..c6962ac 100644
--- a/include/ufs/ufshcd.h
+++ b/include/ufs/ufshcd.h
@@ -16,7 +16,9 @@
 #include <linux/blk-crypto-profile.h>
 #include <linux/blk-mq.h>
 #include <linux/devfreq.h>
+#include <linux/msi.h>
 #include <linux/pm_runtime.h>
+#include <linux/dma-direction.h>
 #include <scsi/scsi_device.h>
 #include <ufs/unipro.h>
 #include <ufs/ufs.h>
@@ -30,6 +32,7 @@ struct ufs_hba;
 enum dev_cmd_type {
 	DEV_CMD_TYPE_NOP		= 0x0,
 	DEV_CMD_TYPE_QUERY		= 0x1,
+	DEV_CMD_TYPE_RPMB		= 0x2,
 };
 
 enum ufs_event_type {
@@ -196,6 +199,8 @@ struct ufshcd_lrb {
 #endif
 
 	bool req_abort_skip;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /**
@@ -222,6 +227,7 @@ struct ufs_dev_cmd {
 	struct mutex lock;
 	struct completion *complete;
 	struct ufs_query query;
+	struct cq_entry *cqe;
 };
 
 /**
@@ -297,6 +303,12 @@ struct ufs_pwr_mode_info {
  * @config_scaling_param: called to configure clock scaling parameters
  * @program_key: program or evict an inline encryption key
  * @event_notify: called to notify important events
+ * @reinit_notify: called to notify reinit of UFSHCD during max gear switch
+ * @mcq_config_resource: called to configure MCQ platform resources
+ * @get_hba_mac: called to get vendor specific mac value, mandatory for mcq mode
+ * @op_runtime_config: called to config Operation and runtime regs Pointers
+ * @get_outstanding_cqs: called to get outstanding completion queues
+ * @config_esi: called to config Event Specific Interrupt
  */
 struct ufs_hba_variant_ops {
 	const char *name;
@@ -335,6 +347,13 @@ struct ufs_hba_variant_ops {
 			       const union ufs_crypto_cfg_entry *cfg, int slot);
 	void	(*event_notify)(struct ufs_hba *hba,
 				enum ufs_event_type evt, void *data);
+	void	(*reinit_notify)(struct ufs_hba *);
+	int	(*mcq_config_resource)(struct ufs_hba *hba);
+	int	(*get_hba_mac)(struct ufs_hba *hba);
+	int	(*op_runtime_config)(struct ufs_hba *hba);
+	int	(*get_outstanding_cqs)(struct ufs_hba *hba,
+				       unsigned long *ocqs);
+	int	(*config_esi)(struct ufs_hba *hba);
 };
 
 /* clock gating state  */
@@ -375,6 +394,8 @@ struct ufs_clk_gating {
 	bool is_initialized;
 	int active_reqs;
 	struct workqueue_struct *clk_gating_workq;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct ufs_saved_pwr_info {
@@ -421,6 +442,8 @@ struct ufs_clk_scaling {
 	bool is_initialized;
 	bool is_busy_started;
 	bool is_suspended;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 #define UFS_EVENT_HIST_LENGTH 8
@@ -593,6 +616,51 @@ enum ufshcd_quirks {
 	 * auto-hibernate capability but it's FASTAUTO only.
 	 */
 	UFSHCD_QUIRK_HIBERN_FASTAUTO			= 1 << 18,
+
+	/*
+	 * Some host raises interrupt (per queue) in addition to
+	 * CQES (traditional) when ESI is disabled.
+	 * Enable this quirk will disable CQES and use per queue interrupt.
+	 */
+	UFSHCD_QUIRK_MCQ_BROKEN_INTR			= 1 << 20,
+
+	/*
+	 * Some host does not implement SQ Run Time Command (SQRTC) register
+	 * thus need this quirk to skip related flow.
+	 */
+	UFSHCD_QUIRK_MCQ_BROKEN_RTC			= 1 << 21,
+};
+
+enum ufshcd_android_quirks {
+
+	/*
+	 * IMPORTANT: set this in hba->android_quirks, not hba->quirks!
+	 *
+	 * This quirk needs to be enabled if the host controller supports inline
+	 * encryption, but it needs to initialize the crypto capabilities in a
+	 * nonstandard way and/or it needs to override blk_crypto_ll_ops.  If
+	 * enabled, the standard code won't initialize the blk_crypto_profile;
+	 * ufs_hba_variant_ops::init() must do it instead.
+	 */
+	UFSHCD_ANDROID_QUIRK_CUSTOM_CRYPTO_PROFILE	= 1 << 0,
+
+	/*
+	 * IMPORTANT: set this in hba->android_quirks, not hba->quirks!
+	 *
+	 * This quirk needs to be enabled if the host controller supports inline
+	 * encryption, but the CRYPTO_GENERAL_ENABLE bit is not implemented and
+	 * breaks the HCE sequence if used.
+	 */
+	UFSHCD_ANDROID_QUIRK_BROKEN_CRYPTO_ENABLE	= 1 << 1,
+
+	/*
+	 * IMPORTANT: set this in hba->android_quirks, not hba->quirks!
+	 *
+	 * This quirk needs to be enabled if the host controller requires that
+	 * the PRDT be cleared after each encrypted request because encryption
+	 * keys were stored in it.
+	 */
+	UFSHCD_ANDROID_QUIRK_KEYS_IN_PRDT		= 1 << 2,
 };
 
 enum ufshcd_caps {
@@ -724,6 +792,51 @@ struct ufs_hba_monitor {
 };
 
 /**
+ * struct ufshcd_res_info_t - MCQ related resource regions
+ *
+ * @name: resource name
+ * @resource: pointer to resource region
+ * @base: register base address
+ */
+struct ufshcd_res_info {
+	const char *name;
+	struct resource *resource;
+	void __iomem *base;
+};
+
+enum ufshcd_res {
+	RES_UFS,
+	RES_MCQ,
+	RES_MCQ_SQD,
+	RES_MCQ_SQIS,
+	RES_MCQ_CQD,
+	RES_MCQ_CQIS,
+	RES_MCQ_VS,
+	RES_MAX,
+};
+
+/**
+ * struct ufshcd_mcq_opr_info_t - Operation and Runtime registers
+ *
+ * @offset: Doorbell Address Offset
+ * @stride: Steps proportional to queue [0...31]
+ * @base: base address
+ */
+struct ufshcd_mcq_opr_info_t {
+	unsigned long offset;
+	unsigned long stride;
+	void __iomem *base;
+};
+
+enum ufshcd_mcq_opr {
+	OPR_SQD,
+	OPR_SQIS,
+	OPR_CQD,
+	OPR_CQIS,
+	OPR_MAX,
+};
+
+/**
  * struct ufs_hba - per adapter private structure
  * @mmio_base: UFSHCI base register address
  * @ucdl_base_addr: UFS Command Descriptor base address
@@ -747,6 +860,7 @@ struct ufs_hba_monitor {
  * @outstanding_lock: Protects @outstanding_reqs.
  * @outstanding_reqs: Bits representing outstanding transfer requests
  * @capabilities: UFS Controller Capabilities
+ * @mcq_capabilities: UFS Multi Circular Queue capabilities
  * @nutrs: Transfer Request Queue depth supported by controller
  * @nutmrs: Task Management Queue depth supported by controller
  * @reserved_slot: Used to submit device commands. Protected by @dev_cmd.lock.
@@ -754,6 +868,7 @@ struct ufs_hba_monitor {
  * @vops: pointer to variant specific operations
  * @vps: pointer to variant specific parameters
  * @priv: pointer to variant specific private data
+ * @sg_entry_size: size of struct ufshcd_sg_entry (may include variant fields)
  * @irq: Irq number of the controller
  * @is_irq_enabled: whether or not the UFS controller interrupt is enabled.
  * @dev_ref_clk_freq: reference clock frequency
@@ -802,7 +917,9 @@ struct ufs_hba_monitor {
  * @caps: bitmask with information about UFS controller capabilities
  * @devfreq: frequency scaling information owned by the devfreq core
  * @clk_scaling: frequency scaling information owned by the UFS driver
- * @is_sys_suspended: whether or not the entire system has been suspended
+ * @system_suspending: system suspend has been started and system resume has
+ *	not yet finished.
+ * @is_sys_suspended: UFS device has been suspended because of system suspend
  * @urgent_bkops_lvl: keeps track of urgent bkops level for device
  * @is_urgent_bkops_lvl_checked: keeps track if the urgent bkops level for
  *  device is known or not.
@@ -827,8 +944,17 @@ struct ufs_hba_monitor {
  *	ee_ctrl_mask
  * @luns_avail: number of regular and well known LUNs supported by the UFS
  *	device
+ * @nr_hw_queues: number of hardware queues configured
+ * @nr_queues: number of Queues of different queue types
  * @complete_put: whether or not to call ufshcd_rpm_put() from inside
  *	ufshcd_resume_complete()
+ * @ext_iid_sup: is EXT_IID is supported by UFSHC
+ * @mcq_sup: is mcq supported by UFSHC
+ * @mcq_enabled: is mcq ready to accept requests
+ * @res: array of resource info of MCQ registers
+ * @mcq_base: Multi circular queue registers base address
+ * @uhq: array of supported hardware queues
+ * @dev_cmd_queue: Queue for issuing device management commands
  */
 struct ufs_hba {
 	void __iomem *mmio_base;
@@ -870,18 +996,24 @@ struct ufs_hba {
 
 	u32 capabilities;
 	int nutrs;
+	u32 mcq_capabilities;
 	int nutmrs;
 	u32 reserved_slot;
 	u32 ufs_version;
 	const struct ufs_hba_variant_ops *vops;
 	struct ufs_hba_variant_params *vps;
 	void *priv;
+#ifdef CONFIG_SCSI_UFS_VARIABLE_SG_ENTRY_SIZE
+	size_t sg_entry_size;
+#endif
 	unsigned int irq;
 	bool is_irq_enabled;
 	enum ufs_ref_clk_freq dev_ref_clk_freq;
 
 	unsigned int quirks;	/* Deviations from standard UFSHCI spec. */
 
+	unsigned int android_quirks; /* for UFSHCD_ANDROID_QUIRK_* flags */
+
 	/* Device deviations from standard UFS device spec. */
 	unsigned int dev_quirks;
 
@@ -894,6 +1026,7 @@ struct ufs_hba {
 	struct completion *uic_async_done;
 
 	enum ufshcd_state ufshcd_state;
+	bool logical_unit_scan_finished;
 	u32 eh_flags;
 	u32 intr_mask;
 	u16 ee_ctrl_mask;
@@ -944,6 +1077,7 @@ struct ufs_hba {
 
 	struct devfreq *devfreq;
 	struct ufs_clk_scaling clk_scaling;
+	bool system_suspending;
 	bool is_sys_suspended;
 
 	enum bkops_status urgent_bkops_lvl;
@@ -951,7 +1085,6 @@ struct ufs_hba {
 
 	struct mutex wb_mutex;
 	struct rw_semaphore clk_scaling_lock;
-	unsigned char desc_size[QUERY_DESC_IDN_MAX];
 	atomic_t scsi_block_reqs_cnt;
 
 	struct device		bsg_dev;
@@ -976,9 +1109,93 @@ struct ufs_hba {
 	u32 debugfs_ee_rate_limit_ms;
 #endif
 	u32 luns_avail;
+	unsigned int nr_hw_queues;
+	unsigned int nr_queues[HCTX_MAX_TYPES];
 	bool complete_put;
+	bool ext_iid_sup;
+	bool scsi_host_added;
+	bool mcq_sup;
+	bool mcq_enabled;
+	struct ufshcd_res_info res[RES_MAX];
+	void __iomem *mcq_base;
+	struct ufs_hw_queue *uhq;
+	struct ufs_hw_queue *dev_cmd_queue;
+	struct ufshcd_mcq_opr_info_t mcq_opr[OPR_MAX];
+
+	ANDROID_OEM_DATA(1);
 };
 
+/**
+ * struct ufs_hw_queue - per hardware queue structure
+ * @mcq_sq_head: base address of submission queue head pointer
+ * @mcq_sq_tail: base address of submission queue tail pointer
+ * @mcq_cq_head: base address of completion queue head pointer
+ * @mcq_cq_tail: base address of completion queue tail pointer
+ * @sqe_base_addr: submission queue entry base address
+ * @sqe_dma_addr: submission queue dma address
+ * @cqe_base_addr: completion queue base address
+ * @cqe_dma_addr: completion queue dma address
+ * @max_entries: max number of slots in this hardware queue
+ * @id: hardware queue ID
+ * @sq_tp_slot: current slot to which SQ tail pointer is pointing
+ * @sq_lock: serialize submission queue access
+ * @cq_tail_slot: current slot to which CQ tail pointer is pointing
+ * @cq_head_slot: current slot to which CQ head pointer is pointing
+ * @cq_lock: Synchronize between multiple polling instances
+ * @sq_mutex: prevent submission queue concurrent access
+ */
+struct ufs_hw_queue {
+	void __iomem *mcq_sq_head;
+	void __iomem *mcq_sq_tail;
+	void __iomem *mcq_cq_head;
+	void __iomem *mcq_cq_tail;
+
+	void *sqe_base_addr;
+	dma_addr_t sqe_dma_addr;
+	struct cq_entry *cqe_base_addr;
+	dma_addr_t cqe_dma_addr;
+	u32 max_entries;
+	u32 id;
+	u32 sq_tail_slot;
+	spinlock_t sq_lock;
+	u32 cq_tail_slot;
+	u32 cq_head_slot;
+	spinlock_t cq_lock;
+	/* prevent concurrent access to submission queue */
+	struct mutex sq_mutex;
+};
+
+static inline bool is_mcq_enabled(struct ufs_hba *hba)
+{
+	return hba->mcq_enabled;
+}
+
+#ifdef CONFIG_SCSI_UFS_VARIABLE_SG_ENTRY_SIZE
+static inline size_t ufshcd_sg_entry_size(const struct ufs_hba *hba)
+{
+	return hba->sg_entry_size;
+}
+
+static inline void ufshcd_set_sg_entry_size(struct ufs_hba *hba, size_t sg_entry_size)
+{
+	WARN_ON_ONCE(sg_entry_size < sizeof(struct ufshcd_sg_entry));
+	hba->sg_entry_size = sg_entry_size;
+}
+#else
+static inline size_t ufshcd_sg_entry_size(const struct ufs_hba *hba)
+{
+	return sizeof(struct ufshcd_sg_entry);
+}
+
+#define ufshcd_set_sg_entry_size(hba, sg_entry_size)                   \
+	({ (void)(hba); BUILD_BUG_ON(sg_entry_size != sizeof(struct ufshcd_sg_entry)); })
+#endif
+
+static inline size_t ufshcd_get_ucd_size(const struct ufs_hba *hba)
+{
+	return sizeof(struct utp_transfer_cmd_desc) + SG_ALL * ufshcd_sg_entry_size(hba);
+}
+
 /* Returns true if clocks can be gated. Otherwise false */
 static inline bool ufshcd_is_clkgating_allowed(struct ufs_hba *hba)
 {
@@ -1034,6 +1251,16 @@ static inline bool ufshcd_enable_wb_if_scaling_up(struct ufs_hba *hba)
 	return hba->caps & UFSHCD_CAP_WB_WITH_CLK_SCALING;
 }
 
+#define ufsmcq_writel(hba, val, reg)	\
+	writel((val), (hba)->mcq_base + (reg))
+#define ufsmcq_readl(hba, reg)	\
+	readl((hba)->mcq_base + (reg))
+
+#define ufsmcq_writelx(hba, val, reg)	\
+	writel_relaxed((val), (hba)->mcq_base + (reg))
+#define ufsmcq_readlx(hba, reg)	\
+	readl_relaxed((hba)->mcq_base + (reg))
+
 #define ufshcd_writel(hba, val, reg)	\
 	writel((val), (hba)->mmio_base + (reg))
 #define ufshcd_readl(hba, reg)	\
@@ -1070,12 +1297,13 @@ void ufshcd_parse_dev_ref_clk_freq(struct ufs_hba *hba, struct clk *refclk);
 void ufshcd_update_evt_hist(struct ufs_hba *hba, u32 id, u32 val);
 void ufshcd_hba_stop(struct ufs_hba *hba);
 void ufshcd_schedule_eh_work(struct ufs_hba *hba);
-
-static inline void check_upiu_size(void)
-{
-	BUILD_BUG_ON(ALIGNED_UPIU_SIZE <
-		GENERAL_UPIU_REQUEST_SIZE + QUERY_DESC_MAX_SIZE);
-}
+void ufshcd_mcq_write_cqis(struct ufs_hba *hba, u32 val, int i);
+unsigned long ufshcd_mcq_poll_cqe_nolock(struct ufs_hba *hba,
+					 struct ufs_hw_queue *hwq);
+unsigned long ufshcd_mcq_poll_cqe_lock(struct ufs_hba *hba,
+					 struct ufs_hw_queue *hwq);
+void ufshcd_mcq_enable_esi(struct ufs_hba *hba);
+void ufshcd_mcq_config_esi(struct ufs_hba *hba, struct msi_msg *msg);
 
 /**
  * ufshcd_set_variant - set variant specific data to the hba
@@ -1105,8 +1333,12 @@ extern int ufshcd_runtime_resume(struct device *dev);
 #ifdef CONFIG_PM_SLEEP
 extern int ufshcd_system_suspend(struct device *dev);
 extern int ufshcd_system_resume(struct device *dev);
+extern int ufshcd_system_freeze(struct device *dev);
+extern int ufshcd_system_thaw(struct device *dev);
+extern int ufshcd_system_restore(struct device *dev);
 #endif
 extern int ufshcd_shutdown(struct ufs_hba *hba);
+
 extern int ufshcd_dme_configure_adapt(struct ufs_hba *hba,
 				      int agreed_gear,
 				      int adapt_val);
@@ -1177,6 +1409,20 @@ static inline int ufshcd_disable_host_tx_lcc(struct ufs_hba *hba)
 	return ufshcd_dme_set(hba, UIC_ARG_MIB(PA_LOCAL_TX_LCC_ENABLE), 0);
 }
 
+int ufshcd_read_desc_param(struct ufs_hba *hba,
+			   enum desc_idn desc_id,
+			   int desc_index,
+			   u8 param_offset,
+			   u8 *param_read_buf,
+			   u8 param_size);
+int ufshcd_query_attr_retry(struct ufs_hba *hba,
+	enum query_opcode opcode, enum attr_idn idn, u8 index, u8 selector,
+	u32 *attr_val);
+int ufshcd_query_flag_retry(struct ufs_hba *hba,
+	enum query_opcode opcode, enum flag_idn idn, u8 index, bool *flag_res);
+
+int ufshcd_bkops_ctrl(struct ufs_hba *hba, enum bkops_status status);
+
 void ufshcd_auto_hibern8_enable(struct ufs_hba *hba);
 void ufshcd_auto_hibern8_update(struct ufs_hba *hba, u32 ahit);
 void ufshcd_fixup_dev_quirks(struct ufs_hba *hba,
@@ -1191,9 +1437,6 @@ void ufshcd_release(struct ufs_hba *hba);
 
 void ufshcd_clkgate_delay_set(struct device *dev, unsigned long value);
 
-void ufshcd_map_desc_id_to_length(struct ufs_hba *hba, enum desc_idn desc_id,
-				  int *desc_length);
-
 u32 ufshcd_get_local_unipro_ver(struct ufs_hba *hba);
 
 int ufshcd_get_vreg(struct device *dev, struct ufs_vreg *vreg);
@@ -1206,7 +1449,10 @@ int ufshcd_exec_raw_upiu_cmd(struct ufs_hba *hba,
 			     int msgcode,
 			     u8 *desc_buff, int *buff_len,
 			     enum query_opcode desc_op);
-
+int ufshcd_advanced_rpmb_req_handler(struct ufs_hba *hba, struct utp_upiu_req *req_upiu,
+				     struct utp_upiu_req *rsp_upiu, struct ufs_ehs *ehs_req,
+				     struct ufs_ehs *ehs_rsp, int sg_cnt,
+				     struct scatterlist *sg_list, enum dma_data_direction dir);
 int ufshcd_wb_toggle(struct ufs_hba *hba, bool enable);
 int ufshcd_wb_toggle_buf_flush(struct ufs_hba *hba, bool enable);
 int ufshcd_suspend_prepare(struct device *dev);
diff --git a/include/ufs/ufshci.h b/include/ufs/ufshci.h
index f525566a..9d291ca 100644
--- a/include/ufs/ufshci.h
+++ b/include/ufs/ufshci.h
@@ -22,6 +22,7 @@ enum {
 /* UFSHCI Registers */
 enum {
 	REG_CONTROLLER_CAPABILITIES		= 0x00,
+	REG_MCQCAP				= 0x04,
 	REG_UFS_VERSION				= 0x08,
 	REG_CONTROLLER_DEV_ID			= 0x10,
 	REG_CONTROLLER_PROD_ID			= 0x14,
@@ -56,6 +57,10 @@ enum {
 	REG_UFS_CCAP				= 0x100,
 	REG_UFS_CRYPTOCAP			= 0x104,
 
+	REG_UFS_MEM_CFG				= 0x300,
+	REG_UFS_MCQ_CFG				= 0x380,
+	REG_UFS_ESILBA				= 0x384,
+	REG_UFS_ESIUBA				= 0x388,
 	UFSHCI_CRYPTO_REG_SPACE_SIZE		= 0x400,
 };
 
@@ -63,19 +68,72 @@ enum {
 enum {
 	MASK_TRANSFER_REQUESTS_SLOTS		= 0x0000001F,
 	MASK_TASK_MANAGEMENT_REQUEST_SLOTS	= 0x00070000,
+	MASK_EHSLUTRD_SUPPORTED			= 0x00400000,
 	MASK_AUTO_HIBERN8_SUPPORT		= 0x00800000,
 	MASK_64_ADDRESSING_SUPPORT		= 0x01000000,
 	MASK_OUT_OF_ORDER_DATA_DELIVERY_SUPPORT	= 0x02000000,
 	MASK_UIC_DME_TEST_MODE_SUPPORT		= 0x04000000,
 	MASK_CRYPTO_SUPPORT			= 0x10000000,
+	MASK_MCQ_SUPPORT			= 0x40000000,
 };
 
+/* MCQ capability mask */
+enum {
+	MASK_EXT_IID_SUPPORT = 0x00000400,
+};
+
+enum {
+	REG_SQATTR		= 0x0,
+	REG_SQLBA		= 0x4,
+	REG_SQUBA		= 0x8,
+	REG_SQDAO		= 0xC,
+	REG_SQISAO		= 0x10,
+
+	REG_CQATTR		= 0x20,
+	REG_CQLBA		= 0x24,
+	REG_CQUBA		= 0x28,
+	REG_CQDAO		= 0x2C,
+	REG_CQISAO		= 0x30,
+};
+
+enum {
+	REG_SQHP		= 0x0,
+	REG_SQTP		= 0x4,
+	REG_SQRTC		= 0x8,
+	REG_SQCTI		= 0xC,
+	REG_SQRTS		= 0x10,
+};
+
+enum {
+	REG_CQHP		= 0x0,
+	REG_CQTP		= 0x4,
+};
+
+enum {
+	REG_CQIS		= 0x0,
+	REG_CQIE		= 0x4,
+};
+
+enum {
+	SQ_START		= 0x0,
+	SQ_STOP			= 0x1,
+	SQ_ICU			= 0x2,
+};
+
+enum {
+	SQ_STS			= 0x1,
+	SQ_CUS			= 0x2,
+};
+
+#define SQ_ICU_ERR_CODE_MASK		GENMASK(7, 4)
+#define UPIU_COMMAND_TYPE_MASK		GENMASK(31, 28)
 #define UFS_MASK(mask, offset)		((mask) << (offset))
 
 /* UFS Version 08h */
 #define MINOR_VERSION_NUM_MASK		UFS_MASK(0xFFFF, 0)
 #define MAJOR_VERSION_NUM_MASK		UFS_MASK(0xFFFF, 16)
 
+#define UFSHCD_NUM_RESERVED	1
 /*
  * Controller UFSHCI version
  * - 2.x and newer use the following scheme:
@@ -126,6 +184,7 @@ static inline u32 ufshci_version(u32 major, u32 minor)
 #define CONTROLLER_FATAL_ERROR			0x10000
 #define SYSTEM_BUS_FATAL_ERROR			0x20000
 #define CRYPTO_ENGINE_FATAL_ERROR		0x40000
+#define MCQ_CQ_EVENT_STATUS			0x100000
 
 #define UFSHCD_UIC_HIBERN8_MASK	(UIC_HIBERNATE_ENTER |\
 				UIC_HIBERNATE_EXIT)
@@ -223,6 +282,9 @@ enum {
 /* UTMRLRSR - UTP Task Management Request Run-Stop Register 80h */
 #define UTP_TASK_REQ_LIST_RUN_STOP_BIT		0x1
 
+/* CQISy - CQ y Interrupt Status Register  */
+#define UFSHCD_MCQ_CQIS_TAIL_ENT_PUSH_STS	0x1
+
 /* UICCMD - UIC Command */
 #define COMMAND_OPCODE_MASK		0xFF
 #define GEN_SELECTOR_INDEX_MASK		0xFFFF
@@ -422,18 +484,23 @@ struct ufshcd_sg_entry {
 	__le64    addr;
 	__le32    reserved;
 	__le32    size;
+	/*
+	 * followed by variant-specific fields if
+	 * CONFIG_SCSI_UFS_VARIABLE_SG_ENTRY_SIZE has been defined.
+	 */
 };
 
 /**
  * struct utp_transfer_cmd_desc - UTP Command Descriptor (UCD)
  * @command_upiu: Command UPIU Frame address
  * @response_upiu: Response UPIU Frame address
- * @prd_table: Physical Region Descriptor
+ * @prd_table: Physical Region Descriptor: an array of SG_ALL struct
+ *	ufshcd_sg_entry's.  Variant-specific fields may be present after each.
  */
 struct utp_transfer_cmd_desc {
 	u8 command_upiu[ALIGNED_UPIU_SIZE];
 	u8 response_upiu[ALIGNED_UPIU_SIZE];
-	struct ufshcd_sg_entry    prd_table[SG_ALL];
+	u8 prd_table[];
 };
 
 /**
@@ -453,8 +520,7 @@ struct request_desc_header {
 /**
  * struct utp_transfer_req_desc - UTP Transfer Request Descriptor (UTRD)
  * @header: UTRD header DW-0 to DW-3
- * @command_desc_base_addr_lo: UCD base address low DW-4
- * @command_desc_base_addr_hi: UCD base address high DW-5
+ * @command_desc_base_addr: UCD base address DW 4-5
  * @response_upiu_length: response UPIU length DW-6
  * @response_upiu_offset: response UPIU offset DW-6
  * @prd_table_length: Physical region descriptor length DW-7
@@ -466,8 +532,7 @@ struct utp_transfer_req_desc {
 	struct request_desc_header header;
 
 	/* DW 4-5*/
-	__le32  command_desc_base_addr_lo;
-	__le32  command_desc_base_addr_hi;
+	__le64  command_desc_base_addr;
 
 	/* DW 6 */
 	__le16  response_upiu_length;
@@ -478,6 +543,28 @@ struct utp_transfer_req_desc {
 	__le16  prd_table_offset;
 };
 
+/* MCQ Completion Queue Entry */
+struct cq_entry {
+	/* DW 0-1 */
+	__le64 command_desc_base_addr;
+
+	/* DW 2 */
+	__le16  response_upiu_length;
+	__le16  response_upiu_offset;
+
+	/* DW 3 */
+	__le16  prd_table_length;
+	__le16  prd_table_offset;
+
+	/* DW 4 */
+	__le32 status;
+
+	/* DW 5-7 */
+	__le32 reserved[3];
+};
+
+static_assert(sizeof(struct cq_entry) == 32);
+
 /*
  * UTMRD structure.
  */
diff --git a/include/ufs/unipro.h b/include/ufs/unipro.h
index 6c553f9..dc9dd1d 100644
--- a/include/ufs/unipro.h
+++ b/include/ufs/unipro.h
@@ -141,7 +141,6 @@
 #define PA_SAVECONFIGTIME	0x15A4
 #define PA_RXHSUNTERMCAP	0x15A5
 #define PA_RXLSTERMCAP		0x15A6
-#define PA_GRANULARITY		0x15AA
 #define PA_HIBERN8TIME		0x15A7
 #define PA_LOCALVERINFO		0x15A9
 #define PA_GRANULARITY		0x15AA
diff --git a/init/Kconfig b/init/Kconfig
index 2028ed4..1c860ba 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -155,7 +155,7 @@
 
 config WERROR
 	bool "Compile the kernel with warnings as errors"
-	default COMPILE_TEST
+	default y
 	help
 	  A kernel build should not cause any compiler warnings, and this
 	  enables the '-Werror' (for C) and '-Dwarnings' (for Rust) flags
@@ -1291,6 +1291,16 @@
 	  desktop applications.  Task group autogeneration is currently based
 	  upon task session.
 
+config RT_SOFTIRQ_AWARE_SCHED
+	bool "Improve RT scheduling during long softirq execution"
+	depends on SMP && !PREEMPT_RT
+	default n
+	help
+	  Enable an optimization which tries to avoid placing RT tasks on CPUs
+	  occupied by nonpreemptible tasks, such as a long softirq or CPUs
+	  which may soon block preemptions, such as a CPU running a ksoftirq
+	  thread which handles slow softirqs.
+
 config SYSFS_DEPRECATED
 	bool "Enable deprecated sysfs features to support old userspace tools"
 	depends on SYSFS
@@ -2007,3 +2017,5 @@
 # <asm/syscall_wrapper.h>.
 config ARCH_HAS_SYSCALL_WRAPPER
 	def_bool n
+
+source "init/Kconfig.gki"
diff --git a/init/Kconfig.gki b/init/Kconfig.gki
new file mode 100644
index 0000000..29eb1ee
--- /dev/null
+++ b/init/Kconfig.gki
@@ -0,0 +1,282 @@
+config GKI_HIDDEN_DRM_CONFIGS
+	bool "Hidden DRM configs needed for GKI"
+	select DRM_KMS_HELPER if (HAS_IOMEM && DRM)
+	select DRM_GEM_SHMEM_HELPER if (DRM)
+	select DRM_MIPI_DSI
+	select DRM_TTM if (HAS_IOMEM && DRM)
+	select VIDEOMODE_HELPERS
+	select WANT_DEV_COREDUMP
+	select INTERVAL_TREE
+	help
+	  Dummy config option used to enable hidden DRM configs.
+	  These are normally selected implicitly when including a
+	  DRM module, but for GKI, the modules are built out-of-tree.
+
+config GKI_HIDDEN_MCP251XFD_CONFIGS
+        bool "Hidden MCP251XFD configs needed for GKI"
+        select CAN_RX_OFFLOAD
+        help
+          Dummy config option used to enable hidden MCP251XFD configs.
+          These are normally selected implicitly when including a
+          MCP251XFD module, but for GKI, the modules are built out-of-tree.
+
+config GKI_HIDDEN_REGMAP_CONFIGS
+	bool "Hidden Regmap configs needed for GKI"
+	select REGMAP_IRQ
+	select REGMAP_MMIO
+	select REGMAP_SPMI
+	select SPMI
+	help
+	  Dummy config option used to enable hidden regmap configs.
+	  These are normally selected implicitly when a module
+	  that relies on it is configured.
+
+config GKI_HIDDEN_CRYPTO_CONFIGS
+	bool "Hidden CRYPTO configs needed for GKI"
+	select CRYPTO_ENGINE
+	help
+	  Dummy config option used to enable hidden CRYPTO configs.
+	  These are normally selected implicitly when a module
+	  that relies on it is configured.
+
+config GKI_HIDDEN_SND_CONFIGS
+	bool "Hidden SND configs needed for GKI"
+	select SND_VMASTER
+	select SND_PCM_ELD
+	select SND_JACK
+	select SND_JACK_INPUT_DEV
+	select SND_INTEL_NHLT if (ACPI)
+	help
+	  Dummy config option used to enable hidden SND configs.
+	  These are normally selected implicitly when a module
+	  that relies on it is configured.
+
+config GKI_HIDDEN_SND_SOC_CONFIGS
+	bool "Hidden SND_SOC configs needed for GKI"
+	select SND_SOC_GENERIC_DMAENGINE_PCM if (SND_SOC && SND)
+	select SND_PCM_IEC958
+	select SND_SOC_COMPRESS if (SND_SOC && SND)
+	select SND_SOC_TOPOLOGY if (SND_SOC && SND)
+	select DMADEVICES
+	select DMA_VIRTUAL_CHANNELS
+	help
+	  Dummy config option used to enable hidden SND_SOC configs.
+	  These are normally selected implicitly when a module
+	  that relies on it is configured.
+
+config GKI_HIDDEN_MMC_CONFIGS
+	bool "Hidden MMC configs needed for GKI"
+	select MMC_SDHCI_IO_ACCESSORS if (MMC_SDHCI)
+	help
+	  Dummy config option used to enable hidden MMC configs.
+	  These are normally selected implicitly when a module
+	  that relies on it is configured.
+
+config GKI_HIDDEN_GPIO_CONFIGS
+	bool "Hidden GPIO configs needed for GKI"
+	select PINCTRL_SINGLE if (PINCTRL && OF && HAS_IOMEM)
+	select GPIO_PL061 if (HAS_IOMEM && ARM_AMBA && GPIOLIB)
+	help
+	  Dummy config option used to enable hidden GPIO configs.
+	  These are normally selected implicitly when a module
+	  that relies on it is configured.
+
+config GKI_HIDDEN_QCOM_CONFIGS
+	bool "Hidden QCOM configs needed for GKI"
+	select QCOM_SMEM_STATE
+	select QCOM_GDSC if (ARCH_QCOM)
+	select IOMMU_IO_PGTABLE_LPAE if (ARCH_QCOM)
+	select INTERCONNECT_QCOM if (ARCH_QCOM)
+
+	help
+	  Dummy config option used to enable hidden QCOM configs.
+	  These are normally selected implicitly when a module
+	  that relies on it is configured.
+
+config GKI_HIDDEN_MEDIA_CONFIGS
+	bool "Hidden Media configs needed for GKI"
+	select VIDEOBUF2_CORE
+	select V4L2_MEM2MEM_DEV
+	select MEDIA_CONTROLLER
+	select MEDIA_CONTROLLER_REQUEST_API
+	select MEDIA_SUPPORT
+	select FRAME_VECTOR
+	select CEC_CORE
+	select CEC_NOTIFIER
+	select CEC_PIN
+	select VIDEOBUF2_DMA_CONTIG
+	select VIDEOBUF2_DMA_SG
+	select VIDEO_V4L2_SUBDEV_API
+	help
+	  Dummy config option used to enable hidden media configs.
+	  These are normally selected implicitly when a module
+	  that relies on it is configured.
+
+config GKI_HIDDEN_VIRTUAL_CONFIGS
+	bool "Hidden Virtual configs needed for GKI"
+	select HVC_DRIVER
+	help
+	  Dummy config option used to enable hidden virtual device configs.
+	  These are normally selected implicitly when a module
+	  that relies on it is configured.
+
+# LEGACY_WEXT_ALLCONFIG Discussed upstream, soundly rejected as a unique
+# problem for GKI to solve.  It should be noted that these extensions are
+# in-effect deprecated and generally unsupported and we should pressure
+# the SOC vendors to drop any modules that require these extensions.
+config GKI_LEGACY_WEXT_ALLCONFIG
+	bool "Hidden wireless extension configs needed for GKI"
+	select WIRELESS_EXT
+	select WEXT_CORE
+	select WEXT_PROC
+	select WEXT_SPY
+	select WEXT_PRIV
+	help
+	  Dummy config option used to enable all the hidden legacy wireless
+	  extensions to the core wireless network functionality used by
+	  add-in modules.
+
+	  If you are not building a kernel to be used for a variety of
+	  out-of-kernel built wireless modules, say N here.
+
+config GKI_HIDDEN_USB_CONFIGS
+	bool "Hiddel USB configurations needed for GKI"
+	select USB_PHY
+	help
+	  Dummy config option used to enable all USB related hidden configs.
+	  These configurations are usually only selected by another config
+	  option or a combination of them.
+
+	  If you are not building a kernel to be used for a variety of
+	  out-of-kernel build USB drivers, say N here.
+
+config GKI_HIDDEN_SOC_BUS_CONFIGS
+	bool "Hidden SoC bus configuration needed for GKI"
+	select SOC_BUS
+	  help
+	    Dummy config option used to enable SOC_BUS hidden Kconfig.
+	    The configuration is required for SoCs to register themselves to the bus.
+
+	    If you are not building a kernel to be used for a variety of SoCs and
+	    out-of-tree drivers, say N here.
+
+config GKI_HIDDEN_RPMSG_CONFIGS
+	bool "Hidden RPMSG configuration needed for GKI"
+	select RPMSG
+	help
+	  Dummy config option used to enable the hidden RPMSG config.
+	  This configuration is usually only selected by another config
+	  option or a combination of them.
+
+	  If you are not building a kernel to be used for a variety of
+	  out-of-kernel build RPMSG drivers, say N here.
+
+config GKI_HIDDEN_GPU_CONFIGS
+	bool "Hidden GPU configuration needed for GKI"
+	select TRACE_GPU_MEM
+	help
+	  Dummy config option used to enable the hidden GPU config.
+	  These are normally selected implicitly when a module
+	  that relies on it is configured.
+
+config GKI_HIDDEN_IRQ_CONFIGS
+	bool "Hidden IRQ configuration needed for GKI"
+	select GENERIC_IRQ_CHIP
+	select IRQ_DOMAIN_HIERARCHY
+	select IRQ_FASTEOI_HIERARCHY_HANDLERS
+	help
+	  Dummy config option used to enable GENERIC_IRQ_CHIP hidden
+	  config, required by various SoC platforms. This is usually
+	  selected by ARCH_*.
+
+config GKI_HIDDEN_HYPERVISOR_CONFIGS
+	bool "Hidden hypervisor configuration needed for GKI"
+	select SYS_HYPERVISOR
+	help
+	  Dummy config option used to enable the SYS_HYPERVISOR hidden
+	  config, required by various SoC platforms. This is usually
+	  selected by XEN or S390.
+
+config GKI_HIDDEN_NET_CONFIGS
+	bool "Hidden networking configuration needed for GKI"
+	select PAGE_POOL
+	select NET_PTP_CLASSIFY
+	help
+	  Dummy config option used to enable the networking hidden
+	  config, required by various SoC platforms.
+
+config GKI_HIDDEN_PHY_CONFIGS
+	bool "Hidden PHY configuration needed for GKI"
+	select GENERIC_PHY_MIPI_DPHY
+	help
+	  Dummy config option used to enable the hidden PHY configs,
+	  required by various SoC platforms.
+
+config GKI_HIDDEN_MM_CONFIGS
+	bool "Hidden MM configuration needed for GKI"
+	select PAGE_REPORTING
+	select BALLOON_COMPACTION
+	select MEMORY_BALLOON
+	help
+	  Dummy config option used to enable hidden MM configs,
+	  currently required for VIRTIO_BALLOON
+
+config GKI_HIDDEN_ETHERNET_CONFIGS
+	bool "Hidden Ethernet configuration needed for GKI"
+	select PHYLINK
+	help
+	  Dummy config option used to enable the hidden Ethernet PHYLINK
+	  configs, required by various ethernet devices.
+
+config GKI_HIDDEN_DMA_CONFIGS
+	bool "Hidden DMA configuration needed for GKI"
+	select ASYNC_TX_ENABLE_CHANNEL_SWITCH
+	help
+	  Dummy config option used to enable the hidden DMA configs,
+	  required by various SoC platforms.
+
+config GKI_NET_XFRM_HACKS
+	bool "XFRM changes required by Android"
+	help
+	  Android Networking tests fail without this.
+
+# Atrocities needed for
+# a) building GKI modules in separate tree, or
+# b) building drivers that are not modularizable
+#
+# All of these should be reworked into an upstream solution
+# if possible.
+#
+config GKI_HACKS_TO_FIX
+	bool "GKI Dummy config options"
+	select GKI_NET_XFRM_HACKS
+	select GKI_HIDDEN_CRYPTO_CONFIGS
+	select GKI_HIDDEN_DRM_CONFIGS
+	select GKI_HIDDEN_MCP251XFD_CONFIGS
+	select GKI_HIDDEN_REGMAP_CONFIGS
+	select GKI_HIDDEN_SND_CONFIGS
+	select GKI_HIDDEN_SND_SOC_CONFIGS
+	select GKI_HIDDEN_MMC_CONFIGS
+	select GKI_HIDDEN_GPIO_CONFIGS
+	select GKI_HIDDEN_QCOM_CONFIGS
+	select GKI_LEGACY_WEXT_ALLCONFIG
+	select GKI_HIDDEN_MEDIA_CONFIGS
+	select GKI_HIDDEN_VIRTUAL_CONFIGS
+	select GKI_HIDDEN_USB_CONFIGS
+	select GKI_HIDDEN_SOC_BUS_CONFIGS
+	select GKI_HIDDEN_RPMSG_CONFIGS
+	select GKI_HIDDEN_GPU_CONFIGS
+	select GKI_HIDDEN_IRQ_CONFIGS
+	select GKI_HIDDEN_HYPERVISOR_CONFIGS
+	select GKI_HIDDEN_NET_CONFIGS
+	select GKI_HIDDEN_PHY_CONFIGS
+	select GKI_HIDDEN_MM_CONFIGS
+	select GKI_HIDDEN_ETHERNET_CONFIGS
+	select GKI_HIDDEN_DMA_CONFIGS
+
+	help
+	  Dummy config option used to enable core functionality used by
+	  modules that may not be selectable in this config.
+
+	  Unless you are building a GKI kernel to be used with modules
+	  built from a different config, say N here.
diff --git a/init/init_task.c b/init/init_task.c
index ff6c4b9..31ceb0e 100644
--- a/init/init_task.c
+++ b/init/init_task.c
@@ -210,6 +210,10 @@ struct task_struct init_task
 #ifdef CONFIG_SECCOMP_FILTER
 	.seccomp	= { .filter_count = ATOMIC_INIT(0) },
 #endif
+#ifdef CONFIG_ANDROID_VENDOR_OEM_DATA
+	.android_vendor_data1 = {0, },
+	.android_oem_data1 = {0, },
+#endif
 };
 EXPORT_SYMBOL(init_task);
 
diff --git a/init/main.c b/init/main.c
index aa21add..8937f68 100644
--- a/init/main.c
+++ b/init/main.c
@@ -112,8 +112,6 @@
 #define CREATE_TRACE_POINTS
 #include <trace/events/initcall.h>
 
-#include <kunit/test.h>
-
 static int kernel_init(void *);
 
 extern void init_IRQ(void);
@@ -1630,8 +1628,6 @@ static noinline void __init kernel_init_freeable(void)
 
 	do_basic_setup();
 
-	kunit_run_all_tests();
-
 	wait_for_initramfs();
 	console_on_rootfs();
 
diff --git a/kernel/.gitignore b/kernel/.gitignore
index c6b299a..5477d8f 100644
--- a/kernel/.gitignore
+++ b/kernel/.gitignore
@@ -1,3 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0-only
 /config_data
 /kheaders.md5
+/gki_module_exported.h
+/gki_module_protected.h
+/module/gki_module_protected_exports.h
+/module/gki_module_unprotected.h
diff --git a/kernel/bpf/Makefile b/kernel/bpf/Makefile
index 341c94f..0f0b283 100644
--- a/kernel/bpf/Makefile
+++ b/kernel/bpf/Makefile
@@ -43,3 +43,6 @@
 obj-$(CONFIG_BPF_SYSCALL) += relo_core.o
 $(obj)/relo_core.o: $(srctree)/tools/lib/bpf/relo_core.c FORCE
 	$(call if_changed_rule,cc_o_c)
+ifeq ($(CONFIG_FUSE_BPF),y)
+obj-$(CONFIG_BPF_SYSCALL) += bpf_fuse.o
+endif
diff --git a/kernel/bpf/bpf_fuse.c b/kernel/bpf/bpf_fuse.c
new file mode 100644
index 0000000..c6aa670b
--- /dev/null
+++ b/kernel/bpf/bpf_fuse.c
@@ -0,0 +1,128 @@
+// SPDX-License-Identifier: GPL-2.0
+// Copyright (c) 2021 Google LLC
+
+#include <linux/filter.h>
+#include <linux/android_fuse.h>
+
+static const struct bpf_func_proto *
+fuse_prog_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog)
+{
+	switch (func_id) {
+	case BPF_FUNC_trace_printk:
+			return bpf_get_trace_printk_proto();
+
+	case BPF_FUNC_get_current_uid_gid:
+			return &bpf_get_current_uid_gid_proto;
+
+	case BPF_FUNC_get_current_pid_tgid:
+			return &bpf_get_current_pid_tgid_proto;
+
+	case BPF_FUNC_map_lookup_elem:
+		return &bpf_map_lookup_elem_proto;
+
+	case BPF_FUNC_map_update_elem:
+		return &bpf_map_update_elem_proto;
+
+	default:
+		pr_debug("Invalid fuse bpf func %d\n", func_id);
+		return NULL;
+	}
+}
+
+static bool fuse_prog_is_valid_access(int off, int size,
+				enum bpf_access_type type,
+				const struct bpf_prog *prog,
+				struct bpf_insn_access_aux *info)
+{
+	int i;
+
+	if (off < 0 || off > offsetofend(struct fuse_bpf_args, out_args))
+		return false;
+
+	/* TODO This is garbage. Do it properly */
+	for (i = 0; i < 5; i++) {
+		if (off == offsetof(struct fuse_bpf_args, in_args[i].value)) {
+			info->reg_type = PTR_TO_BUF;
+			info->ctx_field_size = 256;
+			if (type != BPF_READ)
+				return false;
+			return true;
+		}
+	}
+	for (i = 0; i < 3; i++) {
+		if (off == offsetof(struct fuse_bpf_args, out_args[i].value)) {
+			info->reg_type = PTR_TO_BUF;
+			info->ctx_field_size = 256;
+			return true;
+		}
+	}
+	if (type != BPF_READ)
+		return false;
+
+	return true;
+}
+
+const struct bpf_verifier_ops fuse_verifier_ops = {
+	.get_func_proto  = fuse_prog_func_proto,
+	.is_valid_access = fuse_prog_is_valid_access,
+};
+
+const struct bpf_prog_ops fuse_prog_ops = {
+};
+
+struct bpf_prog *fuse_get_bpf_prog(struct file *file)
+{
+	struct bpf_prog *bpf_prog = ERR_PTR(-EINVAL);
+
+	if (!file || IS_ERR(file))
+		return bpf_prog;
+	/**
+	 * Two ways of getting a bpf prog from another task's fd, since
+	 * bpf_prog_get_type_dev only works with an fd
+	 *
+	 * 1) Duplicate a little of the needed code. Requires access to
+	 *    bpf_prog_fops for validation, which is not exported for modules
+	 * 2) Insert the bpf_file object into a fd from the current task
+	 *    Stupidly complex, but I think OK, as security checks are not run
+	 *    during the existence of the handle
+	 *
+	 * Best would be to upstream 1) into kernel/bpf/syscall.c and export it
+	 * for use here. Failing that, we have to use 2, since fuse must be
+	 * compilable as a module.
+	 */
+#if 1
+	if (file->f_op != &bpf_prog_fops)
+		goto out;
+
+	bpf_prog = file->private_data;
+	if (bpf_prog->type == BPF_PROG_TYPE_FUSE)
+		bpf_prog_inc(bpf_prog);
+	else
+		bpf_prog = ERR_PTR(-EINVAL);
+
+#else
+	{
+		int task_fd = get_unused_fd_flags(file->f_flags);
+
+		if (task_fd < 0)
+			goto out;
+
+		fd_install(task_fd, file);
+
+		bpf_prog = bpf_prog_get_type_dev(task_fd, BPF_PROG_TYPE_FUSE,
+						 false);
+
+		/* Close the fd, which also closes the file */
+		__close_fd(current->files, task_fd);
+		file = NULL;
+	}
+#endif
+
+out:
+	if (file)
+		fput(file);
+	return bpf_prog;
+}
+EXPORT_SYMBOL(fuse_get_bpf_prog);
+
+
diff --git a/kernel/bpf/btf.c b/kernel/bpf/btf.c
index 8220caa..6fec7c3 100644
--- a/kernel/bpf/btf.c
+++ b/kernel/bpf/btf.c
@@ -3,6 +3,7 @@
 
 #include <uapi/linux/btf.h>
 #include <uapi/linux/bpf.h>
+#include <uapi/linux/android_fuse.h>
 #include <uapi/linux/bpf_perf_event.h>
 #include <uapi/linux/types.h>
 #include <linux/seq_file.h>
@@ -1399,12 +1400,18 @@ __printf(4, 5) static void __btf_verifier_log_type(struct btf_verifier_env *env,
 	if (!bpf_verifier_log_needed(log))
 		return;
 
-	/* btf verifier prints all types it is processing via
-	 * btf_verifier_log_type(..., fmt = NULL).
-	 * Skip those prints for in-kernel BTF verification.
-	 */
-	if (log->level == BPF_LOG_KERNEL && !fmt)
-		return;
+	if (log->level == BPF_LOG_KERNEL) {
+		/* btf verifier prints all types it is processing via
+		 * btf_verifier_log_type(..., fmt = NULL).
+		 * Skip those prints for in-kernel BTF verification.
+		 */
+		if (!fmt)
+			return;
+
+		/* Skip logging when loading module BTF with mismatches permitted */
+		if (env->btf->base_btf && IS_ENABLED(CONFIG_MODULE_ALLOW_BTF_MISMATCH))
+			return;
+	}
 
 	__btf_verifier_log(log, "[%u] %s %s%s",
 			   env->log_type_id,
@@ -1443,8 +1450,15 @@ static void btf_verifier_log_member(struct btf_verifier_env *env,
 	if (!bpf_verifier_log_needed(log))
 		return;
 
-	if (log->level == BPF_LOG_KERNEL && !fmt)
-		return;
+	if (log->level == BPF_LOG_KERNEL) {
+		if (!fmt)
+			return;
+
+		/* Skip logging when loading module BTF with mismatches permitted */
+		if (env->btf->base_btf && IS_ENABLED(CONFIG_MODULE_ALLOW_BTF_MISMATCH))
+			return;
+	}
+
 	/* The CHECK_META phase already did a btf dump.
 	 *
 	 * If member is logged again, it must hit an error in
@@ -7113,11 +7127,14 @@ static int btf_module_notify(struct notifier_block *nb, unsigned long op,
 		}
 		btf = btf_parse_module(mod->name, mod->btf_data, mod->btf_data_size);
 		if (IS_ERR(btf)) {
-			pr_warn("failed to validate module [%s] BTF: %ld\n",
-				mod->name, PTR_ERR(btf));
 			kfree(btf_mod);
-			if (!IS_ENABLED(CONFIG_MODULE_ALLOW_BTF_MISMATCH))
+			if (!IS_ENABLED(CONFIG_MODULE_ALLOW_BTF_MISMATCH)) {
+				pr_warn("failed to validate module [%s] BTF: %ld\n",
+					mod->name, PTR_ERR(btf));
 				err = PTR_ERR(btf);
+			} else {
+				pr_warn_once("Kernel module BTF mismatch detected, BTF debug info may be unavailable for some modules\n");
+			}
 			goto out;
 		}
 		err = btf_alloc_id(btf);
diff --git a/kernel/bpf/ringbuf.c b/kernel/bpf/ringbuf.c
index 9e832ac..4cc6d1a 100644
--- a/kernel/bpf/ringbuf.c
+++ b/kernel/bpf/ringbuf.c
@@ -269,7 +269,7 @@ static int ringbuf_map_mmap_kern(struct bpf_map *map, struct vm_area_struct *vma
 		if (vma->vm_pgoff != 0 || vma->vm_end - vma->vm_start != PAGE_SIZE)
 			return -EPERM;
 	} else {
-		vma->vm_flags &= ~VM_MAYWRITE;
+		vm_flags_clear(vma, VM_MAYWRITE);
 	}
 	/* remap_vmalloc_range() checks size and offset constraints */
 	return remap_vmalloc_range(vma, rb_map->rb,
@@ -290,7 +290,7 @@ static int ringbuf_map_mmap_user(struct bpf_map *map, struct vm_area_struct *vma
 			 */
 			return -EPERM;
 	} else {
-		vma->vm_flags &= ~VM_MAYWRITE;
+		vm_flags_clear(vma, VM_MAYWRITE);
 	}
 	/* remap_vmalloc_range() checks size and offset constraints */
 	return remap_vmalloc_range(vma, rb_map->rb, vma->vm_pgoff + RINGBUF_PGOFF);
diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c
index 8633ec4..13815bc 100644
--- a/kernel/bpf/syscall.c
+++ b/kernel/bpf/syscall.c
@@ -36,6 +36,8 @@
 #include <linux/memcontrol.h>
 #include <linux/trace_events.h>
 
+#include <trace/hooks/syscall_check.h>
+
 #define IS_FD_ARRAY(map) ((map)->map_type == BPF_MAP_TYPE_PERF_EVENT_ARRAY || \
 			  (map)->map_type == BPF_MAP_TYPE_CGROUP_ARRAY || \
 			  (map)->map_type == BPF_MAP_TYPE_ARRAY_OF_MAPS)
@@ -806,10 +808,10 @@ static int bpf_map_mmap(struct file *filp, struct vm_area_struct *vma)
 	/* set default open/close callbacks */
 	vma->vm_ops = &bpf_map_default_vmops;
 	vma->vm_private_data = map;
-	vma->vm_flags &= ~VM_MAYEXEC;
+	vm_flags_clear(vma, VM_MAYEXEC);
 	if (!(vma->vm_flags & VM_WRITE))
 		/* disallow re-mapping with PROT_WRITE */
-		vma->vm_flags &= ~VM_MAYWRITE;
+		vm_flags_clear(vma, VM_MAYWRITE);
 
 	err = map->ops->map_mmap(map, vma);
 	if (err)
@@ -4941,6 +4943,8 @@ static int __sys_bpf(int cmd, bpfptr_t uattr, unsigned int size)
 	if (copy_from_bpfptr(&attr, uattr, size) != 0)
 		return -EFAULT;
 
+	trace_android_vh_check_bpf_syscall(cmd, &attr, size);
+
 	err = security_bpf(cmd, &attr, size);
 	if (err < 0)
 		return err;
diff --git a/kernel/cgroup/cgroup-v1.c b/kernel/cgroup/cgroup-v1.c
index 5407241..d0fd939 100644
--- a/kernel/cgroup/cgroup-v1.c
+++ b/kernel/cgroup/cgroup-v1.c
@@ -17,6 +17,7 @@
 #include <linux/fs_parser.h>
 
 #include <trace/events/cgroup.h>
+#include <trace/hooks/cgroup.h>
 
 /*
  * pidlists linger the following amount before being destroyed.  The goal
@@ -514,13 +515,15 @@ static ssize_t __cgroup1_procs_write(struct kernfs_open_file *of,
 	tcred = get_task_cred(task);
 	if (!uid_eq(cred->euid, GLOBAL_ROOT_UID) &&
 	    !uid_eq(cred->euid, tcred->uid) &&
-	    !uid_eq(cred->euid, tcred->suid))
+	    !uid_eq(cred->euid, tcred->suid) &&
+	    !ns_capable(tcred->user_ns, CAP_SYS_NICE))
 		ret = -EACCES;
 	put_cred(tcred);
 	if (ret)
 		goto out_finish;
 
 	ret = cgroup_attach_task(cgrp, task, threadgroup);
+	trace_android_vh_cgroup_set_task(ret, task);
 
 out_finish:
 	cgroup_procs_write_finish(task, locked);
diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c
index 2380c4d..c5c317e 100644
--- a/kernel/cgroup/cgroup.c
+++ b/kernel/cgroup/cgroup.c
@@ -62,6 +62,9 @@
 
 #define CREATE_TRACE_POINTS
 #include <trace/events/cgroup.h>
+#undef CREATE_TRACE_POINTS
+
+#include <trace/hooks/cgroup.h>
 
 #define CGROUP_FILE_NAME_MAX		(MAX_CGROUP_TYPE_NAMELEN +	\
 					 MAX_CFTYPE_NAME + 2)
@@ -2510,6 +2513,7 @@ struct task_struct *cgroup_taskset_first(struct cgroup_taskset *tset,
 
 	return cgroup_taskset_next(tset, dst_cssp);
 }
+EXPORT_SYMBOL_GPL(cgroup_taskset_first);
 
 /**
  * cgroup_taskset_next - iterate to the next task in taskset
@@ -2556,6 +2560,7 @@ struct task_struct *cgroup_taskset_next(struct cgroup_taskset *tset,
 
 	return NULL;
 }
+EXPORT_SYMBOL_GPL(cgroup_taskset_next);
 
 /**
  * cgroup_migrate_execute - migrate a taskset
@@ -2626,6 +2631,7 @@ static int cgroup_migrate_execute(struct cgroup_mgctx *mgctx)
 		do_each_subsys_mask(ss, ssid, mgctx->ss_mask) {
 			if (ss->attach) {
 				tset->ssid = ssid;
+				trace_android_vh_cgroup_attach(ss, tset);
 				ss->attach(tset);
 			}
 		} while_each_subsys_mask();
@@ -3877,6 +3883,12 @@ static __poll_t cgroup_pressure_poll(struct kernfs_open_file *of,
 	return psi_trigger_poll(&ctx->psi.trigger, of->file, pt);
 }
 
+static int cgroup_pressure_open(struct kernfs_open_file *of)
+{
+	return (of->file->f_mode & FMODE_WRITE && !capable(CAP_SYS_RESOURCE)) ?
+		-EPERM : 0;
+}
+
 static void cgroup_pressure_release(struct kernfs_open_file *of)
 {
 	struct cgroup_file_ctx *ctx = of->priv;
@@ -4462,6 +4474,7 @@ int cgroup_add_legacy_cftypes(struct cgroup_subsys *ss, struct cftype *cfts)
 		cft->flags |= __CFTYPE_NOT_ON_DFL;
 	return cgroup_add_cftypes(ss, cfts);
 }
+EXPORT_SYMBOL_GPL(cgroup_add_legacy_cftypes);
 
 /**
  * cgroup_file_notify - generate a file modified event for a cgroup_file
@@ -4571,6 +4584,7 @@ struct cgroup_subsys_state *css_next_child(struct cgroup_subsys_state *pos,
 		return next;
 	return NULL;
 }
+EXPORT_SYMBOL_GPL(css_next_child);
 
 /**
  * css_next_descendant_pre - find the next descendant for pre-order walk
@@ -5276,6 +5290,7 @@ static struct cftype cgroup_psi_files[] = {
 	{
 		.name = "io.pressure",
 		.file_offset = offsetof(struct cgroup, psi_files[PSI_IO]),
+		.open = cgroup_pressure_open,
 		.seq_show = cgroup_io_pressure_show,
 		.write = cgroup_io_pressure_write,
 		.poll = cgroup_pressure_poll,
@@ -5284,6 +5299,7 @@ static struct cftype cgroup_psi_files[] = {
 	{
 		.name = "memory.pressure",
 		.file_offset = offsetof(struct cgroup, psi_files[PSI_MEM]),
+		.open = cgroup_pressure_open,
 		.seq_show = cgroup_memory_pressure_show,
 		.write = cgroup_memory_pressure_write,
 		.poll = cgroup_pressure_poll,
@@ -5292,6 +5308,7 @@ static struct cftype cgroup_psi_files[] = {
 	{
 		.name = "cpu.pressure",
 		.file_offset = offsetof(struct cgroup, psi_files[PSI_CPU]),
+		.open = cgroup_pressure_open,
 		.seq_show = cgroup_cpu_pressure_show,
 		.write = cgroup_cpu_pressure_write,
 		.poll = cgroup_pressure_poll,
@@ -5301,6 +5318,7 @@ static struct cftype cgroup_psi_files[] = {
 	{
 		.name = "irq.pressure",
 		.file_offset = offsetof(struct cgroup, psi_files[PSI_IRQ]),
+		.open = cgroup_pressure_open,
 		.seq_show = cgroup_irq_pressure_show,
 		.write = cgroup_irq_pressure_write,
 		.poll = cgroup_pressure_poll,
diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c
index e276db7..a29cfcc 100644
--- a/kernel/cgroup/cpuset.c
+++ b/kernel/cgroup/cpuset.c
@@ -67,6 +67,8 @@
 #include <linux/cgroup.h>
 #include <linux/wait.h>
 
+#include <trace/hooks/cgroup.h>
+
 DEFINE_STATIC_KEY_FALSE(cpusets_pre_enable_key);
 DEFINE_STATIC_KEY_FALSE(cpusets_enabled_key);
 
@@ -137,6 +139,7 @@ struct cpuset {
 
 	/* user-configured CPUs and Memory Nodes allow to tasks */
 	cpumask_var_t cpus_allowed;
+	cpumask_var_t cpus_requested;
 	nodemask_t mems_allowed;
 
 	/* effective CPUs and Memory Nodes allow to tasks */
@@ -404,17 +407,6 @@ static struct cpuset top_cpuset = {
  */
 
 DEFINE_STATIC_PERCPU_RWSEM(cpuset_rwsem);
-
-void cpuset_read_lock(void)
-{
-	percpu_down_read(&cpuset_rwsem);
-}
-
-void cpuset_read_unlock(void)
-{
-	percpu_up_read(&cpuset_rwsem);
-}
-
 static DEFINE_SPINLOCK(callback_lock);
 
 static struct workqueue_struct *cpuset_migrate_mm_wq;
@@ -580,7 +572,7 @@ static void cpuset_update_task_spread_flags(struct cpuset *cs,
 
 static int is_cpuset_subset(const struct cpuset *p, const struct cpuset *q)
 {
-	return	cpumask_subset(p->cpus_allowed, q->cpus_allowed) &&
+	return	cpumask_subset(p->cpus_requested, q->cpus_requested) &&
 		nodes_subset(p->mems_allowed, q->mems_allowed) &&
 		is_cpu_exclusive(p) <= is_cpu_exclusive(q) &&
 		is_mem_exclusive(p) <= is_mem_exclusive(q);
@@ -617,8 +609,13 @@ static inline int alloc_cpumasks(struct cpuset *cs, struct tmpmasks *tmp)
 	if (!zalloc_cpumask_var(pmask3, GFP_KERNEL))
 		goto free_two;
 
+	if (cs && !zalloc_cpumask_var(&cs->cpus_requested, GFP_KERNEL))
+		goto free_three;
+
 	return 0;
 
+free_three:
+	free_cpumask_var(*pmask3);
 free_two:
 	free_cpumask_var(*pmask2);
 free_one:
@@ -635,6 +632,7 @@ static inline void free_cpumasks(struct cpuset *cs, struct tmpmasks *tmp)
 {
 	if (cs) {
 		free_cpumask_var(cs->cpus_allowed);
+		free_cpumask_var(cs->cpus_requested);
 		free_cpumask_var(cs->effective_cpus);
 		free_cpumask_var(cs->subparts_cpus);
 	}
@@ -663,6 +661,7 @@ static struct cpuset *alloc_trial_cpuset(struct cpuset *cs)
 	}
 
 	cpumask_copy(trial->cpus_allowed, cs->cpus_allowed);
+	cpumask_copy(trial->cpus_requested, cs->cpus_requested);
 	cpumask_copy(trial->effective_cpus, cs->effective_cpus);
 	return trial;
 }
@@ -777,7 +776,7 @@ static int validate_change(struct cpuset *cur, struct cpuset *trial)
 	cpuset_for_each_child(c, css, par) {
 		if ((is_cpu_exclusive(trial) || is_cpu_exclusive(c)) &&
 		    c != cur &&
-		    cpumask_intersects(trial->cpus_allowed, c->cpus_allowed))
+		    cpumask_intersects(trial->cpus_requested, c->cpus_requested))
 			goto out;
 		if ((is_mem_exclusive(trial) || is_mem_exclusive(c)) &&
 		    c != cur &&
@@ -1201,6 +1200,7 @@ void rebuild_sched_domains(void)
 	percpu_up_write(&cpuset_rwsem);
 	cpus_read_unlock();
 }
+EXPORT_SYMBOL_GPL(rebuild_sched_domains);
 
 /**
  * update_tasks_cpumask - Update the cpumasks of tasks in the cpuset.
@@ -1250,10 +1250,10 @@ static void compute_effective_cpumask(struct cpumask *new_cpus,
 	if (parent->nr_subparts_cpus) {
 		cpumask_or(new_cpus, parent->effective_cpus,
 			   parent->subparts_cpus);
-		cpumask_and(new_cpus, new_cpus, cs->cpus_allowed);
+		cpumask_and(new_cpus, new_cpus, cs->cpus_requested);
 		cpumask_and(new_cpus, new_cpus, cpu_active_mask);
 	} else {
-		cpumask_and(new_cpus, cs->cpus_allowed, parent->effective_cpus);
+		cpumask_and(new_cpus, cs->cpus_requested, parent_cs(cs)->effective_cpus);
 	}
 }
 
@@ -1745,25 +1745,26 @@ static int update_cpumask(struct cpuset *cs, struct cpuset *trialcs,
 		return -EACCES;
 
 	/*
-	 * An empty cpus_allowed is ok only if the cpuset has no tasks.
+	 * An empty cpus_requested is ok only if the cpuset has no tasks.
 	 * Since cpulist_parse() fails on an empty mask, we special case
 	 * that parsing.  The validate_change() call ensures that cpusets
 	 * with tasks have cpus.
 	 */
 	if (!*buf) {
-		cpumask_clear(trialcs->cpus_allowed);
+		cpumask_clear(trialcs->cpus_requested);
 	} else {
-		retval = cpulist_parse(buf, trialcs->cpus_allowed);
+		retval = cpulist_parse(buf, trialcs->cpus_requested);
 		if (retval < 0)
 			return retval;
-
-		if (!cpumask_subset(trialcs->cpus_allowed,
-				    top_cpuset.cpus_allowed))
-			return -EINVAL;
 	}
 
+	if (!cpumask_subset(trialcs->cpus_requested, cpu_present_mask))
+		return -EINVAL;
+
+	cpumask_and(trialcs->cpus_allowed, trialcs->cpus_requested, cpu_active_mask);
+
 	/* Nothing to do if the cpus didn't change */
-	if (cpumask_equal(cs->cpus_allowed, trialcs->cpus_allowed))
+	if (cpumask_equal(cs->cpus_requested, trialcs->cpus_requested))
 		return 0;
 
 #ifdef CONFIG_CPUMASK_OFFSTACK
@@ -1821,6 +1822,7 @@ static int update_cpumask(struct cpuset *cs, struct cpuset *trialcs,
 				  parent_cs(cs));
 	spin_lock_irq(&callback_lock);
 	cpumask_copy(cs->cpus_allowed, trialcs->cpus_allowed);
+	cpumask_copy(cs->cpus_requested, trialcs->cpus_requested);
 
 	/*
 	 * Make sure that subparts_cpus, if not empty, is a subset of
@@ -2783,7 +2785,7 @@ static int cpuset_common_seq_show(struct seq_file *sf, void *v)
 
 	switch (type) {
 	case FILE_CPULIST:
-		seq_printf(sf, "%*pbl\n", cpumask_pr_args(cs->cpus_allowed));
+		seq_printf(sf, "%*pbl\n", cpumask_pr_args(cs->cpus_requested));
 		break;
 	case FILE_MEMLIST:
 		seq_printf(sf, "%*pbl\n", nodemask_pr_args(&cs->mems_allowed));
@@ -3172,6 +3174,7 @@ static int cpuset_css_online(struct cgroup_subsys_state *css)
 	cs->mems_allowed = parent->mems_allowed;
 	cs->effective_mems = parent->mems_allowed;
 	cpumask_copy(cs->cpus_allowed, parent->cpus_allowed);
+	cpumask_copy(cs->cpus_requested, parent->cpus_requested);
 	cpumask_copy(cs->effective_cpus, parent->cpus_allowed);
 	spin_unlock_irq(&callback_lock);
 out_unlock:
@@ -3314,18 +3317,18 @@ static void cpuset_cancel_fork(struct task_struct *task, struct css_set *cset)
 static void cpuset_fork(struct task_struct *task)
 {
 	struct cpuset *cs;
-	bool same_cs;
+	bool same_cs, inherit_cpus = false;
 
 	rcu_read_lock();
 	cs = task_cs(task);
 	same_cs = (cs == task_cs(current));
 	rcu_read_unlock();
-
 	if (same_cs) {
 		if (cs == &top_cpuset)
 			return;
-
-		set_cpus_allowed_ptr(task, current->cpus_ptr);
+		trace_android_rvh_cpuset_fork(task, &inherit_cpus);
+		if (!inherit_cpus)
+			set_cpus_allowed_ptr(task, current->cpus_ptr);
 		task->mems_allowed = current->mems_allowed;
 		return;
 	}
@@ -3374,8 +3377,10 @@ int __init cpuset_init(void)
 	BUG_ON(!alloc_cpumask_var(&top_cpuset.cpus_allowed, GFP_KERNEL));
 	BUG_ON(!alloc_cpumask_var(&top_cpuset.effective_cpus, GFP_KERNEL));
 	BUG_ON(!zalloc_cpumask_var(&top_cpuset.subparts_cpus, GFP_KERNEL));
+	BUG_ON(!alloc_cpumask_var(&top_cpuset.cpus_requested, GFP_KERNEL));
 
 	cpumask_setall(top_cpuset.cpus_allowed);
+	cpumask_setall(top_cpuset.cpus_requested);
 	nodes_setall(top_cpuset.mems_allowed);
 	cpumask_setall(top_cpuset.effective_cpus);
 	nodes_setall(top_cpuset.effective_mems);
@@ -3795,7 +3800,7 @@ void cpuset_cpus_allowed(struct task_struct *tsk, struct cpumask *pmask)
 	guarantee_online_cpus(tsk, pmask);
 	spin_unlock_irqrestore(&callback_lock, flags);
 }
-
+EXPORT_SYMBOL_GPL(cpuset_cpus_allowed);
 /**
  * cpuset_cpus_allowed_fallback - final fallback before complete catastrophe.
  * @tsk: pointer to task_struct with which the scheduler is struggling
diff --git a/kernel/cgroup/legacy_freezer.c b/kernel/cgroup/legacy_freezer.c
index 122dacb..f453366 100644
--- a/kernel/cgroup/legacy_freezer.c
+++ b/kernel/cgroup/legacy_freezer.c
@@ -479,3 +479,4 @@ struct cgroup_subsys freezer_cgrp_subsys = {
 	.fork		= freezer_fork,
 	.legacy_cftypes	= files,
 };
+EXPORT_SYMBOL_GPL(freezer_cgrp_subsys);
diff --git a/kernel/cred.c b/kernel/cred.c
index e10c15f..d4a529c 100644
--- a/kernel/cred.c
+++ b/kernel/cred.c
@@ -17,6 +17,8 @@
 #include <linux/cn_proc.h>
 #include <linux/uidgid.h>
 
+#include <trace/hooks/creds.h>
+
 #if 0
 #define kdebug(FMT, ...)						\
 	printk("[%-5.5s%5u] " FMT "\n",					\
@@ -181,6 +183,7 @@ void exit_creds(struct task_struct *tsk)
 	key_put(tsk->cached_requested_key);
 	tsk->cached_requested_key = NULL;
 #endif
+	trace_android_rvh_exit_creds(tsk, cred);
 }
 
 /**
@@ -499,6 +502,7 @@ int commit_creds(struct cred *new)
 		inc_rlimit_ucounts(new->ucounts, UCOUNT_RLIMIT_NPROC, 1);
 	rcu_assign_pointer(task->real_cred, new);
 	rcu_assign_pointer(task->cred, new);
+	trace_android_rvh_commit_creds(task, new);
 	if (new->user != old->user || new->user_ns != old->user_ns)
 		dec_rlimit_ucounts(old->ucounts, UCOUNT_RLIMIT_NPROC, 1);
 	alter_cred_subscribers(old, -2);
@@ -576,6 +580,7 @@ const struct cred *override_creds(const struct cred *new)
 	get_new_cred((struct cred *)new);
 	alter_cred_subscribers(new, 1);
 	rcu_assign_pointer(current->cred, new);
+	trace_android_rvh_override_creds(current, new);
 	alter_cred_subscribers(old, -1);
 
 	kdebug("override_creds() = %p{%d,%d}", old,
@@ -604,6 +609,7 @@ void revert_creds(const struct cred *old)
 	validate_creds(override);
 	alter_cred_subscribers(old, 1);
 	rcu_assign_pointer(current->cred, old);
+	trace_android_rvh_revert_creds(current, old);
 	alter_cred_subscribers(override, -1);
 	put_cred(override);
 }
diff --git a/kernel/dma/contiguous.c b/kernel/dma/contiguous.c
index 6ea80ae..d06c598 100644
--- a/kernel/dma/contiguous.c
+++ b/kernel/dma/contiguous.c
@@ -58,6 +58,7 @@
 #endif
 
 struct cma *dma_contiguous_default_area;
+EXPORT_SYMBOL_GPL(dma_contiguous_default_area);
 
 /*
  * Default global CMA area size can be defined in kernel's .config.
diff --git a/kernel/dma/debug.c b/kernel/dma/debug.c
index 18c93c2..082329b 100644
--- a/kernel/dma/debug.c
+++ b/kernel/dma/debug.c
@@ -1134,10 +1134,11 @@ static void check_sync(struct device *dev,
 				dir2name[entry->direction],
 				dir2name[ref->direction]);
 
+	/* sg list count can be less than map count when partial cache sync */
 	if (ref->sg_call_ents && ref->type == dma_debug_sg &&
-	    ref->sg_call_ents != entry->sg_call_ents) {
+	    ref->sg_call_ents > entry->sg_call_ents) {
 		err_printk(ref->dev, entry, "device driver syncs "
-			   "DMA sg list with different entry count "
+			   "DMA sg list count larger than map count "
 			   "[map count=%d] [sync count=%d]\n",
 			   entry->sg_call_ents, ref->sg_call_ents);
 	}
diff --git a/kernel/dma/direct.c b/kernel/dma/direct.c
index 63859a1..71bb2e3 100644
--- a/kernel/dma/direct.c
+++ b/kernel/dma/direct.c
@@ -60,7 +60,8 @@ static gfp_t dma_direct_optimal_gfp_mask(struct device *dev, u64 dma_mask,
 	*phys_limit = dma_to_phys(dev, dma_limit);
 	if (*phys_limit <= DMA_BIT_MASK(zone_dma_bits))
 		return GFP_DMA;
-	if (*phys_limit <= DMA_BIT_MASK(32))
+	if (*phys_limit <= DMA_BIT_MASK(32) &&
+		!zone_dma32_are_empty())
 		return GFP_DMA32;
 	return 0;
 }
@@ -145,7 +146,8 @@ static struct page *__dma_direct_alloc_pages(struct device *dev, size_t size,
 
 		if (IS_ENABLED(CONFIG_ZONE_DMA32) &&
 		    phys_limit < DMA_BIT_MASK(64) &&
-		    !(gfp & (GFP_DMA32 | GFP_DMA))) {
+		    !(gfp & (GFP_DMA32 | GFP_DMA)) &&
+		    !zone_dma32_are_empty()) {
 			gfp |= GFP_DMA32;
 			goto again;
 		}
diff --git a/kernel/dma/mapping.c b/kernel/dma/mapping.c
index 33437d6..03c7211 100644
--- a/kernel/dma/mapping.c
+++ b/kernel/dma/mapping.c
@@ -420,6 +420,9 @@ pgprot_t dma_pgprot(struct device *dev, pgprot_t prot, unsigned long attrs)
 	if (attrs & DMA_ATTR_WRITE_COMBINE)
 		return pgprot_writecombine(prot);
 #endif
+	if (attrs & DMA_ATTR_SYS_CACHE ||
+	    attrs & DMA_ATTR_SYS_CACHE_NWA)
+		return pgprot_syscached(prot);
 	return pgprot_dmacoherent(prot);
 }
 #endif /* CONFIG_MMU */
diff --git a/kernel/dma/pool.c b/kernel/dma/pool.c
index 4d40dcc..8e79903 100644
--- a/kernel/dma/pool.c
+++ b/kernel/dma/pool.c
@@ -71,7 +71,7 @@ static bool cma_in_zone(gfp_t gfp)
 	end = cma_get_base(cma) + size - 1;
 	if (IS_ENABLED(CONFIG_ZONE_DMA) && (gfp & GFP_DMA))
 		return end <= DMA_BIT_MASK(zone_dma_bits);
-	if (IS_ENABLED(CONFIG_ZONE_DMA32) && (gfp & GFP_DMA32))
+	if (IS_ENABLED(CONFIG_ZONE_DMA32) && (gfp & GFP_DMA32) && !zone_dma32_are_empty())
 		return end <= DMA_BIT_MASK(32);
 	return true;
 }
@@ -153,7 +153,7 @@ static void atomic_pool_work_fn(struct work_struct *work)
 	if (IS_ENABLED(CONFIG_ZONE_DMA))
 		atomic_pool_resize(atomic_pool_dma,
 				   GFP_KERNEL | GFP_DMA);
-	if (IS_ENABLED(CONFIG_ZONE_DMA32))
+	if (IS_ENABLED(CONFIG_ZONE_DMA32) && !zone_dma32_are_empty())
 		atomic_pool_resize(atomic_pool_dma32,
 				   GFP_KERNEL | GFP_DMA32);
 	atomic_pool_resize(atomic_pool_kernel, GFP_KERNEL);
@@ -209,7 +209,7 @@ static int __init dma_atomic_pool_init(void)
 		if (!atomic_pool_dma)
 			ret = -ENOMEM;
 	}
-	if (IS_ENABLED(CONFIG_ZONE_DMA32)) {
+	if (IS_ENABLED(CONFIG_ZONE_DMA32) && !zone_dma32_are_empty()) {
 		atomic_pool_dma32 = __dma_atomic_pool_init(atomic_pool_size,
 						GFP_KERNEL | GFP_DMA32);
 		if (!atomic_pool_dma32)
@@ -224,7 +224,7 @@ postcore_initcall(dma_atomic_pool_init);
 static inline struct gen_pool *dma_guess_pool(struct gen_pool *prev, gfp_t gfp)
 {
 	if (prev == NULL) {
-		if (IS_ENABLED(CONFIG_ZONE_DMA32) && (gfp & GFP_DMA32))
+		if (IS_ENABLED(CONFIG_ZONE_DMA32) && (gfp & GFP_DMA32) && !zone_dma32_are_empty())
 			return atomic_pool_dma32;
 		if (atomic_pool_dma && (gfp & GFP_DMA))
 			return atomic_pool_dma;
diff --git a/kernel/events/core.c b/kernel/events/core.c
index 934332b..e0f4d8d 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -4516,6 +4516,7 @@ int perf_event_read_local(struct perf_event *event, u64 *value,
 
 	return ret;
 }
+EXPORT_SYMBOL_GPL(perf_event_read_local);
 
 static int perf_event_read(struct perf_event *event, bool group)
 {
@@ -6402,7 +6403,7 @@ static int perf_mmap(struct file *file, struct vm_area_struct *vma)
 	 * Since pinned accounting is per vm we cannot allow fork() to copy our
 	 * vma.
 	 */
-	vma->vm_flags |= VM_DONTCOPY | VM_DONTEXPAND | VM_DONTDUMP;
+	vm_flags_set(vma, VM_DONTCOPY | VM_DONTEXPAND | VM_DONTDUMP);
 	vma->vm_ops = &perf_mmap_vmops;
 
 	if (event->pmu->event_mapped)
@@ -6591,23 +6592,12 @@ static void perf_pending_task(struct callback_head *head)
 #ifdef CONFIG_GUEST_PERF_EVENTS
 struct perf_guest_info_callbacks __rcu *perf_guest_cbs;
 
-DEFINE_STATIC_CALL_RET0(__perf_guest_state, *perf_guest_cbs->state);
-DEFINE_STATIC_CALL_RET0(__perf_guest_get_ip, *perf_guest_cbs->get_ip);
-DEFINE_STATIC_CALL_RET0(__perf_guest_handle_intel_pt_intr, *perf_guest_cbs->handle_intel_pt_intr);
-
 void perf_register_guest_info_callbacks(struct perf_guest_info_callbacks *cbs)
 {
 	if (WARN_ON_ONCE(rcu_access_pointer(perf_guest_cbs)))
 		return;
 
 	rcu_assign_pointer(perf_guest_cbs, cbs);
-	static_call_update(__perf_guest_state, cbs->state);
-	static_call_update(__perf_guest_get_ip, cbs->get_ip);
-
-	/* Implementing ->handle_intel_pt_intr is optional. */
-	if (cbs->handle_intel_pt_intr)
-		static_call_update(__perf_guest_handle_intel_pt_intr,
-				   cbs->handle_intel_pt_intr);
 }
 EXPORT_SYMBOL_GPL(perf_register_guest_info_callbacks);
 
@@ -6617,10 +6607,6 @@ void perf_unregister_guest_info_callbacks(struct perf_guest_info_callbacks *cbs)
 		return;
 
 	rcu_assign_pointer(perf_guest_cbs, NULL);
-	static_call_update(__perf_guest_state, (void *)&__static_call_return0);
-	static_call_update(__perf_guest_get_ip, (void *)&__static_call_return0);
-	static_call_update(__perf_guest_handle_intel_pt_intr,
-			   (void *)&__static_call_return0);
 	synchronize_rcu();
 }
 EXPORT_SYMBOL_GPL(perf_unregister_guest_info_callbacks);
diff --git a/kernel/exit.c b/kernel/exit.c
index bccfa42..1e3b967 100644
--- a/kernel/exit.c
+++ b/kernel/exit.c
@@ -72,6 +72,7 @@
 #include <linux/uaccess.h>
 #include <asm/unistd.h>
 #include <asm/mmu_context.h>
+#include <trace/hooks/mm.h>
 
 /*
  * The default value should be high enough to not crash a system that randomly
@@ -560,6 +561,7 @@ static void exit_mm(void)
 	task_unlock(current);
 	mmap_read_unlock(mm);
 	mm_update_next_owner(mm);
+	trace_android_vh_exit_mm(mm);
 	mmput(mm);
 	if (test_thread_flag(TIF_MEMDIE))
 		exit_oom_victim();
@@ -813,6 +815,7 @@ void __noreturn do_exit(long code)
 
 	WARN_ON(tsk->plug);
 
+	profile_task_exit(tsk);
 	kcov_task_exit(tsk);
 	kmsan_task_exit(tsk);
 
diff --git a/kernel/fork.c b/kernel/fork.c
index 6bb91fb..b028337 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -97,6 +97,7 @@
 #include <linux/scs.h>
 #include <linux/io_uring.h>
 #include <linux/bpf.h>
+#include <linux/cpufreq_times.h>
 
 #include <asm/pgalloc.h>
 #include <linux/uaccess.h>
@@ -109,6 +110,8 @@
 #define CREATE_TRACE_POINTS
 #include <trace/events/task.h>
 
+#undef CREATE_TRACE_POINTS
+#include <trace/hooks/sched.h>
 /*
  * Minimum number of threads to boot the kernel
  */
@@ -119,6 +122,9 @@
  */
 #define MAX_THREADS FUTEX_TID_MASK
 
+EXPORT_TRACEPOINT_SYMBOL_GPL(task_newtask);
+EXPORT_TRACEPOINT_SYMBOL_GPL(task_rename);
+
 /*
  * Protected counters by write_lock_irq(&tasklist_lock)
  */
@@ -139,6 +145,7 @@ static const char * const resident_page_types[] = {
 DEFINE_PER_CPU(unsigned long, process_counts) = 0;
 
 __cacheline_aligned DEFINE_RWLOCK(tasklist_lock);  /* outer */
+EXPORT_SYMBOL_GPL(tasklist_lock);
 
 #ifdef CONFIG_PROVE_RCU
 int lockdep_tasklist_lock_is_held(void)
@@ -451,13 +458,49 @@ static struct kmem_cache *vm_area_cachep;
 /* SLAB cache for mm_struct structures (tsk->mm) */
 static struct kmem_cache *mm_cachep;
 
+#ifdef CONFIG_PER_VMA_LOCK
+
+/* SLAB cache for vm_area_struct.lock */
+static struct kmem_cache *vma_lock_cachep;
+
+static bool vma_lock_alloc(struct vm_area_struct *vma)
+{
+	vma->vm_lock = kmem_cache_alloc(vma_lock_cachep, GFP_KERNEL);
+	if (!vma->vm_lock)
+		return false;
+
+	init_rwsem(&vma->vm_lock->lock);
+	vma->vm_lock_seq = -1;
+
+	return true;
+}
+
+static inline void vma_lock_free(struct vm_area_struct *vma)
+{
+	kmem_cache_free(vma_lock_cachep, vma->vm_lock);
+}
+
+#else /* CONFIG_PER_VMA_LOCK */
+
+static inline bool vma_lock_alloc(struct vm_area_struct *vma) { return true; }
+static inline void vma_lock_free(struct vm_area_struct *vma) {}
+
+#endif /* CONFIG_PER_VMA_LOCK */
+
 struct vm_area_struct *vm_area_alloc(struct mm_struct *mm)
 {
 	struct vm_area_struct *vma;
 
 	vma = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL);
-	if (vma)
-		vma_init(vma, mm);
+	if (!vma)
+		return NULL;
+
+	vma_init(vma, mm);
+	if (!vma_lock_alloc(vma)) {
+		kmem_cache_free(vm_area_cachep, vma);
+		return NULL;
+	}
+
 	return vma;
 }
 
@@ -465,26 +508,54 @@ struct vm_area_struct *vm_area_dup(struct vm_area_struct *orig)
 {
 	struct vm_area_struct *new = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL);
 
-	if (new) {
-		ASSERT_EXCLUSIVE_WRITER(orig->vm_flags);
-		ASSERT_EXCLUSIVE_WRITER(orig->vm_file);
-		/*
-		 * orig->shared.rb may be modified concurrently, but the clone
-		 * will be reinitialized.
-		 */
-		*new = data_race(*orig);
-		INIT_LIST_HEAD(&new->anon_vma_chain);
-		dup_anon_vma_name(orig, new);
+	if (!new)
+		return NULL;
+
+	ASSERT_EXCLUSIVE_WRITER(orig->vm_flags);
+	ASSERT_EXCLUSIVE_WRITER(orig->vm_file);
+	/*
+	 * orig->shared.rb may be modified concurrently, but the clone
+	 * will be reinitialized.
+	 */
+	data_race(memcpy(new, orig, sizeof(*new)));
+	if (!vma_lock_alloc(new)) {
+		kmem_cache_free(vm_area_cachep, new);
+		return NULL;
 	}
+	INIT_LIST_HEAD(&new->anon_vma_chain);
+	dup_anon_vma_name(orig, new);
+
 	return new;
 }
 
-void vm_area_free(struct vm_area_struct *vma)
+void __vm_area_free(struct vm_area_struct *vma)
 {
 	free_anon_vma_name(vma);
+	vma_lock_free(vma);
 	kmem_cache_free(vm_area_cachep, vma);
 }
 
+#ifdef CONFIG_PER_VMA_LOCK
+static void vm_area_free_rcu_cb(struct rcu_head *head)
+{
+	struct vm_area_struct *vma = container_of(head, struct vm_area_struct,
+						  vm_rcu);
+
+	/* The vma should not be locked while being destroyed. */
+	VM_BUG_ON_VMA(rwsem_is_locked(&vma->vm_lock->lock), vma);
+	__vm_area_free(vma);
+}
+#endif
+
+void vm_area_free(struct vm_area_struct *vma)
+{
+#ifdef CONFIG_PER_VMA_LOCK
+	call_rcu(&vma->vm_rcu, vm_area_free_rcu_cb);
+#else
+	__vm_area_free(vma);
+#endif
+}
+
 static void account_kernel_stack(struct task_struct *tsk, int account)
 {
 	if (IS_ENABLED(CONFIG_VMAP_STACK)) {
@@ -538,9 +609,11 @@ void free_task(struct task_struct *tsk)
 #ifdef CONFIG_SECCOMP
 	WARN_ON_ONCE(tsk->seccomp.filter);
 #endif
+	cpufreq_task_times_exit(tsk);
 	release_user_cpus_ptr(tsk);
 	scs_release(tsk);
 
+	trace_android_vh_free_task(tsk);
 #ifndef CONFIG_THREAD_INFO_IN_TASK
 	/*
 	 * The task is finally done with both the stack and thread_info,
@@ -661,7 +734,7 @@ static __latent_entropy int dup_mmap(struct mm_struct *mm,
 			tmp->anon_vma = NULL;
 		} else if (anon_vma_fork(tmp, mpnt))
 			goto fail_nomem_anon_vma_fork;
-		tmp->vm_flags &= ~(VM_LOCKED | VM_LOCKONFAULT);
+		vm_flags_clear(tmp, VM_LOCKED_MASK);
 		file = tmp->vm_file;
 		if (file) {
 			struct address_space *mapping = file->f_mapping;
@@ -1053,6 +1126,10 @@ static struct task_struct *dup_task_struct(struct task_struct *orig, int node)
 	tsk->reported_split_lock = 0;
 #endif
 
+	android_init_vendor_data(tsk, 1);
+	android_init_oem_data(tsk, 1);
+
+	trace_android_vh_dup_task_struct(tsk, orig);
 	return tsk;
 
 free_stack:
@@ -1120,6 +1197,9 @@ static struct mm_struct *mm_init(struct mm_struct *mm, struct task_struct *p,
 	seqcount_init(&mm->write_protect_seq);
 	mmap_init_lock(mm);
 	INIT_LIST_HEAD(&mm->mmlist);
+#ifdef CONFIG_PER_VMA_LOCK
+	mm->mm_lock_seq = 0;
+#endif
 	mm_pgtables_bytes_init(mm);
 	mm->map_count = 0;
 	mm->locked_vm = 0;
@@ -1209,8 +1289,10 @@ void mmput(struct mm_struct *mm)
 {
 	might_sleep();
 
-	if (atomic_dec_and_test(&mm->mm_users))
+	if (atomic_dec_and_test(&mm->mm_users)) {
+		trace_android_vh_mmput(mm);
 		__mmput(mm);
+	}
 }
 EXPORT_SYMBOL_GPL(mmput);
 
@@ -2102,6 +2184,8 @@ static __latent_entropy struct task_struct *copy_process(
 		siginitsetinv(&p->blocked, sigmask(SIGKILL)|sigmask(SIGSTOP));
 	}
 
+	cpufreq_task_times_init(p);
+
 	p->set_child_tid = (clone_flags & CLONE_CHILD_SETTID) ? args->child_tid : NULL;
 	/*
 	 * Clear TID on mm_release()?
@@ -2682,6 +2766,8 @@ pid_t kernel_clone(struct kernel_clone_args *args)
 	if (IS_ERR(p))
 		return PTR_ERR(p);
 
+	cpufreq_task_times_alloc(p);
+
 	/*
 	 * Do this prior waking up the new thread - the thread pointer
 	 * might get invalid after that point, if the thread exits quickly.
@@ -3058,6 +3144,9 @@ void __init proc_caches_init(void)
 			sizeof_field(struct mm_struct, saved_auxv),
 			NULL);
 	vm_area_cachep = KMEM_CACHE(vm_area_struct, SLAB_PANIC|SLAB_ACCOUNT);
+#ifdef CONFIG_PER_VMA_LOCK
+	vma_lock_cachep = KMEM_CACHE(vma_lock, SLAB_PANIC|SLAB_ACCOUNT);
+#endif
 	mmap_init();
 	nsproxy_cache_init();
 }
diff --git a/kernel/freezer.c b/kernel/freezer.c
index 4fad0e6..b672c61 100644
--- a/kernel/freezer.c
+++ b/kernel/freezer.c
@@ -12,6 +12,9 @@
 #include <linux/freezer.h>
 #include <linux/kthread.h>
 
+#undef CREATE_TRACE_POINT
+#include <trace/hooks/cgroup.h>
+
 /* total number of freezing conditions in effect */
 DEFINE_STATIC_KEY_FALSE(freezer_active);
 EXPORT_SYMBOL(freezer_active);
@@ -75,6 +78,7 @@ bool __refrigerator(bool check_kthr_stop)
 
 		spin_lock_irq(&freezer_lock);
 		freeze = freezing(current) && !(check_kthr_stop && kthread_should_stop());
+		trace_android_rvh_refrigerator(pm_nosig_freezing);
 		spin_unlock_irq(&freezer_lock);
 
 		if (!freeze)
diff --git a/kernel/futex/core.c b/kernel/futex/core.c
index 514e458..94d6e02 100644
--- a/kernel/futex/core.c
+++ b/kernel/futex/core.c
@@ -40,6 +40,7 @@
 
 #include "futex.h"
 #include "../locking/rtmutex_common.h"
+#include <trace/hooks/futex.h>
 
 /*
  * The base of the bucket array and its size are always used together
@@ -543,6 +544,7 @@ void futex_q_unlock(struct futex_hash_bucket *hb)
 void __futex_queue(struct futex_q *q, struct futex_hash_bucket *hb)
 {
 	int prio;
+	bool already_on_hb = false;
 
 	/*
 	 * The priority used to register this element is
@@ -555,7 +557,9 @@ void __futex_queue(struct futex_q *q, struct futex_hash_bucket *hb)
 	prio = min(current->normal_prio, MAX_RT_PRIO);
 
 	plist_node_init(&q->list, prio);
-	plist_add(&q->list, &hb->chain);
+	trace_android_vh_alter_futex_plist_add(&q->list, &hb->chain, &already_on_hb);
+	if (!already_on_hb)
+		plist_add(&q->list, &hb->chain);
 	q->task = current;
 }
 
diff --git a/kernel/futex/syscalls.c b/kernel/futex/syscalls.c
index a807407..e497013 100644
--- a/kernel/futex/syscalls.c
+++ b/kernel/futex/syscalls.c
@@ -5,6 +5,7 @@
 #include <linux/time_namespace.h>
 
 #include "futex.h"
+#include <trace/hooks/futex.h>
 
 /*
  * Support for robust futexes: the kernel cleans up held futexes at
@@ -98,6 +99,7 @@ long do_futex(u32 __user *uaddr, int op, u32 val, ktime_t *timeout,
 			return -ENOSYS;
 	}
 
+	trace_android_vh_do_futex(cmd, &flags, uaddr2);
 	switch (cmd) {
 	case FUTEX_WAIT:
 		val3 = FUTEX_BITSET_MATCH_ANY;
diff --git a/kernel/futex/waitwake.c b/kernel/futex/waitwake.c
index ba01b94..99b894d 100644
--- a/kernel/futex/waitwake.c
+++ b/kernel/futex/waitwake.c
@@ -5,6 +5,7 @@
 #include <linux/freezer.h>
 
 #include "futex.h"
+#include <trace/hooks/futex.h>
 
 /*
  * READ this before attempting to hack on futexes!
@@ -146,6 +147,7 @@ int futex_wake(u32 __user *uaddr, unsigned int flags, int nr_wake, u32 bitset)
 	struct futex_q *this, *next;
 	union futex_key key = FUTEX_KEY_INIT;
 	int ret;
+	int target_nr;
 	DEFINE_WAKE_Q(wake_q);
 
 	if (!bitset)
@@ -163,6 +165,7 @@ int futex_wake(u32 __user *uaddr, unsigned int flags, int nr_wake, u32 bitset)
 
 	spin_lock(&hb->lock);
 
+	trace_android_vh_futex_wake_traverse_plist(&hb->chain, &target_nr, key, bitset);
 	plist_for_each_entry_safe(this, next, &hb->chain, list) {
 		if (futex_match (&this->key, &key)) {
 			if (this->pi_state || this->rt_waiter) {
@@ -174,6 +177,7 @@ int futex_wake(u32 __user *uaddr, unsigned int flags, int nr_wake, u32 bitset)
 			if (!(this->bitset & bitset))
 				continue;
 
+			trace_android_vh_futex_wake_this(ret, nr_wake, target_nr, this->task);
 			futex_wake_mark(&wake_q, this);
 			if (++ret >= nr_wake)
 				break;
@@ -182,6 +186,7 @@ int futex_wake(u32 __user *uaddr, unsigned int flags, int nr_wake, u32 bitset)
 
 	spin_unlock(&hb->lock);
 	wake_up_q(&wake_q);
+	trace_android_vh_futex_wake_up_q_finish(nr_wake, target_nr);
 	return ret;
 }
 
@@ -351,8 +356,10 @@ void futex_wait_queue(struct futex_hash_bucket *hb, struct futex_q *q,
 		 * flagged for rescheduling. Only call schedule if there
 		 * is no timeout, or if it has yet to expire.
 		 */
-		if (!timeout || timeout->task)
+		if (!timeout || timeout->task) {
+			trace_android_vh_futex_sleep_start(current);
 			schedule();
+		}
 	}
 	__set_current_state(TASK_RUNNING);
 }
@@ -640,6 +647,7 @@ int futex_wait(u32 __user *uaddr, unsigned int flags, u32 val, ktime_t *abs_time
 	if (!bitset)
 		return -EINVAL;
 	q.bitset = bitset;
+	trace_android_vh_futex_wait_start(flags, bitset);
 
 	to = futex_setup_timer(abs_time, &timeout, flags,
 			       current->timer_slack_ns);
@@ -688,6 +696,7 @@ int futex_wait(u32 __user *uaddr, unsigned int flags, u32 val, ktime_t *abs_time
 		hrtimer_cancel(&to->timer);
 		destroy_hrtimer_on_stack(&to->timer);
 	}
+	trace_android_vh_futex_wait_end(flags, bitset);
 	return ret;
 }
 
diff --git a/kernel/hung_task.c b/kernel/hung_task.c
index c71889f..6766fd4 100644
--- a/kernel/hung_task.c
+++ b/kernel/hung_task.c
@@ -24,6 +24,8 @@
 #include <linux/sched/sysctl.h>
 
 #include <trace/events/sched.h>
+#undef CREATE_TRACE_POINTS
+#include <trace/hooks/hung_task.h>
 
 /*
  * The number of tasks checked:
@@ -180,6 +182,7 @@ static void check_hung_uninterruptible_tasks(unsigned long timeout)
 	int max_count = sysctl_hung_task_check_count;
 	unsigned long last_break = jiffies;
 	struct task_struct *g, *t;
+	bool need_check = true;
 
 	/*
 	 * If the system crashed already then all bets are off,
@@ -204,12 +207,16 @@ static void check_hung_uninterruptible_tasks(unsigned long timeout)
 		 * skip the TASK_KILLABLE tasks -- these can be killed
 		 * skip the TASK_IDLE tasks -- those are genuinely idle
 		 */
-		state = READ_ONCE(t->__state);
-		if ((state & TASK_UNINTERRUPTIBLE) &&
-		    !(state & TASK_WAKEKILL) &&
-		    !(state & TASK_NOLOAD))
-			check_hung_task(t, timeout);
+		trace_android_vh_check_uninterrupt_tasks(t, timeout, &need_check);
+		if (need_check) {
+			state = READ_ONCE(t->__state);
+			if ((state & TASK_UNINTERRUPTIBLE) &&
+			    !(state & TASK_WAKEKILL) &&
+			    !(state & TASK_NOLOAD))
+				check_hung_task(t, timeout);
+		}
 	}
+	trace_android_vh_check_uninterrupt_tasks_done(NULL);
  unlock:
 	rcu_read_unlock();
 	if (hung_task_show_lock)
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c
index 8ac37e8..4ca134b9 100644
--- a/kernel/irq/chip.c
+++ b/kernel/irq/chip.c
@@ -14,6 +14,7 @@
 #include <linux/interrupt.h>
 #include <linux/kernel_stat.h>
 #include <linux/irqdomain.h>
+#include <linux/wakeup_reason.h>
 
 #include <trace/events/irq.h>
 
@@ -509,8 +510,22 @@ static bool irq_may_run(struct irq_desc *desc)
 	 * If the interrupt is not in progress and is not an armed
 	 * wakeup interrupt, proceed.
 	 */
-	if (!irqd_has_set(&desc->irq_data, mask))
+	if (!irqd_has_set(&desc->irq_data, mask)) {
+#ifdef CONFIG_PM_SLEEP
+		if (unlikely(desc->no_suspend_depth &&
+			     irqd_is_wakeup_set(&desc->irq_data))) {
+			unsigned int irq = irq_desc_get_irq(desc);
+			const char *name = "(unnamed)";
+
+			if (desc->action && desc->action->name)
+				name = desc->action->name;
+
+			log_abnormal_wakeup_reason("misconfigured IRQ %u %s",
+						   irq, name);
+		}
+#endif
 		return true;
+	}
 
 	/*
 	 * If the interrupt is an armed wakeup source, mark it pending
diff --git a/kernel/irq/irqdesc.c b/kernel/irq/irqdesc.c
index fd09962..53b6358 100644
--- a/kernel/irq/irqdesc.c
+++ b/kernel/irq/irqdesc.c
@@ -355,9 +355,7 @@ struct irq_desc *irq_to_desc(unsigned int irq)
 {
 	return radix_tree_lookup(&irq_desc_tree, irq);
 }
-#ifdef CONFIG_KVM_BOOK3S_64_HV_MODULE
 EXPORT_SYMBOL_GPL(irq_to_desc);
-#endif
 
 static void delete_irq_desc(unsigned int irq)
 {
@@ -936,6 +934,7 @@ unsigned int kstat_irqs_cpu(unsigned int irq, int cpu)
 	return desc && desc->kstat_irqs ?
 			*per_cpu_ptr(desc->kstat_irqs, cpu) : 0;
 }
+EXPORT_SYMBOL_GPL(kstat_irqs_cpu);
 
 static bool irq_is_nmi(struct irq_desc *desc)
 {
@@ -993,3 +992,4 @@ void __irq_set_lockdep_class(unsigned int irq, struct lock_class_key *lock_class
 }
 EXPORT_SYMBOL_GPL(__irq_set_lockdep_class);
 #endif
+EXPORT_SYMBOL_GPL(kstat_irqs_usr);
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
index 40fe780..7103e89a 100644
--- a/kernel/irq/manage.c
+++ b/kernel/irq/manage.c
@@ -286,6 +286,7 @@ int irq_do_set_affinity(struct irq_data *data, const struct cpumask *mask,
 
 	return ret;
 }
+EXPORT_SYMBOL_GPL(irq_do_set_affinity);
 
 #ifdef CONFIG_GENERIC_PENDING_IRQ
 static inline int irq_set_affinity_pending(struct irq_data *data,
diff --git a/kernel/irq_work.c b/kernel/irq_work.c
index 7afa40f..fa98e18 100644
--- a/kernel/irq_work.c
+++ b/kernel/irq_work.c
@@ -170,6 +170,7 @@ bool irq_work_queue_on(struct irq_work *work, int cpu)
 	return true;
 #endif /* CONFIG_SMP */
 }
+EXPORT_SYMBOL_GPL(irq_work_queue_on);
 
 bool irq_work_needs_cpu(void)
 {
diff --git a/kernel/kcov.c b/kernel/kcov.c
index e5cd09f..84c7173 100644
--- a/kernel/kcov.c
+++ b/kernel/kcov.c
@@ -489,7 +489,7 @@ static int kcov_mmap(struct file *filep, struct vm_area_struct *vma)
 		goto exit;
 	}
 	spin_unlock_irqrestore(&kcov->lock, flags);
-	vma->vm_flags |= VM_DONTEXPAND;
+	vm_flags_set(vma, VM_DONTEXPAND);
 	for (off = 0; off < size; off += PAGE_SIZE) {
 		page = vmalloc_to_page(kcov->area + off);
 		res = vm_insert_page(vma, vma->vm_start + off, page);
diff --git a/kernel/kthread.c b/kernel/kthread.c
index f97fd01..2610210 100644
--- a/kernel/kthread.c
+++ b/kernel/kthread.c
@@ -541,6 +541,7 @@ void kthread_bind_mask(struct task_struct *p, const struct cpumask *mask)
 {
 	__kthread_bind_mask(p, mask, TASK_UNINTERRUPTIBLE);
 }
+EXPORT_SYMBOL_GPL(kthread_bind_mask);
 
 /**
  * kthread_bind - bind a just-created kthread to a cpu.
diff --git a/kernel/locking/mutex.c b/kernel/locking/mutex.c
index d973fe6..4ff70da 100644
--- a/kernel/locking/mutex.c
+++ b/kernel/locking/mutex.c
@@ -33,6 +33,9 @@
 #define CREATE_TRACE_POINTS
 #include <trace/events/lock.h>
 
+#undef CREATE_TRACE_POINTS
+#include <trace/hooks/dtask.h>
+
 #ifndef CONFIG_PREEMPT_RT
 #include "mutex.h"
 
@@ -52,6 +55,7 @@ __mutex_init(struct mutex *lock, const char *name, struct lock_class_key *key)
 	osq_lock_init(&lock->osq);
 #endif
 
+	trace_android_vh_mutex_init(lock);
 	debug_mutex_init(lock, name, key);
 }
 EXPORT_SYMBOL(__mutex_init);
@@ -168,8 +172,10 @@ static __always_inline bool __mutex_trylock_fast(struct mutex *lock)
 	unsigned long curr = (unsigned long)current;
 	unsigned long zero = 0UL;
 
-	if (atomic_long_try_cmpxchg_acquire(&lock->owner, &zero, curr))
+	if (atomic_long_try_cmpxchg_acquire(&lock->owner, &zero, curr)) {
+		trace_android_vh_record_mutex_lock_starttime(current, jiffies);
 		return true;
+	}
 
 	return false;
 }
@@ -205,9 +211,12 @@ static void
 __mutex_add_waiter(struct mutex *lock, struct mutex_waiter *waiter,
 		   struct list_head *list)
 {
+	bool already_on_list = false;
 	debug_mutex_add_waiter(lock, waiter, current);
 
-	list_add_tail(&waiter->list, list);
+	trace_android_vh_alter_mutex_list_add(lock, waiter, list, &already_on_list);
+	if (!already_on_list)
+		list_add_tail(&waiter->list, list);
 	if (__mutex_waiter_is_first(lock, waiter))
 		__mutex_set_flag(lock, MUTEX_FLAG_WAITERS);
 }
@@ -353,10 +362,17 @@ bool mutex_spin_on_owner(struct mutex *lock, struct task_struct *owner,
 			 struct ww_acquire_ctx *ww_ctx, struct mutex_waiter *waiter)
 {
 	bool ret = true;
+	int cnt = 0;
+	bool time_out = false;
 
 	lockdep_assert_preemption_disabled();
 
 	while (__mutex_owner(lock) == owner) {
+		trace_android_vh_mutex_opt_spin_start(lock, &time_out, &cnt);
+		if (time_out) {
+			ret = false;
+			break;
+		}
 		/*
 		 * Ensure we emit the owner->on_cpu, dereference _after_
 		 * checking lock->owner still matches owner. And we already
@@ -407,6 +423,7 @@ static inline int mutex_can_spin_on_owner(struct mutex *lock)
 	owner = __mutex_owner(lock);
 	if (owner)
 		retval = owner_on_cpu(owner);
+	trace_android_vh_mutex_can_spin_on_owner(lock, &retval);
 
 	/*
 	 * If lock->owner is not set, the mutex has been released. Return true
@@ -488,6 +505,7 @@ mutex_optimistic_spin(struct mutex *lock, struct ww_acquire_ctx *ww_ctx,
 	if (!waiter)
 		osq_unlock(&lock->osq);
 
+	trace_android_vh_mutex_opt_spin_finish(lock, true);
 	return true;
 
 
@@ -496,6 +514,7 @@ mutex_optimistic_spin(struct mutex *lock, struct ww_acquire_ctx *ww_ctx,
 		osq_unlock(&lock->osq);
 
 fail:
+	trace_android_vh_mutex_opt_spin_finish(lock, false);
 	/*
 	 * If we fell out of the spin path because of need_resched(),
 	 * reschedule now, before we try-lock the mutex. This avoids getting
@@ -541,6 +560,7 @@ void __sched mutex_unlock(struct mutex *lock)
 		return;
 #endif
 	__mutex_unlock_slowpath(lock, _RET_IP_);
+	trace_android_vh_record_mutex_lock_starttime(current, 0);
 }
 EXPORT_SYMBOL(mutex_unlock);
 
@@ -610,6 +630,7 @@ __mutex_lock_common(struct mutex *lock, unsigned int state, unsigned int subclas
 		if (ww_ctx)
 			ww_mutex_set_context_fastpath(ww, ww_ctx);
 		trace_contention_end(lock, 0);
+		trace_android_vh_record_mutex_lock_starttime(current, jiffies);
 		preempt_enable();
 		return 0;
 	}
@@ -645,6 +666,7 @@ __mutex_lock_common(struct mutex *lock, unsigned int state, unsigned int subclas
 			goto err_early_kill;
 	}
 
+	trace_android_vh_mutex_wait_start(lock);
 	set_current_state(state);
 	trace_contention_begin(lock, LCB_F_MUTEX);
 	for (;;) {
@@ -701,6 +723,7 @@ __mutex_lock_common(struct mutex *lock, unsigned int state, unsigned int subclas
 	raw_spin_lock(&lock->wait_lock);
 acquired:
 	__set_current_state(TASK_RUNNING);
+	trace_android_vh_mutex_wait_finish(lock);
 
 	if (ww_ctx) {
 		/*
@@ -726,10 +749,12 @@ __mutex_lock_common(struct mutex *lock, unsigned int state, unsigned int subclas
 
 	raw_spin_unlock(&lock->wait_lock);
 	preempt_enable();
+	trace_android_vh_record_mutex_lock_starttime(current, jiffies);
 	return 0;
 
 err:
 	__set_current_state(TASK_RUNNING);
+	trace_android_vh_mutex_wait_finish(lock);
 	__mutex_remove_waiter(lock, &waiter);
 err_early_kill:
 	trace_contention_end(lock, ret);
@@ -946,6 +971,7 @@ static noinline void __sched __mutex_unlock_slowpath(struct mutex *lock, unsigne
 	if (owner & MUTEX_FLAG_HANDOFF)
 		__mutex_handoff(lock, next);
 
+	trace_android_vh_mutex_unlock_slowpath(lock);
 	raw_spin_unlock(&lock->wait_lock);
 
 	wake_up_q(&wake_q);
@@ -1085,8 +1111,10 @@ int __sched mutex_trylock(struct mutex *lock)
 	MUTEX_WARN_ON(lock->magic != lock);
 
 	locked = __mutex_trylock(lock);
-	if (locked)
+	if (locked) {
+		trace_android_vh_record_mutex_lock_starttime(current, jiffies);
 		mutex_acquire(&lock->dep_map, 0, 1, _RET_IP_);
+	}
 
 	return locked;
 }
diff --git a/kernel/locking/percpu-rwsem.c b/kernel/locking/percpu-rwsem.c
index 185bd1c..084aedd 100644
--- a/kernel/locking/percpu-rwsem.c
+++ b/kernel/locking/percpu-rwsem.c
@@ -11,6 +11,21 @@
 #include <linux/errno.h>
 #include <trace/events/lock.h>
 
+#include <trace/hooks/dtask.h>
+
+/*
+ * trace_android_vh_record_pcpu_rwsem_starttime  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_starttime for percpu-rwsem.h to call.
+ */
+void _trace_android_vh_record_pcpu_rwsem_starttime(struct task_struct *tsk,
+		unsigned long settime)
+{
+	trace_android_vh_record_pcpu_rwsem_starttime(tsk, settime);
+}
+EXPORT_SYMBOL_GPL(_trace_android_vh_record_pcpu_rwsem_starttime);
+
 int __percpu_init_rwsem(struct percpu_rw_semaphore *sem,
 			const char *name, struct lock_class_key *key)
 {
@@ -248,6 +263,7 @@ void __sched percpu_down_write(struct percpu_rw_semaphore *sem)
 	/* Wait for all active readers to complete. */
 	rcuwait_wait_event(&sem->writer, readers_active_check(sem), TASK_UNINTERRUPTIBLE);
 	trace_contention_end(sem, 0);
+	trace_android_vh_record_pcpu_rwsem_starttime(current, jiffies);
 }
 EXPORT_SYMBOL_GPL(percpu_down_write);
 
@@ -278,5 +294,6 @@ 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_starttime(current, 0);
 }
 EXPORT_SYMBOL_GPL(percpu_up_write);
diff --git a/kernel/locking/rtmutex.c b/kernel/locking/rtmutex.c
index 728f434..229ce6b 100644
--- a/kernel/locking/rtmutex.c
+++ b/kernel/locking/rtmutex.c
@@ -25,6 +25,7 @@
 #include <linux/ww_mutex.h>
 
 #include <trace/events/lock.h>
+#include <trace/hooks/dtask.h>
 
 #include "rtmutex_common.h"
 
@@ -1528,6 +1529,7 @@ static int __sched rt_mutex_slowlock_block(struct rt_mutex_base *lock,
 	struct task_struct *owner;
 	int ret = 0;
 
+	trace_android_vh_rtmutex_wait_start(lock);
 	for (;;) {
 		/* Try to acquire the lock: */
 		if (try_to_take_rt_mutex(lock, current, waiter))
@@ -1561,6 +1563,7 @@ static int __sched rt_mutex_slowlock_block(struct rt_mutex_base *lock,
 		set_current_state(state);
 	}
 
+	trace_android_vh_rtmutex_wait_finish(lock);
 	__set_current_state(TASK_RUNNING);
 	return ret;
 }
diff --git a/kernel/locking/rtmutex_api.c b/kernel/locking/rtmutex_api.c
index cb9fdff..ea1caa8 100644
--- a/kernel/locking/rtmutex_api.c
+++ b/kernel/locking/rtmutex_api.c
@@ -31,6 +31,8 @@ static __always_inline int __rt_mutex_lock_common(struct rt_mutex *lock,
 	ret = __rt_mutex_lock(&lock->rtmutex, state);
 	if (ret)
 		mutex_release(&lock->dep_map, _RET_IP_);
+	else
+		trace_android_vh_record_rtmutex_lock_starttime(current, jiffies);
 	return ret;
 }
 
@@ -123,8 +125,10 @@ int __sched rt_mutex_trylock(struct rt_mutex *lock)
 		return 0;
 
 	ret = __rt_mutex_trylock(&lock->rtmutex);
-	if (ret)
+	if (ret) {
+		trace_android_vh_record_rtmutex_lock_starttime(current, jiffies);
 		mutex_acquire(&lock->dep_map, 0, 1, _RET_IP_);
+	}
 
 	return ret;
 }
@@ -137,6 +141,7 @@ EXPORT_SYMBOL_GPL(rt_mutex_trylock);
  */
 void __sched rt_mutex_unlock(struct rt_mutex *lock)
 {
+	trace_android_vh_record_rtmutex_lock_starttime(current, 0);
 	mutex_release(&lock->dep_map, _RET_IP_);
 	__rt_mutex_unlock(&lock->rtmutex);
 }
diff --git a/kernel/locking/rwsem.c b/kernel/locking/rwsem.c
index 92d8e2c..1988ac0 100644
--- a/kernel/locking/rwsem.c
+++ b/kernel/locking/rwsem.c
@@ -31,6 +31,8 @@
 
 #ifndef CONFIG_PREEMPT_RT
 #include "lock_events.h"
+#include <trace/hooks/dtask.h>
+#include <trace/hooks/rwsem.h>
 
 /*
  * The least significant 2 bits of the owner value has the following
@@ -247,6 +249,7 @@ static inline bool rwsem_read_trylock(struct rw_semaphore *sem, long *cntp)
 
 	if (!(*cntp & RWSEM_READ_FAILED_MASK)) {
 		rwsem_set_reader_owned(sem);
+		trace_android_vh_record_rwsem_lock_starttime(current, jiffies);
 		return true;
 	}
 
@@ -260,6 +263,7 @@ static inline bool rwsem_write_trylock(struct rw_semaphore *sem)
 
 	preempt_disable();
 	if (atomic_long_try_cmpxchg_acquire(&sem->count, &tmp, RWSEM_WRITER_LOCKED)) {
+		trace_android_vh_record_rwsem_lock_starttime(current, jiffies);
 		rwsem_set_owner(sem);
 		ret = true;
 	}
@@ -330,6 +334,7 @@ void __init_rwsem(struct rw_semaphore *sem, const char *name,
 #ifdef CONFIG_RWSEM_SPIN_ON_OWNER
 	osq_lock_init(&sem->osq);
 #endif
+	trace_android_vh_rwsem_init(sem);
 }
 EXPORT_SYMBOL(__init_rwsem);
 
@@ -729,6 +734,7 @@ static inline bool rwsem_can_spin_on_owner(struct rw_semaphore *sem)
 	    (owner && !(flags & RWSEM_READER_OWNED) && !owner_on_cpu(owner)))
 		ret = false;
 	preempt_enable();
+	trace_android_vh_rwsem_can_spin_on_owner(sem, &ret);
 
 	lockevent_cond_inc(rwsem_opt_fail, !ret);
 	return ret;
@@ -754,6 +760,8 @@ rwsem_spin_on_owner(struct rw_semaphore *sem)
 	struct task_struct *new, *owner;
 	unsigned long flags, new_flags;
 	enum owner_state state;
+	int cnt = 0;
+	bool time_out = false;
 
 	lockdep_assert_preemption_disabled();
 
@@ -763,6 +771,9 @@ rwsem_spin_on_owner(struct rw_semaphore *sem)
 		return state;
 
 	for (;;) {
+		trace_android_vh_rwsem_opt_spin_start(sem, &time_out, &cnt, true);
+		if (time_out)
+			break;
 		/*
 		 * When a waiting writer set the handoff flag, it may spin
 		 * on the owner as well. Once that writer acquires the lock,
@@ -827,6 +838,8 @@ static bool rwsem_optimistic_spin(struct rw_semaphore *sem)
 	int prev_owner_state = OWNER_NULL;
 	int loop = 0;
 	u64 rspin_threshold = 0;
+	int cnt = 0;
+	bool time_out = false;
 
 	preempt_disable();
 
@@ -843,6 +856,9 @@ static bool rwsem_optimistic_spin(struct rw_semaphore *sem)
 	for (;;) {
 		enum owner_state owner_state;
 
+		trace_android_vh_rwsem_opt_spin_start(sem, &time_out, &cnt, false);
+		if (time_out)
+			break;
 		owner_state = rwsem_spin_on_owner(sem);
 		if (!(owner_state & OWNER_SPINNABLE))
 			break;
@@ -936,6 +952,7 @@ static bool rwsem_optimistic_spin(struct rw_semaphore *sem)
 		cpu_relax();
 	}
 	osq_unlock(&sem->osq);
+	trace_android_vh_rwsem_opt_spin_finish(sem, taken);
 done:
 	preempt_enable();
 	lockevent_cond_inc(rwsem_opt_fail, !taken);
@@ -1007,6 +1024,7 @@ rwsem_down_read_slowpath(struct rw_semaphore *sem, long count, unsigned int stat
 	long rcnt = (count >> RWSEM_READER_SHIFT);
 	struct rwsem_waiter waiter;
 	DEFINE_WAKE_Q(wake_q);
+	bool already_on_list = false;
 
 	/*
 	 * To prevent a constant stream of readers from starving a sleeping
@@ -1036,6 +1054,7 @@ rwsem_down_read_slowpath(struct rw_semaphore *sem, long count, unsigned int stat
 			raw_spin_unlock_irq(&sem->wait_lock);
 			wake_up_q(&wake_q);
 		}
+		trace_android_vh_record_rwsem_lock_starttime(current, jiffies);
 		return sem;
 	}
 
@@ -1063,12 +1082,17 @@ rwsem_down_read_slowpath(struct rw_semaphore *sem, long count, unsigned int stat
 		}
 		adjustment += RWSEM_FLAG_WAITERS;
 	}
-	rwsem_add_waiter(sem, &waiter);
+	trace_android_vh_alter_rwsem_list_add(
+					&waiter,
+					sem, &already_on_list);
+	if (!already_on_list)
+		rwsem_add_waiter(sem, &waiter);
 
 	/* we're now waiting on the lock, but no longer actively locking */
 	count = atomic_long_add_return(adjustment, &sem->count);
 
 	rwsem_cond_wake_waiter(sem, count, &wake_q);
+	trace_android_vh_rwsem_wake(sem);
 	raw_spin_unlock_irq(&sem->wait_lock);
 
 	if (!wake_q_empty(&wake_q))
@@ -1077,6 +1101,7 @@ rwsem_down_read_slowpath(struct rw_semaphore *sem, long count, unsigned int stat
 	trace_contention_begin(sem, LCB_F_READ);
 
 	/* wait to be given the lock */
+	trace_android_vh_rwsem_read_wait_start(sem);
 	for (;;) {
 		set_current_state(state);
 		if (!smp_load_acquire(&waiter.task)) {
@@ -1096,13 +1121,16 @@ rwsem_down_read_slowpath(struct rw_semaphore *sem, long count, unsigned int stat
 	}
 
 	__set_current_state(TASK_RUNNING);
+	trace_android_vh_rwsem_read_wait_finish(sem);
 	lockevent_inc(rwsem_rlock);
 	trace_contention_end(sem, 0);
+	trace_android_vh_record_rwsem_lock_starttime(current, jiffies);
 	return sem;
 
 out_nolock:
 	rwsem_del_wake_waiter(sem, &waiter, &wake_q);
 	__set_current_state(TASK_RUNNING);
+	trace_android_vh_rwsem_read_wait_finish(sem);
 	lockevent_inc(rwsem_rlock_fail);
 	trace_contention_end(sem, -EINTR);
 	return ERR_PTR(-EINTR);
@@ -1116,10 +1144,12 @@ rwsem_down_write_slowpath(struct rw_semaphore *sem, int state)
 {
 	struct rwsem_waiter waiter;
 	DEFINE_WAKE_Q(wake_q);
+	bool already_on_list = false;
 
 	/* do optimistic spinning and steal lock if possible */
 	if (rwsem_can_spin_on_owner(sem) && rwsem_optimistic_spin(sem)) {
 		/* rwsem_optimistic_spin() implies ACQUIRE on success */
+		trace_android_vh_record_rwsem_lock_starttime(current, jiffies);
 		return sem;
 	}
 
@@ -1133,7 +1163,11 @@ rwsem_down_write_slowpath(struct rw_semaphore *sem, int state)
 	waiter.handoff_set = false;
 
 	raw_spin_lock_irq(&sem->wait_lock);
-	rwsem_add_waiter(sem, &waiter);
+	trace_android_vh_alter_rwsem_list_add(
+					&waiter,
+					sem, &already_on_list);
+	if (!already_on_list)
+		rwsem_add_waiter(sem, &waiter);
 
 	/* we're now waiting on the lock */
 	if (rwsem_first_waiter(sem) != &waiter) {
@@ -1152,7 +1186,9 @@ rwsem_down_write_slowpath(struct rw_semaphore *sem, int state)
 		atomic_long_or(RWSEM_FLAG_WAITERS, &sem->count);
 	}
 
+	trace_android_vh_rwsem_wake(sem);
 	/* wait until we successfully acquire the lock */
+	trace_android_vh_rwsem_write_wait_start(sem);
 	set_current_state(state);
 	trace_contention_begin(sem, LCB_F_WRITE);
 
@@ -1193,13 +1229,16 @@ rwsem_down_write_slowpath(struct rw_semaphore *sem, int state)
 		raw_spin_lock_irq(&sem->wait_lock);
 	}
 	__set_current_state(TASK_RUNNING);
+	trace_android_vh_rwsem_write_wait_finish(sem);
 	raw_spin_unlock_irq(&sem->wait_lock);
 	lockevent_inc(rwsem_wlock);
 	trace_contention_end(sem, 0);
+	trace_android_vh_record_rwsem_lock_starttime(current, jiffies);
 	return sem;
 
 out_nolock:
 	__set_current_state(TASK_RUNNING);
+	trace_android_vh_rwsem_write_wait_finish(sem);
 	raw_spin_lock_irq(&sem->wait_lock);
 	rwsem_del_wake_waiter(sem, &waiter, &wake_q);
 	lockevent_inc(rwsem_wlock_fail);
@@ -1220,6 +1259,7 @@ static struct rw_semaphore *rwsem_wake(struct rw_semaphore *sem)
 
 	if (!list_empty(&sem->wait_list))
 		rwsem_mark_wake(sem, RWSEM_WAKE_ANY, &wake_q);
+	trace_android_vh_rwsem_wake_finish(sem);
 
 	raw_spin_unlock_irqrestore(&sem->wait_lock, flags);
 	wake_up_q(&wake_q);
@@ -1298,6 +1338,7 @@ static inline int __down_read_trylock(struct rw_semaphore *sem)
 						    tmp + RWSEM_READER_BIAS)) {
 			rwsem_set_reader_owned(sem);
 			ret = 1;
+			trace_android_vh_record_rwsem_lock_starttime(current, jiffies);
 			break;
 		}
 	}
@@ -1353,6 +1394,7 @@ static inline void __up_read(struct rw_semaphore *sem)
 		clear_nonspinnable(sem);
 		rwsem_wake(sem);
 	}
+	trace_android_vh_record_rwsem_lock_starttime(current, 0);
 	preempt_enable();
 }
 
@@ -1377,6 +1419,7 @@ static inline void __up_write(struct rw_semaphore *sem)
 	preempt_enable();
 	if (unlikely(tmp & RWSEM_FLAG_WAITERS))
 		rwsem_wake(sem);
+	trace_android_vh_record_rwsem_lock_starttime(current, 0);
 }
 
 /*
@@ -1623,6 +1666,7 @@ EXPORT_SYMBOL(up_read);
 void up_write(struct rw_semaphore *sem)
 {
 	rwsem_release(&sem->dep_map, _RET_IP_);
+	trace_android_vh_rwsem_write_finished(sem);
 	__up_write(sem);
 }
 EXPORT_SYMBOL(up_write);
@@ -1633,6 +1677,7 @@ EXPORT_SYMBOL(up_write);
 void downgrade_write(struct rw_semaphore *sem)
 {
 	lock_downgrade(&sem->dep_map, _RET_IP_);
+	trace_android_vh_rwsem_write_finished(sem);
 	__downgrade_write(sem);
 }
 EXPORT_SYMBOL(downgrade_write);
diff --git a/kernel/module/Kconfig b/kernel/module/Kconfig
index 26ea5d0..6b5c117 100644
--- a/kernel/module/Kconfig
+++ b/kernel/module/Kconfig
@@ -88,6 +88,20 @@
 	  the version).  With this option, such a "srcversion" field
 	  will be created for all modules.  If unsure, say N.
 
+config MODULE_SCMVERSION
+	bool "SCM version for modules"
+	depends on LOCALVERSION_AUTO
+	help
+	  This enables the module attribute "scmversion" which can be used
+	  by developers to identify the SCM version of a given module, e.g.
+	  git sha1 or hg sha1. The SCM version can be queried by modinfo or
+	  via the sysfs node: /sys/modules/MODULENAME/scmversion. This is
+	  useful when the kernel or kernel modules are updated separately
+	  since that causes the vermagic of the kernel and the module to
+	  differ.
+
+	  If unsure, say N.
+
 config MODULE_SIG
 	bool "Module signature verification"
 	select MODULE_SIG_FORMAT
@@ -117,6 +131,19 @@
 	  Reject unsigned modules or signed modules for which we don't have a
 	  key.  Without this, such modules will simply taint the kernel.
 
+config MODULE_SIG_PROTECT
+	bool "Android GKI module protection"
+	depends on MODULE_SIG && !MODULE_SIG_FORCE
+	help
+	  Enables Android GKI symbol and export protection support.
+
+	  This modifies the behavior of the MODULE_SIG_FORCE as follows:
+	  - Allows Android GKI Modules signed using MODULE_SIG_ALL during build.
+	  - Allows other modules to load if they don't violate the access to
+	    Android GKI protected symbols and do not export the symbols already
+	    exported by the Android GKI modules. Loading will fail and return
+	    -EACCES (Permission denied) if symbol access conditions are not met.
+
 config MODULE_SIG_ALL
 	bool "Automatically sign all modules"
 	default y
diff --git a/kernel/module/Makefile b/kernel/module/Makefile
index 948efea..a23e93c 100644
--- a/kernel/module/Makefile
+++ b/kernel/module/Makefile
@@ -10,6 +10,7 @@
 obj-y += main.o strict_rwx.o
 obj-$(CONFIG_MODULE_DECOMPRESS) += decompress.o
 obj-$(CONFIG_MODULE_SIG) += signing.o
+obj-$(CONFIG_MODULE_SIG_PROTECT) += gki_module.o
 obj-$(CONFIG_LIVEPATCH) += livepatch.o
 obj-$(CONFIG_MODULES_TREE_LOOKUP) += tree_lookup.o
 obj-$(CONFIG_DEBUG_KMEMLEAK) += debug_kmemleak.o
@@ -19,3 +20,36 @@
 obj-$(CONFIG_KGDB_KDB) += kdb.o
 obj-$(CONFIG_MODVERSIONS) += version.o
 obj-$(CONFIG_MODULE_UNLOAD_TAINT_TRACKING) += tracking.o
+
+#
+# ANDROID: GKI: Generate headerfiles required for gki_module.o
+#
+# Dependencies on generated files need to be listed explicitly
+$(obj)/gki_module.o: $(obj)/gki_module_protected_exports.h \
+			$(obj)/gki_module_unprotected.h
+
+ALL_KMI_SYMBOLS := all_kmi_symbols
+
+$(obj)/gki_module_unprotected.h: $(ALL_KMI_SYMBOLS) \
+				$(srctree)/scripts/gen_gki_modules_headers.sh
+	$(Q)$(CONFIG_SHELL) $(srctree)/scripts/gen_gki_modules_headers.sh $@ \
+	"$(srctree)" \
+	$(ALL_KMI_SYMBOLS)
+
+# Generate symbol list with union of all symbol list for arm64; empty for others
+$(ALL_KMI_SYMBOLS): $(if $(filter arm64,$(ARCH)),$(wildcard $(srctree)/android/abi_gki_aarch64_*),)
+	$(if $(strip $^),cat $^ > $(ALL_KMI_SYMBOLS), echo "" > $(ALL_KMI_SYMBOLS))
+
+# ABI protected exports list file specific to ARCH if exists else empty
+ABI_PROTECTED_EXPORTS_FILE :=
+ifeq ($(ARCH),arm64)
+	ABI_PROTECTED_EXPORTS_FILE := $(wildcard $(srctree)/android/abi_gki_protected_exports_aarch64)
+else
+	ABI_PROTECTED_EXPORTS_FILE := $(wildcard $(srctree)/android/abi_gki_protected_exports_$(ARCH))
+endif
+
+$(obj)/gki_module_protected_exports.h: $(ABI_PROTECTED_EXPORTS_FILE) \
+				$(srctree)/scripts/gen_gki_modules_headers.sh
+	$(Q)$(CONFIG_SHELL) $(srctree)/scripts/gen_gki_modules_headers.sh $@ \
+	"$(srctree)" \
+	$(ABI_PROTECTED_EXPORTS_FILE)
diff --git a/kernel/module/gki_module.c b/kernel/module/gki_module.c
new file mode 100644
index 0000000..4f124f9
--- /dev/null
+++ b/kernel/module/gki_module.c
@@ -0,0 +1,68 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright 2022 Google LLC
+ * Author: ramjiyani@google.com (Ramji Jiyani)
+ */
+
+#include <linux/bsearch.h>
+#include <linux/errno.h>
+#include <linux/kernel.h>
+#include <linux/printk.h>
+#include <linux/string.h>
+
+/*
+ * Build time generated header files
+ *
+ * gki_module_protected_exports.h -- Symbols protected from _export_ by unsigned modules
+ * gki_module_unprotected.h -- Symbols allowed to _access_ by unsigned modules
+ */
+#include "gki_module_protected_exports.h"
+#include "gki_module_unprotected.h"
+
+#define MAX_STRCMP_LEN (max(MAX_UNPROTECTED_NAME_LEN, MAX_PROTECTED_EXPORTS_NAME_LEN))
+
+/* bsearch() comparision callback */
+static int cmp_name(const void *sym, const void *protected_sym)
+{
+	return strncmp(sym, protected_sym, MAX_STRCMP_LEN);
+}
+
+/**
+ * gki_is_module_protected_export - Is a symbol exported from a protected GKI module?
+ *
+ * @name:	Symbol being checked against exported symbols from protected GKI modules
+ */
+bool gki_is_module_protected_export(const char *name)
+{
+	if (NR_UNPROTECTED_SYMBOLS) {
+		return bsearch(name, gki_protected_exports_symbols, NR_PROTECTED_EXPORTS_SYMBOLS,
+		       MAX_PROTECTED_EXPORTS_NAME_LEN, cmp_name) != NULL;
+	} else {
+		/*
+		 * If there are no symbols in unprotected list; We don't need to
+		 * protect exports as there is no KMI enforcement.
+		 * Treat everything exportable in this case.
+		 */
+		return false;
+	}
+}
+
+/**
+ * gki_is_module_unprotected_symbol - Is a symbol unprotected for unsigned module?
+ *
+ * @name:	Symbol being checked in list of unprotected symbols
+ */
+bool gki_is_module_unprotected_symbol(const char *name)
+{
+	if (NR_UNPROTECTED_SYMBOLS) {
+		return bsearch(name, gki_unprotected_symbols, NR_UNPROTECTED_SYMBOLS,
+				MAX_UNPROTECTED_NAME_LEN, cmp_name) != NULL;
+	} else {
+		/*
+		 * If there are no symbols in unprotected list;
+		 * there isn't a KMI enforcement for the kernel.
+		 * Treat everything accessible in this case.
+		 */
+		return true;
+	}
+}
diff --git a/kernel/module/internal.h b/kernel/module/internal.h
index 2e2bf23..d51b047 100644
--- a/kernel/module/internal.h
+++ b/kernel/module/internal.h
@@ -303,3 +303,17 @@ static inline int same_magic(const char *amagic, const char *bmagic, bool has_cr
 	return strcmp(amagic, bmagic) == 0;
 }
 #endif /* CONFIG_MODVERSIONS */
+
+#ifdef CONFIG_MODULE_SIG_PROTECT
+extern bool gki_is_module_unprotected_symbol(const char *name);
+extern bool gki_is_module_protected_export(const char *name);
+#else
+static inline bool gki_is_module_unprotected_symbol(const char *name)
+{
+	return true;
+}
+static inline bool gki_is_module_protected_export(const char *name)
+{
+	return false;
+}
+#endif /* CONFIG_MODULE_SIG_PROTECT */
diff --git a/kernel/module/main.c b/kernel/module/main.c
index 7a62734..0f18b6e 100644
--- a/kernel/module/main.c
+++ b/kernel/module/main.c
@@ -60,6 +60,9 @@
 #define CREATE_TRACE_POINTS
 #include <trace/events/module.h>
 
+#undef CREATE_TRACE_POINTS
+#include <trace/hooks/module.h>
+
 /*
  * Mutex protects:
  * 1) List of modules (also safely readable with preempt_disable),
@@ -524,6 +527,7 @@ static struct module_attribute modinfo_##field = {                    \
 
 MODINFO_ATTR(version);
 MODINFO_ATTR(srcversion);
+MODINFO_ATTR(scmversion);
 
 static struct {
 	char name[MODULE_NAME_LEN + 1];
@@ -971,6 +975,7 @@ struct module_attribute *modinfo_attrs[] = {
 	&module_uevent,
 	&modinfo_version,
 	&modinfo_srcversion,
+	&modinfo_scmversion,
 	&modinfo_initstate,
 	&modinfo_coresize,
 #ifdef CONFIG_ARCH_WANTS_MODULES_DATA_IN_VMALLOC
@@ -1095,6 +1100,21 @@ static const struct kernel_symbol *resolve_symbol(struct module *mod,
 		goto getname;
 	}
 
+	/*
+	 * ANDROID: GKI:
+	 * In case of an unsigned module symbol resolves only if:
+	 * 1. Symbol is in the list of unprotected symbol list OR
+	 * 2. If symbol owner is not NULL i.e. owner is another module;
+	 *    it has to be an unsigned module and not signed GKI module
+	 *    to protect symbols exported by signed GKI modules.
+	 */
+	if (!mod->sig_ok &&
+	    !gki_is_module_unprotected_symbol(name) &&
+	    fsa.owner && fsa.owner->sig_ok) {
+		fsa.sym = ERR_PTR(-EACCES);
+		goto getname;
+	}
+
 	err = ref_module(mod, fsa.owner);
 	if (err) {
 		fsa.sym = ERR_PTR(err);
@@ -1191,6 +1211,7 @@ static void free_module(struct module *mod)
 
 	/* This may be empty, but that's OK */
 	module_arch_freeing_init(mod);
+	trace_android_rvh_set_module_init_rw_nx(mod);
 	module_memfree(mod->init_layout.base);
 	kfree(mod->args);
 	percpu_modfree(mod);
@@ -1199,6 +1220,7 @@ static void free_module(struct module *mod)
 	lockdep_free_key_range(mod->data_layout.base, mod->data_layout.size);
 
 	/* Finally, free the core (containing the module structure) */
+	trace_android_rvh_set_module_core_rw_nx(mod);
 	module_memfree(mod->core_layout.base);
 #ifdef CONFIG_ARCH_WANTS_MODULES_DATA_IN_VMALLOC
 	vfree(mod->data_layout.base);
@@ -1247,6 +1269,14 @@ static int verify_exported_symbols(struct module *mod)
 				.name	= kernel_symbol_name(s),
 				.gplok	= true,
 			};
+
+			if (!mod->sig_ok && gki_is_module_protected_export(
+						kernel_symbol_name(s))) {
+				pr_err("%s: exports protected symbol %s\n",
+				       mod->name, kernel_symbol_name(s));
+				return -EACCES;
+			}
+
 			if (find_symbol(&fsa)) {
 				pr_err("%s: exports duplicate symbol %s"
 				       " (owned by %s)\n",
@@ -1327,9 +1357,15 @@ static int simplify_symbols(struct module *mod, const struct load_info *info)
 			     ignore_undef_symbol(info->hdr->e_machine, name)))
 				break;
 
-			ret = PTR_ERR(ksym) ?: -ENOENT;
-			pr_warn("%s: Unknown symbol %s (err %d)\n",
-				mod->name, name, ret);
+			if (PTR_ERR(ksym) == -EACCES) {
+				ret = -EACCES;
+				pr_warn("%s: Protected symbol: %s (err %d)\n",
+					mod->name, name, ret);
+			} else {
+				ret = PTR_ERR(ksym) ?: -ENOENT;
+				pr_warn("%s: Unknown symbol %s (err %d)\n",
+					mod->name, name, ret);
+			}
 			break;
 
 		default:
@@ -2342,7 +2378,9 @@ static void module_deallocate(struct module *mod, struct load_info *info)
 {
 	percpu_modfree(mod);
 	module_arch_freeing_init(mod);
+	trace_android_rvh_set_module_init_rw_nx(mod);
 	module_memfree(mod->init_layout.base);
+	trace_android_rvh_set_module_core_rw_nx(mod);
 	module_memfree(mod->core_layout.base);
 #ifdef CONFIG_ARCH_WANTS_MODULES_DATA_IN_VMALLOC
 	vfree(mod->data_layout.base);
@@ -2495,8 +2533,10 @@ static noinline int do_init_module(struct module *mod)
 	rcu_assign_pointer(mod->kallsyms, &mod->core_kallsyms);
 #endif
 	module_enable_ro(mod, true);
+	trace_android_rvh_set_module_permit_after_init(mod);
 	mod_tree_remove_init(mod);
 	module_arch_freeing_init(mod);
+	trace_android_rvh_set_module_init_rw_nx(mod);
 	mod->init_layout.base = NULL;
 	mod->init_layout.size = 0;
 	mod->init_layout.ro_size = 0;
@@ -2626,6 +2666,7 @@ static int complete_formation(struct module *mod, struct load_info *info)
 	module_enable_ro(mod, false);
 	module_enable_nx(mod);
 	module_enable_x(mod);
+	trace_android_rvh_set_module_permit_before_init(mod);
 
 	/*
 	 * Mark state as coming so strong_try_module_get() ignores us,
@@ -2765,6 +2806,8 @@ static int load_module(struct load_info *info, const char __user *uargs,
 			       "kernel\n", mod->name);
 		add_taint_module(mod, TAINT_UNSIGNED_MODULE, LOCKDEP_STILL_OK);
 	}
+#else
+	mod->sig_ok = 0;
 #endif
 
 	/* To avoid stressing percpu allocator, do this once we're unique. */
diff --git a/kernel/module/signing.c b/kernel/module/signing.c
index a2ff424..7ffb2ae 100644
--- a/kernel/module/signing.c
+++ b/kernel/module/signing.c
@@ -19,8 +19,20 @@
 #undef MODULE_PARAM_PREFIX
 #define MODULE_PARAM_PREFIX "module."
 
+/*
+ * ANDROID: GKI:
+ * Only enforce signature if SIG_PROTECT is not set
+ */
+#ifndef CONFIG_MODULE_SIG_PROTECT
 static bool sig_enforce = IS_ENABLED(CONFIG_MODULE_SIG_FORCE);
 module_param(sig_enforce, bool_enable_only, 0644);
+void set_module_sig_enforced(void)
+{
+	sig_enforce = true;
+}
+#else
+#define sig_enforce false
+#endif
 
 /*
  * Export sig_enforce kernel cmdline parameter to allow other subsystems rely
@@ -32,11 +44,6 @@ bool is_module_sig_enforced(void)
 }
 EXPORT_SYMBOL(is_module_sig_enforced);
 
-void set_module_sig_enforced(void)
-{
-	sig_enforce = true;
-}
-
 /*
  * Verify the signature on a module.
  */
@@ -121,5 +128,13 @@ int module_sig_check(struct load_info *info, int flags)
 		return -EKEYREJECTED;
 	}
 
+/*
+ * ANDROID: GKI: Do not prevent loading of unsigned modules;
+ * as all modules except GKI modules are not signed.
+ */
+#ifndef CONFIG_MODULE_SIG_PROTECT
 	return security_locked_down(LOCKDOWN_MODULE_SIGNATURE);
+#else
+	return 0;
+#endif
 }
diff --git a/kernel/pid.c b/kernel/pid.c
index 3fbc5e4..9efcf71 100644
--- a/kernel/pid.c
+++ b/kernel/pid.c
@@ -421,6 +421,7 @@ struct task_struct *find_task_by_vpid(pid_t vnr)
 {
 	return find_task_by_pid_ns(vnr, task_active_pid_ns(current));
 }
+EXPORT_SYMBOL_GPL(find_task_by_vpid);
 
 struct task_struct *find_get_task_by_vpid(pid_t nr)
 {
diff --git a/kernel/power/Makefile b/kernel/power/Makefile
index 874ad83..3e84020 100644
--- a/kernel/power/Makefile
+++ b/kernel/power/Makefile
@@ -21,4 +21,5 @@
 
 obj-$(CONFIG_MAGIC_SYSRQ)	+= poweroff.o
 
+obj-$(CONFIG_SUSPEND)		+= wakeup_reason.o
 obj-$(CONFIG_ENERGY_MODEL)	+= energy_model.o
diff --git a/kernel/power/process.c b/kernel/power/process.c
index beeab7f..319e4f7 100644
--- a/kernel/power/process.c
+++ b/kernel/power/process.c
@@ -20,6 +20,8 @@
 #include <trace/events/power.h>
 #include <linux/cpuset.h>
 
+#include <trace/hooks/power.h>
+
 /*
  * Timeout for stopping processes
  */
@@ -85,24 +87,30 @@ static int try_to_freeze_tasks(bool user_only)
 	elapsed = ktime_sub(end, start);
 	elapsed_msecs = ktime_to_ms(elapsed);
 
-	if (todo) {
-		pr_err("Freezing of tasks %s after %d.%03d seconds "
-		       "(%d tasks refusing to freeze, wq_busy=%d):\n",
-		       wakeup ? "aborted" : "failed",
+	if (wakeup) {
+		pr_err("Freezing of tasks aborted after %d.%03d seconds",
+		       elapsed_msecs / 1000, elapsed_msecs % 1000);
+	} else if (todo) {
+		pr_err("Freezing of tasks failed after %d.%03d seconds"
+		       " (%d tasks refusing to freeze, wq_busy=%d):\n",
 		       elapsed_msecs / 1000, elapsed_msecs % 1000,
 		       todo - wq_busy, wq_busy);
 
 		if (wq_busy)
 			show_all_workqueues();
 
-		if (!wakeup || pm_debug_messages_on) {
+		if (pm_debug_messages_on) {
 			read_lock(&tasklist_lock);
 			for_each_process_thread(g, p) {
-				if (p != current && freezing(p) && !frozen(p))
+				if (p != current && freezing(p) && !frozen(p)) {
 					sched_show_task(p);
+					trace_android_vh_try_to_freeze_todo_unfrozen(p);
+				}
 			}
 			read_unlock(&tasklist_lock);
 		}
+
+		trace_android_vh_try_to_freeze_todo(todo, elapsed_msecs, wq_busy);
 	} else {
 		pr_info("Freezing %s completed (elapsed %d.%03d seconds)\n",
 			what, elapsed_msecs / 1000, elapsed_msecs % 1000);
diff --git a/kernel/power/qos.c b/kernel/power/qos.c
index af51ed6..e7e4e78 100644
--- a/kernel/power/qos.c
+++ b/kernel/power/qos.c
@@ -38,6 +38,7 @@
 #include <linux/uaccess.h>
 #include <linux/export.h>
 #include <trace/events/power.h>
+#include <trace/hooks/power.h>
 
 /*
  * locking rule: all changes to constraints or notifiers lists
@@ -546,6 +547,7 @@ int freq_qos_add_request(struct freq_constraints *qos,
 		req->type = 0;
 	}
 
+	trace_android_vh_freq_qos_add_request(qos, req, type, value, ret);
 	return ret;
 }
 EXPORT_SYMBOL_GPL(freq_qos_add_request);
@@ -570,6 +572,7 @@ int freq_qos_update_request(struct freq_qos_request *req, s32 new_value)
 		 "%s() called for unknown object\n", __func__))
 		return -EINVAL;
 
+	trace_android_vh_freq_qos_update_request(req, new_value);
 	if (req->pnode.prio == new_value)
 		return 0;
 
@@ -598,6 +601,7 @@ int freq_qos_remove_request(struct freq_qos_request *req)
 		 "%s() called for unknown object\n", __func__))
 		return -EINVAL;
 
+	trace_android_vh_freq_qos_remove_request(req);
 	ret = freq_qos_apply(req, PM_QOS_REMOVE_REQ, PM_QOS_DEFAULT_VALUE);
 	req->qos = NULL;
 	req->type = 0;
diff --git a/kernel/power/snapshot.c b/kernel/power/snapshot.c
index c20ca5f..16cceb3 100644
--- a/kernel/power/snapshot.c
+++ b/kernel/power/snapshot.c
@@ -2082,6 +2082,7 @@ unsigned long snapshot_get_image_size(void)
 {
 	return nr_copy_pages + nr_meta_pages + 1;
 }
+EXPORT_SYMBOL_GPL(snapshot_get_image_size);
 
 static int init_header(struct swsusp_info *info)
 {
diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c
index fa3bf16..c61c378 100644
--- a/kernel/power/suspend.c
+++ b/kernel/power/suspend.c
@@ -30,6 +30,7 @@
 #include <trace/events/power.h>
 #include <linux/compiler.h>
 #include <linux/moduleparam.h>
+#include <linux/wakeup_reason.h>
 
 #include "power.h"
 
@@ -138,6 +139,8 @@ static void s2idle_loop(void)
 			break;
 		}
 
+		clear_wakeup_reasons();
+
 		if (s2idle_ops && s2idle_ops->check)
 			s2idle_ops->check();
 
@@ -367,6 +370,7 @@ static int suspend_prepare(suspend_state_t state)
 	if (!error)
 		return 0;
 
+	log_suspend_abort_reason("One or more tasks refusing to freeze");
 	suspend_stats.failed_freeze++;
 	dpm_save_failed_step(SUSPEND_FREEZE);
 	pm_notifier_call_chain(PM_POST_SUSPEND);
@@ -396,7 +400,7 @@ void __weak arch_suspend_enable_irqs(void)
  */
 static int suspend_enter(suspend_state_t state, bool *wakeup)
 {
-	int error;
+	int error, last_dev;
 
 	error = platform_suspend_prepare(state);
 	if (error)
@@ -404,7 +408,11 @@ static int suspend_enter(suspend_state_t state, bool *wakeup)
 
 	error = dpm_suspend_late(PMSG_SUSPEND);
 	if (error) {
+		last_dev = suspend_stats.last_failed_dev + REC_FAILED_NUM - 1;
+		last_dev %= REC_FAILED_NUM;
 		pr_err("late suspend of devices failed\n");
+		log_suspend_abort_reason("late suspend of %s device failed",
+					 suspend_stats.failed_devs[last_dev]);
 		goto Platform_finish;
 	}
 	error = platform_suspend_prepare_late(state);
@@ -413,7 +421,11 @@ static int suspend_enter(suspend_state_t state, bool *wakeup)
 
 	error = dpm_suspend_noirq(PMSG_SUSPEND);
 	if (error) {
+		last_dev = suspend_stats.last_failed_dev + REC_FAILED_NUM - 1;
+		last_dev %= REC_FAILED_NUM;
 		pr_err("noirq suspend of devices failed\n");
+		log_suspend_abort_reason("noirq suspend of %s device failed",
+					 suspend_stats.failed_devs[last_dev]);
 		goto Platform_early_resume;
 	}
 	error = platform_suspend_prepare_noirq(state);
@@ -429,8 +441,10 @@ static int suspend_enter(suspend_state_t state, bool *wakeup)
 	}
 
 	error = pm_sleep_disable_secondary_cpus();
-	if (error || suspend_test(TEST_CPUS))
+	if (error || suspend_test(TEST_CPUS)) {
+		log_suspend_abort_reason("Disabling non-boot cpus failed");
 		goto Enable_cpus;
+	}
 
 	arch_suspend_disable_irqs();
 	BUG_ON(!irqs_disabled());
@@ -501,6 +515,8 @@ int suspend_devices_and_enter(suspend_state_t state)
 	error = dpm_suspend_start(PMSG_SUSPEND);
 	if (error) {
 		pr_err("Some devices failed to suspend, or early wake event detected\n");
+		log_suspend_abort_reason(
+				"Some devices failed to suspend, or early wake event detected");
 		goto Recover_platform;
 	}
 	suspend_test_finish("suspend devices");
diff --git a/kernel/power/swap.c b/kernel/power/swap.c
index cc44c37..678727c 100644
--- a/kernel/power/swap.c
+++ b/kernel/power/swap.c
@@ -30,6 +30,7 @@
 #include <linux/kthread.h>
 #include <linux/crc32.h>
 #include <linux/ktime.h>
+#include <trace/hooks/bl_hib.h>
 
 #include "power.h"
 
@@ -188,6 +189,7 @@ sector_t alloc_swapdev_block(int swap)
 	}
 	return 0;
 }
+EXPORT_SYMBOL_GPL(alloc_swapdev_block);
 
 /*
  *	free_all_swap_pages - free swap pages allocated for saving image data.
@@ -452,6 +454,7 @@ static int swap_write_page(struct swap_map_handle *handle, void *buf,
 {
 	int error = 0;
 	sector_t offset;
+	bool skip = false;
 
 	if (!handle->cur)
 		return -EINVAL;
@@ -465,9 +468,12 @@ static int swap_write_page(struct swap_map_handle *handle, void *buf,
 		if (!offset)
 			return -ENOSPC;
 		handle->cur->next_swap = offset;
-		error = write_page(handle->cur, handle->cur_swap, hb);
-		if (error)
-			goto out;
+		trace_android_vh_skip_swap_map_write(&skip);
+		if (!skip) {
+			error = write_page(handle->cur, handle->cur_swap, hb);
+			if (error)
+				goto out;
+		}
 		clear_page(handle->cur);
 		handle->cur_swap = offset;
 		handle->k = 0;
@@ -562,6 +568,7 @@ static int save_image(struct swap_map_handle *handle,
 		ret = snapshot_read_next(snapshot);
 		if (ret <= 0)
 			break;
+		trace_android_vh_encrypt_page(data_of(*snapshot));
 		ret = swap_write_page(handle, data_of(*snapshot), &hb);
 		if (ret)
 			break;
@@ -578,6 +585,7 @@ static int save_image(struct swap_map_handle *handle,
 	if (!ret)
 		pr_info("Image saving done\n");
 	swsusp_show_speed(start, stop, nr_to_write, "Wrote");
+	trace_android_vh_post_image_save(root_swap);
 	return ret;
 }
 
@@ -921,6 +929,7 @@ int swsusp_write(unsigned int flags)
 		pr_err("Cannot get swap writer\n");
 		return error;
 	}
+	trace_android_vh_init_aes_encrypt(NULL);
 	if (flags & SF_NOCOMPRESS_MODE) {
 		if (!enough_swap(pages)) {
 			pr_err("Not enough free swap\n");
@@ -1527,6 +1536,7 @@ int swsusp_check(void)
 					    mode, &holder);
 	if (!IS_ERR(hib_resume_bdev)) {
 		set_blocksize(hib_resume_bdev, PAGE_SIZE);
+		trace_android_vh_save_hib_resume_bdev(hib_resume_bdev);
 		clear_page(swsusp_header);
 		error = hib_submit_io(REQ_OP_READ, swsusp_resume_block,
 					swsusp_header, NULL);
diff --git a/kernel/power/wakeup_reason.c b/kernel/power/wakeup_reason.c
new file mode 100644
index 0000000..8fefaa3
--- /dev/null
+++ b/kernel/power/wakeup_reason.c
@@ -0,0 +1,438 @@
+/*
+ * kernel/power/wakeup_reason.c
+ *
+ * Logs the reasons which caused the kernel to resume from
+ * the suspend mode.
+ *
+ * Copyright (C) 2020 Google, Inc.
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#include <linux/wakeup_reason.h>
+#include <linux/kernel.h>
+#include <linux/irq.h>
+#include <linux/interrupt.h>
+#include <linux/io.h>
+#include <linux/kobject.h>
+#include <linux/sysfs.h>
+#include <linux/init.h>
+#include <linux/spinlock.h>
+#include <linux/notifier.h>
+#include <linux/suspend.h>
+#include <linux/slab.h>
+
+/*
+ * struct wakeup_irq_node - stores data and relationships for IRQs logged as
+ * either base or nested wakeup reasons during suspend/resume flow.
+ * @siblings - for membership on leaf or parent IRQ lists
+ * @irq      - the IRQ number
+ * @irq_name - the name associated with the IRQ, or a default if none
+ */
+struct wakeup_irq_node {
+	struct list_head siblings;
+	int irq;
+	const char *irq_name;
+};
+
+enum wakeup_reason_flag {
+	RESUME_NONE = 0,
+	RESUME_IRQ,
+	RESUME_ABORT,
+	RESUME_ABNORMAL,
+};
+
+static DEFINE_SPINLOCK(wakeup_reason_lock);
+
+static LIST_HEAD(leaf_irqs);   /* kept in ascending IRQ sorted order */
+static LIST_HEAD(parent_irqs); /* unordered */
+
+static struct kmem_cache *wakeup_irq_nodes_cache;
+
+static const char *default_irq_name = "(unnamed)";
+
+static struct kobject *kobj;
+
+static bool capture_reasons;
+static int wakeup_reason;
+static char non_irq_wake_reason[MAX_SUSPEND_ABORT_LEN];
+
+static ktime_t last_monotime; /* monotonic time before last suspend */
+static ktime_t curr_monotime; /* monotonic time after last suspend */
+static ktime_t last_stime; /* monotonic boottime offset before last suspend */
+static ktime_t curr_stime; /* monotonic boottime offset after last suspend */
+
+static void init_node(struct wakeup_irq_node *p, int irq)
+{
+	struct irq_desc *desc;
+
+	INIT_LIST_HEAD(&p->siblings);
+
+	p->irq = irq;
+	desc = irq_to_desc(irq);
+	if (desc && desc->action && desc->action->name)
+		p->irq_name = desc->action->name;
+	else
+		p->irq_name = default_irq_name;
+}
+
+static struct wakeup_irq_node *create_node(int irq)
+{
+	struct wakeup_irq_node *result;
+
+	result = kmem_cache_alloc(wakeup_irq_nodes_cache, GFP_ATOMIC);
+	if (unlikely(!result))
+		pr_warn("Failed to log wakeup IRQ %d\n", irq);
+	else
+		init_node(result, irq);
+
+	return result;
+}
+
+static void delete_list(struct list_head *head)
+{
+	struct wakeup_irq_node *n;
+
+	while (!list_empty(head)) {
+		n = list_first_entry(head, struct wakeup_irq_node, siblings);
+		list_del(&n->siblings);
+		kmem_cache_free(wakeup_irq_nodes_cache, n);
+	}
+}
+
+static bool add_sibling_node_sorted(struct list_head *head, int irq)
+{
+	struct wakeup_irq_node *n = NULL;
+	struct list_head *predecessor = head;
+
+	if (unlikely(WARN_ON(!head)))
+		return NULL;
+
+	if (!list_empty(head))
+		list_for_each_entry(n, head, siblings) {
+			if (n->irq < irq)
+				predecessor = &n->siblings;
+			else if (n->irq == irq)
+				return true;
+			else
+				break;
+		}
+
+	n = create_node(irq);
+	if (n) {
+		list_add(&n->siblings, predecessor);
+		return true;
+	}
+
+	return false;
+}
+
+static struct wakeup_irq_node *find_node_in_list(struct list_head *head,
+						 int irq)
+{
+	struct wakeup_irq_node *n;
+
+	if (unlikely(WARN_ON(!head)))
+		return NULL;
+
+	list_for_each_entry(n, head, siblings)
+		if (n->irq == irq)
+			return n;
+
+	return NULL;
+}
+
+void log_irq_wakeup_reason(int irq)
+{
+	unsigned long flags;
+
+	spin_lock_irqsave(&wakeup_reason_lock, flags);
+	if (wakeup_reason == RESUME_ABNORMAL || wakeup_reason == RESUME_ABORT) {
+		spin_unlock_irqrestore(&wakeup_reason_lock, flags);
+		return;
+	}
+
+	if (!capture_reasons) {
+		spin_unlock_irqrestore(&wakeup_reason_lock, flags);
+		return;
+	}
+
+	if (find_node_in_list(&parent_irqs, irq) == NULL)
+		add_sibling_node_sorted(&leaf_irqs, irq);
+
+	wakeup_reason = RESUME_IRQ;
+	spin_unlock_irqrestore(&wakeup_reason_lock, flags);
+}
+
+void log_threaded_irq_wakeup_reason(int irq, int parent_irq)
+{
+	struct wakeup_irq_node *parent;
+	unsigned long flags;
+
+	/*
+	 * Intentionally unsynchronized.  Calls that come in after we have
+	 * resumed should have a fast exit path since there's no work to be
+	 * done, any any coherence issue that could cause a wrong value here is
+	 * both highly improbable - given the set/clear timing - and very low
+	 * impact (parent IRQ gets logged instead of the specific child).
+	 */
+	if (!capture_reasons)
+		return;
+
+	spin_lock_irqsave(&wakeup_reason_lock, flags);
+
+	if (wakeup_reason == RESUME_ABNORMAL || wakeup_reason == RESUME_ABORT) {
+		spin_unlock_irqrestore(&wakeup_reason_lock, flags);
+		return;
+	}
+
+	if (!capture_reasons || (find_node_in_list(&leaf_irqs, irq) != NULL)) {
+		spin_unlock_irqrestore(&wakeup_reason_lock, flags);
+		return;
+	}
+
+	parent = find_node_in_list(&parent_irqs, parent_irq);
+	if (parent != NULL)
+		add_sibling_node_sorted(&leaf_irqs, irq);
+	else {
+		parent = find_node_in_list(&leaf_irqs, parent_irq);
+		if (parent != NULL) {
+			list_del_init(&parent->siblings);
+			list_add_tail(&parent->siblings, &parent_irqs);
+			add_sibling_node_sorted(&leaf_irqs, irq);
+		}
+	}
+
+	spin_unlock_irqrestore(&wakeup_reason_lock, flags);
+}
+EXPORT_SYMBOL_GPL(log_threaded_irq_wakeup_reason);
+
+static void __log_abort_or_abnormal_wake(bool abort, const char *fmt,
+					 va_list args)
+{
+	unsigned long flags;
+
+	spin_lock_irqsave(&wakeup_reason_lock, flags);
+
+	/* Suspend abort or abnormal wake reason has already been logged. */
+	if (wakeup_reason != RESUME_NONE) {
+		spin_unlock_irqrestore(&wakeup_reason_lock, flags);
+		return;
+	}
+
+	if (abort)
+		wakeup_reason = RESUME_ABORT;
+	else
+		wakeup_reason = RESUME_ABNORMAL;
+
+	vsnprintf(non_irq_wake_reason, MAX_SUSPEND_ABORT_LEN, fmt, args);
+
+	spin_unlock_irqrestore(&wakeup_reason_lock, flags);
+}
+
+void log_suspend_abort_reason(const char *fmt, ...)
+{
+	va_list args;
+
+	va_start(args, fmt);
+	__log_abort_or_abnormal_wake(true, fmt, args);
+	va_end(args);
+}
+EXPORT_SYMBOL_GPL(log_suspend_abort_reason);
+
+void log_abnormal_wakeup_reason(const char *fmt, ...)
+{
+	va_list args;
+
+	va_start(args, fmt);
+	__log_abort_or_abnormal_wake(false, fmt, args);
+	va_end(args);
+}
+EXPORT_SYMBOL_GPL(log_abnormal_wakeup_reason);
+
+void clear_wakeup_reasons(void)
+{
+	unsigned long flags;
+
+	spin_lock_irqsave(&wakeup_reason_lock, flags);
+
+	delete_list(&leaf_irqs);
+	delete_list(&parent_irqs);
+	wakeup_reason = RESUME_NONE;
+	capture_reasons = true;
+
+	spin_unlock_irqrestore(&wakeup_reason_lock, flags);
+}
+
+static void print_wakeup_sources(void)
+{
+	struct wakeup_irq_node *n;
+	unsigned long flags;
+
+	spin_lock_irqsave(&wakeup_reason_lock, flags);
+
+	capture_reasons = false;
+
+	if (wakeup_reason == RESUME_ABORT) {
+		pr_info("Abort: %s\n", non_irq_wake_reason);
+		spin_unlock_irqrestore(&wakeup_reason_lock, flags);
+		return;
+	}
+
+	if (wakeup_reason == RESUME_IRQ && !list_empty(&leaf_irqs))
+		list_for_each_entry(n, &leaf_irqs, siblings)
+			pr_info("Resume caused by IRQ %d, %s\n", n->irq,
+				n->irq_name);
+	else if (wakeup_reason == RESUME_ABNORMAL)
+		pr_info("Resume caused by %s\n", non_irq_wake_reason);
+	else
+		pr_info("Resume cause unknown\n");
+
+	spin_unlock_irqrestore(&wakeup_reason_lock, flags);
+}
+
+static ssize_t last_resume_reason_show(struct kobject *kobj,
+				       struct kobj_attribute *attr, char *buf)
+{
+	ssize_t buf_offset = 0;
+	struct wakeup_irq_node *n;
+	unsigned long flags;
+
+	spin_lock_irqsave(&wakeup_reason_lock, flags);
+
+	if (wakeup_reason == RESUME_ABORT) {
+		buf_offset = scnprintf(buf, PAGE_SIZE, "Abort: %s",
+				       non_irq_wake_reason);
+		spin_unlock_irqrestore(&wakeup_reason_lock, flags);
+		return buf_offset;
+	}
+
+	if (wakeup_reason == RESUME_IRQ && !list_empty(&leaf_irqs))
+		list_for_each_entry(n, &leaf_irqs, siblings)
+			buf_offset += scnprintf(buf + buf_offset,
+						PAGE_SIZE - buf_offset,
+						"%d %s\n", n->irq, n->irq_name);
+	else if (wakeup_reason == RESUME_ABNORMAL)
+		buf_offset = scnprintf(buf, PAGE_SIZE, "-1 %s",
+				       non_irq_wake_reason);
+
+	spin_unlock_irqrestore(&wakeup_reason_lock, flags);
+
+	return buf_offset;
+}
+
+static ssize_t last_suspend_time_show(struct kobject *kobj,
+			struct kobj_attribute *attr, char *buf)
+{
+	struct timespec64 sleep_time;
+	struct timespec64 total_time;
+	struct timespec64 suspend_resume_time;
+
+	/*
+	 * total_time is calculated from monotonic bootoffsets because
+	 * unlike CLOCK_MONOTONIC it include the time spent in suspend state.
+	 */
+	total_time = ktime_to_timespec64(ktime_sub(curr_stime, last_stime));
+
+	/*
+	 * suspend_resume_time is calculated as monotonic (CLOCK_MONOTONIC)
+	 * time interval before entering suspend and post suspend.
+	 */
+	suspend_resume_time =
+		ktime_to_timespec64(ktime_sub(curr_monotime, last_monotime));
+
+	/* sleep_time = total_time - suspend_resume_time */
+	sleep_time = timespec64_sub(total_time, suspend_resume_time);
+
+	/* Export suspend_resume_time and sleep_time in pair here. */
+	return sprintf(buf, "%llu.%09lu %llu.%09lu\n",
+		       (unsigned long long)suspend_resume_time.tv_sec,
+		       suspend_resume_time.tv_nsec,
+		       (unsigned long long)sleep_time.tv_sec,
+		       sleep_time.tv_nsec);
+}
+
+static struct kobj_attribute resume_reason = __ATTR_RO(last_resume_reason);
+static struct kobj_attribute suspend_time = __ATTR_RO(last_suspend_time);
+
+static struct attribute *attrs[] = {
+	&resume_reason.attr,
+	&suspend_time.attr,
+	NULL,
+};
+static struct attribute_group attr_group = {
+	.attrs = attrs,
+};
+
+/* Detects a suspend and clears all the previous wake up reasons*/
+static int wakeup_reason_pm_event(struct notifier_block *notifier,
+		unsigned long pm_event, void *unused)
+{
+	switch (pm_event) {
+	case PM_SUSPEND_PREPARE:
+		/* monotonic time since boot */
+		last_monotime = ktime_get();
+		/* monotonic time since boot including the time spent in suspend */
+		last_stime = ktime_get_boottime();
+		clear_wakeup_reasons();
+		break;
+	case PM_POST_SUSPEND:
+		/* monotonic time since boot */
+		curr_monotime = ktime_get();
+		/* monotonic time since boot including the time spent in suspend */
+		curr_stime = ktime_get_boottime();
+		print_wakeup_sources();
+		break;
+	default:
+		break;
+	}
+	return NOTIFY_DONE;
+}
+
+static struct notifier_block wakeup_reason_pm_notifier_block = {
+	.notifier_call = wakeup_reason_pm_event,
+};
+
+static int __init wakeup_reason_init(void)
+{
+	if (register_pm_notifier(&wakeup_reason_pm_notifier_block)) {
+		pr_warn("[%s] failed to register PM notifier\n", __func__);
+		goto fail;
+	}
+
+	kobj = kobject_create_and_add("wakeup_reasons", kernel_kobj);
+	if (!kobj) {
+		pr_warn("[%s] failed to create a sysfs kobject\n", __func__);
+		goto fail_unregister_pm_notifier;
+	}
+
+	if (sysfs_create_group(kobj, &attr_group)) {
+		pr_warn("[%s] failed to create a sysfs group\n", __func__);
+		goto fail_kobject_put;
+	}
+
+	wakeup_irq_nodes_cache =
+		kmem_cache_create("wakeup_irq_node_cache",
+				  sizeof(struct wakeup_irq_node), 0, 0, NULL);
+	if (!wakeup_irq_nodes_cache)
+		goto fail_remove_group;
+
+	return 0;
+
+fail_remove_group:
+	sysfs_remove_group(kobj, &attr_group);
+fail_kobject_put:
+	kobject_put(kobj);
+fail_unregister_pm_notifier:
+	unregister_pm_notifier(&wakeup_reason_pm_notifier_block);
+fail:
+	return 1;
+}
+
+late_initcall(wakeup_reason_init);
diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
index e4f1e74..16b619d 100644
--- a/kernel/printk/printk.c
+++ b/kernel/printk/printk.c
@@ -54,6 +54,8 @@
 #include <trace/events/initcall.h>
 #define CREATE_TRACE_POINTS
 #include <trace/events/printk.h>
+#undef CREATE_TRACE_POINTS
+#include <trace/hooks/printk.h>
 
 #include "printk_ringbuffer.h"
 #include "console_cmdline.h"
@@ -2110,6 +2112,8 @@ static u16 printk_sprint(char *text, u16 size, int facility,
 	return text_len;
 }
 
+EXPORT_TRACEPOINT_SYMBOL_GPL(console);
+
 __printf(4, 0)
 int vprintk_store(int facility, int level,
 		  const struct dev_printk_info *dev_info,
@@ -2544,6 +2548,12 @@ void resume_console(void)
  */
 static int console_cpu_notify(unsigned int cpu)
 {
+	int flag = 0;
+
+	trace_android_vh_printk_hotplug(&flag);
+	if (flag)
+		return 0;
+
 	if (!cpuhp_tasks_frozen) {
 		/* If trylock fails, someone else is doing the printing */
 		if (console_trylock())
@@ -3523,6 +3533,7 @@ int _printk_deferred(const char *fmt, ...)
 
 	return r;
 }
+EXPORT_SYMBOL_GPL(_printk_deferred);
 
 /*
  * printk rate limiting, lifted from the networking subsystem.
diff --git a/kernel/profile.c b/kernel/profile.c
index 8a77769..f568049 100644
--- a/kernel/profile.c
+++ b/kernel/profile.c
@@ -136,6 +136,59 @@ int __ref profile_init(void)
 	return -ENOMEM;
 }
 
+/* Profile event notifications */
+
+static BLOCKING_NOTIFIER_HEAD(task_exit_notifier);
+static BLOCKING_NOTIFIER_HEAD(munmap_notifier);
+
+void profile_task_exit(struct task_struct *task)
+{
+	blocking_notifier_call_chain(&task_exit_notifier, 0, task);
+}
+
+void profile_munmap(unsigned long addr)
+{
+	blocking_notifier_call_chain(&munmap_notifier, 0, (void *)addr);
+}
+
+int profile_event_register(enum profile_type type, struct notifier_block *n)
+{
+	int err = -EINVAL;
+
+	switch (type) {
+	case PROFILE_TASK_EXIT:
+		err = blocking_notifier_chain_register(
+				&task_exit_notifier, n);
+		break;
+	case PROFILE_MUNMAP:
+		err = blocking_notifier_chain_register(
+				&munmap_notifier, n);
+		break;
+	}
+
+	return err;
+}
+EXPORT_SYMBOL_GPL(profile_event_register);
+
+int profile_event_unregister(enum profile_type type, struct notifier_block *n)
+{
+	int err = -EINVAL;
+
+	switch (type) {
+	case PROFILE_TASK_EXIT:
+		err = blocking_notifier_chain_unregister(
+				&task_exit_notifier, n);
+		break;
+	case PROFILE_MUNMAP:
+		err = blocking_notifier_chain_unregister(
+				&munmap_notifier, n);
+		break;
+	}
+
+	return err;
+}
+EXPORT_SYMBOL_GPL(profile_event_unregister);
+
 #if defined(CONFIG_SMP) && defined(CONFIG_PROC_FS)
 /*
  * Each cpu has a pair of open-addressed hashtables for pending
diff --git a/kernel/reboot.c b/kernel/reboot.c
index 3bba88c..a032312 100644
--- a/kernel/reboot.c
+++ b/kernel/reboot.c
@@ -35,6 +35,7 @@ EXPORT_SYMBOL(cad_pid);
 enum reboot_mode reboot_mode DEFAULT_REBOOT_MODE;
 EXPORT_SYMBOL_GPL(reboot_mode);
 enum reboot_mode panic_reboot_mode = REBOOT_UNDEFINED;
+EXPORT_SYMBOL_GPL(panic_reboot_mode);
 
 /*
  * This variable is used privately to keep track of whether or not
diff --git a/kernel/relay.c b/kernel/relay.c
index 1cb4bb9..d9c2e4f 100644
--- a/kernel/relay.c
+++ b/kernel/relay.c
@@ -91,7 +91,7 @@ static int relay_mmap_buf(struct rchan_buf *buf, struct vm_area_struct *vma)
 		return -EINVAL;
 
 	vma->vm_ops = &relay_file_mmap_ops;
-	vma->vm_flags |= VM_DONTEXPAND;
+	vm_flags_set(vma, VM_DONTEXPAND);
 	vma->vm_private_data = buf;
 
 	return 0;
diff --git a/kernel/sched/Makefile b/kernel/sched/Makefile
index 976092b..ff1738c 100644
--- a/kernel/sched/Makefile
+++ b/kernel/sched/Makefile
@@ -32,3 +32,4 @@
 obj-y += fair.o
 obj-y += build_policy.o
 obj-y += build_utility.o
+obj-$(CONFIG_ANDROID_VENDOR_HOOKS) += vendor_hooks.o
diff --git a/kernel/sched/android.h b/kernel/sched/android.h
new file mode 100644
index 0000000..5fe6bb7
--- /dev/null
+++ b/kernel/sched/android.h
@@ -0,0 +1,27 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Android scheduler hooks and modifications
+ *
+ * Put all of the android-specific scheduler hooks and changes
+ * in this .h file to make merges and modifications easier.  It's also
+ * simpler to notice what is, and is not, an upstream change this way over time.
+ */
+
+
+/*
+ * task_may_not_preempt - check whether a task may not be preemptible soon
+ */
+static inline bool task_may_not_preempt(struct task_struct *task, int cpu)
+{
+	return false;
+}
+
+static inline bool uclamp_boosted(struct task_struct *p)
+{
+	return false;
+}
+
+static inline bool uclamp_latency_sensitive(struct task_struct *p)
+{
+	return false;
+}
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index b23dcbe..c9d59630 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -95,6 +95,10 @@
 #include "../../io_uring/io-wq.h"
 #include "../smpboot.h"
 
+#include <trace/hooks/sched.h>
+#include <trace/hooks/dtask.h>
+#include <trace/hooks/cgroup.h>
+
 /*
  * Export tracepoints that act as a bare tracehook (ie: have no trace event
  * associated with them) to allow external modules to probe them.
@@ -110,8 +114,17 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(sched_overutilized_tp);
 EXPORT_TRACEPOINT_SYMBOL_GPL(sched_util_est_cfs_tp);
 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);
+#ifdef CONFIG_SCHEDSTATS
+EXPORT_TRACEPOINT_SYMBOL_GPL(sched_stat_sleep);
+EXPORT_TRACEPOINT_SYMBOL_GPL(sched_stat_wait);
+EXPORT_TRACEPOINT_SYMBOL_GPL(sched_stat_iowait);
+EXPORT_TRACEPOINT_SYMBOL_GPL(sched_stat_blocked);
+#endif
 
 DEFINE_PER_CPU_SHARED_ALIGNED(struct rq, runqueues);
+EXPORT_SYMBOL_GPL(runqueues);
 
 #ifdef CONFIG_SCHED_DEBUG
 /*
@@ -126,6 +139,7 @@ DEFINE_PER_CPU_SHARED_ALIGNED(struct rq, runqueues);
 const_debug unsigned int sysctl_sched_features =
 #include "features.h"
 	0;
+EXPORT_SYMBOL_GPL(sysctl_sched_features);
 #undef SCHED_FEAT
 
 /*
@@ -551,6 +565,7 @@ void raw_spin_rq_lock_nested(struct rq *rq, int subclass)
 		raw_spin_unlock(lock);
 	}
 }
+EXPORT_SYMBOL_GPL(raw_spin_rq_lock_nested);
 
 bool raw_spin_rq_trylock(struct rq *rq)
 {
@@ -580,6 +595,7 @@ void raw_spin_rq_unlock(struct rq *rq)
 {
 	raw_spin_unlock(rq_lockp(rq));
 }
+EXPORT_SYMBOL_GPL(raw_spin_rq_unlock);
 
 #ifdef CONFIG_SMP
 /*
@@ -598,6 +614,7 @@ void double_rq_lock(struct rq *rq1, struct rq *rq2)
 
 	double_rq_clock_clear_update(rq1, rq2);
 }
+EXPORT_SYMBOL_GPL(double_rq_lock);
 #endif
 
 /*
@@ -623,6 +640,7 @@ struct rq *__task_rq_lock(struct task_struct *p, struct rq_flags *rf)
 			cpu_relax();
 	}
 }
+EXPORT_SYMBOL_GPL(__task_rq_lock);
 
 /*
  * task_rq_lock - lock p->pi_lock and lock the rq @p resides on.
@@ -665,6 +683,7 @@ struct rq *task_rq_lock(struct task_struct *p, struct rq_flags *rf)
 			cpu_relax();
 	}
 }
+EXPORT_SYMBOL_GPL(task_rq_lock);
 
 /*
  * RQ-clock updating methods:
@@ -722,7 +741,7 @@ static void update_rq_clock_task(struct rq *rq, s64 delta)
 	if ((irq_delta + steal) && sched_feat(NONTASK_CAPACITY))
 		update_irq_load_avg(rq, irq_delta + steal);
 #endif
-	update_rq_clock_pelt(rq, delta);
+	update_rq_clock_task_mult(rq, delta);
 }
 
 void update_rq_clock(struct rq *rq)
@@ -746,6 +765,7 @@ void update_rq_clock(struct rq *rq)
 	rq->clock += delta;
 	update_rq_clock_task(rq, delta);
 }
+EXPORT_SYMBOL_GPL(update_rq_clock);
 
 #ifdef CONFIG_SCHED_HRTICK
 /*
@@ -944,6 +964,7 @@ static bool __wake_q_add(struct wake_q_head *head, struct task_struct *task)
 	 */
 	*head->lastp = node;
 	head->lastp = &node->next;
+	head->count++;
 	return true;
 }
 
@@ -999,12 +1020,14 @@ void wake_up_q(struct wake_q_head *head)
 		/* Task can safely be re-inserted now: */
 		node = node->next;
 		task->wake_q.next = NULL;
+		task->wake_q_count = head->count;
 
 		/*
 		 * wake_up_process() executes a full barrier, which pairs with
 		 * the queueing in wake_q_add() so as not to miss wakeups.
 		 */
 		wake_up_process(task);
+		task->wake_q_count = 0;
 		put_task_struct(task);
 	}
 }
@@ -1039,6 +1062,7 @@ void resched_curr(struct rq *rq)
 	else
 		trace_sched_wake_idle_without_ipi(cpu);
 }
+EXPORT_SYMBOL_GPL(resched_curr);
 
 void resched_cpu(int cpu)
 {
@@ -1066,6 +1090,11 @@ int get_nohz_timer_target(void)
 	int i, cpu = smp_processor_id(), default_cpu = -1;
 	struct sched_domain *sd;
 	const struct cpumask *hk_mask;
+	bool done = false;
+
+	trace_android_rvh_get_nohz_timer_target(&cpu, &done);
+	if (done)
+		return cpu;
 
 	if (housekeeping_cpu(cpu, HK_TYPE_TIMER)) {
 		if (!idle_cpu(cpu))
@@ -1341,6 +1370,7 @@ static struct uclamp_se uclamp_default[UCLAMP_CNT];
  *   * An admin modifying the cgroup cpu.uclamp.{min, max}
  */
 DEFINE_STATIC_KEY_FALSE(sched_uclamp_used);
+EXPORT_SYMBOL_GPL(sched_uclamp_used);
 
 /* Integer rounded range for each bucket */
 #define UCLAMP_BUCKET_DELTA DIV_ROUND_CLOSEST(SCHED_CAPACITY_SCALE, UCLAMP_BUCKETS)
@@ -1487,6 +1517,12 @@ uclamp_eff_get(struct task_struct *p, enum uclamp_id clamp_id)
 {
 	struct uclamp_se uc_req = uclamp_tg_restrict(p, clamp_id);
 	struct uclamp_se uc_max = uclamp_default[clamp_id];
+	struct uclamp_se uc_eff;
+	int ret = 0;
+
+	trace_android_rvh_uclamp_eff_get(p, clamp_id, &uc_max, &uc_eff, &ret);
+	if (ret)
+		return uc_eff;
 
 	/* System default restrictions always apply */
 	if (unlikely(uc_req.value > uc_max.value))
@@ -1507,6 +1543,7 @@ unsigned long uclamp_eff_value(struct task_struct *p, enum uclamp_id clamp_id)
 
 	return (unsigned long)uc_eff.value;
 }
+EXPORT_SYMBOL_GPL(uclamp_eff_value);
 
 /*
  * When a task is enqueued on a rq, the clamp bucket currently defined by the
@@ -1934,12 +1971,14 @@ static void __setscheduler_uclamp(struct task_struct *p,
 	    attr->sched_util_min != -1) {
 		uclamp_se_set(&p->uclamp_req[UCLAMP_MIN],
 			      attr->sched_util_min, true);
+		trace_android_vh_setscheduler_uclamp(p, UCLAMP_MIN, attr->sched_util_min);
 	}
 
 	if (attr->sched_flags & SCHED_FLAG_UTIL_CLAMP_MAX &&
 	    attr->sched_util_max != -1) {
 		uclamp_se_set(&p->uclamp_req[UCLAMP_MAX],
 			      attr->sched_util_max, true);
+		trace_android_vh_setscheduler_uclamp(p, UCLAMP_MAX, attr->sched_util_max);
 	}
 }
 
@@ -2057,7 +2096,9 @@ static inline void enqueue_task(struct rq *rq, struct task_struct *p, int flags)
 	}
 
 	uclamp_rq_inc(rq, p);
+	trace_android_rvh_enqueue_task(rq, p, flags);
 	p->sched_class->enqueue_task(rq, p, flags);
+	trace_android_rvh_after_enqueue_task(rq, p, flags);
 
 	if (sched_core_enabled(rq))
 		sched_core_enqueue(rq, p);
@@ -2077,7 +2118,9 @@ static inline void dequeue_task(struct rq *rq, struct task_struct *p, int flags)
 	}
 
 	uclamp_rq_dec(rq, p);
+	trace_android_rvh_dequeue_task(rq, p, flags);
 	p->sched_class->dequeue_task(rq, p, flags);
+	trace_android_rvh_after_dequeue_task(rq, p, flags);
 }
 
 void activate_task(struct rq *rq, struct task_struct *p, int flags)
@@ -2089,6 +2132,7 @@ void activate_task(struct rq *rq, struct task_struct *p, int flags)
 
 	p->on_rq = TASK_ON_RQ_QUEUED;
 }
+EXPORT_SYMBOL_GPL(activate_task);
 
 void deactivate_task(struct rq *rq, struct task_struct *p, int flags)
 {
@@ -2096,6 +2140,7 @@ void deactivate_task(struct rq *rq, struct task_struct *p, int flags)
 
 	dequeue_task(rq, p, flags);
 }
+EXPORT_SYMBOL_GPL(deactivate_task);
 
 static inline int __normal_prio(int policy, int rt_prio, int nice)
 {
@@ -2188,6 +2233,7 @@ void check_preempt_curr(struct rq *rq, struct task_struct *p, int flags)
 	if (task_on_rq_queued(rq->curr) && test_tsk_need_resched(rq->curr))
 		rq_clock_skip_update(rq);
 }
+EXPORT_SYMBOL_GPL(check_preempt_curr);
 
 #ifdef CONFIG_SMP
 
@@ -2270,6 +2316,8 @@ static inline bool rq_has_pinned_tasks(struct rq *rq)
  */
 static inline bool is_cpu_allowed(struct task_struct *p, int cpu)
 {
+	bool allowed = true;
+
 	/* When not in the task's cpumask, no point in looking further. */
 	if (!cpumask_test_cpu(cpu, p->cpus_ptr))
 		return false;
@@ -2278,14 +2326,20 @@ static inline bool is_cpu_allowed(struct task_struct *p, int cpu)
 	if (is_migration_disabled(p))
 		return cpu_online(cpu);
 
+	/* check for all cases */
+	trace_android_rvh_is_cpu_allowed(p, cpu, &allowed);
+
 	/* Non kernel threads are not allowed during either online or offline. */
 	if (!(p->flags & PF_KTHREAD))
-		return cpu_active(cpu) && task_cpu_possible(cpu, p);
+		return cpu_active(cpu) && task_cpu_possible(cpu, p) && allowed;
 
 	/* KTHREAD_IS_PER_CPU is always allowed. */
 	if (kthread_is_per_cpu(p))
 		return cpu_online(cpu);
 
+	if (!allowed)
+		return false;
+
 	/* Regular kernel threads don't get to stay during offline. */
 	if (cpu_dying(cpu))
 		return false;
@@ -2316,12 +2370,24 @@ static inline bool is_cpu_allowed(struct task_struct *p, int cpu)
 static struct rq *move_queued_task(struct rq *rq, struct rq_flags *rf,
 				   struct task_struct *p, int new_cpu)
 {
+	int detached = 0;
+
 	lockdep_assert_rq_held(rq);
 
+	/*
+	 * The vendor hook may drop the lock temporarily, so
+	 * pass the rq flags to unpin lock. We expect the
+	 * rq lock to be held after return.
+	 */
+	trace_android_rvh_migrate_queued_task(rq, rf, p, new_cpu, &detached);
+	if (detached)
+		goto attach;
+
 	deactivate_task(rq, p, DEQUEUE_NOCLOCK);
 	set_task_cpu(p, new_cpu);
-	rq_unlock(rq, rf);
 
+attach:
+	rq_unlock(rq, rf);
 	rq = cpu_rq(new_cpu);
 
 	rq_lock(rq, rf);
@@ -2359,8 +2425,8 @@ struct set_affinity_pending {
  * So we race with normal scheduler movements, but that's OK, as long
  * as the task is no longer on this CPU.
  */
-static struct rq *__migrate_task(struct rq *rq, struct rq_flags *rf,
-				 struct task_struct *p, int dest_cpu)
+struct rq *__migrate_task(struct rq *rq, struct rq_flags *rf,
+			  struct task_struct *p, int dest_cpu)
 {
 	/* Affinity changed (again). */
 	if (!is_cpu_allowed(p, dest_cpu))
@@ -2371,6 +2437,7 @@ static struct rq *__migrate_task(struct rq *rq, struct rq_flags *rf,
 
 	return rq;
 }
+EXPORT_SYMBOL_GPL(__migrate_task);
 
 /*
  * migration_cpu_stop - this will be executed by a highprio stopper thread
@@ -2535,6 +2602,7 @@ void set_cpus_allowed_common(struct task_struct *p, const struct cpumask *new_ma
 
 	cpumask_copy(&p->cpus_mask, new_mask);
 	p->nr_cpus_allowed = cpumask_weight(new_mask);
+	trace_android_rvh_set_cpus_allowed_comm(p, new_mask);
 }
 
 static void
@@ -2926,6 +2994,8 @@ static int __set_cpus_allowed_ptr_locked(struct task_struct *p,
 	 * immediately required to distribute the tasks within their new mask.
 	 */
 	dest_cpu = cpumask_any_and_distribute(cpu_valid_mask, new_mask);
+	trace_android_rvh_set_cpus_allowed_by_task(cpu_valid_mask, new_mask, p, &dest_cpu);
+
 	if (dest_cpu >= nr_cpu_ids) {
 		ret = -EINVAL;
 		goto out;
@@ -3155,12 +3225,13 @@ void set_task_cpu(struct task_struct *p, unsigned int new_cpu)
 		p->se.nr_migrations++;
 		rseq_migrate(p);
 		perf_event_task_migrate(p);
+		trace_android_rvh_set_task_cpu(p, new_cpu);
 	}
 
 	__set_task_cpu(p, new_cpu);
 }
+EXPORT_SYMBOL_GPL(set_task_cpu);
 
-#ifdef CONFIG_NUMA_BALANCING
 static void __migrate_swap_task(struct task_struct *p, int cpu)
 {
 	if (task_on_rq_queued(p)) {
@@ -3275,7 +3346,7 @@ int migrate_swap(struct task_struct *cur, struct task_struct *p,
 out:
 	return ret;
 }
-#endif /* CONFIG_NUMA_BALANCING */
+EXPORT_SYMBOL_GPL(migrate_swap);
 
 /*
  * wait_task_inactive - wait for a thread to unschedule.
@@ -3432,12 +3503,16 @@ EXPORT_SYMBOL_GPL(kick_process);
  * select_task_rq() below may allow selection of !active CPUs in order
  * to satisfy the above rules.
  */
-static int select_fallback_rq(int cpu, struct task_struct *p)
+int select_fallback_rq(int cpu, struct task_struct *p)
 {
 	int nid = cpu_to_node(cpu);
 	const struct cpumask *nodemask = NULL;
 	enum { cpuset, possible, fail } state = cpuset;
-	int dest_cpu;
+	int dest_cpu = -1;
+
+	trace_android_rvh_select_fallback_rq(cpu, p, &dest_cpu);
+	if (dest_cpu >= 0)
+		return dest_cpu;
 
 	/*
 	 * If the node that the CPU is on has been offlined, cpu_to_node()
@@ -3502,6 +3577,7 @@ static int select_fallback_rq(int cpu, struct task_struct *p)
 
 	return dest_cpu;
 }
+EXPORT_SYMBOL_GPL(select_fallback_rq);
 
 /*
  * The caller (fork, wakeup) owns p->pi_lock, ->cpus_ptr is stable.
@@ -3678,6 +3754,9 @@ ttwu_do_activate(struct rq *rq, struct task_struct *p, int wake_flags,
 {
 	int en_flags = ENQUEUE_WAKEUP | ENQUEUE_NOCLOCK;
 
+	if (wake_flags & WF_SYNC)
+		en_flags |= ENQUEUE_WAKEUP_SYNC;
+
 	lockdep_assert_rq_held(rq);
 
 	if (p->sched_contributes_to_load)
@@ -3819,6 +3898,7 @@ void wake_up_if_idle(int cpu)
 out:
 	rcu_read_unlock();
 }
+EXPORT_SYMBOL_GPL(wake_up_if_idle);
 
 bool cpus_share_cache(int this_cpu, int that_cpu)
 {
@@ -3870,7 +3950,12 @@ static inline bool ttwu_queue_cond(struct task_struct *p, int cpu)
 
 static bool ttwu_queue_wakelist(struct task_struct *p, int cpu, int wake_flags)
 {
-	if (sched_feat(TTWU_QUEUE) && ttwu_queue_cond(p, cpu)) {
+	bool cond = false;
+
+	trace_android_rvh_ttwu_cond(cpu, &cond);
+
+	if ((sched_feat(TTWU_QUEUE) && ttwu_queue_cond(p, cpu)) ||
+			cond) {
 		sched_clock_cpu(cpu); /* Sync clocks across CPUs */
 		__ttwu_queue_wakelist(p, cpu, wake_flags);
 		return true;
@@ -4138,6 +4223,9 @@ try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags)
 	if (READ_ONCE(p->on_rq) && ttwu_runnable(p, wake_flags))
 		goto unlock;
 
+	if (READ_ONCE(p->__state) & TASK_UNINTERRUPTIBLE)
+		trace_sched_blocked_reason(p);
+
 #ifdef CONFIG_SMP
 	/*
 	 * Ensure we load p->on_cpu _after_ p->on_rq, otherwise it would be
@@ -4206,6 +4294,8 @@ try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags)
 	 */
 	smp_cond_load_acquire(&p->on_cpu, !VAL);
 
+	trace_android_rvh_try_to_wake_up(p);
+
 	cpu = select_task_rq(p, p->wake_cpu, wake_flags | WF_TTWU);
 	if (task_cpu(p) != cpu) {
 		if (p->in_iowait) {
@@ -4225,8 +4315,10 @@ try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags)
 unlock:
 	raw_spin_unlock_irqrestore(&p->pi_lock, flags);
 out:
-	if (success)
+	if (success) {
+		trace_android_rvh_try_to_wake_up_success(p);
 		ttwu_stat(p, task_cpu(p), wake_flags);
+	}
 	preempt_enable();
 
 	return success;
@@ -4386,6 +4478,8 @@ static void __sched_fork(unsigned long clone_flags, struct task_struct *p)
 	p->se.cfs_rq			= NULL;
 #endif
 
+	trace_android_rvh_sched_fork_init(p);
+
 #ifdef CONFIG_SCHEDSTATS
 	/* Even if schedstat is disabled, there should not be garbage */
 	memset(&p->stats, 0, sizeof(p->stats));
@@ -4593,6 +4687,8 @@ late_initcall(sched_core_sysctl_init);
  */
 int sched_fork(unsigned long clone_flags, struct task_struct *p)
 {
+	trace_android_rvh_sched_fork(p);
+
 	__sched_fork(clone_flags, p);
 	/*
 	 * We mark the process as NEW here. This guarantees that
@@ -4605,6 +4701,7 @@ int sched_fork(unsigned long clone_flags, struct task_struct *p)
 	 * Make sure we do not leak PI boosting priority to the child.
 	 */
 	p->prio = current->normal_prio;
+	trace_android_rvh_prepare_prio_fork(p);
 
 	uclamp_fork(p);
 
@@ -4637,6 +4734,7 @@ int sched_fork(unsigned long clone_flags, struct task_struct *p)
 		p->sched_class = &fair_sched_class;
 
 	init_entity_runnable_average(&p->se);
+	trace_android_rvh_finish_prio_fork(p);
 
 
 #ifdef CONFIG_SCHED_INFO
@@ -4716,6 +4814,8 @@ void wake_up_new_task(struct task_struct *p)
 	struct rq_flags rf;
 	struct rq *rq;
 
+	trace_android_rvh_wake_up_new_task(p);
+
 	raw_spin_lock_irqsave(&p->pi_lock, rf.flags);
 	WRITE_ONCE(p->__state, TASK_RUNNING);
 #ifdef CONFIG_SMP
@@ -4734,6 +4834,7 @@ void wake_up_new_task(struct task_struct *p)
 	rq = __task_rq_lock(p, &rf);
 	update_rq_clock(rq);
 	post_init_entity_util_avg(p);
+	trace_android_rvh_new_task_stats(p);
 
 	activate_task(rq, p, ENQUEUE_NOCLOCK);
 	trace_sched_wakeup_new(p);
@@ -4907,6 +5008,7 @@ struct balance_callback balance_push_callback = {
 	.next = NULL,
 	.func = balance_push,
 };
+EXPORT_SYMBOL_GPL(balance_push_callback);
 
 static inline struct balance_callback *
 __splice_balance_callbacks(struct rq *rq, bool split)
@@ -4938,10 +5040,11 @@ static inline struct balance_callback *splice_balance_callbacks(struct rq *rq)
 	return __splice_balance_callbacks(rq, true);
 }
 
-static void __balance_callbacks(struct rq *rq)
+void __balance_callbacks(struct rq *rq)
 {
 	do_balance_callbacks(rq, __splice_balance_callbacks(rq, false));
 }
+EXPORT_SYMBOL_GPL(__balance_callbacks);
 
 static inline void balance_callbacks(struct rq *rq, struct balance_callback *head)
 {
@@ -5148,6 +5251,8 @@ static struct rq *finish_task_switch(struct task_struct *prev)
 		if (prev->sched_class->task_dead)
 			prev->sched_class->task_dead(prev);
 
+		trace_android_rvh_flush_task(prev);
+
 		/* Task is done with its stack. */
 		put_task_stack(prev);
 
@@ -5353,6 +5458,11 @@ void sched_exec(void)
 	struct task_struct *p = current;
 	unsigned long flags;
 	int dest_cpu;
+	bool cond = false;
+
+	trace_android_rvh_sched_exec(&cond);
+	if (cond)
+		return;
 
 	raw_spin_lock_irqsave(&p->pi_lock, flags);
 	dest_cpu = p->sched_class->select_task_rq(p, task_cpu(p), WF_EXEC);
@@ -5509,6 +5619,8 @@ void scheduler_tick(void)
 	rq_lock(rq, &rf);
 
 	update_rq_clock(rq);
+	trace_android_rvh_tick_entry(rq);
+
 	thermal_pressure = arch_scale_thermal_pressure(cpu_of(rq));
 	update_thermal_load_avg(rq_clock_thermal(rq), rq, thermal_pressure);
 	curr->sched_class->task_tick(rq, curr, 0);
@@ -5528,6 +5640,8 @@ void scheduler_tick(void)
 	rq->idle_balance = idle_cpu(cpu);
 	trigger_load_balance(rq);
 #endif
+
+	trace_android_vh_scheduler_tick(rq);
 }
 
 #ifdef CONFIG_NO_HZ_FULL
@@ -5783,6 +5897,8 @@ static noinline void __schedule_bug(struct task_struct *prev)
 	}
 	check_panic_on_warn("scheduling while atomic");
 
+	trace_android_rvh_schedule_bug(prev);
+
 	dump_stack();
 	add_taint(TAINT_WARN, LOCKDEP_STILL_OK);
 }
@@ -6522,6 +6638,7 @@ static void __sched notrace __schedule(unsigned int sched_mode)
 	rq->last_seen_need_resched_ns = 0;
 #endif
 
+	trace_android_rvh_schedule(sched_mode, prev, next, rq);
 	if (likely(prev != next)) {
 		rq->nr_switches++;
 		/*
@@ -6874,7 +6991,7 @@ asmlinkage __visible void __sched preempt_schedule_irq(void)
 int default_wake_function(wait_queue_entry_t *curr, unsigned mode, int wake_flags,
 			  void *key)
 {
-	WARN_ON_ONCE(IS_ENABLED(CONFIG_SCHED_DEBUG) && wake_flags & ~WF_SYNC);
+	WARN_ON_ONCE(IS_ENABLED(CONFIG_SCHED_DEBUG) && wake_flags & ~(WF_SYNC | WF_ANDROID_VENDOR));
 	return try_to_wake_up(curr->private, mode, wake_flags);
 }
 EXPORT_SYMBOL(default_wake_function);
@@ -6927,6 +7044,7 @@ void rt_mutex_setprio(struct task_struct *p, struct task_struct *pi_task)
 	struct rq_flags rf;
 	struct rq *rq;
 
+	trace_android_rvh_rtmutex_prepare_setprio(p, pi_task);
 	/* XXX used to be waiter->prio, not waiter->task->prio */
 	prio = __rt_effective_prio(pi_task, p->normal_prio);
 
@@ -7045,12 +7163,13 @@ static inline int rt_effective_prio(struct task_struct *p, int prio)
 
 void set_user_nice(struct task_struct *p, long nice)
 {
-	bool queued, running;
+	bool queued, running, allowed = false;
 	int old_prio;
 	struct rq_flags rf;
 	struct rq *rq;
 
-	if (task_nice(p) == nice || nice < MIN_NICE || nice > MAX_NICE)
+	trace_android_rvh_set_user_nice(p, &nice, &allowed);
+	if ((task_nice(p) == nice || nice < MIN_NICE || nice > MAX_NICE) && !allowed)
 		return;
 	/*
 	 * We have to be careful, if called from sys_setpriority(),
@@ -7215,6 +7334,7 @@ int available_idle_cpu(int cpu)
 
 	return 1;
 }
+EXPORT_SYMBOL_GPL(available_idle_cpu);
 
 /**
  * idle_task - return the idle task for a given CPU.
@@ -7254,9 +7374,14 @@ unsigned long effective_cpu_util(int cpu, unsigned long util_cfs,
 {
 	unsigned long dl_util, util, irq, max;
 	struct rq *rq = cpu_rq(cpu);
+	unsigned long new_util = ULONG_MAX;
 
 	max = arch_scale_cpu_capacity(cpu);
 
+	trace_android_rvh_effective_cpu_util(cpu, util_cfs, max, type, p, &new_util);
+	if (new_util != ULONG_MAX)
+		return new_util;
+
 	if (!uclamp_is_used() &&
 	    type == FREQUENCY_UTIL && rt_rq_is_runnable(&rq->rt)) {
 		return max;
@@ -7524,9 +7649,6 @@ static int __sched_setscheduler(struct task_struct *p,
 			return retval;
 	}
 
-	if (pi)
-		cpuset_read_lock();
-
 	/*
 	 * Make sure no PI-waiters arrive (or leave) while we are
 	 * changing the priority of the task:
@@ -7601,8 +7723,6 @@ static int __sched_setscheduler(struct task_struct *p,
 	if (unlikely(oldpolicy != -1 && oldpolicy != p->policy)) {
 		policy = oldpolicy = -1;
 		task_rq_unlock(rq, p, &rf);
-		if (pi)
-			cpuset_read_unlock();
 		goto recheck;
 	}
 
@@ -7668,10 +7788,8 @@ static int __sched_setscheduler(struct task_struct *p,
 	head = splice_balance_callbacks(rq);
 	task_rq_unlock(rq, p, &rf);
 
-	if (pi) {
-		cpuset_read_unlock();
+	if (pi)
 		rt_mutex_adjust_pi(p);
-	}
 
 	/* Run balance callbacks after we've adjusted the PI chain: */
 	balance_callbacks(rq, head);
@@ -7681,8 +7799,6 @@ static int __sched_setscheduler(struct task_struct *p,
 
 unlock:
 	task_rq_unlock(rq, p, &rf);
-	if (pi)
-		cpuset_read_unlock();
 	return retval;
 }
 
@@ -7721,11 +7837,13 @@ int sched_setscheduler(struct task_struct *p, int policy,
 {
 	return _sched_setscheduler(p, policy, param, true);
 }
+EXPORT_SYMBOL_GPL(sched_setscheduler);
 
 int sched_setattr(struct task_struct *p, const struct sched_attr *attr)
 {
 	return __sched_setscheduler(p, attr, true, true);
 }
+EXPORT_SYMBOL_GPL(sched_setattr);
 
 int sched_setattr_nocheck(struct task_struct *p, const struct sched_attr *attr)
 {
@@ -7751,6 +7869,7 @@ int sched_setscheduler_nocheck(struct task_struct *p, int policy,
 {
 	return _sched_setscheduler(p, policy, param, false);
 }
+EXPORT_SYMBOL_GPL(sched_setscheduler_nocheck);
 
 /*
  * SCHED_FIFO is a broken scheduler model; that is, it is fundamentally
@@ -7812,14 +7931,9 @@ do_sched_setscheduler(pid_t pid, int policy, struct sched_param __user *param)
 	rcu_read_lock();
 	retval = -ESRCH;
 	p = find_process_by_pid(pid);
-	if (likely(p))
-		get_task_struct(p);
-	rcu_read_unlock();
-
-	if (likely(p)) {
+	if (p != NULL)
 		retval = sched_setscheduler(p, policy, &lparam);
-		put_task_struct(p);
-	}
+	rcu_read_unlock();
 
 	return retval;
 }
@@ -8183,7 +8297,8 @@ __sched_setaffinity(struct task_struct *p, const struct cpumask *mask)
 long sched_setaffinity(pid_t pid, const struct cpumask *in_mask)
 {
 	struct task_struct *p;
-	int retval;
+	int retval = 0;
+	bool skip = false;
 
 	rcu_read_lock();
 
@@ -8212,11 +8327,16 @@ long sched_setaffinity(pid_t pid, const struct cpumask *in_mask)
 		rcu_read_unlock();
 	}
 
+	trace_android_vh_sched_setaffinity_early(p, in_mask, &skip);
+	if (skip)
+		goto out_put_task;
 	retval = security_task_setscheduler(p);
 	if (retval)
 		goto out_put_task;
 
 	retval = __sched_setaffinity(p, in_mask);
+	trace_android_rvh_sched_setaffinity(p, in_mask, &retval);
+
 out_put_task:
 	put_task_struct(p);
 	return retval;
@@ -8276,6 +8396,7 @@ long sched_getaffinity(pid_t pid, struct cpumask *mask)
 
 	raw_spin_lock_irqsave(&p->pi_lock, flags);
 	cpumask_and(mask, &p->cpus_mask, cpu_active_mask);
+	trace_android_rvh_sched_getaffinity(p, mask);
 	raw_spin_unlock_irqrestore(&p->pi_lock, flags);
 
 out_unlock:
@@ -8331,6 +8452,8 @@ static void do_sched_yield(void)
 	schedstat_inc(rq->yld_count);
 	current->sched_class->yield_task(rq);
 
+	trace_android_rvh_do_sched_yield(rq);
+
 	preempt_disable();
 	rq_unlock_irq(rq, &rf);
 	sched_preempt_enable_no_resched();
@@ -8927,6 +9050,7 @@ void sched_show_task(struct task_struct *p)
 
 	print_worker_info(KERN_INFO, p);
 	print_stop_info(KERN_INFO, p);
+	trace_android_vh_sched_show_task(p);
 	show_stack(p, NULL, KERN_INFO);
 	put_task_stack(p);
 }
@@ -9177,6 +9301,24 @@ void idle_task_exit(void)
 	/* finish_cpu(), as ran on the BP, will clean up the active_mm state */
 }
 
+struct task_struct *pick_migrate_task(struct rq *rq)
+{
+	const struct sched_class *class;
+	struct task_struct *next;
+
+	for_each_class(class) {
+		next = class->pick_next_task(rq);
+		if (next) {
+			next->sched_class->put_prev_task(rq, next);
+			return next;
+		}
+	}
+
+	/* The idle class should always have a runnable task */
+	BUG();
+}
+EXPORT_SYMBOL_GPL(pick_migrate_task);
+
 static int __balance_push_cpu_stop(void *arg)
 {
 	struct task_struct *p = arg;
@@ -9522,6 +9664,7 @@ int sched_cpu_starting(unsigned int cpu)
 	sched_core_cpu_starting(cpu);
 	sched_rq_cpu_starting(cpu);
 	sched_tick_start(cpu);
+	trace_android_rvh_sched_cpu_starting(cpu);
 	return 0;
 }
 
@@ -9595,6 +9738,8 @@ int sched_cpu_dying(unsigned int cpu)
 	}
 	rq_unlock_irqrestore(rq, &rf);
 
+	trace_android_rvh_sched_cpu_dying(cpu);
+
 	calc_load_migrate(rq);
 	update_max_interval();
 	hrtick_clear(rq);
@@ -9655,7 +9800,9 @@ int in_sched_functions(unsigned long addr)
  * Every task in system belongs to this group at bootup.
  */
 struct task_group root_task_group;
+EXPORT_SYMBOL_GPL(root_task_group);
 LIST_HEAD(task_groups);
+EXPORT_SYMBOL_GPL(task_groups);
 
 /* Cacheline aligned slab cache for task_group */
 static struct kmem_cache *task_group_cache __read_mostly;
@@ -9938,6 +10085,8 @@ void __might_resched(const char *file, int line, unsigned int offsets)
 	print_preempt_disable_ip(offsets & MIGHT_RESCHED_PREEMPT_MASK,
 				 preempt_disable_ip);
 
+	trace_android_rvh_schedule_bug(NULL);
+
 	dump_stack();
 	add_taint(TAINT_WARN, LOCKDEP_STILL_OK);
 }
@@ -10317,6 +10466,7 @@ static int cpu_cgroup_css_online(struct cgroup_subsys_state *css)
 	mutex_unlock(&uclamp_mutex);
 #endif
 
+	trace_android_rvh_cpu_cgroup_online(css);
 	return 0;
 }
 
@@ -10358,6 +10508,8 @@ static void cpu_cgroup_attach(struct cgroup_taskset *tset)
 
 	cgroup_taskset_for_each(task, css, tset)
 		sched_move_task(task);
+
+	trace_android_rvh_cpu_cgroup_attach(tset);
 }
 
 #ifdef CONFIG_UCLAMP_TASK_GROUP
@@ -10535,6 +10687,27 @@ static int cpu_uclamp_max_show(struct seq_file *sf, void *v)
 	cpu_uclamp_print(sf, UCLAMP_MAX);
 	return 0;
 }
+
+static int cpu_uclamp_ls_write_u64(struct cgroup_subsys_state *css,
+				   struct cftype *cftype, u64 ls)
+{
+	struct task_group *tg;
+
+	if (ls > 1)
+		return -EINVAL;
+	tg = css_tg(css);
+	tg->latency_sensitive = (unsigned int) ls;
+
+	return 0;
+}
+
+static u64 cpu_uclamp_ls_read_u64(struct cgroup_subsys_state *css,
+				  struct cftype *cft)
+{
+	struct task_group *tg = css_tg(css);
+
+	return (u64) tg->latency_sensitive;
+}
 #endif /* CONFIG_UCLAMP_TASK_GROUP */
 
 #ifdef CONFIG_FAIR_GROUP_SCHED
@@ -10977,6 +11150,12 @@ static struct cftype cpu_legacy_files[] = {
 		.seq_show = cpu_uclamp_max_show,
 		.write = cpu_uclamp_max_write,
 	},
+	{
+		.name = "uclamp.latency_sensitive",
+		.flags = CFTYPE_NOT_ON_ROOT,
+		.read_u64 = cpu_uclamp_ls_read_u64,
+		.write_u64 = cpu_uclamp_ls_write_u64,
+	},
 #endif
 	{ }	/* Terminate */
 };
@@ -11175,6 +11354,12 @@ static struct cftype cpu_files[] = {
 		.seq_show = cpu_uclamp_max_show,
 		.write = cpu_uclamp_max_write,
 	},
+	{
+		.name = "uclamp.latency_sensitive",
+		.flags = CFTYPE_NOT_ON_ROOT,
+		.read_u64 = cpu_uclamp_ls_read_u64,
+		.write_u64 = cpu_uclamp_ls_write_u64,
+	},
 #endif
 	{ }	/* terminate */
 };
diff --git a/kernel/sched/cpufreq.c b/kernel/sched/cpufreq.c
index 5252fb1..29e4e0d 100644
--- a/kernel/sched/cpufreq.c
+++ b/kernel/sched/cpufreq.c
@@ -7,6 +7,7 @@
  */
 
 DEFINE_PER_CPU(struct update_util_data __rcu *, cpufreq_update_util_data);
+EXPORT_PER_CPU_SYMBOL_GPL(cpufreq_update_util_data);
 
 /**
  * cpufreq_add_update_util_hook - Populate the CPU's update_util_data pointer.
@@ -72,3 +73,4 @@ bool cpufreq_this_cpu_can_update(struct cpufreq_policy *policy)
 		(policy->dvfs_possible_from_any_cpu &&
 		 rcu_dereference_sched(*this_cpu_ptr(&cpufreq_update_util_data)));
 }
+EXPORT_SYMBOL_GPL(cpufreq_this_cpu_can_update);
diff --git a/kernel/sched/cpufreq_schedutil.c b/kernel/sched/cpufreq_schedutil.c
index 1207c78..042e5ad 100644
--- a/kernel/sched/cpufreq_schedutil.c
+++ b/kernel/sched/cpufreq_schedutil.c
@@ -6,6 +6,8 @@
  * Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
  */
 
+#include <trace/hooks/sched.h>
+
 #define IOWAIT_BOOST_MIN	(SCHED_CAPACITY_SCALE / 8)
 
 struct sugov_tunables {
@@ -143,9 +145,15 @@ static unsigned int get_next_freq(struct sugov_policy *sg_policy,
 	struct cpufreq_policy *policy = sg_policy->policy;
 	unsigned int freq = arch_scale_freq_invariant() ?
 				policy->cpuinfo.max_freq : policy->cur;
+	unsigned long next_freq = 0;
 
 	util = map_util_perf(util);
-	freq = map_util_freq(util, freq, max);
+	trace_android_vh_map_util_freq(util, freq, max, &next_freq, policy,
+			&sg_policy->need_freq_update);
+	if (next_freq)
+		freq = next_freq;
+	else
+		freq = map_util_freq(util, freq, max);
 
 	if (freq == sg_policy->cached_raw_freq && !sg_policy->need_freq_update)
 		return sg_policy->next_freq;
@@ -834,29 +842,3 @@ struct cpufreq_governor *cpufreq_default_governor(void)
 #endif
 
 cpufreq_governor_init(schedutil_gov);
-
-#ifdef CONFIG_ENERGY_MODEL
-static void rebuild_sd_workfn(struct work_struct *work)
-{
-	rebuild_sched_domains_energy();
-}
-static DECLARE_WORK(rebuild_sd_work, rebuild_sd_workfn);
-
-/*
- * EAS shouldn't be attempted without sugov, so rebuild the sched_domains
- * on governor changes to make sure the scheduler knows about it.
- */
-void sched_cpufreq_governor_change(struct cpufreq_policy *policy,
-				  struct cpufreq_governor *old_gov)
-{
-	if (old_gov == &schedutil_gov || policy->governor == &schedutil_gov) {
-		/*
-		 * When called from the cpufreq_register_driver() path, the
-		 * cpu_hotplug_lock is already held, so use a work item to
-		 * avoid nested locking in rebuild_sched_domains().
-		 */
-		schedule_work(&rebuild_sd_work);
-	}
-
-}
-#endif
diff --git a/kernel/sched/cpupri.c b/kernel/sched/cpupri.c
index a286e72..64e0cce 100644
--- a/kernel/sched/cpupri.c
+++ b/kernel/sched/cpupri.c
@@ -195,6 +195,7 @@ int cpupri_find_fitness(struct cpupri *cp, struct task_struct *p,
 
 	return 0;
 }
+EXPORT_SYMBOL_GPL(cpupri_find_fitness);
 
 /**
  * cpupri_set - update the CPU priority setting
diff --git a/kernel/sched/cputime.c b/kernel/sched/cputime.c
index 95fc778..5c15ed0 100644
--- a/kernel/sched/cputime.c
+++ b/kernel/sched/cputime.c
@@ -2,6 +2,8 @@
 /*
  * Simple CPU accounting cgroup controller
  */
+#include <linux/cpufreq_times.h>
+#include <trace/hooks/sched.h>
 
 #ifdef CONFIG_IRQ_TIME_ACCOUNTING
 
@@ -17,6 +19,7 @@
  * compromise in place of having locks on each irq in account_system_time.
  */
 DEFINE_PER_CPU(struct irqtime, cpu_irqtime);
+EXPORT_PER_CPU_SYMBOL_GPL(cpu_irqtime);
 
 static int sched_clock_irqtime;
 
@@ -52,6 +55,7 @@ void irqtime_account_irq(struct task_struct *curr, unsigned int offset)
 	unsigned int pc;
 	s64 delta;
 	int cpu;
+	bool irq_start = true;
 
 	if (!sched_clock_irqtime)
 		return;
@@ -67,10 +71,15 @@ void irqtime_account_irq(struct task_struct *curr, unsigned int offset)
 	 * in that case, so as not to confuse scheduler with a special task
 	 * that do not consume any time, but still wants to run.
 	 */
-	if (pc & HARDIRQ_MASK)
+	if (pc & HARDIRQ_MASK) {
 		irqtime_account_delta(irqtime, delta, CPUTIME_IRQ);
-	else if ((pc & SOFTIRQ_OFFSET) && curr != this_cpu_ksoftirqd())
+		irq_start = false;
+	} else if ((pc & SOFTIRQ_OFFSET) && curr != this_cpu_ksoftirqd()) {
 		irqtime_account_delta(irqtime, delta, CPUTIME_SOFTIRQ);
+		irq_start = false;
+	}
+
+	trace_android_rvh_account_irq(curr, cpu, delta, irq_start);
 }
 
 static u64 irqtime_tick_accounted(u64 maxtime)
@@ -129,6 +138,9 @@ void account_user_time(struct task_struct *p, u64 cputime)
 
 	/* Account for user time used */
 	acct_account_cputime(p);
+
+	/* Account power usage for user time */
+	cpufreq_acct_update_power(p, cputime);
 }
 
 /*
@@ -173,6 +185,9 @@ void account_system_index_time(struct task_struct *p,
 
 	/* Account for system time used */
 	acct_account_cputime(p);
+
+	/* Account power usage for system time */
+	cpufreq_acct_update_power(p, cputime);
 }
 
 /*
@@ -403,6 +418,7 @@ static void irqtime_account_process_tick(struct task_struct *p, int user_tick,
 	} else {
 		account_system_index_time(p, cputime, CPUTIME_SYSTEM);
 	}
+	trace_android_vh_irqtime_account_process_tick(p, this_rq(), user_tick, ticks);
 }
 
 static void irqtime_account_idle_ticks(int ticks)
@@ -472,27 +488,34 @@ void thread_group_cputime_adjusted(struct task_struct *p, u64 *ut, u64 *st)
 	*ut = cputime.utime;
 	*st = cputime.stime;
 }
+EXPORT_SYMBOL_GPL(thread_group_cputime_adjusted);
 
 #else /* !CONFIG_VIRT_CPU_ACCOUNTING_NATIVE: */
 
 /*
- * Account a single tick of CPU time.
+ * Account a single tick or a few ticks of CPU time.
  * @p: the process that the CPU time gets accounted to
  * @user_tick: indicates if the tick is a user or a system tick
  */
 void account_process_tick(struct task_struct *p, int user_tick)
 {
 	u64 cputime, steal;
+	int ticks = 1;
+
+	trace_android_vh_account_process_tick_gran(user_tick, &ticks);
+	if (!ticks)
+		return;
 
 	if (vtime_accounting_enabled_this_cpu())
 		return;
+	trace_android_vh_account_task_time(p, this_rq(), user_tick, ticks);
 
 	if (sched_clock_irqtime) {
-		irqtime_account_process_tick(p, user_tick, 1);
+		irqtime_account_process_tick(p, user_tick, ticks);
 		return;
 	}
 
-	cputime = TICK_NSEC;
+	cputime = TICK_NSEC * ticks;
 	steal = steal_account_process_time(ULONG_MAX);
 
 	if (steal >= cputime)
@@ -642,6 +665,8 @@ void thread_group_cputime_adjusted(struct task_struct *p, u64 *ut, u64 *st)
 	thread_group_cputime(p, &cputime);
 	cputime_adjust(&cputime, &p->signal->prev_cputime, ut, st);
 }
+EXPORT_SYMBOL_GPL(thread_group_cputime_adjusted);
+
 #endif /* !CONFIG_VIRT_CPU_ACCOUNTING_NATIVE */
 
 #ifdef CONFIG_VIRT_CPU_ACCOUNTING_GEN
diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c
index 1637b65..3ceee0e 100644
--- a/kernel/sched/debug.c
+++ b/kernel/sched/debug.c
@@ -47,9 +47,10 @@ static unsigned long nsec_low(unsigned long long nsec)
 #define SCHED_FEAT(name, enabled)	\
 	#name ,
 
-static const char * const sched_feat_names[] = {
+const char * const sched_feat_names[] = {
 #include "features.h"
 };
+EXPORT_SYMBOL_GPL(sched_feat_names);
 
 #undef SCHED_FEAT
 
@@ -78,6 +79,7 @@ static int sched_feat_show(struct seq_file *m, void *v)
 struct static_key sched_feat_keys[__SCHED_FEAT_NR] = {
 #include "features.h"
 };
+EXPORT_SYMBOL_GPL(sched_feat_keys);
 
 #undef SCHED_FEAT
 
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index fa33c44..cfce493 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -56,6 +56,10 @@
 #include "stats.h"
 #include "autogroup.h"
 
+#include <trace/hooks/sched.h>
+
+EXPORT_TRACEPOINT_SYMBOL_GPL(sched_stat_runtime);
+
 /*
  * Targeted preemption latency for CPU-bound tasks:
  *
@@ -70,6 +74,7 @@
  * (default: 6ms * (1 + ilog(ncpus)), units: nanoseconds)
  */
 unsigned int sysctl_sched_latency			= 6000000ULL;
+EXPORT_SYMBOL_GPL(sysctl_sched_latency);
 static unsigned int normalized_sysctl_sched_latency	= 6000000ULL;
 
 /*
@@ -627,11 +632,13 @@ static inline bool __entity_less(struct rb_node *a, const struct rb_node *b)
  */
 static void __enqueue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se)
 {
+	trace_android_rvh_enqueue_entity(cfs_rq, se);
 	rb_add_cached(&se->run_node, &cfs_rq->tasks_timeline, __entity_less);
 }
 
 static void __dequeue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se)
 {
+	trace_android_rvh_dequeue_entity(cfs_rq, se);
 	rb_erase_cached(&se->run_node, &cfs_rq->tasks_timeline);
 }
 
@@ -862,6 +869,9 @@ void post_init_entity_util_avg(struct task_struct *p)
 	}
 
 	sa->runnable_avg = sa->util_avg;
+
+	/* Hook before this se's util is attached to cfs_rq's util */
+	trace_android_rvh_post_init_entity_util_avg(se);
 }
 
 #else /* !CONFIG_SMP */
@@ -4348,6 +4358,11 @@ static inline void util_est_update(struct cfs_rq *cfs_rq,
 {
 	long last_ewma_diff, last_enqueued_diff;
 	struct util_est ue;
+	int ret = 0;
+
+	trace_android_rvh_util_est_update(cfs_rq, p, task_sleep, &ret);
+	if (ret)
+		return;
 
 	if (!sched_feat(UTIL_EST))
 		return;
@@ -4565,7 +4580,10 @@ static inline int task_fits_cpu(struct task_struct *p, int cpu)
 
 static inline void update_misfit_status(struct task_struct *p, struct rq *rq)
 {
-	if (!sched_asym_cpucap_active())
+	bool need_update = true;
+
+	trace_android_rvh_update_misfit_status(p, rq, &need_update);
+	if (!sched_asym_cpucap_active() || !need_update)
 		return;
 
 	if (!p || p->nr_cpus_allowed == 1) {
@@ -4696,6 +4714,7 @@ place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int initial)
 		vruntime -= thresh;
 	}
 
+	trace_android_rvh_place_entity(cfs_rq, se, initial, &vruntime);
 	/*
 	 * Pull vruntime of the entity being placed to the base level of
 	 * cfs_rq, to prevent boosting it if placed backwards.
@@ -4930,9 +4949,14 @@ check_preempt_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr)
 	unsigned long ideal_runtime, delta_exec;
 	struct sched_entity *se;
 	s64 delta;
+	bool skip_preempt = false;
 
 	ideal_runtime = sched_slice(cfs_rq, curr);
 	delta_exec = curr->sum_exec_runtime - curr->prev_sum_exec_runtime;
+	trace_android_rvh_check_preempt_tick(current, &ideal_runtime, &skip_preempt,
+			delta_exec, cfs_rq, curr, sysctl_sched_min_granularity);
+	if (skip_preempt)
+		return;
 	if (delta_exec > ideal_runtime) {
 		resched_curr(rq_of(cfs_rq));
 		/*
@@ -4961,8 +4985,7 @@ check_preempt_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr)
 		resched_curr(rq_of(cfs_rq));
 }
 
-static void
-set_next_entity(struct cfs_rq *cfs_rq, struct sched_entity *se)
+void set_next_entity(struct cfs_rq *cfs_rq, struct sched_entity *se)
 {
 	clear_buddies(cfs_rq, se);
 
@@ -4998,6 +5021,7 @@ set_next_entity(struct cfs_rq *cfs_rq, struct sched_entity *se)
 
 	se->prev_sum_exec_runtime = se->sum_exec_runtime;
 }
+EXPORT_SYMBOL_GPL(set_next_entity);
 
 static int
 wakeup_preempt_entity(struct sched_entity *curr, struct sched_entity *se);
@@ -5013,7 +5037,11 @@ static struct sched_entity *
 pick_next_entity(struct cfs_rq *cfs_rq, struct sched_entity *curr)
 {
 	struct sched_entity *left = __pick_first_entity(cfs_rq);
-	struct sched_entity *se;
+	struct sched_entity *se = NULL;
+
+	trace_android_rvh_pick_next_entity(cfs_rq, curr, &se);
+	if (se)
+		goto done;
 
 	/*
 	 * If curr is set we have to see if its left of the leftmost entity
@@ -5055,6 +5083,7 @@ pick_next_entity(struct cfs_rq *cfs_rq, struct sched_entity *curr)
 		se = cfs_rq->last;
 	}
 
+done:
 	return se;
 }
 
@@ -5117,6 +5146,7 @@ entity_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr, int queued)
 
 	if (cfs_rq->nr_running > 1)
 		check_preempt_tick(cfs_rq, curr);
+	trace_android_rvh_entity_tick(cfs_rq, curr);
 }
 
 
@@ -6042,6 +6072,11 @@ static inline bool cpu_overutilized(int cpu)
 {
 	unsigned long rq_util_min = uclamp_rq_get(cpu_rq(cpu), UCLAMP_MIN);
 	unsigned long rq_util_max = uclamp_rq_get(cpu_rq(cpu), UCLAMP_MAX);
+	int overutilized = -1;
+
+	trace_android_rvh_cpu_overutilized(cpu, &overutilized);
+	if (overutilized != -1)
+		return overutilized;
 
 	return !util_fits_cpu(cpu_util_cfs(cpu), rq_util_min, rq_util_max, cpu);
 }
@@ -6130,6 +6165,7 @@ enqueue_task_fair(struct rq *rq, struct task_struct *p, int flags)
 		flags = ENQUEUE_WAKEUP;
 	}
 
+	trace_android_rvh_enqueue_task_fair(rq, p, flags);
 	for_each_sched_entity(se) {
 		cfs_rq = cfs_rq_of(se);
 
@@ -6220,6 +6256,7 @@ static void dequeue_task_fair(struct rq *rq, struct task_struct *p, int flags)
 		flags |= DEQUEUE_SLEEP;
 	}
 
+	trace_android_rvh_dequeue_task_fair(rq, p, flags);
 	for_each_sched_entity(se) {
 		cfs_rq = cfs_rq_of(se);
 
@@ -7228,7 +7265,7 @@ compute_energy(struct energy_env *eenv, struct perf_domain *pd,
  * other use-cases too. So, until someone finds a better way to solve this,
  * let's keep things simple by re-using the existing slow path.
  */
-static int find_energy_efficient_cpu(struct task_struct *p, int prev_cpu)
+static int find_energy_efficient_cpu(struct task_struct *p, int prev_cpu, int sync)
 {
 	struct cpumask *cpus = this_cpu_cpumask_var_ptr(select_rq_mask);
 	unsigned long prev_delta = ULONG_MAX, best_delta = ULONG_MAX;
@@ -7239,12 +7276,27 @@ static int find_energy_efficient_cpu(struct task_struct *p, int prev_cpu)
 	struct sched_domain *sd;
 	struct perf_domain *pd;
 	struct energy_env eenv;
+	int new_cpu = INT_MAX;
+
+	trace_android_rvh_find_energy_efficient_cpu(p, prev_cpu, sync, &new_cpu);
+	if (new_cpu != INT_MAX)
+		return new_cpu;
+
+	sync_entity_load_avg(&p->se);
 
 	rcu_read_lock();
 	pd = rcu_dereference(rd->pd);
 	if (!pd || READ_ONCE(rd->overutilized))
 		goto unlock;
 
+	cpu = smp_processor_id();
+	if (sync && cpu_rq(cpu)->nr_running == 1 &&
+	    cpumask_test_cpu(cpu, p->cpus_ptr) &&
+	    task_fits_cpu(p, cpu)) {
+		rcu_read_unlock();
+		return cpu;
+	}
+
 	/*
 	 * Energy-aware wake-up happens on the lowest sched_domain starting
 	 * from sd_asym_cpucapacity spanning over this_cpu and prev_cpu.
@@ -7257,7 +7309,6 @@ static int find_energy_efficient_cpu(struct task_struct *p, int prev_cpu)
 
 	target = prev_cpu;
 
-	sync_entity_load_avg(&p->se);
 	if (!uclamp_task_util(p, p_util_min, p_util_max))
 		goto unlock;
 
@@ -7402,9 +7453,18 @@ select_task_rq_fair(struct task_struct *p, int prev_cpu, int wake_flags)
 	int cpu = smp_processor_id();
 	int new_cpu = prev_cpu;
 	int want_affine = 0;
+	int target_cpu = -1;
 	/* SD_flags and WF_flags share the first nibble */
 	int sd_flag = wake_flags & 0xF;
 
+	if (trace_android_rvh_select_task_rq_fair_enabled() &&
+	    !(sd_flag & SD_BALANCE_FORK))
+		sync_entity_load_avg(&p->se);
+	trace_android_rvh_select_task_rq_fair(p, prev_cpu, sd_flag,
+			wake_flags, &target_cpu);
+	if (target_cpu >= 0)
+		return target_cpu;
+
 	/*
 	 * required for stable ->cpus_allowed
 	 */
@@ -7413,7 +7473,7 @@ select_task_rq_fair(struct task_struct *p, int prev_cpu, int wake_flags)
 		record_wakee(p);
 
 		if (sched_energy_enabled()) {
-			new_cpu = find_energy_efficient_cpu(p, prev_cpu);
+			new_cpu = find_energy_efficient_cpu(p, prev_cpu, sync);
 			if (new_cpu >= 0)
 				return new_cpu;
 			new_cpu = prev_cpu;
@@ -7606,9 +7666,14 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_
 	int scale = cfs_rq->nr_running >= sched_nr_latency;
 	int next_buddy_marked = 0;
 	int cse_is_idle, pse_is_idle;
+	bool ignore = false;
+	bool preempt = false;
 
 	if (unlikely(se == pse))
 		return;
+	trace_android_rvh_check_preempt_wakeup_ignore(curr, &ignore);
+	if (ignore)
+		return;
 
 	/*
 	 * This is possible from callers such as attach_tasks(), in which we
@@ -7665,6 +7730,13 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_
 		return;
 
 	update_curr(cfs_rq_of(se));
+	trace_android_rvh_check_preempt_wakeup(rq, p, &preempt, &ignore,
+			wake_flags, se, pse, next_buddy_marked, sysctl_sched_wakeup_granularity);
+	if (preempt)
+		goto preempt;
+	if (ignore)
+		return;
+
 	if (wakeup_preempt_entity(se, pse) == 1) {
 		/*
 		 * Bias pick_next to pick the sched entity that is
@@ -7732,9 +7804,10 @@ struct task_struct *
 pick_next_task_fair(struct rq *rq, struct task_struct *prev, struct rq_flags *rf)
 {
 	struct cfs_rq *cfs_rq = &rq->cfs;
-	struct sched_entity *se;
-	struct task_struct *p;
+	struct sched_entity *se = NULL;
+	struct task_struct *p = NULL;
 	int new_tasks;
+	bool repick = false;
 
 again:
 	if (!sched_fair_runnable(rq))
@@ -7788,7 +7861,7 @@ pick_next_task_fair(struct rq *rq, struct task_struct *prev, struct rq_flags *rf
 	} while (cfs_rq);
 
 	p = task_of(se);
-
+	trace_android_rvh_replace_next_task_fair(rq, &p, &se, &repick, false, prev);
 	/*
 	 * Since we haven't yet done put_prev_entity and if the selected task
 	 * is a different task than we started out with, try and touch the
@@ -7821,6 +7894,10 @@ pick_next_task_fair(struct rq *rq, struct task_struct *prev, struct rq_flags *rf
 	if (prev)
 		put_prev_task(rq, prev);
 
+	trace_android_rvh_replace_next_task_fair(rq, &p, &se, &repick, true, prev);
+	if (repick)
+		goto done;
+
 	do {
 		se = pick_next_entity(cfs_rq, NULL);
 		set_next_entity(cfs_rq, se);
@@ -8062,7 +8139,8 @@ static bool yield_to_task_fair(struct rq *rq, struct task_struct *p)
  *      rewrite all of this once again.]
  */
 
-static unsigned long __read_mostly max_load_balance_interval = HZ/10;
+unsigned long __read_mostly max_load_balance_interval = HZ/10;
+EXPORT_SYMBOL_GPL(max_load_balance_interval);
 
 enum fbq_type { regular, remote, all };
 
@@ -8142,6 +8220,7 @@ struct lb_env {
 	enum fbq_type		fbq_type;
 	enum migration_type	migration_type;
 	struct list_head	tasks;
+	struct rq_flags		*src_rq_rf;
 };
 
 /*
@@ -8256,9 +8335,14 @@ static
 int can_migrate_task(struct task_struct *p, struct lb_env *env)
 {
 	int tsk_cache_hot;
+	int can_migrate = 1;
 
 	lockdep_assert_rq_held(env->src_rq);
 
+	trace_android_rvh_can_migrate_task(p, env->dst_cpu, &can_migrate);
+	if (!can_migrate)
+		return 0;
+
 	/*
 	 * We do not migrate tasks that are:
 	 * 1) throttled_lb_pair, or
@@ -8346,8 +8430,20 @@ int can_migrate_task(struct task_struct *p, struct lb_env *env)
  */
 static void detach_task(struct task_struct *p, struct lb_env *env)
 {
+	int detached = 0;
+
 	lockdep_assert_rq_held(env->src_rq);
 
+	/*
+	 * The vendor hook may drop the lock temporarily, so
+	 * pass the rq flags to unpin lock. We expect the
+	 * rq lock to be held after return.
+	 */
+	trace_android_rvh_migrate_queued_task(env->src_rq, env->src_rq_rf, p,
+					      env->dst_cpu, &detached);
+	if (detached)
+		return;
+
 	deactivate_task(env->src_rq, p, DEQUEUE_NOCLOCK);
 	set_task_cpu(p, env->dst_cpu);
 }
@@ -8880,6 +8976,7 @@ static void update_cpu_capacity(struct sched_domain *sd, int cpu)
 	if (!capacity)
 		capacity = 1;
 
+	trace_android_rvh_update_cpu_capacity(cpu, &capacity);
 	rq->cpu_capacity = capacity;
 
 	/*
@@ -10185,8 +10282,12 @@ static struct sched_group *find_busiest_group(struct lb_env *env)
 
 	if (sched_energy_enabled()) {
 		struct root_domain *rd = env->dst_rq->rd;
+		int out_balance = 1;
 
-		if (rcu_dereference(rd->pd) && !READ_ONCE(rd->overutilized))
+		trace_android_rvh_find_busiest_group(sds.busiest, env->dst_rq,
+					&out_balance);
+		if (rcu_dereference(rd->pd) && !READ_ONCE(rd->overutilized)
+					&& out_balance)
 			goto out_balanced;
 	}
 
@@ -10305,7 +10406,12 @@ static struct rq *find_busiest_queue(struct lb_env *env,
 	struct rq *busiest = NULL, *rq;
 	unsigned long busiest_util = 0, busiest_load = 0, busiest_capacity = 1;
 	unsigned int busiest_nr = 0;
-	int i;
+	int i, done = 0;
+
+	trace_android_rvh_find_busiest_queue(env->dst_cpu, group, env->cpus,
+					     &busiest, &done);
+	if (done)
+		return busiest;
 
 	for_each_cpu_and(i, sched_group_span(group), env->cpus) {
 		unsigned long capacity, load, util;
@@ -10607,6 +10713,7 @@ static int load_balance(int this_cpu, struct rq *this_rq,
 
 more_balance:
 		rq_lock_irqsave(busiest, &rf);
+		env.src_rq_rf = &rf;
 		update_rq_clock(busiest);
 
 		/*
@@ -10902,6 +11009,7 @@ static int active_load_balance_cpu_stop(void *data)
 			.src_rq		= busiest_rq,
 			.idle		= CPU_IDLE,
 			.flags		= LBF_ACTIVE_LB,
+			.src_rq_rf	= &rf,
 		};
 
 		schedstat_inc(sd->alb_count);
@@ -10983,6 +11091,10 @@ static void rebalance_domains(struct rq *rq, enum cpu_idle_type idle)
 	int need_serialize, need_decay = 0;
 	u64 max_cost = 0;
 
+	trace_android_rvh_sched_rebalance_domains(rq, &continue_balancing);
+	if (!continue_balancing)
+		return;
+
 	rcu_read_lock();
 	for_each_domain(cpu, sd) {
 		/*
@@ -11069,9 +11181,13 @@ static inline int on_null_domain(struct rq *rq)
 
 static inline int find_new_ilb(void)
 {
-	int ilb;
+	int ilb = -1;
 	const struct cpumask *hk_mask;
 
+	trace_android_rvh_find_new_ilb(nohz.idle_cpus_mask, &ilb);
+	if (ilb >= 0)
+		return ilb;
+
 	hk_mask = housekeeping_cpumask(HK_TYPE_MISC);
 
 	for_each_cpu_and(ilb, nohz.idle_cpus_mask, hk_mask) {
@@ -11133,6 +11249,7 @@ static void nohz_balancer_kick(struct rq *rq)
 	struct sched_domain *sd;
 	int nr_busy, i, cpu = rq->cpu;
 	unsigned int flags = 0;
+	int done = 0;
 
 	if (unlikely(rq->idle_balance))
 		return;
@@ -11157,6 +11274,10 @@ static void nohz_balancer_kick(struct rq *rq)
 	if (time_before(now, nohz.next_balance))
 		goto out;
 
+	trace_android_rvh_sched_nohz_balancer_kick(rq, &flags, &done);
+	if (done)
+		goto out;
+
 	if (rq->nr_running >= 2) {
 		flags = NOHZ_STATS_KICK | NOHZ_BALANCE_KICK;
 		goto out;
@@ -11562,6 +11683,11 @@ static int newidle_balance(struct rq *this_rq, struct rq_flags *rf)
 	u64 t0, t1, curr_cost = 0;
 	struct sched_domain *sd;
 	int pulled_task = 0;
+	int done = 0;
+
+	trace_android_rvh_sched_newidle_balance(this_rq, rf, &pulled_task, &done);
+	if (done)
+		return pulled_task;
 
 	update_misfit_status(NULL, this_rq);
 
diff --git a/kernel/sched/pelt.c b/kernel/sched/pelt.c
index 0f31076..a005458 100644
--- a/kernel/sched/pelt.c
+++ b/kernel/sched/pelt.c
@@ -302,6 +302,7 @@ int __update_load_avg_blocked_se(u64 now, struct sched_entity *se)
 
 	return 0;
 }
+EXPORT_SYMBOL_GPL(__update_load_avg_blocked_se);
 
 int __update_load_avg_se(u64 now, struct cfs_rq *cfs_rq, struct sched_entity *se)
 {
@@ -467,3 +468,68 @@ int update_irq_load_avg(struct rq *rq, u64 running)
 	return ret;
 }
 #endif
+
+__read_mostly unsigned int sched_pelt_lshift;
+
+#ifdef CONFIG_SYSCTL
+#include <trace/hooks/sched.h>
+static unsigned int sysctl_sched_pelt_multiplier = 1;
+
+int sched_pelt_multiplier(struct ctl_table *table, int write, void *buffer,
+			  size_t *lenp, loff_t *ppos)
+{
+	static DEFINE_MUTEX(mutex);
+	unsigned int old;
+	int ret;
+
+	mutex_lock(&mutex);
+	old = sysctl_sched_pelt_multiplier;
+	ret = proc_dointvec(table, write, buffer, lenp, ppos);
+	if (ret)
+		goto undo;
+	if (!write)
+		goto done;
+
+	trace_android_vh_sched_pelt_multiplier(old, sysctl_sched_pelt_multiplier, &ret);
+	if (ret)
+		goto undo;
+
+	switch (sysctl_sched_pelt_multiplier)  {
+	case 1:
+		fallthrough;
+	case 2:
+		fallthrough;
+	case 4:
+		WRITE_ONCE(sched_pelt_lshift,
+			   sysctl_sched_pelt_multiplier >> 1);
+		goto done;
+	default:
+		ret = -EINVAL;
+	}
+
+undo:
+	sysctl_sched_pelt_multiplier = old;
+done:
+	mutex_unlock(&mutex);
+
+	return ret;
+}
+
+static struct ctl_table sched_pelt_sysctls[] = {
+	{
+		.procname       = "sched_pelt_multiplier",
+		.data           = &sysctl_sched_pelt_multiplier,
+		.maxlen         = sizeof(unsigned int),
+		.mode           = 0644,
+		.proc_handler   = sched_pelt_multiplier,
+	},
+	{}
+};
+
+static int __init sched_pelt_sysctl_init(void)
+{
+	register_sysctl_init("kernel", sched_pelt_sysctls);
+	return 0;
+}
+late_initcall(sched_pelt_sysctl_init);
+#endif
diff --git a/kernel/sched/pelt.h b/kernel/sched/pelt.h
index 3a0e0dc..9b35b50 100644
--- a/kernel/sched/pelt.h
+++ b/kernel/sched/pelt.h
@@ -61,6 +61,14 @@ static inline void cfs_se_util_change(struct sched_avg *avg)
 	WRITE_ONCE(avg->util_est.enqueued, enqueued);
 }
 
+static inline u64 rq_clock_task_mult(struct rq *rq)
+{
+	lockdep_assert_rq_held(rq);
+	assert_clock_updated(rq);
+
+	return rq->clock_task_mult;
+}
+
 static inline u64 rq_clock_pelt(struct rq *rq)
 {
 	lockdep_assert_rq_held(rq);
@@ -72,7 +80,7 @@ static inline u64 rq_clock_pelt(struct rq *rq)
 /* The rq is idle, we can sync to clock_task */
 static inline void _update_idle_rq_clock_pelt(struct rq *rq)
 {
-	rq->clock_pelt  = rq_clock_task(rq);
+	rq->clock_pelt = rq_clock_task_mult(rq);
 
 	u64_u32_store(rq->clock_idle, rq_clock(rq));
 	/* Paired with smp_rmb in migrate_se_pelt_lag() */
@@ -121,6 +129,27 @@ static inline void update_rq_clock_pelt(struct rq *rq, s64 delta)
 	rq->clock_pelt += delta;
 }
 
+extern unsigned int sched_pelt_lshift;
+
+/*
+ * absolute time   |1      |2      |3      |4      |5      |6      |
+ * @ mult = 1      --------****************--------****************-
+ * @ mult = 2      --------********----------------********---------
+ * @ mult = 4      --------****--------------------****-------------
+ * clock task mult
+ * @ mult = 2      |   |   |2  |3  |   |   |   |   |5  |6  |   |   |
+ * @ mult = 4      | | | | |2|3| | | | | | | | | | |5|6| | | | | | |
+ *
+ */
+static inline void update_rq_clock_task_mult(struct rq *rq, s64 delta)
+{
+	delta <<= READ_ONCE(sched_pelt_lshift);
+
+	rq->clock_task_mult += delta;
+
+	update_rq_clock_pelt(rq, delta);
+}
+
 /*
  * When rq becomes idle, we have to check if it has lost idle time
  * because it was fully busy. A rq is fully used when the /Sum util_sum
@@ -147,7 +176,7 @@ static inline void update_idle_rq_clock_pelt(struct rq *rq)
 	 * rq's clock_task.
 	 */
 	if (util_sum >= divider)
-		rq->lost_idle_time += rq_clock_task(rq) - rq->clock_pelt;
+		rq->lost_idle_time += rq_clock_task_mult(rq) - rq->clock_pelt;
 
 	_update_idle_rq_clock_pelt(rq);
 }
@@ -218,13 +247,18 @@ update_irq_load_avg(struct rq *rq, u64 running)
 	return 0;
 }
 
-static inline u64 rq_clock_pelt(struct rq *rq)
+static inline u64 rq_clock_task_mult(struct rq *rq)
 {
 	return rq_clock_task(rq);
 }
 
+static inline u64 rq_clock_pelt(struct rq *rq)
+{
+	return rq_clock_task_mult(rq);
+}
+
 static inline void
-update_rq_clock_pelt(struct rq *rq, s64 delta) { }
+update_rq_clock_task_mult(struct rq *rq, s64 delta) { }
 
 static inline void
 update_idle_rq_clock_pelt(struct rq *rq) { }
diff --git a/kernel/sched/psi.c b/kernel/sched/psi.c
index e83c321..5e5a602 100644
--- a/kernel/sched/psi.c
+++ b/kernel/sched/psi.c
@@ -136,6 +136,7 @@
  * cost-wise, yet way more sensitive and accurate than periodic
  * sampling of the aggregate task states would be.
  */
+#include <trace/hooks/psi.h>
 
 static int psi_bug __read_mostly;
 
@@ -160,7 +161,6 @@ __setup("psi=", setup_psi);
 #define EXP_300s	2034		/* 1/exp(2s/300s) */
 
 /* PSI trigger definitions */
-#define WINDOW_MIN_US 500000	/* Min window size is 500ms */
 #define WINDOW_MAX_US 10000000	/* Max window size is 10s */
 #define UPDATES_PER_WINDOW 10	/* 10 updates per window */
 
@@ -551,6 +551,8 @@ static u64 update_triggers(struct psi_group *group, u64 now)
 		if (now < t->last_event_time + t->win.size)
 			continue;
 
+		trace_android_vh_psi_event(t);
+
 		/* Generate an event */
 		if (cmpxchg(&t->event, 0, 1) == 0)
 			wake_up_interruptible(&t->event_wait);
@@ -559,6 +561,8 @@ static u64 update_triggers(struct psi_group *group, u64 now)
 		t->pending_event = false;
 	}
 
+	trace_android_vh_psi_group(group);
+
 	if (update_total)
 		memcpy(group->polling_total, total,
 				sizeof(group->polling_total));
@@ -1254,8 +1258,7 @@ struct psi_trigger *psi_trigger_create(struct psi_group *group,
 	if (state >= PSI_NONIDLE)
 		return ERR_PTR(-EINVAL);
 
-	if (window_us < WINDOW_MIN_US ||
-		window_us > WINDOW_MAX_US)
+	if (window_us == 0 || window_us > WINDOW_MAX_US)
 		return ERR_PTR(-EINVAL);
 
 	/* Check threshold */
@@ -1411,27 +1414,19 @@ static int psi_cpu_show(struct seq_file *m, void *v)
 	return psi_show(m, &psi_system, PSI_CPU);
 }
 
-static int psi_open(struct file *file, int (*psi_show)(struct seq_file *, void *))
-{
-	if (file->f_mode & FMODE_WRITE && !capable(CAP_SYS_RESOURCE))
-		return -EPERM;
-
-	return single_open(file, psi_show, NULL);
-}
-
 static int psi_io_open(struct inode *inode, struct file *file)
 {
-	return psi_open(file, psi_io_show);
+	return single_open(file, psi_io_show, NULL);
 }
 
 static int psi_memory_open(struct inode *inode, struct file *file)
 {
-	return psi_open(file, psi_memory_show);
+	return single_open(file, psi_memory_show, NULL);
 }
 
 static int psi_cpu_open(struct inode *inode, struct file *file)
 {
-	return psi_open(file, psi_cpu_show);
+	return single_open(file, psi_cpu_show, NULL);
 }
 
 static ssize_t psi_write(struct file *file, const char __user *user_buf,
@@ -1545,7 +1540,7 @@ static int psi_irq_show(struct seq_file *m, void *v)
 
 static int psi_irq_open(struct inode *inode, struct file *file)
 {
-	return psi_open(file, psi_irq_show);
+	return single_open(file, psi_irq_show, NULL);
 }
 
 static ssize_t psi_irq_write(struct file *file, const char __user *user_buf,
@@ -1568,11 +1563,11 @@ static int __init psi_proc_init(void)
 {
 	if (psi_enable) {
 		proc_mkdir("pressure", NULL);
-		proc_create("pressure/io", 0666, NULL, &psi_io_proc_ops);
-		proc_create("pressure/memory", 0666, NULL, &psi_memory_proc_ops);
-		proc_create("pressure/cpu", 0666, NULL, &psi_cpu_proc_ops);
+		proc_create("pressure/io", 0, NULL, &psi_io_proc_ops);
+		proc_create("pressure/memory", 0, NULL, &psi_memory_proc_ops);
+		proc_create("pressure/cpu", 0, NULL, &psi_cpu_proc_ops);
 #ifdef CONFIG_IRQ_TIME_ACCOUNTING
-		proc_create("pressure/irq", 0666, NULL, &psi_irq_proc_ops);
+		proc_create("pressure/irq", 0, NULL, &psi_irq_proc_ops);
 #endif
 	}
 	return 0;
diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c
index 4f5796d..5412a02 100644
--- a/kernel/sched/rt.c
+++ b/kernel/sched/rt.c
@@ -4,6 +4,8 @@
  * policies)
  */
 
+#include <trace/hooks/sched.h>
+
 int sched_rr_timeslice = RR_TIMESLICE;
 /* More than 4 hours if BW_SHIFT equals 20. */
 static const u64 max_rt_runtime = MAX_BW;
@@ -1020,6 +1022,13 @@ static int sched_rt_runtime_exceeded(struct rt_rq *rt_rq)
 		if (likely(rt_b->rt_runtime)) {
 			rt_rq->rt_throttled = 1;
 			printk_deferred_once("sched: RT throttling activated\n");
+
+			trace_android_vh_dump_throttled_rt_tasks(
+				raw_smp_processor_id(),
+				rq_clock(rq_of_rt_rq(rt_rq)),
+				sched_rt_period(rt_rq),
+				runtime,
+				hrtimer_get_expires_ns(&rt_b->rt_period_timer));
 		} else {
 			/*
 			 * In case we did anyway, make it go away,
@@ -1064,6 +1073,8 @@ static void update_curr_rt(struct rq *rq)
 
 	update_current_exec_runtime(curr, now, delta_exec);
 
+	trace_android_vh_sched_stat_runtime_rt(curr, delta_exec);
+
 	if (!rt_bandwidth_enabled())
 		return;
 
@@ -1528,6 +1539,27 @@ static void dequeue_rt_entity(struct sched_rt_entity *rt_se, unsigned int flags)
 	enqueue_top_rt_rq(&rq->rt);
 }
 
+#ifdef CONFIG_SMP
+static inline bool should_honor_rt_sync(struct rq *rq, struct task_struct *p,
+					bool sync)
+{
+	/*
+	 * If the waker is CFS, then an RT sync wakeup would preempt the waker
+	 * and force it to run for a likely small time after the RT wakee is
+	 * done. So, only honor RT sync wakeups from RT wakers.
+	 */
+	return sync && task_has_rt_policy(rq->curr) &&
+		p->prio <= rq->rt.highest_prio.next &&
+		rq->rt.rt_nr_running <= 2;
+}
+#else
+static inline bool should_honor_rt_sync(struct rq *rq, struct task_struct *p,
+					bool sync)
+{
+	return 0;
+}
+#endif
+
 /*
  * Adding/removing a task to/from a priority array:
  */
@@ -1535,6 +1567,7 @@ static void
 enqueue_task_rt(struct rq *rq, struct task_struct *p, int flags)
 {
 	struct sched_rt_entity *rt_se = &p->rt;
+	bool sync = !!(flags & ENQUEUE_WAKEUP_SYNC);
 
 	if (flags & ENQUEUE_WAKEUP)
 		rt_se->timeout = 0;
@@ -1544,7 +1577,8 @@ enqueue_task_rt(struct rq *rq, struct task_struct *p, int flags)
 
 	enqueue_rt_entity(rt_se, flags);
 
-	if (!task_current(rq, p) && p->nr_cpus_allowed > 1)
+	if (!task_current(rq, p) && p->nr_cpus_allowed > 1 &&
+	    !should_honor_rt_sync(rq, p, sync))
 		enqueue_pushable_task(rq, p);
 }
 
@@ -1595,12 +1629,47 @@ static void yield_task_rt(struct rq *rq)
 #ifdef CONFIG_SMP
 static int find_lowest_rq(struct task_struct *task);
 
+#ifdef CONFIG_RT_SOFTIRQ_AWARE_SCHED
+/*
+ * Return whether the given cpu is currently non-preemptible
+ * while handling a potentially long softirq, or if the current
+ * task is likely to block preemptions soon because it is a
+ * ksoftirq thread that is handling softirqs.
+ */
+static bool cpu_busy_with_softirqs(int cpu)
+{
+	u32 softirqs = per_cpu(active_softirqs, cpu) |
+		       __cpu_softirq_pending(cpu);
+
+	return softirqs & LONG_SOFTIRQ_MASK;
+}
+#else
+static bool cpu_busy_with_softirqs(int cpu)
+{
+	return false;
+}
+#endif /* CONFIG_RT_SOFTIRQ_AWARE_SCHED */
+
+static bool rt_task_fits_cpu(struct task_struct *p, int cpu)
+{
+	return rt_task_fits_capacity(p, cpu) && !cpu_busy_with_softirqs(cpu);
+}
+
 static int
 select_task_rq_rt(struct task_struct *p, int cpu, int flags)
 {
 	struct task_struct *curr;
 	struct rq *rq;
+	struct rq *this_cpu_rq;
 	bool test;
+	int target_cpu = -1;
+	bool sync = !!(flags & WF_SYNC);
+	int this_cpu;
+
+	trace_android_rvh_select_task_rq_rt(p, cpu, flags & 0xF,
+					flags, &target_cpu);
+	if (target_cpu >= 0)
+		return target_cpu;
 
 	/* For anything but wake ups, just return the task_cpu */
 	if (!(flags & (WF_TTWU | WF_FORK)))
@@ -1610,6 +1679,8 @@ select_task_rq_rt(struct task_struct *p, int cpu, int flags)
 
 	rcu_read_lock();
 	curr = READ_ONCE(rq->curr); /* unlocked access */
+	this_cpu = smp_processor_id();
+	this_cpu_rq = cpu_rq(this_cpu);
 
 	/*
 	 * If the current task on @p's runqueue is an RT task, then
@@ -1633,22 +1704,33 @@ select_task_rq_rt(struct task_struct *p, int cpu, int flags)
 	 * This test is optimistic, if we get it wrong the load-balancer
 	 * will have to sort it out.
 	 *
-	 * We take into account the capacity of the CPU to ensure it fits the
-	 * requirement of the task - which is only important on heterogeneous
-	 * systems like big.LITTLE.
+	 * We use rt_task_fits_cpu() to evaluate if the CPU is busy with
+	 * potentially long-running softirq work, as well as take into
+	 * account the capacity of the CPU to ensure it fits the
+	 * requirement of the task - which is only important on
+	 * heterogeneous systems like big.LITTLE.
 	 */
 	test = curr &&
 	       unlikely(rt_task(curr)) &&
 	       (curr->nr_cpus_allowed < 2 || curr->prio <= p->prio);
 
-	if (test || !rt_task_fits_capacity(p, cpu)) {
+	/*
+	 * Respect the sync flag as long as the task can run on this CPU.
+	 */
+	if (should_honor_rt_sync(this_cpu_rq, p, sync) &&
+	    cpumask_test_cpu(this_cpu, p->cpus_ptr)) {
+		cpu = this_cpu;
+		goto out_unlock;
+	}
+
+	if (test || !rt_task_fits_cpu(p, cpu)) {
 		int target = find_lowest_rq(p);
 
 		/*
 		 * Bail out if we were forcing a migration to find a better
 		 * fitting CPU but our search failed.
 		 */
-		if (!test && target != -1 && !rt_task_fits_capacity(p, target))
+		if (!test && target != -1 && !rt_task_fits_cpu(p, target))
 			goto out_unlock;
 
 		/*
@@ -1697,6 +1779,8 @@ static void check_preempt_equal_prio(struct rq *rq, struct task_struct *p)
 static int balance_rt(struct rq *rq, struct task_struct *p, struct rq_flags *rf)
 {
 	if (!on_rt_rq(&p->rt) && need_pull_rt_task(rq, p)) {
+		int done = 0;
+
 		/*
 		 * This is OK, because current is on_cpu, which avoids it being
 		 * picked for load-balance and preemption/IRQs are still
@@ -1704,7 +1788,9 @@ static int balance_rt(struct rq *rq, struct task_struct *p, struct rq_flags *rf)
 		 * not yet started the picking loop.
 		 */
 		rq_unpin_lock(rq, rf);
-		pull_rt_task(rq);
+		trace_android_rvh_sched_balance_rt(rq, p, &done);
+		if (!done)
+			pull_rt_task(rq);
 		rq_repin_lock(rq, rf);
 	}
 
@@ -1859,7 +1945,7 @@ static int pick_rt_task(struct rq *rq, struct task_struct *p, int cpu)
  * Return the highest pushable rq's task, which is suitable to be executed
  * on the CPU, NULL otherwise
  */
-static struct task_struct *pick_highest_pushable_task(struct rq *rq, int cpu)
+struct task_struct *pick_highest_pushable_task(struct rq *rq, int cpu)
 {
 	struct plist_head *head = &rq->rt.pushable_tasks;
 	struct task_struct *p;
@@ -1874,6 +1960,7 @@ static struct task_struct *pick_highest_pushable_task(struct rq *rq, int cpu)
 
 	return NULL;
 }
+EXPORT_SYMBOL_GPL(pick_highest_pushable_task);
 
 static DEFINE_PER_CPU(cpumask_var_t, local_cpu_mask);
 
@@ -1882,7 +1969,7 @@ static int find_lowest_rq(struct task_struct *task)
 	struct sched_domain *sd;
 	struct cpumask *lowest_mask = this_cpu_cpumask_var_ptr(local_cpu_mask);
 	int this_cpu = smp_processor_id();
-	int cpu      = task_cpu(task);
+	int cpu      = -1;
 	int ret;
 
 	/* Make sure the mask is initialized first */
@@ -1893,23 +1980,32 @@ static int find_lowest_rq(struct task_struct *task)
 		return -1; /* No other targets possible */
 
 	/*
-	 * If we're on asym system ensure we consider the different capacities
-	 * of the CPUs when searching for the lowest_mask.
+	 * If we're using the softirq optimization or if we are
+	 * on asym system, ensure we consider the softirq processing
+	 * or different capacities of the CPUs when searching for the
+	 * lowest_mask.
 	 */
-	if (sched_asym_cpucap_active()) {
+	if (IS_ENABLED(CONFIG_RT_SOFTIRQ_AWARE_SCHED) ||
+	    sched_asym_cpucap_active()) {
 
 		ret = cpupri_find_fitness(&task_rq(task)->rd->cpupri,
 					  task, lowest_mask,
-					  rt_task_fits_capacity);
+					  rt_task_fits_cpu);
 	} else {
 
 		ret = cpupri_find(&task_rq(task)->rd->cpupri,
 				  task, lowest_mask);
 	}
 
+	trace_android_rvh_find_lowest_rq(task, lowest_mask, ret, &cpu);
+	if (cpu >= 0)
+		return cpu;
+
 	if (!ret)
 		return -1; /* No targets found */
 
+	cpu = task_cpu(task);
+
 	/*
 	 * At this point we have built a mask of CPUs representing the
 	 * lowest priority tasks in the system.  Now we want to elect
@@ -2245,6 +2341,9 @@ static int rto_next_cpu(struct root_domain *rd)
 		/* When rto_cpu is -1 this acts like cpumask_first() */
 		cpu = cpumask_next(rd->rto_cpu, rd->rto_mask);
 
+		/* this will be any CPU in the rd->rto_mask, and can be a halted cpu update it */
+		trace_android_rvh_rto_next_cpu(rd->rto_cpu, rd->rto_mask, &cpu);
+
 		rd->rto_cpu = cpu;
 
 		if (cpu < nr_cpu_ids)
diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
index 5f18460..49789f2 100644
--- a/kernel/sched/sched.h
+++ b/kernel/sched/sched.h
@@ -68,6 +68,9 @@
 #include <linux/wait_api.h>
 #include <linux/wait_bit.h>
 #include <linux/workqueue_api.h>
+#include <linux/android_vendor.h>
+#include <linux/android_kabi.h>
+#include "android.h"
 
 #include <trace/events/power.h>
 #include <trace/events/sched.h>
@@ -416,8 +419,16 @@ struct task_group {
 	struct uclamp_se	uclamp_req[UCLAMP_CNT];
 	/* Effective clamp values used for a task group */
 	struct uclamp_se	uclamp[UCLAMP_CNT];
+	/* Latency-sensitive flag used for a task group */
+	unsigned int		latency_sensitive;
+
+	ANDROID_VENDOR_DATA_ARRAY(1, 4);
 #endif
 
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 #ifdef CONFIG_FAIR_GROUP_SCHED
@@ -881,6 +892,13 @@ struct root_domain {
 	 * CPUs of the rd. Protected by RCU.
 	 */
 	struct perf_domain __rcu *pd;
+
+	ANDROID_VENDOR_DATA_ARRAY(1, 1);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 extern void init_defrootdomain(void);
@@ -892,6 +910,7 @@ extern void sched_put_rd(struct root_domain *rd);
 #ifdef HAVE_RT_PUSH_IPI
 extern void rto_push_irq_work_func(struct irq_work *work);
 #endif
+extern struct task_struct *pick_highest_pushable_task(struct rq *rq, int cpu);
 #endif /* CONFIG_SMP */
 
 #ifdef CONFIG_UCLAMP_TASK
@@ -1015,6 +1034,7 @@ struct rq {
 	u64			clock;
 	/* Ensure that all clocks are in the same cache line */
 	u64			clock_task ____cacheline_aligned;
+	u64			clock_task_mult;
 	u64			clock_pelt;
 	unsigned long		lost_idle_time;
 	u64			clock_pelt_idle;
@@ -1151,6 +1171,14 @@ struct rq {
 	unsigned int		core_forceidle_occupation;
 	u64			core_forceidle_start;
 #endif
+
+	ANDROID_VENDOR_DATA_ARRAY(1, 1);
+	ANDROID_OEM_DATA_ARRAY(1, 16);
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 #ifdef CONFIG_FAIR_GROUP_SCHED
@@ -1551,6 +1579,11 @@ struct rq_flags {
 #endif
 };
 
+#ifdef CONFIG_SMP
+extern struct rq *__migrate_task(struct rq *rq, struct rq_flags *rf,
+				 struct task_struct *p, int dest_cpu);
+#endif
+
 extern struct balance_callback balance_push_callback;
 
 /*
@@ -1717,8 +1750,6 @@ enum numa_faults_stats {
 };
 extern void sched_setnuma(struct task_struct *p, int node);
 extern int migrate_task_to(struct task_struct *p, int cpu);
-extern int migrate_swap(struct task_struct *p, struct task_struct *t,
-			int cpu, int scpu);
 extern void init_numa_balancing(unsigned long clone_flags, struct task_struct *p);
 #else
 static inline void
@@ -1729,6 +1760,9 @@ init_numa_balancing(unsigned long clone_flags, struct task_struct *p)
 
 #ifdef CONFIG_SMP
 
+extern int migrate_swap(struct task_struct *p, struct task_struct *t,
+			int cpu, int scpu);
+
 static inline void
 queue_balance_callback(struct rq *rq,
 		       struct balance_callback *head,
@@ -2011,6 +2045,8 @@ static __always_inline bool static_branch_##name(struct static_key *key) \
 #undef SCHED_FEAT
 
 extern struct static_key sched_feat_keys[__SCHED_FEAT_NR];
+extern const char * const sched_feat_names[__SCHED_FEAT_NR];
+
 #define sched_feat(x) (static_branch_##x(&sched_feat_keys[__SCHED_FEAT_##x]))
 
 #else /* !CONFIG_JUMP_LABEL */
@@ -2085,6 +2121,8 @@ static inline int task_on_rq_migrating(struct task_struct *p)
 #define WF_SYNC     0x10 /* Waker goes to sleep after wakeup */
 #define WF_MIGRATED 0x20 /* Internal use, task got migrated */
 
+#define WF_ANDROID_VENDOR	0x1000 /* Vendor specific for Android */
+
 #ifdef CONFIG_SMP
 static_assert(WF_EXEC == SD_BALANCE_EXEC);
 static_assert(WF_FORK == SD_BALANCE_FORK);
@@ -2143,6 +2181,8 @@ extern const u32		sched_prio_to_wmult[40];
 #define ENQUEUE_MIGRATED	0x00
 #endif
 
+#define ENQUEUE_WAKEUP_SYNC	0x80
+
 #define RETRY_TASK		((void *)-1UL)
 
 struct sched_class {
@@ -2309,6 +2349,7 @@ static inline struct task_struct *get_push_task(struct rq *rq)
 
 extern int push_cpu_stop(void *arg);
 
+extern unsigned long __read_mostly max_load_balance_interval;
 #endif
 
 #ifdef CONFIG_CPU_IDLE
diff --git a/kernel/sched/topology.c b/kernel/sched/topology.c
index 8739c2a..c480058 100644
--- a/kernel/sched/topology.c
+++ b/kernel/sched/topology.c
@@ -3,6 +3,8 @@
  * Scheduler topology setup/handling methods
  */
 
+#include <trace/hooks/sched.h>
+
 DEFINE_MUTEX(sched_domains_mutex);
 
 /* Protected by sched_domains_mutex: */
@@ -347,8 +349,7 @@ static void sched_energy_set(bool has_eas)
  *    2. the SD_ASYM_CPUCAPACITY flag is set in the sched_domain hierarchy.
  *    3. no SMT is detected.
  *    4. the EM complexity is low enough to keep scheduling overheads low;
- *    5. schedutil is driving the frequency of all CPUs of the rd;
- *    6. frequency invariance support is present;
+ *    5. frequency invariance support is present;
  *
  * The complexity of the Energy Model is defined as:
  *
@@ -368,21 +369,23 @@ static void sched_energy_set(bool has_eas)
  */
 #define EM_MAX_COMPLEXITY 2048
 
-extern struct cpufreq_governor schedutil_gov;
 static bool build_perf_domains(const struct cpumask *cpu_map)
 {
 	int i, nr_pd = 0, nr_ps = 0, nr_cpus = cpumask_weight(cpu_map);
 	struct perf_domain *pd = NULL, *tmp;
 	int cpu = cpumask_first(cpu_map);
 	struct root_domain *rd = cpu_rq(cpu)->rd;
-	struct cpufreq_policy *policy;
-	struct cpufreq_governor *gov;
+	bool eas_check = false;
 
 	if (!sysctl_sched_energy_aware)
 		goto free;
 
-	/* EAS is enabled for asymmetric CPU capacity topologies. */
-	if (!per_cpu(sd_asym_cpucapacity, cpu)) {
+	/*
+	 * EAS is enabled for asymmetric CPU capacity topologies.
+	 * Allow vendor to override if desired.
+	 */
+	trace_android_rvh_build_perf_domains(&eas_check);
+	if (!per_cpu(sd_asym_cpucapacity, cpu) && !eas_check) {
 		if (sched_debug()) {
 			pr_info("rd %*pbl: CPUs do not have asymmetric capacities\n",
 					cpumask_pr_args(cpu_map));
@@ -410,19 +413,6 @@ static bool build_perf_domains(const struct cpumask *cpu_map)
 		if (find_pd(pd, i))
 			continue;
 
-		/* Do not attempt EAS if schedutil is not being used. */
-		policy = cpufreq_cpu_get(i);
-		if (!policy)
-			goto free;
-		gov = policy->governor;
-		cpufreq_cpu_put(policy);
-		if (gov != &schedutil_gov) {
-			if (rd->pd)
-				pr_warn("rd %*pbl: Disabling EAS, schedutil is mandatory\n",
-						cpumask_pr_args(cpu_map));
-			goto free;
-		}
-
 		/* Create the new pd and add it to the local list. */
 		tmp = pd_init(i);
 		if (!tmp)
@@ -2388,6 +2378,7 @@ build_sched_domains(const struct cpumask *cpu_map, struct sched_domain_attr *att
 		pr_info("root domain span: %*pbl (max cpu_capacity = %lu)\n",
 			cpumask_pr_args(cpu_map), rq->rd->max_cpu_capacity);
 	}
+	trace_android_vh_build_sched_domains(has_asym);
 
 	ret = 0;
 error:
diff --git a/kernel/sched/vendor_hooks.c b/kernel/sched/vendor_hooks.c
new file mode 100644
index 0000000..e1e2601
--- /dev/null
+++ b/kernel/sched/vendor_hooks.c
@@ -0,0 +1,99 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/* vendor_hook.c
+ *
+ * Copyright 2022 Google LLC
+ */
+#include <linux/sched/cputime.h>
+#include "sched.h"
+#include "pelt.h"
+#include "smp.h"
+
+#define CREATE_TRACE_POINTS
+#include <trace/hooks/vendor_hooks.h>
+#include <linux/tracepoint.h>
+#include <trace/hooks/sched.h>
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_select_task_rq_fair);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_select_task_rq_rt);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_select_fallback_rq);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_scheduler_tick);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_enqueue_task);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_dequeue_task);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_can_migrate_task);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_find_lowest_rq);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_prepare_prio_fork);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_finish_prio_fork);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_rtmutex_prepare_setprio);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_user_nice);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_setscheduler);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_find_busiest_group);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_dump_throttled_rt_tasks);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_jiffies_update);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_newidle_balance);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_nohz_balancer_kick);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_rebalance_domains);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_find_busiest_queue);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_migrate_queued_task);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_cpu_overutilized);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_setaffinity);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_build_sched_domains);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_tick);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_wakeup_ignore);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_replace_next_task_fair);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_balance_rt);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_pick_next_entity);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_wakeup);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_cpus_allowed_by_task);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_free_task);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_uclamp_eff_get);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_after_enqueue_task);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_after_dequeue_task);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_enqueue_entity);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_dequeue_entity);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_entity_tick);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_enqueue_task_fair);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_dequeue_task_fair);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_util_est_update);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_setscheduler_uclamp);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_task_cpu);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_try_to_wake_up);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_try_to_wake_up_success);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_fork);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_wake_up_new_task);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_new_task_stats);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_flush_task);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_tick_entry);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_schedule);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_cpu_starting);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_cpu_dying);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_account_irq);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_place_entity);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_build_perf_domains);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_cpu_capacity);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_misfit_status);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_rto_next_cpu);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_is_cpu_allowed);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_get_nohz_timer_target);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_getaffinity);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_do_sched_yield);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_fork_init);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_ttwu_cond);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_schedule_bug);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_exec);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_update_topology_flags_workfn);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_thermal_stats);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sched_stat_runtime_rt);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_do_wake_up_sync);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_set_wake_flags);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_find_new_ilb);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_find_energy_efficient_cpu);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sched_pelt_multiplier);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_map_util_freq);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_cpus_allowed_comm);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sched_setaffinity_early);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_account_process_tick_gran);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_account_task_time);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_dup_task_struct);
+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);
diff --git a/kernel/sched/wait.c b/kernel/sched/wait.c
index 133b747..596b19a 100644
--- a/kernel/sched/wait.c
+++ b/kernel/sched/wait.c
@@ -4,6 +4,7 @@
  *
  * (C) 2004 Nadia Yvette Chambers, Oracle
  */
+#include <trace/hooks/sched.h>
 
 void __init_waitqueue_head(struct wait_queue_head *wq_head, const char *name, struct lock_class_key *key)
 {
@@ -202,10 +203,13 @@ EXPORT_SYMBOL_GPL(__wake_up_locked_key_bookmark);
 void __wake_up_sync_key(struct wait_queue_head *wq_head, unsigned int mode,
 			void *key)
 {
+	int wake_flags = WF_SYNC;
+
 	if (unlikely(!wq_head))
 		return;
 
-	__wake_up_common_lock(wq_head, mode, 1, WF_SYNC, key);
+	trace_android_vh_set_wake_flags(&wake_flags, &mode);
+	__wake_up_common_lock(wq_head, mode, 1, wake_flags, key);
 }
 EXPORT_SYMBOL_GPL(__wake_up_sync_key);
 
diff --git a/kernel/scs.c b/kernel/scs.c
index b7e1b09..d7809af 100644
--- a/kernel/scs.c
+++ b/kernel/scs.c
@@ -12,6 +12,10 @@
 #include <linux/vmalloc.h>
 #include <linux/vmstat.h>
 
+#ifdef CONFIG_DYNAMIC_SCS
+DEFINE_STATIC_KEY_FALSE(dynamic_scs_enabled);
+#endif
+
 static void __scs_account(void *s, int account)
 {
 	struct page *scs_page = vmalloc_to_page(s);
@@ -101,14 +105,20 @@ static int scs_cleanup(unsigned int cpu)
 
 void __init scs_init(void)
 {
+	if (!scs_is_enabled())
+		return;
 	cpuhp_setup_state(CPUHP_BP_PREPARE_DYN, "scs:scs_cache", NULL,
 			  scs_cleanup);
 }
 
 int scs_prepare(struct task_struct *tsk, int node)
 {
-	void *s = scs_alloc(node);
+	void *s;
 
+	if (!scs_is_enabled())
+		return 0;
+
+	s = scs_alloc(node);
 	if (!s)
 		return -ENOMEM;
 
@@ -148,7 +158,7 @@ void scs_release(struct task_struct *tsk)
 {
 	void *s = task_scs(tsk);
 
-	if (!s)
+	if (!scs_is_enabled() || !s)
 		return;
 
 	WARN(task_scs_end_corrupted(tsk),
diff --git a/kernel/signal.c b/kernel/signal.c
index d140672..95d48c4 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -56,6 +56,8 @@
 #include <asm/cacheflush.h>
 #include <asm/syscall.h>	/* for syscall_get_* */
 
+#undef CREATE_TRACE_POINTS
+#include <trace/hooks/signal.h>
 /*
  * SLAB caches for signal bits.
  */
@@ -1055,6 +1057,7 @@ static void complete_signal(int sig, struct task_struct *p, enum pid_type type)
 			signal->group_stop_count = 0;
 			t = p;
 			do {
+				trace_android_vh_exit_signal(t);
 				task_clear_jobctl_pending(t, JOBCTL_PENDING_MASK);
 				sigaddset(&t->pending.signal, SIGKILL);
 				signal_wake_up(t, 1);
@@ -1291,7 +1294,7 @@ int do_send_sig_info(int sig, struct kernel_siginfo *info, struct task_struct *p
 {
 	unsigned long flags;
 	int ret = -ESRCH;
-
+	trace_android_vh_do_send_sig_info(sig, current, p);
 	if (lock_task_sighand(p, &flags)) {
 		ret = send_signal_locked(sig, info, p, type);
 		unlock_task_sighand(p, &flags);
diff --git a/kernel/softirq.c b/kernel/softirq.c
index c8a6913..a63d8b8 100644
--- a/kernel/softirq.c
+++ b/kernel/softirq.c
@@ -33,6 +33,9 @@
 #define CREATE_TRACE_POINTS
 #include <trace/events/irq.h>
 
+EXPORT_TRACEPOINT_SYMBOL_GPL(irq_handler_entry);
+EXPORT_TRACEPOINT_SYMBOL_GPL(irq_handler_exit);
+
 /*
    - No shared variables, all the data are CPU local.
    - If a softirq needs serialization, let it serialize itself
@@ -59,6 +62,22 @@ EXPORT_PER_CPU_SYMBOL(irq_stat);
 static struct softirq_action softirq_vec[NR_SOFTIRQS] __cacheline_aligned_in_smp;
 
 DEFINE_PER_CPU(struct task_struct *, ksoftirqd);
+EXPORT_PER_CPU_SYMBOL_GPL(ksoftirqd);
+
+#ifdef CONFIG_RT_SOFTIRQ_AWARE_SCHED
+/*
+ * active_softirqs -- per cpu, a mask of softirqs that are being handled,
+ * with the expectation that approximate answers are acceptable and therefore
+ * no synchronization.
+ */
+DEFINE_PER_CPU(u32, active_softirqs);
+static inline void set_active_softirqs(u32 pending)
+{
+	__this_cpu_write(active_softirqs, pending);
+}
+#else /* CONFIG_RT_SOFTIRQ_AWARE_SCHED */
+static inline void set_active_softirqs(u32 pending) {};
+#endif /* CONFIG_RT_SOFTIRQ_AWARE_SCHED */
 
 const char * const softirq_to_name[NR_SOFTIRQS] = {
 	"HI", "TIMER", "NET_TX", "NET_RX", "BLOCK", "IRQ_POLL",
@@ -80,6 +99,7 @@ static void wakeup_softirqd(void)
 		wake_up_process(tsk);
 }
 
+#ifndef CONFIG_RT_SOFTIRQ_AWARE_SCHED
 /*
  * If ksoftirqd is scheduled, we do not want to process pending softirqs
  * right now. Let ksoftirqd handle this at its own rate, to get fairness,
@@ -94,6 +114,9 @@ static bool ksoftirqd_running(unsigned long pending)
 		return false;
 	return tsk && task_is_running(tsk) && !__kthread_should_park(tsk);
 }
+#else
+#define ksoftirqd_running(pending) (false)
+#endif /* CONFIG_RT_SOFTIRQ_AWARE_SCHED */
 
 #ifdef CONFIG_TRACE_IRQFLAGS
 DEFINE_PER_CPU(int, hardirqs_enabled);
@@ -525,6 +548,21 @@ static inline bool lockdep_softirq_start(void) { return false; }
 static inline void lockdep_softirq_end(bool in_hardirq) { }
 #endif
 
+#ifdef CONFIG_RT_SOFTIRQ_AWARE_SCHED
+static __u32 softirq_deferred_for_rt(__u32 *pending)
+{
+	__u32 deferred = 0;
+
+	if (rt_task(current)) {
+		deferred = *pending & LONG_SOFTIRQ_MASK;
+		*pending &= ~LONG_SOFTIRQ_MASK;
+	}
+	return deferred;
+}
+#else
+#define softirq_deferred_for_rt(x) (0)
+#endif
+
 asmlinkage __visible void __softirq_entry __do_softirq(void)
 {
 	unsigned long end = jiffies + MAX_SOFTIRQ_TIME;
@@ -532,6 +570,7 @@ asmlinkage __visible void __softirq_entry __do_softirq(void)
 	int max_restart = MAX_SOFTIRQ_RESTART;
 	struct softirq_action *h;
 	bool in_hardirq;
+	__u32 deferred;
 	__u32 pending;
 	int softirq_bit;
 
@@ -543,14 +582,17 @@ asmlinkage __visible void __softirq_entry __do_softirq(void)
 	current->flags &= ~PF_MEMALLOC;
 
 	pending = local_softirq_pending();
+	deferred = softirq_deferred_for_rt(&pending);
 
 	softirq_handle_begin();
+
 	in_hardirq = lockdep_softirq_start();
 	account_softirq_enter(current);
 
 restart:
 	/* Reset the pending bitmask before enabling irqs */
-	set_softirq_pending(0);
+	set_softirq_pending(deferred);
+	set_active_softirqs(pending);
 
 	local_irq_enable();
 
@@ -580,6 +622,7 @@ asmlinkage __visible void __softirq_entry __do_softirq(void)
 		pending >>= softirq_bit;
 	}
 
+	set_active_softirqs(0);
 	if (!IS_ENABLED(CONFIG_PREEMPT_RT) &&
 	    __this_cpu_read(ksoftirqd) == current)
 		rcu_softirq_qs();
@@ -587,14 +630,17 @@ asmlinkage __visible void __softirq_entry __do_softirq(void)
 	local_irq_disable();
 
 	pending = local_softirq_pending();
+	deferred = softirq_deferred_for_rt(&pending);
+
 	if (pending) {
 		if (time_before(jiffies, end) && !need_resched() &&
 		    --max_restart)
 			goto restart;
-
-		wakeup_softirqd();
 	}
 
+	if (pending | deferred)
+		wakeup_softirqd();
+
 	account_softirq_exit(current);
 	lockdep_softirq_end(in_hardirq);
 	softirq_handle_end();
@@ -793,10 +839,15 @@ static void tasklet_action_common(struct softirq_action *a,
 		if (tasklet_trylock(t)) {
 			if (!atomic_read(&t->count)) {
 				if (tasklet_clear_sched(t)) {
-					if (t->use_callback)
+					if (t->use_callback) {
+						trace_tasklet_entry(t->callback);
 						t->callback(t);
-					else
+						trace_tasklet_exit(t->callback);
+					} else {
+						trace_tasklet_entry(t->func);
 						t->func(t->data);
+						trace_tasklet_exit(t->func);
+					}
 				}
 				tasklet_unlock(t);
 				continue;
diff --git a/kernel/stacktrace.c b/kernel/stacktrace.c
index 9ed5ce9..af34650 100644
--- a/kernel/stacktrace.c
+++ b/kernel/stacktrace.c
@@ -151,6 +151,7 @@ unsigned int stack_trace_save_tsk(struct task_struct *tsk, unsigned long *store,
 	put_task_stack(tsk);
 	return c.len;
 }
+EXPORT_SYMBOL_GPL(stack_trace_save_tsk);
 
 /**
  * stack_trace_save_regs - Save a stack trace based on pt_regs into a storage array
@@ -174,6 +175,7 @@ unsigned int stack_trace_save_regs(struct pt_regs *regs, unsigned long *store,
 	arch_stack_walk(consume_entry, &c, current, regs);
 	return c.len;
 }
+EXPORT_SYMBOL_GPL(stack_trace_save_regs);
 
 #ifdef CONFIG_HAVE_RELIABLE_STACKTRACE
 /**
diff --git a/kernel/stop_machine.c b/kernel/stop_machine.c
index cedb17b..feffcfd 100644
--- a/kernel/stop_machine.c
+++ b/kernel/stop_machine.c
@@ -152,6 +152,7 @@ int stop_one_cpu(unsigned int cpu, cpu_stop_fn_t fn, void *arg)
 	wait_for_completion(&done.completion);
 	return done.ret;
 }
+EXPORT_SYMBOL_GPL(stop_one_cpu);
 
 /* This controls the threads on each CPU. */
 enum multi_stop_state {
@@ -387,6 +388,7 @@ bool stop_one_cpu_nowait(unsigned int cpu, cpu_stop_fn_t fn, void *arg,
 	*work_buf = (struct cpu_stop_work){ .fn = fn, .arg = arg, .caller = _RET_IP_, };
 	return cpu_stop_queue_work(cpu, work_buf);
 }
+EXPORT_SYMBOL_GPL(stop_one_cpu_nowait);
 
 static bool queue_stop_cpus_work(const struct cpumask *cpumask,
 				 cpu_stop_fn_t fn, void *arg,
diff --git a/kernel/sys.c b/kernel/sys.c
index c85e1ab..92b466d 100644
--- a/kernel/sys.c
+++ b/kernel/sys.c
@@ -76,6 +76,8 @@
 
 #include "uid16.h"
 
+#include <trace/hooks/sys.h>
+
 #ifndef SET_UNALIGN_CTL
 # define SET_UNALIGN_CTL(a, b)	(-EINVAL)
 #endif
@@ -2643,6 +2645,7 @@ SYSCALL_DEFINE5(prctl, int, option, unsigned long, arg2, unsigned long, arg3,
 		error = -EINVAL;
 		break;
 	}
+	trace_android_vh_syscall_prctl_finished(option, me);
 	return error;
 }
 
diff --git a/kernel/time/sched_clock.c b/kernel/time/sched_clock.c
index 8464c5a..4052d72 100644
--- a/kernel/time/sched_clock.c
+++ b/kernel/time/sched_clock.c
@@ -17,6 +17,7 @@
 #include <linux/sched_clock.h>
 #include <linux/seqlock.h>
 #include <linux/bitops.h>
+#include <trace/hooks/epoch.h>
 
 #include "timekeeping.h"
 
@@ -150,8 +151,7 @@ static enum hrtimer_restart sched_clock_poll(struct hrtimer *hrt)
 	return HRTIMER_RESTART;
 }
 
-void __init
-sched_clock_register(u64 (*read)(void), int bits, unsigned long rate)
+void sched_clock_register(u64 (*read)(void), int bits, unsigned long rate)
 {
 	u64 res, wrap, new_mask, new_epoch, cyc, ns;
 	u32 new_mult, new_shift;
@@ -223,6 +223,7 @@ sched_clock_register(u64 (*read)(void), int bits, unsigned long rate)
 
 	pr_debug("Registered %pS as sched_clock source\n", read);
 }
+EXPORT_SYMBOL_GPL(sched_clock_register);
 
 void __init generic_sched_clock_init(void)
 {
@@ -269,6 +270,7 @@ int sched_clock_suspend(void)
 	update_sched_clock();
 	hrtimer_cancel(&sched_clock_timer);
 	rd->read_sched_clock = suspended_sched_clock_read;
+	trace_android_vh_show_suspend_epoch_val(rd->epoch_ns, rd->epoch_cyc);
 
 	return 0;
 }
@@ -280,6 +282,7 @@ void sched_clock_resume(void)
 	rd->epoch_cyc = cd.actual_read_sched_clock();
 	hrtimer_start(&sched_clock_timer, cd.wrap_kt, HRTIMER_MODE_REL_HARD);
 	rd->read_sched_clock = cd.actual_read_sched_clock;
+	trace_android_vh_show_resume_epoch_val(rd->epoch_cyc);
 }
 
 static struct syscore_ops sched_clock_ops = {
diff --git a/kernel/time/tick-common.c b/kernel/time/tick-common.c
index e9138cd..307406f 100644
--- a/kernel/time/tick-common.c
+++ b/kernel/time/tick-common.c
@@ -17,6 +17,7 @@
 #include <linux/sched.h>
 #include <linux/module.h>
 #include <trace/events/power.h>
+#include <trace/hooks/sched.h>
 
 #include <asm/irq_regs.h>
 
@@ -95,6 +96,7 @@ static void tick_periodic(int cpu)
 		write_seqcount_end(&jiffies_seq);
 		raw_spin_unlock(&jiffies_lock);
 		update_wall_time();
+		trace_android_vh_jiffies_update(NULL);
 	}
 
 	update_process_times(user_mode(get_irq_regs()));
diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
index d6fb6a6..e4a7e6c 100644
--- a/kernel/time/tick-sched.c
+++ b/kernel/time/tick-sched.c
@@ -26,6 +26,7 @@
 #include <linux/posix-timers.h>
 #include <linux/context_tracking.h>
 #include <linux/mm.h>
+#include <trace/hooks/sched.h>
 
 #include <asm/irq_regs.h>
 
@@ -206,8 +207,10 @@ static void tick_sched_do_timer(struct tick_sched *ts, ktime_t now)
 #endif
 
 	/* Check, if the jiffies need an update */
-	if (tick_do_timer_cpu == cpu)
+	if (tick_do_timer_cpu == cpu) {
 		tick_do_update_jiffies64(now);
+		trace_android_vh_jiffies_update(NULL);
+	}
 
 	/*
 	 * If jiffies update stalled for too long (timekeeper in stop_machine()
@@ -1269,6 +1272,7 @@ ktime_t tick_nohz_get_sleep_length(ktime_t *delta_next)
 
 	return ktime_sub(next_event, now);
 }
+EXPORT_SYMBOL_GPL(tick_nohz_get_sleep_length);
 
 /**
  * tick_nohz_get_idle_calls_cpu - return the current idle calls counter value
@@ -1282,6 +1286,7 @@ unsigned long tick_nohz_get_idle_calls_cpu(int cpu)
 
 	return ts->idle_calls;
 }
+EXPORT_SYMBOL_GPL(tick_nohz_get_idle_calls_cpu);
 
 /**
  * tick_nohz_get_idle_calls - return the current idle calls counter value
diff --git a/kernel/time/time.c b/kernel/time/time.c
index 526257b..f2e92bd 100644
--- a/kernel/time/time.c
+++ b/kernel/time/time.c
@@ -686,6 +686,7 @@ u64 nsec_to_clock_t(u64 x)
 	return div_u64(x * 9, (9ull * NSEC_PER_SEC + (USER_HZ / 2)) / USER_HZ);
 #endif
 }
+EXPORT_SYMBOL_GPL(nsec_to_clock_t);
 
 u64 jiffies64_to_nsecs(u64 j)
 {
diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
index 221c8c4..0bb03ae1 100644
--- a/kernel/time/timekeeping.c
+++ b/kernel/time/timekeeping.c
@@ -1055,9 +1055,11 @@ noinstr time64_t __ktime_get_real_seconds(void)
 void ktime_get_snapshot(struct system_time_snapshot *systime_snapshot)
 {
 	struct timekeeper *tk = &tk_core.timekeeper;
+	u32 mono_mult, mono_shift;
 	unsigned int seq;
 	ktime_t base_raw;
 	ktime_t base_real;
+	ktime_t base_boot;
 	u64 nsec_raw;
 	u64 nsec_real;
 	u64 now;
@@ -1072,14 +1074,21 @@ void ktime_get_snapshot(struct system_time_snapshot *systime_snapshot)
 		systime_snapshot->clock_was_set_seq = tk->clock_was_set_seq;
 		base_real = ktime_add(tk->tkr_mono.base,
 				      tk_core.timekeeper.offs_real);
+		base_boot = ktime_add(tk->tkr_mono.base,
+				      tk_core.timekeeper.offs_boot);
 		base_raw = tk->tkr_raw.base;
 		nsec_real = timekeeping_cycles_to_ns(&tk->tkr_mono, now);
 		nsec_raw  = timekeeping_cycles_to_ns(&tk->tkr_raw, now);
+		mono_mult = tk->tkr_mono.mult;
+		mono_shift = tk->tkr_mono.shift;
 	} while (read_seqcount_retry(&tk_core.seq, seq));
 
 	systime_snapshot->cycles = now;
 	systime_snapshot->real = ktime_add_ns(base_real, nsec_real);
+	systime_snapshot->boot = ktime_add_ns(base_boot, nsec_real);
 	systime_snapshot->raw = ktime_add_ns(base_raw, nsec_raw);
+	systime_snapshot->mono_shift = mono_shift;
+	systime_snapshot->mono_mult = mono_mult;
 }
 EXPORT_SYMBOL_GPL(ktime_get_snapshot);
 
diff --git a/kernel/time/timer.c b/kernel/time/timer.c
index 717fcb9..3cd0eb3 100644
--- a/kernel/time/timer.c
+++ b/kernel/time/timer.c
@@ -56,6 +56,11 @@
 
 #define CREATE_TRACE_POINTS
 #include <trace/events/timer.h>
+#undef CREATE_TRACE_POINTS
+#include <trace/hooks/timer.h>
+
+EXPORT_TRACEPOINT_SYMBOL_GPL(hrtimer_expire_entry);
+EXPORT_TRACEPOINT_SYMBOL_GPL(hrtimer_expire_exit);
 
 __visible u64 jiffies_64 __cacheline_aligned_in_smp = INITIAL_JIFFIES;
 
@@ -525,6 +530,7 @@ static inline unsigned calc_index(unsigned long expires, unsigned lvl,
 	 *
 	 * Round up with level granularity to prevent this.
 	 */
+	trace_android_vh_timer_calc_index(lvl, &expires);
 	expires = (expires >> LVL_SHIFT(lvl)) + 1;
 	*bucket_expiry = expires << LVL_SHIFT(lvl);
 	return LVL_OFFS(lvl) + (expires & LVL_MASK);
diff --git a/kernel/trace/power-traces.c b/kernel/trace/power-traces.c
index 21bb161..3ca551c 100644
--- a/kernel/trace/power-traces.c
+++ b/kernel/trace/power-traces.c
@@ -18,4 +18,6 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(suspend_resume);
 EXPORT_TRACEPOINT_SYMBOL_GPL(cpu_idle);
 EXPORT_TRACEPOINT_SYMBOL_GPL(cpu_frequency);
 EXPORT_TRACEPOINT_SYMBOL_GPL(powernv_throttle);
-
+EXPORT_TRACEPOINT_SYMBOL_GPL(device_pm_callback_start);
+EXPORT_TRACEPOINT_SYMBOL_GPL(device_pm_callback_end);
+EXPORT_TRACEPOINT_SYMBOL_GPL(clock_set_rate);
diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
index 4acc27c..fa97377 100644
--- a/kernel/trace/ring_buffer.c
+++ b/kernel/trace/ring_buffer.c
@@ -5,6 +5,7 @@
  * Copyright (C) 2008 Steven Rostedt <srostedt@redhat.com>
  */
 #include <linux/trace_recursion.h>
+#include <linux/ring_buffer_ext.h>
 #include <linux/trace_events.h>
 #include <linux/ring_buffer.h>
 #include <linux/trace_clock.h>
@@ -132,23 +133,6 @@ int ring_buffer_print_entry_header(struct trace_seq *s)
 /* Used for individual buffers (after the counter) */
 #define RB_BUFFER_OFF		(1 << 20)
 
-#define BUF_PAGE_HDR_SIZE offsetof(struct buffer_data_page, data)
-
-#define RB_EVNT_HDR_SIZE (offsetof(struct ring_buffer_event, array))
-#define RB_ALIGNMENT		4U
-#define RB_MAX_SMALL_DATA	(RB_ALIGNMENT * RINGBUF_TYPE_DATA_TYPE_LEN_MAX)
-#define RB_EVNT_MIN_SIZE	8U	/* two 32bit words */
-
-#ifndef CONFIG_HAVE_64BIT_ALIGNED_ACCESS
-# define RB_FORCE_8BYTE_ALIGNMENT	0
-# define RB_ARCH_ALIGNMENT		RB_ALIGNMENT
-#else
-# define RB_FORCE_8BYTE_ALIGNMENT	1
-# define RB_ARCH_ALIGNMENT		8U
-#endif
-
-#define RB_ALIGN_DATA		__aligned(RB_ARCH_ALIGNMENT)
-
 /* define RINGBUF_TYPE_DATA for 'case RINGBUF_TYPE_DATA:' */
 #define RINGBUF_TYPE_DATA 0 ... RINGBUF_TYPE_DATA_TYPE_LEN_MAX
 
@@ -291,10 +275,6 @@ EXPORT_SYMBOL_GPL(ring_buffer_event_data);
 #define for_each_online_buffer_cpu(buffer, cpu)		\
 	for_each_cpu_and(cpu, buffer->cpumask, cpu_online_mask)
 
-#define TS_SHIFT	27
-#define TS_MASK		((1ULL << TS_SHIFT) - 1)
-#define TS_DELTA_TEST	(~TS_MASK)
-
 static u64 rb_event_time_stamp(struct ring_buffer_event *event)
 {
 	u64 ts;
@@ -311,12 +291,6 @@ static u64 rb_event_time_stamp(struct ring_buffer_event *event)
 /* Missed count stored at end */
 #define RB_MISSED_STORED	(1 << 30)
 
-struct buffer_data_page {
-	u64		 time_stamp;	/* page time stamp */
-	local_t		 commit;	/* write committed index */
-	unsigned char	 data[] RB_ALIGN_DATA;	/* data of buffer page */
-};
-
 /*
  * Note, the buffer_page list must be first. The buffer pages
  * are allocated in cache lines, which means that each buffer
@@ -364,18 +338,6 @@ static void free_buffer_page(struct buffer_page *bpage)
 	kfree(bpage);
 }
 
-/*
- * We need to fit the time_stamp delta into 27 bits.
- */
-static inline int test_time_stamp(u64 delta)
-{
-	if (delta & TS_DELTA_TEST)
-		return 1;
-	return 0;
-}
-
-#define BUF_PAGE_SIZE (PAGE_SIZE - BUF_PAGE_HDR_SIZE)
-
 /* Max payload is BUF_PAGE_SIZE - header (8bytes) */
 #define BUF_MAX_DATA_SIZE (BUF_PAGE_SIZE - (sizeof(u32) * 2))
 
@@ -555,6 +517,8 @@ struct trace_buffer {
 
 	struct rb_irq_work		irq_work;
 	bool				time_stamp_abs;
+
+	struct ring_buffer_ext_cb	*ext_cb;
 };
 
 struct ring_buffer_iter {
@@ -760,6 +724,16 @@ static bool rb_time_cmpxchg(rb_time_t *t, u64 expect, u64 set)
 }
 #endif
 
+static inline bool has_ext_writer(struct trace_buffer *buffer)
+{
+	return !!buffer->ext_cb;
+}
+
+static inline bool rb_has_ext_writer(struct ring_buffer_per_cpu *cpu_buffer)
+{
+	return has_ext_writer(cpu_buffer->buffer);
+}
+
 /*
  * Enable this to make sure that the event passed to
  * ring_buffer_event_time_stamp() is not committed and also
@@ -1875,6 +1849,26 @@ struct trace_buffer *__ring_buffer_alloc(unsigned long size, unsigned flags,
 }
 EXPORT_SYMBOL_GPL(__ring_buffer_alloc);
 
+struct trace_buffer *ring_buffer_alloc_ext(unsigned long size,
+					   struct ring_buffer_ext_cb *cb)
+{
+	struct trace_buffer *buffer;
+
+	if (!cb || !cb->update_footers || !cb->swap_reader)
+		return NULL;
+
+	buffer = ring_buffer_alloc(size, RB_FL_OVERWRITE);
+	if (!buffer)
+		return NULL;
+
+	WARN_ON(cpuhp_state_remove_instance(CPUHP_TRACE_RB_PREPARE,
+					    &buffer->node));
+	buffer->ext_cb = cb;
+	atomic_set(&buffer->record_disabled, 1);
+
+	return buffer;
+}
+
 /**
  * ring_buffer_free - free a ring buffer.
  * @buffer: the buffer to free.
@@ -1884,7 +1878,9 @@ ring_buffer_free(struct trace_buffer *buffer)
 {
 	int cpu;
 
-	cpuhp_state_remove_instance(CPUHP_TRACE_RB_PREPARE, &buffer->node);
+	if (!has_ext_writer(buffer))
+		cpuhp_state_remove_instance(CPUHP_TRACE_RB_PREPARE,
+					    &buffer->node);
 
 	irq_work_sync(&buffer->irq_work.work);
 
@@ -2155,6 +2151,8 @@ int ring_buffer_resize(struct trace_buffer *buffer, unsigned long size,
 	unsigned long nr_pages;
 	int cpu, err;
 
+	if (unlikely(has_ext_writer(buffer)))
+		return -EINVAL;
 	/*
 	 * Always succeed at resizing a non-existent buffer:
 	 */
@@ -3476,7 +3474,7 @@ static void check_buffer(struct ring_buffer_per_cpu *cpu_buffer,
 		return;
 
 	/*
-	 * If this interrupted another event, 
+	 * If this interrupted another event,
 	 */
 	if (atomic_inc_return(this_cpu_ptr(&checking)) != 1)
 		goto out;
@@ -3886,6 +3884,9 @@ void ring_buffer_discard_commit(struct trace_buffer *buffer,
 	struct ring_buffer_per_cpu *cpu_buffer;
 	int cpu;
 
+	if (unlikely(has_ext_writer(buffer)))
+		return;
+
 	/* The event is discarded regardless */
 	rb_event_discard(event);
 
@@ -4041,6 +4042,9 @@ EXPORT_SYMBOL_GPL(ring_buffer_record_disable);
  */
 void ring_buffer_record_enable(struct trace_buffer *buffer)
 {
+	if (unlikely(has_ext_writer(buffer)))
+		return;
+
 	atomic_dec(&buffer->record_disabled);
 }
 EXPORT_SYMBOL_GPL(ring_buffer_record_enable);
@@ -4084,6 +4088,9 @@ void ring_buffer_record_on(struct trace_buffer *buffer)
 	unsigned int rd;
 	unsigned int new_rd;
 
+	if (unlikely(has_ext_writer(buffer)))
+		return;
+
 	do {
 		rd = atomic_read(&buffer->record_disabled);
 		new_rd = rd & ~RB_BUFFER_OFF;
@@ -4528,49 +4535,119 @@ rb_update_iter_read_stamp(struct ring_buffer_iter *iter,
 	return;
 }
 
-static struct buffer_page *
-rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer)
+static void __set_head_page_flag(struct buffer_page *head, int flag)
 {
-	struct buffer_page *reader = NULL;
-	unsigned long overwrite;
-	unsigned long flags;
-	int nr_loops = 0;
-	int ret;
+	struct list_head *prev = head->list.prev;
 
-	local_irq_save(flags);
-	arch_spin_lock(&cpu_buffer->lock);
+	prev->next = (struct list_head *)(((unsigned long)prev->next & ~RB_FLAG_MASK) | flag);
+}
 
- again:
+static int __read_footer_reader_status(struct buffer_page *bpage)
+{
+	struct rb_ext_page_footer *footer = rb_ext_page_get_footer(bpage->page);
+
+	return atomic_read(&footer->reader_status);
+}
+
+static int __read_footer_writer_status(struct buffer_page *bpage)
+{
+	struct rb_ext_page_footer *footer = rb_ext_page_get_footer(bpage->page);
+
+	return atomic_read(&footer->writer_status);
+}
+
+static struct buffer_page *
+ring_buffer_search_footer(struct buffer_page *start, unsigned long flag)
+{
+	bool search_writer = flag == RB_PAGE_FT_COMMIT;
+	struct buffer_page *bpage = start;
+	unsigned long status;
+	int cnt = 0;
+again:
+	do {
+		status = search_writer ? __read_footer_writer_status(bpage) :
+					 __read_footer_reader_status(bpage);
+		if (flag & status)
+			return bpage;
+
+		rb_inc_page(&bpage);
+	} while (bpage != start);
+
 	/*
-	 * This should normally only loop twice. But because the
-	 * start of the reader inserts an empty page, it causes
-	 * a case where we will loop three times. There should be no
-	 * reason to loop four times (that I know of).
+	 * There's a chance the writer is in the middle of moving the flag and
+	 * we might not find anything after a first round. Let's try again.
 	 */
-	if (RB_WARN_ON(cpu_buffer, ++nr_loops > 3)) {
-		reader = NULL;
-		goto out;
+	if (cnt++ < 3)
+		goto again;
+
+	return NULL;
+}
+
+static struct buffer_page *
+noinline rb_swap_reader_page_ext(struct ring_buffer_per_cpu *cpu_buffer)
+{
+	struct buffer_page *new_reader, *new_rb_page, *new_head;
+	struct rb_ext_page_footer *footer;
+	unsigned long overrun;
+
+	if (cpu_buffer->buffer->ext_cb->swap_reader(cpu_buffer->cpu)) {
+		WARN_ON(1);
+		return NULL;
 	}
 
-	reader = cpu_buffer->reader_page;
+	new_rb_page = cpu_buffer->reader_page;
 
-	/* If there's more to read, return this page */
-	if (cpu_buffer->reader_page->read < rb_page_size(reader))
-		goto out;
+	/*
+	 * Find what page is the new reader... starting with the latest known
+	 * head.
+	 */
+	new_reader = ring_buffer_search_footer(cpu_buffer->head_page,
+					       RB_PAGE_FT_READER);
+	if (!new_reader) {
+		WARN_ON(1);
+		return NULL;
+	}
 
-	/* Never should we have an index greater than the size */
-	if (RB_WARN_ON(cpu_buffer,
-		       cpu_buffer->reader_page->read > rb_page_size(reader)))
-		goto out;
+	/* ... and install it into the ring buffer in place of the old head */
+	rb_list_head_clear(&new_reader->list);
+	new_rb_page->list.next = new_reader->list.next;
+	new_rb_page->list.prev = new_reader->list.prev;
+	new_rb_page->list.next->prev = &new_rb_page->list;
+	new_rb_page->list.prev->next = &new_rb_page->list;
 
-	/* check if we caught up to the tail */
-	reader = NULL;
-	if (cpu_buffer->commit_page == cpu_buffer->reader_page)
-		goto out;
+	cpu_buffer->reader_page = new_reader;
+	cpu_buffer->reader_page->read = 0;
 
-	/* Don't bother swapping if the ring buffer is empty */
-	if (rb_num_of_entries(cpu_buffer) == 0)
-		goto out;
+	/* Install the new head page */
+	new_head = new_rb_page;
+	rb_inc_page(&new_head);
+	cpu_buffer->head_page = new_head;
+
+	/*
+	 * cpu_buffer->pages just needs to point to the buffer, it
+	 *  has no specific buffer page to point to. Lets move it out
+	 *  of our way so we don't accidentally swap it.
+	 */
+	cpu_buffer->pages = &new_head->list;
+
+	__set_head_page_flag(new_head, RB_PAGE_HEAD);
+
+	footer = rb_ext_page_get_footer(new_reader->page);
+	overrun = footer->stats.overrun;
+	if (overrun != cpu_buffer->last_overrun) {
+		cpu_buffer->lost_events = overrun - cpu_buffer->last_overrun;
+		cpu_buffer->last_overrun = overrun;
+	}
+
+	return new_reader;
+}
+
+static struct buffer_page *
+rb_swap_reader_page(struct ring_buffer_per_cpu *cpu_buffer)
+{
+	struct buffer_page *reader;
+	unsigned long overwrite;
+	int ret;
 
 	/*
 	 * Reset the reader page to size zero.
@@ -4586,7 +4663,8 @@ rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer)
 	 */
 	reader = rb_set_head_page(cpu_buffer);
 	if (!reader)
-		goto out;
+		return NULL;
+
 	cpu_buffer->reader_page->list.next = rb_list_head(reader->list.next);
 	cpu_buffer->reader_page->list.prev = reader->list.prev;
 
@@ -4650,7 +4728,60 @@ rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer)
 		cpu_buffer->last_overrun = overwrite;
 	}
 
-	goto again;
+	return reader;
+}
+
+static struct buffer_page *
+rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer)
+{
+	struct buffer_page *reader = NULL;
+	unsigned long flags;
+	int nr_loops = 0;
+	unsigned int page_size;
+
+	local_irq_save(flags);
+	arch_spin_lock(&cpu_buffer->lock);
+
+ again:
+	/*
+	 * This should normally only loop twice. But because the
+	 * start of the reader inserts an empty page, it causes
+	 * a case where we will loop three times. There should be no
+	 * reason to loop four times (that I know of).
+	 */
+	if (RB_WARN_ON(cpu_buffer, ++nr_loops > 3)) {
+		reader = NULL;
+		goto out;
+	}
+
+	reader = cpu_buffer->reader_page;
+
+	/* If there's more to read, return this page */
+	if (cpu_buffer->reader_page->read < rb_page_size(reader))
+		goto out;
+
+	page_size = rb_page_size(reader);
+	/* Never should we have an index greater than the size */
+	if (RB_WARN_ON(cpu_buffer,
+		       cpu_buffer->reader_page->read > page_size))
+		goto out;
+
+	/* check if we caught up to the tail */
+	reader = NULL;
+	if (cpu_buffer->commit_page == cpu_buffer->reader_page)
+		goto out;
+
+	/* Don't bother swapping if the ring buffer is empty */
+	if (rb_num_of_entries(cpu_buffer) == 0)
+		goto out;
+
+	if (rb_has_ext_writer(cpu_buffer))
+		reader = rb_swap_reader_page_ext(cpu_buffer);
+	else
+		reader = rb_swap_reader_page(cpu_buffer);
+
+	if (reader)
+		goto again;
 
  out:
 	/* Update the read_stamp on the first event */
@@ -5075,6 +5206,73 @@ ring_buffer_consume(struct trace_buffer *buffer, int cpu, u64 *ts,
 }
 EXPORT_SYMBOL_GPL(ring_buffer_consume);
 
+static void ring_buffer_update_view(struct ring_buffer_per_cpu *cpu_buffer)
+{
+	struct rb_ext_page_footer *footer;
+	struct buffer_page *bpage;
+
+	if (!rb_has_ext_writer(cpu_buffer))
+		return;
+
+	raw_spin_lock_irq(&cpu_buffer->reader_lock);
+	arch_spin_lock(&cpu_buffer->lock);
+
+	cpu_buffer->buffer->ext_cb->update_footers(cpu_buffer->cpu);
+
+	bpage = cpu_buffer->reader_page;
+	footer = rb_ext_page_get_footer(bpage->page);
+
+	local_set(&cpu_buffer->entries, footer->stats.entries);
+	local_set(&cpu_buffer->pages_touched, footer->stats.pages_touched);
+	local_set(&cpu_buffer->overrun, footer->stats.overrun);
+
+	/* Update the commit page */
+	bpage = ring_buffer_search_footer(cpu_buffer->commit_page,
+					  RB_PAGE_FT_COMMIT);
+	if (!bpage) {
+		WARN_ON(1);
+		goto unlock;
+	}
+	cpu_buffer->commit_page = bpage;
+
+	/* Update the head page */
+	bpage = ring_buffer_search_footer(cpu_buffer->head_page,
+					  RB_PAGE_FT_HEAD);
+	if (!bpage) {
+		WARN_ON(1);
+		goto unlock;
+	}
+
+	/* Reset the previous RB_PAGE_HEAD flag */
+	__set_head_page_flag(cpu_buffer->head_page, RB_PAGE_NORMAL);
+
+	/* Set RB_PAGE_HEAD flag pointing to the new head */
+	__set_head_page_flag(bpage, RB_PAGE_HEAD);
+
+	cpu_buffer->reader_page->list.next = &cpu_buffer->head_page->list;
+
+	cpu_buffer->head_page = bpage;
+
+unlock:
+	arch_spin_unlock(&cpu_buffer->lock);
+	raw_spin_unlock_irq(&cpu_buffer->reader_lock);
+}
+
+int ring_buffer_poke(struct trace_buffer *buffer, int cpu)
+{
+	struct ring_buffer_per_cpu *cpu_buffer;
+
+	if (!cpumask_test_cpu(cpu, buffer->cpumask))
+		return -EINVAL;
+
+	cpu_buffer = buffer->buffers[cpu];
+
+	ring_buffer_update_view(cpu_buffer);
+	rb_wakeups(buffer, cpu_buffer);
+
+	return 0;
+}
+
 /**
  * ring_buffer_read_prepare - Prepare for a non consuming read of the buffer
  * @buffer: The ring buffer to read from
@@ -5121,6 +5319,8 @@ ring_buffer_read_prepare(struct trace_buffer *buffer, int cpu, gfp_t flags)
 
 	atomic_inc(&cpu_buffer->resize_disabled);
 
+	ring_buffer_update_view(cpu_buffer);
+
 	return iter;
 }
 EXPORT_SYMBOL_GPL(ring_buffer_read_prepare);
@@ -5491,6 +5691,9 @@ int ring_buffer_swap_cpu(struct trace_buffer *buffer_a,
 	struct ring_buffer_per_cpu *cpu_buffer_b;
 	int ret = -EINVAL;
 
+	if (unlikely(has_ext_writer(buffer_a) || has_ext_writer(buffer_b)))
+		return -EINVAL;
+
 	if (!cpumask_test_cpu(cpu, buffer_a->cpumask) ||
 	    !cpumask_test_cpu(cpu, buffer_b->cpumask))
 		goto out;
@@ -5731,7 +5934,8 @@ int ring_buffer_read_page(struct trace_buffer *buffer,
 	 * Otherwise, we can simply swap the page with the one passed in.
 	 */
 	if (read || (len < (commit - read)) ||
-	    cpu_buffer->reader_page == cpu_buffer->commit_page) {
+	    cpu_buffer->reader_page == cpu_buffer->commit_page ||
+	    unlikely(has_ext_writer(buffer))) {
 		struct buffer_data_page *rpage = cpu_buffer->reader_page->page;
 		unsigned int rpos = read;
 		unsigned int pos = 0;
@@ -5891,6 +6095,74 @@ int trace_rb_cpu_prepare(unsigned int cpu, struct hlist_node *node)
 	return 0;
 }
 
+#define TRACE_BUFFER_PACK_HDR_SIZE offsetof(struct trace_buffer_pack, __data)
+#define RING_BUFFER_PACK_HDR_SIZE offsetof(struct ring_buffer_pack, page_va)
+
+size_t trace_buffer_pack_size(struct trace_buffer *trace_buffer)
+{
+	size_t size = 0;
+	int cpu;
+
+	for_each_buffer_cpu(trace_buffer, cpu) {
+		struct ring_buffer_per_cpu *rb = trace_buffer->buffers[cpu];
+		size += rb->nr_pages * sizeof(unsigned long);
+		size += RING_BUFFER_PACK_HDR_SIZE;
+	}
+
+	size += TRACE_BUFFER_PACK_HDR_SIZE;
+
+	return size;
+}
+
+int trace_buffer_pack(struct trace_buffer *trace_buffer,
+		      struct trace_buffer_pack *pack)
+{
+	struct ring_buffer_pack *cpu_pack;
+	int cpu = -1, pack_cpu, j;
+
+	if (!has_ext_writer(trace_buffer))
+		return -EINVAL;
+
+	pack->nr_cpus = cpumask_weight(trace_buffer->cpumask);
+	pack->total_pages = 0;
+
+	for_each_ring_buffer_pack(cpu_pack, pack_cpu, pack) {
+		struct ring_buffer_per_cpu *rb;
+		unsigned long flags, nr_pages;
+		struct buffer_page *bpage;
+
+		cpu = cpumask_next(cpu, trace_buffer->cpumask);
+		if (cpu > nr_cpu_ids) {
+			WARN_ON(1);
+			break;
+		}
+
+		rb = trace_buffer->buffers[cpu];
+
+		local_irq_save(flags);
+		arch_spin_lock(&rb->lock);
+
+		bpage = rb->head_page;
+		nr_pages = rb->nr_pages;
+
+		pack->total_pages += nr_pages + 1;
+
+		cpu_pack->cpu = cpu;
+		cpu_pack->reader_page_va = (unsigned long)rb->reader_page->page;
+		cpu_pack->nr_pages = nr_pages;
+
+		for (j = 0; j < nr_pages; j++) {
+			cpu_pack->page_va[j] = (unsigned long)bpage->page;
+			rb_inc_page(&bpage);
+		}
+
+		arch_spin_unlock(&rb->lock);
+		local_irq_restore(flags);
+	}
+
+	return 0;
+}
+
 #ifdef CONFIG_RING_BUFFER_STARTUP_TEST
 /*
  * This is a basic integrity check of the ring buffer.
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index 5c1087d..d0a3b9e 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -49,6 +49,7 @@
 #include <linux/fsnotify.h>
 #include <linux/irq_work.h>
 #include <linux/workqueue.h>
+#include <trace/hooks/ftrace_dump.h>
 
 #include "trace.h"
 #include "trace_output.h"
@@ -9883,8 +9884,17 @@ fs_initcall(tracer_init_tracefs);
 static int trace_panic_handler(struct notifier_block *this,
 			       unsigned long event, void *unused)
 {
+	bool ftrace_check = false;
+
+	trace_android_vh_ftrace_oops_enter(&ftrace_check);
+
+	if (ftrace_check)
+		return NOTIFY_OK;
+
 	if (ftrace_dump_on_oops)
 		ftrace_dump(ftrace_dump_on_oops);
+
+	trace_android_vh_ftrace_oops_exit(&ftrace_check);
 	return NOTIFY_OK;
 }
 
@@ -9898,6 +9908,13 @@ static int trace_die_handler(struct notifier_block *self,
 			     unsigned long val,
 			     void *data)
 {
+	bool ftrace_check = false;
+
+	trace_android_vh_ftrace_oops_enter(&ftrace_check);
+
+	if (ftrace_check)
+		return NOTIFY_OK;
+
 	switch (val) {
 	case DIE_OOPS:
 		if (ftrace_dump_on_oops)
@@ -9906,6 +9923,8 @@ static int trace_die_handler(struct notifier_block *self,
 	default:
 		break;
 	}
+
+	trace_android_vh_ftrace_oops_exit(&ftrace_check);
 	return NOTIFY_OK;
 }
 
@@ -9930,6 +9949,8 @@ static struct notifier_block trace_die_notifier = {
 void
 trace_printk_seq(struct trace_seq *s)
 {
+	bool dump_printk = true;
+
 	/* Probably should print a warning here. */
 	if (s->seq.len >= TRACE_MAX_PRINT)
 		s->seq.len = TRACE_MAX_PRINT;
@@ -9945,7 +9966,9 @@ trace_printk_seq(struct trace_seq *s)
 	/* should be zero ended, but we are paranoid. */
 	s->buffer[s->seq.len] = 0;
 
-	printk(KERN_TRACE "%s", s->buffer);
+	trace_android_vh_ftrace_dump_buffer(s, &dump_printk);
+	if (dump_printk)
+		printk(KERN_TRACE "%s", s->buffer);
 
 	trace_seq_init(s);
 }
@@ -9984,6 +10007,8 @@ void ftrace_dump(enum ftrace_dump_mode oops_dump_mode)
 	unsigned int old_userobj;
 	unsigned long flags;
 	int cnt = 0, cpu;
+	bool ftrace_check = false;
+	unsigned long size;
 
 	/* Only allow one dump user at a time. */
 	if (atomic_inc_return(&dump_running) != 1) {
@@ -10008,6 +10033,8 @@ void ftrace_dump(enum ftrace_dump_mode oops_dump_mode)
 
 	for_each_tracing_cpu(cpu) {
 		atomic_inc(&per_cpu_ptr(iter.array_buffer->data, cpu)->disabled);
+		size = ring_buffer_size(iter.array_buffer->buffer, cpu);
+		trace_android_vh_ftrace_size_check(size, &ftrace_check);
 	}
 
 	old_userobj = tr->trace_flags & TRACE_ITER_SYM_USEROBJ;
@@ -10015,6 +10042,9 @@ void ftrace_dump(enum ftrace_dump_mode oops_dump_mode)
 	/* don't look at user memory in panic mode */
 	tr->trace_flags &= ~TRACE_ITER_SYM_USEROBJ;
 
+	if (ftrace_check)
+		goto out_enable;
+
 	switch (oops_dump_mode) {
 	case DUMP_ALL:
 		iter.cpu_file = RING_BUFFER_ALL_CPUS;
@@ -10045,6 +10075,7 @@ void ftrace_dump(enum ftrace_dump_mode oops_dump_mode)
 	 */
 
 	while (!trace_empty(&iter)) {
+		ftrace_check = true;
 
 		if (!cnt)
 			printk(KERN_TRACE "---------------------------------\n");
@@ -10052,7 +10083,9 @@ void ftrace_dump(enum ftrace_dump_mode oops_dump_mode)
 		cnt++;
 
 		trace_iterator_reset(&iter);
-		iter.iter_flags |= TRACE_FILE_LAT_FMT;
+		trace_android_vh_ftrace_format_check(&ftrace_check);
+		if (ftrace_check)
+			iter.iter_flags |= TRACE_FILE_LAT_FMT;
 
 		if (trace_find_next_entry_inc(&iter) != NULL) {
 			int ret;
diff --git a/kernel/trace/trace_preemptirq.c b/kernel/trace/trace_preemptirq.c
index 1e130da..070befb 100644
--- a/kernel/trace/trace_preemptirq.c
+++ b/kernel/trace/trace_preemptirq.c
@@ -14,6 +14,8 @@
 
 #define CREATE_TRACE_POINTS
 #include <trace/events/preemptirq.h>
+#undef CREATE_TRACE_POINTS
+#include <trace/hooks/preemptirq.h>
 
 #ifdef CONFIG_TRACE_IRQFLAGS
 /* Per-cpu variable to prevent redundant calls when IRQs already off */
@@ -28,8 +30,11 @@ static DEFINE_PER_CPU(int, tracing_irq_cpu);
 void trace_hardirqs_on_prepare(void)
 {
 	if (this_cpu_read(tracing_irq_cpu)) {
-		if (!in_nmi())
+		if (!in_nmi()) {
 			trace_irq_enable(CALLER_ADDR0, CALLER_ADDR1);
+			trace_android_rvh_irqs_enable(CALLER_ADDR0,
+						      CALLER_ADDR1);
+		}
 		tracer_hardirqs_on(CALLER_ADDR0, CALLER_ADDR1);
 		this_cpu_write(tracing_irq_cpu, 0);
 	}
@@ -40,8 +45,11 @@ NOKPROBE_SYMBOL(trace_hardirqs_on_prepare);
 void trace_hardirqs_on(void)
 {
 	if (this_cpu_read(tracing_irq_cpu)) {
-		if (!in_nmi())
+		if (!in_nmi()) {
 			trace_irq_enable_rcuidle(CALLER_ADDR0, CALLER_ADDR1);
+			trace_android_rvh_irqs_enable(CALLER_ADDR0,
+						      CALLER_ADDR1);
+		}
 		tracer_hardirqs_on(CALLER_ADDR0, CALLER_ADDR1);
 		this_cpu_write(tracing_irq_cpu, 0);
 	}
@@ -63,8 +71,11 @@ void trace_hardirqs_off_finish(void)
 	if (!this_cpu_read(tracing_irq_cpu)) {
 		this_cpu_write(tracing_irq_cpu, 1);
 		tracer_hardirqs_off(CALLER_ADDR0, CALLER_ADDR1);
-		if (!in_nmi())
+		if (!in_nmi()) {
 			trace_irq_disable(CALLER_ADDR0, CALLER_ADDR1);
+			trace_android_rvh_irqs_disable(CALLER_ADDR0,
+						       CALLER_ADDR1);
+		}
 	}
 
 }
@@ -78,8 +89,11 @@ void trace_hardirqs_off(void)
 	if (!this_cpu_read(tracing_irq_cpu)) {
 		this_cpu_write(tracing_irq_cpu, 1);
 		tracer_hardirqs_off(CALLER_ADDR0, CALLER_ADDR1);
-		if (!in_nmi())
+		if (!in_nmi()) {
 			trace_irq_disable_rcuidle(CALLER_ADDR0, CALLER_ADDR1);
+			trace_android_rvh_irqs_disable(CALLER_ADDR0,
+						       CALLER_ADDR1);
+		}
 	}
 }
 EXPORT_SYMBOL(trace_hardirqs_off);
@@ -88,8 +102,11 @@ NOKPROBE_SYMBOL(trace_hardirqs_off);
 __visible void trace_hardirqs_on_caller(unsigned long caller_addr)
 {
 	if (this_cpu_read(tracing_irq_cpu)) {
-		if (!in_nmi())
+		if (!in_nmi()) {
 			trace_irq_enable_rcuidle(CALLER_ADDR0, caller_addr);
+			trace_android_rvh_irqs_enable(CALLER_ADDR0,
+						      caller_addr);
+		}
 		tracer_hardirqs_on(CALLER_ADDR0, caller_addr);
 		this_cpu_write(tracing_irq_cpu, 0);
 	}
@@ -107,8 +124,11 @@ __visible void trace_hardirqs_off_caller(unsigned long caller_addr)
 	if (!this_cpu_read(tracing_irq_cpu)) {
 		this_cpu_write(tracing_irq_cpu, 1);
 		tracer_hardirqs_off(CALLER_ADDR0, caller_addr);
-		if (!in_nmi())
+		if (!in_nmi()) {
 			trace_irq_disable_rcuidle(CALLER_ADDR0, caller_addr);
+			trace_android_rvh_irqs_enable(CALLER_ADDR0,
+						      caller_addr);
+		}
 	}
 }
 EXPORT_SYMBOL(trace_hardirqs_off_caller);
@@ -119,15 +139,19 @@ NOKPROBE_SYMBOL(trace_hardirqs_off_caller);
 
 void trace_preempt_on(unsigned long a0, unsigned long a1)
 {
-	if (!in_nmi())
+	if (!in_nmi()) {
 		trace_preempt_enable_rcuidle(a0, a1);
+		trace_android_rvh_preempt_enable(a0, a1);
+	}
 	tracer_preempt_on(a0, a1);
 }
 
 void trace_preempt_off(unsigned long a0, unsigned long a1)
 {
-	if (!in_nmi())
+	if (!in_nmi()) {
 		trace_preempt_disable_rcuidle(a0, a1);
+		trace_android_rvh_preempt_disable(a0, a1);
+	}
 	tracer_preempt_off(a0, a1);
 }
 #endif
diff --git a/kernel/tracepoint.c b/kernel/tracepoint.c
index f23144a..a644ecc 100644
--- a/kernel/tracepoint.c
+++ b/kernel/tracepoint.c
@@ -785,3 +785,82 @@ void syscall_unregfunc(void)
 	}
 }
 #endif
+
+#ifdef CONFIG_ANDROID_VENDOR_HOOKS
+
+static void *rvh_zalloc_funcs(int count)
+{
+	return kzalloc(sizeof(struct tracepoint_func) * count, GFP_KERNEL);
+}
+
+#define ANDROID_RVH_NR_PROBES_MAX	2
+static int rvh_func_add(struct tracepoint *tp, struct tracepoint_func *func)
+{
+	int i;
+
+	if (!static_key_enabled(&tp->key)) {
+		/* '+ 1' for the last NULL element */
+		tp->funcs = rvh_zalloc_funcs(ANDROID_RVH_NR_PROBES_MAX + 1);
+		if (!tp->funcs)
+			return ENOMEM;
+	}
+
+	for (i = 0; i < ANDROID_RVH_NR_PROBES_MAX; i++) {
+		if (!tp->funcs[i].func) {
+			if (!static_key_enabled(&tp->key))
+				tp->funcs[i].data = func->data;
+			WRITE_ONCE(tp->funcs[i].func, func->func);
+
+			return 0;
+		}
+	}
+
+	return -EBUSY;
+}
+
+static int android_rvh_add_func(struct tracepoint *tp, struct tracepoint_func *func)
+{
+	int ret;
+
+	if (tp->regfunc && !static_key_enabled(&tp->key)) {
+		ret = tp->regfunc();
+		if (ret < 0)
+			return ret;
+	}
+
+	ret = rvh_func_add(tp, func);
+	if (ret)
+		return ret;
+	tracepoint_update_call(tp, tp->funcs);
+	static_key_enable(&tp->key);
+
+	return 0;
+}
+
+int android_rvh_probe_register(struct tracepoint *tp, void *probe, void *data)
+{
+	struct tracepoint_func tp_func;
+	int ret;
+
+	/*
+	 * Once the static key has been flipped, the array may be read
+	 * concurrently. Although __traceiter_*()  always checks .func first,
+	 * it doesn't enforce read->read dependencies, and we can't strongly
+	 * guarantee it will see the correct .data for the second element
+	 * without adding smp_load_acquire() in the fast path. But this is a
+	 * corner case which is unlikely to be needed by anybody in practice,
+	 * so let's just forbid it and keep the fast path clean.
+	 */
+	if (WARN_ON(static_key_enabled(&tp->key) && data))
+		return -EINVAL;
+
+	mutex_lock(&tracepoints_mutex);
+	tp_func.func = probe;
+	tp_func.data = data;
+	ret = android_rvh_add_func(tp, &tp_func);
+	mutex_unlock(&tracepoints_mutex);
+
+	return ret;
+}
+EXPORT_SYMBOL_GPL(android_rvh_probe_register);
+#endif
diff --git a/kernel/user.c b/kernel/user.c
index e2cf8c2..b2ce404 100644
--- a/kernel/user.c
+++ b/kernel/user.c
@@ -20,6 +20,8 @@
 #include <linux/user_namespace.h>
 #include <linux/proc_ns.h>
 
+#include <trace/hooks/user.h>
+
 /*
  * userns count is 1 for root user, 1 for init_uts_ns,
  * and 1 for... ?
@@ -152,6 +154,7 @@ static void user_epoll_free(struct user_struct *up)
 static void free_user(struct user_struct *up, unsigned long flags)
 	__releases(&uidhash_lock)
 {
+	trace_android_vh_free_user(up);
 	uid_hash_remove(up);
 	spin_unlock_irqrestore(&uidhash_lock, flags);
 	user_epoll_free(up);
@@ -174,6 +177,7 @@ struct user_struct *find_user(kuid_t uid)
 	spin_unlock_irqrestore(&uidhash_lock, flags);
 	return ret;
 }
+EXPORT_SYMBOL_GPL(find_user);
 
 void free_uid(struct user_struct *up)
 {
@@ -185,6 +189,7 @@ void free_uid(struct user_struct *up)
 	if (refcount_dec_and_lock_irqsave(&up->__count, &uidhash_lock, &flags))
 		free_user(up, flags);
 }
+EXPORT_SYMBOL_GPL(free_uid);
 
 struct user_struct *alloc_uid(kuid_t uid)
 {
@@ -202,6 +207,7 @@ struct user_struct *alloc_uid(kuid_t uid)
 
 		new->uid = uid;
 		refcount_set(&new->__count, 1);
+		trace_android_vh_alloc_uid(new);
 		if (user_epoll_alloc(new)) {
 			kmem_cache_free(uid_cachep, new);
 			return NULL;
diff --git a/kernel/watchdog.c b/kernel/watchdog.c
index 8e61f21..fc9e28e 100644
--- a/kernel/watchdog.c
+++ b/kernel/watchdog.c
@@ -27,6 +27,8 @@
 #include <asm/irq_regs.h>
 #include <linux/kvm_para.h>
 
+#include <trace/hooks/softlockup.h>
+
 static DEFINE_MUTEX(watchdog_mutex);
 
 #if defined(CONFIG_HARDLOCKUP_DETECTOR) || defined(CONFIG_HAVE_NMI_WATCHDOG)
@@ -439,6 +441,7 @@ static enum hrtimer_restart watchdog_timer_fn(struct hrtimer *hrtimer)
 			clear_bit_unlock(0, &soft_lockup_nmi_warn);
 		}
 
+		trace_android_vh_watchdog_timer_softlockup(duration, regs, !!softlockup_panic);
 		add_taint(TAINT_SOFTLOCKUP, LOCKDEP_STILL_OK);
 		if (softlockup_panic)
 			panic("softlockup: hung tasks");
diff --git a/kernel/workqueue.c b/kernel/workqueue.c
index 4dd494f..485a173 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -54,6 +54,10 @@
 
 #include "workqueue_internal.h"
 
+#include <trace/hooks/wqlockup.h>
+/* events/workqueue.h uses default TRACE_INCLUDE_PATH */
+#undef TRACE_INCLUDE_PATH
+
 enum {
 	/*
 	 * worker_pool flags
@@ -381,6 +385,9 @@ static void show_one_worker_pool(struct worker_pool *pool);
 #define CREATE_TRACE_POINTS
 #include <trace/events/workqueue.h>
 
+EXPORT_TRACEPOINT_SYMBOL_GPL(workqueue_execute_start);
+EXPORT_TRACEPOINT_SYMBOL_GPL(workqueue_execute_end);
+
 #define assert_rcu_or_pool_mutex()					\
 	RCU_LOCKDEP_WARN(!rcu_read_lock_held() &&			\
 			 !lockdep_is_held(&wq_pool_mutex),		\
@@ -4953,6 +4960,7 @@ void wq_worker_comm(char *buf, size_t size, struct task_struct *task)
 
 	mutex_unlock(&wq_pool_attach_mutex);
 }
+EXPORT_SYMBOL_GPL(wq_worker_comm);
 
 #ifdef CONFIG_SMP
 
@@ -5866,6 +5874,7 @@ static void wq_watchdog_timer_fn(struct timer_list *unused)
 			pr_cont_pool_info(pool);
 			pr_cont(" stuck for %us!\n",
 				jiffies_to_msecs(now - pool_ts) / 1000);
+			trace_android_vh_wq_lockup_pool(pool->cpu, pool_ts);
 		}
 	}
 
diff --git a/lib/Makefile b/lib/Makefile
index 59bd7c2..889f96b1 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -377,6 +377,7 @@
 obj-$(CONFIG_SLUB_KUNIT_TEST) += slub_kunit.o
 obj-$(CONFIG_MEMCPY_KUNIT_TEST) += memcpy_kunit.o
 obj-$(CONFIG_IS_SIGNED_TYPE_KUNIT_TEST) += is_signed_type_kunit.o
+CFLAGS_overflow_kunit.o = $(call cc-disable-warning, tautological-constant-out-of-range-compare)
 obj-$(CONFIG_OVERFLOW_KUNIT_TEST) += overflow_kunit.o
 CFLAGS_stackinit_kunit.o += $(call cc-disable-warning, switch-unreachable)
 obj-$(CONFIG_STACKINIT_KUNIT_TEST) += stackinit_kunit.o
diff --git a/lib/bug.c b/lib/bug.c
index e0ff219..5106dba 100644
--- a/lib/bug.c
+++ b/lib/bug.c
@@ -49,6 +49,8 @@
 #include <linux/ftrace.h>
 #include <linux/context_tracking.h>
 
+#include <trace/hooks/bug.h>
+
 extern struct bug_entry __start___bug_table[], __stop___bug_table[];
 
 static inline unsigned long bug_addr(const struct bug_entry *bug)
@@ -207,6 +209,8 @@ static enum bug_trap_type __report_bug(unsigned long bugaddr, struct pt_regs *re
 		pr_crit("Kernel BUG at %pB [verbose debug info unavailable]\n",
 			(void *)bugaddr);
 
+	trace_android_rvh_report_bug(file, line, bugaddr);
+
 	return BUG_TRAP_TYPE_BUG;
 }
 
diff --git a/lib/crypto/aes.c b/lib/crypto/aes.c
index 827fe89..5fc78e5 100644
--- a/lib/crypto/aes.c
+++ b/lib/crypto/aes.c
@@ -7,6 +7,7 @@
 #include <linux/crypto.h>
 #include <linux/module.h>
 #include <asm/unaligned.h>
+#include <trace/hooks/fips140.h>
 
 /*
  * Emit the sbox as volatile const to prevent the compiler from doing
@@ -189,6 +190,13 @@ int aes_expandkey(struct crypto_aes_ctx *ctx, const u8 *in_key,
 	u32 rc, i, j;
 	int err;
 
+#ifndef __DISABLE_EXPORTS
+	err = -(MAX_ERRNO + 1);
+	trace_android_vh_aes_expandkey(ctx, in_key, key_len, &err);
+	if (err != -(MAX_ERRNO + 1))
+		return err;
+#endif
+
 	err = aes_check_keylen(key_len);
 	if (err)
 		return err;
@@ -261,6 +269,13 @@ void aes_encrypt(const struct crypto_aes_ctx *ctx, u8 *out, const u8 *in)
 	int rounds = 6 + ctx->key_length / 4;
 	u32 st0[4], st1[4];
 	int round;
+#ifndef __DISABLE_EXPORTS
+	int hook_inuse = 0;
+
+	trace_android_vh_aes_encrypt(ctx, out, in, &hook_inuse);
+	if (hook_inuse)
+		return;
+#endif
 
 	st0[0] = ctx->key_enc[0] ^ get_unaligned_le32(in);
 	st0[1] = ctx->key_enc[1] ^ get_unaligned_le32(in + 4);
@@ -312,6 +327,13 @@ void aes_decrypt(const struct crypto_aes_ctx *ctx, u8 *out, const u8 *in)
 	int rounds = 6 + ctx->key_length / 4;
 	u32 st0[4], st1[4];
 	int round;
+#ifndef __DISABLE_EXPORTS
+	int hook_inuse = 0;
+
+	trace_android_vh_aes_decrypt(ctx, out, in, &hook_inuse);
+	if (hook_inuse)
+		return;
+#endif
 
 	st0[0] = ctx->key_dec[0] ^ get_unaligned_le32(in);
 	st0[1] = ctx->key_dec[1] ^ get_unaligned_le32(in + 4);
diff --git a/lib/crypto/sha256.c b/lib/crypto/sha256.c
index 72a4b0b..3f04750 100644
--- a/lib/crypto/sha256.c
+++ b/lib/crypto/sha256.c
@@ -17,6 +17,7 @@
 #include <linux/string.h>
 #include <crypto/sha2.h>
 #include <asm/unaligned.h>
+#include <trace/hooks/fips140.h>
 
 static const u32 SHA256_K[] = {
 	0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
@@ -200,6 +201,14 @@ void sha256(const u8 *data, unsigned int len, u8 *out)
 {
 	struct sha256_state sctx;
 
+#ifndef __DISABLE_EXPORTS
+	int hook_inuse = 0;
+
+	trace_android_vh_sha256(data, len, out, &hook_inuse);
+	if (hook_inuse)
+		return;
+#endif
+
 	sha256_init(&sctx);
 	sha256_update(&sctx, data, len);
 	sha256_final(&sctx, out);
diff --git a/lib/maple_tree.c b/lib/maple_tree.c
index b722688..ca65dbe 100644
--- a/lib/maple_tree.c
+++ b/lib/maple_tree.c
@@ -1101,7 +1101,6 @@ static int mas_ascend(struct ma_state *mas)
 	enum maple_type a_type;
 	unsigned long min, max;
 	unsigned long *pivots;
-	unsigned char offset;
 	bool set_max = false, set_min = false;
 
 	a_node = mas_mn(mas);
@@ -1113,8 +1112,9 @@ static int mas_ascend(struct ma_state *mas)
 	p_node = mte_parent(mas->node);
 	if (unlikely(a_node == p_node))
 		return 1;
+
 	a_type = mas_parent_enum(mas, mas->node);
-	offset = mte_parent_slot(mas->node);
+	mas->offset = mte_parent_slot(mas->node);
 	a_enode = mt_mk_node(p_node, a_type);
 
 	/* Check to make sure all parent information is still accurate */
@@ -1122,7 +1122,6 @@ static int mas_ascend(struct ma_state *mas)
 		return 1;
 
 	mas->node = a_enode;
-	mas->offset = offset;
 
 	if (mte_is_root(a_enode)) {
 		mas->max = ULONG_MAX;
@@ -1130,6 +1129,12 @@ static int mas_ascend(struct ma_state *mas)
 		return 0;
 	}
 
+	if (!mas->min)
+		set_min = true;
+
+	if (mas->max == ULONG_MAX)
+		set_max = true;
+
 	min = 0;
 	max = ULONG_MAX;
 	do {
@@ -4279,16 +4284,6 @@ static inline bool mas_wr_slot_store(struct ma_wr_state *wr_mas)
 	return true;
 }
 
-static inline void mas_wr_end_piv(struct ma_wr_state *wr_mas)
-{
-	while ((wr_mas->mas->last > wr_mas->end_piv) &&
-	       (wr_mas->offset_end < wr_mas->node_end))
-		wr_mas->end_piv = wr_mas->pivots[++wr_mas->offset_end];
-
-	if (wr_mas->mas->last > wr_mas->end_piv)
-		wr_mas->end_piv = wr_mas->mas->max;
-}
-
 static inline void mas_wr_extend_null(struct ma_wr_state *wr_mas)
 {
 	struct ma_state *mas = wr_mas->mas;
@@ -4323,6 +4318,21 @@ static inline void mas_wr_extend_null(struct ma_wr_state *wr_mas)
 	}
 }
 
+static inline void mas_wr_end_piv(struct ma_wr_state *wr_mas)
+{
+	wr_mas->end_piv = wr_mas->r_max;
+
+	while ((wr_mas->mas->last > wr_mas->end_piv) &&
+	       (wr_mas->offset_end < wr_mas->node_end))
+		wr_mas->end_piv = wr_mas->pivots[++wr_mas->offset_end];
+
+	if (wr_mas->mas->last > wr_mas->end_piv)
+		wr_mas->end_piv = wr_mas->mas->max;
+
+	if (!wr_mas->entry)
+		mas_wr_extend_null(wr_mas);
+}
+
 static inline bool mas_wr_append(struct ma_wr_state *wr_mas)
 {
 	unsigned char end = wr_mas->node_end;
@@ -4376,6 +4386,11 @@ static void mas_wr_bnode(struct ma_wr_state *wr_mas)
 	mas_commit_b_node(wr_mas, &b_node, wr_mas->node_end);
 }
 
+static inline unsigned char mas_wr_node_size(struct ma_wr_state *wr_mas)
+{
+	return wr_mas->node_end - wr_mas->offset_end + wr_mas->mas->offset + 2;
+}
+
 static inline void mas_wr_modify(struct ma_wr_state *wr_mas)
 {
 	unsigned char node_slots;
@@ -4392,9 +4407,7 @@ static inline void mas_wr_modify(struct ma_wr_state *wr_mas)
 
 	/* Attempt to append */
 	node_slots = mt_slots[wr_mas->type];
-	node_size = wr_mas->node_end - wr_mas->offset_end + mas->offset + 2;
-	if (mas->max == ULONG_MAX)
-		node_size++;
+	node_size = mas_wr_node_size(wr_mas);
 
 	/* slot and node store will not fit, go to the slow path */
 	if (unlikely(node_size >= node_slots))
@@ -4442,12 +4455,8 @@ static inline void *mas_wr_store_entry(struct ma_wr_state *wr_mas)
 	}
 
 	/* At this point, we are at the leaf node that needs to be altered. */
-	wr_mas->end_piv = wr_mas->r_max;
 	mas_wr_end_piv(wr_mas);
 
-	if (!wr_mas->entry)
-		mas_wr_extend_null(wr_mas);
-
 	/* New root for a single pointer */
 	if (unlikely(!mas->index && mas->last == ULONG_MAX)) {
 		mas_new_root(mas, wr_mas->entry);
@@ -4516,6 +4525,25 @@ static inline void *mas_insert(struct ma_state *mas, void *entry)
 
 }
 
+static inline void mas_rewalk(struct ma_state *mas, unsigned long index)
+{
+retry:
+	mas_set(mas, index);
+	mas_state_walk(mas);
+	if (mas_is_start(mas))
+		goto retry;
+}
+
+static inline bool mas_rewalk_if_dead(struct ma_state *mas,
+		struct maple_node *node, const unsigned long index)
+{
+	if (unlikely(ma_dead_node(node))) {
+		mas_rewalk(mas, index);
+		return true;
+	}
+	return false;
+}
+
 /*
  * mas_prev_node() - Find the prev non-null entry at the same level in the
  * tree.  The prev value will be mas->node[mas->offset] or MAS_NONE.
@@ -4531,15 +4559,19 @@ static inline int mas_prev_node(struct ma_state *mas, unsigned long min)
 	int offset, level;
 	void __rcu **slots;
 	struct maple_node *node;
-	struct maple_enode *enode;
 	unsigned long *pivots;
+	unsigned long max;
 
-	if (mas_is_none(mas))
-		return 0;
+	node = mas_mn(mas);
+	if (!mas->min)
+		goto no_entry;
+
+	max = mas->min - 1;
+	if (max < min)
+		goto no_entry;
 
 	level = 0;
 	do {
-		node = mas_mn(mas);
 		if (ma_is_root(node))
 			goto no_entry;
 
@@ -4548,64 +4580,41 @@ static inline int mas_prev_node(struct ma_state *mas, unsigned long min)
 			return 1;
 		offset = mas->offset;
 		level++;
+		node = mas_mn(mas);
 	} while (!offset);
 
 	offset--;
 	mt = mte_node_type(mas->node);
-	node = mas_mn(mas);
+	while (level > 1) {
+		level--;
+		slots = ma_slots(node, mt);
+		mas->node = mas_slot(mas, slots, offset);
+		if (unlikely(ma_dead_node(node)))
+			return 1;
+
+		mt = mte_node_type(mas->node);
+		node = mas_mn(mas);
+		pivots = ma_pivots(node, mt);
+		offset = ma_data_end(node, mt, pivots, max);
+		if (unlikely(ma_dead_node(node)))
+			return 1;
+	}
+
 	slots = ma_slots(node, mt);
+	mas->node = mas_slot(mas, slots, offset);
 	pivots = ma_pivots(node, mt);
 	if (unlikely(ma_dead_node(node)))
 		return 1;
 
-	mas->max = pivots[offset];
-	if (offset)
+	if (likely(offset))
 		mas->min = pivots[offset - 1] + 1;
-	if (unlikely(ma_dead_node(node)))
-		return 1;
-
-	if (mas->max < min)
-		goto no_entry_min;
-
-	while (level > 1) {
-		level--;
-		enode = mas_slot(mas, slots, offset);
-		if (unlikely(ma_dead_node(node)))
-			return 1;
-
-		mas->node = enode;
-		mt = mte_node_type(mas->node);
-		node = mas_mn(mas);
-		slots = ma_slots(node, mt);
-		pivots = ma_pivots(node, mt);
-		offset = ma_data_end(node, mt, pivots, mas->max);
-		if (unlikely(ma_dead_node(node)))
-			return 1;
-
-		if (offset)
-			mas->min = pivots[offset - 1] + 1;
-
-		if (offset < mt_pivots[mt])
-			mas->max = pivots[offset];
-
-		if (mas->max < min)
-			goto no_entry;
-	}
-
-	mas->node = mas_slot(mas, slots, offset);
-	if (unlikely(ma_dead_node(node)))
-		return 1;
-
+	mas->max = max;
 	mas->offset = mas_data_end(mas);
 	if (unlikely(mte_dead_node(mas->node)))
 		return 1;
 
 	return 0;
 
-no_entry_min:
-	mas->offset = offset;
-	if (offset)
-		mas->min = pivots[offset - 1] + 1;
 no_entry:
 	if (unlikely(ma_dead_node(node)))
 		return 1;
@@ -4615,6 +4624,76 @@ static inline int mas_prev_node(struct ma_state *mas, unsigned long min)
 }
 
 /*
+ * mas_prev_slot() - Get the entry in the previous slot
+ *
+ * @mas: The maple state
+ * @max: The minimum starting range
+ *
+ * Return: The entry in the previous slot which is possibly NULL
+ */
+static void *mas_prev_slot(struct ma_state *mas, unsigned long min, bool empty)
+{
+	void *entry;
+	void __rcu **slots;
+	unsigned long pivot;
+	enum maple_type type;
+	unsigned long *pivots;
+	struct maple_node *node;
+	unsigned long save_point = mas->index;
+
+retry:
+	node = mas_mn(mas);
+	type = mte_node_type(mas->node);
+	pivots = ma_pivots(node, type);
+	if (unlikely(mas_rewalk_if_dead(mas, node, save_point)))
+		goto retry;
+
+again:
+	if (mas->min <= min) {
+		pivot = mas_safe_min(mas, pivots, mas->offset);
+
+		if (unlikely(mas_rewalk_if_dead(mas, node, save_point)))
+			goto retry;
+
+		if (pivot <= min)
+			return NULL;
+	}
+
+	if (likely(mas->offset)) {
+		mas->offset--;
+		mas->last = mas->index - 1;
+		mas->index = mas_safe_min(mas, pivots, mas->offset);
+	} else  {
+		if (mas_prev_node(mas, min)) {
+			mas_rewalk(mas, save_point);
+			goto retry;
+		}
+
+		if (mas_is_none(mas))
+			return NULL;
+
+		mas->last = mas->max;
+		node = mas_mn(mas);
+		type = mte_node_type(mas->node);
+		pivots = ma_pivots(node, type);
+		mas->index = pivots[mas->offset - 1] + 1;
+	}
+
+	slots = ma_slots(node, type);
+	entry = mas_slot(mas, slots, mas->offset);
+	if (unlikely(mas_rewalk_if_dead(mas, node, save_point)))
+		goto retry;
+
+	if (likely(entry))
+		return entry;
+
+	if (!empty)
+		goto again;
+
+	return entry;
+}
+
+/*
  * mas_next_node() - Get the next node at the same level in the tree.
  * @mas: The maple state
  * @max: The maximum pivot value to check.
@@ -4625,11 +4704,10 @@ static inline int mas_prev_node(struct ma_state *mas, unsigned long min)
 static inline int mas_next_node(struct ma_state *mas, struct maple_node *node,
 				unsigned long max)
 {
-	unsigned long min, pivot;
+	unsigned long min;
 	unsigned long *pivots;
 	struct maple_enode *enode;
 	int level = 0;
-	unsigned char offset;
 	unsigned char node_end;
 	enum maple_type mt;
 	void __rcu **slots;
@@ -4637,19 +4715,16 @@ static inline int mas_next_node(struct ma_state *mas, struct maple_node *node,
 	if (mas->max >= max)
 		goto no_entry;
 
+	min = mas->max + 1;
 	level = 0;
 	do {
 		if (ma_is_root(node))
 			goto no_entry;
 
-		min = mas->max + 1;
-		if (min > max)
-			goto no_entry;
-
+		/* Walk up. */
 		if (unlikely(mas_ascend(mas)))
 			return 1;
 
-		offset = mas->offset;
 		level++;
 		node = mas_mn(mas);
 		mt = mte_node_type(mas->node);
@@ -4658,36 +4733,37 @@ static inline int mas_next_node(struct ma_state *mas, struct maple_node *node,
 		if (unlikely(ma_dead_node(node)))
 			return 1;
 
-	} while (unlikely(offset == node_end));
+	} while (unlikely(mas->offset == node_end));
 
 	slots = ma_slots(node, mt);
-	pivot = mas_safe_pivot(mas, pivots, ++offset, mt);
-	while (unlikely(level > 1)) {
-		/* Descend, if necessary */
-		enode = mas_slot(mas, slots, offset);
-		if (unlikely(ma_dead_node(node)))
-			return 1;
+	mas->offset++;
+	enode = mas_slot(mas, slots, mas->offset);
+	if (unlikely(ma_dead_node(node)))
+		return 1;
 
-		mas->node = enode;
+	if (level > 1)
+		mas->offset = 0;
+
+	while (unlikely(level > 1)) {
 		level--;
+		mas->node = enode;
 		node = mas_mn(mas);
 		mt = mte_node_type(mas->node);
 		slots = ma_slots(node, mt);
-		pivots = ma_pivots(node, mt);
+		enode = mas_slot(mas, slots, 0);
 		if (unlikely(ma_dead_node(node)))
 			return 1;
-
-		offset = 0;
-		pivot = pivots[0];
 	}
 
-	enode = mas_slot(mas, slots, offset);
+	if (!mas->offset)
+		pivots = ma_pivots(node, mt);
+
+	mas->max = mas_safe_pivot(mas, pivots, mas->offset, mt);
 	if (unlikely(ma_dead_node(node)))
 		return 1;
 
 	mas->node = enode;
 	mas->min = min;
-	mas->max = pivot;
 	return 0;
 
 no_entry:
@@ -4699,94 +4775,86 @@ static inline int mas_next_node(struct ma_state *mas, struct maple_node *node,
 }
 
 /*
- * mas_next_nentry() - Get the next node entry
+ * mas_next_slot() - Get the entry in the next slot
+ *
  * @mas: The maple state
- * @max: The maximum value to check
- * @*range_start: Pointer to store the start of the range.
+ * @max: The maximum starting range
+ * @empty: Can be empty
  *
- * Sets @mas->offset to the offset of the next node entry, @mas->last to the
- * pivot of the entry.
- *
- * Return: The next entry, %NULL otherwise
+ * Return: The entry in the next slot which is possibly NULL
  */
-static inline void *mas_next_nentry(struct ma_state *mas,
-	    struct maple_node *node, unsigned long max, enum maple_type type)
+void *mas_next_slot(struct ma_state *mas, unsigned long max, bool empty)
 {
-	unsigned char count;
-	unsigned long pivot;
-	unsigned long *pivots;
 	void __rcu **slots;
+	unsigned long *pivots;
+	unsigned long pivot;
+	enum maple_type type;
+	struct maple_node *node;
+	unsigned char data_end;
+	unsigned long save_point = mas->last;
 	void *entry;
 
-	if (mas->last == mas->max) {
-		mas->index = mas->max;
-		return NULL;
-	}
-
-	slots = ma_slots(node, type);
+retry:
+	node = mas_mn(mas);
+	type = mte_node_type(mas->node);
 	pivots = ma_pivots(node, type);
-	count = ma_data_end(node, type, pivots, mas->max);
-	if (unlikely(ma_dead_node(node)))
-		return NULL;
+	data_end = ma_data_end(node, type, pivots, mas->max);
+	if (unlikely(mas_rewalk_if_dead(mas, node, save_point)))
+		goto retry;
 
-	mas->index = mas_safe_min(mas, pivots, mas->offset);
-	if (unlikely(ma_dead_node(node)))
-		return NULL;
+again:
+	if (mas->max >= max) {
+		if (likely(mas->offset < data_end))
+			pivot = pivots[mas->offset];
+		else
+			return NULL; /* must be mas->max */
 
-	if (mas->index > max)
-		return NULL;
-
-	if (mas->offset > count)
-		return NULL;
-
-	while (mas->offset < count) {
-		pivot = pivots[mas->offset];
-		entry = mas_slot(mas, slots, mas->offset);
-		if (ma_dead_node(node))
-			return NULL;
-
-		if (entry)
-			goto found;
+		if (unlikely(mas_rewalk_if_dead(mas, node, save_point)))
+			goto retry;
 
 		if (pivot >= max)
 			return NULL;
+	}
 
-		mas->index = pivot + 1;
+	if (likely(mas->offset < data_end)) {
+		mas->index = pivots[mas->offset] + 1;
 		mas->offset++;
+		if (likely(mas->offset < data_end))
+			mas->last = pivots[mas->offset];
+		else
+			mas->last = mas->max;
+	} else  {
+		if (mas_next_node(mas, node, max)) {
+			mas_rewalk(mas, save_point);
+			goto retry;
+		}
+
+		if (mas_is_none(mas))
+			return NULL;
+
+		mas->offset = 0;
+		mas->index = mas->min;
+		node = mas_mn(mas);
+		type = mte_node_type(mas->node);
+		pivots = ma_pivots(node, type);
+		mas->last = pivots[0];
 	}
 
-	if (mas->index > mas->max) {
-		mas->index = mas->last;
-		return NULL;
-	}
-
-	pivot = mas_safe_pivot(mas, pivots, mas->offset, type);
-	entry = mas_slot(mas, slots, mas->offset);
-	if (ma_dead_node(node))
-		return NULL;
-
-	if (!pivot)
-		return NULL;
-
-	if (!entry)
-		return NULL;
-
-found:
-	mas->last = pivot;
-	return entry;
-}
-
-static inline void mas_rewalk(struct ma_state *mas, unsigned long index)
-{
-
-retry:
-	mas_set(mas, index);
-	mas_state_walk(mas);
-	if (mas_is_start(mas))
+	slots = ma_slots(node, type);
+	entry = mt_slot(mas->tree, slots, mas->offset);
+	if (unlikely(mas_rewalk_if_dead(mas, node, save_point)))
 		goto retry;
 
-	return;
+	if (entry)
+		return entry;
 
+	if (!empty) {
+		if (!mas->offset)
+			data_end = 2;
+		goto again;
+	}
+
+	return entry;
 }
 
 /*
@@ -4803,155 +4871,10 @@ static inline void mas_rewalk(struct ma_state *mas, unsigned long index)
  */
 static inline void *mas_next_entry(struct ma_state *mas, unsigned long limit)
 {
-	void *entry = NULL;
-	struct maple_enode *prev_node;
-	struct maple_node *node;
-	unsigned char offset;
-	unsigned long last;
-	enum maple_type mt;
-
-	if (mas->index > limit) {
-		mas->index = mas->last = limit;
-		mas_pause(mas);
-		return NULL;
-	}
-	last = mas->last;
-retry:
-	offset = mas->offset;
-	prev_node = mas->node;
-	node = mas_mn(mas);
-	mt = mte_node_type(mas->node);
-	mas->offset++;
-	if (unlikely(mas->offset >= mt_slots[mt])) {
-		mas->offset = mt_slots[mt] - 1;
-		goto next_node;
-	}
-
-	while (!mas_is_none(mas)) {
-		entry = mas_next_nentry(mas, node, limit, mt);
-		if (unlikely(ma_dead_node(node))) {
-			mas_rewalk(mas, last);
-			goto retry;
-		}
-
-		if (likely(entry))
-			return entry;
-
-		if (unlikely((mas->index > limit)))
-			break;
-
-next_node:
-		prev_node = mas->node;
-		offset = mas->offset;
-		if (unlikely(mas_next_node(mas, node, limit))) {
-			mas_rewalk(mas, last);
-			goto retry;
-		}
-		mas->offset = 0;
-		node = mas_mn(mas);
-		mt = mte_node_type(mas->node);
-	}
-
-	mas->index = mas->last = limit;
-	mas->offset = offset;
-	mas->node = prev_node;
-	return NULL;
-}
-
-/*
- * mas_prev_nentry() - Get the previous node entry.
- * @mas: The maple state.
- * @limit: The lower limit to check for a value.
- *
- * Return: the entry, %NULL otherwise.
- */
-static inline void *mas_prev_nentry(struct ma_state *mas, unsigned long limit,
-				    unsigned long index)
-{
-	unsigned long pivot, min;
-	unsigned char offset;
-	struct maple_node *mn;
-	enum maple_type mt;
-	unsigned long *pivots;
-	void __rcu **slots;
-	void *entry;
-
-retry:
-	if (!mas->offset)
+	if (mas->last >= limit)
 		return NULL;
 
-	mn = mas_mn(mas);
-	mt = mte_node_type(mas->node);
-	offset = mas->offset - 1;
-	if (offset >= mt_slots[mt])
-		offset = mt_slots[mt] - 1;
-
-	slots = ma_slots(mn, mt);
-	pivots = ma_pivots(mn, mt);
-	if (unlikely(ma_dead_node(mn))) {
-		mas_rewalk(mas, index);
-		goto retry;
-	}
-
-	if (offset == mt_pivots[mt])
-		pivot = mas->max;
-	else
-		pivot = pivots[offset];
-
-	if (unlikely(ma_dead_node(mn))) {
-		mas_rewalk(mas, index);
-		goto retry;
-	}
-
-	while (offset && ((!mas_slot(mas, slots, offset) && pivot >= limit) ||
-	       !pivot))
-		pivot = pivots[--offset];
-
-	min = mas_safe_min(mas, pivots, offset);
-	entry = mas_slot(mas, slots, offset);
-	if (unlikely(ma_dead_node(mn))) {
-		mas_rewalk(mas, index);
-		goto retry;
-	}
-
-	if (likely(entry)) {
-		mas->offset = offset;
-		mas->last = pivot;
-		mas->index = min;
-	}
-	return entry;
-}
-
-static inline void *mas_prev_entry(struct ma_state *mas, unsigned long min)
-{
-	void *entry;
-
-	if (mas->index < min) {
-		mas->index = mas->last = min;
-		mas->node = MAS_NONE;
-		return NULL;
-	}
-retry:
-	while (likely(!mas_is_none(mas))) {
-		entry = mas_prev_nentry(mas, min, mas->index);
-		if (unlikely(mas->last < min))
-			goto not_found;
-
-		if (likely(entry))
-			return entry;
-
-		if (unlikely(mas_prev_node(mas, min))) {
-			mas_rewalk(mas, mas->index);
-			goto retry;
-		}
-
-		mas->offset++;
-	}
-
-	mas->offset--;
-not_found:
-	mas->index = mas->last = min;
-	return NULL;
+	return mas_next_slot(mas, limit, false);
 }
 
 /*
@@ -5127,24 +5050,25 @@ void *mas_walk(struct ma_state *mas)
 {
 	void *entry;
 
+	if (mas_is_none(mas) || mas_is_paused(mas) || mas_is_ptr(mas))
+		mas->node = MAS_START;
 retry:
 	entry = mas_state_walk(mas);
-	if (mas_is_start(mas))
+	if (mas_is_start(mas)) {
 		goto retry;
-
-	if (mas_is_ptr(mas)) {
-		if (!mas->index) {
-			mas->last = 0;
-		} else {
-			mas->index = 1;
-			mas->last = ULONG_MAX;
-		}
-		return entry;
-	}
-
-	if (mas_is_none(mas)) {
+	} else if (mas_is_none(mas)) {
 		mas->index = 0;
 		mas->last = ULONG_MAX;
+	} else if (mas_is_ptr(mas)) {
+		if (!mas->index) {
+			mas->last = 0;
+			return entry;
+		}
+
+		mas->index = 1;
+		mas->last = ULONG_MAX;
+		mas->node = MAS_NONE;
+		return NULL;
 	}
 
 	return entry;
@@ -5795,9 +5719,55 @@ EXPORT_SYMBOL_GPL(mas_store_prealloc);
  */
 int mas_preallocate(struct ma_state *mas, void *entry, gfp_t gfp)
 {
+	MA_WR_STATE(wr_mas, mas, entry);
+	unsigned char node_size;
+	int request = 1;
 	int ret;
 
-	mas_node_count_gfp(mas, 1 + mas_mt_height(mas) * 3, gfp);
+
+	if (unlikely(!mas->index && mas->last == ULONG_MAX))
+		goto ask_now;
+
+	mas_wr_store_setup(&wr_mas);
+	wr_mas.content = mas_start(mas);
+	/* Root expand */
+	if (unlikely(mas_is_none(mas) || mas_is_ptr(mas)))
+		goto ask_now;
+
+	if (unlikely(!mas_wr_walk(&wr_mas))) {
+		/* Spanning store, use worst case for now */
+		request = 1 + mas_mt_height(mas) * 3;
+		goto ask_now;
+	}
+
+	/* At this point, we are at the leaf node that needs to be altered. */
+	/* Exact fit, no nodes needed. */
+	if (wr_mas.r_min == mas->index && wr_mas.r_max == mas->last)
+		return 0;
+
+	mas_wr_end_piv(&wr_mas);
+	node_size = mas_wr_node_size(&wr_mas);
+	if (node_size >= mt_slots[wr_mas.type]) {
+		/* Slot store is possible in some cases */
+		if ((node_size == mt_slots[wr_mas.type]) &&
+		    (wr_mas.r_min == mas->index || wr_mas.r_max == mas->last))
+			goto ask_now;
+		/* Split, worst case for now. */
+		request = 1 + mas_mt_height(mas) * 2;
+		goto ask_now;
+	}
+
+	/* New root needs a singe node */
+	if (unlikely(mte_is_root(mas->node)))
+		goto ask_now;
+
+	/* Potential spanning rebalance collapsing a node, use worst-case */
+	if (node_size  - 1 <= mt_min_slots[wr_mas.type])
+		request = mas_mt_height(mas) * 2 - 1;
+
+	/* node store, slot store needs one node */
+ask_now:
+	mas_node_count_gfp(mas, request, gfp);
 	mas->mas_flags |= MA_STATE_PREALLOC;
 	if (likely(!mas_is_err(mas)))
 		return 0;
@@ -5924,6 +5894,34 @@ int mas_expected_entries(struct ma_state *mas, unsigned long nr_entries)
 }
 EXPORT_SYMBOL_GPL(mas_expected_entries);
 
+static inline bool mas_next_setup(struct ma_state *mas, unsigned long max,
+		void **entry)
+{
+	bool was_none = mas_is_none(mas);
+
+	if (mas_is_none(mas) || mas_is_paused(mas))
+		mas->node = MAS_START;
+
+	if (mas_is_start(mas))
+		*entry = mas_walk(mas); /* Retries on dead nodes handled by mas_walk */
+
+	if (mas_is_ptr(mas)) {
+		*entry = NULL;
+		if (was_none && mas->index == 0) {
+			mas->index = mas->last = 0;
+			return true;
+		}
+		mas->index = 1;
+		mas->last = ULONG_MAX;
+		mas->node = MAS_NONE;
+		return true;
+	}
+
+	if (mas_is_none(mas))
+		return true;
+	return false;
+}
+
 /**
  * mas_next() - Get the next entry.
  * @mas: The maple state
@@ -5937,29 +5935,40 @@ EXPORT_SYMBOL_GPL(mas_expected_entries);
  */
 void *mas_next(struct ma_state *mas, unsigned long max)
 {
-	if (mas_is_none(mas) || mas_is_paused(mas))
-		mas->node = MAS_START;
+	void *entry = NULL;
 
-	if (mas_is_start(mas))
-		mas_walk(mas); /* Retries on dead nodes handled by mas_walk */
+	if (mas_next_setup(mas, max, &entry))
+		return entry;
 
-	if (mas_is_ptr(mas)) {
-		if (!mas->index) {
-			mas->index = 1;
-			mas->last = ULONG_MAX;
-		}
-		return NULL;
-	}
-
-	if (mas->last == ULONG_MAX)
-		return NULL;
-
-	/* Retries on dead nodes handled by mas_next_entry */
-	return mas_next_entry(mas, max);
+	/* Retries on dead nodes handled by mas_next_slot */
+	return mas_next_slot(mas, max, false);
 }
 EXPORT_SYMBOL_GPL(mas_next);
 
 /**
+ * mas_next_range() - Advance the maple state to the next range
+ * @mas: The maple state
+ * @max: The maximum index to check.
+ *
+ * Sets @mas->index and @mas->last to the range.
+ * Must hold rcu_read_lock or the write lock.
+ * Can return the zero entry.
+ *
+ * Return: The next entry or %NULL
+ */
+void *mas_next_range(struct ma_state *mas, unsigned long max)
+{
+	void *entry = NULL;
+
+	if (mas_next_setup(mas, max, &entry))
+		return entry;
+
+	/* Retries on dead nodes handled by mas_next_slot */
+	return mas_next_slot(mas, max, true);
+}
+EXPORT_SYMBOL_GPL(mas_next_range);
+
+/**
  * mt_next() - get the next value in the maple tree
  * @mt: The maple tree
  * @index: The start index
@@ -5979,6 +5988,47 @@ void *mt_next(struct maple_tree *mt, unsigned long index, unsigned long max)
 }
 EXPORT_SYMBOL_GPL(mt_next);
 
+static inline bool mas_prev_setup(struct ma_state *mas, unsigned long min,
+		void **entry)
+{
+	if (mas->index <= min)
+		goto none;
+
+	if (mas_is_none(mas) || mas_is_paused(mas))
+		mas->node = MAS_START;
+
+	if (mas_is_start(mas)) {
+		mas_walk(mas);
+		if (!mas->index)
+			goto none;
+	}
+
+	if (unlikely(mas_is_ptr(mas))) {
+		if (!mas->index)
+			goto none;
+		mas->index = mas->last = 0;
+		*entry = mas_root(mas);
+		return true;
+	}
+
+	if (mas_is_none(mas)) {
+		if (mas->index) {
+			/* Walked to out-of-range pointer? */
+			mas->index = mas->last = 0;
+			mas->node = MAS_ROOT;
+			*entry = mas_root(mas);
+			return true;
+		}
+		return true;
+	}
+
+	return false;
+
+none:
+	mas->node = MAS_NONE;
+	return true;
+}
+
 /**
  * mas_prev() - Get the previous entry
  * @mas: The maple state
@@ -5992,39 +6042,39 @@ EXPORT_SYMBOL_GPL(mt_next);
  */
 void *mas_prev(struct ma_state *mas, unsigned long min)
 {
-	if (!mas->index) {
-		/* Nothing comes before 0 */
-		mas->last = 0;
-		mas->node = MAS_NONE;
-		return NULL;
-	}
+	void *entry = NULL;
 
-	if (unlikely(mas_is_ptr(mas)))
-		return NULL;
+	if (mas_prev_setup(mas, min, &entry))
+		return entry;
 
-	if (mas_is_none(mas) || mas_is_paused(mas))
-		mas->node = MAS_START;
-
-	if (mas_is_start(mas)) {
-		mas_walk(mas);
-		if (!mas->index)
-			return NULL;
-	}
-
-	if (mas_is_ptr(mas)) {
-		if (!mas->index) {
-			mas->last = 0;
-			return NULL;
-		}
-
-		mas->index = mas->last = 0;
-		return mas_root_locked(mas);
-	}
-	return mas_prev_entry(mas, min);
+	return mas_prev_slot(mas, min, false);
 }
 EXPORT_SYMBOL_GPL(mas_prev);
 
 /**
+ * mas_prev_range() - Advance to the previous range
+ * @mas: The maple state
+ * @min: The minimum value to check.
+ *
+ * Sets @mas->index and @mas->last to the range.
+ * Must hold rcu_read_lock or the write lock.
+ * Will reset mas to MAS_START if the node is MAS_NONE.  Will stop on not
+ * searchable nodes.
+ *
+ * Return: the previous value or %NULL.
+ */
+void *mas_prev_range(struct ma_state *mas, unsigned long min)
+{
+	void *entry = NULL;
+
+	if (mas_prev_setup(mas, min, &entry))
+		return entry;
+
+	return mas_prev_slot(mas, min, true);
+}
+EXPORT_SYMBOL_GPL(mas_prev_range);
+
+/**
  * mt_prev() - get the previous value in the maple tree
  * @mt: The maple tree
  * @index: The start index
@@ -6064,6 +6114,64 @@ void mas_pause(struct ma_state *mas)
 EXPORT_SYMBOL_GPL(mas_pause);
 
 /**
+ * mas_find_setup() - Internal function to set up mas_find*().
+ * @mas: The maple state
+ * @max: The maximum index
+ * @entry: Pointer to the entry
+ *
+ * Returns: True if entry is the answer, false otherwise.
+ */
+static inline bool mas_find_setup(struct ma_state *mas, unsigned long max,
+		void **entry)
+{
+	*entry = NULL;
+
+	if (unlikely(mas_is_none(mas))) {
+		if (unlikely(mas->last >= max))
+			return true;
+
+		mas->index = mas->last;
+		mas->node = MAS_START;
+	} else if (unlikely(mas_is_paused(mas))) {
+		if (unlikely(mas->last >= max))
+			return true;
+
+		mas->node = MAS_START;
+		mas->index = ++mas->last;
+	} else if (unlikely(mas_is_ptr(mas)))
+		goto ptr_out_of_range;
+
+	if (unlikely(mas_is_start(mas))) {
+		/* First run or continue */
+		if (mas->index > max)
+			return true;
+
+		*entry = mas_walk(mas);
+		if (*entry)
+			return true;
+
+	}
+
+	if (unlikely(!mas_searchable(mas))) {
+		if (unlikely(mas_is_ptr(mas)))
+			goto ptr_out_of_range;
+
+		return true;
+	}
+
+	if (mas->index == max)
+		return true;
+
+	return false;
+
+ptr_out_of_range:
+	mas->node = MAS_NONE;
+	mas->index = 1;
+	mas->last = ULONG_MAX;
+	return true;
+}
+
+/**
  * mas_find() - On the first call, find the entry at or after mas->index up to
  * %max.  Otherwise, find the entry after mas->index.
  * @mas: The maple state
@@ -6077,37 +6185,105 @@ EXPORT_SYMBOL_GPL(mas_pause);
  */
 void *mas_find(struct ma_state *mas, unsigned long max)
 {
-	if (unlikely(mas_is_paused(mas))) {
-		if (unlikely(mas->last == ULONG_MAX)) {
-			mas->node = MAS_NONE;
-			return NULL;
-		}
+	void *entry = NULL;
+
+	if (mas_find_setup(mas, max, &entry))
+		return entry;
+
+	/* Retries on dead nodes handled by mas_next_slot */
+	return mas_next_slot(mas, max, false);
+}
+EXPORT_SYMBOL_GPL(mas_find);
+
+/**
+ * mas_find_range() - On the first call, find the entry at or after
+ * mas->index up to %max.  Otherwise, advance to the next slot mas->index.
+ * @mas: The maple state
+ * @max: The maximum value to check.
+ *
+ * Must hold rcu_read_lock or the write lock.
+ * If an entry exists, last and index are updated accordingly.
+ * May set @mas->node to MAS_NONE.
+ *
+ * Return: The entry or %NULL.
+ */
+void *mas_find_range(struct ma_state *mas, unsigned long max)
+{
+	void *entry;
+
+	if (mas_find_setup(mas, max, &entry))
+		return entry;
+
+	/* Retries on dead nodes handled by mas_next_slot */
+	return mas_next_slot(mas, max, true);
+}
+EXPORT_SYMBOL_GPL(mas_find_range);
+
+/**
+ * mas_find_rev_setup() - Internal function to set up mas_find_*_rev()
+ * @mas: The maple state
+ * @min: The minimum index
+ * @entry: Pointer to the entry
+ *
+ * Returns: True if entry is the answer, false otherwise.
+ */
+static inline bool mas_find_rev_setup(struct ma_state *mas, unsigned long min,
+		void **entry)
+{
+	*entry = NULL;
+
+	if (unlikely(mas_is_none(mas))) {
+		if (mas->index <= min)
+			goto none;
+
+		mas->last = mas->index;
 		mas->node = MAS_START;
-		mas->index = ++mas->last;
 	}
 
-	if (unlikely(mas_is_none(mas)))
+	if (unlikely(mas_is_paused(mas))) {
+		if (unlikely(mas->index <= min)) {
+			mas->node = MAS_NONE;
+			return true;
+		}
 		mas->node = MAS_START;
+		mas->last = --mas->index;
+	}
 
 	if (unlikely(mas_is_start(mas))) {
 		/* First run or continue */
-		void *entry;
+		if (mas->index < min)
+			return true;
 
-		if (mas->index > max)
-			return NULL;
-
-		entry = mas_walk(mas);
-		if (entry)
-			return entry;
+		*entry = mas_walk(mas);
+		if (*entry)
+			return true;
 	}
 
-	if (unlikely(!mas_searchable(mas)))
-		return NULL;
+	if (unlikely(!mas_searchable(mas))) {
+		if (mas_is_ptr(mas))
+			goto none;
 
-	/* Retries on dead nodes handled by mas_next_entry */
-	return mas_next_entry(mas, max);
+		if (mas_is_none(mas)) {
+			/*
+			 * Walked to the location, and there was nothing so the
+			 * previous location is 0.
+			 */
+			mas->last = mas->index = 0;
+			mas->node = MAS_ROOT;
+			*entry = mas_root(mas);
+			return true;
+		}
+	}
+
+	if (mas->index < min)
+		return true;
+
+	return false;
+
+none:
+	mas->node = MAS_NONE;
+	return true;
 }
-EXPORT_SYMBOL_GPL(mas_find);
 
 /**
  * mas_find_rev: On the first call, find the first non-null entry at or below
@@ -6124,39 +6300,43 @@ EXPORT_SYMBOL_GPL(mas_find);
  */
 void *mas_find_rev(struct ma_state *mas, unsigned long min)
 {
-	if (unlikely(mas_is_paused(mas))) {
-		if (unlikely(mas->last == ULONG_MAX)) {
-			mas->node = MAS_NONE;
-			return NULL;
-		}
-		mas->node = MAS_START;
-		mas->last = --mas->index;
-	}
+	void *entry;
 
-	if (unlikely(mas_is_start(mas))) {
-		/* First run or continue */
-		void *entry;
+	if (mas_find_rev_setup(mas, min, &entry))
+		return entry;
 
-		if (mas->index < min)
-			return NULL;
+	/* Retries on dead nodes handled by mas_prev_slot */
+	return mas_prev_slot(mas, min, false);
 
-		entry = mas_walk(mas);
-		if (entry)
-			return entry;
-	}
-
-	if (unlikely(!mas_searchable(mas)))
-		return NULL;
-
-	if (mas->index < min)
-		return NULL;
-
-	/* Retries on dead nodes handled by mas_next_entry */
-	return mas_prev_entry(mas, min);
 }
 EXPORT_SYMBOL_GPL(mas_find_rev);
 
 /**
+ * mas_find_range_rev: On the first call, find the first non-null entry at or
+ * below mas->index down to %min.  Otherwise advance to the previous slot after
+ * mas->index down to %min.
+ * @mas: The maple state
+ * @min: The minimum value to check.
+ *
+ * Must hold rcu_read_lock or the write lock.
+ * If an entry exists, last and index are updated accordingly.
+ * May set @mas->node to MAS_NONE.
+ *
+ * Return: The entry or %NULL.
+ */
+void *mas_find_range_rev(struct ma_state *mas, unsigned long min)
+{
+	void *entry;
+
+	if (mas_find_rev_setup(mas, min, &entry))
+		return entry;
+
+	/* Retries on dead nodes handled by mas_prev_slot */
+	return mas_prev_slot(mas, min, true);
+}
+EXPORT_SYMBOL_GPL(mas_find_range_rev);
+
+/**
  * mas_erase() - Find the range in which index resides and erase the entire
  * range.
  * @mas: The maple state
@@ -6536,7 +6716,7 @@ void *mt_find(struct maple_tree *mt, unsigned long *index, unsigned long max)
 	if (entry)
 		goto unlock;
 
-	while (mas_searchable(&mas) && (mas.index < max)) {
+	while (mas_searchable(&mas) && (mas.last < max)) {
 		entry = mas_next_entry(&mas, max);
 		if (likely(entry && !xa_is_zero(entry)))
 			break;
diff --git a/lib/overflow_kunit.c b/lib/overflow_kunit.c
index b8556a2..dcd3ba1 100644
--- a/lib/overflow_kunit.c
+++ b/lib/overflow_kunit.c
@@ -736,6 +736,384 @@ static void overflow_size_helpers_test(struct kunit *test)
 #undef check_one_size_helper
 }
 
+static void overflows_type_test(struct kunit *test)
+{
+	int count = 0;
+	unsigned int var;
+
+#define __TEST_OVERFLOWS_TYPE(func, arg1, arg2, of)	do {		\
+	bool __of = func(arg1, arg2);					\
+	KUNIT_EXPECT_EQ_MSG(test, __of, of,				\
+		"expected " #func "(" #arg1 ", " #arg2 " to%s overflow\n",\
+		of ? "" : " not");					\
+	count++;							\
+} while (0)
+
+/* Args are: first type, second type, value, overflow expected */
+#define TEST_OVERFLOWS_TYPE(__t1, __t2, v, of) do {			\
+	__t1 t1 = (v);							\
+	__t2 t2;							\
+	__TEST_OVERFLOWS_TYPE(__overflows_type, t1, t2, of);		\
+	__TEST_OVERFLOWS_TYPE(__overflows_type, t1, __t2, of);		\
+	__TEST_OVERFLOWS_TYPE(__overflows_type_constexpr, t1, t2, of);	\
+	__TEST_OVERFLOWS_TYPE(__overflows_type_constexpr, t1, __t2, of);\
+} while (0)
+
+	TEST_OVERFLOWS_TYPE(u8, u8, U8_MAX, false);
+	TEST_OVERFLOWS_TYPE(u8, u16, U8_MAX, false);
+	TEST_OVERFLOWS_TYPE(u8, s8, U8_MAX, true);
+	TEST_OVERFLOWS_TYPE(u8, s8, S8_MAX, false);
+	TEST_OVERFLOWS_TYPE(u8, s8, (u8)S8_MAX + 1, true);
+	TEST_OVERFLOWS_TYPE(u8, s16, U8_MAX, false);
+	TEST_OVERFLOWS_TYPE(s8, u8, S8_MAX, false);
+	TEST_OVERFLOWS_TYPE(s8, u8, -1, true);
+	TEST_OVERFLOWS_TYPE(s8, u8, S8_MIN, true);
+	TEST_OVERFLOWS_TYPE(s8, u16, S8_MAX, false);
+	TEST_OVERFLOWS_TYPE(s8, u16, -1, true);
+	TEST_OVERFLOWS_TYPE(s8, u16, S8_MIN, true);
+	TEST_OVERFLOWS_TYPE(s8, u32, S8_MAX, false);
+	TEST_OVERFLOWS_TYPE(s8, u32, -1, true);
+	TEST_OVERFLOWS_TYPE(s8, u32, S8_MIN, true);
+#if BITS_PER_LONG == 64
+	TEST_OVERFLOWS_TYPE(s8, u64, S8_MAX, false);
+	TEST_OVERFLOWS_TYPE(s8, u64, -1, true);
+	TEST_OVERFLOWS_TYPE(s8, u64, S8_MIN, true);
+#endif
+	TEST_OVERFLOWS_TYPE(s8, s8, S8_MAX, false);
+	TEST_OVERFLOWS_TYPE(s8, s8, S8_MIN, false);
+	TEST_OVERFLOWS_TYPE(s8, s16, S8_MAX, false);
+	TEST_OVERFLOWS_TYPE(s8, s16, S8_MIN, false);
+	TEST_OVERFLOWS_TYPE(u16, u8, U8_MAX, false);
+	TEST_OVERFLOWS_TYPE(u16, u8, (u16)U8_MAX + 1, true);
+	TEST_OVERFLOWS_TYPE(u16, u8, U16_MAX, true);
+	TEST_OVERFLOWS_TYPE(u16, s8, S8_MAX, false);
+	TEST_OVERFLOWS_TYPE(u16, s8, (u16)S8_MAX + 1, true);
+	TEST_OVERFLOWS_TYPE(u16, s8, U16_MAX, true);
+	TEST_OVERFLOWS_TYPE(u16, s16, S16_MAX, false);
+	TEST_OVERFLOWS_TYPE(u16, s16, (u16)S16_MAX + 1, true);
+	TEST_OVERFLOWS_TYPE(u16, s16, U16_MAX, true);
+	TEST_OVERFLOWS_TYPE(u16, u32, U16_MAX, false);
+	TEST_OVERFLOWS_TYPE(u16, s32, U16_MAX, false);
+	TEST_OVERFLOWS_TYPE(s16, u8, U8_MAX, false);
+	TEST_OVERFLOWS_TYPE(s16, u8, (s16)U8_MAX + 1, true);
+	TEST_OVERFLOWS_TYPE(s16, u8, -1, true);
+	TEST_OVERFLOWS_TYPE(s16, u8, S16_MIN, true);
+	TEST_OVERFLOWS_TYPE(s16, u16, S16_MAX, false);
+	TEST_OVERFLOWS_TYPE(s16, u16, -1, true);
+	TEST_OVERFLOWS_TYPE(s16, u16, S16_MIN, true);
+	TEST_OVERFLOWS_TYPE(s16, u32, S16_MAX, false);
+	TEST_OVERFLOWS_TYPE(s16, u32, -1, true);
+	TEST_OVERFLOWS_TYPE(s16, u32, S16_MIN, true);
+#if BITS_PER_LONG == 64
+	TEST_OVERFLOWS_TYPE(s16, u64, S16_MAX, false);
+	TEST_OVERFLOWS_TYPE(s16, u64, -1, true);
+	TEST_OVERFLOWS_TYPE(s16, u64, S16_MIN, true);
+#endif
+	TEST_OVERFLOWS_TYPE(s16, s8, S8_MAX, false);
+	TEST_OVERFLOWS_TYPE(s16, s8, S8_MIN, false);
+	TEST_OVERFLOWS_TYPE(s16, s8, (s16)S8_MAX + 1, true);
+	TEST_OVERFLOWS_TYPE(s16, s8, (s16)S8_MIN - 1, true);
+	TEST_OVERFLOWS_TYPE(s16, s8, S16_MAX, true);
+	TEST_OVERFLOWS_TYPE(s16, s8, S16_MIN, true);
+	TEST_OVERFLOWS_TYPE(s16, s16, S16_MAX, false);
+	TEST_OVERFLOWS_TYPE(s16, s16, S16_MIN, false);
+	TEST_OVERFLOWS_TYPE(s16, s32, S16_MAX, false);
+	TEST_OVERFLOWS_TYPE(s16, s32, S16_MIN, false);
+	TEST_OVERFLOWS_TYPE(u32, u8, U8_MAX, false);
+	TEST_OVERFLOWS_TYPE(u32, u8, (u32)U8_MAX + 1, true);
+	TEST_OVERFLOWS_TYPE(u32, u8, U32_MAX, true);
+	TEST_OVERFLOWS_TYPE(u32, s8, S8_MAX, false);
+	TEST_OVERFLOWS_TYPE(u32, s8, (u32)S8_MAX + 1, true);
+	TEST_OVERFLOWS_TYPE(u32, s8, U32_MAX, true);
+	TEST_OVERFLOWS_TYPE(u32, u16, U16_MAX, false);
+	TEST_OVERFLOWS_TYPE(u32, u16, U16_MAX + 1, true);
+	TEST_OVERFLOWS_TYPE(u32, u16, U32_MAX, true);
+	TEST_OVERFLOWS_TYPE(u32, s16, S16_MAX, false);
+	TEST_OVERFLOWS_TYPE(u32, s16, (u32)S16_MAX + 1, true);
+	TEST_OVERFLOWS_TYPE(u32, s16, U32_MAX, true);
+	TEST_OVERFLOWS_TYPE(u32, u32, U32_MAX, false);
+	TEST_OVERFLOWS_TYPE(u32, s32, S32_MAX, false);
+	TEST_OVERFLOWS_TYPE(u32, s32, U32_MAX, true);
+	TEST_OVERFLOWS_TYPE(u32, s32, (u32)S32_MAX + 1, true);
+#if BITS_PER_LONG == 64
+	TEST_OVERFLOWS_TYPE(u32, u64, U32_MAX, false);
+	TEST_OVERFLOWS_TYPE(u32, s64, U32_MAX, false);
+#endif
+	TEST_OVERFLOWS_TYPE(s32, u8, U8_MAX, false);
+	TEST_OVERFLOWS_TYPE(s32, u8, (s32)U8_MAX + 1, true);
+	TEST_OVERFLOWS_TYPE(s32, u16, S32_MAX, true);
+	TEST_OVERFLOWS_TYPE(s32, u8, -1, true);
+	TEST_OVERFLOWS_TYPE(s32, u8, S32_MIN, true);
+	TEST_OVERFLOWS_TYPE(s32, u16, U16_MAX, false);
+	TEST_OVERFLOWS_TYPE(s32, u16, (s32)U16_MAX + 1, true);
+	TEST_OVERFLOWS_TYPE(s32, u16, S32_MAX, true);
+	TEST_OVERFLOWS_TYPE(s32, u16, -1, true);
+	TEST_OVERFLOWS_TYPE(s32, u16, S32_MIN, true);
+	TEST_OVERFLOWS_TYPE(s32, u32, S32_MAX, false);
+	TEST_OVERFLOWS_TYPE(s32, u32, -1, true);
+	TEST_OVERFLOWS_TYPE(s32, u32, S32_MIN, true);
+#if BITS_PER_LONG == 64
+	TEST_OVERFLOWS_TYPE(s32, u64, S32_MAX, false);
+	TEST_OVERFLOWS_TYPE(s32, u64, -1, true);
+	TEST_OVERFLOWS_TYPE(s32, u64, S32_MIN, true);
+#endif
+	TEST_OVERFLOWS_TYPE(s32, s8, S8_MAX, false);
+	TEST_OVERFLOWS_TYPE(s32, s8, S8_MIN, false);
+	TEST_OVERFLOWS_TYPE(s32, s8, (s32)S8_MAX + 1, true);
+	TEST_OVERFLOWS_TYPE(s32, s8, (s32)S8_MIN - 1, true);
+	TEST_OVERFLOWS_TYPE(s32, s8, S32_MAX, true);
+	TEST_OVERFLOWS_TYPE(s32, s8, S32_MIN, true);
+	TEST_OVERFLOWS_TYPE(s32, s16, S16_MAX, false);
+	TEST_OVERFLOWS_TYPE(s32, s16, S16_MIN, false);
+	TEST_OVERFLOWS_TYPE(s32, s16, (s32)S16_MAX + 1, true);
+	TEST_OVERFLOWS_TYPE(s32, s16, (s32)S16_MIN - 1, true);
+	TEST_OVERFLOWS_TYPE(s32, s16, S32_MAX, true);
+	TEST_OVERFLOWS_TYPE(s32, s16, S32_MIN, true);
+	TEST_OVERFLOWS_TYPE(s32, s32, S32_MAX, false);
+	TEST_OVERFLOWS_TYPE(s32, s32, S32_MIN, false);
+#if BITS_PER_LONG == 64
+	TEST_OVERFLOWS_TYPE(s32, s64, S32_MAX, false);
+	TEST_OVERFLOWS_TYPE(s32, s64, S32_MIN, false);
+	TEST_OVERFLOWS_TYPE(u64, u8, U64_MAX, true);
+	TEST_OVERFLOWS_TYPE(u64, u8, U8_MAX, false);
+	TEST_OVERFLOWS_TYPE(u64, u8, (u64)U8_MAX + 1, true);
+	TEST_OVERFLOWS_TYPE(u64, u16, U64_MAX, true);
+	TEST_OVERFLOWS_TYPE(u64, u16, U16_MAX, false);
+	TEST_OVERFLOWS_TYPE(u64, u16, (u64)U16_MAX + 1, true);
+	TEST_OVERFLOWS_TYPE(u64, u32, U64_MAX, true);
+	TEST_OVERFLOWS_TYPE(u64, u32, U32_MAX, false);
+	TEST_OVERFLOWS_TYPE(u64, u32, (u64)U32_MAX + 1, true);
+	TEST_OVERFLOWS_TYPE(u64, u64, U64_MAX, false);
+	TEST_OVERFLOWS_TYPE(u64, s8, S8_MAX, false);
+	TEST_OVERFLOWS_TYPE(u64, s8, (u64)S8_MAX + 1, true);
+	TEST_OVERFLOWS_TYPE(u64, s8, U64_MAX, true);
+	TEST_OVERFLOWS_TYPE(u64, s16, S16_MAX, false);
+	TEST_OVERFLOWS_TYPE(u64, s16, (u64)S16_MAX + 1, true);
+	TEST_OVERFLOWS_TYPE(u64, s16, U64_MAX, true);
+	TEST_OVERFLOWS_TYPE(u64, s32, S32_MAX, false);
+	TEST_OVERFLOWS_TYPE(u64, s32, (u64)S32_MAX + 1, true);
+	TEST_OVERFLOWS_TYPE(u64, s32, U64_MAX, true);
+	TEST_OVERFLOWS_TYPE(u64, s64, S64_MAX, false);
+	TEST_OVERFLOWS_TYPE(u64, s64, U64_MAX, true);
+	TEST_OVERFLOWS_TYPE(u64, s64, (u64)S64_MAX + 1, true);
+	TEST_OVERFLOWS_TYPE(s64, u8, S64_MAX, true);
+	TEST_OVERFLOWS_TYPE(s64, u8, S64_MIN, true);
+	TEST_OVERFLOWS_TYPE(s64, u8, -1, true);
+	TEST_OVERFLOWS_TYPE(s64, u8, U8_MAX, false);
+	TEST_OVERFLOWS_TYPE(s64, u8, (s64)U8_MAX + 1, true);
+	TEST_OVERFLOWS_TYPE(s64, u16, S64_MAX, true);
+	TEST_OVERFLOWS_TYPE(s64, u16, S64_MIN, true);
+	TEST_OVERFLOWS_TYPE(s64, u16, -1, true);
+	TEST_OVERFLOWS_TYPE(s64, u16, U16_MAX, false);
+	TEST_OVERFLOWS_TYPE(s64, u16, (s64)U16_MAX + 1, true);
+	TEST_OVERFLOWS_TYPE(s64, u32, S64_MAX, true);
+	TEST_OVERFLOWS_TYPE(s64, u32, S64_MIN, true);
+	TEST_OVERFLOWS_TYPE(s64, u32, -1, true);
+	TEST_OVERFLOWS_TYPE(s64, u32, U32_MAX, false);
+	TEST_OVERFLOWS_TYPE(s64, u32, (s64)U32_MAX + 1, true);
+	TEST_OVERFLOWS_TYPE(s64, u64, S64_MAX, false);
+	TEST_OVERFLOWS_TYPE(s64, u64, S64_MIN, true);
+	TEST_OVERFLOWS_TYPE(s64, u64, -1, true);
+	TEST_OVERFLOWS_TYPE(s64, s8, S8_MAX, false);
+	TEST_OVERFLOWS_TYPE(s64, s8, S8_MIN, false);
+	TEST_OVERFLOWS_TYPE(s64, s8, (s64)S8_MAX + 1, true);
+	TEST_OVERFLOWS_TYPE(s64, s8, (s64)S8_MIN - 1, true);
+	TEST_OVERFLOWS_TYPE(s64, s8, S64_MAX, true);
+	TEST_OVERFLOWS_TYPE(s64, s16, S16_MAX, false);
+	TEST_OVERFLOWS_TYPE(s64, s16, S16_MIN, false);
+	TEST_OVERFLOWS_TYPE(s64, s16, (s64)S16_MAX + 1, true);
+	TEST_OVERFLOWS_TYPE(s64, s16, (s64)S16_MIN - 1, true);
+	TEST_OVERFLOWS_TYPE(s64, s16, S64_MAX, true);
+	TEST_OVERFLOWS_TYPE(s64, s32, S32_MAX, false);
+	TEST_OVERFLOWS_TYPE(s64, s32, S32_MIN, false);
+	TEST_OVERFLOWS_TYPE(s64, s32, (s64)S32_MAX + 1, true);
+	TEST_OVERFLOWS_TYPE(s64, s32, (s64)S32_MIN - 1, true);
+	TEST_OVERFLOWS_TYPE(s64, s32, S64_MAX, true);
+	TEST_OVERFLOWS_TYPE(s64, s64, S64_MAX, false);
+	TEST_OVERFLOWS_TYPE(s64, s64, S64_MIN, false);
+#endif
+
+	/* Check for macro side-effects. */
+	var = INT_MAX - 1;
+	__TEST_OVERFLOWS_TYPE(__overflows_type, var++, int, false);
+	__TEST_OVERFLOWS_TYPE(__overflows_type, var++, int, false);
+	__TEST_OVERFLOWS_TYPE(__overflows_type, var++, int, true);
+	var = INT_MAX - 1;
+	__TEST_OVERFLOWS_TYPE(overflows_type, var++, int, false);
+	__TEST_OVERFLOWS_TYPE(overflows_type, var++, int, false);
+	__TEST_OVERFLOWS_TYPE(overflows_type, var++, int, true);
+
+	kunit_info(test, "%d overflows_type() tests finished\n", count);
+#undef TEST_OVERFLOWS_TYPE
+#undef __TEST_OVERFLOWS_TYPE
+}
+
+static void same_type_test(struct kunit *test)
+{
+	int count = 0;
+	int var;
+
+#define TEST_SAME_TYPE(t1, t2, same)			do {	\
+	typeof(t1) __t1h = type_max(t1);			\
+	typeof(t1) __t1l = type_min(t1);			\
+	typeof(t2) __t2h = type_max(t2);			\
+	typeof(t2) __t2l = type_min(t2);			\
+	KUNIT_EXPECT_EQ(test, true, __same_type(t1, __t1h));	\
+	KUNIT_EXPECT_EQ(test, true, __same_type(t1, __t1l));	\
+	KUNIT_EXPECT_EQ(test, true, __same_type(__t1h, t1));	\
+	KUNIT_EXPECT_EQ(test, true, __same_type(__t1l, t1));	\
+	KUNIT_EXPECT_EQ(test, true, __same_type(t2, __t2h));	\
+	KUNIT_EXPECT_EQ(test, true, __same_type(t2, __t2l));	\
+	KUNIT_EXPECT_EQ(test, true, __same_type(__t2h, t2));	\
+	KUNIT_EXPECT_EQ(test, true, __same_type(__t2l, t2));	\
+	KUNIT_EXPECT_EQ(test, same, __same_type(t1, t2));	\
+	KUNIT_EXPECT_EQ(test, same, __same_type(t2, __t1h));	\
+	KUNIT_EXPECT_EQ(test, same, __same_type(t2, __t1l));	\
+	KUNIT_EXPECT_EQ(test, same, __same_type(__t1h, t2));	\
+	KUNIT_EXPECT_EQ(test, same, __same_type(__t1l, t2));	\
+	KUNIT_EXPECT_EQ(test, same, __same_type(t1, __t2h));	\
+	KUNIT_EXPECT_EQ(test, same, __same_type(t1, __t2l));	\
+	KUNIT_EXPECT_EQ(test, same, __same_type(__t2h, t1));	\
+	KUNIT_EXPECT_EQ(test, same, __same_type(__t2l, t1));	\
+} while (0)
+
+#if BITS_PER_LONG == 64
+# define TEST_SAME_TYPE64(base, t, m)	TEST_SAME_TYPE(base, t, m)
+#else
+# define TEST_SAME_TYPE64(base, t, m)	do { } while (0)
+#endif
+
+#define TEST_TYPE_SETS(base, mu8, mu16, mu32, ms8, ms16, ms32, mu64, ms64) \
+do {									\
+	TEST_SAME_TYPE(base,  u8,  mu8);				\
+	TEST_SAME_TYPE(base, u16, mu16);				\
+	TEST_SAME_TYPE(base, u32, mu32);				\
+	TEST_SAME_TYPE(base,  s8,  ms8);				\
+	TEST_SAME_TYPE(base, s16, ms16);				\
+	TEST_SAME_TYPE(base, s32, ms32);				\
+	TEST_SAME_TYPE64(base, u64, mu64);				\
+	TEST_SAME_TYPE64(base, s64, ms64);				\
+} while (0)
+
+	TEST_TYPE_SETS(u8,   true, false, false, false, false, false, false, false);
+	TEST_TYPE_SETS(u16, false,  true, false, false, false, false, false, false);
+	TEST_TYPE_SETS(u32, false, false,  true, false, false, false, false, false);
+	TEST_TYPE_SETS(s8,  false, false, false,  true, false, false, false, false);
+	TEST_TYPE_SETS(s16, false, false, false, false,  true, false, false, false);
+	TEST_TYPE_SETS(s32, false, false, false, false, false,  true, false, false);
+#if BITS_PER_LONG == 64
+	TEST_TYPE_SETS(u64, false, false, false, false, false, false,  true, false);
+	TEST_TYPE_SETS(s64, false, false, false, false, false, false, false,  true);
+#endif
+
+	/* Check for macro side-effects. */
+	var = 4;
+	KUNIT_EXPECT_EQ(test, var, 4);
+	KUNIT_EXPECT_TRUE(test, __same_type(var++, int));
+	KUNIT_EXPECT_EQ(test, var, 4);
+	KUNIT_EXPECT_TRUE(test, __same_type(int, var++));
+	KUNIT_EXPECT_EQ(test, var, 4);
+	KUNIT_EXPECT_TRUE(test, __same_type(var++, var++));
+	KUNIT_EXPECT_EQ(test, var, 4);
+
+	kunit_info(test, "%d __same_type() tests finished\n", count);
+
+#undef TEST_TYPE_SETS
+#undef TEST_SAME_TYPE64
+#undef TEST_SAME_TYPE
+}
+
+static void castable_to_type_test(struct kunit *test)
+{
+	int count = 0;
+
+#define TEST_CASTABLE_TO_TYPE(arg1, arg2, pass)	do {	\
+	bool __pass = castable_to_type(arg1, arg2);		\
+	KUNIT_EXPECT_EQ_MSG(test, __pass, pass,			\
+		"expected castable_to_type(" #arg1 ", " #arg2 ") to%s pass\n",\
+		pass ? "" : " not");				\
+	count++;						\
+} while (0)
+
+	TEST_CASTABLE_TO_TYPE(16, u8, true);
+	TEST_CASTABLE_TO_TYPE(16, u16, true);
+	TEST_CASTABLE_TO_TYPE(16, u32, true);
+	TEST_CASTABLE_TO_TYPE(16, s8, true);
+	TEST_CASTABLE_TO_TYPE(16, s16, true);
+	TEST_CASTABLE_TO_TYPE(16, s32, true);
+	TEST_CASTABLE_TO_TYPE(-16, s8, true);
+	TEST_CASTABLE_TO_TYPE(-16, s16, true);
+	TEST_CASTABLE_TO_TYPE(-16, s32, true);
+#if BITS_PER_LONG == 64
+	TEST_CASTABLE_TO_TYPE(16, u64, true);
+	TEST_CASTABLE_TO_TYPE(-16, s64, true);
+#endif
+
+#define TEST_CASTABLE_TO_TYPE_VAR(width)	do {				\
+	u ## width u ## width ## var = 0;					\
+	s ## width s ## width ## var = 0;					\
+										\
+	/* Constant expressions that fit types. */				\
+	TEST_CASTABLE_TO_TYPE(type_max(u ## width), u ## width, true);		\
+	TEST_CASTABLE_TO_TYPE(type_min(u ## width), u ## width, true);		\
+	TEST_CASTABLE_TO_TYPE(type_max(u ## width), u ## width ## var, true);	\
+	TEST_CASTABLE_TO_TYPE(type_min(u ## width), u ## width ## var, true);	\
+	TEST_CASTABLE_TO_TYPE(type_max(s ## width), s ## width, true);		\
+	TEST_CASTABLE_TO_TYPE(type_min(s ## width), s ## width, true);		\
+	TEST_CASTABLE_TO_TYPE(type_max(s ## width), s ## width ## var, true);	\
+	TEST_CASTABLE_TO_TYPE(type_min(u ## width), s ## width ## var, true);	\
+	/* Constant expressions that do not fit types. */			\
+	TEST_CASTABLE_TO_TYPE(type_max(u ## width), s ## width, false);		\
+	TEST_CASTABLE_TO_TYPE(type_max(u ## width), s ## width ## var, false);	\
+	TEST_CASTABLE_TO_TYPE(type_min(s ## width), u ## width, false);		\
+	TEST_CASTABLE_TO_TYPE(type_min(s ## width), u ## width ## var, false);	\
+	/* Non-constant expression with mismatched type. */			\
+	TEST_CASTABLE_TO_TYPE(s ## width ## var, u ## width, false);		\
+	TEST_CASTABLE_TO_TYPE(u ## width ## var, s ## width, false);		\
+} while (0)
+
+#define TEST_CASTABLE_TO_TYPE_RANGE(width)	do {				\
+	unsigned long big = U ## width ## _MAX;					\
+	signed long small = S ## width ## _MIN;					\
+	u ## width u ## width ## var = 0;					\
+	s ## width s ## width ## var = 0;					\
+										\
+	/* Constant expression in range. */					\
+	TEST_CASTABLE_TO_TYPE(U ## width ## _MAX, u ## width, true);		\
+	TEST_CASTABLE_TO_TYPE(U ## width ## _MAX, u ## width ## var, true);	\
+	TEST_CASTABLE_TO_TYPE(S ## width ## _MIN, s ## width, true);		\
+	TEST_CASTABLE_TO_TYPE(S ## width ## _MIN, s ## width ## var, true);	\
+	/* Constant expression out of range. */					\
+	TEST_CASTABLE_TO_TYPE((unsigned long)U ## width ## _MAX + 1, u ## width, false); \
+	TEST_CASTABLE_TO_TYPE((unsigned long)U ## width ## _MAX + 1, u ## width ## var, false); \
+	TEST_CASTABLE_TO_TYPE((signed long)S ## width ## _MIN - 1, s ## width, false); \
+	TEST_CASTABLE_TO_TYPE((signed long)S ## width ## _MIN - 1, s ## width ## var, false); \
+	/* Non-constant expression with mismatched type. */			\
+	TEST_CASTABLE_TO_TYPE(big, u ## width, false);				\
+	TEST_CASTABLE_TO_TYPE(big, u ## width ## var, false);			\
+	TEST_CASTABLE_TO_TYPE(small, s ## width, false);			\
+	TEST_CASTABLE_TO_TYPE(small, s ## width ## var, false);			\
+} while (0)
+
+	TEST_CASTABLE_TO_TYPE_VAR(8);
+	TEST_CASTABLE_TO_TYPE_VAR(16);
+	TEST_CASTABLE_TO_TYPE_VAR(32);
+#if BITS_PER_LONG == 64
+	TEST_CASTABLE_TO_TYPE_VAR(64);
+#endif
+
+	TEST_CASTABLE_TO_TYPE_RANGE(8);
+	TEST_CASTABLE_TO_TYPE_RANGE(16);
+#if BITS_PER_LONG == 64
+	TEST_CASTABLE_TO_TYPE_RANGE(32);
+#endif
+	kunit_info(test, "%d castable_to_type() tests finished\n", count);
+
+#undef TEST_CASTABLE_TO_TYPE_RANGE
+#undef TEST_CASTABLE_TO_TYPE_VAR
+#undef TEST_CASTABLE_TO_TYPE
+}
+
 static struct kunit_case overflow_test_cases[] = {
 	KUNIT_CASE(u8_u8__u8_overflow_test),
 	KUNIT_CASE(s8_s8__s8_overflow_test),
@@ -755,6 +1133,9 @@ static struct kunit_case overflow_test_cases[] = {
 	KUNIT_CASE(shift_nonsense_test),
 	KUNIT_CASE(overflow_allocation_test),
 	KUNIT_CASE(overflow_size_helpers_test),
+	KUNIT_CASE(overflows_type_test),
+	KUNIT_CASE(same_type_test),
+	KUNIT_CASE(castable_to_type_test),
 	{}
 };
 
diff --git a/lib/show_mem.c b/lib/show_mem.c
index 0d7585c..f62c5b3 100644
--- a/lib/show_mem.c
+++ b/lib/show_mem.c
@@ -7,6 +7,7 @@
 
 #include <linux/mm.h>
 #include <linux/cma.h>
+#include <trace/hooks/mm.h>
 
 void __show_mem(unsigned int filter, nodemask_t *nodemask, int max_zone_idx)
 {
@@ -41,4 +42,5 @@ void __show_mem(unsigned int filter, nodemask_t *nodemask, int max_zone_idx)
 #ifdef CONFIG_MEMORY_FAILURE
 	printk("%lu pages hwpoisoned\n", atomic_long_read(&num_poisoned_pages));
 #endif
+	trace_android_vh_show_mem(filter, nodemask);
 }
diff --git a/lib/trace_readwrite.c b/lib/trace_readwrite.c
index 8863703..62b4e8b 100644
--- a/lib/trace_readwrite.c
+++ b/lib/trace_readwrite.c
@@ -14,33 +14,33 @@
 
 #ifdef CONFIG_TRACE_MMIO_ACCESS
 void log_write_mmio(u64 val, u8 width, volatile void __iomem *addr,
-		    unsigned long caller_addr)
+		    unsigned long caller_addr, unsigned long caller_addr0)
 {
-	trace_rwmmio_write(caller_addr, val, width, addr);
+	trace_rwmmio_write(caller_addr, caller_addr0, val, width, addr);
 }
 EXPORT_SYMBOL_GPL(log_write_mmio);
 EXPORT_TRACEPOINT_SYMBOL_GPL(rwmmio_write);
 
 void log_post_write_mmio(u64 val, u8 width, volatile void __iomem *addr,
-			 unsigned long caller_addr)
+			 unsigned long caller_addr, unsigned long caller_addr0)
 {
-	trace_rwmmio_post_write(caller_addr, val, width, addr);
+	trace_rwmmio_post_write(caller_addr, caller_addr0, val, width, addr);
 }
 EXPORT_SYMBOL_GPL(log_post_write_mmio);
 EXPORT_TRACEPOINT_SYMBOL_GPL(rwmmio_post_write);
 
 void log_read_mmio(u8 width, const volatile void __iomem *addr,
-		   unsigned long caller_addr)
+		   unsigned long caller_addr, unsigned long caller_addr0)
 {
-	trace_rwmmio_read(caller_addr, width, addr);
+	trace_rwmmio_read(caller_addr, caller_addr0, width, addr);
 }
 EXPORT_SYMBOL_GPL(log_read_mmio);
 EXPORT_TRACEPOINT_SYMBOL_GPL(rwmmio_read);
 
 void log_post_read_mmio(u64 val, u8 width, const volatile void __iomem *addr,
-			unsigned long caller_addr)
+			unsigned long caller_addr, unsigned long caller_addr0)
 {
-	trace_rwmmio_post_read(caller_addr, val, width, addr);
+	trace_rwmmio_post_read(caller_addr, caller_addr0, val, width, addr);
 }
 EXPORT_SYMBOL_GPL(log_post_read_mmio);
 EXPORT_TRACEPOINT_SYMBOL_GPL(rwmmio_post_read);
diff --git a/mm/Kconfig b/mm/Kconfig
index 57e1d8c..a58632a 100644
--- a/mm/Kconfig
+++ b/mm/Kconfig
@@ -542,6 +542,13 @@
 	bool
 
 #
+# support for memory relinquish
+config MEMORY_RELINQUISH
+	def_bool y
+	depends on ARCH_HAS_MEM_RELINQUISH
+	depends on MEMORY_BALLOON || PAGE_REPORTING
+
+#
 # support for memory balloon compaction
 config BALLOON_COMPACTION
 	bool "Allow for balloon memory compaction/migration"
@@ -816,6 +823,28 @@
 config HAVE_SETUP_PER_CPU_AREA
 	bool
 
+config CLEANCACHE
+	bool "Enable cleancache driver to cache clean pages if tmem is present"
+	help
+	  Cleancache can be thought of as a page-granularity victim cache
+	  for clean pages that the kernel's pageframe replacement algorithm
+	  (PFRA) would like to keep around, but can't since there isn't enough
+	  memory.  So when the PFRA "evicts" a page, it first attempts to use
+	  cleancache code to put the data contained in that page into
+	  "transcendent memory", memory that is not directly accessible or
+	  addressable by the kernel and is of unknown and possibly
+	  time-varying size.  And when a cleancache-enabled
+	  filesystem wishes to access a page in a file on disk, it first
+	  checks cleancache to see if it already contains it; if it does,
+	  the page is copied into the kernel and a disk access is avoided.
+	  When a transcendent memory driver is available (such as zcache or
+	  Xen transcendent memory), a significant I/O reduction
+	  may be achieved.  When none is available, all cleancache calls
+	  are reduced to a single pointer-compare-against-NULL resulting
+	  in a negligible performance hit.
+
+	  If unsure, say Y to enable cleancache
+
 config FRONTSWAP
 	bool
 
@@ -1073,6 +1102,11 @@
 config IO_MAPPING
 	bool
 
+# Some architectures want callbacks for all IO mappings in order to
+# track the physical addresses that get used as devices.
+config ARCH_HAS_IOREMAP_PHYS_HOOKS
+	bool
+
 config SECRETMEM
 	def_bool ARCH_HAS_SET_DIRECT_MAP && !EMBEDDED
 
@@ -1150,6 +1184,18 @@
 	  This option has a per-memcg and per-node memory overhead.
 # }
 
+config ARCH_SUPPORTS_PER_VMA_LOCK
+       def_bool n
+
+config PER_VMA_LOCK
+	def_bool y
+	depends on ARCH_SUPPORTS_PER_VMA_LOCK && MMU && SMP
+	help
+	  Allow per-vma locking during page fault handling.
+
+	  This feature allows locking each virtual memory area separately when
+	  handling page faults instead of taking mmap_lock.
+
 source "mm/damon/Kconfig"
 
 endmenu
diff --git a/mm/Kconfig.debug b/mm/Kconfig.debug
index 32c2df1..04d35cd5 100644
--- a/mm/Kconfig.debug
+++ b/mm/Kconfig.debug
@@ -120,6 +120,22 @@
 
 	  If unsure say "n".
 
+config PAGE_PINNER
+        bool "Track page pinner"
+        depends on DEBUG_KERNEL && STACKTRACE_SUPPORT
+        select DEBUG_FS
+        select STACKTRACE
+        select STACKDEPOT
+        select PAGE_EXTENSION
+        help
+          This keeps track of what call chain is the pinner of a page, may
+          help to find page migration failures. Even if you include this
+          feature in your build, it is disabled by default. You should pass
+          "page_pinner=on" to boot parameter in order to enable it. Eats
+          a fair amount of memory if enabled.
+
+          If unsure, say N.
+
 config PAGE_POISONING
 	bool "Poison pages after freeing"
 	help
@@ -208,3 +224,16 @@
 	  kernel.
 
 	  If in doubt, say N.
+
+config PER_VMA_LOCK_STATS
+	bool "Statistics for per-vma locks"
+	depends on PER_VMA_LOCK
+	help
+	  Say Y here to enable success, retry and failure counters of page
+	  faults handled under protection of per-vma locks. When enabled, the
+	  counters are exposed in /proc/vmstat. This information is useful for
+	  kernel developers to evaluate effectiveness of per-vma locks and to
+	  identify pathological cases. Counting these events introduces a small
+	  overhead in the page fault path.
+
+	  If in doubt, say N.
diff --git a/mm/Makefile b/mm/Makefile
index 8e105e5..6878edc 100644
--- a/mm/Makefile
+++ b/mm/Makefile
@@ -109,6 +109,8 @@
 obj-$(CONFIG_DEBUG_RODATA_TEST) += rodata_test.o
 obj-$(CONFIG_DEBUG_VM_PGTABLE) += debug_vm_pgtable.o
 obj-$(CONFIG_PAGE_OWNER) += page_owner.o
+obj-$(CONFIG_PAGE_PINNER) += page_pinner.o
+obj-$(CONFIG_CLEANCACHE) += cleancache.o
 obj-$(CONFIG_MEMORY_ISOLATION) += page_isolation.o
 obj-$(CONFIG_ZPOOL)	+= zpool.o
 obj-$(CONFIG_ZBUD)	+= zbud.o
diff --git a/mm/cleancache.c b/mm/cleancache.c
new file mode 100644
index 0000000..db7eee9
--- /dev/null
+++ b/mm/cleancache.c
@@ -0,0 +1,315 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Cleancache frontend
+ *
+ * This code provides the generic "frontend" layer to call a matching
+ * "backend" driver implementation of cleancache.  See
+ * Documentation/vm/cleancache.rst for more information.
+ *
+ * Copyright (C) 2009-2010 Oracle Corp. All rights reserved.
+ * Author: Dan Magenheimer
+ */
+
+#include <linux/module.h>
+#include <linux/fs.h>
+#include <linux/exportfs.h>
+#include <linux/mm.h>
+#include <linux/debugfs.h>
+#include <linux/cleancache.h>
+
+/*
+ * cleancache_ops is set by cleancache_register_ops to contain the pointers
+ * to the cleancache "backend" implementation functions.
+ */
+static const struct cleancache_ops *cleancache_ops __read_mostly;
+
+/*
+ * Counters available via /sys/kernel/debug/cleancache (if debugfs is
+ * properly configured.  These are for information only so are not protected
+ * against increment races.
+ */
+static u64 cleancache_succ_gets;
+static u64 cleancache_failed_gets;
+static u64 cleancache_puts;
+static u64 cleancache_invalidates;
+
+static void cleancache_register_ops_sb(struct super_block *sb, void *unused)
+{
+	switch (sb->cleancache_poolid) {
+	case CLEANCACHE_NO_BACKEND:
+		__cleancache_init_fs(sb);
+		break;
+	case CLEANCACHE_NO_BACKEND_SHARED:
+		__cleancache_init_shared_fs(sb);
+		break;
+	}
+}
+
+/*
+ * Register operations for cleancache. Returns 0 on success.
+ */
+int cleancache_register_ops(const struct cleancache_ops *ops)
+{
+	if (cmpxchg(&cleancache_ops, NULL, ops))
+		return -EBUSY;
+
+	/*
+	 * A cleancache backend can be built as a module and hence loaded after
+	 * a cleancache enabled filesystem has called cleancache_init_fs. To
+	 * handle such a scenario, here we call ->init_fs or ->init_shared_fs
+	 * for each active super block. To differentiate between local and
+	 * shared filesystems, we temporarily initialize sb->cleancache_poolid
+	 * to CLEANCACHE_NO_BACKEND or CLEANCACHE_NO_BACKEND_SHARED
+	 * respectively in case there is no backend registered at the time
+	 * cleancache_init_fs or cleancache_init_shared_fs is called.
+	 *
+	 * Since filesystems can be mounted concurrently with cleancache
+	 * backend registration, we have to be careful to guarantee that all
+	 * cleancache enabled filesystems that has been mounted by the time
+	 * cleancache_register_ops is called has got and all mounted later will
+	 * get cleancache_poolid. This is assured by the following statements
+	 * tied together:
+	 *
+	 * a) iterate_supers skips only those super blocks that has started
+	 *    ->kill_sb
+	 *
+	 * b) if iterate_supers encounters a super block that has not finished
+	 *    ->mount yet, it waits until it is finished
+	 *
+	 * c) cleancache_init_fs is called from ->mount and
+	 *    cleancache_invalidate_fs is called from ->kill_sb
+	 *
+	 * d) we call iterate_supers after cleancache_ops has been set
+	 *
+	 * From a) it follows that if iterate_supers skips a super block, then
+	 * either the super block is already dead, in which case we do not need
+	 * to bother initializing cleancache for it, or it was mounted after we
+	 * initiated iterate_supers. In the latter case, it must have seen
+	 * cleancache_ops set according to d) and initialized cleancache from
+	 * ->mount by itself according to c). This proves that we call
+	 * ->init_fs at least once for each active super block.
+	 *
+	 * From b) and c) it follows that if iterate_supers encounters a super
+	 * block that has already started ->init_fs, it will wait until ->mount
+	 * and hence ->init_fs has finished, then check cleancache_poolid, see
+	 * that it has already been set and therefore do nothing. This proves
+	 * that we call ->init_fs no more than once for each super block.
+	 *
+	 * Combined together, the last two paragraphs prove the function
+	 * correctness.
+	 *
+	 * Note that various cleancache callbacks may proceed before this
+	 * function is called or even concurrently with it, but since
+	 * CLEANCACHE_NO_BACKEND is negative, they will all result in a noop
+	 * until the corresponding ->init_fs has been actually called and
+	 * cleancache_ops has been set.
+	 */
+	iterate_supers(cleancache_register_ops_sb, NULL);
+	return 0;
+}
+EXPORT_SYMBOL(cleancache_register_ops);
+
+/* Called by a cleancache-enabled filesystem at time of mount */
+void __cleancache_init_fs(struct super_block *sb)
+{
+	int pool_id = CLEANCACHE_NO_BACKEND;
+
+	if (cleancache_ops) {
+		pool_id = cleancache_ops->init_fs(PAGE_SIZE);
+		if (pool_id < 0)
+			pool_id = CLEANCACHE_NO_POOL;
+	}
+	sb->cleancache_poolid = pool_id;
+}
+EXPORT_SYMBOL(__cleancache_init_fs);
+
+/* Called by a cleancache-enabled clustered filesystem at time of mount */
+void __cleancache_init_shared_fs(struct super_block *sb)
+{
+	int pool_id = CLEANCACHE_NO_BACKEND_SHARED;
+
+	if (cleancache_ops) {
+		pool_id = cleancache_ops->init_shared_fs(&sb->s_uuid, PAGE_SIZE);
+		if (pool_id < 0)
+			pool_id = CLEANCACHE_NO_POOL;
+	}
+	sb->cleancache_poolid = pool_id;
+}
+EXPORT_SYMBOL(__cleancache_init_shared_fs);
+
+/*
+ * If the filesystem uses exportable filehandles, use the filehandle as
+ * the key, else use the inode number.
+ */
+static int cleancache_get_key(struct inode *inode,
+			      struct cleancache_filekey *key)
+{
+	int (*fhfn)(struct inode *, __u32 *fh, int *, struct inode *);
+	int len = 0, maxlen = CLEANCACHE_KEY_MAX;
+	struct super_block *sb = inode->i_sb;
+
+	key->u.ino = inode->i_ino;
+	if (sb->s_export_op != NULL) {
+		fhfn = sb->s_export_op->encode_fh;
+		if  (fhfn) {
+			len = (*fhfn)(inode, &key->u.fh[0], &maxlen, NULL);
+			if (len <= FILEID_ROOT || len == FILEID_INVALID)
+				return -1;
+			if (maxlen > CLEANCACHE_KEY_MAX)
+				return -1;
+		}
+	}
+	return 0;
+}
+
+/*
+ * "Get" data from cleancache associated with the poolid/inode/index
+ * that were specified when the data was put to cleanache and, if
+ * successful, use it to fill the specified page with data and return 0.
+ * The pageframe is unchanged and returns -1 if the get fails.
+ * Page must be locked by caller.
+ *
+ * The function has two checks before any action is taken - whether
+ * a backend is registered and whether the sb->cleancache_poolid
+ * is correct.
+ */
+int __cleancache_get_page(struct page *page)
+{
+	int ret = -1;
+	int pool_id;
+	struct cleancache_filekey key = { .u.key = { 0 } };
+
+	if (!cleancache_ops) {
+		cleancache_failed_gets++;
+		goto out;
+	}
+
+	VM_BUG_ON_PAGE(!PageLocked(page), page);
+	pool_id = page->mapping->host->i_sb->cleancache_poolid;
+	if (pool_id < 0)
+		goto out;
+
+	if (cleancache_get_key(page->mapping->host, &key) < 0)
+		goto out;
+
+	ret = cleancache_ops->get_page(pool_id, key, page->index, page);
+	if (ret == 0)
+		cleancache_succ_gets++;
+	else
+		cleancache_failed_gets++;
+out:
+	return ret;
+}
+EXPORT_SYMBOL(__cleancache_get_page);
+
+/*
+ * "Put" data from a page to cleancache and associate it with the
+ * (previously-obtained per-filesystem) poolid and the page's,
+ * inode and page index.  Page must be locked.  Note that a put_page
+ * always "succeeds", though a subsequent get_page may succeed or fail.
+ *
+ * The function has two checks before any action is taken - whether
+ * a backend is registered and whether the sb->cleancache_poolid
+ * is correct.
+ */
+void __cleancache_put_page(struct page *page)
+{
+	int pool_id;
+	struct cleancache_filekey key = { .u.key = { 0 } };
+
+	if (!cleancache_ops) {
+		cleancache_puts++;
+		return;
+	}
+
+	VM_BUG_ON_PAGE(!PageLocked(page), page);
+	pool_id = page->mapping->host->i_sb->cleancache_poolid;
+	if (pool_id >= 0 &&
+		cleancache_get_key(page->mapping->host, &key) >= 0) {
+		cleancache_ops->put_page(pool_id, key, page->index, page);
+		cleancache_puts++;
+	}
+}
+EXPORT_SYMBOL(__cleancache_put_page);
+
+/*
+ * Invalidate any data from cleancache associated with the poolid and the
+ * page's inode and page index so that a subsequent "get" will fail.
+ *
+ * The function has two checks before any action is taken - whether
+ * a backend is registered and whether the sb->cleancache_poolid
+ * is correct.
+ */
+void __cleancache_invalidate_page(struct address_space *mapping,
+					struct page *page)
+{
+	/* careful... page->mapping is NULL sometimes when this is called */
+	int pool_id = mapping->host->i_sb->cleancache_poolid;
+	struct cleancache_filekey key = { .u.key = { 0 } };
+
+	if (!cleancache_ops)
+		return;
+
+	if (pool_id >= 0) {
+		VM_BUG_ON_PAGE(!PageLocked(page), page);
+		if (cleancache_get_key(mapping->host, &key) >= 0) {
+			cleancache_ops->invalidate_page(pool_id,
+					key, page->index);
+			cleancache_invalidates++;
+		}
+	}
+}
+EXPORT_SYMBOL(__cleancache_invalidate_page);
+
+/*
+ * Invalidate all data from cleancache associated with the poolid and the
+ * mappings's inode so that all subsequent gets to this poolid/inode
+ * will fail.
+ *
+ * The function has two checks before any action is taken - whether
+ * a backend is registered and whether the sb->cleancache_poolid
+ * is correct.
+ */
+void __cleancache_invalidate_inode(struct address_space *mapping)
+{
+	int pool_id = mapping->host->i_sb->cleancache_poolid;
+	struct cleancache_filekey key = { .u.key = { 0 } };
+
+	if (!cleancache_ops)
+		return;
+
+	if (pool_id >= 0 && cleancache_get_key(mapping->host, &key) >= 0)
+		cleancache_ops->invalidate_inode(pool_id, key);
+}
+EXPORT_SYMBOL(__cleancache_invalidate_inode);
+
+/*
+ * Called by any cleancache-enabled filesystem at time of unmount;
+ * note that pool_id is surrendered and may be returned by a subsequent
+ * cleancache_init_fs or cleancache_init_shared_fs.
+ */
+void __cleancache_invalidate_fs(struct super_block *sb)
+{
+	int pool_id;
+
+	pool_id = sb->cleancache_poolid;
+	sb->cleancache_poolid = CLEANCACHE_NO_POOL;
+
+	if (cleancache_ops && pool_id >= 0)
+		cleancache_ops->invalidate_fs(pool_id);
+}
+EXPORT_SYMBOL(__cleancache_invalidate_fs);
+
+static int __init init_cleancache(void)
+{
+#ifdef CONFIG_DEBUG_FS
+	struct dentry *root = debugfs_create_dir("cleancache", NULL);
+
+	debugfs_create_u64("succ_gets", 0444, root, &cleancache_succ_gets);
+	debugfs_create_u64("failed_gets", 0444, root, &cleancache_failed_gets);
+	debugfs_create_u64("puts", 0444, root, &cleancache_puts);
+	debugfs_create_u64("invalidates", 0444, root, &cleancache_invalidates);
+#endif
+	return 0;
+}
+module_init(init_cleancache)
diff --git a/mm/cma.c b/mm/cma.c
index 4a978e0..332f3c6 100644
--- a/mm/cma.c
+++ b/mm/cma.c
@@ -24,6 +24,7 @@
 #include <linux/memblock.h>
 #include <linux/err.h>
 #include <linux/mm.h>
+#include <linux/module.h>
 #include <linux/sizes.h>
 #include <linux/slab.h>
 #include <linux/log2.h>
@@ -31,6 +32,8 @@
 #include <linux/highmem.h>
 #include <linux/io.h>
 #include <linux/kmemleak.h>
+#include <linux/sched.h>
+#include <linux/jiffies.h>
 #include <trace/events/cma.h>
 
 #include "cma.h"
@@ -53,6 +56,7 @@ const char *cma_get_name(const struct cma *cma)
 {
 	return cma->name;
 }
+EXPORT_SYMBOL_GPL(cma_get_name);
 
 static unsigned long cma_bitmap_aligned_mask(const struct cma *cma,
 					     unsigned int align_order)
@@ -431,6 +435,8 @@ struct page *cma_alloc(struct cma *cma, unsigned long count,
 	unsigned long i;
 	struct page *page = NULL;
 	int ret = -ENOMEM;
+	int num_attempts = 0;
+	int max_retries = 5;
 
 	if (!cma || !cma->count || !cma->bitmap)
 		goto out;
@@ -457,8 +463,28 @@ struct page *cma_alloc(struct cma *cma, unsigned long count,
 				bitmap_maxno, start, bitmap_count, mask,
 				offset);
 		if (bitmap_no >= bitmap_maxno) {
-			spin_unlock_irq(&cma->lock);
-			break;
+			if ((num_attempts < max_retries) && (ret == -EBUSY)) {
+				spin_unlock_irq(&cma->lock);
+
+				if (fatal_signal_pending(current))
+					break;
+
+				/*
+				 * Page may be momentarily pinned by some other
+				 * process which has been scheduled out, e.g.
+				 * in exit path, during unmap call, or process
+				 * fork and so cannot be freed there. Sleep
+				 * for 100ms and retry the allocation.
+				 */
+				start = 0;
+				ret = -ENOMEM;
+				schedule_timeout_killable(msecs_to_jiffies(100));
+				num_attempts++;
+				continue;
+			} else {
+				spin_unlock_irq(&cma->lock);
+				break;
+			}
 		}
 		bitmap_set(cma->bitmap, bitmap_no, bitmap_count);
 		/*
@@ -522,6 +548,7 @@ struct page *cma_alloc(struct cma *cma, unsigned long count,
 
 	return page;
 }
+EXPORT_SYMBOL_GPL(cma_alloc);
 
 bool cma_pages_valid(struct cma *cma, const struct page *pages,
 		     unsigned long count)
@@ -572,6 +599,7 @@ bool cma_release(struct cma *cma, const struct page *pages,
 
 	return true;
 }
+EXPORT_SYMBOL_GPL(cma_release);
 
 int cma_for_each_area(int (*it)(struct cma *cma, void *data), void *data)
 {
@@ -586,3 +614,4 @@ int cma_for_each_area(int (*it)(struct cma *cma, void *data), void *data)
 
 	return 0;
 }
+EXPORT_SYMBOL_GPL(cma_for_each_area);
diff --git a/mm/compaction.c b/mm/compaction.c
index 8238e83..2d9bc2e 100644
--- a/mm/compaction.c
+++ b/mm/compaction.c
@@ -744,6 +744,31 @@ isolate_freepages_range(struct compact_control *cc,
 	return pfn;
 }
 
+#ifdef CONFIG_COMPACTION
+unsigned long isolate_and_split_free_page(struct page *page,
+						struct list_head *list)
+{
+	unsigned long isolated;
+	unsigned int order;
+
+	if (!PageBuddy(page))
+		return 0;
+
+	order = buddy_order(page);
+	isolated = __isolate_free_page(page, order);
+	if (!isolated)
+		return 0;
+
+	set_page_private(page, order);
+	list_add(&page->lru, list);
+
+	split_map_pages(list);
+
+	return isolated;
+}
+EXPORT_SYMBOL_GPL(isolate_and_split_free_page);
+#endif
+
 /* Similar to reclaim, but different enough that they don't share logic */
 static bool too_many_isolated(pg_data_t *pgdat)
 {
diff --git a/mm/debug.c b/mm/debug.c
index 0fd15ba..ff89bef 100644
--- a/mm/debug.c
+++ b/mm/debug.c
@@ -214,6 +214,7 @@ void dump_mm(const struct mm_struct *mm)
 		mm->def_flags, &mm->def_flags
 	);
 }
+EXPORT_SYMBOL(dump_mm);
 
 static bool page_init_poisoning __read_mostly = true;
 
diff --git a/mm/fadvise.c b/mm/fadvise.c
index c76ee66..2ba24d8 100644
--- a/mm/fadvise.c
+++ b/mm/fadvise.c
@@ -80,7 +80,7 @@ int generic_fadvise(struct file *file, loff_t offset, loff_t len, int advice)
 	case POSIX_FADV_NORMAL:
 		file->f_ra.ra_pages = bdi->ra_pages;
 		spin_lock(&file->f_lock);
-		file->f_mode &= ~FMODE_RANDOM;
+		file->f_mode &= ~(FMODE_RANDOM | FMODE_NOREUSE);
 		spin_unlock(&file->f_lock);
 		break;
 	case POSIX_FADV_RANDOM:
@@ -107,6 +107,9 @@ int generic_fadvise(struct file *file, loff_t offset, loff_t len, int advice)
 		force_page_cache_readahead(mapping, file, start_index, nrpages);
 		break;
 	case POSIX_FADV_NOREUSE:
+		spin_lock(&file->f_lock);
+		file->f_mode |= FMODE_NOREUSE;
+		spin_unlock(&file->f_lock);
 		break;
 	case POSIX_FADV_DONTNEED:
 		__filemap_fdatawrite_range(mapping, offset, endbyte,
diff --git a/mm/filemap.c b/mm/filemap.c
index 322aea7..695d924 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -35,6 +35,7 @@
 #include <linux/cpuset.h>
 #include <linux/hugetlb.h>
 #include <linux/memcontrol.h>
+#include <linux/cleancache.h>
 #include <linux/shmem_fs.h>
 #include <linux/rmap.h>
 #include <linux/delayacct.h>
@@ -150,6 +151,16 @@ static void filemap_unaccount_folio(struct address_space *mapping,
 {
 	long nr;
 
+	/*
+	 * if we're uptodate, flush out into the cleancache, otherwise
+	 * invalidate any existing cleancache entries.  We can't leave
+	 * stale data around in the cleancache once our page is gone
+	 */
+	if (folio_test_uptodate(folio) && folio_test_mappedtodisk(folio))
+		cleancache_put_page(&folio->page);
+	else
+		cleancache_invalidate_page(mapping, &folio->page);
+
 	VM_BUG_ON_FOLIO(folio_mapped(folio), folio);
 	if (!IS_ENABLED(CONFIG_DEBUG_VM) && unlikely(folio_mapped(folio))) {
 		pr_alert("BUG: Bad page cache in process %s  pfn:%05lx\n",
diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index d3ffa0f..34d7816 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -6928,8 +6928,8 @@ static unsigned long page_table_shareable(struct vm_area_struct *svma,
 	unsigned long s_end = sbase + PUD_SIZE;
 
 	/* Allow segments to share if only one is marked locked */
-	unsigned long vm_flags = vma->vm_flags & VM_LOCKED_CLEAR_MASK;
-	unsigned long svm_flags = svma->vm_flags & VM_LOCKED_CLEAR_MASK;
+	unsigned long vm_flags = vma->vm_flags & ~VM_LOCKED_MASK;
+	unsigned long svm_flags = svma->vm_flags & ~VM_LOCKED_MASK;
 
 	/*
 	 * match the virtual addresses, permission and the alignment of the
diff --git a/mm/init-mm.c b/mm/init-mm.c
index c9327ab..33269314 100644
--- a/mm/init-mm.c
+++ b/mm/init-mm.c
@@ -37,6 +37,9 @@ struct mm_struct init_mm = {
 	.page_table_lock =  __SPIN_LOCK_UNLOCKED(init_mm.page_table_lock),
 	.arg_lock	=  __SPIN_LOCK_UNLOCKED(init_mm.arg_lock),
 	.mmlist		= LIST_HEAD_INIT(init_mm.mmlist),
+#ifdef CONFIG_PER_VMA_LOCK
+	.mm_lock_seq	= 0,
+#endif
 	.user_ns	= &init_user_ns,
 	.cpu_bitmap	= CPU_BITS_NONE,
 #ifdef CONFIG_IOMMU_SVA
diff --git a/mm/internal.h b/mm/internal.h
index 6b7ef495..fe0925d 100644
--- a/mm/internal.h
+++ b/mm/internal.h
@@ -87,7 +87,8 @@ void folio_activate(struct folio *folio);
 
 void free_pgtables(struct mmu_gather *tlb, struct maple_tree *mt,
 		   struct vm_area_struct *start_vma, unsigned long floor,
-		   unsigned long ceiling);
+		   unsigned long ceiling, unsigned long start_t,
+		   bool mm_wr_locked);
 void pmd_install(struct mm_struct *mm, pmd_t *pmd, pgtable_t *pte);
 
 struct zap_details;
diff --git a/mm/kasan/common.c b/mm/kasan/common.c
index 21e66d7..3756d7e 100644
--- a/mm/kasan/common.c
+++ b/mm/kasan/common.c
@@ -95,19 +95,24 @@ asmlinkage void kasan_unpoison_task_stack_below(const void *watermark)
 }
 #endif /* CONFIG_KASAN_STACK */
 
-void __kasan_unpoison_pages(struct page *page, unsigned int order, bool init)
+bool __kasan_unpoison_pages(struct page *page, unsigned int order, bool init)
 {
 	u8 tag;
 	unsigned long i;
 
 	if (unlikely(PageHighMem(page)))
-		return;
+		return false;
+
+	if (!kasan_sample_page_alloc(order))
+		return false;
 
 	tag = kasan_random_tag();
 	kasan_unpoison(set_tag(page_address(page), tag),
 		       PAGE_SIZE << order, init);
 	for (i = 0; i < (1 << order); i++)
 		page_kasan_tag_set(page + i, tag);
+
+	return true;
 }
 
 void __kasan_poison_pages(struct page *page, unsigned int order, bool init)
diff --git a/mm/kasan/hw_tags.c b/mm/kasan/hw_tags.c
index cc9bc99..2f7ec2e 100644
--- a/mm/kasan/hw_tags.c
+++ b/mm/kasan/hw_tags.c
@@ -59,6 +59,24 @@ EXPORT_SYMBOL_GPL(kasan_mode);
 /* Whether to enable vmalloc tagging. */
 DEFINE_STATIC_KEY_TRUE(kasan_flag_vmalloc);
 
+#define PAGE_ALLOC_SAMPLE_DEFAULT	1
+#define PAGE_ALLOC_SAMPLE_ORDER_DEFAULT	3
+
+/*
+ * Sampling interval of page_alloc allocation (un)poisoning.
+ * Defaults to no sampling.
+ */
+unsigned long kasan_page_alloc_sample = PAGE_ALLOC_SAMPLE_DEFAULT;
+
+/*
+ * Minimum order of page_alloc allocations to be affected by sampling.
+ * The default value is chosen to match both
+ * PAGE_ALLOC_COSTLY_ORDER and SKB_FRAG_PAGE_ORDER.
+ */
+unsigned int kasan_page_alloc_sample_order = PAGE_ALLOC_SAMPLE_ORDER_DEFAULT;
+
+DEFINE_PER_CPU(long, kasan_page_alloc_skip);
+
 /* kasan=off/on */
 static int __init early_kasan_flag(char *arg)
 {
@@ -122,6 +140,48 @@ static inline const char *kasan_mode_info(void)
 		return "sync";
 }
 
+/* kasan.page_alloc.sample=<sampling interval> */
+static int __init early_kasan_flag_page_alloc_sample(char *arg)
+{
+	int rv;
+
+	if (!arg)
+		return -EINVAL;
+
+	rv = kstrtoul(arg, 0, &kasan_page_alloc_sample);
+	if (rv)
+		return rv;
+
+	if (!kasan_page_alloc_sample || kasan_page_alloc_sample > LONG_MAX) {
+		kasan_page_alloc_sample = PAGE_ALLOC_SAMPLE_DEFAULT;
+		return -EINVAL;
+	}
+
+	return 0;
+}
+early_param("kasan.page_alloc.sample", early_kasan_flag_page_alloc_sample);
+
+/* kasan.page_alloc.sample.order=<minimum page order> */
+static int __init early_kasan_flag_page_alloc_sample_order(char *arg)
+{
+	int rv;
+
+	if (!arg)
+		return -EINVAL;
+
+	rv = kstrtouint(arg, 0, &kasan_page_alloc_sample_order);
+	if (rv)
+		return rv;
+
+	if (kasan_page_alloc_sample_order > INT_MAX) {
+		kasan_page_alloc_sample_order = PAGE_ALLOC_SAMPLE_ORDER_DEFAULT;
+		return -EINVAL;
+	}
+
+	return 0;
+}
+early_param("kasan.page_alloc.sample.order", early_kasan_flag_page_alloc_sample_order);
+
 /*
  * kasan_init_hw_tags_cpu() is called for each CPU.
  * Not marked as __init as a CPU can be hot-plugged after boot.
diff --git a/mm/kasan/kasan.h b/mm/kasan/kasan.h
index abbcc1b..8b6e0983 100644
--- a/mm/kasan/kasan.h
+++ b/mm/kasan/kasan.h
@@ -42,6 +42,10 @@ enum kasan_mode {
 
 extern enum kasan_mode kasan_mode __ro_after_init;
 
+extern unsigned long kasan_page_alloc_sample;
+extern unsigned int kasan_page_alloc_sample_order;
+DECLARE_PER_CPU(long, kasan_page_alloc_skip);
+
 static inline bool kasan_vmalloc_enabled(void)
 {
 	return static_branch_likely(&kasan_flag_vmalloc);
@@ -57,6 +61,24 @@ static inline bool kasan_sync_fault_possible(void)
 	return kasan_mode == KASAN_MODE_SYNC || kasan_mode == KASAN_MODE_ASYMM;
 }
 
+static inline bool kasan_sample_page_alloc(unsigned int order)
+{
+	/* Fast-path for when sampling is disabled. */
+	if (kasan_page_alloc_sample == 1)
+		return true;
+
+	if (order < kasan_page_alloc_sample_order)
+		return true;
+
+	if (this_cpu_dec_return(kasan_page_alloc_skip) < 0) {
+		this_cpu_write(kasan_page_alloc_skip,
+			       kasan_page_alloc_sample - 1);
+		return true;
+	}
+
+	return false;
+}
+
 #else /* CONFIG_KASAN_HW_TAGS */
 
 static inline bool kasan_async_fault_possible(void)
@@ -69,6 +91,11 @@ static inline bool kasan_sync_fault_possible(void)
 	return true;
 }
 
+static inline bool kasan_sample_page_alloc(unsigned int order)
+{
+	return true;
+}
+
 #endif /* CONFIG_KASAN_HW_TAGS */
 
 #ifdef CONFIG_KASAN_GENERIC
diff --git a/mm/kfence/core.c b/mm/kfence/core.c
index a477b7f..c597cfe 100644
--- a/mm/kfence/core.c
+++ b/mm/kfence/core.c
@@ -828,6 +828,10 @@ void __init kfence_alloc_pool(void)
 	if (!kfence_sample_interval)
 		return;
 
+	/* if the pool has already been initialized by arch, skip the below. */
+	if (__kfence_pool)
+		return;
+
 	__kfence_pool = memblock_alloc(KFENCE_POOL_SIZE, PAGE_SIZE);
 
 	if (!__kfence_pool)
diff --git a/mm/khugepaged.c b/mm/khugepaged.c
index ef72d3d..c57bf06 100644
--- a/mm/khugepaged.c
+++ b/mm/khugepaged.c
@@ -1042,6 +1042,7 @@ static int collapse_huge_page(struct mm_struct *mm, unsigned long address,
 	if (result != SCAN_SUCCEED)
 		goto out_up_write;
 
+	vma_start_write(vma);
 	anon_vma_lock_write(vma->anon_vma);
 
 	mmu_notifier_range_init(&range, MMU_NOTIFY_CLEAR, 0, NULL, mm,
@@ -1512,6 +1513,9 @@ int collapse_pte_mapped_thp(struct mm_struct *mm, unsigned long addr,
 		goto drop_hpage;
 	}
 
+	/* Lock the vma before taking i_mmap and page table locks */
+	vma_start_write(vma);
+
 	/*
 	 * We need to lock the mapping so that from here on, only GUP-fast and
 	 * hardware page walks can access the parts of the page tables that
@@ -1689,6 +1693,10 @@ static int retract_page_tables(struct address_space *mapping, pgoff_t pgoff,
 		result = SCAN_PTE_MAPPED_HUGEPAGE;
 		if ((cc->is_khugepaged || is_target) &&
 		    mmap_write_trylock(mm)) {
+			/* trylock for the same lock inversion as above */
+			if (!vma_try_start_write(vma))
+				goto unlock_next;
+
 			/*
 			 * Re-check whether we have an ->anon_vma, because
 			 * collapse_and_free_pmd() requires that either no
diff --git a/mm/kmemleak.c b/mm/kmemleak.c
index 646e297..a2c58203 100644
--- a/mm/kmemleak.c
+++ b/mm/kmemleak.c
@@ -13,11 +13,12 @@
  *
  * The following locks and mutexes are used by kmemleak:
  *
- * - kmemleak_lock (raw_spinlock_t): protects the object_list modifications and
- *   accesses to the object_tree_root (or object_phys_tree_root). The
- *   object_list is the main list holding the metadata (struct kmemleak_object)
- *   for the allocated memory blocks. The object_tree_root and object_phys_tree_root
- *   are red black trees used to look-up metadata based on a pointer to the
+ * - kmemleak_lock (raw_spinlock_t): protects the object_list as well as
+ *   del_state modifications and accesses to the object_tree_root (or
+ *   object_phys_tree_root). The object_list is the main list holding the
+ *   metadata (struct kmemleak_object) for the allocated memory blocks.
+ *   The object_tree_root and object_phys_tree_root are red
+ *   black trees used to look-up metadata based on a pointer to the
  *   corresponding memory block. The object_phys_tree_root is for objects
  *   allocated with physical address. The kmemleak_object structures are
  *   added to the object_list and object_tree_root (or object_phys_tree_root)
@@ -147,6 +148,7 @@ struct kmemleak_object {
 	struct rcu_head rcu;		/* object_list lockless traversal */
 	/* object usage count; object freed when use_count == 0 */
 	atomic_t use_count;
+	unsigned int del_state;		/* deletion state */
 	unsigned long pointer;
 	size_t size;
 	/* pass surplus references to this pointer */
@@ -177,6 +179,11 @@ struct kmemleak_object {
 /* flag set for object allocated with physical address */
 #define OBJECT_PHYS		(1 << 4)
 
+/* set when __remove_object() called */
+#define DELSTATE_REMOVED	(1 << 0)
+/* set to temporarily prevent deletion from object_list */
+#define DELSTATE_NO_DELETE	(1 << 1)
+
 #define HEX_PREFIX		"    "
 /* number of bytes to print per line; must be 16 or 32 */
 #define HEX_ROW_SIZE		16
@@ -567,7 +574,9 @@ static void __remove_object(struct kmemleak_object *object)
 	rb_erase(&object->rb_node, object->flags & OBJECT_PHYS ?
 				   &object_phys_tree_root :
 				   &object_tree_root);
-	list_del_rcu(&object->object_list);
+	if (!(object->del_state & DELSTATE_NO_DELETE))
+		list_del_rcu(&object->object_list);
+	object->del_state |= DELSTATE_REMOVED;
 }
 
 /*
@@ -633,6 +642,7 @@ static void __create_object(unsigned long ptr, size_t size,
 	object->count = 0;			/* white color initially */
 	object->jiffies = jiffies;
 	object->checksum = 0;
+	object->del_state = 0;
 
 	/* task information */
 	if (in_hardirq()) {
@@ -1473,9 +1483,22 @@ static bool kmemleak_cond_resched(struct kmemleak_object *object, bool pinned)
 	if (!pinned && !get_object(object))
 		return false;
 
+	raw_spin_lock_irq(&kmemleak_lock);
+	if (object->del_state & DELSTATE_REMOVED)
+		goto unlock_put;	/* Object removed */
+	object->del_state |= DELSTATE_NO_DELETE;
+	raw_spin_unlock_irq(&kmemleak_lock);
+
 	rcu_read_unlock();
 	cond_resched();
 	rcu_read_lock();
+
+	raw_spin_lock_irq(&kmemleak_lock);
+	if (object->del_state & DELSTATE_REMOVED)
+		list_del_rcu(&object->object_list);
+	object->del_state &= ~DELSTATE_NO_DELETE;
+unlock_put:
+	raw_spin_unlock_irq(&kmemleak_lock);
 	if (!pinned)
 		put_object(object);
 	return true;
diff --git a/mm/madvise.c b/mm/madvise.c
index d03e149..f49a62a 100644
--- a/mm/madvise.c
+++ b/mm/madvise.c
@@ -31,6 +31,7 @@
 #include <linux/swapops.h>
 #include <linux/shmem_fs.h>
 #include <linux/mmu_notifier.h>
+#include <trace/hooks/mm.h>
 
 #include <asm/tlb.h>
 
@@ -182,7 +183,7 @@ static int madvise_update_vma(struct vm_area_struct *vma,
 	/*
 	 * vm_flags is protected by the mmap_lock held in write mode.
 	 */
-	vma->vm_flags = new_flags;
+	vm_flags_reset(vma, new_flags);
 	if (!vma->vm_file) {
 		error = replace_anon_vma_name(vma, anon_name);
 		if (error)
@@ -219,6 +220,7 @@ static int swapin_walk_pmd_entry(pmd_t *pmd, unsigned long start,
 		entry = pte_to_swp_entry(pte);
 		if (unlikely(non_swap_entry(entry)))
 			continue;
+		trace_android_vh_madvise_swapin_walk_pmd_entry(entry);
 
 		page = read_swap_cache_async(entry, GFP_HIGHUSER_MOVABLE,
 					     vma, index, false, &splug);
@@ -321,6 +323,21 @@ static long madvise_willneed(struct vm_area_struct *vma,
 	return 0;
 }
 
+static inline bool can_do_file_pageout(struct vm_area_struct *vma)
+{
+	if (!vma->vm_file)
+		return false;
+	/*
+	 * paging out pagecache only for non-anonymous mappings that correspond
+	 * to the files the calling process could (if tried) open for writing;
+	 * otherwise we'd be including shared non-exclusive mappings, which
+	 * opens a side channel.
+	 */
+	return inode_owner_or_capable(&init_user_ns,
+				      file_inode(vma->vm_file)) ||
+	       file_permission(vma->vm_file, MAY_WRITE) == 0;
+}
+
 static int madvise_cold_or_pageout_pte_range(pmd_t *pmd,
 				unsigned long addr, unsigned long end,
 				struct mm_walk *walk)
@@ -334,10 +351,15 @@ static int madvise_cold_or_pageout_pte_range(pmd_t *pmd,
 	spinlock_t *ptl;
 	struct page *page = NULL;
 	LIST_HEAD(page_list);
+	bool pageout_anon_only_filter;
+	swp_entry_t entry;
 
 	if (fatal_signal_pending(current))
 		return -EINTR;
 
+	pageout_anon_only_filter = pageout && !vma_is_anonymous(vma) &&
+					!can_do_file_pageout(vma);
+
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
 	if (pmd_trans_huge(*pmd)) {
 		pmd_t orig_pmd;
@@ -364,6 +386,9 @@ static int madvise_cold_or_pageout_pte_range(pmd_t *pmd,
 		if (page_mapcount(page) != 1)
 			goto huge_unlock;
 
+		if (pageout_anon_only_filter && !PageAnon(page))
+			goto huge_unlock;
+
 		if (next - addr != HPAGE_PMD_SIZE) {
 			int err;
 
@@ -413,18 +438,30 @@ static int madvise_cold_or_pageout_pte_range(pmd_t *pmd,
 	flush_tlb_batched_pending(mm);
 	arch_enter_lazy_mmu_mode();
 	for (; addr < end; pte++, addr += PAGE_SIZE) {
+		bool need_skip = false;
+
 		ptent = *pte;
 
 		if (pte_none(ptent))
 			continue;
 
-		if (!pte_present(ptent))
+		if (!pte_present(ptent)) {
+			entry = pte_to_swp_entry(ptent);
+			trace_android_vh_madvise_pageout_swap_entry(entry,
+					swp_swapcount(entry));
 			continue;
+		}
 
 		page = vm_normal_page(vma, addr, ptent);
 		if (!page || is_zone_device_page(page))
 			continue;
 
+		trace_android_vh_madvise_cold_pageout_skip(vma, page, pageout,
+			&need_skip);
+
+		if (need_skip)
+			continue;
+
 		/*
 		 * Creating a THP page is expensive so split it only if we
 		 * are sure it's worth. Split it if we are only owner.
@@ -432,6 +469,8 @@ static int madvise_cold_or_pageout_pte_range(pmd_t *pmd,
 		if (PageTransCompound(page)) {
 			if (page_mapcount(page) != 1)
 				break;
+			if (pageout_anon_only_filter && !PageAnon(page))
+				break;
 			get_page(page);
 			if (!trylock_page(page)) {
 				put_page(page);
@@ -459,6 +498,9 @@ static int madvise_cold_or_pageout_pte_range(pmd_t *pmd,
 		if (!PageLRU(page) || page_mapcount(page) != 1)
 			continue;
 
+		if (pageout_anon_only_filter && !PageAnon(page))
+			continue;
+
 		VM_BUG_ON_PAGE(PageTransCompound(page), page);
 
 		if (pte_young(ptent)) {
@@ -553,23 +595,6 @@ static void madvise_pageout_page_range(struct mmu_gather *tlb,
 	tlb_end_vma(tlb, vma);
 }
 
-static inline bool can_do_pageout(struct vm_area_struct *vma)
-{
-	if (vma_is_anonymous(vma))
-		return true;
-	if (!vma->vm_file)
-		return false;
-	/*
-	 * paging out pagecache only for non-anonymous mappings that correspond
-	 * to the files the calling process could (if tried) open for writing;
-	 * otherwise we'd be including shared non-exclusive mappings, which
-	 * opens a side channel.
-	 */
-	return inode_owner_or_capable(&init_user_ns,
-				      file_inode(vma->vm_file)) ||
-	       file_permission(vma->vm_file, MAY_WRITE) == 0;
-}
-
 static long madvise_pageout(struct vm_area_struct *vma,
 			struct vm_area_struct **prev,
 			unsigned long start_addr, unsigned long end_addr)
@@ -581,7 +606,14 @@ static long madvise_pageout(struct vm_area_struct *vma,
 	if (!can_madv_lru_vma(vma))
 		return -EINVAL;
 
-	if (!can_do_pageout(vma))
+	/*
+	 * If the VMA belongs to a private file mapping, there can be private
+	 * dirty pages which can be paged out if even this process is neither
+	 * owner nor write capable of the file. We allow private file mappings
+	 * further to pageout dirty anon pages.
+	 */
+	if (!vma_is_anonymous(vma) && (!can_do_file_pageout(vma) &&
+				(vma->vm_flags & VM_MAYSHARE)))
 		return 0;
 
 	lru_add_drain();
@@ -1501,6 +1533,7 @@ SYSCALL_DEFINE5(process_madvise, int, pidfd, const struct iovec __user *, vec,
 		iov_iter_advance(&iter, iovec.iov_len);
 	}
 
+	trace_android_vh_process_madvise_end(behavior, &ret);
 	ret = (total_len - iov_iter_count(&iter)) ? : ret;
 
 release_mm:
diff --git a/mm/memblock.c b/mm/memblock.c
index 511d478..f454553 100644
--- a/mm/memblock.c
+++ b/mm/memblock.c
@@ -849,6 +849,9 @@ int __init_memblock memblock_phys_free(phys_addr_t base, phys_addr_t size)
 	kmemleak_free_part_phys(base, size);
 	return memblock_remove_range(&memblock.reserved, base, size);
 }
+#ifdef CONFIG_ARCH_KEEP_MEMBLOCK
+EXPORT_SYMBOL_GPL(memblock_free);
+#endif
 
 int __init_memblock memblock_reserve(phys_addr_t base, phys_addr_t size)
 {
@@ -1671,6 +1674,7 @@ phys_addr_t __init_memblock memblock_end_of_DRAM(void)
 
 	return (memblock.memory.regions[idx].base + memblock.memory.regions[idx].size);
 }
+EXPORT_SYMBOL_GPL(memblock_end_of_DRAM);
 
 static phys_addr_t __init_memblock __find_max_addr(phys_addr_t limit)
 {
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index 3e8f1ad..aa09cf4 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -72,6 +72,7 @@
 #include <linux/uaccess.h>
 
 #include <trace/events/vmscan.h>
+#include <trace/hooks/mm.h>
 
 struct cgroup_subsys memory_cgrp_subsys __read_mostly;
 EXPORT_SYMBOL(memory_cgrp_subsys);
@@ -477,6 +478,12 @@ static void mem_cgroup_update_tree(struct mem_cgroup *memcg, int nid)
 	struct mem_cgroup_per_node *mz;
 	struct mem_cgroup_tree_per_node *mctz;
 
+	if (lru_gen_enabled()) {
+		if (soft_limit_excess(memcg))
+			lru_gen_soft_reclaim(&memcg->nodeinfo[nid]->lruvec);
+		return;
+	}
+
 	mctz = soft_limit_tree.rb_tree_per_node[nid];
 	if (!mctz)
 		return;
@@ -3522,6 +3529,9 @@ unsigned long mem_cgroup_soft_limit_reclaim(pg_data_t *pgdat, int order,
 	struct mem_cgroup_tree_per_node *mctz;
 	unsigned long excess;
 
+	if (lru_gen_enabled())
+		return 0;
+
 	if (order > 0)
 		return 0;
 
@@ -5139,6 +5149,7 @@ static DEFINE_IDR(mem_cgroup_idr);
 static void mem_cgroup_id_remove(struct mem_cgroup *memcg)
 {
 	if (memcg->id.id > 0) {
+		trace_android_vh_mem_cgroup_id_remove(memcg);
 		idr_remove(&mem_cgroup_idr, memcg->id.id);
 		memcg->id.id = 0;
 	}
@@ -5176,6 +5187,7 @@ struct mem_cgroup *mem_cgroup_from_id(unsigned short id)
 	WARN_ON_ONCE(!rcu_read_lock_held());
 	return idr_find(&mem_cgroup_idr, id);
 }
+EXPORT_SYMBOL_GPL(mem_cgroup_from_id);
 
 #ifdef CONFIG_SHRINKER_DEBUG
 struct mem_cgroup *mem_cgroup_get_from_ino(unsigned long ino)
@@ -5237,6 +5249,7 @@ static void __mem_cgroup_free(struct mem_cgroup *memcg)
 {
 	int node;
 
+	trace_android_vh_mem_cgroup_free(memcg);
 	for_each_node(node)
 		free_mem_cgroup_per_node_info(memcg, node);
 	kfree(memcg->vmstats);
@@ -5310,6 +5323,7 @@ static struct mem_cgroup *mem_cgroup_alloc(void)
 #endif
 	idr_replace(&mem_cgroup_idr, memcg, memcg->id.id);
 	lru_gen_init_memcg(memcg);
+	trace_android_vh_mem_cgroup_alloc(memcg);
 	return memcg;
 fail:
 	mem_cgroup_id_remove(memcg);
@@ -5382,6 +5396,8 @@ static int mem_cgroup_css_online(struct cgroup_subsys_state *css)
 	if (unlikely(mem_cgroup_is_root(memcg)))
 		queue_delayed_work(system_unbound_wq, &stats_flush_dwork,
 				   2UL*HZ);
+	lru_gen_online_memcg(memcg);
+	trace_android_vh_mem_cgroup_css_online(css, memcg);
 	return 0;
 offline_kmem:
 	memcg_offline_kmem(memcg);
@@ -5395,6 +5411,7 @@ static void mem_cgroup_css_offline(struct cgroup_subsys_state *css)
 	struct mem_cgroup *memcg = mem_cgroup_from_css(css);
 	struct mem_cgroup_event *event, *tmp;
 
+	trace_android_vh_mem_cgroup_css_offline(css, memcg);
 	/*
 	 * Unregister events and notify userspace.
 	 * Notify userspace about cgroup removing only after rmdir of cgroup
@@ -5413,6 +5430,7 @@ static void mem_cgroup_css_offline(struct cgroup_subsys_state *css)
 	memcg_offline_kmem(memcg);
 	reparent_shrinker_deferred(memcg);
 	wb_memcg_offline(memcg);
+	lru_gen_offline_memcg(memcg);
 
 	drain_all_stock(memcg);
 
@@ -5424,6 +5442,7 @@ static void mem_cgroup_css_released(struct cgroup_subsys_state *css)
 	struct mem_cgroup *memcg = mem_cgroup_from_css(css);
 
 	invalidate_reclaim_iterators(memcg);
+	lru_gen_release_memcg(memcg);
 }
 
 static void mem_cgroup_css_free(struct cgroup_subsys_state *css)
diff --git a/mm/memory.c b/mm/memory.c
index 747b7ea..16063c4 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -77,6 +77,7 @@
 #include <linux/ptrace.h>
 #include <linux/vmalloc.h>
 #include <linux/sched/sysctl.h>
+#include <linux/set_memory.h>
 
 #include <trace/events/kmem.h>
 
@@ -166,6 +167,7 @@ void mm_trace_rss_stat(struct mm_struct *mm, int member, long count)
 {
 	trace_rss_stat(mm, member, count);
 }
+EXPORT_SYMBOL_GPL(mm_trace_rss_stat);
 
 #if defined(SPLIT_RSS_COUNTING)
 
@@ -395,9 +397,10 @@ void free_pgd_range(struct mmu_gather *tlb,
 
 void free_pgtables(struct mmu_gather *tlb, struct maple_tree *mt,
 		   struct vm_area_struct *vma, unsigned long floor,
-		   unsigned long ceiling)
+		   unsigned long ceiling, unsigned long start_t,
+		   bool mm_wr_locked)
 {
-	MA_STATE(mas, mt, vma->vm_end, vma->vm_end);
+	MA_STATE(mas, mt, start_t, start_t);
 
 	do {
 		unsigned long addr = vma->vm_start;
@@ -413,6 +416,8 @@ void free_pgtables(struct mmu_gather *tlb, struct maple_tree *mt,
 		 * Hide vma from rmap and truncate_pagecache before freeing
 		 * pgtables
 		 */
+		if (mm_wr_locked)
+			vma_start_write(vma);
 		unlink_anon_vmas(vma);
 		unlink_file_vma(vma);
 
@@ -427,6 +432,8 @@ void free_pgtables(struct mmu_gather *tlb, struct maple_tree *mt,
 			       && !is_vm_hugetlb_page(next)) {
 				vma = next;
 				next = mas_find(&mas, ceiling - 1);
+				if (mm_wr_locked)
+					vma_start_write(vma);
 				unlink_anon_vmas(vma);
 				unlink_file_vma(vma);
 			}
@@ -1435,8 +1442,7 @@ static unsigned long zap_pte_range(struct mmu_gather *tlb,
 					force_flush = 1;
 					set_page_dirty(page);
 				}
-				if (pte_young(ptent) &&
-				    likely(!(vma->vm_flags & VM_SEQ_READ)))
+				if (pte_young(ptent) && likely(vma_has_recency(vma)))
 					mark_page_accessed(page);
 			}
 			rss[mm_counter(page)]--;
@@ -1641,7 +1647,7 @@ void unmap_page_range(struct mmu_gather *tlb,
 static void unmap_single_vma(struct mmu_gather *tlb,
 		struct vm_area_struct *vma, unsigned long start_addr,
 		unsigned long end_addr,
-		struct zap_details *details)
+		struct zap_details *details, bool mm_wr_locked)
 {
 	unsigned long start = max(vma->vm_start, start_addr);
 	unsigned long end;
@@ -1656,7 +1662,7 @@ static void unmap_single_vma(struct mmu_gather *tlb,
 		uprobe_munmap(vma, start, end);
 
 	if (unlikely(vma->vm_flags & VM_PFNMAP))
-		untrack_pfn(vma, 0, 0);
+		untrack_pfn(vma, 0, 0, mm_wr_locked);
 
 	if (start != end) {
 		if (unlikely(is_vm_hugetlb_page(vma))) {
@@ -1703,7 +1709,8 @@ static void unmap_single_vma(struct mmu_gather *tlb,
  */
 void unmap_vmas(struct mmu_gather *tlb, struct maple_tree *mt,
 		struct vm_area_struct *vma, unsigned long start_addr,
-		unsigned long end_addr)
+		unsigned long end_addr, unsigned long start_t,
+		unsigned long end_t, bool mm_wr_locked)
 {
 	struct mmu_notifier_range range;
 	struct zap_details details = {
@@ -1711,14 +1718,15 @@ void unmap_vmas(struct mmu_gather *tlb, struct maple_tree *mt,
 		/* Careful - we need to zap private pages too! */
 		.even_cows = true,
 	};
-	MA_STATE(mas, mt, vma->vm_end, vma->vm_end);
+	MA_STATE(mas, mt, start_t, start_t);
 
 	mmu_notifier_range_init(&range, MMU_NOTIFY_UNMAP, 0, vma, vma->vm_mm,
 				start_addr, end_addr);
 	mmu_notifier_invalidate_range_start(&range);
 	do {
-		unmap_single_vma(tlb, vma, start_addr, end_addr, &details);
-	} while ((vma = mas_find(&mas, end_addr - 1)) != NULL);
+		unmap_single_vma(tlb, vma, start_addr, end_addr, &details,
+				 mm_wr_locked);
+	} while ((vma = mas_find(&mas, end_t - 1)) != NULL);
 	mmu_notifier_invalidate_range_end(&range);
 }
 
@@ -1746,7 +1754,7 @@ void zap_page_range(struct vm_area_struct *vma, unsigned long start,
 	update_hiwater_rss(vma->vm_mm);
 	mmu_notifier_invalidate_range_start(&range);
 	do {
-		unmap_single_vma(&tlb, vma, start, range.end, NULL);
+		unmap_single_vma(&tlb, vma, start, range.end, NULL, false);
 	} while ((vma = mas_find(&mas, end - 1)) != NULL);
 	mmu_notifier_invalidate_range_end(&range);
 	tlb_finish_mmu(&tlb);
@@ -1781,7 +1789,7 @@ void zap_page_range_single(struct vm_area_struct *vma, unsigned long address,
 	 * unmap 'address-end' not 'range.start-range.end' as range
 	 * could have been expanded for hugetlb pmd sharing.
 	 */
-	unmap_single_vma(&tlb, vma, address, end, details);
+	unmap_single_vma(&tlb, vma, address, end, details, false);
 	mmu_notifier_invalidate_range_end(&range);
 	tlb_finish_mmu(&tlb);
 }
@@ -1986,7 +1994,7 @@ int vm_insert_pages(struct vm_area_struct *vma, unsigned long addr,
 	if (!(vma->vm_flags & VM_MIXEDMAP)) {
 		BUG_ON(mmap_read_trylock(vma->vm_mm));
 		BUG_ON(vma->vm_flags & VM_PFNMAP);
-		vma->vm_flags |= VM_MIXEDMAP;
+		vm_flags_set(vma, VM_MIXEDMAP);
 	}
 	/* Defer page refcount checking till we're about to map that page. */
 	return insert_pages(vma, addr, pages, num, vma->vm_page_prot);
@@ -2044,7 +2052,7 @@ int vm_insert_page(struct vm_area_struct *vma, unsigned long addr,
 	if (!(vma->vm_flags & VM_MIXEDMAP)) {
 		BUG_ON(mmap_read_trylock(vma->vm_mm));
 		BUG_ON(vma->vm_flags & VM_PFNMAP);
-		vma->vm_flags |= VM_MIXEDMAP;
+		vm_flags_set(vma, VM_MIXEDMAP);
 	}
 	return insert_page(vma, addr, page, vma->vm_page_prot);
 }
@@ -2510,7 +2518,7 @@ int remap_pfn_range_notrack(struct vm_area_struct *vma, unsigned long addr,
 		vma->vm_pgoff = pfn;
 	}
 
-	vma->vm_flags |= VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP;
+	vm_flags_set(vma, VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP);
 
 	BUG_ON(addr >= end);
 	pfn -= addr >> PAGE_SHIFT;
@@ -2550,7 +2558,7 @@ int remap_pfn_range(struct vm_area_struct *vma, unsigned long addr,
 
 	err = remap_pfn_range_notrack(vma, addr, pfn, size, prot);
 	if (err)
-		untrack_pfn(vma, pfn, PAGE_ALIGN(size));
+		untrack_pfn(vma, pfn, PAGE_ALIGN(size), true);
 	return err;
 }
 EXPORT_SYMBOL(remap_pfn_range);
@@ -3749,6 +3757,11 @@ vm_fault_t do_swap_page(struct vm_fault *vmf)
 	if (!pte_unmap_same(vmf))
 		goto out;
 
+	if (vmf->flags & FAULT_FLAG_VMA_LOCK) {
+		ret = VM_FAULT_RETRY;
+		goto out;
+	}
+
 	entry = pte_to_swp_entry(vmf->orig_pte);
 	if (unlikely(non_swap_entry(entry))) {
 		if (is_migration_entry(entry)) {
@@ -3801,8 +3814,8 @@ vm_fault_t do_swap_page(struct vm_fault *vmf)
 		if (data_race(si->flags & SWP_SYNCHRONOUS_IO) &&
 		    __swap_count(entry) == 1) {
 			/* skip swapcache */
-			folio = vma_alloc_folio(GFP_HIGHUSER_MOVABLE, 0,
-						vma, vmf->address, false);
+			folio = vma_alloc_folio(GFP_HIGHUSER_MOVABLE|__GFP_CMA,
+						0, vma, vmf->address, false);
 			page = &folio->page;
 			if (folio) {
 				__folio_set_locked(folio);
@@ -3828,7 +3841,8 @@ vm_fault_t do_swap_page(struct vm_fault *vmf)
 				folio->private = NULL;
 			}
 		} else {
-			page = swapin_readahead(entry, GFP_HIGHUSER_MOVABLE,
+			page = swapin_readahead(entry,
+						GFP_HIGHUSER_MOVABLE|__GFP_CMA,
 						vmf);
 			if (page)
 				folio = page_folio(page);
@@ -3969,6 +3983,13 @@ vm_fault_t do_swap_page(struct vm_fault *vmf)
 	}
 
 	/*
+	 * Some architectures may have to restore extra metadata to the page
+	 * when reading from swap. This metadata may be indexed by swap entry
+	 * so this must be called before swap_free().
+	 */
+	arch_swap_restore(entry, folio);
+
+	/*
 	 * Remove the swap entry and conditionally try to free up the swapcache.
 	 * We're already holding a reference on the page but haven't mapped it
 	 * yet.
@@ -5121,24 +5142,31 @@ static vm_fault_t __handle_mm_fault(struct vm_area_struct *vma,
  * updates.  However, note that the handling of PERF_COUNT_SW_PAGE_FAULTS should
  * still be in per-arch page fault handlers at the entry of page fault.
  */
-static inline void mm_account_fault(struct pt_regs *regs,
+static inline void mm_account_fault(struct mm_struct *mm, struct pt_regs *regs,
 				    unsigned long address, unsigned int flags,
 				    vm_fault_t ret)
 {
 	bool major;
 
+	/* Incomplete faults will be accounted upon completion. */
+	if (ret & VM_FAULT_RETRY)
+		return;
+
 	/*
-	 * We don't do accounting for some specific faults:
-	 *
-	 * - Unsuccessful faults (e.g. when the address wasn't valid).  That
-	 *   includes arch_vma_access_permitted() failing before reaching here.
-	 *   So this is not a "this many hardware page faults" counter.  We
-	 *   should use the hw profiling for that.
-	 *
-	 * - Incomplete faults (VM_FAULT_RETRY).  They will only be counted
-	 *   once they're completed.
+	 * To preserve the behavior of older kernels, PGFAULT counters record
+	 * both successful and failed faults, as opposed to perf counters,
+	 * which ignore failed cases.
 	 */
-	if (ret & (VM_FAULT_ERROR | VM_FAULT_RETRY))
+	count_vm_event(PGFAULT);
+	count_memcg_event_mm(mm, PGFAULT);
+
+	/*
+	 * Do not account for unsuccessful faults (e.g. when the address wasn't
+	 * valid).  That includes arch_vma_access_permitted() failing before
+	 * reaching here. So this is not a "this many hardware page faults"
+	 * counter.  We should use the hw profiling for that.
+	 */
+	if (ret & VM_FAULT_ERROR)
 		return;
 
 	/*
@@ -5170,8 +5198,8 @@ static inline void mm_account_fault(struct pt_regs *regs,
 #ifdef CONFIG_LRU_GEN
 static void lru_gen_enter_fault(struct vm_area_struct *vma)
 {
-	/* the LRU algorithm doesn't apply to sequential or random reads */
-	current->in_lru_fault = !(vma->vm_flags & (VM_SEQ_READ | VM_RAND_READ));
+	/* the LRU algorithm only applies to accesses with recency */
+	current->in_lru_fault = vma_has_recency(vma);
 }
 
 static void lru_gen_exit_fault(void)
@@ -5197,20 +5225,21 @@ static void lru_gen_exit_fault(void)
 vm_fault_t handle_mm_fault(struct vm_area_struct *vma, unsigned long address,
 			   unsigned int flags, struct pt_regs *regs)
 {
+	/* If the fault handler drops the mmap_lock, vma may be freed */
+	struct mm_struct *mm = vma->vm_mm;
 	vm_fault_t ret;
 
 	__set_current_state(TASK_RUNNING);
 
-	count_vm_event(PGFAULT);
-	count_memcg_event_mm(vma->vm_mm, PGFAULT);
-
 	/* do counter updates before entering really critical section. */
 	check_sync_rss_stat(current);
 
 	if (!arch_vma_access_permitted(vma, flags & FAULT_FLAG_WRITE,
 					    flags & FAULT_FLAG_INSTRUCTION,
-					    flags & FAULT_FLAG_REMOTE))
-		return VM_FAULT_SIGSEGV;
+					    flags & FAULT_FLAG_REMOTE)) {
+		ret = VM_FAULT_SIGSEGV;
+		goto out;
+	}
 
 	/*
 	 * Enable the memcg OOM handling for faults triggered in user
@@ -5239,13 +5268,74 @@ vm_fault_t handle_mm_fault(struct vm_area_struct *vma, unsigned long address,
 		if (task_in_memcg_oom(current) && !(ret & VM_FAULT_OOM))
 			mem_cgroup_oom_synchronize(false);
 	}
-
-	mm_account_fault(regs, address, flags, ret);
+out:
+	mm_account_fault(mm, regs, address, flags, ret);
 
 	return ret;
 }
 EXPORT_SYMBOL_GPL(handle_mm_fault);
 
+#ifdef CONFIG_PER_VMA_LOCK
+/*
+ * Lookup and lock a VMA under RCU protection. Returned VMA is guaranteed to be
+ * stable and not isolated. If the VMA is not found or is being modified the
+ * function returns NULL.
+ */
+struct vm_area_struct *lock_vma_under_rcu(struct mm_struct *mm,
+					  unsigned long address)
+{
+	MA_STATE(mas, &mm->mm_mt, address, address);
+	struct vm_area_struct *vma;
+
+	rcu_read_lock();
+retry:
+	vma = mas_walk(&mas);
+	if (!vma)
+		goto inval;
+
+	/* Only anonymous vmas are supported for now */
+	if (!vma_is_anonymous(vma))
+		goto inval;
+
+	/* find_mergeable_anon_vma uses adjacent vmas which are not locked */
+	if (!vma->anon_vma)
+		goto inval;
+
+	if (!vma_start_read(vma))
+		goto inval;
+
+	/*
+	 * Due to the possibility of userfault handler dropping mmap_lock, avoid
+	 * it for now and fall back to page fault handling under mmap_lock.
+	 */
+	if (userfaultfd_armed(vma)) {
+		vma_end_read(vma);
+		goto inval;
+	}
+
+	/* Check since vm_start/vm_end might change before we lock the VMA */
+	if (unlikely(address < vma->vm_start || address >= vma->vm_end)) {
+		vma_end_read(vma);
+		goto inval;
+	}
+
+	/* Check if the VMA got isolated after we found it */
+	if (vma->detached) {
+		vma_end_read(vma);
+		count_vm_vma_lock_event(VMA_LOCK_MISS);
+		/* The area was replaced with another one */
+		goto retry;
+	}
+
+	rcu_read_unlock();
+	return vma;
+inval:
+	rcu_read_unlock();
+	count_vm_vma_lock_event(VMA_LOCK_ABORT);
+	return NULL;
+}
+#endif /* CONFIG_PER_VMA_LOCK */
+
 #ifndef __PAGETABLE_P4D_FOLDED
 /*
  * Allocate p4d page table.
@@ -5860,3 +5950,13 @@ void ptlock_free(struct page *page)
 	kmem_cache_free(page_ptl_cachep, page->ptl);
 }
 #endif
+
+int set_direct_map_range_uncached(unsigned long addr, unsigned long numpages)
+{
+#ifdef CONFIG_ARM64
+	return arch_set_direct_map_range_uncached(addr, numpages);
+#else
+	return -EOPNOTSUPP;
+#endif
+}
+EXPORT_SYMBOL_GPL(set_direct_map_range_uncached);
diff --git a/mm/memremap.c b/mm/memremap.c
index 08cbf54f..2f88f43 100644
--- a/mm/memremap.c
+++ b/mm/memremap.c
@@ -129,7 +129,7 @@ static void pageunmap_range(struct dev_pagemap *pgmap, int range_id)
 	}
 	mem_hotplug_done();
 
-	untrack_pfn(NULL, PHYS_PFN(range->start), range_len(range));
+	untrack_pfn(NULL, PHYS_PFN(range->start), range_len(range), true);
 	pgmap_array_delete(range);
 }
 
@@ -276,7 +276,7 @@ static int pagemap_range(struct dev_pagemap *pgmap, struct mhp_params *params,
 	if (!is_private)
 		kasan_remove_zero_shadow(__va(range->start), range_len(range));
 err_kasan:
-	untrack_pfn(NULL, PHYS_PFN(range->start), range_len(range));
+	untrack_pfn(NULL, PHYS_PFN(range->start), range_len(range), true);
 err_pfn_remap:
 	pgmap_array_delete(range);
 	return error;
diff --git a/mm/migrate.c b/mm/migrate.c
index 8d5c0dc..5c61c3d 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -167,6 +167,7 @@ void putback_movable_pages(struct list_head *l)
 		}
 	}
 }
+EXPORT_SYMBOL_GPL(putback_movable_pages);
 
 /*
  * Restore a potential migration pte to a working pte entry
@@ -1604,6 +1605,7 @@ int migrate_pages(struct list_head *from, new_page_t get_new_page,
 
 	return rc;
 }
+EXPORT_SYMBOL_GPL(migrate_pages);
 
 struct page *alloc_migration_target(struct page *page, unsigned long private)
 {
diff --git a/mm/mlock.c b/mm/mlock.c
index 7032f6d..9738d49 100644
--- a/mm/mlock.c
+++ b/mm/mlock.c
@@ -380,7 +380,7 @@ static void mlock_vma_pages_range(struct vm_area_struct *vma,
 	 */
 	if (newflags & VM_LOCKED)
 		newflags |= VM_IO;
-	WRITE_ONCE(vma->vm_flags, newflags);
+	vm_flags_reset_once(vma, newflags);
 
 	lru_add_drain();
 	walk_page_range(vma->vm_mm, start, end, &mlock_walk_ops, NULL);
@@ -388,7 +388,7 @@ static void mlock_vma_pages_range(struct vm_area_struct *vma,
 
 	if (newflags & VM_IO) {
 		newflags &= ~VM_IO;
-		WRITE_ONCE(vma->vm_flags, newflags);
+		vm_flags_reset_once(vma, newflags);
 	}
 }
 
@@ -456,7 +456,7 @@ static int mlock_fixup(struct vm_area_struct *vma, struct vm_area_struct **prev,
 
 	if ((newflags & VM_LOCKED) && (oldflags & VM_LOCKED)) {
 		/* No work to do, and mlocking twice would be wrong */
-		vma->vm_flags = newflags;
+		vm_flags_reset(vma, newflags);
 	} else {
 		mlock_vma_pages_range(vma, start, end, newflags);
 	}
@@ -490,7 +490,7 @@ static int apply_vma_lock_flags(unsigned long start, size_t len,
 		prev = mas_prev(&mas, 0);
 
 	for (nstart = start ; ; ) {
-		vm_flags_t newflags = vma->vm_flags & VM_LOCKED_CLEAR_MASK;
+		vm_flags_t newflags = vma->vm_flags & ~VM_LOCKED_MASK;
 
 		newflags |= flags;
 
@@ -662,7 +662,7 @@ static int apply_mlockall_flags(int flags)
 	struct vm_area_struct *vma, *prev = NULL;
 	vm_flags_t to_add = 0;
 
-	current->mm->def_flags &= VM_LOCKED_CLEAR_MASK;
+	current->mm->def_flags &= ~VM_LOCKED_MASK;
 	if (flags & MCL_FUTURE) {
 		current->mm->def_flags |= VM_LOCKED;
 
@@ -682,7 +682,7 @@ static int apply_mlockall_flags(int flags)
 	mas_for_each(&mas, vma, ULONG_MAX) {
 		vm_flags_t newflags;
 
-		newflags = vma->vm_flags & VM_LOCKED_CLEAR_MASK;
+		newflags = vma->vm_flags & ~VM_LOCKED_MASK;
 		newflags |= to_add;
 
 		/* Ignore errors */
diff --git a/mm/mmap.c b/mm/mmap.c
index 14ca259..36f129f 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -54,6 +54,8 @@
 
 #define CREATE_TRACE_POINTS
 #include <trace/events/mmap.h>
+#undef CREATE_TRACE_POINTS
+#include <trace/hooks/mm.h>
 
 #include "internal.h"
 
@@ -78,7 +80,8 @@ core_param(ignore_rlimit_data, ignore_rlimit_data, bool, 0644);
 static void unmap_region(struct mm_struct *mm, struct maple_tree *mt,
 		struct vm_area_struct *vma, struct vm_area_struct *prev,
 		struct vm_area_struct *next, unsigned long start,
-		unsigned long end);
+		unsigned long end, unsigned long start_t, unsigned long end_t,
+		bool mm_wr_locked);
 
 static pgprot_t vm_pgprot_modify(pgprot_t oldprot, unsigned long vm_flags)
 {
@@ -133,7 +136,7 @@ void unlink_file_vma(struct vm_area_struct *vma)
 /*
  * Close a vm structure and free it.
  */
-static void remove_vma(struct vm_area_struct *vma)
+static void remove_vma(struct vm_area_struct *vma, bool unreachable)
 {
 	might_sleep();
 	if (vma->vm_ops && vma->vm_ops->close)
@@ -141,7 +144,10 @@ static void remove_vma(struct vm_area_struct *vma)
 	if (vma->vm_file)
 		fput(vma->vm_file);
 	mpol_put(vma_policy(vma));
-	vm_area_free(vma);
+	if (unreachable)
+		__vm_area_free(vma);
+	else
+		vm_area_free(vma);
 }
 
 /*
@@ -254,8 +260,11 @@ SYSCALL_DEFINE1(brk, unsigned long, brk)
 	 */
 	mas_set(&mas, oldbrk);
 	next = mas_find(&mas, newbrk - 1 + PAGE_SIZE + stack_guard_gap);
-	if (next && newbrk + PAGE_SIZE > vm_start_gap(next))
-		goto out;
+	if (next) {
+		vma_start_write(next);
+		if (newbrk + PAGE_SIZE > vm_start_gap(next))
+			goto out;
+	}
 
 	brkvma = mas_prev(&mas, mm->start_brk);
 	/* Ok, looks good - let it rip. */
@@ -469,7 +478,7 @@ static inline void vma_mas_szero(struct ma_state *mas, unsigned long start,
 
 static int vma_link(struct mm_struct *mm, struct vm_area_struct *vma)
 {
-	MA_STATE(mas, &mm->mm_mt, 0, 0);
+	MA_STATE(mas, &mm->mm_mt, vma->vm_start, vma->vm_end - 1);
 	struct address_space *mapping = NULL;
 
 	if (mas_preallocate(&mas, vma, GFP_KERNEL))
@@ -522,6 +531,8 @@ inline int vma_expand(struct ma_state *mas, struct vm_area_struct *vma,
 
 	if (next && (vma != next) && (end == next->vm_end)) {
 		remove_next = true;
+		/* Lock the VMA  before removing it */
+		vma_start_write(next);
 		if (next->anon_vma && !vma->anon_vma) {
 			int error;
 
@@ -538,9 +549,11 @@ inline int vma_expand(struct ma_state *mas, struct vm_area_struct *vma,
 	/* Only handles expanding */
 	VM_BUG_ON(vma->vm_start < start || vma->vm_end > end);
 
+	mas_set_range(mas, start, end - 1);
 	if (mas_preallocate(mas, vma, GFP_KERNEL))
 		goto nomem;
 
+	vma_start_write(vma);
 	vma_adjust_trans_huge(vma, start, end, 0);
 
 	if (file) {
@@ -565,6 +578,8 @@ inline int vma_expand(struct ma_state *mas, struct vm_area_struct *vma,
 	vma->vm_pgoff = pgoff;
 	/* Note: mas must be pointing to the expanding VMA */
 	vma_mas_store(vma, mas);
+	if (remove_next)
+		vma_mark_detached(next, true);
 
 	if (file) {
 		vma_interval_tree_insert(vma, root);
@@ -611,6 +626,12 @@ inline int vma_expand(struct ma_state *mas, struct vm_area_struct *vma,
  * The following helper function should be used when such adjustments
  * are necessary.  The "insert" vma (if any) is to be inserted
  * before we drop the necessary locks.
+ * 'expand' vma is always locked before it's passed to __vma_adjust()
+ * from vma_merge() because vma should not change from the moment
+ * can_vma_merge_{before|after} decision is made.
+ * 'insert' vma is used only by __split_vma() and it's always a brand
+ * new vma which is not yet added into mm's vma tree, therefore no need
+ * to lock it.
  */
 int __vma_adjust(struct vm_area_struct *vma, unsigned long start,
 	unsigned long end, pgoff_t pgoff, struct vm_area_struct *insert,
@@ -627,9 +648,13 @@ int __vma_adjust(struct vm_area_struct *vma, unsigned long start,
 	bool vma_changed = false;
 	long adjust_next = 0;
 	int remove_next = 0;
-	MA_STATE(mas, &mm->mm_mt, 0, 0);
+	MA_STATE(mas, &mm->mm_mt, start, end - 1);
 	struct vm_area_struct *exporter = NULL, *importer = NULL;
 
+	vma_start_write(vma);
+	if (next)
+		vma_start_write(next);
+
 	if (next && !insert) {
 		if (end >= next->vm_end) {
 			/*
@@ -659,8 +684,11 @@ int __vma_adjust(struct vm_area_struct *vma, unsigned long start,
 				 * remove_next == 1 is case 1 or 7.
 				 */
 				remove_next = 1 + (end > next->vm_end);
-				if (remove_next == 2)
+				if (remove_next == 2) {
 					next_next = find_vma(mm, next->vm_end);
+					if (next_next)
+						vma_start_write(next_next);
+				}
 
 				VM_WARN_ON(remove_next == 2 &&
 					   end != next_next->vm_end);
@@ -712,6 +740,13 @@ int __vma_adjust(struct vm_area_struct *vma, unsigned long start,
 		}
 	}
 
+	if (adjust_next < 0)
+		mas_set_range(&mas, next->vm_start + adjust_next,
+			      next->vm_end - 1);
+	else if (insert)
+		mas_set_range(&mas, insert->vm_start, insert->vm_end - 1);
+
+
 	if (mas_preallocate(&mas, vma, GFP_KERNEL))
 		return -ENOMEM;
 
@@ -756,24 +791,23 @@ int __vma_adjust(struct vm_area_struct *vma, unsigned long start,
 	}
 
 	if (start != vma->vm_start) {
-		if ((vma->vm_start < start) &&
-		    (!insert || (insert->vm_end != start))) {
+		if ((vma->vm_start < start) && !insert) {
 			vma_mas_szero(&mas, vma->vm_start, start);
 			VM_WARN_ON(insert && insert->vm_start > vma->vm_start);
-		} else {
+		} else if (!insert) {
 			vma_changed = true;
 		}
 		vma->vm_start = start;
 	}
 	if (end != vma->vm_end) {
 		if (vma->vm_end > end) {
-			if (!insert || (insert->vm_start != end)) {
+			if (adjust_next >= 0 && !insert) {
 				vma_mas_szero(&mas, end, vma->vm_end);
 				mas_reset(&mas);
 				VM_WARN_ON(insert &&
 					   insert->vm_end < vma->vm_end);
 			}
-		} else {
+		} else if (!insert) {
 			vma_changed = true;
 		}
 		vma->vm_end = end;
@@ -828,6 +862,7 @@ int __vma_adjust(struct vm_area_struct *vma, unsigned long start,
 
 	if (remove_next) {
 again:
+		vma_mark_detached(next, true);
 		if (file) {
 			uprobe_munmap(next, next->vm_start, next->vm_end);
 			fput(file);
@@ -1017,10 +1052,17 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm,
 	if (vm_flags & VM_SPECIAL)
 		return NULL;
 
+	if (prev)
+		vma_start_write(prev);
 	next = find_vma(mm, prev ? prev->vm_end : 0);
+	if (next)
+		vma_start_write(next);
 	mid = next;
-	if (next && next->vm_end == end)		/* cases 6, 7, 8 */
+	if (next && next->vm_end == end) {		/* cases 6, 7, 8 */
 		next = find_vma(mm, next->vm_end);
+		if (next)
+			vma_start_write(next);
+	}
 
 	/* verify some invariant that must be enforced by the caller */
 	VM_WARN_ON(prev && addr <= prev->vm_start);
@@ -1671,6 +1713,7 @@ unsigned long vm_unmapped_area(struct vm_unmapped_area_info *info)
 	trace_vm_unmapped_area(addr, info);
 	return addr;
 }
+EXPORT_SYMBOL_GPL(vm_unmapped_area);
 
 /* Get an address range which is currently unmapped.
  * For shmat() with addr=0.
@@ -1951,7 +1994,7 @@ int expand_upwards(struct vm_area_struct *vma, unsigned long address)
 	struct vm_area_struct *next;
 	unsigned long gap_addr;
 	int error = 0;
-	MA_STATE(mas, &mm->mm_mt, 0, 0);
+	MA_STATE(mas, &mm->mm_mt, vma->vm_start, address - 1);
 
 	if (!(vma->vm_flags & VM_GROWSUP))
 		return -EFAULT;
@@ -1976,6 +2019,7 @@ int expand_upwards(struct vm_area_struct *vma, unsigned long address)
 		/* Check that both stack segments have the same anon_vma? */
 	}
 
+	mas->last = address - 1;
 	if (mas_preallocate(&mas, vma, GFP_KERNEL))
 		return -ENOMEM;
 
@@ -2057,6 +2101,7 @@ int expand_downwards(struct vm_area_struct *vma, unsigned long address)
 			return -ENOMEM;
 	}
 
+	mas_set_range(&mas, address, vma->vm_end - 1);
 	if (mas_preallocate(&mas, vma, GFP_KERNEL))
 		return -ENOMEM;
 
@@ -2202,7 +2247,7 @@ static inline void remove_mt(struct mm_struct *mm, struct ma_state *mas)
 		if (vma->vm_flags & VM_ACCOUNT)
 			nr_accounted += nrpages;
 		vm_stat_account(mm, vma->vm_flags, -nrpages);
-		remove_vma(vma);
+		remove_vma(vma, false);
 	}
 	vm_unacct_memory(nr_accounted);
 	validate_mm(mm);
@@ -2215,17 +2260,19 @@ static inline void remove_mt(struct mm_struct *mm, struct ma_state *mas)
  */
 static void unmap_region(struct mm_struct *mm, struct maple_tree *mt,
 		struct vm_area_struct *vma, struct vm_area_struct *prev,
-		struct vm_area_struct *next,
-		unsigned long start, unsigned long end)
+		struct vm_area_struct *next, unsigned long start,
+		unsigned long end, unsigned long start_t, unsigned long end_t,
+		bool mm_wr_locked)
 {
 	struct mmu_gather tlb;
 
 	lru_add_drain();
 	tlb_gather_mmu(&tlb, mm);
 	update_hiwater_rss(mm);
-	unmap_vmas(&tlb, mt, vma, start, end);
+	unmap_vmas(&tlb, mt, vma, start, end, start_t, end_t, mm_wr_locked);
 	free_pgtables(&tlb, mt, vma, prev ? prev->vm_end : FIRST_USER_ADDRESS,
-				 next ? next->vm_start : USER_PGTABLES_CEILING);
+		      next ? next->vm_start : USER_PGTABLES_CEILING, start_t,
+		      mm_wr_locked);
 	tlb_finish_mmu(&tlb);
 }
 
@@ -2240,6 +2287,7 @@ int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
 	int err;
 	validate_mm_mt(mm);
 
+	vma_start_write(vma);
 	if (vma->vm_ops && vma->vm_ops->may_split) {
 		err = vma->vm_ops->may_split(vma, addr);
 		if (err)
@@ -2311,13 +2359,15 @@ int split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
 	return __split_vma(mm, vma, addr, new_below);
 }
 
-static inline int munmap_sidetree(struct vm_area_struct *vma,
+static inline int munmap_sidetree(struct vm_area_struct *vma, int count,
 				   struct ma_state *mas_detach)
 {
-	mas_set_range(mas_detach, vma->vm_start, vma->vm_end - 1);
+	vma_start_write(vma);
+	mas_set(mas_detach, count);
 	if (mas_store_gfp(mas_detach, vma, GFP_KERNEL))
 		return -ENOMEM;
 
+	vma_mark_detached(vma, true);
 	if (vma->vm_flags & VM_LOCKED)
 		vma->vm_mm->locked_vm -= vma_pages(vma);
 
@@ -2349,9 +2399,6 @@ do_mas_align_munmap(struct ma_state *mas, struct vm_area_struct *vma,
 	mt_init_flags(&mt_detach, mas->tree->ma_flags & MT_FLAGS_LOCK_MASK);
 	mt_set_external_lock(&mt_detach, &mm->mmap_lock);
 
-	if (mas_preallocate(mas, vma, GFP_KERNEL))
-		return -ENOMEM;
-
 	mas->last = end - 1;
 	/*
 	 * If we need to split any vma, do it now to save pain later.
@@ -2403,7 +2450,7 @@ do_mas_align_munmap(struct ma_state *mas, struct vm_area_struct *vma,
 
 			mas_set(mas, end);
 			split = mas_prev(mas, 0);
-			error = munmap_sidetree(split, &mas_detach);
+			error = munmap_sidetree(split, count, &mas_detach);
 			if (error)
 				goto munmap_sidetree_failed;
 
@@ -2412,58 +2459,66 @@ do_mas_align_munmap(struct ma_state *mas, struct vm_area_struct *vma,
 				vma = split;
 			break;
 		}
-		error = munmap_sidetree(next, &mas_detach);
+		error = munmap_sidetree(next, count, &mas_detach);
 		if (error)
 			goto munmap_sidetree_failed;
 
 		count++;
+		if (unlikely(uf)) {
+			/*
+			 * If userfaultfd_unmap_prep returns an error the vmas
+			 * will remain split, but userland will get a
+			 * highly unexpected error anyway. This is no
+			 * different than the case where the first of the two
+			 * __split_vma fails, but we don't undo the first
+			 * split, despite we could. This is unlikely enough
+			 * failure that it's not worth optimizing it for.
+			 */
+			error = userfaultfd_unmap_prep(next, start, end, uf);
+
+			if (error)
+				goto userfaultfd_error;
+		}
 #ifdef CONFIG_DEBUG_VM_MAPLE_TREE
 		BUG_ON(next->vm_start < start);
 		BUG_ON(next->vm_start > end);
 #endif
 	}
 
+	if (mas->last >= end)
+		next = mas_walk(mas);
 	if (!next)
 		next = mas_next(mas, ULONG_MAX);
 
-	if (unlikely(uf)) {
-		/*
-		 * If userfaultfd_unmap_prep returns an error the vmas
-		 * will remain split, but userland will get a
-		 * highly unexpected error anyway. This is no
-		 * different than the case where the first of the two
-		 * __split_vma fails, but we don't undo the first
-		 * split, despite we could. This is unlikely enough
-		 * failure that it's not worth optimizing it for.
-		 */
-		error = userfaultfd_unmap_prep(mm, start, end, uf);
-
-		if (error)
-			goto userfaultfd_error;
-	}
-
-	/* Point of no return */
-	mas_set_range(mas, start, end - 1);
 #if defined(CONFIG_DEBUG_VM_MAPLE_TREE)
 	/* Make sure no VMAs are about to be lost. */
 	{
-		MA_STATE(test, &mt_detach, start, end - 1);
+		MA_STATE(test, &mt_detach, 0, 0);
 		struct vm_area_struct *vma_mas, *vma_test;
 		int test_count = 0;
+		unsigned long s, e;
 
+		mas_set_range(mas, start, end - 1);
 		rcu_read_lock();
-		vma_test = mas_find(&test, end - 1);
+		vma_test = mas_find(&test, count - 1);
 		mas_for_each(mas, vma_mas, end - 1) {
+			if (!test_count)
+				s = vma_mas->vm_start;
 			BUG_ON(vma_mas != vma_test);
 			test_count++;
-			vma_test = mas_next(&test, end - 1);
+			if (test_count == count)
+				e = vma_mas->vm_end;
+			vma_test = mas_next(&test, count - 1);
 		}
 		rcu_read_unlock();
 		BUG_ON(count != test_count);
-		mas_set_range(mas, start, end - 1);
 	}
 #endif
-	mas_store_prealloc(mas, NULL);
+	/* Point of no return */
+	mas_set_range(mas, start, end - 1);
+	if (mas_store_gfp(mas, NULL, GFP_KERNEL))
+		return -ENOMEM;
+
 	mm->map_count -= count;
 	/*
 	 * Do not downgrade mmap_lock if we are next to VM_GROWSDOWN or
@@ -2479,9 +2534,14 @@ do_mas_align_munmap(struct ma_state *mas, struct vm_area_struct *vma,
 			mmap_write_downgrade(mm);
 	}
 
-	unmap_region(mm, &mt_detach, vma, prev, next, start, end);
+	/*
+	 * We can free page tables without write-locking mmap_lock because VMAs
+	 * were isolated before we downgraded mmap_lock.
+	 */
+	unmap_region(mm, &mt_detach, vma, prev, next, start, end, 1, count,
+		     !downgrade);
 	/* Statistics and freeing VMAs */
-	mas_set(&mas_detach, start);
+	mas_set(&mas_detach, 0);
 	remove_mt(mm, &mas_detach);
 	__mt_destroy(&mt_detach);
 
@@ -2495,7 +2555,6 @@ do_mas_align_munmap(struct ma_state *mas, struct vm_area_struct *vma,
 	__mt_destroy(&mt_detach);
 start_split_failed:
 map_count_exceeded:
-	mas_destroy(mas);
 	return error;
 }
 
@@ -2605,6 +2664,8 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
 
 	/* Attempt to expand an old mapping */
 	/* Check next */
+	if (next)
+		vma_start_write(next);
 	if (next && next->vm_start == end && !vma_policy(next) &&
 	    can_vma_merge_before(next, vm_flags, NULL, file, pgoff+pglen,
 				 NULL_VM_UFFD_CTX, NULL)) {
@@ -2614,6 +2675,8 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
 	}
 
 	/* Check prev */
+	if (prev)
+		vma_start_write(prev);
 	if (prev && prev->vm_end == addr && !vma_policy(prev) &&
 	    (vma ? can_vma_merge_after(prev, vm_flags, vma->anon_vma, file,
 				       pgoff, vma->vm_userfaultfd_ctx, NULL) :
@@ -2632,9 +2695,13 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
 		goto expanded;
 	}
 
+cannot_expand:
+	if (prev)
+		mas_next_range(&mas, ULONG_MAX);
+	BUG_ON(mas.last < addr);
+	BUG_ON(mas.index > end - 1);
 	mas.index = addr;
 	mas.last = end - 1;
-cannot_expand:
 	/*
 	 * Determine the object being mapped and call the appropriate
 	 * specific mapper. the address has already been validated, but
@@ -2648,7 +2715,7 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
 
 	vma->vm_start = addr;
 	vma->vm_end = end;
-	vma->vm_flags = vm_flags;
+	vm_flags_init(vma, vm_flags);
 	vma->vm_page_prot = vm_get_page_prot(vm_flags);
 	vma->vm_pgoff = pgoff;
 
@@ -2731,7 +2798,7 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
 	if (vma->vm_file)
 		i_mmap_lock_write(vma->vm_file->f_mapping);
 
-	vma_mas_store(vma, &mas);
+	mas_store_prealloc(&mas, vma);
 	mm->map_count++;
 	if (vma->vm_file) {
 		if (vma->vm_flags & VM_SHARED)
@@ -2762,7 +2829,7 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
 		if ((vm_flags & VM_SPECIAL) || vma_is_dax(vma) ||
 					is_vm_hugetlb_page(vma) ||
 					vma == get_gate_vma(current->mm))
-			vma->vm_flags &= VM_LOCKED_CLEAR_MASK;
+			vm_flags_clear(vma, VM_LOCKED_MASK);
 		else
 			mm->locked_vm += (len >> PAGE_SHIFT);
 	}
@@ -2777,10 +2844,12 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
 	 * then new mapped in-place (which must be aimed as
 	 * a completely new data area).
 	 */
-	vma->vm_flags |= VM_SOFTDIRTY;
+	vm_flags_set(vma, VM_SOFTDIRTY);
 
 	vma_set_page_prot(vma);
 
+	trace_android_vh_mmap_region(vma, addr);
+
 	validate_mm(mm);
 	return addr;
 
@@ -2792,7 +2861,8 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
 	vma->vm_file = NULL;
 
 	/* Undo any partial mapping done by a device driver. */
-	unmap_region(mm, mas.tree, vma, prev, next, vma->vm_start, vma->vm_end);
+	unmap_region(mm, mas.tree, vma, prev, next, vma->vm_start, vma->vm_end,
+		     vma->vm_end, vma->vm_end, true);
 	if (file && (vm_flags & VM_SHARED))
 		mapping_unmap_writable(file->f_mapping);
 free_vma:
@@ -2809,7 +2879,7 @@ static int __vm_munmap(unsigned long start, size_t len, bool downgrade)
 	int ret;
 	struct mm_struct *mm = current->mm;
 	LIST_HEAD(uf);
-	MA_STATE(mas, &mm->mm_mt, start, start);
+	MA_STATE(mas, &mm->mm_mt, start, start + len);
 
 	if (mmap_write_lock_killable(mm))
 		return -EINTR;
@@ -2839,6 +2909,7 @@ EXPORT_SYMBOL(vm_munmap);
 SYSCALL_DEFINE2(munmap, unsigned long, addr, size_t, len)
 {
 	addr = untagged_addr(addr);
+	profile_munmap(addr);
 	return __vm_munmap(addr, len, true);
 }
 
@@ -2983,6 +3054,8 @@ static int do_brk_flags(struct ma_state *mas, struct vm_area_struct *vma,
 	if (security_vm_enough_memory_mm(mm, len >> PAGE_SHIFT))
 		return -ENOMEM;
 
+	if (vma)
+		vma_start_write(vma);
 	/*
 	 * Expand the existing vma if possible; Note that singular lists do not
 	 * occur after forking, so the expand will only happen on new VMAs.
@@ -2994,13 +3067,14 @@ static int do_brk_flags(struct ma_state *mas, struct vm_area_struct *vma,
 		if (mas_preallocate(mas, vma, GFP_KERNEL))
 			return -ENOMEM;
 
+		/* Set flags first to implicitly lock the VMA before updates */
+		vm_flags_set(vma, VM_SOFTDIRTY);
 		vma_adjust_trans_huge(vma, vma->vm_start, addr + len, 0);
 		if (vma->anon_vma) {
 			anon_vma_lock_write(vma->anon_vma);
 			anon_vma_interval_tree_pre_update_vma(vma);
 		}
 		vma->vm_end = addr + len;
-		vma->vm_flags |= VM_SOFTDIRTY;
 		mas_store_prealloc(mas, vma);
 
 		if (vma->anon_vma) {
@@ -3020,7 +3094,7 @@ static int do_brk_flags(struct ma_state *mas, struct vm_area_struct *vma,
 	vma->vm_start = addr;
 	vma->vm_end = addr + len;
 	vma->vm_pgoff = addr >> PAGE_SHIFT;
-	vma->vm_flags = flags;
+	vm_flags_init(vma, flags);
 	vma->vm_page_prot = vm_get_page_prot(flags);
 	mas_set_range(mas, vma->vm_start, addr + len - 1);
 	if (mas_store_gfp(mas, vma, GFP_KERNEL))
@@ -3033,7 +3107,7 @@ static int do_brk_flags(struct ma_state *mas, struct vm_area_struct *vma,
 	mm->data_vm += len >> PAGE_SHIFT;
 	if (flags & VM_LOCKED)
 		mm->locked_vm += (len >> PAGE_SHIFT);
-	vma->vm_flags |= VM_SOFTDIRTY;
+	vm_flags_set(vma, VM_SOFTDIRTY);
 	validate_mm(mm);
 	return 0;
 
@@ -3124,7 +3198,7 @@ void exit_mmap(struct mm_struct *mm)
 	tlb_gather_mmu_fullmm(&tlb, mm);
 	/* update_hiwater_rss(mm) here? but nobody should be looking */
 	/* Use ULONG_MAX here to ensure all VMAs in the mm are unmapped */
-	unmap_vmas(&tlb, &mm->mm_mt, vma, 0, ULONG_MAX);
+	unmap_vmas(&tlb, &mm->mm_mt, vma, 0, ULONG_MAX, vma->vm_end, ULONG_MAX, false);
 	mmap_read_unlock(mm);
 
 	/*
@@ -3135,7 +3209,7 @@ void exit_mmap(struct mm_struct *mm)
 	mmap_write_lock(mm);
 	mt_clear_in_rcu(&mm->mm_mt);
 	free_pgtables(&tlb, &mm->mm_mt, vma, FIRST_USER_ADDRESS,
-		      USER_PGTABLES_CEILING);
+		      USER_PGTABLES_CEILING, vma->vm_end, true);
 	tlb_finish_mmu(&tlb);
 
 	/*
@@ -3146,7 +3220,7 @@ void exit_mmap(struct mm_struct *mm)
 	do {
 		if (vma->vm_flags & VM_ACCOUNT)
 			nr_accounted += vma_pages(vma);
-		remove_vma(vma);
+		remove_vma(vma, true);
 		count++;
 		cond_resched();
 	} while ((vma = mas_find(&mas, ULONG_MAX)) != NULL);
@@ -3268,6 +3342,7 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
 			get_file(new_vma->vm_file);
 		if (new_vma->vm_ops && new_vma->vm_ops->open)
 			new_vma->vm_ops->open(new_vma);
+		vma_start_write(new_vma);
 		if (vma_link(mm, new_vma))
 			goto out_vma_link;
 		*need_rmap_locks = false;
@@ -3433,8 +3508,8 @@ static struct vm_area_struct *__install_special_mapping(
 	vma->vm_start = addr;
 	vma->vm_end = addr + len;
 
-	vma->vm_flags = vm_flags | mm->def_flags | VM_DONTEXPAND | VM_SOFTDIRTY;
-	vma->vm_flags &= VM_LOCKED_CLEAR_MASK;
+	vm_flags_init(vma, (vm_flags | mm->def_flags |
+		      VM_DONTEXPAND | VM_SOFTDIRTY) & ~VM_LOCKED_MASK);
 	vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
 
 	vma->vm_ops = ops;
@@ -3562,6 +3637,7 @@ static void vm_lock_mapping(struct mm_struct *mm, struct address_space *mapping)
  * of mm/rmap.c:
  *   - all hugetlbfs_i_mmap_rwsem_key locks (aka mapping->i_mmap_rwsem for
  *     hugetlb mapping);
+ *   - all vmas marked locked
  *   - all i_mmap_rwsem locks;
  *   - all anon_vma->rwseml
  *
@@ -3587,6 +3663,13 @@ int mm_take_all_locks(struct mm_struct *mm)
 	mas_for_each(&mas, vma, ULONG_MAX) {
 		if (signal_pending(current))
 			goto out_unlock;
+		vma_start_write(vma);
+	}
+
+	mas_set(&mas, 0);
+	mas_for_each(&mas, vma, ULONG_MAX) {
+		if (signal_pending(current))
+			goto out_unlock;
 		if (vma->vm_file && vma->vm_file->f_mapping &&
 				is_vm_hugetlb_page(vma))
 			vm_lock_mapping(mm, vma->vm_file->f_mapping);
@@ -3673,6 +3756,7 @@ void mm_drop_all_locks(struct mm_struct *mm)
 		if (vma->vm_file && vma->vm_file->f_mapping)
 			vm_unlock_mapping(vma->vm_file->f_mapping);
 	}
+	vma_end_write_all(mm);
 
 	mutex_unlock(&mm_all_locks_mutex);
 }
diff --git a/mm/mmzone.c b/mm/mmzone.c
index 68e1511..1cb8873 100644
--- a/mm/mmzone.c
+++ b/mm/mmzone.c
@@ -9,6 +9,7 @@
 #include <linux/stddef.h>
 #include <linux/mm.h>
 #include <linux/mmzone.h>
+#include <trace/hooks/mm.h>
 
 struct pglist_data *first_online_pgdat(void)
 {
@@ -110,3 +111,10 @@ int page_cpupid_xchg_last(struct page *page, int cpupid)
 	return last_cpupid;
 }
 #endif
+
+enum zone_type gfp_zone(gfp_t flags)
+{
+	trace_android_rvh_set_gfp_zone_flags(&flags);
+
+	return __gfp_zone(flags);
+}
diff --git a/mm/mprotect.c b/mm/mprotect.c
index 668bfaa..1b9198d3 100644
--- a/mm/mprotect.c
+++ b/mm/mprotect.c
@@ -630,7 +630,7 @@ mprotect_fixup(struct mmu_gather *tlb, struct vm_area_struct *vma,
 	 * vm_flags and vm_page_prot are protected by the mmap_lock
 	 * held in write mode.
 	 */
-	vma->vm_flags = newflags;
+	vm_flags_reset(vma, newflags);
 	/*
 	 * We want to check manually if we can change individual PTEs writable
 	 * if we can't do that automatically for all PTEs in a mapping. For
diff --git a/mm/mremap.c b/mm/mremap.c
index 930f65c..9779898 100644
--- a/mm/mremap.c
+++ b/mm/mremap.c
@@ -622,6 +622,7 @@ static unsigned long move_vma(struct vm_area_struct *vma,
 			return -ENOMEM;
 	}
 
+	vma_start_write(vma);
 	new_pgoff = vma->vm_pgoff + ((old_addr - vma->vm_start) >> PAGE_SHIFT);
 	new_vma = copy_vma(&vma, new_addr, new_len, new_pgoff,
 			   &need_rmap_locks);
@@ -661,7 +662,7 @@ static unsigned long move_vma(struct vm_area_struct *vma,
 
 	/* Conceal VM_ACCOUNT so old reservation is not undone */
 	if (vm_flags & VM_ACCOUNT && !(flags & MREMAP_DONTUNMAP)) {
-		vma->vm_flags &= ~VM_ACCOUNT;
+		vm_flags_clear(vma, VM_ACCOUNT);
 		excess = vma->vm_end - vma->vm_start - old_len;
 		if (old_addr > vma->vm_start &&
 		    old_addr + old_len < vma->vm_end)
@@ -686,7 +687,7 @@ static unsigned long move_vma(struct vm_area_struct *vma,
 
 	if (unlikely(!err && (flags & MREMAP_DONTUNMAP))) {
 		/* We always clear VM_LOCKED[ONFAULT] on the old vma */
-		vma->vm_flags &= VM_LOCKED_CLEAR_MASK;
+		vm_flags_clear(vma, VM_LOCKED_MASK);
 
 		/*
 		 * anon_vma links of the old vma is no longer needed after its page
@@ -716,9 +717,9 @@ static unsigned long move_vma(struct vm_area_struct *vma,
 
 	/* Restore VM_ACCOUNT if one or two pieces of vma left */
 	if (excess) {
-		vma->vm_flags |= VM_ACCOUNT;
+		vm_flags_set(vma, VM_ACCOUNT);
 		if (split)
-			find_vma(mm, vma->vm_end)->vm_flags |= VM_ACCOUNT;
+			vm_flags_set(find_vma(mm, vma->vm_end), VM_ACCOUNT);
 	}
 
 	return new_addr;
diff --git a/mm/nommu.c b/mm/nommu.c
index 5b83938..14ffd4c 100644
--- a/mm/nommu.c
+++ b/mm/nommu.c
@@ -173,7 +173,7 @@ static void *__vmalloc_user_flags(unsigned long size, gfp_t flags)
 		mmap_write_lock(current->mm);
 		vma = find_vma(current->mm, (unsigned long)ret);
 		if (vma)
-			vma->vm_flags |= VM_USERMAP;
+			vm_flags_set(vma, VM_USERMAP);
 		mmap_write_unlock(current->mm);
 	}
 
@@ -991,7 +991,8 @@ static int do_mmap_private(struct vm_area_struct *vma,
 
 	atomic_long_add(total, &mmap_pages_allocated);
 
-	region->vm_flags = vma->vm_flags |= VM_MAPPED_COPY;
+	vm_flags_set(vma, VM_MAPPED_COPY);
+	region->vm_flags = vma->vm_flags;
 	region->vm_start = (unsigned long) base;
 	region->vm_end   = region->vm_start + len;
 	region->vm_top   = region->vm_start + (total << PAGE_SHIFT);
@@ -1088,7 +1089,7 @@ unsigned long do_mmap(struct file *file,
 	region->vm_flags = vm_flags;
 	region->vm_pgoff = pgoff;
 
-	vma->vm_flags = vm_flags;
+	vm_flags_init(vma, vm_flags);
 	vma->vm_pgoff = pgoff;
 
 	if (file) {
@@ -1152,7 +1153,7 @@ unsigned long do_mmap(struct file *file,
 			vma->vm_end = start + len;
 
 			if (pregion->vm_flags & VM_MAPPED_COPY)
-				vma->vm_flags |= VM_MAPPED_COPY;
+				vm_flags_set(vma, VM_MAPPED_COPY);
 			else {
 				ret = do_mmap_shared_file(vma);
 				if (ret < 0) {
@@ -1635,7 +1636,7 @@ int remap_pfn_range(struct vm_area_struct *vma, unsigned long addr,
 	if (addr != (pfn << PAGE_SHIFT))
 		return -EINVAL;
 
-	vma->vm_flags |= VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP;
+	vm_flags_set(vma, VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP);
 	return 0;
 }
 EXPORT_SYMBOL(remap_pfn_range);
diff --git a/mm/page-writeback.c b/mm/page-writeback.c
index 7e9d8d8..2f3db9d 100644
--- a/mm/page-writeback.c
+++ b/mm/page-writeback.c
@@ -38,6 +38,7 @@
 #include <linux/sched/signal.h>
 #include <linux/mm_inline.h>
 #include <trace/events/writeback.h>
+#include <trace/hooks/mm.h>
 
 #include "internal.h"
 
@@ -1890,6 +1891,8 @@ int balance_dirty_pages_ratelimited_flags(struct address_space *mapping,
 	if (!(bdi->capabilities & BDI_CAP_WRITEBACK))
 		return ret;
 
+	trace_android_rvh_ctl_dirty_rate(NULL);
+
 	if (inode_cgwb_enabled(inode))
 		wb = wb_get_create_current(bdi, GFP_KERNEL);
 	if (!wb)
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 6966881..856b000 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -76,6 +76,8 @@
 #include <linux/khugepaged.h>
 #include <linux/buffer_head.h>
 #include <linux/delayacct.h>
+#include <trace/hooks/mm.h>
+
 #include <asm/sections.h>
 #include <asm/tlbflush.h>
 #include <asm/div64.h>
@@ -84,6 +86,9 @@
 #include "page_reporting.h"
 #include "swap.h"
 
+#undef CREATE_TRACE_POINTS
+#include <trace/hooks/mm.h>
+
 /* Free Page Internal flags: for internal, non-pcp variants of free_pages(). */
 typedef int __bitwise fpi_t;
 
@@ -399,10 +404,10 @@ const char * const migratetype_names[MIGRATE_TYPES] = {
 	"Unmovable",
 	"Movable",
 	"Reclaimable",
-	"HighAtomic",
 #ifdef CONFIG_CMA
 	"CMA",
 #endif
+	"HighAtomic",
 #ifdef CONFIG_MEMORY_ISOLATION
 	"Isolate",
 #endif
@@ -585,6 +590,24 @@ unsigned long get_pfnblock_flags_mask(const struct page *page,
 {
 	return __get_pfnblock_flags_mask(page, pfn, mask);
 }
+EXPORT_SYMBOL_GPL(get_pfnblock_flags_mask);
+
+int isolate_anon_lru_page(struct page *page)
+{
+	int ret;
+
+	if (!PageLRU(page) || !PageAnon(page))
+		return -EINVAL;
+
+	if (!get_page_unless_zero(page))
+		return -EINVAL;
+
+	ret = isolate_lru_page(page);
+	put_page(page);
+
+	return ret;
+}
+EXPORT_SYMBOL_GPL(isolate_anon_lru_page);
 
 static __always_inline int get_pfnblock_migratetype(const struct page *page,
 					unsigned long pfn)
@@ -1367,6 +1390,8 @@ static int free_tail_pages_check(struct page *head_page, struct page *page)
  *    see the comment next to it.
  * 3. Skipping poisoning is requested via __GFP_SKIP_KASAN_POISON,
  *    see the comment next to it.
+ * 4. The allocation is excluded from being checked due to sampling,
+ *    see the call to kasan_unpoison_pages.
  *
  * Poisoning pages during deferred memory init will greatly lengthen the
  * process and cause problem in large memory systems as the deferred pages
@@ -1418,6 +1443,7 @@ static __always_inline bool free_pages_prepare(struct page *page,
 		if (memcg_kmem_enabled() && PageMemcgKmem(page))
 			__memcg_kmem_uncharge_page(page, order);
 		reset_page_owner(page, order);
+		free_page_pinner(page, order);
 		page_table_check_free(page, order);
 		return false;
 	}
@@ -1458,6 +1484,7 @@ static __always_inline bool free_pages_prepare(struct page *page,
 	page_cpupid_reset_last(page);
 	page->flags &= ~PAGE_FLAGS_CHECK_AT_PREP;
 	reset_page_owner(page, order);
+	free_page_pinner(page, order);
 	page_table_check_free(page, order);
 
 	if (!PageHighMem(page)) {
@@ -2477,7 +2504,8 @@ inline void post_alloc_hook(struct page *page, unsigned int order,
 {
 	bool init = !want_init_on_free() && want_init_on_alloc(gfp_flags) &&
 			!should_skip_init(gfp_flags);
-	bool init_tags = init && (gfp_flags & __GFP_ZEROTAGS);
+	bool zero_tags = init && (gfp_flags & __GFP_ZEROTAGS);
+	bool reset_tags = true;
 	int i;
 
 	set_page_private(page, 0);
@@ -2500,30 +2528,43 @@ inline void post_alloc_hook(struct page *page, unsigned int order,
 	 */
 
 	/*
-	 * If memory tags should be zeroed (which happens only when memory
-	 * should be initialized as well).
+	 * If memory tags should be zeroed
+	 * (which happens only when memory should be initialized as well).
 	 */
-	if (init_tags) {
-		/* Initialize both memory and tags. */
+	if (zero_tags) {
+		/* Initialize both memory and memory tags. */
 		for (i = 0; i != 1 << order; ++i)
 			tag_clear_highpage(page + i);
 
-		/* Note that memory is already initialized by the loop above. */
+		/* Take note that memory was initialized by the loop above. */
 		init = false;
 	}
 	if (!should_skip_kasan_unpoison(gfp_flags)) {
-		/* Unpoison shadow memory or set memory tags. */
-		kasan_unpoison_pages(page, order, init);
-
-		/* Note that memory is already initialized by KASAN. */
-		if (kasan_has_integrated_init())
-			init = false;
-	} else {
-		/* Ensure page_address() dereferencing does not fault. */
+		/* Try unpoisoning (or setting tags) and initializing memory. */
+		if (kasan_unpoison_pages(page, order, init)) {
+			/* Take note that memory was initialized by KASAN. */
+			if (kasan_has_integrated_init())
+				init = false;
+			/* Take note that memory tags were set by KASAN. */
+			reset_tags = false;
+		} else {
+			/*
+			 * KASAN decided to exclude this allocation from being
+			 * (un)poisoned due to sampling. Make KASAN skip
+			 * poisoning when the allocation is freed.
+			 */
+			SetPageSkipKASanPoison(page);
+		}
+	}
+	/*
+	 * If memory tags have not been set by KASAN, reset the page tags to
+	 * ensure page_address() dereferencing does not fault.
+	 */
+	if (reset_tags) {
 		for (i = 0; i != 1 << order; ++i)
 			page_kasan_tag_reset(page + i);
 	}
-	/* If memory is still not initialized, do it now. */
+	/* If memory is still not initialized, initialize it now. */
 	if (init)
 		kernel_init_pages(page, 1 << order);
 	/* Propagate __GFP_SKIP_KASAN_POISON to page flags. */
@@ -3090,33 +3131,38 @@ __rmqueue(struct zone *zone, unsigned int order, int migratetype,
 {
 	struct page *page;
 
-	if (IS_ENABLED(CONFIG_CMA)) {
-		/*
-		 * Balance movable allocations between regular and CMA areas by
-		 * allocating from CMA when over half of the zone's free memory
-		 * is in the CMA area.
-		 */
-		if (alloc_flags & ALLOC_CMA &&
-		    zone_page_state(zone, NR_FREE_CMA_PAGES) >
-		    zone_page_state(zone, NR_FREE_PAGES) / 2) {
-			page = __rmqueue_cma_fallback(zone, order);
-			if (page)
-				return page;
-		}
-	}
 retry:
 	page = __rmqueue_smallest(zone, order, migratetype);
-	if (unlikely(!page)) {
-		if (alloc_flags & ALLOC_CMA)
-			page = __rmqueue_cma_fallback(zone, order);
 
-		if (!page && __rmqueue_fallback(zone, order, migratetype,
-								alloc_flags))
-			goto retry;
-	}
+	if (unlikely(!page) && __rmqueue_fallback(zone, order, migratetype,
+						  alloc_flags))
+		goto retry;
+
 	return page;
 }
 
+#ifdef CONFIG_CMA
+static struct page *__rmqueue_cma(struct zone *zone, unsigned int order,
+				  int migratetype,
+				  unsigned int alloc_flags)
+{
+	struct page *page = __rmqueue_cma_fallback(zone, order);
+
+	if (page)
+		trace_mm_page_alloc_zone_locked(page, order, MIGRATE_CMA,
+				pcp_allowed_order(order) &&
+				migratetype < MIGRATE_PCPTYPES);
+	return page;
+}
+#else
+static inline struct page *__rmqueue_cma(struct zone *zone, unsigned int order,
+					 int migratetype,
+					 unsigned int alloc_flags)
+{
+	return NULL;
+}
+#endif
+
 /*
  * Obtain a specified number of elements from the buddy allocator, all under
  * a single hold of the lock, for efficiency.  Add them to the supplied list.
@@ -3131,8 +3177,14 @@ static int rmqueue_bulk(struct zone *zone, unsigned int order,
 	/* Caller must hold IRQ-safe pcp->lock so IRQs are disabled. */
 	spin_lock(&zone->lock);
 	for (i = 0; i < count; ++i) {
-		struct page *page = __rmqueue(zone, order, migratetype,
-								alloc_flags);
+		struct page *page;
+
+		if (is_migrate_cma(migratetype))
+			page = __rmqueue_cma(zone, order, migratetype,
+					     alloc_flags);
+		else
+			page = __rmqueue(zone, order, migratetype, alloc_flags);
+
 		if (unlikely(page == NULL))
 			break;
 
@@ -3167,6 +3219,39 @@ static int rmqueue_bulk(struct zone *zone, unsigned int order,
 	return allocated;
 }
 
+/*
+ * Return the pcp list that corresponds to the migrate type if that list isn't
+ * empty.
+ * If the list is empty return NULL.
+ */
+static struct list_head *get_populated_pcp_list(struct zone *zone,
+			unsigned int order, struct per_cpu_pages *pcp,
+			int migratetype, unsigned int alloc_flags)
+{
+	struct list_head *list = &pcp->lists[order_to_pindex(migratetype, order)];
+
+	if (list_empty(list)) {
+		int batch = READ_ONCE(pcp->batch);
+		int alloced;
+
+		/*
+		 * Scale batch relative to order if batch implies
+		 * free pages can be stored on the PCP. Batch can
+		 * be 1 for small zones or for boot pagesets which
+		 * should never store free pages as the pages may
+		 * belong to arbitrary zones.
+		 */
+		if (batch > 1)
+			batch = max(batch >> order, 2);
+		alloced = rmqueue_bulk(zone, order, pcp->batch, list, migratetype, alloc_flags);
+
+		pcp->count += alloced << order;
+		if (list_empty(list))
+			list = NULL;
+	}
+	return list;
+}
+
 #ifdef CONFIG_NUMA
 /*
  * Called from the vmstat counter updater to drain pagesets of this
@@ -3485,7 +3570,7 @@ void free_unref_page(struct page *page, unsigned int order)
 		return;
 
 	/*
-	 * We only track unmovable, reclaimable and movable on pcp lists.
+	 * We only track unmovable, reclaimable, movable, and CMA on pcp lists.
 	 * Place ISOLATE pages on the isolated list because they are being
 	 * offlined but treat HIGHATOMIC as movable pages so we can get those
 	 * areas back if necessary. Otherwise, we may have to free
@@ -3714,7 +3799,12 @@ struct page *rmqueue_buddy(struct zone *preferred_zone, struct zone *zone,
 		if (order > 0 && alloc_flags & ALLOC_HARDER)
 			page = __rmqueue_smallest(zone, order, MIGRATE_HIGHATOMIC);
 		if (!page) {
-			page = __rmqueue(zone, order, migratetype, alloc_flags);
+			if (alloc_flags & ALLOC_CMA && migratetype == MIGRATE_MOVABLE)
+				page = __rmqueue_cma(zone, order, migratetype,
+						     alloc_flags);
+			else
+				page = __rmqueue(zone, order, migratetype,
+						 alloc_flags);
 			if (!page) {
 				spin_unlock_irqrestore(&zone->lock, flags);
 				return NULL;
@@ -3736,31 +3826,23 @@ static inline
 struct page *__rmqueue_pcplist(struct zone *zone, unsigned int order,
 			int migratetype,
 			unsigned int alloc_flags,
-			struct per_cpu_pages *pcp,
-			struct list_head *list)
+			struct per_cpu_pages *pcp)
 {
-	struct page *page;
+	struct page *page = NULL;
+	struct list_head *list = NULL;
 
 	do {
-		if (list_empty(list)) {
-			int batch = READ_ONCE(pcp->batch);
-			int alloced;
-
+		/* First try to get CMA pages */
+		if (migratetype == MIGRATE_MOVABLE && alloc_flags & ALLOC_CMA)
+			list = get_populated_pcp_list(zone, order, pcp, get_cma_migrate_type(),
+						      alloc_flags);
+		if (list == NULL) {
 			/*
-			 * Scale batch relative to order if batch implies
-			 * free pages can be stored on the PCP. Batch can
-			 * be 1 for small zones or for boot pagesets which
-			 * should never store free pages as the pages may
-			 * belong to arbitrary zones.
+			 * Either CMA is not suitable or there are no
+			 * free CMA pages.
 			 */
-			if (batch > 1)
-				batch = max(batch >> order, 2);
-			alloced = rmqueue_bulk(zone, order,
-					batch, list,
-					migratetype, alloc_flags);
-
-			pcp->count += alloced << order;
-			if (unlikely(list_empty(list)))
+			list = get_populated_pcp_list(zone, order, pcp, migratetype, alloc_flags);
+			if (unlikely(list == NULL) || unlikely(list_empty(list)))
 				return NULL;
 		}
 
@@ -3778,7 +3860,6 @@ static struct page *rmqueue_pcplist(struct zone *preferred_zone,
 			int migratetype, unsigned int alloc_flags)
 {
 	struct per_cpu_pages *pcp;
-	struct list_head *list;
 	struct page *page;
 	unsigned long flags;
 	unsigned long __maybe_unused UP_flags;
@@ -3800,8 +3881,7 @@ static struct page *rmqueue_pcplist(struct zone *preferred_zone,
 	 * frees.
 	 */
 	pcp->free_factor >>= 1;
-	list = &pcp->lists[order_to_pindex(migratetype, order)];
-	page = __rmqueue_pcplist(zone, order, migratetype, alloc_flags, pcp, list);
+	page = __rmqueue_pcplist(zone, order, migratetype, alloc_flags, pcp);
 	pcp_spin_unlock_irqrestore(pcp, flags);
 	pcp_trylock_finish(UP_flags);
 	if (page) {
@@ -3838,17 +3918,10 @@ struct page *rmqueue(struct zone *preferred_zone,
 	WARN_ON_ONCE((gfp_flags & __GFP_NOFAIL) && (order > 1));
 
 	if (likely(pcp_allowed_order(order))) {
-		/*
-		 * MIGRATE_MOVABLE pcplist could have the pages on CMA area and
-		 * we need to skip it when CMA area isn't allowed.
-		 */
-		if (!IS_ENABLED(CONFIG_CMA) || alloc_flags & ALLOC_CMA ||
-				migratetype != MIGRATE_MOVABLE) {
-			page = rmqueue_pcplist(preferred_zone, zone, order,
-					migratetype, alloc_flags);
-			if (likely(page))
-				goto out;
-		}
+		page = rmqueue_pcplist(preferred_zone, zone, order,
+				migratetype, alloc_flags);
+		if (likely(page))
+			goto out;
 	}
 
 	page = rmqueue_buddy(preferred_zone, zone, order, alloc_flags,
@@ -4022,6 +4095,14 @@ bool __zone_watermark_ok(struct zone *z, unsigned int order, unsigned long mark,
 			continue;
 
 		for (mt = 0; mt < MIGRATE_PCPTYPES; mt++) {
+#ifdef CONFIG_CMA
+			/*
+			 * Note that this check is needed only
+			 * when MIGRATE_CMA < MIGRATE_PCPTYPES.
+			 */
+			if (mt == MIGRATE_CMA)
+				continue;
+#endif
 			if (!free_area_empty(area, mt))
 				return true;
 		}
@@ -4161,7 +4242,7 @@ static inline unsigned int gfp_to_alloc_flags_cma(gfp_t gfp_mask,
 						  unsigned int alloc_flags)
 {
 #ifdef CONFIG_CMA
-	if (gfp_migratetype(gfp_mask) == MIGRATE_MOVABLE)
+	if (gfp_migratetype(gfp_mask) == MIGRATE_MOVABLE && gfp_mask & __GFP_CMA)
 		alloc_flags |= ALLOC_CMA;
 #endif
 	return alloc_flags;
@@ -4243,6 +4324,7 @@ get_page_from_freelist(gfp_t gfp_mask, unsigned int order, int alloc_flags,
 		}
 
 		mark = wmark_pages(zone, alloc_flags & ALLOC_WMARK_MASK);
+		trace_android_vh_get_page_wmark(alloc_flags, &mark);
 		if (!zone_watermark_fast(zone, order, mark,
 				       ac->highest_zoneidx, alloc_flags,
 				       gfp_mask)) {
@@ -5036,7 +5118,7 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order,
 	unsigned int cpuset_mems_cookie;
 	unsigned int zonelist_iter_cookie;
 	int reserve_flags;
-
+	unsigned long alloc_start = jiffies;
 	/*
 	 * We also sanity check to catch abuse of atomic reserves being used by
 	 * callers that are not in atomic context.
@@ -5183,6 +5265,12 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order,
 	if (current->flags & PF_MEMALLOC)
 		goto nopage;
 
+	trace_android_vh_alloc_pages_reclaim_bypass(gfp_mask, order,
+		alloc_flags, ac->migratetype, &page);
+
+	if (page)
+		goto got_pg;
+
 	/* Try direct reclaim and then allocating */
 	page = __alloc_pages_direct_reclaim(gfp_mask, order, alloc_flags, ac,
 							&did_some_progress);
@@ -5298,9 +5386,15 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order,
 		goto retry;
 	}
 fail:
+	trace_android_vh_alloc_pages_failure_bypass(gfp_mask, order,
+		alloc_flags, ac->migratetype, &page);
+	if (page)
+		goto got_pg;
+
 	warn_alloc(gfp_mask, ac->nodemask,
 			"page allocation failure: order:%u", order);
 got_pg:
+	trace_android_vh_alloc_pages_slowpath(gfp_mask, order, alloc_start);
 	return page;
 }
 
@@ -5378,7 +5472,6 @@ unsigned long __alloc_pages_bulk(gfp_t gfp, int preferred_nid,
 	struct zone *zone;
 	struct zoneref *z;
 	struct per_cpu_pages *pcp;
-	struct list_head *pcp_list;
 	struct alloc_context ac;
 	gfp_t alloc_gfp;
 	unsigned int alloc_flags = ALLOC_WMARK_LOW;
@@ -5462,7 +5555,6 @@ unsigned long __alloc_pages_bulk(gfp_t gfp, int preferred_nid,
 		goto failed_irq;
 
 	/* Attempt the batch allocation */
-	pcp_list = &pcp->lists[order_to_pindex(ac.migratetype, 0)];
 	while (nr_populated < nr_pages) {
 
 		/* Skip existing pages */
@@ -5472,7 +5564,7 @@ unsigned long __alloc_pages_bulk(gfp_t gfp, int preferred_nid,
 		}
 
 		page = __rmqueue_pcplist(zone, 0, ac.migratetype, alloc_flags,
-								pcp, pcp_list);
+								pcp);
 		if (unlikely(!page)) {
 			/* Try and allocate at least one page */
 			if (!nr_account) {
@@ -5973,6 +6065,7 @@ long si_mem_available(void)
 	reclaimable = global_node_page_state_pages(NR_SLAB_RECLAIMABLE_B) +
 		global_node_page_state(NR_KERNEL_MISC_RECLAIMABLE);
 	available += reclaimable - min(reclaimable / 2, wmark_low);
+	trace_android_vh_si_mem_available_adjust(&available);
 
 	if (available < 0)
 		available = 0;
@@ -5989,6 +6082,7 @@ void si_meminfo(struct sysinfo *val)
 	val->totalhigh = totalhigh_pages();
 	val->freehigh = nr_free_highpages();
 	val->mem_unit = PAGE_SIZE;
+	trace_android_vh_si_meminfo_adjust(&val->totalram, &val->freeram);
 }
 
 EXPORT_SYMBOL(si_meminfo);
@@ -7957,6 +8051,7 @@ static void __init free_area_init_node(int nid)
 	pgdat_set_deferred_range(pgdat);
 
 	free_area_init_core(pgdat);
+	lru_gen_init_pgdat(pgdat);
 }
 
 static void __init free_area_init_memoryless_node(int nid)
@@ -9254,8 +9349,17 @@ int __alloc_contig_migrate_range(struct compact_control *cc,
 
 	lru_cache_enable();
 	if (ret < 0) {
-		if (!(cc->gfp_mask & __GFP_NOWARN) && ret == -EBUSY)
+		if (!(cc->gfp_mask & __GFP_NOWARN) && ret == -EBUSY) {
+			struct page *page;
+
 			alloc_contig_dump_pages(&cc->migratepages);
+			list_for_each_entry(page, &cc->migratepages, lru) {
+				/* The page will be freed by putback_movable_pages soon */
+				if (page_count(page) == 1)
+					continue;
+				page_pinner_failure_detect(page);
+			}
+		}
 		putback_movable_pages(&cc->migratepages);
 		return ret;
 	}
diff --git a/mm/page_ext.c b/mm/page_ext.c
index ddf1968..6fcae7c 100644
--- a/mm/page_ext.c
+++ b/mm/page_ext.c
@@ -7,6 +7,7 @@
 #include <linux/vmalloc.h>
 #include <linux/kmemleak.h>
 #include <linux/page_owner.h>
+#include <linux/page_pinner.h>
 #include <linux/page_idle.h>
 #include <linux/page_table_check.h>
 #include <linux/rcupdate.h>
@@ -81,6 +82,9 @@ static struct page_ext_operations *page_ext_ops[] __initdata = {
 #if defined(CONFIG_PAGE_IDLE_FLAG) && !defined(CONFIG_64BIT)
 	&page_idle_ops,
 #endif
+#ifdef CONFIG_PAGE_PINNER
+	&page_pinner_ops,
+#endif
 #ifdef CONFIG_PAGE_TABLE_CHECK
 	&page_table_check_ops,
 #endif
@@ -163,6 +167,7 @@ struct page_ext *page_ext_get(struct page *page)
 
 	return page_ext;
 }
+EXPORT_SYMBOL_NS_GPL(page_ext_get, MINIDUMP);
 
 /**
  * page_ext_put() - Working with page extended information is done.
@@ -181,6 +186,7 @@ void page_ext_put(struct page_ext *page_ext)
 
 	rcu_read_unlock();
 }
+EXPORT_SYMBOL_NS_GPL(page_ext_put, MINIDUMP);
 #ifndef CONFIG_SPARSEMEM
 
 
diff --git a/mm/page_isolation.c b/mm/page_isolation.c
index 47fbc16..90e6a00 100644
--- a/mm/page_isolation.c
+++ b/mm/page_isolation.c
@@ -9,6 +9,7 @@
 #include <linux/memory.h>
 #include <linux/hugetlb.h>
 #include <linux/page_owner.h>
+#include <linux/page_pinner.h>
 #include <linux/migrate.h>
 #include "internal.h"
 
@@ -666,6 +667,8 @@ int test_pages_isolated(unsigned long start_pfn, unsigned long end_pfn,
 
 out:
 	trace_test_pages_isolated(start_pfn, end_pfn, pfn);
+	if (pfn < end_pfn)
+		page_pinner_failure_detect(pfn_to_page(pfn));
 
 	return ret;
 }
diff --git a/mm/page_owner.c b/mm/page_owner.c
index 2d27f53..ab06f43 100644
--- a/mm/page_owner.c
+++ b/mm/page_owner.c
@@ -106,6 +106,25 @@ static inline struct page_owner *get_page_owner(struct page_ext *page_ext)
 	return (void *)page_ext + page_owner_ops.offset;
 }
 
+depot_stack_handle_t get_page_owner_handle(struct page_ext *page_ext, unsigned long pfn)
+{
+	struct page_owner *page_owner;
+	depot_stack_handle_t handle;
+
+	if (!static_branch_unlikely(&page_owner_inited))
+		return 0;
+
+	page_owner = get_page_owner(page_ext);
+
+	/* skip handle for tail pages of higher order allocations */
+	if (!IS_ALIGNED(pfn, 1 << page_owner->order))
+		return 0;
+
+	handle = READ_ONCE(page_owner->handle);
+	return handle;
+}
+EXPORT_SYMBOL_NS_GPL(get_page_owner_handle, MINIDUMP);
+
 static noinline depot_stack_handle_t save_stack(gfp_t flags)
 {
 	unsigned long entries[PAGE_OWNER_STACK_DEPTH];
diff --git a/mm/page_pinner.c b/mm/page_pinner.c
new file mode 100644
index 0000000..2b1b116
--- /dev/null
+++ b/mm/page_pinner.c
@@ -0,0 +1,434 @@
+// SPDX-License-Identifier: GPL-2.0
+#include <linux/debugfs.h>
+#include <linux/mm.h>
+#include <linux/slab.h>
+#include <linux/uaccess.h>
+#include <linux/memblock.h>
+#include <linux/stacktrace.h>
+#include <linux/page_pinner.h>
+#include <linux/jump_label.h>
+#include <linux/migrate.h>
+#include <linux/stackdepot.h>
+#include <linux/seq_file.h>
+#include <linux/sched/clock.h>
+
+#include "internal.h"
+
+#define PAGE_PINNER_STACK_DEPTH 16
+static unsigned long pp_buf_size = 4096;
+
+struct page_pinner {
+	depot_stack_handle_t handle;
+	u64 ts_usec;
+	atomic_t count;
+};
+
+enum pp_state {
+	PP_PUT,
+	PP_FREE,
+	PP_FAIL_DETECTED,
+};
+
+struct captured_pinner {
+	depot_stack_handle_t handle;
+	union {
+		u64 ts_usec;
+		u64 elapsed;
+	};
+
+	/* struct page fields */
+	unsigned long pfn;
+	int count;
+	int mapcount;
+	struct address_space *mapping;
+	unsigned long flags;
+	enum pp_state state;
+};
+
+struct page_pinner_buffer {
+	spinlock_t lock;
+	unsigned long index;
+	struct captured_pinner *buffer;
+};
+
+/* alloc_contig failed pinner */
+static struct page_pinner_buffer pp_buffer;
+
+static bool page_pinner_enabled;
+DEFINE_STATIC_KEY_FALSE(page_pinner_inited);
+EXPORT_SYMBOL_GPL(page_pinner_inited);
+
+DEFINE_STATIC_KEY_TRUE(failure_tracking);
+
+static depot_stack_handle_t failure_handle;
+
+static int __init early_page_pinner_param(char *buf)
+{
+	page_pinner_enabled = true;
+	return 0;
+}
+early_param("page_pinner", early_page_pinner_param);
+
+static bool need_page_pinner(void)
+{
+	return page_pinner_enabled;
+}
+
+static noinline void register_failure_stack(void)
+{
+	unsigned long entries[4];
+	unsigned int nr_entries;
+
+	nr_entries = stack_trace_save(entries, ARRAY_SIZE(entries), 0);
+	failure_handle = stack_depot_save(entries, nr_entries, GFP_KERNEL);
+}
+
+static void init_page_pinner(void)
+{
+	if (!page_pinner_enabled)
+		return;
+
+	pp_buffer.buffer = kvmalloc_array(pp_buf_size, sizeof(*pp_buffer.buffer),
+				GFP_KERNEL);
+	if (!pp_buffer.buffer) {
+		pr_info("page_pinner disabled due to failure of buffer allocation\n");
+		return;
+	}
+
+	spin_lock_init(&pp_buffer.lock);
+	pp_buffer.index = 0;
+
+	register_failure_stack();
+	static_branch_enable(&page_pinner_inited);
+}
+
+struct page_ext_operations page_pinner_ops = {
+	.size = sizeof(struct page_pinner),
+	.need = need_page_pinner,
+	.init = init_page_pinner,
+};
+
+static inline struct page_pinner *get_page_pinner(struct page_ext *page_ext)
+{
+	return (void *)page_ext + page_pinner_ops.offset;
+}
+
+static noinline depot_stack_handle_t save_stack(gfp_t flags)
+{
+	unsigned long entries[PAGE_PINNER_STACK_DEPTH];
+	depot_stack_handle_t handle;
+	unsigned int nr_entries;
+
+	nr_entries = stack_trace_save(entries, ARRAY_SIZE(entries), 2);
+	handle = stack_depot_save(entries, nr_entries, flags);
+	if (!handle)
+		handle = failure_handle;
+
+	return handle;
+}
+
+static void capture_page_state(struct page *page,
+			       struct captured_pinner *record)
+{
+	record->flags = page->flags;
+	record->mapping = page_mapping(page);
+	record->pfn = page_to_pfn(page);
+	record->count = page_count(page);
+	record->mapcount = page_mapcount(page);
+}
+
+static void add_record(struct page_pinner_buffer *pp_buf,
+		       struct captured_pinner *record)
+{
+	unsigned long flags;
+	unsigned int idx;
+
+	spin_lock_irqsave(&pp_buf->lock, flags);
+	idx = pp_buf->index++;
+	pp_buf->index %= pp_buf_size;
+	pp_buf->buffer[idx] = *record;
+	spin_unlock_irqrestore(&pp_buf->lock, flags);
+}
+
+void __free_page_pinner(struct page *page, unsigned int order)
+{
+	struct page_pinner *page_pinner;
+	struct page_ext *page_ext;
+	int i;
+
+	/* free_page could be called before buffer is initialized */
+	if (!pp_buffer.buffer)
+		return;
+
+	page_ext = page_ext_get(page);
+	if (unlikely(!page_ext))
+		return;
+
+	for (i = 0; i < (1 << order); i++) {
+		struct captured_pinner record;
+
+		if (!test_bit(PAGE_EXT_PINNER_MIGRATION_FAILED, &page_ext->flags))
+			continue;
+
+		page_pinner = get_page_pinner(page_ext);
+
+		record.handle = save_stack(GFP_NOWAIT|__GFP_NOWARN);
+		record.ts_usec = (u64)ktime_to_us(ktime_get_boottime());
+		record.state = PP_FREE;
+		capture_page_state(page, &record);
+
+		add_record(&pp_buffer, &record);
+
+		atomic_set(&page_pinner->count, 0);
+		page_pinner->ts_usec = 0;
+		clear_bit(PAGE_EXT_PINNER_MIGRATION_FAILED, &page_ext->flags);
+		page_ext = page_ext_next(page_ext);
+	}
+	page_ext_put(page_ext);
+}
+
+static ssize_t
+print_page_pinner(char __user *buf, size_t count, struct captured_pinner *record)
+{
+	int ret;
+	unsigned long *entries;
+	unsigned int nr_entries;
+	char *kbuf;
+
+	count = min_t(size_t, count, PAGE_SIZE);
+	kbuf = kmalloc(count, GFP_KERNEL);
+	if (!kbuf)
+		return -ENOMEM;
+
+	if (record->state == PP_PUT) {
+		ret = snprintf(kbuf, count, "At least, pinned for %llu us\n",
+			       record->elapsed);
+	} else {
+		u64 ts_usec = record->ts_usec;
+		unsigned long rem_usec = do_div(ts_usec, 1000000);
+
+		ret = snprintf(kbuf, count,
+			       "%s [%5lu.%06lu]\n",
+			       record->state == PP_FREE ? "Freed at" :
+							  "Failure detected at",
+			       (unsigned long)ts_usec, rem_usec);
+	}
+
+	if (ret >= count)
+		goto err;
+
+	/* Print information relevant to grouping pages by mobility */
+	ret += snprintf(kbuf + ret, count - ret,
+			"PFN 0x%lx Block %lu count %d mapcount %d mapping %pS Flags %#lx(%pGp)\n",
+			record->pfn,
+			record->pfn >> pageblock_order,
+			record->count, record->mapcount,
+			record->mapping,
+			record->flags, &record->flags);
+
+	if (ret >= count)
+		goto err;
+
+	nr_entries = stack_depot_fetch(record->handle, &entries);
+	ret += stack_trace_snprint(kbuf + ret, count - ret, entries,
+				   nr_entries, 0);
+	if (ret >= count)
+		goto err;
+
+	ret += snprintf(kbuf + ret, count - ret, "\n");
+	if (ret >= count)
+		goto err;
+
+	if (copy_to_user(buf, kbuf, ret))
+		ret = -EFAULT;
+
+	kfree(kbuf);
+	return ret;
+
+err:
+	kfree(kbuf);
+	return -ENOMEM;
+}
+
+void __page_pinner_failure_detect(struct page *page)
+{
+	struct page_ext *page_ext;
+	struct page_pinner *page_pinner;
+	struct captured_pinner record;
+	u64 now;
+
+	if (!static_branch_unlikely(&failure_tracking))
+		return;
+
+	page_ext = page_ext_get(page);
+	if (unlikely(!page_ext))
+		return;
+
+	if (test_bit(PAGE_EXT_PINNER_MIGRATION_FAILED, &page_ext->flags)) {
+		page_ext_put(page_ext);
+		return;
+	}
+
+	now = (u64)ktime_to_us(ktime_get_boottime());
+	page_pinner = get_page_pinner(page_ext);
+	if (!page_pinner->ts_usec)
+		page_pinner->ts_usec = now;
+	set_bit(PAGE_EXT_PINNER_MIGRATION_FAILED, &page_ext->flags);
+	record.handle = save_stack(GFP_NOWAIT|__GFP_NOWARN);
+	record.ts_usec = now;
+	record.state = PP_FAIL_DETECTED;
+	capture_page_state(page, &record);
+
+	add_record(&pp_buffer, &record);
+	page_ext_put(page_ext);
+}
+EXPORT_SYMBOL_GPL(__page_pinner_failure_detect);
+
+void __page_pinner_put_page(struct page *page)
+{
+	struct page_ext *page_ext;
+	struct page_pinner *page_pinner;
+	struct captured_pinner record;
+	u64 now, ts_usec;
+
+	if (!static_branch_unlikely(&failure_tracking))
+		return;
+
+	page_ext = page_ext_get(page);
+	if (unlikely(!page_ext))
+		return;
+
+	if (!test_bit(PAGE_EXT_PINNER_MIGRATION_FAILED, &page_ext->flags)) {
+		page_ext_put(page_ext);
+		return;
+	}
+
+	page_pinner = get_page_pinner(page_ext);
+	record.handle = save_stack(GFP_NOWAIT|__GFP_NOWARN);
+	now = (u64)ktime_to_us(ktime_get_boottime());
+	ts_usec = page_pinner->ts_usec;
+
+	if (now > ts_usec)
+		record.elapsed = now - ts_usec;
+	else
+		record.elapsed = 0;
+	record.state = PP_PUT;
+	capture_page_state(page, &record);
+
+	add_record(&pp_buffer, &record);
+	page_ext_put(page_ext);
+}
+EXPORT_SYMBOL_GPL(__page_pinner_put_page);
+
+static ssize_t read_buffer(struct file *file, char __user *buf,
+					size_t count, loff_t *ppos)
+{
+	u64 tmp;
+	loff_t i, idx;
+	struct captured_pinner record;
+	unsigned long flags;
+
+	if (!static_branch_unlikely(&failure_tracking))
+		return -EINVAL;
+
+	if (*ppos >= pp_buf_size)
+		return 0;
+
+	i = *ppos;
+	*ppos = i + 1;
+
+	/*
+	 * reading the records in the reverse order with newest one
+	 * being read first followed by older ones
+	 */
+	tmp = pp_buffer.index - 1 - i + pp_buf_size;
+	idx = do_div(tmp, pp_buf_size);
+
+	spin_lock_irqsave(&pp_buffer.lock, flags);
+	record = pp_buffer.buffer[idx];
+	spin_unlock_irqrestore(&pp_buffer.lock, flags);
+	if (!record.handle)
+		return 0;
+
+	return print_page_pinner(buf, count, &record);
+}
+
+static const struct file_operations proc_buffer_operations = {
+	.read		= read_buffer,
+};
+
+static int failure_tracking_set(void *data, u64 val)
+{
+	bool on;
+
+	on = (bool)val;
+	if (on)
+		static_branch_enable(&failure_tracking);
+	else
+		static_branch_disable(&failure_tracking);
+	return 0;
+}
+
+static int failure_tracking_get(void *data, u64 *val)
+{
+	*val = static_branch_unlikely(&failure_tracking);
+	return 0;
+}
+DEFINE_DEBUGFS_ATTRIBUTE(failure_tracking_fops,
+			 failure_tracking_get,
+			 failure_tracking_set, "%llu\n");
+
+static int buffer_size_set(void *data, u64 val)
+{
+	unsigned long flags;
+	struct captured_pinner *new, *old;
+
+	new = kvmalloc_array(val, sizeof(*new), GFP_KERNEL);
+	if (!new)
+		return -ENOMEM;
+
+	spin_lock_irqsave(&pp_buffer.lock, flags);
+	old = pp_buffer.buffer;
+	pp_buffer.buffer = new;
+	pp_buffer.index = 0;
+	pp_buf_size = val;
+	spin_unlock_irqrestore(&pp_buffer.lock, flags);
+	kvfree(old);
+
+	return 0;
+}
+
+static int buffer_size_get(void *data, u64 *val)
+{
+	*val = pp_buf_size;
+	return 0;
+}
+DEFINE_DEBUGFS_ATTRIBUTE(buffer_size_fops,
+			 buffer_size_get,
+			 buffer_size_set, "%llu\n");
+
+static int __init page_pinner_init(void)
+{
+	struct dentry *pp_debugfs_root;
+
+	if (!static_branch_unlikely(&page_pinner_inited))
+		return 0;
+
+	pr_info("page_pinner enabled\n");
+
+	pp_debugfs_root = debugfs_create_dir("page_pinner", NULL);
+
+	debugfs_create_file("buffer", 0444,
+			    pp_debugfs_root, NULL,
+			    &proc_buffer_operations);
+
+	debugfs_create_file("failure_tracking", 0644,
+			    pp_debugfs_root, NULL,
+			    &failure_tracking_fops);
+
+	debugfs_create_file("buffer_size", 0644,
+			    pp_debugfs_root, NULL,
+			    &buffer_size_fops);
+	return 0;
+}
+late_initcall(page_pinner_init)
diff --git a/mm/page_reporting.c b/mm/page_reporting.c
index 382958e..5c4b1fb 100644
--- a/mm/page_reporting.c
+++ b/mm/page_reporting.c
@@ -7,6 +7,7 @@
 #include <linux/module.h>
 #include <linux/delay.h>
 #include <linux/scatterlist.h>
+#include <linux/mem_relinquish.h>
 
 #include "page_reporting.h"
 #include "internal.h"
@@ -120,7 +121,7 @@ page_reporting_cycle(struct page_reporting_dev_info *prdev, struct zone *zone,
 	unsigned int page_len = PAGE_SIZE << order;
 	struct page *page, *next;
 	long budget;
-	int err = 0;
+	int i, err = 0;
 
 	/*
 	 * Perform early check, if free area is empty there is
@@ -175,6 +176,10 @@ page_reporting_cycle(struct page_reporting_dev_info *prdev, struct zone *zone,
 			--(*offset);
 			sg_set_page(&sgl[*offset], page, page_len, 0);
 
+			/* Notify hyp that these pages are reclaimable. */
+			for (i = 0; i < (1<<order); i++)
+				page_relinquish(page+i);
+
 			continue;
 		}
 
diff --git a/mm/percpu.c b/mm/percpu.c
index 27697b2..18d0809 100644
--- a/mm/percpu.c
+++ b/mm/percpu.c
@@ -2417,6 +2417,7 @@ phys_addr_t per_cpu_ptr_to_phys(void *addr)
 		return page_to_phys(pcpu_addr_to_page(addr)) +
 		       offset_in_page(addr);
 }
+EXPORT_SYMBOL_GPL(per_cpu_ptr_to_phys);
 
 /**
  * pcpu_alloc_alloc_info - allocate percpu allocation info
@@ -3447,6 +3448,7 @@ unsigned long pcpu_nr_pages(void)
 {
 	return pcpu_nr_populated * pcpu_nr_units;
 }
+EXPORT_SYMBOL_GPL(pcpu_nr_pages);
 
 /*
  * Percpu allocator is initialized early during boot when neither slab or
diff --git a/mm/readahead.c b/mm/readahead.c
index b10f0cf..844e813 100644
--- a/mm/readahead.c
+++ b/mm/readahead.c
@@ -129,6 +129,7 @@
 #include <linux/blk-cgroup.h>
 #include <linux/fadvise.h>
 #include <linux/sched/mm.h>
+#include <trace/hooks/mm.h>
 
 #include "internal.h"
 
@@ -144,6 +145,15 @@ file_ra_state_init(struct file_ra_state *ra, struct address_space *mapping)
 }
 EXPORT_SYMBOL_GPL(file_ra_state_init);
 
+gfp_t readahead_gfp_mask(struct address_space *x)
+{
+	gfp_t mask = __readahead_gfp_mask(x);
+
+	trace_android_rvh_set_readahead_gfp_mask(&mask);
+	return mask;
+}
+EXPORT_SYMBOL_GPL(readahead_gfp_mask);
+
 static void read_pages(struct readahead_control *rac)
 {
 	const struct address_space_operations *aops = rac->mapping->a_ops;
diff --git a/mm/rmap.c b/mm/rmap.c
index 7da2d8d..9cf4f09 100644
--- a/mm/rmap.c
+++ b/mm/rmap.c
@@ -25,21 +25,22 @@
  *     mapping->invalidate_lock (in filemap_fault)
  *       page->flags PG_locked (lock_page)
  *         hugetlbfs_i_mmap_rwsem_key (in huge_pmd_share, see hugetlbfs below)
- *           mapping->i_mmap_rwsem
- *             anon_vma->rwsem
- *               mm->page_table_lock or pte_lock
- *                 swap_lock (in swap_duplicate, swap_info_get)
- *                   mmlist_lock (in mmput, drain_mmlist and others)
- *                   mapping->private_lock (in block_dirty_folio)
- *                     folio_lock_memcg move_lock (in block_dirty_folio)
- *                       i_pages lock (widely used)
- *                         lruvec->lru_lock (in folio_lruvec_lock_irq)
- *                   inode->i_lock (in set_page_dirty's __mark_inode_dirty)
- *                   bdi.wb->list_lock (in set_page_dirty's __mark_inode_dirty)
- *                     sb_lock (within inode_lock in fs/fs-writeback.c)
- *                     i_pages lock (widely used, in set_page_dirty,
- *                               in arch-dependent flush_dcache_mmap_lock,
- *                               within bdi.wb->list_lock in __sync_single_inode)
+ *           vma_start_write
+ *             mapping->i_mmap_rwsem
+ *               anon_vma->rwsem
+ *                 mm->page_table_lock or pte_lock
+ *                   swap_lock (in swap_duplicate, swap_info_get)
+ *                     mmlist_lock (in mmput, drain_mmlist and others)
+ *                     mapping->private_lock (in block_dirty_folio)
+ *                       folio_lock_memcg move_lock (in block_dirty_folio)
+ *                         i_pages lock (widely used)
+ *                           lruvec->lru_lock (in folio_lruvec_lock_irq)
+ *                     inode->i_lock (in set_page_dirty's __mark_inode_dirty)
+ *                     bdi.wb->list_lock (in set_page_dirty's __mark_inode_dirty)
+ *                       sb_lock (within inode_lock in fs/fs-writeback.c)
+ *                       i_pages lock (widely used, in set_page_dirty,
+ *                                 in arch-dependent flush_dcache_mmap_lock,
+ *                                 within bdi.wb->list_lock in __sync_single_inode)
  *
  * anon_vma->rwsem,mapping->i_mmap_rwsem   (memory_failure, collect_procs_anon)
  *   ->tasklist_lock
@@ -80,6 +81,8 @@
 #define CREATE_TRACE_POINTS
 #include <trace/events/tlb.h>
 #include <trace/events/migrate.h>
+#undef CREATE_TRACE_POINTS
+#include <trace/hooks/mm.h>
 
 #include "internal.h"
 
@@ -823,25 +826,14 @@ static bool folio_referenced_one(struct folio *folio,
 		}
 
 		if (pvmw.pte) {
-			if (lru_gen_enabled() && pte_young(*pvmw.pte) &&
-			    !(vma->vm_flags & (VM_SEQ_READ | VM_RAND_READ))) {
+			if (lru_gen_enabled() && pte_young(*pvmw.pte)) {
 				lru_gen_look_around(&pvmw);
 				referenced++;
 			}
 
 			if (ptep_clear_flush_young_notify(vma, address,
-						pvmw.pte)) {
-				/*
-				 * Don't treat a reference through
-				 * a sequentially read mapping as such.
-				 * If the folio has been used in another mapping,
-				 * we will catch it; if this other mapping is
-				 * already gone, the unmap path will have set
-				 * the referenced flag or activated the folio.
-				 */
-				if (likely(!(vma->vm_flags & VM_SEQ_READ)))
-					referenced++;
-			}
+						pvmw.pte))
+				referenced++;
 		} else if (IS_ENABLED(CONFIG_TRANSPARENT_HUGEPAGE)) {
 			if (pmdp_clear_flush_young_notify(vma, address,
 						pvmw.pmd))
@@ -875,7 +867,20 @@ static bool invalid_folio_referenced_vma(struct vm_area_struct *vma, void *arg)
 	struct folio_referenced_arg *pra = arg;
 	struct mem_cgroup *memcg = pra->memcg;
 
-	if (!mm_match_cgroup(vma->vm_mm, memcg))
+	/*
+	 * Ignore references from this mapping if it has no recency. If the
+	 * folio has been used in another mapping, we will catch it; if this
+	 * other mapping is already gone, the unmap path will have set the
+	 * referenced flag or activated the folio in zap_pte_range().
+	 */
+	if (!vma_has_recency(vma))
+		return true;
+
+	/*
+	 * If we are reclaiming on behalf of a cgroup, skip counting on behalf
+	 * of references from different cgroups.
+	 */
+	if (memcg && !mm_match_cgroup(vma->vm_mm, memcg))
 		return true;
 
 	return false;
@@ -906,6 +911,7 @@ int folio_referenced(struct folio *folio, int is_locked,
 		.arg = (void *)&pra,
 		.anon_lock = folio_lock_anon_vma_read,
 		.try_lock = true,
+		.invalid_vma = invalid_folio_referenced_vma,
 	};
 
 	*vm_flags = 0;
@@ -921,15 +927,6 @@ int folio_referenced(struct folio *folio, int is_locked,
 			return 1;
 	}
 
-	/*
-	 * If we are reclaiming on behalf of a cgroup, skip
-	 * counting on behalf of references from different
-	 * cgroups
-	 */
-	if (memcg) {
-		rwc.invalid_vma = invalid_folio_referenced_vma;
-	}
-
 	rmap_walk(folio, &rwc);
 	*vm_flags = pra.vm_flags;
 
@@ -1274,6 +1271,7 @@ void page_add_new_anon_rmap(struct page *page,
 	}
 	__mod_lruvec_page_state(page, NR_ANON_MAPPED, nr);
 	__page_set_anon_rmap(page, vma, address, 1);
+	trace_android_vh_page_add_new_anon_rmap(page, vma, address);
 }
 
 /**
@@ -1792,6 +1790,7 @@ static bool try_to_unmap_one(struct folio *folio, struct vm_area_struct *vma,
 	}
 
 	mmu_notifier_invalidate_range_end(&range);
+	trace_android_vh_try_to_unmap_one(folio, vma, address, arg, ret);
 
 	return ret;
 }
diff --git a/mm/secretmem.c b/mm/secretmem.c
index 04c3ac9..16d5125 100644
--- a/mm/secretmem.c
+++ b/mm/secretmem.c
@@ -128,7 +128,7 @@ static int secretmem_mmap(struct file *file, struct vm_area_struct *vma)
 	if (mlock_future_check(vma->vm_mm, vma->vm_flags | VM_LOCKED, len))
 		return -EAGAIN;
 
-	vma->vm_flags |= VM_LOCKED | VM_DONTDUMP;
+	vm_flags_set(vma, VM_LOCKED | VM_DONTDUMP);
 	vma->vm_ops = &secretmem_vm_ops;
 
 	return 0;
diff --git a/mm/shmem.c b/mm/shmem.c
index a8d9fd0..f5232a3 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -39,8 +39,12 @@
 #include <linux/fs_parser.h>
 #include <linux/swapfile.h>
 #include <linux/iversion.h>
+#include <linux/mm_inline.h>
 #include "swap.h"
 
+#undef CREATE_TRACE_POINTS
+#include <trace/hooks/mm.h>
+
 static struct vfsmount *shm_mnt;
 
 #ifdef CONFIG_SHMEM
@@ -79,6 +83,7 @@ static struct vfsmount *shm_mnt;
 #include <linux/userfaultfd_k.h>
 #include <linux/rmap.h>
 #include <linux/uuid.h>
+#include <linux/android_vendor.h>
 
 #include <linux/uaccess.h>
 
@@ -1564,10 +1569,14 @@ static struct folio *shmem_alloc_folio(gfp_t gfp,
 			struct shmem_inode_info *info, pgoff_t index)
 {
 	struct vm_area_struct pvma;
-	struct folio *folio;
+	struct folio *folio = NULL;
 
 	shmem_pseudo_vma_init(&pvma, info, index);
+	trace_android_rvh_shmem_get_folio(info, &folio);
+	if (folio)
+		goto done;
 	folio = vma_alloc_folio(gfp, 0, &pvma, 0, false);
+done:
 	shmem_pseudo_vma_destroy(&pvma);
 
 	return folio;
@@ -2288,7 +2297,7 @@ static int shmem_mmap(struct file *file, struct vm_area_struct *vma)
 		return ret;
 
 	/* arm64 - allow memory tagging on RAM-based files */
-	vma->vm_flags |= VM_MTE_ALLOWED;
+	vm_flags_set(vma, VM_MTE_ALLOWED);
 
 	file_accessed(file);
 	vma->vm_ops = &shmem_vm_ops;
@@ -2344,6 +2353,7 @@ static struct inode *shmem_get_inode(struct super_block *sb, struct inode *dir,
 		inode->i_generation = get_random_u32();
 		info = SHMEM_I(inode);
 		memset(info, 0, (char *)inode - (char *)info);
+		android_init_vendor_data(info, 1);
 		spin_lock_init(&info->lock);
 		atomic_set(&info->stop_eviction, 0);
 		info->seals = F_SEAL_SEAL;
@@ -4335,3 +4345,41 @@ struct page *shmem_read_mapping_page_gfp(struct address_space *mapping,
 #endif
 }
 EXPORT_SYMBOL_GPL(shmem_read_mapping_page_gfp);
+
+int reclaim_shmem_address_space(struct address_space *mapping)
+{
+#ifdef CONFIG_SHMEM
+	pgoff_t start = 0;
+	struct page *page;
+	LIST_HEAD(page_list);
+	XA_STATE(xas, &mapping->i_pages, start);
+
+	if (!shmem_mapping(mapping))
+		return -EINVAL;
+
+	lru_add_drain();
+
+	rcu_read_lock();
+	xas_for_each(&xas, page, ULONG_MAX) {
+		if (xas_retry(&xas, page))
+			continue;
+		if (xa_is_value(page))
+			continue;
+		if (isolate_lru_page(page))
+			continue;
+
+		list_add(&page->lru, &page_list);
+
+		if (need_resched()) {
+			xas_pause(&xas);
+			cond_resched_rcu();
+		}
+	}
+	rcu_read_unlock();
+
+	return reclaim_pages(&page_list);
+#else
+	return 0;
+#endif
+}
+EXPORT_SYMBOL_GPL(reclaim_shmem_address_space);
diff --git a/mm/slab.c b/mm/slab.c
index 62869bc..3b48164 100644
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -3927,6 +3927,7 @@ void get_slabinfo(struct kmem_cache *cachep, struct slabinfo *sinfo)
 	sinfo->objects_per_slab = cachep->num;
 	sinfo->cache_order = cachep->gfporder;
 }
+EXPORT_SYMBOL_NS_GPL(get_slabinfo, MINIDUMP);
 
 void slabinfo_show_stats(struct seq_file *m, struct kmem_cache *cachep)
 {
diff --git a/mm/slab.h b/mm/slab.h
index 0202a8c..5532289 100644
--- a/mm/slab.h
+++ b/mm/slab.h
@@ -282,6 +282,24 @@ void __kmem_cache_free(struct kmem_cache *s, void *x, unsigned long caller);
 
 gfp_t kmalloc_fix_flags(gfp_t flags);
 
+#ifdef CONFIG_SLUB
+/*
+ * Tracking user of a slab.
+ */
+#define TRACK_ADDRS_COUNT 16
+struct track {
+	unsigned long addr;	/* Called from address */
+#ifdef CONFIG_STACKDEPOT
+	depot_stack_handle_t handle;
+#endif
+	int cpu;		/* Was running on cpu */
+	int pid;		/* Pid context */
+	unsigned long when;	/* When did the operation occur */
+};
+
+enum track_item { TRACK_ALLOC, TRACK_FREE };
+#endif
+
 /* Functions provided by the slab allocators */
 int __kmem_cache_create(struct kmem_cache *, slab_flags_t flags);
 
@@ -399,6 +417,10 @@ DECLARE_STATIC_KEY_FALSE(slub_debug_enabled);
 #endif
 extern void print_tracking(struct kmem_cache *s, void *object);
 long validate_slab_cache(struct kmem_cache *s);
+extern unsigned long get_each_object_track(struct kmem_cache *s,
+		struct page *page, enum track_item alloc,
+		int (*fn)(const struct kmem_cache *, const void *,
+		const struct track *, void *), void *private);
 static inline bool __slub_debug_enabled(void)
 {
 	return static_branch_unlikely(&slub_debug_enabled);
@@ -407,6 +429,15 @@ static inline bool __slub_debug_enabled(void)
 static inline void print_tracking(struct kmem_cache *s, void *object)
 {
 }
+#ifdef CONFIG_SLUB
+static inline unsigned long get_each_object_track(struct kmem_cache *s,
+		struct page *page, enum track_item alloc,
+		int (*fn)(const struct kmem_cache *, const void *,
+		const struct track *, void *), void *private)
+{
+	return 0;
+}
+#endif
 static inline bool __slub_debug_enabled(void)
 {
 	return false;
diff --git a/mm/slab_common.c b/mm/slab_common.c
index 0042fb2..01da119 100644
--- a/mm/slab_common.c
+++ b/mm/slab_common.c
@@ -31,6 +31,8 @@
 
 #define CREATE_TRACE_POINTS
 #include <trace/events/kmem.h>
+#undef CREATE_TRACE_POINTS
+#include <trace/hooks/mm.h>
 
 enum slab_state slab_state;
 LIST_HEAD(slab_caches);
@@ -1200,6 +1202,7 @@ static void print_slabinfo_header(struct seq_file *m)
 	seq_puts(m, " : globalstat <listallocs> <maxobjs> <grown> <reaped> <error> <maxfreeable> <nodeallocs> <remotefrees> <alienoverflow>");
 	seq_puts(m, " : cpustat <allochit> <allocmiss> <freehit> <freemiss>");
 #endif
+	trace_android_vh_print_slabinfo_header(m);
 	seq_putc(m, '\n');
 }
 
@@ -1235,6 +1238,7 @@ static void cache_show(struct kmem_cache *s, struct seq_file *m)
 	seq_printf(m, " : slabdata %6lu %6lu %6lu",
 		   sinfo.active_slabs, sinfo.num_slabs, sinfo.shared_avail);
 	slabinfo_show_stats(m, s);
+	trace_android_vh_cache_show(m, &sinfo, s);
 	seq_putc(m, '\n');
 }
 
diff --git a/mm/slub.c b/mm/slub.c
index 157527d..3c9d4e3 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -282,22 +282,6 @@ static inline bool kmem_cache_has_cpu_partial(struct kmem_cache *s)
 /* Use cmpxchg_double */
 #define __CMPXCHG_DOUBLE	((slab_flags_t __force)0x40000000U)
 
-/*
- * Tracking user of a slab.
- */
-#define TRACK_ADDRS_COUNT 16
-struct track {
-	unsigned long addr;	/* Called from address */
-#ifdef CONFIG_STACKDEPOT
-	depot_stack_handle_t handle;
-#endif
-	int cpu;		/* Was running on cpu */
-	int pid;		/* Pid context */
-	unsigned long when;	/* When did the operation occur */
-};
-
-enum track_item { TRACK_ALLOC, TRACK_FREE };
-
 #ifdef CONFIG_SYSFS
 static int sysfs_slab_add(struct kmem_cache *);
 static int sysfs_slab_alias(struct kmem_cache *, const char *);
@@ -725,6 +709,42 @@ static struct track *get_track(struct kmem_cache *s, void *object,
 	return kasan_reset_tag(p + alloc);
 }
 
+/*
+ * This function will be used to loop through all the slab objects in
+ * a page to give track structure for each object, the function fn will
+ * be using this track structure and extract required info into its private
+ * data, the return value will be the number of track structures that are
+ * processed.
+ */
+unsigned long get_each_object_track(struct kmem_cache *s,
+		struct page *page, enum track_item alloc,
+		int (*fn)(const struct kmem_cache *, const void *,
+		const struct track *, void *), void *private)
+{
+	void *p;
+	struct track *t;
+	int ret;
+	unsigned long num_track = 0;
+	struct slab *p_slab = page_slab(page);
+
+	if (!slub_debug || !(s->flags & SLAB_STORE_USER) || !p_slab)
+		return 0;
+
+	slab_lock(p_slab);
+	for_each_object(p, s, page_address(page), p_slab->objects) {
+		t = get_track(s, p, alloc);
+		metadata_access_enable();
+		ret = fn(s, p, t, private);
+		metadata_access_disable();
+		if (ret < 0)
+			break;
+		num_track += 1;
+	}
+	slab_unlock(p_slab);
+	return num_track;
+}
+EXPORT_SYMBOL_NS_GPL(get_each_object_track, MINIDUMP);
+
 #ifdef CONFIG_STACKDEPOT
 static noinline depot_stack_handle_t set_track_prepare(void)
 {
@@ -6297,6 +6317,7 @@ void get_slabinfo(struct kmem_cache *s, struct slabinfo *sinfo)
 	sinfo->objects_per_slab = oo_objects(s->oo);
 	sinfo->cache_order = oo_order(s->oo);
 }
+EXPORT_SYMBOL_NS_GPL(get_slabinfo, MINIDUMP);
 
 void slabinfo_show_stats(struct seq_file *m, struct kmem_cache *s)
 {
diff --git a/mm/swapfile.c b/mm/swapfile.c
index 71db6d8..ce706c4 100644
--- a/mm/swapfile.c
+++ b/mm/swapfile.c
@@ -46,6 +46,7 @@
 #include <linux/swapops.h>
 #include <linux/swap_cgroup.h>
 #include "swap.h"
+#include <trace/hooks/bl_hib.h>
 
 static bool swap_count_continued(struct swap_info_struct *, pgoff_t,
 				 unsigned char);
@@ -1790,6 +1791,13 @@ static int unuse_pte(struct vm_area_struct *vma, pmd_t *pmd,
 		goto out;
 	}
 
+	/*
+	 * Some architectures may have to restore extra metadata to the page
+	 * when reading from swap. This metadata may be indexed by swap entry
+	 * so this must be called before swap_free().
+	 */
+	arch_swap_restore(entry, page_folio(page));
+
 	/* See do_swap_page() */
 	BUG_ON(!PageAnon(page) && PageMappedToDisk(page));
 	BUG_ON(PageAnon(page) && PageAnonExclusive(page));
@@ -2392,6 +2400,7 @@ SYSCALL_DEFINE1(swapoff, const char __user *, specialfile)
 	struct filename *pathname;
 	int err, found = 0;
 	unsigned int old_block_size;
+	bool hibernation_swap = false;
 
 	if (!capable(CAP_SYS_ADMIN))
 		return -EPERM;
@@ -2481,10 +2490,14 @@ SYSCALL_DEFINE1(swapoff, const char __user *, specialfile)
 	flush_work(&p->discard_work);
 
 	destroy_swap_extents(p);
+
+	trace_android_vh_check_hibernation_swap(p->bdev, &hibernation_swap);
+
 	if (p->flags & SWP_CONTINUED)
 		free_swap_count_continuations(p);
 
-	if (!p->bdev || !bdev_nonrot(p->bdev))
+	if (!p->bdev || hibernation_swap ||
+			!bdev_nonrot(p->bdev))
 		atomic_dec(&nr_rotate_swap);
 
 	mutex_lock(&swapon_mutex);
@@ -2994,6 +3007,7 @@ SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags)
 	struct page *page = NULL;
 	struct inode *inode = NULL;
 	bool inced_nr_rotate_swap = false;
+	bool hibernation_swap = false;
 
 	if (swap_flags & ~SWAP_FLAGS_VALID)
 		return -EINVAL;
@@ -3069,13 +3083,16 @@ SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags)
 		goto bad_swap_unlock_inode;
 	}
 
+	trace_android_vh_check_hibernation_swap(p->bdev, &hibernation_swap);
+
 	if (p->bdev && bdev_stable_writes(p->bdev))
 		p->flags |= SWP_STABLE_WRITES;
 
 	if (p->bdev && p->bdev->bd_disk->fops->rw_page)
 		p->flags |= SWP_SYNCHRONOUS_IO;
 
-	if (p->bdev && bdev_nonrot(p->bdev)) {
+	if (p->bdev && !hibernation_swap &&
+				 bdev_nonrot(p->bdev)) {
 		int cpu;
 		unsigned long ci, nr_cluster;
 
@@ -3261,6 +3278,7 @@ void si_swapinfo(struct sysinfo *val)
 	val->totalswap = total_swap_pages + nr_to_be_unused;
 	spin_unlock(&swap_lock);
 }
+EXPORT_SYMBOL_NS_GPL(si_swapinfo, MINIDUMP);
 
 /*
  * Verify that a swap entry is valid and increment its swap map count.
diff --git a/mm/truncate.c b/mm/truncate.c
index c0be77e..81da63d 100644
--- a/mm/truncate.c
+++ b/mm/truncate.c
@@ -21,6 +21,7 @@
 #include <linux/task_io_accounting_ops.h>
 #include <linux/buffer_head.h>	/* grr. try_to_release_page */
 #include <linux/shmem_fs.h>
+#include <linux/cleancache.h>
 #include <linux/rmap.h>
 #include "internal.h"
 
@@ -236,6 +237,7 @@ bool truncate_inode_partial_folio(struct folio *folio, loff_t start, loff_t end)
 	 */
 	folio_zero_range(folio, offset, length);
 
+	cleancache_invalidate_page(folio->mapping, &folio->page);
 	if (folio_has_private(folio))
 		folio_invalidate(folio, offset, length);
 	if (!folio_test_large(folio))
@@ -340,7 +342,7 @@ void truncate_inode_pages_range(struct address_space *mapping,
 	bool		same_folio;
 
 	if (mapping_empty(mapping))
-		return;
+		goto out;
 
 	/*
 	 * 'start' and 'end' always covers the range of pages to be fully
@@ -431,6 +433,9 @@ void truncate_inode_pages_range(struct address_space *mapping,
 		folio_batch_release(&fbatch);
 		index++;
 	}
+
+out:
+	cleancache_invalidate_inode(mapping);
 }
 EXPORT_SYMBOL(truncate_inode_pages_range);
 
@@ -484,6 +489,10 @@ void truncate_inode_pages_final(struct address_space *mapping)
 		xa_unlock_irq(&mapping->i_pages);
 	}
 
+	/*
+	 * Cleancache needs notification even if there are no pages or shadow
+	 * entries.
+	 */
 	truncate_inode_pages(mapping, 0);
 }
 EXPORT_SYMBOL(truncate_inode_pages_final);
@@ -637,7 +646,7 @@ int invalidate_inode_pages2_range(struct address_space *mapping,
 	int did_range_unmap = 0;
 
 	if (mapping_empty(mapping))
-		return 0;
+		goto out;
 
 	folio_batch_init(&fbatch);
 	index = start;
@@ -701,6 +710,8 @@ int invalidate_inode_pages2_range(struct address_space *mapping,
 	if (dax_mapping(mapping)) {
 		unmap_mapping_pages(mapping, start, end - start + 1, false);
 	}
+out:
+	cleancache_invalidate_inode(mapping);
 	return ret;
 }
 EXPORT_SYMBOL_GPL(invalidate_inode_pages2_range);
diff --git a/mm/util.c b/mm/util.c
index 12984e7..4afa7dd 100644
--- a/mm/util.c
+++ b/mm/util.c
@@ -29,6 +29,10 @@
 #include "internal.h"
 #include "swap.h"
 
+#ifndef __GENSYMS__
+#include <trace/hooks/syscall_check.h>
+#endif
+
 /**
  * kfree_const - conditionally free memory
  * @x: pointer to the memory
@@ -524,6 +528,7 @@ unsigned long vm_mmap_pgoff(struct file *file, unsigned long addr,
 		if (populate)
 			mm_populate(ret, populate);
 	}
+	trace_android_vh_check_mmap_file(file, prot, flag, ret);
 	return ret;
 }
 
diff --git a/mm/vmalloc.c b/mm/vmalloc.c
index d5dc361..fae448210 100644
--- a/mm/vmalloc.c
+++ b/mm/vmalloc.c
@@ -40,6 +40,7 @@
 #include <linux/uaccess.h>
 #include <linux/hugetlb.h>
 #include <linux/sched/mm.h>
+#include <linux/io.h>
 #include <asm/tlbflush.h>
 #include <asm/shmparam.h>
 
@@ -317,12 +318,17 @@ int ioremap_page_range(unsigned long addr, unsigned long end,
 {
 	int err;
 
-	err = vmap_range_noflush(addr, end, phys_addr, pgprot_nx(prot),
+	prot = pgprot_nx(prot);
+	err = vmap_range_noflush(addr, end, phys_addr, prot,
 				 ioremap_max_page_shift);
 	flush_cache_vmap(addr, end);
 	if (!err)
 		err = kmsan_ioremap_page_range(addr, end, phys_addr, prot,
 					       ioremap_max_page_shift);
+
+	if (IS_ENABLED(CONFIG_ARCH_HAS_IOREMAP_PHYS_HOOKS) && !err)
+		ioremap_phys_range_hook(phys_addr, end - addr, prot);
+
 	return err;
 }
 
@@ -809,6 +815,7 @@ unsigned long vmalloc_nr_pages(void)
 {
 	return atomic_long_read(&nr_vmalloc_pages);
 }
+EXPORT_SYMBOL_GPL(vmalloc_nr_pages);
 
 /* Look up the first VA which satisfies addr < va_end, NULL if none. */
 static struct vmap_area *find_vmap_area_exceed_addr(unsigned long addr)
@@ -2700,6 +2707,10 @@ static void __vunmap(const void *addr, int deallocate_pages)
 
 	kasan_poison_vmalloc(area->addr, get_vm_area_size(area));
 
+	if (IS_ENABLED(CONFIG_ARCH_HAS_IOREMAP_PHYS_HOOKS) &&
+	    area->flags & VM_IOREMAP)
+		iounmap_phys_range_hook(area->phys_addr, get_vm_area_size(area));
+
 	vm_remove_mappings(area, deallocate_pages);
 
 	if (deallocate_pages) {
@@ -3649,7 +3660,7 @@ int remap_vmalloc_range_partial(struct vm_area_struct *vma, unsigned long uaddr,
 		size -= PAGE_SIZE;
 	} while (size > 0);
 
-	vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP;
+	vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP);
 
 	return 0;
 }
diff --git a/mm/vmscan.c b/mm/vmscan.c
index d1829610..fca78c0 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -54,6 +54,8 @@
 #include <linux/shmem_fs.h>
 #include <linux/ctype.h>
 #include <linux/debugfs.h>
+#include <linux/rculist_nulls.h>
+#include <linux/random.h>
 
 #include <asm/tlbflush.h>
 #include <asm/div64.h>
@@ -68,6 +70,9 @@
 #define CREATE_TRACE_POINTS
 #include <trace/events/vmscan.h>
 
+#undef CREATE_TRACE_POINTS
+#include <trace/hooks/vmscan.h>
+
 struct scan_control {
 	/* How many pages shrink_list() should reclaim */
 	unsigned long nr_to_reclaim;
@@ -134,12 +139,6 @@ struct scan_control {
 	/* Always discard instead of demoting to lower tier memory */
 	unsigned int no_demotion:1;
 
-#ifdef CONFIG_LRU_GEN
-	/* help kswapd make better choices among multiple memcgs */
-	unsigned int memcgs_need_aging:1;
-	unsigned long last_reclaimed;
-#endif
-
 	/* Allocation order */
 	s8 order;
 
@@ -170,6 +169,7 @@ struct scan_control {
 
 	/* for recording the reclaimed slab by now */
 	struct reclaim_state reclaim_state;
+	ANDROID_VENDOR_DATA(1);
 };
 
 #ifdef ARCH_HAS_PREFETCHW
@@ -448,6 +448,11 @@ static bool cgroup_reclaim(struct scan_control *sc)
 	return sc->target_mem_cgroup;
 }
 
+static bool global_reclaim(struct scan_control *sc)
+{
+	return !sc->target_mem_cgroup || mem_cgroup_is_root(sc->target_mem_cgroup);
+}
+
 /**
  * writeback_throttling_sane - is the usual dirty throttling mechanism available?
  * @sc: scan_control in question
@@ -498,6 +503,11 @@ static bool cgroup_reclaim(struct scan_control *sc)
 	return false;
 }
 
+static bool global_reclaim(struct scan_control *sc)
+{
+	return true;
+}
+
 static bool writeback_throttling_sane(struct scan_control *sc)
 {
 	return true;
@@ -791,6 +801,7 @@ static unsigned long do_shrink_slab(struct shrink_control *shrinkctl,
 	long scanned = 0, next_deferred;
 
 	freeable = shrinker->count_objects(shrinker, shrinkctl);
+	trace_android_vh_do_shrink_slab(shrinker, &freeable);
 	if (freeable == 0 || freeable == SHRINK_EMPTY)
 		return freeable;
 
@@ -982,6 +993,11 @@ static unsigned long shrink_slab(gfp_t gfp_mask, int nid,
 {
 	unsigned long ret, freed = 0;
 	struct shrinker *shrinker;
+	bool bypass = false;
+
+	trace_android_vh_shrink_slab_bypass(gfp_mask, nid, memcg, priority, &bypass);
+	if (bypass)
+		return 0;
 
 	/*
 	 * The root memcg might be allocated even though memcg is disabled
@@ -2800,6 +2816,7 @@ static void prepare_scan_count(pg_data_t *pgdat, struct scan_control *sc)
 {
 	unsigned long file;
 	struct lruvec *target_lruvec;
+	bool bypass = false;
 
 	if (lru_gen_enabled())
 		return;
@@ -2861,6 +2878,11 @@ static void prepare_scan_count(pg_data_t *pgdat, struct scan_control *sc)
 	else
 		sc->cache_trim_mode = 0;
 
+
+	trace_android_vh_file_is_tiny_bypass(sc->file_is_tiny, &bypass);
+	if (bypass)
+		return;
+
 	/*
 	 * Prevent the reclaimer from falling into the cache trap: as
 	 * cache pages start out inactive, every cache fault will tip
@@ -2921,6 +2943,7 @@ static void get_scan_count(struct lruvec *lruvec, struct scan_control *sc,
 	enum scan_balance scan_balance;
 	unsigned long ap, fp;
 	enum lru_list lru;
+	bool balance_anon_file_reclaim = false;
 
 	/* If we have no swap space, do not bother scanning anon folios. */
 	if (!sc->may_swap || !can_reclaim_anon_pages(memcg, pgdat->node_id, sc)) {
@@ -2958,11 +2981,15 @@ static void get_scan_count(struct lruvec *lruvec, struct scan_control *sc,
 		goto out;
 	}
 
+	trace_android_rvh_set_balance_anon_file_reclaim(&balance_anon_file_reclaim);
+
 	/*
 	 * If there is enough inactive page cache, we do not reclaim
-	 * anything from the anonymous working right now.
+	 * anything from the anonymous working right now. But when balancing
+	 * anon and page cache files for reclaim, allow swapping of anon pages
+	 * even if there are a number of inactive file cache pages.
 	 */
-	if (sc->cache_trim_mode) {
+	if (!balance_anon_file_reclaim && sc->cache_trim_mode) {
 		scan_balance = SCAN_FILE;
 		goto out;
 	}
@@ -3151,6 +3178,9 @@ DEFINE_STATIC_KEY_ARRAY_FALSE(lru_gen_caps, NR_LRU_GEN_CAPS);
 		for ((type) = 0; (type) < ANON_AND_FILE; (type)++)	\
 			for ((zone) = 0; (zone) < MAX_NR_ZONES; (zone)++)
 
+#define get_memcg_gen(seq)	((seq) % MEMCG_NR_GENS)
+#define get_memcg_bin(bin)	((bin) % MEMCG_NR_BINS)
+
 static struct lruvec *get_lruvec(struct mem_cgroup *memcg, int nid)
 {
 	struct pglist_data *pgdat = NODE_DATA(nid);
@@ -3176,8 +3206,11 @@ static int get_swappiness(struct lruvec *lruvec, struct scan_control *sc)
 	struct mem_cgroup *memcg = lruvec_memcg(lruvec);
 	struct pglist_data *pgdat = lruvec_pgdat(lruvec);
 
+	if (!sc->may_swap)
+		return 0;
+
 	if (!can_demote(pgdat->node_id, sc) &&
-	    mem_cgroup_get_nr_swap_pages(memcg) < MIN_LRU_BATCH)
+		mem_cgroup_get_nr_swap_pages(memcg) <= 0)
 		return 0;
 
 	return mem_cgroup_swappiness(memcg);
@@ -3190,13 +3223,105 @@ static int get_nr_gens(struct lruvec *lruvec, int type)
 
 static bool __maybe_unused seq_is_valid(struct lruvec *lruvec)
 {
-	/* see the comment on lru_gen_struct */
+	/* see the comment on lru_gen_folio */
 	return get_nr_gens(lruvec, LRU_GEN_FILE) >= MIN_NR_GENS &&
 	       get_nr_gens(lruvec, LRU_GEN_FILE) <= get_nr_gens(lruvec, LRU_GEN_ANON) &&
 	       get_nr_gens(lruvec, LRU_GEN_ANON) <= MAX_NR_GENS;
 }
 
 /******************************************************************************
+ *                          Bloom filters
+ ******************************************************************************/
+
+/*
+ * Bloom filters with m=1<<15, k=2 and the false positive rates of ~1/5 when
+ * n=10,000 and ~1/2 when n=20,000, where, conventionally, m is the number of
+ * bits in a bitmap, k is the number of hash functions and n is the number of
+ * inserted items.
+ *
+ * Page table walkers use one of the two filters to reduce their search space.
+ * To get rid of non-leaf entries that no longer have enough leaf entries, the
+ * aging uses the double-buffering technique to flip to the other filter each
+ * time it produces a new generation. For non-leaf entries that have enough
+ * leaf entries, the aging carries them over to the next generation in
+ * walk_pmd_range(); the eviction also report them when walking the rmap
+ * in lru_gen_look_around().
+ *
+ * For future optimizations:
+ * 1. It's not necessary to keep both filters all the time. The spare one can be
+ *    freed after the RCU grace period and reallocated if needed again.
+ * 2. And when reallocating, it's worth scaling its size according to the number
+ *    of inserted entries in the other filter, to reduce the memory overhead on
+ *    small systems and false positives on large systems.
+ * 3. Jenkins' hash function is an alternative to Knuth's.
+ */
+#define BLOOM_FILTER_SHIFT	15
+
+static inline int filter_gen_from_seq(unsigned long seq)
+{
+	return seq % NR_BLOOM_FILTERS;
+}
+
+static void get_item_key(void *item, int *key)
+{
+	u32 hash = hash_ptr(item, BLOOM_FILTER_SHIFT * 2);
+
+	BUILD_BUG_ON(BLOOM_FILTER_SHIFT * 2 > BITS_PER_TYPE(u32));
+
+	key[0] = hash & (BIT(BLOOM_FILTER_SHIFT) - 1);
+	key[1] = hash >> BLOOM_FILTER_SHIFT;
+}
+
+static bool test_bloom_filter(struct lruvec *lruvec, unsigned long seq, void *item)
+{
+	int key[2];
+	unsigned long *filter;
+	int gen = filter_gen_from_seq(seq);
+
+	filter = READ_ONCE(lruvec->mm_state.filters[gen]);
+	if (!filter)
+		return true;
+
+	get_item_key(item, key);
+
+	return test_bit(key[0], filter) && test_bit(key[1], filter);
+}
+
+static void update_bloom_filter(struct lruvec *lruvec, unsigned long seq, void *item)
+{
+	int key[2];
+	unsigned long *filter;
+	int gen = filter_gen_from_seq(seq);
+
+	filter = READ_ONCE(lruvec->mm_state.filters[gen]);
+	if (!filter)
+		return;
+
+	get_item_key(item, key);
+
+	if (!test_bit(key[0], filter))
+		set_bit(key[0], filter);
+	if (!test_bit(key[1], filter))
+		set_bit(key[1], filter);
+}
+
+static void reset_bloom_filter(struct lruvec *lruvec, unsigned long seq)
+{
+	unsigned long *filter;
+	int gen = filter_gen_from_seq(seq);
+
+	filter = lruvec->mm_state.filters[gen];
+	if (filter) {
+		bitmap_clear(filter, 0, BIT(BLOOM_FILTER_SHIFT));
+		return;
+	}
+
+	filter = bitmap_zalloc(BIT(BLOOM_FILTER_SHIFT),
+			       __GFP_HIGH | __GFP_NOMEMALLOC | __GFP_NOWARN);
+	WRITE_ONCE(lruvec->mm_state.filters[gen], filter);
+}
+
+/******************************************************************************
  *                          mm_struct list
  ******************************************************************************/
 
@@ -3267,18 +3392,13 @@ void lru_gen_del_mm(struct mm_struct *mm)
 		if (!lruvec)
 			continue;
 
-		/* where the last iteration ended (exclusive) */
+		/* where the current iteration continues after */
+		if (lruvec->mm_state.head == &mm->lru_gen.list)
+			lruvec->mm_state.head = lruvec->mm_state.head->prev;
+
+		/* where the last iteration ended before */
 		if (lruvec->mm_state.tail == &mm->lru_gen.list)
 			lruvec->mm_state.tail = lruvec->mm_state.tail->next;
-
-		/* where the current iteration continues (inclusive) */
-		if (lruvec->mm_state.head != &mm->lru_gen.list)
-			continue;
-
-		lruvec->mm_state.head = lruvec->mm_state.head->next;
-		/* the deletion ends the current iteration */
-		if (lruvec->mm_state.head == &mm_list->fifo)
-			WRITE_ONCE(lruvec->mm_state.seq, lruvec->mm_state.seq + 1);
 	}
 
 	list_del_init(&mm->lru_gen.list);
@@ -3321,94 +3441,6 @@ void lru_gen_migrate_mm(struct mm_struct *mm)
 }
 #endif
 
-/*
- * Bloom filters with m=1<<15, k=2 and the false positive rates of ~1/5 when
- * n=10,000 and ~1/2 when n=20,000, where, conventionally, m is the number of
- * bits in a bitmap, k is the number of hash functions and n is the number of
- * inserted items.
- *
- * Page table walkers use one of the two filters to reduce their search space.
- * To get rid of non-leaf entries that no longer have enough leaf entries, the
- * aging uses the double-buffering technique to flip to the other filter each
- * time it produces a new generation. For non-leaf entries that have enough
- * leaf entries, the aging carries them over to the next generation in
- * walk_pmd_range(); the eviction also report them when walking the rmap
- * in lru_gen_look_around().
- *
- * For future optimizations:
- * 1. It's not necessary to keep both filters all the time. The spare one can be
- *    freed after the RCU grace period and reallocated if needed again.
- * 2. And when reallocating, it's worth scaling its size according to the number
- *    of inserted entries in the other filter, to reduce the memory overhead on
- *    small systems and false positives on large systems.
- * 3. Jenkins' hash function is an alternative to Knuth's.
- */
-#define BLOOM_FILTER_SHIFT	15
-
-static inline int filter_gen_from_seq(unsigned long seq)
-{
-	return seq % NR_BLOOM_FILTERS;
-}
-
-static void get_item_key(void *item, int *key)
-{
-	u32 hash = hash_ptr(item, BLOOM_FILTER_SHIFT * 2);
-
-	BUILD_BUG_ON(BLOOM_FILTER_SHIFT * 2 > BITS_PER_TYPE(u32));
-
-	key[0] = hash & (BIT(BLOOM_FILTER_SHIFT) - 1);
-	key[1] = hash >> BLOOM_FILTER_SHIFT;
-}
-
-static void reset_bloom_filter(struct lruvec *lruvec, unsigned long seq)
-{
-	unsigned long *filter;
-	int gen = filter_gen_from_seq(seq);
-
-	filter = lruvec->mm_state.filters[gen];
-	if (filter) {
-		bitmap_clear(filter, 0, BIT(BLOOM_FILTER_SHIFT));
-		return;
-	}
-
-	filter = bitmap_zalloc(BIT(BLOOM_FILTER_SHIFT),
-			       __GFP_HIGH | __GFP_NOMEMALLOC | __GFP_NOWARN);
-	WRITE_ONCE(lruvec->mm_state.filters[gen], filter);
-}
-
-static void update_bloom_filter(struct lruvec *lruvec, unsigned long seq, void *item)
-{
-	int key[2];
-	unsigned long *filter;
-	int gen = filter_gen_from_seq(seq);
-
-	filter = READ_ONCE(lruvec->mm_state.filters[gen]);
-	if (!filter)
-		return;
-
-	get_item_key(item, key);
-
-	if (!test_bit(key[0], filter))
-		set_bit(key[0], filter);
-	if (!test_bit(key[1], filter))
-		set_bit(key[1], filter);
-}
-
-static bool test_bloom_filter(struct lruvec *lruvec, unsigned long seq, void *item)
-{
-	int key[2];
-	unsigned long *filter;
-	int gen = filter_gen_from_seq(seq);
-
-	filter = READ_ONCE(lruvec->mm_state.filters[gen]);
-	if (!filter)
-		return true;
-
-	get_item_key(item, key);
-
-	return test_bit(key[0], filter) && test_bit(key[1], filter);
-}
-
 static void reset_mm_stats(struct lruvec *lruvec, struct lru_gen_mm_walk *walk, bool last)
 {
 	int i;
@@ -3462,68 +3494,54 @@ static bool iterate_mm_list(struct lruvec *lruvec, struct lru_gen_mm_walk *walk,
 			    struct mm_struct **iter)
 {
 	bool first = false;
-	bool last = true;
+	bool last = false;
 	struct mm_struct *mm = NULL;
 	struct mem_cgroup *memcg = lruvec_memcg(lruvec);
 	struct lru_gen_mm_list *mm_list = get_mm_list(memcg);
 	struct lru_gen_mm_state *mm_state = &lruvec->mm_state;
 
 	/*
-	 * There are four interesting cases for this page table walker:
-	 * 1. It tries to start a new iteration of mm_list with a stale max_seq;
-	 *    there is nothing left to do.
-	 * 2. It's the first of the current generation, and it needs to reset
-	 *    the Bloom filter for the next generation.
-	 * 3. It reaches the end of mm_list, and it needs to increment
-	 *    mm_state->seq; the iteration is done.
-	 * 4. It's the last of the current generation, and it needs to reset the
-	 *    mm stats counters for the next generation.
+	 * mm_state->seq is incremented after each iteration of mm_list. There
+	 * are three interesting cases for this page table walker:
+	 * 1. It tries to start a new iteration with a stale max_seq: there is
+	 *    nothing left to do.
+	 * 2. It started the next iteration: it needs to reset the Bloom filter
+	 *    so that a fresh set of PTE tables can be recorded.
+	 * 3. It ended the current iteration: it needs to reset the mm stats
+	 *    counters and tell its caller to increment max_seq.
 	 */
 	spin_lock(&mm_list->lock);
 
 	VM_WARN_ON_ONCE(mm_state->seq + 1 < walk->max_seq);
-	VM_WARN_ON_ONCE(*iter && mm_state->seq > walk->max_seq);
-	VM_WARN_ON_ONCE(*iter && !mm_state->nr_walkers);
 
-	if (walk->max_seq <= mm_state->seq) {
-		if (!*iter)
-			last = false;
+	if (walk->max_seq <= mm_state->seq)
 		goto done;
-	}
 
-	if (!mm_state->nr_walkers) {
-		VM_WARN_ON_ONCE(mm_state->head && mm_state->head != &mm_list->fifo);
+	if (!mm_state->head)
+		mm_state->head = &mm_list->fifo;
 
-		mm_state->head = mm_list->fifo.next;
+	if (mm_state->head == &mm_list->fifo)
 		first = true;
-	}
 
-	while (!mm && mm_state->head != &mm_list->fifo) {
-		mm = list_entry(mm_state->head, struct mm_struct, lru_gen.list);
-
+	do {
 		mm_state->head = mm_state->head->next;
+		if (mm_state->head == &mm_list->fifo) {
+			WRITE_ONCE(mm_state->seq, mm_state->seq + 1);
+			last = true;
+			break;
+		}
 
 		/* force scan for those added after the last iteration */
-		if (!mm_state->tail || mm_state->tail == &mm->lru_gen.list) {
-			mm_state->tail = mm_state->head;
+		if (!mm_state->tail || mm_state->tail == mm_state->head) {
+			mm_state->tail = mm_state->head->next;
 			walk->force_scan = true;
 		}
 
+		mm = list_entry(mm_state->head, struct mm_struct, lru_gen.list);
 		if (should_skip_mm(mm, walk))
 			mm = NULL;
-	}
-
-	if (mm_state->head == &mm_list->fifo)
-		WRITE_ONCE(mm_state->seq, mm_state->seq + 1);
+	} while (!mm);
 done:
-	if (*iter && !mm)
-		mm_state->nr_walkers--;
-	if (!*iter && mm)
-		mm_state->nr_walkers++;
-
-	if (mm_state->nr_walkers)
-		last = false;
-
 	if (*iter || last)
 		reset_mm_stats(lruvec, walk, last);
 
@@ -3551,9 +3569,9 @@ static bool iterate_mm_list_nowalk(struct lruvec *lruvec, unsigned long max_seq)
 
 	VM_WARN_ON_ONCE(mm_state->seq + 1 < max_seq);
 
-	if (max_seq > mm_state->seq && !mm_state->nr_walkers) {
-		VM_WARN_ON_ONCE(mm_state->head && mm_state->head != &mm_list->fifo);
-
+	if (max_seq > mm_state->seq) {
+		mm_state->head = NULL;
+		mm_state->tail = NULL;
 		WRITE_ONCE(mm_state->seq, mm_state->seq + 1);
 		reset_mm_stats(lruvec, NULL, true);
 		success = true;
@@ -3596,7 +3614,7 @@ struct ctrl_pos {
 static void read_ctrl_pos(struct lruvec *lruvec, int type, int tier, int gain,
 			  struct ctrl_pos *pos)
 {
-	struct lru_gen_struct *lrugen = &lruvec->lrugen;
+	struct lru_gen_folio *lrugen = &lruvec->lrugen;
 	int hist = lru_hist_from_seq(lrugen->min_seq[type]);
 
 	pos->refaulted = lrugen->avg_refaulted[type][tier] +
@@ -3611,7 +3629,7 @@ static void read_ctrl_pos(struct lruvec *lruvec, int type, int tier, int gain,
 static void reset_ctrl_pos(struct lruvec *lruvec, int type, bool carryover)
 {
 	int hist, tier;
-	struct lru_gen_struct *lrugen = &lruvec->lrugen;
+	struct lru_gen_folio *lrugen = &lruvec->lrugen;
 	bool clear = carryover ? NR_HIST_GENS == 1 : NR_HIST_GENS > 1;
 	unsigned long seq = carryover ? lrugen->min_seq[type] : lrugen->max_seq + 1;
 
@@ -3688,7 +3706,7 @@ static int folio_update_gen(struct folio *folio, int gen)
 static int folio_inc_gen(struct lruvec *lruvec, struct folio *folio, bool reclaiming)
 {
 	int type = folio_is_file_lru(folio);
-	struct lru_gen_struct *lrugen = &lruvec->lrugen;
+	struct lru_gen_folio *lrugen = &lruvec->lrugen;
 	int new_gen, old_gen = lru_gen_from_seq(lrugen->min_seq[type]);
 	unsigned long new_flags, old_flags = READ_ONCE(folio->flags);
 
@@ -3733,7 +3751,7 @@ static void update_batch_size(struct lru_gen_mm_walk *walk, struct folio *folio,
 static void reset_batch_size(struct lruvec *lruvec, struct lru_gen_mm_walk *walk)
 {
 	int gen, type, zone;
-	struct lru_gen_struct *lrugen = &lruvec->lrugen;
+	struct lru_gen_folio *lrugen = &lruvec->lrugen;
 
 	walk->batched = 0;
 
@@ -3766,7 +3784,10 @@ static int should_skip_vma(unsigned long start, unsigned long end, struct mm_wal
 	if (is_vm_hugetlb_page(vma))
 		return true;
 
-	if (vma->vm_flags & (VM_LOCKED | VM_SPECIAL | VM_SEQ_READ | VM_RAND_READ))
+	if (!vma_has_recency(vma))
+		return true;
+
+	if (vma->vm_flags & (VM_LOCKED | VM_SPECIAL))
 		return true;
 
 	if (vma == get_gate_vma(vma->vm_mm))
@@ -3961,8 +3982,8 @@ static bool walk_pte_range(pmd_t *pmd, unsigned long start, unsigned long end,
 }
 
 #if defined(CONFIG_TRANSPARENT_HUGEPAGE) || defined(CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG)
-static void walk_pmd_range_locked(pud_t *pud, unsigned long next, struct vm_area_struct *vma,
-				  struct mm_walk *args, unsigned long *bitmap, unsigned long *start)
+static void walk_pmd_range_locked(pud_t *pud, unsigned long addr, struct vm_area_struct *vma,
+				  struct mm_walk *args, unsigned long *bitmap, unsigned long *first)
 {
 	int i;
 	pmd_t *pmd;
@@ -3975,18 +3996,19 @@ static void walk_pmd_range_locked(pud_t *pud, unsigned long next, struct vm_area
 	VM_WARN_ON_ONCE(pud_leaf(*pud));
 
 	/* try to batch at most 1+MIN_LRU_BATCH+1 entries */
-	if (*start == -1) {
-		*start = next;
+	if (*first == -1) {
+		*first = addr;
+		bitmap_zero(bitmap, MIN_LRU_BATCH);
 		return;
 	}
 
-	i = next == -1 ? 0 : pmd_index(next) - pmd_index(*start);
+	i = addr == -1 ? 0 : pmd_index(addr) - pmd_index(*first);
 	if (i && i <= MIN_LRU_BATCH) {
 		__set_bit(i - 1, bitmap);
 		return;
 	}
 
-	pmd = pmd_offset(pud, *start);
+	pmd = pmd_offset(pud, *first);
 
 	ptl = pmd_lockptr(args->mm, pmd);
 	if (!spin_trylock(ptl))
@@ -3997,15 +4019,16 @@ static void walk_pmd_range_locked(pud_t *pud, unsigned long next, struct vm_area
 	do {
 		unsigned long pfn;
 		struct folio *folio;
-		unsigned long addr = i ? (*start & PMD_MASK) + i * PMD_SIZE : *start;
+
+		/* don't round down the first address */
+		addr = i ? (*first & PMD_MASK) + i * PMD_SIZE : *first;
 
 		pfn = get_pmd_pfn(pmd[i], vma, addr);
 		if (pfn == -1)
 			goto next;
 
 		if (!pmd_trans_huge(pmd[i])) {
-			if (arch_has_hw_nonleaf_pmd_young() &&
-			    get_cap(LRU_GEN_NONLEAF_YOUNG))
+			if (arch_has_hw_nonleaf_pmd_young() && get_cap(LRU_GEN_NONLEAF_YOUNG))
 				pmdp_test_and_clear_young(vma, addr, pmd + i);
 			goto next;
 		}
@@ -4034,12 +4057,11 @@ static void walk_pmd_range_locked(pud_t *pud, unsigned long next, struct vm_area
 	arch_leave_lazy_mmu_mode();
 	spin_unlock(ptl);
 done:
-	*start = -1;
-	bitmap_zero(bitmap, MIN_LRU_BATCH);
+	*first = -1;
 }
 #else
-static void walk_pmd_range_locked(pud_t *pud, unsigned long next, struct vm_area_struct *vma,
-				  struct mm_walk *args, unsigned long *bitmap, unsigned long *start)
+static void walk_pmd_range_locked(pud_t *pud, unsigned long addr, struct vm_area_struct *vma,
+				  struct mm_walk *args, unsigned long *bitmap, unsigned long *first)
 {
 }
 #endif
@@ -4052,9 +4074,9 @@ static void walk_pmd_range(pud_t *pud, unsigned long start, unsigned long end,
 	unsigned long next;
 	unsigned long addr;
 	struct vm_area_struct *vma;
-	unsigned long pos = -1;
+	unsigned long bitmap[BITS_TO_LONGS(MIN_LRU_BATCH)];
+	unsigned long first = -1;
 	struct lru_gen_mm_walk *walk = args->private;
-	unsigned long bitmap[BITS_TO_LONGS(MIN_LRU_BATCH)] = {};
 
 	VM_WARN_ON_ONCE(pud_leaf(*pud));
 
@@ -4096,18 +4118,17 @@ static void walk_pmd_range(pud_t *pud, unsigned long start, unsigned long end,
 			if (pfn < pgdat->node_start_pfn || pfn >= pgdat_end_pfn(pgdat))
 				continue;
 
-			walk_pmd_range_locked(pud, addr, vma, args, bitmap, &pos);
+			walk_pmd_range_locked(pud, addr, vma, args, bitmap, &first);
 			continue;
 		}
 #endif
 		walk->mm_stats[MM_NONLEAF_TOTAL]++;
 
-		if (arch_has_hw_nonleaf_pmd_young() &&
-		    get_cap(LRU_GEN_NONLEAF_YOUNG)) {
+		if (arch_has_hw_nonleaf_pmd_young() && get_cap(LRU_GEN_NONLEAF_YOUNG)) {
 			if (!pmd_young(val))
 				continue;
 
-			walk_pmd_range_locked(pud, addr, vma, args, bitmap, &pos);
+			walk_pmd_range_locked(pud, addr, vma, args, bitmap, &first);
 		}
 
 		if (!walk->force_scan && !test_bloom_filter(walk->lruvec, walk->max_seq, pmd + i))
@@ -4124,7 +4145,7 @@ static void walk_pmd_range(pud_t *pud, unsigned long start, unsigned long end,
 		update_bloom_filter(walk->lruvec, walk->max_seq + 1, pmd + i);
 	}
 
-	walk_pmd_range_locked(pud, -1, vma, args, bitmap, &pos);
+	walk_pmd_range_locked(pud, -1, vma, args, bitmap, &first);
 
 	if (i < PTRS_PER_PMD && get_next_vma(PUD_MASK, PMD_SIZE, args, &start, &end))
 		goto restart;
@@ -4153,10 +4174,6 @@ static int walk_pud_range(p4d_t *p4d, unsigned long start, unsigned long end,
 
 		walk_pmd_range(&val, addr, next, args);
 
-		/* a racy check to curtail the waiting time */
-		if (wq_has_sleeper(&walk->lruvec->mm_state.wait))
-			return 1;
-
 		if (need_resched() || walk->batched >= MAX_LRU_BATCH) {
 			end = (addr | ~PUD_MASK) + 1;
 			goto done;
@@ -4189,8 +4206,14 @@ static void walk_mm(struct lruvec *lruvec, struct mm_struct *mm, struct lru_gen_
 	walk->next_addr = FIRST_USER_ADDRESS;
 
 	do {
+		DEFINE_MAX_SEQ(lruvec);
+
 		err = -EBUSY;
 
+		/* another thread might have called inc_max_seq() */
+		if (walk->max_seq != max_seq)
+			break;
+
 		/* folio_update_gen() requires stable folio_memcg() */
 		if (!mem_cgroup_trylock_pages(memcg))
 			break;
@@ -4214,7 +4237,7 @@ static void walk_mm(struct lruvec *lruvec, struct mm_struct *mm, struct lru_gen_
 	} while (err == -EAGAIN);
 }
 
-static struct lru_gen_mm_walk *set_mm_walk(struct pglist_data *pgdat)
+static struct lru_gen_mm_walk *set_mm_walk(struct pglist_data *pgdat, bool force_alloc)
 {
 	struct lru_gen_mm_walk *walk = current->reclaim_state->mm_walk;
 
@@ -4222,7 +4245,7 @@ static struct lru_gen_mm_walk *set_mm_walk(struct pglist_data *pgdat)
 		VM_WARN_ON_ONCE(walk);
 
 		walk = &pgdat->mm_walk;
-	} else if (!pgdat && !walk) {
+	} else if (!walk && force_alloc) {
 		VM_WARN_ON_ONCE(current_is_kswapd());
 
 		walk = kzalloc(sizeof(*walk), __GFP_HIGH | __GFP_NOMEMALLOC | __GFP_NOWARN);
@@ -4250,7 +4273,7 @@ static bool inc_min_seq(struct lruvec *lruvec, int type, bool can_swap)
 {
 	int zone;
 	int remaining = MAX_LRU_BATCH;
-	struct lru_gen_struct *lrugen = &lruvec->lrugen;
+	struct lru_gen_folio *lrugen = &lruvec->lrugen;
 	int new_gen, old_gen = lru_gen_from_seq(lrugen->min_seq[type]);
 
 	if (type == LRU_GEN_ANON && !can_swap)
@@ -4258,7 +4281,7 @@ static bool inc_min_seq(struct lruvec *lruvec, int type, bool can_swap)
 
 	/* prevent cold/hot inversion if force_scan is true */
 	for (zone = 0; zone < MAX_NR_ZONES; zone++) {
-		struct list_head *head = &lrugen->lists[old_gen][type][zone];
+		struct list_head *head = &lrugen->folios[old_gen][type][zone];
 
 		while (!list_empty(head)) {
 			struct folio *folio = lru_to_folio(head);
@@ -4269,7 +4292,7 @@ static bool inc_min_seq(struct lruvec *lruvec, int type, bool can_swap)
 			VM_WARN_ON_ONCE_FOLIO(folio_zonenum(folio) != zone, folio);
 
 			new_gen = folio_inc_gen(lruvec, folio, false);
-			list_move_tail(&folio->lru, &lrugen->lists[new_gen][type][zone]);
+			list_move_tail(&folio->lru, &lrugen->folios[new_gen][type][zone]);
 
 			if (!--remaining)
 				return false;
@@ -4286,7 +4309,7 @@ static bool try_to_inc_min_seq(struct lruvec *lruvec, bool can_swap)
 {
 	int gen, type, zone;
 	bool success = false;
-	struct lru_gen_struct *lrugen = &lruvec->lrugen;
+	struct lru_gen_folio *lrugen = &lruvec->lrugen;
 	DEFINE_MIN_SEQ(lruvec);
 
 	VM_WARN_ON_ONCE(!seq_is_valid(lruvec));
@@ -4297,7 +4320,7 @@ static bool try_to_inc_min_seq(struct lruvec *lruvec, bool can_swap)
 			gen = lru_gen_from_seq(min_seq[type]);
 
 			for (zone = 0; zone < MAX_NR_ZONES; zone++) {
-				if (!list_empty(&lrugen->lists[gen][type][zone]))
+				if (!list_empty(&lrugen->folios[gen][type][zone]))
 					goto next;
 			}
 
@@ -4307,7 +4330,7 @@ static bool try_to_inc_min_seq(struct lruvec *lruvec, bool can_swap)
 		;
 	}
 
-	/* see the comment on lru_gen_struct */
+	/* see the comment on lru_gen_folio */
 	if (can_swap) {
 		min_seq[LRU_GEN_ANON] = min(min_seq[LRU_GEN_ANON], min_seq[LRU_GEN_FILE]);
 		min_seq[LRU_GEN_FILE] = max(min_seq[LRU_GEN_ANON], lrugen->min_seq[LRU_GEN_FILE]);
@@ -4329,7 +4352,7 @@ static void inc_max_seq(struct lruvec *lruvec, bool can_swap, bool force_scan)
 {
 	int prev, next;
 	int type, zone;
-	struct lru_gen_struct *lrugen = &lruvec->lrugen;
+	struct lru_gen_folio *lrugen = &lruvec->lrugen;
 
 	spin_lock_irq(&lruvec->lru_lock);
 
@@ -4387,7 +4410,7 @@ static bool try_to_inc_max_seq(struct lruvec *lruvec, unsigned long max_seq,
 	bool success;
 	struct lru_gen_mm_walk *walk;
 	struct mm_struct *mm = NULL;
-	struct lru_gen_struct *lrugen = &lruvec->lrugen;
+	struct lru_gen_folio *lrugen = &lruvec->lrugen;
 
 	VM_WARN_ON_ONCE(max_seq > READ_ONCE(lrugen->max_seq));
 
@@ -4403,12 +4426,12 @@ static bool try_to_inc_max_seq(struct lruvec *lruvec, unsigned long max_seq,
 	 * handful of PTEs. Spreading the work out over a period of time usually
 	 * is less efficient, but it avoids bursty page faults.
 	 */
-	if (!force_scan && !(arch_has_hw_pte_young() && get_cap(LRU_GEN_MM_WALK))) {
+	if (!arch_has_hw_pte_young() || !get_cap(LRU_GEN_MM_WALK)) {
 		success = iterate_mm_list_nowalk(lruvec, max_seq);
 		goto done;
 	}
 
-	walk = set_mm_walk(NULL);
+	walk = set_mm_walk(NULL, true);
 	if (!walk) {
 		success = iterate_mm_list_nowalk(lruvec, max_seq);
 		goto done;
@@ -4423,119 +4446,64 @@ static bool try_to_inc_max_seq(struct lruvec *lruvec, unsigned long max_seq,
 		success = iterate_mm_list(lruvec, walk, &mm);
 		if (mm)
 			walk_mm(lruvec, mm, walk);
-
-		cond_resched();
 	} while (mm);
 done:
-	if (!success) {
-		if (sc->priority <= DEF_PRIORITY - 2)
-			wait_event_killable(lruvec->mm_state.wait,
-					    max_seq < READ_ONCE(lrugen->max_seq));
+	if (success)
+		inc_max_seq(lruvec, can_swap, force_scan);
 
-		return max_seq < READ_ONCE(lrugen->max_seq);
-	}
-
-	VM_WARN_ON_ONCE(max_seq != READ_ONCE(lrugen->max_seq));
-
-	inc_max_seq(lruvec, can_swap, force_scan);
-	/* either this sees any waiters or they will see updated max_seq */
-	if (wq_has_sleeper(&lruvec->mm_state.wait))
-		wake_up_all(&lruvec->mm_state.wait);
-
-	return true;
+	return success;
 }
 
-static bool should_run_aging(struct lruvec *lruvec, unsigned long max_seq, unsigned long *min_seq,
-			     struct scan_control *sc, bool can_swap, unsigned long *nr_to_scan)
+/******************************************************************************
+ *                          working set protection
+ ******************************************************************************/
+
+static bool lruvec_is_sizable(struct lruvec *lruvec, struct scan_control *sc)
 {
 	int gen, type, zone;
-	unsigned long old = 0;
-	unsigned long young = 0;
 	unsigned long total = 0;
-	struct lru_gen_struct *lrugen = &lruvec->lrugen;
+	bool can_swap = get_swappiness(lruvec, sc);
+	struct lru_gen_folio *lrugen = &lruvec->lrugen;
 	struct mem_cgroup *memcg = lruvec_memcg(lruvec);
+	DEFINE_MAX_SEQ(lruvec);
+	DEFINE_MIN_SEQ(lruvec);
 
 	for (type = !can_swap; type < ANON_AND_FILE; type++) {
 		unsigned long seq;
 
 		for (seq = min_seq[type]; seq <= max_seq; seq++) {
-			unsigned long size = 0;
-
 			gen = lru_gen_from_seq(seq);
 
 			for (zone = 0; zone < MAX_NR_ZONES; zone++)
-				size += max(READ_ONCE(lrugen->nr_pages[gen][type][zone]), 0L);
-
-			total += size;
-			if (seq == max_seq)
-				young += size;
-			else if (seq + MIN_NR_GENS == max_seq)
-				old += size;
+				total += max(READ_ONCE(lrugen->nr_pages[gen][type][zone]), 0L);
 		}
 	}
 
-	/* try to scrape all its memory if this memcg was deleted */
-	*nr_to_scan = mem_cgroup_online(memcg) ? (total >> sc->priority) : total;
-
-	/*
-	 * The aging tries to be lazy to reduce the overhead, while the eviction
-	 * stalls when the number of generations reaches MIN_NR_GENS. Hence, the
-	 * ideal number of generations is MIN_NR_GENS+1.
-	 */
-	if (min_seq[!can_swap] + MIN_NR_GENS > max_seq)
-		return true;
-	if (min_seq[!can_swap] + MIN_NR_GENS < max_seq)
-		return false;
-
-	/*
-	 * It's also ideal to spread pages out evenly, i.e., 1/(MIN_NR_GENS+1)
-	 * of the total number of pages for each generation. A reasonable range
-	 * for this average portion is [1/MIN_NR_GENS, 1/(MIN_NR_GENS+2)]. The
-	 * aging cares about the upper bound of hot pages, while the eviction
-	 * cares about the lower bound of cold pages.
-	 */
-	if (young * MIN_NR_GENS > total)
-		return true;
-	if (old * (MIN_NR_GENS + 2) < total)
-		return true;
-
-	return false;
+	/* whether the size is big enough to be helpful */
+	return mem_cgroup_online(memcg) ? (total >> sc->priority) : total;
 }
 
-static bool age_lruvec(struct lruvec *lruvec, struct scan_control *sc, unsigned long min_ttl)
+static bool lruvec_is_reclaimable(struct lruvec *lruvec, struct scan_control *sc,
+				  unsigned long min_ttl)
 {
-	bool need_aging;
-	unsigned long nr_to_scan;
-	int swappiness = get_swappiness(lruvec, sc);
+	int gen;
+	unsigned long birth;
 	struct mem_cgroup *memcg = lruvec_memcg(lruvec);
-	DEFINE_MAX_SEQ(lruvec);
 	DEFINE_MIN_SEQ(lruvec);
 
-	VM_WARN_ON_ONCE(sc->memcg_low_reclaim);
+	/* see the comment on lru_gen_folio */
+	gen = lru_gen_from_seq(min_seq[LRU_GEN_FILE]);
+	birth = READ_ONCE(lruvec->lrugen.timestamps[gen]);
+
+	if (time_is_after_jiffies(birth + min_ttl))
+		return false;
+
+	if (!lruvec_is_sizable(lruvec, sc))
+		return false;
 
 	mem_cgroup_calculate_protection(NULL, memcg);
 
-	if (mem_cgroup_below_min(memcg))
-		return false;
-
-	need_aging = should_run_aging(lruvec, max_seq, min_seq, sc, swappiness, &nr_to_scan);
-
-	if (min_ttl) {
-		int gen = lru_gen_from_seq(min_seq[LRU_GEN_FILE]);
-		unsigned long birth = READ_ONCE(lruvec->lrugen.timestamps[gen]);
-
-		if (time_is_after_jiffies(birth + min_ttl))
-			return false;
-
-		/* the size is likely too small to be helpful */
-		if (!nr_to_scan && sc->priority != DEF_PRIORITY)
-			return false;
-	}
-
-	if (need_aging)
-		try_to_inc_max_seq(lruvec, max_seq, sc, swappiness, false);
-
-	return true;
+	return !mem_cgroup_below_min(memcg);
 }
 
 /* to protect the working set of the last N jiffies */
@@ -4544,46 +4512,30 @@ static unsigned long lru_gen_min_ttl __read_mostly;
 static void lru_gen_age_node(struct pglist_data *pgdat, struct scan_control *sc)
 {
 	struct mem_cgroup *memcg;
-	bool success = false;
 	unsigned long min_ttl = READ_ONCE(lru_gen_min_ttl);
 
 	VM_WARN_ON_ONCE(!current_is_kswapd());
 
-	sc->last_reclaimed = sc->nr_reclaimed;
-
-	/*
-	 * To reduce the chance of going into the aging path, which can be
-	 * costly, optimistically skip it if the flag below was cleared in the
-	 * eviction path. This improves the overall performance when multiple
-	 * memcgs are available.
-	 */
-	if (!sc->memcgs_need_aging) {
-		sc->memcgs_need_aging = true;
+	/* check the order to exclude compaction-induced reclaim */
+	if (!min_ttl || sc->order || sc->priority == DEF_PRIORITY)
 		return;
-	}
-
-	set_mm_walk(pgdat);
 
 	memcg = mem_cgroup_iter(NULL, NULL, NULL);
 	do {
 		struct lruvec *lruvec = mem_cgroup_lruvec(memcg, pgdat);
 
-		if (age_lruvec(lruvec, sc, min_ttl))
-			success = true;
+		if (lruvec_is_reclaimable(lruvec, sc, min_ttl)) {
+			mem_cgroup_iter_break(NULL, memcg);
+			return;
+		}
 
 		cond_resched();
 	} while ((memcg = mem_cgroup_iter(NULL, memcg, NULL)));
 
-	clear_mm_walk();
-
-	/* check the order to exclude compaction-induced reclaim */
-	if (success || !min_ttl || sc->order)
-		return;
-
 	/*
 	 * The main goal is to OOM kill if every generation from all memcgs is
 	 * younger than min_ttl. However, another possibility is all memcgs are
-	 * either below min or empty.
+	 * either too small or below min.
 	 */
 	if (mutex_trylock(&oom_lock)) {
 		struct oom_control oc = {
@@ -4596,6 +4548,10 @@ static void lru_gen_age_node(struct pglist_data *pgdat, struct scan_control *sc)
 	}
 }
 
+/******************************************************************************
+ *                          rmap/PT walk feedback
+ ******************************************************************************/
+
 /*
  * This function exploits spatial locality when shrink_folio_list() walks the
  * rmap. It scans the adjacent PTEs of a young PTE and promotes hot pages. If
@@ -4606,13 +4562,12 @@ static void lru_gen_age_node(struct pglist_data *pgdat, struct scan_control *sc)
 void lru_gen_look_around(struct page_vma_mapped_walk *pvmw)
 {
 	int i;
-	pte_t *pte;
 	unsigned long start;
 	unsigned long end;
-	unsigned long addr;
 	struct lru_gen_mm_walk *walk;
 	int young = 0;
-	unsigned long bitmap[BITS_TO_LONGS(MIN_LRU_BATCH)] = {};
+	pte_t *pte = pvmw->pte;
+	unsigned long addr = pvmw->address;
 	struct folio *folio = pfn_folio(pvmw->pfn);
 	struct mem_cgroup *memcg = folio_memcg(folio);
 	struct pglist_data *pgdat = folio_pgdat(folio);
@@ -4629,25 +4584,28 @@ void lru_gen_look_around(struct page_vma_mapped_walk *pvmw)
 	/* avoid taking the LRU lock under the PTL when possible */
 	walk = current->reclaim_state ? current->reclaim_state->mm_walk : NULL;
 
-	start = max(pvmw->address & PMD_MASK, pvmw->vma->vm_start);
-	end = min(pvmw->address | ~PMD_MASK, pvmw->vma->vm_end - 1) + 1;
+	start = max(addr & PMD_MASK, pvmw->vma->vm_start);
+	end = min(addr | ~PMD_MASK, pvmw->vma->vm_end - 1) + 1;
 
 	if (end - start > MIN_LRU_BATCH * PAGE_SIZE) {
-		if (pvmw->address - start < MIN_LRU_BATCH * PAGE_SIZE / 2)
+		if (addr - start < MIN_LRU_BATCH * PAGE_SIZE / 2)
 			end = start + MIN_LRU_BATCH * PAGE_SIZE;
-		else if (end - pvmw->address < MIN_LRU_BATCH * PAGE_SIZE / 2)
+		else if (end - addr < MIN_LRU_BATCH * PAGE_SIZE / 2)
 			start = end - MIN_LRU_BATCH * PAGE_SIZE;
 		else {
-			start = pvmw->address - MIN_LRU_BATCH * PAGE_SIZE / 2;
-			end = pvmw->address + MIN_LRU_BATCH * PAGE_SIZE / 2;
+			start = addr - MIN_LRU_BATCH * PAGE_SIZE / 2;
+			end = addr + MIN_LRU_BATCH * PAGE_SIZE / 2;
 		}
 	}
 
-	pte = pvmw->pte - (pvmw->address - start) / PAGE_SIZE;
+	/* folio_update_gen() requires stable folio_memcg() */
+	if (!mem_cgroup_trylock_pages(memcg))
+		return;
 
-	rcu_read_lock();
 	arch_enter_lazy_mmu_mode();
 
+	pte -= (addr - start) / PAGE_SIZE;
+
 	for (i = 0, addr = start; addr != end; i++, addr += PAGE_SIZE) {
 		unsigned long pfn;
 
@@ -4672,59 +4630,172 @@ void lru_gen_look_around(struct page_vma_mapped_walk *pvmw)
 		      !folio_test_swapcache(folio)))
 			folio_mark_dirty(folio);
 
+		if (walk) {
+			old_gen = folio_update_gen(folio, new_gen);
+			if (old_gen >= 0 && old_gen != new_gen)
+				update_batch_size(walk, folio, old_gen, new_gen);
+
+			continue;
+		}
+
 		old_gen = folio_lru_gen(folio);
 		if (old_gen < 0)
 			folio_set_referenced(folio);
 		else if (old_gen != new_gen)
-			__set_bit(i, bitmap);
+			folio_activate(folio);
 	}
 
 	arch_leave_lazy_mmu_mode();
-	rcu_read_unlock();
+	mem_cgroup_unlock_pages();
 
 	/* feedback from rmap walkers to page table walkers */
 	if (suitable_to_scan(i, young))
 		update_bloom_filter(lruvec, max_seq, pvmw->pmd);
-
-	if (!walk && bitmap_weight(bitmap, MIN_LRU_BATCH) < PAGEVEC_SIZE) {
-		for_each_set_bit(i, bitmap, MIN_LRU_BATCH) {
-			folio = pfn_folio(pte_pfn(pte[i]));
-			folio_activate(folio);
-		}
-		return;
-	}
-
-	/* folio_update_gen() requires stable folio_memcg() */
-	if (!mem_cgroup_trylock_pages(memcg))
-		return;
-
-	if (!walk) {
-		spin_lock_irq(&lruvec->lru_lock);
-		new_gen = lru_gen_from_seq(lruvec->lrugen.max_seq);
-	}
-
-	for_each_set_bit(i, bitmap, MIN_LRU_BATCH) {
-		folio = pfn_folio(pte_pfn(pte[i]));
-		if (folio_memcg_rcu(folio) != memcg)
-			continue;
-
-		old_gen = folio_update_gen(folio, new_gen);
-		if (old_gen < 0 || old_gen == new_gen)
-			continue;
-
-		if (walk)
-			update_batch_size(walk, folio, old_gen, new_gen);
-		else
-			lru_gen_update_size(lruvec, folio, old_gen, new_gen);
-	}
-
-	if (!walk)
-		spin_unlock_irq(&lruvec->lru_lock);
-
-	mem_cgroup_unlock_pages();
 }
 
 /******************************************************************************
+ *                          memcg LRU
+ ******************************************************************************/
+
+/* see the comment on MEMCG_NR_GENS */
+enum {
+	MEMCG_LRU_NOP,
+	MEMCG_LRU_HEAD,
+	MEMCG_LRU_TAIL,
+	MEMCG_LRU_OLD,
+	MEMCG_LRU_YOUNG,
+};
+
+#ifdef CONFIG_MEMCG
+
+static int lru_gen_memcg_seg(struct lruvec *lruvec)
+{
+	return READ_ONCE(lruvec->lrugen.seg);
+}
+
+static void lru_gen_rotate_memcg(struct lruvec *lruvec, int op)
+{
+	int seg;
+	int old, new;
+	int bin = get_random_u32_below(MEMCG_NR_BINS);
+	struct pglist_data *pgdat = lruvec_pgdat(lruvec);
+
+	spin_lock(&pgdat->memcg_lru.lock);
+
+	VM_WARN_ON_ONCE(hlist_nulls_unhashed(&lruvec->lrugen.list));
+
+	seg = 0;
+	new = old = lruvec->lrugen.gen;
+
+	/* see the comment on MEMCG_NR_GENS */
+	if (op == MEMCG_LRU_HEAD)
+		seg = MEMCG_LRU_HEAD;
+	else if (op == MEMCG_LRU_TAIL)
+		seg = MEMCG_LRU_TAIL;
+	else if (op == MEMCG_LRU_OLD)
+		new = get_memcg_gen(pgdat->memcg_lru.seq);
+	else if (op == MEMCG_LRU_YOUNG)
+		new = get_memcg_gen(pgdat->memcg_lru.seq + 1);
+	else
+		VM_WARN_ON_ONCE(true);
+
+	hlist_nulls_del_rcu(&lruvec->lrugen.list);
+
+	if (op == MEMCG_LRU_HEAD || op == MEMCG_LRU_OLD)
+		hlist_nulls_add_head_rcu(&lruvec->lrugen.list, &pgdat->memcg_lru.fifo[new][bin]);
+	else
+		hlist_nulls_add_tail_rcu(&lruvec->lrugen.list, &pgdat->memcg_lru.fifo[new][bin]);
+
+	pgdat->memcg_lru.nr_memcgs[old]--;
+	pgdat->memcg_lru.nr_memcgs[new]++;
+
+	lruvec->lrugen.gen = new;
+	WRITE_ONCE(lruvec->lrugen.seg, seg);
+
+	if (!pgdat->memcg_lru.nr_memcgs[old] && old == get_memcg_gen(pgdat->memcg_lru.seq))
+		WRITE_ONCE(pgdat->memcg_lru.seq, pgdat->memcg_lru.seq + 1);
+
+	spin_unlock(&pgdat->memcg_lru.lock);
+}
+
+void lru_gen_online_memcg(struct mem_cgroup *memcg)
+{
+	int gen;
+	int nid;
+	int bin = get_random_u32_below(MEMCG_NR_BINS);
+
+	for_each_node(nid) {
+		struct pglist_data *pgdat = NODE_DATA(nid);
+		struct lruvec *lruvec = get_lruvec(memcg, nid);
+
+		spin_lock(&pgdat->memcg_lru.lock);
+
+		VM_WARN_ON_ONCE(!hlist_nulls_unhashed(&lruvec->lrugen.list));
+
+		gen = get_memcg_gen(pgdat->memcg_lru.seq);
+
+		hlist_nulls_add_tail_rcu(&lruvec->lrugen.list, &pgdat->memcg_lru.fifo[gen][bin]);
+		pgdat->memcg_lru.nr_memcgs[gen]++;
+
+		lruvec->lrugen.gen = gen;
+
+		spin_unlock(&pgdat->memcg_lru.lock);
+	}
+}
+
+void lru_gen_offline_memcg(struct mem_cgroup *memcg)
+{
+	int nid;
+
+	for_each_node(nid) {
+		struct lruvec *lruvec = get_lruvec(memcg, nid);
+
+		lru_gen_rotate_memcg(lruvec, MEMCG_LRU_OLD);
+	}
+}
+
+void lru_gen_release_memcg(struct mem_cgroup *memcg)
+{
+	int gen;
+	int nid;
+
+	for_each_node(nid) {
+		struct pglist_data *pgdat = NODE_DATA(nid);
+		struct lruvec *lruvec = get_lruvec(memcg, nid);
+
+		spin_lock(&pgdat->memcg_lru.lock);
+
+		VM_WARN_ON_ONCE(hlist_nulls_unhashed(&lruvec->lrugen.list));
+
+		gen = lruvec->lrugen.gen;
+
+		hlist_nulls_del_rcu(&lruvec->lrugen.list);
+		pgdat->memcg_lru.nr_memcgs[gen]--;
+
+		if (!pgdat->memcg_lru.nr_memcgs[gen] && gen == get_memcg_gen(pgdat->memcg_lru.seq))
+			WRITE_ONCE(pgdat->memcg_lru.seq, pgdat->memcg_lru.seq + 1);
+
+		spin_unlock(&pgdat->memcg_lru.lock);
+	}
+}
+
+void lru_gen_soft_reclaim(struct lruvec *lruvec)
+{
+	/* see the comment on MEMCG_NR_GENS */
+	if (lru_gen_memcg_seg(lruvec) != MEMCG_LRU_HEAD)
+		lru_gen_rotate_memcg(lruvec, MEMCG_LRU_HEAD);
+}
+
+#else /* !CONFIG_MEMCG */
+
+static int lru_gen_memcg_seg(struct lruvec *lruvec)
+{
+	return 0;
+}
+
+#endif
+
+/******************************************************************************
  *                          the eviction
  ******************************************************************************/
 
@@ -4737,7 +4808,7 @@ static bool sort_folio(struct lruvec *lruvec, struct folio *folio, int tier_idx)
 	int delta = folio_nr_pages(folio);
 	int refs = folio_lru_refs(folio);
 	int tier = lru_tier_from_refs(refs);
-	struct lru_gen_struct *lrugen = &lruvec->lrugen;
+	struct lru_gen_folio *lrugen = &lruvec->lrugen;
 
 	VM_WARN_ON_ONCE_FOLIO(gen >= MAX_NR_GENS, folio);
 
@@ -4762,7 +4833,7 @@ static bool sort_folio(struct lruvec *lruvec, struct folio *folio, int tier_idx)
 
 	/* promoted */
 	if (gen != lru_gen_from_seq(lrugen->min_seq[type])) {
-		list_move(&folio->lru, &lrugen->lists[gen][type][zone]);
+		list_move(&folio->lru, &lrugen->folios[gen][type][zone]);
 		return true;
 	}
 
@@ -4771,11 +4842,10 @@ static bool sort_folio(struct lruvec *lruvec, struct folio *folio, int tier_idx)
 		int hist = lru_hist_from_seq(lrugen->min_seq[type]);
 
 		gen = folio_inc_gen(lruvec, folio, false);
-		list_move_tail(&folio->lru, &lrugen->lists[gen][type][zone]);
+		list_move_tail(&folio->lru, &lrugen->folios[gen][type][zone]);
 
 		WRITE_ONCE(lrugen->protected[hist][type][tier - 1],
 			   lrugen->protected[hist][type][tier - 1] + delta);
-		__mod_lruvec_state(lruvec, WORKINGSET_ACTIVATE_BASE + type, delta);
 		return true;
 	}
 
@@ -4783,7 +4853,7 @@ static bool sort_folio(struct lruvec *lruvec, struct folio *folio, int tier_idx)
 	if (folio_test_locked(folio) || folio_test_writeback(folio) ||
 	    (type == LRU_GEN_FILE && folio_test_dirty(folio))) {
 		gen = folio_inc_gen(lruvec, folio, true);
-		list_move(&folio->lru, &lrugen->lists[gen][type][zone]);
+		list_move(&folio->lru, &lrugen->folios[gen][type][zone]);
 		return true;
 	}
 
@@ -4794,12 +4864,8 @@ static bool isolate_folio(struct lruvec *lruvec, struct folio *folio, struct sca
 {
 	bool success;
 
-	/* unmapping inhibited */
-	if (!sc->may_unmap && folio_mapped(folio))
-		return false;
-
 	/* swapping inhibited */
-	if (!(sc->may_writepage && (sc->gfp_mask & __GFP_IO)) &&
+	if (!(sc->gfp_mask & __GFP_IO) &&
 	    (folio_test_dirty(folio) ||
 	     (folio_test_anon(folio) && !folio_test_swapcache(folio))))
 		return false;
@@ -4837,7 +4903,7 @@ static int scan_folios(struct lruvec *lruvec, struct scan_control *sc,
 	int scanned = 0;
 	int isolated = 0;
 	int remaining = MAX_LRU_BATCH;
-	struct lru_gen_struct *lrugen = &lruvec->lrugen;
+	struct lru_gen_folio *lrugen = &lruvec->lrugen;
 	struct mem_cgroup *memcg = lruvec_memcg(lruvec);
 
 	VM_WARN_ON_ONCE(!list_empty(list));
@@ -4850,7 +4916,7 @@ static int scan_folios(struct lruvec *lruvec, struct scan_control *sc,
 	for (zone = sc->reclaim_idx; zone >= 0; zone--) {
 		LIST_HEAD(moved);
 		int skipped = 0;
-		struct list_head *head = &lrugen->lists[gen][type][zone];
+		struct list_head *head = &lrugen->folios[gen][type][zone];
 
 		while (!list_empty(head)) {
 			struct folio *folio = lru_to_folio(head);
@@ -4896,9 +4962,8 @@ static int scan_folios(struct lruvec *lruvec, struct scan_control *sc,
 	__count_vm_events(PGSCAN_ANON + type, isolated);
 
 	/*
-	 * There might not be eligible pages due to reclaim_idx, may_unmap and
-	 * may_writepage. Check the remaining to prevent livelock if it's not
-	 * making progress.
+	 * There might not be eligible folios due to reclaim_idx. Check the
+	 * remaining to prevent livelock if it's not making progress.
 	 */
 	return isolated || !remaining ? scanned : 0;
 }
@@ -4993,8 +5058,7 @@ static int isolate_folios(struct lruvec *lruvec, struct scan_control *sc, int sw
 	return scanned;
 }
 
-static int evict_folios(struct lruvec *lruvec, struct scan_control *sc, int swappiness,
-			bool *need_swapping)
+static int evict_folios(struct lruvec *lruvec, struct scan_control *sc, int swappiness)
 {
 	int type;
 	int scanned;
@@ -5083,161 +5147,357 @@ static int evict_folios(struct lruvec *lruvec, struct scan_control *sc, int swap
 		goto retry;
 	}
 
-	if (need_swapping && type == LRU_GEN_ANON)
-		*need_swapping = true;
-
 	return scanned;
 }
 
+static bool should_run_aging(struct lruvec *lruvec, unsigned long max_seq,
+			     struct scan_control *sc, bool can_swap, unsigned long *nr_to_scan)
+{
+	int gen, type, zone;
+	unsigned long old = 0;
+	unsigned long young = 0;
+	unsigned long total = 0;
+	struct lru_gen_folio *lrugen = &lruvec->lrugen;
+	struct mem_cgroup *memcg = lruvec_memcg(lruvec);
+	DEFINE_MIN_SEQ(lruvec);
+
+	/* whether this lruvec is completely out of cold folios */
+	if (min_seq[!can_swap] + MIN_NR_GENS > max_seq) {
+		*nr_to_scan = 0;
+		return true;
+	}
+
+	for (type = !can_swap; type < ANON_AND_FILE; type++) {
+		unsigned long seq;
+
+		for (seq = min_seq[type]; seq <= max_seq; seq++) {
+			unsigned long size = 0;
+
+			gen = lru_gen_from_seq(seq);
+
+			for (zone = 0; zone < MAX_NR_ZONES; zone++)
+				size += max(READ_ONCE(lrugen->nr_pages[gen][type][zone]), 0L);
+
+			total += size;
+			if (seq == max_seq)
+				young += size;
+			else if (seq + MIN_NR_GENS == max_seq)
+				old += size;
+		}
+	}
+
+	/* try to scrape all its memory if this memcg was deleted */
+	*nr_to_scan = mem_cgroup_online(memcg) ? (total >> sc->priority) : total;
+
+	/*
+	 * The aging tries to be lazy to reduce the overhead, while the eviction
+	 * stalls when the number of generations reaches MIN_NR_GENS. Hence, the
+	 * ideal number of generations is MIN_NR_GENS+1.
+	 */
+	if (min_seq[!can_swap] + MIN_NR_GENS < max_seq)
+		return false;
+
+	/*
+	 * It's also ideal to spread pages out evenly, i.e., 1/(MIN_NR_GENS+1)
+	 * of the total number of pages for each generation. A reasonable range
+	 * for this average portion is [1/MIN_NR_GENS, 1/(MIN_NR_GENS+2)]. The
+	 * aging cares about the upper bound of hot pages, while the eviction
+	 * cares about the lower bound of cold pages.
+	 */
+	if (young * MIN_NR_GENS > total)
+		return true;
+	if (old * (MIN_NR_GENS + 2) < total)
+		return true;
+
+	return false;
+}
+
 /*
  * For future optimizations:
  * 1. Defer try_to_inc_max_seq() to workqueues to reduce latency for memcg
  *    reclaim.
  */
-static unsigned long get_nr_to_scan(struct lruvec *lruvec, struct scan_control *sc,
-				    bool can_swap, bool *need_aging)
+static long get_nr_to_scan(struct lruvec *lruvec, struct scan_control *sc, bool can_swap)
 {
 	unsigned long nr_to_scan;
 	struct mem_cgroup *memcg = lruvec_memcg(lruvec);
 	DEFINE_MAX_SEQ(lruvec);
-	DEFINE_MIN_SEQ(lruvec);
 
-	if (mem_cgroup_below_min(memcg) ||
-	    (mem_cgroup_below_low(memcg) && !sc->memcg_low_reclaim))
+	if (mem_cgroup_below_min(memcg))
 		return 0;
 
-	*need_aging = should_run_aging(lruvec, max_seq, min_seq, sc, can_swap, &nr_to_scan);
-	if (!*need_aging)
+	if (!should_run_aging(lruvec, max_seq, sc, can_swap, &nr_to_scan))
 		return nr_to_scan;
 
 	/* skip the aging path at the default priority */
 	if (sc->priority == DEF_PRIORITY)
-		goto done;
-
-	/* leave the work to lru_gen_age_node() */
-	if (current_is_kswapd())
-		return 0;
-
-	if (try_to_inc_max_seq(lruvec, max_seq, sc, can_swap, false))
 		return nr_to_scan;
-done:
-	return min_seq[!can_swap] + MIN_NR_GENS <= max_seq ? nr_to_scan : 0;
+
+	/* skip this lruvec as it's low on cold folios */
+	return try_to_inc_max_seq(lruvec, max_seq, sc, can_swap, false) ? -1 : 0;
 }
 
-static bool should_abort_scan(struct lruvec *lruvec, unsigned long seq,
-			      struct scan_control *sc, bool need_swapping)
+static unsigned long get_nr_to_reclaim(struct scan_control *sc)
 {
-	int i;
-	DEFINE_MAX_SEQ(lruvec);
+	/* don't abort memcg reclaim to ensure fairness */
+	if (!global_reclaim(sc))
+		return -1;
 
-	if (!current_is_kswapd()) {
-		/* age each memcg at most once to ensure fairness */
-		if (max_seq - seq > 1)
-			return true;
-
-		/* over-swapping can increase allocation latency */
-		if (sc->nr_reclaimed >= sc->nr_to_reclaim && need_swapping)
-			return true;
-
-		/* give this thread a chance to exit and free its memory */
-		if (fatal_signal_pending(current)) {
-			sc->nr_reclaimed += MIN_LRU_BATCH;
-			return true;
-		}
-
-		if (cgroup_reclaim(sc))
-			return false;
-	} else if (sc->nr_reclaimed - sc->last_reclaimed < sc->nr_to_reclaim)
-		return false;
-
-	/* keep scanning at low priorities to ensure fairness */
-	if (sc->priority > DEF_PRIORITY - 2)
-		return false;
-
-	/*
-	 * A minimum amount of work was done under global memory pressure. For
-	 * kswapd, it may be overshooting. For direct reclaim, the allocation
-	 * may succeed if all suitable zones are somewhat safe. In either case,
-	 * it's better to stop now, and restart later if necessary.
-	 */
-	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;
-
-		wmark = current_is_kswapd() ? high_wmark_pages(zone) : low_wmark_pages(zone);
-		if (wmark > zone_page_state(zone, NR_FREE_PAGES))
-			return false;
-	}
-
-	sc->nr_reclaimed += MIN_LRU_BATCH;
-
-	return true;
+	return max(sc->nr_to_reclaim, compact_gap(sc->order));
 }
 
-static void lru_gen_shrink_lruvec(struct lruvec *lruvec, struct scan_control *sc)
+static bool try_to_shrink_lruvec(struct lruvec *lruvec, struct scan_control *sc)
 {
-	struct blk_plug plug;
-	bool need_aging = false;
-	bool need_swapping = false;
+	long nr_to_scan;
 	unsigned long scanned = 0;
-	unsigned long reclaimed = sc->nr_reclaimed;
-	DEFINE_MAX_SEQ(lruvec);
+	unsigned long nr_to_reclaim = get_nr_to_reclaim(sc);
+	int swappiness = get_swappiness(lruvec, sc);
 
-	lru_add_drain();
-
-	blk_start_plug(&plug);
-
-	set_mm_walk(lruvec_pgdat(lruvec));
+	/* clean file folios are more likely to exist */
+	if (swappiness && !(sc->gfp_mask & __GFP_IO))
+		swappiness = 1;
 
 	while (true) {
 		int delta;
-		int swappiness;
-		unsigned long nr_to_scan;
 
-		if (sc->may_swap)
-			swappiness = get_swappiness(lruvec, sc);
-		else if (!cgroup_reclaim(sc) && get_swappiness(lruvec, sc))
-			swappiness = 1;
-		else
-			swappiness = 0;
+		nr_to_scan = get_nr_to_scan(lruvec, sc, swappiness);
+		if (nr_to_scan <= 0)
+			break;
 
-		nr_to_scan = get_nr_to_scan(lruvec, sc, swappiness, &need_aging);
-		if (!nr_to_scan)
-			goto done;
-
-		delta = evict_folios(lruvec, sc, swappiness, &need_swapping);
+		delta = evict_folios(lruvec, sc, swappiness);
 		if (!delta)
-			goto done;
+			break;
 
 		scanned += delta;
 		if (scanned >= nr_to_scan)
 			break;
 
-		if (should_abort_scan(lruvec, max_seq, sc, need_swapping))
+		if (sc->nr_reclaimed >= nr_to_reclaim)
 			break;
 
 		cond_resched();
 	}
 
-	/* see the comment in lru_gen_age_node() */
-	if (sc->nr_reclaimed - reclaimed >= MIN_LRU_BATCH && !need_aging)
-		sc->memcgs_need_aging = false;
-done:
+	/* whether try_to_inc_max_seq() was successful */
+	return nr_to_scan < 0;
+}
+
+static int shrink_one(struct lruvec *lruvec, struct scan_control *sc)
+{
+	bool success;
+	unsigned long scanned = sc->nr_scanned;
+	unsigned long reclaimed = sc->nr_reclaimed;
+	int seg = lru_gen_memcg_seg(lruvec);
+	struct mem_cgroup *memcg = lruvec_memcg(lruvec);
+	struct pglist_data *pgdat = lruvec_pgdat(lruvec);
+
+	/* see the comment on MEMCG_NR_GENS */
+	if (!lruvec_is_sizable(lruvec, sc))
+		return seg != MEMCG_LRU_TAIL ? MEMCG_LRU_TAIL : MEMCG_LRU_YOUNG;
+
+	mem_cgroup_calculate_protection(NULL, memcg);
+
+	if (mem_cgroup_below_min(memcg))
+		return MEMCG_LRU_YOUNG;
+
+	if (mem_cgroup_below_low(memcg)) {
+		/* see the comment on MEMCG_NR_GENS */
+		if (seg != MEMCG_LRU_TAIL)
+			return MEMCG_LRU_TAIL;
+
+		memcg_memory_event(memcg, MEMCG_LOW);
+	}
+
+	success = try_to_shrink_lruvec(lruvec, sc);
+
+	shrink_slab(sc->gfp_mask, pgdat->node_id, memcg, sc->priority);
+
+	if (!sc->proactive)
+		vmpressure(sc->gfp_mask, memcg, false, sc->nr_scanned - scanned,
+			   sc->nr_reclaimed - reclaimed);
+
+	sc->nr_reclaimed += current->reclaim_state->reclaimed_slab;
+	current->reclaim_state->reclaimed_slab = 0;
+
+	return success ? MEMCG_LRU_YOUNG : 0;
+}
+
+#ifdef CONFIG_MEMCG
+
+static void shrink_many(struct pglist_data *pgdat, struct scan_control *sc)
+{
+	int op;
+	int gen;
+	int bin;
+	int first_bin;
+	struct lruvec *lruvec;
+	struct lru_gen_folio *lrugen;
+	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:
+	op = 0;
+	memcg = NULL;
+	gen = get_memcg_gen(READ_ONCE(pgdat->memcg_lru.seq));
+
+	rcu_read_lock();
+
+	hlist_nulls_for_each_entry_rcu(lrugen, pos, &pgdat->memcg_lru.fifo[gen][bin], list) {
+		if (op)
+			lru_gen_rotate_memcg(lruvec, op);
+
+		mem_cgroup_put(memcg);
+
+		lruvec = container_of(lrugen, struct lruvec, lrugen);
+		memcg = lruvec_memcg(lruvec);
+
+		if (!mem_cgroup_tryget(memcg)) {
+			op = 0;
+			memcg = NULL;
+			continue;
+		}
+
+		rcu_read_unlock();
+
+		op = shrink_one(lruvec, sc);
+
+		rcu_read_lock();
+
+		if (sc->nr_reclaimed >= nr_to_reclaim)
+			break;
+	}
+
+	rcu_read_unlock();
+
+	if (op)
+		lru_gen_rotate_memcg(lruvec, op);
+
+	mem_cgroup_put(memcg);
+
+	if (sc->nr_reclaimed >= nr_to_reclaim)
+		return;
+
+	/* restart if raced with lru_gen_rotate_memcg() */
+	if (gen != get_nulls_value(pos))
+		goto restart;
+
+	/* try the rest of the bins of the current generation */
+	bin = get_memcg_bin(bin + 1);
+	if (bin != first_bin)
+		goto restart;
+}
+
+static void lru_gen_shrink_lruvec(struct lruvec *lruvec, struct scan_control *sc)
+{
+	struct blk_plug plug;
+
+	VM_WARN_ON_ONCE(global_reclaim(sc));
+	VM_WARN_ON_ONCE(!sc->may_writepage || !sc->may_unmap);
+
+	lru_add_drain();
+
+	blk_start_plug(&plug);
+
+	set_mm_walk(NULL, sc->proactive);
+
+	if (try_to_shrink_lruvec(lruvec, sc))
+		lru_gen_rotate_memcg(lruvec, MEMCG_LRU_YOUNG);
+
 	clear_mm_walk();
 
 	blk_finish_plug(&plug);
 }
 
+#else /* !CONFIG_MEMCG */
+
+static void shrink_many(struct pglist_data *pgdat, struct scan_control *sc)
+{
+	BUILD_BUG();
+}
+
+static void lru_gen_shrink_lruvec(struct lruvec *lruvec, struct scan_control *sc)
+{
+	BUILD_BUG();
+}
+
+#endif
+
+static void set_initial_priority(struct pglist_data *pgdat, struct scan_control *sc)
+{
+	int priority;
+	unsigned long reclaimable;
+	struct lruvec *lruvec = mem_cgroup_lruvec(NULL, pgdat);
+
+	if (sc->priority != DEF_PRIORITY || sc->nr_to_reclaim < MIN_LRU_BATCH)
+		return;
+	/*
+	 * Determine the initial priority based on ((total / MEMCG_NR_GENS) >>
+	 * priority) * reclaimed_to_scanned_ratio = nr_to_reclaim, where the
+	 * estimated reclaimed_to_scanned_ratio = inactive / total.
+	 */
+	reclaimable = node_page_state(pgdat, NR_INACTIVE_FILE);
+	if (get_swappiness(lruvec, sc))
+		reclaimable += node_page_state(pgdat, NR_INACTIVE_ANON);
+
+	reclaimable /= MEMCG_NR_GENS;
+
+	/* round down reclaimable and round up sc->nr_to_reclaim */
+	priority = fls_long(reclaimable) - 1 - fls_long(sc->nr_to_reclaim - 1);
+
+	sc->priority = clamp(priority, 0, DEF_PRIORITY);
+}
+
+static void lru_gen_shrink_node(struct pglist_data *pgdat, struct scan_control *sc)
+{
+	struct blk_plug plug;
+	unsigned long reclaimed = sc->nr_reclaimed;
+
+	VM_WARN_ON_ONCE(!global_reclaim(sc));
+
+	/*
+	 * Unmapped clean folios are already prioritized. Scanning for more of
+	 * them is likely futile and can cause high reclaim latency when there
+	 * is a large number of memcgs.
+	 */
+	if (!sc->may_writepage || !sc->may_unmap)
+		goto done;
+
+	lru_add_drain();
+
+	blk_start_plug(&plug);
+
+	set_mm_walk(pgdat, sc->proactive);
+
+	set_initial_priority(pgdat, sc);
+
+	if (current_is_kswapd())
+		sc->nr_reclaimed = 0;
+
+	if (mem_cgroup_disabled())
+		shrink_one(&pgdat->__lruvec, sc);
+	else
+		shrink_many(pgdat, sc);
+
+	if (current_is_kswapd())
+		sc->nr_reclaimed += reclaimed;
+
+	clear_mm_walk();
+
+	blk_finish_plug(&plug);
+done:
+	/* kswapd should never fail */
+	pgdat->kswapd_failures = 0;
+}
+
 /******************************************************************************
  *                          state change
  ******************************************************************************/
 
 static bool __maybe_unused state_is_valid(struct lruvec *lruvec)
 {
-	struct lru_gen_struct *lrugen = &lruvec->lrugen;
+	struct lru_gen_folio *lrugen = &lruvec->lrugen;
 
 	if (lrugen->enabled) {
 		enum lru_list lru;
@@ -5250,7 +5510,7 @@ static bool __maybe_unused state_is_valid(struct lruvec *lruvec)
 		int gen, type, zone;
 
 		for_each_gen_type_zone(gen, type, zone) {
-			if (!list_empty(&lrugen->lists[gen][type][zone]))
+			if (!list_empty(&lrugen->folios[gen][type][zone]))
 				return false;
 		}
 	}
@@ -5295,7 +5555,7 @@ static bool drain_evictable(struct lruvec *lruvec)
 	int remaining = MAX_LRU_BATCH;
 
 	for_each_gen_type_zone(gen, type, zone) {
-		struct list_head *head = &lruvec->lrugen.lists[gen][type][zone];
+		struct list_head *head = &lruvec->lrugen.folios[gen][type][zone];
 
 		while (!list_empty(head)) {
 			bool success;
@@ -5519,7 +5779,7 @@ static void lru_gen_seq_show_full(struct seq_file *m, struct lruvec *lruvec,
 	int i;
 	int type, tier;
 	int hist = lru_hist_from_seq(seq);
-	struct lru_gen_struct *lrugen = &lruvec->lrugen;
+	struct lru_gen_folio *lrugen = &lruvec->lrugen;
 
 	for (tier = 0; tier < MAX_NR_TIERS; tier++) {
 		seq_printf(m, "            %10d", tier);
@@ -5569,7 +5829,7 @@ static int lru_gen_seq_show(struct seq_file *m, void *v)
 	unsigned long seq;
 	bool full = !debugfs_real_fops(m->file)->write;
 	struct lruvec *lruvec = v;
-	struct lru_gen_struct *lrugen = &lruvec->lrugen;
+	struct lru_gen_folio *lrugen = &lruvec->lrugen;
 	int nid = lruvec_pgdat(lruvec)->node_id;
 	struct mem_cgroup *memcg = lruvec_memcg(lruvec);
 	DEFINE_MAX_SEQ(lruvec);
@@ -5666,7 +5926,7 @@ static int run_eviction(struct lruvec *lruvec, unsigned long seq, struct scan_co
 		if (sc->nr_reclaimed >= nr_to_reclaim)
 			return 0;
 
-		if (!evict_folios(lruvec, sc, swappiness, NULL))
+		if (!evict_folios(lruvec, sc, swappiness))
 			return 0;
 
 		cond_resched();
@@ -5687,11 +5947,11 @@ static int run_cmd(char cmd, int memcg_id, int nid, unsigned long seq,
 
 	if (!mem_cgroup_disabled()) {
 		rcu_read_lock();
+
 		memcg = mem_cgroup_from_id(memcg_id);
-#ifdef CONFIG_MEMCG
-		if (memcg && !css_tryget(&memcg->css))
+		if (!mem_cgroup_tryget(memcg))
 			memcg = NULL;
-#endif
+
 		rcu_read_unlock();
 
 		if (!memcg)
@@ -5751,7 +6011,7 @@ static ssize_t lru_gen_seq_write(struct file *file, const char __user *src,
 	set_task_reclaim_state(current, &sc.reclaim_state);
 	flags = memalloc_noreclaim_save();
 	blk_start_plug(&plug);
-	if (!set_mm_walk(NULL)) {
+	if (!set_mm_walk(NULL, true)) {
 		err = -ENOMEM;
 		goto done;
 	}
@@ -5823,7 +6083,7 @@ void lru_gen_init_lruvec(struct lruvec *lruvec)
 {
 	int i;
 	int gen, type, zone;
-	struct lru_gen_struct *lrugen = &lruvec->lrugen;
+	struct lru_gen_folio *lrugen = &lruvec->lrugen;
 
 	lrugen->max_seq = MIN_NR_GENS + 1;
 	lrugen->enabled = lru_gen_enabled();
@@ -5832,13 +6092,25 @@ void lru_gen_init_lruvec(struct lruvec *lruvec)
 		lrugen->timestamps[i] = jiffies;
 
 	for_each_gen_type_zone(gen, type, zone)
-		INIT_LIST_HEAD(&lrugen->lists[gen][type][zone]);
+		INIT_LIST_HEAD(&lrugen->folios[gen][type][zone]);
 
 	lruvec->mm_state.seq = MIN_NR_GENS;
-	init_waitqueue_head(&lruvec->mm_state.wait);
 }
 
 #ifdef CONFIG_MEMCG
+
+void lru_gen_init_pgdat(struct pglist_data *pgdat)
+{
+	int i, j;
+
+	spin_lock_init(&pgdat->memcg_lru.lock);
+
+	for (i = 0; i < MEMCG_NR_GENS; i++) {
+		for (j = 0; j < MEMCG_NR_BINS; j++)
+			INIT_HLIST_NULLS_HEAD(&pgdat->memcg_lru.fifo[i][j], i);
+	}
+}
+
 void lru_gen_init_memcg(struct mem_cgroup *memcg)
 {
 	INIT_LIST_HEAD(&memcg->mm_list.fifo);
@@ -5850,19 +6122,24 @@ void lru_gen_exit_memcg(struct mem_cgroup *memcg)
 	int i;
 	int nid;
 
+	VM_WARN_ON_ONCE(!list_empty(&memcg->mm_list.fifo));
+
 	for_each_node(nid) {
 		struct lruvec *lruvec = get_lruvec(memcg, nid);
 
 		VM_WARN_ON_ONCE(memchr_inv(lruvec->lrugen.nr_pages, 0,
 					   sizeof(lruvec->lrugen.nr_pages)));
 
+		lruvec->lrugen.list.next = LIST_POISON1;
+
 		for (i = 0; i < NR_BLOOM_FILTERS; i++) {
 			bitmap_free(lruvec->mm_state.filters[i]);
 			lruvec->mm_state.filters[i] = NULL;
 		}
 	}
 }
-#endif
+
+#endif /* CONFIG_MEMCG */
 
 static int __init init_lru_gen(void)
 {
@@ -5889,6 +6166,10 @@ static void lru_gen_shrink_lruvec(struct lruvec *lruvec, struct scan_control *sc
 {
 }
 
+static void lru_gen_shrink_node(struct pglist_data *pgdat, struct scan_control *sc)
+{
+}
+
 #endif /* CONFIG_LRU_GEN */
 
 static void shrink_lruvec(struct lruvec *lruvec, struct scan_control *sc)
@@ -5902,7 +6183,7 @@ static void shrink_lruvec(struct lruvec *lruvec, struct scan_control *sc)
 	bool proportional_reclaim;
 	struct blk_plug plug;
 
-	if (lru_gen_enabled()) {
+	if (lru_gen_enabled() && !global_reclaim(sc)) {
 		lru_gen_shrink_lruvec(lruvec, sc);
 		return;
 	}
@@ -6034,6 +6315,7 @@ static inline bool should_continue_reclaim(struct pglist_data *pgdat,
 	unsigned long pages_for_compaction;
 	unsigned long inactive_lru_pages;
 	int z;
+	bool continue_reclaim = true;
 
 	/* If not in reclaim/compaction mode, stop */
 	if (!in_reclaim_compaction(sc))
@@ -6077,6 +6359,13 @@ static inline bool should_continue_reclaim(struct pglist_data *pgdat,
 	if (can_reclaim_anon_pages(NULL, pgdat->node_id, sc))
 		inactive_lru_pages += node_page_state(pgdat, NR_INACTIVE_ANON);
 
+#ifdef CONFIG_ANDROID_VENDOR_OEM_DATA
+	trace_android_vh_should_continue_reclaim(&sc->android_vendor_data1,
+		&sc->nr_to_reclaim, &sc->nr_reclaimed, &continue_reclaim);
+#endif
+	if (!continue_reclaim)
+		return false;
+
 	return inactive_lru_pages > pages_for_compaction;
 }
 
@@ -6090,6 +6379,7 @@ static void shrink_node_memcgs(pg_data_t *pgdat, struct scan_control *sc)
 		struct lruvec *lruvec = mem_cgroup_lruvec(memcg, pgdat);
 		unsigned long reclaimed;
 		unsigned long scanned;
+		bool skip = false;
 
 		/*
 		 * This loop can become CPU-bound when target memcgs
@@ -6099,6 +6389,10 @@ static void shrink_node_memcgs(pg_data_t *pgdat, struct scan_control *sc)
 		 */
 		cond_resched();
 
+		trace_android_vh_shrink_node_memcgs(memcg, &skip);
+		if (skip)
+			continue;
+
 		mem_cgroup_calculate_protection(target_memcg, memcg);
 
 		if (mem_cgroup_below_min(memcg)) {
@@ -6145,6 +6439,11 @@ static void shrink_node(pg_data_t *pgdat, struct scan_control *sc)
 	struct lruvec *target_lruvec;
 	bool reclaimable = false;
 
+	if (lru_gen_enabled() && global_reclaim(sc)) {
+		lru_gen_shrink_node(pgdat, sc);
+		return;
+	}
+
 	target_lruvec = mem_cgroup_lruvec(sc->target_mem_cgroup, pgdat);
 
 again:
@@ -6421,6 +6720,22 @@ static void snapshot_refaults(struct mem_cgroup *target_memcg, pg_data_t *pgdat)
 	target_lruvec->refaults[WORKINGSET_FILE] = refaults;
 }
 
+static void modify_scan_control(struct scan_control *sc)
+{
+	bool file_is_tiny = false, may_writepage = true;
+
+#ifdef CONFIG_ANDROID_VENDOR_OEM_DATA
+	trace_android_vh_modify_scan_control(&sc->android_vendor_data1,
+		&sc->nr_to_reclaim, sc->target_mem_cgroup, &file_is_tiny,
+		&may_writepage);
+#endif
+
+	if (file_is_tiny)
+		sc->file_is_tiny = true;
+	if (!may_writepage)
+		sc->may_writepage = false;
+}
+
 /*
  * This is the main entry point to direct page reclaim.
  *
@@ -6444,6 +6759,8 @@ static unsigned long do_try_to_free_pages(struct zonelist *zonelist,
 	pg_data_t *last_pgdat;
 	struct zoneref *z;
 	struct zone *zone;
+
+	modify_scan_control(sc);
 retry:
 	delayacct_freepages_start();
 
@@ -6778,6 +7095,7 @@ unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *memcg,
 
 	return nr_reclaimed;
 }
+EXPORT_SYMBOL_GPL(try_to_free_mem_cgroup_pages);
 #endif
 
 static void kswapd_age_node(struct pglist_data *pgdat, struct scan_control *sc)
@@ -7326,7 +7644,7 @@ static void kswapd_try_to_sleep(pg_data_t *pgdat, int alloc_order, int reclaim_o
  * If there are applications that are active memory-allocators
  * (most normal use), this basically shouldn't matter.
  */
-static int kswapd(void *p)
+int kswapd(void *p)
 {
 	unsigned int alloc_order, reclaim_order;
 	unsigned int highest_zoneidx = MAX_NR_ZONES - 1;
@@ -7404,6 +7722,7 @@ static int kswapd(void *p)
 
 	return 0;
 }
+EXPORT_SYMBOL_GPL(kswapd);
 
 /*
  * A zone is low on free memory or too fragmented for high-order memory.  If
@@ -7502,9 +7821,16 @@ unsigned long shrink_all_memory(unsigned long nr_to_reclaim)
 void kswapd_run(int nid)
 {
 	pg_data_t *pgdat = NODE_DATA(nid);
+	bool skip = false;
 
 	pgdat_kswapd_lock(pgdat);
 	if (!pgdat->kswapd) {
+		trace_android_vh_kswapd_per_node(nid, &skip, true);
+		if (skip) {
+			pgdat_kswapd_unlock(pgdat);
+			return;
+		}
+
 		pgdat->kswapd = kthread_run(kswapd, pgdat, "kswapd%d", nid);
 		if (IS_ERR(pgdat->kswapd)) {
 			/* failure at boot is fatal */
@@ -7524,9 +7850,16 @@ void kswapd_stop(int nid)
 {
 	pg_data_t *pgdat = NODE_DATA(nid);
 	struct task_struct *kswapd;
+	bool skip = false;
 
 	pgdat_kswapd_lock(pgdat);
 	kswapd = pgdat->kswapd;
+
+	trace_android_vh_kswapd_per_node(nid, &skip, false);
+	if (skip) {
+		pgdat_kswapd_unlock(pgdat);
+		return;
+	}
 	if (kswapd) {
 		kthread_stop(kswapd);
 		pgdat->kswapd = NULL;
diff --git a/mm/vmstat.c b/mm/vmstat.c
index b2371d7..f2f7649 100644
--- a/mm/vmstat.c
+++ b/mm/vmstat.c
@@ -1176,9 +1176,7 @@ const char * const vmstat_text[] = {
 	"nr_zone_write_pending",
 	"nr_mlock",
 	"nr_bounce",
-#if IS_ENABLED(CONFIG_ZSMALLOC)
 	"nr_zspages",
-#endif
 	"nr_free_cma",
 
 	/* enum numa_stat_item counters */
@@ -1396,6 +1394,12 @@ const char * const vmstat_text[] = {
 	"direct_map_level2_splits",
 	"direct_map_level3_splits",
 #endif
+#ifdef CONFIG_PER_VMA_LOCK_STATS
+	"vma_lock_success",
+	"vma_lock_abort",
+	"vma_lock_retry",
+	"vma_lock_miss",
+#endif
 #endif /* CONFIG_VM_EVENT_COUNTERS || CONFIG_MEMCG */
 };
 #endif /* CONFIG_PROC_FS || CONFIG_SYSFS || CONFIG_NUMA || CONFIG_MEMCG */
diff --git a/mm/workingset.c b/mm/workingset.c
index ae7e984..d9f2edd 100644
--- a/mm/workingset.c
+++ b/mm/workingset.c
@@ -223,7 +223,7 @@ static void *lru_gen_eviction(struct folio *folio)
 	unsigned long token;
 	unsigned long min_seq;
 	struct lruvec *lruvec;
-	struct lru_gen_struct *lrugen;
+	struct lru_gen_folio *lrugen;
 	int type = folio_is_file_lru(folio);
 	int delta = folio_nr_pages(folio);
 	int refs = folio_lru_refs(folio);
@@ -252,7 +252,7 @@ static void lru_gen_refault(struct folio *folio, void *shadow)
 	unsigned long token;
 	unsigned long min_seq;
 	struct lruvec *lruvec;
-	struct lru_gen_struct *lrugen;
+	struct lru_gen_folio *lrugen;
 	struct mem_cgroup *memcg;
 	struct pglist_data *pgdat;
 	int type = folio_is_file_lru(folio);
@@ -272,6 +272,8 @@ static void lru_gen_refault(struct folio *folio, void *shadow)
 	lruvec = mem_cgroup_lruvec(memcg, pgdat);
 	lrugen = &lruvec->lrugen;
 
+	mod_lruvec_state(lruvec, WORKINGSET_REFAULT_BASE + type, delta);
+
 	min_seq = READ_ONCE(lrugen->min_seq[type]);
 	if ((token >> LRU_REFS_WIDTH) != (min_seq & (EVICTION_MASK >> LRU_REFS_WIDTH)))
 		goto unlock;
@@ -282,7 +284,7 @@ static void lru_gen_refault(struct folio *folio, void *shadow)
 	tier = lru_tier_from_refs(refs);
 
 	atomic_long_add(delta, &lrugen->refaulted[hist][type][tier]);
-	mod_lruvec_state(lruvec, WORKINGSET_REFAULT_BASE + type, delta);
+	mod_lruvec_state(lruvec, WORKINGSET_ACTIVATE_BASE + type, delta);
 
 	/*
 	 * Count the following two cases as stalls:
diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c
index d03941c..649376f 100644
--- a/mm/zsmalloc.c
+++ b/mm/zsmalloc.c
@@ -336,7 +336,7 @@ static void destroy_cache(struct zs_pool *pool)
 static unsigned long cache_alloc_handle(struct zs_pool *pool, gfp_t gfp)
 {
 	return (unsigned long)kmem_cache_alloc(pool->handle_cachep,
-			gfp & ~(__GFP_HIGHMEM|__GFP_MOVABLE));
+			gfp & ~(__GFP_HIGHMEM|__GFP_MOVABLE|__GFP_CMA));
 }
 
 static void cache_free_handle(struct zs_pool *pool, unsigned long handle)
@@ -347,7 +347,7 @@ static void cache_free_handle(struct zs_pool *pool, unsigned long handle)
 static struct zspage *cache_alloc_zspage(struct zs_pool *pool, gfp_t flags)
 {
 	return kmem_cache_zalloc(pool->zspage_cachep,
-			flags & ~(__GFP_HIGHMEM|__GFP_MOVABLE));
+			flags & ~(__GFP_HIGHMEM|__GFP_MOVABLE|__GFP_CMA));
 }
 
 static void cache_free_zspage(struct zs_pool *pool, struct zspage *zspage)
diff --git a/modules.bzl b/modules.bzl
new file mode 100644
index 0000000..5d3d31a
--- /dev/null
+++ b/modules.bzl
@@ -0,0 +1,69 @@
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (C) 2022 The Android Open Source Project
+
+"""
+This module contains a full list of kernel modules
+ compiled by GKI.
+"""
+
+COMMON_GKI_MODULES_LIST = [
+    # keep sorted
+    "drivers/block/zram/zram.ko",
+    "drivers/bluetooth/btbcm.ko",
+    "drivers/bluetooth/btqca.ko",
+    "drivers/bluetooth/btsdio.ko",
+    "drivers/bluetooth/hci_uart.ko",
+    "drivers/net/can/dev/can-dev.ko",
+    "drivers/net/can/slcan/slcan.ko",
+    "drivers/net/can/vcan.ko",
+    "drivers/net/mii.ko",
+    "drivers/net/ppp/bsd_comp.ko",
+    "drivers/net/ppp/ppp_deflate.ko",
+    "drivers/net/ppp/ppp_generic.ko",
+    "drivers/net/ppp/ppp_mppe.ko",
+    "drivers/net/ppp/pppox.ko",
+    "drivers/net/ppp/pptp.ko",
+    "drivers/net/slip/slhc.ko",
+    "drivers/net/usb/aqc111.ko",
+    "drivers/net/usb/asix.ko",
+    "drivers/net/usb/ax88179_178a.ko",
+    "drivers/net/usb/cdc_eem.ko",
+    "drivers/net/usb/cdc_ether.ko",
+    "drivers/net/usb/cdc_ncm.ko",
+    "drivers/net/usb/r8152.ko",
+    "drivers/net/usb/r8153_ecm.ko",
+    "drivers/net/usb/rtl8150.ko",
+    "drivers/net/usb/usbnet.ko",
+    "drivers/usb/class/cdc-acm.ko",
+    "drivers/usb/serial/ftdi_sio.ko",
+    "drivers/usb/serial/usbserial.ko",
+    "kernel/kheaders.ko",
+    "lib/crypto/libarc4.ko",
+    "mm/zsmalloc.ko",
+    "net/6lowpan/6lowpan.ko",
+    "net/6lowpan/nhc_dest.ko",
+    "net/6lowpan/nhc_fragment.ko",
+    "net/6lowpan/nhc_hop.ko",
+    "net/6lowpan/nhc_ipv6.ko",
+    "net/6lowpan/nhc_mobility.ko",
+    "net/6lowpan/nhc_routing.ko",
+    "net/6lowpan/nhc_udp.ko",
+    "net/8021q/8021q.ko",
+    "net/bluetooth/bluetooth.ko",
+    "net/bluetooth/hidp/hidp.ko",
+    "net/bluetooth/rfcomm/rfcomm.ko",
+    "net/can/can.ko",
+    "net/can/can-bcm.ko",
+    "net/can/can-gw.ko",
+    "net/can/can-raw.ko",
+    "net/ieee802154/6lowpan/ieee802154_6lowpan.ko",
+    "net/ieee802154/ieee802154.ko",
+    "net/ieee802154/ieee802154_socket.ko",
+    "net/l2tp/l2tp_core.ko",
+    "net/l2tp/l2tp_ppp.ko",
+    "net/mac802154/mac802154.ko",
+    "net/nfc/nfc.ko",
+    "net/rfkill/rfkill.ko",
+    "net/tipc/diag.ko",
+    "net/tipc/tipc.ko",
+]
diff --git a/net/TEST_MAPPING b/net/TEST_MAPPING
new file mode 100644
index 0000000..1eb8d43
--- /dev/null
+++ b/net/TEST_MAPPING
@@ -0,0 +1,12 @@
+{
+  "presubmit": [
+    {
+      "name": "CtsNetTestCases",
+      "options": [
+        {
+          "exclude-annotation": "com.android.testutils.SkipPresubmit"
+        }
+      ]
+    }
+  ]
+}
diff --git a/net/batman-adv/hard-interface.c b/net/batman-adv/hard-interface.c
index 41c1ad3..e8c9465 100644
--- a/net/batman-adv/hard-interface.c
+++ b/net/batman-adv/hard-interface.c
@@ -308,11 +308,9 @@ static bool batadv_is_cfg80211_netdev(struct net_device *net_device)
 	if (!net_device)
 		return false;
 
-#if IS_ENABLED(CONFIG_CFG80211)
 	/* cfg80211 drivers have to set ieee80211_ptr */
 	if (net_device->ieee80211_ptr)
 		return true;
-#endif
 
 	return false;
 }
diff --git a/net/core/dev.c b/net/core/dev.c
index a2e3c64..e689846 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -150,6 +150,7 @@
 #include <linux/pm_runtime.h>
 #include <linux/prandom.h>
 #include <linux/once_lite.h>
+#include <trace/hooks/net.h>
 
 #include "dev.h"
 #include "net-sysfs.h"
@@ -535,6 +536,12 @@ static inline void netdev_set_addr_lockdep_class(struct net_device *dev)
 
 static inline struct list_head *ptype_head(const struct packet_type *pt)
 {
+	struct list_head vendor_pt = { .next  = NULL, };
+
+	trace_android_vh_ptype_head(pt, &vendor_pt);
+	if (vendor_pt.next)
+		return vendor_pt.next;
+
 	if (pt->type == htons(ETH_P_ALL))
 		return pt->dev ? &pt->dev->ptype_all : &ptype_all;
 	else
diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c
index 8409d41..59d785c 100644
--- a/net/core/net-sysfs.c
+++ b/net/core/net-sysfs.c
@@ -758,14 +758,10 @@ static const struct attribute_group wireless_group = {
 
 static bool wireless_group_needed(struct net_device *ndev)
 {
-#if IS_ENABLED(CONFIG_CFG80211)
 	if (ndev->ieee80211_ptr)
 		return true;
-#endif
-#if IS_ENABLED(CONFIG_WIRELESS_EXT)
 	if (ndev->wireless_handlers)
 		return true;
-#endif
 	return false;
 }
 
diff --git a/net/core/net-traces.c b/net/core/net-traces.c
index c40cd8dd..82a8a5c 100644
--- a/net/core/net-traces.c
+++ b/net/core/net-traces.c
@@ -35,13 +35,11 @@
 #include <trace/events/tcp.h>
 #include <trace/events/fib.h>
 #include <trace/events/qdisc.h>
-#if IS_ENABLED(CONFIG_BRIDGE)
 #include <trace/events/bridge.h>
 EXPORT_TRACEPOINT_SYMBOL_GPL(br_fdb_add);
 EXPORT_TRACEPOINT_SYMBOL_GPL(br_fdb_external_learn_add);
 EXPORT_TRACEPOINT_SYMBOL_GPL(fdb_delete);
 EXPORT_TRACEPOINT_SYMBOL_GPL(br_fdb_update);
-#endif
 
 #if IS_ENABLED(CONFIG_PAGE_POOL)
 #include <trace/events/page_pool.h>
@@ -56,6 +54,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(neigh_event_send_dead);
 EXPORT_TRACEPOINT_SYMBOL_GPL(neigh_cleanup_and_release);
 
 EXPORT_TRACEPOINT_SYMBOL_GPL(kfree_skb);
+EXPORT_TRACEPOINT_SYMBOL_GPL(consume_skb);
 
 EXPORT_TRACEPOINT_SYMBOL_GPL(napi_poll);
 
diff --git a/net/core/sock.c b/net/core/sock.c
index b021cb9..ad9ac3c 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -135,6 +135,8 @@
 #include <net/bpf_sk_storage.h>
 
 #include <trace/events/sock.h>
+#include <trace/hooks/sched.h>
+#include <trace/hooks/net.h>
 
 #include <net/tcp.h>
 #include <net/busy_poll.h>
@@ -2029,6 +2031,8 @@ static struct sock *sk_prot_alloc(struct proto *prot, gfp_t priority,
 		if (security_sk_alloc(sk, family, priority))
 			goto out_free;
 
+		trace_android_rvh_sk_alloc(sk);
+
 		if (!try_module_get(prot->owner))
 			goto out_free_sec;
 	}
@@ -2037,6 +2041,7 @@ static struct sock *sk_prot_alloc(struct proto *prot, gfp_t priority,
 
 out_free_sec:
 	security_sk_free(sk);
+	trace_android_rvh_sk_free(sk);
 out_free:
 	if (slab != NULL)
 		kmem_cache_free(slab, sk);
@@ -2056,6 +2061,7 @@ static void sk_prot_free(struct proto *prot, struct sock *sk)
 	cgroup_sk_free(&sk->sk_cgrp_data);
 	mem_cgroup_sk_free(sk);
 	security_sk_free(sk);
+	trace_android_rvh_sk_free(sk);
 	if (slab != NULL)
 		kmem_cache_free(slab, sk);
 	else
@@ -3268,9 +3274,19 @@ void sock_def_readable(struct sock *sk)
 
 	rcu_read_lock();
 	wq = rcu_dereference(sk->sk_wq);
-	if (skwq_has_sleeper(wq))
+
+	if (skwq_has_sleeper(wq)) {
+		int done = 0;
+
+		trace_android_vh_do_wake_up_sync(&wq->wait, &done, sk);
+		if (done)
+			goto out;
+
 		wake_up_interruptible_sync_poll(&wq->wait, EPOLLIN | EPOLLPRI |
 						EPOLLRDNORM | EPOLLRDBAND);
+	}
+
+out:
 	sk_wake_async(sk, SOCK_WAKE_WAITD, POLL_IN);
 	rcu_read_unlock();
 }
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
index 0bd0be3..ed8dfd8 100644
--- a/net/ipv4/tcp.c
+++ b/net/ipv4/tcp.c
@@ -1884,10 +1884,10 @@ int tcp_mmap(struct file *file, struct socket *sock,
 {
 	if (vma->vm_flags & (VM_WRITE | VM_EXEC))
 		return -EPERM;
-	vma->vm_flags &= ~(VM_MAYWRITE | VM_MAYEXEC);
+	vm_flags_clear(vma, VM_MAYWRITE | VM_MAYEXEC);
 
 	/* Instruct vm_insert_page() to not mmap_read_lock(mm) */
-	vma->vm_flags |= VM_MIXEDMAP;
+	vm_flags_set(vma, VM_MIXEDMAP);
 
 	vma->vm_ops = &tcp_vm_ops;
 	return 0;
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
index e6c7edc..c967e5f 100644
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -211,6 +211,7 @@ static struct ipv6_devconf ipv6_devconf __read_mostly = {
 	.accept_ra_rt_info_max_plen = 0,
 #endif
 #endif
+	.accept_ra_rt_table	= 0,
 	.proxy_ndp		= 0,
 	.accept_source_route	= 0,	/* we do not accept RH0 by default. */
 	.disable_ipv6		= 0,
@@ -271,6 +272,7 @@ static struct ipv6_devconf ipv6_devconf_dflt __read_mostly = {
 	.accept_ra_rt_info_max_plen = 0,
 #endif
 #endif
+	.accept_ra_rt_table	= 0,
 	.proxy_ndp		= 0,
 	.accept_source_route	= 0,	/* we do not accept RH0 by default. */
 	.disable_ipv6		= 0,
@@ -2390,6 +2392,26 @@ static void ipv6_gen_rnd_iid(struct in6_addr *addr)
 		goto regen;
 }
 
+u32 addrconf_rt_table(const struct net_device *dev, u32 default_table)
+{
+	struct inet6_dev *idev = in6_dev_get(dev);
+	int sysctl;
+	u32 table;
+
+	if (!idev)
+		return default_table;
+	sysctl = idev->cnf.accept_ra_rt_table;
+	if (sysctl == 0) {
+		table = default_table;
+	} else if (sysctl > 0) {
+		table = (u32) sysctl;
+	} else {
+		table = (unsigned) dev->ifindex + (-sysctl);
+	}
+	in6_dev_put(idev);
+	return table;
+}
+
 /*
  *	Add prefix route.
  */
@@ -2400,7 +2422,7 @@ addrconf_prefix_route(struct in6_addr *pfx, int plen, u32 metric,
 		      u32 flags, gfp_t gfp_flags)
 {
 	struct fib6_config cfg = {
-		.fc_table = l3mdev_fib_table(dev) ? : RT6_TABLE_PREFIX,
+		.fc_table = l3mdev_fib_table(dev) ? : addrconf_rt_table(dev, RT6_TABLE_PREFIX),
 		.fc_metric = metric ? : IP6_RT_PRIO_ADDRCONF,
 		.fc_ifindex = dev->ifindex,
 		.fc_expires = expires,
@@ -2435,7 +2457,7 @@ static struct fib6_info *addrconf_get_prefix_route(const struct in6_addr *pfx,
 	struct fib6_node *fn;
 	struct fib6_info *rt = NULL;
 	struct fib6_table *table;
-	u32 tb_id = l3mdev_fib_table(dev) ? : RT6_TABLE_PREFIX;
+	u32 tb_id = l3mdev_fib_table(dev) ? : addrconf_rt_table(dev, RT6_TABLE_PREFIX);
 
 	table = fib6_get_table(dev_net(dev), tb_id);
 	if (!table)
@@ -6829,6 +6851,13 @@ static const struct ctl_table addrconf_sysctl[] = {
 #endif
 #endif
 	{
+		.procname	= "accept_ra_rt_table",
+		.data		= &ipv6_devconf.accept_ra_rt_table,
+		.maxlen		= sizeof(int),
+		.mode		= 0644,
+		.proc_handler	= proc_dointvec,
+	},
+	{
 		.procname	= "proxy_ndp",
 		.data		= &ipv6_devconf.proxy_ndp,
 		.maxlen		= sizeof(int),
diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index 0b060cb..9c433cd 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -4251,7 +4251,7 @@ static struct fib6_info *rt6_get_route_info(struct net *net,
 					   const struct in6_addr *gwaddr,
 					   struct net_device *dev)
 {
-	u32 tb_id = l3mdev_fib_table(dev) ? : RT6_TABLE_INFO;
+	u32 tb_id = l3mdev_fib_table(dev) ? : addrconf_rt_table(dev, RT6_TABLE_INFO);
 	int ifindex = dev->ifindex;
 	struct fib6_node *fn;
 	struct fib6_info *rt = NULL;
@@ -4305,7 +4305,7 @@ static struct fib6_info *rt6_add_route_info(struct net *net,
 		.fc_nlinfo.nl_net = net,
 	};
 
-	cfg.fc_table = l3mdev_fib_table(dev) ? : RT6_TABLE_INFO;
+	cfg.fc_table = l3mdev_fib_table(dev) ? : addrconf_rt_table(dev, RT6_TABLE_INFO);
 	cfg.fc_dst = *prefix;
 	cfg.fc_gateway = *gwaddr;
 
@@ -4323,7 +4323,7 @@ struct fib6_info *rt6_get_dflt_router(struct net *net,
 				     const struct in6_addr *addr,
 				     struct net_device *dev)
 {
-	u32 tb_id = l3mdev_fib_table(dev) ? : RT6_TABLE_DFLT;
+	u32 tb_id = l3mdev_fib_table(dev) ? : addrconf_rt_table(dev, RT6_TABLE_DFLT);
 	struct fib6_info *rt;
 	struct fib6_table *table;
 
@@ -4358,7 +4358,7 @@ struct fib6_info *rt6_add_dflt_router(struct net *net,
 				     u32 defrtr_usr_metric)
 {
 	struct fib6_config cfg = {
-		.fc_table	= l3mdev_fib_table(dev) ? : RT6_TABLE_DFLT,
+		.fc_table	= l3mdev_fib_table(dev) ? : addrconf_rt_table(dev, RT6_TABLE_DFLT),
 		.fc_metric	= defrtr_usr_metric,
 		.fc_ifindex	= dev->ifindex,
 		.fc_flags	= RTF_GATEWAY | RTF_ADDRCONF | RTF_DEFAULT |
@@ -4383,47 +4383,24 @@ struct fib6_info *rt6_add_dflt_router(struct net *net,
 	return rt6_get_dflt_router(net, gwaddr, dev);
 }
 
-static void __rt6_purge_dflt_routers(struct net *net,
-				     struct fib6_table *table)
+static int rt6_addrconf_purge(struct fib6_info *rt, void *arg)
 {
-	struct fib6_info *rt;
+	struct net_device *dev = fib6_info_nh_dev(rt);
+	struct inet6_dev *idev = dev ? __in6_dev_get(dev) : NULL;
 
-restart:
-	rcu_read_lock();
-	for_each_fib6_node_rt_rcu(&table->tb6_root) {
-		struct net_device *dev = fib6_info_nh_dev(rt);
-		struct inet6_dev *idev = dev ? __in6_dev_get(dev) : NULL;
-
-		if (rt->fib6_flags & (RTF_DEFAULT | RTF_ADDRCONF) &&
-		    (!idev || idev->cnf.accept_ra != 2) &&
-		    fib6_info_hold_safe(rt)) {
-			rcu_read_unlock();
-			ip6_del_rt(net, rt, false);
-			goto restart;
-		}
+	if (rt->fib6_flags & (RTF_DEFAULT | RTF_ADDRCONF) &&
+	    (!idev || idev->cnf.accept_ra != 2)) {
+		/* Delete this route. See fib6_clean_tree() */
+		return -1;
 	}
-	rcu_read_unlock();
 
-	table->flags &= ~RT6_TABLE_HAS_DFLT_ROUTER;
+	/* Continue walking */
+	return 0;
 }
 
 void rt6_purge_dflt_routers(struct net *net)
 {
-	struct fib6_table *table;
-	struct hlist_head *head;
-	unsigned int h;
-
-	rcu_read_lock();
-
-	for (h = 0; h < FIB6_TABLE_HASHSZ; h++) {
-		head = &net->ipv6.fib_table_hash[h];
-		hlist_for_each_entry_rcu(table, head, tb6_hlist) {
-			if (table->flags & RT6_TABLE_HAS_DFLT_ROUTER)
-				__rt6_purge_dflt_routers(net, table);
-		}
-	}
-
-	rcu_read_unlock();
+	fib6_clean_all(net, rt6_addrconf_purge, NULL);
 }
 
 static void rtmsg_to_fib6_config(struct net *net,
diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c
index 23a44ed..f7267ed 100644
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
@@ -3556,7 +3556,8 @@ static int __ieee80211_csa_finalize(struct ieee80211_sub_if_data *sdata)
 	if (err)
 		return err;
 
-	cfg80211_ch_switch_notify(sdata->dev, &sdata->deflink.csa_chandef, 0);
+	cfg80211_ch_switch_notify(sdata->dev, &sdata->deflink.csa_chandef, 0,
+				  0);
 
 	return 0;
 }
@@ -3828,7 +3829,7 @@ __ieee80211_channel_switch(struct wiphy *wiphy, struct net_device *dev,
 
 	cfg80211_ch_switch_started_notify(sdata->dev,
 					  &sdata->deflink.csa_chandef, 0,
-					  params->count, params->block_tx);
+					  params->count, params->block_tx, 0);
 
 	if (changed) {
 		ieee80211_link_info_change_notify(sdata, &sdata->deflink,
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index dc9e7eb..c670c8d 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -1710,7 +1710,7 @@ static void ieee80211_chswitch_post_beacon(struct ieee80211_link_data *link)
 		return;
 	}
 
-	cfg80211_ch_switch_notify(sdata->dev, &link->reserved_chandef, 0);
+	cfg80211_ch_switch_notify(sdata->dev, &link->reserved_chandef, 0, 0);
 }
 
 void ieee80211_chswitch_done(struct ieee80211_vif *vif, bool success)
@@ -1920,7 +1920,7 @@ ieee80211_sta_process_chanswitch(struct ieee80211_link_data *link,
 	mutex_unlock(&local->mtx);
 
 	cfg80211_ch_switch_started_notify(sdata->dev, &csa_ie.chandef, 0,
-					  csa_ie.count, csa_ie.mode);
+					  csa_ie.count, csa_ie.mode, 0);
 
 	if (local->ops->channel_switch) {
 		/* use driver's channel switch callback */
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index 0f81492..78c4b22 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -2611,7 +2611,7 @@ static void ieee80211_deliver_skb_to_local_stack(struct sk_buff *skb,
 		struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb);
 		bool noencrypt = !(status->flag & RX_FLAG_DECRYPTED);
 
-		cfg80211_rx_control_port(dev, skb, noencrypt);
+		cfg80211_rx_control_port(dev, skb, noencrypt, rx->link_id);
 		dev_kfree_skb(skb);
 	} else {
 		struct ethhdr *ehdr = (void *)skb_mac_header(skb);
diff --git a/net/netfilter/Kconfig b/net/netfilter/Kconfig
index 4b8d046..09b2c54 100644
--- a/net/netfilter/Kconfig
+++ b/net/netfilter/Kconfig
@@ -1523,6 +1523,29 @@
 	  If you want to compile it as a module, say M here and read
 	  <file:Documentation/kbuild/modules.rst>.  If unsure, say `N'.
 
+config NETFILTER_XT_MATCH_QUOTA2
+	tristate '"quota2" match support'
+	depends on NETFILTER_ADVANCED
+	help
+	  This option adds a `quota2' match, which allows to match on a
+	  byte counter correctly and not per CPU.
+	  It allows naming the quotas.
+	  This is based on http://xtables-addons.git.sourceforge.net
+
+	  If you want to compile it as a module, say M here and read
+	  <file:Documentation/kbuild/modules.txt>.  If unsure, say `N'.
+
+config NETFILTER_XT_MATCH_QUOTA2_LOG
+	bool '"quota2" Netfilter LOG support'
+	depends on NETFILTER_XT_MATCH_QUOTA2
+	default n
+	help
+	  This option allows `quota2' to log ONCE when a quota limit
+	  is passed. It logs via NETLINK using the NETLINK_NFLOG family.
+	  It logs similarly to how ipt_ULOG would without data.
+
+	  If unsure, say `N'.
+
 config NETFILTER_XT_MATCH_RATEEST
 	tristate '"rateest" match support'
 	depends on NETFILTER_ADVANCED
diff --git a/net/netfilter/Makefile b/net/netfilter/Makefile
index 0f060d1..7756b2b 100644
--- a/net/netfilter/Makefile
+++ b/net/netfilter/Makefile
@@ -206,6 +206,7 @@
 obj-$(CONFIG_NETFILTER_XT_MATCH_PKTTYPE) += xt_pkttype.o
 obj-$(CONFIG_NETFILTER_XT_MATCH_POLICY) += xt_policy.o
 obj-$(CONFIG_NETFILTER_XT_MATCH_QUOTA) += xt_quota.o
+obj-$(CONFIG_NETFILTER_XT_MATCH_QUOTA2) += xt_quota2.o
 obj-$(CONFIG_NETFILTER_XT_MATCH_RATEEST) += xt_rateest.o
 obj-$(CONFIG_NETFILTER_XT_MATCH_REALM) += xt_realm.o
 obj-$(CONFIG_NETFILTER_XT_MATCH_RECENT) += xt_recent.o
diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c
index 7960262..262f2e1 100644
--- a/net/netfilter/nf_conntrack_core.c
+++ b/net/netfilter/nf_conntrack_core.c
@@ -32,6 +32,7 @@
 #include <linux/mm.h>
 #include <linux/nsproxy.h>
 #include <linux/rculist_nulls.h>
+#include <trace/hooks/net.h>
 
 #include <net/netfilter/nf_conntrack.h>
 #include <net/netfilter/nf_conntrack_bpf.h>
@@ -1659,6 +1660,8 @@ __nf_conntrack_alloc(struct net *net,
 
 	nf_ct_zone_add(ct, zone);
 
+	trace_android_rvh_nf_conn_alloc(ct);
+
 	/* Because we use RCU lookups, we set ct_general.use to zero before
 	 * this is inserted in any list.
 	 */
@@ -1704,6 +1707,7 @@ void nf_conntrack_free(struct nf_conn *ct)
 	cnet = nf_ct_pernet(net);
 
 	smp_mb__before_atomic();
+	trace_android_rvh_nf_conn_free(ct);
 	atomic_dec(&cnet->count);
 }
 EXPORT_SYMBOL_GPL(nf_conntrack_free);
diff --git a/net/netfilter/xt_IDLETIMER.c b/net/netfilter/xt_IDLETIMER.c
index 0f8bb0b..30ba8d7 100644
--- a/net/netfilter/xt_IDLETIMER.c
+++ b/net/netfilter/xt_IDLETIMER.c
@@ -28,6 +28,11 @@
 #include <linux/kobject.h>
 #include <linux/workqueue.h>
 #include <linux/sysfs.h>
+#include <linux/suspend.h>
+#include <net/sock.h>
+#include <net/inet_sock.h>
+
+#define NLMSG_MAX_SIZE 64
 
 struct idletimer_tg {
 	struct list_head entry;
@@ -38,15 +43,112 @@ struct idletimer_tg {
 	struct kobject *kobj;
 	struct device_attribute attr;
 
+	struct timespec64 delayed_timer_trigger;
+	struct timespec64 last_modified_timer;
+	struct timespec64 last_suspend_time;
+	struct notifier_block pm_nb;
+
+	int timeout;
 	unsigned int refcnt;
 	u8 timer_type;
+
+	bool work_pending;
+	bool send_nl_msg;
+	bool active;
+	uid_t uid;
+	bool suspend_time_valid;
 };
 
 static LIST_HEAD(idletimer_tg_list);
 static DEFINE_MUTEX(list_mutex);
+static DEFINE_SPINLOCK(timestamp_lock);
 
 static struct kobject *idletimer_tg_kobj;
 
+static bool check_for_delayed_trigger(struct idletimer_tg *timer,
+				      struct timespec64 *ts)
+{
+	bool state;
+	struct timespec64 temp;
+	spin_lock_bh(&timestamp_lock);
+	timer->work_pending = false;
+	if ((ts->tv_sec - timer->last_modified_timer.tv_sec) > timer->timeout ||
+	    timer->delayed_timer_trigger.tv_sec != 0) {
+		state = false;
+		temp.tv_sec = timer->timeout;
+		temp.tv_nsec = 0;
+		if (timer->delayed_timer_trigger.tv_sec != 0) {
+			temp = timespec64_add(timer->delayed_timer_trigger,
+					      temp);
+			ts->tv_sec = temp.tv_sec;
+			ts->tv_nsec = temp.tv_nsec;
+			timer->delayed_timer_trigger.tv_sec = 0;
+			timer->work_pending = true;
+			schedule_work(&timer->work);
+		} else {
+			temp = timespec64_add(timer->last_modified_timer, temp);
+			ts->tv_sec = temp.tv_sec;
+			ts->tv_nsec = temp.tv_nsec;
+		}
+	} else {
+		state = timer->active;
+	}
+	spin_unlock_bh(&timestamp_lock);
+	return state;
+}
+
+static void notify_netlink_uevent(const char *iface, struct idletimer_tg *timer)
+{
+	char iface_msg[NLMSG_MAX_SIZE];
+	char state_msg[NLMSG_MAX_SIZE];
+	char timestamp_msg[NLMSG_MAX_SIZE];
+	char uid_msg[NLMSG_MAX_SIZE];
+	char *envp[] = { iface_msg, state_msg, timestamp_msg, uid_msg, NULL };
+	int res;
+	struct timespec64 ts;
+	u64 time_ns;
+	bool state;
+
+	res = snprintf(iface_msg, NLMSG_MAX_SIZE, "INTERFACE=%s",
+		       iface);
+	if (NLMSG_MAX_SIZE <= res) {
+		pr_err("message too long (%d)\n", res);
+		return;
+	}
+
+	ts = ktime_to_timespec64(ktime_get_boottime());
+	state = check_for_delayed_trigger(timer, &ts);
+	res = snprintf(state_msg, NLMSG_MAX_SIZE, "STATE=%s",
+		       state ? "active" : "inactive");
+
+	if (NLMSG_MAX_SIZE <= res) {
+		pr_err("message too long (%d)\n", res);
+		return;
+	}
+
+	if (state) {
+		res = snprintf(uid_msg, NLMSG_MAX_SIZE, "UID=%u", timer->uid);
+		if (NLMSG_MAX_SIZE <= res)
+			pr_err("message too long (%d)\n", res);
+	} else {
+		res = snprintf(uid_msg, NLMSG_MAX_SIZE, "UID=");
+		if (NLMSG_MAX_SIZE <= res)
+			pr_err("message too long (%d)\n", res);
+	}
+
+	time_ns = timespec64_to_ns(&ts);
+	res = snprintf(timestamp_msg, NLMSG_MAX_SIZE, "TIME_NS=%llu", time_ns);
+	if (NLMSG_MAX_SIZE <= res) {
+		timestamp_msg[0] = '\0';
+		pr_err("message too long (%d)\n", res);
+	}
+
+	pr_debug("putting nlmsg: <%s> <%s> <%s> <%s>\n", iface_msg, state_msg,
+		 timestamp_msg, uid_msg);
+	kobject_uevent_env(idletimer_tg_kobj, KOBJ_CHANGE, envp);
+	return;
+}
+
 static
 struct idletimer_tg *__idletimer_tg_find_by_label(const char *label)
 {
@@ -67,6 +169,7 @@ static ssize_t idletimer_tg_show(struct device *dev,
 	unsigned long expires = 0;
 	struct timespec64 ktimespec = {};
 	long time_diff = 0;
+	unsigned long now = jiffies;
 
 	mutex_lock(&list_mutex);
 
@@ -78,15 +181,19 @@ static ssize_t idletimer_tg_show(struct device *dev,
 			time_diff = ktimespec.tv_sec;
 		} else {
 			expires = timer->timer.expires;
-			time_diff = jiffies_to_msecs(expires - jiffies) / 1000;
+			time_diff = jiffies_to_msecs(expires - now) / 1000;
 		}
 	}
 
 	mutex_unlock(&list_mutex);
 
-	if (time_after(expires, jiffies) || ktimespec.tv_sec > 0)
+	if (time_after(expires, now) || ktimespec.tv_sec > 0)
 		return sysfs_emit(buf, "%ld\n", time_diff);
 
+	if (timer->send_nl_msg)
+		return sysfs_emit(buf, "0 %d\n",
+				  jiffies_to_msecs(now - expires) / 1000);
+
 	return sysfs_emit(buf, "0\n");
 }
 
@@ -96,6 +203,9 @@ static void idletimer_tg_work(struct work_struct *work)
 						  work);
 
 	sysfs_notify(idletimer_tg_kobj, NULL, timer->attr.attr.name);
+
+	if (timer->send_nl_msg)
+		notify_netlink_uevent(timer->attr.attr.name, timer);
 }
 
 static void idletimer_tg_expired(struct timer_list *t)
@@ -104,7 +214,62 @@ static void idletimer_tg_expired(struct timer_list *t)
 
 	pr_debug("timer %s expired\n", timer->attr.attr.name);
 
+	spin_lock_bh(&timestamp_lock);
+	timer->active = false;
+	timer->work_pending = true;
 	schedule_work(&timer->work);
+	spin_unlock_bh(&timestamp_lock);
+}
+
+static int idletimer_resume(struct notifier_block *notifier,
+			    unsigned long pm_event, void *unused)
+{
+	struct timespec64 ts;
+	unsigned long time_diff, now = jiffies;
+	struct idletimer_tg *timer = container_of(notifier,
+						  struct idletimer_tg, pm_nb);
+	if (!timer)
+		return NOTIFY_DONE;
+
+	switch (pm_event) {
+	case PM_SUSPEND_PREPARE:
+		timer->last_suspend_time =
+			ktime_to_timespec64(ktime_get_boottime());
+		timer->suspend_time_valid = true;
+		break;
+	case PM_POST_SUSPEND:
+		if (!timer->suspend_time_valid)
+			break;
+		timer->suspend_time_valid = false;
+
+		spin_lock_bh(&timestamp_lock);
+		if (!timer->active) {
+			spin_unlock_bh(&timestamp_lock);
+			break;
+		}
+		/* since jiffies are not updated when suspended now represents
+		 * the time it would have suspended */
+		if (time_after(timer->timer.expires, now)) {
+			ts = ktime_to_timespec64(ktime_get_boottime());
+			ts = timespec64_sub(ts, timer->last_suspend_time);
+			time_diff = timespec64_to_jiffies(&ts);
+			if (timer->timer.expires > (time_diff + now)) {
+				mod_timer_pending(&timer->timer,
+						  (timer->timer.expires - time_diff));
+			} else {
+				del_timer(&timer->timer);
+				timer->timer.expires = 0;
+				timer->active = false;
+				timer->work_pending = true;
+				schedule_work(&timer->work);
+			}
+		}
+		spin_unlock_bh(&timestamp_lock);
+		break;
+	default:
+		break;
+	}
+	return NOTIFY_DONE;
 }
 
 static enum alarmtimer_restart idletimer_tg_alarmproc(struct alarm *alarm,
@@ -158,17 +323,34 @@ static int idletimer_tg_create(struct idletimer_tg_info *info)
 
 	ret = sysfs_create_file(idletimer_tg_kobj, &info->timer->attr.attr);
 	if (ret < 0) {
-		pr_debug("couldn't add file to sysfs");
+		pr_debug("couldn't add file to sysfs\n");
 		goto out_free_attr;
 	}
 
 	list_add(&info->timer->entry, &idletimer_tg_list);
-
-	timer_setup(&info->timer->timer, idletimer_tg_expired, 0);
+	pr_debug("timer type value is 0.\n");
+	info->timer->timer_type = 0;
 	info->timer->refcnt = 1;
+	info->timer->send_nl_msg = false;
+	info->timer->active = true;
+	info->timer->timeout = info->timeout;
+
+	info->timer->delayed_timer_trigger.tv_sec = 0;
+	info->timer->delayed_timer_trigger.tv_nsec = 0;
+	info->timer->work_pending = false;
+	info->timer->uid = 0;
+	info->timer->last_modified_timer =
+		ktime_to_timespec64(ktime_get_boottime());
+
+	info->timer->pm_nb.notifier_call = idletimer_resume;
+	ret = register_pm_notifier(&info->timer->pm_nb);
+	if (ret)
+		printk(KERN_WARNING "[%s] Failed to register pm notifier %d\n",
+		       __func__, ret);
 
 	INIT_WORK(&info->timer->work, idletimer_tg_work);
 
+	timer_setup(&info->timer->timer, idletimer_tg_expired, 0);
 	mod_timer(&info->timer->timer,
 		  msecs_to_jiffies(info->timeout * 1000) + jiffies);
 
@@ -186,7 +368,7 @@ static int idletimer_tg_create_v1(struct idletimer_tg_info_v1 *info)
 {
 	int ret;
 
-	info->timer = kmalloc(sizeof(*info->timer), GFP_KERNEL);
+	info->timer = kzalloc(sizeof(*info->timer), GFP_KERNEL);
 	if (!info->timer) {
 		ret = -ENOMEM;
 		goto out;
@@ -207,7 +389,7 @@ static int idletimer_tg_create_v1(struct idletimer_tg_info_v1 *info)
 
 	ret = sysfs_create_file(idletimer_tg_kobj, &info->timer->attr.attr);
 	if (ret < 0) {
-		pr_debug("couldn't add file to sysfs");
+		pr_debug("couldn't add file to sysfs\n");
 		goto out_free_attr;
 	}
 
@@ -215,9 +397,25 @@ static int idletimer_tg_create_v1(struct idletimer_tg_info_v1 *info)
 	kobject_uevent(idletimer_tg_kobj,KOBJ_ADD);
 
 	list_add(&info->timer->entry, &idletimer_tg_list);
-	pr_debug("timer type value is %u", info->timer_type);
+	pr_debug("timer type value is %u\n", info->timer_type);
 	info->timer->timer_type = info->timer_type;
 	info->timer->refcnt = 1;
+	info->timer->send_nl_msg = (info->send_nl_msg != 0);
+	info->timer->active = true;
+	info->timer->timeout = info->timeout;
+
+	info->timer->delayed_timer_trigger.tv_sec = 0;
+	info->timer->delayed_timer_trigger.tv_nsec = 0;
+	info->timer->work_pending = false;
+	info->timer->uid = 0;
+	info->timer->last_modified_timer =
+		ktime_to_timespec64(ktime_get_boottime());
+
+	info->timer->pm_nb.notifier_call = idletimer_resume;
+	ret = register_pm_notifier(&info->timer->pm_nb);
+	if (ret)
+		printk(KERN_WARNING "[%s] Failed to register pm notifier %d\n",
+		       __func__, ret);
 
 	INIT_WORK(&info->timer->work, idletimer_tg_work);
 
@@ -231,7 +429,7 @@ static int idletimer_tg_create_v1(struct idletimer_tg_info_v1 *info)
 	} else {
 		timer_setup(&info->timer->timer, idletimer_tg_expired, 0);
 		mod_timer(&info->timer->timer,
-				msecs_to_jiffies(info->timeout * 1000) + jiffies);
+			  msecs_to_jiffies(info->timeout * 1000) + jiffies);
 	}
 
 	return 0;
@@ -244,6 +442,41 @@ static int idletimer_tg_create_v1(struct idletimer_tg_info_v1 *info)
 	return ret;
 }
 
+static void reset_timer(struct idletimer_tg * const info_timer,
+			const __u32 info_timeout,
+			struct sk_buff *skb)
+{
+	unsigned long now = jiffies;
+	bool timer_prev;
+
+	spin_lock_bh(&timestamp_lock);
+	timer_prev = info_timer->active;
+	info_timer->active = true;
+	/* timer_prev is used to guard overflow problem in time_before*/
+	if (!timer_prev || time_before(info_timer->timer.expires, now)) {
+		pr_debug("Starting Checkentry timer (Expired, Jiffies): %lu, %lu\n",
+			 info_timer->timer.expires, now);
+
+		/* Stores the uid resposible for waking up the radio */
+		if (skb && (skb->sk)) {
+			info_timer->uid = from_kuid_munged(current_user_ns(),
+							   sock_i_uid(skb_to_full_sk(skb)));
+		}
+
+		/* checks if there is a pending inactive notification*/
+		if (info_timer->work_pending)
+			info_timer->delayed_timer_trigger = info_timer->last_modified_timer;
+		else {
+			info_timer->work_pending = true;
+			schedule_work(&info_timer->work);
+		}
+	}
+
+	info_timer->last_modified_timer = ktime_to_timespec64(ktime_get_boottime());
+	mod_timer(&info_timer->timer, msecs_to_jiffies(info_timeout * 1000) + now);
+	spin_unlock_bh(&timestamp_lock);
+}
+
 /*
  * The actual xt_tables plugin.
  */
@@ -251,12 +484,21 @@ static unsigned int idletimer_tg_target(struct sk_buff *skb,
 					 const struct xt_action_param *par)
 {
 	const struct idletimer_tg_info *info = par->targinfo;
+	unsigned long now = jiffies;
 
 	pr_debug("resetting timer %s, timeout period %u\n",
 		 info->label, info->timeout);
 
-	mod_timer(&info->timer->timer,
-		  msecs_to_jiffies(info->timeout * 1000) + jiffies);
+	info->timer->active = true;
+
+	if (time_before(info->timer->timer.expires, now)) {
+		schedule_work(&info->timer->work);
+		pr_debug("Starting timer %s (Expired, Jiffies): %lu, %lu\n",
+			 info->label, info->timer->timer.expires, now);
+	}
+
+	/* TODO: Avoid modifying timers on each packet */
+	reset_timer(info->timer, info->timeout, skb);
 
 	return XT_CONTINUE;
 }
@@ -268,6 +510,7 @@ static unsigned int idletimer_tg_target_v1(struct sk_buff *skb,
 					 const struct xt_action_param *par)
 {
 	const struct idletimer_tg_info_v1 *info = par->targinfo;
+	unsigned long now = jiffies;
 
 	pr_debug("resetting timer %s, timeout period %u\n",
 		 info->label, info->timeout);
@@ -276,8 +519,16 @@ static unsigned int idletimer_tg_target_v1(struct sk_buff *skb,
 		ktime_t tout = ktime_set(info->timeout, 0);
 		alarm_start_relative(&info->timer->alarm, tout);
 	} else {
-		mod_timer(&info->timer->timer,
-				msecs_to_jiffies(info->timeout * 1000) + jiffies);
+		info->timer->active = true;
+
+		if (time_before(info->timer->timer.expires, now)) {
+			schedule_work(&info->timer->work);
+			pr_debug("Starting timer %s (Expired, Jiffies): %lu, %lu\n",
+				 info->label, info->timer->timer.expires, now);
+		}
+
+		/* TODO: Avoid modifying timers on each packet */
+		reset_timer(info->timer, info->timeout, skb);
 	}
 
 	return XT_CONTINUE;
@@ -321,9 +572,7 @@ static int idletimer_tg_checkentry(const struct xt_tgchk_param *par)
 	info->timer = __idletimer_tg_find_by_label(info->label);
 	if (info->timer) {
 		info->timer->refcnt++;
-		mod_timer(&info->timer->timer,
-			  msecs_to_jiffies(info->timeout * 1000) + jiffies);
-
+		reset_timer(info->timer, info->timeout, NULL);
 		pr_debug("increased refcnt of timer %s to %u\n",
 			 info->label, info->timer->refcnt);
 	} else {
@@ -346,9 +595,6 @@ static int idletimer_tg_checkentry_v1(const struct xt_tgchk_param *par)
 
 	pr_debug("checkentry targinfo%s\n", info->label);
 
-	if (info->send_nl_msg)
-		return -EOPNOTSUPP;
-
 	ret = idletimer_tg_helper((struct idletimer_tg_info *)info);
 	if(ret < 0)
 	{
@@ -361,6 +607,11 @@ static int idletimer_tg_checkentry_v1(const struct xt_tgchk_param *par)
 		return -EINVAL;
 	}
 
+	if (info->send_nl_msg > 1) {
+		pr_debug("invalid value for send_nl_msg\n");
+		return -EINVAL;
+	}
+
 	mutex_lock(&list_mutex);
 
 	info->timer = __idletimer_tg_find_by_label(info->label);
@@ -383,8 +634,7 @@ static int idletimer_tg_checkentry_v1(const struct xt_tgchk_param *par)
 				alarm_start_relative(&info->timer->alarm, tout);
 			}
 		} else {
-				mod_timer(&info->timer->timer,
-					msecs_to_jiffies(info->timeout * 1000) + jiffies);
+			reset_timer(info->timer, info->timeout, NULL);
 		}
 		pr_debug("increased refcnt of timer %s to %u\n",
 			 info->label, info->timer->refcnt);
@@ -414,8 +664,9 @@ static void idletimer_tg_destroy(const struct xt_tgdtor_param *par)
 
 		list_del(&info->timer->entry);
 		del_timer_sync(&info->timer->timer);
-		cancel_work_sync(&info->timer->work);
 		sysfs_remove_file(idletimer_tg_kobj, &info->timer->attr.attr);
+		unregister_pm_notifier(&info->timer->pm_nb);
+		cancel_work_sync(&info->timer->work);
 		kfree(info->timer->attr.attr.name);
 		kfree(info->timer);
 	} else {
@@ -443,8 +694,9 @@ static void idletimer_tg_destroy_v1(const struct xt_tgdtor_param *par)
 		} else {
 			del_timer_sync(&info->timer->timer);
 		}
-		cancel_work_sync(&info->timer->work);
 		sysfs_remove_file(idletimer_tg_kobj, &info->timer->attr.attr);
+		unregister_pm_notifier(&info->timer->pm_nb);
+		cancel_work_sync(&info->timer->work);
 		kfree(info->timer->attr.attr.name);
 		kfree(info->timer);
 	} else {
@@ -540,3 +792,4 @@ MODULE_DESCRIPTION("Xtables: idle time monitor");
 MODULE_LICENSE("GPL v2");
 MODULE_ALIAS("ipt_IDLETIMER");
 MODULE_ALIAS("ip6t_IDLETIMER");
+MODULE_ALIAS("arpt_IDLETIMER");
diff --git a/net/netfilter/xt_quota2.c b/net/netfilter/xt_quota2.c
new file mode 100644
index 0000000..27acc86
--- /dev/null
+++ b/net/netfilter/xt_quota2.c
@@ -0,0 +1,397 @@
+/*
+ * xt_quota2 - enhanced xt_quota that can count upwards and in packets
+ * as a minimal accounting match.
+ * by Jan Engelhardt <jengelh@medozas.de>, 2008
+ *
+ * Originally based on xt_quota.c:
+ * 	netfilter module to enforce network quotas
+ * 	Sam Johnston <samj@samj.net>
+ *
+ *	This program is free software; you can redistribute it and/or modify
+ *	it under the terms of the GNU General Public License; either
+ *	version 2 of the License, as published by the Free Software Foundation.
+ */
+#include <linux/list.h>
+#include <linux/module.h>
+#include <linux/proc_fs.h>
+#include <linux/skbuff.h>
+#include <linux/spinlock.h>
+#include <asm/atomic.h>
+#include <net/netlink.h>
+
+#include <linux/netfilter/x_tables.h>
+#include <linux/netfilter/xt_quota2.h>
+
+#ifdef CONFIG_NETFILTER_XT_MATCH_QUOTA2_LOG
+/* For compatibility, these definitions are copied from the
+ * deprecated header file <linux/netfilter_ipv4/ipt_ULOG.h> */
+#define ULOG_MAC_LEN	80
+#define ULOG_PREFIX_LEN	32
+
+/* Format of the ULOG packets passed through netlink */
+typedef struct ulog_packet_msg {
+	unsigned long mark;
+	long timestamp_sec;
+	long timestamp_usec;
+	unsigned int hook;
+	char indev_name[IFNAMSIZ];
+	char outdev_name[IFNAMSIZ];
+	size_t data_len;
+	char prefix[ULOG_PREFIX_LEN];
+	unsigned char mac_len;
+	unsigned char mac[ULOG_MAC_LEN];
+	unsigned char payload[0];
+} ulog_packet_msg_t;
+#endif
+
+/**
+ * @lock:	lock to protect quota writers from each other
+ */
+struct xt_quota_counter {
+	u_int64_t quota;
+	spinlock_t lock;
+	struct list_head list;
+	atomic_t ref;
+	char name[sizeof(((struct xt_quota_mtinfo2 *)NULL)->name)];
+	struct proc_dir_entry *procfs_entry;
+};
+
+#ifdef CONFIG_NETFILTER_XT_MATCH_QUOTA2_LOG
+/* Harald's favorite number +1 :D From ipt_ULOG.C */
+static int qlog_nl_event = 112;
+module_param_named(event_num, qlog_nl_event, uint, S_IRUGO | S_IWUSR);
+MODULE_PARM_DESC(event_num,
+		 "Event number for NETLINK_NFLOG message. 0 disables log."
+		 "111 is what ipt_ULOG uses.");
+static struct sock *nflognl;
+#endif
+
+static LIST_HEAD(counter_list);
+static DEFINE_SPINLOCK(counter_list_lock);
+
+static struct proc_dir_entry *proc_xt_quota;
+static unsigned int quota_list_perms = S_IRUGO | S_IWUSR;
+static kuid_t quota_list_uid = KUIDT_INIT(0);
+static kgid_t quota_list_gid = KGIDT_INIT(0);
+module_param_named(perms, quota_list_perms, uint, S_IRUGO | S_IWUSR);
+
+#ifdef CONFIG_NETFILTER_XT_MATCH_QUOTA2_LOG
+static void quota2_log(unsigned int hooknum,
+		       const struct sk_buff *skb,
+		       const struct net_device *in,
+		       const struct net_device *out,
+		       const char *prefix)
+{
+	ulog_packet_msg_t *pm;
+	struct sk_buff *log_skb;
+	size_t size;
+	struct nlmsghdr *nlh;
+
+	if (!qlog_nl_event)
+		return;
+
+	size = NLMSG_SPACE(sizeof(*pm));
+	size = max(size, (size_t)NLMSG_GOODSIZE);
+	log_skb = alloc_skb(size, GFP_ATOMIC);
+	if (!log_skb) {
+		pr_err("xt_quota2: cannot alloc skb for logging\n");
+		return;
+	}
+
+	nlh = nlmsg_put(log_skb, /*pid*/0, /*seq*/0, qlog_nl_event,
+			sizeof(*pm), 0);
+	if (!nlh) {
+		pr_err("xt_quota2: nlmsg_put failed\n");
+		kfree_skb(log_skb);
+		return;
+	}
+	pm = nlmsg_data(nlh);
+	memset(pm, 0, sizeof(*pm));
+	if (skb->tstamp == 0)
+		__net_timestamp((struct sk_buff *)skb);
+	pm->hook = hooknum;
+	if (prefix != NULL)
+		strlcpy(pm->prefix, prefix, sizeof(pm->prefix));
+	if (in)
+		strlcpy(pm->indev_name, in->name, sizeof(pm->indev_name));
+	if (out)
+		strlcpy(pm->outdev_name, out->name, sizeof(pm->outdev_name));
+
+	NETLINK_CB(log_skb).dst_group = 1;
+	pr_debug("throwing 1 packets to netlink group 1\n");
+	netlink_broadcast(nflognl, log_skb, 0, 1, GFP_ATOMIC);
+}
+#else
+static void quota2_log(unsigned int hooknum,
+		       const struct sk_buff *skb,
+		       const struct net_device *in,
+		       const struct net_device *out,
+		       const char *prefix)
+{
+}
+#endif  /* if+else CONFIG_NETFILTER_XT_MATCH_QUOTA2_LOG */
+
+static ssize_t quota_proc_read(struct file *file, char __user *buf,
+			   size_t size, loff_t *ppos)
+{
+	struct xt_quota_counter *e = pde_data(file_inode(file));
+	char tmp[24];
+	size_t tmp_size;
+
+	spin_lock_bh(&e->lock);
+	tmp_size = scnprintf(tmp, sizeof(tmp), "%llu\n", e->quota);
+	spin_unlock_bh(&e->lock);
+	return simple_read_from_buffer(buf, size, ppos, tmp, tmp_size);
+}
+
+static ssize_t quota_proc_write(struct file *file, const char __user *input,
+                            size_t size, loff_t *ppos)
+{
+	struct xt_quota_counter *e = pde_data(file_inode(file));
+	char buf[sizeof("18446744073709551616")];
+
+	if (size > sizeof(buf))
+		size = sizeof(buf);
+	if (copy_from_user(buf, input, size) != 0)
+		return -EFAULT;
+	buf[sizeof(buf)-1] = '\0';
+	if (size < sizeof(buf))
+		buf[size] = '\0';
+
+	spin_lock_bh(&e->lock);
+	e->quota = simple_strtoull(buf, NULL, 0);
+	spin_unlock_bh(&e->lock);
+	return size;
+}
+
+static const struct proc_ops q2_counter_fops = {
+	.proc_read	= quota_proc_read,
+	.proc_write	= quota_proc_write,
+	.proc_lseek	= default_llseek,
+};
+
+static struct xt_quota_counter *
+q2_new_counter(const struct xt_quota_mtinfo2 *q, bool anon)
+{
+	struct xt_quota_counter *e;
+	unsigned int size;
+
+	/* Do not need all the procfs things for anonymous counters. */
+	size = anon ? offsetof(typeof(*e), list) : sizeof(*e);
+	e = kmalloc(size, GFP_KERNEL);
+	if (e == NULL)
+		return NULL;
+
+	e->quota = q->quota;
+	spin_lock_init(&e->lock);
+	if (!anon) {
+		INIT_LIST_HEAD(&e->list);
+		atomic_set(&e->ref, 1);
+		strlcpy(e->name, q->name, sizeof(e->name));
+	}
+	return e;
+}
+
+/**
+ * q2_get_counter - get ref to counter or create new
+ * @name:	name of counter
+ */
+static struct xt_quota_counter *
+q2_get_counter(const struct xt_quota_mtinfo2 *q)
+{
+	struct proc_dir_entry *p;
+	struct xt_quota_counter *e = NULL;
+	struct xt_quota_counter *new_e;
+
+	if (*q->name == '\0')
+		return q2_new_counter(q, true);
+
+	/* No need to hold a lock while getting a new counter */
+	new_e = q2_new_counter(q, false);
+	if (new_e == NULL)
+		goto out;
+
+	spin_lock_bh(&counter_list_lock);
+	list_for_each_entry(e, &counter_list, list)
+		if (strcmp(e->name, q->name) == 0) {
+			atomic_inc(&e->ref);
+			spin_unlock_bh(&counter_list_lock);
+			kfree(new_e);
+			pr_debug("xt_quota2: old counter name=%s", e->name);
+			return e;
+		}
+	e = new_e;
+	pr_debug("xt_quota2: new_counter name=%s", e->name);
+	list_add_tail(&e->list, &counter_list);
+	/* The entry having a refcount of 1 is not directly destructible.
+	 * This func has not yet returned the new entry, thus iptables
+	 * has not references for destroying this entry.
+	 * For another rule to try to destroy it, it would 1st need for this
+	 * func* to be re-invoked, acquire a new ref for the same named quota.
+	 * Nobody will access the e->procfs_entry either.
+	 * So release the lock. */
+	spin_unlock_bh(&counter_list_lock);
+
+	/* create_proc_entry() is not spin_lock happy */
+	p = e->procfs_entry = proc_create_data(e->name, quota_list_perms,
+	                      proc_xt_quota, &q2_counter_fops, e);
+
+	if (IS_ERR_OR_NULL(p)) {
+		spin_lock_bh(&counter_list_lock);
+		list_del(&e->list);
+		spin_unlock_bh(&counter_list_lock);
+		goto out;
+	}
+	proc_set_user(p, quota_list_uid, quota_list_gid);
+	return e;
+
+ out:
+	kfree(e);
+	return NULL;
+}
+
+static int quota_mt2_check(const struct xt_mtchk_param *par)
+{
+	struct xt_quota_mtinfo2 *q = par->matchinfo;
+
+	pr_debug("xt_quota2: check() flags=0x%04x", q->flags);
+
+	if (q->flags & ~XT_QUOTA_MASK)
+		return -EINVAL;
+
+	q->name[sizeof(q->name)-1] = '\0';
+	if (*q->name == '.' || strchr(q->name, '/') != NULL) {
+		printk(KERN_ERR "xt_quota.3: illegal name\n");
+		return -EINVAL;
+	}
+
+	q->master = q2_get_counter(q);
+	if (q->master == NULL) {
+		printk(KERN_ERR "xt_quota.3: memory alloc failure\n");
+		return -ENOMEM;
+	}
+
+	return 0;
+}
+
+static void quota_mt2_destroy(const struct xt_mtdtor_param *par)
+{
+	struct xt_quota_mtinfo2 *q = par->matchinfo;
+	struct xt_quota_counter *e = q->master;
+
+	if (*q->name == '\0') {
+		kfree(e);
+		return;
+	}
+
+	spin_lock_bh(&counter_list_lock);
+	if (!atomic_dec_and_test(&e->ref)) {
+		spin_unlock_bh(&counter_list_lock);
+		return;
+	}
+
+	list_del(&e->list);
+	spin_unlock_bh(&counter_list_lock);
+	remove_proc_entry(e->name, proc_xt_quota);
+	kfree(e);
+}
+
+static bool
+quota_mt2(const struct sk_buff *skb, struct xt_action_param *par)
+{
+	struct xt_quota_mtinfo2 *q = (void *)par->matchinfo;
+	struct xt_quota_counter *e = q->master;
+	int charge = (q->flags & XT_QUOTA_PACKET) ? 1 : skb->len;
+	bool no_change = q->flags & XT_QUOTA_NO_CHANGE;
+	bool ret = q->flags & XT_QUOTA_INVERT;
+
+	spin_lock_bh(&e->lock);
+	if (q->flags & XT_QUOTA_GROW) {
+		/*
+		 * While no_change is pointless in "grow" mode, we will
+		 * implement it here simply to have a consistent behavior.
+		 */
+		if (!no_change)
+			e->quota += charge;
+		ret = true; /* note: does not respect inversion (bug??) */
+	} else {
+		if (e->quota > charge) {
+			if (!no_change)
+				e->quota -= charge;
+			ret = !ret;
+		} else if (e->quota) {
+			/* We are transitioning, log that fact. */
+			quota2_log(xt_hooknum(par),
+				   skb,
+				   xt_in(par),
+				   xt_out(par),
+				   q->name);
+			/* we do not allow even small packets from now on */
+			e->quota = 0;
+		}
+	}
+	spin_unlock_bh(&e->lock);
+	return ret;
+}
+
+static struct xt_match quota_mt2_reg[] __read_mostly = {
+	{
+		.name       = "quota2",
+		.revision   = 3,
+		.family     = NFPROTO_IPV4,
+		.checkentry = quota_mt2_check,
+		.match      = quota_mt2,
+		.destroy    = quota_mt2_destroy,
+		.matchsize  = sizeof(struct xt_quota_mtinfo2),
+		.usersize   = offsetof(struct xt_quota_mtinfo2, master),
+		.me         = THIS_MODULE,
+	},
+	{
+		.name       = "quota2",
+		.revision   = 3,
+		.family     = NFPROTO_IPV6,
+		.checkentry = quota_mt2_check,
+		.match      = quota_mt2,
+		.destroy    = quota_mt2_destroy,
+		.matchsize  = sizeof(struct xt_quota_mtinfo2),
+		.usersize   = offsetof(struct xt_quota_mtinfo2, master),
+		.me         = THIS_MODULE,
+	},
+};
+
+static int __init quota_mt2_init(void)
+{
+	int ret;
+	pr_debug("xt_quota2: init()");
+
+#ifdef CONFIG_NETFILTER_XT_MATCH_QUOTA2_LOG
+	nflognl = netlink_kernel_create(&init_net, NETLINK_NFLOG, NULL);
+	if (!nflognl)
+		return -ENOMEM;
+#endif
+
+	proc_xt_quota = proc_mkdir("xt_quota", init_net.proc_net);
+	if (proc_xt_quota == NULL)
+		return -EACCES;
+
+	ret = xt_register_matches(quota_mt2_reg, ARRAY_SIZE(quota_mt2_reg));
+	if (ret < 0)
+		remove_proc_entry("xt_quota", init_net.proc_net);
+	pr_debug("xt_quota2: init() %d", ret);
+	return ret;
+}
+
+static void __exit quota_mt2_exit(void)
+{
+	xt_unregister_matches(quota_mt2_reg, ARRAY_SIZE(quota_mt2_reg));
+	remove_proc_entry("xt_quota", init_net.proc_net);
+}
+
+module_init(quota_mt2_init);
+module_exit(quota_mt2_exit);
+MODULE_DESCRIPTION("Xtables: countdown quota match; up counter");
+MODULE_AUTHOR("Sam Johnston <samj@samj.net>");
+MODULE_AUTHOR("Jan Engelhardt <jengelh@medozas.de>");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("ipt_quota2");
+MODULE_ALIAS("ip6t_quota2");
diff --git a/net/vmw_vsock/virtio_transport_common.c b/net/vmw_vsock/virtio_transport_common.c
index a9980e9b..b6ab3c0 100644
--- a/net/vmw_vsock/virtio_transport_common.c
+++ b/net/vmw_vsock/virtio_transport_common.c
@@ -26,6 +26,10 @@
 /* Threshold for detecting small packets to copy */
 #define GOOD_COPY_LEN  128
 
+uint virtio_transport_max_vsock_pkt_buf_size = 64 * 1024;
+module_param(virtio_transport_max_vsock_pkt_buf_size, uint, 0444);
+EXPORT_SYMBOL_GPL(virtio_transport_max_vsock_pkt_buf_size);
+
 static const struct virtio_transport *
 virtio_transport_get_ops(struct vsock_sock *vsk)
 {
diff --git a/net/wireless/ap.c b/net/wireless/ap.c
index e689232..0962770 100644
--- a/net/wireless/ap.c
+++ b/net/wireless/ap.c
@@ -39,7 +39,7 @@ static int ___cfg80211_stop_ap(struct cfg80211_registered_device *rdev,
 		wdev->u.ap.ssid_len = 0;
 		rdev_set_qos_map(rdev, dev, NULL);
 		if (notify)
-			nl80211_send_ap_stopped(wdev);
+			nl80211_send_ap_stopped(wdev, link_id);
 
 		/* Should we apply the grace period during beaconing interface
 		 * shutdown also?
diff --git a/net/wireless/chan.c b/net/wireless/chan.c
index 0e5835c..0b7e81d 100644
--- a/net/wireless/chan.c
+++ b/net/wireless/chan.c
@@ -1460,3 +1460,72 @@ struct cfg80211_chan_def *wdev_chandef(struct wireless_dev *wdev,
 	}
 }
 EXPORT_SYMBOL(wdev_chandef);
+
+struct cfg80211_per_bw_puncturing_values {
+	u8 len;
+	const u16 *valid_values;
+};
+
+static const u16 puncturing_values_80mhz[] = {
+	0x8, 0x4, 0x2, 0x1
+};
+
+static const u16 puncturing_values_160mhz[] = {
+	 0x80, 0x40, 0x20, 0x10, 0x8, 0x4, 0x2, 0x1, 0xc0, 0x30, 0xc, 0x3
+};
+
+static const u16 puncturing_values_320mhz[] = {
+	0xc000, 0x3000, 0xc00, 0x300, 0xc0, 0x30, 0xc, 0x3, 0xf000, 0xf00,
+	0xf0, 0xf, 0xfc00, 0xf300, 0xf0c0, 0xf030, 0xf00c, 0xf003, 0xc00f,
+	0x300f, 0xc0f, 0x30f, 0xcf, 0x3f
+};
+
+#define CFG80211_PER_BW_VALID_PUNCTURING_VALUES(_bw) \
+	{ \
+		.len = ARRAY_SIZE(puncturing_values_ ## _bw ## mhz), \
+		.valid_values = puncturing_values_ ## _bw ## mhz \
+	}
+
+static const struct cfg80211_per_bw_puncturing_values per_bw_puncturing[] = {
+	CFG80211_PER_BW_VALID_PUNCTURING_VALUES(80),
+	CFG80211_PER_BW_VALID_PUNCTURING_VALUES(160),
+	CFG80211_PER_BW_VALID_PUNCTURING_VALUES(320)
+};
+
+bool cfg80211_valid_disable_subchannel_bitmap(u16 *bitmap,
+					      const struct cfg80211_chan_def *chandef)
+{
+	u32 idx, i, start_freq;
+
+	switch (chandef->width) {
+	case NL80211_CHAN_WIDTH_80:
+		idx = 0;
+		start_freq = chandef->center_freq1 - 40;
+		break;
+	case NL80211_CHAN_WIDTH_160:
+		idx = 1;
+		start_freq = chandef->center_freq1 - 80;
+		break;
+	case NL80211_CHAN_WIDTH_320:
+		idx = 2;
+		start_freq = chandef->center_freq1 - 160;
+		break;
+	default:
+		*bitmap = 0;
+		break;
+	}
+
+	if (!*bitmap)
+		return true;
+
+	/* check if primary channel is punctured */
+	if (*bitmap & (u16)BIT((chandef->chan->center_freq - start_freq) / 20))
+		return false;
+
+	for (i = 0; i < per_bw_puncturing[idx].len; i++)
+		if (per_bw_puncturing[idx].valid_values[i] == *bitmap)
+			return true;
+
+	return false;
+}
+EXPORT_SYMBOL(cfg80211_valid_disable_subchannel_bitmap);
diff --git a/net/wireless/core.h b/net/wireless/core.h
index 775e16c..af85d89 100644
--- a/net/wireless/core.h
+++ b/net/wireless/core.h
@@ -271,6 +271,8 @@ struct cfg80211_event {
 		} ij;
 		struct {
 			u8 bssid[ETH_ALEN];
+			const u8 *td_bitmap;
+			u8 td_bitmap_len;
 		} pa;
 	};
 };
@@ -409,7 +411,8 @@ int cfg80211_disconnect(struct cfg80211_registered_device *rdev,
 			bool wextev);
 void __cfg80211_roamed(struct wireless_dev *wdev,
 		       struct cfg80211_roam_info *info);
-void __cfg80211_port_authorized(struct wireless_dev *wdev, const u8 *bssid);
+void __cfg80211_port_authorized(struct wireless_dev *wdev, const u8 *bssid,
+				const u8 *td_bitmap, u8 td_bitmap_len);
 int cfg80211_mgd_wext_connect(struct cfg80211_registered_device *rdev,
 			      struct wireless_dev *wdev);
 void cfg80211_autodisconnect_wk(struct work_struct *work);
diff --git a/net/wireless/mlme.c b/net/wireless/mlme.c
index 581df7f..ac059ce 100644
--- a/net/wireless/mlme.c
+++ b/net/wireless/mlme.c
@@ -42,6 +42,10 @@ void cfg80211_rx_assoc_resp(struct net_device *dev,
 	unsigned int link_id;
 
 	for (link_id = 0; link_id < ARRAY_SIZE(data->links); link_id++) {
+		cr.links[link_id].status = data->links[link_id].status;
+		WARN_ON_ONCE(cr.links[link_id].status != WLAN_STATUS_SUCCESS &&
+			     (!cr.ap_mld_addr || !cr.links[link_id].bss));
+
 		cr.links[link_id].bss = data->links[link_id].bss;
 		if (!cr.links[link_id].bss)
 			continue;
@@ -669,6 +673,39 @@ static bool cfg80211_allowed_address(struct wireless_dev *wdev, const u8 *addr)
 	return ether_addr_equal(addr, wdev_address(wdev));
 }
 
+static bool cfg80211_allowed_random_address(struct wireless_dev *wdev,
+					    const struct ieee80211_mgmt *mgmt)
+{
+	if (ieee80211_is_auth(mgmt->frame_control) ||
+	    ieee80211_is_deauth(mgmt->frame_control)) {
+		/* Allow random TA to be used with authentication and
+		 * deauthentication frames if the driver has indicated support.
+		 */
+		if (wiphy_ext_feature_isset(
+			    wdev->wiphy,
+			    NL80211_EXT_FEATURE_AUTH_AND_DEAUTH_RANDOM_TA))
+			return true;
+	} else if (ieee80211_is_action(mgmt->frame_control) &&
+		   mgmt->u.action.category == WLAN_CATEGORY_PUBLIC) {
+		/* Allow random TA to be used with Public Action frames if the
+		 * driver has indicated support.
+		 */
+		if (!wdev->connected &&
+		    wiphy_ext_feature_isset(
+			    wdev->wiphy,
+			    NL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA))
+			return true;
+
+		if (wdev->connected &&
+		    wiphy_ext_feature_isset(
+			    wdev->wiphy,
+			    NL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA_CONNECTED))
+			return true;
+	}
+
+	return false;
+}
+
 int cfg80211_mlme_mgmt_tx(struct cfg80211_registered_device *rdev,
 			  struct wireless_dev *wdev,
 			  struct cfg80211_mgmt_tx_params *params, u64 *cookie)
@@ -738,7 +775,10 @@ int cfg80211_mlme_mgmt_tx(struct cfg80211_registered_device *rdev,
 		case NL80211_IFTYPE_AP:
 		case NL80211_IFTYPE_P2P_GO:
 		case NL80211_IFTYPE_AP_VLAN:
-			if (!ether_addr_equal(mgmt->bssid, wdev_address(wdev)))
+			if (!ether_addr_equal(mgmt->bssid, wdev_address(wdev)) &&
+			    (params->link_id < 0 ||
+			     !ether_addr_equal(mgmt->bssid,
+					       wdev->links[params->link_id].addr)))
 				err = -EINVAL;
 			break;
 		case NL80211_IFTYPE_MESH_POINT:
@@ -767,25 +807,9 @@ int cfg80211_mlme_mgmt_tx(struct cfg80211_registered_device *rdev,
 			return err;
 	}
 
-	if (!cfg80211_allowed_address(wdev, mgmt->sa)) {
-		/* Allow random TA to be used with Public Action frames if the
-		 * driver has indicated support for this. Otherwise, only allow
-		 * the local address to be used.
-		 */
-		if (!ieee80211_is_action(mgmt->frame_control) ||
-		    mgmt->u.action.category != WLAN_CATEGORY_PUBLIC)
-			return -EINVAL;
-		if (!wdev->connected &&
-		    !wiphy_ext_feature_isset(
-			    &rdev->wiphy,
-			    NL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA))
-			return -EINVAL;
-		if (wdev->connected &&
-		    !wiphy_ext_feature_isset(
-			    &rdev->wiphy,
-			    NL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA_CONNECTED))
-			return -EINVAL;
-	}
+	if (!cfg80211_allowed_address(wdev, mgmt->sa) &&
+	    !cfg80211_allowed_random_address(wdev, mgmt))
+		return -EINVAL;
 
 	/* Transmit the management frame as requested by user space */
 	return rdev_mgmt_tx(rdev, wdev, params, cookie);
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 087c0c4..1fcc9c9 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -462,6 +462,11 @@ nl80211_sta_wme_policy[NL80211_STA_WME_MAX + 1] = {
 	[NL80211_STA_WME_MAX_SP] = { .type = NLA_U8 },
 };
 
+static struct netlink_range_validation nl80211_punct_bitmap_range = {
+	.min = 0,
+	.max = 0xffff,
+};
+
 static const struct nla_policy nl80211_policy[NUM_NL80211_ATTR] = {
 	[0] = { .strict_start_type = NL80211_ATTR_HE_OBSS_PD },
 	[NL80211_ATTR_WIPHY] = { .type = NLA_U32 },
@@ -805,6 +810,8 @@ static const struct nla_policy nl80211_policy[NUM_NL80211_ATTR] = {
 	[NL80211_ATTR_MLD_ADDR] = NLA_POLICY_EXACT_LEN(ETH_ALEN),
 	[NL80211_ATTR_MLO_SUPPORT] = { .type = NLA_FLAG },
 	[NL80211_ATTR_MAX_NUM_AKM_SUITES] = { .type = NLA_REJECT },
+	[NL80211_ATTR_PUNCT_BITMAP] =
+		NLA_POLICY_FULL_RANGE(NLA_U32, &nl80211_punct_bitmap_range),
 };
 
 /* policy for the key attributes */
@@ -883,7 +890,7 @@ nl80211_rekey_policy[NUM_NL80211_REKEY_DATA] = {
 	},
 	[NL80211_REKEY_DATA_KCK] = {
 		.type = NLA_BINARY,
-		.len = NL80211_KCK_EXT_LEN
+		.len = NL80211_KCK_EXT_LEN_32
 	},
 	[NL80211_REKEY_DATA_REPLAY_CTR] = NLA_POLICY_EXACT_LEN(NL80211_REPLAY_CTR_LEN),
 	[NL80211_REKEY_DATA_AKM] = { .type = NLA_U32 },
@@ -1548,10 +1555,14 @@ static int nl80211_key_allowed(struct wireless_dev *wdev)
 		if (wdev->connected)
 			return 0;
 		return -ENOLINK;
+	case NL80211_IFTYPE_NAN:
+		if (wiphy_ext_feature_isset(wdev->wiphy,
+					    NL80211_EXT_FEATURE_SECURE_NAN))
+			return 0;
+		return -EINVAL;
 	case NL80211_IFTYPE_UNSPECIFIED:
 	case NL80211_IFTYPE_OCB:
 	case NL80211_IFTYPE_MONITOR:
-	case NL80211_IFTYPE_NAN:
 	case NL80211_IFTYPE_P2P_DEVICE:
 	case NL80211_IFTYPE_WDS:
 	case NUM_NL80211_IFTYPES:
@@ -3173,6 +3184,21 @@ static bool nl80211_can_set_dev_channel(struct wireless_dev *wdev)
 		wdev->iftype == NL80211_IFTYPE_P2P_GO;
 }
 
+static int nl80211_parse_punct_bitmap(struct cfg80211_registered_device *rdev,
+				      struct genl_info *info,
+				      const struct cfg80211_chan_def *chandef,
+				      u16 *punct_bitmap)
+{
+	if (!wiphy_ext_feature_isset(&rdev->wiphy, NL80211_EXT_FEATURE_PUNCT))
+		return -EINVAL;
+
+	*punct_bitmap = nla_get_u32(info->attrs[NL80211_ATTR_PUNCT_BITMAP]);
+	if (!cfg80211_valid_disable_subchannel_bitmap(punct_bitmap, chandef))
+		return -EINVAL;
+
+	return 0;
+}
+
 int nl80211_parse_chandef(struct cfg80211_registered_device *rdev,
 			  struct genl_info *info,
 			  struct cfg80211_chan_def *chandef)
@@ -5918,6 +5944,14 @@ static int nl80211_start_ap(struct sk_buff *skb, struct genl_info *info)
 		goto out;
 	}
 
+	if (info->attrs[NL80211_ATTR_PUNCT_BITMAP]) {
+		err = nl80211_parse_punct_bitmap(rdev, info,
+						 &params->chandef,
+						 &params->punct_bitmap);
+		if (err)
+			goto out;
+	}
+
 	if (!cfg80211_reg_can_beacon_relax(&rdev->wiphy, &params->chandef,
 					   wdev->iftype)) {
 		err = -EINVAL;
@@ -6527,6 +6561,22 @@ static int nl80211_send_station(struct sk_buff *msg, u32 cmd, u32 portid,
 		    sinfo->assoc_req_ies))
 		goto nla_put_failure;
 
+	if (sinfo->assoc_resp_ies_len &&
+	    nla_put(msg, NL80211_ATTR_RESP_IE, sinfo->assoc_resp_ies_len,
+		    sinfo->assoc_resp_ies))
+		goto nla_put_failure;
+
+	if (sinfo->mlo_params_valid) {
+		if (nla_put_u8(msg, NL80211_ATTR_MLO_LINK_ID,
+			       sinfo->assoc_link_id))
+			goto nla_put_failure;
+
+		if (!is_zero_ether_addr(sinfo->mld_addr) &&
+		    nla_put(msg, NL80211_ATTR_MLD_ADDR, ETH_ALEN,
+			    sinfo->mld_addr))
+			goto nla_put_failure;
+	}
+
 	cfg80211_sinfo_release_content(sinfo);
 	genlmsg_end(msg, hdr);
 	return 0;
@@ -7783,6 +7833,7 @@ static int nl80211_set_bss(struct sk_buff *skb, struct genl_info *info)
 	int err;
 
 	memset(&params, 0, sizeof(params));
+	params.link_id = nl80211_link_id_or_invalid(info->attrs);
 	/* default to not changing parameters */
 	params.use_cts_prot = -1;
 	params.use_short_preamble = -1;
@@ -10056,6 +10107,14 @@ static int nl80211_channel_switch(struct sk_buff *skb, struct genl_info *info)
 	if (info->attrs[NL80211_ATTR_CH_SWITCH_BLOCK_TX])
 		params.block_tx = true;
 
+	if (info->attrs[NL80211_ATTR_PUNCT_BITMAP]) {
+		err = nl80211_parse_punct_bitmap(rdev, info,
+						 &params.chandef,
+						 &params.punct_bitmap);
+		if (err)
+			goto free;
+	}
+
 	wdev_lock(wdev);
 	err = rdev_channel_switch(rdev, dev, &params);
 	wdev_unlock(wdev);
@@ -12252,6 +12311,10 @@ static int nl80211_register_mgmt(struct sk_buff *skb, struct genl_info *info)
 	case NL80211_IFTYPE_P2P_DEVICE:
 		break;
 	case NL80211_IFTYPE_NAN:
+		if (!wiphy_ext_feature_isset(wdev->wiphy,
+					     NL80211_EXT_FEATURE_SECURE_NAN))
+			return -EOPNOTSUPP;
+		break;
 	default:
 		return -EOPNOTSUPP;
 	}
@@ -12309,6 +12372,10 @@ static int nl80211_tx_mgmt(struct sk_buff *skb, struct genl_info *info)
 	case NL80211_IFTYPE_P2P_GO:
 		break;
 	case NL80211_IFTYPE_NAN:
+		if (!wiphy_ext_feature_isset(wdev->wiphy,
+					     NL80211_EXT_FEATURE_SECURE_NAN))
+			return -EOPNOTSUPP;
+		break;
 	default:
 		return -EOPNOTSUPP;
 	}
@@ -12446,6 +12513,10 @@ static int nl80211_tx_mgmt_cancel_wait(struct sk_buff *skb, struct genl_info *in
 	case NL80211_IFTYPE_P2P_DEVICE:
 		break;
 	case NL80211_IFTYPE_NAN:
+		if (!wiphy_ext_feature_isset(wdev->wiphy,
+					     NL80211_EXT_FEATURE_SECURE_NAN))
+			return -EOPNOTSUPP;
+		break;
 	default:
 		return -EOPNOTSUPP;
 	}
@@ -13808,7 +13879,9 @@ static int nl80211_set_rekey_data(struct sk_buff *skb, struct genl_info *info)
 		return -ERANGE;
 	if (nla_len(tb[NL80211_REKEY_DATA_KCK]) != NL80211_KCK_LEN &&
 	    !(rdev->wiphy.flags & WIPHY_FLAG_SUPPORTS_EXT_KEK_KCK &&
-	      nla_len(tb[NL80211_REKEY_DATA_KCK]) == NL80211_KCK_EXT_LEN))
+	      nla_len(tb[NL80211_REKEY_DATA_KCK]) == NL80211_KCK_EXT_LEN) &&
+	     !(rdev->wiphy.flags & WIPHY_FLAG_SUPPORTS_EXT_KCK_32 &&
+	       nla_len(tb[NL80211_REKEY_DATA_KCK]) == NL80211_KCK_EXT_LEN_32))
 		return -ERANGE;
 
 	rekey_data.kek = nla_data(tb[NL80211_REKEY_DATA_KEK]);
@@ -16569,7 +16642,8 @@ static const struct genl_small_ops nl80211_small_ops[] = {
 		.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
 		.doit = nl80211_set_bss,
 		.flags = GENL_UNS_ADMIN_PERM,
-		.internal_flags = IFLAGS(NL80211_FLAG_NEED_NETDEV_UP),
+		.internal_flags = IFLAGS(NL80211_FLAG_NEED_NETDEV_UP |
+					 NL80211_FLAG_MLO_VALID_LINK_ID),
 	},
 	{
 		.cmd = NL80211_CMD_GET_REG,
@@ -17750,6 +17824,7 @@ void nl80211_send_connect_result(struct cfg80211_registered_device *rdev,
 			link_info_size += (cr->links[link].bssid ||
 					   cr->links[link].bss) ?
 					  nla_total_size(ETH_ALEN) : 0;
+			link_info_size += nla_total_size(sizeof(u16));
 		}
 	}
 
@@ -17818,7 +17893,9 @@ void nl80211_send_connect_result(struct cfg80211_registered_device *rdev,
 			     nla_put(msg, NL80211_ATTR_BSSID, ETH_ALEN, bssid)) ||
 			    (cr->links[link].addr &&
 			     nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN,
-				     cr->links[link].addr)))
+				     cr->links[link].addr)) ||
+			    nla_put_u16(msg, NL80211_ATTR_STATUS_CODE,
+					cr->links[link].status))
 				goto nla_put_failure;
 
 			nla_nest_end(msg, nested_mlo_links);
@@ -17942,7 +18019,8 @@ void nl80211_send_roamed(struct cfg80211_registered_device *rdev,
 }
 
 void nl80211_send_port_authorized(struct cfg80211_registered_device *rdev,
-				  struct net_device *netdev, const u8 *bssid)
+				  struct net_device *netdev, const u8 *bssid,
+				  const u8 *td_bitmap, u8 td_bitmap_len)
 {
 	struct sk_buff *msg;
 	void *hdr;
@@ -17962,6 +18040,11 @@ void nl80211_send_port_authorized(struct cfg80211_registered_device *rdev,
 	    nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, bssid))
 		goto nla_put_failure;
 
+	if ((td_bitmap_len > 0) && td_bitmap)
+		if (nla_put(msg, NL80211_ATTR_TD_BITMAP,
+			    td_bitmap_len, td_bitmap))
+			goto nla_put_failure;
+
 	genlmsg_end(msg, hdr);
 
 	genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
@@ -18597,7 +18680,9 @@ EXPORT_SYMBOL(cfg80211_mgmt_tx_status_ext);
 
 static int __nl80211_rx_control_port(struct net_device *dev,
 				     struct sk_buff *skb,
-				     bool unencrypted, gfp_t gfp)
+				     bool unencrypted,
+				     int link_id,
+				     gfp_t gfp)
 {
 	struct wireless_dev *wdev = dev->ieee80211_ptr;
 	struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
@@ -18629,6 +18714,8 @@ static int __nl80211_rx_control_port(struct net_device *dev,
 			      NL80211_ATTR_PAD) ||
 	    nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr) ||
 	    nla_put_u16(msg, NL80211_ATTR_CONTROL_PORT_ETHERTYPE, proto) ||
+	    (link_id >= 0 &&
+	     nla_put_u8(msg, NL80211_ATTR_MLO_LINK_ID, link_id)) ||
 	    (unencrypted && nla_put_flag(msg,
 					 NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT)))
 		goto nla_put_failure;
@@ -18647,13 +18734,14 @@ static int __nl80211_rx_control_port(struct net_device *dev,
 	return -ENOBUFS;
 }
 
-bool cfg80211_rx_control_port(struct net_device *dev,
-			      struct sk_buff *skb, bool unencrypted)
+bool cfg80211_rx_control_port(struct net_device *dev, struct sk_buff *skb,
+			      bool unencrypted, int link_id)
 {
 	int ret;
 
-	trace_cfg80211_rx_control_port(dev, skb, unencrypted);
-	ret = __nl80211_rx_control_port(dev, skb, unencrypted, GFP_ATOMIC);
+	trace_cfg80211_rx_control_port(dev, skb, unencrypted, link_id);
+	ret = __nl80211_rx_control_port(dev, skb, unencrypted, link_id,
+					GFP_ATOMIC);
 	trace_cfg80211_return_bool(ret == 0);
 	return ret == 0;
 }
@@ -18941,7 +19029,7 @@ static void nl80211_ch_switch_notify(struct cfg80211_registered_device *rdev,
 				     struct cfg80211_chan_def *chandef,
 				     gfp_t gfp,
 				     enum nl80211_commands notif,
-				     u8 count, bool quiet)
+				     u8 count, bool quiet, u16 punct_bitmap)
 {
 	struct wireless_dev *wdev = netdev->ieee80211_ptr;
 	struct sk_buff *msg;
@@ -18975,6 +19063,9 @@ static void nl80211_ch_switch_notify(struct cfg80211_registered_device *rdev,
 			goto nla_put_failure;
 	}
 
+	if (nla_put_u32(msg, NL80211_ATTR_PUNCT_BITMAP, punct_bitmap))
+		goto nla_put_failure;
+
 	genlmsg_end(msg, hdr);
 
 	genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
@@ -18987,7 +19078,7 @@ static void nl80211_ch_switch_notify(struct cfg80211_registered_device *rdev,
 
 void cfg80211_ch_switch_notify(struct net_device *dev,
 			       struct cfg80211_chan_def *chandef,
-			       unsigned int link_id)
+			       unsigned int link_id, u16 punct_bitmap)
 {
 	struct wireless_dev *wdev = dev->ieee80211_ptr;
 	struct wiphy *wiphy = wdev->wiphy;
@@ -18996,7 +19087,7 @@ void cfg80211_ch_switch_notify(struct net_device *dev,
 	ASSERT_WDEV_LOCK(wdev);
 	WARN_INVALID_LINK_ID(wdev, link_id);
 
-	trace_cfg80211_ch_switch_notify(dev, chandef, link_id);
+	trace_cfg80211_ch_switch_notify(dev, chandef, link_id, punct_bitmap);
 
 	switch (wdev->iftype) {
 	case NL80211_IFTYPE_STATION:
@@ -19024,14 +19115,15 @@ void cfg80211_ch_switch_notify(struct net_device *dev,
 	cfg80211_sched_dfs_chan_update(rdev);
 
 	nl80211_ch_switch_notify(rdev, dev, link_id, chandef, GFP_KERNEL,
-				 NL80211_CMD_CH_SWITCH_NOTIFY, 0, false);
+				 NL80211_CMD_CH_SWITCH_NOTIFY, 0, false,
+				 punct_bitmap);
 }
 EXPORT_SYMBOL(cfg80211_ch_switch_notify);
 
 void cfg80211_ch_switch_started_notify(struct net_device *dev,
 				       struct cfg80211_chan_def *chandef,
 				       unsigned int link_id, u8 count,
-				       bool quiet)
+				       bool quiet, u16 punct_bitmap)
 {
 	struct wireless_dev *wdev = dev->ieee80211_ptr;
 	struct wiphy *wiphy = wdev->wiphy;
@@ -19040,11 +19132,13 @@ void cfg80211_ch_switch_started_notify(struct net_device *dev,
 	ASSERT_WDEV_LOCK(wdev);
 	WARN_INVALID_LINK_ID(wdev, link_id);
 
-	trace_cfg80211_ch_switch_started_notify(dev, chandef, link_id);
+	trace_cfg80211_ch_switch_started_notify(dev, chandef, link_id,
+						punct_bitmap);
+
 
 	nl80211_ch_switch_notify(rdev, dev, link_id, chandef, GFP_KERNEL,
 				 NL80211_CMD_CH_SWITCH_STARTED_NOTIFY,
-				 count, quiet);
+				 count, quiet, punct_bitmap);
 }
 EXPORT_SYMBOL(cfg80211_ch_switch_started_notify);
 
@@ -19648,7 +19742,7 @@ void cfg80211_crit_proto_stopped(struct wireless_dev *wdev, gfp_t gfp)
 }
 EXPORT_SYMBOL(cfg80211_crit_proto_stopped);
 
-void nl80211_send_ap_stopped(struct wireless_dev *wdev)
+void nl80211_send_ap_stopped(struct wireless_dev *wdev, unsigned int link_id)
 {
 	struct wiphy *wiphy = wdev->wiphy;
 	struct cfg80211_registered_device *rdev = wiphy_to_rdev(wiphy);
@@ -19666,7 +19760,9 @@ void nl80211_send_ap_stopped(struct wireless_dev *wdev)
 	if (nla_put_u32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx) ||
 	    nla_put_u32(msg, NL80211_ATTR_IFINDEX, wdev->netdev->ifindex) ||
 	    nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev),
-			      NL80211_ATTR_PAD))
+			      NL80211_ATTR_PAD) ||
+	    (wdev->valid_links &&
+	     nla_put_u8(msg, NL80211_ATTR_MLO_LINK_ID, link_id)))
 		goto out;
 
 	genlmsg_end(msg, hdr);
@@ -19705,7 +19801,9 @@ int cfg80211_external_auth_request(struct net_device *dev,
 			params->action) ||
 	    nla_put(msg, NL80211_ATTR_BSSID, ETH_ALEN, params->bssid) ||
 	    nla_put(msg, NL80211_ATTR_SSID, params->ssid.ssid_len,
-		    params->ssid.ssid))
+		    params->ssid.ssid) ||
+	    (!is_zero_ether_addr(params->mld_addr) &&
+	     nla_put(msg, NL80211_ATTR_MLD_ADDR, ETH_ALEN, params->mld_addr)))
 		goto nla_put_failure;
 
 	genlmsg_end(msg, hdr);
@@ -19747,6 +19845,17 @@ void cfg80211_update_owe_info_event(struct net_device *netdev,
 	    nla_put(msg, NL80211_ATTR_IE, owe_info->ie_len, owe_info->ie))
 		goto nla_put_failure;
 
+	if (owe_info->assoc_link_id != -1) {
+		if (nla_put_u8(msg, NL80211_ATTR_MLO_LINK_ID,
+			       owe_info->assoc_link_id))
+			goto nla_put_failure;
+
+		if (!is_zero_ether_addr(owe_info->peer_mld_addr) &&
+		    nla_put(msg, NL80211_ATTR_MLD_ADDR, ETH_ALEN,
+			    owe_info->peer_mld_addr))
+			goto nla_put_failure;
+	}
+
 	genlmsg_end(msg, hdr);
 
 	genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
diff --git a/net/wireless/nl80211.h b/net/wireless/nl80211.h
index 855d540..0278d81 100644
--- a/net/wireless/nl80211.h
+++ b/net/wireless/nl80211.h
@@ -83,7 +83,8 @@ void nl80211_send_roamed(struct cfg80211_registered_device *rdev,
 			 struct net_device *netdev,
 			 struct cfg80211_roam_info *info, gfp_t gfp);
 void nl80211_send_port_authorized(struct cfg80211_registered_device *rdev,
-				  struct net_device *netdev, const u8 *bssid);
+				  struct net_device *netdev, const u8 *bssid,
+				  const u8 *td_bitmap, u8 td_bitmap_len);
 void nl80211_send_disconnected(struct cfg80211_registered_device *rdev,
 			       struct net_device *netdev, u16 reason,
 			       const u8 *ie, size_t ie_len, bool from_ap);
@@ -113,7 +114,7 @@ nl80211_radar_notify(struct cfg80211_registered_device *rdev,
 		     enum nl80211_radar_event event,
 		     struct net_device *netdev, gfp_t gfp);
 
-void nl80211_send_ap_stopped(struct wireless_dev *wdev);
+void nl80211_send_ap_stopped(struct wireless_dev *wdev, unsigned int link_id);
 
 void cfg80211_rdev_free_coalesce(struct cfg80211_registered_device *rdev);
 
diff --git a/net/wireless/sme.c b/net/wireless/sme.c
index 6e87d2c..ce1ac01 100644
--- a/net/wireless/sme.c
+++ b/net/wireless/sme.c
@@ -806,6 +806,10 @@ void __cfg80211_connect_result(struct net_device *dev,
 		}
 
 		for_each_valid_link(cr, link) {
+			/* don't do extra lookups for failures */
+			if (cr->links[link].status != WLAN_STATUS_SUCCESS)
+				continue;
+
 			if (cr->links[link].bss)
 				continue;
 
@@ -842,6 +846,16 @@ void __cfg80211_connect_result(struct net_device *dev,
 	}
 
 	memset(wdev->links, 0, sizeof(wdev->links));
+	for_each_valid_link(cr, link) {
+		if (cr->links[link].status == WLAN_STATUS_SUCCESS)
+			continue;
+		cr->valid_links &= ~BIT(link);
+		/* don't require bss pointer for failed links */
+		if (!cr->links[link].bss)
+			continue;
+		cfg80211_unhold_bss(bss_from_pub(cr->links[link].bss));
+		cfg80211_put_bss(wdev->wiphy, cr->links[link].bss);
+	}
 	wdev->valid_links = cr->valid_links;
 	for_each_valid_link(cr, link)
 		wdev->links[link].client.current_bss =
@@ -1266,7 +1280,8 @@ void cfg80211_roamed(struct net_device *dev, struct cfg80211_roam_info *info,
 }
 EXPORT_SYMBOL(cfg80211_roamed);
 
-void __cfg80211_port_authorized(struct wireless_dev *wdev, const u8 *bssid)
+void __cfg80211_port_authorized(struct wireless_dev *wdev, const u8 *bssid,
+					const u8 *td_bitmap, u8 td_bitmap_len)
 {
 	ASSERT_WDEV_LOCK(wdev);
 
@@ -1279,11 +1294,11 @@ void __cfg80211_port_authorized(struct wireless_dev *wdev, const u8 *bssid)
 		return;
 
 	nl80211_send_port_authorized(wiphy_to_rdev(wdev->wiphy), wdev->netdev,
-				     bssid);
+				     bssid, td_bitmap, td_bitmap_len);
 }
 
 void cfg80211_port_authorized(struct net_device *dev, const u8 *bssid,
-			      gfp_t gfp)
+			      const u8 *td_bitmap, u8 td_bitmap_len, gfp_t gfp)
 {
 	struct wireless_dev *wdev = dev->ieee80211_ptr;
 	struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
@@ -1293,12 +1308,15 @@ void cfg80211_port_authorized(struct net_device *dev, const u8 *bssid,
 	if (WARN_ON(!bssid))
 		return;
 
-	ev = kzalloc(sizeof(*ev), gfp);
+	ev = kzalloc(sizeof(*ev) + td_bitmap_len, gfp);
 	if (!ev)
 		return;
 
 	ev->type = EVENT_PORT_AUTHORIZED;
 	memcpy(ev->pa.bssid, bssid, ETH_ALEN);
+	ev->pa.td_bitmap = ((u8 *)ev) + sizeof(*ev);
+	ev->pa.td_bitmap_len = td_bitmap_len;
+	memcpy((void *)ev->pa.td_bitmap, td_bitmap, td_bitmap_len);
 
 	/*
 	 * Use the wdev event list so that if there are pending
diff --git a/net/wireless/trace.h b/net/wireless/trace.h
index a405c3e..c6e6314 100644
--- a/net/wireless/trace.h
+++ b/net/wireless/trace.h
@@ -19,8 +19,6 @@
 	else							     \
 		eth_zero_addr(__entry->entry_mac);		     \
 	} while (0)
-#define MAC_PR_FMT "%pM"
-#define MAC_PR_ARG(entry_mac) (__entry->entry_mac)
 
 #define MAXNAME		32
 #define WIPHY_ENTRY	__array(char, wiphy_name, 32)
@@ -454,10 +452,10 @@ DECLARE_EVENT_CLASS(key_handle,
 		__entry->pairwise = pairwise;
 	),
 	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", link_id: %d, "
-		  "key_index: %u, pairwise: %s, mac addr: " MAC_PR_FMT,
+		  "key_index: %u, pairwise: %s, mac addr: %pM",
 		  WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->link_id,
 		  __entry->key_index, BOOL_TO_STR(__entry->pairwise),
-		  MAC_PR_ARG(mac_addr))
+		  __entry->mac_addr)
 );
 
 DEFINE_EVENT(key_handle, rdev_get_key,
@@ -496,10 +494,10 @@ TRACE_EVENT(rdev_add_key,
 	),
 	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", link_id: %d, "
 		  "key_index: %u, mode: %u, pairwise: %s, "
-		  "mac addr: " MAC_PR_FMT,
+		  "mac addr: %pM",
 		  WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->link_id,
 		  __entry->key_index, __entry->mode,
-		  BOOL_TO_STR(__entry->pairwise), MAC_PR_ARG(mac_addr))
+		  BOOL_TO_STR(__entry->pairwise), __entry->mac_addr)
 );
 
 TRACE_EVENT(rdev_set_default_key,
@@ -813,11 +811,11 @@ DECLARE_EVENT_CLASS(station_add_change,
 		__entry->opmode_notif_used =
 			params->link_sta_params.opmode_notif_used;
 	),
-	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", station mac: " MAC_PR_FMT
+	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", station mac: %pM"
 		  ", station flags mask: %u, station flags set: %u, "
 		  "station modify mask: %u, listen interval: %d, aid: %u, "
 		  "plink action: %u, plink state: %u, uapsd queues: %u, vlan:%s",
-		  WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(sta_mac),
+		  WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->sta_mac,
 		  __entry->sta_flags_mask, __entry->sta_flags_set,
 		  __entry->sta_modify_mask, __entry->listen_interval,
 		  __entry->aid, __entry->plink_action, __entry->plink_state,
@@ -849,8 +847,8 @@ DECLARE_EVENT_CLASS(wiphy_netdev_mac_evt,
 		NETDEV_ASSIGN;
 		MAC_ASSIGN(sta_mac, mac);
 	),
-	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", mac: " MAC_PR_FMT,
-		  WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(sta_mac))
+	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", mac: %pM",
+		  WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->sta_mac)
 );
 
 DECLARE_EVENT_CLASS(station_del,
@@ -871,9 +869,9 @@ DECLARE_EVENT_CLASS(station_del,
 		__entry->subtype = params->subtype;
 		__entry->reason_code = params->reason_code;
 	),
-	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", station mac: " MAC_PR_FMT
+	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", station mac: %pM"
 		  ", subtype: %u, reason_code: %u",
-		  WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(sta_mac),
+		  WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->sta_mac,
 		  __entry->subtype, __entry->reason_code)
 );
 
@@ -909,8 +907,8 @@ TRACE_EVENT(rdev_dump_station,
 		MAC_ASSIGN(sta_mac, mac);
 		__entry->idx = _idx;
 	),
-	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", station mac: " MAC_PR_FMT ", idx: %d",
-		  WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(sta_mac),
+	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", station mac: %pM, idx: %d",
+		  WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->sta_mac,
 		  __entry->idx)
 );
 
@@ -947,9 +945,9 @@ DECLARE_EVENT_CLASS(mpath_evt,
 		MAC_ASSIGN(dst, dst);
 		MAC_ASSIGN(next_hop, next_hop);
 	),
-	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", destination: " MAC_PR_FMT ", next hop: " MAC_PR_FMT,
-		  WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(dst),
-		  MAC_PR_ARG(next_hop))
+	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", destination: %pM, next hop: %pM",
+		  WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->dst,
+		  __entry->next_hop)
 );
 
 DEFINE_EVENT(mpath_evt, rdev_add_mpath,
@@ -988,10 +986,9 @@ TRACE_EVENT(rdev_dump_mpath,
 		MAC_ASSIGN(next_hop, next_hop);
 		__entry->idx = _idx;
 	),
-	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", index: %d, destination: "
-		  MAC_PR_FMT ", next hop: " MAC_PR_FMT,
-		  WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->idx, MAC_PR_ARG(dst),
-		  MAC_PR_ARG(next_hop))
+	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", index: %d, destination: %pM, next hop: %pM",
+		  WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->idx, __entry->dst,
+		  __entry->next_hop)
 );
 
 TRACE_EVENT(rdev_get_mpp,
@@ -1010,9 +1007,9 @@ TRACE_EVENT(rdev_get_mpp,
 		MAC_ASSIGN(dst, dst);
 		MAC_ASSIGN(mpp, mpp);
 	),
-	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", destination: " MAC_PR_FMT
-		  ", mpp: " MAC_PR_FMT, WIPHY_PR_ARG, NETDEV_PR_ARG,
-		  MAC_PR_ARG(dst), MAC_PR_ARG(mpp))
+	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", destination: %pM"
+		  ", mpp: %pM", WIPHY_PR_ARG, NETDEV_PR_ARG,
+		  __entry->dst, __entry->mpp)
 );
 
 TRACE_EVENT(rdev_dump_mpp,
@@ -1033,10 +1030,9 @@ TRACE_EVENT(rdev_dump_mpp,
 		MAC_ASSIGN(mpp, mpp);
 		__entry->idx = _idx;
 	),
-	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", index: %d, destination: "
-		  MAC_PR_FMT ", mpp: " MAC_PR_FMT,
-		  WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->idx, MAC_PR_ARG(dst),
-		  MAC_PR_ARG(mpp))
+	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", index: %d, destination: %pM, mpp: %pM",
+		  WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->idx, __entry->dst,
+		  __entry->mpp)
 );
 
 TRACE_EVENT(rdev_return_int_mpath_info,
@@ -1243,9 +1239,9 @@ TRACE_EVENT(rdev_auth,
 			eth_zero_addr(__entry->bssid);
 		__entry->auth_type = req->auth_type;
 	),
-	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", auth type: %d, bssid: " MAC_PR_FMT,
+	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", auth type: %d, bssid: %pM",
 		  WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->auth_type,
-		  MAC_PR_ARG(bssid))
+		  __entry->bssid)
 );
 
 TRACE_EVENT(rdev_assoc,
@@ -1294,10 +1290,10 @@ TRACE_EVENT(rdev_assoc,
 			memcpy(__get_dynamic_array(fils_nonces),
 			       req->fils_nonces, 2 * FILS_NONCE_LEN);
 	),
-	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", bssid: " MAC_PR_FMT
-		  ", previous bssid: " MAC_PR_FMT ", use mfp: %s, flags: %u",
-		  WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(bssid),
-		  MAC_PR_ARG(prev_bssid), BOOL_TO_STR(__entry->use_mfp),
+	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", bssid: %pM"
+		  ", previous bssid: %pM, use mfp: %s, flags: %u",
+		  WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->bssid,
+		  __entry->prev_bssid, BOOL_TO_STR(__entry->use_mfp),
 		  __entry->flags)
 );
 
@@ -1317,8 +1313,8 @@ TRACE_EVENT(rdev_deauth,
 		MAC_ASSIGN(bssid, req->bssid);
 		__entry->reason_code = req->reason_code;
 	),
-	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", bssid: " MAC_PR_FMT ", reason: %u",
-		  WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(bssid),
+	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", bssid: %pM, reason: %u",
+		  WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->bssid,
 		  __entry->reason_code)
 );
 
@@ -1340,9 +1336,9 @@ TRACE_EVENT(rdev_disassoc,
 		__entry->reason_code = req->reason_code;
 		__entry->local_state_change = req->local_state_change;
 	),
-	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", bssid: " MAC_PR_FMT
+	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", bssid: %pM"
 		  ", reason: %u, local state change: %s",
-		  WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(bssid),
+		  WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->bssid,
 		  __entry->reason_code,
 		  BOOL_TO_STR(__entry->local_state_change))
 );
@@ -1413,12 +1409,12 @@ TRACE_EVENT(rdev_connect,
 		__entry->flags = sme->flags;
 		MAC_ASSIGN(prev_bssid, sme->prev_bssid);
 	),
-	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", bssid: " MAC_PR_FMT
+	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", bssid: %pM"
 		  ", ssid: %s, auth type: %d, privacy: %s, wpa versions: %u, "
-		  "flags: %u, previous bssid: " MAC_PR_FMT,
-		  WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(bssid), __entry->ssid,
+		  "flags: %u, previous bssid: %pM",
+		  WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->bssid, __entry->ssid,
 		  __entry->auth_type, BOOL_TO_STR(__entry->privacy),
-		  __entry->wpa_versions, __entry->flags, MAC_PR_ARG(prev_bssid))
+		  __entry->wpa_versions, __entry->flags, __entry->prev_bssid)
 );
 
 TRACE_EVENT(rdev_update_connect_params,
@@ -1542,8 +1538,8 @@ TRACE_EVENT(rdev_join_ibss,
 		memset(__entry->ssid, 0, IEEE80211_MAX_SSID_LEN + 1);
 		memcpy(__entry->ssid, params->ssid, params->ssid_len);
 	),
-	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", bssid: " MAC_PR_FMT ", ssid: %s",
-		  WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(bssid), __entry->ssid)
+	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", bssid: %pM, ssid: %s",
+		  WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->bssid, __entry->ssid)
 );
 
 TRACE_EVENT(rdev_join_ocb,
@@ -1664,9 +1660,9 @@ TRACE_EVENT(rdev_set_bitrate_mask,
 		__entry->link_id = link_id;
 		MAC_ASSIGN(peer, peer);
 	),
-	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", link_id: %d, peer: " MAC_PR_FMT,
+	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", link_id: %d, peer: %pM",
 		  WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->link_id,
-		  MAC_PR_ARG(peer))
+		  __entry->peer)
 );
 
 TRACE_EVENT(rdev_update_mgmt_frame_registrations,
@@ -1810,10 +1806,10 @@ TRACE_EVENT(rdev_tdls_mgmt,
 		__entry->initiator = initiator;
 		memcpy(__get_dynamic_array(buf), buf, len);
 	),
-	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", " MAC_PR_FMT ", action_code: %u, "
+	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", %pM, action_code: %u, "
 		  "dialog_token: %u, status_code: %u, peer_capability: %u "
 		  "initiator: %s buf: %#.2x ",
-		  WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(peer),
+		  WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->peer,
 		  __entry->action_code, __entry->dialog_token,
 		  __entry->status_code, __entry->peer_capability,
 		  BOOL_TO_STR(__entry->initiator),
@@ -1893,8 +1889,8 @@ TRACE_EVENT(rdev_tdls_oper,
 		MAC_ASSIGN(peer, peer);
 		__entry->oper = oper;
 	),
-	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", " MAC_PR_FMT ", oper: %d",
-		  WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(peer), __entry->oper)
+	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", %pM, oper: %d",
+		  WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->peer, __entry->oper)
 );
 
 DECLARE_EVENT_CLASS(rdev_pmksa,
@@ -1911,8 +1907,8 @@ DECLARE_EVENT_CLASS(rdev_pmksa,
 		NETDEV_ASSIGN;
 		MAC_ASSIGN(bssid, pmksa->bssid);
 	),
-	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", bssid: " MAC_PR_FMT,
-		  WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(bssid))
+	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", bssid: %pM",
+		  WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->bssid)
 );
 
 TRACE_EVENT(rdev_probe_client,
@@ -1929,8 +1925,8 @@ TRACE_EVENT(rdev_probe_client,
 		NETDEV_ASSIGN;
 		MAC_ASSIGN(peer, peer);
 	),
-	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", " MAC_PR_FMT,
-		  WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(peer))
+	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", %pM",
+		  WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->peer)
 );
 
 DEFINE_EVENT(rdev_pmksa, rdev_set_pmksa,
@@ -2051,9 +2047,9 @@ TRACE_EVENT(rdev_tx_control_port,
 		__entry->unencrypted = unencrypted;
 		__entry->link_id = link_id;
 	),
-	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", " MAC_PR_FMT ","
+	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", %pM,"
 		  " proto: 0x%x, unencrypted: %s, link: %d",
-		  WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(dest),
+		  WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->dest,
 		  be16_to_cpu(__entry->proto),
 		  BOOL_TO_STR(__entry->unencrypted),
 		  __entry->link_id)
@@ -2392,8 +2388,8 @@ TRACE_EVENT(rdev_add_tx_ts,
 		__entry->user_prio = user_prio;
 		__entry->admitted_time = admitted_time;
 	),
-	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", " MAC_PR_FMT ", TSID %d, UP %d, time %d",
-		  WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(peer),
+	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", %pM, TSID %d, UP %d, time %d",
+		  WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->peer,
 		  __entry->tsid, __entry->user_prio, __entry->admitted_time)
 );
 
@@ -2413,8 +2409,8 @@ TRACE_EVENT(rdev_del_tx_ts,
 		MAC_ASSIGN(peer, peer);
 		__entry->tsid = tsid;
 	),
-	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", " MAC_PR_FMT ", TSID %d",
-		  WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(peer), __entry->tsid)
+	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", %pM, TSID %d",
+		  WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->peer, __entry->tsid)
 );
 
 TRACE_EVENT(rdev_tdls_channel_switch,
@@ -2435,9 +2431,9 @@ TRACE_EVENT(rdev_tdls_channel_switch,
 		MAC_ASSIGN(addr, addr);
 		CHAN_DEF_ASSIGN(chandef);
 	),
-	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", " MAC_PR_FMT
+	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", %pM"
 		  " oper class %d, " CHAN_DEF_PR_FMT,
-		  WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(addr),
+		  WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->addr,
 		  __entry->oper_class, CHAN_DEF_PR_ARG)
 );
 
@@ -2455,8 +2451,8 @@ TRACE_EVENT(rdev_tdls_cancel_channel_switch,
 		NETDEV_ASSIGN;
 		MAC_ASSIGN(addr, addr);
 	),
-	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", " MAC_PR_FMT,
-		  WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(addr))
+	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", %pM",
+		  WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->addr)
 );
 
 TRACE_EVENT(rdev_set_pmk,
@@ -2488,9 +2484,9 @@ TRACE_EVENT(rdev_set_pmk,
 		       pmk_conf->pmk_r0_name ? WLAN_PMK_NAME_LEN : 0);
 	),
 
-	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", " MAC_PR_FMT
+	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", %pM"
 		  "pmk_len=%u, pmk: %s pmk_r0_name: %s", WIPHY_PR_ARG,
-		  NETDEV_PR_ARG, MAC_PR_ARG(aa), __entry->pmk_len,
+		  NETDEV_PR_ARG, __entry->aa, __entry->pmk_len,
 		  __print_array(__get_dynamic_array(pmk),
 				__get_dynamic_array_len(pmk), 1),
 		  __entry->pmk_r0_name_len ?
@@ -2515,8 +2511,8 @@ TRACE_EVENT(rdev_del_pmk,
 		MAC_ASSIGN(aa, aa);
 	),
 
-	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", " MAC_PR_FMT,
-		  WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(aa))
+	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", %pM",
+		  WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->aa)
 );
 
 TRACE_EVENT(rdev_external_auth,
@@ -2528,6 +2524,7 @@ TRACE_EVENT(rdev_external_auth,
 			     MAC_ENTRY(bssid)
 			     __array(u8, ssid, IEEE80211_MAX_SSID_LEN + 1)
 			     __field(u16, status)
+			     MAC_ENTRY(mld_addr)
 	    ),
 	    TP_fast_assign(WIPHY_ASSIGN;
 			   NETDEV_ASSIGN;
@@ -2536,10 +2533,12 @@ TRACE_EVENT(rdev_external_auth,
 			   memcpy(__entry->ssid, params->ssid.ssid,
 				  params->ssid.ssid_len);
 			   __entry->status = params->status;
+			   MAC_ASSIGN(mld_addr, params->mld_addr);
 	    ),
-	    TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", bssid: " MAC_PR_FMT
-		      ", ssid: %s, status: %u", WIPHY_PR_ARG, NETDEV_PR_ARG,
-		      __entry->bssid, __entry->ssid, __entry->status)
+	    TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", bssid: %pM"
+		      ", ssid: %s, status: %u, mld_addr: %pM",
+		      WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->bssid,
+		      __entry->ssid, __entry->status, __entry->mld_addr)
 );
 
 TRACE_EVENT(rdev_start_radar_detection,
@@ -2720,8 +2719,8 @@ TRACE_EVENT(rdev_update_owe_info,
 			   __entry->status = owe_info->status;
 			   memcpy(__get_dynamic_array(ie),
 				  owe_info->ie, owe_info->ie_len);),
-	    TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", peer: " MAC_PR_FMT
-		  " status %d", WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(peer),
+	    TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", peer: %pM"
+		  " status %d", WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->peer,
 		  __entry->status)
 );
 
@@ -2739,8 +2738,8 @@ TRACE_EVENT(rdev_probe_mesh_link,
 		NETDEV_ASSIGN;
 		MAC_ASSIGN(dest, dest);
 	),
-	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", " MAC_PR_FMT,
-		  WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(dest))
+	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", %pM",
+		  WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->dest)
 );
 
 TRACE_EVENT(rdev_set_tid_config,
@@ -2757,8 +2756,8 @@ TRACE_EVENT(rdev_set_tid_config,
 		NETDEV_ASSIGN;
 		MAC_ASSIGN(peer, tid_conf->peer);
 	),
-	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", peer: " MAC_PR_FMT,
-		  WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(peer))
+	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", peer: %pM",
+		  WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->peer)
 );
 
 TRACE_EVENT(rdev_reset_tid_config,
@@ -2777,8 +2776,8 @@ TRACE_EVENT(rdev_reset_tid_config,
 		MAC_ASSIGN(peer, peer);
 		__entry->tids = tids;
 	),
-	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", peer: " MAC_PR_FMT ", tids: 0x%x",
-		  WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(peer), __entry->tids)
+	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", peer: %pM, tids: 0x%x",
+		  WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->peer, __entry->tids)
 );
 
 TRACE_EVENT(rdev_set_sar_specs,
@@ -2881,8 +2880,8 @@ DECLARE_EVENT_CLASS(cfg80211_netdev_mac_evt,
 		NETDEV_ASSIGN;
 		MAC_ASSIGN(macaddr, macaddr);
 	),
-	TP_printk(NETDEV_PR_FMT ", mac: " MAC_PR_FMT,
-		  NETDEV_PR_ARG, MAC_PR_ARG(macaddr))
+	TP_printk(NETDEV_PR_FMT ", mac: %pM",
+		  NETDEV_PR_ARG, __entry->macaddr)
 );
 
 DEFINE_EVENT(cfg80211_netdev_mac_evt, cfg80211_notify_new_peer_candidate,
@@ -2920,8 +2919,8 @@ TRACE_EVENT(cfg80211_send_rx_assoc,
 		MAC_ASSIGN(ap_addr,
 			   data->ap_mld_addr ?: data->links[0].bss->bssid);
 	),
-	TP_printk(NETDEV_PR_FMT ", " MAC_PR_FMT,
-		  NETDEV_PR_ARG, MAC_PR_ARG(ap_addr))
+	TP_printk(NETDEV_PR_FMT ", %pM",
+		  NETDEV_PR_ARG, __entry->ap_addr)
 );
 
 DECLARE_EVENT_CLASS(netdev_frame_event,
@@ -2981,8 +2980,8 @@ DECLARE_EVENT_CLASS(netdev_mac_evt,
 		NETDEV_ASSIGN;
 		MAC_ASSIGN(mac, mac)
 	),
-	TP_printk(NETDEV_PR_FMT ", mac: " MAC_PR_FMT,
-		  NETDEV_PR_ARG, MAC_PR_ARG(mac))
+	TP_printk(NETDEV_PR_FMT ", mac: %pM",
+		  NETDEV_PR_ARG, __entry->mac)
 );
 
 DEFINE_EVENT(netdev_mac_evt, cfg80211_send_auth_timeout,
@@ -3004,8 +3003,8 @@ TRACE_EVENT(cfg80211_send_assoc_failure,
 		MAC_ASSIGN(ap_addr, data->ap_mld_addr ?: data->bss[0]->bssid);
 		__entry->timeout = data->timeout;
 	),
-	TP_printk(NETDEV_PR_FMT ", mac: " MAC_PR_FMT ", timeout: %d",
-		  NETDEV_PR_ARG, MAC_PR_ARG(ap_addr), __entry->timeout)
+	TP_printk(NETDEV_PR_FMT ", mac: %pM, timeout: %d",
+		  NETDEV_PR_ARG, __entry->ap_addr, __entry->timeout)
 );
 
 TRACE_EVENT(cfg80211_michael_mic_failure,
@@ -3027,8 +3026,8 @@ TRACE_EVENT(cfg80211_michael_mic_failure,
 		if (tsc)
 			memcpy(__entry->tsc, tsc, 6);
 	),
-	TP_printk(NETDEV_PR_FMT ", " MAC_PR_FMT ", key type: %d, key id: %d, tsc: %pm",
-		  NETDEV_PR_ARG, MAC_PR_ARG(addr), __entry->key_type,
+	TP_printk(NETDEV_PR_FMT ", %pM, key type: %d, key id: %d, tsc: %pm",
+		  NETDEV_PR_ARG, __entry->addr, __entry->key_type,
 		  __entry->key_id, __entry->tsc)
 );
 
@@ -3104,8 +3103,8 @@ TRACE_EVENT(cfg80211_new_sta,
 		MAC_ASSIGN(mac_addr, mac_addr);
 		SINFO_ASSIGN;
 	),
-	TP_printk(NETDEV_PR_FMT ", " MAC_PR_FMT,
-		  NETDEV_PR_ARG, MAC_PR_ARG(mac_addr))
+	TP_printk(NETDEV_PR_FMT ", %pM",
+		  NETDEV_PR_ARG, __entry->mac_addr)
 );
 
 DEFINE_EVENT(cfg80211_netdev_mac_evt, cfg80211_del_sta,
@@ -3166,14 +3165,15 @@ TRACE_EVENT(cfg80211_control_port_tx_status,
 
 TRACE_EVENT(cfg80211_rx_control_port,
 	TP_PROTO(struct net_device *netdev, struct sk_buff *skb,
-		 bool unencrypted),
-	TP_ARGS(netdev, skb, unencrypted),
+		 bool unencrypted, int link_id),
+	TP_ARGS(netdev, skb, unencrypted, link_id),
 	TP_STRUCT__entry(
 		NETDEV_ENTRY
 		__field(int, len)
 		MAC_ENTRY(from)
 		__field(u16, proto)
 		__field(bool, unencrypted)
+		__field(int, link_id)
 	),
 	TP_fast_assign(
 		NETDEV_ASSIGN;
@@ -3181,10 +3181,12 @@ TRACE_EVENT(cfg80211_rx_control_port,
 		MAC_ASSIGN(from, eth_hdr(skb)->h_source);
 		__entry->proto = be16_to_cpu(skb->protocol);
 		__entry->unencrypted = unencrypted;
+		__entry->link_id = link_id;
 	),
-	TP_printk(NETDEV_PR_FMT ", len=%d, " MAC_PR_FMT ", proto: 0x%x, unencrypted: %s",
-		  NETDEV_PR_ARG, __entry->len, MAC_PR_ARG(from),
-		  __entry->proto, BOOL_TO_STR(__entry->unencrypted))
+	TP_printk(NETDEV_PR_FMT ", len=%d, %pM, proto: 0x%x, unencrypted: %s, link: %d",
+		  NETDEV_PR_ARG, __entry->len, __entry->from,
+		  __entry->proto, BOOL_TO_STR(__entry->unencrypted),
+		  __entry->link_id)
 );
 
 TRACE_EVENT(cfg80211_cqm_rssi_notify,
@@ -3245,39 +3247,47 @@ TRACE_EVENT(cfg80211_chandef_dfs_required,
 TRACE_EVENT(cfg80211_ch_switch_notify,
 	TP_PROTO(struct net_device *netdev,
 		 struct cfg80211_chan_def *chandef,
-		 unsigned int link_id),
-	TP_ARGS(netdev, chandef, link_id),
+		 unsigned int link_id,
+		 u16 punct_bitmap),
+	TP_ARGS(netdev, chandef, link_id, punct_bitmap),
 	TP_STRUCT__entry(
 		NETDEV_ENTRY
 		CHAN_DEF_ENTRY
 		__field(unsigned int, link_id)
+		__field(u16, punct_bitmap)
 	),
 	TP_fast_assign(
 		NETDEV_ASSIGN;
 		CHAN_DEF_ASSIGN(chandef);
 		__entry->link_id = link_id;
+		__entry->punct_bitmap = punct_bitmap;
 	),
-	TP_printk(NETDEV_PR_FMT ", " CHAN_DEF_PR_FMT ", link:%d",
-		  NETDEV_PR_ARG, CHAN_DEF_PR_ARG, __entry->link_id)
+	TP_printk(NETDEV_PR_FMT ", " CHAN_DEF_PR_FMT ", link:%d, punct_bitmap:%u",
+		  NETDEV_PR_ARG, CHAN_DEF_PR_ARG, __entry->link_id,
+		  __entry->punct_bitmap)
 );
 
 TRACE_EVENT(cfg80211_ch_switch_started_notify,
 	TP_PROTO(struct net_device *netdev,
 		 struct cfg80211_chan_def *chandef,
-		 unsigned int link_id),
-	TP_ARGS(netdev, chandef, link_id),
+		 unsigned int link_id,
+		 u16 punct_bitmap),
+	TP_ARGS(netdev, chandef, link_id, punct_bitmap),
 	TP_STRUCT__entry(
 		NETDEV_ENTRY
 		CHAN_DEF_ENTRY
 		__field(unsigned int, link_id)
+		__field(u16, punct_bitmap)
 	),
 	TP_fast_assign(
 		NETDEV_ASSIGN;
 		CHAN_DEF_ASSIGN(chandef);
 		__entry->link_id = link_id;
+		__entry->punct_bitmap = punct_bitmap;
 	),
-	TP_printk(NETDEV_PR_FMT ", " CHAN_DEF_PR_FMT ", link:%d",
-		  NETDEV_PR_ARG, CHAN_DEF_PR_ARG, __entry->link_id)
+	TP_printk(NETDEV_PR_FMT ", " CHAN_DEF_PR_FMT ", link:%d, punct_bitmap:%u",
+		  NETDEV_PR_ARG, CHAN_DEF_PR_ARG, __entry->link_id,
+		  __entry->punct_bitmap)
 );
 
 TRACE_EVENT(cfg80211_radar_event,
@@ -3324,7 +3334,7 @@ DECLARE_EVENT_CLASS(cfg80211_rx_evt,
 		NETDEV_ASSIGN;
 		MAC_ASSIGN(addr, addr);
 	),
-	TP_printk(NETDEV_PR_FMT ", " MAC_PR_FMT, NETDEV_PR_ARG, MAC_PR_ARG(addr))
+	TP_printk(NETDEV_PR_FMT ", %pM", NETDEV_PR_ARG, __entry->addr)
 );
 
 DEFINE_EVENT(cfg80211_rx_evt, cfg80211_rx_spurious_frame,
@@ -3351,8 +3361,8 @@ TRACE_EVENT(cfg80211_ibss_joined,
 		MAC_ASSIGN(bssid, bssid);
 		CHAN_ASSIGN(channel);
 	),
-	TP_printk(NETDEV_PR_FMT ", bssid: " MAC_PR_FMT ", " CHAN_PR_FMT,
-		  NETDEV_PR_ARG, MAC_PR_ARG(bssid), CHAN_PR_ARG)
+	TP_printk(NETDEV_PR_FMT ", bssid: %pM, " CHAN_PR_FMT,
+		  NETDEV_PR_ARG, __entry->bssid, CHAN_PR_ARG)
 );
 
 TRACE_EVENT(cfg80211_probe_status,
@@ -3371,8 +3381,8 @@ TRACE_EVENT(cfg80211_probe_status,
 		__entry->cookie = cookie;
 		__entry->acked = acked;
 	),
-	TP_printk(NETDEV_PR_FMT " addr:" MAC_PR_FMT ", cookie: %llu, acked: %s",
-		  NETDEV_PR_ARG, MAC_PR_ARG(addr), __entry->cookie,
+	TP_printk(NETDEV_PR_FMT " addr:%pM, cookie: %llu, acked: %s",
+		  NETDEV_PR_ARG, __entry->addr, __entry->cookie,
 		  BOOL_TO_STR(__entry->acked))
 );
 
@@ -3389,8 +3399,8 @@ TRACE_EVENT(cfg80211_cqm_pktloss_notify,
 		MAC_ASSIGN(peer, peer);
 		__entry->num_packets = num_packets;
 	),
-	TP_printk(NETDEV_PR_FMT ", peer: " MAC_PR_FMT ", num of lost packets: %u",
-		  NETDEV_PR_ARG, MAC_PR_ARG(peer), __entry->num_packets)
+	TP_printk(NETDEV_PR_FMT ", peer: %pM, num of lost packets: %u",
+		  NETDEV_PR_ARG, __entry->peer, __entry->num_packets)
 );
 
 DEFINE_EVENT(cfg80211_netdev_mac_evt, cfg80211_gtk_rekey_notify,
@@ -3414,8 +3424,8 @@ TRACE_EVENT(cfg80211_pmksa_candidate_notify,
 		MAC_ASSIGN(bssid, bssid);
 		__entry->preauth = preauth;
 	),
-	TP_printk(NETDEV_PR_FMT ", index:%d, bssid: " MAC_PR_FMT ", pre auth: %s",
-		  NETDEV_PR_ARG, __entry->index, MAC_PR_ARG(bssid),
+	TP_printk(NETDEV_PR_FMT ", index:%d, bssid: %pM, pre auth: %s",
+		  NETDEV_PR_ARG, __entry->index, __entry->bssid,
 		  BOOL_TO_STR(__entry->preauth))
 );
 
@@ -3455,8 +3465,8 @@ TRACE_EVENT(cfg80211_tdls_oper_request,
 		__entry->oper = oper;
 		__entry->reason_code = reason_code;
 	),
-	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", peer: " MAC_PR_FMT ", oper: %d, reason_code %u",
-		  WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(peer), __entry->oper,
+	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", peer: %pM, oper: %d, reason_code %u",
+		  WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->peer, __entry->oper,
 		  __entry->reason_code)
 	);
 
@@ -3494,10 +3504,10 @@ TRACE_EVENT(cfg80211_scan_done,
 			MAC_ASSIGN(tsf_bssid, info->tsf_bssid);
 		}
 	),
-	TP_printk("aborted: %s, scan start (TSF): %llu, tsf_bssid: " MAC_PR_FMT,
+	TP_printk("aborted: %s, scan start (TSF): %llu, tsf_bssid: %pM",
 		  BOOL_TO_STR(__entry->aborted),
 		  (unsigned long long)__entry->scan_start_tsf,
-		  MAC_PR_ARG(tsf_bssid))
+		  __entry->tsf_bssid)
 );
 
 DECLARE_EVENT_CLASS(wiphy_id_evt,
@@ -3546,9 +3556,9 @@ TRACE_EVENT(cfg80211_get_bss,
 		__entry->bss_type = bss_type;
 		__entry->privacy = privacy;
 	),
-	TP_printk(WIPHY_PR_FMT ", " CHAN_PR_FMT ", " MAC_PR_FMT
+	TP_printk(WIPHY_PR_FMT ", " CHAN_PR_FMT ", %pM"
 		  ", buf: %#.2x, bss_type: %d, privacy: %d",
-		  WIPHY_PR_ARG, CHAN_PR_ARG, MAC_PR_ARG(bssid),
+		  WIPHY_PR_ARG, CHAN_PR_ARG, __entry->bssid,
 		  ((u8 *)__get_dynamic_array(ssid))[0], __entry->bss_type,
 		  __entry->privacy)
 );
@@ -3579,11 +3589,11 @@ TRACE_EVENT(cfg80211_inform_bss_frame,
 		MAC_ASSIGN(parent_bssid, data->parent_bssid);
 	),
 	TP_printk(WIPHY_PR_FMT ", " CHAN_PR_FMT
-		  "(scan_width: %d) signal: %d, tsb:%llu, detect_tsf:%llu, tsf_bssid: "
-		  MAC_PR_FMT, WIPHY_PR_ARG, CHAN_PR_ARG, __entry->scan_width,
+		  "(scan_width: %d) signal: %d, tsb:%llu, detect_tsf:%llu, tsf_bssid: %pM",
+		  WIPHY_PR_ARG, CHAN_PR_ARG, __entry->scan_width,
 		  __entry->signal, (unsigned long long)__entry->ts_boottime,
 		  (unsigned long long)__entry->parent_tsf,
-		  MAC_PR_ARG(parent_bssid))
+		  __entry->parent_bssid)
 );
 
 DECLARE_EVENT_CLASS(cfg80211_bss_evt,
@@ -3597,7 +3607,7 @@ DECLARE_EVENT_CLASS(cfg80211_bss_evt,
 		MAC_ASSIGN(bssid, pub->bssid);
 		CHAN_ASSIGN(pub->channel);
 	),
-	TP_printk(MAC_PR_FMT ", " CHAN_PR_FMT, MAC_PR_ARG(bssid), CHAN_PR_ARG)
+	TP_printk("%pM, " CHAN_PR_FMT, __entry->bssid, CHAN_PR_ARG)
 );
 
 DEFINE_EVENT(cfg80211_bss_evt, cfg80211_return_bss,
@@ -3689,8 +3699,8 @@ TRACE_EVENT(cfg80211_ft_event,
 			memcpy(__get_dynamic_array(ric_ies), ft_event->ric_ies,
 			       ft_event->ric_ies_len);
 	),
-	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", target_ap: " MAC_PR_FMT,
-		  WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(target_ap))
+	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", target_ap: %pM",
+		  WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->target_ap)
 );
 
 TRACE_EVENT(cfg80211_stop_iface,
@@ -3724,10 +3734,10 @@ TRACE_EVENT(cfg80211_pmsr_report,
 		__entry->cookie = cookie;
 		MAC_ASSIGN(addr, addr);
 	),
-	TP_printk(WIPHY_PR_FMT ", " WDEV_PR_FMT ", cookie:%lld, " MAC_PR_FMT,
+	TP_printk(WIPHY_PR_FMT ", " WDEV_PR_FMT ", cookie:%lld, %pM",
 		  WIPHY_PR_ARG, WDEV_PR_ARG,
 		  (unsigned long long)__entry->cookie,
-		  MAC_PR_ARG(addr))
+		  __entry->addr)
 );
 
 TRACE_EVENT(cfg80211_pmsr_complete,
@@ -3749,20 +3759,30 @@ TRACE_EVENT(cfg80211_pmsr_complete,
 );
 
 TRACE_EVENT(cfg80211_update_owe_info_event,
-	    TP_PROTO(struct wiphy *wiphy, struct net_device *netdev,
-		     struct cfg80211_update_owe_info *owe_info),
-	    TP_ARGS(wiphy, netdev, owe_info),
-	    TP_STRUCT__entry(WIPHY_ENTRY
-			     NETDEV_ENTRY
-			     MAC_ENTRY(peer)
-			     __dynamic_array(u8, ie, owe_info->ie_len)),
-	    TP_fast_assign(WIPHY_ASSIGN;
-			   NETDEV_ASSIGN;
-			   MAC_ASSIGN(peer, owe_info->peer);
-			   memcpy(__get_dynamic_array(ie), owe_info->ie,
-				  owe_info->ie_len);),
-	    TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", peer: " MAC_PR_FMT,
-		      WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(peer))
+	TP_PROTO(struct wiphy *wiphy, struct net_device *netdev,
+		 struct cfg80211_update_owe_info *owe_info),
+	TP_ARGS(wiphy, netdev, owe_info),
+	TP_STRUCT__entry(
+		WIPHY_ENTRY
+		NETDEV_ENTRY
+		MAC_ENTRY(peer)
+		__dynamic_array(u8, ie, owe_info->ie_len)
+		__field(int, assoc_link_id)
+		MAC_ENTRY(peer_mld_addr)
+	),
+	TP_fast_assign(
+		WIPHY_ASSIGN;
+		NETDEV_ASSIGN;
+		MAC_ASSIGN(peer, owe_info->peer);
+		memcpy(__get_dynamic_array(ie), owe_info->ie,
+		       owe_info->ie_len);
+		__entry->assoc_link_id = owe_info->assoc_link_id;
+		MAC_ASSIGN(peer_mld_addr, owe_info->peer_mld_addr);
+	),
+	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", peer: %pM,"
+	          " assoc_link_id: %d, peer_mld_addr: %pM",
+		  WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->peer,
+		  __entry->assoc_link_id, __entry->peer_mld_addr)
 );
 
 TRACE_EVENT(cfg80211_bss_color_notify,
@@ -3800,8 +3820,8 @@ TRACE_EVENT(cfg80211_assoc_comeback,
 		MAC_ASSIGN(ap_addr, ap_addr);
 		__entry->timeout = timeout;
 	),
-	TP_printk(WDEV_PR_FMT ", " MAC_PR_FMT ", timeout: %u TUs",
-		  WDEV_PR_ARG, MAC_PR_ARG(ap_addr), __entry->timeout)
+	TP_printk(WDEV_PR_FMT ", %pM, timeout: %u TUs",
+		  WDEV_PR_ARG, __entry->ap_addr, __entry->timeout)
 );
 
 DECLARE_EVENT_CLASS(link_station_add_mod,
@@ -3859,10 +3879,10 @@ DECLARE_EVENT_CLASS(link_station_add_mod,
 			memcpy(__get_dynamic_array(eht_capa), params->eht_capa,
 			       params->eht_capa_len);
 	),
-	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", station mac: " MAC_PR_FMT
-		  ", link mac: " MAC_PR_FMT ", link id: %u",
-		  WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(mld_mac),
-		  MAC_PR_ARG(link_mac), __entry->link_id)
+	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", station mac: %pM"
+		  ", link mac: %pM, link id: %u",
+		  WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->mld_mac,
+		  __entry->link_mac, __entry->link_id)
 );
 
 DEFINE_EVENT(link_station_add_mod, rdev_add_link_station,
@@ -3895,9 +3915,9 @@ TRACE_EVENT(rdev_del_link_station,
 			memcpy(__entry->mld_mac, params->mld_mac, 6);
 		__entry->link_id = params->link_id;
 	),
-	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", station mac: " MAC_PR_FMT
+	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", station mac: %pM"
 		  ", link id: %u",
-		  WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(mld_mac),
+		  WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->mld_mac,
 		  __entry->link_id)
 );
 
diff --git a/net/wireless/util.c b/net/wireless/util.c
index 39680e7..8f403f9f 100644
--- a/net/wireless/util.c
+++ b/net/wireless/util.c
@@ -990,7 +990,9 @@ void cfg80211_process_wdev_events(struct wireless_dev *wdev)
 			__cfg80211_leave(wiphy_to_rdev(wdev->wiphy), wdev);
 			break;
 		case EVENT_PORT_AUTHORIZED:
-			__cfg80211_port_authorized(wdev, ev->pa.bssid);
+			__cfg80211_port_authorized(wdev, ev->pa.bssid,
+						   ev->pa.td_bitmap,
+						   ev->pa.td_bitmap_len);
 			break;
 		}
 		wdev_unlock(wdev);
diff --git a/net/xfrm/xfrm_algo.c b/net/xfrm/xfrm_algo.c
index 094734f..8ff6e87 100644
--- a/net/xfrm/xfrm_algo.c
+++ b/net/xfrm/xfrm_algo.c
@@ -237,7 +237,7 @@ static struct xfrm_algo_desc aalg_list[] = {
 
 	.uinfo = {
 		.auth = {
-			.icv_truncbits = 96,
+			.icv_truncbits = IS_ENABLED(CONFIG_GKI_NET_XFRM_HACKS) ? 128 : 96,
 			.icv_fullbits = 256,
 		}
 	},
diff --git a/net/xfrm/xfrm_input.c b/net/xfrm/xfrm_input.c
index ac1a645..65e36a7 100644
--- a/net/xfrm/xfrm_input.c
+++ b/net/xfrm/xfrm_input.c
@@ -587,6 +587,20 @@ int xfrm_input(struct sk_buff *skb, int nexthdr, __be32 spi, int encap_type)
 			goto drop;
 		}
 
+		/* If nested tunnel, check outer states before context is lost.
+		 * Only nested tunnels need to be checked, since IP addresses change
+		 * as a result of the tunnel mode decapsulation. Similarly, this check
+		 * is limited to nested tunnels to avoid performing another policy
+		 * check on non-nested tunnels. On success, this check also updates the
+		 * secpath's verified_cnt variable, skipping future verifications of
+		 * previously-verified secpath entries.
+		 */
+		if ((x->outer_mode.flags & XFRM_MODE_FLAG_TUNNEL) &&
+		    sp->verified_cnt < sp->len &&
+		    !xfrm_policy_check(NULL, XFRM_POLICY_IN, skb, family)) {
+			goto drop;
+		}
+
 		skb->mark = xfrm_smark_get(skb->mark, x);
 
 		sp->xvec[sp->len++] = x;
diff --git a/net/xfrm/xfrm_output.c b/net/xfrm/xfrm_output.c
index 9a5e79a..0983c09 100644
--- a/net/xfrm/xfrm_output.c
+++ b/net/xfrm/xfrm_output.c
@@ -480,13 +480,11 @@ static int xfrm_outer_mode_output(struct xfrm_state *x, struct sk_buff *skb)
 	return -EOPNOTSUPP;
 }
 
-#if IS_ENABLED(CONFIG_NET_PKTGEN)
 int pktgen_xfrm_outer_mode_output(struct xfrm_state *x, struct sk_buff *skb)
 {
 	return xfrm_outer_mode_output(x, skb);
 }
 EXPORT_SYMBOL_GPL(pktgen_xfrm_outer_mode_output);
-#endif
 
 static int xfrm_output_one(struct sk_buff *skb, int err)
 {
@@ -612,7 +610,7 @@ EXPORT_SYMBOL_GPL(xfrm_output_resume);
 
 static int xfrm_output2(struct net *net, struct sock *sk, struct sk_buff *skb)
 {
-	return xfrm_output_resume(sk, skb, 1);
+	return xfrm_output_resume(skb->sk, skb, 1);
 }
 
 static int xfrm_output_gso(struct net *net, struct sock *sk, struct sk_buff *skb)
diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c
index 2f4cf97..6e0fbc1 100644
--- a/net/xfrm/xfrm_state.c
+++ b/net/xfrm/xfrm_state.c
@@ -2442,19 +2442,22 @@ int xfrm_user_policy(struct sock *sk, int optname, sockptr_t optval, int optlen)
 	if (IS_ERR(data))
 		return PTR_ERR(data);
 
-	if (in_compat_syscall()) {
-		struct xfrm_translator *xtr = xfrm_get_translator();
+	/* Use the 64-bit / untranslated format on Android, even for compat */
+	if (!IS_ENABLED(CONFIG_GKI_NET_XFRM_HACKS) || IS_ENABLED(CONFIG_XFRM_USER_COMPAT)) {
+		if (in_compat_syscall()) {
+			struct xfrm_translator *xtr = xfrm_get_translator();
 
-		if (!xtr) {
-			kfree(data);
-			return -EOPNOTSUPP;
-		}
+			if (!xtr) {
+				kfree(data);
+				return -EOPNOTSUPP;
+			}
 
-		err = xtr->xlate_user_policy_sockptr(&data, optlen);
-		xfrm_put_translator(xtr);
-		if (err) {
-			kfree(data);
-			return err;
+			err = xtr->xlate_user_policy_sockptr(&data, optlen);
+			xfrm_put_translator(xtr);
+			if (err) {
+				kfree(data);
+				return err;
+			}
 		}
 	}
 
diff --git a/net/xfrm/xfrm_user.c b/net/xfrm/xfrm_user.c
index 2d68a17..55a6a28 100644
--- a/net/xfrm/xfrm_user.c
+++ b/net/xfrm/xfrm_user.c
@@ -3048,19 +3048,22 @@ static int xfrm_user_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh,
 	if (!netlink_net_capable(skb, CAP_NET_ADMIN))
 		return -EPERM;
 
-	if (in_compat_syscall()) {
-		struct xfrm_translator *xtr = xfrm_get_translator();
+	/* Use the 64-bit / untranslated format on Android, even for compat */
+	if (!IS_ENABLED(CONFIG_GKI_NET_XFRM_HACKS) || IS_ENABLED(CONFIG_XFRM_USER_COMPAT)) {
+		if (in_compat_syscall()) {
+			struct xfrm_translator *xtr = xfrm_get_translator();
 
-		if (!xtr)
-			return -EOPNOTSUPP;
+			if (!xtr)
+				return -EOPNOTSUPP;
 
-		nlh64 = xtr->rcv_msg_compat(nlh, link->nla_max,
-					    link->nla_pol, extack);
-		xfrm_put_translator(xtr);
-		if (IS_ERR(nlh64))
-			return PTR_ERR(nlh64);
-		if (nlh64)
-			nlh = nlh64;
+			nlh64 = xtr->rcv_msg_compat(nlh, link->nla_max,
+						    link->nla_pol, extack);
+			xfrm_put_translator(xtr);
+			if (IS_ERR(nlh64))
+				return PTR_ERR(nlh64);
+			if (nlh64)
+				nlh = nlh64;
+		}
 	}
 
 	if ((type == (XFRM_MSG_GETSA - XFRM_MSG_BASE) ||
diff --git a/samples/Kconfig b/samples/Kconfig
index 0d81c00..7d0903d 100644
--- a/samples/Kconfig
+++ b/samples/Kconfig
@@ -263,6 +263,16 @@
 	  This demonstrates how a user may create their own CoreSight
 	  configurations and easily load them into the system at runtime.
 
+config SAMPLE_GUNYAH
+	bool "Build example Gunyah Virtual Machine Manager"
+	depends on CC_CAN_LINK && HEADERS_INSTALL
+	depends on GUNYAH
+	help
+	  Build an example Gunyah VMM userspace program capable of launching
+	  a basic virtual machine under the Gunyah hypervisor.
+	  This demonstrates how to create a virtual machine under the Gunyah
+	  hypervisor.
+
 source "samples/rust/Kconfig"
 
 endif # SAMPLES
diff --git a/samples/Makefile b/samples/Makefile
index 9832ef3..2600bd4 100644
--- a/samples/Makefile
+++ b/samples/Makefile
@@ -36,3 +36,4 @@
 obj-$(CONFIG_SAMPLE_CORESIGHT_SYSCFG)	+= coresight/
 obj-$(CONFIG_SAMPLE_FPROBE)		+= fprobe/
 obj-$(CONFIG_SAMPLES_RUST)		+= rust/
+obj-$(CONFIG_SAMPLE_GUNYAH)		+= gunyah/
diff --git a/samples/crypto/fips140_lab_util.c b/samples/crypto/fips140_lab_util.c
new file mode 100644
index 0000000..5f8e901
--- /dev/null
+++ b/samples/crypto/fips140_lab_util.c
@@ -0,0 +1,638 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright 2021 Google LLC
+ *
+ * This program provides commands that dump certain types of output from the
+ * fips140 kernel module, as required by the FIPS lab for evaluation purposes.
+ *
+ * While the fips140 kernel module can only be accessed directly by other kernel
+ * code, an easy-to-use userspace utility program was desired for lab testing.
+ * When possible, this program uses AF_ALG to access the crypto algorithms; this
+ * requires that the kernel has AF_ALG enabled.  Where AF_ALG isn't sufficient,
+ * a custom device node /dev/fips140 is used instead; this requires that the
+ * fips140 module is loaded and has evaluation testing support compiled in.
+ *
+ * This program can be compiled and run on an Android device as follows:
+ *
+ *	NDK_DIR=$HOME/android-ndk-r23b  # adjust directory path as needed
+ *	$NDK_DIR/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android31-clang \
+ *		fips140_lab_util.c -O2 -Wall -o fips140_lab_util
+ *	adb push fips140_lab_util /data/local/tmp/
+ *	adb root
+ *	adb shell /data/local/tmp/fips140_lab_util
+ */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <getopt.h>
+#include <limits.h>
+#include <linux/if_alg.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/ioctl.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
+#include <sys/sysmacros.h>
+#include <unistd.h>
+
+#include "../../crypto/fips140-eval-testing-uapi.h"
+
+/* ---------------------------------------------------------------------------
+ *			       Utility functions
+ * ---------------------------------------------------------------------------*/
+
+#define ARRAY_SIZE(A)	(sizeof(A) / sizeof((A)[0]))
+#define MIN(a, b)	((a) < (b) ? (a) : (b))
+#define MAX(a, b)	((a) > (b) ? (a) : (b))
+
+static void __attribute__((noreturn))
+do_die(const char *format, va_list va, int err)
+{
+	fputs("ERROR: ", stderr);
+	vfprintf(stderr, format, va);
+	if (err)
+		fprintf(stderr, ": %s", strerror(err));
+	putc('\n', stderr);
+	exit(1);
+}
+
+static void __attribute__((noreturn, format(printf, 1, 2)))
+die_errno(const char *format, ...)
+{
+	va_list va;
+
+	va_start(va, format);
+	do_die(format, va, errno);
+	va_end(va);
+}
+
+static void __attribute__((noreturn, format(printf, 1, 2)))
+die(const char *format, ...)
+{
+	va_list va;
+
+	va_start(va, format);
+	do_die(format, va, 0);
+	va_end(va);
+}
+
+static void __attribute__((noreturn))
+assertion_failed(const char *expr, const char *file, int line)
+{
+	die("Assertion failed: %s at %s:%d", expr, file, line);
+}
+
+#define ASSERT(e) ({ if (!(e)) assertion_failed(#e, __FILE__, __LINE__); })
+
+static void rand_bytes(uint8_t *bytes, size_t count)
+{
+	size_t i;
+
+	for (i = 0; i < count; i++)
+		bytes[i] = rand();
+}
+
+static const char *booltostr(bool b)
+{
+	return b ? "true" : "false";
+}
+
+static const char *bytes_to_hex(const uint8_t *bytes, size_t count)
+{
+	static char hex[1025];
+	size_t i;
+
+	ASSERT(count <= 512);
+	for (i = 0; i < count; i++)
+		sprintf(&hex[2*i], "%02x", bytes[i]);
+	return hex;
+}
+
+static void full_write(int fd, const void *buf, size_t count)
+{
+	while (count) {
+		ssize_t ret = write(fd, buf, count);
+
+		if (ret < 0)
+			die_errno("write failed");
+		buf += ret;
+		count -= ret;
+	}
+}
+
+enum {
+	OPT_AMOUNT,
+	OPT_ITERATIONS,
+};
+
+static void usage(void);
+
+/* ---------------------------------------------------------------------------
+ *			      /dev/fips140 ioctls
+ * ---------------------------------------------------------------------------*/
+
+static int get_fips140_device_number(void)
+{
+	FILE *f;
+	char line[128];
+	int number;
+	char name[32];
+
+	f = fopen("/proc/devices", "r");
+	if (!f)
+		die_errno("Failed to open /proc/devices");
+	while (fgets(line, sizeof(line), f)) {
+		if (sscanf(line, "%d %31s", &number, name) == 2 &&
+		    strcmp(name, "fips140") == 0)
+			return number;
+	}
+	fclose(f);
+	die("fips140 device node is unavailable.\n"
+"The fips140 device node is only available when the fips140 module is loaded\n"
+"and has been built with evaluation testing support.");
+}
+
+static void create_fips140_node_if_needed(void)
+{
+	struct stat stbuf;
+	int major;
+
+	if (stat("/dev/fips140", &stbuf) == 0)
+		return;
+
+	major = get_fips140_device_number();
+	if (mknod("/dev/fips140", S_IFCHR | 0600, makedev(major, 1)) != 0)
+		die_errno("Failed to create fips140 device node");
+}
+
+static int fips140_dev_fd = -1;
+
+static int fips140_ioctl(int cmd, const void *arg)
+{
+	if (fips140_dev_fd < 0) {
+		create_fips140_node_if_needed();
+		fips140_dev_fd = open("/dev/fips140", O_RDONLY);
+		if (fips140_dev_fd < 0)
+			die_errno("Failed to open /dev/fips140");
+	}
+	return ioctl(fips140_dev_fd, cmd, arg);
+}
+
+static bool fips140_is_approved_service(const char *name)
+{
+	int ret = fips140_ioctl(FIPS140_IOCTL_IS_APPROVED_SERVICE, name);
+
+	if (ret < 0)
+		die_errno("FIPS140_IOCTL_IS_APPROVED_SERVICE unexpectedly failed");
+	if (ret == 1)
+		return true;
+	if (ret == 0)
+		return false;
+	die("FIPS140_IOCTL_IS_APPROVED_SERVICE returned unexpected value %d",
+	    ret);
+}
+
+static const char *fips140_module_version(void)
+{
+	static char buf[256];
+	int ret;
+
+	memset(buf, 0, sizeof(buf));
+	ret = fips140_ioctl(FIPS140_IOCTL_MODULE_VERSION, buf);
+	if (ret < 0)
+		die_errno("FIPS140_IOCTL_MODULE_VERSION unexpectedly failed");
+	if (ret != 0)
+		die("FIPS140_IOCTL_MODULE_VERSION returned unexpected value %d",
+		    ret);
+	return buf;
+}
+
+/* ---------------------------------------------------------------------------
+ *				AF_ALG utilities
+ * ---------------------------------------------------------------------------*/
+
+#define AF_ALG_MAX_RNG_REQUEST_SIZE	128
+
+static int get_alg_fd(const char *alg_type, const char *alg_name)
+{
+	struct sockaddr_alg addr = {};
+	int alg_fd;
+
+	alg_fd = socket(AF_ALG, SOCK_SEQPACKET, 0);
+	if (alg_fd < 0)
+		die("Failed to create AF_ALG socket.\n"
+"AF_ALG is only available when it has been enabled in the kernel.\n");
+
+	strncpy((char *)addr.salg_type, alg_type, sizeof(addr.salg_type) - 1);
+	strncpy((char *)addr.salg_name, alg_name, sizeof(addr.salg_name) - 1);
+
+	if (bind(alg_fd, (void *)&addr, sizeof(addr)) != 0)
+		die_errno("Failed to bind AF_ALG socket to %s %s",
+			  alg_type, alg_name);
+	return alg_fd;
+}
+
+static int get_req_fd(int alg_fd, const char *alg_name)
+{
+	int req_fd = accept(alg_fd, NULL, NULL);
+
+	if (req_fd < 0)
+		die_errno("Failed to get request file descriptor for %s",
+			  alg_name);
+	return req_fd;
+}
+
+/* ---------------------------------------------------------------------------
+ *			   dump_jitterentropy command
+ * ---------------------------------------------------------------------------*/
+
+static void dump_from_jent_fd(int fd, size_t count)
+{
+	uint8_t buf[AF_ALG_MAX_RNG_REQUEST_SIZE];
+
+	while (count) {
+		ssize_t ret;
+
+		memset(buf, 0, sizeof(buf));
+		ret = read(fd, buf, MIN(count, sizeof(buf)));
+		if (ret < 0)
+			die_errno("error reading from jitterentropy_rng");
+		full_write(STDOUT_FILENO, buf, ret);
+		count -= ret;
+	}
+}
+
+static int cmd_dump_jitterentropy(int argc, char *argv[])
+{
+	static const struct option longopts[] = {
+		{ "amount", required_argument, NULL, OPT_AMOUNT },
+		{ "iterations", required_argument, NULL, OPT_ITERATIONS },
+		{ NULL, 0, NULL, 0 },
+	};
+	size_t amount = 128;
+	size_t iterations = 1;
+	size_t i;
+	int c;
+
+	while ((c = getopt_long(argc, argv, "", longopts, NULL)) != -1) {
+		switch (c) {
+		case OPT_AMOUNT:
+			amount = strtoul(optarg, NULL, 0);
+			if (amount <= 0 || amount >= ULONG_MAX)
+				die("invalid argument to --amount");
+			break;
+		case OPT_ITERATIONS:
+			iterations = strtoul(optarg, NULL, 0);
+			if (iterations <= 0 || iterations >= ULONG_MAX)
+				die("invalid argument to --iterations");
+			break;
+		default:
+			usage();
+			return 1;
+		}
+	}
+
+	for (i = 0; i < iterations; i++) {
+		int alg_fd = get_alg_fd("rng", "jitterentropy_rng");
+		int req_fd = get_req_fd(alg_fd, "jitterentropy_rng");
+
+		dump_from_jent_fd(req_fd, amount);
+
+		close(req_fd);
+		close(alg_fd);
+	}
+	return 0;
+}
+
+/* ---------------------------------------------------------------------------
+ *			  show_invalid_inputs command
+ * ---------------------------------------------------------------------------*/
+
+enum direction {
+	UNSPECIFIED,
+	DECRYPT,
+	ENCRYPT,
+};
+
+static const struct invalid_input_test {
+	const char *alg_type;
+	const char *alg_name;
+	const char *key;
+	size_t key_size;
+	const char *msg;
+	size_t msg_size;
+	const char *iv;
+	size_t iv_size;
+	enum direction direction;
+	int setkey_error;
+	int crypt_error;
+} invalid_input_tests[] = {
+	{
+		.alg_type = "skcipher",
+		.alg_name = "cbc(aes)",
+		.key_size = 16,
+	}, {
+		.alg_type = "skcipher",
+		.alg_name = "cbc(aes)",
+		.key_size = 17,
+		.setkey_error = EINVAL,
+	}, {
+		.alg_type = "skcipher",
+		.alg_name = "cbc(aes)",
+		.key_size = 24,
+	}, {
+		.alg_type = "skcipher",
+		.alg_name = "cbc(aes)",
+		.key_size = 32,
+	}, {
+		.alg_type = "skcipher",
+		.alg_name = "cbc(aes)",
+		.key_size = 33,
+		.setkey_error = EINVAL,
+	}, {
+		.alg_type = "skcipher",
+		.alg_name = "cbc(aes)",
+		.key_size = 16,
+		.msg_size = 1,
+		.direction = DECRYPT,
+		.crypt_error = EINVAL,
+	}, {
+		.alg_type = "skcipher",
+		.alg_name = "cbc(aes)",
+		.key_size = 16,
+		.msg_size = 16,
+		.direction = ENCRYPT,
+	}, {
+		.alg_type = "skcipher",
+		.alg_name = "cbc(aes)",
+		.key_size = 16,
+		.msg_size = 17,
+		.direction = ENCRYPT,
+		.crypt_error = EINVAL,
+	}, {
+		.alg_type = "hash",
+		.alg_name = "cmac(aes)",
+		.key_size = 29,
+		.setkey_error = EINVAL,
+	}, {
+		.alg_type = "skcipher",
+		.alg_name = "xts(aes)",
+		.key_size = 32,
+	}, {
+		.alg_type = "skcipher",
+		.alg_name = "xts(aes)",
+		.key = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+		       "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",
+		.key_size = 32,
+		.setkey_error = EINVAL,
+	}
+};
+
+static const char *describe_crypt_op(const struct invalid_input_test *t)
+{
+	if (t->direction == ENCRYPT)
+		return "encryption";
+	if (t->direction == DECRYPT)
+		return "decryption";
+	if (strcmp(t->alg_type, "hash") == 0)
+		return "hashing";
+	ASSERT(0);
+}
+
+static bool af_alg_setkey(const struct invalid_input_test *t, int alg_fd)
+{
+	const uint8_t *key = (const uint8_t *)t->key;
+	uint8_t _key[t->key_size];
+
+	if (t->key_size == 0)
+		return true;
+
+	if (t->key == NULL) {
+		rand_bytes(_key, t->key_size);
+		key = _key;
+	}
+	if (setsockopt(alg_fd, SOL_ALG, ALG_SET_KEY, key, t->key_size) != 0) {
+		printf("%s: setting %zu-byte key failed with error '%s'\n",
+		       t->alg_name, t->key_size, strerror(errno));
+		printf("\tkey was %s\n\n", bytes_to_hex(key, t->key_size));
+		ASSERT(t->setkey_error == errno);
+		return false;
+	}
+	printf("%s: setting %zu-byte key succeeded\n",
+	       t->alg_name, t->key_size);
+	printf("\tkey was %s\n\n", bytes_to_hex(key, t->key_size));
+	ASSERT(t->setkey_error == 0);
+	return true;
+}
+
+static void af_alg_process_msg(const struct invalid_input_test *t, int alg_fd)
+{
+	struct iovec iov;
+	struct msghdr hdr = {
+		.msg_iov = &iov,
+		.msg_iovlen = 1,
+	};
+	const uint8_t *msg = (const uint8_t *)t->msg;
+	uint8_t *_msg = NULL;
+	uint8_t *output = NULL;
+	uint8_t *control = NULL;
+	size_t controllen = 0;
+	struct cmsghdr *cmsg;
+	int req_fd;
+
+	if (t->msg_size == 0)
+		return;
+
+	req_fd = get_req_fd(alg_fd, t->alg_name);
+
+	if (t->msg == NULL) {
+		_msg = malloc(t->msg_size);
+		rand_bytes(_msg, t->msg_size);
+		msg = _msg;
+	}
+	output = malloc(t->msg_size);
+	iov.iov_base = (void *)msg;
+	iov.iov_len = t->msg_size;
+
+	if (t->direction != UNSPECIFIED)
+		controllen += CMSG_SPACE(sizeof(uint32_t));
+	if (t->iv_size)
+		controllen += CMSG_SPACE(sizeof(struct af_alg_iv) + t->iv_size);
+	control = calloc(1, controllen);
+	hdr.msg_control = control;
+	hdr.msg_controllen = controllen;
+	cmsg = CMSG_FIRSTHDR(&hdr);
+	if (t->direction != UNSPECIFIED) {
+		cmsg->cmsg_level = SOL_ALG;
+		cmsg->cmsg_type = ALG_SET_OP;
+		cmsg->cmsg_len = CMSG_LEN(sizeof(uint32_t));
+		*(uint32_t *)CMSG_DATA(cmsg) = t->direction == DECRYPT ?
+				ALG_OP_DECRYPT : ALG_OP_ENCRYPT;
+		cmsg = CMSG_NXTHDR(&hdr, cmsg);
+	}
+	if (t->iv_size) {
+		struct af_alg_iv *alg_iv;
+
+		cmsg->cmsg_level = SOL_ALG;
+		cmsg->cmsg_type = ALG_SET_IV;
+		cmsg->cmsg_len = CMSG_LEN(sizeof(*alg_iv) + t->iv_size);
+		alg_iv = (struct af_alg_iv *)CMSG_DATA(cmsg);
+		alg_iv->ivlen = t->iv_size;
+		memcpy(alg_iv->iv, t->iv, t->iv_size);
+	}
+
+	if (sendmsg(req_fd, &hdr, 0) != t->msg_size)
+		die_errno("sendmsg failed");
+
+	if (read(req_fd, output, t->msg_size) != t->msg_size) {
+		printf("%s: %s of %zu-byte message failed with error '%s'\n",
+		       t->alg_name, describe_crypt_op(t), t->msg_size,
+		       strerror(errno));
+		printf("\tmessage was %s\n\n", bytes_to_hex(msg, t->msg_size));
+		ASSERT(t->crypt_error == errno);
+	} else {
+		printf("%s: %s of %zu-byte message succeeded\n",
+		       t->alg_name, describe_crypt_op(t), t->msg_size);
+		printf("\tmessage was %s\n\n", bytes_to_hex(msg, t->msg_size));
+		ASSERT(t->crypt_error == 0);
+	}
+	free(_msg);
+	free(output);
+	free(control);
+	close(req_fd);
+}
+
+static void test_invalid_input(const struct invalid_input_test *t)
+{
+	int alg_fd = get_alg_fd(t->alg_type, t->alg_name);
+
+	if (af_alg_setkey(t, alg_fd))
+		af_alg_process_msg(t, alg_fd);
+
+	close(alg_fd);
+}
+
+static int cmd_show_invalid_inputs(int argc, char *argv[])
+{
+	int i;
+
+	for (i = 0; i < ARRAY_SIZE(invalid_input_tests); i++)
+		test_invalid_input(&invalid_input_tests[i]);
+	return 0;
+}
+
+/* ---------------------------------------------------------------------------
+ *			  show_module_version command
+ * ---------------------------------------------------------------------------*/
+
+static int cmd_show_module_version(int argc, char *argv[])
+{
+	printf("fips140_module_version() => \"%s\"\n",
+	       fips140_module_version());
+	return 0;
+}
+
+/* ---------------------------------------------------------------------------
+ *			show_service_indicators command
+ * ---------------------------------------------------------------------------*/
+
+static const char * const default_services_to_show[] = {
+	"aes",
+	"cbc(aes)",
+	"cbcmac(aes)",
+	"cmac(aes)",
+	"ctr(aes)",
+	"cts(cbc(aes))",
+	"ecb(aes)",
+	"essiv(cbc(aes),sha256)",
+	"gcm(aes)",
+	"hmac(sha1)",
+	"hmac(sha224)",
+	"hmac(sha256)",
+	"hmac(sha384)",
+	"hmac(sha512)",
+	"jitterentropy_rng",
+	"sha1",
+	"sha224",
+	"sha256",
+	"sha384",
+	"sha512",
+	"stdrng",
+	"xcbc(aes)",
+	"xts(aes)",
+};
+
+static int cmd_show_service_indicators(int argc, char *argv[])
+{
+	const char * const *services = default_services_to_show;
+	int count = ARRAY_SIZE(default_services_to_show);
+	int i;
+
+	if (argc > 1) {
+		services = (const char **)(argv + 1);
+		count = argc - 1;
+	}
+	for (i = 0; i < count; i++) {
+		printf("fips140_is_approved_service(\"%s\") => %s\n",
+		       services[i],
+		       booltostr(fips140_is_approved_service(services[i])));
+	}
+	return 0;
+}
+
+/* ---------------------------------------------------------------------------
+ *				     main()
+ * ---------------------------------------------------------------------------*/
+
+static const struct command {
+	const char *name;
+	int (*func)(int argc, char *argv[]);
+} commands[] = {
+	{ "dump_jitterentropy", cmd_dump_jitterentropy },
+	{ "show_invalid_inputs", cmd_show_invalid_inputs },
+	{ "show_module_version", cmd_show_module_version },
+	{ "show_service_indicators", cmd_show_service_indicators },
+};
+
+static void usage(void)
+{
+	fprintf(stderr,
+"Usage:\n"
+"       fips140_lab_util dump_jitterentropy [OPTION]...\n"
+"       fips140_lab_util show_invalid_inputs\n"
+"       fips140_lab_util show_module_version\n"
+"       fips140_lab_util show_service_indicators [SERVICE]...\n"
+"\n"
+"Options for dump_jitterentropy:\n"
+"  --amount=AMOUNT      Amount to dump in bytes per iteration (default 128)\n"
+"  --iterations=COUNT   Number of start-up iterations (default 1)\n"
+	);
+}
+
+int main(int argc, char *argv[])
+{
+	int i;
+
+	if (argc < 2) {
+		usage();
+		return 2;
+	}
+	for (i = 1; i < argc; i++) {
+		if (strcmp(argv[i], "--help") == 0) {
+			usage();
+			return 2;
+		}
+	}
+
+	for (i = 0; i < ARRAY_SIZE(commands); i++) {
+		if (strcmp(commands[i].name, argv[1]) == 0)
+			return commands[i].func(argc - 1, argv + 1);
+	}
+	fprintf(stderr, "Unknown command: %s\n\n", argv[1]);
+	usage();
+	return 2;
+}
diff --git a/samples/gunyah/.gitignore b/samples/gunyah/.gitignore
new file mode 100644
index 0000000..adc7d15
--- /dev/null
+++ b/samples/gunyah/.gitignore
@@ -0,0 +1,2 @@
+# SPDX-License-Identifier: GPL-2.0
+/gunyah_vmm
diff --git a/samples/gunyah/Makefile b/samples/gunyah/Makefile
new file mode 100644
index 0000000..faf14f9
--- /dev/null
+++ b/samples/gunyah/Makefile
@@ -0,0 +1,6 @@
+# SPDX-License-Identifier: GPL-2.0-only
+
+userprogs-always-y += gunyah_vmm
+dtb-y += sample_vm.dtb
+
+userccflags += -I usr/include
diff --git a/samples/gunyah/gunyah_vmm.c b/samples/gunyah/gunyah_vmm.c
new file mode 100644
index 0000000..6f636ac
--- /dev/null
+++ b/samples/gunyah/gunyah_vmm.c
@@ -0,0 +1,266 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <sys/ioctl.h>
+#include <getopt.h>
+#include <limits.h>
+#include <stdint.h>
+#include <fcntl.h>
+#include <string.h>
+#include <sys/sysmacros.h>
+#define __USE_GNU
+#include <sys/mman.h>
+
+#include <linux/gunyah.h>
+
+#define DEFAULT_GUEST_BASE	0x80000000
+#define DEFAULT_GUEST_SIZE	0x6400000 /* 100 MiB */
+#define DEFAULT_DTB_OFFSET	0x45f0000 /* 70MiB - 64 KiB */
+#define DEFAULT_RAMDISK_OFFSET	0x4600000 /* 70MiB */
+
+struct vm_config {
+	int image_fd;
+	int dtb_fd;
+	int ramdisk_fd;
+
+	uint64_t guest_base;
+	uint64_t guest_size;
+
+	off_t image_size;
+	uint64_t dtb_offset;
+	off_t dtb_size;
+	uint64_t ramdisk_offset;
+	off_t ramdisk_size;
+};
+
+static struct option options[] = {
+	{ "help", no_argument, NULL, 'h' },
+	{ "image", required_argument, NULL, 'i' },
+	{ "dtb", required_argument, NULL, 'd' },
+	{ "ramdisk", optional_argument, NULL, 'r' },
+	{ "base", optional_argument, NULL, 'B' },
+	{ "size", optional_argument, NULL, 'S' },
+	{ "dtb_offset", optional_argument, NULL, 'D' },
+	{ "ramdisk_offset", optional_argument, NULL, 'R' },
+	{ }
+};
+
+static void print_help(char *cmd)
+{
+	printf("gunyah_vmm, a sample tool to launch Gunyah VMs\n"
+	       "Usage: %s <options>\n"
+	       "       --help,    -h  this menu\n"
+	       "       --image,   -i <image> VM image file to load (e.g. a kernel Image) [Required]\n"
+	       "       --dtb,     -d <dtb>   Devicetree file to load [Required]\n"
+	       "       --ramdisk, -r <ramdisk>  Ramdisk file to load\n"
+	       "       --base,    -B <address>  Set the base address of guest's memory [Default: 0x%08x]\n"
+	       "       --size,    -S <number>   The number of bytes large to make the guest's memory [Default: 0x%08x]\n"
+	       "        --dtb_offset,  -D <number>  Offset into guest memory to load the DTB [Default: 0x%08x]\n"
+	       "        --ramdisk_offset, -R <number>  Offset into guest memory to load a ramdisk [Default: 0x%08x]\n"
+	       , cmd, DEFAULT_GUEST_BASE, DEFAULT_GUEST_SIZE,
+	       DEFAULT_DTB_OFFSET, DEFAULT_RAMDISK_OFFSET);
+}
+
+int main(int argc, char **argv)
+{
+	int gunyah_fd, vm_fd, guest_fd;
+	struct gh_userspace_memory_region guest_mem_desc = { 0 };
+	struct gh_vm_dtb_config dtb_config = { 0 };
+	char *guest_mem;
+	struct vm_config config = {
+		/* Defaults good enough to boot static kernel and a basic ramdisk */
+		.image_fd = -1,
+		.dtb_fd = -1,
+		.ramdisk_fd = -1,
+		.guest_base = DEFAULT_GUEST_BASE,
+		.guest_size = DEFAULT_GUEST_SIZE,
+		.dtb_offset = DEFAULT_DTB_OFFSET,
+		.ramdisk_offset = DEFAULT_RAMDISK_OFFSET,
+	};
+	struct stat st;
+	int opt, optidx, ret = 0;
+	long l;
+
+	while ((opt = getopt_long(argc, argv, "hi:d:r:B:S:D:R:c:", options, &optidx)) != -1) {
+		switch (opt) {
+		case 'i':
+			config.image_fd = open(optarg, O_RDONLY | O_CLOEXEC);
+			if (config.image_fd < 0) {
+				perror("Failed to open image");
+				return -1;
+			}
+			if (stat(optarg, &st) < 0) {
+				perror("Failed to stat image");
+				return -1;
+			}
+			config.image_size = st.st_size;
+			break;
+		case 'd':
+			config.dtb_fd = open(optarg, O_RDONLY | O_CLOEXEC);
+			if (config.dtb_fd < 0) {
+				perror("Failed to open dtb");
+				return -1;
+			}
+			if (stat(optarg, &st) < 0) {
+				perror("Failed to stat dtb");
+				return -1;
+			}
+			config.dtb_size = st.st_size;
+			break;
+		case 'r':
+			config.ramdisk_fd = open(optarg, O_RDONLY | O_CLOEXEC);
+			if (config.ramdisk_fd < 0) {
+				perror("Failed to open ramdisk");
+				return -1;
+			}
+			if (stat(optarg, &st) < 0) {
+				perror("Failed to stat ramdisk");
+				return -1;
+			}
+			config.ramdisk_size = st.st_size;
+			break;
+		case 'B':
+			l = strtol(optarg, NULL, 0);
+			if (l == LONG_MIN) {
+				perror("Failed to parse base address");
+				return -1;
+			}
+			config.guest_base = l;
+			break;
+		case 'S':
+			l = strtol(optarg, NULL, 0);
+			if (l == LONG_MIN) {
+				perror("Failed to parse memory size");
+				return -1;
+			}
+			config.guest_size = l;
+			break;
+		case 'D':
+			l = strtol(optarg, NULL, 0);
+			if (l == LONG_MIN) {
+				perror("Failed to parse dtb offset");
+				return -1;
+			}
+			config.dtb_offset = l;
+			break;
+		case 'R':
+			l = strtol(optarg, NULL, 0);
+			if (l == LONG_MIN) {
+				perror("Failed to parse ramdisk offset");
+				return -1;
+			}
+			config.ramdisk_offset = l;
+			break;
+		case 'h':
+			print_help(argv[0]);
+			return 0;
+		default:
+			print_help(argv[0]);
+			return -1;
+		}
+	}
+
+	if (config.image_fd == -1 || config.dtb_fd == -1) {
+		print_help(argv[0]);
+		return -1;
+	}
+
+	if (config.image_size > config.guest_size) {
+		fprintf(stderr, "Image size puts it outside guest memory. Make image smaller or increase guest memory size.\n");
+		return -1;
+	}
+
+	if (config.dtb_offset + config.dtb_size > config.guest_size) {
+		fprintf(stderr, "DTB offset and size puts it outside guest memory. Make dtb smaller or increase guest memory size.\n");
+		return -1;
+	}
+
+	if (config.ramdisk_fd == -1 &&
+		config.ramdisk_offset + config.ramdisk_size > config.guest_size) {
+		fprintf(stderr, "Ramdisk offset and size puts it outside guest memory. Make ramdisk smaller or increase guest memory size.\n");
+		return -1;
+	}
+
+	gunyah_fd = open("/dev/gunyah", O_RDWR | O_CLOEXEC);
+	if (gunyah_fd < 0) {
+		perror("Failed to open /dev/gunyah");
+		return -1;
+	}
+
+	vm_fd = ioctl(gunyah_fd, GH_CREATE_VM, 0);
+	if (vm_fd < 0) {
+		perror("Failed to create vm");
+		return -1;
+	}
+
+	guest_fd = memfd_create("guest_memory", MFD_CLOEXEC);
+	if (guest_fd < 0) {
+		perror("Failed to create guest memfd");
+		return -1;
+	}
+
+	if (ftruncate(guest_fd, config.guest_size) < 0) {
+		perror("Failed to grow guest memory");
+		return -1;
+	}
+
+	guest_mem = mmap(NULL, config.guest_size, PROT_READ | PROT_WRITE, MAP_SHARED, guest_fd, 0);
+	if (guest_mem == MAP_FAILED) {
+		perror("Not enough memory");
+		return -1;
+	}
+
+	if (read(config.image_fd, guest_mem, config.image_size) < 0) {
+		perror("Failed to read image into guest memory");
+		return -1;
+	}
+
+	if (read(config.dtb_fd, guest_mem + config.dtb_offset, config.dtb_size) < 0) {
+		perror("Failed to read dtb into guest memory");
+		return -1;
+	}
+
+	if (config.ramdisk_fd > 0 &&
+		read(config.ramdisk_fd, guest_mem + config.ramdisk_offset,
+			config.ramdisk_size) < 0) {
+		perror("Failed to read ramdisk into guest memory");
+		return -1;
+	}
+
+	guest_mem_desc.label = 0;
+	guest_mem_desc.flags = GH_MEM_ALLOW_READ | GH_MEM_ALLOW_WRITE | GH_MEM_ALLOW_EXEC;
+	guest_mem_desc.guest_phys_addr = config.guest_base;
+	guest_mem_desc.memory_size = config.guest_size;
+	guest_mem_desc.userspace_addr = (__u64)guest_mem;
+
+	if (ioctl(vm_fd, GH_VM_SET_USER_MEM_REGION, &guest_mem_desc) < 0) {
+		perror("Failed to register guest memory with VM");
+		return -1;
+	}
+
+	dtb_config.guest_phys_addr = config.guest_base + config.dtb_offset;
+	dtb_config.size = config.dtb_size;
+	if (ioctl(vm_fd, GH_VM_SET_DTB_CONFIG, &dtb_config) < 0) {
+		perror("Failed to set DTB configuration for VM");
+		return -1;
+	}
+
+	ret = ioctl(vm_fd, GH_VM_START);
+	if (ret) {
+		perror("GH_VM_START failed");
+		return -1;
+	}
+
+	while (1)
+		pause();
+
+	return 0;
+}
diff --git a/samples/gunyah/sample_vm.dts b/samples/gunyah/sample_vm.dts
new file mode 100644
index 0000000..293bbc0
--- /dev/null
+++ b/samples/gunyah/sample_vm.dts
@@ -0,0 +1,68 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+/dts-v1/;
+
+/ {
+	#address-cells = <2>;
+	#size-cells = <2>;
+	interrupt-parent = <&intc>;
+
+	chosen {
+		bootargs = "nokaslr";
+	};
+
+	cpus {
+		#address-cells = <0x2>;
+		#size-cells = <0>;
+
+		cpu@0 {
+			device_type = "cpu";
+			compatible = "arm,armv8";
+			reg = <0 0>;
+		};
+	};
+
+	intc: interrupt-controller@3FFF0000 {
+		compatible = "arm,gic-v3";
+		#interrupt-cells = <3>;
+		#address-cells = <2>;
+		#size-cells = <2>;
+		interrupt-controller;
+		reg = <0 0x3FFF0000 0 0x10000>,
+		      <0 0x3FFD0000 0 0x20000>;
+	};
+
+	timer {
+		compatible = "arm,armv8-timer";
+		always-on;
+		interrupts = <1 13 0x108>,
+			     <1 14 0x108>,
+			     <1 11 0x108>,
+			     <1 10 0x108>;
+		clock-frequency = <19200000>;
+	};
+
+	gunyah-vm-config {
+		image-name = "linux_vm_0";
+
+		memory {
+			#address-cells = <2>;
+			#size-cells = <2>;
+
+			base-address = <0 0x80000000>;
+		};
+
+		interrupts {
+			config = <&intc>;
+		};
+
+		vcpus {
+			affinity-map = < 0 >;
+			sched-priority = < (-1) >;
+			sched-timeslice = < 2000 >;
+		};
+	};
+};
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
index 3aa384c..2e20d34 100644
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -242,7 +242,9 @@
 
 ld_flags       = $(KBUILD_LDFLAGS) $(ldflags-y) $(LDFLAGS_$(@F))
 
-DTC_INCLUDE    := $(srctree)/scripts/dtc/include-prefixes
+# ANDROID: Allow DTC_INCLUDE to be set by the BUILD_CONFIG. This allows one to
+# compile an out-of-tree device tree.
+DTC_INCLUDE    += $(srctree)/scripts/dtc/include-prefixes
 
 dtc_cpp_flags  = -Wp,-MMD,$(depfile).pre.tmp -nostdinc                    \
 		 $(addprefix -I,$(DTC_INCLUDE))                          \
@@ -455,10 +457,10 @@
       cmd_lzo_with_size = { cat $(real-prereqs) | $(KLZOP) -9; $(size_append); } > $@
 
 quiet_cmd_lz4 = LZ4     $@
-      cmd_lz4 = cat $(real-prereqs) | $(LZ4) -l -c1 stdin stdout > $@
+      cmd_lz4 = cat $(real-prereqs) | $(LZ4) -l -12 --favor-decSpeed stdin stdout > $@
 
 quiet_cmd_lz4_with_size = LZ4     $@
-      cmd_lz4_with_size = { cat $(real-prereqs) | $(LZ4) -l -c1 stdin stdout; \
+      cmd_lz4_with_size = { cat $(real-prereqs) | $(LZ4) -l -12 --favor-decSpeed stdin stdout; \
                   $(size_append); } > $@
 
 # U-Boot mkimage
diff --git a/scripts/Makefile.modfinal b/scripts/Makefile.modfinal
index 25bedd8..440f0b28 100644
--- a/scripts/Makefile.modfinal
+++ b/scripts/Makefile.modfinal
@@ -12,6 +12,8 @@
 # for c_flags
 include $(srctree)/scripts/Makefile.lib
 
+mixed-build-prefix = $(if $(KBUILD_MIXED_TREE),$(KBUILD_MIXED_TREE)/)
+
 # find all modules listed in modules.order
 modules := $(sort $(shell cat $(MODORDER)))
 
@@ -39,13 +41,13 @@
 
 quiet_cmd_btf_ko = BTF [M] $@
       cmd_btf_ko = 							\
-	if [ ! -f vmlinux ]; then					\
-		printf "Skipping BTF generation for %s due to unavailability of vmlinux\n" $@ 1>&2; \
+	if [ ! -f $(mixed-build-prefix)vmlinux ]; then					\
+		printf "Skipping BTF generation for %s due to unavailability of $(mixed-build-prefix)vmlinux\n" $@ 1>&2; \
 	elif [ -n "$(CONFIG_RUST)" ] && $(srctree)/scripts/is_rust_module.sh $@; then 		\
 		printf "Skipping BTF generation for %s because it's a Rust module\n" $@ 1>&2; \
 	else								\
-		LLVM_OBJCOPY="$(OBJCOPY)" $(PAHOLE) -J $(PAHOLE_FLAGS) --btf_base vmlinux $@; \
-		$(RESOLVE_BTFIDS) -b vmlinux $@; 			\
+		LLVM_OBJCOPY="$(OBJCOPY)" $(PAHOLE) -J $(PAHOLE_FLAGS) --btf_base $(mixed-build-prefix)vmlinux $@; \
+		$(RESOLVE_BTFIDS) -b $(mixed-build-prefix)vmlinux $@; 			\
 	fi;
 
 # Same as newer-prereqs, but allows to exclude specified extra dependencies
@@ -57,8 +59,8 @@
 	printf '%s\n' 'cmd_$@ := $(make-cmd)' > $(dot-target).cmd, @:)
 
 # Re-generate module BTFs if either module's .ko or vmlinux changed
-$(modules): %.ko: %.o %.mod.o scripts/module.lds $(and $(CONFIG_DEBUG_INFO_BTF_MODULES),$(KBUILD_BUILTIN),vmlinux) FORCE
-	+$(call if_changed_except,ld_ko_o,vmlinux)
+$(modules): %.ko: %.o %.mod.o scripts/module.lds $(and $(CONFIG_DEBUG_INFO_BTF_MODULES),$(KBUILD_BUILTIN),$(mixed-build-prefix)vmlinux) FORCE
+	+$(call if_changed_except,ld_ko_o,$(mixed-build-prefix)vmlinux)
 ifdef CONFIG_DEBUG_INFO_BTF_MODULES
 	+$(if $(newer-prereqs),$(call cmd,btf_ko))
 endif
diff --git a/scripts/Makefile.modinst b/scripts/Makefile.modinst
index 10df89b9..8019c71 100644
--- a/scripts/Makefile.modinst
+++ b/scripts/Makefile.modinst
@@ -27,6 +27,10 @@
 suffix-$(CONFIG_MODULE_COMPRESS_ZSTD)	:= .zst
 
 modules := $(patsubst $(extmod_prefix)%, $(dst)/%$(suffix-y), $(modules))
+ifneq ($(KBUILD_EXTMOD),)
+extmod_suffix := $(shell echo "${KBUILD_EXTMOD}" | md5sum | cut -d " " -f 1)
+modules += $(dst)/modules.order.$(extmod_suffix)
+endif
 
 __modinst: $(modules)
 	@:
@@ -86,6 +90,12 @@
 	$(call cmd,strip)
 	$(call cmd,sign)
 
+ifneq ($(KBUILD_EXTMOD),)
+$(dst)/modules.order.$(extmod_suffix): $(MODORDER) FORCE
+	$(call cmd,install)
+	@sed -i "s:^$(KBUILD_EXTMOD):$(INSTALL_MOD_DIR):g" $@
+endif
+
 else
 
 $(dst)/%.ko: FORCE
diff --git a/scripts/Makefile.modpost b/scripts/Makefile.modpost
index e41dee6..cb21c17 100644
--- a/scripts/Makefile.modpost
+++ b/scripts/Makefile.modpost
@@ -38,6 +38,8 @@
 include include/config/auto.conf
 include $(srctree)/scripts/Kbuild.include
 
+mixed-build-prefix = $(if $(KBUILD_MIXED_TREE),$(KBUILD_MIXED_TREE)/)
+
 modpost-args =										\
 	$(if $(CONFIG_MODVERSIONS),-m)							\
 	$(if $(CONFIG_MODULE_SRCVERSION_ALL),-a)					\
@@ -51,6 +53,33 @@
 modpost-args += -n
 endif
 
+ifeq ($(CONFIG_MODULE_SCMVERSION),y)
+ifeq ($(KBUILD_EXTMOD),)
+module_srcpath := $(srctree)
+else
+# Get the external module's source path. KBUILD_EXTMOD could either be an
+# absolute path or relative path from $(srctree). This makes sure that we
+# aren't using a relative path from a separate working directory (O= or
+# KBUILD_OUTPUT) since that may not be the actual module's SCM project path. So
+# check the path relative to $(srctree) first.
+ifneq ($(realpath $(srctree)/$(KBUILD_EXTMOD) 2>/dev/null),)
+	module_srcpath := $(srctree)/$(KBUILD_EXTMOD)
+else
+	module_srcpath := $(KBUILD_EXTMOD)
+endif
+endif
+
+# Get the SCM version of the module. Sed verifies setlocalversion returns
+# a proper revision based on the SCM type, e.g. git, mercurial, or svn.
+# Note: relative M= paths are not supported when building the kernel out of the
+# srctree since setlocalversion won't be able to find the module srctree.
+module_scmversion := $(shell $(srctree)/scripts/setlocalversion $(module_srcpath) | \
+	sed -n 's/.*-\(\(g\|hg\)[a-fA-F0-9]\+\(-dirty\)\?\|svn[0-9]\+\).*/\1/p')
+ifneq ($(module_scmversion),)
+modpost-args += -v $(module_scmversion)
+endif
+endif
+
 ifeq ($(KBUILD_EXTMOD),)
 
 # Generate the list of in-tree objects in vmlinux
@@ -58,8 +87,10 @@
 
 # This is used to retrieve symbol versions generated by genksyms.
 ifdef CONFIG_MODVERSIONS
+ifndef KBUILD_MIXED_TREE
 vmlinux.symvers Module.symvers: .vmlinux.objs
 endif
+endif
 
 # Ignore libgcc.a
 # Some architectures do '$(CC) --print-libgcc-file-name' to borrow libgcc.a
@@ -74,9 +105,17 @@
 		esac			\
 	done > $@
 
+quiet_cmd_vmlinux_symvers = GEN     $@
+      cmd_vmlinux_symvers = grep "\<vmlinux\s\+EXPORT" $< > $@
+
+quiet_cmd_cat_symvers = GEN     $@
+      cmd_cat_symvers = cat $(real-prereqs) > $@
+
+ifndef KBUILD_MIXED_TREE
 targets += .vmlinux.objs
 .vmlinux.objs: vmlinux.a $(KBUILD_VMLINUX_LIBS) FORCE
 	$(call if_changed,vmlinux_objs)
+endif
 
 vmlinux.o-if-present := $(wildcard vmlinux.o)
 output-symdump := vmlinux.symvers
@@ -84,6 +123,27 @@
 ifdef KBUILD_MODULES
 output-symdump := $(if $(vmlinux.o-if-present), Module.symvers, modules-only.symvers)
 missing-input := $(filter-out $(vmlinux.o-if-present),vmlinux.o)
+
+targets += vmlinux.symvers
+vmlinux.symvers: Module.symvers FORCE
+	$(call if_changed,vmlinux_symvers)
+
+__modpost: $(if $(vmlinux.o-if-present),vmlinux.symvers,)
+endif
+
+# Overwrite values for mixed building (overwritting makes merges easier)
+ifdef KBUILD_MIXED_TREE
+targets += Module.symvers
+Module.symvers: $(mixed-build-prefix)vmlinux.symvers modules-only.symvers FORCE
+	$(call if_changed,cat_symvers)
+
+__modpost: Module.symvers
+
+vmlinux.o-if-present :=
+vmlinux.symvers-if-present := $(wildcard $(mixed-build-prefix)vmlinux.symvers)
+modpost-args += $(addprefix -i ,$(vmlinux.symvers-if-present))
+output-symdump := modules-only.symvers
+missing-input := $(filter-out $(vmlinux.symvers-if-present),$(mixed-build-prefix)vmlinux.symvers)
 endif
 
 else
diff --git a/scripts/depmod.sh b/scripts/depmod.sh
index 3643b4f..2de598d 100755
--- a/scripts/depmod.sh
+++ b/scripts/depmod.sh
@@ -3,14 +3,15 @@
 #
 # A depmod wrapper used by the toplevel Makefile
 
-if test $# -ne 2; then
-	echo "Usage: $0 /sbin/depmod <kernelrelease>" >&2
+if test $# -ne 2 -a $# -ne 3; then
+	echo "Usage: $0 /sbin/depmod <kernelrelease> [System.map folder]" >&2
 	exit 1
 fi
 DEPMOD=$1
 KERNELRELEASE=$2
+KBUILD_MIXED_TREE=$3
 
-if ! test -r System.map ; then
+if ! test -r ${KBUILD_MIXED_TREE}System.map ; then
 	echo "Warning: modules_install: missing 'System.map' file. Skipping depmod." >&2
 	exit 0
 fi
@@ -41,7 +42,7 @@
 	KERNELRELEASE=99.98.$KERNELRELEASE
 fi
 
-set -- -ae -F System.map
+set -- -ae -F ${KBUILD_MIXED_TREE}System.map
 if test -n "$INSTALL_MOD_PATH"; then
 	set -- "$@" -b "$INSTALL_MOD_PATH"
 fi
diff --git a/scripts/gen_gki_modules_headers.sh b/scripts/gen_gki_modules_headers.sh
new file mode 100755
index 0000000..3aa221a
--- /dev/null
+++ b/scripts/gen_gki_modules_headers.sh
@@ -0,0 +1,123 @@
+#!/bin/bash
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# Copyright 2022 Google LLC
+# Author: ramjiyani@google.com (Ramji Jiyani)
+#
+
+#
+# Generates header file with list of unprotected symbols
+#
+# Called By: KERNEL_SRC/kernel/Makefile if CONFIG_MODULE_SIG_PROTECT=y
+#
+# gki_module_unprotected.h: Symbols allowed to _access_ by unsigned modules
+#
+# If valid symbol file doesn't exists then still generates valid C header files for
+# compilation to proceed with no symbols to protect
+#
+
+# Collect arguments from Makefile
+TARGET=$1
+SRCTREE=$2
+SYMBOL_LIST=$3
+
+set -e
+
+#
+# Common Definitions
+#
+# Use "make V=1" to debug this script.
+case "$KBUILD_VERBOSE" in
+*1*)
+	set -x
+	;;
+esac
+
+#
+# generate_header():
+# Args: $1 = Name of the header file
+#       $2 = Input symbol list
+#       $3 = Symbol type ("unprotected")
+#
+generate_header() {
+	local header_file=$1
+	local symbol_file=$2
+	local symbol_type=$3
+
+	if [ -f "${header_file}" ]; then
+		rm -f -- "${header_file}"
+	fi
+
+	# If symbol_file exist preprocess it and find maximum name length
+	if [  -s "${symbol_file}" ]; then
+		# Remove any trailing CR, leading / trailing whitespace,
+		# line comments, empty lines and symbol list markers.
+		sed -i '
+			s/\r$//
+			s/^[[:space:]]*//
+			s/[[:space:]]*$//
+			/^#/d
+			/^$/d
+			/^\[abi_symbol_list\]$/d
+		' "${symbol_file}"
+
+		# Sort in byte order for kernel binary search at runtime
+		LC_ALL=C sort -u -o "${symbol_file}" "${symbol_file}"
+
+		# Trim white spaces & +1 for null termination
+		local max_name_len=$(awk '
+				{
+					$1=$1;
+					if ( length > L ) {
+						L=length
+					}
+				} END { print ++L }' "${symbol_file}")
+	else
+		# Set to 1 to generate valid C header file
+		local max_name_len=1
+	fi
+
+	# Header generation
+	cat > "${header_file}" <<- EOT
+	/*
+	 * DO NOT EDIT
+	 *
+	 * Build generated header file with ${symbol_type}
+	 */
+
+	#define NR_$(printf ${symbol_type} | tr [:lower:] [:upper:])_SYMBOLS \\
+	$(printf '\t')(ARRAY_SIZE(gki_${symbol_type}_symbols))
+	#define MAX_$(printf ${symbol_type} | tr [:lower:] [:upper:])_NAME_LEN (${max_name_len})
+
+	static const char gki_${symbol_type}_symbols[][MAX_$(printf ${symbol_type} |
+							tr [:lower:] [:upper:])_NAME_LEN] = {
+	EOT
+
+	# If a valid symbol_file present add symbols in an array except the 1st line
+	if [  -s "${symbol_file}" ]; then
+		sed -e 's/^[ \t]*/\t"/;s/[ \t]*$/",/' "${symbol_file}" >> "${header_file}"
+	fi
+
+	# Terminate the file
+	echo "};" >> "${header_file}"
+}
+
+if [ "$(basename "${TARGET}")" = "gki_module_unprotected.h" ]; then
+	# Union of vendor symbol lists
+	GKI_VENDOR_SYMBOLS="${SYMBOL_LIST}"
+	generate_header "${TARGET}" "${GKI_VENDOR_SYMBOLS}" "unprotected"
+else
+	# Sorted list of exported symbols
+	GKI_EXPORTED_SYMBOLS="${objtree}/abi_gki_protected_exports"
+
+	if [ -z "${SYMBOL_LIST}" ]; then
+		# Create empty list if ARCH doesn't have protected exports
+		touch "${GKI_EXPORTED_SYMBOLS}"
+	else
+		# Make a temp copy to avoid changing source during pre-processing
+		cp -f "${SYMBOL_LIST}" "${GKI_EXPORTED_SYMBOLS}"
+	fi
+
+	generate_header "${TARGET}" "${GKI_EXPORTED_SYMBOLS}" "protected_exports"
+fi
+
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index 1dfa80c..fa06854 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -29,6 +29,8 @@ static bool modversions;
 static bool all_versions;
 /* If we are modposting external module set to 1 */
 static bool external_module;
+#define MODULE_SCMVERSION_SIZE 64
+static char module_scmversion[MODULE_SCMVERSION_SIZE];
 /* Only warn about unresolved symbols */
 static bool warn_unresolved;
 
@@ -788,6 +790,7 @@ static void check_section(const char *modname, struct elf_info *elf,
 	const char *sec = sech_name(elf, sechdr);
 
 	if (sechdr->sh_type == SHT_PROGBITS &&
+	    sechdr->sh_size > 0 &&
 	    !(sechdr->sh_flags & SHF_ALLOC) &&
 	    !match(sec, section_white_list)) {
 		warn("%s (%s): unexpected non-allocatable section.\n"
@@ -1998,6 +2001,9 @@ static void add_header(struct buffer *b, struct module *mod)
 	if (!external_module)
 		buf_printf(b, "\nMODULE_INFO(intree, \"Y\");\n");
 
+	if (module_scmversion[0] != '\0')
+		buf_printf(b, "\nMODULE_INFO(scmversion, \"%s\");\n", module_scmversion);
+
 	buf_printf(b,
 		   "\n"
 		   "#ifdef CONFIG_RETPOLINE\n"
@@ -2326,7 +2332,7 @@ int main(int argc, char **argv)
 	LIST_HEAD(dump_lists);
 	struct dump_list *dl, *dl2;
 
-	while ((opt = getopt(argc, argv, "ei:mnT:o:awENd:")) != -1) {
+	while ((opt = getopt(argc, argv, "ei:mnT:o:awENd:v:")) != -1) {
 		switch (opt) {
 		case 'e':
 			external_module = true;
@@ -2363,6 +2369,9 @@ int main(int argc, char **argv)
 		case 'd':
 			missing_namespace_deps = optarg;
 			break;
+		case 'v':
+			strncpy(module_scmversion, optarg, sizeof(module_scmversion) - 1);
+			break;
 		default:
 			exit(1);
 		}
diff --git a/scripts/module.lds.S b/scripts/module.lds.S
index da4bddd..94bb2d6 100644
--- a/scripts/module.lds.S
+++ b/scripts/module.lds.S
@@ -3,6 +3,12 @@
  * Archs are free to supply their own linker scripts.  ld will
  * combine them automatically.
  */
+#ifdef CONFIG_UNWIND_TABLES
+#define DISCARD_EH_FRAME
+#else
+#define DISCARD_EH_FRAME	*(.eh_frame)
+#endif
+
 SECTIONS {
 	/DISCARD/ : {
 		*(.discard)
@@ -27,7 +33,36 @@
 	__kcfi_traps 		: { KEEP(*(.kcfi_traps)) }
 #endif
 
-#ifdef CONFIG_LTO_CLANG
+#if IS_ENABLED(CONFIG_CRYPTO_FIPS140_MOD)
+	/*
+	 * The FIPS140 module incorporates copies of builtin code, which gets
+	 * integrity checked at module load time, and registered in a way that
+	 * ensures that the integrity checked versions supersede the builtin
+	 * ones.  These objects are compiled as builtin code, and so their init
+	 * hooks will be exported from the binary in the same way as builtin
+	 * initcalls are, i.e., annotated with a level that defines the order
+	 * in which the hooks are expected to be invoked.
+	 */
+#define INIT_CALLS_LEVEL(level)						\
+		KEEP(*(.initcall##level##.init*))			\
+		KEEP(*(.initcall##level##s.init*))
+
+	.initcalls : {
+		*(.initcalls._start)
+		INIT_CALLS_LEVEL(0)
+		INIT_CALLS_LEVEL(1)
+		INIT_CALLS_LEVEL(2)
+		INIT_CALLS_LEVEL(3)
+		INIT_CALLS_LEVEL(4)
+		INIT_CALLS_LEVEL(5)
+		INIT_CALLS_LEVEL(rootfs)
+		INIT_CALLS_LEVEL(6)
+		INIT_CALLS_LEVEL(7)
+		*(.initcalls._end)
+	}
+#endif
+
+#if defined(CONFIG_LTO_CLANG) || IS_ENABLED(CONFIG_CRYPTO_FIPS140_MOD)
 	/*
 	 * With CONFIG_LTO_CLANG, LLD always enables -fdata-sections and
 	 * -ffunction-sections, which increases the size of the final module.
@@ -44,8 +79,17 @@
 	}
 
 	.rodata : {
+		*(.rodata.._start)
 		*(.rodata .rodata.[0-9a-zA-Z_]*)
 		*(.rodata..L*)
+		*(.rodata.._end)
+	}
+
+	.text : {
+		*(.text.._start)
+		*(.text .text.[0-9a-zA-Z_]*)
+		*(.text.._end)
+		*(.text.._fips140_unchecked)
 	}
 #endif
 }
diff --git a/scripts/setlocalversion b/scripts/setlocalversion
index af4754a..1b733ae 100755
--- a/scripts/setlocalversion
+++ b/scripts/setlocalversion
@@ -11,12 +11,14 @@
 #
 
 usage() {
-	echo "Usage: $0 [--save-scmversion] [srctree]" >&2
+	echo "Usage: $0 [--save-scmversion] [srctree] [branch] [kmi-generation]" >&2
 	exit 1
 }
 
 scm_only=false
 srctree=.
+android_release=
+kmi_generation=
 if test "$1" = "--save-scmversion"; then
 	scm_only=true
 	shift
@@ -25,6 +27,22 @@
 	srctree=$1
 	shift
 fi
+if test $# -gt 0; then
+	# Extract the Android release version. If there is no match, then return 255
+	# and clear the var $android_release
+	android_release=`echo "$1" | sed -e '/android[0-9]\{2,\}/!{q255}; \
+		s/^\(android[0-9]\{2,\}\)-.*/\1/'`
+	if test $? -ne 0; then
+		android_release=
+	fi
+	shift
+
+	if test $# -gt 0; then
+		kmi_generation=$1
+		[ $(expr $kmi_generation : '^[0-9]\+$') -eq 0 ] && usage
+		shift
+	fi
+fi
 if test $# -gt 0 -o ! -d "$srctree"; then
 	usage
 fi
@@ -44,8 +62,13 @@
 	fi
 
 	# Check for git and a git repo.
-	if test -z "$(git rev-parse --show-cdup 2>/dev/null)" &&
-	   head=$(git rev-parse --verify HEAD 2>/dev/null); then
+	if head=$(git rev-parse --verify HEAD 2>/dev/null); then
+
+		if [ -n "$android_release" ] && [ -n "$kmi_generation" ]; then
+			printf '%s' "-$android_release-$kmi_generation"
+		elif [ -n "$android_release" ]; then
+			printf '%s' "-$android_release"
+		fi
 
 		# If we are at a tagged commit (like "v2.6.30-rc6"), we ignore
 		# it, because this version is defined in the top level Makefile.
@@ -142,4 +165,9 @@
 	res="$res${scm:++}"
 fi
 
+# finally, add the abXXX number if BUILD_NUMBER is set
+if test -n "${BUILD_NUMBER}"; then
+	res="$res-ab${BUILD_NUMBER}"
+fi
+
 echo "$res"
diff --git a/scripts/sign-file.c b/scripts/sign-file.c
index 598ef54..cadbc26 100644
--- a/scripts/sign-file.c
+++ b/scripts/sign-file.c
@@ -99,6 +99,7 @@ static void display_openssl_errors(int l)
 	}
 }
 
+#ifndef OPENSSL_NO_ENGINE
 static void drain_openssl_errors(void)
 {
 	const char *file;
@@ -108,6 +109,7 @@ static void drain_openssl_errors(void)
 		return;
 	while (ERR_get_error_line(&file, &line)) {}
 }
+#endif
 
 #define ERR(cond, fmt, ...)				\
 	do {						\
@@ -142,7 +144,9 @@ static int pem_pw_cb(char *buf, int len, int w, void *v)
 static EVP_PKEY *read_private_key(const char *private_key_name)
 {
 	EVP_PKEY *private_key;
+	BIO *b;
 
+#ifndef OPENSSL_NO_ENGINE
 	if (!strncmp(private_key_name, "pkcs11:", 7)) {
 		ENGINE *e;
 
@@ -160,17 +164,16 @@ static EVP_PKEY *read_private_key(const char *private_key_name)
 		private_key = ENGINE_load_private_key(e, private_key_name,
 						      NULL, NULL);
 		ERR(!private_key, "%s", private_key_name);
-	} else {
-		BIO *b;
-
-		b = BIO_new_file(private_key_name, "rb");
-		ERR(!b, "%s", private_key_name);
-		private_key = PEM_read_bio_PrivateKey(b, NULL, pem_pw_cb,
-						      NULL);
-		ERR(!private_key, "%s", private_key_name);
-		BIO_free(b);
+		return private_key;
 	}
+#endif
 
+	b = BIO_new_file(private_key_name, "rb");
+	ERR(!b, "%s", private_key_name);
+	private_key = PEM_read_bio_PrivateKey(b, NULL, pem_pw_cb,
+					      NULL);
+	ERR(!private_key, "%s", private_key_name);
+	BIO_free(b);
 	return private_key;
 }
 
diff --git a/security/selinux/avc.c b/security/selinux/avc.c
index 9a43af0..e897b1c 100644
--- a/security/selinux/avc.c
+++ b/security/selinux/avc.c
@@ -44,6 +44,9 @@
 #define avc_cache_stats_incr(field)	do {} while (0)
 #endif
 
+#undef CREATE_TRACE_POINTS
+#include <trace/hooks/avc.h>
+
 struct avc_entry {
 	u32			ssid;
 	u32			tsid;
@@ -441,6 +444,7 @@ static void avc_node_free(struct rcu_head *rhead)
 
 static void avc_node_delete(struct selinux_avc *avc, struct avc_node *node)
 {
+	trace_android_rvh_selinux_avc_node_delete(node);
 	hlist_del_rcu(&node->list);
 	call_rcu(&node->rhead, avc_node_free);
 	atomic_dec(&avc->avc_cache.active_nodes);
@@ -457,6 +461,7 @@ static void avc_node_kill(struct selinux_avc *avc, struct avc_node *node)
 static void avc_node_replace(struct selinux_avc *avc,
 			     struct avc_node *new, struct avc_node *old)
 {
+	trace_android_rvh_selinux_avc_node_replace(old, new);
 	hlist_replace_rcu(&old->list, &new->list);
 	call_rcu(&old->rhead, avc_node_free);
 	atomic_dec(&avc->avc_cache.active_nodes);
@@ -566,8 +571,10 @@ static struct avc_node *avc_lookup(struct selinux_avc *avc,
 	avc_cache_stats_incr(lookups);
 	node = avc_search_node(avc, ssid, tsid, tclass);
 
-	if (node)
+	if (node) {
+		trace_android_rvh_selinux_avc_lookup(node, ssid, tsid, tclass);
 		return node;
+	}
 
 	avc_cache_stats_incr(misses);
 	return NULL;
@@ -652,6 +659,7 @@ static struct avc_node *avc_insert(struct selinux_avc *avc,
 		}
 	}
 	hlist_add_head_rcu(&node->list, head);
+	trace_android_rvh_selinux_avc_insert(node);
 found:
 	spin_unlock_irqrestore(lock, flag);
 	return node;
diff --git a/security/selinux/include/classmap.h b/security/selinux/include/classmap.h
index a3c3807..d743c30 100644
--- a/security/selinux/include/classmap.h
+++ b/security/selinux/include/classmap.h
@@ -117,7 +117,8 @@ const struct security_class_mapping secclass_map[] = {
 	  { COMMON_IPC_PERMS, NULL } },
 	{ "netlink_route_socket",
 	  { COMMON_SOCK_PERMS,
-	    "nlmsg_read", "nlmsg_write", NULL } },
+	    "nlmsg_read", "nlmsg_write", "nlmsg_readpriv", "nlmsg_getneigh",
+	    NULL } },
 	{ "netlink_tcpdiag_socket",
 	  { COMMON_SOCK_PERMS,
 	    "nlmsg_read", "nlmsg_write", NULL } },
diff --git a/security/selinux/include/security.h b/security/selinux/include/security.h
index 393aff4..ad59c4c0 100644
--- a/security/selinux/include/security.h
+++ b/security/selinux/include/security.h
@@ -99,6 +99,8 @@ struct selinux_state {
 	bool checkreqprot;
 	bool initialized;
 	bool policycap[__POLICYDB_CAP_MAX];
+	bool android_netlink_route;
+	bool android_netlink_getneigh;
 
 	struct page *status_page;
 	struct mutex status_lock;
@@ -230,6 +232,20 @@ static inline bool selinux_policycap_ioctl_skip_cloexec(void)
 	return READ_ONCE(state->policycap[POLICYDB_CAP_IOCTL_SKIP_CLOEXEC]);
 }
 
+static inline bool selinux_android_nlroute_getlink(void)
+{
+	struct selinux_state *state = &selinux_state;
+
+	return state->android_netlink_route;
+}
+
+static inline bool selinux_android_nlroute_getneigh(void)
+{
+	struct selinux_state *state = &selinux_state;
+
+	return state->android_netlink_getneigh;
+}
+
 struct selinux_policy_convert_data;
 
 struct selinux_load_state {
@@ -463,5 +479,6 @@ extern void avtab_cache_init(void);
 extern void ebitmap_cache_init(void);
 extern void hashtab_cache_init(void);
 extern int security_sidtab_hash_stats(struct selinux_state *state, char *page);
+extern void selinux_nlmsg_init(void);
 
 #endif /* _SELINUX_SECURITY_H_ */
diff --git a/security/selinux/nlmsgtab.c b/security/selinux/nlmsgtab.c
index 2ee7b4ed..32200ec 100644
--- a/security/selinux/nlmsgtab.c
+++ b/security/selinux/nlmsgtab.c
@@ -25,7 +25,7 @@ struct nlmsg_perm {
 	u32	perm;
 };
 
-static const struct nlmsg_perm nlmsg_route_perms[] = {
+static struct nlmsg_perm nlmsg_route_perms[] = {
 	{ RTM_NEWLINK,		NETLINK_ROUTE_SOCKET__NLMSG_WRITE },
 	{ RTM_DELLINK,		NETLINK_ROUTE_SOCKET__NLMSG_WRITE },
 	{ RTM_GETLINK,		NETLINK_ROUTE_SOCKET__NLMSG_READ  },
@@ -216,3 +216,43 @@ int selinux_nlmsg_lookup(u16 sclass, u16 nlmsg_type, u32 *perm)
 
 	return err;
 }
+
+static void nlmsg_set_perm_for_type(u32 perm, u16 type)
+{
+	int i;
+
+	for (i = 0; i < ARRAY_SIZE(nlmsg_route_perms); i++) {
+		if (nlmsg_route_perms[i].nlmsg_type == type) {
+			nlmsg_route_perms[i].perm = perm;
+			break;
+		}
+	}
+}
+
+/**
+ * Use nlmsg_readpriv as the permission for RTM_GETLINK messages if the
+ * netlink_route_getlink policy capability is set. Otherwise use nlmsg_read.
+ * Similarly, use nlmsg_getneigh for RTM_GETNEIGH and RTM_GETNEIGHTBL if the
+ * netlink_route_getneigh policy capability is set. Otherwise use nlmsg_read.
+ */
+void selinux_nlmsg_init(void)
+{
+	if (selinux_android_nlroute_getlink())
+		nlmsg_set_perm_for_type(NETLINK_ROUTE_SOCKET__NLMSG_READPRIV,
+					RTM_GETLINK);
+	else
+		nlmsg_set_perm_for_type(NETLINK_ROUTE_SOCKET__NLMSG_READ,
+					RTM_GETLINK);
+
+	if (selinux_android_nlroute_getneigh()) {
+		nlmsg_set_perm_for_type(NETLINK_ROUTE_SOCKET__NLMSG_GETNEIGH,
+					RTM_GETNEIGH);
+		nlmsg_set_perm_for_type(NETLINK_ROUTE_SOCKET__NLMSG_GETNEIGH,
+					RTM_GETNEIGHTBL);
+	} else {
+		nlmsg_set_perm_for_type(NETLINK_ROUTE_SOCKET__NLMSG_READ,
+					RTM_GETNEIGH);
+		nlmsg_set_perm_for_type(NETLINK_ROUTE_SOCKET__NLMSG_READ,
+					RTM_GETNEIGHTBL);
+	}
+}
diff --git a/security/selinux/selinuxfs.c b/security/selinux/selinuxfs.c
index a00d191..c630ecd 100644
--- a/security/selinux/selinuxfs.c
+++ b/security/selinux/selinuxfs.c
@@ -262,7 +262,7 @@ static int sel_mmap_handle_status(struct file *filp,
 	if (vma->vm_flags & VM_WRITE)
 		return -EPERM;
 	/* disallow mprotect() turns it into writable */
-	vma->vm_flags &= ~VM_MAYWRITE;
+	vm_flags_clear(vma, VM_MAYWRITE);
 
 	return remap_pfn_range(vma, vma->vm_start,
 			       page_to_pfn(status),
@@ -506,13 +506,13 @@ static int sel_mmap_policy(struct file *filp, struct vm_area_struct *vma)
 {
 	if (vma->vm_flags & VM_SHARED) {
 		/* do not allow mprotect to make mapping writable */
-		vma->vm_flags &= ~VM_MAYWRITE;
+		vm_flags_clear(vma, VM_MAYWRITE);
 
 		if (vma->vm_flags & VM_WRITE)
 			return -EACCES;
 	}
 
-	vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP;
+	vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP);
 	vma->vm_ops = &sel_mmap_policy_ops;
 
 	return 0;
diff --git a/security/selinux/ss/policydb.c b/security/selinux/ss/policydb.c
index adcfb63..a36825a 100644
--- a/security/selinux/ss/policydb.c
+++ b/security/selinux/ss/policydb.c
@@ -2485,6 +2485,14 @@ int policydb_read(struct policydb *p, void *fp)
 	p->reject_unknown = !!(le32_to_cpu(buf[1]) & REJECT_UNKNOWN);
 	p->allow_unknown = !!(le32_to_cpu(buf[1]) & ALLOW_UNKNOWN);
 
+	if ((le32_to_cpu(buf[1]) & POLICYDB_CONFIG_ANDROID_NETLINK_ROUTE)) {
+		p->android_netlink_route = 1;
+	}
+
+	if ((le32_to_cpu(buf[1]) & POLICYDB_CONFIG_ANDROID_NETLINK_GETNEIGH)) {
+		p->android_netlink_getneigh = 1;
+	}
+
 	if (p->policyvers >= POLICYDB_VERSION_POLCAP) {
 		rc = ebitmap_read(&p->policycaps, fp);
 		if (rc)
diff --git a/security/selinux/ss/policydb.h b/security/selinux/ss/policydb.h
index ffc4e7b..1d75811 100644
--- a/security/selinux/ss/policydb.h
+++ b/security/selinux/ss/policydb.h
@@ -238,6 +238,8 @@ struct genfs {
 /* The policy database */
 struct policydb {
 	int mls_enabled;
+	int android_netlink_route;
+	int android_netlink_getneigh;
 
 	/* symbol tables */
 	struct symtab symtab[SYM_NUM];
@@ -334,6 +336,8 @@ extern struct role_trans_datum *policydb_roletr_search(
 	struct policydb *p, struct role_trans_key *key);
 
 #define POLICYDB_CONFIG_MLS    1
+#define POLICYDB_CONFIG_ANDROID_NETLINK_ROUTE    (1 << 31)
+#define POLICYDB_CONFIG_ANDROID_NETLINK_GETNEIGH (1 << 30)
 
 /* the config flags related to unknown classes/perms are bits 2 and 3 */
 #define REJECT_UNKNOWN	0x00000002
diff --git a/security/selinux/ss/services.c b/security/selinux/ss/services.c
index 64a6a37..d52ec72 100644
--- a/security/selinux/ss/services.c
+++ b/security/selinux/ss/services.c
@@ -68,6 +68,8 @@
 #include "policycap_names.h"
 #include "ima.h"
 
+#include <trace/hooks/selinux.h>
+
 struct convert_context_args {
 	struct selinux_state *state;
 	struct policydb *oldp;
@@ -2166,6 +2168,10 @@ static void security_load_policycaps(struct selinux_state *state,
 			pr_info("SELinux:  unknown policy capability %u\n",
 				i);
 	}
+
+	state->android_netlink_route = p->android_netlink_route;
+	state->android_netlink_getneigh = p->android_netlink_getneigh;
+	selinux_nlmsg_init();
 }
 
 static int security_preserve_bools(struct selinux_policy *oldpolicy,
@@ -2259,6 +2265,7 @@ void selinux_policy_commit(struct selinux_state *state,
 		 */
 		selinux_mark_initialized(state);
 		selinux_complete_init();
+		trace_android_rvh_selinux_is_initialized(state);
 	}
 
 	/* Free the old policy */
diff --git a/sound/core/oss/pcm_oss.c b/sound/core/oss/pcm_oss.c
index ac2efeb6..728c211 100644
--- a/sound/core/oss/pcm_oss.c
+++ b/sound/core/oss/pcm_oss.c
@@ -2910,7 +2910,7 @@ static int snd_pcm_oss_mmap(struct file *file, struct vm_area_struct *area)
 	}
 	/* set VM_READ access as well to fix memset() routines that do
 	   reads before writes (to improve performance) */
-	area->vm_flags |= VM_READ;
+	vm_flags_set(area, VM_READ);
 	if (substream == NULL)
 		return -ENXIO;
 	runtime = substream->runtime;
diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c
index 9238abbf..67f0b67 100644
--- a/sound/core/pcm_native.c
+++ b/sound/core/pcm_native.c
@@ -3669,8 +3669,9 @@ static int snd_pcm_mmap_status(struct snd_pcm_substream *substream, struct file
 		return -EINVAL;
 	area->vm_ops = &snd_pcm_vm_ops_status;
 	area->vm_private_data = substream;
-	area->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP;
-	area->vm_flags &= ~(VM_WRITE | VM_MAYWRITE);
+	vm_flags_mod(area, VM_DONTEXPAND | VM_DONTDUMP,
+		     VM_WRITE | VM_MAYWRITE);
+
 	return 0;
 }
 
@@ -3706,7 +3707,7 @@ static int snd_pcm_mmap_control(struct snd_pcm_substream *substream, struct file
 		return -EINVAL;
 	area->vm_ops = &snd_pcm_vm_ops_control;
 	area->vm_private_data = substream;
-	area->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP;
+	vm_flags_set(area, VM_DONTEXPAND | VM_DONTDUMP);
 	return 0;
 }
 
@@ -3822,7 +3823,7 @@ static const struct vm_operations_struct snd_pcm_vm_ops_data_fault = {
 int snd_pcm_lib_default_mmap(struct snd_pcm_substream *substream,
 			     struct vm_area_struct *area)
 {
-	area->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP;
+	vm_flags_set(area, VM_DONTEXPAND | VM_DONTDUMP);
 	if (!substream->ops->page &&
 	    !snd_dma_buffer_mmap(snd_pcm_get_dma_buf(substream), area))
 		return 0;
diff --git a/sound/soc/pxa/mmp-sspa.c b/sound/soc/pxa/mmp-sspa.c
index fb5a439..b3c1744 100644
--- a/sound/soc/pxa/mmp-sspa.c
+++ b/sound/soc/pxa/mmp-sspa.c
@@ -404,7 +404,7 @@ static int mmp_pcm_mmap(struct snd_soc_component *component,
 			struct snd_pcm_substream *substream,
 			struct vm_area_struct *vma)
 {
-	vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP;
+	vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP);
 	vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
 	return remap_pfn_range(vma, vma->vm_start,
 		substream->dma_buffer.addr >> PAGE_SHIFT,
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index a409fbe..49e0fa7 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -3225,6 +3225,39 @@ int snd_soc_get_dai_id(struct device_node *ep)
 }
 EXPORT_SYMBOL_GPL(snd_soc_get_dai_id);
 
+/**
+ * snd_soc_info_multi_ext - external single mixer info callback
+ * @kcontrol: mixer control
+ * @uinfo: control element information
+ *
+ * Callback to provide information about a single external mixer control.
+ * that accepts multiple input.
+ *
+ * Returns 0 for success.
+ */
+int snd_soc_info_multi_ext(struct snd_kcontrol *kcontrol,
+	struct snd_ctl_elem_info *uinfo)
+{
+	struct soc_multi_mixer_control *mc =
+		(struct soc_multi_mixer_control *)kcontrol->private_value;
+	int platform_max;
+
+	if (!mc->platform_max)
+		mc->platform_max = mc->max;
+	platform_max = mc->platform_max;
+
+	if (platform_max == 1 && !strnstr(kcontrol->id.name, " Volume", 30))
+		uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN;
+	else
+		uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
+
+	uinfo->count = mc->count;
+	uinfo->value.integer.min = 0;
+	uinfo->value.integer.max = platform_max;
+	return 0;
+}
+EXPORT_SYMBOL_GPL(snd_soc_info_multi_ext);
+
 int snd_soc_get_dai_name(const struct of_phandle_args *args,
 				const char **dai_name)
 {
diff --git a/sound/usb/card.c b/sound/usb/card.c
index 26268ff..96d8e17 100644
--- a/sound/usb/card.c
+++ b/sound/usb/card.c
@@ -55,6 +55,8 @@
 #include "stream.h"
 #include "media.h"
 
+#include <trace/hooks/audio_usboffload.h>
+
 MODULE_AUTHOR("Takashi Iwai <tiwai@suse.de>");
 MODULE_DESCRIPTION("USB Audio");
 MODULE_LICENSE("GPL");
@@ -117,6 +119,56 @@ MODULE_PARM_DESC(skip_validation, "Skip unit descriptor validation (default: no)
 static DEFINE_MUTEX(register_mutex);
 static struct snd_usb_audio *usb_chip[SNDRV_CARDS];
 static struct usb_driver usb_audio_driver;
+static struct snd_usb_audio_vendor_ops *usb_vendor_ops;
+
+int snd_vendor_set_ops(struct snd_usb_audio_vendor_ops *ops)
+{
+	if ((!ops->set_interface) ||
+	    (!ops->set_pcm_intf) ||
+	    (!ops->set_pcm_connection))
+		return -EINVAL;
+
+	usb_vendor_ops = ops;
+	return 0;
+}
+EXPORT_SYMBOL_GPL(snd_vendor_set_ops);
+
+struct snd_usb_audio_vendor_ops *snd_vendor_get_ops(void)
+{
+	return usb_vendor_ops;
+}
+
+int snd_vendor_set_interface(struct usb_device *udev,
+			     struct usb_host_interface *intf,
+			     int iface, int alt)
+{
+	struct snd_usb_audio_vendor_ops *ops = snd_vendor_get_ops();
+
+	if (ops)
+		return ops->set_interface(udev, intf, iface, alt);
+	return 0;
+}
+
+int snd_vendor_set_pcm_intf(struct usb_interface *intf, int iface, int alt,
+			    int direction, struct snd_usb_substream *subs)
+{
+	struct snd_usb_audio_vendor_ops *ops = snd_vendor_get_ops();
+
+	if (ops)
+		return ops->set_pcm_intf(intf, iface, alt, direction, subs);
+	return 0;
+}
+
+int snd_vendor_set_pcm_connection(struct usb_device *udev,
+				  enum snd_vendor_pcm_open_close onoff,
+				  int direction)
+{
+	struct snd_usb_audio_vendor_ops *ops = snd_vendor_get_ops();
+
+	if (ops)
+		return ops->set_pcm_connection(udev, onoff, direction);
+	return 0;
+}
 
 /*
  * disconnect streams
@@ -859,6 +911,8 @@ static int usb_audio_probe(struct usb_interface *intf,
 	if (chip->quirk_flags & QUIRK_FLAG_DISABLE_AUTOSUSPEND)
 		usb_disable_autosuspend(interface_to_usbdev(intf));
 
+	trace_android_vh_audio_usb_offload_connect(intf, chip);
+
 	/*
 	 * For devices with more than one control interface, we assume the
 	 * first contains the audio controls. We might need a more specific
@@ -945,6 +999,8 @@ static void usb_audio_disconnect(struct usb_interface *intf)
 
 	card = chip->card;
 
+	trace_android_rvh_audio_usb_offload_disconnect(intf);
+
 	mutex_lock(&register_mutex);
 	if (atomic_inc_return(&chip->shutdown) == 1) {
 		struct snd_usb_stream *as;
@@ -1046,6 +1102,7 @@ int snd_usb_autoresume(struct snd_usb_audio *chip)
 	}
 	return 0;
 }
+EXPORT_SYMBOL_GPL(snd_usb_autoresume);
 
 void snd_usb_autosuspend(struct snd_usb_audio *chip)
 {
@@ -1059,6 +1116,7 @@ void snd_usb_autosuspend(struct snd_usb_audio *chip)
 	for (i = 0; i < chip->num_interfaces; i++)
 		usb_autopm_put_interface(chip->intf[i]);
 }
+EXPORT_SYMBOL_GPL(snd_usb_autosuspend);
 
 static int usb_audio_suspend(struct usb_interface *intf, pm_message_t message)
 {
diff --git a/sound/usb/card.h b/sound/usb/card.h
index 6ec95b2..5421f9e 100644
--- a/sound/usb/card.h
+++ b/sound/usb/card.h
@@ -2,6 +2,8 @@
 #ifndef __USBAUDIO_CARD_H
 #define __USBAUDIO_CARD_H
 
+#include <linux/android_kabi.h>
+
 #define MAX_NR_RATES	1024
 #define MAX_PACKS	6		/* per URB */
 #define MAX_PACKS_HS	(MAX_PACKS * 8)	/* in high speed mode */
@@ -145,6 +147,11 @@ struct snd_usb_endpoint {
 
 	spinlock_t lock;
 	struct list_head list;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 struct media_ctl;
@@ -196,6 +203,8 @@ struct snd_usb_substream {
 	bool trigger_tstamp_pending_update; /* trigger timestamp being updated from initial estimate */
 	bool lowlatency_playback;	/* low-latency playback mode */
 	struct media_ctl *media_ctl;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct snd_usb_stream {
@@ -207,4 +216,19 @@ struct snd_usb_stream {
 	struct list_head list;
 };
 
+int snd_vendor_set_ops(struct snd_usb_audio_vendor_ops *vendor_ops);
+struct snd_usb_audio_vendor_ops *snd_vendor_get_ops(void);
+int snd_vendor_set_interface(struct usb_device *udev,
+			     struct usb_host_interface *alts,
+			     int iface, int alt);
+int snd_vendor_set_rate(int iface, int rate, int alt);
+int snd_vendor_set_pcm_intf(struct usb_interface *intf, int iface, int alt,
+			    int direction, struct snd_usb_substream *subs);
+int snd_vendor_set_pcm_connection(struct usb_device *udev,
+				  enum snd_vendor_pcm_open_close onoff,
+				  int direction);
+int snd_vendor_set_pcm_binterval(const struct audioformat *fp,
+				 const struct audioformat *found,
+				 int *cur_attr, int *attr);
+
 #endif /* __USBAUDIO_CARD_H */
diff --git a/sound/usb/endpoint.c b/sound/usb/endpoint.c
index 647fa05..75b4b63 100644
--- a/sound/usb/endpoint.c
+++ b/sound/usb/endpoint.c
@@ -866,6 +866,7 @@ snd_usb_endpoint_open(struct snd_usb_audio *chip,
 	mutex_unlock(&chip->mutex);
 	return ep;
 }
+EXPORT_SYMBOL_GPL(snd_usb_endpoint_open);
 
 /*
  * snd_usb_endpoint_set_sync: Link data and sync endpoints
@@ -958,6 +959,7 @@ void snd_usb_endpoint_close(struct snd_usb_audio *chip,
 	}
 	mutex_unlock(&chip->mutex);
 }
+EXPORT_SYMBOL_GPL(snd_usb_endpoint_close);
 
 /* Prepare for suspening EP, called from the main suspend handler */
 void snd_usb_endpoint_suspend(struct snd_usb_endpoint *ep)
@@ -1408,6 +1410,7 @@ int snd_usb_endpoint_set_params(struct snd_usb_audio *chip,
 	mutex_unlock(&chip->mutex);
 	return err;
 }
+EXPORT_SYMBOL_GPL(snd_usb_endpoint_set_params);
 
 static int init_sample_rate(struct snd_usb_audio *chip,
 			    struct snd_usb_endpoint *ep)
@@ -1516,6 +1519,7 @@ int snd_usb_endpoint_prepare(struct snd_usb_audio *chip,
 	mutex_unlock(&chip->mutex);
 	return err;
 }
+EXPORT_SYMBOL_GPL(snd_usb_endpoint_prepare);
 
 /* get the current rate set to the given clock by any endpoint */
 int snd_usb_endpoint_get_clock_rate(struct snd_usb_audio *chip, int clock)
diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c
index f2c798c..26c2cfc 100644
--- a/sound/usb/pcm.c
+++ b/sound/usb/pcm.c
@@ -641,6 +641,7 @@ static int snd_usb_pcm_prepare(struct snd_pcm_substream *substream)
 	struct snd_usb_audio *chip = subs->stream->chip;
 	int retry = 0;
 	int ret;
+	struct usb_interface *iface;
 
 	ret = snd_usb_lock_shutdown(chip);
 	if (ret < 0)
@@ -657,6 +658,7 @@ static int snd_usb_pcm_prepare(struct snd_pcm_substream *substream)
  again:
 	if (subs->sync_endpoint) {
 		ret = snd_usb_endpoint_prepare(chip, subs->sync_endpoint);
+
 		if (ret < 0)
 			goto unlock;
 	}
@@ -668,6 +670,14 @@ static int snd_usb_pcm_prepare(struct snd_pcm_substream *substream)
 		snd_usb_set_format_quirk(subs, subs->cur_audiofmt);
 	ret = 0;
 
+	iface = usb_ifnum_to_if(chip->dev, subs->data_endpoint->iface);
+
+	ret = snd_vendor_set_pcm_intf(iface, subs->data_endpoint->iface,
+				      subs->data_endpoint->altsetting,
+				      subs->direction, subs);
+	if (!ret)
+		goto unlock;
+
 	/* reset the pointer */
 	subs->buffer_bytes = frames_to_bytes(runtime, runtime->buffer_size);
 	subs->inflight_bytes = 0;
@@ -1166,6 +1176,11 @@ static int snd_usb_pcm_open(struct snd_pcm_substream *substream)
 	struct snd_usb_substream *subs = &as->substream[direction];
 	int ret;
 
+	ret = snd_vendor_set_pcm_connection(subs->dev, SOUND_PCM_OPEN,
+					    direction);
+	if (ret)
+		return ret;
+
 	runtime->hw = snd_usb_hardware;
 	/* need an explicit sync to catch applptr update in low-latency mode */
 	if (direction == SNDRV_PCM_STREAM_PLAYBACK &&
@@ -1199,6 +1214,11 @@ static int snd_usb_pcm_close(struct snd_pcm_substream *substream)
 	struct snd_usb_substream *subs = &as->substream[direction];
 	int ret;
 
+	ret = snd_vendor_set_pcm_connection(subs->dev, SOUND_PCM_CLOSE,
+					    direction);
+	if (ret)
+		return ret;
+
 	snd_media_stop_pipeline(subs);
 
 	if (!snd_usb_lock_shutdown(subs->stream->chip)) {
diff --git a/sound/usb/power.c b/sound/usb/power.c
index 606a2cb..2488a5f 100644
--- a/sound/usb/power.c
+++ b/sound/usb/power.c
@@ -104,3 +104,4 @@ int snd_usb_power_domain_set(struct snd_usb_audio *chip,
 
 	return 0;
 }
+EXPORT_SYMBOL_GPL(snd_usb_power_domain_set);
diff --git a/sound/usb/stream.c b/sound/usb/stream.c
index f10f4e6..dbe8681 100644
--- a/sound/usb/stream.c
+++ b/sound/usb/stream.c
@@ -1228,6 +1228,8 @@ static int __snd_usb_parse_audio_interface(struct snd_usb_audio *chip,
 		snd_usb_init_pitch(chip, fp);
 		snd_usb_init_sample_rate(chip, fp, fp->rate_max);
 		usb_set_interface(chip->dev, iface_no, altno);
+		if (protocol > UAC_VERSION_1)
+			snd_vendor_set_interface(chip->dev, alts, iface_no, 0);
 	}
 	return 0;
 }
diff --git a/sound/usb/usbaudio.h b/sound/usb/usbaudio.h
index f5a8dca..b2cafc0b 100644
--- a/sound/usb/usbaudio.h
+++ b/sound/usb/usbaudio.h
@@ -12,12 +12,15 @@
 #define USB_ID_VENDOR(id) ((id) >> 16)
 #define USB_ID_PRODUCT(id) ((u16)(id))
 
+#include <linux/android_kabi.h>
+
 /*
  *
  */
 
 struct media_device;
 struct media_intf_devnode;
+struct snd_usb_substream;
 
 #define MAX_CARD_INTERFACES	16
 
@@ -61,6 +64,11 @@ struct snd_usb_audio {
 	struct usb_host_interface *ctrl_intf;	/* the audio control interface */
 	struct media_device *media_dev;
 	struct media_intf_devnode *ctl_intf_media_devnode;
+
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
 };
 
 #define USB_AUDIO_IFACE_UNUSED	((void *)-1L)
@@ -203,4 +211,37 @@ extern bool snd_usb_skip_validation;
 #define QUIRK_FLAG_FORCE_IFACE_RESET	(1U << 20)
 #define QUIRK_FLAG_FIXED_RATE		(1U << 21)
 
+struct audioformat;
+
+enum snd_vendor_pcm_open_close {
+	SOUND_PCM_CLOSE = 0,
+	SOUND_PCM_OPEN,
+};
+
+/**
+ * struct snd_usb_audio_vendor_ops - function callbacks for USB audio accelerators
+ * @set_interface: called when an interface is initialized
+ * @set_pcm_intf: called when the pcm interface is set
+ * @set_pcm_connection: called when pcm is opened/closed
+ *
+ * Set of callbacks for some accelerated USB audio streaming hardware.
+ *
+ * TODO: make this USB host-controller specific, right now this only works for
+ * one USB controller in the system at a time, which is only realistic for
+ * self-contained systems like phones.
+ */
+struct snd_usb_audio_vendor_ops {
+	int (*set_interface)(struct usb_device *udev,
+			     struct usb_host_interface *alts,
+			     int iface, int alt);
+	int (*set_pcm_intf)(struct usb_interface *intf, int iface, int alt,
+			    int direction, struct snd_usb_substream *subs);
+	int (*set_pcm_connection)(struct usb_device *udev,
+				  enum snd_vendor_pcm_open_close onoff,
+				  int direction);
+	ANDROID_KABI_RESERVE(1);
+	ANDROID_KABI_RESERVE(2);
+	ANDROID_KABI_RESERVE(3);
+	ANDROID_KABI_RESERVE(4);
+};
 #endif /* __USBAUDIO_H */
diff --git a/sound/usb/usx2y/us122l.c b/sound/usb/usx2y/us122l.c
index e558931..709ccad 100644
--- a/sound/usb/usx2y/us122l.c
+++ b/sound/usb/usx2y/us122l.c
@@ -224,9 +224,9 @@ static int usb_stream_hwdep_mmap(struct snd_hwdep *hw,
 	}
 
 	area->vm_ops = &usb_stream_hwdep_vm_ops;
-	area->vm_flags |= VM_DONTDUMP;
+	vm_flags_set(area, VM_DONTDUMP);
 	if (!read)
-		area->vm_flags |= VM_DONTEXPAND;
+		vm_flags_set(area, VM_DONTEXPAND);
 	area->vm_private_data = us122l;
 	atomic_inc(&us122l->mmap_count);
 out:
diff --git a/sound/usb/usx2y/usX2Yhwdep.c b/sound/usb/usx2y/usX2Yhwdep.c
index c29da03..4937ede 100644
--- a/sound/usb/usx2y/usX2Yhwdep.c
+++ b/sound/usb/usx2y/usX2Yhwdep.c
@@ -61,7 +61,7 @@ static int snd_us428ctls_mmap(struct snd_hwdep *hw, struct file *filp, struct vm
 	}
 
 	area->vm_ops = &us428ctls_vm_ops;
-	area->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP;
+	vm_flags_set(area, VM_DONTEXPAND | VM_DONTDUMP);
 	area->vm_private_data = hw->private_data;
 	return 0;
 }
diff --git a/sound/usb/usx2y/usx2yhwdeppcm.c b/sound/usb/usx2y/usx2yhwdeppcm.c
index 767a227..36f2e31 100644
--- a/sound/usb/usx2y/usx2yhwdeppcm.c
+++ b/sound/usb/usx2y/usx2yhwdeppcm.c
@@ -706,7 +706,7 @@ static int snd_usx2y_hwdep_pcm_mmap(struct snd_hwdep *hw, struct file *filp, str
 		return -ENODEV;
 
 	area->vm_ops = &snd_usx2y_hwdep_pcm_vm_ops;
-	area->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP;
+	vm_flags_set(area, VM_DONTEXPAND | VM_DONTDUMP);
 	area->vm_private_data = hw->private_data;
 	return 0;
 }
diff --git a/tools/crypto/gen_fips140_testvecs.py b/tools/crypto/gen_fips140_testvecs.py
new file mode 100755
index 0000000..825c487
--- /dev/null
+++ b/tools/crypto/gen_fips140_testvecs.py
@@ -0,0 +1,125 @@
+#!/usr/bin/env python3
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# Copyright 2021 Google LLC
+#
+# Generate most of the test vectors for the FIPS 140 cryptographic self-tests.
+#
+# Usage:
+#    tools/crypto/gen_fips140_testvecs.py > crypto/fips140-generated-testvecs.h
+#
+# Prerequisites:
+#    Debian:      apt-get install python3-pycryptodome python3-cryptography
+#    Arch Linux:  pacman -S python-pycryptodomex python-cryptography
+
+import hashlib
+import hmac
+import os
+
+import Cryptodome.Cipher.AES
+import Cryptodome.Util.Counter
+
+import cryptography.hazmat.primitives.ciphers
+import cryptography.hazmat.primitives.ciphers.algorithms
+import cryptography.hazmat.primitives.ciphers.modes
+
+scriptname = os.path.basename(__file__)
+
+message     = bytes('This is a 32-byte test message.\0', 'ascii')
+aes_key     = bytes('128-bit AES key\0', 'ascii')
+aes_xts_key = bytes('This is an AES-128-XTS key.\0\0\0\0\0', 'ascii')
+aes_iv      = bytes('ABCDEFGHIJKLMNOP', 'ascii')
+assoc       = bytes('associated data string', 'ascii')
+hmac_key    = bytes('128-bit HMAC key', 'ascii')
+
+def warn_generated():
+    print(f'''/*
+ * This header was automatically generated by {scriptname}.
+ * Don't edit it directly.
+ */''')
+
+def is_string_value(value):
+    return (value.isascii() and
+            all(c == '\x00' or c.isprintable() for c in str(value, 'ascii')))
+
+def format_value(value, is_string):
+    if is_string:
+        return value
+    hexstr = ''
+    for byte in value:
+        hexstr += f'\\x{byte:02x}'
+    return hexstr
+
+def print_value(name, value):
+    is_string = is_string_value(value)
+    hdr = f'static const u8 fips_{name}[{len(value)}] __initconst ='
+    print(hdr, end='')
+    if is_string:
+        value = str(value, 'ascii').rstrip('\x00')
+        chars_per_byte = 1
+    else:
+        chars_per_byte = 4
+    bytes_per_line = 64 // chars_per_byte
+
+    if len(hdr) + (chars_per_byte * len(value)) + 4 <= 80:
+        print(f' "{format_value(value, is_string)}"', end='')
+    else:
+        for chunk in [value[i:i+bytes_per_line]
+                      for i in range(0, len(value), bytes_per_line)]:
+            print(f'\n\t"{format_value(chunk, is_string)}"', end='')
+    print(';')
+    print('')
+
+def generate_aes_testvecs():
+    print_value('aes_key', aes_key)
+    print_value('aes_iv', aes_iv)
+
+    cbc = Cryptodome.Cipher.AES.new(aes_key, Cryptodome.Cipher.AES.MODE_CBC,
+                                    iv=aes_iv)
+    print_value('aes_cbc_ciphertext', cbc.encrypt(message))
+
+    ecb = Cryptodome.Cipher.AES.new(aes_key, Cryptodome.Cipher.AES.MODE_ECB)
+    print_value('aes_ecb_ciphertext', ecb.encrypt(message))
+
+    ctr = Cryptodome.Cipher.AES.new(aes_key, Cryptodome.Cipher.AES.MODE_CTR,
+                                    nonce=bytes(), initial_value=aes_iv)
+    print_value('aes_ctr_ciphertext', ctr.encrypt(message))
+
+    print_value('aes_gcm_assoc', assoc)
+    gcm = Cryptodome.Cipher.AES.new(aes_key, Cryptodome.Cipher.AES.MODE_GCM,
+                                    nonce=aes_iv[:12], mac_len=16)
+    gcm.update(assoc)
+    raw_ciphertext, tag = gcm.encrypt_and_digest(message)
+    print_value('aes_gcm_ciphertext', raw_ciphertext + tag)
+
+    # Unfortunately, pycryptodome doesn't support XTS, so for it we need to use
+    # a different Python package (the "cryptography" package).
+    print_value('aes_xts_key', aes_xts_key)
+    xts = cryptography.hazmat.primitives.ciphers.Cipher(
+        cryptography.hazmat.primitives.ciphers.algorithms.AES(aes_xts_key),
+        cryptography.hazmat.primitives.ciphers.modes.XTS(aes_iv)).encryptor()
+    ciphertext = xts.update(message) + xts.finalize()
+    print_value('aes_xts_ciphertext', ciphertext)
+
+    cmac = Cryptodome.Hash.CMAC.new(aes_key, ciphermod=Cryptodome.Cipher.AES)
+    cmac.update(message)
+    print_value('aes_cmac_digest', cmac.digest())
+
+def generate_sha_testvecs():
+    print_value('hmac_key', hmac_key)
+    for alg in ['sha1', 'sha256', 'hmac_sha256', 'sha512']:
+        if alg.startswith('hmac_'):
+            h = hmac.new(hmac_key, message, alg.removeprefix('hmac_'))
+        else:
+            h = hashlib.new(alg, message)
+        print_value(f'{alg}_digest', h.digest())
+
+print('/* SPDX-License-Identifier: GPL-2.0-only */')
+print('/* Copyright 2021 Google LLC */')
+print('')
+warn_generated()
+print('')
+print_value('message', message)
+generate_aes_testvecs()
+generate_sha_testvecs()
+warn_generated()
diff --git a/tools/testing/radix-tree/maple.c b/tools/testing/radix-tree/maple.c
index 18e319e..1049f93 100644
--- a/tools/testing/radix-tree/maple.c
+++ b/tools/testing/radix-tree/maple.c
@@ -35234,6 +35234,7 @@ static void mas_dfs_preorder(struct ma_state *mas)
 
 	struct maple_enode *prev;
 	unsigned char end, slot = 0;
+	unsigned long *pivots;
 
 	if (mas->node == MAS_START) {
 		mas_start(mas);
@@ -35266,6 +35267,9 @@ static void mas_dfs_preorder(struct ma_state *mas)
 		mas_ascend(mas);
 		goto walk_up;
 	}
+	pivots = ma_pivots(mte_to_node(prev), mte_node_type(prev));
+	mas->max = mas_safe_pivot(mas, pivots, slot, mte_node_type(prev));
+	mas->min = mas_safe_min(mas, pivots, slot);
 
 	return;
 done:
diff --git a/tools/testing/selftests/filesystems/fuse/.gitignore b/tools/testing/selftests/filesystems/fuse/.gitignore
new file mode 100644
index 0000000..3ee9a27
--- /dev/null
+++ b/tools/testing/selftests/filesystems/fuse/.gitignore
@@ -0,0 +1,2 @@
+fuse_test
+*.raw
diff --git a/tools/testing/selftests/filesystems/fuse/Makefile b/tools/testing/selftests/filesystems/fuse/Makefile
new file mode 100644
index 0000000..261d760
--- /dev/null
+++ b/tools/testing/selftests/filesystems/fuse/Makefile
@@ -0,0 +1,34 @@
+# SPDX-License-Identifier: GPL-2.0
+CFLAGS += -D_FILE_OFFSET_BITS=64 -Wall -Werror -I../.. -I../../../../.. -I../../../../include
+LDLIBS := -lpthread -lelf
+TEST_GEN_PROGS := fuse_test fuse_daemon
+TEST_GEN_FILES := \
+	test_bpf.bpf \
+	fd_bpf.bpf \
+	fd.sh \
+
+EXTRA_CLEAN := *.bpf
+BPF_FLAGS = -Wall -Werror -O2 -g -emit-llvm \
+	    -I ../../../../../include \
+	    -idirafter /usr/lib/gcc/x86_64-linux-gnu/10/include \
+	    -idirafter /usr/local/include \
+	    -idirafter /usr/include/x86_64-linux-gnu \
+	    -idirafter /usr/include \
+
+include ../../lib.mk
+
+# Put after include ../../lib.mk since that changes $(TEST_GEN_PROGS)
+# Otherwise you get multiple targets, this becomes the default, and it's a mess
+EXTRA_SOURCES := bpf_loader.c
+$(TEST_GEN_PROGS) : $(EXTRA_SOURCES)
+
+$(OUTPUT)/%.ir: %.c
+	clang $(BPF_FLAGS) -c $< -o $@
+
+$(OUTPUT)/%.bpf: $(OUTPUT)/%.ir
+	llc -march=bpf -filetype=obj -o $@ $<
+
+$(OUTPUT)/fd.sh: fd.txt
+	cp $< $@
+	chmod 755 $@
+
diff --git a/tools/testing/selftests/filesystems/fuse/bpf_loader.c b/tools/testing/selftests/filesystems/fuse/bpf_loader.c
new file mode 100644
index 0000000..5bf26ea
--- /dev/null
+++ b/tools/testing/selftests/filesystems/fuse/bpf_loader.c
@@ -0,0 +1,791 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright 2021 Google LLC
+ */
+
+#include "test_fuse.h"
+
+#include <dirent.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <gelf.h>
+#include <libelf.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <sys/mount.h>
+#include <sys/stat.h>
+#include <sys/statfs.h>
+#include <sys/xattr.h>
+
+#include <linux/unistd.h>
+
+#include <include/uapi/linux/fuse.h>
+#include <include/uapi/linux/bpf.h>
+
+struct _test_options test_options;
+
+struct s s(const char *s1)
+{
+	struct s s = {0};
+
+	if (!s1)
+		return s;
+
+	s.s = malloc(strlen(s1) + 1);
+	if (!s.s)
+		return s;
+
+	strcpy(s.s, s1);
+	return s;
+}
+
+struct s sn(const char *s1, const char *s2)
+{
+	struct s s = {0};
+
+	if (!s1)
+		return s;
+
+	s.s = malloc(s2 - s1 + 1);
+	if (!s.s)
+		return s;
+
+	strncpy(s.s, s1, s2 - s1);
+	s.s[s2 - s1] = 0;
+	return s;
+}
+
+int s_cmp(struct s s1, struct s s2)
+{
+	int result = -1;
+
+	if (!s1.s || !s2.s)
+		goto out;
+	result = strcmp(s1.s, s2.s);
+out:
+	free(s1.s);
+	free(s2.s);
+	return result;
+}
+
+struct s s_cat(struct s s1, struct s s2)
+{
+	struct s s = {0};
+
+	if (!s1.s || !s2.s)
+		goto out;
+
+	s.s = malloc(strlen(s1.s) + strlen(s2.s) + 1);
+	if (!s.s)
+		goto out;
+
+	strcpy(s.s, s1.s);
+	strcat(s.s, s2.s);
+out:
+	free(s1.s);
+	free(s2.s);
+	return s;
+}
+
+struct s s_splitleft(struct s s1, char c)
+{
+	struct s s = {0};
+	char *split;
+
+	if (!s1.s)
+		return s;
+
+	split = strchr(s1.s, c);
+	if (split)
+		s = sn(s1.s, split);
+
+	free(s1.s);
+	return s;
+}
+
+struct s s_splitright(struct s s1, char c)
+{
+	struct s s2 = {0};
+	char *split;
+
+	if (!s1.s)
+		return s2;
+
+	split = strchr(s1.s, c);
+	if (split)
+		s2 = s(split + 1);
+
+	free(s1.s);
+	return s2;
+}
+
+struct s s_word(struct s s1, char c, size_t n)
+{
+	while (n--)
+		s1 = s_splitright(s1, c);
+	return s_splitleft(s1, c);
+}
+
+struct s s_path(struct s s1, struct s s2)
+{
+	return s_cat(s_cat(s1, s("/")), s2);
+}
+
+struct s s_pathn(size_t n, struct s s1, ...)
+{
+	va_list argp;
+
+	va_start(argp, s1);
+	while (--n)
+		s1 = s_path(s1, va_arg(argp, struct s));
+	va_end(argp);
+	return s1;
+}
+
+int s_link(struct s src_pathname, struct s dst_pathname)
+{
+	int res;
+
+	if (src_pathname.s && dst_pathname.s) {
+		res = link(src_pathname.s, dst_pathname.s);
+	} else {
+		res = -1;
+		errno = ENOMEM;
+	}
+
+	free(src_pathname.s);
+	free(dst_pathname.s);
+	return res;
+}
+
+int s_symlink(struct s src_pathname, struct s dst_pathname)
+{
+	int res;
+
+	if (src_pathname.s && dst_pathname.s) {
+		res = symlink(src_pathname.s, dst_pathname.s);
+	} else {
+		res = -1;
+		errno = ENOMEM;
+	}
+
+	free(src_pathname.s);
+	free(dst_pathname.s);
+	return res;
+}
+
+
+int s_mkdir(struct s pathname, mode_t mode)
+{
+	int res;
+
+	if (!pathname.s) {
+		errno = ENOMEM;
+		return -1;
+	}
+
+	res = mkdir(pathname.s, mode);
+	free(pathname.s);
+	return res;
+}
+
+int s_rmdir(struct s pathname)
+{
+	int res;
+
+	if (!pathname.s) {
+		errno = ENOMEM;
+		return -1;
+	}
+
+	res = rmdir(pathname.s);
+	free(pathname.s);
+	return res;
+}
+
+int s_unlink(struct s pathname)
+{
+	int res;
+
+	if (!pathname.s) {
+		errno = ENOMEM;
+		return -1;
+	}
+
+	res = unlink(pathname.s);
+	free(pathname.s);
+	return res;
+}
+
+int s_open(struct s pathname, int flags, ...)
+{
+	va_list ap;
+	int res;
+
+	va_start(ap, flags);
+	if (!pathname.s) {
+		errno = ENOMEM;
+		return -1;
+	}
+
+	if (flags & (O_CREAT | O_TMPFILE))
+		res = open(pathname.s, flags, va_arg(ap, mode_t));
+	else
+		res = open(pathname.s, flags);
+
+	free(pathname.s);
+	va_end(ap);
+	return res;
+}
+
+int s_openat(int dirfd, struct s pathname, int flags, ...)
+{
+	va_list ap;
+	int res;
+
+	va_start(ap, flags);
+	if (!pathname.s) {
+		errno = ENOMEM;
+		return -1;
+	}
+
+	if (flags & (O_CREAT | O_TMPFILE))
+		res = openat(dirfd, pathname.s, flags, va_arg(ap, mode_t));
+	else
+		res = openat(dirfd, pathname.s, flags);
+
+	free(pathname.s);
+	va_end(ap);
+	return res;
+}
+
+int s_creat(struct s pathname, mode_t mode)
+{
+	int res;
+
+	if (!pathname.s) {
+		errno = ENOMEM;
+		return -1;
+	}
+
+	res = open(pathname.s, O_WRONLY | O_CREAT | O_TRUNC | O_CLOEXEC, mode);
+	free(pathname.s);
+	return res;
+}
+
+int s_mkfifo(struct s pathname, mode_t mode)
+{
+	int res;
+
+	if (!pathname.s) {
+		errno = ENOMEM;
+		return -1;
+	}
+
+	res = mknod(pathname.s, S_IFIFO | mode, 0);
+	free(pathname.s);
+	return res;
+}
+
+int s_stat(struct s pathname, struct stat *st)
+{
+	int res;
+
+	if (!pathname.s) {
+		errno = ENOMEM;
+		return -1;
+	}
+
+	res = stat(pathname.s, st);
+	free(pathname.s);
+	return res;
+}
+
+int s_statfs(struct s pathname, struct statfs *st)
+{
+	int res;
+
+	if (!pathname.s) {
+		errno = ENOMEM;
+		return -1;
+	}
+
+	res = statfs(pathname.s, st);
+	free(pathname.s);
+	return res;
+}
+
+DIR *s_opendir(struct s pathname)
+{
+	DIR *res;
+
+	res = opendir(pathname.s);
+	free(pathname.s);
+	return res;
+}
+
+int s_getxattr(struct s pathname, const char name[], void *value, size_t size,
+	       ssize_t *ret_size)
+{
+	if (!pathname.s) {
+		errno = ENOMEM;
+		return -1;
+	}
+
+	*ret_size = getxattr(pathname.s, name, value, size);
+	free(pathname.s);
+	return *ret_size >= 0 ? 0 : -1;
+}
+
+int s_listxattr(struct s pathname, void *list, size_t size, ssize_t *ret_size)
+{
+	if (!pathname.s) {
+		errno = ENOMEM;
+		return -1;
+	}
+
+	*ret_size = listxattr(pathname.s, list, size);
+	free(pathname.s);
+	return *ret_size >= 0 ? 0 : -1;
+}
+
+int s_setxattr(struct s pathname, const char name[], const void *value, size_t size, int flags)
+{
+	int res;
+
+	if (!pathname.s) {
+		errno = ENOMEM;
+		return -1;
+	}
+
+	res = setxattr(pathname.s, name, value, size, flags);
+	free(pathname.s);
+	return res;
+}
+
+int s_removexattr(struct s pathname, const char name[])
+{
+	int res;
+
+	if (!pathname.s) {
+		errno = ENOMEM;
+		return -1;
+	}
+
+	res = removexattr(pathname.s, name);
+	free(pathname.s);
+	return res;
+}
+
+int s_rename(struct s oldpathname, struct s newpathname)
+{
+	int res;
+
+	if (!oldpathname.s || !newpathname.s) {
+		errno = ENOMEM;
+		return -1;
+	}
+
+	res = rename(oldpathname.s, newpathname.s);
+	free(oldpathname.s);
+	free(newpathname.s);
+	return res;
+}
+
+int s_fuse_attr(struct s pathname, struct fuse_attr *fuse_attr_out)
+{
+
+	struct stat st;
+	int result = TEST_FAILURE;
+
+	TESTSYSCALL(s_stat(pathname, &st));
+
+	fuse_attr_out->ino = st.st_ino;
+	fuse_attr_out->mode = st.st_mode;
+	fuse_attr_out->nlink = st.st_nlink;
+	fuse_attr_out->uid = st.st_uid;
+	fuse_attr_out->gid = st.st_gid;
+	fuse_attr_out->rdev = st.st_rdev;
+	fuse_attr_out->size = st.st_size;
+	fuse_attr_out->blksize = st.st_blksize;
+	fuse_attr_out->blocks = st.st_blocks;
+	fuse_attr_out->atime = st.st_atime;
+	fuse_attr_out->mtime = st.st_mtime;
+	fuse_attr_out->ctime = st.st_ctime;
+	fuse_attr_out->atimensec = UINT32_MAX;
+	fuse_attr_out->mtimensec = UINT32_MAX;
+	fuse_attr_out->ctimensec = UINT32_MAX;
+
+	result = TEST_SUCCESS;
+out:
+	return result;
+}
+
+struct s tracing_folder(void)
+{
+	struct s trace = {0};
+	FILE *mounts = NULL;
+	char *line = NULL;
+	size_t size = 0;
+
+	TEST(mounts = fopen("/proc/mounts", "re"), mounts);
+	while (getline(&line, &size, mounts) != -1) {
+		if (!s_cmp(s_word(sn(line, line + size), ' ', 2),
+			   s("tracefs"))) {
+			trace = s_word(sn(line, line + size), ' ', 1);
+			break;
+		}
+
+		if (!s_cmp(s_word(sn(line, line + size), ' ', 2), s("debugfs")))
+			trace = s_path(s_word(sn(line, line + size), ' ', 1),
+				       s("tracing"));
+	}
+
+out:
+	free(line);
+	fclose(mounts);
+	return trace;
+}
+
+int tracing_on(void)
+{
+	int result = TEST_FAILURE;
+	int tracing_on = -1;
+
+	TEST(tracing_on = s_open(s_path(tracing_folder(), s("tracing_on")),
+				 O_WRONLY | O_CLOEXEC),
+	     tracing_on != -1);
+	TESTEQUAL(write(tracing_on, "1", 1), 1);
+	result = TEST_SUCCESS;
+out:
+	close(tracing_on);
+	return result;
+}
+
+char *concat_file_name(const char *dir, const char *file)
+{
+	char full_name[FILENAME_MAX] = "";
+
+	if (snprintf(full_name, ARRAY_SIZE(full_name), "%s/%s", dir, file) < 0)
+		return NULL;
+	return strdup(full_name);
+}
+
+char *setup_mount_dir(const char *name)
+{
+	struct stat st;
+	char *current_dir = getcwd(NULL, 0);
+	char *mount_dir = concat_file_name(current_dir, name);
+
+	free(current_dir);
+	if (stat(mount_dir, &st) == 0) {
+		if (S_ISDIR(st.st_mode))
+			return mount_dir;
+
+		ksft_print_msg("%s is a file, not a dir.\n", mount_dir);
+		return NULL;
+	}
+
+	if (mkdir(mount_dir, 0777)) {
+		ksft_print_msg("Can't create mount dir.");
+		return NULL;
+	}
+
+	return mount_dir;
+}
+
+int delete_dir_tree(const char *dir_path, bool remove_root)
+{
+	DIR *dir = NULL;
+	struct dirent *dp;
+	int result = 0;
+
+	dir = opendir(dir_path);
+	if (!dir) {
+		result = -errno;
+		goto out;
+	}
+
+	while ((dp = readdir(dir))) {
+		char *full_path;
+
+		if (!strcmp(dp->d_name, ".") || !strcmp(dp->d_name, ".."))
+			continue;
+
+		full_path = concat_file_name(dir_path, dp->d_name);
+		if (dp->d_type == DT_DIR)
+			result = delete_dir_tree(full_path, true);
+		else
+			result = unlink(full_path);
+		free(full_path);
+		if (result)
+			goto out;
+	}
+
+out:
+	if (dir)
+		closedir(dir);
+	if (!result && remove_root)
+		rmdir(dir_path);
+	return result;
+}
+
+static int mount_fuse_maybe_init(const char *mount_dir, int bpf_fd, int dir_fd,
+			     int *fuse_dev_ptr, bool init)
+{
+	int result = TEST_FAILURE;
+	int fuse_dev = -1;
+	char options[FILENAME_MAX];
+	uint8_t bytes_in[FUSE_MIN_READ_BUFFER];
+	uint8_t bytes_out[FUSE_MIN_READ_BUFFER];
+
+	DECL_FUSE_IN(init);
+
+	TEST(fuse_dev = open("/dev/fuse", O_RDWR | O_CLOEXEC), fuse_dev != -1);
+	snprintf(options, FILENAME_MAX, "fd=%d,user_id=0,group_id=0,rootmode=0040000",
+		 fuse_dev);
+	if (bpf_fd != -1)
+		snprintf(options + strlen(options),
+			 sizeof(options) - strlen(options),
+			 ",root_bpf=%d", bpf_fd);
+	if (dir_fd != -1)
+		snprintf(options + strlen(options),
+			 sizeof(options) - strlen(options),
+			 ",root_dir=%d", dir_fd);
+	TESTSYSCALL(mount("ABC", mount_dir, "fuse", 0, options));
+
+	if (init) {
+		TESTFUSEIN(FUSE_INIT, init_in);
+		TESTEQUAL(init_in->major, FUSE_KERNEL_VERSION);
+		TESTEQUAL(init_in->minor, FUSE_KERNEL_MINOR_VERSION);
+		TESTFUSEOUT1(fuse_init_out, ((struct fuse_init_out) {
+			.major = FUSE_KERNEL_VERSION,
+			.minor = FUSE_KERNEL_MINOR_VERSION,
+			.max_readahead = 4096,
+			.flags = 0,
+			.max_background = 0,
+			.congestion_threshold = 0,
+			.max_write = 4096,
+			.time_gran = 1000,
+			.max_pages = 12,
+			.map_alignment = 4096,
+		}));
+	}
+
+	*fuse_dev_ptr = fuse_dev;
+	fuse_dev = -1;
+	result = TEST_SUCCESS;
+out:
+	close(fuse_dev);
+	return result;
+}
+
+int mount_fuse(const char *mount_dir, int bpf_fd, int dir_fd, int *fuse_dev_ptr)
+{
+	return mount_fuse_maybe_init(mount_dir, bpf_fd, dir_fd, fuse_dev_ptr,
+				     true);
+}
+
+int mount_fuse_no_init(const char *mount_dir, int bpf_fd, int dir_fd,
+		       int *fuse_dev_ptr)
+{
+	return mount_fuse_maybe_init(mount_dir, bpf_fd, dir_fd, fuse_dev_ptr,
+				     false);
+}
+
+struct fuse_bpf_map {
+	unsigned int map_type;
+	size_t key_size;
+	size_t value_size;
+	unsigned int max_entries;
+};
+
+static int install_maps(Elf_Data *maps, int maps_index, Elf *elf,
+			Elf_Data *symbols, int symbol_index,
+			struct map_relocation **mr, size_t *map_count)
+{
+	int result = TEST_FAILURE;
+	int i;
+	GElf_Sym symbol;
+
+	TESTNE((void *)symbols, NULL);
+
+	for (i = 0; i < symbols->d_size / sizeof(symbol); ++i) {
+		TESTNE((void *)gelf_getsym(symbols, i, &symbol), 0);
+		if (symbol.st_shndx == maps_index) {
+			struct fuse_bpf_map *map;
+			union bpf_attr attr;
+			int map_fd;
+
+			map = (struct fuse_bpf_map *)
+				((char *)maps->d_buf + symbol.st_value);
+
+			attr = (union bpf_attr) {
+				.map_type = map->map_type,
+				.key_size = map->key_size,
+				.value_size = map->value_size,
+				.max_entries = map->max_entries,
+			};
+
+			TEST(*mr = realloc(*mr, ++*map_count *
+					   sizeof(struct fuse_bpf_map)),
+			     *mr);
+			TEST(map_fd = syscall(__NR_bpf, BPF_MAP_CREATE,
+					      &attr, sizeof(attr)),
+			     map_fd != -1);
+			(*mr)[*map_count - 1] = (struct map_relocation) {
+				.name = strdup(elf_strptr(elf, symbol_index,
+							  symbol.st_name)),
+				.fd = map_fd,
+				.value = symbol.st_value,
+			};
+		}
+	}
+
+	result = TEST_SUCCESS;
+out:
+	return result;
+}
+
+static inline int relocate_maps(GElf_Shdr *rel_header, Elf_Data *rel_data,
+			 Elf_Data *prog_data, Elf_Data *symbol_data,
+			 struct map_relocation *map_relocations,
+			 size_t map_count)
+{
+	int result = TEST_FAILURE;
+	int i;
+	struct bpf_insn *insns = (struct bpf_insn *) prog_data->d_buf;
+
+	for (i = 0; i < rel_header->sh_size / rel_header->sh_entsize; ++i) {
+		GElf_Sym sym;
+		GElf_Rel rel;
+		unsigned int insn_idx;
+		int map_idx;
+
+		gelf_getrel(rel_data, i, &rel);
+		insn_idx = rel.r_offset / sizeof(struct bpf_insn);
+		insns[insn_idx].src_reg = BPF_PSEUDO_MAP_FD;
+
+		gelf_getsym(symbol_data, GELF_R_SYM(rel.r_info), &sym);
+		for (map_idx = 0; map_idx < map_count; map_idx++) {
+			if (map_relocations[map_idx].value == sym.st_value) {
+				insns[insn_idx].imm =
+					map_relocations[map_idx].fd;
+				break;
+			}
+		}
+		TESTNE(map_idx, map_count);
+	}
+
+	result = TEST_SUCCESS;
+out:
+	return result;
+}
+
+int install_elf_bpf(const char *file, const char *section, int *fd,
+		    struct map_relocation **map_relocations, size_t *map_count)
+{
+	int result = TEST_FAILURE;
+	char path[PATH_MAX] = {};
+	char *last_slash;
+	int filter_fd = -1;
+	union bpf_attr bpf_attr;
+	static char log[1 << 20];
+	Elf *elf = NULL;
+	GElf_Ehdr ehdr;
+	Elf_Data *data_prog = NULL, *data_maps = NULL, *data_symbols = NULL;
+	int maps_index, symbol_index, prog_index;
+	int i;
+	int bpf_prog_type_fuse_fd = -1;
+	char buffer[10] = {0};
+	int bpf_prog_type_fuse;
+
+	TESTNE(readlink("/proc/self/exe", path, PATH_MAX), -1);
+	TEST(last_slash = strrchr(path, '/'), last_slash);
+	strcpy(last_slash + 1, file);
+	TEST(filter_fd = open(path, O_RDONLY | O_CLOEXEC), filter_fd != -1);
+	TESTNE(elf_version(EV_CURRENT), EV_NONE);
+	TEST(elf = elf_begin(filter_fd, ELF_C_READ, NULL), elf);
+	TESTEQUAL((void *) gelf_getehdr(elf, &ehdr), &ehdr);
+	for (i = 1; i < ehdr.e_shnum; i++) {
+		char *shname;
+		GElf_Shdr shdr;
+		Elf_Scn *scn;
+
+		TEST(scn = elf_getscn(elf, i), scn);
+		TESTEQUAL((void *)gelf_getshdr(scn, &shdr), &shdr);
+		TEST(shname = elf_strptr(elf, ehdr.e_shstrndx, shdr.sh_name),
+		     shname);
+
+		if (!strcmp(shname, "maps")) {
+			TEST(data_maps = elf_getdata(scn, 0), data_maps);
+			maps_index = i;
+		} else if (shdr.sh_type == SHT_SYMTAB) {
+			TEST(data_symbols = elf_getdata(scn, 0), data_symbols);
+			symbol_index = shdr.sh_link;
+		} else if (!strcmp(shname, section)) {
+			TEST(data_prog = elf_getdata(scn, 0), data_prog);
+			prog_index = i;
+		}
+	}
+	TESTNE((void *) data_prog, NULL);
+
+	if (data_maps)
+		TESTEQUAL(install_maps(data_maps, maps_index, elf,
+				       data_symbols, symbol_index,
+				       map_relocations, map_count), 0);
+
+	/* Now relocate maps */
+	for (i = 1; i < ehdr.e_shnum; i++) {
+		GElf_Shdr rel_header;
+		Elf_Scn *scn;
+		Elf_Data *rel_data;
+
+		TEST(scn = elf_getscn(elf, i), scn);
+		TESTEQUAL((void *)gelf_getshdr(scn, &rel_header),
+			&rel_header);
+		if (rel_header.sh_type != SHT_REL)
+			continue;
+		TEST(rel_data = elf_getdata(scn, 0), rel_data);
+
+		if (rel_header.sh_info != prog_index)
+			continue;
+		TESTEQUAL(relocate_maps(&rel_header, rel_data,
+					data_prog, data_symbols,
+					*map_relocations, *map_count),
+			  0);
+	}
+
+	TEST(bpf_prog_type_fuse_fd = open("/sys/fs/fuse/bpf_prog_type_fuse",
+					  O_RDONLY | O_CLOEXEC),
+	     bpf_prog_type_fuse_fd != -1);
+	TESTGE(read(bpf_prog_type_fuse_fd, buffer, sizeof(buffer)), 1);
+	TEST(bpf_prog_type_fuse = strtol(buffer, NULL, 10),
+	     bpf_prog_type_fuse != 0);
+
+	bpf_attr = (union bpf_attr) {
+		.prog_type = bpf_prog_type_fuse,
+		.insn_cnt = data_prog->d_size / 8,
+		.insns = ptr_to_u64(data_prog->d_buf),
+		.license = ptr_to_u64("GPL"),
+		.log_buf = test_options.verbose ? ptr_to_u64(log) : 0,
+		.log_size = test_options.verbose ? sizeof(log) : 0,
+		.log_level = test_options.verbose ? 2 : 0,
+	};
+	*fd = syscall(__NR_bpf, BPF_PROG_LOAD, &bpf_attr, sizeof(bpf_attr));
+	if (test_options.verbose)
+		ksft_print_msg("%s\n", log);
+	if (*fd == -1 && errno == ENOSPC)
+		ksft_print_msg("bpf log size too small!\n");
+	TESTNE(*fd, -1);
+
+	result = TEST_SUCCESS;
+out:
+	close(filter_fd);
+	close(bpf_prog_type_fuse_fd);
+	return result;
+}
+
+
diff --git a/tools/testing/selftests/filesystems/fuse/fd.txt b/tools/testing/selftests/filesystems/fuse/fd.txt
new file mode 100644
index 0000000..15ce771
--- /dev/null
+++ b/tools/testing/selftests/filesystems/fuse/fd.txt
@@ -0,0 +1,21 @@
+fuse_daemon $*
+cd fd-dst
+ls
+cd show
+ls
+fsstress -s 123 -d . -p 4 -n 100 -l5
+echo test > wibble
+ls
+cat wibble
+fallocate -l 1000 wobble
+mkdir testdir
+mkdir tmpdir
+rmdir tmpdir
+touch tmp
+mv tmp tmp2
+rm tmp2
+
+# FUSE_LINK
+echo "ln_src contents" > ln_src
+ln ln_src ln_link
+cat ln_link
diff --git a/tools/testing/selftests/filesystems/fuse/fd_bpf.c b/tools/testing/selftests/filesystems/fuse/fd_bpf.c
new file mode 100644
index 0000000..3cd82d6
--- /dev/null
+++ b/tools/testing/selftests/filesystems/fuse/fd_bpf.c
@@ -0,0 +1,252 @@
+// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
+// Copyright (c) 2021 Google LLC
+
+#include "test_fuse_bpf.h"
+
+SEC("maps") struct fuse_bpf_map test_map = {
+	BPF_MAP_TYPE_ARRAY,
+	sizeof(uint32_t),
+	sizeof(uint32_t),
+	1000,
+};
+
+SEC("maps") struct fuse_bpf_map test_map2 = {
+	BPF_MAP_TYPE_HASH,
+	sizeof(uint32_t),
+	sizeof(uint64_t),
+	76,
+};
+
+SEC("test_daemon") int trace_daemon(struct fuse_bpf_args *fa)
+{
+	uint64_t uid_gid = bpf_get_current_uid_gid();
+	uint32_t uid = uid_gid & 0xffffffff;
+	uint64_t pid_tgid = bpf_get_current_pid_tgid();
+	uint32_t pid = pid_tgid & 0xffffffff;
+	uint32_t key = 23;
+	uint32_t *pvalue;
+
+	pvalue = bpf_map_lookup_elem(&test_map, &key);
+	if (pvalue) {
+		uint32_t value = *pvalue;
+
+		bpf_printk("pid %u uid %u value %u", pid, uid, value);
+		value++;
+		bpf_map_update_elem(&test_map, &key,  &value, BPF_ANY);
+	}
+
+	switch (fa->opcode) {
+	case FUSE_ACCESS | FUSE_PREFILTER: {
+		bpf_printk("Access: %d", fa->nodeid);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_GETATTR | FUSE_PREFILTER: {
+		const struct fuse_getattr_in *fgi = fa->in_args[0].value;
+
+		bpf_printk("Get Attr %d", fgi->fh);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_SETATTR | FUSE_PREFILTER: {
+		const struct fuse_setattr_in *fsi = fa->in_args[0].value;
+
+		bpf_printk("Set Attr %d", fsi->fh);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_OPENDIR | FUSE_PREFILTER: {
+		bpf_printk("Open Dir: %d", fa->nodeid);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_READDIR | FUSE_PREFILTER: {
+		const struct fuse_read_in *fri = fa->in_args[0].value;
+
+		bpf_printk("Read Dir: fh: %lu", fri->fh, fri->offset);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_LOOKUP | FUSE_PREFILTER: {
+		const char *name = fa->in_args[0].value;
+
+		bpf_printk("Lookup: %lx %s", fa->nodeid, name);
+		if (fa->nodeid == 1)
+			return FUSE_BPF_USER_FILTER | FUSE_BPF_BACKING;
+		else
+			return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_MKNOD | FUSE_PREFILTER: {
+		const struct fuse_mknod_in *fmi = fa->in_args[0].value;
+		const char *name = fa->in_args[1].value;
+
+		bpf_printk("mknod %s %x %x", name,  fmi->rdev | fmi->mode, fmi->umask);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_MKDIR | FUSE_PREFILTER: {
+		const struct fuse_mkdir_in *fmi = fa->in_args[0].value;
+		const char *name = fa->in_args[1].value;
+
+		bpf_printk("mkdir: %s %x %x", name, fmi->mode, fmi->umask);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_RMDIR | FUSE_PREFILTER: {
+		const char *name = fa->in_args[0].value;
+
+		bpf_printk("rmdir: %s", name);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_RENAME | FUSE_PREFILTER: {
+		const char *oldname = fa->in_args[1].value;
+		const char *newname = fa->in_args[2].value;
+
+		bpf_printk("rename from %s", oldname);
+		bpf_printk("rename to %s", newname);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_RENAME2 | FUSE_PREFILTER: {
+		const struct fuse_rename2_in *fri = fa->in_args[0].value;
+		uint32_t flags = fri->flags;
+		const char *oldname = fa->in_args[1].value;
+		const char *newname = fa->in_args[2].value;
+
+		bpf_printk("rename(%x) from %s", flags, oldname);
+		bpf_printk("rename to %s", newname);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_UNLINK | FUSE_PREFILTER: {
+		const char *name = fa->in_args[0].value;
+
+		bpf_printk("unlink: %s", name);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_LINK | FUSE_PREFILTER: {
+		const struct fuse_link_in *fli = fa->in_args[0].value;
+		const char *dst_name = fa->in_args[1].value;
+
+		bpf_printk("Link: %d %s", fli->oldnodeid, dst_name);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_SYMLINK | FUSE_PREFILTER: {
+		const char *link_name = fa->in_args[0].value;
+		const char *link_dest = fa->in_args[1].value;
+
+		bpf_printk("symlink from %s", link_name);
+		bpf_printk("symlink to %s", link_dest);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_READLINK | FUSE_PREFILTER: {
+		const char *link_name = fa->in_args[0].value;
+
+		bpf_printk("readlink from %s", link_name);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_RELEASE | FUSE_PREFILTER: {
+		const struct fuse_release_in *fri = fa->in_args[0].value;
+
+		bpf_printk("Release: %d", fri->fh);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_RELEASEDIR | FUSE_PREFILTER: {
+		const struct fuse_release_in *fri = fa->in_args[0].value;
+
+		bpf_printk("Release Dir: %d", fri->fh);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_CREATE | FUSE_PREFILTER: {
+		bpf_printk("Create %s", fa->in_args[1].value);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_OPEN | FUSE_PREFILTER: {
+		bpf_printk("Open: %d", fa->nodeid);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_READ | FUSE_PREFILTER: {
+		const struct fuse_read_in *fri = fa->in_args[0].value;
+
+		bpf_printk("Read: fh: %lu, offset %lu, size %lu",
+			   fri->fh, fri->offset, fri->size);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_WRITE | FUSE_PREFILTER: {
+		const struct fuse_write_in *fwi = fa->in_args[0].value;
+
+		bpf_printk("Write: fh: %lu, offset %lu, size %lu",
+			   fwi->fh, fwi->offset, fwi->size);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_FLUSH | FUSE_PREFILTER: {
+		const struct fuse_flush_in *ffi = fa->in_args[0].value;
+
+		bpf_printk("Flush %d", ffi->fh);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_FALLOCATE | FUSE_PREFILTER: {
+		const struct fuse_fallocate_in *ffa = fa->in_args[0].value;
+
+		bpf_printk("Fallocate %d %lu", ffa->fh, ffa->length);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_GETXATTR | FUSE_PREFILTER: {
+		const char *name = fa->in_args[1].value;
+
+		bpf_printk("Getxattr %d %s", fa->nodeid, name);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_LISTXATTR | FUSE_PREFILTER: {
+		const char *name = fa->in_args[1].value;
+
+		bpf_printk("Listxattr %d %s", fa->nodeid, name);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_SETXATTR | FUSE_PREFILTER: {
+		const char *name = fa->in_args[1].value;
+
+		bpf_printk("Setxattr %d %s", fa->nodeid, name);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_STATFS | FUSE_PREFILTER: {
+		bpf_printk("statfs %d", fa->nodeid);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_LSEEK | FUSE_PREFILTER: {
+		const struct fuse_lseek_in *fli = fa->in_args[0].value;
+
+		bpf_printk("lseek type:%d, offset:%lld", fli->whence, fli->offset);
+		return FUSE_BPF_BACKING;
+	}
+
+	default:
+		if (fa->opcode & FUSE_PREFILTER)
+			bpf_printk("prefilter *** UNKNOWN *** opcode: %d",
+				   fa->opcode & FUSE_OPCODE_FILTER);
+		else if (fa->opcode & FUSE_POSTFILTER)
+			bpf_printk("postfilter *** UNKNOWN *** opcode: %d",
+				   fa->opcode & FUSE_OPCODE_FILTER);
+		else
+			bpf_printk("*** UNKNOWN *** opcode: %d", fa->opcode);
+		return FUSE_BPF_BACKING;
+	}
+}
diff --git a/tools/testing/selftests/filesystems/fuse/fuse_daemon.c b/tools/testing/selftests/filesystems/fuse/fuse_daemon.c
new file mode 100644
index 0000000..1b6f8c2a
--- /dev/null
+++ b/tools/testing/selftests/filesystems/fuse/fuse_daemon.c
@@ -0,0 +1,294 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright 2021 Google LLC
+ */
+
+#include "test_fuse.h"
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <sys/mount.h>
+#include <sys/stat.h>
+#include <sys/wait.h>
+
+#include <linux/unistd.h>
+
+#include <include/uapi/linux/fuse.h>
+#include <include/uapi/linux/bpf.h>
+
+bool user_messages;
+bool kernel_messages;
+
+static int display_trace(void)
+{
+	int pid = -1;
+	int tp = -1;
+	char c;
+	ssize_t bytes_read;
+	static char line[256] = {0};
+
+	if (!kernel_messages)
+		return TEST_SUCCESS;
+
+	TEST(pid = fork(), pid != -1);
+	if (pid != 0)
+		return pid;
+
+	TESTEQUAL(tracing_on(), 0);
+	TEST(tp = s_open(s_path(tracing_folder(), s("trace_pipe")),
+			 O_RDONLY | O_CLOEXEC), tp != -1);
+	for (;;) {
+		TEST(bytes_read = read(tp, &c, sizeof(c)),
+		     bytes_read == 1);
+		if (c == '\n') {
+			printf("%s\n", line);
+			line[0] = 0;
+		} else
+			sprintf(line + strlen(line), "%c", c);
+	}
+out:
+	if (pid == 0) {
+		close(tp);
+		exit(TEST_FAILURE);
+	}
+	return pid;
+}
+
+static const char *fuse_opcode_to_string(int opcode)
+{
+	switch (opcode & FUSE_OPCODE_FILTER) {
+	case FUSE_LOOKUP:
+		return "FUSE_LOOKUP";
+	case FUSE_FORGET:
+		return "FUSE_FORGET";
+	case FUSE_GETATTR:
+		return "FUSE_GETATTR";
+	case FUSE_SETATTR:
+		return "FUSE_SETATTR";
+	case FUSE_READLINK:
+		return "FUSE_READLINK";
+	case FUSE_SYMLINK:
+		return "FUSE_SYMLINK";
+	case FUSE_MKNOD:
+		return "FUSE_MKNOD";
+	case FUSE_MKDIR:
+		return "FUSE_MKDIR";
+	case FUSE_UNLINK:
+		return "FUSE_UNLINK";
+	case FUSE_RMDIR:
+		return "FUSE_RMDIR";
+	case FUSE_RENAME:
+		return "FUSE_RENAME";
+	case FUSE_LINK:
+		return "FUSE_LINK";
+	case FUSE_OPEN:
+		return "FUSE_OPEN";
+	case FUSE_READ:
+		return "FUSE_READ";
+	case FUSE_WRITE:
+		return "FUSE_WRITE";
+	case FUSE_STATFS:
+		return "FUSE_STATFS";
+	case FUSE_RELEASE:
+		return "FUSE_RELEASE";
+	case FUSE_FSYNC:
+		return "FUSE_FSYNC";
+	case FUSE_SETXATTR:
+		return "FUSE_SETXATTR";
+	case FUSE_GETXATTR:
+		return "FUSE_GETXATTR";
+	case FUSE_LISTXATTR:
+		return "FUSE_LISTXATTR";
+	case FUSE_REMOVEXATTR:
+		return "FUSE_REMOVEXATTR";
+	case FUSE_FLUSH:
+		return "FUSE_FLUSH";
+	case FUSE_INIT:
+		return "FUSE_INIT";
+	case FUSE_OPENDIR:
+		return "FUSE_OPENDIR";
+	case FUSE_READDIR:
+		return "FUSE_READDIR";
+	case FUSE_RELEASEDIR:
+		return "FUSE_RELEASEDIR";
+	case FUSE_FSYNCDIR:
+		return "FUSE_FSYNCDIR";
+	case FUSE_GETLK:
+		return "FUSE_GETLK";
+	case FUSE_SETLK:
+		return "FUSE_SETLK";
+	case FUSE_SETLKW:
+		return "FUSE_SETLKW";
+	case FUSE_ACCESS:
+		return "FUSE_ACCESS";
+	case FUSE_CREATE:
+		return "FUSE_CREATE";
+	case FUSE_INTERRUPT:
+		return "FUSE_INTERRUPT";
+	case FUSE_BMAP:
+		return "FUSE_BMAP";
+	case FUSE_DESTROY:
+		return "FUSE_DESTROY";
+	case FUSE_IOCTL:
+		return "FUSE_IOCTL";
+	case FUSE_POLL:
+		return "FUSE_POLL";
+	case FUSE_NOTIFY_REPLY:
+		return "FUSE_NOTIFY_REPLY";
+	case FUSE_BATCH_FORGET:
+		return "FUSE_BATCH_FORGET";
+	case FUSE_FALLOCATE:
+		return "FUSE_FALLOCATE";
+	case FUSE_READDIRPLUS:
+		return "FUSE_READDIRPLUS";
+	case FUSE_RENAME2:
+		return "FUSE_RENAME2";
+	case FUSE_LSEEK:
+		return "FUSE_LSEEK";
+	case FUSE_COPY_FILE_RANGE:
+		return "FUSE_COPY_FILE_RANGE";
+	case FUSE_SETUPMAPPING:
+		return "FUSE_SETUPMAPPING";
+	case FUSE_REMOVEMAPPING:
+		return "FUSE_REMOVEMAPPING";
+	//case FUSE_SYNCFS:
+	//	return "FUSE_SYNCFS";
+	case CUSE_INIT:
+		return "CUSE_INIT";
+	case CUSE_INIT_BSWAP_RESERVED:
+		return "CUSE_INIT_BSWAP_RESERVED";
+	case FUSE_INIT_BSWAP_RESERVED:
+		return "FUSE_INIT_BSWAP_RESERVED";
+	}
+	return "?";
+}
+
+static int parse_options(int argc, char *const *argv)
+{
+	signed char c;
+
+	while ((c = getopt(argc, argv, "kuv")) != -1)
+		switch (c) {
+		case 'v':
+			test_options.verbose = true;
+			break;
+
+		case 'u':
+			user_messages = true;
+			break;
+
+		case 'k':
+			kernel_messages = true;
+			break;
+
+		default:
+			return -EINVAL;
+		}
+
+	return 0;
+}
+
+int main(int argc, char *argv[])
+{
+	int result = TEST_FAILURE;
+	int trace_pid = -1;
+	char *mount_dir = NULL;
+	char *src_dir = NULL;
+	int bpf_fd = -1;
+	int src_fd = -1;
+	int fuse_dev = -1;
+	struct map_relocation *map_relocations = NULL;
+	size_t map_count = 0;
+	int i;
+
+	if (geteuid() != 0)
+		ksft_print_msg("Not a root, might fail to mount.\n");
+	TESTEQUAL(parse_options(argc, argv), 0);
+
+	TEST(trace_pid = display_trace(), trace_pid != -1);
+
+	delete_dir_tree("fd-src", true);
+	TEST(src_dir = setup_mount_dir("fd-src"), src_dir);
+	delete_dir_tree("fd-dst", true);
+	TEST(mount_dir = setup_mount_dir("fd-dst"), mount_dir);
+
+	TESTEQUAL(install_elf_bpf("fd_bpf.bpf", "test_daemon", &bpf_fd,
+				  &map_relocations, &map_count), 0);
+
+	TEST(src_fd = open("fd-src", O_DIRECTORY | O_RDONLY | O_CLOEXEC),
+	     src_fd != -1);
+	TESTSYSCALL(mkdirat(src_fd, "show", 0777));
+	TESTSYSCALL(mkdirat(src_fd, "hide", 0777));
+
+	for (i = 0; i < map_count; ++i)
+		if (!strcmp(map_relocations[i].name, "test_map")) {
+			uint32_t key = 23;
+			uint32_t value = 1234;
+			union bpf_attr attr = {
+				.map_fd = map_relocations[i].fd,
+				.key    = ptr_to_u64(&key),
+				.value  = ptr_to_u64(&value),
+				.flags  = BPF_ANY,
+			};
+			TESTSYSCALL(syscall(__NR_bpf, BPF_MAP_UPDATE_ELEM,
+					    &attr, sizeof(attr)));
+		}
+
+	TESTEQUAL(mount_fuse(mount_dir, bpf_fd, src_fd, &fuse_dev), 0);
+
+	if (fork())
+		return 0;
+
+	for (;;) {
+		uint8_t bytes_in[FUSE_MIN_READ_BUFFER];
+		uint8_t bytes_out[FUSE_MIN_READ_BUFFER] __maybe_unused;
+		struct fuse_in_header *in_header =
+			(struct fuse_in_header *)bytes_in;
+		ssize_t res = read(fuse_dev, bytes_in, sizeof(bytes_in));
+
+		if (res == -1)
+			break;
+
+		switch (in_header->opcode) {
+		case FUSE_LOOKUP | FUSE_PREFILTER: {
+			char *name = (char *)(bytes_in + sizeof(*in_header));
+
+			if (user_messages)
+				printf("Lookup %s\n", name);
+			if (!strcmp(name, "hide"))
+				TESTFUSEOUTERROR(-ENOENT);
+			else
+				TESTFUSEOUTREAD(name, strlen(name) + 1);
+			break;
+		}
+		default:
+			if (user_messages) {
+				printf("opcode is %d (%s)\n", in_header->opcode,
+				       fuse_opcode_to_string(
+					       in_header->opcode));
+			}
+			break;
+		}
+	}
+
+	result = TEST_SUCCESS;
+
+out:
+	for (i = 0; i < map_count; ++i) {
+		free(map_relocations[i].name);
+		close(map_relocations[i].fd);
+	}
+	free(map_relocations);
+	umount2(mount_dir, MNT_FORCE);
+	delete_dir_tree(mount_dir, true);
+	free(mount_dir);
+	delete_dir_tree(src_dir, true);
+	free(src_dir);
+	if (trace_pid != -1)
+		kill(trace_pid, SIGKILL);
+	return result;
+}
diff --git a/tools/testing/selftests/filesystems/fuse/fuse_test.c b/tools/testing/selftests/filesystems/fuse/fuse_test.c
new file mode 100644
index 0000000..a52a9db
--- /dev/null
+++ b/tools/testing/selftests/filesystems/fuse/fuse_test.c
@@ -0,0 +1,2142 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright 2021 Google LLC
+ */
+#define _GNU_SOURCE
+
+#include "test_fuse.h"
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <sys/inotify.h>
+#include <sys/mman.h>
+#include <sys/mount.h>
+#include <sys/syscall.h>
+#include <sys/wait.h>
+
+#include <linux/capability.h>
+#include <linux/random.h>
+
+#include <include/uapi/linux/fuse.h>
+#include <include/uapi/linux/bpf.h>
+
+static const char *ft_src = "ft-src";
+static const char *ft_dst = "ft-dst";
+
+static void fill_buffer(uint8_t *data, size_t len, int file, int block)
+{
+	int i;
+	int seed = 7919 * file + block;
+
+	for (i = 0; i < len; i++) {
+		seed = 1103515245 * seed + 12345;
+		data[i] = (uint8_t)(seed >> (i % 13));
+	}
+}
+
+static bool test_buffer(uint8_t *data, size_t len, int file, int block)
+{
+	int i;
+	int seed = 7919 * file + block;
+
+	for (i = 0; i < len; i++) {
+		seed = 1103515245 * seed + 12345;
+		if (data[i] != (uint8_t)(seed >> (i % 13)))
+			return false;
+	}
+
+	return true;
+}
+
+static int create_file(int dir, struct s name, int index, size_t blocks)
+{
+	int result = TEST_FAILURE;
+	int fd = -1;
+	int i;
+	uint8_t data[PAGE_SIZE];
+
+	TEST(fd = s_openat(dir, name, O_CREAT | O_WRONLY, 0777), fd != -1);
+	for (i = 0; i < blocks; ++i) {
+		fill_buffer(data, PAGE_SIZE, index, i);
+		TESTEQUAL(write(fd, data, sizeof(data)), PAGE_SIZE);
+	}
+	TESTSYSCALL(close(fd));
+	result = TEST_SUCCESS;
+
+out:
+	close(fd);
+	return result;
+}
+
+static int bpf_clear_trace(void)
+{
+	int result = TEST_FAILURE;
+	int tp = -1;
+
+	TEST(tp = s_open(s_path(tracing_folder(), s("trace")),
+			 O_WRONLY | O_TRUNC | O_CLOEXEC), tp != -1);
+
+	result = TEST_SUCCESS;
+out:
+	close(tp);
+	return result;
+}
+
+static int bpf_test_trace_maybe(const char *substr, bool present)
+{
+	int result = TEST_FAILURE;
+	int tp = -1;
+	char trace_buffer[4096] = {};
+	ssize_t bytes_read;
+
+	TEST(tp = s_open(s_path(tracing_folder(), s("trace_pipe")),
+			 O_RDONLY | O_CLOEXEC),
+	     tp != -1);
+	fcntl(tp, F_SETFL, O_NONBLOCK);
+
+	for (;;) {
+		bytes_read = read(tp, trace_buffer, sizeof(trace_buffer));
+		if (present)
+			TESTCOND(bytes_read > 0);
+		else if (bytes_read <= 0) {
+			result = TEST_SUCCESS;
+			break;
+		}
+
+		if (test_options.verbose)
+			ksft_print_msg("%s\n", trace_buffer);
+
+		if (strstr(trace_buffer, substr)) {
+			if (present)
+				result = TEST_SUCCESS;
+			break;
+		}
+	}
+out:
+	close(tp);
+	return result;
+}
+
+static int bpf_test_trace(const char *substr)
+{
+	return bpf_test_trace_maybe(substr, true);
+}
+
+static int bpf_test_no_trace(const char *substr)
+{
+	return bpf_test_trace_maybe(substr, false);
+}
+
+static int basic_test(const char *mount_dir)
+{
+	const char *test_name = "test";
+	const char *test_data = "data";
+
+	int result = TEST_FAILURE;
+	int fuse_dev = -1;
+	char *filename = NULL;
+	int fd = -1;
+	FUSE_DECLARE_DAEMON;
+
+	TESTEQUAL(mount_fuse(mount_dir, -1, -1, &fuse_dev), 0);
+	FUSE_START_DAEMON();
+	if (action) {
+		char data[256];
+
+		filename = concat_file_name(mount_dir, test_name);
+		TESTERR(fd = open(filename, O_RDONLY | O_CLOEXEC), fd != -1);
+		TESTEQUAL(read(fd, data, strlen(test_data)), strlen(test_data));
+		TESTCOND(!strcmp(data, test_data));
+		TESTSYSCALL(close(fd));
+		fd = -1;
+	} else {
+		DECL_FUSE_IN(open);
+		DECL_FUSE_IN(read);
+		DECL_FUSE_IN(flush);
+		DECL_FUSE_IN(release);
+
+		TESTFUSELOOKUP(test_name, 0);
+		TESTFUSEOUT1(fuse_entry_out, ((struct fuse_entry_out) {
+			.nodeid		= 2,
+			.generation	= 1,
+			.attr.ino = 100,
+			.attr.size = 4,
+			.attr.blksize = 512,
+			.attr.mode = S_IFREG | 0777,
+			}));
+
+		TESTFUSEIN(FUSE_OPEN, open_in);
+		TESTFUSEOUT1(fuse_open_out, ((struct fuse_open_out) {
+			.fh = 1,
+			.open_flags = open_in->flags,
+		}));
+
+		TESTFUSEINNULL(FUSE_CANONICAL_PATH);
+		TESTFUSEOUTREAD("ignored", 7);
+
+		TESTFUSEIN(FUSE_READ, read_in);
+		TESTFUSEOUTREAD(test_data, strlen(test_data));
+
+		TESTFUSEIN(FUSE_FLUSH, flush_in);
+		TESTFUSEOUTEMPTY();
+
+		TESTFUSEIN(FUSE_RELEASE, release_in);
+		TESTFUSEOUTEMPTY();
+		exit(TEST_SUCCESS);
+	}
+	FUSE_END_DAEMON();
+	close(fuse_dev);
+	close(fd);
+	free(filename);
+	umount(mount_dir);
+	return result;
+}
+
+static int bpf_test_real(const char *mount_dir)
+{
+	const char *test_name = "real";
+	const char *test_data = "Weebles wobble but they don't fall down";
+	int result = TEST_FAILURE;
+	int bpf_fd = -1;
+	int src_fd = -1;
+	int fuse_dev = -1;
+	char *filename = NULL;
+	int fd = -1;
+	char read_buffer[256] = {};
+	ssize_t bytes_read;
+
+	TEST(src_fd = open(ft_src, O_DIRECTORY | O_RDONLY | O_CLOEXEC),
+	     src_fd != -1);
+	TEST(fd = openat(src_fd, test_name, O_CREAT | O_RDWR | O_CLOEXEC, 0777),
+	     fd != -1);
+	TESTEQUAL(write(fd, test_data, strlen(test_data)), strlen(test_data));
+	TESTSYSCALL(close(fd));
+	fd = -1;
+
+	TESTEQUAL(install_elf_bpf("test_bpf.bpf", "test_trace",
+				  &bpf_fd, NULL, NULL), 0);
+	TESTEQUAL(mount_fuse(mount_dir, bpf_fd, src_fd, &fuse_dev), 0);
+
+	filename = concat_file_name(mount_dir, test_name);
+	TESTERR(fd = open(filename, O_RDONLY | O_CLOEXEC), fd != -1);
+	bytes_read = read(fd, read_buffer, strlen(test_data));
+	TESTEQUAL(bytes_read, strlen(test_data));
+	TESTEQUAL(strcmp(test_data, read_buffer), 0);
+	TESTEQUAL(bpf_test_trace("read"), 0);
+
+	result = TEST_SUCCESS;
+out:
+	close(fuse_dev);
+	close(fd);
+	free(filename);
+	umount(mount_dir);
+	close(src_fd);
+	close(bpf_fd);
+	return result;
+}
+
+
+static int bpf_test_partial(const char *mount_dir)
+{
+	const char *test_name = "partial";
+	int result = TEST_FAILURE;
+	int bpf_fd = -1;
+	int src_fd = -1;
+	int fuse_dev = -1;
+	char *filename = NULL;
+	int fd = -1;
+	FUSE_DECLARE_DAEMON;
+
+	TEST(src_fd = open(ft_src, O_DIRECTORY | O_RDONLY | O_CLOEXEC),
+	     src_fd != -1);
+	TESTEQUAL(create_file(src_fd, s(test_name), 1, 2), 0);
+	TESTEQUAL(install_elf_bpf("test_bpf.bpf", "test_trace",
+				  &bpf_fd, NULL, NULL), 0);
+	TESTEQUAL(mount_fuse(mount_dir, bpf_fd, src_fd, &fuse_dev), 0);
+
+	FUSE_START_DAEMON();
+	if (action) {
+		uint8_t data[PAGE_SIZE];
+
+		TEST(filename = concat_file_name(mount_dir, test_name),
+		     filename);
+		TESTERR(fd = open(filename, O_RDONLY | O_CLOEXEC), fd != -1);
+		TESTEQUAL(read(fd, data, PAGE_SIZE), PAGE_SIZE);
+		TESTEQUAL(bpf_test_trace("read"), 0);
+		TESTCOND(test_buffer(data, PAGE_SIZE, 2, 0));
+		TESTCOND(!test_buffer(data, PAGE_SIZE, 1, 0));
+		TESTEQUAL(read(fd, data, PAGE_SIZE), PAGE_SIZE);
+		TESTCOND(test_buffer(data, PAGE_SIZE, 1, 1));
+		TESTCOND(!test_buffer(data, PAGE_SIZE, 2, 1));
+		TESTSYSCALL(close(fd));
+		fd = -1;
+	} else {
+		DECL_FUSE(open);
+		DECL_FUSE(read);
+		DECL_FUSE(release);
+		uint8_t data[PAGE_SIZE];
+
+		TESTFUSEIN2(FUSE_OPEN | FUSE_POSTFILTER, open_in, open_out);
+		TESTFUSEOUT1(fuse_open_out, ((struct fuse_open_out) {
+			.fh = 1,
+			.open_flags = open_in->flags,
+		}));
+
+		TESTFUSEIN(FUSE_READ, read_in);
+		fill_buffer(data, PAGE_SIZE, 2, 0);
+		TESTFUSEOUTREAD(data, PAGE_SIZE);
+
+		TESTFUSEIN(FUSE_RELEASE, release_in);
+		TESTFUSEOUTEMPTY();
+		exit(TEST_SUCCESS);
+	}
+	FUSE_END_DAEMON();
+	close(fuse_dev);
+	close(fd);
+	free(filename);
+	umount(mount_dir);
+	close(src_fd);
+	close(bpf_fd);
+	return result;
+}
+
+static int bpf_test_attrs(const char *mount_dir)
+{
+	const char *test_name = "partial";
+	int result = TEST_FAILURE;
+	int bpf_fd = -1;
+	int src_fd = -1;
+	int fuse_dev = -1;
+	char *filename = NULL;
+	struct stat st;
+
+	TEST(src_fd = open(ft_src, O_DIRECTORY | O_RDONLY | O_CLOEXEC),
+	     src_fd != -1);
+	TESTEQUAL(create_file(src_fd, s(test_name), 1, 2), 0);
+	TESTEQUAL(install_elf_bpf("test_bpf.bpf", "test_trace",
+				  &bpf_fd, NULL, NULL), 0);
+	TESTEQUAL(mount_fuse(mount_dir, bpf_fd, src_fd, &fuse_dev), 0);
+
+	TEST(filename = concat_file_name(mount_dir, test_name), filename);
+	TESTSYSCALL(stat(filename, &st));
+	TESTSYSCALL(chmod(filename, 0111));
+	TESTSYSCALL(stat(filename, &st));
+	TESTEQUAL(st.st_mode & 0777, 0111);
+	TESTSYSCALL(chmod(filename, 0777));
+	TESTSYSCALL(stat(filename, &st));
+	TESTEQUAL(st.st_mode & 0777, 0777);
+	TESTSYSCALL(chown(filename, 5, 6));
+	TESTSYSCALL(stat(filename, &st));
+	TESTEQUAL(st.st_uid, 5);
+	TESTEQUAL(st.st_gid, 6);
+
+	result = TEST_SUCCESS;
+out:
+	close(fuse_dev);
+	free(filename);
+	umount(mount_dir);
+	close(src_fd);
+	close(bpf_fd);
+	return result;
+}
+
+static int bpf_test_readdir(const char *mount_dir)
+{
+	static const char * const names[] = {
+		"real", "partial", "fake", ".", ".."
+	};
+	bool used[ARRAY_SIZE(names)] = { false };
+	int result = TEST_FAILURE;
+	int bpf_fd = -1;
+	int src_fd = -1;
+	int fuse_dev = -1;
+	DIR *dir = NULL;
+	struct dirent *dirent;
+	FUSE_DECLARE_DAEMON;
+
+	TEST(src_fd = open(ft_src, O_DIRECTORY | O_RDONLY | O_CLOEXEC),
+	     src_fd != -1);
+	TESTEQUAL(create_file(src_fd, s(names[0]), 1, 2), 0);
+	TESTEQUAL(create_file(src_fd, s(names[1]), 1, 2), 0);
+	TESTEQUAL(install_elf_bpf("test_bpf.bpf", "test_trace",
+				  &bpf_fd, NULL, NULL), 0);
+	TESTEQUAL(mount_fuse(mount_dir, bpf_fd, src_fd, &fuse_dev), 0);
+
+	FUSE_START_DAEMON();
+	if (action) {
+		int i, j;
+
+		TEST(dir = s_opendir(s(mount_dir)), dir);
+		TESTEQUAL(bpf_test_trace("opendir"), 0);
+
+		for (i = 0; i < ARRAY_SIZE(names); ++i) {
+			TEST(dirent = readdir(dir), dirent);
+
+			for (j = 0; j < ARRAY_SIZE(names); ++j)
+				if (!used[j] &&
+				    strcmp(names[j], dirent->d_name) == 0) {
+					used[j] = true;
+					break;
+				}
+			TESTNE(j, ARRAY_SIZE(names));
+		}
+		TEST(dirent = readdir(dir), dirent == NULL);
+		TESTSYSCALL(closedir(dir));
+		dir = NULL;
+		TESTEQUAL(bpf_test_trace("readdir"), 0);
+	} else {
+		struct fuse_in_header *in_header =
+			(struct fuse_in_header *)bytes_in;
+		ssize_t res = read(fuse_dev, bytes_in, sizeof(bytes_in));
+		struct fuse_read_out *read_out =
+			(struct fuse_read_out *) (bytes_in +
+					sizeof(*in_header) +
+					sizeof(struct fuse_read_in));
+		struct fuse_dirent *fuse_dirent =
+			(struct fuse_dirent *) (bytes_in + res);
+
+		TESTGE(res, sizeof(*in_header) + sizeof(struct fuse_read_in));
+		TESTEQUAL(in_header->opcode, FUSE_READDIR | FUSE_POSTFILTER);
+		*fuse_dirent = (struct fuse_dirent) {
+			.ino = 100,
+			.off = 5,
+			.namelen = strlen("fake"),
+			.type = DT_REG,
+		};
+		strcpy((char *)(bytes_in + res + sizeof(*fuse_dirent)), "fake");
+		res += FUSE_DIRENT_ALIGN(sizeof(*fuse_dirent) + strlen("fake") +
+					 1);
+		TESTFUSEDIROUTREAD(read_out,
+				bytes_in +
+				   sizeof(struct fuse_in_header) +
+				   sizeof(struct fuse_read_in) +
+				   sizeof(struct fuse_read_out),
+				res - sizeof(struct fuse_in_header) -
+				    sizeof(struct fuse_read_in) -
+				    sizeof(struct fuse_read_out));
+		res = read(fuse_dev, bytes_in, sizeof(bytes_in));
+		TESTEQUAL(res, sizeof(*in_header) +
+			  sizeof(struct fuse_read_in) +
+			  sizeof(struct fuse_read_out));
+		TESTEQUAL(in_header->opcode, FUSE_READDIR | FUSE_POSTFILTER);
+		TESTFUSEDIROUTREAD(read_out, bytes_in, 0);
+		exit(TEST_SUCCESS);
+	}
+	FUSE_END_DAEMON();
+	closedir(dir);
+	close(fuse_dev);
+	umount(mount_dir);
+	close(src_fd);
+	close(bpf_fd);
+	return result;
+}
+
+static int bpf_test_redact_readdir(const char *mount_dir)
+{
+	static const char * const names[] = {
+		"f1", "f2", "f3", "f4", "f5", "f6", ".", ".."
+	};
+	bool used[ARRAY_SIZE(names)] = { false };
+	int num_shown = (ARRAY_SIZE(names) - 2) / 2 + 2;
+	int result = TEST_FAILURE;
+	int bpf_fd = -1;
+	int src_fd = -1;
+	int fuse_dev = -1;
+	DIR *dir = NULL;
+	struct dirent *dirent;
+	int i;
+	int count = 0;
+	FUSE_DECLARE_DAEMON;
+
+	TEST(src_fd = open(ft_src, O_DIRECTORY | O_RDONLY | O_CLOEXEC),
+	     src_fd != -1);
+	for (i = 0; i < ARRAY_SIZE(names) - 2; i++)
+		TESTEQUAL(create_file(src_fd, s(names[i]), 1, 2), 0);
+
+	TESTEQUAL(install_elf_bpf("test_bpf.bpf", "test_readdir_redact",
+				  &bpf_fd, NULL, NULL), 0);
+	TESTEQUAL(mount_fuse(mount_dir, bpf_fd, src_fd, &fuse_dev), 0);
+
+	FUSE_START_DAEMON();
+	if (action) {
+		int j;
+
+		TEST(dir = s_opendir(s(mount_dir)), dir);
+		while ((dirent = readdir(dir))) {
+			errno = 0;
+			TESTEQUAL(errno, 0);
+
+			for (j = 0; j < ARRAY_SIZE(names); ++j)
+				if (!used[j] &&
+				    strcmp(names[j], dirent->d_name) == 0) {
+					used[j] = true;
+					count++;
+					break;
+				}
+			TESTNE(j, ARRAY_SIZE(names));
+			TESTGE(num_shown, count);
+		}
+		TESTEQUAL(count, num_shown);
+		TESTSYSCALL(closedir(dir));
+		dir = NULL;
+	} else {
+		bool skip = true;
+
+		for (int i = 0; i < ARRAY_SIZE(names) + 1; i++) {
+			uint8_t bytes_in[FUSE_MIN_READ_BUFFER];
+			uint8_t bytes_out[FUSE_MIN_READ_BUFFER];
+			struct fuse_in_header *in_header =
+				(struct fuse_in_header *)bytes_in;
+			ssize_t res = read(fuse_dev, bytes_in, sizeof(bytes_in));
+			int length_out = 0;
+			uint8_t *pos;
+			uint8_t *dirs_in;
+			uint8_t *dirs_out;
+			struct fuse_read_in *fuse_read_in;
+			struct fuse_read_out *fuse_read_out_in;
+			struct fuse_read_out *fuse_read_out_out;
+			struct fuse_dirent *fuse_dirent_in = NULL;
+			struct fuse_dirent *next = NULL;
+			bool again = false;
+			int dir_ent_len = 0;
+
+			TESTGE(res, sizeof(struct fuse_in_header) +
+					sizeof(struct fuse_read_in) +
+					sizeof(struct fuse_read_out));
+
+			pos = bytes_in + sizeof(struct fuse_in_header);
+			fuse_read_in = (struct fuse_read_in *) pos;
+			pos += sizeof(*fuse_read_in);
+			fuse_read_out_in = (struct fuse_read_out *) pos;
+			pos += sizeof(*fuse_read_out_in);
+			dirs_in = pos;
+
+			pos = bytes_out + sizeof(struct fuse_out_header);
+			fuse_read_out_out = (struct fuse_read_out *) pos;
+			pos += sizeof(*fuse_read_out_out);
+			dirs_out = pos;
+
+			if (dirs_in < bytes_in + res) {
+				bool is_dot;
+
+				fuse_dirent_in = (struct fuse_dirent *) dirs_in;
+				is_dot = (fuse_dirent_in->namelen == 1 &&
+						!strncmp(fuse_dirent_in->name, ".", 1)) ||
+					 (fuse_dirent_in->namelen == 2 &&
+						!strncmp(fuse_dirent_in->name, "..", 2));
+
+				dir_ent_len = FUSE_DIRENT_ALIGN(
+					sizeof(*fuse_dirent_in) +
+					fuse_dirent_in->namelen);
+
+				if (dirs_in + dir_ent_len < bytes_in + res)
+					next = (struct fuse_dirent *)
+							(dirs_in + dir_ent_len);
+
+				if (!skip || is_dot) {
+					memcpy(dirs_out, fuse_dirent_in,
+					       sizeof(struct fuse_dirent) +
+					       fuse_dirent_in->namelen);
+					length_out += dir_ent_len;
+				}
+				again = ((skip && !is_dot) && next);
+
+				if (!is_dot)
+					skip = !skip;
+			}
+
+			fuse_read_out_out->offset = next ? next->off :
+					fuse_read_out_in->offset;
+			fuse_read_out_out->again = again;
+
+			{
+			struct fuse_out_header *out_header =
+				(struct fuse_out_header *)bytes_out;
+
+			*out_header = (struct fuse_out_header) {
+				.len = sizeof(*out_header) +
+				       sizeof(*fuse_read_out_out) + length_out,
+				.unique = in_header->unique,
+			};
+			TESTEQUAL(write(fuse_dev, bytes_out, out_header->len),
+				  out_header->len);
+			}
+		}
+		exit(TEST_SUCCESS);
+	}
+	FUSE_END_DAEMON();
+	closedir(dir);
+	close(fuse_dev);
+	umount(mount_dir);
+	close(src_fd);
+	close(bpf_fd);
+	return result;
+}
+
+/*
+ * This test is more to show what classic fuse does with a creat in a subdir
+ * than a test of any new functionality
+ */
+static int bpf_test_creat(const char *mount_dir)
+{
+	const char *dir_name = "show";
+	const char *file_name = "file";
+	int result = TEST_FAILURE;
+	int fuse_dev = -1;
+	int fd = -1;
+	FUSE_DECLARE_DAEMON;
+
+	TESTEQUAL(mount_fuse(mount_dir, -1, -1, &fuse_dev), 0);
+
+	FUSE_START_DAEMON();
+	if (action) {
+		TEST(fd = s_creat(s_path(s_path(s(mount_dir), s(dir_name)),
+					 s(file_name)),
+				  0777),
+		     fd != -1);
+		TESTSYSCALL(close(fd));
+	} else {
+		DECL_FUSE_IN(create);
+		DECL_FUSE_IN(release);
+		DECL_FUSE_IN(flush);
+
+		TESTFUSELOOKUP(dir_name, 0);
+		TESTFUSEOUT1(fuse_entry_out, ((struct fuse_entry_out) {
+			.nodeid		= 3,
+			.generation	= 1,
+			.attr.ino = 100,
+			.attr.size = 4,
+			.attr.blksize = 512,
+			.attr.mode = S_IFDIR | 0777,
+			}));
+
+		TESTFUSELOOKUP(file_name, 0);
+		TESTFUSEOUTERROR(-ENOENT);
+
+		TESTFUSEINEXT(FUSE_CREATE, create_in, strlen(file_name) + 1);
+		TESTFUSEOUT2(fuse_entry_out, ((struct fuse_entry_out) {
+			.nodeid		= 2,
+			.generation	= 1,
+			.attr.ino = 200,
+			.attr.size = 4,
+			.attr.blksize = 512,
+			.attr.mode = S_IFREG,
+			}),
+			fuse_open_out, ((struct fuse_open_out) {
+			.fh = 1,
+			.open_flags = create_in->flags,
+			}));
+
+		TESTFUSEINNULL(FUSE_CANONICAL_PATH);
+		TESTFUSEOUTREAD("ignored", 7);
+
+		TESTFUSEIN(FUSE_FLUSH, flush_in);
+		TESTFUSEOUTEMPTY();
+
+		TESTFUSEIN(FUSE_RELEASE, release_in);
+		TESTFUSEOUTEMPTY();
+		exit(TEST_SUCCESS);
+	}
+	FUSE_END_DAEMON();
+	close(fuse_dev);
+	umount(mount_dir);
+	return result;
+}
+
+static int bpf_test_hidden_entries(const char *mount_dir)
+{
+	static const char * const dir_names[] = {
+		"show",
+		"hide",
+	};
+	const char *file_name = "file";
+	const char *data = "The quick brown fox jumps over the lazy dog\n";
+	int result = TEST_FAILURE;
+	int src_fd = -1;
+	int bpf_fd = -1;
+	int fuse_dev = -1;
+	int fd = -1;
+
+	TEST(src_fd = open(ft_src, O_DIRECTORY | O_RDONLY | O_CLOEXEC),
+	     src_fd != -1);
+	TESTSYSCALL(mkdirat(src_fd, dir_names[0], 0777));
+	TESTSYSCALL(mkdirat(src_fd, dir_names[1], 0777));
+	TESTEQUAL(install_elf_bpf("test_bpf.bpf", "test_hidden",
+				  &bpf_fd, NULL, NULL), 0);
+	TESTEQUAL(mount_fuse(mount_dir, bpf_fd, src_fd, &fuse_dev), 0);
+
+	TEST(fd = s_creat(s_path(s_path(s(mount_dir), s(dir_names[0])),
+				 s(file_name)),
+			  0777),
+	     fd != -1);
+	TESTSYSCALL(fallocate(fd, 0, 0, 4096));
+	TEST(write(fd, data, strlen(data)), strlen(data));
+	TESTSYSCALL(close(fd));
+	TESTEQUAL(bpf_test_trace("Create"), 0);
+
+	result = TEST_SUCCESS;
+out:
+	close(fuse_dev);
+	umount(mount_dir);
+	close(bpf_fd);
+	close(src_fd);
+	return result;
+}
+
+static int bpf_test_dir(const char *mount_dir)
+{
+	const char *dir_name = "dir";
+	int result = TEST_FAILURE;
+	int src_fd = -1;
+	int bpf_fd = -1;
+	int fuse_dev = -1;
+	struct stat st;
+
+	TEST(src_fd = open(ft_src, O_DIRECTORY | O_RDONLY | O_CLOEXEC),
+	     src_fd != -1);
+	TESTEQUAL(install_elf_bpf("test_bpf.bpf", "test_trace",
+				  &bpf_fd, NULL, NULL), 0);
+	TESTEQUAL(mount_fuse(mount_dir, bpf_fd, src_fd, &fuse_dev), 0);
+
+	TESTSYSCALL(s_mkdir(s_path(s(mount_dir), s(dir_name)), 0777));
+	TESTEQUAL(bpf_test_trace("mkdir"), 0);
+	TESTSYSCALL(s_stat(s_path(s(ft_src), s(dir_name)), &st));
+	TESTSYSCALL(s_rmdir(s_path(s(mount_dir), s(dir_name))));
+	TESTEQUAL(s_stat(s_path(s(ft_src), s(dir_name)), &st), -1);
+	TESTEQUAL(errno, ENOENT);
+	result = TEST_SUCCESS;
+out:
+	close(fuse_dev);
+	umount(mount_dir);
+	close(bpf_fd);
+	close(src_fd);
+	return result;
+}
+
+static int bpf_test_file(const char *mount_dir, bool close_first)
+{
+	const char *file_name = "real";
+	int result = TEST_FAILURE;
+	int src_fd = -1;
+	int bpf_fd = -1;
+	int fuse_dev = -1;
+	int fd = -1;
+	struct stat st;
+
+	TEST(src_fd = open(ft_src, O_DIRECTORY | O_RDONLY | O_CLOEXEC),
+	     src_fd != -1);
+	TESTEQUAL(install_elf_bpf("test_bpf.bpf", "test_trace",
+			  &bpf_fd, NULL, NULL), 0);
+	TESTEQUAL(mount_fuse(mount_dir, bpf_fd, src_fd, &fuse_dev), 0);
+
+	TEST(fd = s_creat(s_path(s(mount_dir), s(file_name)),
+			  0777),
+	     fd != -1);
+	TESTEQUAL(bpf_test_trace("Create"), 0);
+	if (close_first) {
+		TESTSYSCALL(close(fd));
+		fd = -1;
+	}
+	TESTSYSCALL(s_stat(s_path(s(ft_src), s(file_name)), &st));
+	TESTSYSCALL(s_unlink(s_path(s(mount_dir), s(file_name))));
+	TESTEQUAL(bpf_test_trace("unlink"), 0);
+	TESTEQUAL(s_stat(s_path(s(ft_src), s(file_name)), &st), -1);
+	TESTEQUAL(errno, ENOENT);
+	if (!close_first) {
+		TESTSYSCALL(close(fd));
+		fd = -1;
+	}
+	result = TEST_SUCCESS;
+out:
+	close(fd);
+	close(fuse_dev);
+	umount(mount_dir);
+	close(bpf_fd);
+	close(src_fd);
+	return result;
+}
+
+static int bpf_test_file_early_close(const char *mount_dir)
+{
+	return bpf_test_file(mount_dir, true);
+}
+
+static int bpf_test_file_late_close(const char *mount_dir)
+{
+	return bpf_test_file(mount_dir, false);
+}
+
+static int bpf_test_alter_errcode_bpf(const char *mount_dir)
+{
+	const char *dir_name = "dir";
+	int result = TEST_FAILURE;
+	int src_fd = -1;
+	int bpf_fd = -1;
+	int fuse_dev = -1;
+	struct stat st;
+
+	TEST(src_fd = open(ft_src, O_DIRECTORY | O_RDONLY | O_CLOEXEC),
+	     src_fd != -1);
+	TESTEQUAL(install_elf_bpf("test_bpf.bpf", "test_error",
+				  &bpf_fd, NULL, NULL), 0);
+	TESTEQUAL(mount_fuse(mount_dir, bpf_fd, src_fd, &fuse_dev), 0);
+
+	TESTSYSCALL(s_mkdir(s_path(s(mount_dir), s(dir_name)), 0777));
+	//TESTEQUAL(bpf_test_trace("mkdir"), 0);
+	TESTSYSCALL(s_stat(s_path(s(ft_src), s(dir_name)), &st));
+	TESTEQUAL(s_mkdir(s_path(s(mount_dir), s(dir_name)), 0777), -EPERM);
+	TESTSYSCALL(s_rmdir(s_path(s(mount_dir), s(dir_name))));
+	TESTEQUAL(s_stat(s_path(s(ft_src), s(dir_name)), &st), -1);
+	TESTEQUAL(errno, ENOENT);
+	result = TEST_SUCCESS;
+out:
+	close(fuse_dev);
+	umount(mount_dir);
+	close(bpf_fd);
+	close(src_fd);
+	return result;
+}
+
+static int bpf_test_alter_errcode_userspace(const char *mount_dir)
+{
+	const char *dir_name = "doesnotexist";
+	int result = TEST_FAILURE;
+	int src_fd = -1;
+	int bpf_fd = -1;
+	int fuse_dev = -1;
+	FUSE_DECLARE_DAEMON;
+
+	TEST(src_fd = open(ft_src, O_DIRECTORY | O_RDONLY | O_CLOEXEC),
+	     src_fd != -1);
+	TESTEQUAL(install_elf_bpf("test_bpf.bpf", "test_error",
+				  &bpf_fd, NULL, NULL), 0);
+	TESTEQUAL(mount_fuse(mount_dir, bpf_fd, src_fd, &fuse_dev), 0);
+
+	FUSE_START_DAEMON();
+	if (action) {
+		TESTEQUAL(s_unlink(s_path(s(mount_dir), s(dir_name))),
+		     -1);
+		TESTEQUAL(errno, ENOMEM);
+	} else {
+		TESTFUSELOOKUP("doesnotexist", FUSE_POSTFILTER);
+		TESTFUSEOUTERROR(-ENOMEM);
+		exit(TEST_SUCCESS);
+	}
+	FUSE_END_DAEMON();
+	close(fuse_dev);
+	umount(mount_dir);
+	close(bpf_fd);
+	close(src_fd);
+	return result;
+}
+
+static int bpf_test_mknod(const char *mount_dir)
+{
+	const char *file_name = "real";
+	int result = TEST_FAILURE;
+	int src_fd = -1;
+	int bpf_fd = -1;
+	int fuse_dev = -1;
+	struct stat st;
+
+	TEST(src_fd = open(ft_src, O_DIRECTORY | O_RDONLY | O_CLOEXEC),
+	     src_fd != -1);
+	TESTEQUAL(install_elf_bpf("test_bpf.bpf", "test_trace",
+				  &bpf_fd, NULL, NULL), 0);
+	TESTEQUAL(mount_fuse(mount_dir, bpf_fd, src_fd, &fuse_dev), 0);
+
+	TESTSYSCALL(s_mkfifo(s_path(s(mount_dir), s(file_name)), 0777));
+	TESTEQUAL(bpf_test_trace("mknod"), 0);
+	TESTSYSCALL(s_stat(s_path(s(ft_src), s(file_name)), &st));
+	TESTSYSCALL(s_unlink(s_path(s(mount_dir), s(file_name))));
+	TESTEQUAL(bpf_test_trace("unlink"), 0);
+	TESTEQUAL(s_stat(s_path(s(ft_src), s(file_name)), &st), -1);
+	TESTEQUAL(errno, ENOENT);
+	result = TEST_SUCCESS;
+out:
+	close(fuse_dev);
+	umount(mount_dir);
+	close(bpf_fd);
+	close(src_fd);
+	return result;
+}
+
+static int bpf_test_largedir(const char *mount_dir)
+{
+	const char *show = "show";
+	const int files = 1000;
+
+	int result = TEST_FAILURE;
+	int src_fd = -1;
+	int bpf_fd = -1;
+	int fuse_dev = -1;
+	struct map_relocation *map_relocations = NULL;
+	size_t map_count = 0;
+	FUSE_DECLARE_DAEMON;
+
+	TEST(src_fd = open(ft_src, O_DIRECTORY | O_RDONLY | O_CLOEXEC),
+	     src_fd != -1);
+	TESTEQUAL(install_elf_bpf("fd_bpf.bpf", "test_daemon",
+			  &bpf_fd, &map_relocations, &map_count), 0);
+	TESTEQUAL(mount_fuse(mount_dir, bpf_fd, src_fd, &fuse_dev), 0);
+
+	FUSE_START_DAEMON();
+	if (action) {
+		int i;
+		int fd;
+		DIR *dir = NULL;
+		struct dirent *dirent;
+
+		TESTSYSCALL(s_mkdir(s_path(s(mount_dir), s(show)), 0777));
+		for (i = 0; i < files; ++i) {
+			char filename[NAME_MAX];
+
+			sprintf(filename, "%d", i);
+			TEST(fd = s_creat(s_path(s_path(s(mount_dir), s(show)),
+						 s(filename)), 0777), fd != -1);
+			TESTSYSCALL(close(fd));
+		}
+
+		TEST(dir = s_opendir(s_path(s(mount_dir), s(show))), dir);
+		for (dirent = readdir(dir); dirent; dirent = readdir(dir))
+			;
+		closedir(dir);
+	} else {
+		int i;
+
+		for (i = 0; i < files + 2; ++i) {
+			TESTFUSELOOKUP(show, FUSE_PREFILTER);
+			TESTFUSEOUTREAD(show, 5);
+		}
+		exit(TEST_SUCCESS);
+	}
+	FUSE_END_DAEMON();
+	close(fuse_dev);
+	umount(mount_dir);
+	close(bpf_fd);
+	close(src_fd);
+	return result;
+}
+
+static int bpf_test_link(const char *mount_dir)
+{
+	const char *file_name = "real";
+	const char *link_name = "partial";
+	int result = TEST_FAILURE;
+	int fd = -1;
+	int src_fd = -1;
+	int bpf_fd = -1;
+	int fuse_dev = -1;
+	struct stat st;
+
+	TEST(src_fd = open(ft_src, O_DIRECTORY | O_RDONLY | O_CLOEXEC),
+	     src_fd != -1);
+	TESTEQUAL(install_elf_bpf("test_bpf.bpf", "test_trace", &bpf_fd, NULL,
+				  NULL),
+		  0);
+	TESTEQUAL(mount_fuse(mount_dir, bpf_fd, src_fd, &fuse_dev), 0);
+
+	TEST(fd = s_creat(s_path(s(mount_dir), s(file_name)), 0777), fd != -1);
+	TESTEQUAL(bpf_test_trace("Create"), 0);
+	TESTSYSCALL(s_stat(s_path(s(ft_src), s(file_name)), &st));
+
+	TESTSYSCALL(s_link(s_path(s(mount_dir), s(file_name)),
+			   s_path(s(mount_dir), s(link_name))));
+
+	TESTEQUAL(bpf_test_trace("link"), 0);
+	TESTSYSCALL(s_stat(s_path(s(ft_src), s(link_name)), &st));
+
+	TESTSYSCALL(s_unlink(s_path(s(mount_dir), s(link_name))));
+	TESTEQUAL(bpf_test_trace("unlink"), 0);
+	TESTEQUAL(s_stat(s_path(s(ft_src), s(link_name)), &st), -1);
+	TESTEQUAL(errno, ENOENT);
+
+	TESTSYSCALL(s_unlink(s_path(s(mount_dir), s(file_name))));
+	TESTEQUAL(bpf_test_trace("unlink"), 0);
+	TESTEQUAL(s_stat(s_path(s(ft_src), s(file_name)), &st), -1);
+	TESTEQUAL(errno, ENOENT);
+
+	result = TEST_SUCCESS;
+out:
+	close(fd);
+	close(fuse_dev);
+	umount(mount_dir);
+	close(bpf_fd);
+	close(src_fd);
+	return result;
+}
+
+static int bpf_test_symlink(const char *mount_dir)
+{
+	const char *test_name = "real";
+	const char *symlink_name = "partial";
+	const char *test_data = "Weebles wobble but they don't fall down";
+	int result = TEST_FAILURE;
+	int bpf_fd = -1;
+	int src_fd = -1;
+	int fuse_dev = -1;
+	int fd = -1;
+	char read_buffer[256] = {};
+	ssize_t bytes_read;
+
+	TEST(src_fd = open(ft_src, O_DIRECTORY | O_RDONLY | O_CLOEXEC),
+	     src_fd != -1);
+	TEST(fd = openat(src_fd, test_name, O_CREAT | O_RDWR | O_CLOEXEC, 0777),
+	     fd != -1);
+	TESTEQUAL(write(fd, test_data, strlen(test_data)), strlen(test_data));
+	TESTSYSCALL(close(fd));
+	fd = -1;
+
+	TESTEQUAL(install_elf_bpf("test_bpf.bpf", "test_trace",
+				  &bpf_fd, NULL, NULL), 0);
+	TESTEQUAL(mount_fuse(mount_dir, bpf_fd, src_fd, &fuse_dev), 0);
+
+	TESTSYSCALL(s_symlink(s_path(s(mount_dir), s(test_name)),
+				   s_path(s(mount_dir), s(symlink_name))));
+	TESTEQUAL(bpf_test_trace("symlink"), 0);
+
+	TESTERR(fd = s_open(s_path(s(mount_dir), s(symlink_name)), O_RDONLY | O_CLOEXEC), fd != -1);
+	bytes_read = read(fd, read_buffer, strlen(test_data));
+	TESTEQUAL(bpf_test_trace("readlink"), 0);
+	TESTEQUAL(bytes_read, strlen(test_data));
+	TESTEQUAL(strcmp(test_data, read_buffer), 0);
+
+	result = TEST_SUCCESS;
+out:
+	close(fuse_dev);
+	close(fd);
+	umount(mount_dir);
+	close(src_fd);
+	close(bpf_fd);
+	return result;
+}
+
+static int bpf_test_xattr(const char *mount_dir)
+{
+	static const char file_name[] = "real";
+	static const char xattr_name[] = "user.xattr_test_name";
+	static const char xattr_value[] = "this_is_a_test";
+	const size_t xattr_size = sizeof(xattr_value);
+	char xattr_value_ret[256];
+	ssize_t xattr_size_ret;
+	ssize_t xattr_size_ret_se;
+	int result = TEST_FAILURE;
+	int fd = -1;
+	int src_fd = -1;
+	int bpf_fd = -1;
+	int fuse_dev = -1;
+	struct stat st;
+
+	memset(xattr_value_ret, '\0', sizeof(xattr_value_ret));
+
+	TEST(src_fd = open(ft_src, O_DIRECTORY | O_RDONLY | O_CLOEXEC),
+	     src_fd != -1);
+	TESTEQUAL(install_elf_bpf("test_bpf.bpf", "test_trace", &bpf_fd, NULL,
+				  NULL),
+		  0);
+	TESTEQUAL(mount_fuse(mount_dir, bpf_fd, src_fd, &fuse_dev), 0);
+
+	TEST(fd = s_creat(s_path(s(mount_dir), s(file_name)), 0777), fd != -1);
+	TESTEQUAL(bpf_test_trace("Create"), 0);
+	TESTSYSCALL(close(fd));
+
+	TESTSYSCALL(s_stat(s_path(s(ft_src), s(file_name)), &st));
+	TEST(result = s_getxattr(s_path(s(mount_dir), s(file_name)), xattr_name,
+				 xattr_value_ret, sizeof(xattr_value_ret),
+				 &xattr_size_ret),
+	     result == -1);
+	TESTEQUAL(errno, ENODATA);
+	TESTEQUAL(bpf_test_trace("getxattr"), 0);
+
+	TESTSYSCALL(s_listxattr(s_path(s(mount_dir), s(file_name)),
+				xattr_value_ret, sizeof(xattr_value_ret),
+				&xattr_size_ret_se));
+	TESTEQUAL(bpf_test_trace("listxattr"), 0);
+
+	TESTSYSCALL(s_setxattr(s_path(s(mount_dir), s(file_name)), xattr_name,
+			       xattr_value, xattr_size, 0));
+	TESTEQUAL(bpf_test_trace("setxattr"), 0);
+
+	TESTSYSCALL(s_listxattr(s_path(s(mount_dir), s(file_name)),
+				xattr_value_ret, sizeof(xattr_value_ret),
+				&xattr_size_ret));
+	TESTEQUAL(bpf_test_trace("listxattr"), 0);
+	TESTEQUAL(xattr_size_ret - xattr_size_ret_se, sizeof(xattr_name));
+	TESTEQUAL(strcmp(xattr_name, xattr_value_ret + xattr_size_ret_se), 0);
+
+	TESTSYSCALL(s_getxattr(s_path(s(mount_dir), s(file_name)), xattr_name,
+			       xattr_value_ret, sizeof(xattr_value_ret),
+			       &xattr_size_ret));
+	TESTEQUAL(bpf_test_trace("getxattr"), 0);
+	TESTEQUAL(xattr_size, xattr_size_ret);
+	TESTEQUAL(strcmp(xattr_value, xattr_value_ret), 0);
+
+	TESTSYSCALL(s_removexattr(s_path(s(mount_dir), s(file_name)), xattr_name));
+	TESTEQUAL(bpf_test_trace("removexattr"), 0);
+
+	TESTEQUAL(s_getxattr(s_path(s(mount_dir), s(file_name)), xattr_name,
+			       xattr_value_ret, sizeof(xattr_value_ret),
+			       &xattr_size_ret), -1);
+	TESTEQUAL(errno, ENODATA);
+
+	TESTSYSCALL(s_unlink(s_path(s(mount_dir), s(file_name))));
+	TESTEQUAL(bpf_test_trace("unlink"), 0);
+	TESTEQUAL(s_stat(s_path(s(ft_src), s(file_name)), &st), -1);
+	TESTEQUAL(errno, ENOENT);
+
+	result = TEST_SUCCESS;
+out:
+	close(fuse_dev);
+	umount(mount_dir);
+	close(bpf_fd);
+	close(src_fd);
+	return result;
+}
+
+static int bpf_test_set_backing(const char *mount_dir)
+{
+	const char *backing_name = "backing";
+	const char *test_data = "data";
+	const char *test_name = "test";
+
+	int result = TEST_FAILURE;
+	int fuse_dev = -1;
+	int fd = -1;
+	FUSE_DECLARE_DAEMON;
+
+	TESTEQUAL(mount_fuse_no_init(mount_dir, -1, -1, &fuse_dev), 0);
+	FUSE_START_DAEMON();
+	if (action) {
+		char data[256] = {0};
+
+		TESTERR(fd = s_open(s_path(s(mount_dir), s(test_name)),
+				    O_RDONLY | O_CLOEXEC), fd != -1);
+		TESTEQUAL(read(fd, data, strlen(test_data)), strlen(test_data));
+		TESTCOND(!strcmp(data, test_data));
+		TESTSYSCALL(close(fd));
+		fd = -1;
+		TESTSYSCALL(umount(mount_dir));
+	} else {
+		int bpf_fd  = -1;
+		int backing_fd = -1;
+
+		TESTERR(backing_fd = s_creat(s_path(s(ft_src), s(backing_name)), 0777),
+			backing_fd != -1);
+		TESTEQUAL(write(backing_fd, test_data, strlen(test_data)),
+			  strlen(test_data));
+		TESTEQUAL(install_elf_bpf("test_bpf.bpf", "test_simple",
+					  &bpf_fd, NULL, NULL), 0);
+
+		TESTFUSEINIT();
+		TESTFUSELOOKUP(test_name, 0);
+		TESTFUSEOUT2(fuse_entry_out, ((struct fuse_entry_out) {0}),
+			     fuse_entry_bpf_out, ((struct fuse_entry_bpf_out) {
+			.backing_action = FUSE_ACTION_REPLACE,
+			.backing_fd = backing_fd,
+			.bpf_action = FUSE_ACTION_REPLACE,
+			.bpf_fd = bpf_fd,
+			}));
+		read(fuse_dev, bytes_in, sizeof(bytes_in));
+		TESTSYSCALL(close(bpf_fd));
+		TESTSYSCALL(close(backing_fd));
+		exit(TEST_SUCCESS);
+	}
+	FUSE_END_DAEMON();
+	close(fuse_dev);
+	close(fd);
+	umount(mount_dir);
+	return result;
+}
+
+static int bpf_test_remove_backing(const char *mount_dir)
+{
+	const char *folder1 = "folder1";
+	const char *folder2 = "folder2";
+	const char *file = "file1";
+	const char *contents1 = "contents1";
+	const char *contents2 = "contents2";
+
+	int result = TEST_FAILURE;
+	int fuse_dev = -1;
+	int fd = -1;
+	int src_fd = -1;
+	int bpf_fd = -1;
+	char data[256] = {0};
+	FUSE_DECLARE_DAEMON;
+
+	/*
+	 * Create folder1/file
+	 *        folder2/file
+	 *
+	 * test will install bpf into mount.
+	 * bpf will postfilter root lookup to daemon.
+	 * daemon will remove bpf and redirect opens on folder1 to folder2.
+	 * test will open folder1/file which will be redirected to folder2.
+	 * test will check no traces for file, and contents are folder2/file.
+	 */
+	TESTEQUAL(bpf_clear_trace(), 0);
+	TESTSYSCALL(s_mkdir(s_path(s(ft_src), s(folder1)), 0777));
+	TEST(fd = s_creat(s_pathn(3, s(ft_src), s(folder1), s(file)), 0777),
+	     fd != -1);
+	TESTEQUAL(write(fd, contents1, strlen(contents1)), strlen(contents1));
+	TESTSYSCALL(close(fd));
+	TESTSYSCALL(s_mkdir(s_path(s(ft_src), s(folder2)), 0777));
+	TEST(fd = s_creat(s_pathn(3, s(ft_src), s(folder2), s(file)), 0777),
+	     fd != -1);
+	TESTEQUAL(write(fd, contents2, strlen(contents2)), strlen(contents2));
+	TESTSYSCALL(close(fd));
+
+	TEST(src_fd = open(ft_src, O_DIRECTORY | O_RDONLY | O_CLOEXEC),
+	     src_fd != -1);
+	TESTEQUAL(install_elf_bpf("test_bpf.bpf", "test_passthrough", &bpf_fd,
+				  NULL, NULL), 0);
+	TESTEQUAL(mount_fuse_no_init(mount_dir, bpf_fd, src_fd, &fuse_dev), 0);
+
+	FUSE_START_DAEMON();
+	if (action) {
+		TESTERR(fd = s_open(s_pathn(3, s(mount_dir), s(folder1),
+					    s(file)),
+				    O_RDONLY | O_CLOEXEC), fd != -1);
+		TESTEQUAL(read(fd, data, sizeof(data)), strlen(contents2));
+		TESTCOND(!strcmp(data, contents2));
+		TESTEQUAL(bpf_test_no_trace("file"), 0);
+		TESTSYSCALL(close(fd));
+		fd = -1;
+		TESTSYSCALL(umount(mount_dir));
+	} else {
+		struct {
+			char name[8];
+			struct fuse_entry_out feo;
+			struct fuse_entry_bpf_out febo;
+		} __packed in;
+		int backing_fd = -1;
+
+		TESTFUSEINIT();
+		TESTFUSEIN(FUSE_LOOKUP | FUSE_POSTFILTER, &in);
+		TEST(backing_fd = s_open(s_path(s(ft_src), s(folder2)),
+				 O_DIRECTORY | O_RDONLY | O_CLOEXEC),
+		     backing_fd != -1);
+		TESTFUSEOUT2(fuse_entry_out, ((struct fuse_entry_out) {0}),
+			     fuse_entry_bpf_out, ((struct fuse_entry_bpf_out) {
+			.bpf_action = FUSE_ACTION_REMOVE,
+			.backing_action = FUSE_ACTION_REPLACE,
+			.backing_fd = backing_fd,
+			}));
+
+		while (read(fuse_dev, bytes_in, sizeof(bytes_in)) != -1)
+			;
+		TESTSYSCALL(close(backing_fd));
+		exit(TEST_SUCCESS);
+	}
+	FUSE_END_DAEMON();
+	close(fuse_dev);
+	close(fd);
+	close(src_fd);
+	close(bpf_fd);
+	umount(mount_dir);
+	return result;
+}
+
+static int bpf_test_dir_rename(const char *mount_dir)
+{
+	const char *dir_name = "dir";
+	const char *dir_name2 = "dir2";
+	int result = TEST_FAILURE;
+	int src_fd = -1;
+	int bpf_fd = -1;
+	int fuse_dev = -1;
+	struct stat st;
+
+	TEST(src_fd = open(ft_src, O_DIRECTORY | O_RDONLY | O_CLOEXEC),
+	     src_fd != -1);
+	TESTEQUAL(install_elf_bpf("test_bpf.bpf", "test_trace",
+				  &bpf_fd, NULL, NULL), 0);
+	TESTEQUAL(mount_fuse(mount_dir, bpf_fd, src_fd, &fuse_dev), 0);
+
+	TESTSYSCALL(s_mkdir(s_path(s(mount_dir), s(dir_name)), 0777));
+	TESTEQUAL(bpf_test_trace("mkdir"), 0);
+	TESTSYSCALL(s_stat(s_path(s(ft_src), s(dir_name)), &st));
+	TESTSYSCALL(s_rename(s_path(s(mount_dir), s(dir_name)),
+			     s_path(s(mount_dir), s(dir_name2))));
+	TESTEQUAL(s_stat(s_path(s(ft_src), s(dir_name)), &st), -1);
+	TESTEQUAL(errno, ENOENT);
+	TESTSYSCALL(s_stat(s_path(s(ft_src), s(dir_name2)), &st));
+	result = TEST_SUCCESS;
+out:
+	close(fuse_dev);
+	umount(mount_dir);
+	close(bpf_fd);
+	close(src_fd);
+	return result;
+}
+
+static int bpf_test_file_rename(const char *mount_dir)
+{
+	const char *dir = "dir";
+	const char *file1 = "file1";
+	const char *file2 = "file2";
+	int result = TEST_FAILURE;
+	int src_fd = -1;
+	int bpf_fd = -1;
+	int fuse_dev = -1;
+	int fd = -1;
+
+	TEST(src_fd = open(ft_src, O_DIRECTORY | O_RDONLY | O_CLOEXEC),
+	     src_fd != -1);
+	TESTEQUAL(install_elf_bpf("test_bpf.bpf", "test_trace",
+				  &bpf_fd, NULL, NULL), 0);
+	TESTEQUAL(mount_fuse(mount_dir, bpf_fd, src_fd, &fuse_dev), 0);
+
+	TESTSYSCALL(s_mkdir(s_path(s(mount_dir), s(dir)), 0777));
+	TEST(fd = s_creat(s_pathn(3, s(mount_dir), s(dir), s(file1)), 0777),
+	     fd != -1);
+	TESTSYSCALL(s_rename(s_pathn(3, s(mount_dir), s(dir), s(file1)),
+			     s_pathn(3, s(mount_dir), s(dir), s(file2))));
+	result = TEST_SUCCESS;
+out:
+	close(fd);
+	umount(mount_dir);
+	close(fuse_dev);
+	close(bpf_fd);
+	close(src_fd);
+	return result;
+}
+
+static int mmap_test(const char *mount_dir)
+{
+	const char *file = "file";
+	int result = TEST_FAILURE;
+	int src_fd = -1;
+	int fuse_dev = -1;
+	int fd = -1;
+	char *addr = NULL;
+
+	TEST(src_fd = open(ft_src, O_DIRECTORY | O_RDONLY | O_CLOEXEC),
+	     src_fd != -1);
+	TESTEQUAL(mount_fuse(mount_dir, -1, src_fd, &fuse_dev), 0);
+	TEST(fd = s_open(s_path(s(mount_dir), s(file)),
+			 O_CREAT | O_RDWR | O_CLOEXEC, 0777),
+	     fd != -1);
+	TESTSYSCALL(fallocate(fd, 0, 4096, SEEK_CUR));
+	TEST(addr = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0),
+	     addr != (void *) -1);
+	memset(addr, 'a', 4096);
+
+	result = TEST_SUCCESS;
+out:
+	munmap(addr, 4096);
+	close(fd);
+	umount(mount_dir);
+	close(fuse_dev);
+	close(src_fd);
+	return result;
+}
+
+static int readdir_perms_test(const char *mount_dir)
+{
+	int result = TEST_FAILURE;
+	struct __user_cap_header_struct uchs = { _LINUX_CAPABILITY_VERSION_3 };
+	struct __user_cap_data_struct ucds[2];
+	int src_fd = -1;
+	int fuse_dev = -1;
+	DIR *dir = NULL;
+
+	/* Must remove capabilities for this test. */
+	TESTSYSCALL(syscall(SYS_capget, &uchs, ucds));
+	ucds[0].effective &= ~(1 << CAP_DAC_OVERRIDE | 1 << CAP_DAC_READ_SEARCH);
+	TESTSYSCALL(syscall(SYS_capset, &uchs, ucds));
+
+	/* This is what we are testing in fuseland. First test without fuse, */
+	TESTSYSCALL(mkdir("test", 0111));
+	TEST(dir = opendir("test"), dir == NULL);
+	closedir(dir);
+	dir = NULL;
+
+	TEST(src_fd = open(ft_src, O_DIRECTORY | O_RDONLY | O_CLOEXEC),
+	     src_fd != -1);
+	TESTEQUAL(mount_fuse(mount_dir, -1, src_fd, &fuse_dev), 0);
+
+	TESTSYSCALL(s_mkdir(s_path(s(mount_dir), s("test")), 0111));
+	TEST(dir = s_opendir(s_path(s(mount_dir), s("test"))), dir == NULL);
+
+	result = TEST_SUCCESS;
+out:
+	ucds[0].effective |= 1 << CAP_DAC_OVERRIDE | 1 << CAP_DAC_READ_SEARCH;
+	syscall(SYS_capset, &uchs, ucds);
+
+	closedir(dir);
+	s_rmdir(s_path(s(mount_dir), s("test")));
+	umount(mount_dir);
+	close(fuse_dev);
+	close(src_fd);
+	rmdir("test");
+	return result;
+}
+
+static int inotify_test(const char *mount_dir)
+{
+	int result = TEST_FAILURE;
+	int src_fd = -1;
+	int fuse_dev = -1;
+	struct s dir;
+	int inotify_fd = -1;
+	int watch;
+	int fd = -1;
+	char buffer[sizeof(struct inotify_event) + NAME_MAX + 1];
+
+	TEST(src_fd = open(ft_src, O_DIRECTORY | O_RDONLY | O_CLOEXEC),
+	     src_fd != -1);
+	TESTEQUAL(mount_fuse(mount_dir, -1, src_fd, &fuse_dev), 0);
+
+	TEST(inotify_fd = inotify_init1(IN_CLOEXEC), inotify_fd != -1);
+	dir = s_path(s(mount_dir), s("dir"));
+	TESTSYSCALL(mkdir(dir.s, 0777));
+	TEST(watch = inotify_add_watch(inotify_fd, dir.s, IN_CREATE), watch);
+	TEST(fd = s_creat(s_path(s(ft_src), s("dir/file")), 0777), fd != -1);
+	// buffer will be two struct lengths, as "file" gets rounded up to the
+	// next multiple of struct inotify_event
+	TESTEQUAL(read(inotify_fd, &buffer, sizeof(buffer)),
+		  sizeof(struct inotify_event) * 2);
+
+	result = TEST_SUCCESS;
+out:
+	close(fd);
+	s_unlink(s_path(s(ft_src), s("dir/file")));
+	close(inotify_fd);
+	rmdir(dir.s);
+	free(dir.s);
+	umount(mount_dir);
+	close(fuse_dev);
+	close(src_fd);
+	return result;
+}
+
+static int bpf_test_statfs(const char *mount_dir)
+{
+	int result = TEST_FAILURE;
+	int src_fd = -1;
+	int bpf_fd = -1;
+	int fuse_dev = -1;
+	int fd = -1;
+	struct statfs st;
+
+	TEST(src_fd = open(ft_src, O_DIRECTORY | O_RDONLY | O_CLOEXEC),
+	     src_fd != -1);
+	TESTEQUAL(install_elf_bpf("test_bpf.bpf", "test_trace",
+				  &bpf_fd, NULL, NULL), 0);
+	TESTEQUAL(mount_fuse(mount_dir, bpf_fd, src_fd, &fuse_dev), 0);
+
+	TESTSYSCALL(s_statfs(s(mount_dir), &st));
+	TESTEQUAL(bpf_test_trace("statfs"), 0);
+	TESTEQUAL(st.f_type, 0x65735546);
+	result = TEST_SUCCESS;
+out:
+	close(fd);
+	umount(mount_dir);
+	close(fuse_dev);
+	close(bpf_fd);
+	close(src_fd);
+	return result;
+}
+
+static int bpf_test_lseek(const char *mount_dir)
+{
+	const char *file = "real";
+	const char *test_data = "data";
+	int result = TEST_FAILURE;
+	int src_fd = -1;
+	int bpf_fd = -1;
+	int fuse_dev = -1;
+	int fd = -1;
+
+	TEST(src_fd = open(ft_src, O_DIRECTORY | O_RDONLY | O_CLOEXEC),
+	     src_fd != -1);
+	TEST(fd = openat(src_fd, file, O_CREAT | O_RDWR | O_CLOEXEC, 0777),
+	     fd != -1);
+	TESTEQUAL(write(fd, test_data, strlen(test_data)), strlen(test_data));
+	TESTSYSCALL(close(fd));
+	fd = -1;
+	TESTEQUAL(install_elf_bpf("test_bpf.bpf", "test_trace",
+				  &bpf_fd, NULL, NULL), 0);
+	TESTEQUAL(mount_fuse(mount_dir, bpf_fd, src_fd, &fuse_dev), 0);
+
+	TEST(fd = s_open(s_path(s(mount_dir), s(file)), O_RDONLY | O_CLOEXEC),
+	     fd != -1);
+	TESTEQUAL(lseek(fd, 3, SEEK_SET), 3);
+	TESTEQUAL(bpf_test_trace("lseek"), 0);
+	TESTEQUAL(lseek(fd, 5, SEEK_END), 9);
+	TESTEQUAL(bpf_test_trace("lseek"), 0);
+	TESTEQUAL(lseek(fd, 1, SEEK_CUR), 10);
+	TESTEQUAL(bpf_test_trace("lseek"), 0);
+	TESTEQUAL(lseek(fd, 1, SEEK_DATA), 1);
+	TESTEQUAL(bpf_test_trace("lseek"), 0);
+	result = TEST_SUCCESS;
+out:
+	close(fd);
+	umount(mount_dir);
+	close(fuse_dev);
+	close(bpf_fd);
+	close(src_fd);
+	return result;
+}
+
+/*
+ * State:
+ * Original: dst/folder1/content.txt
+ *                  ^
+ *                  |
+ *                  |
+ * Backing:  src/folder1/content.txt
+ *
+ * Step 1:  open(folder1) - set backing to src/folder1
+ * Check 1: cat(content.txt) - check not receiving call on the fuse daemon
+ *                             and content is the same
+ * Step 2:  readdirplus(dst)
+ * Check 2: cat(content.txt) - check not receiving call on the fuse daemon
+ *                             and content is the same
+ */
+static int bpf_test_readdirplus_not_overriding_backing(const char *mount_dir)
+{
+	const char *folder1 = "folder1";
+	const char *content_file = "content.txt";
+	const char *content = "hello world";
+
+	int result = TEST_FAILURE;
+	int fuse_dev = -1;
+	int src_fd = -1;
+	int content_fd = -1;
+	FUSE_DECLARE_DAEMON;
+
+	TESTSYSCALL(s_mkdir(s_path(s(ft_src), s(folder1)), 0777));
+	TEST(content_fd = s_creat(s_pathn(3, s(ft_src), s(folder1), s(content_file)), 0777),
+		content_fd != -1);
+	TESTEQUAL(write(content_fd, content, strlen(content)), strlen(content));
+	TESTEQUAL(mount_fuse_no_init(mount_dir, -1, -1, &fuse_dev), 0);
+
+	FUSE_START_DAEMON();
+	if (action) {
+		DIR *open_mount_dir = NULL;
+		struct dirent *mount_dirent;
+		int dst_folder1_fd = -1;
+		int dst_content_fd = -1;
+		char content_buffer[12];
+
+		// Step 1: Lookup folder1
+		TESTERR(dst_folder1_fd = s_open(s_path(s(mount_dir), s(folder1)),
+			O_RDONLY | O_CLOEXEC), dst_folder1_fd != -1);
+
+		// Check 1: Read content file (backed)
+		TESTERR(dst_content_fd =
+			s_open(s_pathn(3, s(mount_dir), s(folder1), s(content_file)),
+			O_RDONLY | O_CLOEXEC), dst_content_fd != -1);
+
+		TESTEQUAL(read(dst_content_fd, content_buffer, strlen(content)),
+			  strlen(content));
+		TESTEQUAL(strncmp(content, content_buffer, strlen(content)), 0);
+
+		TESTSYSCALL(close(dst_content_fd));
+		dst_content_fd = -1;
+		TESTSYSCALL(close(dst_folder1_fd));
+		dst_folder1_fd = -1;
+		memset(content_buffer, 0, strlen(content));
+
+		// Step 2: readdir folder 1
+		TEST(open_mount_dir = s_opendir(s(mount_dir)),
+			open_mount_dir != NULL);
+		TEST(mount_dirent = readdir(open_mount_dir), mount_dirent != NULL);
+		TESTSYSCALL(closedir(open_mount_dir));
+		open_mount_dir = NULL;
+
+		// Check 2: Read content file again (must be backed)
+		TESTERR(dst_content_fd =
+			s_open(s_pathn(3, s(mount_dir), s(folder1), s(content_file)),
+			O_RDONLY | O_CLOEXEC), dst_content_fd != -1);
+
+		TESTEQUAL(read(dst_content_fd, content_buffer, strlen(content)),
+			  strlen(content));
+		TESTEQUAL(strncmp(content, content_buffer, strlen(content)), 0);
+
+		TESTSYSCALL(close(dst_content_fd));
+		dst_content_fd = -1;
+	} else {
+		size_t read_size = 0;
+		struct fuse_in_header *in_header = (struct fuse_in_header *)bytes_in;
+		struct fuse_read_out *read_out = NULL;
+		struct fuse_attr attr = {};
+		int backing_fd = -1;
+		DECL_FUSE_IN(open);
+		DECL_FUSE_IN(getattr);
+
+		TESTFUSEINITFLAGS(FUSE_DO_READDIRPLUS | FUSE_READDIRPLUS_AUTO);
+
+		// Step 1: Lookup folder 1 with backing
+		TESTFUSELOOKUP(folder1, 0);
+		TESTSYSCALL(s_fuse_attr(s_path(s(ft_src), s(folder1)), &attr));
+		TEST(backing_fd = s_open(s_path(s(ft_src), s(folder1)),
+					 O_DIRECTORY | O_RDONLY | O_CLOEXEC),
+		     backing_fd != -1);
+		TESTFUSEOUT2(fuse_entry_out, ((struct fuse_entry_out) {
+				.nodeid = attr.ino,
+				.generation = 0,
+				.entry_valid = UINT64_MAX,
+				.attr_valid = UINT64_MAX,
+				.entry_valid_nsec = UINT32_MAX,
+				.attr_valid_nsec = UINT32_MAX,
+				.attr = attr,
+			     }), fuse_entry_bpf_out, ((struct fuse_entry_bpf_out) {
+				.backing_action = FUSE_ACTION_REPLACE,
+				.backing_fd = backing_fd,
+			     }));
+		TESTSYSCALL(close(backing_fd));
+
+		// Step 2: Open root dir
+		TESTFUSEIN(FUSE_OPENDIR, open_in);
+		TESTFUSEOUT1(fuse_open_out, ((struct fuse_open_out) {
+			.fh = 100,
+			.open_flags = open_in->flags
+		}));
+
+		// Step 2: Handle getattr
+		TESTFUSEIN(FUSE_GETATTR, getattr_in);
+		TESTSYSCALL(s_fuse_attr(s(ft_src), &attr));
+		TESTFUSEOUT1(fuse_attr_out, ((struct fuse_attr_out) {
+			.attr_valid = UINT64_MAX,
+			.attr_valid_nsec = UINT32_MAX,
+			.attr = attr
+		}));
+
+		// Step 2: Handle readdirplus
+		read_size = read(fuse_dev, bytes_in, sizeof(bytes_in));
+		TESTEQUAL(in_header->opcode, FUSE_READDIRPLUS);
+
+		struct fuse_direntplus *dirent_plus =
+			(struct fuse_direntplus *) (bytes_in + read_size);
+		struct fuse_dirent dirent;
+		struct fuse_entry_out entry_out;
+
+		read_out = (struct fuse_read_out *) (bytes_in +
+					sizeof(*in_header) +
+					sizeof(struct fuse_read_in));
+
+		TESTSYSCALL(s_fuse_attr(s_path(s(ft_src), s(folder1)), &attr));
+
+		dirent = (struct fuse_dirent) {
+			.ino = attr.ino,
+			.off = 1,
+			.namelen = strlen(folder1),
+			.type = DT_REG
+		};
+		entry_out = (struct fuse_entry_out) {
+			.nodeid = attr.ino,
+			.generation = 0,
+			.entry_valid = UINT64_MAX,
+			.attr_valid = UINT64_MAX,
+			.entry_valid_nsec = UINT32_MAX,
+			.attr_valid_nsec = UINT32_MAX,
+			.attr = attr
+		};
+		*dirent_plus = (struct fuse_direntplus) {
+			.dirent = dirent,
+			.entry_out = entry_out
+		};
+
+		strcpy((char *)(bytes_in + read_size + sizeof(*dirent_plus)), folder1);
+		read_size += FUSE_DIRENT_ALIGN(sizeof(*dirent_plus) + strlen(folder1) +
+					1);
+		TESTFUSEDIROUTREAD(read_out,
+				bytes_in +
+				sizeof(struct fuse_in_header) +
+				sizeof(struct fuse_read_in) +
+				sizeof(struct fuse_read_out),
+				read_size - sizeof(struct fuse_in_header) -
+					sizeof(struct fuse_read_in) -
+					sizeof(struct fuse_read_out));
+		exit(TEST_SUCCESS);
+	}
+	FUSE_END_DAEMON();
+	close(fuse_dev);
+	close(content_fd);
+	close(src_fd);
+	umount(mount_dir);
+	return result;
+}
+
+static int bpf_test_no_readdirplus_without_nodeid(const char *mount_dir)
+{
+	const char *folder1 = "folder1";
+	const char *folder2 = "folder2";
+	int result = TEST_FAILURE;
+	int fuse_dev = -1;
+	int src_fd = -1;
+	int content_fd = -1;
+	int bpf_fd = -1;
+	FUSE_DECLARE_DAEMON;
+
+	TESTEQUAL(install_elf_bpf("test_bpf.bpf", "test_readdirplus",
+					  &bpf_fd, NULL, NULL), 0);
+	TESTSYSCALL(s_mkdir(s_path(s(ft_src), s(folder1)), 0777));
+	TESTSYSCALL(s_mkdir(s_path(s(ft_src), s(folder2)), 0777));
+	TESTEQUAL(mount_fuse_no_init(mount_dir, -1, -1, &fuse_dev), 0);
+	FUSE_START_DAEMON();
+	if (action) {
+		DIR *open_dir = NULL;
+		struct dirent *dirent;
+
+		// Folder 1: Readdir with no nodeid
+		TEST(open_dir = s_opendir(s_path(s(ft_dst), s(folder1))),
+				open_dir != NULL);
+		TEST(dirent = readdir(open_dir), dirent == NULL);
+		TESTCOND(errno == EINVAL);
+		TESTSYSCALL(closedir(open_dir));
+		open_dir = NULL;
+
+		// Folder 2: Readdir with a nodeid
+		TEST(open_dir = s_opendir(s_path(s(ft_dst), s(folder2))),
+				open_dir != NULL);
+		TEST(dirent = readdir(open_dir), dirent == NULL);
+		TESTCOND(errno == EINVAL);
+		TESTSYSCALL(closedir(open_dir));
+		open_dir = NULL;
+	} else {
+		size_t read_size;
+		struct fuse_in_header *in_header = (struct fuse_in_header *)bytes_in;
+		struct fuse_attr attr = {};
+		int backing_fd = -1;
+
+		TESTFUSEINITFLAGS(FUSE_DO_READDIRPLUS | FUSE_READDIRPLUS_AUTO);
+
+		// folder 1: Set 0 as nodeid, Expect READDIR
+		TESTFUSELOOKUP(folder1, 0);
+		TEST(backing_fd = s_open(s_path(s(ft_src), s(folder1)),
+					 O_DIRECTORY | O_RDONLY | O_CLOEXEC),
+		     backing_fd != -1);
+		TESTFUSEOUT2(fuse_entry_out, ((struct fuse_entry_out) {
+				.nodeid = 0,
+				.generation = 0,
+				.entry_valid = UINT64_MAX,
+				.attr_valid = UINT64_MAX,
+				.entry_valid_nsec = UINT32_MAX,
+				.attr_valid_nsec = UINT32_MAX,
+				.attr = attr,
+			     }), fuse_entry_bpf_out, ((struct fuse_entry_bpf_out) {
+				.backing_action = FUSE_ACTION_REPLACE,
+				.backing_fd = backing_fd,
+				.bpf_action = FUSE_ACTION_REPLACE,
+				.bpf_fd = bpf_fd,
+			     }));
+		TESTSYSCALL(close(backing_fd));
+		TEST(read_size = read(fuse_dev, bytes_in, sizeof(bytes_in)), read_size > 0);
+		TESTEQUAL(in_header->opcode, FUSE_READDIR);
+		TESTFUSEOUTERROR(-EINVAL);
+
+		// folder 2: Set 10 as nodeid, Expect READDIRPLUS
+		TESTFUSELOOKUP(folder2, 0);
+		TEST(backing_fd = s_open(s_path(s(ft_src), s(folder2)),
+					 O_DIRECTORY | O_RDONLY | O_CLOEXEC),
+		     backing_fd != -1);
+		TESTFUSEOUT2(fuse_entry_out, ((struct fuse_entry_out) {
+				.nodeid = 10,
+				.generation = 0,
+				.entry_valid = UINT64_MAX,
+				.attr_valid = UINT64_MAX,
+				.entry_valid_nsec = UINT32_MAX,
+				.attr_valid_nsec = UINT32_MAX,
+				.attr = attr,
+			     }), fuse_entry_bpf_out, ((struct fuse_entry_bpf_out) {
+				.backing_action = FUSE_ACTION_REPLACE,
+				.backing_fd = backing_fd,
+				.bpf_action = FUSE_ACTION_REPLACE,
+				.bpf_fd = bpf_fd,
+			     }));
+		TESTSYSCALL(close(backing_fd));
+		TEST(read_size = read(fuse_dev, bytes_in, sizeof(bytes_in)), read_size > 0);
+		TESTEQUAL(in_header->opcode, FUSE_READDIRPLUS);
+		TESTFUSEOUTERROR(-EINVAL);
+		exit(TEST_SUCCESS);
+	}
+	FUSE_END_DAEMON();
+	close(fuse_dev);
+	close(content_fd);
+	close(src_fd);
+	close(bpf_fd);
+	umount(mount_dir);
+	return result;
+}
+
+/*
+ * State:
+ * Original: dst/folder1/content.txt
+ *                  ^
+ *                  |
+ *                  |
+ * Backing:  src/folder1/content.txt
+ *
+ * Step 1:  open(folder1) - lookup folder1 with entry_timeout set to 0
+ * Step 2:  open(folder1) - lookup folder1 again to trigger revalidate wich will
+ *                          set backing fd
+ *
+ * Check 1: cat(content.txt) - check not receiving call on the fuse daemon
+ *                             and content is the same
+ */
+static int bpf_test_revalidate_handle_backing_fd(const char *mount_dir)
+{
+	const char *folder1 = "folder1";
+	const char *content_file = "content.txt";
+	const char *content = "hello world";
+	int result = TEST_FAILURE;
+	int fuse_dev = -1;
+	int src_fd = -1;
+	int content_fd = -1;
+	FUSE_DECLARE_DAEMON;
+
+	TESTSYSCALL(s_mkdir(s_path(s(ft_src), s(folder1)), 0777));
+	TEST(content_fd = s_creat(s_pathn(3, s(ft_src), s(folder1), s(content_file)), 0777),
+		content_fd != -1);
+	TESTEQUAL(write(content_fd, content, strlen(content)), strlen(content));
+	TESTSYSCALL(close(content_fd));
+	content_fd = -1;
+	TESTEQUAL(mount_fuse_no_init(mount_dir, -1, -1, &fuse_dev), 0);
+	FUSE_START_DAEMON();
+	if (action) {
+		int dst_folder1_fd = -1;
+		int dst_content_fd = -1;
+		char content_buffer[9] = {0};
+		// Step 1: Lookup folder1
+		TESTERR(dst_folder1_fd = s_open(s_path(s(mount_dir), s(folder1)),
+			O_RDONLY | O_CLOEXEC), dst_folder1_fd != -1);
+		TESTSYSCALL(close(dst_folder1_fd));
+		dst_folder1_fd = -1;
+		// Step 2: Lookup folder1 again
+		TESTERR(dst_folder1_fd = s_open(s_path(s(mount_dir), s(folder1)),
+			O_RDONLY | O_CLOEXEC), dst_folder1_fd != -1);
+		TESTSYSCALL(close(dst_folder1_fd));
+		dst_folder1_fd = -1;
+		// Check 1: Read content file (must be backed)
+		TESTERR(dst_content_fd =
+			s_open(s_pathn(3, s(mount_dir), s(folder1), s(content_file)),
+			O_RDONLY | O_CLOEXEC), dst_content_fd != -1);
+		TESTEQUAL(read(dst_content_fd, content_buffer, strlen(content)),
+			  strlen(content));
+		TESTEQUAL(strncmp(content, content_buffer, strlen(content)), 0);
+		TESTSYSCALL(close(dst_content_fd));
+		dst_content_fd = -1;
+	} else {
+		struct fuse_attr attr = {};
+		int backing_fd = -1;
+
+		TESTFUSEINITFLAGS(FUSE_DO_READDIRPLUS | FUSE_READDIRPLUS_AUTO);
+		// Step 1: Lookup folder1 set entry_timeout to 0 to trigger
+		// revalidate later
+		TESTFUSELOOKUP(folder1, 0);
+		TESTSYSCALL(s_fuse_attr(s_path(s(ft_src), s(folder1)), &attr));
+		TEST(backing_fd = s_open(s_path(s(ft_src), s(folder1)),
+					 O_DIRECTORY | O_RDONLY | O_CLOEXEC),
+		     backing_fd != -1);
+		TESTFUSEOUT2(fuse_entry_out, ((struct fuse_entry_out) {
+				.nodeid = attr.ino,
+				.generation = 0,
+				.entry_valid = 0,
+				.attr_valid = UINT64_MAX,
+				.entry_valid_nsec = 0,
+				.attr_valid_nsec = UINT32_MAX,
+				.attr = attr,
+			     }), fuse_entry_bpf_out, ((struct fuse_entry_bpf_out) {
+				.backing_action = FUSE_ACTION_REPLACE,
+				.backing_fd = backing_fd,
+			     }));
+		TESTSYSCALL(close(backing_fd));
+		// Step 1: Lookup folder1 as a reaction to revalidate call
+		// This attempts to change the backing node, which is not allowed on revalidate
+		TESTFUSELOOKUP(folder1, 0);
+		TESTSYSCALL(s_fuse_attr(s_path(s(ft_src), s(folder1)), &attr));
+		TEST(backing_fd = s_open(s_path(s(ft_src), s(folder1)),
+					 O_DIRECTORY | O_RDONLY | O_CLOEXEC),
+		     backing_fd != -1);
+		TESTFUSEOUT2(fuse_entry_out, ((struct fuse_entry_out) {
+				.nodeid = attr.ino,
+				.generation = 0,
+				.entry_valid = UINT64_MAX,
+				.attr_valid = UINT64_MAX,
+				.entry_valid_nsec = UINT32_MAX,
+				.attr_valid_nsec = UINT32_MAX,
+				.attr = attr,
+			     }), fuse_entry_bpf_out, ((struct fuse_entry_bpf_out) {
+				.backing_action = FUSE_ACTION_REPLACE,
+				.backing_fd = backing_fd,
+			     }));
+		TESTSYSCALL(close(backing_fd));
+
+		// Lookup folder1 as a reaction to failed revalidate
+		TESTFUSELOOKUP(folder1, 0);
+		TESTSYSCALL(s_fuse_attr(s_path(s(ft_src), s(folder1)), &attr));
+		TEST(backing_fd = s_open(s_path(s(ft_src), s(folder1)),
+					 O_DIRECTORY | O_RDONLY | O_CLOEXEC),
+		     backing_fd != -1);
+		TESTFUSEOUT2(fuse_entry_out, ((struct fuse_entry_out) {
+				.nodeid = attr.ino,
+				.generation = 0,
+				.entry_valid = UINT64_MAX,
+				.attr_valid = UINT64_MAX,
+				.entry_valid_nsec = UINT32_MAX,
+				.attr_valid_nsec = UINT32_MAX,
+				.attr = attr,
+			     }), fuse_entry_bpf_out, ((struct fuse_entry_bpf_out) {
+				.backing_action = FUSE_ACTION_REPLACE,
+				.backing_fd = backing_fd,
+			     }));
+		TESTSYSCALL(close(backing_fd));
+		exit(TEST_SUCCESS);
+	}
+	FUSE_END_DAEMON();
+	close(fuse_dev);
+	close(content_fd);
+	close(src_fd);
+	umount(mount_dir);
+	return result;
+}
+
+static int bpf_test_lookup_postfilter(const char *mount_dir)
+{
+	const char *file1_name = "file1";
+	const char *file2_name = "file2";
+	const char *file3_name = "file3";
+	int result = TEST_FAILURE;
+	int bpf_fd = -1;
+	int src_fd = -1;
+	int fuse_dev = -1;
+	int file_fd = -1;
+	FUSE_DECLARE_DAEMON;
+
+	TEST(file_fd = s_creat(s_path(s(ft_src), s(file1_name)), 0777),
+	     file_fd != -1);
+	TESTSYSCALL(close(file_fd));
+	TEST(file_fd = s_creat(s_path(s(ft_src), s(file2_name)), 0777),
+	     file_fd != -1);
+	TESTSYSCALL(close(file_fd));
+	file_fd = -1;
+	TESTEQUAL(install_elf_bpf("test_bpf.bpf", "test_lookup_postfilter",
+					  &bpf_fd, NULL, NULL), 0);
+	TEST(src_fd = open(ft_src, O_DIRECTORY | O_RDONLY | O_CLOEXEC),
+	     src_fd != -1);
+	TESTEQUAL(mount_fuse(mount_dir, bpf_fd, src_fd, &fuse_dev), 0);
+	FUSE_START_DAEMON();
+	if (action) {
+		int fd = -1;
+
+		TESTEQUAL(s_open(s_path(s(mount_dir), s(file1_name)), O_RDONLY),
+			  -1);
+		TESTEQUAL(errno, ENOENT);
+		TEST(fd = s_open(s_path(s(mount_dir), s(file2_name)), O_RDONLY),
+		     fd != -1);
+		TESTSYSCALL(close(fd));
+		TESTEQUAL(s_open(s_path(s(mount_dir), s(file3_name)), O_RDONLY),
+			  -1);
+	} else {
+		struct fuse_in_postfilter_header *in_header =
+				(struct fuse_in_postfilter_header *)bytes_in;
+		struct fuse_entry_out *feo;
+		struct fuse_entry_bpf_out *febo;
+
+		TESTFUSELOOKUP(file1_name, FUSE_POSTFILTER);
+		TESTFUSEOUTERROR(-ENOENT);
+
+		TESTFUSELOOKUP(file2_name, FUSE_POSTFILTER);
+		feo = (struct fuse_entry_out *) (bytes_in +
+			sizeof(struct fuse_in_header) +	strlen(file2_name) + 1);
+		febo = (struct fuse_entry_bpf_out *) ((char *)feo +
+			sizeof(*feo));
+		TESTFUSEOUT2(fuse_entry_out, *feo, fuse_entry_bpf_out, *febo);
+
+		TESTFUSELOOKUP(file3_name, FUSE_POSTFILTER);
+		TESTEQUAL(in_header->error_in, -ENOENT);
+		TESTFUSEOUTERROR(-ENOENT);
+		exit(TEST_SUCCESS);
+	}
+	FUSE_END_DAEMON();
+	close(file_fd);
+	close(fuse_dev);
+	umount(mount_dir);
+	close(src_fd);
+	close(bpf_fd);
+	return result;
+}
+
+static void parse_range(const char *ranges, bool *run_test, size_t tests)
+{
+	size_t i;
+	char *range;
+
+	for (i = 0; i < tests; ++i)
+		run_test[i] = false;
+
+	range = strtok(optarg, ",");
+	while (range) {
+		char *dash = strchr(range, '-');
+
+		if (dash) {
+			size_t start = 1, end = tests;
+			char *end_ptr;
+
+			if (dash > range) {
+				start = strtol(range, &end_ptr, 10);
+				if (*end_ptr != '-' || start <= 0 || start > tests)
+					ksft_exit_fail_msg("Bad range\n");
+			}
+
+			if (dash[1]) {
+				end = strtol(dash + 1, &end_ptr, 10);
+				if (*end_ptr || end <= start || end > tests)
+					ksft_exit_fail_msg("Bad range\n");
+			}
+
+			for (i = start; i <= end; ++i)
+				run_test[i - 1] = true;
+		} else {
+			char *end;
+			long value = strtol(range, &end, 10);
+
+			if (*end || value <= 0 || value > tests)
+				ksft_exit_fail_msg("Bad range\n");
+			run_test[value - 1] = true;
+		}
+		range = strtok(NULL, ",");
+	}
+}
+
+static int parse_options(int argc, char *const *argv, bool *run_test,
+			 size_t tests)
+{
+	signed char c;
+
+	while ((c = getopt(argc, argv, "f:t:v")) != -1)
+		switch (c) {
+		case 'f':
+			test_options.file = strtol(optarg, NULL, 10);
+			break;
+
+		case 't':
+			parse_range(optarg, run_test, tests);
+			break;
+
+		case 'v':
+			test_options.verbose = true;
+			break;
+
+		default:
+			return -EINVAL;
+		}
+
+	return 0;
+}
+
+struct test_case {
+	int (*pfunc)(const char *dir);
+	const char *name;
+};
+
+static void run_one_test(const char *mount_dir,
+			 const struct test_case *test_case)
+{
+	ksft_print_msg("Running %s\n", test_case->name);
+	if (test_case->pfunc(mount_dir) == TEST_SUCCESS)
+		ksft_test_result_pass("%s\n", test_case->name);
+	else
+		ksft_test_result_fail("%s\n", test_case->name);
+}
+
+int main(int argc, char *argv[])
+{
+	char *mount_dir = NULL;
+	char *src_dir = NULL;
+	int i;
+	int fd, count;
+
+#define MAKE_TEST(test)                                                        \
+	{                                                                      \
+		test, #test                                                    \
+	}
+	const struct test_case cases[] = {
+		MAKE_TEST(basic_test),
+		MAKE_TEST(bpf_test_real),
+		MAKE_TEST(bpf_test_partial),
+		MAKE_TEST(bpf_test_attrs),
+		MAKE_TEST(bpf_test_readdir),
+		MAKE_TEST(bpf_test_creat),
+		MAKE_TEST(bpf_test_hidden_entries),
+		MAKE_TEST(bpf_test_dir),
+		MAKE_TEST(bpf_test_file_early_close),
+		MAKE_TEST(bpf_test_file_late_close),
+		MAKE_TEST(bpf_test_mknod),
+		MAKE_TEST(bpf_test_largedir),
+		MAKE_TEST(bpf_test_link),
+		MAKE_TEST(bpf_test_symlink),
+		MAKE_TEST(bpf_test_xattr),
+		MAKE_TEST(bpf_test_redact_readdir),
+		MAKE_TEST(bpf_test_set_backing),
+		MAKE_TEST(bpf_test_remove_backing),
+		MAKE_TEST(bpf_test_dir_rename),
+		MAKE_TEST(bpf_test_file_rename),
+		MAKE_TEST(bpf_test_alter_errcode_bpf),
+		MAKE_TEST(bpf_test_alter_errcode_userspace),
+		MAKE_TEST(mmap_test),
+		MAKE_TEST(readdir_perms_test),
+		MAKE_TEST(inotify_test),
+		MAKE_TEST(bpf_test_statfs),
+		MAKE_TEST(bpf_test_lseek),
+		MAKE_TEST(bpf_test_readdirplus_not_overriding_backing),
+		MAKE_TEST(bpf_test_no_readdirplus_without_nodeid),
+		MAKE_TEST(bpf_test_revalidate_handle_backing_fd),
+		MAKE_TEST(bpf_test_lookup_postfilter),
+	};
+#undef MAKE_TEST
+
+	bool run_test[ARRAY_SIZE(cases)];
+
+	for (int i = 0; i < ARRAY_SIZE(cases); ++i)
+		run_test[i] = true;
+
+	if (parse_options(argc, argv, run_test, ARRAY_SIZE(cases)))
+		ksft_exit_fail_msg("Bad options\n");
+
+	// Seed randomness pool for testing on QEMU
+	// NOTE - this abuses the concept of randomness - do *not* ever do this
+	// on a machine for production use - the device will think it has good
+	// randomness when it does not.
+	fd = open("/dev/urandom", O_WRONLY | O_CLOEXEC);
+	count = 4096;
+	for (int i = 0; i < 128; ++i)
+		ioctl(fd, RNDADDTOENTCNT, &count);
+	close(fd);
+
+	ksft_print_header();
+
+	if (geteuid() != 0)
+		ksft_print_msg("Not a root, might fail to mount.\n");
+
+	if (tracing_on() != TEST_SUCCESS)
+		ksft_exit_fail_msg("Can't turn on tracing\n");
+
+	src_dir = setup_mount_dir(ft_src);
+	mount_dir = setup_mount_dir(ft_dst);
+	if (src_dir == NULL || mount_dir == NULL)
+		ksft_exit_fail_msg("Can't create a mount dir\n");
+
+	ksft_set_plan(ARRAY_SIZE(run_test));
+
+	for (i = 0; i < ARRAY_SIZE(run_test); ++i)
+		if (run_test[i]) {
+			delete_dir_tree(mount_dir, false);
+			delete_dir_tree(src_dir, false);
+			run_one_test(mount_dir, &cases[i]);
+		} else
+			ksft_cnt.ksft_xskip++;
+
+	umount2(mount_dir, MNT_FORCE);
+	delete_dir_tree(mount_dir, true);
+	delete_dir_tree(src_dir, true);
+	return !ksft_get_fail_cnt() ? ksft_exit_pass() : ksft_exit_fail();
+}
diff --git a/tools/testing/selftests/filesystems/fuse/test_bpf.c b/tools/testing/selftests/filesystems/fuse/test_bpf.c
new file mode 100644
index 0000000..032cb11
--- /dev/null
+++ b/tools/testing/selftests/filesystems/fuse/test_bpf.c
@@ -0,0 +1,507 @@
+// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
+// Copyright (c) 2022 Google LLC
+
+#include "test_fuse_bpf.h"
+
+SEC("test_readdir_redact")
+/* return FUSE_BPF_BACKING to use backing fs, 0 to pass to usermode */
+int readdir_test(struct fuse_bpf_args *fa)
+{
+	switch (fa->opcode) {
+	case FUSE_READDIR | FUSE_PREFILTER: {
+		const struct fuse_read_in *fri = fa->in_args[0].value;
+
+		bpf_printk("readdir %d", fri->fh);
+		return FUSE_BPF_BACKING | FUSE_BPF_POST_FILTER;
+	}
+
+	case FUSE_READDIR | FUSE_POSTFILTER: {
+		const struct fuse_read_in *fri = fa->in_args[0].value;
+
+		bpf_printk("readdir postfilter %x", fri->fh);
+		return FUSE_BPF_USER_FILTER;
+	}
+
+	default:
+		bpf_printk("opcode %d", fa->opcode);
+		return FUSE_BPF_BACKING;
+	}
+}
+
+SEC("test_trace")
+/* return FUSE_BPF_BACKING to use backing fs, 0 to pass to usermode */
+int trace_test(struct fuse_bpf_args *fa)
+{
+	switch (fa->opcode) {
+	case FUSE_LOOKUP | FUSE_PREFILTER: {
+		/* real and partial use backing file */
+		const char *name = fa->in_args[0].value;
+		bool backing = false;
+
+		if (strcmp(name, "real") == 0 || strcmp(name, "partial") == 0)
+			backing = true;
+
+		if (strcmp(name, "dir") == 0)
+			backing = true;
+		if (strcmp(name, "dir2") == 0)
+			backing = true;
+
+		if (strcmp(name, "file1") == 0)
+			backing = true;
+		if (strcmp(name, "file2") == 0)
+			backing = true;
+
+		bpf_printk("lookup %s %d", name, backing);
+		return backing ? FUSE_BPF_BACKING | FUSE_BPF_POST_FILTER : 0;
+	}
+
+	case FUSE_LOOKUP | FUSE_POSTFILTER: {
+		const char *name = fa->in_args[0].value;
+		struct fuse_entry_out *feo = fa->out_args[0].value;
+
+		if (strcmp(name, "real") == 0)
+			feo->nodeid = 5;
+		else if (strcmp(name, "partial") == 0)
+			feo->nodeid = 6;
+
+		bpf_printk("post-lookup %s %d", name, feo->nodeid);
+		return 0;
+	}
+
+	case FUSE_ACCESS | FUSE_PREFILTER: {
+		bpf_printk("Access: %d", fa->nodeid);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_CREATE | FUSE_PREFILTER:
+		bpf_printk("Create: %d", fa->nodeid);
+		return FUSE_BPF_BACKING;
+
+	case FUSE_MKNOD | FUSE_PREFILTER: {
+		const struct fuse_mknod_in *fmi = fa->in_args[0].value;
+		const char *name = fa->in_args[1].value;
+
+		bpf_printk("mknod %s %x %x", name, fmi->rdev | fmi->mode, fmi->umask);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_MKDIR | FUSE_PREFILTER: {
+		const struct fuse_mkdir_in *fmi = fa->in_args[0].value;
+		const char *name = fa->in_args[1].value;
+
+		bpf_printk("mkdir %s %x %x", name, fmi->mode, fmi->umask);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_RMDIR | FUSE_PREFILTER: {
+		const char *name = fa->in_args[0].value;
+
+		bpf_printk("rmdir %s", name);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_RENAME | FUSE_PREFILTER: {
+		const char *oldname = fa->in_args[1].value;
+		const char *newname = fa->in_args[2].value;
+
+		bpf_printk("rename from %s", oldname);
+		bpf_printk("rename to %s", newname);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_RENAME2 | FUSE_PREFILTER: {
+		const struct fuse_rename2_in *fri = fa->in_args[0].value;
+		uint32_t flags = fri->flags;
+		const char *oldname = fa->in_args[1].value;
+		const char *newname = fa->in_args[2].value;
+
+		bpf_printk("rename(%x) from %s", flags, oldname);
+		bpf_printk("rename to %s", newname);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_UNLINK | FUSE_PREFILTER: {
+		const char *name = fa->in_args[0].value;
+
+		bpf_printk("unlink %s", name);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_LINK | FUSE_PREFILTER: {
+		const struct fuse_link_in *fli = fa->in_args[0].value;
+		const char *link_name = fa->in_args[1].value;
+
+		bpf_printk("link %d %s", fli->oldnodeid, link_name);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_SYMLINK | FUSE_PREFILTER: {
+		const char *link_name = fa->in_args[0].value;
+		const char *link_dest = fa->in_args[1].value;
+
+		bpf_printk("symlink from %s", link_name);
+		bpf_printk("symlink to %s", link_dest);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_READLINK | FUSE_PREFILTER: {
+		const char *link_name = fa->in_args[0].value;
+
+		bpf_printk("readlink from", link_name);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_OPEN | FUSE_PREFILTER: {
+		int backing = 0;
+
+		switch (fa->nodeid) {
+		case 5:
+			backing = FUSE_BPF_BACKING;
+			break;
+
+		case 6:
+			backing = FUSE_BPF_BACKING | FUSE_BPF_POST_FILTER;
+			break;
+
+		default:
+			break;
+		}
+
+		bpf_printk("open %d %d", fa->nodeid, backing);
+		return backing;
+	}
+
+	case FUSE_OPEN | FUSE_POSTFILTER:
+		bpf_printk("open postfilter");
+		return FUSE_BPF_USER_FILTER;
+
+	case FUSE_READ | FUSE_PREFILTER: {
+		const struct fuse_read_in *fri = fa->in_args[0].value;
+
+		bpf_printk("read %llu %llu", fri->fh, fri->offset);
+		if (fri->fh == 1 && fri->offset == 0)
+			return 0;
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_GETATTR | FUSE_PREFILTER: {
+		/* real and partial use backing file */
+		int backing = 0;
+
+		switch (fa->nodeid) {
+		case 1:
+		case 5:
+		case 6:
+		/*
+		 * TODO: Find better solution
+		 * Add 100 to stop clang compiling to jump table which bpf hates
+		 */
+		case 100:
+			backing = FUSE_BPF_BACKING;
+			break;
+		}
+
+		bpf_printk("getattr %d %d", fa->nodeid, backing);
+		return backing;
+	}
+
+	case FUSE_SETATTR | FUSE_PREFILTER: {
+		/* real and partial use backing file */
+		int backing = 0;
+
+		switch (fa->nodeid) {
+		case 1:
+		case 5:
+		case 6:
+		/* TODO See above */
+		case 100:
+			backing = FUSE_BPF_BACKING;
+			break;
+		}
+
+		bpf_printk("setattr %d %d", fa->nodeid, backing);
+		return backing;
+	}
+
+	case FUSE_OPENDIR | FUSE_PREFILTER: {
+		int backing = 0;
+
+		switch (fa->nodeid) {
+		case 1:
+			backing = FUSE_BPF_BACKING | FUSE_BPF_POST_FILTER;
+			break;
+		}
+
+		bpf_printk("opendir %d %d", fa->nodeid, backing);
+		return backing;
+	}
+
+	case FUSE_OPENDIR | FUSE_POSTFILTER: {
+		struct fuse_open_out *foo = fa->out_args[0].value;
+
+		foo->fh = 2;
+		bpf_printk("opendir postfilter");
+		return 0;
+	}
+
+	case FUSE_READDIR | FUSE_PREFILTER: {
+		const struct fuse_read_in *fri = fa->in_args[0].value;
+		int backing = 0;
+
+		if (fri->fh == 2)
+			backing = FUSE_BPF_BACKING | FUSE_BPF_POST_FILTER;
+
+		bpf_printk("readdir %d %d", fri->fh, backing);
+		return backing;
+	}
+
+	case FUSE_READDIR | FUSE_POSTFILTER: {
+		const struct fuse_read_in *fri = fa->in_args[0].value;
+		int backing = 0;
+
+		if (fri->fh == 2)
+			backing = FUSE_BPF_USER_FILTER | FUSE_BPF_BACKING |
+				  FUSE_BPF_POST_FILTER;
+
+		bpf_printk("readdir postfilter %d %d", fri->fh, backing);
+		return backing;
+	}
+
+	case FUSE_FLUSH | FUSE_PREFILTER: {
+		const struct fuse_flush_in *ffi = fa->in_args[0].value;
+
+		bpf_printk("Flush %d", ffi->fh);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_GETXATTR | FUSE_PREFILTER: {
+		const struct fuse_flush_in *ffi = fa->in_args[0].value;
+		const char *name = fa->in_args[1].value;
+
+		bpf_printk("getxattr %d %s", ffi->fh, name);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_LISTXATTR | FUSE_PREFILTER: {
+		const struct fuse_flush_in *ffi = fa->in_args[0].value;
+		const char *name = fa->in_args[1].value;
+
+		bpf_printk("listxattr %d %s", ffi->fh, name);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_SETXATTR | FUSE_PREFILTER: {
+		const struct fuse_flush_in *ffi = fa->in_args[0].value;
+		const char *name = fa->in_args[1].value;
+		unsigned int size = fa->in_args[2].size;
+
+		bpf_printk("setxattr %d %s %u", ffi->fh, name, size);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_REMOVEXATTR | FUSE_PREFILTER: {
+		const char *name = fa->in_args[0].value;
+
+		bpf_printk("removexattr %s", name);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_CANONICAL_PATH | FUSE_PREFILTER: {
+		bpf_printk("canonical_path");
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_STATFS | FUSE_PREFILTER: {
+		bpf_printk("statfs");
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_LSEEK | FUSE_PREFILTER: {
+		const struct fuse_lseek_in *fli = fa->in_args[0].value;
+
+		bpf_printk("lseek type:%d, offset:%lld", fli->whence, fli->offset);
+		return FUSE_BPF_BACKING;
+	}
+
+	default:
+		bpf_printk("Unknown opcode %d", fa->opcode);
+		return 0;
+	}
+}
+
+SEC("test_hidden")
+int trace_hidden(struct fuse_bpf_args *fa)
+{
+	switch (fa->opcode) {
+	case FUSE_LOOKUP | FUSE_PREFILTER: {
+		const char *name = fa->in_args[0].value;
+
+		bpf_printk("Lookup: %s", name);
+		if (!strcmp(name, "show"))
+			return FUSE_BPF_BACKING;
+		if (!strcmp(name, "hide"))
+			return -ENOENT;
+
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_ACCESS | FUSE_PREFILTER: {
+		bpf_printk("Access: %d", fa->nodeid);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_CREATE | FUSE_PREFILTER:
+		bpf_printk("Create: %d", fa->nodeid);
+		return FUSE_BPF_BACKING;
+
+	case FUSE_WRITE | FUSE_PREFILTER:
+	// TODO: Clang combines similar printk calls, causing BPF to complain
+	//	bpf_printk("Write: %d", fa->nodeid);
+		return FUSE_BPF_BACKING;
+
+	case FUSE_FLUSH | FUSE_PREFILTER: {
+	//	const struct fuse_flush_in *ffi = fa->in_args[0].value;
+
+	//	bpf_printk("Flush %d", ffi->fh);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_RELEASE | FUSE_PREFILTER: {
+	//	const struct fuse_release_in *fri = fa->in_args[0].value;
+
+	//	bpf_printk("Release %d", fri->fh);
+		return FUSE_BPF_BACKING;
+	}
+
+	case FUSE_FALLOCATE | FUSE_PREFILTER:
+	//	bpf_printk("fallocate %d", fa->nodeid);
+		return FUSE_BPF_BACKING;
+
+	case FUSE_CANONICAL_PATH | FUSE_PREFILTER: {
+		return FUSE_BPF_BACKING;
+	}
+	default:
+		bpf_printk("Unknown opcode: %d", fa->opcode);
+		return 0;
+	}
+}
+
+SEC("test_simple")
+int trace_simple(struct fuse_bpf_args *fa)
+{
+	if (fa->opcode & FUSE_PREFILTER)
+		bpf_printk("prefilter opcode: %d",
+			   fa->opcode & FUSE_OPCODE_FILTER);
+	else if (fa->opcode & FUSE_POSTFILTER)
+		bpf_printk("postfilter opcode: %d",
+			   fa->opcode & FUSE_OPCODE_FILTER);
+	else
+		bpf_printk("*** UNKNOWN *** opcode: %d", fa->opcode);
+	return FUSE_BPF_BACKING;
+}
+
+SEC("test_passthrough")
+int trace_daemon(struct fuse_bpf_args *fa)
+{
+	switch (fa->opcode) {
+	case FUSE_LOOKUP | FUSE_PREFILTER: {
+		const char *name = fa->in_args[0].value;
+
+		bpf_printk("Lookup prefilter: %lx %s", fa->nodeid, name);
+		return FUSE_BPF_BACKING | FUSE_BPF_POST_FILTER;
+	}
+
+	case FUSE_LOOKUP | FUSE_POSTFILTER: {
+		const char *name = fa->in_args[0].value;
+		struct fuse_entry_bpf_out *febo = fa->out_args[1].value;
+
+		bpf_printk("Lookup postfilter: %lx %s %lu", fa->nodeid, name);
+		febo->bpf_action = FUSE_ACTION_REMOVE;
+
+		return FUSE_BPF_USER_FILTER;
+	}
+
+	default:
+		if (fa->opcode & FUSE_PREFILTER)
+			bpf_printk("prefilter opcode: %d",
+				   fa->opcode & FUSE_OPCODE_FILTER);
+		else if (fa->opcode & FUSE_POSTFILTER)
+			bpf_printk("postfilter opcode: %d",
+				   fa->opcode & FUSE_OPCODE_FILTER);
+		else
+			bpf_printk("*** UNKNOWN *** opcode: %d", fa->opcode);
+		return FUSE_BPF_BACKING;
+	}
+}
+
+SEC("test_error")
+/* return FUSE_BPF_BACKING to use backing fs, 0 to pass to usermode */
+int error_test(struct fuse_bpf_args *fa)
+{
+	switch (fa->opcode) {
+	case FUSE_MKDIR | FUSE_PREFILTER: {
+		bpf_printk("mkdir");
+		return FUSE_BPF_BACKING | FUSE_BPF_POST_FILTER;
+	}
+	case FUSE_MKDIR | FUSE_POSTFILTER: {
+		bpf_printk("mkdir postfilter");
+		if (fa->error_in == -EEXIST)
+			return -EPERM;
+
+		return 0;
+	}
+
+	case FUSE_LOOKUP | FUSE_PREFILTER: {
+		const char *name = fa->in_args[0].value;
+
+		bpf_printk("lookup prefilter %s", name);
+		return FUSE_BPF_BACKING | FUSE_BPF_POST_FILTER;
+	}
+	case FUSE_LOOKUP | FUSE_POSTFILTER: {
+		const char *name = fa->in_args[0].value;
+
+		bpf_printk("lookup postfilter %s %d", name, fa->error_in);
+		if (strcmp(name, "doesnotexist") == 0/* && fa->error_in == -EEXIST*/) {
+			bpf_printk("lookup postfilter doesnotexist");
+			return FUSE_BPF_USER_FILTER;
+		}
+		bpf_printk("meh");
+		return 0;
+	}
+
+	default:
+		if (fa->opcode & FUSE_PREFILTER)
+			bpf_printk("prefilter opcode: %d",
+				   fa->opcode & FUSE_OPCODE_FILTER);
+		else if (fa->opcode & FUSE_POSTFILTER)
+			bpf_printk("postfilter opcode: %d",
+				   fa->opcode & FUSE_OPCODE_FILTER);
+		else
+			bpf_printk("*** UNKNOWN *** opcode: %d", fa->opcode);
+		return FUSE_BPF_BACKING;
+	}
+}
+
+SEC("test_readdirplus")
+int readdirplus_test(struct fuse_bpf_args *fa)
+{
+	switch (fa->opcode) {
+	case FUSE_READDIR | FUSE_PREFILTER: {
+		return 0;
+	}
+	}
+	return FUSE_BPF_BACKING;
+}
+
+SEC("test_lookup_postfilter")
+int lookuppostfilter_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:
+		return FUSE_BPF_USER_FILTER;
+	default:
+		return FUSE_BPF_BACKING;
+	}
+}
diff --git a/tools/testing/selftests/filesystems/fuse/test_framework.h b/tools/testing/selftests/filesystems/fuse/test_framework.h
new file mode 100644
index 0000000..efc6f53
--- /dev/null
+++ b/tools/testing/selftests/filesystems/fuse/test_framework.h
@@ -0,0 +1,179 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright (c) 2021 Google LLC
+ */
+
+#ifndef _TEST_FRAMEWORK_H
+#define _TEST_FRAMEWORK_H
+
+#include <stdbool.h>
+#include <stdio.h>
+#include <linux/compiler.h>
+
+#ifdef __ANDROID__
+static int test_case_pass;
+static int test_case_fail;
+#define ksft_print_msg			printf
+#define ksft_test_result_pass(...)	({test_case_pass++; printf(__VA_ARGS__); })
+#define ksft_test_result_fail(...)	({test_case_fail++; printf(__VA_ARGS__); })
+#define ksft_exit_fail_msg(...)		printf(__VA_ARGS__)
+#define ksft_print_header()
+#define ksft_set_plan(cnt)
+#define ksft_get_fail_cnt()		test_case_fail
+#define ksft_exit_pass()		0
+#define ksft_exit_fail()		1
+#else
+#include <kselftest.h>
+#endif
+
+#define TEST_FAILURE 1
+#define TEST_SUCCESS 0
+
+#define ptr_to_u64(p) ((__u64)p)
+
+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
+#define le16_to_cpu(x)          (x)
+#define le32_to_cpu(x)          (x)
+#define le64_to_cpu(x)          (x)
+#else
+#error Big endian not supported!
+#endif
+
+struct _test_options {
+	int file;
+	bool verbose;
+};
+
+extern struct _test_options test_options;
+
+#define TESTCOND(condition)						\
+	do {								\
+		if (!(condition)) {					\
+			ksft_print_msg("%s failed %d\n",		\
+				       __func__, __LINE__);		\
+			goto out;					\
+		} else if (test_options.verbose)			\
+			ksft_print_msg("%s succeeded %d\n",		\
+				       __func__, __LINE__);		\
+	} while (false)
+
+#define TESTCONDERR(condition)						\
+	do {								\
+		if (!(condition)) {					\
+			ksft_print_msg("%s failed %d\n",		\
+				       __func__, __LINE__);		\
+			ksft_print_msg("Error %d (\"%s\")\n",		\
+				       errno, strerror(errno));		\
+			goto out;					\
+		} else if (test_options.verbose)			\
+			ksft_print_msg("%s succeeded %d\n",		\
+				       __func__, __LINE__);		\
+	} while (false)
+
+#define TEST(statement, condition)					\
+	do {								\
+		statement;						\
+		TESTCOND(condition);					\
+	} while (false)
+
+#define TESTERR(statement, condition)					\
+	do {								\
+		statement;						\
+		TESTCONDERR(condition);					\
+	} while (false)
+
+enum _operator {
+	_eq,
+	_ne,
+	_ge,
+};
+
+static const char * const _operator_name[] = {
+	"==",
+	"!=",
+	">=",
+};
+
+#define _TEST_OPERATOR(name, _type, format_specifier)			\
+static inline int _test_operator_##name(const char *func, int line,	\
+				_type a, _type b, enum _operator o)	\
+{									\
+	bool pass;							\
+	switch (o) {							\
+	case _eq:							\
+		pass = a == b;						\
+		break;							\
+	case _ne:							\
+		pass = a != b;						\
+		break;							\
+	case _ge:							\
+		pass = a >= b;						\
+		break;							\
+	}								\
+									\
+	if (!pass)							\
+		ksft_print_msg("Failed: %s at line %d, "		\
+			       format_specifier " %s "			\
+			       format_specifier	"\n",			\
+			       func, line, a, _operator_name[o], b);	\
+	else if (test_options.verbose)					\
+		ksft_print_msg("Passed: %s at line %d, "		\
+			       format_specifier " %s "			\
+			       format_specifier "\n",			\
+			       func, line, a, _operator_name[o], b);	\
+									\
+	return pass ? TEST_SUCCESS : TEST_FAILURE;			\
+}
+
+_TEST_OPERATOR(i, int, "%d")
+_TEST_OPERATOR(ui, unsigned int, "%u")
+_TEST_OPERATOR(lui, unsigned long, "%lu")
+_TEST_OPERATOR(ss, ssize_t, "%zd")
+_TEST_OPERATOR(vp, void *, "%px")
+_TEST_OPERATOR(cp, char *, "%px")
+
+#define _CALL_TO(_type, name, a, b, o)					\
+	_test_operator_##name(__func__, __LINE__,			\
+				  (_type) (long long) (a),		\
+				  (_type) (long long) (b), o)
+
+#define TESTOPERATOR(a, b, o)						\
+	do {								\
+		if (_Generic((a),					\
+			int : _CALL_TO(int, i, a, b, o),		\
+			unsigned int : _CALL_TO(unsigned int, ui, a, b, o),	\
+			unsigned long : _CALL_TO(unsigned long, lui, a, b, o),	\
+			ssize_t : _CALL_TO(ssize_t, ss, a, b, o),		\
+			void * : _CALL_TO(void *, vp, a, b, o),		\
+			char * : _CALL_TO(char *, cp, a, b, o)		\
+		))							\
+			goto out;					\
+	} while (false)
+
+#define TESTEQUAL(a, b) TESTOPERATOR(a, b, _eq)
+#define TESTNE(a, b) TESTOPERATOR(a, b, _ne)
+#define TESTGE(a, b) TESTOPERATOR(a, b, _ge)
+
+/* For testing a syscall that returns 0 on success and sets errno otherwise */
+#define TESTSYSCALL(statement) TESTCONDERR((statement) == 0)
+
+static inline void print_bytes(const void *data, size_t size)
+{
+	const char *bytes = data;
+	int i;
+
+	for (i = 0; i < size; ++i) {
+		if (i % 0x10 == 0)
+			printf("%08x:", i);
+		printf("%02x ", (unsigned int) (unsigned char) bytes[i]);
+		if (i % 0x10 == 0x0f)
+			printf("\n");
+	}
+
+	if (i % 0x10 != 0)
+		printf("\n");
+}
+
+
+
+#endif
diff --git a/tools/testing/selftests/filesystems/fuse/test_fuse.h b/tools/testing/selftests/filesystems/fuse/test_fuse.h
new file mode 100644
index 0000000..69dadc9
--- /dev/null
+++ b/tools/testing/selftests/filesystems/fuse/test_fuse.h
@@ -0,0 +1,337 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright (c) 2021 Google LLC
+ */
+
+#ifndef TEST_FUSE__H
+#define TEST_FUSE__H
+
+#define _GNU_SOURCE
+
+#include "test_framework.h"
+
+#include <dirent.h>
+#include <sys/stat.h>
+#include <sys/statfs.h>
+#include <sys/types.h>
+
+#include <include/uapi/linux/android_fuse.h>
+#include <include/uapi/linux/fuse.h>
+
+#define PAGE_SIZE 4096
+#define FUSE_POSTFILTER 0x20000
+
+extern struct _test_options test_options;
+
+/* Slow but semantically easy string functions */
+
+/*
+ * struct s just wraps a char pointer
+ * It is a pointer to a malloc'd string, or null
+ * All consumers handle null input correctly
+ * All consumers free the string
+ */
+struct s {
+	char *s;
+};
+
+struct s s(const char *s1);
+struct s sn(const char *s1, const char *s2);
+int s_cmp(struct s s1, struct s s2);
+struct s s_cat(struct s s1, struct s s2);
+struct s s_splitleft(struct s s1, char c);
+struct s s_splitright(struct s s1, char c);
+struct s s_word(struct s s1, char c, size_t n);
+struct s s_path(struct s s1, struct s s2);
+struct s s_pathn(size_t n, struct s s1, ...);
+int s_link(struct s src_pathname, struct s dst_pathname);
+int s_symlink(struct s src_pathname, struct s dst_pathname);
+int s_mkdir(struct s pathname, mode_t mode);
+int s_rmdir(struct s pathname);
+int s_unlink(struct s pathname);
+int s_open(struct s pathname, int flags, ...);
+int s_openat(int dirfd, struct s pathname, int flags, ...);
+int s_creat(struct s pathname, mode_t mode);
+int s_mkfifo(struct s pathname, mode_t mode);
+int s_stat(struct s pathname, struct stat *st);
+int s_statfs(struct s pathname, struct statfs *st);
+int s_fuse_attr(struct s pathname, struct fuse_attr *fuse_attr_out);
+DIR *s_opendir(struct s pathname);
+int s_getxattr(struct s pathname, const char name[], void *value, size_t size,
+	       ssize_t *ret_size);
+int s_listxattr(struct s pathname, void *list, size_t size, ssize_t *ret_size);
+int s_setxattr(struct s pathname, const char name[], const void *value,
+	       size_t size, int flags);
+int s_removexattr(struct s pathname, const char name[]);
+int s_rename(struct s oldpathname, struct s newpathname);
+
+struct s tracing_folder(void);
+int tracing_on(void);
+
+char *concat_file_name(const char *dir, const char *file);
+char *setup_mount_dir(const char *name);
+int delete_dir_tree(const char *dir_path, bool remove_root);
+
+#define TESTFUSEINNULL(_opcode)						\
+	do {								\
+		struct fuse_in_header *in_header =			\
+				(struct fuse_in_header *)bytes_in;	\
+		ssize_t res = read(fuse_dev, &bytes_in,			\
+			sizeof(bytes_in));				\
+									\
+		TESTEQUAL(in_header->opcode, _opcode);			\
+		TESTEQUAL(res, sizeof(*in_header));			\
+	} while (false)
+
+#define TESTFUSEIN(_opcode, in_struct)					\
+	do {								\
+		struct fuse_in_header *in_header =			\
+				(struct fuse_in_header *)bytes_in;	\
+		ssize_t res = read(fuse_dev, &bytes_in,			\
+			sizeof(bytes_in));				\
+									\
+		TESTEQUAL(in_header->opcode, _opcode);			\
+		TESTEQUAL(res, sizeof(*in_header) + sizeof(*in_struct));\
+	} while (false)
+
+#define TESTFUSEIN2(_opcode, in_struct1, in_struct2)			\
+	do {								\
+		struct fuse_in_header *in_header =			\
+				(struct fuse_in_header *)bytes_in;	\
+		ssize_t res = read(fuse_dev, &bytes_in,			\
+			sizeof(bytes_in));				\
+									\
+		TESTEQUAL(in_header->opcode, _opcode);			\
+		TESTEQUAL(res, sizeof(*in_header) + sizeof(*in_struct1) \
+						+ sizeof(*in_struct2)); \
+		in_struct1 = (void *)(bytes_in + sizeof(*in_header));	\
+		in_struct2 = (void *)(bytes_in + sizeof(*in_header)	\
+				      + sizeof(*in_struct1));		\
+	} while (false)
+
+#define TESTFUSEINEXT(_opcode, in_struct, extra)			\
+	do {								\
+		struct fuse_in_header *in_header =			\
+				(struct fuse_in_header *)bytes_in;	\
+		ssize_t res = read(fuse_dev, &bytes_in,			\
+			sizeof(bytes_in));				\
+									\
+		TESTEQUAL(in_header->opcode, _opcode);			\
+		TESTEQUAL(res,						\
+		       sizeof(*in_header) + sizeof(*in_struct) + extra);\
+	} while (false)
+
+#define TESTFUSEINUNKNOWN()						\
+	do {								\
+		struct fuse_in_header *in_header =			\
+				(struct fuse_in_header *)bytes_in;	\
+		ssize_t res = read(fuse_dev, &bytes_in,			\
+			sizeof(bytes_in));				\
+									\
+		TESTGE(res, sizeof(*in_header));			\
+		TESTEQUAL(in_header->opcode, -1);			\
+	} while (false)
+
+/* Special case lookup since it is asymmetric */
+#define TESTFUSELOOKUP(expected, filter)				\
+	do {								\
+		struct fuse_in_header *in_header =			\
+				(struct fuse_in_header *)bytes_in;	\
+		char *name = (char *) (bytes_in + sizeof(*in_header));	\
+		ssize_t res;						\
+									\
+		TEST(res = read(fuse_dev, &bytes_in, sizeof(bytes_in)),	\
+			  res != -1);					\
+		/* TODO once we handle forgets properly, remove */	\
+		if (in_header->opcode == FUSE_FORGET)			\
+			continue;					\
+		if (in_header->opcode == FUSE_BATCH_FORGET)		\
+			continue;					\
+		TESTGE(res, sizeof(*in_header));			\
+		TESTEQUAL(in_header->opcode,				\
+			FUSE_LOOKUP | filter);				\
+		TESTEQUAL(res,						\
+			  sizeof(*in_header) + strlen(expected) + 1 +	\
+				(filter == FUSE_POSTFILTER ?		\
+				sizeof(struct fuse_entry_out) +		\
+				sizeof(struct fuse_entry_bpf_out) : 0));\
+		TESTCOND(!strcmp(name, expected));			\
+		break;							\
+	} while (true)
+
+#define TESTFUSEOUTEMPTY()						\
+	do {								\
+		struct fuse_in_header *in_header =			\
+				(struct fuse_in_header *)bytes_in;	\
+		struct fuse_out_header *out_header =			\
+			(struct fuse_out_header *)bytes_out;		\
+									\
+		*out_header = (struct fuse_out_header) {		\
+			.len = sizeof(*out_header),			\
+			.unique = in_header->unique,			\
+		};							\
+		TESTEQUAL(write(fuse_dev, bytes_out, out_header->len),	\
+			  out_header->len);				\
+	} while (false)
+
+#define TESTFUSEOUTERROR(errno)						\
+	do {								\
+		struct fuse_in_header *in_header =			\
+				(struct fuse_in_header *)bytes_in;	\
+		struct fuse_out_header *out_header =			\
+			(struct fuse_out_header *)bytes_out;		\
+									\
+		*out_header = (struct fuse_out_header) {		\
+			.len = sizeof(*out_header),			\
+			.error = errno,					\
+			.unique = in_header->unique,			\
+		};							\
+		TESTEQUAL(write(fuse_dev, bytes_out, out_header->len),	\
+			  out_header->len);				\
+	} while (false)
+
+#define TESTFUSEOUTREAD(data, length)					\
+	do {								\
+		struct fuse_in_header *in_header =			\
+				(struct fuse_in_header *)bytes_in;	\
+		struct fuse_out_header *out_header =			\
+			(struct fuse_out_header *)bytes_out;		\
+									\
+		*out_header = (struct fuse_out_header) {		\
+			.len = sizeof(*out_header) + length,		\
+			.unique = in_header->unique,			\
+		};							\
+		memcpy(bytes_out + sizeof(*out_header), data, length);	\
+		TESTEQUAL(write(fuse_dev, bytes_out, out_header->len),	\
+			  out_header->len);				\
+	} while (false)
+
+#define TESTFUSEDIROUTREAD(read_out, data, length)			\
+	do {								\
+		struct fuse_in_header *in_header =			\
+				(struct fuse_in_header *)bytes_in;	\
+		struct fuse_out_header *out_header =			\
+			(struct fuse_out_header *)bytes_out;		\
+									\
+		*out_header = (struct fuse_out_header) {		\
+			.len = sizeof(*out_header) +			\
+			       sizeof(*read_out) + length,		\
+			.unique = in_header->unique,			\
+		};							\
+		memcpy(bytes_out + sizeof(*out_header) +		\
+				sizeof(*read_out), data, length);	\
+		memcpy(bytes_out + sizeof(*out_header),			\
+				read_out, sizeof(*read_out));		\
+		TESTEQUAL(write(fuse_dev, bytes_out, out_header->len),	\
+			  out_header->len);				\
+	} while (false)
+
+#define TESTFUSEOUT1(type1, obj1)					\
+	do {								\
+		*(struct fuse_out_header *) bytes_out			\
+			= (struct fuse_out_header) {			\
+			.len = sizeof(struct fuse_out_header)		\
+				+ sizeof(struct type1),			\
+			.unique = ((struct fuse_in_header *)		\
+				   bytes_in)->unique,			\
+		};							\
+		*(struct type1 *) (bytes_out				\
+			+ sizeof(struct fuse_out_header))		\
+			= obj1;						\
+		TESTEQUAL(write(fuse_dev, bytes_out,			\
+			((struct fuse_out_header *)bytes_out)->len),	\
+			((struct fuse_out_header *)bytes_out)->len);	\
+	} while (false)
+
+#define TESTFUSEOUT2(type1, obj1, type2, obj2)				\
+	do {								\
+		*(struct fuse_out_header *) bytes_out			\
+			= (struct fuse_out_header) {			\
+			.len = sizeof(struct fuse_out_header)		\
+				+ sizeof(struct type1)			\
+				+ sizeof(struct type2),			\
+			.unique = ((struct fuse_in_header *)		\
+				   bytes_in)->unique,			\
+		};							\
+		*(struct type1 *) (bytes_out				\
+			+ sizeof(struct fuse_out_header))		\
+			= obj1;						\
+		*(struct type2 *) (bytes_out				\
+			+ sizeof(struct fuse_out_header)		\
+			+ sizeof(struct type1))				\
+			= obj2;						\
+		TESTEQUAL(write(fuse_dev, bytes_out,			\
+			((struct fuse_out_header *)bytes_out)->len),	\
+			((struct fuse_out_header *)bytes_out)->len);	\
+	} while (false)
+
+#define TESTFUSEINITFLAGS(fuse_connection_flags)			\
+	do {								\
+		DECL_FUSE_IN(init);					\
+									\
+		TESTFUSEIN(FUSE_INIT, init_in);				\
+		TESTEQUAL(init_in->major, FUSE_KERNEL_VERSION);		\
+		TESTEQUAL(init_in->minor, FUSE_KERNEL_MINOR_VERSION);	\
+		TESTFUSEOUT1(fuse_init_out, ((struct fuse_init_out) {	\
+			.major = FUSE_KERNEL_VERSION,			\
+			.minor = FUSE_KERNEL_MINOR_VERSION,		\
+			.max_readahead = 4096,				\
+			.flags = fuse_connection_flags,			\
+			.max_background = 0,				\
+			.congestion_threshold = 0,			\
+			.max_write = 4096,				\
+			.time_gran = 1000,				\
+			.max_pages = 12,				\
+			.map_alignment = 4096,				\
+		}));							\
+	} while (false)
+
+#define TESTFUSEINIT()							\
+	TESTFUSEINITFLAGS(0)
+
+#define DECL_FUSE_IN(name)						\
+	struct fuse_##name##_in *name##_in =				\
+		(struct fuse_##name##_in *)				\
+		(bytes_in + sizeof(struct fuse_in_header))
+
+#define DECL_FUSE(name)							\
+	struct fuse_##name##_in *name##_in __maybe_unused;		\
+	struct fuse_##name##_out *name##_out __maybe_unused
+
+#define FUSE_DECLARE_DAEMON						\
+	int daemon = -1;						\
+	int status;							\
+	bool action;							\
+	uint8_t bytes_in[FUSE_MIN_READ_BUFFER] __maybe_unused;		\
+	uint8_t bytes_out[FUSE_MIN_READ_BUFFER]	__maybe_unused
+
+#define FUSE_START_DAEMON()						\
+	do {								\
+		TEST(daemon = fork(), daemon != -1);			\
+		action = daemon != 0;					\
+	} while (false)
+
+#define FUSE_END_DAEMON()						\
+	do {								\
+		TESTEQUAL(waitpid(daemon, &status, 0), daemon);		\
+		TESTEQUAL(status, TEST_SUCCESS);			\
+		result = TEST_SUCCESS;					\
+out:									\
+		if (!daemon)						\
+			exit(TEST_FAILURE);				\
+	} while (false)
+
+
+struct map_relocation {
+	char *name;
+	int fd;
+	int value;
+};
+
+int mount_fuse(const char *mount_dir, int bpf_fd, int dir_fd,
+	       int *fuse_dev_ptr);
+int mount_fuse_no_init(const char *mount_dir, int bpf_fd, int dir_fd,
+	       int *fuse_dev_ptr);
+int install_elf_bpf(const char *file, const char *section, int *fd,
+		    struct map_relocation **map_relocations, size_t *map_count);
+#endif
diff --git a/tools/testing/selftests/filesystems/fuse/test_fuse_bpf.h b/tools/testing/selftests/filesystems/fuse/test_fuse_bpf.h
new file mode 100644
index 0000000..9097626
--- /dev/null
+++ b/tools/testing/selftests/filesystems/fuse/test_fuse_bpf.h
@@ -0,0 +1,65 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright (c) 2022 Google LLC
+ */
+
+#ifndef TEST_FUSE__BPF__H
+#define TEST_FUSE__BPF__H
+
+#define __EXPORTED_HEADERS__
+#define __KERNEL__
+
+#ifdef __ANDROID__
+#include <stdint.h>
+#endif
+
+#include <uapi/linux/types.h>
+#include <uapi/linux/bpf.h>
+#include <uapi/linux/android_fuse.h>
+#include <uapi/linux/fuse.h>
+#include <uapi/linux/errno.h>
+
+#define SEC(NAME) __section(NAME)
+
+struct fuse_bpf_map {
+	int map_type;
+	size_t key_size;
+	size_t value_size;
+	int max_entries;
+};
+
+static void *(*bpf_map_lookup_elem)(struct fuse_bpf_map *map, void *key)
+	= (void *) 1;
+
+static void *(*bpf_map_update_elem)(struct fuse_bpf_map *map, void *key,
+				    void *value, int flags)
+	= (void *) 2;
+
+static long (*bpf_trace_printk)(const char *fmt, __u32 fmt_size, ...)
+	= (void *) 6;
+
+static long (*bpf_get_current_pid_tgid)()
+	= (void *) 14;
+
+static long (*bpf_get_current_uid_gid)()
+	= (void *) 15;
+
+#define bpf_printk(fmt, ...)					\
+	({			                                \
+		char ____fmt[] = fmt;                           \
+		bpf_trace_printk(____fmt, sizeof(____fmt),      \
+					##__VA_ARGS__);		\
+	})
+
+SEC("dummy") inline int strcmp(const char *a, const char *b)
+{
+	int i;
+
+	for (i = 0; i < __builtin_strlen(b) + 1; ++i)
+		if (a[i] != b[i])
+			return -1;
+
+	return 0;
+}
+
+#endif
diff --git a/tools/testing/selftests/filesystems/incfs/.gitignore b/tools/testing/selftests/filesystems/incfs/.gitignore
new file mode 100644
index 0000000..f0e3cd9
--- /dev/null
+++ b/tools/testing/selftests/filesystems/incfs/.gitignore
@@ -0,0 +1,3 @@
+incfs_test
+incfs_stress
+incfs_perf
diff --git a/tools/testing/selftests/filesystems/incfs/Makefile b/tools/testing/selftests/filesystems/incfs/Makefile
new file mode 100644
index 0000000..5a2f630
--- /dev/null
+++ b/tools/testing/selftests/filesystems/incfs/Makefile
@@ -0,0 +1,11 @@
+# SPDX-License-Identifier: GPL-2.0
+CFLAGS += -D_FILE_OFFSET_BITS=64 -Wall -Werror -I../.. -I../../../../.. -fno-omit-frame-pointer -fsanitize=address -g
+LDLIBS := -llz4 -lzstd -lcrypto -lpthread -fsanitize=address
+TEST_GEN_PROGS := incfs_test incfs_stress incfs_perf
+
+include ../../lib.mk
+
+# Put after include ../../lib.mk since that changes $(TEST_GEN_PROGS)
+# Otherwise you get multiple targets, this becomes the default, and it's a mess
+EXTRA_SOURCES := utils.c
+$(TEST_GEN_PROGS) : $(EXTRA_SOURCES)
diff --git a/tools/testing/selftests/filesystems/incfs/incfs_perf.c b/tools/testing/selftests/filesystems/incfs/incfs_perf.c
new file mode 100644
index 0000000..ed36bbd
--- /dev/null
+++ b/tools/testing/selftests/filesystems/incfs/incfs_perf.c
@@ -0,0 +1,717 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright 2020 Google LLC
+ */
+#include <errno.h>
+#include <fcntl.h>
+#include <getopt.h>
+#include <lz4.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/mount.h>
+#include <sys/stat.h>
+#include <time.h>
+#include <ctype.h>
+#include <unistd.h>
+
+#include "utils.h"
+
+#define err_msg(...)                                                           \
+	do {                                                                   \
+		fprintf(stderr, "%s: (%d) ", TAG, __LINE__);                   \
+		fprintf(stderr, __VA_ARGS__);                                  \
+		fprintf(stderr, " (%s)\n", strerror(errno));                   \
+	} while (false)
+
+#define TAG "incfs_perf"
+
+struct options {
+	int blocks; /* -b number of diff block sizes */
+	bool no_cleanup; /* -c don't clean up after */
+	const char *test_dir; /* -d working directory */
+	const char *file_types; /* -f sScCvV */
+	bool no_native; /* -n don't test native files */
+	bool no_random; /* -r don't do random reads*/
+	bool no_linear; /* -R random reads only */
+	size_t size; /* -s file size as power of 2 */
+	int tries; /* -t times to run test*/
+};
+
+enum flags {
+	SHUFFLE = 1,
+	COMPRESS = 2,
+	VERIFY = 4,
+	LAST_FLAG = 8,
+};
+
+void print_help(void)
+{
+	puts(
+	"incfs_perf. Performance test tool for incfs\n"
+	"\tTests read performance of incfs by creating files of various types\n"
+	"\tflushing caches and then reading them back.\n"
+	"\tEach file is read with different block sizes and average\n"
+	"\tthroughput in megabytes/second and memory usage are reported for\n"
+	"\teach block size\n"
+	"\tNative files are tested for comparison\n"
+	"\tNative files are created in native folder, incfs files are created\n"
+	"\tin src folder which is mounted on dst folder\n"
+	"\n"
+	"\t-bn (default 8) number of different block sizes, starting at 4096\n"
+	"\t                and doubling\n"
+	"\t-c		   don't Clean up - leave files and mount point\n"
+	"\t-d dir          create directories in dir\n"
+	"\t-fs|Sc|Cv|V     restrict which files are created.\n"
+	"\t                s blocks not shuffled, S blocks shuffled\n"
+	"\t                c blocks not compress, C blocks compressed\n"
+	"\t                v files not verified, V files verified\n"
+	"\t                If a letter is omitted, both options are tested\n"
+	"\t                If no letter are given, incfs is not tested\n"
+	"\t-n              Don't test native files\n"
+	"\t-r              No random reads (sequential only)\n"
+	"\t-R              Random reads only (no sequential)\n"
+	"\t-sn (default 30)File size as power of 2\n"
+	"\t-tn (default 5) Number of tries per file. Results are averaged\n"
+	);
+}
+
+int parse_options(int argc, char *const *argv, struct options *options)
+{
+	signed char c;
+
+	/* Set defaults here */
+	*options = (struct options){
+		.blocks = 8,
+		.test_dir = ".",
+		.tries = 5,
+		.size = 30,
+	};
+
+	/* Load options from command line here */
+	while ((c = getopt(argc, argv, "b:cd:f::hnrRs:t:")) != -1) {
+		switch (c) {
+		case 'b':
+			options->blocks = strtol(optarg, NULL, 10);
+			break;
+
+		case 'c':
+			options->no_cleanup = true;
+			break;
+
+		case 'd':
+			options->test_dir = optarg;
+			break;
+
+		case 'f':
+			if (optarg)
+				options->file_types = optarg;
+			else
+				options->file_types = "sS";
+			break;
+
+		case 'h':
+			print_help();
+			exit(0);
+
+		case 'n':
+			options->no_native = true;
+			break;
+
+		case 'r':
+			options->no_random = true;
+			break;
+
+		case 'R':
+			options->no_linear = true;
+			break;
+
+		case 's':
+			options->size = strtol(optarg, NULL, 10);
+			break;
+
+		case 't':
+			options->tries = strtol(optarg, NULL, 10);
+			break;
+
+		default:
+			print_help();
+			return -EINVAL;
+		}
+	}
+
+	options->size = 1L << options->size;
+
+	return 0;
+}
+
+void shuffle(size_t *buffer, size_t size)
+{
+	size_t i;
+
+	for (i = 0; i < size; ++i) {
+		size_t j = random() * (size - i - 1) / RAND_MAX;
+		size_t temp = buffer[i];
+
+		buffer[i] = buffer[j];
+		buffer[j] = temp;
+	}
+}
+
+int get_free_memory(void)
+{
+	FILE *meminfo = fopen("/proc/meminfo", "re");
+	char field[256];
+	char value[256] = {};
+
+	if (!meminfo)
+		return -ENOENT;
+
+	while (fscanf(meminfo, "%[^:]: %s kB\n", field, value) == 2) {
+		if (!strcmp(field, "MemFree"))
+			break;
+		*value = 0;
+	}
+
+	fclose(meminfo);
+
+	if (!*value)
+		return -ENOENT;
+
+	return strtol(value, NULL, 10);
+}
+
+int write_data(int cmd_fd, int dir_fd, const char *name, size_t size, int flags)
+{
+	int fd = openat(dir_fd, name, O_RDWR | O_CLOEXEC);
+	struct incfs_permit_fill permit_fill = {
+		.file_descriptor = fd,
+	};
+	int block_count = 1 + (size - 1) / INCFS_DATA_FILE_BLOCK_SIZE;
+	size_t *blocks = malloc(sizeof(size_t) * block_count);
+	int error = 0;
+	size_t i;
+	uint8_t data[INCFS_DATA_FILE_BLOCK_SIZE] = {};
+	uint8_t compressed_data[INCFS_DATA_FILE_BLOCK_SIZE] = {};
+	struct incfs_fill_block fill_block = {
+		.compression = COMPRESSION_NONE,
+		.data_len = sizeof(data),
+		.data = ptr_to_u64(data),
+	};
+
+	if (!blocks) {
+		err_msg("Out of memory");
+		error = -errno;
+		goto out;
+	}
+
+	if (fd == -1) {
+		err_msg("Could not open file for writing %s", name);
+		error = -errno;
+		goto out;
+	}
+
+	if (ioctl(cmd_fd, INCFS_IOC_PERMIT_FILL, &permit_fill)) {
+		err_msg("Failed to call PERMIT_FILL");
+		error = -errno;
+		goto out;
+	}
+
+	for (i = 0; i < block_count; ++i)
+		blocks[i] = i;
+
+	if (flags & SHUFFLE)
+		shuffle(blocks, block_count);
+
+	if (flags & COMPRESS) {
+		size_t comp_size = LZ4_compress_default(
+			(char *)data, (char *)compressed_data, sizeof(data),
+			ARRAY_SIZE(compressed_data));
+
+		if (comp_size <= 0) {
+			error = -EBADMSG;
+			goto out;
+		}
+		fill_block.compression = COMPRESSION_LZ4;
+		fill_block.data = ptr_to_u64(compressed_data);
+		fill_block.data_len = comp_size;
+	}
+
+	for (i = 0; i < block_count; ++i) {
+		struct incfs_fill_blocks fill_blocks = {
+			.count = 1,
+			.fill_blocks = ptr_to_u64(&fill_block),
+		};
+
+		fill_block.block_index = blocks[i];
+		int written = ioctl(fd, INCFS_IOC_FILL_BLOCKS, &fill_blocks);
+
+		if (written != 1) {
+			error = -errno;
+			err_msg("Failed to write block %lu in file %s", i,
+				name);
+			break;
+		}
+	}
+
+out:
+	free(blocks);
+	close(fd);
+	sync();
+	return error;
+}
+
+int measure_read_throughput_internal(const char *tag, int dir, const char *name,
+				     const struct options *options, bool random)
+{
+	int block;
+
+	if (random)
+		printf("%32s(random)", tag);
+	else
+		printf("%40s", tag);
+
+	for (block = 0; block < options->blocks; ++block) {
+		size_t buffer_size;
+		char *buffer;
+		int try;
+		double time = 0;
+		double throughput;
+		int memory = 0;
+
+		buffer_size = 1 << (block + 12);
+		buffer = malloc(buffer_size);
+
+		for (try = 0; try < options->tries; ++try) {
+			int err;
+			struct timespec start_time, end_time;
+			off_t i;
+			int fd;
+			size_t offsets_size = options->size / buffer_size;
+			size_t *offsets =
+				malloc(offsets_size * sizeof(*offsets));
+			int start_memory, end_memory;
+
+			if (!offsets) {
+				err_msg("Not enough memory");
+				return -ENOMEM;
+			}
+
+			for (i = 0; i < offsets_size; ++i)
+				offsets[i] = i * buffer_size;
+
+			if (random)
+				shuffle(offsets, offsets_size);
+
+			err = drop_caches();
+			if (err) {
+				err_msg("Failed to drop caches");
+				return err;
+			}
+
+			start_memory = get_free_memory();
+			if (start_memory < 0) {
+				err_msg("Failed to get start memory");
+				return start_memory;
+			}
+
+			fd = openat(dir, name, O_RDONLY | O_CLOEXEC);
+			if (fd == -1) {
+				err_msg("Failed to open file");
+				return err;
+			}
+
+			err = clock_gettime(CLOCK_MONOTONIC, &start_time);
+			if (err) {
+				err_msg("Failed to get start time");
+				return err;
+			}
+
+			for (i = 0; i < offsets_size; ++i)
+				if (pread(fd, buffer, buffer_size,
+					  offsets[i]) != buffer_size) {
+					err_msg("Failed to read file");
+					err = -errno;
+					goto fail;
+				}
+
+			err = clock_gettime(CLOCK_MONOTONIC, &end_time);
+			if (err) {
+				err_msg("Failed to get start time");
+				goto fail;
+			}
+
+			end_memory = get_free_memory();
+			if (end_memory < 0) {
+				err_msg("Failed to get end memory");
+				return end_memory;
+			}
+
+			time += end_time.tv_sec - start_time.tv_sec;
+			time += (end_time.tv_nsec - start_time.tv_nsec) / 1e9;
+
+			close(fd);
+			fd = -1;
+			memory += start_memory - end_memory;
+
+fail:
+			free(offsets);
+			close(fd);
+			if (err)
+				return err;
+		}
+
+		throughput = options->size * options->tries / time;
+		printf("%10.3e %10d", throughput, memory / options->tries);
+		free(buffer);
+	}
+
+	printf("\n");
+	return 0;
+}
+
+int measure_read_throughput(const char *tag, int dir, const char *name,
+			    const struct options *options)
+{
+	int err = 0;
+
+	if (!options->no_linear)
+		err = measure_read_throughput_internal(tag, dir, name, options,
+						       false);
+
+	if (!err && !options->no_random)
+		err = measure_read_throughput_internal(tag, dir, name, options,
+						       true);
+	return err;
+}
+
+int test_native_file(int dir, const struct options *options)
+{
+	const char *name = "file";
+	int fd;
+	char buffer[4096] = {};
+	off_t i;
+	int err;
+
+	fd = openat(dir, name, O_CREAT | O_WRONLY | O_CLOEXEC, 0600);
+	if (fd == -1) {
+		err_msg("Could not open native file");
+		return -errno;
+	}
+
+	for (i = 0; i < options->size; i += sizeof(buffer))
+		if (pwrite(fd, buffer, sizeof(buffer), i) != sizeof(buffer)) {
+			err_msg("Failed to write file");
+			err = -errno;
+			goto fail;
+		}
+
+	close(fd);
+	sync();
+	fd = -1;
+
+	err = measure_read_throughput("native", dir, name, options);
+
+fail:
+	close(fd);
+	return err;
+}
+
+struct hash_block {
+	char data[INCFS_DATA_FILE_BLOCK_SIZE];
+};
+
+static struct hash_block *build_mtree(size_t size, char *root_hash,
+				      int *mtree_block_count)
+{
+	char data[INCFS_DATA_FILE_BLOCK_SIZE] = {};
+	const int digest_size = SHA256_DIGEST_SIZE;
+	const int hash_per_block = INCFS_DATA_FILE_BLOCK_SIZE / digest_size;
+	int block_count = 0;
+	int hash_block_count = 0;
+	int total_tree_block_count = 0;
+	int tree_lvl_index[INCFS_MAX_MTREE_LEVELS] = {};
+	int tree_lvl_count[INCFS_MAX_MTREE_LEVELS] = {};
+	int levels_count = 0;
+	int i, level;
+	struct hash_block *mtree;
+
+	if (size == 0)
+		return 0;
+
+	block_count = 1 + (size - 1) / INCFS_DATA_FILE_BLOCK_SIZE;
+	hash_block_count = block_count;
+	for (i = 0; hash_block_count > 1; i++) {
+		hash_block_count = (hash_block_count + hash_per_block - 1) /
+				   hash_per_block;
+		tree_lvl_count[i] = hash_block_count;
+		total_tree_block_count += hash_block_count;
+	}
+	levels_count = i;
+
+	for (i = 0; i < levels_count; i++) {
+		int prev_lvl_base = (i == 0) ? total_tree_block_count :
+					       tree_lvl_index[i - 1];
+
+		tree_lvl_index[i] = prev_lvl_base - tree_lvl_count[i];
+	}
+
+	*mtree_block_count = total_tree_block_count;
+	mtree = calloc(total_tree_block_count, sizeof(*mtree));
+	/* Build level 0 hashes. */
+	for (i = 0; i < block_count; i++) {
+		int block_index = tree_lvl_index[0] + i / hash_per_block;
+		int block_off = (i % hash_per_block) * digest_size;
+		char *hash_ptr = mtree[block_index].data + block_off;
+
+		sha256(data, INCFS_DATA_FILE_BLOCK_SIZE, hash_ptr);
+	}
+
+	/* Build higher levels of hash tree. */
+	for (level = 1; level < levels_count; level++) {
+		int prev_lvl_base = tree_lvl_index[level - 1];
+		int prev_lvl_count = tree_lvl_count[level - 1];
+
+		for (i = 0; i < prev_lvl_count; i++) {
+			int block_index =
+				i / hash_per_block + tree_lvl_index[level];
+			int block_off = (i % hash_per_block) * digest_size;
+			char *hash_ptr = mtree[block_index].data + block_off;
+
+			sha256(mtree[i + prev_lvl_base].data,
+			       INCFS_DATA_FILE_BLOCK_SIZE, hash_ptr);
+		}
+	}
+
+	/* Calculate root hash from the top block */
+	sha256(mtree[0].data, INCFS_DATA_FILE_BLOCK_SIZE, root_hash);
+
+	return mtree;
+}
+
+static int load_hash_tree(int cmd_fd, int dir, const char *name,
+			  struct hash_block *mtree, int mtree_block_count)
+{
+	int err;
+	int i;
+	int fd;
+	struct incfs_fill_block *fill_block_array =
+		calloc(mtree_block_count, sizeof(struct incfs_fill_block));
+	struct incfs_fill_blocks fill_blocks = {
+		.count = mtree_block_count,
+		.fill_blocks = ptr_to_u64(fill_block_array),
+	};
+	struct incfs_permit_fill permit_fill;
+
+	if (!fill_block_array)
+		return -ENOMEM;
+
+	for (i = 0; i < fill_blocks.count; i++) {
+		fill_block_array[i] = (struct incfs_fill_block){
+			.block_index = i,
+			.data_len = INCFS_DATA_FILE_BLOCK_SIZE,
+			.data = ptr_to_u64(mtree[i].data),
+			.flags = INCFS_BLOCK_FLAGS_HASH
+		};
+	}
+
+	fd = openat(dir, name, O_RDONLY | O_CLOEXEC);
+	if (fd < 0) {
+		err = errno;
+		goto failure;
+	}
+
+	permit_fill.file_descriptor = fd;
+	if (ioctl(cmd_fd, INCFS_IOC_PERMIT_FILL, &permit_fill)) {
+		err_msg("Failed to call PERMIT_FILL");
+		err = -errno;
+		goto failure;
+	}
+
+	err = ioctl(fd, INCFS_IOC_FILL_BLOCKS, &fill_blocks);
+	close(fd);
+	if (err < fill_blocks.count)
+		err = errno;
+	else
+		err = 0;
+
+failure:
+	free(fill_block_array);
+	return err;
+}
+
+int test_incfs_file(int dst_dir, const struct options *options, int flags)
+{
+	int cmd_file = openat(dst_dir, INCFS_PENDING_READS_FILENAME,
+			      O_RDONLY | O_CLOEXEC);
+	int err;
+	char name[4];
+	incfs_uuid_t id;
+	char tag[256];
+
+	snprintf(name, sizeof(name), "%c%c%c",
+		 flags & SHUFFLE ? 'S' : 's',
+		 flags & COMPRESS ? 'C' : 'c',
+		 flags & VERIFY ? 'V' : 'v');
+
+	if (cmd_file == -1) {
+		err_msg("Could not open command file");
+		return -errno;
+	}
+
+	if (flags & VERIFY) {
+		char root_hash[INCFS_MAX_HASH_SIZE];
+		int mtree_block_count;
+		struct hash_block *mtree = build_mtree(options->size, root_hash,
+						       &mtree_block_count);
+
+		if (!mtree) {
+			err_msg("Failed to build hash tree");
+			err = -ENOMEM;
+			goto fail;
+		}
+
+		err = crypto_emit_file(cmd_file, NULL, name, &id, options->size,
+				       root_hash, "add_data");
+
+		if (!err)
+			err = load_hash_tree(cmd_file, dst_dir, name, mtree,
+					     mtree_block_count);
+
+		free(mtree);
+	} else
+		err = emit_file(cmd_file, NULL, name, &id, options->size, NULL);
+
+	if (err) {
+		err_msg("Failed to create file %s", name);
+		goto fail;
+	}
+
+	if (write_data(cmd_file, dst_dir, name, options->size, flags))
+		goto fail;
+
+	snprintf(tag, sizeof(tag), "incfs%s%s%s",
+		 flags & SHUFFLE ? "(shuffle)" : "",
+		 flags & COMPRESS ? "(compress)" : "",
+		 flags & VERIFY ? "(verify)" : "");
+
+	err = measure_read_throughput(tag, dst_dir, name, options);
+
+fail:
+	close(cmd_file);
+	return err;
+}
+
+bool skip(struct options const *options, int flag, char c)
+{
+	if (!options->file_types)
+		return false;
+
+	if (flag && strchr(options->file_types, tolower(c)))
+		return true;
+
+	if (!flag && strchr(options->file_types, toupper(c)))
+		return true;
+
+	return false;
+}
+
+int main(int argc, char *const *argv)
+{
+	struct options options;
+	int err;
+	const char *native_dir = "native";
+	const char *src_dir = "src";
+	const char *dst_dir = "dst";
+	int native_dir_fd = -1;
+	int src_dir_fd = -1;
+	int dst_dir_fd = -1;
+	int block;
+	int flags;
+
+	err = parse_options(argc, argv, &options);
+	if (err)
+		return err;
+
+	err = chdir(options.test_dir);
+	if (err) {
+		err_msg("Failed to change to %s", options.test_dir);
+		return -errno;
+	}
+
+	/* Clean up any interrupted previous runs */
+	while (!umount(dst_dir))
+		;
+
+	err = remove_dir(native_dir) || remove_dir(src_dir) ||
+	      remove_dir(dst_dir);
+	if (err)
+		return err;
+
+	err = mkdir(native_dir, 0700);
+	if (err) {
+		err_msg("Failed to make directory %s", src_dir);
+		err = -errno;
+		goto cleanup;
+	}
+
+	err = mkdir(src_dir, 0700);
+	if (err) {
+		err_msg("Failed to make directory %s", src_dir);
+		err = -errno;
+		goto cleanup;
+	}
+
+	err = mkdir(dst_dir, 0700);
+	if (err) {
+		err_msg("Failed to make directory %s", src_dir);
+		err = -errno;
+		goto cleanup;
+	}
+
+	err = mount_fs_opt(dst_dir, src_dir, "readahead=0,rlog_pages=0", 0);
+	if (err) {
+		err_msg("Failed to mount incfs");
+		goto cleanup;
+	}
+
+	native_dir_fd = open(native_dir, O_RDONLY | O_CLOEXEC);
+	src_dir_fd = open(src_dir, O_RDONLY | O_CLOEXEC);
+	dst_dir_fd = open(dst_dir, O_RDONLY | O_CLOEXEC);
+	if (native_dir_fd == -1 || src_dir_fd == -1 || dst_dir_fd == -1) {
+		err_msg("Failed to open native, src or dst dir");
+		err = -errno;
+		goto cleanup;
+	}
+
+	printf("%40s", "");
+	for (block = 0; block < options.blocks; ++block)
+		printf("%21d", 1 << (block + 12));
+	printf("\n");
+
+	if (!err && !options.no_native)
+		err = test_native_file(native_dir_fd, &options);
+
+	for (flags = 0; flags < LAST_FLAG && !err; ++flags) {
+		if (skip(&options, flags & SHUFFLE, 's') ||
+		    skip(&options, flags & COMPRESS, 'c') ||
+		    skip(&options, flags & VERIFY, 'v'))
+			continue;
+		err = test_incfs_file(dst_dir_fd, &options, flags);
+	}
+
+cleanup:
+	close(native_dir_fd);
+	close(src_dir_fd);
+	close(dst_dir_fd);
+	if (!options.no_cleanup) {
+		umount(dst_dir);
+		remove_dir(native_dir);
+		remove_dir(dst_dir);
+		remove_dir(src_dir);
+	}
+
+	return err;
+}
diff --git a/tools/testing/selftests/filesystems/incfs/incfs_stress.c b/tools/testing/selftests/filesystems/incfs/incfs_stress.c
new file mode 100644
index 0000000..a1d4917
--- /dev/null
+++ b/tools/testing/selftests/filesystems/incfs/incfs_stress.c
@@ -0,0 +1,322 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright 2020 Google LLC
+ */
+#include <errno.h>
+#include <fcntl.h>
+#include <getopt.h>
+#include <pthread.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/mount.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include "utils.h"
+
+#define err_msg(...)                                                           \
+	do {                                                                   \
+		fprintf(stderr, "%s: (%d) ", TAG, __LINE__);                   \
+		fprintf(stderr, __VA_ARGS__);                                  \
+		fprintf(stderr, " (%s)\n", strerror(errno));                   \
+	} while (false)
+
+#define TAG "incfs_stress"
+
+struct options {
+	bool no_cleanup; /* -c */
+	const char *test_dir; /* -d */
+	unsigned int rng_seed; /* -g */
+	int num_reads; /* -n */
+	int readers; /* -r */
+	int size; /* -s */
+	int timeout; /* -t */
+};
+
+struct read_data {
+	const char *filename;
+	int dir_fd;
+	size_t filesize;
+	int num_reads;
+	unsigned int rng_seed;
+};
+
+int cancel_threads;
+
+int parse_options(int argc, char *const *argv, struct options *options)
+{
+	signed char c;
+
+	/* Set defaults here */
+	*options = (struct options){
+		.test_dir = ".",
+		.num_reads = 1000,
+		.readers = 10,
+		.size = 10,
+	};
+
+	/* Load options from command line here */
+	while ((c = getopt(argc, argv, "cd:g:n:r:s:t:")) != -1) {
+		switch (c) {
+		case 'c':
+			options->no_cleanup = true;
+			break;
+
+		case 'd':
+			options->test_dir = optarg;
+			break;
+
+		case 'g':
+			options->rng_seed = strtol(optarg, NULL, 10);
+			break;
+
+		case 'n':
+			options->num_reads = strtol(optarg, NULL, 10);
+			break;
+
+		case 'r':
+			options->readers = strtol(optarg, NULL, 10);
+			break;
+
+		case 's':
+			options->size = strtol(optarg, NULL, 10);
+			break;
+
+		case 't':
+			options->timeout = strtol(optarg, NULL, 10);
+			break;
+		}
+	}
+
+	return 0;
+}
+
+void *reader(void *data)
+{
+	struct read_data *read_data = (struct read_data *)data;
+	int i;
+	int fd = -1;
+	void *buffer = malloc(read_data->filesize);
+
+	if (!buffer) {
+		err_msg("Failed to alloc read buffer");
+		goto out;
+	}
+
+	fd = openat(read_data->dir_fd, read_data->filename,
+		    O_RDONLY | O_CLOEXEC);
+	if (fd == -1) {
+		err_msg("Failed to open file");
+		goto out;
+	}
+
+	for (i = 0; i < read_data->num_reads && !cancel_threads; ++i) {
+		off_t offset = rnd(read_data->filesize, &read_data->rng_seed);
+		size_t count =
+			rnd(read_data->filesize - offset, &read_data->rng_seed);
+		ssize_t err = pread(fd, buffer, count, offset);
+
+		if (err != count)
+			err_msg("failed to read with value %lu", err);
+	}
+
+out:
+	close(fd);
+	free(read_data);
+	free(buffer);
+	return NULL;
+}
+
+int write_data(int cmd_fd, int dir_fd, const char *name, size_t size)
+{
+	int fd = openat(dir_fd, name, O_RDWR | O_CLOEXEC);
+	struct incfs_permit_fill permit_fill = {
+		.file_descriptor = fd,
+	};
+	int error = 0;
+	int i;
+	int block_count = 1 + (size - 1) / INCFS_DATA_FILE_BLOCK_SIZE;
+
+	if (fd == -1) {
+		err_msg("Could not open file for writing %s", name);
+		return -errno;
+	}
+
+	if (ioctl(cmd_fd, INCFS_IOC_PERMIT_FILL, &permit_fill)) {
+		err_msg("Failed to call PERMIT_FILL");
+		error = -errno;
+		goto out;
+	}
+
+	for (i = 0; i < block_count; ++i) {
+		uint8_t data[INCFS_DATA_FILE_BLOCK_SIZE] = {};
+		size_t block_size =
+			size > i * INCFS_DATA_FILE_BLOCK_SIZE ?
+				INCFS_DATA_FILE_BLOCK_SIZE :
+				size - (i * INCFS_DATA_FILE_BLOCK_SIZE);
+		struct incfs_fill_block fill_block = {
+			.compression = COMPRESSION_NONE,
+			.block_index = i,
+			.data_len = block_size,
+			.data = ptr_to_u64(data),
+		};
+		struct incfs_fill_blocks fill_blocks = {
+			.count = 1,
+			.fill_blocks = ptr_to_u64(&fill_block),
+		};
+		int written = ioctl(fd, INCFS_IOC_FILL_BLOCKS, &fill_blocks);
+
+		if (written != 1) {
+			error = -errno;
+			err_msg("Failed to write block %d in file %s", i, name);
+			break;
+		}
+	}
+out:
+	close(fd);
+	return error;
+}
+
+int test_files(int src_dir, int dst_dir, struct options const *options)
+{
+	unsigned int seed = options->rng_seed;
+	int cmd_file = openat(dst_dir, INCFS_PENDING_READS_FILENAME,
+			      O_RDONLY | O_CLOEXEC);
+	int err;
+	const char *name = "001";
+	incfs_uuid_t id;
+	size_t size;
+	int i;
+	pthread_t *threads = NULL;
+
+	size = 1 << (rnd(options->size, &seed) + 12);
+	size += rnd(size, &seed);
+
+	if (cmd_file == -1) {
+		err_msg("Could not open command file");
+		return -errno;
+	}
+
+	err = emit_file(cmd_file, NULL, name, &id, size, NULL);
+	if (err) {
+		err_msg("Failed to create file %s", name);
+		return err;
+	}
+
+	threads = malloc(sizeof(pthread_t) * options->readers);
+	if (!threads) {
+		err_msg("Could not allocate memory for threads");
+		return -ENOMEM;
+	}
+
+	for (i = 0; i < options->readers; ++i) {
+		struct read_data *read_data = malloc(sizeof(*read_data));
+
+		if (!read_data) {
+			err_msg("Failed to allocate read_data");
+			err = -ENOMEM;
+			break;
+		}
+
+		*read_data = (struct read_data){
+			.filename = name,
+			.dir_fd = dst_dir,
+			.filesize = size,
+			.num_reads = options->num_reads,
+			.rng_seed = seed,
+		};
+
+		rnd(0, &seed);
+
+		err = pthread_create(threads + i, 0, reader, read_data);
+		if (err) {
+			err_msg("Failed to create thread");
+			free(read_data);
+			break;
+		}
+	}
+
+	if (err)
+		cancel_threads = 1;
+	else
+		err = write_data(cmd_file, dst_dir, name, size);
+
+	for (; i > 0; --i) {
+		if (pthread_join(threads[i - 1], NULL)) {
+			err_msg("FATAL: failed to join thread");
+			exit(-errno);
+		}
+	}
+
+	free(threads);
+	close(cmd_file);
+	return err;
+}
+
+int main(int argc, char *const *argv)
+{
+	struct options options;
+	int err;
+	const char *src_dir = "src";
+	const char *dst_dir = "dst";
+	int src_dir_fd = -1;
+	int dst_dir_fd = -1;
+
+	err = parse_options(argc, argv, &options);
+	if (err)
+		return err;
+
+	err = chdir(options.test_dir);
+	if (err) {
+		err_msg("Failed to change to %s", options.test_dir);
+		return -errno;
+	}
+
+	err = remove_dir(src_dir) || remove_dir(dst_dir);
+	if (err)
+		return err;
+
+	err = mkdir(src_dir, 0700);
+	if (err) {
+		err_msg("Failed to make directory %s", src_dir);
+		err = -errno;
+		goto cleanup;
+	}
+
+	err = mkdir(dst_dir, 0700);
+	if (err) {
+		err_msg("Failed to make directory %s", src_dir);
+		err = -errno;
+		goto cleanup;
+	}
+
+	err = mount_fs(dst_dir, src_dir, options.timeout);
+	if (err) {
+		err_msg("Failed to mount incfs");
+		goto cleanup;
+	}
+
+	src_dir_fd = open(src_dir, O_RDONLY | O_CLOEXEC);
+	dst_dir_fd = open(dst_dir, O_RDONLY | O_CLOEXEC);
+	if (src_dir_fd == -1 || dst_dir_fd == -1) {
+		err_msg("Failed to open src or dst dir");
+		err = -errno;
+		goto cleanup;
+	}
+
+	err = test_files(src_dir_fd, dst_dir_fd, &options);
+
+cleanup:
+	close(src_dir_fd);
+	close(dst_dir_fd);
+	if (!options.no_cleanup) {
+		umount(dst_dir);
+		remove_dir(dst_dir);
+		remove_dir(src_dir);
+	}
+
+	return err;
+}
diff --git a/tools/testing/selftests/filesystems/incfs/incfs_test.c b/tools/testing/selftests/filesystems/incfs/incfs_test.c
new file mode 100644
index 0000000..10c15fa
--- /dev/null
+++ b/tools/testing/selftests/filesystems/incfs/incfs_test.c
@@ -0,0 +1,4803 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright 2018 Google LLC
+ */
+#define _GNU_SOURCE
+
+#include <alloca.h>
+#include <dirent.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <lz4.h>
+#include <poll.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <unistd.h>
+#include <zstd.h>
+
+#include <sys/inotify.h>
+#include <sys/mman.h>
+#include <sys/mount.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <sys/xattr.h>
+#include <sys/statvfs.h>
+
+#include <linux/random.h>
+#include <linux/stat.h>
+#include <linux/unistd.h>
+
+#include <openssl/pem.h>
+#include <openssl/x509.h>
+
+#include <kselftest.h>
+#include <include/uapi/linux/fsverity.h>
+
+#include "utils.h"
+
+/* Can't include uapi/linux/fs.h because it clashes with mount.h */
+#define	FS_IOC_GETFLAGS			_IOR('f', 1, long)
+#define FS_VERITY_FL			0x00100000 /* Verity protected inode */
+
+#define TEST_SKIP 2
+#define TEST_FAILURE 1
+#define TEST_SUCCESS 0
+
+#define INCFS_ROOT_INODE 0
+
+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
+#define le16_to_cpu(x)          (x)
+#define le32_to_cpu(x)          (x)
+#define le64_to_cpu(x)          (x)
+#else
+#error Big endian not supported!
+#endif
+
+struct {
+	int file;
+	int test;
+	bool verbose;
+} options;
+
+#define TESTCOND(condition)						\
+	do {								\
+		if (!(condition)) {					\
+			ksft_print_msg("%s failed %d\n",		\
+				       __func__, __LINE__);		\
+			goto out;					\
+		} else if (options.verbose)				\
+			ksft_print_msg("%s succeeded %d\n",		\
+				       __func__, __LINE__);		\
+	} while (false)
+
+#define TEST(statement, condition)					\
+	do {								\
+		statement;						\
+		TESTCOND(condition);					\
+	} while (false)
+
+#define TESTEQUAL(statement, res)					\
+	TESTCOND((statement) == (res))
+
+#define TESTNE(statement, res)					\
+	TESTCOND((statement) != (res))
+
+#define TESTSYSCALL(statement)						\
+	do {								\
+		int res = statement;					\
+									\
+		if (res)						\
+			ksft_print_msg("Failed: %s (%d)\n",		\
+				       strerror(errno), errno);		\
+		TESTEQUAL(res, 0);					\
+	} while (false)
+
+void print_bytes(const void *data, size_t size)
+{
+	const uint8_t *bytes = data;
+	int i;
+
+	for (i = 0; i < size; ++i) {
+		if (i % 0x10 == 0)
+			printf("%08x:", i);
+		printf("%02x ", (unsigned int) bytes[i]);
+		if (i % 0x10 == 0x0f)
+			printf("\n");
+	}
+
+	if (i % 0x10 != 0)
+		printf("\n");
+}
+
+struct hash_block {
+	char data[INCFS_DATA_FILE_BLOCK_SIZE];
+};
+
+struct test_signature {
+	void *data;
+	size_t size;
+
+	char add_data[100];
+	size_t add_data_size;
+};
+
+struct test_file {
+	int index;
+	incfs_uuid_t id;
+	char *name;
+	off_t size;
+	char root_hash[INCFS_MAX_HASH_SIZE];
+	struct hash_block *mtree;
+	int mtree_block_count;
+	struct test_signature sig;
+	unsigned char *verity_sig;
+	size_t verity_sig_size;
+};
+
+struct test_files_set {
+	struct test_file *files;
+	int files_count;
+};
+
+struct linux_dirent64 {
+	uint64_t       d_ino;
+	int64_t        d_off;
+	unsigned short d_reclen;
+	unsigned char  d_type;
+	char	       d_name[0];
+} __packed;
+
+struct test_files_set get_test_files_set(void)
+{
+	static struct test_file files[] = {
+		{ .index = 0, .name = "file_one_byte", .size = 1 },
+		{ .index = 1,
+		  .name = "file_one_block",
+		  .size = INCFS_DATA_FILE_BLOCK_SIZE },
+		{ .index = 2,
+		  .name = "file_one_and_a_half_blocks",
+		  .size = INCFS_DATA_FILE_BLOCK_SIZE +
+			  INCFS_DATA_FILE_BLOCK_SIZE / 2 },
+		{ .index = 3,
+		  .name = "file_three",
+		  .size = 300 * INCFS_DATA_FILE_BLOCK_SIZE + 3 },
+		{ .index = 4,
+		  .name = "file_four",
+		  .size = 400 * INCFS_DATA_FILE_BLOCK_SIZE + 7 },
+		{ .index = 5,
+		  .name = "file_five",
+		  .size = 500 * INCFS_DATA_FILE_BLOCK_SIZE + 7 },
+		{ .index = 6,
+		  .name = "file_six",
+		  .size = 600 * INCFS_DATA_FILE_BLOCK_SIZE + 7 },
+		{ .index = 7,
+		  .name = "file_seven",
+		  .size = 700 * INCFS_DATA_FILE_BLOCK_SIZE + 7 },
+		{ .index = 8,
+		  .name = "file_eight",
+		  .size = 800 * INCFS_DATA_FILE_BLOCK_SIZE + 7 },
+		{ .index = 9,
+		  .name = "file_nine",
+		  .size = 900 * INCFS_DATA_FILE_BLOCK_SIZE + 7 },
+		{ .index = 10, .name = "file_big", .size = 500 * 1024 * 1024 }
+	};
+
+	if (options.file)
+		return (struct test_files_set) {
+			.files = files + options.file - 1,
+			.files_count = 1,
+		};
+
+	return (struct test_files_set){ .files = files,
+					.files_count = ARRAY_SIZE(files) };
+}
+
+struct test_files_set get_small_test_files_set(void)
+{
+	static struct test_file files[] = {
+		{ .index = 0, .name = "file_one_byte", .size = 1 },
+		{ .index = 1,
+		  .name = "file_one_block",
+		  .size = INCFS_DATA_FILE_BLOCK_SIZE },
+		{ .index = 2,
+		  .name = "file_one_and_a_half_blocks",
+		  .size = INCFS_DATA_FILE_BLOCK_SIZE +
+			  INCFS_DATA_FILE_BLOCK_SIZE / 2 },
+		{ .index = 3,
+		  .name = "file_three",
+		  .size = 300 * INCFS_DATA_FILE_BLOCK_SIZE + 3 },
+		{ .index = 4,
+		  .name = "file_four",
+		  .size = 400 * INCFS_DATA_FILE_BLOCK_SIZE + 7 }
+	};
+	return (struct test_files_set){ .files = files,
+					.files_count = ARRAY_SIZE(files) };
+}
+
+static int get_file_block_seed(int file, int block)
+{
+	return 7919 * file + block;
+}
+
+static loff_t min(loff_t a, loff_t b)
+{
+	return a < b ? a : b;
+}
+
+static int ilog2(size_t n)
+{
+	int l = 0;
+
+	while (n > 1) {
+		++l;
+		n >>= 1;
+	}
+	return l;
+}
+
+static pid_t flush_and_fork(void)
+{
+	fflush(stdout);
+	return fork();
+}
+
+static void print_error(char *msg)
+{
+	ksft_print_msg("%s: %s\n", msg, strerror(errno));
+}
+
+static int wait_for_process(pid_t pid)
+{
+	int status;
+	int wait_res;
+
+	wait_res = waitpid(pid, &status, 0);
+	if (wait_res <= 0) {
+		print_error("Can't wait for the child");
+		return -EINVAL;
+	}
+	if (!WIFEXITED(status)) {
+		ksft_print_msg("Unexpected child status pid=%d\n", pid);
+		return -EINVAL;
+	}
+	status = WEXITSTATUS(status);
+	if (status != 0)
+		return status;
+	return 0;
+}
+
+static void rnd_buf(uint8_t *data, size_t len, unsigned int seed)
+{
+	int i;
+
+	for (i = 0; i < len; i++) {
+		seed = 1103515245 * seed + 12345;
+		data[i] = (uint8_t)(seed >> (i % 13));
+	}
+}
+
+char *bin2hex(char *dst, const void *src, size_t count)
+{
+	const unsigned char *_src = src;
+	static const char hex_asc[] = "0123456789abcdef";
+
+	while (count--) {
+		unsigned char x = *_src++;
+
+		*dst++ = hex_asc[(x & 0xf0) >> 4];
+		*dst++ = hex_asc[(x & 0x0f)];
+	}
+	*dst = 0;
+	return dst;
+}
+
+static char *get_index_filename(const char *mnt_dir, incfs_uuid_t id)
+{
+	char path[FILENAME_MAX];
+	char str_id[1 + 2 * sizeof(id)];
+
+	bin2hex(str_id, id.bytes, sizeof(id.bytes));
+	snprintf(path, ARRAY_SIZE(path), "%s/.index/%s", mnt_dir, str_id);
+
+	return strdup(path);
+}
+
+static char *get_incomplete_filename(const char *mnt_dir, incfs_uuid_t id)
+{
+	char path[FILENAME_MAX];
+	char str_id[1 + 2 * sizeof(id)];
+
+	bin2hex(str_id, id.bytes, sizeof(id.bytes));
+	snprintf(path, ARRAY_SIZE(path), "%s/.incomplete/%s", mnt_dir, str_id);
+
+	return strdup(path);
+}
+
+int open_file_by_id(const char *mnt_dir, incfs_uuid_t id, bool use_ioctl)
+{
+	char *path = get_index_filename(mnt_dir, id);
+	int cmd_fd = open_commands_file(mnt_dir);
+	int fd = open(path, O_RDWR | O_CLOEXEC);
+	struct incfs_permit_fill permit_fill = {
+		.file_descriptor = fd,
+	};
+	int error = 0;
+
+	if (fd < 0) {
+		print_error("Can't open file by id.");
+		error = -errno;
+		goto out;
+	}
+
+	if (use_ioctl && ioctl(cmd_fd, INCFS_IOC_PERMIT_FILL, &permit_fill)) {
+		print_error("Failed to call PERMIT_FILL");
+		error = -errno;
+		goto out;
+	}
+
+	if (ioctl(fd, INCFS_IOC_PERMIT_FILL, &permit_fill) != -1) {
+		print_error(
+			"Successfully called PERMIT_FILL on non pending_read file");
+		return -errno;
+		goto out;
+	}
+
+out:
+	free(path);
+	close(cmd_fd);
+
+	if (error) {
+		close(fd);
+		return error;
+	}
+
+	return fd;
+}
+
+int get_file_attr(const char *mnt_dir, incfs_uuid_t id, char *value, int size)
+{
+	char *path = get_index_filename(mnt_dir, id);
+	int res;
+
+	res = getxattr(path, INCFS_XATTR_METADATA_NAME, value, size);
+	if (res < 0)
+		res = -errno;
+
+	free(path);
+	return res;
+}
+
+static bool same_id(incfs_uuid_t *id1, incfs_uuid_t *id2)
+{
+	return !memcmp(id1->bytes, id2->bytes, sizeof(id1->bytes));
+}
+
+ssize_t ZSTD_compress_default(char *data, char *comp_data, size_t data_size,
+					size_t comp_size)
+{
+	return ZSTD_compress(comp_data, comp_size, data, data_size, 1);
+}
+
+static int emit_test_blocks(const char *mnt_dir, struct test_file *file,
+			int blocks[], int count)
+{
+	uint8_t data[INCFS_DATA_FILE_BLOCK_SIZE];
+	uint8_t comp_data[2 * INCFS_DATA_FILE_BLOCK_SIZE];
+	int block_count = (count > 32) ? 32 : count;
+	int data_buf_size = 2 * INCFS_DATA_FILE_BLOCK_SIZE * block_count;
+	uint8_t *data_buf = malloc(data_buf_size);
+	uint8_t *current_data = data_buf;
+	uint8_t *data_end = data_buf + data_buf_size;
+	struct incfs_fill_block *block_buf =
+		calloc(block_count, sizeof(struct incfs_fill_block));
+	struct incfs_fill_blocks fill_blocks = {
+		.count = block_count,
+		.fill_blocks = ptr_to_u64(block_buf),
+	};
+	ssize_t write_res = 0;
+	int fd = -1;
+	int error = 0;
+	int i = 0;
+	int blocks_written = 0;
+
+	for (i = 0; i < block_count; i++) {
+		int block_index = blocks[i];
+		bool compress_zstd = (file->index + block_index) % 4 == 2;
+		bool compress_lz4 = (file->index + block_index) % 4 == 0;
+		int seed = get_file_block_seed(file->index, block_index);
+		off_t block_offset =
+			((off_t)block_index) * INCFS_DATA_FILE_BLOCK_SIZE;
+		size_t block_size = 0;
+
+		if (block_offset > file->size) {
+			error = -EINVAL;
+			break;
+		}
+		if (file->size - block_offset >
+			INCFS_DATA_FILE_BLOCK_SIZE)
+			block_size = INCFS_DATA_FILE_BLOCK_SIZE;
+		else
+			block_size = file->size - block_offset;
+
+		rnd_buf(data, block_size, seed);
+		if (compress_lz4) {
+			size_t comp_size = LZ4_compress_default((char *)data,
+					(char *)comp_data, block_size,
+					ARRAY_SIZE(comp_data));
+
+			if (comp_size <= 0) {
+				error = -EBADMSG;
+				break;
+			}
+			if (current_data + comp_size > data_end) {
+				error = -ENOMEM;
+				break;
+			}
+			memcpy(current_data, comp_data, comp_size);
+			block_size = comp_size;
+			block_buf[i].compression = COMPRESSION_LZ4;
+		} else if (compress_zstd) {
+			size_t comp_size = ZSTD_compress(comp_data,
+					ARRAY_SIZE(comp_data), data, block_size,
+					1);
+
+			if (comp_size <= 0) {
+				error = -EBADMSG;
+				break;
+			}
+			if (current_data + comp_size > data_end) {
+				error = -ENOMEM;
+				break;
+			}
+			memcpy(current_data, comp_data, comp_size);
+			block_size = comp_size;
+			block_buf[i].compression = COMPRESSION_ZSTD;
+		} else {
+			if (current_data + block_size > data_end) {
+				error = -ENOMEM;
+				break;
+			}
+			memcpy(current_data, data, block_size);
+			block_buf[i].compression = COMPRESSION_NONE;
+		}
+
+		block_buf[i].block_index = block_index;
+		block_buf[i].data_len = block_size;
+		block_buf[i].data = ptr_to_u64(current_data);
+		current_data += block_size;
+	}
+
+	if (!error) {
+		fd = open_file_by_id(mnt_dir, file->id, false);
+		if (fd < 0) {
+			error = -errno;
+			goto out;
+		}
+		write_res = ioctl(fd, INCFS_IOC_FILL_BLOCKS, &fill_blocks);
+		if (write_res >= 0) {
+			ksft_print_msg("Wrote to file via normal fd error\n");
+			error = -EPERM;
+			goto out;
+		}
+
+		close(fd);
+		fd = open_file_by_id(mnt_dir, file->id, true);
+		if (fd < 0) {
+			error = -errno;
+			goto out;
+		}
+		write_res = ioctl(fd, INCFS_IOC_FILL_BLOCKS, &fill_blocks);
+		if (write_res < 0)
+			error = -errno;
+		else
+			blocks_written = write_res;
+	}
+	if (error) {
+		ksft_print_msg(
+			"Writing data block error. Write returned: %d. Error:%s\n",
+			write_res, strerror(-error));
+	}
+
+out:
+	free(block_buf);
+	free(data_buf);
+	close(fd);
+	return (error < 0) ? error : blocks_written;
+}
+
+static int emit_test_block(const char *mnt_dir, struct test_file *file,
+				int block_index)
+{
+	int res = emit_test_blocks(mnt_dir, file, &block_index, 1);
+
+	if (res == 0)
+		return -EINVAL;
+	if (res == 1)
+		return 0;
+	return res;
+}
+
+static void shuffle(int array[], int count, unsigned int seed)
+{
+	int i;
+
+	for (i = 0; i < count - 1; i++) {
+		int items_left = count - i;
+		int shuffle_index;
+		int v;
+
+		seed = 1103515245 * seed + 12345;
+		shuffle_index = i + seed % items_left;
+
+		v = array[shuffle_index];
+		array[shuffle_index] = array[i];
+		array[i] = v;
+	}
+}
+
+static int emit_test_file_data(const char *mount_dir, struct test_file *file)
+{
+	int i;
+	int block_cnt = 1 + (file->size - 1) / INCFS_DATA_FILE_BLOCK_SIZE;
+	int *block_indexes = NULL;
+	int result = 0;
+	int blocks_written = 0;
+
+	if (file->size == 0)
+		return 0;
+
+	block_indexes = calloc(block_cnt, sizeof(*block_indexes));
+	for (i = 0; i < block_cnt; i++)
+		block_indexes[i] = i;
+	shuffle(block_indexes, block_cnt, file->index);
+
+	for (i = 0; i < block_cnt; i += blocks_written) {
+		blocks_written = emit_test_blocks(mount_dir, file,
+					block_indexes + i, block_cnt - i);
+		if (blocks_written < 0) {
+			result = blocks_written;
+			goto out;
+		}
+		if (blocks_written == 0) {
+			result = -EIO;
+			goto out;
+		}
+	}
+out:
+	free(block_indexes);
+	return result;
+}
+
+static loff_t read_whole_file(const char *filename)
+{
+	int fd = -1;
+	loff_t result;
+	loff_t bytes_read = 0;
+	uint8_t buff[16 * 1024];
+
+	fd = open(filename, O_RDONLY | O_CLOEXEC);
+	if (fd <= 0)
+		return fd;
+
+	while (1) {
+		int read_result = read(fd, buff, ARRAY_SIZE(buff));
+
+		if (read_result < 0) {
+			print_error("Error during reading from a file.");
+			result = -errno;
+			goto cleanup;
+		} else if (read_result == 0)
+			break;
+
+		bytes_read += read_result;
+	}
+	result = bytes_read;
+
+cleanup:
+	close(fd);
+	return result;
+}
+
+static int read_test_file(uint8_t *buf, size_t len, char *filename,
+			  int block_idx)
+{
+	int fd = -1;
+	int result;
+	int bytes_read = 0;
+	size_t bytes_to_read = len;
+	off_t offset = ((off_t)block_idx) * INCFS_DATA_FILE_BLOCK_SIZE;
+
+	fd = open(filename, O_RDONLY | O_CLOEXEC);
+	if (fd <= 0)
+		return fd;
+
+	if (lseek(fd, offset, SEEK_SET) != offset) {
+		print_error("Seek error");
+		return -errno;
+	}
+
+	while (bytes_read < bytes_to_read) {
+		int read_result =
+			read(fd, buf + bytes_read, bytes_to_read - bytes_read);
+		if (read_result < 0) {
+			result = -errno;
+			goto cleanup;
+		} else if (read_result == 0)
+			break;
+
+		bytes_read += read_result;
+	}
+	result = bytes_read;
+
+cleanup:
+	close(fd);
+	return result;
+}
+
+static char *create_backing_dir(const char *mount_dir)
+{
+	struct stat st;
+	char backing_dir_name[255];
+
+	snprintf(backing_dir_name, ARRAY_SIZE(backing_dir_name), "%s-src",
+		 mount_dir);
+
+	if (stat(backing_dir_name, &st) == 0) {
+		if (S_ISDIR(st.st_mode)) {
+			int error = delete_dir_tree(backing_dir_name);
+
+			if (error) {
+				ksft_print_msg(
+				      "Can't delete existing backing dir. %d\n",
+				      error);
+				return NULL;
+			}
+		} else {
+			if (unlink(backing_dir_name)) {
+				print_error("Can't clear backing dir");
+				return NULL;
+			}
+		}
+	}
+
+	if (mkdir(backing_dir_name, 0777)) {
+		if (errno != EEXIST) {
+			print_error("Can't open/create backing dir");
+			return NULL;
+		}
+	}
+
+	return strdup(backing_dir_name);
+}
+
+static int validate_test_file_content_with_seed(const char *mount_dir,
+						struct test_file *file,
+						unsigned int shuffle_seed)
+{
+	int error = -1;
+	char *filename = concat_file_name(mount_dir, file->name);
+	off_t size = file->size;
+	loff_t actual_size = get_file_size(filename);
+	int block_cnt = 1 + (size - 1) / INCFS_DATA_FILE_BLOCK_SIZE;
+	int *block_indexes = NULL;
+	int i;
+
+	block_indexes = alloca(sizeof(int) * block_cnt);
+	for (i = 0; i < block_cnt; i++)
+		block_indexes[i] = i;
+
+	if (shuffle_seed != 0)
+		shuffle(block_indexes, block_cnt, shuffle_seed);
+
+	if (actual_size != size) {
+		ksft_print_msg(
+			"File size doesn't match. name: %s expected size:%ld actual size:%ld\n",
+			filename, size, actual_size);
+		error = -1;
+		goto failure;
+	}
+
+	for (i = 0; i < block_cnt; i++) {
+		int block_idx = block_indexes[i];
+		uint8_t expected_block[INCFS_DATA_FILE_BLOCK_SIZE];
+		uint8_t actual_block[INCFS_DATA_FILE_BLOCK_SIZE];
+		int seed = get_file_block_seed(file->index, block_idx);
+		size_t bytes_to_compare = min(
+			(off_t)INCFS_DATA_FILE_BLOCK_SIZE,
+			size - ((off_t)block_idx) * INCFS_DATA_FILE_BLOCK_SIZE);
+		int read_result =
+			read_test_file(actual_block, INCFS_DATA_FILE_BLOCK_SIZE,
+				       filename, block_idx);
+		if (read_result < 0) {
+			ksft_print_msg(
+				"Error reading block %d from file %s. Error: %s\n",
+				block_idx, filename, strerror(-read_result));
+			error = read_result;
+			goto failure;
+		}
+		rnd_buf(expected_block, INCFS_DATA_FILE_BLOCK_SIZE, seed);
+		if (memcmp(expected_block, actual_block, bytes_to_compare)) {
+			ksft_print_msg(
+				"File contents don't match. name: %s block:%d\n",
+				file->name, block_idx);
+			error = -2;
+			goto failure;
+		}
+	}
+	free(filename);
+	return 0;
+
+failure:
+	free(filename);
+	return error;
+}
+
+static int validate_test_file_content(const char *mount_dir,
+				      struct test_file *file)
+{
+	return validate_test_file_content_with_seed(mount_dir, file, 0);
+}
+
+static int data_producer(const char *mount_dir, struct test_files_set *test_set)
+{
+	int ret = 0;
+	int timeout_ms = 1000;
+	struct incfs_pending_read_info prs[100] = {};
+	int prs_size = ARRAY_SIZE(prs);
+	int fd = open_commands_file(mount_dir);
+
+	if (fd < 0)
+		return -errno;
+
+	while ((ret = wait_for_pending_reads(fd, timeout_ms, prs, prs_size)) >
+	       0) {
+		int read_count = ret;
+		int i;
+
+		for (i = 0; i < read_count; i++) {
+			int j = 0;
+			struct test_file *file = NULL;
+
+			for (j = 0; j < test_set->files_count; j++) {
+				bool same = same_id(&(test_set->files[j].id),
+					&(prs[i].file_id));
+
+				if (same) {
+					file = &test_set->files[j];
+					break;
+				}
+			}
+			if (!file) {
+				ksft_print_msg(
+					"Unknown file in pending reads.\n");
+				break;
+			}
+
+			ret = emit_test_block(mount_dir, file,
+				prs[i].block_index);
+			if (ret < 0) {
+				ksft_print_msg("Emitting test data error: %s\n",
+						strerror(-ret));
+				break;
+			}
+		}
+	}
+	close(fd);
+	return ret;
+}
+
+static int data_producer2(const char *mount_dir,
+			  struct test_files_set *test_set)
+{
+	int ret = 0;
+	int timeout_ms = 1000;
+	struct incfs_pending_read_info2 prs[100] = {};
+	int prs_size = ARRAY_SIZE(prs);
+	int fd = open_commands_file(mount_dir);
+
+	if (fd < 0)
+		return -errno;
+
+	while ((ret = wait_for_pending_reads2(fd, timeout_ms, prs, prs_size)) >
+	       0) {
+		int read_count = ret;
+		int i;
+
+		for (i = 0; i < read_count; i++) {
+			int j = 0;
+			struct test_file *file = NULL;
+
+			for (j = 0; j < test_set->files_count; j++) {
+				bool same = same_id(&(test_set->files[j].id),
+					&(prs[i].file_id));
+
+				if (same) {
+					file = &test_set->files[j];
+					break;
+				}
+			}
+			if (!file) {
+				ksft_print_msg(
+					"Unknown file in pending reads.\n");
+				break;
+			}
+
+			ret = emit_test_block(mount_dir, file,
+				prs[i].block_index);
+			if (ret < 0) {
+				ksft_print_msg("Emitting test data error: %s\n",
+						strerror(-ret));
+				break;
+			}
+		}
+	}
+	close(fd);
+	return ret;
+}
+
+static int build_mtree(struct test_file *file)
+{
+	char data[INCFS_DATA_FILE_BLOCK_SIZE] = {};
+	const int digest_size = SHA256_DIGEST_SIZE;
+	const int hash_per_block = INCFS_DATA_FILE_BLOCK_SIZE / digest_size;
+	int block_count = 0;
+	int hash_block_count = 0;
+	int total_tree_block_count = 0;
+	int tree_lvl_index[INCFS_MAX_MTREE_LEVELS] = {};
+	int tree_lvl_count[INCFS_MAX_MTREE_LEVELS] = {};
+	int levels_count = 0;
+	int i, level;
+
+	if (file->size == 0)
+		return 0;
+
+	block_count = 1 + (file->size - 1) / INCFS_DATA_FILE_BLOCK_SIZE;
+	hash_block_count = block_count;
+	for (i = 0; hash_block_count > 1; i++) {
+		hash_block_count = (hash_block_count + hash_per_block - 1)
+			/ hash_per_block;
+		tree_lvl_count[i] = hash_block_count;
+		total_tree_block_count += hash_block_count;
+	}
+	levels_count = i;
+
+	for (i = 0; i < levels_count; i++) {
+		int prev_lvl_base = (i == 0) ? total_tree_block_count :
+			tree_lvl_index[i - 1];
+
+		tree_lvl_index[i] = prev_lvl_base - tree_lvl_count[i];
+	}
+
+	file->mtree_block_count = total_tree_block_count;
+	if (block_count == 1) {
+		int seed = get_file_block_seed(file->index, 0);
+
+		memset(data, 0, INCFS_DATA_FILE_BLOCK_SIZE);
+		rnd_buf((uint8_t *)data, file->size, seed);
+		sha256(data, INCFS_DATA_FILE_BLOCK_SIZE, file->root_hash);
+		return 0;
+	}
+
+	file->mtree = calloc(total_tree_block_count, sizeof(*file->mtree));
+	/* Build level 0 hashes. */
+	for (i = 0; i < block_count; i++) {
+		off_t offset = i * INCFS_DATA_FILE_BLOCK_SIZE;
+		size_t block_size = INCFS_DATA_FILE_BLOCK_SIZE;
+		int block_index = tree_lvl_index[0] +
+					i / hash_per_block;
+		int block_off = (i % hash_per_block) * digest_size;
+		int seed = get_file_block_seed(file->index, i);
+		char *hash_ptr = file->mtree[block_index].data + block_off;
+
+		if (file->size - offset < block_size) {
+			block_size = file->size - offset;
+			memset(data, 0, INCFS_DATA_FILE_BLOCK_SIZE);
+		}
+
+		rnd_buf((uint8_t *)data, block_size, seed);
+		sha256(data, INCFS_DATA_FILE_BLOCK_SIZE, hash_ptr);
+	}
+
+	/* Build higher levels of hash tree. */
+	for (level = 1; level < levels_count; level++) {
+		int prev_lvl_base = tree_lvl_index[level - 1];
+		int prev_lvl_count = tree_lvl_count[level - 1];
+
+		for (i = 0; i < prev_lvl_count; i++) {
+			int block_index =
+				i / hash_per_block + tree_lvl_index[level];
+			int block_off = (i % hash_per_block) * digest_size;
+			char *hash_ptr =
+				file->mtree[block_index].data + block_off;
+
+			sha256(file->mtree[i + prev_lvl_base].data,
+			       INCFS_DATA_FILE_BLOCK_SIZE, hash_ptr);
+		}
+	}
+
+	/* Calculate root hash from the top block */
+	sha256(file->mtree[0].data,
+		INCFS_DATA_FILE_BLOCK_SIZE, file->root_hash);
+
+	return 0;
+}
+
+static int load_hash_tree(const char *mount_dir, struct test_file *file)
+{
+	int err;
+	int i;
+	int fd;
+	struct incfs_fill_blocks fill_blocks = {
+		.count = file->mtree_block_count,
+	};
+	struct incfs_fill_block *fill_block_array =
+		calloc(fill_blocks.count, sizeof(struct incfs_fill_block));
+
+	if (fill_blocks.count == 0)
+		return 0;
+
+	if (!fill_block_array)
+		return -ENOMEM;
+	fill_blocks.fill_blocks = ptr_to_u64(fill_block_array);
+
+	for (i = 0; i < fill_blocks.count; i++) {
+		fill_block_array[i] = (struct incfs_fill_block){
+			.block_index = i,
+			.data_len = INCFS_DATA_FILE_BLOCK_SIZE,
+			.data = ptr_to_u64(file->mtree[i].data),
+			.flags = INCFS_BLOCK_FLAGS_HASH
+		};
+	}
+
+	fd = open_file_by_id(mount_dir, file->id, false);
+	if (fd < 0) {
+		err = errno;
+		goto failure;
+	}
+
+	err = ioctl(fd, INCFS_IOC_FILL_BLOCKS, &fill_blocks);
+	close(fd);
+	if (err >= 0) {
+		err = -EPERM;
+		goto failure;
+	}
+
+	fd = open_file_by_id(mount_dir, file->id, true);
+	if (fd < 0) {
+		err = errno;
+		goto failure;
+	}
+
+	err = ioctl(fd, INCFS_IOC_FILL_BLOCKS, &fill_blocks);
+	close(fd);
+	if (err < fill_blocks.count)
+		err = errno;
+	else
+		err = 0;
+
+failure:
+	free(fill_block_array);
+	return err;
+}
+
+static int cant_touch_index_test(const char *mount_dir)
+{
+	char *file_name = "test_file";
+	int file_size = 123;
+	incfs_uuid_t file_id;
+	char *index_path = concat_file_name(mount_dir, ".index");
+	char *subdir = concat_file_name(index_path, "subdir");
+	char *dst_name = concat_file_name(mount_dir, "something");
+	char *filename_in_index = NULL;
+	char *file_path = concat_file_name(mount_dir, file_name);
+	char *backing_dir;
+	int cmd_fd = -1;
+	int err;
+
+	backing_dir = create_backing_dir(mount_dir);
+	if (!backing_dir)
+		goto failure;
+
+	/* Mount FS and release the backing file. */
+	if (mount_fs(mount_dir, backing_dir, 50) != 0)
+		goto failure;
+	free(backing_dir);
+
+	cmd_fd = open_commands_file(mount_dir);
+	if (cmd_fd < 0)
+		goto failure;
+
+
+	err = mkdir(subdir, 0777);
+	if (err == 0 || errno != EBUSY) {
+		print_error("Shouldn't be able to crate subdir in index\n");
+		goto failure;
+	}
+
+	err = rmdir(index_path);
+	if (err == 0 || errno != EBUSY) {
+		print_error(".index directory should not be removed\n");
+		goto failure;
+	}
+
+	err = emit_file(cmd_fd, ".index", file_name, &file_id,
+				file_size, NULL);
+	if (err != -EBUSY) {
+		print_error("Shouldn't be able to crate a file in index\n");
+		goto failure;
+	}
+
+	err = emit_file(cmd_fd, NULL, file_name, &file_id,
+				file_size, NULL);
+	if (err < 0)
+		goto failure;
+	filename_in_index = get_index_filename(mount_dir, file_id);
+
+	err = unlink(filename_in_index);
+	if (err == 0 || errno != EBUSY) {
+		print_error("Shouldn't be delete from index\n");
+		goto failure;
+	}
+
+
+	err = rename(filename_in_index, dst_name);
+	if (err == 0 || errno != EBUSY) {
+		print_error("Shouldn't be able to move from index\n");
+		goto failure;
+	}
+
+	free(filename_in_index);
+	filename_in_index = concat_file_name(index_path, "abc");
+	err = link(file_path, filename_in_index);
+	if (err == 0 || errno != EBUSY) {
+		print_error("Shouldn't be able to link inside index\n");
+		goto failure;
+	}
+
+	err = rename(index_path, dst_name);
+	if (err == 0 || errno != EBUSY) {
+		print_error("Shouldn't rename .index directory\n");
+		goto failure;
+	}
+
+	close(cmd_fd);
+	free(subdir);
+	free(index_path);
+	free(dst_name);
+	free(filename_in_index);
+	if (umount(mount_dir) != 0) {
+		print_error("Can't unmout FS");
+		goto failure;
+	}
+
+	return TEST_SUCCESS;
+
+failure:
+	free(subdir);
+	free(dst_name);
+	free(index_path);
+	free(filename_in_index);
+	close(cmd_fd);
+	umount(mount_dir);
+	return TEST_FAILURE;
+}
+
+static bool iterate_directory(const char *dir_to_iterate, bool root,
+			      int file_count)
+{
+	struct expected_name {
+		const char *name;
+		bool root_only;
+		bool found;
+	} names[] = {
+		{INCFS_LOG_FILENAME, true, false},
+		{INCFS_PENDING_READS_FILENAME, true, false},
+		{INCFS_BLOCKS_WRITTEN_FILENAME, true, false},
+		{".index", true, false},
+		{".incomplete", true, false},
+		{"..", false, false},
+		{".", false, false},
+	};
+
+	bool pass = true, found;
+	int i;
+
+	/* Test directory iteration */
+	int fd = open(dir_to_iterate, O_RDONLY | O_DIRECTORY | O_CLOEXEC);
+
+	if (fd < 0) {
+		print_error("Can't open directory\n");
+		return false;
+	}
+
+	for (;;) {
+		/* Enough space for one dirent - no name over 30 */
+		char buf[sizeof(struct linux_dirent64) + NAME_MAX];
+		struct linux_dirent64 *dirent = (struct linux_dirent64 *) buf;
+		int nread;
+		int i;
+
+		for (i = 0; i < NAME_MAX; ++i) {
+			nread = syscall(__NR_getdents64, fd, buf,
+					 sizeof(struct linux_dirent64) + i);
+
+			if (nread >= 0)
+				break;
+			if (errno != EINVAL)
+				break;
+		}
+
+		if (nread == 0)
+			break;
+		if (nread < 0) {
+			print_error("Error iterating directory\n");
+			pass = false;
+			goto failure;
+		}
+
+		/* Expected size is rounded up to 8 byte boundary. Not sure if
+		 * this is universal truth or just happenstance, but useful test
+		 * for the moment
+		 */
+		if (nread != (((sizeof(struct linux_dirent64)
+				+ strlen(dirent->d_name) + 1) + 7) & ~7)) {
+			print_error("Wrong dirent size");
+			pass = false;
+			goto failure;
+		}
+
+		found = false;
+		for (i = 0; i < sizeof(names) / sizeof(*names); ++i)
+			if (!strcmp(dirent->d_name, names[i].name)) {
+				if (names[i].root_only && !root) {
+					print_error("Root file error");
+					pass = false;
+					goto failure;
+				}
+
+				if (names[i].found) {
+					print_error("File appears twice");
+					pass = false;
+					goto failure;
+				}
+
+				names[i].found = true;
+				found = true;
+				break;
+			}
+
+		if (!found)
+			--file_count;
+	}
+
+	for (i = 0; i < sizeof(names) / sizeof(*names); ++i) {
+		if (!names[i].found)
+			if (root || !names[i].root_only) {
+				print_error("Expected file not present");
+				pass = false;
+				goto failure;
+			}
+	}
+
+	if (file_count) {
+		print_error("Wrong number of files\n");
+		pass = false;
+		goto failure;
+	}
+
+failure:
+	close(fd);
+	return pass;
+}
+
+static int basic_file_ops_test(const char *mount_dir)
+{
+	struct test_files_set test = get_test_files_set();
+	const int file_num = test.files_count;
+	char *subdir1 = concat_file_name(mount_dir, "subdir1");
+	char *subdir2 = concat_file_name(mount_dir, "subdir2");
+	char *backing_dir;
+	int cmd_fd = -1;
+	int i, err;
+
+	backing_dir = create_backing_dir(mount_dir);
+	if (!backing_dir)
+		goto failure;
+
+	/* Mount FS and release the backing file. */
+	if (mount_fs(mount_dir, backing_dir, 50) != 0)
+		goto failure;
+	free(backing_dir);
+
+	cmd_fd = open_commands_file(mount_dir);
+	if (cmd_fd < 0)
+		goto failure;
+
+	err = mkdir(subdir1, 0777);
+	if (err < 0 && errno != EEXIST) {
+		print_error("Can't create subdir1\n");
+		goto failure;
+	}
+
+	err = mkdir(subdir2, 0777);
+	if (err < 0 && errno != EEXIST) {
+		print_error("Can't create subdir2\n");
+		goto failure;
+	}
+
+	/* Create all test files in subdir1 directory */
+	for (i = 0; i < file_num; i++) {
+		struct test_file *file = &test.files[i];
+		loff_t size;
+		char *file_path = concat_file_name(subdir1, file->name);
+
+		err = emit_file(cmd_fd, "subdir1", file->name, &file->id,
+				     file->size, NULL);
+		if (err < 0)
+			goto failure;
+
+		size = get_file_size(file_path);
+		free(file_path);
+		if (size != file->size) {
+			ksft_print_msg("Wrong size %lld of %s.\n",
+				size, file->name);
+			goto failure;
+		}
+	}
+
+	if (!iterate_directory(subdir1, false, file_num))
+		goto failure;
+
+	/* Link the files to subdir2 */
+	for (i = 0; i < file_num; i++) {
+		struct test_file *file = &test.files[i];
+		char *src_name = concat_file_name(subdir1, file->name);
+		char *dst_name = concat_file_name(subdir2, file->name);
+		loff_t size;
+
+		err = link(src_name, dst_name);
+		if (err < 0) {
+			print_error("Can't move file\n");
+			goto failure;
+		}
+
+		size = get_file_size(dst_name);
+		if (size != file->size) {
+			ksft_print_msg("Wrong size %lld of %s.\n",
+				size, file->name);
+			goto failure;
+		}
+		free(src_name);
+		free(dst_name);
+	}
+
+	/* Move the files from subdir2 to the mount dir */
+	for (i = 0; i < file_num; i++) {
+		struct test_file *file = &test.files[i];
+		char *src_name = concat_file_name(subdir2, file->name);
+		char *dst_name = concat_file_name(mount_dir, file->name);
+		loff_t size;
+
+		err = rename(src_name, dst_name);
+		if (err < 0) {
+			print_error("Can't move file\n");
+			goto failure;
+		}
+
+		size = get_file_size(dst_name);
+		if (size != file->size) {
+			ksft_print_msg("Wrong size %lld of %s.\n",
+				size, file->name);
+			goto failure;
+		}
+		free(src_name);
+		free(dst_name);
+	}
+
+	/* +2 because there are 2 subdirs */
+	if (!iterate_directory(mount_dir, true, file_num + 2))
+		goto failure;
+
+	/* Open and close all files from the mount dir */
+	for (i = 0; i < file_num; i++) {
+		struct test_file *file = &test.files[i];
+		char *path = concat_file_name(mount_dir, file->name);
+		int fd;
+
+		fd = open(path, O_RDWR | O_CLOEXEC);
+		free(path);
+		if (fd <= 0) {
+			print_error("Can't open file");
+			goto failure;
+		}
+		if (close(fd)) {
+			print_error("Can't close file");
+			goto failure;
+		}
+	}
+
+	/* Delete all files from the mount dir */
+	for (i = 0; i < file_num; i++) {
+		struct test_file *file = &test.files[i];
+		char *path = concat_file_name(mount_dir, file->name);
+
+		err = unlink(path);
+		free(path);
+		if (err < 0) {
+			print_error("Can't unlink file");
+			goto failure;
+		}
+	}
+
+	err = delete_dir_tree(subdir1);
+	if (err) {
+		ksft_print_msg("Error deleting subdir1 %d", err);
+		goto failure;
+	}
+
+	err = rmdir(subdir2);
+	if (err) {
+		print_error("Error deleting subdir2");
+		goto failure;
+	}
+
+	close(cmd_fd);
+	cmd_fd = -1;
+	if (umount(mount_dir) != 0) {
+		print_error("Can't unmout FS");
+		goto failure;
+	}
+
+	return TEST_SUCCESS;
+
+failure:
+	close(cmd_fd);
+	umount(mount_dir);
+	return TEST_FAILURE;
+}
+
+static int dynamic_files_and_data_test(const char *mount_dir)
+{
+	struct test_files_set test = get_test_files_set();
+	const int file_num = test.files_count;
+	const int missing_file_idx = 5;
+	int cmd_fd = -1;
+	char *backing_dir;
+	int i;
+
+	backing_dir = create_backing_dir(mount_dir);
+	if (!backing_dir)
+		goto failure;
+
+	/* Mount FS and release the backing file. */
+	if (mount_fs(mount_dir, backing_dir, 50) != 0)
+		goto failure;
+	free(backing_dir);
+
+	cmd_fd = open_commands_file(mount_dir);
+	if (cmd_fd < 0)
+		goto failure;
+
+	/* Check that test files don't exist in the filesystem. */
+	for (i = 0; i < file_num; i++) {
+		struct test_file *file = &test.files[i];
+		char *filename = concat_file_name(mount_dir, file->name);
+
+		if (access(filename, F_OK) != -1) {
+			ksft_print_msg(
+				"File %s somehow already exists in a clean FS.\n",
+				filename);
+			goto failure;
+		}
+		free(filename);
+	}
+
+	/* Write test data into the command file. */
+	for (i = 0; i < file_num; i++) {
+		struct test_file *file = &test.files[i];
+		int res;
+
+		res = emit_file(cmd_fd, NULL, file->name, &file->id,
+				     file->size, NULL);
+		if (res < 0) {
+			ksft_print_msg("Error %s emiting file %s.\n",
+				       strerror(-res), file->name);
+			goto failure;
+		}
+
+		/* Skip writing data to one file so we can check */
+		/* that it's missing later. */
+		if (i == missing_file_idx)
+			continue;
+
+		res = emit_test_file_data(mount_dir, file);
+		if (res) {
+			ksft_print_msg("Error %s emiting data for %s.\n",
+				       strerror(-res), file->name);
+			goto failure;
+		}
+	}
+
+	/* Validate contents of the FS */
+	for (i = 0; i < file_num; i++) {
+		struct test_file *file = &test.files[i];
+
+		if (i == missing_file_idx) {
+			/* No data has been written to this file. */
+			/* Check for read error; */
+			uint8_t buf;
+			char *filename =
+				concat_file_name(mount_dir, file->name);
+			int res = read_test_file(&buf, 1, filename, 0);
+
+			free(filename);
+			if (res > 0) {
+				ksft_print_msg(
+					"Data present, even though never writtern.\n");
+				goto failure;
+			}
+			if (res != -ETIME) {
+				ksft_print_msg("Wrong error code: %d.\n", res);
+				goto failure;
+			}
+		} else {
+			if (validate_test_file_content(mount_dir, file) < 0)
+				goto failure;
+		}
+	}
+
+	close(cmd_fd);
+	cmd_fd = -1;
+	if (umount(mount_dir) != 0) {
+		print_error("Can't unmout FS");
+		goto failure;
+	}
+
+	return TEST_SUCCESS;
+
+failure:
+	close(cmd_fd);
+	umount(mount_dir);
+	return TEST_FAILURE;
+}
+
+static int concurrent_reads_and_writes_test(const char *mount_dir)
+{
+	struct test_files_set test = get_test_files_set();
+	const int file_num = test.files_count;
+	/* Validate each file from that many child processes. */
+	const int child_multiplier = 3;
+	int cmd_fd = -1;
+	char *backing_dir;
+	int status;
+	int i;
+	pid_t producer_pid;
+	pid_t *child_pids = alloca(child_multiplier * file_num * sizeof(pid_t));
+
+	backing_dir = create_backing_dir(mount_dir);
+	if (!backing_dir)
+		goto failure;
+
+	/* Mount FS and release the backing file. */
+	if (mount_fs(mount_dir, backing_dir, 500) != 0)
+		goto failure;
+	free(backing_dir);
+
+	cmd_fd = open_commands_file(mount_dir);
+	if (cmd_fd < 0)
+		goto failure;
+
+	/* Tell FS about the files, without actually providing the data. */
+	for (i = 0; i < file_num; i++) {
+		struct test_file *file = &test.files[i];
+		int res;
+
+		res = emit_file(cmd_fd, NULL, file->name, &file->id,
+				     file->size, NULL);
+		if (res)
+			goto failure;
+	}
+
+	/* Start child processes acessing data in the files */
+	for (i = 0; i < file_num * child_multiplier; i++) {
+		struct test_file *file = &test.files[i / child_multiplier];
+		pid_t child_pid = flush_and_fork();
+
+		if (child_pid == 0) {
+			/* This is a child process, do the data validation. */
+			int ret = validate_test_file_content_with_seed(
+				mount_dir, file, i);
+			if (ret >= 0) {
+				/* Zero exit status if data is valid. */
+				exit(0);
+			}
+
+			/* Positive status if validation error found. */
+			exit(-ret);
+		} else if (child_pid > 0) {
+			child_pids[i] = child_pid;
+		} else {
+			print_error("Fork error");
+			goto failure;
+		}
+	}
+
+	producer_pid = flush_and_fork();
+	if (producer_pid == 0) {
+		int ret;
+		/*
+		 * This is a child that should provide data to
+		 * pending reads.
+		 */
+
+		ret = data_producer(mount_dir, &test);
+		exit(-ret);
+	} else {
+		status = wait_for_process(producer_pid);
+		if (status != 0) {
+			ksft_print_msg("Data produces failed. %d(%s) ", status,
+				       strerror(status));
+			goto failure;
+		}
+	}
+
+	/* Check that all children has finished with 0 exit status */
+	for (i = 0; i < file_num * child_multiplier; i++) {
+		struct test_file *file = &test.files[i / child_multiplier];
+
+		status = wait_for_process(child_pids[i]);
+		if (status != 0) {
+			ksft_print_msg(
+				"Validation for the file %s failed with code %d (%s)\n",
+				file->name, status, strerror(status));
+			goto failure;
+		}
+	}
+
+	/* Check that there are no pending reads left */
+	{
+		struct incfs_pending_read_info prs[1] = {};
+		int timeout = 0;
+		int read_count = wait_for_pending_reads(cmd_fd, timeout, prs,
+							ARRAY_SIZE(prs));
+
+		if (read_count) {
+			ksft_print_msg(
+				"Pending reads pending when all data written\n");
+			goto failure;
+		}
+	}
+
+	close(cmd_fd);
+	cmd_fd = -1;
+	if (umount(mount_dir) != 0) {
+		print_error("Can't unmout FS");
+		goto failure;
+	}
+
+	return TEST_SUCCESS;
+
+failure:
+	close(cmd_fd);
+	umount(mount_dir);
+	return TEST_FAILURE;
+}
+
+static int work_after_remount_test(const char *mount_dir)
+{
+	struct test_files_set test = get_test_files_set();
+	const int file_num = test.files_count;
+	const int file_num_stage1 = file_num / 2;
+	const int file_num_stage2 = file_num;
+	char *backing_dir = NULL;
+	int i = 0;
+	int cmd_fd = -1;
+
+	backing_dir = create_backing_dir(mount_dir);
+	if (!backing_dir)
+		goto failure;
+
+	/* Mount FS and release the backing file. */
+	if (mount_fs(mount_dir, backing_dir, 50) != 0)
+		goto failure;
+
+	cmd_fd = open_commands_file(mount_dir);
+	if (cmd_fd < 0)
+		goto failure;
+
+	/* Write first half of the data into the command file. (stage 1) */
+	for (i = 0; i < file_num_stage1; i++) {
+		struct test_file *file = &test.files[i];
+
+		if (emit_file(cmd_fd, NULL, file->name, &file->id,
+				     file->size, NULL))
+			goto failure;
+
+		if (emit_test_file_data(mount_dir, file))
+			goto failure;
+	}
+
+	/* Unmount and mount again, to see that data is persistent. */
+	close(cmd_fd);
+	cmd_fd = -1;
+	if (umount(mount_dir) != 0) {
+		print_error("Can't unmout FS");
+		goto failure;
+	}
+
+	if (mount_fs(mount_dir, backing_dir, 50) != 0)
+		goto failure;
+
+	cmd_fd = open_commands_file(mount_dir);
+	if (cmd_fd < 0)
+		goto failure;
+
+	/* Write the second half of the data into the command file. (stage 2) */
+	for (; i < file_num_stage2; i++) {
+		struct test_file *file = &test.files[i];
+		int res = emit_file(cmd_fd, NULL, file->name, &file->id,
+				     file->size, NULL);
+
+		if (res)
+			goto failure;
+
+		if (emit_test_file_data(mount_dir, file))
+			goto failure;
+	}
+
+	/* Validate contents of the FS */
+	for (i = 0; i < file_num_stage2; i++) {
+		struct test_file *file = &test.files[i];
+
+		if (validate_test_file_content(mount_dir, file) < 0)
+			goto failure;
+	}
+
+	/* Delete all files */
+	for (i = 0; i < file_num; i++) {
+		struct test_file *file = &test.files[i];
+		char *filename = concat_file_name(mount_dir, file->name);
+		char *filename_in_index = get_index_filename(mount_dir,
+							file->id);
+
+		if (access(filename, F_OK) != 0) {
+			ksft_print_msg("File %s is not visible.\n", filename);
+			goto failure;
+		}
+
+		if (access(filename_in_index, F_OK) != 0) {
+			ksft_print_msg("File %s is not visible.\n",
+				filename_in_index);
+			goto failure;
+		}
+
+		unlink(filename);
+
+		if (access(filename, F_OK) != -1) {
+			ksft_print_msg("File %s is still present.\n", filename);
+			goto failure;
+		}
+
+		if (access(filename_in_index, F_OK) != -1) {
+			ksft_print_msg("File %s is still present.\n",
+				filename_in_index);
+			goto failure;
+		}
+		free(filename);
+		free(filename_in_index);
+	}
+
+	/* Unmount and mount again, to see that deleted files stay deleted. */
+	close(cmd_fd);
+	cmd_fd = -1;
+	if (umount(mount_dir) != 0) {
+		print_error("Can't unmout FS");
+		goto failure;
+	}
+
+	if (mount_fs(mount_dir, backing_dir, 50) != 0)
+		goto failure;
+
+	cmd_fd = open_commands_file(mount_dir);
+	if (cmd_fd < 0)
+		goto failure;
+
+	/* Validate all deleted files are still deleted. */
+	for (i = 0; i < file_num; i++) {
+		struct test_file *file = &test.files[i];
+		char *filename = concat_file_name(mount_dir, file->name);
+
+		if (access(filename, F_OK) != -1) {
+			ksft_print_msg("File %s is still visible.\n", filename);
+			goto failure;
+		}
+		free(filename);
+	}
+
+	/* Final unmount */
+	close(cmd_fd);
+	free(backing_dir);
+	cmd_fd = -1;
+	if (umount(mount_dir) != 0) {
+		print_error("Can't unmout FS");
+		goto failure;
+	}
+
+	return TEST_SUCCESS;
+
+failure:
+	close(cmd_fd);
+	free(backing_dir);
+	umount(mount_dir);
+	return TEST_FAILURE;
+}
+
+static int attribute_test(const char *mount_dir)
+{
+	char file_attr[] = "metadata123123";
+	char attr_buf[INCFS_MAX_FILE_ATTR_SIZE] = {};
+	int cmd_fd = -1;
+	incfs_uuid_t file_id;
+	int attr_res = 0;
+	char *backing_dir;
+
+
+	backing_dir = create_backing_dir(mount_dir);
+	if (!backing_dir)
+		goto failure;
+
+	/* Mount FS and release the backing file. */
+	if (mount_fs(mount_dir, backing_dir, 50) != 0)
+		goto failure;
+
+
+	cmd_fd = open_commands_file(mount_dir);
+	if (cmd_fd < 0)
+		goto failure;
+
+	if (emit_file(cmd_fd, NULL, "file", &file_id, 12, file_attr))
+		goto failure;
+
+	/* Test attribute values */
+	attr_res = get_file_attr(mount_dir, file_id, attr_buf,
+		ARRAY_SIZE(attr_buf));
+	if (attr_res != strlen(file_attr)) {
+		ksft_print_msg("Get file attr error: %d\n", attr_res);
+		goto failure;
+	}
+	if (strcmp(attr_buf, file_attr) != 0) {
+		ksft_print_msg("Incorrect file attr value: '%s'", attr_buf);
+		goto failure;
+	}
+
+	/* Unmount and mount again, to see that attributes are persistent. */
+	close(cmd_fd);
+	cmd_fd = -1;
+	if (umount(mount_dir) != 0) {
+		print_error("Can't unmout FS");
+		goto failure;
+	}
+
+	if (mount_fs(mount_dir, backing_dir, 50) != 0)
+		goto failure;
+
+	cmd_fd = open_commands_file(mount_dir);
+	if (cmd_fd < 0)
+		goto failure;
+
+	/* Test attribute values again after remount*/
+	attr_res = get_file_attr(mount_dir, file_id, attr_buf,
+		ARRAY_SIZE(attr_buf));
+	if (attr_res != strlen(file_attr)) {
+		ksft_print_msg("Get dir attr error: %d\n", attr_res);
+		goto failure;
+	}
+	if (strcmp(attr_buf, file_attr) != 0) {
+		ksft_print_msg("Incorrect file attr value: '%s'", attr_buf);
+		goto failure;
+	}
+
+	/* Final unmount */
+	close(cmd_fd);
+	free(backing_dir);
+	cmd_fd = -1;
+	if (umount(mount_dir) != 0) {
+		print_error("Can't unmout FS");
+		goto failure;
+	}
+
+	return TEST_SUCCESS;
+
+failure:
+	close(cmd_fd);
+	free(backing_dir);
+	umount(mount_dir);
+	return TEST_FAILURE;
+}
+
+static int child_procs_waiting_for_data_test(const char *mount_dir)
+{
+	struct test_files_set test = get_test_files_set();
+	const int file_num = test.files_count;
+	int cmd_fd = -1;
+	int i;
+	pid_t *child_pids = alloca(file_num * sizeof(pid_t));
+	char *backing_dir;
+
+	backing_dir = create_backing_dir(mount_dir);
+	if (!backing_dir)
+		goto failure;
+
+	/* Mount FS and release the backing file.  (10s wait time) */
+	if (mount_fs(mount_dir, backing_dir, 10000) != 0)
+		goto failure;
+
+
+	cmd_fd = open_commands_file(mount_dir);
+	if (cmd_fd < 0)
+		goto failure;
+
+	/* Tell FS about the files, without actually providing the data. */
+	for (i = 0; i < file_num; i++) {
+		struct test_file *file = &test.files[i];
+
+		emit_file(cmd_fd, NULL, file->name, &file->id,
+				     file->size, NULL);
+	}
+
+	/* Start child processes acessing data in the files */
+	for (i = 0; i < file_num; i++) {
+		struct test_file *file = &test.files[i];
+		pid_t child_pid = flush_and_fork();
+
+		if (child_pid == 0) {
+			/* This is a child process, do the data validation. */
+			int ret = validate_test_file_content(mount_dir, file);
+
+			if (ret >= 0) {
+				/* Zero exit status if data is valid. */
+				exit(0);
+			}
+
+			/* Positive status if validation error found. */
+			exit(-ret);
+		} else if (child_pid > 0) {
+			child_pids[i] = child_pid;
+		} else {
+			print_error("Fork error");
+			goto failure;
+		}
+	}
+
+	/* Write test data into the command file. */
+	for (i = 0; i < file_num; i++) {
+		struct test_file *file = &test.files[i];
+
+		if (emit_test_file_data(mount_dir, file))
+			goto failure;
+	}
+
+	/* Check that all children has finished with 0 exit status */
+	for (i = 0; i < file_num; i++) {
+		struct test_file *file = &test.files[i];
+		int status = wait_for_process(child_pids[i]);
+
+		if (status != 0) {
+			ksft_print_msg(
+				"Validation for the file %s failed with code %d (%s)\n",
+				file->name, status, strerror(status));
+			goto failure;
+		}
+	}
+
+	close(cmd_fd);
+	free(backing_dir);
+	cmd_fd = -1;
+	if (umount(mount_dir) != 0) {
+		print_error("Can't unmout FS");
+		goto failure;
+	}
+
+	return TEST_SUCCESS;
+
+failure:
+	close(cmd_fd);
+	free(backing_dir);
+	umount(mount_dir);
+	return TEST_FAILURE;
+}
+
+static int multiple_providers_test(const char *mount_dir)
+{
+	struct test_files_set test = get_test_files_set();
+	const int file_num = test.files_count;
+	const int producer_count = 5;
+	int cmd_fd = -1;
+	int status;
+	int i;
+	pid_t *producer_pids = alloca(producer_count * sizeof(pid_t));
+	char *backing_dir;
+
+	backing_dir = create_backing_dir(mount_dir);
+	if (!backing_dir)
+		goto failure;
+
+	/* Mount FS and release the backing file.  (10s wait time) */
+	if (mount_fs_opt(mount_dir, backing_dir,
+			 "read_timeout_ms=10000,report_uid", false) != 0)
+		goto failure;
+
+	cmd_fd = open_commands_file(mount_dir);
+	if (cmd_fd < 0)
+		goto failure;
+
+	/* Tell FS about the files, without actually providing the data. */
+	for (i = 0; i < file_num; i++) {
+		struct test_file *file = &test.files[i];
+
+		if (emit_file(cmd_fd, NULL, file->name, &file->id,
+				     file->size, NULL) < 0)
+			goto failure;
+	}
+
+	/* Start producer processes */
+	for (i = 0; i < producer_count; i++) {
+		pid_t producer_pid = flush_and_fork();
+
+		if (producer_pid == 0) {
+			int ret;
+			/*
+			 * This is a child that should provide data to
+			 * pending reads.
+			 */
+
+			ret = data_producer2(mount_dir, &test);
+			exit(-ret);
+		} else if (producer_pid > 0) {
+			producer_pids[i] = producer_pid;
+		} else {
+			print_error("Fork error");
+			goto failure;
+		}
+	}
+
+	/* Validate FS content */
+	for (i = 0; i < file_num; i++) {
+		struct test_file *file = &test.files[i];
+		char *filename = concat_file_name(mount_dir, file->name);
+		loff_t read_result = read_whole_file(filename);
+
+		free(filename);
+		if (read_result != file->size) {
+			ksft_print_msg(
+				"Error validating file %s. Result: %ld\n",
+				file->name, read_result);
+			goto failure;
+		}
+	}
+
+	/* Check that all producers has finished with 0 exit status */
+	for (i = 0; i < producer_count; i++) {
+		status = wait_for_process(producer_pids[i]);
+		if (status != 0) {
+			ksft_print_msg("Producer %d failed with code (%s)\n", i,
+				       strerror(status));
+			goto failure;
+		}
+	}
+
+	close(cmd_fd);
+	free(backing_dir);
+	cmd_fd = -1;
+	if (umount(mount_dir) != 0) {
+		print_error("Can't unmout FS");
+		goto failure;
+	}
+
+	return TEST_SUCCESS;
+
+failure:
+	close(cmd_fd);
+	free(backing_dir);
+	umount(mount_dir);
+	return TEST_FAILURE;
+}
+
+static int validate_hash_tree(const char *mount_dir, struct test_file *file)
+{
+	int result = TEST_FAILURE;
+	char *filename = NULL;
+	int fd = -1;
+	unsigned char *buf;
+	int i, err;
+
+	TEST(filename = concat_file_name(mount_dir, file->name), filename);
+	TEST(fd = open(filename, O_RDONLY | O_CLOEXEC), fd != -1);
+	TEST(buf = malloc(INCFS_DATA_FILE_BLOCK_SIZE * 8), buf);
+
+	for (i = 0; i < file->mtree_block_count; ) {
+		int blocks_to_read = i % 7 + 1;
+		struct fsverity_read_metadata_arg args = {
+			.metadata_type = FS_VERITY_METADATA_TYPE_MERKLE_TREE,
+			.offset = i * INCFS_DATA_FILE_BLOCK_SIZE,
+			.length = blocks_to_read * INCFS_DATA_FILE_BLOCK_SIZE,
+			.buf_ptr = ptr_to_u64(buf),
+		};
+
+		TEST(err = ioctl(fd, FS_IOC_READ_VERITY_METADATA, &args),
+		     err == min(args.length, (file->mtree_block_count - i) *
+					     INCFS_DATA_FILE_BLOCK_SIZE));
+		TESTEQUAL(memcmp(buf, file->mtree[i].data, err), 0);
+
+		i += blocks_to_read;
+	}
+
+	result = TEST_SUCCESS;
+
+out:
+	free(buf);
+	close(fd);
+	free(filename);
+	return result;
+}
+
+static int hash_tree_test(const char *mount_dir)
+{
+	int result = TEST_FAILURE;
+	char *backing_dir;
+	struct test_files_set test = get_test_files_set();
+	const int file_num = test.files_count;
+	const int corrupted_file_idx = 5;
+	int i = 0;
+	int cmd_fd = -1;
+
+	backing_dir = create_backing_dir(mount_dir);
+	if (!backing_dir)
+		goto failure;
+
+	/* Mount FS and release the backing file. */
+	if (mount_fs(mount_dir, backing_dir, 50) != 0)
+		goto failure;
+
+	cmd_fd = open_commands_file(mount_dir);
+	if (cmd_fd < 0)
+		goto failure;
+
+	/* Write hashes and data. */
+	for (i = 0; i < file_num; i++) {
+		struct test_file *file = &test.files[i];
+		int res;
+
+		build_mtree(file);
+		res = crypto_emit_file(cmd_fd, NULL, file->name, &file->id,
+				       file->size, file->root_hash,
+				       file->sig.add_data);
+
+		if (i == corrupted_file_idx) {
+			/* Corrupt third blocks hash */
+			file->mtree[0].data[2 * SHA256_DIGEST_SIZE] ^= 0xff;
+		}
+		if (emit_test_file_data(mount_dir, file))
+			goto failure;
+
+		res = load_hash_tree(mount_dir, file);
+		if (res) {
+			ksft_print_msg("Can't load hashes for %s. error: %s\n",
+				file->name, strerror(-res));
+			goto failure;
+		}
+	}
+
+	/* Validate data */
+	for (i = 0; i < file_num; i++) {
+		struct test_file *file = &test.files[i];
+
+		if (i == corrupted_file_idx) {
+			uint8_t data[INCFS_DATA_FILE_BLOCK_SIZE];
+			char *filename =
+				concat_file_name(mount_dir, file->name);
+			int res;
+
+			res = read_test_file(data, INCFS_DATA_FILE_BLOCK_SIZE,
+					     filename, 2);
+			free(filename);
+			if (res != -EBADMSG) {
+				ksft_print_msg("Hash violation missed1. %d\n",
+					       res);
+				goto failure;
+			}
+		} else if (validate_test_file_content(mount_dir, file) < 0)
+			goto failure;
+		else if (validate_hash_tree(mount_dir, file) < 0)
+			goto failure;
+	}
+
+	/* Unmount and mount again, to that hashes are persistent. */
+	close(cmd_fd);
+	cmd_fd = -1;
+	if (umount(mount_dir) != 0) {
+		print_error("Can't unmout FS");
+		goto failure;
+	}
+	if (mount_fs(mount_dir, backing_dir, 50) != 0)
+		goto failure;
+
+	cmd_fd = open_commands_file(mount_dir);
+	if (cmd_fd < 0)
+		goto failure;
+
+	/* Validate data again */
+	for (i = 0; i < file_num; i++) {
+		struct test_file *file = &test.files[i];
+
+		if (i == corrupted_file_idx) {
+			uint8_t data[INCFS_DATA_FILE_BLOCK_SIZE];
+			char *filename =
+				concat_file_name(mount_dir, file->name);
+			int res;
+
+			res = read_test_file(data, INCFS_DATA_FILE_BLOCK_SIZE,
+					     filename, 2);
+			free(filename);
+			if (res != -EBADMSG) {
+				ksft_print_msg("Hash violation missed2. %d\n",
+					       res);
+				goto failure;
+			}
+		} else if (validate_test_file_content(mount_dir, file) < 0)
+			goto failure;
+	}
+	result = TEST_SUCCESS;
+
+failure:
+	for (i = 0; i < file_num; i++) {
+		struct test_file *file = &test.files[i];
+
+		free(file->mtree);
+	}
+
+	close(cmd_fd);
+	free(backing_dir);
+	umount(mount_dir);
+	return result;
+}
+
+enum expected_log { FULL_LOG, NO_LOG, PARTIAL_LOG };
+
+static int validate_logs(const char *mount_dir, int log_fd,
+			 struct test_file *file,
+			 enum expected_log expected_log,
+			 bool report_uid, bool expect_data)
+{
+	int result = TEST_FAILURE;
+	uint8_t data[INCFS_DATA_FILE_BLOCK_SIZE];
+	struct incfs_pending_read_info prs[2048] = {};
+	struct incfs_pending_read_info2 prs2[2048] = {};
+	struct incfs_pending_read_info *previous_record = NULL;
+	int prs_size = ARRAY_SIZE(prs);
+	int block_count = 1 + (file->size - 1) / INCFS_DATA_FILE_BLOCK_SIZE;
+	int expected_read_count, read_count, block_index, read_index;
+	char *filename = NULL;
+	int fd = -1;
+
+	TEST(filename = concat_file_name(mount_dir, file->name), filename);
+	TEST(fd = open(filename, O_RDONLY | O_CLOEXEC), fd != -1);
+
+	if (block_count > prs_size)
+		block_count = prs_size;
+	expected_read_count = block_count;
+
+	for (block_index = 0; block_index < block_count; block_index++) {
+		int result = pread(fd, data, sizeof(data),
+			    INCFS_DATA_FILE_BLOCK_SIZE * block_index);
+
+		/* Make some read logs of type SAME_FILE_NEXT_BLOCK */
+		if (block_index % 100 == 10)
+			usleep(20000);
+
+		/* Skip some blocks to make logs of type SAME_FILE */
+		if (block_index % 10 == 5) {
+			++block_index;
+			--expected_read_count;
+		}
+
+		if (expect_data)
+			TESTCOND(result > 0);
+
+		if (!expect_data)
+			TESTEQUAL(result, -1);
+	}
+
+	if (report_uid)
+		read_count = wait_for_pending_reads2(log_fd,
+				expected_log == NO_LOG ? 10 : 0,
+				prs2, prs_size);
+	else
+		read_count = wait_for_pending_reads(log_fd,
+				expected_log == NO_LOG ? 10 : 0,
+				prs, prs_size);
+
+	if (expected_log == NO_LOG)
+		TESTEQUAL(read_count, 0);
+
+	if (expected_log == PARTIAL_LOG)
+		TESTCOND(read_count > 0 &&
+			 read_count <= expected_read_count);
+
+	if (expected_log == FULL_LOG)
+		TESTEQUAL(read_count, expected_read_count);
+
+	/* If read less than expected, advance block_index appropriately */
+	for (block_index = 0, read_index = 0;
+	     read_index < expected_read_count - read_count;
+	     block_index++, read_index++)
+		if (block_index % 10 == 5)
+			++block_index;
+
+	for (read_index = 0; read_index < read_count;
+	     block_index++, read_index++) {
+		struct incfs_pending_read_info *record = report_uid ?
+			(struct incfs_pending_read_info *) &prs2[read_index] :
+			&prs[read_index];
+
+		TESTCOND(same_id(&record->file_id, &file->id));
+		TESTEQUAL(record->block_index, block_index);
+		TESTNE(record->timestamp_us, 0);
+		if (previous_record)
+			TESTEQUAL(record->serial_number,
+				  previous_record->serial_number + 1);
+
+		previous_record = record;
+		if (block_index % 10 == 5)
+			++block_index;
+	}
+
+	result = TEST_SUCCESS;
+out:
+	close(fd);
+	free(filename);
+	return result;
+}
+
+static int read_log_test(const char *mount_dir)
+{
+	int result = TEST_FAILURE;
+	struct test_files_set test = get_test_files_set();
+	const int file_num = test.files_count;
+	int i = 0;
+	int cmd_fd = -1, log_fd = -1;
+	char *backing_dir = NULL;
+
+	/* Create files */
+	TEST(backing_dir = create_backing_dir(mount_dir), backing_dir);
+	TESTEQUAL(mount_fs_opt(mount_dir, backing_dir,
+			       "readahead=0,report_uid,read_timeout_ms=0",
+				 false), 0);
+	TEST(cmd_fd = open_commands_file(mount_dir), cmd_fd != -1);
+	for (i = 0; i < file_num; i++) {
+		struct test_file *file = &test.files[i];
+
+		TESTEQUAL(emit_file(cmd_fd, NULL, file->name, &file->id,
+				    file->size, NULL), 0);
+	}
+	close(cmd_fd);
+	cmd_fd = -1;
+
+	/* Validate logs */
+	TEST(log_fd = open_log_file(mount_dir), log_fd != -1);
+	for (i = 0; i < file_num; i++)
+		TESTEQUAL(validate_logs(mount_dir, log_fd, &test.files[i],
+					FULL_LOG, true, false), 0);
+
+	/* Unmount and mount again without report_uid */
+	close(log_fd);
+	log_fd = -1;
+	TESTEQUAL(umount(mount_dir), 0);
+	TESTEQUAL(mount_fs_opt(mount_dir, backing_dir,
+			       "readahead=0,read_timeout_ms=0", false), 0);
+
+	TEST(log_fd = open_log_file(mount_dir), log_fd != -1);
+	for (i = 0; i < file_num; i++)
+		TESTEQUAL(validate_logs(mount_dir, log_fd, &test.files[i],
+					FULL_LOG, false, false), 0);
+
+	/* No read log to make sure poll doesn't crash */
+	close(log_fd);
+	log_fd = -1;
+	TESTEQUAL(umount(mount_dir), 0);
+	TESTEQUAL(mount_fs_opt(mount_dir, backing_dir,
+			       "readahead=0,rlog_pages=0,read_timeout_ms=0",
+			       false), 0);
+
+	TEST(log_fd = open_log_file(mount_dir), log_fd != -1);
+	for (i = 0; i < file_num; i++)
+		TESTEQUAL(validate_logs(mount_dir, log_fd, &test.files[i],
+					NO_LOG, false, false), 0);
+
+	/* Remount and check that logs start working again */
+	TESTEQUAL(mount_fs_opt(mount_dir, backing_dir,
+			       "readahead=0,rlog_pages=1,read_timeout_ms=0",
+			       true), 0);
+	for (i = 0; i < file_num; i++)
+		TESTEQUAL(validate_logs(mount_dir, log_fd, &test.files[i],
+					PARTIAL_LOG, false, false), 0);
+
+	/* Remount and check that logs continue working */
+	TESTEQUAL(mount_fs_opt(mount_dir, backing_dir,
+			       "readahead=0,rlog_pages=4,read_timeout_ms=0",
+			       true), 0);
+	for (i = 0; i < file_num; i++)
+		TESTEQUAL(validate_logs(mount_dir, log_fd, &test.files[i],
+					FULL_LOG, false, false), 0);
+
+	/* Check logs work with data */
+	for (i = 0; i < file_num; i++) {
+		TESTEQUAL(emit_test_file_data(mount_dir, &test.files[i]), 0);
+		TESTEQUAL(validate_logs(mount_dir, log_fd, &test.files[i],
+					FULL_LOG, false, true), 0);
+	}
+
+	/* Final unmount */
+	close(log_fd);
+	log_fd = -1;
+	TESTEQUAL(umount(mount_dir), 0);
+
+	result = TEST_SUCCESS;
+out:
+	close(cmd_fd);
+	close(log_fd);
+	free(backing_dir);
+	umount(mount_dir);
+	return result;
+}
+
+static int emit_partial_test_file_data(const char *mount_dir,
+				       struct test_file *file)
+{
+	int i, j;
+	int block_cnt = 1 + (file->size - 1) / INCFS_DATA_FILE_BLOCK_SIZE;
+	int *block_indexes = NULL;
+	int result = 0;
+	int blocks_written = 0;
+	int bw_fd = -1;
+	char buffer[20];
+	struct pollfd pollfd;
+	long blocks_written_total, blocks_written_new_total;
+
+	if (file->size == 0)
+		return 0;
+
+	bw_fd = open_blocks_written_file(mount_dir);
+	if (bw_fd == -1)
+		return -errno;
+
+	result = read(bw_fd, buffer, sizeof(buffer));
+	if (result <= 0) {
+		result = -EIO;
+		goto out;
+	}
+
+	buffer[result] = 0;
+	blocks_written_total = strtol(buffer, NULL, 10);
+	result = 0;
+
+	pollfd = (struct pollfd) {
+		.fd = bw_fd,
+		.events = POLLIN,
+	};
+
+	result = poll(&pollfd, 1, 0);
+	if (result) {
+		result = -EIO;
+		goto out;
+	}
+
+	/* Emit 2 blocks, skip 2 blocks etc*/
+	block_indexes = calloc(block_cnt, sizeof(*block_indexes));
+	for (i = 0, j = 0; i < block_cnt; ++i)
+		if ((i & 2) == 0) {
+			block_indexes[j] = i;
+			++j;
+		}
+
+	for (i = 0; i < j; i += blocks_written) {
+		blocks_written = emit_test_blocks(mount_dir, file,
+						  block_indexes + i, j - i);
+		if (blocks_written < 0) {
+			result = blocks_written;
+			goto out;
+		}
+		if (blocks_written == 0) {
+			result = -EIO;
+			goto out;
+		}
+
+		result = poll(&pollfd, 1, 0);
+		if (result != 1 || pollfd.revents != POLLIN) {
+			result = -EIO;
+			goto out;
+		}
+
+		result = read(bw_fd, buffer, sizeof(buffer));
+		buffer[result] = 0;
+		blocks_written_new_total = strtol(buffer, NULL, 10);
+
+		if (blocks_written_new_total - blocks_written_total
+		    != blocks_written) {
+			result = -EIO;
+			goto out;
+		}
+
+		blocks_written_total = blocks_written_new_total;
+		result = 0;
+	}
+out:
+	free(block_indexes);
+	close(bw_fd);
+	return result;
+}
+
+static int validate_ranges(const char *mount_dir, struct test_file *file)
+{
+	int block_cnt = 1 + (file->size - 1) / INCFS_DATA_FILE_BLOCK_SIZE;
+	char *filename = concat_file_name(mount_dir, file->name);
+	int fd;
+	struct incfs_filled_range ranges[128];
+	struct incfs_get_filled_blocks_args fba = {
+		.range_buffer = ptr_to_u64(ranges),
+		.range_buffer_size = sizeof(ranges),
+	};
+	int error = TEST_SUCCESS;
+	int i;
+	int range_cnt;
+	int cmd_fd = -1;
+	struct incfs_permit_fill permit_fill;
+
+	fd = open(filename, O_RDONLY | O_CLOEXEC);
+	free(filename);
+	if (fd <= 0)
+		return TEST_FAILURE;
+
+	error = ioctl(fd, INCFS_IOC_GET_FILLED_BLOCKS, &fba);
+	if (error != -1 || errno != EPERM) {
+		ksft_print_msg("INCFS_IOC_GET_FILLED_BLOCKS not blocked\n");
+		error = -EPERM;
+		goto out;
+	}
+
+	cmd_fd = open_commands_file(mount_dir);
+	permit_fill.file_descriptor = fd;
+	if (ioctl(cmd_fd, INCFS_IOC_PERMIT_FILL, &permit_fill)) {
+		print_error("INCFS_IOC_PERMIT_FILL failed");
+		return -EPERM;
+		goto out;
+	}
+
+	error = ioctl(fd, INCFS_IOC_GET_FILLED_BLOCKS, &fba);
+	if (error && errno != ERANGE)
+		goto out;
+
+	if (error && errno == ERANGE && block_cnt < 509)
+		goto out;
+
+	if (!error && block_cnt >= 509) {
+		error = -ERANGE;
+		goto out;
+	}
+
+	if (fba.total_blocks_out != block_cnt) {
+		error = -EINVAL;
+		goto out;
+	}
+
+	if (fba.data_blocks_out != block_cnt) {
+		error = -EINVAL;
+		goto out;
+	}
+
+	range_cnt = (block_cnt + 3) / 4;
+	if (range_cnt > 128)
+		range_cnt = 128;
+	if (range_cnt != fba.range_buffer_size_out / sizeof(*ranges)) {
+		error = -ERANGE;
+		goto out;
+	}
+
+	error = TEST_SUCCESS;
+	for (i = 0; i < fba.range_buffer_size_out / sizeof(*ranges) - 1; ++i)
+		if (ranges[i].begin != i * 4 || ranges[i].end != i * 4 + 2) {
+			error = -EINVAL;
+			goto out;
+		}
+
+	if (ranges[i].begin != i * 4 ||
+	    (ranges[i].end != i * 4 + 1 && ranges[i].end != i * 4 + 2)) {
+		error = -EINVAL;
+		goto out;
+	}
+
+	for (i = 0; i < 64; ++i) {
+		fba.start_index = i * 2;
+		fba.end_index = i * 2 + 2;
+		error = ioctl(fd, INCFS_IOC_GET_FILLED_BLOCKS, &fba);
+		if (error)
+			goto out;
+
+		if (fba.total_blocks_out != block_cnt) {
+			error = -EINVAL;
+			goto out;
+		}
+
+		if (fba.start_index >= block_cnt) {
+			if (fba.index_out != fba.start_index) {
+				error = -EINVAL;
+				goto out;
+			}
+
+			break;
+		}
+
+		if (i % 2) {
+			if (fba.range_buffer_size_out != 0) {
+				error = -EINVAL;
+				goto out;
+			}
+		} else {
+			if (fba.range_buffer_size_out != sizeof(*ranges)) {
+				error = -EINVAL;
+				goto out;
+			}
+
+			if (ranges[0].begin != i * 2) {
+				error = -EINVAL;
+				goto out;
+			}
+
+			if (ranges[0].end != i * 2 + 1 &&
+			    ranges[0].end != i * 2 + 2) {
+				error = -EINVAL;
+				goto out;
+			}
+		}
+	}
+
+out:
+	close(fd);
+	close(cmd_fd);
+	return error;
+}
+
+static int get_blocks_test(const char *mount_dir)
+{
+	char *backing_dir;
+	int cmd_fd = -1;
+	int i;
+	struct test_files_set test = get_test_files_set();
+	const int file_num = test.files_count;
+
+	backing_dir = create_backing_dir(mount_dir);
+	if (!backing_dir)
+		goto failure;
+
+	if (mount_fs_opt(mount_dir, backing_dir, "readahead=0", false) != 0)
+		goto failure;
+
+	cmd_fd = open_commands_file(mount_dir);
+	if (cmd_fd < 0)
+		goto failure;
+
+	/* Write data. */
+	for (i = 0; i < file_num; i++) {
+		struct test_file *file = &test.files[i];
+
+		if (emit_file(cmd_fd, NULL, file->name, &file->id, file->size,
+			      NULL))
+			goto failure;
+
+		if (emit_partial_test_file_data(mount_dir, file))
+			goto failure;
+	}
+
+	for (i = 0; i < file_num; i++) {
+		struct test_file *file = &test.files[i];
+
+		if (validate_ranges(mount_dir, file))
+			goto failure;
+
+		/*
+		 * The smallest files are filled completely, so this checks that
+		 * the fast get_filled_blocks path is not causing issues
+		 */
+		if (validate_ranges(mount_dir, file))
+			goto failure;
+	}
+
+	close(cmd_fd);
+	umount(mount_dir);
+	free(backing_dir);
+	return TEST_SUCCESS;
+
+failure:
+	close(cmd_fd);
+	umount(mount_dir);
+	free(backing_dir);
+	return TEST_FAILURE;
+}
+
+static int emit_partial_test_file_hash(const char *mount_dir,
+				       struct test_file *file)
+{
+	int err;
+	int fd;
+	struct incfs_fill_blocks fill_blocks = {
+		.count = 1,
+	};
+	struct incfs_fill_block *fill_block_array =
+		calloc(fill_blocks.count, sizeof(struct incfs_fill_block));
+	uint8_t data[INCFS_DATA_FILE_BLOCK_SIZE];
+
+	if (file->size <= 4096 / 32 * 4096)
+		return 0;
+
+	if (!fill_block_array)
+		return -ENOMEM;
+	fill_blocks.fill_blocks = ptr_to_u64(fill_block_array);
+
+	rnd_buf(data, sizeof(data), 0);
+
+	fill_block_array[0] =
+		(struct incfs_fill_block){ .block_index = 1,
+					   .data_len =
+						   INCFS_DATA_FILE_BLOCK_SIZE,
+					   .data = ptr_to_u64(data),
+					   .flags = INCFS_BLOCK_FLAGS_HASH };
+
+	fd = open_file_by_id(mount_dir, file->id, true);
+	if (fd < 0) {
+		err = errno;
+		goto failure;
+	}
+
+	err = ioctl(fd, INCFS_IOC_FILL_BLOCKS, &fill_blocks);
+	close(fd);
+	if (err < fill_blocks.count)
+		err = errno;
+	else
+		err = 0;
+
+failure:
+	free(fill_block_array);
+	return err;
+}
+
+static int validate_hash_ranges(const char *mount_dir, struct test_file *file)
+{
+	int block_cnt = 1 + (file->size - 1) / INCFS_DATA_FILE_BLOCK_SIZE;
+	char *filename = concat_file_name(mount_dir, file->name);
+	int fd;
+	struct incfs_filled_range ranges[128];
+	struct incfs_get_filled_blocks_args fba = {
+		.range_buffer = ptr_to_u64(ranges),
+		.range_buffer_size = sizeof(ranges),
+	};
+	int error = TEST_SUCCESS;
+	int file_blocks = (file->size + INCFS_DATA_FILE_BLOCK_SIZE - 1) /
+			  INCFS_DATA_FILE_BLOCK_SIZE;
+	int cmd_fd = -1;
+	struct incfs_permit_fill permit_fill;
+
+	if (file->size <= 4096 / 32 * 4096)
+		return 0;
+
+	fd = open(filename, O_RDONLY | O_CLOEXEC);
+	free(filename);
+	if (fd <= 0)
+		return TEST_FAILURE;
+
+	error = ioctl(fd, INCFS_IOC_GET_FILLED_BLOCKS, &fba);
+	if (error != -1 || errno != EPERM) {
+		ksft_print_msg("INCFS_IOC_GET_FILLED_BLOCKS not blocked\n");
+		error = -EPERM;
+		goto out;
+	}
+
+	cmd_fd = open_commands_file(mount_dir);
+	permit_fill.file_descriptor = fd;
+	if (ioctl(cmd_fd, INCFS_IOC_PERMIT_FILL, &permit_fill)) {
+		print_error("INCFS_IOC_PERMIT_FILL failed");
+		return -EPERM;
+		goto out;
+	}
+
+	error = ioctl(fd, INCFS_IOC_GET_FILLED_BLOCKS, &fba);
+	if (error)
+		goto out;
+
+	if (fba.total_blocks_out <= block_cnt) {
+		error = -EINVAL;
+		goto out;
+	}
+
+	if (fba.data_blocks_out != block_cnt) {
+		error = -EINVAL;
+		goto out;
+	}
+
+	if (fba.range_buffer_size_out != sizeof(struct incfs_filled_range)) {
+		error = -EINVAL;
+		goto out;
+	}
+
+	if (ranges[0].begin != file_blocks + 1 ||
+	    ranges[0].end != file_blocks + 2) {
+		error = -EINVAL;
+		goto out;
+	}
+
+out:
+	close(cmd_fd);
+	close(fd);
+	return error;
+}
+
+static int get_hash_blocks_test(const char *mount_dir)
+{
+	char *backing_dir;
+	int cmd_fd = -1;
+	int i;
+	struct test_files_set test = get_test_files_set();
+	const int file_num = test.files_count;
+
+	backing_dir = create_backing_dir(mount_dir);
+	if (!backing_dir)
+		goto failure;
+
+	if (mount_fs_opt(mount_dir, backing_dir, "readahead=0", false) != 0)
+		goto failure;
+
+	cmd_fd = open_commands_file(mount_dir);
+	if (cmd_fd < 0)
+		goto failure;
+
+	for (i = 0; i < file_num; i++) {
+		struct test_file *file = &test.files[i];
+
+		if (crypto_emit_file(cmd_fd, NULL, file->name, &file->id,
+				     file->size, file->root_hash,
+				     file->sig.add_data))
+			goto failure;
+
+		if (emit_partial_test_file_hash(mount_dir, file))
+			goto failure;
+	}
+
+	for (i = 0; i < file_num; i++) {
+		struct test_file *file = &test.files[i];
+
+		if (validate_hash_ranges(mount_dir, file))
+			goto failure;
+	}
+
+	close(cmd_fd);
+	umount(mount_dir);
+	free(backing_dir);
+	return TEST_SUCCESS;
+
+failure:
+	close(cmd_fd);
+	umount(mount_dir);
+	free(backing_dir);
+	return TEST_FAILURE;
+}
+
+#define THREE_GB (3LL * 1024 * 1024 * 1024)
+#define FOUR_GB (4LL * 1024 * 1024 * 1024) /* Have 1GB of margin */
+static int large_file_test(const char *mount_dir)
+{
+	char *backing_dir;
+	int cmd_fd = -1;
+	int i;
+	int result = TEST_FAILURE, ret;
+	uint8_t data[INCFS_DATA_FILE_BLOCK_SIZE] = {};
+	int block_count = THREE_GB / INCFS_DATA_FILE_BLOCK_SIZE;
+	struct incfs_fill_block *block_buf =
+		calloc(block_count, sizeof(struct incfs_fill_block));
+	struct incfs_fill_blocks fill_blocks = {
+		.count = block_count,
+		.fill_blocks = ptr_to_u64(block_buf),
+	};
+	incfs_uuid_t id;
+	int fd = -1;
+	struct statvfs svfs;
+	unsigned long long free_disksz;
+
+	ret = statvfs(mount_dir, &svfs);
+	if (ret) {
+		ksft_print_msg("Can't get disk size. Skipping %s...\n", __func__);
+		return TEST_SKIP;
+	}
+
+	free_disksz = (unsigned long long)svfs.f_bavail * svfs.f_bsize;
+
+	if (FOUR_GB > free_disksz) {
+		ksft_print_msg("Not enough free disk space (%lldMB). Skipping %s...\n",
+				free_disksz >> 20, __func__);
+		return TEST_SKIP;
+	}
+
+	backing_dir = create_backing_dir(mount_dir);
+	if (!backing_dir)
+		goto failure;
+
+	if (mount_fs_opt(mount_dir, backing_dir, "readahead=0", false) != 0)
+		goto failure;
+
+	cmd_fd = open_commands_file(mount_dir);
+	if (cmd_fd < 0)
+		goto failure;
+
+	if (emit_file(cmd_fd, NULL, "very_large_file", &id,
+		      (uint64_t)block_count * INCFS_DATA_FILE_BLOCK_SIZE,
+		      NULL) < 0)
+		goto failure;
+
+	for (i = 0; i < block_count; i++) {
+		block_buf[i].compression = COMPRESSION_NONE;
+		block_buf[i].block_index = i;
+		block_buf[i].data_len = INCFS_DATA_FILE_BLOCK_SIZE;
+		block_buf[i].data = ptr_to_u64(data);
+	}
+
+	fd = open_file_by_id(mount_dir, id, true);
+	if (fd < 0)
+		goto failure;
+
+	if (ioctl(fd, INCFS_IOC_FILL_BLOCKS, &fill_blocks) != block_count)
+		goto failure;
+
+	if (emit_file(cmd_fd, NULL, "very_very_large_file", &id, 1LL << 40,
+		      NULL) < 0)
+		goto failure;
+
+	result = TEST_SUCCESS;
+
+failure:
+	close(fd);
+	close(cmd_fd);
+	unlink("very_large_file");
+	umount(mount_dir);
+	free(backing_dir);
+	return result;
+}
+
+static int validate_mapped_file(const char *orig_name, const char *name,
+				size_t size, size_t offset)
+{
+	struct stat st;
+	int orig_fd = -1, fd = -1;
+	size_t block;
+	int result = TEST_FAILURE;
+
+	if (stat(name, &st)) {
+		ksft_print_msg("Failed to stat %s with error %s\n",
+			       name, strerror(errno));
+		goto failure;
+	}
+
+	if (size != st.st_size) {
+		ksft_print_msg("Mismatched file sizes for file %s - expected %llu, got %llu\n",
+				   name, size, st.st_size);
+		goto failure;
+	}
+
+	fd = open(name, O_RDONLY | O_CLOEXEC);
+	if (fd == -1) {
+		ksft_print_msg("Failed to open %s with error %s\n", name,
+			       strerror(errno));
+		goto failure;
+	}
+
+	orig_fd = open(orig_name, O_RDONLY | O_CLOEXEC);
+	if (orig_fd == -1) {
+		ksft_print_msg("Failed to open %s with error %s\n", orig_name,
+			       strerror(errno));
+		goto failure;
+	}
+
+	for (block = 0; block < size; block += INCFS_DATA_FILE_BLOCK_SIZE) {
+		uint8_t orig_data[INCFS_DATA_FILE_BLOCK_SIZE];
+		uint8_t data[INCFS_DATA_FILE_BLOCK_SIZE];
+		ssize_t orig_read, mapped_read;
+
+		orig_read = pread(orig_fd, orig_data,
+				 INCFS_DATA_FILE_BLOCK_SIZE, block + offset);
+		mapped_read = pread(fd, data, INCFS_DATA_FILE_BLOCK_SIZE,
+				    block);
+
+		if (orig_read < mapped_read ||
+		    mapped_read != min(size - block,
+				       INCFS_DATA_FILE_BLOCK_SIZE)) {
+			ksft_print_msg("Failed to read enough data: %llu %llu %llu %lld %lld\n",
+				       block, size, offset, orig_read,
+				       mapped_read);
+			goto failure;
+		}
+
+		if (memcmp(orig_data, data, mapped_read)) {
+			ksft_print_msg("Data doesn't match: %llu %llu %llu %lld %lld\n",
+				       block, size, offset, orig_read,
+				       mapped_read);
+			goto failure;
+		}
+	}
+
+	result = TEST_SUCCESS;
+
+failure:
+	close(orig_fd);
+	close(fd);
+	return result;
+}
+
+static int mapped_file_test(const char *mount_dir)
+{
+	char *backing_dir;
+	int result = TEST_FAILURE;
+	int cmd_fd = -1;
+	int i;
+	struct test_files_set test = get_test_files_set();
+	const int file_num = test.files_count;
+
+	backing_dir = create_backing_dir(mount_dir);
+	if (!backing_dir)
+		goto failure;
+
+	if (mount_fs_opt(mount_dir, backing_dir, "readahead=0", false) != 0)
+		goto failure;
+
+	cmd_fd = open_commands_file(mount_dir);
+	if (cmd_fd < 0)
+		goto failure;
+
+	for (i = 0; i < file_num; ++i) {
+		struct test_file *file = &test.files[i];
+		size_t blocks = file->size / INCFS_DATA_FILE_BLOCK_SIZE;
+		size_t mapped_offset = blocks / 4 *
+			INCFS_DATA_FILE_BLOCK_SIZE;
+		size_t mapped_size = file->size / 4 * 3 - mapped_offset;
+		struct incfs_create_mapped_file_args mfa;
+		char mapped_file_name[FILENAME_MAX];
+		char orig_file_path[PATH_MAX];
+		char mapped_file_path[PATH_MAX];
+
+		if (emit_file(cmd_fd, NULL, file->name, &file->id, file->size,
+					NULL) < 0)
+			goto failure;
+
+		if (emit_test_file_data(mount_dir, file))
+			goto failure;
+
+		if (snprintf(mapped_file_name, ARRAY_SIZE(mapped_file_name),
+					"%s.mapped", file->name) < 0)
+			goto failure;
+
+		mfa = (struct incfs_create_mapped_file_args) {
+			.size = mapped_size,
+			.mode = 0664,
+			.file_name = ptr_to_u64(mapped_file_name),
+			.source_file_id = file->id,
+			.source_offset = mapped_offset,
+		};
+
+		result = ioctl(cmd_fd, INCFS_IOC_CREATE_MAPPED_FILE, &mfa);
+		if (result) {
+			ksft_print_msg(
+				"Failed to create mapped file with error %d\n",
+				result);
+			goto failure;
+		}
+
+		result = snprintf(orig_file_path,
+				  ARRAY_SIZE(orig_file_path), "%s/%s",
+				  mount_dir, file->name);
+
+		if (result < 0 || result >= ARRAY_SIZE(mapped_file_path)) {
+			result = TEST_FAILURE;
+			goto failure;
+		}
+
+		result = snprintf(mapped_file_path,
+				  ARRAY_SIZE(mapped_file_path), "%s/%s",
+				  mount_dir, mapped_file_name);
+
+		if (result < 0 || result >= ARRAY_SIZE(mapped_file_path)) {
+			result = TEST_FAILURE;
+			goto failure;
+		}
+
+		result = validate_mapped_file(orig_file_path, mapped_file_path,
+					      mapped_size, mapped_offset);
+		if (result)
+			goto failure;
+	}
+
+failure:
+	close(cmd_fd);
+	umount(mount_dir);
+	free(backing_dir);
+	return result;
+}
+
+static const char v1_file[] = {
+	/* Header */
+	/* 0x00: Magic number */
+	0x49, 0x4e, 0x43, 0x46, 0x53, 0x00, 0x00, 0x00,
+	/* 0x08: Version */
+	0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	/* 0x10: Header size */
+	0x38, 0x00,
+	/* 0x12: Block size */
+	0x00, 0x10,
+	/* 0x14: Flags */
+	0x00, 0x00, 0x00, 0x00,
+	/* 0x18: First md offset */
+	0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	/* 0x20: File size */
+	0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	/* 0x28: UUID */
+	0x8c, 0x7d, 0xd9, 0x22, 0xad, 0x47, 0x49, 0x4f,
+	0xc0, 0x2c, 0x38, 0x8e, 0x12, 0xc0, 0x0e, 0xac,
+
+	/* 0x38: Attribute */
+	0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
+	0x31, 0x32, 0x33, 0x31, 0x32, 0x33,
+
+	/* Attribute md record */
+	/* 0x46: Type */
+	0x02,
+	/* 0x47: Size */
+	0x25, 0x00,
+	/* 0x49: CRC */
+	0x9a, 0xef, 0xef, 0x72,
+	/* 0x4d: Next md offset */
+	0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	/* 0x55: Prev md offset */
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	/* 0x5d: fa_offset */
+	0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	/* 0x65: fa_size */
+	0x0e, 0x00,
+	/* 0x67: fa_crc */
+	0xfb, 0x5e, 0x72, 0x89,
+
+	/* Blockmap table */
+	/* 0x6b: First 10-byte entry */
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+
+	/* Blockmap md record */
+	/* 0x75: Type */
+	0x01,
+	/* 0x76: Size */
+	0x23, 0x00,
+	/* 0x78: CRC */
+	0x74, 0x45, 0xd3, 0xb9,
+	/* 0x7c: Next md offset */
+	0x00, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00,
+	/* 0x84: Prev md offset */
+	0x46, 0x00, 0x00, 0x00,	0x00, 0x00, 0x00, 0x00,
+	/* 0x8c: blockmap offset */
+	0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	/* 0x94: blockmap count */
+	0x01, 0x00, 0x00, 0x00,
+};
+
+static int compatibility_test(const char *mount_dir)
+{
+	static const char *name = "file";
+	int result = TEST_FAILURE;
+	char *backing_dir = NULL;
+	char *filename = NULL;
+	int fd = -1;
+	uint64_t size = 0x0c;
+
+	TEST(backing_dir = create_backing_dir(mount_dir), backing_dir);
+	TEST(filename = concat_file_name(backing_dir, name), filename);
+	TEST(fd = open(filename, O_CREAT | O_WRONLY | O_CLOEXEC, 0777),
+	     fd != -1);
+	TESTEQUAL(write(fd, v1_file, sizeof(v1_file)), sizeof(v1_file));
+	TESTEQUAL(fsetxattr(fd, INCFS_XATTR_SIZE_NAME, &size, sizeof(size), 0),
+		  0);
+	TESTEQUAL(mount_fs(mount_dir, backing_dir, 50), 0);
+	free(filename);
+	TEST(filename = concat_file_name(mount_dir, name), filename);
+	close(fd);
+	TEST(fd = open(filename, O_RDONLY | O_CLOEXEC), fd != -1);
+
+	result = TEST_SUCCESS;
+out:
+	close(fd);
+	umount(mount_dir);
+	free(backing_dir);
+	free(filename);
+	return result;
+}
+
+static int zero_blocks_written_count(int fd, uint32_t data_blocks_written,
+				     uint32_t hash_blocks_written)
+{
+	int test_result = TEST_FAILURE;
+	uint64_t offset;
+	uint8_t type;
+	uint32_t bw;
+
+	/* Get first md record */
+	TESTEQUAL(pread(fd, &offset, sizeof(offset), 24), sizeof(offset));
+
+	/* Find status md record */
+	for (;;) {
+		TESTNE(offset, 0);
+		TESTEQUAL(pread(fd, &type, sizeof(type), le64_to_cpu(offset)),
+			  sizeof(type));
+		if (type == 4)
+			break;
+		TESTEQUAL(pread(fd, &offset, sizeof(offset),
+				le64_to_cpu(offset) + 7),
+			  sizeof(offset));
+	}
+
+	/* Read blocks_written */
+	offset = le64_to_cpu(offset);
+	TESTEQUAL(pread(fd, &bw, sizeof(bw), offset + 23), sizeof(bw));
+	TESTEQUAL(le32_to_cpu(bw), data_blocks_written);
+	TESTEQUAL(pread(fd, &bw, sizeof(bw), offset + 27), sizeof(bw));
+	TESTEQUAL(le32_to_cpu(bw), hash_blocks_written);
+
+	/* Write out zero */
+	bw = 0;
+	TESTEQUAL(pwrite(fd, &bw, sizeof(bw), offset + 23), sizeof(bw));
+	TESTEQUAL(pwrite(fd, &bw, sizeof(bw), offset + 27), sizeof(bw));
+
+	test_result = TEST_SUCCESS;
+out:
+	return test_result;
+}
+
+static int validate_block_count(const char *mount_dir, const char *backing_dir,
+				struct test_file *file,
+				int total_data_blocks, int filled_data_blocks,
+				int total_hash_blocks, int filled_hash_blocks)
+{
+	char *filename = NULL;
+	char *backing_filename = NULL;
+	int fd = -1;
+	struct incfs_get_block_count_args bca = {};
+	int test_result = TEST_FAILURE;
+	struct incfs_filled_range ranges[128];
+	struct incfs_get_filled_blocks_args fba = {
+		.range_buffer = ptr_to_u64(ranges),
+		.range_buffer_size = sizeof(ranges),
+	};
+	int cmd_fd = -1;
+	struct incfs_permit_fill permit_fill;
+
+	TEST(filename = concat_file_name(mount_dir, file->name), filename);
+	TEST(backing_filename = concat_file_name(backing_dir, file->name),
+	     backing_filename);
+	TEST(fd = open(filename, O_RDONLY | O_CLOEXEC), fd != -1);
+
+	TESTEQUAL(ioctl(fd, INCFS_IOC_GET_BLOCK_COUNT, &bca), 0);
+	TESTEQUAL(bca.total_data_blocks_out, total_data_blocks);
+	TESTEQUAL(bca.filled_data_blocks_out, filled_data_blocks);
+	TESTEQUAL(bca.total_hash_blocks_out, total_hash_blocks);
+	TESTEQUAL(bca.filled_hash_blocks_out, filled_hash_blocks);
+
+	close(fd);
+	TESTEQUAL(umount(mount_dir), 0);
+	TEST(fd = open(backing_filename, O_RDWR | O_CLOEXEC), fd != -1);
+	TESTEQUAL(zero_blocks_written_count(fd, filled_data_blocks,
+					    filled_hash_blocks),
+		  TEST_SUCCESS);
+	close(fd);
+	fd = -1;
+	TESTEQUAL(mount_fs_opt(mount_dir, backing_dir, "readahead=0", false),
+		  0);
+	TEST(fd = open(filename, O_RDONLY | O_CLOEXEC), fd != -1);
+
+	TESTEQUAL(ioctl(fd, INCFS_IOC_GET_BLOCK_COUNT, &bca), 0);
+	TESTEQUAL(bca.total_data_blocks_out, total_data_blocks);
+	TESTEQUAL(bca.filled_data_blocks_out, 0);
+	TESTEQUAL(bca.total_hash_blocks_out, total_hash_blocks);
+	TESTEQUAL(bca.filled_hash_blocks_out, 0);
+
+	TEST(cmd_fd = open_commands_file(mount_dir), cmd_fd != -1);
+	permit_fill.file_descriptor = fd;
+	TESTEQUAL(ioctl(cmd_fd, INCFS_IOC_PERMIT_FILL, &permit_fill), 0);
+	do {
+		ioctl(fd, INCFS_IOC_GET_FILLED_BLOCKS, &fba);
+		fba.start_index = fba.index_out + 1;
+	} while (fba.index_out < fba.total_blocks_out);
+
+	TESTEQUAL(ioctl(fd, INCFS_IOC_GET_BLOCK_COUNT, &bca), 0);
+	TESTEQUAL(bca.total_data_blocks_out, total_data_blocks);
+	TESTEQUAL(bca.filled_data_blocks_out, filled_data_blocks);
+	TESTEQUAL(bca.total_hash_blocks_out, total_hash_blocks);
+	TESTEQUAL(bca.filled_hash_blocks_out, filled_hash_blocks);
+
+	test_result = TEST_SUCCESS;
+out:
+	close(cmd_fd);
+	close(fd);
+	free(filename);
+	free(backing_filename);
+	return test_result;
+}
+
+
+
+static int validate_data_block_count(const char *mount_dir,
+				     const char *backing_dir,
+				     struct test_file *file)
+{
+	const int total_data_blocks = 1 + (file->size - 1) /
+						INCFS_DATA_FILE_BLOCK_SIZE;
+	const int filled_data_blocks = (total_data_blocks + 1) / 2;
+
+	int test_result = TEST_FAILURE;
+	char *filename = NULL;
+	char *incomplete_filename = NULL;
+	struct stat stat_buf_incomplete, stat_buf_file;
+	int fd = -1;
+	struct incfs_get_block_count_args bca = {};
+	int i;
+
+	TEST(filename = concat_file_name(mount_dir, file->name), filename);
+	TEST(incomplete_filename = get_incomplete_filename(mount_dir, file->id),
+	     incomplete_filename);
+
+	TESTEQUAL(stat(filename, &stat_buf_file), 0);
+	TESTEQUAL(stat(incomplete_filename, &stat_buf_incomplete), 0);
+	TESTEQUAL(stat_buf_file.st_ino, stat_buf_incomplete.st_ino);
+	TESTEQUAL(stat_buf_file.st_nlink, 3);
+
+	TEST(fd = open(filename, O_RDONLY | O_CLOEXEC), fd != -1);
+	TESTEQUAL(ioctl(fd, INCFS_IOC_GET_BLOCK_COUNT, &bca), 0);
+	TESTEQUAL(bca.total_data_blocks_out, total_data_blocks);
+	TESTEQUAL(bca.filled_data_blocks_out, 0);
+	TESTEQUAL(bca.total_hash_blocks_out, 0);
+	TESTEQUAL(bca.filled_hash_blocks_out, 0);
+
+	for (i = 0; i < total_data_blocks; i += 2)
+		TESTEQUAL(emit_test_block(mount_dir, file, i), 0);
+
+	TESTEQUAL(ioctl(fd, INCFS_IOC_GET_BLOCK_COUNT, &bca), 0);
+	TESTEQUAL(bca.total_data_blocks_out, total_data_blocks);
+	TESTEQUAL(bca.filled_data_blocks_out, filled_data_blocks);
+	TESTEQUAL(bca.total_hash_blocks_out, 0);
+	TESTEQUAL(bca.filled_hash_blocks_out, 0);
+	close(fd);
+	fd = -1;
+
+	TESTEQUAL(validate_block_count(mount_dir, backing_dir, file,
+				       total_data_blocks, filled_data_blocks,
+				       0, 0),
+		  0);
+
+	for (i = 1; i < total_data_blocks; i += 2)
+		TESTEQUAL(emit_test_block(mount_dir, file, i), 0);
+
+	TESTEQUAL(stat(incomplete_filename, &stat_buf_incomplete), -1);
+	TESTEQUAL(errno, ENOENT);
+
+	test_result = TEST_SUCCESS;
+out:
+	close(fd);
+	free(incomplete_filename);
+	free(filename);
+	return test_result;
+}
+
+static int data_block_count_test(const char *mount_dir)
+{
+	int result = TEST_FAILURE;
+	char *backing_dir;
+	int cmd_fd = -1;
+	int i;
+	struct test_files_set test = get_test_files_set();
+
+	TEST(backing_dir = create_backing_dir(mount_dir), backing_dir);
+	TESTEQUAL(mount_fs_opt(mount_dir, backing_dir, "readahead=0", false),
+		  0);
+
+	for (i = 0; i < test.files_count; ++i) {
+		struct test_file *file = &test.files[i];
+
+		TEST(cmd_fd = open_commands_file(mount_dir), cmd_fd != -1);
+		TESTEQUAL(emit_file(cmd_fd, NULL, file->name, &file->id,
+				    file->size,	NULL),
+			  0);
+		close(cmd_fd);
+		cmd_fd = -1;
+
+		TESTEQUAL(validate_data_block_count(mount_dir, backing_dir,
+						    file),
+			  0);
+	}
+
+	result = TEST_SUCCESS;
+out:
+	close(cmd_fd);
+	umount(mount_dir);
+	free(backing_dir);
+	return result;
+}
+
+static int validate_hash_block_count(const char *mount_dir,
+				     const char *backing_dir,
+				     struct test_file *file)
+{
+	const int digest_size = SHA256_DIGEST_SIZE;
+	const int hash_per_block = INCFS_DATA_FILE_BLOCK_SIZE / digest_size;
+	const int total_data_blocks = 1 + (file->size - 1) /
+					INCFS_DATA_FILE_BLOCK_SIZE;
+
+	int result = TEST_FAILURE;
+	int hash_layer = total_data_blocks;
+	int total_hash_blocks = 0;
+	int filled_hash_blocks;
+	char *filename = NULL;
+	int fd = -1;
+	struct incfs_get_block_count_args bca = {};
+
+	while (hash_layer > 1) {
+		hash_layer = (hash_layer + hash_per_block - 1) / hash_per_block;
+		total_hash_blocks += hash_layer;
+	}
+	filled_hash_blocks = total_hash_blocks > 1 ? 1 : 0;
+
+	TEST(filename = concat_file_name(mount_dir, file->name), filename);
+	TEST(fd = open(filename, O_RDONLY | O_CLOEXEC), fd != -1);
+
+	TESTEQUAL(ioctl(fd, INCFS_IOC_GET_BLOCK_COUNT, &bca), 0);
+	TESTEQUAL(bca.total_data_blocks_out, total_data_blocks);
+	TESTEQUAL(bca.filled_data_blocks_out, 0);
+	TESTEQUAL(bca.total_hash_blocks_out, total_hash_blocks);
+	TESTEQUAL(bca.filled_hash_blocks_out, 0);
+
+	TESTEQUAL(emit_partial_test_file_hash(mount_dir, file), 0);
+
+	TESTEQUAL(ioctl(fd, INCFS_IOC_GET_BLOCK_COUNT, &bca), 0);
+	TESTEQUAL(bca.total_data_blocks_out, total_data_blocks);
+	TESTEQUAL(bca.filled_data_blocks_out, 0);
+	TESTEQUAL(bca.total_hash_blocks_out, total_hash_blocks);
+	TESTEQUAL(bca.filled_hash_blocks_out, filled_hash_blocks);
+	close(fd);
+	fd = -1;
+
+	if (filled_hash_blocks)
+		TESTEQUAL(validate_block_count(mount_dir, backing_dir, file,
+				       total_data_blocks, 0,
+				       total_hash_blocks, filled_hash_blocks),
+		  0);
+
+	result = TEST_SUCCESS;
+out:
+	close(fd);
+	free(filename);
+	return result;
+}
+
+static int hash_block_count_test(const char *mount_dir)
+{
+	int result = TEST_FAILURE;
+	char *backing_dir;
+	int cmd_fd = -1;
+	int i;
+	struct test_files_set test = get_test_files_set();
+
+	TEST(backing_dir = create_backing_dir(mount_dir), backing_dir);
+	TESTEQUAL(mount_fs_opt(mount_dir, backing_dir, "readahead=0", false),
+		  0);
+
+	for (i = 0; i < test.files_count; i++) {
+		struct test_file *file = &test.files[i];
+
+		TEST(cmd_fd = open_commands_file(mount_dir), cmd_fd != -1);
+		TESTEQUAL(crypto_emit_file(cmd_fd, NULL, file->name, &file->id,
+				     file->size, file->root_hash,
+				     file->sig.add_data),
+			  0);
+		close(cmd_fd);
+		cmd_fd = -1;
+
+		TESTEQUAL(validate_hash_block_count(mount_dir, backing_dir,
+						    &test.files[i]),
+			  0);
+	}
+
+	result = TEST_SUCCESS;
+out:
+	close(cmd_fd);
+	umount(mount_dir);
+	free(backing_dir);
+	return result;
+}
+
+static int is_close(struct timespec *start, int expected_ms)
+{
+	const int allowed_variance = 100;
+	int result = TEST_FAILURE;
+	struct timespec finish;
+	int diff;
+
+	TESTEQUAL(clock_gettime(CLOCK_MONOTONIC, &finish), 0);
+	diff = (finish.tv_sec - start->tv_sec) * 1000 +
+		(finish.tv_nsec - start->tv_nsec) / 1000000;
+
+	TESTCOND(diff >= expected_ms - allowed_variance);
+	TESTCOND(diff <= expected_ms + allowed_variance);
+	result = TEST_SUCCESS;
+out:
+	return result;
+}
+
+static int per_uid_read_timeouts_test(const char *mount_dir)
+{
+	struct test_file file = {
+		.name = "file",
+		.size = 16 * INCFS_DATA_FILE_BLOCK_SIZE
+	};
+
+	int result = TEST_FAILURE;
+	char *backing_dir = NULL;
+	int pid = -1;
+	int cmd_fd = -1;
+	char *filename = NULL;
+	int fd = -1;
+	struct timespec start;
+	char buffer[4096];
+	struct incfs_per_uid_read_timeouts purt_get[1];
+	struct incfs_get_read_timeouts_args grt = {
+		ptr_to_u64(purt_get),
+		sizeof(purt_get)
+	};
+	struct incfs_per_uid_read_timeouts purt_set[] = {
+		{
+			.uid = 0,
+			.min_time_us = 1000000,
+			.min_pending_time_us = 2000000,
+			.max_pending_time_us = 3000000,
+		},
+	};
+	struct incfs_set_read_timeouts_args srt = {
+		ptr_to_u64(purt_set),
+		sizeof(purt_set)
+	};
+	int status;
+
+	TEST(backing_dir = create_backing_dir(mount_dir), backing_dir);
+	TESTEQUAL(mount_fs_opt(mount_dir, backing_dir,
+			       "read_timeout_ms=1000,readahead=0", false), 0);
+
+	TEST(cmd_fd = open_commands_file(mount_dir), cmd_fd != -1);
+	TESTEQUAL(emit_file(cmd_fd, NULL, file.name, &file.id, file.size,
+			    NULL), 0);
+
+	TEST(filename = concat_file_name(mount_dir, file.name), filename);
+	TEST(fd = open(filename, O_RDONLY | O_CLOEXEC), fd != -1);
+	TESTEQUAL(fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC), 0);
+
+	/* Default mount options read failure is 1000 */
+	TESTEQUAL(clock_gettime(CLOCK_MONOTONIC, &start), 0);
+	TESTEQUAL(pread(fd, buffer, sizeof(buffer), 0), -1);
+	TESTEQUAL(is_close(&start, 1000), 0);
+
+	grt.timeouts_array_size = 0;
+	TESTEQUAL(ioctl(cmd_fd, INCFS_IOC_GET_READ_TIMEOUTS, &grt), 0);
+	TESTEQUAL(grt.timeouts_array_size_out, 0);
+
+	/* Set it to 3000 */
+	TESTEQUAL(ioctl(cmd_fd, INCFS_IOC_SET_READ_TIMEOUTS, &srt), 0);
+	TESTEQUAL(clock_gettime(CLOCK_MONOTONIC, &start), 0);
+	TESTEQUAL(pread(fd, buffer, sizeof(buffer), 0), -1);
+	TESTEQUAL(is_close(&start, 3000), 0);
+	TESTEQUAL(ioctl(cmd_fd, INCFS_IOC_GET_READ_TIMEOUTS, &grt), -1);
+	TESTEQUAL(errno, E2BIG);
+	TESTEQUAL(grt.timeouts_array_size_out, sizeof(purt_get));
+	grt.timeouts_array_size = sizeof(purt_get);
+	TESTEQUAL(ioctl(cmd_fd, INCFS_IOC_GET_READ_TIMEOUTS, &grt), 0);
+	TESTEQUAL(grt.timeouts_array_size_out, sizeof(purt_get));
+	TESTEQUAL(purt_get[0].uid, purt_set[0].uid);
+	TESTEQUAL(purt_get[0].min_time_us, purt_set[0].min_time_us);
+	TESTEQUAL(purt_get[0].min_pending_time_us,
+		  purt_set[0].min_pending_time_us);
+	TESTEQUAL(purt_get[0].max_pending_time_us,
+		  purt_set[0].max_pending_time_us);
+
+	/* Still 1000 in UID 2 */
+	TESTEQUAL(clock_gettime(CLOCK_MONOTONIC, &start), 0);
+	TEST(pid = fork(), pid != -1);
+	if (pid == 0) {
+		TESTEQUAL(setuid(2), 0);
+		TESTEQUAL(pread(fd, buffer, sizeof(buffer), 0), -1);
+		exit(0);
+	}
+	TESTNE(wait(&status), -1);
+	TESTEQUAL(WEXITSTATUS(status), 0);
+	TESTEQUAL(is_close(&start, 1000), 0);
+
+	/* Set it to default */
+	purt_set[0].max_pending_time_us = UINT32_MAX;
+	TESTEQUAL(ioctl(cmd_fd, INCFS_IOC_SET_READ_TIMEOUTS, &srt), 0);
+	TESTEQUAL(clock_gettime(CLOCK_MONOTONIC, &start), 0);
+	TESTEQUAL(pread(fd, buffer, sizeof(buffer), 0), -1);
+	TESTEQUAL(is_close(&start, 1000), 0);
+
+	/* Test min read time */
+	TESTEQUAL(emit_test_block(mount_dir, &file, 0), 0);
+	TESTEQUAL(clock_gettime(CLOCK_MONOTONIC, &start), 0);
+	TESTEQUAL(pread(fd, buffer, sizeof(buffer), 0), sizeof(buffer));
+	TESTEQUAL(is_close(&start, 1000), 0);
+
+	/* Test min pending time */
+	purt_set[0].uid = 2;
+	TESTEQUAL(ioctl(cmd_fd, INCFS_IOC_SET_READ_TIMEOUTS, &srt), 0);
+	TESTEQUAL(clock_gettime(CLOCK_MONOTONIC, &start), 0);
+	TEST(pid = fork(), pid != -1);
+	if (pid == 0) {
+		TESTEQUAL(setuid(2), 0);
+		TESTEQUAL(pread(fd, buffer, sizeof(buffer), sizeof(buffer)),
+			  sizeof(buffer));
+		exit(0);
+	}
+	sleep(1);
+	TESTEQUAL(emit_test_block(mount_dir, &file, 1), 0);
+	TESTNE(wait(&status), -1);
+	TESTEQUAL(WEXITSTATUS(status), 0);
+	TESTEQUAL(is_close(&start, 2000), 0);
+
+	/* Clear timeouts */
+	srt.timeouts_array_size = 0;
+	TESTEQUAL(ioctl(cmd_fd, INCFS_IOC_SET_READ_TIMEOUTS, &srt), 0);
+	grt.timeouts_array_size = 0;
+	TESTEQUAL(ioctl(cmd_fd, INCFS_IOC_GET_READ_TIMEOUTS, &grt), 0);
+	TESTEQUAL(grt.timeouts_array_size_out, 0);
+
+	result = TEST_SUCCESS;
+out:
+	close(fd);
+
+	if (pid == 0)
+		exit(result);
+
+	free(filename);
+	close(cmd_fd);
+	umount(mount_dir);
+	free(backing_dir);
+	return result;
+}
+
+#define DIRS 3
+static int inotify_test(const char *mount_dir)
+{
+	const char *mapped_file_name = "mapped_name";
+	struct test_file file = {
+		.name = "file",
+		.size = 16 * INCFS_DATA_FILE_BLOCK_SIZE
+	};
+
+	int result = TEST_FAILURE;
+	char *backing_dir = NULL, *index_dir = NULL, *incomplete_dir = NULL;
+	char *file_name = NULL;
+	int cmd_fd = -1;
+	int notify_fd = -1;
+	int wds[DIRS];
+	char buffer[DIRS * (sizeof(struct inotify_event) + NAME_MAX + 1)];
+	char *ptr = buffer;
+	struct inotify_event *event;
+	struct inotify_event *events[DIRS] = {};
+	const char *names[DIRS] = {};
+	int res;
+	char id[sizeof(incfs_uuid_t) * 2 + 1];
+	struct incfs_create_mapped_file_args mfa;
+
+	/* File creation triggers inotify events in .index and .incomplete? */
+	TEST(backing_dir = create_backing_dir(mount_dir), backing_dir);
+	TEST(index_dir = concat_file_name(mount_dir, ".index"), index_dir);
+	TEST(incomplete_dir = concat_file_name(mount_dir, ".incomplete"),
+	     incomplete_dir);
+	TESTEQUAL(mount_fs(mount_dir, backing_dir, 50), 0);
+	TEST(cmd_fd = open_commands_file(mount_dir), cmd_fd != -1);
+	TEST(notify_fd = inotify_init1(IN_NONBLOCK | IN_CLOEXEC),
+	     notify_fd != -1);
+	TEST(wds[0] = inotify_add_watch(notify_fd, mount_dir,
+					IN_CREATE | IN_DELETE),
+	     wds[0] != -1);
+	TEST(wds[1] = inotify_add_watch(notify_fd, index_dir,
+					IN_CREATE | IN_DELETE),
+	     wds[1] != -1);
+	TEST(wds[2] = inotify_add_watch(notify_fd, incomplete_dir,
+					IN_CREATE | IN_DELETE),
+	     wds[2] != -1);
+	TESTEQUAL(emit_file(cmd_fd, NULL, file.name, &file.id, file.size,
+			   NULL), 0);
+	TEST(res = read(notify_fd, buffer, sizeof(buffer)), res != -1);
+
+	while (ptr < buffer + res) {
+		int i;
+
+		event = (struct inotify_event *) ptr;
+		TESTCOND(ptr + sizeof(*event) <= buffer + res);
+		for (i = 0; i < DIRS; ++i)
+			if (event->wd == wds[i]) {
+				TESTEQUAL(events[i], NULL);
+				events[i] = event;
+				ptr += sizeof(*event);
+				names[i] = ptr;
+				ptr += events[i]->len;
+				TESTCOND(ptr <= buffer + res);
+				break;
+			}
+		TESTCOND(i < DIRS);
+	}
+
+	TESTNE(events[0], NULL);
+	TESTNE(events[1], NULL);
+	TESTNE(events[2], NULL);
+
+	bin2hex(id, file.id.bytes, sizeof(incfs_uuid_t));
+
+	TESTEQUAL(events[0]->mask, IN_CREATE);
+	TESTEQUAL(events[1]->mask, IN_CREATE);
+	TESTEQUAL(events[2]->mask, IN_CREATE);
+	TESTEQUAL(strcmp(names[0], file.name), 0);
+	TESTEQUAL(strcmp(names[1], id), 0);
+	TESTEQUAL(strcmp(names[2], id), 0);
+
+	/* Creating a mapped file triggers inotify event */
+	mfa = (struct incfs_create_mapped_file_args) {
+		.size = INCFS_DATA_FILE_BLOCK_SIZE,
+		.mode = 0664,
+		.file_name = ptr_to_u64(mapped_file_name),
+		.source_file_id = file.id,
+		.source_offset = INCFS_DATA_FILE_BLOCK_SIZE,
+	};
+
+	TEST(res = ioctl(cmd_fd, INCFS_IOC_CREATE_MAPPED_FILE, &mfa),
+	     res != -1);
+	TEST(res = read(notify_fd, buffer, sizeof(buffer)), res != -1);
+	event = (struct inotify_event *) buffer;
+	TESTEQUAL(event->wd, wds[0]);
+	TESTEQUAL(event->mask, IN_CREATE);
+	TESTEQUAL(strcmp(event->name, mapped_file_name), 0);
+
+	/* File completion triggers inotify event in .incomplete? */
+	TESTEQUAL(emit_test_file_data(mount_dir, &file), 0);
+	TEST(res = read(notify_fd, buffer, sizeof(buffer)), res != -1);
+	event = (struct inotify_event *) buffer;
+	TESTEQUAL(event->wd, wds[2]);
+	TESTEQUAL(event->mask, IN_DELETE);
+	TESTEQUAL(strcmp(event->name, id), 0);
+
+	/* File unlinking triggers inotify event in .index? */
+	TEST(file_name = concat_file_name(mount_dir, file.name), file_name);
+	TESTEQUAL(unlink(file_name), 0);
+	TEST(res = read(notify_fd, buffer, sizeof(buffer)), res != -1);
+	memset(events, 0, sizeof(events));
+	memset(names, 0, sizeof(names));
+	for (ptr = buffer; ptr < buffer + res;) {
+		event = (struct inotify_event *) ptr;
+		int i;
+
+		TESTCOND(ptr + sizeof(*event) <= buffer + res);
+		for (i = 0; i < DIRS; ++i)
+			if (event->wd == wds[i]) {
+				TESTEQUAL(events[i], NULL);
+				events[i] = event;
+				ptr += sizeof(*event);
+				names[i] = ptr;
+				ptr += events[i]->len;
+				TESTCOND(ptr <= buffer + res);
+				break;
+			}
+		TESTCOND(i < DIRS);
+	}
+
+	TESTNE(events[0], NULL);
+	TESTNE(events[1], NULL);
+	TESTEQUAL(events[2], NULL);
+
+	TESTEQUAL(events[0]->mask, IN_DELETE);
+	TESTEQUAL(events[1]->mask, IN_DELETE);
+	TESTEQUAL(strcmp(names[0], file.name), 0);
+	TESTEQUAL(strcmp(names[1], id), 0);
+
+	result = TEST_SUCCESS;
+out:
+	free(file_name);
+	close(notify_fd);
+	close(cmd_fd);
+	umount(mount_dir);
+	free(backing_dir);
+	free(index_dir);
+	free(incomplete_dir);
+	return result;
+}
+
+static EVP_PKEY *create_key(void)
+{
+	EVP_PKEY *pkey = NULL;
+	RSA *rsa = NULL;
+	BIGNUM *bn = NULL;
+
+	pkey = EVP_PKEY_new();
+	if (!pkey)
+		goto fail;
+
+	bn = BN_new();
+	BN_set_word(bn, RSA_F4);
+
+	rsa = RSA_new();
+	if (!rsa)
+		goto fail;
+
+	RSA_generate_key_ex(rsa, 4096, bn, NULL);
+	EVP_PKEY_assign_RSA(pkey, rsa);
+
+	BN_free(bn);
+	return pkey;
+
+fail:
+	BN_free(bn);
+	EVP_PKEY_free(pkey);
+	return NULL;
+}
+
+static X509 *get_cert(EVP_PKEY *key)
+{
+	X509 *x509 = NULL;
+	X509_NAME *name = NULL;
+
+	x509 = X509_new();
+	if (!x509)
+		return NULL;
+
+	ASN1_INTEGER_set(X509_get_serialNumber(x509), 1);
+	X509_gmtime_adj(X509_get_notBefore(x509), 0);
+	X509_gmtime_adj(X509_get_notAfter(x509), 31536000L);
+	X509_set_pubkey(x509, key);
+
+	name = X509_get_subject_name(x509);
+	X509_NAME_add_entry_by_txt(name, "C", MBSTRING_ASC,
+		   (const unsigned char *)"US", -1, -1, 0);
+	X509_NAME_add_entry_by_txt(name, "ST", MBSTRING_ASC,
+		   (const unsigned char *)"CA", -1, -1, 0);
+	X509_NAME_add_entry_by_txt(name, "L", MBSTRING_ASC,
+		   (const unsigned char *)"San Jose", -1, -1, 0);
+	X509_NAME_add_entry_by_txt(name, "O", MBSTRING_ASC,
+		   (const unsigned char *)"Example", -1, -1, 0);
+	X509_NAME_add_entry_by_txt(name, "OU", MBSTRING_ASC,
+		   (const unsigned char *)"Org", -1, -1, 0);
+	X509_NAME_add_entry_by_txt(name, "CN", MBSTRING_ASC,
+		   (const unsigned char *)"www.example.com", -1, -1, 0);
+	X509_set_issuer_name(x509, name);
+
+	if (!X509_sign(x509, key, EVP_sha256()))
+		return NULL;
+
+	return x509;
+}
+
+static int sign(EVP_PKEY *key, X509 *cert, const char *data, size_t len,
+		unsigned char **sig, size_t *sig_len)
+{
+	const int pkcs7_flags = PKCS7_BINARY | PKCS7_NOATTR | PKCS7_PARTIAL |
+			  PKCS7_DETACHED;
+	const EVP_MD *md = EVP_sha256();
+
+	int result = TEST_FAILURE;
+
+	BIO *bio = NULL;
+	PKCS7 *p7 = NULL;
+	unsigned char *bio_buffer;
+
+	TEST(bio = BIO_new_mem_buf(data, len), bio);
+	TEST(p7 = PKCS7_sign(NULL, NULL, NULL, bio, pkcs7_flags), p7);
+	TESTNE(PKCS7_sign_add_signer(p7, cert, key, md, pkcs7_flags), 0);
+	TESTEQUAL(PKCS7_final(p7, bio, pkcs7_flags), 1);
+	TEST(*sig_len = i2d_PKCS7(p7, NULL), *sig_len);
+	TEST(bio_buffer = malloc(*sig_len), bio_buffer);
+	*sig = bio_buffer;
+	TEST(*sig_len = i2d_PKCS7(p7, &bio_buffer), *sig_len);
+	TESTEQUAL(PKCS7_verify(p7, NULL, NULL, bio, NULL,
+			 pkcs7_flags | PKCS7_NOVERIFY | PKCS7_NOSIGS), 1);
+
+	result = TEST_SUCCESS;
+out:
+	PKCS7_free(p7);
+	BIO_free(bio);
+	return result;
+}
+
+static int verity_installed(const char *mount_dir, int cmd_fd, bool *installed)
+{
+	int result = TEST_FAILURE;
+	char *filename = NULL;
+	int fd = -1;
+	struct test_file *file = &get_test_files_set().files[0];
+
+	TESTEQUAL(emit_file(cmd_fd, NULL, file->name, &file->id, file->size,
+			    NULL), 0);
+	TEST(filename = concat_file_name(mount_dir, file->name), filename);
+	TEST(fd = open(filename, O_RDONLY | O_CLOEXEC), fd != -1);
+	TESTEQUAL(ioctl(fd, FS_IOC_ENABLE_VERITY, NULL), -1);
+	*installed = errno != EOPNOTSUPP;
+
+	result = TEST_SUCCESS;
+out:
+	close(fd);
+	if (filename)
+		remove(filename);
+	free(filename);
+	return result;
+}
+
+static int enable_verity(const char *mount_dir, struct test_file *file,
+			   EVP_PKEY *key, X509 *cert, bool use_signatures)
+{
+	int result = TEST_FAILURE;
+	char *filename = NULL;
+	int fd = -1;
+	struct fsverity_enable_arg fear = {
+		.version = 1,
+		.hash_algorithm = FS_VERITY_HASH_ALG_SHA256,
+		.block_size = INCFS_DATA_FILE_BLOCK_SIZE,
+		.sig_size = 0,
+		.sig_ptr = 0,
+	};
+	struct {
+		__u8 version;           /* must be 1 */
+		__u8 hash_algorithm;    /* Merkle tree hash algorithm */
+		__u8 log_blocksize;     /* log2 of size of data and tree blocks */
+		__u8 salt_size;         /* size of salt in bytes; 0 if none */
+		__le32 sig_size;        /* must be 0 */
+		__le64 data_size;       /* size of file the Merkle tree is built over */
+		__u8 root_hash[64];     /* Merkle tree root hash */
+		__u8 salt[32];          /* salt prepended to each hashed block */
+		__u8 __reserved[144];   /* must be 0's */
+	} __packed fsverity_descriptor = {
+		.version = 1,
+		.hash_algorithm = 1,
+		.log_blocksize = 12,
+		.data_size = file->size,
+	};
+	struct {
+		char magic[8];                  /* must be "FSVerity" */
+		__le16 digest_algorithm;
+		__le16 digest_size;
+		__u8 digest[32];
+	} __packed fsverity_signed_digest =  {
+		.digest_algorithm = 1,
+		.digest_size = 32
+	};
+	unsigned char *sig = NULL;
+	size_t sig_size = 0;
+	uint64_t flags;
+	struct statx statxbuf = {};
+
+	memcpy(fsverity_signed_digest.magic, "FSVerity", 8);
+
+	TEST(filename = concat_file_name(mount_dir, file->name), filename);
+	TESTEQUAL(syscall(__NR_statx, AT_FDCWD, filename, 0, STATX_ALL,
+			  &statxbuf), 0);
+	TESTEQUAL(statxbuf.stx_attributes_mask & STATX_ATTR_VERITY,
+		  STATX_ATTR_VERITY);
+	TESTEQUAL(statxbuf.stx_attributes & STATX_ATTR_VERITY, 0);
+	TEST(fd = open(filename, O_RDONLY | O_CLOEXEC), fd != -1);
+	TESTEQUAL(ioctl(fd, FS_IOC_GETFLAGS, &flags), 0);
+	TESTEQUAL(flags & FS_VERITY_FL, 0);
+
+	/* First try to enable verity with random digest */
+	if (key) {
+		TESTEQUAL(sign(key, cert, (void *)&fsverity_signed_digest,
+			    sizeof(fsverity_signed_digest), &sig, &sig_size),
+			  0);
+
+		fear.sig_size = sig_size;
+		fear.sig_ptr = ptr_to_u64(sig);
+		TESTEQUAL(ioctl(fd, FS_IOC_ENABLE_VERITY, &fear), -1);
+	}
+
+	/* Now try with correct digest */
+	memcpy(fsverity_descriptor.root_hash, file->root_hash, 32);
+	sha256((char *)&fsverity_descriptor, sizeof(fsverity_descriptor),
+	       (char *)fsverity_signed_digest.digest);
+
+	if (ioctl(fd, FS_IOC_ENABLE_VERITY, NULL) == -1 &&
+	    errno == EOPNOTSUPP) {
+		result = TEST_SUCCESS;
+		goto out;
+	}
+
+	free(sig);
+	sig = NULL;
+
+	if (key)
+		TESTEQUAL(sign(key, cert, (void *)&fsverity_signed_digest,
+			       sizeof(fsverity_signed_digest),
+			       &sig, &sig_size),
+		  0);
+
+	if (use_signatures) {
+		fear.sig_size = sig_size;
+		file->verity_sig_size = sig_size;
+		fear.sig_ptr = ptr_to_u64(sig);
+		file->verity_sig = sig;
+		sig = NULL;
+	} else {
+		fear.sig_size = 0;
+		fear.sig_ptr = 0;
+	}
+	TESTEQUAL(ioctl(fd, FS_IOC_ENABLE_VERITY, &fear), 0);
+
+	result = TEST_SUCCESS;
+out:
+	free(sig);
+	close(fd);
+	free(filename);
+	return result;
+}
+
+static int memzero(const unsigned char *buf, size_t size)
+{
+	size_t i;
+
+	for (i = 0; i < size; ++i)
+		if (buf[i])
+			return -1;
+	return 0;
+}
+
+static int validate_verity(const char *mount_dir, struct test_file *file)
+{
+	int result = TEST_FAILURE;
+	char *filename = concat_file_name(mount_dir, file->name);
+	int fd = -1;
+	uint64_t flags;
+	struct fsverity_digest *digest;
+	struct statx statxbuf = {};
+	struct fsverity_read_metadata_arg frma = {};
+	uint8_t *buf = NULL;
+	struct fsverity_descriptor desc;
+
+	TEST(digest = malloc(sizeof(struct fsverity_digest) +
+			     INCFS_MAX_HASH_SIZE), digest != NULL);
+	TEST(filename = concat_file_name(mount_dir, file->name), filename);
+	TESTEQUAL(syscall(__NR_statx, AT_FDCWD, filename, 0, STATX_ALL,
+			  &statxbuf), 0);
+	TESTEQUAL(statxbuf.stx_attributes & STATX_ATTR_VERITY,
+		  STATX_ATTR_VERITY);
+	TEST(fd = open(filename, O_RDONLY | O_CLOEXEC), fd != -1);
+	TESTEQUAL(ioctl(fd, FS_IOC_GETFLAGS, &flags), 0);
+	TESTEQUAL(flags & FS_VERITY_FL, FS_VERITY_FL);
+	digest->digest_size = INCFS_MAX_HASH_SIZE;
+	TESTEQUAL(ioctl(fd, FS_IOC_MEASURE_VERITY, digest), 0);
+	TESTEQUAL(digest->digest_algorithm, FS_VERITY_HASH_ALG_SHA256);
+	TESTEQUAL(digest->digest_size, 32);
+
+	if (file->verity_sig) {
+		TEST(buf = malloc(file->verity_sig_size), buf);
+		frma = (struct fsverity_read_metadata_arg) {
+			.metadata_type = FS_VERITY_METADATA_TYPE_SIGNATURE,
+			.length = file->verity_sig_size,
+			.buf_ptr = ptr_to_u64(buf),
+		};
+		TESTEQUAL(ioctl(fd, FS_IOC_READ_VERITY_METADATA, &frma),
+			  file->verity_sig_size);
+		TESTEQUAL(memcmp(buf, file->verity_sig, file->verity_sig_size),
+			  0);
+	} else {
+		frma = (struct fsverity_read_metadata_arg) {
+			.metadata_type = FS_VERITY_METADATA_TYPE_SIGNATURE,
+		};
+		TESTEQUAL(ioctl(fd, FS_IOC_READ_VERITY_METADATA, &frma), -1);
+		TESTEQUAL(errno, ENODATA);
+	}
+
+	frma = (struct fsverity_read_metadata_arg) {
+		.metadata_type = FS_VERITY_METADATA_TYPE_DESCRIPTOR,
+		.length = sizeof(desc),
+		.buf_ptr = ptr_to_u64(&desc),
+	};
+	TESTEQUAL(ioctl(fd, FS_IOC_READ_VERITY_METADATA, &frma),
+		  sizeof(desc));
+	TESTEQUAL(desc.version, 1);
+	TESTEQUAL(desc.hash_algorithm, FS_VERITY_HASH_ALG_SHA256);
+	TESTEQUAL(desc.log_blocksize, ilog2(INCFS_DATA_FILE_BLOCK_SIZE));
+	TESTEQUAL(desc.salt_size, 0);
+	TESTEQUAL(desc.__reserved_0x04, 0);
+	TESTEQUAL(desc.data_size, file->size);
+	TESTEQUAL(memcmp(desc.root_hash, file->root_hash, SHA256_DIGEST_SIZE),
+		  0);
+	TESTEQUAL(memzero(desc.root_hash + SHA256_DIGEST_SIZE,
+			  sizeof(desc.root_hash) - SHA256_DIGEST_SIZE), 0);
+	TESTEQUAL(memzero(desc.salt, sizeof(desc.salt)), 0);
+	TESTEQUAL(memzero(desc.__reserved, sizeof(desc.__reserved)), 0);
+
+	result = TEST_SUCCESS;
+out:
+	free(buf);
+	close(fd);
+	free(filename);
+	free(digest);
+	return result;
+}
+
+static int verity_test_optional_sigs(const char *mount_dir, bool use_signatures)
+{
+	int result = TEST_FAILURE;
+	char *backing_dir = NULL;
+	bool installed;
+	int cmd_fd = -1;
+	int i;
+	struct test_files_set test = get_test_files_set();
+	const int file_num = test.files_count;
+	EVP_PKEY *key = NULL;
+	X509 *cert = NULL;
+	BIO *mem = NULL;
+	long len;
+	void *ptr;
+	FILE *proc_key_fd = NULL;
+	char *line = NULL;
+	size_t read = 0;
+	int key_id = -1;
+
+	TEST(backing_dir = create_backing_dir(mount_dir), backing_dir);
+	TESTEQUAL(mount_fs_opt(mount_dir, backing_dir, "readahead=0", false),
+		  0);
+	TEST(cmd_fd = open_commands_file(mount_dir), cmd_fd != -1);
+	TESTEQUAL(verity_installed(mount_dir, cmd_fd, &installed), 0);
+	if (!installed) {
+		result = TEST_SUCCESS;
+		goto out;
+	}
+	TEST(key = create_key(), key);
+	TEST(cert = get_cert(key), cert);
+
+	TEST(proc_key_fd = fopen("/proc/keys", "r"), proc_key_fd != NULL);
+	while (getline(&line, &read, proc_key_fd) != -1)
+		if (strstr(line, ".fs-verity"))
+			key_id = strtol(line, NULL, 16);
+
+	TEST(mem = BIO_new(BIO_s_mem()), mem != NULL);
+	TESTEQUAL(i2d_X509_bio(mem, cert), 1);
+	TEST(len = BIO_get_mem_data(mem, &ptr), len != 0);
+	TESTCOND(key_id == -1
+		 || syscall(__NR_add_key, "asymmetric", "test:key", ptr, len,
+			    key_id) != -1);
+
+	for (i = 0; i < file_num; i++) {
+		struct test_file *file = &test.files[i];
+
+		build_mtree(file);
+		TESTEQUAL(crypto_emit_file(cmd_fd, NULL, file->name, &file->id,
+				     file->size, file->root_hash,
+				     file->sig.add_data), 0);
+
+		TESTEQUAL(load_hash_tree(mount_dir, file), 0);
+		TESTEQUAL(enable_verity(mount_dir, file, key, cert,
+					use_signatures),
+			  0);
+	}
+
+	for (i = 0; i < file_num; i++)
+		TESTEQUAL(validate_verity(mount_dir, &test.files[i]), 0);
+
+	close(cmd_fd);
+	cmd_fd = -1;
+	TESTEQUAL(umount(mount_dir), 0);
+	TESTEQUAL(mount_fs_opt(mount_dir, backing_dir, "readahead=0", false),
+		  0);
+
+	for (i = 0; i < file_num; i++)
+		TESTEQUAL(validate_verity(mount_dir, &test.files[i]), 0);
+
+	result = TEST_SUCCESS;
+out:
+	for (i = 0; i < file_num; i++) {
+		struct test_file *file = &test.files[i];
+
+		free(file->mtree);
+		free(file->verity_sig);
+
+		file->mtree = NULL;
+		file->verity_sig = NULL;
+	}
+
+	free(line);
+	BIO_free(mem);
+	X509_free(cert);
+	EVP_PKEY_free(key);
+	fclose(proc_key_fd);
+	close(cmd_fd);
+	umount(mount_dir);
+	free(backing_dir);
+	return result;
+}
+
+static int verity_test(const char *mount_dir)
+{
+	int result = TEST_FAILURE;
+
+	TESTEQUAL(verity_test_optional_sigs(mount_dir, true), TEST_SUCCESS);
+	TESTEQUAL(verity_test_optional_sigs(mount_dir, false), TEST_SUCCESS);
+	result = TEST_SUCCESS;
+out:
+	return result;
+}
+
+static int verity_file_valid(const char *mount_dir, struct test_file *file)
+{
+	int result = TEST_FAILURE;
+	char *filename = NULL;
+	int fd = -1;
+	uint8_t buffer[INCFS_DATA_FILE_BLOCK_SIZE];
+	struct incfs_get_file_sig_args gfsa = {
+		.file_signature = ptr_to_u64(buffer),
+		.file_signature_buf_size = sizeof(buffer),
+	};
+	int i;
+
+	TEST(filename = concat_file_name(mount_dir, file->name), filename);
+	TEST(fd = open(filename, O_RDONLY | O_CLOEXEC), fd != -1);
+	TESTEQUAL(ioctl(fd, INCFS_IOC_READ_FILE_SIGNATURE, &gfsa), 0);
+	for (i = 0; i < file->size; i += sizeof(buffer))
+		TESTEQUAL(pread(fd, buffer, sizeof(buffer), i),
+			  file->size - i > sizeof(buffer) ?
+				sizeof(buffer) : file->size - i);
+
+	result = TEST_SUCCESS;
+out:
+	close(fd);
+	free(filename);
+	return result;
+}
+
+static int enable_verity_test(const char *mount_dir)
+{
+	int result = TEST_FAILURE;
+	char *backing_dir = NULL;
+	bool installed;
+	int cmd_fd = -1;
+	struct test_files_set test = get_test_files_set();
+	int i;
+
+	TEST(backing_dir = create_backing_dir(mount_dir), backing_dir);
+	TESTEQUAL(mount_fs(mount_dir, backing_dir, 0), 0);
+	TEST(cmd_fd = open_commands_file(mount_dir), cmd_fd != -1);
+	TESTEQUAL(verity_installed(mount_dir, cmd_fd, &installed), 0);
+	if (!installed) {
+		result = TEST_SUCCESS;
+		goto out;
+	}
+	for (i = 0; i < test.files_count; ++i) {
+		struct test_file *file = &test.files[i];
+
+		TESTEQUAL(emit_file(cmd_fd, NULL, file->name, &file->id,
+				     file->size, NULL), 0);
+		TESTEQUAL(emit_test_file_data(mount_dir, file), 0);
+		TESTEQUAL(enable_verity(mount_dir, file, NULL, NULL, false), 0);
+	}
+
+	/* Check files are valid on disk */
+	close(cmd_fd);
+	cmd_fd = -1;
+	TESTEQUAL(umount(mount_dir), 0);
+	TESTEQUAL(mount_fs(mount_dir, backing_dir, 0), 0);
+	for (i = 0; i < test.files_count; ++i)
+		TESTEQUAL(verity_file_valid(mount_dir, &test.files[i]), 0);
+
+	result = TEST_SUCCESS;
+out:
+	close(cmd_fd);
+	umount(mount_dir);
+	free(backing_dir);
+	return result;
+}
+
+static int mmap_test(const char *mount_dir)
+{
+	int result = TEST_FAILURE;
+	char *backing_dir = NULL;
+	int cmd_fd = -1;
+	/*
+	 * File is big enough to have a two layer tree with two hashes in the
+	 * higher level, so we can corrupt the second one
+	 */
+	int shas_per_block = INCFS_DATA_FILE_BLOCK_SIZE / SHA256_DIGEST_SIZE;
+	struct test_file file = {
+		  .name = "file",
+		  .size = INCFS_DATA_FILE_BLOCK_SIZE * shas_per_block * 2,
+	};
+	char *filename = NULL;
+	int fd = -1;
+	char *addr = (void *)-1;
+
+	TEST(backing_dir = create_backing_dir(mount_dir), backing_dir);
+	TESTEQUAL(mount_fs(mount_dir, backing_dir, 0), 0);
+	TEST(cmd_fd = open_commands_file(mount_dir), cmd_fd != -1);
+
+	TESTEQUAL(build_mtree(&file), 0);
+	file.mtree[1].data[INCFS_DATA_FILE_BLOCK_SIZE] ^= 0xff;
+	TESTEQUAL(crypto_emit_file(cmd_fd, NULL, file.name, &file.id,
+			       file.size, file.root_hash,
+			       file.sig.add_data), 0);
+	TESTEQUAL(emit_test_file_data(mount_dir, &file), 0);
+	TESTEQUAL(load_hash_tree(mount_dir, &file), 0);
+	TEST(filename = concat_file_name(mount_dir, file.name), filename);
+	TEST(fd = open(filename, O_RDONLY | O_CLOEXEC), fd != -1);
+	TEST(addr = mmap(NULL, file.size, PROT_READ, MAP_PRIVATE, fd, 0),
+	     addr != (void *) -1);
+	TESTEQUAL(mlock(addr, INCFS_DATA_FILE_BLOCK_SIZE), 0);
+	TESTEQUAL(munlock(addr, INCFS_DATA_FILE_BLOCK_SIZE), 0);
+	TESTEQUAL(mlock(addr + shas_per_block * INCFS_DATA_FILE_BLOCK_SIZE,
+			INCFS_DATA_FILE_BLOCK_SIZE), -1);
+	TESTEQUAL(mlock(addr + (shas_per_block - 1) *
+			       INCFS_DATA_FILE_BLOCK_SIZE,
+			INCFS_DATA_FILE_BLOCK_SIZE), 0);
+	TESTEQUAL(munlock(addr + (shas_per_block - 1) *
+				 INCFS_DATA_FILE_BLOCK_SIZE,
+			  INCFS_DATA_FILE_BLOCK_SIZE), 0);
+	TESTEQUAL(mlock(addr + (shas_per_block - 1) *
+			       INCFS_DATA_FILE_BLOCK_SIZE,
+			INCFS_DATA_FILE_BLOCK_SIZE * 2), -1);
+	TESTEQUAL(munmap(addr, file.size), 0);
+
+	result = TEST_SUCCESS;
+out:
+	free(file.mtree);
+	close(fd);
+	free(filename);
+	close(cmd_fd);
+	umount(mount_dir);
+	free(backing_dir);
+	return result;
+}
+
+static int truncate_test(const char *mount_dir)
+{
+	int result = TEST_FAILURE;
+	char *backing_dir = NULL;
+	int cmd_fd = -1;
+	struct test_file file = {
+		  .name = "file",
+		  .size = INCFS_DATA_FILE_BLOCK_SIZE,
+	};
+	char *backing_file = NULL;
+	int fd = -1;
+	struct stat st;
+
+	TEST(backing_dir = create_backing_dir(mount_dir), backing_dir);
+	TESTEQUAL(mount_fs(mount_dir, backing_dir, 0), 0);
+	TEST(cmd_fd = open_commands_file(mount_dir), cmd_fd != -1);
+	TESTEQUAL(emit_file(cmd_fd, NULL, file.name, &file.id, file.size, NULL),
+		  0);
+	TEST(backing_file = concat_file_name(backing_dir, file.name),
+	     backing_file);
+	TEST(fd = open(backing_file, O_RDWR | O_CLOEXEC), fd != -1);
+	TESTEQUAL(stat(backing_file, &st), 0);
+	TESTCOND(st.st_blocks < 128);
+	TESTEQUAL(fallocate(fd, FALLOC_FL_KEEP_SIZE, 0, 1 << 24), 0);
+	TESTEQUAL(stat(backing_file, &st), 0);
+	TESTCOND(st.st_blocks > 32768);
+	TESTEQUAL(emit_test_file_data(mount_dir, &file), 0);
+	TESTEQUAL(stat(backing_file, &st), 0);
+	TESTCOND(st.st_blocks < 128);
+
+	result = TEST_SUCCESS;
+out:
+	close(fd);
+	free(backing_file);
+	close(cmd_fd);
+	umount(mount_dir);
+	free(backing_dir);
+	return result;
+}
+
+static int stat_file_test(const char *mount_dir, int cmd_fd,
+			  struct test_file *file)
+{
+	int result = TEST_FAILURE;
+	struct stat st;
+	char *filename = NULL;
+
+	TESTEQUAL(emit_file(cmd_fd, NULL, file->name, &file->id,
+				     file->size, NULL), 0);
+	TEST(filename = concat_file_name(mount_dir, file->name), filename);
+	TESTEQUAL(stat(filename, &st), 0);
+	TESTCOND(st.st_blocks < 32);
+	TESTEQUAL(emit_test_file_data(mount_dir, file), 0);
+	TESTEQUAL(stat(filename, &st), 0);
+	TESTCOND(st.st_blocks > file->size / 512);
+
+	result = TEST_SUCCESS;
+out:
+	free(filename);
+	return result;
+}
+
+static int stat_test(const char *mount_dir)
+{
+	int result = TEST_FAILURE;
+	char *backing_dir = NULL;
+	int cmd_fd = -1;
+	int i;
+	struct test_files_set test = get_test_files_set();
+	const int file_num = test.files_count;
+
+	TEST(backing_dir = create_backing_dir(mount_dir), backing_dir);
+	TESTEQUAL(mount_fs(mount_dir, backing_dir, 0), 0);
+	TEST(cmd_fd = open_commands_file(mount_dir), cmd_fd != -1);
+
+	for (i = 0; i < file_num; i++) {
+		struct test_file *file = &test.files[i];
+
+		TESTEQUAL(stat_file_test(mount_dir, cmd_fd, file), 0);
+	}
+
+	result = TEST_SUCCESS;
+out:
+	close(cmd_fd);
+	umount(mount_dir);
+	free(backing_dir);
+	return result;
+}
+
+#define SYSFS_DIR "/sys/fs/incremental-fs/instances/test_node/"
+
+static int sysfs_test_value(const char *name, uint64_t value)
+{
+	int result = TEST_FAILURE;
+	char *filename = NULL;
+	FILE *file = NULL;
+	uint64_t res;
+
+	TEST(filename = concat_file_name(SYSFS_DIR, name), filename);
+	TEST(file = fopen(filename, "re"), file);
+	TESTEQUAL(fscanf(file, "%lu", &res), 1);
+	TESTEQUAL(res, value);
+
+	result = TEST_SUCCESS;
+out:
+	if (file)
+		fclose(file);
+	free(filename);
+	return result;
+}
+
+static int sysfs_test_value_range(const char *name, uint64_t low, uint64_t high)
+{
+	int result = TEST_FAILURE;
+	char *filename = NULL;
+	FILE *file = NULL;
+	uint64_t res;
+
+	TEST(filename = concat_file_name(SYSFS_DIR, name), filename);
+	TEST(file = fopen(filename, "re"), file);
+	TESTEQUAL(fscanf(file, "%lu", &res), 1);
+	TESTCOND(res >= low && res <= high);
+
+	result = TEST_SUCCESS;
+out:
+	if (file)
+		fclose(file);
+	free(filename);
+	return result;
+}
+
+static int ioctl_test_last_error(int cmd_fd, const incfs_uuid_t *file_id,
+				 int page, int error)
+{
+	int result = TEST_FAILURE;
+	struct incfs_get_last_read_error_args glre;
+
+	TESTEQUAL(ioctl(cmd_fd, INCFS_IOC_GET_LAST_READ_ERROR, &glre), 0);
+	if (file_id)
+		TESTEQUAL(memcmp(&glre.file_id_out, file_id, sizeof(*file_id)),
+			  0);
+
+	TESTEQUAL(glre.page_out, page);
+	TESTEQUAL(glre.errno_out, error);
+	result = TEST_SUCCESS;
+out:
+	return result;
+}
+
+static int sysfs_test(const char *mount_dir)
+{
+	int result = TEST_FAILURE;
+	char *backing_dir = NULL;
+	int cmd_fd = -1;
+	struct test_file file = {
+		  .name = "file",
+		  .size = INCFS_DATA_FILE_BLOCK_SIZE,
+	};
+	char *filename = NULL;
+	int fd = -1;
+	int pid = -1;
+	char buffer[32];
+	char *null_buf = NULL;
+	int status;
+	struct incfs_per_uid_read_timeouts purt_set[] = {
+		{
+			.uid = 0,
+			.min_time_us = 1000000,
+			.min_pending_time_us = 1000000,
+			.max_pending_time_us = 2000000,
+		},
+	};
+	struct incfs_set_read_timeouts_args srt = {
+		ptr_to_u64(purt_set),
+		sizeof(purt_set)
+	};
+
+	TEST(backing_dir = create_backing_dir(mount_dir), backing_dir);
+	TESTEQUAL(mount_fs_opt(mount_dir, backing_dir, "sysfs_name=test_node",
+			       false),
+		  0);
+	TEST(cmd_fd = open_commands_file(mount_dir), cmd_fd != -1);
+	TESTEQUAL(build_mtree(&file), 0);
+	file.root_hash[0] ^= 0xff;
+	TESTEQUAL(crypto_emit_file(cmd_fd, NULL, file.name, &file.id, file.size,
+				   file.root_hash, file.sig.add_data),
+		  0);
+	TEST(filename = concat_file_name(mount_dir, file.name), filename);
+	TEST(fd = open(filename, O_RDONLY | O_CLOEXEC), fd != -1);
+	TESTEQUAL(ioctl_test_last_error(cmd_fd, NULL, 0, 0), 0);
+	TESTEQUAL(sysfs_test_value("reads_failed_timed_out", 0), 0);
+	TESTEQUAL(read(fd, null_buf, 1), -1);
+	TESTEQUAL(ioctl_test_last_error(cmd_fd, &file.id, 0, -ETIME), 0);
+	TESTEQUAL(sysfs_test_value("reads_failed_timed_out", 2), 0);
+
+	TESTEQUAL(emit_test_file_data(mount_dir, &file), 0);
+	TESTEQUAL(sysfs_test_value("reads_failed_hash_verification", 0), 0);
+	TESTEQUAL(read(fd, null_buf, 1), -1);
+	TESTEQUAL(sysfs_test_value("reads_failed_hash_verification", 1), 0);
+	TESTSYSCALL(close(fd));
+	fd = -1;
+
+	TESTSYSCALL(unlink(filename));
+	TESTEQUAL(mount_fs_opt(mount_dir, backing_dir,
+			       "read_timeout_ms=10000,sysfs_name=test_node",
+			       true),
+		  0);
+	TESTEQUAL(emit_file(cmd_fd, NULL, file.name, &file.id, file.size, NULL),
+		  0);
+	TEST(fd = open(filename, O_RDONLY | O_CLOEXEC), fd != -1);
+	TESTSYSCALL(fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC));
+	TEST(pid = fork(), pid != -1);
+	if (pid == 0) {
+		TESTEQUAL(read(fd, buffer, sizeof(buffer)), sizeof(buffer));
+		exit(0);
+	}
+	sleep(1);
+	TESTEQUAL(sysfs_test_value("reads_delayed_pending", 0), 0);
+	TESTEQUAL(emit_test_file_data(mount_dir, &file), 0);
+	TESTNE(wait(&status), -1);
+	TESTEQUAL(status, 0);
+	TESTEQUAL(sysfs_test_value("reads_delayed_pending", 1), 0);
+	/* Allow +/- 10% */
+	TESTEQUAL(sysfs_test_value_range("reads_delayed_pending_us", 900000, 1100000),
+		  0);
+
+	TESTSYSCALL(close(fd));
+	fd = -1;
+
+	TESTSYSCALL(unlink(filename));
+	TESTEQUAL(ioctl(cmd_fd, INCFS_IOC_SET_READ_TIMEOUTS, &srt), 0);
+	TESTEQUAL(emit_file(cmd_fd, NULL, file.name, &file.id, file.size, NULL),
+		  0);
+	TEST(fd = open(filename, O_RDONLY | O_CLOEXEC), fd != -1);
+	TESTEQUAL(sysfs_test_value("reads_delayed_min", 0), 0);
+	TESTEQUAL(emit_test_file_data(mount_dir, &file), 0);
+	TESTEQUAL(read(fd, buffer, sizeof(buffer)), sizeof(buffer));
+	TESTEQUAL(sysfs_test_value("reads_delayed_min", 1), 0);
+	/* This should be exact */
+	TESTEQUAL(sysfs_test_value("reads_delayed_min_us", 1000000), 0);
+
+	TESTSYSCALL(close(fd));
+	fd = -1;
+
+	TESTSYSCALL(unlink(filename));
+	TESTEQUAL(emit_file(cmd_fd, NULL, file.name, &file.id, file.size, NULL),
+		  0);
+	TEST(fd = open(filename, O_RDONLY | O_CLOEXEC), fd != -1);
+	TESTSYSCALL(fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC));
+	TEST(pid = fork(), pid != -1);
+	if (pid == 0) {
+		TESTEQUAL(read(fd, buffer, sizeof(buffer)), sizeof(buffer));
+		exit(0);
+	}
+	usleep(500000);
+	TESTEQUAL(sysfs_test_value("reads_delayed_pending", 1), 0);
+	TESTEQUAL(sysfs_test_value("reads_delayed_min", 1), 0);
+	TESTEQUAL(emit_test_file_data(mount_dir, &file), 0);
+	TESTNE(wait(&status), -1);
+	TESTEQUAL(status, 0);
+	TESTEQUAL(sysfs_test_value("reads_delayed_pending", 2), 0);
+	TESTEQUAL(sysfs_test_value("reads_delayed_min", 2), 0);
+	/* Exact 1000000 plus 500000 +/- 10% */
+	TESTEQUAL(sysfs_test_value_range("reads_delayed_min_us", 1450000, 1550000), 0);
+	/* Allow +/- 10% */
+	TESTEQUAL(sysfs_test_value_range("reads_delayed_pending_us", 1350000, 1650000),
+		  0);
+
+	result = TEST_SUCCESS;
+out:
+	if (pid == 0)
+		exit(result);
+	free(file.mtree);
+	free(filename);
+	close(fd);
+	close(cmd_fd);
+	umount(mount_dir);
+	free(backing_dir);
+	return result;
+}
+
+static int sysfs_test_directories(bool one_present, bool two_present)
+{
+	int result = TEST_FAILURE;
+	struct stat st;
+
+	TESTEQUAL(stat("/sys/fs/incremental-fs/instances/1", &st),
+		  one_present ? 0 : -1);
+	if (one_present)
+		TESTCOND(S_ISDIR(st.st_mode));
+	else
+		TESTEQUAL(errno, ENOENT);
+	TESTEQUAL(stat("/sys/fs/incremental-fs/instances/2", &st),
+		  two_present ? 0 : -1);
+	if (two_present)
+		TESTCOND(S_ISDIR(st.st_mode));
+	else
+		TESTEQUAL(errno, ENOENT);
+
+	result = TEST_SUCCESS;
+out:
+	return result;
+}
+
+static int sysfs_rename_test(const char *mount_dir)
+{
+	int result = TEST_FAILURE;
+	char *backing_dir = NULL;
+	char *mount_dir2 = NULL;
+	int fd = -1;
+	char c;
+
+	/* Mount with no node */
+	TEST(backing_dir = create_backing_dir(mount_dir), backing_dir);
+	TESTEQUAL(mount_fs(mount_dir, backing_dir, 0), 0);
+	TESTEQUAL(sysfs_test_directories(false, false), 0);
+
+	/* Remount with node */
+	TESTEQUAL(mount_fs_opt(mount_dir, backing_dir, "sysfs_name=1", true),
+		  0);
+	TESTEQUAL(sysfs_test_directories(true, false), 0);
+	TEST(fd = open("/sys/fs/incremental-fs/instances/1/reads_delayed_min",
+		       O_RDONLY | O_CLOEXEC), fd != -1);
+	TESTEQUAL(pread(fd, &c, 1, 0), 1);
+	TESTEQUAL(c, '0');
+	TESTEQUAL(pread(fd, &c, 1, 0), 1);
+	TESTEQUAL(c, '0');
+
+	/* Rename node */
+	TESTEQUAL(mount_fs_opt(mount_dir, backing_dir, "sysfs_name=2", true),
+		  0);
+	TESTEQUAL(sysfs_test_directories(false, true), 0);
+	TESTEQUAL(pread(fd, &c, 1, 0), -1);
+
+	/* Try mounting another instance with same node name */
+	TEST(mount_dir2 = concat_file_name(backing_dir, "incfs-mount-dir2"),
+	     mount_dir2);
+	rmdir(mount_dir2); /* In case we crashed before */
+	TESTSYSCALL(mkdir(mount_dir2, 0777));
+	TEST(mount_fs_opt(mount_dir2, backing_dir, "sysfs_name=2", false),
+		  -1);
+
+	/* Try mounting another instance then remounting with existing name */
+	TESTEQUAL(mount_fs(mount_dir2, backing_dir, 0), 0);
+	TESTEQUAL(mount_fs_opt(mount_dir2, backing_dir, "sysfs_name=2", true),
+		  -1);
+
+	/* Remount with no node */
+	TESTEQUAL(mount_fs_opt(mount_dir, backing_dir, "", true),
+		  0);
+	TESTEQUAL(sysfs_test_directories(false, false), 0);
+
+	result = TEST_SUCCESS;
+out:
+	umount(mount_dir2);
+	rmdir(mount_dir2);
+	free(mount_dir2);
+	close(fd);
+	umount(mount_dir);
+	free(backing_dir);
+	return result;
+}
+
+static int stacked_mount_test(const char *mount_dir)
+{
+	int result = TEST_FAILURE;
+	char *backing_dir = NULL;
+
+	/* Mount with no node */
+	TEST(backing_dir = create_backing_dir(mount_dir), backing_dir);
+	TESTEQUAL(mount_fs(mount_dir, backing_dir, 0), 0);
+	/* Try mounting another instance with same name */
+	TESTEQUAL(mount_fs(mount_dir, backing_dir, 0), 0);
+	/* Try unmounting the first instance */
+	TESTEQUAL(umount_fs(mount_dir), 0);
+	/* Try unmounting the second instance */
+	TESTEQUAL(umount_fs(mount_dir), 0);
+	result = TEST_SUCCESS;
+out:
+	/* Cleanup */
+	rmdir(mount_dir);
+	rmdir(backing_dir);
+	free(backing_dir);
+	return result;
+}
+
+static char *setup_mount_dir()
+{
+	struct stat st;
+	char *current_dir = getcwd(NULL, 0);
+	char *mount_dir = concat_file_name(current_dir, "incfs-mount-dir");
+
+	free(current_dir);
+	if (stat(mount_dir, &st) == 0) {
+		if (S_ISDIR(st.st_mode))
+			return mount_dir;
+
+		ksft_print_msg("%s is a file, not a dir.\n", mount_dir);
+		return NULL;
+	}
+
+	if (mkdir(mount_dir, 0777)) {
+		print_error("Can't create mount dir.");
+		return NULL;
+	}
+
+	return mount_dir;
+}
+
+int parse_options(int argc, char *const *argv)
+{
+	signed char c;
+
+	while ((c = getopt(argc, argv, "f:t:v")) != -1)
+		switch (c) {
+		case 'f':
+			options.file = strtol(optarg, NULL, 10);
+			break;
+
+		case 't':
+			options.test = strtol(optarg, NULL, 10);
+			break;
+
+		case 'v':
+			options.verbose = true;
+			break;
+
+		default:
+			return -EINVAL;
+		}
+
+	return 0;
+}
+
+struct test_case {
+	int (*pfunc)(const char *dir);
+	const char *name;
+};
+
+void run_one_test(const char *mount_dir, struct test_case *test_case)
+{
+	int ret;
+
+	ksft_print_msg("Running %s\n", test_case->name);
+	ret = test_case->pfunc(mount_dir);
+
+	if (ret == TEST_SUCCESS)
+		ksft_test_result_pass("%s\n", test_case->name);
+	else if (ret == TEST_SKIP)
+		ksft_test_result_skip("%s\n", test_case->name);
+	else
+		ksft_test_result_fail("%s\n", test_case->name);
+}
+
+int main(int argc, char *argv[])
+{
+	char *mount_dir = NULL;
+	int i;
+	int fd, count;
+
+	if (parse_options(argc, argv))
+		ksft_exit_fail_msg("Bad options\n");
+
+	// Seed randomness pool for testing on QEMU
+	// NOTE - this abuses the concept of randomness - do *not* ever do this
+	// on a machine for production use - the device will think it has good
+	// randomness when it does not.
+	fd = open("/dev/urandom", O_WRONLY | O_CLOEXEC);
+	count = 4096;
+	for (int i = 0; i < 128; ++i)
+		ioctl(fd, RNDADDTOENTCNT, &count);
+	close(fd);
+
+	ksft_print_header();
+
+	if (geteuid() != 0)
+		ksft_print_msg("Not a root, might fail to mount.\n");
+
+	mount_dir = setup_mount_dir();
+	if (mount_dir == NULL)
+		ksft_exit_fail_msg("Can't create a mount dir\n");
+
+#define MAKE_TEST(test)                                                        \
+	{                                                                      \
+		test, #test                                                    \
+	}
+	struct test_case cases[] = {
+		MAKE_TEST(basic_file_ops_test),
+		MAKE_TEST(cant_touch_index_test),
+		MAKE_TEST(dynamic_files_and_data_test),
+		MAKE_TEST(concurrent_reads_and_writes_test),
+		MAKE_TEST(attribute_test),
+		MAKE_TEST(work_after_remount_test),
+		MAKE_TEST(child_procs_waiting_for_data_test),
+		MAKE_TEST(multiple_providers_test),
+		MAKE_TEST(hash_tree_test),
+		MAKE_TEST(read_log_test),
+		MAKE_TEST(get_blocks_test),
+		MAKE_TEST(get_hash_blocks_test),
+		MAKE_TEST(large_file_test),
+		MAKE_TEST(mapped_file_test),
+		MAKE_TEST(compatibility_test),
+		MAKE_TEST(data_block_count_test),
+		MAKE_TEST(hash_block_count_test),
+		MAKE_TEST(per_uid_read_timeouts_test),
+		MAKE_TEST(inotify_test),
+		MAKE_TEST(verity_test),
+		MAKE_TEST(enable_verity_test),
+		MAKE_TEST(mmap_test),
+		MAKE_TEST(truncate_test),
+		MAKE_TEST(stat_test),
+		MAKE_TEST(sysfs_test),
+		MAKE_TEST(sysfs_rename_test),
+		MAKE_TEST(stacked_mount_test),
+	};
+#undef MAKE_TEST
+
+	if (options.test) {
+		if (options.test <= 0 || options.test > ARRAY_SIZE(cases))
+			ksft_exit_fail_msg("Invalid test\n");
+
+		ksft_set_plan(1);
+		run_one_test(mount_dir, &cases[options.test - 1]);
+	} else {
+		ksft_set_plan(ARRAY_SIZE(cases));
+		for (i = 0; i < ARRAY_SIZE(cases); ++i)
+			run_one_test(mount_dir, &cases[i]);
+	}
+
+	umount2(mount_dir, MNT_FORCE);
+	rmdir(mount_dir);
+	return !ksft_get_fail_cnt() ? ksft_exit_pass() : ksft_exit_fail();
+}
diff --git a/tools/testing/selftests/filesystems/incfs/utils.c b/tools/testing/selftests/filesystems/incfs/utils.c
new file mode 100644
index 0000000..d7deb53
--- /dev/null
+++ b/tools/testing/selftests/filesystems/incfs/utils.c
@@ -0,0 +1,391 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright 2018 Google LLC
+ */
+#include <dirent.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <poll.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <sys/ioctl.h>
+#include <sys/mount.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+
+#include <openssl/sha.h>
+#include <openssl/md5.h>
+
+#include "utils.h"
+
+#ifndef __S_IFREG
+#define __S_IFREG S_IFREG
+#endif
+
+unsigned int rnd(unsigned int max, unsigned int *seed)
+{
+	return rand_r(seed) * ((uint64_t)max + 1) / RAND_MAX;
+}
+
+int remove_dir(const char *dir)
+{
+	int err = rmdir(dir);
+
+	if (err && errno == ENOTEMPTY) {
+		err = delete_dir_tree(dir);
+		if (err)
+			return err;
+		return 0;
+	}
+
+	if (err && errno != ENOENT)
+		return -errno;
+
+	return 0;
+}
+
+int drop_caches(void)
+{
+	int drop_caches =
+		open("/proc/sys/vm/drop_caches", O_WRONLY | O_CLOEXEC);
+	int i;
+
+	if (drop_caches == -1)
+		return -errno;
+	i = write(drop_caches, "3", 1);
+	close(drop_caches);
+
+	if (i != 1)
+		return -errno;
+
+	return 0;
+}
+
+int mount_fs(const char *mount_dir, const char *backing_dir,
+	     int read_timeout_ms)
+{
+	static const char fs_name[] = INCFS_NAME;
+	char mount_options[512];
+	int result;
+
+	snprintf(mount_options, ARRAY_SIZE(mount_options),
+		 "read_timeout_ms=%u",
+		  read_timeout_ms);
+
+	result = mount(backing_dir, mount_dir, fs_name, 0, mount_options);
+	if (result != 0)
+		perror("Error mounting fs.");
+	return result;
+}
+
+int umount_fs(const char *mount_dir)
+{
+	int result;
+
+	result = umount(mount_dir);
+	if (result != 0)
+		perror("Error unmounting fs.");
+	return result;
+}
+
+int mount_fs_opt(const char *mount_dir, const char *backing_dir,
+		 const char *opt, bool remount)
+{
+	static const char fs_name[] = INCFS_NAME;
+	int result;
+
+	result = mount(backing_dir, mount_dir, fs_name,
+		       remount ? MS_REMOUNT : 0, opt);
+	if (result != 0)
+		perror("Error mounting fs.");
+	return result;
+}
+
+struct hash_section {
+	uint32_t algorithm;
+	uint8_t log2_blocksize;
+	uint32_t salt_size;
+	/* no salt */
+	uint32_t hash_size;
+	uint8_t hash[SHA256_DIGEST_SIZE];
+} __packed;
+
+struct signature_blob {
+	uint32_t version;
+	uint32_t hash_section_size;
+	struct hash_section hash_section;
+	uint32_t signing_section_size;
+	uint8_t signing_section[];
+} __packed;
+
+size_t format_signature(void **buf, const char *root_hash, const char *add_data)
+{
+	size_t size = sizeof(struct signature_blob) + strlen(add_data) + 1;
+	struct signature_blob *sb = malloc(size);
+
+	if (!sb)
+		return 0;
+
+	*sb = (struct signature_blob){
+		.version = INCFS_SIGNATURE_VERSION,
+		.hash_section_size = sizeof(struct hash_section),
+		.hash_section =
+			(struct hash_section){
+				.algorithm = INCFS_HASH_TREE_SHA256,
+				.log2_blocksize = 12,
+				.salt_size = 0,
+				.hash_size = SHA256_DIGEST_SIZE,
+			},
+		.signing_section_size = strlen(add_data) + 1,
+	};
+
+	memcpy(sb->hash_section.hash, root_hash, SHA256_DIGEST_SIZE);
+	memcpy((char *)sb->signing_section, add_data, strlen(add_data) + 1);
+	*buf = sb;
+	return size;
+}
+
+int crypto_emit_file(int fd, const char *dir, const char *filename,
+		     incfs_uuid_t *id_out, size_t size, const char *root_hash,
+		     const char *add_data)
+{
+	int mode = __S_IFREG | 0555;
+	void *signature;
+	int error = 0;
+
+	struct incfs_new_file_args args = {
+			.size = size,
+			.mode = mode,
+			.file_name = ptr_to_u64(filename),
+			.directory_path = ptr_to_u64(dir),
+			.file_attr = 0,
+			.file_attr_len = 0
+	};
+
+	args.signature_size = format_signature(&signature, root_hash, add_data);
+	args.signature_info = ptr_to_u64(signature);
+
+	md5(filename, strlen(filename), (char *)args.file_id.bytes);
+
+	if (ioctl(fd, INCFS_IOC_CREATE_FILE, &args) != 0) {
+		error = -errno;
+		goto out;
+	}
+
+	*id_out = args.file_id;
+
+out:
+	free(signature);
+	return error;
+}
+
+int emit_file(int fd, const char *dir, const char *filename,
+	      incfs_uuid_t *id_out, size_t size, const char *attr)
+{
+	int mode = __S_IFREG | 0555;
+	struct incfs_new_file_args args = { .size = size,
+					    .mode = mode,
+					    .file_name = ptr_to_u64(filename),
+					    .directory_path = ptr_to_u64(dir),
+					    .signature_info = ptr_to_u64(NULL),
+					    .signature_size = 0,
+					    .file_attr = ptr_to_u64(attr),
+					    .file_attr_len =
+						    attr ? strlen(attr) : 0 };
+
+	md5(filename, strlen(filename), (char *)args.file_id.bytes);
+
+	if (ioctl(fd, INCFS_IOC_CREATE_FILE, &args) != 0)
+		return -errno;
+
+	*id_out = args.file_id;
+	return 0;
+}
+
+int get_file_bmap(int cmd_fd, int ino, unsigned char *buf, int buf_size)
+{
+	return 0;
+}
+
+int get_file_signature(int fd, unsigned char *buf, int buf_size)
+{
+	struct incfs_get_file_sig_args args = {
+		.file_signature = ptr_to_u64(buf),
+		.file_signature_buf_size = buf_size
+	};
+
+	if (ioctl(fd, INCFS_IOC_READ_FILE_SIGNATURE, &args) == 0)
+		return args.file_signature_len_out;
+	return -errno;
+}
+
+loff_t get_file_size(const char *name)
+{
+	struct stat st;
+
+	if (stat(name, &st) == 0)
+		return st.st_size;
+	return -ENOENT;
+}
+
+int open_commands_file(const char *mount_dir)
+{
+	char cmd_file[255];
+	int cmd_fd;
+
+	snprintf(cmd_file, ARRAY_SIZE(cmd_file),
+			"%s/%s", mount_dir, INCFS_PENDING_READS_FILENAME);
+	cmd_fd = open(cmd_file, O_RDONLY | O_CLOEXEC);
+
+	if (cmd_fd < 0)
+		perror("Can't open commands file");
+	return cmd_fd;
+}
+
+int open_log_file(const char *mount_dir)
+{
+	char file[255];
+	int fd;
+
+	snprintf(file, ARRAY_SIZE(file), "%s/.log", mount_dir);
+	fd = open(file, O_RDWR | O_CLOEXEC);
+	if (fd < 0)
+		perror("Can't open log file");
+	return fd;
+}
+
+int open_blocks_written_file(const char *mount_dir)
+{
+	char file[255];
+	int fd;
+
+	snprintf(file, ARRAY_SIZE(file),
+			"%s/%s", mount_dir, INCFS_BLOCKS_WRITTEN_FILENAME);
+	fd = open(file, O_RDONLY | O_CLOEXEC);
+
+	if (fd < 0)
+		perror("Can't open blocks_written file");
+	return fd;
+}
+
+int wait_for_pending_reads(int fd, int timeout_ms,
+	struct incfs_pending_read_info *prs, int prs_count)
+{
+	ssize_t read_res = 0;
+
+	if (timeout_ms > 0) {
+		int poll_res = 0;
+		struct pollfd pollfd = {
+			.fd = fd,
+			.events = POLLIN
+		};
+
+		poll_res = poll(&pollfd, 1, timeout_ms);
+		if (poll_res < 0)
+			return -errno;
+		if (poll_res == 0)
+			return 0;
+		if (!(pollfd.revents | POLLIN))
+			return 0;
+	}
+
+	read_res = read(fd, prs, prs_count * sizeof(*prs));
+	if (read_res < 0)
+		return -errno;
+
+	return read_res / sizeof(*prs);
+}
+
+int wait_for_pending_reads2(int fd, int timeout_ms,
+	struct incfs_pending_read_info2 *prs, int prs_count)
+{
+	ssize_t read_res = 0;
+
+	if (timeout_ms > 0) {
+		int poll_res = 0;
+		struct pollfd pollfd = {
+			.fd = fd,
+			.events = POLLIN
+		};
+
+		poll_res = poll(&pollfd, 1, timeout_ms);
+		if (poll_res < 0)
+			return -errno;
+		if (poll_res == 0)
+			return 0;
+		if (!(pollfd.revents | POLLIN))
+			return 0;
+	}
+
+	read_res = read(fd, prs, prs_count * sizeof(*prs));
+	if (read_res < 0)
+		return -errno;
+
+	return read_res / sizeof(*prs);
+}
+
+char *concat_file_name(const char *dir, const char *file)
+{
+	char full_name[FILENAME_MAX] = "";
+
+	if (snprintf(full_name, ARRAY_SIZE(full_name), "%s/%s", dir, file) < 0)
+		return NULL;
+	return strdup(full_name);
+}
+
+int delete_dir_tree(const char *dir_path)
+{
+	DIR *dir = NULL;
+	struct dirent *dp;
+	int result = 0;
+
+	dir = opendir(dir_path);
+	if (!dir) {
+		result = -errno;
+		goto out;
+	}
+
+	while ((dp = readdir(dir))) {
+		char *full_path;
+
+		if (!strcmp(dp->d_name, ".") || !strcmp(dp->d_name, ".."))
+			continue;
+
+		full_path = concat_file_name(dir_path, dp->d_name);
+		if (dp->d_type == DT_DIR)
+			result = delete_dir_tree(full_path);
+		else
+			result = unlink(full_path);
+		free(full_path);
+		if (result)
+			goto out;
+	}
+
+out:
+	if (dir)
+		closedir(dir);
+	if (!result)
+		rmdir(dir_path);
+	return result;
+}
+
+void sha256(const char *data, size_t dsize, char *hash)
+{
+	SHA256_CTX ctx;
+
+	SHA256_Init(&ctx);
+	SHA256_Update(&ctx, data, dsize);
+	SHA256_Final((unsigned char *)hash, &ctx);
+}
+
+void md5(const char *data, size_t dsize, char *hash)
+{
+	MD5_CTX ctx;
+
+	MD5_Init(&ctx);
+	MD5_Update(&ctx, data, dsize);
+	MD5_Final((unsigned char *)hash, &ctx);
+}
diff --git a/tools/testing/selftests/filesystems/incfs/utils.h b/tools/testing/selftests/filesystems/incfs/utils.h
new file mode 100644
index 0000000..17a1ac5
--- /dev/null
+++ b/tools/testing/selftests/filesystems/incfs/utils.h
@@ -0,0 +1,71 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright 2019 Google LLC
+ */
+#include <stdbool.h>
+#include <sys/stat.h>
+
+#include <include/uapi/linux/incrementalfs.h>
+
+#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof(arr[0]))
+
+#define __packed __attribute__((__packed__))
+
+#ifdef __LP64__
+#define ptr_to_u64(p) ((__u64)p)
+#else
+#define ptr_to_u64(p) ((__u64)(__u32)p)
+#endif
+
+#define SHA256_DIGEST_SIZE 32
+#define INCFS_MAX_MTREE_LEVELS 8
+
+unsigned int rnd(unsigned int max, unsigned int *seed);
+
+int remove_dir(const char *dir);
+
+int drop_caches(void);
+
+int mount_fs(const char *mount_dir, const char *backing_dir,
+	     int read_timeout_ms);
+
+int umount_fs(const char *mount_dir);
+
+int mount_fs_opt(const char *mount_dir, const char *backing_dir,
+		 const char *opt, bool remount);
+
+int get_file_bmap(int cmd_fd, int ino, unsigned char *buf, int buf_size);
+
+int get_file_signature(int fd, unsigned char *buf, int buf_size);
+
+int emit_node(int fd, char *filename, int *ino_out, int parent_ino,
+		size_t size, mode_t mode, char *attr);
+
+int emit_file(int fd, const char *dir, const char *filename,
+	      incfs_uuid_t *id_out, size_t size, const char *attr);
+
+int crypto_emit_file(int fd, const char *dir, const char *filename,
+		     incfs_uuid_t *id_out, size_t size, const char *root_hash,
+		     const char *add_data);
+
+loff_t get_file_size(const char *name);
+
+int open_commands_file(const char *mount_dir);
+
+int open_log_file(const char *mount_dir);
+
+int open_blocks_written_file(const char *mount_dir);
+
+int wait_for_pending_reads(int fd, int timeout_ms,
+	struct incfs_pending_read_info *prs, int prs_count);
+
+int wait_for_pending_reads2(int fd, int timeout_ms,
+	struct incfs_pending_read_info2 *prs, int prs_count);
+
+char *concat_file_name(const char *dir, const char *file);
+
+void sha256(const char *data, size_t dsize, char *hash);
+
+void md5(const char *data, size_t dsize, char *hash);
+
+int delete_dir_tree(const char *path);